Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.98 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 7.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 5.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1097 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 4.10 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1099 3.84 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1085 3.74 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 3.37 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 3.09 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 2.87 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 2.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 2.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1098 2.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1097 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.48 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.31 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 1.29 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.26 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 1.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 1.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1095 1.12 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1137 1.05 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.01 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 0.90 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1112 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 0.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1139 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1112 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1123 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1055 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1107 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1052 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.57 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1090 0.57 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ef10 : : * re-computing information about previously extracted attributes. : * slot->tts_nvalid is the number of attributes already extracted. : */ : static void : slot_deform_tuple(TupleTableSlot *slot, int natts) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 0.79 : 46ef10: 55 push %rbp 0.15 : 46ef11: 48 89 e5 mov %rsp,%rbp 0.40 : 46ef14: 41 57 push %r15 0.57 : 46ef16: 41 89 f7 mov %esi,%r15d 0.03 : 46ef19: 41 56 push %r14 0.16 : 46ef1b: 49 89 fe mov %rdi,%r14 0.22 : 46ef1e: 41 55 push %r13 0.51 : 46ef20: 41 54 push %r12 0.02 : 46ef22: 53 push %rbx : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; : if (attnum == 0) 0.15 : 46ef23: 31 db xor %ebx,%ebx : * re-computing information about previously extracted attributes. : * slot->tts_nvalid is the number of attributes already extracted. : */ : static void : slot_deform_tuple(TupleTableSlot *slot, int natts) : { 0.25 : 46ef25: 48 83 ec 28 sub $0x28,%rsp : HeapTuple tuple = slot->tts_tuple; : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : Datum *values = slot->tts_values; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1052 0.58 : 46ef29: 48 8b 47 28 mov 0x28(%rdi),%rax 0.14 : 46ef2d: 48 89 45 d0 mov %rax,-0x30(%rbp) : bool *isnull = slot->tts_isnull; : HeapTupleHeader tup = tuple->t_data; 0.26 : 46ef31: 48 8b 47 08 mov 0x8(%rdi),%rax : : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; 0.48 : 46ef35: 8b 77 24 mov 0x24(%rdi),%esi : slot_deform_tuple(TupleTableSlot *slot, int natts) : { : HeapTuple tuple = slot->tts_tuple; : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : Datum *values = slot->tts_values; : bool *isnull = slot->tts_isnull; 0.04 : 46ef38: 4c 8b 5f 30 mov 0x30(%rdi),%r11 : HeapTupleHeader tup = tuple->t_data; 0.21 : 46ef3c: 4c 8b 40 10 mov 0x10(%rax),%r8 : bool hasnulls = HeapTupleHasNulls(tuple); 0.25 : 46ef40: 41 0f b7 40 14 movzwl 0x14(%r8),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1055 0.69 : 46ef45: 83 e0 01 and $0x1,%eax 0.10 : 46ef48: 41 89 c2 mov %eax,%r10d : Form_pg_attribute *att = tupleDesc->attrs; 0.29 : 46ef4b: 48 8b 47 10 mov 0x10(%rdi),%rax : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; : if (attnum == 0) 0.25 : 46ef4f: 31 ff xor %edi,%edi 0.47 : 46ef51: 85 f6 test %esi,%esi : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : Datum *values = slot->tts_values; : bool *isnull = slot->tts_isnull; : HeapTupleHeader tup = tuple->t_data; : bool hasnulls = HeapTupleHasNulls(tuple); : Form_pg_attribute *att = tupleDesc->attrs; 0.03 : 46ef53: 4c 8b 48 08 mov 0x8(%rax),%r9 : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; : if (attnum == 0) 0.26 : 46ef57: 74 09 je 46ef62 : } : else : { : /* Restore state from previous execution */ : off = slot->tts_off; : slow = slot->tts_slow; 0.00 : 46ef59: 41 0f b6 7e 07 movzbl 0x7(%r14),%edi : slow = false; : } : else : { : /* Restore state from previous execution */ : off = slot->tts_off; 0.01 : 46ef5e: 49 8b 5e 58 mov 0x58(%r14),%rbx : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; 0.27 : 46ef62: 41 0f b6 40 16 movzbl 0x16(%r8),%eax : : for (; attnum < natts; attnum++) 0.45 : 46ef67: 44 39 fe cmp %r15d,%esi : /* Restore state from previous execution */ : off = slot->tts_off; : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; 0.01 : 46ef6a: 4d 8d 2c 00 lea (%r8,%rax,1),%r13 : : for (; attnum < natts; attnum++) 0.25 : 46ef6e: 0f 8d c0 00 00 00 jge 46f034 0.24 : 46ef74: 41 89 f4 mov %esi,%r12d 0.45 : 46ef77: eb 40 jmp 46efb9 0.00 : 46ef79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : Form_pg_attribute thisatt = att[attnum]; : : if (hasnulls && att_isnull(attnum, bp)) 0.24 : 46ef80: 44 89 e0 mov %r12d,%eax 0.05 : 46ef83: 44 89 e1 mov %r12d,%ecx 0.07 : 46ef86: c1 f8 03 sar $0x3,%eax 0.24 : 46ef89: 83 e1 07 and $0x7,%ecx 0.24 : 46ef8c: 48 98 cltq 0.04 : 46ef8e: 41 0f b6 44 00 17 movzbl 0x17(%r8,%rax,1),%eax 0.28 : 46ef94: d3 f8 sar %cl,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 0.70 : 46ef96: a8 01 test $0x1,%al 0.00 : 46ef98: 75 2b jne 46efc5 : { : values[attnum] = (Datum) 0; 0.10 : 46ef9a: 48 8b 55 d0 mov -0x30(%rbp),%rdx : isnull[attnum] = true; 0.07 : 46ef9e: bf 01 00 00 00 mov $0x1,%edi : { : Form_pg_attribute thisatt = att[attnum]; : : if (hasnulls && att_isnull(attnum, bp)) : { : values[attnum] = (Datum) 0; 0.13 : 46efa3: 48 c7 04 f2 00 00 00 movq $0x0,(%rdx,%rsi,8) 0.00 : 46efaa: 00 : isnull[attnum] = true; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1090 0.57 : 46efab: 41 c6 04 33 01 movb $0x1,(%r11,%rsi,1) : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.29 : 46efb0: 41 83 c4 01 add $0x1,%r12d 0.15 : 46efb4: 45 39 e7 cmp %r12d,%r15d 0.00 : 46efb7: 7e 78 jle 46f031 : { : Form_pg_attribute thisatt = att[attnum]; 0.44 : 46efb9: 49 63 f4 movslq %r12d,%rsi : : if (hasnulls && att_isnull(attnum, bp)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 1.22 : 46efbc: 45 84 d2 test %r10b,%r10b : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) : { : Form_pg_attribute thisatt = att[attnum]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1085 3.84 : 46efbf: 49 8b 14 f1 mov (%r9,%rsi,8),%rdx : : if (hasnulls && att_isnull(attnum, bp)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 3.74 : 46efc3: 75 bb jne 46ef80 : continue; : } : : isnull[attnum] = false; : : if (!slow && thisatt->attcacheoff >= 0) 0.05 : 46efc5: 40 84 ff test %dil,%dil : isnull[attnum] = true; : slow = true; /* can't use attcacheoff anymore */ : continue; : } : : isnull[attnum] = false; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1095 1.18 : 46efc8: 41 c6 04 33 00 movb $0x0,(%r11,%rsi,1) : : if (!slow && thisatt->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1097 5.22 : 46efcd: 0f 85 7d 00 00 00 jne 46f050 0.02 : 46efd3: 8b 42 54 mov 0x54(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1097 2.58 : 46efd6: 85 c0 test %eax,%eax 0.00 : 46efd8: 78 76 js 46f050 : off = thisatt->attcacheoff; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1098 2.73 : 46efda: 48 63 d8 movslq %eax,%rbx : : if (!slow) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 2.79 : 46efdd: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 1.25 : 46efe1: 49 8d 44 1d 00 lea 0x0(%r13,%rbx,1),%rax 4.44 : 46efe6: 74 28 je 46f010 1.85 : 46efe8: 0f b7 42 4c movzwl 0x4c(%rdx),%eax 1.26 : 46efec: 66 83 f8 08 cmp $0x8,%ax 0.00 : 46eff0: 0f 84 3a 01 00 00 je 46f130 0.43 : 46eff6: 66 83 f8 04 cmp $0x4,%ax 0.00 : 46effa: 0f 84 90 01 00 00 je 46f190 0.00 : 46f000: 66 83 f8 02 cmp $0x2,%ax 0.00 : 46f004: 0f 84 a6 01 00 00 je 46f1b0 0.00 : 46f00a: 41 0f b6 44 1d 00 movzbl 0x0(%r13,%rbx,1),%eax 3.37 : 46f010: 48 8b 4d d0 mov -0x30(%rbp),%rcx 1.01 : 46f014: 48 89 04 f1 mov %rax,(%rcx,%rsi,8) : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 12.98 : 46f018: 0f b7 42 4c movzwl 0x4c(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.48 : 46f01c: 66 85 c0 test %ax,%ax 0.00 : 46f01f: 7e 6f jle 46f090 0.03 : 46f021: 48 0f bf c0 movswq %ax,%rax : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.05 : 46f025: 41 83 c4 01 add $0x1,%r12d : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 3.09 : 46f029: 48 01 c3 add %rax,%rbx : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.12 : 46f02c: 45 39 e7 cmp %r12d,%r15d 0.00 : 46f02f: 7f 88 jg 46efb9 : * re-computing information about previously extracted attributes. : * slot->tts_nvalid is the number of attributes already extracted. : */ : static void : slot_deform_tuple(TupleTableSlot *slot, int natts) : { 0.23 : 46f031: 44 89 fe mov %r15d,%esi : : /* : * Save state for next execution : */ : slot->tts_nvalid = attnum; : slot->tts_off = off; 0.17 : 46f034: 49 89 5e 58 mov %rbx,0x58(%r14) : } : : /* : * Save state for next execution : */ : slot->tts_nvalid = attnum; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1137 1.11 : 46f038: 41 89 76 24 mov %esi,0x24(%r14) : slot->tts_off = off; : slot->tts_slow = slow; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1139 0.74 : 46f03c: 41 88 7e 07 mov %dil,0x7(%r14) : } 0.18 : 46f040: 48 83 c4 28 add $0x28,%rsp 0.10 : 46f044: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.65 : 46f045: 41 5c pop %r12 0.28 : 46f047: 41 5d pop %r13 0.26 : 46f049: 41 5e pop %r14 0.09 : 46f04b: 41 5f pop %r15 0.58 : 46f04d: c9 leaveq 0.74 : 46f04e: c3 retq 0.00 : 46f04f: 90 nop : : isnull[attnum] = false; : : if (!slow && thisatt->attcacheoff >= 0) : off = thisatt->attcacheoff; : else if (thisatt->attlen == -1) 0.04 : 46f050: 66 83 7a 4c ff cmpw $0xffff,0x4c(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1099 4.10 : 46f055: 74 71 je 46f0c8 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 0.78 : 46f057: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.03 : 46f05b: 3c 69 cmp $0x69,%al 0.00 : 46f05d: 0f 84 1d 01 00 00 je 46f180 0.00 : 46f063: 3c 63 cmp $0x63,%al 0.00 : 46f065: 74 10 je 46f077 0.00 : 46f067: 3c 64 cmp $0x64,%al 0.00 : 46f069: 0f 84 51 01 00 00 je 46f1c0 0.00 : 46f06f: 48 83 c3 01 add $0x1,%rbx 0.00 : 46f073: 48 83 e3 fe and $0xfffffffffffffffe,%rbx : : if (!slow) 0.04 : 46f077: 40 84 ff test %dil,%dil 0.00 : 46f07a: 0f 85 5d ff ff ff jne 46efdd : thisatt->attcacheoff = off; 0.00 : 46f080: 89 5a 54 mov %ebx,0x54(%rdx) 0.00 : 46f083: e9 55 ff ff ff jmpq 46efdd 0.00 : 46f088: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46f08f: 00 : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.10 : 46f090: 66 83 c0 01 add $0x1,%ax 0.00 : 46f094: 0f 85 a6 00 00 00 jne 46f140 0.22 : 46f09a: 41 0f b6 44 1d 00 movzbl 0x0(%r13,%rbx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.56 : 46f0a0: 3c 01 cmp $0x1,%al 0.00 : 46f0a2: 0f 84 50 01 00 00 je 46f1f8 0.39 : 46f0a8: a8 01 test $0x1,%al 0.00 : 46f0aa: 0f 85 20 01 00 00 jne 46f1d0 0.00 : 46f0b0: 41 8b 44 1d 00 mov 0x0(%r13,%rbx,1),%eax 0.00 : 46f0b5: c1 e8 02 shr $0x2,%eax 0.00 : 46f0b8: 89 c0 mov %eax,%eax 0.62 : 46f0ba: 48 8d 1c 18 lea (%rax,%rbx,1),%rbx 0.03 : 46f0be: e9 ad 00 00 00 jmpq 46f170 0.00 : 46f0c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be no : * pad bytes in any case: then the offset will be valid for either : * an aligned or unaligned value. : */ : if (!slow && /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1107 0.69 : 46f0c8: 40 84 ff test %dil,%dil 0.00 : 46f0cb: 75 26 jne 46f0f3 0.00 : 46f0cd: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 46f0d1: 3c 69 cmp $0x69,%al 0.00 : 46f0d3: 0f 84 4f 01 00 00 je 46f228 0.00 : 46f0d9: 3c 63 cmp $0x63,%al 0.00 : 46f0db: 74 a3 je 46f080 0.00 : 46f0dd: 3c 64 cmp $0x64,%al 0.00 : 46f0df: 90 nop 0.00 : 46f0e0: 0f 84 52 01 00 00 je 46f238 0.00 : 46f0e6: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 46f0ea: 48 83 e0 fe and $0xfffffffffffffffe,%rax 0.00 : 46f0ee: 48 39 d8 cmp %rbx,%rax 0.00 : 46f0f1: 74 8d je 46f080 : off == att_align_nominal(off, thisatt->attalign)) : thisatt->attcacheoff = off; : else : { : off = att_align_pointer(off, thisatt->attalign, -1, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1112 0.69 : 46f0f3: 41 80 7c 1d 00 00 cmpb $0x0,0x0(%r13,%rbx,1) 0.90 : 46f0f9: 0f 85 a1 00 00 00 jne 46f1a0 0.00 : 46f0ff: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 46f103: 3c 69 cmp $0x69,%al 0.00 : 46f105: 0f 84 d5 00 00 00 je 46f1e0 0.00 : 46f10b: 3c 63 cmp $0x63,%al 0.00 : 46f10d: 0f 1f 00 nopl (%rax) 0.00 : 46f110: 0f 84 8a 00 00 00 je 46f1a0 0.00 : 46f116: 3c 64 cmp $0x64,%al 0.00 : 46f118: 0f 84 27 01 00 00 je 46f245 0.00 : 46f11e: 48 83 c3 01 add $0x1,%rbx 0.00 : 46f122: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f127: 48 83 e3 fe and $0xfffffffffffffffe,%rbx 0.00 : 46f12b: e9 ad fe ff ff jmpq 46efdd : : if (!slow) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); 0.00 : 46f130: 49 8b 44 1d 00 mov 0x0(%r13,%rbx,1),%rax 0.33 : 46f135: e9 d6 fe ff ff jmpq 46f010 0.00 : 46f13a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46f140: 49 8d 7c 1d 00 lea 0x0(%r13,%rbx,1),%rdi 0.00 : 46f145: 4c 89 45 c8 mov %r8,-0x38(%rbp) 0.00 : 46f149: 4c 89 4d c0 mov %r9,-0x40(%rbp) 0.00 : 46f14d: 44 88 55 b8 mov %r10b,-0x48(%rbp) 0.00 : 46f151: 4c 89 5d b0 mov %r11,-0x50(%rbp) 0.00 : 46f155: e8 f6 a6 ff ff callq 469850 0.00 : 46f15a: 44 0f b6 55 b8 movzbl -0x48(%rbp),%r10d 0.00 : 46f15f: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.00 : 46f163: 48 8d 5c 03 01 lea 0x1(%rbx,%rax,1),%rbx 0.00 : 46f168: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 46f16c: 4c 8b 5d b0 mov -0x50(%rbp),%r11 : * Save state for next execution : */ : slot->tts_nvalid = attnum; : slot->tts_off = off; : slot->tts_slow = slow; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 1.31 : 46f170: bf 01 00 00 00 mov $0x1,%edi 0.06 : 46f175: e9 36 fe ff ff jmpq 46efb0 0.00 : 46f17a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); 0.01 : 46f180: 48 83 c3 03 add $0x3,%rbx 0.01 : 46f184: 48 83 e3 fc and $0xfffffffffffffffc,%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 0.80 : 46f188: e9 ea fe ff ff jmpq 46f077 0.00 : 46f18d: 0f 1f 00 nopl (%rax) : : if (!slow) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 2.87 : 46f190: 41 8b 44 1d 00 mov 0x0(%r13,%rbx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 7.21 : 46f195: e9 76 fe ff ff jmpq 46f010 0.00 : 46f19a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); : : if (!slow) : thisatt->attcacheoff = off; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1123 0.69 : 46f1a0: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f1a5: e9 33 fe ff ff jmpq 46efdd 0.00 : 46f1aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : values[attnum] = fetchatt(thisatt, tp + off); 0.00 : 46f1b0: 41 0f b7 44 1d 00 movzwl 0x0(%r13,%rbx,1),%eax 0.00 : 46f1b6: e9 55 fe ff ff jmpq 46f010 0.00 : 46f1bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); 0.00 : 46f1c0: 48 83 c3 07 add $0x7,%rbx 0.00 : 46f1c4: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 46f1c8: e9 aa fe ff ff jmpq 46f077 0.00 : 46f1cd: 0f 1f 00 nopl (%rax) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.44 : 46f1d0: d0 e8 shr %al 0.03 : 46f1d2: 0f b6 c0 movzbl %al,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 0.63 : 46f1d5: e9 e0 fe ff ff jmpq 46f0ba 0.00 : 46f1da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (!slow && : off == att_align_nominal(off, thisatt->attalign)) : thisatt->attcacheoff = off; : else : { : off = att_align_pointer(off, thisatt->attalign, -1, 0.00 : 46f1e0: 48 83 c3 03 add $0x3,%rbx 0.00 : 46f1e4: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f1e9: 48 83 e3 fc and $0xfffffffffffffffc,%rbx 0.00 : 46f1ed: e9 eb fd ff ff jmpq 46efdd 0.00 : 46f1f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46f1f8: 41 0f b6 54 1d 01 movzbl 0x1(%r13,%rbx,1),%edx 0.00 : 46f1fe: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 46f203: 80 fa 01 cmp $0x1,%dl 0.00 : 46f206: 0f 84 ae fe ff ff je 46f0ba 0.00 : 46f20c: 80 fa 12 cmp $0x12,%dl 0.00 : 46f20f: b8 03 00 00 00 mov $0x3,%eax 0.00 : 46f214: ba 12 00 00 00 mov $0x12,%edx 0.00 : 46f219: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 46f21d: e9 98 fe ff ff jmpq 46f0ba 0.00 : 46f222: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be no : * pad bytes in any case: then the offset will be valid for either : * an aligned or unaligned value. : */ : if (!slow && 0.00 : 46f228: 48 8d 43 03 lea 0x3(%rbx),%rax 0.00 : 46f22c: 48 83 e0 fc and $0xfffffffffffffffc,%rax 0.00 : 46f230: e9 b9 fe ff ff jmpq 46f0ee 0.00 : 46f235: 0f 1f 00 nopl (%rax) 0.00 : 46f238: 48 8d 43 07 lea 0x7(%rbx),%rax 0.00 : 46f23c: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 46f240: e9 a9 fe ff ff jmpq 46f0ee : off == att_align_nominal(off, thisatt->attalign)) : thisatt->attcacheoff = off; : else : { : off = att_align_pointer(off, thisatt->attalign, -1, 0.00 : 46f245: 48 83 c3 07 add $0x7,%rbx 0.00 : 46f249: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f24e: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 46f252: e9 86 fd ff ff jmpq 46efdd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 41.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 6.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 4.15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 2.86 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1178 2.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 2.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1241 2.38 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 2.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 2.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 2.16 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 2.14 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1176 1.98 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1215 1.84 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1195 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 1.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 1.46 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1179 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1215 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 1.01 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 0.90 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1158 0.90 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1235 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.55 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1164 0.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046f400 : : * slot's tupdesc's last attribute will be considered NULL even : * when the physical tuple is longer than the tupdesc. : */ : Datum : slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.51 : 46f400: 55 push %rbp 0.56 : 46f401: 48 89 e5 mov %rsp,%rbp 2.58 : 46f404: 48 89 5d e0 mov %rbx,-0x20(%rbp) 1.45 : 46f408: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.69 : 46f40c: 48 89 fb mov %rdi,%rbx 2.19 : 46f40f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.62 : 46f413: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.53 : 46f417: 48 83 ec 20 sub $0x20,%rsp : HeapTupleHeader tup; : : /* : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) 0.25 : 46f41b: 85 f6 test %esi,%esi : * slot's tupdesc's last attribute will be considered NULL even : * when the physical tuple is longer than the tupdesc. : */ : Datum : slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull) : { 2.16 : 46f41d: 49 89 d4 mov %rdx,%r12 : HeapTuple tuple = slot->tts_tuple; 0.37 : 46f420: 48 8b 7f 08 mov 0x8(%rdi),%rdi : TupleDesc tupleDesc = slot->tts_tupleDescriptor; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1158 0.90 : 46f424: 48 8b 53 10 mov 0x10(%rbx),%rdx : HeapTupleHeader tup; : : /* : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1164 0.55 : 46f428: 0f 8e a2 00 00 00 jle 46f4d0 : } : : /* : * fast path if desired attribute already cached : */ : if (attnum <= slot->tts_nvalid) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1176 2.14 : 46f42e: 3b 73 24 cmp 0x24(%rbx),%esi 0.00 : 46f431: 7e 65 jle 46f498 : } : : /* : * return NULL if attnum is out of range according to the tupdesc : */ : if (attnum > tupleDesc->natts) 0.35 : 46f433: 3b 32 cmp (%rdx),%esi 0.00 : 46f435: 7f 51 jg 46f488 : : /* : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : if (tuple == NULL) /* internal error */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1195 1.72 : 46f437: 48 85 ff test %rdi,%rdi 0.00 : 46f43a: 0f 84 34 01 00 00 je 46f574 : * : * (We have to check this separately because of various inheritance and : * table-alteration scenarios: the tuple could be either longer or shorter : * than the tupdesc.) : */ : tup = tuple->t_data; 0.03 : 46f440: 48 8b 7f 10 mov 0x10(%rdi),%rdi : if (attnum > HeapTupleHeaderGetNatts(tup)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 2.38 : 46f444: 0f b7 47 12 movzwl 0x12(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 41.73 : 46f448: 25 ff 07 00 00 and $0x7ff,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 1.06 : 46f44d: 39 c6 cmp %eax,%esi 0.00 : 46f44f: 7f 37 jg 46f488 : } : : /* : * check if target attribute is null: no point in groveling through tuple : */ : if (HeapTupleHasNulls(tuple) && att_isnull(attnum - 1, tup->t_bits)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1215 1.09 : 46f451: f6 47 14 01 testb $0x1,0x14(%rdi) 1.98 : 46f455: 74 18 je 46f46f 0.18 : 46f457: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 46f45a: 89 c8 mov %ecx,%eax 0.00 : 46f45c: 83 e1 07 and $0x7,%ecx 0.03 : 46f45f: c1 f8 03 sar $0x3,%eax 0.16 : 46f462: 48 98 cltq 0.00 : 46f464: 0f b6 44 07 17 movzbl 0x17(%rdi,%rax,1),%eax 0.01 : 46f469: d3 f8 sar %cl,%eax 0.15 : 46f46b: a8 01 test $0x1,%al 0.00 : 46f46d: 74 19 je 46f488 : /* : * If the attribute's column has been dropped, we force a NULL result. : * This case should not happen in normal use, but it could happen if we : * are executing a plan cached before the column was dropped. : */ : if (tupleDesc->attrs[attnum - 1]->attisdropped) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 0.90 : 46f46f: 4c 63 ee movslq %esi,%r13 0.09 : 46f472: 48 8b 42 08 mov 0x8(%rdx),%rax 0.20 : 46f476: 4d 8d 75 ff lea -0x1(%r13),%r14 0.21 : 46f47a: 4a 8b 04 f0 mov (%rax,%r14,8),%rax 1.50 : 46f47e: 80 78 61 00 cmpb $0x0,0x61(%rax) 4.15 : 46f482: 74 7c je 46f500 0.00 : 46f484: 0f 1f 40 00 nopl 0x0(%rax) : { : *isnull = true; 0.00 : 46f488: 41 c6 04 24 01 movb $0x1,(%r12) 0.00 : 46f48d: 31 c0 xor %eax,%eax : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; : return slot->tts_values[attnum - 1]; : } 0.00 : 46f48f: eb 20 jmp 46f4b1 0.00 : 46f491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * fast path if desired attribute already cached : */ : if (attnum <= slot->tts_nvalid) : { : *isnull = slot->tts_isnull[attnum - 1]; 0.33 : 46f498: 48 8b 43 30 mov 0x30(%rbx),%rax 0.22 : 46f49c: 48 63 d6 movslq %esi,%rdx 0.24 : 46f49f: 0f b6 44 10 ff movzbl -0x1(%rax,%rdx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1178 2.86 : 46f4a4: 41 88 04 24 mov %al,(%r12) : return slot->tts_values[attnum - 1]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1179 1.46 : 46f4a8: 48 8b 43 28 mov 0x28(%rbx),%rax 0.02 : 46f4ac: 48 8b 44 d0 f8 mov -0x8(%rax,%rdx,8),%rax : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; : return slot->tts_values[attnum - 1]; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 0.51 : 46f4b1: 48 8b 1c 24 mov (%rsp),%rbx 1.72 : 46f4b5: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 1.84 : 46f4ba: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.16 : 46f4bf: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 1.61 : 46f4c4: c9 leaveq 2.19 : 46f4c5: c3 retq 0.00 : 46f4c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46f4cd: 00 00 00 : /* : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) : { : if (tuple == NULL) /* internal error */ 0.02 : 46f4d0: 48 85 ff test %rdi,%rdi 0.00 : 46f4d3: 74 4b je 46f520 : elog(ERROR, "cannot extract system attribute from virtual tuple"); : if (tuple == &(slot->tts_minhdr)) /* internal error */ 0.08 : 46f4d5: 48 8d 43 40 lea 0x40(%rbx),%rax 0.00 : 46f4d9: 48 39 c7 cmp %rax,%rdi 0.00 : 46f4dc: 74 6c je 46f54a : elog(ERROR, "cannot extract system attribute from minimal tuple"); : return heap_getsysattr(tuple, attnum, tupleDesc, isnull); 0.03 : 46f4de: 4c 89 e1 mov %r12,%rcx : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; : return slot->tts_values[attnum - 1]; : } 0.02 : 46f4e1: 48 8b 1c 24 mov (%rsp),%rbx 0.04 : 46f4e5: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 46f4ea: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.05 : 46f4ef: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.02 : 46f4f4: c9 leaveq : { : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract system attribute from virtual tuple"); : if (tuple == &(slot->tts_minhdr)) /* internal error */ : elog(ERROR, "cannot extract system attribute from minimal tuple"); : return heap_getsysattr(tuple, attnum, tupleDesc, isnull); 0.08 : 46f4f5: e9 d6 f7 ff ff jmpq 46ecd0 0.00 : 46f4fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : /* : * Extract the attribute, along with any preceding attributes. : */ : slot_deform_tuple(slot, attnum); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1235 0.85 : 46f500: 48 89 df mov %rbx,%rdi 0.02 : 46f503: e8 08 fa ff ff callq 46ef10 : : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 1.58 : 46f508: 48 8b 43 30 mov 0x30(%rbx),%rax 1.01 : 46f50c: 42 0f b6 44 28 ff movzbl -0x1(%rax,%r13,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 6.53 : 46f512: 41 88 04 24 mov %al,(%r12) : return slot->tts_values[attnum - 1]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1241 2.53 : 46f516: 48 8b 43 28 mov 0x28(%rbx),%rax 0.06 : 46f51a: 4a 8b 04 f0 mov (%rax,%r14,8),%rax : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 0.50 : 46f51e: eb 91 jmp 46f4b1 : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) : { : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract system attribute from virtual tuple"); 0.00 : 46f520: ba f1 f6 7a 00 mov $0x7af6f1,%edx 0.00 : 46f525: be 8f 04 00 00 mov $0x48f,%esi 0.00 : 46f52a: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f52f: e8 ec be 30 00 callq 77b420 0.00 : 46f534: be 40 f7 7a 00 mov $0x7af740,%esi 0.00 : 46f539: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f53e: 31 c0 xor %eax,%eax 0.00 : 46f540: e8 eb bc 30 00 callq 77b230 0.00 : 46f545: e8 86 9f ff ff callq 4694d0 : if (tuple == &(slot->tts_minhdr)) /* internal error */ : elog(ERROR, "cannot extract system attribute from minimal tuple"); 0.00 : 46f54a: ba f1 f6 7a 00 mov $0x7af6f1,%edx 0.00 : 46f54f: be 91 04 00 00 mov $0x491,%esi 0.00 : 46f554: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f559: e8 c2 be 30 00 callq 77b420 0.00 : 46f55e: be 78 f7 7a 00 mov $0x7af778,%esi 0.00 : 46f563: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f568: 31 c0 xor %eax,%eax 0.00 : 46f56a: e8 c1 bc 30 00 callq 77b230 0.00 : 46f56f: e8 5c 9f ff ff callq 4694d0 : /* : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract attribute from empty tuple slot"); 0.00 : 46f574: ba f1 f6 7a 00 mov $0x7af6f1,%edx 0.00 : 46f579: be ac 04 00 00 mov $0x4ac,%esi 0.00 : 46f57e: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f583: e8 98 be 30 00 callq 77b420 0.00 : 46f588: be b0 f7 7a 00 mov $0x7af7b0,%esi 0.00 : 46f58d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f592: 31 c0 xor %eax,%eax 0.00 : 46f594: e8 97 bc 30 00 callq 77b230 0.00 : 46f599: e8 32 9f ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 42.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1073 37.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1097 9.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1082 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1104 1.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1077 0.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1075 0.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1104 0.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1075 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1069 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bbda0 : : * for the latter. : */ : bool : ExecScanHashBucket(HashJoinState *hjstate, : ExprContext *econtext) : { 0.08 : 5bbda0: 55 push %rbp 0.48 : 5bbda1: 48 89 e5 mov %rsp,%rbp 0.02 : 5bbda4: 41 57 push %r15 0.15 : 5bbda6: 41 56 push %r14 0.35 : 5bbda8: 49 89 f6 mov %rsi,%r14 0.03 : 5bbdab: 41 55 push %r13 0.03 : 5bbdad: 41 54 push %r12 0.08 : 5bbdaf: 49 89 fc mov %rdi,%r12 0.36 : 5bbdb2: 53 push %rbx 0.04 : 5bbdb3: 48 83 ec 08 sub $0x8,%rsp : List *hjclauses = hjstate->hashclauses; : HashJoinTable hashtable = hjstate->hj_HashTable; : HashJoinTuple hashTuple = hjstate->hj_CurTuple; 0.10 : 5bbdb7: 48 8b 87 c0 00 00 00 mov 0xc0(%rdi),%rax : */ : bool : ExecScanHashBucket(HashJoinState *hjstate, : ExprContext *econtext) : { : List *hjclauses = hjstate->hashclauses; 0.36 : 5bbdbe: 4c 8b bf 88 00 00 00 mov 0x88(%rdi),%r15 : HashJoinTable hashtable = hjstate->hj_HashTable; 0.08 : 5bbdc5: 48 8b 8f a8 00 00 00 mov 0xa8(%rdi),%rcx : HashJoinTuple hashTuple = hjstate->hj_CurTuple; : uint32 hashvalue = hjstate->hj_CurHashValue; 0.03 : 5bbdcc: 44 8b af b0 00 00 00 mov 0xb0(%rdi),%r13d : * bucket, or NULL if it's time to start scanning a new bucket. : * : * If the tuple hashed to a skew bucket then scan the skew bucket : * otherwise scan the standard hashtable bucket. : */ : if (hashTuple != NULL) 0.09 : 5bbdd3: 48 85 c0 test %rax,%rax 0.00 : 5bbdd6: 74 79 je 5bbe51 : hashTuple = hashTuple->next; 0.00 : 5bbdd8: 48 8b 18 mov (%rax),%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1069 0.58 : 5bbddb: eb 06 jmp 5bbde3 0.00 : 5bbddd: 0f 1f 00 nopl (%rax) : hjstate->hj_CurTuple = hashTuple; : return true; : } : } : : hashTuple = hashTuple->next; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1097 37.97 : 5bbde0: 48 8b 1b mov (%rbx),%rbx : else if (hjstate->hj_CurSkewBucketNo != INVALID_SKEW_BUCKET_NO) : hashTuple = hashtable->skewBucket[hjstate->hj_CurSkewBucketNo]->tuples; : else : hashTuple = hashtable->buckets[hjstate->hj_CurBucketNo]; : : while (hashTuple != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1075 0.87 : 5bbde3: 48 85 db test %rbx,%rbx 0.00 : 5bbde6: 74 58 je 5bbe40 : { : if (hashTuple->hashvalue == hashvalue) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1077 1.18 : 5bbde8: 44 39 6b 08 cmp %r13d,0x8(%rbx) 0.04 : 5bbdec: 75 f2 jne 5bbde0 : { : TupleTableSlot *inntuple; : : /* insert hashtable's tuple into exec slot so ExecQual sees it */ : inntuple = ExecStoreMinimalTuple(HJTUPLE_MINTUPLE(hashTuple), /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1082 9.69 : 5bbdee: 49 8b b4 24 d0 00 00 mov 0xd0(%r12),%rsi 0.00 : 5bbdf5: 00 0.18 : 5bbdf6: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 5bbdfa: 31 d2 xor %edx,%edx 0.02 : 5bbdfc: e8 df 85 ff ff callq 5b43e0 : hjstate->hj_HashTupleSlot, : false); /* do not pfree */ : econtext->ecxt_innertuple = inntuple; : : /* reset temp memory each time to avoid leaks from qual expr */ : ResetExprContext(econtext); 0.00 : 5bbe01: 49 8b 7e 28 mov 0x28(%r14),%rdi : : /* insert hashtable's tuple into exec slot so ExecQual sees it */ : inntuple = ExecStoreMinimalTuple(HJTUPLE_MINTUPLE(hashTuple), : hjstate->hj_HashTupleSlot, : false); /* do not pfree */ : econtext->ecxt_innertuple = inntuple; 0.00 : 5bbe05: 49 89 46 10 mov %rax,0x10(%r14) : : /* reset temp memory each time to avoid leaks from qual expr */ : ResetExprContext(econtext); 0.04 : 5bbe09: e8 a2 cb 1d 00 callq 7989b0 : : if (ExecQual(hjclauses, econtext, false)) 0.00 : 5bbe0e: 31 d2 xor %edx,%edx 0.03 : 5bbe10: 4c 89 f6 mov %r14,%rsi 0.01 : 5bbe13: 4c 89 ff mov %r15,%rdi 0.00 : 5bbe16: e8 f5 10 ff ff callq 5acf10 0.00 : 5bbe1b: 84 c0 test %al,%al 0.00 : 5bbe1d: 74 c1 je 5bbde0 : { : hjstate->hj_CurTuple = hashTuple; 0.00 : 5bbe1f: 49 89 9c 24 c0 00 00 mov %rbx,0xc0(%r12) 0.00 : 5bbe26: 00 : : /* : * no match : */ : return false; : } 0.02 : 5bbe27: 48 83 c4 08 add $0x8,%rsp : /* reset temp memory each time to avoid leaks from qual expr */ : ResetExprContext(econtext); : : if (ExecQual(hjclauses, econtext, false)) : { : hjstate->hj_CurTuple = hashTuple; 0.05 : 5bbe2b: b8 01 00 00 00 mov $0x1,%eax : : /* : * no match : */ : return false; : } 0.00 : 5bbe30: 5b pop %rbx 0.01 : 5bbe31: 41 5c pop %r12 0.06 : 5bbe33: 41 5d pop %r13 0.01 : 5bbe35: 41 5e pop %r14 0.00 : 5bbe37: 41 5f pop %r15 0.04 : 5bbe39: c9 leaveq 0.03 : 5bbe3a: c3 retq 0.00 : 5bbe3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1104 1.40 : 5bbe40: 48 83 c4 08 add $0x8,%rsp : else if (hjstate->hj_CurSkewBucketNo != INVALID_SKEW_BUCKET_NO) : hashTuple = hashtable->skewBucket[hjstate->hj_CurSkewBucketNo]->tuples; : else : hashTuple = hashtable->buckets[hjstate->hj_CurBucketNo]; : : while (hashTuple != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1075 0.61 : 5bbe44: 31 c0 xor %eax,%eax : : /* : * no match : */ : return false; : } 0.00 : 5bbe46: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1104 0.76 : 5bbe47: 41 5c pop %r12 0.33 : 5bbe49: 41 5d pop %r13 0.10 : 5bbe4b: 41 5e pop %r14 0.00 : 5bbe4d: 41 5f pop %r15 0.14 : 5bbe4f: c9 leaveq 0.32 : 5bbe50: c3 retq : * If the tuple hashed to a skew bucket then scan the skew bucket : * otherwise scan the standard hashtable bucket. : */ : if (hashTuple != NULL) : hashTuple = hashTuple->next; : else if (hjstate->hj_CurSkewBucketNo != INVALID_SKEW_BUCKET_NO) 0.37 : 5bbe51: 8b 87 b8 00 00 00 mov 0xb8(%rdi),%eax 0.09 : 5bbe57: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5bbe5a: 74 13 je 5bbe6f : hashTuple = hashtable->skewBucket[hjstate->hj_CurSkewBucketNo]->tuples; 0.00 : 5bbe5c: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 5bbe60: 48 98 cltq 0.00 : 5bbe62: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 5bbe66: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5bbe6a: e9 74 ff ff ff jmpq 5bbde3 : else : hashTuple = hashtable->buckets[hjstate->hj_CurBucketNo]; 0.40 : 5bbe6f: 48 63 97 b4 00 00 00 movslq 0xb4(%rdi),%rdx 0.01 : 5bbe76: 48 8b 41 18 mov 0x18(%rcx),%rax 0.03 : 5bbe7a: 48 8b 1c d0 mov (%rax,%rdx,8),%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1073 42.33 : 5bbe7e: e9 60 ff ff ff jmpq 5bbde3 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:885 22.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:881 12.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:771 11.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 5.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:871 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 1.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:896 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:902 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1423 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:883 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:902 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000784050 : : hash_search_with_hash_value(HTAB *hashp, : const void *keyPtr, : uint32 hashvalue, : HASHACTION action, : bool *foundPtr) : { 0.02 : 784050: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.59 : 784051: 48 89 e5 mov %rsp,%rbp 0.01 : 784054: 41 57 push %r15 1.12 : 784056: 41 89 d7 mov %edx,%r15d 0.00 : 784059: 41 56 push %r14 0.33 : 78405b: 49 89 fe mov %rdi,%r14 0.01 : 78405e: 41 55 push %r13 0.33 : 784060: 41 54 push %r12 0.11 : 784062: 53 push %rbx 0.18 : 784063: 48 83 ec 68 sub $0x68,%rsp 0.03 : 784067: 89 8d 7c ff ff ff mov %ecx,-0x84(%rbp) 0.21 : 78406d: 48 89 75 80 mov %rsi,-0x80(%rbp) 0.18 : 784071: 4c 89 85 70 ff ff ff mov %r8,-0x90(%rbp) : HASHHDR *hctl = hashp->hctl; 0.07 : 784078: 48 8b 07 mov (%rdi),%rax : * NOTE: failure to expand table is not a fatal error, it just means we : * have to run at higher fill factor than we wanted. However, if we're : * using the palloc allocator then it will throw error anyway on : * out-of-memory, so we must do this before modifying the table. : */ : if (action == HASH_ENTER || action == HASH_ENTER_NULL) 0.11 : 78407b: 83 f9 03 cmp $0x3,%ecx 0.10 : 78407e: 0f 94 45 8f sete -0x71(%rbp) 0.28 : 784082: 83 e9 01 sub $0x1,%ecx : const void *keyPtr, : uint32 hashvalue, : HASHACTION action, : bool *foundPtr) : { : HASHHDR *hctl = hashp->hctl; 0.02 : 784085: 48 89 45 90 mov %rax,-0x70(%rbp) : * NOTE: failure to expand table is not a fatal error, it just means we : * have to run at higher fill factor than we wanted. However, if we're : * using the palloc allocator then it will throw error anyway on : * out-of-memory, so we must do this before modifying the table. : */ : if (action == HASH_ENTER || action == HASH_ENTER_NULL) 0.27 : 784089: 0f 84 d9 00 00 00 je 784168 0.00 : 78408f: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.02 : 784093: 0f 85 cf 00 00 00 jne 784168 : newlink = &currElement->link; : } : } : /* don't forget to terminate the rebuilt hash chains... */ : *oldlink = NULL; : *newlink = NULL; 0.03 : 784099: 8b 70 28 mov 0x28(%rax),%esi 0.36 : 78409c: 49 8b 46 50 mov 0x50(%r14),%rax 0.05 : 7840a0: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 7840a4: 4c 8d 68 ff lea -0x1(%rax),%r13 : static inline uint32 : calc_bucket(HASHHDR *hctl, uint32 hash_val) : { : uint32 bucket; : : bucket = hash_val & hctl->high_mask; 0.05 : 7840a8: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.26 : 7840ac: 44 89 fb mov %r15d,%ebx 0.01 : 7840af: 23 5a 2c and 0x2c(%rdx),%ebx : if (bucket > hctl->max_bucket) 0.12 : 7840b2: 39 f3 cmp %esi,%ebx 0.00 : 7840b4: 76 03 jbe 7840b9 : bucket = bucket & hctl->low_mask; 0.20 : 7840b6: 23 5a 30 and 0x30(%rdx),%ebx : bucket = calc_bucket(hctl, hashvalue); : : segment_num = bucket >> hashp->sshift; : segment_ndx = MOD(bucket, hashp->ssize); : : segp = hashp->dir[segment_num]; 0.46 : 7840b9: 89 d8 mov %ebx,%eax 0.23 : 7840bb: 49 8b 56 08 mov 0x8(%r14),%rdx 0.06 : 7840bf: d3 e8 shr %cl,%eax 0.41 : 7840c1: 89 c0 mov %eax,%eax 0.02 : 7840c3: 4c 8b 24 c2 mov (%rdx,%rax,8),%r12 : : if (segp == NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:871 5.52 : 7840c7: 4d 85 e4 test %r12,%r12 0.00 : 7840ca: 0f 84 b7 02 00 00 je 784387 : hash_corrupted(hashp); : : prevBucketPtr = &segp[segment_ndx]; 0.29 : 7840d0: 89 d8 mov %ebx,%eax 0.10 : 7840d2: 44 21 e8 and %r13d,%eax : currBucket = *prevBucketPtr; : : /* : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ 0.00 : 7840d5: 4d 8b 6e 18 mov 0x18(%r14),%r13 : segp = hashp->dir[segment_num]; : : if (segp == NULL) : hash_corrupted(hashp); : : prevBucketPtr = &segp[segment_ndx]; 0.00 : 7840d9: 4d 8d 24 c4 lea (%r12,%rax,8),%r12 : : /* : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ : keysize = hashp->keysize; /* ditto */ 0.26 : 7840dd: 49 8b 46 48 mov 0x48(%r14),%rax : : if (segp == NULL) : hash_corrupted(hashp); : : prevBucketPtr = &segp[segment_ndx]; : currBucket = *prevBucketPtr; 0.10 : 7840e1: 49 8b 1c 24 mov (%r12),%rbx : : /* : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ : keysize = hashp->keysize; /* ditto */ /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:881 22.42 : 7840e5: 48 89 45 98 mov %rax,-0x68(%rbp) : : while (currBucket != NULL) 0.00 : 7840e9: 48 85 db test %rbx,%rbx 0.00 : 7840ec: 75 0d jne 7840fb 0.36 : 7840ee: eb 28 jmp 784118 : { : if (currBucket->hashvalue == hashvalue && : match(ELEMENTKEY(currBucket), keyPtr, keysize) == 0) : break; : prevBucketPtr = &(currBucket->link); 0.48 : 7840f0: 49 89 dc mov %rbx,%r12 : currBucket = *prevBucketPtr; 0.18 : 7840f3: 48 8b 1b mov (%rbx),%rbx : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ : keysize = hashp->keysize; /* ditto */ : : while (currBucket != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:883 0.79 : 7840f6: 48 85 db test %rbx,%rbx 0.00 : 7840f9: 74 1d je 784118 : { : if (currBucket->hashvalue == hashvalue && 0.38 : 7840fb: 44 39 7b 08 cmp %r15d,0x8(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:885 25.42 : 7840ff: 90 nop 0.00 : 784100: 75 ee jne 7840f0 0.41 : 784102: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.20 : 784106: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.20 : 78410a: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 78410e: 41 ff d5 callq *%r13 0.48 : 784111: 85 c0 test %eax,%eax 0.00 : 784113: 75 db jne 7840f0 0.00 : 784115: 0f 1f 00 nopl (%rax) : hash_collisions++; : hctl->collisions++; : #endif : } : : if (foundPtr) 0.42 : 784118: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 78411f: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:896 1.31 : 784120: 74 0d je 78412f : *foundPtr = (bool) (currBucket != NULL); 0.26 : 784122: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.04 : 784129: 48 85 db test %rbx,%rbx 0.01 : 78412c: 0f 95 02 setne (%rdx) : : /* : * OK, now what? : */ : switch (action) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:902 1.24 : 78412f: 83 bd 7c ff ff ff 01 cmpl $0x1,-0x84(%rbp) 0.52 : 784136: 0f 84 5c 01 00 00 je 784298 0.01 : 78413c: 0f 83 ee 00 00 00 jae 784230 : { : case HASH_FIND: : if (currBucket != NULL) 0.00 : 784142: 48 85 db test %rbx,%rbx 0.00 : 784145: 0f 84 35 02 00 00 je 784380 : /* FALL THRU */ : : case HASH_ENTER: : /* Return existing element if found, else create one */ : if (currBucket != NULL) : return (void *) ELEMENTKEY(currBucket); 0.28 : 78414b: 48 83 c3 10 add $0x10,%rbx : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); : : return NULL; /* keep compiler quiet */ : } 0.10 : 78414f: 48 83 c4 68 add $0x68,%rsp 0.00 : 784153: 48 89 d8 mov %rbx,%rax 0.22 : 784156: 5b pop %rbx 0.22 : 784157: 41 5c pop %r12 0.05 : 784159: 41 5d pop %r13 0.03 : 78415b: 41 5e pop %r14 0.20 : 78415d: 41 5f pop %r15 0.05 : 78415f: c9 leaveq 0.38 : 784160: c3 retq 0.00 : 784161: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Can't split if running in partitioned mode, nor if frozen, nor if : * table is the subject of any active hash_seq_search scans. Strange : * order of these tests is to try to check cheaper conditions first. : */ : if (!IS_PARTITIONED(hctl) && !hashp->frozen && 0.01 : 784168: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.18 : 78416c: 48 83 7a 48 00 cmpq $0x0,0x48(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 1.78 : 784171: 0f 85 09 01 00 00 jne 784280 0.24 : 784177: 41 80 7e 42 00 cmpb $0x0,0x42(%r14) 0.00 : 78417c: 0f 85 e6 01 00 00 jne 784368 0.01 : 784182: 48 8b 45 90 mov -0x70(%rbp),%rax 0.01 : 784186: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.31 : 78418a: 8b 70 28 mov 0x28(%rax),%esi 0.04 : 78418d: 8d 56 01 lea 0x1(%rsi),%edx 0.04 : 784190: 41 89 f0 mov %esi,%r8d 0.02 : 784193: 89 55 d4 mov %edx,-0x2c(%rbp) 0.23 : 784196: 41 89 d4 mov %edx,%r12d 0.00 : 784199: 48 8b 50 08 mov 0x8(%rax),%rdx 0.17 : 78419d: 48 89 d0 mov %rdx,%rax 0.18 : 7841a0: 48 c1 fa 3f sar $0x3f,%rdx 0.22 : 7841a4: 49 f7 fc idiv %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 11.14 : 7841a7: 48 3b 43 50 cmp 0x50(%rbx),%rax 0.00 : 7841ab: 0f 8c eb fe ff ff jl 78409c : static bool : has_seq_scans(HTAB *hashp) : { : int i; : : for (i = 0; i < num_seq_scans; i++) 0.28 : 7841b1: 8b 3d 09 5a 43 00 mov 0x435a09(%rip),%edi # bb9bc0 0.27 : 7841b7: 85 ff test %edi,%edi 0.00 : 7841b9: 7e 2c jle 7841e7 : { : if (seq_scan_tables[i] == hashp) 0.00 : 7841bb: 31 d2 xor %edx,%edx 0.00 : 7841bd: 4c 3b 35 1c 5a 43 00 cmp 0x435a1c(%rip),%r14 # bb9be0 0.00 : 7841c4: b9 e8 9b bb 00 mov $0xbb9be8,%ecx 0.00 : 7841c9: 75 15 jne 7841e0 0.00 : 7841cb: e9 cc fe ff ff jmpq 78409c 0.00 : 7841d0: 48 8b 01 mov (%rcx),%rax 0.00 : 7841d3: 48 83 c1 08 add $0x8,%rcx 0.00 : 7841d7: 49 39 c6 cmp %rax,%r14 0.00 : 7841da: 0f 84 bc fe ff ff je 78409c : static bool : has_seq_scans(HTAB *hashp) : { : int i; : : for (i = 0; i < num_seq_scans; i++) 0.00 : 7841e0: 83 c2 01 add $0x1,%edx 0.00 : 7841e3: 39 fa cmp %edi,%edx 0.00 : 7841e5: 7c e9 jl 7841d0 : hash_expansions++; : #endif : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; : new_segndx = MOD(new_bucket, hashp->ssize); 0.01 : 7841e7: 49 8b 46 50 mov 0x50(%r14),%rax : #ifdef HASH_STATISTICS : hash_expansions++; : #endif : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; 0.00 : 7841eb: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 7841ef: 4c 89 e3 mov %r12,%rbx : new_segndx = MOD(new_bucket, hashp->ssize); 0.00 : 7841f2: 4c 8d 68 ff lea -0x1(%rax),%r13 : : if (new_segnum >= hctl->nsegs) 0.02 : 7841f6: 48 8b 45 90 mov -0x70(%rbp),%rax : #ifdef HASH_STATISTICS : hash_expansions++; : #endif : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; 0.01 : 7841fa: 48 d3 fb sar %cl,%rbx 0.01 : 7841fd: 48 89 5d c0 mov %rbx,-0x40(%rbp) : new_segndx = MOD(new_bucket, hashp->ssize); : : if (new_segnum >= hctl->nsegs) 0.02 : 784201: 48 3b 58 20 cmp 0x20(%rax),%rbx 0.00 : 784205: 0f 8c 05 02 00 00 jl 784410 : { : /* Allocate new segment if necessary -- could fail if dir full */ : if (new_segnum >= hctl->dsize) 0.00 : 78420b: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 78420f: 48 8b 58 18 mov 0x18(%rax),%rbx 0.00 : 784213: 48 39 5d c0 cmp %rbx,-0x40(%rbp) 0.00 : 784217: 0f 8c 1d 03 00 00 jl 78453a : HASHSEGMENT *old_p; : long new_dsize; : long old_dirsize; : long new_dirsize; : : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) 0.00 : 78421d: 48 83 78 58 ff cmpq $0xffffffffffffffff,0x58(%rax) 0.00 : 784222: 0f 84 4a 03 00 00 je 784572 : hashp->dir = p; : hashp->hctl->dsize = new_dsize; : : /* XXX assume the allocator is palloc, so we know how to free */ : Assert(hashp->alloc == DynaHashAlloc); : pfree(old_p); 0.00 : 784228: 44 89 c6 mov %r8d,%esi 0.00 : 78422b: e9 78 fe ff ff jmpq 7840a8 : *foundPtr = (bool) (currBucket != NULL); : : /* : * OK, now what? : */ : switch (action) 0.01 : 784230: 83 bd 7c ff ff ff 02 cmpl $0x2,-0x84(%rbp) 0.00 : 784237: 0f 84 d6 00 00 00 je 784313 0.00 : 78423d: 83 bd 7c ff ff ff 03 cmpl $0x3,-0x84(%rbp) 0.00 : 784244: 74 52 je 784298 : */ : : return (void *) ELEMENTKEY(currBucket); : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); 0.00 : 784246: ba f0 5b 8d 00 mov $0x8d5bf0,%edx 0.00 : 78424b: be df 03 00 00 mov $0x3df,%esi 0.00 : 784250: bf 33 59 8d 00 mov $0x8d5933,%edi 0.00 : 784255: e8 c6 71 ff ff callq 77b420 0.00 : 78425a: 8b 95 7c ff ff ff mov -0x84(%rbp),%edx 0.00 : 784260: be f0 5a 8d 00 mov $0x8d5af0,%esi 0.00 : 784265: bf 14 00 00 00 mov $0x14,%edi 0.00 : 78426a: 31 c0 xor %eax,%eax 0.00 : 78426c: e8 bf 6f ff ff callq 77b230 0.00 : 784271: e8 5a 52 ce ff callq 4694d0 0.00 : 784276: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 78427d: 00 00 00 : /* : * Can't split if running in partitioned mode, nor if frozen, nor if : * table is the subject of any active hash_seq_search scans. Strange : * order of these tests is to try to check cheaper conditions first. : */ : if (!IS_PARTITIONED(hctl) && !hashp->frozen && 0.00 : 784280: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 784284: 8b 72 28 mov 0x28(%rdx),%esi 0.00 : 784287: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 78428b: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 78428f: e9 14 fe ff ff jmpq 7840a8 0.00 : 784294: 0f 1f 40 00 nopl 0x0(%rax) : Assert(hashp->alloc != DynaHashAlloc); : /* FALL THRU */ : : case HASH_ENTER: : /* Return existing element if found, else create one */ : if (currBucket != NULL) 0.11 : 784298: 48 85 db test %rbx,%rbx 0.00 : 78429b: 0f 85 aa fe ff ff jne 78414b : return (void *) ELEMENTKEY(currBucket); : : /* disallow inserts if frozen */ : if (hashp->frozen) 0.00 : 7842a1: 41 80 7e 42 00 cmpb $0x0,0x42(%r14) 0.03 : 7842a6: 0f 85 a3 03 00 00 jne 78464f : */ : static HASHBUCKET : get_hash_entry(HTAB *hashp) : { : /* use volatile pointer to prevent code rearrangement */ : volatile HASHHDR *hctlv = hashp->hctl; 0.00 : 7842ac: 49 8b 1e mov (%r14),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.03 : 7842af: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 7842b5: eb 35 jmp 7842ec 0.00 : 7842b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7842be: 00 00 : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) : SpinLockAcquire(&hctlv->mutex); : : /* try to get an entry from the freelist */ : newElement = hctlv->freeList; 0.02 : 7842c0: 48 8b 53 10 mov 0x10(%rbx),%rdx : if (newElement != NULL) 0.01 : 7842c4: 48 85 d2 test %rdx,%rdx 0.00 : 7842c7: 0f 85 04 02 00 00 jne 7844d1 : break; : : /* no free elements. allocate another chunk of buckets */ : if (IS_PARTITIONED(hctlv)) 0.00 : 7842cd: 48 8b 43 48 mov 0x48(%rbx),%rax 0.01 : 7842d1: 48 85 c0 test %rax,%rax 0.00 : 7842d4: 74 03 je 7842d9 : SpinLockRelease(&hctlv->mutex); 0.00 : 7842d6: c6 03 00 movb $0x0,(%rbx) : : if (!element_alloc(hashp, hctlv->nelem_alloc)) 0.00 : 7842d9: 8b 73 6c mov 0x6c(%rbx),%esi 0.00 : 7842dc: 4c 89 f7 mov %r14,%rdi 0.00 : 7842df: e8 dc fb ff ff callq 783ec0 0.00 : 7842e4: 84 c0 test %al,%al 0.00 : 7842e6: 0f 84 be 00 00 00 je 7843aa : HASHBUCKET newElement; : : for (;;) : { : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) 0.02 : 7842ec: 48 8b 43 48 mov 0x48(%rbx),%rax 0.06 : 7842f0: 48 85 c0 test %rax,%rax 0.00 : 7842f3: 74 cb je 7842c0 0.00 : 7842f5: 44 89 e8 mov %r13d,%eax 0.00 : 7842f8: f0 86 03 lock xchg %al,(%rbx) : SpinLockAcquire(&hctlv->mutex); 0.01 : 7842fb: 84 c0 test %al,%al 0.00 : 7842fd: 74 c1 je 7842c0 0.00 : 7842ff: ba 87 04 00 00 mov $0x487,%edx 0.00 : 784304: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 784309: 48 89 df mov %rbx,%rdi 0.00 : 78430c: e8 2f bd f0 ff callq 690040 0.00 : 784311: eb ad jmp 7842c0 : if (currBucket != NULL) : return (void *) ELEMENTKEY(currBucket); : return NULL; : : case HASH_REMOVE: : if (currBucket != NULL) 0.02 : 784313: 48 85 db test %rbx,%rbx 0.00 : 784316: 74 68 je 784380 : { : /* use volatile pointer to prevent code rearrangement */ : volatile HASHHDR *hctlv = hctl; : : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) 0.00 : 784318: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 78431c: 48 8b 42 48 mov 0x48(%rdx),%rax 0.00 : 784320: 48 85 c0 test %rax,%rax 0.00 : 784323: 74 0c je 784331 0.00 : 784325: b8 01 00 00 00 mov $0x1,%eax 0.00 : 78432a: f0 86 02 lock xchg %al,(%rdx) : SpinLockAcquire(&hctlv->mutex); 0.01 : 78432d: 84 c0 test %al,%al 0.00 : 78432f: 75 64 jne 784395 : : Assert(hctlv->nentries > 0); : hctlv->nentries--; 0.00 : 784331: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 784335: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 784339: 48 83 e8 01 sub $0x1,%rax 0.00 : 78433d: 48 89 42 08 mov %rax,0x8(%rdx) : : /* remove record from hash bucket's chain. */ : *prevBucketPtr = currBucket->link; 0.00 : 784341: 48 8b 03 mov (%rbx),%rax 0.00 : 784344: 49 89 04 24 mov %rax,(%r12) : : /* add the record to the freelist for this table. */ : currBucket->link = hctlv->freeList; 0.00 : 784348: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 78434c: 48 89 03 mov %rax,(%rbx) : hctlv->freeList = currBucket; 0.00 : 78434f: 48 89 5a 10 mov %rbx,0x10(%rdx) : : if (IS_PARTITIONED(hctlv)) 0.00 : 784353: 48 8b 42 48 mov 0x48(%rdx),%rax 0.00 : 784357: 48 85 c0 test %rax,%rax 0.00 : 78435a: 0f 84 eb fd ff ff je 78414b : SpinLockRelease(&hctlv->mutex); 0.00 : 784360: c6 02 00 movb $0x0,(%rdx) 0.00 : 784363: e9 e3 fd ff ff jmpq 78414b : /* : * Can't split if running in partitioned mode, nor if frozen, nor if : * table is the subject of any active hash_seq_search scans. Strange : * order of these tests is to try to check cheaper conditions first. : */ : if (!IS_PARTITIONED(hctl) && !hashp->frozen && 0.00 : 784368: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 78436c: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 784370: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784374: 8b 73 28 mov 0x28(%rbx),%esi 0.00 : 784377: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 78437b: e9 28 fd ff ff jmpq 7840a8 : */ : : return (void *) ELEMENTKEY(currBucket); : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); 0.06 : 784380: 31 db xor %ebx,%ebx 0.00 : 784382: e9 c8 fd ff ff jmpq 78414f : segment_ndx = MOD(bucket, hashp->ssize); : : segp = hashp->dir[segment_num]; : : if (segp == NULL) : hash_corrupted(hashp); 0.00 : 784387: 4c 89 f7 mov %r14,%rdi 0.00 : 78438a: e8 01 f8 ff ff callq 783b90 0.00 : 78438f: 90 nop 0.00 : 784390: e9 3b fd ff ff jmpq 7840d0 : /* use volatile pointer to prevent code rearrangement */ : volatile HASHHDR *hctlv = hctl; : : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) : SpinLockAcquire(&hctlv->mutex); 0.00 : 784395: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 784399: ba 95 03 00 00 mov $0x395,%edx 0.00 : 78439e: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 7843a3: e8 98 bc f0 ff callq 690040 0.00 : 7843a8: eb 87 jmp 784331 : : currBucket = get_hash_entry(hashp); : if (currBucket == NULL) : { : /* out of memory */ : if (action == HASH_ENTER_NULL) 0.00 : 7843aa: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 7843ae: 75 d0 jne 784380 : return NULL; : /* report a generic message */ : if (hashp->isshared) 0.00 : 7843b0: 41 80 7e 40 00 cmpb $0x0,0x40(%r14) 0.00 : 7843b5: 0f 1f 00 nopl (%rax) 0.00 : 7843b8: 0f 84 4a 02 00 00 je 784608 : ereport(ERROR, 0.00 : 7843be: 45 31 c0 xor %r8d,%r8d 0.00 : 7843c1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 7843c6: b9 f0 5b 8d 00 mov $0x8d5bf0,%ecx 0.00 : 7843cb: ba c6 03 00 00 mov $0x3c6,%edx 0.00 : 7843d0: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 7843d5: e8 e6 66 ff ff callq 77aac0 0.00 : 7843da: 84 c0 test %al,%al 0.00 : 7843dc: bf 47 ba 8a 00 mov $0x8aba47,%edi 0.00 : 7843e1: 0f 84 8a fe ff ff je 784271 : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of shared memory"))); : else : ereport(ERROR, 0.00 : 7843e7: 31 c0 xor %eax,%eax 0.00 : 7843e9: e8 b2 84 ff ff callq 77c8a0 0.00 : 7843ee: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 7843f3: 89 c3 mov %eax,%ebx 0.00 : 7843f5: e8 56 89 ff ff callq 77cd50 0.00 : 7843fa: 89 de mov %ebx,%esi 0.00 : 7843fc: 89 c7 mov %eax,%edi 0.00 : 7843fe: 31 c0 xor %eax,%eax 0.00 : 784400: e8 db 61 ff ff callq 77a5e0 0.00 : 784405: e9 67 fe ff ff jmpq 784271 0.00 : 78440a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; : new_segndx = MOD(new_bucket, hashp->ssize); : : if (new_segnum >= hctl->nsegs) 0.02 : 784410: 8b 45 d4 mov -0x2c(%rbp),%eax 0.02 : 784413: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 784417: 48 89 5d c8 mov %rbx,-0x38(%rbp) : return false; : hctl->nsegs++; : } : : /* OK, we created a new bucket */ : hctl->max_bucket++; 0.00 : 78441b: 48 8b 5d 90 mov -0x70(%rbp),%rbx : * *Before* changing masks, find old bucket corresponding to same hash : * values; values in that bucket may need to be relocated to new bucket. : * Note that new_bucket is certainly larger than low_mask at this point, : * so we can skip the first step of the regular hash mask calc. : */ : old_bucket = (new_bucket & hctl->low_mask); 0.01 : 78441f: 4d 89 e1 mov %r12,%r9 : return false; : hctl->nsegs++; : } : : /* OK, we created a new bucket */ : hctl->max_bucket++; 0.00 : 784422: 89 43 28 mov %eax,0x28(%rbx) : * *Before* changing masks, find old bucket corresponding to same hash : * values; values in that bucket may need to be relocated to new bucket. : * Note that new_bucket is certainly larger than low_mask at this point, : * so we can skip the first step of the regular hash mask calc. : */ : old_bucket = (new_bucket & hctl->low_mask); 0.02 : 784425: 8b 43 30 mov 0x30(%rbx),%eax 0.01 : 784428: 49 21 c1 and %rax,%r9 : : /* : * If we crossed a power of 2, readjust masks. : */ : if ((uint32) new_bucket > hctl->high_mask) 0.01 : 78442b: 8b 43 2c mov 0x2c(%rbx),%eax 0.01 : 78442e: 39 45 d4 cmp %eax,-0x2c(%rbp) 0.00 : 784431: 76 0c jbe 78443f : { : hctl->low_mask = hctl->high_mask; 0.00 : 784433: 89 43 30 mov %eax,0x30(%rbx) : hctl->high_mask = (uint32) new_bucket | hctl->low_mask; 0.00 : 784436: 09 45 d4 or %eax,-0x2c(%rbp) 0.00 : 784439: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 78443c: 89 43 2c mov %eax,0x2c(%rbx) : old_segndx = MOD(old_bucket, hashp->ssize); : : old_seg = hashp->dir[old_segnum]; : new_seg = hashp->dir[new_segnum]; : : oldlink = &old_seg[old_segndx]; 0.02 : 78443f: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 784443: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784447: 4c 89 ca mov %r9,%rdx : * that might not be true! : */ : old_segnum = old_bucket >> hashp->sshift; : old_segndx = MOD(old_bucket, hashp->ssize); : : old_seg = hashp->dir[old_segnum]; 0.00 : 78444a: 49 8b 76 08 mov 0x8(%r14),%rsi : new_seg = hashp->dir[new_segnum]; : : oldlink = &old_seg[old_segndx]; : newlink = &new_seg[new_segndx]; 0.02 : 78444e: 4d 21 ec and %r13,%r12 0.00 : 784451: 4a 8d 3c e5 00 00 00 lea 0x0(,%r12,8),%rdi 0.00 : 784458: 00 : old_segndx = MOD(old_bucket, hashp->ssize); : : old_seg = hashp->dir[old_segnum]; : new_seg = hashp->dir[new_segnum]; : : oldlink = &old_seg[old_segndx]; 0.01 : 784459: 48 83 e8 01 sub $0x1,%rax 0.00 : 78445d: 48 d3 fa sar %cl,%rdx 0.02 : 784460: 4c 21 c8 and %r9,%rax 0.00 : 784463: 4c 8d 04 c5 00 00 00 lea 0x0(,%rax,8),%r8 0.00 : 78446a: 00 0.02 : 78446b: 4c 03 04 d6 add (%rsi,%rdx,8),%r8 : newlink = &new_seg[new_segndx]; 0.19 : 78446f: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 784473: 48 03 3c 16 add (%rsi,%rdx,1),%rdi : : for (currElement = *oldlink; 0.03 : 784477: 49 8b 10 mov (%r8),%rdx : currElement != NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1423 0.83 : 78447a: 48 85 d2 test %rdx,%rdx 0.00 : 78447d: 75 17 jne 784496 0.09 : 78447f: eb 39 jmp 7844ba 0.00 : 784481: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : *oldlink = currElement; : oldlink = &currElement->link; : } : else : { : *newlink = currElement; 0.12 : 784488: 48 89 17 mov %rdx,(%rdi) : newlink = &currElement->link; 0.09 : 78448b: 48 89 d7 mov %rdx,%rdi : : oldlink = &old_seg[old_segndx]; : newlink = &new_seg[new_segndx]; : : for (currElement = *oldlink; : currElement != NULL; 0.00 : 78448e: 48 85 c9 test %rcx,%rcx 0.00 : 784491: 74 27 je 7844ba 0.03 : 784493: 48 89 ca mov %rcx,%rdx : static inline uint32 : calc_bucket(HASHHDR *hctl, uint32 hash_val) : { : uint32 bucket; : : bucket = hash_val & hctl->high_mask; 0.05 : 784496: 48 8b 5d 90 mov -0x70(%rbp),%rbx : : for (currElement = *oldlink; : currElement != NULL; : currElement = nextElement) : { : nextElement = currElement->link; 0.04 : 78449a: 48 8b 0a mov (%rdx),%rcx : static inline uint32 : calc_bucket(HASHHDR *hctl, uint32 hash_val) : { : uint32 bucket; : : bucket = hash_val & hctl->high_mask; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:771 12.12 : 78449d: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 7844a0: 23 42 08 and 0x8(%rdx),%eax : if (bucket > hctl->max_bucket) 0.18 : 7844a3: 3b 43 28 cmp 0x28(%rbx),%eax 0.00 : 7844a6: 76 03 jbe 7844ab : bucket = bucket & hctl->low_mask; 0.00 : 7844a8: 23 43 30 and 0x30(%rbx),%eax : for (currElement = *oldlink; : currElement != NULL; : currElement = nextElement) : { : nextElement = currElement->link; : if ((long) calc_bucket(hctl, currElement->hashvalue) == old_bucket) 0.02 : 7844ab: 89 c0 mov %eax,%eax 0.00 : 7844ad: 49 39 c1 cmp %rax,%r9 0.00 : 7844b0: 75 d6 jne 784488 : { : *oldlink = currElement; 0.10 : 7844b2: 49 89 10 mov %rdx,(%r8) : oldlink = &currElement->link; 0.06 : 7844b5: 49 89 d0 mov %rdx,%r8 0.00 : 7844b8: eb d4 jmp 78448e : *newlink = currElement; : newlink = &currElement->link; : } : } : /* don't forget to terminate the rebuilt hash chains... */ : *oldlink = NULL; 0.11 : 7844ba: 49 c7 00 00 00 00 00 movq $0x0,(%r8) : *newlink = NULL; 0.13 : 7844c1: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.06 : 7844c8: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 7844cc: e9 c8 fb ff ff jmpq 784099 : return NULL; : } : } : : /* remove entry from freelist, bump nentries */ : hctlv->freeList = newElement->link; 0.02 : 7844d1: 48 8b 02 mov (%rdx),%rax 0.36 : 7844d4: 48 89 43 10 mov %rax,0x10(%rbx) : hctlv->nentries++; 0.06 : 7844d8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7844dc: 48 83 c0 01 add $0x1,%rax 0.00 : 7844e0: 48 89 43 08 mov %rax,0x8(%rbx) : : if (IS_PARTITIONED(hctlv)) 0.00 : 7844e4: 48 8b 43 48 mov 0x48(%rbx),%rax 0.03 : 7844e8: 48 85 c0 test %rax,%rax 0.00 : 7844eb: 74 03 je 7844f0 : SpinLockRelease(&hctlv->mutex); 0.00 : 7844ed: c6 03 00 movb $0x0,(%rbx) : *prevBucketPtr = currBucket; : currBucket->link = NULL; : : /* copy key into record */ : currBucket->hashvalue = hashvalue; : hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize); 0.00 : 7844f0: 48 8d 5a 10 lea 0x10(%rdx),%rbx : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : /* link into hashbucket chain */ : *prevBucketPtr = currBucket; 0.00 : 7844f4: 49 89 14 24 mov %rdx,(%r12) : currBucket->link = NULL; : : /* copy key into record */ : currBucket->hashvalue = hashvalue; 0.02 : 7844f8: 44 89 7a 08 mov %r15d,0x8(%rdx) : errmsg("out of memory"))); : } : : /* link into hashbucket chain */ : *prevBucketPtr = currBucket; : currBucket->link = NULL; 0.03 : 7844fc: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) : : /* copy key into record */ : currBucket->hashvalue = hashvalue; : hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize); 0.02 : 784503: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.01 : 784507: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 78450b: 48 89 df mov %rbx,%rdi 0.01 : 78450e: 41 ff 56 20 callq *0x20(%r14) : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); : : return NULL; /* keep compiler quiet */ : } 0.08 : 784512: e9 38 fc ff ff jmpq 78414f : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); : : if (p != NULL) : { : memcpy(p, old_p, old_dirsize); : MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); 0.00 : 784517: 31 f6 xor %esi,%esi 0.00 : 784519: e8 02 4f ce ff callq 469420 : hashp->dir = p; 0.00 : 78451e: 48 8b 45 a8 mov -0x58(%rbp),%rax : hashp->hctl->dsize = new_dsize; 0.00 : 784522: 48 8b 55 b8 mov -0x48(%rbp),%rdx : : if (p != NULL) : { : memcpy(p, old_p, old_dirsize); : MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); : hashp->dir = p; 0.00 : 784526: 49 89 46 08 mov %rax,0x8(%r14) : hashp->hctl->dsize = new_dsize; 0.00 : 78452a: 49 8b 06 mov (%r14),%rax 0.00 : 78452d: 48 89 50 18 mov %rdx,0x18(%rax) : : /* XXX assume the allocator is palloc, so we know how to free */ : Assert(hashp->alloc == DynaHashAlloc); : pfree(old_p); 0.00 : 784531: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 784535: e8 46 46 01 00 callq 798b80 : { : /* Allocate new segment if necessary -- could fail if dir full */ : if (new_segnum >= hctl->dsize) : if (!dir_realloc(hashp)) : return false; : if (!(hashp->dir[new_segnum] = seg_alloc(hashp))) 0.00 : 78453a: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 78453e: 4c 89 f7 mov %r14,%rdi 0.00 : 784541: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 784545: 48 89 5d c8 mov %rbx,-0x38(%rbp) 0.00 : 784549: 49 03 5e 08 add 0x8(%r14),%rbx 0.00 : 78454d: e8 7e fa ff ff callq 783fd0 0.00 : 784552: 48 85 c0 test %rax,%rax 0.00 : 784555: 48 89 03 mov %rax,(%rbx) 0.00 : 784558: 0f 84 1f 01 00 00 je 78467d : return false; : hctl->nsegs++; 0.00 : 78455e: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 784562: 8b 42 28 mov 0x28(%rdx),%eax 0.00 : 784565: 48 83 42 20 01 addq $0x1,0x20(%rdx) 0.00 : 78456a: 83 c0 01 add $0x1,%eax 0.00 : 78456d: e9 a9 fe ff ff jmpq 78441b : : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) : return false; : : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; 0.00 : 784572: 48 8d 14 1b lea (%rbx,%rbx,1),%rdx : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); 0.00 : 784576: 48 89 d8 mov %rbx,%rax 0.00 : 784579: 48 c1 e0 04 shl $0x4,%rax 0.00 : 78457d: 48 89 45 a0 mov %rax,-0x60(%rbp) : : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) : return false; : : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; 0.00 : 784581: 48 89 55 b8 mov %rdx,-0x48(%rbp) : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 784585: 49 8b 46 30 mov 0x30(%r14),%rax : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; 0.00 : 784589: 49 8b 56 08 mov 0x8(%r14),%rdx : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); 0.00 : 78458d: 48 8b 7d a0 mov -0x60(%rbp),%rdi : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; 0.00 : 784591: 48 89 55 b0 mov %rdx,-0x50(%rbp) : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 784595: 48 89 05 2c 56 43 00 mov %rax,0x43562c(%rip) # bb9bc8 : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); 0.00 : 78459c: 41 ff 56 28 callq *0x28(%r14) : : if (p != NULL) 0.00 : 7845a0: 48 85 c0 test %rax,%rax : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); 0.00 : 7845a3: 48 89 45 a8 mov %rax,-0x58(%rbp) : : if (p != NULL) 0.00 : 7845a7: 0f 84 89 00 00 00 je 784636 : { : memcpy(p, old_p, old_dirsize); 0.00 : 7845ad: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7845b1: 48 8b 75 b0 mov -0x50(%rbp),%rsi : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) : return false; : : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); 0.00 : 7845b5: 48 c1 e3 03 shl $0x3,%rbx : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); : : if (p != NULL) : { : memcpy(p, old_p, old_dirsize); 0.00 : 7845b9: 48 89 da mov %rbx,%rdx 0.00 : 7845bc: e8 2f 56 ce ff callq 469bf0 : MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); 0.00 : 7845c1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7845c5: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7845c9: 48 01 df add %rbx,%rdi 0.00 : 7845cc: 48 29 da sub %rbx,%rdx 0.00 : 7845cf: 40 f6 c7 07 test $0x7,%dil 0.00 : 7845d3: 0f 85 3e ff ff ff jne 784517 0.00 : 7845d9: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 7845e0: 0f 87 31 ff ff ff ja 784517 0.00 : 7845e6: 48 8d 04 17 lea (%rdi,%rdx,1),%rax 0.00 : 7845ea: 48 39 c7 cmp %rax,%rdi 0.00 : 7845ed: 0f 83 2b ff ff ff jae 78451e 0.00 : 7845f3: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 7845fa: 48 83 c7 08 add $0x8,%rdi 0.00 : 7845fe: 48 39 f8 cmp %rdi,%rax 0.00 : 784601: 77 f0 ja 7845f3 0.00 : 784603: e9 16 ff ff ff jmpq 78451e : if (hashp->isshared) : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of shared memory"))); : else : ereport(ERROR, 0.00 : 784608: 45 31 c0 xor %r8d,%r8d 0.00 : 78460b: b9 f0 5b 8d 00 mov $0x8d5bf0,%ecx 0.00 : 784610: ba ca 03 00 00 mov $0x3ca,%edx 0.00 : 784615: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 78461a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 78461f: e8 9c 64 ff ff callq 77aac0 0.00 : 784624: 84 c0 test %al,%al 0.00 : 784626: 0f 84 45 fc ff ff je 784271 0.00 : 78462c: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 784631: e9 b1 fd ff ff jmpq 7843e7 : : old_p = hashp->dir; : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); : : if (p != NULL) 0.00 : 784636: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 78463a: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 78463e: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784642: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 784646: 44 8b 43 28 mov 0x28(%rbx),%r8d 0.00 : 78464a: e9 d9 fb ff ff jmpq 784228 : if (currBucket != NULL) : return (void *) ELEMENTKEY(currBucket); : : /* disallow inserts if frozen */ : if (hashp->frozen) : elog(ERROR, "cannot insert into frozen hashtable \"%s\"", 0.00 : 78464f: ba f0 5b 8d 00 mov $0x8d5bf0,%edx 0.00 : 784654: be ba 03 00 00 mov $0x3ba,%esi 0.00 : 784659: bf 33 59 8d 00 mov $0x8d5933,%edi 0.00 : 78465e: e8 bd 6d ff ff callq 77b420 0.00 : 784663: 49 8b 56 38 mov 0x38(%r14),%rdx 0.00 : 784667: be c0 5a 8d 00 mov $0x8d5ac0,%esi 0.00 : 78466c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 784671: 31 c0 xor %eax,%eax 0.00 : 784673: e8 b8 6b ff ff callq 77b230 0.00 : 784678: e8 53 4e ce ff callq 4694d0 : { : /* Allocate new segment if necessary -- could fail if dir full */ : if (new_segnum >= hctl->dsize) : if (!dir_realloc(hashp)) : return false; : if (!(hashp->dir[new_segnum] = seg_alloc(hashp))) 0.00 : 78467d: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 784681: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784685: 8b 70 28 mov 0x28(%rax),%esi 0.00 : 784688: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 78468c: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 784690: e9 13 fa ff ff jmpq 7840a8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 52.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:720 23.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:697 6.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 4.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 1.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 1.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:801 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:779 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:782 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:826 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:702 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782ca0 : : CHashBucketScan(CHashTable table, : CHashPtr *start, : uint32 hashcode, : const void *key, : CHashScanResult *res) : { 0.05 : 782ca0: 55 push %rbp 0.15 : 782ca1: 48 89 e5 mov %rsp,%rbp 0.24 : 782ca4: 41 57 push %r15 0.03 : 782ca6: 41 89 d7 mov %edx,%r15d 0.00 : 782ca9: 41 56 push %r14 0.20 : 782cab: 41 55 push %r13 0.02 : 782cad: 49 89 fd mov %rdi,%r13 0.00 : 782cb0: 41 54 push %r12 0.00 : 782cb2: 45 31 e4 xor %r12d,%r12d 0.20 : 782cb5: 53 push %rbx 0.02 : 782cb6: 48 83 ec 18 sub $0x18,%rsp 0.00 : 782cba: 48 89 75 d0 mov %rsi,-0x30(%rbp) 0.17 : 782cbe: 48 89 4d c8 mov %rcx,-0x38(%rbp) 0.04 : 782cc2: 4c 89 45 c0 mov %r8,-0x40(%rbp) : CHashPtr *pointer_to_target; : CHashNode *target_node = NULL; : : retry: : pointer_to_target = start; : target = *pointer_to_target; 0.01 : 782cc6: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.04 : 782cca: 44 8b 10 mov (%rax),%r10d : : /* : * If we've reached the end of the bucket chain, stop; otherwise, : * figure out the actual address of the next item. : */ : if (CHashPtrIsInvalid(target)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:697 23.55 : 782ccd: 41 83 fa fd cmp $0xfffffffd,%r10d 0.00 : 782cd1: 0f 87 ff 00 00 00 ja 782dd6 : { : res->found = false; : break; 0.16 : 782cd7: 4c 8b 75 d0 mov -0x30(%rbp),%r14 0.03 : 782cdb: eb 21 jmp 782cfe 0.00 : 782cdd: 0f 1f 00 nopl (%rax) : /* : * Bucket chains are kept in order, so that there is exactly one legal : * point at which any given key can be inserted. The ordering is by : * hashcode first, and then by memcmp ordering of the keys involved. : */ : h = target_node->un.hashcode; 0.25 : 782ce0: 41 8b 44 24 04 mov 0x4(%r12),%eax : if (h == hashcode) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:779 0.84 : 782ce5: 44 39 f8 cmp %r15d,%eax 0.00 : 782ce8: 74 5e je 782d48 : cmp = memcmp(CHashNodeGetItem(target_node), key, : table->desc.key_size); : else if (h > hashcode) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:782 0.62 : 782cea: 41 39 c7 cmp %eax,%r15d 0.22 : 782ced: 0f 1f 00 nopl (%rax) 0.00 : 782cf0: 72 7b jb 782d6d : break; : } : } : : /* Continue scan from next node. */ : pointer_to_target = &target_node->next; 0.19 : 782cf2: 4d 89 e6 mov %r12,%r14 0.04 : 782cf5: 45 89 c2 mov %r8d,%r10d : : /* : * If we've reached the end of the bucket chain, stop; otherwise, : * figure out the actual address of the next item. : */ : if (CHashPtrIsInvalid(target)) 0.02 : 782cf8: 41 83 fa fd cmp $0xfffffffd,%r10d 0.00 : 782cfc: 77 79 ja 782d77 : { : res->found = false; : break; : } : target_node = CHashTableGetNode(table, target); 0.11 : 782cfe: 44 89 d0 mov %r10d,%eax 0.14 : 782d01: d1 e8 shr %eax 0.20 : 782d03: 41 89 c4 mov %eax,%r12d 0.17 : 782d06: 45 0f af 65 1c imul 0x1c(%r13),%r12d /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:702 0.55 : 782d0b: 4d 03 65 30 add 0x30(%r13),%r12 : * target may have been fetched from an arena entry that could be : * concurrently modified, so a dependency barrier is required before : * dereferencing the derived pointer. : */ : pg_read_barrier_depends(); : next = target_node->next; 0.42 : 782d0f: 45 8b 04 24 mov (%r12),%r8d : * ensures that delete-marked elements are removed from bucket chains : * as quickly as possible and reduces code duplication. See : * CHashDelete for further comments about why delete-marking is : * necessary and how it allows safe deletion. : */ : if (CHashPtrIsMarked(next)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:720 52.59 : 782d13: 41 f6 c0 01 test $0x1,%r8b 0.00 : 782d17: 74 c7 je 782ce0 : { : zap: : if (__sync_bool_compare_and_swap(pointer_to_target, 0.00 : 782d19: 44 89 c3 mov %r8d,%ebx 0.00 : 782d1c: 44 89 d0 mov %r10d,%eax 0.00 : 782d1f: 83 e3 fe and $0xfffffffe,%ebx 0.00 : 782d22: f0 41 0f b1 1e lock cmpxchg %ebx,(%r14) 0.00 : 782d27: 74 77 je 782da0 : * the node which precedes it before we advance to the next : * node. That could certainly happen occasionally, but we'd : * have to be pretty unlucky to have it happen even twice in : * a row. : */ : CHashTableIncrementStatistic(table, CHS_Scan_Expunge_Fail); 0.00 : 782d29: 49 83 85 88 00 00 00 addq $0x1,0x88(%r13) 0.00 : 782d30: 01 : target = *pointer_to_target; 0.00 : 782d31: 45 8b 16 mov (%r14),%r10d : if (CHashPtrIsMarked(target)) 0.00 : 782d34: 41 f6 c2 01 test $0x1,%r10b 0.00 : 782d38: 74 be je 782cf8 : { : CHashTableIncrementStatistic(table, CHS_Scan_Restart); 0.00 : 782d3a: 49 83 85 90 00 00 00 addq $0x1,0x90(%r13) 0.00 : 782d41: 01 : goto retry; 0.00 : 782d42: eb 82 jmp 782cc6 0.00 : 782d44: 0f 1f 40 00 nopl 0x0(%rax) : * point at which any given key can be inserted. The ordering is by : * hashcode first, and then by memcmp ordering of the keys involved. : */ : h = target_node->un.hashcode; : if (h == hashcode) : cmp = memcmp(CHashNodeGetItem(target_node), key, /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 0.63 : 782d48: 41 0f b7 4d 0e movzwl 0xe(%r13),%ecx 0.25 : 782d4d: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.05 : 782d51: 49 8d 74 24 08 lea 0x8(%r12),%rsi 0.00 : 782d56: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 6.95 : 782d59: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 4.87 : 782d5b: 0f 97 c0 seta %al 1.31 : 782d5e: 0f 92 c2 setb %dl 0.00 : 782d61: 28 d0 sub %dl,%al 0.17 : 782d63: 0f be c0 movsbl %al,%eax : * the point where we expect to find the key OR someone delete-marked : * the item and overwrote the hashcode with a gcnext pointer. In the : * latter case we must take care not to be fooled into stopping the : * scan early. : */ : if (cmp >= 0) 0.19 : 782d66: 83 f8 00 cmp $0x0,%eax 0.00 : 782d69: 7c 87 jl 782cf2 : { : if (cmp == 0) 0.18 : 782d6b: 74 5b je 782dc8 : /* : * pg_read_barrier() prevents the reread of the next pointer : * from being speculated ahead of the read of the hash value. : */ : pg_read_barrier(); : next = target_node->next; 0.12 : 782d6d: 45 8b 04 24 mov (%r12),%r8d : if (CHashPtrIsMarked(next)) 0.07 : 782d71: 41 f6 c0 01 test $0x1,%r8b 0.00 : 782d75: 75 a2 jne 782d19 : goto zap; : res->found = false; 0.06 : 782d77: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.08 : 782d7b: c6 47 18 00 movb $0x0,0x18(%rdi) : pointer_to_target = &target_node->next; : target = next; : } : : /* Send results back to caller. */ : res->target = target; 0.15 : 782d7f: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.06 : 782d83: 44 89 10 mov %r10d,(%rax) : res->pointer_to_target = pointer_to_target; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:826 0.57 : 782d86: 4c 89 70 08 mov %r14,0x8(%rax) : res->target_node = target_node; 0.13 : 782d8a: 4c 89 60 10 mov %r12,0x10(%rax) : } 0.05 : 782d8e: 48 83 c4 18 add $0x18,%rsp 0.00 : 782d92: 5b pop %rbx 0.11 : 782d93: 41 5c pop %r12 0.05 : 782d95: 41 5d pop %r13 0.04 : 782d97: 41 5e pop %r14 0.01 : 782d99: 41 5f pop %r15 0.08 : 782d9b: c9 leaveq 0.12 : 782d9c: c3 retq 0.00 : 782d9d: 0f 1f 00 nopl (%rax) : * delete-mark has been applied. Thus, if we just keep : * following the next pointers, we're guaranteed to visit : * all non-deleted items (and possibly some deleted items) : * that were present at the time we began the scan. : */ : CHashTableIncrementStatistic(table, CHS_Scan_Expunge); 0.00 : 782da0: 49 83 85 80 00 00 00 addq $0x1,0x80(%r13) 0.00 : 782da7: 01 : CHashAddToGarbage(table, hashcode & table->bucket_mask, 0.00 : 782da8: 44 89 fe mov %r15d,%esi 0.00 : 782dab: 41 23 75 10 and 0x10(%r13),%esi 0.00 : 782daf: 44 89 d2 mov %r10d,%edx 0.00 : 782db2: 4c 89 ef mov %r13,%rdi 0.00 : 782db5: e8 96 fe ff ff callq 782c50 0.00 : 782dba: 41 89 da mov %ebx,%r10d 0.00 : 782dbd: e9 36 ff ff ff jmpq 782cf8 0.00 : 782dc2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : if (cmp >= 0) : { : if (cmp == 0) : { : res->found = true; 0.23 : 782dc8: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.39 : 782dcc: c6 40 18 01 movb $0x1,0x18(%rax) : res->next = next; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:801 1.29 : 782dd0: 44 89 40 04 mov %r8d,0x4(%rax) : break; 0.35 : 782dd4: eb a9 jmp 782d7f : : /* : * If we've reached the end of the bucket chain, stop; otherwise, : * figure out the actual address of the next item. : */ : if (CHashPtrIsInvalid(target)) 0.13 : 782dd6: 49 89 c6 mov %rax,%r14 0.07 : 782dd9: eb 9c jmp 782d77 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 7.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 5.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 3.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 3.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 3.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 3.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 3.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 3.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 3.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 2.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 2.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1989 2.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1960 2.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 2.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1979 2.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 2.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 2.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 1.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 1.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 1.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 1.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 1.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1977 1.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1993 1.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1979 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 1.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1964 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 0.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1954 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 0.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1977 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 0.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1977 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b1430 : : static Datum : ExecMakeFunctionResultNoSets(FuncExprState *fcache, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 8.43 : 5b1430: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 2.33 : 5b1431: 48 89 e5 mov %rsp,%rbp 0.23 : 5b1434: 41 57 push %r15 3.05 : 5b1436: 49 89 d7 mov %rdx,%r15 0.58 : 5b1439: 41 56 push %r14 0.24 : 5b143b: 49 89 f6 mov %rsi,%r14 0.23 : 5b143e: 41 55 push %r13 2.24 : 5b1440: 49 89 fd mov %rdi,%r13 0.60 : 5b1443: 41 54 push %r12 0.32 : 5b1445: 53 push %rbx 0.38 : 5b1446: 48 89 cb mov %rcx,%rbx 2.02 : 5b1449: 48 83 ec 48 sub $0x48,%rsp : FunctionCallInfo fcinfo; : PgStat_FunctionCallUsage fcusage; : int i; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1954 0.77 : 5b144d: e8 8e a5 0e 00 callq 69b9e0 : : if (isDone) 0.04 : 5b1452: 48 85 db test %rbx,%rbx 0.00 : 5b1455: 74 06 je 5b145d : *isDone = ExprSingleResult; 0.00 : 5b1457: c7 03 00 00 00 00 movl $0x0,(%rbx) : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 3.72 : 5b145d: 49 8b 45 18 mov 0x18(%r13),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.16 : 5b1461: 48 85 c0 test %rax,%rax 0.00 : 5b1464: 0f 84 c2 00 00 00 je 5b152c 0.08 : 5b146a: 4c 8b 60 08 mov 0x8(%rax),%r12 2.46 : 5b146e: 4d 85 e4 test %r12,%r12 0.00 : 5b1471: 0f 84 b5 00 00 00 je 5b152c 3.17 : 5b1477: 31 db xor %ebx,%ebx 0.00 : 5b1479: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : ExprState *argstate = (ExprState *) lfirst(arg); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1964 1.20 : 5b1480: 49 8b 04 24 mov (%r12),%rax : : fcinfo->arg[i] = ExecEvalExpr(argstate, /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 7.28 : 5b1484: 49 8d 94 1d b0 03 00 lea 0x3b0(%r13,%rbx,1),%rdx 0.00 : 5b148b: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.41 : 5b148c: 31 c9 xor %ecx,%ecx 0.07 : 5b148e: 4c 89 f6 mov %r14,%rsi 0.89 : 5b1491: 48 89 c7 mov %rax,%rdi 2.52 : 5b1494: ff 50 10 callq *0x10(%rax) 2.28 : 5b1497: 49 89 84 dd 90 00 00 mov %rax,0x90(%r13,%rbx,8) 0.00 : 5b149e: 00 : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 3.27 : 5b149f: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : { : ExprState *argstate = (ExprState *) lfirst(arg); : : fcinfo->arg[i] = ExecEvalExpr(argstate, /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.24 : 5b14a4: 8d 53 01 lea 0x1(%rbx),%edx : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 1.68 : 5b14a7: 48 83 c3 01 add $0x1,%rbx 0.31 : 5b14ab: 4d 85 e4 test %r12,%r12 0.00 : 5b14ae: 75 d0 jne 5b1480 : : /* : * If function is strict, and there are any NULL arguments, skip calling : * the function and return NULL. : */ : if (fcache->func.fn_strict) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1977 0.63 : 5b14b0: 41 80 7d 2e 00 cmpb $0x0,0x2e(%r13) 1.73 : 5b14b5: 74 34 je 5b14eb 0.51 : 5b14b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b14be: 00 00 : { : while (--i >= 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1979 2.45 : 5b14c0: 83 ea 01 sub $0x1,%edx 1.48 : 5b14c3: 78 26 js 5b14eb : { : if (fcinfo->argnull[i]) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 1.86 : 5b14c5: 48 63 c2 movslq %edx,%rax 0.90 : 5b14c8: 41 80 bc 05 b0 03 00 cmpb $0x0,0x3b0(%r13,%rax,1) 0.00 : 5b14cf: 00 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 5.29 : 5b14d1: 74 ed je 5b14c0 : { : *isNull = true; 0.00 : 5b14d3: 41 c6 07 01 movb $0x1,(%r15) 0.00 : 5b14d7: 31 db xor %ebx,%ebx : *isNull = fcinfo->isnull; : : pgstat_end_function_usage(&fcusage, true); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 3.09 : 5b14d9: 48 83 c4 48 add $0x48,%rsp 0.01 : 5b14dd: 48 89 d8 mov %rbx,%rax 0.01 : 5b14e0: 5b pop %rbx 3.17 : 5b14e1: 41 5c pop %r12 0.19 : 5b14e3: 41 5d pop %r13 0.67 : 5b14e5: 41 5e pop %r14 0.02 : 5b14e7: 41 5f pop %r15 2.68 : 5b14e9: c9 leaveq 1.81 : 5b14ea: c3 retq : : if (isDone) : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1960 2.50 : 5b14eb: 49 8d 5d 70 lea 0x70(%r13),%rbx : return (Datum) 0; : } : } : } : : pgstat_init_function_usage(fcinfo, &fcusage); 0.00 : 5b14ef: 4c 8d 65 90 lea -0x70(%rbp),%r12 0.00 : 5b14f3: 48 89 df mov %rbx,%rdi 0.40 : 5b14f6: 4c 89 e6 mov %r12,%rsi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1989 2.57 : 5b14f9: e8 82 12 09 00 callq 642780 : : fcinfo->isnull = false; : result = FunctionCallInvoke(fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 1.23 : 5b14fe: 49 8b 45 70 mov 0x70(%r13),%rax 1.86 : 5b1502: 48 89 df mov %rbx,%rdi : } : } : : pgstat_init_function_usage(fcinfo, &fcusage); : : fcinfo->isnull = false; 0.00 : 5b1505: 41 c6 85 8c 00 00 00 movb $0x0,0x8c(%r13) 0.00 : 5b150c: 00 : result = FunctionCallInvoke(fcinfo); 0.18 : 5b150d: ff 10 callq *(%rax) 3.19 : 5b150f: 48 89 c3 mov %rax,%rbx : *isNull = fcinfo->isnull; 0.26 : 5b1512: 41 0f b6 85 8c 00 00 movzbl 0x8c(%r13),%eax 0.00 : 5b1519: 00 : : pgstat_end_function_usage(&fcusage, true); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 0.56 : 5b151a: be 01 00 00 00 mov $0x1,%esi 0.68 : 5b151f: 4c 89 e7 mov %r12,%rdi : : pgstat_init_function_usage(fcinfo, &fcusage); : : fcinfo->isnull = false; : result = FunctionCallInvoke(fcinfo); : *isNull = fcinfo->isnull; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1993 1.70 : 5b1522: 41 88 07 mov %al,(%r15) : : pgstat_end_function_usage(&fcusage, true); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 1.39 : 5b1525: e8 a6 10 09 00 callq 6425d0 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 1.76 : 5b152a: eb ad jmp 5b14d9 : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) 0.00 : 5b152c: 31 d2 xor %edx,%edx 0.00 : 5b152e: eb 80 jmp 5b14b0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 65.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 8.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 5.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 1.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1035 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1099 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 1.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 1.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 0.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 0.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a5750 : : * can't see it.) : */ : bool : HeapTupleSatisfiesMVCC(HeapTuple htup, Snapshot snapshot, : Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 1.32 : 7a5750: 55 push %rbp 1.25 : 7a5751: 48 89 e5 mov %rsp,%rbp 1.07 : 7a5754: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.27 : 7a5758: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.21 : 7a575c: 41 89 d6 mov %edx,%r14d 0.77 : 7a575f: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.39 : 7a5763: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.19 : 7a5767: 48 83 ec 20 sub $0x20,%rsp : HeapTupleHeader tuple = htup->t_data; 0.05 : 7a576b: 48 8b 5f 10 mov 0x10(%rdi),%rbx : * can't see it.) : */ : bool : HeapTupleSatisfiesMVCC(HeapTuple htup, Snapshot snapshot, : Buffer buffer) : { 0.86 : 7a576f: 49 89 f5 mov %rsi,%r13 : HeapTupleHeader tuple = htup->t_data; : : Assert(ItemPointerIsValid(&htup->t_self)); : Assert(htup->t_tableOid != InvalidOid); : : if (!HeapTupleHeaderXminCommitted(tuple)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 5.07 : 7a5772: 0f b7 4b 14 movzwl 0x14(%rbx),%ecx 65.87 : 7a5776: 0f b7 d1 movzwl %cx,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 0.68 : 7a5779: f6 c6 01 test $0x1,%dh 0.00 : 7a577c: 75 72 jne 7a57f0 : { : if (HeapTupleHeaderXminInvalid(tuple)) 0.00 : 7a577e: 89 d0 mov %edx,%eax 0.00 : 7a5780: 25 00 03 00 00 and $0x300,%eax 0.00 : 7a5785: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 7a578a: 0f 84 06 01 00 00 je 7a5896 : return false; : : /* Used by pre-9.0 binary upgrades */ : if (tuple->t_infomask & HEAP_MOVED_OFF) 0.00 : 7a5790: f6 c6 40 test $0x40,%dh 0.00 : 7a5793: 0f 84 27 01 00 00 je 7a58c0 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a5799: 45 31 e4 xor %r12d,%r12d 0.00 : 7a579c: 66 f7 c2 00 c0 test $0xc000,%dx 0.00 : 7a57a1: 74 04 je 7a57a7 0.00 : 7a57a3: 44 8b 63 08 mov 0x8(%rbx),%r12d : : if (TransactionIdIsCurrentTransactionId(xvac)) 0.00 : 7a57a7: 44 89 e7 mov %r12d,%edi 0.00 : 7a57aa: e8 f1 ec d1 ff callq 4c44a0 0.00 : 7a57af: 84 c0 test %al,%al 0.00 : 7a57b1: 0f 85 df 00 00 00 jne 7a5896 : return false; : if (!TransactionIdIsInProgress(xvac)) 0.00 : 7a57b7: 44 89 e7 mov %r12d,%edi 0.00 : 7a57ba: e8 f1 c4 ed ff callq 681cb0 0.00 : 7a57bf: 84 c0 test %al,%al 0.00 : 7a57c1: 0f 85 1f 01 00 00 jne 7a58e6 : { : if (TransactionIdDidCommit(xvac)) 0.00 : 7a57c7: 44 89 e7 mov %r12d,%edi 0.00 : 7a57ca: e8 11 ab d1 ff callq 4c02e0 0.00 : 7a57cf: 84 c0 test %al,%al 0.00 : 7a57d1: 0f 85 79 02 00 00 jne 7a5a50 : if (!TransactionIdIsCurrentTransactionId(xvac)) : { : if (TransactionIdIsInProgress(xvac)) : return false; : if (TransactionIdDidCommit(xvac)) : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.00 : 7a57d7: ba 00 01 00 00 mov $0x100,%edx 0.00 : 7a57dc: 31 c9 xor %ecx,%ecx 0.00 : 7a57de: 44 89 f6 mov %r14d,%esi 0.00 : 7a57e1: 48 89 df mov %rbx,%rdi 0.00 : 7a57e4: e8 b7 f2 ff ff callq 7a4aa0 0.00 : 7a57e9: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 7a57ed: 0f 1f 00 nopl (%rax) : : /* : * By here, the inserting transaction has committed - have to check : * when... : */ : if (!HeapTupleHeaderXminFrozen(tuple) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 2.00 : 7a57f0: 89 d0 mov %edx,%eax 0.18 : 7a57f2: 25 00 03 00 00 and $0x300,%eax 0.37 : 7a57f7: 3d 00 03 00 00 cmp $0x300,%eax 0.02 : 7a57fc: 0f 85 86 00 00 00 jne 7a5888 : return false; /* treat as still in progress */ : : if (tuple->t_infomask & HEAP_XMAX_INVALID) /* xid invalid or aborted */ : return true; : : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1035 1.42 : 7a5802: f7 c2 80 08 00 00 test $0x880,%edx 0.00 : 7a5808: 0f 85 a2 00 00 00 jne 7a58b0 0.00 : 7a580e: 89 d0 mov %edx,%eax 0.00 : 7a5810: 25 50 10 00 00 and $0x1050,%eax 0.00 : 7a5815: 83 f8 40 cmp $0x40,%eax 0.00 : 7a5818: 0f 84 92 00 00 00 je 7a58b0 : return true; : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.01 : 7a581e: f6 c6 10 test $0x10,%dh 0.00 : 7a5821: 0f 85 b9 01 00 00 jne 7a59e0 : } : /* it must have aborted or crashed */ : return true; : } : : if (!(tuple->t_infomask & HEAP_XMAX_COMMITTED)) 0.00 : 7a5827: 80 e6 04 and $0x4,%dh 0.00 : 7a582a: 75 44 jne 7a5870 : { : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a582c: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a582f: 90 nop 0.00 : 7a5830: e8 6b ec d1 ff callq 4c44a0 0.00 : 7a5835: 84 c0 test %al,%al 0.00 : 7a5837: 0f 85 43 01 00 00 jne 7a5980 : return true; /* deleted after scan started */ : else : return false; /* deleted before scan started */ : } : : if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a583d: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a5840: e8 6b c4 ed ff callq 681cb0 0.00 : 7a5845: 84 c0 test %al,%al 0.00 : 7a5847: 75 67 jne 7a58b0 : return true; : : if (!TransactionIdDidCommit(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a5849: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a584c: e8 8f aa d1 ff callq 4c02e0 0.00 : 7a5851: 84 c0 test %al,%al 0.00 : 7a5853: 0f 84 20 02 00 00 je 7a5a79 : InvalidTransactionId); : return true; : } : : /* xmax transaction committed */ : SetHintBits(tuple, buffer, HEAP_XMAX_COMMITTED, 0.00 : 7a5859: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : 7a585c: ba 00 04 00 00 mov $0x400,%edx 0.00 : 7a5861: 44 89 f6 mov %r14d,%esi 0.01 : 7a5864: 48 89 df mov %rbx,%rdi 0.00 : 7a5867: e8 34 f2 ff ff callq 7a4aa0 0.00 : 7a586c: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* : * OK, the deleting transaction committed too ... but when? : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) 0.00 : 7a5870: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a5873: 4c 89 ee mov %r13,%rsi 0.00 : 7a5876: e8 85 fd ff ff callq 7a5600 0.00 : 7a587b: 84 c0 test %al,%al 0.00 : 7a587d: 0f 95 c0 setne %al 0.00 : 7a5880: eb 16 jmp 7a5898 0.00 : 7a5882: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * By here, the inserting transaction has committed - have to check : * when... : */ : if (!HeapTupleHeaderXminFrozen(tuple) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 1.48 : 7a5888: 8b 3b mov (%rbx),%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 8.78 : 7a588a: 4c 89 ee mov %r13,%rsi 0.11 : 7a588d: e8 6e fd ff ff callq 7a5600 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 0.56 : 7a5892: 84 c0 test %al,%al 0.00 : 7a5894: 74 6a je 7a5900 : } : : /* : * OK, the deleting transaction committed too ... but when? : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) 0.00 : 7a5896: 31 c0 xor %eax,%eax : return true; /* treat as still in progress */ : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 1.33 : 7a5898: 48 8b 1c 24 mov (%rsp),%rbx 0.05 : 7a589c: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.06 : 7a58a1: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.38 : 7a58a6: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.03 : 7a58ab: c9 leaveq 1.26 : 7a58ac: c3 retq 0.00 : 7a58ad: 0f 1f 00 nopl (%rax) : } : : /* : * OK, the deleting transaction committed too ... but when? : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1099 1.38 : 7a58b0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 7a58b5: eb e1 jmp 7a5898 0.00 : 7a58b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a58be: 00 00 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, : InvalidTransactionId); : } : } : /* Used by pre-9.0 binary upgrades */ : else if (tuple->t_infomask & HEAP_MOVED_IN) 0.00 : 7a58c0: 66 85 c9 test %cx,%cx 0.00 : 7a58c3: 79 4b jns 7a5910 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a58c5: 45 31 e4 xor %r12d,%r12d 0.00 : 7a58c8: 66 f7 c2 00 c0 test $0xc000,%dx 0.00 : 7a58cd: 0f 1f 00 nopl (%rax) 0.00 : 7a58d0: 0f 85 fa 00 00 00 jne 7a59d0 : : if (!TransactionIdIsCurrentTransactionId(xvac)) 0.00 : 7a58d6: 44 89 e7 mov %r12d,%edi 0.00 : 7a58d9: e8 c2 eb d1 ff callq 4c44a0 0.00 : 7a58de: 84 c0 test %al,%al 0.00 : 7a58e0: 0f 84 4a 01 00 00 je 7a5a30 : return false; /* deleted before scan started */ : } : else if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmin(tuple))) : return false; : else if (TransactionIdDidCommit(HeapTupleHeaderGetRawXmin(tuple))) : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.00 : 7a58e6: 0f b7 53 14 movzwl 0x14(%rbx),%edx : : /* : * By here, the inserting transaction has committed - have to check : * when... : */ : if (!HeapTupleHeaderXminFrozen(tuple) 0.00 : 7a58ea: 89 d0 mov %edx,%eax 0.00 : 7a58ec: 25 00 03 00 00 and $0x300,%eax 0.00 : 7a58f1: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 7a58f6: 0f 84 06 ff ff ff je 7a5802 0.00 : 7a58fc: eb 8a jmp 7a5888 0.00 : 7a58fe: 66 90 xchg %ax,%ax /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 1.39 : 7a5900: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.18 : 7a5904: e9 f9 fe ff ff jmpq 7a5802 0.00 : 7a5909: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : InvalidTransactionId); : return false; : } : } : } : else if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmin(tuple))) 0.00 : 7a5910: 8b 3b mov (%rbx),%edi 0.00 : 7a5912: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a5918: e8 83 eb d1 ff callq 4c44a0 0.00 : 7a591d: 84 c0 test %al,%al 0.00 : 7a591f: 90 nop 0.00 : 7a5920: 74 76 je 7a5998 : { : if (HeapTupleHeaderGetCmin(tuple) >= snapshot->curcid) 0.00 : 7a5922: 48 89 df mov %rbx,%rdi 0.00 : 7a5925: e8 96 eb ff ff callq 7a44c0 0.00 : 7a592a: 41 3b 45 2c cmp 0x2c(%r13),%eax 0.00 : 7a592e: 66 90 xchg %ax,%ax 0.00 : 7a5930: 0f 83 60 ff ff ff jae 7a5896 : return false; /* inserted after scan started */ : : if (tuple->t_infomask & HEAP_XMAX_INVALID) /* xid invalid */ 0.00 : 7a5936: 0f b7 53 14 movzwl 0x14(%rbx),%edx : return true; : : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)) /* not deleter */ 0.00 : 7a593a: f7 c2 80 08 00 00 test $0x880,%edx 0.00 : 7a5940: 0f 85 6a ff ff ff jne 7a58b0 0.00 : 7a5946: 89 d0 mov %edx,%eax 0.00 : 7a5948: 25 50 10 00 00 and $0x1050,%eax 0.00 : 7a594d: 83 f8 40 cmp $0x40,%eax 0.00 : 7a5950: 0f 84 5a ff ff ff je 7a58b0 : return true; : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 7a5956: 80 e6 10 and $0x10,%dh 0.00 : 7a5959: 0f 84 0a 01 00 00 je 7a5a69 : { : TransactionId xmax; : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a595f: 48 89 df mov %rbx,%rdi 0.00 : 7a5962: e8 b9 17 cf ff callq 497120 0.00 : 7a5967: 89 c7 mov %eax,%edi : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : /* updating subtransaction must have aborted */ : if (!TransactionIdIsCurrentTransactionId(xmax)) 0.00 : 7a5969: e8 32 eb d1 ff callq 4c44a0 0.00 : 7a596e: 84 c0 test %al,%al 0.00 : 7a5970: 0f 84 3a ff ff ff je 7a58b0 0.00 : 7a5976: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a597d: 00 00 00 : : if (!(tuple->t_infomask & HEAP_XMAX_COMMITTED)) : { : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmax(tuple))) : { : if (HeapTupleHeaderGetCmax(tuple) >= snapshot->curcid) 0.00 : 7a5980: 48 89 df mov %rbx,%rdi 0.00 : 7a5983: e8 58 eb ff ff callq 7a44e0 0.00 : 7a5988: 41 3b 45 2c cmp 0x2c(%r13),%eax 0.00 : 7a598c: 0f 93 c0 setae %al 0.00 : 7a598f: e9 04 ff ff ff jmpq 7a5898 0.00 : 7a5994: 0f 1f 40 00 nopl 0x0(%rax) : if (HeapTupleHeaderGetCmax(tuple) >= snapshot->curcid) : return true; /* deleted after scan started */ : else : return false; /* deleted before scan started */ : } : else if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmin(tuple))) 0.00 : 7a5998: 8b 3b mov (%rbx),%edi 0.00 : 7a599a: e8 11 c3 ed ff callq 681cb0 0.01 : 7a599f: 84 c0 test %al,%al 0.00 : 7a59a1: 0f 85 ef fe ff ff jne 7a5896 : return false; : else if (TransactionIdDidCommit(HeapTupleHeaderGetRawXmin(tuple))) 0.00 : 7a59a7: 8b 3b mov (%rbx),%edi 0.00 : 7a59a9: e8 32 a9 d1 ff callq 4c02e0 0.00 : 7a59ae: 84 c0 test %al,%al 0.00 : 7a59b0: 0f 84 9a 00 00 00 je 7a5a50 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.00 : 7a59b6: 8b 0b mov (%rbx),%ecx 0.00 : 7a59b8: ba 00 01 00 00 mov $0x100,%edx 0.00 : 7a59bd: 44 89 f6 mov %r14d,%esi 0.00 : 7a59c0: 48 89 df mov %rbx,%rdi 0.00 : 7a59c3: e8 d8 f0 ff ff callq 7a4aa0 0.00 : 7a59c8: e9 19 ff ff ff jmpq 7a58e6 0.00 : 7a59cd: 0f 1f 00 nopl (%rax) : } : } : /* Used by pre-9.0 binary upgrades */ : else if (tuple->t_infomask & HEAP_MOVED_IN) : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a59d0: 44 8b 63 08 mov 0x8(%rbx),%r12d 0.00 : 7a59d4: e9 fd fe ff ff jmpq 7a58d6 0.00 : 7a59d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : TransactionId xmax; : : /* already checked above */ : Assert(!HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a59e0: 48 89 df mov %rbx,%rdi 0.00 : 7a59e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a59e8: e8 33 17 cf ff callq 497120 : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : if (TransactionIdIsCurrentTransactionId(xmax)) 0.00 : 7a59ed: 89 c7 mov %eax,%edi : TransactionId xmax; : : /* already checked above */ : Assert(!HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a59ef: 41 89 c4 mov %eax,%r12d : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : if (TransactionIdIsCurrentTransactionId(xmax)) 0.00 : 7a59f2: e8 a9 ea d1 ff callq 4c44a0 0.00 : 7a59f7: 84 c0 test %al,%al 0.00 : 7a59f9: 75 85 jne 7a5980 : if (HeapTupleHeaderGetCmax(tuple) >= snapshot->curcid) : return true; /* deleted after scan started */ : else : return false; /* deleted before scan started */ : } : if (TransactionIdIsInProgress(xmax)) 0.00 : 7a59fb: 44 89 e7 mov %r12d,%edi 0.00 : 7a59fe: e8 ad c2 ed ff callq 681cb0 0.00 : 7a5a03: 84 c0 test %al,%al 0.00 : 7a5a05: 0f 85 a5 fe ff ff jne 7a58b0 : return true; : if (TransactionIdDidCommit(xmax)) 0.00 : 7a5a0b: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a0e: e8 cd a8 d1 ff callq 4c02e0 0.00 : 7a5a13: 84 c0 test %al,%al 0.00 : 7a5a15: 0f 84 95 fe ff ff je 7a58b0 : { : /* updating transaction committed, but when? */ : if (XidInMVCCSnapshot(xmax, snapshot)) 0.00 : 7a5a1b: 4c 89 ee mov %r13,%rsi 0.00 : 7a5a1e: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a21: e8 da fb ff ff callq 7a5600 0.00 : 7a5a26: 84 c0 test %al,%al 0.00 : 7a5a28: 0f 95 c0 setne %al 0.00 : 7a5a2b: e9 68 fe ff ff jmpq 7a5898 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); : : if (!TransactionIdIsCurrentTransactionId(xvac)) : { : if (TransactionIdIsInProgress(xvac)) 0.00 : 7a5a30: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a33: e8 78 c2 ed ff callq 681cb0 0.00 : 7a5a38: 84 c0 test %al,%al 0.00 : 7a5a3a: 0f 85 56 fe ff ff jne 7a5896 : return false; : if (TransactionIdDidCommit(xvac)) 0.00 : 7a5a40: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a43: e8 98 a8 d1 ff callq 4c02e0 0.00 : 7a5a48: 84 c0 test %al,%al 0.00 : 7a5a4a: 0f 85 87 fd ff ff jne 7a57d7 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, : HeapTupleHeaderGetRawXmin(tuple)); : else : { : /* it must have aborted or crashed */ : SetHintBits(tuple, buffer, HEAP_XMIN_INVALID, 0.00 : 7a5a50: 31 c9 xor %ecx,%ecx 0.00 : 7a5a52: ba 00 02 00 00 mov $0x200,%edx 0.00 : 7a5a57: 44 89 f6 mov %r14d,%esi 0.00 : 7a5a5a: 48 89 df mov %rbx,%rdi 0.00 : 7a5a5d: e8 3e f0 ff ff callq 7a4aa0 0.00 : 7a5a62: 31 c0 xor %eax,%eax : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) : return true; /* treat as still in progress */ : : return false; : } 0.00 : 7a5a64: e9 2f fe ff ff jmpq 7a5898 : return true; /* updated after scan started */ : else : return false; /* updated before scan started */ : } : : if (!TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a5a69: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a5a6c: e8 2f ea d1 ff callq 4c44a0 0.00 : 7a5a71: 84 c0 test %al,%al 0.00 : 7a5a73: 0f 85 07 ff ff ff jne 7a5980 : return true; : : if (!TransactionIdDidCommit(HeapTupleHeaderGetRawXmax(tuple))) : { : /* it must have aborted or crashed */ : SetHintBits(tuple, buffer, HEAP_XMAX_INVALID, 0.00 : 7a5a79: 31 c9 xor %ecx,%ecx 0.00 : 7a5a7b: ba 00 08 00 00 mov $0x800,%edx 0.00 : 7a5a80: 44 89 f6 mov %r14d,%esi 0.00 : 7a5a83: 48 89 df mov %rbx,%rdi 0.00 : 7a5a86: e8 15 f0 ff ff callq 7a4aa0 0.00 : 7a5a8b: b8 01 00 00 00 mov $0x1,%eax : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) : return true; /* treat as still in progress */ : : return false; : } 0.00 : 7a5a90: e9 03 fe ff ff jmpq 7a5898 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5450 6.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5450 6.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5450 3.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5451 3.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 3.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5270 2.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 2.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 2.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5436 2.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5421 2.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5435 2.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5403 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5386 1.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5493 1.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5451 1.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5424 1.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5386 1.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5451 1.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5399 1.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5478 1.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5386 1.47 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5411 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5418 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5494 1.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5494 1.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5432 1.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5451 1.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5433 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 1.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5403 1.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5424 1.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5259 1.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5441 0.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5478 0.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5437 0.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5441 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5290 0.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5386 0.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5494 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 0.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5494 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5435 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 0.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5466 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ad000 : : * data will be valid, he must call ExecMaterializeSlot on the : * result slot. : */ : TupleTableSlot * : ExecProject(ProjectionInfo *projInfo, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5386 2.01 : 5ad000: 55 push %rbp 0.70 : 5ad001: 48 89 e5 mov %rsp,%rbp 0.39 : 5ad004: 41 57 push %r15 1.92 : 5ad006: 41 56 push %r14 0.45 : 5ad008: 41 55 push %r13 0.49 : 5ad00a: 41 54 push %r12 0.11 : 5ad00c: 53 push %rbx 1.68 : 5ad00d: 48 89 fb mov %rdi,%rbx 0.17 : 5ad010: 48 83 ec 48 sub $0x48,%rsp 0.37 : 5ad014: 48 89 75 90 mov %rsi,-0x70(%rbp) : Assert(projInfo != NULL); : : /* : * get the projection info we want : */ : slot = projInfo->pi_slot; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5399 1.87 : 5ad018: 48 8b 47 18 mov 0x18(%rdi),%rax : econtext = projInfo->pi_exprContext; : : /* Assume single result row until proven otherwise */ : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5403 1.07 : 5ad01c: 48 85 f6 test %rsi,%rsi : Assert(projInfo != NULL); : : /* : * get the projection info we want : */ : slot = projInfo->pi_slot; 0.29 : 5ad01f: 48 89 45 b0 mov %rax,-0x50(%rbp) : econtext = projInfo->pi_exprContext; 0.43 : 5ad023: 4c 8b 77 10 mov 0x10(%rdi),%r14 : : /* Assume single result row until proven otherwise */ : if (isDone) 2.05 : 5ad027: 74 06 je 5ad02f : *isDone = ExprSingleResult; 0.03 : 5ad029: c7 06 00 00 00 00 movl $0x0,(%rsi) : /* : * Clear any former contents of the result slot. This makes it safe for : * us to use the slot's Datum/isnull arrays as workspace. (Also, we can : * return the slot as-is if we decide no rows can be projected.) : */ : ExecClearTuple(slot); 0.38 : 5ad02f: 48 8b 7d b0 mov -0x50(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5411 1.47 : 5ad033: e8 d8 70 00 00 callq 5b4110 : /* : * Force extraction of all input values that we'll need. The : * Var-extraction loops below depend on this, and we are also prefetching : * all attributes that will be referenced in the generic expressions. : */ : if (projInfo->pi_lastInnerVar > 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5418 1.39 : 5ad038: 8b 73 48 mov 0x48(%rbx),%esi 0.41 : 5ad03b: 85 f6 test %esi,%esi 0.00 : 5ad03d: 7e 09 jle 5ad048 : slot_getsomeattrs(econtext->ecxt_innertuple, 0.06 : 5ad03f: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.04 : 5ad043: e8 18 22 ec ff callq 46f260 : projInfo->pi_lastInnerVar); : if (projInfo->pi_lastOuterVar > 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5421 2.14 : 5ad048: 8b 73 4c mov 0x4c(%rbx),%esi 0.35 : 5ad04b: 85 f6 test %esi,%esi 0.00 : 5ad04d: 7e 09 jle 5ad058 : slot_getsomeattrs(econtext->ecxt_outertuple, 0.15 : 5ad04f: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.10 : 5ad053: e8 08 22 ec ff callq 46f260 : projInfo->pi_lastOuterVar); : if (projInfo->pi_lastScanVar > 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5424 1.05 : 5ad058: 8b 73 50 mov 0x50(%rbx),%esi 1.94 : 5ad05b: 85 f6 test %esi,%esi 0.00 : 5ad05d: 7e 09 jle 5ad068 : slot_getsomeattrs(econtext->ecxt_scantuple, 0.00 : 5ad05f: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 5ad063: e8 f8 21 ec ff callq 46f260 : : /* : * Assign simple Vars to result by direct extraction of fields from source : * slots ... a mite ugly, but fast ... : */ : numSimpleVars = projInfo->pi_numSimpleVars; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5432 1.30 : 5ad068: 44 8b 43 2c mov 0x2c(%rbx),%r8d : if (numSimpleVars > 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5433 1.25 : 5ad06c: 45 85 c0 test %r8d,%r8d 0.00 : 5ad06f: 7e 5d jle 5ad0ce : bool *isnull = slot->tts_isnull; : int *varSlotOffsets = projInfo->pi_varSlotOffsets; : int *varNumbers = projInfo->pi_varNumbers; : int i; : : if (projInfo->pi_directMap) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5441 1.04 : 5ad071: 80 7b 28 00 cmpb $0x0,0x28(%rbx) : * slots ... a mite ugly, but fast ... : */ : numSimpleVars = projInfo->pi_numSimpleVars; : if (numSimpleVars > 0) : { : Datum *values = slot->tts_values; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5435 2.10 : 5ad075: 48 8b 55 b0 mov -0x50(%rbp),%rdx : bool *isnull = slot->tts_isnull; : int *varSlotOffsets = projInfo->pi_varSlotOffsets; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5437 0.86 : 5ad079: 4c 8b 5b 30 mov 0x30(%rbx),%r11 : int *varNumbers = projInfo->pi_varNumbers; 0.08 : 5ad07d: 4c 8b 53 38 mov 0x38(%rbx),%r10 : * slots ... a mite ugly, but fast ... : */ : numSimpleVars = projInfo->pi_numSimpleVars; : if (numSimpleVars > 0) : { : Datum *values = slot->tts_values; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5435 0.65 : 5ad081: 4c 8b 6a 28 mov 0x28(%rdx),%r13 : bool *isnull = slot->tts_isnull; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5436 2.22 : 5ad085: 4c 8b 62 30 mov 0x30(%rdx),%r12 : int *varSlotOffsets = projInfo->pi_varSlotOffsets; : int *varNumbers = projInfo->pi_varNumbers; : int i; : : if (projInfo->pi_directMap) 0.40 : 5ad089: 0f 84 e1 01 00 00 je 5ad270 0.03 : 5ad08f: 4c 89 df mov %r11,%rdi 0.45 : 5ad092: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5441 0.79 : 5ad094: 0f 1f 40 00 nopl 0x0(%rax) : { : /* especially simple case where vars go to output in order */ : for (i = 0; i < numSimpleVars; i++) : { : char *slotptr = ((char *) econtext) + varSlotOffsets[i]; : TupleTableSlot *varSlot = *((TupleTableSlot **) slotptr); 0.17 : 5ad098: 48 63 07 movslq (%rdi),%rax : int varNumber = varNumbers[i] - 1; : : values[i] = varSlot->tts_values[varNumber]; : isnull[i] = varSlot->tts_isnull[varNumber]; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5451 3.68 : 5ad09b: 48 83 c7 04 add $0x4,%rdi : { : /* especially simple case where vars go to output in order */ : for (i = 0; i < numSimpleVars; i++) : { : char *slotptr = ((char *) econtext) + varSlotOffsets[i]; : TupleTableSlot *varSlot = *((TupleTableSlot **) slotptr); 0.09 : 5ad09f: 49 8b 0c 06 mov (%r14,%rax,1),%rcx : int varNumber = varNumbers[i] - 1; : : values[i] = varSlot->tts_values[varNumber]; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5450 6.96 : 5ad0a3: 41 8b 04 b2 mov (%r10,%rsi,4),%eax 0.07 : 5ad0a7: 48 8b 51 28 mov 0x28(%rcx),%rdx 6.43 : 5ad0ab: 83 e8 01 sub $0x1,%eax 0.00 : 5ad0ae: 48 98 cltq 0.01 : 5ad0b0: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 7.76 : 5ad0b4: 49 89 54 f5 00 mov %rdx,0x0(%r13,%rsi,8) : isnull[i] = varSlot->tts_isnull[varNumber]; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5451 1.90 : 5ad0b9: 48 8b 51 30 mov 0x30(%rcx),%rdx 0.07 : 5ad0bd: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 1.28 : 5ad0c1: 41 88 04 34 mov %al,(%r12,%rsi,1) 1.96 : 5ad0c5: 48 83 c6 01 add $0x1,%rsi : int i; : : if (projInfo->pi_directMap) : { : /* especially simple case where vars go to output in order */ : for (i = 0; i < numSimpleVars; i++) 0.04 : 5ad0c9: 41 39 f0 cmp %esi,%r8d 0.00 : 5ad0cc: 7f ca jg 5ad098 : * If there are any generic expressions, evaluate them. It's possible : * that there are set-returning functions in such expressions; if so and : * we have reached the end of the set, we return the result slot, which we : * already marked empty. : */ : if (projInfo->pi_targetlist) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5478 0.97 : 5ad0ce: 48 8b 43 08 mov 0x8(%rbx),%rax 1.84 : 5ad0d2: 48 85 c0 test %rax,%rax 0.19 : 5ad0d5: 48 89 45 98 mov %rax,-0x68(%rbp) 0.19 : 5ad0d9: 0f 84 fc 00 00 00 je 5ad1db : { : if (!ExecTargetList(projInfo->pi_targetlist, 0.39 : 5ad0df: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.09 : 5ad0e3: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.07 : 5ad0e7: 4c 8b 7b 20 mov 0x20(%rbx),%r15 0.19 : 5ad0eb: 48 8b 52 30 mov 0x30(%rdx),%rdx 0.39 : 5ad0ef: 48 89 55 a0 mov %rdx,-0x60(%rbp) : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.19 : 5ad0f3: 48 8b 15 66 d7 60 00 mov 0x60d766(%rip),%rdx # bba860 0.10 : 5ad0fa: 48 8b 40 28 mov 0x28(%rax),%rax 0.20 : 5ad0fe: 48 89 55 c8 mov %rdx,-0x38(%rbp) 0.43 : 5ad102: 48 89 45 a8 mov %rax,-0x58(%rbp) : : CurrentMemoryContext = context; 0.31 : 5ad106: 49 8b 46 28 mov 0x28(%r14),%rax 0.17 : 5ad10a: 48 89 05 4f d7 60 00 mov %rax,0x60d74f(%rip) # bba860 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.10 : 5ad111: 48 8b 45 98 mov -0x68(%rbp),%rax 0.49 : 5ad115: 4c 8b 68 08 mov 0x8(%rax),%r13 : /* : * evaluate all the expressions in the target list : */ : haveDoneSets = false; /* any exhausted set exprs in tlist? */ : : foreach(tl, targetlist) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5259 1.05 : 5ad119: 4d 85 ed test %r13,%r13 0.00 : 5ad11c: 0f 84 ae 00 00 00 je 5ad1d0 0.37 : 5ad122: c6 45 c7 00 movb $0x0,-0x39(%rbp) 0.05 : 5ad126: eb 15 jmp 5ad13d 0.00 : 5ad128: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ad12f: 00 : /* We have a set-valued expression in the tlist */ : if (isDone == NULL) : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("set-valued function called in context that cannot accept a set"))); : if (itemIsDone[resind] == ExprMultipleResult) 0.00 : 5ad130: c6 45 c7 01 movb $0x1,-0x39(%rbp) : /* : * evaluate all the expressions in the target list : */ : haveDoneSets = false; /* any exhausted set exprs in tlist? */ : : foreach(tl, targetlist) 0.04 : 5ad134: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 5ad138: 4d 85 ed test %r13,%r13 0.00 : 5ad13b: 74 63 je 5ad1a0 : { : GenericExprState *gstate = (GenericExprState *) lfirst(tl); 0.18 : 5ad13d: 49 8b 55 00 mov 0x0(%r13),%rdx : TargetEntry *tle = (TargetEntry *) gstate->xprstate.expr; : AttrNumber resind = tle->resno - 1; : : values[resind] = ExecEvalExpr(gstate->arg, /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5265 2.44 : 5ad141: 4c 89 f6 mov %r14,%rsi 0.04 : 5ad144: 48 8b 42 08 mov 0x8(%rdx),%rax 2.58 : 5ad148: 0f b7 58 10 movzwl 0x10(%rax),%ebx 3.38 : 5ad14c: 48 8b 42 18 mov 0x18(%rdx),%rax 0.02 : 5ad150: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 5ad154: 48 89 c7 mov %rax,%rdi 0.01 : 5ad157: 83 eb 01 sub $0x1,%ebx 0.59 : 5ad15a: 48 0f bf db movswq %bx,%rbx 0.67 : 5ad15e: 4d 8d 24 9f lea (%r15,%rbx,4),%r12 0.63 : 5ad162: 48 01 da add %rbx,%rdx 0.20 : 5ad165: 4c 89 e1 mov %r12,%rcx 0.58 : 5ad168: ff 50 10 callq *0x10(%rax) 0.69 : 5ad16b: 48 8b 55 a8 mov -0x58(%rbp),%rdx 1.20 : 5ad16f: 48 89 04 da mov %rax,(%rdx,%rbx,8) : econtext, : &isnull[resind], : &itemIsDone[resind]); : : if (itemIsDone[resind] != ExprSingleResult) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5270 3.08 : 5ad173: 41 8b 04 24 mov (%r12),%eax 0.05 : 5ad177: 85 c0 test %eax,%eax 0.00 : 5ad179: 74 b9 je 5ad134 : { : /* We have a set-valued expression in the tlist */ : if (isDone == NULL) 0.00 : 5ad17b: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 5ad180: 0f 84 fd 01 00 00 je 5ad383 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("set-valued function called in context that cannot accept a set"))); : if (itemIsDone[resind] == ExprMultipleResult) 0.00 : 5ad186: 83 e8 01 sub $0x1,%eax 0.00 : 5ad189: 75 a5 jne 5ad130 : { : /* we have undone sets in the tlist, set flag */ : *isDone = ExprMultipleResult; 0.00 : 5ad18b: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 5ad18f: c7 00 01 00 00 00 movl $0x1,(%rax) : /* : * evaluate all the expressions in the target list : */ : haveDoneSets = false; /* any exhausted set exprs in tlist? */ : : foreach(tl, targetlist) 0.00 : 5ad195: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 5ad199: 4d 85 ed test %r13,%r13 0.00 : 5ad19c: 75 9f jne 5ad13d 0.00 : 5ad19e: 66 90 xchg %ax,%ax : haveDoneSets = true; : } : } : } : : if (haveDoneSets) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5290 0.77 : 5ad1a0: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) 0.01 : 5ad1a4: 74 2a je 5ad1d0 : { : /* : * note: can't get here unless we verified isDone != NULL : */ : if (*isDone == ExprSingleResult) 0.00 : 5ad1a6: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 5ad1aa: 8b 02 mov (%rdx),%eax 0.00 : 5ad1ac: 85 c0 test %eax,%eax 0.00 : 5ad1ae: 0f 84 bc 01 00 00 je 5ad370 0.00 : 5ad1b4: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ad1b8: 4c 8b 6a 08 mov 0x8(%rdx),%r13 : { : /* : * We have some done and some undone sets. Restart the done ones : * so that we can deliver a tuple (if possible). : */ : foreach(tl, targetlist) 0.00 : 5ad1bc: 4d 85 ed test %r13,%r13 0.00 : 5ad1bf: 75 6f jne 5ad230 : * have to cycle the nonempty sets to completion, else resources : * will not be released from subplans etc. : * : * XXX is that still necessary? : */ : if (*isDone == ExprEndResult) 0.00 : 5ad1c1: 83 f8 02 cmp $0x2,%eax 0.00 : 5ad1c4: 0f 84 02 01 00 00 je 5ad2cc 0.00 : 5ad1ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.69 : 5ad1d0: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 5ad1d4: 48 89 05 85 d6 60 00 mov %rax,0x60d685(%rip) # bba860 : : /* : * Successfully formed a result row. Mark the result slot as containing a : * valid virtual tuple. : */ : return ExecStoreVirtualTuple(slot); 0.22 : 5ad1db: 48 8b 7d b0 mov -0x50(%rbp),%rdi : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5494 1.39 : 5ad1df: 48 83 c4 48 add $0x48,%rsp 0.70 : 5ad1e3: 5b pop %rbx 0.26 : 5ad1e4: 41 5c pop %r12 1.33 : 5ad1e6: 41 5d pop %r13 0.67 : 5ad1e8: 41 5e pop %r14 0.00 : 5ad1ea: 41 5f pop %r15 0.24 : 5ad1ec: c9 leaveq : : /* : * Successfully formed a result row. Mark the result slot as containing a : * valid virtual tuple. : */ : return ExecStoreVirtualTuple(slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5493 1.96 : 5ad1ed: e9 2e 68 00 00 jmpq 5b3a20 0.00 : 5ad1f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : TargetEntry *tle = (TargetEntry *) gstate->xprstate.expr; : AttrNumber resind = tle->resno - 1; : : if (itemIsDone[resind] == ExprEndResult) : { : values[resind] = ExecEvalExpr(gstate->arg, 0.00 : 5ad1f8: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 5ad1fc: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 5ad200: 4c 89 e1 mov %r12,%rcx 0.00 : 5ad203: 4c 89 f6 mov %r14,%rsi 0.00 : 5ad206: 48 01 da add %rbx,%rdx 0.00 : 5ad209: 48 89 c7 mov %rax,%rdi 0.00 : 5ad20c: ff 50 10 callq *0x10(%rax) 0.00 : 5ad20f: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5ad213: 48 89 04 da mov %rax,(%rdx,%rbx,8) : econtext, : &isnull[resind], : &itemIsDone[resind]); : : if (itemIsDone[resind] == ExprEndResult) 0.00 : 5ad217: 41 83 3c 24 02 cmpl $0x2,(%r12) 0.00 : 5ad21c: 0f 84 a0 00 00 00 je 5ad2c2 : { : /* : * We have some done and some undone sets. Restart the done ones : * so that we can deliver a tuple (if possible). : */ : foreach(tl, targetlist) 0.00 : 5ad222: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 5ad226: 4d 85 ed test %r13,%r13 0.00 : 5ad229: 74 2c je 5ad257 0.00 : 5ad22b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : GenericExprState *gstate = (GenericExprState *) lfirst(tl); 0.00 : 5ad230: 49 8b 55 00 mov 0x0(%r13),%rdx : TargetEntry *tle = (TargetEntry *) gstate->xprstate.expr; : AttrNumber resind = tle->resno - 1; : : if (itemIsDone[resind] == ExprEndResult) 0.00 : 5ad234: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5ad238: 0f b7 40 10 movzwl 0x10(%rax),%eax 0.00 : 5ad23c: 83 e8 01 sub $0x1,%eax 0.00 : 5ad23f: 48 0f bf d8 movswq %ax,%rbx 0.00 : 5ad243: 4d 8d 24 9f lea (%r15,%rbx,4),%r12 0.00 : 5ad247: 41 83 3c 24 02 cmpl $0x2,(%r12) 0.00 : 5ad24c: 74 aa je 5ad1f8 : { : /* : * We have some done and some undone sets. Restart the done ones : * so that we can deliver a tuple (if possible). : */ : foreach(tl, targetlist) 0.00 : 5ad24e: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 5ad252: 4d 85 ed test %r13,%r13 0.00 : 5ad255: 75 d9 jne 5ad230 0.00 : 5ad257: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 5ad25b: 8b 02 mov (%rdx),%eax : * have to cycle the nonempty sets to completion, else resources : * will not be released from subplans etc. : * : * XXX is that still necessary? : */ : if (*isDone == ExprEndResult) 0.00 : 5ad25d: 83 f8 02 cmp $0x2,%eax 0.00 : 5ad260: 0f 85 6a ff ff ff jne 5ad1d0 0.00 : 5ad266: eb 64 jmp 5ad2cc 0.00 : 5ad268: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ad26f: 00 : } : } : else : { : /* we have to pay attention to varOutputCols[] */ : int *varOutputCols = projInfo->pi_varOutputCols; 0.01 : 5ad270: 4c 8b 4b 40 mov 0x40(%rbx),%r9 0.00 : 5ad274: 31 ff xor %edi,%edi 0.08 : 5ad276: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ad27d: 00 00 00 : : for (i = 0; i < numSimpleVars; i++) : { : char *slotptr = ((char *) econtext) + varSlotOffsets[i]; : TupleTableSlot *varSlot = *((TupleTableSlot **) slotptr); 0.19 : 5ad280: 49 63 04 bb movslq (%r11,%rdi,4),%rax : int varNumber = varNumbers[i] - 1; : int varOutputCol = varOutputCols[i] - 1; : : values[varOutputCol] = varSlot->tts_values[varNumber]; 0.07 : 5ad284: 41 8b 0c b9 mov (%r9,%rdi,4),%ecx 0.05 : 5ad288: 83 e9 01 sub $0x1,%ecx : int *varOutputCols = projInfo->pi_varOutputCols; : : for (i = 0; i < numSimpleVars; i++) : { : char *slotptr = ((char *) econtext) + varSlotOffsets[i]; : TupleTableSlot *varSlot = *((TupleTableSlot **) slotptr); 0.09 : 5ad28b: 49 8b 34 06 mov (%r14,%rax,1),%rsi : int varNumber = varNumbers[i] - 1; : int varOutputCol = varOutputCols[i] - 1; : : values[varOutputCol] = varSlot->tts_values[varNumber]; 0.25 : 5ad28f: 41 8b 04 ba mov (%r10,%rdi,4),%eax 0.01 : 5ad293: 48 63 c9 movslq %ecx,%rcx : isnull[varOutputCol] = varSlot->tts_isnull[varNumber]; 0.01 : 5ad296: 48 83 c7 01 add $0x1,%rdi : char *slotptr = ((char *) econtext) + varSlotOffsets[i]; : TupleTableSlot *varSlot = *((TupleTableSlot **) slotptr); : int varNumber = varNumbers[i] - 1; : int varOutputCol = varOutputCols[i] - 1; : : values[varOutputCol] = varSlot->tts_values[varNumber]; 0.05 : 5ad29a: 48 8b 56 28 mov 0x28(%rsi),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5466 0.53 : 5ad29e: 83 e8 01 sub $0x1,%eax : else : { : /* we have to pay attention to varOutputCols[] */ : int *varOutputCols = projInfo->pi_varOutputCols; : : for (i = 0; i < numSimpleVars; i++) 0.01 : 5ad2a1: 41 39 f8 cmp %edi,%r8d : char *slotptr = ((char *) econtext) + varSlotOffsets[i]; : TupleTableSlot *varSlot = *((TupleTableSlot **) slotptr); : int varNumber = varNumbers[i] - 1; : int varOutputCol = varOutputCols[i] - 1; : : values[varOutputCol] = varSlot->tts_values[varNumber]; 0.02 : 5ad2a4: 48 98 cltq 0.07 : 5ad2a6: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.46 : 5ad2aa: 49 89 54 cd 00 mov %rdx,0x0(%r13,%rcx,8) : isnull[varOutputCol] = varSlot->tts_isnull[varNumber]; 0.31 : 5ad2af: 48 8b 56 30 mov 0x30(%rsi),%rdx 0.00 : 5ad2b3: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.09 : 5ad2b7: 41 88 04 0c mov %al,(%r12,%rcx,1) : else : { : /* we have to pay attention to varOutputCols[] */ : int *varOutputCols = projInfo->pi_varOutputCols; : : for (i = 0; i < numSimpleVars; i++) 0.23 : 5ad2bb: 7f c3 jg 5ad280 0.00 : 5ad2bd: e9 0c fe ff ff jmpq 5ad0ce : { : /* : * Oh dear, this item is returning an empty set. Guess : * we can't make a tuple after all. : */ : *isDone = ExprEndResult; 0.00 : 5ad2c2: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 5ad2c6: c7 00 02 00 00 00 movl $0x2,(%rax) 0.00 : 5ad2cc: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ad2d0: 48 8b 40 08 mov 0x8(%rax),%rax : * : * XXX is that still necessary? : */ : if (*isDone == ExprEndResult) : { : foreach(tl, targetlist) 0.00 : 5ad2d4: 48 85 c0 test %rax,%rax 0.00 : 5ad2d7: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 5ad2db: 74 6c je 5ad349 0.00 : 5ad2dd: 0f 1f 00 nopl (%rax) : { : GenericExprState *gstate = (GenericExprState *) lfirst(tl); 0.00 : 5ad2e0: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 5ad2e4: 48 8b 12 mov (%rdx),%rdx 0.00 : 5ad2e7: 48 89 55 b8 mov %rdx,-0x48(%rbp) : TargetEntry *tle = (TargetEntry *) gstate->xprstate.expr; : AttrNumber resind = tle->resno - 1; : : while (itemIsDone[resind] == ExprMultipleResult) 0.00 : 5ad2eb: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5ad2ef: 0f b7 40 10 movzwl 0x10(%rax),%eax 0.00 : 5ad2f3: 83 e8 01 sub $0x1,%eax 0.00 : 5ad2f6: 48 0f bf c0 movswq %ax,%rax 0.00 : 5ad2fa: 49 8d 1c 87 lea (%r15,%rax,4),%rbx 0.00 : 5ad2fe: 83 3b 01 cmpl $0x1,(%rbx) 0.00 : 5ad301: 75 35 jne 5ad338 0.00 : 5ad303: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5ad307: 4c 8b 65 a0 mov -0x60(%rbp),%r12 0.00 : 5ad30b: 4c 8d 2c c2 lea (%rdx,%rax,8),%r13 0.00 : 5ad30f: 49 01 c4 add %rax,%r12 0.00 : 5ad312: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : values[resind] = ExecEvalExpr(gstate->arg, 0.00 : 5ad318: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 5ad31c: 48 89 d9 mov %rbx,%rcx 0.00 : 5ad31f: 4c 89 f6 mov %r14,%rsi 0.00 : 5ad322: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 5ad326: 4c 89 e2 mov %r12,%rdx 0.00 : 5ad329: 48 89 c7 mov %rax,%rdi 0.00 : 5ad32c: ff 50 10 callq *0x10(%rax) 0.00 : 5ad32f: 49 89 45 00 mov %rax,0x0(%r13) : { : GenericExprState *gstate = (GenericExprState *) lfirst(tl); : TargetEntry *tle = (TargetEntry *) gstate->xprstate.expr; : AttrNumber resind = tle->resno - 1; : : while (itemIsDone[resind] == ExprMultipleResult) 0.00 : 5ad333: 83 3b 01 cmpl $0x1,(%rbx) 0.00 : 5ad336: 74 e0 je 5ad318 : * : * XXX is that still necessary? : */ : if (*isDone == ExprEndResult) : { : foreach(tl, targetlist) 0.00 : 5ad338: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 5ad33c: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5ad340: 48 85 c0 test %rax,%rax 0.00 : 5ad343: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 5ad347: 75 97 jne 5ad2e0 0.00 : 5ad349: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 5ad34d: 48 89 15 0c d5 60 00 mov %rdx,0x60d50c(%rip) # bba860 : /* : * Successfully formed a result row. Mark the result slot as containing a : * valid virtual tuple. : */ : return ExecStoreVirtualTuple(slot); : } 0.00 : 5ad354: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 5ad358: 48 83 c4 48 add $0x48,%rsp 0.00 : 5ad35c: 5b pop %rbx 0.00 : 5ad35d: 41 5c pop %r12 0.00 : 5ad35f: 41 5d pop %r13 0.00 : 5ad361: 41 5e pop %r14 0.00 : 5ad363: 41 5f pop %r15 0.00 : 5ad365: c9 leaveq 0.00 : 5ad366: c3 retq 0.00 : 5ad367: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ad36e: 00 00 : if (*isDone == ExprSingleResult) : { : /* : * all sets are done, so report that tlist expansion is complete. : */ : *isDone = ExprEndResult; 0.00 : 5ad370: c7 02 02 00 00 00 movl $0x2,(%rdx) 0.00 : 5ad376: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 5ad37a: 48 89 05 df d4 60 00 mov %rax,0x60d4df(%rip) # bba860 0.00 : 5ad381: eb d1 jmp 5ad354 : : if (itemIsDone[resind] != ExprSingleResult) : { : /* We have a set-valued expression in the tlist */ : if (isDone == NULL) : ereport(ERROR, 0.00 : 5ad383: 45 31 c0 xor %r8d,%r8d 0.00 : 5ad386: b9 f0 ad 88 00 mov $0x88adf0,%ecx 0.00 : 5ad38b: ba 9c 14 00 00 mov $0x149c,%edx 0.00 : 5ad390: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5ad395: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ad39a: e8 21 d7 1c 00 callq 77aac0 0.00 : 5ad39f: 84 c0 test %al,%al 0.00 : 5ad3a1: 75 05 jne 5ad3a8 0.00 : 5ad3a3: e8 28 c1 eb ff callq 4694d0 0.00 : 5ad3a8: bf 30 b3 87 00 mov $0x87b330,%edi 0.00 : 5ad3ad: 31 c0 xor %eax,%eax 0.00 : 5ad3af: e8 ec f4 1c 00 callq 77c8a0 0.00 : 5ad3b4: bf 40 04 00 00 mov $0x440,%edi 0.00 : 5ad3b9: 89 c3 mov %eax,%ebx 0.00 : 5ad3bb: e8 90 f9 1c 00 callq 77cd50 0.00 : 5ad3c0: 89 de mov %ebx,%esi 0.00 : 5ad3c2: 89 c7 mov %eax,%edi 0.00 : 5ad3c4: 31 c0 xor %eax,%eax 0.00 : 5ad3c6: e8 15 d2 1c 00 callq 77a5e0 0.00 : 5ad3cb: eb d6 jmp 5ad3a3 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:398 7.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:264 5.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:292 4.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:286 3.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:269 2.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:287 2.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:399 2.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:396 1.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:284 1.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:260 1.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:265 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:275 1.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:401 1.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:289 1.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:389 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:286 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:401 1.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:265 1.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:292 1.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:401 1.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:393 1.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:264 1.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:222 1.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:264 1.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:284 1.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:286 1.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:289 1.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:394 1.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:394 1.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:293 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:214 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:392 1.16 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:391 1.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:206 0.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:264 0.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:267 0.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:214 0.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:399 0.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:267 0.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:275 0.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:399 0.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:260 0.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:266 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:237 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:239 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:275 0.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:260 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:222 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:306 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:399 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:214 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:259 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005baf80 : : * Retrieve next tuple from the BitmapHeapScan node's currentRelation : * ---------------------------------------------------------------- : */ : static TupleTableSlot * : BitmapHeapNext(BitmapHeapScanState *node) : { 0.25 : 5baf80: 55 push %rbp 0.22 : 5baf81: 48 89 e5 mov %rsp,%rbp 0.16 : 5baf84: 41 57 push %r15 0.22 : 5baf86: 41 56 push %r14 0.12 : 5baf88: 41 55 push %r13 0.08 : 5baf8a: 41 54 push %r12 0.10 : 5baf8c: 53 push %rbx 0.13 : 5baf8d: 48 89 fb mov %rdi,%rbx 0.14 : 5baf90: 48 81 ec d8 00 00 00 sub $0xd8,%rsp : TupleTableSlot *slot; : : /* : * extract necessary information from index scan node : */ : econtext = node->ss.ps.ps_ExprContext; 0.18 : 5baf97: 48 8b 47 60 mov 0x60(%rdi),%rax 0.14 : 5baf9b: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : slot = node->ss.ss_ScanTupleSlot; 0.19 : 5bafa2: 48 8b 97 88 00 00 00 mov 0x88(%rdi),%rdx 0.03 : 5bafa9: 48 89 95 38 ff ff ff mov %rdx,-0xc8(%rbp) : scan = node->ss.ss_currentScanDesc; : tbm = node->tbm; : tbmiterator = node->tbmiterator; 0.16 : 5bafb0: 48 8b 8f a0 00 00 00 mov 0xa0(%rdi),%rcx : /* : * extract necessary information from index scan node : */ : econtext = node->ss.ps.ps_ExprContext; : slot = node->ss.ss_ScanTupleSlot; : scan = node->ss.ss_currentScanDesc; 0.09 : 5bafb7: 4c 8b a7 80 00 00 00 mov 0x80(%rdi),%r12 : tbm = node->tbm; : tbmiterator = node->tbmiterator; 0.15 : 5bafbe: 48 89 8d 30 ff ff ff mov %rcx,-0xd0(%rbp) : * desired prefetch distance, which starts small and increases up to the : * GUC-controlled maximum, target_prefetch_pages. This is to avoid doing : * a lot of prefetching in a scan that stops after a few tuples because of : * a LIMIT. : */ : if (tbm == NULL) 0.16 : 5bafc5: 48 83 bf 98 00 00 00 cmpq $0x0,0x98(%rdi) 0.00 : 5bafcc: 00 : econtext = node->ss.ps.ps_ExprContext; : slot = node->ss.ss_ScanTupleSlot; : scan = node->ss.ss_currentScanDesc; : tbm = node->tbm; : tbmiterator = node->tbmiterator; : tbmres = node->tbmres; 0.08 : 5bafcd: 48 8b 97 a8 00 00 00 mov 0xa8(%rdi),%rdx : #ifdef USE_PREFETCH : prefetch_iterator = node->prefetch_iterator; 0.10 : 5bafd4: 4c 8b bf c0 00 00 00 mov 0xc0(%rdi),%r15 : * desired prefetch distance, which starts small and increases up to the : * GUC-controlled maximum, target_prefetch_pages. This is to avoid doing : * a lot of prefetching in a scan that stops after a few tuples because of : * a LIMIT. : */ : if (tbm == NULL) 0.16 : 5bafdb: 0f 84 11 06 00 00 je 5bb5f2 : : /* : * Set up the result slot to point to this tuple. Note that the slot : * acquires a pin on the buffer. : */ : ExecStoreTuple(&scan->rs_ctup, 0.06 : 5bafe1: 49 8d 44 24 48 lea 0x48(%r12),%rax : ItemId lp; : : /* : * Get next page of results if needed : */ : if (tbmres == NULL) 0.07 : 5bafe6: 48 85 d2 test %rdx,%rdx : : /* : * Set up the result slot to point to this tuple. Note that the slot : * acquires a pin on the buffer. : */ : ExecStoreTuple(&scan->rs_ctup, 0.07 : 5bafe9: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : ItemId lp; : : /* : * Get next page of results if needed : */ : if (tbmres == NULL) 0.22 : 5baff0: 0f 84 c4 01 00 00 je 5bb1ba 0.06 : 5baff6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5baffd: 00 00 00 : else : { : /* : * Continuing in previously obtained page; advance rs_cindex : */ : scan->rs_cindex++; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:206 1.11 : 5bb000: 41 83 44 24 70 01 addl $0x1,0x70(%r12) : : /* : * Try to prefetch at least a few pages even before we get to the : * second page if we don't stop reading after the first tuple. : */ : if (node->prefetch_target < target_prefetch_pages) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:214 0.51 : 5bb006: 49 89 d5 mov %rdx,%r13 0.16 : 5bb009: 8b 83 cc 00 00 00 mov 0xcc(%rbx),%eax 1.21 : 5bb00f: 3b 05 4f 20 5c 00 cmp 0x5c204f(%rip),%eax # b7d064 0.87 : 5bb015: 7d 0c jge 5bb023 : node->prefetch_target++; 0.00 : 5bb017: 83 c0 01 add $0x1,%eax 0.00 : 5bb01a: 49 89 d5 mov %rdx,%r13 0.00 : 5bb01d: 89 83 cc 00 00 00 mov %eax,0xcc(%rbx) : } : : /* : * Out of range? If so, nothing more to look at on this page : */ : if (scan->rs_cindex < 0 || scan->rs_cindex >= scan->rs_ntuples) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:222 1.37 : 5bb023: 41 8b 44 24 70 mov 0x70(%r12),%eax 0.46 : 5bb028: 85 c0 test %eax,%eax 0.00 : 5bb02a: 0f 88 e0 01 00 00 js 5bb210 0.58 : 5bb030: 41 3b 44 24 78 cmp 0x78(%r12),%eax 0.00 : 5bb035: 0f 8d d5 01 00 00 jge 5bb210 : * to avoid having prefetching interfere with the main I/O. Also, this : * should happen only when we have determined there is still something : * to do on the current page, else we may uselessly prefetch the same : * page we are just about to request for real. : */ : if (prefetch_iterator) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:237 0.73 : 5bb03b: 4d 85 ff test %r15,%r15 0.00 : 5bb03e: 74 55 je 5bb095 : { : while (node->prefetch_pages < node->prefetch_target) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:239 0.73 : 5bb040: 8b 83 cc 00 00 00 mov 0xcc(%rbx),%eax 0.06 : 5bb046: 3b 83 c8 00 00 00 cmp 0xc8(%rbx),%eax 0.00 : 5bb04c: 7f 24 jg 5bb072 0.46 : 5bb04e: eb 45 jmp 5bb095 : /* No more pages to prefetch */ : tbm_end_iterate(prefetch_iterator); : node->prefetch_iterator = prefetch_iterator = NULL; : break; : } : node->prefetch_pages++; 0.04 : 5bb050: 83 83 c8 00 00 00 01 addl $0x1,0xc8(%rbx) : PrefetchBuffer(scan->rs_rd, MAIN_FORKNUM, tbmpre->blockno); 0.02 : 5bb057: 31 f6 xor %esi,%esi 0.00 : 5bb059: 8b 10 mov (%rax),%edx 0.01 : 5bb05b: 49 8b 3c 24 mov (%r12),%rdi 0.01 : 5bb05f: e8 6c b7 0b 00 callq 6767d0 : * to do on the current page, else we may uselessly prefetch the same : * page we are just about to request for real. : */ : if (prefetch_iterator) : { : while (node->prefetch_pages < node->prefetch_target) 0.04 : 5bb064: 8b 83 c8 00 00 00 mov 0xc8(%rbx),%eax 0.03 : 5bb06a: 3b 83 cc 00 00 00 cmp 0xcc(%rbx),%eax 0.00 : 5bb070: 7d 23 jge 5bb095 : { : TBMIterateResult *tbmpre = tbm_iterate(prefetch_iterator); 0.00 : 5bb072: 4c 89 ff mov %r15,%rdi 0.02 : 5bb075: e8 d6 82 02 00 callq 5e3350 : : if (tbmpre == NULL) 0.02 : 5bb07a: 48 85 c0 test %rax,%rax 0.00 : 5bb07d: 75 d1 jne 5bb050 : { : /* No more pages to prefetch */ : tbm_end_iterate(prefetch_iterator); 0.00 : 5bb07f: 4c 89 ff mov %r15,%rdi : node->prefetch_iterator = prefetch_iterator = NULL; 0.00 : 5bb082: 45 31 ff xor %r15d,%r15d : TBMIterateResult *tbmpre = tbm_iterate(prefetch_iterator); : : if (tbmpre == NULL) : { : /* No more pages to prefetch */ : tbm_end_iterate(prefetch_iterator); 0.00 : 5bb085: e8 86 84 02 00 callq 5e3510 : node->prefetch_iterator = prefetch_iterator = NULL; 0.00 : 5bb08a: 48 c7 83 c0 00 00 00 movq $0x0,0xc0(%rbx) 0.00 : 5bb091: 00 00 00 00 : #endif /* USE_PREFETCH */ : : /* : * Okay to fetch the tuple : */ : targoffset = scan->rs_vistuples[scan->rs_cindex]; 0.39 : 5bb095: 49 63 44 24 70 movslq 0x70(%r12),%rax : dp = (Page) BufferGetPage(scan->rs_cbuf); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:260 0.59 : 5bb09a: 41 8b 74 24 64 mov 0x64(%r12),%esi 0.03 : 5bb09f: 85 f6 test %esi,%esi : #endif /* USE_PREFETCH */ : : /* : * Okay to fetch the tuple : */ : targoffset = scan->rs_vistuples[scan->rs_cindex]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:259 0.51 : 5bb0a1: 41 0f b7 7c 44 7c movzwl 0x7c(%r12,%rax,2),%edi : dp = (Page) BufferGetPage(scan->rs_cbuf); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:260 1.69 : 5bb0a7: 0f 88 73 01 00 00 js 5bb220 0.35 : 5bb0ad: 8d 46 ff lea -0x1(%rsi),%eax 0.01 : 5bb0b0: 48 63 c8 movslq %eax,%rcx 0.25 : 5bb0b3: 48 c1 e1 0d shl $0xd,%rcx 0.80 : 5bb0b7: 48 03 0d 3a 4a 60 00 add 0x604a3a(%rip),%rcx # bbfaf8 : lp = PageGetItemId(dp, targoffset); 0.39 : 5bb0be: 0f b7 d7 movzwl %di,%edx : Assert(ItemIdIsNormal(lp)); : : scan->rs_ctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); 0.03 : 5bb0c1: 48 83 c2 03 add $0x3,%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:264 0.98 : 5bb0c5: 0f b7 44 91 08 movzwl 0x8(%rcx,%rdx,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:264 7.29 : 5bb0ca: 25 ff 7f 00 00 and $0x7fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:264 1.37 : 5bb0cf: 48 8d 04 01 lea (%rcx,%rax,1),%rax 1.38 : 5bb0d3: 49 89 44 24 58 mov %rax,0x58(%r12) : scan->rs_ctup.t_len = ItemIdGetLength(lp); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:265 1.46 : 5bb0d8: 0f b7 44 91 0a movzwl 0xa(%rcx,%rdx,4),%eax : scan->rs_ctup.t_tableOid = scan->rs_rd->rd_id; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:266 0.75 : 5bb0dd: 49 8b 14 24 mov (%r12),%rdx : dp = (Page) BufferGetPage(scan->rs_cbuf); : lp = PageGetItemId(dp, targoffset); : Assert(ItemIdIsNormal(lp)); : : scan->rs_ctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); : scan->rs_ctup.t_len = ItemIdGetLength(lp); 0.01 : 5bb0e1: 66 d1 e8 shr %ax 0.13 : 5bb0e4: 0f b7 c0 movzwl %ax,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:265 1.52 : 5bb0e7: 41 89 44 24 48 mov %eax,0x48(%r12) : scan->rs_ctup.t_tableOid = scan->rs_rd->rd_id; 0.46 : 5bb0ec: 8b 42 40 mov 0x40(%rdx),%eax 0.04 : 5bb0ef: 41 89 44 24 54 mov %eax,0x54(%r12) : ItemPointerSet(&scan->rs_ctup.t_self, tbmres->blockno, targoffset); 0.00 : 5bb0f4: 41 8b 45 00 mov 0x0(%r13),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:267 0.84 : 5bb0f8: c1 e8 10 shr $0x10,%eax 0.38 : 5bb0fb: 66 41 89 44 24 4c mov %ax,0x4c(%r12) 0.02 : 5bb101: 41 8b 45 00 mov 0x0(%r13),%eax 0.02 : 5bb105: 66 41 89 7c 24 50 mov %di,0x50(%r12) 0.94 : 5bb10b: 66 41 89 44 24 4e mov %ax,0x4e(%r12) : : pgstat_count_heap_fetch(scan->rs_rd); 0.45 : 5bb111: 48 8b 82 38 01 00 00 mov 0x138(%rdx),%rax 0.06 : 5bb118: 48 85 c0 test %rax,%rax 0.00 : 5bb11b: 74 0a je 5bb127 0.00 : 5bb11d: 48 83 40 20 01 addq $0x1,0x20(%rax) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:269 3.28 : 5bb122: 41 8b 74 24 64 mov 0x64(%r12),%esi : : /* : * Set up the result slot to point to this tuple. Note that the slot : * acquires a pin on the buffer. : */ : ExecStoreTuple(&scan->rs_ctup, 0.01 : 5bb127: 89 f2 mov %esi,%edx 0.01 : 5bb129: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:275 0.82 : 5bb130: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.68 : 5bb137: 31 c9 xor %ecx,%ecx 0.02 : 5bb139: e8 42 93 ff ff callq 5b4480 : : /* : * If we are using lossy info, we have to recheck the qual conditions : * at every tuple. : */ : if (tbmres->recheck) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:284 1.81 : 5bb13e: 41 80 7d 08 00 cmpb $0x0,0x8(%r13) 1.31 : 5bb143: 0f 84 b1 02 00 00 je 5bb3fa : { : econtext->ecxt_scantuple = slot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:286 1.30 : 5bb149: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 1.48 : 5bb150: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx : ResetExprContext(econtext); 0.04 : 5bb157: 48 8b 7a 28 mov 0x28(%rdx),%rdi : * If we are using lossy info, we have to recheck the qual conditions : * at every tuple. : */ : if (tbmres->recheck) : { : econtext->ecxt_scantuple = slot; 4.01 : 5bb15b: 48 89 4a 08 mov %rcx,0x8(%rdx) : ResetExprContext(econtext); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:287 2.77 : 5bb15f: e8 4c d8 1d 00 callq 7989b0 : : if (!ExecQual(node->bitmapqualorig, econtext, false)) 0.01 : 5bb164: 48 8b bb 90 00 00 00 mov 0x90(%rbx),%rdi 0.05 : 5bb16b: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:289 1.29 : 5bb172: 31 d2 xor %edx,%edx 0.00 : 5bb174: e8 97 1d ff ff callq 5acf10 1.49 : 5bb179: 84 c0 test %al,%al 0.03 : 5bb17b: 0f 85 79 02 00 00 jne 5bb3fa : { : /* Fails recheck, so drop it and loop back for another */ : InstrCountFiltered2(node, 1); 0.03 : 5bb181: 48 8b 43 18 mov 0x18(%rbx),%rax 0.47 : 5bb185: 48 85 c0 test %rax,%rax 0.00 : 5bb188: 74 18 je 5bb1a2 0.37 : 5bb18a: f2 0f 10 05 c6 3f 1f movsd 0x1f3fc6(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5bb191: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:292 1.42 : 5bb192: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5bb199: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:292 5.86 : 5bb19a: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5bb1a1: 00 : ExecClearTuple(slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:293 1.24 : 5bb1a2: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.02 : 5bb1a9: e8 62 8f ff ff callq 5b4110 : : /* : * Set up the result slot to point to this tuple. Note that the slot : * acquires a pin on the buffer. : */ : ExecStoreTuple(&scan->rs_ctup, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:275 1.50 : 5bb1ae: 4c 89 ea mov %r13,%rdx : ItemId lp; : : /* : * Get next page of results if needed : */ : if (tbmres == NULL) 0.03 : 5bb1b1: 48 85 d2 test %rdx,%rdx 0.00 : 5bb1b4: 0f 85 46 fe ff ff jne 5bb000 : { : node->tbmres = tbmres = tbm_iterate(tbmiterator); 0.09 : 5bb1ba: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.15 : 5bb1c1: e8 8a 81 02 00 callq 5e3350 : if (tbmres == NULL) 0.02 : 5bb1c6: 48 85 c0 test %rax,%rax : /* : * Get next page of results if needed : */ : if (tbmres == NULL) : { : node->tbmres = tbmres = tbm_iterate(tbmiterator); 0.00 : 5bb1c9: 49 89 c5 mov %rax,%r13 0.00 : 5bb1cc: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) : if (tbmres == NULL) 0.00 : 5bb1d3: 0f 84 0e 02 00 00 je 5bb3e7 : /* no more entries in the bitmap */ : break; : } : : #ifdef USE_PREFETCH : if (node->prefetch_pages > 0) 0.01 : 5bb1d9: 8b 83 c8 00 00 00 mov 0xc8(%rbx),%eax 0.00 : 5bb1df: 85 c0 test %eax,%eax 0.00 : 5bb1e1: 0f 8e ae 01 00 00 jle 5bb395 : { : /* The main iterator has closed the distance by one page */ : node->prefetch_pages--; 0.02 : 5bb1e7: 83 e8 01 sub $0x1,%eax 0.00 : 5bb1ea: 89 83 c8 00 00 00 mov %eax,0xc8(%rbx) 0.05 : 5bb1f0: 41 8b 55 00 mov 0x0(%r13),%edx 0.01 : 5bb1f4: 89 95 7c ff ff ff mov %edx,-0x84(%rbp) : * Ignore any claimed entries past what we think is the end of the : * relation. (This is probably not necessary given that we got at : * least AccessShareLock on the table before performing any of the : * indexscans, but let's be safe.) : */ : if (tbmres->blockno >= scan->rs_nblocks) 0.03 : 5bb1fa: 8b 85 7c ff ff ff mov -0x84(%rbp),%eax 0.04 : 5bb200: 41 39 44 24 28 cmp %eax,0x28(%r12) 0.00 : 5bb205: 77 2f ja 5bb236 0.00 : 5bb207: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5bb20e: 00 00 : /* : * Out of range? If so, nothing more to look at on this page : */ : if (scan->rs_cindex < 0 || scan->rs_cindex >= scan->rs_ntuples) : { : node->tbmres = tbmres = NULL; 0.43 : 5bb210: 48 c7 83 a8 00 00 00 movq $0x0,0xa8(%rbx) 0.00 : 5bb217: 00 00 00 00 0.29 : 5bb21b: 45 31 ed xor %r13d,%r13d : continue; 0.00 : 5bb21e: eb 8e jmp 5bb1ae : : /* : * Okay to fetch the tuple : */ : targoffset = scan->rs_vistuples[scan->rs_cindex]; : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 5bb220: 89 f0 mov %esi,%eax 0.00 : 5bb222: 48 8b 15 ef 1e 5c 00 mov 0x5c1eef(%rip),%rdx # b7d118 0.00 : 5bb229: f7 d0 not %eax 0.00 : 5bb22b: 48 98 cltq 0.00 : 5bb22d: 48 8b 0c c2 mov (%rdx,%rax,8),%rcx 0.00 : 5bb231: e9 88 fe ff ff jmpq 5bb0be : /* : * Acquire pin on the target heap page, trading in any pin we held before. : */ : Assert(page < scan->rs_nblocks); : : scan->rs_cbuf = ReleaseAndReadBuffer(scan->rs_cbuf, 0.09 : 5bb236: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 5bb23b: 8b 95 7c ff ff ff mov -0x84(%rbp),%edx 0.03 : 5bb241: 49 8b 34 24 mov (%r12),%rsi 0.01 : 5bb245: e8 76 b4 0b 00 callq 6766c0 0.10 : 5bb24a: 89 85 78 ff ff ff mov %eax,-0x88(%rbp) : scan->rs_rd, : page); : buffer = scan->rs_cbuf; : snapshot = scan->rs_snapshot; 0.24 : 5bb250: 49 8b 54 24 08 mov 0x8(%r12),%rdx : ntup = 0; : : /* : * Prune and repair fragmentation for the whole page, if possible. : */ : heap_page_prune_opt(scan->rs_rd, buffer); 0.13 : 5bb255: 89 c6 mov %eax,%esi : /* : * Acquire pin on the target heap page, trading in any pin we held before. : */ : Assert(page < scan->rs_nblocks); : : scan->rs_cbuf = ReleaseAndReadBuffer(scan->rs_cbuf, 0.01 : 5bb257: 41 89 44 24 64 mov %eax,0x64(%r12) : scan->rs_rd, : page); : buffer = scan->rs_cbuf; : snapshot = scan->rs_snapshot; 0.02 : 5bb25c: 48 89 95 58 ff ff ff mov %rdx,-0xa8(%rbp) : ntup = 0; : : /* : * Prune and repair fragmentation for the whole page, if possible. : */ : heap_page_prune_opt(scan->rs_rd, buffer); 0.03 : 5bb263: 49 8b 3c 24 mov (%r12),%rdi 0.01 : 5bb267: e8 e4 43 ee ff callq 49f650 : /* : * We must hold share lock on the buffer content while examining tuple : * visibility. Afterwards, however, the tuples we have found to be : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); 0.00 : 5bb26c: 8b bd 78 ff ff ff mov -0x88(%rbp),%edi 0.00 : 5bb272: be 01 00 00 00 mov $0x1,%esi 0.00 : 5bb277: e8 94 94 0b 00 callq 674710 : : /* : * We need two separate strategies for lossy and non-lossy cases. : */ : if (tbmres->ntuples >= 0) 0.01 : 5bb27c: 41 83 7d 04 00 cmpl $0x0,0x4(%r13) 0.01 : 5bb281: 0f 8c 97 01 00 00 jl 5bb41e : * tbmres; but we have to follow any HOT chain starting at each such : * offset. : */ : int curslot; : : for (curslot = 0; curslot < tbmres->ntuples; curslot++) 0.00 : 5bb287: 0f 84 c1 01 00 00 je 5bb44e 0.00 : 5bb28d: 8b 8d 7c ff ff ff mov -0x84(%rbp),%ecx 0.00 : 5bb293: 0f b7 85 7c ff ff ff movzwl -0x84(%rbp),%eax 0.00 : 5bb29a: 45 31 f6 xor %r14d,%r14d 0.00 : 5bb29d: c7 85 54 ff ff ff 00 movl $0x0,-0xac(%rbp) 0.00 : 5bb2a4: 00 00 00 0.00 : 5bb2a7: c1 e9 10 shr $0x10,%ecx 0.00 : 5bb2aa: 66 89 4d 80 mov %cx,-0x80(%rbp) 0.00 : 5bb2ae: 66 89 45 9e mov %ax,-0x62(%rbp) 0.00 : 5bb2b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : OffsetNumber offnum = tbmres->offsets[curslot]; 0.00 : 5bb2b8: 49 63 c6 movslq %r14d,%rax : ItemPointerData tid; : HeapTupleData heapTuple; : : ItemPointerSet(&tid, page, offnum); 0.00 : 5bb2bb: 0f b7 55 80 movzwl -0x80(%rbp),%edx 0.00 : 5bb2bf: 0f b7 4d 9e movzwl -0x62(%rbp),%ecx : */ : int curslot; : : for (curslot = 0; curslot < tbmres->ntuples; curslot++) : { : OffsetNumber offnum = tbmres->offsets[curslot]; 0.00 : 5bb2c3: 41 0f b7 44 45 0a movzwl 0xa(%r13,%rax,2),%eax : ItemPointerData tid; : HeapTupleData heapTuple; : : ItemPointerSet(&tid, page, offnum); : if (heap_hot_search_buffer(&tid, scan->rs_rd, buffer, snapshot, 0.01 : 5bb2c9: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : 5bb2d0: 4c 8d 45 a0 lea -0x60(%rbp),%r8 0.00 : 5bb2d4: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.02 : 5bb2d8: 45 31 c9 xor %r9d,%r9d : { : OffsetNumber offnum = tbmres->offsets[curslot]; : ItemPointerData tid; : HeapTupleData heapTuple; : : ItemPointerSet(&tid, page, offnum); 0.00 : 5bb2db: 66 89 55 c0 mov %dx,-0x40(%rbp) 0.00 : 5bb2df: 66 89 4d c2 mov %cx,-0x3e(%rbp) 0.00 : 5bb2e3: 66 89 45 c4 mov %ax,-0x3c(%rbp) : if (heap_hot_search_buffer(&tid, scan->rs_rd, buffer, snapshot, 0.00 : 5bb2e7: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 5bb2ee: 8b 95 78 ff ff ff mov -0x88(%rbp),%edx 0.00 : 5bb2f4: 49 8b 34 24 mov (%r12),%rsi 0.00 : 5bb2f8: e8 23 1f ee ff callq 49d220 0.00 : 5bb2fd: 84 c0 test %al,%al 0.00 : 5bb2ff: 74 18 je 5bb319 : &heapTuple, NULL, true)) : scan->rs_vistuples[ntup++] = ItemPointerGetOffsetNumber(&tid); 0.00 : 5bb301: 48 63 95 54 ff ff ff movslq -0xac(%rbp),%rdx 0.00 : 5bb308: 0f b7 45 c4 movzwl -0x3c(%rbp),%eax 0.00 : 5bb30c: 66 41 89 44 54 7c mov %ax,0x7c(%r12,%rdx,2) 0.02 : 5bb312: 83 85 54 ff ff ff 01 addl $0x1,-0xac(%rbp) : * tbmres; but we have to follow any HOT chain starting at each such : * offset. : */ : int curslot; : : for (curslot = 0; curslot < tbmres->ntuples; curslot++) 0.00 : 5bb319: 41 83 c6 01 add $0x1,%r14d 0.00 : 5bb31d: 45 3b 75 04 cmp 0x4(%r13),%r14d 0.00 : 5bb321: 7c 95 jl 5bb2b8 : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, : buffer, snapshot); : } : } : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.19 : 5bb323: 8b bd 78 ff ff ff mov -0x88(%rbp),%edi 0.24 : 5bb329: 31 f6 xor %esi,%esi 0.00 : 5bb32b: e8 e0 93 0b 00 callq 674710 : : Assert(ntup <= MaxHeapTuplesPerPage); : scan->rs_ntuples = ntup; 0.00 : 5bb330: 8b 85 54 ff ff ff mov -0xac(%rbp),%eax 0.01 : 5bb336: 41 89 44 24 78 mov %eax,0x78(%r12) : /* : * Fetch the current heap page and identify candidate tuples. : */ : bitgetpage(scan, tbmres); : : if (tbmres->ntuples >= 0) 0.01 : 5bb33b: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5bb33f: 85 c0 test %eax,%eax 0.00 : 5bb341: 0f 88 16 01 00 00 js 5bb45d : node->exact_pages++; 0.00 : 5bb347: 48 83 83 b0 00 00 00 addq $0x1,0xb0(%rbx) 0.00 : 5bb34e: 01 : node->lossy_pages++; : : /* : * Set rs_cindex to first slot to examine : */ : scan->rs_cindex = 0; 0.00 : 5bb34f: 41 c7 44 24 70 00 00 movl $0x0,0x70(%r12) 0.00 : 5bb356: 00 00 : * Increase prefetch target if it's not yet at the max. Note that : * we will increase it to zero after fetching the very first : * page/tuple, then to one after the second tuple is fetched, then : * it doubles as later pages are fetched. : */ : if (node->prefetch_target >= target_prefetch_pages) 0.01 : 5bb358: 8b 8b cc 00 00 00 mov 0xcc(%rbx),%ecx 0.02 : 5bb35e: 31 c0 xor %eax,%eax 0.00 : 5bb360: 8b 15 fe 1c 5c 00 mov 0x5c1cfe(%rip),%edx # b7d064 0.02 : 5bb366: 39 d1 cmp %edx,%ecx 0.00 : 5bb368: 0f 8d c2 fc ff ff jge 5bb030 : /* don't increase any further */ ; : else if (node->prefetch_target >= target_prefetch_pages / 2) 0.00 : 5bb36e: 89 d0 mov %edx,%eax 0.00 : 5bb370: c1 e8 1f shr $0x1f,%eax 0.00 : 5bb373: 01 d0 add %edx,%eax 0.00 : 5bb375: d1 f8 sar %eax 0.00 : 5bb377: 39 c1 cmp %eax,%ecx 0.00 : 5bb379: 0f 8d 94 00 00 00 jge 5bb413 : node->prefetch_target = target_prefetch_pages; : else if (node->prefetch_target > 0) 0.00 : 5bb37f: 85 c9 test %ecx,%ecx 0.00 : 5bb381: 0f 8e 5d 02 00 00 jle 5bb5e4 : node->prefetch_target *= 2; 0.00 : 5bb387: 8d 04 09 lea (%rcx,%rcx,1),%eax 0.00 : 5bb38a: 89 83 cc 00 00 00 mov %eax,0xcc(%rbx) 0.00 : 5bb390: e9 8e fc ff ff jmpq 5bb023 : if (node->prefetch_pages > 0) : { : /* The main iterator has closed the distance by one page */ : node->prefetch_pages--; : } : else if (prefetch_iterator) 0.00 : 5bb395: 4d 85 ff test %r15,%r15 0.00 : 5bb398: 0f 84 cc 00 00 00 je 5bb46a : { : /* Do not let the prefetch iterator get behind the main one */ : TBMIterateResult *tbmpre = tbm_iterate(prefetch_iterator); 0.00 : 5bb39e: 4c 89 ff mov %r15,%rdi 0.00 : 5bb3a1: e8 aa 7f 02 00 callq 5e3350 : : if (tbmpre == NULL || tbmpre->blockno != tbmres->blockno) 0.00 : 5bb3a6: 48 85 c0 test %rax,%rax 0.00 : 5bb3a9: 74 12 je 5bb3bd 0.00 : 5bb3ab: 8b 00 mov (%rax),%eax 0.00 : 5bb3ad: 89 85 7c ff ff ff mov %eax,-0x84(%rbp) 0.00 : 5bb3b3: 41 3b 45 00 cmp 0x0(%r13),%eax 0.00 : 5bb3b7: 0f 84 3d fe ff ff je 5bb1fa : elog(ERROR, "prefetch and main iterators are out of sync"); 0.00 : 5bb3bd: ba b4 b8 88 00 mov $0x88b8b4,%edx 0.00 : 5bb3c2: be 98 00 00 00 mov $0x98,%esi 0.00 : 5bb3c7: bf 72 b8 88 00 mov $0x88b872,%edi 0.00 : 5bb3cc: e8 4f 00 1c 00 callq 77b420 0.00 : 5bb3d1: be 88 b8 88 00 mov $0x88b888,%esi 0.00 : 5bb3d6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5bb3db: 31 c0 xor %eax,%eax 0.00 : 5bb3dd: e8 4e fe 1b 00 callq 77b230 0.00 : 5bb3e2: e8 e9 e0 ea ff callq 4694d0 : } : : /* : * if we get here it means we are at the end of the scan.. : */ : return ExecClearTuple(slot); 0.00 : 5bb3e7: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 5bb3ee: e8 1d 8d ff ff callq 5b4110 0.00 : 5bb3f3: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) : } 0.37 : 5bb3fa: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:306 0.55 : 5bb401: 48 81 c4 d8 00 00 00 add $0xd8,%rsp 0.00 : 5bb408: 5b pop %rbx 0.44 : 5bb409: 41 5c pop %r12 0.18 : 5bb40b: 41 5d pop %r13 0.15 : 5bb40d: 41 5e pop %r14 0.19 : 5bb40f: 41 5f pop %r15 0.19 : 5bb411: c9 leaveq 0.22 : 5bb412: c3 retq : * it doubles as later pages are fetched. : */ : if (node->prefetch_target >= target_prefetch_pages) : /* don't increase any further */ ; : else if (node->prefetch_target >= target_prefetch_pages / 2) : node->prefetch_target = target_prefetch_pages; 0.00 : 5bb413: 89 93 cc 00 00 00 mov %edx,0xcc(%rbx) 0.00 : 5bb419: e9 05 fc ff ff jmpq 5bb023 : { : /* : * Bitmap is lossy, so we must examine each item pointer on the page. : * But we can ignore HOT chains, since we'll check each tuple anyway. : */ : Page dp = (Page) BufferGetPage(buffer); 0.03 : 5bb41e: 8b 95 78 ff ff ff mov -0x88(%rbp),%edx 0.00 : 5bb424: 85 d2 test %edx,%edx 0.00 : 5bb426: 0f 88 9e 01 00 00 js 5bb5ca 0.00 : 5bb42c: 8b 85 78 ff ff ff mov -0x88(%rbp),%eax 0.00 : 5bb432: 83 e8 01 sub $0x1,%eax 0.04 : 5bb435: 4c 63 c8 movslq %eax,%r9 0.00 : 5bb438: 49 c1 e1 0d shl $0xd,%r9 0.00 : 5bb43c: 4c 03 0d b5 46 60 00 add 0x6046b5(%rip),%r9 # bbfaf8 : OffsetNumber maxoff = PageGetMaxOffsetNumber(dp); 0.00 : 5bb443: 41 0f b7 41 0c movzwl 0xc(%r9),%eax 0.03 : 5bb448: 66 83 f8 18 cmp $0x18,%ax 0.00 : 5bb44c: 77 2b ja 5bb479 : OffsetNumber offnum; : : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.00 : 5bb44e: c7 85 54 ff ff ff 00 movl $0x0,-0xac(%rbp) 0.00 : 5bb455: 00 00 00 0.00 : 5bb458: e9 c6 fe ff ff jmpq 5bb323 : bitgetpage(scan, tbmres); : : if (tbmres->ntuples >= 0) : node->exact_pages++; : else : node->lossy_pages++; 0.01 : 5bb45d: 48 83 83 b8 00 00 00 addq $0x1,0xb8(%rbx) 0.00 : 5bb464: 01 0.18 : 5bb465: e9 e5 fe ff ff jmpq 5bb34f : { : /* Do not let the prefetch iterator get behind the main one */ : TBMIterateResult *tbmpre = tbm_iterate(prefetch_iterator); : : if (tbmpre == NULL || tbmpre->blockno != tbmres->blockno) : elog(ERROR, "prefetch and main iterators are out of sync"); 0.00 : 5bb46a: 41 8b 4d 00 mov 0x0(%r13),%ecx 0.00 : 5bb46e: 89 8d 7c ff ff ff mov %ecx,-0x84(%rbp) 0.00 : 5bb474: e9 81 fd ff ff jmpq 5bb1fa : /* : * Bitmap is lossy, so we must examine each item pointer on the page. : * But we can ignore HOT chains, since we'll check each tuple anyway. : */ : Page dp = (Page) BufferGetPage(buffer); : OffsetNumber maxoff = PageGetMaxOffsetNumber(dp); 0.01 : 5bb479: 0f b7 c0 movzwl %ax,%eax 0.00 : 5bb47c: 48 83 e8 18 sub $0x18,%rax 0.00 : 5bb480: 48 c1 e8 02 shr $0x2,%rax : OffsetNumber offnum; : : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.03 : 5bb484: 66 85 c0 test %ax,%ax : /* : * Bitmap is lossy, so we must examine each item pointer on the page. : * But we can ignore HOT chains, since we'll check each tuple anyway. : */ : Page dp = (Page) BufferGetPage(buffer); : OffsetNumber maxoff = PageGetMaxOffsetNumber(dp); 0.01 : 5bb487: 66 89 85 40 ff ff ff mov %ax,-0xc0(%rbp) : OffsetNumber offnum; : : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.00 : 5bb48e: 74 be je 5bb44e : if (!ItemIdIsNormal(lp)) : continue; : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); : loctup.t_len = ItemIdGetLength(lp); : loctup.t_tableOid = scan->rs_rd->rd_id; : ItemPointerSet(&loctup.t_self, page, offnum); 0.00 : 5bb490: 8b 85 7c ff ff ff mov -0x84(%rbp),%eax 0.02 : 5bb496: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 5bb49c: c7 85 54 ff ff ff 00 movl $0x0,-0xac(%rbp) 0.00 : 5bb4a3: 00 00 00 0.00 : 5bb4a6: c1 e8 10 shr $0x10,%eax 0.00 : 5bb4a9: 66 89 85 60 ff ff ff mov %ax,-0xa0(%rbp) 0.02 : 5bb4b0: eb 18 jmp 5bb4ca 0.00 : 5bb4b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (valid) : { : scan->rs_vistuples[ntup++] = offnum; : PredicateLockTuple(scan->rs_rd, &loctup, snapshot); : } : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:401 1.42 : 5bb4b8: 41 83 c6 01 add $0x1,%r14d : */ : Page dp = (Page) BufferGetPage(buffer); : OffsetNumber maxoff = PageGetMaxOffsetNumber(dp); : OffsetNumber offnum; : : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.01 : 5bb4bc: 66 44 3b b5 40 ff ff cmp -0xc0(%rbp),%r14w 0.00 : 5bb4c3: ff 0.00 : 5bb4c4: 0f 87 59 fe ff ff ja 5bb323 : { : ItemId lp; : HeapTupleData loctup; : bool valid; : : lp = PageGetItemId(dp, offnum); 0.02 : 5bb4ca: 41 0f b7 c6 movzwl %r14w,%eax : if (!ItemIdIsNormal(lp)) 0.03 : 5bb4ce: 48 8d 50 03 lea 0x3(%rax),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:389 1.49 : 5bb4d2: 41 8b 44 91 08 mov 0x8(%r9,%rdx,4),%eax 0.36 : 5bb4d7: 25 00 80 01 00 and $0x18000,%eax 0.09 : 5bb4dc: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 5bb4e1: 75 d5 jne 5bb4b8 : continue; : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); 0.16 : 5bb4e3: 41 0f b7 44 91 08 movzwl 0x8(%r9,%rdx,4),%eax : loctup.t_len = ItemIdGetLength(lp); : loctup.t_tableOid = scan->rs_rd->rd_id; : ItemPointerSet(&loctup.t_self, page, offnum); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:394 1.28 : 5bb4e9: 0f b7 8d 7c ff ff ff movzwl -0x84(%rbp),%ecx : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); 0.00 : 5bb4f0: 48 8d 7d a0 lea -0x60(%rbp),%rdi 0.00 : 5bb4f4: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi : bool valid; : : lp = PageGetItemId(dp, offnum); : if (!ItemIdIsNormal(lp)) : continue; : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); 0.12 : 5bb4fb: 25 ff 7f 00 00 and $0x7fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:391 1.16 : 5bb500: 49 8d 04 01 lea (%r9,%rax,1),%rax 0.04 : 5bb504: 48 89 45 b0 mov %rax,-0x50(%rbp) : loctup.t_len = ItemIdGetLength(lp); 0.07 : 5bb508: 41 0f b7 44 91 0a movzwl 0xa(%r9,%rdx,4),%eax : loctup.t_tableOid = scan->rs_rd->rd_id; : ItemPointerSet(&loctup.t_self, page, offnum); 0.17 : 5bb50e: 0f b7 95 60 ff ff ff movzwl -0xa0(%rbp),%edx : : lp = PageGetItemId(dp, offnum); : if (!ItemIdIsNormal(lp)) : continue; : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); : loctup.t_len = ItemIdGetLength(lp); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:392 1.17 : 5bb515: 66 d1 e8 shr %ax 0.02 : 5bb518: 0f b7 c0 movzwl %ax,%eax 0.09 : 5bb51b: 89 45 a0 mov %eax,-0x60(%rbp) : loctup.t_tableOid = scan->rs_rd->rd_id; 0.15 : 5bb51e: 49 8b 04 24 mov (%r12),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:393 1.42 : 5bb522: 8b 40 40 mov 0x40(%rax),%eax : ItemPointerSet(&loctup.t_self, page, offnum); 0.04 : 5bb525: 66 89 55 a4 mov %dx,-0x5c(%rbp) : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); 0.12 : 5bb529: 4c 89 8d 10 ff ff ff mov %r9,-0xf0(%rbp) : if (!ItemIdIsNormal(lp)) : continue; : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); : loctup.t_len = ItemIdGetLength(lp); : loctup.t_tableOid = scan->rs_rd->rd_id; : ItemPointerSet(&loctup.t_self, page, offnum); 0.13 : 5bb530: 66 89 4d a6 mov %cx,-0x5a(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:394 1.25 : 5bb534: 66 44 89 75 a8 mov %r14w,-0x58(%rbp) : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); 0.05 : 5bb539: 8b 95 78 ff ff ff mov -0x88(%rbp),%edx : lp = PageGetItemId(dp, offnum); : if (!ItemIdIsNormal(lp)) : continue; : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); : loctup.t_len = ItemIdGetLength(lp); : loctup.t_tableOid = scan->rs_rd->rd_id; 0.02 : 5bb53f: 89 45 ac mov %eax,-0x54(%rbp) : ItemPointerSet(&loctup.t_self, page, offnum); : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); 0.23 : 5bb542: ff 16 callq *(%rsi) : if (valid) 0.27 : 5bb544: 84 c0 test %al,%al : continue; : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); : loctup.t_len = ItemIdGetLength(lp); : loctup.t_tableOid = scan->rs_rd->rd_id; : ItemPointerSet(&loctup.t_self, page, offnum); : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); 0.00 : 5bb546: 41 89 c0 mov %eax,%r8d : if (valid) 0.03 : 5bb549: 4c 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:396 2.05 : 5bb550: 75 31 jne 5bb583 : { : scan->rs_vistuples[ntup++] = offnum; : PredicateLockTuple(scan->rs_rd, &loctup, snapshot); : } : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:401 1.48 : 5bb552: 41 0f be f8 movsbl %r8b,%edi 0.01 : 5bb556: 49 8b 34 24 mov (%r12),%rsi 0.00 : 5bb55a: 4c 8b 85 58 ff ff ff mov -0xa8(%rbp),%r8 0.01 : 5bb561: 8b 8d 78 ff ff ff mov -0x88(%rbp),%ecx 1.49 : 5bb567: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 5bb56b: 4c 89 8d 10 ff ff ff mov %r9,-0xf0(%rbp) 0.04 : 5bb572: e8 e9 90 0d 00 callq 694660 0.03 : 5bb577: 4c 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9 0.04 : 5bb57e: e9 35 ff ff ff jmpq 5bb4b8 : loctup.t_tableOid = scan->rs_rd->rd_id; : ItemPointerSet(&loctup.t_self, page, offnum); : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); : if (valid) : { : scan->rs_vistuples[ntup++] = offnum; 0.02 : 5bb583: 48 63 85 54 ff ff ff movslq -0xac(%rbp),%rax : PredicateLockTuple(scan->rs_rd, &loctup, snapshot); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:399 2.25 : 5bb58a: 48 8d 75 a0 lea -0x60(%rbp),%rsi : loctup.t_tableOid = scan->rs_rd->rd_id; : ItemPointerSet(&loctup.t_self, page, offnum); : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); : if (valid) : { : scan->rs_vistuples[ntup++] = offnum; 0.00 : 5bb58e: 66 45 89 74 44 7c mov %r14w,0x7c(%r12,%rax,2) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:398 7.60 : 5bb594: 83 85 54 ff ff ff 01 addl $0x1,-0xac(%rbp) : PredicateLockTuple(scan->rs_rd, &loctup, snapshot); 0.13 : 5bb59b: 49 8b 3c 24 mov (%r12),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:399 0.53 : 5bb59f: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.85 : 5bb5a6: 44 88 85 18 ff ff ff mov %r8b,-0xe8(%rbp) 0.02 : 5bb5ad: 4c 89 8d 10 ff ff ff mov %r9,-0xf0(%rbp) 0.01 : 5bb5b4: e8 e7 95 0d 00 callq 694ba0 0.80 : 5bb5b9: 4c 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9 0.00 : 5bb5c0: 44 0f b6 85 18 ff ff movzbl -0xe8(%rbp),%r8d 0.00 : 5bb5c7: ff 0.05 : 5bb5c8: eb 88 jmp 5bb552 : { : /* : * Bitmap is lossy, so we must examine each item pointer on the page. : * But we can ignore HOT chains, since we'll check each tuple anyway. : */ : Page dp = (Page) BufferGetPage(buffer); 0.00 : 5bb5ca: 8b 85 78 ff ff ff mov -0x88(%rbp),%eax 0.00 : 5bb5d0: 48 8b 15 41 1b 5c 00 mov 0x5c1b41(%rip),%rdx # b7d118 0.00 : 5bb5d7: f7 d0 not %eax 0.00 : 5bb5d9: 48 98 cltq 0.00 : 5bb5db: 4c 8b 0c c2 mov (%rdx,%rax,8),%r9 0.00 : 5bb5df: e9 5f fe ff ff jmpq 5bb443 : else if (node->prefetch_target >= target_prefetch_pages / 2) : node->prefetch_target = target_prefetch_pages; : else if (node->prefetch_target > 0) : node->prefetch_target *= 2; : else : node->prefetch_target++; 0.00 : 5bb5e4: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : 5bb5e7: 89 83 cc 00 00 00 mov %eax,0xcc(%rbx) 0.00 : 5bb5ed: e9 31 fa ff ff jmpq 5bb023 : * a lot of prefetching in a scan that stops after a few tuples because of : * a LIMIT. : */ : if (tbm == NULL) : { : tbm = (TIDBitmap *) MultiExecProcNode(outerPlanState(node)); 0.00 : 5bb5f2: 48 8b 7f 30 mov 0x30(%rdi),%rdi 0.00 : 5bb5f6: e8 d5 0d ff ff callq 5ac3d0 : : if (!tbm || !IsA(tbm, TIDBitmap)) 0.00 : 5bb5fb: 48 85 c0 test %rax,%rax : * a lot of prefetching in a scan that stops after a few tuples because of : * a LIMIT. : */ : if (tbm == NULL) : { : tbm = (TIDBitmap *) MultiExecProcNode(outerPlanState(node)); 0.00 : 5bb5fe: 49 89 c5 mov %rax,%r13 : : if (!tbm || !IsA(tbm, TIDBitmap)) 0.00 : 5bb601: 74 08 je 5bb60b 0.00 : 5bb603: 81 38 ba 03 00 00 cmpl $0x3ba,(%rax) 0.00 : 5bb609: 74 2a je 5bb635 : elog(ERROR, "unrecognized result from subplan"); 0.00 : 5bb60b: ba b4 b8 88 00 mov $0x88b8b4,%edx 0.00 : 5bb610: be 6b 00 00 00 mov $0x6b,%esi 0.00 : 5bb615: bf 72 b8 88 00 mov $0x88b872,%edi 0.00 : 5bb61a: e8 01 fe 1b 00 callq 77b420 0.00 : 5bb61f: be c0 b7 88 00 mov $0x88b7c0,%esi 0.00 : 5bb624: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5bb629: 31 c0 xor %eax,%eax 0.00 : 5bb62b: e8 00 fc 1b 00 callq 77b230 0.00 : 5bb630: e8 9b de ea ff callq 4694d0 : : node->tbm = tbm; 0.00 : 5bb635: 48 89 83 98 00 00 00 mov %rax,0x98(%rbx) : node->tbmiterator = tbmiterator = tbm_begin_iterate(tbm); 0.00 : 5bb63c: 48 89 c7 mov %rax,%rdi 0.00 : 5bb63f: e8 dc 7e 02 00 callq 5e3520 : node->tbmres = tbmres = NULL; 0.00 : 5bb644: 48 c7 83 a8 00 00 00 movq $0x0,0xa8(%rbx) 0.00 : 5bb64b: 00 00 00 00 : : if (!tbm || !IsA(tbm, TIDBitmap)) : elog(ERROR, "unrecognized result from subplan"); : : node->tbm = tbm; : node->tbmiterator = tbmiterator = tbm_begin_iterate(tbm); 0.00 : 5bb64f: 48 89 83 a0 00 00 00 mov %rax,0xa0(%rbx) : node->tbmres = tbmres = NULL; : : #ifdef USE_PREFETCH : if (target_prefetch_pages > 0) 0.00 : 5bb656: 31 d2 xor %edx,%edx 0.00 : 5bb658: 8b 0d 06 1a 5c 00 mov 0x5c1a06(%rip),%ecx # b7d064 : : if (!tbm || !IsA(tbm, TIDBitmap)) : elog(ERROR, "unrecognized result from subplan"); : : node->tbm = tbm; : node->tbmiterator = tbmiterator = tbm_begin_iterate(tbm); 0.00 : 5bb65e: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : node->tbmres = tbmres = NULL; : : #ifdef USE_PREFETCH : if (target_prefetch_pages > 0) 0.00 : 5bb665: 85 c9 test %ecx,%ecx 0.00 : 5bb667: 0f 8e 74 f9 ff ff jle 5bafe1 : { : node->prefetch_iterator = prefetch_iterator = tbm_begin_iterate(tbm); 0.00 : 5bb66d: 4c 89 ef mov %r13,%rdi 0.00 : 5bb670: e8 ab 7e 02 00 callq 5e3520 : node->prefetch_pages = 0; 0.00 : 5bb675: c7 83 c8 00 00 00 00 movl $0x0,0xc8(%rbx) 0.00 : 5bb67c: 00 00 00 : node->tbmres = tbmres = NULL; : : #ifdef USE_PREFETCH : if (target_prefetch_pages > 0) : { : node->prefetch_iterator = prefetch_iterator = tbm_begin_iterate(tbm); 0.00 : 5bb67f: 49 89 c7 mov %rax,%r15 0.00 : 5bb682: 48 89 83 c0 00 00 00 mov %rax,0xc0(%rbx) : node->prefetch_pages = 0; : node->prefetch_target = -1; 0.00 : 5bb689: c7 83 cc 00 00 00 ff movl $0xffffffff,0xcc(%rbx) 0.00 : 5bb690: ff ff ff 0.00 : 5bb693: 31 d2 xor %edx,%edx 0.00 : 5bb695: e9 47 f9 ff ff jmpq 5bafe1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 58.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1319 4.30 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1334 3.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1319 3.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 3.09 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 3.07 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1312 3.04 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 2.88 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1334 1.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1322 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1334 1.37 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1334 1.29 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1333 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1320 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1320 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 0.94 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1305 0.90 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1322 0.88 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1305 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 0.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 0.68 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1320 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1328 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1334 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1313 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046f260 : : * This function forces the entries of the slot's Datum/isnull : * arrays to be valid at least up through the attnum'th entry. : */ : void : slot_getsomeattrs(TupleTableSlot *slot, int attnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1296 3.04 : 46f260: 55 push %rbp 1.03 : 46f261: 48 89 e5 mov %rsp,%rbp 3.19 : 46f264: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.79 : 46f268: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.82 : 46f26c: 49 89 fc mov %rdi,%r12 0.12 : 46f26f: 48 89 5d e8 mov %rbx,-0x18(%rbp) 3.09 : 46f273: 48 83 ec 20 sub $0x20,%rsp : HeapTuple tuple; : int attno; : : /* Quick out if we have 'em all already */ : if (slot->tts_nvalid >= attnum) 0.18 : 46f277: 39 77 24 cmp %esi,0x24(%rdi) : * This function forces the entries of the slot's Datum/isnull : * arrays to be valid at least up through the attnum'th entry. : */ : void : slot_getsomeattrs(TupleTableSlot *slot, int attnum) : { 2.88 : 46f27a: 41 89 f5 mov %esi,%r13d : HeapTuple tuple; : int attno; : : /* Quick out if we have 'em all already */ : if (slot->tts_nvalid >= attnum) 0.15 : 46f27d: 7d 67 jge 46f2e6 : return; : : /* Check for caller error */ : if (attnum <= 0 || attnum > slot->tts_tupleDescriptor->natts) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1305 0.88 : 46f27f: 85 f6 test %esi,%esi 0.00 : 46f281: 7e 75 jle 46f2f8 0.07 : 46f283: 48 8b 47 10 mov 0x10(%rdi),%rax 0.94 : 46f287: 3b 30 cmp (%rax),%esi 0.00 : 46f289: 7f 6d jg 46f2f8 : : /* : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : tuple = slot->tts_tuple; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1312 3.07 : 46f28b: 48 8b 47 08 mov 0x8(%rdi),%rax : if (tuple == NULL) /* internal error */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1313 0.58 : 46f28f: 48 85 c0 test %rax,%rax 0.00 : 46f292: 0f 84 8d 00 00 00 je 46f325 : elog(ERROR, "cannot extract attribute from empty tuple slot"); : : /* : * load up any slots available from physical tuple : */ : attno = HeapTupleHeaderGetNatts(tuple->t_data); 0.04 : 46f298: 48 8b 40 10 mov 0x10(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1319 3.22 : 46f29c: 0f b7 40 12 movzwl 0x12(%rax),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1319 58.58 : 46f2a0: 25 ff 07 00 00 and $0x7ff,%eax : attno = Min(attno, attnum); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1320 1.08 : 46f2a5: 39 c6 cmp %eax,%esi 1.09 : 46f2a7: 89 c3 mov %eax,%ebx 0.68 : 46f2a9: 0f 4e de cmovle %esi,%ebx : : slot_deform_tuple(slot, attno); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1322 1.79 : 46f2ac: 89 de mov %ebx,%esi 0.90 : 46f2ae: e8 5d fc ff ff callq 46ef10 : : /* : * If tuple doesn't have all the atts indicated by tupleDesc, read the : * rest as null : */ : for (; attno < attnum; attno++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1328 0.62 : 46f2b3: 41 39 dd cmp %ebx,%r13d 0.00 : 46f2b6: 7e 29 jle 46f2e1 0.00 : 46f2b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46f2bf: 00 : { : slot->tts_values[attno] = (Datum) 0; 0.00 : 46f2c0: 49 8b 54 24 28 mov 0x28(%r12),%rdx 0.00 : 46f2c5: 48 63 c3 movslq %ebx,%rax : : /* : * If tuple doesn't have all the atts indicated by tupleDesc, read the : * rest as null : */ : for (; attno < attnum; attno++) 0.00 : 46f2c8: 83 c3 01 add $0x1,%ebx 0.00 : 46f2cb: 41 39 dd cmp %ebx,%r13d : { : slot->tts_values[attno] = (Datum) 0; 0.00 : 46f2ce: 48 c7 04 c2 00 00 00 movq $0x0,(%rdx,%rax,8) 0.00 : 46f2d5: 00 : slot->tts_isnull[attno] = true; 0.00 : 46f2d6: 49 8b 54 24 30 mov 0x30(%r12),%rdx 0.00 : 46f2db: c6 04 02 01 movb $0x1,(%rdx,%rax,1) : : /* : * If tuple doesn't have all the atts indicated by tupleDesc, read the : * rest as null : */ : for (; attno < attnum; attno++) 0.00 : 46f2df: 7f df jg 46f2c0 : { : slot->tts_values[attno] = (Datum) 0; : slot->tts_isnull[attno] = true; : } : slot->tts_nvalid = attnum; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1333 1.29 : 46f2e1: 45 89 6c 24 24 mov %r13d,0x24(%r12) : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1334 2.22 : 46f2e6: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.61 : 46f2ea: 4c 8b 65 f0 mov -0x10(%rbp),%r12 1.37 : 46f2ee: 4c 8b 6d f8 mov -0x8(%rbp),%r13 1.39 : 46f2f2: c9 leaveq 4.30 : 46f2f3: c3 retq 0.00 : 46f2f4: 0f 1f 40 00 nopl 0x0(%rax) : if (slot->tts_nvalid >= attnum) : return; : : /* Check for caller error */ : if (attnum <= 0 || attnum > slot->tts_tupleDescriptor->natts) : elog(ERROR, "invalid attribute number %d", attnum); 0.00 : 46f2f8: ba c0 f6 7a 00 mov $0x7af6c0,%edx 0.00 : 46f2fd: be 1a 05 00 00 mov $0x51a,%esi 0.00 : 46f302: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f307: e8 14 c1 30 00 callq 77b420 0.00 : 46f30c: 44 89 ea mov %r13d,%edx 0.00 : 46f30f: be 13 f6 7a 00 mov $0x7af613,%esi 0.00 : 46f314: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f319: 31 c0 xor %eax,%eax 0.00 : 46f31b: e8 10 bf 30 00 callq 77b230 0.00 : 46f320: e8 ab a1 ff ff callq 4694d0 : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : tuple = slot->tts_tuple; : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract attribute from empty tuple slot"); 0.00 : 46f325: ba c0 f6 7a 00 mov $0x7af6c0,%edx 0.00 : 46f32a: be 22 05 00 00 mov $0x522,%esi 0.00 : 46f32f: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f334: e8 e7 c0 30 00 callq 77b420 0.00 : 46f339: be b0 f7 7a 00 mov $0x7af7b0,%esi 0.00 : 46f33e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f343: 31 c0 xor %eax,%eax 0.00 : 46f345: e8 e6 be 30 00 callq 77b230 0.00 : 46f34a: e8 81 a1 ff ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 26.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 7.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 5.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 5.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:694 5.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:669 4.15 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:687 3.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:680 2.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:694 2.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:669 2.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:665 0.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:695 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b16a0 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 26.36 : 5b16a0: 55 push %rbp : Var *variable = (Var *) exprstate->expr; : TupleTableSlot *slot; : AttrNumber attnum; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:669 5.25 : 5b16a1: 48 85 c9 test %rcx,%rcx : */ : static Datum : ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { : Var *variable = (Var *) exprstate->expr; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:665 1.02 : 5b16a4: 4c 8b 47 08 mov 0x8(%rdi),%r8 : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 5.87 : 5b16a8: 48 89 e5 mov %rsp,%rbp : Var *variable = (Var *) exprstate->expr; : TupleTableSlot *slot; : AttrNumber attnum; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:669 2.64 : 5b16ab: 74 06 je 5b16b3 : *isDone = ExprSingleResult; 0.08 : 5b16ad: c7 01 00 00 00 00 movl $0x0,(%rcx) : : /* Get the input slot and attribute number we want */ : switch (variable->varno) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 2.19 : 5b16b3: 41 8b 40 04 mov 0x4(%r8),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 30.46 : 5b16b7: 3d e8 fd 00 00 cmp $0xfde8,%eax 0.00 : 5b16bc: 74 1a je 5b16d8 7.75 : 5b16be: 3d e9 fd 00 00 cmp $0xfde9,%eax 0.00 : 5b16c3: 74 2b je 5b16f0 : : /* INDEX_VAR is handled by default case */ : : default: /* get the tuple from the relation being : * scanned */ : slot = econtext->ecxt_scantuple; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:687 4.15 : 5b16c5: 48 8b 7e 08 mov 0x8(%rsi),%rdi : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.42 : 5b16c9: 41 0f bf 70 08 movswl 0x8(%r8),%esi : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:695 0.54 : 5b16ce: c9 leaveq : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:694 5.82 : 5b16cf: e9 2c dd eb ff jmpq 46f400 0.00 : 5b16d4: 0f 1f 40 00 nopl 0x0(%rax) : : /* Get the input slot and attribute number we want */ : switch (variable->varno) : { : case INNER_VAR: /* get the tuple from the inner node */ : slot = econtext->ecxt_innertuple; 0.38 : 5b16d8: 48 8b 7e 10 mov 0x10(%rsi),%rdi : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.02 : 5b16dc: 41 0f bf 70 08 movswl 0x8(%r8),%esi : } 0.34 : 5b16e1: c9 leaveq : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.22 : 5b16e2: e9 19 dd eb ff jmpq 46f400 0.00 : 5b16e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b16ee: 00 00 : case INNER_VAR: /* get the tuple from the inner node */ : slot = econtext->ecxt_innertuple; : break; : : case OUTER_VAR: /* get the tuple from the outer node */ : slot = econtext->ecxt_outertuple; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:680 3.22 : 5b16f0: 48 8b 7e 18 mov 0x18(%rsi),%rdi : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.16 : 5b16f4: 41 0f bf 70 08 movswl 0x8(%r8),%esi : } 0.19 : 5b16f9: c9 leaveq : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:694 2.92 : 5b16fa: e9 01 dd eb ff jmpq 46f400 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:415 21.84 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:401 2.72 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 1.36 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 1.22 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:433 1.21 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:468 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:450 1.14 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:450 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:450 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.94 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:390 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:468 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:388 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:468 0.72 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:468 0.72 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:455 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:468 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:401 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:398 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:456 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:398 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:468 0.57 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:415 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:388 0.53 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:388 0.53 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:415 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004acc50 <_bt_compare>: : _bt_compare(Relation rel, : int keysz, : ScanKey scankey, : Page page, : OffsetNumber offnum) : { 0.39 : 4acc50: 55 push %rbp 0.41 : 4acc51: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:388 0.74 : 4acc54: 41 57 push %r15 0.39 : 4acc56: 41 89 f7 mov %esi,%r15d 0.29 : 4acc59: 41 56 push %r14 0.56 : 4acc5b: 41 55 push %r13 0.39 : 4acc5d: 41 54 push %r12 0.06 : 4acc5f: 53 push %rbx 0.28 : 4acc60: 48 89 d3 mov %rdx,%rbx 0.53 : 4acc63: 48 83 ec 08 sub $0x8,%rsp : TupleDesc itupdesc = RelationGetDescr(rel); : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.44 : 4acc67: 0f b7 41 10 movzwl 0x10(%rcx),%eax : int keysz, : ScanKey scankey, : Page page, : OffsetNumber offnum) : { : TupleDesc itupdesc = RelationGetDescr(rel); 0.24 : 4acc6b: 4c 8b 77 38 mov 0x38(%rdi),%r14 : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:390 0.80 : 4acc6f: 48 8d 04 01 lea (%rcx,%rax,1),%rax : : /* : * Force result ">" if target item is first data item on an internal page : * --- see NOTE above. : */ : if (!P_ISLEAF(opaque) && offnum == P_FIRSTDATAKEY(opaque)) 0.43 : 4acc73: f6 40 0c 01 testb $0x1,0xc(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:398 0.58 : 4acc77: 75 1a jne 4acc93 <_bt_compare+0x43> 0.41 : 4acc79: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.35 : 4acc7d: 41 0f b7 d0 movzwl %r8w,%edx : : /* if the keys are unequal, return the difference */ : if (result != 0) : return result; : : scankey++; 0.11 : 4acc81: be 01 00 00 00 mov $0x1,%esi : : /* : * Force result ">" if target item is first data item on an internal page : * --- see NOTE above. : */ : if (!P_ISLEAF(opaque) && offnum == P_FIRSTDATAKEY(opaque)) 0.03 : 4acc86: 19 c0 sbb %eax,%eax 0.60 : 4acc88: 83 c0 02 add $0x2,%eax 0.50 : 4acc8b: 39 c2 cmp %eax,%edx 0.00 : 4acc8d: 0f 84 ab 00 00 00 je 4acd3e <_bt_compare+0xee> : return 1; : : itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:401 0.63 : 4acc93: 41 0f b7 c0 movzwl %r8w,%eax 0.22 : 4acc97: 0f b7 44 81 14 movzwl 0x14(%rcx,%rax,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:401 21.84 : 4acc9c: 25 ff 7f 00 00 and $0x7fff,%eax : * We don't test for violation of this condition here, however. The : * initial setup for the index scan had better have gotten it right (see : * _bt_first). : */ : : for (i = 1; i <= keysz; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:415 0.53 : 4acca1: 45 85 ff test %r15d,%r15d : * --- see NOTE above. : */ : if (!P_ISLEAF(opaque) && offnum == P_FIRSTDATAKEY(opaque)) : return 1; : : itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); 0.31 : 4acca4: 4c 8d 24 01 lea (%rcx,%rax,1),%r12 : * We don't test for violation of this condition here, however. The : * initial setup for the index scan had better have gotten it right (see : * _bt_first). : */ : : for (i = 1; i <= keysz; i++) 0.57 : 4acca8: 0f 8e a2 01 00 00 jle 4ace50 <_bt_compare+0x200> : { : Datum datum; : bool isNull; : int32 result; : : datum = index_getattr(itup, scankey->sk_attno, itupdesc, &isNull); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.65 : 4accae: 66 41 83 7c 24 06 00 cmpw $0x0,0x6(%r12) : * We don't test for violation of this condition here, however. The : * initial setup for the index scan had better have gotten it right (see : * _bt_first). : */ : : for (i = 1; i <= keysz; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:415 44.06 : 4accb5: 41 bd 01 00 00 00 mov $0x1,%r13d : { : Datum datum; : bool isNull; : int32 result; : : datum = index_getattr(itup, scankey->sk_attno, itupdesc, &isNull); 0.05 : 4accbb: 0f 88 d4 00 00 00 js 4acd95 <_bt_compare+0x145> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.94 : 4accc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.10 : 4accc8: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.03 : 4acccc: 49 8b 46 08 mov 0x8(%r14),%rax 0.13 : 4accd0: 48 0f bf d1 movswq %cx,%rdx 1.08 : 4accd4: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.43 : 4accd9: 8b 42 54 mov 0x54(%rdx),%eax 0.83 : 4accdc: 85 c0 test %eax,%eax 0.00 : 4accde: 0f 88 2c 01 00 00 js 4ace10 <_bt_compare+0x1c0> 0.18 : 4acce4: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 1.36 : 4acce8: 0f 84 0a 01 00 00 je 4acdf8 <_bt_compare+0x1a8> 0.21 : 4accee: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.06 : 4accf2: 66 83 fa 08 cmp $0x8,%dx 0.00 : 4accf6: 0f 84 1c 01 00 00 je 4ace18 <_bt_compare+0x1c8> 0.28 : 4accfc: 66 83 fa 04 cmp $0x4,%dx 0.51 : 4acd00: 0f 84 2a 01 00 00 je 4ace30 <_bt_compare+0x1e0> 0.00 : 4acd06: 66 83 fa 02 cmp $0x2,%dx 0.00 : 4acd0a: 0f 84 30 01 00 00 je 4ace40 <_bt_compare+0x1f0> 0.00 : 4acd10: 48 98 cltq 0.00 : 4acd12: 31 d2 xor %edx,%edx 0.00 : 4acd14: 45 0f b6 44 04 08 movzbl 0x8(%r12,%rax,1),%r8d 0.00 : 4acd1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* see comments about NULLs handling in btbuild */ : if (scankey->sk_flags & SK_ISNULL) /* key is NULL */ 0.20 : 4acd20: 8b 03 mov (%rbx),%eax 0.02 : 4acd22: a8 01 test $0x1,%al 0.00 : 4acd24: 0f 84 ae 00 00 00 je 4acdd8 <_bt_compare+0x188> : { : if (isNull) 0.00 : 4acd2a: 84 d2 test %dl,%dl 0.00 : 4acd2c: 75 49 jne 4acd77 <_bt_compare+0x127> : result = 0; /* NULL "=" NULL */ : else if (scankey->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4acd2e: a9 00 00 00 02 test $0x2000000,%eax 0.00 : 4acd33: 0f 84 b2 00 00 00 je 4acdeb <_bt_compare+0x19b> : : /* if the keys are unequal, return the difference */ : if (result != 0) : return result; : : scankey++; 0.00 : 4acd39: be ff ff ff ff mov $0xffffffff,%esi : } : : /* if we get here, the keys are equal */ : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:468 0.78 : 4acd3e: 48 83 c4 08 add $0x8,%rsp 0.70 : 4acd42: 89 f0 mov %esi,%eax 0.07 : 4acd44: 5b pop %rbx 1.21 : 4acd45: 41 5c pop %r12 0.58 : 4acd47: 41 5d pop %r13 0.41 : 4acd49: 41 5e pop %r14 0.02 : 4acd4b: 41 5f pop %r15 0.72 : 4acd4d: c9 leaveq 0.73 : 4acd4e: c3 retq 0.00 : 4acd4f: 90 nop : * types). Since it is convenient for callers to think of : * _bt_compare as comparing the scankey to the index item, we have : * to flip the sign of the comparison result. (Unless it's a DESC : * column, in which case we *don't* flip the sign.) : */ : result = DatumGetInt32(FunctionCall2Coll(&scankey->sk_func, /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:450 1.11 : 4acd50: 8b 73 0c mov 0xc(%rbx),%esi 0.08 : 4acd53: 48 8b 4b 40 mov 0x40(%rbx),%rcx 0.00 : 4acd57: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 4acd5b: 4c 89 c2 mov %r8,%rdx 1.17 : 4acd5e: e8 cd 12 2d 00 callq 77e030 1.14 : 4acd63: 89 c6 mov %eax,%esi : scankey->sk_collation, : datum, : scankey->sk_argument)); : : if (!(scankey->sk_flags & SK_BT_DESC)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:455 0.72 : 4acd65: 8b 03 mov (%rbx),%eax : result = -result; 0.07 : 4acd67: 89 f2 mov %esi,%edx 0.00 : 4acd69: f7 da neg %edx 0.43 : 4acd6b: a9 00 00 00 01 test $0x1000000,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:456 0.59 : 4acd70: 0f 44 f2 cmove %edx,%esi : } : : /* if the keys are unequal, return the difference */ : if (result != 0) 0.27 : 4acd73: 85 f6 test %esi,%esi 0.00 : 4acd75: 75 c7 jne 4acd3e <_bt_compare+0xee> : * We don't test for violation of this condition here, however. The : * initial setup for the index scan had better have gotten it right (see : * _bt_first). : */ : : for (i = 1; i <= keysz; i++) 0.38 : 4acd77: 41 83 c5 01 add $0x1,%r13d 0.16 : 4acd7b: 45 39 ef cmp %r13d,%r15d 0.06 : 4acd7e: 0f 8c cc 00 00 00 jl 4ace50 <_bt_compare+0x200> : : /* if the keys are unequal, return the difference */ : if (result != 0) : return result; : : scankey++; 0.00 : 4acd84: 48 83 c3 48 add $0x48,%rbx : { : Datum datum; : bool isNull; : int32 result; : : datum = index_getattr(itup, scankey->sk_attno, itupdesc, &isNull); 0.00 : 4acd88: 66 41 83 7c 24 06 00 cmpw $0x0,0x6(%r12) 0.00 : 4acd8f: 0f 89 33 ff ff ff jns 4accc8 <_bt_compare+0x78> 0.00 : 4acd95: 0f bf 73 04 movswl 0x4(%rbx),%esi 0.00 : 4acd99: 45 31 c0 xor %r8d,%r8d 0.00 : 4acd9c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4acda1: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4acda4: 89 c8 mov %ecx,%eax 0.00 : 4acda6: 83 e1 07 and $0x7,%ecx 0.00 : 4acda9: c1 f8 03 sar $0x3,%eax 0.00 : 4acdac: 48 98 cltq 0.00 : 4acdae: 41 0f be 44 04 08 movsbl 0x8(%r12,%rax,1),%eax 0.00 : 4acdb4: d3 f8 sar %cl,%eax 0.00 : 4acdb6: a8 01 test $0x1,%al 0.00 : 4acdb8: 0f 84 62 ff ff ff je 4acd20 <_bt_compare+0xd0> 0.00 : 4acdbe: 4c 89 f2 mov %r14,%rdx 0.00 : 4acdc1: 4c 89 e7 mov %r12,%rdi 0.00 : 4acdc4: e8 97 3d fc ff callq 470b60 0.00 : 4acdc9: 49 89 c0 mov %rax,%r8 : : /* see comments about NULLs handling in btbuild */ : if (scankey->sk_flags & SK_ISNULL) /* key is NULL */ 0.00 : 4acdcc: 8b 03 mov (%rbx),%eax : { : Datum datum; : bool isNull; : int32 result; : : datum = index_getattr(itup, scankey->sk_attno, itupdesc, &isNull); 0.00 : 4acdce: 31 d2 xor %edx,%edx : : /* see comments about NULLs handling in btbuild */ : if (scankey->sk_flags & SK_ISNULL) /* key is NULL */ 0.00 : 4acdd0: a8 01 test $0x1,%al 0.00 : 4acdd2: 0f 85 52 ff ff ff jne 4acd2a <_bt_compare+0xda> : else if (scankey->sk_flags & SK_BT_NULLS_FIRST) : result = -1; /* NULL "<" NOT_NULL */ : else : result = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull) /* key is NOT_NULL and item is NULL */ /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:433 1.22 : 4acdd8: 84 d2 test %dl,%dl 0.00 : 4acdda: 0f 84 70 ff ff ff je 4acd50 <_bt_compare+0x100> : { : if (scankey->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4acde0: a9 00 00 00 02 test $0x2000000,%eax 0.00 : 4acde5: 0f 84 4e ff ff ff je 4acd39 <_bt_compare+0xe9> : : /* if the keys are unequal, return the difference */ : if (result != 0) : return result; : : scankey++; 0.00 : 4acdeb: be 01 00 00 00 mov $0x1,%esi 0.00 : 4acdf0: e9 49 ff ff ff jmpq 4acd3e <_bt_compare+0xee> 0.00 : 4acdf5: 0f 1f 00 nopl (%rax) : { : Datum datum; : bool isNull; : int32 result; : : datum = index_getattr(itup, scankey->sk_attno, itupdesc, &isNull); 0.00 : 4acdf8: 48 98 cltq 0.00 : 4acdfa: 31 d2 xor %edx,%edx 0.00 : 4acdfc: 4d 8d 44 04 08 lea 0x8(%r12,%rax,1),%r8 0.00 : 4ace01: e9 1a ff ff ff jmpq 4acd20 <_bt_compare+0xd0> 0.00 : 4ace06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ace0d: 00 00 00 0.00 : 4ace10: 0f bf f1 movswl %cx,%esi 0.00 : 4ace13: eb a9 jmp 4acdbe <_bt_compare+0x16e> 0.00 : 4ace15: 0f 1f 00 nopl (%rax) 0.00 : 4ace18: 48 98 cltq 0.00 : 4ace1a: 31 d2 xor %edx,%edx 0.00 : 4ace1c: 4d 8b 44 04 08 mov 0x8(%r12,%rax,1),%r8 0.00 : 4ace21: e9 fa fe ff ff jmpq 4acd20 <_bt_compare+0xd0> 0.00 : 4ace26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ace2d: 00 00 00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:421 0.64 : 4ace30: 48 98 cltq 0.09 : 4ace32: 31 d2 xor %edx,%edx 0.02 : 4ace34: 45 8b 44 04 08 mov 0x8(%r12,%rax,1),%r8d 2.72 : 4ace39: e9 e2 fe ff ff jmpq 4acd20 <_bt_compare+0xd0> 0.00 : 4ace3e: 66 90 xchg %ax,%ax 0.00 : 4ace40: 48 98 cltq 0.00 : 4ace42: 31 d2 xor %edx,%edx 0.00 : 4ace44: 45 0f b7 44 04 08 movzwl 0x8(%r12,%rax,1),%r8d 0.00 : 4ace4a: e9 d1 fe ff ff jmpq 4acd20 <_bt_compare+0xd0> 0.00 : 4ace4f: 90 nop : : /* if the keys are unequal, return the difference */ : if (result != 0) : return result; : : scankey++; 0.08 : 4ace50: 31 f6 xor %esi,%esi 0.04 : 4ace52: e9 e7 fe ff ff jmpq 4acd3e <_bt_compare+0xee> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 4.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:74 4.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:83 3.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:70 2.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:99 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:74 2.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:83 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:83 2.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:99 2.47 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:83 2.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:136 2.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:83 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:138 2.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:139 2.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:83 2.13 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:77 2.13 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:137 2.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:140 2.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:70 2.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:94 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:89 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:142 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:143 1.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:141 1.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:144 1.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 1.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:145 1.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:70 1.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:97 1.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 1.47 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:82 1.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 1.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 1.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 1.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 1.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 1.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 0.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 0.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:145 0.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 0.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 0.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:99 0.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:79 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:70 0.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:144 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:143 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b7bd0 : : } : : /* Exit from a plan node */ : void : InstrStopNode(Instrumentation *instr, double nTuples) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:70 1.79 : 5b7bd0: 55 push %rbp 3.34 : 5b7bd1: 48 89 e5 mov %rsp,%rbp 0.34 : 5b7bd4: 53 push %rbx 2.10 : 5b7bd5: 48 89 fb mov %rdi,%rbx 0.60 : 5b7bd8: 48 83 ec 18 sub $0x18,%rsp : : /* count the returned tuples */ : instr->tuplecount += nTuples; : : /* let's update the time only if the timer was requested */ : if (instr->need_timer) 0.33 : 5b7bdc: 80 3f 00 cmpb $0x0,(%rdi) : InstrStopNode(Instrumentation *instr, double nTuples) : { : instr_time endtime; : : /* count the returned tuples */ : instr->tuplecount += nTuples; /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:74 2.86 : 5b7bdf: f2 0f 58 47 30 addsd 0x30(%rdi),%xmm0 4.90 : 5b7be4: f2 0f 11 47 30 movsd %xmm0,0x30(%rdi) : : /* let's update the time only if the timer was requested */ : if (instr->need_timer) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:77 2.13 : 5b7be9: 0f 84 90 00 00 00 je 5b7c7f : { : if (INSTR_TIME_IS_ZERO(instr->starttime)) 0.01 : 5b7bef: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:79 0.64 : 5b7bf4: 75 0b jne 5b7c01 0.00 : 5b7bf6: 48 83 7f 08 00 cmpq $0x0,0x8(%rdi) 0.00 : 5b7bfb: 0f 84 d1 02 00 00 je 5b7ed2 : elog(ERROR, "InstrStopNode called without start"); : : INSTR_TIME_SET_CURRENT(endtime); 0.14 : 5b7c01: 48 8d 7d e0 lea -0x20(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:82 1.47 : 5b7c05: 31 f6 xor %esi,%esi 0.01 : 5b7c07: e8 b4 19 eb ff callq 4695c0 : INSTR_TIME_ACCUM_DIFF(instr->counter, endtime, instr->starttime); /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:83 2.51 : 5b7c0c: 48 8b 45 e0 mov -0x20(%rbp),%rax 0.04 : 5b7c10: 48 03 43 18 add 0x18(%rbx),%rax 0.09 : 5b7c14: 48 2b 43 08 sub 0x8(%rbx),%rax 0.04 : 5b7c18: 48 89 43 18 mov %rax,0x18(%rbx) 2.47 : 5b7c1c: 48 8b 45 e8 mov -0x18(%rbp),%rax 0.17 : 5b7c20: 48 03 43 20 add 0x20(%rbx),%rax 4.68 : 5b7c24: 48 2b 43 10 sub 0x10(%rbx),%rax 2.19 : 5b7c28: 48 85 c0 test %rax,%rax 2.30 : 5b7c2b: 48 89 43 20 mov %rax,0x20(%rbx) 0.01 : 5b7c2f: 79 36 jns 5b7c67 0.00 : 5b7c31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5b7c38: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 5b7c3e: 48 83 6b 18 01 subq $0x1,0x18(%rbx) 0.00 : 5b7c43: 48 85 c0 test %rax,%rax 0.00 : 5b7c46: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5b7c4a: 78 ec js 5b7c38 0.00 : 5b7c4c: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 5b7c52: 7e 1b jle 5b7c6f 0.00 : 5b7c54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5b7c58: 48 83 43 18 01 addq $0x1,0x18(%rbx) 0.00 : 5b7c5d: 48 2d 40 42 0f 00 sub $0xf4240,%rax 0.00 : 5b7c63: 48 89 43 20 mov %rax,0x20(%rbx) 2.78 : 5b7c67: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 5b7c6d: 7f e9 jg 5b7c58 : : INSTR_TIME_SET_ZERO(instr->starttime); 0.10 : 5b7c6f: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 5b7c76: 00 0.06 : 5b7c77: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5b7c7e: 00 : } : : /* Add delta of buffer usage since entry to node's totals */ : if (instr->need_bufusage) 0.10 : 5b7c7f: 80 7b 01 00 cmpb $0x0,0x1(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:89 2.04 : 5b7c83: 75 33 jne 5b7cb8 : BufferUsageAccumDiff(&instr->bufusage, : &pgBufferUsage, &instr->bufusage_start); : : /* Is this the first tuple of this cycle? */ : if (!instr->running) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:94 2.05 : 5b7c85: 80 7b 02 00 cmpb $0x0,0x2(%rbx) 0.14 : 5b7c89: 75 21 jne 5b7cac : { : instr->running = true; : instr->firsttuple = INSTR_TIME_GET_DOUBLE(instr->counter); 0.05 : 5b7c8b: f2 48 0f 2a 43 20 cvtsi2sdq 0x20(%rbx),%xmm0 0.12 : 5b7c91: f2 0f 5e 05 47 49 2c divsd 0x2c4947(%rip),%xmm0 # 87c5e0 <__func__.18742+0x1b> 0.00 : 5b7c98: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:97 1.72 : 5b7c99: f2 48 0f 2a 4b 18 cvtsi2sdq 0x18(%rbx),%xmm1 : &pgBufferUsage, &instr->bufusage_start); : : /* Is this the first tuple of this cycle? */ : if (!instr->running) : { : instr->running = true; 0.00 : 5b7c9f: c6 43 02 01 movb $0x1,0x2(%rbx) : instr->firsttuple = INSTR_TIME_GET_DOUBLE(instr->counter); 0.00 : 5b7ca3: f2 0f 58 c8 addsd %xmm0,%xmm1 0.14 : 5b7ca7: f2 0f 11 4b 28 movsd %xmm1,0x28(%rbx) : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:99 2.49 : 5b7cac: 48 83 c4 18 add $0x18,%rsp 0.06 : 5b7cb0: 5b pop %rbx 0.69 : 5b7cb1: c9 leaveq 2.94 : 5b7cb2: c3 retq 0.00 : 5b7cb3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : static void : BufferUsageAccumDiff(BufferUsage *dst, : const BufferUsage *add, : const BufferUsage *sub) : { : dst->shared_blks_hit += add->shared_blks_hit - sub->shared_blks_hit; 0.27 : 5b7cb8: 48 8b 05 a1 7a 60 00 mov 0x607aa1(%rip),%rax # bbf760 0.31 : 5b7cbf: 48 03 83 d8 00 00 00 add 0xd8(%rbx),%rax 0.41 : 5b7cc6: 48 2b 43 38 sub 0x38(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:136 2.33 : 5b7cca: 48 89 83 d8 00 00 00 mov %rax,0xd8(%rbx) : dst->shared_blks_read += add->shared_blks_read - sub->shared_blks_read; 0.27 : 5b7cd1: 48 8b 05 90 7a 60 00 mov 0x607a90(%rip),%rax # bbf768 0.00 : 5b7cd8: 48 03 83 e0 00 00 00 add 0xe0(%rbx),%rax 0.11 : 5b7cdf: 48 2b 43 40 sub 0x40(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:137 2.13 : 5b7ce3: 48 89 83 e0 00 00 00 mov %rax,0xe0(%rbx) : dst->shared_blks_dirtied += add->shared_blks_dirtied - sub->shared_blks_dirtied; 0.24 : 5b7cea: 48 8b 05 7f 7a 60 00 mov 0x607a7f(%rip),%rax # bbf770 0.01 : 5b7cf1: 48 03 83 e8 00 00 00 add 0xe8(%rbx),%rax 0.10 : 5b7cf8: 48 2b 43 48 sub 0x48(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:138 2.29 : 5b7cfc: 48 89 83 e8 00 00 00 mov %rax,0xe8(%rbx) : dst->shared_blks_written += add->shared_blks_written - sub->shared_blks_written; 0.24 : 5b7d03: 48 8b 05 6e 7a 60 00 mov 0x607a6e(%rip),%rax # bbf778 0.02 : 5b7d0a: 48 03 83 f0 00 00 00 add 0xf0(%rbx),%rax 0.21 : 5b7d11: 48 2b 43 50 sub 0x50(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:139 2.24 : 5b7d15: 48 89 83 f0 00 00 00 mov %rax,0xf0(%rbx) : dst->local_blks_hit += add->local_blks_hit - sub->local_blks_hit; 0.26 : 5b7d1c: 48 8b 05 5d 7a 60 00 mov 0x607a5d(%rip),%rax # bbf780 0.14 : 5b7d23: 48 03 83 f8 00 00 00 add 0xf8(%rbx),%rax 0.17 : 5b7d2a: 48 2b 43 58 sub 0x58(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:140 2.12 : 5b7d2e: 48 89 83 f8 00 00 00 mov %rax,0xf8(%rbx) : dst->local_blks_read += add->local_blks_read - sub->local_blks_read; 0.39 : 5b7d35: 48 8b 05 4c 7a 60 00 mov 0x607a4c(%rip),%rax # bbf788 0.03 : 5b7d3c: 48 03 83 00 01 00 00 add 0x100(%rbx),%rax 0.40 : 5b7d43: 48 2b 43 60 sub 0x60(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:141 1.97 : 5b7d47: 48 89 83 00 01 00 00 mov %rax,0x100(%rbx) : dst->local_blks_dirtied += add->local_blks_dirtied - sub->local_blks_dirtied; 0.47 : 5b7d4e: 48 8b 05 3b 7a 60 00 mov 0x607a3b(%rip),%rax # bbf790 0.02 : 5b7d55: 48 03 83 08 01 00 00 add 0x108(%rbx),%rax 0.08 : 5b7d5c: 48 2b 43 68 sub 0x68(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:142 2.04 : 5b7d60: 48 89 83 08 01 00 00 mov %rax,0x108(%rbx) : dst->local_blks_written += add->local_blks_written - sub->local_blks_written; /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:143 0.52 : 5b7d67: 48 8b 05 2a 7a 60 00 mov 0x607a2a(%rip),%rax # bbf798 0.04 : 5b7d6e: 48 03 83 10 01 00 00 add 0x110(%rbx),%rax 0.32 : 5b7d75: 48 2b 43 70 sub 0x70(%rbx),%rax 2.01 : 5b7d79: 48 89 83 10 01 00 00 mov %rax,0x110(%rbx) : dst->temp_blks_read += add->temp_blks_read - sub->temp_blks_read; /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:144 0.59 : 5b7d80: 48 8b 05 19 7a 60 00 mov 0x607a19(%rip),%rax # bbf7a0 0.09 : 5b7d87: 48 03 83 18 01 00 00 add 0x118(%rbx),%rax 0.30 : 5b7d8e: 48 2b 43 78 sub 0x78(%rbx),%rax 1.92 : 5b7d92: 48 89 83 18 01 00 00 mov %rax,0x118(%rbx) : dst->temp_blks_written += add->temp_blks_written - sub->temp_blks_written; /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:145 0.89 : 5b7d99: 48 8b 05 08 7a 60 00 mov 0x607a08(%rip),%rax # bbf7a8 0.02 : 5b7da0: 48 03 83 20 01 00 00 add 0x120(%rbx),%rax 0.40 : 5b7da7: 48 2b 83 80 00 00 00 sub 0x80(%rbx),%rax 1.83 : 5b7dae: 48 89 83 20 01 00 00 mov %rax,0x120(%rbx) : INSTR_TIME_ACCUM_DIFF(dst->blk_read_time, /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:146 1.02 : 5b7db5: 48 8b 05 f4 79 60 00 mov 0x6079f4(%rip),%rax # bbf7b0 0.06 : 5b7dbc: 48 03 83 28 01 00 00 add 0x128(%rbx),%rax 0.55 : 5b7dc3: 48 2b 83 88 00 00 00 sub 0x88(%rbx),%rax 1.70 : 5b7dca: 48 89 83 28 01 00 00 mov %rax,0x128(%rbx) 1.21 : 5b7dd1: 48 8b 05 e0 79 60 00 mov 0x6079e0(%rip),%rax # bbf7b8 0.13 : 5b7dd8: 48 03 83 30 01 00 00 add 0x130(%rbx),%rax 0.63 : 5b7ddf: 48 2b 83 90 00 00 00 sub 0x90(%rbx),%rax 1.50 : 5b7de6: 48 85 c0 test %rax,%rax 1.22 : 5b7de9: 48 89 83 30 01 00 00 mov %rax,0x130(%rbx) 0.05 : 5b7df0: 79 43 jns 5b7e35 0.00 : 5b7df2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b7df8: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 5b7dfe: 48 83 ab 28 01 00 00 subq $0x1,0x128(%rbx) 0.00 : 5b7e05: 01 0.00 : 5b7e06: 48 85 c0 test %rax,%rax 0.00 : 5b7e09: 48 89 83 30 01 00 00 mov %rax,0x130(%rbx) 0.00 : 5b7e10: 78 e6 js 5b7df8 0.00 : 5b7e12: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 5b7e18: 7e 23 jle 5b7e3d 0.00 : 5b7e1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b7e20: 48 83 83 28 01 00 00 addq $0x1,0x128(%rbx) 0.00 : 5b7e27: 01 0.00 : 5b7e28: 48 2d 40 42 0f 00 sub $0xf4240,%rax 0.00 : 5b7e2e: 48 89 83 30 01 00 00 mov %rax,0x130(%rbx) 0.86 : 5b7e35: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 5b7e3b: 7f e3 jg 5b7e20 : add->blk_read_time, sub->blk_read_time); : INSTR_TIME_ACCUM_DIFF(dst->blk_write_time, /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:148 1.01 : 5b7e3d: 48 8b 05 7c 79 60 00 mov 0x60797c(%rip),%rax # bbf7c0 1.24 : 5b7e44: 48 03 83 38 01 00 00 add 0x138(%rbx),%rax 0.55 : 5b7e4b: 48 2b 83 98 00 00 00 sub 0x98(%rbx),%rax 0.99 : 5b7e52: 48 89 83 38 01 00 00 mov %rax,0x138(%rbx) 1.38 : 5b7e59: 48 8b 05 68 79 60 00 mov 0x607968(%rip),%rax # bbf7c8 0.74 : 5b7e60: 48 03 83 40 01 00 00 add 0x140(%rbx),%rax 1.09 : 5b7e67: 48 2b 83 a0 00 00 00 sub 0xa0(%rbx),%rax 0.83 : 5b7e6e: 48 85 c0 test %rax,%rax 1.90 : 5b7e71: 48 89 83 40 01 00 00 mov %rax,0x140(%rbx) 0.48 : 5b7e78: 79 4b jns 5b7ec5 0.00 : 5b7e7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b7e80: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 5b7e86: 48 83 ab 38 01 00 00 subq $0x1,0x138(%rbx) 0.00 : 5b7e8d: 01 0.00 : 5b7e8e: 48 85 c0 test %rax,%rax 0.00 : 5b7e91: 48 89 83 40 01 00 00 mov %rax,0x140(%rbx) 0.00 : 5b7e98: 78 e6 js 5b7e80 0.00 : 5b7e9a: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 5b7ea0: 0f 8e df fd ff ff jle 5b7c85 0.00 : 5b7ea6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5b7ead: 00 00 00 0.00 : 5b7eb0: 48 83 83 38 01 00 00 addq $0x1,0x138(%rbx) 0.00 : 5b7eb7: 01 0.00 : 5b7eb8: 48 2d 40 42 0f 00 sub $0xf4240,%rax 0.00 : 5b7ebe: 48 89 83 40 01 00 00 mov %rax,0x140(%rbx) 1.34 : 5b7ec5: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 5b7ecb: 7f e3 jg 5b7eb0 0.62 : 5b7ecd: e9 b3 fd ff ff jmpq 5b7c85 : : /* let's update the time only if the timer was requested */ : if (instr->need_timer) : { : if (INSTR_TIME_IS_ZERO(instr->starttime)) : elog(ERROR, "InstrStopNode called without start"); 0.00 : 5b7ed2: ba 8a b6 88 00 mov $0x88b68a,%edx 0.00 : 5b7ed7: be 50 00 00 00 mov $0x50,%esi 0.00 : 5b7edc: bf fa b5 88 00 mov $0x88b5fa,%edi 0.00 : 5b7ee1: e8 3a 35 1c 00 callq 77b420 0.00 : 5b7ee6: be 30 b6 88 00 mov $0x88b630,%esi 0.00 : 5b7eeb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b7ef0: 31 c0 xor %eax,%eax 0.00 : 5b7ef2: e8 39 33 1c 00 callq 77b230 0.00 : 5b7ef7: e8 d4 15 eb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 18.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5169 7.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5169 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5179 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 4.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 3.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 3.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 3.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 3.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 3.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 2.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 2.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 2.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 2.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 2.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5163 1.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 1.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 1.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 1.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 1.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 1.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 1.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 1.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 1.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 1.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 1.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 0.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 0.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005acf10 : : * : * ---------------------------------------------------------------- : */ : bool : ExecQual(List *qual, ExprContext *econtext, bool resultForNull) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 1.08 : 5acf10: 55 push %rbp 3.09 : 5acf11: 48 89 e5 mov %rsp,%rbp 1.68 : 5acf14: 41 57 push %r15 1.93 : 5acf16: 41 56 push %r14 2.38 : 5acf18: 41 89 d6 mov %edx,%r14d 1.44 : 5acf1b: 41 55 push %r13 0.57 : 5acf1d: 41 54 push %r12 0.68 : 5acf1f: 49 89 f4 mov %rsi,%r12 1.98 : 5acf22: 53 push %rbx 1.76 : 5acf23: 48 83 ec 18 sub $0x18,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.82 : 5acf27: 48 8b 46 28 mov 0x28(%rsi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 4.65 : 5acf2b: 48 85 ff test %rdi,%rdi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 1.38 : 5acf2e: 4c 8b 3d 2b d9 60 00 mov 0x60d92b(%rip),%r15 # bba860 : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.56 : 5acf35: 48 89 05 24 d9 60 00 mov %rax,0x60d924(%rip) # bba860 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.74 : 5acf3c: 74 4a je 5acf88 1.69 : 5acf3e: 48 8b 5f 08 mov 0x8(%rdi),%rbx : * or more NULL subresult, with all the rest TRUE) and the caller has : * specified resultForNull = TRUE. : */ : result = true; : : foreach(l, qual) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 2.32 : 5acf42: 48 85 db test %rbx,%rbx 0.00 : 5acf45: 74 41 je 5acf88 0.34 : 5acf47: 4c 8d 6d d7 lea -0x29(%rbp),%r13 0.72 : 5acf4b: eb 11 jmp 5acf5e 0.00 : 5acf4d: 0f 1f 00 nopl (%rax) : : expr_value = ExecEvalExpr(clause, econtext, &isNull, NULL); : : if (isNull) : { : if (resultForNull == false) 0.00 : 5acf50: 45 84 f6 test %r14b,%r14b 0.00 : 5acf53: 74 24 je 5acf79 : * or more NULL subresult, with all the rest TRUE) and the caller has : * specified resultForNull = TRUE. : */ : result = true; : : foreach(l, qual) 0.55 : 5acf55: 48 8b 5b 08 mov 0x8(%rbx),%rbx 3.02 : 5acf59: 48 85 db test %rbx,%rbx 0.00 : 5acf5c: 74 2a je 5acf88 : { : ExprState *clause = (ExprState *) lfirst(l); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5163 2.12 : 5acf5e: 48 8b 03 mov (%rbx),%rax : Datum expr_value; : bool isNull; : : expr_value = ExecEvalExpr(clause, econtext, &isNull, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 4.27 : 5acf61: 31 c9 xor %ecx,%ecx 0.14 : 5acf63: 4c 89 ea mov %r13,%rdx 0.62 : 5acf66: 4c 89 e6 mov %r12,%rsi 1.84 : 5acf69: 48 89 c7 mov %rax,%rdi 2.52 : 5acf6c: ff 50 10 callq *0x10(%rax) : : if (isNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5169 7.54 : 5acf6f: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 18.82 : 5acf73: 75 db jne 5acf50 : break; : } : } : else : { : if (!DatumGetBool(expr_value)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5179 4.76 : 5acf75: 84 c0 test %al,%al 0.00 : 5acf77: 75 dc jne 5acf55 : * or more NULL subresult, with all the rest TRUE) and the caller has : * specified resultForNull = TRUE. : */ : result = true; : : foreach(l, qual) 0.48 : 5acf79: 31 c0 xor %eax,%eax 0.32 : 5acf7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.26 : 5acf80: eb 0b jmp 5acf8d 0.00 : 5acf82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 1.67 : 5acf88: b8 01 00 00 00 mov $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.76 : 5acf8d: 4c 89 3d cc d8 60 00 mov %r15,0x60d8cc(%rip) # bba860 : } : : MemoryContextSwitchTo(oldContext); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 3.94 : 5acf94: 48 83 c4 18 add $0x18,%rsp 1.24 : 5acf98: 5b pop %rbx 3.74 : 5acf99: 41 5c pop %r12 0.01 : 5acf9b: 41 5d pop %r13 0.90 : 5acf9d: 41 5e pop %r14 1.20 : 5acf9f: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 5.46 : 5acfa1: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 9.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:864 9.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 3.37 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 3.18 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 3.16 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 3.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 3.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 2.84 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 2.78 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:866 2.66 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 2.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:885 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 2.38 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 2.20 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 2.15 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 2.09 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:766 1.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:731 1.92 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:731 1.89 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 1.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 1.79 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:732 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 1.40 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 1.40 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 1.36 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:881 1.33 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:881 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 1.22 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.97 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:909 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 0.71 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:867 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:767 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:877 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:909 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 0.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:732 0.53 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 0.52 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004960f0 : : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 2.66 : 4960f0: 55 push %rbp : HeapTuple tuple = &(scan->rs_ctup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:731 1.92 : 4960f1: 48 8d 47 48 lea 0x48(%rdi),%rax : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.71 : 4960f5: 48 89 e5 mov %rsp,%rbp 1.27 : 4960f8: 41 57 push %r15 1.86 : 4960fa: 41 56 push %r14 1.40 : 4960fc: 41 55 push %r13 0.91 : 4960fe: 49 89 fd mov %rdi,%r13 0.31 : 496101: 41 54 push %r12 1.45 : 496103: 53 push %rbx 1.41 : 496104: 48 83 ec 48 sub $0x48,%rsp : HeapTuple tuple = &(scan->rs_ctup); : bool backward = ScanDirectionIsBackward(dir); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:732 0.55 : 496108: 83 fe ff cmp $0xffffffff,%esi : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 1.09 : 49610b: 89 55 ac mov %edx,-0x54(%rbp) : HeapTuple tuple = &(scan->rs_ctup); : bool backward = ScanDirectionIsBackward(dir); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:732 1.75 : 49610e: 0f 94 45 bf sete -0x41(%rbp) : ItemId lpp; : : /* : * calculate next starting lineindex, given scan direction : */ : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 1.79 : 496112: 83 ee 01 sub $0x1,%esi : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.51 : 496115: 48 89 4d a0 mov %rcx,-0x60(%rbp) : HeapTuple tuple = &(scan->rs_ctup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:731 1.93 : 496119: 48 89 45 b0 mov %rax,-0x50(%rbp) : ItemId lpp; : : /* : * calculate next starting lineindex, given scan direction : */ : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 2.20 : 49611d: 0f 84 fd 02 00 00 je 496420 : lines = scan->rs_ntuples; : /* page and lineindex now reference the next visible tid */ : : linesleft = lines - lineindex; : } : else if (backward) 0.00 : 496123: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 496127: 0f 84 67 02 00 00 je 496394 : { : if (!scan->rs_inited) 0.00 : 49612d: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.00 : 496131: 0f 84 2a 03 00 00 je 496461 : heapgetpage(scan, page); : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ 0.00 : 496137: 44 8b 7f 60 mov 0x60(%rdi),%r15d : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 49613b: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 49613f: 85 c0 test %eax,%eax 0.00 : 496141: 0f 88 24 05 00 00 js 49666b 0.00 : 496147: 83 e8 01 sub $0x1,%eax 0.00 : 49614a: 4c 63 f0 movslq %eax,%r14 0.00 : 49614d: 49 c1 e6 0d shl $0xd,%r14 0.00 : 496151: 4c 03 35 a0 99 72 00 add 0x7299a0(%rip),%r14 # bbfaf8 : lines = scan->rs_ntuples; : : if (!scan->rs_inited) 0.00 : 496158: 41 80 7d 41 00 cmpb $0x0,0x41(%r13) : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); : lines = scan->rs_ntuples; 0.00 : 49615d: 41 8b 45 78 mov 0x78(%r13),%eax : : if (!scan->rs_inited) 0.00 : 496161: 0f 85 c6 04 00 00 jne 49662d : { : lineindex = lines - 1; 0.00 : 496167: 83 e8 01 sub $0x1,%eax 0.00 : 49616a: 89 45 c0 mov %eax,-0x40(%rbp) : scan->rs_inited = true; 0.00 : 49616d: 41 c6 45 41 01 movb $0x1,0x41(%r13) : { : lineindex = scan->rs_cindex - 1; : } : /* page and lineindex now reference the previous visible tid */ : : linesleft = lineindex + 1; 0.00 : 496172: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 496175: 83 c2 01 add $0x1,%edx 0.00 : 496178: 89 55 c4 mov %edx,-0x3c(%rbp) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.11 : 49617b: 8b 55 ac mov -0x54(%rbp),%edx 0.39 : 49617e: 83 ea 01 sub $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:881 1.33 : 496181: 89 55 9c mov %edx,-0x64(%rbp) 1.36 : 496184: 0f 1f 40 00 nopl 0x0(%rax) : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.17 : 496188: 44 8b 45 c4 mov -0x3c(%rbp),%r8d /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:864 9.60 : 49618c: 45 85 c0 test %r8d,%r8d 0.00 : 49618f: 0f 8e 6b 01 00 00 jle 496300 : { : lineoff = scan->rs_vistuples[lineindex]; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:866 2.78 : 496195: 48 63 45 c0 movslq -0x40(%rbp),%rax 0.12 : 496199: 41 0f b7 4c 45 7c movzwl 0x7c(%r13,%rax,2),%ecx : lpp = PageGetItemId(dp, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:867 0.70 : 49619f: 0f b7 d1 movzwl %cx,%edx : Assert(ItemIdIsNormal(lpp)); : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 0.61 : 4961a2: 48 83 c2 03 add $0x3,%rdx 3.00 : 4961a6: 41 0f b7 44 96 08 movzwl 0x8(%r14,%rdx,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 9.25 : 4961ac: 25 ff 7f 00 00 and $0x7fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 2.38 : 4961b1: 49 8d 04 06 lea (%r14,%rax,1),%rax 3.11 : 4961b5: 49 89 45 58 mov %rax,0x58(%r13) : tuple->t_len = ItemIdGetLength(lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 3.37 : 4961b9: 41 0f b7 44 96 0a movzwl 0xa(%r14,%rdx,4),%eax : ItemPointerSet(&(tuple->t_self), page, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 0.81 : 4961bf: 66 45 89 7d 4e mov %r15w,0x4e(%r13) 0.01 : 4961c4: 66 41 89 4d 50 mov %cx,0x50(%r13) : lineoff = scan->rs_vistuples[lineindex]; : lpp = PageGetItemId(dp, lineoff); : Assert(ItemIdIsNormal(lpp)); : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : tuple->t_len = ItemIdGetLength(lpp); 0.00 : 4961c9: 66 d1 e8 shr %ax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 3.18 : 4961cc: 0f b7 c0 movzwl %ax,%eax 0.19 : 4961cf: 41 89 45 48 mov %eax,0x48(%r13) : ItemPointerSet(&(tuple->t_self), page, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 0.52 : 4961d3: 44 89 f8 mov %r15d,%eax 0.02 : 4961d6: c1 e8 10 shr $0x10,%eax 2.42 : 4961d9: 66 41 89 45 4c mov %ax,0x4c(%r13) : : /* : * if current tuple qualifies, return it. : */ : if (key != NULL) 0.00 : 4961de: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:877 0.67 : 4961e3: 0f 84 87 03 00 00 je 496570 : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 4961e9: 44 8b 4d ac mov -0x54(%rbp),%r9d 0.00 : 4961ed: 45 85 c9 test %r9d,%r9d 0.00 : 4961f0: 0f 84 7a 03 00 00 je 496570 0.00 : 4961f6: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 4961fa: 44 8b 65 9c mov -0x64(%rbp),%r12d 0.00 : 4961fe: f6 03 01 testb $0x1,(%rbx) 0.00 : 496201: 0f 84 a3 00 00 00 je 4962aa 0.00 : 496207: e9 c7 00 00 00 jmpq 4962d3 0.00 : 49620c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 496210: c6 45 d7 00 movb $0x0,-0x29(%rbp) 0.00 : 496214: f6 47 14 01 testb $0x1,0x14(%rdi) 0.00 : 496218: 0f 85 9a 02 00 00 jne 4964b8 0.00 : 49621e: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 496222: 48 0f bf d1 movswq %cx,%rdx 0.00 : 496226: 4c 8b 40 38 mov 0x38(%rax),%r8 0.00 : 49622a: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : 49622e: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 496233: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 496236: 85 c0 test %eax,%eax 0.00 : 496238: 0f 88 02 03 00 00 js 496540 0.00 : 49623e: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 496242: 0f 84 d8 02 00 00 je 496520 0.00 : 496248: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 49624c: 66 83 fa 08 cmp $0x8,%dx 0.00 : 496250: 0f 84 02 03 00 00 je 496558 0.00 : 496256: 66 83 fa 04 cmp $0x4,%dx 0.00 : 49625a: 0f 84 88 03 00 00 je 4965e8 0.00 : 496260: 66 83 fa 02 cmp $0x2,%dx 0.00 : 496264: 0f 84 96 03 00 00 je 496600 0.00 : 49626a: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 49626e: 48 98 cltq 0.00 : 496270: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496274: 0f b6 14 10 movzbl (%rax,%rdx,1),%edx 0.00 : 496278: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49627f: 00 0.00 : 496280: 48 8b 4b 40 mov 0x40(%rbx),%rcx 0.00 : 496284: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 496287: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 49628b: e8 a0 7d 2e 00 callq 77e030 0.00 : 496290: 84 c0 test %al,%al 0.00 : 496292: 74 3f je 4962d3 0.00 : 496294: 45 85 e4 test %r12d,%r12d 0.00 : 496297: 0f 84 d3 02 00 00 je 496570 0.00 : 49629d: 48 83 c3 48 add $0x48,%rbx 0.00 : 4962a1: f6 03 01 testb $0x1,(%rbx) 0.00 : 4962a4: 75 2d jne 4962d3 0.00 : 4962a6: 41 83 ec 01 sub $0x1,%r12d 0.00 : 4962aa: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.00 : 4962ae: 66 85 c9 test %cx,%cx 0.00 : 4962b1: 0f 8e 49 02 00 00 jle 496500 0.00 : 4962b7: 49 8b 7d 58 mov 0x58(%r13),%rdi 0.00 : 4962bb: 0f bf f1 movswl %cx,%esi 0.00 : 4962be: 0f b7 47 12 movzwl 0x12(%rdi),%eax 0.00 : 4962c2: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 4962c7: 39 c6 cmp %eax,%esi 0.00 : 4962c9: 0f 8e 41 ff ff ff jle 496210 0.00 : 4962cf: c6 45 d7 01 movb $0x1,-0x29(%rbp) : */ : --linesleft; : if (backward) : --lineindex; : else : ++lineindex; 0.00 : 4962d3: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 4962d6: 8b 45 c0 mov -0x40(%rbp),%eax : } : : /* : * otherwise move to the next item on the page : */ : --linesleft; 0.00 : 4962d9: 83 6d c4 01 subl $0x1,-0x3c(%rbp) : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.00 : 4962dd: 44 8b 45 c4 mov -0x3c(%rbp),%r8d : */ : --linesleft; : if (backward) : --lineindex; : else : ++lineindex; 0.00 : 4962e1: 83 c2 01 add $0x1,%edx 0.00 : 4962e4: 83 e8 01 sub $0x1,%eax 0.00 : 4962e7: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 4962eb: 0f 45 d0 cmovne %eax,%edx : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.00 : 4962ee: 45 85 c0 test %r8d,%r8d : */ : --linesleft; : if (backward) : --lineindex; : else : ++lineindex; 0.00 : 4962f1: 89 55 c0 mov %edx,-0x40(%rbp) : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.00 : 4962f4: 0f 8f 9b fe ff ff jg 496195 0.00 : 4962fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * if we get here, it means we've exhausted the items on this page and : * it's time to move to the next. : */ : if (backward) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:909 0.97 : 496300: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.60 : 496304: 0f 84 86 02 00 00 je 496590 : { : finished = (page == scan->rs_startblock) || 0.00 : 49630a: 45 39 7d 2c cmp %r15d,0x2c(%r13) 0.00 : 49630e: 74 1c je 49632c 0.00 : 496310: 41 8b 45 34 mov 0x34(%r13),%eax 0.00 : 496314: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 496317: 0f 84 15 02 00 00 je 496532 0.00 : 49631d: 83 e8 01 sub $0x1,%eax 0.00 : 496320: 85 c0 test %eax,%eax 0.00 : 496322: 41 89 45 34 mov %eax,0x34(%r13) 0.00 : 496326: 0f 85 06 02 00 00 jne 496532 0.00 : 49632c: bb 01 00 00 00 mov $0x1,%ebx : (scan->rs_numblocks != InvalidBlockNumber ? --scan->rs_numblocks <= 0 : false); : if (page == 0) 0.00 : 496331: 45 85 ff test %r15d,%r15d 0.00 : 496334: 75 04 jne 49633a : page = scan->rs_nblocks; 0.00 : 496336: 45 8b 7d 28 mov 0x28(%r13),%r15d : page--; 0.00 : 49633a: 41 83 ef 01 sub $0x1,%r15d : } : : /* : * return NULL if we've exhausted all the pages : */ : if (finished) 0.08 : 49633e: 84 db test %bl,%bl 0.00 : 496340: 0f 85 f6 02 00 00 jne 49663c : tuple->t_data = NULL; : scan->rs_inited = false; : return; : } : : heapgetpage(scan, page); 0.00 : 496346: 44 89 fe mov %r15d,%esi 0.00 : 496349: 4c 89 ef mov %r13,%rdi 0.04 : 49634c: e8 0f fb ff ff callq 495e60 : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.39 : 496351: 41 8b 45 64 mov 0x64(%r13),%eax 0.30 : 496355: 85 c0 test %eax,%eax 0.00 : 496357: 0f 88 bb 02 00 00 js 496618 0.06 : 49635d: 83 e8 01 sub $0x1,%eax 0.02 : 496360: 4c 63 f0 movslq %eax,%r14 0.07 : 496363: 49 c1 e6 0d shl $0xd,%r14 0.03 : 496367: 4c 03 35 8a 97 72 00 add 0x72978a(%rip),%r14 # bbfaf8 : lines = scan->rs_ntuples; : linesleft = lines; : if (backward) 0.12 : 49636e: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) : } : : heapgetpage(scan, page); : : dp = (Page) BufferGetPage(scan->rs_cbuf); : lines = scan->rs_ntuples; 0.03 : 496372: 41 8b 45 78 mov 0x78(%r13),%eax : linesleft = lines; : if (backward) 0.01 : 496376: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) 0.00 : 49637d: 89 45 c4 mov %eax,-0x3c(%rbp) 0.08 : 496380: 0f 84 02 fe ff ff je 496188 : lineindex = lines - 1; 0.00 : 496386: 8d 50 ff lea -0x1(%rax),%edx 0.00 : 496389: 89 45 c4 mov %eax,-0x3c(%rbp) 0.00 : 49638c: 89 55 c0 mov %edx,-0x40(%rbp) 0.00 : 49638f: e9 f4 fd ff ff jmpq 496188 : else : { : /* : * ``no movement'' scan direction: refetch prior tuple : */ : if (!scan->rs_inited) 0.00 : 496394: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.00 : 496398: 74 6e je 496408 : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; : return; : } : : page = ItemPointerGetBlockNumber(&(tuple->t_self)); 0.00 : 49639a: 0f b7 77 4c movzwl 0x4c(%rdi),%esi 0.00 : 49639e: 0f b7 47 4e movzwl 0x4e(%rdi),%eax 0.00 : 4963a2: c1 e6 10 shl $0x10,%esi 0.00 : 4963a5: 09 c6 or %eax,%esi : if (page != scan->rs_cblock) 0.00 : 4963a7: 39 77 60 cmp %esi,0x60(%rdi) 0.00 : 4963aa: 74 05 je 4963b1 : heapgetpage(scan, page); 0.00 : 4963ac: e8 af fa ff ff callq 495e60 : : /* Since the tuple was previously fetched, needn't lock page here */ : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 4963b1: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 4963b5: 85 c0 test %eax,%eax 0.00 : 4963b7: 0f 88 d8 02 00 00 js 496695 0.00 : 4963bd: 83 e8 01 sub $0x1,%eax 0.00 : 4963c0: 48 63 c8 movslq %eax,%rcx 0.00 : 4963c3: 48 c1 e1 0d shl $0xd,%rcx 0.00 : 4963c7: 48 03 0d 2a 97 72 00 add 0x72972a(%rip),%rcx # bbfaf8 : lineoff = ItemPointerGetOffsetNumber(&(tuple->t_self)); : lpp = PageGetItemId(dp, lineoff); 0.00 : 4963ce: 41 0f b7 45 50 movzwl 0x50(%r13),%eax : Assert(ItemIdIsNormal(lpp)); : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); 0.00 : 4963d3: 48 83 c0 03 add $0x3,%rax 0.00 : 4963d7: 0f b7 54 81 08 movzwl 0x8(%rcx,%rax,4),%edx 0.00 : 4963dc: 81 e2 ff 7f 00 00 and $0x7fff,%edx 0.00 : 4963e2: 48 8d 14 11 lea (%rcx,%rdx,1),%rdx 0.00 : 4963e6: 49 89 55 58 mov %rdx,0x58(%r13) : tuple->t_len = ItemIdGetLength(lpp); 0.00 : 4963ea: 0f b7 44 81 0a movzwl 0xa(%rcx,%rax,4),%eax 0.00 : 4963ef: 66 d1 e8 shr %ax 0.00 : 4963f2: 0f b7 c0 movzwl %ax,%eax 0.00 : 4963f5: 41 89 45 48 mov %eax,0x48(%r13) : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.00 : 4963f9: 48 83 c4 48 add $0x48,%rsp 0.00 : 4963fd: 5b pop %rbx 0.00 : 4963fe: 41 5c pop %r12 0.00 : 496400: 41 5d pop %r13 0.00 : 496402: 41 5e pop %r14 0.00 : 496404: 41 5f pop %r15 0.00 : 496406: c9 leaveq 0.00 : 496407: c3 retq : * ``no movement'' scan direction: refetch prior tuple : */ : if (!scan->rs_inited) : { : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; 0.00 : 496408: 49 c7 45 58 00 00 00 movq $0x0,0x58(%r13) 0.00 : 49640f: 00 : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.00 : 496410: 48 83 c4 48 add $0x48,%rsp 0.00 : 496414: 5b pop %rbx 0.00 : 496415: 41 5c pop %r12 0.00 : 496417: 41 5d pop %r13 0.00 : 496419: 41 5e pop %r14 0.00 : 49641b: 41 5f pop %r15 0.00 : 49641d: c9 leaveq 0.00 : 49641e: c3 retq 0.00 : 49641f: 90 nop : /* : * calculate next starting lineindex, given scan direction : */ : if (ScanDirectionIsForward(dir)) : { : if (!scan->rs_inited) 0.18 : 496420: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.36 : 496424: 74 66 je 49648c : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : lineindex = scan->rs_cindex + 1; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:767 0.69 : 496426: 8b 47 70 mov 0x70(%rdi),%eax : scan->rs_inited = true; : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:766 2.09 : 496429: 44 8b 7f 60 mov 0x60(%rdi),%r15d : lineindex = scan->rs_cindex + 1; 0.19 : 49642d: 83 c0 01 add $0x1,%eax 0.20 : 496430: 89 45 c0 mov %eax,-0x40(%rbp) : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 1.22 : 496433: 41 8b 45 64 mov 0x64(%r13),%eax 1.89 : 496437: 85 c0 test %eax,%eax 0.00 : 496439: 0f 88 41 02 00 00 js 496680 0.20 : 49643f: 83 e8 01 sub $0x1,%eax 0.14 : 496442: 4c 63 f0 movslq %eax,%r14 0.53 : 496445: 49 c1 e6 0d shl $0xd,%r14 2.15 : 496449: 4c 03 35 a8 96 72 00 add 0x7296a8(%rip),%r14 # bbfaf8 : lines = scan->rs_ntuples; : /* page and lineindex now reference the next visible tid */ : : linesleft = lines - lineindex; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 0.56 : 496450: 41 8b 55 78 mov 0x78(%r13),%edx 0.16 : 496454: 8b 45 c0 mov -0x40(%rbp),%eax 1.40 : 496457: 29 c2 sub %eax,%edx 2.84 : 496459: 89 55 c4 mov %edx,-0x3c(%rbp) 1.49 : 49645c: e9 1a fd ff ff jmpq 49617b : if (!scan->rs_inited) : { : /* : * return null immediately if relation is empty : */ : if (scan->rs_nblocks == 0) 0.00 : 496461: 44 8b 57 28 mov 0x28(%rdi),%r10d 0.00 : 496465: 45 85 d2 test %r10d,%r10d 0.00 : 496468: 74 9e je 496408 : * time, and much more likely that we'll just bollix things for : * forward scanners. : */ : scan->rs_syncscan = false; : /* start from last page of the scan */ : if (scan->rs_startblock > 0) 0.00 : 49646a: 8b 47 2c mov 0x2c(%rdi),%eax : * Disable reporting to syncscan logic in a backwards scan; it's : * not very likely anyone else is doing the same thing at the same : * time, and much more likely that we'll just bollix things for : * forward scanners. : */ : scan->rs_syncscan = false; 0.00 : 49646d: c6 47 40 00 movb $0x0,0x40(%rdi) : /* start from last page of the scan */ : if (scan->rs_startblock > 0) 0.00 : 496471: 85 c0 test %eax,%eax 0.00 : 496473: 75 03 jne 496478 : page = scan->rs_startblock - 1; : else : page = scan->rs_nblocks - 1; 0.00 : 496475: 8b 47 28 mov 0x28(%rdi),%eax 0.00 : 496478: 44 8d 78 ff lea -0x1(%rax),%r15d : heapgetpage(scan, page); 0.00 : 49647c: 4c 89 ef mov %r13,%rdi 0.00 : 49647f: 44 89 fe mov %r15d,%esi 0.00 : 496482: e8 d9 f9 ff ff callq 495e60 0.00 : 496487: e9 af fc ff ff jmpq 49613b : if (!scan->rs_inited) : { : /* : * return null immediately if relation is empty : */ : if (scan->rs_nblocks == 0) 0.00 : 49648c: 44 8b 5f 28 mov 0x28(%rdi),%r11d 0.00 : 496490: 45 85 db test %r11d,%r11d 0.00 : 496493: 0f 84 6f ff ff ff je 496408 : { : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; : return; : } : page = scan->rs_startblock; /* first page */ 0.00 : 496499: 44 8b 7f 2c mov 0x2c(%rdi),%r15d : heapgetpage(scan, page); 0.00 : 49649d: 44 89 fe mov %r15d,%esi 0.00 : 4964a0: e8 bb f9 ff ff callq 495e60 : lineindex = 0; : scan->rs_inited = true; 0.00 : 4964a5: 41 c6 45 41 01 movb $0x1,0x41(%r13) 0.00 : 4964aa: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) 0.00 : 4964b1: eb 80 jmp 496433 0.00 : 4964b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 4964b8: 0f bf 73 04 movswl 0x4(%rbx),%esi 0.00 : 4964bc: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4964bf: 89 c8 mov %ecx,%eax 0.00 : 4964c1: 83 e1 07 and $0x7,%ecx 0.00 : 4964c4: c1 f8 03 sar $0x3,%eax 0.00 : 4964c7: 48 98 cltq 0.00 : 4964c9: 0f b6 44 07 17 movzbl 0x17(%rdi,%rax,1),%eax 0.00 : 4964ce: d3 f8 sar %cl,%eax 0.00 : 4964d0: a8 01 test $0x1,%al 0.00 : 4964d2: 0f 84 f7 fd ff ff je 4962cf 0.00 : 4964d8: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 4964dc: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4964e0: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 4964e4: e8 a7 94 fd ff callq 46f990 0.00 : 4964e9: 48 89 c2 mov %rax,%rdx 0.00 : 4964ec: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 4964f0: 0f 84 8a fd ff ff je 496280 0.00 : 4964f6: e9 d8 fd ff ff jmpq 4962d3 0.00 : 4964fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 496500: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 496504: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 496508: 0f bf f1 movswl %cx,%esi 0.00 : 49650b: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 49650f: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 496513: e8 b8 87 fd ff callq 46ecd0 0.00 : 496518: 48 89 c2 mov %rax,%rdx 0.00 : 49651b: eb cf jmp 4964ec 0.00 : 49651d: 0f 1f 00 nopl (%rax) 0.00 : 496520: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496524: 48 98 cltq 0.00 : 496526: 48 01 d0 add %rdx,%rax 0.00 : 496529: 48 8d 14 07 lea (%rdi,%rax,1),%rdx 0.00 : 49652d: e9 4e fd ff ff jmpq 496280 : * if we get here, it means we've exhausted the items on this page and : * it's time to move to the next. : */ : if (backward) : { : finished = (page == scan->rs_startblock) || 0.00 : 496532: 31 db xor %ebx,%ebx 0.00 : 496534: e9 f8 fd ff ff jmpq 496331 0.00 : 496539: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 496540: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 496544: 4c 89 c2 mov %r8,%rdx 0.00 : 496547: e8 44 94 fd ff callq 46f990 0.00 : 49654c: 48 89 c2 mov %rax,%rdx 0.00 : 49654f: eb 9b jmp 4964ec 0.00 : 496551: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 496558: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 49655c: 48 98 cltq 0.00 : 49655e: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496562: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 496566: e9 15 fd ff ff jmpq 496280 0.00 : 49656b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : nkeys, key, valid); : if (valid) : { : scan->rs_cindex = lineindex; 0.03 : 496570: 8b 45 c0 mov -0x40(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:885 2.62 : 496573: 41 89 45 70 mov %eax,0x70(%r13) : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.02 : 496577: 48 83 c4 48 add $0x48,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 0.58 : 49657b: 5b pop %rbx 0.03 : 49657c: 41 5c pop %r12 2.59 : 49657e: 41 5d pop %r13 0.03 : 496580: 41 5e pop %r14 0.78 : 496582: 41 5f pop %r15 0.08 : 496584: c9 leaveq 3.16 : 496585: c3 retq 0.00 : 496586: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 49658d: 00 00 00 : page = scan->rs_nblocks; : page--; : } : else : { : page++; 0.03 : 496590: 41 83 c7 01 add $0x1,%r15d : if (page >= scan->rs_nblocks) 0.00 : 496594: 45 3b 7d 28 cmp 0x28(%r13),%r15d 0.12 : 496598: b8 00 00 00 00 mov $0x0,%eax 0.00 : 49659d: 44 0f 43 f8 cmovae %eax,%r15d : page = 0; : finished = (page == scan->rs_startblock) || 0.08 : 4965a1: 45 39 7d 2c cmp %r15d,0x2c(%r13) 0.00 : 4965a5: 74 14 je 4965bb 0.06 : 4965a7: 41 8b 45 34 mov 0x34(%r13),%eax 0.00 : 4965ab: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 4965ae: 74 2c je 4965dc 0.00 : 4965b0: 83 e8 01 sub $0x1,%eax 0.00 : 4965b3: 85 c0 test %eax,%eax 0.00 : 4965b5: 41 89 45 34 mov %eax,0x34(%r13) 0.00 : 4965b9: 75 21 jne 4965dc 0.00 : 4965bb: bb 01 00 00 00 mov $0x1,%ebx : * rel. That's not strictly necessary, but otherwise when you run : * the same query multiple times the starting position would shift : * a little bit backwards on every invocation, which is confusing. : * We don't guarantee any specific ordering in general, though. : */ : if (scan->rs_syncscan) 0.24 : 4965c0: 41 80 7d 40 00 cmpb $0x0,0x40(%r13) 0.23 : 4965c5: 0f 84 73 fd ff ff je 49633e : ss_report_location(scan->rs_rd, page); 0.08 : 4965cb: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.11 : 4965cf: 44 89 fe mov %r15d,%esi 0.00 : 4965d2: e8 49 a8 00 00 callq 4a0e20 0.02 : 4965d7: e9 62 fd ff ff jmpq 49633e : else : { : page++; : if (page >= scan->rs_nblocks) : page = 0; : finished = (page == scan->rs_startblock) || 0.03 : 4965dc: 31 db xor %ebx,%ebx 0.03 : 4965de: 66 90 xchg %ax,%ax 0.08 : 4965e0: eb de jmp 4965c0 0.00 : 4965e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 4965e8: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 4965ec: 48 98 cltq 0.00 : 4965ee: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 4965f2: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 4965f5: e9 86 fc ff ff jmpq 496280 0.00 : 4965fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 496600: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496604: 48 98 cltq 0.00 : 496606: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 49660a: 0f b7 14 10 movzwl (%rax,%rdx,1),%edx 0.00 : 49660e: e9 6d fc ff ff jmpq 496280 0.00 : 496613: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return; : } : : heapgetpage(scan, page); : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496618: f7 d0 not %eax 0.00 : 49661a: 48 63 d0 movslq %eax,%rdx 0.00 : 49661d: 48 8b 05 f4 6a 6e 00 mov 0x6e6af4(%rip),%rax # b7d118 0.00 : 496624: 4c 8b 34 d0 mov (%rax,%rdx,8),%r14 0.00 : 496628: e9 41 fd ff ff jmpq 49636e : lineindex = lines - 1; : scan->rs_inited = true; : } : else : { : lineindex = scan->rs_cindex - 1; 0.00 : 49662d: 41 8b 45 70 mov 0x70(%r13),%eax 0.00 : 496631: 83 e8 01 sub $0x1,%eax 0.00 : 496634: 89 45 c0 mov %eax,-0x40(%rbp) 0.00 : 496637: e9 36 fb ff ff jmpq 496172 : /* : * return NULL if we've exhausted all the pages : */ : if (finished) : { : if (BufferIsValid(scan->rs_cbuf)) 0.00 : 49663c: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 496640: 85 ff test %edi,%edi 0.00 : 496642: 74 05 je 496649 : ReleaseBuffer(scan->rs_cbuf); 0.00 : 496644: e8 17 e8 1d 00 callq 674e60 : scan->rs_cbuf = InvalidBuffer; 0.00 : 496649: 41 c7 45 64 00 00 00 movl $0x0,0x64(%r13) 0.00 : 496650: 00 : scan->rs_cblock = InvalidBlockNumber; 0.00 : 496651: 41 c7 45 60 ff ff ff movl $0xffffffff,0x60(%r13) 0.00 : 496658: ff : tuple->t_data = NULL; 0.00 : 496659: 49 c7 45 58 00 00 00 movq $0x0,0x58(%r13) 0.00 : 496660: 00 : scan->rs_inited = false; 0.00 : 496661: 41 c6 45 41 00 movb $0x0,0x41(%r13) : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.00 : 496666: e9 a5 fd ff ff jmpq 496410 : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 49666b: f7 d0 not %eax 0.00 : 49666d: 48 63 d0 movslq %eax,%rdx 0.00 : 496670: 48 8b 05 a1 6a 6e 00 mov 0x6e6aa1(%rip),%rax # b7d118 0.00 : 496677: 4c 8b 34 d0 mov (%rax,%rdx,8),%r14 0.00 : 49667b: e9 d8 fa ff ff jmpq 496158 : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : lineindex = scan->rs_cindex + 1; : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496680: f7 d0 not %eax 0.00 : 496682: 48 63 d0 movslq %eax,%rdx 0.00 : 496685: 48 8b 05 8c 6a 6e 00 mov 0x6e6a8c(%rip),%rax # b7d118 0.00 : 49668c: 4c 8b 34 d0 mov (%rax,%rdx,8),%r14 0.00 : 496690: e9 bb fd ff ff jmpq 496450 : page = ItemPointerGetBlockNumber(&(tuple->t_self)); : if (page != scan->rs_cblock) : heapgetpage(scan, page); : : /* Since the tuple was previously fetched, needn't lock page here */ : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496695: f7 d0 not %eax 0.00 : 496697: 48 63 d0 movslq %eax,%rdx 0.00 : 49669a: 48 8b 05 77 6a 6e 00 mov 0x6e6a77(%rip),%rax # b7d118 0.00 : 4966a1: 48 8b 0c d0 mov (%rax,%rdx,8),%rcx 0.00 : 4966a5: e9 24 fd ff ff jmpq 4963ce Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 84.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:438 1.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:397 1.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:397 1.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:438 0.91 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:435 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:431 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:397 0.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:397 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:419 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:416 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:438 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:408 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:430 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:430 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:397 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b43e0 : : */ : TupleTableSlot * : ExecStoreMinimalTuple(MinimalTuple mtup, : TupleTableSlot *slot, : bool shouldFree) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:397 1.37 : 5b43e0: 55 push %rbp 0.43 : 5b43e1: 48 89 e5 mov %rsp,%rbp 0.72 : 5b43e4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 1.12 : 5b43e8: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.44 : 5b43ec: 48 89 f3 mov %rsi,%rbx 0.03 : 5b43ef: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.52 : 5b43f3: 48 83 ec 20 sub $0x20,%rsp : Assert(slot->tts_tupleDescriptor != NULL); : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) 0.38 : 5b43f7: 80 7e 05 00 cmpb $0x0,0x5(%rsi) : */ : TupleTableSlot * : ExecStoreMinimalTuple(MinimalTuple mtup, : TupleTableSlot *slot, : bool shouldFree) : { 0.66 : 5b43fb: 49 89 fc mov %rdi,%r12 0.00 : 5b43fe: 41 89 d5 mov %edx,%r13d : Assert(slot->tts_tupleDescriptor != NULL); : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:408 0.53 : 5b4401: 75 6d jne 5b4470 : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) 0.31 : 5b4403: 80 7b 06 00 cmpb $0x0,0x6(%rbx) 0.33 : 5b4407: 75 57 jne 5b4460 : heap_free_minimal_tuple(slot->tts_mintuple); : : /* : * Drop the pin on the referenced buffer, if there is one. : */ : if (BufferIsValid(slot->tts_buffer)) 0.14 : 5b4409: 8b 7b 20 mov 0x20(%rbx),%edi /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:416 0.57 : 5b440c: 85 ff test %edi,%edi 0.00 : 5b440e: 74 05 je 5b4415 : ReleaseBuffer(slot->tts_buffer); 0.00 : 5b4410: e8 4b 0a 0c 00 callq 674e60 : * Store the new tuple into the specified slot. : */ : slot->tts_isempty = false; : slot->tts_shouldFree = false; : slot->tts_shouldFreeMin = shouldFree; : slot->tts_tuple = &slot->tts_minhdr; 0.44 : 5b4415: 48 8d 43 40 lea 0x40(%rbx),%rax : /* : * Store the new tuple into the specified slot. : */ : slot->tts_isempty = false; : slot->tts_shouldFree = false; : slot->tts_shouldFreeMin = shouldFree; 0.16 : 5b4419: 44 88 6b 06 mov %r13b,0x6(%rbx) : slot->tts_tuple = &slot->tts_minhdr; : slot->tts_mintuple = mtup; 0.43 : 5b441d: 4c 89 63 38 mov %r12,0x38(%rbx) : * Drop the pin on the referenced buffer, if there is one. : */ : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); : : slot->tts_buffer = InvalidBuffer; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:419 0.60 : 5b4421: c7 43 20 00 00 00 00 movl $0x0,0x20(%rbx) : : /* : * Store the new tuple into the specified slot. : */ : slot->tts_isempty = false; 0.46 : 5b4428: c6 43 04 00 movb $0x0,0x4(%rbx) : slot->tts_shouldFree = false; 0.47 : 5b442c: c6 43 05 00 movb $0x0,0x5(%rbx) : slot->tts_shouldFreeMin = shouldFree; : slot->tts_tuple = &slot->tts_minhdr; 0.13 : 5b4430: 48 89 43 08 mov %rax,0x8(%rbx) : slot->tts_mintuple = mtup; : : slot->tts_minhdr.t_len = mtup->t_len + MINIMAL_TUPLE_OFFSET; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:430 0.53 : 5b4434: 41 8b 04 24 mov (%r12),%eax : : /* Mark extracted state invalid */ : slot->tts_nvalid = 0; : : return slot; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:438 84.31 : 5b4438: 4c 8b 6d f8 mov -0x8(%rbp),%r13 : slot->tts_minhdr.t_len = mtup->t_len + MINIMAL_TUPLE_OFFSET; : slot->tts_minhdr.t_data = (HeapTupleHeader) ((char *) mtup - MINIMAL_TUPLE_OFFSET); : /* no need to set t_self or t_tableOid since we won't allow access */ : : /* Mark extracted state invalid */ : slot->tts_nvalid = 0; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:435 0.91 : 5b443c: c7 43 24 00 00 00 00 movl $0x0,0x24(%rbx) : slot->tts_shouldFree = false; : slot->tts_shouldFreeMin = shouldFree; : slot->tts_tuple = &slot->tts_minhdr; : slot->tts_mintuple = mtup; : : slot->tts_minhdr.t_len = mtup->t_len + MINIMAL_TUPLE_OFFSET; 0.27 : 5b4443: 83 c0 08 add $0x8,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:430 0.53 : 5b4446: 89 43 40 mov %eax,0x40(%rbx) : slot->tts_minhdr.t_data = (HeapTupleHeader) ((char *) mtup - MINIMAL_TUPLE_OFFSET); /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:431 0.77 : 5b4449: 49 8d 44 24 f8 lea -0x8(%r12),%rax : : /* Mark extracted state invalid */ : slot->tts_nvalid = 0; : : return slot; : } 0.21 : 5b444e: 4c 8b 65 f0 mov -0x10(%rbp),%r12 : slot->tts_shouldFreeMin = shouldFree; : slot->tts_tuple = &slot->tts_minhdr; : slot->tts_mintuple = mtup; : : slot->tts_minhdr.t_len = mtup->t_len + MINIMAL_TUPLE_OFFSET; : slot->tts_minhdr.t_data = (HeapTupleHeader) ((char *) mtup - MINIMAL_TUPLE_OFFSET); 0.13 : 5b4452: 48 89 43 50 mov %rax,0x50(%rbx) : : /* Mark extracted state invalid */ : slot->tts_nvalid = 0; : : return slot; : } 0.29 : 5b4456: 48 89 d8 mov %rbx,%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:438 0.57 : 5b4459: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.16 : 5b445d: c9 leaveq 1.07 : 5b445e: c3 retq 0.00 : 5b445f: 90 nop : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) : heap_free_minimal_tuple(slot->tts_mintuple); 0.00 : 5b4460: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5b4464: e8 47 a8 eb ff callq 46ecb0 0.00 : 5b4469: eb 9e jmp 5b4409 0.00 : 5b446b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); 0.00 : 5b4470: 48 8b 7e 08 mov 0x8(%rsi),%rdi 0.00 : 5b4474: e8 47 a8 eb ff callq 46ecc0 0.00 : 5b4479: eb 88 jmp 5b4403 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 19.87 ??:0 12.13 ??:0 6.20 ??:0 5.64 ??:0 5.52 ??:0 5.52 ??:0 5.49 ??:0 5.42 ??:0 5.12 ??:0 5.09 ??:0 4.96 ??:0 4.77 ??:0 4.72 ??:0 4.60 ??:0 4.32 ??:0 0.66 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000031dc0 <__isinf>: ??:0 6.20 : 31dc0: f2 0f 11 44 24 f8 movsd %xmm0,-0x8(%rsp) 12.13 : 31dc6: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 19.87 : 31dcb: 48 89 c1 mov %rax,%rcx ??:0 4.60 : 31dce: 48 c1 e9 20 shr $0x20,%rcx ??:0 5.52 : 31dd2: 89 ca mov %ecx,%edx ??:0 4.32 : 31dd4: c1 f9 1e sar $0x1e,%ecx 0.66 : 31dd7: 81 e2 ff ff ff 7f and $0x7fffffff,%edx 4.72 : 31ddd: 81 f2 00 00 f0 7f xor $0x7ff00000,%edx ??:0 5.64 : 31de3: 09 c2 or %eax,%edx ??:0 4.77 : 31de5: 89 d0 mov %edx,%eax ??:0 5.12 : 31de7: f7 d8 neg %eax 5.42 : 31de9: 09 d0 or %edx,%eax 5.09 : 31deb: c1 f8 1f sar $0x1f,%eax ??:0 4.96 : 31dee: f7 d0 not %eax ??:0 11.00 : 31df0: 21 c8 and %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:459 9.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:466 9.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:465 6.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:484 5.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:461 4.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:472 3.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:484 3.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:450 3.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:472 3.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:450 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:480 3.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:484 2.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:450 2.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:475 2.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:484 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:467 2.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:450 1.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:461 1.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:484 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:464 0.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:459 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:450 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b4110 : : * NB: only the tuple is cleared, not the tuple descriptor (if any). : * -------------------------------- : */ : TupleTableSlot * /* return: slot passed */ : ExecClearTuple(TupleTableSlot *slot) /* slot in which to store tuple */ : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:450 3.70 : 5b4110: 55 push %rbp 2.99 : 5b4111: 48 89 e5 mov %rsp,%rbp 0.95 : 5b4114: 53 push %rbx 3.93 : 5b4115: 48 89 fb mov %rdi,%rbx 2.09 : 5b4118: 48 83 ec 08 sub $0x8,%rsp : Assert(slot != NULL); : : /* : * Free the old physical tuple if necessary. : */ : if (slot->tts_shouldFree) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:459 0.96 : 5b411c: 80 7f 05 00 cmpb $0x0,0x5(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:459 23.09 : 5b4120: 75 5e jne 5b4180 : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:461 5.81 : 5b4122: 80 7b 06 00 cmpb $0x0,0x6(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:461 1.65 : 5b4126: 75 48 jne 5b4170 : slot->tts_shouldFreeMin = false; : : /* : * Drop the pin on the referenced buffer, if there is one. : */ : if (BufferIsValid(slot->tts_buffer)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:472 3.90 : 5b4128: 8b 7b 20 mov 0x20(%rbx),%edi : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) : heap_free_minimal_tuple(slot->tts_mintuple); : : slot->tts_tuple = NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:464 1.21 : 5b412b: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 5b4132: 00 : slot->tts_mintuple = NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:465 9.19 : 5b4133: 48 c7 43 38 00 00 00 movq $0x0,0x38(%rbx) 0.00 : 5b413a: 00 : slot->tts_shouldFree = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:466 9.59 : 5b413b: c6 43 05 00 movb $0x0,0x5(%rbx) : slot->tts_shouldFreeMin = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:467 2.51 : 5b413f: c6 43 06 00 movb $0x0,0x6(%rbx) : : /* : * Drop the pin on the referenced buffer, if there is one. : */ : if (BufferIsValid(slot->tts_buffer)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:472 4.11 : 5b4143: 85 ff test %edi,%edi 0.00 : 5b4145: 74 05 je 5b414c : ReleaseBuffer(slot->tts_buffer); 0.41 : 5b4147: e8 14 0d 0c 00 callq 674e60 : : slot->tts_buffer = InvalidBuffer; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:475 2.92 : 5b414c: c7 43 20 00 00 00 00 movl $0x0,0x20(%rbx) : : /* : * Mark it empty. : */ : slot->tts_isempty = true; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:480 3.23 : 5b4153: c6 43 04 01 movb $0x1,0x4(%rbx) : slot->tts_nvalid = 0; : : return slot; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:484 3.98 : 5b4157: 48 89 d8 mov %rbx,%rax : : /* : * Mark it empty. : */ : slot->tts_isempty = true; : slot->tts_nvalid = 0; 0.21 : 5b415a: c7 43 24 00 00 00 00 movl $0x0,0x24(%rbx) : : return slot; : } 1.45 : 5b4161: 48 83 c4 08 add $0x8,%rsp 2.67 : 5b4165: 5b pop %rbx 3.12 : 5b4166: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:484 6.10 : 5b4167: c3 retq 0.00 : 5b4168: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5b416f: 00 : * Free the old physical tuple if necessary. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) : heap_free_minimal_tuple(slot->tts_mintuple); 0.11 : 5b4170: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.06 : 5b4174: e8 37 ab eb ff callq 46ecb0 0.03 : 5b4179: eb ad jmp 5b4128 0.00 : 5b417b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * Free the old physical tuple if necessary. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); 0.00 : 5b4180: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5b4184: e8 37 ab eb ff callq 46ecc0 0.00 : 5b4189: eb 97 jmp 5b4122 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 9.28 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 7.66 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 6.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 6.40 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 6.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 5.87 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 4.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 4.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:160 3.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 3.49 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 3.49 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.59 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:149 2.07 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 1.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 1.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 1.87 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 1.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 1.48 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 1.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 0.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:160 0.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 0.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 0.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 0.61 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 0.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:160 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:149 0.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:183 0.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:202 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674520 : : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.58 : 674520: 55 push %rbp 0.76 : 674521: 48 89 e5 mov %rsp,%rbp 2.42 : 674524: 41 57 push %r15 2.58 : 674526: 41 89 f7 mov %esi,%r15d : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 0.61 : 674529: 89 fe mov %edi,%esi : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 1.97 : 67452b: 41 56 push %r14 0.78 : 67452d: 41 55 push %r13 1.89 : 67452f: 41 54 push %r12 0.58 : 674531: 41 89 d4 mov %edx,%r12d : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 2.07 : 674534: ba c0 d0 b7 00 mov $0xb7d0c0,%edx : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { 0.21 : 674539: 53 push %rbx : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) 1.87 : 67453a: 31 db xor %ebx,%ebx : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 0.60 : 67453c: 48 83 ec 18 sub $0x18,%rsp 2.59 : 674540: 89 7d c4 mov %edi,-0x3c(%rbp) : PrivateRefCountEntry *res; : PrivateRefCountEntry *free = NULL; : bool found = false; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:149 2.27 : 674543: c6 45 d7 00 movb $0x0,-0x29(%rbp) 0.56 : 674547: eb 14 jmp 67455d 0.00 : 674549: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (res->buffer == buffer) : return res; : : /* Remember where to put a new refcount, should it become necessary. */ : if (free == NULL && res->buffer == InvalidBuffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 0.95 : 674550: 48 83 c2 08 add $0x8,%rdx : : /* : * First search for references in the array, that'll be sufficient in the : * majority of cases. : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:160 0.57 : 674554: 48 81 fa 00 d1 b7 00 cmp $0xb7d100,%rdx 0.00 : 67455b: 74 2b je 674588 : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 7.66 : 67455d: 8b 0a mov (%rdx),%ecx 6.36 : 67455f: 48 89 d0 mov %rdx,%rax 6.75 : 674562: 39 f1 cmp %esi,%ecx 0.00 : 674564: 0f 84 c8 00 00 00 je 674632 : return res; : : /* Remember where to put a new refcount, should it become necessary. */ : if (free == NULL && res->buffer == InvalidBuffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 4.77 : 67456a: 48 85 db test %rbx,%rbx 0.00 : 67456d: 75 e1 jne 674550 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 5.87 : 67456f: 85 c9 test %ecx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 1.48 : 674571: 48 0f 44 da cmove %rdx,%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 9.28 : 674575: 48 83 c2 08 add $0x8,%rdx : : /* : * First search for references in the array, that'll be sufficient in the : * majority of cases. : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:160 4.55 : 674579: 48 81 fa 00 d1 b7 00 cmp $0xb7d100,%rdx 0.88 : 674580: 75 db jne 67455d 0.00 : 674582: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Look up the buffer in the hashtable if we've previously overflowed into : * it. : */ : if (PrivateRefCountOverflowed > 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:183 0.51 : 674588: 8b 05 e2 8a 50 00 mov 0x508ae2(%rip),%eax # b7d070 : /* : * By here we know that the buffer, if already pinned, isn't residing in : * the array. : */ : res = NULL; : found = false; 0.44 : 67458e: c6 45 d7 00 movb $0x0,-0x29(%rbp) : : /* : * Look up the buffer in the hashtable if we've previously overflowed into : * it. : */ : if (PrivateRefCountOverflowed > 0) 0.32 : 674592: 85 c0 test %eax,%eax 0.00 : 674594: 0f 8e ee 00 00 00 jle 674688 : { : res = hash_search(PrivateRefCountHash, 0.01 : 67459a: 4c 8d 75 d7 lea -0x29(%rbp),%r14 0.03 : 67459e: 48 8b 3d d3 8a 50 00 mov 0x508ad3(%rip),%rdi # b7d078 0.00 : 6745a5: 48 8d 75 c4 lea -0x3c(%rbp),%rsi 0.03 : 6745a9: 31 d2 xor %edx,%edx 0.08 : 6745ab: 4c 89 f1 mov %r14,%rcx 0.06 : 6745ae: e8 ed 00 11 00 callq 7846a0 : (void *) &buffer, : HASH_FIND, : &found); : } : : if (!found) 0.01 : 6745b3: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) : * Look up the buffer in the hashtable if we've previously overflowed into : * it. : */ : if (PrivateRefCountOverflowed > 0) : { : res = hash_search(PrivateRefCountHash, 0.18 : 6745b7: 49 89 c5 mov %rax,%r13 : (void *) &buffer, : HASH_FIND, : &found); : } : : if (!found) 0.00 : 6745ba: 0f 84 c8 00 00 00 je 674688 : : } : } : else : { : if (!do_move) 0.00 : 6745c0: 45 84 e4 test %r12b,%r12b 0.00 : 6745c3: 74 6d je 674632 : { : return res; : } : else if (found && free != NULL) 0.00 : 6745c5: 48 85 db test %rbx,%rbx 0.00 : 6745c8: 75 7e jne 674648 : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6745ca: 8b 05 b0 8a 50 00 mov 0x508ab0(%rip),%eax # b7d080 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim entry into the hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6745d0: 48 8b 3d a1 8a 50 00 mov 0x508aa1(%rip),%rdi # b7d078 0.00 : 6745d7: 4c 89 f1 mov %r14,%rcx 0.00 : 6745da: ba 01 00 00 00 mov $0x1,%edx : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6745df: 49 89 c4 mov %rax,%r12 0.00 : 6745e2: 83 c0 01 add $0x1,%eax 0.00 : 6745e5: 41 83 e4 07 and $0x7,%r12d 0.00 : 6745e9: 89 05 91 8a 50 00 mov %eax,0x508a91(%rip) # b7d080 0.00 : 6745ef: 4a 8d 1c e5 c0 d0 b7 lea 0xb7d0c0(,%r12,8),%rbx 0.00 : 6745f6: 00 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim entry into the hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6745f7: 48 89 de mov %rbx,%rsi 0.00 : 6745fa: e8 a1 00 11 00 callq 7846a0 : (void *) &arrayent->buffer, : HASH_ENTER, : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; 0.00 : 6745ff: 8b 53 04 mov 0x4(%rbx),%edx : /* fill now free array entry with previously searched entry */ : arrayent->buffer = res->buffer; : arrayent->refcount = res->refcount; : : /* and remove the old entry */ : hash_search(PrivateRefCountHash, 0.00 : 674602: 4c 89 f1 mov %r14,%rcx 0.00 : 674605: 48 89 de mov %rbx,%rsi : hashent = hash_search(PrivateRefCountHash, : (void *) &arrayent->buffer, : HASH_ENTER, : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; 0.00 : 674608: 89 50 04 mov %edx,0x4(%rax) : : /* fill now free array entry with previously searched entry */ : arrayent->buffer = res->buffer; 0.00 : 67460b: 41 8b 45 00 mov 0x0(%r13),%eax : arrayent->refcount = res->refcount; : : /* and remove the old entry */ : hash_search(PrivateRefCountHash, 0.00 : 67460f: ba 02 00 00 00 mov $0x2,%edx : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; : : /* fill now free array entry with previously searched entry */ : arrayent->buffer = res->buffer; 0.00 : 674614: 42 89 04 e5 c0 d0 b7 mov %eax,0xb7d0c0(,%r12,8) 0.00 : 67461b: 00 : arrayent->refcount = res->refcount; 0.00 : 67461c: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 674620: 89 43 04 mov %eax,0x4(%rbx) : : /* and remove the old entry */ : hash_search(PrivateRefCountHash, 0.00 : 674623: 48 8b 3d 4e 8a 50 00 mov 0x508a4e(%rip),%rdi # b7d078 0.00 : 67462a: e8 71 00 11 00 callq 7846a0 0.00 : 67462f: 48 89 d8 mov %rbx,%rax : } : } : : Assert(false); /* unreachable */ : return NULL; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 3.49 : 674632: 48 83 c4 18 add $0x18,%rsp 1.17 : 674636: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 6.40 : 674637: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 1.75 : 674639: 41 5d pop %r13 3.82 : 67463b: 41 5e pop %r14 0.86 : 67463d: 41 5f pop %r15 2.51 : 67463f: c9 leaveq 3.49 : 674640: c3 retq 0.00 : 674641: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else if (found && free != NULL) : { : /* move buffer from hashtable into the free array slot */ : : /* fill array slot */ : free->buffer = buffer; 0.00 : 674648: 8b 45 c4 mov -0x3c(%rbp),%eax : free->refcount = res->refcount; : : /* delete from hashtable */ : hash_search(PrivateRefCountHash, 0.00 : 67464b: 48 8d 75 c4 lea -0x3c(%rbp),%rsi 0.00 : 67464f: 4c 89 f1 mov %r14,%rcx 0.00 : 674652: ba 02 00 00 00 mov $0x2,%edx : else if (found && free != NULL) : { : /* move buffer from hashtable into the free array slot */ : : /* fill array slot */ : free->buffer = buffer; 0.00 : 674657: 89 03 mov %eax,(%rbx) : free->refcount = res->refcount; 0.00 : 674659: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 67465d: 89 43 04 mov %eax,0x4(%rbx) : : /* delete from hashtable */ : hash_search(PrivateRefCountHash, 0.00 : 674660: 48 8b 3d 11 8a 50 00 mov 0x508a11(%rip),%rdi # b7d078 0.00 : 674667: e8 34 00 11 00 callq 7846a0 : (void *) &buffer, : HASH_REMOVE, : &found); : Assert(found); : Assert(PrivateRefCountOverflowed > 0); : PrivateRefCountOverflowed--; 0.00 : 67466c: 83 2d fd 89 50 00 01 subl $0x1,0x5089fd(%rip) # b7d070 0.00 : 674673: 48 89 d8 mov %rbx,%rax : } : } : : Assert(false); /* unreachable */ : return NULL; : } 0.00 : 674676: 48 83 c4 18 add $0x18,%rsp 0.00 : 67467a: 5b pop %rbx 0.00 : 67467b: 41 5c pop %r12 0.00 : 67467d: 41 5d pop %r13 0.00 : 67467f: 41 5e pop %r14 0.00 : 674681: 41 5f pop %r15 0.00 : 674683: c9 leaveq 0.00 : 674684: c3 retq 0.00 : 674685: 0f 1f 00 nopl (%rax) : &found); : } : : if (!found) : { : if (!create) 0.35 : 674688: 31 c0 xor %eax,%eax 0.04 : 67468a: 45 84 ff test %r15b,%r15b 0.00 : 67468d: 74 a3 je 674632 : { : /* Neither array nor hash have an entry and no new entry is needed */ : return NULL; : } : else if (free != NULL) 0.08 : 67468f: 48 85 db test %rbx,%rbx 0.00 : 674692: 74 11 je 6746a5 : { : /* add entry into the free array slot */ : free->buffer = buffer; 0.13 : 674694: 8b 45 c4 mov -0x3c(%rbp),%eax : free->refcount = 0; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:202 0.51 : 674697: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : return NULL; : } : else if (free != NULL) : { : /* add entry into the free array slot */ : free->buffer = buffer; 0.03 : 67469e: 89 03 mov %eax,(%rbx) : free->refcount = 0; 0.25 : 6746a0: 48 89 d8 mov %rbx,%rax : } : } : : Assert(false); /* unreachable */ : return NULL; : } 0.00 : 6746a3: eb 8d jmp 674632 : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6746a5: 8b 05 d5 89 50 00 mov 0x5089d5(%rip),%eax # b7d080 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim array entry into hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6746ab: 48 8b 3d c6 89 50 00 mov 0x5089c6(%rip),%rdi # b7d078 0.00 : 6746b2: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 6746b6: ba 01 00 00 00 mov $0x1,%edx : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6746bb: 49 89 c4 mov %rax,%r12 0.00 : 6746be: 83 c0 01 add $0x1,%eax 0.00 : 6746c1: 41 83 e4 07 and $0x7,%r12d 0.00 : 6746c5: 89 05 b5 89 50 00 mov %eax,0x5089b5(%rip) # b7d080 0.00 : 6746cb: 4a 8d 1c e5 c0 d0 b7 lea 0xb7d0c0(,%r12,8),%rbx 0.00 : 6746d2: 00 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim array entry into hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6746d3: 48 89 de mov %rbx,%rsi 0.00 : 6746d6: e8 c5 ff 10 00 callq 7846a0 : (void *) &arrayent->buffer, : HASH_ENTER, : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; 0.00 : 6746db: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 6746de: 89 50 04 mov %edx,0x4(%rax) : : /* fill the now free array slot */ : arrayent->buffer = buffer; 0.00 : 6746e1: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6746e4: 42 89 04 e5 c0 d0 b7 mov %eax,0xb7d0c0(,%r12,8) 0.00 : 6746eb: 00 : arrayent->refcount = 0; 0.00 : 6746ec: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : : PrivateRefCountOverflowed++; 0.00 : 6746f3: 48 89 d8 mov %rbx,%rax 0.00 : 6746f6: 83 05 73 89 50 00 01 addl $0x1,0x508973(%rip) # b7d070 : } : } : : Assert(false); /* unreachable */ : return NULL; : } 0.00 : 6746fd: e9 30 ff ff ff jmpq 674632 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 42.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 11.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 6.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:724 2.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 2.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:727 1.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:727 1.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:727 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:718 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:705 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:727 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:711 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 1.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:712 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 0.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:706 0.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:712 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:718 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:706 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000758230 : : * need to be so careful. : *****************************************************************************/ : : Datum : bpchareq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:704 1.88 : 758230: 55 push %rbp 1.14 : 758231: 48 89 e5 mov %rsp,%rbp 0.60 : 758234: 48 89 5d d8 mov %rbx,-0x28(%rbp) 2.78 : 758238: 4c 89 65 e0 mov %r12,-0x20(%rbp) 1.53 : 75823c: 4c 89 6d e8 mov %r13,-0x18(%rbp) 1.43 : 758240: 4c 89 75 f0 mov %r14,-0x10(%rbp) 1.12 : 758244: 49 89 fd mov %rdi,%r13 0.17 : 758247: 4c 89 7d f8 mov %r15,-0x8(%rbp) 1.31 : 75824b: 48 83 ec 30 sub $0x30,%rsp : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); 0.26 : 75824f: 48 8b 7f 20 mov 0x20(%rdi),%rdi : : /* : * Since we only care about equality or not-equality, we can avoid all the : * expense of strcoll() here, and just do bitwise comparison. : */ : if (len1 != len2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:718 1.63 : 758253: 45 31 f6 xor %r14d,%r14d : *****************************************************************************/ : : Datum : bpchareq(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); 0.12 : 758256: e8 85 6a 02 00 callq 77ece0 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:706 0.90 : 75825b: 49 8b 7d 28 mov 0x28(%r13),%rdi : *****************************************************************************/ : : Datum : bpchareq(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:705 1.61 : 75825f: 49 89 c4 mov %rax,%r12 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:706 0.51 : 758262: e8 79 6a 02 00 callq 77ece0 : int len1, : len2; : bool result; : : len1 = bcTruelen(arg1); 0.30 : 758267: 4c 89 e7 mov %r12,%rdi : : Datum : bpchareq(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 0.21 : 75826a: 48 89 c3 mov %rax,%rbx : int len1, : len2; : bool result; : : len1 = bcTruelen(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:711 1.53 : 75826d: e8 1e fb ff ff callq 757d90 : len2 = bcTruelen(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:712 0.73 : 758272: 48 89 df mov %rbx,%rdi : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); : int len1, : len2; : bool result; : : len1 = bcTruelen(arg1); 0.09 : 758275: 41 89 c7 mov %eax,%r15d : len2 = bcTruelen(arg2); 1.09 : 758278: e8 13 fb ff ff callq 757d90 : : /* : * Since we only care about equality or not-equality, we can avoid all the : * expense of strcoll() here, and just do bitwise comparison. : */ : if (len1 != len2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:718 0.57 : 75827d: 41 39 c7 cmp %eax,%r15d 0.06 : 758280: 74 3e je 7582c0 : result = false; : else : result = (memcmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) == 0); : : PG_FREE_IF_COPY(arg1, 0); 0.31 : 758282: 4d 3b 65 20 cmp 0x20(%r13),%r12 0.00 : 758286: 74 0d je 758295 0.00 : 758288: 4c 89 e7 mov %r12,%rdi 0.00 : 75828b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 758290: e8 eb 08 04 00 callq 798b80 : PG_FREE_IF_COPY(arg2, 1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:724 6.96 : 758295: 49 3b 5d 28 cmp 0x28(%r13),%rbx 0.00 : 758299: 74 08 je 7582a3 0.00 : 75829b: 48 89 df mov %rbx,%rdi 0.00 : 75829e: e8 dd 08 04 00 callq 798b80 : : PG_RETURN_BOOL(result); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:727 1.66 : 7582a3: 4c 89 f0 mov %r14,%rax 0.00 : 7582a6: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.49 : 7582aa: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 7582ae: 4c 8b 6d e8 mov -0x18(%rbp),%r13 1.79 : 7582b2: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 7582b6: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.61 : 7582ba: c9 leaveq 1.92 : 7582bb: c3 retq 0.00 : 7582bc: 0f 1f 40 00 nopl 0x0(%rax) : * expense of strcoll() here, and just do bitwise comparison. : */ : if (len1 != len2) : result = false; : else : result = (memcmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) == 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 0.99 : 7582c0: f6 03 01 testb $0x1,(%rbx) 0.13 : 7582c3: 48 8d 43 04 lea 0x4(%rbx),%rax 0.00 : 7582c7: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.05 : 7582cb: 49 8d 74 24 01 lea 0x1(%r12),%rsi 1.02 : 7582d0: 49 63 cf movslq %r15d,%rcx 0.01 : 7582d3: 48 0f 44 f8 cmove %rax,%rdi 0.01 : 7582d7: 41 f6 04 24 01 testb $0x1,(%r12) 1.48 : 7582dc: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 7582e1: 48 0f 44 f0 cmove %rax,%rsi 0.09 : 7582e5: 48 39 c9 cmp %rcx,%rcx 2.97 : 7582e8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 42.92 : 7582ea: 0f 97 c2 seta %dl 11.24 : 7582ed: 0f 92 c0 setb %al 0.00 : 7582f0: 45 31 f6 xor %r14d,%r14d 0.00 : 7582f3: 38 c2 cmp %al,%dl /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:721 1.27 : 7582f5: 41 0f 94 c6 sete %r14b 1.52 : 7582f9: eb 87 jmp 758282 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 81.35 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1283 12.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1292 0.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1294 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674c30 : : * Returns TRUE if buffer is BM_VALID, else FALSE. This provision allows : * some callers to avoid an extra spinlock cycle. : */ : static bool : PinBuffer(volatile BufferDesc *buf, BufferAccessStrategy strategy) : { 0.36 : 674c30: 55 push %rbp : int b = buf->buf_id; : bool result; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.15 : 674c31: ba 01 00 00 00 mov $0x1,%edx : * Returns TRUE if buffer is BM_VALID, else FALSE. This provision allows : * some callers to avoid an extra spinlock cycle. : */ : static bool : PinBuffer(volatile BufferDesc *buf, BufferAccessStrategy strategy) : { 0.01 : 674c36: 48 89 e5 mov %rsp,%rbp 0.36 : 674c39: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.27 : 674c3d: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.18 : 674c41: 48 89 fb mov %rdi,%rbx 0.10 : 674c44: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.21 : 674c48: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.03 : 674c4c: 48 83 ec 20 sub $0x20,%rsp : int b = buf->buf_id; 0.50 : 674c50: 8b 7f 24 mov 0x24(%rdi),%edi : * Returns TRUE if buffer is BM_VALID, else FALSE. This provision allows : * some callers to avoid an extra spinlock cycle. : */ : static bool : PinBuffer(volatile BufferDesc *buf, BufferAccessStrategy strategy) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1283 81.35 : 674c53: 49 89 f6 mov %rsi,%r14 : int b = buf->buf_id; : bool result; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674c56: be 01 00 00 00 mov $0x1,%esi : : if (ref->refcount == 0) 0.00 : 674c5b: 41 bd 01 00 00 00 mov $0x1,%r13d : { : int b = buf->buf_id; : bool result; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674c61: 83 c7 01 add $0x1,%edi 0.43 : 674c64: e8 b7 f8 ff ff callq 674520 0.15 : 674c69: 49 89 c4 mov %rax,%r12 : : if (ref->refcount == 0) 0.03 : 674c6c: 8b 40 04 mov 0x4(%rax),%eax 0.24 : 674c6f: 85 c0 test %eax,%eax 0.00 : 674c71: 75 43 jne 674cb6 : { : LockBufHdr(buf); 0.17 : 674c73: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 674c77: b8 01 00 00 00 mov $0x1,%eax 0.06 : 674c7c: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1292 12.09 : 674c7f: 84 c0 test %al,%al 0.00 : 674c81: 75 6d jne 674cf0 : buf->refcount++; 0.05 : 674c83: 8b 43 18 mov 0x18(%rbx),%eax 0.05 : 674c86: 83 c0 01 add $0x1,%eax : if (strategy == NULL) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1294 0.55 : 674c89: 4d 85 f6 test %r14,%r14 : ref = GetPrivateRefCountEntry(b + 1, true, true); : : if (ref->refcount == 0) : { : LockBufHdr(buf); : buf->refcount++; 0.00 : 674c8c: 89 43 18 mov %eax,0x18(%rbx) : if (strategy == NULL) 0.01 : 674c8f: 74 7c je 674d0d : if (buf->usage_count < BM_MAX_USAGE_COUNT) : buf->usage_count++; : } : else : { : if (buf->usage_count == 0) 0.00 : 674c91: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.03 : 674c95: 66 85 c0 test %ax,%ax 0.00 : 674c98: 75 06 jne 674ca0 : buf->usage_count = 1; 0.01 : 674c9a: 66 c7 43 16 01 00 movw $0x1,0x16(%rbx) : } : result = (buf->flags & BM_VALID) != 0; 0.02 : 674ca0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.07 : 674ca4: d1 e8 shr %eax 0.00 : 674ca6: 41 89 c5 mov %eax,%r13d 0.35 : 674ca9: 41 83 e5 01 and $0x1,%r13d : UnlockBufHdr(buf); 0.02 : 674cad: c6 43 20 00 movb $0x0,0x20(%rbx) 0.01 : 674cb1: 41 8b 44 24 04 mov 0x4(%r12),%eax : { : /* If we previously pinned the buffer, it must surely be valid */ : result = true; : } : : ref->refcount++; 0.03 : 674cb6: 83 c0 01 add $0x1,%eax 0.33 : 674cb9: 41 89 44 24 04 mov %eax,0x4(%r12) : Assert(ref->refcount > 0); : ResourceOwnerRememberBuffer(CurrentResourceOwner, 0.06 : 674cbe: 8b 73 24 mov 0x24(%rbx),%esi 0.03 : 674cc1: 48 8b 3d f8 5b 54 00 mov 0x545bf8(%rip),%rdi # bba8c0 0.00 : 674cc8: 83 c6 01 add $0x1,%esi 0.32 : 674ccb: e8 d0 54 12 00 callq 79a1a0 : BufferDescriptorGetBuffer(buf)); : return result; : } 0.03 : 674cd0: 44 89 e8 mov %r13d,%eax 0.01 : 674cd3: 48 8b 1c 24 mov (%rsp),%rbx 0.33 : 674cd7: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.02 : 674cdc: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.07 : 674ce1: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.06 : 674ce6: c9 leaveq 0.26 : 674ce7: c3 retq 0.00 : 674ce8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 674cef: 00 : : ref = GetPrivateRefCountEntry(b + 1, true, true); : : if (ref->refcount == 0) : { : LockBufHdr(buf); 0.00 : 674cf0: ba 0c 05 00 00 mov $0x50c,%edx 0.00 : 674cf5: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 674cfa: e8 41 b3 01 00 callq 690040 : buf->refcount++; 0.00 : 674cff: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 674d02: 83 c0 01 add $0x1,%eax : if (strategy == NULL) 0.00 : 674d05: 4d 85 f6 test %r14,%r14 : ref = GetPrivateRefCountEntry(b + 1, true, true); : : if (ref->refcount == 0) : { : LockBufHdr(buf); : buf->refcount++; 0.00 : 674d08: 89 43 18 mov %eax,0x18(%rbx) : if (strategy == NULL) 0.00 : 674d0b: 75 84 jne 674c91 : { : if (buf->usage_count < BM_MAX_USAGE_COUNT) 0.00 : 674d0d: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.35 : 674d11: 66 83 f8 04 cmp $0x4,%ax 0.00 : 674d15: 77 89 ja 674ca0 : buf->usage_count++; 0.02 : 674d17: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.07 : 674d1b: 83 c0 01 add $0x1,%eax 0.01 : 674d1e: 66 89 43 16 mov %ax,0x16(%rbx) 0.16 : 674d22: e9 79 ff ff ff jmpq 674ca0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:544 17.15 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:539 7.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:536 5.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:534 4.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:556 4.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:600 4.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:600 3.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:603 3.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:556 3.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:603 3.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:597 2.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:603 1.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:531 1.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:531 1.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:606 1.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:599 1.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:534 0.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:531 0.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:558 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:606 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:606 0.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:587 0.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:599 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:556 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:538 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:538 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:606 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:603 0.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:603 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:603 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b9950 : : * : * When called, CurrentMemoryContext should be the per-query context. : */ : static void : advance_aggregates(AggState *aggstate, AggStatePerGroup pergroup) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:531 1.44 : 5b9950: 55 push %rbp 0.37 : 5b9951: 48 89 e5 mov %rsp,%rbp 0.04 : 5b9954: 41 57 push %r15 1.35 : 5b9956: 49 89 ff mov %rdi,%r15 0.02 : 5b9959: 41 56 push %r14 0.06 : 5b995b: 41 55 push %r13 0.17 : 5b995d: 41 54 push %r12 0.99 : 5b995f: 53 push %rbx 0.13 : 5b9960: 48 83 ec 18 sub $0x18,%rsp 0.17 : 5b9964: 48 89 75 c0 mov %rsi,-0x40(%rbp) : int aggno; : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:534 1.05 : 5b9968: 44 8b 9f 98 00 00 00 mov 0x98(%rdi),%r11d 0.30 : 5b996f: 45 85 db test %r11d,%r11d 0.00 : 5b9972: 0f 8e c1 00 00 00 jle 5b9a39 0.04 : 5b9978: 45 31 f6 xor %r14d,%r14d 0.11 : 5b997b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : AggStatePerAgg peraggstate = &aggstate->peragg[aggno]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:536 7.01 : 5b9980: 4d 63 ee movslq %r14d,%r13 0.13 : 5b9983: 49 69 dd a8 04 00 00 imul $0x4a8,%r13,%rbx 0.22 : 5b998a: 49 03 9f b0 00 00 00 add 0xb0(%r15),%rbx : AggStatePerGroup pergroupstate = &pergroup[aggno]; : ExprState *filter = peraggstate->aggrefstate->aggfilter; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:538 0.73 : 5b9991: 48 8b 03 mov (%rbx),%rax : int numTransInputs = peraggstate->numTransInputs; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:539 17.15 : 5b9994: 44 8b 63 18 mov 0x18(%rbx),%r12d : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) : { : AggStatePerAgg peraggstate = &aggstate->peragg[aggno]; : AggStatePerGroup pergroupstate = &pergroup[aggno]; : ExprState *filter = peraggstate->aggrefstate->aggfilter; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:538 0.69 : 5b9998: 48 8b 78 28 mov 0x28(%rax),%rdi : int numTransInputs = peraggstate->numTransInputs; : int i; : TupleTableSlot *slot; : : /* Skip anything FILTERed out */ : if (filter) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:544 20.37 : 5b999c: 48 85 ff test %rdi,%rdi 0.00 : 5b999f: 74 1c je 5b99bd : { : Datum res; : bool isnull; : : res = ExecEvalExprSwitchContext(filter, aggstate->tmpcontext, 0.00 : 5b99a1: 49 8b b7 c0 00 00 00 mov 0xc0(%r15),%rsi 0.00 : 5b99a8: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 5b99ac: 31 c9 xor %ecx,%ecx 0.00 : 5b99ae: e8 2d 35 ff ff callq 5acee0 : &isnull, NULL); : if (isnull || !DatumGetBool(res)) 0.00 : 5b99b3: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 5b99b7: 75 6f jne 5b9a28 0.00 : 5b99b9: 84 c0 test %al,%al 0.00 : 5b99bb: 74 6b je 5b9a28 : continue; : } : : /* Evaluate the current input expressions for this aggregate */ : slot = ExecProject(peraggstate->evalproj, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:556 4.90 : 5b99bd: 48 8b bb e0 00 00 00 mov 0xe0(%rbx),%rdi 0.77 : 5b99c4: 31 f6 xor %esi,%esi 0.00 : 5b99c6: e8 35 36 ff ff callq 5ad000 : : if (peraggstate->numSortCols > 0) 0.28 : 5b99cb: 44 8b 93 8c 00 00 00 mov 0x8c(%rbx),%r10d : if (isnull || !DatumGetBool(res)) : continue; : } : : /* Evaluate the current input expressions for this aggregate */ : slot = ExecProject(peraggstate->evalproj, NULL); 3.57 : 5b99d2: 48 89 c1 mov %rax,%rcx : : if (peraggstate->numSortCols > 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:558 0.92 : 5b99d5: 45 85 d2 test %r10d,%r10d 0.00 : 5b99d8: 7e 76 jle 5b9a50 : * storing the row in the sorter, to save space if there are a lot : * of nulls. Note that we must only check numTransInputs columns, : * not numInputs, since nullity in columns used only for sorting : * is not relevant here. : */ : if (peraggstate->transfn.fn_strict) 0.00 : 5b99da: 80 7b 36 00 cmpb $0x0,0x36(%rbx) 0.00 : 5b99de: 74 2c je 5b9a0c : { : for (i = 0; i < numTransInputs; i++) 0.00 : 5b99e0: 45 85 e4 test %r12d,%r12d 0.00 : 5b99e3: 7e 27 jle 5b9a0c : { : if (slot->tts_isnull[i]) 0.00 : 5b99e5: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 5b99e9: 31 d2 xor %edx,%edx 0.00 : 5b99eb: 80 38 00 cmpb $0x0,(%rax) 0.00 : 5b99ee: 48 89 c6 mov %rax,%rsi 0.00 : 5b99f1: 74 11 je 5b9a04 0.00 : 5b99f3: eb 33 jmp 5b9a28 0.00 : 5b99f5: 0f 1f 00 nopl (%rax) 0.00 : 5b99f8: 0f b6 46 01 movzbl 0x1(%rsi),%eax 0.00 : 5b99fc: 48 83 c6 01 add $0x1,%rsi 0.00 : 5b9a00: 84 c0 test %al,%al 0.00 : 5b9a02: 75 24 jne 5b9a28 : * not numInputs, since nullity in columns used only for sorting : * is not relevant here. : */ : if (peraggstate->transfn.fn_strict) : { : for (i = 0; i < numTransInputs; i++) 0.00 : 5b9a04: 83 c2 01 add $0x1,%edx 0.00 : 5b9a07: 41 39 d4 cmp %edx,%r12d 0.00 : 5b9a0a: 7f ec jg 5b99f8 : if (i < numTransInputs) : continue; : } : : /* OK, put the tuple into the tuplesort object */ : if (peraggstate->numInputs == 1) 0.00 : 5b9a0c: 83 7b 14 01 cmpl $0x1,0x14(%rbx) 0.00 : 5b9a10: 0f 84 8a 00 00 00 je 5b9aa0 : tuplesort_putdatum(peraggstate->sortstate, : slot->tts_values[0], : slot->tts_isnull[0]); : else : tuplesort_puttupleslot(peraggstate->sortstate, slot); 0.00 : 5b9a16: 48 8b bb f8 00 00 00 mov 0xf8(%rbx),%rdi 0.00 : 5b9a1d: 48 89 ce mov %rcx,%rsi 0.00 : 5b9a20: e8 0b 56 1e 00 callq 79f030 0.00 : 5b9a25: 0f 1f 00 nopl (%rax) : static void : advance_aggregates(AggState *aggstate, AggStatePerGroup pergroup) : { : int aggno; : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:534 5.23 : 5b9a28: 41 83 c6 01 add $0x1,%r14d 0.15 : 5b9a2c: 45 39 b7 98 00 00 00 cmp %r14d,0x98(%r15) 0.00 : 5b9a33: 0f 8f 47 ff ff ff jg 5b9980 : } : : advance_transition_function(aggstate, peraggstate, pergroupstate); : } : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:606 0.62 : 5b9a39: 48 83 c4 18 add $0x18,%rsp 0.90 : 5b9a3d: 5b pop %rbx 0.13 : 5b9a3e: 41 5c pop %r12 0.28 : 5b9a40: 41 5d pop %r13 0.11 : 5b9a42: 41 5e pop %r14 0.90 : 5b9a44: 41 5f pop %r15 0.11 : 5b9a46: c9 leaveq 1.35 : 5b9a47: c3 retq 0.00 : 5b9a48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5b9a4f: 00 : if (peraggstate->numInputs == 1) : tuplesort_putdatum(peraggstate->sortstate, : slot->tts_values[0], : slot->tts_isnull[0]); : else : tuplesort_puttupleslot(peraggstate->sortstate, slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:587 0.84 : 5b9a50: 31 d2 xor %edx,%edx : FunctionCallInfo fcinfo = &peraggstate->transfn_fcinfo; : : /* Load values into fcinfo */ : /* Start from 1, since the 0th arg will be the transition value */ : Assert(slot->tts_nvalid >= numTransInputs); : for (i = 0; i < numTransInputs; i++) 0.00 : 5b9a52: 45 85 e4 test %r12d,%r12d 0.00 : 5b9a55: 7e 31 jle 5b9a88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:597 3.06 : 5b9a57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b9a5e: 00 00 : { : fcinfo->arg[i + 1] = slot->tts_values[i]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:599 0.84 : 5b9a60: 48 8b 41 28 mov 0x28(%rcx),%rax 0.24 : 5b9a64: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 1.29 : 5b9a68: 48 89 84 d3 28 01 00 mov %rax,0x128(%rbx,%rdx,8) 0.00 : 5b9a6f: 00 : fcinfo->argnull[i + 1] = slot->tts_isnull[i]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:600 4.28 : 5b9a70: 48 8b 41 30 mov 0x30(%rcx),%rax 0.30 : 5b9a74: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.21 : 5b9a78: 88 84 13 41 04 00 00 mov %al,0x441(%rbx,%rdx,1) 4.60 : 5b9a7f: 48 83 c2 01 add $0x1,%rdx : FunctionCallInfo fcinfo = &peraggstate->transfn_fcinfo; : : /* Load values into fcinfo */ : /* Start from 1, since the 0th arg will be the transition value */ : Assert(slot->tts_nvalid >= numTransInputs); : for (i = 0; i < numTransInputs; i++) 0.28 : 5b9a83: 41 39 d4 cmp %edx,%r12d 0.00 : 5b9a86: 7f d8 jg 5b9a60 : { : fcinfo->arg[i + 1] = slot->tts_values[i]; : fcinfo->argnull[i + 1] = slot->tts_isnull[i]; : } : : advance_transition_function(aggstate, peraggstate, pergroupstate); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:603 0.54 : 5b9a88: 48 8b 55 c0 mov -0x40(%rbp),%rdx 3.85 : 5b9a8c: 49 c1 e5 04 shl $0x4,%r13 0.60 : 5b9a90: 48 89 de mov %rbx,%rsi 0.17 : 5b9a93: 4c 89 ff mov %r15,%rdi 0.50 : 5b9a96: 4c 01 ea add %r13,%rdx 3.44 : 5b9a99: e8 f2 fc ff ff callq 5b9790 2.22 : 5b9a9e: eb 88 jmp 5b9a28 : continue; : } : : /* OK, put the tuple into the tuplesort object */ : if (peraggstate->numInputs == 1) : tuplesort_putdatum(peraggstate->sortstate, 0.00 : 5b9aa0: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 5b9aa4: 48 8b bb f8 00 00 00 mov 0xf8(%rbx),%rdi 0.02 : 5b9aab: 0f be 10 movsbl (%rax),%edx 0.00 : 5b9aae: 48 8b 41 28 mov 0x28(%rcx),%rax 0.00 : 5b9ab2: 48 8b 30 mov (%rax),%rsi 0.00 : 5b9ab5: e8 66 54 1e 00 callq 79ef20 0.00 : 5b9aba: e9 69 ff ff ff jmpq 5b9a28 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 8.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 8.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 6.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 6.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 4.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 3.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 3.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 2.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 2.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 2.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 2.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 2.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 2.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 2.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 2.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 2.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 1.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 1.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 0.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 0.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000757d90 : : *****************************************************************************/ : : /* "True" length (not counting trailing blanks) of a BpChar */ : static int : bcTruelen(BpChar *arg) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 2.28 : 757d90: 55 push %rbp : char *s = VARDATA_ANY(arg); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 2.05 : 757d91: 0f b6 17 movzbl (%rdi),%edx 2.69 : 757d94: 48 8d 4f 01 lea 0x1(%rdi),%rcx 1.13 : 757d98: 48 8d 47 04 lea 0x4(%rdi),%rax 0.57 : 757d9c: be 01 00 00 00 mov $0x1,%esi : *****************************************************************************/ : : /* "True" length (not counting trailing blanks) of a BpChar */ : static int : bcTruelen(BpChar *arg) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 1.03 : 757da1: 48 89 e5 mov %rsp,%rbp : char *s = VARDATA_ANY(arg); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 3.49 : 757da4: 21 d6 and %edx,%esi 0.57 : 757da6: 48 0f 44 c8 cmove %rax,%rcx : int i; : int len; : : len = VARSIZE_ANY_EXHDR(arg); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 4.12 : 757daa: 80 fa 01 cmp $0x1,%dl 0.00 : 757dad: 74 51 je 757e00 0.96 : 757daf: 85 f6 test %esi,%esi 0.00 : 757db1: 75 3d jne 757df0 0.10 : 757db3: 8b 07 mov (%rdi),%eax 0.07 : 757db5: c1 e8 02 shr $0x2,%eax 0.82 : 757db8: 83 e8 04 sub $0x4,%eax : for (i = len - 1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 0.57 : 757dbb: 89 c2 mov %eax,%edx 1.56 : 757dbd: 83 ea 01 sub $0x1,%edx 2.92 : 757dc0: 78 20 js 757de2 2.60 : 757dc2: 48 63 f2 movslq %edx,%rsi : { : if (s[i] != ' ') 0.32 : 757dc5: 80 3c 31 20 cmpb $0x20,(%rcx,%rsi,1) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 25.80 : 757dc9: 74 0e je 757dd9 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 3.63 : 757dcb: eb 15 jmp 757de2 0.00 : 757dcd: 0f 1f 00 nopl (%rax) 2.71 : 757dd0: 48 63 c2 movslq %edx,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 6.31 : 757dd3: 80 3c 01 20 cmpb $0x20,(%rcx,%rax,1) 8.13 : 757dd7: 75 09 jne 757de2 : char *s = VARDATA_ANY(arg); : int i; : int len; : : len = VARSIZE_ANY_EXHDR(arg); : for (i = len - 1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 8.06 : 757dd9: 83 ea 01 sub $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 2.09 : 757ddc: 0f 1f 40 00 nopl 0x0(%rax) 1.01 : 757de0: 79 ee jns 757dd0 2.60 : 757de2: 8d 42 01 lea 0x1(%rdx),%eax : { : if (s[i] != ' ') : break; : } : return i + 1; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 1.41 : 757de5: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 6.12 : 757de6: c3 retq 0.00 : 757de7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 757dee: 00 00 : { : char *s = VARDATA_ANY(arg); : int i; : int len; : : len = VARSIZE_ANY_EXHDR(arg); 0.21 : 757df0: d0 ea shr %dl /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 0.74 : 757df2: 0f b6 c2 movzbl %dl,%eax 2.42 : 757df5: 83 e8 01 sub $0x1,%eax 0.91 : 757df8: eb c1 jmp 757dbb 0.00 : 757dfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 757e00: 0f b6 7f 01 movzbl 0x1(%rdi),%edi 0.00 : 757e04: ba 07 00 00 00 mov $0x7,%edx 0.00 : 757e09: be 07 00 00 00 mov $0x7,%esi 0.00 : 757e0e: 40 80 ff 01 cmp $0x1,%dil 0.00 : 757e12: 74 b1 je 757dc5 0.00 : 757e14: 40 80 ff 12 cmp $0x12,%dil 0.00 : 757e18: b8 00 00 00 00 mov $0x0,%eax 0.00 : 757e1d: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 757e22: 0f 45 d0 cmovne %eax,%edx 0.00 : 757e25: be 0f 00 00 00 mov $0xf,%esi 0.00 : 757e2a: b8 00 00 00 00 mov $0x0,%eax 0.00 : 757e2f: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 757e33: eb 90 jmp 757dc5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:261 6.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:234 6.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:345 4.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:113 4.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:667 4.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:113 3.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:235 3.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:651 2.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:237 2.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:682 2.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:281 2.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:345 2.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:662 2.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 2.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:667 2.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:213 1.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:277 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:63 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:227 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:227 1.47 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 1.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:280 1.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 1.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 1.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:239 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:277 1.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:235 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:63 1.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:237 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:228 1.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:106 0.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 0.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:691 0.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:302 0.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:235 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:672 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:674 0.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:667 0.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:272 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:245 0.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:237 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:296 0.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:245 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:63 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:234 0.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:393 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bdaa0 : : * the other one is "outer". : * ---------------------------------------------------------------- : */ : TupleTableSlot * /* return: a tuple or NULL */ : ExecHashJoin(HashJoinState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:63 1.50 : 5bdaa0: 55 push %rbp 1.14 : 5bdaa1: 48 89 e5 mov %rsp,%rbp 0.00 : 5bdaa4: 41 57 push %r15 0.58 : 5bdaa6: 41 56 push %r14 0.45 : 5bdaa8: 49 89 fe mov %rdi,%r14 0.00 : 5bdaab: 41 55 push %r13 0.10 : 5bdaad: 41 54 push %r12 0.10 : 5bdaaf: 53 push %rbx 0.03 : 5bdab0: 48 83 ec 58 sub $0x58,%rsp : int batchno; : : /* : * get information from HashJoin node : */ : joinqual = node->js.joinqual; 0.04 : 5bdab4: 48 8b 87 80 00 00 00 mov 0x80(%rdi),%rax 0.47 : 5bdabb: 48 89 45 a0 mov %rax,-0x60(%rbp) : otherqual = node->js.ps.qual; 0.06 : 5bdabf: 48 8b 57 28 mov 0x28(%rdi),%rdx 0.06 : 5bdac3: 48 89 55 a8 mov %rdx,-0x58(%rbp) : hashNode = (HashState *) innerPlanState(node); 0.16 : 5bdac7: 48 8b 4f 38 mov 0x38(%rdi),%rcx 0.03 : 5bdacb: 48 89 4d 98 mov %rcx,-0x68(%rbp) : outerNode = outerPlanState(node); 0.16 : 5bdacf: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 5bdad3: 48 89 45 90 mov %rax,-0x70(%rbp) : hashtable = node->hj_HashTable; 0.31 : 5bdad7: 48 8b 97 a8 00 00 00 mov 0xa8(%rdi),%rdx 0.12 : 5bdade: 48 89 55 b8 mov %rdx,-0x48(%rbp) : econtext = node->js.ps.ps_ExprContext; 0.25 : 5bdae2: 48 8b 4f 60 mov 0x60(%rdi),%rcx 0.25 : 5bdae6: 48 89 4d b0 mov %rcx,-0x50(%rbp) : /* : * Check to see if we're still projecting out tuples from a previous join : * tuple (because there is a function-returning-set in the projection : * expressions). If so, try to project another one. : */ : if (node->js.ps.ps_TupFromTlist) 0.17 : 5bdaea: 80 7f 70 00 cmpb $0x0,0x70(%rdi) 0.04 : 5bdaee: 74 1c je 5bdb0c : { : TupleTableSlot *result; : : result = ExecProject(node->js.ps.ps_ProjInfo, &isDone); 0.00 : 5bdaf0: 48 8b 7f 68 mov 0x68(%rdi),%rdi 0.00 : 5bdaf4: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5bdaf8: e8 03 f5 fe ff callq 5ad000 : if (isDone == ExprMultipleResult) 0.00 : 5bdafd: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) 0.00 : 5bdb01: 0f 84 91 04 00 00 je 5bdf98 : return result; : /* Done with that source tuple... */ : node->js.ps.ps_TupFromTlist = false; 0.00 : 5bdb07: 41 c6 46 70 00 movb $0x0,0x70(%r14) : /* : * Reset per-tuple memory context to free any expression evaluation : * storage allocated in the previous tuple cycle. Note this can't happen : * until we're done projecting out tuples from a join tuple. : */ : ResetExprContext(econtext); 0.15 : 5bdb0c: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.33 : 5bdb10: 48 8b 78 28 mov 0x28(%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:106 1.00 : 5bdb14: e8 97 ae 1d 00 callq 7989b0 : /* : * Find the corresponding bucket for this tuple in the main : * hash table or skew hash table. : */ : node->hj_CurHashValue = hashvalue; : ExecHashGetBucketAndBatch(hashtable, hashvalue, 0.06 : 5bdb19: 49 8d 96 b4 00 00 00 lea 0xb4(%r14),%rdx 0.00 : 5bdb20: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.35 : 5bdb24: 0f 1f 40 00 nopl 0x0(%rax) : /* : * run the hash join state machine : */ : for (;;) : { : switch (node->hj_JoinState) 0.22 : 5bdb28: 41 83 be f0 00 00 00 cmpl $0x6,0xf0(%r14) 0.00 : 5bdb2f: 06 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:113 4.56 : 5bdb30: 76 36 jbe 5bdb68 : return NULL; /* end of join */ : node->hj_JoinState = HJ_NEED_NEW_OUTER; : break; : : default: : elog(ERROR, "unrecognized hashjoin state: %d", 0.00 : 5bdb32: ba c1 ba 88 00 mov $0x88bac1,%edx 0.00 : 5bdb37: be a7 01 00 00 mov $0x1a7,%esi 0.00 : 5bdb3c: bf 58 b9 88 00 mov $0x88b958,%edi 0.00 : 5bdb41: e8 da d8 1b 00 callq 77b420 0.00 : 5bdb46: 41 8b 96 f0 00 00 00 mov 0xf0(%r14),%edx 0.00 : 5bdb4d: be 00 ba 88 00 mov $0x88ba00,%esi 0.00 : 5bdb52: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5bdb57: 31 c0 xor %eax,%eax 0.00 : 5bdb59: e8 d2 d6 1b 00 callq 77b230 0.00 : 5bdb5e: e8 6d b9 ea ff callq 4694d0 0.00 : 5bdb63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * run the hash join state machine : */ : for (;;) : { : switch (node->hj_JoinState) 4.18 : 5bdb68: 41 8b 86 f0 00 00 00 mov 0xf0(%r14),%eax 0.32 : 5bdb6f: ff 24 c5 50 ba 88 00 jmpq *0x88ba50(,%rax,8) 0.00 : 5bdb76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5bdb7d: 00 00 00 : * : * The only way to make the check is to try to fetch a tuple : * from the outer plan node. If we succeed, we have to stash : * it away for later consumption by ExecHashJoinOuterGetTuple. : */ : if (HJ_FILL_INNER(node)) 0.00 : 5bdb80: 49 83 be d8 00 00 00 cmpq $0x0,0xd8(%r14) 0.00 : 5bdb87: 00 0.00 : 5bdb88: 0f 84 da 05 00 00 je 5be168 : } : else : node->hj_OuterNotEmpty = true; : } : else : node->hj_FirstOuterTupleSlot = NULL; 0.00 : 5bdb8e: 49 c7 86 e8 00 00 00 movq $0x0,0xe8(%r14) 0.00 : 5bdb95: 00 00 00 00 : : /* : * create the hash table : */ : hashtable = ExecHashTableCreate((Hash *) hashNode->ps.plan, 0.00 : 5bdb99: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5bdb9d: 31 d2 xor %edx,%edx 0.00 : 5bdb9f: 49 83 be d8 00 00 00 cmpq $0x0,0xd8(%r14) 0.00 : 5bdba6: 00 0.00 : 5bdba7: 49 8b b6 a0 00 00 00 mov 0xa0(%r14),%rsi 0.00 : 5bdbae: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5bdbb2: 0f 95 c2 setne %dl 0.00 : 5bdbb5: e8 e6 ec ff ff callq 5bc8a0 : node->hj_HashTable = hashtable; : : /* : * execute the Hash node, to build the hash table : */ : hashNode->hashtable = hashtable; 0.00 : 5bdbba: 48 8b 55 98 mov -0x68(%rbp),%rdx : node->hj_FirstOuterTupleSlot = NULL; : : /* : * create the hash table : */ : hashtable = ExecHashTableCreate((Hash *) hashNode->ps.plan, 0.00 : 5bdbbe: 48 89 45 b8 mov %rax,-0x48(%rbp) : node->hj_HashOperators, : HJ_FILL_INNER(node)); : node->hj_HashTable = hashtable; 0.00 : 5bdbc2: 49 89 86 a8 00 00 00 mov %rax,0xa8(%r14) : : /* : * execute the Hash node, to build the hash table : */ : hashNode->hashtable = hashtable; : (void) MultiExecProcNode((PlanState *) hashNode); 0.00 : 5bdbc9: 48 89 d7 mov %rdx,%rdi : node->hj_HashTable = hashtable; : : /* : * execute the Hash node, to build the hash table : */ : hashNode->hashtable = hashtable; 0.00 : 5bdbcc: 48 89 42 78 mov %rax,0x78(%rdx) : (void) MultiExecProcNode((PlanState *) hashNode); 0.00 : 5bdbd0: e8 fb e7 fe ff callq 5ac3d0 : /* : * If the inner relation is completely empty, and we're not : * doing a left outer join, we can quit without scanning the : * outer relation. : */ : if (hashtable->totalTuples == 0 && !HJ_FILL_OUTER(node)) 0.00 : 5bdbd5: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 5bdbd9: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 5bdbdd: 66 0f 2e 41 58 ucomisd 0x58(%rcx),%xmm0 0.00 : 5bdbe2: 0f 84 6b 06 00 00 je 5be253 : : /* : * need to remember whether nbatch has increased since we : * began scanning the outer relation : */ : hashtable->nbatch_outstart = hashtable->nbatch; 0.00 : 5bdbe8: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 5bdbec: 8b 42 40 mov 0x40(%rdx),%eax 0.00 : 5bdbef: 89 42 4c mov %eax,0x4c(%rdx) : /* : * Reset OuterNotEmpty for scan. (It's OK if we fetched a : * tuple above, because ExecHashJoinOuterGetTuple will : * immediately set it again.) : */ : node->hj_OuterNotEmpty = false; 0.00 : 5bdbf2: 41 c6 86 f5 00 00 00 movb $0x0,0xf5(%r14) 0.00 : 5bdbf9: 00 : : node->hj_JoinState = HJ_NEED_NEW_OUTER; 0.00 : 5bdbfa: 41 c7 86 f0 00 00 00 movl $0x2,0xf0(%r14) 0.00 : 5bdc01: 02 00 00 00 : static TupleTableSlot * : ExecHashJoinOuterGetTuple(PlanState *outerNode, : HashJoinState *hjstate, : uint32 *hashvalue) : { : HashJoinTable hashtable = hjstate->hj_HashTable; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:651 3.00 : 5bdc05: 49 8b 9e a8 00 00 00 mov 0xa8(%r14),%rbx : int curbatch = hashtable->curbatch; 0.20 : 5bdc0c: 8b 43 44 mov 0x44(%rbx),%eax : TupleTableSlot *slot; : : if (curbatch == 0) /* if it is the first pass */ 0.28 : 5bdc0f: 85 c0 test %eax,%eax 0.00 : 5bdc11: 0f 85 a9 00 00 00 jne 5bdcc0 : { : /* : * Check to see if first outer tuple was already fetched by : * ExecHashJoin() and not used yet. : */ : slot = hjstate->hj_FirstOuterTupleSlot; 0.16 : 5bdc17: 4d 8b a6 e8 00 00 00 mov 0xe8(%r14),%r12 : if (!TupIsNull(slot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:662 2.14 : 5bdc1e: 4d 85 e4 test %r12,%r12 0.00 : 5bdc21: 74 5d je 5bdc80 0.00 : 5bdc23: 41 80 7c 24 04 00 cmpb $0x0,0x4(%r12) 0.00 : 5bdc29: 75 55 jne 5bdc80 : hjstate->hj_FirstOuterTupleSlot = NULL; 0.00 : 5bdc2b: 49 c7 86 e8 00 00 00 movq $0x0,0xe8(%r14) 0.00 : 5bdc32: 00 00 00 00 0.00 : 5bdc36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5bdc3d: 00 00 00 : else : slot = ExecProcNode(outerNode); : : while (!TupIsNull(slot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:667 2.08 : 5bdc40: 41 80 7c 24 04 00 cmpb $0x0,0x4(%r12) 0.71 : 5bdc46: 75 50 jne 5bdc98 : { : /* : * We have to compute the tuple's hash value. : */ : ExprContext *econtext = hjstate->js.ps.ps_ExprContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:672 0.73 : 5bdc48: 49 8b 76 60 mov 0x60(%r14),%rsi : : econtext->ecxt_outertuple = slot; : if (ExecHashGetHashValue(hashtable, econtext, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 0.89 : 5bdc4c: 4c 8d 4d d0 lea -0x30(%rbp),%r9 1.38 : 5bdc50: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 5bdc55: 48 89 df mov %rbx,%rdi : /* : * We have to compute the tuple's hash value. : */ : ExprContext *econtext = hjstate->js.ps.ps_ExprContext; : : econtext->ecxt_outertuple = slot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:674 0.73 : 5bdc58: 4c 89 66 18 mov %r12,0x18(%rsi) : if (ExecHashGetHashValue(hashtable, econtext, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:675 1.47 : 5bdc5c: 49 83 be e0 00 00 00 cmpq $0x0,0xe0(%r14) 0.00 : 5bdc63: 00 1.32 : 5bdc64: 49 8b 96 90 00 00 00 mov 0x90(%r14),%rdx 0.13 : 5bdc6b: 41 0f 95 c0 setne %r8b 0.55 : 5bdc6f: 41 83 e0 01 and $0x1,%r8d 0.25 : 5bdc73: e8 18 e2 ff ff callq 5bbe90 2.14 : 5bdc78: 84 c0 test %al,%al 0.00 : 5bdc7a: 0f 85 90 04 00 00 jne 5be110 : : /* : * That tuple couldn't match because of a NULL, so discard it and : * continue with the next one. : */ : slot = ExecProcNode(outerNode); 0.00 : 5bdc80: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.09 : 5bdc84: e8 17 e8 fe ff callq 5ac4a0 : if (!TupIsNull(slot)) : hjstate->hj_FirstOuterTupleSlot = NULL; : else : slot = ExecProcNode(outerNode); : : while (!TupIsNull(slot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:667 4.43 : 5bdc89: 48 85 c0 test %rax,%rax : : /* : * That tuple couldn't match because of a NULL, so discard it and : * continue with the next one. : */ : slot = ExecProcNode(outerNode); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:691 0.89 : 5bdc8c: 49 89 c4 mov %rax,%r12 : if (!TupIsNull(slot)) : hjstate->hj_FirstOuterTupleSlot = NULL; : else : slot = ExecProcNode(outerNode); : : while (!TupIsNull(slot)) 0.03 : 5bdc8f: 75 af jne 5bdc40 0.00 : 5bdc91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : node, : &hashvalue); : if (TupIsNull(outerTupleSlot)) : { : /* end of batch, or maybe whole join */ : if (HJ_FILL_INNER(node)) 0.00 : 5bdc98: 49 83 be d8 00 00 00 cmpq $0x0,0xd8(%r14) 0.00 : 5bdc9f: 00 0.00 : 5bdca0: 0f 84 0a 03 00 00 je 5bdfb0 : { : /* set up to scan for unmatched inner tuples */ : ExecPrepHashTableForUnmatched(node); 0.00 : 5bdca6: 4c 89 f7 mov %r14,%rdi 0.00 : 5bdca9: e8 52 de ff ff callq 5bbb00 : node->hj_JoinState = HJ_FILL_INNER_TUPLES; 0.00 : 5bdcae: 41 c7 86 f0 00 00 00 movl $0x5,0xf0(%r14) 0.00 : 5bdcb5: 05 00 00 00 0.00 : 5bdcb9: e9 6a fe ff ff jmpq 5bdb28 0.00 : 5bdcbe: 66 90 xchg %ax,%ax : * continue with the next one. : */ : slot = ExecProcNode(outerNode); : } : } : else if (curbatch < hashtable->nbatch) 0.00 : 5bdcc0: 3b 43 40 cmp 0x40(%rbx),%eax 0.00 : 5bdcc3: 7d d3 jge 5bdc98 : { : BufFile *file = hashtable->outerBatchFile[curbatch]; 0.00 : 5bdcc5: 48 63 d0 movslq %eax,%rdx 0.00 : 5bdcc8: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 5bdccc: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi : : /* : * In outer-join cases, we could get here even though the batch file : * is empty. : */ : if (file == NULL) 0.00 : 5bdcd0: 48 85 f6 test %rsi,%rsi 0.00 : 5bdcd3: 74 c3 je 5bdc98 : return NULL; : : slot = ExecHashJoinGetSavedTuple(hjstate, 0.00 : 5bdcd5: 49 8b 8e c8 00 00 00 mov 0xc8(%r14),%rcx 0.00 : 5bdcdc: 48 8d 55 d0 lea -0x30(%rbp),%rdx 0.00 : 5bdce0: 4c 89 f7 mov %r14,%rdi 0.00 : 5bdce3: e8 c8 fc ff ff callq 5bd9b0 : file, : hashvalue, : hjstate->hj_OuterTupleSlot); : if (!TupIsNull(slot)) 0.00 : 5bdce8: 48 85 c0 test %rax,%rax : * is empty. : */ : if (file == NULL) : return NULL; : : slot = ExecHashJoinGetSavedTuple(hjstate, 0.00 : 5bdceb: 49 89 c4 mov %rax,%r12 : file, : hashvalue, : hjstate->hj_OuterTupleSlot); : if (!TupIsNull(slot)) 0.00 : 5bdcee: 74 a8 je 5bdc98 0.00 : 5bdcf0: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5bdcf4: 75 a2 jne 5bdc98 : else : node->hj_JoinState = HJ_NEED_NEW_BATCH; : continue; : } : : econtext->ecxt_outertuple = outerTupleSlot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:227 1.50 : 5bdcf6: 48 8b 4d b0 mov -0x50(%rbp),%rcx 1.48 : 5bdcfa: 4c 89 61 18 mov %r12,0x18(%rcx) : : /* : * Find the corresponding bucket for this tuple in the main : * hash table or skew hash table. : */ : node->hj_CurHashValue = hashvalue; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:234 6.59 : 5bdcfe: 8b 75 d0 mov -0x30(%rbp),%esi : ExecHashGetBucketAndBatch(hashtable, hashvalue, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:235 3.90 : 5bdd01: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.39 : 5bdd05: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.76 : 5bdd09: 48 8b 7d b8 mov -0x48(%rbp),%rdi : node->hj_JoinState = HJ_NEED_NEW_BATCH; : continue; : } : : econtext->ecxt_outertuple = outerTupleSlot; : node->hj_MatchedOuter = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:228 1.02 : 5bdd0d: 41 c6 86 f4 00 00 00 movb $0x0,0xf4(%r14) 0.00 : 5bdd14: 00 : : /* : * Find the corresponding bucket for this tuple in the main : * hash table or skew hash table. : */ : node->hj_CurHashValue = hashvalue; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:234 0.55 : 5bdd15: 41 89 b6 b0 00 00 00 mov %esi,0xb0(%r14) : ExecHashGetBucketAndBatch(hashtable, hashvalue, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:235 1.18 : 5bdd1c: e8 9f dd ff ff callq 5bbac0 : &node->hj_CurBucketNo, &batchno); : node->hj_CurSkewBucketNo = ExecHashGetSkewBucket(hashtable, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:237 1.05 : 5bdd21: 8b 75 d0 mov -0x30(%rbp),%esi 2.77 : 5bdd24: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.42 : 5bdd28: e8 83 de ff ff callq 5bbbb0 : : /* : * The tuple might not belong to the current batch (where : * "current batch" includes the skew buckets if any). : */ : if (batchno != hashtable->curbatch && /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:245 0.68 : 5bdd2d: 48 8b 55 b8 mov -0x48(%rbp),%rdx : * hash table or skew hash table. : */ : node->hj_CurHashValue = hashvalue; : ExecHashGetBucketAndBatch(hashtable, hashvalue, : &node->hj_CurBucketNo, &batchno); : node->hj_CurSkewBucketNo = ExecHashGetSkewBucket(hashtable, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:237 0.67 : 5bdd31: 41 89 86 b8 00 00 00 mov %eax,0xb8(%r14) : hashvalue); : node->hj_CurTuple = NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:239 1.30 : 5bdd38: 49 c7 86 c0 00 00 00 movq $0x0,0xc0(%r14) 0.00 : 5bdd3f: 00 00 00 00 : : /* : * The tuple might not belong to the current batch (where : * "current batch" includes the skew buckets if any). : */ : if (batchno != hashtable->curbatch && 0.33 : 5bdd43: 8b 45 cc mov -0x34(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:245 0.61 : 5bdd46: 39 42 44 cmp %eax,0x44(%rdx) 0.00 : 5bdd49: 74 0e je 5bdd59 0.00 : 5bdd4b: 41 83 be b8 00 00 00 cmpl $0xffffffff,0xb8(%r14) 0.00 : 5bdd52: ff 0.00 : 5bdd53: 0f 84 4d 04 00 00 je 5be1a6 : /* Loop around, staying in HJ_NEED_NEW_OUTER state */ : continue; : } : : /* OK, let's scan the bucket for matches */ : node->hj_JoinState = HJ_SCAN_BUCKET; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:261 7.28 : 5bdd59: 41 c7 86 f0 00 00 00 movl $0x3,0xf0(%r14) 0.00 : 5bdd60: 03 00 00 00 : /* : * We check for interrupts here because this corresponds to : * where we'd fetch a row from a child plan node in other join : * types. : */ : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:272 0.71 : 5bdd64: 0f b6 05 25 c3 5f 00 movzbl 0x5fc325(%rip),%eax # bba090 0.10 : 5bdd6b: 84 c0 test %al,%al 0.00 : 5bdd6d: 0f 85 8d 03 00 00 jne 5be100 : : /* : * Scan the selected hash bucket for matches to current outer : */ : if (!ExecScanHashBucket(node, econtext)) 0.29 : 5bdd73: 48 8b 75 b0 mov -0x50(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:277 1.72 : 5bdd77: 4c 89 f7 mov %r14,%rdi 0.26 : 5bdd7a: e8 21 e0 ff ff callq 5bbda0 1.21 : 5bdd7f: 84 c0 test %al,%al 0.00 : 5bdd81: 0f 85 39 02 00 00 jne 5bdfc0 : { : /* out of matches; check for possible outer-join fill */ : node->hj_JoinState = HJ_FILL_OUTER_TUPLE; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:280 1.41 : 5bdd87: 41 c7 86 f0 00 00 00 movl $0x4,0xf0(%r14) 0.00 : 5bdd8e: 04 00 00 00 : continue; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:281 2.31 : 5bdd92: e9 91 fd ff ff jmpq 5bdb28 0.00 : 5bdd97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5bdd9e: 00 00 : * Returns true if successful, false if there are no more batches. : */ : static bool : ExecHashJoinNewBatch(HashJoinState *hjstate) : { : HashJoinTable hashtable = hjstate->hj_HashTable; 0.00 : 5bdda0: 4d 8b a6 a8 00 00 00 mov 0xa8(%r14),%r12 : BufFile *innerFile; : TupleTableSlot *slot; : uint32 hashvalue; : : nbatch = hashtable->nbatch; : curbatch = hashtable->curbatch; 0.00 : 5bdda7: 41 8b 5c 24 44 mov 0x44(%r12),%ebx : int curbatch; : BufFile *innerFile; : TupleTableSlot *slot; : uint32 hashvalue; : : nbatch = hashtable->nbatch; 0.00 : 5bddac: 45 8b 7c 24 40 mov 0x40(%r12),%r15d : curbatch = hashtable->curbatch; : : if (curbatch > 0) 0.00 : 5bddb1: 85 db test %ebx,%ebx 0.00 : 5bddb3: 0f 8e 77 03 00 00 jle 5be130 : { : /* : * We no longer need the previous outer batch file; close it right : * away to free disk space. : */ : if (hashtable->outerBatchFile[curbatch]) 0.00 : 5bddb9: 48 63 c3 movslq %ebx,%rax 0.00 : 5bddbc: 4c 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%r13 0.00 : 5bddc3: 00 0.00 : 5bddc4: 4c 89 e8 mov %r13,%rax 0.00 : 5bddc7: 49 03 44 24 70 add 0x70(%r12),%rax 0.00 : 5bddcc: 48 8b 38 mov (%rax),%rdi 0.00 : 5bddcf: 48 85 ff test %rdi,%rdi 0.00 : 5bddd2: 74 0d je 5bdde1 : BufFileClose(hashtable->outerBatchFile[curbatch]); 0.00 : 5bddd4: e8 d7 d1 0b 00 callq 67afb0 0.00 : 5bddd9: 4c 89 e8 mov %r13,%rax 0.00 : 5bdddc: 49 03 44 24 70 add 0x70(%r12),%rax : hashtable->outerBatchFile[curbatch] = NULL; 0.00 : 5bdde1: 48 c7 00 00 00 00 00 movq $0x0,(%rax) : * : * 3. Similarly, if we have increased nbatch since starting the outer : * scan, we have to rescan outer batches in case they contain tuples that : * need to be reassigned. : */ : curbatch++; 0.00 : 5bdde8: 44 8d 6b 01 lea 0x1(%rbx),%r13d : while (curbatch < nbatch && 0.00 : 5bddec: 45 39 ef cmp %r13d,%r15d 0.00 : 5bddef: 7f 73 jg 5bde64 0.00 : 5bddf1: e9 7a 04 00 00 jmpq 5be270 0.00 : 5bddf6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5bddfd: 00 00 00 0.00 : 5bde00: 49 8b 44 24 68 mov 0x68(%r12),%rax 0.00 : 5bde05: 48 83 3c d8 00 cmpq $0x0,(%rax,%rbx,8) 0.00 : 5bde0a: 0f 85 38 02 00 00 jne 5be048 : (hashtable->outerBatchFile[curbatch] == NULL || : hashtable->innerBatchFile[curbatch] == NULL)) : { : if (hashtable->outerBatchFile[curbatch] && 0.00 : 5bde10: 49 83 be e0 00 00 00 cmpq $0x0,0xe0(%r14) 0.00 : 5bde17: 00 0.00 : 5bde18: 0f 85 2a 02 00 00 jne 5be048 : HJ_FILL_INNER(hjstate)) : break; /* must process due to rule 1 */ : if (hashtable->innerBatchFile[curbatch] && : nbatch != hashtable->nbatch_original) : break; /* must process due to rule 2 */ : if (hashtable->outerBatchFile[curbatch] && 0.00 : 5bde1e: 45 3b 7c 24 4c cmp 0x4c(%r12),%r15d 0.00 : 5bde23: 0f 85 1f 02 00 00 jne 5be048 : break; /* must process due to rule 3 */ : /* We can ignore this batch. */ : /* Release associated temp files right away. */ : if (hashtable->innerBatchFile[curbatch]) : BufFileClose(hashtable->innerBatchFile[curbatch]); : hashtable->innerBatchFile[curbatch] = NULL; 0.00 : 5bde29: 48 c7 04 d8 00 00 00 movq $0x0,(%rax,%rbx,8) 0.00 : 5bde30: 00 : if (hashtable->outerBatchFile[curbatch]) 0.00 : 5bde31: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 5bde35: 49 03 44 24 70 add 0x70(%r12),%rax 0.00 : 5bde3a: 48 8b 38 mov (%rax),%rdi 0.00 : 5bde3d: 48 85 ff test %rdi,%rdi 0.00 : 5bde40: 74 0e je 5bde50 : BufFileClose(hashtable->outerBatchFile[curbatch]); 0.00 : 5bde42: e8 69 d1 0b 00 callq 67afb0 0.00 : 5bde47: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 5bde4b: 49 03 44 24 70 add 0x70(%r12),%rax : hashtable->outerBatchFile[curbatch] = NULL; : curbatch++; 0.00 : 5bde50: 41 83 c5 01 add $0x1,%r13d : if (hashtable->innerBatchFile[curbatch]) : BufFileClose(hashtable->innerBatchFile[curbatch]); : hashtable->innerBatchFile[curbatch] = NULL; : if (hashtable->outerBatchFile[curbatch]) : BufFileClose(hashtable->outerBatchFile[curbatch]); : hashtable->outerBatchFile[curbatch] = NULL; 0.00 : 5bde54: 48 c7 00 00 00 00 00 movq $0x0,(%rax) : * 3. Similarly, if we have increased nbatch since starting the outer : * scan, we have to rescan outer batches in case they contain tuples that : * need to be reassigned. : */ : curbatch++; : while (curbatch < nbatch && 0.00 : 5bde5b: 45 39 ef cmp %r13d,%r15d 0.00 : 5bde5e: 0f 8e 0c 04 00 00 jle 5be270 0.00 : 5bde64: 49 63 dd movslq %r13d,%rbx 0.00 : 5bde67: 48 8d 0c dd 00 00 00 lea 0x0(,%rbx,8),%rcx 0.00 : 5bde6e: 00 0.00 : 5bde6f: 48 89 4d c0 mov %rcx,-0x40(%rbp) 0.00 : 5bde73: 49 8b 44 24 70 mov 0x70(%r12),%rax 0.00 : 5bde78: 48 83 3c d8 00 cmpq $0x0,(%rax,%rbx,8) 0.00 : 5bde7d: 75 81 jne 5bde00 : hashtable->innerBatchFile[curbatch] == NULL)) : { : if (hashtable->outerBatchFile[curbatch] && : HJ_FILL_OUTER(hjstate)) : break; /* must process due to rule 1 */ : if (hashtable->innerBatchFile[curbatch] && 0.00 : 5bde7f: 49 8b 44 24 68 mov 0x68(%r12),%rax 0.00 : 5bde84: 48 8b 3c d8 mov (%rax,%rbx,8),%rdi 0.00 : 5bde88: 48 85 ff test %rdi,%rdi 0.00 : 5bde8b: 74 9c je 5bde29 0.00 : 5bde8d: 49 83 be d8 00 00 00 cmpq $0x0,0xd8(%r14) 0.00 : 5bde94: 00 0.00 : 5bde95: 0f 85 ad 01 00 00 jne 5be048 : HJ_FILL_INNER(hjstate)) : break; /* must process due to rule 1 */ : if (hashtable->innerBatchFile[curbatch] && 0.00 : 5bde9b: 45 3b 7c 24 48 cmp 0x48(%r12),%r15d 0.00 : 5bdea0: 0f 85 a2 01 00 00 jne 5be048 : nbatch != hashtable->nbatch_outstart) : break; /* must process due to rule 3 */ : /* We can ignore this batch. */ : /* Release associated temp files right away. */ : if (hashtable->innerBatchFile[curbatch]) : BufFileClose(hashtable->innerBatchFile[curbatch]); 0.00 : 5bdea6: e8 05 d1 0b 00 callq 67afb0 0.00 : 5bdeab: 49 8b 44 24 68 mov 0x68(%r12),%rax 0.00 : 5bdeb0: e9 74 ff ff ff jmpq 5bde29 0.00 : 5bdeb5: 0f 1f 00 nopl (%rax) : /* : * We have finished a batch, but we are doing right/full join, : * so any unmatched inner tuples in the hashtable have to be : * emitted before we continue to the next batch. : */ : if (!ExecScanHashTableForUnmatched(node, econtext)) 0.00 : 5bdeb8: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 5bdebc: 4c 89 f7 mov %r14,%rdi 0.00 : 5bdebf: e8 ec dd ff ff callq 5bbcb0 0.00 : 5bdec4: 84 c0 test %al,%al 0.00 : 5bdec6: 0f 84 e4 00 00 00 je 5bdfb0 : : /* : * Generate a fake join tuple with nulls for the outer tuple, : * and return it if it passes the non-join quals. : */ : econtext->ecxt_outertuple = node->hj_NullOuterTupleSlot; 0.00 : 5bdecc: 49 8b 86 d8 00 00 00 mov 0xd8(%r14),%rax 0.00 : 5bded3: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.01 : 5bded7: 48 89 42 18 mov %rax,0x18(%rdx) : : if (otherqual == NIL || 0.09 : 5bdedb: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:393 0.54 : 5bdee0: 0f 84 8c 00 00 00 je 5bdf72 0.00 : 5bdee6: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 5bdeea: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5bdeee: 31 d2 xor %edx,%edx 0.00 : 5bdef0: e8 1b f0 fe ff callq 5acf10 0.00 : 5bdef5: 84 c0 test %al,%al 0.00 : 5bdef7: 75 79 jne 5bdf72 : (isDone == ExprMultipleResult); : return result; : } : } : else : InstrCountFiltered2(node, 1); 0.00 : 5bdef9: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 5bdefd: 48 85 c0 test %rax,%rax 0.00 : 5bdf00: 0f 84 22 fc ff ff je 5bdb28 0.00 : 5bdf06: f2 0f 10 05 4a 12 1f movsd 0x1f124a(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5bdf0d: 00 0.00 : 5bdf0e: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5bdf15: 00 0.00 : 5bdf16: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5bdf1d: 00 0.00 : 5bdf1e: e9 05 fc ff ff jmpq 5bdb28 0.00 : 5bdf23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * whether to emit a dummy outer-join tuple. Whether we emit : * one or not, the next state is NEED_NEW_OUTER. : */ : node->hj_JoinState = HJ_NEED_NEW_OUTER; : : if (!node->hj_MatchedOuter && /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:345 6.35 : 5bdf28: 41 80 be f4 00 00 00 cmpb $0x0,0xf4(%r14) 0.00 : 5bdf2f: 00 : /* : * The current outer tuple has run out of matches, so check : * whether to emit a dummy outer-join tuple. Whether we emit : * one or not, the next state is NEED_NEW_OUTER. : */ : node->hj_JoinState = HJ_NEED_NEW_OUTER; 0.06 : 5bdf30: 41 c7 86 f0 00 00 00 movl $0x2,0xf0(%r14) 0.00 : 5bdf37: 02 00 00 00 : : if (!node->hj_MatchedOuter && 0.07 : 5bdf3b: 0f 85 e7 fb ff ff jne 5bdb28 0.03 : 5bdf41: 49 8b 86 e0 00 00 00 mov 0xe0(%r14),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:345 2.17 : 5bdf48: 48 85 c0 test %rax,%rax 0.00 : 5bdf4b: 0f 84 d7 fb ff ff je 5bdb28 : { : /* : * Generate a fake join tuple with nulls for the inner : * tuple, and return it if it passes the non-join quals. : */ : econtext->ecxt_innertuple = node->hj_NullInnerTupleSlot; 0.00 : 5bdf51: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 5bdf55: 48 89 41 10 mov %rax,0x10(%rcx) : : if (otherqual == NIL || 0.00 : 5bdf59: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) 0.00 : 5bdf5e: 74 12 je 5bdf72 0.00 : 5bdf60: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5bdf64: 31 d2 xor %edx,%edx 0.00 : 5bdf66: 48 89 ce mov %rcx,%rsi 0.00 : 5bdf69: e8 a2 ef fe ff callq 5acf10 0.00 : 5bdf6e: 84 c0 test %al,%al 0.00 : 5bdf70: 74 87 je 5bdef9 : if (otherqual == NIL || : ExecQual(otherqual, econtext, false)) : { : TupleTableSlot *result; : : result = ExecProject(node->js.ps.ps_ProjInfo, &isDone); 0.15 : 5bdf72: 49 8b 7e 68 mov 0x68(%r14),%rdi 0.28 : 5bdf76: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.03 : 5bdf7a: e8 81 f0 fe ff callq 5ad000 : : if (isDone != ExprEndResult) 0.03 : 5bdf7f: 8b 55 d4 mov -0x2c(%rbp),%edx 0.25 : 5bdf82: 83 fa 02 cmp $0x2,%edx 0.00 : 5bdf85: 0f 84 9d fb ff ff je 5bdb28 : { : node->js.ps.ps_TupFromTlist = 0.04 : 5bdf8b: 83 ea 01 sub $0x1,%edx 0.04 : 5bdf8e: 41 0f 94 46 70 sete 0x70(%r14) 0.16 : 5bdf93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : default: : elog(ERROR, "unrecognized hashjoin state: %d", : (int) node->hj_JoinState); : } : } : } 0.00 : 5bdf98: 48 83 c4 58 add $0x58,%rsp 0.04 : 5bdf9c: 5b pop %rbx 0.17 : 5bdf9d: 41 5c pop %r12 0.03 : 5bdf9f: 41 5d pop %r13 0.04 : 5bdfa1: 41 5e pop %r14 0.01 : 5bdfa3: 41 5f pop %r15 0.15 : 5bdfa5: c9 leaveq 0.01 : 5bdfa6: c3 retq 0.00 : 5bdfa7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5bdfae: 00 00 : * emitted before we continue to the next batch. : */ : if (!ExecScanHashTableForUnmatched(node, econtext)) : { : /* no more unmatched tuples */ : node->hj_JoinState = HJ_NEED_NEW_BATCH; 0.00 : 5bdfb0: 41 c7 86 f0 00 00 00 movl $0x6,0xf0(%r14) 0.00 : 5bdfb7: 06 00 00 00 : continue; 0.00 : 5bdfbb: e9 68 fb ff ff jmpq 5bdb28 : * table, and return the slot. : * : * Only the joinquals determine tuple match status, but all : * quals must pass to actually return the tuple. : */ : if (joinqual == NIL || ExecQual(joinqual, econtext, false)) 0.42 : 5bdfc0: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:296 0.63 : 5bdfc5: 74 41 je 5be008 0.00 : 5bdfc7: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 5bdfcb: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 5bdfcf: 31 d2 xor %edx,%edx 0.00 : 5bdfd1: e8 3a ef fe ff callq 5acf10 0.00 : 5bdfd6: 84 c0 test %al,%al 0.00 : 5bdfd8: 75 2e jne 5be008 : } : else : InstrCountFiltered2(node, 1); : } : else : InstrCountFiltered1(node, 1); 0.00 : 5bdfda: 49 8b 46 18 mov 0x18(%r14),%rax 0.01 : 5bdfde: 48 85 c0 test %rax,%rax 0.00 : 5bdfe1: 0f 84 41 fb ff ff je 5bdb28 0.00 : 5bdfe7: f2 0f 10 05 69 11 1f movsd 0x1f1169(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5bdfee: 00 0.00 : 5bdfef: f2 0f 58 80 c8 00 00 addsd 0xc8(%rax),%xmm0 0.00 : 5bdff6: 00 0.01 : 5bdff7: f2 0f 11 80 c8 00 00 movsd %xmm0,0xc8(%rax) 0.00 : 5bdffe: 00 0.00 : 5bdfff: e9 24 fb ff ff jmpq 5bdb28 0.00 : 5be004: 0f 1f 40 00 nopl 0x0(%rax) : * quals must pass to actually return the tuple. : */ : if (joinqual == NIL || ExecQual(joinqual, econtext, false)) : { : node->hj_MatchedOuter = true; : HeapTupleHeaderSetMatch(HJTUPLE_MINTUPLE(node->hj_CurTuple)); 0.42 : 5be008: 49 8b 86 c0 00 00 00 mov 0xc0(%r14),%rax : * Only the joinquals determine tuple match status, but all : * quals must pass to actually return the tuple. : */ : if (joinqual == NIL || ExecQual(joinqual, econtext, false)) : { : node->hj_MatchedOuter = true; 0.38 : 5be00f: 41 c6 86 f4 00 00 00 movb $0x1,0xf4(%r14) 0.00 : 5be016: 01 : HeapTupleHeaderSetMatch(HJTUPLE_MINTUPLE(node->hj_CurTuple)); 0.33 : 5be017: 66 81 48 1a 00 80 orw $0x8000,0x1a(%rax) : : /* In an antijoin, we never return a matched tuple */ : if (node->js.jointype == JOIN_ANTI) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:302 0.86 : 5be01d: 41 8b 46 78 mov 0x78(%r14),%eax 0.04 : 5be021: 83 f8 05 cmp $0x5,%eax 0.00 : 5be024: 0f 84 bd 00 00 00 je 5be0e7 : : /* : * In a semijoin, we'll consider returning the first : * match, but after that we're done with this outer tuple. : */ : if (node->js.jointype == JOIN_SEMI) 0.00 : 5be02a: 83 f8 04 cmp $0x4,%eax 0.00 : 5be02d: 0f 85 a8 fe ff ff jne 5bdedb : node->hj_JoinState = HJ_NEED_NEW_OUTER; 0.00 : 5be033: 41 c7 86 f0 00 00 00 movl $0x2,0xf0(%r14) 0.00 : 5be03a: 02 00 00 00 0.00 : 5be03e: e9 98 fe ff ff jmpq 5bdedb 0.00 : 5be043: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : if (curbatch >= nbatch) : return false; /* no more batches */ : : hashtable->curbatch = curbatch; 0.00 : 5be048: 45 89 6c 24 44 mov %r13d,0x44(%r12) : : /* : * Reload the hash table with the new inner batch (which could be empty) : */ : ExecHashTableReset(hashtable); 0.00 : 5be04d: 4c 89 e7 mov %r12,%rdi 0.00 : 5be050: e8 db db ff ff callq 5bbc30 : : innerFile = hashtable->innerBatchFile[curbatch]; 0.00 : 5be055: 49 8b 44 24 68 mov 0x68(%r12),%rax 0.00 : 5be05a: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 5be05e: 48 8b 1c 10 mov (%rax,%rdx,1),%rbx : : if (innerFile != NULL) 0.00 : 5be062: 48 85 db test %rbx,%rbx 0.00 : 5be065: 74 5b je 5be0c2 : { : if (BufFileSeek(innerFile, 0, 0L, SEEK_SET)) 0.00 : 5be067: 31 c9 xor %ecx,%ecx 0.00 : 5be069: 31 d2 xor %edx,%edx 0.00 : 5be06b: 31 f6 xor %esi,%esi 0.00 : 5be06d: 48 89 df mov %rbx,%rdi 0.00 : 5be070: e8 8b ca 0b 00 callq 67ab00 0.00 : 5be075: 85 c0 test %eax,%eax 0.00 : 5be077: 74 15 je 5be08e 0.00 : 5be079: e9 08 02 00 00 jmpq 5be286 0.00 : 5be07e: 66 90 xchg %ax,%ax : { : /* : * NOTE: some tuples may be sent to future batches. Also, it is : * possible for hashtable->nbatch to be increased here! : */ : ExecHashTableInsert(hashtable, slot, hashvalue); 0.00 : 5be080: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 5be083: 48 89 c6 mov %rax,%rsi 0.00 : 5be086: 4c 89 e7 mov %r12,%rdi 0.00 : 5be089: e8 82 e3 ff ff callq 5bc410 : if (BufFileSeek(innerFile, 0, 0L, SEEK_SET)) : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not rewind hash-join temporary file: %m"))); : : while ((slot = ExecHashJoinGetSavedTuple(hjstate, 0.00 : 5be08e: 49 8b 8e d0 00 00 00 mov 0xd0(%r14),%rcx 0.00 : 5be095: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 5be099: 48 89 de mov %rbx,%rsi 0.00 : 5be09c: 4c 89 f7 mov %r14,%rdi 0.00 : 5be09f: e8 0c f9 ff ff callq 5bd9b0 0.00 : 5be0a4: 48 85 c0 test %rax,%rax 0.00 : 5be0a7: 75 d7 jne 5be080 : : /* : * after we build the hash table, the inner batch file is no longer : * needed : */ : BufFileClose(innerFile); 0.00 : 5be0a9: 48 89 df mov %rbx,%rdi 0.00 : 5be0ac: e8 ff ce 0b 00 callq 67afb0 : hashtable->innerBatchFile[curbatch] = NULL; 0.00 : 5be0b1: 49 8b 44 24 68 mov 0x68(%r12),%rax 0.00 : 5be0b6: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 5be0ba: 48 c7 04 08 00 00 00 movq $0x0,(%rax,%rcx,1) 0.00 : 5be0c1: 00 : } : : /* : * Rewind outer batch file (if present), so that we can start reading it. : */ : if (hashtable->outerBatchFile[curbatch] != NULL) 0.00 : 5be0c2: 49 8b 44 24 70 mov 0x70(%r12),%rax 0.00 : 5be0c7: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 5be0cb: 48 8b 3c 10 mov (%rax,%rdx,1),%rdi 0.00 : 5be0cf: 48 85 ff test %rdi,%rdi 0.00 : 5be0d2: 74 13 je 5be0e7 : { : if (BufFileSeek(hashtable->outerBatchFile[curbatch], 0, 0L, SEEK_SET)) 0.00 : 5be0d4: 31 c9 xor %ecx,%ecx 0.00 : 5be0d6: 31 d2 xor %edx,%edx 0.00 : 5be0d8: 31 f6 xor %esi,%esi 0.00 : 5be0da: e8 21 ca 0b 00 callq 67ab00 0.00 : 5be0df: 85 c0 test %eax,%eax 0.00 : 5be0e1: 0f 85 ea 00 00 00 jne 5be1d1 : /* : * Try to advance to next batch. Done if there are no more. : */ : if (!ExecHashJoinNewBatch(node)) : return NULL; /* end of join */ : node->hj_JoinState = HJ_NEED_NEW_OUTER; 0.00 : 5be0e7: 41 c7 86 f0 00 00 00 movl $0x2,0xf0(%r14) 0.00 : 5be0ee: 02 00 00 00 0.00 : 5be0f2: e9 31 fa ff ff jmpq 5bdb28 0.00 : 5be0f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5be0fe: 00 00 : /* : * We check for interrupts here because this corresponds to : * where we'd fetch a row from a child plan node in other join : * types. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5be100: e8 9b e1 0d 00 callq 69c2a0 0.00 : 5be105: e9 69 fc ff ff jmpq 5bdd73 0.00 : 5be10a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : true, /* outer tuple */ : HJ_FILL_OUTER(hjstate), : hashvalue)) : { : /* remember outer relation is not empty for possible rescan */ : hjstate->hj_OuterNotEmpty = true; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:682 2.36 : 5be110: 41 c6 86 f5 00 00 00 movb $0x1,0xf5(%r14) 0.00 : 5be117: 01 : * We don't have an outer tuple, try to get the next one : */ : outerTupleSlot = ExecHashJoinOuterGetTuple(outerNode, : node, : &hashvalue); : if (TupIsNull(outerTupleSlot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHashjoin.c:213 2.05 : 5be118: 41 80 7c 24 04 00 cmpb $0x0,0x4(%r12) 0.26 : 5be11e: 0f 85 74 fb ff ff jne 5bdc98 0.16 : 5be124: e9 cd fb ff ff jmpq 5bdcf6 0.00 : 5be129: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Reset some of the skew optimization state variables, since we no : * longer need to consider skew tuples after the first batch. The : * memory context reset we are about to do will release the skew : * hashtable itself. : */ : hashtable->skewEnabled = false; 0.00 : 5be130: 41 c6 44 24 21 00 movb $0x0,0x21(%r12) : hashtable->skewBucket = NULL; 0.00 : 5be136: 49 c7 44 24 28 00 00 movq $0x0,0x28(%r12) 0.00 : 5be13d: 00 00 : hashtable->skewBucketNums = NULL; 0.00 : 5be13f: 49 c7 44 24 38 00 00 movq $0x0,0x38(%r12) 0.00 : 5be146: 00 00 : hashtable->nSkewBuckets = 0; 0.00 : 5be148: 41 c7 44 24 34 00 00 movl $0x0,0x34(%r12) 0.00 : 5be14f: 00 00 : hashtable->spaceUsedSkew = 0; 0.00 : 5be151: 49 c7 84 24 a8 00 00 movq $0x0,0xa8(%r12) 0.00 : 5be158: 00 00 00 00 00 0.00 : 5be15d: e9 86 fc ff ff jmpq 5bdde8 0.00 : 5be162: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (HJ_FILL_INNER(node)) : { : /* no chance to not build the hash table */ : node->hj_FirstOuterTupleSlot = NULL; : } : else if (HJ_FILL_OUTER(node) || 0.00 : 5be168: 49 83 be e0 00 00 00 cmpq $0x0,0xe0(%r14) 0.00 : 5be16f: 00 0.00 : 5be170: 0f 84 aa 00 00 00 je 5be220 : (outerNode->plan->startup_cost < hashNode->ps.plan->total_cost && : !node->hj_OuterNotEmpty)) : { : node->hj_FirstOuterTupleSlot = ExecProcNode(outerNode); 0.00 : 5be176: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5be17a: e8 21 e3 fe ff callq 5ac4a0 : if (TupIsNull(node->hj_FirstOuterTupleSlot)) 0.00 : 5be17f: 48 85 c0 test %rax,%rax : } : else if (HJ_FILL_OUTER(node) || : (outerNode->plan->startup_cost < hashNode->ps.plan->total_cost && : !node->hj_OuterNotEmpty)) : { : node->hj_FirstOuterTupleSlot = ExecProcNode(outerNode); 0.00 : 5be182: 49 89 86 e8 00 00 00 mov %rax,0xe8(%r14) : if (TupIsNull(node->hj_FirstOuterTupleSlot)) 0.00 : 5be189: 0f 84 e8 00 00 00 je 5be277 0.00 : 5be18f: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5be193: 0f 85 de 00 00 00 jne 5be277 : { : node->hj_OuterNotEmpty = false; : return NULL; : } : else : node->hj_OuterNotEmpty = true; 0.00 : 5be199: 41 c6 86 f5 00 00 00 movb $0x1,0xf5(%r14) 0.00 : 5be1a0: 01 : if (HJ_FILL_INNER(node)) : { : /* no chance to not build the hash table */ : node->hj_FirstOuterTupleSlot = NULL; : } : else if (HJ_FILL_OUTER(node) || 0.00 : 5be1a1: e9 f3 f9 ff ff jmpq 5bdb99 : /* : * Need to postpone this outer tuple to a later batch. : * Save it in the corresponding outer-batch file. : */ : Assert(batchno > hashtable->curbatch); : ExecHashJoinSaveTuple(ExecFetchSlotMinimalTuple(outerTupleSlot), 0.00 : 5be1a6: 48 98 cltq 0.00 : 5be1a8: 8b 5d d0 mov -0x30(%rbp),%ebx 0.00 : 5be1ab: 4c 89 e7 mov %r12,%rdi 0.00 : 5be1ae: 4c 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%r13 0.00 : 5be1b5: 00 0.00 : 5be1b6: 4c 03 6a 70 add 0x70(%rdx),%r13 0.00 : 5be1ba: e8 91 5d ff ff callq 5b3f50 0.00 : 5be1bf: 89 de mov %ebx,%esi 0.00 : 5be1c1: 48 89 c7 mov %rax,%rdi 0.00 : 5be1c4: 4c 89 ea mov %r13,%rdx 0.00 : 5be1c7: e8 94 f3 ff ff callq 5bd560 : hashvalue, : &hashtable->outerBatchFile[batchno]); : /* Loop around, staying in HJ_NEED_NEW_OUTER state */ : continue; 0.00 : 5be1cc: e9 57 f9 ff ff jmpq 5bdb28 : * Rewind outer batch file (if present), so that we can start reading it. : */ : if (hashtable->outerBatchFile[curbatch] != NULL) : { : if (BufFileSeek(hashtable->outerBatchFile[curbatch], 0, 0L, SEEK_SET)) : ereport(ERROR, 0.00 : 5be1d1: 45 31 c0 xor %r8d,%r8d 0.00 : 5be1d4: b9 f0 ba 88 00 mov $0x88baf0,%ecx 0.00 : 5be1d9: ba 55 03 00 00 mov $0x355,%edx 0.00 : 5be1de: be 58 b9 88 00 mov $0x88b958,%esi 0.00 : 5be1e3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5be1e8: e8 d3 c8 1b 00 callq 77aac0 0.00 : 5be1ed: 84 c0 test %al,%al 0.00 : 5be1ef: 0f 84 69 f9 ff ff je 5bdb5e 0.00 : 5be1f5: bf d0 b9 88 00 mov $0x88b9d0,%edi 0.00 : 5be1fa: 31 c0 xor %eax,%eax 0.00 : 5be1fc: e8 9f e6 1b 00 callq 77c8a0 0.00 : 5be201: 89 c3 mov %eax,%ebx 0.00 : 5be203: e8 e8 e8 1b 00 callq 77caf0 0.00 : 5be208: 89 de mov %ebx,%esi 0.00 : 5be20a: 89 c7 mov %eax,%edi 0.00 : 5be20c: 31 c0 xor %eax,%eax 0.00 : 5be20e: e8 cd c3 1b 00 callq 77a5e0 0.00 : 5be213: e9 46 f9 ff ff jmpq 5bdb5e 0.00 : 5be218: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5be21f: 00 : if (HJ_FILL_INNER(node)) : { : /* no chance to not build the hash table */ : node->hj_FirstOuterTupleSlot = NULL; : } : else if (HJ_FILL_OUTER(node) || 0.00 : 5be220: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 5be224: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 5be228: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 5be22c: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 5be230: f2 0f 10 42 10 movsd 0x10(%rdx),%xmm0 0.00 : 5be235: 66 0f 2e 40 08 ucomisd 0x8(%rax),%xmm0 0.00 : 5be23a: 0f 86 4e f9 ff ff jbe 5bdb8e 0.00 : 5be240: 41 80 be f5 00 00 00 cmpb $0x0,0xf5(%r14) 0.00 : 5be247: 00 0.00 : 5be248: 0f 85 40 f9 ff ff jne 5bdb8e 0.00 : 5be24e: e9 23 ff ff ff jmpq 5be176 : /* : * If the inner relation is completely empty, and we're not : * doing a left outer join, we can quit without scanning the : * outer relation. : */ : if (hashtable->totalTuples == 0 && !HJ_FILL_OUTER(node)) 0.00 : 5be253: 0f 8a 8f f9 ff ff jp 5bdbe8 0.00 : 5be259: 49 83 be e0 00 00 00 cmpq $0x0,0xe0(%r14) 0.00 : 5be260: 00 0.00 : 5be261: 0f 85 81 f9 ff ff jne 5bdbe8 0.00 : 5be267: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5be26e: 00 00 : return NULL; /* end of join */ : node->hj_JoinState = HJ_NEED_NEW_OUTER; : break; : : default: : elog(ERROR, "unrecognized hashjoin state: %d", 0.00 : 5be270: 31 c0 xor %eax,%eax 0.00 : 5be272: e9 21 fd ff ff jmpq 5bdf98 : !node->hj_OuterNotEmpty)) : { : node->hj_FirstOuterTupleSlot = ExecProcNode(outerNode); : if (TupIsNull(node->hj_FirstOuterTupleSlot)) : { : node->hj_OuterNotEmpty = false; 0.00 : 5be277: 41 c6 86 f5 00 00 00 movb $0x0,0xf5(%r14) 0.00 : 5be27e: 00 0.00 : 5be27f: 31 c0 xor %eax,%eax : default: : elog(ERROR, "unrecognized hashjoin state: %d", : (int) node->hj_JoinState); : } : } : } 0.00 : 5be281: e9 12 fd ff ff jmpq 5bdf98 : innerFile = hashtable->innerBatchFile[curbatch]; : : if (innerFile != NULL) : { : if (BufFileSeek(innerFile, 0, 0L, SEEK_SET)) : ereport(ERROR, 0.00 : 5be286: 45 31 c0 xor %r8d,%r8d 0.00 : 5be289: b9 f0 ba 88 00 mov $0x88baf0,%ecx 0.00 : 5be28e: ba 37 03 00 00 mov $0x337,%edx 0.00 : 5be293: e9 46 ff ff ff jmpq 5be1de Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:223 6.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:43 4.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:195 3.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:175 3.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 3.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:43 3.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 3.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:41 2.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 2.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:121 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 2.47 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 2.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 2.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 2.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 2.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 2.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 2.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:223 2.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:195 2.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:129 2.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:223 1.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:195 1.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 1.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 1.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:175 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 1.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:200 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:175 1.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 1.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:122 1.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:155 0.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:121 0.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:131 0.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 0.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:210 0.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 0.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:129 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:207 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 0.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:165 0.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:195 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 0.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:155 0.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:208 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:123 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b3750 : : */ : TupleTableSlot * : ExecScan(ScanState *node, : ExecScanAccessMtd accessMtd, /* function returning a tuple */ : ExecScanRecheckMtd recheckMtd) : { 0.33 : 5b3750: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:111 2.33 : 5b3751: 48 89 e5 mov %rsp,%rbp 2.47 : 5b3754: 41 57 push %r15 2.24 : 5b3756: 41 56 push %r14 1.23 : 5b3758: 41 55 push %r13 1.07 : 5b375a: 41 54 push %r12 2.51 : 5b375c: 49 89 fc mov %rdi,%r12 0.02 : 5b375f: 53 push %rbx 0.85 : 5b3760: 48 83 ec 28 sub $0x28,%rsp 2.23 : 5b3764: 48 89 75 b8 mov %rsi,-0x48(%rbp) 0.14 : 5b3768: 48 89 55 b0 mov %rdx,-0x50(%rbp) : TupleTableSlot *resultSlot; : : /* : * Fetch data from node : */ : qual = node->ps.qual; /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:121 0.98 : 5b376c: 48 8b 47 28 mov 0x28(%rdi),%rax : : /* : * If we have neither a qual to check nor a projection to do, just skip : * all the overhead and return the raw scan tuple. : */ : if (!qual && !projInfo) 0.18 : 5b3770: 48 85 c0 test %rax,%rax : TupleTableSlot *resultSlot; : : /* : * Fetch data from node : */ : qual = node->ps.qual; 2.56 : 5b3773: 48 89 45 c0 mov %rax,-0x40(%rbp) : projInfo = node->ps.ps_ProjInfo; /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:122 1.03 : 5b3777: 4c 8b 77 68 mov 0x68(%rdi),%r14 : econtext = node->ps.ps_ExprContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:123 0.51 : 5b377b: 4c 8b 6f 60 mov 0x60(%rdi),%r13 : : /* : * If we have neither a qual to check nor a projection to do, just skip : * all the overhead and return the raw scan tuple. : */ : if (!qual && !projInfo) 0.20 : 5b377f: 41 0f 94 c7 sete %r15b /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:129 2.09 : 5b3783: 75 09 jne 5b378e 0.77 : 5b3785: 4d 85 f6 test %r14,%r14 0.00 : 5b3788: 0f 84 d6 01 00 00 je 5b3964 : /* : * Check to see if we're still projecting out tuples from a previous scan : * tuple (because there is a function-returning-set in the projection : * expressions). If so, try to project another one. : */ : if (node->ps.ps_TupFromTlist) 0.23 : 5b378e: 41 80 7c 24 70 00 cmpb $0x0,0x70(%r12) 0.36 : 5b3794: 0f 85 a6 01 00 00 jne 5b3940 0.39 : 5b379a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * Reset per-tuple memory context to free any expression evaluation : * storage allocated in the previous tuple cycle. Note this can't happen : * until we're done projecting out tuples from a scan tuple. : */ : ResetExprContext(econtext); /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:155 1.03 : 5b37a0: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.61 : 5b37a4: e8 07 52 1e 00 callq 7989b0 : */ : for (;;) : { : TupleTableSlot *slot; : : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:165 0.64 : 5b37a9: 0f b6 05 e0 68 60 00 movzbl 0x6068e0(%rip),%eax # bba090 0.05 : 5b37b0: 84 c0 test %al,%al 0.00 : 5b37b2: 0f 85 50 01 00 00 jne 5b3908 : static inline TupleTableSlot * : ExecScanFetch(ScanState *node, : ExecScanAccessMtd accessMtd, : ExecScanRecheckMtd recheckMtd) : { : EState *estate = node->ps.state; /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:41 3.06 : 5b37b8: 49 8b 54 24 10 mov 0x10(%r12),%rdx : : if (estate->es_epqTuple != NULL) 0.26 : 5b37bd: 48 83 ba d0 00 00 00 cmpq $0x0,0xd0(%rdx) 0.00 : 5b37c4: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:43 6.58 : 5b37c5: 0f 84 0d 01 00 00 je 5b38d8 : * conditions. : */ : Index scanrelid = ((Scan *) node->ps.plan)->scanrelid; : : Assert(scanrelid > 0); : if (estate->es_epqTupleSet[scanrelid - 1]) 0.00 : 5b37cb: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5b37d0: 8b 40 60 mov 0x60(%rax),%eax 0.00 : 5b37d3: 8d 48 ff lea -0x1(%rax),%ecx 0.00 : 5b37d6: 48 8b 82 d8 00 00 00 mov 0xd8(%rdx),%rax 0.00 : 5b37dd: 80 3c 08 00 cmpb $0x0,(%rax,%rcx,1) 0.00 : 5b37e1: 0f 84 f1 00 00 00 je 5b38d8 : { : TupleTableSlot *slot = node->ss_ScanTupleSlot; : : /* Return empty slot if we already returned a tuple */ : if (estate->es_epqScanDone[scanrelid - 1]) 0.00 : 5b37e7: 48 89 c8 mov %rcx,%rax 0.00 : 5b37ea: 48 03 82 e0 00 00 00 add 0xe0(%rdx),%rax : Index scanrelid = ((Scan *) node->ps.plan)->scanrelid; : : Assert(scanrelid > 0); : if (estate->es_epqTupleSet[scanrelid - 1]) : { : TupleTableSlot *slot = node->ss_ScanTupleSlot; 0.00 : 5b37f1: 49 8b 9c 24 88 00 00 mov 0x88(%r12),%rbx 0.00 : 5b37f8: 00 : : /* Return empty slot if we already returned a tuple */ : if (estate->es_epqScanDone[scanrelid - 1]) 0.00 : 5b37f9: 80 38 00 cmpb $0x0,(%rax) 0.00 : 5b37fc: 0f 85 16 01 00 00 jne 5b3918 : return ExecClearTuple(slot); : /* Else mark to remember that we shouldn't return more */ : estate->es_epqScanDone[scanrelid - 1] = true; 0.00 : 5b3802: c6 00 01 movb $0x1,(%rax) : : /* Return empty slot if we haven't got a test tuple */ : if (estate->es_epqTuple[scanrelid - 1] == NULL) 0.00 : 5b3805: 48 8b 82 d0 00 00 00 mov 0xd0(%rdx),%rax 0.00 : 5b380c: 48 8b 3c c8 mov (%rax,%rcx,8),%rdi 0.00 : 5b3810: 48 85 ff test %rdi,%rdi 0.00 : 5b3813: 0f 84 ff 00 00 00 je 5b3918 : return ExecClearTuple(slot); : : /* Store test tuple in the plan node's scan slot */ : ExecStoreTuple(estate->es_epqTuple[scanrelid - 1], 0.00 : 5b3819: 31 c9 xor %ecx,%ecx 0.00 : 5b381b: 31 d2 xor %edx,%edx 0.00 : 5b381d: 48 89 de mov %rbx,%rsi 0.00 : 5b3820: e8 5b 0c 00 00 callq 5b4480 : slot, InvalidBuffer, false); : : /* Check if it meets the access-method conditions */ : if (!(*recheckMtd) (node, slot)) 0.00 : 5b3825: 48 89 de mov %rbx,%rsi 0.00 : 5b3828: 4c 89 e7 mov %r12,%rdi 0.00 : 5b382b: ff 55 b0 callq *-0x50(%rbp) 0.00 : 5b382e: 84 c0 test %al,%al 0.00 : 5b3830: 0f 84 fa 00 00 00 je 5b3930 : * if the slot returned by the accessMtd contains NULL, then it means : * there is nothing more to scan so we just return an empty slot, : * being careful to use the projection result slot so it has correct : * tupleDesc. : */ : if (TupIsNull(slot)) 0.00 : 5b3836: 48 85 db test %rbx,%rbx 0.00 : 5b3839: 0f 84 ab 00 00 00 je 5b38ea /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:175 3.75 : 5b383f: 80 7b 04 00 cmpb $0x0,0x4(%rbx) 1.14 : 5b3843: 0f 85 a1 00 00 00 jne 5b38ea : * : * check for non-nil qual here to avoid a function call to ExecQual() : * when the qual is nil ... saves only a few cycles, but they add up : * ... : */ : if (!qual || ExecQual(qual, econtext, false)) 0.44 : 5b3849: 45 84 ff test %r15b,%r15b : } : : /* : * place the current tuple into the expr context : */ : econtext->ecxt_scantuple = slot; 0.02 : 5b384c: 49 89 5d 08 mov %rbx,0x8(%r13) : * : * check for non-nil qual here to avoid a function call to ExecQual() : * when the qual is nil ... saves only a few cycles, but they add up : * ... : */ : if (!qual || ExecQual(qual, econtext, false)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:195 4.74 : 5b3850: 75 3e jne 5b3890 0.00 : 5b3852: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.64 : 5b3856: 31 d2 xor %edx,%edx 0.00 : 5b3858: 4c 89 ee mov %r13,%rsi 1.86 : 5b385b: e8 b0 96 ff ff callq 5acf10 2.12 : 5b3860: 84 c0 test %al,%al 0.00 : 5b3862: 75 2c jne 5b3890 : */ : return slot; : } : } : else : InstrCountFiltered1(node, 1); 0.00 : 5b3864: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.45 : 5b3869: 48 85 c0 test %rax,%rax 0.00 : 5b386c: 0f 84 2e ff ff ff je 5b37a0 0.50 : 5b3872: f2 0f 10 05 de b8 1f movsd 0x1fb8de(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5b3879: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:223 2.18 : 5b387a: f2 0f 58 80 c8 00 00 addsd 0xc8(%rax),%xmm0 0.00 : 5b3881: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:223 8.84 : 5b3882: f2 0f 11 80 c8 00 00 movsd %xmm0,0xc8(%rax) 0.00 : 5b3889: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:223 2.03 : 5b388a: e9 11 ff ff ff jmpq 5b37a0 0.00 : 5b388f: 90 nop : if (!qual || ExecQual(qual, econtext, false)) : { : /* : * Found a satisfactory scan tuple. : */ : if (projInfo) /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:200 1.17 : 5b3890: 4d 85 f6 test %r14,%r14 0.00 : 5b3893: 74 2b je 5b38c0 : /* : * Form a projection tuple, store it in the result tuple slot : * and return it --- unless we find we can project no tuples : * from this scan tuple, in which case continue scan. : */ : resultSlot = ExecProject(projInfo, &isDone); 0.02 : 5b3895: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5b3899: 4c 89 f7 mov %r14,%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:207 0.73 : 5b389c: e8 5f 97 ff ff callq 5ad000 0.02 : 5b38a1: 48 89 c3 mov %rax,%rbx : if (isDone != ExprEndResult) 0.26 : 5b38a4: 8b 45 d4 mov -0x2c(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:208 0.56 : 5b38a7: 83 f8 02 cmp $0x2,%eax 0.00 : 5b38aa: 0f 84 f0 fe ff ff je 5b37a0 : { : node->ps.ps_TupFromTlist = (isDone == ExprMultipleResult); 0.06 : 5b38b0: 83 e8 01 sub $0x1,%eax 0.02 : 5b38b3: 41 0f 94 44 24 70 sete 0x70(%r12) /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:210 0.89 : 5b38b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Tuple fails qual, so free per-tuple memory and try again. : */ : ResetExprContext(econtext); : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:230 2.83 : 5b38c0: 48 83 c4 28 add $0x28,%rsp 0.79 : 5b38c4: 48 89 d8 mov %rbx,%rax 0.65 : 5b38c7: 5b pop %rbx 3.38 : 5b38c8: 41 5c pop %r12 0.36 : 5b38ca: 41 5d pop %r13 0.68 : 5b38cc: 41 5e pop %r14 1.50 : 5b38ce: 41 5f pop %r15 2.36 : 5b38d0: c9 leaveq 3.12 : 5b38d1: c3 retq 0.00 : 5b38d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : /* : * Run the node-type-specific access method function to get the next tuple : */ : return (*accessMtd) (node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 1.83 : 5b38d8: 4c 89 e7 mov %r12,%rdi 1.74 : 5b38db: ff 55 b8 callq *-0x48(%rbp) 2.24 : 5b38de: 48 89 c3 mov %rax,%rbx : * if the slot returned by the accessMtd contains NULL, then it means : * there is nothing more to scan so we just return an empty slot, : * being careful to use the projection result slot so it has correct : * tupleDesc. : */ : if (TupIsNull(slot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:175 1.65 : 5b38e1: 48 85 db test %rbx,%rbx 0.00 : 5b38e4: 0f 85 55 ff ff ff jne 5b383f : { : if (projInfo) 0.03 : 5b38ea: 4d 85 f6 test %r14,%r14 0.00 : 5b38ed: 0f 1f 00 nopl (%rax) 0.00 : 5b38f0: 74 ce je 5b38c0 : return ExecClearTuple(projInfo->pi_slot); 0.00 : 5b38f2: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 5b38f6: e8 15 08 00 00 callq 5b4110 0.00 : 5b38fb: 48 89 c3 mov %rax,%rbx 0.00 : 5b38fe: 66 90 xchg %ax,%ax : /* : * Tuple fails qual, so free per-tuple memory and try again. : */ : ResetExprContext(econtext); : } : } 0.00 : 5b3900: eb be jmp 5b38c0 0.00 : 5b3902: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : for (;;) : { : TupleTableSlot *slot; : : CHECK_FOR_INTERRUPTS(); 0.00 : 5b3908: e8 93 89 0e 00 callq 69c2a0 0.00 : 5b390d: 0f 1f 00 nopl (%rax) 0.00 : 5b3910: e9 a3 fe ff ff jmpq 5b37b8 0.00 : 5b3915: 0f 1f 00 nopl (%rax) : /* Else mark to remember that we shouldn't return more */ : estate->es_epqScanDone[scanrelid - 1] = true; : : /* Return empty slot if we haven't got a test tuple */ : if (estate->es_epqTuple[scanrelid - 1] == NULL) : return ExecClearTuple(slot); 0.00 : 5b3918: 48 89 df mov %rbx,%rdi 0.00 : 5b391b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5b3920: e8 eb 07 00 00 callq 5b4110 0.00 : 5b3925: 48 89 c3 mov %rax,%rbx 0.00 : 5b3928: e9 09 ff ff ff jmpq 5b3836 0.00 : 5b392d: 0f 1f 00 nopl (%rax) : ExecStoreTuple(estate->es_epqTuple[scanrelid - 1], : slot, InvalidBuffer, false); : : /* Check if it meets the access-method conditions */ : if (!(*recheckMtd) (node, slot)) : ExecClearTuple(slot); /* would not be returned by scan */ 0.00 : 5b3930: 48 89 df mov %rbx,%rdi 0.00 : 5b3933: e8 d8 07 00 00 callq 5b4110 0.00 : 5b3938: e9 f9 fe ff ff jmpq 5b3836 0.00 : 5b393d: 0f 1f 00 nopl (%rax) : * expressions). If so, try to project another one. : */ : if (node->ps.ps_TupFromTlist) : { : Assert(projInfo); /* can't get here if not projecting */ : resultSlot = ExecProject(projInfo, &isDone); 0.00 : 5b3940: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5b3944: 4c 89 f7 mov %r14,%rdi 0.00 : 5b3947: e8 b4 96 ff ff callq 5ad000 : if (isDone == ExprMultipleResult) 0.00 : 5b394c: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) : * expressions). If so, try to project another one. : */ : if (node->ps.ps_TupFromTlist) : { : Assert(projInfo); /* can't get here if not projecting */ : resultSlot = ExecProject(projInfo, &isDone); 0.00 : 5b3950: 48 89 c3 mov %rax,%rbx : if (isDone == ExprMultipleResult) 0.00 : 5b3953: 0f 84 67 ff ff ff je 5b38c0 : return resultSlot; : /* Done with that source tuple... */ : node->ps.ps_TupFromTlist = false; 0.00 : 5b3959: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 5b395f: e9 3c fe ff ff jmpq 5b37a0 : * If we have neither a qual to check nor a projection to do, just skip : * all the overhead and return the raw scan tuple. : */ : if (!qual && !projInfo) : { : ResetExprContext(econtext); 0.23 : 5b3964: 49 8b 7d 28 mov 0x28(%r13),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:131 0.94 : 5b3968: e8 43 50 1e 00 callq 7989b0 : static inline TupleTableSlot * : ExecScanFetch(ScanState *node, : ExecScanAccessMtd accessMtd, : ExecScanRecheckMtd recheckMtd) : { : EState *estate = node->ps.state; 0.14 : 5b396d: 49 8b 54 24 10 mov 0x10(%r12),%rdx : : if (estate->es_epqTuple != NULL) 0.00 : 5b3972: 48 83 ba d0 00 00 00 cmpq $0x0,0xd0(%rdx) 0.00 : 5b3979: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:43 3.22 : 5b397a: 74 74 je 5b39f0 : * conditions. : */ : Index scanrelid = ((Scan *) node->ps.plan)->scanrelid; : : Assert(scanrelid > 0); : if (estate->es_epqTupleSet[scanrelid - 1]) 0.00 : 5b397c: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5b3981: 8b 40 60 mov 0x60(%rax),%eax 0.00 : 5b3984: 8d 48 ff lea -0x1(%rax),%ecx 0.00 : 5b3987: 48 8b 82 d8 00 00 00 mov 0xd8(%rdx),%rax 0.00 : 5b398e: 80 3c 08 00 cmpb $0x0,(%rax,%rcx,1) 0.00 : 5b3992: 74 5c je 5b39f0 : { : TupleTableSlot *slot = node->ss_ScanTupleSlot; : : /* Return empty slot if we already returned a tuple */ : if (estate->es_epqScanDone[scanrelid - 1]) 0.00 : 5b3994: 48 89 c8 mov %rcx,%rax 0.00 : 5b3997: 48 03 82 e0 00 00 00 add 0xe0(%rdx),%rax : Index scanrelid = ((Scan *) node->ps.plan)->scanrelid; : : Assert(scanrelid > 0); : if (estate->es_epqTupleSet[scanrelid - 1]) : { : TupleTableSlot *slot = node->ss_ScanTupleSlot; 0.00 : 5b399e: 49 8b 9c 24 88 00 00 mov 0x88(%r12),%rbx 0.00 : 5b39a5: 00 : : /* Return empty slot if we already returned a tuple */ : if (estate->es_epqScanDone[scanrelid - 1]) 0.00 : 5b39a6: 80 38 00 cmpb $0x0,(%rax) 0.00 : 5b39a9: 75 5a jne 5b3a05 : return ExecClearTuple(slot); : /* Else mark to remember that we shouldn't return more */ : estate->es_epqScanDone[scanrelid - 1] = true; 0.00 : 5b39ab: c6 00 01 movb $0x1,(%rax) : : /* Return empty slot if we haven't got a test tuple */ : if (estate->es_epqTuple[scanrelid - 1] == NULL) 0.00 : 5b39ae: 48 8b 82 d0 00 00 00 mov 0xd0(%rdx),%rax 0.00 : 5b39b5: 48 8b 3c c8 mov (%rax,%rcx,8),%rdi 0.00 : 5b39b9: 48 85 ff test %rdi,%rdi 0.00 : 5b39bc: 74 47 je 5b3a05 : return ExecClearTuple(slot); : : /* Store test tuple in the plan node's scan slot */ : ExecStoreTuple(estate->es_epqTuple[scanrelid - 1], 0.00 : 5b39be: 31 c9 xor %ecx,%ecx 0.00 : 5b39c0: 31 d2 xor %edx,%edx 0.00 : 5b39c2: 48 89 de mov %rbx,%rsi 0.00 : 5b39c5: e8 b6 0a 00 00 callq 5b4480 : slot, InvalidBuffer, false); : : /* Check if it meets the access-method conditions */ : if (!(*recheckMtd) (node, slot)) 0.00 : 5b39ca: 48 89 de mov %rbx,%rsi 0.00 : 5b39cd: 4c 89 e7 mov %r12,%rdi 0.00 : 5b39d0: ff 55 b0 callq *-0x50(%rbp) 0.00 : 5b39d3: 84 c0 test %al,%al 0.00 : 5b39d5: 0f 85 e5 fe ff ff jne 5b38c0 : ExecClearTuple(slot); /* would not be returned by scan */ 0.00 : 5b39db: 48 89 df mov %rbx,%rdi 0.00 : 5b39de: e8 2d 07 00 00 callq 5b4110 0.00 : 5b39e3: e9 d8 fe ff ff jmpq 5b38c0 0.00 : 5b39e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5b39ef: 00 : } : : /* : * Run the node-type-specific access method function to get the next tuple : */ : return (*accessMtd) (node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:82 0.62 : 5b39f0: 4c 89 e7 mov %r12,%rdi 0.02 : 5b39f3: ff 55 b8 callq *-0x48(%rbp) 1.20 : 5b39f6: 48 89 c3 mov %rax,%rbx 0.94 : 5b39f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.20 : 5b3a00: e9 bb fe ff ff jmpq 5b38c0 : /* Else mark to remember that we shouldn't return more */ : estate->es_epqScanDone[scanrelid - 1] = true; : : /* Return empty slot if we haven't got a test tuple */ : if (estate->es_epqTuple[scanrelid - 1] == NULL) : return ExecClearTuple(slot); 0.00 : 5b3a05: 48 89 df mov %rbx,%rdi 0.00 : 5b3a08: e8 03 07 00 00 callq 5b4110 0.00 : 5b3a0d: 48 89 c3 mov %rax,%rbx 0.00 : 5b3a10: e9 ab fe ff ff jmpq 5b38c0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:147 14.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:158 12.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:158 10.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 7.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:151 6.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:151 6.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 6.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 5.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:147 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 1.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007989b0 : : * The type-specific reset routine handles the context itself, but we : * have to do the recursion for the children. : */ : void : MemoryContextReset(MemoryContext context) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 10.35 : 7989b0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 5.00 : 7989b1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 6.16 : 7989b4: 53 push %rbx 6.81 : 7989b5: 48 89 fb mov %rdi,%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 1.91 : 7989b8: 48 83 ec 08 sub $0x8,%rsp : AssertArg(MemoryContextIsValid(context)); : : /* save a function call in common case where there are no children */ : if (context->firstchild != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:147 5.81 : 7989bc: 48 83 7f 18 00 cmpq $0x0,0x18(%rdi) 21.89 : 7989c1: 74 05 je 7989c8 : MemoryContextResetChildren(context); 0.00 : 7989c3: e8 b8 ff ff ff callq 798980 : : /* Nothing to do if no pallocs since startup or last reset */ : if (!context->isReset) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:151 6.94 : 7989c8: 80 7b 30 00 cmpb $0x0,0x30(%rbx) 7.00 : 7989cc: 75 0e jne 7989dc : { : (*context->methods->reset) (context); 0.14 : 7989ce: 48 8b 43 08 mov 0x8(%rbx),%rax 0.24 : 7989d2: 48 89 df mov %rbx,%rdi 0.13 : 7989d5: ff 50 20 callq *0x20(%rax) : context->isReset = true; 0.10 : 7989d8: c6 43 30 01 movb $0x1,0x30(%rbx) : VALGRIND_DESTROY_MEMPOOL(context); : VALGRIND_CREATE_MEMPOOL(context, 0, false); : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:158 12.97 : 7989dc: 48 83 c4 08 add $0x8,%rsp 0.16 : 7989e0: 5b pop %rbx 14.39 : 7989e1: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 77.50 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:109 13.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:109 2.80 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:75 0.94 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:85 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:95 0.52 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:75 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049f650 : : * OldestXmin is the cutoff XID used to distinguish whether tuples are DEAD : * or RECENTLY_DEAD (see HeapTupleSatisfiesVacuum). : */ : void : heap_page_prune_opt(Relation relation, Buffer buffer) : { 0.19 : 49f650: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:75 2.80 : 49f651: 48 89 e5 mov %rsp,%rbp 0.09 : 49f654: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.52 : 49f658: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.09 : 49f65c: 41 89 f4 mov %esi,%r12d 0.04 : 49f65f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.14 : 49f663: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.01 : 49f667: 49 89 fe mov %rdi,%r14 0.04 : 49f66a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.06 : 49f66e: 48 83 ec 40 sub $0x40,%rsp : Page page = BufferGetPage(buffer); 0.22 : 49f672: 85 f6 test %esi,%esi 0.00 : 49f674: 0f 88 fe 00 00 00 js 49f778 0.06 : 49f67a: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.16 : 49f67f: 48 63 d8 movslq %eax,%rbx 0.12 : 49f682: 48 c1 e3 0d shl $0xd,%rbx 0.07 : 49f686: 48 03 1d 6b 04 72 00 add 0x72046b(%rip),%rbx # bbfaf8 : /* : * We can't write WAL in recovery mode, so there's no point trying to : * clean the page. The master will likely issue a cleaning WAL record soon : * anyway, so this is no particular loss. : */ : if (RecoveryInProgress()) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:85 0.94 : 49f68d: e8 2e de 02 00 callq 4cd4c0 0.23 : 49f692: 84 c0 test %al,%al 0.00 : 49f694: 74 1a je 49f6b0 : } : : /* And release buffer lock */ : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : } : } 0.38 : 49f696: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.01 : 49f69a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 49f69e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.03 : 49f6a2: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.25 : 49f6a6: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.01 : 49f6aa: c9 leaveq 0.35 : 49f6ab: c3 retq 0.00 : 49f6ac: 0f 1f 40 00 nopl 0x0(%rax) : * catalog relation or a user defined, additional, catalog relation, we : * need to use the horizon that includes slots, otherwise the data-only : * horizon can be used. Note that the toast relation of user defined : * relations are *not* considered catalog relations. : */ : if (IsCatalogRelation(relation) || 0.43 : 49f6b0: 4c 89 f7 mov %r14,%rdi 0.00 : 49f6b3: e8 28 37 04 00 callq 4e2de0 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:95 0.58 : 49f6b8: 84 c0 test %al,%al 0.00 : 49f6ba: 0f 84 d0 00 00 00 je 49f790 : RelationIsAccessibleInLogicalDecoding(relation)) : OldestXmin = RecentGlobalXmin; 0.00 : 49f6c0: 44 8b 3d 39 b2 71 00 mov 0x71b239(%rip),%r15d # bba900 : * Let's see if we really need pruning. : * : * Forget it if page is not hinted to contain something prunable that's : * older than OldestXmin. : */ : if (!PageIsPrunable(page, OldestXmin)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:109 13.25 : 49f6c7: 8b 7b 14 mov 0x14(%rbx),%edi 77.50 : 49f6ca: 85 ff test %edi,%edi 0.00 : 49f6cc: 74 c8 je 49f696 0.00 : 49f6ce: 44 89 fe mov %r15d,%esi 0.00 : 49f6d1: e8 0a 09 02 00 callq 4bffe0 0.00 : 49f6d6: 84 c0 test %al,%al 0.00 : 49f6d8: 74 bc je 49f696 : * unlikely to be *seriously* wrong, though, since reading either pd_lower : * or pd_upper is probably atomic. Avoiding taking a lock seems more : * important than sometimes getting a wrong answer in what is after all : * just a heuristic estimate. : */ : minfree = RelationGetTargetPageFreeSpace(relation, 0.00 : 49f6da: 49 8b 96 98 00 00 00 mov 0x98(%r14),%rdx 0.00 : 49f6e1: 41 bd 33 03 00 00 mov $0x333,%r13d 0.00 : 49f6e7: 48 85 d2 test %rdx,%rdx 0.00 : 49f6ea: 74 2f je 49f71b 0.00 : 49f6ec: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 49f6f1: 2b 4a 04 sub 0x4(%rdx),%ecx 0.00 : 49f6f4: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 49f6f9: c1 e1 0d shl $0xd,%ecx 0.00 : 49f6fc: 89 c8 mov %ecx,%eax 0.00 : 49f6fe: c1 f9 1f sar $0x1f,%ecx 0.00 : 49f701: f7 ea imul %edx 0.00 : 49f703: b8 33 03 00 00 mov $0x333,%eax 0.00 : 49f708: c1 fa 05 sar $0x5,%edx 0.00 : 49f70b: 29 ca sub %ecx,%edx 0.00 : 49f70d: 4c 63 ea movslq %edx,%r13 0.00 : 49f710: 49 81 fd 33 03 00 00 cmp $0x333,%r13 0.00 : 49f717: 4c 0f 42 e8 cmovb %rax,%r13 : HEAP_DEFAULT_FILLFACTOR); : minfree = Max(minfree, BLCKSZ / 10); : : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) 0.00 : 49f71b: f6 43 0a 02 testb $0x2,0xa(%rbx) 0.00 : 49f71f: 75 11 jne 49f732 0.00 : 49f721: 48 89 df mov %rbx,%rdi 0.00 : 49f724: e8 37 56 1f 00 callq 694d60 0.00 : 49f729: 4c 39 e8 cmp %r13,%rax 0.00 : 49f72c: 0f 83 64 ff ff ff jae 49f696 : { : /* OK, try to get exclusive buffer lock */ : if (!ConditionalLockBufferForCleanup(buffer)) 0.00 : 49f732: 44 89 e7 mov %r12d,%edi 0.00 : 49f735: e8 26 78 1d 00 callq 676f60 0.00 : 49f73a: 84 c0 test %al,%al 0.00 : 49f73c: 0f 84 54 ff ff ff je 49f696 : * Now that we have buffer lock, get accurate information about the : * page's free space, and recheck the heuristic about whether to : * prune. (We needn't recheck PageIsPrunable, since no one else could : * have pruned while we hold pin.) : */ : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) 0.00 : 49f742: f6 43 0a 02 testb $0x2,0xa(%rbx) 0.00 : 49f746: 74 68 je 49f7b0 : { : TransactionId ignore = InvalidTransactionId; /* return value not : * needed */ : : /* OK to prune */ : (void) heap_page_prune(relation, buffer, OldestXmin, true, &ignore); 0.00 : 49f748: 4c 8d 45 d4 lea -0x2c(%rbp),%r8 0.00 : 49f74c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 49f751: 44 89 fa mov %r15d,%edx 0.00 : 49f754: 44 89 e6 mov %r12d,%esi 0.00 : 49f757: 4c 89 f7 mov %r14,%rdi : * prune. (We needn't recheck PageIsPrunable, since no one else could : * have pruned while we hold pin.) : */ : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) : { : TransactionId ignore = InvalidTransactionId; /* return value not 0.00 : 49f75a: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%rbp) : * needed */ : : /* OK to prune */ : (void) heap_page_prune(relation, buffer, OldestXmin, true, &ignore); 0.00 : 49f761: e8 5a f4 ff ff callq 49ebc0 : } : : /* And release buffer lock */ : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49f766: 31 f6 xor %esi,%esi 0.00 : 49f768: 44 89 e7 mov %r12d,%edi 0.00 : 49f76b: e8 a0 4f 1d 00 callq 674710 0.00 : 49f770: e9 21 ff ff ff jmpq 49f696 0.00 : 49f775: 0f 1f 00 nopl (%rax) : * or RECENTLY_DEAD (see HeapTupleSatisfiesVacuum). : */ : void : heap_page_prune_opt(Relation relation, Buffer buffer) : { : Page page = BufferGetPage(buffer); 0.00 : 49f778: 89 f0 mov %esi,%eax 0.00 : 49f77a: 48 8b 15 97 d9 6d 00 mov 0x6dd997(%rip),%rdx # b7d118 0.00 : 49f781: f7 d0 not %eax 0.00 : 49f783: 48 98 cltq 0.00 : 49f785: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 49f789: e9 ff fe ff ff jmpq 49f68d 0.00 : 49f78e: 66 90 xchg %ax,%ax : * catalog relation or a user defined, additional, catalog relation, we : * need to use the horizon that includes slots, otherwise the data-only : * horizon can be used. Note that the toast relation of user defined : * relations are *not* considered catalog relations. : */ : if (IsCatalogRelation(relation) || 0.38 : 49f790: 83 3d c5 99 6d 00 02 cmpl $0x2,0x6d99c5(%rip) # b7915c 0.46 : 49f797: 7e 0a jle 49f7a3 0.00 : 49f799: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 49f79d: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49f7a1: 74 25 je 49f7c8 : RelationIsAccessibleInLogicalDecoding(relation)) : OldestXmin = RecentGlobalXmin; : else : OldestXmin = RecentGlobalDataXmin; 0.36 : 49f7a3: 44 8b 3d 5a b1 71 00 mov 0x71b15a(%rip),%r15d # bba904 0.23 : 49f7aa: e9 18 ff ff ff jmpq 49f6c7 0.00 : 49f7af: 90 nop : * Now that we have buffer lock, get accurate information about the : * page's free space, and recheck the heuristic about whether to : * prune. (We needn't recheck PageIsPrunable, since no one else could : * have pruned while we hold pin.) : */ : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) 0.00 : 49f7b0: 48 89 df mov %rbx,%rdi 0.00 : 49f7b3: e8 a8 55 1f 00 callq 694d60 0.00 : 49f7b8: 4c 39 e8 cmp %r13,%rax 0.00 : 49f7bb: 73 a9 jae 49f766 0.00 : 49f7bd: 0f 1f 00 nopl (%rax) 0.00 : 49f7c0: eb 86 jmp 49f748 0.00 : 49f7c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * catalog relation or a user defined, additional, catalog relation, we : * need to use the horizon that includes slots, otherwise the data-only : * horizon can be used. Note that the toast relation of user defined : * relations are *not* considered catalog relations. : */ : if (IsCatalogRelation(relation) || 0.00 : 49f7c8: 4c 89 f7 mov %r14,%rdi 0.00 : 49f7cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49f7d0: e8 0b 36 04 00 callq 4e2de0 0.00 : 49f7d5: 84 c0 test %al,%al 0.00 : 49f7d7: 0f 85 e3 fe ff ff jne 49f6c0 0.00 : 49f7dd: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 49f7e4: 48 85 c0 test %rax,%rax 0.00 : 49f7e7: 74 ba je 49f7a3 0.00 : 49f7e9: 80 78 48 00 cmpb $0x0,0x48(%rax) 0.00 : 49f7ed: 74 b4 je 49f7a3 0.00 : 49f7ef: 90 nop 0.00 : 49f7f0: e9 cb fe ff ff jmpq 49f6c0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 59.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:242 11.28 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:231 10.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:155 4.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:231 2.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:544 2.31 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:121 1.96 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:243 1.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:247 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000677560 : : * To ensure that no one else can pin the buffer before we do, we must : * return the buffer with the buffer header spinlock still held. : */ : volatile BufferDesc * : StrategyGetBuffer(BufferAccessStrategy strategy) : { 0.16 : 677560: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:121 2.31 : 677561: 48 89 e5 mov %rsp,%rbp 0.00 : 677564: 41 57 push %r15 0.42 : 677566: 41 56 push %r14 0.00 : 677568: 41 55 push %r13 0.04 : 67756a: 49 89 fd mov %rdi,%r13 0.00 : 67756d: 41 54 push %r12 0.01 : 67756f: 53 push %rbx 0.00 : 677570: 48 83 ec 08 sub $0x8,%rsp : : /* : * If given a strategy object, see whether it can select a buffer. We : * assume strategy objects don't need buffer_strategy_lock. : */ : if (strategy != NULL) 0.04 : 677574: 48 85 ff test %rdi,%rdi 0.00 : 677577: 74 65 je 6775de : { : volatile BufferDesc *buf; : Buffer bufnum; : : /* Advance to next ring slot */ : if (++strategy->current >= strategy->ring_size) 0.01 : 677579: 8b 47 08 mov 0x8(%rdi),%eax 0.06 : 67757c: 83 c0 01 add $0x1,%eax 0.04 : 67757f: 3b 47 04 cmp 0x4(%rdi),%eax 0.06 : 677582: 89 47 08 mov %eax,0x8(%rdi) 0.00 : 677585: 7c 09 jl 677590 : strategy->current = 0; 0.03 : 677587: c7 47 08 00 00 00 00 movl $0x0,0x8(%rdi) 0.00 : 67758e: 31 c0 xor %eax,%eax : /* : * If the slot hasn't been filled yet, tell the caller to allocate a new : * buffer with the normal allocation strategy. He will then fill this : * slot by calling AddBufferToRing with the new buffer. : */ : bufnum = strategy->buffers[strategy->current]; 0.00 : 677590: 48 98 cltq 0.01 : 677592: 41 8b 44 85 10 mov 0x10(%r13,%rax,4),%eax : if (bufnum == InvalidBuffer) 0.28 : 677597: 85 c0 test %eax,%eax 0.00 : 677599: 74 3e je 6775d9 : * since our own previous usage of the ring element would have left it : * there, but it might've been decremented by clock sweep since then). A : * higher usage_count indicates someone else has touched the buffer, so we : * shouldn't re-use it. : */ : buf = &BufferDescriptors[bufnum - 1]; 0.00 : 67759b: 48 98 cltq 0.00 : 67759d: 48 8d 58 ff lea -0x1(%rax),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.03 : 6775a1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6775a6: 48 c1 e3 06 shl $0x6,%rbx 0.01 : 6775aa: 48 03 1d 4f 85 54 00 add 0x54854f(%rip),%rbx # bbfb00 : LockBufHdr(buf); 0.03 : 6775b1: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.03 : 6775b5: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:544 2.91 : 6775b8: 84 c0 test %al,%al 0.00 : 6775ba: 0f 85 b8 02 00 00 jne 677878 : if (buf->refcount == 0 && buf->usage_count <= 1) 0.00 : 6775c0: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 6775c3: 85 c0 test %eax,%eax 0.00 : 6775c5: 75 0e jne 6775d5 0.03 : 6775c7: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 6775cb: 66 83 f8 01 cmp $0x1,%ax 0.00 : 6775cf: 0f 86 92 02 00 00 jbe 677867 : { : strategy->current_was_in_ring = true; : return buf; : } : UnlockBufHdr(buf); 0.00 : 6775d5: c6 43 20 00 movb $0x0,0x20(%rbx) : : /* : * Tell caller to allocate a new buffer with the normal allocation : * strategy. He'll then replace this ring element via AddBufferToRing. : */ : strategy->current_was_in_ring = false; 0.00 : 6775d9: 41 c6 45 0c 00 movb $0x0,0xc(%r13) : /* : * We count buffer allocation requests so that the bgwriter can estimate : * the rate of buffer consumption. Note that buffers recycled by a : * strategy object are intentionally not counted here. : */ : pg_atomic_fetch_add_u32(&StrategyControl->numBufferAllocs, 1); 0.16 : 6775de: 48 8b 05 1b 5b 50 00 mov 0x505b1b(%rip),%rax # b7d100 : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.31 : 6775e5: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6775ea: 48 83 c0 14 add $0x14,%rax 0.03 : 6775ee: f0 0f c1 10 lock xadd %edx,(%rax) : * Since we're not guaranteed atomic 8 byte reads we need to acquire the : * spinlock if not null to be sure we get a correct pointer. Because we : * don't want to set the latch while holding the buffer_strategy_lock we : * just grab the lock to read and reset the pointer. : */ : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:155 10.08 : 6775f2: 48 8b 15 07 5b 50 00 mov 0x505b07(%rip),%rdx # b7d100 : if (bgwriterLatch) 0.00 : 6775f9: 48 83 7a 18 00 cmpq $0x0,0x18(%rdx) 0.06 : 6775fe: 74 3e je 67763e 0.00 : 677600: b8 01 00 00 00 mov $0x1,%eax 0.00 : 677605: f0 86 02 lock xchg %al,(%rdx) : { : /* we don't have guaranteed atomic 64bit reads */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677608: 84 c0 test %al,%al 0.00 : 67760a: 0f 85 21 02 00 00 jne 677831 : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); 0.00 : 677610: 48 8b 05 e9 5a 50 00 mov 0x505ae9(%rip),%rax # b7d100 0.00 : 677617: 48 8b 78 18 mov 0x18(%rax),%rdi : StrategyControl->bgwriterLatch = NULL; 0.00 : 67761b: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 677622: 00 : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 677623: 48 8b 05 d6 5a 50 00 mov 0x505ad6(%rip),%rax # b7d100 : : /* recheck */ : if (bgwriterLatch) 0.00 : 67762a: 48 85 ff test %rdi,%rdi : { : /* we don't have guaranteed atomic 64bit reads */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); : StrategyControl->bgwriterLatch = NULL; : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 67762d: c6 00 00 movb $0x0,(%rax) : : /* recheck */ : if (bgwriterLatch) 0.00 : 677630: 74 05 je 677637 : SetLatch(bgwriterLatch); 0.00 : 677632: e8 89 1a fc ff callq 6390c0 0.00 : 677637: 48 8b 15 c2 5a 50 00 mov 0x505ac2(%rip),%rdx # b7d100 : * : * Note that the freeNext fields are considered to be protected by : * the buffer_strategy_lock not the individual buffer spinlocks, so it's : * OK to manipulate them without holding the spinlock. : */ : if (INT_ACCESS_ONCE(StrategyControl->firstFreeBuffer) >= 0) 0.04 : 67763e: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 677641: 85 c0 test %eax,%eax 0.00 : 677643: 0f 88 08 01 00 00 js 677751 0.00 : 677649: b8 01 00 00 00 mov $0x1,%eax 0.00 : 67764e: f0 86 02 lock xchg %al,(%rdx) : { : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.01 : 677651: 84 c0 test %al,%al 0.00 : 677653: 0f 85 f3 01 00 00 jne 67784c 0.00 : 677659: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 67765f: eb 30 jmp 677691 0.00 : 677661: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * valid buffer in the freelist and then someone else used it before : * we got to it. It's probably impossible altogether as of 8.3, but : * we'd better check anyway.) : */ : LockBufHdr(buf); : if (buf->refcount == 0 && buf->usage_count == 0) 0.00 : 677668: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 67766b: 85 c0 test %eax,%eax 0.00 : 67766d: 75 0d jne 67767c 0.00 : 67766f: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 677673: 66 85 c0 test %ax,%ax 0.00 : 677676: 0f 84 94 00 00 00 je 677710 : { : if (strategy != NULL) : AddBufferToRing(strategy, buf); : return buf; : } : UnlockBufHdr(buf); 0.00 : 67767c: c6 43 20 00 movb $0x0,0x20(%rbx) 0.00 : 677680: 44 89 e0 mov %r12d,%eax : : /* Reacquire the lock and go around for another pass. */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677683: 48 8b 15 76 5a 50 00 mov 0x505a76(%rip),%rdx # b7d100 0.00 : 67768a: f0 86 02 lock xchg %al,(%rdx) 0.00 : 67768d: 84 c0 test %al,%al 0.00 : 67768f: 75 5f jne 6776f0 : */ : if (INT_ACCESS_ONCE(StrategyControl->firstFreeBuffer) >= 0) : { : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : : while (StrategyControl->firstFreeBuffer >= 0) 0.00 : 677691: 48 8b 15 68 5a 50 00 mov 0x505a68(%rip),%rdx # b7d100 0.00 : 677698: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 67769b: 85 c0 test %eax,%eax 0.00 : 67769d: 0f 88 9d 00 00 00 js 677740 : { : buf = &BufferDescriptors[StrategyControl->firstFreeBuffer]; 0.00 : 6776a3: 48 63 d8 movslq %eax,%rbx 0.00 : 6776a6: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 6776aa: 48 03 1d 4f 84 54 00 add 0x54844f(%rip),%rbx # bbfb00 : Assert(buf->freeNext != FREENEXT_NOT_IN_LIST); : : /* Unconditionally remove buffer from freelist */ : StrategyControl->firstFreeBuffer = buf->freeNext; 0.01 : 6776b1: 8b 43 28 mov 0x28(%rbx),%eax 0.03 : 6776b4: 89 42 08 mov %eax,0x8(%rdx) : buf->freeNext = FREENEXT_NOT_IN_LIST; 0.00 : 6776b7: c7 43 28 fe ff ff ff movl $0xfffffffe,0x28(%rbx) : : /* : * Release the lock so someone else can access the freelist (or run : * the clocksweep) while we check out this buffer. : */ : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.06 : 6776be: 48 8b 05 3b 5a 50 00 mov 0x505a3b(%rip),%rax # b7d100 : * it; discard it and retry. (This can only happen if VACUUM put a : * valid buffer in the freelist and then someone else used it before : * we got to it. It's probably impossible altogether as of 8.3, but : * we'd better check anyway.) : */ : LockBufHdr(buf); 0.00 : 6776c5: 48 8d 7b 20 lea 0x20(%rbx),%rdi : : /* : * Release the lock so someone else can access the freelist (or run : * the clocksweep) while we check out this buffer. : */ : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 6776c9: c6 00 00 movb $0x0,(%rax) 0.00 : 6776cc: 44 89 e0 mov %r12d,%eax 0.00 : 6776cf: f0 86 07 lock xchg %al,(%rdi) : * it; discard it and retry. (This can only happen if VACUUM put a : * valid buffer in the freelist and then someone else used it before : * we got to it. It's probably impossible altogether as of 8.3, but : * we'd better check anyway.) : */ : LockBufHdr(buf); 0.19 : 6776d2: 84 c0 test %al,%al 0.00 : 6776d4: 74 92 je 677668 0.00 : 6776d6: ba d0 00 00 00 mov $0xd0,%edx 0.00 : 6776db: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 6776e0: e8 5b 89 01 00 callq 690040 0.00 : 6776e5: eb 81 jmp 677668 0.00 : 6776e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6776ee: 00 00 : return buf; : } : UnlockBufHdr(buf); : : /* Reacquire the lock and go around for another pass. */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 6776f0: 48 8b 3d 09 5a 50 00 mov 0x505a09(%rip),%rdi # b7d100 0.00 : 6776f7: ba da 00 00 00 mov $0xda,%edx 0.00 : 6776fc: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 677701: e8 3a 89 01 00 callq 690040 0.00 : 677706: eb 89 jmp 677691 0.00 : 677708: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67770f: 00 : trycounter = NBuffers; : } : else : { : /* Found a usable buffer */ : if (strategy != NULL) 0.34 : 677710: 4d 85 ed test %r13,%r13 0.00 : 677713: 74 0f je 677724 : * is called with the spinlock held, it had better be quite cheap. : */ : static void : AddBufferToRing(BufferAccessStrategy strategy, volatile BufferDesc *buf) : { : strategy->buffers[strategy->current] = BufferDescriptorGetBuffer(buf); 0.00 : 677715: 8b 43 24 mov 0x24(%rbx),%eax 0.00 : 677718: 49 63 55 08 movslq 0x8(%r13),%rdx 0.00 : 67771c: 83 c0 01 add $0x1,%eax 0.00 : 67771f: 41 89 44 95 10 mov %eax,0x10(%r13,%rdx,4) : UnlockBufHdr(buf); : elog(ERROR, "no unpinned buffers available"); : } : UnlockBufHdr(buf); : } : } 0.09 : 677724: 48 83 c4 08 add $0x8,%rsp 0.04 : 677728: 48 89 d8 mov %rbx,%rax 0.00 : 67772b: 5b pop %rbx 0.23 : 67772c: 41 5c pop %r12 0.06 : 67772e: 41 5d pop %r13 0.01 : 677730: 41 5e pop %r14 0.00 : 677732: 41 5f pop %r15 0.06 : 677734: c9 leaveq 0.06 : 677735: c3 retq 0.00 : 677736: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67773d: 00 00 00 : UnlockBufHdr(buf); : : /* Reacquire the lock and go around for another pass. */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : } : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 677740: 48 8b 05 b9 59 50 00 mov 0x5059b9(%rip),%rax # b7d100 0.00 : 677747: c6 00 00 movb $0x0,(%rax) 0.00 : 67774a: 48 8b 15 af 59 50 00 mov 0x5059af(%rip),%rdx # b7d100 : } : : /* Nothing on the freelist, so run the "clock sweep" algorithm */ : trycounter = NBuffers; 0.07 : 677751: 44 8b 25 c8 13 4f 00 mov 0x4f13c8(%rip),%r12d # b68b20 0.00 : 677758: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 67775e: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 677764: eb 30 jmp 677796 0.00 : 677766: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67776d: 00 00 00 : * it; decrement the usage_count (unless pinned) and keep scanning. : */ : LockBufHdr(buf); : if (buf->refcount == 0) : { : if (buf->usage_count > 0) 0.31 : 677770: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.09 : 677774: 66 85 c0 test %ax,%ax 0.00 : 677777: 74 97 je 677710 : { : buf->usage_count--; 0.06 : 677779: 0f b7 43 16 movzwl 0x16(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:247 1.42 : 67777d: 83 e8 01 sub $0x1,%eax 0.25 : 677780: 66 89 43 16 mov %ax,0x16(%rbx) : trycounter = NBuffers; 0.18 : 677784: 44 8b 25 95 13 4f 00 mov 0x4f1395(%rip),%r12d # b68b20 : * infinite loop. : */ : UnlockBufHdr(buf); : elog(ERROR, "no unpinned buffers available"); : } : UnlockBufHdr(buf); 0.07 : 67778b: c6 43 20 00 movb $0x0,0x20(%rbx) 0.23 : 67778f: 48 8b 15 6a 59 50 00 mov 0x50596a(%rip),%rdx # b7d100 : trycounter = NBuffers; : for (;;) : { : int victim; : : victim = pg_atomic_fetch_add_u32(&StrategyControl->nextVictimBuffer, 1); 0.20 : 677796: 48 8d 42 04 lea 0x4(%rdx),%rax 0.04 : 67779a: 44 89 f2 mov %r14d,%edx 0.01 : 67779d: f0 0f c1 10 lock xadd %edx,(%rax) : : buf = &BufferDescriptors[victim % NBuffers]; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:231 11.28 : 6777a1: 89 d0 mov %edx,%eax 0.00 : 6777a3: c1 fa 1f sar $0x1f,%edx 0.00 : 6777a6: f7 3d 74 13 4f 00 idivl 0x4f1374(%rip) # b68b20 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:231 4.51 : 6777ac: 48 63 da movslq %edx,%rbx 0.22 : 6777af: 48 c1 e3 06 shl $0x6,%rbx 0.22 : 6777b3: 48 03 1d 46 83 54 00 add 0x548346(%rip),%rbx # bbfb00 : : if (victim % NBuffers == 0) 0.29 : 6777ba: 85 d2 test %edx,%edx 0.00 : 6777bc: 75 12 jne 6777d0 : { : pg_atomic_add_fetch_u32(&StrategyControl->completePasses, 1); 0.00 : 6777be: 48 8b 05 3b 59 50 00 mov 0x50593b(%rip),%rax # b7d100 0.00 : 6777c5: 44 89 f2 mov %r14d,%edx 0.00 : 6777c8: 48 83 c0 10 add $0x10,%rax 0.00 : 6777cc: f0 0f c1 10 lock xadd %edx,(%rax) : : /* : * If the buffer is pinned or has a nonzero usage_count, we cannot use : * it; decrement the usage_count (unless pinned) and keep scanning. : */ : LockBufHdr(buf); 0.00 : 6777d0: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.22 : 6777d4: 44 89 f8 mov %r15d,%eax 0.31 : 6777d7: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:242 59.62 : 6777da: 84 c0 test %al,%al 0.00 : 6777dc: 75 42 jne 677820 : if (buf->refcount == 0) 0.03 : 6777de: 8b 43 18 mov 0x18(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:243 1.96 : 6777e1: 85 c0 test %eax,%eax 0.00 : 6777e3: 74 8b je 677770 : if (strategy != NULL) : AddBufferToRing(strategy, buf); : return buf; : } : } : else if (--trycounter == 0) 0.00 : 6777e5: 41 83 ec 01 sub $0x1,%r12d 0.00 : 6777e9: 75 a0 jne 67778b : * We could hope that someone will free one eventually, but it's : * probably better to fail than to risk getting stuck in an : * infinite loop. : */ : UnlockBufHdr(buf); : elog(ERROR, "no unpinned buffers available"); 0.00 : 6777eb: ba 80 a1 8a 00 mov $0x8aa180,%edx 0.00 : 6777f0: be 0c 01 00 00 mov $0x10c,%esi 0.00 : 6777f5: bf ec a0 8a 00 mov $0x8aa0ec,%edi : * so all the buffers are pinned (or were when we looked at them). : * We could hope that someone will free one eventually, but it's : * probably better to fail than to risk getting stuck in an : * infinite loop. : */ : UnlockBufHdr(buf); 0.00 : 6777fa: c6 43 20 00 movb $0x0,0x20(%rbx) : elog(ERROR, "no unpinned buffers available"); 0.00 : 6777fe: e8 1d 3c 10 00 callq 77b420 0.00 : 677803: be 0e a1 8a 00 mov $0x8aa10e,%esi 0.00 : 677808: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67780d: 31 c0 xor %eax,%eax 0.00 : 67780f: e8 1c 3a 10 00 callq 77b230 0.00 : 677814: e8 b7 1c df ff callq 4694d0 0.00 : 677819: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * If the buffer is pinned or has a nonzero usage_count, we cannot use : * it; decrement the usage_count (unless pinned) and keep scanning. : */ : LockBufHdr(buf); 0.00 : 677820: ba f2 00 00 00 mov $0xf2,%edx 0.00 : 677825: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 67782a: e8 11 88 01 00 callq 690040 0.00 : 67782f: eb ad jmp 6777de : */ : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); : if (bgwriterLatch) : { : /* we don't have guaranteed atomic 64bit reads */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677831: 48 8b 3d c8 58 50 00 mov 0x5058c8(%rip),%rdi # b7d100 0.00 : 677838: ba 9f 00 00 00 mov $0x9f,%edx 0.00 : 67783d: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 677842: e8 f9 87 01 00 callq 690040 0.00 : 677847: e9 c4 fd ff ff jmpq 677610 : * the buffer_strategy_lock not the individual buffer spinlocks, so it's : * OK to manipulate them without holding the spinlock. : */ : if (INT_ACCESS_ONCE(StrategyControl->firstFreeBuffer) >= 0) : { : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 67784c: 48 8b 3d ad 58 50 00 mov 0x5058ad(%rip),%rdi # b7d100 0.00 : 677853: ba b8 00 00 00 mov $0xb8,%edx 0.00 : 677858: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 67785d: e8 de 87 01 00 callq 690040 0.00 : 677862: e9 f2 fd ff ff jmpq 677659 : */ : buf = &BufferDescriptors[bufnum - 1]; : LockBufHdr(buf); : if (buf->refcount == 0 && buf->usage_count <= 1) : { : strategy->current_was_in_ring = true; 0.00 : 677867: 41 c6 45 0c 01 movb $0x1,0xc(%r13) 0.00 : 67786c: e9 b3 fe ff ff jmpq 677724 0.00 : 677871: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * there, but it might've been decremented by clock sweep since then). A : * higher usage_count indicates someone else has touched the buffer, so we : * shouldn't re-use it. : */ : buf = &BufferDescriptors[bufnum - 1]; : LockBufHdr(buf); 0.00 : 677878: ba 20 02 00 00 mov $0x220,%edx 0.00 : 67787d: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 677882: e8 b9 87 01 00 callq 690040 0.00 : 677887: e9 34 fd ff ff jmpq 6775c0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 9.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 7.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:355 6.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 6.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 5.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:359 5.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:347 4.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:347 4.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 4.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 3.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:379 3.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 2.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:358 2.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.16 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 1.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 1.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 1.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 1.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:378 1.16 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:349 1.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 0.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:375 0.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:379 0.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 0.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:357 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b4480 : : TupleTableSlot * : ExecStoreTuple(HeapTuple tuple, : TupleTableSlot *slot, : Buffer buffer, : bool shouldFree) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.16 : 5b4480: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 9.86 : 5b4481: 48 89 e5 mov %rsp,%rbp 0.47 : 5b4484: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 3.30 : 5b4488: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 6.42 : 5b448c: 48 89 f3 mov %rsi,%rbx 0.21 : 5b448f: 4c 89 6d f0 mov %r13,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 0.52 : 5b4493: 4c 89 75 f8 mov %r14,-0x8(%rbp) 2.00 : 5b4497: 48 83 ec 20 sub $0x20,%rsp : Assert(BufferIsValid(buffer) ? (!shouldFree) : true); : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:347 5.34 : 5b449b: 80 7e 05 00 cmpb $0x0,0x5(%rsi) : TupleTableSlot * : ExecStoreTuple(HeapTuple tuple, : TupleTableSlot *slot, : Buffer buffer, : bool shouldFree) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.33 : 5b449f: 49 89 fe mov %rdi,%r14 0.28 : 5b44a2: 41 89 d4 mov %edx,%r12d 1.84 : 5b44a5: 41 89 cd mov %ecx,%r13d : Assert(BufferIsValid(buffer) ? (!shouldFree) : true); : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:347 4.90 : 5b44a8: 0f 85 92 00 00 00 jne 5b4540 : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) 0.38 : 5b44ae: 80 7b 06 00 cmpb $0x0,0x6(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:349 1.16 : 5b44b2: 75 74 jne 5b4528 : * This is coded to optimize the case where the slot previously held a : * tuple on the same disk page: in that case releasing and re-acquiring : * the pin is a waste of cycles. This is a common situation during : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 1.86 : 5b44b4: 8b 7b 20 mov 0x20(%rbx),%edi : heap_free_minimal_tuple(slot->tts_mintuple); : : /* : * Store the new tuple into the specified slot. : */ : slot->tts_isempty = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:355 7.04 : 5b44b7: c6 43 04 00 movb $0x0,0x4(%rbx) : slot->tts_shouldFree = shouldFree; 0.45 : 5b44bb: 44 88 6b 05 mov %r13b,0x5(%rbx) : slot->tts_shouldFreeMin = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:357 0.59 : 5b44bf: c6 43 06 00 movb $0x0,0x6(%rbx) : slot->tts_tuple = tuple; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:358 2.66 : 5b44c3: 4c 89 73 08 mov %r14,0x8(%rbx) : slot->tts_mintuple = NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:359 5.46 : 5b44c7: 48 c7 43 38 00 00 00 movq $0x0,0x38(%rbx) 0.00 : 5b44ce: 00 : * This is coded to optimize the case where the slot previously held a : * tuple on the same disk page: in that case releasing and re-acquiring : * the pin is a waste of cycles. This is a common situation during : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 1.27 : 5b44cf: 44 39 e7 cmp %r12d,%edi : slot->tts_shouldFreeMin = false; : slot->tts_tuple = tuple; : slot->tts_mintuple = NULL; : : /* Mark extracted state invalid */ : slot->tts_nvalid = 0; 0.03 : 5b44d2: c7 43 24 00 00 00 00 movl $0x0,0x24(%rbx) : * This is coded to optimize the case where the slot previously held a : * tuple on the same disk page: in that case releasing and re-acquiring : * the pin is a waste of cycles. This is a common situation during : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) 2.82 : 5b44d9: 74 0d je 5b44e8 : { : if (BufferIsValid(slot->tts_buffer)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:375 0.96 : 5b44db: 85 ff test %edi,%edi 0.00 : 5b44dd: 75 31 jne 5b4510 : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; : if (BufferIsValid(buffer)) 0.28 : 5b44df: 45 85 e4 test %r12d,%r12d : */ : if (slot->tts_buffer != buffer) : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; 0.07 : 5b44e2: 44 89 63 20 mov %r12d,0x20(%rbx) : if (BufferIsValid(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:378 1.23 : 5b44e6: 75 18 jne 5b4500 : IncrBufferRefCount(buffer); : } : : return slot; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 6.29 : 5b44e8: 48 89 d8 mov %rbx,%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 0.63 : 5b44eb: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.76 : 5b44f0: 48 8b 1c 24 mov (%rsp),%rbx 4.54 : 5b44f4: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 4.73 : 5b44f9: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 1.01 : 5b44fe: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 10.97 : 5b44ff: c3 retq : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; : if (BufferIsValid(buffer)) : IncrBufferRefCount(buffer); /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:379 0.92 : 5b4500: 44 89 e7 mov %r12d,%edi 0.19 : 5b4503: e8 58 06 0c 00 callq 674b60 3.63 : 5b4508: eb de jmp 5b44e8 0.00 : 5b450a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); 0.16 : 5b4510: e8 4b 09 0c 00 callq 674e60 : slot->tts_buffer = buffer; : if (BufferIsValid(buffer)) 0.00 : 5b4515: 45 85 e4 test %r12d,%r12d : */ : if (slot->tts_buffer != buffer) : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; 0.21 : 5b4518: 44 89 63 20 mov %r12d,0x20(%rbx) 0.05 : 5b451c: 0f 1f 40 00 nopl 0x0(%rax) : if (BufferIsValid(buffer)) 0.00 : 5b4520: 74 c6 je 5b44e8 0.00 : 5b4522: eb dc jmp 5b4500 0.00 : 5b4524: 0f 1f 40 00 nopl 0x0(%rax) : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) : heap_free_minimal_tuple(slot->tts_mintuple); 0.00 : 5b4528: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5b452c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5b4530: e8 7b a7 eb ff callq 46ecb0 0.00 : 5b4535: e9 7a ff ff ff jmpq 5b44b4 0.00 : 5b453a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); 0.00 : 5b4540: 48 8b 7e 08 mov 0x8(%rsi),%rdi 0.02 : 5b4544: e8 77 a7 eb ff callq 46ecc0 0.00 : 5b4549: e9 60 ff ff ff jmpq 5b44ae Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 82.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:666 7.61 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:625 4.07 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:187 0.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.74 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:655 0.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:612 0.61 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:615 0.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:702 0.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068eec0 : : * for 'potentially_spurious'. Its value will be set to true if we possibly : * did so. The caller then has to handle that scenario. : */ : static bool : LWLockAttemptLock(LWLock* lock, LWLockMode mode, bool *potentially_spurious) : { 0.32 : 68eec0: 55 push %rbp : lwstats = get_lwlock_stats_entry(lock); : #endif : : AssertArg(mode == LW_EXCLUSIVE || mode == LW_SHARED); : : if (potentially_spurious != NULL) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:612 0.67 : 68eec1: 48 85 d2 test %rdx,%rdx : * for 'potentially_spurious'. Its value will be set to true if we possibly : * did so. The caller then has to handle that scenario. : */ : static bool : LWLockAttemptLock(LWLock* lock, LWLockMode mode, bool *potentially_spurious) : { 0.16 : 68eec4: 48 89 e5 mov %rsp,%rbp : lwstats = get_lwlock_stats_entry(lock); : #endif : : AssertArg(mode == LW_EXCLUSIVE || mode == LW_SHARED); : : if (potentially_spurious != NULL) 0.19 : 68eec7: 74 03 je 68eecc : *potentially_spurious = false; 0.01 : 68eec9: c6 02 00 movb $0x0,(%rdx) : : if (mode == LW_EXCLUSIVE) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:615 0.61 : 68eecc: 85 f6 test %esi,%esi 0.00 : 68eece: 75 28 jne 68eef8 : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); 0.42 : 68eed0: 8b 47 04 mov 0x4(%rdi),%eax : * First check whether the variable is free without a atomic : * operation; it's often quite a bit cheaper for contended : * locks. Doing so can cause a superflous shared-exclusive cacheline : * transition, but benchmarks show that it's still worth doing so. : */ : expected = pg_atomic_read_u32(&lock->lockcount); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:625 7.61 : 68eed3: 48 8d 57 04 lea 0x4(%rdi),%rdx : : if (expected != 0) 0.03 : 68eed7: 85 c0 test %eax,%eax 0.00 : 68eed9: 75 65 jne 68ef40 : : /* : * Perform cmpxchg and use the zero flag which it implicitly sets when : * equal to measure the success. : */ : __asm__ __volatile__( 0.10 : 68eedb: b9 00 00 00 40 mov $0x40000000,%ecx 0.00 : 68eee0: 89 f0 mov %esi,%eax 0.00 : 68eee2: f0 0f b1 0a lock cmpxchg %ecx,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:187 4.07 : 68eee6: 40 0f 94 c6 sete %sil 0.00 : 68eeea: 40 84 f6 test %sil,%sil 0.00 : 68eeed: 0f 94 c1 sete %cl : return false; : } : } : : pg_unreachable(); : } 0.06 : 68eef0: 89 c8 mov %ecx,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:702 0.60 : 68eef2: c9 leaveq 0.15 : 68eef3: c3 retq 0.00 : 68eef4: 0f 1f 40 00 nopl 0x0(%rax) : /* : * If the caller is interested in spurious locks, do an unlocked check : * first. This is useful if potentially spurious results have a : * noticeable cost. : */ : if (potentially_spurious != NULL && /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:655 0.74 : 68eef8: 48 85 d2 test %rdx,%rdx 0.00 : 68eefb: 48 8d 77 04 lea 0x4(%rdi),%rsi 0.10 : 68eeff: 74 0e je 68ef0f 0.00 : 68ef01: 8b 47 04 mov 0x4(%rdi),%eax 0.06 : 68ef04: 48 8d 77 04 lea 0x4(%rdi),%rsi 0.00 : 68ef08: 3d ff ff ff 3f cmp $0x3fffffff,%eax 0.00 : 68ef0d: 77 31 ja 68ef40 : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.86 : 68ef0f: b8 01 00 00 00 mov $0x1,%eax 0.53 : 68ef14: f0 0f c1 06 lock xadd %eax,(%rsi) : * might have to back out again if it turns out somebody else has an : * exclusive lock. : */ : oldstate = pg_atomic_fetch_add_u32(&lock->lockcount, 1); : : if (oldstate >= EXCLUSIVE_LOCK) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:666 82.65 : 68ef18: 31 c9 xor %ecx,%ecx 0.00 : 68ef1a: 3d ff ff ff 3f cmp $0x3fffffff,%eax 0.00 : 68ef1f: 76 cf jbe 68eef0 0.00 : 68ef21: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68ef26: f0 0f c1 06 lock xadd %eax,(%rsi) : * problems exist. : */ : pg_atomic_fetch_sub_u32(&lock->lockcount, 1); : : : if (potentially_spurious != NULL) 0.00 : 68ef2a: 48 85 d2 test %rdx,%rdx 0.00 : 68ef2d: 74 11 je 68ef40 : *potentially_spurious = true; 0.00 : 68ef2f: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 68ef34: c6 02 01 movb $0x1,(%rdx) : return false; : } : } : : pg_unreachable(); : } 0.00 : 68ef37: 89 c8 mov %ecx,%eax 0.00 : 68ef39: c9 leaveq 0.00 : 68ef3a: c3 retq 0.00 : 68ef3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : pg_atomic_fetch_sub_u32(&lock->lockcount, 1); : : : if (potentially_spurious != NULL) : *potentially_spurious = true; 0.00 : 68ef40: b9 01 00 00 00 mov $0x1,%ecx : return false; : } : } : : pg_unreachable(); : } 0.03 : 68ef45: c9 leaveq 0.01 : 68ef46: 89 c8 mov %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:513 8.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:400 6.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:513 4.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:509 4.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:359 4.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:457 4.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:509 4.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:367 4.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:356 3.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:400 3.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:364 3.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:359 2.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:510 2.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:361 2.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:404 2.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:356 1.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:510 1.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:449 1.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:513 1.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:457 1.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:414 1.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:510 1.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:449 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:367 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:400 0.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:404 0.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:414 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:356 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:449 0.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:457 0.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:404 0.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:510 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:356 0.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:361 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:364 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:365 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ac4a0 : : TupleTableSlot * : ExecProcNode(PlanState *node) : { : TupleTableSlot *result; : : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:359 4.74 : 5ac4a0: 0f b6 05 e9 db 60 00 movzbl 0x60dbe9(%rip),%eax # bba090 : * Execute the given node to return a(nother) tuple. : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecProcNode(PlanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:356 0.88 : 5ac4a7: 55 push %rbp 0.77 : 5ac4a8: 48 89 e5 mov %rsp,%rbp 4.09 : 5ac4ab: 41 54 push %r12 2.17 : 5ac4ad: 49 89 fc mov %rdi,%r12 : TupleTableSlot *result; : : CHECK_FOR_INTERRUPTS(); 0.27 : 5ac4b0: 84 c0 test %al,%al : * Execute the given node to return a(nother) tuple. : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecProcNode(PlanState *node) : { 0.33 : 5ac4b2: 53 push %rbx : TupleTableSlot *result; : : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:359 3.62 : 5ac4b3: 75 6b jne 5ac520 : : if (node->chgParam != NULL) /* something changed */ /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:361 0.75 : 5ac4b5: 49 83 7c 24 50 00 cmpq $0x0,0x50(%r12) 2.85 : 5ac4bb: 74 08 je 5ac4c5 : ExecReScan(node); /* let ReScan handle this */ 0.00 : 5ac4bd: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac4c0: e8 db bf ff ff callq 5a84a0 : : if (node->instrument) /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:364 0.62 : 5ac4c5: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 3.77 : 5ac4ca: 48 85 ff test %rdi,%rdi 0.00 : 5ac4cd: 74 05 je 5ac4d4 : InstrStartNode(node->instrument); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:365 0.53 : 5ac4cf: e8 2c ba 00 00 callq 5b7f00 : : switch (nodeTag(node)) 0.47 : 5ac4d4: 41 8b 04 24 mov (%r12),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:367 1.02 : 5ac4d8: 2d c9 00 00 00 sub $0xc9,%eax 0.15 : 5ac4dd: 83 f8 21 cmp $0x21,%eax 0.00 : 5ac4e0: 76 2e jbe 5ac510 : case T_LimitState: : result = ExecLimit((LimitState *) node); : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); 0.00 : 5ac4e2: ba e2 a3 88 00 mov $0x88a3e2,%edx 0.00 : 5ac4e7: be f8 01 00 00 mov $0x1f8,%esi 0.00 : 5ac4ec: bf 75 a0 88 00 mov $0x88a075,%edi 0.00 : 5ac4f1: e8 2a ef 1c 00 callq 77b420 0.00 : 5ac4f6: 41 8b 14 24 mov (%r12),%edx 0.00 : 5ac4fa: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5ac4ff: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ac504: 31 c0 xor %eax,%eax 0.00 : 5ac506: e8 25 ed 1c 00 callq 77b230 0.00 : 5ac50b: e8 c0 cf eb ff callq 4694d0 : ExecReScan(node); /* let ReScan handle this */ : : if (node->instrument) : InstrStartNode(node->instrument); : : switch (nodeTag(node)) 4.17 : 5ac510: 89 c0 mov %eax,%eax 0.35 : 5ac512: ff 24 c5 a0 a1 88 00 jmpq *0x88a1a0(,%rax,8) 0.00 : 5ac519: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : TupleTableSlot * : ExecProcNode(PlanState *node) : { : TupleTableSlot *result; : : CHECK_FOR_INTERRUPTS(); 0.00 : 5ac520: e8 7b fd 0e 00 callq 69c2a0 0.00 : 5ac525: eb 8e jmp 5ac4b5 0.00 : 5ac527: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ac52e: 00 00 : case T_LockRowsState: : result = ExecLockRows((LockRowsState *) node); : break; : : case T_LimitState: : result = ExecLimit((LimitState *) node); 0.00 : 5ac530: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac533: e8 a8 3c 01 00 callq 5c01e0 0.00 : 5ac538: 48 89 c3 mov %rax,%rbx 0.00 : 5ac53b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : result = NULL; : break; : } : : if (node->instrument) /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:509 4.90 : 5ac540: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 4.20 : 5ac545: 48 85 ff test %rdi,%rdi 0.00 : 5ac548: 74 20 je 5ac56a : InstrStopNode(node->instrument, TupIsNull(result) ? 0.0 : 1.0); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:510 1.30 : 5ac54a: 48 85 db test %rbx,%rbx 0.00 : 5ac54d: 0f 84 ed 01 00 00 je 5ac740 0.02 : 5ac553: 80 7b 04 00 cmpb $0x0,0x4(%rbx) 2.99 : 5ac557: 0f 85 e3 01 00 00 jne 5ac740 0.82 : 5ac55d: f2 0f 10 05 f3 2b 20 movsd 0x202bf3(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5ac564: 00 1.92 : 5ac565: e8 66 b6 00 00 callq 5b7bd0 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:513 6.24 : 5ac56a: 48 89 d8 mov %rbx,%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:513 1.80 : 5ac56d: 5b pop %rbx 0.15 : 5ac56e: 41 5c pop %r12 0.17 : 5ac570: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:513 11.61 : 5ac571: c3 retq 0.00 : 5ac572: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_SetOpState: : result = ExecSetOp((SetOpState *) node); : break; : : case T_LockRowsState: : result = ExecLockRows((LockRowsState *) node); 0.00 : 5ac578: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac57b: e8 a0 40 01 00 callq 5c0620 0.00 : 5ac580: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac583: eb bb jmp 5ac540 0.00 : 5ac585: 0f 1f 00 nopl (%rax) : case T_HashState: : result = ExecHash((HashState *) node); : break; : : case T_SetOpState: : result = ExecSetOp((SetOpState *) node); 0.00 : 5ac588: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac58b: e8 60 98 01 00 callq 5c5df0 0.00 : 5ac590: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac593: eb ab jmp 5ac540 0.00 : 5ac595: 0f 1f 00 nopl (%rax) : case T_UniqueState: : result = ExecUnique((UniqueState *) node); : break; : : case T_HashState: : result = ExecHash((HashState *) node); 0.00 : 5ac598: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac59b: e8 d0 02 01 00 callq 5bc870 0.00 : 5ac5a0: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac5a3: eb 9b jmp 5ac540 0.00 : 5ac5a5: 0f 1f 00 nopl (%rax) : case T_WindowAggState: : result = ExecWindowAgg((WindowAggState *) node); : break; : : case T_UniqueState: : result = ExecUnique((UniqueState *) node); 0.00 : 5ac5a8: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac5ab: e8 20 a0 01 00 callq 5c65d0 0.00 : 5ac5b0: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac5b3: eb 8b jmp 5ac540 0.00 : 5ac5b5: 0f 1f 00 nopl (%rax) : case T_AggState: : result = ExecAgg((AggState *) node); : break; : : case T_WindowAggState: : result = ExecWindowAgg((WindowAggState *) node); 0.00 : 5ac5b8: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac5bb: e8 90 00 02 00 callq 5cc650 0.00 : 5ac5c0: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac5c3: e9 78 ff ff ff jmpq 5ac540 0.00 : 5ac5c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ac5cf: 00 : case T_GroupState: : result = ExecGroup((GroupState *) node); : break; : : case T_AggState: : result = ExecAgg((AggState *) node); 0.03 : 5ac5d0: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac5d3: e8 a8 d7 00 00 callq 5b9d80 0.02 : 5ac5d8: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac5db: e9 60 ff ff ff jmpq 5ac540 : case T_SortState: : result = ExecSort((SortState *) node); : break; : : case T_GroupState: : result = ExecGroup((GroupState *) node); 0.00 : 5ac5e0: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac5e3: e8 88 ab 01 00 callq 5c7170 0.00 : 5ac5e8: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac5eb: e9 50 ff ff ff jmpq 5ac540 : case T_MaterialState: : result = ExecMaterial((MaterialState *) node); : break; : : case T_SortState: : result = ExecSort((SortState *) node); 0.00 : 5ac5f0: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac5f3: e8 48 9d 01 00 callq 5c6340 0.08 : 5ac5f8: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac5fb: e9 40 ff ff ff jmpq 5ac540 : : /* : * materialization nodes : */ : case T_MaterialState: : result = ExecMaterial((MaterialState *) node); 0.00 : 5ac600: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac603: e8 38 47 01 00 callq 5c0d40 0.00 : 5ac608: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac60b: e9 30 ff ff ff jmpq 5ac540 : case T_MergeJoinState: : result = ExecMergeJoin((MergeJoinState *) node); : break; : : case T_HashJoinState: : result = ExecHashJoin((HashJoinState *) node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:457 4.29 : 5ac610: 4c 89 e7 mov %r12,%rdi 1.35 : 5ac613: e8 88 14 01 00 callq 5bdaa0 0.87 : 5ac618: 48 89 c3 mov %rax,%rbx : break; 0.22 : 5ac61b: e9 20 ff ff ff jmpq 5ac540 : case T_NestLoopState: : result = ExecNestLoop((NestLoopState *) node); : break; : : case T_MergeJoinState: : result = ExecMergeJoin((MergeJoinState *) node); 0.00 : 5ac620: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac623: e8 08 5a 01 00 callq 5c2030 0.00 : 5ac628: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac62b: e9 10 ff ff ff jmpq 5ac540 : : /* : * join nodes : */ : case T_NestLoopState: : result = ExecNestLoop((NestLoopState *) node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:449 1.85 : 5ac630: 4c 89 e7 mov %r12,%rdi 0.88 : 5ac633: e8 08 7c 01 00 callq 5c4240 1.18 : 5ac638: 48 89 c3 mov %rax,%rbx : break; 0.45 : 5ac63b: e9 00 ff ff ff jmpq 5ac540 : case T_WorkTableScanState: : result = ExecWorkTableScan((WorkTableScanState *) node); : break; : : case T_ForeignScanState: : result = ExecForeignScan((ForeignScanState *) node); 0.00 : 5ac640: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac643: e8 f8 d2 01 00 callq 5c9940 0.00 : 5ac648: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac64b: e9 f0 fe ff ff jmpq 5ac540 : case T_CteScanState: : result = ExecCteScan((CteScanState *) node); : break; : : case T_WorkTableScanState: : result = ExecWorkTableScan((WorkTableScanState *) node); 0.00 : 5ac650: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac653: e8 f8 a8 01 00 callq 5c6f50 0.00 : 5ac658: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac65b: e9 e0 fe ff ff jmpq 5ac540 : case T_ValuesScanState: : result = ExecValuesScan((ValuesScanState *) node); : break; : : case T_CteScanState: : result = ExecCteScan((CteScanState *) node); 0.00 : 5ac660: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac663: e8 28 a6 01 00 callq 5c6c90 0.00 : 5ac668: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac66b: e9 d0 fe ff ff jmpq 5ac540 : case T_FunctionScanState: : result = ExecFunctionScan((FunctionScanState *) node); : break; : : case T_ValuesScanState: : result = ExecValuesScan((ValuesScanState *) node); 0.00 : 5ac670: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac673: e8 18 a2 01 00 callq 5c6890 0.00 : 5ac678: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac67b: e9 c0 fe ff ff jmpq 5ac540 : case T_SubqueryScanState: : result = ExecSubqueryScan((SubqueryScanState *) node); : break; : : case T_FunctionScanState: : result = ExecFunctionScan((FunctionScanState *) node); 0.00 : 5ac680: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac683: e8 28 86 01 00 callq 5c4cb0 0.00 : 5ac688: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac68b: e9 b0 fe ff ff jmpq 5ac540 : case T_TidScanState: : result = ExecTidScan((TidScanState *) node); : break; : : case T_SubqueryScanState: : result = ExecSubqueryScan((SubqueryScanState *) node); 0.00 : 5ac690: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac693: e8 d8 c7 01 00 callq 5c8e70 0.00 : 5ac698: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac69b: e9 a0 fe ff ff jmpq 5ac540 : case T_BitmapHeapScanState: : result = ExecBitmapHeapScan((BitmapHeapScanState *) node); : break; : : case T_TidScanState: : result = ExecTidScan((TidScanState *) node); 0.00 : 5ac6a0: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac6a3: e8 58 ca 01 00 callq 5c9100 0.00 : 5ac6a8: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac6ab: e9 90 fe ff ff jmpq 5ac540 : break; : : /* BitmapIndexScanState does not yield tuples */ : : case T_BitmapHeapScanState: : result = ExecBitmapHeapScan((BitmapHeapScanState *) node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:414 1.35 : 5ac6b0: 4c 89 e7 mov %r12,%rdi 0.12 : 5ac6b3: e8 68 e8 00 00 callq 5baf20 0.92 : 5ac6b8: 48 89 c3 mov %rax,%rbx : break; 0.08 : 5ac6bb: e9 80 fe ff ff jmpq 5ac540 : case T_IndexScanState: : result = ExecIndexScan((IndexScanState *) node); : break; : : case T_IndexOnlyScanState: : result = ExecIndexOnlyScan((IndexOnlyScanState *) node); 0.00 : 5ac6c0: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac6c3: e8 b8 33 01 00 callq 5bfa80 0.00 : 5ac6c8: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac6cb: e9 70 fe ff ff jmpq 5ac540 : case T_SeqScanState: : result = ExecSeqScan((SeqScanState *) node); : break; : : case T_IndexScanState: : result = ExecIndexScan((IndexScanState *) node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:404 2.54 : 5ac6d0: 4c 89 e7 mov %r12,%rdi 0.85 : 5ac6d3: e8 08 2e 01 00 callq 5bf4e0 0.98 : 5ac6d8: 48 89 c3 mov %rax,%rbx : break; 0.18 : 5ac6db: e9 60 fe ff ff jmpq 5ac540 : : /* : * scan nodes : */ : case T_SeqScanState: : result = ExecSeqScan((SeqScanState *) node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:400 8.84 : 5ac6e0: 4c 89 e7 mov %r12,%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:400 1.02 : 5ac6e3: e8 28 92 01 00 callq 5c5910 3.85 : 5ac6e8: 48 89 c3 mov %rax,%rbx : break; 0.23 : 5ac6eb: e9 50 fe ff ff jmpq 5ac540 : case T_MergeAppendState: : result = ExecMergeAppend((MergeAppendState *) node); : break; : : case T_RecursiveUnionState: : result = ExecRecursiveUnion((RecursiveUnionState *) node); 0.00 : 5ac6f0: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac6f3: e8 d8 8b 01 00 callq 5c52d0 0.00 : 5ac6f8: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac6fb: e9 40 fe ff ff jmpq 5ac540 : case T_AppendState: : result = ExecAppend((AppendState *) node); : break; : : case T_MergeAppendState: : result = ExecMergeAppend((MergeAppendState *) node); 0.00 : 5ac700: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac703: e8 c8 48 01 00 callq 5c0fd0 0.00 : 5ac708: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac70b: e9 30 fe ff ff jmpq 5ac540 : case T_ModifyTableState: : result = ExecModifyTable((ModifyTableState *) node); : break; : : case T_AppendState: : result = ExecAppend((AppendState *) node); 0.00 : 5ac710: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac713: e8 68 ba 00 00 callq 5b8180 0.00 : 5ac718: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac71b: e9 20 fe ff ff jmpq 5ac540 : case T_ResultState: : result = ExecResult((ResultState *) node); : break; : : case T_ModifyTableState: : result = ExecModifyTable((ModifyTableState *) node); 0.00 : 5ac720: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac723: e8 d8 6a 01 00 callq 5c3200 0.00 : 5ac728: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac72b: e9 10 fe ff ff jmpq 5ac540 : { : /* : * control nodes : */ : case T_ResultState: : result = ExecResult((ResultState *) node); 0.00 : 5ac730: 4c 89 e7 mov %r12,%rdi 0.00 : 5ac733: e8 08 8f 01 00 callq 5c5640 0.00 : 5ac738: 48 89 c3 mov %rax,%rbx : break; 0.00 : 5ac73b: e9 00 fe ff ff jmpq 5ac540 : result = NULL; : break; : } : : if (node->instrument) : InstrStopNode(node->instrument, TupIsNull(result) ? 0.0 : 1.0); 0.05 : 5ac740: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.08 : 5ac744: e9 1c fe ff ff jmpq 5ac565 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 4.84 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 4.59 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 4.34 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 3.24 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 3.13 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.92 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.83 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.72 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:500 2.63 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.52 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.49 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.49 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.41 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:317 2.29 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.25 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:388 2.03 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.84 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:466 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:420 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.64 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.62 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:410 1.62 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.13 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:389 0.97 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.95 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.94 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 0.90 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 0.88 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:330 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:375 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.79 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:327 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:488 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:490 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 0.52 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:484 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000490350 : : * by using the final values of both b and c. b is perhaps a little less : * well mixed than c, however. : */ : Datum : hash_any(register const unsigned char *k, register int keylen) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 0.94 : 490350: 55 push %rbp 0.59 : 490351: 41 89 f2 mov %esi,%r10d : /* Set up the internal state */ : len = keylen; : a = b = c = 0x9e3779b9 + len + 3923095; : : /* If the source pointer is word-aligned, we use word-wide fetches */ : if (((uintptr_t) k & UINT32_ALIGN_MASK) == 0) /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:317 2.31 : 490354: 40 f6 c7 03 test $0x3,%dil : c, : len; : : /* Set up the internal state */ : len = keylen; : a = b = c = 0x9e3779b9 + len + 3923095; 0.02 : 490358: 45 8d 82 50 56 73 9e lea -0x618ca9b0(%r10),%r8d : * by using the final values of both b and c. b is perhaps a little less : * well mixed than c, however. : */ : Datum : hash_any(register const unsigned char *k, register int keylen) : { 0.22 : 49035f: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 2.25 : 490362: 53 push %rbx : /* Set up the internal state */ : len = keylen; : a = b = c = 0x9e3779b9 + len + 3923095; : : /* If the source pointer is word-aligned, we use word-wide fetches */ : if (((uintptr_t) k & UINT32_ALIGN_MASK) == 0) 0.22 : 490363: 0f 84 f7 00 00 00 je 490460 : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.05 : 490369: 83 fe 0b cmp $0xb,%esi : /* fall through */ : case 2: : a += ((uint32) k[1] << 8); : /* fall through */ : case 1: : a += k[0]; 0.02 : 49036c: 45 89 c1 mov %r8d,%r9d /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:410 1.62 : 49036f: 44 89 c2 mov %r8d,%edx : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.04 : 490372: 0f 86 7e 02 00 00 jbe 4905f6 0.00 : 490378: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49037f: 00 : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.04 : 490380: 0f b6 4f 05 movzbl 0x5(%rdi),%ecx 0.07 : 490384: 0f b6 47 06 movzbl 0x6(%rdi),%eax : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.02 : 490388: 0f b6 77 09 movzbl 0x9(%rdi),%esi : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.02 : 49038c: c1 e0 10 shl $0x10,%eax 0.00 : 49038f: c1 e1 08 shl $0x8,%ecx 0.00 : 490392: 01 c1 add %eax,%ecx 0.05 : 490394: 0f b6 47 04 movzbl 0x4(%rdi),%eax : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 490398: c1 e6 08 shl $0x8,%esi : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.00 : 49039b: 01 c1 add %eax,%ecx 0.00 : 49039d: 0f b6 47 07 movzbl 0x7(%rdi),%eax 0.07 : 4903a1: c1 e0 18 shl $0x18,%eax 0.02 : 4903a4: 01 c1 add %eax,%ecx : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.02 : 4903a6: 0f b6 47 0a movzbl 0xa(%rdi),%eax : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.02 : 4903aa: 01 d1 add %edx,%ecx : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.07 : 4903ac: 0f b6 57 01 movzbl 0x1(%rdi),%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 4903b0: c1 e0 10 shl $0x10,%eax 0.00 : 4903b3: 01 c6 add %eax,%esi 0.04 : 4903b5: 0f b6 47 08 movzbl 0x8(%rdi),%eax : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.09 : 4903b9: c1 e2 08 shl $0x8,%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.02 : 4903bc: 01 c6 add %eax,%esi 0.02 : 4903be: 0f b6 47 0b movzbl 0xb(%rdi),%eax 0.02 : 4903c2: c1 e0 18 shl $0x18,%eax 0.11 : 4903c5: 01 c6 add %eax,%esi : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.00 : 4903c7: 0f b6 47 02 movzbl 0x2(%rdi),%eax : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 4903cb: 44 01 c6 add %r8d,%esi : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.07 : 4903ce: c1 e0 10 shl $0x10,%eax 0.05 : 4903d1: 01 c2 add %eax,%edx 0.04 : 4903d3: 0f b6 07 movzbl (%rdi),%eax 0.00 : 4903d6: 01 c2 add %eax,%edx 0.02 : 4903d8: 0f b6 47 03 movzbl 0x3(%rdi),%eax 0.00 : 4903dc: c1 e0 18 shl $0x18,%eax 0.00 : 4903df: 01 c2 add %eax,%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); 0.00 : 4903e1: 89 f0 mov %esi,%eax : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.02 : 4903e3: 44 01 ca add %r9d,%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); 0.14 : 4903e6: c1 c8 1c ror $0x1c,%eax 0.02 : 4903e9: 29 f2 sub %esi,%edx 0.00 : 4903eb: 01 ce add %ecx,%esi 0.04 : 4903ed: 31 c2 xor %eax,%edx 0.02 : 4903ef: 89 d0 mov %edx,%eax 0.02 : 4903f1: 29 d1 sub %edx,%ecx 0.00 : 4903f3: 01 f2 add %esi,%edx 0.05 : 4903f5: c1 c8 1a ror $0x1a,%eax 0.11 : 4903f8: 31 c8 xor %ecx,%eax 0.00 : 4903fa: 89 c1 mov %eax,%ecx 0.02 : 4903fc: 29 c6 sub %eax,%esi 0.00 : 4903fe: 01 d0 add %edx,%eax 0.02 : 490400: c1 c9 18 ror $0x18,%ecx 0.11 : 490403: 31 f1 xor %esi,%ecx 0.00 : 490405: 89 ce mov %ecx,%esi 0.02 : 490407: 29 ca sub %ecx,%edx 0.00 : 490409: 01 c1 add %eax,%ecx 0.09 : 49040b: c1 ce 10 ror $0x10,%esi : k += 12; : len -= 12; 0.11 : 49040e: 41 83 ea 0c sub $0xc,%r10d : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); : k += 12; 0.00 : 490412: 48 83 c7 0c add $0xc,%rdi : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); 0.00 : 490416: 31 d6 xor %edx,%esi 0.00 : 490418: 89 f2 mov %esi,%edx 0.02 : 49041a: 29 f0 sub %esi,%eax 0.02 : 49041c: 44 8d 0c 0e lea (%rsi,%rcx,1),%r9d 0.00 : 490420: c1 ca 0d ror $0xd,%edx 0.13 : 490423: 31 c2 xor %eax,%edx 0.00 : 490425: 41 89 d0 mov %edx,%r8d 0.05 : 490428: 29 d1 sub %edx,%ecx 0.00 : 49042a: 44 01 ca add %r9d,%edx 0.04 : 49042d: 41 c1 c8 1c ror $0x1c,%r8d 0.09 : 490431: 41 31 c8 xor %ecx,%r8d : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.00 : 490434: 41 83 fa 0b cmp $0xb,%r10d 0.00 : 490438: 0f 87 42 ff ff ff ja 490380 0.00 : 49043e: 45 89 cb mov %r9d,%r11d 0.00 : 490441: 89 d6 mov %edx,%esi 0.05 : 490443: 44 89 c3 mov %r8d,%ebx : case 1: : a += ((uint32) k[0] << 24); : /* case 0: nothing left to add */ : } : #else /* !WORDS_BIGENDIAN */ : switch (len) /* all the case statements fall through */ 0.04 : 490446: 41 83 fa 0b cmp $0xb,%r10d 0.00 : 49044a: 0f 87 01 01 00 00 ja 490551 0.00 : 490450: 44 89 d0 mov %r10d,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:466 1.84 : 490453: ff 24 c5 18 22 7b 00 jmpq *0x7b2218(,%rax,8) 0.00 : 49045a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) 0.38 : 490460: 83 fe 0b cmp $0xb,%esi 0.27 : 490463: 45 89 c1 mov %r8d,%r9d /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 0.61 : 490466: 44 89 c1 mov %r8d,%ecx 0.14 : 490469: 0f 86 79 01 00 00 jbe 4905e8 0.18 : 49046f: 90 nop : { : a += ka[0]; : b += ka[1]; : c += ka[2]; 0.00 : 490470: 44 89 c6 mov %r8d,%esi /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:327 0.77 : 490473: 03 77 08 add 0x8(%rdi),%esi : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) : { : a += ka[0]; 0.34 : 490476: 44 89 c8 mov %r9d,%eax 0.09 : 490479: 03 07 add (%rdi),%eax : b += ka[1]; 0.05 : 49047b: 03 4f 04 add 0x4(%rdi),%ecx : c += ka[2]; : mix(a, b, c); : ka += 3; : len -= 12; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:330 0.88 : 49047e: 41 83 ea 0c sub $0xc,%r10d : { : a += ka[0]; : b += ka[1]; : c += ka[2]; : mix(a, b, c); : ka += 3; 0.09 : 490482: 48 83 c7 0c add $0xc,%rdi : while (len >= 12) : { : a += ka[0]; : b += ka[1]; : c += ka[2]; : mix(a, b, c); 0.04 : 490486: 89 f2 mov %esi,%edx 0.20 : 490488: 29 f0 sub %esi,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.85 : 49048a: c1 ca 1c ror $0x1c,%edx 0.27 : 49048d: 01 ce add %ecx,%esi 0.02 : 49048f: 31 d0 xor %edx,%eax 0.70 : 490491: 89 c2 mov %eax,%edx 0.05 : 490493: 29 c1 sub %eax,%ecx 0.13 : 490495: 01 f0 add %esi,%eax 0.04 : 490497: c1 ca 1a ror $0x1a,%edx 1.08 : 49049a: 31 ca xor %ecx,%edx 0.11 : 49049c: 89 d1 mov %edx,%ecx 0.38 : 49049e: 29 d6 sub %edx,%esi 0.32 : 4904a0: 01 c2 add %eax,%edx 0.65 : 4904a2: c1 c9 18 ror $0x18,%ecx 1.13 : 4904a5: 31 f1 xor %esi,%ecx 0.05 : 4904a7: 89 ce mov %ecx,%esi 0.79 : 4904a9: 29 c8 sub %ecx,%eax 0.25 : 4904ab: 01 d1 add %edx,%ecx 0.67 : 4904ad: c1 ce 10 ror $0x10,%esi 0.95 : 4904b0: 31 c6 xor %eax,%esi 0.20 : 4904b2: 89 f0 mov %esi,%eax 0.65 : 4904b4: 29 f2 sub %esi,%edx 0.05 : 4904b6: 44 8d 0c 0e lea (%rsi,%rcx,1),%r9d 0.11 : 4904ba: c1 c8 0d ror $0xd,%eax 1.64 : 4904bd: 31 d0 xor %edx,%eax 0.13 : 4904bf: 41 89 c0 mov %eax,%r8d 0.97 : 4904c2: 29 c1 sub %eax,%ecx 0.16 : 4904c4: 41 c1 c8 1c ror $0x1c,%r8d 1.66 : 4904c8: 41 31 c8 xor %ecx,%r8d : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) 0.02 : 4904cb: 41 83 fa 0b cmp $0xb,%r10d : { : a += ka[0]; : b += ka[1]; : c += ka[2]; : mix(a, b, c); 0.07 : 4904cf: 42 8d 0c 08 lea (%rax,%r9,1),%ecx : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) 0.04 : 4904d3: 77 9b ja 490470 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 0.90 : 4904d5: 45 89 cb mov %r9d,%r11d 0.13 : 4904d8: 89 ce mov %ecx,%esi 0.05 : 4904da: 44 89 c3 mov %r8d,%ebx : case 1: : a += ((uint32) k[0] << 24); : /* case 0: nothing left to add */ : } : #else /* !WORDS_BIGENDIAN */ : switch (len) 0.13 : 4904dd: 41 83 fa 0b cmp $0xb,%r10d 0.00 : 4904e1: 77 6e ja 490551 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:375 0.86 : 4904e3: 44 89 d0 mov %r10d,%eax 0.05 : 4904e6: ff 24 c5 78 22 7b 00 jmpq *0x7b2278(,%rax,8) : } : #else /* !WORDS_BIGENDIAN */ : switch (len) /* all the case statements fall through */ : { : case 11: : c += ((uint32) k[10] << 24); 0.00 : 4904ed: 0f b6 47 0a movzbl 0xa(%rdi),%eax 0.02 : 4904f1: c1 e0 18 shl $0x18,%eax 0.00 : 4904f4: 42 8d 1c 00 lea (%rax,%r8,1),%ebx : case 10: : c += ((uint32) k[9] << 16); 0.02 : 4904f8: 0f b6 47 09 movzbl 0x9(%rdi),%eax 0.00 : 4904fc: c1 e0 10 shl $0x10,%eax 0.00 : 4904ff: 01 c3 add %eax,%ebx : case 9: : c += ((uint32) k[8] << 8); 0.05 : 490501: 0f b6 47 08 movzbl 0x8(%rdi),%eax 0.02 : 490505: c1 e0 08 shl $0x8,%eax 0.00 : 490508: 01 c3 add %eax,%ebx : /* the lowest byte of c is reserved for the length */ : case 8: : b += ((uint32) k[7] << 24); 0.09 : 49050a: 0f b6 47 07 movzbl 0x7(%rdi),%eax 0.00 : 49050e: c1 e0 18 shl $0x18,%eax 0.00 : 490511: 8d 34 10 lea (%rax,%rdx,1),%esi : case 7: : b += ((uint32) k[6] << 16); 0.07 : 490514: 0f b6 47 06 movzbl 0x6(%rdi),%eax 0.02 : 490518: c1 e0 10 shl $0x10,%eax 0.02 : 49051b: 01 c6 add %eax,%esi : case 6: : b += ((uint32) k[5] << 8); 0.22 : 49051d: 0f b6 47 05 movzbl 0x5(%rdi),%eax 0.09 : 490521: c1 e0 08 shl $0x8,%eax 0.00 : 490524: 01 c6 add %eax,%esi : case 5: : b += k[4]; 0.13 : 490526: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.07 : 49052a: 01 c6 add %eax,%esi : case 4: : a += ((uint32) k[3] << 24); 0.34 : 49052c: 0f b6 47 03 movzbl 0x3(%rdi),%eax 0.02 : 490530: c1 e0 18 shl $0x18,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:484 0.52 : 490533: 46 8d 1c 08 lea (%rax,%r9,1),%r11d : case 3: : a += ((uint32) k[2] << 16); 0.05 : 490537: 0f b6 47 02 movzbl 0x2(%rdi),%eax 0.20 : 49053b: c1 e0 10 shl $0x10,%eax 0.00 : 49053e: 41 01 c3 add %eax,%r11d : case 2: : a += ((uint32) k[1] << 8); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:488 0.63 : 490541: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.02 : 490545: c1 e0 08 shl $0x8,%eax 0.13 : 490548: 41 01 c3 add %eax,%r11d : case 1: : a += k[0]; 0.41 : 49054b: 0f b6 07 movzbl (%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:490 0.56 : 49054e: 41 01 c3 add %eax,%r11d : /* case 0: nothing left to add */ : } : #endif /* WORDS_BIGENDIAN */ : } : : final(a, b, c); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.75 : 490551: 89 da mov %ebx,%edx 0.29 : 490553: 89 f0 mov %esi,%eax 0.45 : 490555: 31 f2 xor %esi,%edx 1.08 : 490557: c1 c8 12 ror $0x12,%eax 2.49 : 49055a: 29 c2 sub %eax,%edx 0.25 : 49055c: 89 d1 mov %edx,%ecx 1.49 : 49055e: 89 d0 mov %edx,%eax 1.19 : 490560: c1 c8 15 ror $0x15,%eax 2.52 : 490563: 44 31 d9 xor %r11d,%ecx 0.56 : 490566: 29 c1 sub %eax,%ecx 1.39 : 490568: 89 c8 mov %ecx,%eax 1.62 : 49056a: 31 ce xor %ecx,%esi 0.32 : 49056c: c1 c8 07 ror $0x7,%eax 4.34 : 49056f: 29 c6 sub %eax,%esi 0.20 : 490571: 89 f0 mov %esi,%eax 2.29 : 490573: 31 d0 xor %edx,%eax 2.41 : 490575: 89 f2 mov %esi,%edx 0.11 : 490577: c1 ca 10 ror $0x10,%edx 4.84 : 49057a: 29 d0 sub %edx,%eax 0.31 : 49057c: 89 c2 mov %eax,%edx 3.24 : 49057e: 31 ca xor %ecx,%edx 2.63 : 490580: 89 c1 mov %eax,%ecx 0.16 : 490582: c1 c9 1c ror $0x1c,%ecx 4.59 : 490585: 29 ca sub %ecx,%edx 0.43 : 490587: 89 d1 mov %edx,%ecx 2.92 : 490589: c1 ca 12 ror $0x12,%edx 2.83 : 49058c: 31 f1 xor %esi,%ecx 0.22 : 49058e: 29 d1 sub %edx,%ecx 2.03 : 490590: 31 c8 xor %ecx,%eax 2.49 : 490592: c1 c9 08 ror $0x8,%ecx 3.13 : 490595: 29 c8 sub %ecx,%eax : : /* report the result */ : return UInt32GetDatum(c); : } 0.45 : 490597: 5b pop %rbx 0.02 : 490598: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:500 2.72 : 490599: c3 retq : case 8: : b += ka[1]; : a += ka[0]; : break; : case 7: : b += ((uint32) k[6] << 16); 0.00 : 49059a: 0f b6 47 06 movzbl 0x6(%rdi),%eax 0.00 : 49059e: c1 e0 10 shl $0x10,%eax 0.00 : 4905a1: 8d 34 08 lea (%rax,%rcx,1),%esi : /* fall through */ : case 6: : b += ((uint32) k[5] << 8); 0.00 : 4905a4: 0f b6 47 05 movzbl 0x5(%rdi),%eax 0.02 : 4905a8: c1 e0 08 shl $0x8,%eax 0.00 : 4905ab: 01 c6 add %eax,%esi : /* fall through */ : case 5: : b += k[4]; 0.02 : 4905ad: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 4905b1: 01 c6 add %eax,%esi : /* fall through */ : case 4: : a += ka[0]; 0.18 : 4905b3: 45 89 cb mov %r9d,%r11d 0.02 : 4905b6: 44 03 1f add (%rdi),%r11d : break; 0.02 : 4905b9: eb 96 jmp 490551 : } : #else /* !WORDS_BIGENDIAN */ : switch (len) : { : case 11: : c += ((uint32) k[10] << 24); 0.00 : 4905bb: 0f b6 47 0a movzbl 0xa(%rdi),%eax 0.00 : 4905bf: c1 e0 18 shl $0x18,%eax 0.00 : 4905c2: 42 8d 1c 00 lea (%rax,%r8,1),%ebx : /* fall through */ : case 10: : c += ((uint32) k[9] << 16); 0.00 : 4905c6: 0f b6 47 09 movzbl 0x9(%rdi),%eax 0.00 : 4905ca: c1 e0 10 shl $0x10,%eax 0.00 : 4905cd: 01 c3 add %eax,%ebx : /* fall through */ : case 9: : c += ((uint32) k[8] << 8); 0.00 : 4905cf: 0f b6 47 08 movzbl 0x8(%rdi),%eax 0.00 : 4905d3: c1 e0 08 shl $0x8,%eax 0.00 : 4905d6: 01 c3 add %eax,%ebx : /* the lowest byte of c is reserved for the length */ : /* fall through */ : case 8: : b += ka[1]; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:388 2.22 : 4905d8: 89 ce mov %ecx,%esi : a += ka[0]; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:389 1.03 : 4905da: 45 89 cb mov %r9d,%r11d : case 9: : c += ((uint32) k[8] << 8); : /* the lowest byte of c is reserved for the length */ : /* fall through */ : case 8: : b += ka[1]; 0.07 : 4905dd: 03 77 04 add 0x4(%rdi),%esi : a += ka[0]; 0.32 : 4905e0: 44 03 1f add (%rdi),%r11d : break; 0.25 : 4905e3: e9 69 ff ff ff jmpq 490551 : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) 0.09 : 4905e8: 45 89 c3 mov %r8d,%r11d 0.02 : 4905eb: 44 89 c6 mov %r8d,%esi 0.00 : 4905ee: 44 89 c3 mov %r8d,%ebx 0.04 : 4905f1: e9 e7 fe ff ff jmpq 4904dd : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.05 : 4905f6: 45 89 c3 mov %r8d,%r11d 0.02 : 4905f9: 44 89 c6 mov %r8d,%esi /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:420 1.67 : 4905fc: 44 89 c3 mov %r8d,%ebx 0.02 : 4905ff: e9 42 fe ff ff jmpq 490446 : /* fall through */ : case 4: : a += ka[0]; : break; : case 3: : a += ((uint32) k[2] << 16); 0.02 : 490604: 0f b6 47 02 movzbl 0x2(%rdi),%eax 0.00 : 490608: c1 e0 10 shl $0x10,%eax 0.00 : 49060b: 46 8d 1c 08 lea (%rax,%r9,1),%r11d 0.00 : 49060f: e9 2d ff ff ff jmpq 490541 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 13.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 7.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:993 7.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:889 5.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:888 4.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:940 2.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 2.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:508 2.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:540 2.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:944 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:551 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:516 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:856 0.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:973 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:976 0.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1007 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:973 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:932 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:911 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782f20 : : * degrading performance; or CHashAllocate may enter a tight loop until such : * time as an element is deleted). : */ : bool : CHashInsert(CHashTable table, void *entry) : { 0.19 : 782f20: 55 push %rbp 0.50 : 782f21: 48 89 e5 mov %rsp,%rbp 0.02 : 782f24: 41 57 push %r15 0.21 : 782f26: 41 56 push %r14 0.02 : 782f28: 41 55 push %r13 0.12 : 782f2a: 41 54 push %r12 0.03 : 782f2c: 49 89 fc mov %rdi,%r12 0.00 : 782f2f: 53 push %rbx 0.00 : 782f30: 48 83 ec 38 sub $0x38,%rsp 0.02 : 782f34: 48 89 75 a0 mov %rsi,-0x60(%rbp) : uint32 hashcode = hash_any(entry, table->desc.key_size); 0.02 : 782f38: 0f b7 77 0e movzwl 0xe(%rdi),%esi 0.05 : 782f3c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 782f40: e8 0b d4 d0 ff callq 490350 0.00 : 782f45: 89 45 a8 mov %eax,-0x58(%rbp) : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 782f48: 41 23 44 24 10 and 0x10(%r12),%eax : { : uint32 f_current; : CHashPtr new; : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.10 : 782f4d: 8b 35 b5 5b 3e 00 mov 0x3e5bb5(%rip),%esi # b68b08 0.02 : 782f53: 41 0f b7 7c 24 16 movzwl 0x16(%r12),%edi : */ : bool : CHashInsert(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 782f59: 89 45 ac mov %eax,-0x54(%rbp) : CHashPtr *b = &table->bucket[bucket]; 0.00 : 782f5c: 89 c0 mov %eax,%eax 0.03 : 782f5e: 4c 8d 3c 85 00 00 00 lea 0x0(,%rax,4),%r15 0.00 : 782f65: 00 : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : : /* If this process hasn't initialized gc_next yet, do that now. */ : if (table->gc_pid != MyProcPid) 0.02 : 782f66: 8b 05 78 cd 43 00 mov 0x43cd78(%rip),%eax # bbfce4 : bool : CHashInsert(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; : CHashPtr *b = &table->bucket[bucket]; 0.09 : 782f6c: 4d 03 7c 24 20 add 0x20(%r12),%r15 : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : : /* If this process hasn't initialized gc_next yet, do that now. */ : if (table->gc_pid != MyProcPid) 0.10 : 782f71: 41 39 44 24 38 cmp %eax,0x38(%r12) 0.00 : 782f76: 74 26 je 782f9e : { : table->gc_pid = MyProcPid; : table->gc_next = ((uint32) MyProcPid) % CHashTableNGarbage(table); 0.00 : 782f78: 41 0f b6 4c 24 14 movzbl 0x14(%r12),%ecx 0.00 : 782f7e: 41 8b 54 24 10 mov 0x10(%r12),%edx : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : : /* If this process hasn't initialized gc_next yet, do that now. */ : if (table->gc_pid != MyProcPid) : { : table->gc_pid = MyProcPid; 0.00 : 782f83: 41 89 44 24 38 mov %eax,0x38(%r12) : table->gc_next = ((uint32) MyProcPid) % CHashTableNGarbage(table); 0.00 : 782f88: 8b 05 56 cd 43 00 mov 0x43cd56(%rip),%eax # bbfce4 0.00 : 782f8e: 83 c2 01 add $0x1,%edx 0.00 : 782f91: d3 ea shr %cl,%edx 0.00 : 782f93: 89 d1 mov %edx,%ecx 0.00 : 782f95: 31 d2 xor %edx,%edx 0.00 : 782f97: f7 f1 div %ecx 0.00 : 782f99: 41 89 54 24 3c mov %edx,0x3c(%r12) : { : uint32 f_current; : CHashPtr new; : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.00 : 782f9e: 0f b7 cf movzwl %di,%ecx 0.05 : 782fa1: 89 f0 mov %esi,%eax 0.00 : 782fa3: 31 d2 xor %edx,%edx 0.09 : 782fa5: f7 f1 div %ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:856 1.17 : 782fa7: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 782fad: 49 8b 74 24 28 mov 0x28(%r12),%rsi : /* If list is empty, fail. */ : if (CHashPtrIsInvalid(garbage)) : return InvalidCHashPtr; : : /* If we're unable to empty the list via compare-and-swap, fail. */ : if (!__sync_bool_compare_and_swap(b, garbage, InvalidCHashPtr)) 0.00 : 782fb2: 41 bb fe ff ff ff mov $0xfffffffe,%r11d : * If we attempt to pop the free-list and fail, we retry immediately : * with the same free-list. This reduces the frequency with which : * we're obliged to update our hazard pointers, which is a material : * savings due to the associated memory barrier. : */ : b = CHashTableGetFreeList(table, f_current); 0.05 : 782fb8: 44 8d 42 01 lea 0x1(%rdx),%r8d 0.05 : 782fbc: 44 89 c0 mov %r8d,%eax 0.15 : 782fbf: d3 e0 shl %cl,%eax 0.33 : 782fc1: 01 d0 add %edx,%eax 0.00 : 782fc3: 48 8d 0c 86 lea (%rsi,%rax,4),%rcx : MyProc->hazard[0] = b; 0.17 : 782fc7: 48 8b 05 7a a9 3f 00 mov 0x3fa97a(%rip),%rax # b7d948 0.00 : 782fce: 48 89 88 e8 02 00 00 mov %rcx,0x2e8(%rax) : pg_memory_barrier(); 0.21 : 782fd5: f0 83 04 24 00 lock addl $0x0,(%rsp) : new = *b; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:888 5.69 : 782fda: 8b 19 mov (%rcx),%ebx : while (!CHashPtrIsInvalid(new)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:889 7.47 : 782fdc: 83 fb fd cmp $0xfffffffd,%ebx 0.00 : 782fdf: 76 23 jbe 783004 0.27 : 782fe1: e9 52 01 00 00 jmpq 783138 0.00 : 782fe6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 782fed: 00 00 00 : * barrier here. : */ : pg_read_barrier_depends(); : if (__sync_bool_compare_and_swap(b, new, n->un.gcnext)) : return new; : CHashTableIncrementStatistic(table, CHS_Allocate_Fail); 0.00 : 782ff0: 49 83 84 24 a0 00 00 addq $0x1,0xa0(%r12) 0.00 : 782ff7: 00 01 : new = *b; 0.02 : 782ff9: 8b 19 mov (%rcx),%ebx : */ : b = CHashTableGetFreeList(table, f_current); : MyProc->hazard[0] = b; : pg_memory_barrier(); : new = *b; : while (!CHashPtrIsInvalid(new)) 0.00 : 782ffb: 83 fb fd cmp $0xfffffffd,%ebx 0.00 : 782ffe: 0f 87 34 01 00 00 ja 783138 : { : CHashNode *n = CHashTableGetNode(table, new); 0.43 : 783004: 89 de mov %ebx,%esi : * n is computed from table->freelist[f_current], which could : * be modified by concurrent activity, so we need a dependency : * barrier here. : */ : pg_read_barrier_depends(); : if (__sync_bool_compare_and_swap(b, new, n->un.gcnext)) 0.12 : 783006: 49 8b 44 24 30 mov 0x30(%r12),%rax : MyProc->hazard[0] = b; : pg_memory_barrier(); : new = *b; : while (!CHashPtrIsInvalid(new)) : { : CHashNode *n = CHashTableGetNode(table, new); 0.09 : 78300b: d1 ee shr %esi : * n is computed from table->freelist[f_current], which could : * be modified by concurrent activity, so we need a dependency : * barrier here. : */ : pg_read_barrier_depends(); : if (__sync_bool_compare_and_swap(b, new, n->un.gcnext)) 0.02 : 78300d: 89 f2 mov %esi,%edx 0.03 : 78300f: 41 0f af 54 24 1c imul 0x1c(%r12),%edx 0.26 : 783015: 8b 54 10 04 mov 0x4(%rax,%rdx,1),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 29.13 : 783019: 89 d8 mov %ebx,%eax 0.00 : 78301b: f0 0f b1 11 lock cmpxchg %edx,(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 2.93 : 78301f: 75 cf jne 782ff0 : * Allocate and initialize a new entry, on the assumption that the insert : * will succeed. If it ends up failing, we must be sure to put this back : * on some free list, lest it be permanently leaked. : */ : new = CHashAllocate(table); : nnew = CHashTableGetNode(table, new); 0.00 : 783021: 41 89 f5 mov %esi,%r13d : nnew->un.hashcode = hashcode; 0.00 : 783024: 8b 4d a8 mov -0x58(%rbp),%ecx : * Allocate and initialize a new entry, on the assumption that the insert : * will succeed. If it ends up failing, we must be sure to put this back : * on some free list, lest it be permanently leaked. : */ : new = CHashAllocate(table); : nnew = CHashTableGetNode(table, new); 0.03 : 783027: 45 0f af 6c 24 1c imul 0x1c(%r12),%r13d 0.00 : 78302d: 4d 03 6c 24 30 add 0x30(%r12),%r13 : nnew->un.hashcode = hashcode; 0.00 : 783032: 41 89 4d 04 mov %ecx,0x4(%r13) : memcpy(CHashNodeGetItem(nnew), entry, table->desc.element_size); 0.38 : 783036: 41 0f b7 54 24 0c movzwl 0xc(%r12),%edx 0.05 : 78303c: 49 8d 7d 08 lea 0x8(%r13),%rdi 0.00 : 783040: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.05 : 783044: e8 a7 6b ce ff callq 469bf0 : : /* Prevent garbage collection for this bucket. */ : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.07 : 783049: 41 0f b6 4c 24 14 movzbl 0x14(%r12),%ecx 0.00 : 78304f: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 783052: d3 ea shr %cl,%edx 0.15 : 783054: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 78305a: 89 d0 mov %edx,%eax 0.00 : 78305c: d3 e8 shr %cl,%eax 0.07 : 78305e: 01 d0 add %edx,%eax 0.02 : 783060: 48 8b 15 e1 a8 3f 00 mov 0x3fa8e1(%rip),%rdx # b7d948 0.05 : 783067: 48 c1 e0 02 shl $0x2,%rax 0.00 : 78306b: 49 03 44 24 28 add 0x28(%r12),%rax 0.02 : 783070: 48 89 82 e8 02 00 00 mov %rax,0x2e8(%rdx) : pg_memory_barrier(); 0.00 : 783077: f0 83 04 24 00 lock addl $0x0,(%rsp) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:508 2.62 : 78307c: 4c 8d 75 b0 lea -0x50(%rbp),%r14 0.00 : 783080: eb 20 jmp 7830a2 0.00 : 783082: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * where N is the number of buckets and M is the number of elements : * in the table. Even for a quite modestly size table this is likely : * to exceed the number of CPU cores. : */ : Assert(!CHashPtrIsMarked(scan.target)); : nnew->next = scan.target; 0.07 : 783088: 8b 45 b0 mov -0x50(%rbp),%eax 0.02 : 78308b: 41 89 45 00 mov %eax,0x0(%r13) : if (!__sync_bool_compare_and_swap(scan.pointer_to_target, 0.00 : 78308f: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.03 : 783093: 8b 45 b0 mov -0x50(%rbp),%eax 0.12 : 783096: f0 0f b1 1a lock cmpxchg %ebx,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:540 2.62 : 78309a: 74 49 je 7830e5 : scan.target, new)) : { : CHashTableIncrementStatistic(table, CHS_Insert_Retry); 0.00 : 78309c: 49 83 44 24 60 01 addq $0x1,0x60(%r12) : * Scan the bucket. If we don't find a match, use compare-and-swap to : * insert the new node at the insert position. If we do find a match, : * return the data to the caller. : */ : retry: : CHashBucketScan(table, b, hashcode, entry, &scan); 0.02 : 7830a2: 48 8b 4d a0 mov -0x60(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:516 1.56 : 7830a6: 8b 55 a8 mov -0x58(%rbp),%edx 0.00 : 7830a9: 4d 89 f0 mov %r14,%r8 0.00 : 7830ac: 4c 89 fe mov %r15,%rsi 0.00 : 7830af: 4c 89 e7 mov %r12,%rdi 0.05 : 7830b2: e8 e9 fb ff ff callq 782ca0 : if (scan.found) 0.00 : 7830b7: 80 7d c8 00 cmpb $0x0,-0x38(%rbp) 0.00 : 7830bb: 74 cb je 783088 : memcpy(((char *) entry) + table->desc.key_size, 0.00 : 7830bd: 41 0f b7 44 24 0e movzwl 0xe(%r12),%eax 0.00 : 7830c3: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 7830c7: 41 0f b7 54 24 0c movzwl 0xc(%r12),%edx 0.00 : 7830cd: 0f b7 f0 movzwl %ax,%esi 0.00 : 7830d0: 48 01 f7 add %rsi,%rdi 0.00 : 7830d3: 48 83 c6 08 add $0x8,%rsi 0.00 : 7830d7: 48 03 75 c0 add -0x40(%rbp),%rsi 0.00 : 7830db: 29 c2 sub %eax,%edx 0.00 : 7830dd: 48 63 d2 movslq %edx,%rdx 0.00 : 7830e0: e8 0b 6b ce ff callq 469bf0 : } : } : : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); 0.00 : 7830e5: f0 83 04 24 00 lock addl $0x0,(%rsp) : MyProc->hazard[0] = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:551 2.07 : 7830ea: 48 8b 05 57 a8 3f 00 mov 0x3fa857(%rip),%rax # b7d948 0.00 : 7830f1: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 7830f8: 00 00 00 00 : * guarantees that any allocation still in progress at the time this : * element makes it back to the freelist is trying to allocate some : * other node. : */ : CHashTableIncrementStatistic(table, CHS_Insert); : if (scan.found) 0.00 : 7830fc: 31 c0 xor %eax,%eax : * progress at the time we popped the freelist has completed. This : * guarantees that any allocation still in progress at the time this : * element makes it back to the freelist is trying to allocate some : * other node. : */ : CHashTableIncrementStatistic(table, CHS_Insert); 0.00 : 7830fe: 49 83 44 24 50 01 addq $0x1,0x50(%r12) : if (scan.found) 0.09 : 783104: 80 7d c8 00 cmpb $0x0,-0x38(%rbp) 0.02 : 783108: 74 17 je 783121 : { : CHashTableIncrementStatistic(table, CHS_Insert_Failed); 0.00 : 78310a: 49 83 44 24 58 01 addq $0x1,0x58(%r12) : CHashAddToGarbage(table, bucket, new); 0.00 : 783110: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 783113: 89 da mov %ebx,%edx 0.00 : 783115: 4c 89 e7 mov %r12,%rdi 0.00 : 783118: e8 33 fb ff ff callq 782c50 0.00 : 78311d: 0f b6 45 c8 movzbl -0x38(%rbp),%eax 0.00 : 783121: 84 c0 test %al,%al 0.09 : 783123: 0f 94 c0 sete %al : } : : /* The insert succeeded if and only if no duplicate was found. */ : return !scan.found; : } 0.00 : 783126: 48 83 c4 38 add $0x38,%rsp 0.00 : 78312a: 5b pop %rbx 0.00 : 78312b: 41 5c pop %r12 0.09 : 78312d: 41 5d pop %r13 0.00 : 78312f: 41 5e pop %r14 0.00 : 783131: 41 5f pop %r15 0.00 : 783133: c9 leaveq 0.05 : 783134: c3 retq 0.00 : 783135: 0f 1f 00 nopl (%rax) : CHashPtr new; : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.12 : 783138: 41 0f b7 7c 24 16 movzwl 0x16(%r12),%edi 0.24 : 78313e: 8b 05 c4 59 3e 00 mov 0x3e59c4(%rip),%eax # b68b08 0.19 : 783144: 31 d2 xor %edx,%edx : fh = CHashTableGetFreeList(table, f_home); 0.02 : 783146: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 78314c: 4d 8b 4c 24 28 mov 0x28(%r12),%r9 : CHashPtr new; : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.14 : 783151: f7 f7 div %edi : fh = CHashTableGetFreeList(table, f_home); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:932 0.55 : 783153: 8d 42 01 lea 0x1(%rdx),%eax 0.07 : 783156: d3 e0 shl %cl,%eax : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.12 : 783158: 41 0f b6 4c 24 14 movzbl 0x14(%r12),%ecx : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); 0.00 : 78315e: 01 d0 add %edx,%eax 0.02 : 783160: 4c 8d 14 85 00 00 00 lea 0x0(,%rax,4),%r10 0.00 : 783167: 00 : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.02 : 783168: 41 8b 44 24 3c mov 0x3c(%r12),%eax 0.05 : 78316d: 8d 50 01 lea 0x1(%rax),%edx 0.09 : 783170: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.03 : 783175: 8d 70 01 lea 0x1(%rax),%esi 0.07 : 783178: 89 d0 mov %edx,%eax 0.02 : 78317a: 31 d2 xor %edx,%edx 0.00 : 78317c: d3 ee shr %cl,%esi : b = CHashTableGetGarbageList(table, table->gc_next); 0.15 : 78317e: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.10 : 783184: f7 f6 div %esi : b = CHashTableGetGarbageList(table, table->gc_next); 0.48 : 783186: 4c 89 ce mov %r9,%rsi 0.07 : 783189: 89 d0 mov %edx,%eax : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.02 : 78318b: 41 89 54 24 3c mov %edx,0x3c(%r12) : b = CHashTableGetGarbageList(table, table->gc_next); 0.09 : 783190: d3 e8 shr %cl,%eax 0.10 : 783192: 01 d0 add %edx,%eax 0.07 : 783194: 49 8d 14 81 lea (%r9,%rax,4),%rdx : garbage = *b; 0.07 : 783198: 8b 1a mov (%rdx),%ebx : : /* If list is empty, fail. */ : if (CHashPtrIsInvalid(garbage)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:940 4.68 : 78319a: 83 fb fd cmp $0xfffffffd,%ebx 0.00 : 78319d: 76 11 jbe 7831b0 : new = CHashAllocateViaGC(table); : if (!CHashPtrIsInvalid(new)) : return new; : : /* Advance to next freelist. */ : f_current = (f_current + 1) % CHashTableNFreeLists(table); 0.09 : 78319f: 44 89 c0 mov %r8d,%eax 0.03 : 7831a2: 31 d2 xor %edx,%edx 0.00 : 7831a4: f7 f7 div %edi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:911 0.53 : 7831a6: e9 0d fe ff ff jmpq 782fb8 0.00 : 7831ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* If list is empty, fail. */ : if (CHashPtrIsInvalid(garbage)) : return InvalidCHashPtr; : : /* If we're unable to empty the list via compare-and-swap, fail. */ : if (!__sync_bool_compare_and_swap(b, garbage, InvalidCHashPtr)) 0.10 : 7831b0: 89 d8 mov %ebx,%eax 0.03 : 7831b2: f0 44 0f b1 1a lock cmpxchg %r11d,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:944 2.11 : 7831b7: 74 1c je 7831d5 : { : CHashTableIncrementStatistic(table, CHS_Garbage_Dequeue_Fail); 0.00 : 7831b9: 49 83 84 24 b0 00 00 addq $0x1,0xb0(%r12) 0.00 : 7831c0: 00 01 0.00 : 7831c2: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 7831c7: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 7831cd: 41 0f b7 7c 24 16 movzwl 0x16(%r12),%edi 0.00 : 7831d3: eb ca jmp 78319f : * requeues the garbage if it's not immediately recycleable, but : * it's not clear that we need such a thing. On the flip side we : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); 0.00 : 7831d5: 49 83 84 24 b8 00 00 addq $0x1,0xb8(%r12) 0.00 : 7831dc: 00 01 : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); 0.02 : 7831de: 4f 8d 04 11 lea (%r9,%r10,1),%r8 : * it's not clear that we need such a thing. On the flip side we : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); : MyProc->hazard[0] = NULL; 0.00 : 7831e2: 48 8b 05 5f a7 3f 00 mov 0x3fa75f(%rip),%rax # b7d948 0.00 : 7831e9: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 7831f0: 00 00 00 00 : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 7831f4: 48 8b 35 5d a7 3f 00 mov 0x3fa75d(%rip),%rsi # b7d958 0.05 : 7831fb: 8b 46 10 mov 0x10(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.82 : 7831fe: 85 c0 test %eax,%eax 0.03 : 783200: 74 5f je 783261 0.02 : 783202: 31 ff xor %edi,%edi 0.00 : 783204: eb 1a jmp 783220 0.00 : 783206: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 78320d: 00 00 00 : { : volatile PGPROC *proc = &ProcGlobal->allProcs[i]; : void *hazard; : : hazard = proc->hazard[0]; : if (hazard == b || hazard == fh) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 0.94 : 783210: 49 39 c8 cmp %rcx,%r8 0.00 : 783213: 74 23 je 783238 : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); : MyProc->hazard[0] = NULL; : for (i = 0; i < ProcGlobal->allProcCount; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.87 : 783215: 83 c7 01 add $0x1,%edi 0.15 : 783218: 3b 7e 10 cmp 0x10(%rsi),%edi 0.00 : 78321b: 73 44 jae 783261 0.69 : 78321d: 0f 1f 00 nopl (%rax) : { : volatile PGPROC *proc = &ProcGlobal->allProcs[i]; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:973 0.58 : 783220: 89 f8 mov %edi,%eax 0.77 : 783222: 48 69 c0 f0 02 00 00 imul $0x2f0,%rax,%rax 0.36 : 783229: 48 03 06 add (%rsi),%rax : void *hazard; : : hazard = proc->hazard[0]; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:976 0.67 : 78322c: 48 8b 88 e8 02 00 00 mov 0x2e8(%rax),%rcx : if (hazard == b || hazard == fh) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 13.92 : 783233: 48 39 ca cmp %rcx,%rdx 0.00 : 783236: 75 d8 jne 783210 : { : CHashTableIncrementStatistic(table, CHS_GC_Spin); 0.00 : 783238: 49 83 84 24 c0 00 00 addq $0x1,0xc0(%r12) 0.00 : 78323f: 00 01 : do : { : hazard = proc->hazard[0]; 0.00 : 783241: 48 8b 88 e8 02 00 00 mov 0x2e8(%rax),%rcx : } while (hazard == b || hazard == fh); 0.00 : 783248: 48 39 ca cmp %rcx,%rdx 0.00 : 78324b: 74 f4 je 783241 0.00 : 78324d: 49 39 c8 cmp %rcx,%r8 0.00 : 783250: 74 ef je 783241 0.00 : 783252: 48 8b 35 ff a6 3f 00 mov 0x3fa6ff(%rip),%rsi # b7d958 : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); : MyProc->hazard[0] = NULL; : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 783259: 83 c7 01 add $0x1,%edi 0.00 : 78325c: 3b 7e 10 cmp 0x10(%rsi),%edi 0.00 : 78325f: 72 bf jb 783220 : } : } : : /* Remove one item from list to satisfy current allocation. */ : new = garbage; : n = CHashTableGetNode(table, new); 0.05 : 783261: 89 de mov %ebx,%esi : pg_read_barrier_depends(); : fhead = n->un.gcnext; 0.03 : 783263: 49 8b 44 24 30 mov 0x30(%r12),%rax : } : } : : /* Remove one item from list to satisfy current allocation. */ : new = garbage; : n = CHashTableGetNode(table, new); 0.02 : 783268: d1 ee shr %esi : pg_read_barrier_depends(); : fhead = n->un.gcnext; 0.00 : 78326a: 89 f2 mov %esi,%edx 0.00 : 78326c: 41 0f af 54 24 1c imul 0x1c(%r12),%edx 0.10 : 783272: 8b 54 10 04 mov 0x4(%rax,%rdx,1),%edx : : if (CHashPtrIsInvalid(fhead)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:993 7.92 : 783276: 83 fa fd cmp $0xfffffffd,%edx 0.00 : 783279: 76 13 jbe 78328e : * before we overwrite n->un.gcnext with a new hashcode. : * (This is only needed when we reclaim exactly one node, : * because in any other case we'll do a compare-and-swap : * before returning, which implies a full barrier.) : */ : pg_memory_barrier(); 0.07 : 78327b: f0 83 04 24 00 lock addl $0x0,(%rsp) : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Skipped); 0.05 : 783280: 49 83 84 24 c8 00 00 addq $0x1,0xc8(%r12) 0.00 : 783287: 00 01 0.00 : 783289: e9 93 fd ff ff jmpq 783021 : } : else if (__sync_bool_compare_and_swap(fh, InvalidCHashPtr, fhead)) 0.02 : 78328e: b8 fe ff ff ff mov $0xfffffffe,%eax 0.02 : 783293: f0 41 0f b1 10 lock cmpxchg %edx,(%r8) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1007 0.67 : 783298: 74 41 je 7832db : { : /* : * Our free list is empty, and we've succesfully pushed the : * reclaimed nodes onto it. So we're done. : */ : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Fast); 0.00 : 78329a: 4d 8b 4c 24 30 mov 0x30(%r12),%r9 0.00 : 78329f: 41 8b 7c 24 1c mov 0x1c(%r12),%edi 0.00 : 7832a4: 89 d0 mov %edx,%eax : : /* Walk list of reclaimed elements to end. */ : fcurrent = fhead; : for (;;) : { : n = CHashTableGetNode(table, fcurrent); 0.00 : 7832a6: d1 e8 shr %eax 0.00 : 7832a8: 0f af c7 imul %edi,%eax 0.00 : 7832ab: 49 8d 0c 01 lea (%r9,%rax,1),%rcx : fnext = n->un.gcnext; 0.00 : 7832af: 8b 41 04 mov 0x4(%rcx),%eax : if (CHashPtrIsInvalid(fnext)) 0.00 : 7832b2: 83 f8 fd cmp $0xfffffffd,%eax 0.00 : 7832b5: 76 ef jbe 7832a6 0.00 : 7832b7: eb 10 jmp 7832c9 0.00 : 7832b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : oldhead = *fh; : n->un.gcnext = oldhead; : if (__sync_bool_compare_and_swap(fh, oldhead, fhead)) : break; : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Retry); 0.00 : 7832c0: 49 83 84 24 d8 00 00 addq $0x1,0xd8(%r12) 0.00 : 7832c7: 00 01 : } : : /* Push reclaimed elements onto home free list. */ : for (;;) : { : oldhead = *fh; 0.00 : 7832c9: 41 8b 00 mov (%r8),%eax : n->un.gcnext = oldhead; 0.00 : 7832cc: 89 41 04 mov %eax,0x4(%rcx) : if (__sync_bool_compare_and_swap(fh, oldhead, fhead)) 0.00 : 7832cf: f0 41 0f b1 10 lock cmpxchg %edx,(%r8) 0.00 : 7832d4: 75 ea jne 7832c0 0.00 : 7832d6: e9 46 fd ff ff jmpq 783021 : { : /* : * Our free list is empty, and we've succesfully pushed the : * reclaimed nodes onto it. So we're done. : */ : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Fast); 0.00 : 7832db: 49 83 84 24 d0 00 00 addq $0x1,0xd0(%r12) 0.00 : 7832e2: 00 01 0.03 : 7832e4: e9 38 fd ff ff jmpq 783021 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:447 5.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 4.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:489 4.47 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:444 4.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:447 4.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:492 4.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:439 4.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 4.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 3.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:519 2.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:519 2.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:519 2.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:492 2.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 2.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:516 2.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:515 1.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:519 1.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:519 1.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:519 1.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:501 1.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:494 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 1.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:489 0.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:490 0.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 0.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:444 0.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:492 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:483 0.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 0.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:433 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:433 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:442 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:492 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b9790 : : */ : static void : advance_transition_function(AggState *aggstate, : AggStatePerAgg peraggstate, : AggStatePerGroup pergroupstate) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 1.17 : 5b9790: 55 push %rbp 0.97 : 5b9791: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 5.19 : 5b9794: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 0.81 : 5b9798: 4c 89 6d e8 mov %r13,-0x18(%rbp) 1.17 : 5b979c: 49 89 f4 mov %rsi,%r12 4.03 : 5b979f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.64 : 5b97a3: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.31 : 5b97a7: 49 89 fe mov %rdi,%r14 0.40 : 5b97aa: 4c 89 7d f8 mov %r15,-0x8(%rbp) 4.03 : 5b97ae: 48 83 ec 30 sub $0x30,%rsp : FunctionCallInfo fcinfo = &peraggstate->transfn_fcinfo; : MemoryContext oldContext; : Datum newVal; : : if (peraggstate->transfn.fn_strict) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:433 0.62 : 5b97b2: 80 7e 36 00 cmpb $0x0,0x36(%rsi) : */ : static void : advance_transition_function(AggState *aggstate, : AggStatePerAgg peraggstate, : AggStatePerGroup pergroupstate) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:428 0.66 : 5b97b6: 49 89 d5 mov %rdx,%r13 : FunctionCallInfo fcinfo = &peraggstate->transfn_fcinfo; : MemoryContext oldContext; : Datum newVal; : : if (peraggstate->transfn.fn_strict) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:433 0.62 : 5b97b9: 74 4c je 5b9807 : { : /* : * For a strict transfn, nothing happens when there's a NULL input; we : * just keep the prior transValue. : */ : int numTransInputs = peraggstate->numTransInputs; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:439 4.14 : 5b97bb: 8b 4e 18 mov 0x18(%rsi),%ecx : int i; : : for (i = 1; i <= numTransInputs; i++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:442 0.57 : 5b97be: 85 c9 test %ecx,%ecx 0.24 : 5b97c0: 7e 2f jle 5b97f1 : { : if (fcinfo->argnull[i]) 0.29 : 5b97c2: 80 be 41 04 00 00 00 cmpb $0x0,0x441(%rsi) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:444 4.47 : 5b97c9: ba 01 00 00 00 mov $0x1,%edx 0.79 : 5b97ce: 74 1a je 5b97ea 0.00 : 5b97d0: e9 e3 00 00 00 jmpq 5b98b8 0.00 : 5b97d5: 0f 1f 00 nopl (%rax) 0.00 : 5b97d8: 48 63 c2 movslq %edx,%rax 0.00 : 5b97db: 41 80 bc 04 40 04 00 cmpb $0x0,0x440(%r12,%rax,1) 0.00 : 5b97e2: 00 00 0.00 : 5b97e4: 0f 85 ce 00 00 00 jne 5b98b8 : * just keep the prior transValue. : */ : int numTransInputs = peraggstate->numTransInputs; : int i; : : for (i = 1; i <= numTransInputs; i++) 0.31 : 5b97ea: 83 c2 01 add $0x1,%edx 0.18 : 5b97ed: 39 d1 cmp %edx,%ecx 0.00 : 5b97ef: 7d e7 jge 5b97d8 : { : if (fcinfo->argnull[i]) : return; : } : if (pergroupstate->noTransValue) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:447 4.38 : 5b97f1: 41 80 7d 09 00 cmpb $0x0,0x9(%r13) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:447 12.21 : 5b97f6: 0f 85 d4 00 00 00 jne 5b98d0 : pergroupstate->transValueIsNull = false; : pergroupstate->noTransValue = false; : MemoryContextSwitchTo(oldContext); : return; : } : if (pergroupstate->transValueIsNull) 0.40 : 5b97fc: 41 80 7d 08 00 cmpb $0x0,0x8(%r13) 0.44 : 5b9801: 0f 85 b1 00 00 00 jne 5b98b8 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.07 : 5b9807: 49 8b 86 c0 00 00 00 mov 0xc0(%r14),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.55 : 5b980e: 4c 8b 3d 4b 10 60 00 mov 0x60104b(%rip),%r15 # bba860 : */ : fcinfo->arg[0] = pergroupstate->transValue; : fcinfo->argnull[0] = pergroupstate->transValueIsNull; : fcinfo->isnull = false; /* just in case transfn doesn't set it */ : : newVal = FunctionCallInvoke(fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:492 0.57 : 5b9815: 49 8d bc 24 00 01 00 lea 0x100(%r12),%rdi 0.00 : 5b981c: 00 : : CurrentMemoryContext = context; 0.22 : 5b981d: 48 8b 40 28 mov 0x28(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.89 : 5b9821: 48 89 05 38 10 60 00 mov %rax,0x601038(%rip) # bba860 : : /* We run the transition functions in per-input-tuple memory context */ : oldContext = MemoryContextSwitchTo(aggstate->tmpcontext->ecxt_per_tuple_memory); : : /* set up aggstate->curperagg for AggGetAggref() */ : aggstate->curperagg = peraggstate; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:483 0.68 : 5b9828: 4d 89 a6 c8 00 00 00 mov %r12,0xc8(%r14) : : /* : * OK to call the transition function : */ : fcinfo->arg[0] = pergroupstate->transValue; 0.44 : 5b982f: 49 8b 45 00 mov 0x0(%r13),%rax 0.35 : 5b9833: 49 89 84 24 20 01 00 mov %rax,0x120(%r12) 0.00 : 5b983a: 00 : fcinfo->argnull[0] = pergroupstate->transValueIsNull; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:489 4.86 : 5b983b: 41 0f b6 45 08 movzbl 0x8(%r13),%eax : fcinfo->isnull = false; /* just in case transfn doesn't set it */ /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:490 0.88 : 5b9840: 41 c6 84 24 1c 01 00 movb $0x0,0x11c(%r12) 0.00 : 5b9847: 00 00 : : /* : * OK to call the transition function : */ : fcinfo->arg[0] = pergroupstate->transValue; : fcinfo->argnull[0] = pergroupstate->transValueIsNull; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:489 1.12 : 5b9849: 41 88 84 24 40 04 00 mov %al,0x440(%r12) 0.00 : 5b9850: 00 : fcinfo->isnull = false; /* just in case transfn doesn't set it */ : : newVal = FunctionCallInvoke(fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:492 0.70 : 5b9851: 49 8b 84 24 00 01 00 mov 0x100(%r12),%rax 0.00 : 5b9858: 00 4.36 : 5b9859: ff 10 callq *(%rax) : : aggstate->curperagg = NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:494 1.61 : 5b985b: 49 c7 86 c8 00 00 00 movq $0x0,0xc8(%r14) 0.00 : 5b9862: 00 00 00 00 : /* : * If pass-by-ref datatype, must copy the new value into aggcontext and : * pfree the prior transValue. But if transfn returned a pointer to its : * first input, we don't need to do anything. : */ : if (!peraggstate->transtypeByVal && 0.20 : 5b9866: 41 80 bc 24 d2 00 00 cmpb $0x0,0xd2(%r12) 0.00 : 5b986d: 00 00 : */ : fcinfo->arg[0] = pergroupstate->transValue; : fcinfo->argnull[0] = pergroupstate->transValueIsNull; : fcinfo->isnull = false; /* just in case transfn doesn't set it */ : : newVal = FunctionCallInvoke(fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:492 2.38 : 5b986f: 48 89 c3 mov %rax,%rbx : /* : * If pass-by-ref datatype, must copy the new value into aggcontext and : * pfree the prior transValue. But if transfn returned a pointer to its : * first input, we don't need to do anything. : */ : if (!peraggstate->transtypeByVal && /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:501 1.65 : 5b9872: 75 2c jne 5b98a0 0.07 : 5b9874: 49 3b 45 00 cmp 0x0(%r13),%rax 0.00 : 5b9878: 74 26 je 5b98a0 : DatumGetPointer(newVal) != DatumGetPointer(pergroupstate->transValue)) : { : if (!fcinfo->isnull) 0.00 : 5b987a: 41 80 bc 24 1c 01 00 cmpb $0x0,0x11c(%r12) 0.00 : 5b9881: 00 00 0.00 : 5b9883: 0f 84 92 00 00 00 je 5b991b : MemoryContextSwitchTo(aggstate->aggcontext); : newVal = datumCopy(newVal, : peraggstate->transtypeByVal, : peraggstate->transtypeLen); : } : if (!pergroupstate->transValueIsNull) 0.00 : 5b9889: 41 80 7d 08 00 cmpb $0x0,0x8(%r13) 0.00 : 5b988e: 66 90 xchg %ax,%ax 0.00 : 5b9890: 75 0e jne 5b98a0 : pfree(DatumGetPointer(pergroupstate->transValue)); 0.00 : 5b9892: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 5b9896: e8 e5 f2 1d 00 callq 798b80 0.00 : 5b989b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : pergroupstate->transValue = newVal; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:515 2.07 : 5b98a0: 49 89 5d 00 mov %rbx,0x0(%r13) : pergroupstate->transValueIsNull = fcinfo->isnull; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:516 2.18 : 5b98a4: 41 0f b6 84 24 1c 01 movzbl 0x11c(%r12),%eax 0.00 : 5b98ab: 00 00 0.22 : 5b98ad: 41 88 45 08 mov %al,0x8(%r13) /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 2.35 : 5b98b1: 4c 89 3d a8 0f 60 00 mov %r15,0x600fa8(%rip) # bba860 : : MemoryContextSwitchTo(oldContext); : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:519 1.89 : 5b98b8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 2.73 : 5b98bc: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.42 : 5b98c0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 1.78 : 5b98c4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 1.80 : 5b98c8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 2.49 : 5b98cc: c9 leaveq 3.85 : 5b98cd: c3 retq 0.00 : 5b98ce: 66 90 xchg %ax,%ax 0.00 : 5b98d0: 49 8b 86 b8 00 00 00 mov 0xb8(%r14),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.04 : 5b98d7: 48 8b 1d 82 0f 60 00 mov 0x600f82(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.07 : 5b98de: 48 89 05 7b 0f 60 00 mov %rax,0x600f7b(%rip) # bba860 : * : * We must copy the datum into aggcontext if it is pass-by-ref. We : * do not need to pfree the old transValue, since it's NULL. : */ : oldContext = MemoryContextSwitchTo(aggstate->aggcontext); : pergroupstate->transValue = datumCopy(fcinfo->arg[1], 0.09 : 5b98e5: 41 0f bf 94 24 ce 00 movswl 0xce(%r12),%edx 0.00 : 5b98ec: 00 00 0.00 : 5b98ee: 41 0f be b4 24 d2 00 movsbl 0xd2(%r12),%esi 0.00 : 5b98f5: 00 00 0.04 : 5b98f7: 49 8b bc 24 28 01 00 mov 0x128(%r12),%rdi 0.00 : 5b98fe: 00 0.11 : 5b98ff: e8 6c 66 11 00 callq 6cff70 : peraggstate->transtypeByVal, : peraggstate->transtypeLen); : pergroupstate->transValueIsNull = false; 0.04 : 5b9904: 41 c6 45 08 00 movb $0x0,0x8(%r13) : * : * We must copy the datum into aggcontext if it is pass-by-ref. We : * do not need to pfree the old transValue, since it's NULL. : */ : oldContext = MemoryContextSwitchTo(aggstate->aggcontext); : pergroupstate->transValue = datumCopy(fcinfo->arg[1], 0.11 : 5b9909: 49 89 45 00 mov %rax,0x0(%r13) : peraggstate->transtypeByVal, : peraggstate->transtypeLen); : pergroupstate->transValueIsNull = false; : pergroupstate->noTransValue = false; 0.13 : 5b990d: 41 c6 45 09 00 movb $0x0,0x9(%r13) 0.00 : 5b9912: 48 89 1d 47 0f 60 00 mov %rbx,0x600f47(%rip) # bba860 0.00 : 5b9919: eb 9d jmp 5b98b8 0.00 : 5b991b: 49 8b 86 b8 00 00 00 mov 0xb8(%r14),%rax : DatumGetPointer(newVal) != DatumGetPointer(pergroupstate->transValue)) : { : if (!fcinfo->isnull) : { : MemoryContextSwitchTo(aggstate->aggcontext); : newVal = datumCopy(newVal, 0.00 : 5b9922: 48 89 df mov %rbx,%rdi 0.00 : 5b9925: 48 89 05 34 0f 60 00 mov %rax,0x600f34(%rip) # bba860 0.00 : 5b992c: 41 0f bf 94 24 ce 00 movswl 0xce(%r12),%edx 0.00 : 5b9933: 00 00 0.00 : 5b9935: 41 0f be b4 24 d2 00 movsbl 0xd2(%r12),%esi 0.00 : 5b993c: 00 00 0.00 : 5b993e: e8 2d 66 11 00 callq 6cff70 0.00 : 5b9943: 48 89 c3 mov %rax,%rbx 0.00 : 5b9946: e9 3e ff ff ff jmpq 5b9889 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.95 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 12.79 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 11.58 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 8.97 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 8.42 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 7.30 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 7.08 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 6.45 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 5.03 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 4.81 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 4.40 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 4.06 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 1.81 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 1.37 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 0.84 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 0.62 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000069b9e0 : : * overflow as an unrecoverable SIGSEGV, so we want to error out ourselves : * before hitting the hardware limit. : */ : void : check_stack_depth(void) : { /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 12.79 : 69b9e0: 55 push %rbp 5.03 : 69b9e1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 1.81 : 69b9e4: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 13.95 : 69b9e8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 6.45 : 69b9ec: 48 83 ec 20 sub $0x20,%rsp : long stack_depth; : : /* : * Compute distance from reference point to my local variables : */ : stack_depth = (long) (stack_base_ptr - &stack_top_loc); 0.06 : 69b9f0: 48 8b 0d f9 2d 4e 00 mov 0x4e2df9(%rip),%rcx # b7e7f0 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 1.37 : 69b9f7: 48 8d 45 ef lea -0x11(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 7.30 : 69b9fb: 48 89 ca mov %rcx,%rdx /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 4.40 : 69b9fe: 48 29 c2 sub %rax,%rdx 0.34 : 69ba01: 48 89 d0 mov %rdx,%rax : * The test on stack_base_ptr prevents us from erroring out if called : * during process setup or in a non-backend process. Logically it should : * be done first, but putting it here avoids wasting cycles during normal : * cases. : */ : if (stack_depth > max_stack_depth_bytes && /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 0.84 : 69ba04: 48 c1 fa 3f sar $0x3f,%rdx /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 7.08 : 69ba08: 48 31 d0 xor %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 4.81 : 69ba0b: 48 29 d0 sub %rdx,%rax 0.62 : 69ba0e: 48 39 05 a3 cd 4c 00 cmp %rax,0x4ccda3(%rip) # b687b8 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 8.97 : 69ba15: 7d 05 jge 69ba1c 0.00 : 69ba17: 48 85 c9 test %rcx,%rcx 0.00 : 69ba1a: 75 0a jne 69ba26 : errhint("Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " : "after ensuring the platform's stack depth limit is adequate.", : max_stack_depth))); : } : #endif /* IA64 */ : } /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 8.42 : 69ba1c: 48 8b 5d f0 mov -0x10(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 4.06 : 69ba20: 4c 8b 65 f8 mov -0x8(%rbp),%r12 0.12 : 69ba24: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 11.58 : 69ba25: c3 retq : * cases. : */ : if (stack_depth > max_stack_depth_bytes && : stack_base_ptr != NULL) : { : ereport(ERROR, 0.00 : 69ba26: 45 31 c0 xor %r8d,%r8d 0.00 : 69ba29: b9 e0 00 8b 00 mov $0x8b00e0,%ecx 0.00 : 69ba2e: ba 19 0c 00 00 mov $0xc19,%edx 0.00 : 69ba33: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69ba38: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69ba3d: e8 7e f0 0d 00 callq 77aac0 0.00 : 69ba42: 84 c0 test %al,%al 0.00 : 69ba44: 75 05 jne 69ba4b 0.00 : 69ba46: e8 85 da dc ff callq 4694d0 0.00 : 69ba4b: 8b 35 5b cd 4c 00 mov 0x4ccd5b(%rip),%esi # b687ac 0.00 : 69ba51: bf 60 f0 8a 00 mov $0x8af060,%edi 0.00 : 69ba56: 31 c0 xor %eax,%eax 0.00 : 69ba58: e8 43 02 0e 00 callq 77bca0 0.00 : 69ba5d: bf 00 ea 8a 00 mov $0x8aea00,%edi 0.00 : 69ba62: 41 89 c4 mov %eax,%r12d 0.00 : 69ba65: 31 c0 xor %eax,%eax 0.00 : 69ba67: e8 34 0e 0e 00 callq 77c8a0 0.00 : 69ba6c: bf 05 01 00 01 mov $0x1000105,%edi 0.00 : 69ba71: 89 c3 mov %eax,%ebx 0.00 : 69ba73: e8 d8 12 0e 00 callq 77cd50 0.00 : 69ba78: 44 89 e2 mov %r12d,%edx 0.00 : 69ba7b: 89 c7 mov %eax,%edi 0.00 : 69ba7d: 89 de mov %ebx,%esi 0.00 : 69ba7f: 31 c0 xor %eax,%eax 0.00 : 69ba81: e8 5a eb 0d 00 callq 77a5e0 0.00 : 69ba86: eb be jmp 69ba46 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1057 33.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1051 9.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1059 8.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1057 6.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1051 4.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1054 0.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1059 0.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1054 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005aca20 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalConst(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1051 33.01 : 5aca20: 55 push %rbp : Const *con = (Const *) exprstate->expr; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1054 0.82 : 5aca21: 48 85 c9 test %rcx,%rcx : */ : static Datum : ExecEvalConst(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { : Const *con = (Const *) exprstate->expr; 0.19 : 5aca24: 48 8b 77 08 mov 0x8(%rdi),%rsi : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalConst(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1051 6.61 : 5aca28: 48 89 e5 mov %rsp,%rbp : Const *con = (Const *) exprstate->expr; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1054 4.36 : 5aca2b: 74 06 je 5aca33 : *isDone = ExprSingleResult; 0.00 : 5aca2d: c7 01 00 00 00 00 movl $0x0,(%rcx) : : *isNull = con->constisnull; 0.43 : 5aca33: 0f b6 46 20 movzbl 0x20(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1057 35.33 : 5aca37: 88 02 mov %al,(%rdx) 8.52 : 5aca39: 48 8b 46 18 mov 0x18(%rsi),%rax : return con->constvalue; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1059 10.73 : 5aca3d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 89.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:867 1.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:856 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:855 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:867 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:853 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bc410 : : */ : void : ExecHashTableInsert(HashJoinTable hashtable, : TupleTableSlot *slot, : uint32 hashvalue) : { 0.09 : 5bc410: 55 push %rbp 0.03 : 5bc411: 48 89 e5 mov %rsp,%rbp 0.22 : 5bc414: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.03 : 5bc418: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.09 : 5bc41c: 49 89 fd mov %rdi,%r13 0.11 : 5bc41f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.06 : 5bc423: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.14 : 5bc427: 48 89 f7 mov %rsi,%rdi 0.02 : 5bc42a: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.19 : 5bc42e: 48 83 ec 40 sub $0x40,%rsp 0.03 : 5bc432: 89 d3 mov %edx,%ebx : MinimalTuple tuple = ExecFetchSlotMinimalTuple(slot); 0.03 : 5bc434: e8 17 7b ff ff callq 5b3f50 0.33 : 5bc439: 49 89 c7 mov %rax,%r15 : uint32 hashvalue, : int *bucketno, : int *batchno) : { : uint32 nbuckets = (uint32) hashtable->nbuckets; : uint32 nbatch = (uint32) hashtable->nbatch; 0.00 : 5bc43c: 41 8b 45 40 mov 0x40(%r13),%eax : ExecHashGetBucketAndBatch(HashJoinTable hashtable, : uint32 hashvalue, : int *bucketno, : int *batchno) : { : uint32 nbuckets = (uint32) hashtable->nbuckets; 0.03 : 5bc440: 41 8b 55 00 mov 0x0(%r13),%edx : uint32 nbatch = (uint32) hashtable->nbatch; : : if (nbatch > 1) 0.05 : 5bc444: 83 f8 01 cmp $0x1,%eax 0.00 : 5bc447: 0f 86 0b 01 00 00 jbe 5bc558 : { : /* we can do MOD by masking, DIV by shifting */ : *bucketno = hashvalue & (nbuckets - 1); : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); 0.00 : 5bc44d: 41 8b 4d 04 mov 0x4(%r13),%ecx : uint32 nbatch = (uint32) hashtable->nbatch; : : if (nbatch > 1) : { : /* we can do MOD by masking, DIV by shifting */ : *bucketno = hashvalue & (nbuckets - 1); 0.00 : 5bc451: 44 8d 72 ff lea -0x1(%rdx),%r14d : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); 0.00 : 5bc455: 89 da mov %ebx,%edx 0.00 : 5bc457: 83 e8 01 sub $0x1,%eax : uint32 nbatch = (uint32) hashtable->nbatch; : : if (nbatch > 1) : { : /* we can do MOD by masking, DIV by shifting */ : *bucketno = hashvalue & (nbuckets - 1); 0.00 : 5bc45a: 41 21 de and %ebx,%r14d : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); 0.00 : 5bc45d: d3 ea shr %cl,%edx 0.00 : 5bc45f: 21 c2 and %eax,%edx : &bucketno, &batchno); : : /* : * decide whether to put the tuple in the hash table or a temp file : */ : if (batchno == hashtable->curbatch) 0.11 : 5bc461: 41 39 55 44 cmp %edx,0x44(%r13) 0.00 : 5bc465: 74 31 je 5bc498 : { : /* : * put the tuple into a temp file for later batches : */ : Assert(batchno > hashtable->curbatch); : ExecHashJoinSaveTuple(tuple, 0.00 : 5bc467: 48 63 d2 movslq %edx,%rdx 0.00 : 5bc46a: 89 de mov %ebx,%esi 0.00 : 5bc46c: 4c 89 ff mov %r15,%rdi 0.00 : 5bc46f: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 5bc473: 49 03 55 68 add 0x68(%r13),%rdx : hashvalue, : &hashtable->innerBatchFile[batchno]); : } : } 0.00 : 5bc477: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5bc47b: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5bc47f: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5bc483: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5bc487: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5bc48b: c9 leaveq : { : /* : * put the tuple into a temp file for later batches : */ : Assert(batchno > hashtable->curbatch); : ExecHashJoinSaveTuple(tuple, 0.00 : 5bc48c: e9 cf 10 00 00 jmpq 5bd560 0.00 : 5bc491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * put the tuple in hash table : */ : HashJoinTuple hashTuple; : int hashTupleSize; : double ntuples = (hashtable->totalTuples - hashtable->skewTuples); 0.30 : 5bc498: f2 41 0f 10 45 58 movsd 0x58(%r13),%xmm0 : : /* Create the HashJoinTuple */ : hashTupleSize = HJTUPLE_OVERHEAD + tuple->t_len; : hashTuple = (HashJoinTuple) dense_alloc(hashtable, hashTupleSize); 0.08 : 5bc49e: 4c 89 ef mov %r13,%rdi : /* : * put the tuple in hash table : */ : HashJoinTuple hashTuple; : int hashTupleSize; : double ntuples = (hashtable->totalTuples - hashtable->skewTuples); 0.00 : 5bc4a1: f2 0f 11 45 c0 movsd %xmm0,-0x40(%rbp) 0.35 : 5bc4a6: f2 41 0f 10 4d 60 movsd 0x60(%r13),%xmm1 0.14 : 5bc4ac: f2 0f 11 4d c8 movsd %xmm1,-0x38(%rbp) : : /* Create the HashJoinTuple */ : hashTupleSize = HJTUPLE_OVERHEAD + tuple->t_len; : hashTuple = (HashJoinTuple) dense_alloc(hashtable, hashTupleSize); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:853 0.52 : 5bc4b1: 41 8b 07 mov (%r15),%eax 0.00 : 5bc4b4: 83 c0 10 add $0x10,%eax 0.14 : 5bc4b7: 48 98 cltq 0.05 : 5bc4b9: 48 89 c6 mov %rax,%rsi 0.20 : 5bc4bc: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.03 : 5bc4c0: e8 fb fa ff ff callq 5bbfc0 : : hashTuple->hashvalue = hashvalue; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:855 0.60 : 5bc4c5: 89 58 08 mov %ebx,0x8(%rax) : memcpy(HJTUPLE_MINTUPLE(hashTuple), tuple, tuple->t_len); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:856 1.18 : 5bc4c8: 41 8b 17 mov (%r15),%edx 0.06 : 5bc4cb: 48 8d 58 10 lea 0x10(%rax),%rbx 0.00 : 5bc4cf: 4c 89 fe mov %r15,%rsi : int hashTupleSize; : double ntuples = (hashtable->totalTuples - hashtable->skewTuples); : : /* Create the HashJoinTuple */ : hashTupleSize = HJTUPLE_OVERHEAD + tuple->t_len; : hashTuple = (HashJoinTuple) dense_alloc(hashtable, hashTupleSize); 0.02 : 5bc4d2: 49 89 c4 mov %rax,%r12 : : hashTuple->hashvalue = hashvalue; : memcpy(HJTUPLE_MINTUPLE(hashTuple), tuple, tuple->t_len); 0.33 : 5bc4d5: 48 89 df mov %rbx,%rdi 0.00 : 5bc4d8: e8 13 d7 ea ff callq 469bf0 : * We always reset the tuple-matched flag on insertion. This is okay : * even when reloading a tuple from a batch file, since the tuple : * could not possibly have been matched to an outer tuple before it : * went into the batch file. : */ : HeapTupleHeaderClearMatch(HJTUPLE_MINTUPLE(hashTuple)); 0.16 : 5bc4dd: 66 81 63 0a ff 7f andw $0x7fff,0xa(%rbx) : : /* Push it onto the front of the bucket's list */ : hashTuple->next = hashtable->buckets[bucketno]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:867 0.57 : 5bc4e3: 49 63 d6 movslq %r14d,%rdx 0.05 : 5bc4e6: 49 8b 45 18 mov 0x18(%r13),%rax 0.11 : 5bc4ea: 48 8b 04 d0 mov (%rax,%rdx,8),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:867 89.66 : 5bc4ee: 49 89 04 24 mov %rax,(%r12) : hashtable->buckets[bucketno] = hashTuple; 0.35 : 5bc4f2: 49 8b 45 18 mov 0x18(%r13),%rax 0.00 : 5bc4f6: 4c 89 24 d0 mov %r12,(%rax,%rdx,8) : : /* : * Increase the (optimal) number of buckets if we just exceeded the : * NTUP_PER_BUCKET threshold, but only when there's still a single batch. : */ : if ((hashtable->nbatch == 1) && 0.05 : 5bc4fa: 41 83 7d 40 01 cmpl $0x1,0x40(%r13) 0.33 : 5bc4ff: 74 7f je 5bc580 0.00 : 5bc501: 41 8b 55 0c mov 0xc(%r13),%edx : hashtable->nbuckets_optimal *= 2; : hashtable->log2_nbuckets_optimal += 1; : } : : /* Account for space used, and back off if we've used too much */ : hashtable->spaceUsed += hashTupleSize; 0.28 : 5bc505: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.02 : 5bc509: 49 03 85 90 00 00 00 add 0x90(%r13),%rax : if (hashtable->spaceUsed > hashtable->spacePeak) 0.00 : 5bc510: 49 3b 85 a0 00 00 00 cmp 0xa0(%r13),%rax : hashtable->nbuckets_optimal *= 2; : hashtable->log2_nbuckets_optimal += 1; : } : : /* Account for space used, and back off if we've used too much */ : hashtable->spaceUsed += hashTupleSize; 0.03 : 5bc517: 49 89 85 90 00 00 00 mov %rax,0x90(%r13) : if (hashtable->spaceUsed > hashtable->spacePeak) 0.19 : 5bc51e: 77 50 ja 5bc570 : hashtable->spacePeak = hashtable->spaceUsed; : if (hashtable->spaceUsed + 0.25 : 5bc520: 48 63 c2 movslq %edx,%rax 0.00 : 5bc523: 48 c1 e0 03 shl $0x3,%rax 0.00 : 5bc527: 49 03 85 90 00 00 00 add 0x90(%r13),%rax 0.06 : 5bc52e: 49 3b 85 98 00 00 00 cmp 0x98(%r13),%rax 0.00 : 5bc535: 0f 87 8d 00 00 00 ja 5bc5c8 : Assert(batchno > hashtable->curbatch); : ExecHashJoinSaveTuple(tuple, : hashvalue, : &hashtable->innerBatchFile[batchno]); : } : } 0.35 : 5bc53b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5bc53f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.02 : 5bc543: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.02 : 5bc547: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.30 : 5bc54b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.02 : 5bc54f: c9 leaveq 0.30 : 5bc550: c3 retq 0.00 : 5bc551: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : *bucketno = hashvalue & (nbuckets - 1); : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); : } : else : { : *bucketno = hashvalue & (nbuckets - 1); 0.28 : 5bc558: 44 8d 72 ff lea -0x1(%rdx),%r14d 0.00 : 5bc55c: 31 d2 xor %edx,%edx 0.05 : 5bc55e: 41 21 de and %ebx,%r14d 0.05 : 5bc561: e9 fb fe ff ff jmpq 5bc461 0.00 : 5bc566: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5bc56d: 00 00 00 : } : : /* Account for space used, and back off if we've used too much */ : hashtable->spaceUsed += hashTupleSize; : if (hashtable->spaceUsed > hashtable->spacePeak) : hashtable->spacePeak = hashtable->spaceUsed; 0.00 : 5bc570: 49 89 85 a0 00 00 00 mov %rax,0xa0(%r13) 0.00 : 5bc577: eb a7 jmp 5bc520 0.00 : 5bc579: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * Increase the (optimal) number of buckets if we just exceeded the : * NTUP_PER_BUCKET threshold, but only when there's still a single batch. : */ : if ((hashtable->nbatch == 1) && 0.00 : 5bc580: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5bc584: 81 fa ff ff ff 3f cmp $0x3fffffff,%edx 0.00 : 5bc58a: 0f 8f 75 ff ff ff jg 5bc505 0.00 : 5bc590: f2 0f 10 45 c0 movsd -0x40(%rbp),%xmm0 0.30 : 5bc595: f2 0f 5c 45 c8 subsd -0x38(%rbp),%xmm0 0.03 : 5bc59a: f2 0f 11 45 c0 movsd %xmm0,-0x40(%rbp) 0.00 : 5bc59f: f2 0f 2a c2 cvtsi2sd %edx,%xmm0 0.46 : 5bc5a3: f2 0f 10 4d c0 movsd -0x40(%rbp),%xmm1 0.17 : 5bc5a8: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 5bc5ac: 0f 82 53 ff ff ff jb 5bc505 : (hashtable->nbuckets_optimal <= INT_MAX/2) && /* overflow protection */ : (ntuples >= (hashtable->nbuckets_optimal * NTUP_PER_BUCKET))) : { : hashtable->nbuckets_optimal *= 2; 0.00 : 5bc5b2: 8d 04 12 lea (%rdx,%rdx,1),%eax : hashtable->log2_nbuckets_optimal += 1; 0.00 : 5bc5b5: 41 83 45 10 01 addl $0x1,0x10(%r13) : */ : if ((hashtable->nbatch == 1) && : (hashtable->nbuckets_optimal <= INT_MAX/2) && /* overflow protection */ : (ntuples >= (hashtable->nbuckets_optimal * NTUP_PER_BUCKET))) : { : hashtable->nbuckets_optimal *= 2; 0.00 : 5bc5ba: 41 89 45 0c mov %eax,0xc(%r13) 0.00 : 5bc5be: 89 c2 mov %eax,%edx 0.00 : 5bc5c0: e9 40 ff ff ff jmpq 5bc505 0.00 : 5bc5c5: 0f 1f 00 nopl (%rax) : if (hashtable->spaceUsed > hashtable->spacePeak) : hashtable->spacePeak = hashtable->spaceUsed; : if (hashtable->spaceUsed + : hashtable->nbuckets_optimal * sizeof(HashJoinTuple) : > hashtable->spaceAllowed) : ExecHashIncreaseNumBatches(hashtable); 0.00 : 5bc5c8: 4c 89 ef mov %r13,%rdi : Assert(batchno > hashtable->curbatch); : ExecHashJoinSaveTuple(tuple, : hashvalue, : &hashtable->innerBatchFile[batchno]); : } : } 0.00 : 5bc5cb: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5bc5cf: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5bc5d3: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5bc5d7: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5bc5db: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5bc5df: c9 leaveq : if (hashtable->spaceUsed > hashtable->spacePeak) : hashtable->spacePeak = hashtable->spaceUsed; : if (hashtable->spaceUsed + : hashtable->nbuckets_optimal * sizeof(HashJoinTuple) : > hashtable->spaceAllowed) : ExecHashIncreaseNumBatches(hashtable); 0.00 : 5bc5e0: e9 fb fa ff ff jmpq 5bc0e0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:995 7.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:970 6.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:985 3.47 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:995 3.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:995 3.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:955 3.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:984 2.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:943 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:984 2.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 2.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 2.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:934 2.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:939 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 2.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:970 2.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 2.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 1.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 1.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 1.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 1.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 1.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:943 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:955 1.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 1.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:950 1.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:995 1.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:943 1.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:993 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 1.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:955 1.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:955 0.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:955 0.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:939 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 0.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 0.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:995 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:934 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:938 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bbe90 : : ExprContext *econtext, : List *hashkeys, : bool outer_tuple, : bool keep_nulls, : uint32 *hashvalue) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:923 2.68 : 5bbe90: 55 push %rbp 1.59 : 5bbe91: 48 89 e5 mov %rsp,%rbp 2.06 : 5bbe94: 41 57 push %r15 0.76 : 5bbe96: 49 89 ff mov %rdi,%r15 0.88 : 5bbe99: 41 56 push %r14 0.90 : 5bbe9b: 49 89 f6 mov %rsi,%r14 1.31 : 5bbe9e: 41 55 push %r13 0.61 : 5bbea0: 41 54 push %r12 1.21 : 5bbea2: 49 89 d4 mov %rdx,%r12 0.43 : 5bbea5: 53 push %rbx 1.61 : 5bbea6: 89 cb mov %ecx,%ebx 0.08 : 5bbea8: 48 83 ec 38 sub $0x38,%rsp 1.66 : 5bbeac: 4c 89 4d a8 mov %r9,-0x58(%rbp) 2.23 : 5bbeb0: 44 88 45 b7 mov %r8b,-0x49(%rbp) : : /* : * We reset the eval context each time to reclaim any memory leaked in the : * hashkey expressions. : */ : ResetExprContext(econtext); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:934 0.53 : 5bbeb4: 48 8b 7e 28 mov 0x28(%rsi),%rdi 2.62 : 5bbeb8: e8 f3 ca 1d 00 callq 7989b0 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 1.02 : 5bbebd: 48 8b 05 9c e9 5f 00 mov 0x5fe99c(%rip),%rax # bba860 : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : if (outer_tuple) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:938 0.53 : 5bbec4: 84 db test %bl,%bl /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 1.96 : 5bbec6: 48 89 45 c0 mov %rax,-0x40(%rbp) : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 6.56 : 5bbeca: 49 8b 46 28 mov 0x28(%r14),%rax 0.16 : 5bbece: 48 89 05 8b e9 5f 00 mov %rax,0x5fe98b(%rip) # bba860 0.12 : 5bbed5: 0f 84 d5 00 00 00 je 5bbfb0 : hashfunctions = hashtable->outer_hashfunctions; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:939 0.90 : 5bbedb: 49 8b 47 78 mov 0x78(%r15),%rax 2.60 : 5bbedf: 48 89 45 b8 mov %rax,-0x48(%rbp) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 2.51 : 5bbee3: 4d 85 e4 test %r12,%r12 0.00 : 5bbee6: 0f 84 94 00 00 00 je 5bbf80 0.08 : 5bbeec: 49 8b 5c 24 08 mov 0x8(%r12),%rbx : else : hashfunctions = hashtable->inner_hashfunctions; : : foreach(hk, hashkeys) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:943 2.96 : 5bbef1: 48 85 db test %rbx,%rbx 0.00 : 5bbef4: 0f 84 86 00 00 00 je 5bbf80 1.49 : 5bbefa: 45 31 ed xor %r13d,%r13d 1.12 : 5bbefd: 45 31 e4 xor %r12d,%r12d : { : ExprState *keyexpr = (ExprState *) lfirst(hk); 0.04 : 5bbf00: 48 8b 03 mov (%rbx),%rax : hashkey = (hashkey << 1) | ((hashkey & 0x80000000) ? 1 : 0); : : /* : * Get the join attribute value of the tuple : */ : keyval = ExecEvalExpr(keyexpr, econtext, &isNull, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:955 3.11 : 5bbf03: 31 c9 xor %ecx,%ecx : ExprState *keyexpr = (ExprState *) lfirst(hk); : Datum keyval; : bool isNull; : : /* rotate hashkey left 1 bit at each step */ : hashkey = (hashkey << 1) | ((hashkey & 0x80000000) ? 1 : 0); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:950 1.19 : 5bbf05: 41 d1 c5 rol %r13d : : /* : * Get the join attribute value of the tuple : */ : keyval = ExecEvalExpr(keyexpr, econtext, &isNull, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:955 1.00 : 5bbf08: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.96 : 5bbf0c: 4c 89 f6 mov %r14,%rsi 1.39 : 5bbf0f: 48 89 c7 mov %rax,%rdi 1.00 : 5bbf12: ff 50 10 callq *0x10(%rax) : * : * Note: currently, all hashjoinable operators must be strict since : * the hash index AM assumes that. However, it takes so little extra : * code here to allow non-strict that we may as well do it. : */ : if (isNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:970 2.25 : 5bbf15: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:970 7.89 : 5bbf19: 74 35 je 5bbf50 : { : if (hashtable->hashStrict[i] && !keep_nulls) 0.00 : 5bbf1b: 49 8b 87 88 00 00 00 mov 0x88(%r15),%rax 0.00 : 5bbf22: 49 63 d4 movslq %r12d,%rdx 0.00 : 5bbf25: 80 3c 10 00 cmpb $0x0,(%rax,%rdx,1) 0.00 : 5bbf29: 74 41 je 5bbf6c 0.00 : 5bbf2b: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5bbf2f: 75 3b jne 5bbf6c 0.00 : 5bbf31: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 5bbf35: 48 89 05 24 e9 5f 00 mov %rax,0x5fe924(%rip) # bba860 : : MemoryContextSwitchTo(oldContext); : : *hashvalue = hashkey; : return true; : } 0.00 : 5bbf3c: 48 83 c4 38 add $0x38,%rsp 0.00 : 5bbf40: 31 c0 xor %eax,%eax 0.00 : 5bbf42: 5b pop %rbx 0.00 : 5bbf43: 41 5c pop %r12 0.00 : 5bbf45: 41 5d pop %r13 0.00 : 5bbf47: 41 5e pop %r14 0.00 : 5bbf49: 41 5f pop %r15 0.00 : 5bbf4b: c9 leaveq 0.00 : 5bbf4c: c3 retq 0.00 : 5bbf4d: 0f 1f 00 nopl (%rax) : else : { : /* Compute the hash function */ : uint32 hkey; : : hkey = DatumGetUInt32(FunctionCall1(&hashfunctions[i], keyval)); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:984 3.11 : 5bbf50: 49 63 fc movslq %r12d,%rdi 0.04 : 5bbf53: 48 89 c2 mov %rax,%rdx 0.00 : 5bbf56: 31 f6 xor %esi,%esi 0.33 : 5bbf58: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 2.86 : 5bbf5c: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 5bbf60: 48 03 7d b8 add -0x48(%rbp),%rdi 0.23 : 5bbf64: e8 67 21 1c 00 callq 77e0d0 : hashkey ^= hkey; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:985 4.35 : 5bbf69: 41 31 c5 xor %eax,%r13d : if (outer_tuple) : hashfunctions = hashtable->outer_hashfunctions; : else : hashfunctions = hashtable->inner_hashfunctions; : : foreach(hk, hashkeys) 0.10 : 5bbf6c: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5bbf70: 48 85 db test %rbx,%rbx 0.00 : 5bbf73: 74 13 je 5bbf88 : : hkey = DatumGetUInt32(FunctionCall1(&hashfunctions[i], keyval)); : hashkey ^= hkey; : } : : i++; 0.00 : 5bbf75: 41 83 c4 01 add $0x1,%r12d 0.02 : 5bbf79: eb 85 jmp 5bbf00 0.00 : 5bbf7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5bbf80: 45 31 ed xor %r13d,%r13d 0.00 : 5bbf83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 2.80 : 5bbf88: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.96 : 5bbf8c: 48 89 05 cd e8 5f 00 mov %rax,0x5fe8cd(%rip) # bba860 : } : : MemoryContextSwitchTo(oldContext); : : *hashvalue = hashkey; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:993 1.04 : 5bbf93: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 5bbf97: 44 89 28 mov %r13d,(%rax) : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:995 12.86 : 5bbf9a: 48 83 c4 38 add $0x38,%rsp : i++; : } : : MemoryContextSwitchTo(oldContext); : : *hashvalue = hashkey; 0.02 : 5bbf9e: b8 01 00 00 00 mov $0x1,%eax : return true; : } 0.00 : 5bbfa3: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:995 3.47 : 5bbfa4: 41 5c pop %r12 0.55 : 5bbfa6: 41 5d pop %r13 0.22 : 5bbfa8: 41 5e pop %r14 0.00 : 5bbfaa: 41 5f pop %r15 3.35 : 5bbfac: c9 leaveq 1.19 : 5bbfad: c3 retq 0.00 : 5bbfae: 66 90 xchg %ax,%ax : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : if (outer_tuple) : hashfunctions = hashtable->outer_hashfunctions; : else : hashfunctions = hashtable->inner_hashfunctions; 0.43 : 5bbfb0: 49 8b 87 80 00 00 00 mov 0x80(%r15),%rax 0.06 : 5bbfb7: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.04 : 5bbfbb: e9 23 ff ff ff jmpq 5bbee3 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 18.87 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 10.98 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 9.06 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 7.46 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 7.18 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 6.98 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 6.72 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 6.24 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 5.40 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 5.03 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1577 3.73 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 3.57 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 2.95 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 2.33 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1583 2.01 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 1.49 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006425d0 : : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 9.06 : 6425d0: 55 push %rbp 10.98 : 6425d1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 3.57 : 6425d4: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 18.87 : 6425d6: 41 89 f5 mov %esi,%r13d /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 3.73 : 6425d9: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 6.24 : 6425db: 49 89 fc mov %rdi,%r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 1.49 : 6425de: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 6.98 : 6425df: 48 83 ec 18 sub $0x18,%rsp : PgStat_FunctionCounts *fs = fcu->fs; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1577 5.03 : 6425e3: 48 8b 1f mov (%rdi),%rbx : instr_time f_total; : instr_time f_others; : instr_time f_self; : : /* stats not wanted? */ : if (fs == NULL) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1583 2.33 : 6425e6: 48 85 db test %rbx,%rbx 0.00 : 6425e9: 0f 84 6f 01 00 00 je 64275e : return; : : /* total elapsed time in this function call */ : INSTR_TIME_SET_CURRENT(f_total); 0.00 : 6425ef: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 6425f3: 31 f6 xor %esi,%esi 0.00 : 6425f5: e8 c6 6f e2 ff callq 4695c0 : INSTR_TIME_SUBTRACT(f_total, fcu->f_start); 0.00 : 6425fa: 48 8b 4d d8 mov -0x28(%rbp),%rcx 0.00 : 6425fe: 49 2b 4c 24 30 sub 0x30(%r12),%rcx 0.00 : 642603: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 642607: 49 2b 44 24 28 sub 0x28(%r12),%rax 0.00 : 64260c: 48 85 c9 test %rcx,%rcx 0.00 : 64260f: 48 89 4d d8 mov %rcx,-0x28(%rbp) 0.00 : 642613: 49 89 c1 mov %rax,%r9 0.00 : 642616: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 64261a: 79 1c jns 642638 0.00 : 64261c: 0f 1f 40 00 nopl 0x0(%rax) : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { 0.00 : 642620: 48 83 e8 01 sub $0x1,%rax : if (fs == NULL) : return; : : /* total elapsed time in this function call */ : INSTR_TIME_SET_CURRENT(f_total); : INSTR_TIME_SUBTRACT(f_total, fcu->f_start); 0.00 : 642624: 48 81 c1 40 42 0f 00 add $0xf4240,%rcx 0.00 : 64262b: 78 f3 js 642620 0.00 : 64262d: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 642631: 48 89 4d d8 mov %rcx,-0x28(%rbp) 0.00 : 642635: 49 89 c1 mov %rax,%r9 : : /* self usage: elapsed minus anything already charged to other calls */ : f_others = total_func_time; 0.00 : 642638: 4c 8b 05 e9 98 53 00 mov 0x5398e9(%rip),%r8 # b7bf28 0.00 : 64263f: 4c 8b 15 da 98 53 00 mov 0x5398da(%rip),%r10 # b7bf20 : INSTR_TIME_SUBTRACT(f_others, fcu->save_total); 0.00 : 642646: 4c 89 c0 mov %r8,%rax 0.00 : 642649: 4c 89 d2 mov %r10,%rdx 0.00 : 64264c: 49 2b 54 24 18 sub 0x18(%r12),%rdx 0.00 : 642651: 49 2b 44 24 20 sub 0x20(%r12),%rax 0.00 : 642656: 79 14 jns 64266c 0.00 : 642658: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 64265f: 00 0.00 : 642660: 48 83 ea 01 sub $0x1,%rdx 0.00 : 642664: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 64266a: 78 f4 js 642660 : f_self = f_total; : INSTR_TIME_SUBTRACT(f_self, f_others); 0.00 : 64266c: 4c 89 cf mov %r9,%rdi 0.00 : 64266f: 48 89 ce mov %rcx,%rsi 0.00 : 642672: 48 29 d7 sub %rdx,%rdi 0.00 : 642675: 48 29 c6 sub %rax,%rsi 0.00 : 642678: 79 13 jns 64268d 0.00 : 64267a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 642680: 48 83 ef 01 sub $0x1,%rdi 0.00 : 642684: 48 81 c6 40 42 0f 00 add $0xf4240,%rsi 0.00 : 64268b: 78 f3 js 642680 : : /* update backend-wide total time */ : INSTR_TIME_ADD(total_func_time, f_self); 0.00 : 64268d: 4a 8d 04 06 lea (%rsi,%r8,1),%rax 0.00 : 642691: 4a 8d 14 17 lea (%rdi,%r10,1),%rdx 0.00 : 642695: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 64269b: 48 89 15 7e 98 53 00 mov %rdx,0x53987e(%rip) # b7bf20 0.00 : 6426a2: 48 89 05 7f 98 53 00 mov %rax,0x53987f(%rip) # b7bf28 0.00 : 6426a9: 7e 25 jle 6426d0 0.00 : 6426ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6426b0: 48 2d 40 42 0f 00 sub $0xf4240,%rax : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { 0.00 : 6426b6: 48 83 c2 01 add $0x1,%rdx : INSTR_TIME_SUBTRACT(f_others, fcu->save_total); : f_self = f_total; : INSTR_TIME_SUBTRACT(f_self, f_others); : : /* update backend-wide total time */ : INSTR_TIME_ADD(total_func_time, f_self); 0.00 : 6426ba: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6426c0: 7f ee jg 6426b0 0.00 : 6426c2: 48 89 15 57 98 53 00 mov %rdx,0x539857(%rip) # b7bf20 0.00 : 6426c9: 48 89 05 58 98 53 00 mov %rax,0x539858(%rip) # b7bf28 : * pre-call value of f_total_time. This is necessary to avoid : * double-counting any time taken by recursive calls of myself. (We do : * not need any similar kluge for self time, since that already excludes : * any recursive calls.) : */ : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); 0.00 : 6426d0: 48 89 c8 mov %rcx,%rax 0.00 : 6426d3: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : 6426d8: 4c 89 ca mov %r9,%rdx 0.00 : 6426db: 49 03 54 24 08 add 0x8(%r12),%rdx 0.00 : 6426e0: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6426e6: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6426ea: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 6426ee: 7e 1a jle 64270a 0.00 : 6426f0: 48 2d 40 42 0f 00 sub $0xf4240,%rax : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { 0.00 : 6426f6: 48 83 c2 01 add $0x1,%rdx : * pre-call value of f_total_time. This is necessary to avoid : * double-counting any time taken by recursive calls of myself. (We do : * not need any similar kluge for self time, since that already excludes : * any recursive calls.) : */ : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); 0.00 : 6426fa: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 642700: 7f ee jg 6426f0 0.00 : 642702: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 642706: 48 89 45 d8 mov %rax,-0x28(%rbp) : : /* update counters in function stats table */ : if (finalize) 0.00 : 64270a: 45 84 ed test %r13b,%r13b 0.00 : 64270d: 75 61 jne 642770 : fs->f_numcalls++; : fs->f_total_time = f_total; 0.00 : 64270f: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 642713: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 642717: 48 8b 45 d8 mov -0x28(%rbp),%rax : INSTR_TIME_ADD(fs->f_self_time, f_self); 0.00 : 64271b: 48 01 7b 18 add %rdi,0x18(%rbx) : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); : : /* update counters in function stats table */ : if (finalize) : fs->f_numcalls++; : fs->f_total_time = f_total; 0.00 : 64271f: 48 89 43 10 mov %rax,0x10(%rbx) : INSTR_TIME_ADD(fs->f_self_time, f_self); 0.00 : 642723: 48 89 f0 mov %rsi,%rax 0.00 : 642726: 48 03 43 20 add 0x20(%rbx),%rax 0.00 : 64272a: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 642730: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 642734: 7e 21 jle 642757 0.00 : 642736: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 64273d: 00 00 00 0.00 : 642740: 48 2d 40 42 0f 00 sub $0xf4240,%rax 0.00 : 642746: 48 83 43 18 01 addq $0x1,0x18(%rbx) 0.00 : 64274b: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 642751: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 642755: 7f e9 jg 642740 : : /* indicate that we have something to send */ : have_function_stats = true; 0.00 : 642757: c6 05 4a 95 53 00 01 movb $0x1,0x53954a(%rip) # b7bca8 : } /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 6.72 : 64275e: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 2.95 : 642762: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 5.40 : 642763: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 2.01 : 642765: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 7.46 : 642767: c9 leaveq 7.18 : 642768: c3 retq 0.00 : 642769: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); : : /* update counters in function stats table */ : if (finalize) : fs->f_numcalls++; 0.00 : 642770: 48 83 03 01 addq $0x1,(%rbx) 0.00 : 642774: eb 99 jmp 64270f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 46.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1508 6.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 5.79 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 5.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1509 4.70 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 4.18 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 4.04 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1488 3.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1488 2.82 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 2.43 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1489 1.98 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 1.95 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 1.68 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 1.36 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1489 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1489 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000496e90 : : #endif /* !defined(HEAPDEBUGALL) */ : : : HeapTuple : heap_getnext(HeapScanDesc scan, ScanDirection direction) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 6.11 : 496e90: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 1.68 : 496e91: 48 89 e5 mov %rsp,%rbp 3.25 : 496e94: 53 push %rbx 2.82 : 496e95: 48 89 fb mov %rdi,%rbx 0.93 : 496e98: 48 83 ec 08 sub $0x8,%rsp : /* Note: no locking manipulations needed */ : : HEAPDEBUG_1; /* heap_getnext( info ) */ : : if (scan->rs_pageatatime) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1488 3.23 : 496e9c: 80 7f 21 00 cmpb $0x0,0x21(%rdi) 4.04 : 496ea0: 74 3e je 496ee0 : heapgettup_pagemode(scan, direction, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1489 1.36 : 496ea2: 48 8b 4f 18 mov 0x18(%rdi),%rcx 0.86 : 496ea6: 8b 57 10 mov 0x10(%rdi),%edx 2.43 : 496ea9: e8 42 f2 ff ff callq 4960f0 : scan->rs_nkeys, scan->rs_key); : else : heapgettup(scan, direction, scan->rs_nkeys, scan->rs_key); : : if (scan->rs_ctup.t_data == NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 1.32 : 496eae: 31 c0 xor %eax,%eax 4.70 : 496eb0: 48 83 7b 58 00 cmpq $0x0,0x58(%rbx) 1.98 : 496eb5: 74 18 je 496ecf : * if we get here it means we have a new current scan tuple, so point to : * the proper return buffer and return the tuple. : */ : HEAPDEBUG_3; /* heap_getnext returning tuple */ : : pgstat_count_heap_getnext(scan->rs_rd); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 4.18 : 496eb7: 48 8b 03 mov (%rbx),%rax 0.16 : 496eba: 48 8b 80 38 01 00 00 mov 0x138(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 5.79 : 496ec1: 48 85 c0 test %rax,%rax 0.00 : 496ec4: 74 05 je 496ecb /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 1.95 : 496ec6: 48 83 40 18 01 addq $0x1,0x18(%rax) : : return &(scan->rs_ctup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1508 46.56 : 496ecb: 48 8d 43 48 lea 0x48(%rbx),%rax : } 0.30 : 496ecf: 48 83 c4 08 add $0x8,%rsp 0.36 : 496ed3: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1509 5.54 : 496ed4: c9 leaveq 0.45 : 496ed5: c3 retq 0.00 : 496ed6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 496edd: 00 00 00 : : if (scan->rs_pageatatime) : heapgettup_pagemode(scan, direction, : scan->rs_nkeys, scan->rs_key); : else : heapgettup(scan, direction, scan->rs_nkeys, scan->rs_key); 0.00 : 496ee0: 48 8b 4f 18 mov 0x18(%rdi),%rcx 0.00 : 496ee4: 8b 57 10 mov 0x10(%rdi),%edx 0.00 : 496ee7: e8 c4 f7 ff ff callq 4966b0 0.00 : 496eec: eb c0 jmp 496eae Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 56.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 18.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:465 2.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:453 1.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 1.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 1.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:445 1.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:464 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:468 0.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:471 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:445 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 0.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:446 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:457 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:471 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007832f0 : : * from the data in the hash table and return true. If not, it will return : * false. : */ : bool : CHashSearch(CHashTable table, void *entry) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.87 : 7832f0: 55 push %rbp 1.85 : 7832f1: 48 89 e5 mov %rsp,%rbp 0.89 : 7832f4: 41 54 push %r12 0.32 : 7832f6: 49 89 f4 mov %rsi,%r12 0.02 : 7832f9: 53 push %rbx 0.12 : 7832fa: 48 89 fb mov %rdi,%rbx 0.89 : 7832fd: 48 83 ec 20 sub $0x20,%rsp : uint32 hashcode = hash_any(entry, table->desc.key_size); 0.20 : 783301: 0f b7 77 0e movzwl 0xe(%rdi),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:445 1.44 : 783305: 4c 89 e7 mov %r12,%rdi 0.79 : 783308: e8 43 d0 d0 ff callq 490350 : CHashPtr *b = &table->bucket[bucket]; : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.04 : 78330d: 0f b6 4b 14 movzbl 0x14(%rbx),%ecx : */ : bool : CHashSearch(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 783311: 8b 7b 10 mov 0x10(%rbx),%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:446 0.69 : 783314: 21 c7 and %eax,%edi : CHashPtr *b = &table->bucket[bucket]; 0.06 : 783316: 89 fe mov %edi,%esi : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.04 : 783318: d3 ef shr %cl,%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 1.22 : 78331a: 0f b6 4b 15 movzbl 0x15(%rbx),%ecx 0.00 : 78331e: 89 fa mov %edi,%edx : bool : CHashSearch(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; : CHashPtr *b = &table->bucket[bucket]; 0.00 : 783320: 48 c1 e6 02 shl $0x2,%rsi 0.30 : 783324: 48 03 73 20 add 0x20(%rbx),%rsi : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.77 : 783328: d3 ea shr %cl,%edx 1.64 : 78332a: 48 8b 0d 17 a6 3f 00 mov 0x3fa617(%rip),%rcx # b7d948 0.02 : 783331: 01 fa add %edi,%edx 0.02 : 783333: 48 c1 e2 02 shl $0x2,%rdx 0.32 : 783337: 48 03 53 28 add 0x28(%rbx),%rdx 1.09 : 78333b: 48 89 91 e8 02 00 00 mov %rdx,0x2e8(%rcx) : pg_memory_barrier(); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:453 2.31 : 783342: f0 83 04 24 00 lock addl $0x0,(%rsp) : : /* Scan bucket and return data from any matching entry. */ : CHashBucketScan(table, b, hashcode, entry, &scan); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 56.45 : 783347: 4c 8d 45 d0 lea -0x30(%rbp),%r8 0.00 : 78334b: 4c 89 e1 mov %r12,%rcx 0.00 : 78334e: 89 c2 mov %eax,%edx 0.00 : 783350: 48 89 df mov %rbx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 0.89 : 783353: e8 48 f9 ff ff callq 782ca0 : if (scan.found) 0.49 : 783358: 80 7d e8 00 cmpb $0x0,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:457 0.63 : 78335c: 75 32 jne 783390 : CHashNodeGetItem(scan.target_node) + table->desc.key_size, : table->desc.element_size - table->desc.key_size); : : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:464 0.91 : 78335e: f0 83 04 24 00 lock addl $0x0,(%rsp) : MyProc->hazard[0] = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:465 18.73 : 783363: 48 8b 05 de a5 3f 00 mov 0x3fa5de(%rip),%rax # b7d948 0.00 : 78336a: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 783371: 00 00 00 00 : : CHashTableIncrementStatistic(table, CHS_Search); : if (!scan.found) 0.00 : 783375: 0f b6 45 e8 movzbl -0x18(%rbp),%eax : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); : MyProc->hazard[0] = NULL; : : CHashTableIncrementStatistic(table, CHS_Search); 0.00 : 783379: 48 83 43 40 01 addq $0x1,0x40(%rbx) : if (!scan.found) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:468 0.83 : 78337e: 84 c0 test %al,%al 0.00 : 783380: 75 05 jne 783387 : CHashTableIncrementStatistic(table, CHS_Search_Failed); 0.00 : 783382: 48 83 43 48 01 addq $0x1,0x48(%rbx) : return scan.found; : } 0.12 : 783387: 48 83 c4 20 add $0x20,%rsp 0.24 : 78338b: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:471 0.57 : 78338c: 41 5c pop %r12 0.02 : 78338e: c9 leaveq 0.81 : 78338f: c3 retq : pg_memory_barrier(); : : /* Scan bucket and return data from any matching entry. */ : CHashBucketScan(table, b, hashcode, entry, &scan); : if (scan.found) : memcpy(((char *) entry) + table->desc.key_size, /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 0.59 : 783390: 0f b7 43 0e movzwl 0xe(%rbx),%eax 0.02 : 783394: 0f b7 53 0c movzwl 0xc(%rbx),%edx 0.00 : 783398: 0f b7 f0 movzwl %ax,%esi 0.02 : 78339b: 29 c2 sub %eax,%edx 0.73 : 78339d: 49 8d 3c 34 lea (%r12,%rsi,1),%rdi 0.00 : 7833a1: 48 83 c6 08 add $0x8,%rsi 0.00 : 7833a5: 48 03 75 e0 add -0x20(%rbp),%rsi 0.02 : 7833a9: 48 63 d2 movslq %edx,%rdx 0.89 : 7833ac: e8 3f 68 ce ff callq 469bf0 1.09 : 7833b1: eb ab jmp 78335e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.18 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 14.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 13.30 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 13.03 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 9.19 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 9.09 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 6.49 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 6.41 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1511 4.38 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 2.83 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 1.88 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 1.83 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 1.80 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000642780 : : * Called by the executor before invoking a function. : */ : void : pgstat_init_function_usage(FunctionCallInfoData *fcinfo, : PgStat_FunctionCallUsage *fcu) : { 0.13 : 642780: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 4.38 : 642781: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 13.03 : 642784: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 1.88 : 642786: 49 89 fc mov %rdi,%r12 1.83 : 642789: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 14.35 : 64278a: 48 89 f3 mov %rsi,%rbx 0.00 : 64278d: 48 83 ec 70 sub $0x70,%rsp : PgStat_BackendFunctionEntry *htabent; : bool found; : : if (pgstat_track_functions <= fcinfo->flinfo->fn_stats) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 1.80 : 642791: 48 8b 17 mov (%rdi),%rdx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 13.30 : 642794: 0f b6 42 10 movzbl 0x10(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 2.83 : 642798: 3b 05 06 94 53 00 cmp 0x539406(%rip),%eax # b7bba4 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 15.18 : 64279e: 0f 8d ac 00 00 00 jge 642850 : /* stats not wanted */ : fcu->fs = NULL; : return; : } : : if (!pgStatFunctions) 0.00 : 6427a4: 48 83 3d 04 95 53 00 cmpq $0x0,0x539504(%rip) # b7bcb0 0.00 : 6427ab: 00 0.00 : 6427ac: 0f 84 de 00 00 00 je 642890 : &hash_ctl, : HASH_ELEM | HASH_FUNCTION); : } : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, 0.00 : 6427b2: 48 8b 3d f7 94 53 00 mov 0x5394f7(%rip),%rdi # b7bcb0 0.00 : 6427b9: 48 8d 72 08 lea 0x8(%rdx),%rsi 0.00 : 6427bd: 48 8d 4d ef lea -0x11(%rbp),%rcx 0.00 : 6427c1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6427c6: e8 d5 1e 14 00 callq 7846a0 : HASH_ENTER, &found); : if (!found) 0.00 : 6427cb: 80 7d ef 00 cmpb $0x0,-0x11(%rbp) : &hash_ctl, : HASH_ELEM | HASH_FUNCTION); : } : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, 0.00 : 6427cf: 48 89 c2 mov %rax,%rdx 0.00 : 6427d2: 48 8d 40 08 lea 0x8(%rax),%rax : HASH_ENTER, &found); : if (!found) 0.00 : 6427d6: 74 40 je 642818 : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); : : fcu->fs = &htabent->f_counts; 0.00 : 6427d8: 48 89 03 mov %rax,(%rbx) : : /* save stats for this function, later used to compensate for recursion */ : fcu->save_f_total_time = htabent->f_counts.f_total_time; 0.00 : 6427db: 48 8b 42 10 mov 0x10(%rdx),%rax : : /* save current backend-wide total time */ : fcu->save_total = total_func_time; : : /* get clock time as of function start */ : INSTR_TIME_SET_CURRENT(fcu->f_start); 0.00 : 6427df: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 6427e3: 31 f6 xor %esi,%esi : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); : : fcu->fs = &htabent->f_counts; : : /* save stats for this function, later used to compensate for recursion */ : fcu->save_f_total_time = htabent->f_counts.f_total_time; 0.00 : 6427e5: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 6427e9: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 6427ed: 48 89 43 10 mov %rax,0x10(%rbx) : : /* save current backend-wide total time */ : fcu->save_total = total_func_time; 0.00 : 6427f1: 48 8b 05 28 97 53 00 mov 0x539728(%rip),%rax # b7bf20 0.00 : 6427f8: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 6427fc: 48 8b 05 25 97 53 00 mov 0x539725(%rip),%rax # b7bf28 0.00 : 642803: 48 89 43 20 mov %rax,0x20(%rbx) : : /* get clock time as of function start */ : INSTR_TIME_SET_CURRENT(fcu->f_start); 0.00 : 642807: e8 b4 6d e2 ff callq 4695c0 : } 0.00 : 64280c: 48 83 c4 70 add $0x70,%rsp 0.00 : 642810: 5b pop %rbx 0.00 : 642811: 41 5c pop %r12 0.00 : 642813: c9 leaveq 0.00 : 642814: c3 retq 0.00 : 642815: 0f 1f 00 nopl (%rax) : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, : HASH_ENTER, &found); : if (!found) : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); 0.00 : 642818: a8 07 test $0x7,%al 0.00 : 64281a: 75 44 jne 642860 0.00 : 64281c: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 642823: 00 0.00 : 642824: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : 64282b: 00 0.00 : 64282c: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 642833: 00 0.00 : 642834: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 64283b: 00 0.00 : 64283c: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 642843: 00 0.00 : 642844: eb 92 jmp 6427d8 0.00 : 642846: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 64284d: 00 00 00 : bool found; : : if (pgstat_track_functions <= fcinfo->flinfo->fn_stats) : { : /* stats not wanted */ : fcu->fs = NULL; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1511 6.41 : 642850: 48 c7 06 00 00 00 00 movq $0x0,(%rsi) : /* save current backend-wide total time */ : fcu->save_total = total_func_time; : : /* get clock time as of function start */ : INSTR_TIME_SET_CURRENT(fcu->f_start); : } /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 9.09 : 642857: 48 83 c4 70 add $0x70,%rsp 0.00 : 64285b: 5b pop %rbx 0.10 : 64285c: 41 5c pop %r12 6.49 : 64285e: c9 leaveq 9.19 : 64285f: c3 retq : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, : HASH_ENTER, &found); : if (!found) : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); 0.00 : 642860: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 642867: 00 0.00 : 642868: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 64286f: 00 0.00 : 642870: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 642877: 00 0.00 : 642878: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 64287f: 00 0.00 : 642880: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 642887: 00 0.00 : 642888: e9 4b ff ff ff jmpq 6427d8 0.00 : 64288d: 0f 1f 00 nopl (%rax) : if (!pgStatFunctions) : { : /* First time through - initialize function stat table */ : HASHCTL hash_ctl; : : memset(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 642890: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 642894: 31 c0 xor %eax,%eax 0.00 : 642896: b9 0d 00 00 00 mov $0xd,%ecx : hash_ctl.keysize = sizeof(Oid); : hash_ctl.entrysize = sizeof(PgStat_BackendFunctionEntry); : hash_ctl.hash = oid_hash; : pgStatFunctions = hash_create("Function stat entries", 0.00 : 64289b: be 00 02 00 00 mov $0x200,%esi : if (!pgStatFunctions) : { : /* First time through - initialize function stat table */ : HASHCTL hash_ctl; : : memset(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 6428a0: 48 89 d7 mov %rdx,%rdi 0.00 : 6428a3: f3 48 ab rep stos %rax,%es:(%rdi) : hash_ctl.keysize = sizeof(Oid); 0.00 : 6428a6: 48 c7 45 a8 04 00 00 movq $0x4,-0x58(%rbp) 0.00 : 6428ad: 00 : hash_ctl.entrysize = sizeof(PgStat_BackendFunctionEntry); 0.00 : 6428ae: 48 c7 45 b0 30 00 00 movq $0x30,-0x50(%rbp) 0.00 : 6428b5: 00 : hash_ctl.hash = oid_hash; : pgStatFunctions = hash_create("Function stat entries", 0.00 : 6428b6: bf 1c f0 89 00 mov $0x89f01c,%edi : HASHCTL hash_ctl; : : memset(&hash_ctl, 0, sizeof(hash_ctl)); : hash_ctl.keysize = sizeof(Oid); : hash_ctl.entrysize = sizeof(PgStat_BackendFunctionEntry); : hash_ctl.hash = oid_hash; 0.00 : 6428bb: 48 c7 45 b8 50 4f 78 movq $0x784f50,-0x48(%rbp) 0.00 : 6428c2: 00 : pgStatFunctions = hash_create("Function stat entries", 0.00 : 6428c3: b1 30 mov $0x30,%cl 0.00 : 6428c5: e8 e6 1f 14 00 callq 7848b0 0.00 : 6428ca: 48 89 05 df 93 53 00 mov %rax,0x5393df(%rip) # b7bcb0 0.00 : 6428d1: 49 8b 14 24 mov (%r12),%rdx 0.00 : 6428d5: e9 d8 fe ff ff jmpq 6427b2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.57 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:394 6.63 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:396 4.82 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:401 4.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:393 4.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:415 4.42 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:402 4.40 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:396 4.15 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 4.06 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 2.57 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 1.90 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:393 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:406 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 1.52 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 1.36 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:401 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:402 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:414 1.16 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 0.98 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 0.94 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:393 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:344 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.76 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:406 0.71 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:419 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:402 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:415 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:414 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000495e60 : : * In page-at-a-time mode it performs additional work, namely determining : * which tuples on the page are visible. : */ : static void : heapgetpage(HeapScanDesc scan, BlockNumber page) : { 0.33 : 495e60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 0.98 : 495e61: 48 89 e5 mov %rsp,%rbp 0.02 : 495e64: 41 57 push %r15 0.38 : 495e66: 41 56 push %r14 0.09 : 495e68: 49 89 fe mov %rdi,%r14 0.00 : 495e6b: 41 55 push %r13 0.07 : 495e6d: 41 54 push %r12 0.04 : 495e6f: 53 push %rbx 0.02 : 495e70: 48 83 ec 78 sub $0x78,%rsp 0.02 : 495e74: 89 b5 6c ff ff ff mov %esi,-0x94(%rbp) : bool all_visible; : : Assert(page < scan->rs_nblocks); : : /* release previous scan buffer, if any */ : if (BufferIsValid(scan->rs_cbuf)) 0.07 : 495e7a: 8b 7f 64 mov 0x64(%rdi),%edi 0.02 : 495e7d: 85 ff test %edi,%edi 0.02 : 495e7f: 0f 85 fb 01 00 00 jne 496080 : /* : * Be sure to check for interrupts at least once per page. Checks at : * higher code levels won't be able to stop a seqscan that encounters many : * pages' worth of consecutive dead tuples. : */ : CHECK_FOR_INTERRUPTS(); 0.07 : 495e85: 0f b6 05 04 42 72 00 movzbl 0x724204(%rip),%eax # bba090 0.00 : 495e8c: 84 c0 test %al,%al 0.00 : 495e8e: 0f 85 d4 01 00 00 jne 496068 : : /* read page using selected strategy */ : scan->rs_cbuf = ReadBufferExtended(scan->rs_rd, MAIN_FORKNUM, page, 0.00 : 495e94: 4d 8b 46 38 mov 0x38(%r14),%r8 0.00 : 495e98: 8b 95 6c ff ff ff mov -0x94(%rbp),%edx 0.04 : 495e9e: 31 c9 xor %ecx,%ecx 0.00 : 495ea0: 49 8b 3e mov (%r14),%rdi 0.04 : 495ea3: 31 f6 xor %esi,%esi 0.02 : 495ea5: e8 c6 06 1e 00 callq 676570 : RBM_NORMAL, scan->rs_strategy); : scan->rs_cblock = page; : : if (!scan->rs_pageatatime) 0.18 : 495eaa: 41 80 7e 21 00 cmpb $0x0,0x21(%r14) : * pages' worth of consecutive dead tuples. : */ : CHECK_FOR_INTERRUPTS(); : : /* read page using selected strategy */ : scan->rs_cbuf = ReadBufferExtended(scan->rs_rd, MAIN_FORKNUM, page, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:344 0.87 : 495eaf: 41 89 c7 mov %eax,%r15d 0.02 : 495eb2: 41 89 46 64 mov %eax,0x64(%r14) : RBM_NORMAL, scan->rs_strategy); : scan->rs_cblock = page; 0.13 : 495eb6: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax 0.02 : 495ebc: 41 89 46 60 mov %eax,0x60(%r14) : : if (!scan->rs_pageatatime) 0.11 : 495ec0: 75 16 jne 495ed8 : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : : Assert(ntup <= MaxHeapTuplesPerPage); : scan->rs_ntuples = ntup; : } 0.00 : 495ec2: 48 83 c4 78 add $0x78,%rsp 0.00 : 495ec6: 5b pop %rbx 0.00 : 495ec7: 41 5c pop %r12 0.00 : 495ec9: 41 5d pop %r13 0.00 : 495ecb: 41 5e pop %r14 0.00 : 495ecd: 41 5f pop %r15 0.00 : 495ecf: c9 leaveq 0.00 : 495ed0: c3 retq 0.00 : 495ed1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (!scan->rs_pageatatime) : return; : : buffer = scan->rs_cbuf; : snapshot = scan->rs_snapshot; 0.00 : 495ed8: 49 8b 4e 08 mov 0x8(%r14),%rcx : : /* : * Prune and repair fragmentation for the whole page, if possible. : */ : heap_page_prune_opt(scan->rs_rd, buffer); 0.11 : 495edc: 44 89 fe mov %r15d,%esi : : if (!scan->rs_pageatatime) : return; : : buffer = scan->rs_cbuf; : snapshot = scan->rs_snapshot; 0.00 : 495edf: 48 89 4d 88 mov %rcx,-0x78(%rbp) : : /* : * Prune and repair fragmentation for the whole page, if possible. : */ : heap_page_prune_opt(scan->rs_rd, buffer); 0.20 : 495ee3: 49 8b 3e mov (%r14),%rdi 0.07 : 495ee6: e8 65 97 00 00 callq 49f650 : /* : * We must hold share lock on the buffer content while examining tuple : * visibility. Afterwards, however, the tuples we have found to be : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); 0.02 : 495eeb: be 01 00 00 00 mov $0x1,%esi 0.00 : 495ef0: 44 89 ff mov %r15d,%edi 0.00 : 495ef3: e8 18 e8 1d 00 callq 674710 : : dp = (Page) BufferGetPage(buffer); 0.00 : 495ef8: 45 85 ff test %r15d,%r15d 0.00 : 495efb: 0f 88 cf 01 00 00 js 4960d0 0.09 : 495f01: 41 8d 47 ff lea -0x1(%r15),%eax 0.02 : 495f05: 48 63 d8 movslq %eax,%rbx 0.09 : 495f08: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 495f0c: 48 03 1d e5 9b 72 00 add 0x729be5(%rip),%rbx # bbfaf8 : lines = PageGetMaxOffsetNumber(dp); 0.00 : 495f13: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 495f17: c7 45 90 00 00 00 00 movl $0x0,-0x70(%rbp) 0.09 : 495f1e: 66 83 f8 18 cmp $0x18,%ax 0.00 : 495f22: 0f 87 88 01 00 00 ja 4960b0 : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 495f28: c6 45 af 00 movb $0x0,-0x51(%rbp) 0.00 : 495f2c: f6 43 0a 04 testb $0x4,0xa(%rbx) 0.00 : 495f30: 0f 85 62 01 00 00 jne 496098 : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; 0.02 : 495f36: 8b 7d 90 mov -0x70(%rbp),%edi : lineoff++, lpp++) 0.00 : 495f39: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%rbp) : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; 0.02 : 495f40: 85 ff test %edi,%edi 0.00 : 495f42: 0f 8e c8 00 00 00 jle 496010 : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); : ItemPointerSet(&(loctup.t_self), page, lineoff); 0.04 : 495f48: 8b 8d 6c ff ff ff mov -0x94(%rbp),%ecx : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); 0.00 : 495f4e: 4c 8d 6b 18 lea 0x18(%rbx),%r13 : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); : ItemPointerSet(&(loctup.t_self), page, lineoff); 0.04 : 495f52: 41 bc 01 00 00 00 mov $0x1,%r12d 0.04 : 495f58: c1 e9 10 shr $0x10,%ecx 0.00 : 495f5b: 66 89 8d 70 ff ff ff mov %cx,-0x90(%rbp) 0.04 : 495f62: eb 19 jmp 495f7d 0.00 : 495f64: 0f 1f 40 00 nopl 0x0(%rax) : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; : lineoff++, lpp++) 0.00 : 495f68: 41 83 c4 01 add $0x1,%r12d : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; 0.00 : 495f6c: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 495f70: 39 45 90 cmp %eax,-0x70(%rbp) 0.00 : 495f73: 0f 8c 97 00 00 00 jl 496010 : lineoff++, lpp++) 0.27 : 495f79: 49 83 c5 04 add $0x4,%r13 : { : if (ItemIdIsNormal(lpp)) 0.36 : 495f7d: 41 8b 45 00 mov 0x0(%r13),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:396 6.63 : 495f81: 25 00 80 01 00 and $0x18000,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:396 4.40 : 495f86: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 495f8b: 75 db jne 495f68 : { : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); 0.49 : 495f8d: 49 8b 36 mov (%r14),%rsi : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); : ItemPointerSet(&(loctup.t_self), page, lineoff); 0.18 : 495f90: 0f b7 8d 6c ff ff ff movzwl -0x94(%rbp),%ecx : if (ItemIdIsNormal(lpp)) : { : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:401 1.36 : 495f97: 8b 46 40 mov 0x40(%rsi),%eax 4.82 : 495f9a: 89 45 bc mov %eax,-0x44(%rbp) : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:402 0.63 : 495f9d: 41 0f b7 45 00 movzwl 0x0(%r13),%eax 0.40 : 495fa2: 25 ff 7f 00 00 and $0x7fff,%eax 1.25 : 495fa7: 48 8d 04 03 lea (%rbx,%rax,1),%rax 4.42 : 495fab: 48 89 45 c0 mov %rax,-0x40(%rbp) : loctup.t_len = ItemIdGetLength(lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 0.71 : 495faf: 41 0f b7 45 02 movzwl 0x2(%r13),%eax : ItemPointerSet(&(loctup.t_self), page, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 0.67 : 495fb4: 66 89 4d b6 mov %cx,-0x4a(%rbp) 1.56 : 495fb8: 66 44 89 65 b8 mov %r12w,-0x48(%rbp) : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 4.06 : 495fbd: 66 d1 e8 shr %ax : ItemPointerSet(&(loctup.t_self), page, lineoff); : : if (all_visible) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:406 0.76 : 495fc0: 80 7d af 00 cmpb $0x0,-0x51(%rbp) : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); 0.49 : 495fc4: 0f b7 c0 movzwl %ax,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 1.52 : 495fc7: 89 45 b0 mov %eax,-0x50(%rbp) : ItemPointerSet(&(loctup.t_self), page, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 4.15 : 495fca: 0f b7 85 70 ff ff ff movzwl -0x90(%rbp),%eax 0.60 : 495fd1: 66 89 45 b4 mov %ax,-0x4c(%rbp) : : if (all_visible) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:406 1.76 : 495fd5: 74 59 je 496030 : valid = true; : else : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, 0.29 : 495fd7: 4c 8b 45 88 mov -0x78(%rbp),%r8 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 2.57 : 495fdb: 48 8d 55 b0 lea -0x50(%rbp),%rdx 0.31 : 495fdf: 44 89 f9 mov %r15d,%ecx 0.92 : 495fe2: bf 01 00 00 00 mov $0x1,%edi 0.29 : 495fe7: e8 74 e6 1f 00 callq 694660 : buffer, snapshot); : : if (valid) : scan->rs_vistuples[ntup++] = lineoff; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:415 0.58 : 495fec: 48 63 45 a8 movslq -0x58(%rbp),%rax 4.60 : 495ff0: 66 45 89 64 46 7c mov %r12w,0x7c(%r14,%rax,2) : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; : lineoff++, lpp++) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:394 26.57 : 495ff6: 41 83 c4 01 add $0x1,%r12d : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, : buffer, snapshot); : : if (valid) : scan->rs_vistuples[ntup++] = lineoff; 0.16 : 495ffa: 83 45 a8 01 addl $0x1,-0x58(%rbp) : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:393 1.90 : 495ffe: 41 0f b7 c4 movzwl %r12w,%eax 4.64 : 496002: 39 45 90 cmp %eax,-0x70(%rbp) 0.00 : 496005: 0f 8d 6e ff ff ff jge 495f79 0.94 : 49600b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (valid) : scan->rs_vistuples[ntup++] = lineoff; : } : } : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.16 : 496010: 44 89 ff mov %r15d,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:419 0.65 : 496013: 31 f6 xor %esi,%esi 0.00 : 496015: e8 f6 e6 1d 00 callq 674710 : : Assert(ntup <= MaxHeapTuplesPerPage); : scan->rs_ntuples = ntup; 0.00 : 49601a: 8b 45 a8 mov -0x58(%rbp),%eax 0.13 : 49601d: 41 89 46 78 mov %eax,0x78(%r14) : } 0.00 : 496021: 48 83 c4 78 add $0x78,%rsp 0.02 : 496025: 5b pop %rbx 0.16 : 496026: 41 5c pop %r12 0.04 : 496028: 41 5d pop %r13 0.02 : 49602a: 41 5e pop %r14 0.04 : 49602c: 41 5f pop %r15 0.09 : 49602e: c9 leaveq 0.04 : 49602f: c3 retq : ItemPointerSet(&(loctup.t_self), page, lineoff); : : if (all_visible) : valid = true; : else : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 1.16 : 496030: 48 8b 75 88 mov -0x78(%rbp),%rsi 0.69 : 496034: 44 89 fa mov %r15d,%edx 0.13 : 496037: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.13 : 49603b: ff 16 callq *(%rsi) : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.51 : 49603d: 4c 8b 45 88 mov -0x78(%rbp),%r8 : ItemPointerSet(&(loctup.t_self), page, lineoff); : : if (all_visible) : valid = true; : else : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 1.23 : 496041: 88 45 ae mov %al,-0x52(%rbp) : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.78 : 496044: 48 8d 55 b0 lea -0x50(%rbp),%rdx 0.65 : 496048: 49 8b 36 mov (%r14),%rsi 0.00 : 49604b: 0f be f8 movsbl %al,%edi 0.02 : 49604e: 44 89 f9 mov %r15d,%ecx 0.65 : 496051: e8 0a e6 1f 00 callq 694660 : buffer, snapshot); : : if (valid) 0.29 : 496056: 80 7d ae 00 cmpb $0x0,-0x52(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:414 1.23 : 49605a: 0f 84 08 ff ff ff je 495f68 0.54 : 496060: eb 8a jmp 495fec 0.00 : 496062: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 496068: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49606f: 00 : /* : * Be sure to check for interrupts at least once per page. Checks at : * higher code levels won't be able to stop a seqscan that encounters many : * pages' worth of consecutive dead tuples. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 496070: e8 2b 62 20 00 callq 69c2a0 0.00 : 496075: 0f 1f 00 nopl (%rax) 0.00 : 496078: e9 17 fe ff ff jmpq 495e94 0.00 : 49607d: 0f 1f 00 nopl (%rax) : Assert(page < scan->rs_nblocks); : : /* release previous scan buffer, if any */ : if (BufferIsValid(scan->rs_cbuf)) : { : ReleaseBuffer(scan->rs_cbuf); 0.04 : 496080: e8 db ed 1d 00 callq 674e60 : scan->rs_cbuf = InvalidBuffer; 0.20 : 496085: 41 c7 46 64 00 00 00 movl $0x0,0x64(%r14) 0.00 : 49608c: 00 0.07 : 49608d: 0f 1f 00 nopl (%rax) 0.04 : 496090: e9 f0 fd ff ff jmpq 495e85 0.00 : 496095: 0f 1f 00 nopl (%rax) : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 496098: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 49609c: 80 78 29 00 cmpb $0x0,0x29(%rax) 0.09 : 4960a0: 0f 94 45 af sete -0x51(%rbp) 0.09 : 4960a4: e9 8d fe ff ff jmpq 495f36 0.00 : 4960a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(buffer); : lines = PageGetMaxOffsetNumber(dp); 0.00 : 4960b0: 0f b7 c0 movzwl %ax,%eax : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 4960b3: c6 45 af 00 movb $0x0,-0x51(%rbp) : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(buffer); : lines = PageGetMaxOffsetNumber(dp); 0.07 : 4960b7: 48 83 e8 18 sub $0x18,%rax 0.11 : 4960bb: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4960bf: 89 45 90 mov %eax,-0x70(%rbp) : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 4960c2: f6 43 0a 04 testb $0x4,0xa(%rbx) 0.04 : 4960c6: 0f 84 6a fe ff ff je 495f36 0.09 : 4960cc: eb ca jmp 496098 0.00 : 4960ce: 66 90 xchg %ax,%ax : * visibility. Afterwards, however, the tuples we have found to be : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(buffer); 0.00 : 4960d0: 44 89 f8 mov %r15d,%eax 0.00 : 4960d3: 48 8b 15 3e 70 6e 00 mov 0x6e703e(%rip),%rdx # b7d118 0.00 : 4960da: f7 d0 not %eax 0.00 : 4960dc: 48 98 cltq 0.00 : 4960de: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4960e2: e9 2c fe ff ff jmpq 495f13 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 57.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1307 33.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1253 3.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1287 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1290 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000783ac0 : : register_seq_scan(hashp); : } : : void * : hash_seq_search(HASH_SEQ_STATUS *status) : { 0.03 : 783ac0: 55 push %rbp : long segment_ndx; : HASHSEGMENT segp; : uint32 curBucket; : HASHELEMENT *curElem; : : if ((curElem = status->curEntry) != NULL) 0.00 : 783ac1: 48 8b 57 10 mov 0x10(%rdi),%rdx : register_seq_scan(hashp); : } : : void * : hash_seq_search(HASH_SEQ_STATUS *status) : { 0.25 : 783ac5: 48 89 e5 mov %rsp,%rbp : long segment_ndx; : HASHSEGMENT segp; : uint32 curBucket; : HASHELEMENT *curElem; : : if ((curElem = status->curEntry) != NULL) 0.06 : 783ac8: 48 85 d2 test %rdx,%rdx 0.00 : 783acb: 74 1b je 783ae8 : { : /* Continuing scan of curBucket... */ : status->curEntry = curElem->link; 0.11 : 783acd: 48 8b 02 mov (%rdx),%rax : if (status->curEntry == NULL) /* end of this bucket */ /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1253 33.48 : 783ad0: 48 85 c0 test %rax,%rax : HASHELEMENT *curElem; : : if ((curElem = status->curEntry) != NULL) : { : /* Continuing scan of curBucket... */ : status->curEntry = curElem->link; 0.11 : 783ad3: 48 89 47 10 mov %rax,0x10(%rdi) : if (status->curEntry == NULL) /* end of this bucket */ 0.00 : 783ad7: 0f 84 8b 00 00 00 je 783b68 : ++status->curBucket; : return (void *) ELEMENTKEY(curElem); 0.22 : 783add: 48 8d 42 10 lea 0x10(%rdx),%rax : status->curEntry = curElem->link; : if (status->curEntry == NULL) /* end of this bucket */ : ++curBucket; : status->curBucket = curBucket; : return (void *) ELEMENTKEY(curElem); : } 0.11 : 783ae1: c9 leaveq 0.25 : 783ae2: c3 retq 0.00 : 783ae3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * Search for next nonempty bucket starting at curBucket. : */ : curBucket = status->curBucket; : hashp = status->hashp; 0.00 : 783ae8: 4c 8b 0f mov (%rdi),%r9 : } : : /* : * Search for next nonempty bucket starting at curBucket. : */ : curBucket = status->curBucket; 0.22 : 783aeb: 8b 77 08 mov 0x8(%rdi),%esi : hashp = status->hashp; : hctl = hashp->hctl; : ssize = hashp->ssize; : max_bucket = hctl->max_bucket; 0.03 : 783aee: 49 8b 01 mov (%r9),%rax : * Search for next nonempty bucket starting at curBucket. : */ : curBucket = status->curBucket; : hashp = status->hashp; : hctl = hashp->hctl; : ssize = hashp->ssize; 0.03 : 783af1: 4d 8b 59 50 mov 0x50(%r9),%r11 : max_bucket = hctl->max_bucket; 0.00 : 783af5: 44 8b 50 28 mov 0x28(%rax),%r10d : : if (curBucket > max_bucket) 0.36 : 783af9: 44 39 d6 cmp %r10d,%esi 0.00 : 783afc: 77 7d ja 783b7b : } : : /* : * first find the right segment in the table directory. : */ : segment_num = curBucket >> hashp->sshift; 0.08 : 783afe: 41 8b 49 58 mov 0x58(%r9),%ecx 0.00 : 783b02: 89 f0 mov %esi,%eax : segment_ndx = MOD(curBucket, ssize); 0.00 : 783b04: 89 f2 mov %esi,%edx : } : : /* : * first find the right segment in the table directory. : */ : segment_num = curBucket >> hashp->sshift; 0.03 : 783b06: d3 e8 shr %cl,%eax 0.08 : 783b08: 41 89 c0 mov %eax,%r8d : segment_ndx = MOD(curBucket, ssize); 0.00 : 783b0b: 49 8d 43 ff lea -0x1(%r11),%rax 0.00 : 783b0f: 21 c2 and %eax,%edx : : segp = hashp->dir[segment_num]; 0.00 : 783b11: 49 8b 41 08 mov 0x8(%r9),%rax 0.03 : 783b15: 4e 8b 0c c0 mov (%rax,%r8,8),%r9 0.34 : 783b19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Pick up the first item in this bucket's chain. If chain is not empty : * we can begin searching it. Otherwise we have to advance to find the : * next nonempty bucket. We try to optimize that case since searching a : * near-empty hashtable has to iterate this loop a lot. : */ : while ((curElem = segp[segment_ndx]) == NULL) 0.20 : 783b20: 49 8b 0c d1 mov (%r9,%rdx,8),%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1287 3.69 : 783b24: 48 85 c9 test %rcx,%rcx 0.00 : 783b27: 75 24 jne 783b4d : { : /* empty bucket, advance to next */ : if (++curBucket > max_bucket) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1290 1.06 : 783b29: 83 c6 01 add $0x1,%esi 0.45 : 783b2c: 41 39 f2 cmp %esi,%r10d 0.00 : 783b2f: 72 47 jb 783b78 : { : status->curBucket = curBucket; : hash_seq_term(status); : return NULL; /* search is done */ : } : if (++segment_ndx >= ssize) 0.17 : 783b31: 48 83 c2 01 add $0x1,%rdx 0.00 : 783b35: 49 39 d3 cmp %rdx,%r11 0.00 : 783b38: 7f e6 jg 783b20 : { : segment_num++; 0.00 : 783b3a: 49 83 c0 01 add $0x1,%r8 : segment_ndx = 0; : segp = hashp->dir[segment_num]; 0.06 : 783b3e: 31 d2 xor %edx,%edx 0.00 : 783b40: 4e 8b 0c c0 mov (%rax,%r8,8),%r9 : * Pick up the first item in this bucket's chain. If chain is not empty : * we can begin searching it. Otherwise we have to advance to find the : * next nonempty bucket. We try to optimize that case since searching a : * near-empty hashtable has to iterate this loop a lot. : */ : while ((curElem = segp[segment_ndx]) == NULL) 0.03 : 783b44: 49 8b 0c d1 mov (%r9,%rdx,8),%rcx 0.06 : 783b48: 48 85 c9 test %rcx,%rcx 0.00 : 783b4b: 74 dc je 783b29 : segp = hashp->dir[segment_num]; : } : } : : /* Begin scan of curBucket... */ : status->curEntry = curElem->link; 0.36 : 783b4d: 48 8b 01 mov (%rcx),%rax : if (status->curEntry == NULL) /* end of this bucket */ : ++curBucket; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1307 57.40 : 783b50: 48 83 f8 01 cmp $0x1,%rax : segp = hashp->dir[segment_num]; : } : } : : /* Begin scan of curBucket... */ : status->curEntry = curElem->link; 0.11 : 783b54: 48 89 47 10 mov %rax,0x10(%rdi) : if (status->curEntry == NULL) /* end of this bucket */ : ++curBucket; : status->curBucket = curBucket; : return (void *) ELEMENTKEY(curElem); 0.00 : 783b58: 48 8d 41 10 lea 0x10(%rcx),%rax : } : : /* Begin scan of curBucket... */ : status->curEntry = curElem->link; : if (status->curEntry == NULL) /* end of this bucket */ : ++curBucket; 0.00 : 783b5c: 83 d6 00 adc $0x0,%esi : status->curBucket = curBucket; 0.28 : 783b5f: 89 77 08 mov %esi,0x8(%rdi) : return (void *) ELEMENTKEY(curElem); : } 0.25 : 783b62: c9 leaveq 0.00 : 783b63: c3 retq 0.00 : 783b64: 0f 1f 40 00 nopl 0x0(%rax) : if ((curElem = status->curEntry) != NULL) : { : /* Continuing scan of curBucket... */ : status->curEntry = curElem->link; : if (status->curEntry == NULL) /* end of this bucket */ : ++status->curBucket; 0.03 : 783b68: 83 47 08 01 addl $0x1,0x8(%rdi) 0.03 : 783b6c: e9 6c ff ff ff jmpq 783add 0.00 : 783b71: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : while ((curElem = segp[segment_ndx]) == NULL) : { : /* empty bucket, advance to next */ : if (++curBucket > max_bucket) : { : status->curBucket = curBucket; 0.00 : 783b78: 89 77 08 mov %esi,0x8(%rdi) : hash_seq_term(status); 0.00 : 783b7b: e8 a0 fe ff ff callq 783a20 0.00 : 783b80: 31 c0 xor %eax,%eax : status->curEntry = curElem->link; : if (status->curEntry == NULL) /* end of this bucket */ : ++curBucket; : status->curBucket = curBucket; : return (void *) ELEMENTKEY(curElem); : } 0.00 : 783b82: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 11.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 9.26 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1049 5.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1043 4.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1350 3.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 3.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1044 2.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1035 2.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1057 2.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1350 2.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1349 2.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1349 2.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 2.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1049 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1043 1.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1359 1.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1044 1.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 1.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1474 1.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 1.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1242 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1053 0.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1035 0.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1053 0.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1044 0.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1362 0.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1425 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1362 0.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1228 0.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1043 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b9d80 : : * stored in the expression context to be used when ExecProject evaluates : * the result tuple. : */ : TupleTableSlot * : ExecAgg(AggState *node) : { 0.03 : 5b9d80: 55 push %rbp 0.00 : 5b9d81: 48 89 e5 mov %rsp,%rbp 0.00 : 5b9d84: 41 57 push %r15 0.07 : 5b9d86: 41 56 push %r14 0.00 : 5b9d88: 49 89 fe mov %rdi,%r14 0.00 : 5b9d8b: 41 55 push %r13 0.00 : 5b9d8d: 41 54 push %r12 0.00 : 5b9d8f: 53 push %rbx 0.00 : 5b9d90: 48 81 ec d8 00 00 00 sub $0xd8,%rsp : /* : * Check to see if we're still projecting out tuples from a previous agg : * tuple (because there is a function-returning-set in the projection : * expressions). If so, try to project another one. : */ : if (node->ss.ps.ps_TupFromTlist) 0.00 : 5b9d97: 80 7f 70 00 cmpb $0x0,0x70(%rdi) 0.00 : 5b9d9b: 74 1c je 5b9db9 : { : TupleTableSlot *result; : ExprDoneCond isDone; : : result = ExecProject(node->ss.ps.ps_ProjInfo, &isDone); 0.00 : 5b9d9d: 48 8b 7f 68 mov 0x68(%rdi),%rdi 0.00 : 5b9da1: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5b9da5: e8 56 32 ff ff callq 5ad000 : if (isDone == ExprMultipleResult) 0.00 : 5b9daa: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) 0.00 : 5b9dae: 0f 84 04 02 00 00 je 5b9fb8 : return result; : /* Done with that source tuple... */ : node->ss.ps.ps_TupFromTlist = false; 0.00 : 5b9db4: 41 c6 46 70 00 movb $0x0,0x70(%r14) : /* : * Exit if nothing left to do. (We must do the ps_TupFromTlist check : * first, because in some cases agg_done gets set before we emit the final : * aggregate tuple, and we have to finish running SRFs for it.) : */ : if (node->agg_done) 0.00 : 5b9db9: 31 c0 xor %eax,%eax 0.00 : 5b9dbb: 41 80 be d0 00 00 00 cmpb $0x0,0xd0(%r14) 0.00 : 5b9dc2: 00 0.00 : 5b9dc3: 0f 85 ef 01 00 00 jne 5b9fb8 : return NULL; : : /* Dispatch based on strategy */ : if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED) 0.00 : 5b9dc9: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 5b9dcd: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 5b9dd4: 83 78 60 02 cmpl $0x2,0x60(%rax) 0.00 : 5b9dd8: 0f 85 ec 01 00 00 jne 5b9fca : { : if (!node->table_filled) 0.03 : 5b9dde: 31 c0 xor %eax,%eax 0.00 : 5b9de0: 41 80 be 00 01 00 00 cmpb $0x0,0x100(%r14) 0.00 : 5b9de7: 00 0.00 : 5b9de8: 4d 8d be 08 01 00 00 lea 0x108(%r14),%r15 0.00 : 5b9def: 0f 84 5d 07 00 00 je 5ba552 : : /* : * get state info from node : */ : /* econtext is the per-output-tuple expression context */ : econtext = aggstate->ss.ps.ps_ExprContext; 0.07 : 5b9df5: 4d 8b 6e 60 mov 0x60(%r14),%r13 : aggvalues = econtext->ecxt_aggvalues; 0.00 : 5b9df9: 49 8b 55 40 mov 0x40(%r13),%rdx 0.00 : 5b9dfd: 48 89 95 30 ff ff ff mov %rdx,-0xd0(%rbp) : aggnulls = econtext->ecxt_aggnulls; 0.00 : 5b9e04: 49 8b 55 48 mov 0x48(%r13),%rdx 0.00 : 5b9e08: 48 89 95 28 ff ff ff mov %rdx,-0xd8(%rbp) : peragg = aggstate->peragg; 0.00 : 5b9e0f: 49 8b 96 b0 00 00 00 mov 0xb0(%r14),%rdx 0.00 : 5b9e16: 48 89 95 20 ff ff ff mov %rdx,-0xe0(%rbp) : firstSlot = aggstate->ss.ss_ScanTupleSlot; 0.00 : 5b9e1d: 49 8b 96 88 00 00 00 mov 0x88(%r14),%rdx 0.00 : 5b9e24: 48 89 95 18 ff ff ff mov %rdx,-0xe8(%rbp) : : /* : * We loop retrieving groups until we find one satisfying : * aggstate->ss.ps.qual : */ : while (!aggstate->agg_done) 0.00 : 5b9e2b: 84 c0 test %al,%al 0.00 : 5b9e2d: 0f 85 83 01 00 00 jne 5b9fb6 : { : /* : * Find the next entry in the hash table : */ : entry = (AggHashEntry) ScanTupleHashTable(&aggstate->hashiter); 0.00 : 5b9e33: 4c 89 ff mov %r15,%rdi 0.26 : 5b9e36: e8 85 9c 1c 00 callq 783ac0 : if (entry == NULL) 0.23 : 5b9e3b: 48 85 c0 test %rax,%rax : while (!aggstate->agg_done) : { : /* : * Find the next entry in the hash table : */ : entry = (AggHashEntry) ScanTupleHashTable(&aggstate->hashiter); 0.00 : 5b9e3e: 49 89 c4 mov %rax,%r12 : if (entry == NULL) 0.00 : 5b9e41: 0f 84 fc 06 00 00 je 5ba543 : * : * We intentionally don't use ReScanExprContext here; if any aggs have : * registered shutdown callbacks, they mustn't be called yet, since we : * might not be done with that agg. : */ : ResetExprContext(econtext); 0.00 : 5b9e47: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.26 : 5b9e4b: e8 60 eb 1d 00 callq 7989b0 : : /* : * Store the copied first input tuple in the tuple table slot reserved : * for it, so that it can be used in ExecProject. : */ : ExecStoreMinimalTuple(entry->shared.firstTuple, 0.20 : 5b9e50: 48 8b b5 18 ff ff ff mov -0xe8(%rbp),%rsi 0.26 : 5b9e57: 49 8b 3c 24 mov (%r12),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1425 0.85 : 5b9e5b: 31 d2 xor %edx,%edx 0.00 : 5b9e5d: e8 7e a5 ff ff callq 5b43e0 : : /* : * Finalize each aggregate calculation, and stash results in the : * per-output-tuple context. : */ : for (aggno = 0; aggno < aggstate->numaggs; aggno++) 0.00 : 5b9e62: 41 8b 96 98 00 00 00 mov 0x98(%r14),%edx 0.00 : 5b9e69: 85 d2 test %edx,%edx 0.00 : 5b9e6b: 7e 49 jle 5b9eb6 0.00 : 5b9e6d: 31 db xor %ebx,%ebx : { : AggStatePerAgg peraggstate = &peragg[aggno]; : AggStatePerGroup pergroupstate = &pergroup[aggno]; : : Assert(peraggstate->numSortCols == 0); : finalize_aggregate(aggstate, peraggstate, pergroupstate, 0.20 : 5b9e6f: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax : * Finalize each aggregate calculation, and stash results in the : * per-output-tuple context. : */ : for (aggno = 0; aggno < aggstate->numaggs; aggno++) : { : AggStatePerAgg peraggstate = &peragg[aggno]; 0.03 : 5b9e76: 48 63 fb movslq %ebx,%rdi : : /* : * Finalize each aggregate calculation, and stash results in the : * per-output-tuple context. : */ : for (aggno = 0; aggno < aggstate->numaggs; aggno++) 0.00 : 5b9e79: 83 c3 01 add $0x1,%ebx : { : AggStatePerAgg peraggstate = &peragg[aggno]; : AggStatePerGroup pergroupstate = &pergroup[aggno]; : : Assert(peraggstate->numSortCols == 0); : finalize_aggregate(aggstate, peraggstate, pergroupstate, 0.00 : 5b9e7c: 48 69 f7 a8 04 00 00 imul $0x4a8,%rdi,%rsi 0.36 : 5b9e83: 48 03 b5 20 ff ff ff add -0xe0(%rbp),%rsi 0.00 : 5b9e8a: 48 8d 0c f8 lea (%rax,%rdi,8),%rcx 0.00 : 5b9e8e: 48 89 f8 mov %rdi,%rax 0.00 : 5b9e91: 48 c1 e0 04 shl $0x4,%rax 0.13 : 5b9e95: 49 8d 54 04 08 lea 0x8(%r12,%rax,1),%rdx 0.00 : 5b9e9a: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 5b9ea1: 4c 8d 04 38 lea (%rax,%rdi,1),%r8 0.00 : 5b9ea5: 4c 89 f7 mov %r14,%rdi 0.30 : 5b9ea8: e8 13 fc ff ff callq 5b9ac0 : : /* : * Finalize each aggregate calculation, and stash results in the : * per-output-tuple context. : */ : for (aggno = 0; aggno < aggstate->numaggs; aggno++) 0.00 : 5b9ead: 41 3b 9e 98 00 00 00 cmp 0x98(%r14),%ebx 0.00 : 5b9eb4: 7c b9 jl 5b9e6f : : /* : * Use the representative input tuple for any references to : * non-aggregated input columns in the qual and tlist. : */ : econtext->ecxt_outertuple = firstSlot; 0.10 : 5b9eb6: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx : : /* : * Check the qual (HAVING clause); if the group does not match, ignore : * it and loop back to try to process another group. : */ : if (ExecQual(aggstate->ss.ps.qual, econtext, false)) 0.00 : 5b9ebd: 4c 89 ee mov %r13,%rsi : : /* : * Use the representative input tuple for any references to : * non-aggregated input columns in the qual and tlist. : */ : econtext->ecxt_outertuple = firstSlot; 0.00 : 5b9ec0: 49 89 55 18 mov %rdx,0x18(%r13) : : /* : * Check the qual (HAVING clause); if the group does not match, ignore : * it and loop back to try to process another group. : */ : if (ExecQual(aggstate->ss.ps.qual, econtext, false)) 0.03 : 5b9ec4: 49 8b 7e 28 mov 0x28(%r14),%rdi 0.30 : 5b9ec8: 31 d2 xor %edx,%edx 0.00 : 5b9eca: e8 41 30 ff ff callq 5acf10 0.23 : 5b9ecf: 84 c0 test %al,%al 0.00 : 5b9ed1: 0f 85 4e 06 00 00 jne 5ba525 : (isDone == ExprMultipleResult); : return result; : } : } : else : InstrCountFiltered1(aggstate, 1); 0.00 : 5b9ed7: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 5b9edb: 48 85 c0 test %rax,%rax 0.00 : 5b9ede: 74 18 je 5b9ef8 0.00 : 5b9ee0: f2 0f 10 05 70 52 1f movsd 0x1f5270(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5b9ee7: 00 0.36 : 5b9ee8: f2 0f 58 80 c8 00 00 addsd 0xc8(%rax),%xmm0 0.00 : 5b9eef: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1474 1.54 : 5b9ef0: f2 0f 11 80 c8 00 00 movsd %xmm0,0xc8(%rax) 0.00 : 5b9ef7: 00 0.16 : 5b9ef8: 41 0f b6 86 d0 00 00 movzbl 0xd0(%r14),%eax 0.00 : 5b9eff: 00 0.00 : 5b9f00: e9 26 ff ff ff jmpq 5b9e2b : MemoryContextReset(workcontext); : : ExecClearTuple(slot1); : } : : if (slot2) 0.00 : 5b9f05: 4d 85 ff test %r15,%r15 0.00 : 5b9f08: 74 08 je 5b9f12 : ExecClearTuple(slot2); 0.00 : 5b9f0a: 4c 89 ff mov %r15,%rdi 0.00 : 5b9f0d: e8 fe a1 ff ff callq 5b4110 : : tuplesort_end(peraggstate->sortstate); 0.00 : 5b9f12: 49 8b bc 24 f8 00 00 mov 0xf8(%r12),%rdi 0.00 : 5b9f19: 00 0.00 : 5b9f1a: e8 c1 52 1e 00 callq 79f1e0 : peraggstate->sortstate = NULL; 0.00 : 5b9f1f: 49 c7 84 24 f8 00 00 movq $0x0,0xf8(%r12) 0.00 : 5b9f26: 00 00 00 00 00 : process_ordered_aggregate_multi(aggstate, : peraggstate, : pergroupstate); : } : : finalize_aggregate(aggstate, peraggstate, pergroupstate, 0.00 : 5b9f2b: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 5b9f2f: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 5b9f36: 4c 89 e6 mov %r12,%rsi 0.00 : 5b9f39: 4c 89 f7 mov %r14,%rdi 0.00 : 5b9f3c: 48 8d 0c d0 lea (%rax,%rdx,8),%rcx 0.00 : 5b9f40: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 5b9f47: 4c 8d 04 10 lea (%rax,%rdx,1),%r8 0.00 : 5b9f4b: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 5b9f52: e8 69 fb ff ff callq 5b9ac0 : : /* : * Done scanning input tuple group. Finalize each aggregate : * calculation, and stash results in the per-output-tuple context. : */ : for (aggno = 0; aggno < aggstate->numaggs; aggno++) 0.00 : 5b9f57: 83 85 44 ff ff ff 01 addl $0x1,-0xbc(%rbp) 0.00 : 5b9f5e: 8b 95 44 ff ff ff mov -0xbc(%rbp),%edx 0.00 : 5b9f64: 41 3b 96 98 00 00 00 cmp 0x98(%r14),%edx 0.00 : 5b9f6b: 0f 8c f6 01 00 00 jl 5ba167 : : /* : * Check the qual (HAVING clause); if the group does not match, ignore : * it and loop back to try to process another group. : */ : if (ExecQual(aggstate->ss.ps.qual, econtext, false)) 0.00 : 5b9f71: 49 8b 7e 28 mov 0x28(%r14),%rdi 0.00 : 5b9f75: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 5b9f7c: 31 d2 xor %edx,%edx 0.00 : 5b9f7e: e8 8d 2f ff ff callq 5acf10 0.00 : 5b9f83: 84 c0 test %al,%al 0.00 : 5b9f85: 0f 85 18 05 00 00 jne 5ba4a3 : (isDone == ExprMultipleResult); : return result; : } : } : else : InstrCountFiltered1(aggstate, 1); 0.00 : 5b9f8b: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 5b9f8f: 48 85 c0 test %rax,%rax 0.00 : 5b9f92: 74 18 je 5b9fac 0.00 : 5b9f94: f2 0f 10 05 bc 51 1f movsd 0x1f51bc(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5b9f9b: 00 0.00 : 5b9f9c: f2 0f 58 80 c8 00 00 addsd 0xc8(%rax),%xmm0 0.00 : 5b9fa3: 00 0.00 : 5b9fa4: f2 0f 11 80 c8 00 00 movsd %xmm0,0xc8(%rax) 0.00 : 5b9fab: 00 : : /* : * We loop retrieving groups until we find one matching : * aggstate->ss.ps.qual : */ : while (!aggstate->agg_done) 0.00 : 5b9fac: 41 80 be d0 00 00 00 cmpb $0x0,0xd0(%r14) 0.00 : 5b9fb3: 00 0.00 : 5b9fb4: 74 75 je 5ba02b 0.00 : 5b9fb6: 31 c0 xor %eax,%eax : agg_fill_hash_table(node); : return agg_retrieve_hash_table(node); : } : else : return agg_retrieve_direct(node); : } 0.00 : 5b9fb8: 48 81 c4 d8 00 00 00 add $0xd8,%rsp 0.00 : 5b9fbf: 5b pop %rbx 0.03 : 5b9fc0: 41 5c pop %r12 0.00 : 5b9fc2: 41 5d pop %r13 0.03 : 5b9fc4: 41 5e pop %r14 0.00 : 5b9fc6: 41 5f pop %r15 0.03 : 5b9fc8: c9 leaveq 0.00 : 5b9fc9: c3 retq : /* : * get state info from node : */ : outerPlan = outerPlanState(aggstate); : /* econtext is the per-output-tuple expression context */ : econtext = aggstate->ss.ps.ps_ExprContext; 0.00 : 5b9fca: 49 8b 56 60 mov 0x60(%r14),%rdx : int aggno; : : /* : * get state info from node : */ : outerPlan = outerPlanState(aggstate); 0.00 : 5b9fce: 49 8b 46 30 mov 0x30(%r14),%rax : /* econtext is the per-output-tuple expression context */ : econtext = aggstate->ss.ps.ps_ExprContext; 0.00 : 5b9fd2: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) : int aggno; : : /* : * get state info from node : */ : outerPlan = outerPlanState(aggstate); 0.00 : 5b9fd9: 48 89 45 80 mov %rax,-0x80(%rbp) : /* econtext is the per-output-tuple expression context */ : econtext = aggstate->ss.ps.ps_ExprContext; : aggvalues = econtext->ecxt_aggvalues; 0.00 : 5b9fdd: 48 8b 42 40 mov 0x40(%rdx),%rax 0.00 : 5b9fe1: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : aggnulls = econtext->ecxt_aggnulls; 0.00 : 5b9fe8: 48 8b 52 48 mov 0x48(%rdx),%rdx : /* tmpcontext is the per-input-tuple expression context */ : tmpcontext = aggstate->tmpcontext; 0.00 : 5b9fec: 49 8b 86 c0 00 00 00 mov 0xc0(%r14),%rax : */ : outerPlan = outerPlanState(aggstate); : /* econtext is the per-output-tuple expression context */ : econtext = aggstate->ss.ps.ps_ExprContext; : aggvalues = econtext->ecxt_aggvalues; : aggnulls = econtext->ecxt_aggnulls; 0.00 : 5b9ff3: 48 89 95 60 ff ff ff mov %rdx,-0xa0(%rbp) : /* tmpcontext is the per-input-tuple expression context */ : tmpcontext = aggstate->tmpcontext; : peragg = aggstate->peragg; 0.00 : 5b9ffa: 49 8b 96 b0 00 00 00 mov 0xb0(%r14),%rdx : /* econtext is the per-output-tuple expression context */ : econtext = aggstate->ss.ps.ps_ExprContext; : aggvalues = econtext->ecxt_aggvalues; : aggnulls = econtext->ecxt_aggnulls; : /* tmpcontext is the per-input-tuple expression context */ : tmpcontext = aggstate->tmpcontext; 0.00 : 5ba001: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : peragg = aggstate->peragg; : pergroup = aggstate->pergroup; 0.03 : 5ba008: 49 8b 86 d8 00 00 00 mov 0xd8(%r14),%rax : econtext = aggstate->ss.ps.ps_ExprContext; : aggvalues = econtext->ecxt_aggvalues; : aggnulls = econtext->ecxt_aggnulls; : /* tmpcontext is the per-input-tuple expression context */ : tmpcontext = aggstate->tmpcontext; : peragg = aggstate->peragg; 0.00 : 5ba00f: 48 89 95 58 ff ff ff mov %rdx,-0xa8(%rbp) : pergroup = aggstate->pergroup; : firstSlot = aggstate->ss.ss_ScanTupleSlot; 0.00 : 5ba016: 49 8b 96 88 00 00 00 mov 0x88(%r14),%rdx : aggvalues = econtext->ecxt_aggvalues; : aggnulls = econtext->ecxt_aggnulls; : /* tmpcontext is the per-input-tuple expression context */ : tmpcontext = aggstate->tmpcontext; : peragg = aggstate->peragg; : pergroup = aggstate->pergroup; 0.00 : 5ba01d: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : firstSlot = aggstate->ss.ss_ScanTupleSlot; 0.00 : 5ba024: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) : { : /* : * If we don't already have the first tuple of the new group, fetch it : * from the outer plan. : */ : if (aggstate->grp_firstTuple == NULL) 0.00 : 5ba02b: 49 83 be e0 00 00 00 cmpq $0x0,0xe0(%r14) 0.00 : 5ba032: 00 0.00 : 5ba033: 0f 84 a4 04 00 00 je 5ba4dd : * We use ReScanExprContext not just ResetExprContext because we want : * any registered shutdown callbacks to be called. That allows : * aggregate functions to ensure they've cleaned up any non-memory : * resources. : */ : ReScanExprContext(econtext); 0.00 : 5ba039: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 5ba040: e8 3b b1 ff ff callq 5b5180 : : MemoryContextResetAndDeleteChildren(aggstate->aggcontext); 0.00 : 5ba045: 49 8b be b8 00 00 00 mov 0xb8(%r14),%rdi 0.00 : 5ba04c: e8 bf eb 1d 00 callq 798c10 : : /* : * Initialize working state for a new input tuple group : */ : initialize_aggregates(aggstate, peragg, pergroup); 0.00 : 5ba051: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.03 : 5ba058: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 5ba05f: 4c 89 f7 mov %r14,%rdi 0.00 : 5ba062: e8 69 f5 ff ff callq 5b95d0 : : if (aggstate->grp_firstTuple != NULL) 0.00 : 5ba067: 49 8b be e0 00 00 00 mov 0xe0(%r14),%rdi 0.00 : 5ba06e: 48 85 ff test %rdi,%rdi 0.00 : 5ba071: 0f 84 c5 00 00 00 je 5ba13c : /* : * Store the copied first input tuple in the tuple table slot : * reserved for it. The tuple will be deleted when it is cleared : * from the slot. : */ : ExecStoreTuple(aggstate->grp_firstTuple, 0.00 : 5ba077: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 5ba07e: 31 d2 xor %edx,%edx 0.00 : 5ba080: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 5ba085: e8 f6 a3 ff ff callq 5b4480 : InvalidBuffer, : true); : aggstate->grp_firstTuple = NULL; /* don't keep two pointers */ : : /* set up for first advance_aggregates call */ : tmpcontext->ecxt_outertuple = firstSlot; 0.00 : 5ba08a: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 5ba091: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx : */ : ExecStoreTuple(aggstate->grp_firstTuple, : firstSlot, : InvalidBuffer, : true); : aggstate->grp_firstTuple = NULL; /* don't keep two pointers */ 0.00 : 5ba098: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 5ba09f: 00 00 00 00 : : /* set up for first advance_aggregates call */ : tmpcontext->ecxt_outertuple = firstSlot; 0.03 : 5ba0a3: 48 89 42 18 mov %rax,0x18(%rdx) : * Process each outer-plan tuple, and then fetch the next one, : * until we exhaust the outer plan or cross a group boundary. : */ : for (;;) : { : advance_aggregates(aggstate, pergroup); 0.10 : 5ba0a7: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.23 : 5ba0ae: 4c 89 f7 mov %r14,%rdi 0.00 : 5ba0b1: e8 9a f8 ff ff callq 5b9950 : : /* Reset per-input-tuple context after each tuple */ : ResetExprContext(tmpcontext); 0.10 : 5ba0b6: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.23 : 5ba0bd: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.36 : 5ba0c1: e8 ea e8 1d 00 callq 7989b0 : : outerslot = ExecProcNode(outerPlan); 0.00 : 5ba0c6: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.03 : 5ba0ca: e8 d1 23 ff ff callq 5ac4a0 : if (TupIsNull(outerslot)) 0.46 : 5ba0cf: 48 85 c0 test %rax,%rax : advance_aggregates(aggstate, pergroup); : : /* Reset per-input-tuple context after each tuple */ : ResetExprContext(tmpcontext); : : outerslot = ExecProcNode(outerPlan); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1228 0.59 : 5ba0d2: 48 89 c3 mov %rax,%rbx : if (TupIsNull(outerslot)) 0.00 : 5ba0d5: 0f 84 f5 03 00 00 je 5ba4d0 0.00 : 5ba0db: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5ba0df: 0f 85 eb 03 00 00 jne 5ba4d0 : /* no more outer-plan tuples available */ : aggstate->agg_done = true; : break; : } : /* set up for next advance_aggregates call */ : tmpcontext->ecxt_outertuple = outerslot; 0.03 : 5ba0e5: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.49 : 5ba0ec: 48 89 58 18 mov %rbx,0x18(%rax) : : /* : * If we are grouping, check whether we've crossed a group : * boundary. : */ : if (node->aggstrategy == AGG_SORTED) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1242 1.02 : 5ba0f0: 48 8b 95 10 ff ff ff mov -0xf0(%rbp),%rdx 0.00 : 5ba0f7: 83 7a 60 01 cmpl $0x1,0x60(%rdx) 0.46 : 5ba0fb: 75 aa jne 5ba0a7 : { : if (!execTuplesMatch(firstSlot, 0.03 : 5ba0fd: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 5ba104: 48 8b 4a 68 mov 0x68(%rdx),%rcx 0.00 : 5ba108: 48 89 de mov %rbx,%rsi 0.00 : 5ba10b: 8b 52 64 mov 0x64(%rdx),%edx 0.03 : 5ba10e: 4d 8b 86 a0 00 00 00 mov 0xa0(%r14),%r8 0.00 : 5ba115: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 5ba11c: 4c 8b 48 28 mov 0x28(%rax),%r9 0.00 : 5ba120: e8 1b f3 fe ff callq 5a9440 0.07 : 5ba125: 84 c0 test %al,%al 0.00 : 5ba127: 0f 85 7a ff ff ff jne 5ba0a7 : tmpcontext->ecxt_per_tuple_memory)) : { : /* : * Save the first input tuple of the next group. : */ : aggstate->grp_firstTuple = ExecCopySlotTuple(outerslot); 0.00 : 5ba12d: 48 89 df mov %rbx,%rdi 0.00 : 5ba130: e8 7b 9e ff ff callq 5b3fb0 0.00 : 5ba135: 49 89 86 e0 00 00 00 mov %rax,0xe0(%r14) : * qual, and the tlist. (If we are not grouping, and there are no : * input rows at all, we will come here with an empty firstSlot ... : * but if not grouping, there can't be any references to : * non-aggregated input columns, so no problem.) : */ : econtext->ecxt_outertuple = firstSlot; 0.00 : 5ba13c: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.10 : 5ba143: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 5ba14a: 48 89 42 18 mov %rax,0x18(%rdx) : : /* : * Done scanning input tuple group. Finalize each aggregate : * calculation, and stash results in the per-output-tuple context. : */ : for (aggno = 0; aggno < aggstate->numaggs; aggno++) 0.03 : 5ba14e: 41 8b 86 98 00 00 00 mov 0x98(%r14),%eax 0.00 : 5ba155: 85 c0 test %eax,%eax 0.00 : 5ba157: 0f 8e 14 fe ff ff jle 5b9f71 0.00 : 5ba15d: c7 85 44 ff ff ff 00 movl $0x0,-0xbc(%rbp) 0.00 : 5ba164: 00 00 00 : { : AggStatePerAgg peraggstate = &peragg[aggno]; 0.00 : 5ba167: 48 63 95 44 ff ff ff movslq -0xbc(%rbp),%rdx 0.00 : 5ba16e: 4c 8b a5 58 ff ff ff mov -0xa8(%rbp),%r12 0.00 : 5ba175: 48 69 c2 a8 04 00 00 imul $0x4a8,%rdx,%rax 0.00 : 5ba17c: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.00 : 5ba180: 49 01 c4 add %rax,%r12 : AggStatePerGroup pergroupstate = &pergroup[aggno]; 0.00 : 5ba183: 48 89 d0 mov %rdx,%rax 0.00 : 5ba186: 48 c1 e0 04 shl $0x4,%rax 0.00 : 5ba18a: 48 03 85 50 ff ff ff add -0xb0(%rbp),%rax 0.00 : 5ba191: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) : : if (peraggstate->numSortCols > 0) 0.00 : 5ba198: 41 8b 84 24 8c 00 00 mov 0x8c(%r12),%eax 0.00 : 5ba19f: 00 0.00 : 5ba1a0: 85 c0 test %eax,%eax 0.00 : 5ba1a2: 0f 8e 83 fd ff ff jle 5b9f2b : { : if (peraggstate->numInputs == 1) 0.00 : 5ba1a8: 41 83 7c 24 14 01 cmpl $0x1,0x14(%r12) 0.00 : 5ba1ae: 0f 84 3e 01 00 00 je 5ba2f2 : static void : process_ordered_aggregate_multi(AggState *aggstate, : AggStatePerAgg peraggstate, : AggStatePerGroup pergroupstate) : { : MemoryContext workcontext = aggstate->tmpcontext->ecxt_per_tuple_memory; 0.00 : 5ba1b4: 49 8b 86 c0 00 00 00 mov 0xc0(%r14),%rax 0.00 : 5ba1bb: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 5ba1bf: 48 89 45 c0 mov %rax,-0x40(%rbp) : FunctionCallInfo fcinfo = &peraggstate->transfn_fcinfo; : TupleTableSlot *slot1 = peraggstate->evalslot; : TupleTableSlot *slot2 = peraggstate->uniqslot; : int numTransInputs = peraggstate->numTransInputs; : int numDistinctCols = peraggstate->numDistinctCols; 0.00 : 5ba1c3: 41 8b 84 24 90 00 00 mov 0x90(%r12),%eax 0.00 : 5ba1ca: 00 : AggStatePerAgg peraggstate, : AggStatePerGroup pergroupstate) : { : MemoryContext workcontext = aggstate->tmpcontext->ecxt_per_tuple_memory; : FunctionCallInfo fcinfo = &peraggstate->transfn_fcinfo; : TupleTableSlot *slot1 = peraggstate->evalslot; 0.00 : 5ba1cb: 49 8b 9c 24 e8 00 00 mov 0xe8(%r12),%rbx 0.00 : 5ba1d2: 00 : TupleTableSlot *slot2 = peraggstate->uniqslot; 0.00 : 5ba1d3: 4d 8b bc 24 f0 00 00 mov 0xf0(%r12),%r15 0.00 : 5ba1da: 00 : int numTransInputs = peraggstate->numTransInputs; 0.00 : 5ba1db: 45 8b 6c 24 18 mov 0x18(%r12),%r13d : int numDistinctCols = peraggstate->numDistinctCols; 0.00 : 5ba1e0: 89 45 bc mov %eax,-0x44(%rbp) : bool haveOldValue = false; : int i; : : tuplesort_performsort(peraggstate->sortstate); 0.00 : 5ba1e3: 49 8b bc 24 f8 00 00 mov 0xf8(%r12),%rdi 0.00 : 5ba1ea: 00 0.00 : 5ba1eb: e8 00 7e 1e 00 callq 7a1ff0 : : ExecClearTuple(slot1); 0.00 : 5ba1f0: 48 89 df mov %rbx,%rdi 0.00 : 5ba1f3: e8 18 9f ff ff callq 5b4110 : if (slot2) 0.00 : 5ba1f8: 4d 85 ff test %r15,%r15 0.00 : 5ba1fb: 74 08 je 5ba205 : ExecClearTuple(slot2); 0.00 : 5ba1fd: 4c 89 ff mov %r15,%rdi 0.00 : 5ba200: e8 0b 9f ff ff callq 5b4110 0.00 : 5ba205: c6 45 bb 00 movb $0x0,-0x45(%rbp) 0.00 : 5ba209: eb 3d jmp 5ba248 : * transfn. (This will help execTuplesMatch too, so we do it : * immediately.) : */ : slot_getsomeattrs(slot1, numTransInputs); : : if (numDistinctCols == 0 || 0.00 : 5ba20b: 80 7d bb 00 cmpb $0x0,-0x45(%rbp) 0.00 : 5ba20f: 90 nop 0.00 : 5ba210: 74 6c je 5ba27e 0.00 : 5ba212: 49 8b 8c 24 98 00 00 mov 0x98(%r12),%rcx 0.00 : 5ba219: 00 0.00 : 5ba21a: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 5ba21e: 4c 89 fe mov %r15,%rsi 0.00 : 5ba221: 4d 8b 84 24 b8 00 00 mov 0xb8(%r12),%r8 0.00 : 5ba228: 00 0.00 : 5ba229: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 5ba22c: 48 89 df mov %rbx,%rdi 0.00 : 5ba22f: e8 0c f2 fe ff callq 5a9440 0.00 : 5ba234: 84 c0 test %al,%al 0.00 : 5ba236: 74 46 je 5ba27e 0.00 : 5ba238: c6 45 bb 01 movb $0x1,-0x45(%rbp) 0.00 : 5ba23c: 0f 1f 40 00 nopl 0x0(%rax) : : /* Reset context each time, unless execTuplesMatch did it for us */ : if (numDistinctCols == 0) : MemoryContextReset(workcontext); : : ExecClearTuple(slot1); 0.00 : 5ba240: 48 89 df mov %rbx,%rdi 0.00 : 5ba243: e8 c8 9e ff ff callq 5b4110 : : ExecClearTuple(slot1); : if (slot2) : ExecClearTuple(slot2); : : while (tuplesort_gettupleslot(peraggstate->sortstate, true, slot1)) 0.00 : 5ba248: 49 8b bc 24 f8 00 00 mov 0xf8(%r12),%rdi 0.00 : 5ba24f: 00 0.00 : 5ba250: 48 89 da mov %rbx,%rdx 0.00 : 5ba253: be 01 00 00 00 mov $0x1,%esi 0.00 : 5ba258: e8 33 40 1e 00 callq 79e290 0.00 : 5ba25d: 84 c0 test %al,%al 0.00 : 5ba25f: 0f 84 a0 fc ff ff je 5b9f05 : /* : * Extract the first numTransInputs columns as datums to pass to the : * transfn. (This will help execTuplesMatch too, so we do it : * immediately.) : */ : slot_getsomeattrs(slot1, numTransInputs); 0.00 : 5ba265: 44 89 ee mov %r13d,%esi 0.00 : 5ba268: 48 89 df mov %rbx,%rdi 0.00 : 5ba26b: e8 f0 4f eb ff callq 46f260 : : if (numDistinctCols == 0 || 0.00 : 5ba270: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 5ba273: 85 c0 test %eax,%eax 0.00 : 5ba275: 0f 94 85 0f ff ff ff sete -0xf1(%rbp) 0.00 : 5ba27c: 75 8d jne 5ba20b : peraggstate->equalfns, : workcontext)) : { : /* Load values into fcinfo */ : /* Start from 1, since the 0th arg will be the transition value */ : for (i = 0; i < numTransInputs; i++) 0.00 : 5ba27e: 45 85 ed test %r13d,%r13d 0.00 : 5ba281: 7e 2e jle 5ba2b1 0.00 : 5ba283: 31 d2 xor %edx,%edx 0.00 : 5ba285: 0f 1f 00 nopl (%rax) : { : fcinfo->arg[i + 1] = slot1->tts_values[i]; 0.00 : 5ba288: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 5ba28c: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5ba290: 49 89 84 d4 28 01 00 mov %rax,0x128(%r12,%rdx,8) 0.00 : 5ba297: 00 : fcinfo->argnull[i + 1] = slot1->tts_isnull[i]; 0.00 : 5ba298: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 5ba29c: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 5ba2a0: 41 88 84 14 41 04 00 mov %al,0x441(%r12,%rdx,1) 0.00 : 5ba2a7: 00 0.00 : 5ba2a8: 48 83 c2 01 add $0x1,%rdx : peraggstate->equalfns, : workcontext)) : { : /* Load values into fcinfo */ : /* Start from 1, since the 0th arg will be the transition value */ : for (i = 0; i < numTransInputs; i++) 0.00 : 5ba2ac: 41 39 d5 cmp %edx,%r13d 0.00 : 5ba2af: 7f d7 jg 5ba288 : { : fcinfo->arg[i + 1] = slot1->tts_values[i]; : fcinfo->argnull[i + 1] = slot1->tts_isnull[i]; : } : : advance_transition_function(aggstate, peraggstate, pergroupstate); 0.00 : 5ba2b1: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 5ba2b8: 4c 89 e6 mov %r12,%rsi 0.00 : 5ba2bb: 4c 89 f7 mov %r14,%rdi 0.00 : 5ba2be: e8 cd f4 ff ff callq 5b9790 : : if (numDistinctCols > 0) 0.00 : 5ba2c3: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 5ba2c6: 85 c0 test %eax,%eax 0.00 : 5ba2c8: 7e 0d jle 5ba2d7 0.00 : 5ba2ca: 48 89 df mov %rbx,%rdi 0.00 : 5ba2cd: c6 45 bb 01 movb $0x1,-0x45(%rbp) 0.00 : 5ba2d1: 4c 89 fb mov %r15,%rbx 0.00 : 5ba2d4: 49 89 ff mov %rdi,%r15 : haveOldValue = true; : } : } : : /* Reset context each time, unless execTuplesMatch did it for us */ : if (numDistinctCols == 0) 0.00 : 5ba2d7: 80 bd 0f ff ff ff 00 cmpb $0x0,-0xf1(%rbp) 0.00 : 5ba2de: 0f 84 5c ff ff ff je 5ba240 : MemoryContextReset(workcontext); 0.00 : 5ba2e4: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 5ba2e8: e8 c3 e6 1d 00 callq 7989b0 0.00 : 5ba2ed: e9 4e ff ff ff jmpq 5ba240 : AggStatePerGroup pergroupstate) : { : Datum oldVal = (Datum) 0; : bool oldIsNull = true; : bool haveOldVal = false; : MemoryContext workcontext = aggstate->tmpcontext->ecxt_per_tuple_memory; 0.00 : 5ba2f2: 49 8b 86 c0 00 00 00 mov 0xc0(%r14),%rax : : tuplesort_performsort(peraggstate->sortstate); : : /* Load the column into argument 1 (arg 0 will be transition value) */ : newVal = fcinfo->arg + 1; : isNull = fcinfo->argnull + 1; 0.00 : 5ba2f9: 45 31 ed xor %r13d,%r13d 0.00 : 5ba2fc: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5ba301: 45 31 ff xor %r15d,%r15d : AggStatePerGroup pergroupstate) : { : Datum oldVal = (Datum) 0; : bool oldIsNull = true; : bool haveOldVal = false; : MemoryContext workcontext = aggstate->tmpcontext->ecxt_per_tuple_memory; 0.00 : 5ba304: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 5ba308: 48 89 45 a8 mov %rax,-0x58(%rbp) : MemoryContext oldContext; : bool isDistinct = (peraggstate->numDistinctCols > 0); 0.00 : 5ba30c: 41 8b 84 24 90 00 00 mov 0x90(%r12),%eax 0.00 : 5ba313: 00 0.00 : 5ba314: 89 45 b4 mov %eax,-0x4c(%rbp) : Datum *newVal; : bool *isNull; : : Assert(peraggstate->numDistinctCols < 2); : : tuplesort_performsort(peraggstate->sortstate); 0.00 : 5ba317: 49 8b bc 24 f8 00 00 mov 0xf8(%r12),%rdi 0.00 : 5ba31e: 00 0.00 : 5ba31f: e8 cc 7c 1e 00 callq 7a1ff0 : : /* Load the column into argument 1 (arg 0 will be transition value) */ : newVal = fcinfo->arg + 1; 0.00 : 5ba324: 49 8d 94 24 28 01 00 lea 0x128(%r12),%rdx 0.00 : 5ba32b: 00 : isNull = fcinfo->argnull + 1; 0.00 : 5ba32c: 49 8d 84 24 41 04 00 lea 0x441(%r12),%rax 0.00 : 5ba333: 00 : Assert(peraggstate->numDistinctCols < 2); : : tuplesort_performsort(peraggstate->sortstate); : : /* Load the column into argument 1 (arg 0 will be transition value) */ : newVal = fcinfo->arg + 1; 0.00 : 5ba334: 48 89 55 98 mov %rdx,-0x68(%rbp) : isNull = fcinfo->argnull + 1; 0.00 : 5ba338: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 5ba33c: eb 3c jmp 5ba37a : if (!peraggstate->inputtypeByVal && !*isNull) : pfree(DatumGetPointer(*newVal)); : } : else : { : advance_transition_function(aggstate, peraggstate, pergroupstate); 0.00 : 5ba33e: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 5ba345: 4c 89 e6 mov %r12,%rsi 0.00 : 5ba348: 4c 89 f7 mov %r14,%rdi 0.00 : 5ba34b: e8 40 f4 ff ff callq 5b9790 : /* forget the old value, if any */ : if (!oldIsNull && !peraggstate->inputtypeByVal) 0.00 : 5ba350: 84 db test %bl,%bl 0.00 : 5ba352: 0f 84 98 00 00 00 je 5ba3f0 : pfree(DatumGetPointer(oldVal)); : /* and remember the new one for subsequent equality checks */ : oldVal = *newVal; : oldIsNull = *isNull; 0.00 : 5ba358: 41 0f b6 9c 24 41 04 movzbl 0x441(%r12),%ebx 0.00 : 5ba35f: 00 00 : advance_transition_function(aggstate, peraggstate, pergroupstate); : /* forget the old value, if any */ : if (!oldIsNull && !peraggstate->inputtypeByVal) : pfree(DatumGetPointer(oldVal)); : /* and remember the new one for subsequent equality checks */ : oldVal = *newVal; 0.03 : 5ba361: 4d 8b bc 24 28 01 00 mov 0x128(%r12),%r15 0.00 : 5ba368: 00 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5ba369: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 5ba36d: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 5ba373: 48 89 15 e6 04 60 00 mov %rdx,0x6004e6(%rip) # bba860 : * Note: if input type is pass-by-ref, the datums returned by the sort are : * freshly palloc'd in the per-query context, so we must be careful to : * pfree them when they are no longer needed. : */ : : while (tuplesort_getdatum(peraggstate->sortstate, true, 0.00 : 5ba37a: 49 8b bc 24 f8 00 00 mov 0xf8(%r12),%rdi 0.00 : 5ba381: 00 0.00 : 5ba382: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 5ba386: be 01 00 00 00 mov $0x1,%esi 0.00 : 5ba38b: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.03 : 5ba38f: e8 2c 3e 1e 00 callq 79e1c0 0.00 : 5ba394: 84 c0 test %al,%al 0.00 : 5ba396: 0f 84 e0 00 00 00 je 5ba47c : { : /* : * Clear and select the working context for evaluation of the equality : * function and transition function. : */ : MemoryContextReset(workcontext); 0.00 : 5ba39c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.07 : 5ba3a0: e8 0b e6 1d 00 callq 7989b0 0.00 : 5ba3a5: 48 8b 45 a8 mov -0x58(%rbp),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5ba3a9: 48 8b 15 b0 04 60 00 mov 0x6004b0(%rip),%rdx # bba860 : : CurrentMemoryContext = context; 0.00 : 5ba3b0: 48 89 05 a9 04 60 00 mov %rax,0x6004a9(%rip) # bba860 : /* : * If DISTINCT mode, and not distinct from prior, skip it. : * : * Note: we assume equality functions don't care about collation. : */ : if (isDistinct && 0.00 : 5ba3b7: 8b 45 b4 mov -0x4c(%rbp),%eax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5ba3ba: 48 89 55 a0 mov %rdx,-0x60(%rbp) 0.00 : 5ba3be: 85 c0 test %eax,%eax 0.00 : 5ba3c0: 0f 8e 78 ff ff ff jle 5ba33e 0.00 : 5ba3c6: 45 84 ed test %r13b,%r13b 0.00 : 5ba3c9: 0f 84 6f ff ff ff je 5ba33e 0.00 : 5ba3cf: 84 db test %bl,%bl 0.00 : 5ba3d1: 75 39 jne 5ba40c 0.07 : 5ba3d3: 41 80 bc 24 41 04 00 cmpb $0x0,0x441(%r12) 0.00 : 5ba3da: 00 00 0.00 : 5ba3dc: 74 50 je 5ba42e : if (!peraggstate->inputtypeByVal && !*isNull) : pfree(DatumGetPointer(*newVal)); : } : else : { : advance_transition_function(aggstate, peraggstate, pergroupstate); 0.00 : 5ba3de: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.03 : 5ba3e5: 4c 89 e6 mov %r12,%rsi 0.00 : 5ba3e8: 4c 89 f7 mov %r14,%rdi 0.00 : 5ba3eb: e8 a0 f3 ff ff callq 5b9790 : /* forget the old value, if any */ : if (!oldIsNull && !peraggstate->inputtypeByVal) 0.07 : 5ba3f0: 41 80 bc 24 d0 00 00 cmpb $0x0,0xd0(%r12) 0.00 : 5ba3f7: 00 00 0.07 : 5ba3f9: 0f 85 59 ff ff ff jne 5ba358 : pfree(DatumGetPointer(oldVal)); 0.00 : 5ba3ff: 4c 89 ff mov %r15,%rdi 0.00 : 5ba402: e8 79 e7 1d 00 callq 798b80 0.00 : 5ba407: e9 4c ff ff ff jmpq 5ba358 : /* : * If DISTINCT mode, and not distinct from prior, skip it. : * : * Note: we assume equality functions don't care about collation. : */ : if (isDistinct && 0.00 : 5ba40c: 41 80 bc 24 41 04 00 cmpb $0x0,0x441(%r12) 0.00 : 5ba413: 00 00 0.00 : 5ba415: 75 35 jne 5ba44c : if (!peraggstate->inputtypeByVal && !*isNull) : pfree(DatumGetPointer(*newVal)); : } : else : { : advance_transition_function(aggstate, peraggstate, pergroupstate); 0.00 : 5ba417: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 5ba41e: 4c 89 e6 mov %r12,%rsi 0.00 : 5ba421: 4c 89 f7 mov %r14,%rdi 0.00 : 5ba424: e8 67 f3 ff ff callq 5b9790 0.00 : 5ba429: e9 2a ff ff ff jmpq 5ba358 : /* : * If DISTINCT mode, and not distinct from prior, skip it. : * : * Note: we assume equality functions don't care about collation. : */ : if (isDistinct && 0.00 : 5ba42e: 49 8b 8c 24 28 01 00 mov 0x128(%r12),%rcx 0.00 : 5ba435: 00 0.00 : 5ba436: 49 8b bc 24 b8 00 00 mov 0xb8(%r12),%rdi 0.00 : 5ba43d: 00 0.07 : 5ba43e: 31 f6 xor %esi,%esi 0.00 : 5ba440: 4c 89 fa mov %r15,%rdx 0.00 : 5ba443: e8 e8 3b 1c 00 callq 77e030 0.00 : 5ba448: 84 c0 test %al,%al 0.00 : 5ba44a: 74 92 je 5ba3de : (!oldIsNull && !*isNull && : DatumGetBool(FunctionCall2(&peraggstate->equalfns[0], : oldVal, *newVal))))) : { : /* equal to prior, so forget this one */ : if (!peraggstate->inputtypeByVal && !*isNull) 0.00 : 5ba44c: 41 80 bc 24 d0 00 00 cmpb $0x0,0xd0(%r12) 0.00 : 5ba453: 00 00 0.00 : 5ba455: 0f 85 0e ff ff ff jne 5ba369 0.00 : 5ba45b: 41 80 bc 24 41 04 00 cmpb $0x0,0x441(%r12) 0.00 : 5ba462: 00 00 0.00 : 5ba464: 0f 85 ff fe ff ff jne 5ba369 : pfree(DatumGetPointer(*newVal)); 0.00 : 5ba46a: 49 8b bc 24 28 01 00 mov 0x128(%r12),%rdi 0.00 : 5ba471: 00 0.00 : 5ba472: e8 09 e7 1d 00 callq 798b80 0.00 : 5ba477: e9 ed fe ff ff jmpq 5ba369 : } : : MemoryContextSwitchTo(oldContext); : } : : if (!oldIsNull && !peraggstate->inputtypeByVal) 0.00 : 5ba47c: 84 db test %bl,%bl 0.00 : 5ba47e: 0f 85 8e fa ff ff jne 5b9f12 0.00 : 5ba484: 41 80 bc 24 d0 00 00 cmpb $0x0,0xd0(%r12) 0.00 : 5ba48b: 00 00 0.00 : 5ba48d: 0f 1f 00 nopl (%rax) 0.00 : 5ba490: 0f 85 7c fa ff ff jne 5b9f12 : pfree(DatumGetPointer(oldVal)); 0.00 : 5ba496: 4c 89 ff mov %r15,%rdi 0.00 : 5ba499: e8 e2 e6 1d 00 callq 798b80 0.00 : 5ba49e: e9 6f fa ff ff jmpq 5b9f12 : * and the representative input tuple. : */ : TupleTableSlot *result; : ExprDoneCond isDone; : : result = ExecProject(aggstate->ss.ps.ps_ProjInfo, &isDone); 0.00 : 5ba4a3: 49 8b 7e 68 mov 0x68(%r14),%rdi 0.03 : 5ba4a7: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5ba4ab: e8 50 2b ff ff callq 5ad000 : : if (isDone != ExprEndResult) 0.00 : 5ba4b0: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 5ba4b3: 83 fa 02 cmp $0x2,%edx 0.00 : 5ba4b6: 0f 84 f0 fa ff ff je 5b9fac : { : aggstate->ss.ps.ps_TupFromTlist = 0.00 : 5ba4bc: 83 ea 01 sub $0x1,%edx 0.00 : 5ba4bf: 41 0f 94 46 70 sete 0x70(%r14) 0.00 : 5ba4c4: e9 ef fa ff ff jmpq 5b9fb8 0.00 : 5ba4c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : outerslot = ExecProcNode(outerPlan); : if (TupIsNull(outerslot)) : { : /* no more outer-plan tuples available */ : aggstate->agg_done = true; 0.00 : 5ba4d0: 41 c6 86 d0 00 00 00 movb $0x1,0xd0(%r14) 0.00 : 5ba4d7: 01 0.00 : 5ba4d8: e9 5f fc ff ff jmpq 5ba13c : * If we don't already have the first tuple of the new group, fetch it : * from the outer plan. : */ : if (aggstate->grp_firstTuple == NULL) : { : outerslot = ExecProcNode(outerPlan); 0.03 : 5ba4dd: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 5ba4e1: e8 ba 1f ff ff callq 5ac4a0 : if (!TupIsNull(outerslot)) 0.00 : 5ba4e6: 48 85 c0 test %rax,%rax : * If we don't already have the first tuple of the new group, fetch it : * from the outer plan. : */ : if (aggstate->grp_firstTuple == NULL) : { : outerslot = ExecProcNode(outerPlan); 0.07 : 5ba4e9: 48 89 c7 mov %rax,%rdi : if (!TupIsNull(outerslot)) 0.00 : 5ba4ec: 74 06 je 5ba4f4 0.00 : 5ba4ee: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5ba4f2: 74 1f je 5ba513 : else : { : /* outer plan produced no tuples at all */ : aggstate->agg_done = true; : /* If we are grouping, we should produce no tuples too */ : if (node->aggstrategy != AGG_PLAIN) 0.00 : 5ba4f4: 48 8b 85 10 ff ff ff mov -0xf0(%rbp),%rax : aggstate->grp_firstTuple = ExecCopySlotTuple(outerslot); : } : else : { : /* outer plan produced no tuples at all */ : aggstate->agg_done = true; 0.00 : 5ba4fb: 41 c6 86 d0 00 00 00 movb $0x1,0xd0(%r14) 0.00 : 5ba502: 01 : /* If we are grouping, we should produce no tuples too */ : if (node->aggstrategy != AGG_PLAIN) 0.00 : 5ba503: 8b 40 60 mov 0x60(%rax),%eax 0.03 : 5ba506: 85 c0 test %eax,%eax 0.00 : 5ba508: 0f 84 2b fb ff ff je 5ba039 0.00 : 5ba50e: e9 a3 fa ff ff jmpq 5b9fb6 : { : /* : * Make a copy of the first input tuple; we will use this for : * comparisons (in group mode) and for projection. : */ : aggstate->grp_firstTuple = ExecCopySlotTuple(outerslot); 0.00 : 5ba513: e8 98 9a ff ff callq 5b3fb0 0.00 : 5ba518: 49 89 86 e0 00 00 00 mov %rax,0xe0(%r14) 0.00 : 5ba51f: 90 nop 0.00 : 5ba520: e9 14 fb ff ff jmpq 5ba039 : * and the representative input tuple. : */ : TupleTableSlot *result; : ExprDoneCond isDone; : : result = ExecProject(aggstate->ss.ps.ps_ProjInfo, &isDone); 0.07 : 5ba525: 49 8b 7e 68 mov 0x68(%r14),%rdi 0.00 : 5ba529: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5ba52d: e8 ce 2a ff ff callq 5ad000 : : if (isDone != ExprEndResult) 0.00 : 5ba532: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 5ba535: 83 fa 02 cmp $0x2,%edx 0.00 : 5ba538: 0f 84 ba f9 ff ff je 5b9ef8 0.03 : 5ba53e: e9 79 ff ff ff jmpq 5ba4bc : */ : entry = (AggHashEntry) ScanTupleHashTable(&aggstate->hashiter); : if (entry == NULL) : { : /* No more entries in hashtable, so done */ : aggstate->agg_done = TRUE; 0.00 : 5ba543: 41 c6 86 d0 00 00 00 movb $0x1,0xd0(%r14) 0.00 : 5ba54a: 01 0.00 : 5ba54b: 31 c0 xor %eax,%eax 0.00 : 5ba54d: e9 66 fa ff ff jmpq 5b9fb8 : TupleTableSlot *outerslot; : : /* : * get state info from node : */ : outerPlan = outerPlanState(aggstate); 0.00 : 5ba552: 4d 8b 6e 30 mov 0x30(%r14),%r13 : /* tmpcontext is the per-input-tuple expression context */ : tmpcontext = aggstate->tmpcontext; 0.00 : 5ba556: 4d 8b be c0 00 00 00 mov 0xc0(%r14),%r15 : * Process each outer-plan tuple, and then fetch the next one, until we : * exhaust the outer plan. : */ : for (;;) : { : outerslot = ExecProcNode(outerPlan); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1349 2.17 : 5ba55d: 4c 89 ef mov %r13,%rdi 0.00 : 5ba560: e8 3b 1f ff ff callq 5ac4a0 : if (TupIsNull(outerslot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1350 4.93 : 5ba565: 48 85 c0 test %rax,%rax : * Process each outer-plan tuple, and then fetch the next one, until we : * exhaust the outer plan. : */ : for (;;) : { : outerslot = ExecProcNode(outerPlan); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1349 2.10 : 5ba568: 48 89 c3 mov %rax,%rbx : if (TupIsNull(outerslot)) 0.13 : 5ba56b: 0f 84 db 00 00 00 je 5ba64c 0.07 : 5ba571: 80 78 04 00 cmpb $0x0,0x4(%rax) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1350 2.56 : 5ba575: 0f 85 d1 00 00 00 jne 5ba64c : break; : /* set up for advance_aggregates call */ : tmpcontext->ecxt_outertuple = outerslot; 0.03 : 5ba57b: 49 89 47 18 mov %rax,0x18(%r15) : * When called, CurrentMemoryContext should be the per-query context. : */ : static AggHashEntry : lookup_hash_entry(AggState *aggstate, TupleTableSlot *inputslot) : { : TupleTableSlot *hashslot = aggstate->hashslot; 0.33 : 5ba57f: 4d 8b a6 f0 00 00 00 mov 0xf0(%r14),%r12 : ListCell *l; : AggHashEntry entry; : bool isnew; : : /* if first time through, initialize hashslot by cloning input slot */ : if (hashslot->tts_tupleDescriptor == NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1035 0.92 : 5ba586: 49 83 7c 24 10 00 cmpq $0x0,0x10(%r12) 2.76 : 5ba58c: 75 14 jne 5ba5a2 : { : ExecSetSlotDescriptor(hashslot, inputslot->tts_tupleDescriptor); 0.00 : 5ba58e: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 5ba592: 4c 89 e7 mov %r12,%rdi 0.00 : 5ba595: e8 16 a0 ff ff callq 5b45b0 : /* Make sure all unused columns are NULLs */ : ExecStoreAllNullTuple(hashslot); 0.00 : 5ba59a: 4c 89 e7 mov %r12,%rdi 0.00 : 5ba59d: e8 1e 9d ff ff callq 5b42c0 : } : : /* transfer just the needed columns into hashslot */ : slot_getsomeattrs(inputslot, linitial_int(aggstate->hash_needed)); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1043 0.53 : 5ba5a2: 49 8b 96 f8 00 00 00 mov 0xf8(%r14),%rdx : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.03 : 5ba5a9: 31 c0 xor %eax,%eax 0.00 : 5ba5ab: 48 85 d2 test %rdx,%rdx 0.00 : 5ba5ae: 74 04 je 5ba5b4 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 2.07 : 5ba5b0: 48 8b 42 08 mov 0x8(%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1043 2.04 : 5ba5b4: 8b 30 mov (%rax),%esi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1043 5.78 : 5ba5b6: 48 89 df mov %rbx,%rdi 0.00 : 5ba5b9: e8 a2 4c eb ff callq 46f260 : foreach(l, aggstate->hash_needed) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1044 0.89 : 5ba5be: 49 8b 86 f8 00 00 00 mov 0xf8(%r14),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.66 : 5ba5c5: 48 85 c0 test %rax,%rax 0.00 : 5ba5c8: 74 3a je 5ba604 0.36 : 5ba5ca: 48 8b 70 08 mov 0x8(%rax),%rsi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1044 1.64 : 5ba5ce: 48 85 f6 test %rsi,%rsi 0.00 : 5ba5d1: 74 31 je 5ba604 : { : int varNumber = lfirst_int(l) - 1; : : hashslot->tts_values[varNumber] = inputslot->tts_values[varNumber]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 1.35 : 5ba5d3: 8b 06 mov (%rsi),%eax 3.65 : 5ba5d5: 48 8b 53 28 mov 0x28(%rbx),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 11.96 : 5ba5d9: 49 8b 4c 24 28 mov 0x28(%r12),%rcx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 1.02 : 5ba5de: 83 e8 01 sub $0x1,%eax 1.61 : 5ba5e1: 48 98 cltq 1.05 : 5ba5e3: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1048 14.03 : 5ba5e7: 48 89 14 c1 mov %rdx,(%rcx,%rax,8) : hashslot->tts_isnull[varNumber] = inputslot->tts_isnull[varNumber]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1049 9.26 : 5ba5eb: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 5ba5ef: 49 8b 4c 24 30 mov 0x30(%r12),%rcx 0.03 : 5ba5f4: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1049 2.07 : 5ba5f8: 88 14 01 mov %dl,(%rcx,%rax,1) : ExecStoreAllNullTuple(hashslot); : } : : /* transfer just the needed columns into hashslot */ : slot_getsomeattrs(inputslot, linitial_int(aggstate->hash_needed)); : foreach(l, aggstate->hash_needed) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1044 3.65 : 5ba5fb: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ba5ff: 48 85 f6 test %rsi,%rsi 0.00 : 5ba602: 75 cf jne 5ba5d3 : hashslot->tts_values[varNumber] = inputslot->tts_values[varNumber]; : hashslot->tts_isnull[varNumber] = inputslot->tts_isnull[varNumber]; : } : : /* find or create the hashtable entry using the filtered tuple */ : entry = (AggHashEntry) LookupTupleHashEntry(aggstate->hashtable, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1053 0.92 : 5ba604: 49 8b be e8 00 00 00 mov 0xe8(%r14),%rdi 0.95 : 5ba60b: 48 8d 55 d4 lea -0x2c(%rbp),%rdx 0.20 : 5ba60f: 4c 89 e6 mov %r12,%rsi 0.00 : 5ba612: e8 59 e8 fe ff callq 5a8e70 : hashslot, : &isnew); : : if (isnew) 0.26 : 5ba617: 80 7d d4 00 cmpb $0x0,-0x2c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1057 2.60 : 5ba61b: 48 8d 58 08 lea 0x8(%rax),%rbx 0.00 : 5ba61f: 74 12 je 5ba633 : { : /* initialize aggregates for new tuple group */ : initialize_aggregates(aggstate, aggstate->peragg, entry->pergroup); 0.20 : 5ba621: 49 8b b6 b0 00 00 00 mov 0xb0(%r14),%rsi 0.20 : 5ba628: 48 89 da mov %rbx,%rdx 0.00 : 5ba62b: 4c 89 f7 mov %r14,%rdi 0.00 : 5ba62e: e8 9d ef ff ff callq 5b95d0 : : /* Find or build hashtable entry for this tuple's group */ : entry = lookup_hash_entry(aggstate, outerslot); : : /* Advance the aggregates */ : advance_aggregates(aggstate, entry->pergroup); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1359 1.97 : 5ba633: 4c 89 f7 mov %r14,%rdi 0.03 : 5ba636: 48 89 de mov %rbx,%rsi 0.03 : 5ba639: e8 12 f3 ff ff callq 5b9950 : : /* Reset per-input-tuple context after each tuple */ : ResetExprContext(tmpcontext); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1362 0.72 : 5ba63e: 49 8b 7f 28 mov 0x28(%r15),%rdi 0.89 : 5ba642: e8 69 e3 1d 00 callq 7989b0 0.10 : 5ba647: e9 11 ff ff ff jmpq 5ba55d : } : : aggstate->table_filled = true; : /* Initialize to walk the hash table */ : ResetTupleHashIterator(aggstate->hashtable, &aggstate->hashiter); 0.00 : 5ba64c: 49 8b 86 e8 00 00 00 mov 0xe8(%r14),%rax : : /* Reset per-input-tuple context after each tuple */ : ResetExprContext(tmpcontext); : } : : aggstate->table_filled = true; 0.00 : 5ba653: 41 c6 86 00 01 00 00 movb $0x1,0x100(%r14) 0.00 : 5ba65a: 01 : /* Initialize to walk the hash table */ : ResetTupleHashIterator(aggstate->hashtable, &aggstate->hashiter); 0.00 : 5ba65b: 4d 8d be 08 01 00 00 lea 0x108(%r14),%r15 0.00 : 5ba662: 48 8b 38 mov (%rax),%rdi 0.00 : 5ba665: e8 f6 92 1c 00 callq 783960 0.00 : 5ba66a: 49 8b 86 e8 00 00 00 mov 0xe8(%r14),%rax 0.00 : 5ba671: 4c 89 ff mov %r15,%rdi 0.00 : 5ba674: 48 8b 30 mov (%rax),%rsi 0.00 : 5ba677: e8 b4 97 1c 00 callq 783e30 0.00 : 5ba67c: 41 0f b6 86 d0 00 00 movzbl 0xd0(%r14),%eax 0.00 : 5ba683: 00 0.00 : 5ba684: e9 6c f7 ff ff jmpq 5b9df5 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 6.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:65 6.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 6.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 5.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 5.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 5.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:63 5.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 5.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 5.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 5.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:54 4.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:65 4.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:56 4.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:57 4.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 2.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 1.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:56 1.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 1.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 1.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:56 1.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:56 0.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:54 0.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 0.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 0.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:65 0.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:57 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b7f00 : : } : : /* Entry to a plan node */ : void : InstrStartNode(Instrumentation *instr) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 1.69 : 5b7f00: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 5.38 : 5b7f01: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:53 0.80 : 5b7f04: 53 push %rbx 1.53 : 5b7f05: 48 89 fb mov %rdi,%rbx 4.12 : 5b7f08: 48 83 ec 08 sub $0x8,%rsp : if (instr->need_timer) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:54 0.83 : 5b7f0c: 80 3f 00 cmpb $0x0,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:54 5.22 : 5b7f0f: 74 4a je 5b7f5b : { : if (INSTR_TIME_IS_ZERO(instr->starttime)) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:56 4.45 : 5b7f11: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) 1.98 : 5b7f16: 75 07 jne 5b7f1f 1.21 : 5b7f18: 48 83 7f 08 00 cmpq $0x0,0x8(%rdi) 1.07 : 5b7f1d: 74 31 je 5b7f50 : INSTR_TIME_SET_CURRENT(instr->starttime); : else : elog(ERROR, "InstrStartNode called twice in a row"); 0.00 : 5b7f1f: ba 98 b6 88 00 mov $0x88b698,%edx 0.00 : 5b7f24: be 3b 00 00 00 mov $0x3b,%esi 0.00 : 5b7f29: bf fa b5 88 00 mov $0x88b5fa,%edi 0.00 : 5b7f2e: e8 ed 34 1c 00 callq 77b420 0.00 : 5b7f33: be 58 b6 88 00 mov $0x88b658,%esi 0.00 : 5b7f38: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b7f3d: 31 c0 xor %eax,%eax 0.00 : 5b7f3f: e8 ec 32 1c 00 callq 77b230 0.00 : 5b7f44: e8 87 15 eb ff callq 4694d0 0.00 : 5b7f49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : InstrStartNode(Instrumentation *instr) : { : if (instr->need_timer) : { : if (INSTR_TIME_IS_ZERO(instr->starttime)) : INSTR_TIME_SET_CURRENT(instr->starttime); /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:57 4.31 : 5b7f50: 48 8d 7f 08 lea 0x8(%rdi),%rdi 0.24 : 5b7f54: 31 f6 xor %esi,%esi 0.56 : 5b7f56: e8 65 16 eb ff callq 4695c0 : else : elog(ERROR, "InstrStartNode called twice in a row"); : } : : /* save buffer usage totals at node entry, if needed */ : if (instr->need_bufusage) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:63 5.73 : 5b7f5b: 80 7b 01 00 cmpb $0x0,0x1(%rbx) 0.00 : 5b7f5f: 0f 84 a9 00 00 00 je 5b800e : instr->bufusage_start = pgBufferUsage; 0.00 : 5b7f65: 48 8b 05 f4 77 60 00 mov 0x6077f4(%rip),%rax # bbf760 0.05 : 5b7f6c: 48 89 43 38 mov %rax,0x38(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 6.19 : 5b7f70: 48 8b 05 f1 77 60 00 mov 0x6077f1(%rip),%rax # bbf768 0.08 : 5b7f77: 48 89 43 40 mov %rax,0x40(%rbx) 0.03 : 5b7f7b: 48 8b 05 ee 77 60 00 mov 0x6077ee(%rip),%rax # bbf770 0.11 : 5b7f82: 48 89 43 48 mov %rax,0x48(%rbx) 5.95 : 5b7f86: 48 8b 05 eb 77 60 00 mov 0x6077eb(%rip),%rax # bbf778 0.00 : 5b7f8d: 48 89 43 50 mov %rax,0x50(%rbx) 0.05 : 5b7f91: 48 8b 05 e8 77 60 00 mov 0x6077e8(%rip),%rax # bbf780 0.03 : 5b7f98: 48 89 43 58 mov %rax,0x58(%rbx) 5.60 : 5b7f9c: 48 8b 05 e5 77 60 00 mov 0x6077e5(%rip),%rax # bbf788 0.00 : 5b7fa3: 48 89 43 60 mov %rax,0x60(%rbx) 0.05 : 5b7fa7: 48 8b 05 e2 77 60 00 mov 0x6077e2(%rip),%rax # bbf790 0.03 : 5b7fae: 48 89 43 68 mov %rax,0x68(%rbx) 5.38 : 5b7fb2: 48 8b 05 df 77 60 00 mov 0x6077df(%rip),%rax # bbf798 0.00 : 5b7fb9: 48 89 43 70 mov %rax,0x70(%rbx) 0.13 : 5b7fbd: 48 8b 05 dc 77 60 00 mov 0x6077dc(%rip),%rax # bbf7a0 0.08 : 5b7fc4: 48 89 43 78 mov %rax,0x78(%rbx) 6.21 : 5b7fc8: 48 8b 05 d9 77 60 00 mov 0x6077d9(%rip),%rax # bbf7a8 0.03 : 5b7fcf: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) 0.08 : 5b7fd6: 48 8b 05 d3 77 60 00 mov 0x6077d3(%rip),%rax # bbf7b0 0.05 : 5b7fdd: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) 5.97 : 5b7fe4: 48 8b 05 cd 77 60 00 mov 0x6077cd(%rip),%rax # bbf7b8 0.21 : 5b7feb: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 1.58 : 5b7ff2: 48 8b 05 c7 77 60 00 mov 0x6077c7(%rip),%rax # bbf7c0 0.75 : 5b7ff9: 48 89 83 98 00 00 00 mov %rax,0x98(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 6.99 : 5b8000: 48 8b 05 c1 77 60 00 mov 0x6077c1(%rip),%rax # bbf7c8 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:64 2.97 : 5b8007: 48 89 83 a0 00 00 00 mov %rax,0xa0(%rbx) : } /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:65 0.64 : 5b800e: 48 83 c4 08 add $0x8,%rsp 4.93 : 5b8012: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:65 6.70 : 5b8013: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 56.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 7.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 7.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 6.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 5.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 3.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 3.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 3.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 2.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077ece0 : : return heap_tuple_untoast_attr_slice(datum, first, count); : } : : struct varlena * : pg_detoast_datum_packed(struct varlena * datum) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 7.50 : 77ece0: 55 push %rbp : if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 5.60 : 77ece1: 0f b6 17 movzbl (%rdi),%edx : return heap_tuple_untoast_attr_slice(datum, first, count); : } : : struct varlena * : pg_detoast_datum_packed(struct varlena * datum) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 56.55 : 77ece4: 48 89 e5 mov %rsp,%rbp : if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 3.24 : 77ece7: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 6.69 : 77ece9: 83 e0 03 and $0x3,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 3.49 : 77ecec: 83 f8 02 cmp $0x2,%eax 0.00 : 77ecef: 74 0f je 77ed00 3.82 : 77ecf1: 80 ea 01 sub $0x1,%dl 0.00 : 77ecf4: 74 0a je 77ed00 : return heap_tuple_untoast_attr(datum); : else : return datum; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 2.15 : 77ecf6: 48 89 f8 mov %rdi,%rax 3.06 : 77ecf9: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 7.90 : 77ecfa: c3 retq 0.00 : 77ecfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77ed00: c9 leaveq : : struct varlena * : pg_detoast_datum_packed(struct varlena * datum) : { : if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum)) : return heap_tuple_untoast_attr(datum); 0.00 : 77ed01: e9 4a 41 d2 ff jmpq 4a2e50 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1860 11.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1860 7.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1876 5.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1860 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1873 4.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1872 4.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1864 3.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1870 3.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1890 3.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1877 3.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1879 3.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1878 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1888 2.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1875 2.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1861 2.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1875 2.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1909 2.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1909 2.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1876 1.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1870 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1860 1.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1876 1.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1870 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1864 1.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1871 1.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1861 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1873 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d64d0 : : } : } : : Datum : float4_accum(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1860 11.63 : 6d64d0: 55 push %rbp 13.92 : 6d64d1: 48 89 e5 mov %rsp,%rbp 0.18 : 6d64d4: 41 55 push %r13 5.61 : 6d64d6: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1860 1.81 : 6d64d8: 49 89 fc mov %rdi,%r12 0.11 : 6d64db: 53 push %rbx 0.26 : 6d64dc: 48 83 ec 68 sub $0x68,%rsp : ArrayType *transarray = PG_GETARG_ARRAYTYPE_P(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1861 2.84 : 6d64e0: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.26 : 6d64e4: e8 27 88 0a 00 callq 77ed10 : : /* do computations as float8 */ : float8 newval = PG_GETARG_FLOAT4(1); 0.00 : 6d64e9: 49 8b 7c 24 28 mov 0x28(%r12),%rdi : } : : Datum : float4_accum(PG_FUNCTION_ARGS) : { : ArrayType *transarray = PG_GETARG_ARRAYTYPE_P(0); 1.00 : 6d64ee: 49 89 c5 mov %rax,%r13 : : /* do computations as float8 */ : float8 newval = PG_GETARG_FLOAT4(1); 0.11 : 6d64f1: e8 ba 74 0a 00 callq 77d9b0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1864 1.14 : 6d64f6: 0f 14 c0 unpcklps %xmm0,%xmm0 : float8 *transvalues; : float8 N, : sumX, : sumX2; : : transvalues = check_float8_array(transarray, "float4_accum", 3); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1870 1.44 : 6d64f9: ba 03 00 00 00 mov $0x3,%edx 1.85 : 6d64fe: be 83 b5 8b 00 mov $0x8bb583,%esi 0.04 : 6d6503: 4c 89 ef mov %r13,%rdi : float4_accum(PG_FUNCTION_ARGS) : { : ArrayType *transarray = PG_GETARG_ARRAYTYPE_P(0); : : /* do computations as float8 */ : float8 newval = PG_GETARG_FLOAT4(1); 0.04 : 6d6506: 0f 5a c0 cvtps2pd %xmm0,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1864 4.25 : 6d6509: f2 0f 11 45 88 movsd %xmm0,-0x78(%rbp) : float8 *transvalues; : float8 N, : sumX, : sumX2; : : transvalues = check_float8_array(transarray, "float4_accum", 3); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1870 3.88 : 6d650e: e8 2d e4 ff ff callq 6d4940 : N = transvalues[0]; 0.11 : 6d6513: f2 0f 10 00 movsd (%rax),%xmm0 : float8 *transvalues; : float8 N, : sumX, : sumX2; : : transvalues = check_float8_array(transarray, "float4_accum", 3); 0.11 : 6d6517: 48 89 c3 mov %rax,%rbx : N = transvalues[0]; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1871 1.03 : 6d651a: f2 0f 11 45 90 movsd %xmm0,-0x70(%rbp) : sumX = transvalues[1]; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1872 4.39 : 6d651f: f2 0f 10 40 08 movsd 0x8(%rax),%xmm0 0.11 : 6d6524: f2 0f 11 45 98 movsd %xmm0,-0x68(%rbp) : sumX2 = transvalues[2]; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1873 4.76 : 6d6529: f2 0f 10 40 10 movsd 0x10(%rax),%xmm0 0.59 : 6d652e: f2 0f 11 45 a0 movsd %xmm0,-0x60(%rbp) : : N += 1.0; : sumX += newval; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1876 2.10 : 6d6533: f2 0f 10 45 98 movsd -0x68(%rbp),%xmm0 1.62 : 6d6538: f2 0f 58 45 88 addsd -0x78(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1876 7.46 : 6d653d: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) : CHECKFLOATVAL(sumX, isinf(transvalues[1]) || isinf(newval), true); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1877 3.14 : 6d6542: e8 a9 35 d9 ff callq 469af0 <__isinf@plt> 0.04 : 6d6547: 85 c0 test %eax,%eax 0.00 : 6d6549: 74 12 je 6d655d 0.00 : 6d654b: f2 0f 10 45 98 movsd -0x68(%rbp),%xmm0 0.00 : 6d6550: e8 9b 35 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d6555: 85 c0 test %eax,%eax 0.00 : 6d6557: 0f 84 03 01 00 00 je 6d6660 : sumX2 += newval * newval; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1878 3.10 : 6d655d: f2 0f 10 45 88 movsd -0x78(%rbp),%xmm0 0.00 : 6d6562: f2 0f 59 c0 mulsd %xmm0,%xmm0 0.00 : 6d6566: f2 0f 58 45 a0 addsd -0x60(%rbp),%xmm0 0.18 : 6d656b: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) : CHECKFLOATVAL(sumX2, isinf(transvalues[2]) || isinf(newval), true); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1879 3.14 : 6d6570: e8 7b 35 d9 ff callq 469af0 <__isinf@plt> 0.07 : 6d6575: 85 c0 test %eax,%eax 0.00 : 6d6577: 75 4f jne 6d65c8 : transvalues = check_float8_array(transarray, "float4_accum", 3); : N = transvalues[0]; : sumX = transvalues[1]; : sumX2 = transvalues[2]; : : N += 1.0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1875 2.81 : 6d6579: f2 0f 10 45 90 movsd -0x70(%rbp),%xmm0 : /* : * If we're invoked as an aggregate, we can cheat and modify our first : * parameter in-place to reduce palloc overhead. Otherwise we construct a : * new array with the updated transition data and return it. : */ : if (AggCheckCallContext(fcinfo, NULL)) 0.00 : 6d657e: 31 f6 xor %esi,%esi 0.04 : 6d6580: 4c 89 e7 mov %r12,%rdi : transvalues = check_float8_array(transarray, "float4_accum", 3); : N = transvalues[0]; : sumX = transvalues[1]; : sumX2 = transvalues[2]; : : N += 1.0; 0.04 : 6d6583: f2 0f 58 05 cd 8b 0d addsd 0xd8bcd(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 6d658a: 00 2.99 : 6d658b: f2 0f 11 45 a8 movsd %xmm0,-0x58(%rbp) : /* : * If we're invoked as an aggregate, we can cheat and modify our first : * parameter in-place to reduce palloc overhead. Otherwise we construct a : * new array with the updated transition data and return it. : */ : if (AggCheckCallContext(fcinfo, NULL)) 0.00 : 6d6590: e8 ab 1d ee ff callq 5b8340 0.04 : 6d6595: 85 c0 test %eax,%eax 0.00 : 6d6597: 74 67 je 6d6600 : { : transvalues[0] = N; 0.00 : 6d6599: f2 0f 10 45 a8 movsd -0x58(%rbp),%xmm0 : transvalues[1] = sumX; : transvalues[2] = sumX2; : : PG_RETURN_ARRAYTYPE_P(transarray); 0.04 : 6d659e: 4c 89 e8 mov %r13,%rax : * parameter in-place to reduce palloc overhead. Otherwise we construct a : * new array with the updated transition data and return it. : */ : if (AggCheckCallContext(fcinfo, NULL)) : { : transvalues[0] = N; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1888 3.03 : 6d65a1: f2 0f 11 03 movsd %xmm0,(%rbx) : transvalues[1] = sumX; 0.00 : 6d65a5: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 0.00 : 6d65aa: f2 0f 11 43 08 movsd %xmm0,0x8(%rbx) : transvalues[2] = sumX2; 0.11 : 6d65af: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1890 3.32 : 6d65b4: f2 0f 11 43 10 movsd %xmm0,0x10(%rbx) : FLOAT8OID, : sizeof(float8), FLOAT8PASSBYVAL, 'd'); : : PG_RETURN_ARRAYTYPE_P(result); : } : } 0.07 : 6d65b9: 48 83 c4 68 add $0x68,%rsp 0.07 : 6d65bd: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1909 2.25 : 6d65be: 41 5c pop %r12 0.07 : 6d65c0: 41 5d pop %r13 0.07 : 6d65c2: c9 leaveq 2.70 : 6d65c3: c3 retq 0.00 : 6d65c4: 0f 1f 40 00 nopl 0x0(%rax) : : N += 1.0; : sumX += newval; : CHECKFLOATVAL(sumX, isinf(transvalues[1]) || isinf(newval), true); : sumX2 += newval * newval; : CHECKFLOATVAL(sumX2, isinf(transvalues[2]) || isinf(newval), true); 0.00 : 6d65c8: f2 0f 10 45 a0 movsd -0x60(%rbp),%xmm0 0.00 : 6d65cd: e8 1e 35 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d65d2: 85 c0 test %eax,%eax 0.00 : 6d65d4: 75 a3 jne 6d6579 0.00 : 6d65d6: f2 0f 10 45 88 movsd -0x78(%rbp),%xmm0 0.00 : 6d65db: e8 10 35 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d65e0: 85 c0 test %eax,%eax 0.00 : 6d65e2: 75 95 jne 6d6579 0.00 : 6d65e4: 45 31 c0 xor %r8d,%r8d 0.00 : 6d65e7: b9 7f ba 8b 00 mov $0x8bba7f,%ecx 0.00 : 6d65ec: ba 57 07 00 00 mov $0x757,%edx 0.00 : 6d65f1: e9 89 00 00 00 jmpq 6d667f 0.00 : 6d65f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6d65fd: 00 00 00 : else : { : Datum transdatums[3]; : ArrayType *result; : : transdatums[0] = Float8GetDatumFast(N); 0.00 : 6d6600: f2 0f 10 45 a8 movsd -0x58(%rbp),%xmm0 0.00 : 6d6605: e8 b6 73 0a 00 callq 77d9c0 : transdatums[1] = Float8GetDatumFast(sumX); 0.00 : 6d660a: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 : else : { : Datum transdatums[3]; : ArrayType *result; : : transdatums[0] = Float8GetDatumFast(N); 0.00 : 6d660f: 48 89 45 c0 mov %rax,-0x40(%rbp) : transdatums[1] = Float8GetDatumFast(sumX); 0.00 : 6d6613: e8 a8 73 0a 00 callq 77d9c0 : transdatums[2] = Float8GetDatumFast(sumX2); 0.00 : 6d6618: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 : { : Datum transdatums[3]; : ArrayType *result; : : transdatums[0] = Float8GetDatumFast(N); : transdatums[1] = Float8GetDatumFast(sumX); 0.00 : 6d661d: 48 89 45 c8 mov %rax,-0x38(%rbp) : transdatums[2] = Float8GetDatumFast(sumX2); 0.00 : 6d6621: e8 9a 73 0a 00 callq 77d9c0 : : result = construct_array(transdatums, 3, 0.00 : 6d6626: 48 8d 7d c0 lea -0x40(%rbp),%rdi : Datum transdatums[3]; : ArrayType *result; : : transdatums[0] = Float8GetDatumFast(N); : transdatums[1] = Float8GetDatumFast(sumX); : transdatums[2] = Float8GetDatumFast(sumX2); 0.00 : 6d662a: 48 89 45 d0 mov %rax,-0x30(%rbp) : : result = construct_array(transdatums, 3, 0.00 : 6d662e: 41 b9 64 00 00 00 mov $0x64,%r9d 0.00 : 6d6634: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 6d663a: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 6d663f: ba bd 02 00 00 mov $0x2bd,%edx 0.00 : 6d6644: be 03 00 00 00 mov $0x3,%esi 0.00 : 6d6649: e8 a2 45 fe ff callq 6babf0 : FLOAT8OID, : sizeof(float8), FLOAT8PASSBYVAL, 'd'); : : PG_RETURN_ARRAYTYPE_P(result); : } : } 0.00 : 6d664e: 48 83 c4 68 add $0x68,%rsp 0.00 : 6d6652: 5b pop %rbx 0.00 : 6d6653: 41 5c pop %r12 0.00 : 6d6655: 41 5d pop %r13 0.00 : 6d6657: c9 leaveq 0.00 : 6d6658: c3 retq 0.00 : 6d6659: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : sumX = transvalues[1]; : sumX2 = transvalues[2]; : : N += 1.0; : sumX += newval; : CHECKFLOATVAL(sumX, isinf(transvalues[1]) || isinf(newval), true); 0.00 : 6d6660: f2 0f 10 45 88 movsd -0x78(%rbp),%xmm0 0.00 : 6d6665: e8 86 34 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d666a: 85 c0 test %eax,%eax 0.00 : 6d666c: 0f 85 eb fe ff ff jne 6d655d 0.00 : 6d6672: 45 31 c0 xor %r8d,%r8d 0.00 : 6d6675: b9 7f ba 8b 00 mov $0x8bba7f,%ecx 0.00 : 6d667a: ba 55 07 00 00 mov $0x755,%edx : sumX2 += newval * newval; : CHECKFLOATVAL(sumX2, isinf(transvalues[2]) || isinf(newval), true); 0.00 : 6d667f: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d6684: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d6689: e8 32 44 0a 00 callq 77aac0 0.00 : 6d668e: 84 c0 test %al,%al 0.00 : 6d6690: 75 05 jne 6d6697 0.00 : 6d6692: e8 39 2e d9 ff callq 4694d0 0.00 : 6d6697: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d669c: 31 c0 xor %eax,%eax 0.00 : 6d669e: e8 fd 61 0a 00 callq 77c8a0 0.00 : 6d66a3: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d66a8: 89 c3 mov %eax,%ebx 0.00 : 6d66aa: e8 a1 66 0a 00 callq 77cd50 0.00 : 6d66af: 89 de mov %ebx,%esi 0.00 : 6d66b1: 89 c7 mov %eax,%edi 0.00 : 6d66b3: 31 c0 xor %eax,%eax 0.00 : 6d66b5: e8 26 3f 0a 00 callq 77a5e0 0.00 : 6d66ba: eb d6 jmp 6d6692 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:736 6.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 6.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 5.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:740 5.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:765 4.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:927 4.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 3.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 2.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:776 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:908 2.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:735 2.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:774 2.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:772 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 1.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:735 1.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 1.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 1.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 1.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 1.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:668 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 0.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:740 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:336 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:759 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:776 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:911 0.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:336 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798110 : : * MAXALIGN_DOWN(SIZE_MAX) - ALLOC_BLOCKHDRSZ - ALLOC_CHUNKHDRSZ : * All callers use a much-lower limit. : */ : static void * : AllocSetAlloc(MemoryContext context, Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 6.49 : 798110: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.04 : 798111: 48 89 e5 mov %rsp,%rbp 1.71 : 798114: 4c 89 65 e0 mov %r12,-0x20(%rbp) 3.97 : 798118: 4c 89 75 f0 mov %r14,-0x10(%rbp) 2.02 : 79811c: 49 89 fc mov %rdi,%r12 0.44 : 79811f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 1.71 : 798123: 4c 89 6d e8 mov %r13,-0x18(%rbp) 2.08 : 798127: 49 89 f6 mov %rsi,%r14 0.54 : 79812a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 1.01 : 79812e: 48 83 ec 30 sub $0x30,%rsp : : /* : * If requested size exceeds maximum for chunks, allocate an entire block : * for this request. : */ : if (size > set->allocChunkLimit) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:668 1.08 : 798132: 48 39 b7 b0 00 00 00 cmp %rsi,0xb0(%rdi) 0.00 : 798139: 72 6d jb 7981a8 : { : int idx; : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 1.82 : 79813b: 31 f6 xor %esi,%esi 0.67 : 79813d: 49 83 fe 08 cmp $0x8,%r14 0.00 : 798141: 77 3d ja 798180 : * corresponding free list to see if there is a free chunk we could reuse. : * If one is found, remove it from the free list, make it again a member : * of the alloc set and return its data address. : */ : fidx = AllocSetFreeIndex(size); : chunk = set->freelist[fidx]; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:735 2.52 : 798143: 48 63 c6 movslq %esi,%rax 0.27 : 798146: 48 8d 48 08 lea 0x8(%rax),%rcx 1.38 : 79814a: 49 8b 14 cc mov (%r12,%rcx,8),%rdx : if (chunk != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:736 7.63 : 79814e: 48 85 d2 test %rdx,%rdx 0.00 : 798151: 0f 84 c9 00 00 00 je 798220 : { : Assert(chunk->size >= size); : : set->freelist[fidx] = (AllocChunk) chunk->aset; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:740 0.94 : 798157: 48 8b 02 mov (%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:740 5.92 : 79815a: 49 89 04 cc mov %rax,(%r12,%rcx,8) : /* fill the allocated space with junk */ : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:759 0.87 : 79815e: 48 8d 42 10 lea 0x10(%rdx),%rax : { : Assert(chunk->size >= size); : : set->freelist[fidx] = (AllocChunk) chunk->aset; : : chunk->aset = (void *) set; 0.13 : 798162: 4c 89 22 mov %r12,(%rdx) : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 1.45 : 798165: 48 8b 5d d8 mov -0x28(%rbp),%rbx 2.79 : 798169: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.61 : 79816d: 4c 8b 6d e8 mov -0x18(%rbp),%r13 1.75 : 798171: 4c 8b 75 f0 mov -0x10(%rbp),%r14 1.24 : 798175: 4c 8b 7d f8 mov -0x8(%rbp),%r15 2.08 : 798179: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 6.62 : 79817a: c3 retq 0.00 : 79817b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) : { : tsize = (size - 1) >> ALLOC_MINBITS; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 0.98 : 798180: 49 8d 46 ff lea -0x1(%r14),%rax 1.11 : 798184: 48 89 c2 mov %rax,%rdx 1.34 : 798187: 48 c1 ea 03 shr $0x3,%rdx : * justify micro-optimization effort. The best approach seems to be : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:336 0.54 : 79818b: 89 d0 mov %edx,%eax 0.91 : 79818d: c1 e8 08 shr $0x8,%eax : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 1.34 : 798190: 85 c0 test %eax,%eax 0.00 : 798192: 74 7c je 798210 0.00 : 798194: 89 c0 mov %eax,%eax 0.00 : 798196: 0f b6 80 80 1e 8e 00 movzbl 0x8e1e80(%rax),%eax 0.00 : 79819d: 8d 70 08 lea 0x8(%rax),%esi 0.00 : 7981a0: eb a1 jmp 798143 0.00 : 7981a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * If requested size exceeds maximum for chunks, allocate an entire block : * for this request. : */ : if (size > set->allocChunkLimit) : { : chunk_size = MAXALIGN(size); 0.00 : 7981a8: 48 8d 5e 07 lea 0x7(%rsi),%rbx 0.00 : 7981ac: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx : blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; 0.00 : 7981b0: 4c 8d 6b 30 lea 0x30(%rbx),%r13 : block = (AllocBlock) malloc(blksize); 0.00 : 7981b4: 4c 89 ef mov %r13,%rdi 0.00 : 7981b7: e8 74 14 cd ff callq 469630 : if (block == NULL) 0.00 : 7981bc: 48 85 c0 test %rax,%rax : */ : if (size > set->allocChunkLimit) : { : chunk_size = MAXALIGN(size); : blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; : block = (AllocBlock) malloc(blksize); 0.00 : 7981bf: 48 89 c2 mov %rax,%rdx : if (block == NULL) 0.00 : 7981c2: 0f 84 2e 02 00 00 je 7983f6 : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : block->aset = set; 0.00 : 7981c8: 4c 89 20 mov %r12,(%rax) : block->freeptr = block->endptr = ((char *) block) + blksize; : : chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); 0.00 : 7981cb: 48 8d 72 20 lea 0x20(%rdx),%rsi : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : block->aset = set; : block->freeptr = block->endptr = ((char *) block) + blksize; 0.00 : 7981cf: 4a 8d 04 28 lea (%rax,%r13,1),%rax : : chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); : chunk->aset = set; 0.00 : 7981d3: 4c 89 62 20 mov %r12,0x20(%rdx) : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : block->aset = set; : block->freeptr = block->endptr = ((char *) block) + blksize; 0.00 : 7981d7: 48 89 42 18 mov %rax,0x18(%rdx) 0.03 : 7981db: 48 89 42 10 mov %rax,0x10(%rdx) : : chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); : chunk->aset = set; : chunk->size = chunk_size; 0.00 : 7981df: 48 89 5e 08 mov %rbx,0x8(%rsi) : : /* : * Stick the new block underneath the active allocation block, so that : * we don't lose the use of the space remaining therein. : */ : if (set->blocks != NULL) 0.00 : 7981e3: 49 8b 4c 24 38 mov 0x38(%r12),%rcx 0.00 : 7981e8: 48 85 c9 test %rcx,%rcx 0.00 : 7981eb: 0f 84 cf 01 00 00 je 7983c0 : { : block->next = set->blocks->next; 0.00 : 7981f1: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 7981f5: 48 89 42 08 mov %rax,0x8(%rdx) : set->blocks->next = block; 0.00 : 7981f9: 48 89 51 08 mov %rdx,0x8(%rcx) : * if any, NOACCESS. : */ : VALGRIND_MAKE_MEM_NOACCESS((char *) chunk + ALLOC_CHUNK_PUBLIC, : chunk_size + ALLOC_CHUNKHDRSZ - ALLOC_CHUNK_PUBLIC); : : return AllocChunkGetPointer(chunk); 0.00 : 7981fd: 48 8d 46 10 lea 0x10(%rsi),%rax : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); : } 0.00 : 798201: e9 5f ff ff ff jmpq 798165 0.00 : 798206: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79820d: 00 00 00 : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 1.58 : 798210: 89 d0 mov %edx,%eax 1.11 : 798212: 0f b6 b0 80 1e 8e 00 movzbl 0x8e1e80(%rax),%esi 3.13 : 798219: e9 25 ff ff ff jmpq 798143 0.00 : 79821e: 66 90 xchg %ax,%ax : : /* : * If there is enough room in the active allocation block, we will put the : * chunk into that block. Else must start a new one. : */ : if ((block = set->blocks) != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:772 2.42 : 798220: 4d 8b 4c 24 38 mov 0x38(%r12),%r9 : } : : /* : * Choose the actual chunk size to allocate. : */ : chunk_size = (1 << ALLOC_MINBITS) << fidx; 0.03 : 798225: b8 08 00 00 00 mov $0x8,%eax 0.17 : 79822a: 89 f1 mov %esi,%ecx 0.17 : 79822c: d3 e0 shl %cl,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:765 5.04 : 79822e: 4c 63 f8 movslq %eax,%r15 : : /* : * If there is enough room in the active allocation block, we will put the : * chunk into that block. Else must start a new one. : */ : if ((block = set->blocks) != NULL) 0.03 : 798231: 4d 85 c9 test %r9,%r9 0.00 : 798234: 0f 84 ce 00 00 00 je 798308 : { : Size availspace = block->endptr - block->freeptr; 0.27 : 79823a: 49 8b 79 10 mov 0x10(%r9),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:774 2.45 : 79823e: 4d 8b 41 18 mov 0x18(%r9),%r8 : : if (availspace < (chunk_size + ALLOC_CHUNKHDRSZ)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:776 2.99 : 798242: 49 8d 47 10 lea 0x10(%r15),%rax : * If there is enough room in the active allocation block, we will put the : * chunk into that block. Else must start a new one. : */ : if ((block = set->blocks) != NULL) : { : Size availspace = block->endptr - block->freeptr; 0.00 : 798246: 49 29 f8 sub %rdi,%r8 : : if (availspace < (chunk_size + ALLOC_CHUNKHDRSZ)) 0.84 : 798249: 49 39 c0 cmp %rax,%r8 0.00 : 79824c: 0f 83 52 01 00 00 jae 7983a4 : * : * Because we can only get here when there's less than : * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate : * more than ALLOCSET_NUM_FREELISTS-1 times. : */ : while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) 0.00 : 798252: 49 83 f8 17 cmp $0x17,%r8 0.00 : 798256: 0f 86 ac 00 00 00 jbe 798308 : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 79825c: 41 ba 01 00 00 00 mov $0x1,%r10d : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); : availspace -= (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 798262: 49 c7 c3 f0 ff ff ff mov $0xfffffffffffffff0,%r11 0.00 : 798269: eb 5d jmp 7982c8 0.00 : 79826b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 798270: 89 c0 mov %eax,%eax 0.00 : 798272: 0f b6 88 80 1e 8e 00 movzbl 0x8e1e80(%rax),%ecx 0.00 : 798279: 4c 89 d0 mov %r10,%rax 0.00 : 79827c: 8d 51 08 lea 0x8(%rcx),%edx 0.00 : 79827f: 83 c1 0b add $0xb,%ecx 0.00 : 798282: 48 d3 e0 shl %cl,%rax : /* : * In most cases, we'll get back the index of the next larger : * freelist than the one we need to put this chunk on. The : * exception is when availchunk is exactly a power of 2. : */ : if (availchunk != ((Size) 1 << (a_fidx + ALLOC_MINBITS))) 0.00 : 798285: 48 39 c6 cmp %rax,%rsi 0.00 : 798288: 74 0c je 798296 : { : a_fidx--; 0.00 : 79828a: 83 ea 01 sub $0x1,%edx : Assert(a_fidx >= 0); : availchunk = ((Size) 1 << (a_fidx + ALLOC_MINBITS)); 0.00 : 79828d: 4c 89 d6 mov %r10,%rsi 0.00 : 798290: 8d 4a 03 lea 0x3(%rdx),%ecx 0.00 : 798293: 48 d3 e6 shl %cl,%rsi : chunk = (AllocChunk) (block->freeptr); : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 798296: 48 8d 44 37 10 lea 0x10(%rdi,%rsi,1),%rax 0.00 : 79829b: 49 89 41 10 mov %rax,0x10(%r9) : availspace -= (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 79829f: 4c 89 d8 mov %r11,%rax : : chunk->size = availchunk; 0.00 : 7982a2: 48 89 77 08 mov %rsi,0x8(%rdi) : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); : availspace -= (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 7982a6: 48 29 f0 sub %rsi,%rax 0.00 : 7982a9: 49 01 c0 add %rax,%r8 : : chunk->size = availchunk; : #ifdef MEMORY_CONTEXT_CHECKING : chunk->requested_size = 0; /* mark it free */ : #endif : chunk->aset = (void *) set->freelist[a_fidx]; 0.00 : 7982ac: 48 63 c2 movslq %edx,%rax 0.00 : 7982af: 48 83 c0 08 add $0x8,%rax : * : * Because we can only get here when there's less than : * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate : * more than ALLOCSET_NUM_FREELISTS-1 times. : */ : while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) 0.00 : 7982b3: 49 83 f8 17 cmp $0x17,%r8 : : chunk->size = availchunk; : #ifdef MEMORY_CONTEXT_CHECKING : chunk->requested_size = 0; /* mark it free */ : #endif : chunk->aset = (void *) set->freelist[a_fidx]; 0.00 : 7982b7: 49 8b 14 c4 mov (%r12,%rax,8),%rdx 0.00 : 7982bb: 48 89 17 mov %rdx,(%rdi) : set->freelist[a_fidx] = chunk; 0.00 : 7982be: 49 89 3c c4 mov %rdi,(%r12,%rax,8) : * : * Because we can only get here when there's less than : * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate : * more than ALLOCSET_NUM_FREELISTS-1 times. : */ : while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) 0.00 : 7982c2: 76 44 jbe 798308 0.00 : 7982c4: 49 8b 79 10 mov 0x10(%r9),%rdi : { : Size availchunk = availspace - ALLOC_CHUNKHDRSZ; 0.00 : 7982c8: 49 8d 70 f0 lea -0x10(%r8),%rsi : { : int idx; : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) 0.03 : 7982cc: 31 d2 xor %edx,%edx 0.00 : 7982ce: b8 08 00 00 00 mov $0x8,%eax 0.00 : 7982d3: 48 83 fe 08 cmp $0x8,%rsi 0.00 : 7982d7: 76 ac jbe 798285 : { : tsize = (size - 1) >> ALLOC_MINBITS; 0.00 : 7982d9: 49 8d 40 ef lea -0x11(%r8),%rax 0.00 : 7982dd: 48 89 c2 mov %rax,%rdx 0.00 : 7982e0: 48 c1 ea 03 shr $0x3,%rdx : * justify micro-optimization effort. The best approach seems to be : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; 0.00 : 7982e4: 89 d0 mov %edx,%eax 0.00 : 7982e6: c1 e8 08 shr $0x8,%eax : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 7982e9: 85 c0 test %eax,%eax 0.00 : 7982eb: 75 83 jne 798270 0.00 : 7982ed: 89 d0 mov %edx,%eax 0.00 : 7982ef: 0f b6 90 80 1e 8e 00 movzbl 0x8e1e80(%rax),%edx 0.00 : 7982f6: 4c 89 d0 mov %r10,%rax 0.00 : 7982f9: 8d 4a 03 lea 0x3(%rdx),%ecx 0.00 : 7982fc: 48 d3 e0 shl %cl,%rax 0.00 : 7982ff: eb 84 jmp 798285 0.00 : 798301: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * The first such block has size initBlockSize, and we double the : * space in each succeeding block, but not more than maxBlockSize. : */ : blksize = set->nextBlockSize; 0.00 : 798308: 49 8b 94 24 a8 00 00 mov 0xa8(%r12),%rdx 0.00 : 79830f: 00 : set->nextBlockSize <<= 1; : if (set->nextBlockSize > set->maxBlockSize) 0.00 : 798310: 49 8b 8c 24 a0 00 00 mov 0xa0(%r12),%rcx 0.00 : 798317: 00 : /* : * The first such block has size initBlockSize, and we double the : * space in each succeeding block, but not more than maxBlockSize. : */ : blksize = set->nextBlockSize; : set->nextBlockSize <<= 1; 0.00 : 798318: 48 8d 04 12 lea (%rdx,%rdx,1),%rax : if (set->nextBlockSize > set->maxBlockSize) 0.00 : 79831c: 48 39 c8 cmp %rcx,%rax : /* : * The first such block has size initBlockSize, and we double the : * space in each succeeding block, but not more than maxBlockSize. : */ : blksize = set->nextBlockSize; : set->nextBlockSize <<= 1; 0.00 : 79831f: 49 89 84 24 a8 00 00 mov %rax,0xa8(%r12) 0.00 : 798326: 00 : if (set->nextBlockSize > set->maxBlockSize) 0.00 : 798327: 76 08 jbe 798331 : set->nextBlockSize = set->maxBlockSize; 0.00 : 798329: 49 89 8c 24 a8 00 00 mov %rcx,0xa8(%r12) 0.00 : 798330: 00 : : /* : * If initBlockSize is less than ALLOC_CHUNK_LIMIT, we could need more : * space... but try to keep it a power of 2. : */ : required_size = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; 0.00 : 798331: 4d 8d 6f 30 lea 0x30(%r15),%r13 : while (blksize < required_size) 0.00 : 798335: 4c 39 ea cmp %r13,%rdx 0.00 : 798338: 73 0e jae 798348 0.00 : 79833a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : blksize <<= 1; 0.00 : 798340: 48 01 d2 add %rdx,%rdx : /* : * If initBlockSize is less than ALLOC_CHUNK_LIMIT, we could need more : * space... but try to keep it a power of 2. : */ : required_size = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; : while (blksize < required_size) 0.00 : 798343: 49 39 d5 cmp %rdx,%r13 0.00 : 798346: 77 f8 ja 798340 0.00 : 798348: 48 89 d3 mov %rdx,%rbx 0.00 : 79834b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : while (block == NULL && blksize > 1024 * 1024) : { : blksize >>= 1; : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); 0.00 : 798350: 48 89 df mov %rbx,%rdi 0.00 : 798353: e8 d8 12 cd ff callq 469630 : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.00 : 798358: 48 85 c0 test %rax,%rax : { : blksize >>= 1; : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); 0.00 : 79835b: 48 89 c2 mov %rax,%rdx : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.00 : 79835e: 74 78 je 7983d8 : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); : } : : if (block == NULL) 0.00 : 798360: 48 85 d2 test %rdx,%rdx : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.00 : 798363: 49 89 d1 mov %rdx,%r9 : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); : } : : if (block == NULL) 0.00 : 798366: 0f 84 10 01 00 00 je 79847c : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : : block->aset = set; : block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; 0.00 : 79836c: 48 8d 42 20 lea 0x20(%rdx),%rax : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : : block->aset = set; 0.00 : 798370: 4c 89 22 mov %r12,(%rdx) : block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; 0.00 : 798373: 48 89 42 10 mov %rax,0x10(%rdx) : block->endptr = ((char *) block) + blksize; 0.00 : 798377: 48 8d 04 1a lea (%rdx,%rbx,1),%rax 0.00 : 79837b: 48 89 42 18 mov %rax,0x18(%rdx) : * cycling even for contexts created with minContextSize = 0; that way : * we don't have to force space to be allocated in contexts that might : * never need any space. Don't mark an oversize block as a keeper, : * however. : */ : if (set->keeper == NULL && blksize == set->initBlockSize) 0.00 : 79837f: 49 83 bc 24 b8 00 00 cmpq $0x0,0xb8(%r12) 0.00 : 798386: 00 00 0.00 : 798388: 0f 84 99 00 00 00 je 798427 : : /* Mark unallocated space NOACCESS. */ : VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, : blksize - ALLOC_BLOCKHDRSZ); : : block->next = set->blocks; 0.00 : 79838e: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 798393: 48 89 42 08 mov %rax,0x8(%rdx) : set->blocks = block; 0.00 : 798397: 49 89 54 24 38 mov %rdx,0x38(%r12) 0.00 : 79839c: 49 8d 47 10 lea 0x10(%r15),%rax 0.00 : 7983a0: 48 8b 7a 10 mov 0x10(%rdx),%rdi : chunk = (AllocChunk) (block->freeptr); : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (chunk_size + ALLOC_CHUNKHDRSZ); 0.40 : 7983a4: 48 8d 04 07 lea (%rdi,%rax,1),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:908 2.82 : 7983a8: 49 89 41 10 mov %rax,0x10(%r9) : Assert(block->freeptr <= block->endptr); : : chunk->aset = (void *) set; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:911 0.84 : 7983ac: 4c 89 27 mov %r12,(%rdi) : /* fill the allocated space with junk */ : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:927 4.47 : 7983af: 48 8d 47 10 lea 0x10(%rdi),%rax : : block->freeptr += (chunk_size + ALLOC_CHUNKHDRSZ); : Assert(block->freeptr <= block->endptr); : : chunk->aset = (void *) set; : chunk->size = chunk_size; 0.13 : 7983b3: 4c 89 7f 08 mov %r15,0x8(%rdi) : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 4.00 : 7983b7: e9 a9 fd ff ff jmpq 798165 0.00 : 7983bc: 0f 1f 40 00 nopl 0x0(%rax) : block->next = set->blocks->next; : set->blocks->next = block; : } : else : { : block->next = NULL; 0.00 : 7983c0: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 7983c7: 00 : set->blocks = block; 0.00 : 7983c8: 49 89 54 24 38 mov %rdx,0x38(%r12) 0.00 : 7983cd: e9 2b fe ff ff jmpq 7981fd 0.00 : 7983d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.00 : 7983d8: 48 81 fb 00 00 10 00 cmp $0x100000,%rbx 0.00 : 7983df: 0f 86 7b ff ff ff jbe 798360 : { : blksize >>= 1; 0.00 : 7983e5: 48 d1 eb shr %rbx : if (blksize < required_size) 0.00 : 7983e8: 49 39 dd cmp %rbx,%r13 0.00 : 7983eb: 0f 86 5f ff ff ff jbe 798350 0.00 : 7983f1: e9 6a ff ff ff jmpq 798360 : chunk_size = MAXALIGN(size); : blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; : block = (AllocBlock) malloc(blksize); : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); 0.00 : 7983f6: 48 8b 3d 6b 24 42 00 mov 0x42246b(%rip),%rdi # bba868 0.00 : 7983fd: e8 3e 07 00 00 callq 798b40 : ereport(ERROR, 0.00 : 798402: 45 31 c0 xor %r8d,%r8d 0.00 : 798405: b9 80 1f 8e 00 mov $0x8e1f80,%ecx 0.00 : 79840a: ba a7 02 00 00 mov $0x2a7,%edx : } : : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); : ereport(ERROR, 0.00 : 79840f: be 6d 1d 8e 00 mov $0x8e1d6d,%esi 0.00 : 798414: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798419: e8 a2 26 fe ff callq 77aac0 0.00 : 79841e: 84 c0 test %al,%al 0.00 : 798420: 75 20 jne 798442 0.00 : 798422: e8 a9 10 cd ff callq 4694d0 : * cycling even for contexts created with minContextSize = 0; that way : * we don't have to force space to be allocated in contexts that might : * never need any space. Don't mark an oversize block as a keeper, : * however. : */ : if (set->keeper == NULL && blksize == set->initBlockSize) 0.00 : 798427: 49 39 9c 24 98 00 00 cmp %rbx,0x98(%r12) 0.00 : 79842e: 00 0.00 : 79842f: 0f 85 59 ff ff ff jne 79838e : set->keeper = block; 0.00 : 798435: 49 89 94 24 b8 00 00 mov %rdx,0xb8(%r12) 0.00 : 79843c: 00 0.00 : 79843d: e9 4c ff ff ff jmpq 79838e : } : : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); : ereport(ERROR, 0.00 : 798442: 4c 89 f6 mov %r14,%rsi 0.00 : 798445: bf a8 1d 8e 00 mov $0x8e1da8,%edi 0.00 : 79844a: 31 c0 xor %eax,%eax 0.00 : 79844c: e8 df 40 fe ff callq 77c530 0.00 : 798451: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 798456: 41 89 c4 mov %eax,%r12d 0.00 : 798459: 31 c0 xor %eax,%eax 0.00 : 79845b: e8 40 44 fe ff callq 77c8a0 0.00 : 798460: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 798465: 89 c3 mov %eax,%ebx 0.00 : 798467: e8 e4 48 fe ff callq 77cd50 0.00 : 79846c: 44 89 e2 mov %r12d,%edx 0.00 : 79846f: 89 c7 mov %eax,%edi 0.00 : 798471: 89 de mov %ebx,%esi 0.00 : 798473: 31 c0 xor %eax,%eax 0.00 : 798475: e8 66 21 fe ff callq 77a5e0 0.00 : 79847a: eb a6 jmp 798422 : block = (AllocBlock) malloc(blksize); : } : : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); 0.00 : 79847c: 48 8b 3d e5 23 42 00 mov 0x4223e5(%rip),%rdi # bba868 0.00 : 798483: e8 b8 06 00 00 callq 798b40 : ereport(ERROR, 0.00 : 798488: 45 31 c0 xor %r8d,%r8d 0.00 : 79848b: b9 80 1f 8e 00 mov $0x8e1f80,%ecx 0.00 : 798490: ba 69 03 00 00 mov $0x369,%edx 0.00 : 798495: e9 75 ff ff ff jmpq 79840f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1327 9.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1321 8.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 8.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1327 7.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 6.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1331 6.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 6.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1331 4.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 3.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1324 3.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 2.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 1.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 1.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1322 1.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1319 1.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1324 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1320 1.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077e030 : : return result; : } : : Datum : FunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 4.71 : 77e030: 55 push %rbp 1.03 : 77e031: 48 89 f8 mov %rdi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 6.24 : 77e034: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 3.62 : 77e037: 48 81 ec b0 03 00 00 sub $0x3b0,%rsp : * utils/sort/tuplesort.c! : */ : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 0.60 : 77e03e: 48 89 bd 50 fc ff ff mov %rdi,-0x3b0(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 8.93 : 77e045: 48 c7 85 58 fc ff ff movq $0x0,-0x3a8(%rbp) 0.00 : 77e04c: 00 00 00 00 : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.argnull[0] = false; : fcinfo.argnull[1] = false; : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1324 3.90 : 77e050: 48 8d bd 50 fc ff ff lea -0x3b0(%rbp),%rdi : * utils/sort/tuplesort.c! : */ : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 0.89 : 77e057: 48 c7 85 60 fc ff ff movq $0x0,-0x3a0(%rbp) 0.00 : 77e05e: 00 00 00 00 1.91 : 77e062: 89 b5 68 fc ff ff mov %esi,-0x398(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 7.16 : 77e068: c6 85 6c fc ff ff 00 movb $0x0,-0x394(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 2.41 : 77e06f: 66 c7 85 6e fc ff ff movw $0x2,-0x392(%rbp) 0.00 : 77e076: 02 00 : : fcinfo.arg[0] = arg1; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1319 1.77 : 77e078: 48 89 95 70 fc ff ff mov %rdx,-0x390(%rbp) : fcinfo.arg[1] = arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1320 1.56 : 77e07f: 48 89 8d 78 fc ff ff mov %rcx,-0x388(%rbp) : fcinfo.argnull[0] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1321 9.75 : 77e086: c6 45 90 00 movb $0x0,-0x70(%rbp) : fcinfo.argnull[1] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1322 1.91 : 77e08a: c6 45 91 00 movb $0x0,-0x6f(%rbp) : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1324 1.77 : 77e08e: ff 10 callq *(%rax) : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1327 8.79 : 77e090: 80 bd 6c fc ff ff 00 cmpb $0x0,-0x394(%rbp) 20.17 : 77e097: 75 02 jne 77e09b : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1331 6.06 : 77e099: c9 leaveq 6.81 : 77e09a: c3 retq : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 77e09b: ba 40 52 8d 00 mov $0x8d5240,%edx 0.00 : 77e0a0: be 30 05 00 00 mov $0x530,%esi 0.00 : 77e0a5: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77e0aa: e8 71 d3 ff ff callq 77b420 0.00 : 77e0af: 48 8b 85 50 fc ff ff mov -0x3b0(%rbp),%rax 0.00 : 77e0b6: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 77e0bb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77e0c0: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77e0c3: 31 c0 xor %eax,%eax 0.00 : 77e0c5: e8 66 d1 ff ff callq 77b230 0.00 : 77e0ca: e8 01 b4 ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 42.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2190 19.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 18.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 7.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 6.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2190 5.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077d9b0 : : : #ifdef USE_FLOAT4_BYVAL : : float4 : DatumGetFloat4(Datum X) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 19.12 : 77d9b0: 55 push %rbp 18.32 : 77d9b1: 48 89 e5 mov %rsp,%rbp 7.75 : 77d9b4: 89 7d fc mov %edi,-0x4(%rbp) 5.73 : 77d9b7: f3 0f 10 45 fc movss -0x4(%rbp),%xmm0 : float4 retval; : } myunion; : : myunion.value = GET_4_BYTES(X); : return myunion.retval; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2190 49.08 : 77d9bc: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2509 17.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2509 9.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2515 5.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2514 5.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2509 4.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2511 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2515 3.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2518 2.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2510 2.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2515 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2514 2.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2515 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2514 2.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2518 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2510 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2511 1.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2511 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3ee0 : : PG_RETURN_FLOAT8(result); : } : : Datum : float48mul(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2509 17.90 : 6d3ee0: 55 push %rbp 31.24 : 6d3ee1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d3ee4: 53 push %rbx 5.15 : 6d3ee5: 48 89 fb mov %rdi,%rbx 0.00 : 6d3ee8: 48 83 ec 28 sub $0x28,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d3eec: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2510 2.85 : 6d3ef0: e8 bb 9a 0a 00 callq 77d9b0 2.08 : 6d3ef5: f3 0f 11 45 e4 movss %xmm0,-0x1c(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2511 4.16 : 6d3efa: 48 8b 7b 28 mov 0x28(%rbx),%rdi 1.22 : 6d3efe: e8 cd 9a 0a 00 callq 77d9d0 : float8 result; : : result = arg1 * arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2514 2.53 : 6d3f03: f3 0f 10 4d e4 movss -0x1c(%rbp),%xmm1 : : Datum : float48mul(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2511 1.63 : 6d3f08: f2 0f 11 45 e8 movsd %xmm0,-0x18(%rbp) : float8 result; : : result = arg1 * arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2514 5.33 : 6d3f0d: 0f 5a c9 cvtps2pd %xmm1,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2514 2.17 : 6d3f10: f2 0f 59 c8 mulsd %xmm0,%xmm1 : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2515 9.95 : 6d3f14: 66 0f 28 c1 movapd %xmm1,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2515 3.25 : 6d3f18: f2 0f 11 4d d0 movsd %xmm1,-0x30(%rbp) 0.00 : 6d3f1d: e8 ce 5b d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3f22: 85 c0 test %eax,%eax 2.49 : 6d3f24: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 0.00 : 6d3f29: 75 45 jne 6d3f70 2.62 : 6d3f2b: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 6d3f2f: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 6d3f33: 75 29 jne 6d3f5e 0.00 : 6d3f35: 7a 27 jp 6d3f5e 0.00 : 6d3f37: f3 0f 10 55 e4 movss -0x1c(%rbp),%xmm2 0.00 : 6d3f3c: 0f 2e 15 9d e3 0d 00 ucomiss 0xde39d(%rip),%xmm2 # 7b22e0 <__func__.14992+0xd7> 0.00 : 6d3f43: 7a 02 jp 6d3f47 0.00 : 6d3f45: 74 17 je 6d3f5e 0.00 : 6d3f47: f2 0f 10 55 e8 movsd -0x18(%rbp),%xmm2 0.00 : 6d3f4c: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 6d3f50: 0f 8a 85 00 00 00 jp 6d3fdb 0.00 : 6d3f56: 66 90 xchg %ax,%ax 0.00 : 6d3f58: 0f 85 7d 00 00 00 jne 6d3fdb : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2518 3.21 : 6d3f5e: 48 83 c4 28 add $0x28,%rsp : float8 result; : : result = arg1 * arg2; : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); 0.09 : 6d3f62: 66 0f 28 c1 movapd %xmm1,%xmm0 : } 0.00 : 6d3f66: 5b pop %rbx 2.12 : 6d3f67: c9 leaveq : float8 result; : : result = arg1 * arg2; : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); 0.00 : 6d3f68: e9 53 9a 0a 00 jmpq 77d9c0 0.00 : 6d3f6d: 0f 1f 00 nopl (%rax) : float4 arg1 = PG_GETARG_FLOAT4(0); : float8 arg2 = PG_GETARG_FLOAT8(1); : float8 result; : : result = arg1 * arg2; : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), 0.00 : 6d3f70: f3 0f 10 45 e4 movss -0x1c(%rbp),%xmm0 0.00 : 6d3f75: e8 b6 57 d9 ff callq 469730 <__isinff@plt> 0.00 : 6d3f7a: 85 c0 test %eax,%eax 0.00 : 6d3f7c: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 0.00 : 6d3f81: 75 a8 jne 6d3f2b 0.00 : 6d3f83: f2 0f 10 45 e8 movsd -0x18(%rbp),%xmm0 0.00 : 6d3f88: e8 63 5b d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3f8d: 85 c0 test %eax,%eax 0.00 : 6d3f8f: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 0.00 : 6d3f94: 75 95 jne 6d3f2b 0.00 : 6d3f96: 45 31 c0 xor %r8d,%r8d 0.00 : 6d3f99: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d3f9e: b9 f9 b8 8b 00 mov $0x8bb8f9,%ecx 0.00 : 6d3fa3: ba d4 09 00 00 mov $0x9d4,%edx 0.00 : 6d3fa8: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d3fad: e8 0e 6b 0a 00 callq 77aac0 0.00 : 6d3fb2: 84 c0 test %al,%al 0.00 : 6d3fb4: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d3fb9: 74 40 je 6d3ffb 0.00 : 6d3fbb: 31 c0 xor %eax,%eax 0.00 : 6d3fbd: e8 de 88 0a 00 callq 77c8a0 0.00 : 6d3fc2: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d3fc7: 89 c3 mov %eax,%ebx 0.00 : 6d3fc9: e8 82 8d 0a 00 callq 77cd50 0.00 : 6d3fce: 89 de mov %ebx,%esi 0.00 : 6d3fd0: 89 c7 mov %eax,%edi 0.00 : 6d3fd2: 31 c0 xor %eax,%eax 0.00 : 6d3fd4: e8 07 66 0a 00 callq 77a5e0 0.00 : 6d3fd9: eb 20 jmp 6d3ffb 0.00 : 6d3fdb: 45 31 c0 xor %r8d,%r8d 0.00 : 6d3fde: b9 f9 b8 8b 00 mov $0x8bb8f9,%ecx 0.00 : 6d3fe3: ba d4 09 00 00 mov $0x9d4,%edx 0.00 : 6d3fe8: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d3fed: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d3ff2: e8 c9 6a 0a 00 callq 77aac0 0.00 : 6d3ff7: 84 c0 test %al,%al 0.00 : 6d3ff9: 75 05 jne 6d4000 0.00 : 6d3ffb: e8 d0 54 d9 ff callq 4694d0 0.00 : 6d4000: bf 4c b4 8b 00 mov $0x8bb44c,%edi 0.00 : 6d4005: eb b4 jmp 6d3fbb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 10.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:77 10.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 10.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 9.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 9.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:76 7.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 5.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:61 4.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:66 4.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 3.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:66 2.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 2.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 1.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 1.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:77 1.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:58 1.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:66 0.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:77 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:77 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c5930 : : * This is a workhorse for ExecSeqScan : * ---------------------------------------------------------------- : */ : static TupleTableSlot * : SeqNext(SeqScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 11.73 : 5c5930: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 4.10 : 5c5931: 48 89 e5 mov %rsp,%rbp 1.94 : 5c5934: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:48 10.43 : 5c5938: 4c 89 65 f8 mov %r12,-0x8(%rbp) 7.37 : 5c593c: 48 83 ec 10 sub $0x10,%rsp : slot = node->ss_ScanTupleSlot; : : /* : * get the next tuple from the table : */ : tuple = heap_getnext(scandesc, direction); 0.00 : 5c5940: 48 8b 47 10 mov 0x10(%rdi),%rax : TupleTableSlot *slot; : : /* : * get information from the estate and scan state : */ : scandesc = node->ss_currentScanDesc; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:58 1.23 : 5c5944: 4c 8b a7 80 00 00 00 mov 0x80(%rdi),%r12 : estate = node->ps.state; : direction = estate->es_direction; : slot = node->ss_ScanTupleSlot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:61 5.40 : 5c594b: 48 8b 9f 88 00 00 00 mov 0x88(%rdi),%rbx : : /* : * get the next tuple from the table : */ : tuple = heap_getnext(scandesc, direction); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:66 4.84 : 5c5952: 8b 70 04 mov 0x4(%rax),%esi 3.24 : 5c5955: 4c 89 e7 mov %r12,%rdi 1.04 : 5c5958: e8 33 15 ed ff callq 496e90 : * tuples returned by heap_getnext() are pointers onto disk pages and were : * not created with palloc() and so should not be pfree()'d. Note also : * that ExecStoreTuple will increment the refcount of the buffer; the : * refcount will not be dropped until the tuple table slot is cleared. : */ : if (tuple) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:76 9.65 : 5c595d: 48 85 c0 test %rax,%rax 0.00 : 5c5960: 74 26 je 5c5988 : ExecStoreTuple(tuple, /* tuple to store */ /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:77 1.64 : 5c5962: 41 8b 54 24 64 mov 0x64(%r12),%edx 0.22 : 5c5967: 31 c9 xor %ecx,%ecx 0.97 : 5c5969: 48 89 de mov %rbx,%rsi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:77 10.76 : 5c596c: 48 89 c7 mov %rax,%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:77 0.60 : 5c596f: e8 0c eb fe ff callq 5b4480 : false); /* don't pfree this pointer */ : else : ExecClearTuple(slot); : : return slot; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 2.31 : 5c5974: 48 89 d8 mov %rbx,%rax 0.15 : 5c5977: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 10.39 : 5c597c: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 2.05 : 5c5980: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:86 9.94 : 5c5981: c3 retq 0.00 : 5c5982: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : slot, /* slot to store in */ : scandesc->rs_cbuf, /* buffer associated with this : * tuple */ : false); /* don't pfree this pointer */ : else : ExecClearTuple(slot); 0.00 : 5c5988: 48 89 df mov %rbx,%rdi 0.00 : 5c598b: e8 80 e7 fe ff callq 5b4110 0.00 : 5c5990: eb e2 jmp 5c5974 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:181 8.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:175 5.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:175 4.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:236 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:81 2.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:216 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:226 2.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:226 2.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:236 2.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:236 1.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:81 1.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:81 1.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:181 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:81 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:96 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:81 0.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:197 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:81 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:96 0.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:216 0.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:216 0.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:177 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:94 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:216 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:108 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:108 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:236 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006fbc00 : : #endif : : static int : MatchText(char *t, int tlen, char *p, int plen, : pg_locale_t locale, bool locale_is_c) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:81 1.56 : 6fbc00: 55 push %rbp 1.92 : 6fbc01: 48 89 e5 mov %rsp,%rbp 0.09 : 6fbc04: 41 57 push %r15 1.69 : 6fbc06: 41 56 push %r14 3.97 : 6fbc08: 41 55 push %r13 0.04 : 6fbc0a: 41 54 push %r12 0.85 : 6fbc0c: 53 push %rbx 0.18 : 6fbc0d: 48 83 ec 18 sub $0x18,%rsp : /* Fast path for match-everything pattern */ : if (plen == 1 && *p == '%') 0.27 : 6fbc11: 83 f9 01 cmp $0x1,%ecx : #endif : : static int : MatchText(char *t, int tlen, char *p, int plen, : pg_locale_t locale, bool locale_is_c) : { 0.98 : 6fbc14: 4c 89 45 d0 mov %r8,-0x30(%rbp) : /* Fast path for match-everything pattern */ : if (plen == 1 && *p == '%') 0.04 : 6fbc18: 0f 84 82 00 00 00 je 6fbca0 0.18 : 6fbc1e: 66 90 xchg %ax,%ax : * on character boundaries. And we know that no backend-legal : * encoding allows ASCII characters such as '%' to appear as non-first : * bytes of characters, so we won't mistakenly detect a new wildcard. : */ : NextByte(t, tlen); : NextByte(p, plen); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:216 0.67 : 6fbc20: 48 83 c7 01 add $0x1,%rdi : * occasions it is safe to advance by byte, as the text and pattern will : * be in lockstep. This allows us to perform all comparisons between the : * text and pattern on a byte by byte basis, even for multi-byte : * encodings. : */ : while (tlen > 0 && plen > 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:94 0.62 : 6fbc24: 85 f6 test %esi,%esi : * on character boundaries. And we know that no backend-legal : * encoding allows ASCII characters such as '%' to appear as non-first : * bytes of characters, so we won't mistakenly detect a new wildcard. : */ : NextByte(t, tlen); : NextByte(p, plen); 0.13 : 6fbc26: 89 f3 mov %esi,%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:216 0.62 : 6fbc28: 4c 8d 67 ff lea -0x1(%rdi),%r12 : * occasions it is safe to advance by byte, as the text and pattern will : * be in lockstep. This allows us to perform all comparisons between the : * text and pattern on a byte by byte basis, even for multi-byte : * encodings. : */ : while (tlen > 0 && plen > 0) 0.49 : 6fbc2c: 0f 9f c0 setg %al 0.40 : 6fbc2f: 7f 1f jg 6fbc50 : */ : NextByte(t, tlen); : NextByte(p, plen); : } : : if (tlen > 0) 0.09 : 6fbc31: 84 c0 test %al,%al 0.00 : 6fbc33: 0f 84 e3 00 00 00 je 6fbd1c : : /* : * End of text, but perhaps not of pattern. Match iff the remaining : * pattern can match a zero-length string, ie, it's zero or more %'s. : */ : while (plen > 0 && *p == '%') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:226 2.67 : 6fbc39: 31 c0 xor %eax,%eax : /* : * End of text with no match, so no point in trying later places to start : * matching this pattern. : */ : return LIKE_ABORT; : } /* MatchText() */ 0.18 : 6fbc3b: 48 83 c4 18 add $0x18,%rsp 0.27 : 6fbc3f: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:236 2.14 : 6fbc40: 41 5c pop %r12 0.49 : 6fbc42: 41 5d pop %r13 0.40 : 6fbc44: 41 5e pop %r14 0.04 : 6fbc46: 41 5f pop %r15 0.53 : 6fbc48: c9 leaveq 0.18 : 6fbc49: c3 retq 0.00 : 6fbc4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * occasions it is safe to advance by byte, as the text and pattern will : * be in lockstep. This allows us to perform all comparisons between the : * text and pattern on a byte by byte basis, even for multi-byte : * encodings. : */ : while (tlen > 0 && plen > 0) 0.18 : 6fbc50: 85 c9 test %ecx,%ecx 0.00 : 6fbc52: 7e dd jle 6fbc31 : { : if (*p == '\\') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:96 1.02 : 6fbc54: 0f b6 02 movzbl (%rdx),%eax 0.76 : 6fbc57: 3c 5c cmp $0x5c,%al 0.00 : 6fbc59: 74 25 je 6fbc80 : (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE), : errmsg("LIKE pattern must not end with escape character"))); : if (GETCHAR(*p) != GETCHAR(*t)) : return LIKE_FALSE; : } : else if (*p == '%') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:108 0.62 : 6fbc5b: 3c 25 cmp $0x25,%al 0.22 : 6fbc5d: 0f 1f 00 nopl (%rax) 0.62 : 6fbc60: 74 5e je 6fbcc0 : * End of text with no match, so no point in trying later places : * to start matching this pattern. : */ : return LIKE_ABORT; : } : else if (*p == '_') 0.22 : 6fbc62: 3c 5f cmp $0x5f,%al 0.00 : 6fbc64: 74 05 je 6fbc6b : /* _ matches any single character, and we know there is one */ : NextChar(t, tlen); : NextByte(p, plen); : continue; : } : else if (GETCHAR(*p) != GETCHAR(*t)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:197 0.94 : 6fbc66: 3a 47 ff cmp -0x1(%rdi),%al 0.00 : 6fbc69: 75 ce jne 6fbc39 : * on character boundaries. And we know that no backend-legal : * encoding allows ASCII characters such as '%' to appear as non-first : * bytes of characters, so we won't mistakenly detect a new wildcard. : */ : NextByte(t, tlen); : NextByte(p, plen); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:216 2.99 : 6fbc6b: 48 83 c2 01 add $0x1,%rdx 0.67 : 6fbc6f: 83 e9 01 sub $0x1,%ecx 0.00 : 6fbc72: 83 ee 01 sub $0x1,%esi 0.40 : 6fbc75: eb a9 jmp 6fbc20 0.00 : 6fbc77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6fbc7e: 00 00 : while (tlen > 0 && plen > 0) : { : if (*p == '\\') : { : /* Next pattern byte must match literally, whatever it is */ : NextByte(p, plen); 0.00 : 6fbc80: 83 e9 01 sub $0x1,%ecx : /* ... and there had better be one, per SQL standard */ : if (plen <= 0) 0.00 : 6fbc83: 85 c9 test %ecx,%ecx 0.00 : 6fbc85: 0f 8e 1f 01 00 00 jle 6fbdaa : while (tlen > 0 && plen > 0) : { : if (*p == '\\') : { : /* Next pattern byte must match literally, whatever it is */ : NextByte(p, plen); 0.00 : 6fbc8b: 48 83 c2 01 add $0x1,%rdx : /* ... and there had better be one, per SQL standard */ : if (plen <= 0) : ereport(ERROR, : (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE), : errmsg("LIKE pattern must not end with escape character"))); : if (GETCHAR(*p) != GETCHAR(*t)) 0.00 : 6fbc8f: 0f b6 02 movzbl (%rdx),%eax 0.00 : 6fbc92: 3a 47 ff cmp -0x1(%rdi),%al 0.00 : 6fbc95: 74 d4 je 6fbc6b 0.00 : 6fbc97: eb a0 jmp 6fbc39 0.00 : 6fbc99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static int : MatchText(char *t, int tlen, char *p, int plen, : pg_locale_t locale, bool locale_is_c) : { : /* Fast path for match-everything pattern */ : if (plen == 1 && *p == '%') 0.00 : 6fbca0: 80 3a 25 cmpb $0x25,(%rdx) 0.00 : 6fbca3: 0f 85 77 ff ff ff jne 6fbc20 : /* : * End of text with no match, so no point in trying later places to start : * matching this pattern. : */ : return LIKE_ABORT; : } /* MatchText() */ 0.09 : 6fbca9: 48 83 c4 18 add $0x18,%rsp : : /* : * End of text, but perhaps not of pattern. Match iff the remaining : * pattern can match a zero-length string, ie, it's zero or more %'s. : */ : while (plen > 0 && *p == '%') 0.00 : 6fbcad: b8 01 00 00 00 mov $0x1,%eax : /* : * End of text with no match, so no point in trying later places to start : * matching this pattern. : */ : return LIKE_ABORT; : } /* MatchText() */ 0.00 : 6fbcb2: 5b pop %rbx 0.13 : 6fbcb3: 41 5c pop %r12 0.00 : 6fbcb5: 41 5d pop %r13 0.00 : 6fbcb7: 41 5e pop %r14 0.00 : 6fbcb9: 41 5f pop %r15 0.00 : 6fbcbb: c9 leaveq 0.00 : 6fbcbc: c3 retq 0.00 : 6fbcbd: 0f 1f 00 nopl (%rax) : * fragment that begins with a literal character-to-match, thereby : * not recursing more than we have to. : */ : NextByte(p, plen); : : while (plen > 0) 0.13 : 6fbcc0: 8d 41 ff lea -0x1(%rcx),%eax 0.13 : 6fbcc3: 85 c0 test %eax,%eax 0.00 : 6fbcc5: 7e e2 jle 6fbca9 0.18 : 6fbcc7: 8d 41 fe lea -0x2(%rcx),%eax 0.09 : 6fbcca: 48 83 c2 02 add $0x2,%rdx 0.04 : 6fbcce: 66 90 xchg %ax,%ax : { : if (*p == '%') 0.04 : 6fbcd0: 44 0f b6 6a ff movzbl -0x1(%rdx),%r13d : * fragment that begins with a literal character-to-match, thereby : * not recursing more than we have to. : */ : NextByte(p, plen); : : while (plen > 0) 0.36 : 6fbcd5: 4c 8d 7a ff lea -0x1(%rdx),%r15 0.13 : 6fbcd9: 44 8d 70 01 lea 0x1(%rax),%r14d : { : if (*p == '%') 0.09 : 6fbcdd: 89 c1 mov %eax,%ecx 0.27 : 6fbcdf: 41 80 fd 25 cmp $0x25,%r13b 0.00 : 6fbce3: 74 13 je 6fbcf8 : NextByte(p, plen); : else if (*p == '_') 0.13 : 6fbce5: 41 80 fd 5f cmp $0x5f,%r13b 0.00 : 6fbce9: 75 5c jne 6fbd47 : { : /* If not enough text left to match the pattern, ABORT */ : if (tlen <= 0) 0.00 : 6fbceb: 85 db test %ebx,%ebx 0.00 : 6fbced: 7e 19 jle 6fbd08 : return LIKE_ABORT; : NextChar(t, tlen); 0.00 : 6fbcef: 49 83 c4 01 add $0x1,%r12 0.00 : 6fbcf3: 83 eb 01 sub $0x1,%ebx 0.00 : 6fbcf6: 89 c1 mov %eax,%ecx 0.00 : 6fbcf8: 83 e8 01 sub $0x1,%eax 0.00 : 6fbcfb: 48 83 c2 01 add $0x1,%rdx : * fragment that begins with a literal character-to-match, thereby : * not recursing more than we have to. : */ : NextByte(p, plen); : : while (plen > 0) 0.00 : 6fbcff: 85 c9 test %ecx,%ecx 0.00 : 6fbd01: 7f cd jg 6fbcd0 0.00 : 6fbd03: eb a4 jmp 6fbca9 0.00 : 6fbd05: 0f 1f 00 nopl (%rax) : /* : * End of text with no match, so no point in trying later places to start : * matching this pattern. : */ : return LIKE_ABORT; : } /* MatchText() */ /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:236 4.41 : 6fbd08: 48 83 c4 18 add $0x18,%rsp : : /* : * End of text, but perhaps not of pattern. Match iff the remaining : * pattern can match a zero-length string, ie, it's zero or more %'s. : */ : while (plen > 0 && *p == '%') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:226 2.94 : 6fbd0c: b8 ff ff ff ff mov $0xffffffff,%eax : /* : * End of text with no match, so no point in trying later places to start : * matching this pattern. : */ : return LIKE_ABORT; : } /* MatchText() */ 0.00 : 6fbd11: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:236 2.09 : 6fbd12: 41 5c pop %r12 0.04 : 6fbd14: 41 5d pop %r13 0.49 : 6fbd16: 41 5e pop %r14 0.00 : 6fbd18: 41 5f pop %r15 0.49 : 6fbd1a: c9 leaveq 0.04 : 6fbd1b: c3 retq : : /* : * End of text, but perhaps not of pattern. Match iff the remaining : * pattern can match a zero-length string, ie, it's zero or more %'s. : */ : while (plen > 0 && *p == '%') 0.04 : 6fbd1c: 85 c9 test %ecx,%ecx 0.00 : 6fbd1e: 7e 89 jle 6fbca9 0.00 : 6fbd20: 80 3a 25 cmpb $0x25,(%rdx) 0.13 : 6fbd23: 74 14 je 6fbd39 0.04 : 6fbd25: 0f 1f 00 nopl (%rax) 0.00 : 6fbd28: eb de jmp 6fbd08 0.00 : 6fbd2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : NextByte(p, plen); 0.00 : 6fbd30: 48 83 c2 01 add $0x1,%rdx : : /* : * End of text, but perhaps not of pattern. Match iff the remaining : * pattern can match a zero-length string, ie, it's zero or more %'s. : */ : while (plen > 0 && *p == '%') 0.00 : 6fbd34: 80 3a 25 cmpb $0x25,(%rdx) 0.00 : 6fbd37: 75 cf jne 6fbd08 : NextByte(p, plen); 0.00 : 6fbd39: 83 e9 01 sub $0x1,%ecx : : /* : * End of text, but perhaps not of pattern. Match iff the remaining : * pattern can match a zero-length string, ie, it's zero or more %'s. : */ : while (plen > 0 && *p == '%') 0.00 : 6fbd3c: 85 c9 test %ecx,%ecx 0.00 : 6fbd3e: 66 90 xchg %ax,%ax 0.00 : 6fbd40: 7f ee jg 6fbd30 0.00 : 6fbd42: e9 62 ff ff ff jmpq 6fbca9 : * the first pattern byte to each text byte to avoid recursing : * more than we have to. This fact also guarantees that we don't : * have to consider a match to the zero-length substring at the : * end of the text. : */ : if (*p == '\\') 0.22 : 6fbd47: 41 80 fd 5c cmp $0x5c,%r13b 0.04 : 6fbd4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.09 : 6fbd50: 75 11 jne 6fbd63 : { : if (plen < 2) 0.00 : 6fbd52: 41 83 fe 01 cmp $0x1,%r14d 0.00 : 6fbd56: 66 90 xchg %ax,%ax 0.00 : 6fbd58: 0f 84 96 00 00 00 je 6fbdf4 : ereport(ERROR, : (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE), : errmsg("LIKE pattern must not end with escape character"))); : firstpat = GETCHAR(p[1]); 0.00 : 6fbd5e: 45 0f b6 6f 01 movzbl 0x1(%r15),%r13d : } : else : firstpat = GETCHAR(*p); : : while (tlen > 0) 0.31 : 6fbd63: 85 db test %ebx,%ebx 0.00 : 6fbd65: 7e a1 jle 6fbd08 : { : if (GETCHAR(*t) == firstpat) : { : int matched = MatchText(t, tlen, p, plen, : locale, locale_is_c); 0.00 : 6fbd67: 45 0f be c9 movsbl %r9b,%r9d 0.00 : 6fbd6b: 44 89 4d cc mov %r9d,-0x34(%rbp) 0.27 : 6fbd6f: eb 12 jmp 6fbd83 0.00 : 6fbd71: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (matched != LIKE_FALSE) : return matched; /* TRUE or ABORT */ : } : : NextChar(t, tlen); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:181 38.73 : 6fbd78: 83 eb 01 sub $0x1,%ebx : firstpat = GETCHAR(p[1]); : } : else : firstpat = GETCHAR(*p); : : while (tlen > 0) 0.22 : 6fbd7b: 85 db test %ebx,%ebx 0.00 : 6fbd7d: 7e 89 jle 6fbd08 : : if (matched != LIKE_FALSE) : return matched; /* TRUE or ABORT */ : } : : NextChar(t, tlen); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:181 1.69 : 6fbd7f: 49 83 c4 01 add $0x1,%r12 : else : firstpat = GETCHAR(*p); : : while (tlen > 0) : { : if (GETCHAR(*t) == firstpat) 0.49 : 6fbd83: 45 3a 2c 24 cmp (%r12),%r13b 0.00 : 6fbd87: 75 ef jne 6fbd78 : { : int matched = MatchText(t, tlen, p, plen, : locale, locale_is_c); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:175 8.11 : 6fbd89: 44 8b 4d cc mov -0x34(%rbp),%r9d 5.66 : 6fbd8d: 4c 8b 45 d0 mov -0x30(%rbp),%r8 0.18 : 6fbd91: 44 89 f1 mov %r14d,%ecx 0.00 : 6fbd94: 4c 89 fa mov %r15,%rdx 0.00 : 6fbd97: 89 de mov %ebx,%esi 0.36 : 6fbd99: 4c 89 e7 mov %r12,%rdi 0.04 : 6fbd9c: e8 5f fe ff ff callq 6fbc00 : : if (matched != LIKE_FALSE) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like_match.c:177 0.67 : 6fbda1: 85 c0 test %eax,%eax 0.00 : 6fbda3: 74 d3 je 6fbd78 0.00 : 6fbda5: e9 91 fe ff ff jmpq 6fbc3b : { : /* Next pattern byte must match literally, whatever it is */ : NextByte(p, plen); : /* ... and there had better be one, per SQL standard */ : if (plen <= 0) : ereport(ERROR, 0.00 : 6fbdaa: 45 31 c0 xor %r8d,%r8d 0.00 : 6fbdad: b9 5f 2f 8c 00 mov $0x8c2f5f,%ecx 0.00 : 6fbdb2: ba 68 00 00 00 mov $0x68,%edx : * end of the text. : */ : if (*p == '\\') : { : if (plen < 2) : ereport(ERROR, 0.00 : 6fbdb7: be 12 2e 8c 00 mov $0x8c2e12,%esi 0.00 : 6fbdbc: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6fbdc1: e8 fa ec 07 00 callq 77aac0 0.00 : 6fbdc6: 84 c0 test %al,%al 0.00 : 6fbdc8: 75 05 jne 6fbdcf 0.00 : 6fbdca: e8 01 d7 d6 ff callq 4694d0 0.00 : 6fbdcf: bf 40 2e 8c 00 mov $0x8c2e40,%edi 0.00 : 6fbdd4: 31 c0 xor %eax,%eax 0.00 : 6fbdd6: e8 c5 0a 08 00 callq 77c8a0 0.00 : 6fbddb: bf 82 00 08 05 mov $0x5080082,%edi 0.00 : 6fbde0: 89 c3 mov %eax,%ebx 0.00 : 6fbde2: e8 69 0f 08 00 callq 77cd50 0.00 : 6fbde7: 89 de mov %ebx,%esi 0.00 : 6fbde9: 89 c7 mov %eax,%edi 0.00 : 6fbdeb: 31 c0 xor %eax,%eax 0.00 : 6fbded: e8 ee e7 07 00 callq 77a5e0 0.00 : 6fbdf2: eb d6 jmp 6fbdca 0.00 : 6fbdf4: 45 31 c0 xor %r8d,%r8d 0.00 : 6fbdf7: b9 5f 2f 8c 00 mov $0x8c2f5f,%ecx 0.00 : 6fbdfc: ba a4 00 00 00 mov $0xa4,%edx 0.00 : 6fbe01: eb b4 jmp 6fbdb7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 10.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 8.10 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 7.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 7.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 7.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 7.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 5.87 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 3.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 2.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 2.31 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 2.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 1.37 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 1.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694660 : : */ : void : CheckForSerializableConflictOut(bool visible, Relation relation, : HeapTuple tuple, Buffer buffer, : Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 14.29 : 694660: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 3.33 : 694661: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 7.52 : 694664: 4c 89 65 f0 mov %r12,-0x10(%rbp) 10.30 : 694668: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 2.31 : 69466c: 49 89 d4 mov %rdx,%r12 1.21 : 69466f: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 7.60 : 694673: 48 83 ec 30 sub $0x30,%rsp : */ : static inline bool : SerializationNeededForRead(Relation relation, Snapshot snapshot) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 7.79 : 694677: 48 8b 15 42 a0 4e 00 mov 0x4ea042(%rip),%rdx # b7e6c0 : */ : void : CheckForSerializableConflictOut(bool visible, Relation relation, : HeapTuple tuple, Buffer buffer, : Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 5.87 : 69467e: 41 89 fd mov %edi,%r13d : */ : static inline bool : SerializationNeededForRead(Relation relation, Snapshot snapshot) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 1.37 : 694681: 48 85 d2 test %rdx,%rdx 0.00 : 694684: 74 13 je 694699 : * This excludes things like CLUSTER and REINDEX. They use the wholesale : * functions TransferPredicateLocksToHeapRelation() and : * CheckTableForSerializableConflictIn() to participate serialization, but : * the scans involved don't need serialization. : */ : if (!IsMVCCSnapshot(snapshot)) 0.00 : 694686: 49 8b 00 mov (%r8),%rax 0.00 : 694689: 48 3d 50 57 7a 00 cmp $0x7a5750,%rax 0.00 : 69468f: 74 1f je 6946b0 0.00 : 694691: 48 3d 60 47 7a 00 cmp $0x7a4760,%rax 0.00 : 694697: 74 17 je 6946b0 : * Flag the conflict. But first, if this conflict creates a dangerous : * structure, ereport an error. : */ : FlagRWConflict(MySerializableXact, sxact); : LWLockRelease(SerializableXactHashLock); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 8.10 : 694699: 48 8b 5d e8 mov -0x18(%rbp),%rbx 7.67 : 69469d: 4c 8b 65 f0 mov -0x10(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 2.08 : 6946a1: 4c 8b 6d f8 mov -0x8(%rbp),%r13 2.86 : 6946a5: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 17.70 : 6946a6: c3 retq 0.00 : 6946a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6946ae: 00 00 : * : * A transaction is flagged as RO_SAFE if all concurrent R/W transactions : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) 0.00 : 6946b0: 8b 52 7c mov 0x7c(%rdx),%edx 0.00 : 6946b3: 84 d2 test %dl,%dl 0.00 : 6946b5: 78 69 js 694720 : * relations are exempt, as are materialized views. : */ : static inline bool : PredicateLockingNeededForRelation(Relation relation) : { : return !(relation->rd_id < FirstBootstrapObjectId || 0.00 : 6946b7: 81 7e 40 0f 27 00 00 cmpl $0x270f,0x40(%rsi) 0.00 : 6946be: 76 d9 jbe 694699 0.00 : 6946c0: 48 8b 46 30 mov 0x30(%rsi),%rax 0.00 : 6946c4: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 0.00 : 6946c8: 74 cf je 694699 0.00 : 6946ca: 80 78 6f 6d cmpb $0x6d,0x6f(%rax) 0.00 : 6946ce: 66 90 xchg %ax,%ax 0.00 : 6946d0: 74 c7 je 694699 : : if (!SerializationNeededForRead(relation, snapshot)) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) 0.00 : 6946d2: 83 e2 08 and $0x8,%edx 0.00 : 6946d5: 0f 85 55 02 00 00 jne 694930 : * transaction, either to create it not visible to us, or to delete it : * while it is visible to us. The "visible" bool indicates whether the : * tuple is visible to us, while HeapTupleSatisfiesVacuum checks what else : * is going on with it. : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); 0.00 : 6946db: 8b 35 77 e0 4d 00 mov 0x4de077(%rip),%esi # b72758 0.00 : 6946e1: 89 ca mov %ecx,%edx 0.00 : 6946e3: 4c 89 e7 mov %r12,%rdi 0.00 : 6946e6: e8 35 04 11 00 callq 7a4b20 : switch (htsvResult) 0.00 : 6946eb: 83 f8 04 cmp $0x4,%eax : * transaction, either to create it not visible to us, or to delete it : * while it is visible to us. The "visible" bool indicates whether the : * tuple is visible to us, while HeapTupleSatisfiesVacuum checks what else : * is going on with it. : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); 0.00 : 6946ee: 89 c3 mov %eax,%ebx : switch (htsvResult) 0.00 : 6946f0: 76 3e jbe 694730 : /* : * The only way to get to this default clause is if a new value is : * added to the enum type without adding it to this switch : * statement. That's a bug, so elog. : */ : elog(ERROR, "unrecognized return value from HeapTupleSatisfiesVacuum: %u", htsvResult); 0.00 : 6946f2: ba e0 da 8a 00 mov $0x8adae0,%edx 0.00 : 6946f7: be 56 0f 00 00 mov $0xf56,%esi 0.00 : 6946fc: bf d3 d1 8a 00 mov $0x8ad1d3,%edi 0.00 : 694701: e8 1a 6d 0e 00 callq 77b420 0.00 : 694706: 89 da mov %ebx,%edx 0.00 : 694708: be a0 d8 8a 00 mov $0x8ad8a0,%esi 0.00 : 69470d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694712: 31 c0 xor %eax,%eax 0.00 : 694714: e8 17 6b 0e 00 callq 77b230 0.00 : 694719: e8 b2 4d dd ff callq 4694d0 0.00 : 69471e: 66 90 xchg %ax,%ax : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) : { : ReleasePredicateLocks(false); 0.00 : 694720: 31 ff xor %edi,%edi 0.00 : 694722: e8 c9 e1 ff ff callq 6928f0 0.00 : 694727: e9 6d ff ff ff jmpq 694699 0.00 : 69472c: 0f 1f 40 00 nopl 0x0(%rax) : * while it is visible to us. The "visible" bool indicates whether the : * tuple is visible to us, while HeapTupleSatisfiesVacuum checks what else : * is going on with it. : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); : switch (htsvResult) 0.00 : 694730: 89 c0 mov %eax,%eax 0.00 : 694732: ff 24 c5 c0 d9 8a 00 jmpq *0x8ad9c0(,%rax,8) 0.00 : 694739: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (visible) : return; : xid = HeapTupleHeaderGetXmin(tuple->t_data); : break; : case HEAPTUPLE_RECENTLY_DEAD: : if (!visible) 0.00 : 694740: 45 84 ed test %r13b,%r13b 0.00 : 694743: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 694748: 0f 84 4b ff ff ff je 694699 : return; : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); 0.00 : 69474e: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 694753: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 694757: 89 d0 mov %edx,%eax 0.00 : 694759: 25 00 18 00 00 and $0x1800,%eax 0.00 : 69475e: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 694763: 0f 84 f7 00 00 00 je 694860 0.00 : 694769: 8b 5f 04 mov 0x4(%rdi),%ebx : : /* : * Find top level xid. Bail out if xid is too early to be a conflict, or : * if it's our own xid. : */ : if (TransactionIdEquals(xid, GetTopTransactionIdIfAny())) 0.00 : 69476c: e8 0f c4 e2 ff callq 4c0b80 0.00 : 694771: 39 d8 cmp %ebx,%eax 0.00 : 694773: 0f 84 20 ff ff ff je 694699 : return; : xid = SubTransGetTopmostTransaction(xid); 0.00 : 694779: 89 df mov %ebx,%edi 0.00 : 69477b: e8 70 21 e3 ff callq 4c68f0 : if (TransactionIdPrecedes(xid, TransactionXmin)) 0.00 : 694780: 8b 35 d2 df 4d 00 mov 0x4ddfd2(%rip),%esi # b72758 0.00 : 694786: 89 c7 mov %eax,%edi : * Find top level xid. Bail out if xid is too early to be a conflict, or : * if it's our own xid. : */ : if (TransactionIdEquals(xid, GetTopTransactionIdIfAny())) : return; : xid = SubTransGetTopmostTransaction(xid); 0.00 : 694788: 89 c3 mov %eax,%ebx : if (TransactionIdPrecedes(xid, TransactionXmin)) 0.00 : 69478a: e8 51 b8 e2 ff callq 4bffe0 0.00 : 69478f: 84 c0 test %al,%al 0.00 : 694791: 0f 85 02 ff ff ff jne 694699 : return; : if (TransactionIdEquals(xid, GetTopTransactionIdIfAny())) 0.00 : 694797: e8 e4 c3 e2 ff callq 4c0b80 0.00 : 69479c: 39 c3 cmp %eax,%ebx 0.00 : 69479e: 66 90 xchg %ax,%ax 0.00 : 6947a0: 0f 84 f3 fe ff ff je 694699 : : /* : * Find sxact or summarized info for the top level xid. : */ : sxidtag.xid = xid; : LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE); 0.00 : 6947a6: 48 8b 3d 53 92 4e 00 mov 0x4e9253(%rip),%rdi # b7da00 0.00 : 6947ad: 31 f6 xor %esi,%esi : return; : : /* : * Find sxact or summarized info for the top level xid. : */ : sxidtag.xid = xid; 0.00 : 6947af: 89 5d d0 mov %ebx,-0x30(%rbp) : LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE); 0.00 : 6947b2: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 6947b9: e8 32 b3 ff ff callq 68faf0 : sxid = (SERIALIZABLEXID *) 0.00 : 6947be: 48 8b 3d 93 9f 4e 00 mov 0x4e9f93(%rip),%rdi # b7e758 0.00 : 6947c5: 48 8d 75 d0 lea -0x30(%rbp),%rsi 0.00 : 6947c9: 31 c9 xor %ecx,%ecx 0.00 : 6947cb: 31 d2 xor %edx,%edx 0.00 : 6947cd: e8 ce fe 0e 00 callq 7846a0 : hash_search(SerializableXidHash, &sxidtag, HASH_FIND, NULL); : if (!sxid) 0.00 : 6947d2: 48 85 c0 test %rax,%rax 0.00 : 6947d5: 0f 84 c5 01 00 00 je 6949a0 : : /* It's not serializable or otherwise not important. */ : LWLockRelease(SerializableXactHashLock); : return; : } : sxact = sxid->myXact; 0.00 : 6947db: 4c 8b 60 08 mov 0x8(%rax),%r12 : Assert(TransactionIdEquals(sxact->topXid, xid)); : if (sxact == MySerializableXact || SxactIsDoomed(sxact)) 0.00 : 6947df: 48 8b 0d da 9e 4e 00 mov 0x4e9eda(%rip),%rcx # b7e6c0 0.00 : 6947e6: 49 39 cc cmp %rcx,%r12 0.00 : 6947e9: 0f 84 b1 00 00 00 je 6948a0 0.00 : 6947ef: 41 8b 54 24 7c mov 0x7c(%r12),%edx 0.00 : 6947f4: f6 c2 08 test $0x8,%dl 0.00 : 6947f7: 0f 85 a3 00 00 00 jne 6948a0 : * We have a conflict out to a transaction which has a conflict out to a : * summarized transaction. That summarized transaction must have : * committed first, and we can't tell when it committed in relation to our : * snapshot acquisition, so something needs to be canceled. : */ : if (SxactHasSummaryConflictOut(sxact)) 0.00 : 6947fd: f6 c6 04 test $0x4,%dh 0.00 : 694800: 0f 84 b2 00 00 00 je 6948b8 : { : if (!SxactIsPrepared(sxact)) 0.00 : 694806: f6 c2 02 test $0x2,%dl 0.00 : 694809: 0f 85 39 03 00 00 jne 694b48 : { : sxact->flags |= SXACT_FLAG_DOOMED; 0.00 : 69480f: 83 ca 08 or $0x8,%edx 0.00 : 694812: 41 89 54 24 7c mov %edx,0x7c(%r12) : LWLockRelease(SerializableXactHashLock); 0.00 : 694817: 48 8b 3d e2 91 4e 00 mov 0x4e91e2(%rip),%rdi # b7da00 0.00 : 69481e: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 694825: e8 76 ab ff ff callq 68f3a0 : * Flag the conflict. But first, if this conflict creates a dangerous : * structure, ereport an error. : */ : FlagRWConflict(MySerializableXact, sxact); : LWLockRelease(SerializableXactHashLock); : } 0.00 : 69482a: e9 6a fe ff ff jmpq 694699 0.00 : 69482f: 90 nop : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); : switch (htsvResult) : { : case HEAPTUPLE_LIVE: : if (visible) 0.00 : 694830: 45 84 ed test %r13b,%r13b 0.00 : 694833: 0f 85 60 fe ff ff jne 694699 : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_INSERT_IN_PROGRESS: : xid = HeapTupleHeaderGetXmin(tuple->t_data); 0.00 : 694839: 49 8b 54 24 10 mov 0x10(%r12),%rdx : /* : * The only way to get to this default clause is if a new value is : * added to the enum type without adding it to this switch : * statement. That's a bug, so elog. : */ : elog(ERROR, "unrecognized return value from HeapTupleSatisfiesVacuum: %u", htsvResult); 0.00 : 69483e: bb 02 00 00 00 mov $0x2,%ebx : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_INSERT_IN_PROGRESS: : xid = HeapTupleHeaderGetXmin(tuple->t_data); 0.00 : 694843: 0f b7 42 14 movzwl 0x14(%rdx),%eax 0.00 : 694847: 25 00 03 00 00 and $0x300,%eax 0.00 : 69484c: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 694851: 0f 84 15 ff ff ff je 69476c 0.00 : 694857: 8b 1a mov (%rdx),%ebx 0.00 : 694859: e9 0e ff ff ff jmpq 69476c 0.00 : 69485e: 66 90 xchg %ax,%ax : if (!visible) : return; : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); 0.00 : 694860: 84 d2 test %dl,%dl 0.00 : 694862: 0f 88 01 ff ff ff js 694769 0.00 : 694868: e8 b3 28 e0 ff callq 497120 0.00 : 69486d: 89 c3 mov %eax,%ebx 0.00 : 69486f: 90 nop 0.00 : 694870: e9 f7 fe ff ff jmpq 69476c : /* This write was already in our snapshot; no conflict. */ : LWLockRelease(SerializableXactHashLock); : return; : } : : if (RWConflictExists(MySerializableXact, sxact)) 0.00 : 694875: 48 8b 3d 44 9e 4e 00 mov 0x4e9e44(%rip),%rdi # b7e6c0 0.00 : 69487c: 4c 89 e6 mov %r12,%rsi 0.00 : 69487f: e8 1c cc ff ff callq 6914a0 0.00 : 694884: 84 c0 test %al,%al 0.00 : 694886: 75 18 jne 6948a0 : : /* : * Flag the conflict. But first, if this conflict creates a dangerous : * structure, ereport an error. : */ : FlagRWConflict(MySerializableXact, sxact); 0.00 : 694888: 48 8b 3d 31 9e 4e 00 mov 0x4e9e31(%rip),%rdi # b7e6c0 0.00 : 69488f: 4c 89 e6 mov %r12,%rsi 0.00 : 694892: e8 79 c5 ff ff callq 690e10 0.00 : 694897: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 69489e: 00 00 : LWLockRelease(SerializableXactHashLock); 0.00 : 6948a0: 48 8b 3d 59 91 4e 00 mov 0x4e9159(%rip),%rdi # b7da00 0.00 : 6948a7: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 6948ae: e8 ed aa ff ff callq 68f3a0 0.00 : 6948b3: e9 e1 fd ff ff jmpq 694699 : /* : * If this is a read-only transaction and the writing transaction has : * committed, and it doesn't have a rw-conflict to a transaction which : * committed before it, no conflict. : */ : if (SxactIsReadOnly(MySerializableXact) 0.00 : 6948b8: f6 41 7c 20 testb $0x20,0x7c(%rcx) 0.00 : 6948bc: 74 10 je 6948ce 0.00 : 6948be: 89 d0 mov %edx,%eax 0.00 : 6948c0: 25 01 04 00 00 and $0x401,%eax 0.00 : 6948c5: 83 e8 01 sub $0x1,%eax 0.00 : 6948c8: 0f 84 e9 01 00 00 je 694ab7 : uint32 i; : : Assert(TransactionIdIsValid(xid)); : Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny())); : : snap = GetTransactionSnapshot(); 0.00 : 6948ce: e8 3d 2d 11 00 callq 7a7610 : : if (TransactionIdPrecedes(xid, snap->xmin)) 0.00 : 6948d3: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 6948d6: 89 df mov %ebx,%edi : uint32 i; : : Assert(TransactionIdIsValid(xid)); : Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny())); : : snap = GetTransactionSnapshot(); 0.00 : 6948d8: 49 89 c5 mov %rax,%r13 : : if (TransactionIdPrecedes(xid, snap->xmin)) 0.00 : 6948db: e8 00 b7 e2 ff callq 4bffe0 0.00 : 6948e0: 84 c0 test %al,%al 0.00 : 6948e2: 75 bc jne 6948a0 : return false; : : if (TransactionIdFollowsOrEquals(xid, snap->xmax)) 0.00 : 6948e4: 41 8b 75 0c mov 0xc(%r13),%esi 0.00 : 6948e8: 89 df mov %ebx,%edi 0.00 : 6948ea: e8 81 b7 e2 ff callq 4c0070 0.00 : 6948ef: 84 c0 test %al,%al 0.00 : 6948f1: 75 82 jne 694875 : return true; : : for (i = 0; i < snap->xcnt; i++) 0.00 : 6948f3: 41 8b 75 18 mov 0x18(%r13),%esi 0.00 : 6948f7: 85 f6 test %esi,%esi 0.00 : 6948f9: 74 a5 je 6948a0 : { : if (xid == snap->xip[i]) 0.00 : 6948fb: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 6948ff: 31 d2 xor %edx,%edx 0.00 : 694901: 3b 18 cmp (%rax),%ebx 0.00 : 694903: 48 89 c1 mov %rax,%rcx 0.00 : 694906: 75 17 jne 69491f 0.00 : 694908: e9 68 ff ff ff jmpq 694875 0.00 : 69490d: 0f 1f 00 nopl (%rax) 0.00 : 694910: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 694913: 48 83 c1 04 add $0x4,%rcx 0.00 : 694917: 39 c3 cmp %eax,%ebx 0.00 : 694919: 0f 84 56 ff ff ff je 694875 : return false; : : if (TransactionIdFollowsOrEquals(xid, snap->xmax)) : return true; : : for (i = 0; i < snap->xcnt; i++) 0.00 : 69491f: 83 c2 01 add $0x1,%edx 0.00 : 694922: 39 f2 cmp %esi,%edx 0.00 : 694924: 72 ea jb 694910 0.00 : 694926: e9 75 ff ff ff jmpq 6948a0 0.00 : 69492b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) : { : ereport(ERROR, 0.00 : 694930: 45 31 c0 xor %r8d,%r8d 0.00 : 694933: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694938: ba 30 0f 00 00 mov $0xf30,%edx 0.00 : 69493d: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694942: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694947: e8 74 61 0e 00 callq 77aac0 0.00 : 69494c: 84 c0 test %al,%al 0.00 : 69494e: 0f 84 c5 fd ff ff je 694719 0.00 : 694954: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694959: 31 c0 xor %eax,%eax 0.00 : 69495b: e8 40 73 0e 00 callq 77bca0 0.00 : 694960: bf 48 d8 8a 00 mov $0x8ad848,%edi 0.00 : 694965: 41 89 c5 mov %eax,%r13d : return; : } : else : { : LWLockRelease(SerializableXactHashLock); : ereport(ERROR, 0.00 : 694968: 31 c0 xor %eax,%eax 0.00 : 69496a: e8 11 7a 0e 00 callq 77c380 0.00 : 69496f: 89 c3 mov %eax,%ebx 0.00 : 694971: bf 48 d3 8a 00 mov $0x8ad348,%edi 0.00 : 694976: 31 c0 xor %eax,%eax 0.00 : 694978: e8 23 7f 0e 00 callq 77c8a0 0.00 : 69497d: bf 04 00 00 01 mov $0x1000004,%edi 0.00 : 694982: 41 89 c4 mov %eax,%r12d 0.00 : 694985: e8 c6 83 0e 00 callq 77cd50 0.00 : 69498a: 44 89 e9 mov %r13d,%ecx 0.00 : 69498d: 89 c7 mov %eax,%edi 0.00 : 69498f: 89 da mov %ebx,%edx 0.00 : 694991: 44 89 e6 mov %r12d,%esi 0.00 : 694994: 31 c0 xor %eax,%eax 0.00 : 694996: e8 45 5c 0e 00 callq 77a5e0 0.00 : 69499b: e9 79 fd ff ff jmpq 694719 : SerCommitSeqNo val; : int slotno; : : Assert(TransactionIdIsValid(xid)); : : LWLockAcquire(OldSerXidLock, LW_SHARED); 0.00 : 6949a0: 48 8b 3d 59 90 4e 00 mov 0x4e9059(%rip),%rdi # b7da00 0.00 : 6949a7: be 01 00 00 00 mov $0x1,%esi 0.00 : 6949ac: 48 81 c7 e0 03 00 00 add $0x3e0,%rdi 0.00 : 6949b3: e8 38 b1 ff ff callq 68faf0 : headXid = oldSerXidControl->headXid; 0.00 : 6949b8: 48 8b 05 79 9d 4e 00 mov 0x4e9d79(%rip),%rax # b7e738 : tailXid = oldSerXidControl->tailXid; : LWLockRelease(OldSerXidLock); 0.00 : 6949bf: 48 8b 3d 3a 90 4e 00 mov 0x4e903a(%rip),%rdi # b7da00 : int slotno; : : Assert(TransactionIdIsValid(xid)); : : LWLockAcquire(OldSerXidLock, LW_SHARED); : headXid = oldSerXidControl->headXid; 0.00 : 6949c6: 44 8b 60 04 mov 0x4(%rax),%r12d : tailXid = oldSerXidControl->tailXid; : LWLockRelease(OldSerXidLock); 0.00 : 6949ca: 48 81 c7 e0 03 00 00 add $0x3e0,%rdi : : Assert(TransactionIdIsValid(xid)); : : LWLockAcquire(OldSerXidLock, LW_SHARED); : headXid = oldSerXidControl->headXid; : tailXid = oldSerXidControl->tailXid; 0.00 : 6949d1: 44 8b 68 08 mov 0x8(%rax),%r13d : LWLockRelease(OldSerXidLock); 0.00 : 6949d5: e8 c6 a9 ff ff callq 68f3a0 : : if (!TransactionIdIsValid(headXid)) 0.00 : 6949da: 45 85 e4 test %r12d,%r12d 0.00 : 6949dd: 0f 84 bd fe ff ff je 6948a0 : return 0; : : Assert(TransactionIdIsValid(tailXid)); : : if (TransactionIdPrecedes(xid, tailXid) 0.00 : 6949e3: 44 89 ee mov %r13d,%esi 0.00 : 6949e6: 89 df mov %ebx,%edi 0.00 : 6949e8: e8 f3 b5 e2 ff callq 4bffe0 0.00 : 6949ed: 84 c0 test %al,%al 0.00 : 6949ef: 0f 85 ab fe ff ff jne 6948a0 0.00 : 6949f5: 44 89 e6 mov %r12d,%esi 0.00 : 6949f8: 89 df mov %ebx,%edi 0.00 : 6949fa: e8 41 b6 e2 ff callq 4c0040 0.00 : 6949ff: 84 c0 test %al,%al 0.00 : 694a01: 0f 85 99 fe ff ff jne 6948a0 : : /* : * The following function must be called without holding OldSerXidLock, : * but will return with that lock held, which must then be released. : */ : slotno = SimpleLruReadPage_ReadOnly(OldSerXidSlruCtl, 0.00 : 694a07: 89 de mov %ebx,%esi 0.00 : 694a09: 89 da mov %ebx,%edx 0.00 : 694a0b: bf e0 e6 b7 00 mov $0xb7e6e0,%edi 0.00 : 694a10: c1 ee 0a shr $0xa,%esi 0.00 : 694a13: 81 e6 ff ff 1f 00 and $0x1fffff,%esi 0.00 : 694a19: e8 02 1a e3 ff callq 4c6420 : OldSerXidPage(xid), xid); : val = OldSerXidValue(slotno, xid); 0.00 : 694a1e: 48 8b 15 bb 9c 4e 00 mov 0x4e9cbb(%rip),%rdx # b7e6e0 0.00 : 694a25: 48 98 cltq 0.00 : 694a27: 48 89 d9 mov %rbx,%rcx 0.00 : 694a2a: 81 e1 ff 03 00 00 and $0x3ff,%ecx : LWLockRelease(OldSerXidLock); 0.00 : 694a30: 48 8b 3d c9 8f 4e 00 mov 0x4e8fc9(%rip),%rdi # b7da00 : * The following function must be called without holding OldSerXidLock, : * but will return with that lock held, which must then be released. : */ : slotno = SimpleLruReadPage_ReadOnly(OldSerXidSlruCtl, : OldSerXidPage(xid), xid); : val = OldSerXidValue(slotno, xid); 0.00 : 694a37: 48 8b 52 10 mov 0x10(%rdx),%rdx : LWLockRelease(OldSerXidLock); 0.00 : 694a3b: 48 81 c7 e0 03 00 00 add $0x3e0,%rdi : * The following function must be called without holding OldSerXidLock, : * but will return with that lock held, which must then be released. : */ : slotno = SimpleLruReadPage_ReadOnly(OldSerXidSlruCtl, : OldSerXidPage(xid), xid); : val = OldSerXidValue(slotno, xid); 0.00 : 694a42: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 694a46: 4c 8b 24 c8 mov (%rax,%rcx,8),%r12 : LWLockRelease(OldSerXidLock); 0.00 : 694a4a: e8 51 a9 ff ff callq 68f3a0 : * got pushed out to SLRU storage for "old committed" transactions. : */ : SerCommitSeqNo conflictCommitSeqNo; : : conflictCommitSeqNo = OldSerXidGetMinConflictCommitSeqNo(xid); : if (conflictCommitSeqNo != 0) 0.00 : 694a4f: 4d 85 e4 test %r12,%r12 0.00 : 694a52: 0f 84 48 fe ff ff je 6948a0 : { : if (conflictCommitSeqNo != InvalidSerCommitSeqNo 0.00 : 694a58: 49 83 fc ff cmp $0xffffffffffffffff,%r12 0.00 : 694a5c: 74 77 je 694ad5 0.00 : 694a5e: 48 8b 05 5b 9c 4e 00 mov 0x4e9c5b(%rip),%rax # b7e6c0 0.00 : 694a65: f6 40 7c 20 testb $0x20,0x7c(%rax) 0.00 : 694a69: 74 06 je 694a71 0.00 : 694a6b: 4c 39 60 18 cmp %r12,0x18(%rax) 0.00 : 694a6f: 72 6b jb 694adc : && (!SxactIsReadOnly(MySerializableXact) : || conflictCommitSeqNo : <= MySerializableXact->SeqNo.lastCommitBeforeSnapshot)) : ereport(ERROR, 0.00 : 694a71: 45 31 c0 xor %r8d,%r8d 0.00 : 694a74: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694a79: ba 89 0f 00 00 mov $0xf89,%edx 0.00 : 694a7e: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694a83: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694a88: e8 33 60 0e 00 callq 77aac0 0.00 : 694a8d: 84 c0 test %al,%al 0.00 : 694a8f: 0f 84 84 fc ff ff je 694719 0.00 : 694a95: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694a9a: 31 c0 xor %eax,%eax 0.00 : 694a9c: e8 ff 71 0e 00 callq 77bca0 0.00 : 694aa1: 89 de mov %ebx,%esi 0.00 : 694aa3: 41 89 c5 mov %eax,%r13d 0.00 : 694aa6: bf e0 d8 8a 00 mov $0x8ad8e0,%edi 0.00 : 694aab: 31 c0 xor %eax,%eax 0.00 : 694aad: e8 ce 78 0e 00 callq 77c380 0.00 : 694ab2: e9 b8 fe ff ff jmpq 69496f : /* : * If this is a read-only transaction and the writing transaction has : * committed, and it doesn't have a rw-conflict to a transaction which : * committed before it, no conflict. : */ : if (SxactIsReadOnly(MySerializableXact) 0.00 : 694ab7: 83 e2 10 and $0x10,%edx 0.00 : 694aba: 0f 84 e0 fd ff ff je 6948a0 0.00 : 694ac0: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 694ac5: 48 39 41 18 cmp %rax,0x18(%rcx) 0.00 : 694ac9: 0f 83 ff fd ff ff jae 6948ce 0.00 : 694acf: 90 nop 0.00 : 694ad0: e9 cb fd ff ff jmpq 6948a0 0.00 : 694ad5: 48 8b 05 e4 9b 4e 00 mov 0x4e9be4(%rip),%rax # b7e6c0 : (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), : errmsg("could not serialize access due to read/write dependencies among transactions"), : errdetail_internal("Reason code: Canceled on conflict out to old pivot %u.", xid), : errhint("The transaction might succeed if retried."))); : : if (SxactHasSummaryConflictIn(MySerializableXact) 0.00 : 694adc: f6 40 7d 02 testb $0x2,0x7d(%rax) 0.00 : 694ae0: 75 0d jne 694aef 0.00 : 694ae2: 48 8d 78 30 lea 0x30(%rax),%rdi 0.00 : 694ae6: e8 25 ea fe ff callq 683510 0.00 : 694aeb: 84 c0 test %al,%al 0.00 : 694aed: 75 46 jne 694b35 : || !SHMQueueEmpty(&MySerializableXact->inConflicts)) : ereport(ERROR, 0.00 : 694aef: 45 31 c0 xor %r8d,%r8d 0.00 : 694af2: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694af7: ba 91 0f 00 00 mov $0xf91,%edx 0.00 : 694afc: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694b01: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694b06: e8 b5 5f 0e 00 callq 77aac0 0.00 : 694b0b: 84 c0 test %al,%al 0.00 : 694b0d: 0f 84 06 fc ff ff je 694719 0.00 : 694b13: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694b18: 31 c0 xor %eax,%eax 0.00 : 694b1a: e8 81 71 0e 00 callq 77bca0 0.00 : 694b1f: 89 de mov %ebx,%esi 0.00 : 694b21: 41 89 c5 mov %eax,%r13d 0.00 : 694b24: bf 18 d9 8a 00 mov $0x8ad918,%edi 0.00 : 694b29: 31 c0 xor %eax,%eax 0.00 : 694b2b: e8 50 78 0e 00 callq 77c380 0.00 : 694b30: e9 3a fe ff ff jmpq 69496f : (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), : errmsg("could not serialize access due to read/write dependencies among transactions"), : errdetail_internal("Reason code: Canceled on identification as a pivot, with conflict out to old committed transaction %u.", xid), : errhint("The transaction might succeed if retried."))); : : MySerializableXact->flags |= SXACT_FLAG_SUMMARY_CONFLICT_OUT; 0.00 : 694b35: 48 8b 05 84 9b 4e 00 mov 0x4e9b84(%rip),%rax # b7e6c0 0.00 : 694b3c: 81 48 7c 00 04 00 00 orl $0x400,0x7c(%rax) 0.00 : 694b43: e9 58 fd ff ff jmpq 6948a0 : LWLockRelease(SerializableXactHashLock); : return; : } : else : { : LWLockRelease(SerializableXactHashLock); 0.00 : 694b48: 48 8b 3d b1 8e 4e 00 mov 0x4e8eb1(%rip),%rdi # b7da00 0.00 : 694b4f: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 694b56: e8 45 a8 ff ff callq 68f3a0 : ereport(ERROR, 0.00 : 694b5b: 45 31 c0 xor %r8d,%r8d 0.00 : 694b5e: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694b63: ba b8 0f 00 00 mov $0xfb8,%edx 0.00 : 694b68: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694b6d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694b72: e8 49 5f 0e 00 callq 77aac0 0.00 : 694b77: 84 c0 test %al,%al 0.00 : 694b79: 0f 84 9a fb ff ff je 694719 0.00 : 694b7f: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694b84: 31 c0 xor %eax,%eax 0.00 : 694b86: e8 15 71 0e 00 callq 77bca0 0.00 : 694b8b: bf 80 d9 8a 00 mov $0x8ad980,%edi 0.00 : 694b90: 41 89 c5 mov %eax,%r13d 0.00 : 694b93: e9 d0 fd ff ff jmpq 694968 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:648 8.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 7.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:630 7.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 5.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 4.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 4.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 3.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:641 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:628 3.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:648 2.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 2.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:628 1.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:641 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:643 1.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:643 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:631 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 1.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:641 1.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:646 0.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:645 0.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a900 : : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 5.58 : 79a900: 55 push %rbp : if (owner != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:628 3.25 : 79a901: 48 85 ff test %rdi,%rdi : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 1.47 : 79a904: 48 89 e5 mov %rsp,%rbp 4.03 : 79a907: 41 54 push %r12 4.46 : 79a909: 49 89 fc mov %rdi,%r12 1.74 : 79a90c: 53 push %rbx 3.49 : 79a90d: 89 f3 mov %esi,%ebx : if (owner != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:628 2.17 : 79a90f: 74 4d je 79a95e : { : Buffer *buffers = owner->buffers; : int nb1 = owner->nbuffers - 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:631 1.39 : 79a911: 8b 47 20 mov 0x20(%rdi),%eax : void : ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer) : { : if (owner != NULL) : { : Buffer *buffers = owner->buffers; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:630 7.90 : 79a914: 48 8b 77 28 mov 0x28(%rdi),%rsi : /* : * Scan back-to-front because it's more likely we are releasing a : * recently pinned buffer. This isn't always the case of course, but : * it's the way to bet. : */ : for (i = nb1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 8.18 : 79a918: 89 c7 mov %eax,%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 2.40 : 79a91a: 83 ef 01 sub $0x1,%edi 2.40 : 79a91d: 78 49 js 79a968 : { : if (buffers[i] == buffer) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:641 1.36 : 79a91f: 48 63 c7 movslq %edi,%rax : while (i < nb1) : { : buffers[i] = buffers[i + 1]; : i++; : } : owner->nbuffers = nb1; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:648 3.02 : 79a922: 89 fa mov %edi,%edx : * recently pinned buffer. This isn't always the case of course, but : * it's the way to bet. : */ : for (i = nb1; i >= 0; i--) : { : if (buffers[i] == buffer) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:641 1.98 : 79a924: 39 1c 86 cmp %ebx,(%rsi,%rax,4) 0.00 : 79a927: 74 30 je 79a959 3.41 : 79a929: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Scan back-to-front because it's more likely we are releasing a : * recently pinned buffer. This isn't always the case of course, but : * it's the way to bet. : */ : for (i = nb1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 1.39 : 79a930: 83 ea 01 sub $0x1,%edx 0.27 : 79a933: 78 33 js 79a968 : { : if (buffers[i] == buffer) 0.15 : 79a935: 48 63 ca movslq %edx,%rcx 0.39 : 79a938: 39 1c 8e cmp %ebx,(%rsi,%rcx,4) 0.00 : 79a93b: 75 f3 jne 79a930 : { : while (i < nb1) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:643 1.82 : 79a93d: 39 d7 cmp %edx,%edi 0.27 : 79a93f: 90 nop 0.04 : 79a940: 7f 09 jg 79a94b 0.00 : 79a942: eb 15 jmp 79a959 0.00 : 79a944: 0f 1f 40 00 nopl 0x0(%rax) 0.04 : 79a948: 48 63 ca movslq %edx,%rcx : { : buffers[i] = buffers[i + 1]; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:645 0.70 : 79a94b: 8b 44 8e 04 mov 0x4(%rsi,%rcx,4),%eax : i++; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:646 0.89 : 79a94f: 83 c2 01 add $0x1,%edx : */ : for (i = nb1; i >= 0; i--) : { : if (buffers[i] == buffer) : { : while (i < nb1) 0.15 : 79a952: 39 d7 cmp %edx,%edi : { : buffers[i] = buffers[i + 1]; 0.46 : 79a954: 89 04 8e mov %eax,(%rsi,%rcx,4) : */ : for (i = nb1; i >= 0; i--) : { : if (buffers[i] == buffer) : { : while (i < nb1) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:643 1.47 : 79a957: 7f ef jg 79a948 : { : buffers[i] = buffers[i + 1]; : i++; : } : owner->nbuffers = nb1; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:648 23.05 : 79a959: 41 89 7c 24 20 mov %edi,0x20(%r12) : } : } : elog(ERROR, "buffer %d is not owned by resource owner %s", : buffer, owner->name); : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 0.50 : 79a95e: 5b pop %rbx 1.12 : 79a95f: 41 5c pop %r12 1.28 : 79a961: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 7.75 : 79a962: c3 retq 0.00 : 79a963: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : owner->nbuffers = nb1; : return; : } : } : elog(ERROR, "buffer %d is not owned by resource owner %s", 0.00 : 79a968: ba 70 27 8e 00 mov $0x8e2770,%edx 0.00 : 79a96d: be 8d 02 00 00 mov $0x28d,%esi 0.00 : 79a972: bf 90 22 8e 00 mov $0x8e2290,%edi 0.00 : 79a977: e8 a4 0a fe ff callq 77b420 0.00 : 79a97c: 49 8b 4c 24 18 mov 0x18(%r12),%rcx 0.00 : 79a981: 89 da mov %ebx,%edx 0.00 : 79a983: be b8 24 8e 00 mov $0x8e24b8,%esi 0.00 : 79a988: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79a98d: 31 c0 xor %eax,%eax 0.00 : 79a98f: e8 9c 08 fe ff callq 77b230 0.00 : 79a994: e8 37 eb cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 9.85 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 8.14 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 7.92 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 7.48 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 7.30 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 6.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 6.13 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 5.25 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 5.14 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 4.89 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 4.01 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 3.03 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.88 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.74 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.19 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.04 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:511 1.93 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 1.57 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:523 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 0.88 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:517 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:511 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000490660 : : register uint32 a, : b, : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:517 0.88 : 490660: 81 ef ac a9 8c 61 sub $0x618ca9ac,%edi : * hash_any(&k, sizeof(uint32)) : * but is faster and doesn't force the caller to store k into memory. : */ : Datum : hash_uint32(uint32 k) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:511 2.04 : 490666: 55 push %rbp : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; : : final(a, b, c); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.74 : 490667: 81 f7 64 d8 6a 2a xor $0x2a6ad864,%edi 3.03 : 49066d: 81 ef 53 21 c3 56 sub $0x56c32153,%edi : * hash_any(&k, sizeof(uint32)) : * but is faster and doesn't force the caller to store k into memory. : */ : Datum : hash_uint32(uint32 k) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:511 0.58 : 490673: 48 89 e5 mov %rsp,%rbp : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; : : final(a, b, c); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 4.01 : 490676: 89 fe mov %edi,%esi 2.77 : 490678: 89 f8 mov %edi,%eax 0.33 : 49067a: c1 c8 07 ror $0x7,%eax 4.89 : 49067d: 81 f6 54 56 73 9e xor $0x9e735654,%esi 2.19 : 490683: 29 c6 sub %eax,%esi : : /* report the result */ : return UInt32GetDatum(c); : } /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:523 1.50 : 490685: c9 leaveq : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; : : final(a, b, c); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 9.85 : 490686: 89 f0 mov %esi,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 0.91 : 490688: 89 f2 mov %esi,%edx 0.73 : 49068a: c1 ca 10 ror $0x10,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 7.30 : 49068d: 35 64 d8 6a 2a xor $0x2a6ad864,%eax 0.26 : 490692: 29 d0 sub %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 1.93 : 490694: 89 c2 mov %eax,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 5.14 : 490696: 89 c1 mov %eax,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 2.23 : 490698: c1 c9 1c ror $0x1c,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 7.48 : 49069b: 31 fa xor %edi,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 1.57 : 49069d: 29 ca sub %ecx,%edx 2.88 : 49069f: 89 d1 mov %edx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 5.25 : 4906a1: c1 ca 12 ror $0x12,%edx 7.92 : 4906a4: 31 f1 xor %esi,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 0.58 : 4906a6: 29 d1 sub %edx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 6.13 : 4906a8: 31 c8 xor %ecx,%eax 6.31 : 4906aa: c1 c9 08 ror $0x8,%ecx 8.57 : 4906ad: 29 c8 sub %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 55.02 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1742 15.89 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1720 9.03 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1742 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1777 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1782 0.72 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1706 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1816 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1774 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1702 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1783 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1770 0.57 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1687 0.57 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1687 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1704 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1687 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1687 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1688 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1714 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1734 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1779 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049d220 : : */ : bool : heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer, : Snapshot snapshot, HeapTuple heapTuple, : bool *all_dead, bool first_call) : { 0.09 : 49d220: 55 push %rbp 0.12 : 49d221: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1687 0.57 : 49d224: 41 57 push %r15 0.03 : 49d226: 4d 89 cf mov %r9,%r15 0.00 : 49d229: 41 56 push %r14 0.51 : 49d22b: 4d 89 c6 mov %r8,%r14 0.00 : 49d22e: 41 55 push %r13 0.00 : 49d230: 41 54 push %r12 0.00 : 49d232: 53 push %rbx 0.57 : 49d233: 48 83 ec 28 sub $0x28,%rsp : Page dp = (Page) BufferGetPage(buffer); 0.03 : 49d237: 85 d2 test %edx,%edx : */ : bool : heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer, : Snapshot snapshot, HeapTuple heapTuple, : bool *all_dead, bool first_call) : { 0.00 : 49d239: 48 89 4d b8 mov %rcx,-0x48(%rbp) 0.51 : 49d23d: 48 89 7d d0 mov %rdi,-0x30(%rbp) 0.00 : 49d241: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.03 : 49d245: 89 55 c4 mov %edx,-0x3c(%rbp) 0.09 : 49d248: 0f b6 4d 10 movzbl 0x10(%rbp),%ecx : Page dp = (Page) BufferGetPage(buffer); 0.39 : 49d24c: 0f 88 5e 02 00 00 js 49d4b0 0.03 : 49d252: 8b 45 c4 mov -0x3c(%rbp),%eax 0.06 : 49d255: 83 e8 01 sub $0x1,%eax 0.06 : 49d258: 4c 63 e8 movslq %eax,%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1688 0.51 : 49d25b: 49 c1 e5 0d shl $0xd,%r13 0.09 : 49d25f: 4c 03 2d 92 28 72 00 add 0x722892(%rip),%r13 # bbfaf8 : bool at_chain_start; : bool valid; : bool skip; : : /* If this is not the first call, previous call returned a (live!) tuple */ : if (all_dead) 0.09 : 49d266: 4d 85 ff test %r15,%r15 0.00 : 49d269: 74 03 je 49d26e : *all_dead = first_call; 0.03 : 49d26b: 41 88 0f mov %cl,(%r15) : : Assert(TransactionIdIsValid(RecentGlobalXmin)); : : Assert(ItemPointerGetBlockNumber(tid) == BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(tid); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1702 0.66 : 49d26e: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 49d272: 44 0f b7 60 04 movzwl 0x4(%rax),%r12d : at_chain_start = first_call; : skip = !first_call; : : heapTuple->t_self = *tid; 0.21 : 49d277: 48 89 c2 mov %rax,%rdx 0.00 : 49d27a: 8b 00 mov (%rax),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1706 0.72 : 49d27c: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 49d280: 0f b7 42 04 movzwl 0x4(%rdx),%eax : for (;;) : { : ItemId lp; : : /* check for bogus TID */ : if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp)) 0.06 : 49d284: 66 45 85 e4 test %r12w,%r12w : Assert(ItemPointerGetBlockNumber(tid) == BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(tid); : at_chain_start = first_call; : skip = !first_call; : : heapTuple->t_self = *tid; 0.03 : 49d288: 66 41 89 46 08 mov %ax,0x8(%r14) : for (;;) : { : ItemId lp; : : /* check for bogus TID */ : if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp)) 0.24 : 49d28d: 74 4e je 49d2dd : Assert(TransactionIdIsValid(RecentGlobalXmin)); : : Assert(ItemPointerGetBlockNumber(tid) == BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(tid); : at_chain_start = first_call; : skip = !first_call; 0.00 : 49d28f: 84 c9 test %cl,%cl 0.06 : 49d291: 89 ce mov %ecx,%esi 0.03 : 49d293: 41 0f 94 c0 sete %r8b /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1704 0.54 : 49d297: 31 ff xor %edi,%edi 0.06 : 49d299: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : for (;;) : { : ItemId lp; : : /* check for bogus TID */ : if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp)) 0.00 : 49d2a0: 41 0f b7 55 0c movzwl 0xc(%r13),%edx 0.06 : 49d2a5: 31 c0 xor %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1714 0.51 : 49d2a7: 41 0f b7 cc movzwl %r12w,%ecx 0.00 : 49d2ab: 66 83 fa 18 cmp $0x18,%dx 0.00 : 49d2af: 76 0b jbe 49d2bc 0.09 : 49d2b1: 0f b7 c2 movzwl %dx,%eax 0.03 : 49d2b4: 48 83 e8 18 sub $0x18,%rax 0.42 : 49d2b8: 48 c1 e8 02 shr $0x2,%rax 0.09 : 49d2bc: 48 39 c8 cmp %rcx,%rax 0.00 : 49d2bf: 72 1c jb 49d2dd : break; : : lp = PageGetItemId(dp, offnum); : : /* check for unused, dead, or redirected items */ : if (!ItemIdIsNormal(lp)) 0.06 : 49d2c1: 48 8d 51 03 lea 0x3(%rcx),%rdx 0.12 : 49d2c5: 41 8b 44 95 08 mov 0x8(%r13,%rdx,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1720 15.89 : 49d2ca: 25 00 80 01 00 and $0x18000,%eax 0.15 : 49d2cf: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49d2d4: 74 3a je 49d310 : { : /* We should only see a redirect at start of chain */ : if (ItemIdIsRedirected(lp) && at_chain_start) 0.00 : 49d2d6: 3d 00 00 01 00 cmp $0x10000,%eax 0.00 : 49d2db: 74 13 je 49d2f0 : { : Assert(ItemPointerGetBlockNumber(&heapTuple->t_data->t_ctid) == : ItemPointerGetBlockNumber(tid)); : offnum = ItemPointerGetOffsetNumber(&heapTuple->t_data->t_ctid); : at_chain_start = false; : prev_xmax = HeapTupleHeaderGetUpdateXid(heapTuple->t_data); 0.00 : 49d2dd: 31 c0 xor %eax,%eax : else : break; /* end of chain */ : } : : return false; : } 0.03 : 49d2df: 48 83 c4 28 add $0x28,%rsp 0.45 : 49d2e3: 5b pop %rbx 0.15 : 49d2e4: 41 5c pop %r12 0.06 : 49d2e6: 41 5d pop %r13 0.18 : 49d2e8: 41 5e pop %r14 0.30 : 49d2ea: 41 5f pop %r15 0.03 : 49d2ec: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1816 0.69 : 49d2ed: c3 retq 0.00 : 49d2ee: 66 90 xchg %ax,%ax : : /* check for unused, dead, or redirected items */ : if (!ItemIdIsNormal(lp)) : { : /* We should only see a redirect at start of chain */ : if (ItemIdIsRedirected(lp) && at_chain_start) 0.00 : 49d2f0: 40 84 f6 test %sil,%sil 0.00 : 49d2f3: 74 e8 je 49d2dd : { : /* Follow the redirect */ : offnum = ItemIdGetRedirect(lp); 0.00 : 49d2f5: 45 0f b7 64 95 08 movzwl 0x8(%r13,%rdx,4),%r12d 0.00 : 49d2fb: 66 41 81 e4 ff 7f and $0x7fff,%r12w : Assert(TransactionIdIsValid(RecentGlobalXmin)); : : Assert(ItemPointerGetBlockNumber(tid) == BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(tid); : at_chain_start = first_call; : skip = !first_call; 0.00 : 49d301: 31 f6 xor %esi,%esi : for (;;) : { : ItemId lp; : : /* check for bogus TID */ : if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp)) 0.00 : 49d303: 66 45 85 e4 test %r12w,%r12w 0.00 : 49d307: 75 97 jne 49d2a0 0.00 : 49d309: eb d2 jmp 49d2dd 0.00 : 49d30b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : /* else must be end of chain */ : break; : } : : heapTuple->t_data = (HeapTupleHeader) PageGetItem(dp, lp); 0.12 : 49d310: 41 0f b7 44 95 08 movzwl 0x8(%r13,%rdx,4),%eax 0.27 : 49d316: 25 ff 7f 00 00 and $0x7fff,%eax 0.24 : 49d31b: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1734 0.51 : 49d320: 49 89 4e 10 mov %rcx,0x10(%r14) : heapTuple->t_len = ItemIdGetLength(lp); 0.12 : 49d324: 41 0f b7 44 95 0a movzwl 0xa(%r13,%rdx,4),%eax : heapTuple->t_tableOid = RelationGetRelid(relation); 0.03 : 49d32a: 48 8b 55 c8 mov -0x38(%rbp),%rdx : /* else must be end of chain */ : break; : } : : heapTuple->t_data = (HeapTupleHeader) PageGetItem(dp, lp); : heapTuple->t_len = ItemIdGetLength(lp); 0.24 : 49d32e: 66 d1 e8 shr %ax : ItemPointerSetOffsetNumber(&heapTuple->t_self, offnum); : : /* : * Shouldn't see a HEAP_ONLY tuple at chain start. : */ : if (at_chain_start && HeapTupleIsHeapOnly(heapTuple)) 0.00 : 49d331: 40 84 f6 test %sil,%sil : /* else must be end of chain */ : break; : } : : heapTuple->t_data = (HeapTupleHeader) PageGetItem(dp, lp); : heapTuple->t_len = ItemIdGetLength(lp); 0.12 : 49d334: 0f b7 c0 movzwl %ax,%eax 0.00 : 49d337: 41 89 06 mov %eax,(%r14) : heapTuple->t_tableOid = RelationGetRelid(relation); 0.09 : 49d33a: 8b 42 40 mov 0x40(%rdx),%eax : ItemPointerSetOffsetNumber(&heapTuple->t_self, offnum); 0.00 : 49d33d: 66 45 89 66 08 mov %r12w,0x8(%r14) : break; : } : : heapTuple->t_data = (HeapTupleHeader) PageGetItem(dp, lp); : heapTuple->t_len = ItemIdGetLength(lp); : heapTuple->t_tableOid = RelationGetRelid(relation); 0.18 : 49d342: 41 89 46 0c mov %eax,0xc(%r14) : ItemPointerSetOffsetNumber(&heapTuple->t_self, offnum); : : /* : * Shouldn't see a HEAP_ONLY tuple at chain start. : */ : if (at_chain_start && HeapTupleIsHeapOnly(heapTuple)) 0.09 : 49d346: 74 07 je 49d34f /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1742 9.03 : 49d348: 66 83 79 12 00 cmpw $0x0,0x12(%rcx) 55.02 : 49d34d: 78 8e js 49d2dd : : /* : * The xmin should match the previous xmax value, else chain is : * broken. : */ : if (TransactionIdIsValid(prev_xmax) && 0.45 : 49d34f: 85 ff test %edi,%edi 0.00 : 49d351: 74 23 je 49d376 0.00 : 49d353: 49 8b 4e 10 mov 0x10(%r14),%rcx 0.00 : 49d357: ba 02 00 00 00 mov $0x2,%edx 0.00 : 49d35c: 0f b7 41 14 movzwl 0x14(%rcx),%eax 0.00 : 49d360: 25 00 03 00 00 and $0x300,%eax 0.00 : 49d365: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 49d36a: 74 02 je 49d36e 0.00 : 49d36c: 8b 11 mov (%rcx),%edx 0.00 : 49d36e: 39 fa cmp %edi,%edx 0.00 : 49d370: 0f 85 67 ff ff ff jne 49d2dd : * return the first tuple we find. But on later passes, heapTuple : * will initially be pointing to the tuple we returned last time. : * Returning it again would be incorrect (and would loop forever), so : * we skip it and return the next match we find. : */ : if (!skip) 0.06 : 49d376: 45 84 c0 test %r8b,%r8b 0.00 : 49d379: 74 65 je 49d3e0 : /* : * If we can't see it, maybe no one else can either. At caller : * request, check whether all chain members are dead to all : * transactions. : */ : if (all_dead && *all_dead && 0.00 : 49d37b: 4d 85 ff test %r15,%r15 0.00 : 49d37e: 66 90 xchg %ax,%ax 0.00 : 49d380: 74 0a je 49d38c 0.00 : 49d382: 41 80 3f 00 cmpb $0x0,(%r15) 0.00 : 49d386: 0f 85 04 01 00 00 jne 49d490 : : /* : * Check to see if HOT chain continues past this tuple; if so fetch : * the next offnum and loop around. : */ : if (HeapTupleIsHotUpdated(heapTuple)) 0.00 : 49d38c: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 49d390: f6 47 13 40 testb $0x40,0x13(%rdi) 0.00 : 49d394: 0f 84 43 ff ff ff je 49d2dd 0.00 : 49d39a: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 49d39e: f6 c6 08 test $0x8,%dh 0.00 : 49d3a1: 0f 85 36 ff ff ff jne 49d2dd 0.00 : 49d3a7: 89 d0 mov %edx,%eax 0.00 : 49d3a9: 25 00 03 00 00 and $0x300,%eax 0.00 : 49d3ae: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 49d3b3: 0f 84 24 ff ff ff je 49d2dd : { : Assert(ItemPointerGetBlockNumber(&heapTuple->t_data->t_ctid) == : ItemPointerGetBlockNumber(tid)); : offnum = ItemPointerGetOffsetNumber(&heapTuple->t_data->t_ctid); : at_chain_start = false; : prev_xmax = HeapTupleHeaderGetUpdateXid(heapTuple->t_data); 0.00 : 49d3b9: 89 d0 mov %edx,%eax : */ : if (HeapTupleIsHotUpdated(heapTuple)) : { : Assert(ItemPointerGetBlockNumber(&heapTuple->t_data->t_ctid) == : ItemPointerGetBlockNumber(tid)); : offnum = ItemPointerGetOffsetNumber(&heapTuple->t_data->t_ctid); 0.00 : 49d3bb: 44 0f b7 67 10 movzwl 0x10(%rdi),%r12d : at_chain_start = false; : prev_xmax = HeapTupleHeaderGetUpdateXid(heapTuple->t_data); 0.00 : 49d3c0: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49d3c5: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49d3ca: 0f 84 a8 00 00 00 je 49d478 0.00 : 49d3d0: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 49d3d3: 45 31 c0 xor %r8d,%r8d 0.00 : 49d3d6: e9 26 ff ff ff jmpq 49d301 0.00 : 49d3db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * element of the HOT chain we're currently investigating instead : * of the root tuple of the HOT chain. This is important because : * the *Satisfies routine for historical mvcc snapshots needs the : * correct tid to decide about the visibility in some cases. : */ : ItemPointerSet(&(heapTuple->t_self), BufferGetBlockNumber(buffer), offnum); 0.39 : 49d3e0: 8b 7d c4 mov -0x3c(%rbp),%edi 0.06 : 49d3e3: e8 48 6c 1d 00 callq 674030 0.00 : 49d3e8: 8b 7d c4 mov -0x3c(%rbp),%edi 0.03 : 49d3eb: c1 e8 10 shr $0x10,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1770 0.60 : 49d3ee: 66 41 89 46 04 mov %ax,0x4(%r14) 0.00 : 49d3f3: e8 38 6c 1d 00 callq 674030 : : /* If it's visible per the snapshot, we must return it */ : valid = HeapTupleSatisfiesVisibility(heapTuple, snapshot, buffer); 0.09 : 49d3f8: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 49d3fc: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 49d3ff: 4c 89 f7 mov %r14,%rdi : * element of the HOT chain we're currently investigating instead : * of the root tuple of the HOT chain. This is important because : * the *Satisfies routine for historical mvcc snapshots needs the : * correct tid to decide about the visibility in some cases. : */ : ItemPointerSet(&(heapTuple->t_self), BufferGetBlockNumber(buffer), offnum); 0.48 : 49d402: 66 41 89 46 06 mov %ax,0x6(%r14) 0.12 : 49d407: 66 45 89 66 08 mov %r12w,0x8(%r14) : : /* If it's visible per the snapshot, we must return it */ : valid = HeapTupleSatisfiesVisibility(heapTuple, snapshot, buffer); 0.00 : 49d40c: ff 16 callq *(%rsi) : CheckForSerializableConflictOut(valid, relation, heapTuple, 0.15 : 49d40e: 8b 4d c4 mov -0x3c(%rbp),%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1774 0.69 : 49d411: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 49d415: 0f be f8 movsbl %al,%edi 0.30 : 49d418: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.21 : 49d41c: 4c 89 f2 mov %r14,%rdx : * correct tid to decide about the visibility in some cases. : */ : ItemPointerSet(&(heapTuple->t_self), BufferGetBlockNumber(buffer), offnum); : : /* If it's visible per the snapshot, we must return it */ : valid = HeapTupleSatisfiesVisibility(heapTuple, snapshot, buffer); 0.00 : 49d41f: 89 c3 mov %eax,%ebx : CheckForSerializableConflictOut(valid, relation, heapTuple, 0.00 : 49d421: e8 3a 72 1f 00 callq 694660 : buffer, snapshot); : /* reset to original, non-redirected, tid */ : heapTuple->t_self = *tid; 0.24 : 49d426: 48 8b 4d d0 mov -0x30(%rbp),%rcx : : if (valid) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1779 0.51 : 49d42a: 84 db test %bl,%bl : /* If it's visible per the snapshot, we must return it */ : valid = HeapTupleSatisfiesVisibility(heapTuple, snapshot, buffer); : CheckForSerializableConflictOut(valid, relation, heapTuple, : buffer, snapshot); : /* reset to original, non-redirected, tid */ : heapTuple->t_self = *tid; 0.03 : 49d42c: 8b 01 mov (%rcx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1777 0.77 : 49d42e: 41 89 46 04 mov %eax,0x4(%r14) 0.36 : 49d432: 0f b7 41 04 movzwl 0x4(%rcx),%eax 0.15 : 49d436: 66 41 89 46 08 mov %ax,0x8(%r14) : : if (valid) 0.24 : 49d43b: 0f 84 3a ff ff ff je 49d37b : { : ItemPointerSetOffsetNumber(tid, offnum); 0.03 : 49d441: 66 44 89 61 04 mov %r12w,0x4(%rcx) : PredicateLockTuple(relation, heapTuple, snapshot); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1782 0.75 : 49d446: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.30 : 49d44a: 4c 89 f6 mov %r14,%rsi 0.03 : 49d44d: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 49d451: e8 4a 77 1f 00 callq 694ba0 : if (all_dead) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1783 0.66 : 49d456: 4d 85 ff test %r15,%r15 0.06 : 49d459: b8 01 00 00 00 mov $0x1,%eax 0.00 : 49d45e: 0f 84 7b fe ff ff je 49d2df : *all_dead = false; 0.12 : 49d464: 41 c6 07 00 movb $0x0,(%r15) 0.39 : 49d468: b8 01 00 00 00 mov $0x1,%eax 0.06 : 49d46d: e9 6d fe ff ff jmpq 49d2df 0.00 : 49d472: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : Assert(ItemPointerGetBlockNumber(&heapTuple->t_data->t_ctid) == : ItemPointerGetBlockNumber(tid)); : offnum = ItemPointerGetOffsetNumber(&heapTuple->t_data->t_ctid); : at_chain_start = false; : prev_xmax = HeapTupleHeaderGetUpdateXid(heapTuple->t_data); 0.00 : 49d478: 84 d2 test %dl,%dl 0.00 : 49d47a: 0f 88 50 ff ff ff js 49d3d0 0.00 : 49d480: e8 9b 9c ff ff callq 497120 0.00 : 49d485: 45 31 c0 xor %r8d,%r8d 0.00 : 49d488: 89 c7 mov %eax,%edi 0.00 : 49d48a: e9 72 fe ff ff jmpq 49d301 0.00 : 49d48f: 90 nop : /* : * If we can't see it, maybe no one else can either. At caller : * request, check whether all chain members are dead to all : * transactions. : */ : if (all_dead && *all_dead && 0.00 : 49d490: 8b 35 6a d4 71 00 mov 0x71d46a(%rip),%esi # bba900 0.00 : 49d496: 4c 89 f7 mov %r14,%rdi 0.00 : 49d499: e8 62 72 30 00 callq 7a4700 0.00 : 49d49e: 84 c0 test %al,%al 0.00 : 49d4a0: 0f 85 e6 fe ff ff jne 49d38c : !HeapTupleIsSurelyDead(heapTuple, RecentGlobalXmin)) : *all_dead = false; 0.00 : 49d4a6: 41 c6 07 00 movb $0x0,(%r15) 0.00 : 49d4aa: e9 dd fe ff ff jmpq 49d38c 0.00 : 49d4af: 90 nop : bool : heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer, : Snapshot snapshot, HeapTuple heapTuple, : bool *all_dead, bool first_call) : { : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49d4b0: 89 d0 mov %edx,%eax 0.00 : 49d4b2: 48 8b 15 5f fc 6d 00 mov 0x6dfc5f(%rip),%rdx # b7d118 0.00 : 49d4b9: f7 d0 not %eax 0.00 : 49d4bb: 48 98 cltq 0.00 : 49d4bd: 4c 8b 2c c2 mov (%rdx,%rax,8),%r13 0.00 : 49d4c1: e9 a0 fd ff ff jmpq 49d266 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.91 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:177 7.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:251 6.99 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 4.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:179 3.80 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:196 3.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 2.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:166 2.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 2.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 2.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:204 2.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:177 2.15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 1.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:168 1.65 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:148 1.65 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:251 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 1.57 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:148 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 1.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 1.31 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:198 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:201 1.15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:251 1.04 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:203 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:177 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:196 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:231 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:231 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:142 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:214 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:214 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:211 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:172 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:231 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ff60 : : void : heap_fill_tuple(TupleDesc tupleDesc, : Datum *values, bool *isnull, : char *data, Size data_size, : uint16 *infomask, bits8 *bit) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.96 : 46ff60: 55 push %rbp : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:148 1.57 : 46ff61: 45 31 d2 xor %r10d,%r10d : void : heap_fill_tuple(TupleDesc tupleDesc, : Datum *values, bool *isnull, : char *data, Size data_size, : uint16 *infomask, bits8 *bit) : { 0.00 : 46ff64: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.54 : 46ff67: 41 57 push %r15 : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:148 1.65 : 46ff69: 45 31 ff xor %r15d,%r15d : void : heap_fill_tuple(TupleDesc tupleDesc, : Datum *values, bool *isnull, : char *data, Size data_size, : uint16 *infomask, bits8 *bit) : { 0.08 : 46ff6c: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.73 : 46ff6e: 41 55 push %r13 0.69 : 46ff70: 49 89 cd mov %rcx,%r13 0.00 : 46ff73: 41 54 push %r12 0.50 : 46ff75: 53 push %rbx 0.54 : 46ff76: 48 83 ec 38 sub $0x38,%rsp 0.15 : 46ff7a: 4c 8b 5d 10 mov 0x10(%rbp),%r11 0.23 : 46ff7e: 48 89 75 c8 mov %rsi,-0x38(%rbp) 1.23 : 46ff82: 48 89 55 c0 mov %rdx,-0x40(%rbp) : bits8 *bitP; : int bitmask; : int i; : int numberOfAttributes = tupleDesc->natts; 0.38 : 46ff86: 8b 07 mov (%rdi),%eax : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) 0.31 : 46ff88: 4d 85 db test %r11,%r11 : uint16 *infomask, bits8 *bit) : { : bits8 *bitP; : int bitmask; : int i; : int numberOfAttributes = tupleDesc->natts; 0.27 : 46ff8b: 89 45 d4 mov %eax,-0x2c(%rbp) : Form_pg_attribute *att = tupleDesc->attrs; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:142 0.73 : 46ff8e: 48 8b 47 08 mov 0x8(%rdi),%rax : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) 0.23 : 46ff92: 74 0a je 46ff9e : { : bitP = &bit[-1]; 0.00 : 46ff94: 4d 8d 53 ff lea -0x1(%r11),%r10 0.12 : 46ff98: 41 bf 80 00 00 00 mov $0x80,%r15d : /* just to keep compiler quiet */ : bitP = NULL; : bitmask = 0; : } : : *infomask &= ~(HEAP_HASNULL | HEAP_HASVARWIDTH | HEAP_HASEXTERNAL); 0.19 : 46ff9e: 66 41 83 21 f8 andw $0xfff8,(%r9) : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 1.54 : 46ffa3: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.23 : 46ffa6: 85 c9 test %ecx,%ecx 0.00 : 46ffa8: 0f 8e 5c 01 00 00 jle 47010a 0.50 : 46ffae: 49 89 c0 mov %rax,%r8 0.08 : 46ffb1: 45 31 f6 xor %r14d,%r14d 0.54 : 46ffb4: eb 21 jmp 46ffd7 0.00 : 46ffb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46ffbd: 00 00 00 : bitmask = 1; : } : : if (isnull[i]) : { : *infomask |= HEAP_HASNULL; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:179 4.45 : 46ffc0: 66 41 83 09 01 orw $0x1,(%r9) : Assert(att[i]->attlen > 0); : data_length = att[i]->attlen; : memcpy(data, DatumGetPointer(values[i]), data_length); : } : : data += data_length; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:251 7.22 : 46ffc5: 49 83 c6 01 add $0x1,%r14 0.04 : 46ffc9: 49 83 c0 08 add $0x8,%r8 : bitmask = 0; : } : : *infomask &= ~(HEAP_HASNULL | HEAP_HASVARWIDTH | HEAP_HASEXTERNAL); : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 2.34 : 46ffcd: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 0.00 : 46ffd1: 0f 8e 33 01 00 00 jle 47010a : { : Size data_length; : : if (bit != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:166 2.61 : 46ffd7: 4d 85 db test %r11,%r11 0.00 : 46ffda: 74 1e je 46fffa : { : if (bitmask != HIGHBIT) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:168 1.73 : 46ffdc: 41 81 ff 80 00 00 00 cmp $0x80,%r15d 0.00 : 46ffe3: 0f 84 37 01 00 00 je 470120 : bitmask <<= 1; 0.00 : 46ffe9: 45 01 ff add %r15d,%r15d : bitP += 1; : *bitP = 0x0; : bitmask = 1; : } : : if (isnull[i]) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:177 2.19 : 46ffec: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.96 : 46fff0: 42 80 3c 32 00 cmpb $0x0,(%rdx,%r14,1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:177 8.91 : 46fff5: 75 c9 jne 46ffc0 : { : *infomask |= HEAP_HASNULL; : continue; : } : : *bitP |= bitmask; 0.19 : 46fff7: 45 08 3a or %r15b,(%r10) : /* : * XXX we use the att_align macros on the pointer value itself, not on : * an offset. This is a bit of a hack. : */ : : if (att[i]->attbyval) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 2.42 : 46fffa: 49 8b 08 mov (%r8),%rcx 0.65 : 46fffd: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 6.99 : 470001: 74 7d je 470080 : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 0.96 : 470003: 0f b6 41 5e movzbl 0x5e(%rcx),%eax 0.31 : 470007: 3c 69 cmp $0x69,%al 0.00 : 470009: 0f 84 f1 01 00 00 je 470200 0.00 : 47000f: 3c 63 cmp $0x63,%al 0.00 : 470011: 74 10 je 470023 0.00 : 470013: 3c 64 cmp $0x64,%al 0.00 : 470015: 0f 84 55 02 00 00 je 470270 0.00 : 47001b: 49 83 c5 01 add $0x1,%r13 0.00 : 47001f: 49 83 e5 fe and $0xfffffffffffffffe,%r13 : store_att_byval(data, values[i], att[i]->attlen); 0.00 : 470023: 0f b7 41 4c movzwl 0x4c(%rcx),%eax 0.00 : 470027: 66 83 f8 02 cmp $0x2,%ax 0.00 : 47002b: 0f 84 e5 01 00 00 je 470216 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.58 : 470031: 0f 8f 01 01 00 00 jg 470138 0.00 : 470037: 66 83 e8 01 sub $0x1,%ax 0.00 : 47003b: 0f 84 07 02 00 00 je 470248 0.00 : 470041: ba 30 f7 7a 00 mov $0x7af730,%edx 0.00 : 470046: be c3 00 00 00 mov $0xc3,%esi 0.00 : 47004b: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 470050: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 470054: e8 c7 b3 30 00 callq 77b420 0.00 : 470059: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 47005d: be 2f f6 7a 00 mov $0x7af62f,%esi 0.00 : 470062: bf 14 00 00 00 mov $0x14,%edi 0.00 : 470067: 49 8b 00 mov (%r8),%rax 0.00 : 47006a: 0f bf 50 4c movswl 0x4c(%rax),%edx 0.00 : 47006e: 31 c0 xor %eax,%eax 0.00 : 470070: e8 bb b1 30 00 callq 77b230 0.00 : 470075: e8 56 94 ff ff callq 4694d0 0.00 : 47007a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : data_length = att[i]->attlen; : } : else if (att[i]->attlen == -1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:198 1.31 : 470080: 0f b7 41 4c movzwl 0x4c(%rcx),%eax 0.38 : 470084: 66 83 f8 ff cmp $0xffff,%ax 0.00 : 470088: 0f 84 da 00 00 00 je 470168 : att[i]->attalign); : data_length = VARSIZE(val); : memcpy(data, val, data_length); : } : } : else if (att[i]->attlen == -2) 0.00 : 47008e: 66 83 f8 fe cmp $0xfffe,%ax 0.00 : 470092: 0f 84 e8 01 00 00 je 470280 : memcpy(data, DatumGetPointer(values[i]), data_length); : } : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.00 : 470098: 0f b6 49 5e movzbl 0x5e(%rcx),%ecx 0.00 : 47009c: 80 f9 69 cmp $0x69,%cl 0.00 : 47009f: 0f 84 bb 01 00 00 je 470260 0.00 : 4700a5: 80 f9 63 cmp $0x63,%cl 0.00 : 4700a8: 74 14 je 4700be 0.00 : 4700aa: 80 f9 64 cmp $0x64,%cl 0.00 : 4700ad: 0f 1f 00 nopl (%rax) 0.00 : 4700b0: 0f 84 3a 02 00 00 je 4702f0 0.00 : 4700b6: 49 83 c5 01 add $0x1,%r13 0.00 : 4700ba: 49 83 e5 fe and $0xfffffffffffffffe,%r13 : Assert(att[i]->attlen > 0); : data_length = att[i]->attlen; : memcpy(data, DatumGetPointer(values[i]), data_length); 0.00 : 4700be: 48 8b 55 c8 mov -0x38(%rbp),%rdx : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); : Assert(att[i]->attlen > 0); : data_length = att[i]->attlen; 0.00 : 4700c2: 4c 0f bf e0 movswq %ax,%r12 : memcpy(data, DatumGetPointer(values[i]), data_length); 0.00 : 4700c6: 4c 89 ef mov %r13,%rdi 0.00 : 4700c9: 4a 8b 34 f2 mov (%rdx,%r14,8),%rsi 0.00 : 4700cd: 4c 89 e2 mov %r12,%rdx 0.00 : 4700d0: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 4700d4: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 4700d8: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.00 : 4700dc: 4c 89 5d a0 mov %r11,-0x60(%rbp) 0.00 : 4700e0: e8 0b 9b ff ff callq 469bf0 0.00 : 4700e5: 4c 8b 5d a0 mov -0x60(%rbp),%r11 0.00 : 4700e9: 4c 8b 55 a8 mov -0x58(%rbp),%r10 0.00 : 4700ed: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 4700f1: 4c 8b 45 b8 mov -0x48(%rbp),%r8 : } : : data += data_length; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:251 1.65 : 4700f5: 4d 01 e5 add %r12,%r13 1.15 : 4700f8: 49 83 c6 01 add $0x1,%r14 0.42 : 4700fc: 49 83 c0 08 add $0x8,%r8 : bitmask = 0; : } : : *infomask &= ~(HEAP_HASNULL | HEAP_HASVARWIDTH | HEAP_HASEXTERNAL); : : for (i = 0; i < numberOfAttributes; i++) 0.46 : 470100: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 0.00 : 470104: 0f 8f cd fe ff ff jg 46ffd7 : : data += data_length; : } : : Assert((data - start) == data_size); : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 2.15 : 47010a: 48 83 c4 38 add $0x38,%rsp 0.19 : 47010e: 5b pop %rbx 0.77 : 47010f: 41 5c pop %r12 0.00 : 470111: 41 5d pop %r13 0.58 : 470113: 41 5e pop %r14 0.15 : 470115: 41 5f pop %r15 0.58 : 470117: c9 leaveq 0.92 : 470118: c3 retq 0.00 : 470119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : if (bitmask != HIGHBIT) : bitmask <<= 1; : else : { : bitP += 1; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:172 0.54 : 470120: 49 83 c2 01 add $0x1,%r10 : *bitP = 0x0; 0.31 : 470124: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 47012a: 41 c6 02 00 movb $0x0,(%r10) 0.46 : 47012e: e9 b9 fe ff ff jmpq 46ffec 0.00 : 470133: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); : store_att_byval(data, values[i], att[i]->attlen); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 1.61 : 470138: 66 83 f8 04 cmp $0x4,%ax 0.38 : 47013c: 0f 84 ee 00 00 00 je 470230 0.12 : 470142: 66 83 f8 08 cmp $0x8,%ax 0.00 : 470146: 0f 85 f5 fe ff ff jne 470041 0.12 : 47014c: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.04 : 470150: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 0.38 : 470154: 49 89 45 00 mov %rax,0x0(%r13) : data_length = att[i]->attlen; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:196 3.80 : 470158: 49 8b 00 mov (%r8),%rax 0.23 : 47015b: 4c 0f bf 60 4c movswq 0x4c(%rax),%r12 0.77 : 470160: eb 93 jmp 4700f5 0.00 : 470162: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else if (att[i]->attlen == -1) : { : /* varlena */ : Pointer val = DatumGetPointer(values[i]); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:201 1.19 : 470168: 48 8b 45 c8 mov -0x38(%rbp),%rax : : *infomask |= HEAP_HASVARWIDTH; 0.31 : 47016c: 41 0f b7 11 movzwl (%r9),%edx : data_length = att[i]->attlen; : } : else if (att[i]->attlen == -1) : { : /* varlena */ : Pointer val = DatumGetPointer(values[i]); 0.04 : 470170: 4a 8b 34 f0 mov (%rax,%r14,8),%rsi : : *infomask |= HEAP_HASVARWIDTH; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:203 1.04 : 470174: 89 d0 mov %edx,%eax 0.31 : 470176: 83 c8 02 or $0x2,%eax 0.23 : 470179: 66 41 89 01 mov %ax,(%r9) : if (VARATT_IS_EXTERNAL(val)) 0.08 : 47017d: 0f b6 06 movzbl (%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:204 2.34 : 470180: 3c 01 cmp $0x1,%al 0.00 : 470182: 0f 84 38 01 00 00 je 4702c0 : *infomask |= HEAP_HASEXTERNAL; : /* no alignment, since it's short by definition */ : data_length = VARSIZE_EXTERNAL(val); : memcpy(data, val, data_length); : } : else if (VARATT_IS_SHORT(val)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:211 0.61 : 470188: 0f b6 d0 movzbl %al,%edx 0.00 : 47018b: f6 c2 01 test $0x1,%dl 0.00 : 47018e: 0f 85 6c 01 00 00 jne 470300 : { : /* no alignment for short varlenas */ : data_length = VARSIZE_SHORT(val); : memcpy(data, val, data_length); : } : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && 0.00 : 470194: 49 8b 00 mov (%r8),%rax 0.00 : 470197: 80 78 5d 70 cmpb $0x70,0x5d(%rax) 0.00 : 47019b: 74 09 je 4701a6 0.00 : 47019d: 83 e2 03 and $0x3,%edx 0.00 : 4701a0: 0f 84 6a 01 00 00 je 470310 0.00 : 4701a6: 8b 0e mov (%rsi),%ecx 0.00 : 4701a8: c1 e9 02 shr $0x2,%ecx : memcpy(data + 1, VARDATA(val), data_length - 1); : } : else : { : /* full 4-byte header varlena */ : data = (char *) att_align_nominal(data, 0.00 : 4701ab: 0f b6 40 5e movzbl 0x5e(%rax),%eax 0.00 : 4701af: 3c 69 cmp $0x69,%al 0.00 : 4701b1: 0f 84 99 01 00 00 je 470350 0.00 : 4701b7: 3c 63 cmp $0x63,%al 0.00 : 4701b9: 74 10 je 4701cb 0.00 : 4701bb: 3c 64 cmp $0x64,%al 0.00 : 4701bd: 0f 84 9a 01 00 00 je 47035d 0.00 : 4701c3: 49 83 c5 01 add $0x1,%r13 0.00 : 4701c7: 49 83 e5 fe and $0xfffffffffffffffe,%r13 : att[i]->attalign); : data_length = VARSIZE(val); 0.00 : 4701cb: 41 89 cc mov %ecx,%r12d : memcpy(data, val, data_length); 0.50 : 4701ce: 4c 89 e2 mov %r12,%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:231 0.77 : 4701d1: 4c 89 ef mov %r13,%rdi 0.00 : 4701d4: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.50 : 4701d8: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.27 : 4701dc: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.77 : 4701e0: 4c 89 5d a0 mov %r11,-0x60(%rbp) 0.38 : 4701e4: e8 07 9a ff ff callq 469bf0 0.54 : 4701e9: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.35 : 4701ed: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.23 : 4701f1: 4c 8b 55 a8 mov -0x58(%rbp),%r10 0.35 : 4701f5: 4c 8b 5d a0 mov -0x60(%rbp),%r11 0.31 : 4701f9: e9 f7 fe ff ff jmpq 4700f5 0.00 : 4701fe: 66 90 xchg %ax,%ax : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); : store_att_byval(data, values[i], att[i]->attlen); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.92 : 470200: 0f b7 41 4c movzwl 0x4c(%rcx),%eax : */ : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.46 : 470204: 49 83 c5 03 add $0x3,%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 0.96 : 470208: 49 83 e5 fc and $0xfffffffffffffffc,%r13 : store_att_byval(data, values[i], att[i]->attlen); 0.19 : 47020c: 66 83 f8 02 cmp $0x2,%ax 0.00 : 470210: 0f 85 1b fe ff ff jne 470031 0.00 : 470216: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 47021a: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 0.00 : 47021e: 66 41 89 45 00 mov %ax,0x0(%r13) 0.00 : 470223: e9 30 ff ff ff jmpq 470158 0.00 : 470228: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47022f: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 2.53 : 470230: 48 8b 55 c8 mov -0x38(%rbp),%rdx 1.61 : 470234: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 3.11 : 470238: 41 89 45 00 mov %eax,0x0(%r13) 1.34 : 47023c: e9 17 ff ff ff jmpq 470158 0.00 : 470241: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 470248: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 47024c: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 0.00 : 470250: 41 88 45 00 mov %al,0x0(%r13) 0.00 : 470254: e9 ff fe ff ff jmpq 470158 0.00 : 470259: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : memcpy(data, DatumGetPointer(values[i]), data_length); : } : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.00 : 470260: 49 83 c5 03 add $0x3,%r13 0.00 : 470264: 49 83 e5 fc and $0xfffffffffffffffc,%r13 0.00 : 470268: e9 51 fe ff ff jmpq 4700be 0.00 : 47026d: 0f 1f 00 nopl (%rax) : */ : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.12 : 470270: 49 83 c5 07 add $0x7,%r13 0.08 : 470274: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 470278: e9 a6 fd ff ff jmpq 470023 0.00 : 47027d: 0f 1f 00 nopl (%rax) : } : } : else if (att[i]->attlen == -2) : { : /* cstring ... never needs alignment */ : *infomask |= HEAP_HASVARWIDTH; 0.00 : 470280: 66 41 83 09 02 orw $0x2,(%r9) : Assert(att[i]->attalign == 'c'); : data_length = strlen(DatumGetCString(values[i])) + 1; 0.00 : 470285: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 470289: 4a 8b 1c f0 mov (%rax,%r14,8),%rbx 0.00 : 47028d: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 470291: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 470295: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.00 : 470299: 4c 89 5d a0 mov %r11,-0x60(%rbp) 0.00 : 47029d: 48 89 df mov %rbx,%rdi 0.00 : 4702a0: e8 ab 95 ff ff callq 469850 0.00 : 4702a5: 4c 8d 60 01 lea 0x1(%rax),%r12 : memcpy(data, DatumGetPointer(values[i]), data_length); 0.00 : 4702a9: 48 89 de mov %rbx,%rsi 0.00 : 4702ac: 4c 89 ef mov %r13,%rdi 0.00 : 4702af: 4c 89 e2 mov %r12,%rdx 0.00 : 4702b2: e9 2d ff ff ff jmpq 4701e4 0.00 : 4702b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4702be: 00 00 : Pointer val = DatumGetPointer(values[i]); : : *infomask |= HEAP_HASVARWIDTH; : if (VARATT_IS_EXTERNAL(val)) : { : *infomask |= HEAP_HASEXTERNAL; 0.00 : 4702c0: 83 ca 06 or $0x6,%edx : /* no alignment, since it's short by definition */ : data_length = VARSIZE_EXTERNAL(val); 0.00 : 4702c3: 41 bc 0a 00 00 00 mov $0xa,%r12d : Pointer val = DatumGetPointer(values[i]); : : *infomask |= HEAP_HASVARWIDTH; : if (VARATT_IS_EXTERNAL(val)) : { : *infomask |= HEAP_HASEXTERNAL; 0.00 : 4702c9: 66 41 89 11 mov %dx,(%r9) : /* no alignment, since it's short by definition */ : data_length = VARSIZE_EXTERNAL(val); 0.00 : 4702cd: 0f b6 46 01 movzbl 0x1(%rsi),%eax 0.00 : 4702d1: 3c 01 cmp $0x1,%al 0.00 : 4702d3: 0f 84 f5 fe ff ff je 4701ce 0.00 : 4702d9: 3c 12 cmp $0x12,%al 0.00 : 4702db: 41 bc 03 00 00 00 mov $0x3,%r12d 0.00 : 4702e1: ba 12 00 00 00 mov $0x12,%edx 0.00 : 4702e6: 4c 0f 44 e2 cmove %rdx,%r12 0.00 : 4702ea: e9 df fe ff ff jmpq 4701ce 0.00 : 4702ef: 90 nop : memcpy(data, DatumGetPointer(values[i]), data_length); : } : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.00 : 4702f0: 49 83 c5 07 add $0x7,%r13 0.00 : 4702f4: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 4702f8: e9 c1 fd ff ff jmpq 4700be 0.00 : 4702fd: 0f 1f 00 nopl (%rax) : memcpy(data, val, data_length); : } : else if (VARATT_IS_SHORT(val)) : { : /* no alignment for short varlenas */ : data_length = VARSIZE_SHORT(val); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:214 0.73 : 470300: d0 e8 shr %al 0.15 : 470302: 44 0f b6 e0 movzbl %al,%r12d 0.69 : 470306: e9 c3 fe ff ff jmpq 4701ce 0.00 : 47030b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : memcpy(data, val, data_length); : } : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && 0.00 : 470310: 8b 0e mov (%rsi),%ecx 0.00 : 470312: c1 e9 02 shr $0x2,%ecx 0.00 : 470315: 8d 51 fc lea -0x4(%rcx),%edx 0.00 : 470318: 4c 8d 62 01 lea 0x1(%rdx),%r12 0.00 : 47031c: 49 83 fc 7f cmp $0x7f,%r12 0.00 : 470320: 0f 87 85 fe ff ff ja 4701ab : VARATT_CAN_MAKE_SHORT(val)) : { : /* convert to short varlena -- no alignment */ : data_length = VARATT_CONVERTED_SHORT_SIZE(val); : SET_VARSIZE_SHORT(data, data_length); 0.00 : 470326: 43 8d 04 24 lea (%r12,%r12,1),%eax : memcpy(data + 1, VARDATA(val), data_length - 1); 0.00 : 47032a: 49 8d 7d 01 lea 0x1(%r13),%rdi 0.00 : 47032e: 48 83 c6 04 add $0x4,%rsi 0.00 : 470332: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 470336: 4c 89 4d b0 mov %r9,-0x50(%rbp) : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && : VARATT_CAN_MAKE_SHORT(val)) : { : /* convert to short varlena -- no alignment */ : data_length = VARATT_CONVERTED_SHORT_SIZE(val); : SET_VARSIZE_SHORT(data, data_length); 0.00 : 47033a: 83 c8 01 or $0x1,%eax : memcpy(data + 1, VARDATA(val), data_length - 1); 0.00 : 47033d: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.00 : 470341: 4c 89 5d a0 mov %r11,-0x60(%rbp) : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && : VARATT_CAN_MAKE_SHORT(val)) : { : /* convert to short varlena -- no alignment */ : data_length = VARATT_CONVERTED_SHORT_SIZE(val); : SET_VARSIZE_SHORT(data, data_length); 0.00 : 470345: 41 88 45 00 mov %al,0x0(%r13) 0.00 : 470349: e9 96 fe ff ff jmpq 4701e4 0.00 : 47034e: 66 90 xchg %ax,%ax : memcpy(data + 1, VARDATA(val), data_length - 1); : } : else : { : /* full 4-byte header varlena */ : data = (char *) att_align_nominal(data, 0.00 : 470350: 49 83 c5 03 add $0x3,%r13 0.00 : 470354: 49 83 e5 fc and $0xfffffffffffffffc,%r13 0.00 : 470358: e9 6e fe ff ff jmpq 4701cb 0.00 : 47035d: 49 83 c5 07 add $0x7,%r13 0.00 : 470361: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 470365: e9 61 fe ff ff jmpq 4701cb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 52.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 12.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 3.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 1.98 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 1.98 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1645 1.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1644 1.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1645 1.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1644 1.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 1.20 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1586 1.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1576 1.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1587 1.01 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1587 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1596 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:743 0.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1576 0.74 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1576 0.74 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.66 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 0.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 0.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1576 0.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 0.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1597 0.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f3a0 : : /* : * LWLockRelease - release a previously acquired lock : */ : void : LWLockRelease(LWLock *lock) : { 0.35 : 68f3a0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 0.62 : 68f3a1: 48 89 e5 mov %rsp,%rbp 1.55 : 68f3a4: 41 55 push %r13 1.98 : 68f3a6: 41 54 push %r12 0.35 : 68f3a8: 49 89 fc mov %rdi,%r12 0.81 : 68f3ab: 53 push %rbx 0.93 : 68f3ac: 48 83 ec 18 sub $0x18,%rsp : : /* : * Remove lock from list of locks held. Usually, but not always, it will : * be the latest-acquired lock; so search array backwards. : */ : for (i = num_held_lwlocks; --i >= 0;) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1576 1.12 : 68f3b0: 8b 35 52 e6 4e 00 mov 0x4ee652(%rip),%esi # b7da08 0.77 : 68f3b6: 89 f0 mov %esi,%eax 0.62 : 68f3b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68f3bf: 00 0.74 : 68f3c0: 83 e8 01 sub $0x1,%eax 0.23 : 68f3c3: 0f 88 1f 02 00 00 js 68f5e8 : { : if (lock == held_lwlocks[i].lock) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 0.66 : 68f3c9: 48 63 d0 movslq %eax,%rdx 0.50 : 68f3cc: 41 b9 40 da b7 00 mov $0xb7da40,%r9d 0.62 : 68f3d2: 48 89 d1 mov %rdx,%rcx 0.35 : 68f3d5: 48 c1 e1 04 shl $0x4,%rcx 0.81 : 68f3d9: 48 8b 99 40 da b7 00 mov 0xb7da40(%rcx),%rbx 3.64 : 68f3e0: 4c 39 e3 cmp %r12,%rbx 0.00 : 68f3e3: 75 db jne 68f3c0 : break; : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1586 1.20 : 68f3e5: 44 8d 46 ff lea -0x1(%rsi),%r8d : */ : for (i = num_held_lwlocks; --i >= 0;) : { : if (lock == held_lwlocks[i].lock) : { : mode = held_lwlocks[i].mode; 0.15 : 68f3e9: 44 8b 91 48 da b7 00 mov 0xb7da48(%rcx),%r10d : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1587 1.12 : 68f3f0: 41 39 c0 cmp %eax,%r8d : break; : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; 0.27 : 68f3f3: 44 89 05 0e e6 4e 00 mov %r8d,0x4ee60e(%rip) # b7da08 : for (; i < num_held_lwlocks; i++) 1.01 : 68f3fa: 7f 09 jg 68f405 0.08 : 68f3fc: eb 3a jmp 68f438 0.00 : 68f3fe: 66 90 xchg %ax,%ax : : /* : * Remove lock from list of locks held. Usually, but not always, it will : * be the latest-acquired lock; so search array backwards. : */ : for (i = num_held_lwlocks; --i >= 0;) 0.00 : 68f400: 89 f0 mov %esi,%eax 0.00 : 68f402: 48 89 fa mov %rdi,%rdx : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) : held_lwlocks[i] = held_lwlocks[i + 1]; 0.00 : 68f405: 8d 70 01 lea 0x1(%rax),%esi 0.00 : 68f408: 48 89 d1 mov %rdx,%rcx 0.00 : 68f40b: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 68f40f: 48 63 fe movslq %esi,%rdi 0.00 : 68f412: 48 89 fa mov %rdi,%rdx 0.00 : 68f415: 48 c1 e2 04 shl $0x4,%rdx : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) 0.00 : 68f419: 41 39 f0 cmp %esi,%r8d : held_lwlocks[i] = held_lwlocks[i + 1]; 0.00 : 68f41c: 48 8b 82 40 da b7 00 mov 0xb7da40(%rdx),%rax 0.00 : 68f423: 48 89 81 40 da b7 00 mov %rax,0xb7da40(%rcx) 0.00 : 68f42a: 48 8b 82 48 da b7 00 mov 0xb7da48(%rdx),%rax 0.00 : 68f431: 49 89 44 09 08 mov %rax,0x8(%r9,%rcx,1) : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) 0.00 : 68f436: 7f c8 jg 68f400 : : /* : * Release my hold on lock, after that it can immediately be acquired by : * others, even if we still have to wakeup other waiters. : */ : if (mode == LW_EXCLUSIVE) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1596 0.81 : 68f438: 45 85 d2 test %r10d,%r10d 0.27 : 68f43b: 0f 84 77 01 00 00 je 68f5b8 : lockcount = pg_atomic_sub_fetch_u32(&lock->lockcount, EXCLUSIVE_LOCK); : else : lockcount = pg_atomic_sub_fetch_u32(&lock->lockcount, 1); 0.46 : 68f441: 49 8d 54 24 04 lea 0x4(%r12),%rdx : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.74 : 68f446: b8 ff ff ff ff mov $0xffffffff,%eax 0.12 : 68f44b: f0 0f c1 02 lock xadd %eax,(%rdx) : #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) : #define PG_HAVE_ATOMIC_SUB_FETCH_U32 : static inline uint32 : pg_atomic_sub_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) : { : return pg_atomic_fetch_sub_u32_impl(ptr, sub_) - sub_; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 52.90 : 68f44f: 8d 50 ff lea -0x1(%rax),%edx : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); 0.04 : 68f452: 8b 43 08 mov 0x8(%rbx),%eax : /* : * Anybody we need to wakeup needs to have started queueing before we : * removed ourselves from the queue and the atomic operations above are : * full barriers. So we can just do plain read. : */ : if (pg_atomic_read_u32(&lock->nwaiters) > 0) 0.43 : 68f455: 85 c0 test %eax,%eax 0.00 : 68f457: 0f 84 3a 01 00 00 je 68f597 : /* : * If we just released an exclusive lock always wakeup waiters, even if : * lockcount is still > 0. A shared acquisition temporarily (and : * spuriously) might have increased the value. : */ : if (mode == LW_EXCLUSIVE && have_waiters) 0.00 : 68f45d: 45 85 d2 test %r10d,%r10d 0.00 : 68f460: 0f 85 fc 01 00 00 jne 68f662 : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f466: 4c 8d 6d d0 lea -0x30(%rbp),%r13 0.00 : 68f46a: 4c 89 6d d0 mov %r13,-0x30(%rbp) 0.00 : 68f46e: 4c 89 6d d8 mov %r13,-0x28(%rbp) : /* : * We're still waiting for backends to get scheduled, don't wake them up : * again. : */ : pg_read_barrier(); /* pairs with nwaiters-- */ : if (!BOOL_ACCESS_ONCE(lock->releaseOK)) 0.00 : 68f472: 0f b6 43 01 movzbl 0x1(%rbx),%eax 0.00 : 68f476: 84 c0 test %al,%al 0.00 : 68f478: 0f 84 19 01 00 00 je 68f597 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68f47e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f483: f0 86 03 lock xchg %al,(%rbx) : : /* Acquire mutex. Time spent holding mutex should be short! */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.39 : 68f486: 84 c0 test %al,%al 0.00 : 68f488: 0f 85 b2 01 00 00 jne 68f640 : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f48e: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.04 : 68f492: 48 85 d2 test %rdx,%rdx 0.00 : 68f495: 0f 84 bc 01 00 00 je 68f657 0.00 : 68f49b: 4d 8d 4c 24 10 lea 0x10(%r12),%r9 0.00 : 68f4a0: 48 8b 72 08 mov 0x8(%rdx),%rsi /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:743 0.81 : 68f4a4: 49 39 d1 cmp %rdx,%r9 0.00 : 68f4a7: 0f 84 aa 01 00 00 je 68f657 0.00 : 68f4ad: 31 ff xor %edi,%edi 0.00 : 68f4af: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 68f4b5: eb 23 jmp 68f4da 0.00 : 68f4b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68f4be: 00 00 : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : if (wokeup_somebody && waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f4c0: 80 7a fa 00 cmpb $0x0,-0x6(%rdx) 0.00 : 68f4c4: 75 1d jne 68f4e3 0.00 : 68f4c6: bf 01 00 00 00 mov $0x1,%edi : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f4cb: 49 39 f1 cmp %rsi,%r9 0.00 : 68f4ce: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 68f4d2: 74 6a je 68f53e 0.00 : 68f4d4: 48 89 f2 mov %rsi,%rdx 0.00 : 68f4d7: 48 89 c6 mov %rax,%rsi : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : if (wokeup_somebody && waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f4da: 40 84 ff test %dil,%dil : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); 0.00 : 68f4dd: 48 8d 4a b8 lea -0x48(%rdx),%rcx : : if (wokeup_somebody && waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f4e1: 75 dd jne 68f4c0 : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 68f4e3: 48 8b 51 48 mov 0x48(%rcx),%rdx 0.04 : 68f4e7: 48 8b 41 50 mov 0x50(%rcx),%rax 0.00 : 68f4eb: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.04 : 68f4ef: 48 8b 51 50 mov 0x50(%rcx),%rdx 0.00 : 68f4f3: 48 8b 41 48 mov 0x48(%rcx),%rax 0.00 : 68f4f7: 48 89 02 mov %rax,(%rdx) : * Insert a node at the end of the list. : */ : STATIC_IF_INLINE void : dlist_push_tail(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.04 : 68f4fa: 48 83 7d d8 00 cmpq $0x0,-0x28(%rbp) : continue; : : dlist_delete(&waiter->lwWaitLink); : dlist_push_tail(&wakeup, &waiter->lwWaitLink); 0.00 : 68f4ff: 48 8d 51 48 lea 0x48(%rcx),%rdx 0.00 : 68f503: 0f 84 cf 00 00 00 je 68f5d8 : dlist_init(head); : : node->next = &head->head; 0.00 : 68f509: 4c 89 69 50 mov %r13,0x50(%rcx) : node->prev = head->head.prev; 0.00 : 68f50d: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 68f511: 48 89 41 48 mov %rax,0x48(%rcx) : node->prev->next = node; 0.00 : 68f515: 48 89 50 08 mov %rdx,0x8(%rax) : head->head.prev = node; 0.00 : 68f519: 48 89 55 d0 mov %rdx,-0x30(%rbp) : : if (waiter->lwWaitMode != LW_WAIT_UNTIL_FREE) 0.00 : 68f51d: 0f b6 41 42 movzbl 0x42(%rcx),%eax 0.00 : 68f521: 3c 02 cmp $0x2,%al 0.00 : 68f523: 74 a6 je 68f4cb : : /* : * Once we've woken up an exclusive lock, there's no point in waking : * up anybody else. : */ : if(waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f525: 84 c0 test %al,%al 0.00 : 68f527: 0f 84 0b 01 00 00 je 68f638 0.00 : 68f52d: 45 31 c0 xor %r8d,%r8d : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f530: 49 39 f1 cmp %rsi,%r9 : : /* : * Once we've woken up an exclusive lock, there's no point in waking : * up anybody else. : */ : if(waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f533: bf 01 00 00 00 mov $0x1,%edi : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f538: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 68f53c: 75 96 jne 68f4d4 : if(waiter->lwWaitMode == LW_EXCLUSIVE) : break; : } : : /* The SpinLockRelease() below provides barrier semantics */ : BOOL_ACCESS_ONCE(lock->releaseOK) = releaseOK; 0.04 : 68f53e: 44 88 43 01 mov %r8b,0x1(%rbx) : SpinLockRelease(&lock->mutex); : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.00 : 68f542: 48 8b 4d d8 mov -0x28(%rbp),%rcx : : /* The SpinLockRelease() below provides barrier semantics */ : BOOL_ACCESS_ONCE(lock->releaseOK) = releaseOK; : : /* We are done updating shared state of the lock queue. */ : SpinLockRelease(&lock->mutex); 0.00 : 68f546: 41 c6 04 24 00 movb $0x0,(%r12) : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.00 : 68f54b: 48 85 c9 test %rcx,%rcx 0.00 : 68f54e: 74 47 je 68f597 0.04 : 68f550: 4c 39 e9 cmp %r13,%rcx 0.00 : 68f553: 48 8b 59 08 mov 0x8(%rcx),%rbx 0.00 : 68f557: 75 0d jne 68f566 0.00 : 68f559: eb 3c jmp 68f597 0.00 : 68f55b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68f560: 48 89 d9 mov %rbx,%rcx 0.00 : 68f563: 48 89 c3 mov %rax,%rbx : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); 0.04 : 68f566: 48 8d 79 b8 lea -0x48(%rcx),%rdi : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 68f56a: 48 8b 57 48 mov 0x48(%rdi),%rdx 0.00 : 68f56e: 48 8b 47 50 mov 0x50(%rdi),%rax 0.00 : 68f572: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.04 : 68f576: 48 8b 57 50 mov 0x50(%rdi),%rdx 0.00 : 68f57a: 48 8b 47 48 mov 0x48(%rdi),%rax 0.04 : 68f57e: 48 89 02 mov %rax,(%rdx) : : LOG_LWDEBUG("LWLockRelease", lock, "release waiter"); : dlist_delete(&waiter->lwWaitLink); : pg_write_barrier(); : waiter->lwWaiting = false; : PGSemaphoreUnlock(&waiter->sem); 0.00 : 68f581: 48 83 c7 10 add $0x10,%rdi : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : LOG_LWDEBUG("LWLockRelease", lock, "release waiter"); : dlist_delete(&waiter->lwWaitLink); : pg_write_barrier(); : waiter->lwWaiting = false; 0.00 : 68f585: c6 41 f9 00 movb $0x0,-0x7(%rcx) : PGSemaphoreUnlock(&waiter->sem); 0.00 : 68f589: e8 02 8b fa ff callq 638090 : SpinLockRelease(&lock->mutex); : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.00 : 68f58e: 4c 39 eb cmp %r13,%rbx 0.00 : 68f591: 48 8b 43 08 mov 0x8(%rbx),%rax 0.04 : 68f595: 75 c9 jne 68f560 : TRACE_POSTGRESQL_LWLOCK_RELEASE(T_NAME(lock), T_ID(lock)); : : /* : * Now okay to allow cancel/die interrupts. : */ : RESUME_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1644 1.63 : 68f597: 8b 05 fb aa 52 00 mov 0x52aafb(%rip),%eax # bba098 1.67 : 68f59d: 83 e8 01 sub $0x1,%eax 0.00 : 68f5a0: 89 05 f2 aa 52 00 mov %eax,0x52aaf2(%rip) # bba098 : } 0.46 : 68f5a6: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1645 1.98 : 68f5aa: 5b pop %rbx 0.00 : 68f5ab: 41 5c pop %r12 0.15 : 68f5ad: 41 5d pop %r13 0.23 : 68f5af: c9 leaveq 1.67 : 68f5b0: c3 retq 0.00 : 68f5b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Release my hold on lock, after that it can immediately be acquired by : * others, even if we still have to wakeup other waiters. : */ : if (mode == LW_EXCLUSIVE) : lockcount = pg_atomic_sub_fetch_u32(&lock->lockcount, EXCLUSIVE_LOCK); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1597 0.62 : 68f5b8: 49 8d 54 24 04 lea 0x4(%r12),%rdx 0.27 : 68f5bd: b8 00 00 00 c0 mov $0xc0000000,%eax 0.43 : 68f5c2: f0 0f c1 02 lock xadd %eax,(%rdx) : #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) : #define PG_HAVE_ATOMIC_SUB_FETCH_U32 : static inline uint32 : pg_atomic_sub_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) : { : return pg_atomic_fetch_sub_u32_impl(ptr, sub_) - sub_; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 12.97 : 68f5c6: 8d 90 00 00 00 c0 lea -0x40000000(%rax),%edx 0.04 : 68f5cc: e9 81 fe ff ff jmpq 68f452 0.00 : 68f5d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f5d8: 4c 89 6d d0 mov %r13,-0x30(%rbp) 0.00 : 68f5dc: 4c 89 6d d8 mov %r13,-0x28(%rbp) 0.00 : 68f5e0: e9 24 ff ff ff jmpq 68f509 0.00 : 68f5e5: 0f 1f 00 nopl (%rax) : mode = held_lwlocks[i].mode; : break; : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); 0.00 : 68f5e8: ba 10 d1 8a 00 mov $0x8ad110,%edx 0.00 : 68f5ed: be 31 06 00 00 mov $0x631,%esi 0.00 : 68f5f2: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f5f7: e8 24 be 0e 00 callq 77b420 0.00 : 68f5fc: 49 63 54 24 0c movslq 0xc(%r12),%rdx 0.00 : 68f601: 48 8b 05 08 e4 4e 00 mov 0x4ee408(%rip),%rax # b7da10 0.00 : 68f608: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68f60d: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 68f611: 31 d2 xor %edx,%edx 0.00 : 68f613: 4c 2b 66 08 sub 0x8(%rsi),%r12 0.00 : 68f617: 4c 89 e0 mov %r12,%rax 0.00 : 68f61a: 48 f7 76 10 divq 0x10(%rsi) 0.00 : 68f61e: 48 8b 16 mov (%rsi),%rdx 0.00 : 68f621: be bf d0 8a 00 mov $0x8ad0bf,%esi 0.00 : 68f626: 89 c1 mov %eax,%ecx 0.00 : 68f628: 31 c0 xor %eax,%eax 0.00 : 68f62a: e8 01 bc 0e 00 callq 77b230 0.00 : 68f62f: e8 9c 9e dd ff callq 4694d0 0.00 : 68f634: 0f 1f 40 00 nopl 0x0(%rax) : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f638: 45 31 c0 xor %r8d,%r8d 0.00 : 68f63b: e9 fe fe ff ff jmpq 68f53e : : /* Acquire mutex. Time spent holding mutex should be short! */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.04 : 68f640: ba e1 02 00 00 mov $0x2e1,%edx 0.00 : 68f645: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f64a: 48 89 df mov %rbx,%rdi 0.00 : 68f64d: e8 ee 09 00 00 callq 690040 0.00 : 68f652: e9 37 fe ff ff jmpq 68f48e : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f657: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 68f65d: e9 dc fe ff ff jmpq 68f53e : if (mode == LW_EXCLUSIVE && have_waiters) : check_waiters = true; : /* : * nobody has this locked anymore, potential exclusive lockers get a chance : */ : else if (lockcount == 0 && have_waiters) 0.00 : 68f662: 85 d2 test %edx,%edx 0.00 : 68f664: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 68f668: 0f 84 f8 fd ff ff je 68f466 0.00 : 68f66e: 66 90 xchg %ax,%ax 0.00 : 68f670: e9 22 ff ff ff jmpq 68f597 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2558 16.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2558 10.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2563 7.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2560 6.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2558 4.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2563 3.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2563 3.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2563 3.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2565 3.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2566 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2560 2.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2559 2.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2559 2.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2567 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3bd0 : : PG_RETURN_FLOAT8(result); : } : : Datum : float84mi(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2558 16.24 : 6d3bd0: 55 push %rbp 29.09 : 6d3bd1: 48 89 e5 mov %rsp,%rbp 0.05 : 6d3bd4: 53 push %rbx 6.27 : 6d3bd5: 48 89 fb mov %rdi,%rbx 0.05 : 6d3bd8: 48 83 ec 18 sub $0x18,%rsp : float8 arg1 = PG_GETARG_FLOAT8(0); 0.21 : 6d3bdc: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2559 2.98 : 6d3be0: e8 eb 9d 0a 00 callq 77d9d0 2.72 : 6d3be5: f2 0f 11 45 e0 movsd %xmm0,-0x20(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2560 7.04 : 6d3bea: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.46 : 6d3bee: e8 bd 9d 0a 00 callq 77d9b0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2560 3.03 : 6d3bf3: f3 0f 11 45 ec movss %xmm0,-0x14(%rbp) : float8 result; : : result = arg1 - arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2563 4.42 : 6d3bf8: 0f 14 c0 unpcklps %xmm0,%xmm0 0.00 : 6d3bfb: f2 0f 10 4d e0 movsd -0x20(%rbp),%xmm1 3.65 : 6d3c00: 0f 5a c0 cvtps2pd %xmm0,%xmm0 3.91 : 6d3c03: f2 0f 5c c8 subsd %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2563 10.48 : 6d3c07: f2 0f 11 4d f0 movsd %xmm1,-0x10(%rbp) : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2565 3.55 : 6d3c0c: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 6d3c10: e8 db 5e d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3c15: 85 c0 test %eax,%eax 0.00 : 6d3c17: 74 0e je 6d3c27 0.00 : 6d3c19: f2 0f 10 45 e0 movsd -0x20(%rbp),%xmm0 0.00 : 6d3c1e: e8 cd 5e d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3c23: 85 c0 test %eax,%eax 0.00 : 6d3c25: 74 19 je 6d3c40 : PG_RETURN_FLOAT8(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2566 3.39 : 6d3c27: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 : } 0.00 : 6d3c2c: 48 83 c4 18 add $0x18,%rsp 0.00 : 6d3c30: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2567 2.47 : 6d3c31: c9 leaveq : float8 result; : : result = arg1 - arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); : PG_RETURN_FLOAT8(result); 0.00 : 6d3c32: e9 89 9d 0a 00 jmpq 77d9c0 0.00 : 6d3c37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6d3c3e: 00 00 : float4 arg2 = PG_GETARG_FLOAT4(1); : float8 result; : : result = arg1 - arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); 0.00 : 6d3c40: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0 0.00 : 6d3c45: e8 e6 5a d9 ff callq 469730 <__isinff@plt> 0.00 : 6d3c4a: 85 c0 test %eax,%eax 0.00 : 6d3c4c: 75 d9 jne 6d3c27 0.00 : 6d3c4e: 45 31 c0 xor %r8d,%r8d 0.00 : 6d3c51: b9 da b8 8b 00 mov $0x8bb8da,%ecx 0.00 : 6d3c56: ba 05 0a 00 00 mov $0xa05,%edx 0.00 : 6d3c5b: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d3c60: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d3c65: e8 56 6e 0a 00 callq 77aac0 0.00 : 6d3c6a: 84 c0 test %al,%al 0.00 : 6d3c6c: 75 05 jne 6d3c73 0.00 : 6d3c6e: e8 5d 58 d9 ff callq 4694d0 0.00 : 6d3c73: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d3c78: 31 c0 xor %eax,%eax 0.00 : 6d3c7a: e8 21 8c 0a 00 callq 77c8a0 0.00 : 6d3c7f: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d3c84: 89 c3 mov %eax,%ebx 0.00 : 6d3c86: e8 c5 90 0a 00 callq 77cd50 0.00 : 6d3c8b: 89 de mov %ebx,%esi 0.00 : 6d3c8d: 89 c7 mov %eax,%edi 0.00 : 6d3c8f: 31 c0 xor %eax,%eax 0.00 : 6d3c91: e8 4a 69 0a 00 callq 77a5e0 0.00 : 6d3c96: eb d6 jmp 6d3c6e Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 23.13 ??:0 19.24 ??:0 18.90 ??:0 18.57 ??:0 15.52 ??:0 4.60 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000099390 <__gettimeofday>: ??:0 23.13 : 99390: 48 83 ec 08 sub $0x8,%rsp ??:0 4.60 : 99394: 48 8b 05 ad de 2d 00 mov 0x2ddead(%rip),%rax # 377248 <__vdso_gettimeofday> ??:0 15.52 : 9939b: 48 c1 c8 11 ror $0x11,%rax 18.90 : 9939f: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 993a6: 00 00 18.57 : 993a8: ff d0 callq *%rax 19.24 : 993aa: 3d 01 f0 ff ff cmp $0xfffff001,%eax 0.00 : 993af: 73 05 jae 993b6 <__gettimeofday+0x26> 0.04 : 993b1: 48 83 c4 08 add $0x8,%rsp 0.00 : 993b5: c3 retq 0.00 : 993b6: 48 8b 0d 7b 8a 2d 00 mov 0x2d8a7b(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 993bd: 31 d2 xor %edx,%edx 0.00 : 993bf: 48 29 c2 sub %rax,%rdx 0.00 : 993c2: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : 993c5: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : 993c9: eb e6 jmp 993b1 <__gettimeofday+0x21> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 34.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 15.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 10.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 3.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 1.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:344 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c6b50 : : PG_RETURN_BOOL(dateVal1 > dateVal2); : } : : Datum : date_ge(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 35.84 : 6c6b50: 48 8b 47 28 mov 0x28(%rdi),%rax 34.14 : 6c6b54: 39 47 20 cmp %eax,0x20(%rdi) 10.20 : 6c6b57: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 3.01 : 6c6b58: 48 89 e5 mov %rsp,%rbp : DateADT dateVal1 = PG_GETARG_DATEADT(0); : DateADT dateVal2 = PG_GETARG_DATEADT(1); : : PG_RETURN_BOOL(dateVal1 >= dateVal2); : } 0.11 : 6c6b5b: c9 leaveq : PG_RETURN_BOOL(dateVal1 > dateVal2); : } : : Datum : date_ge(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:339 15.54 : 6c6b5c: 0f 9d c0 setge %al /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:344 1.16 : 6c6b5f: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 10.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2769 6.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 6.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 5.66 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 5.66 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 5.14 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 4.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 4.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 4.20 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 4.01 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2769 3.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2784 2.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2785 2.59 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 2.40 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2787 2.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2787 1.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2766 1.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 1.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2766 1.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2769 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2771 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2778 1.04 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2787 0.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 0.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 0.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2785 0.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 0.71 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 0.66 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2784 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674e60 : : /* : * ReleaseBuffer -- release the pin on a buffer : */ : void : ReleaseBuffer(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 4.20 : 674e60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 5.66 : 674e61: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 2.59 : 674e64: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 5.66 : 674e68: 4c 89 65 f8 mov %r12,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 4.57 : 674e6c: 48 83 ec 10 sub $0x10,%rsp : volatile BufferDesc *bufHdr; : PrivateRefCountEntry *ref; : : if (!BufferIsValid(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2766 1.27 : 674e70: 85 ff test %edi,%edi : /* : * ReleaseBuffer -- release the pin on a buffer : */ : void : ReleaseBuffer(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 0.75 : 674e72: 89 fb mov %edi,%ebx : volatile BufferDesc *bufHdr; : PrivateRefCountEntry *ref; : : if (!BufferIsValid(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2766 1.79 : 674e74: 74 7f je 674ef5 : elog(ERROR, "bad buffer ID: %d", buffer); : : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2769 4.01 : 674e76: 89 fe mov %edi,%esi 1.08 : 674e78: 48 8b 3d 41 5a 54 00 mov 0x545a41(%rip),%rdi # bba8c0 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2769 10.23 : 674e7f: e8 7c 5a 12 00 callq 79a900 : : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2771 1.08 : 674e84: 85 db test %ebx,%ebx 0.00 : 674e86: 78 38 js 674ec0 : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; : : ref = GetPrivateRefCountEntry(buffer, false, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 6.55 : 674e88: 31 d2 xor %edx,%edx 0.38 : 674e8a: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 1.13 : 674e8c: 89 df mov %ebx,%edi : Assert(LocalRefCount[-buffer - 1] > 0); : LocalRefCount[-buffer - 1]--; : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2778 1.08 : 674e8e: 4c 8b 25 6b ac 54 00 mov 0x54ac6b(%rip),%r12 # bbfb00 : : ref = GetPrivateRefCountEntry(buffer, false, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 5.14 : 674e95: e8 86 f6 ff ff callq 674520 6.27 : 674e9a: 48 89 c2 mov %rax,%rdx : Assert(ref != NULL); : Assert(ref->refcount > 0); : : if (ref->refcount > 1) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2784 0.66 : 674e9d: 8b 40 04 mov 0x4(%rax),%eax 3.58 : 674ea0: 83 f8 01 cmp $0x1,%eax 0.00 : 674ea3: 7e 33 jle 674ed8 : ref->refcount--; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2785 2.64 : 674ea5: 83 e8 01 sub $0x1,%eax 0.85 : 674ea8: 89 42 04 mov %eax,0x4(%rdx) : else : UnpinBuffer(bufHdr, false); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 1.51 : 674eab: 48 8b 1c 24 mov (%rsp),%rbx 4.38 : 674eaf: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.90 : 674eb4: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 13.86 : 674eb5: c3 retq 0.00 : 674eb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 674ebd: 00 00 00 : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); : : if (BufferIsLocal(buffer)) : { : Assert(LocalRefCount[-buffer - 1] > 0); : LocalRefCount[-buffer - 1]--; 0.00 : 674ec0: f7 d3 not %ebx 0.00 : 674ec2: 48 63 c3 movslq %ebx,%rax 0.00 : 674ec5: 48 c1 e0 02 shl $0x2,%rax 0.00 : 674ec9: 48 03 05 50 82 50 00 add 0x508250(%rip),%rax # b7d120 0.00 : 674ed0: 83 28 01 subl $0x1,(%rax) : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); : } 0.00 : 674ed3: eb d6 jmp 674eab 0.00 : 674ed5: 0f 1f 00 nopl (%rax) : Assert(ref->refcount > 0); : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2787 1.04 : 674ed8: 48 63 c3 movslq %ebx,%rax : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 0.71 : 674edb: 48 8b 1c 24 mov (%rsp),%rbx : Assert(ref->refcount > 0); : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2787 2.36 : 674edf: 31 f6 xor %esi,%esi 0.38 : 674ee1: 48 c1 e0 06 shl $0x6,%rax 0.00 : 674ee5: 49 8d 7c 04 c0 lea -0x40(%r12,%rax,1),%rdi : } 0.38 : 674eea: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 0.90 : 674eef: c9 leaveq : Assert(ref->refcount > 0); : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2787 2.40 : 674ef0: e9 3b fe ff ff jmpq 674d30 : { : volatile BufferDesc *bufHdr; : PrivateRefCountEntry *ref; : : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); 0.00 : 674ef5: ba 34 a0 8a 00 mov $0x8aa034,%edx 0.00 : 674efa: be cf 0a 00 00 mov $0xacf,%esi 0.00 : 674eff: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 674f04: e8 17 65 10 00 callq 77b420 0.00 : 674f09: 31 d2 xor %edx,%edx 0.00 : 674f0b: be 5c 9d 8a 00 mov $0x8a9d5c,%esi 0.00 : 674f10: bf 14 00 00 00 mov $0x14,%edi 0.00 : 674f15: 31 c0 xor %eax,%eax 0.00 : 674f17: e8 14 63 10 00 callq 77b230 0.00 : 674f1c: e8 af 45 df ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:95 9.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:100 5.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:77 4.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:100 4.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:77 3.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:85 2.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:87 2.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:111 2.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:85 2.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:87 2.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:111 2.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:89 2.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:111 2.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 2.13 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:79 1.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:87 1.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:66 1.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:66 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:111 1.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:111 1.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:89 1.26 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:87 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:85 0.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 0.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:85 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 0.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a9440 : : TupleTableSlot *slot2, : int numCols, : AttrNumber *matchColIdx, : FmgrInfo *eqfunctions, : MemoryContext evalContext) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.58 : 5a9440: 55 push %rbp 0.55 : 5a9441: 48 89 e5 mov %rsp,%rbp 2.73 : 5a9444: 41 57 push %r15 1.42 : 5a9446: 49 89 cf mov %rcx,%r15 0.05 : 5a9449: 41 56 push %r14 1.80 : 5a944b: 41 55 push %r13 2.13 : 5a944d: 41 54 push %r12 0.98 : 5a944f: 41 89 d4 mov %edx,%r12d : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5a9452: 45 89 e5 mov %r12d,%r13d 0.60 : 5a9455: 53 push %rbx 1.97 : 5a9456: 4c 89 cb mov %r9,%rbx 1.20 : 5a9459: 48 83 ec 38 sub $0x38,%rsp 0.77 : 5a945d: 48 89 7d b8 mov %rdi,-0x48(%rbp) : MemoryContext oldContext; : bool result; : int i; : : /* Reset and switch into the temp context. */ : MemoryContextReset(evalContext); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:66 1.69 : 5a9461: 4c 89 cf mov %r9,%rdi : TupleTableSlot *slot2, : int numCols, : AttrNumber *matchColIdx, : FmgrInfo *eqfunctions, : MemoryContext evalContext) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:60 1.20 : 5a9464: 48 89 75 b0 mov %rsi,-0x50(%rbp) 0.22 : 5a9468: 4c 89 45 a8 mov %r8,-0x58(%rbp) : MemoryContext oldContext; : bool result; : int i; : : /* Reset and switch into the temp context. */ : MemoryContextReset(evalContext); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:66 1.48 : 5a946c: e8 3f f5 1e 00 callq 7989b0 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5a9471: 48 8b 05 e8 13 61 00 mov 0x6113e8(%rip),%rax # bba860 : : CurrentMemoryContext = context; 0.49 : 5a9478: 48 89 1d e1 13 61 00 mov %rbx,0x6113e1(%rip) # bba860 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 2.35 : 5a947f: 48 89 45 c0 mov %rax,-0x40(%rbp) 1.48 : 5a9483: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * comparing at the last field (least significant sort key). That's the : * most likely to be different if we are dealing with sorted input. : */ : result = true; : : for (i = numCols; --i >= 0;) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:77 5.19 : 5a9488: 41 83 ed 01 sub $0x1,%r13d 0.16 : 5a948c: 78 72 js 5a9500 : { : AttrNumber att = matchColIdx[i]; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:79 1.80 : 5a948e: 4d 63 e5 movslq %r13d,%r12 : Datum attr1, : attr2; : bool isNull1, : isNull2; : : attr1 = slot_getattr(slot1, att, &isNull1); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:85 0.71 : 5a9491: 48 8b 7d b8 mov -0x48(%rbp),%rdi 3.22 : 5a9495: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.22 : 5a9499: 43 0f bf 1c 67 movswl (%r15,%r12,2),%ebx 2.84 : 5a949e: 89 de mov %ebx,%esi 1.09 : 5a94a0: e8 5b 5f ec ff callq 46f400 : : attr2 = slot_getattr(slot2, att, &isNull2); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:87 1.26 : 5a94a5: 48 8b 7d b0 mov -0x50(%rbp),%rdi 2.79 : 5a94a9: 48 8d 55 d6 lea -0x2a(%rbp),%rdx 2.90 : 5a94ad: 89 de mov %ebx,%esi : Datum attr1, : attr2; : bool isNull1, : isNull2; : : attr1 = slot_getattr(slot1, att, &isNull1); 0.16 : 5a94af: 49 89 c6 mov %rax,%r14 : : attr2 = slot_getattr(slot2, att, &isNull2); 1.75 : 5a94b2: e8 49 5f ec ff callq 46f400 : : if (isNull1 != isNull2) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:89 2.51 : 5a94b7: 0f b6 55 d7 movzbl -0x29(%rbp),%edx 1.31 : 5a94bb: 3a 55 d6 cmp -0x2a(%rbp),%dl 0.00 : 5a94be: 75 21 jne 5a94e1 : { : result = false; /* one null and one not; they aren't equal */ : break; : } : : if (isNull1) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:95 13.06 : 5a94c0: 84 d2 test %dl,%dl 0.00 : 5a94c2: 75 c4 jne 5a9488 : continue; /* both are null, treat as equal */ : : /* Apply the type-specific equality function */ : : if (!DatumGetBool(FunctionCall2(&eqfunctions[i], 0.00 : 5a94c4: 4b 8d 3c 64 lea (%r12,%r12,2),%rdi 0.11 : 5a94c8: 31 f6 xor %esi,%esi 0.00 : 5a94ca: 48 89 c1 mov %rax,%rcx /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:100 4.54 : 5a94cd: 4c 89 f2 mov %r14,%rdx 0.00 : 5a94d0: 48 c1 e7 04 shl $0x4,%rdi 0.05 : 5a94d4: 48 03 7d a8 add -0x58(%rbp),%rdi 0.22 : 5a94d8: e8 53 4b 1d 00 callq 77e030 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:100 9.02 : 5a94dd: 84 c0 test %al,%al 0.00 : 5a94df: 75 a7 jne 5a9488 : * comparing at the last field (least significant sort key). That's the : * most likely to be different if we are dealing with sorted input. : */ : result = true; : : for (i = numCols; --i >= 0;) 0.00 : 5a94e1: 31 c0 xor %eax,%eax : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.48 : 5a94e3: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.44 : 5a94e7: 48 89 15 72 13 61 00 mov %rdx,0x611372(%rip) # bba860 : } : : MemoryContextSwitchTo(oldContext); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:111 2.79 : 5a94ee: 48 83 c4 38 add $0x38,%rsp 0.38 : 5a94f2: 5b pop %rbx 0.05 : 5a94f3: 41 5c pop %r12 2.46 : 5a94f5: 41 5d pop %r13 0.00 : 5a94f7: 41 5e pop %r14 1.48 : 5a94f9: 41 5f pop %r15 1.48 : 5a94fb: c9 leaveq 2.90 : 5a94fc: c3 retq 0.00 : 5a94fd: 0f 1f 00 nopl (%rax) : * comparing at the last field (least significant sort key). That's the : * most likely to be different if we are dealing with sorted input. : */ : result = true; : : for (i = numCols; --i >= 0;) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:77 3.93 : 5a9500: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5a9505: eb dc jmp 5a94e3 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1305 10.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1289 10.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1289 7.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1301 6.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1295 5.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1298 5.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 5.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1298 4.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1301 4.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1305 4.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 4.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 4.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1296 3.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 2.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1289 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1289 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077e0d0 : : * directly-computed parameter list. Note that neither arguments nor result : * are allowed to be NULL. : */ : Datum : FunctionCall1Coll(FmgrInfo *flinfo, Oid collation, Datum arg1) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1289 10.01 : 77e0d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1289 2.18 : 77e0d1: 48 89 f8 mov %rdi,%rax 2.13 : 77e0d4: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1289 10.45 : 77e0d7: 48 81 ec b0 03 00 00 sub $0x3b0,%rsp : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 1, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 1.02 : 77e0de: 48 89 bd 50 fc ff ff mov %rdi,-0x3b0(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 5.52 : 77e0e5: 48 c7 85 58 fc ff ff movq $0x0,-0x3a8(%rbp) 0.00 : 77e0ec: 00 00 00 00 : : fcinfo.arg[0] = arg1; : fcinfo.argnull[0] = false; : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1298 5.81 : 77e0f0: 48 8d bd 50 fc ff ff lea -0x3b0(%rbp),%rdi : FunctionCall1Coll(FmgrInfo *flinfo, Oid collation, Datum arg1) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 1, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1293 4.74 : 77e0f7: 48 c7 85 60 fc ff ff movq $0x0,-0x3a0(%rbp) 0.00 : 77e0fe: 00 00 00 00 4.35 : 77e102: 89 b5 68 fc ff ff mov %esi,-0x398(%rbp) 3.87 : 77e108: c6 85 6c fc ff ff 00 movb $0x0,-0x394(%rbp) 4.16 : 77e10f: 66 c7 85 6e fc ff ff movw $0x1,-0x392(%rbp) 0.00 : 77e116: 01 00 : : fcinfo.arg[0] = arg1; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1295 6.63 : 77e118: 48 89 95 70 fc ff ff mov %rdx,-0x390(%rbp) : fcinfo.argnull[0] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1296 4.02 : 77e11f: c6 45 90 00 movb $0x0,-0x70(%rbp) : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1298 5.22 : 77e123: ff 10 callq *(%rax) : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1301 4.93 : 77e125: 80 bd 6c fc ff ff 00 cmpb $0x0,-0x394(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1301 7.60 : 77e12c: 75 02 jne 77e130 : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1305 12.53 : 77e12e: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1305 4.84 : 77e12f: c3 retq : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 77e130: ba 60 52 8d 00 mov $0x8d5260,%edx 0.00 : 77e135: be 16 05 00 00 mov $0x516,%esi 0.00 : 77e13a: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77e13f: e8 dc d2 ff ff callq 77b420 0.00 : 77e144: 48 8b 85 50 fc ff ff mov -0x3b0(%rbp),%rax 0.00 : 77e14b: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 77e150: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77e155: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77e158: 31 c0 xor %eax,%eax 0.00 : 77e15a: e8 d1 d0 ff ff callq 77b230 0.00 : 77e15f: e8 6c b3 ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 81.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1870 2.99 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1872 2.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1870 2.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1901 2.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1874 2.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1857 1.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1857 1.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1858 1.49 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1901 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000675260 : : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1857 1.97 : 675260: 55 push %rbp : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.08 : 675261: b8 01 00 00 00 mov $0x1,%eax 0.00 : 675266: 48 89 e5 mov %rsp,%rbp 2.05 : 675269: 48 89 5d e8 mov %rbx,-0x18(%rbp) : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; 0.08 : 67526d: 48 63 df movslq %edi,%rbx : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { 0.00 : 675270: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 675274: 4c 89 65 f0 mov %r12,-0x10(%rbp) : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1858 1.73 : 675278: 48 c1 e3 06 shl $0x6,%rbx : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { 0.08 : 67527c: 48 83 ec 20 sub $0x20,%rsp : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; 0.00 : 675280: 48 03 1d 79 a8 54 00 add 0x54a879(%rip),%rbx # bbfb00 : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { 0.00 : 675287: 41 89 f5 mov %esi,%r13d : * as we mark pages dirty in access methods *before* logging changes with : * XLogInsert(): if someone marks the buffer dirty just after our check we : * don't worry because our checkpoint.redo points before log record for : * upcoming changes and so we are not required to write such dirty buffer. : */ : LockBufHdr(bufHdr); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1870 2.52 : 67528a: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.08 : 67528e: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1870 81.67 : 675291: 84 c0 test %al,%al 0.00 : 675293: 75 5b jne 6752f0 : : if (bufHdr->refcount == 0 && bufHdr->usage_count == 0) 0.08 : 675295: 8b 43 18 mov 0x18(%rbx),%eax 0.24 : 675298: 85 c0 test %eax,%eax 0.00 : 67529a: 75 0f jne 6752ab /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1872 2.99 : 67529c: 0f b7 43 16 movzwl 0x16(%rbx),%eax : result |= BUF_REUSABLE; : else if (skip_recently_used) : { : /* Caller told us not to write recently-used buffers */ : UnlockBufHdr(bufHdr); 0.00 : 6752a0: 41 bc 02 00 00 00 mov $0x2,%r12d : * don't worry because our checkpoint.redo points before log record for : * upcoming changes and so we are not required to write such dirty buffer. : */ : LockBufHdr(bufHdr); : : if (bufHdr->refcount == 0 && bufHdr->usage_count == 0) 0.00 : 6752a6: 66 85 c0 test %ax,%ax 0.00 : 6752a9: 74 08 je 6752b3 : result |= BUF_REUSABLE; : else if (skip_recently_used) 0.00 : 6752ab: 45 31 e4 xor %r12d,%r12d /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1874 2.12 : 6752ae: 45 84 ed test %r13b,%r13b 0.00 : 6752b1: 75 2d jne 6752e0 : /* Caller told us not to write recently-used buffers */ : UnlockBufHdr(bufHdr); : return result; : } : : if (!(bufHdr->flags & BM_VALID) || !(bufHdr->flags & BM_DIRTY)) 0.00 : 6752b3: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.24 : 6752b7: a8 02 test $0x2,%al 0.00 : 6752b9: 74 08 je 6752c3 0.00 : 6752bb: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6752bf: a8 01 test $0x1,%al 0.00 : 6752c1: 75 45 jne 675308 : { : /* It's clean, so nothing to do */ : UnlockBufHdr(bufHdr); 0.00 : 6752c3: c6 43 20 00 movb $0x0,0x20(%rbx) : : LWLockRelease(bufHdr->content_lock); : UnpinBuffer(bufHdr, true); : : return result | BUF_WRITTEN; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1901 1.49 : 6752c7: 44 89 e0 mov %r12d,%eax 0.00 : 6752ca: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.08 : 6752ce: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 6752d2: 4c 8b 6d f8 mov -0x8(%rbp),%r13 2.52 : 6752d6: c9 leaveq 0.00 : 6752d7: c3 retq 0.00 : 6752d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6752df: 00 : if (bufHdr->refcount == 0 && bufHdr->usage_count == 0) : result |= BUF_REUSABLE; : else if (skip_recently_used) : { : /* Caller told us not to write recently-used buffers */ : UnlockBufHdr(bufHdr); 0.00 : 6752e0: 45 31 e4 xor %r12d,%r12d 0.00 : 6752e3: c6 43 20 00 movb $0x0,0x20(%rbx) : : LWLockRelease(bufHdr->content_lock); : UnpinBuffer(bufHdr, true); : : return result | BUF_WRITTEN; : } 0.00 : 6752e7: eb de jmp 6752c7 0.00 : 6752e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * as we mark pages dirty in access methods *before* logging changes with : * XLogInsert(): if someone marks the buffer dirty just after our check we : * don't worry because our checkpoint.redo points before log record for : * upcoming changes and so we are not required to write such dirty buffer. : */ : LockBufHdr(bufHdr); 0.00 : 6752f0: ba 4e 07 00 00 mov $0x74e,%edx 0.00 : 6752f5: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 6752fa: e8 41 ad 01 00 callq 690040 0.00 : 6752ff: eb 94 jmp 675295 0.00 : 675301: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * Pin it, share-lock it, write it. (FlushBuffer will do nothing if the : * buffer is clean by the time we've locked it.) : */ : PinBuffer_Locked(bufHdr); 0.00 : 675308: 48 89 df mov %rbx,%rdi : FlushBuffer(bufHdr, NULL); : : LWLockRelease(bufHdr->content_lock); : UnpinBuffer(bufHdr, true); : : return result | BUF_WRITTEN; 0.00 : 67530b: 41 83 cc 01 or $0x1,%r12d : : /* : * Pin it, share-lock it, write it. (FlushBuffer will do nothing if the : * buffer is clean by the time we've locked it.) : */ : PinBuffer_Locked(bufHdr); 0.00 : 67530f: e8 bc f8 ff ff callq 674bd0 : LWLockAcquire(bufHdr->content_lock, LW_SHARED); 0.00 : 675314: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 675318: be 01 00 00 00 mov $0x1,%esi 0.00 : 67531d: e8 ce a7 01 00 callq 68faf0 : : FlushBuffer(bufHdr, NULL); 0.00 : 675322: 31 f6 xor %esi,%esi 0.00 : 675324: 48 89 df mov %rbx,%rdi 0.00 : 675327: e8 24 fc ff ff callq 674f50 : : LWLockRelease(bufHdr->content_lock); 0.00 : 67532c: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 675330: e8 6b a0 01 00 callq 68f3a0 : UnpinBuffer(bufHdr, true); 0.00 : 675335: be 01 00 00 00 mov $0x1,%esi 0.00 : 67533a: 48 89 df mov %rbx,%rdi 0.00 : 67533d: e8 ee f9 ff ff callq 674d30 : : return result | BUF_WRITTEN; : } 0.00 : 675342: eb 83 jmp 6752c7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 46.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:615 25.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:617 5.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:610 3.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:614 3.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:614 3.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:611 3.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:610 3.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:611 2.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:614 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:617 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a1a0 : : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerRememberBuffer(ResourceOwner owner, Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:610 5.20 : 79a1a0: 55 push %rbp : if (owner != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:611 3.74 : 79a1a1: 48 85 ff test %rdi,%rdi : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerRememberBuffer(ResourceOwner owner, Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:610 3.74 : 79a1a4: 48 89 e5 mov %rsp,%rbp : if (owner != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:611 3.64 : 79a1a7: 74 0f je 79a1b8 : { : Assert(owner->nbuffers < owner->maxbuffers); : owner->buffers[owner->nbuffers] = buffer; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:614 2.29 : 79a1a9: 48 63 57 20 movslq 0x20(%rdi),%rdx 3.79 : 79a1ad: 48 8b 47 28 mov 0x28(%rdi),%rax 3.79 : 79a1b1: 89 34 90 mov %esi,(%rax,%rdx,4) : owner->nbuffers++; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:615 46.15 : 79a1b4: 83 47 20 01 addl $0x1,0x20(%rdi) : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:617 27.65 : 79a1b8: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 56.29 ??:0 7.21 ??:0 5.78 ??:0 3.98 ??:0 3.55 ??:0 3.45 ??:0 2.23 ??:0 2.07 ??:0 2.02 ??:0 1.96 ??:0 1.70 ??:0 1.70 ??:0 1.33 ??:0 1.22 ??:0 1.11 ??:0 0.90 ??:0 0.74 ??:0 0.58 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000082bd0 : ??:0 2.07 : 82bd0: 49 89 f8 mov %rdi,%r8 0.74 : 82bd3: 48 81 ec 00 01 00 00 sub $0x100,%rsp 0.27 : 82bda: b9 20 00 00 00 mov $0x20,%ecx 1.11 : 82bdf: 48 89 e7 mov %rsp,%rdi 0.00 : 82be2: 31 c0 xor %eax,%eax 0.00 : 82be4: fc cld ??:0 56.29 : 82be5: f3 48 ab rep stos %rax,%es:(%rdi) ??:0 2.23 : 82be8: 48 8b 05 41 1d 2f 00 mov 0x2f1d41(%rip),%rax # 374930 3.98 : 82bef: 4c 89 c2 mov %r8,%rdx 0.05 : 82bf2: 48 83 fa 00 cmp $0x0,%rdx 0.00 : 82bf6: 48 0f 44 d0 cmove %rax,%rdx 3.45 : 82bfa: 48 85 d2 test %rdx,%rdx 0.00 : 82bfd: 0f 84 b3 00 00 00 je 82cb6 1.33 : 82c03: 48 89 f0 mov %rsi,%rax 0.00 : 82c06: 8a 08 mov (%rax),%cl 2.02 : 82c08: 84 c9 test %cl,%cl 0.00 : 82c0a: 74 28 je 82c34 1.22 : 82c0c: 88 0c 0c mov %cl,(%rsp,%rcx,1) ??:0 5.78 : 82c0f: 8a 48 01 mov 0x1(%rax),%cl 0.00 : 82c12: f6 c1 ff test $0xff,%cl 0.00 : 82c15: 74 1d je 82c34 0.00 : 82c17: 88 0c 0c mov %cl,(%rsp,%rcx,1) 0.05 : 82c1a: 8a 48 02 mov 0x2(%rax),%cl 0.00 : 82c1d: f6 c1 ff test $0xff,%cl 0.00 : 82c20: 74 12 je 82c34 0.00 : 82c22: 88 0c 0c mov %cl,(%rsp,%rcx,1) 0.00 : 82c25: 8a 48 03 mov 0x3(%rax),%cl 0.00 : 82c28: 48 83 c0 04 add $0x4,%rax 0.00 : 82c2c: 88 0c 0c mov %cl,(%rsp,%rcx,1) 0.00 : 82c2f: f6 c1 ff test $0xff,%cl 0.00 : 82c32: 75 d2 jne 82c06 0.00 : 82c34: 48 8d 42 fc lea -0x4(%rdx),%rax 0.11 : 82c38: 48 83 c0 04 add $0x4,%rax ??:0 1.70 : 82c3c: 8a 08 mov (%rax),%cl 0.11 : 82c3e: 84 0c 0c test %cl,(%rsp,%rcx,1) 0.00 : 82c41: 74 21 je 82c64 0.00 : 82c43: 8a 48 01 mov 0x1(%rax),%cl 0.00 : 82c46: 84 0c 0c test %cl,(%rsp,%rcx,1) 0.00 : 82c49: 74 16 je 82c61 0.00 : 82c4b: 8a 48 02 mov 0x2(%rax),%cl 0.00 : 82c4e: 84 0c 0c test %cl,(%rsp,%rcx,1) 0.00 : 82c51: 74 0b je 82c5e 0.00 : 82c53: 8a 48 03 mov 0x3(%rax),%cl 0.00 : 82c56: 84 0c 0c test %cl,(%rsp,%rcx,1) 0.00 : 82c59: 75 dd jne 82c38 0.00 : 82c5b: 48 ff c0 inc %rax 0.00 : 82c5e: 48 ff c0 inc %rax 0.00 : 82c61: 48 ff c0 inc %rax ??:0 7.21 : 82c64: 48 8d 50 fc lea -0x4(%rax),%rdx 0.00 : 82c68: 48 83 c2 04 add $0x4,%rdx 0.05 : 82c6c: 8a 0a mov (%rdx),%cl 0.00 : 82c6e: 38 0c 0c cmp %cl,(%rsp,%rcx,1) 0.00 : 82c71: 74 21 je 82c94 ??:0 3.55 : 82c73: 8a 4a 01 mov 0x1(%rdx),%cl 0.42 : 82c76: 38 0c 0c cmp %cl,(%rsp,%rcx,1) 0.00 : 82c79: 74 16 je 82c91 0.05 : 82c7b: 8a 4a 02 mov 0x2(%rdx),%cl 0.05 : 82c7e: 38 0c 0c cmp %cl,(%rsp,%rcx,1) 0.00 : 82c81: 74 0b je 82c8e 0.00 : 82c83: 8a 4a 03 mov 0x3(%rdx),%cl 0.00 : 82c86: 38 0c 0c cmp %cl,(%rsp,%rcx,1) 0.00 : 82c89: 75 dd jne 82c68 0.00 : 82c8b: 48 ff c2 inc %rdx 0.16 : 82c8e: 48 ff c2 inc %rdx 1.96 : 82c91: 48 ff c2 inc %rdx 1.70 : 82c94: 48 39 c2 cmp %rax,%rdx 0.00 : 82c97: 74 1d je 82cb6 0.00 : 82c99: c6 02 00 movb $0x0,(%rdx) 0.05 : 82c9c: 80 f9 00 cmp $0x0,%cl 0.58 : 82c9f: 48 8d 4a 01 lea 0x1(%rdx),%rcx 0.00 : 82ca3: 48 0f 45 d1 cmovne %rcx,%rdx 0.00 : 82ca7: 48 89 15 82 1c 2f 00 mov %rdx,0x2f1c82(%rip) # 374930 0.90 : 82cae: 48 81 c4 00 01 00 00 add $0x100,%rsp 0.00 : 82cb5: c3 retq 0.27 : 82cb6: 31 c0 xor %eax,%eax 0.05 : 82cb8: 48 89 15 71 1c 2f 00 mov %rdx,0x2f1c71(%rip) # 374930 0.48 : 82cbf: eb ed jmp 82cae Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 7.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 6.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:513 5.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:515 5.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:513 5.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 4.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 3.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 3.84 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 3.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:479 3.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 3.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:479 2.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:479 2.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:483 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:489 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:519 2.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:513 2.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 2.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:515 1.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:519 1.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:489 1.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 1.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 1.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:482 1.15 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:479 1.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:479 0.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:519 0.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:492 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:493 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a9120 : : * Also, the caller must select an appropriate memory context for running : * the hash functions. (dynahash.c doesn't change CurrentMemoryContext.) : */ : static uint32 : TupleHashTableHash(const void *key, Size keysize) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:479 3.78 : 5a9120: 55 push %rbp 1.15 : 5a9121: 48 89 e5 mov %rsp,%rbp 0.23 : 5a9124: 41 57 push %r15 3.09 : 5a9126: 41 56 push %r14 1.09 : 5a9128: 41 55 push %r13 0.29 : 5a912a: 41 54 push %r12 0.00 : 5a912c: 53 push %rbx 2.98 : 5a912d: 48 83 ec 18 sub $0x18,%rsp : MinimalTuple tuple = ((const TupleHashEntryData *) key)->firstTuple; : TupleTableSlot *slot; : TupleHashTable hashtable = CurTupleHashTable; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:482 1.32 : 5a9131: 48 8b 1d 88 07 5d 00 mov 0x5d0788(%rip),%rbx # b798c0 : * the hash functions. (dynahash.c doesn't change CurrentMemoryContext.) : */ : static uint32 : TupleHashTableHash(const void *key, Size keysize) : { : MinimalTuple tuple = ((const TupleHashEntryData *) key)->firstTuple; 0.11 : 5a9138: 48 8b 3f mov (%rdi),%rdi : TupleTableSlot *slot; : TupleHashTable hashtable = CurTupleHashTable; : int numCols = hashtable->numCols; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:483 2.92 : 5a913b: 8b 43 08 mov 0x8(%rbx),%eax : AttrNumber *keyColIdx = hashtable->keyColIdx; : FmgrInfo *hashfunctions; : uint32 hashkey = 0; : int i; : : if (tuple == NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:489 1.66 : 5a913e: 48 85 ff test %rdi,%rdi : TupleHashTableHash(const void *key, Size keysize) : { : MinimalTuple tuple = ((const TupleHashEntryData *) key)->firstTuple; : TupleTableSlot *slot; : TupleHashTable hashtable = CurTupleHashTable; : int numCols = hashtable->numCols; 0.17 : 5a9141: 89 45 c4 mov %eax,-0x3c(%rbp) : AttrNumber *keyColIdx = hashtable->keyColIdx; 0.23 : 5a9144: 4c 8b 63 10 mov 0x10(%rbx),%r12 : FmgrInfo *hashfunctions; : uint32 hashkey = 0; : int i; : : if (tuple == NULL) 2.86 : 5a9148: 0f 84 8a 00 00 00 je 5a91d8 : } : else : { : /* Process a tuple already stored in the table */ : /* (this case never actually occurs in current dynahash.c code) */ : slot = hashtable->tableslot; 0.00 : 5a914e: 4c 8b 7b 40 mov 0x40(%rbx),%r15 : ExecStoreMinimalTuple(tuple, slot, false); 0.00 : 5a9152: 31 d2 xor %edx,%edx 0.00 : 5a9154: 4c 89 fe mov %r15,%rsi 0.00 : 5a9157: e8 84 b2 00 00 callq 5b43e0 : hashfunctions = hashtable->tab_hash_funcs; 0.00 : 5a915c: 48 8b 43 18 mov 0x18(%rbx),%rax : } : : for (i = 0; i < numCols; i++) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 3.84 : 5a9160: 8b 55 c4 mov -0x3c(%rbp),%edx 1.37 : 5a9163: 45 31 ed xor %r13d,%r13d 0.06 : 5a9166: 85 d2 test %edx,%edx 0.00 : 5a9168: 7e 58 jle 5a91c2 0.46 : 5a916a: 49 89 c6 mov %rax,%r14 4.01 : 5a916d: 45 31 ed xor %r13d,%r13d 0.00 : 5a9170: 31 db xor %ebx,%ebx 0.00 : 5a9172: eb 14 jmp 5a9188 0.00 : 5a9174: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5a9178: 83 c3 01 add $0x1,%ebx 0.00 : 5a917b: 49 83 c4 02 add $0x2,%r12 0.00 : 5a917f: 49 83 c6 30 add $0x30,%r14 0.00 : 5a9183: 39 5d c4 cmp %ebx,-0x3c(%rbp) 0.00 : 5a9186: 7e 3a jle 5a91c2 : bool isNull; : : /* rotate hashkey left 1 bit at each step */ : hashkey = (hashkey << 1) | ((hashkey & 0x80000000) ? 1 : 0); : : attr = slot_getattr(slot, att, &isNull); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:513 2.81 : 5a9188: 41 0f bf 34 24 movswl (%r12),%esi /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:513 5.61 : 5a918d: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 5a9191: 4c 89 ff mov %r15,%rdi : AttrNumber att = keyColIdx[i]; : Datum attr; : bool isNull; : : /* rotate hashkey left 1 bit at each step */ : hashkey = (hashkey << 1) | ((hashkey & 0x80000000) ? 1 : 0); 0.11 : 5a9194: 41 d1 c5 rol %r13d : : attr = slot_getattr(slot, att, &isNull); 6.07 : 5a9197: e8 64 62 ec ff callq 46f400 : : if (!isNull) /* treat nulls as having hash key 0 */ /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:515 2.41 : 5a919c: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:515 5.90 : 5a91a0: 75 d6 jne 5a9178 : { : uint32 hkey; : : hkey = DatumGetUInt32(FunctionCall1(&hashfunctions[i], /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:519 2.86 : 5a91a2: 31 f6 xor %esi,%esi 0.17 : 5a91a4: 4c 89 f7 mov %r14,%rdi 0.92 : 5a91a7: 48 89 c2 mov %rax,%rdx 1.89 : 5a91aa: e8 21 4f 1d 00 callq 77e0d0 : slot = hashtable->tableslot; : ExecStoreMinimalTuple(tuple, slot, false); : hashfunctions = hashtable->tab_hash_funcs; : } : : for (i = 0; i < numCols; i++) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:504 10.54 : 5a91af: 83 c3 01 add $0x1,%ebx : { : uint32 hkey; : : hkey = DatumGetUInt32(FunctionCall1(&hashfunctions[i], : attr)); : hashkey ^= hkey; 0.23 : 5a91b2: 41 31 c5 xor %eax,%r13d : slot = hashtable->tableslot; : ExecStoreMinimalTuple(tuple, slot, false); : hashfunctions = hashtable->tab_hash_funcs; : } : : for (i = 0; i < numCols; i++) 0.29 : 5a91b5: 49 83 c4 02 add $0x2,%r12 0.23 : 5a91b9: 49 83 c6 30 add $0x30,%r14 5.27 : 5a91bd: 39 5d c4 cmp %ebx,-0x3c(%rbp) 7.85 : 5a91c0: 7f c6 jg 5a9188 : hashkey ^= hkey; : } : } : : return hashkey; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:526 3.49 : 5a91c2: 48 83 c4 18 add $0x18,%rsp 0.52 : 5a91c6: 44 89 e8 mov %r13d,%eax 0.46 : 5a91c9: 5b pop %rbx 3.84 : 5a91ca: 41 5c pop %r12 0.06 : 5a91cc: 41 5d pop %r13 0.69 : 5a91ce: 41 5e pop %r14 0.57 : 5a91d0: 41 5f pop %r15 2.46 : 5a91d2: c9 leaveq 1.60 : 5a91d3: c3 retq 0.00 : 5a91d4: 0f 1f 40 00 nopl 0x0(%rax) : int i; : : if (tuple == NULL) : { : /* Process the current input tuple for the table */ : slot = hashtable->inputslot; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:492 0.74 : 5a91d8: 4c 8b 7b 48 mov 0x48(%rbx),%r15 : hashfunctions = hashtable->in_hash_funcs; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:493 0.52 : 5a91dc: 48 8b 43 50 mov 0x50(%rbx),%rax 0.29 : 5a91e0: e9 7b ff ff ff jmpq 5a9160 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2226 21.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2217 16.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2217 10.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2217 4.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2217 2.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2226 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077d9d0 : : : #ifdef USE_FLOAT8_BYVAL : : float8 : DatumGetFloat8(Datum X) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2217 21.63 : 77d9d0: 55 push %rbp 16.16 : 77d9d1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2217 4.42 : 77d9d4: 48 89 7d f8 mov %rdi,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2217 10.41 : 77d9d8: f2 0f 10 45 f8 movsd -0x8(%rbp),%xmm0 : float8 retval; : } myunion; : : myunion.value = GET_8_BYTES(X); : return myunion.retval; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2226 47.38 : 77d9dd: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 53.48 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1379 7.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 3.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 3.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1364 3.48 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 2.39 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1367 2.14 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1401 2.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1383 2.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:335 1.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1401 1.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1368 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1372 1.19 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1373 0.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1364 0.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1372 0.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1379 0.84 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1368 0.80 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1372 0.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1367 0.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1368 0.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1364 0.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1383 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674d30 : : * Most but not all callers want CurrentResourceOwner to be adjusted. : * Those that don't should pass fixOwner = FALSE. : */ : static void : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.75 : 674d30: 55 push %rbp : PrivateRefCountEntry *ref; : int b = buf->buf_id; : : ref = GetPrivateRefCountEntry(b + 1, false, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1364 3.73 : 674d31: 31 d2 xor %edx,%edx : * Most but not all callers want CurrentResourceOwner to be adjusted. : * Those that don't should pass fixOwner = FALSE. : */ : static void : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.80 : 674d33: 48 89 e5 mov %rsp,%rbp 0.75 : 674d36: 48 89 5d e8 mov %rbx,-0x18(%rbp) 3.48 : 674d3a: 4c 89 65 f0 mov %r12,-0x10(%rbp) 3.88 : 674d3e: 48 89 fb mov %rdi,%rbx 0.20 : 674d41: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.65 : 674d45: 48 83 ec 30 sub $0x30,%rsp : PrivateRefCountEntry *ref; : int b = buf->buf_id; 0.00 : 674d49: 8b 7f 24 mov 0x24(%rdi),%edi : * Most but not all callers want CurrentResourceOwner to be adjusted. : * Those that don't should pass fixOwner = FALSE. : */ : static void : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 7.11 : 674d4c: 41 89 f4 mov %esi,%r12d : PrivateRefCountEntry *ref; : int b = buf->buf_id; : : ref = GetPrivateRefCountEntry(b + 1, false, false); 0.05 : 674d4f: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1364 0.94 : 674d51: 83 c7 01 add $0x1,%edi 0.55 : 674d54: e8 c7 f7 ff ff callq 674520 : Assert(ref != NULL); : : if (fixOwner) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1367 2.39 : 674d59: 45 84 e4 test %r12b,%r12b : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { : PrivateRefCountEntry *ref; : int b = buf->buf_id; : : ref = GetPrivateRefCountEntry(b + 1, false, false); 0.45 : 674d5c: 49 89 c5 mov %rax,%r13 : Assert(ref != NULL); : : if (fixOwner) 0.60 : 674d5f: 0f 85 b3 00 00 00 jne 674e18 : ResourceOwnerForgetBuffer(CurrentResourceOwner, : BufferDescriptorGetBuffer(buf)); : : Assert(ref->refcount > 0); : ref->refcount--; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1372 1.44 : 674d65: 41 8b 45 04 mov 0x4(%r13),%eax 0.89 : 674d69: 83 e8 01 sub $0x1,%eax : if (ref->refcount == 0) 0.30 : 674d6c: 85 c0 test %eax,%eax : if (fixOwner) : ResourceOwnerForgetBuffer(CurrentResourceOwner, : BufferDescriptorGetBuffer(buf)); : : Assert(ref->refcount > 0); : ref->refcount--; 0.65 : 674d6e: 41 89 45 04 mov %eax,0x4(%r13) : if (ref->refcount == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1373 1.19 : 674d72: 75 66 jne 674dda : { : /* I'd better not still hold any locks on the buffer */ : Assert(!LWLockHeldByMe(buf->content_lock)); : Assert(!LWLockHeldByMe(buf->io_in_progress_lock)); : : LockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1379 0.89 : 674d74: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.10 : 674d78: b8 01 00 00 00 mov $0x1,%eax 0.10 : 674d7d: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1379 53.48 : 674d80: 84 c0 test %al,%al 0.00 : 674d82: 0f 85 a8 00 00 00 jne 674e30 : : /* Decrement the shared reference count */ : Assert(buf->refcount > 0); : buf->refcount--; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1383 0.55 : 674d88: 8b 43 18 mov 0x18(%rbx),%eax 0.40 : 674d8b: 83 e8 01 sub $0x1,%eax 2.09 : 674d8e: 89 43 18 mov %eax,0x18(%rbx) : : /* Support LockBufferForCleanup() */ : if ((buf->flags & BM_PIN_COUNT_WAITER) && 0.15 : 674d91: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.10 : 674d95: a8 40 test $0x40,%al 0.00 : 674d97: 75 57 jne 674df0 : buf->flags &= ~BM_PIN_COUNT_WAITER; : UnlockBufHdr(buf); : ProcSendSignal(wait_backend_pid); : } : else : UnlockBufHdr(buf); 0.00 : 674d99: c6 43 20 00 movb $0x0,0x20(%rbx) : static void : ForgetPrivateRefCountEntry(PrivateRefCountEntry *ref) : { : Assert(ref->refcount == 0); : : if (ref >= &PrivateRefCountArray[0] && /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:335 2.09 : 674d9d: 49 81 fd c0 d0 b7 00 cmp $0xb7d0c0,%r13 0.00 : 674da4: 72 0d jb 674db3 0.00 : 674da6: 49 81 fd 00 d1 b7 00 cmp $0xb7d100,%r13 0.00 : 674dad: 0f 82 95 00 00 00 jb 674e48 : ref->buffer = InvalidBuffer; : } : else : { : bool found; : Buffer buffer = ref->buffer; 0.00 : 674db3: 41 8b 45 00 mov 0x0(%r13),%eax : hash_search(PrivateRefCountHash, 0.00 : 674db7: 48 8b 3d ba 82 50 00 mov 0x5082ba(%rip),%rdi # b7d078 0.00 : 674dbe: 48 8d 4d e7 lea -0x19(%rbp),%rcx 0.00 : 674dc2: 48 8d 75 e0 lea -0x20(%rbp),%rsi 0.00 : 674dc6: ba 02 00 00 00 mov $0x2,%edx : ref->buffer = InvalidBuffer; : } : else : { : bool found; : Buffer buffer = ref->buffer; 0.00 : 674dcb: 89 45 e0 mov %eax,-0x20(%rbp) : hash_search(PrivateRefCountHash, 0.00 : 674dce: e8 cd f8 10 00 callq 7846a0 : (void *) &buffer, : HASH_REMOVE, : &found); : Assert(found); : Assert(PrivateRefCountOverflowed > 0); : PrivateRefCountOverflowed--; 0.00 : 674dd3: 83 2d 96 82 50 00 01 subl $0x1,0x508296(%rip) # b7d070 : else : UnlockBufHdr(buf); : : ForgetPrivateRefCountEntry(ref); : } : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1401 1.94 : 674dda: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.30 : 674dde: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.40 : 674de2: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.45 : 674de6: c9 leaveq 2.14 : 674de7: c3 retq 0.00 : 674de8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 674def: 00 : /* Decrement the shared reference count */ : Assert(buf->refcount > 0); : buf->refcount--; : : /* Support LockBufferForCleanup() */ : if ((buf->flags & BM_PIN_COUNT_WAITER) && 0.00 : 674df0: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 674df3: 83 e8 01 sub $0x1,%eax 0.00 : 674df6: 75 a1 jne 674d99 : buf->refcount == 1) : { : /* we just released the last pin other than the waiter's */ : int wait_backend_pid = buf->wait_backend_pid; 0.00 : 674df8: 8b 7b 1c mov 0x1c(%rbx),%edi : : buf->flags &= ~BM_PIN_COUNT_WAITER; 0.00 : 674dfb: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674dff: 83 e0 bf and $0xffffffbf,%eax 0.00 : 674e02: 66 89 43 14 mov %ax,0x14(%rbx) : UnlockBufHdr(buf); 0.00 : 674e06: c6 43 20 00 movb $0x0,0x20(%rbx) : ProcSendSignal(wait_backend_pid); 0.00 : 674e0a: e8 b1 76 01 00 callq 68c4c0 : /* Decrement the shared reference count */ : Assert(buf->refcount > 0); : buf->refcount--; : : /* Support LockBufferForCleanup() */ : if ((buf->flags & BM_PIN_COUNT_WAITER) && 0.00 : 674e0f: eb 8c jmp 674d9d 0.00 : 674e11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : ref = GetPrivateRefCountEntry(b + 1, false, false); : Assert(ref != NULL); : : if (fixOwner) : ResourceOwnerForgetBuffer(CurrentResourceOwner, /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1368 0.84 : 674e18: 8b 73 24 mov 0x24(%rbx),%esi 1.79 : 674e1b: 48 8b 3d 9e 5a 54 00 mov 0x545a9e(%rip),%rdi # bba8c0 0.15 : 674e22: 83 c6 01 add $0x1,%esi 0.60 : 674e25: e8 d6 5a 12 00 callq 79a900 0.50 : 674e2a: e9 36 ff ff ff jmpq 674d65 0.00 : 674e2f: 90 nop : { : /* I'd better not still hold any locks on the buffer */ : Assert(!LWLockHeldByMe(buf->content_lock)); : Assert(!LWLockHeldByMe(buf->io_in_progress_lock)); : : LockBufHdr(buf); 0.00 : 674e30: ba 63 05 00 00 mov $0x563,%edx 0.00 : 674e35: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 674e3a: e8 01 b2 01 00 callq 690040 0.00 : 674e3f: e9 44 ff ff ff jmpq 674d88 0.00 : 674e44: 0f 1f 40 00 nopl 0x0(%rax) : Assert(ref->refcount == 0); : : if (ref >= &PrivateRefCountArray[0] && : ref < &PrivateRefCountArray[REFCOUNT_ARRAY_ENTRIES]) : { : ref->buffer = InvalidBuffer; 0.00 : 674e48: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 674e4f: 00 0.20 : 674e50: eb 88 jmp 674dda Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:740 22.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:735 8.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:740 5.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:749 5.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:751 4.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:750 3.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:735 2.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:736 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:740 2.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:737 2.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:737 2.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:735 1.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:735 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:737 1.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:736 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:736 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7d90 : : * float4mul - returns arg1 * arg2 : * float4div - returns arg1 / arg2 : */ : Datum : float4pl(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:735 1.85 : 6d7d90: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:735 22.47 : 6d7d91: 48 89 e5 mov %rsp,%rbp 0.48 : 6d7d94: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:735 3.49 : 6d7d95: 48 89 fb mov %rdi,%rbx 2.19 : 6d7d98: 48 83 ec 18 sub $0x18,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:736 0.62 : 6d7d9c: 48 8b 7f 20 mov 0x20(%rdi),%rdi 1.64 : 6d7da0: e8 0b 5c 0a 00 callq 77d9b0 2.74 : 6d7da5: f3 0f 11 45 ec movss %xmm0,-0x14(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:737 2.47 : 6d7daa: 48 8b 7b 28 mov 0x28(%rbx),%rdi 1.78 : 6d7dae: e8 fd 5b 0a 00 callq 77d9b0 2.47 : 6d7db3: f3 0f 11 45 f0 movss %xmm0,-0x10(%rbp) : float4 result; : : result = arg1 + arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:740 8.22 : 6d7db8: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:740 2.53 : 6d7dbd: f3 0f 58 45 f0 addss -0x10(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:740 30.27 : 6d7dc2: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : * because numbers near the underflow value have already been rounded to : * the point where we can't detect that the two values were originally : * different, e.g. on x86, '1e-45'::float4 == '2e-45'::float4 == : * 1.4013e-45. : */ : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:749 5.75 : 6d7dc7: e8 64 19 d9 ff callq 469730 <__isinff@plt> 0.14 : 6d7dcc: 85 c0 test %eax,%eax 0.00 : 6d7dce: 74 0e je 6d7dde 0.00 : 6d7dd0: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0 0.00 : 6d7dd5: e8 56 19 d9 ff callq 469730 <__isinff@plt> 0.00 : 6d7dda: 85 c0 test %eax,%eax 0.00 : 6d7ddc: 74 12 je 6d7df0 : PG_RETURN_FLOAT4(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:750 4.93 : 6d7dde: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 : } 0.07 : 6d7de3: 48 83 c4 18 add $0x18,%rsp 0.00 : 6d7de7: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:751 5.75 : 6d7de8: c9 leaveq : * the point where we can't detect that the two values were originally : * different, e.g. on x86, '1e-45'::float4 == '2e-45'::float4 == : * 1.4013e-45. : */ : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); : PG_RETURN_FLOAT4(result); 0.14 : 6d7de9: e9 b2 5b 0a 00 jmpq 77d9a0 0.00 : 6d7dee: 66 90 xchg %ax,%ax : * because numbers near the underflow value have already been rounded to : * the point where we can't detect that the two values were originally : * different, e.g. on x86, '1e-45'::float4 == '2e-45'::float4 == : * 1.4013e-45. : */ : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); 0.00 : 6d7df0: f3 0f 10 45 f0 movss -0x10(%rbp),%xmm0 0.00 : 6d7df5: e8 36 19 d9 ff callq 469730 <__isinff@plt> 0.00 : 6d7dfa: 85 c0 test %eax,%eax 0.00 : 6d7dfc: 75 e0 jne 6d7dde 0.00 : 6d7dfe: 45 31 c0 xor %r8d,%r8d 0.00 : 6d7e01: b9 57 bb 8b 00 mov $0x8bbb57,%ecx 0.00 : 6d7e06: ba ed 02 00 00 mov $0x2ed,%edx 0.00 : 6d7e0b: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d7e10: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d7e15: e8 a6 2c 0a 00 callq 77aac0 0.00 : 6d7e1a: 84 c0 test %al,%al 0.00 : 6d7e1c: 75 05 jne 6d7e23 0.00 : 6d7e1e: e8 ad 16 d9 ff callq 4694d0 0.00 : 6d7e23: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d7e28: 31 c0 xor %eax,%eax 0.00 : 6d7e2a: e8 71 4a 0a 00 callq 77c8a0 0.00 : 6d7e2f: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d7e34: 89 c3 mov %eax,%ebx 0.00 : 6d7e36: e8 15 4f 0a 00 callq 77cd50 0.00 : 6d7e3b: 89 de mov %ebx,%esi 0.00 : 6d7e3d: 89 c7 mov %eax,%edi 0.00 : 6d7e3f: 31 c0 xor %eax,%eax 0.00 : 6d7e41: e8 9a 27 0a 00 callq 77a5e0 0.00 : 6d7e46: eb d6 jmp 6d7e1e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.59 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2814 18.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2825 9.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2825 8.96 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2812 8.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2823 7.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2812 7.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2821 3.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2825 3.61 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2815 2.32 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2815 2.19 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2812 1.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2816 1.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2815 0.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2825 0.84 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2812 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674b60 : : * This function cannot be used on a buffer we do not have pinned, : * because it doesn't change the shared buffer state. : */ : void : IncrBufferRefCount(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2812 7.22 : 674b60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2812 2.19 : 674b61: 48 89 e5 mov %rsp,%rbp 0.84 : 674b64: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2812 8.96 : 674b65: 89 fb mov %edi,%ebx 0.26 : 674b67: 48 83 ec 08 sub $0x8,%rsp : Assert(BufferIsPinned(buffer)); : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); 0.19 : 674b6b: 48 8b 3d 4e 5d 54 00 mov 0x545d4e(%rip),%rdi # bba8c0 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2814 21.59 : 674b72: e8 f9 62 12 00 callq 79ae70 : ResourceOwnerRememberBuffer(CurrentResourceOwner, buffer); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2815 3.61 : 674b77: 48 8b 3d 42 5d 54 00 mov 0x545d42(%rip),%rdi # bba8c0 1.55 : 674b7e: 89 de mov %ebx,%esi 2.32 : 674b80: e8 1b 56 12 00 callq 79a1a0 : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2816 1.68 : 674b85: 85 db test %ebx,%ebx 0.00 : 674b87: 78 1f js 674ba8 : LocalRefCount[-buffer - 1]++; : else : { : PrivateRefCountEntry *ref; : ref = GetPrivateRefCountEntry(buffer, false, true); 0.26 : 674b89: 89 df mov %ebx,%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2821 7.22 : 674b8b: ba 01 00 00 00 mov $0x1,%edx 0.26 : 674b90: 31 f6 xor %esi,%esi 0.45 : 674b92: e8 89 f9 ff ff callq 674520 : Assert(ref != NULL); : ref->refcount++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2823 8.44 : 674b97: 83 40 04 01 addl $0x1,0x4(%rax) : } : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2825 9.41 : 674b9b: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2825 0.97 : 674b9f: 5b pop %rbx 3.93 : 674ba0: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2825 18.69 : 674ba1: c3 retq 0.00 : 674ba2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : Assert(BufferIsPinned(buffer)); : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); : ResourceOwnerRememberBuffer(CurrentResourceOwner, buffer); : if (BufferIsLocal(buffer)) : LocalRefCount[-buffer - 1]++; 0.00 : 674ba8: f7 d3 not %ebx 0.00 : 674baa: 48 63 c3 movslq %ebx,%rax 0.00 : 674bad: 48 c1 e0 02 shl $0x2,%rax 0.00 : 674bb1: 48 03 05 68 85 50 00 add 0x508568(%rip),%rax # b7d120 0.00 : 674bb8: 83 00 01 addl $0x1,(%rax) : PrivateRefCountEntry *ref; : ref = GetPrivateRefCountEntry(buffer, false, true); : Assert(ref != NULL); : ref->refcount++; : } : } 0.00 : 674bbb: 48 83 c4 08 add $0x8,%rsp 0.00 : 674bbf: 5b pop %rbx 0.00 : 674bc0: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 12.88 ??:0 9.87 ??:0 8.18 ??:0 7.62 ??:0 5.67 ??:0 4.04 ??:0 3.89 ??:0 3.43 ??:0 3.22 ??:0 3.17 ??:0 2.86 ??:0 2.86 ??:0 2.56 ??:0 2.51 ??:0 1.64 ??:0 1.48 ??:0 1.38 ??:0 1.18 ??:0 1.12 ??:0 1.12 ??:0 1.07 ??:0 1.02 ??:0 1.02 ??:0 0.97 ??:0 0.92 ??:0 0.82 ??:0 0.66 ??:0 0.66 ??:0 0.61 ??:0 0.61 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000084750 : ??:0 12.88 : 84750: 48 83 fa 20 cmp $0x20,%rdx 9.87 : 84754: 48 89 f8 mov %rdi,%rax 0.00 : 84757: 73 77 jae 847d0 ??:0 4.04 : 84759: f6 c2 01 test $0x1,%dl 0.00 : 8475c: 74 0b je 84769 0.82 : 8475e: 0f b6 0e movzbl (%rsi),%ecx 0.61 : 84761: 88 0f mov %cl,(%rdi) 0.51 : 84763: 48 ff c6 inc %rsi 0.05 : 84766: 48 ff c7 inc %rdi 3.89 : 84769: f6 c2 02 test $0x2,%dl 0.00 : 8476c: 74 12 je 84780 0.97 : 8476e: 0f b7 0e movzwl (%rsi),%ecx 1.12 : 84771: 66 89 0f mov %cx,(%rdi) 0.46 : 84774: 48 83 c6 02 add $0x2,%rsi 0.05 : 84778: 48 83 c7 02 add $0x2,%rdi 0.00 : 8477c: 0f 1f 40 00 nopl 0x0(%rax) ??:0 7.62 : 84780: f6 c2 04 test $0x4,%dl 0.00 : 84783: 74 0c je 84791 ??:0 1.48 : 84785: 8b 0e mov (%rsi),%ecx 3.22 : 84787: 89 0f mov %ecx,(%rdi) ??:0 8.18 : 84789: 48 83 c6 04 add $0x4,%rsi ??:0 0.92 : 8478d: 48 83 c7 04 add $0x4,%rdi 2.86 : 84791: f6 c2 08 test $0x8,%dl 0.00 : 84794: 74 0e je 847a4 1.12 : 84796: 48 8b 0e mov (%rsi),%rcx 2.56 : 84799: 48 89 0f mov %rcx,(%rdi) 1.64 : 8479c: 48 83 c6 08 add $0x8,%rsi 0.46 : 847a0: 48 83 c7 08 add $0x8,%rdi 1.07 : 847a4: 81 e2 f0 00 00 00 and $0xf0,%edx 0.00 : 847aa: 74 1f je 847cb 0.66 : 847ac: 0f 1f 40 00 nopl 0x0(%rax) 0.56 : 847b0: 48 8b 0e mov (%rsi),%rcx 3.17 : 847b3: 4c 8b 46 08 mov 0x8(%rsi),%r8 2.51 : 847b7: 48 89 0f mov %rcx,(%rdi) 3.43 : 847ba: 4c 89 47 08 mov %r8,0x8(%rdi) 2.86 : 847be: 83 ea 10 sub $0x10,%edx 0.31 : 847c1: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.20 : 847c5: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.51 : 847c9: 75 e5 jne 847b0 ??:0 5.67 : 847cb: f3 c3 repz retq 0.00 : 847cd: 0f 1f 00 nopl (%rax) ??:0 1.02 : 847d0: 48 89 44 24 f8 mov %rax,-0x8(%rsp) 1.18 : 847d5: 89 f1 mov %esi,%ecx 0.00 : 847d7: 83 e1 07 and $0x7,%ecx 0.00 : 847da: 74 34 je 84810 0.00 : 847dc: 48 8d 54 11 f8 lea -0x8(%rcx,%rdx,1),%rdx 0.05 : 847e1: 83 e9 08 sub $0x8,%ecx 0.00 : 847e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 847eb: 00 00 00 00 00 0.31 : 847f0: 0f b6 06 movzbl (%rsi),%eax 0.36 : 847f3: 88 07 mov %al,(%rdi) 0.56 : 847f5: ff c1 inc %ecx 0.00 : 847f7: 48 8d 76 01 lea 0x1(%rsi),%rsi 0.00 : 847fb: 48 8d 7f 01 lea 0x1(%rdi),%rdi 0.05 : 847ff: 75 ef jne 847f0 0.20 : 84801: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 84808: 0f 1f 84 00 00 00 00 0.00 : 8480f: 00 0.46 : 84810: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 84817: 77 77 ja 84890 0.15 : 84819: 89 d1 mov %edx,%ecx 0.10 : 8481b: c1 e9 05 shr $0x5,%ecx 0.26 : 8481e: 74 60 je 84880 0.51 : 84820: ff c9 dec %ecx 0.00 : 84822: 48 8b 06 mov (%rsi),%rax 0.20 : 84825: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.36 : 84829: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.66 : 8482d: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.46 : 84831: 48 89 07 mov %rax,(%rdi) 1.38 : 84834: 4c 89 47 08 mov %r8,0x8(%rdi) 0.61 : 84838: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.51 : 8483c: 4c 89 57 18 mov %r10,0x18(%rdi) 0.46 : 84840: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.10 : 84844: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.05 : 84848: 74 36 je 84880 0.00 : 8484a: ff c9 dec %ecx 0.26 : 8484c: 48 8b 06 mov (%rsi),%rax 0.05 : 8484f: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.10 : 84853: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 84857: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.10 : 8485b: 48 89 07 mov %rax,(%rdi) 0.10 : 8485e: 4c 89 47 08 mov %r8,0x8(%rdi) 0.20 : 84862: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.31 : 84866: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8486a: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 8486e: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.05 : 84872: 75 ac jne 84820 0.00 : 84874: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8487b: 00 00 00 00 00 0.56 : 84880: 83 e2 1f and $0x1f,%edx 0.51 : 84883: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.20 : 84888: 0f 85 cb fe ff ff jne 84759 0.00 : 8488e: f3 c3 repz retq 0.00 : 84890: 4c 8b 1d 79 d8 2e 00 mov 0x2ed879(%rip),%r11 # 372110 <__x86_64_data_cache_size_half> 0.00 : 84897: 49 39 d3 cmp %rdx,%r11 0.00 : 8489a: 4c 0f 47 da cmova %rdx,%r11 0.00 : 8489e: 4c 89 d9 mov %r11,%rcx 0.00 : 848a1: 49 83 e3 f8 and $0xfffffffffffffff8,%r11 0.00 : 848a5: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 848a9: 74 05 je 848b0 1.02 : 848ab: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.05 : 848ae: 66 90 xchg %ax,%ax 0.00 : 848b0: 4c 29 da sub %r11,%rdx 0.00 : 848b3: 48 f7 c2 f8 ff ff ff test $0xfffffffffffffff8,%rdx 0.00 : 848ba: 75 14 jne 848d0 0.00 : 848bc: 83 e2 07 and $0x7,%edx 0.00 : 848bf: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 848c4: 0f 85 8f fe ff ff jne 84759 0.00 : 848ca: f3 c3 repz retq 0.00 : 848cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 848d0: 4c 8b 05 59 d8 2e 00 mov 0x2ed859(%rip),%r8 # 372130 <__x86_64_shared_cache_size_half> 0.00 : 848d7: 49 39 d0 cmp %rdx,%r8 0.00 : 848da: 4c 0f 47 c2 cmova %rdx,%r8 0.00 : 848de: 4c 89 c1 mov %r8,%rcx 0.00 : 848e1: 49 83 e0 c0 and $0xffffffffffffffc0,%r8 0.00 : 848e5: 48 c1 e9 06 shr $0x6,%rcx 0.00 : 848e9: 0f 84 ab 01 00 00 je 84a9a 0.00 : 848ef: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 848f4: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 848f9: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 848fe: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 84903: 83 3d 06 2b 2f 00 00 cmpl $0x0,0x2f2b06(%rip) # 377410 <__x86_64_prefetchw> 0.00 : 8490a: 0f 84 c0 00 00 00 je 849d0 0.00 : 84910: 48 ff c9 dec %rcx 0.00 : 84913: 48 8b 06 mov (%rsi),%rax 0.00 : 84916: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 8491a: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8491e: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84922: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84926: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 8492a: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 8492e: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 84932: 0f 18 8e 80 03 00 00 prefetcht0 0x380(%rsi) 0.00 : 84939: 0f 18 8e c0 03 00 00 prefetcht0 0x3c0(%rsi) 0.00 : 84940: 48 89 07 mov %rax,(%rdi) 0.00 : 84943: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84947: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 8494b: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8494f: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 84953: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 84957: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 8495b: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 8495f: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84963: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84967: 0f 84 19 01 00 00 je 84a86 0.00 : 8496d: 48 ff c9 dec %rcx 0.00 : 84970: 48 8b 06 mov (%rsi),%rax 0.00 : 84973: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 84977: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8497b: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 8497f: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84983: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84987: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 8498b: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 8498f: 48 89 07 mov %rax,(%rdi) 0.00 : 84992: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84996: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 8499a: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8499e: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 849a2: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 849a6: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 849aa: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 849ae: 0f 0d 8f 40 03 00 00 prefetchw 0x340(%rdi) 0.00 : 849b5: 0f 0d 8f 80 03 00 00 prefetchw 0x380(%rdi) 0.00 : 849bc: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 849c0: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 849c4: 0f 85 46 ff ff ff jne 84910 0.00 : 849ca: e9 b7 00 00 00 jmpq 84a86 0.00 : 849cf: 90 nop 0.00 : 849d0: 48 ff c9 dec %rcx 0.00 : 849d3: 48 8b 06 mov (%rsi),%rax 0.00 : 849d6: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 849da: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 849de: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 849e2: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 849e6: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 849ea: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 849ee: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 849f2: 0f 18 8e 80 03 00 00 prefetcht0 0x380(%rsi) 0.00 : 849f9: 0f 18 8e c0 03 00 00 prefetcht0 0x3c0(%rsi) 0.00 : 84a00: 48 89 07 mov %rax,(%rdi) 0.00 : 84a03: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84a07: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 84a0b: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 84a0f: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 84a13: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 84a17: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 84a1b: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 84a1f: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84a23: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84a27: 74 5d je 84a86 0.00 : 84a29: 48 ff c9 dec %rcx 0.00 : 84a2c: 48 8b 06 mov (%rsi),%rax 0.00 : 84a2f: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 84a33: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 84a37: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84a3b: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84a3f: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84a43: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 84a47: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 84a4b: 0f 18 8f 40 03 00 00 prefetcht0 0x340(%rdi) 0.00 : 84a52: 0f 18 8f 80 03 00 00 prefetcht0 0x380(%rdi) 0.05 : 84a59: 48 89 07 mov %rax,(%rdi) 0.00 : 84a5c: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84a60: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 84a64: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 84a68: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 84a6c: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 84a70: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 84a74: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 84a78: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84a7c: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84a80: 0f 85 4a ff ff ff jne 849d0 0.00 : 84a86: 48 8b 5c 24 d8 mov -0x28(%rsp),%rbx 0.00 : 84a8b: 4c 8b 64 24 e0 mov -0x20(%rsp),%r12 0.00 : 84a90: 4c 8b 6c 24 e8 mov -0x18(%rsp),%r13 0.00 : 84a95: 4c 8b 74 24 f0 mov -0x10(%rsp),%r14 0.00 : 84a9a: 4c 29 c2 sub %r8,%rdx 0.00 : 84a9d: 48 f7 c2 c0 ff ff ff test $0xffffffffffffffc0,%rdx 0.00 : 84aa4: 75 1a jne 84ac0 0.00 : 84aa6: 83 e2 3f and $0x3f,%edx 0.00 : 84aa9: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 84aae: 0f 85 a5 fc ff ff jne 84759 0.00 : 84ab4: f3 c3 repz retq 0.00 : 84ab6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 84abd: 00 00 00 0.00 : 84ac0: 48 89 d1 mov %rdx,%rcx 0.00 : 84ac3: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 84ac7: 0f 84 d8 00 00 00 je 84ba5 0.00 : 84acd: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 84ad2: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 84ad7: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 84adc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 84ae0: 0f 18 86 00 03 00 00 prefetchnta 0x300(%rsi) 0.00 : 84ae7: 0f 18 86 40 03 00 00 prefetchnta 0x340(%rsi) 0.05 : 84aee: 48 ff c9 dec %rcx 0.00 : 84af1: 48 8b 06 mov (%rsi),%rax 0.00 : 84af4: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 84af8: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 84afc: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84b00: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84b04: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84b08: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 84b0c: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 84b10: 48 0f c3 07 movnti %rax,(%rdi) 0.00 : 84b14: 4c 0f c3 47 08 movnti %r8,0x8(%rdi) 0.05 : 84b19: 4c 0f c3 4f 10 movnti %r9,0x10(%rdi) 0.00 : 84b1e: 4c 0f c3 57 18 movnti %r10,0x18(%rdi) 0.00 : 84b23: 4c 0f c3 5f 20 movnti %r11,0x20(%rdi) 0.00 : 84b28: 4c 0f c3 67 28 movnti %r12,0x28(%rdi) 0.00 : 84b2d: 4c 0f c3 6f 30 movnti %r13,0x30(%rdi) 0.00 : 84b32: 4c 0f c3 77 38 movnti %r14,0x38(%rdi) 0.00 : 84b37: 48 8b 46 40 mov 0x40(%rsi),%rax 0.00 : 84b3b: 4c 8b 46 48 mov 0x48(%rsi),%r8 0.00 : 84b3f: 4c 8b 4e 50 mov 0x50(%rsi),%r9 0.00 : 84b43: 4c 8b 56 58 mov 0x58(%rsi),%r10 0.00 : 84b47: 4c 8b 5e 60 mov 0x60(%rsi),%r11 0.00 : 84b4b: 4c 8b 66 68 mov 0x68(%rsi),%r12 0.00 : 84b4f: 4c 8b 6e 70 mov 0x70(%rsi),%r13 0.00 : 84b53: 4c 8b 76 78 mov 0x78(%rsi),%r14 0.00 : 84b57: 48 0f c3 47 40 movnti %rax,0x40(%rdi) 0.00 : 84b5c: 4c 0f c3 47 48 movnti %r8,0x48(%rdi) 0.00 : 84b61: 4c 0f c3 4f 50 movnti %r9,0x50(%rdi) 0.00 : 84b66: 4c 0f c3 57 58 movnti %r10,0x58(%rdi) 0.00 : 84b6b: 4c 0f c3 5f 60 movnti %r11,0x60(%rdi) 0.00 : 84b70: 4c 0f c3 67 68 movnti %r12,0x68(%rdi) 0.00 : 84b75: 4c 0f c3 6f 70 movnti %r13,0x70(%rdi) 0.00 : 84b7a: 4c 0f c3 77 78 movnti %r14,0x78(%rdi) 0.00 : 84b7f: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 84b86: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 84b8d: 0f 85 4d ff ff ff jne 84ae0 0.00 : 84b93: 0f ae f8 sfence 0.00 : 84b96: 4c 8b 64 24 e0 mov -0x20(%rsp),%r12 0.00 : 84b9b: 4c 8b 6c 24 e8 mov -0x18(%rsp),%r13 0.00 : 84ba0: 4c 8b 74 24 f0 mov -0x10(%rsp),%r14 0.00 : 84ba5: 83 e2 7f and $0x7f,%edx 0.00 : 84ba8: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 84bad: 0f 85 a6 fb ff ff jne 84759 0.00 : 84bb3: f3 c3 repz retq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1547 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 4.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 3.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 2.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 2.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1562 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 2.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1526 2.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 2.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1563 2.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 2.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1562 2.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1563 1.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 1.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1547 1.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1570 1.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 1.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 1.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 1.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1499 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1563 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1567 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1570 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1523 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1499 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1510 0.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1523 0.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 0.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 0.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 0.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 0.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1570 0.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1570 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070cbc0 : : return result; : } : : Datum : hash_numeric(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 5.26 : 70cbc0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 4.05 : 70cbc1: 48 89 e5 mov %rsp,%rbp 0.00 : 70cbc4: 41 56 push %r14 3.67 : 70cbc6: 41 55 push %r13 1.71 : 70cbc8: 41 54 push %r12 2.09 : 70cbca: 53 push %rbx : Numeric key = PG_GETARG_NUMERIC(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1499 1.77 : 70cbcb: 48 8b 7f 20 mov 0x20(%rdi),%rdi 1.20 : 70cbcf: e8 3c 21 07 00 callq 77ed10 : int i; : int hash_len; : NumericDigit *digits; : : /* If it's NaN, don't try to hash the rest of the fields */ : if (NUMERIC_IS_NAN(key)) 0.06 : 70cbd4: 44 0f b7 68 04 movzwl 0x4(%rax),%r13d 0.00 : 70cbd9: 31 d2 xor %edx,%edx : } : : Datum : hash_numeric(PG_FUNCTION_ARGS) : { : Numeric key = PG_GETARG_NUMERIC(0); 0.25 : 70cbdb: 48 89 c3 mov %rax,%rbx : int i; : int hash_len; : NumericDigit *digits; : : /* If it's NaN, don't try to hash the rest of the fields */ : if (NUMERIC_IS_NAN(key)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1510 1.20 : 70cbde: 45 89 ee mov %r13d,%r14d 0.00 : 70cbe1: 41 81 e6 00 c0 00 00 and $0xc000,%r14d 0.00 : 70cbe8: 41 81 fe 00 c0 00 00 cmp $0xc000,%r14d 0.00 : 70cbef: 0f 84 31 01 00 00 je 70cd26 : PG_RETURN_UINT32(0); : : weight = NUMERIC_WEIGHT(key); 0.38 : 70cbf5: 41 81 fe 00 80 00 00 cmp $0x8000,%r14d 0.06 : 70cbfc: 0f 84 36 01 00 00 je 70cd38 0.00 : 70cc02: 0f bf 48 06 movswl 0x6(%rax),%ecx : * Omit any leading or trailing zeros from the input to the hash. The : * numeric implementation *should* guarantee that leading and trailing : * zeros are suppressed, but we're paranoid. Note that we measure the : * starting and ending offsets in units of NumericDigits, not bytes. : */ : digits = NUMERIC_DIGITS(key); 0.00 : 70cc06: 4c 8d 58 08 lea 0x8(%rax),%r11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1523 0.89 : 70cc0a: 8b 03 mov (%rbx),%eax 0.00 : 70cc0c: 31 ff xor %edi,%edi 0.00 : 70cc0e: c1 e8 02 shr $0x2,%eax 1.27 : 70cc11: 89 c6 mov %eax,%esi : for (i = 0; i < NUMERIC_NDIGITS(key); i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 0.95 : 70cc13: 49 0f bf c5 movswq %r13w,%rax 0.00 : 70cc17: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 70cc1b: 48 89 f2 mov %rsi,%rdx 1.33 : 70cc1e: 48 83 e0 fe and $0xfffffffffffffffe,%rax 0.57 : 70cc22: 48 83 c0 08 add $0x8,%rax 0.00 : 70cc26: 48 29 c2 sub %rax,%rdx 0.13 : 70cc29: 48 89 d0 mov %rdx,%rax 1.90 : 70cc2c: 48 d1 e8 shr %rax 1.90 : 70cc2f: eb 12 jmp 70cc43 0.00 : 70cc31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : if (digits[i] != (NumericDigit) 0) 0.00 : 70cc38: 66 43 83 3c 43 00 cmpw $0x0,(%r11,%r8,2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1526 2.41 : 70cc3e: 75 11 jne 70cc51 : break; : : start_offset++; 0.00 : 70cc40: 83 c7 01 add $0x1,%edi : return result; : } : : Datum : hash_numeric(PG_FUNCTION_ARGS) : { 0.00 : 70cc43: 41 89 cc mov %ecx,%r12d : * numeric implementation *should* guarantee that leading and trailing : * zeros are suppressed, but we're paranoid. Note that we measure the : * starting and ending offsets in units of NumericDigits, not bytes. : */ : digits = NUMERIC_DIGITS(key); : for (i = 0; i < NUMERIC_NDIGITS(key); i++) 0.06 : 70cc46: 4c 63 c7 movslq %edi,%r8 : return result; : } : : Datum : hash_numeric(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1498 0.82 : 70cc49: 41 29 fc sub %edi,%r12d : * numeric implementation *should* guarantee that leading and trailing : * zeros are suppressed, but we're paranoid. Note that we measure the : * starting and ending offsets in units of NumericDigits, not bytes. : */ : digits = NUMERIC_DIGITS(key); : for (i = 0; i < NUMERIC_NDIGITS(key); i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1524 1.52 : 70cc4c: 49 39 c0 cmp %rax,%r8 0.00 : 70cc4f: 72 e7 jb 70cc38 : : /* : * If there are no non-zero digits, then the value of the number is zero, : * regardless of any other fields. : */ : if (NUMERIC_NDIGITS(key) == start_offset) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1542 1.52 : 70cc51: 49 0f bf cd movswq %r13w,%rcx 0.00 : 70cc55: 48 89 f2 mov %rsi,%rdx 0.00 : 70cc58: 48 89 c8 mov %rcx,%rax 0.76 : 70cc5b: 48 c1 f8 3f sar $0x3f,%rax 1.71 : 70cc5f: 48 83 e0 fe and $0xfffffffffffffffe,%rax 0.19 : 70cc63: 48 83 c0 08 add $0x8,%rax 0.70 : 70cc67: 48 29 c2 sub %rax,%rdx 1.27 : 70cc6a: 48 89 d0 mov %rdx,%rax 1.90 : 70cc6d: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 70cc72: 48 d1 e8 shr %rax 1.27 : 70cc75: 4c 39 c0 cmp %r8,%rax 0.00 : 70cc78: 0f 84 a8 00 00 00 je 70cd26 : PG_RETURN_UINT32(-1); : : for (i = NUMERIC_NDIGITS(key) - 1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 2.72 : 70cc7e: 48 89 c8 mov %rcx,%rax 0.32 : 70cc81: 49 89 f1 mov %rsi,%r9 0.00 : 70cc84: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 70cc88: 48 83 e0 fe and $0xfffffffffffffffe,%rax 1.71 : 70cc8c: 48 83 c0 08 add $0x8,%rax 0.19 : 70cc90: 49 29 c1 sub %rax,%r9 0.82 : 70cc93: 49 d1 e9 shr %r9 0.57 : 70cc96: 44 89 c9 mov %r9d,%ecx 2.53 : 70cc99: 83 e9 01 sub $0x1,%ecx 1.96 : 70cc9c: 0f 88 b7 00 00 00 js 70cd59 : { : if (digits[i] != (NumericDigit) 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1547 1.96 : 70cca2: 48 63 c1 movslq %ecx,%rax 0.00 : 70cca5: 66 41 83 3c 43 00 cmpw $0x0,(%r11,%rax,2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1547 13.43 : 70ccab: 0f 85 a8 00 00 00 jne 70cd59 : break; 0.00 : 70ccb1: 31 d2 xor %edx,%edx : * regardless of any other fields. : */ : if (NUMERIC_NDIGITS(key) == start_offset) : PG_RETURN_UINT32(-1); : : for (i = NUMERIC_NDIGITS(key) - 1; i >= 0; i--) 0.00 : 70ccb3: 41 83 e9 02 sub $0x2,%r9d 0.00 : 70ccb7: eb 16 jmp 70cccf 0.00 : 70ccb9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : if (digits[i] != (NumericDigit) 0) 0.00 : 70ccc0: 48 63 c1 movslq %ecx,%rax 0.00 : 70ccc3: 48 83 c2 01 add $0x1,%rdx 0.00 : 70ccc7: 66 41 83 3c 43 00 cmpw $0x0,(%r11,%rax,2) 0.00 : 70cccd: 75 0e jne 70ccdd : return result; : } : : Datum : hash_numeric(PG_FUNCTION_ARGS) : { 0.00 : 70cccf: 89 d0 mov %edx,%eax : * regardless of any other fields. : */ : if (NUMERIC_NDIGITS(key) == start_offset) : PG_RETURN_UINT32(-1); : : for (i = NUMERIC_NDIGITS(key) - 1; i >= 0; i--) 0.00 : 70ccd1: 83 e9 01 sub $0x1,%ecx 0.00 : 70ccd4: 41 39 d1 cmp %edx,%r9d : return result; : } : : Datum : hash_numeric(PG_FUNCTION_ARGS) : { 0.00 : 70ccd7: 44 8d 50 01 lea 0x1(%rax),%r10d : * regardless of any other fields. : */ : if (NUMERIC_NDIGITS(key) == start_offset) : PG_RETURN_UINT32(-1); : : for (i = NUMERIC_NDIGITS(key) - 1; i >= 0; i--) 0.00 : 70ccdb: 79 e3 jns 70ccc0 0.00 : 70ccdd: 45 89 d1 mov %r10d,%r9d : * Note that we don't hash on the Numeric's scale, since two numerics can : * compare equal but have different scales. We also don't hash on the : * sign, although we could: since a sign difference implies inequality, : * this shouldn't affect correctness. : */ : hash_len = NUMERIC_NDIGITS(key) - start_offset - end_offset; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1562 2.09 : 70cce0: 49 0f bf c5 movswq %r13w,%rax : digit_hash = hash_any((unsigned char *) (NUMERIC_DIGITS(key) + start_offset), 0.00 : 70cce4: 48 8d 53 08 lea 0x8(%rbx),%rdx 0.00 : 70cce8: 48 8d 4b 06 lea 0x6(%rbx),%rcx : * Note that we don't hash on the Numeric's scale, since two numerics can : * compare equal but have different scales. We also don't hash on the : * sign, although we could: since a sign difference implies inequality, : * this shouldn't affect correctness. : */ : hash_len = NUMERIC_NDIGITS(key) - start_offset - end_offset; 0.00 : 70ccec: 48 c1 f8 3f sar $0x3f,%rax 2.72 : 70ccf0: 48 83 e0 fe and $0xfffffffffffffffe,%rax 0.00 : 70ccf4: 48 83 c0 08 add $0x8,%rax : digit_hash = hash_any((unsigned char *) (NUMERIC_DIGITS(key) + start_offset), 0.00 : 70ccf8: 41 81 fe 00 80 00 00 cmp $0x8000,%r14d 0.00 : 70ccff: 48 0f 45 ca cmovne %rdx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1563 2.03 : 70cd03: 48 29 c6 sub %rax,%rsi 0.00 : 70cd06: 48 d1 ee shr %rsi 0.00 : 70cd09: 29 fe sub %edi,%esi 2.22 : 70cd0b: 4a 8d 3c 41 lea (%rcx,%r8,2),%rdi 0.00 : 70cd0f: 44 29 ce sub %r9d,%esi 0.00 : 70cd12: 48 63 f6 movslq %esi,%rsi 0.00 : 70cd15: 48 01 f6 add %rsi,%rsi 1.71 : 70cd18: e8 33 36 d8 ff callq 490350 0.00 : 70cd1d: 48 89 c2 mov %rax,%rdx : hash_len * sizeof(NumericDigit)); : : /* Mix in the weight, via XOR */ : result = digit_hash ^ weight; 0.00 : 70cd20: 49 63 c4 movslq %r12d,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1567 1.71 : 70cd23: 48 31 c2 xor %rax,%rdx : : PG_RETURN_DATUM(result); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1570 0.51 : 70cd26: 5b pop %rbx 0.00 : 70cd27: 41 5c pop %r12 0.00 : 70cd29: 41 5d pop %r13 1.52 : 70cd2b: 48 89 d0 mov %rdx,%rax 0.70 : 70cd2e: 41 5e pop %r14 0.00 : 70cd30: c9 leaveq 1.96 : 70cd31: c3 retq 0.00 : 70cd32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* If it's NaN, don't try to hash the rest of the fields */ : if (NUMERIC_IS_NAN(key)) : PG_RETURN_UINT32(0); : : weight = NUMERIC_WEIGHT(key); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1513 1.71 : 70cd38: 0f b7 50 04 movzwl 0x4(%rax),%edx : * Omit any leading or trailing zeros from the input to the hash. The : * numeric implementation *should* guarantee that leading and trailing : * zeros are suppressed, but we're paranoid. Note that we measure the : * starting and ending offsets in units of NumericDigits, not bytes. : */ : digits = NUMERIC_DIGITS(key); 0.32 : 70cd3c: 4c 8d 5b 06 lea 0x6(%rbx),%r11 : : /* If it's NaN, don't try to hash the rest of the fields */ : if (NUMERIC_IS_NAN(key)) : PG_RETURN_UINT32(0); : : weight = NUMERIC_WEIGHT(key); 0.00 : 70cd40: 89 d0 mov %edx,%eax 0.13 : 70cd42: 83 e0 40 and $0x40,%eax 2.34 : 70cd45: 83 f8 01 cmp $0x1,%eax 0.32 : 70cd48: 19 c9 sbb %ecx,%ecx 0.70 : 70cd4a: 83 e2 3f and $0x3f,%edx 1.33 : 70cd4d: f7 d1 not %ecx 0.82 : 70cd4f: 83 e1 c0 and $0xffffffc0,%ecx 1.33 : 70cd52: 09 d1 or %edx,%ecx 1.52 : 70cd54: e9 b1 fe ff ff jmpq 70cc0a : * regardless of any other fields. : */ : if (NUMERIC_NDIGITS(key) == start_offset) : PG_RETURN_UINT32(-1); : : for (i = NUMERIC_NDIGITS(key) - 1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1545 1.33 : 70cd59: 45 31 c9 xor %r9d,%r9d 0.00 : 70cd5c: eb 82 jmp 70cce0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:580 3.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1039 2.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:735 2.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:580 2.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:735 2.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:615 2.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:595 2.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 1.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 1.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:629 1.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.80 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 1.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:583 1.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 1.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:615 1.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 1.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:837 1.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 1.49 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:623 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:631 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:851 1.39 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:839 1.34 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 1.34 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 1.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 1.24 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 1.24 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.24 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.24 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:623 1.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:578 1.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 1.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:583 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:585 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:773 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 0.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:628 0.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:829 0.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 0.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:598 0.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:851 0.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:765 0.72 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:828 0.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:625 0.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:837 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:614 0.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:777 0.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:595 0.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:880 0.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:710 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000675ca0 : : */ : static Buffer : ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum, : BlockNumber blockNum, ReadBufferMode mode, : BufferAccessStrategy strategy, bool *hit) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 1.44 : 675ca0: 55 push %rbp 0.82 : 675ca1: 48 89 e5 mov %rsp,%rbp 0.82 : 675ca4: 41 57 push %r15 1.34 : 675ca6: 4d 89 cf mov %r9,%r15 0.57 : 675ca9: 41 56 push %r14 0.57 : 675cab: 41 55 push %r13 0.15 : 675cad: 41 54 push %r12 1.29 : 675caf: 53 push %rbx 0.57 : 675cb0: 48 83 ec 68 sub $0x68,%rsp 0.57 : 675cb4: 48 89 7d 80 mov %rdi,-0x80(%rbp) 1.54 : 675cb8: 89 95 78 ff ff ff mov %edx,-0x88(%rbp) 0.67 : 675cbe: 89 8d 74 ff ff ff mov %ecx,-0x8c(%rbp) 0.88 : 675cc4: 44 89 85 70 ff ff ff mov %r8d,-0x90(%rbp) 0.82 : 675ccb: 40 88 b5 7f ff ff ff mov %sil,-0x81(%rbp) : volatile BufferDesc *bufHdr; : Block bufBlock; : bool found; : bool isExtend; : bool isLocalBuf = SmgrIsTemp(smgr); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:578 1.18 : 675cd2: 83 7f 0c ff cmpl $0xffffffff,0xc(%rdi) : : *hit = false; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:580 6.54 : 675cd6: 48 8b 45 10 mov 0x10(%rbp),%rax : { : volatile BufferDesc *bufHdr; : Block bufBlock; : bool found; : bool isExtend; : bool isLocalBuf = SmgrIsTemp(smgr); 0.46 : 675cda: 0f 95 45 8f setne -0x71(%rbp) : : *hit = false; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:580 2.57 : 675cde: c6 00 00 movb $0x0,(%rax) : : /* Make sure we will have room to remember the buffer pin */ : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:583 1.08 : 675ce1: 48 8b 3d d8 4b 54 00 mov 0x544bd8(%rip),%rdi # bba8c0 1.75 : 675ce8: e8 83 51 12 00 callq 79ae70 : : isExtend = (blockNum == P_NEW); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:585 0.93 : 675ced: 83 bd 74 ff ff ff ff cmpl $0xffffffff,-0x8c(%rbp) : smgr->smgr_rnode.node.relNode, : smgr->smgr_rnode.backend, : isExtend); : : /* Substitute proper block number if caller asked for P_NEW */ : if (isExtend) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:595 0.51 : 675cf4: 0f 94 45 8e sete -0x72(%rbp) 2.21 : 675cf8: 0f 84 2f 05 00 00 je 67622d : blockNum = smgrnblocks(smgr, forkNum); : : if (isLocalBuf) 0.36 : 675cfe: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:598 0.77 : 675d02: 74 7b je 675d7f : { : bufHdr = LocalBufferAlloc(smgr, forkNum, blockNum, &found); 0.00 : 675d04: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : 675d0a: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 675d10: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 675d14: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 675d18: e8 c3 20 00 00 callq 677de0 : if (found) 0.00 : 675d1d: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : if (isExtend) : blockNum = smgrnblocks(smgr, forkNum); : : if (isLocalBuf) : { : bufHdr = LocalBufferAlloc(smgr, forkNum, blockNum, &found); 0.00 : 675d21: 49 89 c6 mov %rax,%r14 : if (found) 0.00 : 675d24: 0f 85 1b 04 00 00 jne 676145 : pgBufferUsage.local_blks_hit++; : else : pgBufferUsage.local_blks_read++; 0.00 : 675d2a: 48 83 05 56 9a 54 00 addq $0x1,0x549a56(%rip) # bbf788 0.00 : 675d31: 01 : } : : /* At this point we do NOT hold any locks. */ : : /* if it was already in the buffer pool, we're done */ : if (found) 0.00 : 675d32: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 675d36: 0f 84 fa 00 00 00 je 675e36 : { : if (!isExtend) 0.15 : 675d3c: 80 7d 8e 00 cmpb $0x0,-0x72(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:625 0.67 : 675d40: 0f 85 01 05 00 00 jne 676247 : { : /* Just need to update stats before we exit */ : *hit = true; 0.15 : 675d46: 48 8b 45 10 mov 0x10(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:628 0.82 : 675d4a: c6 00 01 movb $0x1,(%rax) : VacuumPageHit++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:629 1.85 : 675d4d: 83 05 80 43 54 00 01 addl $0x1,0x544380(%rip) # bba0d4 : : if (VacuumCostActive) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:631 1.44 : 675d54: 80 3d 89 43 54 00 00 cmpb $0x0,0x544389(%rip) # bba0e4 0.36 : 675d5b: 74 0c je 675d69 : VacuumCostBalance += VacuumCostPageHit; 0.00 : 675d5d: 8b 05 c9 2d 4f 00 mov 0x4f2dc9(%rip),%eax # b68b2c 0.00 : 675d63: 01 05 77 43 54 00 add %eax,0x544377(%rip) # bba0e0 : smgr->smgr_rnode.node.relNode, : smgr->smgr_rnode.backend, : isExtend, : found); : : return BufferDescriptorGetBuffer(bufHdr); 0.31 : 675d69: 41 8b 46 24 mov 0x24(%r14),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 2.21 : 675d6d: 48 83 c4 68 add $0x68,%rsp 0.88 : 675d71: 5b pop %rbx 0.41 : 675d72: 41 5c pop %r12 1.60 : 675d74: 41 5d pop %r13 0.67 : 675d76: 41 5e pop %r14 : smgr->smgr_rnode.node.relNode, : smgr->smgr_rnode.backend, : isExtend, : found); : : return BufferDescriptorGetBuffer(bufHdr); 0.10 : 675d78: 83 c0 01 add $0x1,%eax : } 0.26 : 675d7b: 41 5f pop %r15 1.24 : 675d7d: c9 leaveq 1.18 : 675d7e: c3 retq : int buf_id; : volatile BufferDesc *buf; : bool valid; : : /* create a tag so we can lookup the buffer */ : INIT_BUFFERTAG(newTag, smgr->smgr_rnode.node, forkNum, blockNum); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.24 : 675d7f: 48 8b 55 80 mov -0x80(%rbp),%rdx 1.13 : 675d83: 48 8b 02 mov (%rdx),%rax 1.85 : 675d86: 48 89 45 b0 mov %rax,-0x50(%rbp) 1.91 : 675d8a: 8b 42 08 mov 0x8(%rdx),%eax 0.26 : 675d8d: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.26 : 675d93: 89 45 b8 mov %eax,-0x48(%rbp) 1.24 : 675d96: 8b 85 78 ff ff ff mov -0x88(%rbp),%eax 0.15 : 675d9c: 89 55 c0 mov %edx,-0x40(%rbp) 0.31 : 675d9f: 89 45 bc mov %eax,-0x44(%rbp) 0.41 : 675da2: eb 11 jmp 675db5 0.00 : 675da4: 0f 1f 40 00 nopl 0x0(%rax) : valid = PinBuffer(foundbuf, strategy); : : /* Check whether someone recycled the buffer before we pinned it. */ : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) : { : UnpinBuffer(foundbuf, true); 0.00 : 675da8: be 01 00 00 00 mov $0x1,%esi 0.00 : 675dad: 48 89 df mov %rbx,%rdi 0.00 : 675db0: e8 7b ef ff ff callq 674d30 : /* create a tag so we can lookup the buffer */ : INIT_BUFFERTAG(newTag, smgr->smgr_rnode.node, forkNum, blockNum); : : /* see if the block is in the buffer pool already */ : start: : buf_id = BufTableLookup(&newTag); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:828 0.72 : 675db5: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.21 : 675db9: e8 22 e0 ff ff callq 673de0 : if (buf_id >= 0) 0.26 : 675dbe: 85 c0 test %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:829 0.82 : 675dc0: 0f 88 bb 01 00 00 js 675f81 : : /* : * Found it. Now, pin the buffer so no one can steal it from the : * buffer pool. : */ : foundbuf = &BufferDescriptors[buf_id]; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:837 1.60 : 675dc6: 48 63 d8 movslq %eax,%rbx : : valid = PinBuffer(foundbuf, strategy); 0.10 : 675dc9: 4c 89 fe mov %r15,%rsi : : /* : * Found it. Now, pin the buffer so no one can steal it from the : * buffer pool. : */ : foundbuf = &BufferDescriptors[buf_id]; 0.00 : 675dcc: 48 c1 e3 06 shl $0x6,%rbx 0.57 : 675dd0: 48 03 1d 29 9d 54 00 add 0x549d29(%rip),%rbx # bbfb00 : : valid = PinBuffer(foundbuf, strategy); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:839 1.39 : 675dd7: 48 89 df mov %rbx,%rdi 0.21 : 675dda: 49 89 dc mov %rbx,%r12 0.10 : 675ddd: e8 4e ee ff ff callq 674c30 0.31 : 675de2: 89 c2 mov %eax,%edx : : /* Check whether someone recycled the buffer before we pinned it. */ : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 1.70 : 675de4: 8b 45 b8 mov -0x48(%rbp),%eax 1.44 : 675de7: 3b 43 08 cmp 0x8(%rbx),%eax 0.00 : 675dea: 75 bc jne 675da8 1.91 : 675dec: 8b 45 b4 mov -0x4c(%rbp),%eax 0.15 : 675def: 3b 43 04 cmp 0x4(%rbx),%eax 0.00 : 675df2: 75 b4 jne 675da8 1.80 : 675df4: 8b 45 b0 mov -0x50(%rbp),%eax 0.15 : 675df7: 3b 03 cmp (%rbx),%eax 0.00 : 675df9: 75 ad jne 675da8 0.82 : 675dfb: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 675dfe: 3b 43 10 cmp 0x10(%rbx),%eax 0.00 : 675e01: 75 a5 jne 675da8 1.34 : 675e03: 8b 45 bc mov -0x44(%rbp),%eax 0.05 : 675e06: 3b 43 0c cmp 0xc(%rbx),%eax 0.00 : 675e09: 75 9d jne 675da8 : } : : *foundPtr = TRUE; : : /* Check to see if the correct data has been loaded into the buffer. */ : if (!valid) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:851 0.77 : 675e0b: 84 d2 test %dl,%dl : { : UnpinBuffer(foundbuf, true); : goto start; : } : : *foundPtr = TRUE; 0.00 : 675e0d: c6 45 cf 01 movb $0x1,-0x31(%rbp) : : /* Check to see if the correct data has been loaded into the buffer. */ : if (!valid) 1.44 : 675e11: 0f 84 33 02 00 00 je 67604a : * lookup the buffer. IO_IN_PROGRESS is set if the requested block is : * not currently in memory. : */ : bufHdr = BufferAlloc(smgr, relpersistence, forkNum, blockNum, : strategy, &found); : if (found) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:614 0.57 : 675e17: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : pgBufferUsage.shared_blks_hit++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:615 2.42 : 675e1b: 4d 89 e6 mov %r12,%r14 : * lookup the buffer. IO_IN_PROGRESS is set if the requested block is : * not currently in memory. : */ : bufHdr = BufferAlloc(smgr, relpersistence, forkNum, blockNum, : strategy, &found); : if (found) 0.10 : 675e1e: 0f 84 9a 03 00 00 je 6761be : pgBufferUsage.shared_blks_hit++; 1.65 : 675e24: 48 83 05 34 99 54 00 addq $0x1,0x549934(%rip) # bbf760 0.00 : 675e2b: 01 : } : : /* At this point we do NOT hold any locks. */ : : /* if it was already in the buffer pool, we're done */ : if (found) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:623 1.24 : 675e2c: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 1.49 : 675e30: 0f 85 06 ff ff ff jne 675d3c : * it's not been recycled) but come right back here to try smgrextend : * again. : */ : Assert(!(bufHdr->flags & BM_VALID)); /* spinlock not needed */ : : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.21 : 675e36: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.15 : 675e3a: 0f 84 8b 03 00 00 je 6761cb 0.00 : 675e40: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 675e44: ba fe ff ff ff mov $0xfffffffe,%edx 0.00 : 675e49: 29 c2 sub %eax,%edx : : if (isExtend) 0.00 : 675e4b: 80 7d 8e 00 cmpb $0x0,-0x72(%rbp) : * it's not been recycled) but come right back here to try smgrextend : * again. : */ : Assert(!(bufHdr->flags & BM_VALID)); /* spinlock not needed */ : : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 675e4f: 48 8b 05 c2 72 50 00 mov 0x5072c2(%rip),%rax # b7d118 0.00 : 675e56: 48 63 d2 movslq %edx,%rdx 0.00 : 675e59: 4c 8b 24 d0 mov (%rax,%rdx,8),%r12 : : if (isExtend) 0.00 : 675e5d: 0f 85 84 03 00 00 jne 6761e7 : { : /* : * Read in the page, unless the caller intends to overwrite it and : * just wants us to allocate a buffer. : */ : if (mode == RBM_ZERO) 0.00 : 675e63: 83 bd 70 ff ff ff 01 cmpl $0x1,-0x90(%rbp) 0.00 : 675e6a: 74 7e je 675eea : else : { : instr_time io_start, : io_time; : : if (track_io_timing) 0.36 : 675e6c: 80 3d ee 71 50 00 00 cmpb $0x0,0x5071ee(%rip) # b7d061 0.00 : 675e73: 0f 85 d1 04 00 00 jne 67634a : INSTR_TIME_SET_CURRENT(io_start); : : smgrread(smgr, forkNum, blockNum, (char *) bufBlock); 0.00 : 675e79: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.36 : 675e7f: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 675e85: 4c 89 e1 mov %r12,%rcx 0.00 : 675e88: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 675e8c: e8 7f 35 02 00 callq 699410 : : if (track_io_timing) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:735 2.63 : 675e91: 80 3d c9 71 50 00 00 cmpb $0x0,0x5071c9(%rip) # b7d061 2.57 : 675e98: 0f 85 bc 04 00 00 jne 67635a : pgstat_count_buffer_read_time(INSTR_TIME_GET_MICROSEC(io_time)); : INSTR_TIME_ADD(pgBufferUsage.blk_read_time, io_time); : } : : /* check for garbage data */ : if (!PageIsVerified((Page) bufBlock, blockNum)) 0.26 : 675e9e: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.26 : 675ea4: 4c 89 e7 mov %r12,%rdi 0.00 : 675ea7: e8 24 f0 01 00 callq 694ed0 0.00 : 675eac: 84 c0 test %al,%al 0.00 : 675eae: 75 47 jne 675ef7 : { : if (mode == RBM_ZERO_ON_ERROR || zero_damaged_pages) 0.00 : 675eb0: 83 bd 70 ff ff ff 02 cmpl $0x2,-0x90(%rbp) 0.00 : 675eb7: 74 0d je 675ec6 0.00 : 675eb9: 80 3d a0 71 50 00 00 cmpb $0x0,0x5071a0(%rip) # b7d060 0.00 : 675ec0: 0f 84 51 05 00 00 je 676417 : { : ereport(WARNING, 0.00 : 675ec6: 45 31 c0 xor %r8d,%r8d 0.00 : 675ec9: b9 a0 a0 8a 00 mov $0x8aa0a0,%ecx 0.00 : 675ece: ba f0 02 00 00 mov $0x2f0,%edx 0.00 : 675ed3: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 675ed8: bf 13 00 00 00 mov $0x13,%edi 0.00 : 675edd: e8 de 4b 10 00 callq 77aac0 0.00 : 675ee2: 84 c0 test %al,%al 0.00 : 675ee4: 0f 85 11 04 00 00 jne 6762fb : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("invalid page in block %u of relation %s; zeroing out page", : blockNum, : relpath(smgr->smgr_rnode, forkNum)))); : MemSet((char *) bufBlock, 0, BLCKSZ); 0.00 : 675eea: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 675eef: 31 c0 xor %eax,%eax 0.00 : 675ef1: 4c 89 e7 mov %r12,%rdi 0.00 : 675ef4: f3 48 ab rep stos %rax,%es:(%rdi) : relpath(smgr->smgr_rnode, forkNum)))); : } : } : } : : if (isLocalBuf) 0.41 : 675ef7: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:765 0.77 : 675efb: 0f 84 18 03 00 00 je 676219 : { : /* Only need to adjust flags */ : bufHdr->flags |= BM_VALID; 0.00 : 675f01: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 675f06: 83 c8 02 or $0x2,%eax 0.00 : 675f09: 66 41 89 46 14 mov %ax,0x14(%r14) : { : /* Set BM_VALID, terminate IO, and wake up any waiters */ : TerminateBufferIO(bufHdr, false, BM_VALID); : } : : VacuumPageMiss++; 0.26 : 675f0e: 83 05 c3 41 54 00 01 addl $0x1,0x5441c3(%rip) # bba0d8 : if (VacuumCostActive) 0.31 : 675f15: 80 3d c8 41 54 00 00 cmpb $0x0,0x5441c8(%rip) # bba0e4 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:777 0.57 : 675f1c: 0f 84 47 fe ff ff je 675d69 : VacuumCostBalance += VacuumCostPageMiss; 0.00 : 675f22: 8b 05 08 2c 4f 00 mov 0x4f2c08(%rip),%eax # b68b30 0.00 : 675f28: 01 05 b2 41 54 00 add %eax,0x5441b2(%rip) # bba0e0 0.00 : 675f2e: e9 36 fe ff ff jmpq 675d69 0.00 : 675f33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* : * Need to lock the buffer header too in order to change its tag. : */ : LockBufHdr(buf); 0.15 : 675f38: 49 8d 5e 20 lea 0x20(%r14),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.05 : 675f3c: b8 01 00 00 00 mov $0x1,%eax 0.00 : 675f41: f0 86 03 lock xchg %al,(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1039 3.81 : 675f44: 84 c0 test %al,%al 0.00 : 675f46: 0f 85 a4 01 00 00 jne 6760f0 : * Somebody could have pinned or re-dirtied the buffer while we were : * doing the I/O and making the new hashtable entry. If so, we can't : * recycle this buffer; we must undo everything we've done and start : * over with a new victim buffer. : */ : oldFlags = buf->flags; 0.00 : 675f4c: 41 0f b7 56 14 movzwl 0x14(%r14),%edx : if (buf->refcount == 1 && !(oldFlags & BM_DIRTY)) 0.05 : 675f51: 41 8b 46 18 mov 0x18(%r14),%eax 0.31 : 675f55: 83 e8 01 sub $0x1,%eax 0.00 : 675f58: 75 0c jne 675f66 0.00 : 675f5a: 0f b7 d2 movzwl %dx,%edx 0.00 : 675f5d: f6 c2 01 test $0x1,%dl 0.00 : 675f60: 0f 84 ec 01 00 00 je 676152 : break; : : UnlockBufHdr(buf); : BufTableDelete(&newTag); 0.00 : 675f66: 48 8d 7d b0 lea -0x50(%rbp),%rdi : */ : oldFlags = buf->flags; : if (buf->refcount == 1 && !(oldFlags & BM_DIRTY)) : break; : : UnlockBufHdr(buf); 0.00 : 675f6a: 41 c6 46 20 00 movb $0x0,0x20(%r14) : BufTableDelete(&newTag); 0.00 : 675f6f: e8 dc dd ff ff callq 673d50 : UnpinBuffer(buf, true); 0.00 : 675f74: be 01 00 00 00 mov $0x1,%esi 0.00 : 675f79: 4c 89 f7 mov %r14,%rdi 0.00 : 675f7c: e8 af ed ff ff callq 674d30 : { : /* : * Select a victim buffer. The buffer is returned with its header : * spinlock still held! : */ : buf = StrategyGetBuffer(strategy); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:880 0.51 : 675f81: 4c 89 ff mov %r15,%rdi 0.00 : 675f84: e8 d7 15 00 00 callq 677560 : : Assert(buf->refcount == 0); : : /* Must copy buffer flags while we still hold the spinlock */ : oldFlags = buf->flags; 0.05 : 675f89: 0f b7 58 14 movzwl 0x14(%rax),%ebx : : /* Pin the buffer and then release the buffer spinlock */ : PinBuffer_Locked(buf); 0.21 : 675f8d: 48 89 c7 mov %rax,%rdi : { : /* : * Select a victim buffer. The buffer is returned with its header : * spinlock still held! : */ : buf = StrategyGetBuffer(strategy); 0.00 : 675f90: 49 89 c6 mov %rax,%r14 : : /* Must copy buffer flags while we still hold the spinlock */ : oldFlags = buf->flags; : : /* Pin the buffer and then release the buffer spinlock */ : PinBuffer_Locked(buf); 0.00 : 675f93: e8 38 ec ff ff callq 674bd0 : * condition here, in that someone might dirty it after we released it : * above, or even while we are writing it out (since our share-lock : * won't prevent hint-bit updates). We will recheck the dirty bit : * after re-locking the buffer header. : */ : if (oldFlags & BM_DIRTY) 0.15 : 675f98: 0f b7 db movzwl %bx,%ebx 0.00 : 675f9b: f6 c3 01 test $0x1,%bl 0.00 : 675f9e: 0f 85 cc 00 00 00 jne 676070 : : /* : * To change the association of a valid buffer, we'll need to have : * exclusive lock on both the old and new mapping partitions. : */ : if (oldFlags & BM_TAG_VALID) 0.26 : 675fa4: 83 e3 04 and $0x4,%ebx 0.00 : 675fa7: 74 2c je 675fd5 : { : /* Save old tag. */ : oldTag = buf->tag; 0.10 : 675fa9: 49 8b 06 mov (%r14),%rax 0.15 : 675fac: 48 89 45 90 mov %rax,-0x70(%rbp) 0.36 : 675fb0: 49 8b 46 08 mov 0x8(%r14),%rax 0.10 : 675fb4: 48 89 45 98 mov %rax,-0x68(%rbp) 0.10 : 675fb8: 41 8b 46 10 mov 0x10(%r14),%eax 0.21 : 675fbc: 89 45 a0 mov %eax,-0x60(%rbp) 0.05 : 675fbf: eb 14 jmp 675fd5 0.00 : 675fc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : foundbuf = &BufferDescriptors[buf_id]; : valid = PinBuffer(foundbuf, strategy); : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) : { : UnpinBuffer(foundbuf, true); 0.00 : 675fc8: be 01 00 00 00 mov $0x1,%esi 0.00 : 675fcd: 48 89 df mov %rbx,%rdi 0.00 : 675fd0: e8 5b ed ff ff callq 674d30 : * allocated another buffer for the same block we want to read in. : * Note that we have not yet removed the hashtable entry for the old : * tag. : */ : enter: : buf_id = BufTableInsert(&newTag, buf->buf_id); 0.10 : 675fd5: 41 8b 76 24 mov 0x24(%r14),%esi 0.10 : 675fd9: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.10 : 675fdd: e8 be dd ff ff callq 673da0 : : if (buf_id >= 0) 0.26 : 675fe2: 85 c0 test %eax,%eax 0.00 : 675fe4: 0f 88 4e ff ff ff js 675f38 : * did what we were about to do. We can handle this as if we had : * found the buffer in the pool in the first place, but we must : * recheck the buffer tag after pinning it, because it could still : * get renamed under us. : */ : foundbuf = &BufferDescriptors[buf_id]; 0.00 : 675fea: 48 63 d8 movslq %eax,%rbx : valid = PinBuffer(foundbuf, strategy); 0.00 : 675fed: 4c 89 fe mov %r15,%rsi : * did what we were about to do. We can handle this as if we had : * found the buffer in the pool in the first place, but we must : * recheck the buffer tag after pinning it, because it could still : * get renamed under us. : */ : foundbuf = &BufferDescriptors[buf_id]; 0.00 : 675ff0: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 675ff4: 48 03 1d 05 9b 54 00 add 0x549b05(%rip),%rbx # bbfb00 : valid = PinBuffer(foundbuf, strategy); 0.00 : 675ffb: 48 89 df mov %rbx,%rdi 0.00 : 675ffe: 49 89 dc mov %rbx,%r12 0.00 : 676001: e8 2a ec ff ff callq 674c30 0.00 : 676006: 41 89 c5 mov %eax,%r13d : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) 0.00 : 676009: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 67600c: 3b 43 08 cmp 0x8(%rbx),%eax 0.00 : 67600f: 75 b7 jne 675fc8 0.00 : 676011: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 676014: 3b 43 04 cmp 0x4(%rbx),%eax 0.00 : 676017: 75 af jne 675fc8 0.00 : 676019: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 67601c: 3b 03 cmp (%rbx),%eax 0.00 : 67601e: 75 a8 jne 675fc8 0.00 : 676020: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 676023: 3b 43 10 cmp 0x10(%rbx),%eax 0.00 : 676026: 75 a0 jne 675fc8 0.00 : 676028: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 67602b: 3b 43 0c cmp 0xc(%rbx),%eax 0.00 : 67602e: 75 98 jne 675fc8 : : /* : * Collision confirmed. Give up the buffer we were planning to : * use. : */ : UnpinBuffer(buf, true); 0.00 : 676030: be 01 00 00 00 mov $0x1,%esi 0.00 : 676035: 4c 89 f7 mov %r14,%rdi 0.00 : 676038: e8 f3 ec ff ff callq 674d30 : : *foundPtr = TRUE; : : if (!valid) 0.00 : 67603d: 45 84 ed test %r13b,%r13b : * Collision confirmed. Give up the buffer we were planning to : * use. : */ : UnpinBuffer(buf, true); : : *foundPtr = TRUE; 0.00 : 676040: c6 45 cf 01 movb $0x1,-0x31(%rbp) : : if (!valid) 0.00 : 676044: 0f 85 cd fd ff ff jne 675e17 : * in the page, or (b) a previous read attempt failed. We : * have to wait for any active read attempt to finish, and : * then set up our own read attempt if the page is still not : * BM_VALID. StartBufferIO does it all. : */ : if (StartBufferIO(foundbuf, true)) 0.05 : 67604a: be 01 00 00 00 mov $0x1,%esi 0.00 : 67604f: 4c 89 e7 mov %r12,%rdi 0.00 : 676052: e8 e9 e3 ff ff callq 674440 0.00 : 676057: 84 c0 test %al,%al 0.00 : 676059: 0f 84 b8 fd ff ff je 675e17 : { : /* : * If we get here, previous attempts to read the buffer : * must have failed ... but we shall bravely try again. : */ : *foundPtr = FALSE; 0.00 : 67605f: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 676063: e9 af fd ff ff jmpq 675e17 0.00 : 676068: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67606f: 00 : * (This has been observed to happen when two backends are both : * trying to split btree index pages, and the second one just : * happens to be trying to split the page the first one got from : * StrategyGetBuffer.) : */ : if (LWLockConditionalAcquire(buf->content_lock, LW_SHARED)) 0.00 : 676070: 49 8b 7e 38 mov 0x38(%r14),%rdi 0.05 : 676074: be 01 00 00 00 mov $0x1,%esi 0.00 : 676079: e8 22 8f 01 00 callq 68efa0 0.00 : 67607e: 84 c0 test %al,%al 0.00 : 676080: 0f 84 ee fe ff ff je 675f74 : * would require a WAL flush, let the strategy decide whether : * to go ahead and write/reuse the buffer or to choose another : * victim. We need lock to inspect the page LSN, so this : * can't be done inside StrategyGetBuffer. : */ : if (strategy != NULL) 0.00 : 676086: 4d 85 ff test %r15,%r15 0.00 : 676089: 74 4c je 6760d7 : { : XLogRecPtr lsn; : : /* Read the LSN while holding buffer header lock */ : LockBufHdr(buf); 0.00 : 67608b: 49 8d 7e 20 lea 0x20(%r14),%rdi 0.00 : 67608f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 676094: f0 86 07 lock xchg %al,(%rdi) 0.00 : 676097: 84 c0 test %al,%al 0.00 : 676099: 0f 85 92 00 00 00 jne 676131 : lsn = BufferGetLSN(buf); 0.00 : 67609f: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 6760a3: 41 8b 56 24 mov 0x24(%r14),%edx 0.00 : 6760a7: 48 8b 0d 4a 9a 54 00 mov 0x549a4a(%rip),%rcx # bbfaf8 0.00 : 6760ae: 48 98 cltq 0.00 : 6760b0: 48 63 d2 movslq %edx,%rdx 0.00 : 6760b3: 48 c1 e0 0d shl $0xd,%rax 0.00 : 6760b7: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 6760bb: 8b 3c 01 mov (%rcx,%rax,1),%edi 0.00 : 6760be: 8b 44 11 04 mov 0x4(%rcx,%rdx,1),%eax 0.00 : 6760c2: 48 c1 e7 20 shl $0x20,%rdi 0.00 : 6760c6: 48 09 c7 or %rax,%rdi : UnlockBufHdr(buf); 0.00 : 6760c9: 41 c6 46 20 00 movb $0x0,0x20(%r14) : : if (XLogNeedsFlush(lsn) && 0.00 : 6760ce: e8 dd dc e5 ff callq 4d3db0 0.00 : 6760d3: 84 c0 test %al,%al 0.00 : 6760d5: 75 30 jne 676107 : TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(forkNum, blockNum, : smgr->smgr_rnode.node.spcNode, : smgr->smgr_rnode.node.dbNode, : smgr->smgr_rnode.node.relNode); : : FlushBuffer(buf, NULL); 0.00 : 6760d7: 4c 89 f7 mov %r14,%rdi 0.00 : 6760da: 31 f6 xor %esi,%esi 0.00 : 6760dc: e8 6f ee ff ff callq 674f50 : LWLockRelease(buf->content_lock); 0.00 : 6760e1: 49 8b 7e 38 mov 0x38(%r14),%rdi 0.00 : 6760e5: e8 b6 92 01 00 callq 68f3a0 0.00 : 6760ea: e9 b5 fe ff ff jmpq 675fa4 0.00 : 6760ef: 90 nop : } : : /* : * Need to lock the buffer header too in order to change its tag. : */ : LockBufHdr(buf); 0.00 : 6760f0: ba 0f 04 00 00 mov $0x40f,%edx 0.00 : 6760f5: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 6760fa: 48 89 df mov %rbx,%rdi 0.00 : 6760fd: e8 3e 9f 01 00 callq 690040 0.00 : 676102: e9 45 fe ff ff jmpq 675f4c : /* Read the LSN while holding buffer header lock */ : LockBufHdr(buf); : lsn = BufferGetLSN(buf); : UnlockBufHdr(buf); : : if (XLogNeedsFlush(lsn) && 0.00 : 676107: 4c 89 f6 mov %r14,%rsi 0.00 : 67610a: 4c 89 ff mov %r15,%rdi 0.00 : 67610d: e8 0e 11 00 00 callq 677220 0.00 : 676112: 84 c0 test %al,%al 0.00 : 676114: 74 c1 je 6760d7 : StrategyRejectBuffer(strategy, buf)) : { : /* Drop lock/pin and loop around for another buffer */ : LWLockRelease(buf->content_lock); 0.00 : 676116: 49 8b 7e 38 mov 0x38(%r14),%rdi 0.00 : 67611a: e8 81 92 01 00 callq 68f3a0 : UnpinBuffer(buf, true); 0.00 : 67611f: be 01 00 00 00 mov $0x1,%esi 0.00 : 676124: 4c 89 f7 mov %r14,%rdi 0.00 : 676127: e8 04 ec ff ff callq 674d30 0.00 : 67612c: e9 50 fe ff ff jmpq 675f81 : if (strategy != NULL) : { : XLogRecPtr lsn; : : /* Read the LSN while holding buffer header lock */ : LockBufHdr(buf); 0.00 : 676131: ba a0 03 00 00 mov $0x3a0,%edx 0.00 : 676136: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67613b: e8 00 9f 01 00 callq 690040 0.00 : 676140: e9 5a ff ff ff jmpq 67609f : : if (isLocalBuf) : { : bufHdr = LocalBufferAlloc(smgr, forkNum, blockNum, &found); : if (found) : pgBufferUsage.local_blks_hit++; 0.00 : 676145: 48 83 05 33 96 54 00 addq $0x1,0x549633(%rip) # bbf780 0.00 : 67614c: 01 0.00 : 67614d: e9 e0 fb ff ff jmpq 675d32 : * Clearing BM_VALID here is necessary, clearing the dirtybits is just : * paranoia. We also reset the usage_count since any recency of use of : * the old content is no longer relevant. (The usage_count starts out at : * 1 so that the buffer can survive one clock-sweep pass.) : */ : buf->tag = newTag; 0.00 : 676152: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.15 : 676156: 49 89 06 mov %rax,(%r14) 0.00 : 676159: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 67615d: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 676161: 8b 45 c0 mov -0x40(%rbp),%eax 0.15 : 676164: 41 89 46 10 mov %eax,0x10(%r14) : buf->flags &= ~(BM_VALID | BM_DIRTY | BM_JUST_DIRTIED | BM_CHECKPOINT_NEEDED | BM_IO_ERROR | BM_PERMANENT); 0.00 : 676168: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 67616d: 66 25 4c fe and $0xfe4c,%ax 0.00 : 676171: 66 41 89 46 14 mov %ax,0x14(%r14) : if (relpersistence == RELPERSISTENCE_PERMANENT) 0.31 : 676176: 80 bd 7f ff ff ff 70 cmpb $0x70,-0x81(%rbp) 0.00 : 67617d: 0f 84 73 02 00 00 je 6763f6 : buf->flags |= BM_TAG_VALID | BM_PERMANENT; : else : buf->flags |= BM_TAG_VALID; 0.00 : 676183: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 676188: 83 c8 04 or $0x4,%eax 0.00 : 67618b: 66 41 89 46 14 mov %ax,0x14(%r14) : buf->usage_count = 1; 0.00 : 676190: 66 41 c7 46 16 01 00 movw $0x1,0x16(%r14) : : UnlockBufHdr(buf); : : if (oldFlags & BM_TAG_VALID) 0.00 : 676197: 83 e2 04 and $0x4,%edx : buf->flags |= BM_TAG_VALID | BM_PERMANENT; : else : buf->flags |= BM_TAG_VALID; : buf->usage_count = 1; : : UnlockBufHdr(buf); 0.15 : 67619a: 41 c6 46 20 00 movb $0x0,0x20(%r14) : : if (oldFlags & BM_TAG_VALID) 0.00 : 67619f: 0f 85 64 02 00 00 jne 676409 : /* : * Buffer contents are currently invalid. Try to get the io_in_progress : * lock. If StartBufferIO returns false, then someone else managed to : * read it before we did, so there's nothing left for BufferAlloc() to do. : */ : if (StartBufferIO(buf, true)) 0.26 : 6761a5: be 01 00 00 00 mov $0x1,%esi 0.00 : 6761aa: 4c 89 f7 mov %r14,%rdi 0.00 : 6761ad: e8 8e e2 ff ff callq 674440 0.10 : 6761b2: 84 c0 test %al,%al 0.00 : 6761b4: 0f 84 d5 00 00 00 je 67628f : *foundPtr = FALSE; 0.00 : 6761ba: c6 45 cf 00 movb $0x0,-0x31(%rbp) : bufHdr = BufferAlloc(smgr, relpersistence, forkNum, blockNum, : strategy, &found); : if (found) : pgBufferUsage.shared_blks_hit++; : else : pgBufferUsage.shared_blks_read++; 0.00 : 6761be: 48 83 05 a2 95 54 00 addq $0x1,0x5495a2(%rip) # bbf768 0.00 : 6761c5: 01 0.21 : 6761c6: e9 67 fb ff ff jmpq 675d32 : * it's not been recycled) but come right back here to try smgrextend : * again. : */ : Assert(!(bufHdr->flags & BM_VALID)); /* spinlock not needed */ : : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.26 : 6761cb: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 6761cf: 4c 63 e0 movslq %eax,%r12 0.00 : 6761d2: 49 c1 e4 0d shl $0xd,%r12 0.00 : 6761d6: 4c 03 25 1b 99 54 00 add 0x54991b(%rip),%r12 # bbfaf8 : : if (isExtend) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:710 0.51 : 6761dd: 80 7d 8e 00 cmpb $0x0,-0x72(%rbp) 0.00 : 6761e1: 0f 84 7c fc ff ff je 675e63 : { : /* new buffers are zero-filled */ : MemSet((char *) bufBlock, 0, BLCKSZ); 0.00 : 6761e7: 31 c0 xor %eax,%eax 0.00 : 6761e9: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 6761ee: 4c 89 e7 mov %r12,%rdi 0.21 : 6761f1: f3 48 ab rep stos %rax,%es:(%rdi) : /* don't set checksum for all-zero page */ : smgrextend(smgr, forkNum, blockNum, (char *) bufBlock, false); 0.00 : 6761f4: 45 31 c0 xor %r8d,%r8d 0.00 : 6761f7: 4c 89 e1 mov %r12,%rcx 0.00 : 6761fa: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : 676200: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 676206: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 67620a: e8 c1 31 02 00 callq 6993d0 : relpath(smgr->smgr_rnode, forkNum)))); : } : } : } : : if (isLocalBuf) 0.00 : 67620f: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 676213: 0f 85 e8 fc ff ff jne 675f01 : bufHdr->flags |= BM_VALID; : } : else : { : /* Set BM_VALID, terminate IO, and wake up any waiters */ : TerminateBufferIO(bufHdr, false, BM_VALID); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:773 0.93 : 676219: ba 02 00 00 00 mov $0x2,%edx 0.41 : 67621e: 31 f6 xor %esi,%esi 0.00 : 676220: 4c 89 f7 mov %r14,%rdi 0.10 : 676223: e8 a8 df ff ff callq 6741d0 0.21 : 676228: e9 e1 fc ff ff jmpq 675f0e : smgr->smgr_rnode.backend, : isExtend); : : /* Substitute proper block number if caller asked for P_NEW */ : if (isExtend) : blockNum = smgrnblocks(smgr, forkNum); 0.00 : 67622d: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 676233: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 676237: e8 14 32 02 00 callq 699450 0.00 : 67623c: 89 85 74 ff ff ff mov %eax,-0x8c(%rbp) 0.00 : 676242: e9 b7 fa ff ff jmpq 675cfe : * lseek(SEEK_END) result that doesn't account for a recent write. In : * that situation, the pre-existing buffer would contain valid data : * that we don't want to overwrite. Since the legitimate case should : * always have left a zero-filled buffer, complain if not PageIsNew. : */ : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 676247: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 67624b: 0f 85 8c 00 00 00 jne 6762dd 0.00 : 676251: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 676255: 48 98 cltq 0.00 : 676257: 48 c1 e0 0d shl $0xd,%rax 0.00 : 67625b: 48 03 05 96 98 54 00 add 0x549896(%rip),%rax # bbfaf8 : if (!PageIsNew((Page) bufBlock)) 0.00 : 676262: 66 83 78 0e 00 cmpw $0x0,0xe(%rax) 0.00 : 676267: 0f 85 19 02 00 00 jne 676486 : * We *must* do smgrextend before succeeding, else the page will not : * be reserved by the kernel, and the next P_NEW call will decide to : * return the same page. Clear the BM_VALID bit, do the StartBufferIO : * call that BufferAlloc didn't, and proceed. : */ : if (isLocalBuf) 0.00 : 67626d: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 676271: 49 8d 5e 20 lea 0x20(%r14),%rbx 0.00 : 676275: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 67627b: 74 54 je 6762d1 : { : /* Only need to adjust flags */ : Assert(bufHdr->flags & BM_VALID); : bufHdr->flags &= ~BM_VALID; 0.00 : 67627d: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 676282: 83 e0 fd and $0xfffffffd,%eax 0.00 : 676285: 66 41 89 46 14 mov %ax,0x14(%r14) 0.00 : 67628a: e9 b1 fb ff ff jmpq 675e40 : * read it before we did, so there's nothing left for BufferAlloc() to do. : */ : if (StartBufferIO(buf, true)) : *foundPtr = FALSE; : else : *foundPtr = TRUE; 0.00 : 67628f: c6 45 cf 01 movb $0x1,-0x31(%rbp) 0.00 : 676293: e9 8c fb ff ff jmpq 675e24 : * BM_VALID between our clearing it and StartBufferIO inspecting : * it. : */ : do : { : LockBufHdr(bufHdr); 0.00 : 676298: ba ae 02 00 00 mov $0x2ae,%edx 0.00 : 67629d: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 6762a2: 48 89 df mov %rbx,%rdi 0.00 : 6762a5: e8 96 9d 01 00 callq 690040 : Assert(bufHdr->flags & BM_VALID); : bufHdr->flags &= ~BM_VALID; 0.00 : 6762aa: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 6762af: 83 e0 fd and $0xfffffffd,%eax 0.00 : 6762b2: 66 41 89 46 14 mov %ax,0x14(%r14) : UnlockBufHdr(bufHdr); : } while (!StartBufferIO(bufHdr, true)); 0.00 : 6762b7: be 01 00 00 00 mov $0x1,%esi : do : { : LockBufHdr(bufHdr); : Assert(bufHdr->flags & BM_VALID); : bufHdr->flags &= ~BM_VALID; : UnlockBufHdr(bufHdr); 0.00 : 6762bc: 41 c6 46 20 00 movb $0x0,0x20(%r14) : } while (!StartBufferIO(bufHdr, true)); 0.00 : 6762c1: 4c 89 f7 mov %r14,%rdi 0.00 : 6762c4: e8 77 e1 ff ff callq 674440 0.00 : 6762c9: 84 c0 test %al,%al 0.00 : 6762cb: 0f 85 fa fe ff ff jne 6761cb 0.00 : 6762d1: 44 89 e0 mov %r12d,%eax 0.00 : 6762d4: f0 86 03 lock xchg %al,(%rbx) : * BM_VALID between our clearing it and StartBufferIO inspecting : * it. : */ : do : { : LockBufHdr(bufHdr); 0.00 : 6762d7: 84 c0 test %al,%al 0.00 : 6762d9: 74 cf je 6762aa 0.00 : 6762db: eb bb jmp 676298 : * lseek(SEEK_END) result that doesn't account for a recent write. In : * that situation, the pre-existing buffer would contain valid data : * that we don't want to overwrite. Since the legitimate case should : * always have left a zero-filled buffer, complain if not PageIsNew. : */ : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 6762dd: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 6762e1: ba fe ff ff ff mov $0xfffffffe,%edx 0.00 : 6762e6: 29 c2 sub %eax,%edx 0.00 : 6762e8: 48 8b 05 29 6e 50 00 mov 0x506e29(%rip),%rax # b7d118 0.00 : 6762ef: 48 63 d2 movslq %edx,%rdx 0.00 : 6762f2: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 6762f6: e9 67 ff ff ff jmpq 676262 : /* check for garbage data */ : if (!PageIsVerified((Page) bufBlock, blockNum)) : { : if (mode == RBM_ZERO_ON_ERROR || zero_damaged_pages) : { : ereport(WARNING, 0.00 : 6762fb: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 6762ff: 44 8b 85 78 ff ff ff mov -0x88(%rbp),%r8d 0.00 : 676306: 48 89 d0 mov %rdx,%rax 0.00 : 676309: 8b 4a 0c mov 0xc(%rdx),%ecx 0.00 : 67630c: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 67630f: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 676312: 8b 30 mov (%rax),%esi 0.00 : 676314: e8 b7 82 13 00 callq 7ae5d0 0.00 : 676319: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.00 : 67631f: 48 89 c2 mov %rax,%rdx 0.00 : 676322: bf c8 9e 8a 00 mov $0x8a9ec8,%edi 0.00 : 676327: 31 c0 xor %eax,%eax 0.00 : 676329: e8 72 65 10 00 callq 77c8a0 0.00 : 67632e: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 676333: 89 c3 mov %eax,%ebx 0.00 : 676335: e8 16 6a 10 00 callq 77cd50 0.00 : 67633a: 89 de mov %ebx,%esi 0.00 : 67633c: 89 c7 mov %eax,%edi 0.00 : 67633e: 31 c0 xor %eax,%eax 0.00 : 676340: e8 9b 42 10 00 callq 77a5e0 0.00 : 676345: e9 a0 fb ff ff jmpq 675eea : { : instr_time io_start, : io_time; : : if (track_io_timing) : INSTR_TIME_SET_CURRENT(io_start); 0.00 : 67634a: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 67634e: 31 f6 xor %esi,%esi 0.00 : 676350: e8 6b 32 df ff callq 4695c0 0.00 : 676355: e9 1f fb ff ff jmpq 675e79 : : smgrread(smgr, forkNum, blockNum, (char *) bufBlock); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); 0.00 : 67635a: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 67635e: 31 f6 xor %esi,%esi 0.00 : 676360: e8 5b 32 df ff callq 4695c0 : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 676365: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 676369: 48 2b 55 98 sub -0x68(%rbp),%rdx 0.00 : 67636d: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 676371: 48 2b 45 90 sub -0x70(%rbp),%rax 0.00 : 676375: 48 85 d2 test %rdx,%rdx 0.00 : 676378: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 67637c: 48 89 c1 mov %rax,%rcx 0.00 : 67637f: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 676383: 79 18 jns 67639d : */ : static Buffer : ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum, : BlockNumber blockNum, ReadBufferMode mode, : BufferAccessStrategy strategy, bool *hit) : { 0.00 : 676385: 48 83 e8 01 sub $0x1,%rax : smgrread(smgr, forkNum, blockNum, (char *) bufBlock); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 676389: 48 81 c2 40 42 0f 00 add $0xf4240,%rdx 0.00 : 676390: 78 f3 js 676385 0.00 : 676392: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 676396: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 67639a: 48 89 c1 mov %rax,%rcx : pgstat_count_buffer_read_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 67639d: 48 69 c1 40 42 0f 00 imul $0xf4240,%rcx,%rax : INSTR_TIME_ADD(pgBufferUsage.blk_read_time, io_time); 0.00 : 6763a4: 48 01 0d 05 94 54 00 add %rcx,0x549405(%rip) # bbf7b0 : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_read_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 6763ab: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 6763af: 48 01 05 0a 58 50 00 add %rax,0x50580a(%rip) # b7bbc0 : INSTR_TIME_ADD(pgBufferUsage.blk_read_time, io_time); 0.00 : 6763b6: 48 8b 05 fb 93 54 00 mov 0x5493fb(%rip),%rax # bbf7b8 0.00 : 6763bd: 48 03 45 b8 add -0x48(%rbp),%rax 0.00 : 6763c1: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6763c7: 48 89 05 ea 93 54 00 mov %rax,0x5493ea(%rip) # bbf7b8 0.00 : 6763ce: 0f 8e ca fa ff ff jle 675e9e 0.00 : 6763d4: 48 2d 40 42 0f 00 sub $0xf4240,%rax 0.00 : 6763da: 48 83 05 ce 93 54 00 addq $0x1,0x5493ce(%rip) # bbf7b0 0.00 : 6763e1: 01 0.00 : 6763e2: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6763e8: 48 89 05 c9 93 54 00 mov %rax,0x5493c9(%rip) # bbf7b8 0.00 : 6763ef: 7f e3 jg 6763d4 0.00 : 6763f1: e9 a8 fa ff ff jmpq 675e9e : * 1 so that the buffer can survive one clock-sweep pass.) : */ : buf->tag = newTag; : buf->flags &= ~(BM_VALID | BM_DIRTY | BM_JUST_DIRTIED | BM_CHECKPOINT_NEEDED | BM_IO_ERROR | BM_PERMANENT); : if (relpersistence == RELPERSISTENCE_PERMANENT) : buf->flags |= BM_TAG_VALID | BM_PERMANENT; 0.10 : 6763f6: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.26 : 6763fb: 66 0d 04 01 or $0x104,%ax 0.21 : 6763ff: 66 41 89 46 14 mov %ax,0x14(%r14) 0.15 : 676404: e9 87 fd ff ff jmpq 676190 : buf->usage_count = 1; : : UnlockBufHdr(buf); : : if (oldFlags & BM_TAG_VALID) : BufTableDelete(&oldTag); 0.00 : 676409: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.05 : 67640d: e8 3e d9 ff ff callq 673d50 0.00 : 676412: e9 8e fd ff ff jmpq 6761a5 : blockNum, : relpath(smgr->smgr_rnode, forkNum)))); : MemSet((char *) bufBlock, 0, BLCKSZ); : } : else : ereport(ERROR, 0.00 : 676417: 45 31 c0 xor %r8d,%r8d 0.00 : 67641a: b9 a0 a0 8a 00 mov $0x8aa0a0,%ecx 0.00 : 67641f: ba f8 02 00 00 mov $0x2f8,%edx 0.00 : 676424: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 676429: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67642e: e8 8d 46 10 00 callq 77aac0 0.00 : 676433: 84 c0 test %al,%al 0.00 : 676435: 74 4a je 676481 0.00 : 676437: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 67643b: 44 8b 85 78 ff ff ff mov -0x88(%rbp),%r8d 0.00 : 676442: 48 89 d0 mov %rdx,%rax 0.00 : 676445: 8b 4a 0c mov 0xc(%rdx),%ecx 0.00 : 676448: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 67644b: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 67644e: 8b 30 mov (%rax),%esi 0.00 : 676450: e8 7b 81 13 00 callq 7ae5d0 0.00 : 676455: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.00 : 67645b: 48 89 c2 mov %rax,%rdx 0.00 : 67645e: bf 48 28 88 00 mov $0x882848,%edi 0.00 : 676463: 31 c0 xor %eax,%eax 0.00 : 676465: e8 36 64 10 00 callq 77c8a0 0.00 : 67646a: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 67646f: 89 c3 mov %eax,%ebx 0.00 : 676471: e8 da 68 10 00 callq 77cd50 0.00 : 676476: 89 de mov %ebx,%esi 0.00 : 676478: 89 c7 mov %eax,%edi 0.00 : 67647a: 31 c0 xor %eax,%eax 0.00 : 67647c: e8 5f 41 10 00 callq 77a5e0 0.00 : 676481: e8 4a 30 df ff callq 4694d0 : * that we don't want to overwrite. Since the legitimate case should : * always have left a zero-filled buffer, complain if not PageIsNew. : */ : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); : if (!PageIsNew((Page) bufBlock)) : ereport(ERROR, 0.00 : 676486: 45 31 c0 xor %r8d,%r8d 0.00 : 676489: b9 a0 a0 8a 00 mov $0x8aa0a0,%ecx 0.00 : 67648e: ba 97 02 00 00 mov $0x297,%edx 0.00 : 676493: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 676498: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67649d: e8 1e 46 10 00 callq 77aac0 0.00 : 6764a2: 84 c0 test %al,%al 0.00 : 6764a4: 74 db je 676481 0.00 : 6764a6: bf 40 9e 8a 00 mov $0x8a9e40,%edi 0.00 : 6764ab: 31 c0 xor %eax,%eax 0.00 : 6764ad: e8 ee 57 10 00 callq 77bca0 0.00 : 6764b2: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 6764b6: 89 c3 mov %eax,%ebx 0.00 : 6764b8: 44 8b 85 78 ff ff ff mov -0x88(%rbp),%r8d 0.00 : 6764bf: 48 89 d0 mov %rdx,%rax 0.00 : 6764c2: 8b 4a 0c mov 0xc(%rdx),%ecx 0.00 : 6764c5: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 6764c8: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 6764cb: 8b 30 mov (%rax),%esi 0.00 : 6764cd: e8 fe 80 13 00 callq 7ae5d0 0.00 : 6764d2: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.00 : 6764d8: 48 89 c2 mov %rax,%rdx 0.00 : 6764db: bf 90 9e 8a 00 mov $0x8a9e90,%edi 0.00 : 6764e0: 31 c0 xor %eax,%eax 0.00 : 6764e2: e8 b9 63 10 00 callq 77c8a0 0.00 : 6764e7: 89 de mov %ebx,%esi 0.00 : 6764e9: 89 c7 mov %eax,%edi 0.00 : 6764eb: 31 c0 xor %eax,%eax 0.00 : 6764ed: e8 ee 40 10 00 callq 77a5e0 0.00 : 6764f2: eb 8d jmp 676481 Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 39.27 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:223 9.33 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:223 9.14 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:223 7.71 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 6.80 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:223 3.37 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 2.53 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:229 2.14 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 2.01 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.81 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.81 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.75 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.49 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.36 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.30 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:223 1.10 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.04 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 0.97 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:209 0.97 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:219 0.78 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:219 0.78 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:219 0.58 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:209 0.58 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:212 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000404490 : : DSS_HUGE nTemp, : nRange; : int32_t nLow32 = (int32_t)nLow, : nHigh32 = (int32_t)nHigh; : : if (nStream < 0 || nStream > MAX_STREAM) /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:209 0.97 : 404490: 48 83 fa 30 cmp $0x30,%rdx 0.58 : 404494: b8 00 00 00 00 mov $0x0,%eax 0.45 : 404499: 48 0f 43 d0 cmovae %rax,%rdx : nStream = 0; : : if ((nHigh == MAX_LONG) && (nLow == 0)) /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:212 0.58 : 40449d: 48 81 fe ff ff ff 7f cmp $0x7fffffff,%rsi 0.00 : 4044a4: 74 7a je 404520 : dRange = DOUBLE_CAST (nHigh32 - nLow32 + 1); : nRange = nHigh32 - nLow32 + 1; : } : else : { : dRange = DOUBLE_CAST (nHigh - nLow + 1); /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:219 0.78 : 4044a6: 48 29 fe sub %rdi,%rsi 0.78 : 4044a9: 48 8d 46 01 lea 0x1(%rsi),%rax 0.97 : 4044ad: f2 48 0f 2a c8 cvtsi2sd %rax,%xmm1 : * next random number. The routine generates all numbers in the : * range 1 .. nM-1. : */ : : { : nSeed = (nSeed * 16807) % 2147483647; /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.81 : 4044b2: 48 89 d6 mov %rdx,%rsi 0.45 : 4044b5: 48 ba 03 00 00 00 01 movabs $0x8000000100000003,%rdx 0.00 : 4044bc: 00 00 80 0.32 : 4044bf: 48 c1 e6 05 shl $0x5,%rsi 0.00 : 4044c3: 48 8b 86 e8 a4 60 00 mov 0x60a4e8(%rsi),%rax 1.04 : 4044ca: 48 69 c8 a7 41 00 00 imul $0x41a7,%rax,%rcx 3.37 : 4044d1: 48 89 c8 mov %rcx,%rax 1.10 : 4044d4: 48 f7 ea imul %rdx /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 7.71 : 4044d7: 48 89 c8 mov %rcx,%rax 0.13 : 4044da: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 4044de: 48 01 ca add %rcx,%rdx /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:180 1.36 : 4044e1: 48 c1 fa 1e sar $0x1e,%rdx 2.01 : 4044e5: 48 29 c2 sub %rax,%rdx 2.14 : 4044e8: 48 89 d0 mov %rdx,%rax 1.75 : 4044eb: 48 c1 e0 1f shl $0x1f,%rax 1.81 : 4044ef: 48 29 d0 sub %rdx,%rax 1.49 : 4044f2: 48 89 ca mov %rcx,%rdx 0.00 : 4044f5: 48 29 c2 sub %rax,%rdx : { : dRange = DOUBLE_CAST (nHigh - nLow + 1); : nRange = nHigh - nLow + 1; : } : : Seed[nStream].value = NextRand(Seed[nStream].value); /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:223 1.30 : 4044f8: f2 48 0f 2a c2 cvtsi2sd %rdx,%xmm0 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:223 9.14 : 4044fd: 48 89 96 e8 a4 60 00 mov %rdx,0x60a4e8(%rsi) 0.00 : 404504: f2 0f 5e 05 b4 5f 20 divsd 0x205fb4(%rip),%xmm0 # 60a4c0 0.00 : 40450b: 00 39.27 : 40450c: f2 0f 59 c1 mulsd %xmm1,%xmm0 9.33 : 404510: f2 48 0f 2c c0 cvttsd2si %xmm0,%rax 6.80 : 404515: 48 01 f8 add %rdi,%rax : #ifdef RNG_TEST : Seed[nStream].nCalls += 1; : #endif : nTemp = (DSS_HUGE) (((double) Seed[nStream].value / dM) * (dRange)); : return (nLow + nTemp); : } /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:229 2.53 : 404518: c3 retq 0.00 : 404519: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : nHigh32 = (int32_t)nHigh; : : if (nStream < 0 || nStream > MAX_STREAM) : nStream = 0; : : if ((nHigh == MAX_LONG) && (nLow == 0)) 0.00 : 404520: 48 85 ff test %rdi,%rdi 0.00 : 404523: 75 81 jne 4044a6 0.00 : 404525: f2 0f 10 0d 8b 3b 00 movsd 0x3b8b(%rip),%xmm1 # 4080b8 0.00 : 40452c: 00 0.00 : 40452d: eb 83 jmp 4044b2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2672 4.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2637 4.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2637 4.26 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2639 3.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2633 3.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2619 3.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2524 3.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2619 3.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2639 3.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2620 2.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 2.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 2.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 2.18 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2552 2.13 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2610 2.13 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2641 1.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2670 1.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2617 1.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2596 1.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2641 1.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2672 1.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2672 1.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2558 1.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2584 1.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2505 1.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2507 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2523 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 1.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2505 1.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2593 1.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2633 1.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 1.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2542 1.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2600 0.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2505 0.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2541 0.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2566 0.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2530 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2505 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2621 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2641 0.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2541 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2506 0.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2594 0.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2592 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2574 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2604 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2600 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2567 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2600 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b0d90 : : */ : static Datum : ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate, : ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2505 0.88 : 5b0d90: 55 push %rbp 1.19 : 5b0d91: 48 89 e5 mov %rsp,%rbp 0.10 : 5b0d94: 41 57 push %r15 0.36 : 5b0d96: 41 56 push %r14 0.99 : 5b0d98: 41 55 push %r13 0.00 : 5b0d9a: 41 54 push %r12 0.21 : 5b0d9c: 49 89 f4 mov %rsi,%r12 0.21 : 5b0d9f: 53 push %rbx 1.09 : 5b0da0: 48 89 fb mov %rdi,%rbx 0.00 : 5b0da3: 48 83 ec 38 sub $0x38,%rsp 0.47 : 5b0da7: 48 89 55 b0 mov %rdx,-0x50(%rbp) : ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) sstate->fxprstate.xprstate.expr; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2506 0.68 : 5b0dab: 48 8b 47 08 mov 0x8(%rdi),%rax : bits8 *bitmap; : int bitmask; : : /* Set default values for result flags: non-null, not a set result */ : *isNull = false; : if (isDone) 0.00 : 5b0daf: 48 85 c9 test %rcx,%rcx : ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate, : ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { : ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) sstate->fxprstate.xprstate.expr; : bool useOr = opexpr->useOr; 0.26 : 5b0db2: 0f b6 50 0c movzbl 0xc(%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2507 1.14 : 5b0db6: 88 55 bf mov %dl,-0x41(%rbp) : char *s; : bits8 *bitmap; : int bitmask; : : /* Set default values for result flags: non-null, not a set result */ : *isNull = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2523 1.14 : 5b0db9: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.05 : 5b0dbd: c6 02 00 movb $0x0,(%rdx) : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2524 3.17 : 5b0dc0: 74 06 je 5b0dc8 : *isDone = ExprSingleResult; 0.00 : 5b0dc2: c7 01 00 00 00 00 movl $0x0,(%rcx) : : /* : * Initialize function cache if first time through : */ : if (sstate->fxprstate.func.fn_oid == InvalidOid) 0.00 : 5b0dc8: 44 8b 43 28 mov 0x28(%rbx),%r8d /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2530 0.94 : 5b0dcc: 45 85 c0 test %r8d,%r8d 0.00 : 5b0dcf: 0f 84 43 02 00 00 je 5b1018 : } : : /* : * Evaluate arguments : */ : fcinfo = &sstate->fxprstate.fcinfo_data; 0.00 : 5b0dd5: 48 8d 4b 70 lea 0x70(%rbx),%rcx : argDone = ExecEvalFuncArgs(fcinfo, sstate->fxprstate.args, econtext); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2541 0.99 : 5b0dd9: 4c 89 e2 mov %r12,%rdx : } : : /* : * Evaluate arguments : */ : fcinfo = &sstate->fxprstate.fcinfo_data; 0.00 : 5b0ddc: 48 89 4d c8 mov %rcx,-0x38(%rbp) : argDone = ExecEvalFuncArgs(fcinfo, sstate->fxprstate.args, econtext); 0.31 : 5b0de0: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 5b0de4: 48 89 cf mov %rcx,%rdi 0.83 : 5b0de7: e8 44 c6 ff ff callq 5ad430 : if (argDone != ExprSingleResult) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2542 1.04 : 5b0dec: 85 c0 test %eax,%eax 0.00 : 5b0dee: 0f 85 a0 03 00 00 jne 5b1194 : : /* : * If the array is NULL then we return NULL --- it's not very meaningful : * to do anything else, even if the operator isn't strict. : */ : if (fcinfo->argnull[1]) 0.00 : 5b0df4: 80 bb b1 03 00 00 00 cmpb $0x0,0x3b1(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2552 2.18 : 5b0dfb: 74 1b je 5b0e18 : { : *isNull = true; 0.00 : 5b0dfd: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 5b0e01: c6 00 01 movb $0x1,(%rax) 0.00 : 5b0e04: 31 c0 xor %eax,%eax : } : } : : *isNull = resultnull; : return result; : } 0.00 : 5b0e06: 48 83 c4 38 add $0x38,%rsp 0.00 : 5b0e0a: 5b pop %rbx 0.00 : 5b0e0b: 41 5c pop %r12 0.00 : 5b0e0d: 41 5d pop %r13 0.00 : 5b0e0f: 41 5e pop %r14 0.00 : 5b0e11: 41 5f pop %r15 0.00 : 5b0e13: c9 leaveq 0.00 : 5b0e14: c3 retq 0.00 : 5b0e15: 0f 1f 00 nopl (%rax) : { : *isNull = true; : return (Datum) 0; : } : /* Else okay to fetch and detoast the array */ : arr = DatumGetArrayTypeP(fcinfo->arg[1]); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2558 1.30 : 5b0e18: 48 8b bb 98 00 00 00 mov 0x98(%rbx),%rdi 0.05 : 5b0e1f: e8 ec de 1c 00 callq 77ed10 : * If the array is empty, we return either FALSE or TRUE per the useOr : * flag. This is correct even if the scalar is NULL; since we would : * evaluate the operator zero times, it matters not whether it would want : * to return NULL. : */ : nitems = ArrayGetNItems(ARR_NDIM(arr), ARR_DIMS(arr)); 0.00 : 5b0e24: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 5b0e27: 48 8d 70 10 lea 0x10(%rax),%rsi : { : *isNull = true; : return (Datum) 0; : } : /* Else okay to fetch and detoast the array */ : arr = DatumGetArrayTypeP(fcinfo->arg[1]); 0.21 : 5b0e2b: 49 89 c5 mov %rax,%r13 : * If the array is empty, we return either FALSE or TRUE per the useOr : * flag. This is correct even if the scalar is NULL; since we would : * evaluate the operator zero times, it matters not whether it would want : * to return NULL. : */ : nitems = ArrayGetNItems(ARR_NDIM(arr), ARR_DIMS(arr)); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2566 0.99 : 5b0e2e: e8 1d 35 11 00 callq 6c4350 : if (nitems <= 0) 0.36 : 5b0e33: 85 c0 test %eax,%eax : * If the array is empty, we return either FALSE or TRUE per the useOr : * flag. This is correct even if the scalar is NULL; since we would : * evaluate the operator zero times, it matters not whether it would want : * to return NULL. : */ : nitems = ArrayGetNItems(ARR_NDIM(arr), ARR_DIMS(arr)); 0.42 : 5b0e35: 89 45 c0 mov %eax,-0x40(%rbp) : if (nitems <= 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2567 0.52 : 5b0e38: 0f 8e 3a 03 00 00 jle 5b1178 : : /* : * If the scalar is NULL, and the function is strict, return NULL; no : * point in iterating the loop. : */ : if (fcinfo->argnull[0] && sstate->fxprstate.func.fn_strict) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2574 0.57 : 5b0e3e: 80 bb b0 03 00 00 00 cmpb $0x0,0x3b0(%rbx) 0.05 : 5b0e45: 0f 85 f5 01 00 00 jne 5b1040 : : /* : * We arrange to look up info about the element type only once per series : * of calls, assuming the element type doesn't change underneath us. : */ : if (sstate->element_type != ARR_ELEMTYPE(arr)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2584 1.30 : 5b0e4b: 41 8b 7d 0c mov 0xc(%r13),%edi 0.05 : 5b0e4f: 39 bb 18 04 00 00 cmp %edi,0x418(%rbx) 0.00 : 5b0e55: 74 24 je 5b0e7b : { : get_typlenbyvalalign(ARR_ELEMTYPE(arr), 0.00 : 5b0e57: 48 8d 8b 1f 04 00 00 lea 0x41f(%rbx),%rcx 0.00 : 5b0e5e: 48 8d 93 1e 04 00 00 lea 0x41e(%rbx),%rdx 0.00 : 5b0e65: 48 8d b3 1c 04 00 00 lea 0x41c(%rbx),%rsi 0.00 : 5b0e6c: e8 ff 1f 1c 00 callq 772e70 : &sstate->typlen, : &sstate->typbyval, : &sstate->typalign); : sstate->element_type = ARR_ELEMTYPE(arr); 0.00 : 5b0e71: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5b0e75: 89 83 18 04 00 00 mov %eax,0x418(%rbx) : } : typlen = sstate->typlen; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2592 0.62 : 5b0e7b: 0f b7 8b 1c 04 00 00 movzwl 0x41c(%rbx),%ecx 0.16 : 5b0e82: 66 89 4d d4 mov %cx,-0x2c(%rbp) : typbyval = sstate->typbyval; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2593 1.09 : 5b0e86: 0f b6 83 1e 04 00 00 movzbl 0x41e(%rbx),%eax 0.05 : 5b0e8d: 88 45 d6 mov %al,-0x2a(%rbp) : typalign = sstate->typalign; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2594 0.68 : 5b0e90: 0f b6 93 1f 04 00 00 movzbl 0x41f(%rbx),%edx 0.00 : 5b0e97: 88 55 d7 mov %dl,-0x29(%rbp) : : result = BoolGetDatum(!useOr); : resultnull = false; : : /* Loop over the array elements */ : s = (char *) ARR_DATA_PTR(arr); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2600 1.04 : 5b0e9a: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5b0e9e: 85 c0 test %eax,%eax 0.00 : 5b0ea0: 0f 84 ba 02 00 00 je 5b1160 0.00 : 5b0ea6: 48 98 cltq 0.00 : 5b0ea8: 4d 8d 64 05 00 lea 0x0(%r13,%rax,1),%r12 : bitmap = ARR_NULLBITMAP(arr); 0.00 : 5b0ead: 49 63 45 04 movslq 0x4(%r13),%rax 0.00 : 5b0eb1: 4d 8d 7c c5 10 lea 0x10(%r13,%rax,8),%r15 : fcinfo->argnull[1] = true; : } : else : { : elt = fetch_att(s, typbyval, typlen); : s = att_addlength_pointer(s, typlen, s); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 0.52 : 5b0eb6: 48 0f bf 4d d4 movswq -0x2c(%rbp),%rcx : : result = BoolGetDatum(!useOr); : resultnull = false; : : /* Loop over the array elements */ : s = (char *) ARR_DATA_PTR(arr); 0.05 : 5b0ebb: c6 45 c7 00 movb $0x0,-0x39(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2600 0.52 : 5b0ebf: 45 31 f6 xor %r14d,%r14d 0.05 : 5b0ec2: 41 bd 01 00 00 00 mov $0x1,%r13d : fcinfo->argnull[1] = true; : } : else : { : elt = fetch_att(s, typbyval, typlen); : s = att_addlength_pointer(s, typlen, s); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 0.57 : 5b0ec8: 48 89 4d a8 mov %rcx,-0x58(%rbp) 0.26 : 5b0ecc: eb 47 jmp 5b0f15 0.00 : 5b0ece: 66 90 xchg %ax,%ax : fcinfo->arg[1] = elt; : fcinfo->argnull[1] = false; : } : : /* Call comparison function */ : if (fcinfo->argnull[1] && sstate->fxprstate.func.fn_strict) 0.00 : 5b0ed0: 80 7b 2e 00 cmpb $0x0,0x2e(%rbx) : Datum thisresult; : : /* Get array element, checking for NULL */ : if (bitmap && (*bitmap & bitmask) == 0) : { : fcinfo->arg[1] = (Datum) 0; 0.00 : 5b0ed4: 48 c7 83 98 00 00 00 movq $0x0,0x98(%rbx) 0.00 : 5b0edb: 00 00 00 00 : fcinfo->argnull[1] = true; 0.00 : 5b0edf: c6 83 b1 03 00 00 01 movb $0x1,0x3b1(%rbx) : fcinfo->arg[1] = elt; : fcinfo->argnull[1] = false; : } : : /* Call comparison function */ : if (fcinfo->argnull[1] && sstate->fxprstate.func.fn_strict) 0.00 : 5b0ee6: 0f 84 a5 00 00 00 je 5b0f91 : } : : /* advance bitmap pointer if any */ : if (bitmap) : { : bitmask <<= 1; 0.00 : 5b0eec: 45 01 ed add %r13d,%r13d : } : : /* Call comparison function */ : if (fcinfo->argnull[1] && sstate->fxprstate.func.fn_strict) : { : fcinfo->isnull = true; 0.00 : 5b0eef: c6 83 8c 00 00 00 01 movb $0x1,0x8c(%rbx) 0.00 : 5b0ef6: c6 45 c7 01 movb $0x1,-0x39(%rbp) : : /* advance bitmap pointer if any */ : if (bitmap) : { : bitmask <<= 1; : if (bitmask == 0x100) 0.00 : 5b0efa: 41 81 fd 00 01 00 00 cmp $0x100,%r13d 0.00 : 5b0f01: 0f 84 d3 00 00 00 je 5b0fda : /* Loop over the array elements */ : s = (char *) ARR_DATA_PTR(arr); : bitmap = ARR_NULLBITMAP(arr); : bitmask = 1; : : for (i = 0; i < nitems; i++) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2604 0.57 : 5b0f07: 41 83 c6 01 add $0x1,%r14d 0.05 : 5b0f0b: 44 39 75 c0 cmp %r14d,-0x40(%rbp) 0.00 : 5b0f0f: 0f 8e dc 00 00 00 jle 5b0ff1 : { : Datum elt; : Datum thisresult; : : /* Get array element, checking for NULL */ : if (bitmap && (*bitmap & bitmask) == 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2610 2.13 : 5b0f15: 4d 85 ff test %r15,%r15 0.00 : 5b0f18: 74 09 je 5b0f23 0.00 : 5b0f1a: 41 0f b6 07 movzbl (%r15),%eax 0.00 : 5b0f1e: 44 85 e8 test %r13d,%eax 0.00 : 5b0f21: 74 ad je 5b0ed0 : fcinfo->arg[1] = (Datum) 0; : fcinfo->argnull[1] = true; : } : else : { : elt = fetch_att(s, typbyval, typlen); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2617 1.56 : 5b0f23: 80 7d d6 00 cmpb $0x0,-0x2a(%rbp) 0.31 : 5b0f27: 4d 89 e0 mov %r12,%r8 0.00 : 5b0f2a: 74 26 je 5b0f52 0.47 : 5b0f2c: 66 83 7d d4 08 cmpw $0x8,-0x2c(%rbp) 0.00 : 5b0f31: 0f 84 89 01 00 00 je 5b10c0 0.16 : 5b0f37: 66 83 7d d4 04 cmpw $0x4,-0x2c(%rbp) 0.00 : 5b0f3c: 0f 84 be 01 00 00 je 5b1100 0.00 : 5b0f42: 66 83 7d d4 02 cmpw $0x2,-0x2c(%rbp) 0.00 : 5b0f47: 0f 84 c3 01 00 00 je 5b1110 0.00 : 5b0f4d: 45 0f b6 04 24 movzbl (%r12),%r8d : s = att_addlength_pointer(s, typlen, s); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 2.70 : 5b0f52: 66 83 7d d4 00 cmpw $0x0,-0x2c(%rbp) 0.10 : 5b0f57: 0f 8e 23 01 00 00 jle 5b1080 0.26 : 5b0f5d: 4c 03 65 a8 add -0x58(%rbp),%r12 : s = (char *) att_align_nominal(s, typalign); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2619 3.17 : 5b0f61: 80 7d d7 69 cmpb $0x69,-0x29(%rbp) 0.42 : 5b0f65: 0f 84 05 01 00 00 je 5b1070 0.00 : 5b0f6b: 80 7d d7 63 cmpb $0x63,-0x29(%rbp) 0.00 : 5b0f6f: 74 12 je 5b0f83 0.00 : 5b0f71: 80 7d d7 64 cmpb $0x64,-0x29(%rbp) 0.00 : 5b0f75: 0f 84 75 01 00 00 je 5b10f0 0.00 : 5b0f7b: 49 83 c4 01 add $0x1,%r12 0.00 : 5b0f7f: 49 83 e4 fe and $0xfffffffffffffffe,%r12 : fcinfo->arg[1] = elt; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2620 3.01 : 5b0f83: 4c 89 83 98 00 00 00 mov %r8,0x98(%rbx) : fcinfo->argnull[1] = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2621 0.88 : 5b0f8a: c6 83 b1 03 00 00 00 movb $0x0,0x3b1(%rbx) : thisresult = (Datum) 0; : } : else : { : fcinfo->isnull = false; : thisresult = FunctionCallInvoke(fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2633 3.43 : 5b0f91: 48 8b 43 70 mov 0x70(%rbx),%rax : fcinfo->isnull = true; : thisresult = (Datum) 0; : } : else : { : fcinfo->isnull = false; 0.05 : 5b0f95: c6 83 8c 00 00 00 00 movb $0x0,0x8c(%rbx) : thisresult = FunctionCallInvoke(fcinfo); 1.09 : 5b0f9c: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.42 : 5b0fa0: ff 10 callq *(%rax) : } : : /* Combine results per OR or AND semantics */ : if (fcinfo->isnull) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2637 4.31 : 5b0fa2: 80 bb 8c 00 00 00 00 cmpb $0x0,0x8c(%rbx) 4.52 : 5b0fa9: 0f 85 01 01 00 00 jne 5b10b0 : resultnull = true; : else if (useOr) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2639 3.12 : 5b0faf: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 4.26 : 5b0fb3: 0f 84 a7 00 00 00 je 5b1060 : { : if (DatumGetBool(thisresult)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2641 2.13 : 5b0fb9: 84 c0 test %al,%al 0.00 : 5b0fbb: 0f 85 c5 01 00 00 jne 5b1186 : break; /* needn't look at any more elements */ : } : } : : /* advance bitmap pointer if any */ : if (bitmap) 0.05 : 5b0fc1: 4d 85 ff test %r15,%r15 0.00 : 5b0fc4: 0f 84 3d ff ff ff je 5b0f07 : { : bitmask <<= 1; 0.00 : 5b0fca: 45 01 ed add %r13d,%r13d : if (bitmask == 0x100) 0.00 : 5b0fcd: 41 81 fd 00 01 00 00 cmp $0x100,%r13d 0.00 : 5b0fd4: 0f 85 2d ff ff ff jne 5b0f07 : { : bitmap++; 0.00 : 5b0fda: 49 83 c7 01 add $0x1,%r15 : /* Loop over the array elements */ : s = (char *) ARR_DATA_PTR(arr); : bitmap = ARR_NULLBITMAP(arr); : bitmask = 1; : : for (i = 0; i < nitems; i++) 0.00 : 5b0fde: 41 83 c6 01 add $0x1,%r14d 0.00 : 5b0fe2: 44 39 75 c0 cmp %r14d,-0x40(%rbp) : if (bitmap) : { : bitmask <<= 1; : if (bitmask == 0x100) : { : bitmap++; 0.00 : 5b0fe6: 66 41 bd 01 00 mov $0x1,%r13w : /* Loop over the array elements */ : s = (char *) ARR_DATA_PTR(arr); : bitmap = ARR_NULLBITMAP(arr); : bitmask = 1; : : for (i = 0; i < nitems; i++) 0.00 : 5b0feb: 0f 8f 24 ff ff ff jg 5b0f15 : } : typlen = sstate->typlen; : typbyval = sstate->typbyval; : typalign = sstate->typalign; : : result = BoolGetDatum(!useOr); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2596 1.56 : 5b0ff1: 31 c0 xor %eax,%eax 0.00 : 5b0ff3: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 5b0ff7: 0f 94 c0 sete %al : bitmask = 1; : } : } : } : : *isNull = resultnull; 0.16 : 5b0ffa: 0f b6 4d c7 movzbl -0x39(%rbp),%ecx /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2670 1.92 : 5b0ffe: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.31 : 5b1002: 88 0a mov %cl,(%rdx) : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2672 6.08 : 5b1004: 48 83 c4 38 add $0x38,%rsp 0.00 : 5b1008: 5b pop %rbx 0.00 : 5b1009: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2672 1.45 : 5b100b: 41 5d pop %r13 0.00 : 5b100d: 41 5e pop %r14 0.00 : 5b100f: 41 5f pop %r15 0.05 : 5b1011: c9 leaveq 1.45 : 5b1012: c3 retq 0.00 : 5b1013: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * Initialize function cache if first time through : */ : if (sstate->fxprstate.func.fn_oid == InvalidOid) : { : init_fcache(opexpr->opfuncid, opexpr->inputcollid, &sstate->fxprstate, 0.00 : 5b1018: 49 8b 4c 24 20 mov 0x20(%r12),%rcx 0.00 : 5b101d: 8b 70 10 mov 0x10(%rax),%esi 0.00 : 5b1020: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 5b1026: 8b 78 08 mov 0x8(%rax),%edi 0.00 : 5b1029: 48 89 da mov %rbx,%rdx 0.00 : 5b102c: e8 ff fa ff ff callq 5b0b30 0.00 : 5b1031: e9 9f fd ff ff jmpq 5b0dd5 0.00 : 5b1036: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5b103d: 00 00 00 : : /* : * If the scalar is NULL, and the function is strict, return NULL; no : * point in iterating the loop. : */ : if (fcinfo->argnull[0] && sstate->fxprstate.func.fn_strict) 0.00 : 5b1040: 80 7b 2e 00 cmpb $0x0,0x2e(%rbx) 0.00 : 5b1044: 0f 84 01 fe ff ff je 5b0e4b : { : *isNull = true; 0.00 : 5b104a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 5b104e: 31 c0 xor %eax,%eax 0.00 : 5b1050: c6 02 01 movb $0x1,(%rdx) : } : } : : *isNull = resultnull; : return result; : } 0.00 : 5b1053: e9 ae fd ff ff jmpq 5b0e06 0.00 : 5b1058: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5b105f: 00 : break; /* needn't look at any more elements */ : } : } : else : { : if (!DatumGetBool(thisresult)) 0.00 : 5b1060: 84 c0 test %al,%al 0.00 : 5b1062: 0f 85 59 ff ff ff jne 5b0fc1 0.00 : 5b1068: 31 c0 xor %eax,%eax 0.00 : 5b106a: c6 45 c7 00 movb $0x0,-0x39(%rbp) 0.00 : 5b106e: eb 8a jmp 5b0ffa : } : else : { : elt = fetch_att(s, typbyval, typlen); : s = att_addlength_pointer(s, typlen, s); : s = (char *) att_align_nominal(s, typalign); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2619 3.32 : 5b1070: 49 83 c4 03 add $0x3,%r12 0.21 : 5b1074: 49 83 e4 fc and $0xfffffffffffffffc,%r12 0.16 : 5b1078: e9 06 ff ff ff jmpq 5b0f83 0.00 : 5b107d: 0f 1f 00 nopl (%rax) : fcinfo->argnull[1] = true; : } : else : { : elt = fetch_att(s, typbyval, typlen); : s = att_addlength_pointer(s, typlen, s); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2618 2.75 : 5b1080: 66 83 7d d4 ff cmpw $0xffff,-0x2c(%rbp) 0.10 : 5b1085: 75 49 jne 5b10d0 0.57 : 5b1087: 41 0f b6 04 24 movzbl (%r12),%eax 0.52 : 5b108c: 3c 01 cmp $0x1,%al 0.00 : 5b108e: 0f 84 9c 00 00 00 je 5b1130 2.75 : 5b1094: a8 01 test $0x1,%al 0.00 : 5b1096: 0f 84 84 00 00 00 je 5b1120 0.00 : 5b109c: d0 e8 shr %al 0.00 : 5b109e: 0f b6 c0 movzbl %al,%eax 1.19 : 5b10a1: 49 01 c4 add %rax,%r12 0.10 : 5b10a4: e9 b8 fe ff ff jmpq 5b0f61 0.00 : 5b10a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : fcinfo->isnull = false; : thisresult = FunctionCallInvoke(fcinfo); : } : : /* Combine results per OR or AND semantics */ : if (fcinfo->isnull) 0.00 : 5b10b0: c6 45 c7 01 movb $0x1,-0x39(%rbp) 0.00 : 5b10b4: e9 08 ff ff ff jmpq 5b0fc1 0.00 : 5b10b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : fcinfo->arg[1] = (Datum) 0; : fcinfo->argnull[1] = true; : } : else : { : elt = fetch_att(s, typbyval, typlen); 0.00 : 5b10c0: 4d 8b 04 24 mov (%r12),%r8 0.00 : 5b10c4: e9 94 fe ff ff jmpq 5b0f5d 0.00 : 5b10c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : s = att_addlength_pointer(s, typlen, s); 0.00 : 5b10d0: 4c 89 e7 mov %r12,%rdi 0.00 : 5b10d3: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 5b10d7: e8 74 87 eb ff callq 469850 0.00 : 5b10dc: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 5b10e0: 4d 8d 64 04 01 lea 0x1(%r12,%rax,1),%r12 0.00 : 5b10e5: e9 77 fe ff ff jmpq 5b0f61 0.00 : 5b10ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : s = (char *) att_align_nominal(s, typalign); 0.00 : 5b10f0: 49 83 c4 07 add $0x7,%r12 0.00 : 5b10f4: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 5b10f8: e9 86 fe ff ff jmpq 5b0f83 0.00 : 5b10fd: 0f 1f 00 nopl (%rax) : fcinfo->arg[1] = (Datum) 0; : fcinfo->argnull[1] = true; : } : else : { : elt = fetch_att(s, typbyval, typlen); 0.31 : 5b1100: 45 8b 04 24 mov (%r12),%r8d 0.05 : 5b1104: e9 54 fe ff ff jmpq 5b0f5d 0.00 : 5b1109: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5b1110: 45 0f b7 04 24 movzwl (%r12),%r8d 0.00 : 5b1115: e9 43 fe ff ff jmpq 5b0f5d 0.00 : 5b111a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : s = att_addlength_pointer(s, typlen, s); 1.09 : 5b1120: 41 8b 04 24 mov (%r12),%eax 0.05 : 5b1124: c1 e8 02 shr $0x2,%eax 0.05 : 5b1127: 89 c0 mov %eax,%eax 1.14 : 5b1129: e9 73 ff ff ff jmpq 5b10a1 0.00 : 5b112e: 66 90 xchg %ax,%ax 0.00 : 5b1130: 41 0f b6 54 24 01 movzbl 0x1(%r12),%edx 0.00 : 5b1136: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 5b113b: 80 fa 01 cmp $0x1,%dl 0.00 : 5b113e: 0f 84 5d ff ff ff je 5b10a1 0.00 : 5b1144: 80 fa 12 cmp $0x12,%dl 0.00 : 5b1147: b8 03 00 00 00 mov $0x3,%eax 0.00 : 5b114c: ba 12 00 00 00 mov $0x12,%edx 0.00 : 5b1151: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 5b1155: e9 47 ff ff ff jmpq 5b10a1 0.00 : 5b115a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : result = BoolGetDatum(!useOr); : resultnull = false; : : /* Loop over the array elements */ : s = (char *) ARR_DATA_PTR(arr); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2600 0.57 : 5b1160: 49 63 45 04 movslq 0x4(%r13),%rax 0.21 : 5b1164: 45 31 ff xor %r15d,%r15d 0.31 : 5b1167: 4d 8d 64 c5 10 lea 0x10(%r13,%rax,8),%r12 0.05 : 5b116c: e9 45 fd ff ff jmpq 5b0eb6 0.00 : 5b1171: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * evaluate the operator zero times, it matters not whether it would want : * to return NULL. : */ : nitems = ArrayGetNItems(ARR_NDIM(arr), ARR_DIMS(arr)); : if (nitems <= 0) : return BoolGetDatum(!useOr); 0.00 : 5b1178: 31 c0 xor %eax,%eax 0.00 : 5b117a: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 5b117e: 0f 94 c0 sete %al : } : } : : *isNull = resultnull; : return result; : } 0.00 : 5b1181: e9 80 fc ff ff jmpq 5b0e06 : /* Combine results per OR or AND semantics */ : if (fcinfo->isnull) : resultnull = true; : else if (useOr) : { : if (DatumGetBool(thisresult)) 0.21 : 5b1186: b8 01 00 00 00 mov $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2641 1.56 : 5b118b: c6 45 c7 00 movb $0x0,-0x39(%rbp) 0.88 : 5b118f: e9 66 fe ff ff jmpq 5b0ffa : * Evaluate arguments : */ : fcinfo = &sstate->fxprstate.fcinfo_data; : argDone = ExecEvalFuncArgs(fcinfo, sstate->fxprstate.args, econtext); : if (argDone != ExprSingleResult) : ereport(ERROR, 0.00 : 5b1194: 45 31 c0 xor %r8d,%r8d 0.00 : 5b1197: b9 e0 ae 88 00 mov $0x88aee0,%ecx 0.00 : 5b119c: ba f1 09 00 00 mov $0x9f1,%edx 0.00 : 5b11a1: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5b11a6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b11ab: e8 10 99 1c 00 callq 77aac0 0.00 : 5b11b0: 84 c0 test %al,%al 0.00 : 5b11b2: 75 05 jne 5b11b9 0.00 : 5b11b4: e8 17 83 eb ff callq 4694d0 0.00 : 5b11b9: bf 10 a9 88 00 mov $0x88a910,%edi 0.00 : 5b11be: 31 c0 xor %eax,%eax 0.00 : 5b11c0: e8 db b6 1c 00 callq 77c8a0 0.00 : 5b11c5: bf 84 80 00 04 mov $0x4008084,%edi 0.00 : 5b11ca: 89 c3 mov %eax,%ebx 0.00 : 5b11cc: e8 7f bb 1c 00 callq 77cd50 0.00 : 5b11d1: 89 de mov %ebx,%esi 0.00 : 5b11d3: 89 c7 mov %eax,%edi 0.00 : 5b11d5: 31 c0 xor %eax,%eax 0.00 : 5b11d7: e8 04 94 1c 00 callq 77a5e0 0.00 : 5b11dc: eb d6 jmp 5b11b4 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:511 18.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:508 16.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:499 15.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:508 7.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:507 5.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:511 3.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:508 1.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:499 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:511 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b3a20 : : Assert(slot != NULL); : Assert(slot->tts_tupleDescriptor != NULL); : Assert(slot->tts_isempty); : : slot->tts_isempty = false; : slot->tts_nvalid = slot->tts_tupleDescriptor->natts; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:508 3.32 : 5b3a20: 48 8b 47 10 mov 0x10(%rdi),%rax : * This is a bit unclean but it avoids one round of data copying. : * -------------------------------- : */ : TupleTableSlot * : ExecStoreVirtualTuple(TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:499 16.74 : 5b3a24: 55 push %rbp : */ : Assert(slot != NULL); : Assert(slot->tts_tupleDescriptor != NULL); : Assert(slot->tts_isempty); : : slot->tts_isempty = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:507 7.25 : 5b3a25: c6 47 04 00 movb $0x0,0x4(%rdi) : * This is a bit unclean but it avoids one round of data copying. : * -------------------------------- : */ : TupleTableSlot * : ExecStoreVirtualTuple(TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:499 1.31 : 5b3a29: 48 89 e5 mov %rsp,%rbp : Assert(slot != NULL); : Assert(slot->tts_tupleDescriptor != NULL); : Assert(slot->tts_isempty); : : slot->tts_isempty = false; : slot->tts_nvalid = slot->tts_tupleDescriptor->natts; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:508 18.83 : 5b3a2c: 8b 00 mov (%rax),%eax 15.35 : 5b3a2e: 89 47 24 mov %eax,0x24(%rdi) : : return slot; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:511 5.02 : 5b3a31: 48 89 f8 mov %rdi,%rax 32.18 : 5b3a34: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:809 14.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:809 9.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:804 8.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:806 5.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:813 5.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:811 4.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:812 4.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:806 3.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:809 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:804 2.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:805 2.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:805 2.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:805 2.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:804 1.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:804 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:804 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d4780 : : * float8mul - returns arg1 * arg2 : * float8div - returns arg1 / arg2 : */ : Datum : float8pl(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:804 9.06 : 6d4780: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:804 2.94 : 6d4781: 48 89 e5 mov %rsp,%rbp 1.55 : 6d4784: 53 push %rbx 2.04 : 6d4785: 48 89 fb mov %rdi,%rbx 0.65 : 6d4788: 48 83 ec 18 sub $0x18,%rsp : float8 arg1 = PG_GETARG_FLOAT8(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:805 2.12 : 6d478c: 48 8b 7f 20 mov 0x20(%rdi),%rdi 2.61 : 6d4790: e8 3b 92 0a 00 callq 77d9d0 2.29 : 6d4795: f2 0f 11 45 e0 movsd %xmm0,-0x20(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:806 8.00 : 6d479a: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.49 : 6d479e: e8 2d 92 0a 00 callq 77d9d0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:806 4.00 : 6d47a3: f2 0f 11 45 e8 movsd %xmm0,-0x18(%rbp) : float8 result; : : result = arg1 + arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:809 14.04 : 6d47a8: f2 0f 10 45 e0 movsd -0x20(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:809 3.02 : 6d47ad: f2 0f 58 45 e8 addsd -0x18(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:809 31.59 : 6d47b2: f2 0f 11 45 f0 movsd %xmm0,-0x10(%rbp) : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:811 5.22 : 6d47b7: e8 34 53 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d47bc: 85 c0 test %eax,%eax 0.00 : 6d47be: 74 0e je 6d47ce 0.00 : 6d47c0: f2 0f 10 45 e0 movsd -0x20(%rbp),%xmm0 0.00 : 6d47c5: e8 26 53 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d47ca: 85 c0 test %eax,%eax 0.00 : 6d47cc: 74 12 je 6d47e0 : PG_RETURN_FLOAT8(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:812 4.73 : 6d47ce: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 : } 0.08 : 6d47d3: 48 83 c4 18 add $0x18,%rsp 0.00 : 6d47d7: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:813 5.47 : 6d47d8: c9 leaveq : float8 result; : : result = arg1 + arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); : PG_RETURN_FLOAT8(result); 0.08 : 6d47d9: e9 e2 91 0a 00 jmpq 77d9c0 0.00 : 6d47de: 66 90 xchg %ax,%ax : float8 arg2 = PG_GETARG_FLOAT8(1); : float8 result; : : result = arg1 + arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); 0.00 : 6d47e0: f2 0f 10 45 e8 movsd -0x18(%rbp),%xmm0 0.00 : 6d47e5: e8 06 53 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d47ea: 85 c0 test %eax,%eax 0.00 : 6d47ec: 75 e0 jne 6d47ce 0.00 : 6d47ee: 45 31 c0 xor %r8d,%r8d 0.00 : 6d47f1: b9 31 bb 8b 00 mov $0x8bbb31,%ecx 0.00 : 6d47f6: ba 2b 03 00 00 mov $0x32b,%edx 0.00 : 6d47fb: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d4800: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d4805: e8 b6 62 0a 00 callq 77aac0 0.00 : 6d480a: 84 c0 test %al,%al 0.00 : 6d480c: 75 05 jne 6d4813 0.00 : 6d480e: e8 bd 4c d9 ff callq 4694d0 0.00 : 6d4813: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d4818: 31 c0 xor %eax,%eax 0.00 : 6d481a: e8 81 80 0a 00 callq 77c8a0 0.00 : 6d481f: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d4824: 89 c3 mov %eax,%ebx 0.00 : 6d4826: e8 25 85 0a 00 callq 77cd50 0.00 : 6d482b: 89 de mov %ebx,%esi 0.00 : 6d482d: 89 c7 mov %eax,%edi 0.00 : 6d482f: 31 c0 xor %eax,%eax 0.00 : 6d4831: e8 aa 5d 0a 00 callq 77a5e0 0.00 : 6d4836: eb d6 jmp 6d480e Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 3.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 3.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4182 3.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4137 2.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 2.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 2.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 2.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4182 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 2.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4182 2.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4111 2.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 1.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4107 1.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 1.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 1.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 1.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4141 1.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 1.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4148 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4151 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4107 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 1.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 1.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4107 1.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4137 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4115 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4148 1.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4151 1.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4115 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4109 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4107 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4107 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4130 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4110 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4182 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4152 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4107 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4130 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4148 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 0.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4151 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000709900 : : * Create the packed db numeric format in palloc()'d memory from : * a variable. : */ : static Numeric : make_result(NumericVar *var) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4107 1.15 : 709900: 55 push %rbp 0.15 : 709901: 49 89 f8 mov %rdi,%r8 1.30 : 709904: 48 89 e5 mov %rsp,%rbp 0.69 : 709907: 41 57 push %r15 1.84 : 709909: 41 56 push %r14 0.77 : 70990b: 41 55 push %r13 0.23 : 70990d: 41 54 push %r12 0.38 : 70990f: 53 push %rbx 0.54 : 709910: 48 83 ec 18 sub $0x18,%rsp : Numeric result; : NumericDigit *digits = var->digits; : int weight = var->weight; : int sign = var->sign; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4111 2.22 : 709914: 8b 47 08 mov 0x8(%rdi),%eax : */ : static Numeric : make_result(NumericVar *var) : { : Numeric result; : NumericDigit *digits = var->digits; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4109 0.84 : 709917: 4c 8b 67 18 mov 0x18(%rdi),%r12 : int weight = var->weight; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4110 0.61 : 70991b: 44 8b 77 04 mov 0x4(%rdi),%r14d : int sign = var->sign; : int n; : Size len; : : if (sign == NUMERIC_NAN) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4115 0.92 : 70991f: 3d 00 c0 00 00 cmp $0xc000,%eax : make_result(NumericVar *var) : { : Numeric result; : NumericDigit *digits = var->digits; : int weight = var->weight; : int sign = var->sign; 0.15 : 709924: 89 45 d4 mov %eax,-0x2c(%rbp) : int n; : Size len; : : if (sign == NUMERIC_NAN) 1.07 : 709927: 0f 84 53 01 00 00 je 709a80 : : dump_numeric("make_result()", result); : return result; : } : : n = var->ndigits; 0.23 : 70992d: 8b 07 mov (%rdi),%eax : : /* truncate leading zeroes */ : while (n > 0 && *digits == 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4130 0.69 : 70992f: 85 c0 test %eax,%eax 0.00 : 709931: 7f 20 jg 709953 0.00 : 709933: e9 28 01 00 00 jmpq 709a60 0.00 : 709938: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 70993f: 00 : { : digits++; : weight--; : n--; 0.00 : 709940: 83 e8 01 sub $0x1,%eax : n = var->ndigits; : : /* truncate leading zeroes */ : while (n > 0 && *digits == 0) : { : digits++; 0.00 : 709943: 49 83 c4 02 add $0x2,%r12 : weight--; 0.00 : 709947: 41 83 ee 01 sub $0x1,%r14d : } : : n = var->ndigits; : : /* truncate leading zeroes */ : while (n > 0 && *digits == 0) 0.00 : 70994b: 85 c0 test %eax,%eax 0.00 : 70994d: 0f 8e 0d 01 00 00 jle 709a60 0.00 : 709953: 66 41 83 3c 24 00 cmpw $0x0,(%r12) 0.54 : 709959: 74 e5 je 709940 0.46 : 70995b: eb 0e jmp 70996b 0.00 : 70995d: 0f 1f 00 nopl (%rax) : weight--; : n--; : } : /* truncate trailing zeroes */ : while (n > 0 && digits[n - 1] == 0) : n--; 0.00 : 709960: 83 e8 01 sub $0x1,%eax : digits++; : weight--; : n--; : } : /* truncate trailing zeroes */ : while (n > 0 && digits[n - 1] == 0) 0.00 : 709963: 85 c0 test %eax,%eax 0.00 : 709965: 0f 8e f5 00 00 00 jle 709a60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4137 1.15 : 70996b: 4c 63 e8 movslq %eax,%r13 0.00 : 70996e: 66 43 83 7c 6c fe 00 cmpw $0x0,-0x2(%r12,%r13,2) 3.06 : 709975: 74 e9 je 709960 : n--; : : /* If zero result, force to weight=0 and positive sign */ : if (n == 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4141 1.76 : 709977: 41 83 fe 3f cmp $0x3f,%r14d 0.00 : 70997b: 0f 9e c0 setle %al : weight = 0; : sign = NUMERIC_POS; : } : : /* Build the result */ : if (NUMERIC_CAN_BE_SHORT(var->dscale, weight)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4148 0.54 : 70997e: 41 83 78 0c 3f cmpl $0x3f,0xc(%r8) 0.38 : 709983: 7f 0e jg 709993 1.61 : 709985: 84 c0 test %al,%al 0.00 : 709987: 74 0a je 709993 0.00 : 709989: 41 83 fe c0 cmp $0xffffffc0,%r14d 0.00 : 70998d: 0f 8d 7d 01 00 00 jge 709b10 : | (weight < 0 ? NUMERIC_SHORT_WEIGHT_SIGN_MASK : 0) : | (weight & NUMERIC_SHORT_WEIGHT_MASK); : } : else : { : len = NUMERIC_HDRSZ + n * sizeof(NumericDigit); 0.00 : 709993: 4b 8d 5c 2d 08 lea 0x8(%r13,%r13,1),%rbx : result = (Numeric) palloc(len); 0.00 : 709998: 4c 89 45 c8 mov %r8,-0x38(%rbp) 0.00 : 70999c: 48 89 df mov %rbx,%rdi : SET_VARSIZE(result, len); 0.00 : 70999f: c1 e3 02 shl $0x2,%ebx : | (weight & NUMERIC_SHORT_WEIGHT_MASK); : } : else : { : len = NUMERIC_HDRSZ + n * sizeof(NumericDigit); : result = (Numeric) palloc(len); 0.00 : 7099a2: e8 a9 f3 08 00 callq 798d50 : SET_VARSIZE(result, len); 0.00 : 7099a7: 89 18 mov %ebx,(%rax) : result->choice.n_long.n_sign_dscale = 0.00 : 7099a9: 4c 8b 45 c8 mov -0x38(%rbp),%r8 : | (weight & NUMERIC_SHORT_WEIGHT_MASK); : } : else : { : len = NUMERIC_HDRSZ + n * sizeof(NumericDigit); : result = (Numeric) palloc(len); 0.00 : 7099ad: 49 89 c7 mov %rax,%r15 : SET_VARSIZE(result, len); : result->choice.n_long.n_sign_dscale = 0.00 : 7099b0: 41 8b 40 0c mov 0xc(%r8),%eax 0.00 : 7099b4: 66 25 ff 3f and $0x3fff,%ax 0.00 : 7099b8: 66 0b 45 d4 or -0x2c(%rbp),%ax : sign | (var->dscale & NUMERIC_DSCALE_MASK); : result->choice.n_long.n_weight = weight; 0.00 : 7099bc: 66 45 89 77 06 mov %r14w,0x6(%r15) : else : { : len = NUMERIC_HDRSZ + n * sizeof(NumericDigit); : result = (Numeric) palloc(len); : SET_VARSIZE(result, len); : result->choice.n_long.n_sign_dscale = 0.00 : 7099c1: 66 41 89 47 04 mov %ax,0x4(%r15) : sign | (var->dscale & NUMERIC_DSCALE_MASK); : result->choice.n_long.n_weight = weight; : } : : memcpy(NUMERIC_DIGITS(result), digits, n * sizeof(NumericDigit)); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 0.54 : 7099c6: 41 0f b7 47 04 movzwl 0x4(%r15),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 10.26 : 7099cb: 49 8d 57 08 lea 0x8(%r15),%rdx 0.08 : 7099cf: 49 8d 7f 06 lea 0x6(%r15),%rdi 0.00 : 7099d3: 4c 89 e6 mov %r12,%rsi 0.15 : 7099d6: 4c 89 45 c8 mov %r8,-0x38(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 2.53 : 7099da: 25 00 c0 00 00 and $0xc000,%eax 0.00 : 7099df: 3d 00 80 00 00 cmp $0x8000,%eax 2.76 : 7099e4: 48 0f 45 fa cmovne %rdx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4170 5.21 : 7099e8: 4b 8d 54 2d 00 lea 0x0(%r13,%r13,1),%rdx 0.00 : 7099ed: e8 fe 01 d6 ff callq 469bf0 : Assert(NUMERIC_NDIGITS(result) == n); : : /* Check for overflow of int16 fields */ : if (NUMERIC_WEIGHT(result) != weight || /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 3.60 : 7099f2: 41 0f b7 57 04 movzwl 0x4(%r15),%edx 0.15 : 7099f7: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.00 : 7099fb: 89 d1 mov %edx,%ecx 0.54 : 7099fd: 81 e1 00 c0 00 00 and $0xc000,%ecx 1.76 : 709a03: 81 f9 00 80 00 00 cmp $0x8000,%ecx 0.00 : 709a09: 0f 84 a1 00 00 00 je 709ab0 0.00 : 709a0f: 41 0f bf 47 06 movswl 0x6(%r15),%eax 0.00 : 709a14: 44 39 f0 cmp %r14d,%eax 0.00 : 709a17: 75 1c jne 709a35 2.68 : 709a19: 81 f9 00 80 00 00 cmp $0x8000,%ecx 0.00 : 709a1f: 0f 84 ab 00 00 00 je 709ad0 0.00 : 709a25: 41 0f b7 47 04 movzwl 0x4(%r15),%eax 0.00 : 709a2a: 25 ff 3f 00 00 and $0x3fff,%eax 0.00 : 709a2f: 41 3b 40 0c cmp 0xc(%r8),%eax 0.00 : 709a33: 74 64 je 709a99 : NUMERIC_DSCALE(result) != var->dscale) : ereport(ERROR, 0.00 : 709a35: 45 31 c0 xor %r8d,%r8d 0.00 : 709a38: b9 0e 41 8c 00 mov $0x8c410e,%ecx 0.00 : 709a3d: ba 52 10 00 00 mov $0x1052,%edx 0.00 : 709a42: be e5 3c 8c 00 mov $0x8c3ce5,%esi 0.00 : 709a47: bf 14 00 00 00 mov $0x14,%edi 0.00 : 709a4c: e8 6f 10 07 00 callq 77aac0 0.00 : 709a51: 84 c0 test %al,%al 0.00 : 709a53: 0f 85 8f 00 00 00 jne 709ae8 0.00 : 709a59: e8 72 fa d5 ff callq 4694d0 0.00 : 709a5e: 66 90 xchg %ax,%ax : /* truncate trailing zeroes */ : while (n > 0 && digits[n - 1] == 0) : n--; : : /* If zero result, force to weight=0 and positive sign */ : if (n == 0) 0.00 : 709a60: 85 c0 test %eax,%eax 0.00 : 709a62: 0f 85 ff 00 00 00 jne 709b67 0.00 : 709a68: 45 31 ed xor %r13d,%r13d 0.00 : 709a6b: 45 31 f6 xor %r14d,%r14d 0.00 : 709a6e: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%rbp) 0.00 : 709a75: b8 01 00 00 00 mov $0x1,%eax 0.00 : 709a7a: e9 ff fe ff ff jmpq 70997e 0.00 : 709a7f: 90 nop : int n; : Size len; : : if (sign == NUMERIC_NAN) : { : result = (Numeric) palloc(NUMERIC_HDRSZ_SHORT); 0.00 : 709a80: bf 06 00 00 00 mov $0x6,%edi 0.00 : 709a85: e8 c6 f2 08 00 callq 798d50 0.00 : 709a8a: 49 89 c7 mov %rax,%r15 : : SET_VARSIZE(result, NUMERIC_HDRSZ_SHORT); 0.00 : 709a8d: c7 00 18 00 00 00 movl $0x18,(%rax) : result->choice.n_header = NUMERIC_NAN; 0.00 : 709a93: 66 c7 40 04 00 c0 movw $0xc000,0x4(%rax) : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value overflows numeric format"))); : : dump_numeric("make_result()", result); : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4182 2.37 : 709a99: 48 83 c4 18 add $0x18,%rsp 0.00 : 709a9d: 4c 89 f8 mov %r15,%rax 0.00 : 709aa0: 5b pop %rbx 3.52 : 709aa1: 41 5c pop %r12 0.08 : 709aa3: 41 5d pop %r13 0.61 : 709aa5: 41 5e pop %r14 0.00 : 709aa7: 41 5f pop %r15 2.68 : 709aa9: c9 leaveq 0.08 : 709aaa: c3 retq 0.00 : 709aab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : memcpy(NUMERIC_DIGITS(result), digits, n * sizeof(NumericDigit)); : Assert(NUMERIC_NDIGITS(result) == n); : : /* Check for overflow of int16 fields */ : if (NUMERIC_WEIGHT(result) != weight || /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4174 0.84 : 709ab0: 89 d0 mov %edx,%eax 0.00 : 709ab2: 83 e0 40 and $0x40,%eax 0.23 : 709ab5: 83 f8 01 cmp $0x1,%eax 2.07 : 709ab8: 19 c0 sbb %eax,%eax 1.61 : 709aba: 83 e2 3f and $0x3f,%edx 1.84 : 709abd: f7 d0 not %eax 2.22 : 709abf: 83 e0 c0 and $0xffffffc0,%eax 2.07 : 709ac2: 09 d0 or %edx,%eax 2.91 : 709ac4: e9 4b ff ff ff jmpq 709a14 0.00 : 709ac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 709ad0: 41 0f b7 47 04 movzwl 0x4(%r15),%eax 0.92 : 709ad5: 25 80 1f 00 00 and $0x1f80,%eax 0.08 : 709ada: c1 f8 07 sar $0x7,%eax 3.22 : 709add: e9 4d ff ff ff jmpq 709a2f 0.00 : 709ae2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : NUMERIC_DSCALE(result) != var->dscale) : ereport(ERROR, 0.00 : 709ae8: bf 68 3e 8c 00 mov $0x8c3e68,%edi 0.00 : 709aed: 31 c0 xor %eax,%eax 0.00 : 709aef: e8 ac 2d 07 00 callq 77c8a0 0.00 : 709af4: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 709af9: 89 c3 mov %eax,%ebx 0.00 : 709afb: e8 50 32 07 00 callq 77cd50 0.00 : 709b00: 89 de mov %ebx,%esi 0.00 : 709b02: 89 c7 mov %eax,%edi 0.00 : 709b04: 31 c0 xor %eax,%eax 0.00 : 709b06: e8 d5 0a 07 00 callq 77a5e0 0.00 : 709b0b: e9 49 ff ff ff jmpq 709a59 : } : : /* Build the result */ : if (NUMERIC_CAN_BE_SHORT(var->dscale, weight)) : { : len = NUMERIC_HDRSZ_SHORT + n * sizeof(NumericDigit); 0.38 : 709b10: 4b 8d 5c 2d 06 lea 0x6(%r13,%r13,1),%rbx : result = (Numeric) palloc(len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4151 0.54 : 709b15: 4c 89 45 c8 mov %r8,-0x38(%rbp) 1.45 : 709b19: 48 89 df mov %rbx,%rdi : SET_VARSIZE(result, len); 0.00 : 709b1c: c1 e3 02 shl $0x2,%ebx : : /* Build the result */ : if (NUMERIC_CAN_BE_SHORT(var->dscale, weight)) : { : len = NUMERIC_HDRSZ_SHORT + n * sizeof(NumericDigit); : result = (Numeric) palloc(len); 0.38 : 709b1f: e8 2c f2 08 00 callq 798d50 : SET_VARSIZE(result, len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4152 0.61 : 709b24: 89 18 mov %ebx,(%rax) : result->choice.n_short.n_header = /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 0.61 : 709b26: 4c 8b 45 c8 mov -0x38(%rbp),%r8 : : /* Build the result */ : if (NUMERIC_CAN_BE_SHORT(var->dscale, weight)) : { : len = NUMERIC_HDRSZ_SHORT + n * sizeof(NumericDigit); : result = (Numeric) palloc(len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4151 1.00 : 709b2a: 49 89 c7 mov %rax,%r15 : SET_VARSIZE(result, len); : result->choice.n_short.n_header = 0.00 : 709b2d: 81 7d d4 00 40 00 00 cmpl $0x4000,-0x2c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4153 0.84 : 709b34: b8 00 a0 ff ff mov $0xffffa000,%eax 0.08 : 709b39: be 00 80 ff ff mov $0xffff8000,%esi 1.76 : 709b3e: 44 89 f1 mov %r14d,%ecx 0.00 : 709b41: 41 8b 50 0c mov 0xc(%r8),%edx 1.84 : 709b45: 0f 44 f0 cmove %eax,%esi 1.61 : 709b48: 44 89 f0 mov %r14d,%eax 0.00 : 709b4b: c1 f9 1f sar $0x1f,%ecx 1.38 : 709b4e: 83 e0 3f and $0x3f,%eax 0.15 : 709b51: c1 e2 07 shl $0x7,%edx 1.30 : 709b54: 83 e1 40 and $0x40,%ecx 0.08 : 709b57: 09 d0 or %edx,%eax 1.23 : 709b59: 09 f0 or %esi,%eax 1.00 : 709b5b: 09 c8 or %ecx,%eax 1.84 : 709b5d: 66 41 89 47 04 mov %ax,0x4(%r15) : weight = 0; : sign = NUMERIC_POS; : } : : /* Build the result */ : if (NUMERIC_CAN_BE_SHORT(var->dscale, weight)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4148 1.07 : 709b62: e9 5f fe ff ff jmpq 7099c6 : /* truncate trailing zeroes */ : while (n > 0 && digits[n - 1] == 0) : n--; : : /* If zero result, force to weight=0 and positive sign */ : if (n == 0) 0.00 : 709b67: 4c 63 e8 movslq %eax,%r13 0.00 : 709b6a: e9 08 fe ff ff jmpq 709977 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 10.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 9.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 8.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 8.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 7.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 6.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 6.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 5.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 5.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 4.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 4.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079ae70 : : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerEnlargeBuffers(ResourceOwner owner) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 8.66 : 79ae70: 55 push %rbp 8.35 : 79ae71: 48 89 e5 mov %rsp,%rbp 6.93 : 79ae74: 4c 89 65 f8 mov %r12,-0x8(%rbp) 11.34 : 79ae78: 48 89 5d f0 mov %rbx,-0x10(%rbp) 7.87 : 79ae7c: 48 83 ec 10 sub $0x10,%rsp : int newmax; : : if (owner == NULL || /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 4.02 : 79ae80: 48 85 ff test %rdi,%rdi : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerEnlargeBuffers(ResourceOwner owner) : { 0.47 : 79ae83: 49 89 fc mov %rdi,%r12 : int newmax; : : if (owner == NULL || 4.72 : 79ae86: 74 2a je 79aeb2 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 6.38 : 79ae88: 8b 47 30 mov 0x30(%rdi),%eax 9.92 : 79ae8b: 39 47 20 cmp %eax,0x20(%rdi) 0.00 : 79ae8e: 7c 22 jl 79aeb2 : owner->nbuffers < owner->maxbuffers) : return; /* nothing to do */ : : if (owner->buffers == NULL) 0.00 : 79ae90: 48 8b 7f 28 mov 0x28(%rdi),%rdi 0.00 : 79ae94: 48 85 ff test %rdi,%rdi 0.00 : 79ae97: 74 27 je 79aec0 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; : } : else : { : newmax = owner->maxbuffers * 2; 0.00 : 79ae99: 8d 1c 00 lea (%rax,%rax,1),%ebx : owner->buffers = (Buffer *) 0.00 : 79ae9c: 48 63 f3 movslq %ebx,%rsi 0.00 : 79ae9f: 48 c1 e6 02 shl $0x2,%rsi 0.00 : 79aea3: e8 48 de ff ff callq 798cf0 : repalloc(owner->buffers, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; 0.00 : 79aea8: 41 89 5c 24 30 mov %ebx,0x30(%r12) : owner->maxbuffers = newmax; : } : else : { : newmax = owner->maxbuffers * 2; : owner->buffers = (Buffer *) 0.00 : 79aead: 49 89 44 24 28 mov %rax,0x28(%r12) : repalloc(owner->buffers, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 10.00 : 79aeb2: 48 8b 1c 24 mov (%rsp),%rbx 5.83 : 79aeb6: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 5.04 : 79aebb: c9 leaveq 10.47 : 79aebc: c3 retq 0.00 : 79aebd: 0f 1f 00 nopl (%rax) : return; /* nothing to do */ : : if (owner->buffers == NULL) : { : newmax = 16; : owner->buffers = (Buffer *) 0.00 : 79aec0: 48 8b 3d a1 f9 41 00 mov 0x41f9a1(%rip),%rdi # bba868 0.00 : 79aec7: be 40 00 00 00 mov $0x40,%esi 0.00 : 79aecc: e8 bf df ff ff callq 798e90 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; 0.00 : 79aed1: 41 c7 44 24 30 10 00 movl $0x10,0x30(%r12) 0.00 : 79aed8: 00 00 : return; /* nothing to do */ : : if (owner->buffers == NULL) : { : newmax = 16; : owner->buffers = (Buffer *) 0.00 : 79aeda: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 79aedf: eb d1 jmp 79aeb2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 16.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 12.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 12.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 11.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 6.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 3.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1517 3.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 2.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 1.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 1.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 1.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 1.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a5600 : : * by this function. This is OK for current uses, because we actually only : * apply this for known-committed XIDs. : */ : static bool : XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 16.58 : 7a5600: 55 push %rbp 6.75 : 7a5601: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 1.80 : 7a5604: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 11.78 : 7a5606: 49 89 f4 mov %rsi,%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 3.30 : 7a5609: 53 push %rbx : * a parent with XID < xmin, while one with XID >= xmax must belong to a : * parent that was not yet committed at the time of this snapshot. : */ : : /* Any xid < xmin is not in-progress */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 1.28 : 7a560a: 8b 76 08 mov 0x8(%rsi),%esi : * by this function. This is OK for current uses, because we actually only : * apply this for known-committed XIDs. : */ : static bool : XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot) : { 0.30 : 7a560d: 89 fb mov %edi,%ebx : * a parent with XID < xmin, while one with XID >= xmax must belong to a : * parent that was not yet committed at the time of this snapshot. : */ : : /* Any xid < xmin is not in-progress */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 12.38 : 7a560f: e8 cc a9 d1 ff callq 4bffe0 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 2.70 : 7a5614: 84 c0 test %al,%al 0.00 : 7a5616: 74 08 je 7a5620 : return true; : } : } : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 12.15 : 7a5618: 5b pop %rbx : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1517 3.60 : 7a5619: 31 c0 xor %eax,%eax : return true; : } : } : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 1.28 : 7a561b: 41 5c pop %r12 1.28 : 7a561d: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 24.61 : 7a561e: c3 retq 0.00 : 7a561f: 90 nop : : /* Any xid < xmin is not in-progress */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) : return false; : /* Any xid >= xmax is in-progress */ : if (TransactionIdFollowsOrEquals(xid, snapshot->xmax)) 0.08 : 7a5620: 41 8b 74 24 0c mov 0xc(%r12),%esi 0.00 : 7a5625: 89 df mov %ebx,%edi 0.00 : 7a5627: e8 44 aa d1 ff callq 4c0070 0.00 : 7a562c: 84 c0 test %al,%al 0.00 : 7a562e: 0f 85 7c 00 00 00 jne 7a56b0 : : /* : * Snapshot information is stored slightly differently in snapshots taken : * during recovery. : */ : if (!snapshot->takenDuringRecovery) 0.00 : 7a5634: 41 80 7c 24 29 00 cmpb $0x0,0x29(%r12) 0.00 : 7a563a: 0f 85 80 00 00 00 jne 7a56c0 : * check things is just to compare the given XID against both subxact : * XIDs and top-level XIDs. If the snapshot overflowed, we have to : * use pg_subtrans to convert a subxact XID to its parent XID, but : * then we need only look at top-level XIDs not subxacts. : */ : if (!snapshot->suboverflowed) 0.00 : 7a5640: 41 80 7c 24 28 00 cmpb $0x0,0x28(%r12) 0.00 : 7a5646: 0f 85 b4 00 00 00 jne 7a5700 : { : /* full data, so search subxip */ : int32 j; : : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a564c: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 7a5651: 85 f6 test %esi,%esi 0.00 : 7a5653: 7e 25 jle 7a567a : { : if (TransactionIdEquals(xid, snapshot->subxip[j])) 0.00 : 7a5655: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 7a565a: 31 d2 xor %edx,%edx 0.00 : 7a565c: 39 18 cmp %ebx,(%rax) 0.00 : 7a565e: 48 89 c1 mov %rax,%rcx 0.00 : 7a5661: 75 10 jne 7a5673 0.00 : 7a5663: eb 4b jmp 7a56b0 0.00 : 7a5665: 0f 1f 00 nopl (%rax) 0.00 : 7a5668: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 7a566b: 48 83 c1 04 add $0x4,%rcx 0.00 : 7a566f: 39 d8 cmp %ebx,%eax 0.00 : 7a5671: 74 3d je 7a56b0 : if (!snapshot->suboverflowed) : { : /* full data, so search subxip */ : int32 j; : : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a5673: 83 c2 01 add $0x1,%edx 0.00 : 7a5676: 39 f2 cmp %esi,%edx 0.00 : 7a5678: 7c ee jl 7a5668 : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) : return false; : } : : for (i = 0; i < snapshot->xcnt; i++) 0.00 : 7a567a: 41 8b 74 24 18 mov 0x18(%r12),%esi 0.00 : 7a567f: 85 f6 test %esi,%esi 0.00 : 7a5681: 74 95 je 7a5618 : { : if (TransactionIdEquals(xid, snapshot->xip[i])) 0.00 : 7a5683: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 7a5688: 31 d2 xor %edx,%edx 0.00 : 7a568a: 39 18 cmp %ebx,(%rax) 0.00 : 7a568c: 48 89 c1 mov %rax,%rcx 0.00 : 7a568f: 75 12 jne 7a56a3 0.00 : 7a5691: eb 1d jmp 7a56b0 0.00 : 7a5693: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a5698: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 7a569b: 48 83 c1 04 add $0x4,%rcx 0.00 : 7a569f: 39 d8 cmp %ebx,%eax 0.00 : 7a56a1: 74 0d je 7a56b0 : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) : return false; : } : : for (i = 0; i < snapshot->xcnt; i++) 0.08 : 7a56a3: 83 c2 01 add $0x1,%edx 0.00 : 7a56a6: 39 f2 cmp %esi,%edx 0.00 : 7a56a8: 72 ee jb 7a5698 0.00 : 7a56aa: e9 69 ff ff ff jmpq 7a5618 0.00 : 7a56af: 90 nop : return true; : } : } : : return false; : } 0.08 : 7a56b0: 5b pop %rbx : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a56b1: b8 01 00 00 00 mov $0x1,%eax : return true; : } : } : : return false; : } 0.00 : 7a56b6: 41 5c pop %r12 0.00 : 7a56b8: c9 leaveq 0.00 : 7a56b9: c3 retq 0.00 : 7a56ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * far the bigger array, and we mostly don't know which xids are : * top-level and which are subxacts. The xip array is empty. : * : * We start by searching subtrans, if we overflowed. : */ : if (snapshot->suboverflowed) 0.00 : 7a56c0: 41 80 7c 24 28 00 cmpb $0x0,0x28(%r12) 0.00 : 7a56c6: 75 60 jne 7a5728 : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a56c8: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 7a56cd: 85 f6 test %esi,%esi 0.00 : 7a56cf: 0f 8e 43 ff ff ff jle 7a5618 : { : if (TransactionIdEquals(xid, snapshot->subxip[j])) 0.00 : 7a56d5: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 7a56da: 31 d2 xor %edx,%edx 0.00 : 7a56dc: 39 18 cmp %ebx,(%rax) 0.00 : 7a56de: 48 89 c1 mov %rax,%rcx 0.00 : 7a56e1: 75 10 jne 7a56f3 0.00 : 7a56e3: eb cb jmp 7a56b0 0.00 : 7a56e5: 0f 1f 00 nopl (%rax) 0.00 : 7a56e8: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 7a56eb: 48 83 c1 04 add $0x4,%rcx 0.00 : 7a56ef: 39 d8 cmp %ebx,%eax 0.00 : 7a56f1: 74 bd je 7a56b0 : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a56f3: 83 c2 01 add $0x1,%edx 0.00 : 7a56f6: 39 f2 cmp %esi,%edx 0.00 : 7a56f8: 7c ee jl 7a56e8 0.00 : 7a56fa: e9 19 ff ff ff jmpq 7a5618 0.00 : 7a56ff: 90 nop : /* not there, fall through to search xip[] */ : } : else : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a5700: 89 df mov %ebx,%edi 0.00 : 7a5702: e8 e9 11 d2 ff callq 4c68f0 : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a5707: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 7a570c: 89 c7 mov %eax,%edi : /* not there, fall through to search xip[] */ : } : else : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a570e: 89 c3 mov %eax,%ebx : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a5710: e8 cb a8 d1 ff callq 4bffe0 0.00 : 7a5715: 84 c0 test %al,%al 0.00 : 7a5717: 0f 84 5d ff ff ff je 7a567a 0.00 : 7a571d: e9 f6 fe ff ff jmpq 7a5618 0.00 : 7a5722: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * We start by searching subtrans, if we overflowed. : */ : if (snapshot->suboverflowed) : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a5728: 89 df mov %ebx,%edi 0.00 : 7a572a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a5730: e8 bb 11 d2 ff callq 4c68f0 : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a5735: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 7a573a: 89 c7 mov %eax,%edi : * We start by searching subtrans, if we overflowed. : */ : if (snapshot->suboverflowed) : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a573c: 89 c3 mov %eax,%ebx : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a573e: e8 9d a8 d1 ff callq 4bffe0 0.00 : 7a5743: 84 c0 test %al,%al 0.00 : 7a5745: 74 81 je 7a56c8 0.00 : 7a5747: e9 cc fe ff ff jmpq 7a5618 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 11.42 ??:0 9.88 ??:0 4.78 ??:0 4.29 ??:0 4.13 ??:0 4.13 ??:0 3.56 ??:0 2.51 ??:0 2.51 ??:0 2.35 ??:0 2.35 ??:0 2.27 ??:0 2.02 ??:0 2.02 ??:0 1.94 ??:0 1.94 ??:0 1.78 ??:0 1.54 ??:0 1.54 ??:0 1.54 ??:0 1.13 ??:0 1.13 ??:0 1.05 ??:0 0.97 ??:0 0.97 ??:0 0.97 ??:0 0.89 ??:0 0.73 ??:0 0.73 ??:0 0.65 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000001178a0 <__strcpy_ssse3>: ??:0 4.78 : 1178a0: 31 d2 xor %edx,%edx 0.00 : 1178a2: 89 f1 mov %esi,%ecx 0.97 : 1178a4: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.24 : 1178a8: 83 e1 0f and $0xf,%ecx 2.35 : 1178ab: 48 89 f8 mov %rdi,%rax 0.00 : 1178ae: 66 0f ef c0 pxor %xmm0,%xmm0 0.16 : 1178b2: 66 0f 74 06 pcmpeqb (%rsi),%xmm0 ??:0 9.88 : 1178b6: 66 0f d7 d0 pmovmskb %xmm0,%edx ??:0 4.29 : 1178ba: d3 ea shr %cl,%edx 4.13 : 1178bc: 85 d2 test %edx,%edx 0.00 : 1178be: 0f 85 cf 06 00 00 jne 117f93 <__strcpy_ssse3+0x6f3> 0.24 : 1178c4: 49 89 c9 mov %rcx,%r9 0.00 : 1178c7: 09 f9 or %edi,%ecx 0.00 : 1178c9: 83 e1 0f and $0xf,%ecx 0.00 : 1178cc: 4d 8d 51 f0 lea -0x10(%r9),%r10 0.00 : 1178d0: 74 6e je 117940 <__strcpy_ssse3+0xa0> 0.00 : 1178d2: 49 f7 da neg %r10 0.00 : 1178d5: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1178d9: 66 0f 74 46 10 pcmpeqb 0x10(%rsi),%xmm0 0.57 : 1178de: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1178e2: 85 d2 test %edx,%edx 0.00 : 1178e4: 0f 85 96 06 00 00 jne 117f80 <__strcpy_ssse3+0x6e0> 0.00 : 1178ea: 4a 8b 14 0e mov (%rsi,%r9,1),%rdx 0.08 : 1178ee: 48 89 17 mov %rdx,(%rdi) 0.16 : 1178f1: 4a 8b 54 0e 08 mov 0x8(%rsi,%r9,1),%rdx 0.00 : 1178f6: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1178fa: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 1178fe: 48 89 c2 mov %rax,%rdx 0.40 : 117901: 48 31 fa xor %rdi,%rdx 0.00 : 117904: 48 83 c7 10 add $0x10,%rdi 0.00 : 117908: 49 29 d1 sub %rdx,%r9 0.00 : 11790b: 49 8d 74 31 10 lea 0x10(%r9,%rsi,1),%rsi 0.40 : 117910: 89 f1 mov %esi,%ecx 0.00 : 117912: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 117916: 83 e1 0f and $0xf,%ecx 0.00 : 117919: 74 25 je 117940 <__strcpy_ssse3+0xa0> 0.00 : 11791b: 4c 8d 51 f0 lea -0x10(%rcx),%r10 0.08 : 11791f: 49 89 c9 mov %rcx,%r9 0.00 : 117922: 49 f7 da neg %r10 0.00 : 117925: 4c 8d 1d 74 c3 02 00 lea 0x2c374(%rip),%r11 # 143ca0 0.00 : 11792c: 49 63 0c 8b movslq (%r11,%rcx,4),%rcx 0.57 : 117930: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx 0.08 : 117934: ff e1 jmpq *%rcx 0.00 : 117936: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11793d: 00 00 00 0.08 : 117940: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 117944: 66 0f 7f 0f movdqa %xmm1,(%rdi) 0.00 : 117948: 48 83 c6 10 add $0x10,%rsi 0.00 : 11794c: 48 83 c7 10 add $0x10,%rdi 0.00 : 117950: 66 0f 74 06 pcmpeqb (%rsi),%xmm0 0.00 : 117954: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117958: 85 d2 test %edx,%edx 0.00 : 11795a: 0f 85 36 06 00 00 jne 117f96 <__strcpy_ssse3+0x6f6> 0.00 : 117960: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 117965: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 11796a: 48 83 c1 10 add $0x10,%rcx 0.00 : 11796e: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.08 : 117973: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117977: 85 d2 test %edx,%edx 0.00 : 117979: 0f 85 11 06 00 00 jne 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 11797f: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 117984: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 117989: 48 83 c1 10 add $0x10,%rcx 0.00 : 11798d: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.08 : 117992: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117996: 85 d2 test %edx,%edx 0.00 : 117998: 0f 85 f2 05 00 00 jne 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 11799e: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 1179a3: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 1179a8: 48 83 c1 10 add $0x10,%rcx 0.00 : 1179ac: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 1179b1: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1179b5: 85 d2 test %edx,%edx 0.00 : 1179b7: 0f 85 d3 05 00 00 jne 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 1179bd: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 1179c2: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 1179c7: 48 83 c1 10 add $0x10,%rcx 0.00 : 1179cb: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 1179d0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1179d4: 85 d2 test %edx,%edx 0.00 : 1179d6: 74 88 je 117960 <__strcpy_ssse3+0xc0> 0.00 : 1179d8: e9 b3 05 00 00 jmpq 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 1179dd: 0f 1f 00 nopl (%rax) 0.00 : 1179e0: 31 c9 xor %ecx,%ecx 0.00 : 1179e2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1179e9: 1f 84 00 00 00 00 00 0.00 : 1179f0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 1179f6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.08 : 1179fa: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1179fe: 85 d2 test %edx,%edx 0.08 : 117a00: 0f 85 7c 05 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117a06: 66 0f 3a 0f 1c 0e 0f palignr $0xf,(%rsi,%rcx,1),%xmm3 0.00 : 117a0d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a12: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a16: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117a1c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117a20: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117a24: 85 d2 test %edx,%edx 0.00 : 117a26: 0f 85 56 05 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117a2c: 66 0f 3a 0f 1c 0e 0f palignr $0xf,(%rsi,%rcx,1),%xmm3 0.00 : 117a33: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a38: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a3c: eb b2 jmp 1179f0 <__strcpy_ssse3+0x150> 0.00 : 117a3e: 66 90 xchg %ax,%ax 0.08 : 117a40: 31 c9 xor %ecx,%ecx 0.08 : 117a42: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117a49: 1f 84 00 00 00 00 00 0.00 : 117a50: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117a56: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117a5a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117a5e: 85 d2 test %edx,%edx 0.00 : 117a60: 0f 85 1c 05 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.16 : 117a66: 66 0f 3a 0f 1c 0e 0e palignr $0xe,(%rsi,%rcx,1),%xmm3 0.00 : 117a6d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a72: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a76: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117a7c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117a80: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117a84: 85 d2 test %edx,%edx 0.00 : 117a86: 0f 85 f6 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117a8c: 66 0f 3a 0f 1c 0e 0e palignr $0xe,(%rsi,%rcx,1),%xmm3 0.08 : 117a93: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a98: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a9c: eb b2 jmp 117a50 <__strcpy_ssse3+0x1b0> 0.00 : 117a9e: 66 90 xchg %ax,%ax 0.16 : 117aa0: 31 c9 xor %ecx,%ecx 0.00 : 117aa2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117aa9: 1f 84 00 00 00 00 00 0.00 : 117ab0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117ab6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.08 : 117aba: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117abe: 85 d2 test %edx,%edx 0.00 : 117ac0: 0f 85 bc 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117ac6: 66 0f 3a 0f 1c 0e 0d palignr $0xd,(%rsi,%rcx,1),%xmm3 0.00 : 117acd: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.08 : 117ad2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117ad6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117adc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117ae0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ae4: 85 d2 test %edx,%edx 0.00 : 117ae6: 0f 85 96 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117aec: 66 0f 3a 0f 1c 0e 0d palignr $0xd,(%rsi,%rcx,1),%xmm3 0.00 : 117af3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117af8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117afc: eb b2 jmp 117ab0 <__strcpy_ssse3+0x210> 0.00 : 117afe: 66 90 xchg %ax,%ax 0.08 : 117b00: 31 c9 xor %ecx,%ecx 0.00 : 117b02: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117b09: 1f 84 00 00 00 00 00 0.08 : 117b10: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.16 : 117b16: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117b1a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117b1e: 85 d2 test %edx,%edx 0.00 : 117b20: 0f 85 5c 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117b26: 66 0f 3a 0f 1c 0e 0c palignr $0xc,(%rsi,%rcx,1),%xmm3 0.00 : 117b2d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117b32: 48 83 c1 10 add $0x10,%rcx 0.00 : 117b36: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117b3c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117b40: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117b44: 85 d2 test %edx,%edx 0.00 : 117b46: 0f 85 36 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117b4c: 66 0f 3a 0f 1c 0e 0c palignr $0xc,(%rsi,%rcx,1),%xmm3 0.08 : 117b53: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117b58: 48 83 c1 10 add $0x10,%rcx 0.00 : 117b5c: eb b2 jmp 117b10 <__strcpy_ssse3+0x270> 0.00 : 117b5e: 66 90 xchg %ax,%ax 0.00 : 117b60: 31 c9 xor %ecx,%ecx 0.00 : 117b62: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117b69: 1f 84 00 00 00 00 00 0.00 : 117b70: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.16 : 117b76: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117b7a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117b7e: 85 d2 test %edx,%edx 0.00 : 117b80: 0f 85 fc 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117b86: 66 0f 3a 0f 1c 0e 0b palignr $0xb,(%rsi,%rcx,1),%xmm3 0.00 : 117b8d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117b92: 48 83 c1 10 add $0x10,%rcx 0.00 : 117b96: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117b9c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117ba0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ba4: 85 d2 test %edx,%edx 0.00 : 117ba6: 0f 85 d6 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117bac: 66 0f 3a 0f 1c 0e 0b palignr $0xb,(%rsi,%rcx,1),%xmm3 0.00 : 117bb3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117bb8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117bbc: eb b2 jmp 117b70 <__strcpy_ssse3+0x2d0> 0.00 : 117bbe: 66 90 xchg %ax,%ax 0.08 : 117bc0: 31 c9 xor %ecx,%ecx 0.00 : 117bc2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117bc9: 1f 84 00 00 00 00 00 0.00 : 117bd0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 117bd6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117bda: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117bde: 85 d2 test %edx,%edx 0.00 : 117be0: 0f 85 9c 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117be6: 66 0f 3a 0f 1c 0e 0a palignr $0xa,(%rsi,%rcx,1),%xmm3 0.00 : 117bed: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117bf2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117bf6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117bfc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c00: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c04: 85 d2 test %edx,%edx 0.00 : 117c06: 0f 85 76 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117c0c: 66 0f 3a 0f 1c 0e 0a palignr $0xa,(%rsi,%rcx,1),%xmm3 0.08 : 117c13: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.08 : 117c18: 48 83 c1 10 add $0x10,%rcx 0.00 : 117c1c: eb b2 jmp 117bd0 <__strcpy_ssse3+0x330> 0.00 : 117c1e: 66 90 xchg %ax,%ax 0.00 : 117c20: 31 c9 xor %ecx,%ecx 0.00 : 117c22: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117c29: 1f 84 00 00 00 00 00 0.00 : 117c30: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 117c36: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c3a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c3e: 85 d2 test %edx,%edx 0.08 : 117c40: 0f 85 3c 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117c46: 66 0f 3a 0f 1c 0e 09 palignr $0x9,(%rsi,%rcx,1),%xmm3 0.00 : 117c4d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117c52: 48 83 c1 10 add $0x10,%rcx 0.00 : 117c56: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117c5c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c60: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c64: 85 d2 test %edx,%edx 0.00 : 117c66: 0f 85 16 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117c6c: 66 0f 3a 0f 1c 0e 09 palignr $0x9,(%rsi,%rcx,1),%xmm3 0.00 : 117c73: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117c78: 48 83 c1 10 add $0x10,%rcx 0.00 : 117c7c: eb b2 jmp 117c30 <__strcpy_ssse3+0x390> 0.00 : 117c7e: 66 90 xchg %ax,%ax 0.08 : 117c80: 31 c9 xor %ecx,%ecx 0.00 : 117c82: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117c89: 1f 84 00 00 00 00 00 0.00 : 117c90: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 117c96: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c9a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c9e: 85 d2 test %edx,%edx 0.00 : 117ca0: 0f 85 dc 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117ca6: 66 0f 3a 0f 1c 0e 08 palignr $0x8,(%rsi,%rcx,1),%xmm3 0.00 : 117cad: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117cb2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117cb6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117cbc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117cc0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117cc4: 85 d2 test %edx,%edx 0.00 : 117cc6: 0f 85 b6 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117ccc: 66 0f 3a 0f 1c 0e 08 palignr $0x8,(%rsi,%rcx,1),%xmm3 0.00 : 117cd3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117cd8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117cdc: eb b2 jmp 117c90 <__strcpy_ssse3+0x3f0> 0.00 : 117cde: 66 90 xchg %ax,%ax 0.00 : 117ce0: 31 c9 xor %ecx,%ecx 0.00 : 117ce2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117ce9: 1f 84 00 00 00 00 00 0.00 : 117cf0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 117cf6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117cfa: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117cfe: 85 d2 test %edx,%edx 0.00 : 117d00: 0f 85 7c 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117d06: 66 0f 3a 0f 1c 0e 07 palignr $0x7,(%rsi,%rcx,1),%xmm3 0.00 : 117d0d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117d12: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d16: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117d1c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.08 : 117d20: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.16 : 117d24: 85 d2 test %edx,%edx 0.00 : 117d26: 0f 85 56 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117d2c: 66 0f 3a 0f 1c 0e 07 palignr $0x7,(%rsi,%rcx,1),%xmm3 0.00 : 117d33: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117d38: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d3c: eb b2 jmp 117cf0 <__strcpy_ssse3+0x450> 0.00 : 117d3e: 66 90 xchg %ax,%ax 0.00 : 117d40: 31 c9 xor %ecx,%ecx 0.00 : 117d42: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117d49: 1f 84 00 00 00 00 00 0.00 : 117d50: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.16 : 117d56: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117d5a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117d5e: 85 d2 test %edx,%edx 0.00 : 117d60: 0f 85 1c 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117d66: 66 0f 3a 0f 1c 0e 06 palignr $0x6,(%rsi,%rcx,1),%xmm3 0.00 : 117d6d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.08 : 117d72: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d76: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117d7c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.08 : 117d80: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117d84: 85 d2 test %edx,%edx 0.00 : 117d86: 0f 85 f6 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117d8c: 66 0f 3a 0f 1c 0e 06 palignr $0x6,(%rsi,%rcx,1),%xmm3 0.00 : 117d93: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117d98: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d9c: eb b2 jmp 117d50 <__strcpy_ssse3+0x4b0> 0.00 : 117d9e: 66 90 xchg %ax,%ax 0.00 : 117da0: 31 c9 xor %ecx,%ecx 0.00 : 117da2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117da9: 1f 84 00 00 00 00 00 0.08 : 117db0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.16 : 117db6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.16 : 117dba: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117dbe: 85 d2 test %edx,%edx 0.00 : 117dc0: 0f 85 bc 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117dc6: 66 0f 3a 0f 1c 0e 05 palignr $0x5,(%rsi,%rcx,1),%xmm3 0.16 : 117dcd: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117dd2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117dd6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117ddc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117de0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117de4: 85 d2 test %edx,%edx 0.00 : 117de6: 0f 85 96 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117dec: 66 0f 3a 0f 1c 0e 05 palignr $0x5,(%rsi,%rcx,1),%xmm3 0.24 : 117df3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117df8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117dfc: eb b2 jmp 117db0 <__strcpy_ssse3+0x510> 0.00 : 117dfe: 66 90 xchg %ax,%ax 0.00 : 117e00: 31 c9 xor %ecx,%ecx 0.00 : 117e02: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117e09: 1f 84 00 00 00 00 00 0.00 : 117e10: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 117e16: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117e1a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117e1e: 85 d2 test %edx,%edx 0.00 : 117e20: 0f 85 5c 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117e26: 66 0f 3a 0f 1c 0e 04 palignr $0x4,(%rsi,%rcx,1),%xmm3 0.00 : 117e2d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.08 : 117e32: 48 83 c1 10 add $0x10,%rcx 0.00 : 117e36: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117e3c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.08 : 117e40: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.08 : 117e44: 85 d2 test %edx,%edx 0.00 : 117e46: 0f 85 36 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117e4c: 66 0f 3a 0f 1c 0e 04 palignr $0x4,(%rsi,%rcx,1),%xmm3 0.08 : 117e53: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117e58: 48 83 c1 10 add $0x10,%rcx 0.00 : 117e5c: eb b2 jmp 117e10 <__strcpy_ssse3+0x570> 0.00 : 117e5e: 66 90 xchg %ax,%ax 0.00 : 117e60: 31 c9 xor %ecx,%ecx 0.08 : 117e62: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117e69: 1f 84 00 00 00 00 00 0.00 : 117e70: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 117e76: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117e7a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117e7e: 85 d2 test %edx,%edx 0.00 : 117e80: 0f 85 fc 00 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117e86: 66 0f 3a 0f 1c 0e 03 palignr $0x3,(%rsi,%rcx,1),%xmm3 0.00 : 117e8d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117e92: 48 83 c1 10 add $0x10,%rcx 0.00 : 117e96: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117e9c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117ea0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ea4: 85 d2 test %edx,%edx 0.00 : 117ea6: 0f 85 d6 00 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117eac: 66 0f 3a 0f 1c 0e 03 palignr $0x3,(%rsi,%rcx,1),%xmm3 0.08 : 117eb3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.08 : 117eb8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117ebc: eb b2 jmp 117e70 <__strcpy_ssse3+0x5d0> 0.00 : 117ebe: 66 90 xchg %ax,%ax 0.00 : 117ec0: 31 c9 xor %ecx,%ecx 0.00 : 117ec2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117ec9: 1f 84 00 00 00 00 00 0.00 : 117ed0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117ed6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117eda: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ede: 85 d2 test %edx,%edx 0.00 : 117ee0: 0f 85 9c 00 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.08 : 117ee6: 66 0f 3a 0f 1c 0e 02 palignr $0x2,(%rsi,%rcx,1),%xmm3 0.00 : 117eed: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117ef2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117ef6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117efc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117f00: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117f04: 85 d2 test %edx,%edx 0.00 : 117f06: 75 7a jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117f08: 66 0f 3a 0f 1c 0e 02 palignr $0x2,(%rsi,%rcx,1),%xmm3 0.08 : 117f0f: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117f14: 48 83 c1 10 add $0x10,%rcx 0.00 : 117f18: eb b6 jmp 117ed0 <__strcpy_ssse3+0x630> 0.00 : 117f1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 117f20: 31 c9 xor %ecx,%ecx 0.08 : 117f22: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117f29: 1f 84 00 00 00 00 00 0.08 : 117f30: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.08 : 117f36: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.08 : 117f3a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117f3e: 85 d2 test %edx,%edx 0.00 : 117f40: 75 40 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117f42: 66 0f 3a 0f 1c 0e 01 palignr $0x1,(%rsi,%rcx,1),%xmm3 0.08 : 117f49: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117f4e: 48 83 c1 10 add $0x10,%rcx 0.00 : 117f52: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117f58: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117f5c: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.08 : 117f60: 85 d2 test %edx,%edx 0.00 : 117f62: 75 1e jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117f64: 66 0f 3a 0f 1c 0e 01 palignr $0x1,(%rsi,%rcx,1),%xmm3 0.00 : 117f6b: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117f70: 48 83 c1 10 add $0x10,%rcx 0.00 : 117f74: eb ba jmp 117f30 <__strcpy_ssse3+0x690> 0.00 : 117f76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117f7d: 00 00 00 0.08 : 117f80: 31 c9 xor %ecx,%ecx 1.13 : 117f82: 4c 01 ce add %r9,%rsi 0.49 : 117f85: 49 89 c9 mov %rcx,%r9 0.16 : 117f88: 4c 89 d1 mov %r10,%rcx 0.00 : 117f8b: d3 e2 shl %cl,%edx 0.97 : 117f8d: 4c 89 c9 mov %r9,%rcx 0.08 : 117f90: 48 01 cf add %rcx,%rdi 0.89 : 117f93: 48 01 ce add %rcx,%rsi 0.32 : 117f96: 48 0f bc ca bsf %rdx,%rcx 3.56 : 117f9a: 4c 8d 1d 7f bc 02 00 lea 0x2bc7f(%rip),%r11 # 143c20 0.57 : 117fa1: 49 63 0c 8b movslq (%r11,%rcx,4),%rcx ??:0 11.42 : 117fa5: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx ??:0 2.02 : 117fa9: ff e1 jmpq *%rcx 0.00 : 117fab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 117fb0: 8a 0e mov (%rsi),%cl 0.00 : 117fb2: 88 0f mov %cl,(%rdi) 0.08 : 117fb4: c3 retq 0.00 : 117fb5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117fbc: 00 00 00 00 0.57 : 117fc0: 66 8b 0e mov (%rsi),%cx 0.97 : 117fc3: 66 89 0f mov %cx,(%rdi) 0.40 : 117fc6: c3 retq 0.00 : 117fc7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 117fce: 00 00 0.24 : 117fd0: 66 8b 0e mov (%rsi),%cx 0.24 : 117fd3: 66 89 0f mov %cx,(%rdi) 0.00 : 117fd6: 66 8b 4e 01 mov 0x1(%rsi),%cx 0.00 : 117fda: 66 89 4f 01 mov %cx,0x1(%rdi) 0.00 : 117fde: c3 retq 0.00 : 117fdf: 90 nop 1.54 : 117fe0: 8b 0e mov (%rsi),%ecx 0.73 : 117fe2: 89 0f mov %ecx,(%rdi) 0.73 : 117fe4: c3 retq 0.00 : 117fe5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117fec: 00 00 00 00 1.13 : 117ff0: 8b 0e mov (%rsi),%ecx 0.49 : 117ff2: 89 0f mov %ecx,(%rdi) 0.08 : 117ff4: 8b 56 01 mov 0x1(%rsi),%edx 0.00 : 117ff7: 89 57 01 mov %edx,0x1(%rdi) 0.32 : 117ffa: c3 retq 0.00 : 117ffb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 2.27 : 118000: 8b 0e mov (%rsi),%ecx 4.13 : 118002: 89 0f mov %ecx,(%rdi) 0.40 : 118004: 8b 56 02 mov 0x2(%rsi),%edx 0.00 : 118007: 89 57 02 mov %edx,0x2(%rdi) 0.24 : 11800a: c3 retq 0.00 : 11800b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 1.94 : 118010: 8b 0e mov (%rsi),%ecx 2.02 : 118012: 89 0f mov %ecx,(%rdi) 0.65 : 118014: 8b 56 03 mov 0x3(%rsi),%edx 0.00 : 118017: 89 57 03 mov %edx,0x3(%rdi) 0.24 : 11801a: c3 retq 0.00 : 11801b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 2.51 : 118020: 48 8b 0e mov (%rsi),%rcx 2.51 : 118023: 48 89 0f mov %rcx,(%rdi) 1.54 : 118026: c3 retq 0.00 : 118027: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11802e: 00 00 1.94 : 118030: 48 8b 0e mov (%rsi),%rcx 2.35 : 118033: 48 89 0f mov %rcx,(%rdi) 0.57 : 118036: 8b 56 05 mov 0x5(%rsi),%edx 0.00 : 118039: 89 57 05 mov %edx,0x5(%rdi) 0.40 : 11803c: c3 retq 0.00 : 11803d: 0f 1f 00 nopl (%rax) 1.78 : 118040: 48 8b 0e mov (%rsi),%rcx 1.54 : 118043: 48 89 0f mov %rcx,(%rdi) 0.49 : 118046: 8b 56 06 mov 0x6(%rsi),%edx 0.00 : 118049: 89 57 06 mov %edx,0x6(%rdi) 0.24 : 11804c: c3 retq 0.00 : 11804d: 0f 1f 00 nopl (%rax) 0.08 : 118050: 48 8b 0e mov (%rsi),%rcx 0.16 : 118053: 48 89 0f mov %rcx,(%rdi) 0.08 : 118056: 8b 56 07 mov 0x7(%rsi),%edx 0.00 : 118059: 89 57 07 mov %edx,0x7(%rdi) 0.08 : 11805c: c3 retq 0.00 : 11805d: 0f 1f 00 nopl (%rax) 0.57 : 118060: 48 8b 0e mov (%rsi),%rcx 0.57 : 118063: 48 89 0f mov %rcx,(%rdi) 0.24 : 118066: 8b 56 08 mov 0x8(%rsi),%edx 0.00 : 118069: 89 57 08 mov %edx,0x8(%rdi) 0.08 : 11806c: c3 retq 0.00 : 11806d: 0f 1f 00 nopl (%rax) 0.40 : 118070: 48 8b 0e mov (%rsi),%rcx 1.05 : 118073: 48 89 0f mov %rcx,(%rdi) 0.08 : 118076: 48 8b 4e 05 mov 0x5(%rsi),%rcx 0.00 : 11807a: 48 89 4f 05 mov %rcx,0x5(%rdi) 0.00 : 11807e: c3 retq 0.00 : 11807f: 90 nop 0.08 : 118080: 48 8b 0e mov (%rsi),%rcx 0.00 : 118083: 48 89 0f mov %rcx,(%rdi) 0.00 : 118086: 48 8b 4e 06 mov 0x6(%rsi),%rcx 0.00 : 11808a: 48 89 4f 06 mov %rcx,0x6(%rdi) 0.00 : 11808e: c3 retq 0.00 : 11808f: 90 nop 0.16 : 118090: 48 8b 0e mov (%rsi),%rcx 0.00 : 118093: 48 89 0f mov %rcx,(%rdi) 0.00 : 118096: 48 8b 4e 07 mov 0x7(%rsi),%rcx 0.00 : 11809a: 48 89 4f 07 mov %rcx,0x7(%rdi) 0.08 : 11809e: c3 retq 0.16 : 11809f: 48 8b 0e mov (%rsi),%rcx 0.16 : 1180a2: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180a5: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180a9: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180ad: c3 retq 0.00 : 1180ae: 66 90 xchg %ax,%ax 0.40 : 1180b0: 48 8b 0e mov (%rsi),%rcx 0.08 : 1180b3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180b6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180ba: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180be: 8a 4e 10 mov 0x10(%rsi),%cl 0.00 : 1180c1: 88 4f 10 mov %cl,0x10(%rdi) 0.00 : 1180c4: c3 retq 0.00 : 1180c5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1180cc: 00 00 00 00 0.08 : 1180d0: 48 8b 0e mov (%rsi),%rcx 0.08 : 1180d3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180d6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180da: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180de: 66 8b 4e 10 mov 0x10(%rsi),%cx 0.00 : 1180e2: 66 89 4f 10 mov %cx,0x10(%rdi) 0.00 : 1180e6: c3 retq 0.00 : 1180e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1180ee: 00 00 0.08 : 1180f0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1180f3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180f6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180fa: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180fe: 8b 4e 0f mov 0xf(%rsi),%ecx 0.00 : 118101: 89 4f 0f mov %ecx,0xf(%rdi) 0.00 : 118104: c3 retq 0.00 : 118105: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11810c: 00 00 00 00 0.24 : 118110: 48 8b 0e mov (%rsi),%rcx 0.08 : 118113: 48 89 0f mov %rcx,(%rdi) 0.00 : 118116: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11811a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11811e: 8b 4e 10 mov 0x10(%rsi),%ecx 0.00 : 118121: 89 4f 10 mov %ecx,0x10(%rdi) 0.08 : 118124: c3 retq 0.00 : 118125: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11812c: 00 00 00 00 0.16 : 118130: 48 8b 0e mov (%rsi),%rcx 0.00 : 118133: 48 89 0f mov %rcx,(%rdi) 0.00 : 118136: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11813a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11813e: 48 8b 4e 0d mov 0xd(%rsi),%rcx 0.00 : 118142: 48 89 4f 0d mov %rcx,0xd(%rdi) 0.00 : 118146: c3 retq 0.00 : 118147: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11814e: 00 00 0.08 : 118150: 48 8b 0e mov (%rsi),%rcx 0.08 : 118153: 48 89 0f mov %rcx,(%rdi) 0.00 : 118156: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11815a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11815e: 48 8b 4e 0e mov 0xe(%rsi),%rcx 0.00 : 118162: 48 89 4f 0e mov %rcx,0xe(%rdi) 0.08 : 118166: c3 retq 0.00 : 118167: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11816e: 00 00 0.08 : 118170: 48 8b 0e mov (%rsi),%rcx 0.00 : 118173: 48 89 0f mov %rcx,(%rdi) 0.00 : 118176: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11817a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11817e: 48 8b 4e 0f mov 0xf(%rsi),%rcx 0.00 : 118182: 48 89 4f 0f mov %rcx,0xf(%rdi) 0.08 : 118186: c3 retq 0.00 : 118187: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11818e: 00 00 0.00 : 118190: 48 8b 0e mov (%rsi),%rcx 0.08 : 118193: 48 89 0f mov %rcx,(%rdi) 0.00 : 118196: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11819a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11819e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.08 : 1181a2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1181a6: c3 retq 0.00 : 1181a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1181ae: 00 00 0.08 : 1181b0: 48 8b 0e mov (%rsi),%rcx 0.16 : 1181b3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1181b6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1181ba: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1181be: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1181c2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1181c6: 8b 56 15 mov 0x15(%rsi),%edx 0.00 : 1181c9: 89 57 15 mov %edx,0x15(%rdi) 0.00 : 1181cc: c3 retq 0.00 : 1181cd: 0f 1f 00 nopl (%rax) 0.16 : 1181d0: 48 8b 0e mov (%rsi),%rcx 0.08 : 1181d3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1181d6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1181da: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1181de: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1181e2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1181e6: 8b 56 16 mov 0x16(%rsi),%edx 0.00 : 1181e9: 89 57 16 mov %edx,0x16(%rdi) 0.00 : 1181ec: c3 retq 0.00 : 1181ed: 0f 1f 00 nopl (%rax) 0.16 : 1181f0: 48 8b 0e mov (%rsi),%rcx 0.16 : 1181f3: 48 89 0f mov %rcx,(%rdi) 0.16 : 1181f6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1181fa: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1181fe: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.08 : 118202: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118206: 8b 56 17 mov 0x17(%rsi),%edx 0.00 : 118209: 89 57 17 mov %edx,0x17(%rdi) 0.00 : 11820c: c3 retq 0.00 : 11820d: 0f 1f 00 nopl (%rax) 0.00 : 118210: 48 8b 0e mov (%rsi),%rcx 0.08 : 118213: 48 89 0f mov %rcx,(%rdi) 0.00 : 118216: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11821a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11821e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118222: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118226: 8b 56 18 mov 0x18(%rsi),%edx 0.00 : 118229: 89 57 18 mov %edx,0x18(%rdi) 0.00 : 11822c: c3 retq 0.00 : 11822d: 0f 1f 00 nopl (%rax) 0.00 : 118230: 48 8b 0e mov (%rsi),%rcx 0.00 : 118233: 48 89 0f mov %rcx,(%rdi) 0.00 : 118236: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11823a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11823e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118242: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118246: 48 8b 56 15 mov 0x15(%rsi),%rdx 0.00 : 11824a: 48 89 57 15 mov %rdx,0x15(%rdi) 0.00 : 11824e: c3 retq 0.00 : 11824f: 90 nop 0.00 : 118250: 48 8b 0e mov (%rsi),%rcx 0.08 : 118253: 48 89 0f mov %rcx,(%rdi) 0.00 : 118256: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11825a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11825e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118262: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.08 : 118266: 48 8b 56 16 mov 0x16(%rsi),%rdx 0.00 : 11826a: 48 89 57 16 mov %rdx,0x16(%rdi) 0.00 : 11826e: c3 retq 0.00 : 11826f: 90 nop 0.16 : 118270: 48 8b 0e mov (%rsi),%rcx 0.16 : 118273: 48 89 0f mov %rcx,(%rdi) 0.00 : 118276: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11827a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11827e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118282: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118286: 48 8b 56 17 mov 0x17(%rsi),%rdx 0.00 : 11828a: 48 89 57 17 mov %rdx,0x17(%rdi) 0.00 : 11828e: c3 retq 0.00 : 11828f: 90 nop 0.00 : 118290: 48 8b 0e mov (%rsi),%rcx 0.00 : 118293: 48 89 0f mov %rcx,(%rdi) 0.08 : 118296: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11829a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11829e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.08 : 1182a2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1182a6: 48 8b 56 18 mov 0x18(%rsi),%rdx 0.00 : 1182aa: 48 89 57 18 mov %rdx,0x18(%rdi) Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 6.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:410 5.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:410 4.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:410 4.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 4.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:381 4.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 3.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 3.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.15 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:381 2.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 2.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:367 2.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 2.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 2.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:341 2.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:367 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:401 2.16 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 2.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 2.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 1.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 1.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:373 1.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:366 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:365 1.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:379 1.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 1.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:370 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:395 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:395 1.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:369 0.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:410 0.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:399 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:341 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:395 0.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:399 0.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 0.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:405 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a8e70 : : * zeroed. : */ : TupleHashEntry : LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, : bool *isnew) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 4.41 : 5a8e70: 55 push %rbp 1.08 : 5a8e71: 48 89 e5 mov %rsp,%rbp 2.79 : 5a8e74: 4c 89 65 e0 mov %r12,-0x20(%rbp) 1.98 : 5a8e78: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.54 : 5a8e7c: 49 89 fc mov %rdi,%r12 0.00 : 5a8e7f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 2.07 : 5a8e83: 48 89 5d d8 mov %rbx,-0x28(%rbp) 2.16 : 5a8e87: 49 89 f6 mov %rsi,%r14 0.63 : 5a8e8a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5a8e8e: 48 83 ec 50 sub $0x50,%rsp : TupleHashTable saveCurHT; : TupleHashEntryData dummy; : bool found; : : /* If first time through, clone the input slot to make table slot */ : if (hashtable->tableslot == NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:341 2.79 : 5a8e92: 48 83 7f 40 00 cmpq $0x0,0x40(%rdi) : * zeroed. : */ : TupleHashEntry : LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, : bool *isnew) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:333 2.97 : 5a8e97: 49 89 d5 mov %rdx,%r13 : TupleHashTable saveCurHT; : TupleHashEntryData dummy; : bool found; : : /* If first time through, clone the input slot to make table slot */ : if (hashtable->tableslot == NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:341 0.63 : 5a8e9a: 0f 84 08 01 00 00 je 5a8fa8 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.09 : 5a8ea0: 48 8b 05 b9 19 61 00 mov 0x6119b9(%rip),%rax # bba860 : saveCurHT = CurTupleHashTable; : CurTupleHashTable = hashtable; : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ : entry = (TupleHashEntry) hash_search(hashtable->hashtab, /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 2.07 : 5a8ea7: 31 d2 xor %edx,%edx 1.44 : 5a8ea9: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.72 : 5a8ead: 4d 85 ed test %r13,%r13 0.18 : 5a8eb0: 48 8d 75 c0 lea -0x40(%rbp),%rsi : : saveCurHT = CurTupleHashTable; : CurTupleHashTable = hashtable; : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:373 1.98 : 5a8eb4: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 5a8ebb: 00 : entry = (TupleHashEntry) hash_search(hashtable->hashtab, /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 4.05 : 5a8ebc: 0f 95 c2 setne %dl /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.81 : 5a8ebf: 48 89 45 b8 mov %rax,-0x48(%rbp) : : CurrentMemoryContext = context; 0.18 : 5a8ec3: 49 8b 44 24 30 mov 0x30(%r12),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.51 : 5a8ec8: 48 89 05 91 19 61 00 mov %rax,0x611991(%rip) # bba860 : * : * We save and restore CurTupleHashTable just in case someone manages to : * invoke this code re-entrantly. : */ : hashtable->inputslot = slot; : hashtable->in_hash_funcs = hashtable->tab_hash_funcs; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:366 1.98 : 5a8ecf: 49 8b 44 24 18 mov 0x18(%r12),%rax : * Set up data needed by hash and match functions : * : * We save and restore CurTupleHashTable just in case someone manages to : * invoke this code re-entrantly. : */ : hashtable->inputslot = slot; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:365 1.71 : 5a8ed4: 4d 89 74 24 48 mov %r14,0x48(%r12) : hashtable->in_hash_funcs = hashtable->tab_hash_funcs; 0.27 : 5a8ed9: 49 89 44 24 50 mov %rax,0x50(%r12) : hashtable->cur_eq_funcs = hashtable->tab_eq_funcs; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:367 2.79 : 5a8ede: 49 8b 44 24 20 mov 0x20(%r12),%rax 2.97 : 5a8ee3: 49 89 44 24 58 mov %rax,0x58(%r12) : : saveCurHT = CurTupleHashTable; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:369 0.90 : 5a8ee8: 4c 8b 3d d1 09 5d 00 mov 0x5d09d1(%rip),%r15 # b798c0 : CurTupleHashTable = hashtable; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:370 1.44 : 5a8eef: 4c 89 25 ca 09 5d 00 mov %r12,0x5d09ca(%rip) # b798c0 : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ : entry = (TupleHashEntry) hash_search(hashtable->hashtab, /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:374 2.88 : 5a8ef6: 49 8b 3c 24 mov (%r12),%rdi 3.69 : 5a8efa: e8 a1 b7 1d 00 callq 7846a0 : &dummy, : isnew ? HASH_ENTER : HASH_FIND, : &found); : : if (isnew) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:379 1.62 : 5a8eff: 4d 85 ed test %r13,%r13 : saveCurHT = CurTupleHashTable; : CurTupleHashTable = hashtable; : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ : entry = (TupleHashEntry) hash_search(hashtable->hashtab, 0.09 : 5a8f02: 48 89 c3 mov %rax,%rbx : &dummy, : isnew ? HASH_ENTER : HASH_FIND, : &found); : : if (isnew) 0.09 : 5a8f05: 74 41 je 5a8f48 : { : if (found) /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:381 4.41 : 5a8f07: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 3.15 : 5a8f0b: 75 6b jne 5a8f78 : * : * Zero any caller-requested space in the entry. (This zaps the : * "key data" dynahash.c copied into the new entry, but we don't : * care since we're about to overwrite it anyway.) : */ : MemSet(entry, 0, hashtable->entrysize); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:395 0.63 : 5a8f0d: 49 8b 54 24 38 mov 0x38(%r12),%rdx 0.00 : 5a8f12: 48 09 d0 or %rdx,%rax 0.00 : 5a8f15: a8 07 test $0x7,%al 0.00 : 5a8f17: 75 09 jne 5a8f22 0.18 : 5a8f19: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 5a8f20: 76 5e jbe 5a8f80 0.00 : 5a8f22: 31 f6 xor %esi,%esi 0.00 : 5a8f24: 48 89 df mov %rbx,%rdi 0.00 : 5a8f27: e8 f4 04 ec ff callq 469420 0.09 : 5a8f2c: 49 8b 44 24 28 mov 0x28(%r12),%rax : : /* Copy the first tuple into the table context */ : MemoryContextSwitchTo(hashtable->tablecxt); : entry->firstTuple = ExecCopySlotMinimalTuple(slot); 0.09 : 5a8f31: 4c 89 f7 mov %r14,%rdi 0.27 : 5a8f34: 48 89 05 25 19 61 00 mov %rax,0x611925(%rip) # bba860 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:399 0.72 : 5a8f3b: e8 c0 af 00 00 callq 5b3f00 0.63 : 5a8f40: 48 89 03 mov %rax,(%rbx) : : *isnew = true; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:401 2.34 : 5a8f43: 41 c6 45 00 01 movb $0x1,0x0(%r13) /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 6.67 : 5a8f48: 48 8b 45 b8 mov -0x48(%rbp),%rax : } : } : : CurTupleHashTable = saveCurHT; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:405 0.54 : 5a8f4c: 4c 89 3d 6d 09 5d 00 mov %r15,0x5d096d(%rip) # b798c0 : : MemoryContextSwitchTo(oldContext); : : return entry; : } 0.36 : 5a8f53: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5a8f57: 4c 8b 6d e8 mov -0x18(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:410 6.04 : 5a8f5b: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.36 : 5a8f5f: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.36 : 5a8f63: 48 89 05 f6 18 61 00 mov %rax,0x6118f6(%rip) # bba860 0.09 : 5a8f6a: 48 89 d8 mov %rbx,%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:410 4.86 : 5a8f6d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.90 : 5a8f71: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:410 5.59 : 5a8f72: c3 retq 0.00 : 5a8f73: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (isnew) : { : if (found) : { : /* found pre-existing entry */ : *isnew = false; 0.27 : 5a8f78: 41 c6 45 00 00 movb $0x0,0x0(%r13) 0.27 : 5a8f7d: eb c9 jmp 5a8f48 0.00 : 5a8f7f: 90 nop : * : * Zero any caller-requested space in the entry. (This zaps the : * "key data" dynahash.c copied into the new entry, but we don't : * care since we're about to overwrite it anyway.) : */ : MemSet(entry, 0, hashtable->entrysize); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:395 1.17 : 5a8f80: 48 8d 14 13 lea (%rbx,%rdx,1),%rdx 0.36 : 5a8f84: 48 89 d8 mov %rbx,%rax 0.00 : 5a8f87: 48 39 d3 cmp %rdx,%rbx 0.00 : 5a8f8a: 73 a0 jae 5a8f2c 0.09 : 5a8f8c: 0f 1f 40 00 nopl 0x0(%rax) 0.45 : 5a8f90: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 1.17 : 5a8f97: 48 83 c0 08 add $0x8,%rax 0.36 : 5a8f9b: 48 39 c2 cmp %rax,%rdx 0.00 : 5a8f9e: 77 f0 ja 5a8f90 0.00 : 5a8fa0: eb 8a jmp 5a8f2c 0.00 : 5a8fa2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a8fa8: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5a8fac: 48 8b 1d ad 18 61 00 mov 0x6118ad(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 5a8fb3: 48 89 05 a6 18 61 00 mov %rax,0x6118a6(%rip) # bba860 : : /* : * We copy the input tuple descriptor just for safety --- we assume : * all input tuples will have equivalent descriptors. : */ : tupdesc = CreateTupleDescCopy(slot->tts_tupleDescriptor); 0.00 : 5a8fba: 48 8b 7e 10 mov 0x10(%rsi),%rdi 0.00 : 5a8fbe: e8 bd be ec ff callq 474e80 0.00 : 5a8fc3: 48 89 c7 mov %rax,%rdi : hashtable->tableslot = MakeSingleTupleTableSlot(tupdesc); 0.00 : 5a8fc6: e8 85 b7 00 00 callq 5b4750 0.00 : 5a8fcb: 49 89 44 24 40 mov %rax,0x40(%r12) 0.00 : 5a8fd0: 48 89 1d 89 18 61 00 mov %rbx,0x611889(%rip) # bba860 0.00 : 5a8fd7: e9 c4 fe ff ff jmpq 5a8ea0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2545 24.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2545 8.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2550 8.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2550 7.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2550 4.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2545 3.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2546 3.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2547 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2546 2.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2547 2.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2553 2.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2554 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2552 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3ca0 : : * float84mul - returns arg1 * arg2 : * float84div - returns arg1 / arg2 : */ : Datum : float84pl(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2545 24.61 : 6d3ca0: 55 push %rbp 28.82 : 6d3ca1: 48 89 e5 mov %rsp,%rbp 0.09 : 6d3ca4: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2545 4.94 : 6d3ca5: 48 89 fb mov %rdi,%rbx 0.00 : 6d3ca8: 48 83 ec 18 sub $0x18,%rsp : float8 arg1 = PG_GETARG_FLOAT8(0); 0.00 : 6d3cac: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2546 3.20 : 6d3cb0: e8 1b 9d 0a 00 callq 77d9d0 2.38 : 6d3cb5: f2 0f 11 45 e0 movsd %xmm0,-0x20(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2547 3.02 : 6d3cba: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 6d3cbe: e8 ed 9c 0a 00 callq 77d9b0 2.20 : 6d3cc3: f3 0f 11 45 ec movss %xmm0,-0x14(%rbp) : float8 result; : : result = arg1 + arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2550 7.96 : 6d3cc8: 0f 14 c0 unpcklps %xmm0,%xmm0 0.00 : 6d3ccb: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.09 : 6d3cce: f2 0f 11 45 f0 movsd %xmm0,-0x10(%rbp) 8.14 : 6d3cd3: f2 0f 10 45 e0 movsd -0x20(%rbp),%xmm0 0.00 : 6d3cd8: f2 0f 58 45 f0 addsd -0x10(%rbp),%xmm0 8.78 : 6d3cdd: f2 0f 11 45 f0 movsd %xmm0,-0x10(%rbp) : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2552 1.65 : 6d3ce2: e8 09 5e d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3ce7: 85 c0 test %eax,%eax 0.00 : 6d3ce9: 74 0e je 6d3cf9 0.00 : 6d3ceb: f2 0f 10 45 e0 movsd -0x20(%rbp),%xmm0 0.00 : 6d3cf0: e8 fb 5d d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3cf5: 85 c0 test %eax,%eax 0.00 : 6d3cf7: 74 17 je 6d3d10 : PG_RETURN_FLOAT8(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2553 2.10 : 6d3cf9: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 : } 0.00 : 6d3cfe: 48 83 c4 18 add $0x18,%rsp 0.00 : 6d3d02: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2554 2.01 : 6d3d03: c9 leaveq : float8 result; : : result = arg1 + arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); : PG_RETURN_FLOAT8(result); 0.00 : 6d3d04: e9 b7 9c 0a 00 jmpq 77d9c0 0.00 : 6d3d09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : float4 arg2 = PG_GETARG_FLOAT4(1); : float8 result; : : result = arg1 + arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), true); 0.00 : 6d3d10: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0 0.00 : 6d3d15: e8 16 5a d9 ff callq 469730 <__isinff@plt> 0.00 : 6d3d1a: 85 c0 test %eax,%eax 0.00 : 6d3d1c: 75 db jne 6d3cf9 0.00 : 6d3d1e: 45 31 c0 xor %r8d,%r8d 0.00 : 6d3d21: b9 e4 b8 8b 00 mov $0x8bb8e4,%ecx 0.00 : 6d3d26: ba f8 09 00 00 mov $0x9f8,%edx 0.00 : 6d3d2b: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d3d30: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d3d35: e8 86 6d 0a 00 callq 77aac0 0.00 : 6d3d3a: 84 c0 test %al,%al 0.00 : 6d3d3c: 75 05 jne 6d3d43 0.00 : 6d3d3e: e8 8d 57 d9 ff callq 4694d0 0.00 : 6d3d43: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d3d48: 31 c0 xor %eax,%eax 0.00 : 6d3d4a: e8 51 8b 0a 00 callq 77c8a0 0.00 : 6d3d4f: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d3d54: 89 c3 mov %eax,%ebx 0.00 : 6d3d56: e8 f5 8f 0a 00 callq 77cd50 0.00 : 6d3d5b: 89 de mov %ebx,%esi 0.00 : 6d3d5d: 89 c7 mov %eax,%edi 0.00 : 6d3d5f: 31 c0 xor %eax,%eax 0.00 : 6d3d61: e8 7a 68 0a 00 callq 77a5e0 0.00 : 6d3d66: eb d6 jmp 6d3d3e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:585 27.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:585 9.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:593 6.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:592 5.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:585 4.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:593 3.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:592 2.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:590 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:593 2.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:590 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9880 : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) != 0); : } : : Datum : date_lt_timestamp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:585 27.32 : 6c9880: 55 push %rbp 35.73 : 6c9881: 48 89 e5 mov %rsp,%rbp 0.00 : 6c9884: 53 push %rbx 5.14 : 6c9885: 48 83 ec 08 sub $0x8,%rsp : DateADT dateVal = PG_GETARG_DATEADT(0); : Timestamp dt2 = PG_GETARG_TIMESTAMP(1); 0.00 : 6c9889: 48 8b 5f 28 mov 0x28(%rdi),%rbx : Timestamp dt1; : : dt1 = date2timestamp(dateVal); 0.00 : 6c988d: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:590 2.62 : 6c9891: e8 7a dd ff ff callq 6c7610 : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) < 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:592 3.84 : 6c9896: 48 89 de mov %rbx,%rsi : { : DateADT dateVal = PG_GETARG_DATEADT(0); : Timestamp dt2 = PG_GETARG_TIMESTAMP(1); : Timestamp dt1; : : dt1 = date2timestamp(dateVal); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:590 2.34 : 6c9899: 48 89 c7 mov %rax,%rdi : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) < 0); 0.09 : 6c989c: e8 cf 6f 07 00 callq 740870 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:592 6.92 : 6c98a1: 48 98 cltq : } 0.00 : 6c98a3: 48 83 c4 08 add $0x8,%rsp : Timestamp dt2 = PG_GETARG_TIMESTAMP(1); : Timestamp dt1; : : dt1 = date2timestamp(dateVal); : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) < 0); 0.00 : 6c98a7: 48 c1 e8 3f shr $0x3f,%rax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:593 4.02 : 6c98ab: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:593 11.97 : 6c98ac: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:830 23.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:830 8.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:835 7.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:835 4.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:830 3.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:831 3.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:831 3.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:840 2.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:835 2.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:837 2.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:839 2.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:832 2.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:837 2.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:832 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:837 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d45a0 : : PG_RETURN_FLOAT8(result); : } : : Datum : float8mul(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:830 23.19 : 6d45a0: 55 push %rbp 28.52 : 6d45a1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d45a4: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:830 4.75 : 6d45a5: 48 89 fb mov %rdi,%rbx 0.00 : 6d45a8: 48 83 ec 18 sub $0x18,%rsp : float8 arg1 = PG_GETARG_FLOAT8(0); 0.00 : 6d45ac: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:831 3.42 : 6d45b0: e8 1b 94 0a 00 callq 77d9d0 3.90 : 6d45b5: f2 0f 11 45 e0 movsd %xmm0,-0x20(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:832 2.19 : 6d45ba: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 6d45be: e8 0d 94 0a 00 callq 77d9d0 : float8 result; : : result = arg1 * arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:835 2.85 : 6d45c3: f2 0f 10 4d e0 movsd -0x20(%rbp),%xmm1 : : Datum : float8mul(PG_FUNCTION_ARGS) : { : float8 arg1 = PG_GETARG_FLOAT8(0); : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:832 2.28 : 6d45c8: f2 0f 11 45 e8 movsd %xmm0,-0x18(%rbp) : float8 result; : : result = arg1 * arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:835 8.17 : 6d45cd: f2 0f 59 c8 mulsd %xmm0,%xmm1 7.98 : 6d45d1: f2 0f 11 4d f0 movsd %xmm1,-0x10(%rbp) : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:837 2.28 : 6d45d6: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 6d45da: e8 11 55 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d45df: 85 c0 test %eax,%eax 0.00 : 6d45e1: 75 45 jne 6d4628 2.00 : 6d45e3: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 6d45e7: f2 0f 10 4d f0 movsd -0x10(%rbp),%xmm1 0.00 : 6d45ec: 66 0f 2e c8 ucomisd %xmm0,%xmm1 2.76 : 6d45f0: 75 20 jne 6d4612 0.00 : 6d45f2: 7a 1e jp 6d4612 0.00 : 6d45f4: f2 0f 10 4d e0 movsd -0x20(%rbp),%xmm1 0.00 : 6d45f9: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 6d45fd: 7a 03 jp 6d4602 0.00 : 6d45ff: 90 nop 0.00 : 6d4600: 74 10 je 6d4612 0.00 : 6d4602: f2 0f 10 4d e8 movsd -0x18(%rbp),%xmm1 0.00 : 6d4607: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 6d460b: 7a 7c jp 6d4689 0.00 : 6d460d: 0f 1f 00 nopl (%rax) 0.00 : 6d4610: 75 77 jne 6d4689 : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); 0.00 : 6d4612: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 : } 0.00 : 6d4617: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:840 3.23 : 6d461b: 5b pop %rbx 0.00 : 6d461c: c9 leaveq : : result = arg1 * arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:839 2.47 : 6d461d: e9 9e 93 0a 00 jmpq 77d9c0 0.00 : 6d4622: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : float8 arg2 = PG_GETARG_FLOAT8(1); : float8 result; : : result = arg1 * arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), 0.00 : 6d4628: f2 0f 10 45 e0 movsd -0x20(%rbp),%xmm0 0.00 : 6d462d: e8 be 54 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d4632: 85 c0 test %eax,%eax 0.00 : 6d4634: 75 ad jne 6d45e3 0.00 : 6d4636: f2 0f 10 45 e8 movsd -0x18(%rbp),%xmm0 0.00 : 6d463b: e8 b0 54 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d4640: 85 c0 test %eax,%eax 0.00 : 6d4642: 75 9f jne 6d45e3 0.00 : 6d4644: 45 31 c0 xor %r8d,%r8d 0.00 : 6d4647: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d464c: b9 1e bb 8b 00 mov $0x8bbb1e,%ecx 0.00 : 6d4651: ba 46 03 00 00 mov $0x346,%edx 0.00 : 6d4656: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d465b: e8 60 64 0a 00 callq 77aac0 0.00 : 6d4660: 84 c0 test %al,%al 0.00 : 6d4662: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d4667: 74 40 je 6d46a9 0.00 : 6d4669: 31 c0 xor %eax,%eax 0.00 : 6d466b: e8 30 82 0a 00 callq 77c8a0 0.00 : 6d4670: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d4675: 89 c3 mov %eax,%ebx 0.00 : 6d4677: e8 d4 86 0a 00 callq 77cd50 0.00 : 6d467c: 89 de mov %ebx,%esi 0.00 : 6d467e: 89 c7 mov %eax,%edi 0.00 : 6d4680: 31 c0 xor %eax,%eax 0.00 : 6d4682: e8 59 5f 0a 00 callq 77a5e0 0.00 : 6d4687: eb 20 jmp 6d46a9 0.00 : 6d4689: 45 31 c0 xor %r8d,%r8d 0.00 : 6d468c: b9 1e bb 8b 00 mov $0x8bbb1e,%ecx 0.00 : 6d4691: ba 46 03 00 00 mov $0x346,%edx 0.00 : 6d4696: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d469b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d46a0: e8 1b 64 0a 00 callq 77aac0 0.00 : 6d46a5: 84 c0 test %al,%al 0.00 : 6d46a7: 75 05 jne 6d46ae 0.00 : 6d46a9: e8 22 4e d9 ff callq 4694d0 0.00 : 6d46ae: bf 4c b4 8b 00 mov $0x8bb44c,%edi 0.00 : 6d46b3: eb b4 jmp 6d4669 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.97 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:323 9.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:332 8.65 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:331 4.72 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:344 4.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:329 4.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 3.99 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 3.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:344 3.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:329 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 3.39 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:329 3.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 2.96 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:344 2.66 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:323 2.48 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:295 1.81 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:329 1.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:283 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:292 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:323 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 0.97 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:294 0.97 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:321 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:283 0.79 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:354 0.79 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:354 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:283 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:292 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:295 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:353 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:283 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:283 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:304 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:354 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ace60 <_bt_binsrch>: : _bt_binsrch(Relation rel, : Buffer buf, : int keysz, : ScanKey scankey, : bool nextkey) : { 0.24 : 4ace60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:283 1.63 : 4ace61: 48 89 e5 mov %rsp,%rbp 0.73 : 4ace64: 41 57 push %r15 0.67 : 4ace66: 41 56 push %r14 0.18 : 4ace68: 41 55 push %r13 0.60 : 4ace6a: 41 54 push %r12 0.12 : 4ace6c: 53 push %rbx 0.18 : 4ace6d: 48 83 ec 28 sub $0x28,%rsp : OffsetNumber low, : high; : int32 result, : cmpval; : : page = BufferGetPage(buf); 0.42 : 4ace71: 85 f6 test %esi,%esi : _bt_binsrch(Relation rel, : Buffer buf, : int keysz, : ScanKey scankey, : bool nextkey) : { 0.18 : 4ace73: 48 89 4d b0 mov %rcx,-0x50(%rbp) 0.06 : 4ace77: 48 89 7d c0 mov %rdi,-0x40(%rbp) 0.12 : 4ace7b: 89 55 bc mov %edx,-0x44(%rbp) 0.91 : 4ace7e: 44 89 c1 mov %r8d,%ecx : OffsetNumber low, : high; : int32 result, : cmpval; : : page = BufferGetPage(buf); 0.18 : 4ace81: 0f 88 c9 00 00 00 js 4acf50 <_bt_binsrch+0xf0> 0.30 : 4ace87: 8d 46 ff lea -0x1(%rsi),%eax 0.30 : 4ace8a: 4c 63 f0 movslq %eax,%r14 0.42 : 4ace8d: 49 c1 e6 0d shl $0xd,%r14 0.24 : 4ace91: 4c 03 35 60 2c 71 00 add 0x712c60(%rip),%r14 # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.30 : 4ace98: 41 0f b7 46 10 movzwl 0x10(%r14),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:292 1.09 : 4ace9d: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.73 : 4acea1: 48 89 45 c8 mov %rax,-0x38(%rbp) : : low = P_FIRSTDATAKEY(opaque); 0.12 : 4acea5: 83 78 04 01 cmpl $0x1,0x4(%rax) : high = PageGetMaxOffsetNumber(page); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:295 2.48 : 4acea9: 41 0f b7 46 0c movzwl 0xc(%r14),%eax : cmpval; : : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : : low = P_FIRSTDATAKEY(opaque); 0.06 : 4aceae: 45 19 ed sbb %r13d,%r13d /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:294 0.97 : 4aceb1: 41 83 c5 02 add $0x2,%r13d : high = PageGetMaxOffsetNumber(page); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:295 0.73 : 4aceb5: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4aceb9: 0f 86 7f 00 00 00 jbe 4acf3e <_bt_binsrch+0xde> 0.24 : 4acebf: 0f b7 c0 movzwl %ax,%eax 0.36 : 4acec2: 48 83 e8 18 sub $0x18,%rax 0.24 : 4acec6: 48 c1 e8 02 shr $0x2,%rax : * this covers two cases: the page is really empty (no keys), or it : * contains only a high key. The latter case is possible after vacuuming. : * This can never happen on an internal page, however, since they are : * never empty (an internal page must have children). : */ : if (high < low) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:304 0.54 : 4aceca: 66 41 39 c5 cmp %ax,%r13w 0.00 : 4acece: 77 6e ja 4acf3e <_bt_binsrch+0xde> : * For nextkey=true (cmpval=0), the loop invariant is: all slots before : * 'low' are <= scan key, all slots at or after 'high' are > scan key. : * : * We can fall out when high == low. : */ : high++; /* establish the loop invariant for high */ 0.00 : 4aced0: 44 8d 60 01 lea 0x1(%rax),%r12d : : cmpval = nextkey ? 0 : 1; /* select comparison value */ 0.06 : 4aced4: 31 c0 xor %eax,%eax 0.12 : 4aced6: 84 c9 test %cl,%cl /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:321 0.97 : 4aced8: 0f 94 c0 sete %al 0.06 : 4acedb: 89 45 d4 mov %eax,-0x2c(%rbp) : : while (high > low) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:323 1.03 : 4acede: 66 45 39 e5 cmp %r12w,%r13w 0.00 : 4acee2: 73 4c jae 4acf30 <_bt_binsrch+0xd0> 0.42 : 4acee4: 45 0f b7 fd movzwl %r13w,%r15d 2.66 : 4acee8: eb 0f jmp 4acef9 <_bt_binsrch+0x99> 0.00 : 4aceea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:323 13.97 : 4acef0: 66 44 39 eb cmp %r13w,%bx 0.12 : 4acef4: 41 89 dc mov %ebx,%r12d 0.00 : 4acef7: 76 37 jbe 4acf30 <_bt_binsrch+0xd0> : { : OffsetNumber mid = low + ((high - low) / 2); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 1.27 : 4acef9: 41 0f b7 c4 movzwl %r12w,%eax : : /* We have low <= mid < high, so mid points at a real slot */ : : result = _bt_compare(rel, keysz, scankey, page, mid); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:329 4.23 : 4acefd: 8b 75 bc mov -0x44(%rbp),%esi 0.48 : 4acf00: 48 8b 7d c0 mov -0x40(%rbp),%rdi : : cmpval = nextkey ? 0 : 1; /* select comparison value */ : : while (high > low) : { : OffsetNumber mid = low + ((high - low) / 2); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:325 3.45 : 4acf04: 44 29 f8 sub %r15d,%eax : : /* We have low <= mid < high, so mid points at a real slot */ : : result = _bt_compare(rel, keysz, scankey, page, mid); 0.36 : 4acf07: 4c 89 f1 mov %r14,%rcx : : cmpval = nextkey ? 0 : 1; /* select comparison value */ : : while (high > low) : { : OffsetNumber mid = low + ((high - low) / 2); 3.99 : 4acf0a: 89 c2 mov %eax,%edx 0.30 : 4acf0c: c1 ea 1f shr $0x1f,%edx 3.33 : 4acf0f: 01 c2 add %eax,%edx 1.03 : 4acf11: d1 fa sar %edx 4.23 : 4acf13: 41 8d 5c 15 00 lea 0x0(%r13,%rdx,1),%ebx : : /* We have low <= mid < high, so mid points at a real slot */ : : result = _bt_compare(rel, keysz, scankey, page, mid); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:329 3.51 : 4acf18: 48 8b 55 b0 mov -0x50(%rbp),%rdx 1.81 : 4acf1c: 44 0f b7 c3 movzwl %bx,%r8d 3.39 : 4acf20: e8 2b fd ff ff callq 4acc50 <_bt_compare> : : if (result >= cmpval) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:331 8.65 : 4acf25: 39 45 d4 cmp %eax,-0x2c(%rbp) 0.00 : 4acf28: 7f c6 jg 4acef0 <_bt_binsrch+0x90> : low = mid + 1; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:332 9.50 : 4acf2a: 44 8d 6b 01 lea 0x1(%rbx),%r13d 0.00 : 4acf2e: eb ae jmp 4acede <_bt_binsrch+0x7e> : * past the last slot on the page. : * : * On a leaf page, we always return the first key >= scan key (resp. > : * scan key), which could be the last slot + 1. : */ : if (P_ISLEAF(opaque)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:344 2.96 : 4acf30: 48 8b 45 c8 mov -0x38(%rbp),%rax 3.93 : 4acf34: f6 40 0c 01 testb $0x1,0xc(%rax) 4.72 : 4acf38: 75 04 jne 4acf3e <_bt_binsrch+0xde> : * On a non-leaf page, return the last key < scan key (resp. <= scan key). : * There must be one if _bt_compare() is playing by the rules. : */ : Assert(low > P_FIRSTDATAKEY(opaque)); : : return OffsetNumberPrev(low); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:353 0.73 : 4acf3a: 41 83 ed 01 sub $0x1,%r13d : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:354 0.54 : 4acf3e: 48 83 c4 28 add $0x28,%rsp 0.06 : 4acf42: 44 89 e8 mov %r13d,%eax 0.79 : 4acf45: 5b pop %rbx 0.36 : 4acf46: 41 5c pop %r12 0.00 : 4acf48: 41 5d pop %r13 0.30 : 4acf4a: 41 5e pop %r14 0.79 : 4acf4c: 41 5f pop %r15 0.30 : 4acf4e: c9 leaveq 0.18 : 4acf4f: c3 retq : OffsetNumber low, : high; : int32 result, : cmpval; : : page = BufferGetPage(buf); 0.00 : 4acf50: 48 8b 05 c1 01 6d 00 mov 0x6d01c1(%rip),%rax # b7d118 0.00 : 4acf57: f7 d6 not %esi 0.00 : 4acf59: 48 63 d6 movslq %esi,%rdx 0.00 : 4acf5c: 4c 8b 34 d0 mov (%rax,%rdx,8),%r14 0.00 : 4acf60: e9 33 ff ff ff jmpq 4ace98 <_bt_binsrch+0x38> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.16 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 13.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 8.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 4.70 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 4.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 3.75 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 3.38 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 2.94 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 2.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 2.65 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:100 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 2.28 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 2.20 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.91 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.84 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 1.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 1.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 1.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 1.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 1.10 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 0.88 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:90 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000470370 : : */ : Size : heap_compute_data_size(TupleDesc tupleDesc, : Datum *values, : bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 2.20 : 470370: 55 push %rbp 1.54 : 470371: 49 89 f0 mov %rsi,%r8 0.37 : 470374: 48 89 e5 mov %rsp,%rbp 0.88 : 470377: 41 57 push %r15 4.70 : 470379: 41 56 push %r14 1.69 : 47037b: 49 89 d6 mov %rdx,%r14 0.07 : 47037e: 41 55 push %r13 1.91 : 470380: 41 54 push %r12 : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) 0.44 : 470382: 45 31 e4 xor %r12d,%r12d : */ : Size : heap_compute_data_size(TupleDesc tupleDesc, : Datum *values, : bool *isnull) : { 0.37 : 470385: 53 push %rbx : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 1.18 : 470386: 31 db xor %ebx,%ebx : */ : Size : heap_compute_data_size(TupleDesc tupleDesc, : Datum *values, : bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.54 : 470388: 48 83 ec 08 sub $0x8,%rsp : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:90 0.81 : 47038c: 44 8b 2f mov (%rdi),%r13d : Form_pg_attribute *att = tupleDesc->attrs; 0.44 : 47038f: 4c 8b 7f 08 mov 0x8(%rdi),%r15 : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 0.66 : 470393: 45 85 ed test %r13d,%r13d 0.00 : 470396: 7f 43 jg 4703db 0.00 : 470398: e9 c3 00 00 00 jmpq 470460 0.00 : 47039d: 0f 1f 00 nopl (%rax) : */ : data_length += VARATT_CONVERTED_SHORT_SIZE(DatumGetPointer(val)); : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 2.42 : 4703a0: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 2.28 : 4703a4: 3c 69 cmp $0x69,%al 0.00 : 4703a6: 0f 84 cc 00 00 00 je 470478 0.44 : 4703ac: 3c 63 cmp $0x63,%al 0.00 : 4703ae: 66 90 xchg %ax,%ax 0.00 : 4703b0: 74 10 je 4703c2 0.00 : 4703b2: 3c 64 cmp $0x64,%al 0.00 : 4703b4: 0f 84 ce 00 00 00 je 470488 0.00 : 4703ba: 49 83 c4 01 add $0x1,%r12 0.00 : 4703be: 49 83 e4 fe and $0xfffffffffffffffe,%r12 : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 3.38 : 4703c2: 66 85 c9 test %cx,%cx 0.00 : 4703c5: 7e 71 jle 470438 0.22 : 4703c7: 48 0f bf c1 movswq %cx,%rax 0.00 : 4703cb: 49 01 c4 add %rax,%r12 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 8.82 : 4703ce: 48 83 c3 01 add $0x1,%rbx : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 4.11 : 4703d2: 41 39 dd cmp %ebx,%r13d 0.00 : 4703d5: 0f 8e 85 00 00 00 jle 470460 : { : Datum val; : : if (isnull[i]) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 2.42 : 4703db: 41 80 3c 1e 00 cmpb $0x0,(%r14,%rbx,1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 16.16 : 4703e0: 75 ec jne 4703ce : continue; : : val = values[i]; : : if (ATT_IS_PACKABLE(att[i]) && /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 2.94 : 4703e2: 49 8b 14 df mov (%r15,%rbx,8),%rdx : Datum val; : : if (isnull[i]) : continue; : : val = values[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:100 2.65 : 4703e6: 49 8b 3c d8 mov (%r8,%rbx,8),%rdi : : if (ATT_IS_PACKABLE(att[i]) && 0.44 : 4703ea: 0f b7 4a 4c movzwl 0x4c(%rdx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 13.67 : 4703ee: 66 83 f9 ff cmp $0xffff,%cx 0.00 : 4703f2: 75 ac jne 4703a0 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 1.18 : 4703f4: 80 7a 5d 70 cmpb $0x70,0x5d(%rdx) 1.18 : 4703f8: 0f 84 c2 00 00 00 je 4704c0 1.84 : 4703fe: 0f b6 37 movzbl (%rdi),%esi 0.51 : 470401: 40 f6 c6 03 test $0x3,%sil 0.00 : 470405: 75 12 jne 470419 0.00 : 470407: 8b 07 mov (%rdi),%eax 0.00 : 470409: c1 e8 02 shr $0x2,%eax 0.00 : 47040c: 83 e8 04 sub $0x4,%eax 0.00 : 47040f: 48 83 c0 01 add $0x1,%rax 0.00 : 470413: 48 83 f8 7f cmp $0x7f,%rax 0.00 : 470417: 76 b2 jbe 4703cb : */ : data_length += VARATT_CONVERTED_SHORT_SIZE(DatumGetPointer(val)); : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 1.10 : 470419: 83 e6 01 and $0x1,%esi 0.00 : 47041c: 74 82 je 4703a0 : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 0.59 : 47041e: 0f b6 07 movzbl (%rdi),%eax 0.73 : 470421: 3c 01 cmp $0x1,%al 0.00 : 470423: 74 73 je 470498 0.66 : 470425: a8 01 test $0x1,%al 0.00 : 470427: 0f 84 a3 00 00 00 je 4704d0 1.32 : 47042d: d0 e8 shr %al 0.07 : 47042f: 0f b6 c0 movzbl %al,%eax 0.59 : 470432: eb 97 jmp 4703cb 0.00 : 470434: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 470438: 66 83 c1 01 add $0x1,%cx 0.00 : 47043c: 74 e0 je 47041e 0.00 : 47043e: 4c 89 45 d0 mov %r8,-0x30(%rbp) 0.00 : 470442: 48 83 c3 01 add $0x1,%rbx 0.00 : 470446: e8 05 94 ff ff callq 469850 : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) 0.00 : 47044b: 41 39 dd cmp %ebx,%r13d : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, 0.00 : 47044e: 4d 8d 64 04 01 lea 0x1(%r12,%rax,1),%r12 0.00 : 470453: 4c 8b 45 d0 mov -0x30(%rbp),%r8 : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) 0.00 : 470457: 7f 82 jg 4703db 0.00 : 470459: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : val); : } : } : : return data_length; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 0.59 : 470460: 48 83 c4 08 add $0x8,%rsp 0.07 : 470464: 4c 89 e0 mov %r12,%rax 0.44 : 470467: 5b pop %rbx 3.75 : 470468: 41 5c pop %r12 0.22 : 47046a: 41 5d pop %r13 0.81 : 47046c: 41 5e pop %r14 0.07 : 47046e: 41 5f pop %r15 1.69 : 470470: c9 leaveq 0.44 : 470471: c3 retq 0.00 : 470472: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : data_length += VARATT_CONVERTED_SHORT_SIZE(DatumGetPointer(val)); : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 2.79 : 470478: 49 83 c4 03 add $0x3,%r12 0.00 : 47047c: 49 83 e4 fc and $0xfffffffffffffffc,%r12 0.22 : 470480: e9 3d ff ff ff jmpq 4703c2 0.00 : 470485: 0f 1f 00 nopl (%rax) 0.29 : 470488: 49 83 c4 07 add $0x7,%r12 0.07 : 47048c: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 470490: e9 2d ff ff ff jmpq 4703c2 0.00 : 470495: 0f 1f 00 nopl (%rax) : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, 0.00 : 470498: 0f b6 57 01 movzbl 0x1(%rdi),%edx 0.00 : 47049c: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 4704a1: 80 fa 01 cmp $0x1,%dl 0.00 : 4704a4: 0f 84 21 ff ff ff je 4703cb 0.00 : 4704aa: 80 fa 12 cmp $0x12,%dl 0.00 : 4704ad: b8 03 00 00 00 mov $0x3,%eax 0.00 : 4704b2: ba 12 00 00 00 mov $0x12,%edx 0.00 : 4704b7: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 4704bb: e9 0b ff ff ff jmpq 4703cb : if (isnull[i]) : continue; : : val = values[i]; : : if (ATT_IS_PACKABLE(att[i]) && 0.00 : 4704c0: 0f b6 37 movzbl (%rdi),%esi 0.00 : 4704c3: e9 51 ff ff ff jmpq 470419 0.00 : 4704c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4704cf: 00 : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, 0.00 : 4704d0: 8b 07 mov (%rdi),%eax 0.00 : 4704d2: c1 e8 02 shr $0x2,%eax 0.00 : 4704d5: 89 c0 mov %eax,%eax 0.00 : 4704d7: e9 ef fe ff ff jmpq 4703cb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 16.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 9.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 6.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 6.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 5.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 4.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 3.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 3.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 3.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 2.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 2.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 2.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 1.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 1.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 1.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 1.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 1.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 1.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007846a0 : : void * : hash_search(HTAB *hashp, : const void *keyPtr, : HASHACTION action, : bool *foundPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 1.91 : 7846a0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 5.63 : 7846a1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 4.68 : 7846a4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 3.63 : 7846a8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 3.15 : 7846ac: 48 89 fb mov %rdi,%rbx 2.67 : 7846af: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.05 : 7846b3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.76 : 7846b7: 49 89 f5 mov %rsi,%r13 2.67 : 7846ba: 48 83 ec 20 sub $0x20,%rsp 2.77 : 7846be: 41 89 d6 mov %edx,%r14d 1.34 : 7846c1: 49 89 cc mov %rcx,%r12 : return hash_search_with_hash_value(hashp, /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 0.57 : 7846c4: 48 8b 77 48 mov 0x48(%rdi),%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 20.04 : 7846c8: 4c 89 ef mov %r13,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 3.24 : 7846cb: ff 53 10 callq *0x10(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 9.83 : 7846ce: 4d 89 e0 mov %r12,%r8 0.48 : 7846d1: 44 89 f1 mov %r14d,%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 1.15 : 7846d4: 4c 89 ee mov %r13,%rsi 0.38 : 7846d7: 48 89 df mov %rbx,%rdi : keyPtr, : hashp->hash(keyPtr, hashp->keysize), : action, : foundPtr); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 6.77 : 7846da: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 1.72 : 7846df: 48 8b 1c 24 mov (%rsp),%rbx 0.29 : 7846e3: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 6.87 : 7846e8: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 : hash_search(HTAB *hashp, : const void *keyPtr, : HASHACTION action, : bool *foundPtr) : { : return hash_search_with_hash_value(hashp, 0.48 : 7846ed: 89 c2 mov %eax,%edx : keyPtr, : hashp->hash(keyPtr, hashp->keysize), : action, : foundPtr); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:816 1.15 : 7846ef: c9 leaveq : hash_search(HTAB *hashp, : const void *keyPtr, : HASHACTION action, : bool *foundPtr) : { : return hash_search_with_hash_value(hashp, /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 16.79 : 7846f0: e9 5b f9 ff ff jmpq 784050 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 12.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 10.48 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:530 8.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 5.59 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:533 5.31 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 4.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 3.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 3.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 2.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 2.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:533 2.10 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 1.96 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 1.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:530 1.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 1.61 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 1.47 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 1.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 1.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:534 1.19 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 1.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:534 0.98 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 0.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 0.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:530 0.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:514 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000676570 : : * See buffer/README for details. : */ : Buffer : ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, : ReadBufferMode mode, BufferAccessStrategy strategy) : { 0.49 : 676570: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 5.31 : 676571: 48 89 e5 mov %rsp,%rbp 0.14 : 676574: 48 89 5d d8 mov %rbx,-0x28(%rbp) 8.46 : 676578: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 3.00 : 67657c: 48 89 fb mov %rdi,%rbx 0.00 : 67657f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 1.26 : 676583: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.98 : 676587: 41 89 cd mov %ecx,%r13d 0.49 : 67658a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.35 : 67658e: 48 83 ec 40 sub $0x40,%rsp : bool hit; : Buffer buf; : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:514 0.56 : 676592: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) : * See buffer/README for details. : */ : Buffer : ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, : ReadBufferMode mode, BufferAccessStrategy strategy) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 12.58 : 676597: 41 89 f7 mov %esi,%r15d /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 0.91 : 67659a: 41 89 d6 mov %edx,%r14d 0.00 : 67659d: 4d 89 c4 mov %r8,%r12 : bool hit; : Buffer buf; : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); 0.49 : 6765a0: 0f 84 aa 00 00 00 je 676650 : /* : * Reject attempts to read non-local temporary relations; we would be : * likely to get wrong data since we have no visibility into the owning : * session's local buffers. : */ : if (RELATION_IS_OTHER_TEMP(reln)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 1.61 : 6765a6: 48 8b 43 30 mov 0x30(%rbx),%rax 3.21 : 6765aa: 0f b6 50 6e movzbl 0x6e(%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 16.91 : 6765ae: 80 fa 74 cmp $0x74,%dl 0.00 : 6765b1: 74 6d je 676620 : : /* : * Read the buffer, and update pgstat counters to reflect a cache hit or : * miss. : */ : pgstat_count_buffer_read(reln); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:530 1.89 : 6765b3: 48 8b 83 38 01 00 00 mov 0x138(%rbx),%rax 0.42 : 6765ba: 48 85 c0 test %rax,%rax 0.00 : 6765bd: 74 0d je 6765cc 0.63 : 6765bf: 48 83 40 60 01 addq $0x1,0x60(%rax) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:530 10.48 : 6765c4: 48 8b 43 30 mov 0x30(%rbx),%rax 0.28 : 6765c8: 0f b6 50 6e movzbl 0x6e(%rax),%edx : buf = ReadBuffer_common(reln->rd_smgr, reln->rd_rel->relpersistence, /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 1.47 : 6765cc: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 6765d0: 48 8d 45 d7 lea -0x29(%rbp),%rax 1.68 : 6765d4: 0f be f2 movsbl %dl,%esi 0.35 : 6765d7: 4d 89 e1 mov %r12,%r9 0.56 : 6765da: 45 89 e8 mov %r13d,%r8d 0.07 : 6765dd: 44 89 f1 mov %r14d,%ecx 1.96 : 6765e0: 44 89 fa mov %r15d,%edx 0.56 : 6765e3: 48 89 04 24 mov %rax,(%rsp) 0.63 : 6765e7: e8 b4 f6 ff ff callq 675ca0 : forkNum, blockNum, mode, strategy, &hit); : if (hit) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:533 2.38 : 6765ec: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:533 5.59 : 6765f0: 74 11 je 676603 : pgstat_count_buffer_hit(reln); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:534 1.26 : 6765f2: 48 8b 93 38 01 00 00 mov 0x138(%rbx),%rdx 0.28 : 6765f9: 48 85 d2 test %rdx,%rdx 0.00 : 6765fc: 74 05 je 676603 1.05 : 6765fe: 48 83 42 68 01 addq $0x1,0x68(%rdx) : return buf; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 4.54 : 676603: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.35 : 676607: 4c 8b 65 e0 mov -0x20(%rbp),%r12 1.19 : 67660b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.42 : 67660f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 2.10 : 676613: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.42 : 676617: c9 leaveq 2.73 : 676618: c3 retq 0.00 : 676619: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Reject attempts to read non-local temporary relations; we would be : * likely to get wrong data since we have no visibility into the owning : * session's local buffers. : */ : if (RELATION_IS_OTHER_TEMP(reln)) 0.00 : 676620: 80 7b 20 00 cmpb $0x0,0x20(%rbx) 0.00 : 676624: 75 8d jne 6765b3 : ereport(ERROR, 0.00 : 676626: 45 31 c0 xor %r8d,%r8d 0.00 : 676629: b9 c0 a0 8a 00 mov $0x8aa0c0,%ecx 0.00 : 67662e: ba 0c 02 00 00 mov $0x20c,%edx 0.00 : 676633: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 676638: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67663d: e8 7e 44 10 00 callq 77aac0 0.00 : 676642: 84 c0 test %al,%al 0.00 : 676644: 75 29 jne 67666f 0.00 : 676646: e8 85 2e df ff callq 4694d0 0.00 : 67664b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : bool hit; : Buffer buf; : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); 0.00 : 676650: 8b 57 1c mov 0x1c(%rdi),%edx 0.00 : 676653: 8b 73 08 mov 0x8(%rbx),%esi 0.00 : 676656: 48 8b 3f mov (%rdi),%rdi 0.00 : 676659: e8 d2 33 02 00 callq 699a30 0.00 : 67665e: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 676662: 48 89 c6 mov %rax,%rsi 0.00 : 676665: e8 96 2c 02 00 callq 699300 0.00 : 67666a: e9 37 ff ff ff jmpq 6765a6 : * Reject attempts to read non-local temporary relations; we would be : * likely to get wrong data since we have no visibility into the owning : * session's local buffers. : */ : if (RELATION_IS_OTHER_TEMP(reln)) : ereport(ERROR, 0.00 : 67666f: bf 08 9f 8a 00 mov $0x8a9f08,%edi 0.00 : 676674: 31 c0 xor %eax,%eax 0.00 : 676676: e8 25 62 10 00 callq 77c8a0 0.00 : 67667b: bf 40 04 00 00 mov $0x440,%edi 0.00 : 676680: 89 c3 mov %eax,%ebx 0.00 : 676682: e8 c9 66 10 00 callq 77cd50 0.00 : 676687: 89 de mov %ebx,%esi 0.00 : 676689: 89 c7 mov %eax,%edi 0.00 : 67668b: 31 c0 xor %eax,%eax 0.00 : 67668d: e8 4e 3f 10 00 callq 77a5e0 0.00 : 676692: eb b2 jmp 676646 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1395 6.96 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 4.94 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 4.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 4.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 3.18 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1478 2.97 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 2.84 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1433 2.57 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1519 2.30 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 2.30 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1536 2.10 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1522 2.03 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1426 1.69 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1426 1.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 1.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 1.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1554 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1395 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1424 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1554 1.35 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 1.35 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 1.35 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1549 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1554 1.15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1420 1.15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1534 1.15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1554 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1426 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1534 1.01 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 1.01 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1426 1.01 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1534 0.95 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1376 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1424 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1536 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1423 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1433 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1554 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1385 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ae420 <_bt_checkkeys>: : */ : IndexTuple : _bt_checkkeys(IndexScanDesc scan, : Page page, OffsetNumber offnum, : ScanDirection dir, bool *continuescan) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 2.30 : 4ae420: 55 push %rbp 3.85 : 4ae421: 48 89 e5 mov %rsp,%rbp 0.27 : 4ae424: 41 57 push %r15 2.97 : 4ae426: 41 56 push %r14 1.62 : 4ae428: 41 55 push %r13 1.35 : 4ae42a: 41 54 push %r12 0.14 : 4ae42c: 53 push %rbx 0.81 : 4ae42d: 48 83 ec 18 sub $0x18,%rsp 1.28 : 4ae431: 4c 89 45 c0 mov %r8,-0x40(%rbp) : BTScanOpaque so; : int keysz; : int ikey; : ScanKey key; : : *continuescan = true; /* default assumption */ /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1385 0.54 : 4ae435: 48 8b 45 c0 mov -0x40(%rbp),%rax : */ : IndexTuple : _bt_checkkeys(IndexScanDesc scan, : Page page, OffsetNumber offnum, : ScanDirection dir, bool *continuescan) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 1.01 : 4ae439: 89 4d cc mov %ecx,-0x34(%rbp) : ItemId iid = PageGetItemId(page, offnum); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1376 0.81 : 4ae43c: 0f b7 ca movzwl %dx,%ecx 0.34 : 4ae43f: 4c 8d 41 ff lea -0x1(%rcx),%r8 : BTScanOpaque so; : int keysz; : int ikey; : ScanKey key; : : *continuescan = true; /* default assumption */ 0.34 : 4ae443: c6 00 01 movb $0x1,(%rax) : * not bother examining the tuple's index keys, but just return : * immediately with continuescan = true to proceed to the next tuple. : * However, if this is the last tuple on the page, we should check the : * index keys to prevent uselessly advancing to the next page. : */ : if (scan->ignore_killed_tuples && ItemIdIsDead(iid)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1395 7.78 : 4ae446: 80 7f 32 00 cmpb $0x0,0x32(%rdi) 0.41 : 4ae44a: 74 14 je 4ae460 <_bt_checkkeys+0x40> 0.27 : 4ae44c: 8b 44 8e 14 mov 0x14(%rsi,%rcx,4),%eax 0.47 : 4ae450: 25 00 80 01 00 and $0x18000,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1395 1.56 : 4ae455: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 4ae45a: 0f 84 85 03 00 00 je 4ae7e5 <_bt_checkkeys+0x3c5> : } : else : { : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : : if (offnum > P_FIRSTDATAKEY(opaque)) 0.07 : 4ae460: c6 45 d3 01 movb $0x1,-0x2d(%rbp) : tuple_alive = false; : } : else : tuple_alive = true; : : tuple = (IndexTuple) PageGetItem(page, iid); 0.00 : 4ae464: 42 0f b7 44 86 18 movzwl 0x18(%rsi,%r8,4),%eax 0.07 : 4ae46a: 25 ff 7f 00 00 and $0x7fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1420 1.15 : 4ae46f: 4c 8d 2c 06 lea (%rsi,%rax,1),%r13 : : tupdesc = RelationGetDescr(scan->indexRelation); 0.14 : 4ae473: 48 8b 47 08 mov 0x8(%rdi),%rax 0.41 : 4ae477: 4c 8b 78 38 mov 0x38(%rax),%r15 : so = (BTScanOpaque) scan->opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1423 0.74 : 4ae47b: 48 8b 47 38 mov 0x38(%rdi),%rax : keysz = so->numberOfKeys; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1424 1.49 : 4ae47f: 8b 50 04 mov 0x4(%rax),%edx : : for (key = so->keyData, ikey = 0; ikey < keysz; key++, ikey++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1426 1.01 : 4ae482: 85 d2 test %edx,%edx : : tuple = (IndexTuple) PageGetItem(page, iid); : : tupdesc = RelationGetDescr(scan->indexRelation); : so = (BTScanOpaque) scan->opaque; : keysz = so->numberOfKeys; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1424 0.81 : 4ae484: 89 55 d4 mov %edx,-0x2c(%rbp) : : for (key = so->keyData, ikey = 0; ikey < keysz; key++, ikey++) 0.41 : 4ae487: 48 8b 58 08 mov 0x8(%rax),%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1426 1.08 : 4ae48b: 0f 8e df 01 00 00 jle 4ae670 <_bt_checkkeys+0x250> 0.07 : 4ae491: 45 31 f6 xor %r14d,%r14d 0.20 : 4ae494: eb 34 jmp 4ae4ca <_bt_checkkeys+0xaa> 0.00 : 4ae496: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ae49d: 00 00 00 : &isNull); : : if (key->sk_flags & SK_ISNULL) : { : /* Handle IS NULL/NOT NULL tests */ : if (key->sk_flags & SK_SEARCHNULL) 0.00 : 4ae4a0: 40 f6 c7 40 test $0x40,%dil 0.00 : 4ae4a4: 0f 84 56 01 00 00 je 4ae600 <_bt_checkkeys+0x1e0> : { : if (isNull) 0.00 : 4ae4aa: 84 c9 test %cl,%cl 0.00 : 4ae4ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4ae4b0: 0f 84 52 01 00 00 je 4ae608 <_bt_checkkeys+0x1e8> : : tupdesc = RelationGetDescr(scan->indexRelation); : so = (BTScanOpaque) scan->opaque; : keysz = so->numberOfKeys; : : for (key = so->keyData, ikey = 0; ikey < keysz; key++, ikey++) 2.03 : 4ae4b6: 41 83 c6 01 add $0x1,%r14d 0.20 : 4ae4ba: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 1.69 : 4ae4be: 66 90 xchg %ax,%ax 0.00 : 4ae4c0: 0f 8e aa 01 00 00 jle 4ae670 <_bt_checkkeys+0x250> 0.00 : 4ae4c6: 48 83 c3 48 add $0x48,%rbx : Datum datum; : bool isNull; : Datum test; : : /* row-comparison keys need special processing */ : if (key->sk_flags & SK_ROW_HEADER) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1433 0.61 : 4ae4ca: 8b 3b mov (%rbx),%edi 2.84 : 4ae4cc: 40 f6 c7 04 test $0x4,%dil 0.00 : 4ae4d0: 0f 85 aa 01 00 00 jne 4ae680 <_bt_checkkeys+0x260> : if (_bt_check_rowcompare(key, tuple, tupdesc, dir, continuescan)) : continue; : return NULL; : } : : datum = index_getattr(tuple, /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 1.08 : 4ae4d6: 66 41 83 7d 06 00 cmpw $0x0,0x6(%r13) 4.33 : 4ae4dc: 0f 88 c6 00 00 00 js 4ae5a8 <_bt_checkkeys+0x188> 0.34 : 4ae4e2: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.95 : 4ae4e6: 49 8b 47 08 mov 0x8(%r15),%rax 0.07 : 4ae4ea: 48 0f bf d1 movswq %cx,%rdx 0.14 : 4ae4ee: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 4.94 : 4ae4f3: 8b 42 54 mov 0x54(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 6.96 : 4ae4f6: 85 c0 test %eax,%eax 0.00 : 4ae4f8: 0f 88 32 01 00 00 js 4ae630 <_bt_checkkeys+0x210> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 1.62 : 4ae4fe: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.20 : 4ae502: 0f 84 e8 00 00 00 je 4ae5f0 <_bt_checkkeys+0x1d0> 1.49 : 4ae508: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 4ae50c: 66 83 fa 08 cmp $0x8,%dx 0.00 : 4ae510: 0f 84 2a 01 00 00 je 4ae640 <_bt_checkkeys+0x220> 1.28 : 4ae516: 66 83 fa 04 cmp $0x4,%dx 0.00 : 4ae51a: 0f 84 30 01 00 00 je 4ae650 <_bt_checkkeys+0x230> 0.00 : 4ae520: 66 83 fa 02 cmp $0x2,%dx 0.00 : 4ae524: 0f 84 36 01 00 00 je 4ae660 <_bt_checkkeys+0x240> 0.00 : 4ae52a: 48 98 cltq 0.00 : 4ae52c: 31 c9 xor %ecx,%ecx 0.00 : 4ae52e: 41 0f b6 54 05 08 movzbl 0x8(%r13,%rax,1),%edx 0.00 : 4ae534: 0f 1f 40 00 nopl 0x0(%rax) : key->sk_attno, : tupdesc, : &isNull); : : if (key->sk_flags & SK_ISNULL) 0.00 : 4ae538: 40 f6 c7 01 test $0x1,%dil 0.47 : 4ae53c: 0f 85 5e ff ff ff jne 4ae4a0 <_bt_checkkeys+0x80> : * In any case, this indextuple doesn't match the qual. : */ : return NULL; : } : : if (isNull) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1478 3.18 : 4ae542: 84 c9 test %cl,%cl 0.00 : 4ae544: 0f 85 ec 02 00 00 jne 4ae836 <_bt_checkkeys+0x416> : * In any case, this indextuple doesn't match the qual. : */ : return NULL; : } : : test = FunctionCall2Coll(&key->sk_func, key->sk_collation, 0.27 : 4ae54a: 48 8b 4b 40 mov 0x40(%rbx),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1519 2.57 : 4ae54e: 8b 73 0c mov 0xc(%rbx),%esi 0.27 : 4ae551: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.07 : 4ae555: e8 d6 fa 2c 00 callq 77e030 : datum, key->sk_argument); : : if (!DatumGetBool(test)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1522 2.10 : 4ae55a: 84 c0 test %al,%al 0.00 : 4ae55c: 0f 85 54 ff ff ff jne 4ae4b6 <_bt_checkkeys+0x96> : * Note: because we stop the scan as soon as any required equality : * qual fails, it is critical that equality quals be used for the : * initial positioning in _bt_first() when they are available. See : * comments in _bt_first(). : */ : if ((key->sk_flags & SK_BT_REQFWD) && /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1534 1.15 : 4ae562: 8b 03 mov (%rbx),%eax 1.08 : 4ae564: a9 00 00 01 00 test $0x10000,%eax 0.00 : 4ae569: 74 0b je 4ae576 <_bt_checkkeys+0x156> 0.14 : 4ae56b: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 1.01 : 4ae56f: 90 nop 0.00 : 4ae570: 0f 84 e0 01 00 00 je 4ae756 <_bt_checkkeys+0x336> : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((key->sk_flags & SK_BT_REQBKWD) && 0.00 : 4ae576: a9 00 00 02 00 test $0x20000,%eax 0.00 : 4ae57b: 74 13 je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae57d: 83 7d cc ff cmpl $0xffffffff,-0x34(%rbp) 0.00 : 4ae581: 0f 84 a0 02 00 00 je 4ae827 <_bt_checkkeys+0x407> 0.00 : 4ae587: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae58e: 00 00 : return NULL; : } : } : : /* Check for failure due to it being a killed tuple. */ : if (!tuple_alive) 0.00 : 4ae590: 45 31 ed xor %r13d,%r13d : return NULL; : : /* If we get here, the tuple passes all index quals. */ : return tuple; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1554 1.28 : 4ae593: 48 83 c4 18 add $0x18,%rsp 1.15 : 4ae597: 4c 89 e8 mov %r13,%rax 0.47 : 4ae59a: 5b pop %rbx 1.62 : 4ae59b: 41 5c pop %r12 0.07 : 4ae59d: 41 5d pop %r13 0.61 : 4ae59f: 41 5e pop %r14 0.20 : 4ae5a1: 41 5f pop %r15 1.49 : 4ae5a3: c9 leaveq 0.41 : 4ae5a4: c3 retq 0.00 : 4ae5a5: 0f 1f 00 nopl (%rax) : if (_bt_check_rowcompare(key, tuple, tupdesc, dir, continuescan)) : continue; : return NULL; : } : : datum = index_getattr(tuple, 0.00 : 4ae5a8: 0f bf 73 04 movswl 0x4(%rbx),%esi 0.00 : 4ae5ac: 31 d2 xor %edx,%edx 0.00 : 4ae5ae: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4ae5b1: 89 c8 mov %ecx,%eax 0.00 : 4ae5b3: 83 e1 07 and $0x7,%ecx 0.00 : 4ae5b6: c1 f8 03 sar $0x3,%eax 0.00 : 4ae5b9: 48 98 cltq 0.00 : 4ae5bb: 41 0f be 44 05 08 movsbl 0x8(%r13,%rax,1),%eax 0.00 : 4ae5c1: d3 f8 sar %cl,%eax 0.00 : 4ae5c3: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ae5c8: a8 01 test $0x1,%al 0.00 : 4ae5ca: 0f 84 68 ff ff ff je 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae5d0: 4c 89 fa mov %r15,%rdx 0.00 : 4ae5d3: 4c 89 ef mov %r13,%rdi 0.00 : 4ae5d6: e8 85 25 fc ff callq 470b60 0.00 : 4ae5db: 8b 3b mov (%rbx),%edi 0.00 : 4ae5dd: 48 89 c2 mov %rax,%rdx 0.00 : 4ae5e0: 31 c9 xor %ecx,%ecx 0.00 : 4ae5e2: e9 51 ff ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae5e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae5ee: 00 00 0.00 : 4ae5f0: 48 98 cltq 0.00 : 4ae5f2: 31 c9 xor %ecx,%ecx 0.00 : 4ae5f4: 49 8d 54 05 08 lea 0x8(%r13,%rax,1),%rdx 0.14 : 4ae5f9: e9 3a ff ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae5fe: 66 90 xchg %ax,%ax : continue; /* tuple satisfies this qual */ : } : else : { : Assert(key->sk_flags & SK_SEARCHNOTNULL); : if (!isNull) 0.00 : 4ae600: 84 c9 test %cl,%cl 0.00 : 4ae602: 0f 84 ae fe ff ff je 4ae4b6 <_bt_checkkeys+0x96> : /* : * Tuple fails this qual. If it's a required qual for the current : * scan direction, then we can conclude no further tuples will : * pass, either. : */ : if ((key->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae608: f7 c7 00 00 01 00 test $0x10000,%edi 0.00 : 4ae60e: 74 0a je 4ae61a <_bt_checkkeys+0x1fa> 0.00 : 4ae610: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae614: 0f 84 3c 01 00 00 je 4ae756 <_bt_checkkeys+0x336> : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((key->sk_flags & SK_BT_REQBKWD) && 0.00 : 4ae61a: 81 e7 00 00 02 00 and $0x20000,%edi 0.00 : 4ae620: 0f 84 6a ff ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae626: 66 90 xchg %ax,%ax 0.00 : 4ae628: e9 50 ff ff ff jmpq 4ae57d <_bt_checkkeys+0x15d> 0.00 : 4ae62d: 0f 1f 00 nopl (%rax) : if (_bt_check_rowcompare(key, tuple, tupdesc, dir, continuescan)) : continue; : return NULL; : } : : datum = index_getattr(tuple, 0.00 : 4ae630: 0f bf f1 movswl %cx,%esi 0.00 : 4ae633: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae638: eb 96 jmp 4ae5d0 <_bt_checkkeys+0x1b0> 0.00 : 4ae63a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae640: 48 98 cltq 0.00 : 4ae642: 31 c9 xor %ecx,%ecx 0.00 : 4ae644: 49 8b 54 05 08 mov 0x8(%r13,%rax,1),%rdx 0.00 : 4ae649: e9 ea fe ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae64e: 66 90 xchg %ax,%ax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 2.30 : 4ae650: 48 98 cltq 1.35 : 4ae652: 31 c9 xor %ecx,%ecx 0.00 : 4ae654: 41 8b 54 05 08 mov 0x8(%r13,%rax,1),%edx 4.73 : 4ae659: e9 da fe ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae65e: 66 90 xchg %ax,%ax 0.00 : 4ae660: 48 98 cltq 0.00 : 4ae662: 31 c9 xor %ecx,%ecx 0.00 : 4ae664: 41 0f b7 54 05 08 movzwl 0x8(%r13,%rax,1),%edx 0.00 : 4ae66a: e9 c9 fe ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae66f: 90 nop : return NULL; : } : } : : /* Check for failure due to it being a killed tuple. */ : if (!tuple_alive) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1549 1.35 : 4ae670: 80 7d d3 00 cmpb $0x0,-0x2d(%rbp) 0.14 : 4ae674: 0f 85 19 ff ff ff jne 4ae593 <_bt_checkkeys+0x173> 0.00 : 4ae67a: e9 11 ff ff ff jmpq 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae67f: 90 nop : */ : static bool : _bt_check_rowcompare(ScanKey skey, IndexTuple tuple, TupleDesc tupdesc, : ScanDirection dir, bool *continuescan) : { : ScanKey subkey = (ScanKey) DatumGetPointer(skey->sk_argument); 0.00 : 4ae680: 4c 8b 63 40 mov 0x40(%rbx),%r12 0.00 : 4ae684: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4ae688: eb 7b jmp 4ae705 <_bt_checkkeys+0x2e5> 0.00 : 4ae68a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae690: 41 0f b7 74 24 04 movzwl 0x4(%r12),%esi 0.00 : 4ae696: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 4ae69a: 48 0f bf d6 movswq %si,%rdx 0.00 : 4ae69e: 48 8b 4c d0 f8 mov -0x8(%rax,%rdx,8),%rcx 0.00 : 4ae6a3: 8b 79 54 mov 0x54(%rcx),%edi 0.00 : 4ae6a6: 85 ff test %edi,%edi 0.00 : 4ae6a8: 0f 88 e2 00 00 00 js 4ae790 <_bt_checkkeys+0x370> 0.00 : 4ae6ae: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 4ae6b2: 48 63 c7 movslq %edi,%rax 0.00 : 4ae6b5: 49 8d 54 05 08 lea 0x8(%r13,%rax,1),%rdx 0.00 : 4ae6ba: 0f 85 a8 00 00 00 jne 4ae768 <_bt_checkkeys+0x348> : * In any case, this indextuple doesn't match the qual. : */ : return false; : } : : if (subkey->sk_flags & SK_ISNULL) 0.00 : 4ae6c0: 41 f6 04 24 01 testb $0x1,(%r12) 0.00 : 4ae6c5: 0f 85 e2 01 00 00 jne 4ae8ad <_bt_checkkeys+0x48d> : *continuescan = false; : return false; : } : : /* Perform the test --- three-way comparison not bool operator */ : cmpresult = DatumGetInt32(FunctionCall2Coll(&subkey->sk_func, 0.00 : 4ae6cb: 49 8b 4c 24 40 mov 0x40(%r12),%rcx 0.00 : 4ae6d0: 41 8b 74 24 0c mov 0xc(%r12),%esi 0.00 : 4ae6d5: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : 4ae6da: e8 51 f9 2c 00 callq 77e030 : subkey->sk_collation, : datum, : subkey->sk_argument)); : : if (subkey->sk_flags & SK_BT_DESC) 0.00 : 4ae6df: 41 8b 0c 24 mov (%r12),%ecx : *continuescan = false; : return false; : } : : /* Perform the test --- three-way comparison not bool operator */ : cmpresult = DatumGetInt32(FunctionCall2Coll(&subkey->sk_func, 0.00 : 4ae6e3: 89 c2 mov %eax,%edx : subkey->sk_collation, : datum, : subkey->sk_argument)); : : if (subkey->sk_flags & SK_BT_DESC) : cmpresult = -cmpresult; 0.00 : 4ae6e5: f7 d8 neg %eax 0.00 : 4ae6e7: f7 c1 00 00 00 01 test $0x1000000,%ecx 0.00 : 4ae6ed: 0f 45 d0 cmovne %eax,%edx : : /* Done comparing if unequal, else advance to next column */ : if (cmpresult != 0) 0.00 : 4ae6f0: 85 d2 test %edx,%edx 0.00 : 4ae6f2: 0f 85 6d 01 00 00 jne 4ae865 <_bt_checkkeys+0x445> : break; : : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ae6f8: f6 c1 10 test $0x10,%cl 0.00 : 4ae6fb: 0f 85 64 01 00 00 jne 4ae865 <_bt_checkkeys+0x445> : break; : subkey++; 0.00 : 4ae701: 49 83 c4 48 add $0x48,%r12 : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae705: 66 41 83 7d 06 00 cmpw $0x0,0x6(%r13) 0.00 : 4ae70b: 79 83 jns 4ae690 <_bt_checkkeys+0x270> 0.00 : 4ae70d: 41 0f bf 74 24 04 movswl 0x4(%r12),%esi 0.00 : 4ae713: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4ae716: 89 c8 mov %ecx,%eax 0.00 : 4ae718: 83 e1 07 and $0x7,%ecx 0.00 : 4ae71b: c1 f8 03 sar $0x3,%eax 0.00 : 4ae71e: 48 98 cltq 0.00 : 4ae720: 41 0f be 44 05 08 movsbl 0x8(%r13,%rax,1),%eax 0.00 : 4ae726: d3 f8 sar %cl,%eax 0.00 : 4ae728: a8 01 test $0x1,%al 0.00 : 4ae72a: 0f 85 80 00 00 00 jne 4ae7b0 <_bt_checkkeys+0x390> : tupdesc, : &isNull); : : if (isNull) : { : if (subkey->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4ae730: 41 8b 04 24 mov (%r12),%eax 0.00 : 4ae734: a9 00 00 00 02 test $0x2000000,%eax 0.00 : 4ae739: 0f 84 11 02 00 00 je 4ae950 <_bt_checkkeys+0x530> : * of whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a forward scan, however, we must keep going, because we may : * have initially positioned to the start of the index. : */ : if ((subkey->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae73f: a9 00 00 03 00 test $0x30000,%eax 0.00 : 4ae744: 0f 84 46 fe ff ff je 4ae590 <_bt_checkkeys+0x170> : * of whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a forward scan, however, we must keep going, because we may : * have initially positioned to the start of the index. : */ : if ((key->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae74a: 83 7d cc ff cmpl $0xffffffff,-0x34(%rbp) 0.00 : 4ae74e: 66 90 xchg %ax,%ax 0.00 : 4ae750: 0f 85 3a fe ff ff jne 4ae590 <_bt_checkkeys+0x170> : * initial positioning in _bt_first() when they are available. See : * comments in _bt_first(). : */ : if ((key->sk_flags & SK_BT_REQFWD) && : ScanDirectionIsForward(dir)) : *continuescan = false; 0.41 : 4ae756: 48 8b 45 c0 mov -0x40(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1536 0.81 : 4ae75a: 45 31 ed xor %r13d,%r13d 0.00 : 4ae75d: c6 00 00 movb $0x0,(%rax) 2.23 : 4ae760: e9 2e fe ff ff jmpq 4ae593 <_bt_checkkeys+0x173> 0.00 : 4ae765: 0f 1f 00 nopl (%rax) : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae768: 0f b7 41 4c movzwl 0x4c(%rcx),%eax 0.00 : 4ae76c: 66 83 f8 08 cmp $0x8,%ax 0.00 : 4ae770: 74 56 je 4ae7c8 <_bt_checkkeys+0x3a8> 0.00 : 4ae772: 66 83 f8 04 cmp $0x4,%ax 0.00 : 4ae776: 74 60 je 4ae7d8 <_bt_checkkeys+0x3b8> 0.00 : 4ae778: 66 83 f8 02 cmp $0x2,%ax 0.00 : 4ae77c: 0f 84 d3 00 00 00 je 4ae855 <_bt_checkkeys+0x435> 0.00 : 4ae782: 48 63 c7 movslq %edi,%rax 0.00 : 4ae785: 41 0f b6 54 05 08 movzbl 0x8(%r13,%rax,1),%edx 0.00 : 4ae78b: e9 30 ff ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae790: 4c 89 fa mov %r15,%rdx 0.00 : 4ae793: 0f bf f6 movswl %si,%esi 0.00 : 4ae796: 4c 89 ef mov %r13,%rdi 0.00 : 4ae799: e8 c2 23 fc ff callq 470b60 0.00 : 4ae79e: 48 89 c2 mov %rax,%rdx 0.00 : 4ae7a1: e9 1a ff ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae7a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ae7ad: 00 00 00 0.00 : 4ae7b0: 4c 89 fa mov %r15,%rdx 0.00 : 4ae7b3: 4c 89 ef mov %r13,%rdi 0.00 : 4ae7b6: e8 a5 23 fc ff callq 470b60 0.00 : 4ae7bb: 48 89 c2 mov %rax,%rdx 0.00 : 4ae7be: e9 fd fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae7c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae7c8: 48 63 c7 movslq %edi,%rax 0.00 : 4ae7cb: 49 8b 54 05 08 mov 0x8(%r13,%rax,1),%rdx 0.00 : 4ae7d0: e9 eb fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae7d5: 0f 1f 00 nopl (%rax) 0.00 : 4ae7d8: 48 63 c7 movslq %edi,%rax 0.00 : 4ae7db: 41 8b 54 05 08 mov 0x8(%r13,%rax,1),%edx 0.00 : 4ae7e0: e9 db fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> : * index keys to prevent uselessly advancing to the next page. : */ : if (scan->ignore_killed_tuples && ItemIdIsDead(iid)) : { : /* return immediately if there are more tuples on the page */ : if (ScanDirectionIsForward(dir)) 0.34 : 4ae7e5: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae7e9: 0f 84 36 01 00 00 je 4ae925 <_bt_checkkeys+0x505> : } : else : { : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : : if (offnum > P_FIRSTDATAKEY(opaque)) 0.00 : 4ae7ef: 0f b7 46 10 movzwl 0x10(%rsi),%eax 0.00 : 4ae7f3: 0f b7 d2 movzwl %dx,%edx 0.00 : 4ae7f6: 83 7c 06 04 01 cmpl $0x1,0x4(%rsi,%rax,1) 0.00 : 4ae7fb: 19 c0 sbb %eax,%eax 0.00 : 4ae7fd: 83 c0 02 add $0x2,%eax 0.00 : 4ae800: 39 d0 cmp %edx,%eax 0.00 : 4ae802: 0f 8c 88 fd ff ff jl 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae808: c6 45 d3 00 movb $0x0,-0x2d(%rbp) 0.00 : 4ae80c: e9 53 fc ff ff jmpq 4ae464 <_bt_checkkeys+0x44> : * whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a backward scan, however, we must keep going, because we : * may have initially positioned to the end of the index. : */ : if ((key->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae811: 81 e7 00 00 03 00 and $0x30000,%edi 0.00 : 4ae817: 0f 84 73 fd ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae81d: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae821: 0f 85 69 fd ff ff jne 4ae590 <_bt_checkkeys+0x170> : if ((key->sk_flags & SK_BT_REQFWD) && : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((key->sk_flags & SK_BT_REQBKWD) && : ScanDirectionIsBackward(dir)) : *continuescan = false; 0.00 : 4ae827: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 4ae82b: 45 31 ed xor %r13d,%r13d 0.00 : 4ae82e: c6 02 00 movb $0x0,(%rdx) 0.00 : 4ae831: e9 5d fd ff ff jmpq 4ae593 <_bt_checkkeys+0x173> : return NULL; : } : : if (isNull) : { : if (key->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4ae836: f7 c7 00 00 00 02 test $0x2000000,%edi 0.00 : 4ae83c: 74 d3 je 4ae811 <_bt_checkkeys+0x3f1> : * of whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a forward scan, however, we must keep going, because we may : * have initially positioned to the start of the index. : */ : if ((key->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae83e: 81 e7 00 00 03 00 and $0x30000,%edi 0.00 : 4ae844: 0f 84 46 fd ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae84a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae850: e9 f5 fe ff ff jmpq 4ae74a <_bt_checkkeys+0x32a> : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae855: 48 63 c7 movslq %edi,%rax 0.00 : 4ae858: 41 0f b7 54 05 08 movzwl 0x8(%r13,%rax,1),%edx 0.00 : 4ae85e: 66 90 xchg %ax,%ax 0.00 : 4ae860: e9 5b fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> : /* : * At this point cmpresult indicates the overall result of the row : * comparison, and subkey points to the deciding column (or the last : * column if the result is "="). : */ : switch (subkey->sk_strategy) 0.00 : 4ae865: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 4ae86b: 66 83 f8 02 cmp $0x2,%ax 0.00 : 4ae86f: 90 nop 0.00 : 4ae870: 0f 84 ef 00 00 00 je 4ae965 <_bt_checkkeys+0x545> 0.00 : 4ae876: 77 56 ja 4ae8ce <_bt_checkkeys+0x4ae> 0.00 : 4ae878: 66 83 e8 01 sub $0x1,%ax 0.00 : 4ae87c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4ae880: 75 5c jne 4ae8de <_bt_checkkeys+0x4be> : break; : case BTLessEqualStrategyNumber: : result = (cmpresult <= 0); : break; : case BTGreaterEqualStrategyNumber: : result = (cmpresult >= 0); 0.00 : 4ae882: 89 d0 mov %edx,%eax 0.00 : 4ae884: c1 e8 1f shr $0x1f,%eax : (int) subkey->sk_strategy); : result = 0; /* keep compiler quiet */ : break; : } : : if (!result) 0.00 : 4ae887: 84 c0 test %al,%al 0.00 : 4ae889: 0f 85 27 fc ff ff jne 4ae4b6 <_bt_checkkeys+0x96> : * Tuple fails this qual. If it's a required qual for the current : * scan direction, then we can conclude no further tuples will pass, : * either. Note we have to look at the deciding column, not : * necessarily the first or last column of the row condition. : */ : if ((subkey->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae88f: f7 c1 00 00 01 00 test $0x10000,%ecx 0.00 : 4ae895: 75 77 jne 4ae90e <_bt_checkkeys+0x4ee> : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((subkey->sk_flags & SK_BT_REQBKWD) && 0.00 : 4ae897: 81 e1 00 00 02 00 and $0x20000,%ecx 0.00 : 4ae89d: 0f 84 ed fc ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae8a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae8a8: e9 d0 fc ff ff jmpq 4ae57d <_bt_checkkeys+0x15d> : * But it can never match. If all the earlier row comparison : * columns are required for the scan direction, we can stop the : * scan, because there can't be another tuple that will succeed. : */ : if (subkey != (ScanKey) DatumGetPointer(skey->sk_argument)) : subkey--; 0.00 : 4ae8ad: 4c 3b 63 40 cmp 0x40(%rbx),%r12 0.00 : 4ae8b1: 49 8d 44 24 b8 lea -0x48(%r12),%rax 0.00 : 4ae8b6: 4c 0f 45 e0 cmovne %rax,%r12 : if ((subkey->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae8ba: 41 8b 04 24 mov (%r12),%eax 0.00 : 4ae8be: a9 00 00 01 00 test $0x10000,%eax 0.00 : 4ae8c3: 0f 84 ad fc ff ff je 4ae576 <_bt_checkkeys+0x156> 0.00 : 4ae8c9: e9 9d fc ff ff jmpq 4ae56b <_bt_checkkeys+0x14b> : /* : * At this point cmpresult indicates the overall result of the row : * comparison, and subkey points to the deciding column (or the last : * column if the result is "="). : */ : switch (subkey->sk_strategy) 0.00 : 4ae8ce: 66 83 f8 04 cmp $0x4,%ax 0.00 : 4ae8d2: 74 45 je 4ae919 <_bt_checkkeys+0x4f9> 0.00 : 4ae8d4: 66 83 f8 05 cmp $0x5,%ax 0.00 : 4ae8d8: 0f 84 91 00 00 00 je 4ae96f <_bt_checkkeys+0x54f> : break; : case BTGreaterStrategyNumber: : result = (cmpresult > 0); : break; : default: : elog(ERROR, "unrecognized RowCompareType: %d", 0.00 : 4ae8de: ba 20 4b 7b 00 mov $0x7b4b20,%edx 0.00 : 4ae8e3: be 99 06 00 00 mov $0x699,%esi 0.00 : 4ae8e8: bf 17 49 7b 00 mov $0x7b4917,%edi 0.00 : 4ae8ed: e8 2e cb 2c 00 callq 77b420 0.00 : 4ae8f2: 41 0f b7 54 24 06 movzwl 0x6(%r12),%edx 0.00 : 4ae8f8: be 98 49 7b 00 mov $0x7b4998,%esi 0.00 : 4ae8fd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ae902: 31 c0 xor %eax,%eax 0.00 : 4ae904: e8 27 c9 2c 00 callq 77b230 0.00 : 4ae909: e8 c2 ab fb ff callq 4694d0 : * Tuple fails this qual. If it's a required qual for the current : * scan direction, then we can conclude no further tuples will pass, : * either. Note we have to look at the deciding column, not : * necessarily the first or last column of the row condition. : */ : if ((subkey->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae90e: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae912: 75 83 jne 4ae897 <_bt_checkkeys+0x477> 0.00 : 4ae914: e9 3d fe ff ff jmpq 4ae756 <_bt_checkkeys+0x336> : break; : case BTLessEqualStrategyNumber: : result = (cmpresult <= 0); : break; : case BTGreaterEqualStrategyNumber: : result = (cmpresult >= 0); 0.00 : 4ae919: f7 d2 not %edx 0.00 : 4ae91b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae920: e9 5d ff ff ff jmpq 4ae882 <_bt_checkkeys+0x462> : if (scan->ignore_killed_tuples && ItemIdIsDead(iid)) : { : /* return immediately if there are more tuples on the page */ : if (ScanDirectionIsForward(dir)) : { : if (offnum < PageGetMaxOffsetNumber(page)) 0.07 : 4ae925: 0f b7 46 0c movzwl 0xc(%rsi),%eax 0.00 : 4ae929: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ae92d: 0f 1f 00 nopl (%rax) 0.00 : 4ae930: 0f 86 d2 fe ff ff jbe 4ae808 <_bt_checkkeys+0x3e8> 0.00 : 4ae936: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ae939: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ae93d: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ae941: 48 39 c1 cmp %rax,%rcx 0.00 : 4ae944: 0f 82 46 fc ff ff jb 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae94a: e9 b9 fe ff ff jmpq 4ae808 <_bt_checkkeys+0x3e8> 0.00 : 4ae94f: 90 nop : * whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a backward scan, however, we must keep going, because we : * may have initially positioned to the end of the index. : */ : if ((subkey->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae950: a9 00 00 03 00 test $0x30000,%eax 0.00 : 4ae955: 0f 84 35 fc ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae95b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae960: e9 b8 fe ff ff jmpq 4ae81d <_bt_checkkeys+0x3fd> : /* EQ and NE cases aren't allowed here */ : case BTLessStrategyNumber: : result = (cmpresult < 0); : break; : case BTLessEqualStrategyNumber: : result = (cmpresult <= 0); 0.00 : 4ae965: 85 d2 test %edx,%edx 0.00 : 4ae967: 0f 9e c0 setle %al 0.00 : 4ae96a: e9 18 ff ff ff jmpq 4ae887 <_bt_checkkeys+0x467> : break; : case BTGreaterEqualStrategyNumber: : result = (cmpresult >= 0); : break; : case BTGreaterStrategyNumber: : result = (cmpresult > 0); 0.00 : 4ae96f: 85 d2 test %edx,%edx 0.00 : 4ae971: 0f 9f c0 setg %al 0.00 : 4ae974: e9 0e ff ff ff jmpq 4ae887 <_bt_checkkeys+0x467> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 43.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 16.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 10.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 2.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 2.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 2.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 1.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1376 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1376 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1373 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075f6b0 : : * Returns an integer less than, equal to, or greater than zero, indicating : * whether arg1 is less than, equal to, or greater than arg2. : */ : int : varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid) : { 0.21 : 75f6b0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.56 : 75f6b1: 48 89 e5 mov %rsp,%rbp 0.63 : 75f6b4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 2.72 : 75f6b8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 2.16 : 75f6bc: 44 89 c3 mov %r8d,%ebx 0.00 : 75f6bf: 4c 89 75 f0 mov %r14,-0x10(%rbp) 1.05 : 75f6c3: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.63 : 75f6c7: 41 89 f4 mov %esi,%r12d 0.28 : 75f6ca: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.49 : 75f6ce: 48 81 ec 60 08 00 00 sub $0x860,%rsp 0.21 : 75f6d5: 48 89 bd c0 f7 ff ff mov %rdi,-0x840(%rbp) : * Unfortunately, there is no strncoll(), so in the non-C locale case we : * have to do some memory copying. This turns out to be significantly : * slower, so we optimize the case where LC_COLLATE is C. We also try to : * optimize relatively-short strings by avoiding palloc/pfree overhead. : */ : if (lc_collate_is_c(collid)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1373 0.56 : 75f6dc: 44 89 c7 mov %r8d,%edi : * Returns an integer less than, equal to, or greater than zero, indicating : * whether arg1 is less than, equal to, or greater than arg2. : */ : int : varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid) : { 0.14 : 75f6df: 48 89 95 b8 f7 ff ff mov %rdx,-0x848(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.77 : 75f6e6: 41 89 ce mov %ecx,%r14d : * Unfortunately, there is no strncoll(), so in the non-C locale case we : * have to do some memory copying. This turns out to be significantly : * slower, so we optimize the case where LC_COLLATE is C. We also try to : * optimize relatively-short strings by avoiding palloc/pfree overhead. : */ : if (lc_collate_is_c(collid)) 0.21 : 75f6e9: e8 e2 34 fb ff callq 712bd0 0.07 : 75f6ee: 84 c0 test %al,%al 0.00 : 75f6f0: 0f 85 0a 01 00 00 jne 75f800 : : #ifdef HAVE_LOCALE_T : pg_locale_t mylocale = 0; : #endif : : if (collid != DEFAULT_COLLATION_OID) 0.00 : 75f6f6: 83 fb 64 cmp $0x64,%ebx 0.00 : 75f6f9: 48 c7 85 c8 f7 ff ff movq $0x0,-0x838(%rbp) 0.00 : 75f700: 00 00 00 00 0.00 : 75f704: 74 16 je 75f71c : { : if (!OidIsValid(collid)) 0.00 : 75f706: 85 db test %ebx,%ebx 0.00 : 75f708: 0f 84 e4 01 00 00 je 75f8f2 : (errcode(ERRCODE_INDETERMINATE_COLLATION), : errmsg("could not determine which collation to use for string comparison"), : errhint("Use the COLLATE clause to set the collation explicitly."))); : } : #ifdef HAVE_LOCALE_T : mylocale = pg_newlocale_from_collation(collid); 0.00 : 75f70e: 89 df mov %ebx,%edi 0.00 : 75f710: e8 ab 32 fb ff callq 7129c0 0.00 : 75f715: 48 89 85 c8 f7 ff ff mov %rax,-0x838(%rbp) : * strcoll() by itself, so we don't lose much if this doesn't work out : * very often, and if it does - for example, because there are many : * equal strings in the input - then we win big by avoiding expensive : * collation-aware comparisons. : */ : if (len1 == len2 && memcmp(arg1, arg2, len1) == 0) 0.00 : 75f71c: 45 39 f4 cmp %r14d,%r12d 0.00 : 75f71f: 4d 63 fc movslq %r12d,%r15 0.00 : 75f722: 0f 84 88 01 00 00 je 75f8b0 : : return result; : } : #endif /* WIN32 */ : : if (len1 >= TEXTBUFLEN) 0.00 : 75f728: 41 81 fc ff 03 00 00 cmp $0x3ff,%r12d 0.00 : 75f72f: 0f 8f 13 01 00 00 jg 75f848 0.00 : 75f735: 48 8d 85 d0 fb ff ff lea -0x430(%rbp),%rax : a1p = (char *) palloc(len1 + 1); : else : a1p = a1buf; : if (len2 >= TEXTBUFLEN) 0.00 : 75f73c: 41 81 fe ff 03 00 00 cmp $0x3ff,%r14d : : return result; : } : #endif /* WIN32 */ : : if (len1 >= TEXTBUFLEN) 0.00 : 75f743: 48 89 85 b0 f7 ff ff mov %rax,-0x850(%rbp) 0.00 : 75f74a: 49 89 c5 mov %rax,%r13 : a1p = (char *) palloc(len1 + 1); : else : a1p = a1buf; : if (len2 >= TEXTBUFLEN) 0.00 : 75f74d: 0f 8f 20 01 00 00 jg 75f873 0.00 : 75f753: 48 8d 85 d0 f7 ff ff lea -0x830(%rbp),%rax 0.00 : 75f75a: 48 89 85 a8 f7 ff ff mov %rax,-0x858(%rbp) 0.00 : 75f761: 49 89 c4 mov %rax,%r12 : a2p = (char *) palloc(len2 + 1); : else : a2p = a2buf; : : memcpy(a1p, arg1, len1); 0.00 : 75f764: 48 8b b5 c0 f7 ff ff mov -0x840(%rbp),%rsi 0.00 : 75f76b: 4c 89 fa mov %r15,%rdx 0.00 : 75f76e: 4c 89 ef mov %r13,%rdi : a1p[len1] = '\0'; : memcpy(a2p, arg2, len2); 0.00 : 75f771: 49 63 de movslq %r14d,%rbx : if (len2 >= TEXTBUFLEN) : a2p = (char *) palloc(len2 + 1); : else : a2p = a2buf; : : memcpy(a1p, arg1, len1); 0.00 : 75f774: e8 77 a4 d0 ff callq 469bf0 : a1p[len1] = '\0'; 0.00 : 75f779: 43 c6 44 3d 00 00 movb $0x0,0x0(%r13,%r15,1) : memcpy(a2p, arg2, len2); 0.00 : 75f77f: 48 8b b5 b8 f7 ff ff mov -0x848(%rbp),%rsi 0.00 : 75f786: 48 89 da mov %rbx,%rdx 0.00 : 75f789: 4c 89 e7 mov %r12,%rdi 0.00 : 75f78c: e8 5f a4 d0 ff callq 469bf0 : a2p[len2] = '\0'; 0.00 : 75f791: 41 c6 04 1c 00 movb $0x0,(%r12,%rbx,1) : : #ifdef HAVE_LOCALE_T : if (mylocale) 0.00 : 75f796: 48 83 bd c8 f7 ff ff cmpq $0x0,-0x838(%rbp) 0.00 : 75f79d: 00 0.00 : 75f79e: 0f 84 3c 01 00 00 je 75f8e0 : result = strcoll_l(a1p, a2p, mylocale); 0.00 : 75f7a4: 48 8b 95 c8 f7 ff ff mov -0x838(%rbp),%rdx 0.00 : 75f7ab: 4c 89 e6 mov %r12,%rsi 0.00 : 75f7ae: 4c 89 ef mov %r13,%rdi 0.00 : 75f7b1: e8 ea 9f d0 ff callq 4697a0 0.00 : 75f7b6: 89 c3 mov %eax,%ebx : * In some locales strcoll() can claim that nonidentical strings are : * equal. Believing that would be bad news for a number of reasons, : * so we follow Perl's lead and sort "equal" strings according to : * strcmp(). : */ : if (result == 0) 0.00 : 75f7b8: 85 db test %ebx,%ebx 0.00 : 75f7ba: 0f 84 d8 00 00 00 je 75f898 : result = strcmp(a1p, a2p); : : if (a1p != a1buf) 0.00 : 75f7c0: 4c 3b ad b0 f7 ff ff cmp -0x850(%rbp),%r13 0.00 : 75f7c7: 74 08 je 75f7d1 : pfree(a1p); 0.00 : 75f7c9: 4c 89 ef mov %r13,%rdi 0.00 : 75f7cc: e8 af 93 03 00 callq 798b80 : if (a2p != a2buf) 0.00 : 75f7d1: 4c 3b a5 a8 f7 ff ff cmp -0x858(%rbp),%r12 0.00 : 75f7d8: 74 08 je 75f7e2 : pfree(a2p); 0.00 : 75f7da: 4c 89 e7 mov %r12,%rdi 0.00 : 75f7dd: e8 9e 93 03 00 callq 798b80 : } : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.19 : 75f7e2: 89 d8 mov %ebx,%eax 1.19 : 75f7e4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 2.65 : 75f7e8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75f7ec: 4c 8b 6d e8 mov -0x18(%rbp),%r13 1.89 : 75f7f0: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75f7f4: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.12 : 75f7f8: c9 leaveq 1.61 : 75f7f9: c3 retq 0.00 : 75f7fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * slower, so we optimize the case where LC_COLLATE is C. We also try to : * optimize relatively-short strings by avoiding palloc/pfree overhead. : */ : if (lc_collate_is_c(collid)) : { : result = memcmp(arg1, arg2, Min(len1, len2)); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.33 : 75f800: 45 39 e6 cmp %r12d,%r14d 0.00 : 75f803: 44 89 e1 mov %r12d,%ecx 0.00 : 75f806: 48 8b b5 c0 f7 ff ff mov -0x840(%rbp),%rsi 0.91 : 75f80d: 41 0f 4e ce cmovle %r14d,%ecx 0.91 : 75f811: 48 8b bd b8 f7 ff ff mov -0x848(%rbp),%rdi 0.00 : 75f818: 48 63 c9 movslq %ecx,%rcx 0.35 : 75f81b: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 16.69 : 75f81e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 43.44 : 75f820: 0f 97 c2 seta %dl 10.75 : 75f823: 0f 92 c0 setb %al 0.00 : 75f826: 89 d3 mov %edx,%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.12 : 75f828: 28 c3 sub %al,%bl 1.61 : 75f82a: 0f be db movsbl %bl,%ebx : if ((result == 0) && (len1 != len2)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1376 1.82 : 75f82d: 85 db test %ebx,%ebx 0.00 : 75f82f: 75 b1 jne 75f7e2 0.77 : 75f831: 45 39 f4 cmp %r14d,%r12d 0.00 : 75f834: 74 ac je 75f7e2 : result = (len1 < len2) ? -1 : 1; 0.00 : 75f836: 31 db xor %ebx,%ebx 0.00 : 75f838: 45 39 e6 cmp %r12d,%r14d 0.00 : 75f83b: 0f 9e c3 setle %bl 0.00 : 75f83e: 8d 5c 1b ff lea -0x1(%rbx,%rbx,1),%ebx 0.00 : 75f842: eb 9e jmp 75f7e2 0.00 : 75f844: 0f 1f 40 00 nopl 0x0(%rax) : return result; : } : #endif /* WIN32 */ : : if (len1 >= TEXTBUFLEN) : a1p = (char *) palloc(len1 + 1); 0.00 : 75f848: 41 8d 7c 24 01 lea 0x1(%r12),%edi 0.00 : 75f84d: 48 63 ff movslq %edi,%rdi 0.00 : 75f850: e8 fb 94 03 00 callq 798d50 0.00 : 75f855: 49 89 c5 mov %rax,%r13 0.00 : 75f858: 48 8d 85 d0 fb ff ff lea -0x430(%rbp),%rax : else : a1p = a1buf; : if (len2 >= TEXTBUFLEN) 0.00 : 75f85f: 41 81 fe ff 03 00 00 cmp $0x3ff,%r14d 0.00 : 75f866: 48 89 85 b0 f7 ff ff mov %rax,-0x850(%rbp) 0.00 : 75f86d: 0f 8e e0 fe ff ff jle 75f753 : a2p = (char *) palloc(len2 + 1); 0.00 : 75f873: 41 8d 7e 01 lea 0x1(%r14),%edi 0.00 : 75f877: 48 63 ff movslq %edi,%rdi 0.00 : 75f87a: e8 d1 94 03 00 callq 798d50 0.00 : 75f87f: 49 89 c4 mov %rax,%r12 0.00 : 75f882: 48 8d 85 d0 f7 ff ff lea -0x830(%rbp),%rax 0.00 : 75f889: 48 89 85 a8 f7 ff ff mov %rax,-0x858(%rbp) 0.00 : 75f890: e9 cf fe ff ff jmpq 75f764 0.00 : 75f895: 0f 1f 00 nopl (%rax) : * equal. Believing that would be bad news for a number of reasons, : * so we follow Perl's lead and sort "equal" strings according to : * strcmp(). : */ : if (result == 0) : result = strcmp(a1p, a2p); 0.00 : 75f898: 4c 89 e6 mov %r12,%rsi 0.00 : 75f89b: 4c 89 ef mov %r13,%rdi 0.00 : 75f89e: e8 8d a4 d0 ff callq 469d30 0.00 : 75f8a3: 89 c3 mov %eax,%ebx 0.00 : 75f8a5: e9 16 ff ff ff jmpq 75f7c0 0.00 : 75f8aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * strcoll() by itself, so we don't lose much if this doesn't work out : * very often, and if it does - for example, because there are many : * equal strings in the input - then we win big by avoiding expensive : * collation-aware comparisons. : */ : if (len1 == len2 && memcmp(arg1, arg2, len1) == 0) 0.00 : 75f8b0: 48 8b b5 c0 f7 ff ff mov -0x840(%rbp),%rsi 0.00 : 75f8b7: 48 8b bd b8 f7 ff ff mov -0x848(%rbp),%rdi 0.00 : 75f8be: 4d 63 fc movslq %r12d,%r15 0.00 : 75f8c1: 4d 39 ff cmp %r15,%r15 0.00 : 75f8c4: 4c 89 f9 mov %r15,%rcx 0.00 : 75f8c7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 75f8c9: 0f 97 c2 seta %dl 0.00 : 75f8cc: 0f 92 c0 setb %al 0.00 : 75f8cf: 31 db xor %ebx,%ebx 0.00 : 75f8d1: 38 c2 cmp %al,%dl 0.00 : 75f8d3: 0f 85 4f fe ff ff jne 75f728 0.00 : 75f8d9: e9 04 ff ff ff jmpq 75f7e2 0.00 : 75f8de: 66 90 xchg %ax,%ax : #ifdef HAVE_LOCALE_T : if (mylocale) : result = strcoll_l(a1p, a2p, mylocale); : else : #endif : result = strcoll(a1p, a2p); 0.00 : 75f8e0: 4c 89 e6 mov %r12,%rsi 0.00 : 75f8e3: 4c 89 ef mov %r13,%rdi 0.00 : 75f8e6: e8 25 9b d0 ff callq 469410 0.00 : 75f8eb: 89 c3 mov %eax,%ebx 0.00 : 75f8ed: e9 c6 fe ff ff jmpq 75f7b8 : { : /* : * This typically means that the parser could not resolve a : * conflict of implicit collations, so report it that way. : */ : ereport(ERROR, 0.00 : 75f8f2: 45 31 c0 xor %r8d,%r8d 0.00 : 75f8f5: b9 f5 bf 8c 00 mov $0x8cbff5,%ecx 0.00 : 75f8fa: ba 79 05 00 00 mov $0x579,%edx 0.00 : 75f8ff: be 8b bb 8c 00 mov $0x8cbb8b,%esi 0.00 : 75f904: bf 14 00 00 00 mov $0x14,%edi 0.00 : 75f909: e8 b2 b1 01 00 callq 77aac0 0.00 : 75f90e: 84 c0 test %al,%al 0.00 : 75f910: 75 05 jne 75f917 0.00 : 75f912: e8 b9 9b d0 ff callq 4694d0 0.00 : 75f917: bf f0 18 7c 00 mov $0x7c18f0,%edi 0.00 : 75f91c: 31 c0 xor %eax,%eax 0.00 : 75f91e: e8 7d c3 01 00 callq 77bca0 0.00 : 75f923: bf f0 bd 8c 00 mov $0x8cbdf0,%edi 0.00 : 75f928: 41 89 c4 mov %eax,%r12d 0.00 : 75f92b: 31 c0 xor %eax,%eax 0.00 : 75f92d: e8 6e cf 01 00 callq 77c8a0 0.00 : 75f932: bf 84 00 0a 02 mov $0x20a0084,%edi 0.00 : 75f937: 89 c3 mov %eax,%ebx 0.00 : 75f939: e8 12 d4 01 00 callq 77cd50 0.00 : 75f93e: 44 89 e2 mov %r12d,%edx 0.00 : 75f941: 89 c7 mov %eax,%edi 0.00 : 75f943: 89 de mov %ebx,%esi 0.00 : 75f945: 31 c0 xor %eax,%eax 0.00 : 75f947: e8 94 ac 01 00 callq 77a5e0 0.00 : 75f94c: eb c4 jmp 75f912 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.28 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 11.16 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 9.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 9.61 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 8.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 8.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 7.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 7.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 7.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 6.31 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 3.48 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 3.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 0.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694ba0 : : * Skip if not in full serializable transaction isolation level. : * Skip if this is a temporary table. : */ : void : PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 15.28 : 694ba0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 3.11 : 694ba1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 7.50 : 694ba4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 11.16 : 694ba8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.09 : 694bac: 48 89 fb mov %rdi,%rbx 0.18 : 694baf: 4c 89 6d f0 mov %r13,-0x10(%rbp) 8.42 : 694bb3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 9.70 : 694bb7: 48 83 ec 30 sub $0x30,%rsp : */ : static inline bool : SerializationNeededForRead(Relation relation, Snapshot snapshot) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 0.55 : 694bbb: 48 8b 0d fe 9a 4e 00 mov 0x4e9afe(%rip),%rcx # b7e6c0 : * Skip if not in full serializable transaction isolation level. : * Skip if this is a temporary table. : */ : void : PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2466 3.48 : 694bc2: 49 89 f4 mov %rsi,%r12 : */ : static inline bool : SerializationNeededForRead(Relation relation, Snapshot snapshot) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 6.31 : 694bc5: 48 85 c9 test %rcx,%rcx 0.00 : 694bc8: 74 13 je 694bdd : * This excludes things like CLUSTER and REINDEX. They use the wholesale : * functions TransferPredicateLocksToHeapRelation() and : * CheckTableForSerializableConflictIn() to participate serialization, but : * the scans involved don't need serialization. : */ : if (!IsMVCCSnapshot(snapshot)) 0.00 : 694bca: 48 8b 02 mov (%rdx),%rax 0.00 : 694bcd: 48 3d 50 57 7a 00 cmp $0x7a5750,%rax 0.00 : 694bd3: 74 1b je 694bf0 0.00 : 694bd5: 48 3d 60 47 7a 00 cmp $0x7a4760,%rax 0.00 : 694bdb: 74 13 je 694bf0 : relation->rd_node.dbNode, : relation->rd_id, : ItemPointerGetBlockNumber(tid), : ItemPointerGetOffsetNumber(tid)); : PredicateLockAcquire(&tag); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 8.97 : 694bdd: 48 8b 5d e0 mov -0x20(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 0.73 : 694be1: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.09 : 694be5: 4c 8b 6d f0 mov -0x10(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2518 7.41 : 694be9: 4c 8b 75 f8 mov -0x8(%rbp),%r14 9.61 : 694bed: c9 leaveq 7.41 : 694bee: c3 retq 0.00 : 694bef: 90 nop : * : * A transaction is flagged as RO_SAFE if all concurrent R/W transactions : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) 0.00 : 694bf0: 80 79 7c 00 cmpb $0x0,0x7c(%rcx) 0.00 : 694bf4: 0f 88 9e 00 00 00 js 694c98 : * relations are exempt, as are materialized views. : */ : static inline bool : PredicateLockingNeededForRelation(Relation relation) : { : return !(relation->rd_id < FirstBootstrapObjectId || 0.00 : 694bfa: 8b 53 40 mov 0x40(%rbx),%edx 0.00 : 694bfd: 81 fa 0f 27 00 00 cmp $0x270f,%edx 0.00 : 694c03: 76 d8 jbe 694bdd 0.00 : 694c05: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 694c09: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 0.00 : 694c0d: 74 ce je 694bdd 0.00 : 694c0f: 80 78 6f 6d cmpb $0x6d,0x6f(%rax) 0.00 : 694c13: 74 c8 je 694bdd : return; : : /* : * If it's a heap tuple, return if this xact wrote it. : */ : if (relation->rd_index == NULL) 0.00 : 694c15: 48 83 bb a0 00 00 00 cmpq $0x0,0xa0(%rbx) 0.00 : 694c1c: 00 0.00 : 694c1d: 0f 84 85 00 00 00 je 694ca8 : * Do quick-but-not-definitive test for a relation lock first. This will : * never cause a return when the relation is *not* locked, but will : * occasionally let the check continue when there really *is* a relation : * level lock. : */ : SET_PREDICATELOCKTARGETTAG_RELATION(tag, 0.00 : 694c23: 8b 43 04 mov 0x4(%rbx),%eax : PredicateLockExists(const PREDICATELOCKTARGETTAG *targettag) : { : LOCALPREDICATELOCK *lock; : : /* check local hash table */ : lock = (LOCALPREDICATELOCK *) hash_search(LocalPredicateLockHash, 0.00 : 694c26: 4c 8d 6d d0 lea -0x30(%rbp),%r13 0.00 : 694c2a: 48 8b 3d 9f 9a 4e 00 mov 0x4e9a9f(%rip),%rdi # b7e6d0 : * Do quick-but-not-definitive test for a relation lock first. This will : * never cause a return when the relation is *not* locked, but will : * occasionally let the check continue when there really *is* a relation : * level lock. : */ : SET_PREDICATELOCKTARGETTAG_RELATION(tag, 0.00 : 694c31: 89 55 d4 mov %edx,-0x2c(%rbp) : PredicateLockExists(const PREDICATELOCKTARGETTAG *targettag) : { : LOCALPREDICATELOCK *lock; : : /* check local hash table */ : lock = (LOCALPREDICATELOCK *) hash_search(LocalPredicateLockHash, 0.00 : 694c34: 31 c9 xor %ecx,%ecx 0.00 : 694c36: 31 d2 xor %edx,%edx 0.00 : 694c38: 4c 89 ee mov %r13,%rsi : * Do quick-but-not-definitive test for a relation lock first. This will : * never cause a return when the relation is *not* locked, but will : * occasionally let the check continue when there really *is* a relation : * level lock. : */ : SET_PREDICATELOCKTARGETTAG_RELATION(tag, 0.00 : 694c3b: c7 45 d8 ff ff ff ff movl $0xffffffff,-0x28(%rbp) 0.00 : 694c42: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%rbp) 0.00 : 694c49: 89 45 d0 mov %eax,-0x30(%rbp) : PredicateLockExists(const PREDICATELOCKTARGETTAG *targettag) : { : LOCALPREDICATELOCK *lock; : : /* check local hash table */ : lock = (LOCALPREDICATELOCK *) hash_search(LocalPredicateLockHash, 0.00 : 694c4c: e8 4f fa 0e 00 callq 7846a0 : targettag, : HASH_FIND, NULL); : : if (!lock) 0.00 : 694c51: 48 85 c0 test %rax,%rax 0.00 : 694c54: 74 06 je 694c5c : * level lock. : */ : SET_PREDICATELOCKTARGETTAG_RELATION(tag, : relation->rd_node.dbNode, : relation->rd_id); : if (PredicateLockExists(&tag)) 0.00 : 694c56: 80 78 10 00 cmpb $0x0,0x10(%rax) 0.00 : 694c5a: 75 81 jne 694bdd : return; : : tid = &(tuple->t_self); : SET_PREDICATELOCKTARGETTAG_TUPLE(tag, 0.00 : 694c5c: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 694c5f: 41 0f b7 54 24 06 movzwl 0x6(%r12),%edx : relation->rd_node.dbNode, : relation->rd_id, : ItemPointerGetBlockNumber(tid), : ItemPointerGetOffsetNumber(tid)); : PredicateLockAcquire(&tag); 0.00 : 694c65: 4c 89 ef mov %r13,%rdi : relation->rd_id); : if (PredicateLockExists(&tag)) : return; : : tid = &(tuple->t_self); : SET_PREDICATELOCKTARGETTAG_TUPLE(tag, 0.00 : 694c68: 89 45 d0 mov %eax,-0x30(%rbp) 0.00 : 694c6b: 8b 43 40 mov 0x40(%rbx),%eax 0.00 : 694c6e: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 694c71: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 694c77: c1 e0 10 shl $0x10,%eax 0.00 : 694c7a: 09 d0 or %edx,%eax 0.00 : 694c7c: 89 45 d8 mov %eax,-0x28(%rbp) 0.00 : 694c7f: 41 0f b7 44 24 08 movzwl 0x8(%r12),%eax 0.00 : 694c85: 89 45 dc mov %eax,-0x24(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : ItemPointerGetBlockNumber(tid), : ItemPointerGetOffsetNumber(tid)); : PredicateLockAcquire(&tag); 0.00 : 694c88: e8 a3 d3 ff ff callq 692030 0.00 : 694c8d: e9 4b ff ff ff jmpq 694bdd 0.00 : 694c92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) : { : ReleasePredicateLocks(false); 0.00 : 694c98: 31 ff xor %edi,%edi 0.00 : 694c9a: e8 51 dc ff ff callq 6928f0 0.00 : 694c9f: 90 nop 0.00 : 694ca0: e9 38 ff ff ff jmpq 694bdd 0.00 : 694ca5: 0f 1f 00 nopl (%rax) : */ : if (relation->rd_index == NULL) : { : TransactionId myxid; : : targetxmin = HeapTupleHeaderGetXmin(tuple->t_data); 0.00 : 694ca8: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 694cad: 41 bd 02 00 00 00 mov $0x2,%r13d 0.00 : 694cb3: 0f b7 42 14 movzwl 0x14(%rdx),%eax 0.00 : 694cb7: 25 00 03 00 00 and $0x300,%eax 0.00 : 694cbc: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 694cc1: 74 03 je 694cc6 0.00 : 694cc3: 44 8b 2a mov (%rdx),%r13d : : myxid = GetTopTransactionIdIfAny(); 0.00 : 694cc6: e8 b5 be e2 ff callq 4c0b80 : if (TransactionIdIsValid(myxid)) 0.00 : 694ccb: 85 c0 test %eax,%eax : { : TransactionId myxid; : : targetxmin = HeapTupleHeaderGetXmin(tuple->t_data); : : myxid = GetTopTransactionIdIfAny(); 0.00 : 694ccd: 41 89 c6 mov %eax,%r14d : if (TransactionIdIsValid(myxid)) 0.00 : 694cd0: 75 0e jne 694ce0 : TransactionId xid = SubTransGetTopmostTransaction(targetxmin); : : if (TransactionIdEquals(xid, myxid)) : { : /* We wrote it; we already have a write lock. */ : return; 0.00 : 694cd2: 8b 53 40 mov 0x40(%rbx),%edx 0.00 : 694cd5: e9 49 ff ff ff jmpq 694c23 0.00 : 694cda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : targetxmin = HeapTupleHeaderGetXmin(tuple->t_data); : : myxid = GetTopTransactionIdIfAny(); : if (TransactionIdIsValid(myxid)) : { : if (TransactionIdFollowsOrEquals(targetxmin, TransactionXmin)) 0.00 : 694ce0: 8b 35 72 da 4d 00 mov 0x4dda72(%rip),%esi # b72758 0.00 : 694ce6: 44 89 ef mov %r13d,%edi 0.00 : 694ce9: e8 82 b3 e2 ff callq 4c0070 0.00 : 694cee: 84 c0 test %al,%al 0.00 : 694cf0: 74 e0 je 694cd2 : { : TransactionId xid = SubTransGetTopmostTransaction(targetxmin); 0.00 : 694cf2: 44 89 ef mov %r13d,%edi 0.00 : 694cf5: e8 f6 1b e3 ff callq 4c68f0 : : if (TransactionIdEquals(xid, myxid)) 0.00 : 694cfa: 41 39 c6 cmp %eax,%r14d 0.00 : 694cfd: 75 d3 jne 694cd2 0.00 : 694cff: 90 nop 0.00 : 694d00: e9 d8 fe ff ff jmpq 694bdd Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 14.58 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:233 11.14 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 10.49 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:232 7.80 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:233 6.59 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 5.85 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 5.01 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 4.36 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 3.81 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:226 3.81 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:235 3.06 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 2.97 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 2.97 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:232 2.97 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 2.79 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 2.41 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 1.58 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:226 1.58 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 1.58 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:235 1.02 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 0.93 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 0.56 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:226 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000403c90 : : * long in [1, max] where max is determined by the distribution : * being queried : */ : int : pick_str(distribution *s, int c, char *target) : { /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:226 3.81 : 403c90: 55 push %rbp 1.58 : 403c91: 48 89 d5 mov %rdx,%rbp : long i = 0; : DSS_HUGE j; : : RANDOM(j, 1, s->list[s->count - 1].weight, c); 0.09 : 403c94: 48 63 ce movslq %esi,%rcx /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 2.41 : 403c97: be 01 00 00 00 mov $0x1,%esi : * long in [1, max] where max is determined by the distribution : * being queried : */ : int : pick_str(distribution *s, int c, char *target) : { 0.09 : 403c9c: 53 push %rbx /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:226 0.56 : 403c9d: 48 89 fb mov %rdi,%rbx 0.37 : 403ca0: 48 83 ec 18 sub $0x18,%rsp : long i = 0; : DSS_HUGE j; : : RANDOM(j, 1, s->list[s->count - 1].weight, c); /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:230 2.97 : 403ca4: 48 63 07 movslq (%rdi),%rax 1.02 : 403ca7: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.19 : 403cab: 48 8d 7c 24 10 lea 0x10(%rsp),%rdi 1.58 : 403cb0: 48 83 e8 01 sub $0x1,%rax 0.28 : 403cb4: 48 c1 e0 04 shl $0x4,%rax 0.93 : 403cb8: 48 8b 14 02 mov (%rdx,%rax,1),%rdx 3.06 : 403cbc: e8 6f 08 00 00 callq 404530 : while (s->list[i].weight < j) 0.00 : 403cc1: 48 8b 53 08 mov 0x8(%rbx),%rdx /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 2.79 : 403cc5: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 5.85 : 403cca: 31 db xor %ebx,%ebx 0.00 : 403ccc: 48 39 3a cmp %rdi,(%rdx) 0.00 : 403ccf: 7d 24 jge 403cf5 5.01 : 403cd1: 48 8d 72 10 lea 0x10(%rdx),%rsi 0.37 : 403cd5: 31 c9 xor %ecx,%ecx 0.00 : 403cd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 403cde: 00 00 6.59 : 403ce0: 48 8b 06 mov (%rsi),%rax : i++; /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:232 10.49 : 403ce3: 48 83 c1 01 add $0x1,%rcx /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:232 2.97 : 403ce7: 48 89 f2 mov %rsi,%rdx : { : long i = 0; : DSS_HUGE j; : : RANDOM(j, 1, s->list[s->count - 1].weight, c); : while (s->list[i].weight < j) /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 4.36 : 403cea: 48 8d 76 10 lea 0x10(%rsi),%rsi 2.97 : 403cee: 48 39 f8 cmp %rdi,%rax 0.00 : 403cf1: 7c ed jl 403ce0 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:231 11.14 : 403cf3: 89 cb mov %ecx,%ebx : i++; : strcpy(target, s->list[i].text); /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:233 14.58 : 403cf5: 48 8b 72 08 mov 0x8(%rdx),%rsi 7.80 : 403cf9: 48 89 ef mov %rbp,%rdi 0.00 : 403cfc: e8 9f d0 ff ff callq 400da0 : return(i); : } /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:235 1.58 : 403d01: 89 d8 mov %ebx,%eax 0.00 : 403d03: 48 83 c4 18 add $0x18,%rsp 0.37 : 403d07: 5b pop %rbx 4.18 : 403d08: 5d pop %rbp Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 74.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1070 23.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1071 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782c50 : : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); : garbage = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782c50: 0f b6 4f 14 movzbl 0x14(%rdi),%ecx : { : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); 0.33 : 782c54: 89 d0 mov %edx,%eax : * failure to match an already-deleted item shouldn't cause any problems; : * this is why gcnext can share space with the hash value. : */ : static void : CHashAddToGarbage(CHashTable table, uint32 bucket, CHashPtr c) : { 0.00 : 782c56: 55 push %rbp : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); 0.00 : 782c57: d1 e8 shr %eax 0.00 : 782c59: 41 89 c0 mov %eax,%r8d : * failure to match an already-deleted item shouldn't cause any problems; : * this is why gcnext can share space with the hash value. : */ : static void : CHashAddToGarbage(CHashTable table, uint32 bucket, CHashPtr c) : { 0.17 : 782c5c: 48 89 e5 mov %rsp,%rbp : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); 0.00 : 782c5f: 44 0f af 47 1c imul 0x1c(%rdi),%r8d : garbage = CHashTableGetGarbageByBucket(table, bucket); 0.08 : 782c64: d3 ee shr %cl,%esi 0.25 : 782c66: 0f b6 4f 15 movzbl 0x15(%rdi),%ecx 0.00 : 782c6a: 89 f0 mov %esi,%eax : { : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); 0.42 : 782c6c: 4c 03 47 30 add 0x30(%rdi),%r8 : garbage = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782c70: d3 e8 shr %cl,%eax 0.17 : 782c72: 01 f0 add %esi,%eax 0.00 : 782c74: 48 8d 0c 85 00 00 00 lea 0x0(,%rax,4),%rcx 0.00 : 782c7b: 00 0.00 : 782c7c: 48 03 4f 28 add 0x28(%rdi),%rcx 0.00 : 782c80: eb 0e jmp 782c90 0.00 : 782c82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : g = *garbage; : n->un.gcnext = g; : if (__sync_bool_compare_and_swap(garbage, g, c)) : break; : CHashTableIncrementStatistic(table, CHS_Garbage_Enqueue_Retry); 0.00 : 782c88: 48 83 87 a8 00 00 00 addq $0x1,0xa8(%rdi) 0.00 : 782c8f: 01 : n = CHashTableGetNode(table, c); : garbage = CHashTableGetGarbageByBucket(table, bucket); : : while (1) : { : g = *garbage; 0.33 : 782c90: 8b 01 mov (%rcx),%eax : n->un.gcnext = g; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1070 74.00 : 782c92: 41 89 40 04 mov %eax,0x4(%r8) : if (__sync_bool_compare_and_swap(garbage, g, c)) 0.42 : 782c96: f0 0f b1 11 lock cmpxchg %edx,(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1071 23.50 : 782c9a: 75 ec jne 782c88 : break; : CHashTableIncrementStatistic(table, CHS_Garbage_Enqueue_Retry); : } : } 0.33 : 782c9c: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 41.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1438 28.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1472 10.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1458 8.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1438 6.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1445 4.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1445 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1472 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bbbb0 : : * or INVALID_SKEW_BUCKET_NO if the hashvalue is not : * associated with any active skew bucket. : */ : int : ExecHashGetSkewBucket(HashJoinTable hashtable, uint32 hashvalue) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1438 8.10 : 5bbbb0: 55 push %rbp : : /* : * Always return INVALID_SKEW_BUCKET_NO if not doing skew optimization (in : * particular, this happens after the initial batch is done). : */ : if (!hashtable->skewEnabled) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1445 6.32 : 5bbbb1: 80 7f 21 00 cmpb $0x0,0x21(%rdi) : * or INVALID_SKEW_BUCKET_NO if the hashvalue is not : * associated with any active skew bucket. : */ : int : ExecHashGetSkewBucket(HashJoinTable hashtable, uint32 hashvalue) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1438 41.21 : 5bbbb5: 48 89 e5 mov %rsp,%rbp : : /* : * Always return INVALID_SKEW_BUCKET_NO if not doing skew optimization (in : * particular, this happens after the initial batch is done). : */ : if (!hashtable->skewEnabled) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1445 4.05 : 5bbbb8: 74 46 je 5bbc00 : return INVALID_SKEW_BUCKET_NO; : : /* : * Since skewBucketLen is a power of 2, we can do a modulo by ANDing. : */ : bucket = hashvalue & (hashtable->skewBucketLen - 1); 0.00 : 5bbbba: 8b 47 30 mov 0x30(%rdi),%eax 0.00 : 5bbbbd: 89 f2 mov %esi,%edx : /* : * While we have not hit a hole in the hashtable and have not hit the : * desired bucket, we have collided with some other hash value, so try the : * next bucket location. : */ : while (hashtable->skewBucket[bucket] != NULL && 0.00 : 5bbbbf: 48 8b 4f 28 mov 0x28(%rdi),%rcx : return INVALID_SKEW_BUCKET_NO; : : /* : * Since skewBucketLen is a power of 2, we can do a modulo by ANDing. : */ : bucket = hashvalue & (hashtable->skewBucketLen - 1); 0.00 : 5bbbc3: 44 8d 40 ff lea -0x1(%rax),%r8d 0.00 : 5bbbc7: 44 21 c2 and %r8d,%edx : /* : * While we have not hit a hole in the hashtable and have not hit the : * desired bucket, we have collided with some other hash value, so try the : * next bucket location. : */ : while (hashtable->skewBucket[bucket] != NULL && 0.00 : 5bbbca: 48 63 c2 movslq %edx,%rax 0.00 : 5bbbcd: 48 8b 04 c1 mov (%rcx,%rax,8),%rax 0.00 : 5bbbd1: 48 85 c0 test %rax,%rax 0.00 : 5bbbd4: 75 1c jne 5bbbf2 0.00 : 5bbbd6: eb 28 jmp 5bbc00 0.00 : 5bbbd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5bbbdf: 00 : hashtable->skewBucket[bucket]->hashvalue != hashvalue) : bucket = (bucket + 1) & (hashtable->skewBucketLen - 1); 0.00 : 5bbbe0: 83 c2 01 add $0x1,%edx 0.00 : 5bbbe3: 44 21 c2 and %r8d,%edx : /* : * While we have not hit a hole in the hashtable and have not hit the : * desired bucket, we have collided with some other hash value, so try the : * next bucket location. : */ : while (hashtable->skewBucket[bucket] != NULL && 0.00 : 5bbbe6: 48 63 c2 movslq %edx,%rax 0.00 : 5bbbe9: 48 8b 04 c1 mov (%rcx,%rax,8),%rax 0.00 : 5bbbed: 48 85 c0 test %rax,%rax 0.00 : 5bbbf0: 74 0e je 5bbc00 0.00 : 5bbbf2: 39 30 cmp %esi,(%rax) 0.00 : 5bbbf4: 75 ea jne 5bbbe0 : : /* : * There must not be any hashtable entry for this hash value. : */ : return INVALID_SKEW_BUCKET_NO; : } 0.00 : 5bbbf6: 89 d0 mov %edx,%eax 0.00 : 5bbbf8: c9 leaveq 0.00 : 5bbbf9: c3 retq 0.00 : 5bbbfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * While we have not hit a hole in the hashtable and have not hit the : * desired bucket, we have collided with some other hash value, so try the : * next bucket location. : */ : while (hashtable->skewBucket[bucket] != NULL && /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1458 10.45 : 5bbc00: ba ff ff ff ff mov $0xffffffff,%edx : : /* : * There must not be any hashtable entry for this hash value. : */ : return INVALID_SKEW_BUCKET_NO; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1472 0.65 : 5bbc05: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1472 29.23 : 5bbc06: 89 d0 mov %edx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 58.39 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 14.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 5.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 4.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 3.45 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 2.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:91 2.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:87 1.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 1.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:87 1.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:87 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:91 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000673de0 : : * BufTableLookup : * Lookup the given BufferTag; return buffer ID, or -1 if not found : */ : int : BufTableLookup(BufferTag *tagPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 3.45 : 673de0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 14.54 : 673de1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 0.88 : 673de4: 48 83 ec 20 sub $0x20,%rsp : BufferLookupEnt ent; : : ent.key = *tagPtr; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 1.93 : 673de8: 48 8b 07 mov (%rdi),%rax : if (!CHashSearch(SharedBufHash, &ent)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:87 2.09 : 673deb: 48 8d 75 e0 lea -0x20(%rbp),%rsi : int : BufTableLookup(BufferTag *tagPtr) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; 0.16 : 673def: 48 89 45 e0 mov %rax,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 5.38 : 673df3: 48 8b 47 08 mov 0x8(%rdi),%rax 58.39 : 673df7: 48 89 45 e8 mov %rax,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 4.90 : 673dfb: 8b 47 10 mov 0x10(%rdi),%eax : if (!CHashSearch(SharedBufHash, &ent)) 0.40 : 673dfe: 48 8b 3d 53 92 50 00 mov 0x509253(%rip),%rdi # b7d058 : int : BufTableLookup(BufferTag *tagPtr) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; 0.88 : 673e05: 89 45 f0 mov %eax,-0x10(%rbp) : if (!CHashSearch(SharedBufHash, &ent)) 0.32 : 673e08: e8 e3 f4 10 00 callq 7832f0 0.24 : 673e0d: 89 c2 mov %eax,%edx 0.40 : 673e0f: b8 ff ff ff ff mov $0xffffffff,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:87 1.12 : 673e14: 84 d2 test %dl,%dl 1.93 : 673e16: 0f 45 45 f4 cmovne -0xc(%rbp),%eax : return -1; : : return ent.id; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:91 2.97 : 673e1a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.71 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1454 5.87 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 5.12 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 4.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 4.28 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1475 3.86 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1449 3.02 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1443 3.02 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1475 2.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1475 2.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 2.68 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1425 2.68 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1443 2.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 2.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1475 2.10 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1463 2.01 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1445 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1475 1.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1425 1.51 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 1.43 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1413 1.43 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1445 1.43 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1461 1.43 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 1.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1416 1.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1461 1.26 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1427 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1447 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 1.01 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1460 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1443 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1454 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1460 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1463 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1440 0.84 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1459 0.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1447 0.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1460 0.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1461 0.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1427 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1427 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1440 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1475 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1427 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1427 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1447 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1445 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1460 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 0.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 0.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1427 0.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 0.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004704e0 : : */ : MinimalTuple : heap_form_minimal_tuple(TupleDesc tupleDescriptor, : Datum *values, : bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 2.77 : 4704e0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 5.87 : 4704e1: 48 89 e5 mov %rsp,%rbp 0.00 : 4704e4: 41 57 push %r15 5.12 : 4704e6: 49 89 d7 mov %rdx,%r15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1407 1.26 : 4704e9: 41 56 push %r14 0.50 : 4704eb: 49 89 fe mov %rdi,%r14 0.00 : 4704ee: 41 55 push %r13 1.76 : 4704f0: 41 54 push %r12 1.76 : 4704f2: 53 push %rbx 1.09 : 4704f3: 48 83 ec 28 sub $0x28,%rsp 0.34 : 4704f7: 48 89 75 c0 mov %rsi,-0x40(%rbp) : MinimalTuple tuple; /* return tuple */ : Size len, : data_len; : int hoff; : bool hasnull = false; : int numberOfAttributes = tupleDescriptor->natts; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1413 1.43 : 4704fb: 44 8b 2f mov (%rdi),%r13d : int i; : : if (numberOfAttributes > MaxTupleAttributeNumber) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1416 1.34 : 4704fe: 41 81 fd 80 06 00 00 cmp $0x680,%r13d 0.00 : 470505: 0f 8f fb 00 00 00 jg 470606 : numberOfAttributes, MaxTupleAttributeNumber))); : : /* : * Check for nulls : */ : for (i = 0; i < numberOfAttributes; i++) 0.25 : 47050b: 45 85 ed test %r13d,%r13d 0.00 : 47050e: 7e 28 jle 470538 : { : if (isnull[i]) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1427 0.50 : 470510: 48 89 d1 mov %rdx,%rcx 1.17 : 470513: 31 d2 xor %edx,%edx 0.67 : 470515: 41 80 3f 00 cmpb $0x0,(%r15) 0.34 : 470519: 74 15 je 470530 0.00 : 47051b: e9 d0 00 00 00 jmpq 4705f0 0.59 : 470520: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.67 : 470524: 48 83 c1 01 add $0x1,%rcx 0.59 : 470528: 84 c0 test %al,%al 0.00 : 47052a: 0f 85 c0 00 00 00 jne 4705f0 : numberOfAttributes, MaxTupleAttributeNumber))); : : /* : * Check for nulls : */ : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1425 2.68 : 470530: 83 c2 01 add $0x1,%edx 1.59 : 470533: 41 39 d5 cmp %edx,%r13d 0.00 : 470536: 7f e8 jg 470520 : * Determine total space needed : */ : len = offsetof(MinimalTupleData, t_bits); : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); 0.17 : 470538: ba 0f 00 00 00 mov $0xf,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1440 0.67 : 47053d: c6 45 d7 00 movb $0x0,-0x29(%rbp) : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1443 2.68 : 470541: 41 80 7e 20 00 cmpb $0x0,0x20(%r14) 3.02 : 470546: 48 8d 42 04 lea 0x4(%rdx),%rax : : hoff = len = MAXALIGN(len); /* align user data safely */ : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1447 0.76 : 47054a: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.08 : 47054e: 4c 89 f7 mov %r14,%rdi : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1443 0.92 : 470551: 48 0f 45 d0 cmovne %rax,%rdx : : hoff = len = MAXALIGN(len); /* align user data safely */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1445 2.01 : 470555: 48 8d 5a 07 lea 0x7(%rdx),%rbx : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1447 0.59 : 470559: 4c 89 fa mov %r15,%rdx : len += BITMAPLEN(numberOfAttributes); : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); : : hoff = len = MAXALIGN(len); /* align user data safely */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1445 0.59 : 47055c: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 1.43 : 470560: 89 5d d0 mov %ebx,-0x30(%rbp) : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1447 1.17 : 470563: e8 08 fe ff ff callq 470370 : : len += data_len; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1449 3.86 : 470568: 48 01 c3 add %rax,%rbx : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); : : hoff = len = MAXALIGN(len); /* align user data safely */ : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); 0.08 : 47056b: 48 89 45 c8 mov %rax,-0x38(%rbp) : len += data_len; : : /* : * Allocate and zero the space needed. : */ : tuple = (MinimalTuple) palloc0(len); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1454 6.71 : 47056f: 48 89 df mov %rbx,%rdi 0.08 : 470572: e8 f9 89 32 00 callq 798f70 : : /* : * And fill in the information. : */ : tuple->t_len = len; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1459 0.84 : 470577: 89 18 mov %ebx,(%rax) : len += data_len; : : /* : * Allocate and zero the space needed. : */ : tuple = (MinimalTuple) palloc0(len); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1454 0.92 : 470579: 49 89 c4 mov %rax,%r12 : : /* : * And fill in the information. : */ : tuple->t_len = len; : HeapTupleHeaderSetNatts(tuple, numberOfAttributes); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1460 0.59 : 47057c: 0f b7 40 0a movzwl 0xa(%rax),%eax 0.92 : 470580: 66 25 00 f8 and $0xf800,%ax 0.76 : 470584: 44 09 e8 or %r13d,%eax 1.01 : 470587: 66 41 89 44 24 0a mov %ax,0xa(%r12) : tuple->t_hoff = hoff + MINIMAL_TUPLE_OFFSET; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1461 1.34 : 47058d: 0f b6 45 d0 movzbl -0x30(%rbp),%eax 0.76 : 470591: 83 c0 08 add $0x8,%eax 1.43 : 470594: 41 88 44 24 0e mov %al,0xe(%r12) : : if (tupleDescriptor->tdhasoid) /* else leave infomask = 0 */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1463 2.10 : 470599: 41 80 7e 20 00 cmpb $0x0,0x20(%r14) 0.92 : 47059e: 74 08 je 4705a8 : tuple->t_infomask = HEAP_HASOID; 0.00 : 4705a0: 66 41 c7 44 24 0c 08 movw $0x8,0xc(%r12) 0.00 : 4705a7: 00 : : heap_fill_tuple(tupleDescriptor, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1466 0.59 : 4705a8: 48 63 4d d0 movslq -0x30(%rbp),%rcx 0.50 : 4705ac: 31 d2 xor %edx,%edx 1.43 : 4705ae: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.59 : 4705b2: 49 8d 44 24 0f lea 0xf(%r12),%rax 0.50 : 4705b7: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.76 : 4705bb: 48 8b 75 c0 mov -0x40(%rbp),%rsi 1.51 : 4705bf: 4d 8d 4c 24 0c lea 0xc(%r12),%r9 0.59 : 4705c4: 4c 89 f7 mov %r14,%rdi 0.17 : 4705c7: 48 0f 45 d0 cmovne %rax,%rdx 2.18 : 4705cb: 49 8d 0c 0c lea (%r12,%rcx,1),%rcx 0.42 : 4705cf: 48 89 14 24 mov %rdx,(%rsp) 4.45 : 4705d3: 4c 89 fa mov %r15,%rdx 0.17 : 4705d6: e8 85 f9 ff ff callq 46ff60 : data_len, : &tuple->t_infomask, : (hasnull ? tuple->t_bits : NULL)); : : return tuple; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1475 4.28 : 4705db: 48 83 c4 28 add $0x28,%rsp 0.25 : 4705df: 4c 89 e0 mov %r12,%rax 0.67 : 4705e2: 5b pop %rbx 2.85 : 4705e3: 41 5c pop %r12 0.17 : 4705e5: 41 5d pop %r13 1.76 : 4705e7: 41 5e pop %r14 0.34 : 4705e9: 41 5f pop %r15 2.18 : 4705eb: c9 leaveq 3.02 : 4705ec: c3 retq 0.00 : 4705ed: 0f 1f 00 nopl (%rax) : * Determine total space needed : */ : len = offsetof(MinimalTupleData, t_bits); : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1440 0.92 : 4705f0: 41 8d 45 07 lea 0x7(%r13),%eax 0.25 : 4705f4: c6 45 d7 01 movb $0x1,-0x29(%rbp) 0.25 : 4705f8: c1 f8 03 sar $0x3,%eax 0.00 : 4705fb: 48 98 cltq 0.34 : 4705fd: 48 8d 50 0f lea 0xf(%rax),%rdx 0.17 : 470601: e9 3b ff ff ff jmpq 470541 : bool hasnull = false; : int numberOfAttributes = tupleDescriptor->natts; : int i; : : if (numberOfAttributes > MaxTupleAttributeNumber) : ereport(ERROR, 0.00 : 470606: 45 31 c0 xor %r8d,%r8d 0.00 : 470609: b9 90 f6 7a 00 mov $0x7af690,%ecx 0.00 : 47060e: ba 8c 05 00 00 mov $0x58c,%edx 0.00 : 470613: be f4 f5 7a 00 mov $0x7af5f4,%esi 0.00 : 470618: bf 14 00 00 00 mov $0x14,%edi 0.00 : 47061d: e8 9e a4 30 00 callq 77aac0 0.00 : 470622: 84 c0 test %al,%al 0.00 : 470624: 74 2b je 470651 0.00 : 470626: 44 89 ee mov %r13d,%esi 0.00 : 470629: ba 80 06 00 00 mov $0x680,%edx 0.00 : 47062e: bf e0 f7 7a 00 mov $0x7af7e0,%edi 0.00 : 470633: 31 c0 xor %eax,%eax 0.00 : 470635: e8 66 c2 30 00 callq 77c8a0 0.00 : 47063a: bf 05 01 04 01 mov $0x1040105,%edi 0.00 : 47063f: 89 c3 mov %eax,%ebx 0.00 : 470641: e8 0a c7 30 00 callq 77cd50 0.00 : 470646: 89 de mov %ebx,%esi 0.00 : 470648: 89 c7 mov %eax,%edi 0.00 : 47064a: 31 c0 xor %eax,%eax 0.00 : 47064c: e8 8f 9f 30 00 callq 77a5e0 0.00 : 470651: e8 7a 8e ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 33.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 14.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 13.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 2.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 1.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:317 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c6af0 : : PG_RETURN_BOOL(dateVal1 != dateVal2); : } : : Datum : date_lt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 33.12 : 6c6af0: 48 8b 47 28 mov 0x28(%rdi),%rax 35.31 : 6c6af4: 39 47 20 cmp %eax,0x20(%rdi) 13.23 : 6c6af7: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 2.50 : 6c6af8: 48 89 e5 mov %rsp,%rbp : DateADT dateVal1 = PG_GETARG_DATEADT(0); : DateADT dateVal2 = PG_GETARG_DATEADT(1); : : PG_RETURN_BOOL(dateVal1 < dateVal2); : } 0.21 : 6c6afb: c9 leaveq : PG_RETURN_BOOL(dateVal1 != dateVal2); : } : : Datum : date_lt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 14.27 : 6c6afc: 0f 9c c0 setl %al /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:317 1.35 : 6c6aff: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2873 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2889 3.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2865 3.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 3.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 3.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 3.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 2.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 2.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 2.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 2.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 2.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2897 1.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 1.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2897 1.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2868 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2875 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2892 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2897 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2897 1.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 1.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 1.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 1.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2865 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2872 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2876 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2892 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2876 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:134 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2897 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2897 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2865 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2874 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a0b10 : : * Routines specialized for HeapTuple (actually MinimalTuple) case : */ : : static int : comparetup_heap(const SortTuple *a, const SortTuple *b, Tuplesortstate *state) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2856 2.75 : 7a0b10: 55 push %rbp 0.38 : 7a0b11: 48 89 e5 mov %rsp,%rbp 0.53 : 7a0b14: 41 57 push %r15 1.98 : 7a0b16: 41 56 push %r14 0.53 : 7a0b18: 41 55 push %r13 1.22 : 7a0b1a: 41 54 push %r12 0.46 : 7a0b1c: 49 89 f4 mov %rsi,%r12 0.15 : 7a0b1f: 53 push %rbx 1.45 : 7a0b20: 48 89 fb mov %rdi,%rbx 0.00 : 7a0b23: 48 83 ec 58 sub $0x58,%rsp 0.53 : 7a0b27: 48 89 55 80 mov %rdx,-0x80(%rbp) : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 1.14 : 7a0b2b: 80 7b 10 00 cmpb $0x0,0x10(%rbx) : TupleDesc tupDesc; : int nkey; : int32 compare; : : /* Compare the leading sort key */ : compare = ApplySortComparator(a->datum1, a->isnull1, /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2865 3.81 : 7a0b2f: 0f b6 46 10 movzbl 0x10(%rsi),%eax : */ : : static int : comparetup_heap(const SortTuple *a, const SortTuple *b, Tuplesortstate *state) : { : SortSupport sortKey = state->sortKeys; 0.46 : 7a0b33: 4c 8b aa f8 00 00 00 mov 0xf8(%rdx),%r13 : TupleDesc tupDesc; : int nkey; : int32 compare; : : /* Compare the leading sort key */ : compare = ApplySortComparator(a->datum1, a->isnull1, 0.53 : 7a0b3a: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.99 : 7a0b3e: 48 8b 7f 08 mov 0x8(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 1.45 : 7a0b42: 0f 84 e8 02 00 00 je 7a0e30 : { : if (isNull2) 0.00 : 7a0b48: 84 c0 test %al,%al 0.00 : 7a0b4a: 0f 84 70 03 00 00 je 7a0ec0 : sortKey); : if (compare != 0) : return compare; : : /* Compare additional sort keys */ : ltup.t_len = ((MinimalTuple) a->tuple)->t_len + MINIMAL_TUPLE_OFFSET; 0.08 : 7a0b50: 48 8b 13 mov (%rbx),%rdx : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); : tupDesc = state->tupDesc; : sortKey++; : for (nkey = 1; nkey < state->nKeys; nkey++, sortKey++) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 1.22 : 7a0b53: 48 8b 4d 80 mov -0x80(%rbp),%rcx : sortKey); : if (compare != 0) : return compare; : : /* Compare additional sort keys */ : ltup.t_len = ((MinimalTuple) a->tuple)->t_len + MINIMAL_TUPLE_OFFSET; 0.31 : 7a0b57: 8b 02 mov (%rdx),%eax : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2873 12.28 : 7a0b59: 48 83 ea 08 sub $0x8,%rdx 0.00 : 7a0b5d: 48 89 55 c0 mov %rdx,-0x40(%rbp) : sortKey); : if (compare != 0) : return compare; : : /* Compare additional sort keys */ : ltup.t_len = ((MinimalTuple) a->tuple)->t_len + MINIMAL_TUPLE_OFFSET; 0.15 : 7a0b61: 83 c0 08 add $0x8,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2872 0.84 : 7a0b64: 89 45 b0 mov %eax,-0x50(%rbp) : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2874 0.53 : 7a0b67: 49 8b 14 24 mov (%r12),%rdx 0.00 : 7a0b6b: 8b 02 mov (%rdx),%eax : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2875 1.68 : 7a0b6d: 48 83 ea 08 sub $0x8,%rdx 0.00 : 7a0b71: 48 89 55 a0 mov %rdx,-0x60(%rbp) : return compare; : : /* Compare additional sort keys */ : ltup.t_len = ((MinimalTuple) a->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; 0.46 : 7a0b75: 83 c0 08 add $0x8,%eax 0.15 : 7a0b78: 89 45 90 mov %eax,-0x70(%rbp) : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); : tupDesc = state->tupDesc; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2876 0.84 : 7a0b7b: 48 8b 45 80 mov -0x80(%rbp),%rax 0.08 : 7a0b7f: 48 8b 80 f0 00 00 00 mov 0xf0(%rax),%rax 0.69 : 7a0b86: 48 89 45 88 mov %rax,-0x78(%rbp) : sortKey++; : for (nkey = 1; nkey < state->nKeys; nkey++, sortKey++) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 1.22 : 7a0b8a: 83 79 04 01 cmpl $0x1,0x4(%rcx) 0.08 : 7a0b8e: 0f 8e 74 03 00 00 jle 7a0f08 : ltup.t_len = ((MinimalTuple) a->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); : tupDesc = state->tupDesc; : sortKey++; 0.08 : 7a0b94: 49 83 c5 20 add $0x20,%r13 0.15 : 7a0b98: 41 bf 01 00 00 00 mov $0x1,%r15d : for (nkey = 1; nkey < state->nKeys; nkey++, sortKey++) : { : AttrNumber attno = sortKey->ssup_attno; 0.46 : 7a0b9e: 41 0f b7 5d 0e movzwl 0xe(%r13),%ebx : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); 0.00 : 7a0ba3: 66 85 db test %bx,%bx 0.00 : 7a0ba6: 0f 8e 00 01 00 00 jle 7a0cac 0.00 : 7a0bac: 0f 1f 40 00 nopl 0x0(%rax) 0.15 : 7a0bb0: 48 8b 75 c0 mov -0x40(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 0.69 : 7a0bb4: 44 0f bf e3 movswl %bx,%r12d 0.00 : 7a0bb8: 0f b7 46 12 movzwl 0x12(%rsi),%eax 0.15 : 7a0bbc: 25 ff 07 00 00 and $0x7ff,%eax 0.76 : 7a0bc1: 41 39 c4 cmp %eax,%r12d 0.00 : 7a0bc4: 0f 8f 84 00 00 00 jg 7a0c4e 0.76 : 7a0bca: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 7a0bce: f6 46 14 01 testb $0x1,0x14(%rsi) 0.00 : 7a0bd2: 75 5c jne 7a0c30 0.53 : 7a0bd4: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.84 : 7a0bd8: 48 0f bf d3 movswq %bx,%rdx 0.00 : 7a0bdc: 48 8b 41 08 mov 0x8(%rcx),%rax 3.43 : 7a0be0: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 4.20 : 7a0be5: 8b 42 54 mov 0x54(%rdx),%eax 3.59 : 7a0be8: 85 c0 test %eax,%eax 0.00 : 7a0bea: 0f 88 c8 01 00 00 js 7a0db8 0.08 : 7a0bf0: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 7a0bf4: 0f 84 1e 02 00 00 je 7a0e18 0.00 : 7a0bfa: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 7a0bfe: 66 83 fa 08 cmp $0x8,%dx 0.00 : 7a0c02: 0f 84 58 02 00 00 je 7a0e60 0.00 : 7a0c08: 66 83 fa 04 cmp $0x4,%dx 0.00 : 7a0c0c: 0f 84 de 02 00 00 je 7a0ef0 0.00 : 7a0c12: 66 83 fa 02 cmp $0x2,%dx 0.00 : 7a0c16: 0f 84 74 02 00 00 je 7a0e90 0.00 : 7a0c1c: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0c20: 48 98 cltq 0.00 : 7a0c22: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0c26: 44 0f b6 34 10 movzbl (%rax,%rdx,1),%r14d 0.00 : 7a0c2b: eb 28 jmp 7a0c55 0.00 : 7a0c2d: 0f 1f 00 nopl (%rax) 0.00 : 7a0c30: 41 8d 4c 24 ff lea -0x1(%r12),%ecx 0.00 : 7a0c35: 89 c8 mov %ecx,%eax 0.00 : 7a0c37: 83 e1 07 and $0x7,%ecx 0.00 : 7a0c3a: c1 f8 03 sar $0x3,%eax 0.00 : 7a0c3d: 48 98 cltq 0.00 : 7a0c3f: 0f b6 44 06 17 movzbl 0x17(%rsi,%rax,1),%eax 0.00 : 7a0c44: d3 f8 sar %cl,%eax 0.00 : 7a0c46: a8 01 test $0x1,%al 0.00 : 7a0c48: 0f 85 6a 01 00 00 jne 7a0db8 0.00 : 7a0c4e: c6 45 cf 01 movb $0x1,-0x31(%rbp) 0.00 : 7a0c52: 45 31 f6 xor %r14d,%r14d : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.92 : 7a0c55: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.76 : 7a0c59: 0f b7 46 12 movzwl 0x12(%rsi),%eax 2.14 : 7a0c5d: 25 ff 07 00 00 and $0x7ff,%eax 0.69 : 7a0c62: 41 39 c4 cmp %eax,%r12d 0.00 : 7a0c65: 0f 8e ad 00 00 00 jle 7a0d18 0.00 : 7a0c6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a0c70: c6 45 ce 01 movb $0x1,-0x32(%rbp) 0.00 : 7a0c74: 31 c0 xor %eax,%eax : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 1.07 : 7a0c76: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : : compare = ApplySortComparator(datum1, isnull1, /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2889 4.20 : 7a0c7a: 0f b6 55 ce movzbl -0x32(%rbp),%edx 0.00 : 7a0c7e: 74 68 je 7a0ce8 : { : if (isNull2) 0.00 : 7a0c80: 84 d2 test %dl,%dl 0.00 : 7a0c82: 0f 84 38 02 00 00 je 7a0ec0 : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); : tupDesc = state->tupDesc; : sortKey++; : for (nkey = 1; nkey < state->nKeys; nkey++, sortKey++) 0.38 : 7a0c88: 48 8b 45 80 mov -0x80(%rbp),%rax 0.08 : 7a0c8c: 41 83 c7 01 add $0x1,%r15d 0.00 : 7a0c90: 44 39 78 04 cmp %r15d,0x4(%rax) 0.00 : 7a0c94: 0f 8e 6e 02 00 00 jle 7a0f08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 0.69 : 7a0c9a: 49 83 c5 20 add $0x20,%r13 : { : AttrNumber attno = sortKey->ssup_attno; 0.00 : 7a0c9e: 41 0f b7 5d 0e movzwl 0xe(%r13),%ebx : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); 0.00 : 7a0ca3: 66 85 db test %bx,%bx 0.00 : 7a0ca6: 0f 8f 04 ff ff ff jg 7a0bb0 0.00 : 7a0cac: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 7a0cb0: 0f bf db movswl %bx,%ebx 0.00 : 7a0cb3: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 7a0cb7: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 7a0cbb: 89 de mov %ebx,%esi 0.00 : 7a0cbd: e8 0e e0 cc ff callq 46ecd0 : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); 0.00 : 7a0cc2: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 7a0cc6: 48 8d 4d ce lea -0x32(%rbp),%rcx 0.00 : 7a0cca: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 7a0cce: 89 de mov %ebx,%esi : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); 0.00 : 7a0cd0: 49 89 c6 mov %rax,%r14 : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); 0.00 : 7a0cd3: e8 f8 df cc ff callq 46ecd0 : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) 0.00 : 7a0cd8: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : : compare = ApplySortComparator(datum1, isnull1, 0.00 : 7a0cdc: 0f b6 55 ce movzbl -0x32(%rbp),%edx 0.00 : 7a0ce0: 75 9e jne 7a0c80 0.00 : 7a0ce2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:134 0.69 : 7a0ce8: 84 d2 test %dl,%dl 0.00 : 7a0cea: 0f 84 e0 00 00 00 je 7a0dd0 : { : if (ssup->ssup_nulls_first) 0.00 : 7a0cf0: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a0cf5: 0f 84 d0 01 00 00 je 7a0ecb : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); : tupDesc = state->tupDesc; : sortKey++; : for (nkey = 1; nkey < state->nKeys; nkey++, sortKey++) 0.00 : 7a0cfb: ba 01 00 00 00 mov $0x1,%edx : if (compare != 0) : return compare; : } : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2897 0.61 : 7a0d00: 48 83 c4 58 add $0x58,%rsp 1.30 : 7a0d04: 89 d0 mov %edx,%eax 0.38 : 7a0d06: 5b pop %rbx 1.75 : 7a0d07: 41 5c pop %r12 0.00 : 7a0d09: 41 5d pop %r13 1.30 : 7a0d0b: 41 5e pop %r14 0.08 : 7a0d0d: 41 5f pop %r15 0.69 : 7a0d0f: c9 leaveq 2.14 : 7a0d10: c3 retq 0.00 : 7a0d11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2887 0.76 : 7a0d18: c6 45 ce 00 movb $0x0,-0x32(%rbp) 0.00 : 7a0d1c: f6 46 14 01 testb $0x1,0x14(%rsi) 0.00 : 7a0d20: 75 5e jne 7a0d80 0.08 : 7a0d22: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.61 : 7a0d26: 48 0f bf d3 movswq %bx,%rdx 0.00 : 7a0d2a: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 7a0d2e: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 2.36 : 7a0d33: 8b 42 54 mov 0x54(%rdx),%eax 3.59 : 7a0d36: 85 c0 test %eax,%eax 0.00 : 7a0d38: 78 64 js 7a0d9e 0.00 : 7a0d3a: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 7a0d3e: 0f 84 bc 00 00 00 je 7a0e00 0.00 : 7a0d44: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 7a0d48: 66 83 fa 08 cmp $0x8,%dx 0.00 : 7a0d4c: 0f 84 26 01 00 00 je 7a0e78 0.00 : 7a0d52: 66 83 fa 04 cmp $0x4,%dx 0.00 : 7a0d56: 0f 84 7c 01 00 00 je 7a0ed8 0.00 : 7a0d5c: 66 83 fa 02 cmp $0x2,%dx 0.00 : 7a0d60: 0f 84 42 01 00 00 je 7a0ea8 0.00 : 7a0d66: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0d6a: 48 98 cltq 0.00 : 7a0d6c: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0d70: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 7a0d74: e9 fd fe ff ff jmpq 7a0c76 0.00 : 7a0d79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7a0d80: 41 8d 4c 24 ff lea -0x1(%r12),%ecx 0.00 : 7a0d85: 89 c8 mov %ecx,%eax 0.00 : 7a0d87: 83 e1 07 and $0x7,%ecx 0.00 : 7a0d8a: c1 f8 03 sar $0x3,%eax 0.00 : 7a0d8d: 48 98 cltq 0.00 : 7a0d8f: 0f b6 44 06 17 movzbl 0x17(%rsi,%rax,1),%eax 0.00 : 7a0d94: d3 f8 sar %cl,%eax 0.00 : 7a0d96: a8 01 test $0x1,%al 0.00 : 7a0d98: 0f 84 d2 fe ff ff je 7a0c70 0.61 : 7a0d9e: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 7a0da2: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 7a0da6: 44 89 e6 mov %r12d,%esi 0.00 : 7a0da9: e8 e2 eb cc ff callq 46f990 0.76 : 7a0dae: e9 c3 fe ff ff jmpq 7a0c76 0.00 : 7a0db3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2886 1.22 : 7a0db8: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 7a0dbc: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 7a0dc0: 44 89 e6 mov %r12d,%esi 0.00 : 7a0dc3: e8 c8 eb cc ff callq 46f990 0.76 : 7a0dc8: 49 89 c6 mov %rax,%r14 0.00 : 7a0dcb: e9 85 fe ff ff jmpq 7a0c55 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 0.92 : 7a0dd0: 4c 89 ea mov %r13,%rdx 0.00 : 7a0dd3: 48 89 c6 mov %rax,%rsi 0.00 : 7a0dd6: 4c 89 f7 mov %r14,%rdi 0.00 : 7a0dd9: 41 ff 55 18 callq *0x18(%r13) 1.14 : 7a0ddd: 89 c2 mov %eax,%edx : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a0ddf: f7 d8 neg %eax 0.15 : 7a0de1: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 2.21 : 7a0de6: 0f 45 d0 cmovne %eax,%edx : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); : : compare = ApplySortComparator(datum1, isnull1, : datum2, isnull2, : sortKey); : if (compare != 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2892 1.53 : 7a0de9: 85 d2 test %edx,%edx 0.00 : 7a0deb: 0f 84 97 fe ff ff je 7a0c88 0.84 : 7a0df1: e9 0a ff ff ff jmpq 7a0d00 0.00 : 7a0df6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a0dfd: 00 00 00 : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); 0.00 : 7a0e00: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0e04: 48 98 cltq 0.00 : 7a0e06: 48 01 d0 add %rdx,%rax 0.00 : 7a0e09: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0e0d: e9 64 fe ff ff jmpq 7a0c76 0.00 : 7a0e12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); 0.00 : 7a0e18: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0e1c: 48 98 cltq 0.00 : 7a0e1e: 48 01 d0 add %rdx,%rax 0.00 : 7a0e21: 4c 8d 34 06 lea (%rsi,%rax,1),%r14 0.00 : 7a0e25: e9 2b fe ff ff jmpq 7a0c55 0.00 : 7a0e2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.31 : 7a0e30: 84 c0 test %al,%al 0.00 : 7a0e32: 0f 85 b8 fe ff ff jne 7a0cf0 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 7a0e38: 4c 89 ea mov %r13,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 0.99 : 7a0e3b: 41 ff 55 18 callq *0x18(%r13) 3.66 : 7a0e3f: 89 c2 mov %eax,%edx : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a0e41: f7 d8 neg %eax 0.00 : 7a0e43: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) 0.00 : 7a0e48: 0f 45 d0 cmovne %eax,%edx : : /* Compare the leading sort key */ : compare = ApplySortComparator(a->datum1, a->isnull1, : b->datum1, b->isnull1, : sortKey); : if (compare != 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2868 1.75 : 7a0e4b: 85 d2 test %edx,%edx 0.00 : 7a0e4d: 0f 85 ad fe ff ff jne 7a0d00 0.31 : 7a0e53: e9 f8 fc ff ff jmpq 7a0b50 0.00 : 7a0e58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a0e5f: 00 : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); 0.00 : 7a0e60: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0e64: 48 98 cltq 0.00 : 7a0e66: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0e6a: 4c 8b 34 10 mov (%rax,%rdx,1),%r14 0.00 : 7a0e6e: e9 e2 fd ff ff jmpq 7a0c55 0.00 : 7a0e73: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); 0.00 : 7a0e78: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0e7c: 48 98 cltq 0.00 : 7a0e7e: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0e82: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 7a0e86: e9 eb fd ff ff jmpq 7a0c76 0.00 : 7a0e8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); 0.00 : 7a0e90: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0e94: 48 98 cltq 0.00 : 7a0e96: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0e9a: 44 0f b7 34 10 movzwl (%rax,%rdx,1),%r14d 0.00 : 7a0e9f: e9 b1 fd ff ff jmpq 7a0c55 0.00 : 7a0ea4: 0f 1f 40 00 nopl 0x0(%rax) : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); 0.00 : 7a0ea8: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0eac: 48 98 cltq 0.00 : 7a0eae: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0eb2: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax 0.00 : 7a0eb6: e9 bb fd ff ff jmpq 7a0c76 0.00 : 7a0ebb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a0ec0: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a0ec5: 0f 84 30 fe ff ff je 7a0cfb : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); : tupDesc = state->tupDesc; : sortKey++; : for (nkey = 1; nkey < state->nKeys; nkey++, sortKey++) 0.00 : 7a0ecb: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 7a0ed0: e9 2b fe ff ff jmpq 7a0d00 0.00 : 7a0ed5: 0f 1f 00 nopl (%rax) : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); : datum2 = heap_getattr(&rtup, attno, tupDesc, &isnull2); 0.00 : 7a0ed8: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0edc: 48 98 cltq 0.00 : 7a0ede: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0ee2: 8b 04 10 mov (%rax,%rdx,1),%eax 0.00 : 7a0ee5: e9 8c fd ff ff jmpq 7a0c76 0.00 : 7a0eea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = heap_getattr(<up, attno, tupDesc, &isnull1); 0.00 : 7a0ef0: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 7a0ef4: 48 98 cltq 0.00 : 7a0ef6: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 7a0efa: 44 8b 34 10 mov (%rax,%rdx,1),%r14d 0.00 : 7a0efe: e9 52 fd ff ff jmpq 7a0c55 0.00 : 7a0f03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); : rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; : rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); : tupDesc = state->tupDesc; : sortKey++; : for (nkey = 1; nkey < state->nKeys; nkey++, sortKey++) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2878 0.76 : 7a0f08: 31 d2 xor %edx,%edx 0.00 : 7a0f0a: e9 f1 fd ff ff jmpq 7a0d00 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 71.29 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:206 4.02 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:206 2.34 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:230 1.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:243 1.68 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:248 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:199 0.95 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:248 0.88 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:233 0.88 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:248 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:199 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:199 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:204 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:212 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:243 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:233 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:233 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:248 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004acf70 <_bt_moveright>: : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 0.73 : 4acf70: 55 push %rbp : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:199 0.73 : 4acf71: 31 c0 xor %eax,%eax : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { 0.22 : 4acf73: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 0.73 : 4acf76: 41 57 push %r15 0.29 : 4acf78: 45 89 cf mov %r9d,%r15d 0.51 : 4acf7b: 41 56 push %r14 0.29 : 4acf7d: 41 55 push %r13 0.73 : 4acf7f: 49 89 fd mov %rdi,%r13 0.07 : 4acf82: 41 54 push %r12 0.07 : 4acf84: 41 89 f4 mov %esi,%r12d 0.44 : 4acf87: 53 push %rbx 0.58 : 4acf88: 48 83 ec 18 sub $0x18,%rsp : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; 0.15 : 4acf8c: 45 84 c0 test %r8b,%r8b : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { 0.29 : 4acf8f: 44 8b 75 18 mov 0x18(%rbp),%r14d : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:199 0.80 : 4acf93: 0f 94 c0 sete %al : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { 0.00 : 4acf96: 89 55 cc mov %edx,-0x34(%rbp) 0.22 : 4acf99: 48 89 4d c0 mov %rcx,-0x40(%rbp) : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; 1.17 : 4acf9d: 89 45 d0 mov %eax,-0x30(%rbp) : : for (;;) : { : page = BufferGetPage(buf); 0.44 : 4acfa0: 45 85 e4 test %r12d,%r12d 0.00 : 4acfa3: 78 70 js 4ad015 <_bt_moveright+0xa5> 0.00 : 4acfa5: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.07 : 4acfaa: 48 63 c8 movslq %eax,%rcx 0.44 : 4acfad: 48 c1 e1 0d shl $0xd,%rcx 0.44 : 4acfb1: 48 03 0d 40 2b 71 00 add 0x712b40(%rip),%rcx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.15 : 4acfb8: 0f b7 41 10 movzwl 0x10(%rcx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:204 0.73 : 4acfbc: 48 8d 1c 01 lea (%rcx,%rax,1),%rbx : : if (P_RIGHTMOST(opaque)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:206 4.02 : 4acfc0: 8b 53 04 mov 0x4(%rbx),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:206 71.29 : 4acfc3: 85 d2 test %edx,%edx 0.00 : 4acfc5: 74 6f je 4ad036 <_bt_moveright+0xc6> : break; : : /* : * Finish any incomplete splits we encounter along the way. : */ : if (forupdate && P_INCOMPLETE_SPLIT(opaque)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:212 0.66 : 4acfc7: 45 84 ff test %r15b,%r15b 0.00 : 4acfca: 0f 84 88 00 00 00 je 4ad058 <_bt_moveright+0xe8> 0.00 : 4acfd0: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4acfd4: 84 c0 test %al,%al 0.00 : 4acfd6: 0f 88 8c 00 00 00 js 4ad068 <_bt_moveright+0xf8> : /* re-acquire the lock in the right mode, and re-check */ : buf = _bt_getbuf(rel, blkno, access); : continue; : } : : if (P_IGNORE(opaque) || _bt_compare(rel, keysz, scankey, page, P_HIKEY) >= cmpval) 0.37 : 4acfdc: a8 14 test $0x14,%al /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:233 0.58 : 4acfde: 66 90 xchg %ax,%ax 0.00 : 4acfe0: 75 1d jne 4acfff <_bt_moveright+0x8f> 0.88 : 4acfe2: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.44 : 4acfe6: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 4acfe9: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4acfef: 4c 89 ef mov %r13,%rdi 0.58 : 4acff2: e8 59 fc ff ff callq 4acc50 <_bt_compare> 0.37 : 4acff7: 39 45 d0 cmp %eax,-0x30(%rbp) 0.00 : 4acffa: 7f 3a jg 4ad036 <_bt_moveright+0xc6> 0.00 : 4acffc: 8b 53 04 mov 0x4(%rbx),%edx : { : /* step right one page */ : buf = _bt_relandgetbuf(rel, buf, opaque->btpo_next, access); 0.00 : 4acfff: 44 89 e6 mov %r12d,%esi 0.00 : 4ad002: 44 89 f1 mov %r14d,%ecx 0.00 : 4ad005: 4c 89 ef mov %r13,%rdi 0.00 : 4ad008: e8 d3 bf ff ff callq 4a8fe0 <_bt_relandgetbuf> 0.00 : 4ad00d: 41 89 c4 mov %eax,%r12d : */ : cmpval = nextkey ? 0 : 1; : : for (;;) : { : page = BufferGetPage(buf); 0.00 : 4ad010: 45 85 e4 test %r12d,%r12d 0.00 : 4ad013: 79 90 jns 4acfa5 <_bt_moveright+0x35> 0.00 : 4ad015: 48 8b 15 fc 00 6d 00 mov 0x6d00fc(%rip),%rdx # b7d118 0.00 : 4ad01c: 44 89 e0 mov %r12d,%eax 0.00 : 4ad01f: f7 d0 not %eax 0.00 : 4ad021: 48 98 cltq 0.00 : 4ad023: 48 8b 0c c2 mov (%rdx,%rax,8),%rcx : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ad027: 0f b7 41 10 movzwl 0x10(%rcx),%eax 0.00 : 4ad02b: 48 8d 1c 01 lea (%rcx,%rax,1),%rbx : : if (P_RIGHTMOST(opaque)) 0.00 : 4ad02f: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 4ad032: 85 d2 test %edx,%edx 0.00 : 4ad034: 75 91 jne 4acfc7 <_bt_moveright+0x57> : } : else : break; : } : : if (P_IGNORE(opaque)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:243 1.90 : 4ad036: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.66 : 4ad03a: a8 14 test $0x14,%al 0.37 : 4ad03c: 0f 85 8f 00 00 00 jne 4ad0d1 <_bt_moveright+0x161> : elog(ERROR, "fell off the end of index \"%s\"", : RelationGetRelationName(rel)); : : return buf; : } 0.37 : 4ad042: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:248 0.95 : 4ad046: 44 89 e0 mov %r12d,%eax 0.00 : 4ad049: 5b pop %rbx 0.88 : 4ad04a: 41 5c pop %r12 0.22 : 4ad04c: 41 5d pop %r13 0.51 : 4ad04e: 41 5e pop %r14 0.07 : 4ad050: 41 5f pop %r15 0.44 : 4ad052: c9 leaveq 1.68 : 4ad053: c3 retq 0.00 : 4ad054: 0f 1f 40 00 nopl 0x0(%rax) : else : _bt_relbuf(rel, buf); : : /* re-acquire the lock in the right mode, and re-check */ : buf = _bt_getbuf(rel, blkno, access); : continue; 0.15 : 4ad058: 0f b7 43 0c movzwl 0xc(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:230 2.34 : 4ad05c: e9 7b ff ff ff jmpq 4acfdc <_bt_moveright+0x6c> 0.00 : 4ad061: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Finish any incomplete splits we encounter along the way. : */ : if (forupdate && P_INCOMPLETE_SPLIT(opaque)) : { : BlockNumber blkno = BufferGetBlockNumber(buf); 0.00 : 4ad068: 44 89 e7 mov %r12d,%edi 0.00 : 4ad06b: e8 c0 6f 1c 00 callq 674030 : : /* upgrade our lock if necessary */ : if (access == BT_READ) 0.00 : 4ad070: 41 83 fe 01 cmp $0x1,%r14d : /* : * Finish any incomplete splits we encounter along the way. : */ : if (forupdate && P_INCOMPLETE_SPLIT(opaque)) : { : BlockNumber blkno = BufferGetBlockNumber(buf); 0.00 : 4ad074: 89 45 d4 mov %eax,-0x2c(%rbp) : : /* upgrade our lock if necessary */ : if (access == BT_READ) 0.00 : 4ad077: 74 3f je 4ad0b8 <_bt_moveright+0x148> : { : LockBuffer(buf, BUFFER_LOCK_UNLOCK); : LockBuffer(buf, BT_WRITE); : } : : if (P_INCOMPLETE_SPLIT(opaque)) 0.00 : 4ad079: 80 7b 0c 00 cmpb $0x0,0xc(%rbx) 0.00 : 4ad07d: 79 29 jns 4ad0a8 <_bt_moveright+0x138> : _bt_finish_split(rel, buf, stack); 0.00 : 4ad07f: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 4ad083: 44 89 e6 mov %r12d,%esi 0.00 : 4ad086: 4c 89 ef mov %r13,%rdi 0.00 : 4ad089: e8 52 aa ff ff callq 4a7ae0 <_bt_finish_split> : else : _bt_relbuf(rel, buf); : : /* re-acquire the lock in the right mode, and re-check */ : buf = _bt_getbuf(rel, blkno, access); 0.00 : 4ad08e: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 4ad091: 44 89 f2 mov %r14d,%edx 0.00 : 4ad094: 4c 89 ef mov %r13,%rdi 0.00 : 4ad097: e8 b4 bf ff ff callq 4a9050 <_bt_getbuf> 0.00 : 4ad09c: 41 89 c4 mov %eax,%r12d : continue; 0.00 : 4ad09f: e9 fc fe ff ff jmpq 4acfa0 <_bt_moveright+0x30> 0.00 : 4ad0a4: 0f 1f 40 00 nopl 0x0(%rax) : } : : if (P_INCOMPLETE_SPLIT(opaque)) : _bt_finish_split(rel, buf, stack); : else : _bt_relbuf(rel, buf); 0.00 : 4ad0a8: 44 89 e6 mov %r12d,%esi 0.00 : 4ad0ab: 4c 89 ef mov %r13,%rdi 0.00 : 4ad0ae: e8 1d bf ff ff callq 4a8fd0 <_bt_relbuf> 0.00 : 4ad0b3: eb d9 jmp 4ad08e <_bt_moveright+0x11e> 0.00 : 4ad0b5: 0f 1f 00 nopl (%rax) : BlockNumber blkno = BufferGetBlockNumber(buf); : : /* upgrade our lock if necessary */ : if (access == BT_READ) : { : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 4ad0b8: 31 f6 xor %esi,%esi 0.00 : 4ad0ba: 44 89 e7 mov %r12d,%edi 0.00 : 4ad0bd: e8 4e 76 1c 00 callq 674710 : LockBuffer(buf, BT_WRITE); 0.00 : 4ad0c2: be 02 00 00 00 mov $0x2,%esi 0.00 : 4ad0c7: 44 89 e7 mov %r12d,%edi 0.00 : 4ad0ca: e8 41 76 1c 00 callq 674710 0.00 : 4ad0cf: eb a8 jmp 4ad079 <_bt_moveright+0x109> : else : break; : } : : if (P_IGNORE(opaque)) : elog(ERROR, "fell off the end of index \"%s\"", 0.00 : 4ad0d1: ba f6 48 7b 00 mov $0x7b48f6,%edx 0.00 : 4ad0d6: be f5 00 00 00 mov $0xf5,%esi 0.00 : 4ad0db: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4ad0e0: e8 3b e3 2c 00 callq 77b420 0.00 : 4ad0e5: 49 8b 55 30 mov 0x30(%r13),%rdx 0.00 : 4ad0e9: be 60 41 7b 00 mov $0x7b4160,%esi 0.00 : 4ad0ee: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ad0f3: 31 c0 xor %eax,%eax 0.00 : 4ad0f5: e8 36 e1 2c 00 callq 77b230 0.00 : 4ad0fa: e8 d1 c3 fb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:806 5.89 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:515 5.34 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:890 4.03 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:687 3.80 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1645 3.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:718 3.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:858 3.10 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:858 2.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:492 2.32 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:492 2.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:858 1.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:948 1.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:509 1.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:718 1.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:858 1.55 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:965 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:521 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:521 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:634 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:976 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1013 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:965 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:667 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:667 1.16 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:958 1.16 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1002 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:492 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:628 1.08 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:940 1.01 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:964 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:492 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:628 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:702 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:750 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:997 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1002 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1016 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:595 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:811 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:946 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:973 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:493 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:593 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:940 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1013 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1017 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1022 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:712 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:940 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:962 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1018 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:492 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:509 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:515 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:648 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ad290 <_bt_first>: : * Within this routine, we build a temporary insertion-type scankey to use : * in locating the scan start position. : */ : bool : _bt_first(IndexScanDesc scan, ScanDirection dir) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:492 1.08 : 4ad290: 55 push %rbp 2.32 : 4ad291: 48 89 e5 mov %rsp,%rbp 0.00 : 4ad294: 41 57 push %r15 0.93 : 4ad296: 41 56 push %r14 0.31 : 4ad298: 41 55 push %r13 0.54 : 4ad29a: 41 54 push %r12 0.08 : 4ad29c: 53 push %rbx 0.46 : 4ad29d: 48 81 ec 68 13 00 00 sub $0x1368,%rsp 0.00 : 4ad2a4: 48 89 bd a0 ec ff ff mov %rdi,-0x1360(%rbp) 2.63 : 4ad2ab: 89 b5 9c ec ff ff mov %esi,-0x1364(%rbp) : Relation rel = scan->indexRelation; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:493 0.70 : 4ad2b1: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 4ad2b5: 48 89 85 a8 ec ff ff mov %rax,-0x1358(%rbp) : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.46 : 4ad2bc: 48 8b 57 38 mov 0x38(%rdi),%rdx 0.08 : 4ad2c0: 48 89 95 b0 ec ff ff mov %rdx,-0x1350(%rbp) : int keysCount = 0; : int i; : StrategyNumber strat_total; : BTScanPosItem *currItem; : : pgstat_count_index_scan(rel); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:509 0.54 : 4ad2c7: 48 8b 80 38 01 00 00 mov 0x138(%rax),%rax 1.63 : 4ad2ce: 48 85 c0 test %rax,%rax 0.00 : 4ad2d1: 74 05 je 4ad2d8 <_bt_first+0x48> 0.15 : 4ad2d3: 48 83 40 10 01 addq $0x1,0x10(%rax) : : /* : * Examine the scan keys and eliminate any redundant keys; also mark the : * keys that must be matched to continue the scan. : */ : _bt_preprocess_keys(scan); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:515 5.89 : 4ad2d8: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:515 0.54 : 4ad2df: e8 ec 18 00 00 callq 4aebd0 <_bt_preprocess_keys> : : /* : * Quit now if _bt_preprocess_keys() discovered that the scan keys can : * never be satisfied (eg, x == 1 AND x > 2). : */ : if (!so->qual_ok) 0.39 : 4ad2e4: 48 8b 85 b0 ec ff ff mov -0x1350(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:521 1.39 : 4ad2eb: 80 38 00 cmpb $0x0,(%rax) 1.39 : 4ad2ee: 0f 84 cc 00 00 00 je 4ad3c0 <_bt_first+0x130> : * The selected scan keys (at most one per index column) are remembered by : * storing their addresses into the local startKeys[] array. : *---------- : */ : strat_total = BTEqualStrategyNumber; : if (so->numberOfKeys > 0) 0.15 : 4ad2f4: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 4ad2f7: 85 d2 test %edx,%edx 0.00 : 4ad2f9: 0f 8e 31 04 00 00 jle 4ad730 <_bt_first+0x4a0> : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last : * pass to handle after-last-key processing. Actual exit from the : * loop is at one of the "break" statements below. : */ : for (cur = so->keyData, i = 0;; cur++, i++) 0.23 : 4ad2ff: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 4ad303: 45 31 ff xor %r15d,%r15d 0.23 : 4ad306: 45 31 ed xor %r13d,%r13d 0.00 : 4ad309: 66 c7 85 be ec ff ff movw $0x3,-0x1342(%rbp) 0.00 : 4ad310: 03 00 0.23 : 4ad312: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4ad318: 31 db xor %ebx,%ebx 0.08 : 4ad31a: 31 f6 xor %esi,%esi 0.00 : 4ad31c: 0f 1f 40 00 nopl 0x0(%rax) : { : if (i >= so->numberOfKeys || cur->sk_attno != curattr) 0.39 : 4ad320: 41 39 d5 cmp %edx,%r13d 0.00 : 4ad323: 7d 0c jge 4ad331 <_bt_first+0xa1> 0.00 : 4ad325: 41 0f b7 4c 24 04 movzwl 0x4(%r12),%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:595 0.77 : 4ad32b: 66 44 39 f1 cmp %r14w,%cx 0.00 : 4ad32f: 74 74 je 4ad3a5 <_bt_first+0x115> : { : /* : * Done looking at keys for curattr. If we didn't find a : * usable boundary key, see if we can deduce a NOT NULL key. : */ : if (chosen == NULL && impliesNN != NULL && 0.31 : 4ad331: 48 85 db test %rbx,%rbx 0.00 : 4ad334: 0f 84 fe 00 00 00 je 4ad438 <_bt_first+0x1a8> : * If we still didn't find a usable boundary key, quit; else : * save the boundary key pointer in startKeys. : */ : if (chosen == NULL) : break; : startKeys[keysCount++] = chosen; 0.00 : 4ad33a: 49 63 c7 movslq %r15d,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:628 1.08 : 4ad33d: 41 83 c7 01 add $0x1,%r15d 0.93 : 4ad341: 48 89 9c c5 c0 fe ff mov %rbx,-0x140(%rbp,%rax,8) 0.00 : 4ad348: ff : : /* : * Adjust strat_total, and quit if we have stored a > or < : * key. : */ : strat = chosen->sk_strategy; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:634 1.39 : 4ad349: 0f b7 43 06 movzwl 0x6(%rbx),%eax : if (strat != BTEqualStrategyNumber) 0.00 : 4ad34d: 66 83 f8 03 cmp $0x3,%ax 0.00 : 4ad351: 74 1b je 4ad36e <_bt_first+0xde> : { : strat_total = strat; : if (strat == BTGreaterStrategyNumber || 0.00 : 4ad353: 66 83 f8 05 cmp $0x5,%ax 0.00 : 4ad357: 0f 84 33 05 00 00 je 4ad890 <_bt_first+0x600> 0.00 : 4ad35d: 66 83 f8 01 cmp $0x1,%ax 0.00 : 4ad361: 0f 84 29 05 00 00 je 4ad890 <_bt_first+0x600> : strat == BTLessStrategyNumber) : break; 0.00 : 4ad367: 66 89 85 be ec ff ff mov %ax,-0x1342(%rbp) : /* : * Done if that was the last attribute, or if next key is not : * in sequence (implying no boundary key is available for the : * next attribute). : */ : if (i >= so->numberOfKeys || 0.00 : 4ad36e: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:648 0.54 : 4ad375: 44 3b 6a 04 cmp 0x4(%rdx),%r13d 0.00 : 4ad379: 0f 8d e0 00 00 00 jge 4ad45f <_bt_first+0x1cf> 0.00 : 4ad37f: 41 0f b7 4c 24 04 movzwl 0x4(%r12),%ecx 0.00 : 4ad385: 41 0f bf c6 movswl %r14w,%eax 0.00 : 4ad389: 83 c0 01 add $0x1,%eax 0.00 : 4ad38c: 0f bf d1 movswl %cx,%edx 0.00 : 4ad38f: 39 c2 cmp %eax,%edx 0.00 : 4ad391: 0f 85 c8 00 00 00 jne 4ad45f <_bt_first+0x1cf> 0.00 : 4ad397: 48 8b 85 b0 ec ff ff mov -0x1350(%rbp),%rax 0.00 : 4ad39e: 31 db xor %ebx,%ebx 0.00 : 4ad3a0: 31 f6 xor %esi,%esi 0.00 : 4ad3a2: 8b 50 04 mov 0x4(%rax),%edx : * : * If not, does it imply a NOT NULL constraint? (Because : * SK_SEARCHNULL keys are always assigned BTEqualStrategyNumber, : * *any* inequality key works for that; we need not test.) : */ : switch (cur->sk_strategy) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:667 1.24 : 4ad3a5: 66 41 83 7c 24 06 05 cmpw $0x5,0x6(%r12) 1.24 : 4ad3ac: 77 4a ja 4ad3f8 <_bt_first+0x168> 0.15 : 4ad3ae: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 4ad3b4: ff 24 c5 60 48 7b 00 jmpq *0x7b4860(,%rax,8) 0.00 : 4ad3bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad3c0: 31 d2 xor %edx,%edx : : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1022 0.62 : 4ad3c2: 48 81 c4 68 13 00 00 add $0x1368,%rsp 0.00 : 4ad3c9: 89 d0 mov %edx,%eax 0.00 : 4ad3cb: 5b pop %rbx 0.39 : 4ad3cc: 41 5c pop %r12 0.08 : 4ad3ce: 41 5d pop %r13 0.08 : 4ad3d0: 41 5e pop %r14 0.00 : 4ad3d2: 41 5f pop %r15 0.23 : 4ad3d4: c9 leaveq 0.00 : 4ad3d5: c3 retq 0.00 : 4ad3d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ad3dd: 00 00 00 : /* override any non-equality choice */ : chosen = cur; : break; : case BTGreaterEqualStrategyNumber: : case BTGreaterStrategyNumber: : if (chosen == NULL) 0.00 : 4ad3e0: 48 85 db test %rbx,%rbx 0.00 : 4ad3e3: 75 13 jne 4ad3f8 <_bt_first+0x168> : { : if (ScanDirectionIsForward(dir)) 0.00 : 4ad3e5: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) 0.00 : 4ad3ec: 74 32 je 4ad420 <_bt_first+0x190> 0.00 : 4ad3ee: 4c 89 e6 mov %r12,%rsi 0.00 : 4ad3f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last : * pass to handle after-last-key processing. Actual exit from the : * loop is at one of the "break" statements below. : */ : for (cur = so->keyData, i = 0;; cur++, i++) 0.00 : 4ad3f8: 49 83 c4 48 add $0x48,%r12 0.00 : 4ad3fc: 41 83 c5 01 add $0x1,%r13d 0.00 : 4ad400: 41 89 ce mov %ecx,%r14d : else : impliesNN = cur; : } : break; : } : } 0.00 : 4ad403: e9 18 ff ff ff jmpq 4ad320 <_bt_first+0x90> 0.00 : 4ad408: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ad40f: 00 : */ : switch (cur->sk_strategy) : { : case BTLessStrategyNumber: : case BTLessEqualStrategyNumber: : if (chosen == NULL) 0.00 : 4ad410: 48 85 db test %rbx,%rbx 0.00 : 4ad413: 75 e3 jne 4ad3f8 <_bt_first+0x168> : { : if (ScanDirectionIsBackward(dir)) 0.00 : 4ad415: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad41c: 75 d0 jne 4ad3ee <_bt_first+0x15e> 0.00 : 4ad41e: 66 90 xchg %ax,%ax : break; : case BTGreaterEqualStrategyNumber: : case BTGreaterStrategyNumber: : if (chosen == NULL) : { : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:687 4.03 : 4ad420: 4c 89 e3 mov %r12,%rbx : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last : * pass to handle after-last-key processing. Actual exit from the : * loop is at one of the "break" statements below. : */ : for (cur = so->keyData, i = 0;; cur++, i++) 0.08 : 4ad423: 41 83 c5 01 add $0x1,%r13d 0.00 : 4ad427: 49 83 c4 48 add $0x48,%r12 0.00 : 4ad42b: 41 89 ce mov %ecx,%r14d /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:593 0.70 : 4ad42e: e9 ed fe ff ff jmpq 4ad320 <_bt_first+0x90> 0.00 : 4ad433: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * Done looking at keys for curattr. If we didn't find a : * usable boundary key, see if we can deduce a NOT NULL key. : */ : if (chosen == NULL && impliesNN != NULL && 0.00 : 4ad438: 48 85 f6 test %rsi,%rsi 0.00 : 4ad43b: 74 22 je 4ad45f <_bt_first+0x1cf> 0.00 : 4ad43d: 8b 36 mov (%rsi),%esi 0.00 : 4ad43f: 89 f2 mov %esi,%edx 0.00 : 4ad441: 81 e2 00 00 00 02 and $0x2000000,%edx 0.00 : 4ad447: 0f 84 73 02 00 00 je 4ad6c0 <_bt_first+0x430> 0.00 : 4ad44d: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) 0.00 : 4ad454: 0f 94 c0 sete %al 0.00 : 4ad457: 84 c0 test %al,%al 0.00 : 4ad459: 0f 85 09 02 00 00 jne 4ad668 <_bt_first+0x3d8> : /* : * If we found no usable boundary keys, we have to start from one end of : * the tree. Walk down that edge to the first or last key, and scan from : * there. : */ : if (keysCount == 0) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:702 0.93 : 4ad45f: 41 83 ff 00 cmp $0x0,%r15d 0.00 : 4ad463: 0f 84 c7 02 00 00 je 4ad730 <_bt_first+0x4a0> : * insertion scankey we can use to search for the boundary point we : * identified above. The insertion scankey is built in the local : * scankeys[] array, using the keys identified by startKeys[]. : */ : Assert(keysCount <= INDEX_MAX_KEYS); : for (i = 0; i < keysCount; i++) 0.39 : 4ad469: 0f 8e b5 01 00 00 jle 4ad624 <_bt_first+0x394> : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.46 : 4ad46f: 48 8d 8d c0 f5 ff ff lea -0xa40(%rbp),%rcx : * scheme. But, by the same token, if we aren't able to use all : * the row members, then the part of the row comparison that we : * did use has to be treated as just a ">=" or "<=" condition, and : * so we'd better adjust strat_total accordingly. : */ : if (i == keysCount - 1) 0.08 : 4ad476: 41 8d 47 ff lea -0x1(%r15),%eax : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.15 : 4ad47a: 45 31 ed xor %r13d,%r13d 0.00 : 4ad47d: 45 31 f6 xor %r14d,%r14d 0.23 : 4ad480: 48 89 8d 90 ec ff ff mov %rcx,-0x1370(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1645 3.80 : 4ad487: 48 89 cb mov %rcx,%rbx : * scheme. But, by the same token, if we aren't able to use all : * the row members, then the part of the row comparison that we : * did use has to be treated as just a ">=" or "<=" condition, and : * so we'd better adjust strat_total accordingly. : */ : if (i == keysCount - 1) 0.00 : 4ad48a: 89 85 8c ec ff ff mov %eax,-0x1374(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:750 0.93 : 4ad490: eb 7c jmp 4ad50e <_bt_first+0x27e> 0.00 : 4ad492: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * have sk_func = 3-way-comparison function), but we have to watch : * out for nulls, which _bt_preprocess_keys didn't check. A null : * in the first row member makes the condition unmatchable, just : * like qual_ok = false. : */ : ScanKey subkey = (ScanKey) DatumGetPointer(cur->sk_argument); 0.00 : 4ad498: 49 8b 4c 24 40 mov 0x40(%r12),%rcx : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : if (subkey->sk_flags & SK_ISNULL) 0.00 : 4ad49d: f6 01 01 testb $0x1,(%rcx) 0.00 : 4ad4a0: 0f 85 1a ff ff ff jne 4ad3c0 <_bt_first+0x130> : return false; : memcpy(scankeys + i, subkey, sizeof(ScanKeyData)); 0.00 : 4ad4a6: 48 8b 01 mov (%rcx),%rax 0.00 : 4ad4a9: 48 89 03 mov %rax,(%rbx) 0.00 : 4ad4ac: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4ad4b0: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4ad4b4: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 4ad4b8: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 4ad4bc: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 4ad4c0: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 4ad4c4: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 4ad4c8: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 4ad4cc: 48 8b 41 28 mov 0x28(%rcx),%rax 0.00 : 4ad4d0: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 4ad4d4: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 4ad4d8: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 4ad4dc: 48 8b 41 38 mov 0x38(%rcx),%rax 0.00 : 4ad4e0: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 4ad4e4: 48 8b 41 40 mov 0x40(%rcx),%rax 0.00 : 4ad4e8: 48 89 43 40 mov %rax,0x40(%rbx) : * scheme. But, by the same token, if we aren't able to use all : * the row members, then the part of the row comparison that we : * did use has to be treated as just a ">=" or "<=" condition, and : * so we'd better adjust strat_total accordingly. : */ : if (i == keysCount - 1) 0.00 : 4ad4ec: 44 39 ad 8c ec ff ff cmp %r13d,-0x1374(%rbp) 0.00 : 4ad4f3: 0f 84 9a 00 00 00 je 4ad593 <_bt_first+0x303> : * insertion scankey we can use to search for the boundary point we : * identified above. The insertion scankey is built in the local : * scankeys[] array, using the keys identified by startKeys[]. : */ : Assert(keysCount <= INDEX_MAX_KEYS); : for (i = 0; i < keysCount; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:712 0.62 : 4ad4f9: 41 83 c5 01 add $0x1,%r13d 0.00 : 4ad4fd: 48 83 c3 48 add $0x48,%rbx 0.00 : 4ad501: 49 83 c6 04 add $0x4,%r14 0.00 : 4ad505: 45 39 ef cmp %r13d,%r15d 0.00 : 4ad508: 0f 8e 16 01 00 00 jle 4ad624 <_bt_first+0x394> : { : ScanKey cur = startKeys[i]; 0.31 : 4ad50e: 4e 8b a4 75 c0 fe ff mov -0x140(%rbp,%r14,2),%r12 0.00 : 4ad515: ff : : Assert(cur->sk_attno == i + 1); : : if (cur->sk_flags & SK_ROW_HEADER) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:718 3.64 : 4ad516: 41 f6 04 24 04 testb $0x4,(%r12) 1.63 : 4ad51b: 0f 85 77 ff ff ff jne 4ad498 <_bt_first+0x208> : * : * We support the convention that sk_subtype == InvalidOid means : * the opclass input type; this is a hack to simplify life for : * ScanKeyInit(). : */ : if (cur->sk_subtype == rel->rd_opcintype[i] || 0.23 : 4ad521: 48 8b 8d a8 ec ff ff mov -0x1358(%rbp),%rcx 0.00 : 4ad528: 41 8b 54 24 08 mov 0x8(%r12),%edx 0.00 : 4ad52d: 48 8b 81 d0 00 00 00 mov 0xd0(%rcx),%rax 0.15 : 4ad534: 42 8b 34 30 mov (%rax,%r14,1),%esi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:806 6.27 : 4ad538: 39 f2 cmp %esi,%edx 0.00 : 4ad53a: 74 08 je 4ad544 <_bt_first+0x2b4> 0.00 : 4ad53c: 85 d2 test %edx,%edx 0.00 : 4ad53e: 0f 85 8c 01 00 00 jne 4ad6d0 <_bt_first+0x440> : cur->sk_subtype == InvalidOid) : { : FmgrInfo *procinfo; : : procinfo = index_getprocinfo(rel, cur->sk_attno, BTORDER_PROC); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:811 0.77 : 4ad544: 41 0f bf 74 24 04 movswl 0x4(%r12),%esi 0.15 : 4ad54a: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4ad551: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ad556: e8 65 7b ff ff callq 4a50c0 : ScanKeyEntryInitializeWithInfo(scankeys + i, 0.00 : 4ad55b: 49 8b 4c 24 40 mov 0x40(%r12),%rcx 0.00 : 4ad560: 41 0f bf 54 24 04 movswl 0x4(%r12),%edx 0.00 : 4ad566: 48 89 df mov %rbx,%rdi 0.39 : 4ad569: 45 8b 4c 24 0c mov 0xc(%r12),%r9d 0.00 : 4ad56e: 45 8b 44 24 08 mov 0x8(%r12),%r8d 0.23 : 4ad573: 48 89 04 24 mov %rax,(%rsp) 0.31 : 4ad577: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 4ad57c: 41 8b 34 24 mov (%r12),%esi 0.00 : 4ad580: 31 c9 xor %ecx,%ecx 0.00 : 4ad582: e8 b9 65 fc ff callq 473b40 : * : * We support the convention that sk_subtype == InvalidOid means : * the opclass input type; this is a hack to simplify life for : * ScanKeyInit(). : */ : if (cur->sk_subtype == rel->rd_opcintype[i] || 0.23 : 4ad587: e9 6d ff ff ff jmpq 4ad4f9 <_bt_first+0x269> 0.00 : 4ad58c: 0f 1f 40 00 nopl 0x0(%rax) : if (subkey->sk_flags & SK_ISNULL) : break; /* can't use null keys */ : Assert(keysCount < INDEX_MAX_KEYS); : memcpy(scankeys + keysCount, subkey, sizeof(ScanKeyData)); : keysCount++; : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ad590: 41 89 f7 mov %esi,%r15d : bool used_all_subkeys = false; : : Assert(!(subkey->sk_flags & SK_ROW_END)); : for (;;) : { : subkey++; 0.00 : 4ad593: 48 83 c1 48 add $0x48,%rcx : Assert(subkey->sk_flags & SK_ROW_MEMBER); : if (subkey->sk_attno != keysCount + 1) 0.00 : 4ad597: 41 8d 47 01 lea 0x1(%r15),%eax 0.00 : 4ad59b: 0f bf 71 04 movswl 0x4(%rcx),%esi 0.00 : 4ad59f: 39 c6 cmp %eax,%esi 0.00 : 4ad5a1: 0f 85 f1 05 00 00 jne 4adb98 <_bt_first+0x908> : break; /* out-of-sequence, can't use it */ : if (subkey->sk_strategy != cur->sk_strategy) 0.00 : 4ad5a7: 0f b7 41 06 movzwl 0x6(%rcx),%eax 0.00 : 4ad5ab: 66 41 3b 44 24 06 cmp 0x6(%r12),%ax 0.00 : 4ad5b1: 0f 85 e1 05 00 00 jne 4adb98 <_bt_first+0x908> : break; /* wrong direction, can't use it */ : if (subkey->sk_flags & SK_ISNULL) 0.00 : 4ad5b7: f6 01 01 testb $0x1,(%rcx) 0.00 : 4ad5ba: 0f 85 d8 05 00 00 jne 4adb98 <_bt_first+0x908> : break; /* can't use null keys */ : Assert(keysCount < INDEX_MAX_KEYS); : memcpy(scankeys + keysCount, subkey, sizeof(ScanKeyData)); 0.00 : 4ad5c0: 48 8b 95 90 ec ff ff mov -0x1370(%rbp),%rdx 0.00 : 4ad5c7: 49 63 c7 movslq %r15d,%rax 0.00 : 4ad5ca: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4ad5ce: 48 8d 04 c2 lea (%rdx,%rax,8),%rax 0.00 : 4ad5d2: 48 8b 11 mov (%rcx),%rdx 0.00 : 4ad5d5: 48 89 10 mov %rdx,(%rax) 0.00 : 4ad5d8: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 4ad5dc: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 4ad5e0: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 4ad5e4: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 4ad5e8: 48 8b 51 18 mov 0x18(%rcx),%rdx 0.00 : 4ad5ec: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 4ad5f0: 48 8b 51 20 mov 0x20(%rcx),%rdx 0.00 : 4ad5f4: 48 89 50 20 mov %rdx,0x20(%rax) 0.00 : 4ad5f8: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 4ad5fc: 48 89 50 28 mov %rdx,0x28(%rax) 0.00 : 4ad600: 48 8b 51 30 mov 0x30(%rcx),%rdx 0.00 : 4ad604: 48 89 50 30 mov %rdx,0x30(%rax) 0.00 : 4ad608: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 4ad60c: 48 89 50 38 mov %rdx,0x38(%rax) 0.00 : 4ad610: 48 8b 51 40 mov 0x40(%rcx),%rdx 0.00 : 4ad614: 48 89 50 40 mov %rdx,0x40(%rax) : keysCount++; : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ad618: f6 01 10 testb $0x10,(%rcx) 0.00 : 4ad61b: 0f 84 6f ff ff ff je 4ad590 <_bt_first+0x300> 0.00 : 4ad621: 41 89 f7 mov %esi,%r15d : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:858 3.10 : 4ad624: 66 83 bd be ec ff ff cmpw $0x5,-0x1342(%rbp) 0.00 : 4ad62b: 05 3.33 : 4ad62c: 0f 86 4e 02 00 00 jbe 4ad880 <_bt_first+0x5f0> : goback = false; : break; : : default: : /* can't get here, but keep compiler quiet */ : elog(ERROR, "unrecognized strat_total: %d", (int) strat_total); 0.00 : 4ad632: ba df 48 7b 00 mov $0x7b48df,%edx 0.00 : 4ad637: be a4 03 00 00 mov $0x3a4,%esi 0.00 : 4ad63c: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4ad641: e8 da dd 2c 00 callq 77b420 0.00 : 4ad646: 0f b7 95 be ec ff ff movzwl -0x1342(%rbp),%edx 0.00 : 4ad64d: be 97 47 7b 00 mov $0x7b4797,%esi 0.00 : 4ad652: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ad657: 31 c0 xor %eax,%eax 0.00 : 4ad659: e8 d2 db 2c 00 callq 77b230 0.00 : 4ad65e: e8 6d be fb ff callq 4694d0 0.00 : 4ad663: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : ((impliesNN->sk_flags & SK_BT_NULLS_FIRST) ? : ScanDirectionIsForward(dir) : : ScanDirectionIsBackward(dir))) : { : /* Yes, so build the key in notnullkeys[keysCount] */ : chosen = ¬nullkeys[keysCount]; 0.00 : 4ad668: 49 63 c7 movslq %r15d,%rax : ScanKeyEntryInitialize(chosen, 0.00 : 4ad66b: 83 fa 01 cmp $0x1,%edx 0.00 : 4ad66e: 41 0f bf d6 movswl %r14w,%edx : ((impliesNN->sk_flags & SK_BT_NULLS_FIRST) ? : ScanDirectionIsForward(dir) : : ScanDirectionIsBackward(dir))) : { : /* Yes, so build the key in notnullkeys[keysCount] */ : chosen = ¬nullkeys[keysCount]; 0.00 : 4ad672: 48 8d 04 c0 lea (%rax,%rax,8),%rax : ScanKeyEntryInitialize(chosen, 0.00 : 4ad676: 19 c9 sbb %ecx,%ecx 0.00 : 4ad678: 81 e6 00 00 00 03 and $0x3000000,%esi 0.00 : 4ad67e: 83 e1 fc and $0xfffffffc,%ecx 0.00 : 4ad681: 40 80 ce 81 or $0x81,%sil 0.00 : 4ad685: 45 31 c9 xor %r9d,%r9d : ((impliesNN->sk_flags & SK_BT_NULLS_FIRST) ? : ScanDirectionIsForward(dir) : : ScanDirectionIsBackward(dir))) : { : /* Yes, so build the key in notnullkeys[keysCount] */ : chosen = ¬nullkeys[keysCount]; 0.00 : 4ad688: 48 8d 9c c5 c0 ec ff lea -0x1340(%rbp,%rax,8),%rbx 0.00 : 4ad68f: ff : ScanKeyEntryInitialize(chosen, 0.00 : 4ad690: 83 c1 05 add $0x5,%ecx 0.00 : 4ad693: 45 31 c0 xor %r8d,%r8d 0.00 : 4ad696: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 4ad69d: 00 00 0.00 : 4ad69f: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4ad6a6: 48 89 df mov %rbx,%rdi 0.00 : 4ad6a9: e8 02 65 fc ff callq 473bb0 : : /* : * If we still didn't find a usable boundary key, quit; else : * save the boundary key pointer in startKeys. : */ : if (chosen == NULL) 0.00 : 4ad6ae: 48 85 db test %rbx,%rbx 0.00 : 4ad6b1: 0f 85 83 fc ff ff jne 4ad33a <_bt_first+0xaa> 0.00 : 4ad6b7: e9 a3 fd ff ff jmpq 4ad45f <_bt_first+0x1cf> 0.00 : 4ad6bc: 0f 1f 40 00 nopl 0x0(%rax) : { : /* : * Done looking at keys for curattr. If we didn't find a : * usable boundary key, see if we can deduce a NOT NULL key. : */ : if (chosen == NULL && impliesNN != NULL && 0.00 : 4ad6c0: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad6c7: 0f 94 c0 sete %al 0.00 : 4ad6ca: e9 88 fd ff ff jmpq 4ad457 <_bt_first+0x1c7> 0.00 : 4ad6cf: 90 nop : } : else : { : RegProcedure cmp_proc; : : cmp_proc = get_opfamily_proc(rel->rd_opfamily[i], 0.00 : 4ad6d0: 48 8b 8d a8 ec ff ff mov -0x1358(%rbp),%rcx 0.00 : 4ad6d7: 48 8b 81 c8 00 00 00 mov 0xc8(%rcx),%rax 0.00 : 4ad6de: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ad6e3: 42 8b 3c 30 mov (%rax,%r14,1),%edi 0.00 : 4ad6e7: e8 c4 51 2c 00 callq 7728b0 : rel->rd_opcintype[i], : cur->sk_subtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) 0.00 : 4ad6ec: 85 c0 test %eax,%eax : } : else : { : RegProcedure cmp_proc; : : cmp_proc = get_opfamily_proc(rel->rd_opfamily[i], 0.00 : 4ad6ee: 89 c1 mov %eax,%ecx : rel->rd_opcintype[i], : cur->sk_subtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) 0.00 : 4ad6f0: 0f 84 4e 04 00 00 je 4adb44 <_bt_first+0x8b4> : elog(ERROR, "missing support function %d(%u,%u) for attribute %d of index \"%s\"", : BTORDER_PROC, rel->rd_opcintype[i], cur->sk_subtype, : cur->sk_attno, RelationGetRelationName(rel)); : ScanKeyEntryInitialize(scankeys + i, 0.00 : 4ad6f6: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 4ad6fb: 41 0f bf 54 24 04 movswl 0x4(%r12),%edx 0.00 : 4ad701: 48 89 df mov %rbx,%rdi 0.00 : 4ad704: 45 8b 4c 24 0c mov 0xc(%r12),%r9d 0.00 : 4ad709: 45 8b 44 24 08 mov 0x8(%r12),%r8d 0.00 : 4ad70e: 89 0c 24 mov %ecx,(%rsp) 0.00 : 4ad711: 31 c9 xor %ecx,%ecx 0.00 : 4ad713: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 4ad718: 41 8b 34 24 mov (%r12),%esi 0.00 : 4ad71c: e8 8f 64 fc ff callq 473bb0 0.00 : 4ad721: e9 d3 fd ff ff jmpq 4ad4f9 <_bt_first+0x269> 0.00 : 4ad726: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ad72d: 00 00 00 : * same as for _bt_first(). : */ : static bool : _bt_endpoint(IndexScanDesc scan, ScanDirection dir) : { : Relation rel = scan->indexRelation; 0.00 : 4ad730: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ad737: 4c 8b 6a 08 mov 0x8(%rdx),%r13 : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4ad73b: 4c 8b 72 38 mov 0x38(%rdx),%r14 : /* : * Scan down to the leftmost or rightmost leaf page. This is a simplified : * version of _bt_search(). We don't maintain a stack since we know we : * won't need it. : */ : buf = _bt_get_endpoint(rel, 0, ScanDirectionIsBackward(dir)); 0.00 : 4ad73f: 31 d2 xor %edx,%edx 0.00 : 4ad741: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad748: 4c 89 ef mov %r13,%rdi 0.00 : 4ad74b: 0f 94 c2 sete %dl 0.00 : 4ad74e: 31 f6 xor %esi,%esi 0.00 : 4ad750: e8 eb ea ff ff callq 4ac240 <_bt_get_endpoint> : : if (!BufferIsValid(buf)) 0.00 : 4ad755: 85 c0 test %eax,%eax : /* : * Scan down to the leftmost or rightmost leaf page. This is a simplified : * version of _bt_search(). We don't maintain a stack since we know we : * won't need it. : */ : buf = _bt_get_endpoint(rel, 0, ScanDirectionIsBackward(dir)); 0.00 : 4ad757: 41 89 c4 mov %eax,%r12d : : if (!BufferIsValid(buf)) 0.00 : 4ad75a: 0f 84 3c 01 00 00 je 4ad89c <_bt_first+0x60c> : PredicateLockRelation(rel, scan->xs_snapshot); : so->currPos.buf = InvalidBuffer; : return false; : } : : PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot); 0.00 : 4ad760: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4ad767: 44 89 e7 mov %r12d,%edi 0.00 : 4ad76a: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 4ad76e: e8 bd 68 1c 00 callq 674030 0.00 : 4ad773: 4c 89 ef mov %r13,%rdi 0.00 : 4ad776: 89 c6 mov %eax,%esi 0.00 : 4ad778: 48 89 da mov %rbx,%rdx 0.00 : 4ad77b: e8 e0 5a 1e 00 callq 693260 : page = BufferGetPage(buf); 0.00 : 4ad780: 45 85 e4 test %r12d,%r12d 0.00 : 4ad783: 0f 88 91 03 00 00 js 4adb1a <_bt_first+0x88a> 0.00 : 4ad789: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4ad78e: 48 63 d0 movslq %eax,%rdx 0.00 : 4ad791: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ad795: 48 03 15 5c 23 71 00 add 0x71235c(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : Assert(P_ISLEAF(opaque)); : : if (ScanDirectionIsForward(dir)) 0.00 : 4ad79c: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) : return false; : } : : PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot); : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ad7a3: 0f b7 42 10 movzwl 0x10(%rdx),%eax : Assert(P_ISLEAF(opaque)); : : if (ScanDirectionIsForward(dir)) 0.00 : 4ad7a7: 0f 84 4d 03 00 00 je 4adafa <_bt_first+0x86a> : /* There could be dead pages to the left, so not this: */ : /* Assert(P_LEFTMOST(opaque)); */ : : start = P_FIRSTDATAKEY(opaque); : } : else if (ScanDirectionIsBackward(dir)) 0.00 : 4ad7ad: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad7b4: 0f 85 ff 03 00 00 jne 4adbb9 <_bt_first+0x929> : { : Assert(P_RIGHTMOST(opaque)); : : start = PageGetMaxOffsetNumber(page); 0.00 : 4ad7ba: 0f b7 42 0c movzwl 0xc(%rdx),%eax : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad7be: 31 d2 xor %edx,%edx : } : else if (ScanDirectionIsBackward(dir)) : { : Assert(P_RIGHTMOST(opaque)); : : start = PageGetMaxOffsetNumber(page); 0.00 : 4ad7c0: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ad7c4: 0f 87 f4 00 00 00 ja 4ad8be <_bt_first+0x62e> : elog(ERROR, "invalid scan direction: %d", (int) dir); : start = 0; /* keep compiler quiet */ : } : : /* remember which buffer we have pinned */ : so->currPos.buf = buf; 0.00 : 4ad7ca: 45 89 66 54 mov %r12d,0x54(%r14) : so->currPos.moreLeft = false; : so->currPos.moreRight = true; : } : else : { : so->currPos.moreLeft = true; 0.00 : 4ad7ce: 41 c6 46 5c 01 movb $0x1,0x5c(%r14) : so->currPos.moreRight = false; 0.00 : 4ad7d3: 41 c6 46 5d 00 movb $0x0,0x5d(%r14) : } : so->numKilled = 0; /* just paranoia */ 0.00 : 4ad7d8: 41 c7 46 38 00 00 00 movl $0x0,0x38(%r14) 0.00 : 4ad7df: 00 : so->markItemIndex = -1; /* ditto */ 0.00 : 4ad7e0: 41 c7 46 50 ff ff ff movl $0xffffffff,0x50(%r14) 0.00 : 4ad7e7: ff : : /* : * Now load data from the first page of the scan. : */ : if (!_bt_readpage(scan, dir, start)) 0.00 : 4ad7e8: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi 0.00 : 4ad7ee: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi 0.00 : 4ad7f5: e8 e6 eb ff ff callq 4ac3e0 <_bt_readpage> 0.00 : 4ad7fa: 84 c0 test %al,%al 0.00 : 4ad7fc: 75 1c jne 4ad81a <_bt_first+0x58a> : { : /* : * There's no actually-matching data on this page. Try to advance to : * the next page. Return false if there's no matching data at all. : */ : if (!_bt_steppage(scan, dir)) 0.00 : 4ad7fe: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi 0.00 : 4ad804: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi 0.00 : 4ad80b: e8 70 ee ff ff callq 4ac680 <_bt_steppage> 0.00 : 4ad810: 31 d2 xor %edx,%edx 0.00 : 4ad812: 84 c0 test %al,%al 0.00 : 4ad814: 0f 84 a8 fb ff ff je 4ad3c2 <_bt_first+0x132> : return false; : } : : /* Drop the lock, but not pin, on the current page */ : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); 0.00 : 4ad81a: 41 8b 7e 54 mov 0x54(%r14),%edi 0.00 : 4ad81e: 31 f6 xor %esi,%esi 0.00 : 4ad820: e8 eb 6e 1c 00 callq 674710 : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; 0.00 : 4ad825: 49 63 46 6c movslq 0x6c(%r14),%rax : scan->xs_ctup.t_self = currItem->heapTid; 0.00 : 4ad829: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ad830: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 4ad834: 49 8d 4c 46 60 lea 0x60(%r14,%rax,2),%rcx 0.00 : 4ad839: 8b 41 10 mov 0x10(%rcx),%eax 0.00 : 4ad83c: 89 42 54 mov %eax,0x54(%rdx) 0.00 : 4ad83f: 0f b7 41 14 movzwl 0x14(%rcx),%eax 0.00 : 4ad843: 66 89 42 58 mov %ax,0x58(%rdx) : if (scan->xs_want_itup) 0.00 : 4ad847: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4ad84e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ad853: 80 78 30 00 cmpb $0x0,0x30(%rax) 0.00 : 4ad857: 0f 84 65 fb ff ff je 4ad3c2 <_bt_first+0x132> : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad85d: 0f b7 41 18 movzwl 0x18(%rcx),%eax 0.00 : 4ad861: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ad868: 49 03 46 40 add 0x40(%r14),%rax 0.00 : 4ad86c: 48 89 42 40 mov %rax,0x40(%rdx) 0.00 : 4ad870: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ad875: e9 48 fb ff ff jmpq 4ad3c2 <_bt_first+0x132> 0.00 : 4ad87a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) 1.63 : 4ad880: 0f b7 85 be ec ff ff movzwl -0x1342(%rbp),%eax 2.09 : 4ad887: ff 24 c5 90 48 7b 00 jmpq *0x7b4890(,%rax,8) 0.00 : 4ad88e: 66 90 xchg %ax,%ax : else : impliesNN = cur; : } : break; : } : } 0.00 : 4ad890: 66 89 85 be ec ff ff mov %ax,-0x1342(%rbp) 0.00 : 4ad897: e9 c3 fb ff ff jmpq 4ad45f <_bt_first+0x1cf> : { : /* : * Empty index. Lock the whole relation, as nothing finer to lock : * exists. : */ : PredicateLockRelation(rel, scan->xs_snapshot); 0.00 : 4ad89c: 48 8b 8d a0 ec ff ff mov -0x1360(%rbp),%rcx 0.00 : 4ad8a3: 4c 89 ef mov %r13,%rdi 0.00 : 4ad8a6: 48 8b 71 10 mov 0x10(%rcx),%rsi 0.00 : 4ad8aa: e8 21 6d 1e 00 callq 6945d0 : so->currPos.buf = InvalidBuffer; 0.00 : 4ad8af: 41 c7 46 54 00 00 00 movl $0x0,0x54(%r14) 0.00 : 4ad8b6: 00 0.00 : 4ad8b7: 31 d2 xor %edx,%edx 0.00 : 4ad8b9: e9 04 fb ff ff jmpq 4ad3c2 <_bt_first+0x132> : } : else if (ScanDirectionIsBackward(dir)) : { : Assert(P_RIGHTMOST(opaque)); : : start = PageGetMaxOffsetNumber(page); 0.00 : 4ad8be: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ad8c1: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ad8c5: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ad8c9: 0f b7 d0 movzwl %ax,%edx 0.00 : 4ad8cc: e9 f9 fe ff ff jmpq 4ad7ca <_bt_first+0x53a> 0.00 : 4ad8d1: 48 8d 95 c0 f5 ff ff lea -0xa40(%rbp),%rdx : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) 0.00 : 4ad8d8: 45 31 ed xor %r13d,%r13d 0.00 : 4ad8db: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4ad8e1: 48 89 95 90 ec ff ff mov %rdx,-0x1370(%rbp) 0.00 : 4ad8e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ad8ef: 00 : : /* : * Use the manufactured insertion scan key to descend the tree and : * position ourselves on the target leaf page. : */ : stack = _bt_search(rel, keysCount, scankeys, nextkey, &buf, BT_READ); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:940 0.70 : 4ad8f0: 48 8b 95 90 ec ff ff mov -0x1370(%rbp),%rdx 1.08 : 4ad8f7: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.08 : 4ad8fe: 4c 8d 45 cc lea -0x34(%rbp),%r8 0.39 : 4ad902: 44 89 e1 mov %r12d,%ecx 0.08 : 4ad905: 41 b9 01 00 00 00 mov $0x1,%r9d 0.31 : 4ad90b: 44 89 fe mov %r15d,%esi 0.00 : 4ad90e: e8 ed f7 ff ff callq 4ad100 <_bt_search> 0.62 : 4ad913: 48 89 c7 mov %rax,%rdi : : /* don't need to keep the stack around... */ : _bt_freestack(stack); 0.39 : 4ad916: e8 55 1f 00 00 callq 4af870 <_bt_freestack> : : /* remember which buffer we have pinned, if any */ : so->currPos.buf = buf; 0.15 : 4ad91b: 8b 45 cc mov -0x34(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:946 0.77 : 4ad91e: 48 8b 8d b0 ec ff ff mov -0x1350(%rbp),%rcx 0.08 : 4ad925: 89 41 54 mov %eax,0x54(%rcx) : : if (!BufferIsValid(buf)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:948 1.70 : 4ad928: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 4ad92b: 85 ff test %edi,%edi 0.00 : 4ad92d: 0f 84 95 01 00 00 je 4adac8 <_bt_first+0x838> : */ : PredicateLockRelation(rel, scan->xs_snapshot); : return false; : } : else : PredicateLockPage(rel, BufferGetBlockNumber(buf), 0.31 : 4ad933: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.46 : 4ad93a: 48 8b 5a 10 mov 0x10(%rdx),%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:958 1.16 : 4ad93e: e8 ed 66 1c 00 callq 674030 0.31 : 4ad943: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4ad94a: 89 c6 mov %eax,%esi 0.00 : 4ad94c: 48 89 da mov %rbx,%rdx 0.00 : 4ad94f: e8 0c 59 1e 00 callq 693260 : scan->xs_snapshot); : : /* initialize moreLeft/moreRight appropriately for scan direction */ : if (ScanDirectionIsForward(dir)) 0.39 : 4ad954: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:962 0.62 : 4ad95b: 0f 84 85 01 00 00 je 4adae6 <_bt_first+0x856> : so->currPos.moreLeft = false; : so->currPos.moreRight = true; : } : else : { : so->currPos.moreLeft = true; 0.00 : 4ad961: 48 8b 85 b0 ec ff ff mov -0x1350(%rbp),%rax 0.00 : 4ad968: c6 40 5c 01 movb $0x1,0x5c(%rax) : so->currPos.moreRight = false; 0.00 : 4ad96c: c6 40 5d 00 movb $0x0,0x5d(%rax) : } : so->numKilled = 0; /* just paranoia */ 0.00 : 4ad970: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx : so->markItemIndex = -1; /* ditto */ : : /* position to the precise item on the page */ : offnum = _bt_binsrch(rel, buf, keysCount, scankeys, nextkey); 0.00 : 4ad977: 45 89 e0 mov %r12d,%r8d : else : { : so->currPos.moreLeft = true; : so->currPos.moreRight = false; : } : so->numKilled = 0; /* just paranoia */ 0.00 : 4ad97a: c7 42 38 00 00 00 00 movl $0x0,0x38(%rdx) : so->markItemIndex = -1; /* ditto */ /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:973 0.77 : 4ad981: c7 42 50 ff ff ff ff movl $0xffffffff,0x50(%rdx) : : /* position to the precise item on the page */ : offnum = _bt_binsrch(rel, buf, keysCount, scankeys, nextkey); 0.39 : 4ad988: 44 89 fa mov %r15d,%edx 0.00 : 4ad98b: 8b 75 cc mov -0x34(%rbp),%esi 0.08 : 4ad98e: 48 8b 8d 90 ec ff ff mov -0x1370(%rbp),%rcx 0.46 : 4ad995: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:976 1.32 : 4ad99c: e8 bf f4 ff ff callq 4ace60 <_bt_binsrch> : * this results in an offset before the first item or after the last one, : * _bt_readpage will report no items found, and then we'll step to the : * next page as needed.) : */ : if (goback) : offnum = OffsetNumberPrev(offnum); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:997 0.85 : 4ad9a1: 41 80 fd 01 cmp $0x1,%r13b : : /* : * Now load data from the first page of the scan. : */ : if (!_bt_readpage(scan, dir, offnum)) 0.00 : 4ad9a5: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1002 1.16 : 4ad9ab: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi : * this results in an offset before the first item or after the last one, : * _bt_readpage will report no items found, and then we'll step to the : * next page as needed.) : */ : if (goback) : offnum = OffsetNumberPrev(offnum); 0.00 : 4ad9b2: 66 83 d0 ff adc $0xffff,%ax : : /* : * Now load data from the first page of the scan. : */ : if (!_bt_readpage(scan, dir, offnum)) 0.31 : 4ad9b6: 0f b7 d0 movzwl %ax,%edx 0.08 : 4ad9b9: e8 22 ea ff ff callq 4ac3e0 <_bt_readpage> 0.85 : 4ad9be: 84 c0 test %al,%al 0.08 : 4ad9c0: 75 1a jne 4ad9dc <_bt_first+0x74c> : { : /* : * There's no actually-matching data on this page. Try to advance to : * the next page. Return false if there's no matching data at all. : */ : if (!_bt_steppage(scan, dir)) 0.00 : 4ad9c2: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi 0.00 : 4ad9c8: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi 0.00 : 4ad9cf: e8 ac ec ff ff callq 4ac680 <_bt_steppage> 0.00 : 4ad9d4: 84 c0 test %al,%al 0.00 : 4ad9d6: 0f 84 e4 f9 ff ff je 4ad3c0 <_bt_first+0x130> : return false; : } : : /* Drop the lock, but not pin, on the current page */ : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); 0.31 : 4ad9dc: 48 8b 8d b0 ec ff ff mov -0x1350(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1013 0.70 : 4ad9e3: 31 f6 xor %esi,%esi 0.00 : 4ad9e5: 8b 79 54 mov 0x54(%rcx),%edi 1.32 : 4ad9e8: e8 23 6d 1c 00 callq 674710 : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; 0.08 : 4ad9ed: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1016 0.85 : 4ad9f4: 48 63 42 6c movslq 0x6c(%rdx),%rax : scan->xs_ctup.t_self = currItem->heapTid; 0.08 : 4ad9f8: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 4ad9fc: 48 8d 4c 42 60 lea 0x60(%rdx,%rax,2),%rcx 0.15 : 4ada01: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1017 0.70 : 4ada08: 8b 41 10 mov 0x10(%rcx),%eax 0.23 : 4ada0b: 89 42 54 mov %eax,0x54(%rdx) 0.15 : 4ada0e: 0f b7 41 14 movzwl 0x14(%rcx),%eax 0.00 : 4ada12: 66 89 42 58 mov %ax,0x58(%rdx) : if (scan->xs_want_itup) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1018 0.62 : 4ada16: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4ada1d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ada22: 80 78 30 00 cmpb $0x0,0x30(%rax) 0.00 : 4ada26: 0f 84 96 f9 ff ff je 4ad3c2 <_bt_first+0x132> : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ada2c: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx 0.00 : 4ada33: 0f b7 41 18 movzwl 0x18(%rcx),%eax 0.00 : 4ada37: 48 8b 8d a0 ec ff ff mov -0x1360(%rbp),%rcx 0.00 : 4ada3e: 48 03 42 40 add 0x40(%rdx),%rax 0.00 : 4ada42: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ada47: 48 89 41 40 mov %rax,0x40(%rcx) 0.00 : 4ada4b: e9 72 f9 ff ff jmpq 4ad3c2 <_bt_first+0x132> : : /* : * If a backward scan was specified, need to start with last equal : * item not first one. : */ : if (ScanDirectionIsBackward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:890 5.34 : 4ada50: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.15 : 4ada57: 48 8d 85 c0 f5 ff ff lea -0xa40(%rbp),%rax 0.00 : 4ada5e: 48 89 85 90 ec ff ff mov %rax,-0x1370(%rbp) 0.00 : 4ada65: 0f 84 c6 00 00 00 je 4adb31 <_bt_first+0x8a1> : goback = false; : break; : : default: : /* can't get here, but keep compiler quiet */ : elog(ERROR, "unrecognized strat_total: %d", (int) strat_total); 0.46 : 4ada6b: 45 31 ed xor %r13d,%r13d 0.00 : 4ada6e: 45 31 e4 xor %r12d,%r12d 0.00 : 4ada71: e9 7a fe ff ff jmpq 4ad8f0 <_bt_first+0x660> 0.00 : 4ada76: 48 8d 8d c0 f5 ff ff lea -0xa40(%rbp),%rcx : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) 0.00 : 4ada7d: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4ada83: 45 31 e4 xor %r12d,%r12d 0.00 : 4ada86: 48 89 8d 90 ec ff ff mov %rcx,-0x1370(%rbp) 0.00 : 4ada8d: e9 5e fe ff ff jmpq 4ad8f0 <_bt_first+0x660> 0.00 : 4ada92: 48 8d 8d c0 f5 ff ff lea -0xa40(%rbp),%rcx 0.00 : 4ada99: 48 89 8d 90 ec ff ff mov %rcx,-0x1370(%rbp) 0.00 : 4adaa0: eb c9 jmp 4ada6b <_bt_first+0x7db> 0.00 : 4adaa2: 48 8d 85 c0 f5 ff ff lea -0xa40(%rbp),%rax 0.00 : 4adaa9: 48 89 85 90 ec ff ff mov %rax,-0x1370(%rbp) : goback = false; : break; : : default: : /* can't get here, but keep compiler quiet */ : elog(ERROR, "unrecognized strat_total: %d", (int) strat_total); 0.00 : 4adab0: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4adab6: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4adabc: e9 2f fe ff ff jmpq 4ad8f0 <_bt_first+0x660> 0.00 : 4adac1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* : * We only get here if the index is completely empty. Lock relation : * because nothing finer to lock exists. : */ : PredicateLockRelation(rel, scan->xs_snapshot); 0.00 : 4adac8: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4adacf: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4adad6: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 4adada: e8 f1 6a 1e 00 callq 6945d0 0.00 : 4adadf: 31 d2 xor %edx,%edx : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); : : return true; : } 0.00 : 4adae1: e9 dc f8 ff ff jmpq 4ad3c2 <_bt_first+0x132> : scan->xs_snapshot); : : /* initialize moreLeft/moreRight appropriately for scan direction */ : if (ScanDirectionIsForward(dir)) : { : so->currPos.moreLeft = false; 0.23 : 4adae6: 48 8b 8d b0 ec ff ff mov -0x1350(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:964 1.01 : 4adaed: c6 41 5c 00 movb $0x0,0x5c(%rcx) : so->currPos.moreRight = true; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:965 1.55 : 4adaf1: c6 41 5d 01 movb $0x1,0x5d(%rcx) 1.32 : 4adaf5: e9 76 fe ff ff jmpq 4ad970 <_bt_first+0x6e0> : if (ScanDirectionIsForward(dir)) : { : /* There could be dead pages to the left, so not this: */ : /* Assert(P_LEFTMOST(opaque)); */ : : start = P_FIRSTDATAKEY(opaque); 0.00 : 4adafa: 0f b7 c0 movzwl %ax,%eax 0.00 : 4adafd: 83 7c 02 04 01 cmpl $0x1,0x4(%rdx,%rax,1) : elog(ERROR, "invalid scan direction: %d", (int) dir); : start = 0; /* keep compiler quiet */ : } : : /* remember which buffer we have pinned */ : so->currPos.buf = buf; 0.00 : 4adb02: 45 89 66 54 mov %r12d,0x54(%r14) : : /* initialize moreLeft/moreRight appropriately for scan direction */ : if (ScanDirectionIsForward(dir)) : { : so->currPos.moreLeft = false; 0.00 : 4adb06: 41 c6 46 5c 00 movb $0x0,0x5c(%r14) : so->currPos.moreRight = true; 0.00 : 4adb0b: 41 c6 46 5d 01 movb $0x1,0x5d(%r14) : if (ScanDirectionIsForward(dir)) : { : /* There could be dead pages to the left, so not this: */ : /* Assert(P_LEFTMOST(opaque)); */ : : start = P_FIRSTDATAKEY(opaque); 0.00 : 4adb10: 19 d2 sbb %edx,%edx 0.00 : 4adb12: 83 c2 02 add $0x2,%edx 0.00 : 4adb15: e9 be fc ff ff jmpq 4ad7d8 <_bt_first+0x548> : so->currPos.buf = InvalidBuffer; : return false; : } : : PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot); : page = BufferGetPage(buf); 0.00 : 4adb1a: 44 89 e0 mov %r12d,%eax 0.00 : 4adb1d: 48 8b 15 f4 f5 6c 00 mov 0x6cf5f4(%rip),%rdx # b7d118 0.00 : 4adb24: f7 d0 not %eax 0.00 : 4adb26: 48 98 cltq 0.00 : 4adb28: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4adb2c: e9 6b fc ff ff jmpq 4ad79c <_bt_first+0x50c> 0.00 : 4adb31: 48 8d 95 c0 f5 ff ff lea -0xa40(%rbp),%rdx 0.00 : 4adb38: 48 89 95 90 ec ff ff mov %rdx,-0x1370(%rbp) 0.00 : 4adb3f: e9 6c ff ff ff jmpq 4adab0 <_bt_first+0x820> : cmp_proc = get_opfamily_proc(rel->rd_opfamily[i], : rel->rd_opcintype[i], : cur->sk_subtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) : elog(ERROR, "missing support function %d(%u,%u) for attribute %d of index \"%s\"", 0.00 : 4adb44: ba df 48 7b 00 mov $0x7b48df,%edx 0.00 : 4adb49: be 40 03 00 00 mov $0x340,%esi 0.00 : 4adb4e: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4adb53: e8 c8 d8 2c 00 callq 77b420 0.00 : 4adb58: 48 8b 95 a8 ec ff ff mov -0x1358(%rbp),%rdx 0.00 : 4adb5f: 45 0f bf 4c 24 04 movswl 0x4(%r12),%r9d 0.00 : 4adb65: be 18 48 7b 00 mov $0x7b4818,%esi 0.00 : 4adb6a: 45 8b 44 24 08 mov 0x8(%r12),%r8d 0.00 : 4adb6f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4adb74: 48 8b 82 d0 00 00 00 mov 0xd0(%rdx),%rax 0.00 : 4adb7b: 42 8b 0c 30 mov (%rax,%r14,1),%ecx 0.00 : 4adb7f: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 4adb83: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4adb88: 48 89 04 24 mov %rax,(%rsp) 0.00 : 4adb8c: 31 c0 xor %eax,%eax 0.00 : 4adb8e: e8 9d d6 2c 00 callq 77b230 0.00 : 4adb93: e8 38 b9 fb ff callq 4694d0 : break; : } : } : if (!used_all_subkeys) : { : switch (strat_total) 0.00 : 4adb98: 66 83 bd be ec ff ff cmpw $0x1,-0x1342(%rbp) 0.00 : 4adb9f: 01 0.00 : 4adba0: 0f 84 0a ff ff ff je 4adab0 <_bt_first+0x820> 0.00 : 4adba6: 66 83 bd be ec ff ff cmpw $0x5,-0x1342(%rbp) 0.00 : 4adbad: 05 0.00 : 4adbae: 0f 85 70 fa ff ff jne 4ad624 <_bt_first+0x394> 0.00 : 4adbb4: e9 b2 fe ff ff jmpq 4ada6b <_bt_first+0x7db> : : start = PageGetMaxOffsetNumber(page); : } : else : { : elog(ERROR, "invalid scan direction: %d", (int) dir); 0.00 : 4adbb9: ba e9 48 7b 00 mov $0x7b48e9,%edx 0.00 : 4adbbe: be 44 06 00 00 mov $0x644,%esi 0.00 : 4adbc3: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4adbc8: e8 53 d8 2c 00 callq 77b420 0.00 : 4adbcd: 8b 95 9c ec ff ff mov -0x1364(%rbp),%edx 0.00 : 4adbd3: be 7c 47 7b 00 mov $0x7b477c,%esi 0.00 : 4adbd8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4adbdd: 31 c0 xor %eax,%eax 0.00 : 4adbdf: e8 4c d6 2c 00 callq 77b230 0.00 : 4adbe4: e8 e7 b8 fb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.85 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 18.21 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 16.44 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 16.14 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 7.28 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 6.40 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 5.02 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 4.72 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 2.56 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 1.38 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004bffe0 : : /* : * TransactionIdPrecedes --- is id1 logically < id2? : */ : bool : TransactionIdPrecedes(TransactionId id1, TransactionId id2) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 7.28 : 4bffe0: 55 push %rbp : * If either ID is a permanent XID then we can just do unsigned : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 18.21 : 4bffe1: 83 ff 02 cmp $0x2,%edi : /* : * TransactionIdPrecedes --- is id1 logically < id2? : */ : bool : TransactionIdPrecedes(TransactionId id1, TransactionId id2) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 16.14 : 4bffe4: 48 89 e5 mov %rsp,%rbp : * If either ID is a permanent XID then we can just do unsigned : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 6.40 : 4bffe7: 76 17 jbe 4c0000 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 1.38 : 4bffe9: 83 fe 02 cmp $0x2,%esi 0.00 : 4bffec: 76 12 jbe 4c0000 : return (id1 < id2); : : diff = (int32) (id1 - id2); : return (diff < 0); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 16.44 : 4bffee: 29 f7 sub %esi,%edi : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 4.72 : 4bfff0: c9 leaveq : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 < id2); : : diff = (int32) (id1 - id2); : return (diff < 0); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 21.85 : 4bfff1: 89 f8 mov %edi,%eax 5.02 : 4bfff3: c1 e8 1f shr $0x1f,%eax : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 2.56 : 4bfff6: c3 retq 0.00 : 4bfff7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4bfffe: 00 00 : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 < id2); 0.00 : 4c0000: 39 f7 cmp %esi,%edi : : diff = (int32) (id1 - id2); : return (diff < 0); : } 0.00 : 4c0002: c9 leaveq : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 < id2); 0.00 : 4c0003: 0f 92 c0 setb %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1040 23.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1038 10.59 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1025 8.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1025 7.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1025 6.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1037 5.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1037 5.30 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1029 2.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1027 1.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1026 1.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1037 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bbac0 : : void : ExecHashGetBucketAndBatch(HashJoinTable hashtable, : uint32 hashvalue, : int *bucketno, : int *batchno) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1025 7.09 : 5bbac0: 55 push %rbp : uint32 nbuckets = (uint32) hashtable->nbuckets; : uint32 nbatch = (uint32) hashtable->nbatch; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1027 2.78 : 5bbac1: 44 8b 47 40 mov 0x40(%rdi),%r8d : void : ExecHashGetBucketAndBatch(HashJoinTable hashtable, : uint32 hashvalue, : int *bucketno, : int *batchno) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1025 8.35 : 5bbac5: 49 89 c9 mov %rcx,%r9 : uint32 nbuckets = (uint32) hashtable->nbuckets; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1026 1.53 : 5bbac8: 8b 07 mov (%rdi),%eax : void : ExecHashGetBucketAndBatch(HashJoinTable hashtable, : uint32 hashvalue, : int *bucketno, : int *batchno) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1025 10.59 : 5bbaca: 48 89 e5 mov %rsp,%rbp : uint32 nbuckets = (uint32) hashtable->nbuckets; : uint32 nbatch = (uint32) hashtable->nbatch; : : if (nbatch > 1) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1029 5.30 : 5bbacd: 41 83 f8 01 cmp $0x1,%r8d 0.00 : 5bbad1: 76 1d jbe 5bbaf0 : { : /* we can do MOD by masking, DIV by shifting */ : *bucketno = hashvalue & (nbuckets - 1); 0.00 : 5bbad3: 83 e8 01 sub $0x1,%eax 0.00 : 5bbad6: 21 f0 and %esi,%eax 0.00 : 5bbad8: 89 02 mov %eax,(%rdx) : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); 0.00 : 5bbada: 8b 4f 04 mov 0x4(%rdi),%ecx 0.00 : 5bbadd: 41 8d 40 ff lea -0x1(%r8),%eax 0.00 : 5bbae1: d3 ee shr %cl,%esi 0.00 : 5bbae3: 21 f0 and %esi,%eax 0.00 : 5bbae5: 41 89 01 mov %eax,(%r9) : else : { : *bucketno = hashvalue & (nbuckets - 1); : *batchno = 0; : } : } 0.00 : 5bbae8: c9 leaveq 0.00 : 5bbae9: c3 retq 0.00 : 5bbaea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : *bucketno = hashvalue & (nbuckets - 1); : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); : } : else : { : *bucketno = hashvalue & (nbuckets - 1); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1037 1.44 : 5bbaf0: 83 e8 01 sub $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1037 5.92 : 5bbaf3: 21 f0 and %esi,%eax 6.10 : 5bbaf5: 89 02 mov %eax,(%rdx) : *batchno = 0; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1038 23.88 : 5bbaf7: c7 01 00 00 00 00 movl $0x0,(%rcx) : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1040 27.02 : 5bbafd: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 16.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 12.76 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:95 12.53 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 9.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 8.48 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:93 7.87 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 5.35 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 2.60 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 2.37 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5c40 : : : Datum : btint4cmp(PG_FUNCTION_ARGS) : { : int32 a = PG_GETARG_INT32(0); : int32 b = PG_GETARG_INT32(1); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:95 12.76 : 4a5c40: 8b 47 28 mov 0x28(%rdi),%eax : : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 2.60 : 4a5c43: 39 47 20 cmp %eax,0x20(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 5.35 : 4a5c46: ba 01 00 00 00 mov $0x1,%edx : PG_RETURN_VOID(); : } : : Datum : btint4cmp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:93 8.48 : 4a5c4b: 55 push %rbp 0.00 : 4a5c4c: 48 89 e5 mov %rsp,%rbp : int32 a = PG_GETARG_INT32(0); : int32 b = PG_GETARG_INT32(1); : : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 2.37 : 4a5c4f: 7f 0e jg 4a5c5f : PG_RETURN_INT32(1); : else if (a == b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 12.53 : 4a5c51: ba ff ff ff ff mov $0xffffffff,%edx 7.87 : 4a5c56: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4a5c5b: 48 0f 44 d0 cmove %rax,%rdx : PG_RETURN_INT32(0); : else : PG_RETURN_INT32(-1); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 16.73 : 4a5c5f: 48 89 d0 mov %rdx,%rax 31.32 : 4a5c62: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2195 24.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2211 23.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2195 19.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2211 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2195 1.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2195 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077d9c0 : : } : #endif /* USE_FLOAT4_BYVAL */ : : Datum : Float8GetDatum(float8 X) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2195 23.08 : 77d9c0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2195 1.28 : 77d9c1: 48 89 e5 mov %rsp,%rbp 3.03 : 77d9c4: f2 0f 11 45 f8 movsd %xmm0,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2195 27.97 : 77d9c9: 48 8b 45 f8 mov -0x8(%rbp),%rax : float8 *retval = (float8 *) palloc(sizeof(float8)); : : *retval = X; : return PointerGetDatum(retval); : #endif : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2211 44.64 : 77d9cd: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 12.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 7.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4359 7.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 5.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4365 4.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 3.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4340 3.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4340 3.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 2.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4340 2.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4347 2.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4340 2.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 2.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 1.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 1.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4376 1.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4377 1.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4378 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4358 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4378 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 1.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4365 1.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4340 0.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4355 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4348 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000707070 : : /* : * Convert int8 value to numeric. : */ : static void : int8_to_numericvar(int64 val, NumericVar *var) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4340 3.38 : 707070: 55 push %rbp 2.66 : 707071: 48 89 e5 mov %rsp,%rbp 3.38 : 707074: 41 54 push %r12 2.42 : 707076: 49 89 fc mov %rdi,%r12 0.24 : 707079: 53 push %rbx 1.09 : 70707a: 48 89 f3 mov %rsi,%rbx : newuval; : NumericDigit *ptr; : int ndigits; : : /* int8 can require at most 19 decimal digits; add one for safety */ : alloc_var(var, 20 / DEC_DIGITS); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4347 2.66 : 70707d: be 05 00 00 00 mov $0x5,%esi 0.48 : 707082: 48 89 df mov %rbx,%rdi 0.24 : 707085: e8 86 ff ff ff callq 707010 : if (val < 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4348 0.85 : 70708a: 49 83 fc 00 cmp $0x0,%r12 0.00 : 70708e: 0f 8c 8c 00 00 00 jl 707120 : var->sign = NUMERIC_NEG; : uval = -val; : } : else : { : var->sign = NUMERIC_POS; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4355 0.97 : 707094: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : uval = val; : } : var->dscale = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4358 1.81 : 70709b: c7 43 0c 00 00 00 00 movl $0x0,0xc(%rbx) : if (val == 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4359 7.61 : 7070a2: 75 1c jne 7070c0 : { : var->ndigits = 0; 0.00 : 7070a4: c7 03 00 00 00 00 movl $0x0,(%rbx) : var->weight = 0; 0.00 : 7070aa: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : uval = newuval; : } while (uval); : var->digits = ptr; : var->ndigits = ndigits; : var->weight = ndigits - 1; : } 0.00 : 7070b1: 5b pop %rbx 0.00 : 7070b2: 41 5c pop %r12 0.00 : 7070b4: c9 leaveq 0.00 : 7070b5: c3 retq 0.00 : 7070b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7070bd: 00 00 00 : uval = -val; : } : else : { : var->sign = NUMERIC_POS; : uval = val; 0.12 : 7070c0: 4c 89 e1 mov %r12,%rcx : { : var->ndigits = 0; : var->weight = 0; : return; : } : ptr = var->digits + var->ndigits; 0.12 : 7070c3: 48 63 03 movslq (%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4365 1.21 : 7070c6: 31 f6 xor %esi,%esi : ndigits = 0; : do : { : ptr--; : ndigits++; : newuval = uval / NBASE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 2.29 : 7070c8: 49 b8 4b 59 86 38 d6 movabs $0x346dc5d63886594b,%r8 0.00 : 7070cf: c5 6d 34 : { : var->ndigits = 0; : var->weight = 0; : return; : } : ptr = var->digits + var->ndigits; 0.24 : 7070d2: 48 8d 3c 00 lea (%rax,%rax,1),%rdi 0.24 : 7070d6: 48 03 7b 18 add 0x18(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4365 5.80 : 7070da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ndigits = 0; : do : { : ptr--; : ndigits++; : newuval = uval / NBASE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 1.93 : 7070e0: 48 89 c8 mov %rcx,%rax : } : ptr = var->digits + var->ndigits; : ndigits = 0; : do : { : ptr--; 0.12 : 7070e3: 48 83 ef 02 sub $0x2,%rdi : ndigits++; : newuval = uval / NBASE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 7.25 : 7070e7: 49 f7 e0 mul %r8 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4371 2.05 : 7070ea: 48 c1 ea 0b shr $0xb,%rdx : *ptr = uval - newuval * NBASE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 1.21 : 7070ee: 48 69 c2 10 27 00 00 imul $0x2710,%rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 12.92 : 7070f5: 66 29 c1 sub %ax,%cx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 3.14 : 7070f8: 89 f0 mov %esi,%eax 1.33 : 7070fa: 83 c6 01 add $0x1,%esi : uval = newuval; : } while (uval); 0.00 : 7070fd: 48 85 d2 test %rdx,%rdx : do : { : ptr--; : ndigits++; : newuval = uval / NBASE; : *ptr = uval - newuval * NBASE; 4.47 : 707100: 66 89 0f mov %cx,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4372 20.53 : 707103: 48 89 d1 mov %rdx,%rcx : uval = newuval; : } while (uval); 0.00 : 707106: 75 d8 jne 7070e0 : var->digits = ptr; 0.00 : 707108: 48 89 7b 18 mov %rdi,0x18(%rbx) : var->ndigits = ndigits; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4376 1.93 : 70710c: 89 33 mov %esi,(%rbx) : var->weight = ndigits - 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4377 1.93 : 70710e: 89 43 04 mov %eax,0x4(%rbx) : } 0.00 : 707111: 5b pop %rbx 0.00 : 707112: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4378 1.93 : 707114: c9 leaveq 1.45 : 707115: c3 retq 0.00 : 707116: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 70711d: 00 00 00 : /* int8 can require at most 19 decimal digits; add one for safety */ : alloc_var(var, 20 / DEC_DIGITS); : if (val < 0) : { : var->sign = NUMERIC_NEG; : uval = -val; 0.00 : 707120: 4c 89 e1 mov %r12,%rcx : : /* int8 can require at most 19 decimal digits; add one for safety */ : alloc_var(var, 20 / DEC_DIGITS); : if (val < 0) : { : var->sign = NUMERIC_NEG; 0.00 : 707123: c7 43 08 00 40 00 00 movl $0x4000,0x8(%rbx) : else : { : var->sign = NUMERIC_POS; : uval = val; : } : var->dscale = 0; 0.00 : 70712a: c7 43 0c 00 00 00 00 movl $0x0,0xc(%rbx) : /* int8 can require at most 19 decimal digits; add one for safety */ : alloc_var(var, 20 / DEC_DIGITS); : if (val < 0) : { : var->sign = NUMERIC_NEG; : uval = -val; 0.00 : 707131: 48 f7 d9 neg %rcx 0.00 : 707134: eb 8d jmp 7070c3 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 15.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 11.98 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3012 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 8.02 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 6.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 5.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 4.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 4.32 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 4.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3007 3.96 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3013 1.98 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 1.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3013 0.72 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 0.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674710 : : /* : * Acquire or release the content_lock for the buffer. : */ : void : LockBuffer(Buffer buffer, int mode) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 10.00 : 674710: 55 push %rbp 8.02 : 674711: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 4.68 : 674714: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 6.22 : 674715: 89 f3 mov %esi,%ebx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 0.72 : 674717: 48 83 ec 08 sub $0x8,%rsp : volatile BufferDesc *buf; : : Assert(BufferIsValid(buffer)); : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3007 4.23 : 67471b: 85 ff test %edi,%edi 0.00 : 67471d: 78 31 js 674750 : return; /* local buffers need no lock */ : : buf = &(BufferDescriptors[buffer - 1]); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 5.23 : 67471f: 48 63 c7 movslq %edi,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 1.17 : 674722: 48 83 e8 01 sub $0x1,%rax 1.44 : 674726: 48 c1 e0 06 shl $0x6,%rax 1.98 : 67472a: 48 03 05 cf b3 54 00 add 0x54b3cf(%rip),%rax # bbfb00 : : if (mode == BUFFER_LOCK_UNLOCK) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3012 11.98 : 674731: 85 f6 test %esi,%esi 0.00 : 674733: 74 2b je 674760 : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) 0.18 : 674735: 83 fe 01 cmp $0x1,%esi 0.00 : 674738: 74 36 je 674770 : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) 0.00 : 67473a: 83 fe 02 cmp $0x2,%esi 0.00 : 67473d: 75 45 jne 674784 : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); 0.00 : 67473f: 48 8b 78 38 mov 0x38(%rax),%rdi : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.00 : 674743: 48 83 c4 08 add $0x8,%rsp : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); 0.00 : 674747: 31 f6 xor %esi,%esi : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.00 : 674749: 5b pop %rbx 0.00 : 67474a: c9 leaveq : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); 0.00 : 67474b: e9 a0 b3 01 00 jmpq 68faf0 : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.00 : 674750: 48 83 c4 08 add $0x8,%rsp 0.00 : 674754: 5b pop %rbx 0.00 : 674755: c9 leaveq 0.00 : 674756: c3 retq 0.00 : 674757: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67475e: 00 00 : return; /* local buffers need no lock */ : : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3013 0.81 : 674760: 48 8b 78 38 mov 0x38(%rax),%rdi : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 16.85 : 674764: 48 83 c4 08 add $0x8,%rsp 0.45 : 674768: 5b pop %rbx 0.45 : 674769: c9 leaveq : return; /* local buffers need no lock */ : : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3013 3.96 : 67476a: e9 31 ac 01 00 jmpq 68f3a0 0.00 : 67476f: 90 nop : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 0.63 : 674770: 48 8b 78 38 mov 0x38(%rax),%rdi : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 15.86 : 674774: 48 83 c4 08 add $0x8,%rsp : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); 0.36 : 674778: be 01 00 00 00 mov $0x1,%esi : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.18 : 67477d: 5b pop %rbx 0.27 : 67477e: c9 leaveq : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 4.32 : 67477f: e9 6c b3 01 00 jmpq 68faf0 : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); 0.00 : 674784: ba 15 a0 8a 00 mov $0x8aa015,%edx 0.00 : 674789: be cb 0b 00 00 mov $0xbcb,%esi 0.00 : 67478e: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 674793: e8 88 6c 10 00 callq 77b420 0.00 : 674798: 89 da mov %ebx,%edx 0.00 : 67479a: be f8 9d 8a 00 mov $0x8a9df8,%esi 0.00 : 67479f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6747a4: 31 c0 xor %eax,%eax 0.00 : 6747a6: e8 85 6a 10 00 callq 77b230 0.00 : 6747ab: e8 20 4d df ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 12.36 ??:0 10.55 ??:0 10.30 ??:0 9.78 ??:0 9.52 ??:0 9.40 ??:0 9.40 ??:0 7.85 ??:0 7.85 ??:0 6.95 ??:0 4.12 ??:0 1.93 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000321d0 <__isinff>: ??:0 12.36 : 321d0: 66 0f 7e c1 movd %xmm0,%ecx 6.95 : 321d4: 89 ca mov %ecx,%edx ??:0 1.93 : 321d6: c1 f9 1e sar $0x1e,%ecx ??:0 9.40 : 321d9: 81 e2 ff ff ff 7f and $0x7fffffff,%edx ??:0 4.12 : 321df: 81 f2 00 00 80 7f xor $0x7f800000,%edx ??:0 7.85 : 321e5: 89 d0 mov %edx,%eax 10.30 : 321e7: f7 d8 neg %eax 10.55 : 321e9: 09 d0 or %edx,%eax 7.85 : 321eb: c1 f8 1f sar $0x1f,%eax 9.40 : 321ee: f7 d0 not %eax 19.31 : 321f0: 21 c8 and %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 76.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:503 5.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:503 2.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:514 2.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:494 1.92 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:494 1.74 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:521 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:495 1.48 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:514 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:514 1.31 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:514 1.22 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:494 0.87 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:521 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:521 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a8ad0 <_bt_checkpage>: : /* : * _bt_checkpage() -- Verify that a freshly-read page looks sane. : */ : void : _bt_checkpage(Relation rel, Buffer buf) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:494 2.27 : 4a8ad0: 55 push %rbp 0.35 : 4a8ad1: 48 89 e5 mov %rsp,%rbp 1.92 : 4a8ad4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.26 : 4a8ad8: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.09 : 4a8adc: 89 f3 mov %esi,%ebx 0.00 : 4a8ade: 4c 89 65 f0 mov %r12,-0x10(%rbp) 1.22 : 4a8ae2: 48 83 ec 20 sub $0x20,%rsp : Page page = BufferGetPage(buf); 0.09 : 4a8ae6: 85 f6 test %esi,%esi : /* : * _bt_checkpage() -- Verify that a freshly-read page looks sane. : */ : void : _bt_checkpage(Relation rel, Buffer buf) : { 0.00 : 4a8ae8: 49 89 fd mov %rdi,%r13 : Page page = BufferGetPage(buf); 0.00 : 4a8aeb: 78 3b js 4a8b28 <_bt_checkpage+0x58> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:495 1.66 : 4a8aed: 8d 43 ff lea -0x1(%rbx),%eax 0.09 : 4a8af0: 48 63 d0 movslq %eax,%rdx 0.09 : 4a8af3: 48 c1 e2 0d shl $0xd,%rdx 0.09 : 4a8af7: 48 03 15 fa 6f 71 00 add 0x716ffa(%rip),%rdx # bbfaf8 : * ReadBuffer verifies that every newly-read page passes : * PageHeaderIsValid, which means it either contains a reasonably sane : * page header or is all-zero. We have to defend against the all-zero : * case, however. : */ : if (PageIsNew(page)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:503 5.06 : 4a8afe: 66 83 7a 0e 00 cmpw $0x0,0xe(%rdx) 76.63 : 4a8b03: 74 36 je 4a8b3b <_bt_checkpage+0x6b> : errhint("Please REINDEX it."))); : : /* : * Additionally check that the special area looks sane. : */ : if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BTPageOpaqueData))) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:514 1.48 : 4a8b05: 0f b7 42 12 movzwl 0x12(%rdx),%eax 2.70 : 4a8b09: 30 c0 xor %al,%al 1.31 : 4a8b0b: 66 2b 42 10 sub 0x10(%rdx),%ax 1.39 : 4a8b0f: 66 83 f8 10 cmp $0x10,%ax 0.00 : 4a8b13: 75 4b jne 4a8b60 <_bt_checkpage+0x90> : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" contains corrupted page at block %u", : RelationGetRelationName(rel), : BufferGetBlockNumber(buf)), : errhint("Please REINDEX it."))); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:521 0.87 : 4a8b15: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 4a8b19: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.61 : 4a8b1d: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.09 : 4a8b21: c9 leaveq 1.74 : 4a8b22: c3 retq 0.00 : 4a8b23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * _bt_checkpage() -- Verify that a freshly-read page looks sane. : */ : void : _bt_checkpage(Relation rel, Buffer buf) : { : Page page = BufferGetPage(buf); 0.00 : 4a8b28: 89 f0 mov %esi,%eax 0.00 : 4a8b2a: 48 8b 15 e7 45 6d 00 mov 0x6d45e7(%rip),%rdx # b7d118 0.00 : 4a8b31: f7 d0 not %eax 0.00 : 4a8b33: 48 98 cltq 0.00 : 4a8b35: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4a8b39: eb c3 jmp 4a8afe <_bt_checkpage+0x2e> : * PageHeaderIsValid, which means it either contains a reasonably sane : * page header or is all-zero. We have to defend against the all-zero : * case, however. : */ : if (PageIsNew(page)) : ereport(ERROR, 0.00 : 4a8b3b: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8b3e: b9 04 47 7b 00 mov $0x7b4704,%ecx 0.00 : 4a8b43: ba fd 01 00 00 mov $0x1fd,%edx 0.00 : 4a8b48: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4a8b4d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a8b52: e8 69 1f 2d 00 callq 77aac0 0.00 : 4a8b57: 84 c0 test %al,%al 0.00 : 4a8b59: 75 69 jne 4a8bc4 <_bt_checkpage+0xf4> : : /* : * Additionally check that the special area looks sane. : */ : if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BTPageOpaqueData))) : ereport(ERROR, 0.00 : 4a8b5b: e8 70 09 fc ff callq 4694d0 0.00 : 4a8b60: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8b63: b9 04 47 7b 00 mov $0x7b4704,%ecx 0.00 : 4a8b68: ba 08 02 00 00 mov $0x208,%edx 0.00 : 4a8b6d: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4a8b72: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a8b77: e8 44 1f 2d 00 callq 77aac0 0.00 : 4a8b7c: 84 c0 test %al,%al 0.00 : 4a8b7e: 74 db je 4a8b5b <_bt_checkpage+0x8b> 0.00 : 4a8b80: bf 12 15 7b 00 mov $0x7b1512,%edi 0.00 : 4a8b85: 31 c0 xor %eax,%eax 0.00 : 4a8b87: e8 14 31 2d 00 callq 77bca0 0.00 : 4a8b8c: 89 df mov %ebx,%edi 0.00 : 4a8b8e: 41 89 c4 mov %eax,%r12d 0.00 : 4a8b91: e8 9a b4 1c 00 callq 674030 0.00 : 4a8b96: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 4a8b9a: 89 c2 mov %eax,%edx 0.00 : 4a8b9c: bf 38 17 7b 00 mov $0x7b1738,%edi 0.00 : 4a8ba1: 31 c0 xor %eax,%eax 0.00 : 4a8ba3: e8 f8 3c 2d 00 callq 77c8a0 0.00 : 4a8ba8: bf 28 0a 00 02 mov $0x2000a28,%edi 0.00 : 4a8bad: 89 c3 mov %eax,%ebx 0.00 : 4a8baf: e8 9c 41 2d 00 callq 77cd50 0.00 : 4a8bb4: 44 89 e2 mov %r12d,%edx 0.00 : 4a8bb7: 89 c7 mov %eax,%edi 0.00 : 4a8bb9: 89 de mov %ebx,%esi 0.00 : 4a8bbb: 31 c0 xor %eax,%eax 0.00 : 4a8bbd: e8 1e 1a 2d 00 callq 77a5e0 0.00 : 4a8bc2: eb 97 jmp 4a8b5b <_bt_checkpage+0x8b> : * PageHeaderIsValid, which means it either contains a reasonably sane : * page header or is all-zero. We have to defend against the all-zero : * case, however. : */ : if (PageIsNew(page)) : ereport(ERROR, 0.00 : 4a8bc4: bf 12 15 7b 00 mov $0x7b1512,%edi 0.00 : 4a8bc9: 31 c0 xor %eax,%eax 0.00 : 4a8bcb: e8 d0 30 2d 00 callq 77bca0 0.00 : 4a8bd0: 89 df mov %ebx,%edi 0.00 : 4a8bd2: 41 89 c4 mov %eax,%r12d 0.00 : 4a8bd5: e8 56 b4 1c 00 callq 674030 0.00 : 4a8bda: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 4a8bde: 89 c2 mov %eax,%edx 0.00 : 4a8be0: bf 00 17 7b 00 mov $0x7b1700,%edi 0.00 : 4a8be5: eb ba jmp 4a8ba1 <_bt_checkpage+0xd1> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:149 7.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:143 6.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 6.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:154 6.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:154 4.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:128 4.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:61 2.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:136 2.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:61 2.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:61 2.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:177 2.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:128 1.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:177 1.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:123 1.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:61 1.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:106 1.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:267 1.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:174 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:143 1.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:238 1.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:81 1.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:149 1.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:267 1.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:177 1.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:240 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:79 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:137 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:289 0.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:158 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:135 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:80 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:89 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:174 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:175 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:289 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:120 0.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:166 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:61 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:61 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:123 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:158 0.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:256 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c4240 : : * are prepared to return the first tuple. : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecNestLoop(NestLoopState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:61 4.56 : 5c4240: 55 push %rbp 2.49 : 5c4241: 48 89 e5 mov %rsp,%rbp 0.00 : 5c4244: 41 57 push %r15 2.49 : 5c4246: 41 56 push %r14 1.72 : 5c4248: 49 89 fe mov %rdi,%r14 0.00 : 5c424b: 41 55 push %r13 0.52 : 5c424d: 41 54 push %r12 0.52 : 5c424f: 53 push %rbx 0.09 : 5c4250: 48 83 ec 48 sub $0x48,%rsp : /* : * get information from the node : */ : ENL1_printf("getting info from node"); : : nl = (NestLoop *) node->js.ps.plan; 0.09 : 5c4254: 48 8b 47 08 mov 0x8(%rdi),%rax 0.43 : 5c4258: 48 89 45 98 mov %rax,-0x68(%rbp) : joinqual = node->js.joinqual; 0.09 : 5c425c: 48 8b 97 80 00 00 00 mov 0x80(%rdi),%rdx 0.26 : 5c4263: 48 89 55 b8 mov %rdx,-0x48(%rbp) : otherqual = node->js.ps.qual; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:79 0.95 : 5c4267: 48 8b 47 28 mov 0x28(%rdi),%rax 0.17 : 5c426b: 48 89 45 c0 mov %rax,-0x40(%rbp) : outerPlan = outerPlanState(node); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:80 0.69 : 5c426f: 48 8b 57 30 mov 0x30(%rdi),%rdx 0.00 : 5c4273: 48 89 55 a8 mov %rdx,-0x58(%rbp) : innerPlan = innerPlanState(node); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:81 1.12 : 5c4277: 48 8b 47 38 mov 0x38(%rdi),%rax 0.17 : 5c427b: 48 89 45 a0 mov %rax,-0x60(%rbp) : /* : * Check to see if we're still projecting out tuples from a previous join : * tuple (because there is a function-returning-set in the projection : * expressions). If so, try to project another one. : */ : if (node->js.ps.ps_TupFromTlist) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:89 0.69 : 5c427f: 80 7f 70 00 cmpb $0x0,0x70(%rdi) : nl = (NestLoop *) node->js.ps.plan; : joinqual = node->js.joinqual; : otherqual = node->js.ps.qual; : outerPlan = outerPlanState(node); : innerPlan = innerPlanState(node); : econtext = node->js.ps.ps_ExprContext; 0.09 : 5c4283: 4c 8b 7f 60 mov 0x60(%rdi),%r15 : /* : * Check to see if we're still projecting out tuples from a previous join : * tuple (because there is a function-returning-set in the projection : * expressions). If so, try to project another one. : */ : if (node->js.ps.ps_TupFromTlist) 0.17 : 5c4287: 74 1f je 5c42a8 : { : TupleTableSlot *result; : ExprDoneCond isDone; : : result = ExecProject(node->js.ps.ps_ProjInfo, &isDone); 0.00 : 5c4289: 48 8b 7f 68 mov 0x68(%rdi),%rdi 0.00 : 5c428d: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5c4291: e8 6a 8d fe ff callq 5ad000 : if (isDone == ExprMultipleResult) 0.00 : 5c4296: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) 0.00 : 5c429a: 0f 84 71 01 00 00 je 5c4411 : return result; : /* Done with that source tuple... */ : node->js.ps.ps_TupFromTlist = false; 0.00 : 5c42a0: 41 c6 46 70 00 movb $0x0,0x70(%r14) 0.00 : 5c42a5: 0f 1f 00 nopl (%rax) : /* : * Reset per-tuple memory context to free any expression evaluation : * storage allocated in the previous tuple cycle. Note this can't happen : * until we're done projecting out tuples from a join tuple. : */ : ResetExprContext(econtext); 0.00 : 5c42a8: 49 8b 7f 28 mov 0x28(%r15),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:106 1.55 : 5c42ac: e8 ff 46 1d 00 callq 7989b0 : { : /* : * If we don't have an outer tuple, get the next one and reset the : * inner scan. : */ : if (node->nl_NeedNewOuter) 0.09 : 5c42b1: 41 80 be 88 00 00 00 cmpb $0x0,0x88(%r14) 0.00 : 5c42b8: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:120 0.60 : 5c42b9: 0f 85 a1 00 00 00 jne 5c4360 : /* : * we have an outerTuple, try to get the next inner tuple. : */ : ENL1_printf("getting new inner tuple"); : : innerTupleSlot = ExecProcNode(innerPlan); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:174 1.38 : 5c42bf: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.69 : 5c42c3: e8 d8 81 fe ff callq 5ac4a0 : econtext->ecxt_innertuple = innerTupleSlot; : : if (TupIsNull(innerTupleSlot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:177 1.98 : 5c42c8: 48 85 c0 test %rax,%rax : * we have an outerTuple, try to get the next inner tuple. : */ : ENL1_printf("getting new inner tuple"); : : innerTupleSlot = ExecProcNode(innerPlan); : econtext->ecxt_innertuple = innerTupleSlot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:175 0.69 : 5c42cb: 49 89 47 10 mov %rax,0x10(%r15) : : if (TupIsNull(innerTupleSlot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:177 2.49 : 5c42cf: 74 0a je 5c42db 0.00 : 5c42d1: 80 78 04 00 cmpb $0x0,0x4(%rax) 1.03 : 5c42d5: 0f 84 45 01 00 00 je 5c4420 : { : ENL1_printf("no inner tuple, need new outer tuple"); : : node->nl_NeedNewOuter = true; : : if (!node->nl_MatchedOuter && 0.09 : 5c42db: 41 80 be 89 00 00 00 cmpb $0x0,0x89(%r14) 0.00 : 5c42e2: 00 : : if (TupIsNull(innerTupleSlot)) : { : ENL1_printf("no inner tuple, need new outer tuple"); : : node->nl_NeedNewOuter = true; 0.34 : 5c42e3: 41 c6 86 88 00 00 00 movb $0x1,0x88(%r14) 0.00 : 5c42ea: 01 : : if (!node->nl_MatchedOuter && 0.09 : 5c42eb: 75 c4 jne 5c42b1 0.09 : 5c42ed: 41 8b 46 78 mov 0x78(%r14),%eax 0.34 : 5c42f1: 83 f8 01 cmp $0x1,%eax 0.00 : 5c42f4: 74 05 je 5c42fb 0.09 : 5c42f6: 83 f8 05 cmp $0x5,%eax 0.00 : 5c42f9: 75 b6 jne 5c42b1 : * We are doing an outer join and there were no join matches : * for this outer tuple. Generate a fake join tuple with : * nulls for the inner tuple, and return it if it passes the : * non-join quals. : */ : econtext->ecxt_innertuple = node->nl_NullInnerTupleSlot; 0.09 : 5c42fb: 49 8b 86 90 00 00 00 mov 0x90(%r14),%rax 0.00 : 5c4302: 49 89 47 10 mov %rax,0x10(%r15) : : ENL1_printf("testing qualification for outer-join tuple"); : : if (otherqual == NIL || ExecQual(otherqual, econtext, false)) 0.00 : 5c4306: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 5c430b: 0f 84 bf 01 00 00 je 5c44d0 0.00 : 5c4311: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 5c4315: 31 d2 xor %edx,%edx 0.00 : 5c4317: 4c 89 fe mov %r15,%rsi 0.00 : 5c431a: e8 f1 8b fe ff callq 5acf10 0.00 : 5c431f: 84 c0 test %al,%al 0.00 : 5c4321: 0f 85 a9 01 00 00 jne 5c44d0 : (isDone == ExprMultipleResult); : return result; : } : } : else : InstrCountFiltered2(node, 1); 0.00 : 5c4327: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 5c432b: 48 85 c0 test %rax,%rax 0.00 : 5c432e: 74 81 je 5c42b1 0.00 : 5c4330: f2 0f 10 05 20 ae 1e movsd 0x1eae20(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5c4337: 00 0.00 : 5c4338: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5c433f: 00 0.00 : 5c4340: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5c4347: 00 : { : /* : * If we don't have an outer tuple, get the next one and reset the : * inner scan. : */ : if (node->nl_NeedNewOuter) 0.00 : 5c4348: 41 80 be 88 00 00 00 cmpb $0x0,0x88(%r14) 0.00 : 5c434f: 00 0.00 : 5c4350: 0f 84 69 ff ff ff je 5c42bf 0.00 : 5c4356: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5c435d: 00 00 00 : { : ENL1_printf("getting new outer tuple"); : outerTupleSlot = ExecProcNode(outerPlan); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:123 0.52 : 5c4360: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.09 : 5c4364: e8 37 81 fe ff callq 5ac4a0 : : /* : * if there are no more outer tuples, then the join is complete.. : */ : if (TupIsNull(outerTupleSlot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:128 4.73 : 5c4369: 48 85 c0 test %rax,%rax : * inner scan. : */ : if (node->nl_NeedNewOuter) : { : ENL1_printf("getting new outer tuple"); : outerTupleSlot = ExecProcNode(outerPlan); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:123 1.98 : 5c436c: 48 89 45 b0 mov %rax,-0x50(%rbp) : : /* : * if there are no more outer tuples, then the join is complete.. : */ : if (TupIsNull(outerTupleSlot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:128 2.24 : 5c4370: 0f 84 99 00 00 00 je 5c440f 0.00 : 5c4376: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.09 : 5c437a: 0f 85 8f 00 00 00 jne 5c440f : ENL1_printf("no outer tuple, ending join"); : return NULL; : } : : ENL1_printf("saving new outer tuple information"); : econtext->ecxt_outertuple = outerTupleSlot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:135 0.77 : 5c4380: 49 89 47 18 mov %rax,0x18(%r15) : node->nl_NeedNewOuter = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:136 2.58 : 5c4384: 41 c6 86 88 00 00 00 movb $0x0,0x88(%r14) 0.00 : 5c438b: 00 : node->nl_MatchedOuter = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:137 0.95 : 5c438c: 41 c6 86 89 00 00 00 movb $0x0,0x89(%r14) 0.00 : 5c4393: 00 : : /* : * fetch the values of any outer Vars that must be passed to the : * inner scan, and store them in the appropriate PARAM_EXEC slots. : */ : foreach(lc, nl->nestParams) 0.00 : 5c4394: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.09 : 5c4398: 48 8b 42 70 mov 0x70(%rdx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 6.79 : 5c439c: 48 85 c0 test %rax,%rax 0.00 : 5c439f: 74 60 je 5c4401 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.52 : 5c43a1: 4c 8b 68 08 mov 0x8(%rax),%r13 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:143 7.48 : 5c43a5: 4d 85 ed test %r13,%r13 0.00 : 5c43a8: 74 57 je 5c4401 0.43 : 5c43aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(lc); 0.00 : 5c43b0: 49 8b 45 00 mov 0x0(%r13),%rax : prm = &(econtext->ecxt_param_exec_vals[paramno]); : /* Param value should be an OUTER_VAR var */ : Assert(IsA(nlp->paramval, Var)); : Assert(nlp->paramval->varno == OUTER_VAR); : Assert(nlp->paramval->varattno > 0); : prm->value = slot_getattr(outerTupleSlot, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:154 6.45 : 5c43b4: 48 8b 7d b0 mov -0x50(%rbp),%rdi : * inner scan, and store them in the appropriate PARAM_EXEC slots. : */ : foreach(lc, nl->nestParams) : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(lc); : int paramno = nlp->paramno; 0.00 : 5c43b8: 44 8b 60 04 mov 0x4(%rax),%r12d : prm = &(econtext->ecxt_param_exec_vals[paramno]); : /* Param value should be an OUTER_VAR var */ : Assert(IsA(nlp->paramval, Var)); : Assert(nlp->paramval->varno == OUTER_VAR); : Assert(nlp->paramval->varattno > 0); : prm->value = slot_getattr(outerTupleSlot, 6.71 : 5c43bc: 48 8b 40 08 mov 0x8(%rax),%rax : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(lc); : int paramno = nlp->paramno; : ParamExecData *prm; : : prm = &(econtext->ecxt_param_exec_vals[paramno]); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:149 1.12 : 5c43c0: 49 63 dc movslq %r12d,%rbx : /* Param value should be an OUTER_VAR var */ : Assert(IsA(nlp->paramval, Var)); : Assert(nlp->paramval->varno == OUTER_VAR); : Assert(nlp->paramval->varattno > 0); : prm->value = slot_getattr(outerTupleSlot, 0.34 : 5c43c3: 0f bf 70 08 movswl 0x8(%rax),%esi : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(lc); : int paramno = nlp->paramno; : ParamExecData *prm; : : prm = &(econtext->ecxt_param_exec_vals[paramno]); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:149 12.12 : 5c43c7: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 5c43cb: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 5c43cf: 49 03 5f 30 add 0x30(%r15),%rbx : /* Param value should be an OUTER_VAR var */ : Assert(IsA(nlp->paramval, Var)); : Assert(nlp->paramval->varno == OUTER_VAR); : Assert(nlp->paramval->varattno > 0); : prm->value = slot_getattr(outerTupleSlot, 0.00 : 5c43d3: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.43 : 5c43d7: e8 24 b0 ea ff callq 46f400 0.26 : 5c43dc: 48 89 43 08 mov %rax,0x8(%rbx) : nlp->paramval->varattno, : &(prm->isnull)); : /* Flag parameter value as changed */ : innerPlan->chgParam = bms_add_member(innerPlan->chgParam, 0.00 : 5c43e0: 48 8b 45 a0 mov -0x60(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:158 0.86 : 5c43e4: 44 89 e6 mov %r12d,%esi 0.00 : 5c43e7: 48 8b 78 50 mov 0x50(%rax),%rdi 0.26 : 5c43eb: e8 10 ec 01 00 callq 5e3000 0.17 : 5c43f0: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.52 : 5c43f4: 48 89 42 50 mov %rax,0x50(%rdx) : : /* : * fetch the values of any outer Vars that must be passed to the : * inner scan, and store them in the appropriate PARAM_EXEC slots. : */ : foreach(lc, nl->nestParams) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:143 1.20 : 5c43f8: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.09 : 5c43fc: 4d 85 ed test %r13,%r13 0.09 : 5c43ff: 75 af jne 5c43b0 : : /* : * now rescan the inner plan : */ : ENL1_printf("rescanning inner plan"); : ExecReScan(innerPlan); 0.17 : 5c4401: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.17 : 5c4405: e8 96 40 fe ff callq 5a84a0 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:166 0.60 : 5c440a: e9 b0 fe ff ff jmpq 5c42bf : InstrCountFiltered1(node, 1); : : /* : * Tuple fails qual, so free per-tuple memory and try again. : */ : ResetExprContext(econtext); 0.00 : 5c440f: 31 c0 xor %eax,%eax : : ENL1_printf("qualification failed, looping"); : } : } 0.00 : 5c4411: 48 83 c4 48 add $0x48,%rsp 0.00 : 5c4415: 5b pop %rbx 0.00 : 5c4416: 41 5c pop %r12 0.00 : 5c4418: 41 5d pop %r13 0.00 : 5c441a: 41 5e pop %r14 0.00 : 5c441c: 41 5f pop %r15 0.00 : 5c441e: c9 leaveq 0.00 : 5c441f: c3 retq : * Only the joinquals determine MatchedOuter status, but all quals : * must pass to actually return the tuple. : */ : ENL1_printf("testing qualification"); : : if (ExecQual(joinqual, econtext, false)) 0.34 : 5c4420: 48 8b 7d b8 mov -0x48(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:238 1.20 : 5c4424: 31 d2 xor %edx,%edx 0.00 : 5c4426: 4c 89 fe mov %r15,%rsi 0.00 : 5c4429: e8 e2 8a fe ff callq 5acf10 0.17 : 5c442e: 84 c0 test %al,%al 0.00 : 5c4430: 74 6e je 5c44a0 : { : node->nl_MatchedOuter = true; : : /* In an antijoin, we never return a matched tuple */ : if (node->js.jointype == JOIN_ANTI) 0.09 : 5c4432: 41 8b 46 78 mov 0x78(%r14),%eax : */ : ENL1_printf("testing qualification"); : : if (ExecQual(joinqual, econtext, false)) : { : node->nl_MatchedOuter = true; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:240 1.03 : 5c4436: 41 c6 86 89 00 00 00 movb $0x1,0x89(%r14) 0.00 : 5c443d: 01 : : /* In an antijoin, we never return a matched tuple */ : if (node->js.jointype == JOIN_ANTI) 0.43 : 5c443e: 83 f8 05 cmp $0x5,%eax 0.00 : 5c4441: 0f 84 e1 00 00 00 je 5c4528 : : /* : * In a semijoin, we'll consider returning the first match, but : * after that we're done with this outer tuple. : */ : if (node->js.jointype == JOIN_SEMI) 0.09 : 5c4447: 83 f8 04 cmp $0x4,%eax 0.00 : 5c444a: 0f 84 e8 00 00 00 je 5c4538 : node->nl_NeedNewOuter = true; : : if (otherqual == NIL || ExecQual(otherqual, econtext, false)) 0.17 : 5c4450: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:256 0.52 : 5c4455: 0f 84 a5 00 00 00 je 5c4500 0.00 : 5c445b: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 5c445f: 31 d2 xor %edx,%edx 0.00 : 5c4461: 4c 89 fe mov %r15,%rsi 0.00 : 5c4464: e8 a7 8a fe ff callq 5acf10 0.00 : 5c4469: 84 c0 test %al,%al 0.00 : 5c446b: 0f 85 8f 00 00 00 jne 5c4500 : (isDone == ExprMultipleResult); : return result; : } : } : else : InstrCountFiltered2(node, 1); 0.00 : 5c4471: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 5c4475: 48 85 c0 test %rax,%rax 0.00 : 5c4478: 0f 84 2a fe ff ff je 5c42a8 0.00 : 5c447e: f2 0f 10 05 d2 ac 1e movsd 0x1eacd2(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5c4485: 00 0.00 : 5c4486: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5c448d: 00 0.00 : 5c448e: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5c4495: 00 0.00 : 5c4496: e9 0d fe ff ff jmpq 5c42a8 0.00 : 5c449b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : InstrCountFiltered1(node, 1); 0.00 : 5c44a0: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 5c44a4: 48 85 c0 test %rax,%rax 0.00 : 5c44a7: 0f 84 fb fd ff ff je 5c42a8 0.00 : 5c44ad: f2 0f 10 05 a3 ac 1e movsd 0x1eaca3(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5c44b4: 00 0.00 : 5c44b5: f2 0f 58 80 c8 00 00 addsd 0xc8(%rax),%xmm0 0.00 : 5c44bc: 00 0.00 : 5c44bd: f2 0f 11 80 c8 00 00 movsd %xmm0,0xc8(%rax) 0.00 : 5c44c4: 00 0.00 : 5c44c5: e9 de fd ff ff jmpq 5c42a8 0.00 : 5c44ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : TupleTableSlot *result; : ExprDoneCond isDone; : : ENL1_printf("qualification succeeded, projecting tuple"); : : result = ExecProject(node->js.ps.ps_ProjInfo, &isDone); 0.00 : 5c44d0: 49 8b 7e 68 mov 0x68(%r14),%rdi 0.00 : 5c44d4: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5c44d8: e8 23 8b fe ff callq 5ad000 : : if (isDone != ExprEndResult) 0.00 : 5c44dd: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 5c44e0: 83 fa 02 cmp $0x2,%edx 0.00 : 5c44e3: 0f 84 c8 fd ff ff je 5c42b1 : : result = ExecProject(node->js.ps.ps_ProjInfo, &isDone); : : if (isDone != ExprEndResult) : { : node->js.ps.ps_TupFromTlist = 0.00 : 5c44e9: 83 ea 01 sub $0x1,%edx 0.00 : 5c44ec: 41 0f 94 46 70 sete 0x70(%r14) : */ : ResetExprContext(econtext); : : ENL1_printf("qualification failed, looping"); : } : } 0.09 : 5c44f1: 48 83 c4 48 add $0x48,%rsp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:289 0.69 : 5c44f5: 5b pop %rbx 0.26 : 5c44f6: 41 5c pop %r12 0.00 : 5c44f8: 41 5d pop %r13 0.09 : 5c44fa: 41 5e pop %r14 0.17 : 5c44fc: 41 5f pop %r15 0.95 : 5c44fe: c9 leaveq 0.43 : 5c44ff: c3 retq : TupleTableSlot *result; : ExprDoneCond isDone; : : ENL1_printf("qualification succeeded, projecting tuple"); : : result = ExecProject(node->js.ps.ps_ProjInfo, &isDone); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeNestloop.c:267 1.12 : 5c4500: 49 8b 7e 68 mov 0x68(%r14),%rdi 1.46 : 5c4504: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5c4508: e8 f3 8a fe ff callq 5ad000 : : if (isDone != ExprEndResult) 0.00 : 5c450d: 8b 55 d4 mov -0x2c(%rbp),%edx 0.43 : 5c4510: 83 fa 02 cmp $0x2,%edx 0.00 : 5c4513: 0f 84 8f fd ff ff je 5c42a8 : { : node->js.ps.ps_TupFromTlist = 0.00 : 5c4519: 83 ea 01 sub $0x1,%edx 0.09 : 5c451c: 41 0f 94 46 70 sete 0x70(%r14) 0.34 : 5c4521: eb ce jmp 5c44f1 0.00 : 5c4523: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : node->nl_MatchedOuter = true; : : /* In an antijoin, we never return a matched tuple */ : if (node->js.jointype == JOIN_ANTI) : { : node->nl_NeedNewOuter = true; 0.09 : 5c4528: 41 c6 86 88 00 00 00 movb $0x1,0x88(%r14) 0.00 : 5c452f: 01 : continue; /* return to top of loop */ 0.00 : 5c4530: e9 7c fd ff ff jmpq 5c42b1 0.00 : 5c4535: 0f 1f 00 nopl (%rax) : /* : * In a semijoin, we'll consider returning the first match, but : * after that we're done with this outer tuple. : */ : if (node->js.jointype == JOIN_SEMI) : node->nl_NeedNewOuter = true; 0.09 : 5c4538: 41 c6 86 88 00 00 00 movb $0x1,0x88(%r14) 0.00 : 5c453f: 01 0.00 : 5c4540: e9 0b ff ff ff jmpq 5c4450 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 7.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 7.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 6.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 6.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 6.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:999 6.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:952 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:336 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1001 4.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1001 2.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1001 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:952 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1001 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007986d0 : : * AllocSetFree : * Frees allocated memory; memory is removed from the set. : */ : static void : AllocSetFree(MemoryContext context, void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 6.94 : 7986d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 0.69 : 7986d1: 48 89 f9 mov %rdi,%rcx 0.10 : 7986d4: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 7.04 : 7986d7: 53 push %rbx : AllocSet set = (AllocSet) context; : AllocChunk chunk = AllocPointerGetChunk(pointer); 0.50 : 7986d8: 48 8d 5e f0 lea -0x10(%rsi),%rbx : * AllocSetFree : * Frees allocated memory; memory is removed from the set. : */ : static void : AllocSetFree(MemoryContext context, void *pointer) : { 0.00 : 7986dc: 48 83 ec 08 sub $0x8,%rsp : if (!sentinel_ok(pointer, chunk->requested_size)) : elog(WARNING, "detected write past chunk end in %s %p", : set->header.name, chunk); : #endif : : if (chunk->size > set->allocChunkLimit) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:952 6.35 : 7986e0: 48 8b 46 f8 mov -0x8(%rsi),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:952 0.99 : 7986e4: 48 3b 87 b0 00 00 00 cmp 0xb0(%rdi),%rax 0.00 : 7986eb: 76 63 jbe 798750 : { : /* : * Big chunks are certain to have been allocated as single-chunk : * blocks. Find the containing block and return it to malloc(). : */ : AllocBlock block = set->blocks; 0.00 : 7986ed: 48 8b 7f 38 mov 0x38(%rdi),%rdi : AllocBlock prevblock = NULL; : : while (block != NULL) 0.00 : 7986f1: 48 85 ff test %rdi,%rdi 0.00 : 7986f4: 74 2c je 798722 : { : if (chunk == (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ)) 0.00 : 7986f6: 48 8d 47 20 lea 0x20(%rdi),%rax 0.00 : 7986fa: 48 39 c3 cmp %rax,%rbx 0.00 : 7986fd: 75 17 jne 798716 0.00 : 7986ff: 90 nop 0.00 : 798700: e9 be 00 00 00 jmpq 7987c3 0.00 : 798705: 0f 1f 00 nopl (%rax) 0.00 : 798708: 48 8d 47 20 lea 0x20(%rdi),%rax 0.00 : 79870c: 48 39 c3 cmp %rax,%rbx 0.00 : 79870f: 90 nop 0.00 : 798710: 0f 84 8a 00 00 00 je 7987a0 : break; 0.00 : 798716: 48 89 fa mov %rdi,%rdx : prevblock = block; : block = block->next; 0.00 : 798719: 48 8b 7f 08 mov 0x8(%rdi),%rdi : * blocks. Find the containing block and return it to malloc(). : */ : AllocBlock block = set->blocks; : AllocBlock prevblock = NULL; : : while (block != NULL) 0.00 : 79871d: 48 85 ff test %rdi,%rdi 0.00 : 798720: 75 e6 jne 798708 : break; : prevblock = block; : block = block->next; : } : if (block == NULL) : elog(ERROR, "could not find block containing chunk %p", chunk); 0.00 : 798722: ba 70 1e 8e 00 mov $0x8e1e70,%edx 0.00 : 798727: be c9 03 00 00 mov $0x3c9,%esi 0.00 : 79872c: bf 6d 1d 8e 00 mov $0x8e1d6d,%edi 0.00 : 798731: e8 ea 2c fe ff callq 77b420 0.00 : 798736: 48 89 da mov %rbx,%rdx 0.00 : 798739: be 08 1e 8e 00 mov $0x8e1e08,%esi 0.00 : 79873e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798743: 31 c0 xor %eax,%eax 0.00 : 798745: e8 e6 2a fe ff callq 77b230 0.00 : 79874a: e8 81 0d cd ff callq 4694d0 0.00 : 79874f: 90 nop : { : int idx; : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 0.89 : 798750: 31 d2 xor %edx,%edx 0.10 : 798752: 48 83 f8 08 cmp $0x8,%rax 0.00 : 798756: 77 20 ja 798778 : else : { : /* Normal case, put the chunk into appropriate freelist */ : int fidx = AllocSetFreeIndex(chunk->size); : : chunk->aset = (void *) set->freelist[fidx]; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 1.09 : 798758: 48 63 c2 movslq %edx,%rax 0.99 : 79875b: 48 83 c0 08 add $0x8,%rax 2.38 : 79875f: 48 8b 14 c1 mov (%rcx,%rax,8),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 30.46 : 798763: 48 89 56 f0 mov %rdx,-0x10(%rsi) : : #ifdef MEMORY_CONTEXT_CHECKING : /* Reset requested_size to 0 in chunks that are on freelist */ : chunk->requested_size = 0; : #endif : set->freelist[fidx] = chunk; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:999 6.55 : 798767: 48 89 1c c1 mov %rbx,(%rcx,%rax,8) : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1001 5.26 : 79876b: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1001 0.69 : 79876f: 5b pop %rbx 4.07 : 798770: c9 leaveq 2.98 : 798771: c3 retq 0.00 : 798772: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) : { : tsize = (size - 1) >> ALLOC_MINBITS; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 6.75 : 798778: 48 83 e8 01 sub $0x1,%rax 0.00 : 79877c: 48 89 c2 mov %rax,%rdx 0.00 : 79877f: 48 c1 ea 03 shr $0x3,%rdx : * justify micro-optimization effort. The best approach seems to be : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; 0.40 : 798783: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:336 6.25 : 798785: c1 e8 08 shr $0x8,%eax : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.30 : 798788: 85 c0 test %eax,%eax 0.00 : 79878a: 74 2c je 7987b8 0.00 : 79878c: 89 c0 mov %eax,%eax 0.00 : 79878e: 0f b6 80 80 1e 8e 00 movzbl 0x8e1e80(%rax),%eax 0.00 : 798795: 8d 50 08 lea 0x8(%rax),%edx 0.00 : 798798: eb be jmp 798758 0.00 : 79879a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* OK, remove block from aset's list and free it */ : if (prevblock == NULL) : set->blocks = block->next; : else : prevblock->next = block->next; 0.00 : 7987a0: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 7987a4: 48 89 42 08 mov %rax,0x8(%rdx) : /* Reset requested_size to 0 in chunks that are on freelist */ : chunk->requested_size = 0; : #endif : set->freelist[fidx] = chunk; : } : } 0.00 : 7987a8: 48 83 c4 08 add $0x8,%rsp 0.00 : 7987ac: 5b pop %rbx 0.00 : 7987ad: c9 leaveq : else : prevblock->next = block->next; : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); 0.00 : 7987ae: e9 6d 10 cd ff jmpq 469820 0.00 : 7987b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.30 : 7987b8: 89 d0 mov %edx,%eax 0.10 : 7987ba: 0f b6 90 80 1e 8e 00 movzbl 0x8e1e80(%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 7.84 : 7987c1: eb 95 jmp 798758 : Assert(block->freeptr == ((char *) block) + : (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)); : : /* OK, remove block from aset's list and free it */ : if (prevblock == NULL) : set->blocks = block->next; 0.00 : 7987c3: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 7987c7: 48 89 41 38 mov %rax,0x38(%rcx) 0.00 : 7987cb: eb db jmp 7987a8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 32.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:113 29.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:112 24.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:116 13.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:113 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c5910 : : * access method functions. : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecSeqScan(SeqScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:112 29.65 : 5c5910: 55 push %rbp : return ExecScan((ScanState *) node, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:113 13.37 : 5c5911: ba 30 57 5c 00 mov $0x5c5730,%edx 0.00 : 5c5916: be 30 59 5c 00 mov $0x5c5930,%esi : * access method functions. : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecSeqScan(SeqScanState *node) : { 0.00 : 5c591b: 48 89 e5 mov %rsp,%rbp : return ExecScan((ScanState *) node, : (ExecScanAccessMtd) SeqNext, : (ExecScanRecheckMtd) SeqRecheck); : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:116 24.42 : 5c591e: c9 leaveq : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecSeqScan(SeqScanState *node) : { : return ExecScan((ScanState *) node, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:113 32.56 : 5c591f: e9 2c de fe ff jmpq 5b3750 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:573 9.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 6.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:541 5.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:541 5.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:541 5.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:559 5.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:573 5.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:549 4.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:558 3.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:559 3.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 3.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 2.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 2.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 1.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:559 1.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:559 1.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 1.13 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 0.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 0.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a9510 : : * Also, the caller must select an appropriate memory context for running : * the compare functions. (dynahash.c doesn't change CurrentMemoryContext.) : */ : static int : TupleHashTableMatch(const void *key1, const void *key2, Size keysize) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:541 5.93 : 5a9510: 55 push %rbp : * LookupTupleHashEntry's dummy TupleHashEntryData. The other direction : * could be supported too, but is not currently used by dynahash.c. : */ : Assert(tuple1 != NULL); : slot1 = hashtable->tableslot; : ExecStoreMinimalTuple(tuple1, slot1, false); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:559 5.23 : 5a9511: 31 d2 xor %edx,%edx : * Also, the caller must select an appropriate memory context for running : * the compare functions. (dynahash.c doesn't change CurrentMemoryContext.) : */ : static int : TupleHashTableMatch(const void *key1, const void *key2, Size keysize) : { 0.00 : 5a9513: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:541 6.64 : 5a9516: 41 54 push %r12 5.51 : 5a9518: 53 push %rbx : #ifdef USE_ASSERT_CHECKING : MinimalTuple tuple2 = ((const TupleHashEntryData *) key2)->firstTuple; : #endif : TupleTableSlot *slot1; : TupleTableSlot *slot2; : TupleHashTable hashtable = CurTupleHashTable; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:549 5.08 : 5a9519: 48 8b 1d a0 03 5d 00 mov 0x5d03a0(%rip),%rbx # b798c0 : * LookupTupleHashEntry's dummy TupleHashEntryData. The other direction : * could be supported too, but is not currently used by dynahash.c. : */ : Assert(tuple1 != NULL); : slot1 = hashtable->tableslot; : ExecStoreMinimalTuple(tuple1, slot1, false); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:559 3.67 : 5a9520: 48 8b 3f mov (%rdi),%rdi : * argument being an actual table entry, and the second argument being : * LookupTupleHashEntry's dummy TupleHashEntryData. The other direction : * could be supported too, but is not currently used by dynahash.c. : */ : Assert(tuple1 != NULL); : slot1 = hashtable->tableslot; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:558 4.24 : 5a9523: 4c 8b 63 40 mov 0x40(%rbx),%r12 : ExecStoreMinimalTuple(tuple1, slot1, false); /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:559 1.69 : 5a9527: 4c 89 e6 mov %r12,%rsi 1.55 : 5a952a: e8 b1 ae 00 00 callq 5b43e0 : Assert(tuple2 == NULL); : slot2 = hashtable->inputslot; : : /* For crosstype comparisons, the inputslot must be first */ : if (execTuplesMatch(slot2, /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 1.41 : 5a952f: 48 8b 4b 10 mov 0x10(%rbx),%rcx 0.71 : 5a9533: 8b 53 08 mov 0x8(%rbx),%edx 2.82 : 5a9536: 4c 89 e6 mov %r12,%rsi 3.53 : 5a9539: 48 8b 7b 48 mov 0x48(%rbx),%rdi 2.97 : 5a953d: 4c 8b 4b 30 mov 0x30(%rbx),%r9 1.13 : 5a9541: 4c 8b 43 58 mov 0x58(%rbx),%r8 3.39 : 5a9545: e8 f6 fe ff ff callq 5a9440 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 9.75 : 5a954a: 84 c0 test %al,%al : hashtable->cur_eq_funcs, : hashtable->tempcxt)) : return 0; : else : return 1; : } 0.00 : 5a954c: 5b pop %rbx : ExecStoreMinimalTuple(tuple1, slot1, false); : Assert(tuple2 == NULL); : slot2 = hashtable->inputslot; : : /* For crosstype comparisons, the inputslot must be first */ : if (execTuplesMatch(slot2, 0.00 : 5a954d: 0f 94 c0 sete %al /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:564 0.99 : 5a9550: 0f b6 c0 movzbl %al,%eax : hashtable->cur_eq_funcs, : hashtable->tempcxt)) : return 0; : else : return 1; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:573 5.23 : 5a9553: 41 5c pop %r12 28.53 : 5a9555: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 10.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 9.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:459 8.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:459 6.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 5.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 5.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 4.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:459 3.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 3.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:464 2.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:464 2.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:462 2.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 2.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:470 1.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:464 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:459 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:470 1.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c7610 : : * time zone : */ : : static Timestamp : date2timestamp(DateADT dateVal) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:459 8.09 : 6c7610: 55 push %rbp 9.74 : 6c7611: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:459 1.78 : 6c7614: 53 push %rbx 4.66 : 6c7615: 48 83 ec 08 sub $0x8,%rsp : Timestamp result; : : if (DATE_IS_NOBEGIN(dateVal)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:462 2.47 : 6c7619: 81 ff 00 00 00 80 cmp $0x80000000,%edi 0.00 : 6c761f: 74 57 je 6c7678 : TIMESTAMP_NOBEGIN(result); : else if (DATE_IS_NOEND(dateVal)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:464 1.92 : 6c7621: 81 ff ff ff ff 7f cmp $0x7fffffff,%edi 3.84 : 6c7627: 48 be ff ff ff ff ff movabs $0x7fffffffffffffff,%rsi 0.00 : 6c762e: ff ff 7f 2.88 : 6c7631: 74 37 je 6c766a : TIMESTAMP_NOEND(result); : else : { : #ifdef HAVE_INT64_TIMESTAMP : /* date is days since 2000, timestamp is microseconds since same... */ : result = dateVal * USECS_PER_DAY; 0.14 : 6c7633: 48 63 cf movslq %edi,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:470 1.65 : 6c7636: 48 b8 00 60 d7 1d 14 movabs $0x141dd76000,%rax 0.00 : 6c763d: 00 00 00 : /* Date's range is wider than timestamp's, so check for overflow */ : if (result / USECS_PER_DAY != dateVal) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 3.98 : 6c7640: 48 ba 97 b8 a1 56 b9 movabs $0x32e73fb956a1b897,%rdx 0.00 : 6c7647: 3f e7 32 : TIMESTAMP_NOEND(result); : else : { : #ifdef HAVE_INT64_TIMESTAMP : /* date is days since 2000, timestamp is microseconds since same... */ : result = dateVal * USECS_PER_DAY; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:470 2.06 : 6c764a: 48 89 ce mov %rcx,%rsi 0.41 : 6c764d: 48 0f af f0 imul %rax,%rsi : /* Date's range is wider than timestamp's, so check for overflow */ : if (result / USECS_PER_DAY != dateVal) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 2.33 : 6c7651: 48 89 f0 mov %rsi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 5.21 : 6c7654: 48 f7 ea imul %rdx 16.19 : 6c7657: 48 89 f0 mov %rsi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 0.69 : 6c765a: 48 c1 f8 3f sar $0x3f,%rax 0.96 : 6c765e: 48 c1 fa 22 sar $0x22,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:472 5.76 : 6c7662: 48 29 c2 sub %rax,%rdx 5.76 : 6c7665: 48 39 d1 cmp %rdx,%rcx 0.00 : 6c7668: 75 22 jne 6c768c : result = dateVal * (double) SECS_PER_DAY; : #endif : } : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 6.04 : 6c766a: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 0.96 : 6c766e: 48 89 f0 mov %rsi,%rax 1.10 : 6c7671: 5b pop %rbx 0.55 : 6c7672: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:483 10.84 : 6c7673: c3 retq 0.00 : 6c7674: 0f 1f 40 00 nopl 0x0(%rax) : #ifdef HAVE_INT64_TIMESTAMP : /* date is days since 2000, timestamp is microseconds since same... */ : result = dateVal * USECS_PER_DAY; : /* Date's range is wider than timestamp's, so check for overflow */ : if (result / USECS_PER_DAY != dateVal) : ereport(ERROR, 0.00 : 6c7678: 48 be 00 00 00 00 00 movabs $0x8000000000000000,%rsi 0.00 : 6c767f: 00 00 80 : result = dateVal * (double) SECS_PER_DAY; : #endif : } : : return result; : } 0.00 : 6c7682: 48 83 c4 08 add $0x8,%rsp 0.00 : 6c7686: 48 89 f0 mov %rsi,%rax 0.00 : 6c7689: 5b pop %rbx 0.00 : 6c768a: c9 leaveq 0.00 : 6c768b: c3 retq : #ifdef HAVE_INT64_TIMESTAMP : /* date is days since 2000, timestamp is microseconds since same... */ : result = dateVal * USECS_PER_DAY; : /* Date's range is wider than timestamp's, so check for overflow */ : if (result / USECS_PER_DAY != dateVal) : ereport(ERROR, 0.00 : 6c768c: 45 31 c0 xor %r8d,%r8d 0.00 : 6c768f: b9 c7 9a 8b 00 mov $0x8b9ac7,%ecx 0.00 : 6c7694: ba db 01 00 00 mov $0x1db,%edx 0.00 : 6c7699: be d3 94 8b 00 mov $0x8b94d3,%esi 0.00 : 6c769e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6c76a3: e8 18 34 0b 00 callq 77aac0 0.00 : 6c76a8: 84 c0 test %al,%al 0.00 : 6c76aa: 75 05 jne 6c76b1 0.00 : 6c76ac: e8 1f 1e da ff callq 4694d0 0.00 : 6c76b1: bf 90 95 8b 00 mov $0x8b9590,%edi 0.00 : 6c76b6: 31 c0 xor %eax,%eax 0.00 : 6c76b8: e8 e3 51 0b 00 callq 77c8a0 0.00 : 6c76bd: bf 82 00 00 08 mov $0x8000082,%edi 0.00 : 6c76c2: 89 c3 mov %eax,%ebx 0.00 : 6c76c4: e8 87 56 0b 00 callq 77cd50 0.00 : 6c76c9: 89 de mov %ebx,%esi 0.00 : 6c76cb: 89 c7 mov %eax,%edi 0.00 : 6c76cd: 31 c0 xor %eax,%eax 0.00 : 6c76cf: e8 0c 2f 0b 00 callq 77a5e0 0.00 : 6c76d4: eb d6 jmp 6c76ac Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 6.80 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 6.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1098 5.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1066 5.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1098 5.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 5.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 4.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:978 4.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 4.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:914 4.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1092 3.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 3.20 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 2.14 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 2.04 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 1.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.84 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 1.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 1.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 1.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 1.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 1.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 1.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 1.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 1.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 1.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 1.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1065 1.07 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 0.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 0.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 0.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 0.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068faf0 : : * : * Side effect: cancel/die interrupts are held off until lock release. : */ : bool : LWLockAcquire(LWLock *l, LWLockMode mode) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 2.33 : 68faf0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 6.80 : 68faf1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 1.26 : 68faf4: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 5.05 : 68faf6: 41 89 f7 mov %esi,%r15d /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 2.04 : 68faf9: 41 56 push %r14 1.46 : 68fafb: 49 89 fe mov %rdi,%r14 0.00 : 68fafe: 41 55 push %r13 1.65 : 68fb00: 41 54 push %r12 2.14 : 68fb02: 53 push %rbx 1.46 : 68fb03: 48 83 ec 18 sub $0x18,%rsp : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.55 : 68fb07: 81 3d f7 de 4e 00 c7 cmpl $0xc7,0x4edef7(%rip) # b7da08 0.00 : 68fb0e: 00 00 00 : : /* internal function to implement LWLockAcquire and LWLockAcquireWithVar */ : static inline bool : LWLockAcquireCommon(LWLock *lock, LWLockMode mode, uint64 *valptr, uint64 val) : { : PGPROC *proc = MyProc; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:914 4.27 : 68fb11: 4c 8b 25 30 de 4e 00 mov 0x4ede30(%rip),%r12 # b7d948 : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.94 : 68fb18: 0f 8f 0c 01 00 00 jg 68fc2a : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 0.97 : 68fb1e: 8b 05 74 a5 52 00 mov 0x52a574(%rip),%eax # bba098 : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; : : /* not waiting anymore */ : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 1.75 : 68fb24: 48 8d 57 08 lea 0x8(%rdi),%rdx : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1065 1.17 : 68fb28: 4d 8d 6c 24 10 lea 0x10(%r12),%r13 : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; : : /* not waiting anymore */ : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 0.58 : 68fb2d: 31 db xor %ebx,%ebx 0.78 : 68fb2f: c6 45 c7 01 movb $0x1,-0x39(%rbp) 3.30 : 68fb33: 48 89 55 c8 mov %rdx,-0x38(%rbp) : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 1.75 : 68fb37: 83 c0 01 add $0x1,%eax 0.68 : 68fb3a: 89 05 58 a5 52 00 mov %eax,0x52a558(%rip) # bba098 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 1.84 : 68fb40: 48 8d 47 01 lea 0x1(%rdi),%rax 1.65 : 68fb44: 48 89 45 d0 mov %rax,-0x30(%rbp) 1.07 : 68fb48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68fb4f: 00 : bool mustwait; : : /* : * try to grab the lock the first time, we're not in the waitqueue yet. : */ : mustwait = LWLockAttemptLock(lock, mode, NULL); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 0.68 : 68fb50: 31 d2 xor %edx,%edx 1.65 : 68fb52: 44 89 fe mov %r15d,%esi 3.20 : 68fb55: 4c 89 f7 mov %r14,%rdi 1.75 : 68fb58: e8 63 f3 ff ff callq 68eec0 : : if (!mustwait) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:978 4.56 : 68fb5d: 84 c0 test %al,%al 0.00 : 68fb5f: 74 79 je 68fbda : * other lock will see our queue entries when releasing since they : * existed before we checked for the lock. : */ : : /* add to the queue */ : LWLockQueueSelf(lock, mode); 0.00 : 68fb61: 44 89 fe mov %r15d,%esi 0.10 : 68fb64: 4c 89 f7 mov %r14,%rdi 0.00 : 68fb67: e8 14 f5 ff ff callq 68f080 : : /* we're now guaranteed to be woken up if necessary */ : mustwait = LWLockAttemptLock(lock, mode, NULL); 0.00 : 68fb6c: 31 d2 xor %edx,%edx 0.10 : 68fb6e: 44 89 fe mov %r15d,%esi 0.00 : 68fb71: 4c 89 f7 mov %r14,%rdi 0.00 : 68fb74: e8 47 f3 ff ff callq 68eec0 : : /* ok, grabbed the lock the second time round, need to undo queueing */ : if (!mustwait) 0.00 : 68fb79: 84 c0 test %al,%al 0.00 : 68fb7b: 75 06 jne 68fb83 0.00 : 68fb7d: eb 30 jmp 68fbaf 0.00 : 68fb7f: 90 nop : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68fb80: 83 c3 01 add $0x1,%ebx : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68fb83: 31 f6 xor %esi,%esi 0.00 : 68fb85: 4c 89 ef mov %r13,%rdi 0.00 : 68fb88: e8 93 85 fa ff callq 638120 : if (!proc->lwWaiting) 0.10 : 68fb8d: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1066 5.73 : 68fb93: 75 eb jne 68fb80 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.10 : 68fb95: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 68fb99: c6 00 01 movb $0x1,(%rax) : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68fb9c: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68fba1: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 68fba5: f0 0f c1 02 lock xadd %eax,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.97 : 68fba9: c6 45 c7 00 movb $0x0,-0x39(%rbp) 0.00 : 68fbad: eb a1 jmp 68fb50 : LOG_LWDEBUG("LWLockAcquire", lock, "acquired, undoing queue"); : : #ifdef LWLOCK_STATS : lwstats->dequeue_self_count++; : #endif : if (!LWLockDequeueSelf(lock)) 0.00 : 68fbaf: 4c 89 f7 mov %r14,%rdi 0.00 : 68fbb2: e8 19 f6 ff ff callq 68f1d0 0.00 : 68fbb7: 84 c0 test %al,%al 0.00 : 68fbb9: 75 1f jne 68fbda 0.00 : 68fbbb: eb 06 jmp 68fbc3 0.00 : 68fbbd: 0f 1f 00 nopl (%rax) : for (;;) : { : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68fbc0: 83 c3 01 add $0x1,%ebx : * reset at some inconvenient point later, and releaseOk : * wouldn't be managed correctly. : */ : for (;;) : { : PGSemaphoreLock(&proc->sem, false); 0.00 : 68fbc3: 31 f6 xor %esi,%esi 0.00 : 68fbc5: 4c 89 ef mov %r13,%rdi 0.00 : 68fbc8: e8 53 85 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68fbcd: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) 0.00 : 68fbd3: 75 eb jne 68fbc0 : /* : * Reset releaseOk - if somebody woke us they'll have set it : * to false. No need for a barrier here - we got the lock and : * will perform wakeup if necessary. : */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68fbd5: 41 c6 46 01 01 movb $0x1,0x1(%r14) : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1092 4.17 : 68fbda: 8b 15 28 de 4e 00 mov 0x4ede28(%rip),%edx # b7da08 0.00 : 68fbe0: 48 63 c2 movslq %edx,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68fbe3: 83 c2 01 add $0x1,%edx : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68fbe6: 48 c1 e0 04 shl $0x4,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1098 5.53 : 68fbea: 85 db test %ebx,%ebx : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68fbec: 89 15 16 de 4e 00 mov %edx,0x4ede16(%rip) # b7da08 : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68fbf2: 4c 89 b0 40 da b7 00 mov %r14,0xb7da40(%rax) : held_lwlocks[num_held_lwlocks++].mode = mode; 0.29 : 68fbf9: 44 89 b8 48 da b7 00 mov %r15d,0xb7da48(%rax) : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 6.21 : 68fc00: 7e 15 jle 68fc17 0.00 : 68fc02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : PGSemaphoreUnlock(&proc->sem); 0.00 : 68fc08: 4c 89 ef mov %r13,%rdi 0.00 : 68fc0b: 83 eb 01 sub $0x1,%ebx 0.00 : 68fc0e: e8 7d 84 fa ff callq 638090 : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68fc13: 85 db test %ebx,%ebx 0.00 : 68fc15: 7f f1 jg 68fc08 : */ : bool : LWLockAcquire(LWLock *l, LWLockMode mode) : { : return LWLockAcquireCommon(l, mode, NULL, 0); : } 0.10 : 68fc17: 0f b6 45 c7 movzbl -0x39(%rbp),%eax 0.29 : 68fc1b: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 4.56 : 68fc1f: 5b pop %rbx 0.00 : 68fc20: 41 5c pop %r12 0.49 : 68fc22: 41 5d pop %r13 0.00 : 68fc24: 41 5e pop %r14 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 5.05 : 68fc26: 41 5f pop %r15 0.00 : 68fc28: c9 leaveq 6.89 : 68fc29: c3 retq : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) : elog(ERROR, "too many LWLocks taken"); 0.00 : 68fc2a: ba 70 d1 8a 00 mov $0x8ad170,%edx 0.00 : 68fc2f: be b0 03 00 00 mov $0x3b0,%esi 0.00 : 68fc34: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68fc39: e8 e2 b7 0e 00 callq 77b420 0.00 : 68fc3e: be 8e d0 8a 00 mov $0x8ad08e,%esi 0.00 : 68fc43: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68fc48: 31 c0 xor %eax,%eax 0.00 : 68fc4a: e8 e1 b5 0e 00 callq 77b230 0.00 : 68fc4f: e8 7c 98 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 4.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:511 3.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:473 3.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:507 3.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 3.57 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:500 3.36 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 3.26 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:382 3.16 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:505 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 2.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 2.75 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:326 2.75 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:326 2.55 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:327 2.55 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:505 2.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:326 2.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:326 2.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 2.14 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:462 1.83 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 1.83 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 1.83 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:511 1.83 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 1.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:374 1.73 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 1.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:497 1.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:382 1.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:500 1.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:486 1.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:328 1.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 1.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:481 1.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:382 1.12 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 1.02 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:397 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:500 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:496 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:511 0.71 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:397 0.71 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:494 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:374 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:511 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:511 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046f990 : : */ : Datum : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:326 2.45 : 46f990: 55 push %rbp : * 2: Has a null or a var-width AFTER att. : * 3: Has nulls or var-widths BEFORE att. : * ---------------- : */ : : attnum--; 0.41 : 46f991: 44 8d 56 ff lea -0x1(%rsi),%r10d : */ : Datum : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { 0.10 : 46f995: 48 89 e5 mov %rsp,%rbp 2.45 : 46f998: 41 57 push %r15 0.00 : 46f99a: 41 56 push %r14 0.00 : 46f99c: 41 55 push %r13 2.75 : 46f99e: 41 54 push %r12 0.00 : 46f9a0: 53 push %rbx 0.10 : 46f9a1: 48 83 ec 28 sub $0x28,%rsp 2.75 : 46f9a5: 48 89 7d c8 mov %rdi,-0x38(%rbp) : HeapTupleHeader tup = tuple->t_data; 0.00 : 46f9a9: 48 8b 45 c8 mov -0x38(%rbp),%rax : */ : Datum : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { 0.10 : 46f9ad: 48 89 d7 mov %rdx,%rdi : HeapTupleHeader tup = tuple->t_data; 0.10 : 46f9b0: 4c 8b 40 10 mov 0x10(%rax),%r8 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:327 2.55 : 46f9b4: 4c 89 45 d0 mov %r8,-0x30(%rbp) : * ---------------- : */ : : attnum--; : : if (!HeapTupleNoNulls(tuple)) 0.10 : 46f9b8: 45 0f b7 48 14 movzwl 0x14(%r8),%r9d : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { : HeapTupleHeader tup = tuple->t_data; : Form_pg_attribute *att = tupleDesc->attrs; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:328 1.33 : 46f9bd: 4c 8b 7a 08 mov 0x8(%rdx),%r15 : * ---------------- : */ : : attnum--; : : if (!HeapTupleNoNulls(tuple)) 0.10 : 46f9c1: 41 f6 c1 01 test $0x1,%r9b 0.00 : 46f9c5: 0f 84 25 01 00 00 je 46faf0 : /* : * there's a null somewhere in the tuple : * : * check to see if any preceding bits are null... : */ : int byte = attnum >> 3; 0.00 : 46f9cb: 44 89 d6 mov %r10d,%esi : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 46f9ce: 44 89 d1 mov %r10d,%ecx : /* : * there's a null somewhere in the tuple : * : * check to see if any preceding bits are null... : */ : int byte = attnum >> 3; 0.00 : 46f9d1: c1 fe 03 sar $0x3,%esi : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 46f9d4: 83 e1 07 and $0x7,%ecx 0.00 : 46f9d7: 48 63 c6 movslq %esi,%rax 0.00 : 46f9da: 41 0f b6 54 00 17 movzbl 0x17(%r8,%rax,1),%edx 0.00 : 46f9e0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 46f9e5: d3 e0 shl %cl,%eax 0.00 : 46f9e7: 83 e8 01 sub $0x1,%eax 0.00 : 46f9ea: f7 d2 not %edx 0.00 : 46f9ec: 85 c2 test %eax,%edx 0.00 : 46f9ee: 0f 84 cc 00 00 00 je 46fac0 : } : } : } : } : : tp = (char *) tup + tup->t_hoff; 0.00 : 46f9f4: 41 0f b6 40 16 movzbl 0x16(%r8),%eax 0.00 : 46f9f9: 4d 8d 1c 00 lea (%r8,%rax,1),%r11 : */ : if (HeapTupleHasVarWidth(tuple)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.20 : 46f9fd: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:397 0.71 : 46f9ff: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 46fa05: 45 31 ed xor %r13d,%r13d 0.92 : 46fa08: eb 2f jmp 46fa39 0.00 : 46fa0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ : { : if (HeapTupleHasNulls(tuple) && att_isnull(i, bp)) 0.00 : 46fa10: 44 89 e8 mov %r13d,%eax 0.00 : 46fa13: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 46fa17: 44 89 e9 mov %r13d,%ecx 0.00 : 46fa1a: c1 f8 03 sar $0x3,%eax 0.00 : 46fa1d: 83 e1 07 and $0x7,%ecx 0.00 : 46fa20: 48 98 cltq 0.00 : 46fa22: 0f b6 44 02 17 movzbl 0x17(%rdx,%rax,1),%eax 0.00 : 46fa27: d3 f8 sar %cl,%eax 0.00 : 46fa29: a8 01 test $0x1,%al 0.00 : 46fa2b: 75 12 jne 46fa3f : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:505 2.55 : 46fa2d: 45 31 f6 xor %r14d,%r14d 0.20 : 46fa30: 45 0f b7 48 14 movzwl 0x14(%r8),%r9d : * then advance over the attr based on its length. Nulls have no : * storage and no alignment padding either. We can use/set : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:462 2.14 : 46fa35: 41 83 c5 01 add $0x1,%r13d : { : if (HeapTupleHasNulls(tuple) && att_isnull(i, bp)) 0.10 : 46fa39: 41 83 e1 01 and $0x1,%r9d 0.00 : 46fa3d: 75 d1 jne 46fa10 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 2.45 : 46fa3f: 45 84 f6 test %r14b,%r14b 0.00 : 46fa42: 0f 85 08 01 00 00 jne 46fb50 0.00 : 46fa48: 49 63 fd movslq %r13d,%rdi 0.00 : 46fa4b: 49 8b 14 ff mov (%r15,%rdi,8),%rdx : off = att[i]->attcacheoff; : else if (att[i]->attlen == -1) 0.00 : 46fa4f: 66 83 7a 4c ff cmpw $0xffff,0x4c(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:473 3.77 : 46fa54: 0f 84 b6 01 00 00 je 46fc10 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.31 : 46fa5a: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.10 : 46fa5e: 3c 69 cmp $0x69,%al 0.00 : 46fa60: 0f 84 2a 02 00 00 je 46fc90 0.00 : 46fa66: 3c 63 cmp $0x63,%al 0.00 : 46fa68: 74 0e je 46fa78 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:494 0.61 : 46fa6a: 3c 64 cmp $0x64,%al 0.00 : 46fa6c: 0f 84 7e 02 00 00 je 46fcf0 0.00 : 46fa72: 83 c6 01 add $0x1,%esi 0.00 : 46fa75: 83 e6 fe and $0xfffffffe,%esi : : if (usecache) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:496 0.82 : 46fa78: 45 84 f6 test %r14b,%r14b 0.00 : 46fa7b: 74 03 je 46fa80 : att[i]->attcacheoff = off; 0.00 : 46fa7d: 89 72 54 mov %esi,0x54(%rdx) : } : : if (i == attnum) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:500 3.57 : 46fa80: 45 39 d5 cmp %r10d,%r13d 0.00 : 46fa83: 0f 84 ea 00 00 00 je 46fb73 : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 1.33 : 46fa89: 49 8b 04 ff mov (%r15,%rdi,8),%rax 0.20 : 46fa8d: 44 0f b7 60 4c movzwl 0x4c(%rax),%r12d 0.10 : 46fa92: 66 45 85 e4 test %r12w,%r12w 0.00 : 46fa96: 0f 8e 44 01 00 00 jle 46fbe0 0.00 : 46fa9c: 41 0f bf c4 movswl %r12w,%eax 0.20 : 46faa0: 01 c6 add %eax,%esi : : if (usecache && att[i]->attlen <= 0) 0.31 : 46faa2: 45 84 f6 test %r14b,%r14b 0.00 : 46faa5: 0f 85 15 01 00 00 jne 46fbc0 0.00 : 46faab: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 46faaf: 4c 8b 40 10 mov 0x10(%rax),%r8 0.20 : 46fab3: e9 78 ff ff ff jmpq 46fa30 0.00 : 46fab8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fabf: 00 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 46fac0: 85 f6 test %esi,%esi 0.00 : 46fac2: 7e 2c jle 46faf0 : { : if (bp[i] != 0xFF) 0.00 : 46fac4: 31 d2 xor %edx,%edx 0.00 : 46fac6: 41 80 78 17 ff cmpb $0xff,0x17(%r8) 0.00 : 46facb: 74 1a je 46fae7 0.00 : 46facd: 0f 1f 00 nopl (%rax) 0.00 : 46fad0: e9 1f ff ff ff jmpq 46f9f4 0.00 : 46fad5: 0f 1f 00 nopl (%rax) 0.00 : 46fad8: 48 63 c2 movslq %edx,%rax 0.00 : 46fadb: 41 80 7c 00 17 ff cmpb $0xff,0x17(%r8,%rax,1) 0.00 : 46fae1: 0f 85 0d ff ff ff jne 46f9f4 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 46fae7: 83 c2 01 add $0x1,%edx 0.00 : 46faea: 39 d6 cmp %edx,%esi 0.00 : 46faec: 7f ea jg 46fad8 0.00 : 46faee: 66 90 xchg %ax,%ax : } : } : } : } : : tp = (char *) tup + tup->t_hoff; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:374 1.73 : 46faf0: 41 0f b6 40 16 movzbl 0x16(%r8),%eax 0.61 : 46faf5: 4d 8d 1c 00 lea (%r8,%rax,1),%r11 : { : /* : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:382 3.26 : 46faf9: 49 63 c2 movslq %r10d,%rax 0.00 : 46fafc: 49 8d 1c c7 lea (%r15,%rax,8),%rbx 1.22 : 46fb00: 48 8b 13 mov (%rbx),%rdx 0.10 : 46fb03: 8b 42 54 mov 0x54(%rdx),%eax 1.53 : 46fb06: 85 c0 test %eax,%eax 0.00 : 46fb08: 0f 88 22 02 00 00 js 46fd30 : { : return fetchatt(att[attnum], 0.00 : 46fb0e: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 46fb12: 0f 84 e8 01 00 00 je 46fd00 0.00 : 46fb18: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 46fb1c: 66 83 fa 08 cmp $0x8,%dx 0.00 : 46fb20: 0f 84 da 03 00 00 je 46ff00 0.00 : 46fb26: 66 83 fa 04 cmp $0x4,%dx 0.00 : 46fb2a: 0f 84 08 04 00 00 je 46ff38 0.00 : 46fb30: 66 83 fa 02 cmp $0x2,%dx 0.00 : 46fb34: 0f 84 09 04 00 00 je 46ff43 0.00 : 46fb3a: 48 98 cltq 0.00 : 46fb3c: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax 0.00 : 46fb41: e9 99 01 00 00 jmpq 46fcdf 0.00 : 46fb46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46fb4d: 00 00 00 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 1.83 : 46fb50: 49 63 fd movslq %r13d,%rdi 0.00 : 46fb53: 49 8b 14 ff mov (%r15,%rdi,8),%rdx 0.00 : 46fb57: 8b 42 54 mov 0x54(%rdx),%eax 1.12 : 46fb5a: 85 c0 test %eax,%eax 0.00 : 46fb5c: 0f 88 ed fe ff ff js 46fa4f : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:500 0.92 : 46fb62: 45 39 d5 cmp %r10d,%r13d : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) 0.00 : 46fb65: 89 c6 mov %eax,%esi 0.10 : 46fb67: 41 be 01 00 00 00 mov $0x1,%r14d : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) 1.53 : 46fb6d: 0f 85 16 ff ff ff jne 46fa89 : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) : usecache = false; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:507 3.67 : 46fb73: 49 8b 04 ff mov (%r15,%rdi,8),%rax : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46fb77: 80 78 5c 00 cmpb $0x0,0x5c(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 3.36 : 46fb7b: 0f 84 57 01 00 00 je 46fcd8 0.31 : 46fb81: 0f b7 40 4c movzwl 0x4c(%rax),%eax 0.71 : 46fb85: 66 83 f8 08 cmp $0x8,%ax 0.00 : 46fb89: 0f 84 31 03 00 00 je 46fec0 0.00 : 46fb8f: 66 83 f8 04 cmp $0x4,%ax 0.00 : 46fb93: 0f 84 47 02 00 00 je 46fde0 0.00 : 46fb99: 66 83 f8 02 cmp $0x2,%ax 0.00 : 46fb9d: 0f 1f 00 nopl (%rax) 0.00 : 46fba0: 0f 84 77 03 00 00 je 46ff1d 0.00 : 46fba6: 48 63 c6 movslq %esi,%rax 0.00 : 46fba9: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax : } 0.00 : 46fbae: 48 83 c4 28 add $0x28,%rsp 0.00 : 46fbb2: 5b pop %rbx 0.00 : 46fbb3: 41 5c pop %r12 0.00 : 46fbb5: 41 5d pop %r13 0.00 : 46fbb7: 41 5e pop %r14 0.00 : 46fbb9: 41 5f pop %r15 0.00 : 46fbbb: c9 leaveq 0.00 : 46fbbc: c3 retq 0.00 : 46fbbd: 0f 1f 00 nopl (%rax) : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:505 3.16 : 46fbc0: 66 45 85 e4 test %r12w,%r12w 0.00 : 46fbc4: 0f 8e fe 00 00 00 jle 46fcc8 0.00 : 46fbca: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.10 : 46fbce: 4c 8b 42 10 mov 0x10(%rdx),%r8 0.00 : 46fbd2: e9 59 fe ff ff jmpq 46fa30 0.00 : 46fbd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46fbde: 00 00 : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 3.67 : 46fbe0: 66 41 83 fc ff cmp $0xffff,%r12w 0.00 : 46fbe5: 0f 85 b5 00 00 00 jne 46fca0 0.31 : 46fbeb: 48 63 d6 movslq %esi,%rdx 0.00 : 46fbee: 41 0f b6 04 13 movzbl (%r11,%rdx,1),%eax 0.61 : 46fbf3: 3c 01 cmp $0x1,%al 0.00 : 46fbf5: 0f 84 f5 01 00 00 je 46fdf0 3.06 : 46fbfb: a8 01 test $0x1,%al 0.00 : 46fbfd: 0f 84 15 01 00 00 je 46fd18 1.83 : 46fc03: d0 e8 shr %al 0.00 : 46fc05: 0f b6 c0 movzbl %al,%eax 0.00 : 46fc08: 8d 34 30 lea (%rax,%rsi,1),%esi 3.06 : 46fc0b: e9 92 fe ff ff jmpq 46faa2 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:481 1.33 : 46fc10: 45 84 f6 test %r14b,%r14b 0.00 : 46fc13: 48 63 c6 movslq %esi,%rax 0.00 : 46fc16: 74 30 je 46fc48 0.00 : 46fc18: 0f b6 4a 5e movzbl 0x5e(%rdx),%ecx 0.00 : 46fc1c: 80 f9 69 cmp $0x69,%cl 0.00 : 46fc1f: 0f 84 8b 02 00 00 je 46feb0 0.00 : 46fc25: 80 f9 63 cmp $0x63,%cl 0.00 : 46fc28: 0f 84 9a 01 00 00 je 46fdc8 0.00 : 46fc2e: 80 f9 64 cmp $0x64,%cl 0.00 : 46fc31: 0f 84 d9 02 00 00 je 46ff10 0.00 : 46fc37: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 46fc3b: 48 83 e1 fe and $0xfffffffffffffffe,%rcx 0.00 : 46fc3f: 48 39 c1 cmp %rax,%rcx 0.00 : 46fc42: 0f 84 80 01 00 00 je 46fdc8 : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:486 1.53 : 46fc48: 41 80 3c 03 00 cmpb $0x0,(%r11,%rax,1) 0.20 : 46fc4d: 75 31 jne 46fc80 0.00 : 46fc4f: 0f b6 52 5e movzbl 0x5e(%rdx),%edx 0.00 : 46fc53: 80 fa 69 cmp $0x69,%dl 0.00 : 46fc56: 0f 84 84 02 00 00 je 46fee0 0.00 : 46fc5c: 80 fa 63 cmp $0x63,%dl 0.00 : 46fc5f: 90 nop 0.00 : 46fc60: 74 1e je 46fc80 0.00 : 46fc62: 80 fa 64 cmp $0x64,%dl 0.00 : 46fc65: 0f 84 bf 02 00 00 je 46ff2a 0.00 : 46fc6b: 48 83 c0 01 add $0x1,%rax 0.00 : 46fc6f: 45 31 f6 xor %r14d,%r14d 0.00 : 46fc72: 89 c6 mov %eax,%esi 0.00 : 46fc74: 83 e6 fe and $0xfffffffe,%esi 0.00 : 46fc77: e9 04 fe ff ff jmpq 46fa80 0.00 : 46fc7c: 0f 1f 40 00 nopl 0x0(%rax) : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); : : if (usecache) : att[i]->attcacheoff = off; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:497 1.63 : 46fc80: 45 31 f6 xor %r14d,%r14d 0.00 : 46fc83: e9 f8 fd ff ff jmpq 46fa80 0.00 : 46fc88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fc8f: 00 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 46fc90: 83 c6 03 add $0x3,%esi 0.00 : 46fc93: 83 e6 fc and $0xfffffffc,%esi 0.41 : 46fc96: e9 dd fd ff ff jmpq 46fa78 0.00 : 46fc9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fca0: 48 63 de movslq %esi,%rbx 0.00 : 46fca3: 44 89 55 c0 mov %r10d,-0x40(%rbp) 0.00 : 46fca7: 4c 89 5d b8 mov %r11,-0x48(%rbp) 0.00 : 46fcab: 49 8d 3c 1b lea (%r11,%rbx,1),%rdi 0.00 : 46fcaf: e8 9c 9b ff ff callq 469850 0.00 : 46fcb4: 4c 8b 5d b8 mov -0x48(%rbp),%r11 0.00 : 46fcb8: 8d 74 03 01 lea 0x1(%rbx,%rax,1),%esi 0.00 : 46fcbc: 44 8b 55 c0 mov -0x40(%rbp),%r10d 0.00 : 46fcc0: e9 dd fd ff ff jmpq 46faa2 0.00 : 46fcc5: 0f 1f 00 nopl (%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 2.85 : 46fcc8: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 46fccc: 4c 8b 40 10 mov 0x10(%rax),%r8 0.00 : 46fcd0: e9 58 fd ff ff jmpq 46fa2d 0.00 : 46fcd5: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 1.02 : 46fcd8: 48 63 c6 movslq %esi,%rax 0.00 : 46fcdb: 49 8d 04 03 lea (%r11,%rax,1),%rax : } 0.10 : 46fcdf: 48 83 c4 28 add $0x28,%rsp 0.00 : 46fce3: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:511 0.82 : 46fce4: 41 5c pop %r12 0.10 : 46fce6: 41 5d pop %r13 0.10 : 46fce8: 41 5e pop %r14 0.00 : 46fcea: 41 5f pop %r15 1.83 : 46fcec: c9 leaveq 0.61 : 46fced: c3 retq 0.00 : 46fcee: 66 90 xchg %ax,%ax : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.10 : 46fcf0: 83 c6 07 add $0x7,%esi 0.00 : 46fcf3: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 46fcf6: e9 7d fd ff ff jmpq 46fa78 0.00 : 46fcfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 46fd00: 48 83 c4 28 add $0x28,%rsp : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46fd04: 48 98 cltq : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 46fd06: 5b pop %rbx 0.00 : 46fd07: 41 5c pop %r12 0.00 : 46fd09: 41 5d pop %r13 0.00 : 46fd0b: 41 5e pop %r14 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46fd0d: 49 8d 04 03 lea (%r11,%rax,1),%rax : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 46fd11: 41 5f pop %r15 0.00 : 46fd13: c9 leaveq 0.00 : 46fd14: c3 retq 0.00 : 46fd15: 0f 1f 00 nopl (%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fd18: 41 8b 04 13 mov (%r11,%rdx,1),%eax 0.00 : 46fd1c: c1 e8 02 shr $0x2,%eax 0.00 : 46fd1f: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 46fd22: e9 7b fd ff ff jmpq 46faa2 0.00 : 46fd27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46fd2e: 00 00 : /* : * Otherwise, check for non-fixed-length attrs up to and including : * target. If there aren't any, it's safe to cheaply initialize the : * cached offsets for these attrs. : */ : if (HeapTupleHasVarWidth(tuple)) 0.41 : 46fd30: 41 f6 c1 02 test $0x2,%r9b 0.00 : 46fd34: 0f 84 b6 01 00 00 je 46fef0 : { : int j; : : for (j = 0; j <= attnum; j++) 0.41 : 46fd3a: 45 85 d2 test %r10d,%r10d 0.10 : 46fd3d: 0f 88 ad 01 00 00 js 46fef0 : { : if (att[j]->attlen <= 0) 0.00 : 46fd43: 49 8b 0f mov (%r15),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 1.83 : 46fd46: 31 d2 xor %edx,%edx 0.31 : 46fd48: 66 83 79 4c 00 cmpw $0x0,0x4c(%rcx) 0.92 : 46fd4d: 7f 1b jg 46fd6a 0.00 : 46fd4f: 90 nop 1.73 : 46fd50: e9 a8 fc ff ff jmpq 46f9fd 0.00 : 46fd55: 0f 1f 00 nopl (%rax) 0.00 : 46fd58: 48 63 c2 movslq %edx,%rax 0.00 : 46fd5b: 49 8b 04 c7 mov (%r15,%rax,8),%rax 0.00 : 46fd5f: 66 83 78 4c 00 cmpw $0x0,0x4c(%rax) 0.00 : 46fd64: 0f 8e 93 fc ff ff jle 46f9fd : */ : if (HeapTupleHasVarWidth(tuple)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 46fd6a: 83 c2 01 add $0x1,%edx 0.31 : 46fd6d: 41 39 d2 cmp %edx,%r10d 0.00 : 46fd70: 7d e6 jge 46fd58 : } : } : : if (!slow) : { : int natts = tupleDesc->natts; 0.00 : 46fd72: 44 8b 0f mov (%rdi),%r9d : * it's cheap to compute offsets for fixed-width columns, we take the : * opportunity to initialize the cached offsets for *all* the leading : * fixed-width columns, in hope of avoiding future visits to this : * routine. : */ : att[0]->attcacheoff = 0; 0.00 : 46fd75: c7 41 54 00 00 00 00 movl $0x0,0x54(%rcx) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 46fd7c: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 46fd80: 7e 35 jle 46fdb7 0.00 : 46fd82: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 46fd86: 8b 50 54 mov 0x54(%rax),%edx 0.00 : 46fd89: 85 d2 test %edx,%edx 0.00 : 46fd8b: 0f 8e be 01 00 00 jle 46ff4f 0.00 : 46fd91: 4c 89 fa mov %r15,%rdx 0.00 : 46fd94: be 01 00 00 00 mov $0x1,%esi 0.00 : 46fd99: eb 14 jmp 46fdaf 0.00 : 46fd9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fda0: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 46fda4: 48 83 c2 08 add $0x8,%rdx 0.00 : 46fda8: 8b 40 54 mov 0x54(%rax),%eax 0.00 : 46fdab: 85 c0 test %eax,%eax 0.00 : 46fdad: 7e 71 jle 46fe20 : j++; 0.00 : 46fdaf: 83 c6 01 add $0x1,%esi : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 46fdb2: 41 39 f1 cmp %esi,%r9d 0.00 : 46fdb5: 7f e9 jg 46fda0 : off += att[j]->attlen; : } : : Assert(j > attnum); : : off = att[attnum]->attcacheoff; 0.00 : 46fdb7: 48 8b 03 mov (%rbx),%rax 0.00 : 46fdba: 8b 70 54 mov 0x54(%rax),%esi 0.00 : 46fdbd: e9 b5 fd ff ff jmpq 46fb77 0.00 : 46fdc2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; 0.00 : 46fdc8: 89 72 54 mov %esi,0x54(%rdx) 0.00 : 46fdcb: 41 be 01 00 00 00 mov $0x1,%r14d : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 46fdd1: e9 aa fc ff ff jmpq 46fa80 0.00 : 46fdd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46fddd: 00 00 00 : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46fde0: 48 63 c6 movslq %esi,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 0.51 : 46fde3: 41 8b 04 03 mov (%r11,%rax,1),%eax 0.20 : 46fde7: e9 f3 fe ff ff jmpq 46fcdf 0.00 : 46fdec: 0f 1f 40 00 nopl 0x0(%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fdf0: 41 0f b6 54 13 01 movzbl 0x1(%r11,%rdx,1),%edx 0.00 : 46fdf6: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 46fdfb: 80 fa 01 cmp $0x1,%dl 0.00 : 46fdfe: 0f 84 04 fe ff ff je 46fc08 0.00 : 46fe04: 80 fa 12 cmp $0x12,%dl 0.00 : 46fe07: b8 03 00 00 00 mov $0x3,%eax 0.00 : 46fe0c: ba 12 00 00 00 mov $0x12,%edx 0.00 : 46fe11: 0f 44 c2 cmove %edx,%eax 0.00 : 46fe14: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 46fe17: e9 86 fc ff ff jmpq 46faa2 0.00 : 46fe1c: 0f 1f 40 00 nopl 0x0(%rax) : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 46fe20: 89 f0 mov %esi,%eax : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 46fe22: 48 63 d0 movslq %eax,%rdx 0.00 : 46fe25: 49 8b 44 d7 f8 mov -0x8(%r15,%rdx,8),%rax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 46fe2a: 49 8d 14 d7 lea (%r15,%rdx,8),%rdx 0.00 : 46fe2e: 48 8b 3a mov (%rdx),%rdi : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 46fe31: 8b 48 54 mov 0x54(%rax),%ecx 0.00 : 46fe34: 0f b7 40 4c movzwl 0x4c(%rax),%eax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 46fe38: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 46fe3d: 98 cwtl 0.00 : 46fe3e: 8d 0c 08 lea (%rax,%rcx,1),%ecx : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 46fe41: 7f 4f jg 46fe92 0.00 : 46fe43: e9 6f ff ff ff jmpq 46fdb7 0.00 : 46fe48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fe4f: 00 : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 46fe50: 3c 63 cmp $0x63,%al 0.00 : 46fe52: 74 0c je 46fe60 0.00 : 46fe54: 3c 64 cmp $0x64,%al 0.00 : 46fe56: 66 90 xchg %ax,%ax 0.00 : 46fe58: 74 4e je 46fea8 0.00 : 46fe5a: 83 c1 01 add $0x1,%ecx 0.00 : 46fe5d: 83 e1 fe and $0xfffffffe,%ecx : : att[j]->attcacheoff = off; 0.00 : 46fe60: 89 4f 54 mov %ecx,0x54(%rdi) : : off += att[j]->attlen; 0.00 : 46fe63: 48 8b 02 mov (%rdx),%rax : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 46fe66: 83 c6 01 add $0x1,%esi 0.00 : 46fe69: 41 39 f1 cmp %esi,%r9d : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 46fe6c: 44 0f b7 40 4c movzwl 0x4c(%rax),%r8d : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 46fe71: 0f 8e 40 ff ff ff jle 46fdb7 : { : if (att[j]->attlen <= 0) 0.00 : 46fe77: 48 63 c6 movslq %esi,%rax 0.00 : 46fe7a: 49 8d 14 c7 lea (%r15,%rax,8),%rdx 0.00 : 46fe7e: 48 8b 3a mov (%rdx),%rdi 0.00 : 46fe81: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) 0.20 : 46fe86: 0f 8e 2b ff ff ff jle 46fdb7 : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 46fe8c: 41 0f bf c0 movswl %r8w,%eax 0.00 : 46fe90: 01 c1 add %eax,%ecx : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 46fe92: 0f b6 47 5e movzbl 0x5e(%rdi),%eax 0.00 : 46fe96: 3c 69 cmp $0x69,%al 0.00 : 46fe98: 75 b6 jne 46fe50 0.00 : 46fe9a: 83 c1 03 add $0x3,%ecx 0.00 : 46fe9d: 83 e1 fc and $0xfffffffc,%ecx 0.00 : 46fea0: eb be jmp 46fe60 0.00 : 46fea2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46fea8: 83 c1 07 add $0x7,%ecx 0.00 : 46feab: 83 e1 f8 and $0xfffffff8,%ecx 0.00 : 46feae: eb b0 jmp 46fe60 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 46feb0: 48 8d 48 03 lea 0x3(%rax),%rcx 0.00 : 46feb4: 48 83 e1 fc and $0xfffffffffffffffc,%rcx 0.00 : 46feb8: e9 82 fd ff ff jmpq 46fc3f 0.00 : 46febd: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46fec0: 48 63 c6 movslq %esi,%rax 0.00 : 46fec3: 49 8b 04 03 mov (%r11,%rax,1),%rax : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:511 4.69 : 46fec7: 48 83 c4 28 add $0x28,%rsp 0.31 : 46fecb: 5b pop %rbx 0.00 : 46fecc: 41 5c pop %r12 0.00 : 46fece: 41 5d pop %r13 0.61 : 46fed0: 41 5e pop %r14 0.41 : 46fed2: 41 5f pop %r15 0.00 : 46fed4: c9 leaveq 0.41 : 46fed5: c3 retq 0.00 : 46fed6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46fedd: 00 00 00 : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 46fee0: 83 c6 03 add $0x3,%esi 0.00 : 46fee3: 45 31 f6 xor %r14d,%r14d 0.00 : 46fee6: 83 e6 fc and $0xfffffffc,%esi 0.00 : 46fee9: e9 92 fb ff ff jmpq 46fa80 0.00 : 46feee: 66 90 xchg %ax,%ax : */ : if (HeapTupleHasVarWidth(tuple)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 46fef0: 49 8b 0f mov (%r15),%rcx 0.00 : 46fef3: e9 7a fe ff ff jmpq 46fd72 0.00 : 46fef8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46feff: 00 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46ff00: 48 98 cltq 0.00 : 46ff02: 49 8b 04 03 mov (%r11,%rax,1),%rax 0.00 : 46ff06: e9 d4 fd ff ff jmpq 46fcdf 0.00 : 46ff0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 46ff10: 48 8d 48 07 lea 0x7(%rax),%rcx 0.00 : 46ff14: 48 83 e1 f8 and $0xfffffffffffffff8,%rcx 0.00 : 46ff18: e9 22 fd ff ff jmpq 46fc3f : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46ff1d: 48 63 c6 movslq %esi,%rax 0.00 : 46ff20: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 46ff25: e9 b5 fd ff ff jmpq 46fcdf : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 46ff2a: 83 c6 07 add $0x7,%esi 0.00 : 46ff2d: 45 31 f6 xor %r14d,%r14d 0.00 : 46ff30: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 46ff33: e9 48 fb ff ff jmpq 46fa80 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46ff38: 48 98 cltq 0.00 : 46ff3a: 41 8b 04 03 mov (%r11,%rax,1),%eax 0.10 : 46ff3e: e9 9c fd ff ff jmpq 46fcdf 0.00 : 46ff43: 48 98 cltq 0.00 : 46ff45: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 46ff4a: e9 90 fd ff ff jmpq 46fcdf : } : } : } : } : : tp = (char *) tup + tup->t_hoff; 0.00 : 46ff4f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 46ff54: be 01 00 00 00 mov $0x1,%esi 0.00 : 46ff59: e9 c4 fe ff ff jmpq 46fe22 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 18.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 9.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 5.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 4.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 4.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:596 3.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 3.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 2.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 2.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 2.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:576 2.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:588 1.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:574 1.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 1.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 1.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 1.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:570 1.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 1.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 0.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 0.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 0.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:567 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:570 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:602 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798630 : : * we don't thrash malloc() when a context is repeatedly reset after small : * allocations, which is typical behavior for per-tuple contexts. : */ : static void : AllocSetReset(MemoryContext context) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 5.03 : 798630: 55 push %rbp : /* Check for corruption and leaks before freeing */ : AllocSetCheck(context); : #endif : : /* Clear chunk freelists */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 2.32 : 798631: 48 8d 47 40 lea 0x40(%rdi),%rax 0.77 : 798635: 48 8d 97 98 00 00 00 lea 0x98(%rdi),%rdx : * we don't thrash malloc() when a context is repeatedly reset after small : * allocations, which is typical behavior for per-tuple contexts. : */ : static void : AllocSetReset(MemoryContext context) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 0.64 : 79863c: 48 89 e5 mov %rsp,%rbp 2.71 : 79863f: 41 54 push %r12 1.16 : 798641: 49 89 fc mov %rdi,%r12 1.16 : 798644: 53 push %rbx 1.42 : 798645: 0f 1f 00 nopl (%rax) : /* Check for corruption and leaks before freeing */ : AllocSetCheck(context); : #endif : : /* Clear chunk freelists */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 25.13 : 798648: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 18.94 : 79864f: 48 83 c0 08 add $0x8,%rax 9.02 : 798653: 48 39 d0 cmp %rdx,%rax 0.00 : 798656: 75 f0 jne 798648 : : block = set->blocks; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:567 0.52 : 798658: 49 8b 7c 24 38 mov 0x38(%r12),%rdi : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:570 1.42 : 79865d: 49 8b 94 24 b8 00 00 mov 0xb8(%r12),%rdx 0.00 : 798664: 00 : : while (block != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 1.55 : 798665: 48 85 ff test %rdi,%rdi : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); : : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:570 0.52 : 798668: 49 89 54 24 38 mov %rdx,0x38(%r12) : : while (block != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 0.52 : 79866d: 75 1e jne 79868d 0.00 : 79866f: eb 3d jmp 7986ae 0.00 : 798671: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* Normal case, release the block */ : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); 0.00 : 798678: e8 a3 11 cd ff callq 469820 : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) 0.00 : 79867d: 48 85 db test %rbx,%rbx : { : /* Normal case, release the block */ : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); 0.00 : 798680: 48 89 df mov %rbx,%rdi : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) 0.00 : 798683: 74 29 je 7986ae 0.00 : 798685: 49 8b 94 24 b8 00 00 mov 0xb8(%r12),%rdx 0.00 : 79868c: 00 : { : AllocBlock next = block->next; : : if (block == set->keeper) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:576 2.06 : 79868d: 48 39 fa cmp %rdi,%rdx : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) : { : AllocBlock next = block->next; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:574 1.93 : 798690: 48 8b 5f 08 mov 0x8(%rdi),%rbx : : if (block == set->keeper) 0.39 : 798694: 75 e2 jne 798678 : wipe_mem(datastart, block->freeptr - datastart); : #else : /* wipe_mem() would have done this */ : VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); : #endif : block->freeptr = datastart; 0.39 : 798696: 48 8d 42 20 lea 0x20(%rdx),%rax : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 1.80 : 79869a: 48 85 db test %rbx,%rbx : #else : /* wipe_mem() would have done this */ : VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); : #endif : block->freeptr = datastart; : block->next = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:588 2.06 : 79869d: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 7986a4: 00 : { : /* Normal case, release the block */ : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:596 4.12 : 7986a5: 48 89 df mov %rbx,%rdi : wipe_mem(datastart, block->freeptr - datastart); : #else : /* wipe_mem() would have done this */ : VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); : #endif : block->freeptr = datastart; 0.26 : 7986a8: 48 89 42 10 mov %rax,0x10(%rdx) : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:572 4.38 : 7986ac: 75 d7 jne 798685 : } : block = next; : } : : /* Reset block size allocation sequence, too */ : set->nextBlockSize = set->initBlockSize; 0.26 : 7986ae: 49 8b 84 24 98 00 00 mov 0x98(%r12),%rax 0.00 : 7986b5: 00 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 0.64 : 7986b6: 5b pop %rbx : } : block = next; : } : : /* Reset block size allocation sequence, too */ : set->nextBlockSize = set->initBlockSize; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:602 0.52 : 7986b7: 49 89 84 24 a8 00 00 mov %rax,0xa8(%r12) 0.00 : 7986be: 00 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 3.99 : 7986bf: 41 5c pop %r12 4.38 : 7986c1: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 10.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:917 9.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 9.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 8.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 8.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:923 6.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:923 6.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 6.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:920 5.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:915 5.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:915 4.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:909 3.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:914 1.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 1.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:923 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:923 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:909 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:923 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000758300 : : * but if we ever change the semantics of bpchar comparison to trust : * strcoll() completely, we'd need to do something different in non-C locales. : */ : Datum : hashbpchar(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 10.88 : 758300: 55 push %rbp 9.39 : 758301: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 1.49 : 758304: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:908 9.84 : 758308: 4c 89 65 f0 mov %r12,-0x10(%rbp) 8.05 : 75830c: 49 89 fc mov %rdi,%r12 0.45 : 75830f: 4c 89 6d f8 mov %r13,-0x8(%rbp) 6.11 : 758313: 48 83 ec 20 sub $0x20,%rsp : BpChar *key = PG_GETARG_BPCHAR_PP(0); 0.00 : 758317: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:909 0.60 : 75831b: e8 c0 69 02 00 callq 77ece0 4.62 : 758320: 49 89 c5 mov %rax,%r13 : char *keydata; : int keylen; : Datum result; : : keydata = VARDATA_ANY(key); 0.00 : 758323: 48 8d 58 01 lea 0x1(%rax),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:914 3.13 : 758327: 48 8d 40 04 lea 0x4(%rax),%rax 0.15 : 75832b: 41 f6 45 00 01 testb $0x1,0x0(%r13) : keylen = bcTruelen(key); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:915 5.66 : 758330: 4c 89 ef mov %r13,%rdi : BpChar *key = PG_GETARG_BPCHAR_PP(0); : char *keydata; : int keylen; : Datum result; : : keydata = VARDATA_ANY(key); 0.00 : 758333: 48 0f 44 d8 cmove %rax,%rbx : keylen = bcTruelen(key); 5.51 : 758337: e8 54 fa ff ff callq 757d90 : : result = hash_any((unsigned char *) keydata, keylen); 0.15 : 75833c: 48 89 df mov %rbx,%rdi : char *keydata; : int keylen; : Datum result; : : keydata = VARDATA_ANY(key); : keylen = bcTruelen(key); 0.00 : 75833f: 89 c6 mov %eax,%esi : : result = hash_any((unsigned char *) keydata, keylen); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:917 10.13 : 758341: e8 0a 80 d3 ff callq 490350 : : /* Avoid leaking memory for toasted inputs */ : PG_FREE_IF_COPY(key, 0); 0.00 : 758346: 4d 3b 6c 24 20 cmp 0x20(%r12),%r13 : Datum result; : : keydata = VARDATA_ANY(key); : keylen = bcTruelen(key); : : result = hash_any((unsigned char *) keydata, keylen); 0.00 : 75834b: 48 89 c3 mov %rax,%rbx : : /* Avoid leaking memory for toasted inputs */ : PG_FREE_IF_COPY(key, 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:920 6.11 : 75834e: 74 08 je 758358 0.00 : 758350: 4c 89 ef mov %r13,%rdi 0.00 : 758353: e8 28 08 04 00 callq 798b80 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:923 1.34 : 758358: 48 89 d8 mov %rbx,%rax 1.04 : 75835b: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.15 : 75835f: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:923 6.56 : 758363: 4c 8b 6d f8 mov -0x8(%rbp),%r13 8.64 : 758367: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 55.75 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 9.32 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 8.59 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 8.30 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 7.13 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 2.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 1.60 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1079 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1079 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1350 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4f20 : : * though not on the data they reference. This is OK since the XLogRecData : * structs are always just temporaries in the calling code. : */ : XLogRecPtr : XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata) : { 0.15 : 4d4f20: 55 push %rbp 0.00 : 4d4f21: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4f24: 41 57 push %r15 0.00 : 4d4f26: 41 56 push %r14 0.00 : 4d4f28: 41 55 push %r13 0.00 : 4d4f2a: 41 54 push %r12 0.00 : 4d4f2c: 53 push %rbx 0.00 : 4d4f2d: 48 81 ec a8 02 00 00 sub $0x2a8,%rsp : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4f34: 48 8b 05 5d 42 6a 00 mov 0x6a425d(%rip),%rax # b79198 : pg_crc32 rdata_crc; : uint32 len, : write_len; : unsigned i; : bool doPageWrites; : bool isLogSwitch = (rmid == RM_XLOG_ID && info == XLOG_SWITCH); 0.00 : 4d4f3b: 40 84 ff test %dil,%dil : * though not on the data they reference. This is OK since the XLogRecData : * structs are always just temporaries in the calling code. : */ : XLogRecPtr : XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata) : { 0.00 : 4d4f3e: 48 89 95 38 fd ff ff mov %rdx,-0x2c8(%rbp) 0.00 : 4d4f45: 40 88 bd 47 fd ff ff mov %dil,-0x2b9(%rbp) 0.00 : 4d4f4c: 40 88 b5 46 fd ff ff mov %sil,-0x2ba(%rbp) : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4f53: 48 89 85 48 fd ff ff mov %rax,-0x2b8(%rbp) : pg_crc32 rdata_crc; : uint32 len, : write_len; : unsigned i; : bool doPageWrites; : bool isLogSwitch = (rmid == RM_XLOG_ID && info == XLOG_SWITCH); 0.00 : 4d4f5a: 0f 94 c0 sete %al 0.00 : 4d4f5d: 40 80 fe 40 cmp $0x40,%sil 0.00 : 4d4f61: 0f 94 85 57 fd ff ff sete -0x2a9(%rbp) 0.00 : 4d4f68: 20 85 57 fd ff ff and %al,-0x2a9(%rbp) : uint8 info_orig = info; : static XLogRecord *rechdr; : XLogRecPtr StartPos; : XLogRecPtr EndPos; : : if (rechdr == NULL) 0.15 : 4d4f6e: 48 83 3d b2 43 6a 00 cmpq $0x0,0x6a43b2(%rip) # b79328 0.00 : 4d4f75: 00 0.00 : 4d4f76: 0f 84 62 08 00 00 je 4d57de : rechdr = (XLogRecord *) MAXALIGN(&rechdrbuf); : MemSet(rechdr, 0, SizeOfXLogRecord); : } : : /* cross-check on whether we should be here or not */ : if (!XLogInsertAllowed()) 0.00 : 4d4f7c: e8 8f 85 ff ff callq 4cd510 0.00 : 4d4f81: 84 c0 test %al,%al 0.00 : 4d4f83: 0f 84 ba 09 00 00 je 4d5943 : elog(ERROR, "cannot make new WAL entries during recovery"); : : /* info's high bits are reserved for use by me */ : if (info & XLR_INFO_MASK) 0.00 : 4d4f89: 0f b6 9d 46 fd ff ff movzbl -0x2ba(%rbp),%ebx 0.00 : 4d4f90: f6 c3 0f test $0xf,%bl 0.00 : 4d4f93: 0f 85 d4 09 00 00 jne 4d596d : : /* : * In bootstrap mode, we don't actually log anything but XLOG resources; : * return a phony record pointer. : */ : if (IsBootstrapProcessingMode() && rmid != RM_XLOG_ID) 0.00 : 4d4f99: 8b 35 9d 3b 69 00 mov 0x693b9d(%rip),%esi # b68b3c 0.29 : 4d4f9f: 85 f6 test %esi,%esi 0.00 : 4d4fa1: 75 18 jne 4d4fbb 0.00 : 4d4fa3: 80 bd 47 fd ff ff 00 cmpb $0x0,-0x2b9(%rbp) 0.00 : 4d4faa: 48 c7 85 58 fd ff ff movq $0x28,-0x2a8(%rbp) 0.00 : 4d4fb1: 28 00 00 00 0.00 : 4d4fb5: 0f 85 f8 01 00 00 jne 4d51b3 0.00 : 4d4fbb: 31 d2 xor %edx,%edx 0.00 : 4d4fbd: 0f 1f 00 nopl (%rax) : * any special treatment in the critical section where the chunks are : * copied into the WAL buffers. Those entries have to be unlinked from the : * chain if we have to loop back here. : */ : begin:; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d4fc0: 83 fa 03 cmp $0x3,%edx 0.00 : 4d4fc3: 0f 86 35 02 00 00 jbe 4d51fe : * Decide if we need to do full-page writes in this XLOG record: true if : * full_page_writes is on or we have a PITR request for it. Since we : * don't yet have an insertion lock, fullPageWrites and forcePageWrites : * could change under us, but we'll recheck them once we have a lock. : */ : doPageWrites = Insert->fullPageWrites || Insert->forcePageWrites; 0.00 : 4d4fc9: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 4d4fd0: 4c 8b a5 38 fd ff ff mov -0x2c8(%rbp),%r12 0.00 : 4d4fd7: 66 83 ba a0 00 00 00 cmpw $0x0,0xa0(%rdx) 0.00 : 4d4fde: 00 0.00 : 4d4fdf: 0f 95 85 56 fd ff ff setne -0x2aa(%rbp) 0.15 : 4d4fe6: 45 31 ed xor %r13d,%r13d 0.00 : 4d4fe9: eb 1b jmp 4d5006 0.00 : 4d4feb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (i >= XLR_MAX_BKP_BLOCKS) : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) 0.00 : 4d4ff0: 49 8b 44 24 18 mov 0x18(%r12),%rax : for (rdt = rdata;;) : { : if (rdt->buffer == InvalidBuffer) : { : /* Simple data, just include it */ : len += rdt->len; 0.00 : 4d4ff5: 45 03 6c 24 08 add 0x8(%r12),%r13d : if (i >= XLR_MAX_BKP_BLOCKS) : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) 0.00 : 4d4ffa: 48 85 c0 test %rax,%rax 0.00 : 4d4ffd: 0f 84 4a 02 00 00 je 4d524d : break; 0.15 : 4d5003: 49 89 c4 mov %rax,%r12 : doPageWrites = Insert->fullPageWrites || Insert->forcePageWrites; : : len = 0; : for (rdt = rdata;;) : { : if (rdt->buffer == InvalidBuffer) 0.00 : 4d5006: 41 8b 4c 24 0c mov 0xc(%r12),%ecx : { : /* Simple data, just include it */ : len += rdt->len; 0.15 : 4d500b: 31 db xor %ebx,%ebx 0.00 : 4d500d: 48 8d 55 b0 lea -0x50(%rbp),%rdx : doPageWrites = Insert->fullPageWrites || Insert->forcePageWrites; : : len = 0; : for (rdt = rdata;;) : { : if (rdt->buffer == InvalidBuffer) 0.00 : 4d5011: 85 c9 test %ecx,%ecx 0.00 : 4d5013: 74 db je 4d4ff0 : else : { : /* Find info for buffer */ : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : if (rdt->buffer == dtbuf[i]) 0.00 : 4d5015: 8b 02 mov (%rdx),%eax 0.00 : 4d5017: 39 c1 cmp %eax,%ecx 0.00 : 4d5019: 0f 84 f9 01 00 00 je 4d5218 : } : else if (rdt->data) : len += rdt->len; : break; : } : if (dtbuf[i] == InvalidBuffer) 0.00 : 4d501f: 85 c0 test %eax,%eax 0.00 : 4d5021: 0f 84 79 02 00 00 je 4d52a0 : len += rdt->len; : } : else : { : /* Find info for buffer */ : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d5027: 83 c3 01 add $0x1,%ebx 0.00 : 4d502a: 48 83 c2 04 add $0x4,%rdx 0.00 : 4d502e: 83 fb 04 cmp $0x4,%ebx 0.00 : 4d5031: 75 e2 jne 4d5015 : len += rdt->len; : break; : } : } : if (i >= XLR_MAX_BKP_BLOCKS) : elog(PANIC, "can backup at most %d blocks per xlog record", 0.00 : 4d5033: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d5038: be ce 03 00 00 mov $0x3ce,%esi 0.00 : 4d503d: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d5042: e8 d9 63 2a 00 callq 77b420 0.00 : 4d5047: ba 04 00 00 00 mov $0x4,%edx 0.00 : 4d504c: be 40 b8 7b 00 mov $0x7bb840,%esi 0.00 : 4d5051: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d5056: 31 c0 xor %eax,%eax 0.00 : 4d5058: e8 d3 61 2a 00 callq 77b230 0.00 : 4d505d: e8 6e 44 f9 ff callq 4694d0 : * Also check to see if fullPageWrites or forcePageWrites was just turned : * on; if we weren't already doing full-page writes then go back and : * recompute. (If it was just turned off, we could recompute the record : * without full pages, but we choose not to bother.) : */ : if ((Insert->fullPageWrites || Insert->forcePageWrites) && !doPageWrites) 0.00 : 4d5062: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 4d5069: 66 83 b9 a0 00 00 00 cmpw $0x0,0xa0(%rcx) 0.00 : 4d5070: 00 0.00 : 4d5071: 0f 85 55 01 00 00 jne 4d51cc : : /* : * Reserve space for the record in the WAL. This also sets the xl_prev : * pointer. : */ : if (isLogSwitch) 0.00 : 4d5077: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.00 : 4d507e: 0f 84 86 05 00 00 je 4d560a : inserted = ReserveXLogSwitch(&StartPos, &EndPos, &rechdr->xl_prev); 0.00 : 4d5084: 4c 8b 3d 9d 42 6a 00 mov 0x6a429d(%rip),%r15 # b79328 : * reserving any space, and the function returns false. : */ : static bool : ReserveXLogSwitch(XLogRecPtr *StartPos, XLogRecPtr *EndPos, XLogRecPtr *PrevPtr) : { : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d508b: 48 8b 1d 06 41 6a 00 mov 0x6a4106(%rip),%rbx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d5092: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d5097: f0 86 03 lock xchg %al,(%rbx) : * These calculations are a bit heavy-weight to be done while holding a : * spinlock, but since we're holding all the WAL insertion locks, there : * are no other inserters competing for it. GetXLogInsertRecPtr() does : * compete for it, but that's not called very frequently. : */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d509a: 84 c0 test %al,%al 0.00 : 4d509c: 0f 85 8a 08 00 00 jne 4d592c : : startbytepos = Insert->CurrBytePos; 0.00 : 4d50a2: 4c 8b 73 08 mov 0x8(%rbx),%r14 : : ptr = XLogBytePosToEndRecPtr(startbytepos); 0.00 : 4d50a6: 4c 89 f7 mov %r14,%rdi 0.00 : 4d50a9: e8 62 7d ff ff callq 4cce10 : if (ptr % XLOG_SEG_SIZE == 0) 0.00 : 4d50ae: a9 ff ff ff 00 test $0xffffff,%eax : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; : : ptr = XLogBytePosToEndRecPtr(startbytepos); 0.00 : 4d50b3: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) : if (ptr % XLOG_SEG_SIZE == 0) 0.00 : 4d50ba: 0f 85 d9 08 00 00 jne 4d5999 : { : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d50c0: c6 03 00 movb $0x0,(%rbx) 0.00 : 4d50c3: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) 0.00 : 4d50ca: 31 db xor %ebx,%ebx : } : : /* : * Done! Let others know that we're finished. : */ : WALInsertLockRelease(); 0.00 : 4d50cc: e8 cf 8a ff ff callq 4cdba0 : : MarkCurrentTransactionIdLoggedIfAny(); 0.00 : 4d50d1: e8 ca ba fe ff callq 4c0ba0 : : END_CRIT_SECTION(); 0.00 : 4d50d6: 8b 05 c0 4f 6e 00 mov 0x6e4fc0(%rip),%eax # bba09c : : /* : * Update shared LogwrtRqst.Write, if we crossed page boundary. : */ : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.15 : 4d50dc: 4c 8b a5 80 fd ff ff mov -0x280(%rbp),%r12 : */ : WALInsertLockRelease(); : : MarkCurrentTransactionIdLoggedIfAny(); : : END_CRIT_SECTION(); 0.00 : 4d50e3: 83 e8 01 sub $0x1,%eax : : /* : * Update shared LogwrtRqst.Write, if we crossed page boundary. : */ : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.00 : 4d50e6: 49 c1 ec 0d shr $0xd,%r12 : */ : WALInsertLockRelease(); : : MarkCurrentTransactionIdLoggedIfAny(); : : END_CRIT_SECTION(); 0.00 : 4d50ea: 89 05 ac 4f 6e 00 mov %eax,0x6e4fac(%rip) # bba09c : : /* : * Update shared LogwrtRqst.Write, if we crossed page boundary. : */ : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.00 : 4d50f0: 48 8b 85 58 fd ff ff mov -0x2a8(%rbp),%rax 0.00 : 4d50f7: 48 c1 e8 0d shr $0xd,%rax 0.00 : 4d50fb: 49 39 c4 cmp %rax,%r12 0.00 : 4d50fe: 0f 84 86 00 00 00 je 4d518a : { : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d5104: 48 8b 15 8d 40 6a 00 mov 0x6a408d(%rip),%rdx # b79198 0.00 : 4d510b: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d5110: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d5117: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d511a: 84 c0 test %al,%al 0.00 : 4d511c: 74 1d je 4d513b 0.00 : 4d511e: 48 8b 3d 73 40 6a 00 mov 0x6a4073(%rip),%rdi # b79198 0.00 : 4d5125: ba cd 04 00 00 mov $0x4cd,%edx 0.00 : 4d512a: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d512f: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d5136: e8 05 af 1b 00 callq 690040 : /* advance global request to include new block(s) */ : if (XLogCtl->LogwrtRqst.Write < EndPos) 0.00 : 4d513b: 48 8b 15 56 40 6a 00 mov 0x6a4056(%rip),%rdx # b79198 0.00 : 4d5142: 48 8b 8d 58 fd ff ff mov -0x2a8(%rbp),%rcx 0.00 : 4d5149: 48 39 8a d8 00 00 00 cmp %rcx,0xd8(%rdx) 0.00 : 4d5150: 73 0e jae 4d5160 : XLogCtl->LogwrtRqst.Write = EndPos; 0.00 : 4d5152: 48 89 8a d8 00 00 00 mov %rcx,0xd8(%rdx) 0.00 : 4d5159: 48 8b 15 38 40 6a 00 mov 0x6a4038(%rip),%rdx # b79198 : /* update local result copy while I have the chance */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d5160: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d5167: 48 89 05 42 40 6a 00 mov %rax,0x6a4042(%rip) # b791b0 0.00 : 4d516e: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d5175: 48 89 05 3c 40 6a 00 mov %rax,0x6a403c(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d517c: 48 8b 05 15 40 6a 00 mov 0x6a4015(%rip),%rax # b79198 0.00 : 4d5183: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : /* : * If this was an XLOG_SWITCH record, flush the record and the empty : * padding space that fills the rest of the segment, and perform : * end-of-segment actions (eg, notifying archiver). : */ : if (isLogSwitch) 0.00 : 4d518a: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.15 : 4d5191: 0f 85 31 07 00 00 jne 4d58c8 : #endif : : /* : * Update our global variables : */ : ProcLastRecPtr = StartPos; 0.00 : 4d5197: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx : XactLastRecEnd = EndPos; 0.00 : 4d519e: 48 8b 8d 58 fd ff ff mov -0x2a8(%rbp),%rcx : #endif : : /* : * Update our global variables : */ : ProcLastRecPtr = StartPos; 0.00 : 4d51a5: 48 89 15 2c 40 6a 00 mov %rdx,0x6a402c(%rip) # b791d8 : XactLastRecEnd = EndPos; 0.00 : 4d51ac: 48 89 0d d5 3f 6a 00 mov %rcx,0x6a3fd5(%rip) # b79188 : : return EndPos; : } 0.00 : 4d51b3: 48 8b 85 58 fd ff ff mov -0x2a8(%rbp),%rax 0.00 : 4d51ba: 48 81 c4 a8 02 00 00 add $0x2a8,%rsp 0.00 : 4d51c1: 5b pop %rbx 0.00 : 4d51c2: 41 5c pop %r12 0.00 : 4d51c4: 41 5d pop %r13 0.00 : 4d51c6: 41 5e pop %r14 0.00 : 4d51c8: 41 5f pop %r15 0.00 : 4d51ca: c9 leaveq 0.00 : 4d51cb: c3 retq : * Also check to see if fullPageWrites or forcePageWrites was just turned : * on; if we weren't already doing full-page writes then go back and : * recompute. (If it was just turned off, we could recompute the record : * without full pages, but we choose not to bother.) : */ : if ((Insert->fullPageWrites || Insert->forcePageWrites) && !doPageWrites) 0.00 : 4d51cc: 80 bd 56 fd ff ff 00 cmpb $0x0,-0x2aa(%rbp) 0.00 : 4d51d3: 0f 85 9e fe ff ff jne 4d5077 : { : /* Oops, must redo it with full-page data. */ : WALInsertLockRelease(); 0.00 : 4d51d9: e8 c2 89 ff ff callq 4cdba0 : END_CRIT_SECTION(); 0.00 : 4d51de: 8b 05 b8 4e 6e 00 mov 0x6e4eb8(%rip),%eax # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d51e4: 31 d2 xor %edx,%edx : */ : if ((Insert->fullPageWrites || Insert->forcePageWrites) && !doPageWrites) : { : /* Oops, must redo it with full-page data. */ : WALInsertLockRelease(); : END_CRIT_SECTION(); 0.00 : 4d51e6: 83 e8 01 sub $0x1,%eax 0.00 : 4d51e9: 89 05 ad 4e 6e 00 mov %eax,0x6e4ead(%rip) # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d51ef: 48 8b 85 88 fd ff ff mov -0x278(%rbp),%rax 0.00 : 4d51f6: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 4d51fd: 00 : * chain if we have to loop back here. : */ : begin:; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : dtbuf[i] = InvalidBuffer; 0.00 : 4d51fe: 89 d0 mov %edx,%eax : * any special treatment in the critical section where the chunks are : * copied into the WAL buffers. Those entries have to be unlinked from the : * chain if we have to loop back here. : */ : begin:; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.15 : 4d5200: 83 c2 01 add $0x1,%edx : { : dtbuf[i] = InvalidBuffer; 0.00 : 4d5203: c7 44 85 b0 00 00 00 movl $0x0,-0x50(%rbp,%rax,4) 0.00 : 4d520a: 00 : dtbuf_bkp[i] = false; 0.29 : 4d520b: c6 44 05 c0 00 movb $0x0,-0x40(%rbp,%rax,1) 0.00 : 4d5210: e9 ab fd ff ff jmpq 4d4fc0 0.00 : 4d5215: 0f 1f 00 nopl (%rax) : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : if (rdt->buffer == dtbuf[i]) : { : /* Buffer already referenced by earlier chain item */ : if (dtbuf_bkp[i]) 0.00 : 4d5218: 89 d8 mov %ebx,%eax 0.00 : 4d521a: 80 7c 05 c0 00 cmpb $0x0,-0x40(%rbp,%rax,1) 0.00 : 4d521f: 0f 84 8c 00 00 00 je 4d52b1 : dtbuf[i] = rdt->buffer; : if (doPageWrites && XLogCheckBuffer(rdt, true, : &(dtbuf_lsn[i]), &(dtbuf_xlg[i]))) : { : dtbuf_bkp[i] = true; : rdt->data = NULL; 0.00 : 4d5225: 49 c7 04 24 00 00 00 movq $0x0,(%r12) 0.00 : 4d522c: 00 : rdt->len = 0; 0.00 : 4d522d: 41 c7 44 24 08 00 00 movl $0x0,0x8(%r12) 0.00 : 4d5234: 00 00 : else if (rdt->data) : len += rdt->len; : break; : } : } : if (i >= XLR_MAX_BKP_BLOCKS) 0.00 : 4d5236: 83 fb 03 cmp $0x3,%ebx 0.00 : 4d5239: 0f 87 f4 fd ff ff ja 4d5033 : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) 0.00 : 4d523f: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.15 : 4d5244: 48 85 c0 test %rax,%rax 0.00 : 4d5247: 0f 85 b6 fd ff ff jne 4d5003 : * error checking in ReadRecord. This means that all callers of : * XLogInsert must supply at least some not-in-a-buffer data. However, we : * make an exception for XLOG SWITCH records because we don't want them to : * ever cross a segment boundary. : */ : if (len == 0 && !isLogSwitch) 0.00 : 4d524d: 45 85 ed test %r13d,%r13d : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) : break; 0.00 : 4d5250: 4c 89 a5 88 fd ff ff mov %r12,-0x278(%rbp) : * error checking in ReadRecord. This means that all callers of : * XLogInsert must supply at least some not-in-a-buffer data. However, we : * make an exception for XLOG SWITCH records because we don't want them to : * ever cross a segment boundary. : */ : if (len == 0 && !isLogSwitch) 0.00 : 4d5257: 0f 85 96 00 00 00 jne 4d52f3 0.00 : 4d525d: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.00 : 4d5264: 0f 85 89 00 00 00 jne 4d52f3 : elog(PANIC, "invalid xlog record length %u", len); 0.00 : 4d526a: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d526f: be de 03 00 00 mov $0x3de,%esi 0.00 : 4d5274: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d5279: e8 a2 61 2a 00 callq 77b420 0.00 : 4d527e: 31 d2 xor %edx,%edx 0.00 : 4d5280: be 1f 98 7b 00 mov $0x7b981f,%esi 0.00 : 4d5285: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d528a: 31 c0 xor %eax,%eax 0.00 : 4d528c: e8 9f 5f 2a 00 callq 77b230 0.00 : 4d5291: e8 3a 42 f9 ff callq 4694d0 0.00 : 4d5296: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d529d: 00 00 00 : break; : } : if (dtbuf[i] == InvalidBuffer) : { : /* OK, put it in this slot */ : dtbuf[i] = rdt->buffer; 0.00 : 4d52a0: 41 89 de mov %ebx,%r14d 0.00 : 4d52a3: 42 89 4c b5 b0 mov %ecx,-0x50(%rbp,%r14,4) : if (doPageWrites && XLogCheckBuffer(rdt, true, 0.00 : 4d52a8: 80 bd 56 fd ff ff 00 cmpb $0x0,-0x2aa(%rbp) 0.00 : 4d52af: 75 15 jne 4d52c6 : { : dtbuf_bkp[i] = true; : rdt->data = NULL; : rdt->len = 0; : } : else if (rdt->data) 0.00 : 4d52b1: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 4d52b6: 0f 84 7a ff ff ff je 4d5236 : len += rdt->len; 0.00 : 4d52bc: 45 03 6c 24 08 add 0x8(%r12),%r13d 0.00 : 4d52c1: e9 70 ff ff ff jmpq 4d5236 : } : if (dtbuf[i] == InvalidBuffer) : { : /* OK, put it in this slot */ : dtbuf[i] = rdt->buffer; : if (doPageWrites && XLogCheckBuffer(rdt, true, 0.00 : 4d52c6: 4b 8d 0c 76 lea (%r14,%r14,2),%rcx 0.00 : 4d52ca: 4a 8d 54 f5 90 lea -0x70(%rbp,%r14,8),%rdx 0.00 : 4d52cf: be 01 00 00 00 mov $0x1,%esi 0.00 : 4d52d4: 4c 89 e7 mov %r12,%rdi 0.00 : 4d52d7: 48 8d 8c cd 10 ff ff lea -0xf0(%rbp,%rcx,8),%rcx 0.00 : 4d52de: ff 0.00 : 4d52df: e8 3c 96 ff ff callq 4ce920 0.00 : 4d52e4: 84 c0 test %al,%al 0.00 : 4d52e6: 74 c9 je 4d52b1 : &(dtbuf_lsn[i]), &(dtbuf_xlg[i]))) : { : dtbuf_bkp[i] = true; 0.00 : 4d52e8: 42 c6 44 35 c0 01 movb $0x1,-0x40(%rbp,%r14,1) 0.00 : 4d52ee: e9 32 ff ff ff jmpq 4d5225 : * XLogInsert must supply at least some not-in-a-buffer data. However, we : * make an exception for XLOG SWITCH records because we don't want them to : * ever cross a segment boundary. : */ : if (len == 0 && !isLogSwitch) : elog(PANIC, "invalid xlog record length %u", len); 0.00 : 4d52f3: 44 0f b6 bd 46 fd ff movzbl -0x2ba(%rbp),%r15d 0.00 : 4d52fa: ff 0.00 : 4d52fb: 4c 8d 85 10 fe ff ff lea -0x1f0(%rbp),%r8 0.00 : 4d5302: 4c 8d 95 90 fd ff ff lea -0x270(%rbp),%r10 0.00 : 4d5309: 48 8d bd 10 ff ff ff lea -0xf0(%rbp),%rdi 0.00 : 4d5310: 4c 8d 9d 90 fe ff ff lea -0x170(%rbp),%r11 0.00 : 4d5317: 45 89 ee mov %r13d,%r14d 0.15 : 4d531a: 45 31 c9 xor %r9d,%r9d : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : BkpBlock *bkpb; : char *page; : : if (!dtbuf_bkp[i]) 0.00 : 4d531d: 42 80 7c 0d c0 00 cmpb $0x0,-0x40(%rbp,%r9,1) 0.00 : 4d5323: 74 6b je 4d5390 : continue; : : info |= XLR_BKP_BLOCK(i); 0.00 : 4d5325: b8 08 00 00 00 mov $0x8,%eax 0.00 : 4d532a: 44 89 c9 mov %r9d,%ecx 0.00 : 4d532d: d3 f8 sar %cl,%eax 0.00 : 4d532f: 41 09 c7 or %eax,%r15d : : bkpb = &(dtbuf_xlg[i]); : page = (char *) BufferGetBlock(dtbuf[i]); 0.00 : 4d5332: 42 8b 44 8d b0 mov -0x50(%rbp,%r9,4),%eax 0.00 : 4d5337: 85 c0 test %eax,%eax 0.00 : 4d5339: 0f 88 88 02 00 00 js 4d55c7 0.00 : 4d533f: 83 e8 01 sub $0x1,%eax 0.00 : 4d5342: 48 63 f0 movslq %eax,%rsi 0.00 : 4d5345: 48 c1 e6 0d shl $0xd,%rsi 0.00 : 4d5349: 48 03 35 a8 a7 6e 00 add 0x6ea7a8(%rip),%rsi # bbfaf8 : : rdt->next = &(dtbuf_rdt1[i]); 0.00 : 4d5350: 4d 89 5c 24 18 mov %r11,0x18(%r12) : rdt = rdt->next; : : rdt->data = (char *) bkpb; 0.00 : 4d5355: 49 89 3b mov %rdi,(%r11) : rdt->len = sizeof(BkpBlock); : write_len += sizeof(BkpBlock); 0.00 : 4d5358: 41 8d 5e 18 lea 0x18(%r14),%ebx : : rdt->next = &(dtbuf_rdt1[i]); : rdt = rdt->next; : : rdt->data = (char *) bkpb; : rdt->len = sizeof(BkpBlock); 0.00 : 4d535c: 41 c7 43 08 18 00 00 movl $0x18,0x8(%r11) 0.00 : 4d5363: 00 : write_len += sizeof(BkpBlock); : : rdt->next = &(dtbuf_rdt2[i]); 0.00 : 4d5364: 4d 89 43 18 mov %r8,0x18(%r11) : rdt->next = &(dtbuf_rdt1[i]); : rdt = rdt->next; : : rdt->data = (char *) bkpb; : rdt->len = sizeof(BkpBlock); : write_len += sizeof(BkpBlock); 0.00 : 4d5368: 4d 89 c4 mov %r8,%r12 : : rdt->next = &(dtbuf_rdt2[i]); : rdt = rdt->next; : : if (bkpb->hole_length == 0) 0.00 : 4d536b: 66 83 7f 16 00 cmpw $0x0,0x16(%rdi) 0.00 : 4d5370: 0f 85 00 02 00 00 jne 4d5576 : { : rdt->data = page; 0.00 : 4d5376: 49 89 30 mov %rsi,(%r8) : rdt->len = BLCKSZ; 0.00 : 4d5379: 41 c7 40 08 00 20 00 movl $0x2000,0x8(%r8) 0.00 : 4d5380: 00 : write_len += BLCKSZ; 0.00 : 4d5381: 41 81 c6 18 20 00 00 add $0x2018,%r14d : rdt->next = NULL; 0.00 : 4d5388: 49 c7 40 18 00 00 00 movq $0x0,0x18(%r8) 0.00 : 4d538f: 00 : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); : write_len += rdt->len; : rdt->next = NULL; 0.00 : 4d5390: 49 83 c1 01 add $0x1,%r9 0.00 : 4d5394: 49 83 c0 20 add $0x20,%r8 0.00 : 4d5398: 49 83 c2 20 add $0x20,%r10 0.00 : 4d539c: 48 83 c7 18 add $0x18,%rdi 0.00 : 4d53a0: 49 83 c3 20 add $0x20,%r11 : * up. The XLR_BKP_BLOCK(N) bit corresponds to the N'th distinct buffer : * value (ignoring InvalidBuffer) appearing in the rdata chain. : */ : rdt_lastnormal = rdt; : write_len = len; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d53a4: 49 83 f9 04 cmp $0x4,%r9 0.00 : 4d53a8: 0f 85 6f ff ff ff jne 4d531d : * don't know the prev-link yet. Thus, the CRC will represent the CRC of : * the whole record in the order: rdata, then backup blocks, then record : * header. : */ : INIT_CRC32(rdata_crc); : for (rdt = rdata; rdt != NULL; rdt = rdt->next) 0.00 : 4d53ae: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 4d53b5: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 4d53bb: 48 85 ff test %rdi,%rdi 0.00 : 4d53be: 74 43 je 4d5403 : COMP_CRC32(rdata_crc, rdt->data, rdt->len); 0.15 : 4d53c0: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 4d53c3: 48 8b 17 mov (%rdi),%rdx 0.00 : 4d53c6: 85 c0 test %eax,%eax 0.00 : 4d53c8: 74 30 je 4d53fa 0.00 : 4d53ca: 83 e8 01 sub $0x1,%eax 0.00 : 4d53cd: 48 89 d1 mov %rdx,%rcx 0.00 : 4d53d0: 48 8d 74 02 01 lea 0x1(%rdx,%rax,1),%rsi 0.00 : 4d53d5: 0f 1f 00 nopl (%rax) 0.00 : 4d53d8: 0f b6 11 movzbl (%rcx),%edx 0.44 : 4d53db: 44 89 e0 mov %r12d,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 8.30 : 4d53de: 48 83 c1 01 add $0x1,%rcx 0.00 : 4d53e2: c1 e8 18 shr $0x18,%eax 8.59 : 4d53e5: 41 c1 e4 08 shl $0x8,%r12d /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 2.33 : 4d53e9: 31 d0 xor %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 7.13 : 4d53eb: 48 98 cltq 9.32 : 4d53ed: 44 33 24 85 a0 09 90 xor 0x9009a0(,%rax,4),%r12d 0.00 : 4d53f4: 00 55.75 : 4d53f5: 48 39 f1 cmp %rsi,%rcx 0.00 : 4d53f8: 75 de jne 4d53d8 : * don't know the prev-link yet. Thus, the CRC will represent the CRC of : * the whole record in the order: rdata, then backup blocks, then record : * header. : */ : INIT_CRC32(rdata_crc); : for (rdt = rdata; rdt != NULL; rdt = rdt->next) 0.00 : 4d53fa: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 4d53fe: 48 85 ff test %rdi,%rdi 0.00 : 4d5401: 75 bd jne 4d53c0 : * the space for the record), and make that the first chunk in the chain. : * : * The CRC calculated for the header here doesn't include prev-link, : * because we don't know it yet. It will be added later. : */ : rechdr->xl_xid = GetCurrentTransactionIdIfAny(); 0.00 : 4d5403: 48 8b 1d 1e 3f 6a 00 mov 0x6a3f1e(%rip),%rbx # b79328 : rechdr->xl_tot_len = SizeOfXLogRecord + write_len; 0.00 : 4d540a: 41 83 c6 20 add $0x20,%r14d : * the space for the record), and make that the first chunk in the chain. : * : * The CRC calculated for the header here doesn't include prev-link, : * because we don't know it yet. It will be added later. : */ : rechdr->xl_xid = GetCurrentTransactionIdIfAny(); 0.00 : 4d540e: e8 7d b7 fe ff callq 4c0b90 0.00 : 4d5413: 89 43 04 mov %eax,0x4(%rbx) : rechdr->xl_tot_len = SizeOfXLogRecord + write_len; 0.00 : 4d5416: 48 8b 05 0b 3f 6a 00 mov 0x6a3f0b(%rip),%rax # b79328 0.00 : 4d541d: 44 89 b5 64 fd ff ff mov %r14d,-0x29c(%rbp) 0.00 : 4d5424: 44 89 30 mov %r14d,(%rax) : rechdr->xl_len = len; /* doesn't include backup blocks */ 0.00 : 4d5427: 48 8b 05 fa 3e 6a 00 mov 0x6a3efa(%rip),%rax # b79328 0.00 : 4d542e: 44 89 68 08 mov %r13d,0x8(%rax) : rechdr->xl_info = info; 0.00 : 4d5432: 48 8b 05 ef 3e 6a 00 mov 0x6a3eef(%rip),%rax # b79328 0.00 : 4d5439: 44 88 78 0c mov %r15b,0xc(%rax) : rechdr->xl_rmid = rmid; 0.00 : 4d543d: 0f b6 95 47 fd ff ff movzbl -0x2b9(%rbp),%edx 0.00 : 4d5444: 48 8b 05 dd 3e 6a 00 mov 0x6a3edd(%rip),%rax # b79328 0.00 : 4d544b: 88 50 0d mov %dl,0xd(%rax) : rechdr->xl_prev = InvalidXLogRecPtr; 0.00 : 4d544e: 48 8b 05 d3 3e 6a 00 mov 0x6a3ed3(%rip),%rax # b79328 0.00 : 4d5455: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 4d545c: 00 : COMP_CRC32(rdata_crc, ((char *) rechdr), offsetof(XLogRecord, xl_prev)); 0.00 : 4d545d: 48 8b 3d c4 3e 6a 00 mov 0x6a3ec4(%rip),%rdi # b79328 0.00 : 4d5464: 48 8d 77 10 lea 0x10(%rdi),%rsi 0.00 : 4d5468: 48 89 f9 mov %rdi,%rcx 0.00 : 4d546b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4d5470: 0f b6 11 movzbl (%rcx),%edx 0.00 : 4d5473: 44 89 e0 mov %r12d,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1079 0.58 : 4d5476: 48 83 c1 01 add $0x1,%rcx 0.00 : 4d547a: c1 e8 18 shr $0x18,%eax 0.29 : 4d547d: 41 c1 e4 08 shl $0x8,%r12d 0.00 : 4d5481: 31 d0 xor %edx,%eax 0.29 : 4d5483: 48 98 cltq 0.44 : 4d5485: 44 33 24 85 a0 09 90 xor 0x9009a0(,%rax,4),%r12d 0.00 : 4d548c: 00 1.60 : 4d548d: 48 39 f1 cmp %rsi,%rcx 0.00 : 4d5490: 75 de jne 4d5470 : * initialize it, but the WAL writer tries to do that ahead of insertions : * to avoid that from happening in the critical path. : * : *---------- : */ : START_CRIT_SECTION(); 0.00 : 4d5492: 8b 05 04 4c 6e 00 mov 0x6e4c04(%rip),%eax # bba09c : rechdr->xl_info = info; : rechdr->xl_rmid = rmid; : rechdr->xl_prev = InvalidXLogRecPtr; : COMP_CRC32(rdata_crc, ((char *) rechdr), offsetof(XLogRecord, xl_prev)); : : hdr_rdt.next = rdata; 0.00 : 4d5498: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx : hdr_rdt.data = (char *) rechdr; 0.00 : 4d549f: 48 89 bd 70 ff ff ff mov %rdi,-0x90(%rbp) : hdr_rdt.len = SizeOfXLogRecord; 0.15 : 4d54a6: c7 85 78 ff ff ff 20 movl $0x20,-0x88(%rbp) 0.00 : 4d54ad: 00 00 00 : * initialize it, but the WAL writer tries to do that ahead of insertions : * to avoid that from happening in the critical path. : * : *---------- : */ : START_CRIT_SECTION(); 0.00 : 4d54b0: 83 c0 01 add $0x1,%eax : if (isLogSwitch) 0.00 : 4d54b3: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) : rechdr->xl_info = info; : rechdr->xl_rmid = rmid; : rechdr->xl_prev = InvalidXLogRecPtr; : COMP_CRC32(rdata_crc, ((char *) rechdr), offsetof(XLogRecord, xl_prev)); : : hdr_rdt.next = rdata; 0.00 : 4d54ba: 48 89 4d 88 mov %rcx,-0x78(%rbp) : * initialize it, but the WAL writer tries to do that ahead of insertions : * to avoid that from happening in the critical path. : * : *---------- : */ : START_CRIT_SECTION(); 0.00 : 4d54be: 89 05 d8 4b 6e 00 mov %eax,0x6e4bd8(%rip) # bba09c : if (isLogSwitch) 0.00 : 4d54c4: 0f 85 12 01 00 00 jne 4d55dc : * (semi-)randomly. This allows the locks to be used evenly if you have a : * lot of very short connections. : */ : static int lockToTry = -1; : : if (lockToTry == -1) 0.00 : 4d54ca: 83 3d 9b 29 69 00 ff cmpl $0xffffffff,0x69299b(%rip) # b67e6c 0.00 : 4d54d1: 0f 84 0f 01 00 00 je 4d55e6 : lockToTry = MyProc->pgprocno % NUM_XLOGINSERT_LOCKS; : MyLockNo = lockToTry; 0.00 : 4d54d7: 48 63 3d 8e 29 69 00 movslq 0x69298e(%rip),%rdi # b67e6c : : /* : * The insertingAt value is initially set to 0, as we don't know our : * insert location yet. : */ : immed = LWLockAcquireWithVar(&WALInsertLocks[MyLockNo].l.lock, 0.00 : 4d54de: 31 d2 xor %edx,%edx : */ : static int lockToTry = -1; : : if (lockToTry == -1) : lockToTry = MyProc->pgprocno % NUM_XLOGINSERT_LOCKS; : MyLockNo = lockToTry; 0.00 : 4d54e0: 89 3d e6 3c 6a 00 mov %edi,0x6a3ce6(%rip) # b791cc : : /* : * The insertingAt value is initially set to 0, as we don't know our : * insert location yet. : */ : immed = LWLockAcquireWithVar(&WALInsertLocks[MyLockNo].l.lock, 0.00 : 4d54e6: 48 c1 e7 07 shl $0x7,%rdi 0.00 : 4d54ea: 48 03 3d cf 3c 6a 00 add 0x6a3ccf(%rip),%rdi # b791c0 0.00 : 4d54f1: 48 8d 77 20 lea 0x20(%rdi),%rsi 0.00 : 4d54f5: e8 76 a9 1b 00 callq 68fe70 : &WALInsertLocks[MyLockNo].l.insertingAt, : 0); : if (!immed) 0.00 : 4d54fa: 84 c0 test %al,%al 0.00 : 4d54fc: 75 1e jne 4d551c : * inserters, this causes all the inserters to eventually migrate to a : * lock that no-one else is using. On a system with more inserters : * than locks, it still helps to distribute the inserters evenly : * across the locks. : */ : lockToTry = (lockToTry + 1) % NUM_XLOGINSERT_LOCKS; 0.00 : 4d54fe: 8b 05 68 29 69 00 mov 0x692968(%rip),%eax # b67e6c 0.00 : 4d5504: 83 c0 01 add $0x1,%eax 0.00 : 4d5507: 89 c2 mov %eax,%edx 0.00 : 4d5509: c1 fa 1f sar $0x1f,%edx 0.00 : 4d550c: c1 ea 1d shr $0x1d,%edx 0.00 : 4d550f: 01 d0 add %edx,%eax 0.00 : 4d5511: 83 e0 07 and $0x7,%eax 0.00 : 4d5514: 29 d0 sub %edx,%eax 0.00 : 4d5516: 89 05 50 29 69 00 mov %eax,0x692950(%rip) # b67e6c : * : * If we aren't doing full-page writes then RedoRecPtr doesn't actually : * affect the contents of the XLOG record, so we'll update our local copy : * but not force a recomputation. : */ : if (RedoRecPtr != Insert->RedoRecPtr) 0.15 : 4d551c: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 4d5523: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 4d552a: 48 3b 15 a7 3e 6a 00 cmp 0x6a3ea7(%rip),%rdx # b793d8 0.00 : 4d5531: 0f 84 2b fb ff ff je 4d5062 : { : Assert(RedoRecPtr < Insert->RedoRecPtr); : RedoRecPtr = Insert->RedoRecPtr; : : if (doPageWrites) 0.00 : 4d5537: 80 bd 56 fd ff ff 00 cmpb $0x0,-0x2aa(%rbp) : * but not force a recomputation. : */ : if (RedoRecPtr != Insert->RedoRecPtr) : { : Assert(RedoRecPtr < Insert->RedoRecPtr); : RedoRecPtr = Insert->RedoRecPtr; 0.00 : 4d553e: 48 89 15 93 3e 6a 00 mov %rdx,0x6a3e93(%rip) # b793d8 : : if (doPageWrites) 0.00 : 4d5545: 0f 84 17 fb ff ff je 4d5062 0.00 : 4d554b: 31 c0 xor %eax,%eax : { : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : if (dtbuf[i] == InvalidBuffer) 0.00 : 4d554d: 8b 4c 85 b0 mov -0x50(%rbp,%rax,4),%ecx 0.00 : 4d5551: 85 c9 test %ecx,%ecx 0.00 : 4d5553: 74 12 je 4d5567 : continue; : if (dtbuf_bkp[i] == false && 0.00 : 4d5555: 80 7c 05 c0 00 cmpb $0x0,-0x40(%rbp,%rax,1) 0.00 : 4d555a: 75 0b jne 4d5567 0.00 : 4d555c: 48 3b 54 c5 90 cmp -0x70(%rbp,%rax,8),%rdx 0.00 : 4d5561: 0f 83 ab 02 00 00 jae 4d5812 : */ : WALInsertLockRelease(); : END_CRIT_SECTION(); : rdt_lastnormal->next = NULL; : info = info_orig; : goto begin; 0.00 : 4d5567: 48 83 c0 01 add $0x1,%rax : Assert(RedoRecPtr < Insert->RedoRecPtr); : RedoRecPtr = Insert->RedoRecPtr; : : if (doPageWrites) : { : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d556b: 48 83 f8 04 cmp $0x4,%rax 0.00 : 4d556f: 75 dc jne 4d554d 0.00 : 4d5571: e9 01 fb ff ff jmpq 4d5077 : rdt->next = NULL; : } : else : { : /* must skip the hole */ : rdt->data = page; 0.00 : 4d5576: 49 89 30 mov %rsi,(%r8) : rdt->len = bkpb->hole_offset; 0.00 : 4d5579: 0f b7 47 14 movzwl 0x14(%rdi),%eax : write_len += bkpb->hole_offset; 0.00 : 4d557d: 4d 89 d4 mov %r10,%r12 : } : else : { : /* must skip the hole */ : rdt->data = page; : rdt->len = bkpb->hole_offset; 0.00 : 4d5580: 41 89 40 08 mov %eax,0x8(%r8) : write_len += bkpb->hole_offset; 0.00 : 4d5584: 0f b7 4f 14 movzwl 0x14(%rdi),%ecx : : rdt->next = &(dtbuf_rdt3[i]); 0.00 : 4d5588: 4d 89 50 18 mov %r10,0x18(%r8) : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); 0.00 : 4d558c: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 4d5590: 0f b7 47 16 movzwl 0x16(%rdi),%eax 0.00 : 4d5594: 01 d0 add %edx,%eax 0.00 : 4d5596: 48 98 cltq 0.00 : 4d5598: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 4d559c: 49 89 02 mov %rax,(%r10) : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); 0.00 : 4d559f: 0f b7 47 16 movzwl 0x16(%rdi),%eax 0.00 : 4d55a3: 0f b7 57 14 movzwl 0x14(%rdi),%edx : write_len += rdt->len; : rdt->next = NULL; 0.00 : 4d55a7: 49 c7 42 18 00 00 00 movq $0x0,0x18(%r10) 0.00 : 4d55ae: 00 : : rdt->next = &(dtbuf_rdt3[i]); : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); 0.00 : 4d55af: f7 d8 neg %eax 0.00 : 4d55b1: 29 d0 sub %edx,%eax 0.00 : 4d55b3: 05 00 20 00 00 add $0x2000,%eax 0.00 : 4d55b8: 41 89 42 08 mov %eax,0x8(%r10) : else : { : /* must skip the hole */ : rdt->data = page; : rdt->len = bkpb->hole_offset; : write_len += bkpb->hole_offset; 0.00 : 4d55bc: 01 c8 add %ecx,%eax : rdt->next = &(dtbuf_rdt3[i]); : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); : write_len += rdt->len; 0.00 : 4d55be: 44 8d 34 18 lea (%rax,%rbx,1),%r14d 0.00 : 4d55c2: e9 c9 fd ff ff jmpq 4d5390 : continue; : : info |= XLR_BKP_BLOCK(i); : : bkpb = &(dtbuf_xlg[i]); : page = (char *) BufferGetBlock(dtbuf[i]); 0.00 : 4d55c7: f7 d0 not %eax 0.00 : 4d55c9: 48 63 d0 movslq %eax,%rdx 0.00 : 4d55cc: 48 8b 05 45 7b 6a 00 mov 0x6a7b45(%rip),%rax # b7d118 0.00 : 4d55d3: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 4d55d7: e9 74 fd ff ff jmpq 4d5350 : * : *---------- : */ : START_CRIT_SECTION(); : if (isLogSwitch) : WALInsertLockAcquireExclusive(); 0.00 : 4d55dc: e8 7f 86 ff ff callq 4cdc60 0.00 : 4d55e1: e9 36 ff ff ff jmpq 4d551c : * lot of very short connections. : */ : static int lockToTry = -1; : : if (lockToTry == -1) : lockToTry = MyProc->pgprocno % NUM_XLOGINSERT_LOCKS; 0.00 : 4d55e6: 48 8b 05 5b 83 6a 00 mov 0x6a835b(%rip),%rax # b7d948 0.00 : 4d55ed: 8b 40 30 mov 0x30(%rax),%eax 0.00 : 4d55f0: 89 c2 mov %eax,%edx 0.00 : 4d55f2: c1 fa 1f sar $0x1f,%edx 0.00 : 4d55f5: c1 ea 1d shr $0x1d,%edx 0.00 : 4d55f8: 01 d0 add %edx,%eax 0.00 : 4d55fa: 83 e0 07 and $0x7,%eax 0.00 : 4d55fd: 29 d0 sub %edx,%eax 0.00 : 4d55ff: 89 05 67 28 69 00 mov %eax,0x692867(%rip) # b67e6c 0.00 : 4d5605: e9 cd fe ff ff jmpq 4d54d7 : */ : if (isLogSwitch) : inserted = ReserveXLogSwitch(&StartPos, &EndPos, &rechdr->xl_prev); : else : { : ReserveXLogInsertLocation(write_len, &StartPos, &EndPos, 0.00 : 4d560a: 4c 8b 3d 17 3d 6a 00 mov 0x6a3d17(%rip),%r15 # b79328 : */ : static void : ReserveXLogInsertLocation(int size, XLogRecPtr *StartPos, XLogRecPtr *EndPos, : XLogRecPtr *PrevPtr) : { : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d5611: 4c 8b 2d 80 3b 6a 00 mov 0x6a3b80(%rip),%r13 # b79198 0.00 : 4d5618: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d561d: f0 41 86 45 00 lock xchg %al,0x0(%r13) : * page headers. The mapping between "usable" byte positions and physical : * positions (XLogRecPtrs) can be done outside the locked region, and : * because the usable byte position doesn't include any headers, reserving : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1350 0.58 : 4d5622: 84 c0 test %al,%al 0.00 : 4d5624: 74 12 je 4d5638 0.00 : 4d5626: ba 46 05 00 00 mov $0x546,%edx 0.00 : 4d562b: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d5630: 4c 89 ef mov %r13,%rdi 0.00 : 4d5633: e8 08 aa 1b 00 callq 690040 : : startbytepos = Insert->CurrBytePos; : endbytepos = startbytepos + size; 0.00 : 4d5638: 8b 85 64 fd ff ff mov -0x29c(%rbp),%eax : * because the usable byte position doesn't include any headers, reserving : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; 0.00 : 4d563e: 49 8b 7d 08 mov 0x8(%r13),%rdi : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; 0.00 : 4d5642: 49 8b 5d 10 mov 0x10(%r13),%rbx : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; : endbytepos = startbytepos + size; 0.00 : 4d5646: 83 c0 07 add $0x7,%eax : prevbytepos = Insert->PrevBytePos; : Insert->CurrBytePos = endbytepos; : Insert->PrevBytePos = startbytepos; 0.00 : 4d5649: 49 89 7d 10 mov %rdi,0x10(%r13) : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; : endbytepos = startbytepos + size; 0.00 : 4d564d: 83 e0 f8 and $0xfffffff8,%eax 0.00 : 4d5650: 48 98 cltq 0.00 : 4d5652: 4c 8d 34 38 lea (%rax,%rdi,1),%r14 : prevbytepos = Insert->PrevBytePos; : Insert->CurrBytePos = endbytepos; 0.00 : 4d5656: 4d 89 75 08 mov %r14,0x8(%r13) : Insert->PrevBytePos = startbytepos; : : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d565a: 41 c6 45 00 00 movb $0x0,0x0(%r13) : : *StartPos = XLogBytePosToRecPtr(startbytepos); 0.00 : 4d565f: e8 1c 77 ff ff callq 4ccd80 : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d5664: 4c 89 f7 mov %r14,%rdi : Insert->CurrBytePos = endbytepos; : Insert->PrevBytePos = startbytepos; : : SpinLockRelease(&Insert->insertpos_lck); : : *StartPos = XLogBytePosToRecPtr(startbytepos); 0.15 : 4d5667: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d566e: e8 9d 77 ff ff callq 4cce10 : *PrevPtr = XLogBytePosToRecPtr(prevbytepos); 0.00 : 4d5673: 48 89 df mov %rbx,%rdi : Insert->PrevBytePos = startbytepos; : : SpinLockRelease(&Insert->insertpos_lck); : : *StartPos = XLogBytePosToRecPtr(startbytepos); : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d5676: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) : *PrevPtr = XLogBytePosToRecPtr(prevbytepos); 0.00 : 4d567d: e8 fe 76 ff ff callq 4ccd80 0.00 : 4d5682: 49 89 47 10 mov %rax,0x10(%r15) : { : /* : * Now that xl_prev has been filled in, finish CRC calculation of the : * record header. : */ : COMP_CRC32(rdata_crc, ((char *) &rechdr->xl_prev), sizeof(XLogRecPtr)); 0.00 : 4d5686: 48 8b 35 9b 3c 6a 00 mov 0x6a3c9b(%rip),%rsi # b79328 0.00 : 4d568d: 48 8d 4e 10 lea 0x10(%rsi),%rcx 0.00 : 4d5691: 48 8d 7e 18 lea 0x18(%rsi),%rdi 0.00 : 4d5695: 0f b6 11 movzbl (%rcx),%edx 0.00 : 4d5698: 44 89 e0 mov %r12d,%eax 0.15 : 4d569b: 48 83 c1 01 add $0x1,%rcx 0.00 : 4d569f: c1 e8 18 shr $0x18,%eax 0.15 : 4d56a2: 41 c1 e4 08 shl $0x8,%r12d 0.00 : 4d56a6: 31 d0 xor %edx,%eax 0.00 : 4d56a8: 48 98 cltq 0.00 : 4d56aa: 44 33 24 85 a0 09 90 xor 0x9009a0(,%rax,4),%r12d 0.00 : 4d56b1: 00 0.44 : 4d56b2: 48 39 f9 cmp %rdi,%rcx 0.00 : 4d56b5: 75 de jne 4d5695 : FIN_CRC32(rdata_crc); : rechdr->xl_crc = rdata_crc; 0.00 : 4d56b7: 41 f7 d4 not %r12d 0.00 : 4d56ba: 44 89 66 18 mov %r12d,0x18(%rsi) : /* : * Get a pointer to the right place in the right WAL buffer to start : * inserting to. : */ : CurrPos = StartPos; : currpos = GetXLogBuffer(CurrPos); 0.00 : 4d56be: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi : freespace = INSERT_FREESPACE(CurrPos); 0.00 : 4d56c5: 45 31 e4 xor %r12d,%r12d : /* : * Get a pointer to the right place in the right WAL buffer to start : * inserting to. : */ : CurrPos = StartPos; : currpos = GetXLogBuffer(CurrPos); 0.00 : 4d56c8: e8 13 f7 ff ff callq 4d4de0 0.00 : 4d56cd: 49 89 c0 mov %rax,%r8 : freespace = INSERT_FREESPACE(CurrPos); 0.00 : 4d56d0: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 4d56d7: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4d56dc: 74 09 je 4d56e7 0.00 : 4d56de: 41 bc 00 20 00 00 mov $0x2000,%r12d 0.00 : 4d56e4: 41 29 c4 sub %eax,%r12d 0.00 : 4d56e7: 48 8d 8d 70 ff ff ff lea -0x90(%rbp),%rcx 0.00 : 4d56ee: 4c 8b ad 80 fd ff ff mov -0x280(%rbp),%r13 0.00 : 4d56f5: c7 85 7c fd ff ff 00 movl $0x0,-0x284(%rbp) 0.00 : 4d56fc: 00 00 00 0.00 : 4d56ff: 48 89 8d 70 fd ff ff mov %rcx,-0x290(%rbp) : : /* Copy record data */ : written = 0; : while (rdata != NULL) : { : char *rdata_data = rdata->data; 0.00 : 4d5706: 48 8b 85 70 fd ff ff mov -0x290(%rbp),%rax : int rdata_len = rdata->len; 0.00 : 4d570d: 44 8b 70 08 mov 0x8(%rax),%r14d : : /* Copy record data */ : written = 0; : while (rdata != NULL) : { : char *rdata_data = rdata->data; 0.00 : 4d5711: 4c 8b 38 mov (%rax),%r15 : int rdata_len = rdata->len; : : while (rdata_len > freespace) 0.00 : 4d5714: 45 39 f4 cmp %r14d,%r12d 0.00 : 4d5717: 7d 7a jge 4d5793 0.00 : 4d5719: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* : * Write what fits on this page, and continue on the next page. : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); 0.00 : 4d5720: 49 63 dc movslq %r12d,%rbx 0.00 : 4d5723: 4c 89 c7 mov %r8,%rdi 0.00 : 4d5726: 4c 89 fe mov %r15,%rsi 0.00 : 4d5729: 48 89 da mov %rbx,%rdx : rdata_data += freespace; 0.00 : 4d572c: 49 01 df add %rbx,%r15 : rdata_len -= freespace; : written += freespace; : CurrPos += freespace; 0.00 : 4d572f: 4c 01 eb add %r13,%rbx : { : /* : * Write what fits on this page, and continue on the next page. : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); 0.00 : 4d5732: e8 b9 44 f9 ff callq 469bf0 : * It's safe to set the contrecord flag and xlp_rem_len without a : * lock on the page. All the other flags were already set when the : * page was initialized, in AdvanceXLInsertBuffer, and we're the : * only backend that needs to set the contrecord flag. : */ : currpos = GetXLogBuffer(CurrPos); 0.00 : 4d5737: 48 89 df mov %rbx,%rdi : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); : rdata_data += freespace; : rdata_len -= freespace; : written += freespace; 0.00 : 4d573a: 44 01 a5 7c fd ff ff add %r12d,-0x284(%rbp) : * Write what fits on this page, and continue on the next page. : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); : rdata_data += freespace; : rdata_len -= freespace; 0.00 : 4d5741: 45 29 e6 sub %r12d,%r14d : * It's safe to set the contrecord flag and xlp_rem_len without a : * lock on the page. All the other flags were already set when the : * page was initialized, in AdvanceXLInsertBuffer, and we're the : * only backend that needs to set the contrecord flag. : */ : currpos = GetXLogBuffer(CurrPos); 0.00 : 4d5744: e8 97 f6 ff ff callq 4d4de0 0.00 : 4d5749: 48 89 c2 mov %rax,%rdx : pagehdr = (XLogPageHeader) currpos; : pagehdr->xlp_rem_len = write_len - written; 0.00 : 4d574c: 8b 85 64 fd ff ff mov -0x29c(%rbp),%eax 0.00 : 4d5752: 2b 85 7c fd ff ff sub -0x284(%rbp),%eax : pagehdr->xlp_info |= XLP_FIRST_IS_CONTRECORD; 0.15 : 4d5758: 66 83 4a 02 01 orw $0x1,0x2(%rdx) : : /* skip over the page header */ : if (CurrPos % XLogSegSize == 0) 0.29 : 4d575d: f7 c3 ff ff ff 00 test $0xffffff,%ebx : { : CurrPos += SizeOfXLogLongPHD; 0.00 : 4d5763: 4c 8d 6b 28 lea 0x28(%rbx),%r13 : currpos += SizeOfXLogLongPHD; 0.00 : 4d5767: 4c 8d 42 28 lea 0x28(%rdx),%r8 : * page was initialized, in AdvanceXLInsertBuffer, and we're the : * only backend that needs to set the contrecord flag. : */ : currpos = GetXLogBuffer(CurrPos); : pagehdr = (XLogPageHeader) currpos; : pagehdr->xlp_rem_len = write_len - written; 0.00 : 4d576b: 89 42 10 mov %eax,0x10(%rdx) : pagehdr->xlp_info |= XLP_FIRST_IS_CONTRECORD; : : /* skip over the page header */ : if (CurrPos % XLogSegSize == 0) 0.00 : 4d576e: 74 08 je 4d5778 : CurrPos += SizeOfXLogLongPHD; : currpos += SizeOfXLogLongPHD; : } : else : { : CurrPos += SizeOfXLogShortPHD; 0.00 : 4d5770: 4c 8d 6b 18 lea 0x18(%rbx),%r13 : currpos += SizeOfXLogShortPHD; 0.00 : 4d5774: 4c 8d 42 18 lea 0x18(%rdx),%r8 : } : freespace = INSERT_FREESPACE(CurrPos); 0.00 : 4d5778: 4c 89 e8 mov %r13,%rax 0.00 : 4d577b: 45 31 e4 xor %r12d,%r12d 0.00 : 4d577e: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4d5783: 74 09 je 4d578e 0.00 : 4d5785: 41 bc 00 20 00 00 mov $0x2000,%r12d 0.00 : 4d578b: 41 29 c4 sub %eax,%r12d : while (rdata != NULL) : { : char *rdata_data = rdata->data; : int rdata_len = rdata->len; : : while (rdata_len > freespace) 0.00 : 4d578e: 45 39 e6 cmp %r12d,%r14d 0.00 : 4d5791: 7f 8d jg 4d5720 : } : freespace = INSERT_FREESPACE(CurrPos); : } : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); 0.00 : 4d5793: 49 63 de movslq %r14d,%rbx 0.00 : 4d5796: 4c 89 c7 mov %r8,%rdi 0.00 : 4d5799: 4c 89 fe mov %r15,%rsi 0.00 : 4d579c: 48 89 da mov %rbx,%rdx 0.15 : 4d579f: 4c 89 85 30 fd ff ff mov %r8,-0x2d0(%rbp) : currpos += rdata_len; : CurrPos += rdata_len; 0.15 : 4d57a6: 49 01 dd add %rbx,%r13 : } : freespace = INSERT_FREESPACE(CurrPos); : } : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); 0.00 : 4d57a9: e8 42 44 f9 ff callq 469bf0 : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; : : rdata = rdata->next; 0.00 : 4d57ae: 48 8b 95 70 fd ff ff mov -0x290(%rbp),%rdx : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; 0.00 : 4d57b5: 45 29 f4 sub %r14d,%r12d : */ : Assert(freespace >= sizeof(uint32)); : : /* Copy record data */ : written = 0; : while (rdata != NULL) 0.00 : 4d57b8: 4c 8b 85 30 fd ff ff mov -0x2d0(%rbp),%r8 : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; : : rdata = rdata->next; 0.15 : 4d57bf: 48 8b 52 18 mov 0x18(%rdx),%rdx : */ : Assert(freespace >= sizeof(uint32)); : : /* Copy record data */ : written = 0; : while (rdata != NULL) 0.00 : 4d57c3: 48 85 d2 test %rdx,%rdx : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; : : rdata = rdata->next; 0.00 : 4d57c6: 48 89 95 70 fd ff ff mov %rdx,-0x290(%rbp) : */ : Assert(freespace >= sizeof(uint32)); : : /* Copy record data */ : written = 0; : while (rdata != NULL) 0.00 : 4d57cd: 74 6d je 4d583c : freespace = INSERT_FREESPACE(CurrPos); : } : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); : currpos += rdata_len; 0.00 : 4d57cf: 49 01 d8 add %rbx,%r8 : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; 0.00 : 4d57d2: 44 01 b5 7c fd ff ff add %r14d,-0x284(%rbp) 0.00 : 4d57d9: e9 28 ff ff ff jmpq 4d5706 : : if (rechdr == NULL) : { : static char rechdrbuf[SizeOfXLogRecord + MAXIMUM_ALIGNOF]; : : rechdr = (XLogRecord *) MAXALIGN(&rechdrbuf); 0.00 : 4d57de: b8 07 93 b7 00 mov $0xb79307,%eax 0.00 : 4d57e3: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 4d57e7: 48 89 05 3a 3b 6a 00 mov %rax,0x6a3b3a(%rip) # b79328 : MemSet(rechdr, 0, SizeOfXLogRecord); 0.00 : 4d57ee: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 4d57f5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 4d57fc: 00 0.00 : 4d57fd: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 4d5804: 00 0.00 : 4d5805: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 4d580c: 00 0.00 : 4d580d: e9 6a f7 ff ff jmpq 4d4f7c : { : /* : * Oops, this buffer now needs to be backed up, but we : * didn't think so above. Start over. : */ : WALInsertLockRelease(); 0.00 : 4d5812: e8 89 83 ff ff callq 4cdba0 : END_CRIT_SECTION(); 0.00 : 4d5817: 8b 05 7f 48 6e 00 mov 0x6e487f(%rip),%eax # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d581d: 48 8b 95 88 fd ff ff mov -0x278(%rbp),%rdx : /* : * Oops, this buffer now needs to be backed up, but we : * didn't think so above. Start over. : */ : WALInsertLockRelease(); : END_CRIT_SECTION(); 0.00 : 4d5824: 83 e8 01 sub $0x1,%eax 0.00 : 4d5827: 89 05 6f 48 6e 00 mov %eax,0x6e486f(%rip) # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d582d: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 4d5834: 00 0.00 : 4d5835: 31 d2 xor %edx,%edx : info = info_orig; : goto begin; 0.00 : 4d5837: e9 c2 f9 ff ff jmpq 4d51fe : rdata = rdata->next; : } : Assert(written == write_len); : : /* Align the end position, so that the next record starts aligned */ : CurrPos = MAXALIGN64(CurrPos); 0.00 : 4d583c: 49 8d 45 07 lea 0x7(%r13),%rax 0.00 : 4d5840: 49 89 c5 mov %rax,%r13 0.00 : 4d5843: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 : * we also have to consume all the remaining space in the WAL segment. We : * have already reserved it for us, but we still need to make sure it's : * allocated and zeroed in the WAL buffers so that when the caller (or : * someone else) does XLogWrite(), it can really write out all the zeros. : */ : if (isLogSwitch && CurrPos % XLOG_SEG_SIZE != 0) 0.00 : 4d5847: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.00 : 4d584e: 74 38 je 4d5888 0.00 : 4d5850: a9 f8 ff ff 00 test $0xfffff8,%eax 0.00 : 4d5855: 74 31 je 4d5888 : * against ourselves if wal_buffers < XLOG_SEG_SIZE. : */ : Assert(EndPos % XLogSegSize == 0); : : /* Use up all the remaining space on the first page */ : CurrPos += freespace; 0.00 : 4d5857: 49 63 c4 movslq %r12d,%rax 0.00 : 4d585a: 49 01 c5 add %rax,%r13 : : while (CurrPos < EndPos) 0.00 : 4d585d: 4c 3b ad 58 fd ff ff cmp -0x2a8(%rbp),%r13 0.00 : 4d5864: 73 22 jae 4d5888 : { : /* initialize the next page (if not initialized already) */ : WALInsertLockUpdateInsertingAt(CurrPos); 0.00 : 4d5866: 4c 89 ef mov %r13,%rdi 0.00 : 4d5869: e8 22 f5 ff ff callq 4d4d90 : AdvanceXLInsertBuffer(CurrPos, false); 0.00 : 4d586e: 31 f6 xor %esi,%esi 0.00 : 4d5870: 4c 89 ef mov %r13,%rdi : CurrPos += XLOG_BLCKSZ; 0.00 : 4d5873: 49 81 c5 00 20 00 00 add $0x2000,%r13 : : while (CurrPos < EndPos) : { : /* initialize the next page (if not initialized already) */ : WALInsertLockUpdateInsertingAt(CurrPos); : AdvanceXLInsertBuffer(CurrPos, false); 0.00 : 4d587a: e8 f1 ed ff ff callq 4d4670 : Assert(EndPos % XLogSegSize == 0); : : /* Use up all the remaining space on the first page */ : CurrPos += freespace; : : while (CurrPos < EndPos) 0.00 : 4d587f: 4c 3b ad 58 fd ff ff cmp -0x2a8(%rbp),%r13 0.00 : 4d5886: 72 de jb 4d5866 : AdvanceXLInsertBuffer(CurrPos, false); : CurrPos += XLOG_BLCKSZ; : } : } : : if (CurrPos != EndPos) 0.15 : 4d5888: 4c 3b ad 58 fd ff ff cmp -0x2a8(%rbp),%r13 : elog(PANIC, "space reserved for WAL record does not match what was written"); 0.00 : 4d588f: bb 01 00 00 00 mov $0x1,%ebx : AdvanceXLInsertBuffer(CurrPos, false); : CurrPos += XLOG_BLCKSZ; : } : } : : if (CurrPos != EndPos) 0.00 : 4d5894: 0f 84 32 f8 ff ff je 4d50cc : elog(PANIC, "space reserved for WAL record does not match what was written"); 0.00 : 4d589a: ba 60 d6 7b 00 mov $0x7bd660,%edx 0.00 : 4d589f: be 1a 06 00 00 mov $0x61a,%esi 0.00 : 4d58a4: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d58a9: e8 72 5b 2a 00 callq 77b420 0.00 : 4d58ae: be 70 b8 7b 00 mov $0x7bb870,%esi 0.00 : 4d58b3: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d58b8: 31 c0 xor %eax,%eax 0.00 : 4d58ba: e8 71 59 2a 00 callq 77b230 0.00 : 4d58bf: e8 0c 3c f9 ff callq 4694d0 0.00 : 4d58c4: 0f 1f 40 00 nopl 0x0(%rax) : * end-of-segment actions (eg, notifying archiver). : */ : if (isLogSwitch) : { : TRACE_POSTGRESQL_XLOG_SWITCH(); : XLogFlush(EndPos); 0.00 : 4d58c8: 48 8b bd 58 fd ff ff mov -0x2a8(%rbp),%rdi 0.00 : 4d58cf: e8 7c f2 ff ff callq 4d4b50 : /* : * Even though we reserved the rest of the segment for us, which is : * reflected in EndPos, we return a pointer to just the end of the : * xlog-switch record. : */ : if (inserted) 0.00 : 4d58d4: 84 db test %bl,%bl 0.00 : 4d58d6: 0f 84 bb f8 ff ff je 4d5197 : { : EndPos = StartPos + SizeOfXLogRecord; 0.00 : 4d58dc: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 4d58e3: 48 83 c0 20 add $0x20,%rax 0.00 : 4d58e7: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.00 : 4d58ee: 48 c1 e8 0d shr $0xd,%rax 0.00 : 4d58f2: 49 39 c4 cmp %rax,%r12 0.00 : 4d58f5: 0f 84 9c f8 ff ff je 4d5197 : { : if (EndPos % XLOG_SEG_SIZE == EndPos % XLOG_BLCKSZ) : EndPos += SizeOfXLogLongPHD; 0.00 : 4d58fb: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 4d5902: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 4d5909: 48 83 c2 48 add $0x48,%rdx 0.00 : 4d590d: 48 83 c0 38 add $0x38,%rax 0.00 : 4d5911: 48 f7 85 58 fd ff ff testq $0xffe000,-0x2a8(%rbp) 0.00 : 4d5918: 00 e0 ff 00 0.00 : 4d591c: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 4d5920: 48 89 95 58 fd ff ff mov %rdx,-0x2a8(%rbp) 0.00 : 4d5927: e9 6b f8 ff ff jmpq 4d5197 : * These calculations are a bit heavy-weight to be done while holding a : * spinlock, but since we're holding all the WAL insertion locks, there : * are no other inserters competing for it. GetXLogInsertRecPtr() does : * compete for it, but that's not called very frequently. : */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d592c: ba 77 05 00 00 mov $0x577,%edx 0.00 : 4d5931: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d5936: 48 89 df mov %rbx,%rdi 0.00 : 4d5939: e8 02 a7 1b 00 callq 690040 0.00 : 4d593e: e9 5f f7 ff ff jmpq 4d50a2 : MemSet(rechdr, 0, SizeOfXLogRecord); : } : : /* cross-check on whether we should be here or not */ : if (!XLogInsertAllowed()) : elog(ERROR, "cannot make new WAL entries during recovery"); 0.00 : 4d5943: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d5948: be 74 03 00 00 mov $0x374,%esi 0.00 : 4d594d: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d5952: e8 c9 5a 2a 00 callq 77b420 0.00 : 4d5957: be 10 b8 7b 00 mov $0x7bb810,%esi 0.00 : 4d595c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d5961: 31 c0 xor %eax,%eax 0.00 : 4d5963: e8 c8 58 2a 00 callq 77b230 0.00 : 4d5968: e8 63 3b f9 ff callq 4694d0 : : /* info's high bits are reserved for use by me */ : if (info & XLR_INFO_MASK) : elog(PANIC, "invalid xlog info mask %02X", info); 0.00 : 4d596d: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d5972: be 78 03 00 00 mov $0x378,%esi 0.00 : 4d5977: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d597c: e8 9f 5a 2a 00 callq 77b420 0.00 : 4d5981: 89 da mov %ebx,%edx 0.00 : 4d5983: be 03 98 7b 00 mov $0x7b9803,%esi 0.00 : 4d5988: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d598d: 31 c0 xor %eax,%eax 0.00 : 4d598f: e8 9c 58 2a 00 callq 77b230 0.00 : 4d5994: e8 37 3b f9 ff callq 4694d0 : *EndPos = *StartPos = ptr; : return false; : } : : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; 0.00 : 4d5999: 48 8b 53 10 mov 0x10(%rbx),%rdx : SpinLockRelease(&Insert->insertpos_lck); : *EndPos = *StartPos = ptr; : return false; : } : : endbytepos = startbytepos + size; 0.00 : 4d599d: 4d 8d 6e 20 lea 0x20(%r14),%r13 : prevbytepos = Insert->PrevBytePos; : : *StartPos = XLogBytePosToRecPtr(startbytepos); : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d59a1: 4c 89 ef mov %r13,%rdi : *EndPos = *StartPos = ptr; : return false; : } : : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; 0.00 : 4d59a4: 48 89 95 68 fd ff ff mov %rdx,-0x298(%rbp) : : *StartPos = XLogBytePosToRecPtr(startbytepos); : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d59ab: e8 60 74 ff ff callq 4cce10 0.00 : 4d59b0: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) : : segleft = XLOG_SEG_SIZE - ((*EndPos) % XLOG_SEG_SIZE); 0.00 : 4d59b7: 8b 85 58 fd ff ff mov -0x2a8(%rbp),%eax 0.00 : 4d59bd: ba 00 00 00 01 mov $0x1000000,%edx 0.00 : 4d59c2: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : 4d59c7: 29 c2 sub %eax,%edx : if (segleft != XLOG_SEG_SIZE) 0.00 : 4d59c9: 81 fa 00 00 00 01 cmp $0x1000000,%edx 0.00 : 4d59cf: 74 18 je 4d59e9 : { : /* consume the rest of the segment */ : *EndPos += segleft; 0.00 : 4d59d1: 89 d0 mov %edx,%eax 0.00 : 4d59d3: 48 01 85 58 fd ff ff add %rax,-0x2a8(%rbp) : endbytepos = XLogRecPtrToBytePos(*EndPos); 0.00 : 4d59da: 48 8b bd 58 fd ff ff mov -0x2a8(%rbp),%rdi 0.00 : 4d59e1: e8 ea 74 ff ff callq 4cced0 0.00 : 4d59e6: 49 89 c5 mov %rax,%r13 : } : : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; : : *StartPos = XLogBytePosToRecPtr(startbytepos); 0.00 : 4d59e9: 4c 89 f7 mov %r14,%rdi 0.00 : 4d59ec: e8 8f 73 ff ff callq 4ccd80 0.00 : 4d59f1: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) : { : /* consume the rest of the segment */ : *EndPos += segleft; : endbytepos = XLogRecPtrToBytePos(*EndPos); : } : Insert->CurrBytePos = endbytepos; 0.00 : 4d59f8: 4c 89 6b 08 mov %r13,0x8(%rbx) : Insert->PrevBytePos = startbytepos; 0.00 : 4d59fc: 4c 89 73 10 mov %r14,0x10(%rbx) : : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d5a00: c6 03 00 movb $0x0,(%rbx) : : *PrevPtr = XLogBytePosToRecPtr(prevbytepos); 0.00 : 4d5a03: 48 8b bd 68 fd ff ff mov -0x298(%rbp),%rdi 0.00 : 4d5a0a: e8 71 73 ff ff callq 4ccd80 0.00 : 4d5a0f: 49 89 47 10 mov %rax,0x10(%r15) 0.00 : 4d5a13: e9 6e fc ff ff jmpq 4d5686 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:756 24.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 11.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:735 9.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:735 7.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 5.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 2.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:735 0.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:749 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798b80 : : * pfree : * Release an allocated chunk. : */ : void : pfree(void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:735 11.17 : 798b80: 55 push %rbp 9.67 : 798b81: 48 89 f8 mov %rdi,%rax : Assert(pointer == (void *) MAXALIGN(pointer)); : : /* : * OK, it's probably safe to look at the chunk header. : */ : context = ((StandardChunkHeader *) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:749 0.68 : 798b84: 48 8b 7f f0 mov -0x10(%rdi),%rdi : ((char *) pointer - STANDARDCHUNKHEADERSIZE))->context; : : AssertArg(MemoryContextIsValid(context)); : : (*context->methods->free_p) (context, pointer); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 7.08 : 798b88: 48 89 c6 mov %rax,%rsi : * pfree : * Release an allocated chunk. : */ : void : pfree(void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:735 2.32 : 798b8b: 48 89 e5 mov %rsp,%rbp : context = ((StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE))->context; : : AssertArg(MemoryContextIsValid(context)); : : (*context->methods->free_p) (context, pointer); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 5.31 : 798b8e: 48 8b 57 08 mov 0x8(%rdi),%rdx 24.52 : 798b92: 4c 8b 5a 08 mov 0x8(%rdx),%r11 : VALGRIND_MEMPOOL_FREE(context, pointer); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:756 38.83 : 798b96: c9 leaveq : context = ((StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE))->context; : : AssertArg(MemoryContextIsValid(context)); : : (*context->methods->free_p) (context, pointer); 0.41 : 798b97: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 10.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 7.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 6.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 5.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 5.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 4.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 4.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 4.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 4.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:696 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 2.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 1.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 1.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798d50 : : return ret; : } : : void * : palloc(Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 5.29 : 798d50: 55 push %rbp 6.47 : 798d51: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 4.12 : 798d54: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 7.21 : 798d55: 48 89 fb mov %rdi,%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 1.76 : 798d58: 48 83 ec 08 sub $0x8,%rsp : void *ret; : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:696 3.97 : 798d5c: 48 81 ff ff ff ff 3f cmp $0x3fffffff,%rdi 0.00 : 798d63: 77 25 ja 798d8a : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 4.85 : 798d65: 48 8b 05 f4 1a 42 00 mov 0x421af4(%rip),%rax # bba860 : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 4.12 : 798d6c: 48 89 de mov %rbx,%rsi : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 2.06 : 798d6f: c6 40 30 00 movb $0x0,0x30(%rax) : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 12.50 : 798d73: 48 8b 3d e6 1a 42 00 mov 0x421ae6(%rip),%rdi # bba860 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 2.94 : 798d7a: 48 8b 47 08 mov 0x8(%rdi),%rax 4.41 : 798d7e: 4c 8b 18 mov (%rax),%r11 : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : return ret; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 22.50 : 798d81: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 1.76 : 798d85: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 5.74 : 798d86: c9 leaveq : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 10.29 : 798d87: 41 ff e3 jmpq *%r11 : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 798d8a: ba 18 20 8e 00 mov $0x8e2018,%edx 0.00 : 798d8f: be b9 02 00 00 mov $0x2b9,%esi 0.00 : 798d94: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 798d99: e8 82 26 fe ff callq 77b420 0.00 : 798d9e: 48 89 da mov %rbx,%rdx 0.00 : 798da1: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 798da6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798dab: 31 c0 xor %eax,%eax 0.00 : 798dad: e8 7e 24 fe ff callq 77b230 0.00 : 798db2: e8 19 07 cd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1805 10.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1799 9.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1793 9.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1799 8.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1799 7.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1805 7.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1793 7.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1799 6.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1793 6.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1799 5.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1805 4.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1805 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1793 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1803 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d4940 : : * user will have doubtless lost interest anyway...) : */ : : static float8 * : check_float8_array(ArrayType *transarray, const char *caller, int n) : { 0.37 : 6d4940: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1793 7.01 : 6d4941: 48 89 e5 mov %rsp,%rbp 9.59 : 6d4944: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1793 0.55 : 6d4948: 4c 89 65 f8 mov %r12,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1793 6.64 : 6d494c: 48 83 ec 10 sub $0x10,%rsp : /* : * We expect the input to be an N-element float array; verify that. We : * don't need to use deconstruct_array() since the array data is just : * going to look like a C array of N float8 values. : */ : if (ARR_NDIM(transarray) != 1 || /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1799 8.30 : 6d4950: 83 7f 04 01 cmpl $0x1,0x4(%rdi) : * user will have doubtless lost interest anyway...) : */ : : static float8 * : check_float8_array(ArrayType *transarray, const char *caller, int n) : { 0.00 : 6d4954: 49 89 f4 mov %rsi,%r12 0.18 : 6d4957: 89 d3 mov %edx,%ebx : /* : * We expect the input to be an N-element float array; verify that. We : * don't need to use deconstruct_array() since the array data is just : * going to look like a C array of N float8 values. : */ : if (ARR_NDIM(transarray) != 1 || 7.01 : 6d4959: 75 05 jne 6d4960 9.59 : 6d495b: 39 57 10 cmp %edx,0x10(%rdi) 0.00 : 6d495e: 74 30 je 6d4990 : ARR_DIMS(transarray)[0] != n || : ARR_HASNULL(transarray) || : ARR_ELEMTYPE(transarray) != FLOAT8OID) : elog(ERROR, "%s: expected %d-element float8 array", caller, n); 0.00 : 6d4960: ba 40 b9 8b 00 mov $0x8bb940,%edx 0.00 : 6d4965: be 0b 07 00 00 mov $0x70b,%esi 0.00 : 6d496a: bf 27 b4 8b 00 mov $0x8bb427,%edi 0.00 : 6d496f: e8 ac 6a 0a 00 callq 77b420 0.00 : 6d4974: 89 d9 mov %ebx,%ecx 0.00 : 6d4976: 4c 89 e2 mov %r12,%rdx 0.00 : 6d4979: be b8 b6 8b 00 mov $0x8bb6b8,%esi 0.00 : 6d497e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d4983: 31 c0 xor %eax,%eax 0.00 : 6d4985: e8 a6 68 0a 00 callq 77b230 0.00 : 6d498a: e8 41 4b d9 ff callq 4694d0 0.00 : 6d498f: 90 nop : /* : * We expect the input to be an N-element float array; verify that. We : * don't need to use deconstruct_array() since the array data is just : * going to look like a C array of N float8 values. : */ : if (ARR_NDIM(transarray) != 1 || 0.18 : 6d4990: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 6d4993: 85 c0 test %eax,%eax 0.00 : 6d4995: 75 c9 jne 6d4960 6.64 : 6d4997: 81 7f 0c bd 02 00 00 cmpl $0x2bd,0xc(%rdi) 10.52 : 6d499e: 66 90 xchg %ax,%ax 0.00 : 6d49a0: 75 be jne 6d4960 : ARR_DIMS(transarray)[0] != n || : ARR_HASNULL(transarray) || : ARR_ELEMTYPE(transarray) != FLOAT8OID) : elog(ERROR, "%s: expected %d-element float8 array", caller, n); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1803 0.55 : 6d49a2: 48 8d 47 18 lea 0x18(%rdi),%rax : return (float8 *) ARR_DATA_PTR(transarray); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1805 5.54 : 6d49a6: 48 8b 1c 24 mov (%rsp),%rbx 7.20 : 6d49aa: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 20.11 : 6d49af: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2237 23.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2237 20.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2242 14.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2242 10.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2238 6.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2238 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077ed10 : : *------------------------------------------------------------------------- : */ : : struct varlena * : pg_detoast_datum(struct varlena * datum) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2237 24.92 : 77ed10: 55 push %rbp : if (VARATT_IS_EXTENDED(datum)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2238 10.16 : 77ed11: f6 07 03 testb $0x3,(%rdi) : *------------------------------------------------------------------------- : */ : : struct varlena * : pg_detoast_datum(struct varlena * datum) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2237 23.11 : 77ed14: 48 89 e5 mov %rsp,%rbp : if (VARATT_IS_EXTENDED(datum)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2238 6.56 : 77ed17: 75 07 jne 77ed20 : return heap_tuple_untoast_attr(datum); : else : return datum; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2242 14.26 : 77ed19: 48 89 f8 mov %rdi,%rax 0.16 : 77ed1c: c9 leaveq 20.82 : 77ed1d: c3 retq 0.00 : 77ed1e: 66 90 xchg %ax,%ax 0.00 : 77ed20: c9 leaveq : : struct varlena * : pg_detoast_datum(struct varlena * datum) : { : if (VARATT_IS_EXTENDED(datum)) : return heap_tuple_untoast_attr(datum); 0.00 : 77ed21: e9 2a 41 d2 ff jmpq 4a2e50 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.91 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:48 33.75 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:47 16.41 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:48 12.97 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:49 2.97 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:47 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004906f0 : : return hash_uint32((int32) PG_GETARG_INT16(0)); : } : : Datum : hashint4(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:47 33.75 : 4906f0: 55 push %rbp : return hash_uint32(PG_GETARG_INT32(0)); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:48 16.41 : 4906f1: 48 8b 7f 20 mov 0x20(%rdi),%rdi : return hash_uint32((int32) PG_GETARG_INT16(0)); : } : : Datum : hashint4(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:47 2.97 : 4906f5: 48 89 e5 mov %rsp,%rbp : return hash_uint32(PG_GETARG_INT32(0)); : } /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:49 12.97 : 4906f8: c9 leaveq : } : : Datum : hashint4(PG_FUNCTION_ARGS) : { : return hash_uint32(PG_GETARG_INT32(0)); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:48 33.91 : 4906f9: e9 62 ff ff ff jmpq 490660 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:614 20.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:593 19.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:605 13.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:638 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:597 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:605 1.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:605 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:584 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:586 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:592 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:592 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:645 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:584 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:587 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:617 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:584 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:585 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:592 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:600 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:614 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:614 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782de0 : : * Delete from a concurrent hash table. entry need only contain the key field. : * Returns true if we find and delete a matching key and false otherwise. : */ : bool : CHashDelete(CHashTable table, void *entry) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:584 0.93 : 782de0: 55 push %rbp 0.00 : 782de1: 48 89 e5 mov %rsp,%rbp 0.00 : 782de4: 41 57 push %r15 0.77 : 782de6: 41 56 push %r14 0.00 : 782de8: 49 89 f6 mov %rsi,%r14 0.00 : 782deb: 41 55 push %r13 0.00 : 782ded: 41 54 push %r12 0.62 : 782def: 53 push %rbx 0.00 : 782df0: 48 89 fb mov %rdi,%rbx 0.00 : 782df3: 48 83 ec 58 sub $0x58,%rsp : uint32 hashcode = hash_any(entry, table->desc.key_size); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:585 0.62 : 782df7: 0f b7 77 0e movzwl 0xe(%rdi),%esi 0.15 : 782dfb: 4c 89 f7 mov %r14,%rdi 0.00 : 782dfe: e8 4d d5 d0 ff callq 490350 0.00 : 782e03: 41 89 c5 mov %eax,%r13d : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 782e06: 8b 43 10 mov 0x10(%rbx),%eax : CHashPtr *b = &table->bucket[bucket]; : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782e09: 0f b6 4b 14 movzbl 0x14(%rbx),%ecx : */ : bool : CHashDelete(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:586 0.93 : 782e0d: 44 21 e8 and %r13d,%eax 0.00 : 782e10: 89 45 8c mov %eax,-0x74(%rbp) : CHashPtr *b = &table->bucket[bucket]; : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782e13: 8b 55 8c mov -0x74(%rbp),%edx : bool : CHashDelete(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; : CHashPtr *b = &table->bucket[bucket]; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:587 0.77 : 782e16: 89 c0 mov %eax,%eax 0.46 : 782e18: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 782e1f: 00 0.00 : 782e20: 4c 03 63 20 add 0x20(%rbx),%r12 : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782e24: d3 ea shr %cl,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:592 0.93 : 782e26: 0f b6 4b 15 movzbl 0x15(%rbx),%ecx 0.00 : 782e2a: 89 d0 mov %edx,%eax 0.00 : 782e2c: d3 e8 shr %cl,%eax 0.93 : 782e2e: 01 d0 add %edx,%eax 0.00 : 782e30: 48 8b 15 11 ab 3f 00 mov 0x3fab11(%rip),%rdx # b7d948 0.62 : 782e37: 48 c1 e0 02 shl $0x2,%rax 0.31 : 782e3b: 48 03 43 28 add 0x28(%rbx),%rax 0.15 : 782e3f: 48 89 82 e8 02 00 00 mov %rax,0x2e8(%rdx) : pg_memory_barrier(); 0.00 : 782e46: f0 83 04 24 00 lock addl $0x0,(%rsp) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:593 20.22 : 782e4b: 4c 8d 7d b0 lea -0x50(%rbp),%r15 0.00 : 782e4f: eb 1e jmp 782e6f 0.00 : 782e51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (scan.found) : { : Assert(!CHashPtrIsMarked(scan.next)); : : /* Attempt to apply delete-mark. */ : if (!__sync_bool_compare_and_swap(&scan.target_node->next, /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:605 1.08 : 782e58: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 782e5b: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 782e5f: 89 c1 mov %eax,%ecx 0.00 : 782e61: 83 c9 01 or $0x1,%ecx 1.39 : 782e64: f0 0f b1 0a lock cmpxchg %ecx,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:605 19.75 : 782e68: 74 5e je 782ec8 : scan.next, : CHashPtrMark(scan.next))) : { : CHashTableIncrementStatistic(table, CHS_Delete_Retry); 0.00 : 782e6a: 48 83 43 78 01 addq $0x1,0x78(%rbx) : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); : pg_memory_barrier(); : : /* Scan bucket. */ : retry: : CHashBucketScan(table, b, hashcode, entry, &scan); 0.00 : 782e6f: 4d 89 f8 mov %r15,%r8 0.00 : 782e72: 4c 89 f1 mov %r14,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:597 1.54 : 782e75: 44 89 ea mov %r13d,%edx 0.00 : 782e78: 4c 89 e6 mov %r12,%rsi 0.00 : 782e7b: 48 89 df mov %rbx,%rdi 0.00 : 782e7e: e8 1d fe ff ff callq 782ca0 : : /* If we found it, try to delete it. */ : if (scan.found) 0.31 : 782e83: 80 7d c8 00 cmpb $0x0,-0x38(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:600 0.62 : 782e87: 75 cf jne 782e58 : } : } : : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); 0.46 : 782e89: f0 83 04 24 00 lock addl $0x0,(%rsp) : MyProc->hazard[0] = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:638 13.43 : 782e8e: 48 8b 05 b3 aa 3f 00 mov 0x3faab3(%rip),%rax # b7d948 0.00 : 782e95: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 782e9c: 00 00 00 00 : : /* We're done. */ : CHashTableIncrementStatistic(table, CHS_Delete); : if (!scan.found) 0.00 : 782ea0: 0f b6 45 c8 movzbl -0x38(%rbp),%eax : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); : MyProc->hazard[0] = NULL; : : /* We're done. */ : CHashTableIncrementStatistic(table, CHS_Delete); 0.00 : 782ea4: 48 83 43 68 01 addq $0x1,0x68(%rbx) : if (!scan.found) 0.31 : 782ea9: 84 c0 test %al,%al 0.00 : 782eab: 75 05 jne 782eb2 : CHashTableIncrementStatistic(table, CHS_Delete_Failed); 0.00 : 782ead: 48 83 43 70 01 addq $0x1,0x70(%rbx) : return scan.found; : } 0.00 : 782eb2: 48 83 c4 58 add $0x58,%rsp 0.00 : 782eb6: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:645 0.93 : 782eb7: 41 5c pop %r12 0.00 : 782eb9: 41 5d pop %r13 0.00 : 782ebb: 41 5e pop %r14 0.00 : 782ebd: 41 5f pop %r15 0.31 : 782ebf: c9 leaveq 0.15 : 782ec0: c3 retq 0.00 : 782ec1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : CHashTableIncrementStatistic(table, CHS_Delete_Retry); : goto retry; : } : : /* Deletion is done; attempt to remove node from list. */ : if (__sync_bool_compare_and_swap(scan.pointer_to_target, 0.00 : 782ec8: 8b 55 b0 mov -0x50(%rbp),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:614 0.62 : 782ecb: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.62 : 782ecf: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 782ed2: 89 d0 mov %edx,%eax 0.00 : 782ed4: f0 0f b1 0e lock cmpxchg %ecx,(%rsi) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:614 29.32 : 782ed8: 75 16 jne 782ef0 : scan.target, : scan.next)) : CHashAddToGarbage(table, bucket, scan.target); 0.00 : 782eda: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 782edd: 8b 75 8c mov -0x74(%rbp),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:617 0.77 : 782ee0: 48 89 df mov %rbx,%rdi 0.00 : 782ee3: e8 68 fd ff ff callq 782c50 0.00 : 782ee8: eb 9f jmp 782e89 0.00 : 782eea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * like a regular bucket scan, except that we don't care : * about the results. We're just doing it to achieve the : * side-effect of removing delete-marked nodes from the : * bucket chain. : */ : CHashTableIncrementStatistic(table, CHS_Cleanup_Scan); 0.00 : 782ef0: 48 83 83 98 00 00 00 addq $0x1,0x98(%rbx) 0.00 : 782ef7: 01 : CHashBucketScan(table, b, hashcode, entry, &cleanup_scan); 0.00 : 782ef8: 4c 8d 45 90 lea -0x70(%rbp),%r8 0.00 : 782efc: 4c 89 f1 mov %r14,%rcx 0.00 : 782eff: 44 89 ea mov %r13d,%edx 0.00 : 782f02: 4c 89 e6 mov %r12,%rsi 0.00 : 782f05: 48 89 df mov %rbx,%rdi 0.00 : 782f08: e8 93 fd ff ff callq 782ca0 0.00 : 782f0d: e9 77 ff ff ff jmpq 782e89 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 24.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 5.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 3.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1826 3.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 2.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 2.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 1.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 1.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 1.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1816 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1818 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1822 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1819 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1816 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1818 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1828 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1822 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1819 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075e1e0 : : /* : * sortsupport comparison func (for C locale case) : */ : static int : bttextfastcmp_c(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 3.26 : 75e1e0: 55 push %rbp 1.55 : 75e1e1: 48 89 e5 mov %rsp,%rbp 0.31 : 75e1e4: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 5.74 : 75e1e8: 4c 89 6d e8 mov %r13,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 2.64 : 75e1ec: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.93 : 75e1f0: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.16 : 75e1f4: 49 89 f7 mov %rsi,%r15 0.00 : 75e1f7: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.78 : 75e1fb: 48 83 ec 30 sub $0x30,%rsp 0.00 : 75e1ff: 49 89 fe mov %rdi,%r14 : text *arg1 = DatumGetTextPP(x); 0.00 : 75e202: e8 d9 0a 02 00 callq 77ece0 : text *arg2 = DatumGetTextPP(y); 0.00 : 75e207: 4c 89 ff mov %r15,%rdi : * sortsupport comparison func (for C locale case) : */ : static int : bttextfastcmp_c(Datum x, Datum y, SortSupport ssup) : { : text *arg1 = DatumGetTextPP(x); 0.00 : 75e20a: 49 89 c4 mov %rax,%r12 : text *arg2 = DatumGetTextPP(y); 0.00 : 75e20d: e8 ce 0a 02 00 callq 77ece0 : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.00 : 75e212: 41 0f b6 14 24 movzbl (%r12),%edx : */ : static int : bttextfastcmp_c(Datum x, Datum y, SortSupport ssup) : { : text *arg1 = DatumGetTextPP(x); : text *arg2 = DatumGetTextPP(y); 0.00 : 75e217: 49 89 c5 mov %rax,%r13 : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.31 : 75e21a: 4d 8d 4c 24 01 lea 0x1(%r12),%r9 : a2p = VARDATA_ANY(arg2); 0.00 : 75e21f: 41 0f b6 4d 00 movzbl 0x0(%r13),%ecx : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.16 : 75e224: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 75e229: be 01 00 00 00 mov $0x1,%esi : a2p = VARDATA_ANY(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1816 1.55 : 75e22e: 4d 8d 45 01 lea 0x1(%r13),%r8 0.00 : 75e232: 41 ba 01 00 00 00 mov $0x1,%r10d : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.00 : 75e238: 21 d6 and %edx,%esi 0.00 : 75e23a: 4c 0f 44 c8 cmove %rax,%r9 : a2p = VARDATA_ANY(arg2); 0.78 : 75e23e: 49 8d 45 04 lea 0x4(%r13),%rax 0.00 : 75e242: 41 21 ca and %ecx,%r10d 0.00 : 75e245: 4c 0f 44 c0 cmove %rax,%r8 : : len1 = VARSIZE_ANY_EXHDR(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1818 0.78 : 75e249: 80 fa 01 cmp $0x1,%dl 0.00 : 75e24c: 0f 84 ee 00 00 00 je 75e340 0.00 : 75e252: 85 f6 test %esi,%esi 0.00 : 75e254: 0f 85 96 00 00 00 jne 75e2f0 0.00 : 75e25a: 41 8b 04 24 mov (%r12),%eax 0.00 : 75e25e: c1 e8 02 shr $0x2,%eax 0.00 : 75e261: 83 e8 04 sub $0x4,%eax 0.00 : 75e264: 89 45 d4 mov %eax,-0x2c(%rbp) : len2 = VARSIZE_ANY_EXHDR(arg2); 0.00 : 75e267: 80 f9 01 cmp $0x1,%cl 0.00 : 75e26a: 0f 84 94 00 00 00 je 75e304 0.00 : 75e270: 45 85 d2 test %r10d,%r10d 0.00 : 75e273: 0f 84 b7 00 00 00 je 75e330 0.00 : 75e279: d0 e9 shr %cl 0.00 : 75e27b: 0f b6 c1 movzbl %cl,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1819 0.93 : 75e27e: 44 8d 58 ff lea -0x1(%rax),%r11d : : result = memcmp(a1p, a2p, Min(len1, len2)); 0.16 : 75e282: 44 3b 5d d4 cmp -0x2c(%rbp),%r11d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 2.48 : 75e286: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.00 : 75e289: 4c 89 ce mov %r9,%rsi 0.16 : 75e28c: 4c 89 c7 mov %r8,%rdi 0.16 : 75e28f: 41 0f 4e cb cmovle %r11d,%ecx 1.86 : 75e293: 48 63 c9 movslq %ecx,%rcx 0.62 : 75e296: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 24.96 : 75e299: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 28.84 : 75e29b: 0f 97 c2 seta %dl 6.67 : 75e29e: 0f 92 c0 setb %al 0.00 : 75e2a1: 89 d3 mov %edx,%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 1.09 : 75e2a3: 28 c3 sub %al,%bl 0.62 : 75e2a5: 0f be db movsbl %bl,%ebx : if ((result == 0) && (len1 != len2)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1822 0.62 : 75e2a8: 85 db test %ebx,%ebx 0.00 : 75e2aa: 75 10 jne 75e2bc 1.24 : 75e2ac: 44 39 5d d4 cmp %r11d,-0x2c(%rbp) 0.00 : 75e2b0: 74 0a je 75e2bc : result = (len1 < len2) ? -1 : 1; 0.00 : 75e2b2: 0f 9d c0 setge %al 0.00 : 75e2b5: 0f b6 d8 movzbl %al,%ebx 0.00 : 75e2b8: 8d 5c 1b ff lea -0x1(%rbx,%rbx,1),%ebx : : /* We can't afford to leak memory here. */ : if (PointerGetDatum(arg1) != x) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1826 3.57 : 75e2bc: 4d 39 f4 cmp %r14,%r12 0.00 : 75e2bf: 74 08 je 75e2c9 : pfree(arg1); 0.00 : 75e2c1: 4c 89 e7 mov %r12,%rdi 0.00 : 75e2c4: e8 b7 a8 03 00 callq 798b80 : if (PointerGetDatum(arg2) != y) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1828 0.78 : 75e2c9: 4d 39 fd cmp %r15,%r13 0.00 : 75e2cc: 74 08 je 75e2d6 : pfree(arg2); 0.00 : 75e2ce: 4c 89 ef mov %r13,%rdi 0.00 : 75e2d1: e8 aa a8 03 00 callq 798b80 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 0.62 : 75e2d6: 89 d8 mov %ebx,%eax 0.00 : 75e2d8: 4c 8b 65 e0 mov -0x20(%rbp),%r12 1.40 : 75e2dc: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75e2e0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.47 : 75e2e4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75e2e8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.24 : 75e2ec: c9 leaveq 0.62 : 75e2ed: c3 retq 0.00 : 75e2ee: 66 90 xchg %ax,%ax : result; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75e2f0: d0 ea shr %dl /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1818 1.40 : 75e2f2: 0f b6 c2 movzbl %dl,%eax 0.00 : 75e2f5: 83 e8 01 sub $0x1,%eax : len2 = VARSIZE_ANY_EXHDR(arg2); 0.00 : 75e2f8: 80 f9 01 cmp $0x1,%cl : result; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75e2fb: 89 45 d4 mov %eax,-0x2c(%rbp) : len2 = VARSIZE_ANY_EXHDR(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1819 0.62 : 75e2fe: 0f 85 6c ff ff ff jne 75e270 0.00 : 75e304: 41 0f b6 45 01 movzbl 0x1(%r13),%eax 0.00 : 75e309: 41 bb 08 00 00 00 mov $0x8,%r11d 0.00 : 75e30f: 3c 01 cmp $0x1,%al 0.00 : 75e311: 0f 84 6b ff ff ff je 75e282 0.00 : 75e317: 3c 12 cmp $0x12,%al 0.00 : 75e319: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 75e31f: b8 10 00 00 00 mov $0x10,%eax 0.00 : 75e324: 44 0f 44 d8 cmove %eax,%r11d 0.00 : 75e328: e9 55 ff ff ff jmpq 75e282 0.00 : 75e32d: 0f 1f 00 nopl (%rax) 0.00 : 75e330: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 75e334: c1 e8 02 shr $0x2,%eax 0.00 : 75e337: 44 8d 58 fc lea -0x4(%rax),%r11d 0.00 : 75e33b: e9 42 ff ff ff jmpq 75e282 : result; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75e340: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax 0.00 : 75e346: c7 45 d4 08 00 00 00 movl $0x8,-0x2c(%rbp) 0.00 : 75e34d: 3c 01 cmp $0x1,%al 0.00 : 75e34f: 0f 84 12 ff ff ff je 75e267 0.00 : 75e355: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%rbp) 0.00 : 75e35c: 3c 12 cmp $0x12,%al 0.00 : 75e35e: b8 10 00 00 00 mov $0x10,%eax 0.00 : 75e363: 0f 45 45 d4 cmovne -0x2c(%rbp),%eax 0.00 : 75e367: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 75e36a: e9 f8 fe ff ff jmpq 75e267 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:85 10.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:64 6.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:64 6.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 5.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:78 4.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 4.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:94 3.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 3.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 3.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 3.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 2.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:71 2.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:62 2.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 2.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 2.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:85 1.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 1.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 1.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:78 1.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:94 1.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:62 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:64 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:72 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:73 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 0.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:113 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 0.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:85 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bf570 : : * using the index specified in the IndexScanState information. : * ---------------------------------------------------------------- : */ : static TupleTableSlot * : IndexNext(IndexScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 4.97 : 5bf570: 55 push %rbp 3.65 : 5bf571: 48 89 e5 mov %rsp,%rbp 0.58 : 5bf574: 41 57 push %r15 3.51 : 5bf576: 41 56 push %r14 2.05 : 5bf578: 41 55 push %r13 0.88 : 5bf57a: 49 89 fd mov %rdi,%r13 0.00 : 5bf57d: 41 54 push %r12 1.32 : 5bf57f: 53 push %rbx 0.73 : 5bf580: 48 83 ec 08 sub $0x8,%rsp : : /* : * extract necessary information from index scan node : */ : estate = node->ss.ps.state; : direction = estate->es_direction; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:62 1.02 : 5bf584: 48 8b 47 10 mov 0x10(%rdi),%rax 2.19 : 5bf588: 44 8b 78 04 mov 0x4(%rax),%r15d : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexScan *) node->ss.ps.plan)->indexorderdir)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:64 6.73 : 5bf58c: 48 8b 47 08 mov 0x8(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:64 1.02 : 5bf590: 83 b8 90 00 00 00 ff cmpl $0xffffffff,0x90(%rax) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:64 10.38 : 5bf597: 0f 84 b3 00 00 00 je 5bf650 : if (ScanDirectionIsForward(direction)) : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) : direction = ForwardScanDirection; : } : scandesc = node->iss_ScanDesc; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:71 2.49 : 5bf59d: 49 8b 9d d8 00 00 00 mov 0xd8(%r13),%rbx : econtext = node->ss.ps.ps_ExprContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:72 0.88 : 5bf5a4: 4d 8b 65 60 mov 0x60(%r13),%r12 : slot = node->ss.ss_ScanTupleSlot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:73 0.88 : 5bf5a8: 4d 8b b5 88 00 00 00 mov 0x88(%r13),%r14 0.29 : 5bf5af: 90 nop : : /* : * ok, now that we have what we need, fetch the next tuple. : */ : while ((tuple = index_getnext(scandesc, direction)) != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:78 1.32 : 5bf5b0: 44 89 fe mov %r15d,%esi 0.15 : 5bf5b3: 48 89 df mov %rbx,%rdi 0.15 : 5bf5b6: e8 55 61 ee ff callq 4a5710 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:78 5.41 : 5bf5bb: 48 85 c0 test %rax,%rax 0.00 : 5bf5be: 74 78 je 5bf638 : /* : * Store the scanned tuple in the scan tuple slot of the scan state. : * Note: we pass 'false' because tuples returned by amgetnext are : * pointers onto disk pages and must not be pfree()'d. : */ : ExecStoreTuple(tuple, /* tuple to store */ /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:85 17.40 : 5bf5c0: 8b 53 68 mov 0x68(%rbx),%edx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:85 2.05 : 5bf5c3: 31 c9 xor %ecx,%ecx 0.44 : 5bf5c5: 4c 89 f6 mov %r14,%rsi 0.44 : 5bf5c8: 48 89 c7 mov %rax,%rdi 0.58 : 5bf5cb: e8 b0 4e ff ff callq 5b4480 : : /* : * If the index was lossy, we have to recheck the index quals using : * the fetched tuple. : */ : if (scandesc->xs_recheck) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:94 4.09 : 5bf5d0: 80 7b 6c 00 cmpb $0x0,0x6c(%rbx) 1.32 : 5bf5d4: 74 4a je 5bf620 : { : econtext->ecxt_scantuple = slot; : ResetExprContext(econtext); 0.00 : 5bf5d6: 49 8b 7c 24 28 mov 0x28(%r12),%rdi : * If the index was lossy, we have to recheck the index quals using : * the fetched tuple. : */ : if (scandesc->xs_recheck) : { : econtext->ecxt_scantuple = slot; 0.00 : 5bf5db: 4d 89 74 24 08 mov %r14,0x8(%r12) : ResetExprContext(econtext); 0.00 : 5bf5e0: e8 cb 93 1d 00 callq 7989b0 : if (!ExecQual(node->indexqualorig, econtext, false)) 0.00 : 5bf5e5: 49 8b bd 90 00 00 00 mov 0x90(%r13),%rdi 0.00 : 5bf5ec: 31 d2 xor %edx,%edx 0.00 : 5bf5ee: 4c 89 e6 mov %r12,%rsi 0.00 : 5bf5f1: e8 1a d9 fe ff callq 5acf10 0.00 : 5bf5f6: 84 c0 test %al,%al 0.00 : 5bf5f8: 75 26 jne 5bf620 : { : /* Fails recheck, so drop it and loop back for another */ : InstrCountFiltered2(node, 1); 0.00 : 5bf5fa: 49 8b 45 18 mov 0x18(%r13),%rax 0.00 : 5bf5fe: 48 85 c0 test %rax,%rax 0.00 : 5bf601: 74 ad je 5bf5b0 0.00 : 5bf603: f2 0f 10 05 4d fb 1e movsd 0x1efb4d(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5bf60a: 00 0.00 : 5bf60b: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5bf612: 00 0.00 : 5bf613: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5bf61a: 00 0.00 : 5bf61b: eb 93 jmp 5bf5b0 0.00 : 5bf61d: 0f 1f 00 nopl (%rax) : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 2.19 : 5bf620: 48 83 c4 08 add $0x8,%rsp 0.88 : 5bf624: 4c 89 f0 mov %r14,%rax 0.00 : 5bf627: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 6.58 : 5bf628: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:114 1.17 : 5bf62a: 41 5d pop %r13 0.73 : 5bf62c: 41 5e pop %r14 0.00 : 5bf62e: 41 5f pop %r15 3.07 : 5bf630: c9 leaveq 3.80 : 5bf631: c3 retq 0.00 : 5bf632: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 1.32 : 5bf638: 48 83 c4 08 add $0x8,%rsp : : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); 0.15 : 5bf63c: 4c 89 f7 mov %r14,%rdi : } 0.00 : 5bf63f: 5b pop %rbx 1.75 : 5bf640: 41 5c pop %r12 0.15 : 5bf642: 41 5d pop %r13 0.15 : 5bf644: 41 5e pop %r14 0.15 : 5bf646: 41 5f pop %r15 0.15 : 5bf648: c9 leaveq : : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:113 0.88 : 5bf649: e9 c2 4a ff ff jmpq 5b4110 0.00 : 5bf64e: 66 90 xchg %ax,%ax : estate = node->ss.ps.state; : direction = estate->es_direction; : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexScan *) node->ss.ps.plan)->indexorderdir)) : { : if (ScanDirectionIsForward(direction)) 0.00 : 5bf650: 41 83 ff 01 cmp $0x1,%r15d 0.00 : 5bf654: 74 12 je 5bf668 : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) 0.00 : 5bf656: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5bf65a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5bf65f: 44 0f 44 f8 cmove %eax,%r15d 0.00 : 5bf663: e9 35 ff ff ff jmpq 5bf59d : estate = node->ss.ps.state; : direction = estate->es_direction; : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexScan *) node->ss.ps.plan)->indexorderdir)) : { : if (ScanDirectionIsForward(direction)) 0.00 : 5bf668: 41 bf ff ff ff ff mov $0xffffffff,%r15d 0.00 : 5bf66e: e9 2a ff ff ff jmpq 5bf59d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.59 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 5.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 5.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 5.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 3.47 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1260 3.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 2.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1256 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 2.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1238 2.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 2.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1260 2.43 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1260 2.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1250 2.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 1.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 1.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 1.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1256 1.74 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1250 1.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 1.04 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 1.04 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 0.87 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1235 0.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 0.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 0.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 0.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1235 0.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 0.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 0.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 0.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006766c0 : : */ : Buffer : ReleaseAndReadBuffer(Buffer buffer, : Relation relation, : BlockNumber blockNum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 5.38 : 6766c0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 1.56 : 6766c1: 89 f9 mov %edi,%ecx 0.00 : 6766c3: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 5.73 : 6766c6: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 3.30 : 6766ca: 4c 89 65 f0 mov %r12,-0x10(%rbp) 1.91 : 6766ce: 48 89 f3 mov %rsi,%rbx 1.91 : 6766d1: 4c 89 6d f8 mov %r13,-0x8(%rbp) 3.12 : 6766d5: 48 83 ec 20 sub $0x20,%rsp : ForkNumber forkNum = MAIN_FORKNUM; : volatile BufferDesc *bufHdr; : : if (BufferIsValid(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1235 0.52 : 6766d9: 83 ff 00 cmp $0x0,%edi : */ : Buffer : ReleaseAndReadBuffer(Buffer buffer, : Relation relation, : BlockNumber blockNum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1231 1.04 : 6766dc: 41 89 d4 mov %edx,%r12d : ForkNumber forkNum = MAIN_FORKNUM; : volatile BufferDesc *bufHdr; : : if (BufferIsValid(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1235 0.87 : 6766df: 74 2d je 67670e : { : Assert(BufferIsPinned(buffer)); : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1238 2.60 : 6766e1: 7c 4d jl 676730 : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); : LocalRefCount[-buffer - 1]--; : } : else : { : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 6766e3: 48 63 c7 movslq %edi,%rax 0.35 : 6766e6: 48 8d 78 ff lea -0x1(%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1250 2.08 : 6766ea: 48 c1 e7 06 shl $0x6,%rdi 1.74 : 6766ee: 48 03 3d 0b 94 54 00 add 0x54940b(%rip),%rdi # bbfb00 : /* we have pin, so it's ok to examine tag without spinlock */ : if (bufHdr->tag.blockNum == blockNum && /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 2.60 : 6766f5: 8b 47 10 mov 0x10(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 35.59 : 6766f8: 39 d0 cmp %edx,%eax 0.00 : 6766fa: 75 08 jne 676704 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 0.69 : 6766fc: 8b 47 08 mov 0x8(%rdi),%eax 0.69 : 6766ff: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 676702: 74 7c je 676780 : RelFileNodeEquals(bufHdr->tag.rnode, relation->rd_node) && : bufHdr->tag.forkNum == forkNum) : return buffer; : UnpinBuffer(bufHdr, true); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1256 2.95 : 676704: be 01 00 00 00 mov $0x1,%esi 1.91 : 676709: e8 22 e6 ff ff callq 674d30 : } : } : : return ReadBuffer(relation, blockNum); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1260 2.43 : 67670e: 44 89 e6 mov %r12d,%esi 3.47 : 676711: 48 89 df mov %rbx,%rdi : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 0.69 : 676714: 4c 8b 65 f0 mov -0x10(%rbp),%r12 2.08 : 676718: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.52 : 67671c: 4c 8b 6d f8 mov -0x8(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 5.21 : 676720: c9 leaveq : return buffer; : UnpinBuffer(bufHdr, true); : } : } : : return ReadBuffer(relation, blockNum); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1260 2.60 : 676721: e9 7a ff ff ff jmpq 6766a0 0.00 : 676726: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67672d: 00 00 00 : if (BufferIsValid(buffer)) : { : Assert(BufferIsPinned(buffer)); : if (BufferIsLocal(buffer)) : { : bufHdr = &LocalBufferDescriptors[-buffer - 1]; 0.00 : 676730: 89 f8 mov %edi,%eax 0.00 : 676732: f7 d0 not %eax 0.00 : 676734: 4c 63 e8 movslq %eax,%r13 0.00 : 676737: 4c 89 ea mov %r13,%rdx 0.00 : 67673a: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 67673e: 48 03 15 cb 69 50 00 add 0x5069cb(%rip),%rdx # b7d110 : if (bufHdr->tag.blockNum == blockNum && 0.00 : 676745: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 676748: 44 39 e0 cmp %r12d,%eax 0.00 : 67674b: 75 08 jne 676755 0.00 : 67674d: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 676750: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 676753: 74 53 je 6767a8 : RelFileNodeEquals(bufHdr->tag.rnode, relation->rd_node) && : bufHdr->tag.forkNum == forkNum) : return buffer; : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); 0.00 : 676755: 48 8b 3d 64 41 54 00 mov 0x544164(%rip),%rdi # bba8c0 0.00 : 67675c: 89 ce mov %ecx,%esi 0.00 : 67675e: e8 9d 41 12 00 callq 79a900 : LocalRefCount[-buffer - 1]--; 0.00 : 676763: 4a 8d 04 ad 00 00 00 lea 0x0(,%r13,4),%rax 0.00 : 67676a: 00 0.00 : 67676b: 48 03 05 ae 69 50 00 add 0x5069ae(%rip),%rax # b7d120 0.00 : 676772: 83 28 01 subl $0x1,(%rax) 0.00 : 676775: eb 97 jmp 67670e 0.00 : 676777: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67677e: 00 00 : } : else : { : bufHdr = &BufferDescriptors[buffer - 1]; : /* we have pin, so it's ok to examine tag without spinlock */ : if (bufHdr->tag.blockNum == blockNum && /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1252 2.78 : 676780: 8b 47 04 mov 0x4(%rdi),%eax 0.17 : 676783: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 676786: 0f 85 78 ff ff ff jne 676704 1.04 : 67678c: 8b 07 mov (%rdi),%eax 0.00 : 67678e: 3b 06 cmp (%rsi),%eax 0.00 : 676790: 0f 85 6e ff ff ff jne 676704 0.52 : 676796: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 676799: 85 c0 test %eax,%eax 0.17 : 67679b: 0f 85 63 ff ff ff jne 676704 0.17 : 6767a1: eb 1c jmp 6767bf 0.00 : 6767a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Assert(BufferIsPinned(buffer)); : if (BufferIsLocal(buffer)) : { : bufHdr = &LocalBufferDescriptors[-buffer - 1]; : if (bufHdr->tag.blockNum == blockNum && 0.00 : 6767a8: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6767ab: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 6767ae: 66 90 xchg %ax,%ax 0.00 : 6767b0: 75 a3 jne 676755 0.00 : 6767b2: 8b 02 mov (%rdx),%eax 0.00 : 6767b4: 3b 06 cmp (%rsi),%eax 0.00 : 6767b6: 75 9d jne 676755 0.00 : 6767b8: 8b 42 0c mov 0xc(%rdx),%eax 0.00 : 6767bb: 85 c0 test %eax,%eax 0.00 : 6767bd: 75 96 jne 676755 : UnpinBuffer(bufHdr, true); : } : } : : return ReadBuffer(relation, blockNum); : } 0.00 : 6767bf: 89 c8 mov %ecx,%eax 0.35 : 6767c1: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.17 : 6767c5: 4c 8b 65 f0 mov -0x10(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 0.52 : 6767c9: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.52 : 6767cd: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.66 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3329 40.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 5.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 3.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 1.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 1.03 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3342 1.03 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3341 0.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3335 0.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3333 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006741d0 : : * be 0, or BM_VALID if we just finished reading in the page. : */ : static void : TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty, : int set_flag_bits) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 3.62 : 6741d0: 55 push %rbp : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 40.17 : 6741d1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6741d6: 48 89 e5 mov %rsp,%rbp 0.00 : 6741d9: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 5.86 : 6741dd: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 6741e1: 48 89 fb mov %rdi,%rbx 0.00 : 6741e4: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 6741e8: 41 89 f4 mov %esi,%r12d /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 1.55 : 6741eb: 48 83 ec 20 sub $0x20,%rsp 0.00 : 6741ef: 41 89 d5 mov %edx,%r13d : Assert(buf == InProgressBuf); : : LockBufHdr(buf); 0.00 : 6741f2: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 6741f6: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3329 44.66 : 6741f9: 84 c0 test %al,%al 0.00 : 6741fb: 75 53 jne 674250 : : Assert(buf->flags & BM_IO_IN_PROGRESS); : buf->flags &= ~(BM_IO_IN_PROGRESS | BM_IO_ERROR); 0.00 : 6741fd: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674201: 83 e0 e7 and $0xffffffe7,%eax : if (clear_dirty && !(buf->flags & BM_JUST_DIRTIED)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3333 0.69 : 674204: 45 84 e4 test %r12b,%r12b : Assert(buf == InProgressBuf); : : LockBufHdr(buf); : : Assert(buf->flags & BM_IO_IN_PROGRESS); : buf->flags &= ~(BM_IO_IN_PROGRESS | BM_IO_ERROR); 0.00 : 674207: 66 89 43 14 mov %ax,0x14(%rbx) : if (clear_dirty && !(buf->flags & BM_JUST_DIRTIED)) 0.00 : 67420b: 74 12 je 67421f 0.00 : 67420d: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674211: a8 20 test $0x20,%al 0.00 : 674213: 75 0a jne 67421f : buf->flags &= ~(BM_DIRTY | BM_CHECKPOINT_NEEDED); 0.00 : 674215: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674219: 24 7e and $0x7e,%al 0.00 : 67421b: 66 89 43 14 mov %ax,0x14(%rbx) : buf->flags |= set_flag_bits; 0.00 : 67421f: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3335 0.86 : 674223: 44 09 e8 or %r13d,%eax 0.00 : 674226: 66 89 43 14 mov %ax,0x14(%rbx) : : UnlockBufHdr(buf); 0.00 : 67422a: c6 43 20 00 movb $0x0,0x20(%rbx) : : InProgressBuf = NULL; 0.00 : 67422e: 48 c7 05 2f 8e 50 00 movq $0x0,0x508e2f(%rip) # b7d068 0.00 : 674235: 00 00 00 00 : : LWLockRelease(buf->io_in_progress_lock); 0.17 : 674239: 48 8b 7b 30 mov 0x30(%rbx),%rdi : } 0.00 : 67423d: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.34 : 674241: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3342 1.03 : 674245: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 674249: c9 leaveq : : UnlockBufHdr(buf); : : InProgressBuf = NULL; : : LWLockRelease(buf->io_in_progress_lock); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3341 1.03 : 67424a: e9 51 b1 01 00 jmpq 68f3a0 0.00 : 67424f: 90 nop : TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty, : int set_flag_bits) : { : Assert(buf == InProgressBuf); : : LockBufHdr(buf); 0.00 : 674250: ba 01 0d 00 00 mov $0xd01,%edx 0.00 : 674255: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67425a: e8 e1 bd 01 00 callq 690040 0.00 : 67425f: eb 9c jmp 6741fd Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 8.42 ??:0 7.22 ??:0 7.04 ??:0 6.87 ??:0 5.50 ??:0 4.81 ??:0 3.95 ??:0 3.78 ??:0 3.61 ??:0 3.09 ??:0 2.92 ??:0 2.58 ??:0 2.23 ??:0 2.06 ??:0 2.06 ??:0 1.89 ??:0 1.55 ??:0 1.55 ??:0 1.55 ??:0 1.20 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 0.86 ??:0 0.86 ??:0 0.86 ??:0 0.86 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000083470 <__GI_memset>: ??:0 7.22 : 83470: 48 83 fa 01 cmp $0x1,%rdx ??:0 2.06 : 83474: 48 89 f8 mov %rdi,%rax 0.00 : 83477: 75 04 jne 8347d <__GI_memset+0xd> 0.00 : 83479: 40 88 37 mov %sil,(%rdi) 0.00 : 8347c: c3 retq 3.78 : 8347d: 49 b9 01 01 01 01 01 movabs $0x101010101010101,%r9 0.00 : 83484: 01 01 01 0.17 : 83487: 49 89 d0 mov %rdx,%r8 0.17 : 8348a: 48 0f b6 d6 movzbq %sil,%rdx 0.17 : 8348e: 49 0f af d1 imul %r9,%rdx ??:0 5.50 : 83492: 49 81 f8 90 00 00 00 cmp $0x90,%r8 0.00 : 83499: 0f 87 e1 02 00 00 ja 83780 <__GI_memset+0x310> ??:0 0.52 : 8349f: 4c 01 c7 add %r8,%rdi 0.00 : 834a2: 4c 8d 1d 13 00 00 00 lea 0x13(%rip),%r11 # 834bc <__GI_memset+0x4c> 0.00 : 834a9: 48 8d 0d 60 2d 0b 00 lea 0xb2d60(%rip),%rcx # 136210 4.81 : 834b0: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx ??:0 8.42 : 834b5: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 ??:0 1.55 : 834b9: 41 ff e3 jmpq *%r11 0.00 : 834bc: c3 retq 0.00 : 834bd: 0f 1f 00 nopl (%rax) 0.00 : 834c0: 48 89 97 77 ff ff ff mov %rdx,-0x89(%rdi) 0.00 : 834c7: 48 89 97 7f ff ff ff mov %rdx,-0x81(%rdi) 0.00 : 834ce: 48 89 57 87 mov %rdx,-0x79(%rdi) 0.00 : 834d2: 48 89 57 8f mov %rdx,-0x71(%rdi) 0.00 : 834d6: 48 89 57 97 mov %rdx,-0x69(%rdi) 0.00 : 834da: 48 89 57 9f mov %rdx,-0x61(%rdi) 0.00 : 834de: 48 89 57 a7 mov %rdx,-0x59(%rdi) 0.00 : 834e2: 48 89 57 af mov %rdx,-0x51(%rdi) 0.00 : 834e6: 48 89 57 b7 mov %rdx,-0x49(%rdi) 0.00 : 834ea: 48 89 57 bf mov %rdx,-0x41(%rdi) 0.00 : 834ee: 48 89 57 c7 mov %rdx,-0x39(%rdi) 0.00 : 834f2: 48 89 57 cf mov %rdx,-0x31(%rdi) 0.00 : 834f6: 48 89 57 d7 mov %rdx,-0x29(%rdi) 0.00 : 834fa: 48 89 57 df mov %rdx,-0x21(%rdi) 0.00 : 834fe: 48 89 57 e7 mov %rdx,-0x19(%rdi) 0.00 : 83502: 48 89 57 ef mov %rdx,-0x11(%rdi) 0.17 : 83506: 48 89 57 f7 mov %rdx,-0x9(%rdi) 0.00 : 8350a: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 8350d: c3 retq 0.00 : 8350e: 66 90 xchg %ax,%ax 0.00 : 83510: 48 89 97 70 ff ff ff mov %rdx,-0x90(%rdi) 0.00 : 83517: 48 89 97 78 ff ff ff mov %rdx,-0x88(%rdi) 0.00 : 8351e: 48 89 57 80 mov %rdx,-0x80(%rdi) 0.00 : 83522: 48 89 57 88 mov %rdx,-0x78(%rdi) 0.00 : 83526: 48 89 57 90 mov %rdx,-0x70(%rdi) 0.00 : 8352a: 48 89 57 98 mov %rdx,-0x68(%rdi) 0.00 : 8352e: 48 89 57 a0 mov %rdx,-0x60(%rdi) 0.00 : 83532: 48 89 57 a8 mov %rdx,-0x58(%rdi) 0.00 : 83536: 48 89 57 b0 mov %rdx,-0x50(%rdi) 0.00 : 8353a: 48 89 57 b8 mov %rdx,-0x48(%rdi) 0.00 : 8353e: 48 89 57 c0 mov %rdx,-0x40(%rdi) 0.00 : 83542: 48 89 57 c8 mov %rdx,-0x38(%rdi) 0.00 : 83546: 48 89 57 d0 mov %rdx,-0x30(%rdi) 0.00 : 8354a: 48 89 57 d8 mov %rdx,-0x28(%rdi) 0.00 : 8354e: 48 89 57 e0 mov %rdx,-0x20(%rdi) 0.00 : 83552: 48 89 57 e8 mov %rdx,-0x18(%rdi) 0.00 : 83556: 48 89 57 f0 mov %rdx,-0x10(%rdi) 0.00 : 8355a: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 8355e: c3 retq 0.00 : 8355f: 90 nop 0.00 : 83560: 48 89 97 76 ff ff ff mov %rdx,-0x8a(%rdi) 0.00 : 83567: 48 89 97 7e ff ff ff mov %rdx,-0x82(%rdi) 0.00 : 8356e: 48 89 57 86 mov %rdx,-0x7a(%rdi) 0.00 : 83572: 48 89 57 8e mov %rdx,-0x72(%rdi) 0.00 : 83576: 48 89 57 96 mov %rdx,-0x6a(%rdi) 0.00 : 8357a: 48 89 57 9e mov %rdx,-0x62(%rdi) 0.00 : 8357e: 48 89 57 a6 mov %rdx,-0x5a(%rdi) 0.00 : 83582: 48 89 57 ae mov %rdx,-0x52(%rdi) 0.00 : 83586: 48 89 57 b6 mov %rdx,-0x4a(%rdi) 0.00 : 8358a: 48 89 57 be mov %rdx,-0x42(%rdi) 0.00 : 8358e: 48 89 57 c6 mov %rdx,-0x3a(%rdi) 0.00 : 83592: 48 89 57 ce mov %rdx,-0x32(%rdi) 0.00 : 83596: 48 89 57 d6 mov %rdx,-0x2a(%rdi) 0.00 : 8359a: 48 89 57 de mov %rdx,-0x22(%rdi) 0.00 : 8359e: 48 89 57 e6 mov %rdx,-0x1a(%rdi) 0.00 : 835a2: 48 89 57 ee mov %rdx,-0x12(%rdi) 0.00 : 835a6: 48 89 57 f6 mov %rdx,-0xa(%rdi) 0.00 : 835aa: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 835ae: c3 retq 0.00 : 835af: 90 nop 0.00 : 835b0: 48 89 97 75 ff ff ff mov %rdx,-0x8b(%rdi) 0.00 : 835b7: 48 89 97 7d ff ff ff mov %rdx,-0x83(%rdi) 0.00 : 835be: 48 89 57 85 mov %rdx,-0x7b(%rdi) 0.00 : 835c2: 48 89 57 8d mov %rdx,-0x73(%rdi) 0.00 : 835c6: 48 89 57 95 mov %rdx,-0x6b(%rdi) 0.00 : 835ca: 48 89 57 9d mov %rdx,-0x63(%rdi) 0.00 : 835ce: 48 89 57 a5 mov %rdx,-0x5b(%rdi) 0.00 : 835d2: 48 89 57 ad mov %rdx,-0x53(%rdi) 0.00 : 835d6: 48 89 57 b5 mov %rdx,-0x4b(%rdi) 0.00 : 835da: 48 89 57 bd mov %rdx,-0x43(%rdi) 0.00 : 835de: 48 89 57 c5 mov %rdx,-0x3b(%rdi) 0.00 : 835e2: 48 89 57 cd mov %rdx,-0x33(%rdi) 0.00 : 835e6: 48 89 57 d5 mov %rdx,-0x2b(%rdi) 0.00 : 835ea: 48 89 57 dd mov %rdx,-0x23(%rdi) 0.00 : 835ee: 48 89 57 e5 mov %rdx,-0x1b(%rdi) 0.00 : 835f2: 48 89 57 ed mov %rdx,-0x13(%rdi) 0.00 : 835f6: 48 89 57 f5 mov %rdx,-0xb(%rdi) 0.00 : 835fa: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 835fe: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83601: c3 retq 0.00 : 83602: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 83609: 1f 84 00 00 00 00 00 0.00 : 83610: 48 89 97 74 ff ff ff mov %rdx,-0x8c(%rdi) 0.00 : 83617: 48 89 97 7c ff ff ff mov %rdx,-0x84(%rdi) 0.00 : 8361e: 48 89 57 84 mov %rdx,-0x7c(%rdi) 0.00 : 83622: 48 89 57 8c mov %rdx,-0x74(%rdi) 0.17 : 83626: 48 89 57 94 mov %rdx,-0x6c(%rdi) 0.17 : 8362a: 48 89 57 9c mov %rdx,-0x64(%rdi) 0.00 : 8362e: 48 89 57 a4 mov %rdx,-0x5c(%rdi) 0.17 : 83632: 48 89 57 ac mov %rdx,-0x54(%rdi) 0.00 : 83636: 48 89 57 b4 mov %rdx,-0x4c(%rdi) 0.00 : 8363a: 48 89 57 bc mov %rdx,-0x44(%rdi) 0.00 : 8363e: 48 89 57 c4 mov %rdx,-0x3c(%rdi) 0.52 : 83642: 48 89 57 cc mov %rdx,-0x34(%rdi) 0.17 : 83646: 48 89 57 d4 mov %rdx,-0x2c(%rdi) 0.86 : 8364a: 48 89 57 dc mov %rdx,-0x24(%rdi) 2.06 : 8364e: 48 89 57 e4 mov %rdx,-0x1c(%rdi) 2.92 : 83652: 48 89 57 ec mov %rdx,-0x14(%rdi) 3.61 : 83656: 48 89 57 f4 mov %rdx,-0xc(%rdi) 1.89 : 8365a: 89 57 fc mov %edx,-0x4(%rdi) 0.86 : 8365d: c3 retq 0.00 : 8365e: 66 90 xchg %ax,%ax 0.00 : 83660: 48 89 97 73 ff ff ff mov %rdx,-0x8d(%rdi) 0.00 : 83667: 48 89 97 7b ff ff ff mov %rdx,-0x85(%rdi) 0.00 : 8366e: 48 89 57 83 mov %rdx,-0x7d(%rdi) 0.00 : 83672: 48 89 57 8b mov %rdx,-0x75(%rdi) 0.00 : 83676: 48 89 57 93 mov %rdx,-0x6d(%rdi) 0.00 : 8367a: 48 89 57 9b mov %rdx,-0x65(%rdi) 0.00 : 8367e: 48 89 57 a3 mov %rdx,-0x5d(%rdi) 0.00 : 83682: 48 89 57 ab mov %rdx,-0x55(%rdi) 0.00 : 83686: 48 89 57 b3 mov %rdx,-0x4d(%rdi) 0.00 : 8368a: 48 89 57 bb mov %rdx,-0x45(%rdi) 0.00 : 8368e: 48 89 57 c3 mov %rdx,-0x3d(%rdi) 0.00 : 83692: 48 89 57 cb mov %rdx,-0x35(%rdi) 0.00 : 83696: 48 89 57 d3 mov %rdx,-0x2d(%rdi) 0.00 : 8369a: 48 89 57 db mov %rdx,-0x25(%rdi) 0.00 : 8369e: 48 89 57 e3 mov %rdx,-0x1d(%rdi) 0.00 : 836a2: 48 89 57 eb mov %rdx,-0x15(%rdi) 0.00 : 836a6: 48 89 57 f3 mov %rdx,-0xd(%rdi) 0.00 : 836aa: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 836ad: 88 57 ff mov %dl,-0x1(%rdi) 0.17 : 836b0: c3 retq 0.00 : 836b1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 836b8: 0f 1f 84 00 00 00 00 0.00 : 836bf: 00 0.00 : 836c0: 48 89 97 72 ff ff ff mov %rdx,-0x8e(%rdi) 0.00 : 836c7: 48 89 97 7a ff ff ff mov %rdx,-0x86(%rdi) 0.00 : 836ce: 48 89 57 82 mov %rdx,-0x7e(%rdi) 0.00 : 836d2: 48 89 57 8a mov %rdx,-0x76(%rdi) 0.00 : 836d6: 48 89 57 92 mov %rdx,-0x6e(%rdi) 0.00 : 836da: 48 89 57 9a mov %rdx,-0x66(%rdi) 0.00 : 836de: 48 89 57 a2 mov %rdx,-0x5e(%rdi) 0.00 : 836e2: 48 89 57 aa mov %rdx,-0x56(%rdi) 0.00 : 836e6: 48 89 57 b2 mov %rdx,-0x4e(%rdi) 0.00 : 836ea: 48 89 57 ba mov %rdx,-0x46(%rdi) 0.00 : 836ee: 48 89 57 c2 mov %rdx,-0x3e(%rdi) 0.00 : 836f2: 48 89 57 ca mov %rdx,-0x36(%rdi) 0.00 : 836f6: 48 89 57 d2 mov %rdx,-0x2e(%rdi) 0.00 : 836fa: 48 89 57 da mov %rdx,-0x26(%rdi) 0.00 : 836fe: 48 89 57 e2 mov %rdx,-0x1e(%rdi) 0.00 : 83702: 48 89 57 ea mov %rdx,-0x16(%rdi) 0.00 : 83706: 48 89 57 f2 mov %rdx,-0xe(%rdi) 0.00 : 8370a: 89 57 fa mov %edx,-0x6(%rdi) 0.17 : 8370d: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83711: c3 retq 0.00 : 83712: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 83719: 1f 84 00 00 00 00 00 0.00 : 83720: 48 89 97 71 ff ff ff mov %rdx,-0x8f(%rdi) 0.00 : 83727: 48 89 97 79 ff ff ff mov %rdx,-0x87(%rdi) 0.00 : 8372e: 48 89 57 81 mov %rdx,-0x7f(%rdi) 0.00 : 83732: 48 89 57 89 mov %rdx,-0x77(%rdi) 0.00 : 83736: 48 89 57 91 mov %rdx,-0x6f(%rdi) 0.00 : 8373a: 48 89 57 99 mov %rdx,-0x67(%rdi) 0.00 : 8373e: 48 89 57 a1 mov %rdx,-0x5f(%rdi) 0.00 : 83742: 48 89 57 a9 mov %rdx,-0x57(%rdi) 0.00 : 83746: 48 89 57 b1 mov %rdx,-0x4f(%rdi) 0.00 : 8374a: 48 89 57 b9 mov %rdx,-0x47(%rdi) 0.00 : 8374e: 48 89 57 c1 mov %rdx,-0x3f(%rdi) 0.00 : 83752: 48 89 57 c9 mov %rdx,-0x37(%rdi) 0.00 : 83756: 48 89 57 d1 mov %rdx,-0x2f(%rdi) 0.00 : 8375a: 48 89 57 d9 mov %rdx,-0x27(%rdi) 0.00 : 8375e: 48 89 57 e1 mov %rdx,-0x1f(%rdi) 0.00 : 83762: 48 89 57 e9 mov %rdx,-0x17(%rdi) 0.00 : 83766: 48 89 57 f1 mov %rdx,-0xf(%rdi) 0.17 : 8376a: 89 57 f9 mov %edx,-0x7(%rdi) 0.00 : 8376d: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83771: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83774: c3 retq 0.00 : 83775: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8377c: 00 00 00 00 0.17 : 83780: 49 c7 c2 10 00 00 00 mov $0x10,%r10 0.00 : 83787: 49 89 f9 mov %rdi,%r9 0.00 : 8378a: 49 83 e1 0f and $0xf,%r9 0.69 : 8378e: 4d 29 ca sub %r9,%r10 0.17 : 83791: 49 83 e2 0f and $0xf,%r10 0.17 : 83795: 4c 01 d7 add %r10,%rdi 0.00 : 83798: 4d 29 d0 sub %r10,%r8 0.17 : 8379b: 4c 8d 1d 98 00 00 00 lea 0x98(%rip),%r11 # 8383a <__GI_memset+0x3ca> 0.00 : 837a2: 48 8d 0d 97 2b 0b 00 lea 0xb2b97(%rip),%rcx # 136340 0.00 : 837a9: 4a 0f bf 0c 51 movswq (%rcx,%r10,2),%rcx 1.55 : 837ae: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.17 : 837b2: 41 ff e3 jmpq *%r11 0.00 : 837b5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 837bc: 00 00 00 00 0.00 : 837c0: 88 57 f3 mov %dl,-0xd(%rdi) 0.00 : 837c3: 89 57 f4 mov %edx,-0xc(%rdi) 0.00 : 837c6: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.17 : 837ca: eb 6e jmp 8383a <__GI_memset+0x3ca> 0.00 : 837cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 837d0: 88 57 f7 mov %dl,-0x9(%rdi) 0.00 : 837d3: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 837d7: eb 61 jmp 8383a <__GI_memset+0x3ca> 0.00 : 837d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 837e0: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 837e3: eb 55 jmp 8383a <__GI_memset+0x3ca> 0.00 : 837e5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 837ec: 00 00 00 00 0.00 : 837f0: 88 57 f5 mov %dl,-0xb(%rdi) 0.00 : 837f3: 66 89 57 f6 mov %dx,-0xa(%rdi) 0.00 : 837f7: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 837fb: eb 3d jmp 8383a <__GI_memset+0x3ca> 0.00 : 837fd: 0f 1f 00 nopl (%rax) 0.00 : 83800: 88 57 fd mov %dl,-0x3(%rdi) 0.00 : 83803: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83807: eb 31 jmp 8383a <__GI_memset+0x3ca> 0.00 : 83809: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 83810: 88 57 fb mov %dl,-0x5(%rdi) 0.00 : 83813: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 83816: eb 22 jmp 8383a <__GI_memset+0x3ca> 0.00 : 83818: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8381f: 00 0.00 : 83820: 88 57 f1 mov %dl,-0xf(%rdi) 0.00 : 83823: 66 89 57 f2 mov %dx,-0xe(%rdi) 0.00 : 83827: 89 57 f4 mov %edx,-0xc(%rdi) 0.00 : 8382a: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 8382e: eb 0a jmp 8383a <__GI_memset+0x3ca> 0.00 : 83830: 88 57 f9 mov %dl,-0x7(%rdi) 0.00 : 83833: 66 89 57 fa mov %dx,-0x6(%rdi) 0.00 : 83837: 89 57 fc mov %edx,-0x4(%rdi) 0.52 : 8383a: 66 48 0f 6e c2 movq %rdx,%xmm0 0.17 : 8383f: 66 0f 6c c0 punpcklqdq %xmm0,%xmm0 0.00 : 83843: 49 81 f8 b0 00 00 00 cmp $0xb0,%r8 0.00 : 8384a: 0f 83 d0 04 00 00 jae 83d20 <__GI_memset+0x8b0> 0.00 : 83850: 4c 01 c7 add %r8,%rdi 0.17 : 83853: 4c 8d 0d 53 00 00 00 lea 0x53(%rip),%r9 # 838ad <__GI_memset+0x43d> 0.00 : 8385a: 48 8d 0d ff 2a 0b 00 lea 0xb2aff(%rip),%rcx # 136360 0.00 : 83861: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 1.20 : 83866: 4e 8d 0c 09 lea (%rcx,%r9,1),%r9 0.00 : 8386a: 41 ff e1 jmpq *%r9 0.00 : 8386d: 66 0f 7f 87 50 ff ff movdqa %xmm0,-0xb0(%rdi) 0.00 : 83874: ff 0.00 : 83875: 66 0f 7f 87 60 ff ff movdqa %xmm0,-0xa0(%rdi) 0.00 : 8387c: ff 0.00 : 8387d: 66 0f 7f 87 70 ff ff movdqa %xmm0,-0x90(%rdi) 0.00 : 83884: ff 0.00 : 83885: 66 0f 7f 47 80 movdqa %xmm0,-0x80(%rdi) 0.00 : 8388a: 66 0f 7f 47 90 movdqa %xmm0,-0x70(%rdi) 0.00 : 8388f: 66 0f 7f 47 a0 movdqa %xmm0,-0x60(%rdi) 0.00 : 83894: 66 0f 7f 47 b0 movdqa %xmm0,-0x50(%rdi) 0.00 : 83899: 66 0f 7f 47 c0 movdqa %xmm0,-0x40(%rdi) 0.00 : 8389e: 66 0f 7f 47 d0 movdqa %xmm0,-0x30(%rdi) 0.00 : 838a3: 66 0f 7f 47 e0 movdqa %xmm0,-0x20(%rdi) 0.00 : 838a8: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 838ad: c3 retq 0.00 : 838ae: 66 0f 7f 87 4f ff ff movdqa %xmm0,-0xb1(%rdi) 0.00 : 838b5: ff 0.00 : 838b6: 66 0f 7f 87 5f ff ff movdqa %xmm0,-0xa1(%rdi) 0.00 : 838bd: ff 0.00 : 838be: 66 0f 7f 87 6f ff ff movdqa %xmm0,-0x91(%rdi) 0.00 : 838c5: ff 0.00 : 838c6: 66 0f 7f 87 7f ff ff movdqa %xmm0,-0x81(%rdi) 0.00 : 838cd: ff 0.00 : 838ce: 66 0f 7f 47 8f movdqa %xmm0,-0x71(%rdi) 0.00 : 838d3: 66 0f 7f 47 9f movdqa %xmm0,-0x61(%rdi) 0.00 : 838d8: 66 0f 7f 47 af movdqa %xmm0,-0x51(%rdi) 0.00 : 838dd: 66 0f 7f 47 bf movdqa %xmm0,-0x41(%rdi) 0.00 : 838e2: 66 0f 7f 47 cf movdqa %xmm0,-0x31(%rdi) 0.17 : 838e7: 66 0f 7f 47 df movdqa %xmm0,-0x21(%rdi) 0.00 : 838ec: 66 0f 7f 47 ef movdqa %xmm0,-0x11(%rdi) 0.00 : 838f1: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 838f4: c3 retq 0.00 : 838f5: 66 0f 7f 87 4e ff ff movdqa %xmm0,-0xb2(%rdi) 0.00 : 838fc: ff 0.00 : 838fd: 66 0f 7f 87 5e ff ff movdqa %xmm0,-0xa2(%rdi) 0.00 : 83904: ff 0.17 : 83905: 66 0f 7f 87 6e ff ff movdqa %xmm0,-0x92(%rdi) 0.00 : 8390c: ff 0.17 : 8390d: 66 0f 7f 87 7e ff ff movdqa %xmm0,-0x82(%rdi) 0.00 : 83914: ff 0.17 : 83915: 66 0f 7f 47 8e movdqa %xmm0,-0x72(%rdi) 0.17 : 8391a: 66 0f 7f 47 9e movdqa %xmm0,-0x62(%rdi) 0.00 : 8391f: 66 0f 7f 47 ae movdqa %xmm0,-0x52(%rdi) 0.52 : 83924: 66 0f 7f 47 be movdqa %xmm0,-0x42(%rdi) 0.00 : 83929: 66 0f 7f 47 ce movdqa %xmm0,-0x32(%rdi) 0.00 : 8392e: 66 0f 7f 47 de movdqa %xmm0,-0x22(%rdi) 0.17 : 83933: 66 0f 7f 47 ee movdqa %xmm0,-0x12(%rdi) 0.00 : 83938: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 8393c: c3 retq 0.00 : 8393d: 66 0f 7f 87 4d ff ff movdqa %xmm0,-0xb3(%rdi) 0.00 : 83944: ff 0.00 : 83945: 66 0f 7f 87 5d ff ff movdqa %xmm0,-0xa3(%rdi) 0.00 : 8394c: ff 0.00 : 8394d: 66 0f 7f 87 6d ff ff movdqa %xmm0,-0x93(%rdi) 0.00 : 83954: ff 0.00 : 83955: 66 0f 7f 87 7d ff ff movdqa %xmm0,-0x83(%rdi) 0.00 : 8395c: ff 0.00 : 8395d: 66 0f 7f 47 8d movdqa %xmm0,-0x73(%rdi) 0.00 : 83962: 66 0f 7f 47 9d movdqa %xmm0,-0x63(%rdi) 0.00 : 83967: 66 0f 7f 47 ad movdqa %xmm0,-0x53(%rdi) 0.00 : 8396c: 66 0f 7f 47 bd movdqa %xmm0,-0x43(%rdi) 0.00 : 83971: 66 0f 7f 47 cd movdqa %xmm0,-0x33(%rdi) 0.00 : 83976: 66 0f 7f 47 dd movdqa %xmm0,-0x23(%rdi) 0.00 : 8397b: 66 0f 7f 47 ed movdqa %xmm0,-0x13(%rdi) 0.00 : 83980: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83984: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83987: c3 retq 0.00 : 83988: 66 0f 7f 87 4c ff ff movdqa %xmm0,-0xb4(%rdi) 0.00 : 8398f: ff 0.00 : 83990: 66 0f 7f 87 5c ff ff movdqa %xmm0,-0xa4(%rdi) 0.00 : 83997: ff 0.34 : 83998: 66 0f 7f 87 6c ff ff movdqa %xmm0,-0x94(%rdi) 0.00 : 8399f: ff 0.34 : 839a0: 66 0f 7f 87 7c ff ff movdqa %xmm0,-0x84(%rdi) 0.00 : 839a7: ff 0.00 : 839a8: 66 0f 7f 47 8c movdqa %xmm0,-0x74(%rdi) 0.00 : 839ad: 66 0f 7f 47 9c movdqa %xmm0,-0x64(%rdi) 0.00 : 839b2: 66 0f 7f 47 ac movdqa %xmm0,-0x54(%rdi) 0.00 : 839b7: 66 0f 7f 47 bc movdqa %xmm0,-0x44(%rdi) 0.00 : 839bc: 66 0f 7f 47 cc movdqa %xmm0,-0x34(%rdi) 0.00 : 839c1: 66 0f 7f 47 dc movdqa %xmm0,-0x24(%rdi) 0.00 : 839c6: 66 0f 7f 47 ec movdqa %xmm0,-0x14(%rdi) 0.00 : 839cb: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 839ce: c3 retq 0.00 : 839cf: 66 0f 7f 87 4b ff ff movdqa %xmm0,-0xb5(%rdi) 0.00 : 839d6: ff 0.00 : 839d7: 66 0f 7f 87 5b ff ff movdqa %xmm0,-0xa5(%rdi) 0.00 : 839de: ff 0.00 : 839df: 66 0f 7f 87 6b ff ff movdqa %xmm0,-0x95(%rdi) 0.00 : 839e6: ff 0.00 : 839e7: 66 0f 7f 87 7b ff ff movdqa %xmm0,-0x85(%rdi) 0.00 : 839ee: ff 0.00 : 839ef: 66 0f 7f 47 8b movdqa %xmm0,-0x75(%rdi) 0.00 : 839f4: 66 0f 7f 47 9b movdqa %xmm0,-0x65(%rdi) 0.00 : 839f9: 66 0f 7f 47 ab movdqa %xmm0,-0x55(%rdi) 0.17 : 839fe: 66 0f 7f 47 bb movdqa %xmm0,-0x45(%rdi) 0.00 : 83a03: 66 0f 7f 47 cb movdqa %xmm0,-0x35(%rdi) 0.00 : 83a08: 66 0f 7f 47 db movdqa %xmm0,-0x25(%rdi) 0.00 : 83a0d: 66 0f 7f 47 eb movdqa %xmm0,-0x15(%rdi) 0.00 : 83a12: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 83a15: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83a18: c3 retq 0.00 : 83a19: 66 0f 7f 87 4a ff ff movdqa %xmm0,-0xb6(%rdi) 0.00 : 83a20: ff 0.17 : 83a21: 66 0f 7f 87 5a ff ff movdqa %xmm0,-0xa6(%rdi) 0.00 : 83a28: ff 0.00 : 83a29: 66 0f 7f 87 6a ff ff movdqa %xmm0,-0x96(%rdi) 0.00 : 83a30: ff 0.17 : 83a31: 66 0f 7f 87 7a ff ff movdqa %xmm0,-0x86(%rdi) 0.00 : 83a38: ff 0.00 : 83a39: 66 0f 7f 47 8a movdqa %xmm0,-0x76(%rdi) 0.00 : 83a3e: 66 0f 7f 47 9a movdqa %xmm0,-0x66(%rdi) 0.00 : 83a43: 66 0f 7f 47 aa movdqa %xmm0,-0x56(%rdi) 0.00 : 83a48: 66 0f 7f 47 ba movdqa %xmm0,-0x46(%rdi) 0.52 : 83a4d: 66 0f 7f 47 ca movdqa %xmm0,-0x36(%rdi) 0.00 : 83a52: 66 0f 7f 47 da movdqa %xmm0,-0x26(%rdi) 0.17 : 83a57: 66 0f 7f 47 ea movdqa %xmm0,-0x16(%rdi) 0.00 : 83a5c: 89 57 fa mov %edx,-0x6(%rdi) 0.00 : 83a5f: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83a63: c3 retq 0.00 : 83a64: 66 0f 7f 87 49 ff ff movdqa %xmm0,-0xb7(%rdi) 0.00 : 83a6b: ff 0.00 : 83a6c: 66 0f 7f 87 59 ff ff movdqa %xmm0,-0xa7(%rdi) 0.00 : 83a73: ff 0.00 : 83a74: 66 0f 7f 87 69 ff ff movdqa %xmm0,-0x97(%rdi) 0.00 : 83a7b: ff 0.00 : 83a7c: 66 0f 7f 87 79 ff ff movdqa %xmm0,-0x87(%rdi) 0.00 : 83a83: ff 0.00 : 83a84: 66 0f 7f 47 89 movdqa %xmm0,-0x77(%rdi) 0.00 : 83a89: 66 0f 7f 47 99 movdqa %xmm0,-0x67(%rdi) 0.17 : 83a8e: 66 0f 7f 47 a9 movdqa %xmm0,-0x57(%rdi) 0.17 : 83a93: 66 0f 7f 47 b9 movdqa %xmm0,-0x47(%rdi) 0.17 : 83a98: 66 0f 7f 47 c9 movdqa %xmm0,-0x37(%rdi) 0.00 : 83a9d: 66 0f 7f 47 d9 movdqa %xmm0,-0x27(%rdi) 0.00 : 83aa2: 66 0f 7f 47 e9 movdqa %xmm0,-0x17(%rdi) 0.00 : 83aa7: 89 57 f9 mov %edx,-0x7(%rdi) 0.00 : 83aaa: 66 89 57 fd mov %dx,-0x3(%rdi) 0.17 : 83aae: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83ab1: c3 retq 0.00 : 83ab2: 66 0f 7f 87 48 ff ff movdqa %xmm0,-0xb8(%rdi) 0.00 : 83ab9: ff 0.00 : 83aba: 66 0f 7f 87 58 ff ff movdqa %xmm0,-0xa8(%rdi) 0.00 : 83ac1: ff 0.00 : 83ac2: 66 0f 7f 87 68 ff ff movdqa %xmm0,-0x98(%rdi) 0.00 : 83ac9: ff 0.00 : 83aca: 66 0f 7f 87 78 ff ff movdqa %xmm0,-0x88(%rdi) 0.00 : 83ad1: ff 0.00 : 83ad2: 66 0f 7f 47 88 movdqa %xmm0,-0x78(%rdi) 0.00 : 83ad7: 66 0f 7f 47 98 movdqa %xmm0,-0x68(%rdi) 0.00 : 83adc: 66 0f 7f 47 a8 movdqa %xmm0,-0x58(%rdi) 0.00 : 83ae1: 66 0f 7f 47 b8 movdqa %xmm0,-0x48(%rdi) 0.00 : 83ae6: 66 0f 7f 47 c8 movdqa %xmm0,-0x38(%rdi) 0.00 : 83aeb: 66 0f 7f 47 d8 movdqa %xmm0,-0x28(%rdi) 0.00 : 83af0: 66 0f 7f 47 e8 movdqa %xmm0,-0x18(%rdi) 0.00 : 83af5: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 83af9: c3 retq 0.00 : 83afa: 66 0f 7f 87 47 ff ff movdqa %xmm0,-0xb9(%rdi) 0.00 : 83b01: ff 0.00 : 83b02: 66 0f 7f 87 57 ff ff movdqa %xmm0,-0xa9(%rdi) 0.00 : 83b09: ff 0.00 : 83b0a: 66 0f 7f 87 67 ff ff movdqa %xmm0,-0x99(%rdi) 0.00 : 83b11: ff 0.00 : 83b12: 66 0f 7f 87 77 ff ff movdqa %xmm0,-0x89(%rdi) 0.00 : 83b19: ff 0.00 : 83b1a: 66 0f 7f 47 87 movdqa %xmm0,-0x79(%rdi) 0.00 : 83b1f: 66 0f 7f 47 97 movdqa %xmm0,-0x69(%rdi) 0.00 : 83b24: 66 0f 7f 47 a7 movdqa %xmm0,-0x59(%rdi) 0.00 : 83b29: 66 0f 7f 47 b7 movdqa %xmm0,-0x49(%rdi) 0.00 : 83b2e: 66 0f 7f 47 c7 movdqa %xmm0,-0x39(%rdi) 0.17 : 83b33: 66 0f 7f 47 d7 movdqa %xmm0,-0x29(%rdi) 0.00 : 83b38: 66 0f 7f 47 e7 movdqa %xmm0,-0x19(%rdi) 0.00 : 83b3d: 48 89 57 f7 mov %rdx,-0x9(%rdi) 0.00 : 83b41: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83b44: c3 retq 0.00 : 83b45: 66 0f 7f 87 46 ff ff movdqa %xmm0,-0xba(%rdi) 0.00 : 83b4c: ff 0.00 : 83b4d: 66 0f 7f 87 56 ff ff movdqa %xmm0,-0xaa(%rdi) 0.00 : 83b54: ff 0.17 : 83b55: 66 0f 7f 87 66 ff ff movdqa %xmm0,-0x9a(%rdi) 0.00 : 83b5c: ff 0.00 : 83b5d: 66 0f 7f 87 76 ff ff movdqa %xmm0,-0x8a(%rdi) 0.00 : 83b64: ff 0.00 : 83b65: 66 0f 7f 47 86 movdqa %xmm0,-0x7a(%rdi) 0.17 : 83b6a: 66 0f 7f 47 96 movdqa %xmm0,-0x6a(%rdi) 0.17 : 83b6f: 66 0f 7f 47 a6 movdqa %xmm0,-0x5a(%rdi) 0.17 : 83b74: 66 0f 7f 47 b6 movdqa %xmm0,-0x4a(%rdi) 0.00 : 83b79: 66 0f 7f 47 c6 movdqa %xmm0,-0x3a(%rdi) 0.00 : 83b7e: 66 0f 7f 47 d6 movdqa %xmm0,-0x2a(%rdi) 0.17 : 83b83: 66 0f 7f 47 e6 movdqa %xmm0,-0x1a(%rdi) 0.34 : 83b88: 48 89 57 f6 mov %rdx,-0xa(%rdi) 0.00 : 83b8c: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83b90: c3 retq 0.00 : 83b91: 66 0f 7f 87 45 ff ff movdqa %xmm0,-0xbb(%rdi) 0.00 : 83b98: ff 0.00 : 83b99: 66 0f 7f 87 55 ff ff movdqa %xmm0,-0xab(%rdi) 0.00 : 83ba0: ff 0.17 : 83ba1: 66 0f 7f 87 65 ff ff movdqa %xmm0,-0x9b(%rdi) 0.00 : 83ba8: ff 0.00 : 83ba9: 66 0f 7f 87 75 ff ff movdqa %xmm0,-0x8b(%rdi) 0.00 : 83bb0: ff 0.00 : 83bb1: 66 0f 7f 47 85 movdqa %xmm0,-0x7b(%rdi) 0.00 : 83bb6: 66 0f 7f 47 95 movdqa %xmm0,-0x6b(%rdi) 0.00 : 83bbb: 66 0f 7f 47 a5 movdqa %xmm0,-0x5b(%rdi) 0.00 : 83bc0: 66 0f 7f 47 b5 movdqa %xmm0,-0x4b(%rdi) 0.17 : 83bc5: 66 0f 7f 47 c5 movdqa %xmm0,-0x3b(%rdi) 0.00 : 83bca: 66 0f 7f 47 d5 movdqa %xmm0,-0x2b(%rdi) 0.00 : 83bcf: 66 0f 7f 47 e5 movdqa %xmm0,-0x1b(%rdi) 0.00 : 83bd4: 48 89 57 f5 mov %rdx,-0xb(%rdi) 0.00 : 83bd8: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83bdc: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83bdf: c3 retq 0.00 : 83be0: 66 0f 7f 87 44 ff ff movdqa %xmm0,-0xbc(%rdi) 0.00 : 83be7: ff 0.00 : 83be8: 66 0f 7f 87 54 ff ff movdqa %xmm0,-0xac(%rdi) 0.00 : 83bef: ff 0.00 : 83bf0: 66 0f 7f 87 64 ff ff movdqa %xmm0,-0x9c(%rdi) 0.00 : 83bf7: ff 0.00 : 83bf8: 66 0f 7f 87 74 ff ff movdqa %xmm0,-0x8c(%rdi) 0.00 : 83bff: ff 0.17 : 83c00: 66 0f 7f 47 84 movdqa %xmm0,-0x7c(%rdi) 0.00 : 83c05: 66 0f 7f 47 94 movdqa %xmm0,-0x6c(%rdi) 0.00 : 83c0a: 66 0f 7f 47 a4 movdqa %xmm0,-0x5c(%rdi) 0.00 : 83c0f: 66 0f 7f 47 b4 movdqa %xmm0,-0x4c(%rdi) 0.00 : 83c14: 66 0f 7f 47 c4 movdqa %xmm0,-0x3c(%rdi) 0.00 : 83c19: 66 0f 7f 47 d4 movdqa %xmm0,-0x2c(%rdi) 0.00 : 83c1e: 66 0f 7f 47 e4 movdqa %xmm0,-0x1c(%rdi) 0.00 : 83c23: 48 89 57 f4 mov %rdx,-0xc(%rdi) 0.00 : 83c27: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 83c2a: c3 retq 0.00 : 83c2b: 66 0f 7f 87 43 ff ff movdqa %xmm0,-0xbd(%rdi) 0.00 : 83c32: ff 0.00 : 83c33: 66 0f 7f 87 53 ff ff movdqa %xmm0,-0xad(%rdi) 0.00 : 83c3a: ff 0.00 : 83c3b: 66 0f 7f 87 63 ff ff movdqa %xmm0,-0x9d(%rdi) 0.00 : 83c42: ff 0.00 : 83c43: 66 0f 7f 87 73 ff ff movdqa %xmm0,-0x8d(%rdi) 0.00 : 83c4a: ff 0.00 : 83c4b: 66 0f 7f 47 83 movdqa %xmm0,-0x7d(%rdi) 0.00 : 83c50: 66 0f 7f 47 93 movdqa %xmm0,-0x6d(%rdi) 0.00 : 83c55: 66 0f 7f 47 a3 movdqa %xmm0,-0x5d(%rdi) 0.00 : 83c5a: 66 0f 7f 47 b3 movdqa %xmm0,-0x4d(%rdi) 0.00 : 83c5f: 66 0f 7f 47 c3 movdqa %xmm0,-0x3d(%rdi) 0.00 : 83c64: 66 0f 7f 47 d3 movdqa %xmm0,-0x2d(%rdi) 0.00 : 83c69: 66 0f 7f 47 e3 movdqa %xmm0,-0x1d(%rdi) 0.00 : 83c6e: 48 89 57 f3 mov %rdx,-0xd(%rdi) 0.00 : 83c72: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 83c75: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83c78: c3 retq 0.00 : 83c79: 66 0f 7f 87 42 ff ff movdqa %xmm0,-0xbe(%rdi) 0.00 : 83c80: ff 0.00 : 83c81: 66 0f 7f 87 52 ff ff movdqa %xmm0,-0xae(%rdi) 0.00 : 83c88: ff 0.69 : 83c89: 66 0f 7f 87 62 ff ff movdqa %xmm0,-0x9e(%rdi) 0.00 : 83c90: ff 0.17 : 83c91: 66 0f 7f 87 72 ff ff movdqa %xmm0,-0x8e(%rdi) 0.00 : 83c98: ff 0.17 : 83c99: 66 0f 7f 47 82 movdqa %xmm0,-0x7e(%rdi) 0.00 : 83c9e: 66 0f 7f 47 92 movdqa %xmm0,-0x6e(%rdi) 0.34 : 83ca3: 66 0f 7f 47 a2 movdqa %xmm0,-0x5e(%rdi) 0.17 : 83ca8: 66 0f 7f 47 b2 movdqa %xmm0,-0x4e(%rdi) 0.34 : 83cad: 66 0f 7f 47 c2 movdqa %xmm0,-0x3e(%rdi) 0.34 : 83cb2: 66 0f 7f 47 d2 movdqa %xmm0,-0x2e(%rdi) 0.00 : 83cb7: 66 0f 7f 47 e2 movdqa %xmm0,-0x1e(%rdi) 0.17 : 83cbc: 48 89 57 f2 mov %rdx,-0xe(%rdi) 0.00 : 83cc0: 89 57 fa mov %edx,-0x6(%rdi) 0.00 : 83cc3: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83cc7: c3 retq 0.00 : 83cc8: 66 0f 7f 87 41 ff ff movdqa %xmm0,-0xbf(%rdi) 0.00 : 83ccf: ff 0.00 : 83cd0: 66 0f 7f 87 51 ff ff movdqa %xmm0,-0xaf(%rdi) 0.00 : 83cd7: ff 0.17 : 83cd8: 66 0f 7f 87 61 ff ff movdqa %xmm0,-0x9f(%rdi) 0.00 : 83cdf: ff 0.00 : 83ce0: 66 0f 7f 87 71 ff ff movdqa %xmm0,-0x8f(%rdi) 0.00 : 83ce7: ff 0.00 : 83ce8: 66 0f 7f 47 81 movdqa %xmm0,-0x7f(%rdi) 0.00 : 83ced: 66 0f 7f 47 91 movdqa %xmm0,-0x6f(%rdi) 0.00 : 83cf2: 66 0f 7f 47 a1 movdqa %xmm0,-0x5f(%rdi) 0.00 : 83cf7: 66 0f 7f 47 b1 movdqa %xmm0,-0x4f(%rdi) 0.00 : 83cfc: 66 0f 7f 47 c1 movdqa %xmm0,-0x3f(%rdi) 0.00 : 83d01: 66 0f 7f 47 d1 movdqa %xmm0,-0x2f(%rdi) 0.00 : 83d06: 66 0f 7f 47 e1 movdqa %xmm0,-0x1f(%rdi) 0.00 : 83d0b: 48 89 57 f1 mov %rdx,-0xf(%rdi) 0.00 : 83d0f: 89 57 f9 mov %edx,-0x7(%rdi) 0.00 : 83d12: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83d16: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83d19: c3 retq 0.00 : 83d1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.17 : 83d20: 44 8b 0d 11 e4 2e 00 mov 0x2ee411(%rip),%r9d # 372138 <__x86_64_shared_cache_size> 3.09 : 83d27: 4d 39 c8 cmp %r9,%r8 0.00 : 83d2a: 77 64 ja 83d90 <__GI_memset+0x920> 0.17 : 83d2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 83d30: 4d 8d 40 80 lea -0x80(%r8),%r8 0.00 : 83d34: 49 81 f8 80 00 00 00 cmp $0x80,%r8 1.03 : 83d3b: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.69 : 83d3f: 66 0f 7f 47 10 movdqa %xmm0,0x10(%rdi) 0.34 : 83d44: 66 0f 7f 47 20 movdqa %xmm0,0x20(%rdi) 0.86 : 83d49: 66 0f 7f 47 30 movdqa %xmm0,0x30(%rdi) 1.03 : 83d4e: 66 0f 7f 47 40 movdqa %xmm0,0x40(%rdi) 0.86 : 83d53: 66 0f 7f 47 50 movdqa %xmm0,0x50(%rdi) 1.03 : 83d58: 66 0f 7f 47 60 movdqa %xmm0,0x60(%rdi) 0.69 : 83d5d: 66 0f 7f 47 70 movdqa %xmm0,0x70(%rdi) 0.17 : 83d62: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83d69: 73 c5 jae 83d30 <__GI_memset+0x8c0> 0.00 : 83d6b: 4c 01 c7 add %r8,%rdi 0.00 : 83d6e: 4c 8d 1d 38 fb ff ff lea -0x4c8(%rip),%r11 # 838ad <__GI_memset+0x43d> 0.00 : 83d75: 48 8d 0d e4 25 0b 00 lea 0xb25e4(%rip),%rcx # 136360 0.00 : 83d7c: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.52 : 83d81: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.17 : 83d85: 41 ff e3 jmpq *%r11 0.00 : 83d88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83d8f: 00 0.00 : 83d90: 49 83 f9 00 cmp $0x0,%r9 0.00 : 83d94: 74 9a je 83d30 <__GI_memset+0x8c0> 0.00 : 83d96: eb 08 jmp 83da0 <__GI_memset+0x930> 0.00 : 83d98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83d9f: 00 2.58 : 83da0: 4d 8d 40 80 lea -0x80(%r8),%r8 ??:0 7.04 : 83da4: 49 81 f8 80 00 00 00 cmp $0x80,%r8 ??:0 1.55 : 83dab: 66 0f e7 07 movntdq %xmm0,(%rdi) 1.03 : 83daf: 66 0f e7 47 10 movntdq %xmm0,0x10(%rdi) 3.95 : 83db4: 66 0f e7 47 20 movntdq %xmm0,0x20(%rdi) ??:0 6.87 : 83db9: 66 0f e7 47 30 movntdq %xmm0,0x30(%rdi) ??:0 2.23 : 83dbe: 66 0f e7 47 40 movntdq %xmm0,0x40(%rdi) 0.69 : 83dc3: 66 0f e7 47 50 movntdq %xmm0,0x50(%rdi) 0.69 : 83dc8: 66 0f e7 47 60 movntdq %xmm0,0x60(%rdi) 0.17 : 83dcd: 66 0f e7 47 70 movntdq %xmm0,0x70(%rdi) 0.00 : 83dd2: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83dd9: 73 c5 jae 83da0 <__GI_memset+0x930> 0.00 : 83ddb: 0f ae f8 sfence 0.00 : 83dde: 4c 01 c7 add %r8,%rdi 0.00 : 83de1: 4c 8d 1d c5 fa ff ff lea -0x53b(%rip),%r11 # 838ad <__GI_memset+0x43d> 0.00 : 83de8: 48 8d 0d 71 25 0b 00 lea 0xb2571(%rip),%rcx # 136360 0.00 : 83def: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83df4: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83df8: 41 ff e3 jmpq *%r11 0.00 : 83dfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83e00: 49 81 f8 00 20 00 00 cmp $0x2000,%r8 0.00 : 83e07: 0f 83 83 00 00 00 jae 83e90 <__GI_memset+0xa20> 0.00 : 83e0d: 0f 1f 00 nopl (%rax) 0.00 : 83e10: 4c 89 c1 mov %r8,%rcx 0.00 : 83e13: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 83e17: 74 52 je 83e6b <__GI_memset+0x9fb> 0.00 : 83e19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 83e20: 48 ff c9 dec %rcx 0.00 : 83e23: 48 89 17 mov %rdx,(%rdi) 0.00 : 83e26: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 83e2a: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 83e2e: 48 89 57 18 mov %rdx,0x18(%rdi) 0.00 : 83e32: 48 89 57 20 mov %rdx,0x20(%rdi) 0.00 : 83e36: 48 89 57 28 mov %rdx,0x28(%rdi) 0.00 : 83e3a: 48 89 57 30 mov %rdx,0x30(%rdi) 0.00 : 83e3e: 48 89 57 38 mov %rdx,0x38(%rdi) 0.00 : 83e42: 48 89 57 40 mov %rdx,0x40(%rdi) 0.00 : 83e46: 48 89 57 48 mov %rdx,0x48(%rdi) 0.00 : 83e4a: 48 89 57 50 mov %rdx,0x50(%rdi) 0.00 : 83e4e: 48 89 57 58 mov %rdx,0x58(%rdi) 0.00 : 83e52: 48 89 57 60 mov %rdx,0x60(%rdi) 0.00 : 83e56: 48 89 57 68 mov %rdx,0x68(%rdi) 0.00 : 83e5a: 48 89 57 70 mov %rdx,0x70(%rdi) 0.00 : 83e5e: 48 89 57 78 mov %rdx,0x78(%rdi) 0.00 : 83e62: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83e69: 75 b5 jne 83e20 <__GI_memset+0x9b0> 0.00 : 83e6b: 41 83 e0 7f and $0x7f,%r8d 0.00 : 83e6f: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 83e73: 4c 8d 1d 42 f6 ff ff lea -0x9be(%rip),%r11 # 834bc <__GI_memset+0x4c> 0.00 : 83e7a: 48 8d 0d 8f 23 0b 00 lea 0xb238f(%rip),%rcx # 136210 0.00 : 83e81: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83e86: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83e8a: 41 ff e3 jmpq *%r11 0.00 : 83e8d: 0f 1f 00 nopl (%rax) 0.00 : 83e90: 44 8b 0d a1 e2 2e 00 mov 0x2ee2a1(%rip),%r9d # 372138 <__x86_64_shared_cache_size> 0.00 : 83e97: 4d 39 c1 cmp %r8,%r9 0.00 : 83e9a: 4d 0f 47 c8 cmova %r8,%r9 0.00 : 83e9e: 76 10 jbe 83eb0 <__GI_memset+0xa40> 0.00 : 83ea0: 49 81 f8 00 00 01 00 cmp $0x10000,%r8 0.00 : 83ea7: 0f 83 63 ff ff ff jae 83e10 <__GI_memset+0x9a0> 0.00 : 83ead: 0f 1f 00 nopl (%rax) 0.00 : 83eb0: 4c 89 c9 mov %r9,%rcx 0.00 : 83eb3: 49 83 e1 f8 and $0xfffffffffffffff8,%r9 0.00 : 83eb7: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 83ebb: 74 07 je 83ec4 <__GI_memset+0xa54> 0.00 : 83ebd: 48 92 xchg %rax,%rdx 0.00 : 83ebf: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 83ec2: 48 92 xchg %rax,%rdx 0.00 : 83ec4: 4d 29 c8 sub %r9,%r8 0.00 : 83ec7: 77 27 ja 83ef0 <__GI_memset+0xa80> 0.00 : 83ec9: 41 83 e0 07 and $0x7,%r8d 0.00 : 83ecd: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 83ed1: 4c 8d 1d e4 f5 ff ff lea -0xa1c(%rip),%r11 # 834bc <__GI_memset+0x4c> 0.00 : 83ed8: 48 8d 0d 31 23 0b 00 lea 0xb2331(%rip),%rcx # 136210 0.00 : 83edf: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83ee4: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83ee8: 41 ff e3 jmpq *%r11 0.00 : 83eeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83ef0: 4c 89 c1 mov %r8,%rcx 0.00 : 83ef3: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 83ef7: 74 65 je 83f5e <__GI_memset+0xaee> 0.00 : 83ef9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 83f00: 48 ff c9 dec %rcx 0.00 : 83f03: 48 0f c3 17 movnti %rdx,(%rdi) 0.00 : 83f07: 48 0f c3 57 08 movnti %rdx,0x8(%rdi) 0.00 : 83f0c: 48 0f c3 57 10 movnti %rdx,0x10(%rdi) 0.00 : 83f11: 48 0f c3 57 18 movnti %rdx,0x18(%rdi) 0.00 : 83f16: 48 0f c3 57 20 movnti %rdx,0x20(%rdi) 0.00 : 83f1b: 48 0f c3 57 28 movnti %rdx,0x28(%rdi) 0.00 : 83f20: 48 0f c3 57 30 movnti %rdx,0x30(%rdi) 0.00 : 83f25: 48 0f c3 57 38 movnti %rdx,0x38(%rdi) 0.00 : 83f2a: 48 0f c3 57 40 movnti %rdx,0x40(%rdi) 0.00 : 83f2f: 48 0f c3 57 48 movnti %rdx,0x48(%rdi) 0.00 : 83f34: 48 0f c3 57 50 movnti %rdx,0x50(%rdi) 0.00 : 83f39: 48 0f c3 57 58 movnti %rdx,0x58(%rdi) 0.00 : 83f3e: 48 0f c3 57 60 movnti %rdx,0x60(%rdi) 0.00 : 83f43: 48 0f c3 57 68 movnti %rdx,0x68(%rdi) 0.00 : 83f48: 48 0f c3 57 70 movnti %rdx,0x70(%rdi) 0.00 : 83f4d: 48 0f c3 57 78 movnti %rdx,0x78(%rdi) 0.00 : 83f52: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83f59: 75 a5 jne 83f00 <__GI_memset+0xa90> 0.00 : 83f5b: 0f ae f8 sfence 0.00 : 83f5e: 41 83 e0 7f and $0x7f,%r8d 0.00 : 83f62: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 83f66: 4c 8d 1d 4f f5 ff ff lea -0xab1(%rip),%r11 # 834bc <__GI_memset+0x4c> 0.00 : 83f6d: 48 8d 0d 9c 22 0b 00 lea 0xb229c(%rip),%rcx # 136210 0.00 : 83f74: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83f79: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83f7d: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 8.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:716 7.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 6.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 6.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 4.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 3.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:719 3.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 3.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 3.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 2.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 2.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 2.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 2.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 2.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 1.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:716 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798f70 : : return ret; : } : : void * : palloc0(Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 2.31 : 798f70: 55 push %rbp : void *ret; : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:716 8.93 : 798f71: 48 81 ff ff ff ff 3f cmp $0x3fffffff,%rdi : return ret; : } : : void * : palloc0(Size size) : { 0.50 : 798f78: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 0.83 : 798f7b: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 6.94 : 798f7d: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 3.47 : 798f7e: 48 89 fb mov %rdi,%rbx : void *ret; : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:716 0.83 : 798f81: 77 6d ja 798ff0 : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; 0.17 : 798f83: 48 8b 05 d6 18 42 00 mov 0x4218d6(%rip),%rax # bba860 : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 2.98 : 798f8a: 48 89 de mov %rbx,%rsi : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:719 3.80 : 798f8d: c6 40 30 00 movb $0x0,0x30(%rax) : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 19.67 : 798f91: 48 8b 3d c8 18 42 00 mov 0x4218c8(%rip),%rdi # bba860 0.00 : 798f98: 48 8b 47 08 mov 0x8(%rdi),%rax 7.77 : 798f9c: ff 10 callq *(%rax) : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : MemSetAligned(ret, 0, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 2.15 : 798f9e: f6 c3 07 test $0x7,%bl : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 1.82 : 798fa1: 49 89 c4 mov %rax,%r12 : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : MemSetAligned(ret, 0, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.99 : 798fa4: 75 09 jne 798faf 0.99 : 798fa6: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 798fad: 76 19 jbe 798fc8 3.31 : 798faf: 48 89 da mov %rbx,%rdx 0.17 : 798fb2: 31 f6 xor %esi,%esi 0.17 : 798fb4: 4c 89 e7 mov %r12,%rdi 0.17 : 798fb7: e8 64 04 cd ff callq 469420 : : return ret; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 1.32 : 798fbc: 5b pop %rbx 1.65 : 798fbd: 4c 89 e0 mov %r12,%rax 0.33 : 798fc0: 41 5c pop %r12 2.31 : 798fc2: c9 leaveq 2.98 : 798fc3: c3 retq 0.00 : 798fc4: 0f 1f 40 00 nopl 0x0(%rax) : CurrentMemoryContext->isReset = false; : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : MemSetAligned(ret, 0, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.99 : 798fc8: 49 8d 14 1c lea (%r12,%rbx,1),%rdx 0.50 : 798fcc: 49 39 d4 cmp %rdx,%r12 0.00 : 798fcf: 73 eb jae 798fbc 1.32 : 798fd1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 4.30 : 798fd8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 6.28 : 798fdf: 48 83 c0 08 add $0x8,%rax 0.33 : 798fe3: 48 39 c2 cmp %rax,%rdx 0.00 : 798fe6: 77 f0 ja 798fd8 : : return ret; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 1.16 : 798fe8: 5b pop %rbx 3.97 : 798fe9: 4c 89 e0 mov %r12,%rax 0.66 : 798fec: 41 5c pop %r12 0.17 : 798fee: c9 leaveq 3.80 : 798fef: c3 retq : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 798ff0: ba 10 20 8e 00 mov $0x8e2010,%edx 0.00 : 798ff5: be cd 02 00 00 mov $0x2cd,%esi 0.00 : 798ffa: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 798fff: e8 1c 24 fe ff callq 77b420 0.00 : 799004: 48 89 da mov %rbx,%rdx 0.00 : 799007: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 79900c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 799011: 31 c0 xor %eax,%eax 0.00 : 799013: e8 18 22 fe ff callq 77b230 0.00 : 799018: e8 b3 04 cd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 22.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 20.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 14.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 6.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 5.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:396 3.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:396 2.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ea7a0 : : * intge - returns 1 iff arg1 >= arg2 : */ : : Datum : int4eq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 24.96 : 6ea7a0: 48 8b 47 28 mov 0x28(%rdi),%rax 20.83 : 6ea7a4: 39 47 20 cmp %eax,0x20(%rdi) 14.54 : 6ea7a7: 55 push %rbp 6.28 : 6ea7a8: 48 89 e5 mov %rsp,%rbp : int32 arg1 = PG_GETARG_INT32(0); : int32 arg2 = PG_GETARG_INT32(1); : : PG_RETURN_BOOL(arg1 == arg2); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:396 3.23 : 6ea7ab: c9 leaveq : * intge - returns 1 iff arg1 >= arg2 : */ : : Datum : int4eq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:391 22.44 : 6ea7ac: 0f 94 c0 sete %al 7.72 : 6ea7af: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.31 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1202 6.38 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1202 4.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1134 4.35 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1145 4.20 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1116 3.89 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1116 3.89 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1156 3.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1138 3.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1139 3.42 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1202 3.42 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1145 2.95 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1138 2.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1138 2.49 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1101 2.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1204 2.18 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1138 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1116 1.40 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1136 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1101 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1101 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1117 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1136 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1189 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1157 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1114 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1116 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1134 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1101 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1114 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1116 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1117 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1101 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1101 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1102 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1114 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1116 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1127 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1193 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1193 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1134 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1203 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1204 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1148 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1158 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ac3e0 <_bt_readpage>: : * : * Returns true if any matching items found on the page, false if none. : */ : static bool : _bt_readpage(IndexScanDesc scan, ScanDirection dir, OffsetNumber offnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1101 1.24 : 4ac3e0: 55 push %rbp 1.24 : 4ac3e1: 89 d1 mov %edx,%ecx 0.47 : 4ac3e3: 48 89 e5 mov %rsp,%rbp 0.47 : 4ac3e6: 41 57 push %r15 2.49 : 4ac3e8: 41 56 push %r14 0.78 : 4ac3ea: 41 55 push %r13 0.62 : 4ac3ec: 41 54 push %r12 0.62 : 4ac3ee: 53 push %rbx 0.16 : 4ac3ef: 48 83 ec 58 sub $0x58,%rsp 0.16 : 4ac3f3: 48 89 7d 98 mov %rdi,-0x68(%rbp) 0.16 : 4ac3f7: 89 75 94 mov %esi,-0x6c(%rbp) : BTScanOpaque so = (BTScanOpaque) scan->opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1102 0.62 : 4ac3fa: 4c 8b 67 38 mov 0x38(%rdi),%r12 : bool continuescan; : : /* we must have the buffer pinned and locked */ : Assert(BufferIsValid(so->currPos.buf)); : : page = BufferGetPage(so->currPos.buf); 0.47 : 4ac3fe: 41 8b 44 24 54 mov 0x54(%r12),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1114 0.62 : 4ac403: 85 c0 test %eax,%eax 0.00 : 4ac405: 0f 88 55 02 00 00 js 4ac660 <_bt_readpage+0x280> 0.16 : 4ac40b: 83 e8 01 sub $0x1,%eax 0.16 : 4ac40e: 4c 63 f8 movslq %eax,%r15 0.78 : 4ac411: 49 c1 e7 0d shl $0xd,%r15 0.93 : 4ac415: 4c 03 3d dc 36 71 00 add 0x7136dc(%rip),%r15 # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : minoff = P_FIRSTDATAKEY(opaque); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1116 1.56 : 4ac41c: 41 0f b7 47 10 movzwl 0x10(%r15),%eax 4.20 : 4ac421: 41 8b 54 07 04 mov 0x4(%r15,%rax,1),%edx 3.89 : 4ac426: 83 fa 01 cmp $0x1,%edx 0.93 : 4ac429: 19 c0 sbb %eax,%eax 0.78 : 4ac42b: 83 c0 02 add $0x2,%eax 0.62 : 4ac42e: 66 89 45 a0 mov %ax,-0x60(%rbp) : maxoff = PageGetMaxOffsetNumber(page); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1117 0.78 : 4ac432: 41 0f b7 47 0c movzwl 0xc(%r15),%eax 0.00 : 4ac437: 66 c7 45 b0 00 00 movw $0x0,-0x50(%rbp) 0.16 : 4ac43d: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ac441: 76 0f jbe 4ac452 <_bt_readpage+0x72> 0.00 : 4ac443: 0f b7 c0 movzwl %ax,%eax 1.24 : 4ac446: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ac44a: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ac44e: 66 89 45 b0 mov %ax,-0x50(%rbp) : /* : * we must save the page's right-link while scanning it; this tells us : * where to step right to after we're done with these items. There is no : * corresponding need for the left-link, since splits always go right. : */ : so->currPos.nextPage = opaque->btpo_next; 0.16 : 4ac452: 41 89 54 24 58 mov %edx,0x58(%r12) : : /* initialize tuple workspace to empty */ : so->currPos.nextTupleOffset = 0; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1127 0.62 : 4ac457: 41 c7 44 24 60 00 00 movl $0x0,0x60(%r12) 0.00 : 4ac45e: 00 00 : : if (ScanDirectionIsForward(dir)) 0.00 : 4ac460: 83 7d 94 01 cmpl $0x1,-0x6c(%rbp) 0.00 : 4ac464: 0f 84 06 01 00 00 je 4ac570 <_bt_readpage+0x190> : else : { : /* load items[] in descending order */ : itemIndex = MaxIndexTuplesPerPage; : : offnum = Min(offnum, maxoff); 0.00 : 4ac46a: 66 39 4d b0 cmp %cx,-0x50(%rbp) 0.00 : 4ac46e: 44 0f b7 6d b0 movzwl -0x50(%rbp),%r13d 0.00 : 4ac473: 48 8d 45 cf lea -0x31(%rbp),%rax : : while (offnum >= minoff) 0.00 : 4ac477: 41 be 98 01 00 00 mov $0x198,%r14d 0.00 : 4ac47d: 48 89 45 88 mov %rax,-0x78(%rbp) : else : { : /* load items[] in descending order */ : itemIndex = MaxIndexTuplesPerPage; : : offnum = Min(offnum, maxoff); 0.00 : 4ac481: 44 0f 47 e9 cmova %ecx,%r13d : : while (offnum >= minoff) 0.00 : 4ac485: 66 44 39 6d a0 cmp %r13w,-0x60(%rbp) 0.00 : 4ac48a: 76 1b jbe 4ac4a7 <_bt_readpage+0xc7> 0.00 : 4ac48c: e9 a2 00 00 00 jmpq 4ac533 <_bt_readpage+0x153> 0.00 : 4ac491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : if (!continuescan) : { : /* there can't be any more matches, so stop */ : so->currPos.moreLeft = false; : break; 0.00 : 4ac498: 41 83 ed 01 sub $0x1,%r13d : /* load items[] in descending order */ : itemIndex = MaxIndexTuplesPerPage; : : offnum = Min(offnum, maxoff); : : while (offnum >= minoff) 0.00 : 4ac49c: 66 44 39 6d a0 cmp %r13w,-0x60(%rbp) 0.00 : 4ac4a1: 0f 87 8c 00 00 00 ja 4ac533 <_bt_readpage+0x153> : { : itup = _bt_checkkeys(scan, page, offnum, dir, &continuescan); 0.00 : 4ac4a7: 8b 4d 94 mov -0x6c(%rbp),%ecx 0.00 : 4ac4aa: 4c 8b 45 88 mov -0x78(%rbp),%r8 0.00 : 4ac4ae: 41 0f b7 d5 movzwl %r13w,%edx 0.00 : 4ac4b2: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 4ac4b6: 4c 89 fe mov %r15,%rsi 0.00 : 4ac4b9: e8 62 1f 00 00 callq 4ae420 <_bt_checkkeys> : if (itup != NULL) 0.00 : 4ac4be: 48 85 c0 test %rax,%rax : : offnum = Min(offnum, maxoff); : : while (offnum >= minoff) : { : itup = _bt_checkkeys(scan, page, offnum, dir, &continuescan); 0.00 : 4ac4c1: 48 89 c1 mov %rax,%rcx : if (itup != NULL) 0.00 : 4ac4c4: 74 5d je 4ac523 <_bt_readpage+0x143> : { : /* tuple passes all scan key conditions, so remember it */ : itemIndex--; 0.00 : 4ac4c6: 41 83 ee 01 sub $0x1,%r14d : /* Save an index item into so->currPos.items[itemIndex] */ : static void : _bt_saveitem(BTScanOpaque so, int itemIndex, : OffsetNumber offnum, IndexTuple itup) : { : BTScanPosItem *currItem = &so->currPos.items[itemIndex]; 0.00 : 4ac4ca: 49 63 c6 movslq %r14d,%rax : : currItem->heapTid = itup->t_tid; 0.00 : 4ac4cd: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 4ac4d1: 49 8d 54 44 60 lea 0x60(%r12,%rax,2),%rdx 0.00 : 4ac4d6: 8b 01 mov (%rcx),%eax 0.00 : 4ac4d8: 89 42 10 mov %eax,0x10(%rdx) 0.00 : 4ac4db: 0f b7 41 04 movzwl 0x4(%rcx),%eax : currItem->indexOffset = offnum; 0.00 : 4ac4df: 66 44 89 6a 16 mov %r13w,0x16(%rdx) : _bt_saveitem(BTScanOpaque so, int itemIndex, : OffsetNumber offnum, IndexTuple itup) : { : BTScanPosItem *currItem = &so->currPos.items[itemIndex]; : : currItem->heapTid = itup->t_tid; 0.00 : 4ac4e4: 66 89 42 14 mov %ax,0x14(%rdx) : currItem->indexOffset = offnum; : if (so->currTuples) 0.00 : 4ac4e8: 49 83 7c 24 40 00 cmpq $0x0,0x40(%r12) 0.00 : 4ac4ee: 74 33 je 4ac523 <_bt_readpage+0x143> : { : Size itupsz = IndexTupleSize(itup); : : currItem->tupleOffset = so->currPos.nextTupleOffset; 0.00 : 4ac4f0: 41 8b 44 24 60 mov 0x60(%r12),%eax : : currItem->heapTid = itup->t_tid; : currItem->indexOffset = offnum; : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); 0.00 : 4ac4f5: 0f b7 59 06 movzwl 0x6(%rcx),%ebx : : currItem->tupleOffset = so->currPos.nextTupleOffset; : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac4f9: 48 89 ce mov %rcx,%rsi : currItem->indexOffset = offnum; : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); : : currItem->tupleOffset = so->currPos.nextTupleOffset; 0.00 : 4ac4fc: 66 89 42 18 mov %ax,0x18(%rdx) : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac500: 49 63 7c 24 60 movslq 0x60(%r12),%rdi 0.00 : 4ac505: 49 03 7c 24 40 add 0x40(%r12),%rdi : : currItem->heapTid = itup->t_tid; : currItem->indexOffset = offnum; : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); 0.00 : 4ac50a: 81 e3 ff 1f 00 00 and $0x1fff,%ebx : : currItem->tupleOffset = so->currPos.nextTupleOffset; : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac510: 48 89 da mov %rbx,%rdx : so->currPos.nextTupleOffset += MAXALIGN(itupsz); 0.00 : 4ac513: 83 c3 07 add $0x7,%ebx 0.00 : 4ac516: 83 e3 f8 and $0xfffffff8,%ebx : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); : : currItem->tupleOffset = so->currPos.nextTupleOffset; : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac519: e8 d2 d6 fb ff callq 469bf0 : so->currPos.nextTupleOffset += MAXALIGN(itupsz); 0.00 : 4ac51e: 41 01 5c 24 60 add %ebx,0x60(%r12) : { : /* tuple passes all scan key conditions, so remember it */ : itemIndex--; : _bt_saveitem(so, itemIndex, offnum, itup); : } : if (!continuescan) 0.00 : 4ac523: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4ac527: 0f 85 6b ff ff ff jne 4ac498 <_bt_readpage+0xb8> : { : /* there can't be any more matches, so stop */ : so->currPos.moreLeft = false; 0.00 : 4ac52d: 41 c6 44 24 5c 00 movb $0x0,0x5c(%r12) : : offnum = OffsetNumberPrev(offnum); : } : : Assert(itemIndex >= 0); : so->currPos.firstItem = itemIndex; 0.00 : 4ac533: 45 89 74 24 64 mov %r14d,0x64(%r12) : so->currPos.lastItem = MaxIndexTuplesPerPage - 1; 0.00 : 4ac538: 41 c7 44 24 68 97 01 movl $0x197,0x68(%r12) 0.00 : 4ac53f: 00 00 : so->currPos.itemIndex = MaxIndexTuplesPerPage - 1; 0.00 : 4ac541: 41 c7 44 24 6c 97 01 movl $0x197,0x6c(%r12) 0.00 : 4ac548: 00 00 0.47 : 4ac54a: 41 8b 44 24 64 mov 0x64(%r12),%eax 0.31 : 4ac54f: 41 3b 44 24 68 cmp 0x68(%r12),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1189 1.09 : 4ac554: 0f 9e c0 setle %al : } : : return (so->currPos.firstItem <= so->currPos.lastItem); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1193 0.62 : 4ac557: 48 83 c4 58 add $0x58,%rsp 0.00 : 4ac55b: 5b pop %rbx 0.31 : 4ac55c: 41 5c pop %r12 0.47 : 4ac55e: 41 5d pop %r13 0.62 : 4ac560: 41 5e pop %r14 0.00 : 4ac562: 41 5f pop %r15 0.47 : 4ac564: c9 leaveq 0.47 : 4ac565: c3 retq 0.00 : 4ac566: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ac56d: 00 00 00 : if (ScanDirectionIsForward(dir)) : { : /* load items[] in ascending order */ : itemIndex = 0; : : offnum = Max(offnum, minoff); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1134 0.62 : 4ac570: 66 39 4d a0 cmp %cx,-0x60(%rbp) 4.67 : 4ac574: 44 0f b7 6d a0 movzwl -0x60(%rbp),%r13d 0.00 : 4ac579: 48 8d 45 cf lea -0x31(%rbp),%rax 0.00 : 4ac57d: 48 89 45 88 mov %rax,-0x78(%rbp) : : while (offnum <= maxoff) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1136 1.40 : 4ac581: b8 ff ff ff ff mov $0xffffffff,%eax : if (ScanDirectionIsForward(dir)) : { : /* load items[] in ascending order */ : itemIndex = 0; : : offnum = Max(offnum, minoff); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1134 0.93 : 4ac586: 44 0f 42 e9 cmovb %ecx,%r13d : : while (offnum <= maxoff) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1136 1.24 : 4ac58a: 45 31 f6 xor %r14d,%r14d 0.00 : 4ac58d: 66 44 39 6d b0 cmp %r13w,-0x50(%rbp) 0.00 : 4ac592: 73 1b jae 4ac5af <_bt_readpage+0x1cf> 0.00 : 4ac594: e9 a8 00 00 00 jmpq 4ac641 <_bt_readpage+0x261> 0.00 : 4ac599: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : if (!continuescan) : { : /* there can't be any more matches, so stop */ : so->currPos.moreRight = false; : break; 0.47 : 4ac5a0: 41 83 c5 01 add $0x1,%r13d : /* load items[] in ascending order */ : itemIndex = 0; : : offnum = Max(offnum, minoff); : : while (offnum <= maxoff) 0.00 : 4ac5a4: 66 44 3b 6d b0 cmp -0x50(%rbp),%r13w 0.00 : 4ac5a9: 0f 87 c9 00 00 00 ja 4ac678 <_bt_readpage+0x298> : { : itup = _bt_checkkeys(scan, page, offnum, dir, &continuescan); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1138 2.18 : 4ac5af: 4c 8b 45 88 mov -0x78(%rbp),%r8 2.64 : 4ac5b3: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.47 : 4ac5b7: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ac5bc: 41 0f b7 d5 movzwl %r13w,%edx 3.73 : 4ac5c0: 4c 89 fe mov %r15,%rsi 2.95 : 4ac5c3: e8 58 1e 00 00 callq 4ae420 <_bt_checkkeys> : if (itup != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1139 3.58 : 4ac5c8: 48 85 c0 test %rax,%rax : : offnum = Max(offnum, minoff); : : while (offnum <= maxoff) : { : itup = _bt_checkkeys(scan, page, offnum, dir, &continuescan); 0.47 : 4ac5cb: 48 89 c1 mov %rax,%rcx : if (itup != NULL) 0.00 : 4ac5ce: 74 5d je 4ac62d <_bt_readpage+0x24d> : /* Save an index item into so->currPos.items[itemIndex] */ : static void : _bt_saveitem(BTScanOpaque so, int itemIndex, : OffsetNumber offnum, IndexTuple itup) : { : BTScanPosItem *currItem = &so->currPos.items[itemIndex]; 0.00 : 4ac5d0: 49 63 c6 movslq %r14d,%rax : : currItem->heapTid = itup->t_tid; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1202 3.42 : 4ac5d3: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.16 : 4ac5d7: 49 8d 54 44 60 lea 0x60(%r12,%rax,2),%rdx 0.47 : 4ac5dc: 8b 01 mov (%rcx),%eax 0.16 : 4ac5de: 89 42 10 mov %eax,0x10(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1202 14.31 : 4ac5e1: 0f b7 41 04 movzwl 0x4(%rcx),%eax : currItem->indexOffset = offnum; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1203 0.62 : 4ac5e5: 66 44 89 6a 16 mov %r13w,0x16(%rdx) : _bt_saveitem(BTScanOpaque so, int itemIndex, : OffsetNumber offnum, IndexTuple itup) : { : BTScanPosItem *currItem = &so->currPos.items[itemIndex]; : : currItem->heapTid = itup->t_tid; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1202 6.38 : 4ac5ea: 66 89 42 14 mov %ax,0x14(%rdx) : currItem->indexOffset = offnum; : if (so->currTuples) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1204 2.33 : 4ac5ee: 49 83 7c 24 40 00 cmpq $0x0,0x40(%r12) 0.62 : 4ac5f4: 74 33 je 4ac629 <_bt_readpage+0x249> : { : Size itupsz = IndexTupleSize(itup); : : currItem->tupleOffset = so->currPos.nextTupleOffset; 0.00 : 4ac5f6: 41 8b 44 24 60 mov 0x60(%r12),%eax : : currItem->heapTid = itup->t_tid; : currItem->indexOffset = offnum; : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); 0.00 : 4ac5fb: 0f b7 59 06 movzwl 0x6(%rcx),%ebx : : currItem->tupleOffset = so->currPos.nextTupleOffset; : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac5ff: 48 89 ce mov %rcx,%rsi : currItem->indexOffset = offnum; : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); : : currItem->tupleOffset = so->currPos.nextTupleOffset; 0.00 : 4ac602: 66 89 42 18 mov %ax,0x18(%rdx) : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac606: 49 63 7c 24 60 movslq 0x60(%r12),%rdi 0.00 : 4ac60b: 49 03 7c 24 40 add 0x40(%r12),%rdi : : currItem->heapTid = itup->t_tid; : currItem->indexOffset = offnum; : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); 0.00 : 4ac610: 81 e3 ff 1f 00 00 and $0x1fff,%ebx : : currItem->tupleOffset = so->currPos.nextTupleOffset; : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac616: 48 89 da mov %rbx,%rdx : so->currPos.nextTupleOffset += MAXALIGN(itupsz); 0.00 : 4ac619: 83 c3 07 add $0x7,%ebx 0.00 : 4ac61c: 83 e3 f8 and $0xfffffff8,%ebx : if (so->currTuples) : { : Size itupsz = IndexTupleSize(itup); : : currItem->tupleOffset = so->currPos.nextTupleOffset; : memcpy(so->currTuples + so->currPos.nextTupleOffset, itup, itupsz); 0.00 : 4ac61f: e8 cc d5 fb ff callq 469bf0 : so->currPos.nextTupleOffset += MAXALIGN(itupsz); 0.00 : 4ac624: 41 01 5c 24 60 add %ebx,0x60(%r12) : itup = _bt_checkkeys(scan, page, offnum, dir, &continuescan); : if (itup != NULL) : { : /* tuple passes all scan key conditions, so remember it */ : _bt_saveitem(so, itemIndex, offnum, itup); : itemIndex++; 0.31 : 4ac629: 41 83 c6 01 add $0x1,%r14d : } : if (!continuescan) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1145 4.35 : 4ac62d: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 3.42 : 4ac631: 0f 85 69 ff ff ff jne 4ac5a0 <_bt_readpage+0x1c0> : { : /* there can't be any more matches, so stop */ : so->currPos.moreRight = false; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1148 0.62 : 4ac637: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 4ac63b: 41 c6 44 24 5d 00 movb $0x0,0x5d(%r12) : : offnum = OffsetNumberNext(offnum); : } : : Assert(itemIndex <= MaxIndexTuplesPerPage); : so->currPos.firstItem = 0; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1156 3.89 : 4ac641: 41 c7 44 24 64 00 00 movl $0x0,0x64(%r12) 0.00 : 4ac648: 00 00 : so->currPos.lastItem = itemIndex - 1; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1157 1.09 : 4ac64a: 41 89 44 24 68 mov %eax,0x68(%r12) : so->currPos.itemIndex = 0; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1158 0.62 : 4ac64f: 41 c7 44 24 6c 00 00 movl $0x0,0x6c(%r12) 0.00 : 4ac656: 00 00 0.00 : 4ac658: e9 ed fe ff ff jmpq 4ac54a <_bt_readpage+0x16a> 0.00 : 4ac65d: 0f 1f 00 nopl (%rax) : bool continuescan; : : /* we must have the buffer pinned and locked */ : Assert(BufferIsValid(so->currPos.buf)); : : page = BufferGetPage(so->currPos.buf); 0.00 : 4ac660: f7 d0 not %eax 0.00 : 4ac662: 48 63 d0 movslq %eax,%rdx 0.00 : 4ac665: 48 8b 05 ac 0a 6d 00 mov 0x6d0aac(%rip),%rax # b7d118 0.00 : 4ac66c: 4c 8b 3c d0 mov (%rax,%rdx,8),%r15 0.00 : 4ac670: e9 a7 fd ff ff jmpq 4ac41c <_bt_readpage+0x3c> 0.00 : 4ac675: 0f 1f 00 nopl (%rax) : /* load items[] in ascending order */ : itemIndex = 0; : : offnum = Max(offnum, minoff); : : while (offnum <= maxoff) 0.00 : 4ac678: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 4ac67c: eb c3 jmp 4ac641 <_bt_readpage+0x261> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 26.45 ??:0 14.39 ??:0 9.51 ??:0 8.58 ??:0 6.50 ??:0 6.03 ??:0 5.80 ??:0 5.80 ??:0 4.41 ??:0 4.18 ??:0 3.02 ??:0 2.09 ??:0 2.09 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000114d00 <__strlen_sse42>: ??:0 8.58 : 114d00: 66 0f ef d2 pxor %xmm2,%xmm2 ??:0 3.02 : 114d04: 48 89 f9 mov %rdi,%rcx ??:0 9.51 : 114d07: 49 89 f8 mov %rdi,%r8 5.80 : 114d0a: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi ??:0 2.09 : 114d0e: 66 0f 6f ca movdqa %xmm2,%xmm1 4.18 : 114d12: 66 0f 74 17 pcmpeqb (%rdi),%xmm2 ??:0 26.45 : 114d16: 83 ce ff or $0xffffffff,%esi 0.00 : 114d19: 48 29 f9 sub %rdi,%rcx 0.23 : 114d1c: d3 e6 shl %cl,%esi 5.80 : 114d1e: 66 0f d7 d2 pmovmskb %xmm2,%edx 6.03 : 114d22: 21 f2 and %esi,%edx 0.00 : 114d24: 75 15 jne 114d3b <__strlen_sse42+0x3b> 0.46 : 114d26: 66 0f 3a 63 4f 10 08 pcmpistri $0x8,0x10(%rdi),%xmm1 ??:0 2.09 : 114d2d: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 114d31: 75 f3 jne 114d26 <__strlen_sse42+0x26> 0.23 : 114d33: 48 8d 04 0f lea (%rdi,%rcx,1),%rax 0.00 : 114d37: 4c 29 c0 sub %r8,%rax 0.00 : 114d3a: c3 retq ??:0 6.50 : 114d3b: 4c 29 c7 sub %r8,%rdi 0.23 : 114d3e: 0f bc c2 bsf %edx,%eax 18.79 : 114d41: 48 01 f8 add %rdi,%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.57 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:452 11.78 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:484 8.76 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:452 5.57 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:470 4.30 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 3.03 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 2.87 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:462 2.87 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:485 2.71 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 2.39 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 2.39 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:462 2.39 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:476 2.07 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:481 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:485 1.59 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 1.59 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 1.43 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:485 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:452 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:452 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:481 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:481 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:485 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:476 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:470 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:473 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5630 : : * or NULL if no more matching tuples exist. : * ---------------- : */ : ItemPointer : index_getnext_tid(IndexScanDesc scan, ScanDirection direction) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 2.71 : 4a5630: 55 push %rbp 2.39 : 4a5631: 48 89 e5 mov %rsp,%rbp 3.03 : 4a5634: 48 89 5d e8 mov %rbx,-0x18(%rbp) 4.30 : 4a5638: 4c 89 65 f0 mov %r12,-0x10(%rbp) 1.75 : 4a563c: 48 89 fb mov %rdi,%rbx 1.75 : 4a563f: 4c 89 6d f8 mov %r13,-0x8(%rbp) 1.59 : 4a5643: 48 83 ec 20 sub $0x20,%rsp : FmgrInfo *procedure; : bool found; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amgettuple); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:452 0.96 : 4a5647: 48 8b 57 08 mov 0x8(%rdi),%rdx : * or NULL if no more matching tuples exist. : * ---------------- : */ : ItemPointer : index_getnext_tid(IndexScanDesc scan, ScanDirection direction) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:447 1.59 : 4a564b: 41 89 f5 mov %esi,%r13d : FmgrInfo *procedure; : bool found; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amgettuple); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:452 1.11 : 4a564e: 48 8b 82 c0 00 00 00 mov 0xc0(%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:452 8.76 : 4a5655: 44 8b 40 68 mov 0x68(%rax),%r8d 30.57 : 4a5659: 4c 8d 60 60 lea 0x60(%rax),%r12 0.32 : 4a565d: 45 85 c0 test %r8d,%r8d 0.00 : 4a5660: 75 1d jne 4a567f 0.00 : 4a5662: 48 8b 82 b0 00 00 00 mov 0xb0(%rdx),%rax 0.00 : 4a5669: 8b 78 5c mov 0x5c(%rax),%edi 0.00 : 4a566c: 85 ff test %edi,%edi 0.00 : 4a566e: 74 69 je 4a56d9 0.00 : 4a5670: 48 8b 92 b8 00 00 00 mov 0xb8(%rdx),%rdx 0.00 : 4a5677: 4c 89 e6 mov %r12,%rsi 0.00 : 4a567a: e8 d1 a9 2d 00 callq 780050 : * The AM's amgettuple proc finds the next index entry matching the scan : * keys, and puts the TID into scan->xs_ctup.t_self. It should also set : * scan->xs_recheck and possibly scan->xs_itup, though we pay no attention : * to those fields here. : */ : found = DatumGetBool(FunctionCall2(procedure, /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:462 2.39 : 4a567f: 31 f6 xor %esi,%esi 0.48 : 4a5681: 44 89 e9 mov %r13d,%ecx 0.32 : 4a5684: 48 89 da mov %rbx,%rdx 0.00 : 4a5687: 4c 89 e7 mov %r12,%rdi 2.87 : 4a568a: e8 a1 89 2d 00 callq 77e030 : : /* Reset kill flag immediately for safety */ : scan->kill_prior_tuple = false; : : /* If we're out of index entries, we're done */ : if (!found) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:470 5.57 : 4a568f: 84 c0 test %al,%al : found = DatumGetBool(FunctionCall2(procedure, : PointerGetDatum(scan), : Int32GetDatum(direction))); : : /* Reset kill flag immediately for safety */ : scan->kill_prior_tuple = false; 0.16 : 4a5691: c6 43 31 00 movb $0x0,0x31(%rbx) : : /* If we're out of index entries, we're done */ : if (!found) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:470 0.64 : 4a5695: 74 29 je 4a56c0 : scan->xs_cbuf = InvalidBuffer; : } : return NULL; : } : : pgstat_count_index_tuples(scan->indexRelation, 1); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:481 0.80 : 4a5697: 48 8b 43 08 mov 0x8(%rbx),%rax 2.07 : 4a569b: 48 8b 80 38 01 00 00 mov 0x138(%rax),%rax 0.80 : 4a56a2: 48 85 c0 test %rax,%rax 0.00 : 4a56a5: 74 05 je 4a56ac 0.16 : 4a56a7: 48 83 40 18 01 addq $0x1,0x18(%rax) : : /* Return the TID of the tuple we found. */ : return &scan->xs_ctup.t_self; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:484 11.78 : 4a56ac: 48 8d 43 54 lea 0x54(%rbx),%rax : } 0.00 : 4a56b0: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:485 0.80 : 4a56b4: 4c 8b 65 f0 mov -0x10(%rbp),%r12 1.75 : 4a56b8: 4c 8b 6d f8 mov -0x8(%rbp),%r13 2.87 : 4a56bc: c9 leaveq 1.43 : 4a56bd: c3 retq 0.00 : 4a56be: 66 90 xchg %ax,%ax : : /* If we're out of index entries, we're done */ : if (!found) : { : /* ... but first, release any held pin on a heap page */ : if (BufferIsValid(scan->xs_cbuf)) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:473 0.64 : 4a56c0: 8b 7b 68 mov 0x68(%rbx),%edi 0.48 : 4a56c3: 31 c0 xor %eax,%eax 0.00 : 4a56c5: 85 ff test %edi,%edi 0.00 : 4a56c7: 74 e7 je 4a56b0 : { : ReleaseBuffer(scan->xs_cbuf); 0.00 : 4a56c9: e8 92 f7 1c 00 callq 674e60 : scan->xs_cbuf = InvalidBuffer; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:476 2.39 : 4a56ce: c7 43 68 00 00 00 00 movl $0x0,0x68(%rbx) 0.80 : 4a56d5: 31 c0 xor %eax,%eax 0.00 : 4a56d7: eb d7 jmp 4a56b0 : { : FmgrInfo *procedure; : bool found; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amgettuple); 0.00 : 4a56d9: ba 50 3c 7b 00 mov $0x7b3c50,%edx 0.00 : 4a56de: be c4 01 00 00 mov $0x1c4,%esi 0.00 : 4a56e3: bf 33 3b 7b 00 mov $0x7b3b33,%edi 0.00 : 4a56e8: e8 33 5d 2d 00 callq 77b420 0.00 : 4a56ed: ba 8e 3b 7b 00 mov $0x7b3b8e,%edx 0.00 : 4a56f2: be 48 3b 7b 00 mov $0x7b3b48,%esi 0.00 : 4a56f7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a56fc: 31 c0 xor %eax,%eax 0.00 : 4a56fe: e8 2d 5b 2d 00 callq 77b230 0.00 : 4a5703: e8 c8 3d fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1083 21.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1075 13.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1070 4.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1072 4.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1082 4.15 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1070 3.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1083 3.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1092 3.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1090 3.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1082 3.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1082 2.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1092 2.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1090 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1092 1.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1072 0.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1075 0.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1070 0.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1092 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b2630 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalParamExec(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1070 13.49 : 5b2630: 55 push %rbp : Param *expression = (Param *) exprstate->expr; : int thisParamId = expression->paramid; : ParamExecData *prm; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1075 0.87 : 5b2631: 48 85 c9 test %rcx,%rcx : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalParamExec(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { 0.17 : 5b2634: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1070 4.15 : 5b2637: 41 54 push %r12 0.87 : 5b2639: 49 89 d4 mov %rdx,%r12 0.00 : 5b263c: 53 push %rbx : Param *expression = (Param *) exprstate->expr; : int thisParamId = expression->paramid; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1072 1.04 : 5b263d: 48 8b 47 08 mov 0x8(%rdi),%rax 4.67 : 5b2641: 8b 40 08 mov 0x8(%rax),%eax : ParamExecData *prm; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1075 21.63 : 5b2644: 74 06 je 5b264c : *isDone = ExprSingleResult; 0.00 : 5b2646: c7 01 00 00 00 00 movl $0x0,(%rcx) : : /* : * PARAM_EXEC params (internal executor parameters) are stored in the : * ecxt_param_exec_vals array, and can be accessed by array index. : */ : prm = &(econtext->ecxt_param_exec_vals[thisParamId]); 0.17 : 5b264c: 48 98 cltq /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1082 4.33 : 5b264e: 48 8d 04 40 lea (%rax,%rax,2),%rax 3.11 : 5b2652: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 5b2659: 00 3.11 : 5b265a: 48 03 5e 30 add 0x30(%rsi),%rbx : if (prm->execPlan != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1083 3.81 : 5b265e: 48 8b 3b mov (%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1083 24.57 : 5b2661: 48 85 ff test %rdi,%rdi 0.00 : 5b2664: 74 05 je 5b266b : { : /* Parameter not evaluated yet, so go do it */ : ExecSetParamPlan(prm->execPlan, econtext); 0.00 : 5b2666: e8 f5 5a 01 00 callq 5c8160 : /* ExecSetParamPlan should have processed this param... */ : Assert(prm->execPlan == NULL); : } : *isNull = prm->isnull; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1090 3.46 : 5b266b: 0f b6 43 10 movzbl 0x10(%rbx),%eax 2.08 : 5b266f: 41 88 04 24 mov %al,(%r12) 0.35 : 5b2673: 48 8b 43 08 mov 0x8(%rbx),%rax : return prm->value; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1092 0.69 : 5b2677: 5b pop %rbx 2.42 : 5b2678: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1092 5.02 : 5b267a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.36 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:645 10.79 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:660 9.44 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 9.21 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 8.76 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:719 4.94 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:689 4.49 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:723 4.04 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:655 3.82 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:647 2.70 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:727 2.02 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:645 2.02 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:646 2.02 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:688 1.80 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 1.80 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:717 1.80 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:726 1.57 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:688 1.57 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:726 1.35 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:657 1.35 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:693 1.12 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:645 1.12 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 0.90 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:701 0.90 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:711 0.90 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:723 0.90 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:727 0.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:660 0.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3350 : : * be examined, but the condition must be rechecked anyway. (For ease of : * testing, recheck is always set true when ntuples < 0.) : */ : TBMIterateResult * : tbm_iterate(TBMIterator *iterator) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:645 2.02 : 5e3350: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:645 12.36 : 5e3351: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:645 1.12 : 5e3354: 53 push %rbx : TIDBitmap *tbm = iterator->tbm; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:646 2.02 : 5e3355: 4c 8b 1f mov (%rdi),%r11 : : /* : * If lossy chunk pages remain, make sure we've advanced schunkptr/ : * schunkbit to the next set bit. : */ : while (iterator->schunkptr < tbm->nchunks) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:655 4.04 : 5e3358: 44 8b 57 0c mov 0xc(%rdi),%r10d : */ : TBMIterateResult * : tbm_iterate(TBMIterator *iterator) : { : TIDBitmap *tbm = iterator->tbm; : TBMIterateResult *output = &(iterator->output); /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:647 3.82 : 5e335c: 48 8d 5f 14 lea 0x14(%rdi),%rbx : : /* : * If lossy chunk pages remain, make sure we've advanced schunkptr/ : * schunkbit to the next set bit. : */ : while (iterator->schunkptr < tbm->nchunks) 0.00 : 5e3360: 45 3b 53 2c cmp 0x2c(%r11),%r10d 0.00 : 5e3364: 0f 8d 9f 00 00 00 jge 5e3409 : while (schunkbit < PAGES_PER_CHUNK) : { : int wordnum = WORDNUM(schunkbit); : int bitnum = BITNUM(schunkbit); : : if ((chunk->words[wordnum] & ((bitmapword) 1 << bitnum)) != 0) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 9.21 : 5e336a: 41 b9 01 00 00 00 mov $0x1,%r9d : * schunkbit to the next set bit. : */ : while (iterator->schunkptr < tbm->nchunks) : { : PagetableEntry *chunk = tbm->schunks[iterator->schunkptr]; : int schunkbit = iterator->schunkbit; 0.00 : 5e3370: 8b 77 10 mov 0x10(%rdi),%esi : * If lossy chunk pages remain, make sure we've advanced schunkptr/ : * schunkbit to the next set bit. : */ : while (iterator->schunkptr < tbm->nchunks) : { : PagetableEntry *chunk = tbm->schunks[iterator->schunkptr]; 0.22 : 5e3373: 49 8b 43 70 mov 0x70(%r11),%rax /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:657 1.35 : 5e3377: 49 63 d2 movslq %r10d,%rdx : int schunkbit = iterator->schunkbit; : : while (schunkbit < PAGES_PER_CHUNK) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:660 0.67 : 5e337a: 81 fe ff 00 00 00 cmp $0xff,%esi : * If lossy chunk pages remain, make sure we've advanced schunkptr/ : * schunkbit to the next set bit. : */ : while (iterator->schunkptr < tbm->nchunks) : { : PagetableEntry *chunk = tbm->schunks[iterator->schunkptr]; 0.22 : 5e3380: 4c 8b 04 d0 mov (%rax,%rdx,8),%r8 : int schunkbit = iterator->schunkbit; : : while (schunkbit < PAGES_PER_CHUNK) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:660 10.79 : 5e3384: 7f 68 jg 5e33ee : { : int wordnum = WORDNUM(schunkbit); : int bitnum = BITNUM(schunkbit); : : if ((chunk->words[wordnum] & ((bitmapword) 1 << bitnum)) != 0) 0.00 : 5e3386: 8d 56 1f lea 0x1f(%rsi),%edx 0.22 : 5e3389: 85 f6 test %esi,%esi 0.00 : 5e338b: 89 f0 mov %esi,%eax /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 0.67 : 5e338d: 0f 49 d6 cmovns %esi,%edx 0.00 : 5e3390: c1 f8 1f sar $0x1f,%eax 0.00 : 5e3393: c1 e8 1b shr $0x1b,%eax 1.80 : 5e3396: c1 fa 05 sar $0x5,%edx 0.00 : 5e3399: 8d 0c 06 lea (%rsi,%rax,1),%ecx 0.00 : 5e339c: 48 63 d2 movslq %edx,%rdx 0.00 : 5e339f: 83 e1 1f and $0x1f,%ecx 0.45 : 5e33a2: 29 c1 sub %eax,%ecx 0.00 : 5e33a4: 44 89 c8 mov %r9d,%eax 0.22 : 5e33a7: d3 e0 shl %cl,%eax 1.12 : 5e33a9: 41 85 44 90 08 test %eax,0x8(%r8,%rdx,4) 0.00 : 5e33ae: 74 33 je 5e33e3 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:665 9.44 : 5e33b0: eb 6e jmp 5e3420 0.00 : 5e33b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e33b8: 89 f0 mov %esi,%eax 0.00 : 5e33ba: c1 f8 1f sar $0x1f,%eax 0.00 : 5e33bd: c1 e8 1b shr $0x1b,%eax 0.00 : 5e33c0: 8d 0c 06 lea (%rsi,%rax,1),%ecx 0.00 : 5e33c3: 83 e1 1f and $0x1f,%ecx 0.00 : 5e33c6: 29 c1 sub %eax,%ecx 0.00 : 5e33c8: 44 89 c8 mov %r9d,%eax 0.00 : 5e33cb: d3 e0 shl %cl,%eax 0.00 : 5e33cd: 85 f6 test %esi,%esi 0.00 : 5e33cf: 89 c1 mov %eax,%ecx 0.00 : 5e33d1: 8d 46 1f lea 0x1f(%rsi),%eax 0.00 : 5e33d4: 0f 49 c6 cmovns %esi,%eax 0.00 : 5e33d7: c1 f8 05 sar $0x5,%eax 0.00 : 5e33da: 48 98 cltq 0.00 : 5e33dc: 41 85 4c 80 08 test %ecx,0x8(%r8,%rax,4) 0.00 : 5e33e1: 75 3d jne 5e3420 : break; : schunkbit++; 0.00 : 5e33e3: 83 c6 01 add $0x1,%esi : while (iterator->schunkptr < tbm->nchunks) : { : PagetableEntry *chunk = tbm->schunks[iterator->schunkptr]; : int schunkbit = iterator->schunkbit; : : while (schunkbit < PAGES_PER_CHUNK) 0.00 : 5e33e6: 81 fe 00 01 00 00 cmp $0x100,%esi 0.00 : 5e33ec: 75 ca jne 5e33b8 : { : iterator->schunkbit = schunkbit; : break; : } : /* advance to next chunk */ : iterator->schunkptr++; 0.00 : 5e33ee: 41 8d 42 01 lea 0x1(%r10),%eax : iterator->schunkbit = 0; 0.00 : 5e33f2: c7 47 10 00 00 00 00 movl $0x0,0x10(%rdi) : { : iterator->schunkbit = schunkbit; : break; : } : /* advance to next chunk */ : iterator->schunkptr++; 0.00 : 5e33f9: 89 47 0c mov %eax,0xc(%rdi) : : /* : * If lossy chunk pages remain, make sure we've advanced schunkptr/ : * schunkbit to the next set bit. : */ : while (iterator->schunkptr < tbm->nchunks) 0.00 : 5e33fc: 41 3b 43 2c cmp 0x2c(%r11),%eax 0.00 : 5e3400: 41 89 c2 mov %eax,%r10d 0.00 : 5e3403: 0f 8c 67 ff ff ff jl 5e3370 : iterator->schunkbit++; : return output; : } : } : : if (iterator->spageptr < tbm->npages) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:701 0.90 : 5e3409: 8b 77 08 mov 0x8(%rdi),%esi 0.00 : 5e340c: 41 3b 73 28 cmp 0x28(%r11),%esi 0.00 : 5e3410: 7c 44 jl 5e3456 0.00 : 5e3412: 31 db xor %ebx,%ebx 0.00 : 5e3414: e9 c9 00 00 00 jmpq 5e34e2 0.00 : 5e3419: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : schunkbit++; : } : if (schunkbit < PAGES_PER_CHUNK) : { : iterator->schunkbit = schunkbit; 0.00 : 5e3420: 89 77 10 mov %esi,0x10(%rdi) : : /* : * If both chunk and per-page data remain, must output the numerically : * earlier page. : */ : if (iterator->schunkptr < tbm->nchunks) 0.22 : 5e3423: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5e3426: 41 3b 43 2c cmp 0x2c(%r11),%eax 0.00 : 5e342a: 7d dd jge 5e3409 : { : PagetableEntry *chunk = tbm->schunks[iterator->schunkptr]; : BlockNumber chunk_blockno; : : chunk_blockno = chunk->blockno + iterator->schunkbit; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:688 2.02 : 5e342c: 49 8b 53 70 mov 0x70(%r11),%rdx 0.00 : 5e3430: 48 98 cltq 0.00 : 5e3432: 89 f1 mov %esi,%ecx : if (iterator->spageptr >= tbm->npages || 0.00 : 5e3434: 8b 77 08 mov 0x8(%rdi),%esi : if (iterator->schunkptr < tbm->nchunks) : { : PagetableEntry *chunk = tbm->schunks[iterator->schunkptr]; : BlockNumber chunk_blockno; : : chunk_blockno = chunk->blockno + iterator->schunkbit; 1.57 : 5e3437: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 5e343b: 03 08 add (%rax),%ecx : if (iterator->spageptr >= tbm->npages || /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:689 4.94 : 5e343d: 41 3b 73 28 cmp 0x28(%r11),%esi 0.00 : 5e3441: 0f 8d 89 00 00 00 jge 5e34d0 0.00 : 5e3447: 49 8b 53 68 mov 0x68(%r11),%rdx 0.00 : 5e344b: 48 63 c6 movslq %esi,%rax 0.00 : 5e344e: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 5e3452: 3b 08 cmp (%rax),%ecx 0.00 : 5e3454: 72 7a jb 5e34d0 : PagetableEntry *page; : int ntuples; : int wordnum; : : /* In ONE_PAGE state, we don't allocate an spages[] array */ : if (tbm->status == TBM_ONE_PAGE) 0.00 : 5e3456: 41 83 7b 10 01 cmpl $0x1,0x10(%r11) : page = &tbm->entry1; 0.22 : 5e345b: 49 8d 53 34 lea 0x34(%r11),%rdx : PagetableEntry *page; : int ntuples; : int wordnum; : : /* In ONE_PAGE state, we don't allocate an spages[] array */ : if (tbm->status == TBM_ONE_PAGE) 0.00 : 5e345f: 74 0b je 5e346c : page = &tbm->entry1; : else : page = tbm->spages[iterator->spageptr]; 0.00 : 5e3461: 49 8b 43 68 mov 0x68(%r11),%rax 0.00 : 5e3465: 48 63 d6 movslq %esi,%rdx 0.00 : 5e3468: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:711 0.90 : 5e346c: 45 31 c0 xor %r8d,%r8d 0.00 : 5e346f: 45 31 c9 xor %r9d,%r9d 0.00 : 5e3472: 41 ba 01 00 00 00 mov $0x1,%r10d 0.00 : 5e3478: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e347f: 00 : : /* scan bitmap to extract individual offset numbers */ : ntuples = 0; : for (wordnum = 0; wordnum < WORDS_PER_PAGE; wordnum++) : { : bitmapword w = page->words[wordnum]; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:717 1.80 : 5e3480: 42 8b 4c 0a 08 mov 0x8(%rdx,%r9,1),%ecx : : if (w != 0) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:719 8.76 : 5e3485: 85 c9 test %ecx,%ecx 0.00 : 5e3487: 74 1f je 5e34a8 0.45 : 5e3489: 44 89 d6 mov %r10d,%esi 0.00 : 5e348c: eb 05 jmp 5e3493 0.00 : 5e348e: 66 90 xchg %ax,%ax : : while (w != 0) : { : if (w & 1) : output->offsets[ntuples++] = (OffsetNumber) off; : off++; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:727 2.70 : 5e3490: 83 c6 01 add $0x1,%esi : { : int off = wordnum * BITS_PER_BITMAPWORD + 1; : : while (w != 0) : { : if (w & 1) 0.00 : 5e3493: f6 c1 01 test $0x1,%cl 0.00 : 5e3496: 74 0c je 5e34a4 : output->offsets[ntuples++] = (OffsetNumber) off; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:726 1.80 : 5e3498: 49 63 c0 movslq %r8d,%rax 1.57 : 5e349b: 41 83 c0 01 add $0x1,%r8d 0.22 : 5e349f: 66 89 74 47 1e mov %si,0x1e(%rdi,%rax,2) : : if (w != 0) : { : int off = wordnum * BITS_PER_BITMAPWORD + 1; : : while (w != 0) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:723 4.49 : 5e34a4: d1 e9 shr %ecx 0.90 : 5e34a6: 75 e8 jne 5e3490 : { : if (w & 1) : output->offsets[ntuples++] = (OffsetNumber) off; : off++; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:727 0.90 : 5e34a8: 49 83 c1 04 add $0x4,%r9 0.00 : 5e34ac: 41 83 c2 20 add $0x20,%r10d : else : page = tbm->spages[iterator->spageptr]; : : /* scan bitmap to extract individual offset numbers */ : ntuples = 0; : for (wordnum = 0; wordnum < WORDS_PER_PAGE; wordnum++) 0.45 : 5e34b0: 49 83 f9 28 cmp $0x28,%r9 0.00 : 5e34b4: 75 ca jne 5e3480 : off++; : w >>= 1; : } : } : } : output->blockno = page->blockno; 0.22 : 5e34b6: 8b 02 mov (%rdx),%eax : output->ntuples = ntuples; 0.00 : 5e34b8: 44 89 47 18 mov %r8d,0x18(%rdi) : off++; : w >>= 1; : } : } : } : output->blockno = page->blockno; 0.00 : 5e34bc: 89 47 14 mov %eax,0x14(%rdi) : output->ntuples = ntuples; : output->recheck = page->recheck; 0.00 : 5e34bf: 0f b6 42 05 movzbl 0x5(%rdx),%eax : iterator->spageptr++; 0.00 : 5e34c3: 83 47 08 01 addl $0x1,0x8(%rdi) : } : } : } : output->blockno = page->blockno; : output->ntuples = ntuples; : output->recheck = page->recheck; 0.00 : 5e34c7: 88 47 1c mov %al,0x1c(%rdi) : return output; : } : : /* Nothing more in the bitmap */ : return NULL; : } 0.22 : 5e34ca: 48 89 d8 mov %rbx,%rax 0.00 : 5e34cd: 5b pop %rbx 0.22 : 5e34ce: c9 leaveq 0.00 : 5e34cf: c3 retq : { : /* Return a lossy page indicator from the chunk */ : output->blockno = chunk_blockno; : output->ntuples = -1; : output->recheck = true; : iterator->schunkbit++; 0.22 : 5e34d0: 83 47 10 01 addl $0x1,0x10(%rdi) : chunk_blockno = chunk->blockno + iterator->schunkbit; : if (iterator->spageptr >= tbm->npages || : chunk_blockno < tbm->spages[iterator->spageptr]->blockno) : { : /* Return a lossy page indicator from the chunk */ : output->blockno = chunk_blockno; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:693 1.35 : 5e34d4: 89 4f 14 mov %ecx,0x14(%rdi) : output->ntuples = -1; 0.22 : 5e34d7: c7 47 18 ff ff ff ff movl $0xffffffff,0x18(%rdi) : output->recheck = true; 0.22 : 5e34de: c6 47 1c 01 movb $0x1,0x1c(%rdi) : return output; : } : : /* Nothing more in the bitmap */ : return NULL; : } 0.00 : 5e34e2: 48 89 d8 mov %rbx,%rax 0.00 : 5e34e5: 5b pop %rbx 0.67 : 5e34e6: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.35 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:99 6.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:111 5.99 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:60 5.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:99 3.99 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:60 3.99 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:101 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:60 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 2.72 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:124 2.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:110 2.36 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:112 2.36 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:138 2.18 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:99 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 1.81 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:99 1.81 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 1.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:108 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:126 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:64 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:64 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:67 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:101 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:108 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:125 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:135 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:124 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:128 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:138 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:64 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:108 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:108 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:111 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:128 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:138 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:60 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:138 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:108 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:110 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:111 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:138 0.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:138 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ad100 <_bt_search>: : * any incomplete splits encountered during the search will be finished. : */ : BTStack : _bt_search(Relation rel, int keysz, ScanKey scankey, bool nextkey, : Buffer *bufP, int access) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:60 5.99 : 4ad100: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:60 3.99 : 4ad101: 48 89 e5 mov %rsp,%rbp 0.00 : 4ad104: 41 57 push %r15 3.45 : 4ad106: 41 56 push %r14 0.73 : 4ad108: 41 55 push %r13 0.00 : 4ad10a: 41 54 push %r12 0.00 : 4ad10c: 41 89 cc mov %ecx,%r12d 0.00 : 4ad10f: 53 push %rbx 0.18 : 4ad110: 44 89 cb mov %r9d,%ebx 0.18 : 4ad113: 48 83 ec 48 sub $0x48,%rsp 0.36 : 4ad117: 89 75 bc mov %esi,-0x44(%rbp) : BTStack stack_in = NULL; : : /* Get the root page to start with */ : *bufP = _bt_getroot(rel, access); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:64 1.27 : 4ad11a: 44 89 ce mov %r9d,%esi : * any incomplete splits encountered during the search will be finished. : */ : BTStack : _bt_search(Relation rel, int keysz, ScanKey scankey, bool nextkey, : Buffer *bufP, int access) : { 0.00 : 4ad11d: 48 89 7d c0 mov %rdi,-0x40(%rbp) 0.36 : 4ad121: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : 4ad125: 4c 89 45 a8 mov %r8,-0x58(%rbp) : BTStack stack_in = NULL; : : /* Get the root page to start with */ : *bufP = _bt_getroot(rel, access); 0.91 : 4ad129: e8 f2 da ff ff callq 4aac20 <_bt_getroot> 0.00 : 4ad12e: 89 c6 mov %eax,%esi 0.00 : 4ad130: 48 8b 45 a8 mov -0x58(%rbp),%rax : : /* If index is empty and access = BT_READ, no root page is created. */ : if (!BufferIsValid(*bufP)) 0.00 : 4ad134: 85 f6 test %esi,%esi : Buffer *bufP, int access) : { : BTStack stack_in = NULL; : : /* Get the root page to start with */ : *bufP = _bt_getroot(rel, access); 1.27 : 4ad136: 89 30 mov %esi,(%rax) : /* drop the read lock on the parent page, acquire one on the child */ : *bufP = _bt_relandgetbuf(rel, *bufP, blkno, BT_READ); : : /* okay, all set to move down a level */ : stack_in = new_stack; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:135 1.09 : 4ad138: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 4ad13f: 00 : : /* Get the root page to start with */ : *bufP = _bt_getroot(rel, access); : : /* If index is empty and access = BT_READ, no root page is created. */ : if (!BufferIsValid(*bufP)) 0.00 : 4ad140: 0f 84 2a 01 00 00 je 4ad270 <_bt_search+0x170> 0.18 : 4ad146: 31 c0 xor %eax,%eax 0.36 : 4ad148: 83 fb 02 cmp $0x2,%ebx 0.18 : 4ad14b: 45 0f be e4 movsbl %r12b,%r12d 0.00 : 4ad14f: 0f 94 c0 sete %al 0.00 : 4ad152: 44 89 65 d0 mov %r12d,-0x30(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:67 1.27 : 4ad156: 89 45 d4 mov %eax,-0x2c(%rbp) 0.18 : 4ad159: e9 b5 00 00 00 jmpq 4ad213 <_bt_search+0x113> 0.00 : 4ad15e: 66 90 xchg %ax,%ax : *bufP = _bt_moveright(rel, *bufP, keysz, scankey, nextkey, : (access == BT_WRITE), stack_in, : BT_READ); : : /* if this is a leaf page, we're done */ : page = BufferGetPage(*bufP); 0.18 : 4ad160: 8d 46 ff lea -0x1(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:99 2.00 : 4ad163: 4c 63 e0 movslq %eax,%r12 0.00 : 4ad166: 49 c1 e4 0d shl $0xd,%r12 1.81 : 4ad16a: 4c 03 25 87 29 71 00 add 0x712987(%rip),%r12 # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (P_ISLEAF(opaque)) 0.18 : 4ad171: 41 0f b7 44 24 10 movzwl 0x10(%r12),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:101 1.27 : 4ad177: 41 f6 44 04 0c 01 testb $0x1,0xc(%r12,%rax,1) 3.99 : 4ad17d: 0f 85 ed 00 00 00 jne 4ad270 <_bt_search+0x170> : : /* : * Find the appropriate item on the internal page, and get the child : * page that it points to. : */ : offnum = _bt_binsrch(rel, *bufP, keysz, scankey, nextkey); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:108 1.63 : 4ad183: 44 8b 45 d0 mov -0x30(%rbp),%r8d 0.91 : 4ad187: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 4ad18b: 8b 55 bc mov -0x44(%rbp),%edx 0.54 : 4ad18e: 48 8b 7d c0 mov -0x40(%rbp),%rdi 1.27 : 4ad192: e8 c9 fc ff ff callq 4ace60 <_bt_binsrch> 0.91 : 4ad197: 41 89 c7 mov %eax,%r15d : itemid = PageGetItemId(page, offnum); : itup = (IndexTuple) PageGetItem(page, itemid); 0.00 : 4ad19a: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ad19d: 41 0f b7 5c 84 14 movzwl 0x14(%r12,%rax,4),%ebx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:110 2.54 : 4ad1a3: 81 e3 ff 7f 00 00 and $0x7fff,%ebx 0.54 : 4ad1a9: 49 8d 1c 1c lea (%r12,%rbx,1),%rbx : blkno = ItemPointerGetBlockNumber(&(itup->t_tid)); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:111 0.54 : 4ad1ad: 44 0f b7 2b movzwl (%rbx),%r13d /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:111 6.17 : 4ad1b1: 0f b7 43 02 movzwl 0x2(%rbx),%eax 0.18 : 4ad1b5: 41 c1 e5 10 shl $0x10,%r13d /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:111 0.91 : 4ad1b9: 41 09 c5 or %eax,%r13d : par_blkno = BufferGetBlockNumber(*bufP); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:112 2.36 : 4ad1bc: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 4ad1c0: 8b 38 mov (%rax),%edi 0.18 : 4ad1c2: e8 69 6e 1c 00 callq 674030 : * moves right while we're working lower in the tree. See the paper : * by Lehman and Yao for how this is detected and handled. (We use the : * child link to disambiguate duplicate keys in the index -- Lehman : * and Yao disallow duplicate keys.) : */ : new_stack = (BTStack) palloc(sizeof(BTStackData)); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:124 2.72 : 4ad1c7: bf 18 00 00 00 mov $0x18,%edi : */ : offnum = _bt_binsrch(rel, *bufP, keysz, scankey, nextkey); : itemid = PageGetItemId(page, offnum); : itup = (IndexTuple) PageGetItem(page, itemid); : blkno = ItemPointerGetBlockNumber(&(itup->t_tid)); : par_blkno = BufferGetBlockNumber(*bufP); 0.18 : 4ad1cc: 41 89 c6 mov %eax,%r14d : * moves right while we're working lower in the tree. See the paper : * by Lehman and Yao for how this is detected and handled. (We use the : * child link to disambiguate duplicate keys in the index -- Lehman : * and Yao disallow duplicate keys.) : */ : new_stack = (BTStack) palloc(sizeof(BTStackData)); 0.00 : 4ad1cf: e8 7c bb 2e 00 callq 798d50 : new_stack->bts_blkno = par_blkno; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:125 1.27 : 4ad1d4: 44 89 30 mov %r14d,(%rax) : new_stack->bts_offset = offnum; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:126 1.45 : 4ad1d7: 66 44 89 78 04 mov %r15w,0x4(%rax) : * moves right while we're working lower in the tree. See the paper : * by Lehman and Yao for how this is detected and handled. (We use the : * child link to disambiguate duplicate keys in the index -- Lehman : * and Yao disallow duplicate keys.) : */ : new_stack = (BTStack) palloc(sizeof(BTStackData)); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:124 1.09 : 4ad1dc: 49 89 c4 mov %rax,%r12 : new_stack->bts_blkno = par_blkno; : new_stack->bts_offset = offnum; : memcpy(&new_stack->bts_btentry, itup, sizeof(IndexTupleData)); 0.00 : 4ad1df: 48 8b 03 mov (%rbx),%rax : new_stack->bts_parent = stack_in; : : /* drop the read lock on the parent page, acquire one on the child */ : *bufP = _bt_relandgetbuf(rel, *bufP, blkno, BT_READ); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 1.45 : 4ad1e2: b9 01 00 00 00 mov $0x1,%ecx 0.18 : 4ad1e7: 44 89 ea mov %r13d,%edx : * and Yao disallow duplicate keys.) : */ : new_stack = (BTStack) palloc(sizeof(BTStackData)); : new_stack->bts_blkno = par_blkno; : new_stack->bts_offset = offnum; : memcpy(&new_stack->bts_btentry, itup, sizeof(IndexTupleData)); 0.36 : 4ad1ea: 49 89 44 24 06 mov %rax,0x6(%r12) : new_stack->bts_parent = stack_in; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:128 0.91 : 4ad1ef: 48 8b 45 c8 mov -0x38(%rbp),%rax 1.09 : 4ad1f3: 49 89 44 24 10 mov %rax,0x10(%r12) : : /* drop the read lock on the parent page, acquire one on the child */ : *bufP = _bt_relandgetbuf(rel, *bufP, blkno, BT_READ); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:131 0.73 : 4ad1f8: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.36 : 4ad1fc: 48 8b 7d c0 mov -0x40(%rbp),%rdi 1.27 : 4ad200: 8b 30 mov (%rax),%esi 1.45 : 4ad202: e8 d9 bd ff ff callq 4a8fe0 <_bt_relandgetbuf> 0.00 : 4ad207: 89 c6 mov %eax,%esi 0.73 : 4ad209: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 4ad20d: 89 30 mov %esi,(%rax) 2.90 : 4ad20f: 4c 89 65 c8 mov %r12,-0x38(%rbp) : * incomplete split on the leaf page we're about to insert to, not on : * any of the upper levels (they is taken care of in _bt_getstackbuf, : * if the leaf page is split and we insert to the parent page). But : * this is a good opportunity to finish splits of internal pages too. : */ : *bufP = _bt_moveright(rel, *bufP, keysz, scankey, nextkey, 0.00 : 4ad213: 48 8b 45 c8 mov -0x38(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:94 2.00 : 4ad217: 44 8b 4d d4 mov -0x2c(%rbp),%r9d 0.73 : 4ad21b: 44 8b 45 d0 mov -0x30(%rbp),%r8d 2.18 : 4ad21f: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 4ad223: 8b 55 bc mov -0x44(%rbp),%edx 0.36 : 4ad226: 48 8b 7d c0 mov -0x40(%rbp),%rdi 1.81 : 4ad22a: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 4ad231: 00 1.09 : 4ad232: 48 89 04 24 mov %rax,(%rsp) 1.09 : 4ad236: e8 35 fd ff ff callq 4acf70 <_bt_moveright> 1.27 : 4ad23b: 89 c6 mov %eax,%esi 0.54 : 4ad23d: 48 8b 45 a8 mov -0x58(%rbp),%rax : (access == BT_WRITE), stack_in, : BT_READ); : : /* if this is a leaf page, we're done */ : page = BufferGetPage(*bufP); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:99 5.63 : 4ad241: 85 f6 test %esi,%esi : * incomplete split on the leaf page we're about to insert to, not on : * any of the upper levels (they is taken care of in _bt_getstackbuf, : * if the leaf page is split and we insert to the parent page). But : * this is a good opportunity to finish splits of internal pages too. : */ : *bufP = _bt_moveright(rel, *bufP, keysz, scankey, nextkey, 0.00 : 4ad243: 89 30 mov %esi,(%rax) : (access == BT_WRITE), stack_in, : BT_READ); : : /* if this is a leaf page, we're done */ : page = BufferGetPage(*bufP); 8.35 : 4ad245: 0f 89 15 ff ff ff jns 4ad160 <_bt_search+0x60> 0.00 : 4ad24b: 89 f0 mov %esi,%eax 0.00 : 4ad24d: 48 8b 15 c4 fe 6c 00 mov 0x6cfec4(%rip),%rdx # b7d118 0.00 : 4ad254: f7 d0 not %eax 0.00 : 4ad256: 48 98 cltq 0.00 : 4ad258: 4c 8b 24 c2 mov (%rdx,%rax,8),%r12 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (P_ISLEAF(opaque)) 0.00 : 4ad25c: 41 0f b7 44 24 10 movzwl 0x10(%r12),%eax 0.00 : 4ad262: 41 f6 44 04 0c 01 testb $0x1,0xc(%r12,%rax,1) 0.00 : 4ad268: 0f 84 15 ff ff ff je 4ad183 <_bt_search+0x83> 0.00 : 4ad26e: 66 90 xchg %ax,%ax : /* okay, all set to move down a level */ : stack_in = new_stack; : } : : return stack_in; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:138 2.36 : 4ad270: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.54 : 4ad274: 48 83 c4 48 add $0x48,%rsp 0.36 : 4ad278: 5b pop %rbx 1.09 : 4ad279: 41 5c pop %r12 0.73 : 4ad27b: 41 5d pop %r13 0.00 : 4ad27d: 41 5e pop %r14 0.18 : 4ad27f: 41 5f pop %r15 1.45 : 4ad281: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 39.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2154 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 15.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 10.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2154 7.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2121 2.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2121 1.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 1.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000740870 : : * : * collate invalid timestamp at the end : */ : int : timestamp_cmp_internal(Timestamp dt1, Timestamp dt2) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2121 7.78 : 740870: 55 push %rbp : #ifdef HAVE_INT64_TIMESTAMP : return (dt1 < dt2) ? -1 : ((dt1 > dt2) ? 1 : 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 20.00 : 740871: 48 39 f7 cmp %rsi,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 1.67 : 740874: b8 ff ff ff ff mov $0xffffffff,%eax : * : * collate invalid timestamp at the end : */ : int : timestamp_cmp_internal(Timestamp dt1, Timestamp dt2) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2121 2.50 : 740879: 48 89 e5 mov %rsp,%rbp : #ifdef HAVE_INT64_TIMESTAMP : return (dt1 < dt2) ? -1 : ((dt1 > dt2) ? 1 : 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 15.56 : 74087c: 7c 06 jl 740884 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2123 1.67 : 74087e: 0f 9f c0 setg %al 0.56 : 740881: 0f b6 c0 movzbl %al,%eax : return -1; : else : return 0; : } : #endif : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:2154 50.28 : 740884: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1474 8.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1466 8.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1469 6.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1469 6.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1493 4.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1464 3.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1464 3.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 3.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1493 3.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 3.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 3.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 3.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1493 2.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 1.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1474 1.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1464 1.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1464 0.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1469 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 0.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1493 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ad430 : : */ : static ExprDoneCond : ExecEvalFuncArgs(FunctionCallInfo fcinfo, : List *argList, : ExprContext *econtext) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1456 2.34 : 5ad430: 55 push %rbp 0.00 : 5ad431: 48 89 e5 mov %rsp,%rbp 3.31 : 5ad434: 41 57 push %r15 2.53 : 5ad436: 49 89 d7 mov %rdx,%r15 0.00 : 5ad439: 41 56 push %r14 3.51 : 5ad43b: 49 89 fe mov %rdi,%r14 0.00 : 5ad43e: 41 55 push %r13 3.31 : 5ad440: 41 54 push %r12 0.58 : 5ad442: 53 push %rbx 3.31 : 5ad443: 48 83 ec 18 sub $0x18,%rsp : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 2.34 : 5ad447: 48 85 f6 test %rsi,%rsi 0.00 : 5ad44a: 0f 84 82 00 00 00 je 5ad4d2 0.00 : 5ad450: 4c 8b 66 08 mov 0x8(%rsi),%r12 : ListCell *arg; : : argIsDone = ExprSingleResult; /* default assumption */ : : i = 0; : foreach(arg, argList) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1464 3.90 : 5ad454: 4d 85 e4 test %r12,%r12 0.00 : 5ad457: 74 79 je 5ad4d2 0.00 : 5ad459: 45 31 ed xor %r13d,%r13d 1.56 : 5ad45c: 31 db xor %ebx,%ebx 0.00 : 5ad45e: 66 90 xchg %ax,%ax : { : ExprState *argstate = (ExprState *) lfirst(arg); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1466 8.38 : 5ad460: 49 8b 04 24 mov (%r12),%rax : ExprDoneCond thisArgIsDone; : : fcinfo->arg[i] = ExecEvalExpr(argstate, 0.19 : 5ad464: 49 8d 94 1e 40 03 00 lea 0x340(%r14,%rbx,1),%rdx 0.00 : 5ad46b: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1469 0.78 : 5ad46c: 48 8d 4d d4 lea -0x2c(%rbp),%rcx 0.39 : 5ad470: 4c 89 fe mov %r15,%rsi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1469 8.38 : 5ad473: 48 89 c7 mov %rax,%rdi 0.00 : 5ad476: ff 50 10 callq *0x10(%rax) 6.82 : 5ad479: 49 89 44 de 20 mov %rax,0x20(%r14,%rbx,8) : econtext, : &fcinfo->argnull[i], : &thisArgIsDone); : : if (thisArgIsDone != ExprSingleResult) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1474 1.75 : 5ad47e: 8b 45 d4 mov -0x2c(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1474 26.12 : 5ad481: 85 c0 test %eax,%eax 0.00 : 5ad483: 74 08 je 5ad48d : /* : * We allow only one argument to have a set value; we'd need much : * more complexity to keep track of multiple set arguments (cf. : * ExecTargetList) and it doesn't seem worth it. : */ : if (argIsDone != ExprSingleResult) 0.00 : 5ad485: 45 85 ed test %r13d,%r13d 0.00 : 5ad488: 75 23 jne 5ad4ad : ereport(ERROR, 0.00 : 5ad48a: 41 89 c5 mov %eax,%r13d : ListCell *arg; : : argIsDone = ExprSingleResult; /* default assumption */ : : i = 0; : foreach(arg, argList) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1464 4.29 : 5ad48d: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5ad492: 48 83 c3 01 add $0x1,%rbx 1.17 : 5ad496: 4d 85 e4 test %r12,%r12 0.00 : 5ad499: 75 c5 jne 5ad460 : } : : Assert(i == fcinfo->nargs); : : return argIsDone; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1493 3.12 : 5ad49b: 48 83 c4 18 add $0x18,%rsp 0.00 : 5ad49f: 44 89 e8 mov %r13d,%eax 0.39 : 5ad4a2: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1493 6.43 : 5ad4a3: 41 5c pop %r12 0.19 : 5ad4a5: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1493 0.58 : 5ad4a7: 41 5e pop %r14 0.39 : 5ad4a9: 41 5f pop %r15 3.51 : 5ad4ab: c9 leaveq 0.39 : 5ad4ac: c3 retq : * We allow only one argument to have a set value; we'd need much : * more complexity to keep track of multiple set arguments (cf. : * ExecTargetList) and it doesn't seem worth it. : */ : if (argIsDone != ExprSingleResult) : ereport(ERROR, 0.00 : 5ad4ad: 45 31 c0 xor %r8d,%r8d 0.00 : 5ad4b0: b9 10 af 88 00 mov $0x88af10,%ecx 0.00 : 5ad4b5: ba cc 05 00 00 mov $0x5cc,%edx 0.00 : 5ad4ba: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5ad4bf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ad4c4: e8 f7 d5 1c 00 callq 77aac0 0.00 : 5ad4c9: 84 c0 test %al,%al 0.00 : 5ad4cb: 75 0a jne 5ad4d7 0.00 : 5ad4cd: e8 fe bf eb ff callq 4694d0 : ListCell *arg; : : argIsDone = ExprSingleResult; /* default assumption */ : : i = 0; : foreach(arg, argList) 0.00 : 5ad4d2: 45 31 ed xor %r13d,%r13d 0.00 : 5ad4d5: eb c4 jmp 5ad49b : * We allow only one argument to have a set value; we'd need much : * more complexity to keep track of multiple set arguments (cf. : * ExecTargetList) and it doesn't seem worth it. : */ : if (argIsDone != ExprSingleResult) : ereport(ERROR, 0.00 : 5ad4d7: bf 10 a5 88 00 mov $0x88a510,%edi 0.00 : 5ad4dc: 31 c0 xor %eax,%eax 0.00 : 5ad4de: e8 bd f3 1c 00 callq 77c8a0 0.00 : 5ad4e3: bf 40 04 00 00 mov $0x440,%edi 0.00 : 5ad4e8: 89 c3 mov %eax,%ebx 0.00 : 5ad4ea: e8 61 f8 1c 00 callq 77cd50 0.00 : 5ad4ef: 89 de mov %ebx,%esi 0.00 : 5ad4f1: 89 c7 mov %eax,%edi 0.00 : 5ad4f3: 31 c0 xor %eax,%eax 0.00 : 5ad4f5: e8 e6 d0 1c 00 callq 77a5e0 0.00 : 5ad4fa: eb d1 jmp 5ad4cd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2159 26.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2159 24.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2161 20.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2176 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2158 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2159 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b8340 : : * identity of the memory context that aggregate transition values are : * being stored in. : */ : int : AggCheckCallContext(FunctionCallInfo fcinfo, MemoryContext *aggcontext) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2158 1.14 : 5b8340: 55 push %rbp : if (fcinfo->context && IsA(fcinfo->context, AggState)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2159 26.50 : 5b8341: 48 8b 57 08 mov 0x8(%rdi),%rdx : * identity of the memory context that aggregate transition values are : * being stored in. : */ : int : AggCheckCallContext(FunctionCallInfo fcinfo, MemoryContext *aggcontext) : { 0.00 : 5b8345: 48 89 e5 mov %rsp,%rbp : if (fcinfo->context && IsA(fcinfo->context, AggState)) 0.00 : 5b8348: 48 85 d2 test %rdx,%rdx 0.00 : 5b834b: 74 10 je 5b835d 26.50 : 5b834d: 8b 02 mov (%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2159 0.57 : 5b834f: 3d e4 00 00 00 cmp $0xe4,%eax 0.00 : 5b8354: 74 3a je 5b8390 : { : if (aggcontext) : *aggcontext = ((AggState *) fcinfo->context)->aggcontext; : return AGG_CONTEXT_AGGREGATE; : } : if (fcinfo->context && IsA(fcinfo->context, WindowAggState)) 0.00 : 5b8356: 3d e5 00 00 00 cmp $0xe5,%eax 0.00 : 5b835b: 74 13 je 5b8370 : *aggcontext = ((WindowAggState *) fcinfo->context)->curaggcontext; : return AGG_CONTEXT_WINDOW; : } : : /* this is just to prevent "uninitialized variable" warnings */ : if (aggcontext) 0.00 : 5b835d: 31 c0 xor %eax,%eax 0.00 : 5b835f: 48 85 f6 test %rsi,%rsi 0.00 : 5b8362: 74 09 je 5b836d : *aggcontext = NULL; 0.00 : 5b8364: 48 c7 06 00 00 00 00 movq $0x0,(%rsi) 0.00 : 5b836b: 31 c0 xor %eax,%eax : return 0; : } 0.00 : 5b836d: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2176 20.51 : 5b836e: c3 retq 0.00 : 5b836f: 90 nop : *aggcontext = ((AggState *) fcinfo->context)->aggcontext; : return AGG_CONTEXT_AGGREGATE; : } : if (fcinfo->context && IsA(fcinfo->context, WindowAggState)) : { : if (aggcontext) 0.00 : 5b8370: 48 85 f6 test %rsi,%rsi 0.00 : 5b8373: b0 02 mov $0x2,%al 0.00 : 5b8375: 74 f6 je 5b836d : *aggcontext = ((WindowAggState *) fcinfo->context)->curaggcontext; 0.00 : 5b8377: 48 8b 82 40 01 00 00 mov 0x140(%rdx),%rax 0.00 : 5b837e: 48 89 06 mov %rax,(%rsi) 0.00 : 5b8381: b8 02 00 00 00 mov $0x2,%eax : : /* this is just to prevent "uninitialized variable" warnings */ : if (aggcontext) : *aggcontext = NULL; : return 0; : } 0.00 : 5b8386: c9 leaveq 0.00 : 5b8387: c3 retq 0.00 : 5b8388: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5b838f: 00 : int : AggCheckCallContext(FunctionCallInfo fcinfo, MemoryContext *aggcontext) : { : if (fcinfo->context && IsA(fcinfo->context, AggState)) : { : if (aggcontext) 0.00 : 5b8390: 48 85 f6 test %rsi,%rsi 0.28 : 5b8393: b0 01 mov $0x1,%al /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2161 24.50 : 5b8395: 74 d6 je 5b836d : *aggcontext = ((AggState *) fcinfo->context)->aggcontext; 0.00 : 5b8397: 48 8b 82 b8 00 00 00 mov 0xb8(%rdx),%rax 0.00 : 5b839e: 48 89 06 mov %rax,(%rsi) 0.00 : 5b83a1: b8 01 00 00 00 mov $0x1,%eax : : /* this is just to prevent "uninitialized variable" warnings */ : if (aggcontext) : *aggcontext = NULL; : return 0; : } 0.00 : 5b83a6: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2242 13.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2245 12.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2245 10.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2231 9.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2231 7.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2232 6.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2236 4.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2240 3.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2245 3.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2240 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2231 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2236 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2238 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2236 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2236 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2231 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2238 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2245 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070a0f0 : : */ : : : Datum : int4_numeric(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2231 10.89 : 70a0f0: 55 push %rbp 0.25 : 70a0f1: 48 89 e5 mov %rsp,%rbp 9.37 : 70a0f4: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2231 0.51 : 70a0f8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 1.52 : 70a0fc: 48 83 ec 30 sub $0x30,%rsp : int32 val = PG_GETARG_INT32(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2232 7.34 : 70a100: 48 63 7f 20 movslq 0x20(%rdi),%rdi : Numeric res; : NumericVar result; : : init_var(&result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2236 0.76 : 70a104: 48 8d 5d d0 lea -0x30(%rbp),%rbx 0.76 : 70a108: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp) 0.00 : 70a10f: 00 1.52 : 70a110: 48 c7 45 d8 00 00 00 movq $0x0,-0x28(%rbp) 0.00 : 70a117: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2236 6.84 : 70a118: 48 c7 45 e0 00 00 00 movq $0x0,-0x20(%rbp) 0.00 : 70a11f: 00 : : int8_to_numericvar((int64) val, &result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2238 0.51 : 70a120: 48 89 de mov %rbx,%rsi : { : int32 val = PG_GETARG_INT32(0); : Numeric res; : NumericVar result; : : init_var(&result); 0.00 : 70a123: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 70a12a: 00 : : int8_to_numericvar((int64) val, &result); 1.52 : 70a12b: e8 40 cf ff ff callq 707070 : : res = make_result(&result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2240 4.05 : 70a130: 48 89 df mov %rbx,%rdi 3.29 : 70a133: e8 c8 f7 ff ff callq 709900 : : free_var(&result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2242 20.51 : 70a138: 48 89 df mov %rbx,%rdi : : init_var(&result); : : int8_to_numericvar((int64) val, &result); : : res = make_result(&result); 0.00 : 70a13b: 49 89 c4 mov %rax,%r12 : : free_var(&result); 0.00 : 70a13e: e8 0d cb ff ff callq 706c50 : : PG_RETURN_NUMERIC(res); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2245 3.80 : 70a143: 4c 89 e0 mov %r12,%rax 0.51 : 70a146: 48 8b 5d f0 mov -0x10(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:2245 12.15 : 70a14a: 4c 8b 65 f8 mov -0x8(%rbp),%r12 13.92 : 70a14e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.35 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 6.07 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 6.07 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:525 5.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 4.70 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:525 4.50 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:531 3.91 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:531 3.52 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:531 2.94 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:546 2.74 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:509 2.74 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:530 2.54 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:531 2.54 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:546 2.54 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 2.35 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:530 2.35 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:537 2.35 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 2.15 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 2.15 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:545 2.15 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:546 1.96 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 1.96 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 1.96 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:526 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:513 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 1.57 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 1.57 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:537 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:546 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 0.98 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 0.98 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 0.98 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 0.98 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:526 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:537 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5520 : : * enough information to do it efficiently in the general case. : * ---------------- : */ : HeapTuple : index_fetch_heap(IndexScanDesc scan) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 6.07 : 4a5520: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 2.15 : 4a5521: 48 89 e5 mov %rsp,%rbp 0.39 : 4a5524: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 5.09 : 4a5526: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:507 1.57 : 4a5528: 49 89 fc mov %rdi,%r12 0.00 : 4a552b: 53 push %rbx 0.20 : 4a552c: 48 83 ec 18 sub $0x18,%rsp : ItemPointer tid = &scan->xs_ctup.t_self; : bool all_dead = false; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:509 2.74 : 4a5530: c6 45 e7 00 movb $0x0,-0x19(%rbp) : bool got_heap_tuple; : : /* We can skip the buffer-switching logic if we're in mid-HOT chain. */ : if (!scan->xs_continue_hot) 0.00 : 4a5534: 80 7f 6d 00 cmpb $0x0,0x6d(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:513 1.76 : 4a5538: 0f 84 9a 00 00 00 je 4a55d8 : if (prev_buf != scan->xs_cbuf) : heap_page_prune_opt(scan->heapRelation, scan->xs_cbuf); : } : : /* Obtain share-lock on the buffer so we can examine visibility */ : LockBuffer(scan->xs_cbuf, BUFFER_LOCK_SHARE); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:530 2.74 : 4a553e: 41 8b 7c 24 68 mov 0x68(%r12),%edi 2.35 : 4a5543: be 01 00 00 00 mov $0x1,%esi : got_heap_tuple = heap_hot_search_buffer(tid, scan->heapRelation, 0.00 : 4a5548: 4d 8d 6c 24 50 lea 0x50(%r12),%r13 : if (prev_buf != scan->xs_cbuf) : heap_page_prune_opt(scan->heapRelation, scan->xs_cbuf); : } : : /* Obtain share-lock on the buffer so we can examine visibility */ : LockBuffer(scan->xs_cbuf, BUFFER_LOCK_SHARE); 0.00 : 4a554d: e8 be f1 1c 00 callq 674710 : got_heap_tuple = heap_hot_search_buffer(tid, scan->heapRelation, 0.20 : 4a5552: 31 c0 xor %eax,%eax 0.00 : 4a5554: 41 80 7c 24 6d 00 cmpb $0x0,0x6d(%r12) 0.20 : 4a555a: 49 8b 4c 24 10 mov 0x10(%r12),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:531 4.50 : 4a555f: 41 8b 54 24 68 mov 0x68(%r12),%edx 0.39 : 4a5564: 49 8b 34 24 mov (%r12),%rsi 0.00 : 4a5568: 49 8d 7c 24 54 lea 0x54(%r12),%rdi 0.00 : 4a556d: 4c 8d 4d e7 lea -0x19(%rbp),%r9 2.54 : 4a5571: 4d 89 e8 mov %r13,%r8 0.00 : 4a5574: 0f 94 c0 sete %al 0.00 : 4a5577: 89 04 24 mov %eax,(%rsp) 3.91 : 4a557a: e8 a1 7c ff ff callq 49d220 : scan->xs_cbuf, : scan->xs_snapshot, : &scan->xs_ctup, : &all_dead, : !scan->xs_continue_hot); : LockBuffer(scan->xs_cbuf, BUFFER_LOCK_UNLOCK); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:537 2.35 : 4a557f: 41 8b 7c 24 68 mov 0x68(%r12),%edi : heap_page_prune_opt(scan->heapRelation, scan->xs_cbuf); : } : : /* Obtain share-lock on the buffer so we can examine visibility */ : LockBuffer(scan->xs_cbuf, BUFFER_LOCK_SHARE); : got_heap_tuple = heap_hot_search_buffer(tid, scan->heapRelation, /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:531 3.52 : 4a5584: 89 c3 mov %eax,%ebx : scan->xs_cbuf, : scan->xs_snapshot, : &scan->xs_ctup, : &all_dead, : !scan->xs_continue_hot); : LockBuffer(scan->xs_cbuf, BUFFER_LOCK_UNLOCK); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:537 0.78 : 4a5586: 31 f6 xor %esi,%esi 1.17 : 4a5588: e8 83 f1 1c 00 callq 674710 : : if (got_heap_tuple) 0.00 : 4a558d: 84 db test %bl,%bl 0.00 : 4a558f: 74 7f je 4a5610 : { : /* : * Only in a non-MVCC snapshot can more than one member of the HOT : * chain be visible. : */ : scan->xs_continue_hot = !IsMVCCSnapshot(scan->xs_snapshot); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:545 2.15 : 4a5591: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 4a5596: 31 d2 xor %edx,%edx 0.00 : 4a5598: 48 8b 00 mov (%rax),%rax 0.20 : 4a559b: 48 3d 50 57 7a 00 cmp $0x7a5750,%rax 0.00 : 4a55a1: 74 09 je 4a55ac 0.00 : 4a55a3: 48 3d 60 47 7a 00 cmp $0x7a4760,%rax 0.00 : 4a55a9: 0f 95 c2 setne %dl : pgstat_count_heap_fetch(scan->indexRelation); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:546 2.94 : 4a55ac: 49 8b 44 24 08 mov 0x8(%r12),%rax : { : /* : * Only in a non-MVCC snapshot can more than one member of the HOT : * chain be visible. : */ : scan->xs_continue_hot = !IsMVCCSnapshot(scan->xs_snapshot); 0.00 : 4a55b1: 41 88 54 24 6d mov %dl,0x6d(%r12) : pgstat_count_heap_fetch(scan->indexRelation); 0.00 : 4a55b6: 48 8b 80 38 01 00 00 mov 0x138(%rax),%rax 2.54 : 4a55bd: 48 85 c0 test %rax,%rax 1.17 : 4a55c0: 74 05 je 4a55c7 2.15 : 4a55c2: 48 83 40 20 01 addq $0x1,0x20(%rax) : */ : if (!scan->xactStartedInRecovery) : scan->kill_prior_tuple = all_dead; : : return NULL; : } /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 11.35 : 4a55c7: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:564 2.54 : 4a55cb: 4c 89 e8 mov %r13,%rax 0.00 : 4a55ce: 5b pop %rbx 1.17 : 4a55cf: 41 5c pop %r12 1.17 : 4a55d1: 41 5d pop %r13 0.98 : 4a55d3: c9 leaveq 2.35 : 4a55d4: c3 retq 0.00 : 4a55d5: 0f 1f 00 nopl (%rax) : if (!scan->xs_continue_hot) : { : /* Switch to correct buffer if we don't have it already */ : Buffer prev_buf = scan->xs_cbuf; : : scan->xs_cbuf = ReleaseAndReadBuffer(scan->xs_cbuf, /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 1.96 : 4a55d8: 0f b7 57 54 movzwl 0x54(%rdi),%edx 1.57 : 4a55dc: 0f b7 47 56 movzwl 0x56(%rdi),%eax : : /* We can skip the buffer-switching logic if we're in mid-HOT chain. */ : if (!scan->xs_continue_hot) : { : /* Switch to correct buffer if we don't have it already */ : Buffer prev_buf = scan->xs_cbuf; 0.20 : 4a55e0: 8b 5f 68 mov 0x68(%rdi),%ebx : : scan->xs_cbuf = ReleaseAndReadBuffer(scan->xs_cbuf, 0.98 : 4a55e3: 48 8b 37 mov (%rdi),%rsi 1.96 : 4a55e6: c1 e2 10 shl $0x10,%edx 0.78 : 4a55e9: 89 df mov %ebx,%edi 0.39 : 4a55eb: 09 c2 or %eax,%edx 0.98 : 4a55ed: e8 ce 10 1d 00 callq 6766c0 : ItemPointerGetBlockNumber(tid)); : : /* : * Prune page, but only if we weren't already on this page : */ : if (prev_buf != scan->xs_cbuf) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:525 4.70 : 4a55f2: 39 c3 cmp %eax,%ebx : if (!scan->xs_continue_hot) : { : /* Switch to correct buffer if we don't have it already */ : Buffer prev_buf = scan->xs_cbuf; : : scan->xs_cbuf = ReleaseAndReadBuffer(scan->xs_cbuf, /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:518 1.76 : 4a55f4: 41 89 44 24 68 mov %eax,0x68(%r12) : ItemPointerGetBlockNumber(tid)); : : /* : * Prune page, but only if we weren't already on this page : */ : if (prev_buf != scan->xs_cbuf) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:525 6.07 : 4a55f9: 0f 84 3f ff ff ff je 4a553e : heap_page_prune_opt(scan->heapRelation, scan->xs_cbuf); 0.00 : 4a55ff: 49 8b 3c 24 mov (%r12),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:526 1.96 : 4a5603: 89 c6 mov %eax,%esi 0.98 : 4a5605: e8 46 a0 ff ff callq 49f650 0.39 : 4a560a: e9 2f ff ff ff jmpq 4a553e 0.00 : 4a560f: 90 nop : * AM to kill its entry for that TID (this will take effect in the next : * amgettuple call, in index_getnext_tid). We do not do this when in : * recovery because it may violate MVCC to do so. See comments in : * RelationGetIndexScan(). : */ : if (!scan->xactStartedInRecovery) 0.00 : 4a5610: 45 31 ed xor %r13d,%r13d 0.00 : 4a5613: 41 80 7c 24 33 00 cmpb $0x0,0x33(%r12) : pgstat_count_heap_fetch(scan->indexRelation); : return &scan->xs_ctup; : } : : /* We've reached the end of the HOT chain. */ : scan->xs_continue_hot = false; 0.00 : 4a5619: 41 c6 44 24 6d 00 movb $0x0,0x6d(%r12) : * AM to kill its entry for that TID (this will take effect in the next : * amgettuple call, in index_getnext_tid). We do not do this when in : * recovery because it may violate MVCC to do so. See comments in : * RelationGetIndexScan(). : */ : if (!scan->xactStartedInRecovery) 0.00 : 4a561f: 75 a6 jne 4a55c7 : scan->kill_prior_tuple = all_dead; 0.00 : 4a5621: 0f b6 45 e7 movzbl -0x19(%rbp),%eax 0.00 : 4a5625: 45 31 ed xor %r13d,%r13d 0.00 : 4a5628: 41 88 44 24 31 mov %al,0x31(%r12) 0.00 : 4a562d: eb 98 jmp 4a55c7 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 26.19 ??:0 19.79 ??:0 17.94 ??:0 9.28 ??:0 2.89 ??:0 1.86 ??:0 1.86 ??:0 1.65 ??:0 1.65 ??:0 1.24 ??:0 1.24 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 0.82 ??:0 0.82 ??:0 0.62 ??:0 0.62 ??:0 0.62 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000122bb0 <__memmove_ssse3>: ??:0 9.28 : 122bb0: 48 89 f8 mov %rdi,%rax 19.79 : 122bb3: 48 39 f7 cmp %rsi,%rdi 0.00 : 122bb6: 72 0e jb 122bc6 <__memmove_ssse3+0x16> 0.00 : 122bb8: 0f 84 7a 1a 00 00 je 124638 <__memmove_ssse3+0x1a88> ??:0 1.65 : 122bbe: 48 83 fa 4f cmp $0x4f,%rdx 0.00 : 122bc2: 76 02 jbe 122bc6 <__memmove_ssse3+0x16> 0.00 : 122bc4: eb 7a jmp 122c40 <__memmove_ssse3+0x90> 0.62 : 122bc6: 48 83 fa 4f cmp $0x4f,%rdx 1.86 : 122bca: 4c 8d 1d cf 16 02 00 lea 0x216cf(%rip),%r11 # 1442a0 1.03 : 122bd1: 77 1d ja 122bf0 <__memmove_ssse3+0x40> 0.41 : 122bd3: 4d 63 0c 93 movslq (%r11,%rdx,4),%r9 ??:0 17.94 : 122bd7: 48 01 d6 add %rdx,%rsi 0.00 : 122bda: 48 01 d7 add %rdx,%rdi 0.00 : 122bdd: 4d 01 d9 add %r11,%r9 ??:0 0.82 : 122be0: 41 ff e1 jmpq *%r9 0.00 : 122be3: 0f 0b ud2 0.00 : 122be5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 122bec: 00 00 00 00 0.00 : 122bf0: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 122bf4: 48 89 f9 mov %rdi,%rcx 0.00 : 122bf7: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 122bfb: 48 83 c7 10 add $0x10,%rdi 0.00 : 122bff: 49 89 c8 mov %rcx,%r8 0.00 : 122c02: 48 29 f9 sub %rdi,%rcx 0.00 : 122c05: 48 01 ca add %rcx,%rdx 0.00 : 122c08: 48 29 ce sub %rcx,%rsi 0.00 : 122c0b: 48 8b 0d 1e f5 24 00 mov 0x24f51e(%rip),%rcx # 372130 <__x86_64_shared_cache_size_half> 0.21 : 122c12: 48 39 ca cmp %rcx,%rdx 0.00 : 122c15: 49 89 f1 mov %rsi,%r9 0.00 : 122c18: 0f 87 92 27 00 00 ja 1253b0 <__memmove_ssse3+0x2800> 0.00 : 122c1e: 49 83 e1 0f and $0xf,%r9 0.00 : 122c22: 74 7c je 122ca0 <__memmove_ssse3+0xf0> 0.00 : 122c24: 48 8b 0d e5 f4 24 00 mov 0x24f4e5(%rip),%rcx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122c2b: 4c 8d 1d ae 17 02 00 lea 0x217ae(%rip),%r11 # 1443e0 0.00 : 122c32: 4f 63 0c 8b movslq (%r11,%r9,4),%r9 0.00 : 122c36: 4f 8d 0c 0b lea (%r11,%r9,1),%r9 0.00 : 122c3a: 41 ff e1 jmpq *%r9 0.00 : 122c3d: 0f 0b ud2 0.00 : 122c3f: 90 nop 0.21 : 122c40: f3 0f 6f 44 16 f0 movdqu -0x10(%rsi,%rdx,1),%xmm0 0.41 : 122c46: 48 01 d6 add %rdx,%rsi 0.00 : 122c49: 4c 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%r8 0.00 : 122c4e: 48 01 d7 add %rdx,%rdi 0.00 : 122c51: 48 89 f9 mov %rdi,%rcx 0.00 : 122c54: 48 83 e1 0f and $0xf,%rcx 0.00 : 122c58: 48 31 cf xor %rcx,%rdi 0.00 : 122c5b: 48 29 ca sub %rcx,%rdx 0.00 : 122c5e: 48 29 ce sub %rcx,%rsi 0.00 : 122c61: 48 8b 0d c8 f4 24 00 mov 0x24f4c8(%rip),%rcx # 372130 <__x86_64_shared_cache_size_half> 0.00 : 122c68: 48 39 ca cmp %rcx,%rdx 0.00 : 122c6b: 49 89 f1 mov %rsi,%r9 0.00 : 122c6e: 0f 87 fc 28 00 00 ja 125570 <__memmove_ssse3+0x29c0> 0.00 : 122c74: 49 83 e1 0f and $0xf,%r9 0.00 : 122c78: 0f 84 42 02 00 00 je 122ec0 <__memmove_ssse3+0x310> 0.00 : 122c7e: 48 8b 0d 8b f4 24 00 mov 0x24f48b(%rip),%rcx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122c85: 4c 8d 1d 94 17 02 00 lea 0x21794(%rip),%r11 # 144420 0.00 : 122c8c: 4f 63 0c 8b movslq (%r11,%r9,4),%r9 0.00 : 122c90: 4f 8d 0c 0b lea (%r11,%r9,1),%r9 0.00 : 122c94: 41 ff e1 jmpq *%r9 0.00 : 122c97: 0f 0b ud2 0.00 : 122c99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 122ca0: 48 83 ea 10 sub $0x10,%rdx 0.00 : 122ca4: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 122ca8: 48 83 c6 10 add $0x10,%rsi 0.00 : 122cac: 66 0f 7f 0f movdqa %xmm1,(%rdi) 0.00 : 122cb0: 48 83 c7 10 add $0x10,%rdi 0.00 : 122cb4: 48 81 fa 80 00 00 00 cmp $0x80,%rdx 0.00 : 122cbb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 122cc0: 77 4e ja 122d10 <__memmove_ssse3+0x160> 0.00 : 122cc2: 48 83 fa 40 cmp $0x40,%rdx 0.00 : 122cc6: 72 2a jb 122cf2 <__memmove_ssse3+0x142> 0.00 : 122cc8: 0f 28 26 movaps (%rsi),%xmm4 0.00 : 122ccb: 0f 28 4e 10 movaps 0x10(%rsi),%xmm1 0.00 : 122ccf: 0f 28 56 20 movaps 0x20(%rsi),%xmm2 0.00 : 122cd3: 0f 28 5e 30 movaps 0x30(%rsi),%xmm3 0.00 : 122cd7: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 122cda: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 122cde: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 122ce2: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 122ce6: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122cea: 48 83 c6 40 add $0x40,%rsi 0.00 : 122cee: 48 83 c7 40 add $0x40,%rdi 0.00 : 122cf2: 48 01 d6 add %rdx,%rsi 0.00 : 122cf5: 48 01 d7 add %rdx,%rdi 0.00 : 122cf8: 4c 8d 1d a1 15 02 00 lea 0x215a1(%rip),%r11 # 1442a0 0.00 : 122cff: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122d03: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122d07: ff e2 jmpq *%rdx 0.00 : 122d09: 0f 0b ud2 0.00 : 122d0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 122d10: 48 3b 15 f9 f3 24 00 cmp 0x24f3f9(%rip),%rdx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122d17: 48 8d 52 80 lea -0x80(%rdx),%rdx 0.00 : 122d1b: 0f 83 af 00 00 00 jae 122dd0 <__memmove_ssse3+0x220> 0.00 : 122d21: 66 0f 6f 26 movdqa (%rsi),%xmm4 0.00 : 122d25: 0f 28 4e 10 movaps 0x10(%rsi),%xmm1 0.00 : 122d29: 0f 28 56 20 movaps 0x20(%rsi),%xmm2 0.00 : 122d2d: 0f 28 5e 30 movaps 0x30(%rsi),%xmm3 0.00 : 122d31: 66 0f 7f 27 movdqa %xmm4,(%rdi) 0.00 : 122d35: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 122d39: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 122d3d: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 122d41: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 122d48: 0f 28 66 40 movaps 0x40(%rsi),%xmm4 0.00 : 122d4c: 0f 28 6e 50 movaps 0x50(%rsi),%xmm5 0.00 : 122d50: 0f 28 76 60 movaps 0x60(%rsi),%xmm6 0.00 : 122d54: 0f 28 7e 70 movaps 0x70(%rsi),%xmm7 0.00 : 122d58: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 122d5f: 0f 29 67 40 movaps %xmm4,0x40(%rdi) 0.00 : 122d63: 0f 29 6f 50 movaps %xmm5,0x50(%rdi) 0.00 : 122d67: 0f 29 77 60 movaps %xmm6,0x60(%rdi) 0.00 : 122d6b: 0f 29 7f 70 movaps %xmm7,0x70(%rdi) 0.00 : 122d6f: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 122d76: 73 a9 jae 122d21 <__memmove_ssse3+0x171> 0.00 : 122d78: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 122d7c: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 122d83: 7c 32 jl 122db7 <__memmove_ssse3+0x207> 0.00 : 122d85: 66 0f 6f 26 movdqa (%rsi),%xmm4 0.00 : 122d89: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122d8d: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122d92: 66 0f 7f 27 movdqa %xmm4,(%rdi) 0.00 : 122d96: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122d9b: 66 0f 6f 66 20 movdqa 0x20(%rsi),%xmm4 0.00 : 122da0: 66 0f 6f 4e 30 movdqa 0x30(%rsi),%xmm1 0.00 : 122da5: 48 83 c6 40 add $0x40,%rsi 0.00 : 122da9: 66 0f 7f 67 20 movdqa %xmm4,0x20(%rdi) 0.00 : 122dae: 66 0f 7f 4f 30 movdqa %xmm1,0x30(%rdi) 0.00 : 122db3: 48 83 c7 40 add $0x40,%rdi 0.00 : 122db7: 48 01 d6 add %rdx,%rsi 0.00 : 122dba: 48 01 d7 add %rdx,%rdi 0.00 : 122dbd: 4c 8d 1d dc 14 02 00 lea 0x214dc(%rip),%r11 # 1442a0 0.00 : 122dc4: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122dc8: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122dcc: ff e2 jmpq *%rdx 0.00 : 122dce: 0f 0b ud2 0.00 : 122dd0: 0f 18 8e c0 01 00 00 prefetcht0 0x1c0(%rsi) 0.00 : 122dd7: 0f 18 8e 80 02 00 00 prefetcht0 0x280(%rsi) 0.00 : 122dde: 66 0f 6f 06 movdqa (%rsi),%xmm0 0.00 : 122de2: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122de7: 66 0f 6f 56 20 movdqa 0x20(%rsi),%xmm2 0.00 : 122dec: 66 0f 6f 5e 30 movdqa 0x30(%rsi),%xmm3 0.00 : 122df1: 66 0f 6f 66 40 movdqa 0x40(%rsi),%xmm4 0.00 : 122df6: 66 0f 6f 6e 50 movdqa 0x50(%rsi),%xmm5 0.00 : 122dfb: 66 0f 6f 76 60 movdqa 0x60(%rsi),%xmm6 0.00 : 122e00: 66 0f 6f 7e 70 movdqa 0x70(%rsi),%xmm7 0.00 : 122e05: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 122e0c: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 122e13: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.00 : 122e17: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122e1c: 66 0f 7f 57 20 movdqa %xmm2,0x20(%rdi) 0.00 : 122e21: 66 0f 7f 5f 30 movdqa %xmm3,0x30(%rdi) 0.00 : 122e26: 66 0f 7f 67 40 movdqa %xmm4,0x40(%rdi) 0.00 : 122e2b: 66 0f 7f 6f 50 movdqa %xmm5,0x50(%rdi) 0.00 : 122e30: 66 0f 7f 77 60 movdqa %xmm6,0x60(%rdi) 0.00 : 122e35: 66 0f 7f 7f 70 movdqa %xmm7,0x70(%rdi) 0.00 : 122e3a: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 122e41: 73 8d jae 122dd0 <__memmove_ssse3+0x220> 0.00 : 122e43: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 122e47: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 122e4e: 7c 32 jl 122e82 <__memmove_ssse3+0x2d2> 0.00 : 122e50: 66 0f 6f 06 movdqa (%rsi),%xmm0 0.00 : 122e54: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122e58: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122e5d: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.00 : 122e61: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122e66: 66 0f 6f 46 20 movdqa 0x20(%rsi),%xmm0 0.00 : 122e6b: 66 0f 6f 4e 30 movdqa 0x30(%rsi),%xmm1 0.00 : 122e70: 48 83 c6 40 add $0x40,%rsi 0.00 : 122e74: 66 0f 7f 47 20 movdqa %xmm0,0x20(%rdi) 0.00 : 122e79: 66 0f 7f 4f 30 movdqa %xmm1,0x30(%rdi) 0.00 : 122e7e: 48 83 c7 40 add $0x40,%rdi 0.00 : 122e82: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 122e86: 72 1e jb 122ea6 <__memmove_ssse3+0x2f6> 0.00 : 122e88: 66 0f 6f 06 movdqa (%rsi),%xmm0 0.00 : 122e8c: 48 83 ea 20 sub $0x20,%rdx 0.00 : 122e90: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122e95: 48 83 c6 20 add $0x20,%rsi 0.00 : 122e99: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.00 : 122e9d: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122ea2: 48 83 c7 20 add $0x20,%rdi 0.00 : 122ea6: 48 01 d7 add %rdx,%rdi 0.00 : 122ea9: 48 01 d6 add %rdx,%rsi 0.00 : 122eac: 4c 8d 1d ed 13 02 00 lea 0x213ed(%rip),%r11 # 1442a0 0.00 : 122eb3: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122eb7: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122ebb: ff e2 jmpq *%rdx 0.00 : 122ebd: 0f 0b ud2 0.00 : 122ebf: 90 nop 0.00 : 122ec0: 48 83 ea 10 sub $0x10,%rdx 0.00 : 122ec4: 66 0f 6f 4e f0 movdqa -0x10(%rsi),%xmm1 0.00 : 122ec9: 48 83 ee 10 sub $0x10,%rsi 0.00 : 122ecd: 66 0f 7f 4f f0 movdqa %xmm1,-0x10(%rdi) 0.00 : 122ed2: 48 83 ef 10 sub $0x10,%rdi 0.00 : 122ed6: 48 81 fa 80 00 00 00 cmp $0x80,%rdx 0.00 : 122edd: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 122ee2: 77 4c ja 122f30 <__memmove_ssse3+0x380> 0.00 : 122ee4: 48 83 fa 40 cmp $0x40,%rdx 0.00 : 122ee8: 72 2c jb 122f16 <__memmove_ssse3+0x366> 0.00 : 122eea: 0f 28 46 f0 movaps -0x10(%rsi),%xmm0 0.00 : 122eee: 0f 28 4e e0 movaps -0x20(%rsi),%xmm1 0.00 : 122ef2: 0f 28 56 d0 movaps -0x30(%rsi),%xmm2 0.00 : 122ef6: 0f 28 5e c0 movaps -0x40(%rsi),%xmm3 0.00 : 122efa: 0f 29 47 f0 movaps %xmm0,-0x10(%rdi) 0.00 : 122efe: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 122f02: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 122f06: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 122f0a: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122f0e: 48 83 ee 40 sub $0x40,%rsi 0.00 : 122f12: 48 83 ef 40 sub $0x40,%rdi 0.00 : 122f16: 4c 8d 1d 83 13 02 00 lea 0x21383(%rip),%r11 # 1442a0 0.00 : 122f1d: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122f21: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122f25: ff e2 jmpq *%rdx 0.00 : 122f27: 0f 0b ud2 0.00 : 122f29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 122f30: 48 3b 15 d9 f1 24 00 cmp 0x24f1d9(%rip),%rdx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122f37: 48 8d 52 80 lea -0x80(%rdx),%rdx 0.00 : 122f3b: 0f 83 af 00 00 00 jae 122ff0 <__memmove_ssse3+0x440> 0.00 : 122f41: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 122f46: 0f 28 4e e0 movaps -0x20(%rsi),%xmm1 0.00 : 122f4a: 0f 28 56 d0 movaps -0x30(%rsi),%xmm2 0.00 : 122f4e: 0f 28 5e c0 movaps -0x40(%rsi),%xmm3 0.00 : 122f52: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 122f57: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 122f5b: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 122f5f: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 122f63: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 122f6a: 0f 28 66 b0 movaps -0x50(%rsi),%xmm4 0.00 : 122f6e: 0f 28 6e a0 movaps -0x60(%rsi),%xmm5 0.00 : 122f72: 0f 28 76 90 movaps -0x70(%rsi),%xmm6 0.00 : 122f76: 0f 28 7e 80 movaps -0x80(%rsi),%xmm7 0.00 : 122f7a: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 122f7e: 0f 29 67 b0 movaps %xmm4,-0x50(%rdi) 0.00 : 122f82: 0f 29 6f a0 movaps %xmm5,-0x60(%rdi) 0.00 : 122f86: 0f 29 77 90 movaps %xmm6,-0x70(%rdi) 0.00 : 122f8a: 0f 29 7f 80 movaps %xmm7,-0x80(%rdi) 0.00 : 122f8e: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 122f92: 73 ad jae 122f41 <__memmove_ssse3+0x391> 0.00 : 122f94: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 122f98: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 122f9f: 7c 34 jl 122fd5 <__memmove_ssse3+0x425> 0.00 : 122fa1: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 122fa6: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122faa: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 122faf: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 122fb4: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 122fb9: 66 0f 6f 46 d0 movdqa -0x30(%rsi),%xmm0 0.00 : 122fbe: 66 0f 6f 4e c0 movdqa -0x40(%rsi),%xmm1 0.00 : 122fc3: 48 83 ee 40 sub $0x40,%rsi 0.00 : 122fc7: 66 0f 7f 47 d0 movdqa %xmm0,-0x30(%rdi) 0.00 : 122fcc: 66 0f 7f 4f c0 movdqa %xmm1,-0x40(%rdi) 0.00 : 122fd1: 48 83 ef 40 sub $0x40,%rdi 0.00 : 122fd5: 4c 8d 1d c4 12 02 00 lea 0x212c4(%rip),%r11 # 1442a0 0.00 : 122fdc: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122fe0: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122fe4: ff e2 jmpq *%rdx 0.00 : 122fe6: 0f 0b ud2 0.00 : 122fe8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 122fef: 00 0.00 : 122ff0: 0f 18 8e 40 fe ff ff prefetcht0 -0x1c0(%rsi) 0.00 : 122ff7: 0f 18 8e 80 fd ff ff prefetcht0 -0x280(%rsi) 0.00 : 122ffe: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 123003: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 123008: 66 0f 6f 56 d0 movdqa -0x30(%rsi),%xmm2 0.00 : 12300d: 66 0f 6f 5e c0 movdqa -0x40(%rsi),%xmm3 0.00 : 123012: 66 0f 6f 66 b0 movdqa -0x50(%rsi),%xmm4 0.00 : 123017: 66 0f 6f 6e a0 movdqa -0x60(%rsi),%xmm5 0.00 : 12301c: 66 0f 6f 76 90 movdqa -0x70(%rsi),%xmm6 0.00 : 123021: 66 0f 6f 7e 80 movdqa -0x80(%rsi),%xmm7 0.00 : 123026: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 12302a: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 123031: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 123036: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 12303b: 66 0f 7f 57 d0 movdqa %xmm2,-0x30(%rdi) 0.00 : 123040: 66 0f 7f 5f c0 movdqa %xmm3,-0x40(%rdi) 0.00 : 123045: 66 0f 7f 67 b0 movdqa %xmm4,-0x50(%rdi) 0.00 : 12304a: 66 0f 7f 6f a0 movdqa %xmm5,-0x60(%rdi) 0.00 : 12304f: 66 0f 7f 77 90 movdqa %xmm6,-0x70(%rdi) 0.00 : 123054: 66 0f 7f 7f 80 movdqa %xmm7,-0x80(%rdi) 0.00 : 123059: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 12305d: 73 91 jae 122ff0 <__memmove_ssse3+0x440> 0.00 : 12305f: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 123063: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 12306a: 7c 34 jl 1230a0 <__memmove_ssse3+0x4f0> 0.00 : 12306c: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 123071: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123075: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 12307a: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 12307f: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 123084: 66 0f 6f 46 d0 movdqa -0x30(%rsi),%xmm0 0.00 : 123089: 66 0f 6f 4e c0 movdqa -0x40(%rsi),%xmm1 0.00 : 12308e: 48 83 ee 40 sub $0x40,%rsi 0.00 : 123092: 66 0f 7f 47 d0 movdqa %xmm0,-0x30(%rdi) 0.00 : 123097: 66 0f 7f 4f c0 movdqa %xmm1,-0x40(%rdi) 0.00 : 12309c: 48 83 ef 40 sub $0x40,%rdi 0.00 : 1230a0: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 1230a4: 72 20 jb 1230c6 <__memmove_ssse3+0x516> 0.00 : 1230a6: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 1230ab: 48 83 ea 20 sub $0x20,%rdx 0.00 : 1230af: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 1230b4: 48 83 ee 20 sub $0x20,%rsi 0.00 : 1230b8: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 1230bd: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 1230c2: 48 83 ef 20 sub $0x20,%rdi 0.00 : 1230c6: 4c 8d 1d d3 11 02 00 lea 0x211d3(%rip),%r11 # 1442a0 0.00 : 1230cd: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1230d1: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1230d5: ff e2 jmpq *%rdx 0.00 : 1230d7: 0f 0b ud2 0.00 : 1230d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1230e0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1230e7: 48 39 ca cmp %rcx,%rdx 0.00 : 1230ea: 0f 28 4e ff movaps -0x1(%rsi),%xmm1 0.00 : 1230ee: 72 07 jb 1230f7 <__memmove_ssse3+0x547> 0.00 : 1230f0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1230f7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1230fb: 41 ff e1 jmpq *%r9 0.00 : 1230fe: 0f 0b ud2 0.00 : 123100: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123107: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12310b: 0f 28 56 0f movaps 0xf(%rsi),%xmm2 0.00 : 12310f: 0f 28 5e 1f movaps 0x1f(%rsi),%xmm3 0.00 : 123113: 0f 28 66 2f movaps 0x2f(%rsi),%xmm4 0.00 : 123117: 0f 28 6e 3f movaps 0x3f(%rsi),%xmm5 0.00 : 12311b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12311f: 66 0f 3a 0f ec 01 palignr $0x1,%xmm4,%xmm5 0.00 : 123125: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123129: 66 0f 3a 0f e3 01 palignr $0x1,%xmm3,%xmm4 0.00 : 12312f: 66 0f 3a 0f da 01 palignr $0x1,%xmm2,%xmm3 0.00 : 123135: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123139: 66 0f 3a 0f d1 01 palignr $0x1,%xmm1,%xmm2 0.00 : 12313f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123143: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123148: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12314c: 72 0d jb 12315b <__memmove_ssse3+0x5ab> 0.00 : 12314e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123152: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123156: 41 ff e1 jmpq *%r9 0.00 : 123159: 0f 0b ud2 0.00 : 12315b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12315f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123163: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123167: 48 01 d7 add %rdx,%rdi 0.00 : 12316a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12316f: 48 01 d6 add %rdx,%rsi 0.00 : 123172: 4c 8d 1d 27 11 02 00 lea 0x21127(%rip),%r11 # 1442a0 0.00 : 123179: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12317d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123181: ff e2 jmpq *%rdx 0.00 : 123183: 0f 0b ud2 0.00 : 123185: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12318c: 00 00 00 00 0.00 : 123190: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123197: 48 39 ca cmp %rcx,%rdx 0.00 : 12319a: 0f 28 4e ff movaps -0x1(%rsi),%xmm1 0.00 : 12319e: 72 07 jb 1231a7 <__memmove_ssse3+0x5f7> 0.00 : 1231a0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1231a7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1231ab: 41 ff e1 jmpq *%r9 0.00 : 1231ae: 0f 0b ud2 0.00 : 1231b0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1231b7: 0f 28 56 ef movaps -0x11(%rsi),%xmm2 0.00 : 1231bb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1231bf: 0f 28 5e df movaps -0x21(%rsi),%xmm3 0.00 : 1231c3: 0f 28 66 cf movaps -0x31(%rsi),%xmm4 0.00 : 1231c7: 0f 28 6e bf movaps -0x41(%rsi),%xmm5 0.00 : 1231cb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1231cf: 66 0f 3a 0f ca 01 palignr $0x1,%xmm2,%xmm1 0.00 : 1231d5: 66 0f 3a 0f d3 01 palignr $0x1,%xmm3,%xmm2 0.00 : 1231db: 66 0f 3a 0f dc 01 palignr $0x1,%xmm4,%xmm3 0.00 : 1231e1: 66 0f 3a 0f e5 01 palignr $0x1,%xmm5,%xmm4 0.00 : 1231e7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1231eb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1231ee: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1231f2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1231f6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1231fa: 72 08 jb 123204 <__memmove_ssse3+0x654> 0.00 : 1231fc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1231ff: 41 ff e1 jmpq *%r9 0.00 : 123202: 0f 0b ud2 0.00 : 123204: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123207: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12320b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123210: 4c 8d 1d 89 10 02 00 lea 0x21089(%rip),%r11 # 1442a0 0.00 : 123217: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12321b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12321f: ff e2 jmpq *%rdx 0.00 : 123221: 0f 0b ud2 0.00 : 123223: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12322a: 84 00 00 00 00 00 0.00 : 123230: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123237: 48 39 ca cmp %rcx,%rdx 0.00 : 12323a: 0f 28 4e fe movaps -0x2(%rsi),%xmm1 0.00 : 12323e: 72 07 jb 123247 <__memmove_ssse3+0x697> 0.00 : 123240: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123247: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12324b: 41 ff e1 jmpq *%r9 0.00 : 12324e: 0f 0b ud2 0.00 : 123250: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123257: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12325b: 0f 28 56 0e movaps 0xe(%rsi),%xmm2 0.00 : 12325f: 0f 28 5e 1e movaps 0x1e(%rsi),%xmm3 0.00 : 123263: 0f 28 66 2e movaps 0x2e(%rsi),%xmm4 0.00 : 123267: 0f 28 6e 3e movaps 0x3e(%rsi),%xmm5 0.00 : 12326b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12326f: 66 0f 3a 0f ec 02 palignr $0x2,%xmm4,%xmm5 0.00 : 123275: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123279: 66 0f 3a 0f e3 02 palignr $0x2,%xmm3,%xmm4 0.00 : 12327f: 66 0f 3a 0f da 02 palignr $0x2,%xmm2,%xmm3 0.00 : 123285: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123289: 66 0f 3a 0f d1 02 palignr $0x2,%xmm1,%xmm2 0.00 : 12328f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123293: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123298: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12329c: 72 0d jb 1232ab <__memmove_ssse3+0x6fb> 0.00 : 12329e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1232a2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1232a6: 41 ff e1 jmpq *%r9 0.00 : 1232a9: 0f 0b ud2 0.00 : 1232ab: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1232af: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1232b3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1232b7: 48 01 d7 add %rdx,%rdi 0.00 : 1232ba: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1232bf: 48 01 d6 add %rdx,%rsi 0.00 : 1232c2: 4c 8d 1d d7 0f 02 00 lea 0x20fd7(%rip),%r11 # 1442a0 0.00 : 1232c9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1232cd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1232d1: ff e2 jmpq *%rdx 0.00 : 1232d3: 0f 0b ud2 0.00 : 1232d5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1232dc: 00 00 00 00 0.00 : 1232e0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1232e7: 48 39 ca cmp %rcx,%rdx 0.00 : 1232ea: 0f 28 4e fe movaps -0x2(%rsi),%xmm1 0.00 : 1232ee: 72 07 jb 1232f7 <__memmove_ssse3+0x747> 0.00 : 1232f0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1232f7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1232fb: 41 ff e1 jmpq *%r9 0.00 : 1232fe: 0f 0b ud2 0.00 : 123300: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123307: 0f 28 56 ee movaps -0x12(%rsi),%xmm2 0.00 : 12330b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12330f: 0f 28 5e de movaps -0x22(%rsi),%xmm3 0.00 : 123313: 0f 28 66 ce movaps -0x32(%rsi),%xmm4 0.00 : 123317: 0f 28 6e be movaps -0x42(%rsi),%xmm5 0.00 : 12331b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12331f: 66 0f 3a 0f ca 02 palignr $0x2,%xmm2,%xmm1 0.00 : 123325: 66 0f 3a 0f d3 02 palignr $0x2,%xmm3,%xmm2 0.00 : 12332b: 66 0f 3a 0f dc 02 palignr $0x2,%xmm4,%xmm3 0.00 : 123331: 66 0f 3a 0f e5 02 palignr $0x2,%xmm5,%xmm4 0.00 : 123337: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12333b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12333e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123342: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123346: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12334a: 72 08 jb 123354 <__memmove_ssse3+0x7a4> 0.00 : 12334c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12334f: 41 ff e1 jmpq *%r9 0.00 : 123352: 0f 0b ud2 0.00 : 123354: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123357: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12335b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123360: 4c 8d 1d 39 0f 02 00 lea 0x20f39(%rip),%r11 # 1442a0 0.00 : 123367: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12336b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12336f: ff e2 jmpq *%rdx 0.00 : 123371: 0f 0b ud2 0.00 : 123373: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12337a: 84 00 00 00 00 00 0.00 : 123380: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123387: 48 39 ca cmp %rcx,%rdx 0.00 : 12338a: 0f 28 4e fd movaps -0x3(%rsi),%xmm1 0.00 : 12338e: 72 07 jb 123397 <__memmove_ssse3+0x7e7> 0.00 : 123390: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123397: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12339b: 41 ff e1 jmpq *%r9 0.00 : 12339e: 0f 0b ud2 0.00 : 1233a0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1233a7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1233ab: 0f 28 56 0d movaps 0xd(%rsi),%xmm2 0.00 : 1233af: 0f 28 5e 1d movaps 0x1d(%rsi),%xmm3 0.00 : 1233b3: 0f 28 66 2d movaps 0x2d(%rsi),%xmm4 0.00 : 1233b7: 0f 28 6e 3d movaps 0x3d(%rsi),%xmm5 0.00 : 1233bb: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1233bf: 66 0f 3a 0f ec 03 palignr $0x3,%xmm4,%xmm5 0.00 : 1233c5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 1233c9: 66 0f 3a 0f e3 03 palignr $0x3,%xmm3,%xmm4 0.00 : 1233cf: 66 0f 3a 0f da 03 palignr $0x3,%xmm2,%xmm3 0.00 : 1233d5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 1233d9: 66 0f 3a 0f d1 03 palignr $0x3,%xmm1,%xmm2 0.00 : 1233df: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 1233e3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 1233e8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 1233ec: 72 0d jb 1233fb <__memmove_ssse3+0x84b> 0.00 : 1233ee: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1233f2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1233f6: 41 ff e1 jmpq *%r9 0.00 : 1233f9: 0f 0b ud2 0.00 : 1233fb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1233ff: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123403: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123407: 48 01 d7 add %rdx,%rdi 0.00 : 12340a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12340f: 48 01 d6 add %rdx,%rsi 0.00 : 123412: 4c 8d 1d 87 0e 02 00 lea 0x20e87(%rip),%r11 # 1442a0 0.00 : 123419: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12341d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123421: ff e2 jmpq *%rdx 0.00 : 123423: 0f 0b ud2 0.00 : 123425: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12342c: 00 00 00 00 0.00 : 123430: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123437: 48 39 ca cmp %rcx,%rdx 0.00 : 12343a: 0f 28 4e fd movaps -0x3(%rsi),%xmm1 0.00 : 12343e: 72 07 jb 123447 <__memmove_ssse3+0x897> 0.00 : 123440: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123447: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12344b: 41 ff e1 jmpq *%r9 0.00 : 12344e: 0f 0b ud2 0.00 : 123450: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123457: 0f 28 56 ed movaps -0x13(%rsi),%xmm2 0.00 : 12345b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12345f: 0f 28 5e dd movaps -0x23(%rsi),%xmm3 0.00 : 123463: 0f 28 66 cd movaps -0x33(%rsi),%xmm4 0.00 : 123467: 0f 28 6e bd movaps -0x43(%rsi),%xmm5 0.00 : 12346b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12346f: 66 0f 3a 0f ca 03 palignr $0x3,%xmm2,%xmm1 0.00 : 123475: 66 0f 3a 0f d3 03 palignr $0x3,%xmm3,%xmm2 0.00 : 12347b: 66 0f 3a 0f dc 03 palignr $0x3,%xmm4,%xmm3 0.00 : 123481: 66 0f 3a 0f e5 03 palignr $0x3,%xmm5,%xmm4 0.00 : 123487: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12348b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12348e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123492: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123496: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12349a: 72 08 jb 1234a4 <__memmove_ssse3+0x8f4> 0.00 : 12349c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12349f: 41 ff e1 jmpq *%r9 0.00 : 1234a2: 0f 0b ud2 0.00 : 1234a4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1234a7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1234ab: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1234b0: 4c 8d 1d e9 0d 02 00 lea 0x20de9(%rip),%r11 # 1442a0 0.00 : 1234b7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1234bb: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1234bf: ff e2 jmpq *%rdx 0.00 : 1234c1: 0f 0b ud2 0.00 : 1234c3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1234ca: 84 00 00 00 00 00 0.00 : 1234d0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1234d7: 48 39 ca cmp %rcx,%rdx 0.00 : 1234da: 0f 28 4e fc movaps -0x4(%rsi),%xmm1 0.00 : 1234de: 72 07 jb 1234e7 <__memmove_ssse3+0x937> 0.00 : 1234e0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1234e7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1234eb: 41 ff e1 jmpq *%r9 0.00 : 1234ee: 0f 0b ud2 0.00 : 1234f0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1234f7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1234fb: 0f 28 56 0c movaps 0xc(%rsi),%xmm2 0.00 : 1234ff: 0f 28 5e 1c movaps 0x1c(%rsi),%xmm3 0.00 : 123503: 0f 28 66 2c movaps 0x2c(%rsi),%xmm4 0.00 : 123507: 0f 28 6e 3c movaps 0x3c(%rsi),%xmm5 0.00 : 12350b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12350f: 66 0f 3a 0f ec 04 palignr $0x4,%xmm4,%xmm5 0.00 : 123515: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123519: 66 0f 3a 0f e3 04 palignr $0x4,%xmm3,%xmm4 0.00 : 12351f: 66 0f 3a 0f da 04 palignr $0x4,%xmm2,%xmm3 0.00 : 123525: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123529: 66 0f 3a 0f d1 04 palignr $0x4,%xmm1,%xmm2 0.00 : 12352f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123533: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123538: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12353c: 72 0d jb 12354b <__memmove_ssse3+0x99b> 0.00 : 12353e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123542: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123546: 41 ff e1 jmpq *%r9 0.00 : 123549: 0f 0b ud2 0.00 : 12354b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12354f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123553: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123557: 48 01 d7 add %rdx,%rdi 0.00 : 12355a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12355f: 48 01 d6 add %rdx,%rsi 0.00 : 123562: 4c 8d 1d 37 0d 02 00 lea 0x20d37(%rip),%r11 # 1442a0 0.00 : 123569: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12356d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123571: ff e2 jmpq *%rdx 0.00 : 123573: 0f 0b ud2 0.00 : 123575: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12357c: 00 00 00 00 0.00 : 123580: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123587: 48 39 ca cmp %rcx,%rdx 0.00 : 12358a: 0f 28 4e fc movaps -0x4(%rsi),%xmm1 0.00 : 12358e: 72 07 jb 123597 <__memmove_ssse3+0x9e7> 0.00 : 123590: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123597: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12359b: 41 ff e1 jmpq *%r9 0.00 : 12359e: 0f 0b ud2 0.00 : 1235a0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1235a7: 0f 28 56 ec movaps -0x14(%rsi),%xmm2 0.00 : 1235ab: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1235af: 0f 28 5e dc movaps -0x24(%rsi),%xmm3 0.00 : 1235b3: 0f 28 66 cc movaps -0x34(%rsi),%xmm4 0.00 : 1235b7: 0f 28 6e bc movaps -0x44(%rsi),%xmm5 0.00 : 1235bb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1235bf: 66 0f 3a 0f ca 04 palignr $0x4,%xmm2,%xmm1 0.00 : 1235c5: 66 0f 3a 0f d3 04 palignr $0x4,%xmm3,%xmm2 0.00 : 1235cb: 66 0f 3a 0f dc 04 palignr $0x4,%xmm4,%xmm3 0.00 : 1235d1: 66 0f 3a 0f e5 04 palignr $0x4,%xmm5,%xmm4 0.00 : 1235d7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1235db: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1235de: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1235e2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1235e6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1235ea: 72 08 jb 1235f4 <__memmove_ssse3+0xa44> 0.00 : 1235ec: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1235ef: 41 ff e1 jmpq *%r9 0.00 : 1235f2: 0f 0b ud2 0.00 : 1235f4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1235f7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1235fb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123600: 4c 8d 1d 99 0c 02 00 lea 0x20c99(%rip),%r11 # 1442a0 0.00 : 123607: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12360b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12360f: ff e2 jmpq *%rdx 0.00 : 123611: 0f 0b ud2 0.00 : 123613: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12361a: 84 00 00 00 00 00 0.00 : 123620: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123627: 48 39 ca cmp %rcx,%rdx 0.00 : 12362a: 0f 28 4e fb movaps -0x5(%rsi),%xmm1 0.00 : 12362e: 72 07 jb 123637 <__memmove_ssse3+0xa87> 0.00 : 123630: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123637: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12363b: 41 ff e1 jmpq *%r9 0.00 : 12363e: 0f 0b ud2 0.00 : 123640: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123647: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12364b: 0f 28 56 0b movaps 0xb(%rsi),%xmm2 0.00 : 12364f: 0f 28 5e 1b movaps 0x1b(%rsi),%xmm3 0.00 : 123653: 0f 28 66 2b movaps 0x2b(%rsi),%xmm4 0.00 : 123657: 0f 28 6e 3b movaps 0x3b(%rsi),%xmm5 0.00 : 12365b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12365f: 66 0f 3a 0f ec 05 palignr $0x5,%xmm4,%xmm5 0.00 : 123665: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123669: 66 0f 3a 0f e3 05 palignr $0x5,%xmm3,%xmm4 0.00 : 12366f: 66 0f 3a 0f da 05 palignr $0x5,%xmm2,%xmm3 0.00 : 123675: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123679: 66 0f 3a 0f d1 05 palignr $0x5,%xmm1,%xmm2 0.00 : 12367f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123683: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123688: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12368c: 72 0d jb 12369b <__memmove_ssse3+0xaeb> 0.00 : 12368e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123692: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123696: 41 ff e1 jmpq *%r9 0.00 : 123699: 0f 0b ud2 0.00 : 12369b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12369f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1236a3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1236a7: 48 01 d7 add %rdx,%rdi 0.00 : 1236aa: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1236af: 48 01 d6 add %rdx,%rsi 0.00 : 1236b2: 4c 8d 1d e7 0b 02 00 lea 0x20be7(%rip),%r11 # 1442a0 0.00 : 1236b9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1236bd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1236c1: ff e2 jmpq *%rdx 0.00 : 1236c3: 0f 0b ud2 0.00 : 1236c5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1236cc: 00 00 00 00 0.00 : 1236d0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1236d7: 48 39 ca cmp %rcx,%rdx 0.00 : 1236da: 0f 28 4e fb movaps -0x5(%rsi),%xmm1 0.00 : 1236de: 72 07 jb 1236e7 <__memmove_ssse3+0xb37> 0.00 : 1236e0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1236e7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1236eb: 41 ff e1 jmpq *%r9 0.00 : 1236ee: 0f 0b ud2 0.00 : 1236f0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1236f7: 0f 28 56 eb movaps -0x15(%rsi),%xmm2 0.00 : 1236fb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1236ff: 0f 28 5e db movaps -0x25(%rsi),%xmm3 0.00 : 123703: 0f 28 66 cb movaps -0x35(%rsi),%xmm4 0.00 : 123707: 0f 28 6e bb movaps -0x45(%rsi),%xmm5 0.00 : 12370b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12370f: 66 0f 3a 0f ca 05 palignr $0x5,%xmm2,%xmm1 0.00 : 123715: 66 0f 3a 0f d3 05 palignr $0x5,%xmm3,%xmm2 0.00 : 12371b: 66 0f 3a 0f dc 05 palignr $0x5,%xmm4,%xmm3 0.00 : 123721: 66 0f 3a 0f e5 05 palignr $0x5,%xmm5,%xmm4 0.00 : 123727: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12372b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12372e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123732: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123736: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12373a: 72 08 jb 123744 <__memmove_ssse3+0xb94> 0.00 : 12373c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12373f: 41 ff e1 jmpq *%r9 0.00 : 123742: 0f 0b ud2 0.00 : 123744: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123747: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12374b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123750: 4c 8d 1d 49 0b 02 00 lea 0x20b49(%rip),%r11 # 1442a0 0.00 : 123757: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12375b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12375f: ff e2 jmpq *%rdx 0.00 : 123761: 0f 0b ud2 0.00 : 123763: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12376a: 84 00 00 00 00 00 0.00 : 123770: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123777: 48 39 ca cmp %rcx,%rdx 0.00 : 12377a: 0f 28 4e fa movaps -0x6(%rsi),%xmm1 0.00 : 12377e: 72 07 jb 123787 <__memmove_ssse3+0xbd7> 0.00 : 123780: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123787: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12378b: 41 ff e1 jmpq *%r9 0.00 : 12378e: 0f 0b ud2 0.00 : 123790: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123797: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12379b: 0f 28 56 0a movaps 0xa(%rsi),%xmm2 0.00 : 12379f: 0f 28 5e 1a movaps 0x1a(%rsi),%xmm3 0.00 : 1237a3: 0f 28 66 2a movaps 0x2a(%rsi),%xmm4 0.00 : 1237a7: 0f 28 6e 3a movaps 0x3a(%rsi),%xmm5 0.00 : 1237ab: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1237af: 66 0f 3a 0f ec 06 palignr $0x6,%xmm4,%xmm5 0.00 : 1237b5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 1237b9: 66 0f 3a 0f e3 06 palignr $0x6,%xmm3,%xmm4 0.00 : 1237bf: 66 0f 3a 0f da 06 palignr $0x6,%xmm2,%xmm3 0.00 : 1237c5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 1237c9: 66 0f 3a 0f d1 06 palignr $0x6,%xmm1,%xmm2 0.00 : 1237cf: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 1237d3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 1237d8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 1237dc: 72 0d jb 1237eb <__memmove_ssse3+0xc3b> 0.00 : 1237de: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1237e2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1237e6: 41 ff e1 jmpq *%r9 0.00 : 1237e9: 0f 0b ud2 0.00 : 1237eb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1237ef: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1237f3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1237f7: 48 01 d7 add %rdx,%rdi 0.00 : 1237fa: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1237ff: 48 01 d6 add %rdx,%rsi 0.00 : 123802: 4c 8d 1d 97 0a 02 00 lea 0x20a97(%rip),%r11 # 1442a0 0.00 : 123809: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12380d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123811: ff e2 jmpq *%rdx 0.00 : 123813: 0f 0b ud2 0.00 : 123815: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12381c: 00 00 00 00 0.00 : 123820: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123827: 48 39 ca cmp %rcx,%rdx 0.00 : 12382a: 0f 28 4e fa movaps -0x6(%rsi),%xmm1 0.00 : 12382e: 72 07 jb 123837 <__memmove_ssse3+0xc87> 0.00 : 123830: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123837: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12383b: 41 ff e1 jmpq *%r9 0.00 : 12383e: 0f 0b ud2 0.00 : 123840: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123847: 0f 28 56 ea movaps -0x16(%rsi),%xmm2 0.00 : 12384b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12384f: 0f 28 5e da movaps -0x26(%rsi),%xmm3 0.00 : 123853: 0f 28 66 ca movaps -0x36(%rsi),%xmm4 0.00 : 123857: 0f 28 6e ba movaps -0x46(%rsi),%xmm5 0.00 : 12385b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12385f: 66 0f 3a 0f ca 06 palignr $0x6,%xmm2,%xmm1 0.00 : 123865: 66 0f 3a 0f d3 06 palignr $0x6,%xmm3,%xmm2 0.00 : 12386b: 66 0f 3a 0f dc 06 palignr $0x6,%xmm4,%xmm3 0.00 : 123871: 66 0f 3a 0f e5 06 palignr $0x6,%xmm5,%xmm4 0.00 : 123877: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12387b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12387e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123882: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123886: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12388a: 72 08 jb 123894 <__memmove_ssse3+0xce4> 0.00 : 12388c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12388f: 41 ff e1 jmpq *%r9 0.00 : 123892: 0f 0b ud2 0.00 : 123894: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123897: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12389b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1238a0: 4c 8d 1d f9 09 02 00 lea 0x209f9(%rip),%r11 # 1442a0 0.00 : 1238a7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1238ab: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1238af: ff e2 jmpq *%rdx 0.00 : 1238b1: 0f 0b ud2 0.00 : 1238b3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1238ba: 84 00 00 00 00 00 0.00 : 1238c0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1238c7: 48 39 ca cmp %rcx,%rdx 0.00 : 1238ca: 0f 28 4e f9 movaps -0x7(%rsi),%xmm1 0.00 : 1238ce: 72 07 jb 1238d7 <__memmove_ssse3+0xd27> 0.00 : 1238d0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1238d7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1238db: 41 ff e1 jmpq *%r9 0.00 : 1238de: 0f 0b ud2 0.00 : 1238e0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1238e7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1238eb: 0f 28 56 09 movaps 0x9(%rsi),%xmm2 0.00 : 1238ef: 0f 28 5e 19 movaps 0x19(%rsi),%xmm3 0.00 : 1238f3: 0f 28 66 29 movaps 0x29(%rsi),%xmm4 0.00 : 1238f7: 0f 28 6e 39 movaps 0x39(%rsi),%xmm5 0.00 : 1238fb: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1238ff: 66 0f 3a 0f ec 07 palignr $0x7,%xmm4,%xmm5 0.00 : 123905: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123909: 66 0f 3a 0f e3 07 palignr $0x7,%xmm3,%xmm4 0.00 : 12390f: 66 0f 3a 0f da 07 palignr $0x7,%xmm2,%xmm3 0.00 : 123915: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123919: 66 0f 3a 0f d1 07 palignr $0x7,%xmm1,%xmm2 0.00 : 12391f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123923: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123928: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12392c: 72 0d jb 12393b <__memmove_ssse3+0xd8b> 0.00 : 12392e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123932: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123936: 41 ff e1 jmpq *%r9 0.00 : 123939: 0f 0b ud2 0.00 : 12393b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12393f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123943: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123947: 48 01 d7 add %rdx,%rdi 0.00 : 12394a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12394f: 48 01 d6 add %rdx,%rsi 0.00 : 123952: 4c 8d 1d 47 09 02 00 lea 0x20947(%rip),%r11 # 1442a0 0.00 : 123959: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12395d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123961: ff e2 jmpq *%rdx 0.00 : 123963: 0f 0b ud2 0.00 : 123965: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12396c: 00 00 00 00 0.00 : 123970: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123977: 48 39 ca cmp %rcx,%rdx 0.00 : 12397a: 0f 28 4e f9 movaps -0x7(%rsi),%xmm1 0.00 : 12397e: 72 07 jb 123987 <__memmove_ssse3+0xdd7> 0.00 : 123980: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123987: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12398b: 41 ff e1 jmpq *%r9 0.00 : 12398e: 0f 0b ud2 0.00 : 123990: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123997: 0f 28 56 e9 movaps -0x17(%rsi),%xmm2 0.00 : 12399b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12399f: 0f 28 5e d9 movaps -0x27(%rsi),%xmm3 0.00 : 1239a3: 0f 28 66 c9 movaps -0x37(%rsi),%xmm4 0.00 : 1239a7: 0f 28 6e b9 movaps -0x47(%rsi),%xmm5 0.00 : 1239ab: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1239af: 66 0f 3a 0f ca 07 palignr $0x7,%xmm2,%xmm1 0.00 : 1239b5: 66 0f 3a 0f d3 07 palignr $0x7,%xmm3,%xmm2 0.00 : 1239bb: 66 0f 3a 0f dc 07 palignr $0x7,%xmm4,%xmm3 0.00 : 1239c1: 66 0f 3a 0f e5 07 palignr $0x7,%xmm5,%xmm4 0.00 : 1239c7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1239cb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1239ce: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1239d2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1239d6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1239da: 72 08 jb 1239e4 <__memmove_ssse3+0xe34> 0.00 : 1239dc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1239df: 41 ff e1 jmpq *%r9 0.00 : 1239e2: 0f 0b ud2 0.00 : 1239e4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1239e7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1239eb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1239f0: 4c 8d 1d a9 08 02 00 lea 0x208a9(%rip),%r11 # 1442a0 0.00 : 1239f7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1239fb: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1239ff: ff e2 jmpq *%rdx 0.00 : 123a01: 0f 0b ud2 0.00 : 123a03: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123a0a: 84 00 00 00 00 00 0.00 : 123a10: 4d 8d 89 25 00 00 00 lea 0x25(%r9),%r9 0.21 : 123a17: 48 39 ca cmp %rcx,%rdx 0.00 : 123a1a: 0f 28 4e f8 movaps -0x8(%rsi),%xmm1 0.00 : 123a1e: 72 07 jb 123a27 <__memmove_ssse3+0xe77> 0.00 : 123a20: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123a27: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123a2b: 41 ff e1 jmpq *%r9 0.00 : 123a2e: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123a35: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123a39: 0f 28 56 08 movaps 0x8(%rsi),%xmm2 0.00 : 123a3d: 0f 28 5e 18 movaps 0x18(%rsi),%xmm3 0.00 : 123a41: 0f 28 66 28 movaps 0x28(%rsi),%xmm4 0.00 : 123a45: 0f 28 6e 38 movaps 0x38(%rsi),%xmm5 0.00 : 123a49: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123a4d: 66 0f 3a 0f ec 08 palignr $0x8,%xmm4,%xmm5 0.00 : 123a53: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123a57: 66 0f 3a 0f e3 08 palignr $0x8,%xmm3,%xmm4 0.00 : 123a5d: 66 0f 3a 0f da 08 palignr $0x8,%xmm2,%xmm3 0.00 : 123a63: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123a67: 66 0f 3a 0f d1 08 palignr $0x8,%xmm1,%xmm2 0.00 : 123a6d: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123a71: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123a76: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123a7a: 72 14 jb 123a90 <__memmove_ssse3+0xee0> 0.00 : 123a7c: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123a80: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123a84: 41 ff e1 jmpq *%r9 0.00 : 123a87: 0f 0b ud2 0.00 : 123a89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 123a90: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123a94: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123a98: 48 01 d6 add %rdx,%rsi 0.00 : 123a9b: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123a9f: 48 01 d7 add %rdx,%rdi 0.00 : 123aa2: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123aa7: 4c 8d 1d f2 07 02 00 lea 0x207f2(%rip),%r11 # 1442a0 0.00 : 123aae: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.21 : 123ab2: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123ab6: ff e2 jmpq *%rdx 0.00 : 123ab8: 0f 0b ud2 0.00 : 123aba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 123ac0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123ac7: 48 39 ca cmp %rcx,%rdx 0.00 : 123aca: 0f 28 4e f8 movaps -0x8(%rsi),%xmm1 0.00 : 123ace: 72 07 jb 123ad7 <__memmove_ssse3+0xf27> 0.00 : 123ad0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123ad7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123adb: 41 ff e1 jmpq *%r9 0.00 : 123ade: 0f 0b ud2 0.00 : 123ae0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123ae7: 0f 28 56 e8 movaps -0x18(%rsi),%xmm2 0.00 : 123aeb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123aef: 0f 28 5e d8 movaps -0x28(%rsi),%xmm3 0.00 : 123af3: 0f 28 66 c8 movaps -0x38(%rsi),%xmm4 0.00 : 123af7: 0f 28 6e b8 movaps -0x48(%rsi),%xmm5 0.00 : 123afb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123aff: 66 0f 3a 0f ca 08 palignr $0x8,%xmm2,%xmm1 0.00 : 123b05: 66 0f 3a 0f d3 08 palignr $0x8,%xmm3,%xmm2 0.00 : 123b0b: 66 0f 3a 0f dc 08 palignr $0x8,%xmm4,%xmm3 0.00 : 123b11: 66 0f 3a 0f e5 08 palignr $0x8,%xmm5,%xmm4 0.00 : 123b17: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123b1b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123b1e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123b22: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123b26: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123b2a: 72 08 jb 123b34 <__memmove_ssse3+0xf84> 0.00 : 123b2c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123b2f: 41 ff e1 jmpq *%r9 0.00 : 123b32: 0f 0b ud2 0.00 : 123b34: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123b37: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123b3b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123b40: 4c 8d 1d 59 07 02 00 lea 0x20759(%rip),%r11 # 1442a0 0.00 : 123b47: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123b4b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123b4f: ff e2 jmpq *%rdx 0.00 : 123b51: 0f 0b ud2 0.00 : 123b53: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123b5a: 84 00 00 00 00 00 0.00 : 123b60: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123b67: 48 39 ca cmp %rcx,%rdx 0.00 : 123b6a: 0f 28 4e f7 movaps -0x9(%rsi),%xmm1 0.00 : 123b6e: 72 07 jb 123b77 <__memmove_ssse3+0xfc7> 0.00 : 123b70: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123b77: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123b7b: 41 ff e1 jmpq *%r9 0.00 : 123b7e: 0f 0b ud2 0.00 : 123b80: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123b87: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123b8b: 0f 28 56 07 movaps 0x7(%rsi),%xmm2 0.00 : 123b8f: 0f 28 5e 17 movaps 0x17(%rsi),%xmm3 0.00 : 123b93: 0f 28 66 27 movaps 0x27(%rsi),%xmm4 0.00 : 123b97: 0f 28 6e 37 movaps 0x37(%rsi),%xmm5 0.00 : 123b9b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123b9f: 66 0f 3a 0f ec 09 palignr $0x9,%xmm4,%xmm5 0.00 : 123ba5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123ba9: 66 0f 3a 0f e3 09 palignr $0x9,%xmm3,%xmm4 0.00 : 123baf: 66 0f 3a 0f da 09 palignr $0x9,%xmm2,%xmm3 0.00 : 123bb5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123bb9: 66 0f 3a 0f d1 09 palignr $0x9,%xmm1,%xmm2 0.00 : 123bbf: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123bc3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123bc8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123bcc: 72 0d jb 123bdb <__memmove_ssse3+0x102b> 0.00 : 123bce: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123bd2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123bd6: 41 ff e1 jmpq *%r9 0.00 : 123bd9: 0f 0b ud2 0.00 : 123bdb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123bdf: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123be3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123be7: 48 01 d7 add %rdx,%rdi 0.00 : 123bea: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123bef: 48 01 d6 add %rdx,%rsi 0.00 : 123bf2: 4c 8d 1d a7 06 02 00 lea 0x206a7(%rip),%r11 # 1442a0 0.00 : 123bf9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123bfd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123c01: ff e2 jmpq *%rdx 0.00 : 123c03: 0f 0b ud2 0.00 : 123c05: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123c0c: 00 00 00 00 0.00 : 123c10: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123c17: 48 39 ca cmp %rcx,%rdx 0.00 : 123c1a: 0f 28 4e f7 movaps -0x9(%rsi),%xmm1 0.00 : 123c1e: 72 07 jb 123c27 <__memmove_ssse3+0x1077> 0.00 : 123c20: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123c27: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123c2b: 41 ff e1 jmpq *%r9 0.00 : 123c2e: 0f 0b ud2 0.00 : 123c30: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123c37: 0f 28 56 e7 movaps -0x19(%rsi),%xmm2 0.00 : 123c3b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123c3f: 0f 28 5e d7 movaps -0x29(%rsi),%xmm3 0.00 : 123c43: 0f 28 66 c7 movaps -0x39(%rsi),%xmm4 0.00 : 123c47: 0f 28 6e b7 movaps -0x49(%rsi),%xmm5 0.00 : 123c4b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123c4f: 66 0f 3a 0f ca 09 palignr $0x9,%xmm2,%xmm1 0.00 : 123c55: 66 0f 3a 0f d3 09 palignr $0x9,%xmm3,%xmm2 0.00 : 123c5b: 66 0f 3a 0f dc 09 palignr $0x9,%xmm4,%xmm3 0.00 : 123c61: 66 0f 3a 0f e5 09 palignr $0x9,%xmm5,%xmm4 0.00 : 123c67: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123c6b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123c6e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123c72: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123c76: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123c7a: 72 08 jb 123c84 <__memmove_ssse3+0x10d4> 0.00 : 123c7c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123c7f: 41 ff e1 jmpq *%r9 0.00 : 123c82: 0f 0b ud2 0.00 : 123c84: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123c87: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123c8b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123c90: 4c 8d 1d 09 06 02 00 lea 0x20609(%rip),%r11 # 1442a0 0.00 : 123c97: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123c9b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123c9f: ff e2 jmpq *%rdx 0.00 : 123ca1: 0f 0b ud2 0.00 : 123ca3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123caa: 84 00 00 00 00 00 0.00 : 123cb0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123cb7: 48 39 ca cmp %rcx,%rdx 0.00 : 123cba: 0f 28 4e f6 movaps -0xa(%rsi),%xmm1 0.00 : 123cbe: 72 07 jb 123cc7 <__memmove_ssse3+0x1117> 0.00 : 123cc0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123cc7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123ccb: 41 ff e1 jmpq *%r9 0.00 : 123cce: 0f 0b ud2 0.00 : 123cd0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123cd7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123cdb: 0f 28 56 06 movaps 0x6(%rsi),%xmm2 0.00 : 123cdf: 0f 28 5e 16 movaps 0x16(%rsi),%xmm3 0.00 : 123ce3: 0f 28 66 26 movaps 0x26(%rsi),%xmm4 0.00 : 123ce7: 0f 28 6e 36 movaps 0x36(%rsi),%xmm5 0.00 : 123ceb: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123cef: 66 0f 3a 0f ec 0a palignr $0xa,%xmm4,%xmm5 0.00 : 123cf5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123cf9: 66 0f 3a 0f e3 0a palignr $0xa,%xmm3,%xmm4 0.00 : 123cff: 66 0f 3a 0f da 0a palignr $0xa,%xmm2,%xmm3 0.00 : 123d05: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123d09: 66 0f 3a 0f d1 0a palignr $0xa,%xmm1,%xmm2 0.00 : 123d0f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123d13: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123d18: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123d1c: 72 0d jb 123d2b <__memmove_ssse3+0x117b> 0.00 : 123d1e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123d22: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123d26: 41 ff e1 jmpq *%r9 0.00 : 123d29: 0f 0b ud2 0.00 : 123d2b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123d2f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123d33: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123d37: 48 01 d7 add %rdx,%rdi 0.00 : 123d3a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123d3f: 48 01 d6 add %rdx,%rsi 0.00 : 123d42: 4c 8d 1d 57 05 02 00 lea 0x20557(%rip),%r11 # 1442a0 0.00 : 123d49: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123d4d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123d51: ff e2 jmpq *%rdx 0.00 : 123d53: 0f 0b ud2 0.00 : 123d55: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123d5c: 00 00 00 00 0.00 : 123d60: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123d67: 48 39 ca cmp %rcx,%rdx 0.00 : 123d6a: 0f 28 4e f6 movaps -0xa(%rsi),%xmm1 0.00 : 123d6e: 72 07 jb 123d77 <__memmove_ssse3+0x11c7> 0.00 : 123d70: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123d77: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123d7b: 41 ff e1 jmpq *%r9 0.00 : 123d7e: 0f 0b ud2 0.00 : 123d80: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123d87: 0f 28 56 e6 movaps -0x1a(%rsi),%xmm2 0.00 : 123d8b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123d8f: 0f 28 5e d6 movaps -0x2a(%rsi),%xmm3 0.00 : 123d93: 0f 28 66 c6 movaps -0x3a(%rsi),%xmm4 0.00 : 123d97: 0f 28 6e b6 movaps -0x4a(%rsi),%xmm5 0.00 : 123d9b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123d9f: 66 0f 3a 0f ca 0a palignr $0xa,%xmm2,%xmm1 0.00 : 123da5: 66 0f 3a 0f d3 0a palignr $0xa,%xmm3,%xmm2 0.00 : 123dab: 66 0f 3a 0f dc 0a palignr $0xa,%xmm4,%xmm3 0.00 : 123db1: 66 0f 3a 0f e5 0a palignr $0xa,%xmm5,%xmm4 0.00 : 123db7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123dbb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123dbe: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123dc2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123dc6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123dca: 72 08 jb 123dd4 <__memmove_ssse3+0x1224> 0.00 : 123dcc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123dcf: 41 ff e1 jmpq *%r9 0.00 : 123dd2: 0f 0b ud2 0.00 : 123dd4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123dd7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123ddb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123de0: 4c 8d 1d b9 04 02 00 lea 0x204b9(%rip),%r11 # 1442a0 0.00 : 123de7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123deb: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123def: ff e2 jmpq *%rdx 0.00 : 123df1: 0f 0b ud2 0.00 : 123df3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123dfa: 84 00 00 00 00 00 0.00 : 123e00: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123e07: 48 39 ca cmp %rcx,%rdx 0.00 : 123e0a: 0f 28 4e f5 movaps -0xb(%rsi),%xmm1 0.00 : 123e0e: 72 07 jb 123e17 <__memmove_ssse3+0x1267> 0.00 : 123e10: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123e17: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123e1b: 41 ff e1 jmpq *%r9 0.00 : 123e1e: 0f 0b ud2 0.00 : 123e20: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123e27: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123e2b: 0f 28 56 05 movaps 0x5(%rsi),%xmm2 0.00 : 123e2f: 0f 28 5e 15 movaps 0x15(%rsi),%xmm3 0.00 : 123e33: 0f 28 66 25 movaps 0x25(%rsi),%xmm4 0.00 : 123e37: 0f 28 6e 35 movaps 0x35(%rsi),%xmm5 0.00 : 123e3b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123e3f: 66 0f 3a 0f ec 0b palignr $0xb,%xmm4,%xmm5 0.00 : 123e45: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123e49: 66 0f 3a 0f e3 0b palignr $0xb,%xmm3,%xmm4 0.00 : 123e4f: 66 0f 3a 0f da 0b palignr $0xb,%xmm2,%xmm3 0.00 : 123e55: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123e59: 66 0f 3a 0f d1 0b palignr $0xb,%xmm1,%xmm2 0.00 : 123e5f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123e63: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123e68: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123e6c: 72 0d jb 123e7b <__memmove_ssse3+0x12cb> 0.00 : 123e6e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123e72: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123e76: 41 ff e1 jmpq *%r9 0.00 : 123e79: 0f 0b ud2 0.00 : 123e7b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123e7f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123e83: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123e87: 48 01 d7 add %rdx,%rdi 0.00 : 123e8a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123e8f: 48 01 d6 add %rdx,%rsi 0.00 : 123e92: 4c 8d 1d 07 04 02 00 lea 0x20407(%rip),%r11 # 1442a0 0.00 : 123e99: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123e9d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123ea1: ff e2 jmpq *%rdx 0.00 : 123ea3: 0f 0b ud2 0.00 : 123ea5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123eac: 00 00 00 00 0.00 : 123eb0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123eb7: 48 39 ca cmp %rcx,%rdx 0.00 : 123eba: 0f 28 4e f5 movaps -0xb(%rsi),%xmm1 0.00 : 123ebe: 72 07 jb 123ec7 <__memmove_ssse3+0x1317> 0.00 : 123ec0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123ec7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123ecb: 41 ff e1 jmpq *%r9 0.00 : 123ece: 0f 0b ud2 0.00 : 123ed0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123ed7: 0f 28 56 e5 movaps -0x1b(%rsi),%xmm2 0.00 : 123edb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123edf: 0f 28 5e d5 movaps -0x2b(%rsi),%xmm3 0.00 : 123ee3: 0f 28 66 c5 movaps -0x3b(%rsi),%xmm4 0.00 : 123ee7: 0f 28 6e b5 movaps -0x4b(%rsi),%xmm5 0.00 : 123eeb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123eef: 66 0f 3a 0f ca 0b palignr $0xb,%xmm2,%xmm1 0.00 : 123ef5: 66 0f 3a 0f d3 0b palignr $0xb,%xmm3,%xmm2 0.00 : 123efb: 66 0f 3a 0f dc 0b palignr $0xb,%xmm4,%xmm3 0.00 : 123f01: 66 0f 3a 0f e5 0b palignr $0xb,%xmm5,%xmm4 0.00 : 123f07: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123f0b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123f0e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123f12: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123f16: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123f1a: 72 08 jb 123f24 <__memmove_ssse3+0x1374> 0.00 : 123f1c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123f1f: 41 ff e1 jmpq *%r9 0.00 : 123f22: 0f 0b ud2 0.00 : 123f24: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123f27: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123f2b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123f30: 4c 8d 1d 69 03 02 00 lea 0x20369(%rip),%r11 # 1442a0 0.00 : 123f37: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123f3b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123f3f: ff e2 jmpq *%rdx 0.00 : 123f41: 0f 0b ud2 0.00 : 123f43: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123f4a: 84 00 00 00 00 00 0.00 : 123f50: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123f57: 48 39 ca cmp %rcx,%rdx 0.00 : 123f5a: 0f 28 4e f4 movaps -0xc(%rsi),%xmm1 0.00 : 123f5e: 72 07 jb 123f67 <__memmove_ssse3+0x13b7> 0.00 : 123f60: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123f67: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123f6b: 41 ff e1 jmpq *%r9 0.00 : 123f6e: 0f 0b ud2 0.00 : 123f70: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123f77: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123f7b: 0f 28 56 04 movaps 0x4(%rsi),%xmm2 0.00 : 123f7f: 0f 28 5e 14 movaps 0x14(%rsi),%xmm3 0.00 : 123f83: 0f 28 66 24 movaps 0x24(%rsi),%xmm4 0.00 : 123f87: 0f 28 6e 34 movaps 0x34(%rsi),%xmm5 0.00 : 123f8b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123f8f: 66 0f 3a 0f ec 0c palignr $0xc,%xmm4,%xmm5 0.00 : 123f95: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123f99: 66 0f 3a 0f e3 0c palignr $0xc,%xmm3,%xmm4 0.00 : 123f9f: 66 0f 3a 0f da 0c palignr $0xc,%xmm2,%xmm3 0.00 : 123fa5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123fa9: 66 0f 3a 0f d1 0c palignr $0xc,%xmm1,%xmm2 0.00 : 123faf: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123fb3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123fb8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123fbc: 72 0d jb 123fcb <__memmove_ssse3+0x141b> 0.00 : 123fbe: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123fc2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123fc6: 41 ff e1 jmpq *%r9 0.00 : 123fc9: 0f 0b ud2 0.00 : 123fcb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123fcf: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123fd3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123fd7: 48 01 d7 add %rdx,%rdi 0.00 : 123fda: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123fdf: 48 01 d6 add %rdx,%rsi 0.00 : 123fe2: 4c 8d 1d b7 02 02 00 lea 0x202b7(%rip),%r11 # 1442a0 0.00 : 123fe9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123fed: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123ff1: ff e2 jmpq *%rdx 0.00 : 123ff3: 0f 0b ud2 0.00 : 123ff5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123ffc: 00 00 00 00 0.00 : 124000: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.21 : 124007: 48 39 ca cmp %rcx,%rdx 0.00 : 12400a: 0f 28 4e f4 movaps -0xc(%rsi),%xmm1 0.00 : 12400e: 72 07 jb 124017 <__memmove_ssse3+0x1467> 0.00 : 124010: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.21 : 124017: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12401b: 41 ff e1 jmpq *%r9 0.00 : 12401e: 0f 0b ud2 0.00 : 124020: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 124027: 0f 28 56 e4 movaps -0x1c(%rsi),%xmm2 0.00 : 12402b: 48 83 ea 40 sub $0x40,%rdx 0.21 : 12402f: 0f 28 5e d4 movaps -0x2c(%rsi),%xmm3 0.00 : 124033: 0f 28 66 c4 movaps -0x3c(%rsi),%xmm4 0.41 : 124037: 0f 28 6e b4 movaps -0x4c(%rsi),%xmm5 0.00 : 12403b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12403f: 66 0f 3a 0f ca 0c palignr $0xc,%xmm2,%xmm1 0.00 : 124045: 66 0f 3a 0f d3 0c palignr $0xc,%xmm3,%xmm2 0.00 : 12404b: 66 0f 3a 0f dc 0c palignr $0xc,%xmm4,%xmm3 0.00 : 124051: 66 0f 3a 0f e5 0c palignr $0xc,%xmm5,%xmm4 0.00 : 124057: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 1.03 : 12405b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12405e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 124062: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 124066: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12406a: 72 08 jb 124074 <__memmove_ssse3+0x14c4> 0.00 : 12406c: 0f 29 27 movaps %xmm4,(%rdi) 0.21 : 12406f: 41 ff e1 jmpq *%r9 0.00 : 124072: 0f 0b ud2 0.00 : 124074: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 124077: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12407b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 124080: 4c 8d 1d 19 02 02 00 lea 0x20219(%rip),%r11 # 1442a0 0.00 : 124087: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.41 : 12408b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12408f: ff e2 jmpq *%rdx 0.00 : 124091: 0f 0b ud2 0.00 : 124093: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12409a: 84 00 00 00 00 00 0.00 : 1240a0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1240a7: 48 39 ca cmp %rcx,%rdx 0.00 : 1240aa: 0f 28 4e f3 movaps -0xd(%rsi),%xmm1 0.00 : 1240ae: 72 07 jb 1240b7 <__memmove_ssse3+0x1507> 0.00 : 1240b0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1240b7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1240bb: 41 ff e1 jmpq *%r9 0.00 : 1240be: 0f 0b ud2 0.00 : 1240c0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1240c7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1240cb: 0f 28 56 03 movaps 0x3(%rsi),%xmm2 0.00 : 1240cf: 0f 28 5e 13 movaps 0x13(%rsi),%xmm3 0.00 : 1240d3: 0f 28 66 23 movaps 0x23(%rsi),%xmm4 0.00 : 1240d7: 0f 28 6e 33 movaps 0x33(%rsi),%xmm5 0.00 : 1240db: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1240df: 66 0f 3a 0f ec 0d palignr $0xd,%xmm4,%xmm5 0.00 : 1240e5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 1240e9: 66 0f 3a 0f e3 0d palignr $0xd,%xmm3,%xmm4 0.00 : 1240ef: 66 0f 3a 0f da 0d palignr $0xd,%xmm2,%xmm3 0.00 : 1240f5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 1240f9: 66 0f 3a 0f d1 0d palignr $0xd,%xmm1,%xmm2 0.00 : 1240ff: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 124103: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 124108: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12410c: 72 0d jb 12411b <__memmove_ssse3+0x156b> 0.00 : 12410e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 124112: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124116: 41 ff e1 jmpq *%r9 0.00 : 124119: 0f 0b ud2 0.00 : 12411b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12411f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 124123: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124127: 48 01 d7 add %rdx,%rdi 0.00 : 12412a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12412f: 48 01 d6 add %rdx,%rsi 0.00 : 124132: 4c 8d 1d 67 01 02 00 lea 0x20167(%rip),%r11 # 1442a0 0.00 : 124139: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12413d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 124141: ff e2 jmpq *%rdx 0.00 : 124143: 0f 0b ud2 0.00 : 124145: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12414c: 00 00 00 00 0.00 : 124150: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 124157: 48 39 ca cmp %rcx,%rdx 0.00 : 12415a: 0f 28 4e f3 movaps -0xd(%rsi),%xmm1 0.00 : 12415e: 72 07 jb 124167 <__memmove_ssse3+0x15b7> 0.00 : 124160: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124167: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12416b: 41 ff e1 jmpq *%r9 0.00 : 12416e: 0f 0b ud2 0.00 : 124170: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 124177: 0f 28 56 e3 movaps -0x1d(%rsi),%xmm2 0.00 : 12417b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12417f: 0f 28 5e d3 movaps -0x2d(%rsi),%xmm3 0.00 : 124183: 0f 28 66 c3 movaps -0x3d(%rsi),%xmm4 0.00 : 124187: 0f 28 6e b3 movaps -0x4d(%rsi),%xmm5 0.00 : 12418b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12418f: 66 0f 3a 0f ca 0d palignr $0xd,%xmm2,%xmm1 0.00 : 124195: 66 0f 3a 0f d3 0d palignr $0xd,%xmm3,%xmm2 0.00 : 12419b: 66 0f 3a 0f dc 0d palignr $0xd,%xmm4,%xmm3 0.00 : 1241a1: 66 0f 3a 0f e5 0d palignr $0xd,%xmm5,%xmm4 0.00 : 1241a7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1241ab: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1241ae: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1241b2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1241b6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1241ba: 72 08 jb 1241c4 <__memmove_ssse3+0x1614> 0.00 : 1241bc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1241bf: 41 ff e1 jmpq *%r9 0.00 : 1241c2: 0f 0b ud2 0.00 : 1241c4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1241c7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1241cb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1241d0: 4c 8d 1d c9 00 02 00 lea 0x200c9(%rip),%r11 # 1442a0 0.00 : 1241d7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1241db: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1241df: ff e2 jmpq *%rdx 0.00 : 1241e1: 0f 0b ud2 0.00 : 1241e3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1241ea: 84 00 00 00 00 00 0.00 : 1241f0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1241f7: 48 39 ca cmp %rcx,%rdx 0.00 : 1241fa: 0f 28 4e f2 movaps -0xe(%rsi),%xmm1 0.00 : 1241fe: 72 07 jb 124207 <__memmove_ssse3+0x1657> 0.00 : 124200: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124207: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12420b: 41 ff e1 jmpq *%r9 0.00 : 12420e: 0f 0b ud2 0.00 : 124210: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 124217: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12421b: 0f 28 56 02 movaps 0x2(%rsi),%xmm2 0.00 : 12421f: 0f 28 5e 12 movaps 0x12(%rsi),%xmm3 0.00 : 124223: 0f 28 66 22 movaps 0x22(%rsi),%xmm4 0.00 : 124227: 0f 28 6e 32 movaps 0x32(%rsi),%xmm5 0.00 : 12422b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12422f: 66 0f 3a 0f ec 0e palignr $0xe,%xmm4,%xmm5 0.00 : 124235: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 124239: 66 0f 3a 0f e3 0e palignr $0xe,%xmm3,%xmm4 0.00 : 12423f: 66 0f 3a 0f da 0e palignr $0xe,%xmm2,%xmm3 0.00 : 124245: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 124249: 66 0f 3a 0f d1 0e palignr $0xe,%xmm1,%xmm2 0.00 : 12424f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 124253: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 124258: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12425c: 72 0d jb 12426b <__memmove_ssse3+0x16bb> 0.00 : 12425e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 124262: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124266: 41 ff e1 jmpq *%r9 0.00 : 124269: 0f 0b ud2 0.00 : 12426b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12426f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 124273: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124277: 48 01 d7 add %rdx,%rdi 0.00 : 12427a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12427f: 48 01 d6 add %rdx,%rsi 0.00 : 124282: 4c 8d 1d 17 00 02 00 lea 0x20017(%rip),%r11 # 1442a0 0.00 : 124289: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12428d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 124291: ff e2 jmpq *%rdx 0.00 : 124293: 0f 0b ud2 0.00 : 124295: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12429c: 00 00 00 00 0.00 : 1242a0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1242a7: 48 39 ca cmp %rcx,%rdx 0.00 : 1242aa: 0f 28 4e f2 movaps -0xe(%rsi),%xmm1 0.00 : 1242ae: 72 07 jb 1242b7 <__memmove_ssse3+0x1707> 0.00 : 1242b0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1242b7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1242bb: 41 ff e1 jmpq *%r9 0.00 : 1242be: 0f 0b ud2 0.00 : 1242c0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1242c7: 0f 28 56 e2 movaps -0x1e(%rsi),%xmm2 0.00 : 1242cb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1242cf: 0f 28 5e d2 movaps -0x2e(%rsi),%xmm3 0.00 : 1242d3: 0f 28 66 c2 movaps -0x3e(%rsi),%xmm4 0.00 : 1242d7: 0f 28 6e b2 movaps -0x4e(%rsi),%xmm5 0.00 : 1242db: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1242df: 66 0f 3a 0f ca 0e palignr $0xe,%xmm2,%xmm1 0.00 : 1242e5: 66 0f 3a 0f d3 0e palignr $0xe,%xmm3,%xmm2 0.00 : 1242eb: 66 0f 3a 0f dc 0e palignr $0xe,%xmm4,%xmm3 0.00 : 1242f1: 66 0f 3a 0f e5 0e palignr $0xe,%xmm5,%xmm4 0.00 : 1242f7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1242fb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1242fe: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 124302: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 124306: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12430a: 72 08 jb 124314 <__memmove_ssse3+0x1764> 0.00 : 12430c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12430f: 41 ff e1 jmpq *%r9 0.00 : 124312: 0f 0b ud2 0.00 : 124314: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 124317: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12431b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 124320: 4c 8d 1d 79 ff 01 00 lea 0x1ff79(%rip),%r11 # 1442a0 0.00 : 124327: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12432b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12432f: ff e2 jmpq *%rdx 0.00 : 124331: 0f 0b ud2 0.00 : 124333: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12433a: 84 00 00 00 00 00 0.00 : 124340: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 124347: 48 39 ca cmp %rcx,%rdx 0.00 : 12434a: 0f 28 4e f1 movaps -0xf(%rsi),%xmm1 0.00 : 12434e: 72 07 jb 124357 <__memmove_ssse3+0x17a7> 0.00 : 124350: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124357: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12435b: 41 ff e1 jmpq *%r9 0.00 : 12435e: 0f 0b ud2 0.00 : 124360: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 124367: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12436b: 0f 28 56 01 movaps 0x1(%rsi),%xmm2 0.00 : 12436f: 0f 28 5e 11 movaps 0x11(%rsi),%xmm3 0.00 : 124373: 0f 28 66 21 movaps 0x21(%rsi),%xmm4 0.00 : 124377: 0f 28 6e 31 movaps 0x31(%rsi),%xmm5 0.00 : 12437b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12437f: 66 0f 3a 0f ec 0f palignr $0xf,%xmm4,%xmm5 0.00 : 124385: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 124389: 66 0f 3a 0f e3 0f palignr $0xf,%xmm3,%xmm4 0.00 : 12438f: 66 0f 3a 0f da 0f palignr $0xf,%xmm2,%xmm3 0.00 : 124395: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 124399: 66 0f 3a 0f d1 0f palignr $0xf,%xmm1,%xmm2 0.00 : 12439f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 1243a3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 1243a8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 1243ac: 72 0d jb 1243bb <__memmove_ssse3+0x180b> 0.00 : 1243ae: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1243b2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1243b6: 41 ff e1 jmpq *%r9 0.00 : 1243b9: 0f 0b ud2 0.00 : 1243bb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1243bf: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1243c3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1243c7: 48 01 d7 add %rdx,%rdi 0.00 : 1243ca: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1243cf: 48 01 d6 add %rdx,%rsi 0.00 : 1243d2: 4c 8d 1d c7 fe 01 00 lea 0x1fec7(%rip),%r11 # 1442a0 0.00 : 1243d9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1243dd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1243e1: ff e2 jmpq *%rdx 0.00 : 1243e3: 0f 0b ud2 0.00 : 1243e5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1243ec: 00 00 00 00 0.00 : 1243f0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1243f7: 48 39 ca cmp %rcx,%rdx 0.00 : 1243fa: 0f 28 4e f1 movaps -0xf(%rsi),%xmm1 0.00 : 1243fe: 72 07 jb 124407 <__memmove_ssse3+0x1857> 0.00 : 124400: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124407: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12440b: 41 ff e1 jmpq *%r9 0.00 : 12440e: 0f 0b ud2 0.00 : 124410: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 124417: 0f 28 56 e1 movaps -0x1f(%rsi),%xmm2 0.00 : 12441b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12441f: 0f 28 5e d1 movaps -0x2f(%rsi),%xmm3 0.00 : 124423: 0f 28 66 c1 movaps -0x3f(%rsi),%xmm4 0.00 : 124427: 0f 28 6e b1 movaps -0x4f(%rsi),%xmm5 0.00 : 12442b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12442f: 66 0f 3a 0f ca 0f palignr $0xf,%xmm2,%xmm1 0.00 : 124435: 66 0f 3a 0f d3 0f palignr $0xf,%xmm3,%xmm2 0.00 : 12443b: 66 0f 3a 0f dc 0f palignr $0xf,%xmm4,%xmm3 0.00 : 124441: 66 0f 3a 0f e5 0f palignr $0xf,%xmm5,%xmm4 0.00 : 124447: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12444b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12444e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 124452: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 124456: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12445a: 72 08 jb 124464 <__memmove_ssse3+0x18b4> 0.00 : 12445c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12445f: 41 ff e1 jmpq *%r9 0.00 : 124462: 0f 0b ud2 0.00 : 124464: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 124467: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12446b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 124470: 4c 8d 1d 29 fe 01 00 lea 0x1fe29(%rip),%r11 # 1442a0 0.00 : 124477: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12447b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12447f: ff e2 jmpq *%rdx 0.00 : 124481: 0f 0b ud2 0.00 : 124483: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12448a: 84 00 00 00 00 00 1.03 : 124490: f3 0f 6f 46 b8 movdqu -0x48(%rsi),%xmm0 ??:0 26.19 : 124495: f3 0f 6f 4e c8 movdqu -0x38(%rsi),%xmm1 ??:0 1.03 : 12449a: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.62 : 12449e: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.62 : 1244a2: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.82 : 1244a6: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.21 : 1244aa: 48 8b 4e f8 mov -0x8(%rsi),%rcx 1.03 : 1244ae: f3 0f 7f 47 b8 movdqu %xmm0,-0x48(%rdi) 2.89 : 1244b3: f3 0f 7f 4f c8 movdqu %xmm1,-0x38(%rdi) 1.65 : 1244b8: 4c 89 47 d8 mov %r8,-0x28(%rdi) 1.24 : 1244bc: 4c 89 4f e0 mov %r9,-0x20(%rdi) 1.03 : 1244c0: 4c 89 57 e8 mov %r10,-0x18(%rdi) 1.86 : 1244c4: 4c 89 5f f0 mov %r11,-0x10(%rdi) 1.24 : 1244c8: 48 89 4f f8 mov %rcx,-0x8(%rdi) 0.21 : 1244cc: c3 retq 0.00 : 1244cd: 0f 1f 00 nopl (%rax) 0.00 : 1244d0: f3 0f 6f 46 c0 movdqu -0x40(%rsi),%xmm0 0.00 : 1244d5: 48 8b 4e d0 mov -0x30(%rsi),%rcx 0.00 : 1244d9: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 1244dd: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 1244e1: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 1244e5: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1244e9: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1244ed: f3 0f 7f 47 c0 movdqu %xmm0,-0x40(%rdi) 0.00 : 1244f2: 48 89 4f d0 mov %rcx,-0x30(%rdi) 0.00 : 1244f6: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 1244fa: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 1244fe: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 124502: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 124506: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12450a: c3 retq 0.00 : 12450b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 124510: f3 0f 6f 46 c8 movdqu -0x38(%rsi),%xmm0 0.00 : 124515: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 124519: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 12451d: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 124521: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 124525: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 124529: f3 0f 7f 47 c8 movdqu %xmm0,-0x38(%rdi) 0.00 : 12452e: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 124532: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 124536: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 12453a: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 12453e: 48 89 4f f8 mov %rcx,-0x8(%rdi) 0.00 : 124542: c3 retq 0.00 : 124543: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12454a: 84 00 00 00 00 00 0.00 : 124550: 48 8b 4e d0 mov -0x30(%rsi),%rcx 0.00 : 124554: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 124558: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 12455c: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 124560: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 124564: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124568: 48 89 4f d0 mov %rcx,-0x30(%rdi) 0.00 : 12456c: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.21 : 124570: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 124574: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 124578: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 12457c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124580: c3 retq 0.00 : 124581: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124588: 0f 1f 84 00 00 00 00 0.00 : 12458f: 00 0.00 : 124590: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 124594: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 124598: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 12459c: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1245a0: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1245a4: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 1245a8: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 1245ac: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 1245b0: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 1245b4: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1245b8: c3 retq 0.00 : 1245b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.41 : 1245c0: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 1245c4: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 1245c8: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1245cc: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1245d0: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 1245d4: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 1245d8: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 1245dc: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1245e0: c3 retq 0.00 : 1245e1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1245e8: 0f 1f 84 00 00 00 00 0.00 : 1245ef: 00 0.00 : 1245f0: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 1245f4: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1245f8: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1245fc: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 124600: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 124604: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124608: c3 retq 0.00 : 124609: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124610: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 124614: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124618: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 12461c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124620: c3 retq 0.00 : 124621: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124628: 0f 1f 84 00 00 00 00 0.00 : 12462f: 00 0.00 : 124630: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124634: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124638: c3 retq 0.00 : 124639: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124640: f3 0f 6f 46 b7 movdqu -0x49(%rsi),%xmm0 0.00 : 124645: f3 0f 6f 4e c7 movdqu -0x39(%rsi),%xmm1 0.00 : 12464a: 48 8b 4e d7 mov -0x29(%rsi),%rcx 0.00 : 12464e: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124652: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 124656: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 12465a: 4c 8b 46 f7 mov -0x9(%rsi),%r8 0.00 : 12465e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124661: f3 0f 7f 47 b7 movdqu %xmm0,-0x49(%rdi) 0.00 : 124666: f3 0f 7f 4f c7 movdqu %xmm1,-0x39(%rdi) 0.00 : 12466b: 48 89 4f d7 mov %rcx,-0x29(%rdi) 0.00 : 12466f: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 124673: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 124677: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 12467b: 4c 89 47 f7 mov %r8,-0x9(%rdi) 0.00 : 12467f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124682: c3 retq 0.00 : 124683: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12468a: 84 00 00 00 00 00 0.00 : 124690: f3 0f 6f 46 bf movdqu -0x41(%rsi),%xmm0 0.00 : 124695: f3 0f 6f 4e cf movdqu -0x31(%rsi),%xmm1 0.00 : 12469a: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 12469e: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 1246a2: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1246a6: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1246aa: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1246ad: f3 0f 7f 47 bf movdqu %xmm0,-0x41(%rdi) 0.00 : 1246b2: f3 0f 7f 4f cf movdqu %xmm1,-0x31(%rdi) 0.00 : 1246b7: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 1246bb: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 1246bf: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 1246c3: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1246c7: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1246ca: c3 retq 0.00 : 1246cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1246d0: f3 0f 6f 46 c7 movdqu -0x39(%rsi),%xmm0 0.00 : 1246d5: 4c 8b 46 d7 mov -0x29(%rsi),%r8 0.00 : 1246d9: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 1246dd: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 1246e1: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1246e5: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1246e9: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1246ec: f3 0f 7f 47 c7 movdqu %xmm0,-0x39(%rdi) 0.00 : 1246f1: 4c 89 47 d7 mov %r8,-0x29(%rdi) 0.00 : 1246f5: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 1246f9: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 1246fd: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 124701: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 124705: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124708: c3 retq 0.00 : 124709: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124710: f3 0f 6f 46 cf movdqu -0x31(%rsi),%xmm0 0.00 : 124715: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124719: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 12471d: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 124721: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 124725: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124728: f3 0f 7f 47 cf movdqu %xmm0,-0x31(%rdi) 0.00 : 12472d: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 124731: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 124735: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 124739: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 12473d: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124740: c3 retq 0.00 : 124741: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124748: 0f 1f 84 00 00 00 00 0.00 : 12474f: 00 0.00 : 124750: 4c 8b 46 d7 mov -0x29(%rsi),%r8 0.00 : 124754: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124758: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 12475c: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 124760: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 124764: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 124767: 4c 89 47 d7 mov %r8,-0x29(%rdi) 0.00 : 12476b: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 12476f: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 124773: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 124777: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 12477b: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 12477e: c3 retq 0.00 : 12477f: 90 nop 0.00 : 124780: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124784: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 124788: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 12478c: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 124790: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 124793: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 124797: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 12479b: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 12479f: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247a3: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 1247a6: c3 retq 0.00 : 1247a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1247ae: 00 00 0.00 : 1247b0: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 1247b4: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1247b8: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1247bc: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 1247bf: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 1247c3: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 1247c7: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247cb: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 1247ce: c3 retq 0.00 : 1247cf: 90 nop 0.00 : 1247d0: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1247d4: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1247d8: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1247db: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 1247df: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247e3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1247e6: c3 retq 0.00 : 1247e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1247ee: 00 00 0.00 : 1247f0: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1247f4: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1247f7: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247fb: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1247fe: c3 retq 0.00 : 1247ff: 90 nop 0.00 : 124800: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 124803: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 124806: c3 retq 0.00 : 124807: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 12480e: 00 00 0.00 : 124810: f3 0f 6f 46 b6 movdqu -0x4a(%rsi),%xmm0 0.00 : 124815: f3 0f 6f 4e c6 movdqu -0x3a(%rsi),%xmm1 0.00 : 12481a: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 12481e: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124822: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124826: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 12482a: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 12482e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124831: f3 0f 7f 47 b6 movdqu %xmm0,-0x4a(%rdi) 0.00 : 124836: f3 0f 7f 4f c6 movdqu %xmm1,-0x3a(%rdi) 0.00 : 12483b: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 12483f: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124843: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124847: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 12484b: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12484f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124852: c3 retq 0.00 : 124853: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12485a: 84 00 00 00 00 00 0.00 : 124860: f3 0f 6f 46 be movdqu -0x42(%rsi),%xmm0 0.00 : 124865: f3 0f 6f 4e ce movdqu -0x32(%rsi),%xmm1 0.00 : 12486a: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 12486e: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124872: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124876: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 12487a: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 12487e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124881: f3 0f 7f 47 be movdqu %xmm0,-0x42(%rdi) 0.00 : 124886: f3 0f 7f 4f ce movdqu %xmm1,-0x32(%rdi) 0.00 : 12488b: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 12488f: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124893: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124897: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 12489b: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12489f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1248a2: c3 retq 0.00 : 1248a3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1248aa: 84 00 00 00 00 00 0.00 : 1248b0: f3 0f 6f 4e c6 movdqu -0x3a(%rsi),%xmm1 0.00 : 1248b5: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 1248b9: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 1248bd: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 1248c1: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 1248c5: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 1248c9: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1248cc: f3 0f 7f 4f c6 movdqu %xmm1,-0x3a(%rdi) 0.00 : 1248d1: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 1248d5: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 1248d9: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 1248dd: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 1248e1: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1248e5: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1248e8: c3 retq 0.00 : 1248e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1248f0: f3 0f 6f 46 ce movdqu -0x32(%rsi),%xmm0 0.00 : 1248f5: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 1248f9: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 1248fd: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 124901: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 124905: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124908: f3 0f 7f 47 ce movdqu %xmm0,-0x32(%rdi) 0.00 : 12490d: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124911: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124915: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 124919: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12491d: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124920: c3 retq 0.00 : 124921: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124928: 0f 1f 84 00 00 00 00 0.00 : 12492f: 00 0.00 : 124930: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 124934: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124938: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 12493c: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 124940: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 124944: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124947: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 12494b: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 12494f: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124953: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 124957: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12495b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 12495e: c3 retq 0.00 : 12495f: 90 nop 0.00 : 124960: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124964: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124968: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 12496c: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 124970: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124973: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124977: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 12497b: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 12497f: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 124983: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124986: c3 retq 0.00 : 124987: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 12498e: 00 00 0.00 : 124990: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124994: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 124998: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 12499c: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 12499f: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 1249a3: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 1249a7: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1249ab: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1249ae: c3 retq 0.00 : 1249af: 90 nop 0.00 : 1249b0: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 1249b4: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 1249b8: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1249bb: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 1249bf: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1249c3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1249c6: c3 retq 0.00 : 1249c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1249ce: 00 00 0.00 : 1249d0: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 1249d4: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1249d7: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1249db: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1249de: c3 retq 0.00 : 1249df: 90 nop 0.00 : 1249e0: 66 8b 56 fe mov -0x2(%rsi),%dx 0.00 : 1249e4: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 1249e8: c3 retq 0.00 : 1249e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1249f0: f3 0f 6f 46 b5 movdqu -0x4b(%rsi),%xmm0 0.00 : 1249f5: f3 0f 6f 4e c5 movdqu -0x3b(%rsi),%xmm1 0.00 : 1249fa: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 1249fe: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124a02: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124a06: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124a0a: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124a0e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124a11: f3 0f 7f 47 b5 movdqu %xmm0,-0x4b(%rdi) 0.00 : 124a16: f3 0f 7f 4f c5 movdqu %xmm1,-0x3b(%rdi) 0.00 : 124a1b: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124a1f: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124a23: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124a27: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124a2b: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124a2f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124a32: c3 retq 0.00 : 124a33: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124a3a: 84 00 00 00 00 00 0.00 : 124a40: f3 0f 6f 46 bd movdqu -0x43(%rsi),%xmm0 0.00 : 124a45: f3 0f 6f 4e c5 movdqu -0x3b(%rsi),%xmm1 0.00 : 124a4a: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 124a4e: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124a52: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124a56: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124a5a: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124a5e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124a61: f3 0f 7f 47 bd movdqu %xmm0,-0x43(%rdi) 0.00 : 124a66: f3 0f 7f 4f c5 movdqu %xmm1,-0x3b(%rdi) 0.00 : 124a6b: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124a6f: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124a73: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124a77: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124a7b: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124a7f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124a82: c3 retq 0.00 : 124a83: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124a8a: 84 00 00 00 00 00 0.00 : 124a90: f3 0f 6f 46 c5 movdqu -0x3b(%rsi),%xmm0 0.00 : 124a95: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 124a99: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124a9d: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124aa1: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124aa5: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124aa9: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124aac: f3 0f 7f 47 c5 movdqu %xmm0,-0x3b(%rdi) 0.00 : 124ab1: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124ab5: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124ab9: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124abd: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124ac1: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124ac5: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ac8: c3 retq 0.00 : 124ac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124ad0: f3 0f 6f 46 cd movdqu -0x33(%rsi),%xmm0 0.00 : 124ad5: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124ad9: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124add: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124ae1: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124ae5: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124ae8: f3 0f 7f 47 cd movdqu %xmm0,-0x33(%rdi) 0.00 : 124aed: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124af1: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124af5: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124af9: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124afd: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b00: c3 retq 0.00 : 124b01: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124b08: 0f 1f 84 00 00 00 00 0.00 : 124b0f: 00 0.00 : 124b10: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 124b14: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124b18: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124b1c: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b20: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b24: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b27: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124b2b: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124b2f: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124b33: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b37: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124b3b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b3e: c3 retq 0.00 : 124b3f: 90 nop 0.00 : 124b40: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124b44: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124b48: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b4c: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b50: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b53: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124b57: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124b5b: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b5f: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124b63: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b66: c3 retq 0.00 : 124b67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124b6e: 00 00 0.00 : 124b70: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124b74: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b78: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b7c: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b7f: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124b83: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b87: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124b8b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b8e: c3 retq 0.00 : 124b8f: 90 nop 0.00 : 124b90: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b94: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b98: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b9b: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b9f: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124ba3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ba6: c3 retq 0.00 : 124ba7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124bae: 00 00 0.00 : 124bb0: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124bb4: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124bb7: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124bbb: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124bbe: c3 retq 0.00 : 124bbf: 90 nop 0.00 : 124bc0: 66 8b 56 fd mov -0x3(%rsi),%dx 0.00 : 124bc4: 66 8b 4e fe mov -0x2(%rsi),%cx 0.00 : 124bc8: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 124bcc: 66 89 4f fe mov %cx,-0x2(%rdi) 0.00 : 124bd0: c3 retq 0.00 : 124bd1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124bd8: 0f 1f 84 00 00 00 00 0.00 : 124bdf: 00 0.00 : 124be0: f3 0f 6f 46 b4 movdqu -0x4c(%rsi),%xmm0 0.00 : 124be5: f3 0f 6f 4e c4 movdqu -0x3c(%rsi),%xmm1 0.00 : 124bea: 4c 8b 46 d4 mov -0x2c(%rsi),%r8 0.00 : 124bee: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124bf2: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124bf6: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124bfa: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124bfe: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124c01: f3 0f 7f 47 b4 movdqu %xmm0,-0x4c(%rdi) 0.00 : 124c06: f3 0f 7f 4f c4 movdqu %xmm1,-0x3c(%rdi) 0.00 : 124c0b: 4c 89 47 d4 mov %r8,-0x2c(%rdi) 0.00 : 124c0f: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124c13: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124c17: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124c1b: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124c1f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124c22: c3 retq 0.00 : 124c23: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124c2a: 84 00 00 00 00 00 0.00 : 124c30: f3 0f 6f 46 bc movdqu -0x44(%rsi),%xmm0 0.00 : 124c35: f3 0f 6f 4e cc movdqu -0x34(%rsi),%xmm1 0.00 : 124c3a: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124c3e: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124c42: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124c46: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124c4a: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124c4d: f3 0f 7f 47 bc movdqu %xmm0,-0x44(%rdi) 0.00 : 124c52: f3 0f 7f 4f cc movdqu %xmm1,-0x34(%rdi) 0.00 : 124c57: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124c5b: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124c5f: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124c63: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124c67: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124c6a: c3 retq 0.00 : 124c6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.21 : 124c70: f3 0f 6f 46 c4 movdqu -0x3c(%rsi),%xmm0 0.00 : 124c75: 4c 8b 46 d4 mov -0x2c(%rsi),%r8 0.00 : 124c79: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124c7d: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124c81: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124c85: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124c89: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124c8c: f3 0f 7f 47 c4 movdqu %xmm0,-0x3c(%rdi) 0.00 : 124c91: 4c 89 47 d4 mov %r8,-0x2c(%rdi) 0.00 : 124c95: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124c99: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124c9d: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124ca1: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124ca5: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ca8: c3 retq 0.00 : 124ca9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124cb0: f3 0f 6f 46 cc movdqu -0x34(%rsi),%xmm0 0.00 : 124cb5: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124cb9: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124cbd: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124cc1: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124cc5: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124cc8: f3 0f 7f 47 cc movdqu %xmm0,-0x34(%rdi) 0.00 : 124ccd: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124cd1: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124cd5: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124cd9: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124cdd: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ce0: c3 retq 0.00 : 124ce1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124ce8: 0f 1f 84 00 00 00 00 0.00 : 124cef: 00 0.00 : 124cf0: 4c 8b 46 d4 mov -0x2c(%rsi),%r8 0.00 : 124cf4: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124cf8: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124cfc: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124d00: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d04: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d07: 4c 89 47 d4 mov %r8,-0x2c(%rdi) 0.00 : 124d0b: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124d0f: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124d13: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d17: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d1b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d1e: c3 retq 0.00 : 124d1f: 90 nop 0.00 : 124d20: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124d24: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124d28: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124d2c: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d30: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d33: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124d37: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124d3b: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d3f: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d43: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d46: c3 retq 0.00 : 124d47: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124d4e: 00 00 0.00 : 124d50: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124d54: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124d58: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d5c: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d5f: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124d63: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d67: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d6b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d6e: c3 retq 0.00 : 124d6f: 90 nop 0.00 : 124d70: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.21 : 124d74: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d78: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d7b: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d7f: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d83: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d86: c3 retq 0.00 : 124d87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124d8e: 00 00 0.00 : 124d90: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d94: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d97: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d9b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d9e: c3 retq 0.00 : 124d9f: 90 nop 0.00 : 124da0: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124da3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124da6: c3 retq 0.00 : 124da7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124dae: 00 00 0.00 : 124db0: f3 0f 6f 46 b3 movdqu -0x4d(%rsi),%xmm0 0.00 : 124db5: f3 0f 6f 4e c3 movdqu -0x3d(%rsi),%xmm1 0.00 : 124dba: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124dbe: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124dc2: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124dc6: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124dca: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124dce: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124dd2: f3 0f 7f 47 b3 movdqu %xmm0,-0x4d(%rdi) 0.00 : 124dd7: f3 0f 7f 4f c3 movdqu %xmm1,-0x3d(%rdi) 0.00 : 124ddc: 4c 89 47 d3 mov %r8,-0x2d(%rdi) 0.00 : 124de0: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124de4: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124de8: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124dec: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124df0: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124df4: c3 retq 0.00 : 124df5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124dfc: 00 00 00 00 0.00 : 124e00: f3 0f 6f 46 bb movdqu -0x45(%rsi),%xmm0 0.00 : 124e05: f3 0f 6f 4e cb movdqu -0x35(%rsi),%xmm1 0.00 : 124e0a: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124e0e: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124e12: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124e16: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124e1a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124e1e: f3 0f 7f 47 bb movdqu %xmm0,-0x45(%rdi) 0.00 : 124e23: f3 0f 7f 4f cb movdqu %xmm1,-0x35(%rdi) 0.00 : 124e28: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124e2c: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124e30: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124e34: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124e38: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124e3c: c3 retq 0.00 : 124e3d: 0f 1f 00 nopl (%rax) 0.00 : 124e40: f3 0f 6f 46 c3 movdqu -0x3d(%rsi),%xmm0 0.00 : 124e45: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124e49: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124e4d: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124e51: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124e55: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124e59: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124e5d: f3 0f 7f 47 c3 movdqu %xmm0,-0x3d(%rdi) 0.00 : 124e62: 4c 89 47 d3 mov %r8,-0x2d(%rdi) 0.00 : 124e66: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124e6a: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124e6e: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124e72: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124e76: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124e7a: c3 retq 0.00 : 124e7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 124e80: f3 0f 6f 46 cb movdqu -0x35(%rsi),%xmm0 0.00 : 124e85: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124e89: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124e8d: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124e91: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124e95: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124e99: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124e9d: f3 0f 7f 47 cb movdqu %xmm0,-0x35(%rdi) 0.00 : 124ea2: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124ea6: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124eaa: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124eae: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124eb2: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124eb6: c3 retq 0.00 : 124eb7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124ebe: 00 00 0.00 : 124ec0: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124ec4: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124ec8: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124ecc: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124ed0: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124ed4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124ed8: 4c 89 47 d3 mov %r8,-0x2d(%rdi) 0.00 : 124edc: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124ee0: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124ee4: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124ee8: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124eec: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124ef0: c3 retq 0.00 : 124ef1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124ef8: 0f 1f 84 00 00 00 00 0.00 : 124eff: 00 0.00 : 124f00: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124f04: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124f08: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124f0c: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f10: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f14: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124f18: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124f1c: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124f20: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f24: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f28: c3 retq 0.00 : 124f29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124f30: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124f34: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124f38: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f3c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f40: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124f44: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124f48: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f4c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f50: c3 retq 0.00 : 124f51: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124f58: 0f 1f 84 00 00 00 00 0.00 : 124f5f: 00 0.00 : 124f60: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124f64: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f68: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f6c: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124f70: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f74: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f78: c3 retq 0.00 : 124f79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124f80: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f84: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f88: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f8c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f90: c3 retq 0.00 : 124f91: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124f98: 0f 1f 84 00 00 00 00 0.00 : 124f9f: 00 0.00 : 124fa0: 8b 56 fb mov -0x5(%rsi),%edx 0.00 : 124fa3: 8b 4e fc mov -0x4(%rsi),%ecx 0.00 : 124fa6: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 124fa9: 89 4f fc mov %ecx,-0x4(%rdi) 0.00 : 124fac: c3 retq 0.00 : 124fad: 0f 1f 00 nopl (%rax) 0.00 : 124fb0: f3 0f 6f 46 b2 movdqu -0x4e(%rsi),%xmm0 0.00 : 124fb5: f3 0f 6f 4e c2 movdqu -0x3e(%rsi),%xmm1 0.00 : 124fba: 4c 8b 46 d2 mov -0x2e(%rsi),%r8 0.00 : 124fbe: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 124fc2: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 124fc6: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 124fca: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 124fce: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124fd2: f3 0f 7f 47 b2 movdqu %xmm0,-0x4e(%rdi) 0.00 : 124fd7: f3 0f 7f 4f c2 movdqu %xmm1,-0x3e(%rdi) 0.00 : 124fdc: 4c 89 47 d2 mov %r8,-0x2e(%rdi) 0.00 : 124fe0: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 124fe4: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 124fe8: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 124fec: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 124ff0: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124ff4: c3 retq 0.00 : 124ff5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124ffc: 00 00 00 00 0.00 : 125000: f3 0f 6f 46 ba movdqu -0x46(%rsi),%xmm0 0.00 : 125005: f3 0f 6f 4e ca movdqu -0x36(%rsi),%xmm1 0.00 : 12500a: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 12500e: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125012: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125016: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 12501a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12501e: f3 0f 7f 47 ba movdqu %xmm0,-0x46(%rdi) 0.00 : 125023: f3 0f 7f 4f ca movdqu %xmm1,-0x36(%rdi) 0.00 : 125028: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 12502c: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 125030: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125034: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125038: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12503c: c3 retq 0.00 : 12503d: 0f 1f 00 nopl (%rax) 0.00 : 125040: f3 0f 6f 46 c2 movdqu -0x3e(%rsi),%xmm0 0.00 : 125045: 4c 8b 46 d2 mov -0x2e(%rsi),%r8 0.00 : 125049: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 12504d: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125051: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125055: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125059: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12505d: f3 0f 7f 47 c2 movdqu %xmm0,-0x3e(%rdi) 0.00 : 125062: 4c 89 47 d2 mov %r8,-0x2e(%rdi) 0.00 : 125066: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 12506a: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 12506e: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125072: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125076: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12507a: c3 retq 0.00 : 12507b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 125080: f3 0f 6f 46 ca movdqu -0x36(%rsi),%xmm0 0.00 : 125085: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 125089: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 12508d: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125091: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125095: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125099: f3 0f 7f 47 ca movdqu %xmm0,-0x36(%rdi) 0.00 : 12509e: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 1250a2: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 1250a6: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 1250aa: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 1250ae: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1250b2: c3 retq 0.00 : 1250b3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1250ba: 84 00 00 00 00 00 0.00 : 1250c0: 4c 8b 46 d2 mov -0x2e(%rsi),%r8 0.00 : 1250c4: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 1250c8: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 1250cc: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 1250d0: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 1250d4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1250d8: 4c 89 47 d2 mov %r8,-0x2e(%rdi) 0.00 : 1250dc: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 1250e0: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 1250e4: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 1250e8: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 1250ec: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1250f0: c3 retq 0.00 : 1250f1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1250f8: 0f 1f 84 00 00 00 00 0.00 : 1250ff: 00 0.00 : 125100: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 125104: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125108: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 12510c: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125110: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125114: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 125118: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 12511c: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125120: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125124: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125128: c3 retq 0.00 : 125129: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125130: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125134: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125138: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 12513c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125140: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 125144: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125148: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 12514c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125150: c3 retq 0.00 : 125151: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125158: 0f 1f 84 00 00 00 00 0.00 : 12515f: 00 0.00 : 125160: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125164: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125168: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12516c: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125170: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125174: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125178: c3 retq 0.00 : 125179: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125180: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125184: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125188: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 12518c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125190: c3 retq 0.00 : 125191: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125198: 0f 1f 84 00 00 00 00 0.00 : 12519f: 00 0.00 : 1251a0: 8b 56 fa mov -0x6(%rsi),%edx 0.00 : 1251a3: 8b 4e fc mov -0x4(%rsi),%ecx 0.00 : 1251a6: 89 57 fa mov %edx,-0x6(%rdi) 0.00 : 1251a9: 89 4f fc mov %ecx,-0x4(%rdi) 0.00 : 1251ac: c3 retq 0.00 : 1251ad: 0f 1f 00 nopl (%rax) 0.00 : 1251b0: f3 0f 6f 46 b1 movdqu -0x4f(%rsi),%xmm0 0.00 : 1251b5: f3 0f 6f 4e c1 movdqu -0x3f(%rsi),%xmm1 0.00 : 1251ba: 4c 8b 46 d1 mov -0x2f(%rsi),%r8 0.00 : 1251be: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 1251c2: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 1251c6: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 1251ca: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 1251ce: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1251d2: f3 0f 7f 47 b1 movdqu %xmm0,-0x4f(%rdi) 0.00 : 1251d7: f3 0f 7f 4f c1 movdqu %xmm1,-0x3f(%rdi) 0.00 : 1251dc: 4c 89 47 d1 mov %r8,-0x2f(%rdi) 0.00 : 1251e0: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 1251e4: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 1251e8: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 1251ec: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 1251f0: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1251f4: c3 retq 0.00 : 1251f5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1251fc: 00 00 00 00 0.00 : 125200: f3 0f 6f 46 b9 movdqu -0x47(%rsi),%xmm0 0.00 : 125205: f3 0f 6f 4e c9 movdqu -0x37(%rsi),%xmm1 0.00 : 12520a: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 12520e: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125212: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125216: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 12521a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12521e: f3 0f 7f 47 b9 movdqu %xmm0,-0x47(%rdi) 0.00 : 125223: f3 0f 7f 4f c9 movdqu %xmm1,-0x37(%rdi) 0.00 : 125228: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 12522c: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 125230: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125234: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125238: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12523c: c3 retq 0.00 : 12523d: 0f 1f 00 nopl (%rax) 0.00 : 125240: f3 0f 6f 46 c1 movdqu -0x3f(%rsi),%xmm0 0.00 : 125245: 4c 8b 46 d1 mov -0x2f(%rsi),%r8 0.00 : 125249: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 12524d: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125251: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125255: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125259: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12525d: f3 0f 7f 47 c1 movdqu %xmm0,-0x3f(%rdi) 0.00 : 125262: 4c 89 47 d1 mov %r8,-0x2f(%rdi) 0.00 : 125266: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 12526a: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 12526e: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125272: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125276: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12527a: c3 retq 0.00 : 12527b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 125280: f3 0f 6f 46 c9 movdqu -0x37(%rsi),%xmm0 0.00 : 125285: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 125289: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 12528d: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125291: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125295: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125299: f3 0f 7f 47 c9 movdqu %xmm0,-0x37(%rdi) 0.00 : 12529e: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 1252a2: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 1252a6: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 1252aa: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 1252ae: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1252b2: c3 retq 0.00 : 1252b3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1252ba: 84 00 00 00 00 00 0.00 : 1252c0: 4c 8b 46 d1 mov -0x2f(%rsi),%r8 0.00 : 1252c4: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 1252c8: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 1252cc: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 1252d0: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 1252d4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1252d8: 4c 89 47 d1 mov %r8,-0x2f(%rdi) 0.00 : 1252dc: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 1252e0: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 1252e4: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 1252e8: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 1252ec: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1252f0: c3 retq 0.00 : 1252f1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1252f8: 0f 1f 84 00 00 00 00 0.00 : 1252ff: 00 0.00 : 125300: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 125304: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125308: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 12530c: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125310: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125314: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 125318: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 12531c: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125320: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125324: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125328: c3 retq 0.00 : 125329: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125330: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125334: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125338: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 12533c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125340: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 125344: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125348: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 12534c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125350: c3 retq 0.00 : 125351: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125358: 0f 1f 84 00 00 00 00 0.00 : 12535f: 00 0.00 : 125360: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125364: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125368: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12536c: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125370: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125374: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125378: c3 retq 0.00 : 125379: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125380: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125384: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125388: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 12538c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125390: c3 retq 0.00 : 125391: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125398: 0f 1f 84 00 00 00 00 0.00 : 12539f: 00 0.00 : 1253a0: 8b 56 f9 mov -0x7(%rsi),%edx 0.00 : 1253a3: 8b 4e fc mov -0x4(%rsi),%ecx 0.00 : 1253a6: 89 57 f9 mov %edx,-0x7(%rdi) 0.00 : 1253a9: 89 4f fc mov %ecx,-0x4(%rdi) 0.00 : 1253ac: c3 retq 0.00 : 1253ad: 0f 1f 00 nopl (%rax) 0.00 : 1253b0: f3 0f 6f 0e movdqu (%rsi),%xmm1 0.00 : 1253b4: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.00 : 1253b8: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1253bd: 66 0f e7 0f movntdq %xmm1,(%rdi) 0.00 : 1253c1: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 1253c5: 48 8d 92 70 ff ff ff lea -0x90(%rdx),%rdx 0.00 : 1253cc: 49 89 f1 mov %rsi,%r9 0.00 : 1253cf: 49 29 f9 sub %rdi,%r9 0.00 : 1253d2: 49 39 d1 cmp %rdx,%r9 0.00 : 1253d5: 73 0d jae 1253e4 <__memmove_ssse3+0x2834> 0.00 : 1253d7: 48 c1 e1 02 shl $0x2,%rcx 0.00 : 1253db: 48 39 ca cmp %rcx,%rdx 0.00 : 1253de: 0f 82 cc 00 00 00 jb 1254b0 <__memmove_ssse3+0x2900> 0.00 : 1253e4: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 1253e8: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 1253ed: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 1253f2: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 1253f7: f3 0f 6f 66 40 movdqu 0x40(%rsi),%xmm4 0.00 : 1253fc: f3 0f 6f 6e 50 movdqu 0x50(%rsi),%xmm5 0.00 : 125401: f3 0f 6f 76 60 movdqu 0x60(%rsi),%xmm6 0.00 : 125406: f3 0f 6f 7e 70 movdqu 0x70(%rsi),%xmm7 0.00 : 12540b: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 125412: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 125419: 66 0f e7 07 movntdq %xmm0,(%rdi) 0.00 : 12541d: 66 0f e7 4f 10 movntdq %xmm1,0x10(%rdi) 0.00 : 125422: 66 0f e7 57 20 movntdq %xmm2,0x20(%rdi) 0.00 : 125427: 66 0f e7 5f 30 movntdq %xmm3,0x30(%rdi) 0.00 : 12542c: 66 0f e7 67 40 movntdq %xmm4,0x40(%rdi) 0.00 : 125431: 66 0f e7 6f 50 movntdq %xmm5,0x50(%rdi) 0.00 : 125436: 66 0f e7 77 60 movntdq %xmm6,0x60(%rdi) 0.00 : 12543b: 66 0f e7 7f 70 movntdq %xmm7,0x70(%rdi) 0.00 : 125440: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 125447: 73 9b jae 1253e4 <__memmove_ssse3+0x2834> 0.00 : 125449: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 12544d: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 125454: 7c 32 jl 125488 <__memmove_ssse3+0x28d8> 0.00 : 125456: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 12545a: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 12545f: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 125464: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 125469: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 12546d: 66 0f e7 07 movntdq %xmm0,(%rdi) 0.00 : 125471: 66 0f e7 4f 10 movntdq %xmm1,0x10(%rdi) 0.00 : 125476: 66 0f e7 57 20 movntdq %xmm2,0x20(%rdi) 0.00 : 12547b: 66 0f e7 5f 30 movntdq %xmm3,0x30(%rdi) 0.00 : 125480: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 125484: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125488: 48 01 d6 add %rdx,%rsi 0.00 : 12548b: 48 01 d7 add %rdx,%rdi 0.00 : 12548e: 0f ae f8 sfence 0.00 : 125491: 4c 8d 1d 08 ee 01 00 lea 0x1ee08(%rip),%r11 # 1442a0 0.00 : 125498: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12549c: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1254a0: ff e2 jmpq *%rdx 0.00 : 1254a2: 0f 0b ud2 0.00 : 1254a4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1254ab: 00 00 00 00 00 0.00 : 1254b0: 0f 18 8e c0 01 00 00 prefetcht0 0x1c0(%rsi) 0.00 : 1254b7: 0f 18 8e 00 02 00 00 prefetcht0 0x200(%rsi) 0.00 : 1254be: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 1254c2: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 1254c7: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 1254cc: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 1254d1: f3 0f 6f 66 40 movdqu 0x40(%rsi),%xmm4 0.00 : 1254d6: f3 0f 6f 6e 50 movdqu 0x50(%rsi),%xmm5 0.00 : 1254db: f3 0f 6f 76 60 movdqu 0x60(%rsi),%xmm6 0.00 : 1254e0: f3 0f 6f 7e 70 movdqu 0x70(%rsi),%xmm7 0.00 : 1254e5: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 1254ec: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 1254f3: 0f 29 07 movaps %xmm0,(%rdi) 0.00 : 1254f6: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 1254fa: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 1254fe: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 125502: 0f 29 67 40 movaps %xmm4,0x40(%rdi) 0.00 : 125506: 0f 29 6f 50 movaps %xmm5,0x50(%rdi) 0.00 : 12550a: 0f 29 77 60 movaps %xmm6,0x60(%rdi) 0.00 : 12550e: 0f 29 7f 70 movaps %xmm7,0x70(%rdi) 0.00 : 125512: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 125519: 73 95 jae 1254b0 <__memmove_ssse3+0x2900> 0.00 : 12551b: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 12551f: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 125526: 7c 2e jl 125556 <__memmove_ssse3+0x29a6> 0.00 : 125528: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 12552c: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 125531: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 125536: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 12553b: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 12553f: 0f 29 07 movaps %xmm0,(%rdi) 0.00 : 125542: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 125546: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 12554a: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 12554e: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 125552: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125556: 48 01 d6 add %rdx,%rsi 0.00 : 125559: 48 01 d7 add %rdx,%rdi 0.00 : 12555c: 4c 8d 1d 3d ed 01 00 lea 0x1ed3d(%rip),%r11 # 1442a0 0.00 : 125563: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 125567: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12556b: ff e2 jmpq *%rdx 0.00 : 12556d: 0f 0b ud2 0.00 : 12556f: 90 nop 0.00 : 125570: f3 0f 6f 4e f0 movdqu -0x10(%rsi),%xmm1 0.00 : 125575: 48 8d 76 f0 lea -0x10(%rsi),%rsi 0.00 : 125579: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12557e: 66 0f 7f 4f f0 movdqa %xmm1,-0x10(%rdi) 0.00 : 125583: 48 8d 7f f0 lea -0x10(%rdi),%rdi 0.00 : 125587: 48 8d 92 70 ff ff ff lea -0x90(%rdx),%rdx 0.00 : 12558e: 49 89 f9 mov %rdi,%r9 0.00 : 125591: 49 29 f1 sub %rsi,%r9 0.00 : 125594: 49 39 d1 cmp %rdx,%r9 0.00 : 125597: 73 09 jae 1255a2 <__memmove_ssse3+0x29f2> 0.00 : 125599: 49 39 c9 cmp %rcx,%r9 0.00 : 12559c: 0f 82 be 00 00 00 jb 125660 <__memmove_ssse3+0x2ab0> 0.00 : 1255a2: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 1255a7: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 1255ac: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 1255b1: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 1255b6: f3 0f 6f 66 b0 movdqu -0x50(%rsi),%xmm4 0.00 : 1255bb: f3 0f 6f 6e a0 movdqu -0x60(%rsi),%xmm5 0.00 : 1255c0: f3 0f 6f 76 90 movdqu -0x70(%rsi),%xmm6 0.00 : 1255c5: f3 0f 6f 7e 80 movdqu -0x80(%rsi),%xmm7 0.00 : 1255ca: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 1255ce: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 1255d5: 66 0f e7 47 f0 movntdq %xmm0,-0x10(%rdi) 0.00 : 1255da: 66 0f e7 4f e0 movntdq %xmm1,-0x20(%rdi) 0.00 : 1255df: 66 0f e7 57 d0 movntdq %xmm2,-0x30(%rdi) 0.00 : 1255e4: 66 0f e7 5f c0 movntdq %xmm3,-0x40(%rdi) 0.00 : 1255e9: 66 0f e7 67 b0 movntdq %xmm4,-0x50(%rdi) 0.00 : 1255ee: 66 0f e7 6f a0 movntdq %xmm5,-0x60(%rdi) 0.00 : 1255f3: 66 0f e7 77 90 movntdq %xmm6,-0x70(%rdi) 0.00 : 1255f8: 66 0f e7 7f 80 movntdq %xmm7,-0x80(%rdi) 0.00 : 1255fd: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 125601: 73 9f jae 1255a2 <__memmove_ssse3+0x29f2> 0.00 : 125603: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 125607: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 12560e: 7c 34 jl 125644 <__memmove_ssse3+0x2a94> 0.00 : 125610: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 125615: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 12561a: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 12561f: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 125624: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 125628: 66 0f e7 47 f0 movntdq %xmm0,-0x10(%rdi) 0.00 : 12562d: 66 0f e7 4f e0 movntdq %xmm1,-0x20(%rdi) 0.00 : 125632: 66 0f e7 57 d0 movntdq %xmm2,-0x30(%rdi) 0.00 : 125637: 66 0f e7 5f c0 movntdq %xmm3,-0x40(%rdi) 0.00 : 12563c: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 125640: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125644: 0f ae f8 sfence 0.00 : 125647: 4c 8d 1d 52 ec 01 00 lea 0x1ec52(%rip),%r11 # 1442a0 0.00 : 12564e: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 125652: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 125656: ff e2 jmpq *%rdx 0.00 : 125658: 0f 0b ud2 0.00 : 12565a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 125660: 0f 18 8e 40 fe ff ff prefetcht0 -0x1c0(%rsi) 0.00 : 125667: 0f 18 8e 00 fe ff ff prefetcht0 -0x200(%rsi) 0.00 : 12566e: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 125673: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 125678: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 12567d: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 125682: f3 0f 6f 66 b0 movdqu -0x50(%rsi),%xmm4 0.00 : 125687: f3 0f 6f 6e a0 movdqu -0x60(%rsi),%xmm5 0.00 : 12568c: f3 0f 6f 76 90 movdqu -0x70(%rsi),%xmm6 0.00 : 125691: f3 0f 6f 7e 80 movdqu -0x80(%rsi),%xmm7 0.00 : 125696: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 12569a: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 1256a1: 0f 29 47 f0 movaps %xmm0,-0x10(%rdi) 0.00 : 1256a5: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 1256a9: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 1256ad: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 1256b1: 0f 29 67 b0 movaps %xmm4,-0x50(%rdi) 0.00 : 1256b5: 0f 29 6f a0 movaps %xmm5,-0x60(%rdi) 0.00 : 1256b9: 0f 29 77 90 movaps %xmm6,-0x70(%rdi) 0.00 : 1256bd: 0f 29 7f 80 movaps %xmm7,-0x80(%rdi) 0.00 : 1256c1: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 1256c5: 73 99 jae 125660 <__memmove_ssse3+0x2ab0> 0.00 : 1256c7: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 1256cb: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 1256d2: 7c 30 jl 125704 <__memmove_ssse3+0x2b54> 0.00 : 1256d4: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 1256d9: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 1256de: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 1256e3: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 1256e8: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1256ec: 0f 29 47 f0 movaps %xmm0,-0x10(%rdi) 0.00 : 1256f0: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 1256f4: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 1256f8: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 1256fc: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 125700: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125704: 4c 8d 1d 95 eb 01 00 lea 0x1eb95(%rip),%r11 # 1442a0 0.00 : 12570b: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12570f: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 125713: ff e2 jmpq *%rdx 0.00 : 125715: 0f 0b ud2 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 70.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 11.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 5.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:96 3.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:94 1.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:152 1.32 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 1.32 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 1.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:152 1.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:152 1.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:110 1.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:110 0.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:110 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694ed0 : : * treat such a page as empty and without free space. Eventually, VACUUM : * will clean up such a page and make it usable. : */ : bool : PageIsVerified(Page page, BlockNumber blkno) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 1.32 : 694ed0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 70.26 : 694ed1: 48 89 e5 mov %rsp,%rbp 0.00 : 694ed4: 41 55 push %r13 11.05 : 694ed6: 41 54 push %r12 0.00 : 694ed8: 41 89 f4 mov %esi,%r12d 0.00 : 694edb: 53 push %rbx 0.00 : 694edc: 48 89 fb mov %rdi,%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 1.32 : 694edf: 48 83 ec 08 sub $0x8,%rsp : uint16 checksum = 0; : : /* : * Don't verify page data unless the page passes basic non-zero test : */ : if (!PageIsNew(page)) 0.00 : 694ee3: 66 83 7f 0e 00 cmpw $0x0,0xe(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:94 3.95 : 694ee8: 75 56 jne 694f40 0.00 : 694eea: 45 31 e4 xor %r12d,%r12d 0.00 : 694eed: 45 31 ed xor %r13d,%r13d 0.00 : 694ef0: 31 c9 xor %ecx,%ecx : p->pd_upper <= p->pd_special && : p->pd_special <= BLCKSZ && : p->pd_special == MAXALIGN(p->pd_special)) : header_sane = true; : : if (header_sane && !checksum_failure) 0.00 : 694ef2: 31 c0 xor %eax,%eax 0.00 : 694ef4: eb 16 jmp 694f0c 0.00 : 694ef6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 694efd: 00 00 00 : /* Check all-zeroes case */ : all_zeroes = true; : pagebytes = (char *) page; : for (i = 0; i < BLCKSZ; i++) : { : if (pagebytes[i] != 0) 0.00 : 694f00: 48 83 c0 01 add $0x1,%rax : } : : /* Check all-zeroes case */ : all_zeroes = true; : pagebytes = (char *) page; : for (i = 0; i < BLCKSZ; i++) 0.00 : 694f04: 48 3d 00 20 00 00 cmp $0x2000,%rax 0.00 : 694f0a: 74 24 je 694f30 : { : if (pagebytes[i] != 0) 0.00 : 694f0c: 80 3c 03 00 cmpb $0x0,(%rbx,%rax,1) 0.00 : 694f10: 74 ee je 694f00 : : /* : * Throw a WARNING if the checksum fails, but only after we've checked for : * the all-zeroes case. : */ : if (checksum_failure) 0.00 : 694f12: 84 c9 test %cl,%cl 0.00 : 694f14: 0f 85 86 00 00 00 jne 694fa0 : ereport(WARNING, : (ERRCODE_DATA_CORRUPTED, : errmsg("page verification failed, calculated checksum %u but expected %u", : checksum, p->pd_checksum))); : : if (header_sane && ignore_checksum_failure) 0.00 : 694f1a: 31 c0 xor %eax,%eax : return true; : } : : return false; : } 0.00 : 694f1c: 48 83 c4 08 add $0x8,%rsp 0.00 : 694f20: 5b pop %rbx 0.00 : 694f21: 41 5c pop %r12 0.00 : 694f23: 41 5d pop %r13 0.00 : 694f25: c9 leaveq 0.00 : 694f26: c3 retq 0.00 : 694f27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 694f2e: 00 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:152 1.58 : 694f30: 48 83 c4 08 add $0x8,%rsp : ereport(WARNING, : (ERRCODE_DATA_CORRUPTED, : errmsg("page verification failed, calculated checksum %u but expected %u", : checksum, p->pd_checksum))); : : if (header_sane && ignore_checksum_failure) 0.00 : 694f34: b8 01 00 00 00 mov $0x1,%eax : return true; : } : : return false; : } 0.00 : 694f39: 5b pop %rbx 1.05 : 694f3a: 41 5c pop %r12 0.00 : 694f3c: 41 5d pop %r13 0.00 : 694f3e: c9 leaveq 1.05 : 694f3f: c3 retq : /* : * Don't verify page data unless the page passes basic non-zero test : */ : if (!PageIsNew(page)) : { : if (DataChecksumsEnabled()) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:96 5.53 : 694f40: e8 7b 80 e3 ff callq 4ccfc0 0.00 : 694f45: 45 31 ed xor %r13d,%r13d 0.00 : 694f48: 31 c9 xor %ecx,%ecx 0.00 : 694f4a: 84 c0 test %al,%al 0.00 : 694f4c: 0f 85 96 00 00 00 jne 694fe8 : * The following checks don't prove the header is correct, only that : * it looks sane enough to allow into the buffer pool. Later usage of : * the block can still reveal problems, which is why we offer the : * checksum option. : */ : if ((p->pd_flags & ~PD_VALID_FLAG_BITS) == 0 && /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:110 1.05 : 694f52: 0f b7 43 0a movzwl 0xa(%rbx),%eax 0.00 : 694f56: a9 f8 ff 00 00 test $0xfff8,%eax 0.00 : 694f5b: 0f 85 7f 00 00 00 jne 694fe0 0.00 : 694f61: 0f b7 43 0e movzwl 0xe(%rbx),%eax 0.00 : 694f65: 66 39 43 0c cmp %ax,0xc(%rbx) 0.00 : 694f69: 77 75 ja 694fe0 1.05 : 694f6b: 0f b7 53 10 movzwl 0x10(%rbx),%edx 0.00 : 694f6f: 66 39 d0 cmp %dx,%ax 0.00 : 694f72: 77 6c ja 694fe0 0.00 : 694f74: 66 81 fa 00 20 cmp $0x2000,%dx 0.00 : 694f79: 77 65 ja 694fe0 0.00 : 694f7b: 0f b7 d2 movzwl %dx,%edx 0.79 : 694f7e: 48 8d 42 07 lea 0x7(%rdx),%rax 0.00 : 694f82: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 694f86: 48 39 c2 cmp %rax,%rdx 0.00 : 694f89: 75 55 jne 694fe0 : p->pd_upper <= p->pd_special && : p->pd_special <= BLCKSZ && : p->pd_special == MAXALIGN(p->pd_special)) : header_sane = true; : : if (header_sane && !checksum_failure) 0.00 : 694f8b: 84 c9 test %cl,%cl 0.00 : 694f8d: 74 a1 je 694f30 0.00 : 694f8f: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 694f95: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 694f9a: e9 53 ff ff ff jmpq 694ef2 0.00 : 694f9f: 90 nop : * Throw a WARNING if the checksum fails, but only after we've checked for : * the all-zeroes case. : */ : if (checksum_failure) : { : ereport(WARNING, 0.00 : 694fa0: 45 31 c0 xor %r8d,%r8d 0.00 : 694fa3: b9 e4 de 8a 00 mov $0x8adee4,%ecx 0.00 : 694fa8: ba 91 00 00 00 mov $0x91,%edx 0.00 : 694fad: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 694fb2: bf 13 00 00 00 mov $0x13,%edi 0.00 : 694fb7: e8 04 5b 0e 00 callq 77aac0 0.00 : 694fbc: 84 c0 test %al,%al 0.00 : 694fbe: 75 42 jne 695002 : (ERRCODE_DATA_CORRUPTED, : errmsg("page verification failed, calculated checksum %u but expected %u", : checksum, p->pd_checksum))); : : if (header_sane && ignore_checksum_failure) 0.00 : 694fc0: 45 84 e4 test %r12b,%r12b 0.00 : 694fc3: 0f 84 51 ff ff ff je 694f1a 0.00 : 694fc9: 80 3d b8 97 4e 00 00 cmpb $0x0,0x4e97b8(%rip) # b7e788 0.00 : 694fd0: 0f 95 c0 setne %al 0.00 : 694fd3: e9 44 ff ff ff jmpq 694f1c 0.00 : 694fd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 694fdf: 00 : p->pd_upper <= p->pd_special && : p->pd_special <= BLCKSZ && : p->pd_special == MAXALIGN(p->pd_special)) : header_sane = true; : : if (header_sane && !checksum_failure) 0.00 : 694fe0: 45 31 e4 xor %r12d,%r12d 0.00 : 694fe3: e9 0a ff ff ff jmpq 694ef2 : */ : if (!PageIsNew(page)) : { : if (DataChecksumsEnabled()) : { : checksum = pg_checksum_page((char *) page, blkno); 0.00 : 694fe8: 44 89 e6 mov %r12d,%esi 0.00 : 694feb: 48 89 df mov %rbx,%rdi 0.00 : 694fee: e8 7d 13 00 00 callq 696370 : : if (checksum != p->pd_checksum) 0.00 : 694ff3: 66 3b 43 08 cmp 0x8(%rbx),%ax : */ : if (!PageIsNew(page)) : { : if (DataChecksumsEnabled()) : { : checksum = pg_checksum_page((char *) page, blkno); 0.00 : 694ff7: 41 89 c5 mov %eax,%r13d : : if (checksum != p->pd_checksum) 0.00 : 694ffa: 0f 95 c1 setne %cl 0.00 : 694ffd: e9 50 ff ff ff jmpq 694f52 : * Throw a WARNING if the checksum fails, but only after we've checked for : * the all-zeroes case. : */ : if (checksum_failure) : { : ereport(WARNING, 0.00 : 695002: 0f b7 53 08 movzwl 0x8(%rbx),%edx 0.00 : 695006: 41 0f b7 f5 movzwl %r13w,%esi 0.00 : 69500a: bf 78 dc 8a 00 mov $0x8adc78,%edi 0.00 : 69500f: 31 c0 xor %eax,%eax 0.00 : 695011: e8 8a 78 0e 00 callq 77c8a0 0.00 : 695016: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 69501b: 89 c6 mov %eax,%esi 0.00 : 69501d: 31 c0 xor %eax,%eax 0.00 : 69501f: e8 bc 55 0e 00 callq 77a5e0 0.00 : 695024: eb 9a jmp 694fc0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 17.83 ??:0 15.60 ??:0 12.26 ??:0 8.91 ??:0 8.08 ??:0 6.41 ??:0 6.13 ??:0 5.57 ??:0 5.01 ??:0 4.74 ??:0 3.62 ??:0 3.62 ??:0 2.23 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000031e00 <__isnan>: ??:0 15.60 : 31e00: f2 0f 11 44 24 f8 movsd %xmm0,-0x8(%rsp) ??:0 2.23 : 31e06: 48 8b 44 24 f8 mov -0x8(%rsp),%rax ??:0 17.83 : 31e0b: 89 c2 mov %eax,%edx ??:0 4.74 : 31e0d: 48 89 c1 mov %rax,%rcx ??:0 12.26 : 31e10: f7 da neg %edx 5.01 : 31e12: 48 c1 e9 20 shr $0x20,%rcx 5.57 : 31e16: 09 c2 or %eax,%edx ??:0 3.62 : 31e18: 81 e1 ff ff ff 7f and $0x7fffffff,%ecx ??:0 8.08 : 31e1e: b8 00 00 f0 7f mov $0x7ff00000,%eax 0.00 : 31e23: c1 ea 1f shr $0x1f,%edx ??:0 3.62 : 31e26: 09 ca or %ecx,%edx ??:0 6.41 : 31e28: 29 d0 sub %edx,%eax 15.04 : 31e2a: c1 e8 1f shr $0x1f,%eax Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 16.51 /home/Computational/mark/src/dbt3/src/dbgen/text.c:207 15.90 /home/Computational/mark/src/dbt3/src/dbgen/text.c:197 7.65 /home/Computational/mark/src/dbt3/src/dbgen/text.c:200 6.12 /home/Computational/mark/src/dbt3/src/dbgen/text.c:199 5.50 /home/Computational/mark/src/dbt3/src/dbgen/text.c:197 5.20 /home/Computational/mark/src/dbt3/src/dbgen/text.c:196 5.20 /home/Computational/mark/src/dbt3/src/dbgen/text.c:197 4.89 /home/Computational/mark/src/dbt3/src/dbgen/text.c:178 3.98 /home/Computational/mark/src/dbt3/src/dbgen/text.c:178 3.36 /home/Computational/mark/src/dbt3/src/dbgen/text.c:178 2.75 /home/Computational/mark/src/dbt3/src/dbgen/text.c:181 2.45 /home/Computational/mark/src/dbt3/src/dbgen/text.c:213 2.14 /home/Computational/mark/src/dbt3/src/dbgen/text.c:181 2.14 /home/Computational/mark/src/dbt3/src/dbgen/text.c:213 1.83 /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 1.53 /home/Computational/mark/src/dbt3/src/dbgen/text.c:204 1.22 /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 1.22 /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 1.22 /home/Computational/mark/src/dbt3/src/dbgen/text.c:196 0.92 /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.92 /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.92 /home/Computational/mark/src/dbt3/src/dbgen/text.c:213 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:178 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:202 0.61 /home/Computational/mark/src/dbt3/src/dbgen/text.c:181 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004067e0 : : * Called By: txt_sentence() : * Calls: pick_str(), : */ : static int : txt_np(char *dest, int sd) : { /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.92 : 4067e0: 41 56 push %r14 0.61 : 4067e2: 41 89 f6 mov %esi,%r14d 0.31 : 4067e5: 41 55 push %r13 : distribution *src; : int i, : res = 0; : : : pick_str(&np, sd, &syntax[0]); /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 0.61 : 4067e7: 45 31 ed xor %r13d,%r13d : * Called By: txt_sentence() : * Calls: pick_str(), : */ : static int : txt_np(char *dest, int sd) : { 0.00 : 4067ea: 41 54 push %r12 /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.61 : 4067ec: 49 89 fc mov %rdi,%r12 : distribution *src; : int i, : res = 0; : : : pick_str(&np, sd, &syntax[0]); /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 0.61 : 4067ef: bf 00 b6 20 13 mov $0x1320b600,%edi : * Called By: txt_sentence() : * Calls: pick_str(), : */ : static int : txt_np(char *dest, int sd) : { 0.31 : 4067f4: 55 push %rbp /home/Computational/mark/src/dbt3/src/dbgen/text.c:167 0.61 : 4067f5: 53 push %rbx 0.92 : 4067f6: 48 83 ec 10 sub $0x10,%rsp : distribution *src; : int i, : res = 0; : : : pick_str(&np, sd, &syntax[0]); /home/Computational/mark/src/dbt3/src/dbgen/text.c:176 1.22 : 4067fa: 48 89 e2 mov %rsp,%rdx 0.00 : 4067fd: e8 8e d4 ff ff callq 403c90 1.83 : 406802: 48 89 e7 mov %rsp,%rdi 1.22 : 406805: 0f 1f 00 nopl (%rax) : parse_target = syntax; : while ((cptr = strtok(parse_target, " ")) != NULL) /home/Computational/mark/src/dbt3/src/dbgen/text.c:178 4.89 : 406808: be f5 7f 40 00 mov $0x407ff5,%esi 0.61 : 40680d: e8 de a6 ff ff callq 400ef0 3.98 : 406812: 48 85 c0 test %rax,%rax 0.00 : 406815: 48 89 c5 mov %rax,%rbp 3.36 : 406818: 0f 84 8a 00 00 00 je 4068a8 : { : src = NULL; : switch(*cptr) 0.00 : 40681e: 0f b6 45 00 movzbl 0x0(%rbp),%eax : case 'A': : src = &articles; : break; : case 'J': : src = &adjectives; : break; 0.31 : 406822: bb c0 b6 20 13 mov $0x1320b6c0,%ebx : pick_str(&np, sd, &syntax[0]); : parse_target = syntax; : while ((cptr = strtok(parse_target, " ")) != NULL) : { : src = NULL; : switch(*cptr) 0.31 : 406827: 3c 44 cmp $0x44,%al 0.00 : 406829: 74 0d je 406838 /home/Computational/mark/src/dbt3/src/dbgen/text.c:181 2.75 : 40682b: 7f 63 jg 406890 0.00 : 40682d: 3c 41 cmp $0x41,%al 0.00 : 40682f: bb 20 b5 20 13 mov $0x1320b520,%ebx 0.00 : 406834: 74 02 je 406838 0.00 : 406836: 31 db xor %ebx,%ebx : break; : case 'N': : src = &nouns; : break; : } /* end of POS switch statement */ : i = pick_str(src, sd, dest); /home/Computational/mark/src/dbt3/src/dbgen/text.c:196 5.20 : 406838: 4c 89 e2 mov %r12,%rdx /home/Computational/mark/src/dbt3/src/dbgen/text.c:196 1.22 : 40683b: 44 89 f6 mov %r14d,%esi 0.00 : 40683e: 48 89 df mov %rbx,%rdi 0.00 : 406841: e8 4a d4 ff ff callq 403c90 : i = (int)strlen(DIST_MEMBER(src, i)); /home/Computational/mark/src/dbt3/src/dbgen/text.c:197 5.20 : 406846: 48 8b 53 08 mov 0x8(%rbx),%rdx 5.50 : 40684a: 48 98 cltq 0.00 : 40684c: 48 c1 e0 04 shl $0x4,%rax 0.31 : 406850: 48 8b 7c 02 08 mov 0x8(%rdx,%rax,1),%rdi 15.90 : 406855: e8 86 a5 ff ff callq 400de0 : dest += i; 0.00 : 40685a: 48 63 d0 movslq %eax,%rdx : res += i; /home/Computational/mark/src/dbt3/src/dbgen/text.c:199 6.12 : 40685d: 41 8d 4c 05 00 lea 0x0(%r13,%rax,1),%ecx : if (*(++cptr)) /* miscelaneous fillagree, like punctuation */ /home/Computational/mark/src/dbt3/src/dbgen/text.c:200 7.65 : 406862: 0f b6 45 01 movzbl 0x1(%rbp),%eax : src = &nouns; : break; : } /* end of POS switch statement */ : i = pick_str(src, sd, dest); : i = (int)strlen(DIST_MEMBER(src, i)); : dest += i; 0.00 : 406866: 49 8d 14 14 lea (%r12,%rdx,1),%rdx : res += i; : if (*(++cptr)) /* miscelaneous fillagree, like punctuation */ 0.00 : 40686a: 84 c0 test %al,%al 0.00 : 40686c: 74 09 je 406877 : { : *dest = *cptr; /home/Computational/mark/src/dbt3/src/dbgen/text.c:202 0.61 : 40686e: 88 02 mov %al,(%rdx) : dest += 1; : res += 1; /home/Computational/mark/src/dbt3/src/dbgen/text.c:204 1.53 : 406870: 83 c1 01 add $0x1,%ecx : dest += i; : res += i; : if (*(++cptr)) /* miscelaneous fillagree, like punctuation */ : { : *dest = *cptr; : dest += 1; 0.00 : 406873: 48 83 c2 01 add $0x1,%rdx : res += 1; : } : *dest = ' '; 0.00 : 406877: c6 02 20 movb $0x20,(%rdx) : dest++; /home/Computational/mark/src/dbt3/src/dbgen/text.c:207 16.51 : 40687a: 4c 8d 62 01 lea 0x1(%rdx),%r12 : res++; 0.00 : 40687e: 44 8d 69 01 lea 0x1(%rcx),%r13d 0.00 : 406882: 31 ff xor %edi,%edi 0.00 : 406884: eb 82 jmp 406808 0.00 : 406886: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 40688d: 00 00 00 : pick_str(&np, sd, &syntax[0]); : parse_target = syntax; : while ((cptr = strtok(parse_target, " ")) != NULL) : { : src = NULL; : switch(*cptr) 0.00 : 406890: 3c 4a cmp $0x4a,%al 0.00 : 406892: bb e0 b5 20 13 mov $0x1320b5e0,%ebx /home/Computational/mark/src/dbt3/src/dbgen/text.c:181 0.61 : 406897: 74 9f je 406838 2.14 : 406899: 3c 4e cmp $0x4e,%al : case 'J': : src = &adjectives; : break; : case 'D': : src = &adverbs; : break; 0.00 : 40689b: bb a0 b6 20 13 mov $0x1320b6a0,%ebx : pick_str(&np, sd, &syntax[0]); : parse_target = syntax; : while ((cptr = strtok(parse_target, " ")) != NULL) : { : src = NULL; : switch(*cptr) 0.00 : 4068a0: 75 94 jne 406836 0.00 : 4068a2: eb 94 jmp 406838 0.00 : 4068a4: 0f 1f 40 00 nopl 0x0(%rax) : res++; : parse_target = NULL; : } /* end of while loop */ : : return(res); : } /home/Computational/mark/src/dbt3/src/dbgen/text.c:213 2.14 : 4068a8: 48 83 c4 10 add $0x10,%rsp 0.00 : 4068ac: 44 89 e8 mov %r13d,%eax 0.00 : 4068af: 5b pop %rbx 2.45 : 4068b0: 5d pop %rbp 0.00 : 4068b1: 41 5c pop %r12 0.00 : 4068b3: 41 5d pop %r13 0.92 : 4068b5: 41 5e pop %r14 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 10.68 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:744 5.34 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:772 4.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 4.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:784 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:772 3.21 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:784 2.99 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:761 2.99 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:772 2.35 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 2.14 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:745 1.92 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1007 1.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:760 1.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 1.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 1.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:787 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:744 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:778 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:774 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:774 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1007 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1007 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:746 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:777 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:778 1.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:746 1.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:747 1.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:747 1.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:763 1.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:774 1.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1007 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:744 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:763 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:781 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:784 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:789 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:790 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:769 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1007 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004aebd0 <_bt_preprocess_keys>: : * key argument values, which could change on a rescan or after moving to : * new elements of array keys. Therefore we can't overwrite the source data. : */ : void : _bt_preprocess_keys(IndexScanDesc scan) : { 0.00 : 4aebd0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:744 10.68 : 4aebd1: 48 89 e5 mov %rsp,%rbp 0.00 : 4aebd4: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:744 1.50 : 4aebd6: 41 56 push %r14 0.85 : 4aebd8: 41 55 push %r13 0.43 : 4aebda: 41 54 push %r12 0.21 : 4aebdc: 53 push %rbx 0.00 : 4aebdd: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.43 : 4aebe4: 48 89 bd 60 ff ff ff mov %rdi,-0xa0(%rbp) : BTScanOpaque so = (BTScanOpaque) scan->opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:745 2.14 : 4aebeb: 48 8b 47 38 mov 0x38(%rdi),%rax 0.00 : 4aebef: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : int numberOfKeys = scan->numberOfKeys; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:746 1.28 : 4aebf6: 8b 57 18 mov 0x18(%rdi),%edx : int i, : j; : AttrNumber attno; : : /* initialize result variables */ : so->qual_ok = true; 0.00 : 4aebf9: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx : */ : void : _bt_preprocess_keys(IndexScanDesc scan) : { : BTScanOpaque so = (BTScanOpaque) scan->opaque; : int numberOfKeys = scan->numberOfKeys; 1.07 : 4aec00: 89 95 74 ff ff ff mov %edx,-0x8c(%rbp) : int16 *indoption = scan->indexRelation->rd_indoption; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:747 1.07 : 4aec06: 48 8b 47 08 mov 0x8(%rdi),%rax : : /* initialize result variables */ : so->qual_ok = true; : so->numberOfKeys = 0; : : if (numberOfKeys < 1) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:763 0.85 : 4aec0a: 85 d2 test %edx,%edx : void : _bt_preprocess_keys(IndexScanDesc scan) : { : BTScanOpaque so = (BTScanOpaque) scan->opaque; : int numberOfKeys = scan->numberOfKeys; : int16 *indoption = scan->indexRelation->rd_indoption; 0.00 : 4aec0c: 48 8b 80 e8 00 00 00 mov 0xe8(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:747 1.07 : 4aec13: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : int i, : j; : AttrNumber attno; : : /* initialize result variables */ : so->qual_ok = true; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:760 1.71 : 4aec1a: c6 01 01 movb $0x1,(%rcx) : so->numberOfKeys = 0; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:761 2.99 : 4aec1d: c7 41 04 00 00 00 00 movl $0x0,0x4(%rcx) : : if (numberOfKeys < 1) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:763 1.07 : 4aec24: 0f 8e 5e 03 00 00 jle 4aef88 <_bt_preprocess_keys+0x3b8> : return; /* done if qual-less scan */ : : /* : * Read so->arrayKeyData if array keys are present, else scan->keyData : */ : if (so->arrayKeyData != NULL) 0.00 : 4aec2a: 48 8b 59 10 mov 0x10(%rcx),%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:769 0.64 : 4aec2e: 48 85 db test %rbx,%rbx 0.00 : 4aec31: 0f 84 c6 04 00 00 je 4af0fd <_bt_preprocess_keys+0x52d> : inkeys = so->arrayKeyData; : else : inkeys = scan->keyData; : : outkeys = so->keyData; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:774 1.07 : 4aec37: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx : cur = &inkeys[0]; : /* we check that input keys are correctly ordered */ : if (cur->sk_attno < 1) : elog(ERROR, "btree index keys must be ordered by attribute"); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:778 1.50 : 4aec3e: be 0a 03 00 00 mov $0x30a,%esi : if (so->arrayKeyData != NULL) : inkeys = so->arrayKeyData; : else : inkeys = scan->keyData; : : outkeys = so->keyData; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:774 1.50 : 4aec43: 48 8b 52 08 mov 0x8(%rdx),%rdx 1.50 : 4aec47: 48 89 55 88 mov %rdx,-0x78(%rbp) : cur = &inkeys[0]; : /* we check that input keys are correctly ordered */ : if (cur->sk_attno < 1) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:777 1.28 : 4aec4b: 66 83 7b 04 00 cmpw $0x0,0x4(%rbx) : elog(ERROR, "btree index keys must be ordered by attribute"); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:778 1.28 : 4aec50: ba 40 4b 7b 00 mov $0x7b4b40,%edx : inkeys = scan->keyData; : : outkeys = so->keyData; : cur = &inkeys[0]; : /* we check that input keys are correctly ordered */ : if (cur->sk_attno < 1) 0.00 : 4aec55: 0f 8e cc 04 00 00 jle 4af127 <_bt_preprocess_keys+0x557> : elog(ERROR, "btree index keys must be ordered by attribute"); : : /* We can short-circuit most of the work if there's just one key */ : if (numberOfKeys == 1) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:781 0.85 : 4aec5b: 83 bd 74 ff ff ff 01 cmpl $0x1,-0x8c(%rbp) 0.43 : 4aec62: 0f 84 08 04 00 00 je 4af070 <_bt_preprocess_keys+0x4a0> : &test_result)) : { : if (test_result) : xform[BTGreaterEqualStrategyNumber - 1] = NULL; : else : xform[BTGreaterStrategyNumber - 1] = NULL; 0.00 : 4aec68: 48 8d 45 a0 lea -0x60(%rbp),%rax : * unsatisfiable in combination with any other index condition. By : * the time we get here, that's been classified as an equality : * check, and we've rejected any combination of it with a regular : * equality condition; but not with other types of conditions. : */ : if (xform[BTEqualStrategyNumber - 1]) 0.00 : 4aec6c: 48 8d 4d a0 lea -0x60(%rbp),%rcx : * : * xform[i] points to the currently best scan key of strategy type i+1; it : * is NULL if we haven't yet found such a key for this attr. : */ : attno = 1; : memset(xform, 0, sizeof(xform)); 0.00 : 4aec70: 45 31 ff xor %r15d,%r15d 0.00 : 4aec73: c7 45 94 00 00 00 00 movl $0x0,-0x6c(%rbp) 0.00 : 4aec7a: 48 8d 55 98 lea -0x68(%rbp),%rdx 0.00 : 4aec7e: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 4aec85: 00 : &test_result)) : { : if (test_result) : xform[BTGreaterEqualStrategyNumber - 1] = NULL; : else : xform[BTGreaterStrategyNumber - 1] = NULL; 0.00 : 4aec86: 48 83 c0 18 add $0x18,%rax : * unsatisfiable in combination with any other index condition. By : * the time we get here, that's been classified as an equality : * check, and we've rejected any combination of it with a regular : * equality condition; but not with other types of conditions. : */ : if (xform[BTEqualStrategyNumber - 1]) 0.00 : 4aec8a: 48 83 c1 20 add $0x20,%rcx : * : * xform[i] points to the currently best scan key of strategy type i+1; it : * is NULL if we haven't yet found such a key for this attr. : */ : attno = 1; : memset(xform, 0, sizeof(xform)); 0.00 : 4aec8e: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 4aec95: 00 : &test_result)) : { : if (test_result) : xform[BTGreaterEqualStrategyNumber - 1] = NULL; : else : xform[BTGreaterStrategyNumber - 1] = NULL; 0.00 : 4aec96: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : * handle after-last-key processing. Actual exit from the loop is at the : * "break" statement below. : */ : for (i = 0;; cur++, i++) : { : if (i < numberOfKeys) 0.00 : 4aec9d: 8b 85 74 ff ff ff mov -0x8c(%rbp),%eax : * : * xform[i] points to the currently best scan key of strategy type i+1; it : * is NULL if we haven't yet found such a key for this attr. : */ : attno = 1; : memset(xform, 0, sizeof(xform)); 0.00 : 4aeca3: 49 89 de mov %rbx,%r14 : * handle after-last-key processing. Actual exit from the loop is at the : * "break" statement below. : */ : for (i = 0;; cur++, i++) : { : if (i < numberOfKeys) 0.00 : 4aeca6: 39 45 94 cmp %eax,-0x6c(%rbp) : * : * xform[i] points to the currently best scan key of strategy type i+1; it : * is NULL if we haven't yet found such a key for this attr. : */ : attno = 1; : memset(xform, 0, sizeof(xform)); 0.00 : 4aeca9: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 4aecb0: 00 0.00 : 4aecb1: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4aecb8: 00 0.00 : 4aecb9: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 4aecc0: 00 0.00 : 4aecc1: c7 45 84 00 00 00 00 movl $0x0,-0x7c(%rbp) 0.00 : 4aecc8: 66 c7 45 9a 01 00 movw $0x1,-0x66(%rbp) 0.00 : 4aecce: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) : * unsatisfiable in combination with any other index condition. By : * the time we get here, that's been classified as an equality : * check, and we've rejected any combination of it with a regular : * equality condition; but not with other types of conditions. : */ : if (xform[BTEqualStrategyNumber - 1]) 0.00 : 4aecd5: 48 89 8d 50 ff ff ff mov %rcx,-0xb0(%rbp) : * handle after-last-key processing. Actual exit from the loop is at the : * "break" statement below. : */ : for (i = 0;; cur++, i++) : { : if (i < numberOfKeys) 0.00 : 4aecdc: 0f 8c 80 02 00 00 jl 4aef62 <_bt_preprocess_keys+0x392> 0.00 : 4aece2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * If we are at the end of the keys for a particular attr, finish up : * processing and emit the cleaned-up keys. : */ : if (i == numberOfKeys || cur->sk_attno != attno) 0.00 : 4aece8: 8b 8d 74 ff ff ff mov -0x8c(%rbp),%ecx 0.00 : 4aecee: 39 4d 94 cmp %ecx,-0x6c(%rbp) 0.00 : 4aecf1: 74 2c je 4aed1f <_bt_preprocess_keys+0x14f> 0.00 : 4aecf3: 45 0f b7 6e 04 movzwl 0x4(%r14),%r13d 0.00 : 4aecf8: 8b 45 84 mov -0x7c(%rbp),%eax 0.00 : 4aecfb: 66 44 3b 6d 9a cmp -0x66(%rbp),%r13w 0.00 : 4aed00: 89 45 9c mov %eax,-0x64(%rbp) 0.00 : 4aed03: 0f 84 d3 01 00 00 je 4aeedc <_bt_preprocess_keys+0x30c> : { : int priorNumberOfEqualCols = numberOfEqualCols; : : /* check input keys are correctly ordered */ : if (i < numberOfKeys && cur->sk_attno < attno) 0.00 : 4aed09: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : 4aed0f: 39 55 94 cmp %edx,-0x6c(%rbp) 0.00 : 4aed12: 7d 0b jge 4aed1f <_bt_preprocess_keys+0x14f> 0.00 : 4aed14: 66 44 39 6d 9a cmp %r13w,-0x66(%rbp) 0.00 : 4aed19: 0f 8f fe 03 00 00 jg 4af11d <_bt_preprocess_keys+0x54d> : * unsatisfiable in combination with any other index condition. By : * the time we get here, that's been classified as an equality : * check, and we've rejected any combination of it with a regular : * equality condition; but not with other types of conditions. : */ : if (xform[BTEqualStrategyNumber - 1]) 0.00 : 4aed1f: 4c 8b 6d b0 mov -0x50(%rbp),%r13 0.00 : 4aed23: 8b 4d 84 mov -0x7c(%rbp),%ecx 0.00 : 4aed26: 4d 85 ed test %r13,%r13 0.00 : 4aed29: 89 4d 9c mov %ecx,-0x64(%rbp) 0.00 : 4aed2c: 74 66 je 4aed94 <_bt_preprocess_keys+0x1c4> 0.00 : 4aed2e: 4c 8b a5 50 ff ff ff mov -0xb0(%rbp),%r12 0.00 : 4aed35: bb 04 00 00 00 mov $0x4,%ebx : { : ScanKey eq = xform[BTEqualStrategyNumber - 1]; : : for (j = BTMaxStrategyNumber; --j >= 0;) : { : ScanKey chk = xform[j]; 0.00 : 4aed3a: 49 8b 34 24 mov (%r12),%rsi : : if (!chk || j == (BTEqualStrategyNumber - 1)) 0.00 : 4aed3e: 48 85 f6 test %rsi,%rsi 0.00 : 4aed41: 74 3c je 4aed7f <_bt_preprocess_keys+0x1af> 0.00 : 4aed43: 83 fb 02 cmp $0x2,%ebx 0.00 : 4aed46: 74 37 je 4aed7f <_bt_preprocess_keys+0x1af> : continue; : : if (eq->sk_flags & SK_SEARCHNULL) 0.00 : 4aed48: 41 f6 45 00 40 testb $0x40,0x0(%r13) 0.00 : 4aed4d: 0f 85 0d 03 00 00 jne 4af060 <_bt_preprocess_keys+0x490> : /* IS NULL is contradictory to anything else */ : so->qual_ok = false; : return; : } : : if (_bt_compare_scankey_args(scan, chk, eq, chk, 0.00 : 4aed53: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 4aed5a: 4c 8d 45 cf lea -0x31(%rbp),%r8 0.00 : 4aed5e: 48 89 f1 mov %rsi,%rcx 0.00 : 4aed61: 4c 89 ea mov %r13,%rdx 0.00 : 4aed64: e8 57 fc ff ff callq 4ae9c0 <_bt_compare_scankey_args> 0.00 : 4aed69: 84 c0 test %al,%al 0.00 : 4aed6b: 74 12 je 4aed7f <_bt_preprocess_keys+0x1af> : &test_result)) : { : if (!test_result) 0.00 : 4aed6d: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4aed71: 0f 84 02 02 00 00 je 4aef79 <_bt_preprocess_keys+0x3a9> : /* keys proven mutually contradictory */ : so->qual_ok = false; : return; : } : /* else discard the redundant non-equality key */ : xform[j] = NULL; 0.00 : 4aed77: 49 c7 04 24 00 00 00 movq $0x0,(%r12) 0.00 : 4aed7e: 00 : */ : if (xform[BTEqualStrategyNumber - 1]) : { : ScanKey eq = xform[BTEqualStrategyNumber - 1]; : : for (j = BTMaxStrategyNumber; --j >= 0;) 0.00 : 4aed7f: 83 eb 01 sub $0x1,%ebx 0.00 : 4aed82: 49 83 ec 08 sub $0x8,%r12 0.00 : 4aed86: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 4aed89: 75 af jne 4aed3a <_bt_preprocess_keys+0x16a> : xform[j] = NULL; : } : /* else, cannot determine redundancy, keep both keys */ : } : /* track number of attrs for which we have "=" keys */ : numberOfEqualCols++; 0.00 : 4aed8b: 8b 4d 84 mov -0x7c(%rbp),%ecx 0.00 : 4aed8e: 83 c1 01 add $0x1,%ecx 0.00 : 4aed91: 89 4d 9c mov %ecx,-0x64(%rbp) : } : : /* try to keep only one of <, <= */ : if (xform[BTLessStrategyNumber - 1] 0.00 : 4aed94: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 4aed98: 48 85 d2 test %rdx,%rdx 0.00 : 4aed9b: 74 33 je 4aedd0 <_bt_preprocess_keys+0x200> 0.00 : 4aed9d: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4aeda1: 48 85 f6 test %rsi,%rsi 0.00 : 4aeda4: 74 2a je 4aedd0 <_bt_preprocess_keys+0x200> : && xform[BTLessEqualStrategyNumber - 1]) : { : ScanKey lt = xform[BTLessStrategyNumber - 1]; : ScanKey le = xform[BTLessEqualStrategyNumber - 1]; : : if (_bt_compare_scankey_args(scan, le, lt, le, 0.00 : 4aeda6: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 4aedad: 4c 8d 45 cf lea -0x31(%rbp),%r8 0.00 : 4aedb1: 48 89 f1 mov %rsi,%rcx 0.00 : 4aedb4: e8 07 fc ff ff callq 4ae9c0 <_bt_compare_scankey_args> 0.00 : 4aedb9: 84 c0 test %al,%al 0.00 : 4aedbb: 74 13 je 4aedd0 <_bt_preprocess_keys+0x200> : &test_result)) : { : if (test_result) 0.00 : 4aedbd: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4aedc1: 0f 84 71 02 00 00 je 4af038 <_bt_preprocess_keys+0x468> : xform[BTLessEqualStrategyNumber - 1] = NULL; 0.00 : 4aedc7: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 4aedce: 00 0.00 : 4aedcf: 90 nop : xform[BTLessStrategyNumber - 1] = NULL; : } : } : : /* try to keep only one of >, >= */ : if (xform[BTGreaterStrategyNumber - 1] 0.00 : 4aedd0: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 4aedd4: 48 85 d2 test %rdx,%rdx 0.00 : 4aedd7: 74 36 je 4aee0f <_bt_preprocess_keys+0x23f> 0.00 : 4aedd9: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 4aeddd: 48 85 f6 test %rsi,%rsi 0.00 : 4aede0: 74 2d je 4aee0f <_bt_preprocess_keys+0x23f> : && xform[BTGreaterEqualStrategyNumber - 1]) : { : ScanKey gt = xform[BTGreaterStrategyNumber - 1]; : ScanKey ge = xform[BTGreaterEqualStrategyNumber - 1]; : : if (_bt_compare_scankey_args(scan, ge, gt, ge, 0.00 : 4aede2: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 4aede9: 4c 8d 45 cf lea -0x31(%rbp),%r8 0.00 : 4aeded: 48 89 f1 mov %rsi,%rcx 0.00 : 4aedf0: e8 cb fb ff ff callq 4ae9c0 <_bt_compare_scankey_args> 0.00 : 4aedf5: 84 c0 test %al,%al 0.00 : 4aedf7: 74 12 je 4aee0b <_bt_preprocess_keys+0x23b> : &test_result)) : { : if (test_result) 0.00 : 4aedf9: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4aedfd: 0f 84 45 02 00 00 je 4af048 <_bt_preprocess_keys+0x478> : xform[BTGreaterEqualStrategyNumber - 1] = NULL; 0.00 : 4aee03: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4aee0a: 00 0.00 : 4aee0b: 48 8b 55 c0 mov -0x40(%rbp),%rdx : if (xform[j]) : { : ScanKey outkey = &outkeys[new_numberOfKeys++]; : : memcpy(outkey, xform[j], sizeof(ScanKeyData)); : if (priorNumberOfEqualCols == attno - 1) 0.00 : 4aee0f: 0f bf 45 9a movswl -0x66(%rbp),%eax : * mark them if they are required. They are required (possibly : * only in one direction) if all attrs before this one had "=". : */ : for (j = BTMaxStrategyNumber; --j >= 0;) : { : if (xform[j]) 0.00 : 4aee13: 48 85 d2 test %rdx,%rdx : &test_result)) : { : if (test_result) : xform[BTGreaterEqualStrategyNumber - 1] = NULL; : else : xform[BTGreaterStrategyNumber - 1] = NULL; 0.00 : 4aee16: 48 8b 9d 58 ff ff ff mov -0xa8(%rbp),%rbx : if (xform[j]) : { : ScanKey outkey = &outkeys[new_numberOfKeys++]; : : memcpy(outkey, xform[j], sizeof(ScanKeyData)); : if (priorNumberOfEqualCols == attno - 1) 0.00 : 4aee1d: 44 8d 60 ff lea -0x1(%rax),%r12d : * mark them if they are required. They are required (possibly : * only in one direction) if all attrs before this one had "=". : */ : for (j = BTMaxStrategyNumber; --j >= 0;) : { : if (xform[j]) 0.00 : 4aee21: 74 63 je 4aee86 <_bt_preprocess_keys+0x2b6> : { : ScanKey outkey = &outkeys[new_numberOfKeys++]; 0.00 : 4aee23: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 4aee27: 49 63 c7 movslq %r15d,%rax 0.00 : 4aee2a: 41 83 c7 01 add $0x1,%r15d 0.00 : 4aee2e: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4aee32: 48 8d 3c c1 lea (%rcx,%rax,8),%rdi : : memcpy(outkey, xform[j], sizeof(ScanKeyData)); 0.00 : 4aee36: 48 8b 02 mov (%rdx),%rax 0.00 : 4aee39: 48 89 07 mov %rax,(%rdi) 0.00 : 4aee3c: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4aee40: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 4aee44: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 4aee48: 48 89 47 10 mov %rax,0x10(%rdi) 0.00 : 4aee4c: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 4aee50: 48 89 47 18 mov %rax,0x18(%rdi) 0.00 : 4aee54: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4aee58: 48 89 47 20 mov %rax,0x20(%rdi) 0.00 : 4aee5c: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 4aee60: 48 89 47 28 mov %rax,0x28(%rdi) 0.00 : 4aee64: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 4aee68: 48 89 47 30 mov %rax,0x30(%rdi) 0.00 : 4aee6c: 48 8b 42 38 mov 0x38(%rdx),%rax 0.00 : 4aee70: 48 89 47 38 mov %rax,0x38(%rdi) 0.00 : 4aee74: 48 8b 42 40 mov 0x40(%rdx),%rax 0.00 : 4aee78: 48 89 47 40 mov %rax,0x40(%rdi) : if (priorNumberOfEqualCols == attno - 1) 0.00 : 4aee7c: 44 39 65 84 cmp %r12d,-0x7c(%rbp) 0.00 : 4aee80: 0f 84 1a 01 00 00 je 4aefa0 <_bt_preprocess_keys+0x3d0> : /* : * Emit the cleaned-up keys into the outkeys[] array, and then : * mark them if they are required. They are required (possibly : * only in one direction) if all attrs before this one had "=". : */ : for (j = BTMaxStrategyNumber; --j >= 0;) 0.00 : 4aee86: 48 3b 9d 48 ff ff ff cmp -0xb8(%rbp),%rbx 0.00 : 4aee8d: 74 11 je 4aeea0 <_bt_preprocess_keys+0x2d0> 0.00 : 4aee8f: 48 8b 13 mov (%rbx),%rdx 0.00 : 4aee92: 48 83 eb 08 sub $0x8,%rbx : { : if (xform[j]) 0.00 : 4aee96: 48 85 d2 test %rdx,%rdx 0.00 : 4aee99: 75 88 jne 4aee23 <_bt_preprocess_keys+0x253> 0.00 : 4aee9b: eb e9 jmp 4aee86 <_bt_preprocess_keys+0x2b6> 0.00 : 4aee9d: 0f 1f 00 nopl (%rax) : } : : /* : * Exit loop here if done. : */ : if (i == numberOfKeys) 0.00 : 4aeea0: 8b 85 74 ff ff ff mov -0x8c(%rbp),%eax 0.00 : 4aeea6: 39 45 94 cmp %eax,-0x6c(%rbp) 0.00 : 4aeea9: 0f 84 5e 02 00 00 je 4af10d <_bt_preprocess_keys+0x53d> : break; : : /* Re-initialize for new attno */ : attno = cur->sk_attno; 0.00 : 4aeeaf: 45 0f b7 6e 04 movzwl 0x4(%r14),%r13d : memset(xform, 0, sizeof(xform)); 0.00 : 4aeeb4: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 4aeebb: 00 0.00 : 4aeebc: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 4aeec3: 00 0.00 : 4aeec4: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 4aeecb: 00 0.00 : 4aeecc: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4aeed3: 00 0.00 : 4aeed4: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 4aeedb: 00 : : /* check strategy this key's operator corresponds to */ : j = cur->sk_strategy - 1; : : /* if row comparison, push it directly to the output array */ : if (cur->sk_flags & SK_ROW_HEADER) 0.00 : 4aeedc: 41 f6 06 04 testb $0x4,(%r14) : attno = cur->sk_attno; : memset(xform, 0, sizeof(xform)); : } : : /* check strategy this key's operator corresponds to */ : j = cur->sk_strategy - 1; 0.00 : 4aeee0: 41 0f b7 46 06 movzwl 0x6(%r14),%eax : : /* if row comparison, push it directly to the output array */ : if (cur->sk_flags & SK_ROW_HEADER) 0.00 : 4aeee5: 0f 85 c5 00 00 00 jne 4aefb0 <_bt_preprocess_keys+0x3e0> : attno = cur->sk_attno; : memset(xform, 0, sizeof(xform)); : } : : /* check strategy this key's operator corresponds to */ : j = cur->sk_strategy - 1; 0.00 : 4aeeeb: 0f b7 c0 movzwl %ax,%eax 0.00 : 4aeeee: 44 8d 60 ff lea -0x1(%rax),%r12d : Assert(j != (BTEqualStrategyNumber - 1)); : continue; : } : : /* have we seen one of these before? */ : if (xform[j] == NULL) 0.00 : 4aeef2: 49 63 dc movslq %r12d,%rbx 0.00 : 4aeef5: 48 8b 4c dd a0 mov -0x60(%rbp,%rbx,8),%rcx 0.00 : 4aeefa: 48 85 c9 test %rcx,%rcx 0.00 : 4aeefd: 0f 84 25 01 00 00 je 4af028 <_bt_preprocess_keys+0x458> : xform[j] = cur; : } : else : { : /* yup, keep only the more restrictive key */ : if (_bt_compare_scankey_args(scan, cur, cur, xform[j], 0.00 : 4aef03: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 4aef0a: 4c 8d 45 cf lea -0x31(%rbp),%r8 0.00 : 4aef0e: 4c 89 f2 mov %r14,%rdx 0.00 : 4aef11: 4c 89 f6 mov %r14,%rsi 0.00 : 4aef14: e8 a7 fa ff ff callq 4ae9c0 <_bt_compare_scankey_args> 0.00 : 4aef19: 84 c0 test %al,%al 0.00 : 4aef1b: 0f 84 8f 00 00 00 je 4aefb0 <_bt_preprocess_keys+0x3e0> : &test_result)) : { : if (test_result) 0.00 : 4aef21: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4aef25: 0f 85 fd 00 00 00 jne 4af028 <_bt_preprocess_keys+0x458> : xform[j] = cur; : else if (j == (BTEqualStrategyNumber - 1)) 0.00 : 4aef2b: 41 83 fc 02 cmp $0x2,%r12d 0.00 : 4aef2f: 90 nop 0.00 : 4aef30: 0f 84 11 02 00 00 je 4af147 <_bt_preprocess_keys+0x577> 0.00 : 4aef36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4aef3d: 00 00 00 : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last pass to : * handle after-last-key processing. Actual exit from the loop is at the : * "break" statement below. : */ : for (i = 0;; cur++, i++) 0.00 : 4aef40: 83 45 94 01 addl $0x1,-0x6c(%rbp) 0.00 : 4aef44: 49 83 c6 48 add $0x48,%r14 : { : if (i < numberOfKeys) 0.00 : 4aef48: 8b 85 74 ff ff ff mov -0x8c(%rbp),%eax 0.00 : 4aef4e: 39 45 94 cmp %eax,-0x6c(%rbp) : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last pass to : * handle after-last-key processing. Actual exit from the loop is at the : * "break" statement below. : */ : for (i = 0;; cur++, i++) 0.00 : 4aef51: 8b 4d 9c mov -0x64(%rbp),%ecx 0.00 : 4aef54: 66 44 89 6d 9a mov %r13w,-0x66(%rbp) 0.00 : 4aef59: 89 4d 84 mov %ecx,-0x7c(%rbp) : { : if (i < numberOfKeys) 0.00 : 4aef5c: 0f 8d 86 fd ff ff jge 4aece8 <_bt_preprocess_keys+0x118> : { : /* Apply indoption to scankey (might change sk_strategy!) */ : if (!_bt_fix_scankey_strategy(cur, indoption)) 0.00 : 4aef62: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 4aef69: 4c 89 f7 mov %r14,%rdi 0.00 : 4aef6c: e8 ef ed ff ff callq 4add60 <_bt_fix_scankey_strategy> 0.00 : 4aef71: 84 c0 test %al,%al 0.00 : 4aef73: 0f 85 6f fd ff ff jne 4aece8 <_bt_preprocess_keys+0x118> : &test_result)) : { : if (!test_result) : { : /* keys proven mutually contradictory */ : so->qual_ok = false; 0.00 : 4aef79: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 4aef80: c6 02 00 movb $0x0,(%rdx) 0.00 : 4aef83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : } : } : : so->numberOfKeys = new_numberOfKeys; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1007 1.50 : 4aef88: 48 81 c4 98 00 00 00 add $0x98,%rsp 1.07 : 4aef8f: 5b pop %rbx 1.92 : 4aef90: 41 5c pop %r12 0.43 : 4aef92: 41 5d pop %r13 0.64 : 4aef94: 41 5e pop %r14 0.43 : 4aef96: 41 5f pop %r15 0.21 : 4aef98: c9 leaveq 1.50 : 4aef99: c3 retq 0.00 : 4aef9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : ScanKey outkey = &outkeys[new_numberOfKeys++]; : : memcpy(outkey, xform[j], sizeof(ScanKeyData)); : if (priorNumberOfEqualCols == attno - 1) : _bt_mark_scankey_required(outkey); 0.00 : 4aefa0: e8 0b f2 ff ff callq 4ae1b0 <_bt_mark_scankey_required> 0.00 : 4aefa5: e9 dc fe ff ff jmpq 4aee86 <_bt_preprocess_keys+0x2b6> 0.00 : 4aefaa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * We can't determine which key is more restrictive. Keep the : * previous one in xform[j] and push this one directly to the : * output array. : */ : ScanKey outkey = &outkeys[new_numberOfKeys++]; 0.00 : 4aefb0: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4aefb4: 49 63 c7 movslq %r15d,%rax 0.00 : 4aefb7: 41 83 c7 01 add $0x1,%r15d 0.00 : 4aefbb: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4aefbf: 48 8d 3c c2 lea (%rdx,%rax,8),%rdi : : memcpy(outkey, cur, sizeof(ScanKeyData)); 0.00 : 4aefc3: 49 8b 06 mov (%r14),%rax 0.00 : 4aefc6: 48 89 07 mov %rax,(%rdi) 0.00 : 4aefc9: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 4aefcd: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 4aefd1: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 4aefd5: 48 89 47 10 mov %rax,0x10(%rdi) 0.00 : 4aefd9: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 4aefdd: 48 89 47 18 mov %rax,0x18(%rdi) 0.00 : 4aefe1: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 4aefe5: 48 89 47 20 mov %rax,0x20(%rdi) 0.00 : 4aefe9: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 4aefed: 48 89 47 28 mov %rax,0x28(%rdi) 0.00 : 4aeff1: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 4aeff5: 48 89 47 30 mov %rax,0x30(%rdi) 0.00 : 4aeff9: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 4aeffd: 48 89 47 38 mov %rax,0x38(%rdi) 0.00 : 4af001: 49 8b 46 40 mov 0x40(%r14),%rax 0.00 : 4af005: 48 89 47 40 mov %rax,0x40(%rdi) : if (numberOfEqualCols == attno - 1) 0.00 : 4af009: 41 0f bf c5 movswl %r13w,%eax 0.00 : 4af00d: 83 e8 01 sub $0x1,%eax 0.00 : 4af010: 3b 45 9c cmp -0x64(%rbp),%eax 0.00 : 4af013: 0f 85 27 ff ff ff jne 4aef40 <_bt_preprocess_keys+0x370> : _bt_mark_scankey_required(outkey); 0.00 : 4af019: e8 92 f1 ff ff callq 4ae1b0 <_bt_mark_scankey_required> 0.00 : 4af01e: e9 1d ff ff ff jmpq 4aef40 <_bt_preprocess_keys+0x370> 0.00 : 4af023: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* yup, keep only the more restrictive key */ : if (_bt_compare_scankey_args(scan, cur, cur, xform[j], : &test_result)) : { : if (test_result) : xform[j] = cur; 0.00 : 4af028: 4c 89 74 dd a0 mov %r14,-0x60(%rbp,%rbx,8) 0.00 : 4af02d: 0f 1f 00 nopl (%rax) 0.00 : 4af030: e9 0b ff ff ff jmpq 4aef40 <_bt_preprocess_keys+0x370> 0.00 : 4af035: 0f 1f 00 nopl (%rax) : &test_result)) : { : if (test_result) : xform[BTLessEqualStrategyNumber - 1] = NULL; : else : xform[BTLessStrategyNumber - 1] = NULL; 0.00 : 4af038: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 4af03f: 00 0.00 : 4af040: e9 8b fd ff ff jmpq 4aedd0 <_bt_preprocess_keys+0x200> 0.00 : 4af045: 0f 1f 00 nopl (%rax) : &test_result)) : { : if (test_result) : xform[BTGreaterEqualStrategyNumber - 1] = NULL; : else : xform[BTGreaterStrategyNumber - 1] = NULL; 0.00 : 4af048: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 4af04f: 00 0.00 : 4af050: 31 d2 xor %edx,%edx 0.00 : 4af052: e9 b8 fd ff ff jmpq 4aee0f <_bt_preprocess_keys+0x23f> 0.00 : 4af057: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4af05e: 00 00 : continue; : : if (eq->sk_flags & SK_SEARCHNULL) : { : /* IS NULL is contradictory to anything else */ : so->qual_ok = false; 0.00 : 4af060: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 4af067: c6 00 00 movb $0x0,(%rax) : } : } : } : : so->numberOfKeys = new_numberOfKeys; : } 0.00 : 4af06a: e9 19 ff ff ff jmpq 4aef88 <_bt_preprocess_keys+0x3b8> 0.00 : 4af06f: 90 nop : : /* We can short-circuit most of the work if there's just one key */ : if (numberOfKeys == 1) : { : /* Apply indoption to scankey (might change sk_strategy!) */ : if (!_bt_fix_scankey_strategy(cur, indoption)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:784 3.21 : 4af070: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 4.06 : 4af077: 48 89 df mov %rbx,%rdi 0.43 : 4af07a: e8 e1 ec ff ff callq 4add60 <_bt_fix_scankey_strategy> 0.85 : 4af07f: 84 c0 test %al,%al 0.00 : 4af081: 75 0a jne 4af08d <_bt_preprocess_keys+0x4bd> : so->qual_ok = false; 0.00 : 4af083: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 4af08a: c6 01 00 movb $0x0,(%rcx) : memcpy(outkeys, cur, sizeof(ScanKeyData)); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 2.35 : 4af08d: 48 8b 03 mov (%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 17.09 : 4af090: 48 8b 55 88 mov -0x78(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:786 1.71 : 4af094: 48 89 02 mov %rax,(%rdx) 4.91 : 4af097: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 4af09b: 48 89 42 08 mov %rax,0x8(%rdx) 1.71 : 4af09f: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 4af0a3: 48 89 42 10 mov %rax,0x10(%rdx) 0.64 : 4af0a7: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 4af0ab: 48 89 42 18 mov %rax,0x18(%rdx) 0.21 : 4af0af: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 4af0b3: 48 89 42 20 mov %rax,0x20(%rdx) 0.64 : 4af0b7: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 4af0bb: 48 89 42 28 mov %rax,0x28(%rdx) 0.21 : 4af0bf: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 4af0c3: 48 89 42 30 mov %rax,0x30(%rdx) 0.64 : 4af0c7: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 4af0cb: 48 89 42 38 mov %rax,0x38(%rdx) 0.43 : 4af0cf: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 4af0d3: 48 89 42 40 mov %rax,0x40(%rdx) : so->numberOfKeys = 1; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:787 1.71 : 4af0d7: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 4af0de: c7 41 04 01 00 00 00 movl $0x1,0x4(%rcx) : /* We can mark the qual as required if it's for first index col */ : if (cur->sk_attno == 1) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:789 0.85 : 4af0e5: 66 83 7b 04 01 cmpw $0x1,0x4(%rbx) 0.21 : 4af0ea: 0f 85 98 fe ff ff jne 4aef88 <_bt_preprocess_keys+0x3b8> : _bt_mark_scankey_required(outkeys); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:790 0.85 : 4af0f0: 48 89 d7 mov %rdx,%rdi 0.00 : 4af0f3: e8 b8 f0 ff ff callq 4ae1b0 <_bt_mark_scankey_required> 0.00 : 4af0f8: e9 8b fe ff ff jmpq 4aef88 <_bt_preprocess_keys+0x3b8> : * Read so->arrayKeyData if array keys are present, else scan->keyData : */ : if (so->arrayKeyData != NULL) : inkeys = so->arrayKeyData; : else : inkeys = scan->keyData; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:772 5.34 : 4af0fd: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:772 3.85 : 4af104: 48 8b 58 20 mov 0x20(%rax),%rbx 2.99 : 4af108: e9 2a fb ff ff jmpq 4aec37 <_bt_preprocess_keys+0x67> : _bt_mark_scankey_required(outkey); : } : } : } : : so->numberOfKeys = new_numberOfKeys; 0.00 : 4af10d: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 4af114: 44 89 78 04 mov %r15d,0x4(%rax) 0.00 : 4af118: e9 6b fe ff ff jmpq 4aef88 <_bt_preprocess_keys+0x3b8> : { : int priorNumberOfEqualCols = numberOfEqualCols; : : /* check input keys are correctly ordered */ : if (i < numberOfKeys && cur->sk_attno < attno) : elog(ERROR, "btree index keys must be ordered by attribute"); 0.00 : 4af11d: ba 40 4b 7b 00 mov $0x7b4b40,%edx 0.00 : 4af122: be 45 03 00 00 mov $0x345,%esi 0.00 : 4af127: bf 17 49 7b 00 mov $0x7b4917,%edi 0.00 : 4af12c: e8 ef c2 2c 00 callq 77b420 0.00 : 4af131: be b8 49 7b 00 mov $0x7b49b8,%esi 0.00 : 4af136: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4af13b: 31 c0 xor %eax,%eax 0.00 : 4af13d: e8 ee c0 2c 00 callq 77b230 0.00 : 4af142: e8 89 a3 fb ff callq 4694d0 : if (test_result) : xform[j] = cur; : else if (j == (BTEqualStrategyNumber - 1)) : { : /* key == a && key == b, but a != b */ : so->qual_ok = false; 0.00 : 4af147: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 4af14e: c6 01 00 movb $0x0,(%rcx) : } : } : } : : so->numberOfKeys = new_numberOfKeys; : } 0.00 : 4af151: e9 32 fe ff ff jmpq 4aef88 <_bt_preprocess_keys+0x3b8> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.79 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:269 9.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 9.34 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:286 6.43 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 4.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:257 4.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:286 4.36 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:262 3.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 3.73 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:293 3.53 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:257 3.32 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:314 3.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:256 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:258 2.49 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 2.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:318 2.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 2.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:293 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:321 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:321 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:318 1.04 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:319 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:287 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:321 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004abe70 : : /* : * btgettuple() -- Get the next tuple in the scan. : */ : Datum : btgettuple(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 9.54 : 4abe70: 55 push %rbp 6.43 : 4abe71: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:255 0.83 : 4abe74: 41 55 push %r13 3.73 : 4abe76: 41 54 push %r12 2.49 : 4abe78: 53 push %rbx 2.90 : 4abe79: 48 83 ec 08 sub $0x8,%rsp : IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:256 2.90 : 4abe7d: 4c 8b 67 20 mov 0x20(%rdi),%r12 : ScanDirection dir = (ScanDirection) PG_GETARG_INT32(1); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:257 3.53 : 4abe81: 48 8b 4f 28 mov 0x28(%rdi),%rcx : BTScanOpaque so = (BTScanOpaque) scan->opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:258 2.90 : 4abe85: 49 8b 5c 24 38 mov 0x38(%r12),%rbx : bool res; : : /* btree indexes are never lossy */ : scan->xs_recheck = false; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:262 4.36 : 4abe8a: 41 c6 44 24 6c 00 movb $0x0,0x6c(%r12) : */ : Datum : btgettuple(PG_FUNCTION_ARGS) : { : IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); : ScanDirection dir = (ScanDirection) PG_GETARG_INT32(1); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:257 4.77 : 4abe90: 41 89 cd mov %ecx,%r13d : /* : * If we have any array keys, initialize them during first call for a : * scan. We can't do this in btrescan because we don't know the scan : * direction at that time. : */ : if (so->numArrayKeys && !BTScanPosIsValid(so->currPos)) 0.00 : 4abe93: 8b 53 18 mov 0x18(%rbx),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:269 10.79 : 4abe96: 85 d2 test %edx,%edx 0.00 : 4abe98: 74 7b je 4abf15 0.00 : 4abe9a: 8b 43 54 mov 0x54(%rbx),%eax 0.00 : 4abe9d: 85 c0 test %eax,%eax 0.00 : 4abe9f: 75 74 jne 4abf15 : { : /* punt if we have any unsatisfiable array keys */ : if (so->numArrayKeys < 0) 0.00 : 4abea1: 31 c0 xor %eax,%eax 0.00 : 4abea3: 85 d2 test %edx,%edx 0.00 : 4abea5: 0f 88 97 00 00 00 js 4abf42 : PG_RETURN_BOOL(false); : : _bt_start_array_keys(scan, dir); 0.00 : 4abeab: 89 ce mov %ecx,%esi 0.00 : 4abead: 4c 89 e7 mov %r12,%rdi 0.00 : 4abeb0: e8 3b 1d 00 00 callq 4adbf0 <_bt_start_array_keys> : /* : * If we've already initialized this scan, we can just advance it in : * the appropriate direction. If we haven't done so yet, we call : * _bt_first() to get the first item in the scan. : */ : if (!BTScanPosIsValid(so->currPos)) 0.00 : 4abeb5: 8b 43 54 mov 0x54(%rbx),%eax 0.00 : 4abeb8: 85 c0 test %eax,%eax 0.00 : 4abeba: 74 60 je 4abf1c 0.00 : 4abebc: 0f 1f 40 00 nopl 0x0(%rax) : else : { : /* : * Check to see if we should kill the previously-fetched tuple. : */ : if (scan->kill_prior_tuple) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:293 3.73 : 4abec0: 41 80 7c 24 31 00 cmpb $0x0,0x31(%r12) 1.87 : 4abec6: 74 28 je 4abef0 : * caller reverses direction in the indexscan then the same : * item might get entered multiple times. It's not worth : * trying to optimize that, so we don't detect it, but instead : * just forget any excess entries. : */ : if (so->killedItems == NULL) 0.00 : 4abec8: 48 83 7b 30 00 cmpq $0x0,0x30(%rbx) 0.00 : 4abecd: 0f 1f 00 nopl (%rax) 0.00 : 4abed0: 74 7e je 4abf50 : so->killedItems = (int *) : palloc(MaxIndexTuplesPerPage * sizeof(int)); : if (so->numKilled < MaxIndexTuplesPerPage) 0.00 : 4abed2: 8b 73 38 mov 0x38(%rbx),%esi 0.00 : 4abed5: 81 fe 97 01 00 00 cmp $0x197,%esi 0.00 : 4abedb: 7f 13 jg 4abef0 : so->killedItems[so->numKilled++] = so->currPos.itemIndex; 0.00 : 4abedd: 8b 43 6c mov 0x6c(%rbx),%eax 0.00 : 4abee0: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 4abee4: 48 63 ce movslq %esi,%rcx 0.00 : 4abee7: 89 04 8a mov %eax,(%rdx,%rcx,4) 0.00 : 4abeea: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 4abeed: 89 43 38 mov %eax,0x38(%rbx) : } : : /* : * Now continue the scan. : */ : res = _bt_next(scan, dir); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:314 3.32 : 4abef0: 44 89 ee mov %r13d,%esi 0.00 : 4abef3: 4c 89 e7 mov %r12,%rdi 0.00 : 4abef6: e8 75 0c 00 00 callq 4acb70 <_bt_next> : } : : /* If we have a tuple, return it ... */ : if (res) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:318 2.28 : 4abefb: 84 c0 test %al,%al 0.00 : 4abefd: 75 2c jne 4abf2b : break; : /* ... otherwise see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, dir)); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:321 1.24 : 4abeff: 8b 43 18 mov 0x18(%rbx),%eax 1.24 : 4abf02: 85 c0 test %eax,%eax 0.00 : 4abf04: 74 3a je 4abf40 0.00 : 4abf06: 44 89 ee mov %r13d,%esi 0.00 : 4abf09: 4c 89 e7 mov %r12,%rdi 0.00 : 4abf0c: e8 5f 1d 00 00 callq 4adc70 <_bt_advance_array_keys> 0.00 : 4abf11: 84 c0 test %al,%al 0.00 : 4abf13: 74 2b je 4abf40 : /* : * If we've already initialized this scan, we can just advance it in : * the appropriate direction. If we haven't done so yet, we call : * _bt_first() to get the first item in the scan. : */ : if (!BTScanPosIsValid(so->currPos)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:286 4.77 : 4abf15: 8b 43 54 mov 0x54(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:286 9.34 : 4abf18: 85 c0 test %eax,%eax 0.00 : 4abf1a: 75 a4 jne 4abec0 : res = _bt_first(scan, dir); 0.21 : 4abf1c: 44 89 ee mov %r13d,%esi 0.00 : 4abf1f: 4c 89 e7 mov %r12,%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:287 0.62 : 4abf22: e8 69 13 00 00 callq 4ad290 <_bt_first> : */ : res = _bt_next(scan, dir); : } : : /* If we have a tuple, return it ... */ : if (res) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:318 1.24 : 4abf27: 84 c0 test %al,%al 0.00 : 4abf29: 74 d4 je 4abeff : break; : /* ... otherwise see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, dir)); : : PG_RETURN_BOOL(res); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 1.66 : 4abf2b: 48 83 c4 08 add $0x8,%rsp : res = _bt_next(scan, dir); : } : : /* If we have a tuple, return it ... */ : if (res) : break; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:319 0.83 : 4abf2f: b8 01 00 00 00 mov $0x1,%eax : /* ... otherwise see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, dir)); : : PG_RETURN_BOOL(res); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 1.04 : 4abf34: 5b pop %rbx 1.66 : 4abf35: 41 5c pop %r12 0.00 : 4abf37: 41 5d pop %r13 0.00 : 4abf39: c9 leaveq 3.11 : 4abf3a: c3 retq 0.00 : 4abf3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* If we have a tuple, return it ... */ : if (res) : break; : /* ... otherwise see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, dir)); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:321 0.62 : 4abf40: 31 c0 xor %eax,%eax : : PG_RETURN_BOOL(res); : } 0.21 : 4abf42: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:324 2.07 : 4abf46: 5b pop %rbx 2.07 : 4abf47: 41 5c pop %r12 0.00 : 4abf49: 41 5d pop %r13 0.21 : 4abf4b: c9 leaveq 1.45 : 4abf4c: c3 retq 0.00 : 4abf4d: 0f 1f 00 nopl (%rax) : * item might get entered multiple times. It's not worth : * trying to optimize that, so we don't detect it, but instead : * just forget any excess entries. : */ : if (so->killedItems == NULL) : so->killedItems = (int *) 0.00 : 4abf50: bf 60 06 00 00 mov $0x660,%edi 0.00 : 4abf55: e8 f6 cd 2e 00 callq 798d50 0.00 : 4abf5a: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 4abf5e: e9 6f ff ff ff jmpq 4abed2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 8.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3592 7.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 7.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3588 7.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 7.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3592 6.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3588 6.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3590 5.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3591 4.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3587 3.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 3.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3592 3.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3590 3.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3588 3.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3589 3.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3590 1.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 0.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3592 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000707010 : : * : * Allocate a digit buffer of ndigits digits (plus a spare digit for rounding) : */ : static void : alloc_var(NumericVar *var, int ndigits) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 7.33 : 707010: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 1.76 : 707011: 48 89 e5 mov %rsp,%rbp 1.17 : 707014: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 14.37 : 707018: 4c 89 65 f8 mov %r12,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 3.81 : 70701c: 48 89 fb mov %rdi,%rbx 0.29 : 70701f: 48 83 ec 10 sub $0x10,%rsp : digitbuf_free(var->buf); 0.00 : 707023: 48 8b 7f 10 mov 0x10(%rdi),%rdi : * : * Allocate a digit buffer of ndigits digits (plus a spare digit for rounding) : */ : static void : alloc_var(NumericVar *var, int ndigits) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3586 7.62 : 707027: 41 89 f4 mov %esi,%r12d : digitbuf_free(var->buf); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3587 4.11 : 70702a: 48 85 ff test %rdi,%rdi 0.00 : 70702d: 74 05 je 707034 0.00 : 70702f: e8 4c 1b 09 00 callq 798b80 : var->buf = digitbuf_alloc(ndigits + 1); 0.00 : 707034: 41 8d 7c 24 01 lea 0x1(%r12),%edi 0.00 : 707039: 48 63 ff movslq %edi,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3588 6.45 : 70703c: 48 01 ff add %rdi,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3588 3.52 : 70703f: e8 0c 1d 09 00 callq 798d50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3588 7.62 : 707044: 48 89 43 10 mov %rax,0x10(%rbx) : var->buf[0] = 0; /* spare digit for rounding */ /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3589 3.23 : 707048: 66 c7 00 00 00 movw $0x0,(%rax) : var->digits = var->buf + 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3590 6.45 : 70704d: 48 8b 43 10 mov 0x10(%rbx),%rax : var->ndigits = ndigits; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3591 5.28 : 707051: 44 89 23 mov %r12d,(%rbx) : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3592 3.81 : 707054: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 : alloc_var(NumericVar *var, int ndigits) : { : digitbuf_free(var->buf); : var->buf = digitbuf_alloc(ndigits + 1); : var->buf[0] = 0; /* spare digit for rounding */ : var->digits = var->buf + 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3590 3.81 : 707059: 48 83 c0 02 add $0x2,%rax 3.23 : 70705d: 48 89 43 18 mov %rax,0x18(%rbx) : var->ndigits = ndigits; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3592 7.04 : 707061: 48 8b 1c 24 mov (%rsp),%rbx 9.09 : 707065: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:109 14.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:116 11.16 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:105 8.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:109 6.28 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:104 4.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:115 4.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:126 4.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:128 3.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:105 3.26 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:109 2.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:115 1.16 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:104 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:126 0.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:104 0.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:109 0.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:109 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bd030 : : * than one batch is required. : * ---------------------------------------------------------------- : */ : Node * : MultiExecHash(HashState *node) : { 0.00 : 5bd030: 55 push %rbp 0.00 : 5bd031: 48 89 e5 mov %rsp,%rbp 0.00 : 5bd034: 41 57 push %r15 0.00 : 5bd036: 41 56 push %r14 0.00 : 5bd038: 41 55 push %r13 0.00 : 5bd03a: 41 54 push %r12 0.00 : 5bd03c: 53 push %rbx 0.00 : 5bd03d: 48 83 ec 58 sub $0x58,%rsp 0.00 : 5bd041: 48 89 7d 80 mov %rdi,-0x80(%rbp) : TupleTableSlot *slot; : ExprContext *econtext; : uint32 hashvalue; : : /* must provide our own instrumentation support */ : if (node->ps.instrument) 0.00 : 5bd045: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5bd049: 48 85 ff test %rdi,%rdi 0.00 : 5bd04c: 74 05 je 5bd053 : InstrStartNode(node->ps.instrument); 0.00 : 5bd04e: e8 ad ae ff ff callq 5b7f00 : : /* : * get state info from node : */ : outerNode = outerPlanState(node); 0.00 : 5bd053: 48 8b 55 80 mov -0x80(%rbp),%rdx : hashtable = node->hashtable; 0.00 : 5bd057: 48 8b 45 80 mov -0x80(%rbp),%rax : InstrStartNode(node->ps.instrument); : : /* : * get state info from node : */ : outerNode = outerPlanState(node); 0.00 : 5bd05b: 48 8b 52 30 mov 0x30(%rdx),%rdx 0.00 : 5bd05f: 48 89 55 88 mov %rdx,-0x78(%rbp) : hashtable = node->hashtable; : : /* : * set expression context : */ : hashkeys = node->hashkeys; 0.00 : 5bd063: 48 8b 90 80 00 00 00 mov 0x80(%rax),%rdx : : /* : * get state info from node : */ : outerNode = outerPlanState(node); : hashtable = node->hashtable; 0.00 : 5bd06a: 4c 8b 78 78 mov 0x78(%rax),%r15 : : /* : * set expression context : */ : hashkeys = node->hashkeys; 0.00 : 5bd06e: 48 89 55 90 mov %rdx,-0x70(%rbp) : econtext = node->ps.ps_ExprContext; 0.00 : 5bd072: 48 8b 40 60 mov 0x60(%rax),%rax 0.00 : 5bd076: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 5bd07a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * get all inner tuples and insert into the hash table (or temp files) : */ : for (;;) : { : slot = ExecProcNode(outerNode); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:104 6.28 : 5bd080: 48 8b 7d 88 mov -0x78(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:104 0.70 : 5bd084: e8 17 f4 fe ff callq 5ac4a0 : if (TupIsNull(slot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:105 11.16 : 5bd089: 48 85 c0 test %rax,%rax : /* : * get all inner tuples and insert into the hash table (or temp files) : */ : for (;;) : { : slot = ExecProcNode(outerNode); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:104 1.16 : 5bd08c: 49 89 c4 mov %rax,%r12 : if (TupIsNull(slot)) 0.00 : 5bd08f: 0f 84 9e 02 00 00 je 5bd333 0.00 : 5bd095: 80 78 04 00 cmpb $0x0,0x4(%rax) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:105 3.72 : 5bd099: 0f 85 94 02 00 00 jne 5bd333 : break; : /* We have to compute the hash value */ : econtext->ecxt_innertuple = slot; 0.23 : 5bd09f: 48 8b 55 98 mov -0x68(%rbp),%rdx : if (ExecHashGetHashValue(hashtable, econtext, hashkeys, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:109 8.60 : 5bd0a3: 4c 8d 4d d4 lea -0x2c(%rbp),%r9 0.00 : 5bd0a7: 31 c9 xor %ecx,%ecx 0.00 : 5bd0a9: 4c 89 ff mov %r15,%rdi : { : slot = ExecProcNode(outerNode); : if (TupIsNull(slot)) : break; : /* We have to compute the hash value */ : econtext->ecxt_innertuple = slot; 0.00 : 5bd0ac: 48 89 42 10 mov %rax,0x10(%rdx) : if (ExecHashGetHashValue(hashtable, econtext, hashkeys, 31.63 : 5bd0b0: 45 0f be 47 20 movsbl 0x20(%r15),%r8d /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:109 0.70 : 5bd0b5: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.70 : 5bd0b9: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 5bd0bd: e8 ce ed ff ff callq 5bbe90 3.26 : 5bd0c2: 84 c0 test %al,%al 0.00 : 5bd0c4: 74 ba je 5bd080 : false, hashtable->keepNulls, : &hashvalue)) : { : int bucketNumber; : : bucketNumber = ExecHashGetSkewBucket(hashtable, hashvalue); 0.23 : 5bd0c6: 8b 75 d4 mov -0x2c(%rbp),%esi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:115 4.42 : 5bd0c9: 4c 89 ff mov %r15,%rdi 0.00 : 5bd0cc: e8 df ea ff ff callq 5bbbb0 2.09 : 5bd0d1: 89 45 a0 mov %eax,-0x60(%rbp) : if (bucketNumber != INVALID_SKEW_BUCKET_NO) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:116 14.19 : 5bd0d4: 83 c0 01 add $0x1,%eax 0.00 : 5bd0d7: 0f 84 b0 02 00 00 je 5bd38d : ExecHashSkewTableInsert(HashJoinTable hashtable, : TupleTableSlot *slot, : uint32 hashvalue, : int bucketNumber) : { : MinimalTuple tuple = ExecFetchSlotMinimalTuple(slot); 0.00 : 5bd0dd: 4c 89 e7 mov %r12,%rdi : : bucketNumber = ExecHashGetSkewBucket(hashtable, hashvalue); : if (bucketNumber != INVALID_SKEW_BUCKET_NO) : { : /* It's a skew tuple, so put it into that hash table */ : ExecHashSkewTableInsert(hashtable, slot, hashvalue, 0.00 : 5bd0e0: 8b 5d d4 mov -0x2c(%rbp),%ebx : ExecHashSkewTableInsert(HashJoinTable hashtable, : TupleTableSlot *slot, : uint32 hashvalue, : int bucketNumber) : { : MinimalTuple tuple = ExecFetchSlotMinimalTuple(slot); 0.00 : 5bd0e3: e8 68 6e ff ff callq 5b3f50 : HashJoinTuple hashTuple; : int hashTupleSize; : : /* Create the HashJoinTuple */ : hashTupleSize = HJTUPLE_OVERHEAD + tuple->t_len; : hashTuple = (HashJoinTuple) MemoryContextAlloc(hashtable->batchCxt, 0.00 : 5bd0e8: 44 8b 20 mov (%rax),%r12d 0.00 : 5bd0eb: 49 8b bf c0 00 00 00 mov 0xc0(%r15),%rdi : ExecHashSkewTableInsert(HashJoinTable hashtable, : TupleTableSlot *slot, : uint32 hashvalue, : int bucketNumber) : { : MinimalTuple tuple = ExecFetchSlotMinimalTuple(slot); 0.00 : 5bd0f2: 49 89 c6 mov %rax,%r14 : HashJoinTuple hashTuple; : int hashTupleSize; : : /* Create the HashJoinTuple */ : hashTupleSize = HJTUPLE_OVERHEAD + tuple->t_len; : hashTuple = (HashJoinTuple) MemoryContextAlloc(hashtable->batchCxt, 0.00 : 5bd0f5: 41 83 c4 10 add $0x10,%r12d 0.00 : 5bd0f9: 4d 63 e4 movslq %r12d,%r12 0.00 : 5bd0fc: 4c 89 e6 mov %r12,%rsi 0.00 : 5bd0ff: e8 8c bd 1d 00 callq 798e90 : hashTupleSize); : hashTuple->hashvalue = hashvalue; 0.00 : 5bd104: 89 58 08 mov %ebx,0x8(%rax) : memcpy(HJTUPLE_MINTUPLE(hashTuple), tuple, tuple->t_len); 0.00 : 5bd107: 41 8b 16 mov (%r14),%edx 0.00 : 5bd10a: 48 8d 58 10 lea 0x10(%rax),%rbx 0.00 : 5bd10e: 4c 89 f6 mov %r14,%rsi : HashJoinTuple hashTuple; : int hashTupleSize; : : /* Create the HashJoinTuple */ : hashTupleSize = HJTUPLE_OVERHEAD + tuple->t_len; : hashTuple = (HashJoinTuple) MemoryContextAlloc(hashtable->batchCxt, 0.00 : 5bd111: 49 89 c5 mov %rax,%r13 : hashTupleSize); : hashTuple->hashvalue = hashvalue; : memcpy(HJTUPLE_MINTUPLE(hashTuple), tuple, tuple->t_len); 0.00 : 5bd114: 48 89 df mov %rbx,%rdi 0.00 : 5bd117: e8 d4 ca ea ff callq 469bf0 : HeapTupleHeaderClearMatch(HJTUPLE_MINTUPLE(hashTuple)); 0.00 : 5bd11c: 66 81 63 0a ff 7f andw $0x7fff,0xa(%rbx) : : /* Push it onto the front of the skew bucket's list */ : hashTuple->next = hashtable->skewBucket[bucketNumber]->tuples; 0.00 : 5bd122: 48 63 55 a0 movslq -0x60(%rbp),%rdx 0.00 : 5bd126: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5bd12a: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5bd12e: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5bd132: 49 89 45 00 mov %rax,0x0(%r13) : hashtable->skewBucket[bucketNumber]->tuples = hashTuple; 0.00 : 5bd136: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5bd13a: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5bd13e: 4c 89 68 08 mov %r13,0x8(%rax) : : /* Account for space used, and back off if we've used too much */ : hashtable->spaceUsed += hashTupleSize; 0.00 : 5bd142: 4d 01 a7 90 00 00 00 add %r12,0x90(%r15) : hashtable->spaceUsedSkew += hashTupleSize; 0.00 : 5bd149: 4d 01 a7 a8 00 00 00 add %r12,0xa8(%r15) : if (hashtable->spaceUsed > hashtable->spacePeak) 0.00 : 5bd150: 49 8b 87 90 00 00 00 mov 0x90(%r15),%rax 0.00 : 5bd157: 49 3b 87 a0 00 00 00 cmp 0xa0(%r15),%rax 0.00 : 5bd15e: 76 10 jbe 5bd170 : hashtable->spacePeak = hashtable->spaceUsed; 0.00 : 5bd160: 49 89 87 a0 00 00 00 mov %rax,0xa0(%r15) 0.00 : 5bd167: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5bd16e: 00 00 : while (hashtable->spaceUsedSkew > hashtable->spaceAllowedSkew) 0.00 : 5bd170: 49 8b 87 b0 00 00 00 mov 0xb0(%r15),%rax 0.00 : 5bd177: 49 39 87 a8 00 00 00 cmp %rax,0xa8(%r15) 0.00 : 5bd17e: 0f 86 72 01 00 00 jbe 5bd2f6 : int batchno; : HashJoinTuple hashTuple; : : /* Locate the bucket to remove */ : bucketToRemove = hashtable->skewBucketNums[hashtable->nSkewBuckets - 1]; : bucket = hashtable->skewBucket[bucketToRemove]; 0.00 : 5bd184: 49 63 47 34 movslq 0x34(%r15),%rax 0.00 : 5bd188: 49 8b 57 38 mov 0x38(%r15),%rdx 0.00 : 5bd18c: 48 63 44 82 fc movslq -0x4(%rdx,%rax,4),%rax 0.00 : 5bd191: 48 c1 e0 03 shl $0x3,%rax 0.00 : 5bd195: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 5bd199: 48 89 c6 mov %rax,%rsi 0.00 : 5bd19c: 49 03 77 28 add 0x28(%r15),%rsi 0.00 : 5bd1a0: 48 8b 06 mov (%rsi),%rax 0.00 : 5bd1a3: 48 89 45 a8 mov %rax,-0x58(%rbp) : * Calculate which bucket and batch the tuples belong to in the main : * hashtable. They all have the same hash value, so it's the same for all : * of them. Also note that it's not possible for nbatch to increase while : * we are processing the tuples. : */ : hashvalue = bucket->hashvalue; 0.00 : 5bd1a7: 8b 10 mov (%rax),%edx 0.00 : 5bd1a9: 89 55 a4 mov %edx,-0x5c(%rbp) : uint32 hashvalue, : int *bucketno, : int *batchno) : { : uint32 nbuckets = (uint32) hashtable->nbuckets; : uint32 nbatch = (uint32) hashtable->nbatch; 0.00 : 5bd1ac: 41 8b 47 40 mov 0x40(%r15),%eax : ExecHashGetBucketAndBatch(HashJoinTable hashtable, : uint32 hashvalue, : int *bucketno, : int *batchno) : { : uint32 nbuckets = (uint32) hashtable->nbuckets; 0.00 : 5bd1b0: 41 8b 17 mov (%r15),%edx : uint32 nbatch = (uint32) hashtable->nbatch; : : if (nbatch > 1) 0.00 : 5bd1b3: 83 f8 01 cmp $0x1,%eax 0.00 : 5bd1b6: 0f 86 2c 01 00 00 jbe 5bd2e8 : { : /* we can do MOD by masking, DIV by shifting */ : *bucketno = hashvalue & (nbuckets - 1); : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); 0.00 : 5bd1bc: 44 8d 70 ff lea -0x1(%rax),%r14d 0.00 : 5bd1c0: 41 8b 4f 04 mov 0x4(%r15),%ecx 0.00 : 5bd1c4: 8b 45 a4 mov -0x5c(%rbp),%eax : uint32 nbatch = (uint32) hashtable->nbatch; : : if (nbatch > 1) : { : /* we can do MOD by masking, DIV by shifting */ : *bucketno = hashvalue & (nbuckets - 1); 0.00 : 5bd1c7: 83 ea 01 sub $0x1,%edx 0.00 : 5bd1ca: 23 55 a4 and -0x5c(%rbp),%edx : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); 0.00 : 5bd1cd: d3 e8 shr %cl,%eax 0.00 : 5bd1cf: 41 21 c6 and %eax,%r14d : */ : hashvalue = bucket->hashvalue; : ExecHashGetBucketAndBatch(hashtable, hashvalue, &bucketno, &batchno); : : /* Process all tuples in the bucket */ : hashTuple = bucket->tuples; 0.00 : 5bd1d2: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 5bd1d6: 48 8b 58 08 mov 0x8(%rax),%rbx : while (hashTuple != NULL) 0.00 : 5bd1da: 48 85 db test %rbx,%rbx 0.00 : 5bd1dd: 0f 84 8a 00 00 00 je 5bd26d : : /* Decide whether to put the tuple in the hash table or a temp file */ : if (batchno == hashtable->curbatch) : { : /* Move the tuple to the main hash table */ : hashTuple->next = hashtable->buckets[bucketno]; 0.00 : 5bd1e3: 48 63 c2 movslq %edx,%rax 0.00 : 5bd1e6: 48 c1 e0 03 shl $0x3,%rax 0.00 : 5bd1ea: 48 89 45 b8 mov %rax,-0x48(%rbp) : } : else : { : /* Put the tuple into a temp file for later batches */ : Assert(batchno > hashtable->curbatch); : ExecHashJoinSaveTuple(tuple, hashvalue, 0.00 : 5bd1ee: 49 63 c6 movslq %r14d,%rax 0.00 : 5bd1f1: 48 c1 e0 03 shl $0x3,%rax 0.00 : 5bd1f5: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 5bd1f9: eb 2b jmp 5bd226 0.00 : 5bd1fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* Decide whether to put the tuple in the hash table or a temp file */ : if (batchno == hashtable->curbatch) : { : /* Move the tuple to the main hash table */ : hashTuple->next = hashtable->buckets[bucketno]; 0.00 : 5bd200: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 5bd204: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 5bd208: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 5bd20c: 48 89 03 mov %rax,(%rbx) : hashtable->buckets[bucketno] = hashTuple; 0.00 : 5bd20f: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 5bd213: 48 89 1c 10 mov %rbx,(%rax,%rdx,1) : /* We have reduced skew space, but overall space doesn't change */ : hashtable->spaceUsedSkew -= tupleSize; 0.00 : 5bd217: 4d 29 a7 a8 00 00 00 sub %r12,0xa8(%r15) : hashvalue = bucket->hashvalue; : ExecHashGetBucketAndBatch(hashtable, hashvalue, &bucketno, &batchno); : : /* Process all tuples in the bucket */ : hashTuple = bucket->tuples; : while (hashTuple != NULL) 0.00 : 5bd21e: 4d 85 ed test %r13,%r13 0.00 : 5bd221: 74 42 je 5bd265 0.00 : 5bd223: 4c 89 eb mov %r13,%rbx : * This code must agree with ExecHashTableInsert. We do not use : * ExecHashTableInsert directly as ExecHashTableInsert expects a : * TupleTableSlot while we already have HashJoinTuples. : */ : tuple = HJTUPLE_MINTUPLE(hashTuple); : tupleSize = HJTUPLE_OVERHEAD + tuple->t_len; 0.00 : 5bd226: 8b 43 10 mov 0x10(%rbx),%eax : : /* Decide whether to put the tuple in the hash table or a temp file */ : if (batchno == hashtable->curbatch) 0.00 : 5bd229: 45 39 77 44 cmp %r14d,0x44(%r15) : /* : * This code must agree with ExecHashTableInsert. We do not use : * ExecHashTableInsert directly as ExecHashTableInsert expects a : * TupleTableSlot while we already have HashJoinTuples. : */ : tuple = HJTUPLE_MINTUPLE(hashTuple); 0.00 : 5bd22d: 48 8d 7b 10 lea 0x10(%rbx),%rdi : : /* Process all tuples in the bucket */ : hashTuple = bucket->tuples; : while (hashTuple != NULL) : { : HashJoinTuple nextHashTuple = hashTuple->next; 0.00 : 5bd231: 4c 8b 2b mov (%rbx),%r13 : * This code must agree with ExecHashTableInsert. We do not use : * ExecHashTableInsert directly as ExecHashTableInsert expects a : * TupleTableSlot while we already have HashJoinTuples. : */ : tuple = HJTUPLE_MINTUPLE(hashTuple); : tupleSize = HJTUPLE_OVERHEAD + tuple->t_len; 0.00 : 5bd234: 4c 8d 60 10 lea 0x10(%rax),%r12 : : /* Decide whether to put the tuple in the hash table or a temp file */ : if (batchno == hashtable->curbatch) 0.00 : 5bd238: 74 c6 je 5bd200 : } : else : { : /* Put the tuple into a temp file for later batches */ : Assert(batchno > hashtable->curbatch); : ExecHashJoinSaveTuple(tuple, hashvalue, 0.00 : 5bd23a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 5bd23e: 49 03 57 68 add 0x68(%r15),%rdx 0.00 : 5bd242: 8b 75 a4 mov -0x5c(%rbp),%esi 0.00 : 5bd245: e8 16 03 00 00 callq 5bd560 : &hashtable->innerBatchFile[batchno]); : pfree(hashTuple); 0.00 : 5bd24a: 48 89 df mov %rbx,%rdi 0.00 : 5bd24d: e8 2e b9 1d 00 callq 798b80 : hashtable->spaceUsed -= tupleSize; 0.00 : 5bd252: 4d 29 a7 90 00 00 00 sub %r12,0x90(%r15) : hashtable->spaceUsedSkew -= tupleSize; 0.00 : 5bd259: 4d 29 a7 a8 00 00 00 sub %r12,0xa8(%r15) : hashvalue = bucket->hashvalue; : ExecHashGetBucketAndBatch(hashtable, hashvalue, &bucketno, &batchno); : : /* Process all tuples in the bucket */ : hashTuple = bucket->tuples; : while (hashTuple != NULL) 0.00 : 5bd260: 4d 85 ed test %r13,%r13 0.00 : 5bd263: 75 be jne 5bd223 0.00 : 5bd265: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 5bd269: 49 03 77 28 add 0x28(%r15),%rsi : * to remove A first then ExecHashGetSkewBucket would mistakenly start : * reporting that B is not in the hashtable, because it would hit the NULL : * before finding B. However, we always remove entries in the reverse : * order of creation, so this failure cannot happen. : */ : hashtable->skewBucket[bucketToRemove] = NULL; 0.00 : 5bd26d: 48 c7 06 00 00 00 00 movq $0x0,(%rsi) : hashtable->nSkewBuckets--; 0.00 : 5bd274: 41 83 6f 34 01 subl $0x1,0x34(%r15) : pfree(bucket); 0.00 : 5bd279: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5bd27d: e8 fe b8 1d 00 callq 798b80 : : /* : * If we have removed all skew buckets then give up on skew optimization. : * Release the arrays since they aren't useful any more. : */ : if (hashtable->nSkewBuckets == 0) 0.00 : 5bd282: 41 8b 4f 34 mov 0x34(%r15),%ecx : * order of creation, so this failure cannot happen. : */ : hashtable->skewBucket[bucketToRemove] = NULL; : hashtable->nSkewBuckets--; : pfree(bucket); : hashtable->spaceUsed -= SKEW_BUCKET_OVERHEAD; 0.00 : 5bd286: 49 83 af 90 00 00 00 subq $0x10,0x90(%r15) 0.00 : 5bd28d: 10 : hashtable->spaceUsedSkew -= SKEW_BUCKET_OVERHEAD; 0.00 : 5bd28e: 49 83 af a8 00 00 00 subq $0x10,0xa8(%r15) 0.00 : 5bd295: 10 : : /* : * If we have removed all skew buckets then give up on skew optimization. : * Release the arrays since they aren't useful any more. : */ : if (hashtable->nSkewBuckets == 0) 0.00 : 5bd296: 85 c9 test %ecx,%ecx 0.00 : 5bd298: 0f 85 d2 fe ff ff jne 5bd170 : { : hashtable->skewEnabled = false; : pfree(hashtable->skewBucket); 0.00 : 5bd29e: 49 8b 7f 28 mov 0x28(%r15),%rdi : * If we have removed all skew buckets then give up on skew optimization. : * Release the arrays since they aren't useful any more. : */ : if (hashtable->nSkewBuckets == 0) : { : hashtable->skewEnabled = false; 0.00 : 5bd2a2: 41 c6 47 21 00 movb $0x0,0x21(%r15) : pfree(hashtable->skewBucket); 0.00 : 5bd2a7: e8 d4 b8 1d 00 callq 798b80 : pfree(hashtable->skewBucketNums); 0.00 : 5bd2ac: 49 8b 7f 38 mov 0x38(%r15),%rdi 0.00 : 5bd2b0: e8 cb b8 1d 00 callq 798b80 : hashtable->skewBucket = NULL; : hashtable->skewBucketNums = NULL; : hashtable->spaceUsed -= hashtable->spaceUsedSkew; 0.00 : 5bd2b5: 49 8b 87 a8 00 00 00 mov 0xa8(%r15),%rax : if (hashtable->nSkewBuckets == 0) : { : hashtable->skewEnabled = false; : pfree(hashtable->skewBucket); : pfree(hashtable->skewBucketNums); : hashtable->skewBucket = NULL; 0.00 : 5bd2bc: 49 c7 47 28 00 00 00 movq $0x0,0x28(%r15) 0.00 : 5bd2c3: 00 : hashtable->skewBucketNums = NULL; 0.00 : 5bd2c4: 49 c7 47 38 00 00 00 movq $0x0,0x38(%r15) 0.00 : 5bd2cb: 00 : hashtable->spaceUsed -= hashtable->spaceUsedSkew; 0.00 : 5bd2cc: 49 29 87 90 00 00 00 sub %rax,0x90(%r15) : hashtable->spaceUsedSkew = 0; 0.00 : 5bd2d3: 49 c7 87 a8 00 00 00 movq $0x0,0xa8(%r15) 0.00 : 5bd2da: 00 00 00 00 0.00 : 5bd2de: e9 8d fe ff ff jmpq 5bd170 0.00 : 5bd2e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : *bucketno = hashvalue & (nbuckets - 1); : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); : } : else : { : *bucketno = hashvalue & (nbuckets - 1); 0.00 : 5bd2e8: 83 ea 01 sub $0x1,%edx 0.00 : 5bd2eb: 45 31 f6 xor %r14d,%r14d 0.00 : 5bd2ee: 23 55 a4 and -0x5c(%rbp),%edx 0.00 : 5bd2f1: e9 dc fe ff ff jmpq 5bd1d2 : hashtable->spacePeak = hashtable->spaceUsed; : while (hashtable->spaceUsedSkew > hashtable->spaceAllowedSkew) : ExecHashRemoveNextSkewBucket(hashtable); : : /* Check we are not over the total spaceAllowed, either */ : if (hashtable->spaceUsed > hashtable->spaceAllowed) 0.00 : 5bd2f6: 49 8b 97 98 00 00 00 mov 0x98(%r15),%rdx 0.00 : 5bd2fd: 49 39 97 90 00 00 00 cmp %rdx,0x90(%r15) 0.00 : 5bd304: 0f 87 40 01 00 00 ja 5bd44a : if (bucketNumber != INVALID_SKEW_BUCKET_NO) : { : /* It's a skew tuple, so put it into that hash table */ : ExecHashSkewTableInsert(hashtable, slot, hashvalue, : bucketNumber); : hashtable->skewTuples += 1; 0.00 : 5bd30a: f2 0f 10 0d 46 1e 1f movsd 0x1f1e46(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 5bd311: 00 0.00 : 5bd312: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 5bd316: f2 41 0f 58 47 60 addsd 0x60(%r15),%xmm0 0.00 : 5bd31c: f2 41 0f 11 47 60 movsd %xmm0,0x60(%r15) : else : { : /* Not subject to skew optimization, so insert normally */ : ExecHashTableInsert(hashtable, slot, hashvalue); : } : hashtable->totalTuples += 1; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:128 4.19 : 5bd322: f2 41 0f 58 4f 58 addsd 0x58(%r15),%xmm1 0.23 : 5bd328: f2 41 0f 11 4f 58 movsd %xmm1,0x58(%r15) 0.23 : 5bd32e: e9 4d fd ff ff jmpq 5bd080 : } : } : : /* resize the hash table if needed (NTUP_PER_BUCKET exceeded) */ : if (hashtable->nbuckets != hashtable->nbuckets_optimal) 0.00 : 5bd333: 41 8b 07 mov (%r15),%eax 0.00 : 5bd336: 41 8b 57 0c mov 0xc(%r15),%edx 0.00 : 5bd33a: 39 d0 cmp %edx,%eax 0.00 : 5bd33c: 74 02 je 5bd340 : ExecHashIncreaseNumBuckets(HashJoinTable hashtable) : { : HashMemoryChunk chunk; : : /* do nothing if not an increase (it's called increase for a reason) */ : if (hashtable->nbuckets >= hashtable->nbuckets_optimal) 0.00 : 5bd33e: 7c 68 jl 5bd3a8 : : ExecHashIncreaseNumBuckets(hashtable); : } : : /* Account for the buckets in spaceUsed (reported in EXPLAIN ANALYZE) */ : hashtable->spaceUsed += hashtable->nbuckets * sizeof(HashJoinTuple); 0.00 : 5bd340: 48 98 cltq 0.00 : 5bd342: 48 c1 e0 03 shl $0x3,%rax 0.00 : 5bd346: 49 03 87 90 00 00 00 add 0x90(%r15),%rax : if (hashtable->spaceUsed > hashtable->spacePeak) 0.00 : 5bd34d: 49 3b 87 a0 00 00 00 cmp 0xa0(%r15),%rax : : ExecHashIncreaseNumBuckets(hashtable); : } : : /* Account for the buckets in spaceUsed (reported in EXPLAIN ANALYZE) */ : hashtable->spaceUsed += hashtable->nbuckets * sizeof(HashJoinTuple); 0.00 : 5bd354: 49 89 87 90 00 00 00 mov %rax,0x90(%r15) : if (hashtable->spaceUsed > hashtable->spacePeak) 0.00 : 5bd35b: 76 07 jbe 5bd364 : hashtable->spacePeak = hashtable->spaceUsed; 0.00 : 5bd35d: 49 89 87 a0 00 00 00 mov %rax,0xa0(%r15) : : /* must provide our own instrumentation support */ : if (node->ps.instrument) 0.00 : 5bd364: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 5bd368: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 5bd36c: 48 85 ff test %rdi,%rdi 0.00 : 5bd36f: 74 0b je 5bd37c : InstrStopNode(node->ps.instrument, hashtable->totalTuples); 0.00 : 5bd371: f2 41 0f 10 47 58 movsd 0x58(%r15),%xmm0 0.00 : 5bd377: e8 54 a8 ff ff callq 5b7bd0 : * parent Hashjoin node is expected to know how to fish it out of our node : * state. Ugly but not really worth cleaning up, since Hashjoin knows : * quite a bit more about Hash besides that. : */ : return NULL; : } 0.00 : 5bd37c: 48 83 c4 58 add $0x58,%rsp 0.00 : 5bd380: 31 c0 xor %eax,%eax 0.00 : 5bd382: 5b pop %rbx 0.00 : 5bd383: 41 5c pop %r12 0.00 : 5bd385: 41 5d pop %r13 0.00 : 5bd387: 41 5e pop %r14 0.00 : 5bd389: 41 5f pop %r15 0.00 : 5bd38b: c9 leaveq 0.00 : 5bd38c: c3 retq : hashtable->skewTuples += 1; : } : else : { : /* Not subject to skew optimization, so insert normally */ : ExecHashTableInsert(hashtable, slot, hashvalue); 0.47 : 5bd38d: 8b 55 d4 mov -0x2c(%rbp),%edx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:126 0.93 : 5bd390: 4c 89 e6 mov %r12,%rsi 0.00 : 5bd393: 4c 89 ff mov %r15,%rdi 4.42 : 5bd396: e8 75 f0 ff ff callq 5bc410 0.47 : 5bd39b: f2 0f 10 0d b5 1d 1f movsd 0x1f1db5(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 5bd3a2: 00 0.00 : 5bd3a3: e9 7a ff ff ff jmpq 5bd322 : /* : * We already know the optimal number of buckets, so let's just : * compute the log2_nbuckets for it. : */ : hashtable->nbuckets = hashtable->nbuckets_optimal; : hashtable->log2_nbuckets = my_log2(hashtable->nbuckets_optimal); 0.00 : 5bd3a8: 48 63 fa movslq %edx,%rdi : : /* : * We already know the optimal number of buckets, so let's just : * compute the log2_nbuckets for it. : */ : hashtable->nbuckets = hashtable->nbuckets_optimal; 0.00 : 5bd3ab: 41 89 17 mov %edx,(%r15) : hashtable->log2_nbuckets = my_log2(hashtable->nbuckets_optimal); 0.00 : 5bd3ae: e8 4d 64 1c 00 callq 783800 : * Just reallocate the proper number of buckets - we don't need to : * walk through them - we can walk the dense-allocated chunks : * (just like in ExecHashIncreaseNumBatches, but without all the : * copying into new chunks) : */ : hashtable->buckets = 0.00 : 5bd3b3: 49 63 37 movslq (%r15),%rsi 0.00 : 5bd3b6: 49 8b 7f 18 mov 0x18(%r15),%rdi : /* : * We already know the optimal number of buckets, so let's just : * compute the log2_nbuckets for it. : */ : hashtable->nbuckets = hashtable->nbuckets_optimal; : hashtable->log2_nbuckets = my_log2(hashtable->nbuckets_optimal); 0.00 : 5bd3ba: 41 89 47 04 mov %eax,0x4(%r15) : * Just reallocate the proper number of buckets - we don't need to : * walk through them - we can walk the dense-allocated chunks : * (just like in ExecHashIncreaseNumBatches, but without all the : * copying into new chunks) : */ : hashtable->buckets = 0.00 : 5bd3be: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 5bd3c2: e8 29 b9 1d 00 callq 798cf0 : (HashJoinTuple *) repalloc(hashtable->buckets, : hashtable->nbuckets * sizeof(HashJoinTuple)); : : memset(hashtable->buckets, 0, sizeof(void *) * hashtable->nbuckets); 0.00 : 5bd3c7: 49 63 17 movslq (%r15),%rdx : * Just reallocate the proper number of buckets - we don't need to : * walk through them - we can walk the dense-allocated chunks : * (just like in ExecHashIncreaseNumBatches, but without all the : * copying into new chunks) : */ : hashtable->buckets = 0.00 : 5bd3ca: 48 89 c7 mov %rax,%rdi : (HashJoinTuple *) repalloc(hashtable->buckets, : hashtable->nbuckets * sizeof(HashJoinTuple)); : : memset(hashtable->buckets, 0, sizeof(void *) * hashtable->nbuckets); 0.00 : 5bd3cd: 31 f6 xor %esi,%esi : * Just reallocate the proper number of buckets - we don't need to : * walk through them - we can walk the dense-allocated chunks : * (just like in ExecHashIncreaseNumBatches, but without all the : * copying into new chunks) : */ : hashtable->buckets = 0.00 : 5bd3cf: 49 89 47 18 mov %rax,0x18(%r15) : (HashJoinTuple *) repalloc(hashtable->buckets, : hashtable->nbuckets * sizeof(HashJoinTuple)); : : memset(hashtable->buckets, 0, sizeof(void *) * hashtable->nbuckets); 0.00 : 5bd3d3: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 5bd3d7: e8 44 c0 ea ff callq 469420 : : /* scan through all tuples in all chunks to rebuild the hash table */ : for (chunk = hashtable->chunks; chunk != NULL; chunk = chunk->next) 0.00 : 5bd3dc: 49 8b bf c8 00 00 00 mov 0xc8(%r15),%rdi 0.00 : 5bd3e3: 48 85 ff test %rdi,%rdi 0.00 : 5bd3e6: 74 5a je 5bd442 0.00 : 5bd3e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5bd3ef: 00 : { : /* process all tuples stored in this chunk */ : size_t idx = 0; : while (idx < chunk->used) 0.00 : 5bd3f0: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) 0.00 : 5bd3f5: 74 42 je 5bd439 : { : HashJoinTuple hashTuple = (HashJoinTuple) (chunk->data + idx); 0.00 : 5bd3f7: 4c 8d 47 20 lea 0x20(%rdi),%r8 0.00 : 5bd3fb: 31 f6 xor %esi,%esi 0.00 : 5bd3fd: 0f 1f 00 nopl (%rax) 0.00 : 5bd400: 49 8d 0c 30 lea (%r8,%rsi,1),%rcx : ExecHashGetBucketAndBatch(HashJoinTable hashtable, : uint32 hashvalue, : int *bucketno, : int *batchno) : { : uint32 nbuckets = (uint32) hashtable->nbuckets; 0.00 : 5bd404: 41 8b 07 mov (%r15),%eax : { : HashJoinTuple hashTuple = (HashJoinTuple) (chunk->data + idx); : int bucketno; : int batchno; : : ExecHashGetBucketAndBatch(hashtable, hashTuple->hashvalue, 0.00 : 5bd407: 8b 51 08 mov 0x8(%rcx),%edx : *bucketno = hashvalue & (nbuckets - 1); : *batchno = (hashvalue >> hashtable->log2_nbuckets) & (nbatch - 1); : } : else : { : *bucketno = hashvalue & (nbuckets - 1); 0.00 : 5bd40a: 83 e8 01 sub $0x1,%eax 0.00 : 5bd40d: 21 d0 and %edx,%eax : : ExecHashGetBucketAndBatch(hashtable, hashTuple->hashvalue, : &bucketno, &batchno); : : /* add the tuple to the proper bucket */ : hashTuple->next = hashtable->buckets[bucketno]; 0.00 : 5bd40f: 48 63 d0 movslq %eax,%rdx 0.00 : 5bd412: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 5bd416: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5bd41a: 48 89 01 mov %rax,(%rcx) : hashtable->buckets[bucketno] = hashTuple; 0.00 : 5bd41d: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 5bd421: 48 89 0c d0 mov %rcx,(%rax,%rdx,8) : : /* advance index past the tuple */ : idx += MAXALIGN(HJTUPLE_OVERHEAD + 0.00 : 5bd425: 8b 41 10 mov 0x10(%rcx),%eax 0.00 : 5bd428: 48 83 c0 17 add $0x17,%rax 0.00 : 5bd42c: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 5bd430: 48 01 c6 add %rax,%rsi : /* scan through all tuples in all chunks to rebuild the hash table */ : for (chunk = hashtable->chunks; chunk != NULL; chunk = chunk->next) : { : /* process all tuples stored in this chunk */ : size_t idx = 0; : while (idx < chunk->used) 0.00 : 5bd433: 48 3b 77 10 cmp 0x10(%rdi),%rsi 0.00 : 5bd437: 72 c7 jb 5bd400 : hashtable->nbuckets * sizeof(HashJoinTuple)); : : memset(hashtable->buckets, 0, sizeof(void *) * hashtable->nbuckets); : : /* scan through all tuples in all chunks to rebuild the hash table */ : for (chunk = hashtable->chunks; chunk != NULL; chunk = chunk->next) 0.00 : 5bd439: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5bd43d: 48 85 ff test %rdi,%rdi 0.00 : 5bd440: 75 ae jne 5bd3f0 0.00 : 5bd442: 41 8b 07 mov (%r15),%eax 0.00 : 5bd445: e9 f6 fe ff ff jmpq 5bd340 : while (hashtable->spaceUsedSkew > hashtable->spaceAllowedSkew) : ExecHashRemoveNextSkewBucket(hashtable); : : /* Check we are not over the total spaceAllowed, either */ : if (hashtable->spaceUsed > hashtable->spaceAllowed) : ExecHashIncreaseNumBatches(hashtable); 0.00 : 5bd44a: 4c 89 ff mov %r15,%rdi 0.00 : 5bd44d: e8 8e ec ff ff callq 5bc0e0 0.00 : 5bd452: e9 b3 fe ff ff jmpq 5bd30a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1288 22.10 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 21.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 4.04 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 3.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 2.96 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 2.43 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 1.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 1.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 1.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 1.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 1.35 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 1.35 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1281 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1281 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1282 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1282 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 0.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 0.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1282 0.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679df0 : : #endif : } : : int : FileRead(File file, char *buffer, int amount) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 2.43 : 679df0: 55 push %rbp 1.35 : 679df1: 48 89 e5 mov %rsp,%rbp 0.27 : 679df4: 41 56 push %r14 1.89 : 679df6: 49 89 f6 mov %rsi,%r14 0.00 : 679df9: 41 55 push %r13 1.89 : 679dfb: 41 89 d5 mov %edx,%r13d 0.00 : 679dfe: 41 54 push %r12 1.35 : 679e00: 41 89 fc mov %edi,%r12d 0.54 : 679e03: 53 push %rbx : DO_DB(elog(LOG, "FileRead: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1281 1.08 : 679e04: e8 17 fb ff ff callq 679920 : if (returnCode < 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1282 0.81 : 679e09: 85 c0 test %eax,%eax : DO_DB(elog(LOG, "FileRead: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1281 1.08 : 679e0b: 89 c3 mov %eax,%ebx : if (returnCode < 0) 0.27 : 679e0d: 78 47 js 679e56 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1282 0.54 : 679e0f: 4d 63 e4 movslq %r12d,%r12 0.81 : 679e12: 4d 63 ed movslq %r13d,%r13 0.27 : 679e15: 49 c1 e4 06 shl $0x6,%r12 0.00 : 679e19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return returnCode; : : retry: : returnCode = read(VfdCache[file].fd, buffer, amount); 0.00 : 679e20: 48 8b 05 71 33 50 00 mov 0x503371(%rip),%rax # b7d198 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 0.81 : 679e27: 4c 89 ea mov %r13,%rdx 0.54 : 679e2a: 4c 89 f6 mov %r14,%rsi 0.00 : 679e2d: 42 8b 3c 20 mov (%rax,%r12,1),%edi 1.62 : 679e31: e8 da f7 de ff callq 469610 : : if (returnCode >= 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1288 26.68 : 679e36: 85 c0 test %eax,%eax : returnCode = FileAccess(file); : if (returnCode < 0) : return returnCode; : : retry: : returnCode = read(VfdCache[file].fd, buffer, amount); /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 4.04 : 679e38: 89 c3 mov %eax,%ebx : : if (returnCode >= 0) 0.00 : 679e3a: 79 2c jns 679e68 : _dosmaperr(error); : break; : } : #endif : /* OK to retry if interrupted */ : if (errno == EINTR) 0.00 : 679e3c: e8 7f fe de ff callq 469cc0 <__errno_location@plt> 0.00 : 679e41: 83 38 04 cmpl $0x4,(%rax) 0.00 : 679e44: 74 da je 679e20 : goto retry; : : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; 0.00 : 679e46: 48 8b 05 4b 33 50 00 mov 0x50334b(%rip),%rax # b7d198 0.00 : 679e4d: 4a c7 44 20 20 ff ff movq $0xffffffffffffffff,0x20(%rax,%r12,1) 0.00 : 679e54: ff ff : } : : return returnCode; : } 0.00 : 679e56: 89 d8 mov %ebx,%eax 0.00 : 679e58: 5b pop %rbx 0.00 : 679e59: 41 5c pop %r12 0.00 : 679e5b: 41 5d pop %r13 0.00 : 679e5d: 41 5e pop %r14 0.00 : 679e5f: c9 leaveq 0.00 : 679e60: c3 retq 0.00 : 679e61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : retry: : returnCode = read(VfdCache[file].fd, buffer, amount); : : if (returnCode >= 0) : VfdCache[file].seekPos += returnCode; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 3.23 : 679e68: 4c 03 25 29 33 50 00 add 0x503329(%rip),%r12 # b7d198 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 22.10 : 679e6f: 48 98 cltq 0.00 : 679e71: 49 01 44 24 20 add %rax,0x20(%r12) : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; : } : : return returnCode; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 21.29 : 679e76: 89 d8 mov %ebx,%eax 0.00 : 679e78: 5b pop %rbx 0.00 : 679e79: 41 5c pop %r12 0.00 : 679e7b: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 2.96 : 679e7d: 41 5e pop %r14 2.16 : 679e7f: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 27.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 23.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2175 14.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2175 5.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077d9a0 : : } : #endif /* USE_FLOAT8_BYVAL */ : : Datum : Float4GetDatum(float4 X) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 28.01 : 77d9a0: 55 push %rbp 5.67 : 77d9a1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 1.06 : 77d9a4: f3 0f 11 45 fc movss %xmm0,-0x4(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 27.66 : 77d9a9: 8b 45 fc mov -0x4(%rbp),%eax : float4 *retval = (float4 *) palloc(sizeof(float4)); : : *retval = X; : return PointerGetDatum(retval); : #endif : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2175 37.59 : 77d9ac: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/ip_tables.ko ---------------------------------------------- 9.89 ??:0 9.62 ??:0 9.07 ??:0 5.49 ??:0 5.22 ??:0 2.20 ??:0 2.20 ??:0 2.20 ??:0 2.20 ??:0 1.65 ??:0 1.65 ??:0 1.37 ??:0 1.37 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 0.82 ??:0 0.82 ??:0 0.82 ??:0 0.82 ??:0 0.82 ??:0 0.82 ??:0 0.82 ??:0 0.82 ??:0 0.82 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/ip_tables.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000025c0 : ??:0 8.79 : 25c0: 41 57 push %r15 0.27 : 25f2: 48 c7 c0 00 00 00 00 mov 0xd8(%rdi),%r13 0.27 : 25f9: 41 56 41 55 41 mov 0x70(%rsp),%rcx 0.00 : 25fe: 54 49 89 fc 55 mov 0x70(%rsp),%rsi 0.00 : 2603: 53 4c 89 add %rdx,%r13 0.00 : 2606: c3 48 81 ec 08 01 cmpq $0x0,0x70(%rsp) 0.27 : 260c: 00 00 48 89 cmove %rax,%rcx ??:0 0.55 : 2610: 4c 24 68 48 89 54 cmpq $0x0,0x68(%rsp) 0.00 : 2616: 24 70 89 74 24 78 cmovne 0x68(%rsp),%rax 0.00 : 261c: 8b 97 c4 00 00 00 4c mov %rcx,0x80(%rsp) 0.00 : 2623: 8b 0.27 : 2624: af d8 00 00 00 48 8b mov %rax,0x88(%rsp) 0.00 : 262b: 4c 0.27 : 262c: 24 70 48 8b 74 movzwl 0x6(%r13),%eax 0.82 : 2631: 24 70 49 01 rol $0x8,%ax 0.55 : 2635: d5 48 83 7c 24 and $0x1fff,%eax 0.55 : 263a: 70 00 48 0f 44 c8 48 mov %eax,0xf0(%rsp) 2.20 : 2641: 83 7c 24 68 00 48 0f mov 0xd8(%rdi),%rax 0.00 : 2648: 45 44 24 68 48 mov 0x68(%rsp),%rdi 0.27 : 264d: 89 8c 24 80 movzbl (%rax,%rdx,1),%eax 0.55 : 2651: 00 00 00 48 89 84 24 movb $0x0,0xfd(%rsp) 0.00 : 2658: 88 0.00 : 2659: 00 00 00 41 0f b7 45 mov %rsi,0xe0(%rsp) 0.00 : 2660: 06 0.00 : 2661: 66 c1 c0 08 25 ff 1f mov %rdi,0xe8(%rsp) 0.00 : 2668: 00 0.27 : 2669: 00 89 84 24 f0 00 00 movb $0x2,0xfc(%rsp) 0.00 : 2670: 00 0.00 : 2671: 48 8b 87 and $0xf,%eax 0.27 : 2674: d8 00 00 shl $0x2,%eax 0.00 : 2677: 00 48 8b 7c 24 68 0f mov %eax,0xf4(%rsp) 1.10 : 267e: b6 04 10 c6 mov 0x78(%rsp),%eax 0.00 : 2682: 84 24 fd 00 00 00 00 mov %eax,0xf8(%rsp) 0.82 : 2689: 48 89 b4 24 e0 callq 268e 0.82 : 268e: 00 00 00 48 89 bc 24 mov %gs:0x0,%eax 0.00 : 2695: e8 0.82 : 2696: 00 00 00 add $0x1,%eax 0.00 : 2699: c6 84 24 and $0x1,%eax 0.27 : 269c: fc 00 00 00 02 83 e0 mov %eax,0xb4(%rsp) 0.00 : 26a3: 0f c1 e0 02 89 84 24 add %eax,%gs:0x0 0.00 : 26aa: f4 0.27 : 26ab: 00 00 00 8b mov 0x18(%rbx),%rdx ??:0 5.49 : 26af: 44 24 78 89 add $0x30,%rbx 0.00 : 26b3: 84 24 f8 00 00 00 e8 mov %rdx,0xa8(%rsp) 0.00 : 26ba: 00 0.27 : 26bb: 00 00 00 65 8b 04 25 mov 0xa8(%rsp),%rcx 0.00 : 26c2: 00 ??:0 1.10 : 26c3: 00 00 00 83 c0 01 83 mov %gs:0x0,%edx 0.00 : 26ca: e0 0.00 : 26cb: 01 89 mov %edx,%edx 0.27 : 26cd: 84 24 b4 00 00 00 65 mov 0xa8(%rsp),%rsi 0.00 : 26d4: 01 0.27 : 26d5: 04 25 00 00 00 mov 0x48(%rcx,%rdx,8),%rcx ??:0 9.89 : 26da: 00 48 8b 53 18 48 83 mov %rcx,0x90(%rsp) 0.00 : 26e1: c3 0.27 : 26e2: 30 48 89 94 mov 0x40(%rsi),%rax ??:0 1.10 : 26e6: 24 a8 00 00 mov (%rax,%rdx,8),%rax ??:0 9.07 : 26ea: 00 48 8b 8c 24 a8 00 mov %rax,0x98(%rsp) 0.00 : 26f1: 00 0.27 : 26f2: 00 65 8b 14 mov 0x38(%rsi),%r15 0.27 : 26f6: 25 00 00 00 00 89 d2 add 0x0(,%rdx,8),%r15 0.00 : 26fd: 48 0.27 : 26fe: 8b b4 24 a8 mov 0x78(%rsp),%eax ??:0 1.65 : 2702: 00 00 00 48 8b 4c d1 cmpb $0x0,0x0(%rip) # 2709 0.55 : 2709: 48 48 89 mov (%r15),%edi 0.55 : 270c: 8c 24 90 00 00 mov %rax,0x50(%rsp) 0.27 : 2711: 00 48 8b 46 40 48 8b mov %edi,0xa4(%rsp) 0.00 : 2718: 04 d0 48 89 mov 0xc(%rsi,%rax,4),%ebp 0.00 : 271c: 84 24 98 00 00 mov %rbx,0x58(%rsp) 0.00 : 2721: 00 4c 8b 7e 38 4c jne 2bd3 0.82 : 2727: 03 3c d5 00 00 mov 0x50(%rsp),%rdx 0.27 : 272c: 00 00 mov %ebp,%eax 0.00 : 272e: 8b 44 24 78 80 3d 00 mov 0x90(%rsp),%rbp 0.00 : 2735: 00 0.00 : 2736: 00 00 00 41 8b 3f 48 lea 0xd0(%rsp),%r14 0.00 : 273d: 89 0.00 : 273e: 44 24 50 89 bc 24 a4 movl $0x0,0x7c(%rsp) 0.00 : 2745: 00 0.00 : 2746: 00 00 8b 6c add $0x8,%rdx 0.00 : 274a: 86 0c 48 add %rax,%rbp 0.00 : 274d: 89 5c 24 58 0f mov %rdx,0x48(%rsp) 0.00 : 2752: 85 ac 04 00 00 48 nopw 0x0(%rax,%rax,1) 0.55 : 2758: 8b 54 24 50 movzbl 0x53(%rbp),%ecx ??:0 9.62 : 275c: 89 e8 48 mov 0x8(%rbp),%eax ??:0 2.20 : 275f: 8b ac 24 90 and 0xc(%r13),%eax 0.27 : 2763: 00 00 00 4c 8d b4 24 mov 0xf0(%rsp),%esi 0.00 : 276a: d0 00 00 cmp 0x0(%rbp),%eax 0.27 : 276d: 00 c7 mov %ecx,%eax 0.00 : 276f: 44 24 7c setne %dl 0.55 : 2772: 00 00 00 shr $0x3,%eax 0.27 : 2775: 00 48 83 and $0x1,%eax 0.27 : 2778: c2 08 cmp %al,%dl 0.00 : 277a: 48 01 jne 27f8 0.82 : 277c: c5 48 89 mov 0xc(%rbp),%eax 0.00 : 277f: 54 24 48 66 and 0x10(%r13),%eax 0.00 : 2783: 0f 1f 44 cmp 0x4(%rbp),%eax 0.27 : 2786: 00 00 mov %ecx,%eax 0.27 : 2788: 0f b6 4d setne %dl 0.55 : 278b: 53 8b 45 shr $0x4,%eax 0.00 : 278e: 08 41 23 and $0x1,%eax 0.00 : 2791: 45 0c cmp %al,%dl 0.00 : 2793: 8b b4 jne 27f8 0.27 : 2795: 24 f0 00 00 00 3b 45 mov 0x80(%rsp),%rbx 0.00 : 279c: 00 0.00 : 279d: 89 c8 0f 95 mov 0x8(%rbx),%rdx 0.27 : 27a1: c2 c1 e8 mov (%rbx),%rax 0.00 : 27a4: 03 83 e0 01 xor 0x18(%rbp),%rdx 0.82 : 27a8: 38 c2 75 7c xor 0x10(%rbp),%rax 0.00 : 27ac: 8b 45 0c 41 and 0x38(%rbp),%rdx 0.00 : 27b0: 23 45 10 3b and 0x30(%rbp),%rax 0.00 : 27b4: 45 04 89 or %rax,%rdx 1.10 : 27b7: c8 0f mov %ecx,%eax 0.00 : 27b9: 95 c2 c1 setne %dl 0.00 : 27bc: e8 04 83 and $0x1,%eax 0.00 : 27bf: e0 01 cmp %al,%dl 0.00 : 27c1: 38 c2 jne 27f8 1.65 : 27c3: 75 63 48 8b 9c 24 80 mov 0x88(%rsp),%rdi 0.00 : 27ca: 00 0.00 : 27cb: 00 00 48 8b mov 0x8(%rdi),%rdx 0.82 : 27cf: 53 08 48 mov (%rdi),%rax 0.00 : 27d2: 8b 03 48 33 xor 0x28(%rbp),%rdx 0.82 : 27d6: 55 18 48 33 xor 0x20(%rbp),%rax 0.00 : 27da: 45 10 48 23 and 0x48(%rbp),%rdx 0.00 : 27de: 55 38 48 23 and 0x40(%rbp),%rax 0.27 : 27e2: 45 30 48 or %rax,%rdx 0.00 : 27e5: 09 c2 mov %ecx,%eax 0.27 : 27e7: 89 c8 0f setne %dl 0.00 : 27ea: 95 c2 shr %eax 0.00 : 27ec: 83 e0 01 and $0x1,%eax 0.27 : 27ef: 38 c2 cmp %al,%dl 0.00 : 27f1: 75 35 je 2860 0.00 : 27f3: 48 8b bc 24 88 nopl 0x0(%rax,%rax,1) 0.00 : 27f8: 00 00 00 48 movzwl 0x5a(%rbp),%eax 0.27 : 27fc: 8b 57 08 add %rax,%rbp 0.27 : 27ff: 48 8b 07 48 33 55 28 cmpb $0x0,0xfd(%rsp) 0.00 : 2806: 48 0.27 : 2807: 33 45 20 48 23 55 je 2758 0.27 : 280d: 48 48 23 45 40 48 09 cmpb $0x0,0x0(%rip) # 2814 0.55 : 2814: c2 89 c8 0f 95 c2 jne 2bff 0.00 : 281a: d1 e8 83 e0 01 38 c2 mov 0xa4(%rsp),%eax 0.00 : 2821: 74 6d 0f mov %eax,(%r15) 0.00 : 2824: 1f 44 00 00 0f b7 45 mov 0xb4(%rsp),%edx 0.00 : 282b: 5a 48 01 c5 80 bc 24 add %edx,%gs:0x0 0.00 : 2832: fd 1.37 : 2833: 00 00 00 00 0f callq 2838 0.00 : 2838: 84 4b ff ff ff 80 3d cmpb $0x0,0xfd(%rsp) 0.00 : 283f: 00 0.27 : 2840: 00 00 00 00 0f mov $0x0,%eax 0.00 : 2845: 85 e5 03 00 00 cmove 0x7c(%rsp),%eax 0.00 : 284a: 8b 84 24 a4 mov %eax,0x7c(%rsp) 0.27 : 284e: 00 00 00 41 89 07 8b add $0x108,%rsp 0.00 : 2855: 94 pop %rbx 0.27 : 2856: 24 pop %rbp 0.00 : 2857: b4 00 pop %r12 0.27 : 2859: 00 00 pop %r13 0.00 : 285b: 65 01 pop %r14 0.00 : 285d: 14 25 pop %r15 0.00 : 285f: 00 retq 0.00 : 2860: 00 00 00 e8 movzwl 0x50(%rbp),%edx 0.27 : 2864: 00 00 00 test %dx,%dx 0.00 : 2867: 00 80 je 2884 0.00 : 2869: bc 24 fd 00 00 movzbl 0x9(%r13),%eax 0.00 : 286e: 00 00 b8 cmp %ax,%dx 0.27 : 2871: 00 00 mov %ecx,%eax 0.00 : 2873: 00 00 0f setne %dl 0.00 : 2876: 44 44 24 shr $0x6,%eax 0.00 : 2879: 7c 89 44 and $0x1,%eax 0.00 : 287c: 24 7c cmp %al,%dl 0.00 : 287e: 48 81 c4 08 01 00 jne 27f8 0.55 : 2884: 00 5b test %esi,%esi 0.00 : 2886: 5d 41 5c sete %al 0.55 : 2889: 41 5d 41 and 0x52(%rbp),%al 0.00 : 288c: 5e 41 5f shr $0x5,%ecx 0.27 : 288f: c3 0f mov %ecx,%edx 0.00 : 2891: b7 55 50 and $0x1,%edx 0.27 : 2894: 66 85 cmp %dl,%al 0.00 : 2896: d2 74 1b 41 0f b6 jne 27f8 0.27 : 289c: 45 09 66 39 movzwl 0x58(%rbp),%eax 0.55 : 28a0: c2 89 c8 0f lea 0x70(%rbp),%rbx 0.00 : 28a4: 95 c2 c1 e8 06 lea 0x0(%rbp,%rax,1),%rax 0.55 : 28a9: 83 e0 01 cmp %rax,%rbx 0.00 : 28ac: 38 c2 jb 28c4 0.00 : 28ae: 0f 85 jmp 28f0 0.00 : 28b0: 74 ff ff movzwl (%rbx),%eax 0.00 : 28b3: ff 85 f6 add %rax,%rbx 0.00 : 28b6: 0f 94 c0 22 movzwl 0x58(%rbp),%eax 0.00 : 28ba: 45 52 c1 e9 05 lea 0x0(%rbp,%rax,1),%rax 0.00 : 28bf: 89 ca 83 cmp %rax,%rbx 0.00 : 28c2: e2 01 jae 28f0 0.00 : 28c4: 38 d0 0f 85 mov 0x8(%rbx),%rax 0.27 : 28c8: 5c ff ff ff lea 0x20(%rbx),%rdx 0.00 : 28cc: 0f b7 45 mov %r14,%rsi 0.00 : 28cf: 58 48 8d mov %r12,%rdi 0.27 : 28d2: 5d 70 48 8d 44 05 00 mov %rdx,0xd8(%rsp) 0.00 : 28d9: 48 0.27 : 28da: 39 c3 72 16 eb 40 0f mov %rax,0xd0(%rsp) 0.00 : 28e1: b7 0.00 : 28e2: 03 48 01 callq *0x30(%rax) 0.27 : 28e5: c3 0f test %al,%al 0.00 : 28e7: b7 45 jne 28b0 0.00 : 28e9: 58 48 8d 44 05 jmpq 27f8 0.00 : 28ee: 00 48 xchg %ax,%ax 1.10 : 28f0: 39 c3 73 2c 48 mov 0x68(%r12),%eax 1.37 : 28f5: 8b 43 08 48 8d addq $0x1,0x60(%rbp) 0.27 : 28fa: 53 20 4c 89 add %rax,0x68(%rbp) 1.10 : 28fe: f6 4c 89 e7 movzwl 0x58(%rbp),%eax 0.27 : 2902: 48 89 94 24 d8 00 cmpb $0x0,0x7d(%r12) 0.55 : 2908: 00 00 48 89 84 mov %ax,0x36(%rsp) 0.00 : 290d: 24 d0 00 movzwl %ax,%eax 0.00 : 2910: 00 00 ff 50 30 lea 0x0(%rbp,%rax,1),%rbx 0.27 : 2915: 84 c0 75 c7 e9 0a js 2a90 0.00 : 291b: ff ff ff 66 mov 0x8(%rbx),%rax 2.20 : 291f: 90 41 8b 44 24 cmpq $0x0,0x30(%rax) 2.20 : 2924: 68 48 je 2980 0.00 : 2926: 83 45 60 01 48 01 45 mov %rax,0xd0(%rsp) 0.00 : 292d: 68 0.00 : 292e: 0f b7 45 58 lea 0x20(%rbx),%rax 0.00 : 2932: 41 80 7c mov %r14,%rsi 0.00 : 2935: 24 7d 00 mov %r12,%rdi 0.00 : 2938: 66 89 44 24 36 0f b7 mov %rax,0xd8(%rsp) 0.00 : 293f: c0 0.00 : 2940: 48 8d 5c 05 mov 0x8(%rbx),%rax 0.00 : 2944: 00 0f 88 callq *0x30(%rax) 0.00 : 2947: 75 01 00 00 mov %eax,0x7c(%rsp) 0.00 : 294b: 48 8b 43 08 48 cmpl $0xffffffff,0x7c(%rsp) 0.00 : 2950: 83 78 30 00 74 5a 48 mov 0xd8(%r12),%rcx 0.00 : 2957: 89 0.00 : 2958: 84 24 d0 00 00 00 48 mov 0xc4(%r12),%eax 0.00 : 295f: 8d 0.00 : 2960: 43 20 4c 89 f6 4c jne 280d 0.00 : 2966: 89 e7 mov %eax,%edx 0.00 : 2968: 48 89 84 24 movzwl 0x5a(%rbp),%eax 0.00 : 296c: d8 00 00 00 lea (%rcx,%rdx,1),%r13 0.00 : 2970: 48 8b 43 add %rax,%rbp 0.00 : 2973: 08 ff 50 30 89 jmpq 27ff 0.00 : 2978: 44 24 7c 83 7c 24 7c nopl 0x0(%rax,%rax,1) 0.00 : 297f: ff 1.10 : 2980: 49 8b 8c mov 0x20(%rbx),%ebx 0.27 : 2983: 24 d8 test %ebx,%ebx 0.00 : 2985: 00 00 js 29ed 0.00 : 2987: 00 41 8b 84 movzwl 0x5a(%rbp),%eax 0.00 : 298b: 24 c4 00 movslq %ebx,%rdx 0.00 : 298e: 00 00 0f 85 a7 fe ff add 0x90(%rsp),%rdx 0.00 : 2995: ff 0.00 : 2996: 89 c2 0f b7 45 lea 0x0(%rbp,%rax,1),%rax 0.00 : 299b: 5a 4c 8d cmp %rax,%rdx 0.00 : 299e: 2c 11 je 29db 0.27 : 29a0: 48 01 c5 e9 testb $0x2,0x52(%rbp) 0.00 : 29a4: 87 fe jne 29db 0.00 : 29a6: ff ff 0f 1f 84 00 00 mov 0xa8(%rsp),%rsi 0.00 : 29ad: 00 0.27 : 29ae: 00 00 8b mov (%r15),%ecx 0.00 : 29b1: 5b 20 85 cmp 0x34(%rsi),%ecx 0.00 : 29b4: db 78 66 0f b7 45 jae 2c93 0.27 : 29ba: 5a 48 63 d3 48 03 94 mov 0x98(%rsp),%rdi 0.00 : 29c1: 24 0.00 : 29c2: 90 00 mov %ecx,%eax 0.00 : 29c4: 00 00 48 8d mov %rbp,(%rdi,%rax,8) 1.10 : 29c8: 44 05 00 lea 0x1(%rcx),%eax 0.00 : 29cb: 48 39 c2 mov %eax,(%r15) 0.00 : 29ce: 74 3b f6 45 52 02 75 cmpb $0x0,0x0(%rip) # 29d5 0.27 : 29d5: 35 48 8b b4 24 a8 jne 2ca0 0.00 : 29db: 00 00 00 41 8b 0f 3b mov 0x90(%rsp),%rbp 0.00 : 29e2: 4e 0.00 : 29e3: 34 0f mov %ebx,%eax 0.00 : 29e5: 83 d9 02 add %rax,%rbp 0.00 : 29e8: 00 00 48 8b bc jmpq 27ff 0.55 : 29ed: 24 98 00 cmp $0xfffffffb,%ebx 0.00 : 29f0: 00 00 89 c8 48 89 jne 2c88 0.00 : 29f6: 2c c7 8d mov (%r15),%eax 0.00 : 29f9: 41 01 41 89 07 80 3d cmp %eax,0xa4(%rsp) 0.00 : 2a00: 00 00 jb 2a50 0.00 : 2a02: 00 00 00 0f 85 mov 0x48(%rsp),%rdx 0.00 : 2a07: c5 02 00 00 48 8b ac mov 0xa8(%rsp),%rcx 0.00 : 2a0e: 24 0.00 : 2a0f: 90 00 00 00 89 d8 48 mov 0x90(%rsp),%rbp 0.00 : 2a16: 01 0.00 : 2a17: c5 e9 12 mov (%rcx,%rdx,4),%eax 0.00 : 2a1a: fe ff ff add %rax,%rbp 0.00 : 2a1d: 83 fb fb 0f 85 92 02 cmpb $0x0,0x0(%rip) # 2a24 0.00 : 2a24: 00 00 41 8b 07 39 je 27ff 0.00 : 2a2a: 84 24 a4 mov %rbp,%rdx 0.00 : 2a2d: 00 00 00 72 4e 48 8b mov $0x0,%rsi 0.00 : 2a34: 54 24 48 48 8b 8c 24 mov $0x0,%rdi 0.00 : 2a3b: a8 00 xor %eax,%eax 0.00 : 2a3d: 00 00 48 8b ac callq 2a42 0.00 : 2a42: 24 90 00 00 00 jmpq 27ff 0.00 : 2a47: 8b 04 91 48 01 c5 80 nopw 0x0(%rax,%rax,1) 0.00 : 2a4e: 3d 00 0.00 : 2a50: 00 00 00 lea -0x1(%rax),%ecx 0.00 : 2a53: 00 0f 84 mov %ecx,(%r15) 0.00 : 2a56: d5 fd ff ff 48 89 ea cmpb $0x0,0x0(%rip) # 2a5d 0.27 : 2a5d: 48 c7 mov %ecx,%eax 0.00 : 2a5f: c6 00 00 00 00 48 c7 mov 0x98(%rsp),%rbx 0.00 : 2a66: c7 0.00 : 2a67: 00 00 00 00 mov (%rbx,%rax,8),%rbp 0.00 : 2a6b: 31 c0 e8 00 00 00 je 27f8 0.00 : 2a71: 00 e9 b8 mov %rbp,%rdx 0.00 : 2a74: fd ff ff 66 0f 1f 84 mov $0x0,%rsi 0.00 : 2a7b: 00 00 00 00 00 8d 48 mov $0x0,%rdi 0.00 : 2a82: ff 41 xor %eax,%eax 0.00 : 2a84: 89 0f 80 3d 00 callq 2a89 0.00 : 2a89: 00 00 00 00 89 jmpq 27f8 0.00 : 2a8e: c8 48 xchg %ax,%ax 0.00 : 2a90: 8b 9c 24 98 00 00 00 mov 0xa8(%rsp),%rsi 0.00 : 2a97: 48 0.00 : 2a98: 8b 2c c3 0f 84 mov 0x50(%rsp),%rcx 0.00 : 2a9d: 87 fd ff xor %r9d,%r9d 0.00 : 2aa0: ff 48 89 ea 48 mov 0x50(%rsp),%rdi 0.00 : 2aa5: c7 c6 00 00 00 00 48 mov %gs:0x0,%eax 0.00 : 2aac: c7 0.00 : 2aad: c7 00 00 00 mov 0xc(%rsi,%rcx,4),%edx 0.00 : 2ab1: 00 31 cltq 0.00 : 2ab3: c0 e8 00 00 00 00 e9 mov 0x0(,%rdi,8),%rdi 0.00 : 2aba: 6a 0.00 : 2abb: fd ff mov %edx,%ecx 0.00 : 2abd: ff 66 90 48 8b add 0x48(%rsi,%rax,8),%rcx 0.00 : 2ac2: b4 24 a8 00 00 00 48 movq $0x0,0xb8(%rsp) 0.00 : 2ac9: 8b 4c 24 50 45 0.00 : 2ace: 31 c9 48 8b 7c 24 50 mov %rdi,0xc0(%rsp) 0.00 : 2ad5: 65 0.00 : 2ad6: 8b 04 mov (%rsi),%eax 0.00 : 2ad8: 25 00 sub %edx,%eax 0.00 : 2ada: 00 00 00 8b lea (%rcx,%rax,1),%rax 0.00 : 2ade: 54 8e 0c cmp %rax,%rcx 0.00 : 2ae1: 48 98 48 8b 3c fd 00 mov %rax,0xc8(%rsp) 0.00 : 2ae8: 00 0.00 : 2ae9: 00 00 jae 2b53 0.00 : 2aeb: 89 d1 48 03 4c c6 48 mov 0xc0(%rsp),%r11 0.00 : 2af2: 48 0.00 : 2af3: c7 84 24 b8 00 mov %rcx,0x38(%rsp) 0.00 : 2af8: 00 00 00 xor %r9d,%r9d 0.00 : 2afb: 00 00 00 48 89 mov 0x38(%rsp),%rdx 0.00 : 2b00: bc 24 c0 00 00 00 8b mov $0x0,%rdi 0.00 : 2b07: 06 29 d0 48 8d mov $0x6,%ecx 0.00 : 2b0c: 04 01 48 39 movzwl 0x58(%rdx),%eax 0.00 : 2b10: c1 48 89 mov %rdx,%r8 0.00 : 2b13: 84 24 c8 add %rax,%r8 0.00 : 2b16: 00 00 00 73 mov 0x8(%r8),%r10 0.00 : 2b1a: 68 4c 8b 9c lea 0x10(%r10),%rsi 0.00 : 2b1e: 24 c0 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 2b20: 00 00 00 48 89 4c jne 2bad 0.00 : 2b26: 24 38 45 31 lea 0x20(%r8),%r11 0.00 : 2b2a: c9 48 8b xor %r9d,%r9d 0.00 : 2b2d: 54 24 38 48 c7 mov 0x38(%rsp),%rdx 0.00 : 2b32: c7 00 00 00 00 b9 06 mov 0xc8(%rsp),%rcx 0.00 : 2b39: 00 0.00 : 2b3a: 00 00 0f b7 movzwl 0x5a(%rdx),%eax 0.00 : 2b3e: 42 58 49 add %rax,%rdx 0.00 : 2b41: 89 d0 49 cmp %rcx,%rdx 0.00 : 2b44: 01 c0 4d 8b 50 mov %rdx,0x38(%rsp) 0.00 : 2b49: 08 49 jb 2afb 0.00 : 2b4b: 8d 72 10 f3 a6 0f 85 mov %r11,0xc0(%rsp) 0.00 : 2b52: 87 0.00 : 2b53: 00 00 00 4d 8d 58 20 mov 0xb8(%rsp),%rsi 0.00 : 2b5a: 45 0.00 : 2b5b: 31 c9 48 8b 54 24 38 mov 0xc0(%rsp),%rdi 0.00 : 2b62: 48 0.00 : 2b63: 8b 8c 24 mov %r12,%rdx 0.00 : 2b66: c8 00 00 00 0f mov 0x58(%rsp),%rax 0.00 : 2b6b: b7 42 5a 48 01 mov 0x68(%rsp),%r8 0.00 : 2b70: c2 48 39 ca 48 mov 0x70(%rsp),%rcx 0.00 : 2b75: 89 54 24 38 72 mov %r9d,0x20(%rsp) 0.00 : 2b7a: b0 4c 89 9c 24 c0 00 mov $0x0,%r9 0.00 : 2b81: 00 00 48 8b b4 mov %rsi,0x18(%rsp) 0.00 : 2b86: 24 b8 00 00 mov 0x78(%rsp),%esi 0.00 : 2b8a: 00 48 8b bc 24 mov %rdi,0x10(%rsp) 0.00 : 2b8f: c0 00 00 00 4c mov %rax,0x8(%rsp) 0.00 : 2b94: 89 e2 48 8b 44 mov $0x2,%edi 0.00 : 2b99: 24 58 xor %eax,%eax 0.00 : 2b9b: 4c 8b 44 24 68 48 8b movq $0x0,(%rsp) 0.00 : 2ba2: 4c 0.00 : 2ba3: 24 70 44 89 4c callq 2ba8 0.00 : 2ba8: 24 20 49 c7 c1 jmpq 291b 0.00 : 2bad: 00 00 00 00 48 cmp 0x38(%rsp),%rbp 0.00 : 2bb2: 89 74 je 2bbd 0.00 : 2bb4: 24 18 8b 74 add $0x1,%r9d 0.00 : 2bb8: 24 78 48 89 7c jmpq 2b2d 0.00 : 2bbd: 24 10 48 89 44 24 cmpw $0x70,0x36(%rsp) 0.00 : 2bc3: 08 bf je 2c2b 0.00 : 2bc5: 02 00 00 00 31 c0 48 mov %r11,0xc0(%rsp) 0.00 : 2bcc: c7 0.00 : 2bcd: 04 24 00 00 add $0x1,%r9d 0.00 : 2bd1: 00 00 jmp 2b53 0.00 : 2bd3: e8 00 00 00 00 mov 0x20(%rsi,%rax,4),%r9d 0.00 : 2bd8: e9 6e fd mov %edi,%r8d 0.00 : 2bdb: ff ff 48 mov %rbx,%rdx 0.00 : 2bde: 3b 6c 24 38 74 09 41 mov $0x0,%rsi 0.00 : 2be5: 83 c1 01 e9 70 ff ff mov $0x0,%rdi 0.00 : 2bec: ff 66 xor %eax,%eax 0.00 : 2bee: 83 7c 24 add %rcx,%r9 0.00 : 2bf1: 36 70 74 66 mov 0x78(%rsp),%ecx 0.00 : 2bf5: 4c 89 9c 24 c0 callq 2bfa 0.00 : 2bfa: 00 00 00 41 83 jmpq 2727 0.00 : 2bff: c1 01 eb 80 44 8b 4c mov 0xa4(%rsp),%r8d 0.00 : 2c06: 86 0.00 : 2c07: 20 41 89 mov (%r15),%ecx 0.00 : 2c0a: f8 48 89 da 48 c7 c6 mov $0x0,%rdx 0.00 : 2c11: 00 00 00 00 48 c7 c7 mov $0x0,%rsi 0.00 : 2c18: 00 00 00 00 31 c0 49 mov $0x0,%rdi 0.00 : 2c1f: 01 c9 xor %eax,%eax 0.00 : 2c21: 8b 4c 24 78 e8 callq 2c26 0.00 : 2c26: 00 00 00 00 e9 jmpq 281a 0.00 : 2c2b: 28 fb ff ff 44 cmpb $0x0,0x10(%r10) 0.00 : 2c30: 8b 84 jne 2bc5 0.00 : 2c32: 24 a4 00 00 mov 0x20(%r8),%r8d 0.00 : 2c36: 00 41 8b test %r8d,%r8d 0.00 : 2c39: 0f 48 jns 2bc5 0.00 : 2c3b: c7 c2 00 00 00 mov $0x54,%ecx 0.00 : 2c40: 00 48 c7 mov %rbp,%rsi 0.00 : 2c43: c6 00 00 00 00 48 c7 mov $0x0,%rdi 0.00 : 2c4a: c7 00 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 2c4c: 00 00 00 31 c0 e8 jne 2bc5 0.00 : 2c52: 00 00 00 00 e9 ef fb cmp %r11,0xc0(%rsp) 0.00 : 2c59: ff 0.00 : 2c5a: ff 41 80 7a 10 00 75 movq $0x0,0xb8(%rsp) 0.00 : 2c61: 93 45 8b 40 20 0.00 : 2c66: 45 85 c0 79 8a b9 je 2bcd 0.00 : 2c6c: 54 00 00 00 48 89 ee movq $0x0,0xb8(%rsp) 0.00 : 2c73: 48 c7 c7 00 00 0.00 : 2c78: 00 00 f3 a6 0f 85 73 mov %r11,0xc0(%rsp) 0.00 : 2c7f: ff 0.00 : 2c80: ff ff 4c 39 9c jmpq 2bcd 0.00 : 2c85: 24 c0 00 nopl (%rax) 0.55 : 2c88: 00 00 not %ebx 0.27 : 2c8a: 48 c7 84 24 mov %ebx,0x7c(%rsp) 1.10 : 2c8e: b8 00 00 00 00 jmpq 280d 0.00 : 2c93: 00 00 00 0f 84 61 ff movl $0x0,0x7c(%rsp) 0.00 : 2c9a: ff 0.00 : 2c9b: ff 48 c7 84 24 jmpq 280d 0.00 : 2ca0: b8 00 00 mov %rbp,%rdx 0.00 : 2ca3: 00 00 00 00 00 4c 89 mov $0x0,%rsi 0.00 : 2caa: 9c 24 c0 00 00 00 e9 mov $0x0,%rdi 0.00 : 2cb1: 48 ff xor %eax,%eax 0.00 : 2cb3: ff ff 0f 1f 00 callq 2cb8 0.00 : 2cb8: f7 d3 89 5c 24 jmpq 29db : 2cbd: 7c e9 7a nopl (%rax) : 2cc0: fb ff push %r15 : 2cc2: ff c7 44 24 7c mov $0x80d0,%esi : 2cc7: 00 00 push %r14 : 2cc9: 00 00 e9 mov %rdi,%r14 : 2ccc: 6d fb push %r13 : 2cce: ff ff push %r12 : 2cd0: 48 89 ea xor %r12d,%r12d : 2cd3: 48 push %rbp : 2cd4: c7 push %rbx : 2cd5: c6 00 00 00 sub $0x8,%rsp : 2cd9: 00 48 c7 mov 0x10(%rdi),%ebp : 2cdc: c7 00 mov %ebp,%edi : 2cde: 00 00 00 31 c0 callq 2ce3 : 2ce3: e8 00 00 mov %eax,%r15d : 2ce6: 00 00 mov %eax,%eax : 2ce8: e9 1e fd ff lea (%rax,%rax,8),%rdx Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 49.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1736 6.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 6.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 4.32 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 3.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1731 2.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1736 2.59 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1731 2.31 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1775 2.31 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 2.02 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 1.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 1.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1728 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1724 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 1.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1728 1.15 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 1.15 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 1.15 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1758 0.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1758 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1732 0.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1732 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006983d0 <_mdfd_getseg>: : * EXTENSION_CREATE case. : */ : static MdfdVec * : _mdfd_getseg(SMgrRelation reln, ForkNumber forknum, BlockNumber blkno, : bool skipFsync, ExtensionBehavior behavior) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 0.58 : 6983d0: 55 push %rbp 1.15 : 6983d1: 48 89 e5 mov %rsp,%rbp 0.86 : 6983d4: 41 57 push %r15 0.58 : 6983d6: 41 56 push %r14 1.15 : 6983d8: 41 55 push %r13 2.02 : 6983da: 41 54 push %r12 0.00 : 6983dc: 53 push %rbx 0.00 : 6983dd: 89 cb mov %ecx,%ebx 0.58 : 6983df: 48 83 ec 18 sub $0x18,%rsp 1.73 : 6983e3: 89 55 c8 mov %edx,-0x38(%rbp) : MdfdVec *v = mdopen(reln, forknum, behavior); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1724 1.44 : 6983e6: 44 89 c2 mov %r8d,%edx : * EXTENSION_CREATE case. : */ : static MdfdVec * : _mdfd_getseg(SMgrRelation reln, ForkNumber forknum, BlockNumber blkno, : bool skipFsync, ExtensionBehavior behavior) : { 0.00 : 6983e9: 48 89 7d d0 mov %rdi,-0x30(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 1.44 : 6983ed: 89 75 cc mov %esi,-0x34(%rbp) 0.00 : 6983f0: 44 89 45 c4 mov %r8d,-0x3c(%rbp) : MdfdVec *v = mdopen(reln, forknum, behavior); 0.00 : 6983f4: e8 47 f5 ff ff callq 697940 : BlockNumber targetseg; : BlockNumber nextsegno; : : if (!v) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1728 1.73 : 6983f9: 48 85 c0 test %rax,%rax : */ : static MdfdVec * : _mdfd_getseg(SMgrRelation reln, ForkNumber forknum, BlockNumber blkno, : bool skipFsync, ExtensionBehavior behavior) : { : MdfdVec *v = mdopen(reln, forknum, behavior); 0.00 : 6983fc: 49 89 c4 mov %rax,%r12 : BlockNumber targetseg; : BlockNumber nextsegno; : : if (!v) 1.44 : 6983ff: 0f 84 d3 00 00 00 je 6984d8 <_mdfd_getseg+0x108> : return NULL; /* only possible if EXTENSION_RETURN_NULL */ : : targetseg = blkno / ((BlockNumber) RELSEG_SIZE); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1731 2.59 : 698405: 44 8b 7d c8 mov -0x38(%rbp),%r15d 3.75 : 698409: 41 c1 ef 11 shr $0x11,%r15d : for (nextsegno = 1; nextsegno <= targetseg; nextsegno++) 0.29 : 69840d: 45 85 ff test %r15d,%r15d 0.00 : 698410: 0f 84 c2 00 00 00 je 6984d8 <_mdfd_getseg+0x108> : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); : : mdextend(reln, forknum, /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1758 0.58 : 698416: 0f be db movsbl %bl,%ebx : : if (!v) : return NULL; /* only possible if EXTENSION_RETURN_NULL */ : : targetseg = blkno / ((BlockNumber) RELSEG_SIZE); : for (nextsegno = 1; nextsegno <= targetseg; nextsegno++) 0.29 : 698419: 41 bd 01 00 00 00 mov $0x1,%r13d 0.29 : 69841f: 41 be ff ff 01 00 mov $0x1ffff,%r14d : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); : : mdextend(reln, forknum, 0.00 : 698425: 89 5d c0 mov %ebx,-0x40(%rbp) 1.15 : 698428: eb 1d jmp 698447 <_mdfd_getseg+0x77> 0.00 : 69842a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (v->mdfd_chain == NULL) : { : if (behavior == EXTENSION_RETURN_NULL && : FILE_POSSIBLY_DELETED(errno)) : return NULL; : ereport(ERROR, /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1775 2.31 : 698430: 49 89 c4 mov %rax,%r12 : : if (!v) : return NULL; /* only possible if EXTENSION_RETURN_NULL */ : : targetseg = blkno / ((BlockNumber) RELSEG_SIZE); : for (nextsegno = 1; nextsegno <= targetseg; nextsegno++) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1732 0.58 : 698433: 41 83 c5 01 add $0x1,%r13d 0.00 : 698437: 41 81 c6 00 00 02 00 add $0x20000,%r14d 0.58 : 69843e: 45 39 ef cmp %r13d,%r15d 0.00 : 698441: 0f 82 91 00 00 00 jb 6984d8 <_mdfd_getseg+0x108> : { : Assert(nextsegno == v->mdfd_segno + 1); : : if (v->mdfd_chain == NULL) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1736 2.88 : 698447: 49 8b 44 24 08 mov 0x8(%r12),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1736 49.86 : 69844c: 48 85 c0 test %rax,%rax 0.00 : 69844f: 75 df jne 698430 <_mdfd_getseg+0x60> : * active segment are of size RELSEG_SIZE; therefore, pad them out : * with zeroes if needed. (This only matters if caller is : * extending the relation discontiguously, but that can happen in : * hash indexes.) : */ : if (behavior == EXTENSION_CREATE || InRecovery) 0.00 : 698451: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 0.00 : 698455: 74 0d je 698464 <_mdfd_getseg+0x94> 0.00 : 698457: 80 3d 0a 0d 4e 00 00 cmpb $0x0,0x4e0d0a(%rip) # b79168 0.00 : 69845e: 0f 84 8c 00 00 00 je 6984f0 <_mdfd_getseg+0x120> : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) 0.00 : 698464: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698467: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 69846b: 4c 89 e2 mov %r12,%rdx 0.00 : 69846e: e8 9d f7 ff ff callq 697c10 <_mdnblocks> 0.00 : 698473: 3d ff ff 01 00 cmp $0x1ffff,%eax 0.00 : 698478: 76 7e jbe 6984f8 <_mdfd_getseg+0x128> : mdextend(reln, forknum, : nextsegno * ((BlockNumber) RELSEG_SIZE) - 1, : zerobuf, skipFsync); : pfree(zerobuf); : } : v->mdfd_chain = _mdfd_openseg(reln, forknum, +nextsegno, O_CREAT); 0.00 : 69847a: b9 40 00 00 00 mov $0x40,%ecx : } : else : { : /* We won't create segment if not existent */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, nextsegno, 0); 0.00 : 69847f: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698482: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 698486: 44 89 ea mov %r13d,%edx 0.00 : 698489: e8 72 f8 ff ff callq 697d00 <_mdfd_openseg> 0.00 : 69848e: 49 89 44 24 08 mov %rax,0x8(%r12) : } : if (v->mdfd_chain == NULL) 0.00 : 698493: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 698498: 4d 85 e4 test %r12,%r12 0.00 : 69849b: 75 96 jne 698433 <_mdfd_getseg+0x63> : { : if (behavior == EXTENSION_RETURN_NULL && 0.00 : 69849d: 83 7d c4 01 cmpl $0x1,-0x3c(%rbp) 0.00 : 6984a1: 75 0a jne 6984ad <_mdfd_getseg+0xdd> 0.00 : 6984a3: e8 18 18 dd ff callq 469cc0 <__errno_location@plt> 0.00 : 6984a8: 83 38 02 cmpl $0x2,(%rax) 0.00 : 6984ab: 74 2b je 6984d8 <_mdfd_getseg+0x108> : FILE_POSSIBLY_DELETED(errno)) : return NULL; : ereport(ERROR, 0.00 : 6984ad: 45 31 c0 xor %r8d,%r8d 0.00 : 6984b0: b9 72 e3 8a 00 mov $0x8ae372,%ecx 0.00 : 6984b5: ba f3 06 00 00 mov $0x6f3,%edx 0.00 : 6984ba: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6984bf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6984c4: e8 f7 25 0e 00 callq 77aac0 0.00 : 6984c9: 84 c0 test %al,%al 0.00 : 6984cb: 75 5b jne 698528 <_mdfd_getseg+0x158> 0.00 : 6984cd: e8 fe 0f dd ff callq 4694d0 0.00 : 6984d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : } : v = v->mdfd_chain; : } : return v; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 6.92 : 6984d8: 48 83 c4 18 add $0x18,%rsp 6.63 : 6984dc: 4c 89 e0 mov %r12,%rax 0.00 : 6984df: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 4.32 : 6984e0: 41 5c pop %r12 0.00 : 6984e2: 41 5d pop %r13 0.00 : 6984e4: 41 5e pop %r14 0.00 : 6984e6: 41 5f pop %r15 2.31 : 6984e8: c9 leaveq 0.00 : 6984e9: c3 retq 0.00 : 6984ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : v->mdfd_chain = _mdfd_openseg(reln, forknum, +nextsegno, O_CREAT); : } : else : { : /* We won't create segment if not existent */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, nextsegno, 0); 0.00 : 6984f0: 31 c9 xor %ecx,%ecx 0.00 : 6984f2: eb 8b jmp 69847f <_mdfd_getseg+0xaf> 0.00 : 6984f4: 0f 1f 40 00 nopl 0x0(%rax) : */ : if (behavior == EXTENSION_CREATE || InRecovery) : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); 0.00 : 6984f8: bf 00 20 00 00 mov $0x2000,%edi 0.00 : 6984fd: e8 6e 0a 10 00 callq 798f70 : : mdextend(reln, forknum, 0.00 : 698502: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 698506: 44 8b 45 c0 mov -0x40(%rbp),%r8d : */ : if (behavior == EXTENSION_CREATE || InRecovery) : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); 0.00 : 69850a: 48 89 c3 mov %rax,%rbx : : mdextend(reln, forknum, 0.00 : 69850d: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698510: 48 89 c1 mov %rax,%rcx 0.00 : 698513: 44 89 f2 mov %r14d,%edx 0.00 : 698516: e8 35 fc ff ff callq 698150 : nextsegno * ((BlockNumber) RELSEG_SIZE) - 1, : zerobuf, skipFsync); : pfree(zerobuf); 0.00 : 69851b: 48 89 df mov %rbx,%rdi 0.00 : 69851e: e8 5d 06 10 00 callq 798b80 0.00 : 698523: e9 52 ff ff ff jmpq 69847a <_mdfd_getseg+0xaa> : if (v->mdfd_chain == NULL) : { : if (behavior == EXTENSION_RETURN_NULL && : FILE_POSSIBLY_DELETED(errno)) : return NULL; : ereport(ERROR, 0.00 : 698528: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 69852b: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 69852f: 44 89 ea mov %r13d,%edx 0.00 : 698532: e8 59 f7 ff ff callq 697c90 <_mdfd_segpath> 0.00 : 698537: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 69853a: 48 89 c6 mov %rax,%rsi 0.00 : 69853d: bf b0 e1 8a 00 mov $0x8ae1b0,%edi 0.00 : 698542: 31 c0 xor %eax,%eax 0.00 : 698544: e8 57 43 0e 00 callq 77c8a0 0.00 : 698549: 89 c3 mov %eax,%ebx 0.00 : 69854b: e8 a0 45 0e 00 callq 77caf0 0.00 : 698550: 89 de mov %ebx,%esi 0.00 : 698552: 89 c7 mov %eax,%edi 0.00 : 698554: 31 c0 xor %eax,%eax 0.00 : 698556: e8 85 20 0e 00 callq 77a5e0 0.00 : 69855b: e9 6d ff ff ff jmpq 6984cd <_mdfd_getseg+0xfd> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3602 16.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3602 12.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3603 9.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3604 7.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3607 5.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3606 5.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3607 4.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3607 3.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3602 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3605 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3603 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3607 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000706c50 : : * : * Return the digit buffer of a variable to the free pool : */ : static void : free_var(NumericVar *var) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3602 16.15 : 706c50: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3602 3.46 : 706c51: 48 89 e5 mov %rsp,%rbp 0.38 : 706c54: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3602 31.15 : 706c55: 48 89 fb mov %rdi,%rbx 0.00 : 706c58: 48 83 ec 08 sub $0x8,%rsp : digitbuf_free(var->buf); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3603 0.77 : 706c5c: 48 8b 7f 10 mov 0x10(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3603 12.31 : 706c60: 48 85 ff test %rdi,%rdi 0.00 : 706c63: 74 05 je 706c6a 0.38 : 706c65: e8 16 1f 09 00 callq 798b80 : var->buf = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3604 9.62 : 706c6a: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 706c71: 00 : var->digits = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3605 1.54 : 706c72: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 706c79: 00 : var->sign = NUMERIC_NAN; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3606 5.77 : 706c7a: c7 43 08 00 c0 00 00 movl $0xc000,0x8(%rbx) : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3607 0.77 : 706c81: 48 83 c4 08 add $0x8,%rsp 4.62 : 706c85: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3607 13.08 : 706c86: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:617 15.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 7.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 7.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:617 6.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 6.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:611 5.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:614 4.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:614 3.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:617 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 1.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:614 1.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9820 : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) > 0); : } : : Datum : date_le_timestamp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 11.11 : 6c9820: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 0.77 : 6c9821: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 6.90 : 6c9824: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:609 0.77 : 6c9825: 48 83 ec 08 sub $0x8,%rsp : DateADT dateVal = PG_GETARG_DATEADT(0); : Timestamp dt2 = PG_GETARG_TIMESTAMP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:611 6.13 : 6c9829: 48 8b 5f 28 mov 0x28(%rdi),%rbx : Timestamp dt1; : : dt1 = date2timestamp(dateVal); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:614 5.36 : 6c982d: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:614 1.15 : 6c9831: e8 da dd ff ff callq 6c7610 : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) <= 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 1.15 : 6c9836: 48 89 de mov %rbx,%rsi : { : DateADT dateVal = PG_GETARG_DATEADT(0); : Timestamp dt2 = PG_GETARG_TIMESTAMP(1); : Timestamp dt1; : : dt1 = date2timestamp(dateVal); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:614 4.21 : 6c9839: 48 89 c7 mov %rax,%rdi : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) <= 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 1.53 : 6c983c: e8 2f 70 07 00 callq 740870 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 15.33 : 6c9841: 85 c0 test %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 0.77 : 6c9843: 0f 9e c0 setle %al : } 0.00 : 6c9846: 48 83 c4 08 add $0x8,%rsp : Timestamp dt2 = PG_GETARG_TIMESTAMP(1); : Timestamp dt1; : : dt1 = date2timestamp(dateVal); : : PG_RETURN_BOOL(timestamp_cmp_internal(dt1, dt2) <= 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:616 7.66 : 6c984a: 0f b6 c0 movzbl %al,%eax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:617 3.07 : 6c984d: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:617 34.10 : 6c984e: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 9.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:855 7.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 6.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:844 5.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 5.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:844 5.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:850 5.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 4.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 4.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:856 4.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:856 3.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 3.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 3.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 3.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 3.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 2.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:843 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:843 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:849 1.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007584b0 : : PG_RETURN_BOOL(cmp >= 0); : } : : Datum : bpcharcmp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 7.26 : 7584b0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 3.91 : 7584b1: 48 89 e5 mov %rsp,%rbp 0.56 : 7584b4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 1.40 : 7584b8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 3.91 : 7584bc: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 7584c0: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 7584c4: 48 83 ec 20 sub $0x20,%rsp 1.40 : 7584c8: 49 89 fe mov %rdi,%r14 : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:843 1.40 : 7584cb: 48 8b 7f 20 mov 0x20(%rdi),%rdi 1.12 : 7584cf: e8 0c 68 02 00 callq 77ece0 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 0.28 : 7584d4: 49 8b 7e 28 mov 0x28(%r14),%rdi : } : : Datum : bpcharcmp(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); 0.28 : 7584d8: 49 89 c5 mov %rax,%r13 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:844 6.15 : 7584db: e8 00 68 02 00 callq 77ece0 : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); 0.28 : 7584e0: 4c 89 ef mov %r13,%rdi : : Datum : bpcharcmp(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 5.31 : 7584e3: 49 89 c4 mov %rax,%r12 : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:849 1.12 : 7584e6: e8 a5 f8 ff ff callq 757d90 : len2 = bcTruelen(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:850 5.31 : 7584eb: 4c 89 e7 mov %r12,%rdi : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); 0.28 : 7584ee: 89 c3 mov %eax,%ebx : len2 = bcTruelen(arg2); 0.00 : 7584f0: e8 9b f8 ff ff callq 757d90 : : cmp = varstr_cmp(VARDATA_ANY(arg1), len1, VARDATA_ANY(arg2), len2, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 5.31 : 7584f5: 41 f6 04 24 01 testb $0x1,(%r12) : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); : len2 = bcTruelen(arg2); 0.00 : 7584fa: 89 c1 mov %eax,%ecx : : cmp = varstr_cmp(VARDATA_ANY(arg1), len1, VARDATA_ANY(arg2), len2, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.56 : 7584fc: 49 8d 54 24 01 lea 0x1(%r12),%rdx 1.12 : 758501: 49 8d 44 24 04 lea 0x4(%r12),%rax 3.35 : 758506: 49 8d 7d 01 lea 0x1(%r13),%rdi 0.00 : 75850a: 45 8b 46 18 mov 0x18(%r14),%r8d 0.84 : 75850e: 89 de mov %ebx,%esi 0.84 : 758510: 48 0f 44 d0 cmove %rax,%rdx 2.79 : 758514: 41 f6 45 00 01 testb $0x1,0x0(%r13) 3.35 : 758519: 49 8d 45 04 lea 0x4(%r13),%rax 0.00 : 75851d: 48 0f 44 f8 cmove %rax,%rdi 3.35 : 758521: e8 8a 71 00 00 callq 75f6b0 : PG_GET_COLLATION()); : : PG_FREE_IF_COPY(arg1, 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:855 9.50 : 758526: 4d 3b 6e 20 cmp 0x20(%r14),%r13 : int cmp; : : len1 = bcTruelen(arg1); : len2 = bcTruelen(arg2); : : cmp = varstr_cmp(VARDATA_ANY(arg1), len1, VARDATA_ANY(arg2), len2, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 10.06 : 75852a: 89 c3 mov %eax,%ebx : PG_GET_COLLATION()); : : PG_FREE_IF_COPY(arg1, 0); 0.00 : 75852c: 74 08 je 758536 0.00 : 75852e: 4c 89 ef mov %r13,%rdi 0.00 : 758531: e8 4a 06 04 00 callq 798b80 : PG_FREE_IF_COPY(arg2, 1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:856 4.19 : 758536: 4d 3b 66 28 cmp 0x28(%r14),%r12 0.00 : 75853a: 74 08 je 758544 0.00 : 75853c: 4c 89 e7 mov %r12,%rdi 0.00 : 75853f: e8 3c 06 04 00 callq 798b80 4.19 : 758544: 89 d8 mov %ebx,%eax : : PG_RETURN_INT32(cmp); : } 0.00 : 758546: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.28 : 75854b: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 5.59 : 75854f: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 758554: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 4.75 : 758559: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 47.26 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 36.60 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4651 12.68 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 1.15 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4651 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ccfc0 : : /* : * Are checksums enabled for data pages? : */ : bool : DataChecksumsEnabled(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 12.68 : 4ccfc0: 48 8b 05 d9 c1 6a 00 mov 0x6ac1d9(%rip),%rax # b791a0 47.26 : 4ccfc7: 55 push %rbp 0.00 : 4ccfc8: 48 89 e5 mov %rsp,%rbp 0.00 : 4ccfcb: 8b 80 ec 00 00 00 mov 0xec(%rax),%eax : Assert(ControlFile != NULL); : return (ControlFile->data_checksum_version > 0); : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4651 36.60 : 4ccfd1: c9 leaveq : /* : * Are checksums enabled for data pages? : */ : bool : DataChecksumsEnabled(void) : { 0.00 : 4ccfd2: 85 c0 test %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 3.46 : 4ccfd4: 0f 95 c0 setne %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.03 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1779 20.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1781 20.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1798 19.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1779 15.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1797 1.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1779 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1791 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006756f0 : : * or if the bgwriter has been effectively disabled by setting : * bgwriter_lru_maxpages to 0.) : */ : bool : BgBufferSync(void) : { 0.00 : 6756f0: 55 push %rbp 0.00 : 6756f1: 48 89 e5 mov %rsp,%rbp 0.00 : 6756f4: 41 57 push %r15 : : /* : * Find out where the freelist clock sweep currently is, and how many : * buffer allocations have happened since our last call. : */ : strategy_buf_id = StrategySyncStart(&strategy_passes, &recent_alloc); 0.00 : 6756f6: 48 8d 75 d0 lea -0x30(%rbp),%rsi 0.00 : 6756fa: 48 8d 7d d4 lea -0x2c(%rbp),%rdi : * or if the bgwriter has been effectively disabled by setting : * bgwriter_lru_maxpages to 0.) : */ : bool : BgBufferSync(void) : { 0.00 : 6756fe: 41 56 push %r14 0.00 : 675700: 41 55 push %r13 0.00 : 675702: 41 54 push %r12 0.00 : 675704: 53 push %rbx 0.00 : 675705: 48 83 ec 18 sub $0x18,%rsp : : /* : * Find out where the freelist clock sweep currently is, and how many : * buffer allocations have happened since our last call. : */ : strategy_buf_id = StrategySyncStart(&strategy_passes, &recent_alloc); 0.00 : 675709: e8 22 1d 00 00 callq 677430 : : /* Report buffer alloc counts to pgstat */ : BgWriterStats.m_buf_alloc += recent_alloc; 0.00 : 67570e: 44 8b 55 d0 mov -0x30(%rbp),%r10d : /* : * If we're not running the LRU scan, just stop after doing the stats : * stuff. We mark the saved state invalid so that we can recover sanely : * if LRU scan is turned back on later. : */ : if (bgwriter_lru_maxpages <= 0) 0.00 : 675712: 44 8b 1d 77 2f 4f 00 mov 0x4f2f77(%rip),%r11d # b68690 : : /* : * Find out where the freelist clock sweep currently is, and how many : * buffer allocations have happened since our last call. : */ : strategy_buf_id = StrategySyncStart(&strategy_passes, &recent_alloc); 0.00 : 675719: 89 c6 mov %eax,%esi : : /* Report buffer alloc counts to pgstat */ : BgWriterStats.m_buf_alloc += recent_alloc; 0.00 : 67571b: 45 89 d1 mov %r10d,%r9d 0.00 : 67571e: 4c 01 0d 5b a3 54 00 add %r9,0x54a35b(%rip) # bbfa80 : /* : * If we're not running the LRU scan, just stop after doing the stats : * stuff. We mark the saved state invalid so that we can recover sanely : * if LRU scan is turned back on later. : */ : if (bgwriter_lru_maxpages <= 0) 0.00 : 675725: 45 85 db test %r11d,%r11d 0.00 : 675728: 0f 8e a2 02 00 00 jle 6759d0 : * see if we are still ahead of the clock sweep, and if so, how many : * buffers we could scan before we'd catch up with it and "lap" it. Note: : * weird-looking coding of xxx_passes comparisons are to avoid bogus : * behavior when the passes counts wrap around. : */ : if (saved_info_valid) 0.00 : 67572e: 80 3d 6f 79 50 00 00 cmpb $0x0,0x50796f(%rip) # b7d0a4 0.00 : 675735: 0f 85 4d 01 00 00 jne 675888 : } : : /* Update saved info for next time */ : prev_strategy_buf_id = strategy_buf_id; : prev_strategy_passes = strategy_passes; : saved_info_valid = true; 0.00 : 67573b: f3 49 0f 2a d1 cvtsi2ss %r9,%xmm2 : #ifdef BGW_DEBUG : elog(DEBUG2, "bgwriter initializing: strategy %u-%u", : strategy_passes, strategy_buf_id); : #endif : strategy_delta = 0; : next_to_clean = strategy_buf_id; 0.00 : 675740: 89 05 52 79 50 00 mov %eax,0x507952(%rip) # b7d098 : next_passes = strategy_passes; : bufs_to_lap = NBuffers; 0.00 : 675746: 8b 3d d4 33 4f 00 mov 0x4f33d4(%rip),%edi # b68b20 : elog(DEBUG2, "bgwriter initializing: strategy %u-%u", : strategy_passes, strategy_buf_id); : #endif : strategy_delta = 0; : next_to_clean = strategy_buf_id; : next_passes = strategy_passes; 0.00 : 67574c: 8b 45 d4 mov -0x2c(%rbp),%eax : bufs_to_lap = NBuffers; : } : : /* Update saved info for next time */ : prev_strategy_buf_id = strategy_buf_id; 0.00 : 67574f: 89 35 4b 79 50 00 mov %esi,0x50794b(%rip) # b7d0a0 : prev_strategy_passes = strategy_passes; : saved_info_valid = true; 0.00 : 675755: c6 05 48 79 50 00 01 movb $0x1,0x507948(%rip) # b7d0a4 : strategy_passes, strategy_buf_id); : #endif : strategy_delta = 0; : next_to_clean = strategy_buf_id; : next_passes = strategy_passes; : bufs_to_lap = NBuffers; 0.00 : 67575c: 89 7d c4 mov %edi,-0x3c(%rbp) : elog(DEBUG2, "bgwriter initializing: strategy %u-%u", : strategy_passes, strategy_buf_id); : #endif : strategy_delta = 0; : next_to_clean = strategy_buf_id; : next_passes = strategy_passes; 0.00 : 67575f: 89 05 2f 79 50 00 mov %eax,0x50792f(%rip) # b7d094 : bufs_to_lap = NBuffers; : } : : /* Update saved info for next time */ : prev_strategy_buf_id = strategy_buf_id; : prev_strategy_passes = strategy_passes; 0.00 : 675765: 89 05 31 79 50 00 mov %eax,0x507931(%rip) # b7d09c : * Estimate how many reusable buffers there are between the current : * strategy point and where we've scanned ahead to, based on the smoothed : * density estimate. : */ : bufs_ahead = NBuffers - bufs_to_lap; : reusable_buffers_est = (float) bufs_ahead / smoothed_density; 0.00 : 67576b: 89 f8 mov %edi,%eax 0.00 : 67576d: 2b 45 c4 sub -0x3c(%rbp),%eax 0.00 : 675770: f3 0f 2a c0 cvtsi2ss %eax,%xmm0 0.00 : 675774: f3 0f 5e 05 24 2f 4f divss 0x4f2f24(%rip),%xmm0 # b686a0 0.00 : 67577b: 00 0.00 : 67577c: f3 44 0f 2c f8 cvttss2si %xmm0,%r15d : /* : * Track a moving average of recent buffer allocations. Here, rather than : * a true average we want a fast-attack, slow-decline behavior: we : * immediately follow any increase. : */ : if (smoothed_alloc <= (float) recent_alloc) 0.00 : 675781: f3 0f 10 05 07 79 50 movss 0x507907(%rip),%xmm0 # b7d090 0.00 : 675788: 00 0.00 : 675789: 0f 2e d0 ucomiss %xmm0,%xmm2 0.00 : 67578c: 0f 82 1e 02 00 00 jb 6759b0 : smoothed_alloc = recent_alloc; 0.00 : 675792: f3 0f 11 15 f6 78 50 movss %xmm2,0x5078f6(%rip) # b7d090 0.00 : 675799: 00 : else : smoothed_alloc += ((float) recent_alloc - smoothed_alloc) / : smoothing_samples; : : /* Scale the estimate by a GUC to allow more aggressive tuning. */ : upcoming_alloc_est = (int) (smoothed_alloc * bgwriter_lru_multiplier); 0.00 : 67579a: f3 0f 10 05 ee 78 50 movss 0x5078ee(%rip),%xmm0 # b7d090 0.00 : 6757a1: 00 0.00 : 6757a2: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 6757a5: f2 0f 59 05 eb 2e 4f mulsd 0x4f2eeb(%rip),%xmm0 # b68698 0.00 : 6757ac: 00 0.00 : 6757ad: f2 0f 2c d0 cvttsd2si %xmm0,%edx : * kernel warnings on some platforms. Once upcoming_alloc_est has gone to : * zero, there's no point in tracking smaller and smaller values of : * smoothed_alloc, so just reset it to exactly zero to avoid this : * syndrome. It will pop back up as soon as recent_alloc increases. : */ : if (upcoming_alloc_est == 0) 0.00 : 6757b1: 85 d2 test %edx,%edx 0.00 : 6757b3: 75 0a jne 6757bf : smoothed_alloc = 0; 0.00 : 6757b5: c7 05 d1 78 50 00 00 movl $0x0,0x5078d1(%rip) # b7d090 0.00 : 6757bc: 00 00 00 0.00 : 6757bf: f3 0f 2a 15 29 2e 4f cvtsi2ssl 0x4f2e29(%rip),%xmm2 # b685f0 0.00 : 6757c6: 00 : * enough buffers to match our estimate of the next cycle's allocation : * requirements, or hit the bgwriter_lru_maxpages limit. : */ : : /* Make sure we can handle the pin inside SyncOneBuffer */ : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); 0.00 : 6757c7: 45 89 fc mov %r15d,%r12d : * zero, there's no point in tracking smaller and smaller values of : * smoothed_alloc, so just reset it to exactly zero to avoid this : * syndrome. It will pop back up as soon as recent_alloc increases. : */ : if (upcoming_alloc_est == 0) : smoothed_alloc = 0; 0.00 : 6757ca: f3 0f 10 05 16 49 23 movss 0x234916(%rip),%xmm0 # 8aa0e8 <__func__.17063+0x15> 0.00 : 6757d1: 00 0.00 : 6757d2: f3 0f 2a cf cvtsi2ss %edi,%xmm1 : * enough buffers to match our estimate of the next cycle's allocation : * requirements, or hit the bgwriter_lru_maxpages limit. : */ : : /* Make sure we can handle the pin inside SyncOneBuffer */ : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); 0.00 : 6757d6: 48 8b 3d e3 50 54 00 mov 0x5450e3(%rip),%rdi # bba8c0 : * zero, there's no point in tracking smaller and smaller values of : * smoothed_alloc, so just reset it to exactly zero to avoid this : * syndrome. It will pop back up as soon as recent_alloc increases. : */ : if (upcoming_alloc_est == 0) : smoothed_alloc = 0; 0.00 : 6757dd: f3 0f 5e c2 divss %xmm2,%xmm0 0.00 : 6757e1: f3 0f 5e c8 divss %xmm0,%xmm1 0.00 : 6757e5: f3 0f 2c c1 cvttss2si %xmm1,%eax 0.00 : 6757e9: 45 8d 34 07 lea (%r15,%rax,1),%r14d 0.00 : 6757ed: 41 39 d6 cmp %edx,%r14d 0.00 : 6757f0: 44 0f 4c f2 cmovl %edx,%r14d : * enough buffers to match our estimate of the next cycle's allocation : * requirements, or hit the bgwriter_lru_maxpages limit. : */ : : /* Make sure we can handle the pin inside SyncOneBuffer */ : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); 0.00 : 6757f4: 45 31 ed xor %r13d,%r13d 0.00 : 6757f7: e8 74 56 12 00 callq 79ae70 0.00 : 6757fc: 8b 5d c4 mov -0x3c(%rbp),%ebx 0.00 : 6757ff: 90 nop : num_to_scan = bufs_to_lap; : num_written = 0; : reusable_buffers = reusable_buffers_est; : : /* Execute the LRU scan */ : while (num_to_scan > 0 && reusable_buffers < upcoming_alloc_est) 0.00 : 675800: 85 db test %ebx,%ebx 0.00 : 675802: 7e 09 jle 67580d 0.00 : 675804: 45 39 e6 cmp %r12d,%r14d 0.00 : 675807: 0f 8f 23 01 00 00 jg 675930 : } : else if (buffer_state & BUF_REUSABLE) : reusable_buffers++; : } : : BgWriterStats.m_buf_written_clean += num_written; 0.00 : 67580d: 49 63 c5 movslq %r13d,%rax 0.00 : 675810: 48 01 05 49 a2 54 00 add %rax,0x54a249(%rip) # bbfa60 : * effectively halves the moving average period in cases where both the : * strategy and the background writer are doing some useful scanning, : * which is helpful because a long memory isn't as desirable on the : * density estimates. : */ : new_strategy_delta = bufs_to_lap - num_to_scan; 0.00 : 675817: 8b 45 c4 mov -0x3c(%rbp),%eax : new_recent_alloc = reusable_buffers - reusable_buffers_est; 0.00 : 67581a: 44 89 e2 mov %r12d,%edx 0.00 : 67581d: 44 29 fa sub %r15d,%edx : * effectively halves the moving average period in cases where both the : * strategy and the background writer are doing some useful scanning, : * which is helpful because a long memory isn't as desirable on the : * density estimates. : */ : new_strategy_delta = bufs_to_lap - num_to_scan; 0.00 : 675820: 29 d8 sub %ebx,%eax 0.00 : 675822: 48 98 cltq : new_recent_alloc = reusable_buffers - reusable_buffers_est; : if (new_strategy_delta > 0 && new_recent_alloc > 0) 0.00 : 675824: 48 85 c0 test %rax,%rax 0.00 : 675827: 7e 34 jle 67585d 0.00 : 675829: 85 d2 test %edx,%edx 0.00 : 67582b: 74 30 je 67585d : { : scans_per_alloc = (float) new_strategy_delta / (float) new_recent_alloc; : smoothed_density += (scans_per_alloc - smoothed_density) / 0.00 : 67582d: f3 48 0f 2a c0 cvtsi2ss %rax,%xmm0 0.00 : 675832: 89 d0 mov %edx,%eax 0.00 : 675834: f3 48 0f 2a c8 cvtsi2ss %rax,%xmm1 0.00 : 675839: f3 0f 10 15 5f 2e 4f movss 0x4f2e5f(%rip),%xmm2 # b686a0 0.00 : 675840: 00 0.00 : 675841: f3 0f 5e c1 divss %xmm1,%xmm0 0.00 : 675845: f3 0f 5c c2 subss %xmm2,%xmm0 0.00 : 675849: f3 0f 59 05 93 48 23 mulss 0x234893(%rip),%xmm0 # 8aa0e4 <__func__.17063+0x11> 0.00 : 675850: 00 0.00 : 675851: f3 0f 58 d0 addss %xmm0,%xmm2 0.00 : 675855: f3 0f 11 15 43 2e 4f movss %xmm2,0x4f2e43(%rip) # b686a0 0.00 : 67585c: 00 : scans_per_alloc, smoothed_density); : #endif : } : : /* Return true if OK to hibernate */ : return (bufs_to_lap == 0 && recent_alloc == 0); 0.00 : 67585d: 44 8b 55 c4 mov -0x3c(%rbp),%r10d 0.00 : 675861: 31 c0 xor %eax,%eax 0.00 : 675863: 45 85 d2 test %r10d,%r10d 0.00 : 675866: 75 0a jne 675872 0.00 : 675868: 44 8b 4d d0 mov -0x30(%rbp),%r9d 0.00 : 67586c: 45 85 c9 test %r9d,%r9d 0.00 : 67586f: 0f 94 c0 sete %al : } 0.00 : 675872: 48 83 c4 18 add $0x18,%rsp 0.00 : 675876: 5b pop %rbx 0.00 : 675877: 41 5c pop %r12 0.00 : 675879: 41 5d pop %r13 0.00 : 67587b: 41 5e pop %r14 0.00 : 67587d: 41 5f pop %r15 0.00 : 67587f: c9 leaveq 0.00 : 675880: c3 retq 0.00 : 675881: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * weird-looking coding of xxx_passes comparisons are to avoid bogus : * behavior when the passes counts wrap around. : */ : if (saved_info_valid) : { : int32 passes_delta = strategy_passes - prev_strategy_passes; 0.00 : 675888: 44 8b 45 d4 mov -0x2c(%rbp),%r8d : : strategy_delta = strategy_buf_id - prev_strategy_buf_id; 0.00 : 67588c: 89 c1 mov %eax,%ecx : strategy_delta += (long) passes_delta *NBuffers; 0.00 : 67588e: 8b 3d 8c 32 4f 00 mov 0x4f328c(%rip),%edi # b68b20 : */ : if (saved_info_valid) : { : int32 passes_delta = strategy_passes - prev_strategy_passes; : : strategy_delta = strategy_buf_id - prev_strategy_buf_id; 0.00 : 675894: 2b 0d 06 78 50 00 sub 0x507806(%rip),%ecx # b7d0a0 : strategy_delta += (long) passes_delta *NBuffers; 0.00 : 67589a: 44 89 c0 mov %r8d,%eax 0.00 : 67589d: 2b 05 f9 77 50 00 sub 0x5077f9(%rip),%eax # b7d09c 0.00 : 6758a3: 48 63 d7 movslq %edi,%rdx 0.00 : 6758a6: 89 7d c4 mov %edi,-0x3c(%rbp) : */ : if (saved_info_valid) : { : int32 passes_delta = strategy_passes - prev_strategy_passes; : : strategy_delta = strategy_buf_id - prev_strategy_buf_id; 0.00 : 6758a9: 48 63 c9 movslq %ecx,%rcx : strategy_delta += (long) passes_delta *NBuffers; 0.00 : 6758ac: 48 98 cltq 0.00 : 6758ae: 48 0f af c2 imul %rdx,%rax : : Assert(strategy_delta >= 0); : : if ((int32) (next_passes - strategy_passes) > 0) 0.00 : 6758b2: 8b 15 dc 77 50 00 mov 0x5077dc(%rip),%edx # b7d094 : if (saved_info_valid) : { : int32 passes_delta = strategy_passes - prev_strategy_passes; : : strategy_delta = strategy_buf_id - prev_strategy_buf_id; : strategy_delta += (long) passes_delta *NBuffers; 0.00 : 6758b8: 48 01 c1 add %rax,%rcx : : Assert(strategy_delta >= 0); : : if ((int32) (next_passes - strategy_passes) > 0) 0.00 : 6758bb: 89 d0 mov %edx,%eax 0.00 : 6758bd: 44 29 c0 sub %r8d,%eax 0.00 : 6758c0: 85 c0 test %eax,%eax 0.00 : 6758c2: 0f 8e 23 01 00 00 jle 6759eb : { : /* we're one pass ahead of the strategy point */ : bufs_to_lap = strategy_buf_id - next_to_clean; 0.00 : 6758c8: 89 f0 mov %esi,%eax 0.00 : 6758ca: 2b 05 c8 77 50 00 sub 0x5077c8(%rip),%eax # b7d098 0.00 : 6758d0: 89 45 c4 mov %eax,-0x3c(%rbp) : * Compute how many buffers had to be scanned for each new allocation, ie, : * 1/density of reusable buffers, and track a moving average of that. : * : * If the strategy point didn't move, we don't update the density estimate : */ : if (strategy_delta > 0 && recent_alloc > 0) 0.00 : 6758d3: 48 85 c9 test %rcx,%rcx : next_passes = strategy_passes; : bufs_to_lap = NBuffers; : } : : /* Update saved info for next time */ : prev_strategy_buf_id = strategy_buf_id; 0.00 : 6758d6: 89 35 c4 77 50 00 mov %esi,0x5077c4(%rip) # b7d0a0 : prev_strategy_passes = strategy_passes; 0.00 : 6758dc: 44 89 05 b9 77 50 00 mov %r8d,0x5077b9(%rip) # b7d09c : saved_info_valid = true; 0.00 : 6758e3: c6 05 ba 77 50 00 01 movb $0x1,0x5077ba(%rip) # b7d0a4 : * Compute how many buffers had to be scanned for each new allocation, ie, : * 1/density of reusable buffers, and track a moving average of that. : * : * If the strategy point didn't move, we don't update the density estimate : */ : if (strategy_delta > 0 && recent_alloc > 0) 0.00 : 6758ea: 0f 8e 2c 01 00 00 jle 675a1c 0.00 : 6758f0: 45 85 d2 test %r10d,%r10d 0.00 : 6758f3: 0f 57 d2 xorps %xmm2,%xmm2 0.00 : 6758f6: 0f 84 6f fe ff ff je 67576b : { : scans_per_alloc = (float) strategy_delta / (float) recent_alloc; 0.00 : 6758fc: f3 49 0f 2a d1 cvtsi2ss %r9,%xmm2 : smoothed_density += (scans_per_alloc - smoothed_density) / 0.00 : 675901: f3 48 0f 2a c1 cvtsi2ss %rcx,%xmm0 0.00 : 675906: f3 0f 10 0d 92 2d 4f movss 0x4f2d92(%rip),%xmm1 # b686a0 0.00 : 67590d: 00 0.00 : 67590e: f3 0f 5e c2 divss %xmm2,%xmm0 0.00 : 675912: f3 0f 5c c1 subss %xmm1,%xmm0 0.00 : 675916: f3 0f 59 05 c6 47 23 mulss 0x2347c6(%rip),%xmm0 # 8aa0e4 <__func__.17063+0x11> 0.00 : 67591d: 00 0.00 : 67591e: f3 0f 58 c8 addss %xmm0,%xmm1 0.00 : 675922: f3 0f 11 0d 76 2d 4f movss %xmm1,0x4f2d76(%rip) # b686a0 0.00 : 675929: 00 0.00 : 67592a: e9 3c fe ff ff jmpq 67576b 0.00 : 67592f: 90 nop : reusable_buffers = reusable_buffers_est; : : /* Execute the LRU scan */ : while (num_to_scan > 0 && reusable_buffers < upcoming_alloc_est) : { : int buffer_state = SyncOneBuffer(next_to_clean, true); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1779 22.03 : 675930: 8b 3d 62 77 50 00 mov 0x507762(%rip),%edi # b7d098 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1779 1.13 : 675936: be 01 00 00 00 mov $0x1,%esi 0.00 : 67593b: e8 20 f9 ff ff callq 675260 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1779 19.21 : 675940: 89 c2 mov %eax,%edx : : if (++next_to_clean >= NBuffers) 0.00 : 675942: 8b 05 50 77 50 00 mov 0x507750(%rip),%eax # b7d098 0.00 : 675948: 83 c0 01 add $0x1,%eax 0.00 : 67594b: 3b 05 cf 31 4f 00 cmp 0x4f31cf(%rip),%eax # b68b20 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1781 20.90 : 675951: 89 05 41 77 50 00 mov %eax,0x507741(%rip) # b7d098 0.00 : 675957: 7c 11 jl 67596a : { : next_to_clean = 0; : next_passes++; 0.00 : 675959: 83 05 34 77 50 00 01 addl $0x1,0x507734(%rip) # b7d094 : { : int buffer_state = SyncOneBuffer(next_to_clean, true); : : if (++next_to_clean >= NBuffers) : { : next_to_clean = 0; 0.00 : 675960: c7 05 2e 77 50 00 00 movl $0x0,0x50772e(%rip) # b7d098 0.00 : 675967: 00 00 00 : next_passes++; : } : num_to_scan--; 0.00 : 67596a: 83 eb 01 sub $0x1,%ebx : : if (buffer_state & BUF_WRITTEN) 0.00 : 67596d: f6 c2 01 test $0x1,%dl 0.00 : 675970: 74 26 je 675998 : { : reusable_buffers++; 0.00 : 675972: 41 83 c4 01 add $0x1,%r12d : if (++num_written >= bgwriter_lru_maxpages) 0.00 : 675976: 41 83 c5 01 add $0x1,%r13d /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1791 0.56 : 67597a: 44 3b 2d 0f 2d 4f 00 cmp 0x4f2d0f(%rip),%r13d # b68690 0.00 : 675981: 0f 8c 79 fe ff ff jl 675800 : { : BgWriterStats.m_maxwritten_clean++; 0.00 : 675987: 48 83 05 d9 a0 54 00 addq $0x1,0x54a0d9(%rip) # bbfa68 0.00 : 67598e: 01 : break; 0.00 : 67598f: e9 79 fe ff ff jmpq 67580d 0.00 : 675994: 0f 1f 40 00 nopl 0x0(%rax) : } : } : else if (buffer_state & BUF_REUSABLE) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1797 15.25 : 675998: 83 e2 02 and $0x2,%edx : reusable_buffers++; 0.00 : 67599b: 83 fa 01 cmp $0x1,%edx 0.00 : 67599e: 41 83 dc ff sbb $0xffffffff,%r12d /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1798 20.90 : 6759a2: e9 59 fe ff ff jmpq 675800 0.00 : 6759a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6759ae: 00 00 : * immediately follow any increase. : */ : if (smoothed_alloc <= (float) recent_alloc) : smoothed_alloc = recent_alloc; : else : smoothed_alloc += ((float) recent_alloc - smoothed_alloc) / 0.00 : 6759b0: f3 0f 5c d0 subss %xmm0,%xmm2 0.00 : 6759b4: f3 0f 59 15 28 47 23 mulss 0x234728(%rip),%xmm2 # 8aa0e4 <__func__.17063+0x11> 0.00 : 6759bb: 00 0.00 : 6759bc: f3 0f 58 c2 addss %xmm2,%xmm0 0.00 : 6759c0: f3 0f 11 05 c8 76 50 movss %xmm0,0x5076c8(%rip) # b7d090 0.00 : 6759c7: 00 0.00 : 6759c8: e9 cd fd ff ff jmpq 67579a 0.00 : 6759cd: 0f 1f 00 nopl (%rax) : * stuff. We mark the saved state invalid so that we can recover sanely : * if LRU scan is turned back on later. : */ : if (bgwriter_lru_maxpages <= 0) : { : saved_info_valid = false; 0.00 : 6759d0: c6 05 cd 76 50 00 00 movb $0x0,0x5076cd(%rip) # b7d0a4 : #endif : } : : /* Return true if OK to hibernate */ : return (bufs_to_lap == 0 && recent_alloc == 0); : } 0.00 : 6759d7: 48 83 c4 18 add $0x18,%rsp : * stuff. We mark the saved state invalid so that we can recover sanely : * if LRU scan is turned back on later. : */ : if (bgwriter_lru_maxpages <= 0) : { : saved_info_valid = false; 0.00 : 6759db: b8 01 00 00 00 mov $0x1,%eax : #endif : } : : /* Return true if OK to hibernate */ : return (bufs_to_lap == 0 && recent_alloc == 0); : } 0.00 : 6759e0: 5b pop %rbx 0.00 : 6759e1: 41 5c pop %r12 0.00 : 6759e3: 41 5d pop %r13 0.00 : 6759e5: 41 5e pop %r14 0.00 : 6759e7: 41 5f pop %r15 0.00 : 6759e9: c9 leaveq 0.00 : 6759ea: c3 retq : next_passes, next_to_clean, : strategy_passes, strategy_buf_id, : strategy_delta, bufs_to_lap); : #endif : } : else if (next_passes == strategy_passes && 0.00 : 6759eb: 41 39 d0 cmp %edx,%r8d 0.00 : 6759ee: 74 12 je 675a02 : elog(DEBUG2, "bgwriter behind: bgw %u-%u strategy %u-%u delta=%ld", : next_passes, next_to_clean, : strategy_passes, strategy_buf_id, : strategy_delta); : #endif : next_to_clean = strategy_buf_id; 0.00 : 6759f0: 89 35 a2 76 50 00 mov %esi,0x5076a2(%rip) # b7d098 : next_passes = strategy_passes; 0.00 : 6759f6: 44 89 05 97 76 50 00 mov %r8d,0x507697(%rip) # b7d094 0.00 : 6759fd: e9 d1 fe ff ff jmpq 6758d3 : next_passes, next_to_clean, : strategy_passes, strategy_buf_id, : strategy_delta, bufs_to_lap); : #endif : } : else if (next_passes == strategy_passes && 0.00 : 675a02: 8b 05 90 76 50 00 mov 0x507690(%rip),%eax # b7d098 0.00 : 675a08: 39 c6 cmp %eax,%esi 0.00 : 675a0a: 7f e4 jg 6759f0 : next_to_clean >= strategy_buf_id) : { : /* on same pass, but ahead or at least not behind */ : bufs_to_lap = NBuffers - (next_to_clean - strategy_buf_id); 0.00 : 675a0c: 89 fa mov %edi,%edx 0.00 : 675a0e: 29 c2 sub %eax,%edx 0.00 : 675a10: 89 d0 mov %edx,%eax 0.00 : 675a12: 01 f0 add %esi,%eax 0.00 : 675a14: 89 45 c4 mov %eax,-0x3c(%rbp) : next_passes, next_to_clean, : strategy_passes, strategy_buf_id, : strategy_delta, bufs_to_lap); : #endif : } : else if (next_passes == strategy_passes && 0.00 : 675a17: e9 b7 fe ff ff jmpq 6758d3 : * Compute how many buffers had to be scanned for each new allocation, ie, : * 1/density of reusable buffers, and track a moving average of that. : * : * If the strategy point didn't move, we don't update the density estimate : */ : if (strategy_delta > 0 && recent_alloc > 0) 0.00 : 675a1c: f3 49 0f 2a d1 cvtsi2ss %r9,%xmm2 0.00 : 675a21: e9 45 fd ff ff jmpq 67576b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2112 11.59 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 10.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 8.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2111 7.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2112 7.01 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 6.74 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 4.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 1.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 0.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674030 : : * Assumes that the buffer is valid and pinned, else the : * value may be obsolete immediately... : */ : BlockNumber : BufferGetBlockNumber(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 7.01 : 674030: 55 push %rbp : volatile BufferDesc *bufHdr; : : Assert(BufferIsPinned(buffer)); : : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 6.74 : 674031: 85 ff test %edi,%edi : * Assumes that the buffer is valid and pinned, else the : * value may be obsolete immediately... : */ : BlockNumber : BufferGetBlockNumber(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 1.08 : 674033: 48 89 e5 mov %rsp,%rbp : volatile BufferDesc *bufHdr; : : Assert(BufferIsPinned(buffer)); : : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 11.59 : 674036: 78 18 js 674050 : bufHdr = &(LocalBufferDescriptors[-buffer - 1]); : else : bufHdr = &BufferDescriptors[buffer - 1]; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 4.58 : 674038: 48 63 c7 movslq %edi,%rax 0.81 : 67403b: 48 83 e8 01 sub $0x1,%rax 1.08 : 67403f: 48 c1 e0 06 shl $0x6,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 10.51 : 674043: 48 03 05 b6 ba 54 00 add 0x54bab6(%rip),%rax # bbfb00 : : /* pinned, so OK to read tag without spinlock */ : return bufHdr->tag.blockNum; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2111 8.36 : 67404a: 8b 40 10 mov 0x10(%rax),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2112 40.70 : 67404d: c9 leaveq 7.55 : 67404e: c3 retq 0.00 : 67404f: 90 nop : volatile BufferDesc *bufHdr; : : Assert(BufferIsPinned(buffer)); : : if (BufferIsLocal(buffer)) : bufHdr = &(LocalBufferDescriptors[-buffer - 1]); 0.00 : 674050: f7 d7 not %edi 0.00 : 674052: 48 63 c7 movslq %edi,%rax 0.00 : 674055: 48 c1 e0 06 shl $0x6,%rax 0.00 : 674059: 48 03 05 b0 90 50 00 add 0x5090b0(%rip),%rax # b7d110 : else : bufHdr = &BufferDescriptors[buffer - 1]; : : /* pinned, so OK to read tag without spinlock */ : return bufHdr->tag.blockNum; 0.00 : 674060: 8b 40 10 mov 0x10(%rax),%eax : } 0.00 : 674063: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 13.27 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:224 7.10 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:225 6.48 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:222 5.56 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:224 5.25 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:356 4.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 4.63 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:356 2.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 2.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 2.78 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:356 2.47 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:196 2.47 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:356 2.16 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:196 2.16 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:194 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:194 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:207 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004af350 <_bt_preprocess_array_keys>: : * on scan->keyData, is that callers are permitted to call btrescan without : * supplying a new set of scankey data. : */ : void : _bt_preprocess_array_keys(IndexScanDesc scan) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 2.78 : 4af350: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 23.15 : 4af351: 48 89 e5 mov %rsp,%rbp 0.00 : 4af354: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:193 4.63 : 4af356: 41 56 push %r14 1.23 : 4af358: 41 55 push %r13 0.62 : 4af35a: 41 54 push %r12 0.00 : 4af35c: 53 push %rbx 0.93 : 4af35d: 48 81 ec b8 00 00 00 sub $0xb8,%rsp 0.00 : 4af364: 48 89 bd 38 ff ff ff mov %rdi,-0xc8(%rbp) : BTScanOpaque so = (BTScanOpaque) scan->opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:194 0.93 : 4af36b: 48 8b 47 38 mov 0x38(%rdi),%rax 1.54 : 4af36f: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) : int numberOfKeys = scan->numberOfKeys; 0.31 : 4af376: 8b 57 18 mov 0x18(%rdi),%edx 0.31 : 4af379: 89 95 4c ff ff ff mov %edx,-0xb4(%rbp) : int16 *indoption = scan->indexRelation->rd_indoption; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:196 2.16 : 4af37f: 48 8b 47 08 mov 0x8(%rdi),%rax : int i; : MemoryContext oldContext; : : /* Quick check to see if there are any array keys */ : numArrayKeys = 0; : for (i = 0; i < numberOfKeys; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 1.23 : 4af383: 85 d2 test %edx,%edx : void : _bt_preprocess_array_keys(IndexScanDesc scan) : { : BTScanOpaque so = (BTScanOpaque) scan->opaque; : int numberOfKeys = scan->numberOfKeys; : int16 *indoption = scan->indexRelation->rd_indoption; 0.00 : 4af385: 48 8b 80 e8 00 00 00 mov 0xe8(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:196 2.47 : 4af38c: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : int i; : MemoryContext oldContext; : : /* Quick check to see if there are any array keys */ : numArrayKeys = 0; : for (i = 0; i < numberOfKeys; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 2.78 : 4af393: 0f 8e 07 02 00 00 jle 4af5a0 <_bt_preprocess_array_keys+0x250> 0.00 : 4af399: 48 8b 77 20 mov 0x20(%rdi),%rsi 0.93 : 4af39d: 31 db xor %ebx,%ebx 0.00 : 4af39f: 31 c9 xor %ecx,%ecx 2.16 : 4af3a1: 31 d2 xor %edx,%edx 0.00 : 4af3a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : cur = &scan->keyData[i]; : if (cur->sk_flags & SK_SEARCHARRAY) 0.31 : 4af3a8: 8b 04 16 mov (%rsi,%rdx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:207 0.93 : 4af3ab: a8 20 test $0x20,%al 0.00 : 4af3ad: 74 0b je 4af3ba <_bt_preprocess_array_keys+0x6a> : { : numArrayKeys++; : Assert(!(cur->sk_flags & (SK_ROW_HEADER | SK_SEARCHNULL | SK_SEARCHNOTNULL))); : /* If any arrays are null as a whole, we can quit right now. */ : if (cur->sk_flags & SK_ISNULL) 0.00 : 4af3af: a8 01 test $0x1,%al 0.00 : 4af3b1: 0f 85 d9 03 00 00 jne 4af790 <_bt_preprocess_array_keys+0x440> : for (i = 0; i < numberOfKeys; i++) : { : cur = &scan->keyData[i]; : if (cur->sk_flags & SK_SEARCHARRAY) : { : numArrayKeys++; 0.00 : 4af3b7: 83 c3 01 add $0x1,%ebx : int i; : MemoryContext oldContext; : : /* Quick check to see if there are any array keys */ : numArrayKeys = 0; : for (i = 0; i < numberOfKeys; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:204 1.85 : 4af3ba: 83 c1 01 add $0x1,%ecx 0.93 : 4af3bd: 48 83 c2 48 add $0x48,%rdx 0.00 : 4af3c1: 39 8d 4c ff ff ff cmp %ecx,-0xb4(%rbp) 0.00 : 4af3c7: 7f df jg 4af3a8 <_bt_preprocess_array_keys+0x58> : } : } : } : : /* Quit if nothing to do. */ : if (numArrayKeys == 0) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:222 6.48 : 4af3c9: 85 db test %ebx,%ebx 0.00 : 4af3cb: 0f 84 cf 01 00 00 je 4af5a0 <_bt_preprocess_array_keys+0x250> : : /* : * Make a scan-lifespan context to hold array-associated data, or reset it : * if we already have one from a previous rescan cycle. : */ : if (so->arrayContext == NULL) 0.00 : 4af3d1: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 4af3d8: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.00 : 4af3dc: 48 85 ff test %rdi,%rdi 0.00 : 4af3df: 0f 84 0b 04 00 00 je 4af7f0 <_bt_preprocess_array_keys+0x4a0> : "BTree Array Context", : ALLOCSET_SMALL_MINSIZE, : ALLOCSET_SMALL_INITSIZE, : ALLOCSET_SMALL_MAXSIZE); : else : MemoryContextReset(so->arrayContext); 0.00 : 4af3e5: e8 c6 95 2e 00 callq 7989b0 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 4af3ea: 48 8b 05 6f b4 70 00 mov 0x70b46f(%rip),%rax # bba860 : : CurrentMemoryContext = context; 0.00 : 4af3f1: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 4af3f8: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : : CurrentMemoryContext = context; 0.00 : 4af3ff: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 4af403: 48 89 05 56 b4 70 00 mov %rax,0x70b456(%rip) # bba860 : : oldContext = MemoryContextSwitchTo(so->arrayContext); : : /* Create modifiable copy of scan->keyData in the workspace context */ : so->arrayKeyData = (ScanKey) palloc(scan->numberOfKeys * sizeof(ScanKeyData)); 0.00 : 4af40a: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 4af411: 48 63 78 18 movslq 0x18(%rax),%rdi 0.00 : 4af415: 48 8d 3c ff lea (%rdi,%rdi,8),%rdi 0.00 : 4af419: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 4af41d: e8 2e 99 2e 00 callq 798d50 0.00 : 4af422: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 4af429: 48 89 c7 mov %rax,%rdi 0.00 : 4af42c: 48 89 42 10 mov %rax,0x10(%rdx) : memcpy(so->arrayKeyData, 0.00 : 4af430: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 4af437: 48 63 50 18 movslq 0x18(%rax),%rdx 0.00 : 4af43b: 48 8b 70 20 mov 0x20(%rax),%rsi 0.00 : 4af43f: 48 8d 14 d2 lea (%rdx,%rdx,8),%rdx 0.00 : 4af443: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 4af447: e8 a4 a7 fb ff callq 469bf0 : scan->keyData, : scan->numberOfKeys * sizeof(ScanKeyData)); : : /* Allocate space for per-array data in the workspace context */ : so->arrayKeys = (BTArrayKeyInfo *) palloc0(numArrayKeys * sizeof(BTArrayKeyInfo)); 0.00 : 4af44c: 48 63 fb movslq %ebx,%rdi 0.00 : 4af44f: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 4af453: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 4af457: e8 14 9b 2e 00 callq 798f70 0.00 : 4af45c: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 4af463: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4af467: c7 85 6c ff ff ff 00 movl $0x0,-0x94(%rbp) 0.00 : 4af46e: 00 00 00 0.00 : 4af471: c7 85 7c ff ff ff 00 movl $0x0,-0x84(%rbp) 0.00 : 4af478: 00 00 00 0.00 : 4af47b: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 4af482: 00 00 00 00 0.00 : 4af486: eb 29 jmp 4af4b1 <_bt_preprocess_array_keys+0x161> 0.00 : 4af488: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4af48f: 00 : : /* Now process each array key */ : numArrayKeys = 0; : for (i = 0; i < numberOfKeys; i++) 0.00 : 4af490: 83 85 7c ff ff ff 01 addl $0x1,-0x84(%rbp) 0.00 : 4af497: 48 83 85 60 ff ff ff addq $0x48,-0xa0(%rbp) 0.00 : 4af49e: 48 0.00 : 4af49f: 8b 85 7c ff ff ff mov -0x84(%rbp),%eax 0.00 : 4af4a5: 39 85 4c ff ff ff cmp %eax,-0xb4(%rbp) 0.00 : 4af4ab: 0f 8e 04 03 00 00 jle 4af7b5 <_bt_preprocess_array_keys+0x465> : Datum *elem_values; : bool *elem_nulls; : int num_nonnulls; : int j; : : cur = &so->arrayKeyData[i]; 0.00 : 4af4b1: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 4af4b8: 4c 8b a5 60 ff ff ff mov -0xa0(%rbp),%r12 0.00 : 4af4bf: 4c 03 63 10 add 0x10(%rbx),%r12 : if (!(cur->sk_flags & SK_SEARCHARRAY)) 0.00 : 4af4c3: 41 f6 04 24 20 testb $0x20,(%r12) 0.00 : 4af4c8: 74 c6 je 4af490 <_bt_preprocess_array_keys+0x140> : /* : * First, deconstruct the array into elements. Anything allocated : * here (including a possibly detoasted array value) is in the : * workspace context. : */ : arrayval = DatumGetArrayTypeP(cur->sk_argument); 0.00 : 4af4ca: 49 8b 7c 24 40 mov 0x40(%r12),%rdi 0.00 : 4af4cf: e8 3c f8 2c 00 callq 77ed10 : /* We could cache this data, but not clear it's worth it */ : get_typlenbyvalalign(ARR_ELEMTYPE(arrayval), 0.00 : 4af4d4: 8b 78 0c mov 0xc(%rax),%edi 0.00 : 4af4d7: 48 8d 4d ce lea -0x32(%rbp),%rcx 0.00 : 4af4db: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 4af4df: 48 8d 75 cc lea -0x34(%rbp),%rsi : /* : * First, deconstruct the array into elements. Anything allocated : * here (including a possibly detoasted array value) is in the : * workspace context. : */ : arrayval = DatumGetArrayTypeP(cur->sk_argument); 0.00 : 4af4e3: 48 89 c3 mov %rax,%rbx : /* We could cache this data, but not clear it's worth it */ : get_typlenbyvalalign(ARR_ELEMTYPE(arrayval), 0.00 : 4af4e6: e8 85 39 2c 00 callq 772e70 : &elmlen, &elmbyval, &elmalign); : deconstruct_array(arrayval, 0.00 : 4af4eb: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : 4af4ef: 44 0f be 45 ce movsbl -0x32(%rbp),%r8d 0.00 : 4af4f4: 0f be 4d cf movsbl -0x31(%rbp),%ecx 0.00 : 4af4f8: 0f bf 55 cc movswl -0x34(%rbp),%edx 0.00 : 4af4fc: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 4af4ff: 4c 8d 4d c0 lea -0x40(%rbp),%r9 0.00 : 4af503: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 4af508: 48 8d 45 b8 lea -0x48(%rbp),%rax 0.00 : 4af50c: 48 89 df mov %rbx,%rdi 0.00 : 4af50f: 48 89 04 24 mov %rax,(%rsp) 0.00 : 4af513: e8 48 97 20 00 callq 6b8c60 : /* : * Compress out any null elements. We can ignore them since we assume : * all btree operators are strict. : */ : num_nonnulls = 0; : for (j = 0; j < num_elems; j++) 0.00 : 4af518: 8b 7d c8 mov -0x38(%rbp),%edi 0.00 : 4af51b: 85 ff test %edi,%edi 0.00 : 4af51d: 0f 8e 88 02 00 00 jle 4af7ab <_bt_preprocess_array_keys+0x45b> 0.00 : 4af523: 31 db xor %ebx,%ebx 0.00 : 4af525: 31 f6 xor %esi,%esi 0.00 : 4af527: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4af52e: 00 00 : { : if (!elem_nulls[j]) 0.00 : 4af530: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4af534: 48 63 d6 movslq %esi,%rdx 0.00 : 4af537: 80 3c 10 00 cmpb $0x0,(%rax,%rdx,1) 0.00 : 4af53b: 75 12 jne 4af54f <_bt_preprocess_array_keys+0x1ff> : elem_values[num_nonnulls++] = elem_values[j]; 0.00 : 4af53d: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 4af541: 48 63 cb movslq %ebx,%rcx 0.00 : 4af544: 83 c3 01 add $0x1,%ebx 0.00 : 4af547: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 4af54b: 48 89 14 c8 mov %rdx,(%rax,%rcx,8) : /* : * Compress out any null elements. We can ignore them since we assume : * all btree operators are strict. : */ : num_nonnulls = 0; : for (j = 0; j < num_elems; j++) 0.00 : 4af54f: 83 c6 01 add $0x1,%esi 0.00 : 4af552: 39 75 c8 cmp %esi,-0x38(%rbp) 0.00 : 4af555: 7f d9 jg 4af530 <_bt_preprocess_array_keys+0x1e0> : } : : /* We could pfree(elem_nulls) now, but not worth the cycles */ : : /* If there's no non-nulls, the scan qual is unsatisfiable */ : if (num_nonnulls == 0) 0.00 : 4af557: 85 db test %ebx,%ebx 0.00 : 4af559: 0f 84 4c 02 00 00 je 4af7ab <_bt_preprocess_array_keys+0x45b> : /* : * If the comparison operator is not equality, then the array qual : * degenerates to a simple comparison against the smallest or largest : * non-null array element, as appropriate. : */ : switch (cur->sk_strategy) 0.00 : 4af55f: 66 41 83 7c 24 06 05 cmpw $0x5,0x6(%r12) 0.00 : 4af566: 76 68 jbe 4af5d0 <_bt_preprocess_array_keys+0x280> : _bt_find_extreme_element(scan, cur, : BTLessStrategyNumber, : elem_values, num_nonnulls); : continue; : default: : elog(ERROR, "unrecognized StrategyNumber: %d", 0.00 : 4af568: ba a0 4b 7b 00 mov $0x7b4ba0,%edx 0.00 : 4af56d: be 4b 01 00 00 mov $0x14b,%esi 0.00 : 4af572: bf 17 49 7b 00 mov $0x7b4917,%edi 0.00 : 4af577: e8 a4 be 2c 00 callq 77b420 0.00 : 4af57c: 41 0f b7 54 24 06 movzwl 0x6(%r12),%edx 0.00 : 4af582: be 78 49 7b 00 mov $0x7b4978,%esi 0.00 : 4af587: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4af58c: 31 c0 xor %eax,%eax 0.00 : 4af58e: e8 9d bc 2c 00 callq 77b230 0.00 : 4af593: e8 38 9f fb ff callq 4694d0 0.00 : 4af598: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4af59f: 00 : } : : /* Quit if nothing to do. */ : if (numArrayKeys == 0) : { : so->numArrayKeys = 0; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:224 5.56 : 4af5a0: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 13.27 : 4af5a7: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : so->arrayKeyData = NULL; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:225 7.10 : 4af5ae: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 4af5b5: 00 : } : : so->numArrayKeys = numArrayKeys; : : MemoryContextSwitchTo(oldContext); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:356 4.63 : 4af5b6: 48 81 c4 b8 00 00 00 add $0xb8,%rsp 0.00 : 4af5bd: 5b pop %rbx 0.00 : 4af5be: 41 5c pop %r12 2.78 : 4af5c0: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:356 5.25 : 4af5c2: 41 5e pop %r14 0.00 : 4af5c4: 41 5f pop %r15 0.31 : 4af5c6: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:356 2.47 : 4af5c7: c3 retq 0.00 : 4af5c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4af5cf: 00 : /* : * If the comparison operator is not equality, then the array qual : * degenerates to a simple comparison against the smallest or largest : * non-null array element, as appropriate. : */ : switch (cur->sk_strategy) 0.00 : 4af5d0: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 4af5d6: ff 24 c5 d0 4a 7b 00 jmpq *0x7b4ad0(,%rax,8) : case BTEqualStrategyNumber: : /* proceed with rest of loop */ : break; : case BTGreaterEqualStrategyNumber: : case BTGreaterStrategyNumber: : cur->sk_argument = 0.00 : 4af5dd: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 4af5e1: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 4af5e8: 41 89 d8 mov %ebx,%r8d 0.00 : 4af5eb: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4af5f0: 4c 89 e6 mov %r12,%rsi 0.00 : 4af5f3: e8 e8 fb ff ff callq 4af1e0 <_bt_find_extreme_element> 0.00 : 4af5f8: 49 89 44 24 40 mov %rax,0x40(%r12) : _bt_find_extreme_element(scan, cur, : BTLessStrategyNumber, : elem_values, num_nonnulls); : continue; 0.00 : 4af5fd: e9 8e fe ff ff jmpq 4af490 <_bt_preprocess_array_keys+0x140> : /* : * Sort the non-null elements and eliminate any duplicates. We must : * sort in the same ordering used by the index column, so that the : * successive primitive indexscans produce data in index order. : */ : num_elems = _bt_sort_array_elements(scan, cur, 0.00 : 4af602: 48 8b 55 c0 mov -0x40(%rbp),%rdx : RegProcedure cmp_proc; : BTSortArrayContext cxt; : int last_non_dup; : int i; : : if (nelems <= 1) 0.00 : 4af606: 83 fb 01 cmp $0x1,%ebx : /* : * Sort the non-null elements and eliminate any duplicates. We must : * sort in the same ordering used by the index column, so that the : * successive primitive indexscans produce data in index order. : */ : num_elems = _bt_sort_array_elements(scan, cur, 0.00 : 4af609: 48 89 95 70 ff ff ff mov %rdx,-0x90(%rbp) 0.00 : 4af610: 49 0f bf 44 24 04 movswq 0x4(%r12),%rax : static int : _bt_sort_array_elements(IndexScanDesc scan, ScanKey skey, : bool reverse, : Datum *elems, int nelems) : { : Relation rel = scan->indexRelation; 0.00 : 4af616: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx : /* : * Sort the non-null elements and eliminate any duplicates. We must : * sort in the same ordering used by the index column, so that the : * successive primitive indexscans produce data in index order. : */ : num_elems = _bt_sort_array_elements(scan, cur, 0.00 : 4af61d: 48 8d 78 ff lea -0x1(%rax),%rdi 0.00 : 4af621: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax : static int : _bt_sort_array_elements(IndexScanDesc scan, ScanKey skey, : bool reverse, : Datum *elems, int nelems) : { : Relation rel = scan->indexRelation; 0.00 : 4af628: 4c 8b 72 08 mov 0x8(%rdx),%r14 : /* : * Sort the non-null elements and eliminate any duplicates. We must : * sort in the same ordering used by the index column, so that the : * successive primitive indexscans produce data in index order. : */ : num_elems = _bt_sort_array_elements(scan, cur, 0.00 : 4af62c: 44 0f b7 3c 78 movzwl (%rax,%rdi,2),%r15d : RegProcedure cmp_proc; : BTSortArrayContext cxt; : int last_non_dup; : int i; : : if (nelems <= 1) 0.00 : 4af631: 0f 8e d1 00 00 00 jle 4af708 <_bt_preprocess_array_keys+0x3b8> : /* : * Determine the nominal datatype of the array elements. We have to : * support the convention that sk_subtype == InvalidOid means the opclass : * input type; this is a hack to simplify life for ScanKeyInit(). : */ : elemtype = skey->sk_subtype; 0.00 : 4af637: 45 8b 6c 24 08 mov 0x8(%r12),%r13d : if (elemtype == InvalidOid) 0.00 : 4af63c: 45 85 ed test %r13d,%r13d 0.00 : 4af63f: 0f 84 93 01 00 00 je 4af7d8 <_bt_preprocess_array_keys+0x488> 0.00 : 4af645: 4c 8d 0c bd 00 00 00 lea 0x0(,%rdi,4),%r9 0.00 : 4af64c: 00 : * Note: it's possible that this would fail, if the opfamily is : * incomplete, but it seems quite unlikely that an opfamily would omit : * non-cross-type support functions for any datatype that it supports at : * all. : */ : cmp_proc = get_opfamily_proc(rel->rd_opfamily[skey->sk_attno - 1], 0.00 : 4af64d: 49 8b 86 c8 00 00 00 mov 0xc8(%r14),%rax 0.00 : 4af654: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4af659: 44 89 ea mov %r13d,%edx 0.00 : 4af65c: 44 89 ee mov %r13d,%esi 0.00 : 4af65f: 42 8b 3c 08 mov (%rax,%r9,1),%edi 0.00 : 4af663: e8 48 32 2c 00 callq 7728b0 : elemtype, : elemtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) 0.00 : 4af668: 85 c0 test %eax,%eax : * Note: it's possible that this would fail, if the opfamily is : * incomplete, but it seems quite unlikely that an opfamily would omit : * non-cross-type support functions for any datatype that it supports at : * all. : */ : cmp_proc = get_opfamily_proc(rel->rd_opfamily[skey->sk_attno - 1], 0.00 : 4af66a: 89 c7 mov %eax,%edi : elemtype, : elemtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) 0.00 : 4af66c: 0f 84 ac 01 00 00 je 4af81e <_bt_preprocess_array_keys+0x4ce> : elog(ERROR, "missing support function %d(%u,%u) in opfamily %u", : BTORDER_PROC, elemtype, elemtype, : rel->rd_opfamily[skey->sk_attno - 1]); : : /* Sort the array elements */ : fmgr_info(cmp_proc, &cxt.flinfo); 0.00 : 4af672: 48 8d 75 80 lea -0x80(%rbp),%rsi : cxt.collation = skey->sk_collation; : cxt.reverse = reverse; : qsort_arg((void *) elems, nelems, sizeof(Datum), 0.00 : 4af676: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4af67c: 45 31 f6 xor %r14d,%r14d : elog(ERROR, "missing support function %d(%u,%u) in opfamily %u", : BTORDER_PROC, elemtype, elemtype, : rel->rd_opfamily[skey->sk_attno - 1]); : : /* Sort the array elements */ : fmgr_info(cmp_proc, &cxt.flinfo); 0.00 : 4af67f: e8 dc 09 2d 00 callq 780060 : cxt.collation = skey->sk_collation; 0.00 : 4af684: 41 8b 44 24 0c mov 0xc(%r12),%eax : cxt.reverse = reverse; : qsort_arg((void *) elems, nelems, sizeof(Datum), 0.00 : 4af689: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 4af690: 4c 8d 45 80 lea -0x80(%rbp),%r8 0.00 : 4af694: 48 63 f3 movslq %ebx,%rsi 0.00 : 4af697: b9 80 e9 4a 00 mov $0x4ae980,%ecx 0.00 : 4af69c: ba 08 00 00 00 mov $0x8,%edx : BTORDER_PROC, elemtype, elemtype, : rel->rd_opfamily[skey->sk_attno - 1]); : : /* Sort the array elements */ : fmgr_info(cmp_proc, &cxt.flinfo); : cxt.collation = skey->sk_collation; 0.00 : 4af6a1: 89 45 b0 mov %eax,-0x50(%rbp) : cxt.reverse = reverse; 0.00 : 4af6a4: 44 89 f8 mov %r15d,%eax : qsort_arg((void *) elems, nelems, sizeof(Datum), 0.00 : 4af6a7: 45 31 ff xor %r15d,%r15d : rel->rd_opfamily[skey->sk_attno - 1]); : : /* Sort the array elements */ : fmgr_info(cmp_proc, &cxt.flinfo); : cxt.collation = skey->sk_collation; : cxt.reverse = reverse; 0.00 : 4af6aa: 83 e0 01 and $0x1,%eax 0.00 : 4af6ad: 88 45 b4 mov %al,-0x4c(%rbp) : qsort_arg((void *) elems, nelems, sizeof(Datum), 0.00 : 4af6b0: e8 7b db 2f 00 callq 7ad230 0.00 : 4af6b5: 4c 8b a5 70 ff ff ff mov -0x90(%rbp),%r12 0.00 : 4af6bc: 0f 1f 40 00 nopl 0x0(%rax) : last_non_dup = 0; : for (i = 1; i < nelems; i++) : { : int32 compare; : : compare = DatumGetInt32(FunctionCall2Coll(&cxt.flinfo, 0.00 : 4af6c0: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 4af6c7: 49 8b 4c 24 08 mov 0x8(%r12),%rcx 0.00 : 4af6cc: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 4af6d0: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 4af6d3: 4a 8b 14 f0 mov (%rax,%r14,8),%rdx 0.00 : 4af6d7: e8 54 e9 2c 00 callq 77e030 : cxt.collation, : elems[last_non_dup], : elems[i])); : if (compare != 0) 0.00 : 4af6dc: 85 c0 test %eax,%eax 0.00 : 4af6de: 74 17 je 4af6f7 <_bt_preprocess_array_keys+0x3a7> : elems[++last_non_dup] = elems[i]; 0.00 : 4af6e0: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 4af6e5: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 4af6ec: 41 83 c7 01 add $0x1,%r15d 0.00 : 4af6f0: 4d 63 f7 movslq %r15d,%r14 0.00 : 4af6f3: 4a 89 04 f2 mov %rax,(%rdx,%r14,8) : qsort_arg((void *) elems, nelems, sizeof(Datum), : _bt_compare_array_elements, (void *) &cxt); : : /* Now scan the sorted elements and remove duplicates */ : last_non_dup = 0; : for (i = 1; i < nelems; i++) 0.00 : 4af6f7: 41 83 c5 01 add $0x1,%r13d 0.00 : 4af6fb: 49 83 c4 08 add $0x8,%r12 0.00 : 4af6ff: 44 39 eb cmp %r13d,%ebx 0.00 : 4af702: 7f bc jg 4af6c0 <_bt_preprocess_array_keys+0x370> : elems[i])); : if (compare != 0) : elems[++last_non_dup] = elems[i]; : } : : return last_non_dup + 1; 0.00 : 4af704: 41 8d 5f 01 lea 0x1(%r15),%ebx : /* : * Sort the non-null elements and eliminate any duplicates. We must : * sort in the same ordering used by the index column, so that the : * successive primitive indexscans produce data in index order. : */ : num_elems = _bt_sort_array_elements(scan, cur, 0.00 : 4af708: 89 5d c8 mov %ebx,-0x38(%rbp) : elem_values, num_nonnulls); : : /* : * And set up the BTArrayKeyInfo data. : */ : so->arrayKeys[numArrayKeys].scan_key = i; 0.00 : 4af70b: 48 63 85 6c ff ff ff movslq -0x94(%rbp),%rax 0.00 : 4af712: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 4af719: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 4af71d: 8b 9d 7c ff ff ff mov -0x84(%rbp),%ebx 0.00 : 4af723: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 4af727: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 4af72e: 00 0.00 : 4af72f: 89 1c c2 mov %ebx,(%rdx,%rax,8) : so->arrayKeys[numArrayKeys].num_elems = num_elems; 0.00 : 4af732: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 4af739: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 4af73d: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 4af740: 89 44 0a 0c mov %eax,0xc(%rdx,%rcx,1) : so->arrayKeys[numArrayKeys].elem_values = elem_values; 0.00 : 4af744: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 4af74b: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 4af74f: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 4af753: 48 89 44 0a 10 mov %rax,0x10(%rdx,%rcx,1) : numArrayKeys++; 0.00 : 4af758: 83 85 6c ff ff ff 01 addl $0x1,-0x94(%rbp) 0.00 : 4af75f: e9 2c fd ff ff jmpq 4af490 <_bt_preprocess_array_keys+0x140> : */ : switch (cur->sk_strategy) : { : case BTLessStrategyNumber: : case BTLessEqualStrategyNumber: : cur->sk_argument = 0.00 : 4af764: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 4af768: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 4af76f: 41 89 d8 mov %ebx,%r8d 0.00 : 4af772: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4af777: 4c 89 e6 mov %r12,%rsi 0.00 : 4af77a: e8 61 fa ff ff callq 4af1e0 <_bt_find_extreme_element> 0.00 : 4af77f: 49 89 44 24 40 mov %rax,0x40(%r12) : _bt_find_extreme_element(scan, cur, : BTGreaterStrategyNumber, : elem_values, num_nonnulls); : continue; 0.00 : 4af784: e9 07 fd ff ff jmpq 4af490 <_bt_preprocess_array_keys+0x140> 0.00 : 4af789: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : numArrayKeys++; : Assert(!(cur->sk_flags & (SK_ROW_HEADER | SK_SEARCHNULL | SK_SEARCHNOTNULL))); : /* If any arrays are null as a whole, we can quit right now. */ : if (cur->sk_flags & SK_ISNULL) : { : so->numArrayKeys = -1; 0.00 : 4af790: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 4af797: c7 43 18 ff ff ff ff movl $0xffffffff,0x18(%rbx) : so->arrayKeyData = NULL; 0.00 : 4af79e: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 4af7a5: 00 : } : : so->numArrayKeys = numArrayKeys; : : MemoryContextSwitchTo(oldContext); : } 0.00 : 4af7a6: e9 0b fe ff ff jmpq 4af5b6 <_bt_preprocess_array_keys+0x266> : /* Allocate space for per-array data in the workspace context */ : so->arrayKeys = (BTArrayKeyInfo *) palloc0(numArrayKeys * sizeof(BTArrayKeyInfo)); : : /* Now process each array key */ : numArrayKeys = 0; : for (i = 0; i < numberOfKeys; i++) 0.00 : 4af7ab: c7 85 6c ff ff ff ff movl $0xffffffff,-0x94(%rbp) 0.00 : 4af7b2: ff ff ff : so->arrayKeys[numArrayKeys].num_elems = num_elems; : so->arrayKeys[numArrayKeys].elem_values = elem_values; : numArrayKeys++; : } : : so->numArrayKeys = numArrayKeys; 0.00 : 4af7b5: 8b 9d 6c ff ff ff mov -0x94(%rbp),%ebx 0.00 : 4af7bb: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 4af7c2: 89 5a 18 mov %ebx,0x18(%rdx) 0.00 : 4af7c5: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 4af7cc: 48 89 05 8d b0 70 00 mov %rax,0x70b08d(%rip) # bba860 0.00 : 4af7d3: e9 de fd ff ff jmpq 4af5b6 <_bt_preprocess_array_keys+0x266> : * support the convention that sk_subtype == InvalidOid means the opclass : * input type; this is a hack to simplify life for ScanKeyInit(). : */ : elemtype = skey->sk_subtype; : if (elemtype == InvalidOid) : elemtype = rel->rd_opcintype[skey->sk_attno - 1]; 0.00 : 4af7d8: 49 8b 86 d0 00 00 00 mov 0xd0(%r14),%rax 0.00 : 4af7df: 4c 8d 0c bd 00 00 00 lea 0x0(,%rdi,4),%r9 0.00 : 4af7e6: 00 0.00 : 4af7e7: 44 8b 2c b8 mov (%rax,%rdi,4),%r13d 0.00 : 4af7eb: e9 5d fe ff ff jmpq 4af64d <_bt_preprocess_array_keys+0x2fd> : /* : * Make a scan-lifespan context to hold array-associated data, or reset it : * if we already have one from a previous rescan cycle. : */ : if (so->arrayContext == NULL) : so->arrayContext = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 4af7f0: 48 8b 3d 69 b0 70 00 mov 0x70b069(%rip),%rdi # bba860 0.00 : 4af7f7: 31 d2 xor %edx,%edx 0.00 : 4af7f9: 41 b8 00 20 00 00 mov $0x2000,%r8d 0.00 : 4af7ff: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 4af804: be 39 49 7b 00 mov $0x7b4939,%esi 0.00 : 4af809: e8 82 87 2e 00 callq 797f90 0.00 : 4af80e: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 4af815: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 4af819: e9 cc fb ff ff jmpq 4af3ea <_bt_preprocess_array_keys+0x9a> : cmp_proc = get_opfamily_proc(rel->rd_opfamily[skey->sk_attno - 1], : elemtype, : elemtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) : elog(ERROR, "missing support function %d(%u,%u) in opfamily %u", 0.00 : 4af81e: ba e0 4b 7b 00 mov $0x7b4be0,%edx 0.00 : 4af823: be d7 01 00 00 mov $0x1d7,%esi 0.00 : 4af828: bf 17 49 7b 00 mov $0x7b4917,%edi 0.00 : 4af82d: e8 ee bb 2c 00 callq 77b420 0.00 : 4af832: 49 0f bf 54 24 04 movswq 0x4(%r12),%rdx 0.00 : 4af838: 49 8b 86 c8 00 00 00 mov 0xc8(%r14),%rax 0.00 : 4af83f: 45 89 e8 mov %r13d,%r8d 0.00 : 4af842: 44 89 e9 mov %r13d,%ecx 0.00 : 4af845: be 38 4a 7b 00 mov $0x7b4a38,%esi 0.00 : 4af84a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4af84f: 44 8b 4c 90 fc mov -0x4(%rax,%rdx,4),%r9d 0.00 : 4af854: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4af859: 31 c0 xor %eax,%eax 0.00 : 4af85b: e8 d0 b9 2c 00 callq 77b230 0.00 : 4af860: e8 6b 9c fb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 00000000004695c0 : ??:0 100.00 : 4695c0: ff 25 82 db 6f 00 jmpq *0x6fdb82(%rip) # b67148 <_GLOBAL_OFFSET_TABLE_+0x148> 0.00 : 4695c6: 68 26 00 00 00 pushq $0x26 0.00 : 4695cb: e9 80 fd ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 9.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 6.60 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 6.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 5.54 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 4.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1082 4.49 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 4.22 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1078 3.96 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 2.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1048 2.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 2.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1055 2.37 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1054 2.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1054 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1082 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1082 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 1.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 1.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1079 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1082 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1082 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 0.79 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1048 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004acb70 <_bt_next>: : * On failure exit (no more tuples), we release pin and set : * so->currPos.buf to InvalidBuffer. : */ : bool : _bt_next(IndexScanDesc scan, ScanDirection dir) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 4.49 : 4acb70: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 6.07 : 4acb71: 48 89 e5 mov %rsp,%rbp 0.00 : 4acb74: 4c 89 65 f0 mov %r12,-0x10(%rbp) 9.23 : 4acb78: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.26 : 4acb7c: 49 89 fc mov %rdi,%r12 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1040 1.06 : 4acb7f: 48 89 5d e8 mov %rbx,-0x18(%rbp) 1.32 : 4acb83: 48 83 ec 20 sub $0x20,%rsp : : /* : * Advance to next tuple on current page; or if there's no more, try to : * step to the next page with data. : */ : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1048 2.64 : 4acb87: 83 fe 01 cmp $0x1,%esi : * On failure exit (no more tuples), we release pin and set : * so->currPos.buf to InvalidBuffer. : */ : bool : _bt_next(IndexScanDesc scan, ScanDirection dir) : { 0.00 : 4acb8a: 41 89 f5 mov %esi,%r13d : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4acb8d: 48 8b 5f 38 mov 0x38(%rdi),%rbx : : /* : * Advance to next tuple on current page; or if there's no more, try to : * step to the next page with data. : */ : if (ScanDirectionIsForward(dir)) 0.79 : 4acb91: 74 7d je 4acc10 <_bt_next+0xa0> : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); : } : } : else : { : if (--so->currPos.itemIndex < so->currPos.firstItem) 0.00 : 4acb93: 8b 43 6c mov 0x6c(%rbx),%eax 0.00 : 4acb96: 83 e8 01 sub $0x1,%eax 0.00 : 4acb99: 3b 43 64 cmp 0x64(%rbx),%eax 0.00 : 4acb9c: 89 43 6c mov %eax,0x6c(%rbx) 0.00 : 4acb9f: 7c 4f jl 4acbf0 <_bt_next+0x80> : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); : } : } : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; 0.26 : 4acba1: 48 98 cltq : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) 0.26 : 4acba3: 41 80 7c 24 30 00 cmpb $0x0,0x30(%r12) : } : } : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 1.32 : 4acba9: 48 8d 04 80 lea (%rax,%rax,4),%rax 2.90 : 4acbad: 48 8d 54 43 60 lea 0x60(%rbx,%rax,2),%rdx 1.58 : 4acbb2: 8b 42 10 mov 0x10(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 20.58 : 4acbb5: 41 89 44 24 54 mov %eax,0x54(%r12) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 2.64 : 4acbba: 0f b7 42 14 movzwl 0x14(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1077 6.60 : 4acbbe: 66 41 89 44 24 58 mov %ax,0x58(%r12) : if (scan->xs_want_itup) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1078 4.22 : 4acbc4: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4acbc9: 74 12 je 4acbdd <_bt_next+0x6d> : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4acbcb: 0f b7 42 18 movzwl 0x18(%rdx),%eax 0.00 : 4acbcf: 48 03 43 40 add 0x40(%rbx),%rax 0.00 : 4acbd3: 49 89 44 24 40 mov %rax,0x40(%r12) 0.00 : 4acbd8: b8 01 00 00 00 mov $0x1,%eax : : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1082 1.06 : 4acbdd: 48 8b 5d e8 mov -0x18(%rbp),%rbx 1.85 : 4acbe1: 4c 8b 65 f0 mov -0x10(%rbp),%r12 1.85 : 4acbe5: 4c 8b 6d f8 mov -0x8(%rbp),%r13 1.06 : 4acbe9: c9 leaveq 4.75 : 4acbea: c3 retq 0.00 : 4acbeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (--so->currPos.itemIndex < so->currPos.firstItem) : { : /* We must acquire lock before applying _bt_steppage */ : Assert(BufferIsValid(so->currPos.buf)); : LockBuffer(so->currPos.buf, BT_READ); 0.00 : 4acbf0: 8b 7b 54 mov 0x54(%rbx),%edi 0.00 : 4acbf3: be 01 00 00 00 mov $0x1,%esi 0.00 : 4acbf8: e8 13 7b 1c 00 callq 674710 : if (!_bt_steppage(scan, dir)) 0.00 : 4acbfd: 44 89 ee mov %r13d,%esi 0.00 : 4acc00: 4c 89 e7 mov %r12,%rdi 0.00 : 4acc03: e8 78 fa ff ff callq 4ac680 <_bt_steppage> 0.00 : 4acc08: 84 c0 test %al,%al 0.00 : 4acc0a: 75 30 jne 4acc3c <_bt_next+0xcc> : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1079 1.58 : 4acc0c: 31 c0 xor %eax,%eax 0.00 : 4acc0e: eb cd jmp 4acbdd <_bt_next+0x6d> : * Advance to next tuple on current page; or if there's no more, try to : * step to the next page with data. : */ : if (ScanDirectionIsForward(dir)) : { : if (++so->currPos.itemIndex > so->currPos.lastItem) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 3.96 : 4acc10: 8b 43 6c mov 0x6c(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 5.54 : 4acc13: 83 c0 01 add $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1050 1.06 : 4acc16: 3b 43 68 cmp 0x68(%rbx),%eax 1.85 : 4acc19: 89 43 6c mov %eax,0x6c(%rbx) 1.85 : 4acc1c: 7e 83 jle 4acba1 <_bt_next+0x31> : { : /* We must acquire lock before applying _bt_steppage */ : Assert(BufferIsValid(so->currPos.buf)); : LockBuffer(so->currPos.buf, BT_READ); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1054 2.11 : 4acc1e: 8b 7b 54 mov 0x54(%rbx),%edi 2.37 : 4acc21: be 01 00 00 00 mov $0x1,%esi 0.26 : 4acc26: e8 e5 7a 1c 00 callq 674710 : if (!_bt_steppage(scan, dir)) 0.00 : 4acc2b: be 01 00 00 00 mov $0x1,%esi 0.00 : 4acc30: 4c 89 e7 mov %r12,%rdi 0.00 : 4acc33: e8 48 fa ff ff callq 4ac680 <_bt_steppage> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1055 2.64 : 4acc38: 84 c0 test %al,%al 0.00 : 4acc3a: 74 d0 je 4acc0c <_bt_next+0x9c> : Assert(BufferIsValid(so->currPos.buf)); : LockBuffer(so->currPos.buf, BT_READ); : if (!_bt_steppage(scan, dir)) : return false; : /* Drop the lock, but not pin, on the new page */ : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); 0.00 : 4acc3c: 8b 7b 54 mov 0x54(%rbx),%edi 0.00 : 4acc3f: 31 f6 xor %esi,%esi 0.00 : 4acc41: e8 ca 7a 1c 00 callq 674710 0.00 : 4acc46: 8b 43 6c mov 0x6c(%rbx),%eax 0.00 : 4acc49: e9 53 ff ff ff jmpq 4acba1 <_bt_next+0x31> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 6.95 /home/Computational/mark/src/dbt3/src/dbgen/text.c:135 6.56 /home/Computational/mark/src/dbt3/src/dbgen/text.c:146 6.18 /home/Computational/mark/src/dbt3/src/dbgen/text.c:322 5.41 /home/Computational/mark/src/dbt3/src/dbgen/text.c:265 4.25 /home/Computational/mark/src/dbt3/src/dbgen/text.c:241 3.47 /home/Computational/mark/src/dbt3/src/dbgen/text.c:256 3.09 /home/Computational/mark/src/dbt3/src/dbgen/text.c:136 2.70 /home/Computational/mark/src/dbt3/src/dbgen/text.c:254 2.32 /home/Computational/mark/src/dbt3/src/dbgen/text.c:237 2.32 /home/Computational/mark/src/dbt3/src/dbgen/text.c:243 2.32 /home/Computational/mark/src/dbt3/src/dbgen/text.c:237 2.32 /home/Computational/mark/src/dbt3/src/dbgen/text.c:117 2.32 /home/Computational/mark/src/dbt3/src/dbgen/text.c:137 2.32 /home/Computational/mark/src/dbt3/src/dbgen/text.c:144 2.32 /home/Computational/mark/src/dbt3/src/dbgen/text.c:261 1.93 /home/Computational/mark/src/dbt3/src/dbgen/text.c:237 1.93 /home/Computational/mark/src/dbt3/src/dbgen/text.c:119 1.93 /home/Computational/mark/src/dbt3/src/dbgen/text.c:261 1.93 /home/Computational/mark/src/dbt3/src/dbgen/text.c:320 1.54 /home/Computational/mark/src/dbt3/src/dbgen/text.c:265 1.54 /home/Computational/mark/src/dbt3/src/dbgen/text.c:266 1.54 /home/Computational/mark/src/dbt3/src/dbgen/text.c:245 1.54 /home/Computational/mark/src/dbt3/src/dbgen/text.c:134 1.54 /home/Computational/mark/src/dbt3/src/dbgen/text.c:135 1.54 /home/Computational/mark/src/dbt3/src/dbgen/text.c:254 1.54 /home/Computational/mark/src/dbt3/src/dbgen/text.c:255 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:307 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:245 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:251 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:268 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:245 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:135 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:119 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:262 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:256 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:276 1.16 /home/Computational/mark/src/dbt3/src/dbgen/text.c:322 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:237 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:251 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:117 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:119 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:261 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:262 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:316 0.77 /home/Computational/mark/src/dbt3/src/dbgen/text.c:321 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004068c0 : : * produce ELIZA-like text of random, bounded length, truncating the last : * generated sentence as required : */ : void : dbg_text(char *tgt, int min, int max, int sd) : { 0.00 : 4068c0: 41 57 push %r15 0.00 : 4068c2: 41 56 push %r14 0.00 : 4068c4: 41 55 push %r13 0.00 : 4068c6: 41 54 push %r12 0.00 : 4068c8: 55 push %rbp 0.00 : 4068c9: 53 push %rbx 0.00 : 4068ca: 48 81 ec 78 01 00 00 sub $0x178,%rsp : *cp; : static char szTextPool[TEXT_POOL_SIZE + 1]; : static int bInit = 0; : int nLifeNoise = 0; : : if (!bInit) 0.00 : 4068d1: 8b 05 09 4c 20 00 mov 0x204c09(%rip),%eax # 60b4e0 : * produce ELIZA-like text of random, bounded length, truncating the last : * generated sentence as required : */ : void : dbg_text(char *tgt, int min, int max, int sd) : { 0.00 : 4068d7: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : 4068dc: 89 74 24 0c mov %esi,0xc(%rsp) 0.00 : 4068e0: 89 54 24 08 mov %edx,0x8(%rsp) 0.00 : 4068e4: 89 4c 24 04 mov %ecx,0x4(%rsp) : *cp; : static char szTextPool[TEXT_POOL_SIZE + 1]; : static int bInit = 0; : int nLifeNoise = 0; : : if (!bInit) 0.00 : 4068e8: 85 c0 test %eax,%eax : * generated sentence as required : */ : void : dbg_text(char *tgt, int min, int max, int sd) : { : DSS_HUGE hgLength = 0, 0.00 : 4068ea: 48 c7 84 24 68 01 00 movq $0x0,0x168(%rsp) 0.00 : 4068f1: 00 00 00 00 00 : *cp; : static char szTextPool[TEXT_POOL_SIZE + 1]; : static int bInit = 0; : int nLifeNoise = 0; : : if (!bInit) 0.00 : 4068f6: 0f 85 22 03 00 00 jne 406c1e : { : cp = &szTextPool[0]; : if (verbose > 0) 0.00 : 4068fc: 48 83 3d c4 4e e0 12 cmpq $0x0,0x12e04ec4(%rip) # 1320b7c8 0.00 : 406903: 00 0.00 : 406904: 7e 1b jle 406921 : fprintf(stderr, "\nPreloading text ... "); 0.00 : 406906: 48 8b 0d 1b 42 20 00 mov 0x20421b(%rip),%rcx # 60ab28 0.00 : 40690d: ba 15 00 00 00 mov $0x15,%edx 0.00 : 406912: be 01 00 00 00 mov $0x1,%esi 0.00 : 406917: bf 1b 84 40 00 mov $0x40841b,%edi 0.00 : 40691c: e8 1f a6 ff ff callq 400f40 0.00 : 406921: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 406928: 00 00 0.00 : 40692a: 48 c7 44 24 28 00 b5 movq $0x60b500,0x28(%rsp) 0.00 : 406931: 60 00 0.00 : 406933: c7 44 24 20 00 00 00 movl $0x0,0x20(%rsp) 0.00 : 40693a: 00 0.00 : 40693b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : while (wordlen < TEXT_POOL_SIZE) : { : if ((verbose > 0) && (wordlen > nLifeNoise)) /home/Computational/mark/src/dbt3/src/dbgen/text.c:307 1.16 : 406940: 48 83 3d 80 4e e0 12 cmpq $0x0,0x12e04e80(%rip) # 1320b7c8 0.00 : 406947: 00 0.39 : 406948: 7e 10 jle 40695a 0.00 : 40694a: 48 63 44 24 20 movslq 0x20(%rsp),%rax 0.00 : 40694f: 48 3b 44 24 18 cmp 0x18(%rsp),%rax 0.00 : 406954: 0f 8c 45 03 00 00 jl 406c9f : int i, : res = 0, : len = 0; : : : pick_str(&grammar, sd, syntax); 0.00 : 40695a: 48 8d 94 24 50 01 00 lea 0x150(%rsp),%rdx 0.00 : 406961: 00 0.00 : 406962: 4c 8d bc 24 50 01 00 lea 0x150(%rsp),%r15 0.00 : 406969: 00 0.00 : 40696a: be 05 00 00 00 mov $0x5,%esi 0.00 : 40696f: bf d0 b7 20 13 mov $0x1320b7d0,%edi /home/Computational/mark/src/dbt3/src/dbgen/text.c:237 0.77 : 406974: 45 31 ed xor %r13d,%r13d 0.00 : 406977: 4c 8d 74 24 30 lea 0x30(%rsp),%r14 0.00 : 40697c: e8 0f d3 ff ff callq 403c90 1.93 : 406981: 49 83 c7 01 add $0x1,%r15 0.00 : 406985: 0f b6 84 24 50 01 00 movzbl 0x150(%rsp),%eax 0.00 : 40698c: 00 2.32 : 40698d: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 406994: 00 0.39 : 406995: eb 64 jmp 4069fb 0.00 : 406997: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 40699e: 00 00 : cptr = syntax; : : next_token: /* I hate goto's, but can't seem to have parent and child use strtok() */ : while (*cptr && *cptr == ' ') : cptr++; : if (*cptr == '\0') /home/Computational/mark/src/dbt3/src/dbgen/text.c:243 2.32 : 4069a0: 84 c0 test %al,%al 0.00 : 4069a2: 0f 84 c0 01 00 00 je 406b68 : goto done; : switch(*cptr) 0.39 : 4069a8: 3c 50 cmp $0x50,%al 0.00 : 4069aa: 0f 84 58 01 00 00 je 406b08 0.00 : 4069b0: 7f 56 jg 406a08 0.00 : 4069b2: 3c 4e cmp $0x4e,%al /home/Computational/mark/src/dbt3/src/dbgen/text.c:245 1.16 : 4069b4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4069b8: 75 16 jne 4069d0 : { : case 'V': : len = txt_vp(dest, sd); : break; : case 'N': : len = txt_np(dest, sd); /home/Computational/mark/src/dbt3/src/dbgen/text.c:251 1.16 : 4069ba: be 05 00 00 00 mov $0x5,%esi 0.00 : 4069bf: 4c 89 f7 mov %r14,%rdi 0.77 : 4069c2: e8 19 fe ff ff callq 4067e0 0.00 : 4069c7: 41 89 c5 mov %eax,%r13d 0.00 : 4069ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case 'T': : i = pick_str(&terminators, sd, --dest); /*terminators should abut previous word */ : len = (int)strlen(DIST_MEMBER(&terminators, i)); : break; : } /* end of POS switch statement */ : dest += len; /home/Computational/mark/src/dbt3/src/dbgen/text.c:265 1.54 : 4069d0: 49 63 c5 movslq %r13d,%rax : res += len; /home/Computational/mark/src/dbt3/src/dbgen/text.c:266 1.54 : 4069d3: 44 01 6c 24 24 add %r13d,0x24(%rsp) : case 'T': : i = pick_str(&terminators, sd, --dest); /*terminators should abut previous word */ : len = (int)strlen(DIST_MEMBER(&terminators, i)); : break; : } /* end of POS switch statement */ : dest += len; /home/Computational/mark/src/dbt3/src/dbgen/text.c:265 5.41 : 4069d8: 49 01 c6 add %rax,%r14 : res += len; : cptr++; : if (*cptr && *cptr != ' ') /* miscelaneous fillagree, like punctuation */ /home/Computational/mark/src/dbt3/src/dbgen/text.c:268 1.16 : 4069db: 41 0f b6 07 movzbl (%r15),%eax 0.00 : 4069df: 84 c0 test %al,%al 0.00 : 4069e1: 74 14 je 4069f7 0.00 : 4069e3: 3c 20 cmp $0x20,%al 0.00 : 4069e5: 74 10 je 4069f7 : { : dest += 1; : res += 1; 0.00 : 4069e7: 83 44 24 24 01 addl $0x1,0x24(%rsp) : dest += len; : res += len; : cptr++; : if (*cptr && *cptr != ' ') /* miscelaneous fillagree, like punctuation */ : { : dest += 1; 0.00 : 4069ec: 49 83 c6 01 add $0x1,%r14 : res += 1; : *dest = *cptr; 0.00 : 4069f0: 41 88 06 mov %al,(%r14) 0.00 : 4069f3: 41 0f b6 07 movzbl (%r15),%eax : int i, : res = 0, : len = 0; : : : pick_str(&grammar, sd, syntax); /home/Computational/mark/src/dbt3/src/dbgen/text.c:237 2.32 : 4069f7: 49 83 c7 01 add $0x1,%r15 : cptr = syntax; : : next_token: /* I hate goto's, but can't seem to have parent and child use strtok() */ : while (*cptr && *cptr == ' ') /home/Computational/mark/src/dbt3/src/dbgen/text.c:241 4.25 : 4069fb: 3c 20 cmp $0x20,%al 0.00 : 4069fd: 75 a1 jne 4069a0 : int i, : res = 0, : len = 0; : : : pick_str(&grammar, sd, syntax); 0.00 : 4069ff: 41 0f b6 07 movzbl (%r15),%eax 0.00 : 406a03: eb f2 jmp 4069f7 0.00 : 406a05: 0f 1f 00 nopl (%rax) : next_token: /* I hate goto's, but can't seem to have parent and child use strtok() */ : while (*cptr && *cptr == ' ') : cptr++; : if (*cptr == '\0') : goto done; : switch(*cptr) /home/Computational/mark/src/dbt3/src/dbgen/text.c:245 1.54 : 406a08: 3c 54 cmp $0x54,%al 0.00 : 406a0a: 0f 84 c0 00 00 00 je 406ad0 1.16 : 406a10: 3c 56 cmp $0x56,%al 0.00 : 406a12: 75 bc jne 4069d0 : distribution *src; : int i, : res = 0; : : : pick_str(&vp, sd, &syntax[0]); /home/Computational/mark/src/dbt3/src/dbgen/text.c:117 2.32 : 406a14: 48 8d 94 24 40 01 00 lea 0x140(%rsp),%rdx 0.00 : 406a1b: 00 0.00 : 406a1c: bf a0 b5 20 13 mov $0x1320b5a0,%edi 0.77 : 406a21: be 05 00 00 00 mov $0x5,%esi 0.00 : 406a26: 4d 89 f4 mov %r14,%r12 0.00 : 406a29: 45 31 ed xor %r13d,%r13d 0.00 : 406a2c: e8 5f d2 ff ff callq 403c90 0.39 : 406a31: 48 8d bc 24 40 01 00 lea 0x140(%rsp),%rdi 0.00 : 406a38: 00 0.00 : 406a39: eb 79 jmp 406ab4 0.00 : 406a3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : parse_target = syntax; : while ((cptr = strtok(parse_target, " ")) != NULL) : { : src = NULL; : switch(*cptr) 0.39 : 406a40: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 406a44: bb 30 b7 20 13 mov $0x1320b730,%ebx 0.00 : 406a49: 3c 56 cmp $0x56,%al 0.00 : 406a4b: 74 19 je 406a66 0.00 : 406a4d: 3c 58 cmp $0x58,%al 0.39 : 406a4f: bb 40 b5 20 13 mov $0x1320b540,%ebx 0.00 : 406a54: 74 10 je 406a66 0.00 : 406a56: 3c 44 cmp $0x44,%al 0.39 : 406a58: bb 00 00 00 00 mov $0x0,%ebx 0.39 : 406a5d: b8 c0 b6 20 13 mov $0x1320b6c0,%eax 0.00 : 406a62: 48 0f 44 d8 cmove %rax,%rbx : break; : case 'X': : src = &auxillaries; : break; : } /* end of POS switch statement */ : i = pick_str(src, sd, dest); /home/Computational/mark/src/dbt3/src/dbgen/text.c:134 1.54 : 406a66: 4c 89 e2 mov %r12,%rdx 0.39 : 406a69: be 05 00 00 00 mov $0x5,%esi 0.00 : 406a6e: 48 89 df mov %rbx,%rdi 0.00 : 406a71: e8 1a d2 ff ff callq 403c90 : i = (int)strlen(DIST_MEMBER(src, i)); /home/Computational/mark/src/dbt3/src/dbgen/text.c:135 1.16 : 406a76: 48 8b 53 08 mov 0x8(%rbx),%rdx 1.54 : 406a7a: 48 98 cltq 0.00 : 406a7c: 48 c1 e0 04 shl $0x4,%rax 0.39 : 406a80: 48 8b 7c 02 08 mov 0x8(%rdx,%rax,1),%rdi /home/Computational/mark/src/dbt3/src/dbgen/text.c:135 6.95 : 406a85: e8 56 a3 ff ff callq 400de0 : dest += i; : res += i; : if (*(++cptr)) /* miscelaneous fillagree, like punctuation */ 0.00 : 406a8a: 0f b6 4d 01 movzbl 0x1(%rbp),%ecx : src = &auxillaries; : break; : } /* end of POS switch statement */ : i = pick_str(src, sd, dest); : i = (int)strlen(DIST_MEMBER(src, i)); : dest += i; 0.00 : 406a8e: 48 63 d0 movslq %eax,%rdx : res += i; /home/Computational/mark/src/dbt3/src/dbgen/text.c:137 2.32 : 406a91: 41 8d 44 05 00 lea 0x0(%r13,%rax,1),%eax : src = &auxillaries; : break; : } /* end of POS switch statement */ : i = pick_str(src, sd, dest); : i = (int)strlen(DIST_MEMBER(src, i)); : dest += i; /home/Computational/mark/src/dbt3/src/dbgen/text.c:136 3.09 : 406a96: 49 8d 14 14 lea (%r12,%rdx,1),%rdx : res += i; : if (*(++cptr)) /* miscelaneous fillagree, like punctuation */ 0.00 : 406a9a: 84 c9 test %cl,%cl 0.00 : 406a9c: 74 09 je 406aa7 : { : dest += 1; 0.00 : 406a9e: 48 83 c2 01 add $0x1,%rdx : res += 1; 0.00 : 406aa2: 83 c0 01 add $0x1,%eax : *dest = *cptr; 0.00 : 406aa5: 88 0a mov %cl,(%rdx) : } : *dest = ' '; : dest++; 0.00 : 406aa7: 4c 8d 62 01 lea 0x1(%rdx),%r12 : res++; 0.00 : 406aab: 44 8d 68 01 lea 0x1(%rax),%r13d : { : dest += 1; : res += 1; : *dest = *cptr; : } : *dest = ' '; /home/Computational/mark/src/dbt3/src/dbgen/text.c:144 2.32 : 406aaf: c6 02 20 movb $0x20,(%rdx) : dest++; : res++; /home/Computational/mark/src/dbt3/src/dbgen/text.c:146 6.56 : 406ab2: 31 ff xor %edi,%edi : res = 0; : : : pick_str(&vp, sd, &syntax[0]); : parse_target = syntax; : while ((cptr = strtok(parse_target, " ")) != NULL) /home/Computational/mark/src/dbt3/src/dbgen/text.c:119 1.16 : 406ab4: be f5 7f 40 00 mov $0x407ff5,%esi 0.00 : 406ab9: e8 32 a4 ff ff callq 400ef0 1.93 : 406abe: 48 85 c0 test %rax,%rax 0.00 : 406ac1: 48 89 c5 mov %rax,%rbp 0.77 : 406ac4: 0f 85 76 ff ff ff jne 406a40 0.00 : 406aca: e9 01 ff ff ff jmpq 4069d0 0.00 : 406acf: 90 nop : strcpy((dest + len), " the "); : len += 5; : len += txt_np(dest + len, sd); : break; : case 'T': : i = pick_str(&terminators, sd, --dest); /*terminators should abut previous word */ /home/Computational/mark/src/dbt3/src/dbgen/text.c:261 2.32 : 406ad0: 49 83 ee 01 sub $0x1,%r14 1.93 : 406ad4: be 05 00 00 00 mov $0x5,%esi 0.00 : 406ad9: bf f0 b6 20 13 mov $0x1320b6f0,%edi 0.00 : 406ade: 4c 89 f2 mov %r14,%rdx 0.77 : 406ae1: e8 aa d1 ff ff callq 403c90 : len = (int)strlen(DIST_MEMBER(&terminators, i)); 0.00 : 406ae6: 48 8b 15 0b 4c e0 12 mov 0x12e04c0b(%rip),%rdx # 1320b6f8 0.39 : 406aed: 48 98 cltq 0.39 : 406aef: 48 c1 e0 04 shl $0x4,%rax 0.00 : 406af3: 48 8b 7c 02 08 mov 0x8(%rdx,%rax,1),%rdi /home/Computational/mark/src/dbt3/src/dbgen/text.c:262 0.77 : 406af8: e8 e3 a2 ff ff callq 400de0 0.00 : 406afd: 41 89 c5 mov %eax,%r13d 1.16 : 406b00: e9 cb fe ff ff jmpq 4069d0 0.00 : 406b05: 0f 1f 00 nopl (%rax) : break; : case 'N': : len = txt_np(dest, sd); : break; : case 'P': : i = pick_str(&prepositions, sd, dest); /home/Computational/mark/src/dbt3/src/dbgen/text.c:254 2.70 : 406b08: be 05 00 00 00 mov $0x5,%esi 1.54 : 406b0d: 4c 89 f2 mov %r14,%rdx 0.00 : 406b10: bf 40 b6 20 13 mov $0x1320b640,%edi 0.00 : 406b15: e8 76 d1 ff ff callq 403c90 : len = (int)strlen(DIST_MEMBER(&prepositions, i)); 0.39 : 406b1a: 48 8b 15 27 4b e0 12 mov 0x12e04b27(%rip),%rdx # 1320b648 0.39 : 406b21: 48 98 cltq 0.00 : 406b23: 48 c1 e0 04 shl $0x4,%rax 0.00 : 406b27: 48 8b 7c 02 08 mov 0x8(%rdx,%rax,1),%rdi /home/Computational/mark/src/dbt3/src/dbgen/text.c:255 1.54 : 406b2c: e8 af a2 ff ff callq 400de0 0.00 : 406b31: 89 c2 mov %eax,%edx : strcpy((dest + len), " the "); 0.39 : 406b33: 48 98 cltq : len += 5; : len += txt_np(dest + len, sd); 0.00 : 406b35: be 05 00 00 00 mov $0x5,%esi : break; : case 'P': : i = pick_str(&prepositions, sd, dest); : len = (int)strlen(DIST_MEMBER(&prepositions, i)); : strcpy((dest + len), " the "); : len += 5; 0.00 : 406b3a: 8d 5a 05 lea 0x5(%rdx),%ebx : len = txt_np(dest, sd); : break; : case 'P': : i = pick_str(&prepositions, sd, dest); : len = (int)strlen(DIST_MEMBER(&prepositions, i)); : strcpy((dest + len), " the "); 0.39 : 406b3d: 49 8d 04 06 lea (%r14,%rax,1),%rax : len += 5; : len += txt_np(dest + len, sd); 0.00 : 406b41: 48 63 fb movslq %ebx,%rdi : len = txt_np(dest, sd); : break; : case 'P': : i = pick_str(&prepositions, sd, dest); : len = (int)strlen(DIST_MEMBER(&prepositions, i)); : strcpy((dest + len), " the "); /home/Computational/mark/src/dbt3/src/dbgen/text.c:256 1.16 : 406b44: c7 00 20 74 68 65 movl $0x65687420,(%rax) 3.47 : 406b4a: 66 c7 40 04 20 00 movw $0x20,0x4(%rax) : len += 5; : len += txt_np(dest + len, sd); 0.39 : 406b50: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 406b54: e8 87 fc ff ff callq 4067e0 0.00 : 406b59: 44 8d 2c 18 lea (%rax,%rbx,1),%r13d 0.00 : 406b5d: e9 6e fe ff ff jmpq 4069d0 0.00 : 406b62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : res += 1; : *dest = *cptr; : } : goto next_token; : done: : *dest = '\0'; /home/Computational/mark/src/dbt3/src/dbgen/text.c:276 1.16 : 406b68: 41 c6 06 00 movb $0x0,(%r14) : { : nLifeNoise += 200000; : fprintf(stderr, "%3.0f%%\b\b\b\b", (100.0 * wordlen)/TEXT_POOL_SIZE); : } : : s_len = txt_sentence(sentence, 5); 0.39 : 406b6c: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 406b70: 83 e8 01 sub $0x1,%eax 0.00 : 406b73: 48 63 e8 movslq %eax,%rbp : if ( s_len < 0) 0.00 : 406b76: 48 85 ed test %rbp,%rbp 0.00 : 406b79: 0f 88 5a 01 00 00 js 406cd9 : INTERNAL_ERROR("Bad sentence formation"); : needed = TEXT_POOL_SIZE - wordlen; /home/Computational/mark/src/dbt3/src/dbgen/text.c:316 0.77 : 406b7f: bb 00 00 c0 12 mov $0x12c00000,%ebx 0.00 : 406b84: 48 2b 5c 24 18 sub 0x18(%rsp),%rbx : if (needed >= (s_len + 1)) /* need the entire sentence */ 0.00 : 406b89: 48 39 dd cmp %rbx,%rbp 0.00 : 406b8c: 7d 4a jge 406bd8 : { : strcpy(cp, sentence); 0.00 : 406b8e: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 406b93: 48 8d 74 24 30 lea 0x30(%rsp),%rsi 0.00 : 406b98: e8 03 a2 ff ff callq 400da0 : cp += s_len; : wordlen += s_len + 1; /home/Computational/mark/src/dbt3/src/dbgen/text.c:321 0.77 : 406b9d: 48 8b 54 24 18 mov 0x18(%rsp),%rdx : INTERNAL_ERROR("Bad sentence formation"); : needed = TEXT_POOL_SIZE - wordlen; : if (needed >= (s_len + 1)) /* need the entire sentence */ : { : strcpy(cp, sentence); : cp += s_len; 0.00 : 406ba2: 48 8b 44 24 28 mov 0x28(%rsp),%rax : wordlen += s_len + 1; 0.00 : 406ba7: 48 8d 54 15 01 lea 0x1(%rbp,%rdx,1),%rdx : INTERNAL_ERROR("Bad sentence formation"); : needed = TEXT_POOL_SIZE - wordlen; : if (needed >= (s_len + 1)) /* need the entire sentence */ : { : strcpy(cp, sentence); : cp += s_len; /home/Computational/mark/src/dbt3/src/dbgen/text.c:320 1.93 : 406bac: 48 01 e8 add %rbp,%rax : wordlen += s_len + 1; 0.39 : 406baf: 48 89 54 24 18 mov %rdx,0x18(%rsp) : *(cp++) = ' '; 0.39 : 406bb4: c6 00 20 movb $0x20,(%rax) /home/Computational/mark/src/dbt3/src/dbgen/text.c:322 6.18 : 406bb7: 48 83 c0 01 add $0x1,%rax : { : cp = &szTextPool[0]; : if (verbose > 0) : fprintf(stderr, "\nPreloading text ... "); : : while (wordlen < TEXT_POOL_SIZE) 0.00 : 406bbb: 48 81 7c 24 18 ff ff cmpq $0x12bfffff,0x18(%rsp) 0.00 : 406bc2: bf 12 : if (needed >= (s_len + 1)) /* need the entire sentence */ : { : strcpy(cp, sentence); : cp += s_len; : wordlen += s_len + 1; : *(cp++) = ' '; /home/Computational/mark/src/dbt3/src/dbgen/text.c:322 1.16 : 406bc4: 48 89 44 24 28 mov %rax,0x28(%rsp) : { : cp = &szTextPool[0]; : if (verbose > 0) : fprintf(stderr, "\nPreloading text ... "); : : while (wordlen < TEXT_POOL_SIZE) 0.00 : 406bc9: 0f 8e 71 fd ff ff jle 406940 0.00 : 406bcf: eb 20 jmp 406bf1 0.00 : 406bd1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : wordlen += s_len + 1; : *(cp++) = ' '; : } : else /* chop the new sentence off to match the length target */ : { : sentence[needed] = '\0'; 0.00 : 406bd8: c6 44 1c 30 00 movb $0x0,0x30(%rsp,%rbx,1) : strcpy(cp, sentence); 0.00 : 406bdd: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 406be2: 48 8d 74 24 30 lea 0x30(%rsp),%rsi 0.00 : 406be7: e8 b4 a1 ff ff callq 400da0 : wordlen += needed; : cp += needed; 0.00 : 406bec: 48 01 5c 24 28 add %rbx,0x28(%rsp) : } : } : *cp = '\0'; 0.00 : 406bf1: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 406bf6: c6 00 00 movb $0x0,(%rax) : bInit = 1; : if (verbose > 0) 0.00 : 406bf9: 48 83 3d c7 4b e0 12 cmpq $0x0,0x12e04bc7(%rip) # 1320b7c8 0.00 : 406c00: 00 : wordlen += needed; : cp += needed; : } : } : *cp = '\0'; : bInit = 1; 0.00 : 406c01: c7 05 d5 48 20 00 01 movl $0x1,0x2048d5(%rip) # 60b4e0 0.00 : 406c08: 00 00 00 : if (verbose > 0) 0.00 : 406c0b: 7e 11 jle 406c1e : fprintf(stderr, "\n"); 0.00 : 406c0d: 48 8b 35 14 3f 20 00 mov 0x203f14(%rip),%rsi # 60ab28 0.00 : 406c14: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 406c19: e8 02 a2 ff ff callq 400e20 : } : : RANDOM(hgOffset, 0, TEXT_POOL_SIZE - max, sd); 0.00 : 406c1e: 48 63 5c 24 04 movslq 0x4(%rsp),%rbx 0.00 : 406c23: ba 00 00 c0 12 mov $0x12c00000,%edx 0.00 : 406c28: 2b 54 24 08 sub 0x8(%rsp),%edx 0.00 : 406c2c: 48 8d bc 24 60 01 00 lea 0x160(%rsp),%rdi 0.00 : 406c33: 00 0.00 : 406c34: 31 f6 xor %esi,%esi 0.00 : 406c36: 48 89 d9 mov %rbx,%rcx 0.00 : 406c39: 48 63 d2 movslq %edx,%rdx 0.00 : 406c3c: e8 ef d8 ff ff callq 404530 : RANDOM(hgLength, min, max, sd); 0.00 : 406c41: 48 63 54 24 08 movslq 0x8(%rsp),%rdx 0.00 : 406c46: 48 63 74 24 0c movslq 0xc(%rsp),%rsi 0.00 : 406c4b: 48 8d bc 24 68 01 00 lea 0x168(%rsp),%rdi 0.00 : 406c52: 00 0.00 : 406c53: 48 89 d9 mov %rbx,%rcx 0.00 : 406c56: e8 d5 d8 ff ff callq 404530 : strncpy(&tgt[0], &szTextPool[hgOffset], (int)hgLength); 0.00 : 406c5b: 48 63 94 24 68 01 00 movslq 0x168(%rsp),%rdx 0.00 : 406c62: 00 0.00 : 406c63: 48 8b b4 24 60 01 00 mov 0x160(%rsp),%rsi 0.00 : 406c6a: 00 0.00 : 406c6b: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 406c70: 48 81 c6 00 b5 60 00 add $0x60b500,%rsi 0.00 : 406c77: e8 14 a1 ff ff callq 400d90 : tgt[hgLength] = '\0'; 0.00 : 406c7c: 48 8b 84 24 68 01 00 mov 0x168(%rsp),%rax 0.00 : 406c83: 00 0.00 : 406c84: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 406c89: c6 04 02 00 movb $0x0,(%rdx,%rax,1) : : return; : } 0.00 : 406c8d: 48 81 c4 78 01 00 00 add $0x178,%rsp 0.00 : 406c94: 5b pop %rbx 0.00 : 406c95: 5d pop %rbp 0.00 : 406c96: 41 5c pop %r12 0.00 : 406c98: 41 5d pop %r13 0.00 : 406c9a: 41 5e pop %r14 0.00 : 406c9c: 41 5f pop %r15 0.00 : 406c9e: c3 retq : while (wordlen < TEXT_POOL_SIZE) : { : if ((verbose > 0) && (wordlen > nLifeNoise)) : { : nLifeNoise += 200000; : fprintf(stderr, "%3.0f%%\b\b\b\b", (100.0 * wordlen)/TEXT_POOL_SIZE); 0.00 : 406c9f: f2 48 0f 2a 44 24 18 cvtsi2sdq 0x18(%rsp),%xmm0 0.00 : 406ca6: f2 0f 59 05 aa 17 00 mulsd 0x17aa(%rip),%xmm0 # 408458 0.00 : 406cad: 00 0.00 : 406cae: 48 8b 3d 73 3e 20 00 mov 0x203e73(%rip),%rdi # 60ab28 0.00 : 406cb5: be 31 84 40 00 mov $0x408431,%esi 0.00 : 406cba: b8 01 00 00 00 mov $0x1,%eax : : while (wordlen < TEXT_POOL_SIZE) : { : if ((verbose > 0) && (wordlen > nLifeNoise)) : { : nLifeNoise += 200000; 0.00 : 406cbf: 81 44 24 20 40 0d 03 addl $0x30d40,0x20(%rsp) 0.00 : 406cc6: 00 : fprintf(stderr, "%3.0f%%\b\b\b\b", (100.0 * wordlen)/TEXT_POOL_SIZE); 0.00 : 406cc7: f2 0f 5e 05 91 17 00 divsd 0x1791(%rip),%xmm0 # 408460 0.00 : 406cce: 00 0.00 : 406ccf: e8 8c a1 ff ff callq 400e60 0.00 : 406cd4: e9 81 fc ff ff jmpq 40695a : } : : s_len = txt_sentence(sentence, 5); : if ( s_len < 0) : INTERNAL_ERROR("Bad sentence formation"); 0.00 : 406cd9: 48 8b 0d 48 3e 20 00 mov 0x203e48(%rip),%rcx # 60ab28 0.00 : 406ce0: ba 16 00 00 00 mov $0x16,%edx 0.00 : 406ce5: be 01 00 00 00 mov $0x1,%esi 0.00 : 406cea: bf 3d 84 40 00 mov $0x40843d,%edi 0.00 : 406cef: e8 4c a2 ff ff callq 400f40 0.00 : 406cf4: e8 77 a0 ff ff callq 400d70 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:48 17.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 13.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 7.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 6.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 5.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:57 5.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 5.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:57 3.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 3.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:45 3.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 2.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:52 2.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079c830 : : * we assume that the FunctionCallInfoData was already mostly set up by : * PrepareSortSupportComparisonShim. : */ : static int : comparison_shim(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 6.23 : 79c830: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 3.86 : 79c831: 48 89 e5 mov %rsp,%rbp 1.48 : 79c834: 53 push %rbx 2.67 : 79c835: 48 83 ec 08 sub $0x8,%rsp : SortShimExtra *extra = (SortShimExtra *) ssup->ssup_extra; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:45 3.56 : 79c839: 48 8b 5a 10 mov 0x10(%rdx),%rbx : extra->fcinfo.arg[1] = y; : : /* just for paranoia's sake, we reset isnull each time */ : extra->fcinfo.isnull = false; : : result = FunctionCallInvoke(&extra->fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 0.89 : 79c83d: 48 8b 03 mov (%rbx),%rax : comparison_shim(Datum x, Datum y, SortSupport ssup) : { : SortShimExtra *extra = (SortShimExtra *) ssup->ssup_extra; : Datum result; : : extra->fcinfo.arg[0] = x; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:48 19.88 : 79c840: 48 89 7b 20 mov %rdi,0x20(%rbx) : extra->fcinfo.arg[1] = y; : : /* just for paranoia's sake, we reset isnull each time */ : extra->fcinfo.isnull = false; : : result = FunctionCallInvoke(&extra->fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 17.80 : 79c844: 48 89 df mov %rbx,%rdi : { : SortShimExtra *extra = (SortShimExtra *) ssup->ssup_extra; : Datum result; : : extra->fcinfo.arg[0] = x; : extra->fcinfo.arg[1] = y; 0.30 : 79c847: 48 89 73 28 mov %rsi,0x28(%rbx) : : /* just for paranoia's sake, we reset isnull each time */ : extra->fcinfo.isnull = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:52 2.97 : 79c84b: c6 43 1c 00 movb $0x0,0x1c(%rbx) : : result = FunctionCallInvoke(&extra->fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 7.12 : 79c84f: ff 10 callq *(%rax) : : /* Check for null result, since caller is clearly not expecting one */ : if (extra->fcinfo.isnull) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:57 5.04 : 79c851: 80 7b 1c 00 cmpb $0x0,0x1c(%rbx) 5.64 : 79c855: 75 07 jne 79c85e : elog(ERROR, "function %u returned NULL", extra->flinfo.fn_oid); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 5.64 : 79c857: 48 83 c4 08 add $0x8,%rsp 0.00 : 79c85b: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 3.56 : 79c85c: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 13.35 : 79c85d: c3 retq : : result = FunctionCallInvoke(&extra->fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (extra->fcinfo.isnull) : elog(ERROR, "function %u returned NULL", extra->flinfo.fn_oid); 0.00 : 79c85e: ba 70 29 8e 00 mov $0x8e2970,%edx 0.00 : 79c863: be 3a 00 00 00 mov $0x3a,%esi 0.00 : 79c868: bf 21 29 8e 00 mov $0x8e2921,%edi 0.00 : 79c86d: e8 ae eb fd ff callq 77b420 0.00 : 79c872: 8b 93 b0 03 00 00 mov 0x3b0(%rbx),%edx 0.00 : 79c878: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 79c87d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79c882: 31 c0 xor %eax,%eax 0.00 : 79c884: e8 a7 e9 fd ff callq 77b230 0.00 : 79c889: e8 42 cc cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:115 16.99 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:104 6.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:117 5.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:115 5.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:111 3.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:117 2.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:108 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:128 1.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:104 1.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:124 1.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:119 1.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:120 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:108 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:111 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:111 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:111 0.65 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:125 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b7ae0 : : } : : /* Finish a run cycle for a plan node */ : void : InstrEndLoop(Instrumentation *instr) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:104 1.96 : 5b7ae0: 55 push %rbp : double totaltime; : : /* Skip if nothing has happened, or already shut down */ : if (!instr->running) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:108 2.94 : 5b7ae1: 80 7f 02 00 cmpb $0x0,0x2(%rdi) : } : : /* Finish a run cycle for a plan node */ : void : InstrEndLoop(Instrumentation *instr) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:104 16.99 : 5b7ae5: 48 89 e5 mov %rsp,%rbp : double totaltime; : : /* Skip if nothing has happened, or already shut down */ : if (!instr->running) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:108 0.65 : 5b7ae8: 0f 84 da 00 00 00 je 5b7bc8 : return; : : if (!INSTR_TIME_IS_ZERO(instr->starttime)) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:111 0.65 : 5b7aee: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:111 5.23 : 5b7af3: 75 07 jne 5b7afc /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:111 0.65 : 5b7af5: 48 83 7f 08 00 cmpq $0x0,0x8(%rdi) 0.65 : 5b7afa: 74 34 je 5b7b30 : elog(ERROR, "InstrEndLoop called on running node"); 0.00 : 5b7afc: ba 7d b6 88 00 mov $0x88b67d,%edx 0.00 : 5b7b01: be 70 00 00 00 mov $0x70,%esi 0.00 : 5b7b06: bf fa b5 88 00 mov $0x88b5fa,%edi 0.00 : 5b7b0b: e8 10 39 1c 00 callq 77b420 0.00 : 5b7b10: be 08 b6 88 00 mov $0x88b608,%esi 0.00 : 5b7b15: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b7b1a: 31 c0 xor %eax,%eax 0.00 : 5b7b1c: e8 0f 37 1c 00 callq 77b230 0.00 : 5b7b21: e8 aa 19 eb ff callq 4694d0 0.00 : 5b7b26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5b7b2d: 00 00 00 : : /* Accumulate per-cycle statistics into totals */ : totaltime = INSTR_TIME_GET_DOUBLE(instr->counter); 0.33 : 5b7b30: f2 48 0f 2a 47 20 cvtsi2sdq 0x20(%rdi),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:115 5.88 : 5b7b36: f2 0f 5e 05 a2 4a 2c divsd 0x2c4aa2(%rip),%xmm0 # 87c5e0 <__func__.18742+0x1b> 0.00 : 5b7b3d: 00 44.77 : 5b7b3e: f2 48 0f 2a 4f 18 cvtsi2sdq 0x18(%rdi),%xmm1 : : /* Reset for next cycle (if any) */ : instr->running = false; : INSTR_TIME_SET_ZERO(instr->starttime); : INSTR_TIME_SET_ZERO(instr->counter); : instr->firsttuple = 0; 0.00 : 5b7b44: 31 c0 xor %eax,%eax : instr->total += totaltime; : instr->ntuples += instr->tuplecount; : instr->nloops += 1; : : /* Reset for next cycle (if any) */ : instr->running = false; 0.00 : 5b7b46: c6 47 02 00 movb $0x0,0x2(%rdi) : INSTR_TIME_SET_ZERO(instr->starttime); 0.00 : 5b7b4a: 48 c7 47 08 00 00 00 movq $0x0,0x8(%rdi) 0.00 : 5b7b51: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:124 1.96 : 5b7b52: 48 c7 47 10 00 00 00 movq $0x0,0x10(%rdi) 0.00 : 5b7b59: 00 : INSTR_TIME_SET_ZERO(instr->counter); 0.00 : 5b7b5a: 48 c7 47 18 00 00 00 movq $0x0,0x18(%rdi) 0.00 : 5b7b61: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:125 0.65 : 5b7b62: 48 c7 47 20 00 00 00 movq $0x0,0x20(%rdi) 0.00 : 5b7b69: 00 : : if (!INSTR_TIME_IS_ZERO(instr->starttime)) : elog(ERROR, "InstrEndLoop called on running node"); : : /* Accumulate per-cycle statistics into totals */ : totaltime = INSTR_TIME_GET_DOUBLE(instr->counter); 0.00 : 5b7b6a: f2 0f 58 c8 addsd %xmm0,%xmm1 : : instr->startup += instr->firsttuple; /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:117 3.27 : 5b7b6e: f2 0f 10 87 a8 00 00 movsd 0xa8(%rdi),%xmm0 0.00 : 5b7b75: 00 0.00 : 5b7b76: f2 0f 58 47 28 addsd 0x28(%rdi),%xmm0 : : /* Reset for next cycle (if any) */ : instr->running = false; : INSTR_TIME_SET_ZERO(instr->starttime); : INSTR_TIME_SET_ZERO(instr->counter); : instr->firsttuple = 0; 0.33 : 5b7b7b: 48 89 47 28 mov %rax,0x28(%rdi) : : /* Accumulate per-cycle statistics into totals */ : totaltime = INSTR_TIME_GET_DOUBLE(instr->counter); : : instr->startup += instr->firsttuple; : instr->total += totaltime; 0.33 : 5b7b7f: f2 0f 58 8f b0 00 00 addsd 0xb0(%rdi),%xmm1 0.00 : 5b7b86: 00 : elog(ERROR, "InstrEndLoop called on running node"); : : /* Accumulate per-cycle statistics into totals */ : totaltime = INSTR_TIME_GET_DOUBLE(instr->counter); : : instr->startup += instr->firsttuple; /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:117 6.21 : 5b7b87: f2 0f 11 87 a8 00 00 movsd %xmm0,0xa8(%rdi) 0.00 : 5b7b8e: 00 : instr->total += totaltime; : instr->ntuples += instr->tuplecount; 0.00 : 5b7b8f: f2 0f 10 87 b8 00 00 movsd 0xb8(%rdi),%xmm0 0.00 : 5b7b96: 00 : : /* Accumulate per-cycle statistics into totals */ : totaltime = INSTR_TIME_GET_DOUBLE(instr->counter); : : instr->startup += instr->firsttuple; : instr->total += totaltime; 0.33 : 5b7b97: f2 0f 11 8f b0 00 00 movsd %xmm1,0xb0(%rdi) 0.00 : 5b7b9e: 00 : instr->ntuples += instr->tuplecount; /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:119 1.96 : 5b7b9f: f2 0f 58 47 30 addsd 0x30(%rdi),%xmm0 : /* Reset for next cycle (if any) */ : instr->running = false; : INSTR_TIME_SET_ZERO(instr->starttime); : INSTR_TIME_SET_ZERO(instr->counter); : instr->firsttuple = 0; : instr->tuplecount = 0; 0.00 : 5b7ba4: 48 89 47 30 mov %rax,0x30(%rdi) : /* Accumulate per-cycle statistics into totals */ : totaltime = INSTR_TIME_GET_DOUBLE(instr->counter); : : instr->startup += instr->firsttuple; : instr->total += totaltime; : instr->ntuples += instr->tuplecount; 0.00 : 5b7ba8: f2 0f 11 87 b8 00 00 movsd %xmm0,0xb8(%rdi) 0.00 : 5b7baf: 00 : instr->nloops += 1; 0.00 : 5b7bb0: f2 0f 10 05 a0 75 1f movsd 0x1f75a0(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5b7bb7: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:120 1.63 : 5b7bb8: f2 0f 58 87 c0 00 00 addsd 0xc0(%rdi),%xmm0 0.00 : 5b7bbf: 00 0.00 : 5b7bc0: f2 0f 11 87 c0 00 00 movsd %xmm0,0xc0(%rdi) 0.00 : 5b7bc7: 00 : instr->running = false; : INSTR_TIME_SET_ZERO(instr->starttime); : INSTR_TIME_SET_ZERO(instr->counter); : instr->firsttuple = 0; : instr->tuplecount = 0; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/instrument.c:128 2.61 : 5b7bc8: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:678 15.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:678 15.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:718 8.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:711 7.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:711 6.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:678 6.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:706 5.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:718 5.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:678 5.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:711 4.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:718 3.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:718 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ed180 : : } : : : Datum : int8inc(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:678 15.27 : 6ed180: 55 push %rbp 15.27 : 6ed181: 48 89 e5 mov %rsp,%rbp 5.42 : 6ed184: 53 push %rbx 6.40 : 6ed185: 48 83 ec 08 sub $0x8,%rsp : } : else : #endif : { : /* Not called as an aggregate, so just do it the dumb way */ : int64 arg = PG_GETARG_INT64(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:706 6.40 : 6ed189: 48 8b 57 20 mov 0x20(%rdi),%rdx : int64 result; : : result = arg + 1; : /* Overflow check */ : if (result < 0 && arg > 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:711 8.37 : 6ed18d: 48 89 d0 mov %rdx,%rax 5.42 : 6ed190: 48 83 c0 01 add $0x1,%rax 7.88 : 6ed194: 78 0a js 6ed1a0 : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("bigint out of range"))); : : PG_RETURN_INT64(result); : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:718 5.91 : 6ed196: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:718 4.93 : 6ed19a: 5b pop %rbx 3.45 : 6ed19b: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:718 15.27 : 6ed19c: c3 retq 0.00 : 6ed19d: 0f 1f 00 nopl (%rax) : int64 arg = PG_GETARG_INT64(0); : int64 result; : : result = arg + 1; : /* Overflow check */ : if (result < 0 && arg > 0) 0.00 : 6ed1a0: 48 85 d2 test %rdx,%rdx 0.00 : 6ed1a3: 7e f1 jle 6ed196 : ereport(ERROR, 0.00 : 6ed1a5: 45 31 c0 xor %r8d,%r8d 0.00 : 6ed1a8: b9 3a ee 8b 00 mov $0x8bee3a,%ecx 0.00 : 6ed1ad: ba ca 02 00 00 mov $0x2ca,%edx 0.00 : 6ed1b2: be d3 ec 8b 00 mov $0x8becd3,%esi 0.00 : 6ed1b7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6ed1bc: e8 ff d8 08 00 callq 77aac0 0.00 : 6ed1c1: 84 c0 test %al,%al 0.00 : 6ed1c3: 75 05 jne 6ed1ca 0.00 : 6ed1c5: e8 06 c3 d7 ff callq 4694d0 0.00 : 6ed1ca: bf eb ec 8b 00 mov $0x8beceb,%edi 0.00 : 6ed1cf: 31 c0 xor %eax,%eax 0.00 : 6ed1d1: e8 ca f6 08 00 callq 77c8a0 0.00 : 6ed1d6: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6ed1db: 89 c3 mov %eax,%ebx 0.00 : 6ed1dd: e8 6e fb 08 00 callq 77cd50 0.00 : 6ed1e2: 89 de mov %ebx,%esi 0.00 : 6ed1e4: 89 c7 mov %eax,%edi 0.00 : 6ed1e6: 31 c0 xor %eax,%eax 0.00 : 6ed1e8: e8 f3 d3 08 00 callq 77a5e0 0.00 : 6ed1ed: eb d6 jmp 6ed1c5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 39.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 8.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 8.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 6.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1499 5.45 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 3.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 3.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1499 2.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 2.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 2.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 2.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 2.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1495 1.45 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1475 1.45 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 1.45 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 1.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 1.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 1.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679a90 : : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 2.18 : 679a90: 55 push %rbp 2.55 : 679a91: 89 f8 mov %edi,%eax 0.73 : 679a93: 48 89 e5 mov %rsp,%rbp 0.73 : 679a96: 4c 89 6d f0 mov %r13,-0x10(%rbp) : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 2.55 : 679a9a: 4c 63 ef movslq %edi,%r13 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 0.73 : 679a9d: 48 89 5d e0 mov %rbx,-0x20(%rbp) : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) 0.36 : 679aa1: 49 c1 e5 06 shl $0x6,%r13 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { 0.00 : 679aa5: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 679aa9: 4c 89 75 f8 mov %r14,-0x8(%rbp) : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) 0.00 : 679aad: 4d 89 ec mov %r13,%r12 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { 0.00 : 679ab0: 48 83 ec 20 sub $0x20,%rsp : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) 0.00 : 679ab4: 4c 03 25 dd 36 50 00 add 0x5036dd(%rip),%r12 # b7d198 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 5.45 : 679abb: 49 89 f6 mov %rsi,%r14 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 0.73 : 679abe: 89 d3 mov %edx,%ebx : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 1.09 : 679ac0: 41 8b 3c 24 mov (%r12),%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 39.27 : 679ac4: 83 ff ff cmp $0xffffffff,%edi 0.00 : 679ac7: 74 6f je 679b38 : break; : } : } : else : { : switch (whence) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1475 1.45 : 679ac9: 83 fa 01 cmp $0x1,%edx 0.00 : 679acc: 0f 84 9e 00 00 00 je 679b70 0.00 : 679ad2: 83 fa 02 cmp $0x2,%edx 0.00 : 679ad5: 0f 84 05 01 00 00 je 679be0 0.00 : 679adb: 85 db test %ebx,%ebx : case SEEK_END: : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : default: : elog(ERROR, "invalid whence: %d", whence); 0.00 : 679add: ba bf a9 8a 00 mov $0x8aa9bf,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1495 2.18 : 679ae2: be d7 05 00 00 mov $0x5d7,%esi : break; : } : } : else : { : switch (whence) 0.00 : 679ae7: 75 27 jne 679b10 : { : case SEEK_SET: : if (offset < 0) 0.00 : 679ae9: 4d 85 f6 test %r14,%r14 0.00 : 679aec: 0f 88 28 01 00 00 js 679c1a : elog(ERROR, "invalid seek offset: " INT64_FORMAT, : (int64) offset); : if (VfdCache[file].seekPos != offset) 0.00 : 679af2: 4d 39 74 24 20 cmp %r14,0x20(%r12) 0.00 : 679af7: 0f 84 8b 00 00 00 je 679b88 : VfdCache[file].seekPos = lseek(VfdCache[file].fd, /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 8.00 : 679afd: 31 d2 xor %edx,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 3.64 : 679aff: 4c 89 f6 mov %r14,%rsi 0.73 : 679b02: e8 69 00 df ff callq 469b70 2.55 : 679b07: 49 89 44 24 20 mov %rax,0x20(%r12) 0.73 : 679b0c: eb 7a jmp 679b88 0.00 : 679b0e: 66 90 xchg %ax,%ax : case SEEK_END: : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : default: : elog(ERROR, "invalid whence: %d", whence); 0.00 : 679b10: bf f1 a2 8a 00 mov $0x8aa2f1,%edi 0.00 : 679b15: e8 06 19 10 00 callq 77b420 0.00 : 679b1a: 89 da mov %ebx,%edx 0.00 : 679b1c: be 3a a3 8a 00 mov $0x8aa33a,%esi 0.00 : 679b21: bf 14 00 00 00 mov $0x14,%edi 0.00 : 679b26: 31 c0 xor %eax,%eax 0.00 : 679b28: e8 03 17 10 00 callq 77b230 0.00 : 679b2d: e8 9e f9 de ff callq 4694d0 0.00 : 679b32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) : { : switch (whence) 0.00 : 679b38: 83 fa 01 cmp $0x1,%edx 0.00 : 679b3b: 0f 84 cf 00 00 00 je 679c10 0.00 : 679b41: 83 fa 02 cmp $0x2,%edx 0.00 : 679b44: 74 6a je 679bb0 0.00 : 679b46: 85 db test %ebx,%ebx : return returnCode; : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : default: : elog(ERROR, "invalid whence: %d", whence); 0.00 : 679b48: ba bf a9 8a 00 mov $0x8aa9bf,%edx 0.00 : 679b4d: be bd 05 00 00 mov $0x5bd,%esi : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) : { : switch (whence) 0.00 : 679b52: 75 bc jne 679b10 : { : case SEEK_SET: : if (offset < 0) 0.00 : 679b54: 4d 85 f6 test %r14,%r14 : elog(ERROR, "invalid seek offset: " INT64_FORMAT, 0.00 : 679b57: ba bf a9 8a 00 mov $0x8aa9bf,%edx 0.00 : 679b5c: be af 05 00 00 mov $0x5af,%esi : if (FileIsNotOpen(file)) : { : switch (whence) : { : case SEEK_SET: : if (offset < 0) 0.00 : 679b61: 0f 88 bd 00 00 00 js 679c24 : elog(ERROR, "invalid seek offset: " INT64_FORMAT, : (int64) offset); : VfdCache[file].seekPos = offset; 0.00 : 679b67: 4d 89 74 24 20 mov %r14,0x20(%r12) : break; 0.00 : 679b6c: eb 1a jmp 679b88 0.00 : 679b6e: 66 90 xchg %ax,%ax : if (VfdCache[file].seekPos != offset) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : case SEEK_CUR: : if (offset != 0 || VfdCache[file].seekPos == FileUnknownPos) 0.00 : 679b70: 48 85 f6 test %rsi,%rsi 0.00 : 679b73: 0f 85 7f 00 00 00 jne 679bf8 0.00 : 679b79: 49 83 7c 24 20 ff cmpq $0xffffffffffffffff,0x20(%r12) 0.00 : 679b7f: 90 nop 0.00 : 679b80: 74 76 je 679bf8 0.00 : 679b82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : default: : elog(ERROR, "invalid whence: %d", whence); : break; : } : } : return VfdCache[file].seekPos; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1499 6.55 : 679b88: 48 8b 05 09 36 50 00 mov 0x503609(%rip),%rax # b7d198 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1499 3.64 : 679b8f: 4a 8b 54 28 20 mov 0x20(%rax,%r13,1),%rdx : } /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 8.00 : 679b94: 48 89 d0 mov %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 1.09 : 679b97: 48 8b 1c 24 mov (%rsp),%rbx 0.73 : 679b9b: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 679ba0: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.45 : 679ba5: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 1.09 : 679baa: c9 leaveq 1.45 : 679bab: c3 retq 0.00 : 679bac: 0f 1f 40 00 nopl 0x0(%rax) : break; : case SEEK_CUR: : VfdCache[file].seekPos += offset; : break; : case SEEK_END: : returnCode = FileAccess(file); 0.00 : 679bb0: 89 c7 mov %eax,%edi 0.00 : 679bb2: e8 69 fd ff ff callq 679920 : if (returnCode < 0) 0.00 : 679bb7: 85 c0 test %eax,%eax : return returnCode; 0.00 : 679bb9: 48 63 d0 movslq %eax,%rdx : case SEEK_CUR: : VfdCache[file].seekPos += offset; : break; : case SEEK_END: : returnCode = FileAccess(file); : if (returnCode < 0) 0.00 : 679bbc: 78 d6 js 679b94 : return returnCode; : VfdCache[file].seekPos = lseek(VfdCache[file].fd, 0.00 : 679bbe: 4c 89 eb mov %r13,%rbx 0.00 : 679bc1: 48 03 1d d0 35 50 00 add 0x5035d0(%rip),%rbx # b7d198 0.00 : 679bc8: ba 02 00 00 00 mov $0x2,%edx 0.00 : 679bcd: 4c 89 f6 mov %r14,%rsi 0.00 : 679bd0: 8b 3b mov (%rbx),%edi 0.00 : 679bd2: e8 99 ff de ff callq 469b70 0.00 : 679bd7: 48 89 43 20 mov %rax,0x20(%rbx) : offset, whence); : break; 0.00 : 679bdb: eb ab jmp 679b88 0.00 : 679bdd: 0f 1f 00 nopl (%rax) : if (offset != 0 || VfdCache[file].seekPos == FileUnknownPos) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : case SEEK_END: : VfdCache[file].seekPos = lseek(VfdCache[file].fd, 0.00 : 679be0: ba 02 00 00 00 mov $0x2,%edx 0.00 : 679be5: e8 86 ff de ff callq 469b70 0.00 : 679bea: 49 89 44 24 20 mov %rax,0x20(%r12) 0.36 : 679bef: 90 nop : offset, whence); : break; 0.00 : 679bf0: eb 96 jmp 679b88 0.00 : 679bf2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : case SEEK_CUR: : if (offset != 0 || VfdCache[file].seekPos == FileUnknownPos) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, 0.00 : 679bf8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 679bfd: 4c 89 f6 mov %r14,%rsi 0.00 : 679c00: e8 6b ff de ff callq 469b70 0.00 : 679c05: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 679c0a: e9 79 ff ff ff jmpq 679b88 0.00 : 679c0f: 90 nop : elog(ERROR, "invalid seek offset: " INT64_FORMAT, : (int64) offset); : VfdCache[file].seekPos = offset; : break; : case SEEK_CUR: : VfdCache[file].seekPos += offset; 0.00 : 679c10: 49 01 74 24 20 add %rsi,0x20(%r12) : break; 0.00 : 679c15: e9 6e ff ff ff jmpq 679b88 : { : switch (whence) : { : case SEEK_SET: : if (offset < 0) : elog(ERROR, "invalid seek offset: " INT64_FORMAT, 0.00 : 679c1a: ba bf a9 8a 00 mov $0x8aa9bf,%edx 0.00 : 679c1f: be c8 05 00 00 mov $0x5c8,%esi 0.00 : 679c24: bf f1 a2 8a 00 mov $0x8aa2f1,%edi 0.00 : 679c29: e8 f2 17 10 00 callq 77b420 0.00 : 679c2e: 4c 89 f2 mov %r14,%rdx 0.00 : 679c31: be 21 a3 8a 00 mov $0x8aa321,%esi 0.00 : 679c36: bf 14 00 00 00 mov $0x14,%edi 0.00 : 679c3b: 31 c0 xor %eax,%eax 0.00 : 679c3d: e8 ee 15 10 00 callq 77b230 0.00 : 679c42: e8 89 f8 de ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.27 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 18.73 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 9.54 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 9.19 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:126 5.30 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 5.30 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:126 4.95 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 4.95 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:126 4.59 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:103 2.83 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 2.47 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 2.47 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:126 1.06 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2db0 : : * : * Check IsCatalogRelation() for details. : */ : bool : IsCatalogClass(Oid relid, Form_pg_class reltuple) : { 0.35 : 4e2db0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 18.73 : 4e2db1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 4.95 : 4e2db4: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 5.30 : 4e2db5: 89 fb mov %edi,%ebx /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:102 1.06 : 4e2db7: 48 83 ec 08 sub $0x8,%rsp : Oid relnamespace = reltuple->relnamespace; /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:103 4.59 : 4e2dbb: 8b 7e 40 mov 0x40(%rsi),%edi : : /* : * Never consider relations outside pg_catalog/pg_toast to be catalog : * relations. : */ : if (!IsSystemNamespace(relnamespace) && !IsToastNamespace(relnamespace)) /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 28.27 : 4e2dbe: 83 ff 0b cmp $0xb,%edi 0.00 : 4e2dc1: 74 0b je 4e2dce /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 2.47 : 4e2dc3: e8 98 ff ff ff callq 4e2d60 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 9.54 : 4e2dc8: 31 d2 xor %edx,%edx /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 2.83 : 4e2dca: 84 c0 test %al,%al 0.00 : 4e2dcc: 74 09 je 4e2dd7 : * property (c.f. GetNewObjectId()) and it has the advantage that it works : * correctly even if a user decides to create a relation in the pg_catalog : * namespace. : * ---- : */ : return relid < FirstNormalObjectId; 0.00 : 4e2dce: 81 fb ff 3f 00 00 cmp $0x3fff,%ebx 0.00 : 4e2dd4: 0f 96 c2 setbe %dl : } /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:126 5.30 : 4e2dd7: 48 83 c4 08 add $0x8,%rsp 0.00 : 4e2ddb: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:126 2.47 : 4e2ddd: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:126 14.13 : 4e2dde: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.46 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 26.82 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:827 5.96 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:818 5.30 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 4.64 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 4.30 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 2.98 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 2.32 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 2.32 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 2.32 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 1.99 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 1.99 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 1.32 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:827 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 0.66 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a50c0 : : */ : FmgrInfo * : index_getprocinfo(Relation irel, : AttrNumber attnum, : uint16 procnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 1.66 : 4a50c0: 55 push %rbp 4.64 : 4a50c1: 48 89 e5 mov %rsp,%rbp 0.33 : 4a50c4: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 5.30 : 4a50c8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 4a50cc: 49 89 fc mov %rdi,%r12 0.00 : 4a50cf: 4c 89 6d f0 mov %r13,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 2.32 : 4a50d3: 4c 89 75 f8 mov %r14,-0x8(%rbp) : : nproc = irel->rd_am->amsupport; : : Assert(procnum > 0 && procnum <= (uint16) nproc); : : procindex = (nproc * (attnum - 1)) + (procnum - 1); 0.00 : 4a50d7: 44 0f b7 ea movzwl %dx,%r13d : */ : FmgrInfo * : index_getprocinfo(Relation irel, : AttrNumber attnum, : uint16 procnum) : { 0.00 : 4a50db: 48 83 ec 20 sub $0x20,%rsp : : locinfo = irel->rd_supportinfo; : : Assert(locinfo != NULL); : : locinfo += procindex; 0.00 : 4a50df: 48 8b 97 b0 00 00 00 mov 0xb0(%rdi),%rdx : : nproc = irel->rd_am->amsupport; : : Assert(procnum > 0 && procnum <= (uint16) nproc); : : procindex = (nproc * (attnum - 1)) + (procnum - 1); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:818 5.96 : 4a50e6: 44 0f bf f6 movswl %si,%r14d : : locinfo = irel->rd_supportinfo; : : Assert(locinfo != NULL); : : locinfo += procindex; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 0.66 : 4a50ea: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 4a50ee: 0f bf 52 42 movswl 0x42(%rdx),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 31.46 : 4a50f2: 0f af c2 imul %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 4.30 : 4a50f5: 41 8d 44 05 ff lea -0x1(%r13,%rax,1),%eax 1.99 : 4a50fa: 48 63 d0 movslq %eax,%rdx 2.32 : 4a50fd: 48 8d 1c 52 lea (%rdx,%rdx,2),%rbx 1.66 : 4a5101: 48 c1 e3 04 shl $0x4,%rbx 1.32 : 4a5105: 48 03 9f e0 00 00 00 add 0xe0(%rdi),%rbx : : /* Initialize the lookup info if first time through */ : if (locinfo->fn_oid == InvalidOid) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:827 1.32 : 4a510c: 8b 43 08 mov 0x8(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:827 26.82 : 4a510f: 85 c0 test %eax,%eax 0.00 : 4a5111: 75 1e jne 4a5131 : RegProcedure *loc = irel->rd_support; : RegProcedure procId; : : Assert(loc != NULL); : : procId = loc[procindex]; 0.00 : 4a5113: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 4a511a: 8b 3c 90 mov (%rax,%rdx,4),%edi : * Complain if function was not found during IndexSupportInitialize. : * This should not happen unless the system tables contain bogus : * entries for the index opclass. (If an AM wants to allow a support : * function to be optional, it can use index_getprocid.) : */ : if (!RegProcedureIsValid(procId)) 0.00 : 4a511d: 85 ff test %edi,%edi 0.00 : 4a511f: 74 28 je 4a5149 : elog(ERROR, "missing support function %d for attribute %d of index \"%s\"", : procnum, attnum, RelationGetRelationName(irel)); : : fmgr_info_cxt(procId, locinfo, irel->rd_indexcxt); 0.00 : 4a5121: 49 8b 94 24 b8 00 00 mov 0xb8(%r12),%rdx 0.00 : 4a5128: 00 0.00 : 4a5129: 48 89 de mov %rbx,%rsi 0.00 : 4a512c: e8 1f af 2d 00 callq 780050 : } : : return locinfo; : } /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 2.32 : 4a5131: 48 89 d8 mov %rbx,%rax 0.66 : 4a5134: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 4a5139: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4a513d: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.99 : 4a5142: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 4a5147: c9 leaveq 2.98 : 4a5148: c3 retq : * This should not happen unless the system tables contain bogus : * entries for the index opclass. (If an AM wants to allow a support : * function to be optional, it can use index_getprocid.) : */ : if (!RegProcedureIsValid(procId)) : elog(ERROR, "missing support function %d for attribute %d of index \"%s\"", 0.00 : 4a5149: ba e0 3b 7b 00 mov $0x7b3be0,%edx 0.00 : 4a514e: be 4c 03 00 00 mov $0x34c,%esi 0.00 : 4a5153: bf 33 3b 7b 00 mov $0x7b3b33,%edi 0.00 : 4a5158: e8 c3 62 2d 00 callq 77b420 0.00 : 4a515d: 4d 8b 44 24 30 mov 0x30(%r12),%r8 0.00 : 4a5162: 44 89 f1 mov %r14d,%ecx 0.00 : 4a5165: 44 89 ea mov %r13d,%edx 0.00 : 4a5168: be c8 19 7b 00 mov $0x7b19c8,%esi 0.00 : 4a516d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a5172: 31 c0 xor %eax,%eax 0.00 : 4a5174: e8 b7 60 2d 00 callq 77b230 0.00 : 4a5179: e8 52 43 fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 67.30 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2988 11.03 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2992 10.65 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2989 6.84 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2989 1.52 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2988 1.52 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2992 1.14 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2989 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ec980 : : * namespace? : */ : bool : isTempToastNamespace(Oid namespaceId) : { : if (OidIsValid(myTempToastNamespace) && myTempToastNamespace == namespaceId) /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2989 10.65 : 4ec980: 8b 15 4a cd 68 00 mov 0x68cd4a(%rip),%edx # b796d0 : * isTempToastNamespace - is the given namespace my temporary-toast-table : * namespace? : */ : bool : isTempToastNamespace(Oid namespaceId) : { /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2988 67.30 : 4ec986: 55 push %rbp : if (OidIsValid(myTempToastNamespace) && myTempToastNamespace == namespaceId) /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2989 1.14 : 4ec987: 31 c0 xor %eax,%eax : * isTempToastNamespace - is the given namespace my temporary-toast-table : * namespace? : */ : bool : isTempToastNamespace(Oid namespaceId) : { /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2988 1.52 : 4ec989: 48 89 e5 mov %rsp,%rbp : if (OidIsValid(myTempToastNamespace) && myTempToastNamespace == namespaceId) /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2989 6.84 : 4ec98c: 85 d2 test %edx,%edx 0.00 : 4ec98e: 74 05 je 4ec995 0.00 : 4ec990: 39 fa cmp %edi,%edx 0.00 : 4ec992: 0f 94 c0 sete %al : return true; : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2992 12.55 : 4ec995: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1012 9.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:992 8.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1007 7.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:986 7.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1012 7.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1007 7.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1007 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:986 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1005 5.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:999 5.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1012 4.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:986 3.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:986 3.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1005 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1012 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1005 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1007 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d2f20 : : /* : * float8{eq,ne,lt,le,gt,ge} - float8/float8 comparison operations : */ : static int : float8_cmp_internal(float8 a, float8 b) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:986 3.52 : 6d2f20: 55 push %rbp 4.30 : 6d2f21: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:986 7.81 : 6d2f24: 48 83 ec 10 sub $0x10,%rsp 0.00 : 6d2f28: f2 0f 11 45 f8 movsd %xmm0,-0x8(%rbp) 6.25 : 6d2f2d: f2 0f 11 4d f0 movsd %xmm1,-0x10(%rbp) : /* : * We consider all NANs to be equal and larger than any non-NAN. This is : * somewhat arbitrary; the important thing is to have a consistent sort : * order. : */ : if (isnan(a)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:992 9.38 : 6d2f32: e8 e9 69 d9 ff callq 469920 <__isnan@plt> 0.00 : 6d2f37: 85 c0 test %eax,%eax 0.00 : 6d2f39: 74 15 je 6d2f50 : { : if (isnan(b)) 0.00 : 6d2f3b: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 0.00 : 6d2f40: e8 db 69 d9 ff callq 469920 <__isnan@plt> 0.00 : 6d2f45: 85 c0 test %eax,%eax 0.00 : 6d2f47: 0f 94 c0 sete %al 0.00 : 6d2f4a: 0f b6 c0 movzbl %al,%eax : else if (a < b) : return -1; : else : return 0; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1012 7.81 : 6d2f4d: c9 leaveq 11.72 : 6d2f4e: c3 retq 0.00 : 6d2f4f: 90 nop : if (isnan(b)) : return 0; /* NAN = NAN */ : else : return 1; /* NAN > non-NAN */ : } : else if (isnan(b)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:999 5.86 : 6d2f50: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 0.00 : 6d2f55: e8 c6 69 d9 ff callq 469920 <__isnan@plt> 0.00 : 6d2f5a: 85 c0 test %eax,%eax 0.00 : 6d2f5c: 75 22 jne 6d2f80 : { : return -1; /* non-NAN < NAN */ : } : else : { : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1005 3.52 : 6d2f5e: f2 0f 10 45 f8 movsd -0x8(%rbp),%xmm0 1.56 : 6d2f63: b0 01 mov $0x1,%al 0.00 : 6d2f65: 66 0f 2e 45 f0 ucomisd -0x10(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1005 6.25 : 6d2f6a: 77 e1 ja 6d2f4d : return 1; : else if (a < b) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1007 8.20 : 6d2f6c: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 7.81 : 6d2f71: 30 c0 xor %al,%al 0.00 : 6d2f73: 66 0f 2e 45 f8 ucomisd -0x8(%rbp),%xmm0 7.42 : 6d2f78: 76 d3 jbe 6d2f4d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1007 1.17 : 6d2f7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6d2f80: b8 ff ff ff ff mov $0xffffffff,%eax : return -1; : else : return 0; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1012 7.42 : 6d2f85: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 41.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1604 21.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1604 5.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1581 5.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1607 4.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1581 4.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1581 3.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1612 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1608 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1596 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1597 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1612 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1612 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1601 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1602 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1604 0.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1595 0.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1604 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075e600 : : * need to be so careful. : */ : : Datum : texteq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1581 5.34 : 75e600: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1581 4.27 : 75e601: 48 89 e5 mov %rsp,%rbp 0.00 : 75e604: 4c 89 65 e8 mov %r12,-0x18(%rbp) 4.98 : 75e608: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.36 : 75e60c: 49 89 fc mov %rdi,%r12 0.00 : 75e60f: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 75e613: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 75e617: 48 83 ec 20 sub $0x20,%rsp : Datum arg1 = PG_GETARG_DATUM(0); 0.36 : 75e61b: 48 8b 5f 20 mov 0x20(%rdi),%rbx : Datum arg2 = PG_GETARG_DATUM(1); 0.00 : 75e61f: 4c 8b 6f 28 mov 0x28(%rdi),%r13 : * expense of strcoll() here, and just do bitwise comparison. In fact, we : * don't even have to do a bitwise comparison if we can show the lengths : * of the strings are unequal; which might save us from having to detoast : * one or both values. : */ : len1 = toast_raw_datum_size(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1595 0.71 : 75e623: 48 89 df mov %rbx,%rdi 0.00 : 75e626: e8 75 2e d4 ff callq 4a14a0 : len2 = toast_raw_datum_size(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1596 1.07 : 75e62b: 4c 89 ef mov %r13,%rdi : * expense of strcoll() here, and just do bitwise comparison. In fact, we : * don't even have to do a bitwise comparison if we can show the lengths : * of the strings are unequal; which might save us from having to detoast : * one or both values. : */ : len1 = toast_raw_datum_size(arg1); 0.00 : 75e62e: 49 89 c6 mov %rax,%r14 : len2 = toast_raw_datum_size(arg2); 0.36 : 75e631: e8 6a 2e d4 ff callq 4a14a0 : if (len1 != len2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1597 1.07 : 75e636: 31 d2 xor %edx,%edx 0.00 : 75e638: 49 39 c6 cmp %rax,%r14 0.00 : 75e63b: 74 1b je 75e658 : PG_FREE_IF_COPY(targ1, 0); : PG_FREE_IF_COPY(targ2, 1); : } : : PG_RETURN_BOOL(result); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1612 1.07 : 75e63d: 48 89 d0 mov %rdx,%rax 0.00 : 75e640: 48 8b 1c 24 mov (%rsp),%rbx 3.91 : 75e644: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 75e649: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.07 : 75e64e: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 75e653: c9 leaveq 0.36 : 75e654: c3 retq 0.00 : 75e655: 0f 1f 00 nopl (%rax) : len2 = toast_raw_datum_size(arg2); : if (len1 != len2) : result = false; : else : { : text *targ1 = DatumGetTextPP(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1601 1.07 : 75e658: 48 89 df mov %rbx,%rdi 0.00 : 75e65b: e8 80 06 02 00 callq 77ece0 : text *targ2 = DatumGetTextPP(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1602 1.07 : 75e660: 4c 89 ef mov %r13,%rdi : len2 = toast_raw_datum_size(arg2); : if (len1 != len2) : result = false; : else : { : text *targ1 = DatumGetTextPP(arg1); 0.00 : 75e663: 48 89 c3 mov %rax,%rbx : text *targ2 = DatumGetTextPP(arg2); 0.00 : 75e666: e8 75 06 02 00 callq 77ece0 0.00 : 75e66b: 49 89 c5 mov %rax,%r13 : : result = (memcmp(VARDATA_ANY(targ1), VARDATA_ANY(targ2), 0.00 : 75e66e: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 75e672: 48 8d 40 04 lea 0x4(%rax),%rax 0.00 : 75e676: 41 f6 45 00 01 testb $0x1,0x0(%r13) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1604 0.71 : 75e67b: 49 8d 4e fc lea -0x4(%r14),%rcx 0.00 : 75e67f: 48 8d 73 01 lea 0x1(%rbx),%rsi 0.00 : 75e683: 48 0f 44 f8 cmove %rax,%rdi 0.36 : 75e687: f6 03 01 testb $0x1,(%rbx) 0.00 : 75e68a: 48 8d 43 04 lea 0x4(%rbx),%rax 0.00 : 75e68e: 48 0f 44 f0 cmove %rax,%rsi 1.07 : 75e692: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1604 41.99 : 75e695: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 21.35 : 75e697: 41 0f 94 c6 sete %r14b : len1 - VARHDRSZ) == 0); : : PG_FREE_IF_COPY(targ1, 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1607 5.34 : 75e69b: 49 3b 5c 24 20 cmp 0x20(%r12),%rbx 0.00 : 75e6a0: 74 08 je 75e6aa 0.00 : 75e6a2: 48 89 df mov %rbx,%rdi 0.00 : 75e6a5: e8 d6 a4 03 00 callq 798b80 : PG_FREE_IF_COPY(targ2, 1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1608 1.78 : 75e6aa: 4d 3b 6c 24 28 cmp 0x28(%r12),%r13 0.00 : 75e6af: 74 08 je 75e6b9 0.00 : 75e6b1: 4c 89 ef mov %r13,%rdi 0.00 : 75e6b4: e8 c7 a4 03 00 callq 798b80 0.36 : 75e6b9: 4c 89 f2 mov %r14,%rdx 0.00 : 75e6bc: 83 e2 01 and $0x1,%edx 0.00 : 75e6bf: e9 79 ff ff ff jmpq 75e63d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.41 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:458 23.59 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:449 6.34 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 5.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:449 4.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 3.52 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:498 3.52 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:501 2.82 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:452 2.82 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:458 2.46 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:491 2.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 2.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:463 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 1.76 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:492 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:492 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:495 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:501 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:501 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:443 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:481 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:491 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:492 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:492 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004abb80 : : /* : * btrescan() -- rescan an index relation : */ : Datum : btrescan(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 1.76 : 4abb80: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 6.34 : 4abb81: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:441 1.41 : 4abb84: 48 89 5d e8 mov %rbx,-0x18(%rbp) 4.23 : 4abb88: 4c 89 65 f0 mov %r12,-0x10(%rbp) 1.76 : 4abb8c: 4c 89 6d f8 mov %r13,-0x8(%rbp) 2.11 : 4abb90: 48 83 ec 20 sub $0x20,%rsp : IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); 0.00 : 4abb94: 4c 8b 67 20 mov 0x20(%rdi),%r12 : ScanKey scankey = (ScanKey) PG_GETARG_POINTER(1); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:443 0.70 : 4abb98: 4c 8b 6f 28 mov 0x28(%rdi),%r13 : : /* remaining arguments are ignored */ : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4abb9c: 49 8b 5c 24 38 mov 0x38(%r12),%rbx : : /* we aren't holding any read locks, but gotta drop the pins */ : if (BTScanPosIsValid(so->currPos)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:449 5.28 : 4abba1: 8b 7b 54 mov 0x54(%rbx),%edi 23.59 : 4abba4: 85 ff test %edi,%edi 0.00 : 4abba6: 74 22 je 4abbca : { : /* Before leaving current page, deal with any killed items */ : if (so->numKilled > 0) 0.00 : 4abba8: 44 8b 5b 38 mov 0x38(%rbx),%r11d /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:452 2.82 : 4abbac: 45 85 db test %r11d,%r11d 0.00 : 4abbaf: 7e 0d jle 4abbbe : _bt_killitems(scan, false); 0.00 : 4abbb1: 4c 89 e7 mov %r12,%rdi 0.00 : 4abbb4: 31 f6 xor %esi,%esi 0.00 : 4abbb6: e8 c5 26 00 00 callq 4ae280 <_bt_killitems> 0.00 : 4abbbb: 8b 7b 54 mov 0x54(%rbx),%edi : ReleaseBuffer(so->currPos.buf); 0.35 : 4abbbe: e8 9d 92 1c 00 callq 674e60 : so->currPos.buf = InvalidBuffer; 0.00 : 4abbc3: c7 43 54 00 00 00 00 movl $0x0,0x54(%rbx) : } : : if (BTScanPosIsValid(so->markPos)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:458 2.82 : 4abbca: 8b bb 60 10 00 00 mov 0x1060(%rbx),%edi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:458 26.41 : 4abbd0: 85 ff test %edi,%edi 0.00 : 4abbd2: 75 64 jne 4abc38 : { : ReleaseBuffer(so->markPos.buf); : so->markPos.buf = InvalidBuffer; : } : so->markItemIndex = -1; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:463 2.11 : 4abbd4: c7 43 50 ff ff ff ff movl $0xffffffff,0x50(%rbx) : * currTuples array, a fetch of NAMEDATALEN bytes can at worst pull some : * data out of the markTuples array --- running off the end of memory for : * a SIGSEGV is not possible. Yeah, this is ugly as sin, but it beats : * adding special-case treatment for name_ops elsewhere. : */ : if (scan->xs_want_itup && so->currTuples == NULL) 0.00 : 4abbdb: 41 80 7c 24 30 00 cmpb $0x0,0x30(%r12) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:481 0.70 : 4abbe1: 74 07 je 4abbea 0.00 : 4abbe3: 48 83 7b 40 00 cmpq $0x0,0x40(%rbx) 0.00 : 4abbe8: 74 66 je 4abc50 : : /* : * Reset the scan keys. Note that keys ordering stuff moved to _bt_first. : * - vadim 05/05/97 : */ : if (scankey && scan->numberOfKeys > 0) 0.00 : 4abbea: 4d 85 ed test %r13,%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:491 2.46 : 4abbed: 0f 1f 00 nopl (%rax) 0.70 : 4abbf0: 74 21 je 4abc13 0.35 : 4abbf2: 41 8b 44 24 18 mov 0x18(%r12),%eax 0.00 : 4abbf7: 85 c0 test %eax,%eax 0.00 : 4abbf9: 7e 18 jle 4abc13 : memmove(scan->keyData, /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:492 1.41 : 4abbfb: 48 63 d0 movslq %eax,%rdx 1.06 : 4abbfe: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.70 : 4abc03: 4c 89 ee mov %r13,%rsi 0.00 : 4abc06: 48 8d 14 d2 lea (%rdx,%rdx,8),%rdx 0.70 : 4abc0a: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 4abc0e: e8 1d e0 fb ff callq 469c30 : scankey, : scan->numberOfKeys * sizeof(ScanKeyData)); : so->numberOfKeys = 0; /* until _bt_preprocess_keys sets it */ /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:495 1.06 : 4abc13: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : : /* If any keys are SK_SEARCHARRAY type, set up array-key info */ : _bt_preprocess_array_keys(scan); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:498 3.52 : 4abc1a: 4c 89 e7 mov %r12,%rdi 0.00 : 4abc1d: e8 2e 37 00 00 callq 4af350 <_bt_preprocess_array_keys> : : PG_RETURN_VOID(); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:501 1.06 : 4abc22: 31 c0 xor %eax,%eax 0.00 : 4abc24: 48 8b 5d e8 mov -0x18(%rbp),%rbx 3.52 : 4abc28: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 4abc2c: 4c 8b 6d f8 mov -0x8(%rbp),%r13 1.06 : 4abc30: c9 leaveq 0.00 : 4abc31: c3 retq 0.00 : 4abc32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : so->currPos.buf = InvalidBuffer; : } : : if (BTScanPosIsValid(so->markPos)) : { : ReleaseBuffer(so->markPos.buf); 0.00 : 4abc38: e8 23 92 1c 00 callq 674e60 : so->markPos.buf = InvalidBuffer; 0.00 : 4abc3d: c7 83 60 10 00 00 00 movl $0x0,0x1060(%rbx) 0.00 : 4abc44: 00 00 00 0.00 : 4abc47: eb 8b jmp 4abbd4 0.00 : 4abc49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * a SIGSEGV is not possible. Yeah, this is ugly as sin, but it beats : * adding special-case treatment for name_ops elsewhere. : */ : if (scan->xs_want_itup && so->currTuples == NULL) : { : so->currTuples = (char *) palloc(BLCKSZ * 2); 0.00 : 4abc50: bf 00 40 00 00 mov $0x4000,%edi 0.00 : 4abc55: e8 f6 d0 2e 00 callq 798d50 0.00 : 4abc5a: 48 89 43 40 mov %rax,0x40(%rbx) : so->markTuples = so->currTuples + BLCKSZ; 0.00 : 4abc5e: 48 05 00 20 00 00 add $0x2000,%rax 0.00 : 4abc64: 48 89 43 48 mov %rax,0x48(%rbx) 0.00 : 4abc68: eb 80 jmp 4abbea Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 68.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3270 3.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 2.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 2.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3268 2.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3288 2.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3298 2.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 2.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3268 1.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 1.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3304 1.34 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3288 1.34 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3304 0.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3296 0.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3304 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674440 : : * Returns TRUE if we successfully marked the buffer as I/O busy, : * FALSE if someone else already did the work. : */ : static bool : StartBufferIO(volatile BufferDesc *buf, bool forInput) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 3.57 : 674440: 55 push %rbp 1.79 : 674441: 48 89 e5 mov %rsp,%rbp 0.00 : 674444: 41 56 push %r14 2.68 : 674446: 41 89 f6 mov %esi,%r14d 0.00 : 674449: 41 55 push %r13 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 67444b: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 674451: 41 54 push %r12 2.23 : 674453: 4c 8d 67 20 lea 0x20(%rdi),%r12 0.00 : 674457: 53 push %rbx 0.00 : 674458: 48 89 fb mov %rdi,%rbx 0.00 : 67445b: eb 20 jmp 67447d 0.00 : 67445d: 0f 1f 00 nopl (%rax) : */ : LWLockAcquire(buf->io_in_progress_lock, LW_EXCLUSIVE); : : LockBufHdr(buf); : : if (!(buf->flags & BM_IO_IN_PROGRESS)) 0.00 : 674460: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674464: a8 08 test $0x8,%al 0.00 : 674466: 74 46 je 6744ae : * The only way BM_IO_IN_PROGRESS could be set when the io_in_progress : * lock isn't held is if the process doing the I/O is recovering from : * an error (see AbortBufferIO). If that's the case, we must wait for : * him to get unwedged. : */ : UnlockBufHdr(buf); 0.00 : 674468: c6 43 20 00 movb $0x0,0x20(%rbx) : LWLockRelease(buf->io_in_progress_lock); 0.00 : 67446c: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 674470: e8 2b af 01 00 callq 68f3a0 : WaitIO(buf); 0.00 : 674475: 48 89 df mov %rbx,%rdi 0.00 : 674478: e8 43 ff ff ff callq 6743c0 : { : /* : * Grab the io_in_progress lock so that other processes can wait for : * me to finish the I/O. : */ : LWLockAcquire(buf->io_in_progress_lock, LW_EXCLUSIVE); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3268 2.23 : 67447d: 48 8b 7b 30 mov 0x30(%rbx),%rdi 2.68 : 674481: 31 f6 xor %esi,%esi 0.00 : 674483: e8 68 b6 01 00 callq 68faf0 0.00 : 674488: 44 89 e8 mov %r13d,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 3.12 : 67448b: f0 41 86 04 24 lock xchg %al,(%r12) : : LockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3270 68.30 : 674490: 84 c0 test %al,%al 0.00 : 674492: 74 cc je 674460 0.00 : 674494: ba c6 0c 00 00 mov $0xcc6,%edx 0.00 : 674499: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67449e: 4c 89 e7 mov %r12,%rdi 0.00 : 6744a1: e8 9a bb 01 00 callq 690040 : : if (!(buf->flags & BM_IO_IN_PROGRESS)) 0.00 : 6744a6: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6744aa: a8 08 test $0x8,%al 0.00 : 6744ac: 75 ba jne 674468 : WaitIO(buf); : } : : /* Once we get here, there is definitely no I/O active on this buffer */ : : if (forInput ? (buf->flags & BM_VALID) : !(buf->flags & BM_DIRTY)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3288 1.34 : 6744ae: 45 84 f6 test %r14b,%r14b 0.00 : 6744b1: 74 3d je 6744f0 0.00 : 6744b3: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6744b7: d1 e8 shr %eax 0.00 : 6744b9: 83 e0 01 and $0x1,%eax 2.68 : 6744bc: 84 c0 test %al,%al 0.00 : 6744be: 75 3d jne 6744fd : UnlockBufHdr(buf); : LWLockRelease(buf->io_in_progress_lock); : return false; : } : : buf->flags |= BM_IO_IN_PROGRESS; 0.45 : 6744c0: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3296 0.89 : 6744c4: 83 c8 08 or $0x8,%eax 0.00 : 6744c7: 66 89 43 14 mov %ax,0x14(%rbx) : : UnlockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3298 2.68 : 6744cb: c6 43 20 00 movb $0x0,0x20(%rbx) : : InProgressBuf = buf; 0.00 : 6744cf: 48 89 1d 92 8b 50 00 mov %rbx,0x508b92(%rip) # b7d068 : IsForInput = forInput; 0.00 : 6744d6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6744db: 44 88 35 c3 8b 50 00 mov %r14b,0x508bc3(%rip) # b7d0a5 : : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3304 1.79 : 6744e2: 5b pop %rbx 0.45 : 6744e3: 41 5c pop %r12 0.00 : 6744e5: 41 5d pop %r13 0.00 : 6744e7: 41 5e pop %r14 1.34 : 6744e9: c9 leaveq 0.00 : 6744ea: c3 retq 0.00 : 6744eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : WaitIO(buf); : } : : /* Once we get here, there is definitely no I/O active on this buffer */ : : if (forInput ? (buf->flags & BM_VALID) : !(buf->flags & BM_DIRTY)) 0.00 : 6744f0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6744f4: f7 d0 not %eax 0.00 : 6744f6: 83 e0 01 and $0x1,%eax 0.00 : 6744f9: 84 c0 test %al,%al 0.00 : 6744fb: 74 c3 je 6744c0 : { : /* someone else already did the I/O */ : UnlockBufHdr(buf); 0.00 : 6744fd: c6 43 20 00 movb $0x0,0x20(%rbx) : LWLockRelease(buf->io_in_progress_lock); 0.00 : 674501: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 674505: e8 96 ae 01 00 callq 68f3a0 : : InProgressBuf = buf; : IsForInput = forInput; : : return true; : } 0.45 : 67450a: 5b pop %rbx 0.45 : 67450b: 41 5c pop %r12 0.00 : 67450d: 41 5d pop %r13 : : if (forInput ? (buf->flags & BM_VALID) : !(buf->flags & BM_DIRTY)) : { : /* someone else already did the I/O */ : UnlockBufHdr(buf); : LWLockRelease(buf->io_in_progress_lock); 0.00 : 67450f: 31 c0 xor %eax,%eax : : InProgressBuf = buf; : IsForInput = forInput; : : return true; : } 0.00 : 674511: 41 5e pop %r14 0.89 : 674513: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 53.05 ??:0 19.85 ??:0 14.12 ??:0 12.21 ??:0 0.76 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cd5c0 <__read>: ??:0 14.12 : cd5c0: 83 3d ed a0 2a 00 00 cmpl $0x0,0x2aa0ed(%rip) # 3776b4 <__libc_multiple_threads> 19.85 : cd5c7: 75 10 jne cd5d9 <__read_nocancel+0x10> : : 00000000000cd5c9 <__read_nocancel>: ??:0 0.76 : cd5c9: b8 00 00 00 00 mov $0x0,%eax 0.00 : cd5ce: 0f 05 syscall ??:0 53.05 : cd5d0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd5d6: 73 31 jae cd609 <__read_nocancel+0x40> 12.21 : cd5d8: c3 retq 0.00 : cd5d9: 48 83 ec 08 sub $0x8,%rsp 0.00 : cd5dd: e8 4e ac 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : cd5e2: 48 89 04 24 mov %rax,(%rsp) 0.00 : cd5e6: b8 00 00 00 00 mov $0x0,%eax 0.00 : cd5eb: 0f 05 syscall 0.00 : cd5ed: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : cd5f1: 48 89 c2 mov %rax,%rdx 0.00 : cd5f4: e8 97 ac 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : cd5f9: 48 89 d0 mov %rdx,%rax 0.00 : cd5fc: 48 83 c4 08 add $0x8,%rsp 0.00 : cd600: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd606: 73 01 jae cd609 <__read_nocancel+0x40> 0.00 : cd608: c3 retq 0.00 : cd609: 48 8b 0d 28 48 2a 00 mov 0x2a4828(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cd610: 31 d2 xor %edx,%edx 0.00 : cd612: 48 29 c2 sub %rax,%rdx 0.00 : cd615: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cd618: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cd61c: eb ea jmp cd608 <__read_nocancel+0x3f> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:76 11.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:112 11.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:85 10.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:112 10.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:90 9.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:82 8.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:98 6.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:96 3.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:112 2.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:82 2.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:76 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:106 1.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:76 1.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:99 1.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:112 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:96 0.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:82 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c4350 : : * arithmetic, but that is nearly all platforms these days, and doing check : * divides for those that don't seems way too expensive. : */ : int : ArrayGetNItems(int ndim, const int *dims) : { 0.36 : 6c4350: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:76 2.14 : 6c4351: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:76 12.86 : 6c4354: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:76 1.43 : 6c4355: 48 83 ec 08 sub $0x8,%rsp : int32 ret; : int i; : : #define MaxArraySize ((Size) (MaxAllocSize / sizeof(Datum))) : : if (ndim <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:82 9.29 : 6c4359: 85 ff test %edi,%edi 0.00 : 6c435b: 7e 43 jle 6c43a0 0.00 : 6c435d: 41 b8 01 00 00 00 mov $0x1,%r8d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:82 0.71 : 6c4363: 31 c9 xor %ecx,%ecx 2.86 : 6c4365: 0f 1f 00 nopl (%rax) : for (i = 0; i < ndim; i++) : { : int64 prod; : : /* A negative dimension implies that UB-LB overflowed ... */ : if (dims[i] < 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:90 10.36 : 6c4368: 8b 16 mov (%rsi),%edx 0.36 : 6c436a: 85 d2 test %edx,%edx 0.00 : 6c436c: 78 3f js 6c43ad : ereport(ERROR, : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : : prod = (int64) ret *(int64) dims[i]; 0.00 : 6c436e: 49 63 c0 movslq %r8d,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:96 1.07 : 6c4371: 48 63 d2 movslq %edx,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:96 6.43 : 6c4374: 48 0f af c2 imul %rdx,%rax : : ret = (int32) prod; : if ((int64) ret != prod) 0.36 : 6c4378: 48 63 d0 movslq %eax,%rdx : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : : prod = (int64) ret *(int64) dims[i]; : : ret = (int32) prod; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:98 8.93 : 6c437b: 41 89 c0 mov %eax,%r8d : if ((int64) ret != prod) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:99 1.43 : 6c437e: 48 39 c2 cmp %rax,%rdx 0.00 : 6c4381: 75 4f jne 6c43d2 : #define MaxArraySize ((Size) (MaxAllocSize / sizeof(Datum))) : : if (ndim <= 0) : return 0; : ret = 1; : for (i = 0; i < ndim; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:85 11.43 : 6c4383: 83 c1 01 add $0x1,%ecx 0.00 : 6c4386: 48 83 c6 04 add $0x4,%rsi 0.36 : 6c438a: 39 cf cmp %ecx,%edi 0.00 : 6c438c: 7f da jg 6c4368 : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : } : Assert(ret >= 0); : if ((Size) ret > MaxArraySize) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:106 1.79 : 6c438e: 81 fa ff ff ff 07 cmp $0x7ffffff,%edx 0.00 : 6c4394: 77 75 ja 6c440b : ereport(ERROR, : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : return (int) ret; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:112 10.71 : 6c4396: 48 83 c4 08 add $0x8,%rsp 0.00 : 6c439a: 44 89 c0 mov %r8d,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:112 3.93 : 6c439d: 5b pop %rbx 1.43 : 6c439e: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayutils.c:112 11.79 : 6c439f: c3 retq : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : } : Assert(ret >= 0); : if ((Size) ret > MaxArraySize) : ereport(ERROR, 0.00 : 6c43a0: 45 31 c0 xor %r8d,%r8d : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : return (int) ret; : } 0.00 : 6c43a3: 48 83 c4 08 add $0x8,%rsp 0.00 : 6c43a7: 44 89 c0 mov %r8d,%eax 0.00 : 6c43aa: 5b pop %rbx 0.00 : 6c43ab: c9 leaveq 0.00 : 6c43ac: c3 retq : { : int64 prod; : : /* A negative dimension implies that UB-LB overflowed ... */ : if (dims[i] < 0) : ereport(ERROR, 0.00 : 6c43ad: 45 31 c0 xor %r8d,%r8d 0.00 : 6c43b0: b9 b7 8d 8b 00 mov $0x8b8db7,%ecx 0.00 : 6c43b5: ba 5e 00 00 00 mov $0x5e,%edx : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : } : Assert(ret >= 0); : if ((Size) ret > MaxArraySize) : ereport(ERROR, 0.00 : 6c43ba: be 0c 8d 8b 00 mov $0x8b8d0c,%esi 0.00 : 6c43bf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6c43c4: e8 f7 66 0b 00 callq 77aac0 0.00 : 6c43c9: 84 c0 test %al,%al 0.00 : 6c43cb: 75 14 jne 6c43e1 0.00 : 6c43cd: e8 fe 50 da ff callq 4694d0 : : prod = (int64) ret *(int64) dims[i]; : : ret = (int32) prod; : if ((int64) ret != prod) : ereport(ERROR, 0.00 : 6c43d2: 45 31 c0 xor %r8d,%r8d 0.00 : 6c43d5: b9 b7 8d 8b 00 mov $0x8b8db7,%ecx 0.00 : 6c43da: ba 67 00 00 00 mov $0x67,%edx 0.00 : 6c43df: eb d9 jmp 6c43ba : errmsg("array size exceeds the maximum allowed (%d)", : (int) MaxArraySize))); : } : Assert(ret >= 0); : if ((Size) ret > MaxArraySize) : ereport(ERROR, 0.00 : 6c43e1: be ff ff ff 07 mov $0x7ffffff,%esi 0.00 : 6c43e6: bf a0 82 8b 00 mov $0x8b82a0,%edi 0.00 : 6c43eb: 31 c0 xor %eax,%eax 0.00 : 6c43ed: e8 ae 84 0b 00 callq 77c8a0 0.00 : 6c43f2: bf 05 01 00 00 mov $0x105,%edi 0.00 : 6c43f7: 89 c3 mov %eax,%ebx 0.00 : 6c43f9: e8 52 89 0b 00 callq 77cd50 0.00 : 6c43fe: 89 de mov %ebx,%esi 0.00 : 6c4400: 89 c7 mov %eax,%edi 0.00 : 6c4402: 31 c0 xor %eax,%eax 0.00 : 6c4404: e8 d7 61 0b 00 callq 77a5e0 0.00 : 6c4409: eb c2 jmp 6c43cd 0.00 : 6c440b: 45 31 c0 xor %r8d,%r8d 0.00 : 6c440e: b9 b7 8d 8b 00 mov $0x8b8db7,%ecx 0.00 : 6c4413: ba 6e 00 00 00 mov $0x6e,%edx 0.00 : 6c4418: eb a0 jmp 6c43ba Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:353 7.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 6.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 6.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:401 5.03 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:390 4.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 3.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 3.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:347 3.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:389 3.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 3.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 3.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:345 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:410 2.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:345 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:347 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:348 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:389 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 2.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 1.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 1.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:345 1.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:345 1.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:347 1.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:345 1.01 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:347 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:401 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:410 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:396 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:396 0.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b95d0 : : */ : static void : initialize_aggregates(AggState *aggstate, : AggStatePerAgg peragg, : AggStatePerGroup pergroup) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 6.53 : 5b95d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 4.52 : 5b95d1: 48 89 e5 mov %rsp,%rbp 1.51 : 5b95d4: 41 57 push %r15 2.01 : 5b95d6: 49 89 ff mov %rdi,%r15 0.00 : 5b95d9: 41 56 push %r14 0.50 : 5b95db: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 7.04 : 5b95dd: 41 54 push %r12 0.00 : 5b95df: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:342 2.01 : 5b95e0: 48 83 ec 28 sub $0x28,%rsp 3.52 : 5b95e4: 48 89 75 d0 mov %rsi,-0x30(%rbp) 0.50 : 5b95e8: 48 89 55 c8 mov %rdx,-0x38(%rbp) : int aggno; : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:345 2.51 : 5b95ec: 44 8b 8f 98 00 00 00 mov 0x98(%rdi),%r9d 1.01 : 5b95f3: 45 85 c9 test %r9d,%r9d 0.00 : 5b95f6: 0f 8e 7c 01 00 00 jle 5b9778 1.51 : 5b95fc: 45 31 f6 xor %r14d,%r14d 1.51 : 5b95ff: eb 3e jmp 5b963f 0.00 : 5b9601: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * : * Note that when the initial value is pass-by-ref, we must copy it : * (into the aggcontext) since we will pfree the transValue later. : */ : if (peraggstate->initValueIsNull) : pergroupstate->transValue = peraggstate->initValue; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:390 5.03 : 5b9608: 49 8b 84 24 c0 00 00 mov 0xc0(%r12),%rax 0.00 : 5b960f: 00 0.00 : 5b9610: 49 89 45 00 mov %rax,0x0(%r13) : pergroupstate->transValue = datumCopy(peraggstate->initValue, : peraggstate->transtypeByVal, : peraggstate->transtypeLen); : MemoryContextSwitchTo(oldContext); : } : pergroupstate->transValueIsNull = peraggstate->initValueIsNull; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:401 6.03 : 5b9614: 41 0f b6 84 24 c8 00 movzbl 0xc8(%r12),%eax 0.00 : 5b961b: 00 00 : AggStatePerAgg peragg, : AggStatePerGroup pergroup) : { : int aggno; : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) 0.00 : 5b961d: 41 83 c6 01 add $0x1,%r14d : pergroupstate->transValue = datumCopy(peraggstate->initValue, : peraggstate->transtypeByVal, : peraggstate->transtypeLen); : MemoryContextSwitchTo(oldContext); : } : pergroupstate->transValueIsNull = peraggstate->initValueIsNull; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:401 0.50 : 5b9621: 41 88 45 08 mov %al,0x8(%r13) : * pg_aggregate table then we will let the first non-NULL value : * returned from the outer procNode become the initial value. (This is : * useful for aggregates like max() and min().) The noTransValue flag : * signals that we still need to do this. : */ : pergroupstate->noTransValue = peraggstate->initValueIsNull; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:410 2.51 : 5b9625: 41 0f b6 84 24 c8 00 movzbl 0xc8(%r12),%eax 0.00 : 5b962c: 00 00 0.50 : 5b962e: 41 88 45 09 mov %al,0x9(%r13) : AggStatePerAgg peragg, : AggStatePerGroup pergroup) : { : int aggno; : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:345 2.01 : 5b9632: 45 39 b7 98 00 00 00 cmp %r14d,0x98(%r15) 0.00 : 5b9639: 0f 8e 39 01 00 00 jle 5b9778 : { : AggStatePerAgg peraggstate = &peragg[aggno]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:347 3.02 : 5b963f: 49 63 c6 movslq %r14d,%rax 2.01 : 5b9642: 4c 8b 65 d0 mov -0x30(%rbp),%r12 : AggStatePerGroup pergroupstate = &pergroup[aggno]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:348 2.01 : 5b9646: 4c 8b 6d c8 mov -0x38(%rbp),%r13 : { : int aggno; : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) : { : AggStatePerAgg peraggstate = &peragg[aggno]; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:347 1.01 : 5b964a: 48 69 d0 a8 04 00 00 imul $0x4a8,%rax,%rdx : AggStatePerGroup pergroupstate = &pergroup[aggno]; 0.00 : 5b9651: 48 c1 e0 04 shl $0x4,%rax 0.00 : 5b9655: 49 01 c5 add %rax,%r13 : { : int aggno; : : for (aggno = 0; aggno < aggstate->numaggs; aggno++) : { : AggStatePerAgg peraggstate = &peragg[aggno]; 1.51 : 5b9658: 49 01 d4 add %rdx,%r12 : AggStatePerGroup pergroupstate = &pergroup[aggno]; : : /* : * Start a fresh sort operation for each DISTINCT/ORDER BY aggregate. : */ : if (peraggstate->numSortCols > 0) 0.00 : 5b965b: 45 8b 84 24 8c 00 00 mov 0x8c(%r12),%r8d 0.00 : 5b9662: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:353 14.57 : 5b9663: 45 85 c0 test %r8d,%r8d 0.00 : 5b9666: 7e 6c jle 5b96d4 : { : /* : * In case of rescan, maybe there could be an uncompleted sort : * operation? Clean it up if so. : */ : if (peraggstate->sortstate) 0.00 : 5b9668: 49 8b bc 24 f8 00 00 mov 0xf8(%r12),%rdi 0.00 : 5b966f: 00 0.00 : 5b9670: 48 85 ff test %rdi,%rdi 0.00 : 5b9673: 74 05 je 5b967a : tuplesort_end(peraggstate->sortstate); 0.00 : 5b9675: e8 66 5b 1e 00 callq 79f1e0 : /* : * We use a plain Datum sorter when there's a single input column; : * otherwise sort the full tuple. (See comments for : * process_ordered_aggregate_single.) : */ : peraggstate->sortstate = 0.00 : 5b967a: 41 83 7c 24 14 01 cmpl $0x1,0x14(%r12) 0.00 : 5b9680: 0f 84 aa 00 00 00 je 5b9730 0.00 : 5b9686: 4d 8b 8c 24 b0 00 00 mov 0xb0(%r12),%r9 0.00 : 5b968d: 00 0.00 : 5b968e: 4d 8b 84 24 a8 00 00 mov 0xa8(%r12),%r8 0.00 : 5b9695: 00 0.00 : 5b9696: 49 8b 8c 24 a0 00 00 mov 0xa0(%r12),%rcx 0.00 : 5b969d: 00 0.00 : 5b969e: 49 8b 94 24 98 00 00 mov 0x98(%r12),%rdx 0.00 : 5b96a5: 00 0.00 : 5b96a6: 41 8b b4 24 8c 00 00 mov 0x8c(%r12),%esi 0.00 : 5b96ad: 00 0.00 : 5b96ae: 49 8b bc 24 d8 00 00 mov 0xd8(%r12),%rdi 0.00 : 5b96b5: 00 0.00 : 5b96b6: 8b 05 5c f4 5a 00 mov 0x5af45c(%rip),%eax # b68b18 0.00 : 5b96bc: c7 44 24 08 00 00 00 movl $0x0,0x8(%rsp) 0.00 : 5b96c3: 00 0.00 : 5b96c4: 89 04 24 mov %eax,(%rsp) 0.00 : 5b96c7: e8 24 60 1e 00 callq 79f6f0 0.00 : 5b96cc: 49 89 84 24 f8 00 00 mov %rax,0xf8(%r12) 0.00 : 5b96d3: 00 : * (Re)set transValue to the initial value. : * : * Note that when the initial value is pass-by-ref, we must copy it : * (into the aggcontext) since we will pfree the transValue later. : */ : if (peraggstate->initValueIsNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:389 3.02 : 5b96d4: 41 80 bc 24 c8 00 00 cmpb $0x0,0xc8(%r12) 0.00 : 5b96db: 00 00 2.01 : 5b96dd: 0f 85 25 ff ff ff jne 5b9608 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5b96e3: 49 8b 87 b8 00 00 00 mov 0xb8(%r15),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5b96ea: 48 8b 1d 6f 11 60 00 mov 0x60116f(%rip),%rbx # bba860 : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.50 : 5b96f1: 48 89 05 68 11 60 00 mov %rax,0x601168(%rip) # bba860 : else : { : MemoryContext oldContext; : : oldContext = MemoryContextSwitchTo(aggstate->aggcontext); : pergroupstate->transValue = datumCopy(peraggstate->initValue, 0.00 : 5b96f8: 41 0f bf 94 24 ce 00 movswl 0xce(%r12),%edx 0.00 : 5b96ff: 00 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:396 0.50 : 5b9701: 41 0f be b4 24 d2 00 movsbl 0xd2(%r12),%esi 0.00 : 5b9708: 00 00 0.50 : 5b970a: 49 8b bc 24 c0 00 00 mov 0xc0(%r12),%rdi 0.00 : 5b9711: 00 0.00 : 5b9712: e8 59 68 11 00 callq 6cff70 0.00 : 5b9717: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 5b971b: 48 89 1d 3e 11 60 00 mov %rbx,0x60113e(%rip) # bba860 0.00 : 5b9722: e9 ed fe ff ff jmpq 5b9614 0.00 : 5b9727: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b972e: 00 00 : /* : * We use a plain Datum sorter when there's a single input column; : * otherwise sort the full tuple. (See comments for : * process_ordered_aggregate_single.) : */ : peraggstate->sortstate = 0.00 : 5b9730: 49 8b 84 24 b0 00 00 mov 0xb0(%r12),%rax 0.00 : 5b9737: 00 0.00 : 5b9738: 49 8b 94 24 a8 00 00 mov 0xa8(%r12),%rdx 0.00 : 5b973f: 00 0.00 : 5b9740: 45 31 c9 xor %r9d,%r9d 0.00 : 5b9743: 49 8b b4 24 a0 00 00 mov 0xa0(%r12),%rsi 0.00 : 5b974a: 00 0.00 : 5b974b: 44 8b 05 c6 f3 5a 00 mov 0x5af3c6(%rip),%r8d # b68b18 0.00 : 5b9752: 0f be 08 movsbl (%rax),%ecx 0.00 : 5b9755: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 5b975c: 00 0.00 : 5b975d: 8b 12 mov (%rdx),%edx 0.00 : 5b975f: 8b 36 mov (%rsi),%esi 0.00 : 5b9761: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5b9765: 48 8b 00 mov (%rax),%rax 0.00 : 5b9768: 8b 78 44 mov 0x44(%rax),%edi 0.00 : 5b976b: e8 30 5d 1e 00 callq 79f4a0 0.00 : 5b9770: e9 57 ff ff ff jmpq 5b96cc 0.00 : 5b9775: 0f 1f 00 nopl (%rax) : * useful for aggregates like max() and min().) The noTransValue flag : * signals that we still need to do this. : */ : pergroupstate->noTransValue = peraggstate->initValueIsNull; : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 3.02 : 5b9778: 48 83 c4 28 add $0x28,%rsp 2.01 : 5b977c: 5b pop %rbx 3.02 : 5b977d: 41 5c pop %r12 2.01 : 5b977f: 41 5d pop %r13 2.01 : 5b9781: 41 5e pop %r14 0.50 : 5b9783: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:412 5.53 : 5b9785: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 15.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 12.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:687 8.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 6.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 6.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:675 6.48 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:686 6.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 4.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 3.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:686 1.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 1.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 1.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 1.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 0.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:675 0.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b3f50 : : * As above, the result must be treated as read-only. : * -------------------------------- : */ : MinimalTuple : ExecFetchSlotMinimalTuple(TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 6.88 : 5b3f50: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 3.64 : 5b3f51: 48 89 e5 mov %rsp,%rbp 1.62 : 5b3f54: 4c 89 65 f8 mov %r12,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 8.50 : 5b3f58: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:663 1.62 : 5b3f5c: 48 83 ec 10 sub $0x10,%rsp : Assert(!slot->tts_isempty); : : /* : * If we have a minimal physical tuple (local or not) then just return it. : */ : if (slot->tts_mintuple) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:675 0.81 : 5b3f60: 48 8b 47 38 mov 0x38(%rdi),%rax : * As above, the result must be treated as read-only. : * -------------------------------- : */ : MinimalTuple : ExecFetchSlotMinimalTuple(TupleTableSlot *slot) : { 0.00 : 5b3f64: 49 89 fc mov %rdi,%r12 : Assert(!slot->tts_isempty); : : /* : * If we have a minimal physical tuple (local or not) then just return it. : */ : if (slot->tts_mintuple) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:675 6.48 : 5b3f67: 48 85 c0 test %rax,%rax 0.00 : 5b3f6a: 74 14 je 5b3f80 : * in that at the moment, but if any materializes, we should change this : * function to force the slot into minimal-tuple-only state. : */ : : return slot->tts_mintuple; : } 0.00 : 5b3f6c: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 1.62 : 5b3f70: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 6.07 : 5b3f75: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 1.21 : 5b3f76: c3 retq 0.00 : 5b3f77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b3f7e: 00 00 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.81 : 5b3f80: 48 8b 1d d9 68 60 00 mov 0x6068d9(%rip),%rbx # bba860 : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.45 : 5b3f87: 48 8b 47 18 mov 0x18(%rdi),%rax 0.00 : 5b3f8b: 48 89 05 ce 68 60 00 mov %rax,0x6068ce(%rip) # bba860 : * We may be called in a context that is shorter-lived than the tuple : * slot, but we have to ensure that the materialized tuple will survive : * anyway. : */ : oldContext = MemoryContextSwitchTo(slot->tts_mcxt); : slot->tts_mintuple = ExecCopySlotMinimalTuple(slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:686 3.64 : 5b3f92: e8 69 ff ff ff callq 5b3f00 : slot->tts_shouldFreeMin = true; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:687 12.55 : 5b3f97: 41 c6 44 24 06 01 movb $0x1,0x6(%r12) : * We may be called in a context that is shorter-lived than the tuple : * slot, but we have to ensure that the materialized tuple will survive : * anyway. : */ : oldContext = MemoryContextSwitchTo(slot->tts_mcxt); : slot->tts_mintuple = ExecCopySlotMinimalTuple(slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:686 6.48 : 5b3f9d: 49 89 44 24 38 mov %rax,0x38(%r12) /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 17.41 : 5b3fa2: 48 89 1d b7 68 60 00 mov %rbx,0x6068b7(%rip) # bba860 : * attached to a virtual or non-local physical tuple. There seems no harm : * in that at the moment, but if any materializes, we should change this : * function to force the slot into minimal-tuple-only state. : */ : : return slot->tts_mintuple; 0.40 : 5b3fa9: 49 8b 44 24 38 mov 0x38(%r12),%rax : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:698 15.79 : 5b3fae: eb bc jmp 5b3f6c Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:536 15.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:567 13.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:530 8.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:532 7.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:532 7.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:524 6.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:524 6.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:524 6.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:567 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:524 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:532 3.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:567 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ecd0 : : * has already determined that the attnum refers to a system attribute. : * ---------------- : */ : Datum : heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:524 5.00 : 46ecd0: 55 push %rbp 7.00 : 46ecd1: 48 89 e5 mov %rsp,%rbp 6.00 : 46ecd4: 53 push %rbx 6.50 : 46ecd5: 89 f3 mov %esi,%ebx : Assert(tup); : : /* Currently, no sys attribute ever reads as NULL. */ : *isnull = false; : : switch (attnum) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:532 7.50 : 46ecd7: 8d 43 07 lea 0x7(%rbx),%eax : * has already determined that the attnum refers to a system attribute. : * ---------------- : */ : Datum : heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull) : { 0.00 : 46ecda: 48 83 ec 08 sub $0x8,%rsp : Datum result; : : Assert(tup); : : /* Currently, no sys attribute ever reads as NULL. */ : *isnull = false; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:530 13.00 : 46ecde: c6 01 00 movb $0x0,(%rcx) : : switch (attnum) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:532 8.00 : 46ece1: 83 f8 06 cmp $0x6,%eax 0.00 : 46ece4: 76 32 jbe 46ed18 : break; : case TableOidAttributeNumber: : result = ObjectIdGetDatum(tup->t_tableOid); : break; : default: : elog(ERROR, "invalid attnum: %d", attnum); 0.00 : 46ece6: ba 10 f7 7a 00 mov $0x7af710,%edx 0.00 : 46eceb: be 32 02 00 00 mov $0x232,%esi 0.00 : 46ecf0: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46ecf5: e8 26 c7 30 00 callq 77b420 0.00 : 46ecfa: 89 da mov %ebx,%edx 0.00 : 46ecfc: be 00 f6 7a 00 mov $0x7af600,%esi 0.00 : 46ed01: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46ed06: 31 c0 xor %eax,%eax 0.00 : 46ed08: e8 23 c5 30 00 callq 77b230 0.00 : 46ed0d: e8 be a7 ff ff callq 4694d0 0.00 : 46ed12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Assert(tup); : : /* Currently, no sys attribute ever reads as NULL. */ : *isnull = false; : : switch (attnum) 0.50 : 46ed18: 89 c0 mov %eax,%eax 5.00 : 46ed1a: ff 24 c5 50 f6 7a 00 jmpq *0x7af650(,%rax,8) 0.00 : 46ed21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : case SelfItemPointerAttributeNumber: : /* pass-by-reference datatype */ : result = PointerGetDatum(&(tup->t_self)); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:536 17.00 : 46ed28: 48 8d 47 04 lea 0x4(%rdi),%rax : elog(ERROR, "invalid attnum: %d", attnum); : result = 0; /* keep compiler quiet */ : break; : } : return result; : } 0.00 : 46ed2c: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:567 6.00 : 46ed30: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:567 3.00 : 46ed31: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:567 15.50 : 46ed32: c3 retq 0.00 : 46ed33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * inside the originating transaction? : */ : result = CommandIdGetDatum(HeapTupleHeaderGetRawCommandId(tup->t_data)); : break; : case TableOidAttributeNumber: : result = ObjectIdGetDatum(tup->t_tableOid); 0.00 : 46ed38: 8b 47 0c mov 0xc(%rdi),%eax : elog(ERROR, "invalid attnum: %d", attnum); : result = 0; /* keep compiler quiet */ : break; : } : return result; : } 0.00 : 46ed3b: 48 83 c4 08 add $0x8,%rsp 0.00 : 46ed3f: 5b pop %rbx 0.00 : 46ed40: c9 leaveq 0.00 : 46ed41: c3 retq 0.00 : 46ed42: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * cmin and cmax are now both aliases for the same field, which : * can in fact also be a combo command id. XXX perhaps we should : * return the "real" cmin or cmax if possible, that is if we are : * inside the originating transaction? : */ : result = CommandIdGetDatum(HeapTupleHeaderGetRawCommandId(tup->t_data)); 0.00 : 46ed48: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 46ed4c: 8b 40 08 mov 0x8(%rax),%eax : elog(ERROR, "invalid attnum: %d", attnum); : result = 0; /* keep compiler quiet */ : break; : } : return result; : } 0.00 : 46ed4f: 48 83 c4 08 add $0x8,%rsp 0.00 : 46ed53: 5b pop %rbx 0.00 : 46ed54: c9 leaveq 0.00 : 46ed55: c3 retq 0.00 : 46ed56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46ed5d: 00 00 00 : break; : case MinTransactionIdAttributeNumber: : result = TransactionIdGetDatum(HeapTupleHeaderGetRawXmin(tup->t_data)); : break; : case MaxTransactionIdAttributeNumber: : result = TransactionIdGetDatum(HeapTupleHeaderGetRawXmax(tup->t_data)); 0.00 : 46ed60: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 46ed64: 8b 40 04 mov 0x4(%rax),%eax : elog(ERROR, "invalid attnum: %d", attnum); : result = 0; /* keep compiler quiet */ : break; : } : return result; : } 0.00 : 46ed67: 48 83 c4 08 add $0x8,%rsp 0.00 : 46ed6b: 5b pop %rbx 0.00 : 46ed6c: c9 leaveq 0.00 : 46ed6d: c3 retq 0.00 : 46ed6e: 66 90 xchg %ax,%ax : break; : case ObjectIdAttributeNumber: : result = ObjectIdGetDatum(HeapTupleGetOid(tup)); : break; : case MinTransactionIdAttributeNumber: : result = TransactionIdGetDatum(HeapTupleHeaderGetRawXmin(tup->t_data)); 0.00 : 46ed70: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 46ed74: 8b 00 mov (%rax),%eax : elog(ERROR, "invalid attnum: %d", attnum); : result = 0; /* keep compiler quiet */ : break; : } : return result; : } 0.00 : 46ed76: 48 83 c4 08 add $0x8,%rsp 0.00 : 46ed7a: 5b pop %rbx 0.00 : 46ed7b: c9 leaveq 0.00 : 46ed7c: c3 retq 0.00 : 46ed7d: 0f 1f 00 nopl (%rax) : case SelfItemPointerAttributeNumber: : /* pass-by-reference datatype */ : result = PointerGetDatum(&(tup->t_self)); : break; : case ObjectIdAttributeNumber: : result = ObjectIdGetDatum(HeapTupleGetOid(tup)); 0.00 : 46ed80: 48 8b 57 10 mov 0x10(%rdi),%rdx : break; : case TableOidAttributeNumber: : result = ObjectIdGetDatum(tup->t_tableOid); : break; : default: : elog(ERROR, "invalid attnum: %d", attnum); 0.00 : 46ed84: 31 c0 xor %eax,%eax : case SelfItemPointerAttributeNumber: : /* pass-by-reference datatype */ : result = PointerGetDatum(&(tup->t_self)); : break; : case ObjectIdAttributeNumber: : result = ObjectIdGetDatum(HeapTupleGetOid(tup)); 0.00 : 46ed86: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 46ed8a: 74 a0 je 46ed2c 0.00 : 46ed8c: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 46ed90: 8b 44 02 fc mov -0x4(%rdx,%rax,1),%eax 0.00 : 46ed94: eb 96 jmp 46ed2c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:83 8.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:74 5.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:115 5.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:166 4.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:93 4.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:213 3.74 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:78 3.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:85 3.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:166 2.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:74 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:89 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:103 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:93 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:131 2.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:675 1.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:74 1.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:79 1.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:281 1.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:337 1.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:108 1.87 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:123 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:74 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:104 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:93 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:130 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:672 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:675 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:157 1.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:157 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:85 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:89 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:276 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:93 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:115 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:123 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:131 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:677 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:213 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:157 0.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:166 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c7470 : : static Datum : ExecSubPlan(SubPlanState *node, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:74 8.41 : 5c7470: 55 push %rbp 0.00 : 5c7471: 48 89 e5 mov %rsp,%rbp 0.00 : 5c7474: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:74 1.87 : 5c7476: 49 89 f7 mov %rsi,%r15 0.00 : 5c7479: 41 56 push %r14 0.00 : 5c747b: 41 55 push %r13 0.00 : 5c747d: 41 54 push %r12 1.40 : 5c747f: 53 push %rbx 0.00 : 5c7480: 48 81 ec 88 00 00 00 sub $0x88,%rsp : SubPlan *subplan = (SubPlan *) node->xprstate.expr; : : /* Set default values for result flags: non-null, not a set result */ : *isNull = false; : if (isDone) 0.00 : 5c7487: 48 85 c9 test %rcx,%rcx : static Datum : ExecSubPlan(SubPlanState *node, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { 2.80 : 5c748a: 48 89 bd 70 ff ff ff mov %rdi,-0x90(%rbp) 0.00 : 5c7491: 48 89 95 68 ff ff ff mov %rdx,-0x98(%rbp) : SubPlan *subplan = (SubPlan *) node->xprstate.expr; 0.00 : 5c7498: 48 8b 47 08 mov 0x8(%rdi),%rax : : /* Set default values for result flags: non-null, not a set result */ : *isNull = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:78 3.74 : 5c749c: c6 02 00 movb $0x0,(%rdx) : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:79 1.87 : 5c749f: 74 06 je 5c74a7 : *isDone = ExprSingleResult; 0.00 : 5c74a1: c7 01 00 00 00 00 movl $0x0,(%rcx) : : /* Sanity checks */ : if (subplan->subLinkType == CTE_SUBLINK) 0.00 : 5c74a7: 8b 50 04 mov 0x4(%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:83 8.88 : 5c74aa: 83 fa 07 cmp $0x7,%edx 0.00 : 5c74ad: 0f 84 3c 0a 00 00 je 5c7eef : elog(ERROR, "CTE subplans should not be executed via ExecSubPlan"); : if (subplan->setParam != NIL && subplan->subLinkType != MULTIEXPR_SUBLINK) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:85 3.27 : 5c74b3: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.93 : 5c74b8: 74 09 je 5c74c3 0.00 : 5c74ba: 83 fa 05 cmp $0x5,%edx 0.00 : 5c74bd: 0f 85 56 0a 00 00 jne 5c7f19 : elog(ERROR, "cannot set parent params from subquery"); : : /* Select appropriate evaluation strategy */ : if (subplan->useHashTable) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:89 2.34 : 5c74c3: 80 78 34 00 cmpb $0x0,0x34(%rax) 0.93 : 5c74c7: 0f 85 c3 03 00 00 jne 5c7890 : static Datum : ExecScanSubPlan(SubPlanState *node, : ExprContext *econtext, : bool *isNull) : { : SubPlan *subplan = (SubPlan *) node->xprstate.expr; 0.00 : 5c74cd: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi : PlanState *planstate = node->planstate; 0.00 : 5c74d4: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax : static Datum : ExecScanSubPlan(SubPlanState *node, : ExprContext *econtext, : bool *isNull) : { : SubPlan *subplan = (SubPlan *) node->xprstate.expr; 0.00 : 5c74db: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5c74df: 48 89 7d c0 mov %rdi,-0x40(%rbp) : PlanState *planstate = node->planstate; 0.00 : 5c74e3: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 5c74e7: 48 89 45 b8 mov %rax,-0x48(%rbp) : SubLinkType subLinkType = subplan->subLinkType; 0.00 : 5c74eb: 8b 57 04 mov 0x4(%rdi),%edx : * cycle. But in general resjunk tlist items appear after non-resjunk : * ones, so this should be safe.) Unlike ExecReScanSetParamPlan, we do : * *not* set bits in the parent plan node's chgParam, because we don't : * want to cause a rescan of the parent. : */ : if (subLinkType == MULTIEXPR_SUBLINK) 0.00 : 5c74ee: 83 fa 05 cmp $0x5,%edx : ExprContext *econtext, : bool *isNull) : { : SubPlan *subplan = (SubPlan *) node->xprstate.expr; : PlanState *planstate = node->planstate; : SubLinkType subLinkType = subplan->subLinkType; 0.00 : 5c74f1: 89 55 b4 mov %edx,-0x4c(%rbp) : * cycle. But in general resjunk tlist items appear after non-resjunk : * ones, so this should be safe.) Unlike ExecReScanSetParamPlan, we do : * *not* set bits in the parent plan node's chgParam, because we don't : * want to cause a rescan of the parent. : */ : if (subLinkType == MULTIEXPR_SUBLINK) 0.00 : 5c74f4: 0f 84 7b 04 00 00 je 5c7975 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5c74fa: 48 8b 05 5f 33 5f 00 mov 0x5f335f(%rip),%rax # bba860 : * calculation we have to do is done in the parent econtext, since the : * Param values don't need to have per-query lifetime.) : */ : Assert(list_length(subplan->parParam) == list_length(node->args)); : : forboth(l, subplan->parParam, pvar, node->args) 0.00 : 5c7501: 48 8b 55 c0 mov -0x40(%rbp),%rdx : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5c7505: 45 31 f6 xor %r14d,%r14d 0.00 : 5c7508: 48 89 45 a8 mov %rax,-0x58(%rbp) : : CurrentMemoryContext = context; 0.00 : 5c750c: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 5c7510: 48 89 05 49 33 5f 00 mov %rax,0x5f3349(%rip) # bba860 0.00 : 5c7517: 48 8b 42 40 mov 0x40(%rdx),%rax 0.00 : 5c751b: 48 85 c0 test %rax,%rax 0.00 : 5c751e: 74 04 je 5c7524 0.47 : 5c7520: 4c 8b 70 08 mov 0x8(%rax),%r14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:276 0.93 : 5c7524: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 5c752b: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 5c752f: 48 85 c0 test %rax,%rax 0.00 : 5c7532: 74 5a je 5c758e 0.00 : 5c7534: 4d 85 f6 test %r14,%r14 0.00 : 5c7537: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 5c753b: 74 51 je 5c758e 0.00 : 5c753d: 0f 1f 00 nopl (%rax) 0.00 : 5c7540: 4d 85 ed test %r13,%r13 0.00 : 5c7543: 74 49 je 5c758e : { : int paramid = lfirst_int(l); 0.00 : 5c7545: 45 8b 26 mov (%r14),%r12d : ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]); : : prm->value = ExecEvalExprSwitchContext((ExprState *) lfirst(pvar), /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:281 1.87 : 5c7548: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 5c754c: 31 c9 xor %ecx,%ecx 0.00 : 5c754e: 4c 89 fe mov %r15,%rsi : Assert(list_length(subplan->parParam) == list_length(node->args)); : : forboth(l, subplan->parParam, pvar, node->args) : { : int paramid = lfirst_int(l); : ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]); 0.00 : 5c7551: 49 63 dc movslq %r12d,%rbx 0.00 : 5c7554: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 5c7558: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 5c755c: 49 03 5f 30 add 0x30(%r15),%rbx : : prm->value = ExecEvalExprSwitchContext((ExprState *) lfirst(pvar), 0.00 : 5c7560: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.00 : 5c7564: e8 77 59 fe ff callq 5acee0 0.00 : 5c7569: 48 89 43 08 mov %rax,0x8(%rbx) : econtext, : &(prm->isnull), : NULL); : planstate->chgParam = bms_add_member(planstate->chgParam, paramid); 0.00 : 5c756d: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 5c7571: 44 89 e6 mov %r12d,%esi 0.00 : 5c7574: 48 8b 7b 50 mov 0x50(%rbx),%rdi 0.47 : 5c7578: e8 83 ba 01 00 callq 5e3000 0.47 : 5c757d: 48 89 43 50 mov %rax,0x50(%rbx) : * calculation we have to do is done in the parent econtext, since the : * Param values don't need to have per-query lifetime.) : */ : Assert(list_length(subplan->parParam) == list_length(node->args)); : : forboth(l, subplan->parParam, pvar, node->args) 0.00 : 5c7581: 4d 8b 76 08 mov 0x8(%r14),%r14 0.00 : 5c7585: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 5c7589: 4d 85 f6 test %r14,%r14 0.00 : 5c758c: 75 b2 jne 5c7540 : } : : /* : * Now that we've set up its parameters, we can reset the subplan. : */ : ExecReScan(planstate); 0.00 : 5c758e: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 5c7592: e8 09 0f fe ff callq 5a84a0 : * For ARRAY_SUBLINK we allow the subplan to produce any number of tuples, : * and form an array of the first column's values. Note in particular : * that we produce a zero-element array if no tuples are produced (this is : * a change from pre-8.3 behavior of returning NULL). : */ : result = BoolGetDatum(subLinkType == ALL_SUBLINK); 0.00 : 5c7597: 31 c0 xor %eax,%eax 0.00 : 5c7599: 83 7d b4 01 cmpl $0x1,-0x4c(%rbp) : *isNull = false; 0.00 : 5c759d: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi : * For ARRAY_SUBLINK we allow the subplan to produce any number of tuples, : * and form an array of the first column's values. Note in particular : * that we produce a zero-element array if no tuples are produced (this is : * a change from pre-8.3 behavior of returning NULL). : */ : result = BoolGetDatum(subLinkType == ALL_SUBLINK); 0.00 : 5c75a4: 0f 94 c0 sete %al 0.00 : 5c75a7: 48 89 45 a0 mov %rax,-0x60(%rbp) : *isNull = false; 0.00 : 5c75ab: c6 07 00 movb $0x0,(%rdi) : : for (slot = ExecProcNode(planstate); 0.00 : 5c75ae: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 5c75b2: e8 e9 4e fe ff callq 5ac4a0 : !TupIsNull(slot); 0.47 : 5c75b7: 48 85 c0 test %rax,%rax : * a change from pre-8.3 behavior of returning NULL). : */ : result = BoolGetDatum(subLinkType == ALL_SUBLINK); : *isNull = false; : : for (slot = ExecProcNode(planstate); 0.00 : 5c75ba: 49 89 c6 mov %rax,%r14 : !TupIsNull(slot); 0.00 : 5c75bd: 0f 84 1d 09 00 00 je 5c7ee0 0.00 : 5c75c3: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c75c7: 0f 85 13 09 00 00 jne 5c7ee0 : slot = ExecProcNode(planstate)) : { : TupleDesc tdesc = slot->tts_tupleDescriptor; 0.00 : 5c75cd: 48 8b 58 10 mov 0x10(%rax),%rbx : Datum rowresult; : bool rownull; : int col; : ListCell *plst; : : if (subLinkType == EXISTS_SUBLINK) 0.00 : 5c75d1: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 5c75d4: 85 c0 test %eax,%eax 0.00 : 5c75d6: 0f 84 67 09 00 00 je 5c7f43 0.00 : 5c75dc: 31 c0 xor %eax,%eax : found = true; : result = BoolGetDatum(true); : break; : } : : if (subLinkType == EXPR_SUBLINK) 0.00 : 5c75de: 83 7d b4 04 cmpl $0x4,-0x4c(%rbp) : Datum rowresult; : bool rownull; : int col; : ListCell *plst; : : if (subLinkType == EXISTS_SUBLINK) 0.00 : 5c75e2: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 5c75e9: 00 : found = true; : result = BoolGetDatum(true); : break; : } : : if (subLinkType == EXPR_SUBLINK) 0.00 : 5c75ea: 0f 84 d4 00 00 00 je 5c76c4 : result = heap_getattr(node->curTuple, 1, tdesc, isNull); : /* keep scanning subplan to make sure there's only one tuple */ : continue; : } : : if (subLinkType == ARRAY_SUBLINK) 0.00 : 5c75f0: 83 7d b4 06 cmpl $0x6,-0x4c(%rbp) 0.00 : 5c75f4: 0f 84 16 02 00 00 je 5c7810 : /* keep scanning subplan to collect all values */ : continue; : } : : /* cannot allow multiple input tuples for ROWCOMPARE sublink either */ : if (subLinkType == ROWCOMPARE_SUBLINK && found) 0.00 : 5c75fa: 83 7d b4 03 cmpl $0x3,-0x4c(%rbp) 0.00 : 5c75fe: 0f 84 9c 01 00 00 je 5c77a0 : * For ALL, ANY, and ROWCOMPARE sublinks, load up the Params : * representing the columns of the sub-select, and then evaluate the : * combining expression. : */ : col = 1; : foreach(plst, subplan->paramIds) 0.00 : 5c7604: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 5c7608: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 5c760c: 48 85 c0 test %rax,%rax 0.00 : 5c760f: 74 40 je 5c7651 0.00 : 5c7611: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5c7615: 4d 85 e4 test %r12,%r12 0.00 : 5c7618: 74 37 je 5c7651 0.00 : 5c761a: 41 bd 01 00 00 00 mov $0x1,%r13d : { : int paramid = lfirst_int(plst); : ParamExecData *prmdata; : : prmdata = &(econtext->ecxt_param_exec_vals[paramid]); 0.00 : 5c7620: 49 63 1c 24 movslq (%r12),%rbx : Assert(prmdata->execPlan == NULL); : prmdata->value = slot_getattr(slot, col, &(prmdata->isnull)); 0.00 : 5c7624: 44 89 ee mov %r13d,%esi 0.00 : 5c7627: 4c 89 f7 mov %r14,%rdi : col++; 0.00 : 5c762a: 41 83 c5 01 add $0x1,%r13d : foreach(plst, subplan->paramIds) : { : int paramid = lfirst_int(plst); : ParamExecData *prmdata; : : prmdata = &(econtext->ecxt_param_exec_vals[paramid]); 0.00 : 5c762e: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 5c7632: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 5c7636: 49 03 5f 30 add 0x30(%r15),%rbx : Assert(prmdata->execPlan == NULL); : prmdata->value = slot_getattr(slot, col, &(prmdata->isnull)); 0.00 : 5c763a: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.00 : 5c763e: e8 bd 7d ea ff callq 46f400 0.00 : 5c7643: 48 89 43 08 mov %rax,0x8(%rbx) : * For ALL, ANY, and ROWCOMPARE sublinks, load up the Params : * representing the columns of the sub-select, and then evaluate the : * combining expression. : */ : col = 1; : foreach(plst, subplan->paramIds) 0.00 : 5c7647: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5c764c: 4d 85 e4 test %r12,%r12 0.00 : 5c764f: 75 cf jne 5c7620 : Assert(prmdata->execPlan == NULL); : prmdata->value = slot_getattr(slot, col, &(prmdata->isnull)); : col++; : } : : rowresult = ExecEvalExprSwitchContext(node->testexpr, econtext, 0.00 : 5c7651: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 5c7658: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 5c765c: 31 c9 xor %ecx,%ecx 0.00 : 5c765e: 4c 89 fe mov %r15,%rsi 0.00 : 5c7661: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 5c7665: e8 76 58 fe ff callq 5acee0 : &rownull, NULL); : : if (subLinkType == ANY_SUBLINK) 0.00 : 5c766a: 83 7d b4 02 cmpl $0x2,-0x4c(%rbp) : Assert(prmdata->execPlan == NULL); : prmdata->value = slot_getattr(slot, col, &(prmdata->isnull)); : col++; : } : : rowresult = ExecEvalExprSwitchContext(node->testexpr, econtext, 0.00 : 5c766e: 48 89 c2 mov %rax,%rdx : &rownull, NULL); : : if (subLinkType == ANY_SUBLINK) 0.00 : 5c7671: 0f 84 09 01 00 00 je 5c7780 : result = BoolGetDatum(true); : *isNull = false; : break; /* needn't look at any more rows */ : } : } : else if (subLinkType == ALL_SUBLINK) 0.00 : 5c7677: 83 7d b4 01 cmpl $0x1,-0x4c(%rbp) 0.00 : 5c767b: 0f 84 6f 01 00 00 je 5c77f0 : } : else : { : /* must be ROWCOMPARE_SUBLINK */ : result = rowresult; : *isNull = rownull; 0.00 : 5c7681: 0f b6 45 d7 movzbl -0x29(%rbp),%eax 0.00 : 5c7685: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 5c768c: 88 01 mov %al,(%rcx) 0.00 : 5c768e: 48 89 55 a0 mov %rdx,-0x60(%rbp) : result = BoolGetDatum(subLinkType == ALL_SUBLINK); : *isNull = false; : : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); : slot = ExecProcNode(planstate)) 0.00 : 5c7692: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.47 : 5c7696: e8 05 4e fe ff callq 5ac4a0 : */ : result = BoolGetDatum(subLinkType == ALL_SUBLINK); : *isNull = false; : : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); 0.00 : 5c769b: 48 85 c0 test %rax,%rax : slot = ExecProcNode(planstate)) 0.00 : 5c769e: 49 89 c6 mov %rax,%r14 : */ : result = BoolGetDatum(subLinkType == ALL_SUBLINK); : *isNull = false; : : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); 0.00 : 5c76a1: 0f 84 58 03 00 00 je 5c79ff 0.00 : 5c76a7: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c76ab: 0f 85 4e 03 00 00 jne 5c79ff : found = true; : result = BoolGetDatum(true); : break; : } : : if (subLinkType == EXPR_SUBLINK) 0.00 : 5c76b1: 83 7d b4 04 cmpl $0x4,-0x4c(%rbp) : : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); : slot = ExecProcNode(planstate)) : { : TupleDesc tdesc = slot->tts_tupleDescriptor; 0.00 : 5c76b5: 49 8b 5e 10 mov 0x10(%r14),%rbx 0.00 : 5c76b9: b8 01 00 00 00 mov $0x1,%eax : found = true; : result = BoolGetDatum(true); : break; : } : : if (subLinkType == EXPR_SUBLINK) 0.00 : 5c76be: 0f 85 2c ff ff ff jne 5c75f0 : { : /* cannot allow multiple input tuples for EXPR sublink */ : if (found) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:337 1.87 : 5c76c4: 84 c0 test %al,%al 0.00 : 5c76c6: 0f 85 79 07 00 00 jne 5c7e45 : * copied tuple! Can't use the subplan's instance of the tuple : * since it won't still be valid after next ExecProcNode() call. : * node->curTuple keeps track of the copied tuple for eventual : * freeing. : */ : if (node->curTuple) 0.00 : 5c76cc: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 5c76d3: 48 8b 78 38 mov 0x38(%rax),%rdi 0.47 : 5c76d7: 48 85 ff test %rdi,%rdi 0.00 : 5c76da: 74 05 je 5c76e1 : heap_freetuple(node->curTuple); 0.00 : 5c76dc: e8 df 75 ea ff callq 46ecc0 : node->curTuple = ExecCopySlotTuple(slot); 0.00 : 5c76e1: 4c 89 f7 mov %r14,%rdi 0.00 : 5c76e4: e8 c7 c8 fe ff callq 5b3fb0 0.00 : 5c76e9: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.47 : 5c76f0: 48 89 42 38 mov %rax,0x38(%rdx) : : result = heap_getattr(node->curTuple, 1, tdesc, isNull); 0.00 : 5c76f4: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 5c76f8: 66 f7 40 12 ff 07 testw $0x7ff,0x12(%rax) 0.00 : 5c76fe: 0f 84 6c 01 00 00 je 5c7870 0.00 : 5c7704: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 5c770b: c6 07 00 movb $0x0,(%rdi) 0.00 : 5c770e: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 5c7715: 48 8b 78 38 mov 0x38(%rax),%rdi 0.00 : 5c7719: 48 8b 4f 10 mov 0x10(%rdi),%rcx 0.00 : 5c771d: f6 41 14 01 testb $0x1,0x14(%rcx) 0.00 : 5c7721: 0f 85 21 01 00 00 jne 5c7848 0.00 : 5c7727: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 5c772b: 48 8b 00 mov (%rax),%rax 0.00 : 5c772e: 8b 50 54 mov 0x54(%rax),%edx 0.00 : 5c7731: 85 d2 test %edx,%edx 0.00 : 5c7733: 0f 88 0f 02 00 00 js 5c7948 0.00 : 5c7739: 80 78 5c 00 cmpb $0x0,0x5c(%rax) 0.00 : 5c773d: 0f 84 1b 02 00 00 je 5c795e 0.00 : 5c7743: 0f b7 40 4c movzwl 0x4c(%rax),%eax 0.00 : 5c7747: 66 83 f8 08 cmp $0x8,%ax 0.00 : 5c774b: 0f 84 96 02 00 00 je 5c79e7 0.00 : 5c7751: 66 83 f8 04 cmp $0x4,%ax 0.00 : 5c7755: 0f 84 bb 06 00 00 je 5c7e16 0.00 : 5c775b: 66 83 f8 02 cmp $0x2,%ax 0.00 : 5c775f: 90 nop 0.00 : 5c7760: 0f 84 c7 06 00 00 je 5c7e2d 0.00 : 5c7766: 48 63 c2 movslq %edx,%rax 0.00 : 5c7769: 0f b6 51 16 movzbl 0x16(%rcx),%edx 0.00 : 5c776d: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 5c7771: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 5c7775: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c7779: e9 14 ff ff ff jmpq 5c7692 0.00 : 5c777e: 66 90 xchg %ax,%ax : &rownull, NULL); : : if (subLinkType == ANY_SUBLINK) : { : /* combine across rows per OR semantics */ : if (rownull) 0.00 : 5c7780: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 5c7784: 0f 84 6e 01 00 00 je 5c78f8 : *isNull = true; 0.00 : 5c778a: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5c7791: c6 02 01 movb $0x1,(%rdx) 0.00 : 5c7794: e9 f9 fe ff ff jmpq 5c7692 0.00 : 5c7799: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* keep scanning subplan to collect all values */ : continue; : } : : /* cannot allow multiple input tuples for ROWCOMPARE sublink either */ : if (subLinkType == ROWCOMPARE_SUBLINK && found) 0.00 : 5c77a0: 84 c0 test %al,%al 0.00 : 5c77a2: 0f 84 5c fe ff ff je 5c7604 : ereport(ERROR, 0.00 : 5c77a8: 45 31 c0 xor %r8d,%r8d 0.00 : 5c77ab: b9 a0 c6 88 00 mov $0x88c6a0,%ecx 0.00 : 5c77b0: ba 7b 01 00 00 mov $0x17b,%edx 0.00 : 5c77b5: be 01 c4 88 00 mov $0x88c401,%esi 0.00 : 5c77ba: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c77bf: e8 fc 32 1b 00 callq 77aac0 0.00 : 5c77c4: 84 c0 test %al,%al 0.00 : 5c77c6: 74 23 je 5c77eb 0.00 : 5c77c8: bf c8 c4 88 00 mov $0x88c4c8,%edi 0.00 : 5c77cd: 31 c0 xor %eax,%eax 0.00 : 5c77cf: e8 cc 50 1b 00 callq 77c8a0 0.00 : 5c77d4: bf 42 00 00 00 mov $0x42,%edi 0.00 : 5c77d9: 89 c3 mov %eax,%ebx 0.00 : 5c77db: e8 70 55 1b 00 callq 77cd50 0.00 : 5c77e0: 89 de mov %ebx,%esi 0.00 : 5c77e2: 89 c7 mov %eax,%edi 0.00 : 5c77e4: 31 c0 xor %eax,%eax 0.00 : 5c77e6: e8 f5 2d 1b 00 callq 77a5e0 0.00 : 5c77eb: e8 e0 1c ea ff callq 4694d0 : } : } : else if (subLinkType == ALL_SUBLINK) : { : /* combine across rows per AND semantics */ : if (rownull) 0.00 : 5c77f0: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 5c77f4: 0f 84 2e 01 00 00 je 5c7928 : *isNull = true; 0.00 : 5c77fa: 48 8b 9d 68 ff ff ff mov -0x98(%rbp),%rbx 0.00 : 5c7801: c6 03 01 movb $0x1,(%rbx) 0.00 : 5c7804: e9 89 fe ff ff jmpq 5c7692 0.00 : 5c7809: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : bool disnull; : : found = true; : /* stash away current value */ : Assert(subplan->firstColType == tdesc->attrs[0]->atttypid); : dvalue = slot_getattr(slot, 1, &disnull); 0.00 : 5c7810: 48 8d 55 d6 lea -0x2a(%rbp),%rdx 0.00 : 5c7814: be 01 00 00 00 mov $0x1,%esi 0.00 : 5c7819: 4c 89 f7 mov %r14,%rdi 0.00 : 5c781c: e8 df 7b ea ff callq 46f400 : astate = accumArrayResult(astate, dvalue, disnull, 0.00 : 5c7821: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 5c7825: 0f be 55 d6 movsbl -0x2a(%rbp),%edx : bool disnull; : : found = true; : /* stash away current value */ : Assert(subplan->firstColType == tdesc->attrs[0]->atttypid); : dvalue = slot_getattr(slot, 1, &disnull); 0.00 : 5c7829: 48 89 c6 mov %rax,%rsi : astate = accumArrayResult(astate, dvalue, disnull, 0.00 : 5c782c: 4c 8b 45 a8 mov -0x58(%rbp),%r8 0.00 : 5c7830: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 5c7834: 8b 4b 28 mov 0x28(%rbx),%ecx 0.00 : 5c7837: e8 54 48 0f 00 callq 6bc090 0.00 : 5c783c: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 5c7840: e9 4d fe ff ff jmpq 5c7692 0.00 : 5c7845: 0f 1f 00 nopl (%rax) : */ : if (node->curTuple) : heap_freetuple(node->curTuple); : node->curTuple = ExecCopySlotTuple(slot); : : result = heap_getattr(node->curTuple, 1, tdesc, isNull); 0.00 : 5c7848: f6 41 17 01 testb $0x1,0x17(%rcx) 0.00 : 5c784c: 0f 85 f6 00 00 00 jne 5c7948 0.00 : 5c7852: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5c7859: c6 02 01 movb $0x1,(%rdx) 0.00 : 5c785c: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7863: 00 0.00 : 5c7864: e9 29 fe ff ff jmpq 5c7692 0.00 : 5c7869: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5c7870: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 5c7877: c6 01 01 movb $0x1,(%rcx) 0.00 : 5c787a: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7881: 00 0.00 : 5c7882: e9 0b fe ff ff jmpq 5c7692 0.00 : 5c7887: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c788e: 00 00 : static Datum : ExecHashSubPlan(SubPlanState *node, : ExprContext *econtext, : bool *isNull) : { : SubPlan *subplan = (SubPlan *) node->xprstate.expr; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:103 2.34 : 5c7890: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax : PlanState *planstate = node->planstate; 0.00 : 5c7897: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx : static Datum : ExecHashSubPlan(SubPlanState *node, : ExprContext *econtext, : bool *isNull) : { : SubPlan *subplan = (SubPlan *) node->xprstate.expr; 0.00 : 5c789e: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5c78a2: 48 89 45 80 mov %rax,-0x80(%rbp) : PlanState *planstate = node->planstate; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:104 1.40 : 5c78a6: 48 8b 52 18 mov 0x18(%rdx),%rdx 0.00 : 5c78aa: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) : TupleTableSlot *slot; : : /* Shouldn't have any direct correlation Vars */ : if (subplan->parParam != NIL || node->args != NIL) 0.00 : 5c78b1: 48 83 78 40 00 cmpq $0x0,0x40(%rax) 0.47 : 5c78b6: 75 12 jne 5c78ca /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:108 1.87 : 5c78b8: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 5c78bf: 48 83 79 30 00 cmpq $0x0,0x30(%rcx) 0.00 : 5c78c4: 0f 84 8e 01 00 00 je 5c7a58 : elog(ERROR, "hashed subplan with direct correlation not supported"); 0.00 : 5c78ca: ba 90 c6 88 00 mov $0x88c690,%edx 0.00 : 5c78cf: be 6d 00 00 00 mov $0x6d,%esi 0.00 : 5c78d4: bf 01 c4 88 00 mov $0x88c401,%edi 0.00 : 5c78d9: e8 42 3b 1b 00 callq 77b420 0.00 : 5c78de: be 90 c4 88 00 mov $0x88c490,%esi 0.00 : 5c78e3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c78e8: 31 c0 xor %eax,%eax 0.00 : 5c78ea: e8 41 39 1b 00 callq 77b230 0.00 : 5c78ef: e8 dc 1b ea ff callq 4694d0 0.00 : 5c78f4: 0f 1f 40 00 nopl 0x0(%rax) : if (subLinkType == ANY_SUBLINK) : { : /* combine across rows per OR semantics */ : if (rownull) : *isNull = true; : else if (DatumGetBool(rowresult)) 0.00 : 5c78f8: 84 c0 test %al,%al 0.00 : 5c78fa: 0f 84 92 fd ff ff je 5c7692 : { : result = BoolGetDatum(true); : *isNull = false; 0.00 : 5c7900: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 5c7907: c6 01 00 movb $0x0,(%rcx) 0.00 : 5c790a: 48 c7 45 a0 01 00 00 movq $0x1,-0x60(%rbp) 0.00 : 5c7911: 00 0.00 : 5c7912: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5c7916: 48 89 15 43 2f 5f 00 mov %rdx,0x5f2f43(%rip) # bba860 0.00 : 5c791d: e9 af 00 00 00 jmpq 5c79d1 0.00 : 5c7922: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (subLinkType == ALL_SUBLINK) : { : /* combine across rows per AND semantics */ : if (rownull) : *isNull = true; : else if (!DatumGetBool(rowresult)) 0.00 : 5c7928: 84 c0 test %al,%al 0.00 : 5c792a: 0f 85 62 fd ff ff jne 5c7692 : { : result = BoolGetDatum(false); : *isNull = false; 0.00 : 5c7930: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 5c7937: c6 07 00 movb $0x0,(%rdi) 0.00 : 5c793a: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7941: 00 0.00 : 5c7942: eb ce jmp 5c7912 0.00 : 5c7944: 0f 1f 40 00 nopl 0x0(%rax) : */ : if (node->curTuple) : heap_freetuple(node->curTuple); : node->curTuple = ExecCopySlotTuple(slot); : : result = heap_getattr(node->curTuple, 1, tdesc, isNull); 0.00 : 5c7948: 48 89 da mov %rbx,%rdx 0.00 : 5c794b: be 01 00 00 00 mov $0x1,%esi 0.00 : 5c7950: e8 3b 80 ea ff callq 46f990 0.00 : 5c7955: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c7959: e9 34 fd ff ff jmpq 5c7692 0.00 : 5c795e: 48 63 c2 movslq %edx,%rax 0.00 : 5c7961: 0f b6 51 16 movzbl 0x16(%rcx),%edx 0.00 : 5c7965: 48 01 d0 add %rdx,%rax 0.00 : 5c7968: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 5c796c: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c7970: e9 1d fd ff ff jmpq 5c7692 : * *not* set bits in the parent plan node's chgParam, because we don't : * want to cause a rescan of the parent. : */ : if (subLinkType == MULTIEXPR_SUBLINK) : { : EState *estate = node->parent->state; 0.00 : 5c7975: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 5c797c: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 5c7980: 48 8b 70 10 mov 0x10(%rax),%rsi : : foreach(l, subplan->setParam) 0.00 : 5c7984: 48 8b 47 38 mov 0x38(%rdi),%rax 0.00 : 5c7988: 48 85 c0 test %rax,%rax 0.00 : 5c798b: 74 32 je 5c79bf 0.00 : 5c798d: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 5c7991: 48 85 c9 test %rcx,%rcx 0.00 : 5c7994: 74 29 je 5c79bf 0.00 : 5c7996: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5c799d: 00 00 00 : { : int paramid = lfirst_int(l); : ParamExecData *prm = &(estate->es_param_exec_vals[paramid]); : : prm->execPlan = node; 0.00 : 5c79a0: 48 63 01 movslq (%rcx),%rax 0.00 : 5c79a3: 48 8b 56 78 mov 0x78(%rsi),%rdx 0.00 : 5c79a7: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 5c79ae: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 5c79b2: 48 89 1c c2 mov %rbx,(%rdx,%rax,8) : */ : if (subLinkType == MULTIEXPR_SUBLINK) : { : EState *estate = node->parent->state; : : foreach(l, subplan->setParam) 0.00 : 5c79b6: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 5c79ba: 48 85 c9 test %rcx,%rcx 0.00 : 5c79bd: 75 e1 jne 5c79a0 : int paramid = lfirst_int(l); : ParamExecData *prm = &(estate->es_param_exec_vals[paramid]); : : prm->execPlan = node; : } : *isNull = true; 0.00 : 5c79bf: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 5c79c6: c6 07 01 movb $0x1,(%rdi) 0.00 : 5c79c9: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c79d0: 00 : /* Select appropriate evaluation strategy */ : if (subplan->useHashTable) : return ExecHashSubPlan(node, econtext, isNull); : else : return ExecScanSubPlan(node, econtext, isNull); : } 0.00 : 5c79d1: 48 8b 45 a0 mov -0x60(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:93 4.21 : 5c79d5: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.93 : 5c79dc: 5b pop %rbx 0.00 : 5c79dd: 41 5c pop %r12 1.40 : 5c79df: 41 5d pop %r13 0.00 : 5c79e1: 41 5e pop %r14 0.47 : 5c79e3: 41 5f pop %r15 0.00 : 5c79e5: c9 leaveq 2.34 : 5c79e6: c3 retq : */ : if (node->curTuple) : heap_freetuple(node->curTuple); : node->curTuple = ExecCopySlotTuple(slot); : : result = heap_getattr(node->curTuple, 1, tdesc, isNull); 0.00 : 5c79e7: 48 63 c2 movslq %edx,%rax 0.00 : 5c79ea: 0f b6 51 16 movzbl 0x16(%rcx),%edx 0.00 : 5c79ee: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 5c79f2: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 5c79f6: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c79fa: e9 93 fc ff ff jmpq 5c7692 : */ : result = BoolGetDatum(subLinkType == ALL_SUBLINK); : *isNull = false; : : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); 0.00 : 5c79ff: b8 01 00 00 00 mov $0x1,%eax : } : } : : MemoryContextSwitchTo(oldcontext); : : if (subLinkType == ARRAY_SUBLINK) 0.00 : 5c7a04: 83 7d b4 06 cmpl $0x6,-0x4c(%rbp) 0.00 : 5c7a08: 48 8b 5d a8 mov -0x58(%rbp),%rbx 0.00 : 5c7a0c: 48 89 1d 4d 2e 5f 00 mov %rbx,0x5f2e4d(%rip) # bba860 0.00 : 5c7a13: 75 1d jne 5c7a32 : { : /* We return the result in the caller's context */ : if (astate != NULL) 0.00 : 5c7a15: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp) 0.00 : 5c7a1a: 0f 84 37 04 00 00 je 5c7e57 : result = makeArrayResult(astate, oldcontext); 0.00 : 5c7a20: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 5c7a24: 48 89 de mov %rbx,%rsi 0.00 : 5c7a27: e8 24 46 0f 00 callq 6bc050 0.00 : 5c7a2c: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c7a30: eb 9f jmp 5c79d1 : else : result = PointerGetDatum(construct_empty_array(subplan->firstColType)); : } : else if (!found) 0.00 : 5c7a32: 84 c0 test %al,%al 0.00 : 5c7a34: 75 9b jne 5c79d1 : /* : * deal with empty subplan result. result/isNull were previously : * initialized correctly for all sublink types except EXPR and : * ROWCOMPARE; for those, return NULL. : */ : if (subLinkType == EXPR_SUBLINK || 0.00 : 5c7a36: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 5c7a39: 83 e8 03 sub $0x3,%eax 0.00 : 5c7a3c: 83 f8 01 cmp $0x1,%eax 0.00 : 5c7a3f: 77 90 ja 5c79d1 : subLinkType == ROWCOMPARE_SUBLINK) : { : result = (Datum) 0; : *isNull = true; 0.00 : 5c7a41: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5c7a48: c6 02 01 movb $0x1,(%rdx) 0.00 : 5c7a4b: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7a52: 00 0.00 : 5c7a53: e9 79 ff ff ff jmpq 5c79d1 : : /* : * If first time through or we need to rescan the subplan, build the hash : * table. : */ : if (node->hashtable == NULL || planstate->chgParam != NULL) 0.00 : 5c7a58: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:115 0.93 : 5c7a5f: 48 83 7b 58 00 cmpq $0x0,0x58(%rbx) 0.00 : 5c7a64: 74 12 je 5c7a78 0.00 : 5c7a66: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 5c7a6d: 48 83 7f 50 00 cmpq $0x0,0x50(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:115 5.14 : 5c7a72: 0f 84 3b 02 00 00 je 5c7cb3 : static void : buildSubPlanHash(SubPlanState *node, ExprContext *econtext) : { : SubPlan *subplan = (SubPlan *) node->xprstate.expr; : PlanState *planstate = node->planstate; : int ncols = list_length(subplan->paramIds); 0.00 : 5c7a78: 48 8b 55 80 mov -0x80(%rbp),%rdx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5c7a7c: 45 31 e4 xor %r12d,%r12d 0.00 : 5c7a7f: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 5c7a83: 48 85 c0 test %rax,%rax 0.00 : 5c7a86: 74 04 je 5c7a8c 0.00 : 5c7a88: 44 8b 60 04 mov 0x4(%rax),%r12d : ExprContext *innerecontext = node->innerecontext; 0.00 : 5c7a8c: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : * searches; see findPartialMatch.) : * : * If it's not necessary to distinguish FALSE and UNKNOWN, then we don't : * need to store subplan output rows that contain NULL. : */ : MemoryContextReset(node->hashtablecxt); 0.00 : 5c7a93: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx : buildSubPlanHash(SubPlanState *node, ExprContext *econtext) : { : SubPlan *subplan = (SubPlan *) node->xprstate.expr; : PlanState *planstate = node->planstate; : int ncols = list_length(subplan->paramIds); : ExprContext *innerecontext = node->innerecontext; 0.00 : 5c7a9a: 48 8b 89 80 00 00 00 mov 0x80(%rcx),%rcx 0.00 : 5c7aa1: 48 89 4d 90 mov %rcx,-0x70(%rbp) : * searches; see findPartialMatch.) : * : * If it's not necessary to distinguish FALSE and UNKNOWN, then we don't : * need to store subplan output rows that contain NULL. : */ : MemoryContextReset(node->hashtablecxt); 0.00 : 5c7aa5: 48 8b 7b 70 mov 0x70(%rbx),%rdi 0.00 : 5c7aa9: e8 02 0f 1d 00 callq 7989b0 : node->hashtable = NULL; 0.00 : 5c7aae: 48 c7 43 58 00 00 00 movq $0x0,0x58(%rbx) 0.00 : 5c7ab5: 00 : node->hashnulls = NULL; 0.00 : 5c7ab6: 48 c7 43 60 00 00 00 movq $0x0,0x60(%rbx) 0.00 : 5c7abd: 00 : node->havehashrows = false; 0.00 : 5c7abe: c6 43 68 00 movb $0x0,0x68(%rbx) : node->havenullrows = false; 0.00 : 5c7ac2: c6 43 69 00 movb $0x0,0x69(%rbx) : : nbuckets = (long) Min(planstate->plan->plan_rows, (double) LONG_MAX); 0.00 : 5c7ac6: 48 bb ff ff ff ff ff movabs $0x7fffffffffffffff,%rbx 0.00 : 5c7acd: ff ff 7f 0.00 : 5c7ad0: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 5c7ad7: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 5c7adb: f2 0f 10 40 18 movsd 0x18(%rax),%xmm0 0.00 : 5c7ae0: 66 0f 2e 05 40 a5 1e ucomisd 0x1ea540(%rip),%xmm0 # 7b2028 <__func__.15386+0x18> 0.00 : 5c7ae7: 00 0.00 : 5c7ae8: 73 13 jae 5c7afd 0.00 : 5c7aea: 7a 11 jp 5c7afd 0.00 : 5c7aec: f2 48 0f 2c d8 cvttsd2si %xmm0,%rbx : if (nbuckets < 1) 0.00 : 5c7af1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5c7af6: 48 85 db test %rbx,%rbx 0.00 : 5c7af9: 48 0f 4e d8 cmovle %rax,%rbx : nbuckets = 1; : : node->hashtable = BuildTupleHashTable(ncols, 0.00 : 5c7afd: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 5c7b04: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 5c7b0a: 49 89 d8 mov %rbx,%r8 0.00 : 5c7b0d: 48 8b 88 90 00 00 00 mov 0x90(%rax),%rcx 0.00 : 5c7b14: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 5c7b1b: 48 89 c7 mov %rax,%rdi 0.00 : 5c7b1e: 48 8b b0 88 00 00 00 mov 0x88(%rax),%rsi 0.00 : 5c7b25: 48 8b 40 78 mov 0x78(%rax),%rax 0.00 : 5c7b29: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 5c7b2e: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 5c7b32: 44 89 e7 mov %r12d,%edi 0.00 : 5c7b35: 48 89 04 24 mov %rax,(%rsp) 0.00 : 5c7b39: e8 a2 14 fe ff callq 5a8fe0 0.00 : 5c7b3e: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 5c7b45: 48 89 42 58 mov %rax,0x58(%rdx) : nbuckets, : sizeof(TupleHashEntryData), : node->hashtablecxt, : node->hashtempcxt); : : if (!subplan->unknownEqFalse) 0.00 : 5c7b49: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 5c7b4d: 80 79 35 00 cmpb $0x0,0x35(%rcx) 0.00 : 5c7b51: 0f 84 61 02 00 00 je 5c7db8 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5c7b57: 48 8b 3d 02 2d 5f 00 mov 0x5f2d02(%rip),%rdi # bba860 : : CurrentMemoryContext = context; 0.00 : 5c7b5e: 49 8b 47 20 mov 0x20(%r15),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5c7b62: 48 89 7d 88 mov %rdi,-0x78(%rbp) : oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_query_memory); : : /* : * Reset subplan to start. : */ : ExecReScan(planstate); 0.00 : 5c7b66: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi : : CurrentMemoryContext = context; 0.00 : 5c7b6d: 48 89 05 ec 2c 5f 00 mov %rax,0x5f2cec(%rip) # bba860 0.00 : 5c7b74: e8 27 09 fe ff callq 5a84a0 0.00 : 5c7b79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Scan the subplan and load the hash table(s). Note that when there are : * duplicate rows coming out of the sub-select, only one copy is stored. : */ : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); : slot = ExecProcNode(planstate)) 0.00 : 5c7b80: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 5c7b87: e8 14 49 fe ff callq 5ac4a0 : /* : * Scan the subplan and load the hash table(s). Note that when there are : * duplicate rows coming out of the sub-select, only one copy is stored. : */ : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); 0.00 : 5c7b8c: 48 85 c0 test %rax,%rax : slot = ExecProcNode(planstate)) 0.00 : 5c7b8f: 49 89 c6 mov %rax,%r14 : /* : * Scan the subplan and load the hash table(s). Note that when there are : * duplicate rows coming out of the sub-select, only one copy is stored. : */ : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); 0.00 : 5c7b92: 0f 84 fc 00 00 00 je 5c7c94 0.00 : 5c7b98: 41 80 7e 04 00 cmpb $0x0,0x4(%r14) 0.00 : 5c7b9d: 0f 85 f1 00 00 00 jne 5c7c94 : : /* : * Load up the Params representing the raw sub-select outputs, then : * form the projection tuple to store in the hashtable. : */ : foreach(plst, subplan->paramIds) 0.00 : 5c7ba3: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 5c7ba7: 48 8b 42 10 mov 0x10(%rdx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5c7bab: 48 85 c0 test %rax,%rax 0.00 : 5c7bae: 74 45 je 5c7bf5 0.00 : 5c7bb0: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5c7bb4: 4d 85 e4 test %r12,%r12 0.00 : 5c7bb7: 74 3c je 5c7bf5 0.00 : 5c7bb9: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 5c7bbf: 90 nop : { : int paramid = lfirst_int(plst); : ParamExecData *prmdata; : : prmdata = &(innerecontext->ecxt_param_exec_vals[paramid]); 0.00 : 5c7bc0: 49 63 1c 24 movslq (%r12),%rbx 0.00 : 5c7bc4: 48 8b 4d 90 mov -0x70(%rbp),%rcx : Assert(prmdata->execPlan == NULL); : prmdata->value = slot_getattr(slot, col, 0.00 : 5c7bc8: 44 89 ee mov %r13d,%esi 0.00 : 5c7bcb: 4c 89 f7 mov %r14,%rdi : &(prmdata->isnull)); : col++; 0.00 : 5c7bce: 41 83 c5 01 add $0x1,%r13d : foreach(plst, subplan->paramIds) : { : int paramid = lfirst_int(plst); : ParamExecData *prmdata; : : prmdata = &(innerecontext->ecxt_param_exec_vals[paramid]); 0.00 : 5c7bd2: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 5c7bd6: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 5c7bda: 48 03 59 30 add 0x30(%rcx),%rbx : Assert(prmdata->execPlan == NULL); : prmdata->value = slot_getattr(slot, col, 0.00 : 5c7bde: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.00 : 5c7be2: e8 19 78 ea ff callq 46f400 0.00 : 5c7be7: 48 89 43 08 mov %rax,0x8(%rbx) : : /* : * Load up the Params representing the raw sub-select outputs, then : * form the projection tuple to store in the hashtable. : */ : foreach(plst, subplan->paramIds) 0.00 : 5c7beb: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5c7bf0: 4d 85 e4 test %r12,%r12 0.00 : 5c7bf3: 75 cb jne 5c7bc0 : Assert(prmdata->execPlan == NULL); : prmdata->value = slot_getattr(slot, col, : &(prmdata->isnull)); : col++; : } : slot = ExecProject(node->projRight, NULL); 0.00 : 5c7bf5: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 5c7bfc: 31 f6 xor %esi,%esi 0.00 : 5c7bfe: 48 8b 7b 50 mov 0x50(%rbx),%rdi 0.00 : 5c7c02: e8 f9 53 fe ff callq 5ad000 0.00 : 5c7c07: 49 89 c4 mov %rax,%r12 : * use it on projected tuples. : */ : static bool : slotNoNulls(TupleTableSlot *slot) : { : int ncols = slot->tts_tupleDescriptor->natts; 0.00 : 5c7c0a: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 5c7c0e: 44 8b 28 mov (%rax),%r13d : int i; : : for (i = 1; i <= ncols; i++) 0.00 : 5c7c11: 45 85 ed test %r13d,%r13d 0.00 : 5c7c14: 7e 5a jle 5c7c70 0.00 : 5c7c16: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5c7c1b: eb 0b jmp 5c7c28 0.00 : 5c7c1d: 0f 1f 00 nopl (%rax) 0.00 : 5c7c20: 83 c3 01 add $0x1,%ebx 0.00 : 5c7c23: 41 39 dd cmp %ebx,%r13d 0.00 : 5c7c26: 7c 48 jl 5c7c70 : { : if (slot_attisnull(slot, i)) 0.00 : 5c7c28: 89 de mov %ebx,%esi 0.00 : 5c7c2a: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7c2d: e8 0e 72 ea ff callq 46ee40 0.00 : 5c7c32: 84 c0 test %al,%al 0.00 : 5c7c34: 74 ea je 5c7c20 : if (slotNoNulls(slot)) : { : (void) LookupTupleHashEntry(node->hashtable, slot, &isnew); : node->havehashrows = true; : } : else if (node->hashnulls) 0.00 : 5c7c36: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 5c7c3d: 48 8b 78 60 mov 0x60(%rax),%rdi 0.00 : 5c7c41: 48 85 ff test %rdi,%rdi 0.00 : 5c7c44: 74 17 je 5c7c5d : { : (void) LookupTupleHashEntry(node->hashnulls, slot, &isnew); 0.00 : 5c7c46: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 5c7c4a: 4c 89 e6 mov %r12,%rsi 0.00 : 5c7c4d: e8 1e 12 fe ff callq 5a8e70 : node->havenullrows = true; 0.00 : 5c7c52: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 5c7c59: c6 42 69 01 movb $0x1,0x69(%rdx) : : /* : * Reset innerecontext after each inner tuple to free any memory used : * during ExecProject. : */ : ResetExprContext(innerecontext); 0.00 : 5c7c5d: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 5c7c61: 48 8b 79 28 mov 0x28(%rcx),%rdi 0.00 : 5c7c65: e8 46 0d 1d 00 callq 7989b0 0.00 : 5c7c6a: e9 11 ff ff ff jmpq 5c7b80 0.00 : 5c7c6f: 90 nop : /* : * If result contains any nulls, store separately or not at all. : */ : if (slotNoNulls(slot)) : { : (void) LookupTupleHashEntry(node->hashtable, slot, &isnew); 0.00 : 5c7c70: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 5c7c77: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 5c7c7b: 4c 89 e6 mov %r12,%rsi 0.00 : 5c7c7e: 48 8b 79 58 mov 0x58(%rcx),%rdi 0.00 : 5c7c82: e8 e9 11 fe ff callq 5a8e70 : node->havehashrows = true; 0.00 : 5c7c87: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 5c7c8e: c6 43 68 01 movb $0x1,0x68(%rbx) 0.47 : 5c7c92: eb c9 jmp 5c7c5d : * main context, we'd better clear the tuple slot before there's any : * chance of a reset of the sub-query's context. Else we will have the : * potential for a double free attempt. (XXX possibly no longer needed, : * but can't hurt.) : */ : ExecClearTuple(node->projRight->pi_slot); 0.00 : 5c7c94: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 5c7c9b: 48 8b 43 50 mov 0x50(%rbx),%rax 0.00 : 5c7c9f: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 5c7ca3: e8 68 c4 fe ff callq 5b4110 0.00 : 5c7ca8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 5c7cac: 48 89 3d ad 2b 5f 00 mov %rdi,0x5f2bad(%rip) # bba860 : : /* : * The result for an empty subplan is always FALSE; no need to evaluate : * lefthand side. : */ : *isNull = false; 0.00 : 5c7cb3: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 5c7cba: c6 00 00 movb $0x0,(%rax) : if (!node->havehashrows && !node->havenullrows) 0.00 : 5c7cbd: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:123 1.87 : 5c7cc4: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7ccb: 00 0.93 : 5c7ccc: 66 83 7a 68 00 cmpw $0x0,0x68(%rdx) 0.00 : 5c7cd1: 0f 84 fa fc ff ff je 5c79d1 : : /* : * Evaluate lefthand expressions and form a projection tuple. First we : * have to set the econtext to use (hack alert!). : */ : node->projLeft->pi_exprContext = econtext; 0.00 : 5c7cd7: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : slot = ExecProject(node->projLeft, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:131 2.34 : 5c7cde: 31 f6 xor %esi,%esi : : /* : * Evaluate lefthand expressions and form a projection tuple. First we : * have to set the econtext to use (hack alert!). : */ : node->projLeft->pi_exprContext = econtext; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:130 1.40 : 5c7ce0: 48 8b 41 48 mov 0x48(%rcx),%rax 0.00 : 5c7ce4: 4c 89 78 10 mov %r15,0x10(%rax) : slot = ExecProject(node->projLeft, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:131 0.93 : 5c7ce8: 48 8b 79 48 mov 0x48(%rcx),%rdi 0.00 : 5c7cec: e8 0f 53 fe ff callq 5ad000 0.47 : 5c7cf1: 49 89 c4 mov %rax,%r12 : * use it on projected tuples. : */ : static bool : slotNoNulls(TupleTableSlot *slot) : { : int ncols = slot->tts_tupleDescriptor->natts; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:672 1.40 : 5c7cf4: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 5c7cf8: 44 8b 28 mov (%rax),%r13d : int i; : : for (i = 1; i <= ncols; i++) 0.00 : 5c7cfb: 45 85 ed test %r13d,%r13d 0.00 : 5c7cfe: 0f 8e 73 01 00 00 jle 5c7e77 0.47 : 5c7d04: bb 01 00 00 00 mov $0x1,%ebx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:675 2.34 : 5c7d09: eb 11 jmp 5c7d1c 0.00 : 5c7d0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 1.40 : 5c7d10: 83 c3 01 add $0x1,%ebx 0.00 : 5c7d13: 41 39 dd cmp %ebx,%r13d 0.00 : 5c7d16: 0f 8c 5b 01 00 00 jl 5c7e77 : { : if (slot_attisnull(slot, i)) 0.00 : 5c7d1c: 89 de mov %ebx,%esi 0.00 : 5c7d1e: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7d21: e8 1a 71 ea ff callq 46ee40 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:677 0.93 : 5c7d26: 84 c0 test %al,%al 0.00 : 5c7d28: 74 e6 je 5c7d10 : * were empty, but we already handled that case.) Otherwise, we must scan : * both the main and partly-null tables to see if there are any rows that : * aren't provably unequal to the LHS; if so, the result is UNKNOWN. : * Otherwise, the result is FALSE. : */ : if (node->hashnulls == NULL) 0.00 : 5c7d2a: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 5c7d31: 48 83 7b 60 00 cmpq $0x0,0x60(%rbx) 0.00 : 5c7d36: 74 6b je 5c7da3 : * use it on projected tuples. : */ : static bool : slotAllNulls(TupleTableSlot *slot) : { : int ncols = slot->tts_tupleDescriptor->natts; 0.00 : 5c7d38: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5c7d3d: 44 8b 28 mov (%rax),%r13d : int i; : : for (i = 1; i <= ncols; i++) 0.00 : 5c7d40: 45 85 ed test %r13d,%r13d 0.00 : 5c7d43: 0f 8e 07 02 00 00 jle 5c7f50 0.00 : 5c7d49: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5c7d4e: eb 0c jmp 5c7d5c 0.00 : 5c7d50: 83 c3 01 add $0x1,%ebx 0.00 : 5c7d53: 41 39 dd cmp %ebx,%r13d 0.00 : 5c7d56: 0f 8c f4 01 00 00 jl 5c7f50 : { : if (!slot_attisnull(slot, i)) 0.00 : 5c7d5c: 89 de mov %ebx,%esi 0.00 : 5c7d5e: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7d61: e8 da 70 ea ff callq 46ee40 0.00 : 5c7d66: 84 c0 test %al,%al 0.00 : 5c7d68: 75 e6 jne 5c7d50 : ExecClearTuple(slot); : *isNull = true; : return BoolGetDatum(false); : } : /* Scan partly-null table first, since more likely to get a match */ : if (node->havenullrows && 0.00 : 5c7d6a: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 5c7d71: 80 7f 69 00 cmpb $0x0,0x69(%rdi) 0.00 : 5c7d75: 0f 85 33 02 00 00 jne 5c7fae : { : ExecClearTuple(slot); : *isNull = true; : return BoolGetDatum(false); : } : if (node->havehashrows && 0.00 : 5c7d7b: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 5c7d82: 80 79 68 00 cmpb $0x0,0x68(%rcx) 0.00 : 5c7d86: 74 1b je 5c7da3 0.00 : 5c7d88: 48 8b 91 a8 00 00 00 mov 0xa8(%rcx),%rdx 0.00 : 5c7d8f: 48 8b 79 58 mov 0x58(%rcx),%rdi 0.00 : 5c7d93: 4c 89 e6 mov %r12,%rsi 0.00 : 5c7d96: e8 45 f6 ff ff callq 5c73e0 0.00 : 5c7d9b: 84 c0 test %al,%al 0.00 : 5c7d9d: 0f 85 14 01 00 00 jne 5c7eb7 : { : ExecClearTuple(slot); : *isNull = true; : return BoolGetDatum(false); : } : ExecClearTuple(slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:213 0.93 : 5c7da3: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7da6: e8 65 c3 fe ff callq 5b4110 0.47 : 5c7dab: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7db2: 00 4.21 : 5c7db3: e9 19 fc ff ff jmpq 5c79d1 : node->hashtablecxt, : node->hashtempcxt); : : if (!subplan->unknownEqFalse) : { : if (ncols == 1) 0.00 : 5c7db8: 41 83 fc 01 cmp $0x1,%r12d 0.00 : 5c7dbc: 0f 84 aa 00 00 00 je 5c7e6c : nbuckets = 1; /* there can only be one entry */ : else : { : nbuckets /= 16; 0.00 : 5c7dc2: 49 89 d8 mov %rbx,%r8 0.00 : 5c7dc5: 49 c1 f8 04 sar $0x4,%r8 : if (nbuckets < 1) 0.00 : 5c7dc9: 4d 85 c0 test %r8,%r8 0.00 : 5c7dcc: 0f 84 9a 00 00 00 je 5c7e6c : nbuckets = 1; : } : node->hashnulls = BuildTupleHashTable(ncols, 0.00 : 5c7dd2: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 5c7dd9: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 5c7ddf: 44 89 e7 mov %r12d,%edi 0.00 : 5c7de2: 48 8b 43 78 mov 0x78(%rbx),%rax 0.00 : 5c7de6: 48 8b 8b 90 00 00 00 mov 0x90(%rbx),%rcx 0.00 : 5c7ded: 48 8b 93 98 00 00 00 mov 0x98(%rbx),%rdx 0.00 : 5c7df4: 48 8b b3 88 00 00 00 mov 0x88(%rbx),%rsi 0.00 : 5c7dfb: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 5c7e00: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 5c7e04: 48 89 04 24 mov %rax,(%rsp) 0.00 : 5c7e08: e8 d3 11 fe ff callq 5a8fe0 0.00 : 5c7e0d: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 5c7e11: e9 41 fd ff ff jmpq 5c7b57 : */ : if (node->curTuple) : heap_freetuple(node->curTuple); : node->curTuple = ExecCopySlotTuple(slot); : : result = heap_getattr(node->curTuple, 1, tdesc, isNull); 0.00 : 5c7e16: 48 63 c2 movslq %edx,%rax 0.00 : 5c7e19: 0f b6 51 16 movzbl 0x16(%rcx),%edx 0.00 : 5c7e1d: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 5c7e21: 8b 04 10 mov (%rax,%rdx,1),%eax 0.00 : 5c7e24: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c7e28: e9 65 f8 ff ff jmpq 5c7692 0.00 : 5c7e2d: 48 63 c2 movslq %edx,%rax 0.00 : 5c7e30: 0f b6 51 16 movzbl 0x16(%rcx),%edx 0.00 : 5c7e34: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 5c7e38: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax 0.00 : 5c7e3c: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c7e40: e9 4d f8 ff ff jmpq 5c7692 : : if (subLinkType == EXPR_SUBLINK) : { : /* cannot allow multiple input tuples for EXPR sublink */ : if (found) : ereport(ERROR, 0.00 : 5c7e45: 45 31 c0 xor %r8d,%r8d 0.00 : 5c7e48: b9 a0 c6 88 00 mov $0x88c6a0,%ecx 0.00 : 5c7e4d: ba 54 01 00 00 mov $0x154,%edx 0.00 : 5c7e52: e9 5e f9 ff ff jmpq 5c77b5 : { : /* We return the result in the caller's context */ : if (astate != NULL) : result = makeArrayResult(astate, oldcontext); : else : result = PointerGetDatum(construct_empty_array(subplan->firstColType)); 0.00 : 5c7e57: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 5c7e5b: 8b 78 28 mov 0x28(%rax),%edi 0.00 : 5c7e5e: e8 4d 17 0f 00 callq 6b95b0 0.00 : 5c7e63: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 5c7e67: e9 65 fb ff ff jmpq 5c79d1 : if (ncols == 1) : nbuckets = 1; /* there can only be one entry */ : else : { : nbuckets /= 16; : if (nbuckets < 1) 0.00 : 5c7e6c: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 5c7e72: e9 5b ff ff ff jmpq 5c7dd2 : * LHS to some main-table entry --- which is a comparison we will not even : * make, unless there's a chance match of hash keys. : */ : if (slotNoNulls(slot)) : { : if (node->havehashrows && /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:157 0.93 : 5c7e77: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 5c7e7e: 80 7f 68 00 cmpb $0x0,0x68(%rdi) 0.00 : 5c7e82: 0f 85 e7 00 00 00 jne 5c7f6f : node->lhs_hash_funcs) != NULL) : { : ExecClearTuple(slot); : return BoolGetDatum(true); : } : if (node->havenullrows && /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:166 3.27 : 5c7e88: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.93 : 5c7e8f: 80 7a 69 00 cmpb $0x0,0x69(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:166 5.14 : 5c7e93: 0f 84 0a ff ff ff je 5c7da3 0.00 : 5c7e99: 48 89 d1 mov %rdx,%rcx 0.00 : 5c7e9c: 48 8b 92 a8 00 00 00 mov 0xa8(%rdx),%rdx 0.00 : 5c7ea3: 4c 89 e6 mov %r12,%rsi 0.00 : 5c7ea6: 48 8b 79 60 mov 0x60(%rcx),%rdi 0.00 : 5c7eaa: e8 31 f5 ff ff callq 5c73e0 0.00 : 5c7eaf: 84 c0 test %al,%al 0.00 : 5c7eb1: 0f 84 ec fe ff ff je 5c7da3 : return BoolGetDatum(false); : } : if (node->havehashrows && : findPartialMatch(node->hashtable, slot, node->cur_eq_funcs)) : { : ExecClearTuple(slot); 0.00 : 5c7eb7: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7eba: e8 51 c2 fe ff callq 5b4110 : *isNull = true; 0.00 : 5c7ebf: 48 8b 9d 68 ff ff ff mov -0x98(%rbp),%rbx 0.00 : 5c7ec6: c6 03 01 movb $0x1,(%rbx) 0.00 : 5c7ec9: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7ed0: 00 0.00 : 5c7ed1: e9 fb fa ff ff jmpq 5c79d1 0.00 : 5c7ed6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5c7edd: 00 00 00 : */ : result = BoolGetDatum(subLinkType == ALL_SUBLINK); : *isNull = false; : : for (slot = ExecProcNode(planstate); : !TupIsNull(slot); 0.00 : 5c7ee0: 31 c0 xor %eax,%eax 0.00 : 5c7ee2: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 5c7ee9: 00 0.00 : 5c7eea: e9 15 fb ff ff jmpq 5c7a04 : if (isDone) : *isDone = ExprSingleResult; : : /* Sanity checks */ : if (subplan->subLinkType == CTE_SUBLINK) : elog(ERROR, "CTE subplans should not be executed via ExecSubPlan"); 0.00 : 5c7eef: ba 80 c6 88 00 mov $0x88c680,%edx 0.00 : 5c7ef4: be 54 00 00 00 mov $0x54,%esi 0.00 : 5c7ef9: bf 01 c4 88 00 mov $0x88c401,%edi 0.00 : 5c7efe: e8 1d 35 1b 00 callq 77b420 0.00 : 5c7f03: be 30 c4 88 00 mov $0x88c430,%esi 0.00 : 5c7f08: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c7f0d: 31 c0 xor %eax,%eax 0.00 : 5c7f0f: e8 1c 33 1b 00 callq 77b230 0.00 : 5c7f14: e8 b7 15 ea ff callq 4694d0 : if (subplan->setParam != NIL && subplan->subLinkType != MULTIEXPR_SUBLINK) : elog(ERROR, "cannot set parent params from subquery"); 0.00 : 5c7f19: ba 80 c6 88 00 mov $0x88c680,%edx 0.00 : 5c7f1e: be 56 00 00 00 mov $0x56,%esi 0.00 : 5c7f23: bf 01 c4 88 00 mov $0x88c401,%edi 0.00 : 5c7f28: e8 f3 34 1b 00 callq 77b420 0.00 : 5c7f2d: be 68 c4 88 00 mov $0x88c468,%esi 0.00 : 5c7f32: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c7f37: 31 c0 xor %eax,%eax 0.00 : 5c7f39: e8 f2 32 1b 00 callq 77b230 0.00 : 5c7f3e: e8 8d 15 ea ff callq 4694d0 : return BoolGetDatum(false); : } : if (slotAllNulls(slot)) : { : ExecClearTuple(slot); : *isNull = true; 0.00 : 5c7f43: 48 c7 45 a0 01 00 00 movq $0x1,-0x60(%rbp) 0.00 : 5c7f4a: 00 0.00 : 5c7f4b: e9 c2 f9 ff ff jmpq 5c7912 : ExecClearTuple(slot); : return BoolGetDatum(false); : } : if (slotAllNulls(slot)) : { : ExecClearTuple(slot); 0.00 : 5c7f50: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7f53: e8 b8 c1 fe ff callq 5b4110 : *isNull = true; 0.00 : 5c7f58: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 5c7f5f: c6 00 01 movb $0x1,(%rax) 0.00 : 5c7f62: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7f69: 00 0.00 : 5c7f6a: e9 62 fa ff ff jmpq 5c79d1 : * LHS to some main-table entry --- which is a comparison we will not even : * make, unless there's a chance match of hash keys. : */ : if (slotNoNulls(slot)) : { : if (node->havehashrows && 0.47 : 5c7f6f: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 5c7f76: 4c 89 e6 mov %r12,%rsi 0.00 : 5c7f79: 48 8b 8f a0 00 00 00 mov 0xa0(%rdi),%rcx 0.00 : 5c7f80: 48 8b 97 a8 00 00 00 mov 0xa8(%rdi),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSubplan.c:157 1.40 : 5c7f87: 48 8b 7f 58 mov 0x58(%rdi),%rdi 0.00 : 5c7f8b: e8 70 0e fe ff callq 5a8e00 1.40 : 5c7f90: 48 85 c0 test %rax,%rax 0.00 : 5c7f93: 0f 84 ef fe ff ff je 5c7e88 : FindTupleHashEntry(node->hashtable, : slot, : node->cur_eq_funcs, : node->lhs_hash_funcs) != NULL) : { : ExecClearTuple(slot); 0.00 : 5c7f99: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7f9c: e8 6f c1 fe ff callq 5b4110 0.00 : 5c7fa1: 48 c7 45 a0 01 00 00 movq $0x1,-0x60(%rbp) 0.00 : 5c7fa8: 00 0.00 : 5c7fa9: e9 23 fa ff ff jmpq 5c79d1 : ExecClearTuple(slot); : *isNull = true; : return BoolGetDatum(false); : } : /* Scan partly-null table first, since more likely to get a match */ : if (node->havenullrows && 0.00 : 5c7fae: 48 8b 97 a8 00 00 00 mov 0xa8(%rdi),%rdx 0.00 : 5c7fb5: 48 8b 7f 60 mov 0x60(%rdi),%rdi 0.00 : 5c7fb9: 4c 89 e6 mov %r12,%rsi 0.00 : 5c7fbc: e8 1f f4 ff ff callq 5c73e0 0.00 : 5c7fc1: 84 c0 test %al,%al 0.00 : 5c7fc3: 0f 84 b2 fd ff ff je 5c7d7b : findPartialMatch(node->hashnulls, slot, node->cur_eq_funcs)) : { : ExecClearTuple(slot); 0.00 : 5c7fc9: 4c 89 e7 mov %r12,%rdi 0.00 : 5c7fcc: e8 3f c1 fe ff callq 5b4110 : *isNull = true; 0.00 : 5c7fd1: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5c7fd8: c6 02 01 movb $0x1,(%rdx) 0.00 : 5c7fdb: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5c7fe2: 00 0.00 : 5c7fe3: e9 e9 f9 ff ff jmpq 5c79d1 Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 18.58 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:103 14.21 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 13.11 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:103 11.48 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:100 8.74 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 8.74 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:99 7.10 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 5.46 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 5.46 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 5.46 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 1.09 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:100 0.55 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:103 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000404530 : : char *env_config PROTO((char *tag, char *dflt)); : void NthElement(DSS_HUGE, DSS_HUGE *); : : void : dss_random(DSS_HUGE *tgt, DSS_HUGE lower, DSS_HUGE upper, long stream) : { /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 8.74 : 404530: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 14.21 : 404535: 48 89 cb mov %rcx,%rbx 7.10 : 404538: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) : *tgt = UnifInt(lower, upper, stream); : Seed[stream].usage += 1; /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:100 11.48 : 40453d: 48 8d 5c 1b 01 lea 0x1(%rbx,%rbx,1),%rbx : char *env_config PROTO((char *tag, char *dflt)); : void NthElement(DSS_HUGE, DSS_HUGE *); : : void : dss_random(DSS_HUGE *tgt, DSS_HUGE lower, DSS_HUGE upper, long stream) : { 0.00 : 404542: 48 83 ec 10 sub $0x10,%rsp /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:98 5.46 : 404546: 49 89 fc mov %rdi,%r12 5.46 : 404549: 48 89 f7 mov %rsi,%rdi 5.46 : 40454c: 48 89 d6 mov %rdx,%rsi : *tgt = UnifInt(lower, upper, stream); 0.00 : 40454f: 48 89 ca mov %rcx,%rdx : Seed[stream].usage += 1; /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:100 1.09 : 404552: 48 c1 e3 04 shl $0x4,%rbx : void NthElement(DSS_HUGE, DSS_HUGE *); : : void : dss_random(DSS_HUGE *tgt, DSS_HUGE lower, DSS_HUGE upper, long stream) : { : *tgt = UnifInt(lower, upper, stream); /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:99 8.74 : 404556: e8 35 ff ff ff callq 404490 0.00 : 40455b: 49 89 04 24 mov %rax,(%r12) : Seed[stream].usage += 1; : : return; : } /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:103 18.58 : 40455f: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 : : void : dss_random(DSS_HUGE *tgt, DSS_HUGE lower, DSS_HUGE upper, long stream) : { : *tgt = UnifInt(lower, upper, stream); : Seed[stream].usage += 1; 0.00 : 404564: 48 83 83 e0 a4 60 00 addq $0x1,0x60a4e0(%rbx) 0.00 : 40456b: 01 : : return; : } 13.11 : 40456c: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:103 0.55 : 404570: 48 83 c4 10 add $0x10,%rsp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 55.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:587 12.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:587 4.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:589 4.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 3.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 3.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 3.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:602 2.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 2.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 1.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:590 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:587 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:602 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077f740 : : * instead, meaning that subsidiary info will have to be recomputed. : */ : void : fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, : MemoryContext destcxt) : { 0.00 : 77f740: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:587 55.51 : 77f741: 48 89 e5 mov %rsp,%rbp 0.00 : 77f744: 41 54 push %r12 12.29 : 77f746: 49 89 fc mov %rdi,%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:587 1.27 : 77f749: 53 push %rbx : memcpy(dstinfo, srcinfo, sizeof(FmgrInfo)); 0.00 : 77f74a: 48 8b 06 mov (%rsi),%rax : * instead, meaning that subsidiary info will have to be recomputed. : */ : void : fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, : MemoryContext destcxt) : { 0.00 : 77f74d: 48 89 f3 mov %rsi,%rbx : memcpy(dstinfo, srcinfo, sizeof(FmgrInfo)); 0.00 : 77f750: 48 89 07 mov %rax,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 1.27 : 77f753: 48 8b 46 08 mov 0x8(%rsi),%rax : dstinfo->fn_mcxt = destcxt; : if (dstinfo->fn_addr == fmgr_oldstyle) 0.00 : 77f757: 48 81 3f 30 ed 77 00 cmpq $0x77ed30,(%rdi) : */ : void : fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, : MemoryContext destcxt) : { : memcpy(dstinfo, srcinfo, sizeof(FmgrInfo)); 2.54 : 77f75e: 48 89 47 08 mov %rax,0x8(%rdi) 1.27 : 77f762: 48 8b 46 10 mov 0x10(%rsi),%rax 1.27 : 77f766: 48 89 47 10 mov %rax,0x10(%rdi) 0.00 : 77f76a: 48 8b 46 18 mov 0x18(%rsi),%rax 4.24 : 77f76e: 48 89 47 18 mov %rax,0x18(%rdi) 3.39 : 77f772: 48 8b 46 20 mov 0x20(%rsi),%rax 2.54 : 77f776: 48 89 47 20 mov %rax,0x20(%rdi) 0.42 : 77f77a: 48 8b 46 28 mov 0x28(%rsi),%rax : dstinfo->fn_mcxt = destcxt; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:589 4.66 : 77f77e: 48 89 57 20 mov %rdx,0x20(%rdi) : */ : void : fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, : MemoryContext destcxt) : { : memcpy(dstinfo, srcinfo, sizeof(FmgrInfo)); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:588 3.39 : 77f782: 48 89 47 28 mov %rax,0x28(%rdi) : dstinfo->fn_mcxt = destcxt; : if (dstinfo->fn_addr == fmgr_oldstyle) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:590 1.69 : 77f786: 74 10 je 77f798 : MemoryContextAlloc(destcxt, sizeof(Oldstyle_fnextra)); : memcpy(fnextra, srcinfo->fn_extra, sizeof(Oldstyle_fnextra)); : dstinfo->fn_extra = (void *) fnextra; : } : else : dstinfo->fn_extra = NULL; 0.00 : 77f788: 48 c7 47 18 00 00 00 movq $0x0,0x18(%rdi) 0.00 : 77f78f: 00 : } 0.00 : 77f790: 5b pop %rbx 0.00 : 77f791: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:602 3.39 : 77f793: c9 leaveq 0.85 : 77f794: c3 retq 0.00 : 77f795: 0f 1f 00 nopl (%rax) : if (dstinfo->fn_addr == fmgr_oldstyle) : { : /* For oldstyle functions we must copy fn_extra */ : Oldstyle_fnextra *fnextra; : : fnextra = (Oldstyle_fnextra *) 0.00 : 77f798: 48 89 d7 mov %rdx,%rdi 0.00 : 77f79b: be 70 00 00 00 mov $0x70,%esi 0.00 : 77f7a0: e8 eb 96 01 00 callq 798e90 : MemoryContextAlloc(destcxt, sizeof(Oldstyle_fnextra)); : memcpy(fnextra, srcinfo->fn_extra, sizeof(Oldstyle_fnextra)); 0.00 : 77f7a5: 48 8b 4b 18 mov 0x18(%rbx),%rcx 0.00 : 77f7a9: 48 8b 11 mov (%rcx),%rdx 0.00 : 77f7ac: 48 89 10 mov %rdx,(%rax) 0.00 : 77f7af: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 77f7b3: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 77f7b7: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 77f7bb: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 77f7bf: 48 8b 51 18 mov 0x18(%rcx),%rdx 0.00 : 77f7c3: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 77f7c7: 48 8b 51 20 mov 0x20(%rcx),%rdx 0.00 : 77f7cb: 48 89 50 20 mov %rdx,0x20(%rax) 0.00 : 77f7cf: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 77f7d3: 48 89 50 28 mov %rdx,0x28(%rax) 0.00 : 77f7d7: 48 8b 51 30 mov 0x30(%rcx),%rdx 0.00 : 77f7db: 48 89 50 30 mov %rdx,0x30(%rax) 0.00 : 77f7df: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 77f7e3: 48 89 50 38 mov %rdx,0x38(%rax) 0.00 : 77f7e7: 48 8b 51 40 mov 0x40(%rcx),%rdx 0.00 : 77f7eb: 48 89 50 40 mov %rdx,0x40(%rax) 0.00 : 77f7ef: 48 8b 51 48 mov 0x48(%rcx),%rdx 0.00 : 77f7f3: 48 89 50 48 mov %rdx,0x48(%rax) 0.00 : 77f7f7: 48 8b 51 50 mov 0x50(%rcx),%rdx 0.00 : 77f7fb: 48 89 50 50 mov %rdx,0x50(%rax) 0.00 : 77f7ff: 48 8b 51 58 mov 0x58(%rcx),%rdx 0.00 : 77f803: 48 89 50 58 mov %rdx,0x58(%rax) 0.00 : 77f807: 48 8b 51 60 mov 0x60(%rcx),%rdx 0.00 : 77f80b: 48 89 50 60 mov %rdx,0x60(%rax) 0.00 : 77f80f: 48 8b 51 68 mov 0x68(%rcx),%rdx 0.00 : 77f813: 48 89 50 68 mov %rdx,0x68(%rax) : dstinfo->fn_extra = (void *) fnextra; 0.00 : 77f817: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 77f81c: e9 6f ff ff ff jmpq 77f790 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 63.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1830 10.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1828 8.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1828 7.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 3.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 2.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 1.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1830 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000078b890 : : /* : * fetch maximum length of the encoding for the current database : */ : int : pg_database_encoding_max_length(void) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1828 8.42 : 78b890: 55 push %rbp 10.89 : 78b891: 48 89 e5 mov %rsp,%rbp : return pg_wchar_table[GetDatabaseEncoding()].maxmblen; /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 1.49 : 78b894: e8 47 d0 ff ff callq 7888e0 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 7.92 : 78b899: 48 98 cltq 0.00 : 78b89b: 48 8d 04 40 lea (%rax,%rax,2),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 3.96 : 78b89f: 48 c1 e0 04 shl $0x4,%rax 2.97 : 78b8a3: 8b 80 88 7d 8d 00 mov 0x8d7d88(%rax),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1830 64.36 : 78b8a9: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 10.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 5.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:238 4.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:238 3.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:248 3.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 2.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:244 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:238 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:244 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:134 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:250 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:248 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:265 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:256 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:240 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 1.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 1.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:186 1.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:244 1.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:203 1.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:265 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:266 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:50 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:51 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:52 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:134 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:279 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:248 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:260 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a18f0 : : (cmp_ssup(a, c, ssup) < 0 ? a : c)); : } : : static void : qsort_ssup(SortTuple *a, size_t n, SortSupport ssup) : { 0.00 : 7a18f0: 55 push %rbp 0.00 : 7a18f1: 48 89 e5 mov %rsp,%rbp 0.00 : 7a18f4: 41 57 push %r15 0.00 : 7a18f6: 41 56 push %r14 0.00 : 7a18f8: 49 89 fe mov %rdi,%r14 0.00 : 7a18fb: 41 55 push %r13 0.00 : 7a18fd: 49 89 f5 mov %rsi,%r13 0.00 : 7a1900: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:186 1.08 : 7a1902: 53 push %rbx 0.00 : 7a1903: 48 83 ec 38 sub $0x38,%rsp : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.00 : 7a1907: 0f b6 05 82 87 41 00 movzbl 0x418782(%rip),%eax # bba090 : (cmp_ssup(a, c, ssup) < 0 ? a : c)); : } : : static void : qsort_ssup(SortTuple *a, size_t n, SortSupport ssup) : { 0.00 : 7a190e: 48 89 55 a8 mov %rdx,-0x58(%rbp) : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.36 : 7a1912: 84 c0 test %al,%al 0.00 : 7a1914: 0f 85 7b 02 00 00 jne 7a1b95 : if (n < 7) 0.00 : 7a191a: 49 83 fd 06 cmp $0x6,%r13 0.00 : 7a191e: 0f 86 80 02 00 00 jbe 7a1ba4 : for (pl = pm; pl > a && cmp_ssup(pl - 1, pl, ssup) > 0; pl--) : swap(pl, pl - 1); : return; : } : presorted = 1; : for (pm = a + 1; pm < a + n; pm++) 0.36 : 7a1924: 4b 8d 44 6d 00 lea 0x0(%r13,%r13,2),%rax 0.36 : 7a1929: 49 8d 5e 18 lea 0x18(%r14),%rbx 0.00 : 7a192d: 49 8d 04 c6 lea (%r14,%rax,8),%rax 0.00 : 7a1931: 48 89 5d c8 mov %rbx,-0x38(%rbp) 0.00 : 7a1935: 48 39 c3 cmp %rax,%rbx 0.00 : 7a1938: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 7a193c: 72 20 jb 7a195e 0.00 : 7a193e: e9 04 03 00 00 jmpq 7a1c47 0.00 : 7a1943: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : int compare; : : if (isNull1) : { : if (isNull2) 0.00 : 7a1948: 84 c0 test %al,%al 0.00 : 7a194a: 0f 84 b2 05 00 00 je 7a1f02 0.00 : 7a1950: 48 83 c3 18 add $0x18,%rbx 0.00 : 7a1954: 48 3b 5d b0 cmp -0x50(%rbp),%rbx 0.00 : 7a1958: 0f 83 e9 02 00 00 jae 7a1c47 : { : CHECK_FOR_INTERRUPTS(); 0.00 : 7a195e: 0f b6 05 2b 87 41 00 movzbl 0x41872b(%rip),%eax # bba090 0.36 : 7a1965: 84 c0 test %al,%al 0.00 : 7a1967: 0f 85 f3 02 00 00 jne 7a1c60 : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) 0.00 : 7a196d: 80 7b f8 00 cmpb $0x0,-0x8(%rbx) : if (cmp_ssup(pm - 1, pm, ssup) > 0) 0.00 : 7a1971: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 7a1975: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 7a1979: 48 8b 7b f0 mov -0x10(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 0.72 : 7a197d: 75 c9 jne 7a1948 : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.00 : 7a197f: 84 c0 test %al,%al 0.00 : 7a1981: 0f 84 e9 02 00 00 je 7a1c70 : { : if (ssup->ssup_nulls_first) 0.00 : 7a1987: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7a198b: 80 7a 0d 00 cmpb $0x0,0xd(%rdx) 0.00 : 7a198f: 74 bf je 7a1950 : break; : } : } : if (presorted) : return; : pm = a + (n / 2); 0.00 : 7a1991: 4c 89 e8 mov %r13,%rax : if (n > 7) 0.00 : 7a1994: 4d 8d be 90 00 00 00 lea 0x90(%r14),%r15 : break; : } : } : if (presorted) : return; : pm = a + (n / 2); 0.00 : 7a199b: 48 d1 e8 shr %rax : if (n > 7) 0.36 : 7a199e: 49 83 fd 07 cmp $0x7,%r13 : break; : } : } : if (presorted) : return; : pm = a + (n / 2); 0.00 : 7a19a2: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a19a6: 4d 8d 24 c6 lea (%r14,%rax,8),%r12 : if (n > 7) 0.00 : 7a19aa: 0f 85 26 05 00 00 jne 7a1ed6 : pm = med3_ssup(pm - d, pm, pm + d, ssup); : pn = med3_ssup(pn - 2 * d, pn - d, pn, ssup); : } : pm = med3_ssup(pl, pm, pn, ssup); : } : swap(a, pm); 0.00 : 7a19b0: 49 8b 04 24 mov (%r12),%rax 0.00 : 7a19b4: 49 8b 3e mov (%r14),%rdi 0.00 : 7a19b7: 49 8d 5e 30 lea 0x30(%r14),%rbx 0.00 : 7a19bb: 41 0f b6 4e 10 movzbl 0x10(%r14),%ecx 0.00 : 7a19c0: 41 8b 56 14 mov 0x14(%r14),%edx 0.00 : 7a19c4: 4d 89 fd mov %r15,%r13 0.00 : 7a19c7: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : 7a19cb: 49 89 06 mov %rax,(%r14) 0.00 : 7a19ce: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 7a19d3: 49 89 46 08 mov %rax,0x8(%r14) 0.36 : 7a19d7: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 7a19dc: 49 89 46 10 mov %rax,0x10(%r14) 0.00 : 7a19e0: 41 89 54 24 14 mov %edx,0x14(%r12) 0.00 : 7a19e5: 41 88 4c 24 10 mov %cl,0x10(%r12) 0.00 : 7a19ea: 49 89 74 24 08 mov %rsi,0x8(%r12) 0.00 : 7a19ef: 49 89 3c 24 mov %rdi,(%r12) 0.36 : 7a19f3: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 7a19f7: 4d 89 fc mov %r15,%r12 0.36 : 7a19fa: 48 89 5d c0 mov %rbx,-0x40(%rbp) 0.00 : 7a19fe: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 7a1a02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); : pa++; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:244 2.53 : 7a1a08: 4c 8b 7d c0 mov -0x40(%rbp),%r15 1.08 : 7a1a0c: 49 83 ef 18 sub $0x18,%r15 : swap(a, pm); : pa = pb = a + 1; : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_ssup(pb, a, ssup)) <= 0) 0.36 : 7a1a10: 4d 39 fc cmp %r15,%r12 0.00 : 7a1a13: 0f 83 7f 02 00 00 jae 7a1c98 : swap(pb, pc); : pb++; : pc--; : } : pn = a + n; : r = Min(pa - a, pb - pa); 0.36 : 7a1a19: 4d 89 fa mov %r15,%r10 0.00 : 7a1a1c: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 7a1a20: 4c 2b 55 b8 sub -0x48(%rbp),%r10 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:265 1.81 : 7a1a24: 48 b9 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rcx 0.00 : 7a1a2b: aa aa aa 0.00 : 7a1a2e: 4c 29 f0 sub %r14,%rax 0.00 : 7a1a31: 49 c1 fa 03 sar $0x3,%r10 0.00 : 7a1a35: 48 c1 f8 03 sar $0x3,%rax 0.00 : 7a1a39: 4c 0f af d1 imul %rcx,%r10 0.72 : 7a1a3d: 48 0f af c1 imul %rcx,%rax 0.00 : 7a1a41: 4c 39 d0 cmp %r10,%rax 0.00 : 7a1a44: 49 0f 4f c2 cmovg %r10,%rax : vecswap(a, pb - r, r); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:266 0.72 : 7a1a48: 85 c0 test %eax,%eax 0.00 : 7a1a4a: 7e 61 jle 7a1aad 0.36 : 7a1a4c: 4c 63 d8 movslq %eax,%r11 0.00 : 7a1a4f: 4d 89 f9 mov %r15,%r9 0.00 : 7a1a52: 45 31 c0 xor %r8d,%r8d 0.36 : 7a1a55: 4b 8d 04 5b lea (%r11,%r11,2),%rax 0.00 : 7a1a59: 48 c1 e0 03 shl $0x3,%rax 0.00 : 7a1a5d: 49 29 c1 sub %rax,%r9 : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; : *a++ = *b; 0.36 : 7a1a60: 4b 8b 04 01 mov (%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:50 0.72 : 7a1a64: 4b 8b 3c 06 mov (%r14,%r8,1),%rdi 0.00 : 7a1a68: 43 0f b6 4c 06 10 movzbl 0x10(%r14,%r8,1),%ecx 0.00 : 7a1a6e: 43 8b 54 06 14 mov 0x14(%r14,%r8,1),%edx 0.00 : 7a1a73: 4b 8b 74 06 08 mov 0x8(%r14,%r8,1),%rsi : *a++ = *b; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:51 0.72 : 7a1a78: 4b 89 04 06 mov %rax,(%r14,%r8,1) 0.00 : 7a1a7c: 4b 8b 44 01 08 mov 0x8(%r9,%r8,1),%rax 0.00 : 7a1a81: 4b 89 44 06 08 mov %rax,0x8(%r14,%r8,1) 0.00 : 7a1a86: 4b 8b 44 01 10 mov 0x10(%r9,%r8,1),%rax 0.00 : 7a1a8b: 4b 89 44 06 10 mov %rax,0x10(%r14,%r8,1) : *b++ = t; 0.36 : 7a1a90: 43 89 54 01 14 mov %edx,0x14(%r9,%r8,1) 0.00 : 7a1a95: 43 88 4c 01 10 mov %cl,0x10(%r9,%r8,1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:52 0.72 : 7a1a9a: 4b 89 74 01 08 mov %rsi,0x8(%r9,%r8,1) 0.00 : 7a1a9f: 4b 89 3c 01 mov %rdi,(%r9,%r8,1) : } while (--n > 0); 0.00 : 7a1aa3: 49 83 c0 18 add $0x18,%r8 0.00 : 7a1aa7: 49 83 eb 01 sub $0x1,%r11 0.00 : 7a1aab: 75 b3 jne 7a1a60 : pc--; : } : pn = a + n; : r = Min(pa - a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - 1); 0.00 : 7a1aad: 4c 89 eb mov %r13,%rbx 0.00 : 7a1ab0: 48 b8 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rax 0.00 : 7a1ab7: aa aa aa 0.00 : 7a1aba: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : 7a1ac1: aa aa aa 0.00 : 7a1ac4: 4c 29 e3 sub %r12,%rbx 0.00 : 7a1ac7: 48 c1 fb 03 sar $0x3,%rbx 0.00 : 7a1acb: 48 0f af d8 imul %rax,%rbx 0.00 : 7a1acf: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.36 : 7a1ad3: 4c 29 e8 sub %r13,%rax 0.00 : 7a1ad6: 48 c1 f8 03 sar $0x3,%rax 0.00 : 7a1ada: 48 0f af c2 imul %rdx,%rax 0.36 : 7a1ade: 48 83 e8 01 sub $0x1,%rax 0.00 : 7a1ae2: 48 39 d8 cmp %rbx,%rax 0.00 : 7a1ae5: 48 0f 4f c3 cmovg %rbx,%rax : vecswap(pb, pn - r, r); 0.00 : 7a1ae9: 85 c0 test %eax,%eax 0.00 : 7a1aeb: 7e 68 jle 7a1b55 0.00 : 7a1aed: 4c 63 d8 movslq %eax,%r11 0.00 : 7a1af0: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 7a1af4: 45 31 c0 xor %r8d,%r8d 0.00 : 7a1af7: 4b 8d 04 5b lea (%r11,%r11,2),%rax 0.00 : 7a1afb: 48 c1 e0 03 shl $0x3,%rax 0.00 : 7a1aff: 49 29 c1 sub %rax,%r9 0.36 : 7a1b02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; : *a++ = *b; 0.00 : 7a1b08: 4b 8b 04 01 mov (%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.00 : 7a1b0c: 4b 8b 3c 07 mov (%r15,%r8,1),%rdi 0.00 : 7a1b10: 43 0f b6 4c 07 10 movzbl 0x10(%r15,%r8,1),%ecx 0.00 : 7a1b16: 43 8b 54 07 14 mov 0x14(%r15,%r8,1),%edx 0.00 : 7a1b1b: 4b 8b 74 07 08 mov 0x8(%r15,%r8,1),%rsi : *a++ = *b; 0.00 : 7a1b20: 4b 89 04 07 mov %rax,(%r15,%r8,1) 0.00 : 7a1b24: 4b 8b 44 01 08 mov 0x8(%r9,%r8,1),%rax 0.00 : 7a1b29: 4b 89 44 07 08 mov %rax,0x8(%r15,%r8,1) 0.00 : 7a1b2e: 4b 8b 44 01 10 mov 0x10(%r9,%r8,1),%rax 0.00 : 7a1b33: 4b 89 44 07 10 mov %rax,0x10(%r15,%r8,1) : *b++ = t; 0.00 : 7a1b38: 43 89 54 01 14 mov %edx,0x14(%r9,%r8,1) 0.00 : 7a1b3d: 43 88 4c 01 10 mov %cl,0x10(%r9,%r8,1) 0.00 : 7a1b42: 4b 89 74 01 08 mov %rsi,0x8(%r9,%r8,1) 0.00 : 7a1b47: 4b 89 3c 01 mov %rdi,(%r9,%r8,1) : } while (--n > 0); 0.00 : 7a1b4b: 49 83 c0 18 add $0x18,%r8 0.00 : 7a1b4f: 49 83 eb 01 sub $0x1,%r11 0.00 : 7a1b53: 75 b3 jne 7a1b08 : pn = a + n; : r = Min(pa - a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - 1); : vecswap(pb, pn - r, r); : if ((r = pb - pa) > 1) 0.00 : 7a1b55: 41 83 fa 01 cmp $0x1,%r10d 0.00 : 7a1b59: 7e 0f jle 7a1b6a : qsort_ssup(a, r, ssup); 0.00 : 7a1b5b: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7a1b5f: 49 63 f2 movslq %r10d,%rsi 0.00 : 7a1b62: 4c 89 f7 mov %r14,%rdi 0.00 : 7a1b65: e8 86 fd ff ff callq 7a18f0 : if ((r = pd - pc) > 1) 0.36 : 7a1b6a: 83 fb 01 cmp $0x1,%ebx 0.00 : 7a1b6d: 0f 8e d4 00 00 00 jle 7a1c47 : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 7a1b73: 4c 63 eb movslq %ebx,%r13 0.00 : 7a1b76: 4c 8b 75 b0 mov -0x50(%rbp),%r14 0.00 : 7a1b7a: 4b 8d 44 6d 00 lea 0x0(%r13,%r13,2),%rax 0.00 : 7a1b7f: 48 c1 e0 03 shl $0x3,%rax 0.00 : 7a1b83: 49 29 c6 sub %rax,%r14 : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.00 : 7a1b86: 0f b6 05 03 85 41 00 movzbl 0x418503(%rip),%eax # bba090 0.00 : 7a1b8d: 84 c0 test %al,%al 0.00 : 7a1b8f: 0f 84 85 fd ff ff je 7a191a 0.00 : 7a1b95: e8 06 a7 ef ff callq 69c2a0 : if (n < 7) 0.00 : 7a1b9a: 49 83 fd 06 cmp $0x6,%r13 0.00 : 7a1b9e: 0f 87 80 fd ff ff ja 7a1924 : { : for (pm = a + 1; pm < a + n; pm++) 0.00 : 7a1ba4: 4b 8d 44 6d 00 lea 0x0(%r13,%r13,2),%rax 0.00 : 7a1ba9: 4d 8d 66 18 lea 0x18(%r14),%r12 0.00 : 7a1bad: 4d 8d 2c c6 lea (%r14,%rax,8),%r13 0.00 : 7a1bb1: 4c 89 e3 mov %r12,%rbx 0.00 : 7a1bb4: 4d 39 ec cmp %r13,%r12 0.00 : 7a1bb7: 72 1c jb 7a1bd5 0.00 : 7a1bb9: e9 89 00 00 00 jmpq 7a1c47 0.00 : 7a1bbe: 66 90 xchg %ax,%ax : { : int compare; : : if (isNull1) : { : if (isNull2) 0.00 : 7a1bc0: 45 84 c0 test %r8b,%r8b 0.00 : 7a1bc3: 0f 84 07 04 00 00 je 7a1fd0 0.00 : 7a1bc9: 49 83 c4 18 add $0x18,%r12 0.00 : 7a1bcd: 4d 39 ec cmp %r13,%r12 0.00 : 7a1bd0: 4c 89 e3 mov %r12,%rbx 0.00 : 7a1bd3: 73 72 jae 7a1c47 : for (pl = pm; pl > a && cmp_ssup(pl - 1, pl, ssup) > 0; pl--) 0.00 : 7a1bd5: 4d 39 f4 cmp %r14,%r12 0.00 : 7a1bd8: 76 ef jbe 7a1bc9 0.36 : 7a1bda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a1be0: 44 0f b6 43 10 movzbl 0x10(%rbx),%r8d /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:203 1.08 : 7a1be5: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 7a1be9: 48 83 eb 18 sub $0x18,%rbx : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) 0.00 : 7a1bed: 80 7b 10 00 cmpb $0x0,0x10(%rbx) 0.36 : 7a1bf1: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 7a1bf5: 75 c9 jne 7a1bc0 : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:134 0.72 : 7a1bf7: 45 84 c0 test %r8b,%r8b 0.00 : 7a1bfa: 0f 84 a4 03 00 00 je 7a1fa4 : { : if (ssup->ssup_nulls_first) 0.00 : 7a1c00: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7a1c04: 80 7a 0d 00 cmpb $0x0,0xd(%rdx) 0.00 : 7a1c08: 74 bf je 7a1bc9 : swap(pl, pl - 1); 0.00 : 7a1c0a: 48 8b 03 mov (%rbx),%rax 0.00 : 7a1c0d: 48 8b 4b 18 mov 0x18(%rbx),%rcx : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) : for (pl = pm; pl > a && cmp_ssup(pl - 1, pl, ssup) > 0; pl--) 0.00 : 7a1c11: 4c 39 f3 cmp %r14,%rbx : swap(pl, pl - 1); 0.00 : 7a1c14: 8b 53 2c mov 0x2c(%rbx),%edx 0.00 : 7a1c17: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 7a1c1b: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7a1c1f: 48 89 0b mov %rcx,(%rbx) 0.00 : 7a1c22: 48 89 73 08 mov %rsi,0x8(%rbx) 0.00 : 7a1c26: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 7a1c2a: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 7a1c2e: 89 53 14 mov %edx,0x14(%rbx) 0.00 : 7a1c31: 44 88 43 10 mov %r8b,0x10(%rbx) 0.00 : 7a1c35: 48 89 43 28 mov %rax,0x28(%rbx) : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) : for (pl = pm; pl > a && cmp_ssup(pl - 1, pl, ssup) > 0; pl--) 0.00 : 7a1c39: 77 a5 ja 7a1be0 : : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) 0.00 : 7a1c3b: 49 83 c4 18 add $0x18,%r12 0.00 : 7a1c3f: 4d 39 ec cmp %r13,%r12 0.00 : 7a1c42: 4c 89 e3 mov %r12,%rbx 0.00 : 7a1c45: 72 8e jb 7a1bd5 : a = pn - r; : n = r; : goto loop; : } : /* qsort_ssup(pn - r, r, ssup);*/ : } 0.00 : 7a1c47: 48 83 c4 38 add $0x38,%rsp 0.36 : 7a1c4b: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:279 0.72 : 7a1c4c: 41 5c pop %r12 0.00 : 7a1c4e: 41 5d pop %r13 0.00 : 7a1c50: 41 5e pop %r14 0.00 : 7a1c52: 41 5f pop %r15 0.36 : 7a1c54: c9 leaveq 0.00 : 7a1c55: c3 retq 0.00 : 7a1c56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a1c5d: 00 00 00 : return; : } : presorted = 1; : for (pm = a + 1; pm < a + n; pm++) : { : CHECK_FOR_INTERRUPTS(); 0.00 : 7a1c60: e8 3b a6 ef ff callq 69c2a0 0.00 : 7a1c65: e9 03 fd ff ff jmpq 7a196d 0.00 : 7a1c6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 7a1c70: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7a1c74: ff 52 18 callq *0x18(%rdx) : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a1c77: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.36 : 7a1c7b: 89 c2 mov %eax,%edx 0.00 : 7a1c7d: f7 da neg %edx 0.00 : 7a1c7f: 80 79 0c 00 cmpb $0x0,0xc(%rcx) 0.36 : 7a1c83: 0f 45 c2 cmovne %edx,%eax : if (cmp_ssup(pm - 1, pm, ssup) > 0) 0.36 : 7a1c86: 85 c0 test %eax,%eax 0.00 : 7a1c88: 0f 8e c2 fc ff ff jle 7a1950 0.36 : 7a1c8e: e9 fe fc ff ff jmpq 7a1991 0.00 : 7a1c93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : swap(a, pm); : pa = pb = a + 1; : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_ssup(pb, a, ssup)) <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:238 2.53 : 7a1c98: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 7a1c9c: 41 0f b6 46 10 movzbl 0x10(%r14),%eax 0.36 : 7a1ca1: 49 8b 76 08 mov 0x8(%r14),%rsi : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 0.72 : 7a1ca5: 80 7a f8 00 cmpb $0x0,-0x8(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:238 5.78 : 7a1ca9: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 7a1cad: 0f 84 8d 00 00 00 je 7a1d40 : { : if (isNull2) 0.00 : 7a1cb3: 31 db xor %ebx,%ebx 0.00 : 7a1cb5: 84 c0 test %al,%al 0.00 : 7a1cb7: 0f 84 cf 02 00 00 je 7a1f8c : { : CHECK_FOR_INTERRUPTS(); 0.00 : 7a1cbd: 0f b6 05 cc 83 41 00 movzbl 0x4183cc(%rip),%eax # bba090 0.00 : 7a1cc4: 84 c0 test %al,%al 0.00 : 7a1cc6: 0f 85 00 02 00 00 jne 7a1ecc : if (r == 0) 0.00 : 7a1ccc: 85 db test %ebx,%ebx 0.00 : 7a1cce: 75 60 jne 7a1d30 : { : swap(pa, pb); 0.36 : 7a1cd0: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.36 : 7a1cd4: 48 89 cb mov %rcx,%rbx 0.00 : 7a1cd7: 8b 51 14 mov 0x14(%rcx),%edx 0.00 : 7a1cda: 0f b6 49 10 movzbl 0x10(%rcx),%ecx 0.00 : 7a1cde: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 7a1ce2: 48 8b 3b mov (%rbx),%rdi 0.00 : 7a1ce5: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 7a1ce9: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 7a1ced: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 7a1cf1: 48 89 03 mov %rax,(%rbx) 0.00 : 7a1cf4: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 7a1cf8: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 7a1cfc: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 7a1d00: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 7a1d04: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 7a1d08: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 7a1d0c: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 7a1d10: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 7a1d14: 48 8b 45 c0 mov -0x40(%rbp),%rax : pa++; 0.00 : 7a1d18: 48 83 c3 18 add $0x18,%rbx : while (pb <= pc && (r = cmp_ssup(pb, a, ssup)) <= 0) : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); 0.00 : 7a1d1c: 89 50 fc mov %edx,-0x4(%rax) 0.00 : 7a1d1f: 88 48 f8 mov %cl,-0x8(%rax) 0.00 : 7a1d22: 48 89 70 f0 mov %rsi,-0x10(%rax) 0.00 : 7a1d26: 48 89 78 e8 mov %rdi,-0x18(%rax) : pa++; 0.00 : 7a1d2a: 48 89 5d b8 mov %rbx,-0x48(%rbp) 0.00 : 7a1d2e: 66 90 xchg %ax,%ax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:244 2.53 : 7a1d30: 48 83 45 c0 18 addq $0x18,-0x40(%rbp) 0.00 : 7a1d35: e9 ce fc ff ff jmpq 7a1a08 0.00 : 7a1d3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:134 2.17 : 7a1d40: 84 c0 test %al,%al 0.00 : 7a1d42: 0f 84 57 01 00 00 je 7a1e9f : { : if (ssup->ssup_nulls_first) 0.00 : 7a1d48: 48 8b 5d a8 mov -0x58(%rbp),%rbx 0.00 : 7a1d4c: 80 7b 0d 00 cmpb $0x0,0xd(%rbx) 0.00 : 7a1d50: 0f 85 7f 00 00 00 jne 7a1dd5 0.00 : 7a1d56: e9 3f 02 00 00 jmpq 7a1f9a 0.00 : 7a1d5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : int compare; : : if (isNull1) : { : if (isNull2) 0.00 : 7a1d60: 31 db xor %ebx,%ebx 0.00 : 7a1d62: 84 c0 test %al,%al 0.00 : 7a1d64: 0f 84 26 01 00 00 je 7a1e90 : } : pb++; : } : while (pb <= pc && (r = cmp_ssup(pc, a, ssup)) >= 0) : { : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:250 2.17 : 7a1d6a: 0f b6 05 1f 83 41 00 movzbl 0x41831f(%rip),%eax # bba090 0.00 : 7a1d71: 84 c0 test %al,%al 0.00 : 7a1d73: 0f 85 8f 00 00 00 jne 7a1e08 : if (r == 0) 0.00 : 7a1d79: 85 db test %ebx,%ebx 0.00 : 7a1d7b: 75 42 jne 7a1dbf : { : swap(pc, pd); 0.00 : 7a1d7d: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 7a1d81: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 7a1d85: 41 0f b6 4c 24 10 movzbl 0x10(%r12),%ecx 0.36 : 7a1d8b: 41 8b 54 24 14 mov 0x14(%r12),%edx 0.00 : 7a1d90: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 7a1d95: 49 89 04 24 mov %rax,(%r12) 0.00 : 7a1d99: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 7a1d9d: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 7a1da2: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 7a1da6: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 7a1dab: 41 89 55 14 mov %edx,0x14(%r13) 0.00 : 7a1daf: 41 88 4d 10 mov %cl,0x10(%r13) 0.00 : 7a1db3: 49 89 75 08 mov %rsi,0x8(%r13) 0.00 : 7a1db7: 49 89 7d 00 mov %rdi,0x0(%r13) : pd--; 0.00 : 7a1dbb: 49 83 ed 18 sub $0x18,%r13 : } : pc--; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:256 1.81 : 7a1dbf: 49 83 ec 18 sub $0x18,%r12 : swap(pa, pb); : pa++; : } : pb++; : } : while (pb <= pc && (r = cmp_ssup(pc, a, ssup)) >= 0) 0.00 : 7a1dc3: 4d 39 fc cmp %r15,%r12 0.00 : 7a1dc6: 0f 82 4d fc ff ff jb 7a1a19 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:248 0.72 : 7a1dcc: 41 0f b6 46 10 movzbl 0x10(%r14),%eax 0.00 : 7a1dd1: 49 8b 76 08 mov 0x8(%r14),%rsi : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 2.17 : 7a1dd5: 41 80 7c 24 10 00 cmpb $0x0,0x10(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:248 2.17 : 7a1ddb: 49 8b 7c 24 08 mov 0x8(%r12),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 0.72 : 7a1de0: 0f 85 7a ff ff ff jne 7a1d60 : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.36 : 7a1de6: 84 c0 test %al,%al 0.00 : 7a1de8: 74 2e je 7a1e18 : { : if (ssup->ssup_nulls_first) 0.00 : 7a1dea: 48 8b 5d a8 mov -0x58(%rbp),%rbx 0.00 : 7a1dee: 80 7b 0d 00 cmpb $0x0,0xd(%rbx) 0.00 : 7a1df2: 74 46 je 7a1e3a : { : CHECK_FOR_INTERRUPTS(); 0.00 : 7a1df4: 0f b6 05 95 82 41 00 movzbl 0x418295(%rip),%eax # bba090 : if ((r = pd - pc) > 1) : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; : n = r; : goto loop; 0.00 : 7a1dfb: bb 01 00 00 00 mov $0x1,%ebx : } : pb++; : } : while (pb <= pc && (r = cmp_ssup(pc, a, ssup)) >= 0) : { : CHECK_FOR_INTERRUPTS(); 0.00 : 7a1e00: 84 c0 test %al,%al 0.00 : 7a1e02: 0f 84 71 ff ff ff je 7a1d79 0.00 : 7a1e08: e8 93 a4 ef ff callq 69c2a0 0.00 : 7a1e0d: e9 67 ff ff ff jmpq 7a1d79 0.00 : 7a1e12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 2.53 : 7a1e18: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.36 : 7a1e1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7a1e20: ff 52 18 callq *0x18(%rdx) : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a1e23: 48 8b 55 a8 mov -0x58(%rbp),%rdx : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 2.89 : 7a1e27: 89 c3 mov %eax,%ebx : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a1e29: f7 d8 neg %eax 0.00 : 7a1e2b: 80 7a 0c 00 cmpb $0x0,0xc(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 11.19 : 7a1e2f: 0f 45 d8 cmovne %eax,%ebx : swap(pa, pb); : pa++; : } : pb++; : } : while (pb <= pc && (r = cmp_ssup(pc, a, ssup)) >= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:248 3.61 : 7a1e32: 85 db test %ebx,%ebx 0.00 : 7a1e34: 0f 89 30 ff ff ff jns 7a1d6a : } : pc--; : } : if (pb > pc) : break; : swap(pb, pc); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:260 0.72 : 7a1e3a: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 7a1e3e: 49 8b 04 24 mov (%r12),%rax 0.00 : 7a1e42: 48 89 cb mov %rcx,%rbx 0.00 : 7a1e45: 8b 51 fc mov -0x4(%rcx),%edx 0.36 : 7a1e48: 0f b6 49 f8 movzbl -0x8(%rcx),%ecx 0.00 : 7a1e4c: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 7a1e50: 48 89 43 e8 mov %rax,-0x18(%rbx) 0.00 : 7a1e54: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.36 : 7a1e59: 48 8b 73 f0 mov -0x10(%rbx),%rsi 0.00 : 7a1e5d: 48 89 43 f0 mov %rax,-0x10(%rbx) 0.00 : 7a1e61: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.36 : 7a1e66: 48 89 43 f8 mov %rax,-0x8(%rbx) 0.36 : 7a1e6a: 41 89 54 24 14 mov %edx,0x14(%r12) 0.00 : 7a1e6f: 41 88 4c 24 10 mov %cl,0x10(%r12) 0.00 : 7a1e74: 49 89 74 24 08 mov %rsi,0x8(%r12) 0.00 : 7a1e79: 49 89 3c 24 mov %rdi,(%r12) : pb++; : pc--; 0.00 : 7a1e7d: 49 83 ec 18 sub $0x18,%r12 : } 0.00 : 7a1e81: e9 aa fe ff ff jmpq 7a1d30 0.00 : 7a1e86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a1e8d: 00 00 00 : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a1e90: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7a1e94: 80 79 0d 00 cmpb $0x0,0xd(%rcx) 0.00 : 7a1e98: 75 a0 jne 7a1e3a 0.00 : 7a1e9a: e9 55 ff ff ff jmpq 7a1df4 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 1.81 : 7a1e9f: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7a1ea3: ff 52 18 callq *0x18(%rdx) : if (ssup->ssup_reverse) : compare = -compare; 0.36 : 7a1ea6: 48 8b 55 a8 mov -0x58(%rbp),%rdx : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 3.61 : 7a1eaa: 89 c3 mov %eax,%ebx : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a1eac: f7 d8 neg %eax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 1.44 : 7a1eae: 80 7a 0c 00 cmpb $0x0,0xc(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 10.11 : 7a1eb2: 0f 45 d8 cmovne %eax,%ebx : swap(a, pm); : pa = pb = a + 1; : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_ssup(pb, a, ssup)) <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:238 4.33 : 7a1eb5: 85 db test %ebx,%ebx 0.00 : 7a1eb7: 0f 8f 0f ff ff ff jg 7a1dcc : { : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:240 1.81 : 7a1ebd: 0f b6 05 cc 81 41 00 movzbl 0x4181cc(%rip),%eax # bba090 0.00 : 7a1ec4: 84 c0 test %al,%al 0.00 : 7a1ec6: 0f 84 00 fe ff ff je 7a1ccc 0.00 : 7a1ecc: e8 cf a3 ef ff callq 69c2a0 0.00 : 7a1ed1: e9 f6 fd ff ff jmpq 7a1ccc : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.36 : 7a1ed6: 4b 8d 44 6d fd lea -0x3(%r13,%r13,2),%rax : if (n > 40) 0.00 : 7a1edb: 49 83 fd 28 cmp $0x28,%r13 0.00 : 7a1edf: 4d 89 f0 mov %r14,%r8 : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.00 : 7a1ee2: 4d 8d 3c c6 lea (%r14,%rax,8),%r15 : if (n > 40) 0.36 : 7a1ee6: 4c 89 fa mov %r15,%rdx 0.00 : 7a1ee9: 77 2a ja 7a1f15 : d = (n / 8); : pl = med3_ssup(pl, pl + d, pl + 2 * d, ssup); : pm = med3_ssup(pm - d, pm, pm + d, ssup); : pn = med3_ssup(pn - 2 * d, pn - d, pn, ssup); : } : pm = med3_ssup(pl, pm, pn, ssup); 0.00 : 7a1eeb: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7a1eef: 4c 89 e6 mov %r12,%rsi 0.36 : 7a1ef2: 4c 89 c7 mov %r8,%rdi 0.00 : 7a1ef5: e8 86 f7 ff ff callq 7a1680 0.00 : 7a1efa: 49 89 c4 mov %rax,%r12 0.00 : 7a1efd: e9 ae fa ff ff jmpq 7a19b0 : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a1f02: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7a1f06: 80 78 0d 00 cmpb $0x0,0xd(%rax) 0.00 : 7a1f0a: 0f 85 40 fa ff ff jne 7a1950 0.00 : 7a1f10: e9 7c fa ff ff jmpq 7a1991 : { : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); 0.00 : 7a1f15: 4c 89 e8 mov %r13,%rax : pl = med3_ssup(pl, pl + d, pl + 2 * d, ssup); 0.00 : 7a1f18: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7a1f1c: 4c 89 f7 mov %r14,%rdi : { : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); 0.00 : 7a1f1f: 48 c1 e8 03 shr $0x3,%rax : pl = med3_ssup(pl, pl + d, pl + 2 * d, ssup); 0.00 : 7a1f23: 8d 1c 00 lea (%rax,%rax,1),%ebx 0.00 : 7a1f26: 48 98 cltq 0.00 : 7a1f28: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a1f2c: 48 63 db movslq %ebx,%rbx 0.00 : 7a1f2f: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 7a1f33: 4c 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%r13 0.00 : 7a1f3a: 00 0.00 : 7a1f3b: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 7a1f3f: 4b 8d 34 2e lea (%r14,%r13,1),%rsi 0.00 : 7a1f43: 49 8d 14 1e lea (%r14,%rbx,1),%rdx 0.00 : 7a1f47: e8 34 f7 ff ff callq 7a1680 : pm = med3_ssup(pm - d, pm, pm + d, ssup); 0.00 : 7a1f4c: 4b 8d 14 2c lea (%r12,%r13,1),%rdx 0.00 : 7a1f50: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7a1f54: 49 f7 dd neg %r13 0.00 : 7a1f57: 4b 8d 3c 2c lea (%r12,%r13,1),%rdi 0.00 : 7a1f5b: 4c 89 e6 mov %r12,%rsi 0.00 : 7a1f5e: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 7a1f62: e8 19 f7 ff ff callq 7a1680 : pn = med3_ssup(pn - 2 * d, pn - d, pn, ssup); 0.36 : 7a1f67: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7a1f6b: 4b 8d 34 2f lea (%r15,%r13,1),%rsi 0.00 : 7a1f6f: 4c 89 ff mov %r15,%rdi 0.00 : 7a1f72: 4c 89 fa mov %r15,%rdx 0.00 : 7a1f75: 48 29 df sub %rbx,%rdi : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); : pl = med3_ssup(pl, pl + d, pl + 2 * d, ssup); : pm = med3_ssup(pm - d, pm, pm + d, ssup); 0.00 : 7a1f78: 49 89 c4 mov %rax,%r12 : pn = med3_ssup(pn - 2 * d, pn - d, pn, ssup); 0.00 : 7a1f7b: e8 00 f7 ff ff callq 7a1680 0.00 : 7a1f80: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 7a1f84: 48 89 c2 mov %rax,%rdx 0.00 : 7a1f87: e9 5f ff ff ff jmpq 7a1eeb 0.00 : 7a1f8c: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7a1f90: 80 79 0d 00 cmpb $0x0,0xd(%rcx) 0.00 : 7a1f94: 0f 84 3b fe ff ff je 7a1dd5 : if ((r = pd - pc) > 1) : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; : n = r; : goto loop; 0.00 : 7a1f9a: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 7a1f9f: e9 19 fd ff ff jmpq 7a1cbd : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 1.08 : 7a1fa4: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7a1fa8: ff 52 18 callq *0x18(%rdx) : if (ssup->ssup_reverse) : compare = -compare; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 0.72 : 7a1fab: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7a1faf: 89 c2 mov %eax,%edx 0.00 : 7a1fb1: f7 da neg %edx 0.00 : 7a1fb3: 80 79 0c 00 cmpb $0x0,0xc(%rcx) 1.81 : 7a1fb7: 0f 45 c2 cmovne %edx,%eax : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) : for (pl = pm; pl > a && cmp_ssup(pl - 1, pl, ssup) > 0; pl--) 0.36 : 7a1fba: 85 c0 test %eax,%eax 0.00 : 7a1fbc: 0f 8e 07 fc ff ff jle 7a1bc9 0.36 : 7a1fc2: 44 0f b6 43 28 movzbl 0x28(%rbx),%r8d 0.00 : 7a1fc7: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 7a1fcb: e9 3a fc ff ff jmpq 7a1c0a : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a1fd0: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7a1fd4: 80 78 0d 00 cmpb $0x0,0xd(%rax) 0.00 : 7a1fd8: 0f 85 eb fb ff ff jne 7a1bc9 0.00 : 7a1fde: 66 90 xchg %ax,%ax 0.00 : 7a1fe0: e9 25 fc ff ff jmpq 7a1c0a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 10.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1693 8.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1692 8.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1624 6.37 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1693 5.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1624 5.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1624 5.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1688 4.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 4.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1693 4.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1693 4.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 4.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 3.75 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1629 3.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1624 2.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1689 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1629 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1635 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 1.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1689 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bbfc0 : : /* : * Allocate 'size' bytes from the currently active HashMemoryChunk : */ : static void * : dense_alloc(HashJoinTable hashtable, Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1624 5.24 : 5bbfc0: 55 push %rbp 5.24 : 5bbfc1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1624 3.00 : 5bbfc4: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1624 8.24 : 5bbfc6: 49 89 fc mov %rdi,%r12 0.37 : 5bbfc9: 53 push %rbx : HashMemoryChunk newChunk; : char *ptr; : : /* just in case the size is not already aligned properly */ : size = MAXALIGN(size); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1629 3.75 : 5bbfca: 48 8d 5e 07 lea 0x7(%rsi),%rbx 1.50 : 5bbfce: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx : : /* : * If tuple size is larger than of 1/4 of chunk size, allocate a separate : * chunk. : */ : if (size > HASH_CHUNK_THRESHOLD) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1635 1.50 : 5bbfd2: 48 81 fb 00 20 00 00 cmp $0x2000,%rbx 0.00 : 5bbfd9: 0f 87 89 00 00 00 ja 5bc068 : : /* : * See if we have enough space for it in the current chunk (if any). : * If not, allocate a fresh chunk. : */ : if ((hashtable->chunks == NULL) || /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 1.50 : 5bbfdf: 48 8b 97 c8 00 00 00 mov 0xc8(%rdi),%rdx 4.12 : 5bbfe6: 48 85 d2 test %rdx,%rdx 0.00 : 5bbfe9: 74 35 je 5bc020 1.50 : 5bbfeb: 48 8b 4a 10 mov 0x10(%rdx),%rcx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 11.61 : 5bbfef: 48 8b 42 08 mov 0x8(%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1669 4.12 : 5bbff3: 48 29 c8 sub %rcx,%rax 4.49 : 5bbff6: 48 39 c3 cmp %rax,%rbx 0.00 : 5bbff9: 77 25 ja 5bc020 : return newChunk->data; : } : : /* There is enough space in the current chunk, let's add the tuple */ : ptr = hashtable->chunks->data + hashtable->chunks->used; : hashtable->chunks->used += size; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1688 5.24 : 5bbffb: 48 8d 04 0b lea (%rbx,%rcx,1),%rax 0.37 : 5bbfff: 48 89 42 10 mov %rax,0x10(%rdx) : hashtable->chunks->ntuples += 1; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1689 1.50 : 5bc003: 48 8b 87 c8 00 00 00 mov 0xc8(%rdi),%rax 2.25 : 5bc00a: 83 00 01 addl $0x1,(%rax) : : /* return pointer to the start of the tuple memory */ : return ptr; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1692 8.61 : 5bc00d: 48 8d 44 0a 20 lea 0x20(%rdx,%rcx,1),%rax : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1693 6.37 : 5bc012: 5b pop %rbx 10.11 : 5bc013: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1693 4.49 : 5bc015: c9 leaveq 4.49 : 5bc016: c3 retq 0.00 : 5bc017: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5bc01e: 00 00 : */ : if ((hashtable->chunks == NULL) || : (hashtable->chunks->maxlen - hashtable->chunks->used) < size) : { : /* allocate new chunk and put it at the beginning of the list */ : newChunk = (HashMemoryChunk) MemoryContextAlloc(hashtable->batchCxt, 0.37 : 5bc020: 49 8b bc 24 c0 00 00 mov 0xc0(%r12),%rdi 0.00 : 5bc027: 00 0.00 : 5bc028: be 20 80 00 00 mov $0x8020,%esi 0.00 : 5bc02d: e8 5e ce 1d 00 callq 798e90 : offsetof(HashMemoryChunkData, data) + HASH_CHUNK_SIZE); : : newChunk->maxlen = HASH_CHUNK_SIZE; 0.00 : 5bc032: 48 c7 40 08 00 80 00 movq $0x8000,0x8(%rax) 0.00 : 5bc039: 00 : newChunk->used = size; 0.00 : 5bc03a: 48 89 58 10 mov %rbx,0x10(%rax) : newChunk->ntuples = 1; 0.00 : 5bc03e: c7 00 01 00 00 00 movl $0x1,(%rax) : : newChunk->next = hashtable->chunks; 0.00 : 5bc044: 49 8b 94 24 c8 00 00 mov 0xc8(%r12),%rdx 0.00 : 5bc04b: 00 0.00 : 5bc04c: 48 89 50 18 mov %rdx,0x18(%rax) : hashtable->chunks = newChunk; 0.00 : 5bc050: 49 89 84 24 c8 00 00 mov %rax,0xc8(%r12) 0.00 : 5bc057: 00 : : return newChunk->data; 0.00 : 5bc058: 48 83 c0 20 add $0x20,%rax : hashtable->chunks->used += size; : hashtable->chunks->ntuples += 1; : : /* return pointer to the start of the tuple memory */ : return ptr; : } 0.00 : 5bc05c: 5b pop %rbx 0.00 : 5bc05d: 41 5c pop %r12 0.00 : 5bc05f: c9 leaveq 0.00 : 5bc060: c3 retq 0.00 : 5bc061: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * chunk. : */ : if (size > HASH_CHUNK_THRESHOLD) : { : /* allocate new chunk and put it at the beginning of the list */ : newChunk = (HashMemoryChunk) MemoryContextAlloc(hashtable->batchCxt, 0.00 : 5bc068: 48 8b bf c0 00 00 00 mov 0xc0(%rdi),%rdi 0.00 : 5bc06f: 48 8d 73 20 lea 0x20(%rbx),%rsi 0.00 : 5bc073: e8 18 ce 1d 00 callq 798e90 0.00 : 5bc078: 48 89 c2 mov %rax,%rdx : offsetof(HashMemoryChunkData, data) + size); : newChunk->maxlen = size; 0.00 : 5bc07b: 48 89 58 08 mov %rbx,0x8(%rax) : newChunk->used = 0; 0.00 : 5bc07f: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5bc086: 00 : newChunk->ntuples = 0; 0.00 : 5bc087: c7 00 00 00 00 00 movl $0x0,(%rax) : : /* : * Add this chunk to the list after the first existing chunk, so that : * we don't lose the remaining space in the "current" chunk. : */ : if (hashtable->chunks != NULL) 0.00 : 5bc08d: 49 8b 84 24 c8 00 00 mov 0xc8(%r12),%rax 0.00 : 5bc094: 00 0.00 : 5bc095: 48 85 c0 test %rax,%rax 0.00 : 5bc098: 74 26 je 5bc0c0 : { : newChunk->next = hashtable->chunks->next; 0.00 : 5bc09a: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 5bc09e: 48 89 42 18 mov %rax,0x18(%rdx) : hashtable->chunks->next = newChunk; 0.00 : 5bc0a2: 49 8b 84 24 c8 00 00 mov 0xc8(%r12),%rax 0.00 : 5bc0a9: 00 0.00 : 5bc0aa: 48 89 50 18 mov %rdx,0x18(%rax) : { : newChunk->next = hashtable->chunks; : hashtable->chunks = newChunk; : } : : newChunk->used += size; 0.00 : 5bc0ae: 48 01 5a 10 add %rbx,0x10(%rdx) : newChunk->ntuples += 1; 0.00 : 5bc0b2: 83 02 01 addl $0x1,(%rdx) : : return newChunk->data; 0.00 : 5bc0b5: 48 8d 42 20 lea 0x20(%rdx),%rax : hashtable->chunks->used += size; : hashtable->chunks->ntuples += 1; : : /* return pointer to the start of the tuple memory */ : return ptr; : } 0.00 : 5bc0b9: 5b pop %rbx 0.00 : 5bc0ba: 41 5c pop %r12 0.00 : 5bc0bc: c9 leaveq 0.00 : 5bc0bd: c3 retq 0.00 : 5bc0be: 66 90 xchg %ax,%ax : newChunk->next = hashtable->chunks->next; : hashtable->chunks->next = newChunk; : } : else : { : newChunk->next = hashtable->chunks; 0.00 : 5bc0c0: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 5bc0c7: 00 : hashtable->chunks = newChunk; 0.00 : 5bc0c8: 49 89 94 24 c8 00 00 mov %rdx,0xc8(%r12) 0.00 : 5bc0cf: 00 0.00 : 5bc0d0: eb dc jmp 5bc0ae Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 18.18 ??:0 10.23 ??:0 10.23 ??:0 3.98 ??:0 3.41 ??:0 3.41 ??:0 2.84 ??:0 2.84 ??:0 2.84 ??:0 2.84 ??:0 2.84 ??:0 2.84 ??:0 2.84 ??:0 2.27 ??:0 1.70 ??:0 1.70 ??:0 1.70 ??:0 1.70 ??:0 1.70 ??:0 1.14 ??:0 1.14 ??:0 1.14 ??:0 1.14 ??:0 1.14 ??:0 1.14 ??:0 1.14 ??:0 1.14 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 0.57 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008cd90 <__mbrtowc>: ??:0 3.41 : 8cd90: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 2.84 : 8cd95: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.57 : 8cd9a: 48 89 d5 mov %rdx,%rbp 0.57 : 8cd9d: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 8cda2: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.57 : 8cda7: 48 8d 05 ee 7b 2e 00 lea 0x2e7bee(%rip),%rax # 37499c 0.00 : 8cdae: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 2.84 : 8cdb3: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 8cdb8: 48 81 ec a8 00 00 00 sub $0xa8,%rsp 0.57 : 8cdbf: 48 8d 54 24 60 lea 0x60(%rsp),%rdx 0.57 : 8cdc4: 48 85 ff test %rdi,%rdi 2.27 : 8cdc7: 49 89 f5 mov %rsi,%r13 0.00 : 8cdca: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 8cdd1: 00 0.57 : 8cdd2: c7 44 24 28 01 00 00 movl $0x1,0x28(%rsp) 0.00 : 8cdd9: 00 0.00 : 8cdda: 48 0f 44 fa cmove %rdx,%rdi 1.14 : 8cdde: 48 85 c9 test %rcx,%rcx 0.57 : 8cde1: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 8cde8: 00 1.14 : 8cde9: 48 0f 44 c8 cmove %rax,%rcx 2.84 : 8cded: 48 85 f6 test %rsi,%rsi 0.57 : 8cdf0: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : 8cdf7: 00 00 0.57 : 8cdf9: 48 89 4c 24 30 mov %rcx,0x30(%rsp) 3.98 : 8cdfe: 49 89 fe mov %rdi,%r14 0.00 : 8ce01: 0f 84 59 01 00 00 je 8cf60 <__mbrtowc+0x1d0> 0.00 : 8ce07: 49 8d 46 04 lea 0x4(%r14),%rax 0.57 : 8ce0b: 64 4c 8b 3c 25 00 00 mov %fs:0x0,%r15 0.00 : 8ce12: 00 00 1.14 : 8ce14: 4c 89 74 24 10 mov %r14,0x10(%rsp) 0.00 : 8ce19: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 8ce1e: 48 8b 05 63 4f 2e 00 mov 0x2e4f63(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 8ce25: 49 8b 04 07 mov (%r15,%rax,1),%rax 2.84 : 8ce29: 48 8b 18 mov (%rax),%rbx 2.84 : 8ce2c: 4c 8b 63 28 mov 0x28(%rbx),%r12 ??:0 10.23 : 8ce30: 4d 85 e4 test %r12,%r12 0.00 : 8ce33: 0f 84 3f 01 00 00 je 8cf78 <__mbrtowc+0x1e8> ??:0 0.57 : 8ce39: 4c 01 ed add %r13,%rbp 0.00 : 8ce3c: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 8ce43: 4c 89 6c 24 50 mov %r13,0x50(%rsp) 0.00 : 8ce48: 48 0f 42 e8 cmovb %rax,%rbp 1.70 : 8ce4c: 49 8b 04 24 mov (%r12),%rax ??:0 10.23 : 8ce50: 48 83 38 00 cmpq $0x0,(%rax) 18.18 : 8ce54: 48 8b 58 28 mov 0x28(%rax),%rbx ??:0 0.57 : 8ce58: 74 0d je 8ce67 <__mbrtowc+0xd7> 0.00 : 8ce5a: 48 c1 cb 11 ror $0x11,%rbx 0.00 : 8ce5e: 64 48 33 1c 25 30 00 xor %fs:0x30,%rbx 0.00 : 8ce65: 00 00 1.14 : 8ce67: 48 89 df mov %rbx,%rdi 1.14 : 8ce6a: e8 a1 5e 08 00 callq 112d10 <_dl_mcount_wrapper_check> 1.70 : 8ce6f: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 8ce76: 00 0.00 : 8ce77: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 8ce7e: 45 31 c0 xor %r8d,%r8d 0.57 : 8ce81: 48 8d 54 24 50 lea 0x50(%rsp),%rdx 0.00 : 8ce86: 48 8d 74 24 10 lea 0x10(%rsp),%rsi 0.00 : 8ce8b: 4c 8d 4c 24 58 lea 0x58(%rsp),%r9 0.00 : 8ce90: 48 89 e9 mov %rbp,%rcx 1.70 : 8ce93: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 8ce97: ff d3 callq *%rbx 0.00 : 8ce99: 85 c0 test %eax,%eax 0.00 : 8ce9b: 74 19 je 8ceb6 <__mbrtowc+0x126> 0.00 : 8ce9d: 83 f8 04 cmp $0x4,%eax 0.00 : 8cea0: 74 7e je 8cf20 <__mbrtowc+0x190> 0.57 : 8cea2: 83 f8 06 cmp $0x6,%eax 0.00 : 8cea5: 74 79 je 8cf20 <__mbrtowc+0x190> 1.70 : 8cea7: 83 f8 07 cmp $0x7,%eax 0.00 : 8ceaa: 74 74 je 8cf20 <__mbrtowc+0x190> 1.14 : 8ceac: 83 f8 05 cmp $0x5,%eax 0.00 : 8ceaf: 90 nop 0.00 : 8ceb0: 0f 85 ea 00 00 00 jne 8cfa0 <__mbrtowc+0x210> 2.84 : 8ceb6: 4c 39 74 24 10 cmp %r14,0x10(%rsp) 0.00 : 8cebb: 74 53 je 8cf10 <__mbrtowc+0x180> 1.14 : 8cebd: 41 8b 16 mov (%r14),%edx 0.00 : 8cec0: 85 d2 test %edx,%edx 0.00 : 8cec2: 75 4c jne 8cf10 <__mbrtowc+0x180> 0.00 : 8cec4: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 8cec9: 31 d2 xor %edx,%edx 0.00 : 8cecb: 8b 00 mov (%rax),%eax 0.00 : 8cecd: 85 c0 test %eax,%eax 0.00 : 8cecf: 0f 85 ea 00 00 00 jne 8cfbf <__mbrtowc+0x22f> 2.84 : 8ced5: 48 89 d0 mov %rdx,%rax 0.57 : 8ced8: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : 8cedd: 48 8b ac 24 80 00 00 mov 0x80(%rsp),%rbp 0.00 : 8cee4: 00 0.00 : 8cee5: 4c 8b a4 24 88 00 00 mov 0x88(%rsp),%r12 0.00 : 8ceec: 00 3.41 : 8ceed: 4c 8b ac 24 90 00 00 mov 0x90(%rsp),%r13 0.00 : 8cef4: 00 0.57 : 8cef5: 4c 8b b4 24 98 00 00 mov 0x98(%rsp),%r14 0.00 : 8cefc: 00 0.00 : 8cefd: 4c 8b bc 24 a0 00 00 mov 0xa0(%rsp),%r15 0.00 : 8cf04: 00 0.00 : 8cf05: 48 81 c4 a8 00 00 00 add $0xa8,%rsp 1.70 : 8cf0c: c3 retq 0.00 : 8cf0d: 0f 1f 00 nopl (%rax) 0.57 : 8cf10: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.57 : 8cf15: 4c 29 ea sub %r13,%rdx 1.14 : 8cf18: eb bb jmp 8ced5 <__mbrtowc+0x145> 0.00 : 8cf1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.57 : 8cf20: 85 c0 test %eax,%eax 0.00 : 8cf22: 74 92 je 8ceb6 <__mbrtowc+0x126> 0.00 : 8cf24: 83 f8 04 cmp $0x4,%eax 0.00 : 8cf27: 74 8d je 8ceb6 <__mbrtowc+0x126> 0.00 : 8cf29: 83 f8 05 cmp $0x5,%eax 0.00 : 8cf2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8cf30: 74 84 je 8ceb6 <__mbrtowc+0x126> 0.00 : 8cf32: 83 f8 07 cmp $0x7,%eax 0.00 : 8cf35: 48 c7 c2 fe ff ff ff mov $0xfffffffffffffffe,%rdx 0.00 : 8cf3c: 74 97 je 8ced5 <__mbrtowc+0x145> 0.00 : 8cf3e: 48 8b 05 f3 4e 2e 00 mov 0x2e4ef3(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 8cf45: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 8cf4c: 41 c7 04 07 54 00 00 movl $0x54,(%r15,%rax,1) 0.00 : 8cf53: 00 0.00 : 8cf54: e9 7c ff ff ff jmpq 8ced5 <__mbrtowc+0x145> 0.00 : 8cf59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8cf60: 49 89 d6 mov %rdx,%r14 0.00 : 8cf63: 4c 8d 2d d6 da 0a 00 lea 0xadad6(%rip),%r13 # 13aa40 0.00 : 8cf6a: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 8cf6f: e9 93 fe ff ff jmpq 8ce07 <__mbrtowc+0x77> 0.00 : 8cf74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8cf78: 48 8d 05 c1 2d 2e 00 lea 0x2e2dc1(%rip),%rax # 36fd40 <_nl_C_LC_CTYPE> 0.00 : 8cf7f: 4c 8d 25 7a 24 2e 00 lea 0x2e247a(%rip),%r12 # 36f400 <__wcsmbs_gconv_fcts_c> 0.00 : 8cf86: 48 39 c3 cmp %rax,%rbx 0.00 : 8cf89: 0f 84 aa fe ff ff je 8ce39 <__mbrtowc+0xa9> 0.00 : 8cf8f: 48 89 df mov %rbx,%rdi 0.00 : 8cf92: e8 59 a3 00 00 callq 972f0 <__wcsmbs_load_conv> 0.00 : 8cf97: 4c 8b 63 28 mov 0x28(%rbx),%r12 0.00 : 8cf9b: e9 99 fe ff ff jmpq 8ce39 <__mbrtowc+0xa9> 0.00 : 8cfa0: 48 8d 0d 48 f0 0a 00 lea 0xaf048(%rip),%rcx # 13bfef <__PRETTY_FUNCTION__.11266> 0.00 : 8cfa7: 48 8d 35 37 f0 0a 00 lea 0xaf037(%rip),%rsi # 13bfe5 <__PRETTY_FUNCTION__.3721+0xb> 0.00 : 8cfae: 48 8d 3d 63 33 0b 00 lea 0xb3363(%rip),%rdi # 140318 <__PRETTY_FUNCTION__.11129+0x293f> 0.00 : 8cfb5: ba 5c 00 00 00 mov $0x5c,%edx 0.00 : 8cfba: e8 61 e9 f9 ff callq 2b920 <__assert_fail> 0.00 : 8cfbf: 48 8d 0d 29 f0 0a 00 lea 0xaf029(%rip),%rcx # 13bfef <__PRETTY_FUNCTION__.11266> 0.00 : 8cfc6: 48 8d 35 18 f0 0a 00 lea 0xaf018(%rip),%rsi # 13bfe5 <__PRETTY_FUNCTION__.3721+0xb> 0.00 : 8cfcd: 48 8d 3d e4 33 0b 00 lea 0xb33e4(%rip),%rdi # 1403b8 <__PRETTY_FUNCTION__.11129+0x29df> 0.00 : 8cfd4: ba 65 00 00 00 mov $0x65,%edx 0.00 : 8cfd9: e8 42 e9 f9 ff callq 2b920 <__assert_fail> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.98 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 13.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:130 9.43 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 7.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 6.04 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:118 5.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 5.28 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:314 4.53 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 3.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:130 3.40 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:314 3.40 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 2.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:314 2.26 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 1.89 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:131 1.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 1.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:130 1.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:131 1.13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 1.13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:131 1.13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:132 1.13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:118 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:131 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004aac20 <_bt_getroot>: : * On successful return, the root page is pinned and read-locked. : * The metadata page is not locked or pinned on exit. : */ : Buffer : _bt_getroot(Relation rel, int access) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 5.28 : 4aac20: 55 push %rbp 9.43 : 4aac21: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 1.13 : 4aac24: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 7.17 : 4aac26: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:102 2.26 : 4aac28: 49 89 fe mov %rdi,%r14 0.38 : 4aac2b: 41 55 push %r13 1.51 : 4aac2d: 41 89 f5 mov %esi,%r13d 0.00 : 4aac30: 41 54 push %r12 0.38 : 4aac32: 53 push %rbx 0.75 : 4aac33: 48 83 ec 58 sub $0x58,%rsp : /* : * Try to use previously-cached metapage data to find the root. This : * normally saves one buffer access per index search, which is a very : * helpful savings in bufmgr traffic and hence contention. : */ : if (rel->rd_amcache != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:118 0.75 : 4aac37: 48 8b 87 18 01 00 00 mov 0x118(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:118 6.04 : 4aac3e: 48 85 c0 test %rax,%rax 0.00 : 4aac41: 74 6a je 4aacad <_bt_getroot+0x8d> : : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:130 1.51 : 4aac43: 8b 70 10 mov 0x10(%rax),%esi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:130 13.58 : 4aac46: ba 01 00 00 00 mov $0x1,%edx : Assert(metad->btm_version == BTREE_VERSION); : Assert(metad->btm_root != P_NONE); : : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; 0.00 : 4aac4b: 8b 58 14 mov 0x14(%rax),%ebx : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:130 3.77 : 4aac4e: e8 fd e3 ff ff callq 4a9050 <_bt_getbuf> : rootpage = BufferGetPage(rootbuf); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:131 1.13 : 4aac53: 85 c0 test %eax,%eax : : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); 0.00 : 4aac55: 41 89 c4 mov %eax,%r12d : rootpage = BufferGetPage(rootbuf); 1.51 : 4aac58: 0f 88 6a 02 00 00 js 4aaec8 <_bt_getroot+0x2a8> 0.00 : 4aac5e: 41 8d 44 24 ff lea -0x1(%r12),%eax 1.89 : 4aac63: 48 63 d0 movslq %eax,%rdx 0.00 : 4aac66: 48 c1 e2 0d shl $0xd,%rdx 0.75 : 4aac6a: 48 03 15 87 4e 71 00 add 0x714e87(%rip),%rdx # bbfaf8 : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aac71: 0f b7 42 10 movzwl 0x10(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:132 1.13 : 4aac75: 48 01 c2 add %rax,%rdx : * here than normal. We *must* check that it's not deleted. If it's : * not alone on its level, then we reject too --- this may be overly : * paranoid but better safe than sorry. Note we don't check P_ISROOT, : * because that's not set in a "fast root". : */ : if (!P_IGNORE(rootopaque) && 0.00 : 4aac78: 0f b7 42 0c movzwl 0xc(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 16.98 : 4aac7c: a8 14 test $0x14,%al 0.00 : 4aac7e: 75 09 jne 4aac89 <_bt_getroot+0x69> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 0.75 : 4aac80: 39 5a 08 cmp %ebx,0x8(%rdx) 0.00 : 4aac83: 0f 84 57 02 00 00 je 4aaee0 <_bt_getroot+0x2c0> : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4aac89: 44 89 e7 mov %r12d,%edi 0.00 : 4aac8c: e8 9f a2 1c 00 callq 674f30 : /* OK, accept cached page as the root */ : return rootbuf; : } : _bt_relbuf(rel, rootbuf); : /* Cache is stale, throw it away */ : if (rel->rd_amcache) 0.00 : 4aac91: 49 8b be 18 01 00 00 mov 0x118(%r14),%rdi 0.00 : 4aac98: 48 85 ff test %rdi,%rdi 0.00 : 4aac9b: 74 05 je 4aaca2 <_bt_getroot+0x82> : pfree(rel->rd_amcache); 0.00 : 4aac9d: e8 de de 2e 00 callq 798b80 : rel->rd_amcache = NULL; 0.00 : 4aaca2: 49 c7 86 18 01 00 00 movq $0x0,0x118(%r14) 0.00 : 4aaca9: 00 00 00 00 : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); 0.00 : 4aacad: 31 f6 xor %esi,%esi 0.00 : 4aacaf: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4aacb4: 4c 89 f7 mov %r14,%rdi 0.00 : 4aacb7: e8 94 e3 ff ff callq 4a9050 <_bt_getbuf> : metapg = BufferGetPage(metabuf); 0.00 : 4aacbc: 85 c0 test %eax,%eax : if (rel->rd_amcache) : pfree(rel->rd_amcache); : rel->rd_amcache = NULL; : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); 0.00 : 4aacbe: 41 89 c0 mov %eax,%r8d : metapg = BufferGetPage(metabuf); 0.00 : 4aacc1: 0f 88 e9 01 00 00 js 4aaeb0 <_bt_getroot+0x290> 0.00 : 4aacc7: 41 8d 40 ff lea -0x1(%r8),%eax 0.00 : 4aaccb: 48 63 d8 movslq %eax,%rbx 0.00 : 4aacce: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4aacd2: 48 03 1d 1f 4e 71 00 add 0x714e1f(%rip),%rbx # bbfaf8 : metaopaque = (BTPageOpaque) PageGetSpecialPointer(metapg); : metad = BTPageGetMeta(metapg); : : /* sanity-check the metapage */ : if (!(metaopaque->btpo_flags & BTP_META) || 0.00 : 4aacd9: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.38 : 4aacdd: f6 44 03 0c 08 testb $0x8,0xc(%rbx,%rax,1) 0.00 : 4aace2: 74 0d je 4aacf1 <_bt_getroot+0xd1> 0.00 : 4aace4: 81 7b 18 62 31 05 00 cmpl $0x53162,0x18(%rbx) : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); : metapg = BufferGetPage(metabuf); : metaopaque = (BTPageOpaque) PageGetSpecialPointer(metapg); : metad = BTPageGetMeta(metapg); 0.00 : 4aaceb: 4c 8d 7b 18 lea 0x18(%rbx),%r15 : : /* sanity-check the metapage */ : if (!(metaopaque->btpo_flags & BTP_META) || 0.00 : 4aacef: 74 5f je 4aad50 <_bt_getroot+0x130> : metad->btm_magic != BTREE_MAGIC) : ereport(ERROR, 0.00 : 4aacf1: 45 31 c0 xor %r8d,%r8d 0.00 : 4aacf4: b9 50 47 7b 00 mov $0x7b4750,%ecx 0.00 : 4aacf9: ba a7 00 00 00 mov $0xa7,%edx 0.00 : 4aacfe: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4aad03: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4aad08: e8 b3 fd 2c 00 callq 77aac0 0.00 : 4aad0d: 84 c0 test %al,%al 0.00 : 4aad0f: 75 0f jne 4aad20 <_bt_getroot+0x100> : rootblkno = rootopaque->btpo_next; : } : : /* Note: can't check btpo.level on deleted pages */ : if (rootopaque->btpo.level != rootlevel) : elog(ERROR, "root page %u of index \"%s\" has level %u, expected %u", 0.00 : 4aad11: e8 ba e7 fb ff callq 4694d0 0.00 : 4aad16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4aad1d: 00 00 00 : metad = BTPageGetMeta(metapg); : : /* sanity-check the metapage */ : if (!(metaopaque->btpo_flags & BTP_META) || : metad->btm_magic != BTREE_MAGIC) : ereport(ERROR, 0.00 : 4aad20: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4aad24: bf 4a 43 7b 00 mov $0x7b434a,%edi 0.00 : 4aad29: 31 c0 xor %eax,%eax 0.00 : 4aad2b: e8 70 1b 2d 00 callq 77c8a0 : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" is not a btree", : RelationGetRelationName(rel)))); : : if (metad->btm_version != BTREE_VERSION) : ereport(ERROR, 0.00 : 4aad30: 89 c3 mov %eax,%ebx 0.00 : 4aad32: bf 28 0a 00 02 mov $0x2000a28,%edi 0.00 : 4aad37: e8 14 20 2d 00 callq 77cd50 0.00 : 4aad3c: 89 de mov %ebx,%esi 0.00 : 4aad3e: 89 c7 mov %eax,%edi 0.00 : 4aad40: 31 c0 xor %eax,%eax 0.00 : 4aad42: e8 99 f8 2c 00 callq 77a5e0 : rootblkno = rootopaque->btpo_next; : } : : /* Note: can't check btpo.level on deleted pages */ : if (rootopaque->btpo.level != rootlevel) : elog(ERROR, "root page %u of index \"%s\" has level %u, expected %u", 0.00 : 4aad47: e8 84 e7 fb ff callq 4694d0 0.00 : 4aad4c: 0f 1f 40 00 nopl 0x0(%rax) : ereport(ERROR, : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" is not a btree", : RelationGetRelationName(rel)))); : : if (metad->btm_version != BTREE_VERSION) 0.00 : 4aad50: 41 83 7f 04 02 cmpl $0x2,0x4(%r15) 0.00 : 4aad55: 0f 85 7b 03 00 00 jne 4ab0d6 <_bt_getroot+0x4b6> : errmsg("version mismatch in index \"%s\": file version %d, code version %d", : RelationGetRelationName(rel), : metad->btm_version, BTREE_VERSION))); : : /* if no root page initialized yet, do it */ : if (metad->btm_root == P_NONE) 0.00 : 4aad5b: 45 8b 57 08 mov 0x8(%r15),%r10d 0.00 : 4aad5f: 45 85 d2 test %r10d,%r10d 0.00 : 4aad62: 0f 85 a8 01 00 00 jne 4aaf10 <_bt_getroot+0x2f0> : { : /* If access = BT_READ, caller doesn't want us to create root yet */ : if (access == BT_READ) 0.00 : 4aad68: 41 83 fd 01 cmp $0x1,%r13d 0.00 : 4aad6c: 0f 84 8e 01 00 00 je 4aaf00 <_bt_getroot+0x2e0> : _bt_relbuf(rel, metabuf); : return InvalidBuffer; : } : : /* trade in our read lock for a write lock */ : LockBuffer(metabuf, BUFFER_LOCK_UNLOCK); 0.00 : 4aad72: 31 f6 xor %esi,%esi 0.00 : 4aad74: 44 89 c7 mov %r8d,%edi 0.00 : 4aad77: 44 89 45 80 mov %r8d,-0x80(%rbp) 0.00 : 4aad7b: e8 90 99 1c 00 callq 674710 : LockBuffer(metabuf, BT_WRITE); 0.00 : 4aad80: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aad84: be 02 00 00 00 mov $0x2,%esi 0.00 : 4aad89: 44 89 c7 mov %r8d,%edi 0.00 : 4aad8c: e8 7f 99 1c 00 callq 674710 : /* : * Race condition: if someone else initialized the metadata between : * the time we released the read lock and acquired the write lock, we : * must avoid doing it again. : */ : if (metad->btm_root != P_NONE) 0.00 : 4aad91: 45 8b 4f 08 mov 0x8(%r15),%r9d 0.00 : 4aad95: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aad99: 45 85 c9 test %r9d,%r9d 0.00 : 4aad9c: 0f 85 66 02 00 00 jne 4ab008 <_bt_getroot+0x3e8> : /* : * Get, initialize, write, and leave a lock of the appropriate type on : * the new root page. Since this is the first page in the tree, it's : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); 0.00 : 4aada2: ba 02 00 00 00 mov $0x2,%edx 0.00 : 4aada7: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 4aadac: 4c 89 f7 mov %r14,%rdi 0.00 : 4aadaf: 44 89 45 80 mov %r8d,-0x80(%rbp) 0.00 : 4aadb3: e8 98 e2 ff ff callq 4a9050 <_bt_getbuf> 0.00 : 4aadb8: 41 89 c4 mov %eax,%r12d : rootblkno = BufferGetBlockNumber(rootbuf); 0.00 : 4aadbb: 89 c7 mov %eax,%edi 0.00 : 4aadbd: e8 6e 92 1c 00 callq 674030 : rootpage = BufferGetPage(rootbuf); 0.00 : 4aadc2: 45 85 e4 test %r12d,%r12d : * Get, initialize, write, and leave a lock of the appropriate type on : * the new root page. Since this is the first page in the tree, it's : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); : rootblkno = BufferGetBlockNumber(rootbuf); 0.00 : 4aadc5: 89 45 88 mov %eax,-0x78(%rbp) : rootpage = BufferGetPage(rootbuf); 0.00 : 4aadc8: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aadcc: 0f 88 56 02 00 00 js 4ab028 <_bt_getroot+0x408> 0.00 : 4aadd2: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4aadd7: 4c 63 e8 movslq %eax,%r13 0.00 : 4aadda: 49 c1 e5 0d shl $0xd,%r13 0.00 : 4aadde: 4c 03 2d 13 4d 71 00 add 0x714d13(%rip),%r13 # bbfaf8 : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aade5: 41 0f b7 45 10 movzwl 0x10(%r13),%eax : metad->btm_root = rootblkno; : metad->btm_level = 0; : metad->btm_fastroot = rootblkno; : metad->btm_fastlevel = 0; : : MarkBufferDirty(rootbuf); 0.00 : 4aadea: 44 89 e7 mov %r12d,%edi : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); : rootblkno = BufferGetBlockNumber(rootbuf); : rootpage = BufferGetPage(rootbuf); : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aaded: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax : rootopaque->btpo_prev = rootopaque->btpo_next = P_NONE; 0.00 : 4aadf2: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) 0.00 : 4aadf9: c7 00 00 00 00 00 movl $0x0,(%rax) : rootopaque->btpo_flags = (BTP_LEAF | BTP_ROOT); 0.00 : 4aadff: 66 c7 40 0c 03 00 movw $0x3,0xc(%rax) : rootopaque->btpo.level = 0; 0.00 : 4aae05: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : rootopaque->btpo_cycleid = 0; 0.00 : 4aae0c: 66 c7 40 0e 00 00 movw $0x0,0xe(%rax) : : /* NO ELOG(ERROR) till meta is updated */ : START_CRIT_SECTION(); 0.00 : 4aae12: 8b 05 84 f2 70 00 mov 0x70f284(%rip),%eax # bba09c 0.00 : 4aae18: 83 c0 01 add $0x1,%eax 0.00 : 4aae1b: 89 05 7b f2 70 00 mov %eax,0x70f27b(%rip) # bba09c : : metad->btm_root = rootblkno; 0.00 : 4aae21: 8b 45 88 mov -0x78(%rbp),%eax : metad->btm_level = 0; 0.00 : 4aae24: 41 c7 47 0c 00 00 00 movl $0x0,0xc(%r15) 0.00 : 4aae2b: 00 : metad->btm_fastroot = rootblkno; : metad->btm_fastlevel = 0; 0.00 : 4aae2c: 41 c7 47 14 00 00 00 movl $0x0,0x14(%r15) 0.00 : 4aae33: 00 : rootopaque->btpo_cycleid = 0; : : /* NO ELOG(ERROR) till meta is updated */ : START_CRIT_SECTION(); : : metad->btm_root = rootblkno; 0.00 : 4aae34: 41 89 47 08 mov %eax,0x8(%r15) : metad->btm_level = 0; : metad->btm_fastroot = rootblkno; 0.00 : 4aae38: 41 89 47 10 mov %eax,0x10(%r15) : metad->btm_fastlevel = 0; : : MarkBufferDirty(rootbuf); 0.00 : 4aae3c: 44 89 45 80 mov %r8d,-0x80(%rbp) 0.00 : 4aae40: e8 ab 99 1c 00 callq 6747f0 : MarkBufferDirty(metabuf); 0.00 : 4aae45: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aae49: 44 89 c7 mov %r8d,%edi 0.00 : 4aae4c: e8 9f 99 1c 00 callq 6747f0 : : /* XLOG stuff */ : if (RelationNeedsWAL(rel)) 0.00 : 4aae51: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 4aae55: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aae59: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4aae5d: 0f 84 0a 02 00 00 je 4ab06d <_bt_getroot+0x44d> : : PageSetLSN(rootpage, recptr); : PageSetLSN(metapg, recptr); : } : : END_CRIT_SECTION(); 0.00 : 4aae63: 8b 05 33 f2 70 00 mov 0x70f233(%rip),%eax # bba09c : /* : * swap root write lock for read lock. There is no danger of anyone : * else accessing the new root page while it's unlocked, since no one : * else knows where it is yet. : */ : LockBuffer(rootbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4aae69: 31 f6 xor %esi,%esi 0.00 : 4aae6b: 44 89 e7 mov %r12d,%edi 0.00 : 4aae6e: 44 89 45 80 mov %r8d,-0x80(%rbp) : : PageSetLSN(rootpage, recptr); : PageSetLSN(metapg, recptr); : } : : END_CRIT_SECTION(); 0.00 : 4aae72: 83 e8 01 sub $0x1,%eax 0.00 : 4aae75: 89 05 21 f2 70 00 mov %eax,0x70f221(%rip) # bba09c : /* : * swap root write lock for read lock. There is no danger of anyone : * else accessing the new root page while it's unlocked, since no one : * else knows where it is yet. : */ : LockBuffer(rootbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4aae7b: e8 90 98 1c 00 callq 674710 : LockBuffer(rootbuf, BT_READ); 0.00 : 4aae80: 44 89 e7 mov %r12d,%edi 0.00 : 4aae83: be 01 00 00 00 mov $0x1,%esi 0.00 : 4aae88: e8 83 98 1c 00 callq 674710 : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4aae8d: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aae91: 44 89 c7 mov %r8d,%edi 0.00 : 4aae94: e8 97 a0 1c 00 callq 674f30 : /* : * By here, we have a pin and read lock on the root page, and no lock set : * on the metadata page. Return the root page's buffer. : */ : return rootbuf; : } 0.38 : 4aae99: 48 83 c4 58 add $0x58,%rsp 0.00 : 4aae9d: 44 89 e0 mov %r12d,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:314 2.64 : 4aaea0: 5b pop %rbx 0.38 : 4aaea1: 41 5c pop %r12 0.00 : 4aaea3: 41 5d pop %r13 0.00 : 4aaea5: 41 5e pop %r14 3.40 : 4aaea7: 41 5f pop %r15 0.00 : 4aaea9: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:314 5.28 : 4aaeaa: c3 retq 0.00 : 4aaeab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : pfree(rel->rd_amcache); : rel->rd_amcache = NULL; : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); : metapg = BufferGetPage(metabuf); 0.00 : 4aaeb0: 48 8b 15 61 22 6d 00 mov 0x6d2261(%rip),%rdx # b7d118 0.00 : 4aaeb7: f7 d0 not %eax 0.00 : 4aaeb9: 48 98 cltq 0.00 : 4aaebb: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4aaebf: e9 15 fe ff ff jmpq 4aacd9 <_bt_getroot+0xb9> 0.00 : 4aaec4: 0f 1f 40 00 nopl 0x0(%rax) : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); : rootpage = BufferGetPage(rootbuf); 0.00 : 4aaec8: 48 8b 15 49 22 6d 00 mov 0x6d2249(%rip),%rdx # b7d118 0.00 : 4aaecf: f7 d0 not %eax 0.00 : 4aaed1: 48 98 cltq 0.00 : 4aaed3: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4aaed7: e9 95 fd ff ff jmpq 4aac71 <_bt_getroot+0x51> 0.00 : 4aaedc: 0f 1f 40 00 nopl 0x0(%rax) : * here than normal. We *must* check that it's not deleted. If it's : * not alone on its level, then we reject too --- this may be overly : * paranoid but better safe than sorry. Note we don't check P_ISROOT, : * because that's not set in a "fast root". : */ : if (!P_IGNORE(rootopaque) && /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:141 4.53 : 4aaee0: 8b 1a mov (%rdx),%ebx 1.13 : 4aaee2: 85 db test %ebx,%ebx 0.00 : 4aaee4: 0f 85 9f fd ff ff jne 4aac89 <_bt_getroot+0x69> 0.00 : 4aaeea: 44 8b 5a 04 mov 0x4(%rdx),%r11d 0.38 : 4aaeee: 45 85 db test %r11d,%r11d 0.00 : 4aaef1: 0f 85 92 fd ff ff jne 4aac89 <_bt_getroot+0x69> 3.40 : 4aaef7: eb a0 jmp 4aae99 <_bt_getroot+0x279> 0.00 : 4aaef9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4aaf00: 44 89 c7 mov %r8d,%edi 0.00 : 4aaf03: 45 31 e4 xor %r12d,%r12d 0.00 : 4aaf06: e8 25 a0 1c 00 callq 674f30 : /* : * By here, we have a pin and read lock on the root page, and no lock set : * on the metadata page. Return the root page's buffer. : */ : return rootbuf; : } 0.00 : 4aaf0b: eb 8c jmp 4aae99 <_bt_getroot+0x279> 0.00 : 4aaf0d: 0f 1f 00 nopl (%rax) : } : else : { : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; 0.00 : 4aaf10: 41 8b 47 14 mov 0x14(%r15),%eax : : /* : * Cache the metapage data for next time : */ : rel->rd_amcache = MemoryContextAlloc(rel->rd_indexcxt, 0.00 : 4aaf14: 49 8b be b8 00 00 00 mov 0xb8(%r14),%rdi 0.00 : 4aaf1b: be 18 00 00 00 mov $0x18,%esi : /* okay, metadata is correct, release lock on it */ : _bt_relbuf(rel, metabuf); : } : else : { : rootblkno = metad->btm_fastroot; 0.00 : 4aaf20: 45 8b 6f 10 mov 0x10(%r15),%r13d : rootlevel = metad->btm_fastlevel; : : /* : * Cache the metapage data for next time : */ : rel->rd_amcache = MemoryContextAlloc(rel->rd_indexcxt, 0.00 : 4aaf24: 44 89 45 80 mov %r8d,-0x80(%rbp) : } : else : { : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; 0.00 : 4aaf28: 89 45 8c mov %eax,-0x74(%rbp) : : /* : * Cache the metapage data for next time : */ : rel->rd_amcache = MemoryContextAlloc(rel->rd_indexcxt, 0.00 : 4aaf2b: e8 60 df 2e 00 callq 798e90 0.00 : 4aaf30: 49 89 86 18 01 00 00 mov %rax,0x118(%r14) : sizeof(BTMetaPageData)); : memcpy(rel->rd_amcache, metad, sizeof(BTMetaPageData)); 0.00 : 4aaf37: 49 8b 17 mov (%r15),%rdx 0.00 : 4aaf3a: 48 89 10 mov %rdx,(%rax) 0.00 : 4aaf3d: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : 4aaf41: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 4aaf45: 49 8b 57 10 mov 0x10(%r15),%rdx 0.00 : 4aaf49: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 4aaf4d: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aaf51: 45 89 c4 mov %r8d,%r12d 0.00 : 4aaf54: eb 3a jmp 4aaf90 <_bt_getroot+0x370> 0.00 : 4aaf56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4aaf5d: 00 00 00 : rootbuf = metabuf; : : for (;;) : { : rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ); : rootpage = BufferGetPage(rootbuf); 0.00 : 4aaf60: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4aaf65: 48 63 d0 movslq %eax,%rdx 0.00 : 4aaf68: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4aaf6c: 48 03 15 85 4b 71 00 add 0x714b85(%rip),%rdx # bbfaf8 : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aaf73: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4aaf77: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : : if (!P_IGNORE(rootopaque)) 0.00 : 4aaf7b: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4aaf7f: a8 14 test $0x14,%al 0.00 : 4aaf81: 74 3d je 4aafc0 <_bt_getroot+0x3a0> : break; : : /* it's dead, Jim. step right one page */ : if (P_RIGHTMOST(rootopaque)) 0.00 : 4aaf83: 44 8b 6b 04 mov 0x4(%rbx),%r13d 0.00 : 4aaf87: 45 85 ed test %r13d,%r13d 0.00 : 4aaf8a: 0f 84 af 00 00 00 je 4ab03f <_bt_getroot+0x41f> : */ : rootbuf = metabuf; : : for (;;) : { : rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ); 0.00 : 4aaf90: 44 89 e6 mov %r12d,%esi 0.00 : 4aaf93: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4aaf98: 44 89 ea mov %r13d,%edx 0.00 : 4aaf9b: 4c 89 f7 mov %r14,%rdi 0.00 : 4aaf9e: e8 3d e0 ff ff callq 4a8fe0 <_bt_relandgetbuf> : rootpage = BufferGetPage(rootbuf); 0.00 : 4aafa3: 85 c0 test %eax,%eax : */ : rootbuf = metabuf; : : for (;;) : { : rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ); 0.00 : 4aafa5: 41 89 c4 mov %eax,%r12d : rootpage = BufferGetPage(rootbuf); 0.00 : 4aafa8: 79 b6 jns 4aaf60 <_bt_getroot+0x340> 0.00 : 4aafaa: 48 8b 15 67 21 6d 00 mov 0x6d2167(%rip),%rdx # b7d118 0.00 : 4aafb1: f7 d0 not %eax 0.00 : 4aafb3: 48 98 cltq 0.00 : 4aafb5: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4aafb9: eb b8 jmp 4aaf73 <_bt_getroot+0x353> 0.00 : 4aafbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : RelationGetRelationName(rel)); : rootblkno = rootopaque->btpo_next; : } : : /* Note: can't check btpo.level on deleted pages */ : if (rootopaque->btpo.level != rootlevel) 0.00 : 4aafc0: 8b 45 8c mov -0x74(%rbp),%eax 0.00 : 4aafc3: 39 43 08 cmp %eax,0x8(%rbx) 0.00 : 4aafc6: 0f 84 cd fe ff ff je 4aae99 <_bt_getroot+0x279> : elog(ERROR, "root page %u of index \"%s\" has level %u, expected %u", 0.00 : 4aafcc: ba 50 47 7b 00 mov $0x7b4750,%edx 0.00 : 4aafd1: be 32 01 00 00 mov $0x132,%esi 0.00 : 4aafd6: bf 22 43 7b 00 mov $0x7b4322,%edi 0.00 : 4aafdb: e8 40 04 2d 00 callq 77b420 0.00 : 4aafe0: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 4aafe4: 44 8b 4d 8c mov -0x74(%rbp),%r9d 0.00 : 4aafe8: 44 89 ea mov %r13d,%edx 0.00 : 4aafeb: 44 8b 43 08 mov 0x8(%rbx),%r8d 0.00 : 4aafef: be 58 46 7b 00 mov $0x7b4658,%esi 0.00 : 4aaff4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4aaff9: 31 c0 xor %eax,%eax 0.00 : 4aaffb: e8 30 02 2d 00 callq 77b230 0.00 : 4ab000: e9 0c fd ff ff jmpq 4aad11 <_bt_getroot+0xf1> 0.00 : 4ab005: 0f 1f 00 nopl (%rax) : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4ab008: 44 89 c7 mov %r8d,%edi 0.00 : 4ab00b: e8 20 9f 1c 00 callq 674f30 : * deadlocks, we have to release the metadata page and start all : * over again. (Is that really true? But it's hardly worth trying : * to optimize this case.) : */ : _bt_relbuf(rel, metabuf); : return _bt_getroot(rel, access); 0.00 : 4ab010: 44 89 ee mov %r13d,%esi 0.00 : 4ab013: 4c 89 f7 mov %r14,%rdi 0.00 : 4ab016: e8 05 fc ff ff callq 4aac20 <_bt_getroot> 0.00 : 4ab01b: 41 89 c4 mov %eax,%r12d : /* : * By here, we have a pin and read lock on the root page, and no lock set : * on the metadata page. Return the root page's buffer. : */ : return rootbuf; : } 0.00 : 4ab01e: e9 76 fe ff ff jmpq 4aae99 <_bt_getroot+0x279> 0.00 : 4ab023: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * the new root page. Since this is the first page in the tree, it's : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); : rootblkno = BufferGetBlockNumber(rootbuf); : rootpage = BufferGetPage(rootbuf); 0.00 : 4ab028: 44 89 e0 mov %r12d,%eax 0.00 : 4ab02b: 48 8b 15 e6 20 6d 00 mov 0x6d20e6(%rip),%rdx # b7d118 0.00 : 4ab032: f7 d0 not %eax 0.00 : 4ab034: 48 98 cltq 0.00 : 4ab036: 4c 8b 2c c2 mov (%rdx,%rax,8),%r13 0.00 : 4ab03a: e9 a6 fd ff ff jmpq 4aade5 <_bt_getroot+0x1c5> : if (!P_IGNORE(rootopaque)) : break; : : /* it's dead, Jim. step right one page */ : if (P_RIGHTMOST(rootopaque)) : elog(ERROR, "no live root page found in index \"%s\"", 0.00 : 4ab03f: ba 50 47 7b 00 mov $0x7b4750,%edx 0.00 : 4ab044: be 2a 01 00 00 mov $0x12a,%esi 0.00 : 4ab049: bf 22 43 7b 00 mov $0x7b4322,%edi 0.00 : 4ab04e: e8 cd 03 2d 00 callq 77b420 0.00 : 4ab053: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 4ab057: be 30 46 7b 00 mov $0x7b4630,%esi 0.00 : 4ab05c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ab061: 31 c0 xor %eax,%eax 0.00 : 4ab063: e8 c8 01 2d 00 callq 77b230 0.00 : 4ab068: e8 63 e4 fb ff callq 4694d0 : { : xl_btree_newroot xlrec; : XLogRecPtr recptr; : XLogRecData rdata; : : xlrec.node = rel->rd_node; 0.00 : 4ab06d: 49 8b 06 mov (%r14),%rax : rdata.data = (char *) &xlrec; : rdata.len = SizeOfBtreeNewroot; : rdata.buffer = InvalidBuffer; : rdata.next = NULL; : : recptr = XLogInsert(RM_BTREE_ID, XLOG_BTREE_NEWROOT, &rdata); 0.00 : 4ab070: 48 8d 55 90 lea -0x70(%rbp),%rdx 0.00 : 4ab074: be a0 00 00 00 mov $0xa0,%esi 0.00 : 4ab079: bf 0b 00 00 00 mov $0xb,%edi : XLogRecPtr recptr; : XLogRecData rdata; : : xlrec.node = rel->rd_node; : xlrec.rootblk = rootblkno; : xlrec.level = 0; 0.00 : 4ab07e: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) : : rdata.data = (char *) &xlrec; : rdata.len = SizeOfBtreeNewroot; 0.00 : 4ab085: c7 45 98 14 00 00 00 movl $0x14,-0x68(%rbp) : rdata.buffer = InvalidBuffer; 0.00 : 4ab08c: c7 45 9c 00 00 00 00 movl $0x0,-0x64(%rbp) : rdata.next = NULL; 0.00 : 4ab093: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 4ab09a: 00 : { : xl_btree_newroot xlrec; : XLogRecPtr recptr; : XLogRecData rdata; : : xlrec.node = rel->rd_node; 0.00 : 4ab09b: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 4ab09f: 41 8b 46 08 mov 0x8(%r14),%eax 0.00 : 4ab0a3: 89 45 b8 mov %eax,-0x48(%rbp) : xlrec.rootblk = rootblkno; 0.00 : 4ab0a6: 8b 45 88 mov -0x78(%rbp),%eax 0.00 : 4ab0a9: 89 45 bc mov %eax,-0x44(%rbp) : xlrec.level = 0; : : rdata.data = (char *) &xlrec; 0.00 : 4ab0ac: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 4ab0b0: 48 89 45 90 mov %rax,-0x70(%rbp) : rdata.len = SizeOfBtreeNewroot; : rdata.buffer = InvalidBuffer; : rdata.next = NULL; : : recptr = XLogInsert(RM_BTREE_ID, XLOG_BTREE_NEWROOT, &rdata); 0.00 : 4ab0b4: e8 67 9e 02 00 callq 4d4f20 : : PageSetLSN(rootpage, recptr); 0.00 : 4ab0b9: 48 89 c2 mov %rax,%rdx 0.00 : 4ab0bc: 41 89 45 04 mov %eax,0x4(%r13) 0.00 : 4ab0c0: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4ab0c4: 41 89 55 00 mov %edx,0x0(%r13) : PageSetLSN(metapg, recptr); 0.00 : 4ab0c8: 89 13 mov %edx,(%rbx) 0.00 : 4ab0ca: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 4ab0cd: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4ab0d1: e9 8d fd ff ff jmpq 4aae63 <_bt_getroot+0x243> : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" is not a btree", : RelationGetRelationName(rel)))); : : if (metad->btm_version != BTREE_VERSION) : ereport(ERROR, 0.00 : 4ab0d6: 45 31 c0 xor %r8d,%r8d 0.00 : 4ab0d9: b9 50 47 7b 00 mov $0x7b4750,%ecx 0.00 : 4ab0de: ba ae 00 00 00 mov $0xae,%edx 0.00 : 4ab0e3: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4ab0e8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ab0ed: e8 ce f9 2c 00 callq 77aac0 0.00 : 4ab0f2: 84 c0 test %al,%al 0.00 : 4ab0f4: 0f 84 17 fc ff ff je 4aad11 <_bt_getroot+0xf1> 0.00 : 4ab0fa: 41 8b 57 04 mov 0x4(%r15),%edx 0.00 : 4ab0fe: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4ab102: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 4ab107: bf e8 45 7b 00 mov $0x7b45e8,%edi 0.00 : 4ab10c: 31 c0 xor %eax,%eax 0.00 : 4ab10e: e8 8d 17 2d 00 callq 77c8a0 0.00 : 4ab113: e9 18 fc ff ff jmpq 4aad30 <_bt_getroot+0x110> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.32 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 25.70 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 11.68 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:90 11.68 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 7.94 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:92 4.67 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:90 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2de0 : : * but this function returns true only for toast relations of system : * catalogs. : */ : bool : IsCatalogRelation(Relation relation) : { /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:90 11.68 : 4e2de0: 55 push %rbp : return IsCatalogClass(RelationGetRelid(relation), relation->rd_rel); /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 38.32 : 4e2de1: 48 8b 77 30 mov 0x30(%rdi),%rsi 25.70 : 4e2de5: 8b 7f 40 mov 0x40(%rdi),%edi : * but this function returns true only for toast relations of system : * catalogs. : */ : bool : IsCatalogRelation(Relation relation) : { /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:90 4.67 : 4e2de8: 48 89 e5 mov %rsp,%rbp : return IsCatalogClass(RelationGetRelid(relation), relation->rd_rel); : } /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:92 7.94 : 4e2deb: c9 leaveq : * catalogs. : */ : bool : IsCatalogRelation(Relation relation) : { : return IsCatalogClass(RelationGetRelid(relation), relation->rd_rel); /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 11.68 : 4e2dec: e9 bf ff ff ff jmpq 4e2db0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 45.23 ??:0 17.01 ??:0 8.30 ??:0 4.98 ??:0 4.56 ??:0 4.15 ??:0 4.15 ??:0 2.90 ??:0 1.66 ??:0 1.66 ??:0 1.24 ??:0 0.83 ??:0 0.83 ??:0 0.83 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000114d50 <__strncmp_sse42>: ??:0 4.15 : 114d50: 48 85 d2 test %rdx,%rdx 0.00 : 114d53: 0f 84 9b 11 00 00 je 115ef4 <__strncmp_sse42+0x11a4> ??:0 17.01 : 114d59: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 114d5d: 0f 84 9d 11 00 00 je 115f00 <__strncmp_sse42+0x11b0> ??:0 2.90 : 114d63: 49 89 d3 mov %rdx,%r11 0.41 : 114d66: 89 f1 mov %esi,%ecx 0.00 : 114d68: 89 f8 mov %edi,%eax 0.00 : 114d6a: 48 83 e1 3f and $0x3f,%rcx 0.83 : 114d6e: 48 83 e0 3f and $0x3f,%rax 0.00 : 114d72: 83 f9 30 cmp $0x30,%ecx 0.00 : 114d75: 77 49 ja 114dc0 <__strncmp_sse42+0x70> 0.41 : 114d77: 83 f8 30 cmp $0x30,%eax 0.00 : 114d7a: 77 44 ja 114dc0 <__strncmp_sse42+0x70> 4.15 : 114d7c: f3 0f 6f 0f movdqu (%rdi),%xmm1 4.98 : 114d80: f3 0f 6f 16 movdqu (%rsi),%xmm2 ??:0 45.23 : 114d84: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114d88: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114d8c: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 ??:0 1.66 : 114d90: 66 0f f8 c8 psubb %xmm0,%xmm1 1.24 : 114d94: 66 0f d7 d1 pmovmskb %xmm1,%edx 1.66 : 114d98: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 114d9e: 0f 85 3c 11 00 00 jne 115ee0 <__strncmp_sse42+0x1190> 0.00 : 114da4: 49 83 eb 10 sub $0x10,%r11 0.00 : 114da8: 0f 86 46 11 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114dae: 48 83 c6 10 add $0x10,%rsi 0.00 : 114db2: 48 83 c7 10 add $0x10,%rdi 0.00 : 114db6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114dbd: 00 00 00 0.00 : 114dc0: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 114dc4: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 114dc8: ba ff ff 00 00 mov $0xffff,%edx 0.00 : 114dcd: 45 31 c0 xor %r8d,%r8d 0.00 : 114dd0: 83 e1 0f and $0xf,%ecx 0.00 : 114dd3: 83 e0 0f and $0xf,%eax 0.00 : 114dd6: 39 c1 cmp %eax,%ecx 0.00 : 114dd8: 74 26 je 114e00 <__strncmp_sse42+0xb0> 0.00 : 114dda: 77 07 ja 114de3 <__strncmp_sse42+0x93> 0.00 : 114ddc: 41 89 d0 mov %edx,%r8d 0.00 : 114ddf: 91 xchg %eax,%ecx 0.00 : 114de0: 48 87 f7 xchg %rsi,%rdi 0.00 : 114de3: 4c 8d 48 0f lea 0xf(%rax),%r9 0.00 : 114de7: 49 29 c9 sub %rcx,%r9 0.00 : 114dea: 4c 8d 15 af ed 02 00 lea 0x2edaf(%rip),%r10 # 143ba0 0.00 : 114df1: 4f 63 0c 8a movslq (%r10,%r9,4),%r9 0.00 : 114df5: 4f 8d 14 0a lea (%r10,%r9,1),%r10 0.00 : 114df9: 41 ff e2 jmpq *%r10 0.00 : 114dfc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 114e00: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114e04: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114e08: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114e0c: 66 0f 74 0f pcmpeqb (%rdi),%xmm1 0.00 : 114e10: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 114e14: 66 44 0f d7 c9 pmovmskb %xmm1,%r9d 0.00 : 114e19: d3 ea shr %cl,%edx 0.00 : 114e1b: 41 d3 e9 shr %cl,%r9d 0.00 : 114e1e: 44 29 ca sub %r9d,%edx 0.00 : 114e21: 0f 85 a9 10 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 114e27: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 114e2c: 4d 39 cb cmp %r9,%r11 0.00 : 114e2f: 0f 82 bf 10 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e35: 4d 85 c9 test %r9,%r9 0.00 : 114e38: 0f 84 b6 10 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e3e: 4d 89 cb mov %r9,%r11 0.00 : 114e41: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 114e48: 49 c7 c1 10 00 00 00 mov $0x10,%r9 0.00 : 114e4f: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114e53: 48 89 ca mov %rcx,%rdx 0.00 : 114e56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114e5d: 00 00 00 0.00 : 114e60: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114e65: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114e6c: 48 8d 52 10 lea 0x10(%rdx),%rdx 0.00 : 114e70: 76 2e jbe 114ea0 <__strncmp_sse42+0x150> 0.00 : 114e72: 49 83 eb 10 sub $0x10,%r11 0.00 : 114e76: 0f 86 78 10 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e7c: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114e81: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114e88: 48 8d 52 10 lea 0x10(%rdx),%rdx 0.00 : 114e8c: 76 12 jbe 114ea0 <__strncmp_sse42+0x150> 0.00 : 114e8e: 49 83 eb 10 sub $0x10,%r11 0.00 : 114e92: 0f 86 5c 10 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e98: eb c6 jmp 114e60 <__strncmp_sse42+0x110> 0.00 : 114e9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114ea0: 0f 83 4e 10 00 00 jae 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114ea6: 49 29 cb sub %rcx,%r11 0.00 : 114ea9: 0f 86 45 10 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114eaf: 48 8d 4c 0a f0 lea -0x10(%rdx,%rcx,1),%rcx 0.00 : 114eb4: 0f b6 04 0f movzbl (%rdi,%rcx,1),%eax 0.00 : 114eb8: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : 114ebc: 29 d0 sub %edx,%eax 0.00 : 114ebe: c3 retq 0.00 : 114ebf: 90 nop 0.00 : 114ec0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114ec4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114ec8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114ecc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114ed0: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 114ed5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114ed9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 114edd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114ee2: d3 ea shr %cl,%edx 0.00 : 114ee4: 41 d3 e9 shr %cl,%r9d 0.00 : 114ee7: 44 29 ca sub %r9d,%edx 0.00 : 114eea: 0f 85 e0 0f 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 114ef0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114ef4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 114ef9: 4d 39 cb cmp %r9,%r11 0.00 : 114efc: 0f 82 f2 0f 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f02: 4d 85 c9 test %r9,%r9 0.00 : 114f05: 0f 84 e9 0f 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f0b: 4d 89 cb mov %r9,%r11 0.00 : 114f0e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114f12: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 114f19: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 114f1f: 4c 8d 57 01 lea 0x1(%rdi),%r10 0.00 : 114f23: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114f2a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114f31: 48 89 ca mov %rcx,%rdx 0.00 : 114f34: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114f3b: 00 00 00 00 00 0.00 : 114f40: 49 83 c2 10 add $0x10,%r10 0.00 : 114f44: 7f 5a jg 114fa0 <__strncmp_sse42+0x250> 0.00 : 114f46: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114f4b: 66 0f 3a 0f 44 17 f0 palignr $0x1,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114f52: 01 0.00 : 114f53: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114f5a: 0f 86 50 0f 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 114f60: 49 83 eb 10 sub $0x10,%r11 0.00 : 114f64: 0f 86 8a 0f 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f6a: 48 83 c2 10 add $0x10,%rdx 0.00 : 114f6e: 49 83 c2 10 add $0x10,%r10 0.00 : 114f72: 7f 2c jg 114fa0 <__strncmp_sse42+0x250> 0.00 : 114f74: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114f79: 66 0f 3a 0f 44 17 f0 palignr $0x1,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114f80: 01 0.00 : 114f81: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114f88: 0f 86 22 0f 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 114f8e: 49 83 eb 10 sub $0x10,%r11 0.00 : 114f92: 0f 86 5c 0f 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f98: 48 83 c2 10 add $0x10,%rdx 0.00 : 114f9c: eb a2 jmp 114f40 <__strncmp_sse42+0x1f0> 0.00 : 114f9e: 66 90 xchg %ax,%ax 0.00 : 114fa0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114fa7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 114fad: 66 0f 73 d8 01 psrldq $0x1,%xmm0 0.00 : 114fb2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114fb8: 4c 39 d9 cmp %r11,%rcx 0.00 : 114fbb: 0f 83 e1 0e 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 114fc1: 83 f9 0e cmp $0xe,%ecx 0.00 : 114fc4: 77 ae ja 114f74 <__strncmp_sse42+0x224> 0.00 : 114fc6: e9 d7 0e 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 114fcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 114fd0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114fd4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114fd8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114fdc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114fe0: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 114fe5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114fe9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 114fed: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114ff2: d3 ea shr %cl,%edx 0.00 : 114ff4: 41 d3 e9 shr %cl,%r9d 0.00 : 114ff7: 44 29 ca sub %r9d,%edx 0.00 : 114ffa: 0f 85 d0 0e 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115000: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115004: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115009: 4d 39 cb cmp %r9,%r11 0.00 : 11500c: 0f 82 e2 0e 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115012: 4d 85 c9 test %r9,%r9 0.00 : 115015: 0f 84 d9 0e 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11501b: 4d 89 cb mov %r9,%r11 0.00 : 11501e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115022: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115029: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 11502f: 4c 8d 57 02 lea 0x2(%rdi),%r10 0.00 : 115033: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11503a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115041: 48 89 ca mov %rcx,%rdx 0.00 : 115044: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11504b: 00 00 00 00 00 0.00 : 115050: 49 83 c2 10 add $0x10,%r10 0.00 : 115054: 7f 5a jg 1150b0 <__strncmp_sse42+0x360> 0.00 : 115056: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11505b: 66 0f 3a 0f 44 17 f0 palignr $0x2,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115062: 02 0.00 : 115063: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11506a: 0f 86 40 0e 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115070: 49 83 eb 10 sub $0x10,%r11 0.00 : 115074: 0f 86 7a 0e 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11507a: 48 83 c2 10 add $0x10,%rdx 0.00 : 11507e: 49 83 c2 10 add $0x10,%r10 0.00 : 115082: 7f 2c jg 1150b0 <__strncmp_sse42+0x360> 0.00 : 115084: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115089: 66 0f 3a 0f 44 17 f0 palignr $0x2,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115090: 02 0.00 : 115091: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115098: 0f 86 12 0e 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 11509e: 49 83 eb 10 sub $0x10,%r11 0.00 : 1150a2: 0f 86 4c 0e 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1150a8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1150ac: eb a2 jmp 115050 <__strncmp_sse42+0x300> 0.00 : 1150ae: 66 90 xchg %ax,%ax 0.00 : 1150b0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1150b7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1150bd: 66 0f 73 d8 02 psrldq $0x2,%xmm0 0.00 : 1150c2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1150c8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1150cb: 0f 83 d1 0d 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1150d1: 83 f9 0d cmp $0xd,%ecx 0.00 : 1150d4: 77 80 ja 115056 <__strncmp_sse42+0x306> 0.00 : 1150d6: e9 c7 0d 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1150db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1150e0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1150e4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 1150e8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 1150ec: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 1150f0: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 1150f5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 1150f9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 1150fd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115102: d3 ea shr %cl,%edx 0.00 : 115104: 41 d3 e9 shr %cl,%r9d 0.00 : 115107: 44 29 ca sub %r9d,%edx 0.00 : 11510a: 0f 85 c0 0d 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115110: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115114: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115119: 4d 39 cb cmp %r9,%r11 0.00 : 11511c: 0f 82 d2 0d 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115122: 4d 85 c9 test %r9,%r9 0.00 : 115125: 0f 84 c9 0d 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11512b: 4d 89 cb mov %r9,%r11 0.00 : 11512e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115132: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115139: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 11513f: 4c 8d 57 03 lea 0x3(%rdi),%r10 0.00 : 115143: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11514a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115151: 48 89 ca mov %rcx,%rdx 0.00 : 115154: 49 83 c2 10 add $0x10,%r10 0.00 : 115158: 7f 66 jg 1151c0 <__strncmp_sse42+0x470> 0.00 : 11515a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11515f: 66 0f 3a 0f 44 17 f0 palignr $0x3,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115166: 03 0.00 : 115167: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11516e: 0f 86 3c 0d 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115174: 49 83 eb 10 sub $0x10,%r11 0.00 : 115178: 0f 86 76 0d 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11517e: 48 83 c2 10 add $0x10,%rdx 0.00 : 115182: 49 83 c2 10 add $0x10,%r10 0.00 : 115186: 7f 38 jg 1151c0 <__strncmp_sse42+0x470> 0.00 : 115188: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11518d: 66 0f 3a 0f 44 17 f0 palignr $0x3,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115194: 03 0.00 : 115195: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11519c: 0f 86 0e 0d 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1151a2: 49 83 eb 10 sub $0x10,%r11 0.00 : 1151a6: 0f 86 48 0d 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1151ac: 48 83 c2 10 add $0x10,%rdx 0.00 : 1151b0: eb a2 jmp 115154 <__strncmp_sse42+0x404> 0.00 : 1151b2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1151b9: 1f 84 00 00 00 00 00 0.00 : 1151c0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1151c7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1151cd: 66 0f 73 d8 03 psrldq $0x3,%xmm0 0.00 : 1151d2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1151d8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1151db: 0f 83 c1 0c 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1151e1: 83 f9 0c cmp $0xc,%ecx 0.00 : 1151e4: 0f 87 70 ff ff ff ja 11515a <__strncmp_sse42+0x40a> 0.00 : 1151ea: e9 b3 0c 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1151ef: 90 nop 0.00 : 1151f0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1151f4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 1151f8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 1151fc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115200: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 115205: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115209: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11520d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115212: d3 ea shr %cl,%edx 0.00 : 115214: 41 d3 e9 shr %cl,%r9d 0.00 : 115217: 44 29 ca sub %r9d,%edx 0.00 : 11521a: 0f 85 b0 0c 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115220: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115224: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115229: 4d 39 cb cmp %r9,%r11 0.00 : 11522c: 0f 82 c2 0c 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115232: 4d 85 c9 test %r9,%r9 0.00 : 115235: 0f 84 b9 0c 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11523b: 4d 89 cb mov %r9,%r11 0.00 : 11523e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115242: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115249: 41 b9 04 00 00 00 mov $0x4,%r9d 0.00 : 11524f: 4c 8d 57 04 lea 0x4(%rdi),%r10 0.00 : 115253: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11525a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115261: 48 89 ca mov %rcx,%rdx 0.00 : 115264: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11526b: 00 00 00 00 00 0.00 : 115270: 49 83 c2 10 add $0x10,%r10 0.00 : 115274: 7f 5a jg 1152d0 <__strncmp_sse42+0x580> 0.00 : 115276: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11527b: 66 0f 3a 0f 44 17 f0 palignr $0x4,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115282: 04 0.00 : 115283: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11528a: 0f 86 20 0c 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115290: 49 83 eb 10 sub $0x10,%r11 0.00 : 115294: 0f 86 5a 0c 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11529a: 48 83 c2 10 add $0x10,%rdx 0.00 : 11529e: 49 83 c2 10 add $0x10,%r10 0.00 : 1152a2: 7f 2c jg 1152d0 <__strncmp_sse42+0x580> 0.00 : 1152a4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1152a9: 66 0f 3a 0f 44 17 f0 palignr $0x4,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1152b0: 04 0.00 : 1152b1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1152b8: 0f 86 f2 0b 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1152be: 49 83 eb 10 sub $0x10,%r11 0.00 : 1152c2: 0f 86 2c 0c 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1152c8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1152cc: eb a2 jmp 115270 <__strncmp_sse42+0x520> 0.00 : 1152ce: 66 90 xchg %ax,%ax 0.00 : 1152d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1152d7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1152dd: 66 0f 73 d8 04 psrldq $0x4,%xmm0 0.00 : 1152e2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1152e8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1152eb: 0f 83 b1 0b 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1152f1: 83 f9 0b cmp $0xb,%ecx 0.00 : 1152f4: 77 80 ja 115276 <__strncmp_sse42+0x526> 0.00 : 1152f6: e9 a7 0b 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1152fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115300: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115304: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115308: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11530c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115310: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 115315: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115319: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11531d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115322: d3 ea shr %cl,%edx 0.00 : 115324: 41 d3 e9 shr %cl,%r9d 0.00 : 115327: 44 29 ca sub %r9d,%edx 0.00 : 11532a: 0f 85 a0 0b 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115330: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115334: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115339: 4d 39 cb cmp %r9,%r11 0.00 : 11533c: 0f 82 b2 0b 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115342: 4d 85 c9 test %r9,%r9 0.00 : 115345: 0f 84 a9 0b 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11534b: 4d 89 cb mov %r9,%r11 0.00 : 11534e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115352: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115359: 41 b9 05 00 00 00 mov $0x5,%r9d 0.00 : 11535f: 4c 8d 57 05 lea 0x5(%rdi),%r10 0.00 : 115363: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11536a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115371: 48 89 ca mov %rcx,%rdx 0.00 : 115374: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11537b: 00 00 00 00 00 0.00 : 115380: 49 83 c2 10 add $0x10,%r10 0.00 : 115384: 7f 5a jg 1153e0 <__strncmp_sse42+0x690> 0.00 : 115386: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11538b: 66 0f 3a 0f 44 17 f0 palignr $0x5,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115392: 05 0.00 : 115393: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11539a: 0f 86 10 0b 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1153a0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1153a4: 0f 86 4a 0b 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1153aa: 48 83 c2 10 add $0x10,%rdx 0.00 : 1153ae: 49 83 c2 10 add $0x10,%r10 0.00 : 1153b2: 7f 2c jg 1153e0 <__strncmp_sse42+0x690> 0.00 : 1153b4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1153b9: 66 0f 3a 0f 44 17 f0 palignr $0x5,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1153c0: 05 0.00 : 1153c1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1153c8: 0f 86 e2 0a 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1153ce: 49 83 eb 10 sub $0x10,%r11 0.00 : 1153d2: 0f 86 1c 0b 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1153d8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1153dc: eb a2 jmp 115380 <__strncmp_sse42+0x630> 0.00 : 1153de: 66 90 xchg %ax,%ax 0.00 : 1153e0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1153e7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1153ed: 66 0f 73 d8 05 psrldq $0x5,%xmm0 0.00 : 1153f2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1153f8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1153fb: 0f 83 a1 0a 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115401: 83 f9 0a cmp $0xa,%ecx 0.00 : 115404: 77 80 ja 115386 <__strncmp_sse42+0x636> 0.00 : 115406: e9 97 0a 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11540b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115410: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115414: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115418: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11541c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115420: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 115425: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115429: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11542d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115432: d3 ea shr %cl,%edx 0.00 : 115434: 41 d3 e9 shr %cl,%r9d 0.00 : 115437: 44 29 ca sub %r9d,%edx 0.00 : 11543a: 0f 85 90 0a 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115440: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115444: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115449: 4d 39 cb cmp %r9,%r11 0.00 : 11544c: 0f 82 a2 0a 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115452: 4d 85 c9 test %r9,%r9 0.00 : 115455: 0f 84 99 0a 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11545b: 4d 89 cb mov %r9,%r11 0.00 : 11545e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115462: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115469: 41 b9 06 00 00 00 mov $0x6,%r9d 0.00 : 11546f: 4c 8d 57 06 lea 0x6(%rdi),%r10 0.00 : 115473: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11547a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115481: 48 89 ca mov %rcx,%rdx 0.00 : 115484: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11548b: 00 00 00 00 00 0.00 : 115490: 49 83 c2 10 add $0x10,%r10 0.00 : 115494: 7f 5a jg 1154f0 <__strncmp_sse42+0x7a0> 0.00 : 115496: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11549b: 66 0f 3a 0f 44 17 f0 palignr $0x6,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1154a2: 06 0.00 : 1154a3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1154aa: 0f 86 00 0a 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1154b0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1154b4: 0f 86 3a 0a 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1154ba: 48 83 c2 10 add $0x10,%rdx 0.00 : 1154be: 49 83 c2 10 add $0x10,%r10 0.00 : 1154c2: 7f 2c jg 1154f0 <__strncmp_sse42+0x7a0> 0.00 : 1154c4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1154c9: 66 0f 3a 0f 44 17 f0 palignr $0x6,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1154d0: 06 0.00 : 1154d1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1154d8: 0f 86 d2 09 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1154de: 49 83 eb 10 sub $0x10,%r11 0.00 : 1154e2: 0f 86 0c 0a 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1154e8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1154ec: eb a2 jmp 115490 <__strncmp_sse42+0x740> 0.00 : 1154ee: 66 90 xchg %ax,%ax 0.00 : 1154f0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1154f7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1154fd: 66 0f 73 d8 06 psrldq $0x6,%xmm0 0.00 : 115502: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115508: 4c 39 d9 cmp %r11,%rcx 0.00 : 11550b: 0f 83 91 09 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115511: 83 f9 09 cmp $0x9,%ecx 0.00 : 115514: 77 80 ja 115496 <__strncmp_sse42+0x746> 0.00 : 115516: e9 87 09 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11551b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115520: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115524: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115528: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11552c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115530: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 115535: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115539: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11553d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115542: d3 ea shr %cl,%edx 0.00 : 115544: 41 d3 e9 shr %cl,%r9d 0.00 : 115547: 44 29 ca sub %r9d,%edx 0.00 : 11554a: 0f 85 80 09 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115550: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115554: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115559: 4d 39 cb cmp %r9,%r11 0.00 : 11555c: 0f 82 92 09 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115562: 4d 85 c9 test %r9,%r9 0.00 : 115565: 0f 84 89 09 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11556b: 4d 89 cb mov %r9,%r11 0.00 : 11556e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115572: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115579: 41 b9 07 00 00 00 mov $0x7,%r9d 0.00 : 11557f: 4c 8d 57 07 lea 0x7(%rdi),%r10 0.00 : 115583: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11558a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115591: 48 89 ca mov %rcx,%rdx 0.00 : 115594: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11559b: 00 00 00 00 00 0.00 : 1155a0: 49 83 c2 10 add $0x10,%r10 0.00 : 1155a4: 7f 5a jg 115600 <__strncmp_sse42+0x8b0> 0.00 : 1155a6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1155ab: 66 0f 3a 0f 44 17 f0 palignr $0x7,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1155b2: 07 0.00 : 1155b3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1155ba: 0f 86 f0 08 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1155c0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1155c4: 0f 86 2a 09 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1155ca: 48 83 c2 10 add $0x10,%rdx 0.00 : 1155ce: 49 83 c2 10 add $0x10,%r10 0.00 : 1155d2: 7f 2c jg 115600 <__strncmp_sse42+0x8b0> 0.00 : 1155d4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1155d9: 66 0f 3a 0f 44 17 f0 palignr $0x7,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1155e0: 07 0.00 : 1155e1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1155e8: 0f 86 c2 08 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1155ee: 49 83 eb 10 sub $0x10,%r11 0.00 : 1155f2: 0f 86 fc 08 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1155f8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1155fc: eb a2 jmp 1155a0 <__strncmp_sse42+0x850> 0.00 : 1155fe: 66 90 xchg %ax,%ax 0.00 : 115600: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115607: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11560d: 66 0f 73 d8 07 psrldq $0x7,%xmm0 0.00 : 115612: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115618: 4c 39 d9 cmp %r11,%rcx 0.00 : 11561b: 0f 83 81 08 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115621: 83 f9 08 cmp $0x8,%ecx 0.00 : 115624: 77 80 ja 1155a6 <__strncmp_sse42+0x856> 0.00 : 115626: e9 77 08 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11562b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115630: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115634: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115638: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11563c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.41 : 115640: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 115645: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115649: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11564d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115652: d3 ea shr %cl,%edx 0.00 : 115654: 41 d3 e9 shr %cl,%r9d 0.00 : 115657: 44 29 ca sub %r9d,%edx 0.00 : 11565a: 0f 85 70 08 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115660: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115664: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115669: 4d 39 cb cmp %r9,%r11 0.00 : 11566c: 0f 82 82 08 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115672: 4d 85 c9 test %r9,%r9 0.00 : 115675: 0f 84 79 08 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11567b: 4d 89 cb mov %r9,%r11 0.00 : 11567e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115682: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115689: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 11568f: 4c 8d 57 08 lea 0x8(%rdi),%r10 0.00 : 115693: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11569a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1156a1: 48 89 ca mov %rcx,%rdx 0.00 : 1156a4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1156ab: 00 00 00 00 00 0.00 : 1156b0: 49 83 c2 10 add $0x10,%r10 0.00 : 1156b4: 7f 5a jg 115710 <__strncmp_sse42+0x9c0> 0.00 : 1156b6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1156bb: 66 0f 3a 0f 44 17 f0 palignr $0x8,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1156c2: 08 0.00 : 1156c3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1156ca: 0f 86 e0 07 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1156d0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1156d4: 0f 86 1a 08 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1156da: 48 83 c2 10 add $0x10,%rdx 0.00 : 1156de: 49 83 c2 10 add $0x10,%r10 0.00 : 1156e2: 7f 2c jg 115710 <__strncmp_sse42+0x9c0> 0.00 : 1156e4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1156e9: 66 0f 3a 0f 44 17 f0 palignr $0x8,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1156f0: 08 0.00 : 1156f1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1156f8: 0f 86 b2 07 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1156fe: 49 83 eb 10 sub $0x10,%r11 0.00 : 115702: 0f 86 ec 07 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115708: 48 83 c2 10 add $0x10,%rdx 0.00 : 11570c: eb a2 jmp 1156b0 <__strncmp_sse42+0x960> 0.00 : 11570e: 66 90 xchg %ax,%ax 0.00 : 115710: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115717: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11571d: 66 0f 73 d8 08 psrldq $0x8,%xmm0 0.00 : 115722: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115728: 4c 39 d9 cmp %r11,%rcx 0.00 : 11572b: 0f 83 71 07 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115731: 83 f9 07 cmp $0x7,%ecx 0.00 : 115734: 77 80 ja 1156b6 <__strncmp_sse42+0x966> 0.00 : 115736: e9 67 07 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11573b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115740: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115744: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115748: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11574c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115750: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 115755: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115759: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11575d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115762: d3 ea shr %cl,%edx 0.00 : 115764: 41 d3 e9 shr %cl,%r9d 0.00 : 115767: 44 29 ca sub %r9d,%edx 0.00 : 11576a: 0f 85 60 07 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115770: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115774: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115779: 4d 39 cb cmp %r9,%r11 0.00 : 11577c: 0f 82 72 07 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115782: 4d 85 c9 test %r9,%r9 0.00 : 115785: 0f 84 69 07 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11578b: 4d 89 cb mov %r9,%r11 0.00 : 11578e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115792: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115799: 41 b9 09 00 00 00 mov $0x9,%r9d 0.00 : 11579f: 4c 8d 57 09 lea 0x9(%rdi),%r10 0.00 : 1157a3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1157aa: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1157b1: 48 89 ca mov %rcx,%rdx 0.00 : 1157b4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1157bb: 00 00 00 00 00 0.00 : 1157c0: 49 83 c2 10 add $0x10,%r10 0.00 : 1157c4: 7f 5a jg 115820 <__strncmp_sse42+0xad0> 0.00 : 1157c6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1157cb: 66 0f 3a 0f 44 17 f0 palignr $0x9,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1157d2: 09 0.00 : 1157d3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1157da: 0f 86 d0 06 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1157e0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1157e4: 0f 86 0a 07 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1157ea: 48 83 c2 10 add $0x10,%rdx 0.00 : 1157ee: 49 83 c2 10 add $0x10,%r10 0.00 : 1157f2: 7f 2c jg 115820 <__strncmp_sse42+0xad0> 0.00 : 1157f4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1157f9: 66 0f 3a 0f 44 17 f0 palignr $0x9,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115800: 09 0.00 : 115801: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115808: 0f 86 a2 06 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 11580e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115812: 0f 86 dc 06 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115818: 48 83 c2 10 add $0x10,%rdx 0.00 : 11581c: eb a2 jmp 1157c0 <__strncmp_sse42+0xa70> 0.00 : 11581e: 66 90 xchg %ax,%ax 0.00 : 115820: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115827: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11582d: 66 0f 73 d8 09 psrldq $0x9,%xmm0 0.00 : 115832: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115838: 4c 39 d9 cmp %r11,%rcx 0.00 : 11583b: 0f 83 61 06 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115841: 83 f9 06 cmp $0x6,%ecx 0.00 : 115844: 77 80 ja 1157c6 <__strncmp_sse42+0xa76> 0.00 : 115846: e9 57 06 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11584b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115850: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115854: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115858: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11585c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115860: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 115865: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115869: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11586d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115872: d3 ea shr %cl,%edx 0.00 : 115874: 41 d3 e9 shr %cl,%r9d 0.00 : 115877: 44 29 ca sub %r9d,%edx 0.00 : 11587a: 0f 85 50 06 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115880: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115884: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115889: 4d 39 cb cmp %r9,%r11 0.00 : 11588c: 0f 82 62 06 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115892: 4d 85 c9 test %r9,%r9 0.00 : 115895: 0f 84 59 06 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11589b: 4d 89 cb mov %r9,%r11 0.00 : 11589e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1158a2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 1158a9: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 1158af: 4c 8d 57 0a lea 0xa(%rdi),%r10 0.00 : 1158b3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1158ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1158c1: 48 89 ca mov %rcx,%rdx 0.00 : 1158c4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1158cb: 00 00 00 00 00 0.00 : 1158d0: 49 83 c2 10 add $0x10,%r10 0.00 : 1158d4: 7f 5a jg 115930 <__strncmp_sse42+0xbe0> 0.00 : 1158d6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1158db: 66 0f 3a 0f 44 17 f0 palignr $0xa,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1158e2: 0a 0.00 : 1158e3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1158ea: 0f 86 c0 05 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1158f0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1158f4: 0f 86 fa 05 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1158fa: 48 83 c2 10 add $0x10,%rdx 0.00 : 1158fe: 49 83 c2 10 add $0x10,%r10 0.00 : 115902: 7f 2c jg 115930 <__strncmp_sse42+0xbe0> 0.00 : 115904: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115909: 66 0f 3a 0f 44 17 f0 palignr $0xa,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115910: 0a 0.00 : 115911: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115918: 0f 86 92 05 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 11591e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115922: 0f 86 cc 05 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115928: 48 83 c2 10 add $0x10,%rdx 0.00 : 11592c: eb a2 jmp 1158d0 <__strncmp_sse42+0xb80> 0.00 : 11592e: 66 90 xchg %ax,%ax 0.00 : 115930: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115937: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11593d: 66 0f 73 d8 0a psrldq $0xa,%xmm0 0.00 : 115942: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115948: 4c 39 d9 cmp %r11,%rcx 0.00 : 11594b: 0f 83 51 05 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115951: 83 f9 05 cmp $0x5,%ecx 0.00 : 115954: 77 80 ja 1158d6 <__strncmp_sse42+0xb86> 0.00 : 115956: e9 47 05 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11595b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115960: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115964: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115968: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11596c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115970: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 115975: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115979: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11597d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115982: d3 ea shr %cl,%edx 0.00 : 115984: 41 d3 e9 shr %cl,%r9d 0.00 : 115987: 44 29 ca sub %r9d,%edx 0.00 : 11598a: 0f 85 40 05 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115990: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115994: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115999: 4d 39 cb cmp %r9,%r11 0.00 : 11599c: 0f 82 52 05 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1159a2: 4d 85 c9 test %r9,%r9 0.00 : 1159a5: 0f 84 49 05 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1159ab: 4d 89 cb mov %r9,%r11 0.00 : 1159ae: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1159b2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 1159b9: 41 b9 0b 00 00 00 mov $0xb,%r9d 0.00 : 1159bf: 4c 8d 57 0b lea 0xb(%rdi),%r10 0.00 : 1159c3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1159ca: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1159d1: 48 89 ca mov %rcx,%rdx 0.00 : 1159d4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1159db: 00 00 00 00 00 0.00 : 1159e0: 49 83 c2 10 add $0x10,%r10 0.00 : 1159e4: 7f 5a jg 115a40 <__strncmp_sse42+0xcf0> 0.00 : 1159e6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1159eb: 66 0f 3a 0f 44 17 f0 palignr $0xb,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1159f2: 0b 0.00 : 1159f3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1159fa: 0f 86 b0 04 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115a00: 49 83 eb 10 sub $0x10,%r11 0.00 : 115a04: 0f 86 ea 04 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115a0a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115a0e: 49 83 c2 10 add $0x10,%r10 0.00 : 115a12: 7f 2c jg 115a40 <__strncmp_sse42+0xcf0> 0.00 : 115a14: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115a19: 66 0f 3a 0f 44 17 f0 palignr $0xb,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115a20: 0b 0.00 : 115a21: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115a28: 0f 86 82 04 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115a2e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115a32: 0f 86 bc 04 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115a38: 48 83 c2 10 add $0x10,%rdx 0.00 : 115a3c: eb a2 jmp 1159e0 <__strncmp_sse42+0xc90> 0.00 : 115a3e: 66 90 xchg %ax,%ax 0.00 : 115a40: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115a47: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115a4d: 66 0f 73 d8 0b psrldq $0xb,%xmm0 0.00 : 115a52: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115a58: 4c 39 d9 cmp %r11,%rcx 0.00 : 115a5b: 0f 83 41 04 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115a61: 83 f9 04 cmp $0x4,%ecx 0.00 : 115a64: 77 80 ja 1159e6 <__strncmp_sse42+0xc96> 0.00 : 115a66: e9 37 04 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115a6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115a70: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115a74: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115a78: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115a7c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115a80: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 115a85: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115a89: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 115a8d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115a92: d3 ea shr %cl,%edx 0.00 : 115a94: 41 d3 e9 shr %cl,%r9d 0.00 : 115a97: 44 29 ca sub %r9d,%edx 0.00 : 115a9a: 0f 85 30 04 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115aa0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115aa4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115aa9: 4d 39 cb cmp %r9,%r11 0.00 : 115aac: 0f 82 42 04 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115ab2: 4d 85 c9 test %r9,%r9 0.00 : 115ab5: 0f 84 39 04 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115abb: 4d 89 cb mov %r9,%r11 0.00 : 115abe: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115ac2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115ac9: 41 b9 0c 00 00 00 mov $0xc,%r9d 0.00 : 115acf: 4c 8d 57 0c lea 0xc(%rdi),%r10 0.00 : 115ad3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115ada: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115ae1: 48 89 ca mov %rcx,%rdx 0.00 : 115ae4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115aeb: 00 00 00 00 00 0.00 : 115af0: 49 83 c2 10 add $0x10,%r10 0.00 : 115af4: 7f 5a jg 115b50 <__strncmp_sse42+0xe00> 0.00 : 115af6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115afb: 66 0f 3a 0f 44 17 f0 palignr $0xc,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115b02: 0c 0.00 : 115b03: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115b0a: 0f 86 a0 03 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115b10: 49 83 eb 10 sub $0x10,%r11 0.00 : 115b14: 0f 86 da 03 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115b1a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115b1e: 49 83 c2 10 add $0x10,%r10 0.00 : 115b22: 7f 2c jg 115b50 <__strncmp_sse42+0xe00> 0.00 : 115b24: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115b29: 66 0f 3a 0f 44 17 f0 palignr $0xc,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115b30: 0c 0.00 : 115b31: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115b38: 0f 86 72 03 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115b3e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115b42: 0f 86 ac 03 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115b48: 48 83 c2 10 add $0x10,%rdx 0.00 : 115b4c: eb a2 jmp 115af0 <__strncmp_sse42+0xda0> 0.00 : 115b4e: 66 90 xchg %ax,%ax 0.00 : 115b50: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115b57: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115b5d: 66 0f 73 d8 0c psrldq $0xc,%xmm0 0.00 : 115b62: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115b68: 4c 39 d9 cmp %r11,%rcx 0.00 : 115b6b: 0f 83 31 03 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115b71: 83 f9 03 cmp $0x3,%ecx 0.00 : 115b74: 77 80 ja 115af6 <__strncmp_sse42+0xda6> 0.00 : 115b76: e9 27 03 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115b7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115b80: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115b84: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115b88: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115b8c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115b90: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 115b95: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115b99: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 115b9d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115ba2: d3 ea shr %cl,%edx 0.00 : 115ba4: 41 d3 e9 shr %cl,%r9d 0.00 : 115ba7: 44 29 ca sub %r9d,%edx 0.00 : 115baa: 0f 85 20 03 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115bb0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115bb4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115bb9: 4d 39 cb cmp %r9,%r11 0.00 : 115bbc: 0f 82 32 03 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115bc2: 4d 85 c9 test %r9,%r9 0.00 : 115bc5: 0f 84 29 03 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115bcb: 4d 89 cb mov %r9,%r11 0.00 : 115bce: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115bd2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115bd9: 41 b9 0d 00 00 00 mov $0xd,%r9d 0.00 : 115bdf: 4c 8d 57 0d lea 0xd(%rdi),%r10 0.00 : 115be3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115bea: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115bf1: 48 89 ca mov %rcx,%rdx 0.00 : 115bf4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115bfb: 00 00 00 00 00 0.00 : 115c00: 49 83 c2 10 add $0x10,%r10 0.00 : 115c04: 7f 5a jg 115c60 <__strncmp_sse42+0xf10> 0.00 : 115c06: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115c0b: 66 0f 3a 0f 44 17 f0 palignr $0xd,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115c12: 0d 0.00 : 115c13: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115c1a: 0f 86 90 02 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115c20: 49 83 eb 10 sub $0x10,%r11 0.00 : 115c24: 0f 86 ca 02 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115c2a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115c2e: 49 83 c2 10 add $0x10,%r10 0.00 : 115c32: 7f 2c jg 115c60 <__strncmp_sse42+0xf10> 0.00 : 115c34: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115c39: 66 0f 3a 0f 44 17 f0 palignr $0xd,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115c40: 0d 0.00 : 115c41: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115c48: 0f 86 62 02 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115c4e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115c52: 0f 86 9c 02 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115c58: 48 83 c2 10 add $0x10,%rdx 0.00 : 115c5c: eb a2 jmp 115c00 <__strncmp_sse42+0xeb0> 0.00 : 115c5e: 66 90 xchg %ax,%ax 0.00 : 115c60: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115c67: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115c6d: 66 0f 73 d8 0d psrldq $0xd,%xmm0 0.00 : 115c72: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115c78: 4c 39 d9 cmp %r11,%rcx 0.00 : 115c7b: 0f 83 21 02 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115c81: 83 f9 02 cmp $0x2,%ecx 0.00 : 115c84: 77 80 ja 115c06 <__strncmp_sse42+0xeb6> 0.00 : 115c86: e9 17 02 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115c8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115c90: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115c94: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115c98: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115c9c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115ca0: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 115ca5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115ca9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 115cad: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115cb2: d3 ea shr %cl,%edx 0.00 : 115cb4: 41 d3 e9 shr %cl,%r9d 0.00 : 115cb7: 44 29 ca sub %r9d,%edx 0.00 : 115cba: 0f 85 10 02 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115cc0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115cc4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115cc9: 4d 39 cb cmp %r9,%r11 0.00 : 115ccc: 0f 82 22 02 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115cd2: 4d 85 c9 test %r9,%r9 0.00 : 115cd5: 0f 84 19 02 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115cdb: 4d 89 cb mov %r9,%r11 0.00 : 115cde: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115ce2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115ce9: 41 b9 0e 00 00 00 mov $0xe,%r9d 0.00 : 115cef: 4c 8d 57 0e lea 0xe(%rdi),%r10 0.00 : 115cf3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115cfa: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115d01: 48 89 ca mov %rcx,%rdx 0.00 : 115d04: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115d0b: 00 00 00 00 00 0.00 : 115d10: 49 83 c2 10 add $0x10,%r10 0.00 : 115d14: 7f 5a jg 115d70 <__strncmp_sse42+0x1020> 0.00 : 115d16: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115d1b: 66 0f 3a 0f 44 17 f0 palignr $0xe,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115d22: 0e 0.00 : 115d23: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115d2a: 0f 86 80 01 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115d30: 49 83 eb 10 sub $0x10,%r11 0.00 : 115d34: 0f 86 ba 01 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115d3a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115d3e: 49 83 c2 10 add $0x10,%r10 0.00 : 115d42: 7f 2c jg 115d70 <__strncmp_sse42+0x1020> 0.00 : 115d44: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115d49: 66 0f 3a 0f 44 17 f0 palignr $0xe,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115d50: 0e 0.00 : 115d51: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115d58: 0f 86 52 01 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115d5e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115d62: 0f 86 8c 01 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115d68: 48 83 c2 10 add $0x10,%rdx 0.00 : 115d6c: eb a2 jmp 115d10 <__strncmp_sse42+0xfc0> 0.00 : 115d6e: 66 90 xchg %ax,%ax 0.00 : 115d70: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115d77: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115d7d: 66 0f 73 d8 0e psrldq $0xe,%xmm0 0.00 : 115d82: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115d88: 4c 39 d9 cmp %r11,%rcx 0.00 : 115d8b: 0f 83 11 01 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115d91: 83 f9 01 cmp $0x1,%ecx 0.00 : 115d94: 77 80 ja 115d16 <__strncmp_sse42+0xfc6> 0.00 : 115d96: e9 07 01 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115d9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115da0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115da4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115da8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115dac: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115db0: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 115db5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115db9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 115dbd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115dc2: d3 ea shr %cl,%edx 0.00 : 115dc4: 41 d3 e9 shr %cl,%r9d 0.00 : 115dc7: 44 29 ca sub %r9d,%edx 0.00 : 115dca: 0f 85 00 01 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115dd0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115dd4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115dd9: 4d 39 cb cmp %r9,%r11 0.00 : 115ddc: 0f 82 12 01 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115de2: 4d 85 c9 test %r9,%r9 0.00 : 115de5: 0f 84 09 01 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115deb: 4d 89 cb mov %r9,%r11 0.00 : 115dee: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115df2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115df9: 41 b9 0f 00 00 00 mov $0xf,%r9d 0.00 : 115dff: 4c 8d 57 0f lea 0xf(%rdi),%r10 0.00 : 115e03: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115e0a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115e11: 48 89 ca mov %rcx,%rdx 0.00 : 115e14: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115e1b: 00 00 00 00 00 0.00 : 115e20: 49 83 c2 10 add $0x10,%r10 0.00 : 115e24: 7f 5a jg 115e80 <__strncmp_sse42+0x1130> 0.00 : 115e26: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115e2b: 66 0f 3a 0f 44 17 f0 palignr $0xf,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115e32: 0f 0.00 : 115e33: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115e3a: 76 74 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115e3c: 49 83 eb 10 sub $0x10,%r11 0.00 : 115e40: 0f 86 ae 00 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115e46: 48 83 c2 10 add $0x10,%rdx 0.00 : 115e4a: 49 83 c2 10 add $0x10,%r10 0.00 : 115e4e: 7f 30 jg 115e80 <__strncmp_sse42+0x1130> 0.00 : 115e50: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115e55: 66 0f 3a 0f 44 17 f0 palignr $0xf,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115e5c: 0f 0.00 : 115e5d: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115e64: 76 4a jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115e66: 49 83 eb 10 sub $0x10,%r11 0.00 : 115e6a: 0f 86 84 00 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115e70: 48 83 c2 10 add $0x10,%rdx 0.00 : 115e74: eb aa jmp 115e20 <__strncmp_sse42+0x10d0> 0.00 : 115e76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115e7d: 00 00 00 0.00 : 115e80: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115e87: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115e8d: 66 0f 73 d8 0f psrldq $0xf,%xmm0 0.00 : 115e92: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115e98: 4c 39 d9 cmp %r11,%rcx 0.00 : 115e9b: 73 05 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115e9d: 83 f9 00 cmp $0x0,%ecx 0.00 : 115ea0: 77 84 ja 115e26 <__strncmp_sse42+0x10d6> 0.00 : 115ea2: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115ea9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 115eb0: 73 42 jae 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115eb2: 49 29 cb sub %rcx,%r11 0.00 : 115eb5: 76 3d jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115eb7: 48 01 ca add %rcx,%rdx 0.00 : 115eba: 4a 8d 7c 0f f0 lea -0x10(%rdi,%r9,1),%rdi 0.00 : 115ebf: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 0.00 : 115ec3: 0f b6 14 16 movzbl (%rsi,%rdx,1),%edx 0.00 : 115ec7: 45 85 c0 test %r8d,%r8d 0.00 : 115eca: 74 01 je 115ecd <__strncmp_sse42+0x117d> 0.00 : 115ecc: 92 xchg %eax,%edx 0.00 : 115ecd: 29 d0 sub %edx,%eax 0.00 : 115ecf: c3 retq 0.00 : 115ed0: 48 8d 3c 07 lea (%rdi,%rax,1),%rdi 0.00 : 115ed4: 48 8d 34 0e lea (%rsi,%rcx,1),%rsi 0.00 : 115ed8: 45 85 c0 test %r8d,%r8d 0.00 : 115edb: 74 03 je 115ee0 <__strncmp_sse42+0x1190> 0.00 : 115edd: 48 87 f7 xchg %rsi,%rdi 0.41 : 115ee0: 48 0f bc d2 bsf %rdx,%rdx ??:0 8.30 : 115ee4: 49 29 d3 sub %rdx,%r11 0.00 : 115ee7: 76 0b jbe 115ef4 <__strncmp_sse42+0x11a4> ??:0 0.83 : 115ee9: 0f b6 0c 16 movzbl (%rsi,%rdx,1),%ecx 4.56 : 115eed: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 0.00 : 115ef1: 29 c8 sub %ecx,%eax 0.83 : 115ef3: c3 retq 0.00 : 115ef4: 31 c0 xor %eax,%eax 0.00 : 115ef6: c3 retq 0.00 : 115ef7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 115efe: 00 00 0.00 : 115f00: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 115f03: 0f b6 07 movzbl (%rdi),%eax 0.00 : 115f06: 29 c8 sub %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 58.42 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7339 13.86 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7345 9.90 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7382 5.94 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7345 5.94 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7339 3.96 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7382 1.98 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7345 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cd4c0 : : /* : * We check shared state each time only until we leave recovery mode. We : * can't re-enter recovery, so there's no need to keep checking after the : * shared variable has once been seen false. : */ : if (!LocalRecoveryInProgress) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7345 5.94 : 4cd4c0: 31 c0 xor %eax,%eax 13.86 : 4cd4c2: 80 3d 97 a9 69 00 00 cmpb $0x0,0x69a997(%rip) # b67e60 : * As a side-effect, we initialize the local TimeLineID and RedoRecPtr : * variables the first time we see that recovery is finished. : */ : bool : RecoveryInProgress(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7339 58.42 : 4cd4c9: 55 push %rbp 5.94 : 4cd4ca: 48 89 e5 mov %rsp,%rbp : /* : * We check shared state each time only until we leave recovery mode. We : * can't re-enter recovery, so there's no need to keep checking after the : * shared variable has once been seen false. : */ : if (!LocalRecoveryInProgress) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7345 1.98 : 4cd4cd: 74 1f je 4cd4ee : { : /* : * use volatile pointer to make sure we make a fresh read of the : * shared variable. : */ : volatile XLogCtlData *xlogctl = XLogCtl; 0.00 : 4cd4cf: 48 8b 05 c2 bc 6a 00 mov 0x6abcc2(%rip),%rax # b79198 : : LocalRecoveryInProgress = xlogctl->SharedRecoveryInProgress; 0.00 : 4cd4d6: 0f b6 80 5c 05 00 00 movzbl 0x55c(%rax),%eax : * Initialize TimeLineID and RedoRecPtr when we discover that recovery : * is finished. InitPostgres() relies upon this behaviour to ensure : * that InitXLOGAccess() is called at backend startup. (If you change : * this, see also LocalSetXLogInsertAllowed.) : */ : if (!LocalRecoveryInProgress) 0.00 : 4cd4dd: 84 c0 test %al,%al : * use volatile pointer to make sure we make a fresh read of the : * shared variable. : */ : volatile XLogCtlData *xlogctl = XLogCtl; : : LocalRecoveryInProgress = xlogctl->SharedRecoveryInProgress; 0.00 : 4cd4df: 88 05 7b a9 69 00 mov %al,0x69a97b(%rip) # b67e60 : * Initialize TimeLineID and RedoRecPtr when we discover that recovery : * is finished. InitPostgres() relies upon this behaviour to ensure : * that InitXLOGAccess() is called at backend startup. (If you change : * this, see also LocalSetXLogInsertAllowed.) : */ : if (!LocalRecoveryInProgress) 0.00 : 4cd4e5: 74 09 je 4cd4f0 : * Note: We don't need a memory barrier when we're still in recovery. : * We might exit recovery immediately after return, so the caller : * can't rely on 'true' meaning that we're still in recovery anyway. : */ : : return LocalRecoveryInProgress; 0.00 : 4cd4e7: 0f b6 05 72 a9 69 00 movzbl 0x69a972(%rip),%eax # b67e60 : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7382 3.96 : 4cd4ee: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7382 9.90 : 4cd4ef: c3 retq : /* : * If we just exited recovery, make sure we read TimeLineID and : * RedoRecPtr after SharedRecoveryInProgress (for machines with : * weak memory ordering). : */ : pg_memory_barrier(); 0.00 : 4cd4f0: f0 83 04 24 00 lock addl $0x0,(%rsp) : InitXLOGAccess(); 0.00 : 4cd4f5: e8 a6 ff ff ff callq 4cd4a0 : * Note: We don't need a memory barrier when we're still in recovery. : * We might exit recovery immediately after return, so the caller : * can't rely on 'true' meaning that we're still in recovery anyway. : */ : : return LocalRecoveryInProgress; 0.00 : 4cd4fa: 0f b6 05 5f a9 69 00 movzbl 0x69a95f(%rip),%eax # b67e60 0.00 : 4cd501: eb eb jmp 4cd4ee Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 5.94 ??:0 5.02 ??:0 4.11 ??:0 3.20 ??:0 2.74 ??:0 2.74 ??:0 2.74 ??:0 2.74 ??:0 2.28 ??:0 2.28 ??:0 2.28 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.37 ??:0 1.37 ??:0 1.37 ??:0 1.37 ??:0 1.37 ??:0 1.37 ??:0 1.37 ??:0 1.37 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000078e20 <_int_malloc>: 0.46 : 78e20: 41 57 push %r15 ??:0 2.28 : 78e22: 41 56 push %r14 1.37 : 78e24: 41 55 push %r13 0.00 : 78e26: 41 54 push %r12 0.00 : 78e28: 55 push %rbp 0.00 : 78e29: 53 push %rbx 1.37 : 78e2a: 48 83 ec 78 sub $0x78,%rsp 0.00 : 78e2e: 48 83 fe bf cmp $0xffffffffffffffbf,%rsi 0.00 : 78e32: 48 89 7c 24 20 mov %rdi,0x20(%rsp) 1.83 : 78e37: 48 89 74 24 18 mov %rsi,0x18(%rsp) 0.46 : 78e3c: 0f 87 bd 09 00 00 ja 797ff <_int_malloc+0x9df> 0.46 : 78e42: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.91 : 78e47: 48 c7 44 24 28 20 00 movq $0x20,0x28(%rsp) 0.00 : 78e4e: 00 00 0.91 : 78e50: 48 83 c0 17 add $0x17,%rax 0.00 : 78e54: 48 89 c2 mov %rax,%rdx 0.00 : 78e57: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 78e5b: 48 83 f8 1f cmp $0x1f,%rax 0.00 : 78e5f: 48 0f 46 54 24 28 cmovbe 0x28(%rsp),%rdx 1.37 : 78e65: 48 3b 15 0c b9 2f 00 cmp 0x2fb90c(%rip),%rdx # 374778 4.11 : 78e6c: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : 78e71: 77 6d ja 78ee0 <_int_malloc+0xc0> 0.91 : 78e73: 8b 44 24 28 mov 0x28(%rsp),%eax 2.28 : 78e77: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.46 : 78e7c: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 2.28 : 78e81: c1 e8 04 shr $0x4,%eax 0.91 : 78e84: 8d 50 fe lea -0x2(%rax),%edx 0.00 : 78e87: 89 d0 mov %edx,%eax 0.00 : 78e89: 48 8d 4c c1 08 lea 0x8(%rcx,%rax,8),%rcx 1.37 : 78e8e: 48 89 4c 24 38 mov %rcx,0x38(%rsp) 0.91 : 78e93: 4c 8b 7c c3 08 mov 0x8(%rbx,%rax,8),%r15 0.46 : 78e98: 4d 85 ff test %r15,%r15 0.00 : 78e9b: 74 43 je 78ee0 <_int_malloc+0xc0> 1.83 : 78e9d: 49 8b 47 08 mov 0x8(%r15),%rax ??:0 5.94 : 78ea1: 49 8d 5f 10 lea 0x10(%r15),%rbx 0.00 : 78ea5: c1 e8 04 shr $0x4,%eax 0.46 : 78ea8: 83 e8 02 sub $0x2,%eax 0.00 : 78eab: 39 d0 cmp %edx,%eax 0.00 : 78ead: 0f 85 91 0d 00 00 jne 79c44 <_int_malloc+0xe24> 0.00 : 78eb3: 49 8b 47 10 mov 0x10(%r15),%rax 0.46 : 78eb7: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.46 : 78ebc: 48 89 02 mov %rax,(%rdx) ??:0 0.91 : 78ebf: 8b 05 bb b8 2f 00 mov 0x2fb8bb(%rip),%eax # 374780 0.00 : 78ec5: 85 c0 test %eax,%eax 0.00 : 78ec7: 0f 85 60 0d 00 00 jne 79c2d <_int_malloc+0xe0d> 0.00 : 78ecd: 48 83 c4 78 add $0x78,%rsp 0.46 : 78ed1: 48 89 d8 mov %rbx,%rax 0.00 : 78ed4: 5b pop %rbx 0.00 : 78ed5: 5d pop %rbp 0.00 : 78ed6: 41 5c pop %r12 0.00 : 78ed8: 41 5d pop %r13 0.46 : 78eda: 41 5e pop %r14 0.00 : 78edc: 41 5f pop %r15 0.46 : 78ede: c3 retq 0.00 : 78edf: 90 nop 2.74 : 78ee0: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 78ee7: 00 00 1.83 : 78ee9: 0f 87 b1 00 00 00 ja 78fa0 <_int_malloc+0x180> 0.46 : 78eef: 8b 4c 24 28 mov 0x28(%rsp),%ecx 0.00 : 78ef3: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.46 : 78ef8: c1 e9 04 shr $0x4,%ecx 0.00 : 78efb: 48 83 c3 68 add $0x68,%rbx 0.46 : 78eff: 8d 44 09 fe lea -0x2(%rcx,%rcx,1),%eax 0.46 : 78f03: 89 4c 24 34 mov %ecx,0x34(%rsp) 0.00 : 78f07: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 78f0c: 89 c0 mov %eax,%eax 0.00 : 78f0e: 48 8d 4c c3 f0 lea -0x10(%rbx,%rax,8),%rcx 0.00 : 78f13: 4c 8b 79 18 mov 0x18(%rcx),%r15 3.20 : 78f17: 49 39 cf cmp %rcx,%r15 0.00 : 78f1a: 0f 84 ce 00 00 00 je 78fee <_int_malloc+0x1ce> 0.00 : 78f20: 4d 85 ff test %r15,%r15 0.00 : 78f23: 0f 84 c7 08 00 00 je 797f0 <_int_malloc+0x9d0> 0.00 : 78f29: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 78f2d: 48 8d 35 5c 65 0c 00 lea 0xc655c(%rip),%rsi # 13f490 <__PRETTY_FUNCTION__.11129+0x1ab7> 0.00 : 78f34: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 78f38: 4c 39 fa cmp %r15,%rdx 0.00 : 78f3b: 0f 85 0a 0d 00 00 jne 79c4b <_int_malloc+0xe2b> 0.00 : 78f41: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 78f46: 48 83 4c 1a 08 01 orq $0x1,0x8(%rdx,%rbx,1) 0.46 : 78f4c: 48 89 41 18 mov %rax,0x18(%rcx) 0.00 : 78f50: 48 89 48 10 mov %rcx,0x10(%rax) 0.00 : 78f54: 48 8d 05 45 af 2f 00 lea 0x2faf45(%rip),%rax # 373ea0 0.00 : 78f5b: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 78f60: 74 05 je 78f67 <_int_malloc+0x147> 0.00 : 78f62: 48 83 4a 08 04 orq $0x4,0x8(%rdx) 0.00 : 78f67: 8b 05 13 b8 2f 00 mov 0x2fb813(%rip),%eax # 374780 0.00 : 78f6d: 48 8d 6a 10 lea 0x10(%rdx),%rbp 0.00 : 78f71: 48 89 eb mov %rbp,%rbx 0.00 : 78f74: 85 c0 test %eax,%eax 0.00 : 78f76: 0f 84 51 ff ff ff je 78ecd <_int_malloc+0xad> 0.00 : 78f7c: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 78f81: f7 d0 not %eax 0.00 : 78f83: 48 89 ef mov %rbp,%rdi 0.00 : 78f86: 0f b6 f0 movzbl %al,%esi 0.00 : 78f89: 48 89 eb mov %rbp,%rbx 0.00 : 78f8c: e8 df a4 00 00 callq 83470 <__GI_memset> 0.00 : 78f91: e9 37 ff ff ff jmpq 78ecd <_int_malloc+0xad> 0.00 : 78f96: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 78f9d: 00 00 00 0.00 : 78fa0: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 78fa5: 48 c1 e8 06 shr $0x6,%rax 0.00 : 78fa9: 48 83 f8 30 cmp $0x30,%rax 0.00 : 78fad: 0f 86 26 06 00 00 jbe 795d9 <_int_malloc+0x7b9> 0.46 : 78fb3: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 78fb8: 48 c1 e8 09 shr $0x9,%rax 0.00 : 78fbc: 48 83 f8 14 cmp $0x14,%rax 0.00 : 78fc0: 0f 87 d6 06 00 00 ja 7969c <_int_malloc+0x87c> 0.00 : 78fc6: 83 c0 5b add $0x5b,%eax 0.00 : 78fc9: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 78fcd: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 78fd2: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 78fd7: 48 83 c0 68 add $0x68,%rax 0.00 : 78fdb: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 78fe0: f6 42 04 01 testb $0x1,0x4(%rdx) 0.00 : 78fe4: 75 08 jne 78fee <_int_malloc+0x1ce> 0.00 : 78fe6: 48 89 d7 mov %rdx,%rdi 0.00 : 78fe9: e8 52 d8 ff ff callq 76840 0.46 : 78fee: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 78ff3: 8b 5c 24 28 mov 0x28(%rsp),%ebx 0.00 : 78ff7: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 78ffc: 48 83 c1 58 add $0x58,%rcx 2.74 : 79000: c1 eb 04 shr $0x4,%ebx 0.91 : 79003: 48 83 c0 20 add $0x20,%rax 0.00 : 79007: 48 89 4c 24 60 mov %rcx,0x60(%rsp) 0.00 : 7900c: 89 5c 24 6c mov %ebx,0x6c(%rsp) 1.83 : 79010: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 79015: 45 31 ff xor %r15d,%r15d 0.00 : 79018: eb 67 jmp 79081 <_int_malloc+0x261> 0.00 : 7901a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79020: 41 89 d5 mov %edx,%r13d 0.00 : 79023: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 79028: 41 c1 ed 04 shr $0x4,%r13d 0.00 : 7902c: 43 8d 44 2d fe lea -0x2(%r13,%r13,1),%eax 0.00 : 79031: 48 98 cltq 0.00 : 79033: 48 8d 74 c2 f0 lea -0x10(%rdx,%rax,8),%rsi 0.00 : 79038: 48 8b 5e 10 mov 0x10(%rsi),%rbx 1.83 : 7903c: 44 89 e8 mov %r13d,%eax 0.00 : 7903f: 41 83 e5 1f and $0x1f,%r13d 0.00 : 79043: ba 01 00 00 00 mov $0x1,%edx 0.00 : 79048: 44 89 e9 mov %r13d,%ecx 0.00 : 7904b: c1 f8 05 sar $0x5,%eax 0.00 : 7904e: 41 83 c7 01 add $0x1,%r15d 0.00 : 79052: d3 e2 shl %cl,%edx 0.00 : 79054: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 79059: 48 98 cltq 0.00 : 7905b: 09 94 81 58 08 00 00 or %edx,0x858(%rcx,%rax,4) 0.00 : 79062: 41 81 ff 10 27 00 00 cmp $0x2710,%r15d 0.00 : 79069: 49 89 74 24 18 mov %rsi,0x18(%r12) 0.00 : 7906e: 49 89 5c 24 10 mov %rbx,0x10(%r12) 0.00 : 79073: 4c 89 63 18 mov %r12,0x18(%rbx) 0.00 : 79077: 4c 89 66 10 mov %r12,0x10(%rsi) 0.00 : 7907b: 0f 84 3f 03 00 00 je 793c0 <_int_malloc+0x5a0> 2.74 : 79081: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.46 : 79086: 4c 8b 63 18 mov 0x18(%rbx),%r12 0.91 : 7908a: 4c 39 e3 cmp %r12,%rbx 0.00 : 7908d: 0f 84 2d 03 00 00 je 793c0 <_int_malloc+0x5a0> 0.00 : 79093: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.91 : 79098: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 7909d: 48 83 f8 10 cmp $0x10,%rax 0.00 : 790a1: 0f 86 11 05 00 00 jbe 795b8 <_int_malloc+0x798> 0.00 : 790a7: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 790ac: 48 3b 82 70 08 00 00 cmp 0x870(%rdx),%rax 0.00 : 790b3: 0f 87 ff 04 00 00 ja 795b8 <_int_malloc+0x798> 0.00 : 790b9: 48 89 c2 mov %rax,%rdx 0.00 : 790bc: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.00 : 790c0: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 790c7: 00 00 0.00 : 790c9: 77 0b ja 790d6 <_int_malloc+0x2b6> 0.00 : 790cb: 48 39 5c 24 60 cmp %rbx,0x60(%rsp) 0.00 : 790d0: 0f 84 aa 01 00 00 je 79280 <_int_malloc+0x460> 0.46 : 790d6: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : 790db: 48 89 59 18 mov %rbx,0x18(%rcx) 0.46 : 790df: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.46 : 790e3: 48 39 54 24 28 cmp %rdx,0x28(%rsp) 0.00 : 790e8: 0f 84 8a 04 00 00 je 79578 <_int_malloc+0x758> 0.00 : 790ee: 48 81 fa ff 03 00 00 cmp $0x3ff,%rdx 0.00 : 790f5: 0f 86 25 ff ff ff jbe 79020 <_int_malloc+0x200> 0.00 : 790fb: 48 89 d0 mov %rdx,%rax 0.00 : 790fe: 48 c1 e8 06 shr $0x6,%rax 0.00 : 79102: 48 83 f8 30 cmp $0x30,%rax 0.00 : 79106: 77 70 ja 79178 <_int_malloc+0x358> 0.00 : 79108: 44 8d 68 30 lea 0x30(%rax),%r13d 0.00 : 7910c: 8d 44 00 5e lea 0x5e(%rax,%rax,1),%eax 0.00 : 79110: 48 98 cltq 0.00 : 79112: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 79119: ff 0.00 : 7911a: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7911f: 48 01 c5 add %rax,%rbp 0.00 : 79122: 48 8b 5d 10 mov 0x10(%rbp),%rbx 0.46 : 79126: 48 39 eb cmp %rbp,%rbx 0.00 : 79129: 0f 84 11 02 00 00 je 79340 <_int_malloc+0x520> 0.00 : 7912f: 48 8b 75 18 mov 0x18(%rbp),%rsi 0.00 : 79133: 49 89 d6 mov %rdx,%r14 0.00 : 79136: 49 83 ce 01 or $0x1,%r14 0.00 : 7913a: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 7913e: a8 04 test $0x4,%al 0.00 : 79140: 0f 85 da 00 00 00 jne 79220 <_int_malloc+0x400> 0.00 : 79146: 49 39 c6 cmp %rax,%r14 0.00 : 79149: 73 5d jae 791a8 <_int_malloc+0x388> 0.00 : 7914b: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 7914f: 48 89 eb mov %rbp,%rbx 0.00 : 79152: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 79157: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 7915b: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 7915f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 79164: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 79168: 4c 89 60 20 mov %r12,0x20(%rax) 0.00 : 7916c: 4c 89 62 28 mov %r12,0x28(%rdx) 0.00 : 79170: e9 c7 fe ff ff jmpq 7903c <_int_malloc+0x21c> 0.00 : 79175: 0f 1f 00 nopl (%rax) 0.00 : 79178: 48 89 d0 mov %rdx,%rax 0.00 : 7917b: 48 c1 e8 09 shr $0x9,%rax 0.00 : 7917f: 48 83 f8 14 cmp $0x14,%rax 0.00 : 79183: 0f 87 c7 00 00 00 ja 79250 <_int_malloc+0x430> 0.00 : 79189: 44 8d 68 5b lea 0x5b(%rax),%r13d 0.00 : 7918d: 8d 84 00 b4 00 00 00 lea 0xb4(%rax,%rax,1),%eax 0.00 : 79194: 48 98 cltq 0.00 : 79196: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 7919d: ff 0.00 : 7919e: e9 77 ff ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 791a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 791a8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 791ac: a8 04 test $0x4,%al 0.00 : 791ae: 0f 85 b4 01 00 00 jne 79368 <_int_malloc+0x548> 0.00 : 791b4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 791b8: 49 39 c6 cmp %rax,%r14 0.00 : 791bb: 73 34 jae 791f1 <_int_malloc+0x3d1> 0.00 : 791bd: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 791c1: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 791c5: a8 04 test $0x4,%al 0.00 : 791c7: 74 ef je 791b8 <_int_malloc+0x398> 0.00 : 791c9: 48 8d 0d 57 2c 0c 00 lea 0xc2c57(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 791d0: 48 8d 35 6b 29 0c 00 lea 0xc296b(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 791d7: 48 8d 3d 82 2a 0c 00 lea 0xc2a82(%rip),%rdi # 13bc60 <__PRETTY_FUNCTION__.14063+0x1f9> 0.00 : 791de: ba 94 11 00 00 mov $0x1194,%edx 0.00 : 791e3: e8 d8 d5 ff ff callq 767c0 <__malloc_assert> 0.00 : 791e8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 791ec: 49 39 c6 cmp %rax,%r14 0.00 : 791ef: 72 cc jb 791bd <_int_malloc+0x39d> 0.00 : 791f1: 0f 84 61 01 00 00 je 79358 <_int_malloc+0x538> 0.00 : 791f7: 49 89 5c 24 20 mov %rbx,0x20(%r12) 0.00 : 791fc: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 79200: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 79205: 4c 89 63 28 mov %r12,0x28(%rbx) 0.00 : 79209: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 7920e: 4c 89 60 20 mov %r12,0x20(%rax) 0.00 : 79212: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 79216: e9 21 fe ff ff jmpq 7903c <_int_malloc+0x21c> 0.00 : 7921b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79220: 48 8d 35 1b 29 0c 00 lea 0xc291b(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79227: 48 8d 0d f9 2b 0c 00 lea 0xc2bf9(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7922e: 48 8d 3d 10 2a 0c 00 lea 0xc2a10(%rip),%rdi # 13bc45 <__PRETTY_FUNCTION__.14063+0x1de> 0.00 : 79235: ba 86 11 00 00 mov $0x1186,%edx 0.00 : 7923a: e8 81 d5 ff ff callq 767c0 <__malloc_assert> 0.00 : 7923f: 48 8b 75 18 mov 0x18(%rbp),%rsi 0.00 : 79243: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 79247: e9 fa fe ff ff jmpq 79146 <_int_malloc+0x326> 0.00 : 7924c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79250: 48 89 d0 mov %rdx,%rax 0.00 : 79253: 48 c1 e8 0c shr $0xc,%rax 0.00 : 79257: 48 83 f8 0a cmp $0xa,%rax 0.00 : 7925b: 0f 87 2f 01 00 00 ja 79390 <_int_malloc+0x570> 0.00 : 79261: 44 8d 68 6e lea 0x6e(%rax),%r13d 0.00 : 79265: 8d 84 00 da 00 00 00 lea 0xda(%rax,%rax,1),%eax 0.00 : 7926c: 48 98 cltq 0.00 : 7926e: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 79275: ff 0.00 : 79276: e9 9f fe ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 7927b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79280: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79285: 48 8b 48 60 mov 0x60(%rax),%rcx 0.00 : 79289: 4c 39 e1 cmp %r12,%rcx 0.00 : 7928c: 0f 85 44 fe ff ff jne 790d6 <_int_malloc+0x2b6> 0.00 : 79292: 48 3b 54 24 08 cmp 0x8(%rsp),%rdx 0.00 : 79297: 0f 86 39 fe ff ff jbe 790d6 <_int_malloc+0x2b6> 0.00 : 7929d: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 792a2: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : 792a7: 48 89 d6 mov %rdx,%rsi 0.00 : 792aa: 48 2b 74 24 28 sub 0x28(%rsp),%rsi 0.00 : 792af: 49 8d 14 1c lea (%r12,%rbx,1),%rdx 0.00 : 792b3: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 792b7: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 792bb: 48 81 fe ff 03 00 00 cmp $0x3ff,%rsi 0.00 : 792c2: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 792c7: 48 89 53 60 mov %rdx,0x60(%rbx) 0.00 : 792cb: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 792cf: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 792d3: 76 10 jbe 792e5 <_int_malloc+0x4c5> 0.00 : 792d5: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 792dc: 00 0.00 : 792dd: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 792e4: 00 0.00 : 792e5: 48 8d 05 b4 ab 2f 00 lea 0x2fabb4(%rip),%rax # 373ea0 0.00 : 792ec: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 792f1: 48 8d 69 10 lea 0x10(%rcx),%rbp 0.46 : 792f5: 48 89 eb mov %rbp,%rbx 0.00 : 792f8: 0f 95 c0 setne %al 0.00 : 792fb: 48 83 4c 24 28 01 orq $0x1,0x28(%rsp) 0.00 : 79301: 0f b6 c0 movzbl %al,%eax 0.00 : 79304: 48 c1 e0 02 shl $0x2,%rax 0.00 : 79308: 48 09 44 24 28 or %rax,0x28(%rsp) 0.00 : 7930d: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79312: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 79316: 48 89 f0 mov %rsi,%rax 0.00 : 79319: 48 83 c8 01 or $0x1,%rax 0.00 : 7931d: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 79321: 48 89 34 32 mov %rsi,(%rdx,%rsi,1) 0.00 : 79325: 8b 05 55 b4 2f 00 mov 0x2fb455(%rip),%eax # 374780 0.00 : 7932b: 85 c0 test %eax,%eax 0.00 : 7932d: 0f 84 9a fb ff ff je 78ecd <_int_malloc+0xad> 0.00 : 79333: e9 44 fc ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 79338: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7933f: 00 0.00 : 79340: 4d 89 64 24 28 mov %r12,0x28(%r12) 0.00 : 79345: 4d 89 64 24 20 mov %r12,0x20(%r12) 0.00 : 7934a: 48 89 de mov %rbx,%rsi 0.00 : 7934d: e9 ea fc ff ff jmpq 7903c <_int_malloc+0x21c> 0.00 : 79352: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79358: 48 8b 5b 10 mov 0x10(%rbx),%rbx 0.00 : 7935c: e9 b1 fe ff ff jmpq 79212 <_int_malloc+0x3f2> 0.00 : 79361: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 79368: 48 8d 0d b8 2a 0c 00 lea 0xc2ab8(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7936f: 48 8d 35 cc 27 0c 00 lea 0xc27cc(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79376: 48 8d 3d e3 28 0c 00 lea 0xc28e3(%rip),%rdi # 13bc60 <__PRETTY_FUNCTION__.14063+0x1f9> 0.00 : 7937d: ba 90 11 00 00 mov $0x1190,%edx 0.00 : 79382: e8 39 d4 ff ff callq 767c0 <__malloc_assert> 0.00 : 79387: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7938b: e9 28 fe ff ff jmpq 791b8 <_int_malloc+0x398> 0.00 : 79390: 48 89 d0 mov %rdx,%rax 0.00 : 79393: 48 c1 e8 0f shr $0xf,%rax 0.00 : 79397: 48 83 f8 04 cmp $0x4,%rax 0.00 : 7939b: 0f 87 47 01 00 00 ja 794e8 <_int_malloc+0x6c8> 0.00 : 793a1: 44 8d 68 77 lea 0x77(%rax),%r13d 0.00 : 793a5: 8d 84 00 ec 00 00 00 lea 0xec(%rax,%rax,1),%eax 0.00 : 793ac: 48 98 cltq 0.00 : 793ae: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 793b5: ff 0.00 : 793b6: e9 5f fd ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 793bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 1.83 : 793c0: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 793c7: 00 00 0.46 : 793c9: 76 2c jbe 793f7 <_int_malloc+0x5d7> 0.00 : 793cb: 8b 54 24 34 mov 0x34(%rsp),%edx 0.00 : 793cf: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : 793d4: 8d 44 12 fe lea -0x2(%rdx,%rdx,1),%eax 0.00 : 793d8: 89 c0 mov %eax,%eax 0.00 : 793da: 48 8d 54 c1 f0 lea -0x10(%rcx,%rax,8),%rdx 0.00 : 793df: 48 8b 42 10 mov 0x10(%rdx),%rax 0.91 : 793e3: 48 39 d0 cmp %rdx,%rax 0.00 : 793e6: 74 0f je 793f7 <_int_malloc+0x5d7> 0.00 : 793e8: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 793ed: 48 3b 58 08 cmp 0x8(%rax),%rbx 0.00 : 793f1: 0f 86 df 02 00 00 jbe 796d6 <_int_malloc+0x8b6> 0.00 : 793f7: 8b 4c 24 34 mov 0x34(%rsp),%ecx 0.00 : 793fb: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79400: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 79405: 83 c1 01 add $0x1,%ecx 0.00 : 79408: 8d 44 09 fe lea -0x2(%rcx,%rcx,1),%eax 0.00 : 7940c: 41 89 cd mov %ecx,%r13d 0.00 : 7940f: 83 e1 1f and $0x1f,%ecx 0.00 : 79412: 41 c1 ed 05 shr $0x5,%r13d 0.00 : 79416: 89 c0 mov %eax,%eax 0.00 : 79418: 45 89 ee mov %r13d,%r14d 0.00 : 7941b: 46 8b a4 b3 58 08 00 mov 0x858(%rbx,%r14,4),%r12d 0.00 : 79422: 00 0.91 : 79423: 48 8d 6c c2 f0 lea -0x10(%rdx,%rax,8),%rbp 0.00 : 79428: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 7942d: d3 e3 shl %cl,%ebx 0.00 : 7942f: 90 nop 0.00 : 79430: 44 39 e3 cmp %r12d,%ebx 0.00 : 79433: 77 0b ja 79440 <_int_malloc+0x620> 0.46 : 79435: 85 db test %ebx,%ebx 0.00 : 79437: 0f 85 9a 00 00 00 jne 794d7 <_int_malloc+0x6b7> 0.00 : 7943d: 0f 1f 00 nopl (%rax) 0.91 : 79440: 41 83 c5 01 add $0x1,%r13d 0.00 : 79444: 41 83 fd 03 cmp $0x3,%r13d 0.00 : 79448: 0f 87 d2 00 00 00 ja 79520 <_int_malloc+0x700> 0.00 : 7944e: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.46 : 79453: 45 89 ee mov %r13d,%r14d 0.00 : 79456: 46 8b a4 b0 58 08 00 mov 0x858(%rax,%r14,4),%r12d 0.00 : 7945d: 00 0.00 : 7945e: 45 85 e4 test %r12d,%r12d 0.00 : 79461: 74 dd je 79440 <_int_malloc+0x620> 0.00 : 79463: 44 89 e8 mov %r13d,%eax 0.00 : 79466: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 7946b: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 79470: c1 e0 06 shl $0x6,%eax 0.00 : 79473: 83 e8 02 sub $0x2,%eax 0.00 : 79476: 44 85 e3 test %r12d,%ebx 0.00 : 79479: 89 c0 mov %eax,%eax 0.00 : 7947b: 48 8d 6c c2 f0 lea -0x10(%rdx,%rax,8),%rbp 0.00 : 79480: 74 5a je 794dc <_int_malloc+0x6bc> 0.00 : 79482: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 1.37 : 79488: 4c 8b 7d 18 mov 0x18(%rbp),%r15 0.46 : 7948c: 49 39 ef cmp %rbp,%r15 0.00 : 7948f: 0f 85 50 01 00 00 jne 795e5 <_int_malloc+0x7c5> 0.00 : 79495: 89 d8 mov %ebx,%eax 0.00 : 79497: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 7949c: 48 83 c5 10 add $0x10,%rbp 0.00 : 794a0: f7 d0 not %eax 0.00 : 794a2: 01 db add %ebx,%ebx 0.00 : 794a4: 41 21 c4 and %eax,%r12d 0.00 : 794a7: 46 89 a4 b1 58 08 00 mov %r12d,0x858(%rcx,%r14,4) 0.00 : 794ae: 00 0.00 : 794af: e9 7c ff ff ff jmpq 79430 <_int_malloc+0x610> 0.00 : 794b4: 48 8d 0d 6c 29 0c 00 lea 0xc296c(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 794bb: 48 8d 35 80 26 0c 00 lea 0xc2680(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 794c2: 48 8d 3d ae 27 0c 00 lea 0xc27ae(%rip),%rdi # 13bc77 <__PRETTY_FUNCTION__.14063+0x210> 0.00 : 794c9: ba 15 12 00 00 mov $0x1215,%edx 0.00 : 794ce: e8 ed d2 ff ff callq 767c0 <__malloc_assert> 0.00 : 794d3: 48 83 c5 10 add $0x10,%rbp 0.46 : 794d7: 44 85 e3 test %r12d,%ebx 0.00 : 794da: 75 ac jne 79488 <_int_malloc+0x668> 0.46 : 794dc: 01 db add %ebx,%ebx 0.00 : 794de: 75 f3 jne 794d3 <_int_malloc+0x6b3> 0.00 : 794e0: eb d2 jmp 794b4 <_int_malloc+0x694> 0.00 : 794e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 794e8: 48 89 d1 mov %rdx,%rcx 0.00 : 794eb: 41 bd 7e 00 00 00 mov $0x7e,%r13d 0.00 : 794f1: b8 c0 07 00 00 mov $0x7c0,%eax 0.00 : 794f6: 48 c1 e9 12 shr $0x12,%rcx 0.00 : 794fa: 48 83 f9 02 cmp $0x2,%rcx 0.00 : 794fe: 0f 87 16 fc ff ff ja 7911a <_int_malloc+0x2fa> 0.00 : 79504: 8d 84 09 f6 00 00 00 lea 0xf6(%rcx,%rcx,1),%eax 0.00 : 7950b: 44 8d 69 7c lea 0x7c(%rcx),%r13d 0.00 : 7950f: 48 98 cltq 0.00 : 79511: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 79518: ff 0.00 : 79519: e9 fc fb ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 7951e: 66 90 xchg %ax,%ax 1.37 : 79520: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.91 : 79525: 4c 8b 6b 58 mov 0x58(%rbx),%r13 1.83 : 79529: 49 8b 55 08 mov 0x8(%r13),%rdx 2.74 : 7952d: 49 89 d6 mov %rdx,%r14 0.46 : 79530: 49 83 e6 f8 and $0xfffffffffffffff8,%r14 0.00 : 79534: 4c 3b 74 24 08 cmp 0x8(%rsp),%r14 0.00 : 79539: 0f 83 53 04 00 00 jae 79992 <_int_malloc+0xb72> 0.46 : 7953f: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 79544: f6 41 04 01 testb $0x1,0x4(%rcx) 0.00 : 79548: 0f 85 a2 04 00 00 jne 799f0 <_int_malloc+0xbd0> 0.00 : 7954e: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 79555: 00 00 0.00 : 79557: 0f 87 1b 01 00 00 ja 79678 <_int_malloc+0x858> 0.00 : 7955d: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 79562: e8 d9 d2 ff ff callq 76840 0.00 : 79567: 8b 5c 24 6c mov 0x6c(%rsp),%ebx 0.00 : 7956b: 89 5c 24 34 mov %ebx,0x34(%rsp) 0.00 : 7956f: e9 a1 fa ff ff jmpq 79015 <_int_malloc+0x1f5> 0.00 : 79574: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79578: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 7957d: 48 8d 05 1c a9 2f 00 lea 0x2fa91c(%rip),%rax # 373ea0 0.00 : 79584: 49 83 4c 1c 08 01 orq $0x1,0x8(%r12,%rbx,1) 0.00 : 7958a: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 7958f: 74 06 je 79597 <_int_malloc+0x777> 0.00 : 79591: 49 83 4c 24 08 04 orq $0x4,0x8(%r12) 0.00 : 79597: 8b 05 e3 b1 2f 00 mov 0x2fb1e3(%rip),%eax # 374780 0.00 : 7959d: 49 8d 6c 24 10 lea 0x10(%r12),%rbp 0.00 : 795a2: 48 89 eb mov %rbp,%rbx 0.00 : 795a5: 85 c0 test %eax,%eax 0.00 : 795a7: 0f 84 20 f9 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 795ad: e9 ca f9 ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 795b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 795b8: 8b 3d 4a 8b 2f 00 mov 0x2f8b4a(%rip),%edi # 372108 0.00 : 795be: 49 8d 54 24 10 lea 0x10(%r12),%rdx 0.00 : 795c3: 48 8d 35 5f 26 0c 00 lea 0xc265f(%rip),%rsi # 13bc29 <__PRETTY_FUNCTION__.14063+0x1c2> 0.00 : 795ca: e8 91 cf ff ff callq 76560 0.00 : 795cf: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 795d4: e9 e0 fa ff ff jmpq 790b9 <_int_malloc+0x299> 0.00 : 795d9: 83 c0 30 add $0x30,%eax 0.00 : 795dc: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 795e0: e9 e8 f9 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 795e5: 4d 8b 67 08 mov 0x8(%r15),%r12 0.00 : 795e9: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 795ed: 4c 39 64 24 28 cmp %r12,0x28(%rsp) 0.00 : 795f2: 0f 87 50 03 00 00 ja 79948 <_int_malloc+0xb28> 0.46 : 795f8: 49 8b 5f 10 mov 0x10(%r15),%rbx 0.00 : 795fc: 4d 89 e5 mov %r12,%r13 0.00 : 795ff: 4c 2b 6c 24 28 sub 0x28(%rsp),%r13 0.91 : 79604: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 79608: 48 8b 6b 18 mov 0x18(%rbx),%rbp 0.00 : 7960c: 4c 39 fd cmp %r15,%rbp 0.00 : 7960f: 0f 85 de 06 00 00 jne 79cf3 <_int_malloc+0xed3> 0.91 : 79615: 4c 3b 78 10 cmp 0x10(%rax),%r15 0.00 : 79619: 0f 85 d4 06 00 00 jne 79cf3 <_int_malloc+0xed3> 0.91 : 7961f: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 79623: 48 89 58 10 mov %rbx,0x10(%rax) 0.00 : 79627: 49 81 7f 08 ff 03 00 cmpq $0x3ff,0x8(%r15) 0.00 : 7962e: 00 0.00 : 7962f: 0f 87 89 02 00 00 ja 798be <_int_malloc+0xa9e> 0.00 : 79635: 49 83 fd 1f cmp $0x1f,%r13 0.00 : 79639: 0f 87 de 01 00 00 ja 7981d <_int_malloc+0x9fd> 0.00 : 7963f: 4b 83 4c 27 08 01 orq $0x1,0x8(%r15,%r12,1) 0.00 : 79645: 48 8d 05 54 a8 2f 00 lea 0x2fa854(%rip),%rax # 373ea0 0.00 : 7964c: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 79651: 74 05 je 79658 <_int_malloc+0x838> 0.00 : 79653: 49 83 4f 08 04 orq $0x4,0x8(%r15) 0.46 : 79658: 8b 05 22 b1 2f 00 mov 0x2fb122(%rip),%eax # 374780 0.00 : 7965e: 49 8d 6f 10 lea 0x10(%r15),%rbp 0.00 : 79662: 48 89 eb mov %rbp,%rbx 0.00 : 79665: 85 c0 test %eax,%eax 0.00 : 79667: 0f 84 60 f8 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 7966d: e9 0a f9 ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 79672: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79678: 48 8d 0d a8 27 0c 00 lea 0xc27a8(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7967f: 48 8d 35 bc 24 0c 00 lea 0xc24bc(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79686: 48 8d 3d 13 5f 0c 00 lea 0xc5f13(%rip),%rdi # 13f5a0 <__PRETTY_FUNCTION__.11129+0x1bc7> 0.00 : 7968d: ba 90 12 00 00 mov $0x1290,%edx 0.00 : 79692: e8 29 d1 ff ff callq 767c0 <__malloc_assert> 0.00 : 79697: e9 c1 fe ff ff jmpq 7955d <_int_malloc+0x73d> 0.00 : 7969c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 1.37 : 796a1: 48 c1 e8 0c shr $0xc,%rax 0.00 : 796a5: 48 83 f8 0a cmp $0xa,%rax 0.00 : 796a9: 76 1f jbe 796ca <_int_malloc+0x8aa> 0.00 : 796ab: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 796b0: 48 c1 e8 0f shr $0xf,%rax 0.00 : 796b4: 48 83 f8 04 cmp $0x4,%rax 0.00 : 796b8: 0f 87 ae 02 00 00 ja 7996c <_int_malloc+0xb4c> 0.00 : 796be: 83 c0 77 add $0x77,%eax 0.00 : 796c1: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 796c5: e9 03 f9 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 796ca: 83 c0 6e add $0x6e,%eax 0.00 : 796cd: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 796d1: e9 f7 f8 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 796d6: 48 8b 40 28 mov 0x28(%rax),%rax 0.46 : 796da: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 796de: 49 89 cc mov %rcx,%r12 0.00 : 796e1: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 796e5: 4c 39 e3 cmp %r12,%rbx 0.00 : 796e8: 76 16 jbe 79700 <_int_malloc+0x8e0> 0.00 : 796ea: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 796ee: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 796f2: 49 89 cc mov %rcx,%r12 0.00 : 796f5: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 796f9: 4c 39 64 24 28 cmp %r12,0x28(%rsp) 0.00 : 796fe: 77 ea ja 796ea <_int_malloc+0x8ca> 0.00 : 79700: 48 39 42 18 cmp %rax,0x18(%rdx) 0.00 : 79704: 0f 84 9a 0a 00 00 je 7a1a4 <_int_malloc+0x1384> 0.00 : 7970a: 4c 8b 78 10 mov 0x10(%rax),%r15 0.00 : 7970e: 49 39 4f 08 cmp %rcx,0x8(%r15) 0.00 : 79712: 0f 84 83 0a 00 00 je 7a19b <_int_malloc+0x137b> 0.00 : 79718: 4c 89 fb mov %r15,%rbx 0.00 : 7971b: 49 89 c7 mov %rax,%r15 0.00 : 7971e: 48 8b 6b 18 mov 0x18(%rbx),%rbp 0.00 : 79722: 4d 89 e5 mov %r12,%r13 0.00 : 79725: 4c 2b 6c 24 28 sub 0x28(%rsp),%r13 0.00 : 7972a: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 7972e: 4c 39 fd cmp %r15,%rbp 0.00 : 79731: 0f 85 20 0a 00 00 jne 7a157 <_int_malloc+0x1337> 0.00 : 79737: 4c 3b 78 10 cmp 0x10(%rax),%r15 0.00 : 7973b: 0f 85 16 0a 00 00 jne 7a157 <_int_malloc+0x1337> 0.00 : 79741: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 79745: 48 89 58 10 mov %rbx,0x10(%rax) 0.46 : 79749: 49 81 7f 08 ff 03 00 cmpq $0x3ff,0x8(%r15) 0.00 : 79750: 00 0.00 : 79751: 0f 87 81 09 00 00 ja 7a0d8 <_int_malloc+0x12b8> 0.00 : 79757: 49 83 fd 1f cmp $0x1f,%r13 0.00 : 7975b: 0f 86 de fe ff ff jbe 7963f <_int_malloc+0x81f> 0.00 : 79761: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 79766: 48 8d 35 b3 5d 0c 00 lea 0xc5db3(%rip),%rsi # 13f520 <__PRETTY_FUNCTION__.11129+0x1b47> 0.00 : 7976d: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 79771: 48 3b 50 18 cmp 0x18(%rax),%rdx 0.00 : 79775: 0f 85 d0 04 00 00 jne 79c4b <_int_malloc+0xe2b> 0.00 : 7977b: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 79780: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 79785: 49 81 fd ff 03 00 00 cmp $0x3ff,%r13 0.00 : 7978c: 49 8d 14 0f lea (%r15,%rcx,1),%rdx 0.00 : 79790: 48 89 5a 18 mov %rbx,0x18(%rdx) 0.00 : 79794: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 79798: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 7979c: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 797a0: 76 10 jbe 797b2 <_int_malloc+0x992> 0.00 : 797a2: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 797a9: 00 0.00 : 797aa: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 797b1: 00 0.00 : 797b2: 48 8d 05 e7 a6 2f 00 lea 0x2fa6e7(%rip),%rax # 373ea0 0.00 : 797b9: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 797be: 0f 95 c0 setne %al 0.00 : 797c1: 48 83 4c 24 28 01 orq $0x1,0x28(%rsp) 0.00 : 797c7: 0f b6 c0 movzbl %al,%eax 0.00 : 797ca: 48 c1 e0 02 shl $0x2,%rax 0.00 : 797ce: 48 09 44 24 28 or %rax,0x28(%rsp) 0.00 : 797d3: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 797d8: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 797dc: 4c 89 e8 mov %r13,%rax 0.00 : 797df: 48 83 c8 01 or $0x1,%rax 0.00 : 797e3: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 797e7: 4e 89 2c 2a mov %r13,(%rdx,%r13,1) 0.00 : 797eb: e9 68 fe ff ff jmpq 79658 <_int_malloc+0x838> 0.91 : 797f0: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.46 : 797f5: e8 46 d0 ff ff callq 76840 0.00 : 797fa: e9 ef f7 ff ff jmpq 78fee <_int_malloc+0x1ce> 0.00 : 797ff: 48 8b 15 32 86 2f 00 mov 0x2f8632(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 79806: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7980d: 00 00 0.00 : 7980f: 31 db xor %ebx,%ebx 0.00 : 79811: c7 04 10 0c 00 00 00 movl $0xc,(%rax,%rdx,1) 0.00 : 79818: e9 b0 f6 ff ff jmpq 78ecd <_int_malloc+0xad> 0.00 : 7981d: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 79822: 48 8d 35 4f 5d 0c 00 lea 0xc5d4f(%rip),%rsi # 13f578 <__PRETTY_FUNCTION__.11129+0x1b9f> 0.00 : 79829: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 7982d: 48 3b 58 18 cmp 0x18(%rax),%rbx 0.00 : 79831: 0f 85 14 04 00 00 jne 79c4b <_int_malloc+0xe2b> 0.46 : 79837: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 7983c: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 79841: 49 8d 14 0f lea (%r15,%rcx,1),%rdx 0.00 : 79845: 48 81 f9 ff 03 00 00 cmp $0x3ff,%rcx 0.46 : 7984c: 48 89 5a 18 mov %rbx,0x18(%rdx) 0.00 : 79850: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 79854: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 79858: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 7985c: 77 09 ja 79867 <_int_malloc+0xa47> 0.00 : 7985e: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79863: 48 89 50 60 mov %rdx,0x60(%rax) 0.00 : 79867: 49 81 fd ff 03 00 00 cmp $0x3ff,%r13 0.00 : 7986e: 76 10 jbe 79880 <_int_malloc+0xa60> 0.00 : 79870: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 79877: 00 0.00 : 79878: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 7987f: 00 0.00 : 79880: 48 8d 05 19 a6 2f 00 lea 0x2fa619(%rip),%rax # 373ea0 0.00 : 79887: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 7988c: 0f 95 c0 setne %al 0.00 : 7988f: 48 83 4c 24 28 01 orq $0x1,0x28(%rsp) 0.00 : 79895: 0f b6 c0 movzbl %al,%eax 0.00 : 79898: 48 c1 e0 02 shl $0x2,%rax 0.00 : 7989c: 48 09 44 24 28 or %rax,0x28(%rsp) 0.00 : 798a1: 4c 89 e8 mov %r13,%rax 0.00 : 798a4: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 798a9: 48 83 c8 01 or $0x1,%rax 0.00 : 798ad: 49 89 4f 08 mov %rcx,0x8(%r15) 0.00 : 798b1: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 798b5: 4e 89 2c 2a mov %r13,(%rdx,%r13,1) 0.00 : 798b9: e9 9a fd ff ff jmpq 79658 <_int_malloc+0x838> 0.00 : 798be: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 798c2: 48 85 c0 test %rax,%rax 0.00 : 798c5: 0f 84 6a fd ff ff je 79635 <_int_malloc+0x815> 0.00 : 798cb: 4c 3b 78 28 cmp 0x28(%rax),%r15 0.00 : 798cf: 74 1f je 798f0 <_int_malloc+0xad0> 0.00 : 798d1: 48 8d 0d 4f 25 0c 00 lea 0xc254f(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 798d8: 48 8d 35 63 22 0c 00 lea 0xc2263(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 798df: 48 8d 3d da 5b 0c 00 lea 0xc5bda(%rip),%rdi # 13f4c0 <__PRETTY_FUNCTION__.11129+0x1ae7> 0.00 : 798e6: ba 2b 12 00 00 mov $0x122b,%edx 0.00 : 798eb: e8 d0 ce ff ff callq 767c0 <__malloc_assert> 0.00 : 798f0: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 798f4: 48 3b 68 20 cmp 0x20(%rax),%rbp 0.00 : 798f8: 74 1f je 79919 <_int_malloc+0xaf9> 0.00 : 798fa: 48 8d 0d 26 25 0c 00 lea 0xc2526(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 79901: 48 8d 35 3a 22 0c 00 lea 0xc223a(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79908: 48 8d 3d e1 5b 0c 00 lea 0xc5be1(%rip),%rdi # 13f4f0 <__PRETTY_FUNCTION__.11129+0x1b17> 0.00 : 7990f: ba 2b 12 00 00 mov $0x122b,%edx 0.00 : 79914: e8 a7 ce ff ff callq 767c0 <__malloc_assert> 0.00 : 79919: 48 83 7b 20 00 cmpq $0x0,0x20(%rbx) 0.00 : 7991e: 0f 84 e9 03 00 00 je 79d0d <_int_malloc+0xeed> 0.00 : 79924: 48 8b 55 20 mov 0x20(%rbp),%rdx 0.00 : 79928: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7992c: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 79930: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 79934: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 79938: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 7993c: e9 f4 fc ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79941: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 79948: 48 8d 0d d8 24 0c 00 lea 0xc24d8(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7994f: 48 8d 35 ec 21 0c 00 lea 0xc21ec(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79956: 48 8d 3d eb 5b 0c 00 lea 0xc5beb(%rip),%rdi # 13f548 <__PRETTY_FUNCTION__.11129+0x1b6f> 0.00 : 7995d: ba 26 12 00 00 mov $0x1226,%edx 0.00 : 79962: e8 59 ce ff ff callq 767c0 <__malloc_assert> 0.00 : 79967: e9 8c fc ff ff jmpq 795f8 <_int_malloc+0x7d8> 0.00 : 7996c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79971: c7 44 24 34 7e 00 00 movl $0x7e,0x34(%rsp) 0.00 : 79978: 00 0.00 : 79979: 48 c1 e8 12 shr $0x12,%rax 0.00 : 7997d: 8d 50 7c lea 0x7c(%rax),%edx 0.00 : 79980: 48 83 f8 03 cmp $0x3,%rax 0.00 : 79984: 0f 43 54 24 34 cmovae 0x34(%rsp),%edx 0.00 : 79989: 89 54 24 34 mov %edx,0x34(%rsp) 0.00 : 7998d: e9 3b f6 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 79992: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79997: 31 d2 xor %edx,%edx 0.00 : 79999: 49 8d 6d 10 lea 0x10(%r13),%rbp 0.00 : 7999d: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 799a2: 48 8d 05 f7 a4 2f 00 lea 0x2fa4f7(%rip),%rax # 373ea0 0.00 : 799a9: 48 89 4b 58 mov %rcx,0x58(%rbx) 0.00 : 799ad: 48 39 c3 cmp %rax,%rbx 0.00 : 799b0: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 799b5: 0f 95 c2 setne %dl 0.00 : 799b8: 48 89 eb mov %rbp,%rbx 0.00 : 799bb: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 799bf: 48 83 c8 01 or $0x1,%rax 0.91 : 799c3: 48 09 d0 or %rdx,%rax 0.46 : 799c6: 49 89 45 08 mov %rax,0x8(%r13) 0.91 : 799ca: 4c 2b 74 24 28 sub 0x28(%rsp),%r14 0.00 : 799cf: 49 83 ce 01 or $0x1,%r14 ??:0 5.02 : 799d3: 4c 89 71 08 mov %r14,0x8(%rcx) 0.00 : 799d7: 8b 05 a3 ad 2f 00 mov 0x2fada3(%rip),%eax # 374780 0.00 : 799dd: 85 c0 test %eax,%eax 0.00 : 799df: 0f 84 e8 f4 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 799e5: e9 92 f5 ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 799ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 799f0: 8b 05 5a ad 2f 00 mov 0x2fad5a(%rip),%eax # 374750 0.00 : 799f6: 83 e8 01 sub $0x1,%eax 0.00 : 799f9: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 799fe: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79a03: 48 3b 05 26 ad 2f 00 cmp 0x2fad26(%rip),%rax # 374730 0.00 : 79a0a: 0f 82 db 02 00 00 jb 79ceb <_int_malloc+0xecb> 0.00 : 79a10: 8b 05 2a ad 2f 00 mov 0x2fad2a(%rip),%eax # 374740 0.00 : 79a16: 3b 05 28 ad 2f 00 cmp 0x2fad28(%rip),%eax # 374744 0.00 : 79a1c: 0f 8d c9 02 00 00 jge 79ceb <_int_malloc+0xecb> 0.00 : 79a22: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 79a27: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 79a2c: 48 89 c8 mov %rcx,%rax 0.00 : 79a2f: 48 8d 6c 11 08 lea 0x8(%rcx,%rdx,1),%rbp 0.00 : 79a34: 48 f7 d0 not %rax 0.00 : 79a37: 48 21 c5 and %rax,%rbp 0.00 : 79a3a: 48 39 ea cmp %rbp,%rdx 0.00 : 79a3d: 0f 82 68 03 00 00 jb 79dab <_int_malloc+0xf8b> 0.00 : 79a43: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79a48: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 79a4e: 4c 8b 6b 58 mov 0x58(%rbx),%r13 0.00 : 79a52: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 79a56: 49 89 d6 mov %rdx,%r14 0.00 : 79a59: 49 83 e6 f8 and $0xfffffffffffffff8,%r14 0.00 : 79a5d: 4d 85 f6 test %r14,%r14 0.00 : 79a60: 4b 8d 4c 35 00 lea 0x0(%r13,%r14,1),%rcx 0.00 : 79a65: 0f 95 44 24 5f setne 0x5f(%rsp) 0.00 : 79a6a: 4c 39 6c 24 60 cmp %r13,0x60(%rsp) 0.00 : 79a6f: 48 89 4c 24 50 mov %rcx,0x50(%rsp) 0.00 : 79a74: 0f 84 c6 07 00 00 je 7a240 <_int_malloc+0x1420> 0.00 : 79a7a: 49 83 fe 1f cmp $0x1f,%r14 0.00 : 79a7e: 76 11 jbe 79a91 <_int_malloc+0xc71> 0.00 : 79a80: 83 e2 01 and $0x1,%edx 0.00 : 79a83: 74 0c je 79a91 <_int_malloc+0xc71> 0.00 : 79a85: 48 8b 5c 24 40 mov 0x40(%rsp),%rbx 0.00 : 79a8a: 48 85 5c 24 50 test %rbx,0x50(%rsp) 0.00 : 79a8f: 74 1f je 79ab0 <_int_malloc+0xc90> 0.00 : 79a91: 48 8d 0d 9b 23 0c 00 lea 0xc239b(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79a98: 48 8d 35 a3 20 0c 00 lea 0xc20a3(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79a9f: 48 8d 3d a2 5b 0c 00 lea 0xc5ba2(%rip),%rdi # 13f648 <__PRETTY_FUNCTION__.11129+0x1c6f> 0.00 : 79aa6: ba 13 0c 00 00 mov $0xc13,%edx 0.00 : 79aab: e8 10 cd ff ff callq 767c0 <__malloc_assert> 0.00 : 79ab0: 4c 39 74 24 08 cmp %r14,0x8(%rsp) 0.00 : 79ab5: 77 1f ja 79ad6 <_int_malloc+0xcb6> 0.00 : 79ab7: 48 8d 0d 75 23 0c 00 lea 0xc2375(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79abe: 48 8d 35 7d 20 0c 00 lea 0xc207d(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79ac5: 48 8d 3d fc 5c 0c 00 lea 0xc5cfc(%rip),%rdi # 13f7c8 <__PRETTY_FUNCTION__.11129+0x1def> 0.00 : 79acc: ba 16 0c 00 00 mov $0xc16,%edx 0.00 : 79ad1: e8 ea cc ff ff callq 767c0 <__malloc_assert> 0.00 : 79ad6: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79adb: f6 40 04 01 testb $0x1,0x4(%rax) 0.00 : 79adf: 75 1f jne 79b00 <_int_malloc+0xce0> 0.00 : 79ae1: 48 8d 0d 4b 23 0c 00 lea 0xc234b(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79ae8: 48 8d 35 53 20 0c 00 lea 0xc2053(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79aef: 48 8d 3d 8a 21 0c 00 lea 0xc218a(%rip),%rdi # 13bc80 <__PRETTY_FUNCTION__.14063+0x219> 0.00 : 79af6: ba 1a 0c 00 00 mov $0xc1a,%edx 0.00 : 79afb: e8 c0 cc ff ff callq 767c0 <__malloc_assert> 0.46 : 79b00: 48 8d 15 99 a3 2f 00 lea 0x2fa399(%rip),%rdx # 373ea0 0.00 : 79b07: 48 39 54 24 20 cmp %rdx,0x20(%rsp) 0.00 : 79b0c: 0f 84 58 03 00 00 je 79e6a <_int_malloc+0x104a> 0.00 : 79b12: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 79b17: 4c 89 ed mov %r13,%rbp 0.00 : 79b1a: 48 81 e5 00 00 00 fc and $0xfffffffffc000000,%rbp 0.00 : 79b21: 4c 8b 65 10 mov 0x10(%rbp),%r12 0.00 : 79b25: 4c 29 f3 sub %r14,%rbx 0.00 : 79b28: 48 85 db test %rbx,%rbx 0.00 : 79b2b: 0f 8e 31 01 00 00 jle 79c62 <_int_malloc+0xe42> 0.00 : 79b31: e8 4a a6 05 00 callq d4180 <__getpagesize> 0.00 : 79b36: 83 e8 01 sub $0x1,%eax 0.00 : 79b39: 48 98 cltq 0.00 : 79b3b: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 79b3f: 48 f7 d0 not %rax 0.00 : 79b42: 48 21 c2 and %rax,%rdx 0.00 : 79b45: 4a 8d 1c 22 lea (%rdx,%r12,1),%rbx 0.00 : 79b49: 48 81 fb 00 00 00 04 cmp $0x4000000,%rbx 0.00 : 79b50: 0f 87 0c 01 00 00 ja 79c62 <_int_malloc+0xe42> 0.00 : 79b56: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 79b5a: 48 39 c3 cmp %rax,%rbx 0.00 : 79b5d: 0f 87 22 02 00 00 ja 79d85 <_int_malloc+0xf65> 0.00 : 79b63: 48 89 5d 10 mov %rbx,0x10(%rbp) 0.00 : 79b67: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 79b6c: 4c 29 e3 sub %r12,%rbx 0.00 : 79b6f: 48 01 99 70 08 00 00 add %rbx,0x870(%rcx) 0.00 : 79b76: 48 8b 05 13 ac 2f 00 mov 0x2fac13(%rip),%rax # 374790 0.00 : 79b7d: 48 03 45 10 add 0x10(%rbp),%rax 0.00 : 79b81: 4c 29 e0 sub %r12,%rax 0.00 : 79b84: 48 89 05 05 ac 2f 00 mov %rax,0x2fac05(%rip) # 374790 0.00 : 79b8b: 48 03 6d 10 add 0x10(%rbp),%rbp 0.00 : 79b8f: 4c 29 ed sub %r13,%rbp 0.00 : 79b92: 48 83 cd 01 or $0x1,%rbp 0.00 : 79b96: 49 89 6d 08 mov %rbp,0x8(%r13) 0.00 : 79b9a: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79b9f: 48 8b 83 70 08 00 00 mov 0x870(%rbx),%rax 0.00 : 79ba6: 48 3b 83 78 08 00 00 cmp 0x878(%rbx),%rax 0.00 : 79bad: 76 07 jbe 79bb6 <_int_malloc+0xd96> 0.00 : 79baf: 48 89 83 78 08 00 00 mov %rax,0x878(%rbx) 0.00 : 79bb6: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79bbb: 48 8b 78 58 mov 0x58(%rax),%rdi 0.00 : 79bbf: 48 8b 77 08 mov 0x8(%rdi),%rsi 0.00 : 79bc3: 48 83 e6 f8 and $0xfffffffffffffff8,%rsi 0.00 : 79bc7: 48 39 74 24 08 cmp %rsi,0x8(%rsp) 0.00 : 79bcc: 0f 87 2d fc ff ff ja 797ff <_int_malloc+0x9df> 0.00 : 79bd2: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 79bd7: 48 8d 1d c2 a2 2f 00 lea 0x2fa2c2(%rip),%rbx # 373ea0 0.00 : 79bde: 48 8d 0c 17 lea (%rdi,%rdx,1),%rcx 0.46 : 79be2: 31 d2 xor %edx,%edx 0.00 : 79be4: 48 39 d8 cmp %rbx,%rax 0.00 : 79be7: 0f 95 c2 setne %dl 0.00 : 79bea: 48 8d 5f 10 lea 0x10(%rdi),%rbx 0.00 : 79bee: 48 89 48 58 mov %rcx,0x58(%rax) 0.00 : 79bf2: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79bf7: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 79bfb: 48 83 c8 01 or $0x1,%rax 0.00 : 79bff: 48 09 d0 or %rdx,%rax 0.00 : 79c02: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 79c06: 48 89 f0 mov %rsi,%rax 0.00 : 79c09: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.46 : 79c0e: 48 83 c8 01 or $0x1,%rax ??:0 1.37 : 79c12: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 79c16: 48 85 db test %rbx,%rbx 0.00 : 79c19: 0f 84 ae f2 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 79c1f: 8b 05 5b ab 2f 00 mov 0x2fab5b(%rip),%eax # 374780 0.00 : 79c25: 85 c0 test %eax,%eax 0.00 : 79c27: 0f 84 a0 f2 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 79c2d: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 79c32: f7 d0 not %eax 0.00 : 79c34: 48 89 df mov %rbx,%rdi 0.00 : 79c37: 0f b6 f0 movzbl %al,%esi 0.00 : 79c3a: e8 31 98 00 00 callq 83470 <__GI_memset> 0.00 : 79c3f: e9 89 f2 ff ff jmpq 78ecd <_int_malloc+0xad> 0.00 : 79c44: 48 8d 35 1d 58 0c 00 lea 0xc581d(%rip),%rsi # 13f468 <__PRETTY_FUNCTION__.11129+0x1a8f> 0.00 : 79c4b: 49 8d 5f 10 lea 0x10(%r15),%rbx 0.00 : 79c4f: 8b 3d b3 84 2f 00 mov 0x2f84b3(%rip),%edi # 372108 0.00 : 79c55: 48 89 da mov %rbx,%rdx 0.00 : 79c58: e8 03 c9 ff ff callq 76560 0.00 : 79c5d: e9 51 f2 ff ff jmpq 78eb3 <_int_malloc+0x93> 0.00 : 79c62: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 79c67: 48 8b 35 ba aa 2f 00 mov 0x2faaba(%rip),%rsi # 374728 0.00 : 79c6e: 48 83 c7 40 add $0x40,%rdi 0.00 : 79c72: e8 69 ec ff ff callq 788e0 0.00 : 79c77: 48 85 c0 test %rax,%rax 0.00 : 79c7a: 48 89 c1 mov %rax,%rcx 0.00 : 79c7d: 0f 84 dc 00 00 00 je 79d5f <_int_malloc+0xf3f> 0.00 : 79c83: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79c88: 48 8d 51 20 lea 0x20(%rcx),%rdx 0.00 : 79c8c: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 79c90: 48 89 18 mov %rbx,(%rax) 0.00 : 79c93: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 79c97: 48 01 83 70 08 00 00 add %rax,0x870(%rbx) 0.00 : 79c9e: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 79ca2: 48 01 05 e7 aa 2f 00 add %rax,0x2faae7(%rip) # 374790 0.00 : 79ca9: 48 89 53 58 mov %rdx,0x58(%rbx) 0.00 : 79cad: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 79cb1: 48 83 e8 20 sub $0x20,%rax 0.00 : 79cb5: 48 83 c8 01 or $0x1,%rax 0.00 : 79cb9: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 79cbd: 49 8d 46 e0 lea -0x20(%r14),%rax 0.00 : 79cc1: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 79cc5: 48 83 f8 1f cmp $0x1f,%rax 0.00 : 79cc9: 49 8d 4c 15 00 lea 0x0(%r13,%rdx,1),%rcx 0.00 : 79cce: 48 c7 41 08 01 00 00 movq $0x1,0x8(%rcx) 0.00 : 79cd5: 00 0.00 : 79cd6: 77 5f ja 79d37 <_int_malloc+0xf17> 0.00 : 79cd8: 48 89 d0 mov %rdx,%rax 0.00 : 79cdb: 48 83 c8 01 or $0x1,%rax 0.00 : 79cdf: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 79ce3: 48 89 11 mov %rdx,(%rcx) 0.00 : 79ce6: e9 af fe ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.46 : 79ceb: 45 31 ff xor %r15d,%r15d 0.00 : 79cee: e9 6a fd ff ff jmpq 79a5d <_int_malloc+0xc3d> 0.00 : 79cf3: 8b 3d 0f 84 2f 00 mov 0x2f840f(%rip),%edi # 372108 0.00 : 79cf9: 48 8d 35 25 1e 0c 00 lea 0xc1e25(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 79d00: 4c 89 fa mov %r15,%rdx 0.00 : 79d03: e8 58 c8 ff ff callq 76560 0.00 : 79d08: e9 28 f9 ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79d0d: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 79d11: 48 39 c5 cmp %rax,%rbp 0.00 : 79d14: 74 5f je 79d75 <_int_malloc+0xf55> 0.00 : 79d16: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 79d1a: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 79d1e: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 79d22: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 79d26: 48 89 58 28 mov %rbx,0x28(%rax) 0.00 : 79d2a: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 79d2e: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : 79d32: e9 fe f8 ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79d37: 48 83 c8 05 or $0x5,%rax 0.00 : 79d3b: 4b c7 44 35 e8 11 00 movq $0x11,-0x18(%r13,%r14,1) 0.00 : 79d42: 00 00 0.00 : 79d44: 4c 89 ee mov %r13,%rsi 0.00 : 79d47: 48 c7 01 10 00 00 00 movq $0x10,(%rcx) 0.00 : 79d4e: 48 89 df mov %rbx,%rdi 0.00 : 79d51: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 79d55: e8 46 dd ff ff callq 77aa0 <_int_free> 0.00 : 79d5a: e9 3b fe ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 79d5f: 45 84 ff test %r15b,%r15b 0.00 : 79d62: 0f 84 ba fc ff ff je 79a22 <_int_malloc+0xc02> 0.00 : 79d68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79d6f: 00 0.00 : 79d70: e9 25 fe ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 79d75: 48 89 5b 28 mov %rbx,0x28(%rbx) 0.00 : 79d79: 48 89 5b 20 mov %rbx,0x20(%rbx) 0.00 : 79d7d: 0f 1f 00 nopl (%rax) 0.00 : 79d80: e9 b0 f8 ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79d85: 48 89 de mov %rbx,%rsi 0.00 : 79d88: 48 8d 7c 05 00 lea 0x0(%rbp,%rax,1),%rdi 0.00 : 79d8d: ba 03 00 00 00 mov $0x3,%edx 0.00 : 79d92: 48 29 c6 sub %rax,%rsi 0.00 : 79d95: e8 16 df 05 00 callq d7cb0 0.00 : 79d9a: 85 c0 test %eax,%eax 0.00 : 79d9c: 0f 85 c0 fe ff ff jne 79c62 <_int_malloc+0xe42> 0.00 : 79da2: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 79da6: e9 b8 fd ff ff jmpq 79b63 <_int_malloc+0xd43> 0.00 : 79dab: 45 31 c9 xor %r9d,%r9d 0.00 : 79dae: 31 ff xor %edi,%edi 0.00 : 79db0: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 79db6: b9 22 00 00 00 mov $0x22,%ecx 0.00 : 79dbb: ba 03 00 00 00 mov $0x3,%edx 0.00 : 79dc0: 48 89 ee mov %rbp,%rsi 0.00 : 79dc3: e8 88 de 05 00 callq d7c50 0.00 : 79dc8: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 79dcc: 48 89 c3 mov %rax,%rbx 0.00 : 79dcf: 74 7a je 79e4b <_int_malloc+0x102b> 0.00 : 79dd1: 4c 8d 60 10 lea 0x10(%rax),%r12 0.00 : 79dd5: 41 f6 c4 0f test $0xf,%r12b 0.00 : 79dd9: 74 1f je 79dfa <_int_malloc+0xfda> 0.00 : 79ddb: 48 8d 0d 51 20 0c 00 lea 0xc2051(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79de2: 48 8d 35 59 1d 0c 00 lea 0xc1d59(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79de9: 48 8d 3d f8 57 0c 00 lea 0xc57f8(%rip),%rdi # 13f5e8 <__PRETTY_FUNCTION__.11129+0x1c0f> 0.00 : 79df0: ba dd 0b 00 00 mov $0xbdd,%edx 0.00 : 79df5: e8 c6 c9 ff ff callq 767c0 <__malloc_assert> 0.00 : 79dfa: 48 89 e8 mov %rbp,%rax 0.00 : 79dfd: 48 83 c8 02 or $0x2,%rax 0.00 : 79e01: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 79e05: 8b 05 35 a9 2f 00 mov 0x2fa935(%rip),%eax # 374740 0.00 : 79e0b: 83 c0 01 add $0x1,%eax 0.00 : 79e0e: 3b 05 34 a9 2f 00 cmp 0x2fa934(%rip),%eax # 374748 0.00 : 79e14: 89 05 26 a9 2f 00 mov %eax,0x2fa926(%rip) # 374740 0.00 : 79e1a: 7e 06 jle 79e22 <_int_malloc+0x1002> 0.00 : 79e1c: 89 05 26 a9 2f 00 mov %eax,0x2fa926(%rip) # 374748 0.00 : 79e22: 48 89 e8 mov %rbp,%rax 0.00 : 79e25: 48 03 05 2c a9 2f 00 add 0x2fa92c(%rip),%rax # 374758 0.00 : 79e2c: 48 3b 05 2d a9 2f 00 cmp 0x2fa92d(%rip),%rax # 374760 0.00 : 79e33: 48 89 05 1e a9 2f 00 mov %rax,0x2fa91e(%rip) # 374758 0.00 : 79e3a: 76 07 jbe 79e43 <_int_malloc+0x1023> 0.00 : 79e3c: 48 89 05 1d a9 2f 00 mov %rax,0x2fa91d(%rip) # 374760 0.00 : 79e43: 4c 89 e3 mov %r12,%rbx 0.00 : 79e46: e9 cb fd ff ff jmpq 79c16 <_int_malloc+0xdf6> 0.00 : 79e4b: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79e50: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 79e56: 4c 8b 68 58 mov 0x58(%rax),%r13 0.00 : 79e5a: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 79e5e: 49 89 d6 mov %rdx,%r14 0.00 : 79e61: 49 83 e6 f8 and $0xfffffffffffffff8,%r14 0.00 : 79e65: e9 f3 fb ff ff jmpq 79a5d <_int_malloc+0xc3d> 0.00 : 79e6a: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 79e6f: 48 8b 05 b2 a8 2f 00 mov 0x2fa8b2(%rip),%rax # 374728 0.00 : 79e76: 48 8b 5c 24 40 mov 0x40(%rsp),%rbx 0.00 : 79e7b: 48 8d 44 02 20 lea 0x20(%rdx,%rax,1),%rax 0.00 : 79e80: 8b 15 1e a0 2f 00 mov 0x2fa01e(%rip),%edx # 373ea4 0.00 : 79e86: 48 89 c1 mov %rax,%rcx 0.00 : 79e89: 4c 29 f1 sub %r14,%rcx 0.00 : 79e8c: 83 e2 02 and $0x2,%edx 0.00 : 79e8f: 48 0f 44 c1 cmove %rcx,%rax 0.00 : 79e93: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 79e98: 48 8d 2c 18 lea (%rax,%rbx,1),%rbp 0.00 : 79e9c: 48 f7 d1 not %rcx 0.00 : 79e9f: 48 21 cd and %rcx,%rbp 0.00 : 79ea2: 48 89 4c 24 70 mov %rcx,0x70(%rsp) 0.00 : 79ea7: 48 85 ed test %rbp,%rbp 0.00 : 79eaa: 49 89 ec mov %rbp,%r12 0.00 : 79ead: 0f 8e 13 03 00 00 jle 7a1c6 <_int_malloc+0x13a6> 0.00 : 79eb3: 48 8b 05 c6 7e 2f 00 mov 0x2f7ec6(%rip),%rax # 371d80 <_DYNAMIC+0x220> 0.00 : 79eba: 48 89 ef mov %rbp,%rdi 0.00 : 79ebd: ff 10 callq *(%rax) 0.46 : 79ebf: 48 85 c0 test %rax,%rax 0.00 : 79ec2: 48 89 c3 mov %rax,%rbx 0.00 : 79ec5: 0f 84 f2 02 00 00 je 7a1bd <_int_malloc+0x139d> 0.00 : 79ecb: 48 8b 05 9e 7f 2f 00 mov 0x2f7f9e(%rip),%rax # 371e70 <_DYNAMIC+0x310> 0.00 : 79ed2: 48 8b 00 mov (%rax),%rax 0.00 : 79ed5: 48 85 c0 test %rax,%rax 0.00 : 79ed8: 74 02 je 79edc <_int_malloc+0x10bc> 0.00 : 79eda: ff d0 callq *%rax 0.00 : 79edc: 45 31 e4 xor %r12d,%r12d 0.00 : 79edf: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 79ee5: 48 83 3d 83 a8 2f 00 cmpq $0x0,0x2fa883(%rip) # 374770 0.00 : 79eec: 00 0.00 : 79eed: 75 07 jne 79ef6 <_int_malloc+0x10d6> 0.00 : 79eef: 48 89 1d 7a a8 2f 00 mov %rbx,0x2fa87a(%rip) # 374770 0.00 : 79ef6: 48 89 ea mov %rbp,%rdx 0.00 : 79ef9: 48 03 15 10 a8 2f 00 add 0x2fa810(%rip),%rdx # 374710 0.00 : 79f00: 45 84 ff test %r15b,%r15b 0.00 : 79f03: 48 89 15 06 a8 2f 00 mov %rdx,0x2fa806(%rip) # 374710 0.00 : 79f0a: 74 0b je 79f17 <_int_malloc+0x10f7> 0.00 : 79f0c: 48 39 5c 24 50 cmp %rbx,0x50(%rsp) 0.00 : 79f11: 0f 84 39 03 00 00 je 7a250 <_int_malloc+0x1430> 0.00 : 79f17: 8b 05 87 9f 2f 00 mov 0x2f9f87(%rip),%eax # 373ea4 0.00 : 79f1d: d1 e8 shr %eax 0.00 : 79f1f: 83 f0 01 xor $0x1,%eax 0.00 : 79f22: 83 e0 01 and $0x1,%eax 0.00 : 79f25: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : 79f2a: 0f 84 5c 01 00 00 je 7a08c <_int_malloc+0x126c> 0.00 : 79f30: 84 c0 test %al,%al 0.00 : 79f32: 0f 84 5c 01 00 00 je 7a094 <_int_malloc+0x1274> 0.00 : 79f38: 48 39 5c 24 50 cmp %rbx,0x50(%rsp) 0.00 : 79f3d: 0f 87 30 01 00 00 ja 7a073 <_int_malloc+0x1253> 0.00 : 79f43: 48 89 d8 mov %rbx,%rax 0.00 : 79f46: 48 2b 44 24 50 sub 0x50(%rsp),%rax 0.00 : 79f4b: 48 01 d0 add %rdx,%rax 0.00 : 79f4e: 48 89 05 bb a7 2f 00 mov %rax,0x2fa7bb(%rip) # 374710 0.00 : 79f55: 48 89 da mov %rbx,%rdx 0.00 : 79f58: 31 c0 xor %eax,%eax 0.00 : 79f5a: 48 89 5c 24 48 mov %rbx,0x48(%rsp) 0.00 : 79f5f: 83 e2 0f and $0xf,%edx 0.00 : 79f62: 74 11 je 79f75 <_int_malloc+0x1155> 0.00 : 79f64: b8 10 00 00 00 mov $0x10,%eax 0.00 : 79f69: 48 29 d0 sub %rdx,%rax 0.00 : 79f6c: 48 8d 0c 03 lea (%rbx,%rax,1),%rcx 0.00 : 79f70: 48 89 4c 24 48 mov %rcx,0x48(%rsp) 0.00 : 79f75: 4a 8d 14 30 lea (%rax,%r14,1),%rdx 0.00 : 79f79: 48 8d 04 2a lea (%rdx,%rbp,1),%rax 0.00 : 79f7d: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 79f81: 48 29 c2 sub %rax,%rdx 0.00 : 79f84: 48 03 44 24 40 add 0x40(%rsp),%rax 0.46 : 79f89: 48 23 44 24 70 and 0x70(%rsp),%rax 0.00 : 79f8e: 48 89 d3 mov %rdx,%rbx 0.00 : 79f91: 48 01 c3 add %rax,%rbx 0.00 : 79f94: 79 1f jns 79fb5 <_int_malloc+0x1195> 0.00 : 79f96: 48 8d 0d 96 1e 0c 00 lea 0xc1e96(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79f9d: 48 8d 35 9e 1b 0c 00 lea 0xc1b9e(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79fa4: 48 8d 3d f2 1c 0c 00 lea 0xc1cf2(%rip),%rdi # 13bc9d <__PRETTY_FUNCTION__.14063+0x236> 0.00 : 79fab: ba f6 0c 00 00 mov $0xcf6,%edx 0.00 : 79fb0: e8 0b c8 ff ff callq 767c0 <__malloc_assert> 0.00 : 79fb5: 48 8b 2d c4 7d 2f 00 mov 0x2f7dc4(%rip),%rbp # 371d80 <_DYNAMIC+0x220> 0.00 : 79fbc: 48 89 df mov %rbx,%rdi 0.00 : 79fbf: ff 55 00 callq *0x0(%rbp) 0.00 : 79fc2: 48 85 c0 test %rax,%rax 0.00 : 79fc5: 49 89 c4 mov %rax,%r12 0.00 : 79fc8: 0f 84 8b 00 00 00 je 7a059 <_int_malloc+0x1239> 0.00 : 79fce: 48 8b 05 9b 7e 2f 00 mov 0x2f7e9b(%rip),%rax # 371e70 <_DYNAMIC+0x310> 0.00 : 79fd5: 48 8b 00 mov (%rax),%rax 0.00 : 79fd8: 48 85 c0 test %rax,%rax 0.00 : 79fdb: 74 02 je 79fdf <_int_malloc+0x11bf> 0.00 : 79fdd: ff d0 callq *%rax 0.00 : 79fdf: 48 89 da mov %rbx,%rdx 0.00 : 79fe2: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 79fe7: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 79fec: 48 89 05 05 9f 2f 00 mov %rax,0x2f9f05(%rip) # 373ef8 0.00 : 79ff3: 49 8d 04 1c lea (%r12,%rbx,1),%rax 0.00 : 79ff7: 48 2b 44 24 48 sub 0x48(%rsp),%rax 0.00 : 79ffc: 48 83 c8 01 or $0x1,%rax 0.46 : 7a000: 48 89 41 08 mov %rax,0x8(%rcx) 0.46 : 7a004: 48 01 15 05 a7 2f 00 add %rdx,0x2fa705(%rip) # 374710 0.00 : 7a00b: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : 7a010: 0f 84 84 fb ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a016: 49 8d 46 e0 lea -0x20(%r14),%rax 0.00 : 7a01a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 7a01e: 48 89 c2 mov %rax,%rdx 0.00 : 7a021: 48 83 ca 01 or $0x1,%rdx 0.00 : 7a025: 48 83 f8 1f cmp $0x1f,%rax 0.00 : 7a029: 49 89 55 08 mov %rdx,0x8(%r13) 0.00 : 7a02d: 49 c7 44 05 08 11 00 movq $0x11,0x8(%r13,%rax,1) 0.00 : 7a034: 00 00 0.00 : 7a036: 49 c7 44 05 18 11 00 movq $0x11,0x18(%r13,%rax,1) 0.00 : 7a03d: 00 00 0.00 : 7a03f: 0f 86 55 fb ff ff jbe 79b9a <_int_malloc+0xd7a> 0.00 : 7a045: 48 8d 3d 54 9e 2f 00 lea 0x2f9e54(%rip),%rdi # 373ea0 0.00 : 7a04c: 4c 89 ee mov %r13,%rsi 0.00 : 7a04f: e8 4c da ff ff callq 77aa0 <_int_free> 0.00 : 7a054: e9 41 fb ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 7a059: 31 ff xor %edi,%edi 0.00 : 7a05b: ff 55 00 callq *0x0(%rbp) 0.00 : 7a05e: 49 89 c4 mov %rax,%r12 0.00 : 7a061: 4d 85 e4 test %r12,%r12 0.00 : 7a064: 0f 84 30 fb ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a06a: 31 db xor %ebx,%ebx 0.00 : 7a06c: 31 d2 xor %edx,%edx 0.00 : 7a06e: e9 6f ff ff ff jmpq 79fe2 <_int_malloc+0x11c2> 0.00 : 7a073: 48 8d 35 0e 58 0c 00 lea 0xc580e(%rip),%rsi # 13f888 <__PRETTY_FUNCTION__.11129+0x1eaf> 0.00 : 7a07a: 48 89 da mov %rbx,%rdx 0.00 : 7a07d: bf 03 00 00 00 mov $0x3,%edi 0.00 : 7a082: e8 d9 c4 ff ff callq 76560 0.00 : 7a087: e9 0e fb ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 7a08c: 84 c0 test %al,%al 0.00 : 7a08e: 0f 85 c1 fe ff ff jne 79f55 <_int_malloc+0x1135> 0.00 : 7a094: f6 c3 0f test $0xf,%bl 0.00 : 7a097: 90 nop 0.00 : 7a098: 74 1f je 7a0b9 <_int_malloc+0x1299> 0.00 : 7a09a: 48 8d 0d 92 1d 0c 00 lea 0xc1d92(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 7a0a1: 48 8d 35 9a 1a 0c 00 lea 0xc1a9a(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7a0a8: 48 8d 3d 01 58 0c 00 lea 0xc5801(%rip),%rdi # 13f8b0 <__PRETTY_FUNCTION__.11129+0x1ed7> 0.00 : 7a0af: ba 11 0d 00 00 mov $0xd11,%edx 0.00 : 7a0b4: e8 07 c7 ff ff callq 767c0 <__malloc_assert> 0.00 : 7a0b9: 45 84 ff test %r15b,%r15b 0.00 : 7a0bc: 48 89 5c 24 48 mov %rbx,0x48(%rsp) 0.00 : 7a0c1: 74 9e je 7a061 <_int_malloc+0x1241> 0.00 : 7a0c3: 48 8b 05 b6 7c 2f 00 mov 0x2f7cb6(%rip),%rax # 371d80 <_DYNAMIC+0x220> 0.00 : 7a0ca: 31 ff xor %edi,%edi 0.00 : 7a0cc: ff 10 callq *(%rax) 0.00 : 7a0ce: 48 89 5c 24 48 mov %rbx,0x48(%rsp) 0.00 : 7a0d3: 49 89 c4 mov %rax,%r12 0.00 : 7a0d6: eb 89 jmp 7a061 <_int_malloc+0x1241> 0.00 : 7a0d8: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 7a0dc: 48 85 c0 test %rax,%rax 0.00 : 7a0df: 0f 84 72 f6 ff ff je 79757 <_int_malloc+0x937> 0.00 : 7a0e5: 4c 3b 78 28 cmp 0x28(%rax),%r15 0.00 : 7a0e9: 74 1f je 7a10a <_int_malloc+0x12ea> 0.00 : 7a0eb: 48 8d 0d 35 1d 0c 00 lea 0xc1d35(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7a0f2: 48 8d 35 49 1a 0c 00 lea 0xc1a49(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7a0f9: 48 8d 3d c0 53 0c 00 lea 0xc53c0(%rip),%rdi # 13f4c0 <__PRETTY_FUNCTION__.11129+0x1ae7> 0.00 : 7a100: ba c9 11 00 00 mov $0x11c9,%edx 0.00 : 7a105: e8 b6 c6 ff ff callq 767c0 <__malloc_assert> 0.00 : 7a10a: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a10e: 48 3b 68 20 cmp 0x20(%rax),%rbp 0.00 : 7a112: 74 1f je 7a133 <_int_malloc+0x1313> 0.00 : 7a114: 48 8d 0d 0c 1d 0c 00 lea 0xc1d0c(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7a11b: 48 8d 35 20 1a 0c 00 lea 0xc1a20(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7a122: 48 8d 3d c7 53 0c 00 lea 0xc53c7(%rip),%rdi # 13f4f0 <__PRETTY_FUNCTION__.11129+0x1b17> 0.00 : 7a129: ba c9 11 00 00 mov $0x11c9,%edx 0.00 : 7a12e: e8 8d c6 ff ff callq 767c0 <__malloc_assert> 0.46 : 7a133: 48 83 7b 20 00 cmpq $0x0,0x20(%rbx) 0.00 : 7a138: 74 37 je 7a171 <_int_malloc+0x1351> 0.00 : 7a13a: 48 8b 55 20 mov 0x20(%rbp),%rdx 0.00 : 7a13e: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a142: 48 89 42 28 mov %rax,0x28(%rdx) 0.46 : 7a146: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 7a14a: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 7a14e: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 7a152: e9 00 f6 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a157: 8b 3d ab 7f 2f 00 mov 0x2f7fab(%rip),%edi # 372108 0.00 : 7a15d: 48 8d 35 c1 19 0c 00 lea 0xc19c1(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 7a164: 4c 89 fa mov %r15,%rdx 0.00 : 7a167: e8 f4 c3 ff ff callq 76560 0.00 : 7a16c: e9 e6 f5 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a171: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 7a175: 48 39 c5 cmp %rax,%rbp 0.00 : 7a178: 74 36 je 7a1b0 <_int_malloc+0x1390> 0.00 : 7a17a: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 7a17e: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a182: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 7a186: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 7a18a: 48 89 58 28 mov %rbx,0x28(%rax) 0.00 : 7a18e: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a192: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : 7a196: e9 bc f5 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a19b: 49 8b 5f 10 mov 0x10(%r15),%rbx 0.00 : 7a19f: e9 7a f5 ff ff jmpq 7971e <_int_malloc+0x8fe> 0.00 : 7a1a4: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 7a1a8: 49 89 c7 mov %rax,%r15 0.00 : 7a1ab: e9 6e f5 ff ff jmpq 7971e <_int_malloc+0x8fe> 0.00 : 7a1b0: 48 89 5b 28 mov %rbx,0x28(%rbx) 0.00 : 7a1b4: 48 89 5b 20 mov %rbx,0x20(%rbx) 0.00 : 7a1b8: e9 9a f5 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a1bd: 8b 15 e1 9c 2f 00 mov 0x2f9ce1(%rip),%edx # 373ea4 0.00 : 7a1c3: 83 e2 02 and $0x2,%edx 0.00 : 7a1c6: 85 d2 test %edx,%edx 0.00 : 7a1c8: 75 12 jne 7a1dc <_int_malloc+0x13bc> 0.00 : 7a1ca: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : 7a1cf: 49 8d 04 16 lea (%r14,%rdx,1),%rax 0.00 : 7a1d3: 4c 8d 24 28 lea (%rax,%rbp,1),%r12 0.00 : 7a1d7: 4c 23 64 24 70 and 0x70(%rsp),%r12 0.00 : 7a1dc: 49 81 fc ff ff 0f 00 cmp $0xfffff,%r12 0.00 : 7a1e3: bd 00 00 10 00 mov $0x100000,%ebp 0.00 : 7a1e8: 49 0f 47 ec cmova %r12,%rbp 0.00 : 7a1ec: 48 39 6c 24 28 cmp %rbp,0x28(%rsp) 0.00 : 7a1f1: 0f 83 a3 f9 ff ff jae 79b9a <_int_malloc+0xd7a> 0.00 : 7a1f7: 45 31 c9 xor %r9d,%r9d 0.00 : 7a1fa: 31 ff xor %edi,%edi 0.00 : 7a1fc: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 7a202: b9 22 00 00 00 mov $0x22,%ecx 0.00 : 7a207: ba 03 00 00 00 mov $0x3,%edx 0.00 : 7a20c: 48 89 ee mov %rbp,%rsi 0.00 : 7a20f: e8 3c da 05 00 callq d7c50 0.00 : 7a214: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 7a218: 48 89 c3 mov %rax,%rbx 0.00 : 7a21b: 0f 84 79 f9 ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a221: 83 0d 7c 9c 2f 00 02 orl $0x2,0x2f9c7c(%rip) # 373ea4 0.00 : 7a228: 48 85 c0 test %rax,%rax 0.00 : 7a22b: 0f 84 69 f9 ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a231: 49 89 c4 mov %rax,%r12 0.00 : 7a234: 49 01 ec add %rbp,%r12 0.00 : 7a237: 41 0f 94 c7 sete %r15b 0.00 : 7a23b: e9 a5 fc ff ff jmpq 79ee5 <_int_malloc+0x10c5> 0.00 : 7a240: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : 7a245: 0f 84 8b f8 ff ff je 79ad6 <_int_malloc+0xcb6> 0.00 : 7a24b: e9 2a f8 ff ff jmpq 79a7a <_int_malloc+0xc5a> 0.00 : 7a250: 4a 8d 44 35 00 lea 0x0(%rbp,%r14,1),%rax 0.00 : 7a255: 48 83 c8 01 or $0x1,%rax 0.00 : 7a259: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 7a25d: e9 38 f9 ff ff jmpq 79b9a <_int_malloc+0xd7a> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.95 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:337 13.69 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:337 6.22 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 5.39 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 5.39 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 5.39 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 4.15 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:353 3.73 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 2.49 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 2.07 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 2.07 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 2.07 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:353 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:343 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:353 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:346 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:349 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5810 : : */ : void : index_rescan(IndexScanDesc scan, : ScanKey keys, int nkeys, : ScanKey orderbys, int norderbys) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 0.83 : 4a5810: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 5.39 : 4a5811: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:333 2.90 : 4a5814: 48 89 5d d8 mov %rbx,-0x28(%rbp) 2.07 : 4a5818: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.41 : 4a581c: 48 89 fb mov %rdi,%rbx 2.49 : 4a581f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.41 : 4a5823: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.41 : 4a5827: 45 89 c5 mov %r8d,%r13d 0.00 : 4a582a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 2.07 : 4a582e: 48 83 ec 40 sub $0x40,%rsp 0.00 : 4a5832: 41 89 d7 mov %edx,%r15d 0.41 : 4a5835: 48 89 75 d0 mov %rsi,-0x30(%rbp) : FmgrInfo *procedure; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amrescan); 0.00 : 4a5839: 48 8b 57 08 mov 0x8(%rdi),%rdx : */ : void : index_rescan(IndexScanDesc scan, : ScanKey keys, int nkeys, : ScanKey orderbys, int norderbys) : { 3.73 : 4a583d: 49 89 ce mov %rcx,%r14 : FmgrInfo *procedure; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amrescan); 0.00 : 4a5840: 48 8b 82 c0 00 00 00 mov 0xc0(%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:337 13.69 : 4a5847: 44 8b 90 c8 00 00 00 mov 0xc8(%rax),%r10d 31.95 : 4a584e: 4c 8d a0 c0 00 00 00 lea 0xc0(%rax),%r12 0.41 : 4a5855: 45 85 d2 test %r10d,%r10d 0.00 : 4a5858: 75 1d jne 4a5877 0.00 : 4a585a: 48 8b 82 b0 00 00 00 mov 0xb0(%rdx),%rax 0.00 : 4a5861: 8b 78 64 mov 0x64(%rax),%edi 0.00 : 4a5864: 85 ff test %edi,%edi 0.00 : 4a5866: 74 5e je 4a58c6 0.00 : 4a5868: 48 8b 92 b8 00 00 00 mov 0xb8(%rdx),%rdx 0.00 : 4a586f: 4c 89 e6 mov %r12,%rsi 0.00 : 4a5872: e8 d9 a7 2d 00 callq 780050 : : Assert(nkeys == scan->numberOfKeys); : Assert(norderbys == scan->numberOfOrderBys); : : /* Release any held pin on a heap page */ : if (BufferIsValid(scan->xs_cbuf)) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:343 1.66 : 4a5877: 8b 7b 68 mov 0x68(%rbx),%edi 0.00 : 4a587a: 85 ff test %edi,%edi 0.00 : 4a587c: 74 0c je 4a588a : { : ReleaseBuffer(scan->xs_cbuf); 0.00 : 4a587e: e8 dd f5 1c 00 callq 674e60 : scan->xs_cbuf = InvalidBuffer; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:346 0.83 : 4a5883: c7 43 68 00 00 00 00 movl $0x0,0x68(%rbx) : : scan->xs_continue_hot = false; : : scan->kill_prior_tuple = false; /* for safety */ : : FunctionCall5(procedure, /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:353 1.24 : 4a588a: 48 8b 4d d0 mov -0x30(%rbp),%rcx : { : ReleaseBuffer(scan->xs_cbuf); : scan->xs_cbuf = InvalidBuffer; : } : : scan->xs_continue_hot = false; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:349 0.83 : 4a588e: c6 43 6d 00 movb $0x0,0x6d(%rbx) : : scan->kill_prior_tuple = false; /* for safety */ : : FunctionCall5(procedure, 0.00 : 4a5892: 45 89 ed mov %r13d,%r13d : scan->xs_cbuf = InvalidBuffer; : } : : scan->xs_continue_hot = false; : : scan->kill_prior_tuple = false; /* for safety */ 0.00 : 4a5895: c6 43 31 00 movb $0x0,0x31(%rbx) : : FunctionCall5(procedure, /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:353 4.15 : 4a5899: 4d 89 f1 mov %r14,%r9 0.41 : 4a589c: 45 89 f8 mov %r15d,%r8d 0.00 : 4a589f: 48 89 da mov %rbx,%rdx 0.00 : 4a58a2: 4c 89 e7 mov %r12,%rdi 2.07 : 4a58a5: 31 f6 xor %esi,%esi 0.00 : 4a58a7: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 4a58ab: e8 40 85 2d 00 callq 77ddf0 : PointerGetDatum(scan), : PointerGetDatum(keys), : Int32GetDatum(nkeys), : PointerGetDatum(orderbys), : Int32GetDatum(norderbys)); : } /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 5.39 : 4a58b0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 5.39 : 4a58b4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4a58b8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 2.90 : 4a58bc: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.41 : 4a58c0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 6.22 : 4a58c4: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:359 1.24 : 4a58c5: c3 retq : ScanKey orderbys, int norderbys) : { : FmgrInfo *procedure; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amrescan); 0.00 : 4a58c6: ba 8d 3c 7b 00 mov $0x7b3c8d,%edx 0.00 : 4a58cb: be 51 01 00 00 mov $0x151,%esi 0.00 : 4a58d0: bf 33 3b 7b 00 mov $0x7b3b33,%edi 0.00 : 4a58d5: e8 46 5b 2d 00 callq 77b420 0.00 : 4a58da: ba a3 3b 7b 00 mov $0x7b3ba3,%edx 0.00 : 4a58df: be 48 3b 7b 00 mov $0x7b3b48,%esi 0.00 : 4a58e4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a58e9: 31 c0 xor %eax,%eax 0.00 : 4a58eb: e8 40 59 2d 00 callq 77b230 0.00 : 4a58f0: e8 db 3b fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:180 15.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 10.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:192 7.98 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 7.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 6.10 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:180 3.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:192 3.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 2.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:178 2.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:188 1.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:176 1.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:181 1.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:188 1.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:188 1.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:193 0.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 0.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:181 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bf450 : : * rescans of indices and relations/general streams more uniform. : * ---------------------------------------------------------------- : */ : void : ExecReScanIndexScan(IndexScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 3.29 : 5bf450: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 15.49 : 5bf451: 48 89 e5 mov %rsp,%rbp 0.00 : 5bf454: 4c 89 65 f8 mov %r12,-0x8(%rbp) 7.98 : 5bf458: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 0.94 : 5bf45c: 48 83 ec 10 sub $0x10,%rsp : * values weren't simple Consts), compute the new key values. But first, : * reset the context so we don't leak memory as each outer tuple is : * scanned. Note this assumes that we will recalculate *all* runtime keys : * on each call. : */ : if (node->iss_NumRuntimeKeys != 0) 0.00 : 5bf460: 44 8b 8f c0 00 00 00 mov 0xc0(%rdi),%r9d : * rescans of indices and relations/general streams more uniform. : * ---------------------------------------------------------------- : */ : void : ExecReScanIndexScan(IndexScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:168 7.51 : 5bf467: 49 89 fc mov %rdi,%r12 : * values weren't simple Consts), compute the new key values. But first, : * reset the context so we don't leak memory as each outer tuple is : * scanned. Note this assumes that we will recalculate *all* runtime keys : * on each call. : */ : if (node->iss_NumRuntimeKeys != 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:176 1.41 : 5bf46a: 45 85 c9 test %r9d,%r9d 0.00 : 5bf46d: 74 28 je 5bf497 : { : ExprContext *econtext = node->iss_RuntimeContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:178 2.35 : 5bf46f: 48 8b 9f c8 00 00 00 mov 0xc8(%rdi),%rbx : : ResetExprContext(econtext); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:180 6.10 : 5bf476: 48 8b 7b 28 mov 0x28(%rbx),%rdi 30.52 : 5bf47a: e8 31 95 1d 00 callq 7989b0 : ExecIndexEvalRuntimeKeys(econtext, 0.00 : 5bf47f: 41 8b 94 24 c0 00 00 mov 0xc0(%r12),%edx 0.00 : 5bf486: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:181 1.41 : 5bf487: 49 8b b4 24 b8 00 00 mov 0xb8(%r12),%rsi 0.00 : 5bf48e: 00 0.94 : 5bf48f: 48 89 df mov %rbx,%rdi 0.00 : 5bf492: e8 b9 fd ff ff callq 5bf250 : node->iss_NumRuntimeKeys); : } : node->iss_RuntimeKeysReady = true; : : /* reset index scan */ : index_rescan(node->iss_ScanDesc, 0.00 : 5bf497: 49 8b bc 24 d8 00 00 mov 0xd8(%r12),%rdi 0.00 : 5bf49e: 00 0.00 : 5bf49f: 49 8b 8c 24 a8 00 00 mov 0xa8(%r12),%rcx 0.00 : 5bf4a6: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:188 2.35 : 5bf4a7: 41 8b 94 24 a0 00 00 mov 0xa0(%r12),%edx 0.00 : 5bf4ae: 00 1.41 : 5bf4af: 49 8b b4 24 98 00 00 mov 0x98(%r12),%rsi 0.00 : 5bf4b6: 00 0.00 : 5bf4b7: 45 8b 84 24 b0 00 00 mov 0xb0(%r12),%r8d 0.00 : 5bf4be: 00 : ResetExprContext(econtext); : ExecIndexEvalRuntimeKeys(econtext, : node->iss_RuntimeKeys, : node->iss_NumRuntimeKeys); : } : node->iss_RuntimeKeysReady = true; 0.47 : 5bf4bf: 41 c6 84 24 c4 00 00 movb $0x1,0xc4(%r12) 0.00 : 5bf4c6: 00 01 : : /* reset index scan */ : index_rescan(node->iss_ScanDesc, 1.41 : 5bf4c8: e8 43 63 ee ff callq 4a5810 : node->iss_ScanKeys, node->iss_NumScanKeys, : node->iss_OrderByKeys, node->iss_NumOrderByKeys); : : ExecScanReScan(&node->ss); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:192 3.76 : 5bf4cd: 4c 89 e7 mov %r12,%rdi : } 0.00 : 5bf4d0: 48 8b 1c 24 mov (%rsp),%rbx 0.47 : 5bf4d4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:193 1.41 : 5bf4d9: c9 leaveq : /* reset index scan */ : index_rescan(node->iss_ScanDesc, : node->iss_ScanKeys, node->iss_NumScanKeys, : node->iss_OrderByKeys, node->iss_NumOrderByKeys); : : ExecScanReScan(&node->ss); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:192 10.80 : 5bf4da: e9 11 41 ff ff jmpq 5b35f0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 65.40 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 10.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 4.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 4.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 3.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 2.37 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 1.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 1.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 0.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 0.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 0.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697940 : : * EXTENSION_CREATE means it's OK to extend an existing relation, not to : * invent one out of whole cloth. : */ : static MdfdVec * : mdopen(SMgrRelation reln, ForkNumber forknum, ExtensionBehavior behavior) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 4.27 : 697940: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 65.40 : 697941: 48 89 e5 mov %rsp,%rbp 0.47 : 697944: 4c 89 6d e8 mov %r13,-0x18(%rbp) : MdfdVec *mdfd; : char *path; : File fd; : : /* No work if already open */ : if (reln->md_fd[forknum]) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 10.90 : 697948: 4c 63 ee movslq %esi,%r13 : * EXTENSION_CREATE means it's OK to extend an existing relation, not to : * invent one out of whole cloth. : */ : static MdfdVec * : mdopen(SMgrRelation reln, ForkNumber forknum, ExtensionBehavior behavior) : { 0.00 : 69794b: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 0.95 : 69794f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 1.90 : 697953: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.47 : 697957: 49 89 fc mov %rdi,%r12 0.00 : 69795a: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 69795e: 48 83 ec 30 sub $0x30,%rsp : MdfdVec *mdfd; : char *path; : File fd; : : /* No work if already open */ : if (reln->md_fd[forknum]) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 4.27 : 697962: 4a 8b 5c ef 28 mov 0x28(%rdi,%r13,8),%rbx : * EXTENSION_CREATE means it's OK to extend an existing relation, not to : * invent one out of whole cloth. : */ : static MdfdVec * : mdopen(SMgrRelation reln, ForkNumber forknum, ExtensionBehavior behavior) : { 0.00 : 697967: 41 89 d7 mov %edx,%r15d : MdfdVec *mdfd; : char *path; : File fd; : : /* No work if already open */ : if (reln->md_fd[forknum]) 0.00 : 69796a: 48 85 db test %rbx,%rbx 0.00 : 69796d: 74 21 je 697990 : mdfd->mdfd_segno = 0; : mdfd->mdfd_chain = NULL; : Assert(_mdnblocks(reln, forknum, mdfd) <= ((BlockNumber) RELSEG_SIZE)); : : return mdfd; : } 0.47 : 69796f: 48 89 d8 mov %rbx,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 1.90 : 697972: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.95 : 697976: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 69797a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.47 : 69797e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 2.37 : 697982: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.95 : 697986: c9 leaveq 3.79 : 697987: c3 retq 0.00 : 697988: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 69798f: 00 : : /* No work if already open */ : if (reln->md_fd[forknum]) : return reln->md_fd[forknum]; : : path = relpath(reln->smgr_rnode, forknum); 0.00 : 697990: 8b 4f 0c mov 0xc(%rdi),%ecx 0.00 : 697993: 8b 57 08 mov 0x8(%rdi),%edx 0.00 : 697996: 41 89 f0 mov %esi,%r8d 0.00 : 697999: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 69799c: 41 8b 34 24 mov (%r12),%esi 0.00 : 6979a0: e8 2b 6c 11 00 callq 7ae5d0 : : fd = PathNameOpenFile(path, O_RDWR | PG_BINARY, 0600); 0.00 : 6979a5: ba 80 01 00 00 mov $0x180,%edx 0.00 : 6979aa: be 02 00 00 00 mov $0x2,%esi 0.00 : 6979af: 48 89 c7 mov %rax,%rdi : : /* No work if already open */ : if (reln->md_fd[forknum]) : return reln->md_fd[forknum]; : : path = relpath(reln->smgr_rnode, forknum); 0.00 : 6979b2: 48 89 45 d0 mov %rax,-0x30(%rbp) : : fd = PathNameOpenFile(path, O_RDWR | PG_BINARY, 0600); 0.00 : 6979b6: e8 45 25 fe ff callq 679f00 : : if (fd < 0) 0.47 : 6979bb: 85 c0 test %eax,%eax : if (reln->md_fd[forknum]) : return reln->md_fd[forknum]; : : path = relpath(reln->smgr_rnode, forknum); : : fd = PathNameOpenFile(path, O_RDWR | PG_BINARY, 0600); 0.00 : 6979bd: 41 89 c6 mov %eax,%r14d : : if (fd < 0) 0.00 : 6979c0: 78 3e js 697a00 : (errcode_for_file_access(), : errmsg("could not open file \"%s\": %m", path))); : } : } : : pfree(path); 0.00 : 6979c2: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 6979c6: e8 b5 11 10 00 callq 798b80 : * _fdvec_alloc() -- Make a MdfdVec object. : */ : static MdfdVec * : _fdvec_alloc(void) : { : return (MdfdVec *) MemoryContextAlloc(MdCxt, sizeof(MdfdVec)); 0.00 : 6979cb: 48 8b 3d de 6d 4e 00 mov 0x4e6dde(%rip),%rdi # b7e7b0 0.00 : 6979d2: be 10 00 00 00 mov $0x10,%esi 0.00 : 6979d7: e8 b4 14 10 00 callq 798e90 : } : } : : pfree(path); : : reln->md_fd[forknum] = mdfd = _fdvec_alloc(); 0.00 : 6979dc: 4b 89 44 ec 28 mov %rax,0x28(%r12,%r13,8) : * _fdvec_alloc() -- Make a MdfdVec object. : */ : static MdfdVec * : _fdvec_alloc(void) : { : return (MdfdVec *) MemoryContextAlloc(MdCxt, sizeof(MdfdVec)); 0.00 : 6979e1: 48 89 c3 mov %rax,%rbx : : pfree(path); : : reln->md_fd[forknum] = mdfd = _fdvec_alloc(); : : mdfd->mdfd_vfd = fd; 0.00 : 6979e4: 44 89 30 mov %r14d,(%rax) : mdfd->mdfd_segno = 0; 0.00 : 6979e7: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : mdfd->mdfd_chain = NULL; 0.00 : 6979ee: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6979f5: 00 : Assert(_mdnblocks(reln, forknum, mdfd) <= ((BlockNumber) RELSEG_SIZE)); : : return mdfd; : } 0.00 : 6979f6: e9 74 ff ff ff jmpq 69796f 0.00 : 6979fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * During bootstrap, there are cases where a system relation will be : * accessed (by internal backend processes) before the bootstrap : * script nominally creates it. Therefore, accept mdopen() as a : * substitute for mdcreate() in bootstrap mode only. (See mdcreate) : */ : if (IsBootstrapProcessingMode()) 0.00 : 697a00: 8b 05 36 11 4d 00 mov 0x4d1136(%rip),%eax # b68b3c 0.00 : 697a06: 85 c0 test %eax,%eax 0.00 : 697a08: 74 36 je 697a40 : fd = PathNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600); : if (fd < 0) : { : if (behavior == EXTENSION_RETURN_NULL && 0.00 : 697a0a: 41 83 ef 01 sub $0x1,%r15d 0.00 : 697a0e: 75 0a jne 697a1a 0.00 : 697a10: e8 ab 22 dd ff callq 469cc0 <__errno_location@plt> 0.00 : 697a15: 83 38 02 cmpl $0x2,(%rax) 0.00 : 697a18: 74 6a je 697a84 : FILE_POSSIBLY_DELETED(errno)) : { : pfree(path); : return NULL; : } : ereport(ERROR, 0.00 : 697a1a: 45 31 c0 xor %r8d,%r8d 0.00 : 697a1d: b9 7f e3 8a 00 mov $0x8ae37f,%ecx 0.00 : 697a22: ba 5b 02 00 00 mov $0x25b,%edx 0.00 : 697a27: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 697a2c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 697a31: e8 8a 30 0e 00 callq 77aac0 0.00 : 697a36: 84 c0 test %al,%al 0.00 : 697a38: 75 26 jne 697a60 0.00 : 697a3a: e8 91 1a dd ff callq 4694d0 0.00 : 697a3f: 90 nop : * accessed (by internal backend processes) before the bootstrap : * script nominally creates it. Therefore, accept mdopen() as a : * substitute for mdcreate() in bootstrap mode only. (See mdcreate) : */ : if (IsBootstrapProcessingMode()) : fd = PathNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600); 0.00 : 697a40: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 697a44: ba 80 01 00 00 mov $0x180,%edx 0.00 : 697a49: be c2 00 00 00 mov $0xc2,%esi 0.00 : 697a4e: e8 ad 24 fe ff callq 679f00 : if (fd < 0) 0.00 : 697a53: 85 c0 test %eax,%eax : * accessed (by internal backend processes) before the bootstrap : * script nominally creates it. Therefore, accept mdopen() as a : * substitute for mdcreate() in bootstrap mode only. (See mdcreate) : */ : if (IsBootstrapProcessingMode()) : fd = PathNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600); 0.00 : 697a55: 41 89 c6 mov %eax,%r14d : if (fd < 0) 0.00 : 697a58: 0f 89 64 ff ff ff jns 6979c2 0.00 : 697a5e: eb aa jmp 697a0a : FILE_POSSIBLY_DELETED(errno)) : { : pfree(path); : return NULL; : } : ereport(ERROR, 0.00 : 697a60: 48 8b 75 d0 mov -0x30(%rbp),%rsi 0.00 : 697a64: bf 53 31 7b 00 mov $0x7b3153,%edi 0.00 : 697a69: 31 c0 xor %eax,%eax 0.00 : 697a6b: e8 30 4e 0e 00 callq 77c8a0 0.00 : 697a70: 89 c3 mov %eax,%ebx 0.00 : 697a72: e8 79 50 0e 00 callq 77caf0 0.00 : 697a77: 89 de mov %ebx,%esi 0.00 : 697a79: 89 c7 mov %eax,%edi 0.00 : 697a7b: 31 c0 xor %eax,%eax 0.00 : 697a7d: e8 5e 2b 0e 00 callq 77a5e0 0.00 : 697a82: eb b6 jmp 697a3a : if (fd < 0) : { : if (behavior == EXTENSION_RETURN_NULL && : FILE_POSSIBLY_DELETED(errno)) : { : pfree(path); 0.00 : 697a84: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 697a88: e8 f3 10 10 00 callq 798b80 0.00 : 697a8d: 0f 1f 00 nopl (%rax) : mdfd->mdfd_segno = 0; : mdfd->mdfd_chain = NULL; : Assert(_mdnblocks(reln, forknum, mdfd) <= ((BlockNumber) RELSEG_SIZE)); : : return mdfd; : } 0.00 : 697a90: e9 da fe ff ff jmpq 69796f Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:868 8.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 8.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 7.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:875 7.97 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:883 6.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 5.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:828 5.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:869 5.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 5.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:883 3.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 3.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 3.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:869 3.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:869 1.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:869 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:828 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:868 0.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:883 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b9ac0 : : static void : finalize_aggregate(AggState *aggstate, : AggStatePerAgg peraggstate, : AggStatePerGroup pergroupstate, : Datum *resultVal, bool *resultIsNull) : { 0.00 : 5b9ac0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 0.72 : 5b9ac1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 8.70 : 5b9ac4: 41 57 push %r15 0.00 : 5b9ac6: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 0.72 : 5b9ac8: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 8.70 : 5b9aca: 41 54 push %r12 0.00 : 5b9acc: 53 push %rbx 0.00 : 5b9acd: 48 81 ec e8 03 00 00 sub $0x3e8,%rsp : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 3.62 : 5b9ad4: 48 8b 05 85 0d 60 00 mov 0x600d85(%rip),%rax # bba860 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 0.72 : 5b9adb: 48 89 bd 10 fc ff ff mov %rdi,-0x3f0(%rbp) 0.00 : 5b9ae2: 48 89 b5 08 fc ff ff mov %rsi,-0x3f8(%rbp) 0.00 : 5b9ae9: 48 89 95 00 fc ff ff mov %rdx,-0x400(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:797 5.07 : 5b9af0: 48 89 8d f8 fb ff ff mov %rcx,-0x408(%rbp) 0.00 : 5b9af7: 4c 89 85 f0 fb ff ff mov %r8,-0x410(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.72 : 5b9afe: 48 89 85 18 fc ff ff mov %rax,-0x3e8(%rbp) : : CurrentMemoryContext = context; 0.00 : 5b9b05: 48 8b 47 60 mov 0x60(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 5.07 : 5b9b09: 48 8b 40 28 mov 0x28(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.72 : 5b9b0d: 48 89 05 4c 0d 60 00 mov %rax,0x600d4c(%rip) # bba860 : * (which is unlikely anyway), so that side-effects happen as expected. : * The direct arguments go into arg positions 1 and up, leaving position 0 : * for the transition state value. : */ : i = 1; : foreach(lc, peraggstate->aggrefstate->aggdirectargs) 0.00 : 5b9b14: 48 8b 06 mov (%rsi),%rax 0.00 : 5b9b17: 48 8b 40 18 mov 0x18(%rax),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 3.62 : 5b9b1b: 48 85 c0 test %rax,%rax 0.00 : 5b9b1e: 0f 84 4a 02 00 00 je 5b9d6e 0.00 : 5b9b24: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5b9b28: 4d 85 e4 test %r12,%r12 0.00 : 5b9b2b: 0f 84 3d 02 00 00 je 5b9d6e 0.00 : 5b9b31: 48 8d 85 20 fc ff ff lea -0x3e0(%rbp),%rax 0.00 : 5b9b38: 45 31 ff xor %r15d,%r15d 0.00 : 5b9b3b: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 5b9b41: 48 8d 98 41 03 00 00 lea 0x341(%rax),%rbx 0.00 : 5b9b48: 4c 8d 68 28 lea 0x28(%rax),%r13 0.00 : 5b9b4c: 0f 1f 40 00 nopl 0x0(%rax) : { : ExprState *expr = (ExprState *) lfirst(lc); 0.00 : 5b9b50: 49 8b 04 24 mov (%r12),%rax : : fcinfo.arg[i] = ExecEvalExpr(expr, 0.00 : 5b9b54: 48 8b 95 10 fc ff ff mov -0x3f0(%rbp),%rdx 0.00 : 5b9b5b: 31 c9 xor %ecx,%ecx : aggstate->ss.ps.ps_ExprContext, : &fcinfo.argnull[i], : NULL); : anynull |= fcinfo.argnull[i]; : i++; 0.00 : 5b9b5d: 41 83 c6 01 add $0x1,%r14d : i = 1; : foreach(lc, peraggstate->aggrefstate->aggdirectargs) : { : ExprState *expr = (ExprState *) lfirst(lc); : : fcinfo.arg[i] = ExecEvalExpr(expr, 0.00 : 5b9b61: 48 8b 72 60 mov 0x60(%rdx),%rsi 0.00 : 5b9b65: 48 89 c7 mov %rax,%rdi 0.00 : 5b9b68: 48 89 da mov %rbx,%rdx 0.00 : 5b9b6b: ff 50 10 callq *0x10(%rax) 0.00 : 5b9b6e: 49 89 45 00 mov %rax,0x0(%r13) : * (which is unlikely anyway), so that side-effects happen as expected. : * The direct arguments go into arg positions 1 and up, leaving position 0 : * for the transition state value. : */ : i = 1; : foreach(lc, peraggstate->aggrefstate->aggdirectargs) 0.00 : 5b9b72: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5b9b77: 49 83 c5 08 add $0x8,%r13 : : fcinfo.arg[i] = ExecEvalExpr(expr, : aggstate->ss.ps.ps_ExprContext, : &fcinfo.argnull[i], : NULL); : anynull |= fcinfo.argnull[i]; 0.00 : 5b9b7b: 44 0a 3b or (%rbx),%r15b : * (which is unlikely anyway), so that side-effects happen as expected. : * The direct arguments go into arg positions 1 and up, leaving position 0 : * for the transition state value. : */ : i = 1; : foreach(lc, peraggstate->aggrefstate->aggdirectargs) 0.00 : 5b9b7e: 48 83 c3 01 add $0x1,%rbx 0.00 : 5b9b82: 4d 85 e4 test %r12,%r12 0.00 : 5b9b85: 75 c9 jne 5b9b50 : } : : /* : * Apply the agg's finalfn if one is provided, else return transValue. : */ : if (OidIsValid(peraggstate->finalfn_oid)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:828 5.80 : 5b9b87: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 5b9b8e: 8b 58 24 mov 0x24(%rax),%ebx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:828 0.72 : 5b9b91: 85 db test %ebx,%ebx 0.00 : 5b9b93: 0f 84 f4 00 00 00 je 5b9c8d : { : int numFinalArgs = peraggstate->numFinalArgs; : : /* set up aggstate->curperagg for AggGetAggref() */ : aggstate->curperagg = peraggstate; 0.00 : 5b9b99: 48 8b 95 10 fc ff ff mov -0x3f0(%rbp),%rdx : /* : * Apply the agg's finalfn if one is provided, else return transValue. : */ : if (OidIsValid(peraggstate->finalfn_oid)) : { : int numFinalArgs = peraggstate->numFinalArgs; 0.00 : 5b9ba0: 8b 48 1c mov 0x1c(%rax),%ecx : : /* set up aggstate->curperagg for AggGetAggref() */ : aggstate->curperagg = peraggstate; 0.00 : 5b9ba3: 48 89 82 c8 00 00 00 mov %rax,0xc8(%rdx) : : InitFunctionCallInfoData(fcinfo, &(peraggstate->finalfn), 0.00 : 5b9baa: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 5b9bb1: 48 89 95 28 fc ff ff mov %rdx,-0x3d8(%rbp) 0.00 : 5b9bb8: 48 8b 95 08 fc ff ff mov -0x3f8(%rbp),%rdx 0.00 : 5b9bbf: 48 c7 85 30 fc ff ff movq $0x0,-0x3d0(%rbp) 0.00 : 5b9bc6: 00 00 00 00 0.00 : 5b9bca: 48 83 c0 58 add $0x58,%rax : fcinfo.arg[0] = pergroupstate->transValue; : fcinfo.argnull[0] = pergroupstate->transValueIsNull; : anynull |= pergroupstate->transValueIsNull; : : /* Fill any remaining argument positions with nulls */ : for (; i < numFinalArgs; i++) 0.00 : 5b9bce: 44 39 f1 cmp %r14d,%ecx : int numFinalArgs = peraggstate->numFinalArgs; : : /* set up aggstate->curperagg for AggGetAggref() */ : aggstate->curperagg = peraggstate; : : InitFunctionCallInfoData(fcinfo, &(peraggstate->finalfn), 0.00 : 5b9bd1: 48 89 85 20 fc ff ff mov %rax,-0x3e0(%rbp) 0.00 : 5b9bd8: 8b 82 88 00 00 00 mov 0x88(%rdx),%eax : numFinalArgs, : peraggstate->aggCollation, : (void *) aggstate, NULL); : : /* Fill in the transition state value */ : fcinfo.arg[0] = pergroupstate->transValue; 0.00 : 5b9bde: 48 8b 95 00 fc ff ff mov -0x400(%rbp),%rdx : int numFinalArgs = peraggstate->numFinalArgs; : : /* set up aggstate->curperagg for AggGetAggref() */ : aggstate->curperagg = peraggstate; : : InitFunctionCallInfoData(fcinfo, &(peraggstate->finalfn), 0.00 : 5b9be5: c6 85 3c fc ff ff 00 movb $0x0,-0x3c4(%rbp) 0.00 : 5b9bec: 66 89 8d 3e fc ff ff mov %cx,-0x3c2(%rbp) 0.00 : 5b9bf3: 89 85 38 fc ff ff mov %eax,-0x3c8(%rbp) : numFinalArgs, : peraggstate->aggCollation, : (void *) aggstate, NULL); : : /* Fill in the transition state value */ : fcinfo.arg[0] = pergroupstate->transValue; 0.00 : 5b9bf9: 48 8b 02 mov (%rdx),%rax 0.00 : 5b9bfc: 48 89 85 40 fc ff ff mov %rax,-0x3c0(%rbp) : fcinfo.argnull[0] = pergroupstate->transValueIsNull; 0.00 : 5b9c03: 0f b6 42 08 movzbl 0x8(%rdx),%eax 0.00 : 5b9c07: 88 85 60 ff ff ff mov %al,-0xa0(%rbp) : anynull |= pergroupstate->transValueIsNull; : : /* Fill any remaining argument positions with nulls */ : for (; i < numFinalArgs; i++) 0.00 : 5b9c0d: 0f 8e 50 01 00 00 jle 5b9d63 0.00 : 5b9c13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : fcinfo.arg[i] = (Datum) 0; 0.00 : 5b9c18: 49 63 c6 movslq %r14d,%rax : fcinfo.arg[0] = pergroupstate->transValue; : fcinfo.argnull[0] = pergroupstate->transValueIsNull; : anynull |= pergroupstate->transValueIsNull; : : /* Fill any remaining argument positions with nulls */ : for (; i < numFinalArgs; i++) 0.00 : 5b9c1b: 41 83 c6 01 add $0x1,%r14d 0.00 : 5b9c1f: 44 39 f1 cmp %r14d,%ecx : { : fcinfo.arg[i] = (Datum) 0; 0.00 : 5b9c22: 48 c7 84 c5 40 fc ff movq $0x0,-0x3c0(%rbp,%rax,8) 0.00 : 5b9c29: ff 00 00 00 00 : fcinfo.argnull[i] = true; 0.00 : 5b9c2e: c6 84 05 60 ff ff ff movb $0x1,-0xa0(%rbp,%rax,1) 0.00 : 5b9c35: 01 : fcinfo.arg[0] = pergroupstate->transValue; : fcinfo.argnull[0] = pergroupstate->transValueIsNull; : anynull |= pergroupstate->transValueIsNull; : : /* Fill any remaining argument positions with nulls */ : for (; i < numFinalArgs; i++) 0.00 : 5b9c36: 7f e0 jg 5b9c18 0.00 : 5b9c38: b8 01 00 00 00 mov $0x1,%eax : fcinfo.arg[i] = (Datum) 0; : fcinfo.argnull[i] = true; : anynull = true; : } : : if (fcinfo.flinfo->fn_strict && anynull) 0.00 : 5b9c3d: 48 8b 95 08 fc ff ff mov -0x3f8(%rbp),%rdx 0.00 : 5b9c44: 80 7a 66 00 cmpb $0x0,0x66(%rdx) 0.00 : 5b9c48: 0f 85 a3 00 00 00 jne 5b9cf1 : *resultVal = (Datum) 0; : *resultIsNull = true; : } : else : { : *resultVal = FunctionCallInvoke(&fcinfo); 0.00 : 5b9c4e: 48 8b 95 08 fc ff ff mov -0x3f8(%rbp),%rdx 0.00 : 5b9c55: 48 8d bd 20 fc ff ff lea -0x3e0(%rbp),%rdi 0.00 : 5b9c5c: ff 52 58 callq *0x58(%rdx) 0.00 : 5b9c5f: 48 8b 95 f8 fb ff ff mov -0x408(%rbp),%rdx 0.00 : 5b9c66: 48 89 02 mov %rax,(%rdx) : *resultIsNull = fcinfo.isnull; 0.00 : 5b9c69: 0f b6 85 3c fc ff ff movzbl -0x3c4(%rbp),%eax 0.00 : 5b9c70: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 5b9c77: 88 02 mov %al,(%rdx) : } : aggstate->curperagg = NULL; 0.00 : 5b9c79: 48 8b 85 10 fc ff ff mov -0x3f0(%rbp),%rax 0.00 : 5b9c80: 48 c7 80 c8 00 00 00 movq $0x0,0xc8(%rax) 0.00 : 5b9c87: 00 00 00 00 0.00 : 5b9c8b: eb 28 jmp 5b9cb5 : } : else : { : *resultVal = pergroupstate->transValue; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:868 12.32 : 5b9c8d: 48 8b 95 00 fc ff ff mov -0x400(%rbp),%rdx 0.00 : 5b9c94: 48 8b 02 mov (%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:868 0.72 : 5b9c97: 48 8b 95 f8 fb ff ff mov -0x408(%rbp),%rdx 0.00 : 5b9c9e: 48 89 02 mov %rax,(%rdx) : *resultIsNull = pergroupstate->transValueIsNull; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:869 3.62 : 5b9ca1: 48 8b 95 00 fc ff ff mov -0x400(%rbp),%rdx 1.45 : 5b9ca8: 0f b6 42 08 movzbl 0x8(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:869 5.80 : 5b9cac: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:869 3.62 : 5b9cb3: 88 02 mov %al,(%rdx) : } : : /* : * If result is pass-by-ref, make sure it is in the right context. : */ : if (!peraggstate->resulttypeByVal && !*resultIsNull && /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:875 7.97 : 5b9cb5: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 5b9cbc: 80 b8 d1 00 00 00 00 cmpb $0x0,0xd1(%rax) 0.00 : 5b9cc3: 75 0c jne 5b9cd1 0.00 : 5b9cc5: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 5b9ccc: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 5b9ccf: 74 45 je 5b9d16 0.00 : 5b9cd1: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 6.52 : 5b9cd8: 48 89 05 81 0b 60 00 mov %rax,0x600b81(%rip) # bba860 : *resultVal = datumCopy(*resultVal, : peraggstate->resulttypeByVal, : peraggstate->resulttypeLen); : : MemoryContextSwitchTo(oldContext); : } 0.00 : 5b9cdf: 48 81 c4 e8 03 00 00 add $0x3e8,%rsp 0.00 : 5b9ce6: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:883 0.72 : 5b9ce7: 41 5c pop %r12 4.35 : 5b9ce9: 41 5d pop %r13 0.00 : 5b9ceb: 41 5e pop %r14 0.00 : 5b9ced: 41 5f pop %r15 0.00 : 5b9cef: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:883 7.97 : 5b9cf0: c3 retq : fcinfo.arg[i] = (Datum) 0; : fcinfo.argnull[i] = true; : anynull = true; : } : : if (fcinfo.flinfo->fn_strict && anynull) 0.00 : 5b9cf1: 84 c0 test %al,%al 0.00 : 5b9cf3: 0f 84 55 ff ff ff je 5b9c4e : { : /* don't call a strict function with NULL inputs */ : *resultVal = (Datum) 0; 0.00 : 5b9cf9: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 5b9d00: 48 c7 00 00 00 00 00 movq $0x0,(%rax) : *resultIsNull = true; 0.00 : 5b9d07: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 5b9d0e: c6 02 01 movb $0x1,(%rdx) 0.00 : 5b9d11: e9 63 ff ff ff jmpq 5b9c79 : } : : /* : * If result is pass-by-ref, make sure it is in the right context. : */ : if (!peraggstate->resulttypeByVal && !*resultIsNull && 0.00 : 5b9d16: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 5b9d1d: 48 8b 3d 3c 0b 60 00 mov 0x600b3c(%rip),%rdi # bba860 0.00 : 5b9d24: 48 8b 30 mov (%rax),%rsi 0.00 : 5b9d27: e8 24 ee 1d 00 callq 798b50 0.00 : 5b9d2c: 84 c0 test %al,%al 0.00 : 5b9d2e: 75 a1 jne 5b9cd1 : !MemoryContextContains(CurrentMemoryContext, : DatumGetPointer(*resultVal))) : *resultVal = datumCopy(*resultVal, 0.00 : 5b9d30: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 5b9d37: 0f bf 90 cc 00 00 00 movswl 0xcc(%rax),%edx 0.00 : 5b9d3e: 0f be b0 d1 00 00 00 movsbl 0xd1(%rax),%esi 0.00 : 5b9d45: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 5b9d4c: 48 8b 38 mov (%rax),%rdi 0.00 : 5b9d4f: e8 1c 62 11 00 callq 6cff70 0.00 : 5b9d54: 48 8b 95 f8 fb ff ff mov -0x408(%rbp),%rdx 0.00 : 5b9d5b: 48 89 02 mov %rax,(%rdx) 0.00 : 5b9d5e: e9 6e ff ff ff jmpq 5b9cd1 : fcinfo.arg[0] = pergroupstate->transValue; : fcinfo.argnull[0] = pergroupstate->transValueIsNull; : anynull |= pergroupstate->transValueIsNull; : : /* Fill any remaining argument positions with nulls */ : for (; i < numFinalArgs; i++) 0.00 : 5b9d63: 44 08 f8 or %r15b,%al 0.00 : 5b9d66: 0f 95 c0 setne %al 0.00 : 5b9d69: e9 cf fe ff ff jmpq 5b9c3d : * (which is unlikely anyway), so that side-effects happen as expected. : * The direct arguments go into arg positions 1 and up, leaving position 0 : * for the transition state value. : */ : i = 1; : foreach(lc, peraggstate->aggrefstate->aggdirectargs) 0.00 : 5b9d6e: 45 31 ff xor %r15d,%r15d 0.00 : 5b9d71: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 5b9d77: e9 0b fe ff ff jmpq 5b9b87 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.15 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 12.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 11.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 10.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:681 9.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 6.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 4.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:730 3.72 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 2.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:681 2.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 1.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:682 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:729 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:730 1.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 0.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:922 0.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:681 0.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:727 0.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:728 0.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:730 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679920 : : } : : /* returns 0 on success, -1 on re-open failure (with errno set) */ : static int : FileAccess(File file) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 6.38 : 679920: 55 push %rbp 9.57 : 679921: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 1.06 : 679924: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 12.23 : 679928: 4c 89 65 f0 mov %r12,-0x10(%rbp) : /* : * Is the file open? If not, open it and put it at the head of the LRU : * ring (possibly closing the least recently used file to get an FD). : */ : : if (FileIsNotOpen(file)) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.06 : 67992c: 4c 63 e7 movslq %edi,%r12 : } : : /* returns 0 on success, -1 on re-open failure (with errno set) */ : static int : FileAccess(File file) : { 0.00 : 67992f: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 1.06 : 679933: 48 83 ec 20 sub $0x20,%rsp : /* : * Is the file open? If not, open it and put it at the head of the LRU : * ring (possibly closing the least recently used file to get an FD). : */ : : if (FileIsNotOpen(file)) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.60 : 679937: 48 8b 0d 5a 38 50 00 mov 0x50385a(%rip),%rcx # b7d198 1.60 : 67993e: 49 c1 e4 06 shl $0x6,%r12 : } : : /* returns 0 on success, -1 on re-open failure (with errno set) */ : static int : FileAccess(File file) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 1.06 : 679942: 41 89 fd mov %edi,%r13d : /* : * Is the file open? If not, open it and put it at the head of the LRU : * ring (possibly closing the least recently used file to get an FD). : */ : : if (FileIsNotOpen(file)) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 1.60 : 679945: 4a 8d 1c 21 lea (%rcx,%r12,1),%rbx 1.60 : 679949: 83 3b ff cmpl $0xffffffff,(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:916 11.17 : 67994c: 74 52 je 6799a0 : { : returnValue = LruInsert(file); : if (returnValue != 0) : return returnValue; : } : else if (VfdCache[0].lruLessRecently != file) 0.00 : 67994e: 31 c0 xor %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:922 0.53 : 679950: 39 79 18 cmp %edi,0x18(%rcx) 0.00 : 679953: 74 3c je 679991 : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; : : VfdCache[vfdP->lruLessRecently].lruMoreRecently = vfdP->lruMoreRecently; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:681 10.11 : 679955: 48 63 43 18 movslq 0x18(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:681 2.13 : 679959: 8b 53 14 mov 0x14(%rbx),%edx 0.00 : 67995c: 48 c1 e0 06 shl $0x6,%rax 0.53 : 679960: 89 54 01 14 mov %edx,0x14(%rcx,%rax,1) : VfdCache[vfdP->lruMoreRecently].lruLessRecently = vfdP->lruLessRecently; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:682 1.06 : 679964: 48 63 43 14 movslq 0x14(%rbx),%rax 0.00 : 679968: 8b 53 18 mov 0x18(%rbx),%edx 0.00 : 67996b: 48 c1 e0 06 shl $0x6,%rax 0.00 : 67996f: 89 54 01 18 mov %edx,0x18(%rcx,%rax,1) : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; : : vfdP->lruMoreRecently = 0; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:727 0.53 : 679973: c7 43 14 00 00 00 00 movl $0x0,0x14(%rbx) : vfdP->lruLessRecently = VfdCache[0].lruLessRecently; 0.00 : 67997a: 8b 41 18 mov 0x18(%rcx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:728 0.53 : 67997d: 89 43 18 mov %eax,0x18(%rbx) : VfdCache[0].lruLessRecently = file; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:729 1.06 : 679980: 89 79 18 mov %edi,0x18(%rcx) : VfdCache[vfdP->lruLessRecently].lruMoreRecently = file; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:730 0.53 : 679983: 48 63 43 18 movslq 0x18(%rbx),%rax 1.06 : 679987: 48 c1 e0 06 shl $0x6,%rax 0.00 : 67998b: 89 7c 01 14 mov %edi,0x14(%rcx,%rax,1) 4.26 : 67998f: 31 c0 xor %eax,%eax : Delete(file); : Insert(file); : } : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 19.15 : 679991: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 3.72 : 679995: 4c 8b 65 f0 mov -0x10(%rbp),%r12 1.06 : 679999: 4c 8b 6d f8 mov -0x8(%rbp),%r13 2.13 : 67999d: c9 leaveq 1.60 : 67999e: c3 retq 0.00 : 67999f: 90 nop : vfdP = &VfdCache[file]; : : if (FileIsNotOpen(file)) : { : /* Close excess kernel FDs. */ : ReleaseLruFiles(); 0.00 : 6799a0: e8 8b ee ff ff callq 678830 : /* : * The open could still fail for lack of file descriptors, eg due to : * overall system file table being full. So, be prepared to release : * another FD if necessary... : */ : vfdP->fd = BasicOpenFile(vfdP->fileName, vfdP->fileFlags, 0.00 : 6799a5: 8b 53 3c mov 0x3c(%rbx),%edx 0.00 : 6799a8: 8b 73 38 mov 0x38(%rbx),%esi 0.00 : 6799ab: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 6799af: e8 ac fd ff ff callq 679760 0.00 : 6799b4: 89 c1 mov %eax,%ecx 0.00 : 6799b6: 89 03 mov %eax,(%rbx) : vfdP->fileMode); : if (vfdP->fd < 0) 0.00 : 6799b8: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 6799bd: 85 c9 test %ecx,%ecx 0.00 : 6799bf: 78 d0 js 679991 : return -1; : } : else : { : DO_DB(elog(LOG, "RE_OPEN SUCCESS")); : ++nfile; 0.00 : 6799c1: 83 05 b8 37 50 00 01 addl $0x1,0x5037b8(%rip) # b7d180 : } : : /* seek to the right position */ : if (vfdP->seekPos != (off_t) 0) 0.00 : 6799c8: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 6799cc: 48 85 f6 test %rsi,%rsi 0.00 : 6799cf: 75 2f jne 679a00 : : DO_DB(elog(LOG, "Insert %d (%s)", : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; 0.00 : 6799d1: 48 8b 0d c0 37 50 00 mov 0x5037c0(%rip),%rcx # b7d198 0.00 : 6799d8: 4a 8d 14 21 lea (%rcx,%r12,1),%rdx : : vfdP->lruMoreRecently = 0; 0.00 : 6799dc: c7 42 14 00 00 00 00 movl $0x0,0x14(%rdx) : vfdP->lruLessRecently = VfdCache[0].lruLessRecently; 0.00 : 6799e3: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : 6799e6: 89 42 18 mov %eax,0x18(%rdx) : VfdCache[0].lruLessRecently = file; 0.00 : 6799e9: 44 89 69 18 mov %r13d,0x18(%rcx) : VfdCache[vfdP->lruLessRecently].lruMoreRecently = file; 0.00 : 6799ed: 48 63 42 18 movslq 0x18(%rdx),%rax 0.00 : 6799f1: 48 c1 e0 06 shl $0x6,%rax 0.00 : 6799f5: 44 89 6c 01 14 mov %r13d,0x14(%rcx,%rax,1) 0.00 : 6799fa: 31 c0 xor %eax,%eax 0.00 : 6799fc: eb 93 jmp 679991 0.00 : 6799fe: 66 90 xchg %ax,%ax : /* seek to the right position */ : if (vfdP->seekPos != (off_t) 0) : { : off_t returnValue PG_USED_FOR_ASSERTS_ONLY; : : returnValue = lseek(vfdP->fd, vfdP->seekPos, SEEK_SET); 0.00 : 679a00: 31 d2 xor %edx,%edx 0.00 : 679a02: 89 cf mov %ecx,%edi 0.00 : 679a04: e8 67 01 df ff callq 469b70 0.00 : 679a09: eb c6 jmp 6799d1 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 33.15 ??:0 21.91 ??:0 12.36 ??:0 7.30 ??:0 5.62 ??:0 4.49 ??:0 2.25 ??:0 1.69 ??:0 1.69 ??:0 1.12 ??:0 1.12 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 0.56 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001fb0 <____nf_conntrack_find>: ??:0 10.11 : 1fb0: 41 55 push %r13 0.00 : 1fe2: 41 89 add %al,(%rax) 0.00 : 1fe4: f5 41 add %al,(%rax) 0.00 : 1fe6: 54 55 48 mov %rdi,%rax 0.00 : 1fe9: 89 fd 53 48 89 d3 89 add 0x710(%rbp),%rax ??:0 0.56 : 1ff0: ca 48 83 mov (%rax),%rax ??:0 5.62 : 1ff3: ec 08 8b mov %rax,%rcx 0.00 : 1ff6: 87 00 07 test $0x1,%cl 0.00 : 1ff9: 00 00 je 2016 0.00 : 1ffb: 48 0f af d0 49 jmpq 20e3 0.00 : 2000: 89 d4 49 c1 ec 20 e8 mov 0x730(%rbp),%rax 0.00 : 2007: 00 00 00 incl %gs:(%rax) 0.00 : 200a: 00 44 89 mov (%rcx),%rcx 0.00 : 200d: e6 48 8d test $0x1,%cl 0.00 : 2010: 3c f5 00 00 00 00 jne 20e0 ??:0 1.12 : 2016: 48 89 mov (%rbx),%eax 0.00 : 2018: f8 48 03 cmp 0x10(%rcx),%eax ??:0 12.36 : 201b: 85 10 07 mov %rcx,%r12 0.00 : 201e: 00 00 jne 2000 0.00 : 2020: 48 8b 00 mov 0x4(%rbx),%eax 0.00 : 2023: 48 89 c1 cmp 0x14(%rcx),%eax 0.00 : 2026: f6 c1 jne 2000 0.00 : 2028: 01 74 1b mov 0x8(%rbx),%eax ??:0 0.56 : 202b: e9 e3 00 cmp 0x18(%rcx),%eax 0.00 : 202e: 00 00 jne 2000 ??:0 7.30 : 2030: 48 8b 85 mov 0xc(%rbx),%eax 0.00 : 2033: 30 07 00 cmp 0x1c(%rcx),%eax 0.00 : 2036: 00 65 jne 2000 ??:0 0.56 : 2038: ff 00 48 mov 0x10(%rbx),%eax 0.00 : 203b: 8b 09 f6 cmp 0x20(%rcx),%eax 0.00 : 203e: c1 01 jne 2000 1.69 : 2040: 0f 85 ca mov 0x14(%rbx),%eax 0.00 : 2043: 00 00 00 cmp 0x24(%rcx),%eax 0.00 : 2046: 8b 03 jne 2000 1.12 : 2048: 3b 41 10 mov 0x18(%rbx),%eax 0.00 : 204b: 49 89 cc cmp 0x28(%rcx),%eax 0.00 : 204e: 75 e0 jne 2000 0.56 : 2050: 8b 43 04 mov 0x1c(%rbx),%eax 0.56 : 2053: 3b 41 14 cmp 0x2c(%rcx),%eax 0.00 : 2056: 75 d8 jne 2000 0.56 : 2058: 8b 43 08 mov 0x20(%rbx),%eax 0.00 : 205b: 3b 41 18 cmp 0x30(%rcx),%eax 0.00 : 205e: 75 d0 jne 2000 0.56 : 2060: 8b 43 0c mov 0x24(%rbx),%edx 0.00 : 2063: 3b 41 1c mov 0x34(%rcx),%eax 0.00 : 2066: 75 c8 8b 43 10 3b and $0xffffff,%edx 0.00 : 206c: 41 20 75 c0 8b and $0xffffff,%eax 0.00 : 2071: 43 14 cmp %eax,%edx 0.00 : 2073: 3b 41 jne 2000 0.00 : 2075: 24 75 b8 8b movzbl 0x37(%rcx),%edx 0.00 : 2079: 43 18 3b 41 28 75 b0 lea 0x0(,%rdx,8),%rax 0.00 : 2080: 8b 0.00 : 2081: 43 1c 3b sub %rdx,%rax 0.56 : 2084: 41 2c 75 a8 8b 43 20 lea 0x8(,%rax,8),%rax 0.00 : 208b: 3b 0.00 : 208c: 41 30 75 neg %rax 0.00 : 208f: a0 8b 53 24 8b 41 34 mov 0xe0(%rcx,%rax,1),%rdx 0.00 : 2096: 81 ??:0 21.91 : 2097: e2 ff ff test %rdx,%rdx 0.00 : 209a: ff 00 je 2100 0.00 : 209c: 25 ff ff ff movzbl 0x14(%rdx),%eax 33.15 : 20a0: 00 39 test %al,%al 0.00 : 20a2: c2 75 je 2100 0.00 : 20a4: 8b 0f b6 movzbl %al,%eax 0.00 : 20a7: 51 37 48 add %rdx,%rax 0.00 : 20aa: 8d 04 je 2100 0.00 : 20ac: d5 00 00 movzwl (%rax),%eax ??:0 0.56 : 20af: 00 00 48 29 cmp %ax,%r13w 0.00 : 20b3: d0 48 8d 04 c5 08 jne 2000 0.00 : 20b9: 00 00 00 48 f7 d8 48 mov 0x730(%rbp),%rax 0.00 : 20c0: 8b 94 01 e0 incl %gs:0x4(%rax) 0.56 : 20c4: 00 00 00 48 85 callq 20c9 0.00 : 20c9: d2 74 64 0f add $0x8,%rsp 0.00 : 20cd: b6 42 14 mov %r12,%rax 0.00 : 20d0: 84 pop %rbx 0.00 : 20d1: c0 pop %rbp 0.00 : 20d2: 74 5c pop %r12 0.00 : 20d4: 0f b6 pop %r13 0.00 : 20d6: c0 retq 0.00 : 20d7: 48 01 d0 74 54 0f b7 nopw 0x0(%rax,%rax,1) 0.00 : 20de: 00 66 0.00 : 20e0: 41 39 c5 mov %rcx,%rax 0.00 : 20e3: 0f 85 47 shr %rax 0.00 : 20e6: ff ff ff cmp %rax,%rsi 0.00 : 20e9: 48 8b je 2104 0.00 : 20eb: 85 30 07 00 00 65 ff mov 0x730(%rbp),%rax 0.00 : 20f2: 40 04 e8 00 incl %gs:0x3c(%rax) 0.00 : 20f6: 00 00 00 48 83 jmpq 1fe6 0.00 : 20fb: c4 08 4c 89 e0 nopl 0x0(%rax,%rax,1) 0.00 : 2100: 5b 5d xor %eax,%eax 0.00 : 2102: 41 5c jmp 20af 0.00 : 2104: 41 5d c3 66 0f callq 2109 0.00 : 2109: 1f 84 00 xor %r12d,%r12d 0.00 : 210c: 00 00 00 00 nopl 0x0(%rax) 0.00 : 2110: 48 89 jmp 20c9 : 2112: c8 48 d1 e8 48 39 c6 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 2119: 74 19 48 8b 85 30 07 : 2120: 00 00 push %r14 : 2122: 65 ff 40 mov %rdi,%r14 : 2125: 3c e9 push %r13 : 2127: eb fe ff mov %ecx,%r13d : 212a: ff 0f push %r12 : 212c: 1f push %rbp : 212d: 44 00 mov %esi,%ebp : 212f: 00 push %rbx : 2130: 31 c0 eb mov %rdx,%rbx : 2133: ab e8 00 00 movzwl %si,%r12d : 2137: 00 00 45 mov %r12d,%esi : 213a: 31 e4 0f mov %r13d,%ecx : 213d: 1f 40 00 mov %rbx,%rdx : 2140: eb b7 66 mov %r14,%rdi Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1201 10.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1201 9.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1281 8.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1260 8.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1198 3.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1223 3.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1277 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1263 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1281 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1201 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1223 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1260 1.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1260 1.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1263 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004add60 <_bt_fix_scankey_strategy>: : * there shouldn't be any problem, since the index's indoptions are certainly : * not going to change while the scankey survives. : */ : static bool : _bt_fix_scankey_strategy(ScanKey skey, int16 *indoption) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1198 8.00 : 4add60: 55 push %rbp : int addflags; : : addflags = indoption[skey->sk_attno - 1] << SK_BT_INDOPTION_SHIFT; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1201 10.50 : 4add61: 48 0f bf 47 04 movswq 0x4(%rdi),%rax : * : * Note: someday we might have to fill in sk_collation from the index : * column's collation. At the moment this is a non-issue because we'll : * never actually call the comparison operator on a NULL. : */ : if (skey->sk_flags & SK_ISNULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1223 1.50 : 4add66: 8b 0f mov (%rdi),%ecx : * there shouldn't be any problem, since the index's indoptions are certainly : * not going to change while the scankey survives. : */ : static bool : _bt_fix_scankey_strategy(ScanKey skey, int16 *indoption) : { 0.50 : 4add68: 48 89 e5 mov %rsp,%rbp : int addflags; : : addflags = indoption[skey->sk_attno - 1] << SK_BT_INDOPTION_SHIFT; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1201 2.00 : 4add6b: 0f bf 54 46 fe movswl -0x2(%rsi,%rax,2),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1201 44.50 : 4add70: c1 e2 18 shl $0x18,%edx : * : * Note: someday we might have to fill in sk_collation from the index : * column's collation. At the moment this is a non-issue because we'll : * never actually call the comparison operator on a NULL. : */ : if (skey->sk_flags & SK_ISNULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1223 3.50 : 4add73: f6 c1 01 test $0x1,%cl 0.00 : 4add76: 74 40 je 4addb8 <_bt_fix_scankey_strategy+0x58> : { : /* SK_ISNULL shouldn't be set in a row header scankey */ : Assert(!(skey->sk_flags & SK_ROW_HEADER)); : : /* Set indoption flags in scankey (might be done already) */ : skey->sk_flags |= addflags; 0.00 : 4add78: 09 ca or %ecx,%edx : : /* Set correct strategy for IS NULL or NOT NULL search */ : if (skey->sk_flags & SK_SEARCHNULL) 0.00 : 4add7a: f6 c2 40 test $0x40,%dl : { : /* SK_ISNULL shouldn't be set in a row header scankey */ : Assert(!(skey->sk_flags & SK_ROW_HEADER)); : : /* Set indoption flags in scankey (might be done already) */ : skey->sk_flags |= addflags; 0.00 : 4add7d: 89 17 mov %edx,(%rdi) : : /* Set correct strategy for IS NULL or NOT NULL search */ : if (skey->sk_flags & SK_SEARCHNULL) 0.00 : 4add7f: 0f 85 bb 00 00 00 jne 4ade40 <_bt_fix_scankey_strategy+0xe0> : subkey->sk_strategy = BTCommuteStrategyNumber(subkey->sk_strategy); : subkey->sk_flags |= addflags; : if (subkey->sk_flags & SK_ROW_END) : break; : subkey++; : } 0.00 : 4add85: 31 c0 xor %eax,%eax : { : skey->sk_strategy = BTEqualStrategyNumber; : skey->sk_subtype = InvalidOid; : skey->sk_collation = InvalidOid; : } : else if (skey->sk_flags & SK_SEARCHNOTNULL) 0.00 : 4add87: 84 d2 test %dl,%dl 0.00 : 4add89: 79 28 jns 4addb3 <_bt_fix_scankey_strategy+0x53> : { : if (skey->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4add8b: 81 e2 00 00 00 02 and $0x2000000,%edx : skey->sk_strategy = BTGreaterStrategyNumber; : else : skey->sk_strategy = BTLessStrategyNumber; : skey->sk_subtype = InvalidOid; 0.00 : 4add91: c7 47 08 00 00 00 00 movl $0x0,0x8(%rdi) : skey->sk_collation = InvalidOid; 0.00 : 4add98: c7 47 0c 00 00 00 00 movl $0x0,0xc(%rdi) : skey->sk_collation = InvalidOid; : } : else if (skey->sk_flags & SK_SEARCHNOTNULL) : { : if (skey->sk_flags & SK_BT_NULLS_FIRST) : skey->sk_strategy = BTGreaterStrategyNumber; 0.00 : 4add9f: 83 fa 01 cmp $0x1,%edx 0.00 : 4adda2: 19 c0 sbb %eax,%eax 0.00 : 4adda4: 83 e0 fc and $0xfffffffc,%eax 0.00 : 4adda7: 83 c0 05 add $0x5,%eax 0.00 : 4addaa: 66 89 47 06 mov %ax,0x6(%rdi) : else : skey->sk_strategy = BTLessStrategyNumber; : skey->sk_subtype = InvalidOid; : skey->sk_collation = InvalidOid; 0.00 : 4addae: b8 01 00 00 00 mov $0x1,%eax : subkey++; : } : } : : return true; : } 0.00 : 4addb3: c9 leaveq 0.00 : 4addb4: c3 retq 0.00 : 4addb5: 0f 1f 00 nopl (%rax) : /* Needn't do the rest */ : return true; : } : : /* Adjust strategy for DESC, if we didn't already */ : if ((addflags & SK_BT_DESC) && !(skey->sk_flags & SK_BT_DESC)) 0.00 : 4addb8: f7 c2 00 00 00 01 test $0x1000000,%edx 0.00 : 4addbe: 74 15 je 4addd5 <_bt_fix_scankey_strategy+0x75> 0.00 : 4addc0: f7 c1 00 00 00 01 test $0x1000000,%ecx 0.00 : 4addc6: 75 0d jne 4addd5 <_bt_fix_scankey_strategy+0x75> : skey->sk_strategy = BTCommuteStrategyNumber(skey->sk_strategy); 0.00 : 4addc8: b8 06 00 00 00 mov $0x6,%eax 0.00 : 4addcd: 66 2b 47 06 sub 0x6(%rdi),%ax 0.00 : 4addd1: 66 89 47 06 mov %ax,0x6(%rdi) : skey->sk_flags |= addflags; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1260 8.50 : 4addd5: 89 c8 mov %ecx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1260 1.50 : 4addd7: 09 d0 or %edx,%eax : : /* If it's a row header, fix row member flags and strategies similarly */ : if (skey->sk_flags & SK_ROW_HEADER) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1263 2.50 : 4addd9: a8 04 test $0x4,%al : } : : /* Adjust strategy for DESC, if we didn't already */ : if ((addflags & SK_BT_DESC) && !(skey->sk_flags & SK_BT_DESC)) : skey->sk_strategy = BTCommuteStrategyNumber(skey->sk_strategy); : skey->sk_flags |= addflags; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1260 1.00 : 4adddb: 89 07 mov %eax,(%rdi) : : /* If it's a row header, fix row member flags and strategies similarly */ : if (skey->sk_flags & SK_ROW_HEADER) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1263 1.00 : 4adddd: 74 59 je 4ade38 <_bt_fix_scankey_strategy+0xd8> : { : ScanKey subkey = (ScanKey) DatumGetPointer(skey->sk_argument); 0.00 : 4adddf: 48 8b 57 40 mov 0x40(%rdi),%rdx : for (;;) : { : Assert(subkey->sk_flags & SK_ROW_MEMBER); : addflags = indoption[subkey->sk_attno - 1] << SK_BT_INDOPTION_SHIFT; : if ((addflags & SK_BT_DESC) && !(subkey->sk_flags & SK_BT_DESC)) : subkey->sk_strategy = BTCommuteStrategyNumber(subkey->sk_strategy); 0.00 : 4adde3: 41 b8 06 00 00 00 mov $0x6,%r8d 0.00 : 4adde9: eb 15 jmp 4ade00 <_bt_fix_scankey_strategy+0xa0> 0.00 : 4addeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : for (;;) : { : Assert(subkey->sk_flags & SK_ROW_MEMBER); : addflags = indoption[subkey->sk_attno - 1] << SK_BT_INDOPTION_SHIFT; : if ((addflags & SK_BT_DESC) && !(subkey->sk_flags & SK_BT_DESC)) 0.00 : 4addf0: 8b 3a mov (%rdx),%edi : subkey->sk_strategy = BTCommuteStrategyNumber(subkey->sk_strategy); : subkey->sk_flags |= addflags; 0.00 : 4addf2: 89 f8 mov %edi,%eax 0.00 : 4addf4: 09 c8 or %ecx,%eax : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4addf6: a8 10 test $0x10,%al : { : Assert(subkey->sk_flags & SK_ROW_MEMBER); : addflags = indoption[subkey->sk_attno - 1] << SK_BT_INDOPTION_SHIFT; : if ((addflags & SK_BT_DESC) && !(subkey->sk_flags & SK_BT_DESC)) : subkey->sk_strategy = BTCommuteStrategyNumber(subkey->sk_strategy); : subkey->sk_flags |= addflags; 0.00 : 4addf8: 89 02 mov %eax,(%rdx) : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4addfa: 75 3c jne 4ade38 <_bt_fix_scankey_strategy+0xd8> : break; : subkey++; 0.00 : 4addfc: 48 83 c2 48 add $0x48,%rdx : ScanKey subkey = (ScanKey) DatumGetPointer(skey->sk_argument); : : for (;;) : { : Assert(subkey->sk_flags & SK_ROW_MEMBER); : addflags = indoption[subkey->sk_attno - 1] << SK_BT_INDOPTION_SHIFT; 0.00 : 4ade00: 48 0f bf 42 04 movswq 0x4(%rdx),%rax 0.00 : 4ade05: 0f bf 4c 46 fe movswl -0x2(%rsi,%rax,2),%ecx 0.00 : 4ade0a: c1 e1 18 shl $0x18,%ecx : if ((addflags & SK_BT_DESC) && !(subkey->sk_flags & SK_BT_DESC)) 0.00 : 4ade0d: f7 c1 00 00 00 01 test $0x1000000,%ecx 0.00 : 4ade13: 74 db je 4addf0 <_bt_fix_scankey_strategy+0x90> 0.00 : 4ade15: 8b 3a mov (%rdx),%edi 0.00 : 4ade17: f7 c7 00 00 00 01 test $0x1000000,%edi 0.00 : 4ade1d: 75 d3 jne 4addf2 <_bt_fix_scankey_strategy+0x92> : subkey->sk_strategy = BTCommuteStrategyNumber(subkey->sk_strategy); 0.00 : 4ade1f: 44 89 c0 mov %r8d,%eax 0.00 : 4ade22: 66 2b 42 06 sub 0x6(%rdx),%ax 0.00 : 4ade26: 66 89 42 06 mov %ax,0x6(%rdx) : subkey->sk_flags |= addflags; 0.00 : 4ade2a: 89 f8 mov %edi,%eax 0.00 : 4ade2c: 09 c8 or %ecx,%eax : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ade2e: a8 10 test $0x10,%al : { : Assert(subkey->sk_flags & SK_ROW_MEMBER); : addflags = indoption[subkey->sk_attno - 1] << SK_BT_INDOPTION_SHIFT; : if ((addflags & SK_BT_DESC) && !(subkey->sk_flags & SK_BT_DESC)) : subkey->sk_strategy = BTCommuteStrategyNumber(subkey->sk_strategy); : subkey->sk_flags |= addflags; 0.00 : 4ade30: 89 02 mov %eax,(%rdx) : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ade32: 74 c8 je 4addfc <_bt_fix_scankey_strategy+0x9c> 0.00 : 4ade34: 0f 1f 40 00 nopl 0x0(%rax) : break; : subkey++; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1277 3.00 : 4ade38: b8 01 00 00 00 mov $0x1,%eax : } : : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1281 2.50 : 4ade3d: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1281 9.50 : 4ade3e: c3 retq 0.00 : 4ade3f: 90 nop : skey->sk_flags |= addflags; : : /* Set correct strategy for IS NULL or NOT NULL search */ : if (skey->sk_flags & SK_SEARCHNULL) : { : skey->sk_strategy = BTEqualStrategyNumber; 0.00 : 4ade40: 66 c7 47 06 03 00 movw $0x3,0x6(%rdi) : skey->sk_subtype = InvalidOid; 0.00 : 4ade46: c7 47 08 00 00 00 00 movl $0x0,0x8(%rdi) : skey->sk_collation = InvalidOid; 0.00 : 4ade4d: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4ade52: c7 47 0c 00 00 00 00 movl $0x0,0xc(%rdi) : subkey++; : } : } : : return true; : } 0.00 : 4ade59: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 17.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 7.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:706 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:684 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:673 5.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 4.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:673 3.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 3.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 2.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 1.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:673 1.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:684 1.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:686 1.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 1.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:673 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698c00 : : * mdread() -- Read the specified block from a relation. : */ : void : mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:673 1.11 : 698c00: 55 push %rbp : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:684 5.56 : 698c01: 45 31 c0 xor %r8d,%r8d : * mdread() -- Read the specified block from a relation. : */ : void : mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { 0.00 : 698c04: 48 89 e5 mov %rsp,%rbp 0.00 : 698c07: 4c 89 75 f8 mov %r14,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:673 4.44 : 698c0b: 41 89 d6 mov %edx,%r14d 0.00 : 698c0e: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 698c12: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.56 : 698c16: 4c 89 6d f0 mov %r13,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:673 5.56 : 698c1a: 49 89 cc mov %rcx,%r12 0.00 : 698c1d: 48 83 ec 20 sub $0x20,%rsp : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); 0.00 : 698c21: 31 c9 xor %ecx,%ecx : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698c23: 4c 89 f3 mov %r14,%rbx : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:684 1.11 : 698c26: e8 a5 f7 ff ff callq 6983d0 <_mdfd_getseg> : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:686 1.11 : 698c2b: 81 e3 ff ff 01 00 and $0x1ffff,%ebx : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 0.56 : 698c31: 8b 38 mov (%rax),%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 28.33 : 698c33: 31 d2 xor %edx,%edx : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698c35: 48 c1 e3 0d shl $0xd,%rbx : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); 0.00 : 698c39: 49 89 c5 mov %rax,%r13 : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 698c3c: 48 89 de mov %rbx,%rsi /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 2.78 : 698c3f: e8 4c 0e fe ff callq 679a90 0.56 : 698c44: 48 39 d8 cmp %rbx,%rax 0.00 : 698c47: 75 56 jne 698c9f : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileRead(v->mdfd_vfd, buffer, BLCKSZ); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 0.56 : 698c49: 41 8b 7d 00 mov 0x0(%r13),%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 5.00 : 698c4d: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 698c52: 4c 89 e6 mov %r12,%rsi /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 1.11 : 698c55: e8 96 11 fe ff callq 679df0 : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:706 6.67 : 698c5a: 3d 00 20 00 00 cmp $0x2000,%eax : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileRead(v->mdfd_vfd, buffer, BLCKSZ); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:696 7.22 : 698c5f: 89 c3 mov %eax,%ebx : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) 0.00 : 698c61: 74 27 je 698c8a : { : if (nbytes < 0) 0.00 : 698c63: 85 c0 test %eax,%eax 0.00 : 698c65: 78 61 js 698cc8 : * read a nonexistent block. However, if zero_damaged_pages is ON or : * we are InRecovery, we should instead return zeroes without : * complaining. This allows, for example, the case of trying to : * update a block that was later truncated away. : */ : if (zero_damaged_pages || InRecovery) 0.00 : 698c67: 80 3d f2 43 4e 00 00 cmpb $0x0,0x4e43f2(%rip) # b7d060 0.00 : 698c6e: 75 0d jne 698c7d 0.00 : 698c70: 80 3d f1 04 4e 00 00 cmpb $0x0,0x4e04f1(%rip) # b79168 0.00 : 698c77: 0f 84 9a 00 00 00 je 698d17 : MemSet(buffer, 0, BLCKSZ); 0.00 : 698c7d: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 698c82: 31 c0 xor %eax,%eax 0.00 : 698c84: 4c 89 e7 mov %r12,%rdi 0.00 : 698c87: f3 48 ab rep stos %rax,%es:(%rdi) : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("could not read block %u in file \"%s\": read only %d of %d bytes", : blocknum, FilePathName(v->mdfd_vfd), : nbytes, BLCKSZ))); : } : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 3.33 : 698c8a: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 17.78 : 698c8e: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 1.11 : 698c93: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 2.22 : 698c98: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 698c9d: c9 leaveq 3.33 : 698c9e: c3 retq : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698c9f: 45 31 c0 xor %r8d,%r8d 0.00 : 698ca2: b9 d9 e3 8a 00 mov $0x8ae3d9,%ecx 0.00 : 698ca7: ba b6 02 00 00 mov $0x2b6,%edx 0.00 : 698cac: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698cb1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698cb6: e8 05 1e 0e 00 callq 77aac0 0.00 : 698cbb: 84 c0 test %al,%al 0.00 : 698cbd: 0f 85 b3 00 00 00 jne 698d76 : * update a block that was later truncated away. : */ : if (zero_damaged_pages || InRecovery) : MemSet(buffer, 0, BLCKSZ); : else : ereport(ERROR, 0.00 : 698cc3: e8 08 08 dd ff callq 4694d0 : BLCKSZ); : : if (nbytes != BLCKSZ) : { : if (nbytes < 0) : ereport(ERROR, 0.00 : 698cc8: 45 31 c0 xor %r8d,%r8d 0.00 : 698ccb: b9 d9 e3 8a 00 mov $0x8ae3d9,%ecx 0.00 : 698cd0: ba c8 02 00 00 mov $0x2c8,%edx 0.00 : 698cd5: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698cda: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698cdf: e8 dc 1d 0e 00 callq 77aac0 0.00 : 698ce4: 84 c0 test %al,%al 0.00 : 698ce6: 74 db je 698cc3 0.00 : 698ce8: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698cec: e8 bf f5 fd ff callq 6782b0 0.00 : 698cf1: 44 89 f6 mov %r14d,%esi 0.00 : 698cf4: 48 89 c2 mov %rax,%rdx 0.00 : 698cf7: bf e8 e2 8a 00 mov $0x8ae2e8,%edi 0.00 : 698cfc: 31 c0 xor %eax,%eax 0.00 : 698cfe: e8 9d 3b 0e 00 callq 77c8a0 0.00 : 698d03: 89 c3 mov %eax,%ebx 0.00 : 698d05: e8 e6 3d 0e 00 callq 77caf0 0.00 : 698d0a: 89 de mov %ebx,%esi 0.00 : 698d0c: 89 c7 mov %eax,%edi 0.00 : 698d0e: 31 c0 xor %eax,%eax 0.00 : 698d10: e8 cb 18 0e 00 callq 77a5e0 0.00 : 698d15: eb ac jmp 698cc3 : * update a block that was later truncated away. : */ : if (zero_damaged_pages || InRecovery) : MemSet(buffer, 0, BLCKSZ); : else : ereport(ERROR, 0.00 : 698d17: 45 31 c0 xor %r8d,%r8d 0.00 : 698d1a: b9 d9 e3 8a 00 mov $0x8ae3d9,%ecx 0.00 : 698d1f: ba d9 02 00 00 mov $0x2d9,%edx 0.00 : 698d24: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698d29: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698d2e: e8 8d 1d 0e 00 callq 77aac0 0.00 : 698d33: 84 c0 test %al,%al 0.00 : 698d35: 74 8c je 698cc3 0.00 : 698d37: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698d3b: e8 70 f5 fd ff callq 6782b0 0.00 : 698d40: 89 d9 mov %ebx,%ecx 0.00 : 698d42: 48 89 c2 mov %rax,%rdx 0.00 : 698d45: 44 89 f6 mov %r14d,%esi 0.00 : 698d48: 41 b8 00 20 00 00 mov $0x2000,%r8d 0.00 : 698d4e: bf 18 e3 8a 00 mov $0x8ae318,%edi 0.00 : 698d53: 31 c0 xor %eax,%eax 0.00 : 698d55: e8 46 3b 0e 00 callq 77c8a0 0.00 : 698d5a: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 698d5f: 89 c3 mov %eax,%ebx 0.00 : 698d61: e8 ea 3f 0e 00 callq 77cd50 0.00 : 698d66: 89 de mov %ebx,%esi 0.00 : 698d68: 89 c7 mov %eax,%edi 0.00 : 698d6a: 31 c0 xor %eax,%eax 0.00 : 698d6c: e8 6f 18 0e 00 callq 77a5e0 0.00 : 698d71: e9 4d ff ff ff jmpq 698cc3 : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698d76: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698d7a: e8 31 f5 fd ff callq 6782b0 0.00 : 698d7f: 44 89 f6 mov %r14d,%esi 0.00 : 698d82: 48 89 c2 mov %rax,%rdx 0.00 : 698d85: bf 18 e1 8a 00 mov $0x8ae118,%edi 0.00 : 698d8a: e9 6d ff ff ff jmpq 698cfc Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 36.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2657 11.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2657 9.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2659 7.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 6.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 5.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 4.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2662 3.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2658 3.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2659 3.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 2.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2657 2.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2662 1.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 0.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 0.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 0.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d36d0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) > 0); : } : : Datum : float48ge(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2657 11.64 : 6d36d0: 55 push %rbp 36.99 : 6d36d1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d36d4: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2657 2.74 : 6d36d5: 48 89 fb mov %rdi,%rbx 0.00 : 6d36d8: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d36dc: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2658 3.42 : 6d36e0: e8 cb a2 0a 00 callq 77d9b0 : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2659 3.42 : 6d36e5: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float48ge(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d36e9: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2659 9.59 : 6d36ee: e8 dd a2 0a 00 callq 77d9d0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) >= 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 0.68 : 6d36f3: f3 0f 10 55 f4 movss -0xc(%rbp),%xmm2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 6.16 : 6d36f8: 66 0f 28 c8 movapd %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 0.68 : 6d36fc: 0f 5a d2 cvtps2pd %xmm2,%xmm2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 7.53 : 6d36ff: 66 0f 28 c2 movapd %xmm2,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 3.42 : 6d3703: e8 18 f8 ff ff callq 6d2f20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 5.48 : 6d3708: 48 98 cltq : } 0.00 : 6d370a: 48 83 c4 08 add $0x8,%rsp : float48ge(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float8 arg2 = PG_GETARG_FLOAT8(1); : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) >= 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2661 1.37 : 6d370e: 48 f7 d0 not %rax 0.68 : 6d3711: 48 c1 e8 3f shr $0x3f,%rax : } 0.00 : 6d3715: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2662 6.16 : 6d3716: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 9.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 8.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:130 5.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 5.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 4.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:140 4.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 2.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 2.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 2.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:133 2.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:146 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 1.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:143 1.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:140 1.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:133 1.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:50 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:143 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079d300 : : (cmp_tuple(a, c, state) < 0 ? a : c)); : } : : static void : qsort_tuple(SortTuple *a, size_t n, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { 0.00 : 79d300: 55 push %rbp 0.00 : 79d301: 48 89 e5 mov %rsp,%rbp 0.00 : 79d304: 41 57 push %r15 0.00 : 79d306: 41 56 push %r14 0.00 : 79d308: 41 55 push %r13 0.00 : 79d30a: 41 54 push %r12 0.00 : 79d30c: 49 89 f4 mov %rsi,%r12 0.00 : 79d30f: 53 push %rbx 0.00 : 79d310: 48 83 ec 38 sub $0x38,%rsp : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.00 : 79d314: 0f b6 05 75 cd 41 00 movzbl 0x41cd75(%rip),%eax # bba090 : (cmp_tuple(a, c, state) < 0 ? a : c)); : } : : static void : qsort_tuple(SortTuple *a, size_t n, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { 0.00 : 79d31b: 48 89 7d b0 mov %rdi,-0x50(%rbp) 0.00 : 79d31f: 48 89 55 a8 mov %rdx,-0x58(%rbp) 0.00 : 79d323: 48 89 4d a0 mov %rcx,-0x60(%rbp) : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.00 : 79d327: 84 c0 test %al,%al 0.00 : 79d329: 0f 85 86 02 00 00 jne 79d5b5 : if (n < 7) 0.00 : 79d32f: 49 83 fc 06 cmp $0x6,%r12 0.00 : 79d333: 0f 86 8b 02 00 00 jbe 79d5c4 : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) : swap(pl, pl - 1); : return; : } : presorted = 1; : for (pm = a + 1; pm < a + n; pm++) 0.00 : 79d339: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 79d33d: 4c 8b 75 b0 mov -0x50(%rbp),%r14 0.00 : 79d341: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 79d345: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.00 : 79d349: 49 83 c6 18 add $0x18,%r14 0.00 : 79d34d: 49 39 c6 cmp %rax,%r14 0.00 : 79d350: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 79d354: 0f 83 fe 02 00 00 jae 79d658 0.00 : 79d35a: 4c 89 f3 mov %r14,%rbx 0.00 : 79d35d: eb 21 jmp 79d380 0.00 : 79d35f: 90 nop : { : CHECK_FOR_INTERRUPTS(); : if (cmp_tuple(pm - 1, pm, state) > 0) 0.00 : 79d360: 48 8d 7b e8 lea -0x18(%rbx),%rdi 0.00 : 79d364: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 79d368: 48 89 de mov %rbx,%rsi 0.00 : 79d36b: ff 55 a8 callq *-0x58(%rbp) 0.49 : 79d36e: 85 c0 test %eax,%eax 0.00 : 79d370: 7f 20 jg 79d392 : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) : swap(pl, pl - 1); : return; : } : presorted = 1; : for (pm = a + 1; pm < a + n; pm++) 0.00 : 79d372: 48 83 c3 18 add $0x18,%rbx 0.00 : 79d376: 48 3b 5d c8 cmp -0x38(%rbp),%rbx 0.00 : 79d37a: 0f 83 d8 02 00 00 jae 79d658 : { : CHECK_FOR_INTERRUPTS(); 0.00 : 79d380: 0f b6 05 09 cd 41 00 movzbl 0x41cd09(%rip),%eax # bba090 0.00 : 79d387: 84 c0 test %al,%al 0.00 : 79d389: 74 d5 je 79d360 0.00 : 79d38b: e8 10 ef ef ff callq 69c2a0 0.00 : 79d390: eb ce jmp 79d360 : break; : } : } : if (presorted) : return; : pm = a + (n / 2); 0.00 : 79d392: 4c 89 e0 mov %r12,%rax 0.00 : 79d395: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 79d399: 48 d1 e8 shr %rax : if (n > 7) 0.00 : 79d39c: 49 83 fc 07 cmp $0x7,%r12 : break; : } : } : if (presorted) : return; : pm = a + (n / 2); 0.00 : 79d3a0: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79d3a4: 4c 8d 2c c2 lea (%rdx,%rax,8),%r13 : if (n > 7) 0.00 : 79d3a8: 0f 85 07 04 00 00 jne 79d7b5 0.00 : 79d3ae: 48 81 c2 90 00 00 00 add $0x90,%rdx 0.00 : 79d3b5: 48 89 55 c0 mov %rdx,-0x40(%rbp) : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); : } : pm = med3_tuple(pl, pm, pn, cmp_tuple, state); : } : swap(a, pm); 0.00 : 79d3b9: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 79d3bd: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 79d3c1: 8b 50 14 mov 0x14(%rax),%edx 0.00 : 79d3c4: 0f b6 48 10 movzbl 0x10(%rax),%ecx 0.00 : 79d3c8: 49 89 df mov %rbx,%r15 0.00 : 79d3cb: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 79d3cf: 48 8b 38 mov (%rax),%rdi 0.00 : 79d3d2: 49 83 c7 30 add $0x30,%r15 0.00 : 79d3d6: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 79d3da: 48 89 03 mov %rax,(%rbx) 0.00 : 79d3dd: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 79d3e1: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 79d3e5: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 79d3e9: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 79d3ed: 41 89 55 14 mov %edx,0x14(%r13) 0.00 : 79d3f1: 41 88 4d 10 mov %cl,0x10(%r13) 0.00 : 79d3f5: 49 89 75 08 mov %rsi,0x8(%r13) 0.00 : 79d3f9: 49 89 7d 00 mov %rdi,0x0(%r13) 0.00 : 79d3fd: 4c 8b 65 c0 mov -0x40(%rbp),%r12 0.00 : 79d401: 4c 89 75 b8 mov %r14,-0x48(%rbp) 0.00 : 79d405: 4d 89 e5 mov %r12,%r13 0.00 : 79d408: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79d40f: 00 : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); : pa++; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 2.44 : 79d410: 4d 8d 77 e8 lea -0x18(%r15),%r14 : swap(a, pm); : pa = pb = a + 1; : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 0.98 : 79d414: 4d 39 f4 cmp %r14,%r12 0.00 : 79d417: 0f 83 53 02 00 00 jae 79d670 : swap(pb, pc); : pb++; : pc--; : } : pn = a + n; : r = Min(pa - a, pb - pa); 0.00 : 79d41d: 4d 89 f2 mov %r14,%r10 0.00 : 79d420: 4c 2b 55 b8 sub -0x48(%rbp),%r10 0.00 : 79d424: 48 b8 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rax 0.00 : 79d42b: aa aa aa 0.00 : 79d42e: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : 79d435: aa aa aa 0.00 : 79d438: 49 c1 fa 03 sar $0x3,%r10 0.00 : 79d43c: 4c 0f af d0 imul %rax,%r10 0.00 : 79d440: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 79d444: 48 2b 45 b0 sub -0x50(%rbp),%rax 0.00 : 79d448: 48 c1 f8 03 sar $0x3,%rax 0.00 : 79d44c: 48 0f af c2 imul %rdx,%rax 0.00 : 79d450: 4c 39 d0 cmp %r10,%rax 0.00 : 79d453: 49 0f 4f c2 cmovg %r10,%rax : vecswap(a, pb - r, r); 0.00 : 79d457: 85 c0 test %eax,%eax 0.00 : 79d459: 7e 66 jle 79d4c1 0.00 : 79d45b: 4c 63 d8 movslq %eax,%r11 0.00 : 79d45e: 4d 89 f1 mov %r14,%r9 0.00 : 79d461: 45 31 c0 xor %r8d,%r8d 0.00 : 79d464: 4b 8d 04 5b lea (%r11,%r11,2),%rax 0.00 : 79d468: 48 c1 e0 03 shl $0x3,%rax 0.00 : 79d46c: 49 29 c1 sub %rax,%r9 0.00 : 79d46f: 90 nop : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.00 : 79d470: 48 8b 5d b0 mov -0x50(%rbp),%rbx : *a++ = *b; 0.00 : 79d474: 4b 8b 04 01 mov (%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.00 : 79d478: 4a 8b 3c 03 mov (%rbx,%r8,1),%rdi : *a++ = *b; 0.00 : 79d47c: 4a 89 04 03 mov %rax,(%rbx,%r8,1) 0.00 : 79d480: 4b 8b 44 01 08 mov 0x8(%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.00 : 79d485: 42 0f b6 4c 03 10 movzbl 0x10(%rbx,%r8,1),%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:50 0.98 : 79d48b: 42 8b 54 03 14 mov 0x14(%rbx,%r8,1),%edx 0.00 : 79d490: 4a 8b 74 03 08 mov 0x8(%rbx,%r8,1),%rsi : *a++ = *b; 0.49 : 79d495: 4a 89 44 03 08 mov %rax,0x8(%rbx,%r8,1) 0.00 : 79d49a: 4b 8b 44 01 10 mov 0x10(%r9,%r8,1),%rax 0.00 : 79d49f: 4a 89 44 03 10 mov %rax,0x10(%rbx,%r8,1) : *b++ = t; 0.00 : 79d4a4: 43 89 54 01 14 mov %edx,0x14(%r9,%r8,1) 0.00 : 79d4a9: 43 88 4c 01 10 mov %cl,0x10(%r9,%r8,1) 0.00 : 79d4ae: 4b 89 74 01 08 mov %rsi,0x8(%r9,%r8,1) 0.00 : 79d4b3: 4b 89 3c 01 mov %rdi,(%r9,%r8,1) : } while (--n > 0); 0.49 : 79d4b7: 49 83 c0 18 add $0x18,%r8 0.00 : 79d4bb: 49 83 eb 01 sub $0x1,%r11 0.00 : 79d4bf: 75 af jne 79d470 : pc--; : } : pn = a + n; : r = Min(pa - a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - 1); 0.00 : 79d4c1: 4c 89 eb mov %r13,%rbx 0.00 : 79d4c4: 48 b8 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rax 0.00 : 79d4cb: aa aa aa 0.00 : 79d4ce: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : 79d4d5: aa aa aa 0.00 : 79d4d8: 4c 29 e3 sub %r12,%rbx 0.00 : 79d4db: 48 c1 fb 03 sar $0x3,%rbx 0.00 : 79d4df: 48 0f af d8 imul %rax,%rbx 0.00 : 79d4e3: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 79d4e7: 4c 29 e8 sub %r13,%rax 0.00 : 79d4ea: 48 c1 f8 03 sar $0x3,%rax 0.00 : 79d4ee: 48 0f af c2 imul %rdx,%rax 0.00 : 79d4f2: 48 83 e8 01 sub $0x1,%rax 0.00 : 79d4f6: 48 39 d8 cmp %rbx,%rax 0.00 : 79d4f9: 48 0f 4f c3 cmovg %rbx,%rax : vecswap(pb, pn - r, r); 0.00 : 79d4fd: 85 c0 test %eax,%eax 0.00 : 79d4ff: 7e 6c jle 79d56d 0.00 : 79d501: 4c 63 d8 movslq %eax,%r11 0.00 : 79d504: 4c 8b 4d c8 mov -0x38(%rbp),%r9 0.00 : 79d508: 45 31 c0 xor %r8d,%r8d 0.00 : 79d50b: 4b 8d 04 5b lea (%r11,%r11,2),%rax 0.00 : 79d50f: 48 c1 e0 03 shl $0x3,%rax 0.00 : 79d513: 49 29 c1 sub %rax,%r9 0.00 : 79d516: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79d51d: 00 00 00 : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; : *a++ = *b; 0.00 : 79d520: 4b 8b 04 01 mov (%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.49 : 79d524: 4b 8b 3c 06 mov (%r14,%r8,1),%rdi 0.49 : 79d528: 43 0f b6 4c 06 10 movzbl 0x10(%r14,%r8,1),%ecx 0.49 : 79d52e: 43 8b 54 06 14 mov 0x14(%r14,%r8,1),%edx 0.00 : 79d533: 4b 8b 74 06 08 mov 0x8(%r14,%r8,1),%rsi : *a++ = *b; 0.00 : 79d538: 4b 89 04 06 mov %rax,(%r14,%r8,1) 0.00 : 79d53c: 4b 8b 44 01 08 mov 0x8(%r9,%r8,1),%rax 0.00 : 79d541: 4b 89 44 06 08 mov %rax,0x8(%r14,%r8,1) 0.00 : 79d546: 4b 8b 44 01 10 mov 0x10(%r9,%r8,1),%rax 0.00 : 79d54b: 4b 89 44 06 10 mov %rax,0x10(%r14,%r8,1) : *b++ = t; 0.49 : 79d550: 43 89 54 01 14 mov %edx,0x14(%r9,%r8,1) 0.00 : 79d555: 43 88 4c 01 10 mov %cl,0x10(%r9,%r8,1) 0.00 : 79d55a: 4b 89 74 01 08 mov %rsi,0x8(%r9,%r8,1) 0.00 : 79d55f: 4b 89 3c 01 mov %rdi,(%r9,%r8,1) : } while (--n > 0); 0.00 : 79d563: 49 83 c0 18 add $0x18,%r8 0.00 : 79d567: 49 83 eb 01 sub $0x1,%r11 0.00 : 79d56b: 75 b3 jne 79d520 : pn = a + n; : r = Min(pa - a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - 1); : vecswap(pb, pn - r, r); : if ((r = pb - pa) > 1) 0.00 : 79d56d: 41 83 fa 01 cmp $0x1,%r10d 0.00 : 79d571: 7e 14 jle 79d587 : qsort_tuple(a, r, cmp_tuple, state); 0.00 : 79d573: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 79d577: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 79d57b: 49 63 f2 movslq %r10d,%rsi 0.00 : 79d57e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 79d582: e8 79 fd ff ff callq 79d300 : if ((r = pd - pc) > 1) 0.00 : 79d587: 83 fb 01 cmp $0x1,%ebx 0.00 : 79d58a: 0f 8e c8 00 00 00 jle 79d658 : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 79d590: 4c 63 e3 movslq %ebx,%r12 0.00 : 79d593: 48 8b 5d c8 mov -0x38(%rbp),%rbx 0.00 : 79d597: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 79d59b: 48 c1 e0 03 shl $0x3,%rax 0.00 : 79d59f: 48 29 c3 sub %rax,%rbx : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.00 : 79d5a2: 0f b6 05 e7 ca 41 00 movzbl 0x41cae7(%rip),%eax # bba090 : if ((r = pb - pa) > 1) : qsort_tuple(a, r, cmp_tuple, state); : if ((r = pd - pc) > 1) : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 79d5a9: 48 89 5d b0 mov %rbx,-0x50(%rbp) : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.00 : 79d5ad: 84 c0 test %al,%al 0.00 : 79d5af: 0f 84 7a fd ff ff je 79d32f 0.00 : 79d5b5: e8 e6 ec ef ff callq 69c2a0 : if (n < 7) 0.00 : 79d5ba: 49 83 fc 06 cmp $0x6,%r12 0.00 : 79d5be: 0f 87 75 fd ff ff ja 79d339 : { : for (pm = a + 1; pm < a + n; pm++) 0.00 : 79d5c4: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 79d5c8: 4c 8b 6d b0 mov -0x50(%rbp),%r13 0.00 : 79d5cc: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 79d5d0: 4c 8d 34 c2 lea (%rdx,%rax,8),%r14 0.00 : 79d5d4: 49 83 c5 18 add $0x18,%r13 0.00 : 79d5d8: 4c 89 eb mov %r13,%rbx 0.00 : 79d5db: 4d 39 f5 cmp %r14,%r13 0.00 : 79d5de: 73 78 jae 79d658 : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) 0.00 : 79d5e0: 4c 3b 6d b0 cmp -0x50(%rbp),%r13 0.00 : 79d5e4: 77 51 ja 79d637 0.00 : 79d5e6: eb 64 jmp 79d64c 0.00 : 79d5e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79d5ef: 00 : swap(pl, pl - 1); 0.00 : 79d5f0: 49 8b 04 24 mov (%r12),%rax 0.00 : 79d5f4: 8b 53 14 mov 0x14(%rbx),%edx 0.00 : 79d5f7: 0f b6 4b 10 movzbl 0x10(%rbx),%ecx 0.00 : 79d5fb: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 79d5ff: 48 8b 3b mov (%rbx),%rdi 0.00 : 79d602: 4c 89 e3 mov %r12,%rbx 0.00 : 79d605: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 79d60a: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 79d60f: 49 89 74 24 08 mov %rsi,0x8(%r12) 0.00 : 79d614: 49 89 3c 24 mov %rdi,(%r12) 0.00 : 79d618: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 79d61d: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 79d622: 41 89 54 24 14 mov %edx,0x14(%r12) 0.00 : 79d627: 41 88 4c 24 10 mov %cl,0x10(%r12) 0.00 : 79d62c: 49 89 44 24 28 mov %rax,0x28(%r12) : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) 0.00 : 79d631: 4c 3b 65 b0 cmp -0x50(%rbp),%r12 0.00 : 79d635: 76 15 jbe 79d64c 0.00 : 79d637: 4c 8d 63 e8 lea -0x18(%rbx),%r12 0.00 : 79d63b: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 79d63f: 48 89 de mov %rbx,%rsi 0.00 : 79d642: 4c 89 e7 mov %r12,%rdi 0.00 : 79d645: ff 55 a8 callq *-0x58(%rbp) 0.00 : 79d648: 85 c0 test %eax,%eax 0.00 : 79d64a: 7f a4 jg 79d5f0 : : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) 0.00 : 79d64c: 49 83 c5 18 add $0x18,%r13 0.00 : 79d650: 4d 39 f5 cmp %r14,%r13 0.00 : 79d653: 4c 89 eb mov %r13,%rbx 0.00 : 79d656: 72 88 jb 79d5e0 : a = pn - r; : n = r; : goto loop; : } : /* qsort_tuple(pn - r, r, cmp_tuple, state);*/ : } 0.00 : 79d658: 48 83 c4 38 add $0x38,%rsp 0.00 : 79d65c: 5b pop %rbx 0.00 : 79d65d: 41 5c pop %r12 0.00 : 79d65f: 41 5d pop %r13 0.00 : 79d661: 41 5e pop %r14 0.00 : 79d663: 41 5f pop %r15 0.00 : 79d665: c9 leaveq 0.00 : 79d666: c3 retq 0.00 : 79d667: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79d66e: 00 00 : swap(a, pm); : pa = pb = a + 1; : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 4.39 : 79d670: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.98 : 79d674: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 79d678: 4c 89 f7 mov %r14,%rdi 0.49 : 79d67b: ff 55 a8 callq *-0x58(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 12.68 : 79d67e: 85 c0 test %eax,%eax 0.49 : 79d680: 89 c3 mov %eax,%ebx 0.00 : 79d682: 7f 5f jg 79d6e3 0.49 : 79d684: e9 d2 00 00 00 jmpq 79d75b 0.00 : 79d689: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : pb++; : } : while (pb <= pc && (r = cmp_tuple(pc, a, state)) >= 0) : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) 0.49 : 79d690: 85 db test %ebx,%ebx 0.00 : 79d692: 75 42 jne 79d6d6 : { : swap(pc, pd); 0.00 : 79d694: 49 8b 45 00 mov 0x0(%r13),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:143 1.46 : 79d698: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 79d69c: 41 0f b6 4c 24 10 movzbl 0x10(%r12),%ecx 0.49 : 79d6a2: 41 8b 54 24 14 mov 0x14(%r12),%edx 0.00 : 79d6a7: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 79d6ac: 49 89 04 24 mov %rax,(%r12) 0.00 : 79d6b0: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 79d6b4: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 79d6b9: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 79d6bd: 49 89 44 24 10 mov %rax,0x10(%r12) 0.49 : 79d6c2: 41 89 55 14 mov %edx,0x14(%r13) 0.98 : 79d6c6: 41 88 4d 10 mov %cl,0x10(%r13) 0.00 : 79d6ca: 49 89 75 08 mov %rsi,0x8(%r13) 0.00 : 79d6ce: 49 89 7d 00 mov %rdi,0x0(%r13) : pd--; 0.00 : 79d6d2: 49 83 ed 18 sub $0x18,%r13 : } : pc--; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:146 1.95 : 79d6d6: 49 83 ec 18 sub $0x18,%r12 : swap(pa, pb); : pa++; : } : pb++; : } : while (pb <= pc && (r = cmp_tuple(pc, a, state)) >= 0) 0.00 : 79d6da: 4d 39 f4 cmp %r14,%r12 0.00 : 79d6dd: 0f 82 3a fd ff ff jb 79d41d /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 1.95 : 79d6e3: 48 8b 55 a0 mov -0x60(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 5.85 : 79d6e7: 48 8b 75 b0 mov -0x50(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 0.98 : 79d6eb: 4c 89 e7 mov %r12,%rdi 0.49 : 79d6ee: ff 55 a8 callq *-0x58(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 9.27 : 79d6f1: 85 c0 test %eax,%eax 0.00 : 79d6f3: 89 c3 mov %eax,%ebx 0.00 : 79d6f5: 78 19 js 79d710 : { : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:140 1.46 : 79d6f7: 0f b6 05 92 c9 41 00 movzbl 0x41c992(%rip),%eax # bba090 4.88 : 79d6fe: 84 c0 test %al,%al 0.00 : 79d700: 74 8e je 79d690 0.00 : 79d702: e8 99 eb ef ff callq 69c2a0 0.00 : 79d707: eb 87 jmp 79d690 0.00 : 79d709: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : pc--; : } : if (pb > pc) : break; : swap(pb, pc); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.46 : 79d710: 49 8b 04 24 mov (%r12),%rax 2.93 : 79d714: 49 8b 7f e8 mov -0x18(%r15),%rdi 0.98 : 79d718: 41 0f b6 4f f8 movzbl -0x8(%r15),%ecx 0.98 : 79d71d: 41 8b 57 fc mov -0x4(%r15),%edx 0.49 : 79d721: 49 8b 77 f0 mov -0x10(%r15),%rsi 0.00 : 79d725: 49 89 47 e8 mov %rax,-0x18(%r15) 3.41 : 79d729: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.49 : 79d72e: 49 89 47 f0 mov %rax,-0x10(%r15) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 5.37 : 79d732: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 79d737: 49 89 47 f8 mov %rax,-0x8(%r15) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.98 : 79d73b: 41 89 54 24 14 mov %edx,0x14(%r12) 0.98 : 79d740: 41 88 4c 24 10 mov %cl,0x10(%r12) 2.93 : 79d745: 49 89 74 24 08 mov %rsi,0x8(%r12) 0.00 : 79d74a: 49 89 3c 24 mov %rdi,(%r12) : pb++; : pc--; 0.49 : 79d74e: 49 83 ec 18 sub $0x18,%r12 : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); : pa++; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 3.41 : 79d752: 49 83 c7 18 add $0x18,%r15 0.49 : 79d756: e9 b5 fc ff ff jmpq 79d410 : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) : { : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:130 8.29 : 79d75b: 0f b6 05 2e c9 41 00 movzbl 0x41c92e(%rip),%eax # bba090 0.49 : 79d762: 84 c0 test %al,%al 0.00 : 79d764: 0f 85 83 00 00 00 jne 79d7ed : if (r == 0) 0.00 : 79d76a: 85 db test %ebx,%ebx 0.00 : 79d76c: 75 e4 jne 79d752 : { : swap(pa, pb); 0.00 : 79d76e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.49 : 79d772: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 79d776: 8b 50 14 mov 0x14(%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:133 2.93 : 79d779: 0f b6 48 10 movzbl 0x10(%rax),%ecx 0.00 : 79d77d: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 79d781: 48 8b 38 mov (%rax),%rdi 0.00 : 79d784: 49 8b 47 e8 mov -0x18(%r15),%rax 0.00 : 79d788: 48 89 03 mov %rax,(%rbx) 1.46 : 79d78b: 49 8b 47 f0 mov -0x10(%r15),%rax 0.00 : 79d78f: 48 89 43 08 mov %rax,0x8(%rbx) 0.49 : 79d793: 49 8b 47 f8 mov -0x8(%r15),%rax 0.49 : 79d797: 48 89 43 10 mov %rax,0x10(%rbx) : pa++; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 1.46 : 79d79b: 48 83 c3 18 add $0x18,%rbx : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); 0.00 : 79d79f: 41 89 57 fc mov %edx,-0x4(%r15) 0.49 : 79d7a3: 41 88 4f f8 mov %cl,-0x8(%r15) 0.00 : 79d7a7: 49 89 77 f0 mov %rsi,-0x10(%r15) 0.00 : 79d7ab: 49 89 7f e8 mov %rdi,-0x18(%r15) : pa++; 0.00 : 79d7af: 48 89 5d b8 mov %rbx,-0x48(%rbp) 0.00 : 79d7b3: eb 9d jmp 79d752 : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.00 : 79d7b5: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 79d7b9: 4b 8d 44 64 fd lea -0x3(%r12,%r12,2),%rax : if (n > 40) 0.00 : 79d7be: 49 83 fc 28 cmp $0x28,%r12 : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.00 : 79d7c2: 48 8d 04 c3 lea (%rbx,%rax,8),%rax : if (n > 40) 0.00 : 79d7c6: 49 89 df mov %rbx,%r15 : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.00 : 79d7c9: 48 89 45 c0 mov %rax,-0x40(%rbp) : if (n > 40) 0.00 : 79d7cd: 48 89 c2 mov %rax,%rdx 0.00 : 79d7d0: 77 25 ja 79d7f7 : d = (n / 8); : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); : } : pm = med3_tuple(pl, pm, pn, cmp_tuple, state); 0.00 : 79d7d2: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 79d7d6: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d7da: 4c 89 ee mov %r13,%rsi 0.00 : 79d7dd: 4c 89 ff mov %r15,%rdi 0.00 : 79d7e0: e8 4b f2 ff ff callq 79ca30 0.00 : 79d7e5: 49 89 c5 mov %rax,%r13 0.00 : 79d7e8: e9 cc fb ff ff jmpq 79d3b9 : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) : { : CHECK_FOR_INTERRUPTS(); 0.00 : 79d7ed: e8 ae ea ef ff callq 69c2a0 0.00 : 79d7f2: e9 73 ff ff ff jmpq 79d76a : { : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); 0.00 : 79d7f7: 4c 89 e0 mov %r12,%rax : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); 0.00 : 79d7fa: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 79d7fe: 48 8b 75 b0 mov -0x50(%rbp),%rsi : { : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); 0.00 : 79d802: 48 c1 e8 03 shr $0x3,%rax : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); 0.00 : 79d806: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 79d80a: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d80e: 8d 1c 00 lea (%rax,%rax,1),%ebx 0.00 : 79d811: 48 98 cltq 0.00 : 79d813: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 79d817: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79d81b: 48 63 db movslq %ebx,%rbx 0.00 : 79d81e: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 79d822: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : 79d829: 00 0.00 : 79d82a: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 79d82e: 4c 01 e6 add %r12,%rsi 0.00 : 79d831: 48 01 da add %rbx,%rdx 0.00 : 79d834: e8 f7 f1 ff ff callq 79ca30 : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); 0.00 : 79d839: 4b 8d 54 25 00 lea 0x0(%r13,%r12,1),%rdx 0.00 : 79d83e: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 79d842: 49 f7 dc neg %r12 0.00 : 79d845: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d849: 4b 8d 7c 25 00 lea 0x0(%r13,%r12,1),%rdi 0.00 : 79d84e: 4c 89 ee mov %r13,%rsi : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); 0.00 : 79d851: 49 89 c7 mov %rax,%r15 : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); 0.00 : 79d854: e8 d7 f1 ff ff callq 79ca30 : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); 0.00 : 79d859: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 79d85d: 48 8b 7d c0 mov -0x40(%rbp),%rdi : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); 0.00 : 79d861: 49 89 c5 mov %rax,%r13 : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); 0.00 : 79d864: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 79d868: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 79d86c: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d870: 4c 01 e6 add %r12,%rsi 0.00 : 79d873: 48 29 df sub %rbx,%rdi 0.00 : 79d876: e8 b5 f1 ff ff callq 79ca30 0.00 : 79d87b: 48 89 c2 mov %rax,%rdx 0.00 : 79d87e: e9 4f ff ff ff jmpq 79d7d2 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 57.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:305 14.72 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:197 6.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 4.91 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 3.68 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:307 3.07 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:307 2.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:319 1.84 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:319 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:319 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:309 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:197 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:319 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a0e20 : : * (relfilenode, blocknumber), overwriting any existing entry for the : * same relfilenode. : */ : void : ss_report_location(Relation rel, BlockNumber location) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 0.61 : 4a0e20: 55 push %rbp : * Missing a few updates isn't critical, it just means that a new scan : * that wants to join the pack will start a little bit behind the head of : * the scan. Hopefully the pages are still in OS cache and the scan : * catches up quickly. : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:305 57.67 : 4a0e21: 40 f6 c6 0f test $0xf,%sil : * (relfilenode, blocknumber), overwriting any existing entry for the : * same relfilenode. : */ : void : ss_report_location(Relation rel, BlockNumber location) : { 0.00 : 4a0e25: 48 89 e5 mov %rsp,%rbp 0.00 : 4a0e28: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 6.75 : 4a0e2a: 41 89 f4 mov %esi,%r12d 0.00 : 4a0e2d: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 4.91 : 4a0e2e: 48 89 fb mov %rdi,%rbx : * Missing a few updates isn't critical, it just means that a new scan : * that wants to join the pack will start a little bit behind the head of : * the scan. Hopefully the pages are still in OS cache and the scan : * catches up quickly. : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) 0.00 : 4a0e31: 74 0d je 4a0e40 : elog(LOG, : "SYNC_SCAN: missed update for \"%s\" at %u", : RelationGetRelationName(rel), location); : #endif : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:319 1.84 : 4a0e33: 5b pop %rbx 1.23 : 4a0e34: 41 5c pop %r12 2.45 : 4a0e36: c9 leaveq 0.61 : 4a0e37: c3 retq 0.00 : 4a0e38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a0e3f: 00 : * the scan. Hopefully the pages are still in OS cache and the scan : * catches up quickly. : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:307 3.68 : 4a0e40: 48 8b 3d b9 cb 6d 00 mov 0x6dcbb9(%rip),%rdi # b7da00 3.07 : 4a0e47: 31 f6 xor %esi,%esi 0.00 : 4a0e49: 48 81 c7 00 03 00 00 add $0x300,%rdi 0.00 : 4a0e50: e8 4b e1 1e 00 callq 68efa0 0.00 : 4a0e55: 84 c0 test %al,%al 0.00 : 4a0e57: 74 da je 4a0e33 : static BlockNumber : ss_search(RelFileNode relfilenode, BlockNumber location, bool set) : { : ss_lru_item_t *item; : : item = scan_locations->head; 0.00 : 4a0e59: 48 8b 35 a0 7e 6d 00 mov 0x6d7ea0(%rip),%rsi # b78d00 : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) : { : (void) ss_search(rel->rd_node, location, true); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:309 1.23 : 4a0e60: 8b 53 08 mov 0x8(%rbx),%edx 0.00 : 4a0e63: 44 8b 43 04 mov 0x4(%rbx),%r8d 0.00 : 4a0e67: 8b 3b mov (%rbx),%edi : static BlockNumber : ss_search(RelFileNode relfilenode, BlockNumber location, bool set) : { : ss_lru_item_t *item; : : item = scan_locations->head; 0.00 : 4a0e69: 48 8b 0e mov (%rsi),%rcx 0.00 : 4a0e6c: eb 0e jmp 4a0e7c 0.00 : 4a0e6e: 66 90 xchg %ax,%ax : { : bool match; : : match = RelFileNodeEquals(item->location.relfilenode, relfilenode); : : if (match || item->next == NULL) 0.00 : 4a0e70: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4a0e74: 48 85 c0 test %rax,%rax 0.00 : 4a0e77: 74 6f je 4a0ee8 0.00 : 4a0e79: 48 89 c1 mov %rax,%rcx : item = scan_locations->head; : for (;;) : { : bool match; : : match = RelFileNodeEquals(item->location.relfilenode, relfilenode); 0.00 : 4a0e7c: 39 51 18 cmp %edx,0x18(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:197 14.72 : 4a0e7f: 75 ef jne 4a0e70 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:197 1.23 : 4a0e81: 44 39 41 14 cmp %r8d,0x14(%rcx) 0.00 : 4a0e85: 75 e9 jne 4a0e70 0.00 : 4a0e87: 39 79 10 cmp %edi,0x10(%rcx) 0.00 : 4a0e8a: 75 e4 jne 4a0e70 : * the last entry : */ : if (!match) : { : item->location.relfilenode = relfilenode; : item->location.location = location; 0.00 : 4a0e8c: 44 89 61 1c mov %r12d,0x1c(%rcx) : } : else if (set) : item->location.location = location; : : /* Move the entry to the front of the LRU list */ : if (item != scan_locations->head) 0.00 : 4a0e90: 48 3b 0e cmp (%rsi),%rcx 0.00 : 4a0e93: 74 37 je 4a0ecc : { : /* unlink */ : if (item == scan_locations->tail) 0.00 : 4a0e95: 48 3b 4e 08 cmp 0x8(%rsi),%rcx 0.00 : 4a0e99: 74 5d je 4a0ef8 : scan_locations->tail = item->prev; : item->prev->next = item->next; 0.00 : 4a0e9b: 48 8b 11 mov (%rcx),%rdx 0.00 : 4a0e9e: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4a0ea2: 48 89 42 08 mov %rax,0x8(%rdx) : if (item->next) 0.00 : 4a0ea6: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 4a0eaa: 48 85 d2 test %rdx,%rdx 0.00 : 4a0ead: 74 06 je 4a0eb5 : item->next->prev = item->prev; 0.00 : 4a0eaf: 48 8b 01 mov (%rcx),%rax 0.00 : 4a0eb2: 48 89 02 mov %rax,(%rdx) : : /* link */ : item->prev = NULL; 0.00 : 4a0eb5: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) : item->next = scan_locations->head; 0.00 : 4a0ebc: 48 8b 06 mov (%rsi),%rax 0.00 : 4a0ebf: 48 89 41 08 mov %rax,0x8(%rcx) : scan_locations->head->prev = item; 0.00 : 4a0ec3: 48 8b 06 mov (%rsi),%rax 0.00 : 4a0ec6: 48 89 08 mov %rcx,(%rax) : scan_locations->head = item; 0.00 : 4a0ec9: 48 89 0e mov %rcx,(%rsi) : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) : { : (void) ss_search(rel->rd_node, location, true); : LWLockRelease(SyncScanLock); 0.00 : 4a0ecc: 48 8b 3d 2d cb 6d 00 mov 0x6dcb2d(%rip),%rdi # b7da00 : elog(LOG, : "SYNC_SCAN: missed update for \"%s\" at %u", : RelationGetRelationName(rel), location); : #endif : } : } 0.00 : 4a0ed3: 5b pop %rbx 0.00 : 4a0ed4: 41 5c pop %r12 0.00 : 4a0ed6: c9 leaveq : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) : { : (void) ss_search(rel->rd_node, location, true); : LWLockRelease(SyncScanLock); 0.00 : 4a0ed7: 48 81 c7 00 03 00 00 add $0x300,%rdi 0.00 : 4a0ede: e9 bd e4 1e 00 jmpq 68f3a0 0.00 : 4a0ee3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * If we reached the end of list and no match was found, take over : * the last entry : */ : if (!match) : { : item->location.relfilenode = relfilenode; 0.00 : 4a0ee8: 89 79 10 mov %edi,0x10(%rcx) 0.00 : 4a0eeb: 44 89 41 14 mov %r8d,0x14(%rcx) 0.00 : 4a0eef: 89 51 18 mov %edx,0x18(%rcx) 0.00 : 4a0ef2: eb 98 jmp 4a0e8c 0.00 : 4a0ef4: 0f 1f 40 00 nopl 0x0(%rax) : /* Move the entry to the front of the LRU list */ : if (item != scan_locations->head) : { : /* unlink */ : if (item == scan_locations->tail) : scan_locations->tail = item->prev; 0.00 : 4a0ef8: 48 8b 01 mov (%rcx),%rax 0.00 : 4a0efb: 48 89 46 08 mov %rax,0x8(%rsi) 0.00 : 4a0eff: eb 9a jmp 4a0e9b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 23.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 16.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 12.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:335 9.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 4.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 3.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:335 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c6b30 : : PG_RETURN_BOOL(dateVal1 <= dateVal2); : } : : Datum : date_gt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 29.37 : 6c6b30: 48 8b 47 28 mov 0x28(%rdi),%rax 9.13 : 6c6b34: 39 47 20 cmp %eax,0x20(%rdi) 16.27 : 6c6b37: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 4.37 : 6c6b38: 48 89 e5 mov %rsp,%rbp : DateADT dateVal1 = PG_GETARG_DATEADT(0); : DateADT dateVal2 = PG_GETARG_DATEADT(1); : : PG_RETURN_BOOL(dateVal1 > dateVal2); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:335 3.57 : 6c6b3b: c9 leaveq : PG_RETURN_BOOL(dateVal1 <= dateVal2); : } : : Datum : date_gt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 23.02 : 6c6b3c: 0f 9f c0 setg %al 14.29 : 6c6b3f: 0f b6 c0 movzbl %al,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 5.56 ??:0 5.56 ??:0 4.86 ??:0 4.86 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 3.47 ??:0 3.47 ??:0 3.47 ??:0 3.47 ??:0 3.47 ??:0 2.78 ??:0 2.78 ??:0 2.78 ??:0 2.78 ??:0 2.78 ??:0 2.78 ??:0 2.78 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 1.39 ??:0 1.39 ??:0 1.39 ??:0 1.39 ??:0 1.39 ??:0 1.39 ??:0 1.39 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 0.69 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000023090 <__gconv_transform_utf8_internal>: ??:0 2.08 : 23090: 41 57 push %r15 2.08 : 23092: 48 8d 47 68 lea 0x68(%rdi),%rax 0.00 : 23096: 41 56 push %r14 0.00 : 23098: 41 55 push %r13 0.00 : 2309a: 41 54 push %r12 0.69 : 2309c: 49 89 cc mov %rcx,%r12 0.69 : 2309f: 55 push %rbp 0.00 : 230a0: 53 push %rbx 0.00 : 230a1: 48 81 ec 98 00 00 00 sub $0x98,%rsp 4.86 : 230a8: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.00 : 230ad: 48 89 f2 mov %rsi,%rdx 0.00 : 230b0: 48 89 74 24 38 mov %rsi,0x38(%rsp) 4.17 : 230b5: 48 83 c2 38 add $0x38,%rdx 0.00 : 230b9: 4c 89 44 24 28 mov %r8,0x28(%rsp) 0.00 : 230be: 4c 89 4c 24 20 mov %r9,0x20(%rsp) 0.00 : 230c3: 48 89 44 24 40 mov %rax,0x40(%rsp) 4.86 : 230c8: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 230cd: 44 8b 4e 10 mov 0x10(%rsi),%r9d 0.00 : 230d1: 8b 9c 24 d0 00 00 00 mov 0xd0(%rsp),%ebx 0.00 : 230d8: 48 c7 44 24 50 00 00 movq $0x0,0x50(%rsp) 0.00 : 230df: 00 00 2.78 : 230e1: 41 f6 c1 01 test $0x1,%r9b 0.00 : 230e5: 75 27 jne 2310e <__gconv_transform_utf8_internal+0x7e> 0.00 : 230e7: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : 230ec: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 230f0: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 230f5: 48 83 7f 68 00 cmpq $0x0,0x68(%rdi) 0.00 : 230fa: 74 12 je 2310e <__gconv_transform_utf8_internal+0x7e> 0.00 : 230fc: 48 c1 c8 11 ror $0x11,%rax 0.00 : 23100: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 23107: 00 00 0.00 : 23109: 48 89 44 24 50 mov %rax,0x50(%rsp) 1.39 : 2310e: 85 db test %ebx,%ebx 0.00 : 23110: 0f 85 f3 0b 00 00 jne 23d09 <__gconv_transform_utf8_internal+0xc79> 0.00 : 23116: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 0.00 : 2311c: 0f 85 4a 0c 00 00 jne 23d6c <__gconv_transform_utf8_internal+0xcdc> ??:0 5.56 : 23122: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 23127: 48 8b 00 mov (%rax),%rax 0.00 : 2312a: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 2312f: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx ??:0 2.78 : 23134: 45 31 ff xor %r15d,%r15d 0.00 : 23137: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 2313d: 44 8b 94 24 d8 00 00 mov 0xd8(%rsp),%r10d 0.00 : 23144: 00 0.00 : 23145: 48 8d 44 24 78 lea 0x78(%rsp),%rax 2.78 : 2314a: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 2314e: 48 c7 44 24 78 00 00 movq $0x0,0x78(%rsp) 0.00 : 23155: 00 00 0.00 : 23157: 4c 0f 45 f8 cmovne %rax,%r15 3.47 : 2315b: 45 85 d2 test %r10d,%r10d 0.00 : 2315e: 48 89 4c 24 60 mov %rcx,0x60(%rsp) 0.69 : 23163: 74 15 je 2317a <__gconv_transform_utf8_internal+0xea> 0.69 : 23165: 48 8b 44 24 38 mov 0x38(%rsp),%rax ??:0 5.56 : 2316a: 4c 8b 58 20 mov 0x20(%rax),%r11 0.00 : 2316e: 41 8b 13 mov (%r11),%edx ??:0 0.69 : 23171: f6 c2 07 test $0x7,%dl 0.00 : 23174: 0f 85 7e 04 00 00 jne 235f8 <__gconv_transform_utf8_internal+0x568> 0.00 : 2317a: 48 8d 44 24 70 lea 0x70(%rsp),%rax 2.78 : 2317f: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 23184: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23188: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 2318d: 4c 8b 32 mov (%rdx),%r14 4.17 : 23190: 4d 39 f4 cmp %r14,%r12 0.00 : 23193: 0f 84 af 03 00 00 je 23548 <__gconv_transform_utf8_internal+0x4b8> 0.00 : 23199: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 2319e: 48 83 c0 04 add $0x4,%rax 0.00 : 231a2: 48 39 44 24 60 cmp %rax,0x60(%rsp) 0.00 : 231a7: 0f 82 83 03 00 00 jb 23530 <__gconv_transform_utf8_internal+0x4a0> 2.08 : 231ad: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 231b2: 45 89 ca mov %r9d,%r10d 0.00 : 231b5: 4d 89 f0 mov %r14,%r8 0.00 : 231b8: 41 bd 04 00 00 00 mov $0x4,%r13d 3.47 : 231be: 41 83 e2 02 and $0x2,%r10d 0.00 : 231c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 231c8: 41 0f b6 38 movzbl (%r8),%edi 0.00 : 231cc: 4d 8d 48 01 lea 0x1(%r8),%r9 1.39 : 231d0: 83 ff 7f cmp $0x7f,%edi 0.00 : 231d3: 0f 86 17 02 00 00 jbe 233f0 <__gconv_transform_utf8_internal+0x360> 0.00 : 231d9: 8d 87 3e ff ff ff lea -0xc2(%rdi),%eax 0.00 : 231df: 83 f8 1d cmp $0x1d,%eax 0.00 : 231e2: 0f 87 28 02 00 00 ja 23410 <__gconv_transform_utf8_internal+0x380> 0.00 : 231e8: 83 e7 1f and $0x1f,%edi 0.00 : 231eb: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 231f0: 4d 8d 0c 08 lea (%r8,%rcx,1),%r9 0.00 : 231f4: be 01 00 00 00 mov $0x1,%esi 0.00 : 231f9: 4d 39 cc cmp %r9,%r12 0.00 : 231fc: 73 62 jae 23260 <__gconv_transform_utf8_internal+0x1d0> 0.00 : 231fe: 49 8d 48 01 lea 0x1(%r8),%rcx 0.00 : 23202: 49 39 cc cmp %rcx,%r12 0.00 : 23205: 0f 86 12 03 00 00 jbe 2351d <__gconv_transform_utf8_internal+0x48d> 0.00 : 2320b: 41 0f b6 40 01 movzbl 0x1(%r8),%eax 0.00 : 23210: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23215: 83 c0 80 add $0xffffff80,%eax 0.00 : 23218: 0f 85 ff 02 00 00 jne 2351d <__gconv_transform_utf8_internal+0x48d> 0.00 : 2321e: 49 8d 50 02 lea 0x2(%r8),%rdx 0.00 : 23222: eb 15 jmp 23239 <__gconv_transform_utf8_internal+0x1a9> 0.00 : 23224: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23228: 0f b6 02 movzbl (%rdx),%eax 0.00 : 2322b: 48 83 c2 01 add $0x1,%rdx 0.00 : 2322f: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23234: 83 c0 80 add $0xffffff80,%eax 0.00 : 23237: 75 0c jne 23245 <__gconv_transform_utf8_internal+0x1b5> 0.00 : 23239: 48 83 c6 01 add $0x1,%rsi 0.00 : 2323d: 49 39 d4 cmp %rdx,%r12 0.00 : 23240: 48 89 d1 mov %rdx,%rcx 0.00 : 23243: 77 e3 ja 23228 <__gconv_transform_utf8_internal+0x198> 0.00 : 23245: 4c 39 e1 cmp %r12,%rcx 0.00 : 23248: 75 66 jne 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2324a: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 2324f: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 23255: e9 98 00 00 00 jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 2325a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 23260: 41 0f b6 14 30 movzbl (%r8,%rsi,1),%edx 0.00 : 23265: 89 d0 mov %edx,%eax 0.00 : 23267: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 2326c: 83 c0 80 add $0xffffff80,%eax 0.00 : 2326f: 0f 85 2b 02 00 00 jne 234a0 <__gconv_transform_utf8_internal+0x410> 0.00 : 23275: c1 e7 06 shl $0x6,%edi 0.00 : 23278: 83 e2 3f and $0x3f,%edx 0.00 : 2327b: 48 83 c6 01 add $0x1,%rsi 0.00 : 2327f: 09 d7 or %edx,%edi 0.00 : 23281: 48 39 f1 cmp %rsi,%rcx 0.00 : 23284: 77 da ja 23260 <__gconv_transform_utf8_internal+0x1d0> 0.00 : 23286: 48 83 f9 02 cmp $0x2,%rcx 0.00 : 2328a: 74 0c je 23298 <__gconv_transform_utf8_internal+0x208> 0.00 : 2328c: 8d 4c 89 fc lea -0x4(%rcx,%rcx,4),%ecx 0.00 : 23290: 89 f8 mov %edi,%eax 0.00 : 23292: d3 e8 shr %cl,%eax 0.00 : 23294: 85 c0 test %eax,%eax 0.00 : 23296: 74 18 je 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 23298: 8d 87 00 28 ff ff lea -0xd800(%rdi),%eax 0.00 : 2329e: 3d ff 07 00 00 cmp $0x7ff,%eax 0.00 : 232a3: 0f 87 47 01 00 00 ja 233f0 <__gconv_transform_utf8_internal+0x360> 0.00 : 232a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 232b0: 4d 85 ff test %r15,%r15 0.00 : 232b3: 0f 84 d4 01 00 00 je 2348d <__gconv_transform_utf8_internal+0x3fd> 0.00 : 232b9: 45 85 d2 test %r10d,%r10d 0.00 : 232bc: 0f 84 cb 01 00 00 je 2348d <__gconv_transform_utf8_internal+0x3fd> 0.00 : 232c2: 49 01 f0 add %rsi,%r8 0.00 : 232c5: 49 83 07 01 addq $0x1,(%r15) 0.00 : 232c9: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 232cf: 4d 39 c4 cmp %r8,%r12 0.00 : 232d2: 0f 84 2b 01 00 00 je 23403 <__gconv_transform_utf8_internal+0x373> 0.00 : 232d8: 48 8d 45 04 lea 0x4(%rbp),%rax 0.00 : 232dc: 48 39 44 24 60 cmp %rax,0x60(%rsp) 0.00 : 232e1: 0f 83 e1 fe ff ff jae 231c8 <__gconv_transform_utf8_internal+0x138> 0.00 : 232e7: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 2.78 : 232ec: 41 bd 05 00 00 00 mov $0x5,%r13d 0.69 : 232f2: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 232f7: 4c 89 01 mov %r8,(%rcx) 0.69 : 232fa: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 1.39 : 23300: 0f 85 da 04 00 00 jne 237e0 <__gconv_transform_utf8_internal+0x750> 0.00 : 23306: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 2330b: 48 8b 59 30 mov 0x30(%rcx),%rbx 2.08 : 2330f: 48 85 db test %rbx,%rbx 0.00 : 23312: 74 35 je 23349 <__gconv_transform_utf8_internal+0x2b9> 0.00 : 23314: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23318: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 2331c: 48 85 ff test %rdi,%rdi 0.00 : 2331f: 74 1f je 23340 <__gconv_transform_utf8_internal+0x2b0> 0.00 : 23321: e8 ea f9 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 23326: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 2332b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 2332f: 49 89 e8 mov %rbp,%r8 0.00 : 23332: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 23337: 4c 89 f6 mov %r14,%rsi 0.00 : 2333a: 48 8b 10 mov (%rax),%rdx 0.00 : 2333d: ff 53 08 callq *0x8(%rbx) 0.00 : 23340: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 23344: 48 85 db test %rbx,%rbx 0.00 : 23347: 75 cf jne 23318 <__gconv_transform_utf8_internal+0x288> 2.08 : 23349: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 2334e: 83 42 14 01 addl $0x1,0x14(%rdx) 1.39 : 23352: f6 42 10 01 testb $0x1,0x10(%rdx) 3.47 : 23356: 0f 85 96 04 00 00 jne 237f2 <__gconv_transform_utf8_internal+0x762> 0.00 : 2335c: 48 3b 6c 24 58 cmp 0x58(%rsp),%rbp 0.00 : 23361: 0f 86 83 01 00 00 jbe 234ea <__gconv_transform_utf8_internal+0x45a> 0.00 : 23367: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 2336c: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 23371: 48 8b 01 mov (%rcx),%rax 0.00 : 23374: 48 89 44 24 70 mov %rax,0x70(%rsp) 0.00 : 23379: e8 92 f9 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 2337e: 8b 84 24 d8 00 00 00 mov 0xd8(%rsp),%eax 0.00 : 23385: 45 31 c0 xor %r8d,%r8d 0.00 : 23388: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 2338f: 4c 8b 4c 24 20 mov 0x20(%rsp),%r9 0.00 : 23394: 48 89 e9 mov %rbp,%rcx 0.00 : 23397: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 2339c: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 233a1: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 233a6: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 233aa: ff 54 24 50 callq *0x50(%rsp) 0.00 : 233ae: 83 f8 04 cmp $0x4,%eax 0.00 : 233b1: 41 89 c0 mov %eax,%r8d 0.00 : 233b4: 0f 84 26 01 00 00 je 234e0 <__gconv_transform_utf8_internal+0x450> 0.00 : 233ba: 48 39 6c 24 70 cmp %rbp,0x70(%rsp) 0.00 : 233bf: 0f 85 d9 05 00 00 jne 2399e <__gconv_transform_utf8_internal+0x90e> 0.00 : 233c5: 45 85 c0 test %r8d,%r8d 0.00 : 233c8: 0f 85 7e 0a 00 00 jne 23e4c <__gconv_transform_utf8_internal+0xdbc> 0.00 : 233ce: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 233d3: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 233d8: 48 8b 09 mov (%rcx),%rcx 0.00 : 233db: 48 89 4c 24 58 mov %rcx,0x58(%rsp) 0.00 : 233e0: 44 8b 48 10 mov 0x10(%rax),%r9d 0.00 : 233e4: e9 9f fd ff ff jmpq 23188 <__gconv_transform_utf8_internal+0xf8> 0.00 : 233e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 1.39 : 233f0: 4d 89 c8 mov %r9,%r8 0.69 : 233f3: 89 7d 00 mov %edi,0x0(%rbp) 0.69 : 233f6: 48 83 c5 04 add $0x4,%rbp 4.17 : 233fa: 4d 39 c4 cmp %r8,%r12 0.00 : 233fd: 0f 85 d5 fe ff ff jne 232d8 <__gconv_transform_utf8_internal+0x248> 0.00 : 23403: 4d 89 e0 mov %r12,%r8 0.00 : 23406: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 1.39 : 2340b: e9 e2 fe ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 23410: 89 f8 mov %edi,%eax 0.00 : 23412: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23417: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 2341c: 0f 84 8e 00 00 00 je 234b0 <__gconv_transform_utf8_internal+0x420> 0.00 : 23422: 89 f8 mov %edi,%eax 0.00 : 23424: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23429: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 2342e: 0f 84 8c 00 00 00 je 234c0 <__gconv_transform_utf8_internal+0x430> 0.00 : 23434: 89 f8 mov %edi,%eax 0.00 : 23436: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 2343b: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23440: 0f 84 8a 00 00 00 je 234d0 <__gconv_transform_utf8_internal+0x440> 0.00 : 23446: 89 f8 mov %edi,%eax 0.00 : 23448: 31 f6 xor %esi,%esi 0.00 : 2344a: 25 fe 00 00 00 and $0xfe,%eax 0.00 : 2344f: 3d fc 00 00 00 cmp $0xfc,%eax 0.00 : 23454: 0f 84 b6 00 00 00 je 23510 <__gconv_transform_utf8_internal+0x480> 0.00 : 2345a: 48 83 c6 01 add $0x1,%rsi 0.00 : 2345e: 49 8d 04 30 lea (%r8,%rsi,1),%rax 0.00 : 23462: 49 39 c4 cmp %rax,%r12 0.00 : 23465: 0f 86 45 fe ff ff jbe 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2346b: 41 0f b6 04 30 movzbl (%r8,%rsi,1),%eax 0.00 : 23470: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23475: 83 c0 80 add $0xffffff80,%eax 0.00 : 23478: 0f 85 32 fe ff ff jne 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2347e: 48 83 fe 04 cmp $0x4,%rsi 0.00 : 23482: 76 d6 jbe 2345a <__gconv_transform_utf8_internal+0x3ca> 0.00 : 23484: 4d 85 ff test %r15,%r15 0.00 : 23487: 0f 85 2c fe ff ff jne 232b9 <__gconv_transform_utf8_internal+0x229> 0.00 : 2348d: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 23492: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 23498: e9 55 fe ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 2349d: 0f 1f 00 nopl (%rax) 0.00 : 234a0: 48 39 ce cmp %rcx,%rsi 0.00 : 234a3: 0f 82 07 fe ff ff jb 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 234a9: e9 d8 fd ff ff jmpq 23286 <__gconv_transform_utf8_internal+0x1f6> 0.00 : 234ae: 66 90 xchg %ax,%ax 0.00 : 234b0: 83 e7 0f and $0xf,%edi 0.00 : 234b3: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 234b8: e9 33 fd ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 234bd: 0f 1f 00 nopl (%rax) 0.00 : 234c0: 83 e7 07 and $0x7,%edi 0.00 : 234c3: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 234c8: e9 23 fd ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 234cd: 0f 1f 00 nopl (%rax) 0.00 : 234d0: 83 e7 03 and $0x3,%edi 0.00 : 234d3: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 234d8: e9 13 fd ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 234dd: 0f 1f 00 nopl (%rax) 0.00 : 234e0: 41 83 fd 05 cmp $0x5,%r13d 0.00 : 234e4: 0f 84 e4 fe ff ff je 233ce <__gconv_transform_utf8_internal+0x33e> 3.47 : 234ea: 44 8b 8c 24 d8 00 00 mov 0xd8(%rsp),%r9d 0.00 : 234f1: 00 0.00 : 234f2: 45 85 c9 test %r9d,%r9d 0.00 : 234f5: 75 69 jne 23560 <__gconv_transform_utf8_internal+0x4d0> 1.39 : 234f7: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 234fe: 44 89 e8 mov %r13d,%eax 0.00 : 23501: 5b pop %rbx 0.00 : 23502: 5d pop %rbp 2.78 : 23503: 41 5c pop %r12 0.00 : 23505: 41 5d pop %r13 0.00 : 23507: 41 5e pop %r14 0.00 : 23509: 41 5f pop %r15 3.47 : 2350b: c3 retq 0.00 : 2350c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23510: 83 e7 01 and $0x1,%edi 0.00 : 23513: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 23518: e9 d3 fc ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 2351d: 4c 39 e1 cmp %r12,%rcx 0.00 : 23520: be 01 00 00 00 mov $0x1,%esi 0.00 : 23525: 0f 85 85 fd ff ff jne 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2352b: e9 1a fd ff ff jmpq 2324a <__gconv_transform_utf8_internal+0x1ba> 0.00 : 23530: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 23535: 4d 89 f0 mov %r14,%r8 0.00 : 23538: 41 bd 05 00 00 00 mov $0x5,%r13d 0.00 : 2353e: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 23543: e9 aa fd ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 23548: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 2354d: 4d 89 e0 mov %r12,%r8 0.00 : 23550: 41 bd 04 00 00 00 mov $0x4,%r13d 0.00 : 23556: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 2355b: e9 92 fd ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 2.08 : 23560: 41 83 fd 07 cmp $0x7,%r13d 0.00 : 23564: 75 91 jne 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23566: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 2356b: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 23570: 48 8b 01 mov (%rcx),%rax 0.00 : 23573: 48 8b 72 20 mov 0x20(%rdx),%rsi 0.00 : 23577: 44 89 e1 mov %r12d,%ecx 0.00 : 2357a: 0f b6 10 movzbl (%rax),%edx 0.00 : 2357d: 29 c1 sub %eax,%ecx 0.00 : 2357f: 89 0e mov %ecx,(%rsi) 0.00 : 23581: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 23587: 83 f8 1d cmp $0x1d,%eax 0.00 : 2358a: 0f 87 36 06 00 00 ja 23bc6 <__gconv_transform_utf8_internal+0xb36> 0.00 : 23590: 89 d7 mov %edx,%edi 0.00 : 23592: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 23598: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 2359d: 83 e7 1f and $0x1f,%edi 0.00 : 235a0: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 235a5: 4c 8b 00 mov (%rax),%r8 0.00 : 235a8: 49 8d 50 01 lea 0x1(%r8),%rdx 0.00 : 235ac: 49 39 d4 cmp %rdx,%r12 0.00 : 235af: 48 89 10 mov %rdx,(%rax) 0.00 : 235b2: 76 26 jbe 235da <__gconv_transform_utf8_internal+0x54a> 0.00 : 235b4: 89 f8 mov %edi,%eax 0.00 : 235b6: 0f b6 3a movzbl (%rdx),%edi 0.00 : 235b9: 48 83 c2 01 add $0x1,%rdx 0.00 : 235bd: c1 e0 06 shl $0x6,%eax 0.00 : 235c0: 83 e7 3f and $0x3f,%edi 0.00 : 235c3: 09 c7 or %eax,%edi 0.00 : 235c5: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 235ca: 49 39 d4 cmp %rdx,%r12 0.00 : 235cd: 48 89 10 mov %rdx,(%rax) 0.00 : 235d0: 77 e2 ja 235b4 <__gconv_transform_utf8_internal+0x524> 0.00 : 235d2: 4d 29 e0 sub %r12,%r8 0.00 : 235d5: 49 8d 4c 08 01 lea 0x1(%r8,%rcx,1),%rcx 0.00 : 235da: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : 235de: 44 89 c8 mov %r9d,%eax 0.00 : 235e1: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 235e7: c1 e0 08 shl $0x8,%eax 0.00 : 235ea: 09 06 or %eax,(%rsi) 0.00 : 235ec: 01 c9 add %ecx,%ecx 0.00 : 235ee: d3 e7 shl %cl,%edi 0.00 : 235f0: 89 7e 04 mov %edi,0x4(%rsi) 0.00 : 235f3: e9 ff fe ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 235f8: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 0.00 : 235fe: 0f 85 e6 06 00 00 jne 23cea <__gconv_transform_utf8_internal+0xc5a> 0.00 : 23604: 89 d0 mov %edx,%eax 0.00 : 23606: 0f b6 f2 movzbl %dl,%esi 0.00 : 23609: 48 8d 15 d7 33 10 00 lea 0x1033d7(%rip),%rdx # 1269e7 0.00 : 23610: c1 f8 08 sar $0x8,%eax 0.00 : 23613: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 23618: 45 8b 43 04 mov 0x4(%r11),%r8d 0.00 : 2361c: 48 98 cltq 0.00 : 2361e: 48 8d 9c 24 80 00 00 lea 0x80(%rsp),%rbx 0.00 : 23625: 00 0.00 : 23626: 0f b6 54 02 fe movzbl -0x2(%rdx,%rax,1),%edx 0.00 : 2362b: 48 8b 39 mov (%rcx),%rdi 0.00 : 2362e: 88 94 24 80 00 00 00 mov %dl,0x80(%rsp) 0.00 : 23635: 48 8d 50 ff lea -0x1(%rax),%rdx 0.00 : 23639: 48 8d 0c 13 lea (%rbx,%rdx,1),%rcx 0.00 : 2363d: eb 04 jmp 23643 <__gconv_transform_utf8_internal+0x5b3> 0.00 : 2363f: 48 83 ea 01 sub $0x1,%rdx 0.00 : 23643: 48 39 d6 cmp %rdx,%rsi 0.00 : 23646: 76 0b jbe 23653 <__gconv_transform_utf8_internal+0x5c3> 0.00 : 23648: 44 89 c0 mov %r8d,%eax 0.00 : 2364b: 83 e0 3f and $0x3f,%eax 0.00 : 2364e: 83 c8 80 or $0xffffff80,%eax 0.00 : 23651: 88 01 mov %al,(%rcx) 0.00 : 23653: 41 c1 e8 06 shr $0x6,%r8d 0.00 : 23657: 48 83 e9 01 sub $0x1,%rcx 0.00 : 2365b: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 2365f: 77 de ja 2363f <__gconv_transform_utf8_internal+0x5af> 0.00 : 23661: 48 89 f8 mov %rdi,%rax 0.00 : 23664: 44 08 84 24 80 00 00 or %r8b,0x80(%rsp) 0.00 : 2366b: 00 0.00 : 2366c: 48 29 f0 sub %rsi,%rax 0.00 : 2366f: 48 83 c0 01 add $0x1,%rax 0.00 : 23673: 49 39 c4 cmp %rax,%r12 0.00 : 23676: 0f 82 90 01 00 00 jb 2380c <__gconv_transform_utf8_internal+0x77c> 0.00 : 2367c: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 23681: 41 bd 05 00 00 00 mov $0x5,%r13d 0.00 : 23687: 48 83 c5 04 add $0x4,%rbp 0.00 : 2368b: 48 39 6c 24 60 cmp %rbp,0x60(%rsp) 0.00 : 23690: 0f 82 61 fe ff ff jb 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23696: 48 8d 14 33 lea (%rbx,%rsi,1),%rdx 0.00 : 2369a: eb 0d jmp 236a9 <__gconv_transform_utf8_internal+0x619> 0.00 : 2369c: 48 83 c7 01 add $0x1,%rdi 0.00 : 236a0: 48 83 c2 01 add $0x1,%rdx 0.00 : 236a4: 49 39 fc cmp %rdi,%r12 0.00 : 236a7: 76 0f jbe 236b8 <__gconv_transform_utf8_internal+0x628> 0.00 : 236a9: 0f b6 07 movzbl (%rdi),%eax 0.00 : 236ac: 48 83 c6 01 add $0x1,%rsi 0.00 : 236b0: 48 83 fe 05 cmp $0x5,%rsi 0.00 : 236b4: 88 02 mov %al,(%rdx) 0.00 : 236b6: 76 e4 jbe 2369c <__gconv_transform_utf8_internal+0x60c> 0.00 : 236b8: 0f b6 94 24 80 00 00 movzbl 0x80(%rsp),%edx 0.00 : 236bf: 00 0.00 : 236c0: 4c 8d 14 33 lea (%rbx,%rsi,1),%r10 0.00 : 236c4: 4c 8d 43 01 lea 0x1(%rbx),%r8 0.00 : 236c8: 83 fa 7f cmp $0x7f,%edx 0.00 : 236cb: 0f 86 80 02 00 00 jbe 23951 <__gconv_transform_utf8_internal+0x8c1> 0.00 : 236d1: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 236d7: 83 f8 1d cmp $0x1d,%eax 0.00 : 236da: 0f 87 9e 06 00 00 ja 23d7e <__gconv_transform_utf8_internal+0xcee> 0.00 : 236e0: 83 e2 1f and $0x1f,%edx 0.00 : 236e3: be 02 00 00 00 mov $0x2,%esi 0.00 : 236e8: 4c 8d 04 33 lea (%rbx,%rsi,1),%r8 0.00 : 236ec: bf 01 00 00 00 mov $0x1,%edi 0.00 : 236f1: 4d 39 c2 cmp %r8,%r10 0.00 : 236f4: 0f 83 17 02 00 00 jae 23911 <__gconv_transform_utf8_internal+0x881> 0.00 : 236fa: 48 8d 53 01 lea 0x1(%rbx),%rdx 0.00 : 236fe: 49 39 d2 cmp %rdx,%r10 0.00 : 23701: 48 89 d1 mov %rdx,%rcx 0.00 : 23704: 76 38 jbe 2373e <__gconv_transform_utf8_internal+0x6ae> 0.00 : 23706: 0f b6 84 24 81 00 00 movzbl 0x81(%rsp),%eax 0.00 : 2370d: 00 0.00 : 2370e: 48 89 d1 mov %rdx,%rcx 0.00 : 23711: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23716: 83 c0 80 add $0xffffff80,%eax 0.00 : 23719: 75 23 jne 2373e <__gconv_transform_utf8_internal+0x6ae> 0.00 : 2371b: 48 8d 53 02 lea 0x2(%rbx),%rdx 0.00 : 2371f: eb 11 jmp 23732 <__gconv_transform_utf8_internal+0x6a2> 0.00 : 23721: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23724: 48 83 c2 01 add $0x1,%rdx 0.00 : 23728: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 2372d: 83 c0 80 add $0xffffff80,%eax 0.00 : 23730: 75 0c jne 2373e <__gconv_transform_utf8_internal+0x6ae> 0.00 : 23732: 48 83 c7 01 add $0x1,%rdi 0.00 : 23736: 49 39 d2 cmp %rdx,%r10 0.00 : 23739: 48 89 d1 mov %rdx,%rcx 0.00 : 2373c: 77 e3 ja 23721 <__gconv_transform_utf8_internal+0x691> 0.00 : 2373e: 4c 39 d1 cmp %r10,%rcx 0.00 : 23741: 0f 85 94 06 00 00 jne 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23747: 48 8d 43 06 lea 0x6(%rbx),%rax 0.00 : 2374b: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 23751: 48 39 c1 cmp %rax,%rcx 0.00 : 23754: 0f 84 a1 07 00 00 je 23efb <__gconv_transform_utf8_internal+0xe6b> 0.00 : 2375a: 49 63 13 movslq (%r11),%rdx 0.00 : 2375d: 4c 89 d0 mov %r10,%rax 0.00 : 23760: 45 89 d0 mov %r10d,%r8d 0.00 : 23763: 48 29 d8 sub %rbx,%rax 0.00 : 23766: 41 29 d8 sub %ebx,%r8d 0.00 : 23769: 83 e2 07 and $0x7,%edx 0.00 : 2376c: 48 29 d0 sub %rdx,%rax 0.00 : 2376f: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 23774: 48 01 02 add %rax,(%rdx) 0.00 : 23777: 0f b6 94 24 80 00 00 movzbl 0x80(%rsp),%edx 0.00 : 2377e: 00 0.00 : 2377f: 45 89 03 mov %r8d,(%r11) 0.00 : 23782: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 23788: 83 f8 1d cmp $0x1d,%eax 0.00 : 2378b: 0f 87 2c 07 00 00 ja 23ebd <__gconv_transform_utf8_internal+0xe2d> 0.00 : 23791: 89 d6 mov %edx,%esi 0.00 : 23793: bf 02 00 00 00 mov $0x2,%edi 0.00 : 23798: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 2379d: 83 e6 1f and $0x1f,%esi 0.00 : 237a0: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 237a4: 49 39 c2 cmp %rax,%r10 0.00 : 237a7: 76 1b jbe 237c4 <__gconv_transform_utf8_internal+0x734> 0.00 : 237a9: 48 89 c2 mov %rax,%rdx 0.00 : 237ac: 0f b6 02 movzbl (%rdx),%eax 0.00 : 237af: c1 e6 06 shl $0x6,%esi 0.00 : 237b2: 48 83 c2 01 add $0x1,%rdx 0.00 : 237b6: 48 83 e9 01 sub $0x1,%rcx 0.00 : 237ba: 83 e0 3f and $0x3f,%eax 0.00 : 237bd: 09 c6 or %eax,%esi 0.00 : 237bf: 49 39 d2 cmp %rdx,%r10 0.00 : 237c2: 77 e8 ja 237ac <__gconv_transform_utf8_internal+0x71c> 0.00 : 237c4: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : 237c8: 89 f8 mov %edi,%eax 0.00 : 237ca: c1 e0 08 shl $0x8,%eax 0.00 : 237cd: 01 c9 add %ecx,%ecx 0.00 : 237cf: 44 09 c0 or %r8d,%eax 0.00 : 237d2: d3 e6 shl %cl,%esi 0.00 : 237d4: 41 89 03 mov %eax,(%r11) 0.00 : 237d7: 41 89 73 04 mov %esi,0x4(%r11) 0.00 : 237db: e9 17 fd ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 237e0: 48 8b 54 24 68 mov 0x68(%rsp),%rdx 0.00 : 237e5: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 237ea: 48 89 10 mov %rdx,(%rax) 0.00 : 237ed: e9 05 fd ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.69 : 237f2: 48 8b 4c 24 68 mov 0x68(%rsp),%rcx 0.69 : 237f7: 48 89 0a mov %rcx,(%rdx) 0.00 : 237fa: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 2.78 : 237ff: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : 23804: 48 01 02 add %rax,(%rdx) 0.00 : 23807: e9 de fc ff ff jmpq 234ea <__gconv_transform_utf8_internal+0x45a> 0.00 : 2380c: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 23811: 49 39 fc cmp %rdi,%r12 0.00 : 23814: 4c 89 20 mov %r12,(%rax) 0.00 : 23817: 76 20 jbe 23839 <__gconv_transform_utf8_internal+0x7a9> 0.00 : 23819: 48 8d 0c 33 lea (%rbx,%rsi,1),%rcx 0.00 : 2381d: 48 89 fa mov %rdi,%rdx 0.00 : 23820: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23823: 48 83 c2 01 add $0x1,%rdx 0.00 : 23827: 88 01 mov %al,(%rcx) 0.00 : 23829: 48 83 c1 01 add $0x1,%rcx 0.00 : 2382d: 49 39 d4 cmp %rdx,%r12 0.00 : 23830: 77 ee ja 23820 <__gconv_transform_utf8_internal+0x790> 0.00 : 23832: 49 29 fc sub %rdi,%r12 0.00 : 23835: 49 8d 34 34 lea (%r12,%rsi,1),%rsi 0.00 : 23839: 0f b6 94 24 80 00 00 movzbl 0x80(%rsp),%edx 0.00 : 23840: 00 0.00 : 23841: 4c 8d 04 33 lea (%rbx,%rsi,1),%r8 0.00 : 23845: 45 89 c1 mov %r8d,%r9d 0.00 : 23848: 41 29 d9 sub %ebx,%r9d 0.00 : 2384b: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 23851: 45 89 0b mov %r9d,(%r11) 0.00 : 23854: 83 f8 1d cmp $0x1d,%eax 0.00 : 23857: 77 55 ja 238ae <__gconv_transform_utf8_internal+0x81e> 0.00 : 23859: 89 d6 mov %edx,%esi 0.00 : 2385b: bf 02 00 00 00 mov $0x2,%edi 0.00 : 23860: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 23865: 83 e6 1f and $0x1f,%esi 0.00 : 23868: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 2386c: 49 39 c0 cmp %rax,%r8 0.00 : 2386f: 76 1b jbe 2388c <__gconv_transform_utf8_internal+0x7fc> 0.00 : 23871: 48 89 c2 mov %rax,%rdx 0.00 : 23874: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23877: c1 e6 06 shl $0x6,%esi 0.00 : 2387a: 48 83 c2 01 add $0x1,%rdx 0.00 : 2387e: 48 83 e9 01 sub $0x1,%rcx 0.00 : 23882: 83 e0 3f and $0x3f,%eax 0.00 : 23885: 09 c6 or %eax,%esi 0.00 : 23887: 49 39 d0 cmp %rdx,%r8 0.00 : 2388a: 77 e8 ja 23874 <__gconv_transform_utf8_internal+0x7e4> 0.00 : 2388c: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : 23890: 89 f8 mov %edi,%eax 0.00 : 23892: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 23898: c1 e0 08 shl $0x8,%eax 0.00 : 2389b: 01 c9 add %ecx,%ecx 0.00 : 2389d: 44 09 c8 or %r9d,%eax 0.00 : 238a0: d3 e6 shl %cl,%esi 0.00 : 238a2: 41 89 03 mov %eax,(%r11) 0.00 : 238a5: 41 89 73 04 mov %esi,0x4(%r11) 0.00 : 238a9: e9 49 fc ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 238ae: 89 d0 mov %edx,%eax 0.00 : 238b0: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 238b5: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 238ba: 0f 84 16 04 00 00 je 23cd6 <__gconv_transform_utf8_internal+0xc46> 0.00 : 238c0: 89 d0 mov %edx,%eax 0.00 : 238c2: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 238c7: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 238cc: 0f 84 f0 03 00 00 je 23cc2 <__gconv_transform_utf8_internal+0xc32> 0.00 : 238d2: 89 d0 mov %edx,%eax 0.00 : 238d4: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 238d9: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 238de: 0f 84 8f 05 00 00 je 23e73 <__gconv_transform_utf8_internal+0xde3> 0.00 : 238e4: 89 d6 mov %edx,%esi 0.00 : 238e6: bf 06 00 00 00 mov $0x6,%edi 0.00 : 238eb: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 238f0: 83 e6 01 and $0x1,%esi 0.00 : 238f3: e9 70 ff ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 238f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 238ff: 00 0.00 : 23900: c1 e2 06 shl $0x6,%edx 0.00 : 23903: 83 e1 3f and $0x3f,%ecx 0.00 : 23906: 48 83 c7 01 add $0x1,%rdi 0.00 : 2390a: 09 ca or %ecx,%edx 0.00 : 2390c: 48 39 fe cmp %rdi,%rsi 0.00 : 2390f: 76 19 jbe 2392a <__gconv_transform_utf8_internal+0x89a> 0.00 : 23911: 0f b6 0c 3b movzbl (%rbx,%rdi,1),%ecx 0.00 : 23915: 89 c8 mov %ecx,%eax 0.00 : 23917: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 2391c: 83 c0 80 add $0xffffff80,%eax 0.00 : 2391f: 74 df je 23900 <__gconv_transform_utf8_internal+0x870> 0.00 : 23921: 48 39 f7 cmp %rsi,%rdi 0.00 : 23924: 0f 82 b1 04 00 00 jb 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 2392a: 48 83 fe 02 cmp $0x2,%rsi 0.00 : 2392e: 74 10 je 23940 <__gconv_transform_utf8_internal+0x8b0> 0.00 : 23930: 8d 4c b6 fc lea -0x4(%rsi,%rsi,4),%ecx 0.00 : 23934: 89 d0 mov %edx,%eax 0.00 : 23936: d3 e8 shr %cl,%eax 0.00 : 23938: 85 c0 test %eax,%eax 0.00 : 2393a: 0f 84 9b 04 00 00 je 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23940: 8d 82 00 28 ff ff lea -0xd800(%rdx),%eax 0.00 : 23946: 3d ff 07 00 00 cmp $0x7ff,%eax 0.00 : 2394b: 0f 86 8a 04 00 00 jbe 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23951: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 23956: 45 31 ed xor %r13d,%r13d 0.00 : 23959: 89 11 mov %edx,(%rcx) 0.00 : 2395b: 49 39 d8 cmp %rbx,%r8 0.00 : 2395e: 0f 84 42 05 00 00 je 23ea6 <__gconv_transform_utf8_internal+0xe16> 0.00 : 23964: 49 63 13 movslq (%r11),%rdx 0.00 : 23967: 4c 89 c0 mov %r8,%rax 0.00 : 2396a: 48 29 d8 sub %rbx,%rax 0.00 : 2396d: 83 e2 07 and $0x7,%edx 0.00 : 23970: 48 39 d0 cmp %rdx,%rax 0.00 : 23973: 0f 8e 0e 05 00 00 jle 23e87 <__gconv_transform_utf8_internal+0xdf7> 0.00 : 23979: 48 29 d0 sub %rdx,%rax 0.00 : 2397c: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 23981: 48 01 02 add %rax,(%rdx) 0.00 : 23984: 41 c7 03 00 00 00 00 movl $0x0,(%r11) 0.00 : 2398b: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 23990: 48 89 6c 24 58 mov %rbp,0x58(%rsp) 0.00 : 23995: 44 8b 49 10 mov 0x10(%rcx),%r9d 0.00 : 23999: e9 dc f7 ff ff jmpq 2317a <__gconv_transform_utf8_internal+0xea> 0.00 : 2399e: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 239a3: 4d 39 f4 cmp %r14,%r12 0.00 : 239a6: 41 ba 04 00 00 00 mov $0x4,%r10d 0.00 : 239ac: 4c 89 32 mov %r14,(%rdx) 0.00 : 239af: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 239b4: 48 8b 5c 24 70 mov 0x70(%rsp),%rbx 0.00 : 239b9: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 0.00 : 239be: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : 239c1: 0f 84 e9 00 00 00 je 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 239c7: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 239cc: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 0.00 : 239d1: 41 ba 04 00 00 00 mov $0x4,%r10d 0.00 : 239d7: 48 83 c0 04 add $0x4,%rax 0.00 : 239db: 48 39 c3 cmp %rax,%rbx 0.00 : 239de: 0f 82 90 02 00 00 jb 23c74 <__gconv_transform_utf8_internal+0xbe4> 0.00 : 239e4: 89 d5 mov %edx,%ebp 0.00 : 239e6: 83 e5 02 and $0x2,%ebp 0.00 : 239e9: 41 0f b6 36 movzbl (%r14),%esi 0.00 : 239ed: 4d 8d 4e 01 lea 0x1(%r14),%r9 0.00 : 239f1: 83 fe 7f cmp $0x7f,%esi 0.00 : 239f4: 0f 86 48 01 00 00 jbe 23b42 <__gconv_transform_utf8_internal+0xab2> 0.00 : 239fa: 8d 86 3e ff ff ff lea -0xc2(%rsi),%eax 0.00 : 23a00: 83 f8 1d cmp $0x1d,%eax 0.00 : 23a03: 0f 87 48 01 00 00 ja 23b51 <__gconv_transform_utf8_internal+0xac1> 0.00 : 23a09: 83 e6 1f and $0x1f,%esi 0.00 : 23a0c: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23a11: 4d 8d 0c 0e lea (%r14,%rcx,1),%r9 0.00 : 23a15: bf 01 00 00 00 mov $0x1,%edi 0.00 : 23a1a: 4d 39 cc cmp %r9,%r12 0.00 : 23a1d: 0f 83 de 00 00 00 jae 23b01 <__gconv_transform_utf8_internal+0xa71> 0.00 : 23a23: 49 8d 4e 01 lea 0x1(%r14),%rcx 0.00 : 23a27: 49 39 cc cmp %rcx,%r12 0.00 : 23a2a: 0f 86 3a 02 00 00 jbe 23c6a <__gconv_transform_utf8_internal+0xbda> 0.00 : 23a30: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 23a35: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23a3a: 83 c0 80 add $0xffffff80,%eax 0.00 : 23a3d: 0f 85 27 02 00 00 jne 23c6a <__gconv_transform_utf8_internal+0xbda> 0.00 : 23a43: 49 8d 56 02 lea 0x2(%r14),%rdx 0.00 : 23a47: eb 18 jmp 23a61 <__gconv_transform_utf8_internal+0x9d1> 0.00 : 23a49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 23a50: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23a53: 48 83 c2 01 add $0x1,%rdx 0.00 : 23a57: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23a5c: 83 c0 80 add $0xffffff80,%eax 0.00 : 23a5f: 75 0c jne 23a6d <__gconv_transform_utf8_internal+0x9dd> 0.00 : 23a61: 48 83 c7 01 add $0x1,%rdi 0.00 : 23a65: 49 39 d4 cmp %rdx,%r12 0.00 : 23a68: 48 89 d1 mov %rdx,%rcx 0.00 : 23a6b: 77 e3 ja 23a50 <__gconv_transform_utf8_internal+0x9c0> 0.00 : 23a6d: 4c 39 e1 cmp %r12,%rcx 0.00 : 23a70: 0f 84 e8 04 00 00 je 23f5e <__gconv_transform_utf8_internal+0xece> 0.00 : 23a76: 4d 85 ff test %r15,%r15 0.00 : 23a79: 0f 84 91 01 00 00 je 23c10 <__gconv_transform_utf8_internal+0xb80> 0.00 : 23a7f: 85 ed test %ebp,%ebp 0.00 : 23a81: 0f 84 89 01 00 00 je 23c10 <__gconv_transform_utf8_internal+0xb80> 0.00 : 23a87: 49 83 07 01 addq $0x1,(%r15) 0.00 : 23a8b: 49 01 fe add %rdi,%r14 0.00 : 23a8e: 41 ba 06 00 00 00 mov $0x6,%r10d 0.00 : 23a94: 4d 39 f4 cmp %r14,%r12 0.00 : 23a97: 0f 84 b9 04 00 00 je 23f56 <__gconv_transform_utf8_internal+0xec6> 0.00 : 23a9d: 49 8d 43 04 lea 0x4(%r11),%rax 0.00 : 23aa1: 48 39 c3 cmp %rax,%rbx 0.00 : 23aa4: 0f 83 3f ff ff ff jae 239e9 <__gconv_transform_utf8_internal+0x959> 0.00 : 23aaa: 41 ba 05 00 00 00 mov $0x5,%r10d 0.00 : 23ab0: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 23ab5: 4c 89 30 mov %r14,(%rax) 0.00 : 23ab8: 4c 39 5c 24 70 cmp %r11,0x70(%rsp) 0.00 : 23abd: 0f 85 b9 01 00 00 jne 23c7c <__gconv_transform_utf8_internal+0xbec> 0.00 : 23ac3: 41 83 fa 05 cmp $0x5,%r10d 0.00 : 23ac7: 0f 85 7e 01 00 00 jne 23c4b <__gconv_transform_utf8_internal+0xbbb> 0.00 : 23acd: 4c 3b 5c 24 58 cmp 0x58(%rsp),%r11 0.00 : 23ad2: 0f 85 ed f8 ff ff jne 233c5 <__gconv_transform_utf8_internal+0x335> 0.00 : 23ad8: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 23add: 83 6a 14 01 subl $0x1,0x14(%rdx) 0.00 : 23ae1: e9 df f8 ff ff jmpq 233c5 <__gconv_transform_utf8_internal+0x335> 0.00 : 23ae6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 23aed: 00 00 00 0.00 : 23af0: c1 e6 06 shl $0x6,%esi 0.00 : 23af3: 83 e2 3f and $0x3f,%edx 0.00 : 23af6: 48 83 c7 01 add $0x1,%rdi 0.00 : 23afa: 09 d6 or %edx,%esi 0.00 : 23afc: 48 39 f9 cmp %rdi,%rcx 0.00 : 23aff: 76 1a jbe 23b1b <__gconv_transform_utf8_internal+0xa8b> 0.00 : 23b01: 41 0f b6 14 3e movzbl (%r14,%rdi,1),%edx 0.00 : 23b06: 89 d0 mov %edx,%eax 0.00 : 23b08: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23b0d: 83 c0 80 add $0xffffff80,%eax 0.00 : 23b10: 74 de je 23af0 <__gconv_transform_utf8_internal+0xa60> 0.00 : 23b12: 48 39 f9 cmp %rdi,%rcx 0.00 : 23b15: 0f 87 5b ff ff ff ja 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23b1b: 48 83 f9 02 cmp $0x2,%rcx 0.00 : 23b1f: 74 10 je 23b31 <__gconv_transform_utf8_internal+0xaa1> 0.00 : 23b21: 8d 4c 89 fc lea -0x4(%rcx,%rcx,4),%ecx 0.00 : 23b25: 89 f0 mov %esi,%eax 0.00 : 23b27: d3 e8 shr %cl,%eax 0.00 : 23b29: 85 c0 test %eax,%eax 0.00 : 23b2b: 0f 84 45 ff ff ff je 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23b31: 8d 86 00 28 ff ff lea -0xd800(%rsi),%eax 0.00 : 23b37: 3d ff 07 00 00 cmp $0x7ff,%eax 0.00 : 23b3c: 0f 86 34 ff ff ff jbe 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23b42: 41 89 33 mov %esi,(%r11) 0.00 : 23b45: 4d 89 ce mov %r9,%r14 0.00 : 23b48: 49 83 c3 04 add $0x4,%r11 0.00 : 23b4c: e9 43 ff ff ff jmpq 23a94 <__gconv_transform_utf8_internal+0xa04> 0.00 : 23b51: 89 f0 mov %esi,%eax 0.00 : 23b53: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23b58: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23b5d: 0f 84 a0 00 00 00 je 23c03 <__gconv_transform_utf8_internal+0xb73> 0.00 : 23b63: 89 f0 mov %esi,%eax 0.00 : 23b65: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23b6a: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23b6f: 0f 84 81 00 00 00 je 23bf6 <__gconv_transform_utf8_internal+0xb66> 0.00 : 23b75: 89 f0 mov %esi,%eax 0.00 : 23b77: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23b7c: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23b81: 74 66 je 23be9 <__gconv_transform_utf8_internal+0xb59> 0.00 : 23b83: 89 f0 mov %esi,%eax 0.00 : 23b85: 31 ff xor %edi,%edi 0.00 : 23b87: 25 fe 00 00 00 and $0xfe,%eax 0.00 : 23b8c: 3d fc 00 00 00 cmp $0xfc,%eax 0.00 : 23b91: 0f 84 84 00 00 00 je 23c1b <__gconv_transform_utf8_internal+0xb8b> 0.00 : 23b97: 48 83 c7 01 add $0x1,%rdi 0.00 : 23b9b: 49 8d 04 3e lea (%r14,%rdi,1),%rax 0.00 : 23b9f: 49 39 c4 cmp %rax,%r12 0.00 : 23ba2: 0f 86 ce fe ff ff jbe 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23ba8: 41 0f b6 04 3e movzbl (%r14,%rdi,1),%eax 0.00 : 23bad: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23bb2: 83 c0 80 add $0xffffff80,%eax 0.00 : 23bb5: 0f 85 bb fe ff ff jne 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23bbb: 48 83 ff 04 cmp $0x4,%rdi 0.00 : 23bbf: 76 d6 jbe 23b97 <__gconv_transform_utf8_internal+0xb07> 0.00 : 23bc1: e9 b0 fe ff ff jmpq 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23bc6: 89 d0 mov %edx,%eax 0.00 : 23bc8: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23bcd: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23bd2: 75 54 jne 23c28 <__gconv_transform_utf8_internal+0xb98> 0.00 : 23bd4: 89 d7 mov %edx,%edi 0.00 : 23bd6: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 23bdc: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23be1: 83 e7 0f and $0xf,%edi 0.00 : 23be4: e9 b7 f9 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> 0.00 : 23be9: 83 e6 03 and $0x3,%esi 0.00 : 23bec: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 23bf1: e9 1b fe ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23bf6: 83 e6 07 and $0x7,%esi 0.00 : 23bf9: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23bfe: e9 0e fe ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23c03: 83 e6 0f and $0xf,%esi 0.00 : 23c06: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23c0b: e9 01 fe ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23c10: 41 ba 06 00 00 00 mov $0x6,%r10d 0.00 : 23c16: e9 95 fe ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23c1b: 83 e6 01 and $0x1,%esi 0.00 : 23c1e: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 23c23: e9 e9 fd ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23c28: 89 d0 mov %edx,%eax 0.00 : 23c2a: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23c2f: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23c34: 75 65 jne 23c9b <__gconv_transform_utf8_internal+0xc0b> 0.00 : 23c36: 89 d7 mov %edx,%edi 0.00 : 23c38: 41 b9 04 00 00 00 mov $0x4,%r9d 0.00 : 23c3e: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23c43: 83 e7 07 and $0x7,%edi 0.00 : 23c46: e9 55 f9 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> 0.00 : 23c4b: 48 8d 0d 6e f5 11 00 lea 0x11f56e(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23c52: 48 8d 35 b1 6a 11 00 lea 0x116ab1(%rip),%rsi # 13a70a 0.00 : 23c59: 48 8d 3d a0 9f 11 00 lea 0x119fa0(%rip),%rdi # 13dc00 <__PRETTY_FUNCTION__.11129+0x227> 0.00 : 23c60: ba e1 02 00 00 mov $0x2e1,%edx 0.00 : 23c65: e8 b6 7c 00 00 callq 2b920 <__assert_fail> 0.00 : 23c6a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 23c6f: e9 f9 fd ff ff jmpq 23a6d <__gconv_transform_utf8_internal+0x9dd> 0.00 : 23c74: 41 b2 05 mov $0x5,%r10b 0.00 : 23c77: e9 34 fe ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23c7c: 48 8d 0d 3d f5 11 00 lea 0x11f53d(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23c83: 48 8d 35 80 6a 11 00 lea 0x116a80(%rip),%rsi # 13a70a 0.00 : 23c8a: 48 8d 3d 09 6b 11 00 lea 0x116b09(%rip),%rdi # 13a79a 0.00 : 23c91: ba e0 02 00 00 mov $0x2e0,%edx 0.00 : 23c96: e8 85 7c 00 00 callq 2b920 <__assert_fail> 0.00 : 23c9b: 89 d0 mov %edx,%eax 0.00 : 23c9d: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23ca2: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23ca7: 0f 85 bc 02 00 00 jne 23f69 <__gconv_transform_utf8_internal+0xed9> 0.00 : 23cad: 89 d7 mov %edx,%edi 0.00 : 23caf: 41 b9 05 00 00 00 mov $0x5,%r9d 0.00 : 23cb5: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23cba: 83 e7 03 and $0x3,%edi 0.00 : 23cbd: e9 de f8 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> 0.00 : 23cc2: 89 d6 mov %edx,%esi 0.00 : 23cc4: bf 04 00 00 00 mov $0x4,%edi 0.00 : 23cc9: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23cce: 83 e6 07 and $0x7,%esi 0.00 : 23cd1: e9 92 fb ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 23cd6: 89 d6 mov %edx,%esi 0.00 : 23cd8: bf 03 00 00 00 mov $0x3,%edi 0.00 : 23cdd: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23ce2: 83 e6 0f and $0xf,%esi 0.00 : 23ce5: e9 7e fb ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 23cea: 48 8d 0d cf f4 11 00 lea 0x11f4cf(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23cf1: 48 8d 35 12 6a 11 00 lea 0x116a12(%rip),%rsi # 13a70a 0.00 : 23cf8: 48 8d 3d 1f 6a 11 00 lea 0x116a1f(%rip),%rdi # 13a71e 0.00 : 23cff: ba 2f 02 00 00 mov $0x22f,%edx 0.00 : 23d04: e8 17 7c 00 00 callq 2b920 <__assert_fail> 0.00 : 23d09: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 0.00 : 23d0f: 0f 85 3f 01 00 00 jne 23e54 <__gconv_transform_utf8_internal+0xdc4> 0.00 : 23d15: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 23d1a: 45 31 ed xor %r13d,%r13d 0.00 : 23d1d: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 23d21: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 23d28: f6 42 10 01 testb $0x1,0x10(%rdx) 0.00 : 23d2c: 0f 85 c5 f7 ff ff jne 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23d32: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 23d37: e8 d4 ef 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 23d3c: 8b 8c 24 d8 00 00 00 mov 0xd8(%rsp),%ecx 0.00 : 23d43: 89 1c 24 mov %ebx,(%rsp) 0.00 : 23d46: 45 31 c0 xor %r8d,%r8d 0.00 : 23d49: 4c 8b 4c 24 20 mov 0x20(%rsp),%r9 0.00 : 23d4e: 31 d2 xor %edx,%edx 0.00 : 23d50: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 23d55: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 23d5a: 89 4c 24 08 mov %ecx,0x8(%rsp) 0.00 : 23d5e: 31 c9 xor %ecx,%ecx 0.00 : 23d60: ff 54 24 50 callq *0x50(%rsp) 0.00 : 23d64: 41 89 c5 mov %eax,%r13d 0.00 : 23d67: e9 8b f7 ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23d6c: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 23d71: 48 8b 12 mov (%rdx),%rdx 0.00 : 23d74: 48 89 54 24 58 mov %rdx,0x58(%rsp) 0.00 : 23d79: e9 b1 f3 ff ff jmpq 2312f <__gconv_transform_utf8_internal+0x9f> 0.00 : 23d7e: 89 d0 mov %edx,%eax 0.00 : 23d80: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23d85: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23d8a: 0f 84 af 00 00 00 je 23e3f <__gconv_transform_utf8_internal+0xdaf> 0.00 : 23d90: 89 d0 mov %edx,%eax 0.00 : 23d92: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23d97: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23d9c: 0f 84 90 00 00 00 je 23e32 <__gconv_transform_utf8_internal+0xda2> 0.00 : 23da2: 89 d0 mov %edx,%eax 0.00 : 23da4: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23da9: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23dae: 74 75 je 23e25 <__gconv_transform_utf8_internal+0xd95> 0.00 : 23db0: 89 d0 mov %edx,%eax 0.00 : 23db2: 31 ff xor %edi,%edi 0.00 : 23db4: 25 fe 00 00 00 and $0xfe,%eax 0.00 : 23db9: 3d fc 00 00 00 cmp $0xfc,%eax 0.00 : 23dbe: 74 55 je 23e15 <__gconv_transform_utf8_internal+0xd85> 0.00 : 23dc0: 48 83 c7 01 add $0x1,%rdi 0.00 : 23dc4: 48 8d 04 3b lea (%rbx,%rdi,1),%rax 0.00 : 23dc8: 49 39 c2 cmp %rax,%r10 0.00 : 23dcb: 76 0e jbe 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23dcd: 0f b6 04 3b movzbl (%rbx,%rdi,1),%eax 0.00 : 23dd1: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23dd6: 83 c0 80 add $0xffffff80,%eax 0.00 : 23dd9: 74 23 je 23dfe <__gconv_transform_utf8_internal+0xd6e> 0.00 : 23ddb: 4d 85 ff test %r15,%r15 0.00 : 23dde: 74 26 je 23e06 <__gconv_transform_utf8_internal+0xd76> 0.00 : 23de0: 41 83 e1 02 and $0x2,%r9d 0.00 : 23de4: 74 20 je 23e06 <__gconv_transform_utf8_internal+0xd76> 0.00 : 23de6: 49 83 07 01 addq $0x1,(%r15) 0.00 : 23dea: 4c 8d 04 3b lea (%rbx,%rdi,1),%r8 0.00 : 23dee: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 23df4: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 23df9: e9 5d fb ff ff jmpq 2395b <__gconv_transform_utf8_internal+0x8cb> 0.00 : 23dfe: 48 83 ff 04 cmp $0x4,%rdi 0.00 : 23e02: 76 bc jbe 23dc0 <__gconv_transform_utf8_internal+0xd30> 0.00 : 23e04: eb d5 jmp 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23e06: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 23e0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23e10: e9 e2 f6 ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23e15: 83 e2 01 and $0x1,%edx 0.00 : 23e18: be 06 00 00 00 mov $0x6,%esi 0.00 : 23e1d: 0f 1f 00 nopl (%rax) 0.00 : 23e20: e9 c3 f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e25: 83 e2 03 and $0x3,%edx 0.00 : 23e28: be 05 00 00 00 mov $0x5,%esi 0.00 : 23e2d: e9 b6 f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e32: 83 e2 07 and $0x7,%edx 0.00 : 23e35: be 04 00 00 00 mov $0x4,%esi 0.00 : 23e3a: e9 a9 f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e3f: 83 e2 0f and $0xf,%edx 0.00 : 23e42: be 03 00 00 00 mov $0x3,%esi 0.00 : 23e47: e9 9c f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e4c: 45 89 c5 mov %r8d,%r13d 0.00 : 23e4f: e9 96 f6 ff ff jmpq 234ea <__gconv_transform_utf8_internal+0x45a> 0.00 : 23e54: 48 8d 0d 65 f3 11 00 lea 0x11f365(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23e5b: 48 8d 35 a8 68 11 00 lea 0x1168a8(%rip),%rsi # 13a70a 0.00 : 23e62: 48 8d 3d b5 68 11 00 lea 0x1168b5(%rip),%rdi # 13a71e 0.00 : 23e69: ba a0 01 00 00 mov $0x1a0,%edx 0.00 : 23e6e: e8 ad 7a 00 00 callq 2b920 <__assert_fail> 0.00 : 23e73: 89 d6 mov %edx,%esi 0.00 : 23e75: bf 05 00 00 00 mov $0x5,%edi 0.00 : 23e7a: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23e7f: 83 e6 03 and $0x3,%esi 0.00 : 23e82: e9 e1 f9 ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 23e87: 48 8d 0d 62 e8 11 00 lea 0x11e862(%rip),%rcx # 1426f0 <__PRETTY_FUNCTION__.13202> 0.00 : 23e8e: 48 8d 35 a4 68 11 00 lea 0x1168a4(%rip),%rsi # 13a739 0.00 : 23e95: 48 8d 3d 14 9d 11 00 lea 0x119d14(%rip),%rdi # 13dbb0 <__PRETTY_FUNCTION__.11129+0x1d7> 0.00 : 23e9c: ba bf 01 00 00 mov $0x1bf,%edx 0.00 : 23ea1: e8 7a 7a 00 00 callq 2b920 <__assert_fail> 0.00 : 23ea6: 45 85 ed test %r13d,%r13d 0.00 : 23ea9: 0f 85 48 f6 ff ff jne 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23eaf: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 23eb4: 44 8b 49 10 mov 0x10(%rcx),%r9d 0.00 : 23eb8: e9 bd f2 ff ff jmpq 2317a <__gconv_transform_utf8_internal+0xea> 0.00 : 23ebd: 89 d0 mov %edx,%eax 0.00 : 23ebf: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23ec4: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23ec9: 74 77 je 23f42 <__gconv_transform_utf8_internal+0xeb2> 0.00 : 23ecb: 89 d0 mov %edx,%eax 0.00 : 23ecd: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23ed2: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23ed7: 74 55 je 23f2e <__gconv_transform_utf8_internal+0xe9e> 0.00 : 23ed9: 89 d0 mov %edx,%eax 0.00 : 23edb: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23ee0: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23ee5: 74 33 je 23f1a <__gconv_transform_utf8_internal+0xe8a> 0.00 : 23ee7: 89 d6 mov %edx,%esi 0.00 : 23ee9: bf 06 00 00 00 mov $0x6,%edi 0.00 : 23eee: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 23ef3: 83 e6 01 and $0x1,%esi 0.00 : 23ef6: e9 a5 f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23efb: 48 8d 0d ee e7 11 00 lea 0x11e7ee(%rip),%rcx # 1426f0 <__PRETTY_FUNCTION__.13202> 0.00 : 23f02: 48 8d 35 30 68 11 00 lea 0x116830(%rip),%rsi # 13a739 0.00 : 23f09: 48 8d 3d 75 68 11 00 lea 0x116875(%rip),%rdi # 13a785 0.00 : 23f10: ba d1 01 00 00 mov $0x1d1,%edx 0.00 : 23f15: e8 06 7a 00 00 callq 2b920 <__assert_fail> 0.00 : 23f1a: 89 d6 mov %edx,%esi 0.00 : 23f1c: bf 05 00 00 00 mov $0x5,%edi 0.00 : 23f21: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23f26: 83 e6 03 and $0x3,%esi 0.00 : 23f29: e9 72 f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23f2e: 89 d6 mov %edx,%esi 0.00 : 23f30: bf 04 00 00 00 mov $0x4,%edi 0.00 : 23f35: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23f3a: 83 e6 07 and $0x7,%esi 0.00 : 23f3d: e9 5e f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23f42: 89 d6 mov %edx,%esi 0.00 : 23f44: bf 03 00 00 00 mov $0x3,%edi 0.00 : 23f49: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23f4e: 83 e6 0f and $0xf,%esi 0.00 : 23f51: e9 4a f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23f56: 4d 89 e6 mov %r12,%r14 0.00 : 23f59: e9 52 fb ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23f5e: 41 ba 07 00 00 00 mov $0x7,%r10d 0.00 : 23f64: e9 47 fb ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23f69: 89 d7 mov %edx,%edi 0.00 : 23f6b: 41 b9 06 00 00 00 mov $0x6,%r9d 0.00 : 23f71: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 23f76: 83 e7 01 and $0x1,%edi 0.00 : 23f79: e9 22 f6 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 12.37 ??:0 10.31 ??:0 6.19 ??:0 5.15 ??:0 3.09 ??:0 3.09 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 2.06 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004630 : : IXGBE_TXD_CMD_RS) : : static void ixgbe_tx_map(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : const u8 hdr_len) : { ??:0 2.06 : 4630: 41 57 push %r15 : } : : static void ixgbe_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc, : u32 tx_flags, unsigned int paylen) : { : __le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT); 0.00 : 4632: 0f b6 d2 movzbl %dl,%edx : IXGBE_TXD_CMD_RS) : : static void ixgbe_tx_map(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : const u8 hdr_len) : { 0.00 : 4635: 41 56 push %r14 0.00 : 4637: 41 55 push %r13 0.00 : 4639: 49 89 fd mov %rdi,%r13 0.00 : 463c: 41 54 push %r12 0.00 : 463e: 55 push %rbp 1.03 : 463f: 53 push %rbx 0.00 : 4640: 48 83 ec 38 sub $0x38,%rsp 2.06 : 4644: 48 89 74 24 08 mov %rsi,0x8(%rsp) : dma_addr_t dma; : struct sk_buff *skb = first->skb; 0.00 : 4649: 48 8b 76 10 mov 0x10(%rsi),%rsi : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) : { : return skb->head + skb->end; 0.00 : 464d: 48 8b 8e d8 00 00 00 mov 0xd8(%rsi),%rcx 1.03 : 4654: 48 89 4c 24 28 mov %rcx,0x28(%rsp) 0.00 : 4659: 8b 9e d0 00 00 00 mov 0xd0(%rsi),%ebx 0.00 : 465f: 89 5c 24 24 mov %ebx,0x24(%rsp) : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; : unsigned int data_len = skb->data_len; 0.00 : 4663: 8b 46 6c mov 0x6c(%rsi),%eax : #endif : unsigned int size = skb_headlen(skb); : unsigned int paylen = skb->len - hdr_len; : u32 tx_flags = first->tx_flags; 0.00 : 4666: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx : struct sk_buff *skb = first->skb; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; : unsigned int data_len = skb->data_len; 0.00 : 466b: 89 44 24 1c mov %eax,0x1c(%rsp) : return skb->data_len; : } : : static inline unsigned int skb_headlen(const struct sk_buff *skb) : { : return skb->len - skb->data_len; 0.00 : 466f: 8b 46 68 mov 0x68(%rsi),%eax 0.00 : 4672: 89 c1 mov %eax,%ecx 0.00 : 4674: 2b 4c 24 1c sub 0x1c(%rsp),%ecx : } : : static void ixgbe_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc, : u32 tx_flags, unsigned int paylen) : { : __le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT); 1.03 : 4678: 29 d0 sub %edx,%eax 0.00 : 467a: c1 e0 0e shl $0xe,%eax : : /* enable L4 checksum for TSO and TX checksum offload */ : if (tx_flags & IXGBE_TX_FLAGS_CSUM) : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_TXSM); 0.00 : 467d: 89 c2 mov %eax,%edx 1.03 : 467f: 80 ce 02 or $0x2,%dh 0.00 : 4682: 89 4c 24 20 mov %ecx,0x20(%rsp) : #endif : unsigned int size = skb_headlen(skb); : unsigned int paylen = skb->len - hdr_len; : u32 tx_flags = first->tx_flags; : __le32 cmd_type; : u16 i = tx_ring->next_to_use; 0.00 : 4686: 0f b7 6f 50 movzwl 0x50(%rdi),%ebp : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; : unsigned int data_len = skb->data_len; : #endif : unsigned int size = skb_headlen(skb); : unsigned int paylen = skb->len - hdr_len; : u32 tx_flags = first->tx_flags; 0.00 : 468a: 8b 4b 2c mov 0x2c(%rbx),%ecx : __le32 cmd_type; : u16 i = tx_ring->next_to_use; : : tx_desc = IXGBE_TX_DESC(tx_ring, i); 0.00 : 468d: 44 0f b7 fd movzwl %bp,%r15d 0.00 : 4691: 4c 89 fb mov %r15,%rbx 0.00 : 4694: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 4698: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 469d: 48 8b 5f 20 mov 0x20(%rdi),%rbx 0.00 : 46a1: 48 01 5c 24 10 add %rbx,0x10(%rsp) : { : __le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT); : : /* enable L4 checksum for TSO and TX checksum offload */ : if (tx_flags & IXGBE_TX_FLAGS_CSUM) : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_TXSM); 0.00 : 46a6: f6 c1 01 test $0x1,%cl 0.00 : 46a9: 0f 45 c2 cmovne %edx,%eax : : /* enble IPv4 checksum for TSO */ : if (tx_flags & IXGBE_TX_FLAGS_IPV4) : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IXSM); 0.00 : 46ac: 89 c2 mov %eax,%edx 0.00 : 46ae: 80 ce 01 or $0x1,%dh 0.00 : 46b1: f6 c1 10 test $0x10,%cl 0.00 : 46b4: 0f 45 c2 cmovne %edx,%eax : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_FCOE)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TSO) : #endif : olinfo_status |= cpu_to_le32(1 << IXGBE_ADVTXD_IDX_SHIFT); 0.00 : 46b7: 89 c2 mov %eax,%edx 0.00 : 46b9: 83 ca 10 or $0x10,%edx 0.00 : 46bc: f6 c1 28 test $0x28,%cl 1.03 : 46bf: 0f 45 c2 cmovne %edx,%eax : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TXSW | IXGBE_TX_FLAGS_FCOE)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TXSW) : #endif : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_CC); 0.00 : 46c2: 89 c2 mov %eax,%edx 0.00 : 46c4: 80 ca 80 or $0x80,%dl 0.00 : 46c7: f6 c1 a0 test $0xa0,%cl 0.00 : 46ca: 0f 45 c2 cmovne %edx,%eax : : tx_desc->read.olinfo_status = olinfo_status; 0.00 : 46cd: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 46d2: 89 42 0c mov %eax,0xc(%rdx) : __le32 cmd_type = cpu_to_le32(IXGBE_ADVTXD_DTYP_DATA | : IXGBE_ADVTXD_DCMD_IFCS | : IXGBE_ADVTXD_DCMD_DEXT); : : /* set HW vlan bit if vlan is present */ : if (tx_flags & IXGBE_TX_FLAGS_HW_VLAN) 0.00 : 46d5: 89 c8 mov %ecx,%eax 0.00 : 46d7: 83 e0 02 and $0x2,%eax 0.00 : 46da: 83 f8 01 cmp $0x1,%eax 0.00 : 46dd: 19 db sbb %ebx,%ebx 0.00 : 46df: 81 e3 00 00 00 c0 and $0xc0000000,%ebx 0.00 : 46e5: 81 c3 00 00 30 62 add $0x62300000,%ebx : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_FSO)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TSO) : #endif : cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_TSE); 0.00 : 46eb: 89 d8 mov %ebx,%eax 0.00 : 46ed: 0d 00 00 00 80 or $0x80000000,%eax 0.00 : 46f2: f6 c1 48 test $0x48,%cl 0.00 : 46f5: 0f 44 c3 cmove %ebx,%eax : : ixgbe_tx_olinfo_status(tx_desc, tx_flags, paylen); : cmd_type = ixgbe_tx_cmd_type(tx_flags); : : #ifdef IXGBE_FCOE : if (tx_flags & IXGBE_TX_FLAGS_FCOE) { 0.00 : 46f8: 83 e1 20 and $0x20,%ecx : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_FSO)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TSO) : #endif : cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_TSE); 0.00 : 46fb: 89 44 24 34 mov %eax,0x34(%rsp) : : ixgbe_tx_olinfo_status(tx_desc, tx_flags, paylen); : cmd_type = ixgbe_tx_cmd_type(tx_flags); : : #ifdef IXGBE_FCOE : if (tx_flags & IXGBE_TX_FLAGS_FCOE) { 0.00 : 46ff: 74 23 je 4724 : if (data_len < sizeof(struct fcoe_crc_eof)) { 0.00 : 4701: 83 7c 24 1c 07 cmpl $0x7,0x1c(%rsp) 0.00 : 4706: 0f 87 84 01 00 00 ja 4890 : size -= sizeof(struct fcoe_crc_eof) - data_len; 0.00 : 470c: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 4710: 8b 54 24 1c mov 0x1c(%rsp),%edx 0.00 : 4714: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 471b: 00 0.00 : 471c: 8d 44 10 f8 lea -0x8(%rax,%rdx,1),%eax 0.00 : 4720: 89 44 24 20 mov %eax,0x20(%rsp) : data_len -= sizeof(struct fcoe_crc_eof); : } : } : : #endif : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); 0.00 : 4724: 4d 8b 65 18 mov 0x18(%r13),%r12 1.03 : 4728: 4c 8b b6 e0 00 00 00 mov 0xe0(%rsi),%r14 : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 472f: 4d 85 e4 test %r12,%r12 0.00 : 4732: 0f 84 e8 01 00 00 je 4920 1.03 : 4738: 49 8b 84 24 00 02 00 mov 0x200(%r12),%rax 0.00 : 473f: 00 2.06 : 4740: 48 85 c0 test %rax,%rax 0.00 : 4743: 0f 84 d7 01 00 00 je 4920 : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(ptr, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, virt_to_page(ptr), 0.00 : 4749: 4c 89 f7 mov %r14,%rdi 0.00 : 474c: 48 8b 58 10 mov 0x10(%rax),%rbx ??:0 12.37 : 4750: e8 00 00 00 00 callq 4755 0.00 : 4755: 48 c1 e8 0c shr $0xc,%rax 0.00 : 4759: 8b 4c 24 20 mov 0x20(%rsp),%ecx 0.00 : 475d: 4c 89 f2 mov %r14,%rdx 0.00 : 4760: 48 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%rsi 0.00 : 4767: 00 0.00 : 4768: 48 c1 e0 06 shl $0x6,%rax 0.00 : 476c: 81 e2 ff 0f 00 00 and $0xfff,%edx 0.00 : 4772: 45 31 c9 xor %r9d,%r9d 0.00 : 4775: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 477b: 4c 89 e7 mov %r12,%rdi 0.00 : 477e: 48 29 f0 sub %rsi,%rax 0.00 : 4781: 48 be 00 00 00 00 00 movabs $0xffffea0000000000,%rsi 0.00 : 4788: ea ff ff 0.00 : 478b: 48 8d 34 30 lea (%rax,%rsi,1),%rsi ??:0 2.06 : 478f: ff d3 callq *%rbx : (unsigned long)ptr & ~PAGE_MASK, size, : dir, attrs); : debug_dma_map_page(dev, virt_to_page(ptr), 1.03 : 4791: 4c 89 f7 mov %r14,%rdi : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(ptr, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, virt_to_page(ptr), 0.00 : 4794: 48 89 c3 mov %rax,%rbx : (unsigned long)ptr & ~PAGE_MASK, size, : dir, attrs); : debug_dma_map_page(dev, virt_to_page(ptr), 0.00 : 4797: e8 00 00 00 00 callq 479c : if (dma_mapping_error(tx_ring->dev, dma)) 0.00 : 479c: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 47a0: 48 85 ff test %rdi,%rdi 0.00 : 47a3: 0f 84 67 01 00 00 je 4910 0.00 : 47a9: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 47b0: 48 85 c0 test %rax,%rax 0.00 : 47b3: 0f 84 57 01 00 00 je 4910 : : /* Make sure we keep the same behaviour */ : static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) : { : struct dma_map_ops *ops = get_dma_ops(dev); : if (ops->mapping_error) 0.00 : 47b9: 48 8b 40 50 mov 0x50(%rax),%rax 1.03 : 47bd: 48 85 c0 test %rax,%rax 0.00 : 47c0: 0f 84 3a 01 00 00 je 4900 : return ops->mapping_error(dev, dma_addr); 0.00 : 47c6: 48 89 de mov %rbx,%rsi 0.00 : 47c9: ff d0 callq *%rax 0.00 : 47cb: 85 c0 test %eax,%eax 0.00 : 47cd: 0f 1f 00 nopl (%rax) 0.00 : 47d0: 0f 85 ca 00 00 00 jne 48a0 : dma_addr_t dma; : struct sk_buff *skb = first->skb; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 0.00 : 47d6: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 47da: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : /* record length, and DMA address */ : dma_unmap_len_set(first, len, size); 0.00 : 47df: 48 8b 54 24 08 mov 0x8(%rsp),%rdx : dma_addr_t dma; : struct sk_buff *skb = first->skb; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 0.00 : 47e4: 4c 8d 64 01 38 lea 0x38(%rcx,%rax,1),%r12 : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : /* record length, and DMA address */ : dma_unmap_len_set(first, len, size); 0.00 : 47e9: 8b 44 24 20 mov 0x20(%rsp),%eax : dma_unmap_addr_set(first, dma, dma); 0.00 : 47ed: 48 89 5a 20 mov %rbx,0x20(%rdx) : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : /* record length, and DMA address */ : dma_unmap_len_set(first, len, size); 0.00 : 47f1: 89 42 28 mov %eax,0x28(%rdx) : dma_unmap_addr_set(first, dma, dma); : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 1.03 : 47f4: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : 47f9: 48 89 19 mov %rbx,(%rcx) : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = 0.00 : 47fc: 44 8b 74 24 34 mov 0x34(%rsp),%r14d 0.00 : 4801: 41 81 ce 00 40 00 00 or $0x4000,%r14d : tx_desc->read.buffer_addr = cpu_to_le64(dma); : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { 0.00 : 4808: 81 7c 24 20 00 40 00 cmpl $0x4000,0x20(%rsp) 0.00 : 480f: 00 1.03 : 4810: 0f 87 00 02 00 00 ja 4a16 : tx_desc->read.buffer_addr = cpu_to_le64(dma); : tx_desc->read.olinfo_status = 0; : } : : #ifdef MAX_SKB_FRAGS : if (likely(!data_len)) 1.03 : 4816: 8b 74 24 1c mov 0x1c(%rsp),%esi 1.03 : 481a: 85 f6 test %esi,%esi 0.00 : 481c: 0f 85 0a 01 00 00 jne 492c : frag++; : } : : #endif /* MAX_SKB_FRAGS */ : /* write last descriptor with RS and EOP bits */ : cmd_type |= cpu_to_le32(size) | cpu_to_le32(IXGBE_TXD_CMD); 0.00 : 4822: 81 4c 24 34 00 00 00 orl $0x9000000,0x34(%rsp) 0.00 : 4829: 09 : tx_desc->read.cmd_type_len = cmd_type; ??:0 10.31 : 482a: 8b 5c 24 20 mov 0x20(%rsp),%ebx 0.00 : 482e: 09 5c 24 34 or %ebx,0x34(%rsp) ??:0 1.03 : 4832: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 4837: 8b 54 24 34 mov 0x34(%rsp),%edx 0.00 : 483b: 89 50 08 mov %edx,0x8(%rax) : : /* set the timestamp */ : first->time_stamp = jiffies; 3.09 : 483e: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4845 0.00 : 4845: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 484a: 48 89 41 08 mov %rax,0x8(%rcx) : * memory model archs, such as IA-64). : * : * We also need this memory barrier to make certain all of the : * status bits have been updated before next_to_watch is written. : */ : wmb(); 0.00 : 484e: 0f ae f8 sfence : : /* set next_to_watch value indicating a packet is present */ : first->next_to_watch = tx_desc; 0.00 : 4851: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx : : i++; 0.00 : 4856: 8d 45 01 lea 0x1(%rbp),%eax : if (i == tx_ring->count) 0.00 : 4859: ba 00 00 00 00 mov $0x0,%edx : * status bits have been updated before next_to_watch is written. : */ : wmb(); : : /* set next_to_watch value indicating a packet is present */ : first->next_to_watch = tx_desc; 0.00 : 485e: 48 89 19 mov %rbx,(%rcx) : : i++; : if (i == tx_ring->count) 0.00 : 4861: 66 41 39 45 4c cmp %ax,0x4c(%r13) 0.00 : 4866: 0f 44 c2 cmove %edx,%eax : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 4869: 49 8b 55 38 mov 0x38(%r13),%rdx : i = 0; : : tx_ring->next_to_use = i; 0.00 : 486d: 66 41 89 45 50 mov %ax,0x50(%r13) : : /* notify HW of packet */ : writel(i, tx_ring->tail); 0.00 : 4872: 0f b7 c0 movzwl %ax,%eax 0.00 : 4875: 89 02 mov %eax,(%rdx) : i = tx_ring->count; : i--; : } : : tx_ring->next_to_use = i; : } ??:0 6.19 : 4877: 48 83 c4 38 add $0x38,%rsp 0.00 : 487b: 5b pop %rbx ??:0 1.03 : 487c: 5d pop %rbp 0.00 : 487d: 41 5c pop %r12 1.03 : 487f: 41 5d pop %r13 0.00 : 4881: 41 5e pop %r14 0.00 : 4883: 41 5f pop %r15 0.00 : 4885: c3 retq 0.00 : 4886: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 488d: 00 00 00 : if (tx_flags & IXGBE_TX_FLAGS_FCOE) { : if (data_len < sizeof(struct fcoe_crc_eof)) { : size -= sizeof(struct fcoe_crc_eof) - data_len; : data_len = 0; : } else { : data_len -= sizeof(struct fcoe_crc_eof); 0.00 : 4890: 83 6c 24 1c 08 subl $0x8,0x1c(%rsp) 0.00 : 4895: e9 8a fe ff ff jmpq 4724 0.00 : 489a: 44 0f b7 fd movzwl %bp,%r15d 0.00 : 489e: 66 90 xchg %ax,%ax : */ : mmiowb(); : : return; : dma_error: : dev_err(tx_ring->dev, "TX DMA map failed\n"); 0.00 : 48a0: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 48a4: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 48ab: 31 c0 xor %eax,%eax 0.00 : 48ad: e8 00 00 00 00 callq 48b2 0.00 : 48b2: eb 15 jmp 48c9 0.00 : 48b4: 0f 1f 40 00 nopl 0x0(%rax) : for (;;) { : tx_buffer = &tx_ring->tx_buffer_info[i]; : ixgbe_unmap_and_free_tx_resource(tx_ring, tx_buffer); : if (tx_buffer == first) : break; : if (i == 0) 0.00 : 48b8: 66 85 ed test %bp,%bp 0.00 : 48bb: 75 05 jne 48c2 : i = tx_ring->count; 0.00 : 48bd: 41 0f b7 6d 4c movzwl 0x4c(%r13),%ebp : i--; 0.00 : 48c2: 83 ed 01 sub $0x1,%ebp 0.00 : 48c5: 44 0f b7 fd movzwl %bp,%r15d : dma_error: : dev_err(tx_ring->dev, "TX DMA map failed\n"); : : /* clear dma mappings for failed tx_buffer_info map */ : for (;;) { : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 48c9: 4b 8d 1c 7f lea (%r15,%r15,2),%rbx : ixgbe_unmap_and_free_tx_resource(tx_ring, tx_buffer); 0.00 : 48cd: 4c 89 ef mov %r13,%rdi : dma_error: : dev_err(tx_ring->dev, "TX DMA map failed\n"); : : /* clear dma mappings for failed tx_buffer_info map */ : for (;;) { : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 48d0: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 48d4: 49 03 5d 28 add 0x28(%r13),%rbx : ixgbe_unmap_and_free_tx_resource(tx_ring, tx_buffer); 0.00 : 48d8: 48 89 de mov %rbx,%rsi 0.00 : 48db: e8 00 00 00 00 callq 48e0 : if (tx_buffer == first) 0.00 : 48e0: 48 3b 5c 24 08 cmp 0x8(%rsp),%rbx 0.00 : 48e5: 75 d1 jne 48b8 : if (i == 0) : i = tx_ring->count; : i--; : } : : tx_ring->next_to_use = i; 0.00 : 48e7: 66 41 89 6d 50 mov %bp,0x50(%r13) : } 0.00 : 48ec: 48 83 c4 38 add $0x38,%rsp 0.00 : 48f0: 5b pop %rbx 0.00 : 48f1: 5d pop %rbp 0.00 : 48f2: 41 5c pop %r12 0.00 : 48f4: 41 5d pop %r13 0.00 : 48f6: 41 5e pop %r14 0.00 : 48f8: 41 5f pop %r15 0.00 : 48fa: c3 retq 0.00 : 48fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : return (dma_addr == DMA_ERROR_CODE); 0.00 : 4900: 31 c0 xor %eax,%eax 0.00 : 4902: 48 85 db test %rbx,%rbx 0.00 : 4905: 0f 94 c0 sete %al 0.00 : 4908: e9 be fe ff ff jmpq 47cb 0.00 : 490d: 0f 1f 00 nopl (%rax) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) : return dma_ops; 0.00 : 4910: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4917 0.00 : 4917: e9 9d fe ff ff jmpq 47b9 0.00 : 491c: 0f 1f 40 00 nopl 0x0(%rax) 1.03 : 4920: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4927 ??:0 5.15 : 4927: e9 1d fe ff ff jmpq 4749 : : #ifdef MAX_SKB_FRAGS : if (likely(!data_len)) : break; : : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); ??:0 2.06 : 492c: 8b 5c 24 34 mov 0x34(%rsp),%ebx 0.00 : 4930: 09 5c 24 20 or %ebx,0x20(%rsp) : : i++; 2.06 : 4934: 83 c5 01 add $0x1,%ebp : : #ifdef MAX_SKB_FRAGS : if (likely(!data_len)) : break; : : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); 0.00 : 4937: 8b 44 24 20 mov 0x20(%rsp),%eax 2.06 : 493b: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 4940: 89 42 08 mov %eax,0x8(%rdx) : : i++; : tx_desc++; : if (i == tx_ring->count) { 1.03 : 4943: 66 41 39 6d 4c cmp %bp,0x4c(%r13) 0.00 : 4948: 0f 84 20 01 00 00 je 4a6e : break; : : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); : : i++; : tx_desc++; 1.03 : 494e: 48 83 c2 10 add $0x10,%rdx 1.03 : 4952: 44 0f b7 fd movzwl %bp,%r15d 0.00 : 4956: 48 89 54 24 10 mov %rdx,0x10(%rsp) : tx_desc = IXGBE_TX_DESC(tx_ring, 0); : i = 0; : } : : #ifdef IXGBE_FCOE : size = min_t(unsigned int, data_len, skb_frag_size(frag)); 0.00 : 495b: 41 8b 44 24 0c mov 0xc(%r12),%eax 2.06 : 4960: 39 44 24 1c cmp %eax,0x1c(%rsp) 1.03 : 4964: 0f 46 44 24 1c cmovbe 0x1c(%rsp),%eax 0.00 : 4969: 89 44 24 20 mov %eax,0x20(%rsp) : #else : size = skb_frag_size(frag); : #endif : data_len -= size; : : dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size, 0.00 : 496d: 49 8b 7d 18 mov 0x18(%r13),%rdi : static inline dma_addr_t _kc_skb_frag_dma_map(struct device *dev, : const skb_frag_t *frag, : size_t offset, size_t size, : enum dma_data_direction dir) : { : return dma_map_page(dev, skb_frag_page(frag), 1.03 : 4971: 41 8b 54 24 08 mov 0x8(%r12),%edx : : #ifndef skb_frag_page : #define skb_frag_page(frag) _kc_skb_frag_page(frag) : static inline struct page *_kc_skb_frag_page(const skb_frag_t *frag) : { : return frag->page; 1.03 : 4976: 49 8b 34 24 mov (%r12),%rsi : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 497a: 48 85 ff test %rdi,%rdi 0.00 : 497d: 0f 84 df 00 00 00 je 4a62 1.03 : 4983: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 2.06 : 498a: 48 85 c0 test %rax,%rax 0.00 : 498d: 0f 84 cf 00 00 00 je 4a62 : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(page_address(page) + offset, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, page, offset, size, dir, NULL); 0.00 : 4993: 8b 4c 24 20 mov 0x20(%rsp),%ecx 0.00 : 4997: 45 31 c9 xor %r9d,%r9d 0.00 : 499a: 89 d2 mov %edx,%edx 0.00 : 499c: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 49a2: ff 50 10 callq *0x10(%rax) : DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) 0.00 : 49a5: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 49a9: 48 89 c3 mov %rax,%rbx 0.00 : 49ac: 48 85 ff test %rdi,%rdi 0.00 : 49af: 0f 84 cc 00 00 00 je 4a81 0.00 : 49b5: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 1.03 : 49bc: 48 85 c0 test %rax,%rax 1.03 : 49bf: 0f 84 bc 00 00 00 je 4a81 : : /* Make sure we keep the same behaviour */ : static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) : { : struct dma_map_ops *ops = get_dma_ops(dev); : if (ops->mapping_error) 0.00 : 49c5: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 49c9: 48 85 c0 test %rax,%rax 0.00 : 49cc: 0f 84 83 00 00 00 je 4a55 : return ops->mapping_error(dev, dma_addr); 1.03 : 49d2: 48 89 de mov %rbx,%rsi 0.00 : 49d5: ff d0 callq *%rax 2.06 : 49d7: 85 c0 test %eax,%eax 0.00 : 49d9: 0f 85 bb fe ff ff jne 489a : #ifdef IXGBE_FCOE : size = min_t(unsigned int, data_len, skb_frag_size(frag)); : #else : size = skb_frag_size(frag); : #endif : data_len -= size; 0.00 : 49df: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 49e3: 29 44 24 1c sub %eax,0x1c(%rsp) : dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size, : DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 2.06 : 49e7: 4b 8d 04 7f lea (%r15,%r15,2),%rax : dma_unmap_len_set(tx_buffer, len, size); 0.00 : 49eb: 8b 54 24 20 mov 0x20(%rsp),%edx : dma_unmap_addr_set(tx_buffer, dma, dma); : : tx_desc->read.buffer_addr = cpu_to_le64(dma); : tx_desc->read.olinfo_status = 0; : : frag++; 0.00 : 49ef: 49 83 c4 10 add $0x10,%r12 : dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size, : DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 49f3: 48 c1 e0 04 shl $0x4,%rax 0.00 : 49f7: 49 03 45 28 add 0x28(%r13),%rax : dma_unmap_len_set(tx_buffer, len, size); 0.00 : 49fb: 89 50 28 mov %edx,0x28(%rax) : dma_unmap_addr_set(tx_buffer, dma, dma); 3.09 : 49fe: 48 89 58 20 mov %rbx,0x20(%rax) : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 2.06 : 4a02: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : 4a07: 48 89 19 mov %rbx,(%rcx) : tx_desc->read.olinfo_status = 0; 0.00 : 4a0a: c7 41 0c 00 00 00 00 movl $0x0,0xc(%rcx) 2.06 : 4a11: e9 f2 fd ff ff jmpq 4808 : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = 0.00 : 4a16: 48 8b 44 24 10 mov 0x10(%rsp),%rax : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; 0.00 : 4a1b: 83 c5 01 add $0x1,%ebp : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = 0.00 : 4a1e: 44 89 70 08 mov %r14d,0x8(%rax) : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; : tx_desc++; : if (i == tx_ring->count) { 0.00 : 4a22: 66 41 39 6d 4c cmp %bp,0x4c(%r13) 0.00 : 4a27: 74 64 je 4a8d : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; : tx_desc++; 0.00 : 4a29: 48 83 c0 10 add $0x10,%rax 0.00 : 4a2d: 48 89 44 24 10 mov %rax,0x10(%rsp) : } : : dma += IXGBE_MAX_DATA_PER_TXD; : size -= IXGBE_MAX_DATA_PER_TXD; : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 0.00 : 4a32: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx : if (i == tx_ring->count) { : tx_desc = IXGBE_TX_DESC(tx_ring, 0); : i = 0; : } : : dma += IXGBE_MAX_DATA_PER_TXD; 0.00 : 4a37: 48 81 c3 00 40 00 00 add $0x4000,%rbx : size -= IXGBE_MAX_DATA_PER_TXD; 0.00 : 4a3e: 81 6c 24 20 00 40 00 subl $0x4000,0x20(%rsp) 0.00 : 4a45: 00 : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 0.00 : 4a46: 48 89 19 mov %rbx,(%rcx) : tx_desc->read.olinfo_status = 0; 0.00 : 4a49: c7 41 0c 00 00 00 00 movl $0x0,0xc(%rcx) 0.00 : 4a50: e9 b3 fd ff ff jmpq 4808 : : return (dma_addr == DMA_ERROR_CODE); 0.00 : 4a55: 31 c0 xor %eax,%eax 0.00 : 4a57: 48 85 db test %rbx,%rbx 0.00 : 4a5a: 0f 94 c0 sete %al 0.00 : 4a5d: e9 75 ff ff ff jmpq 49d7 : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) : return dma_ops; 0.00 : 4a62: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4a69 2.06 : 4a69: e9 25 ff ff ff jmpq 4993 : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); : : i++; : tx_desc++; : if (i == tx_ring->count) { : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 4a6e: 49 8b 4d 20 mov 0x20(%r13),%rcx 0.00 : 4a72: 31 ed xor %ebp,%ebp 0.00 : 4a74: 45 31 ff xor %r15d,%r15d 0.00 : 4a77: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 4a7c: e9 da fe ff ff jmpq 495b 1.03 : 4a81: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4a88 2.06 : 4a88: e9 38 ff ff ff jmpq 49c5 : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; : tx_desc++; : if (i == tx_ring->count) { : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 4a8d: 49 8b 55 20 mov 0x20(%r13),%rdx 0.00 : 4a91: 31 ed xor %ebp,%ebp 0.00 : 4a93: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 4a98: eb 98 jmp 4a32 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 5.13 ??:0 4.49 ??:0 3.85 ??:0 3.85 ??:0 3.21 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 1.28 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 0.64 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000006a40 : ??:0 3.21 : 6a40: 41 57 push %r15 0.00 : 6a72: 49 89 fa 41 mov %ecx,0x2c(%rsp) 0.64 : 6a76: 56 41 55 41 54 55 48 mov 0xe0(%rsp),%rcx 0.00 : 6a7d: 89 0.00 : 6a7e: f5 53 48 81 mov %al,0x2b(%rsp) 0.64 : 6a82: ec a8 00 00 00 89 54 mov 0xe8(%rdi),%rdx 0.64 : 6a89: 24 40 0f sbb %rax,%rax 0.00 : 6a8c: b6 84 24 and $0x14,%eax 0.00 : 6a8f: e8 00 00 00 lea (%rsi,%rax,1),%r13 0.00 : 6a93: 83 7c 24 40 01 89 4c mov 0xe0(%rsp),%rax 0.00 : 6a9a: 24 0.00 : 6a9b: 3c 4c 89 44 24 mov %rdx,0x48(%rsp) 0.00 : 6aa0: 30 44 89 mov 0x4(%rcx),%ecx 0.64 : 6aa3: 4c 24 bswap %ecx 0.00 : 6aa5: 2c 48 8b mov %rax,%rdx 0.00 : 6aa8: 8c 24 e0 00 mov %ecx,0x50(%rsp) 0.00 : 6aac: 00 00 88 44 mov 0x8(%rax),%r12d 0.00 : 6ab0: 24 2b 48 8b movzwl 0xe(%rax),%eax 0.64 : 6ab4: 97 e8 00 bswap %r12d 0.00 : 6ab7: 00 00 48 19 rol $0x8,%ax 1.92 : 6abb: c0 83 e0 movzwl %ax,%eax 0.00 : 6abe: 14 4c 8d 2c mov %eax,0x58(%rsp) 0.64 : 6ac2: 06 48 8b 84 mov 0x68(%r8),%ecx 0.64 : 6ac6: 24 e0 00 00 mov %ecx,0x44(%rsp) 1.28 : 6aca: 00 48 89 54 24 movzbl 0xc(%rdx),%r14d 0.00 : 6acf: 48 8b 49 04 movzbl 0xd(%rdx),%eax 0.00 : 6ad3: 0f c9 48 89 shr $0x4,%r14b 0.00 : 6ad7: c2 89 4c 24 mov %al,0x60(%rsp) 0.00 : 6adb: 50 44 8b 60 08 testb $0x2,0x11(%r13) 0.00 : 6ae0: 0f b7 je 6af5 0.00 : 6ae2: 40 0e 41 0f movzbl %r14b,%eax 0.00 : 6ae6: cc 66 c1 c0 08 0f b7 lea -0x14(,%rax,4),%ebx 0.00 : 6aed: c0 89 test %ebx,%ebx 0.00 : 6aef: 44 24 58 41 8b 48 jne 6d60 0.00 : 6af5: 68 89 4c mov %r12d,%ebx 0.00 : 6af8: 24 44 44 0f b6 cmpb $0x2,0x2b(%rsp) 0.64 : 6afd: 72 0c 0f b6 42 0d je 6e80 0.00 : 6b03: 41 c0 ee 04 88 44 24 movw $0x0,0x5e(%rsp) 0.00 : 6b0a: 60 41 xor %eax,%eax 0.00 : 6b0c: f6 45 11 mov %ebx,%r15d 0.00 : 6b0f: 02 74 13 sub %eax,%r12d 0.00 : 6b12: 41 0f b6 sub %eax,%r15d 0.00 : 6b15: c6 8d 1c 85 ec ff ff cmpb $0x0,0x0(%rip) # 6b1c 3.85 : 6b1c: ff 85 db 0f 85 mov %r12d,0x54(%rsp) 0.00 : 6b21: 6b 02 00 00 44 89 jne 73ce 0.00 : 6b27: e3 80 7c 24 2b 02 0f cmpb $0x0,0x0(%rip) # 6b2e 0.64 : 6b2e: 84 7d 03 00 00 66 jne 72a0 0.00 : 6b34: c7 44 24 5e 00 movzbl 0x60(%rsp),%eax 0.00 : 6b39: 00 31 c0 41 89 movzbl 0x60(%rsp),%edx 0.00 : 6b3e: df 41 shr %al 0.00 : 6b40: 29 c4 41 and $0x1,%edx 0.00 : 6b43: 29 c7 80 and $0x1,%eax 0.00 : 6b46: 3d 00 add %edx,%eax 0.00 : 6b48: 00 00 00 00 add 0x44(%rsp),%eax 0.64 : 6b4c: 44 89 64 24 movzbl %r14b,%edx 0.00 : 6b50: 54 0f 85 shl $0x2,%edx 0.00 : 6b53: a7 08 00 00 80 mov 0x50(%rsp),%r14d 0.00 : 6b58: 3d 00 sub %edx,%eax 0.00 : 6b5a: 00 00 00 00 sub 0x2c(%rsp),%eax 0.00 : 6b5e: 0f 85 6c add %eax,%r14d 0.00 : 6b61: 07 00 00 0f b6 44 24 cmpb $0x0,0x0(%rip) # 6b68 0.00 : 6b68: 60 0f b6 54 24 60 jne 7264 0.64 : 6b6e: d0 e8 83 e2 01 83 e0 cmpb $0x0,0x0(%rip) # 6b75 1.92 : 6b75: 01 01 d0 03 44 mov 0x40(%rsp),%r12d 0.00 : 6b7a: 24 44 41 0f b6 d6 jne 72ba 0.00 : 6b80: c1 e2 02 44 lea (%r12,%r12,4),%rax 0.00 : 6b84: 8b 74 24 50 29 lea 0x0(%rbp,%rax,4),%rbx 0.00 : 6b89: d0 2b 44 mov 0x8(%rbx),%esi 0.00 : 6b8c: 24 2c test %esi,%esi 0.00 : 6b8e: 41 01 c6 80 3d 00 jne 6cf0 0.00 : 6b94: 00 00 00 00 0f 85 f6 mov 0xe0(%rsp),%rcx 0.00 : 6b9b: 06 0.00 : 6b9c: 00 00 80 3d testb $0x2,0xd(%rcx) 0.00 : 6ba0: 00 00 00 00 00 44 je 6de0 0.00 : 6ba6: 8b 64 24 40 mov %r14d,0x4(%rbx) 0.00 : 6baa: 0f 85 3a 07 00 mov %r14d,0x0(%rbp,%rax,4) 0.00 : 6baf: 00 4b 8d 04 a4 mov $0x1,%eax 0.00 : 6bb4: 48 8d 5c 85 mov 0x58(%rsp),%ecx 0.00 : 6bb8: 00 8b test %ecx,%ecx 0.00 : 6bba: 73 08 85 f6 0f cmovne 0x58(%rsp),%eax 0.00 : 6bbf: 85 5c 01 mov %rbx,%rcx 0.00 : 6bc2: 00 00 48 mov %eax,0x8(%rbx) 0.00 : 6bc5: 8b 8c 24 e0 00 00 00 mov 0xe0(%rsp),%rdx 0.00 : 6bcc: f6 0.00 : 6bcd: 41 0d 02 0f mov 0x2c(%rsp),%esi 0.00 : 6bd1: 84 3a 02 00 00 mov 0x30(%rsp),%rdi 0.00 : 6bd6: 44 89 73 04 44 callq 68c0 0.00 : 6bdb: 89 74 85 00 testb $0x1,0x11(%rbx) 0.00 : 6bdf: b8 01 00 00 00 8b jne 7080 0.00 : 6be5: 4c 24 58 85 lea (%r12,%r12,4),%rax 0.00 : 6be9: c9 0f 45 44 24 movb $0x0,0x10(%r13) 0.00 : 6bee: 58 48 89 d9 89 movb $0x0,0x10(%rbp,%rax,4) 0.00 : 6bf3: 43 08 48 8b 94 24 e0 mov 0xe0(%rsp),%rax 0.00 : 6bfa: 00 0.00 : 6bfb: 00 00 8b 74 24 mov $0x1,%ebx 0.00 : 6c00: 2c 48 8b 7c movzbl 0xd(%rax),%edx 0.00 : 6c04: 24 30 e8 test $0x10,%dl 0.00 : 6c07: e5 fc ff ff f6 43 je 6cda 2.56 : 6c0d: 11 01 0f 85 9b 04 00 mov 0xe0(%rsp),%rcx 0.00 : 6c14: 00 1.92 : 6c15: 4b 8d 04 mov 0xc(%rcx),%eax 0.64 : 6c18: a4 41 c6 45 10 and $0x1400,%eax 1.28 : 6c1d: 00 c6 44 85 10 cmp $0x1400,%eax 0.00 : 6c22: 00 48 8b 84 24 e0 jne 6d26 0.00 : 6c28: 00 00 00 bb 01 mov 0x54(%rsp),%r8d 0.00 : 6c2d: 00 00 00 test %r8d,%r8d 0.00 : 6c30: 0f b6 50 0d f6 c2 je 6d1d 0.00 : 6c36: 10 0f 84 and $0x4,%edx 0.00 : 6c39: cd 00 00 00 48 8b jne 6d2f 0.00 : 6c3f: 8c nop 0.64 : 6c40: 24 e0 00 00 00 8b 41 cmpb $0x0,0x0(%rip) # 6c47 0.00 : 6c47: 0c 25 00 14 00 00 jne 7325 0.00 : 6c4d: 3d 00 14 00 00 0f 85 cmpb $0x0,0x0(%rip) # 6c54 1.92 : 6c54: fe 00 00 00 44 8b jne 733f 0.64 : 6c5a: 44 24 54 45 85 c0 0f cmpb $0x0,0x0(%rip) # 6c61 1.28 : 6c61: 84 e7 00 00 00 83 jne 737b 0.00 : 6c67: e2 04 0f 85 f0 00 00 cmpb $0x0,0x0(%rip) # 6c6e 2.56 : 6c6e: 00 90 80 3d 00 00 jne 73e8 0.64 : 6c74: 00 00 00 0f lea (%r12,%r12,4),%rdx 0.00 : 6c78: 85 d8 06 00 00 mov $0xffffffff,%eax 0.00 : 6c7d: 80 3d 00 00 00 lea 0x0(%rbp,%rdx,4),%rcx 0.00 : 6c82: 00 00 0f sub 0x4(%rcx),%eax 0.64 : 6c85: 85 e5 06 00 add 0x50(%rsp),%eax 0.00 : 6c89: 00 80 3d 00 00 00 js 6eb0 0.00 : 6c8f: 00 00 0f 85 lea (%r12,%r12,4),%rax 0.00 : 6c93: 14 07 00 00 80 testb $0x8,0x11(%rbp,%rax,4) 0.00 : 6c98: 3d 00 00 00 00 00 jne 6e20 0.00 : 6c9e: 0f 85 74 07 00 00 mov 0x0(%rip),%ecx # 6ca4 0.00 : 6ca4: 4b 8d test %ecx,%ecx 0.00 : 6ca6: 14 a4 b8 ff ff ff jne 6e20 0.00 : 6cac: ff 48 8d 4c 95 mov 0x48(%rsp),%rcx 0.00 : 6cb1: 00 2b 41 04 03 44 mov 0x75c(%rcx),%eax 0.00 : 6cb7: 24 50 0f cmp $0x6,%eax 0.00 : 6cba: 88 21 02 00 00 4b je 7098 0.00 : 6cc0: 8d 04 a4 f6 44 cmp $0xff,%eax 0.00 : 6cc5: 85 11 08 0f 85 82 je 7098 0.00 : 6ccb: 01 00 xor %ebx,%ebx 0.00 : 6ccd: 00 8b 0d 00 00 00 00 cmpb $0x0,0x0(%rip) # 6cd4 0.00 : 6cd4: 85 c9 0f 85 74 01 jne 6e32 0.00 : 6cda: 00 00 48 8b 4c 24 48 add $0xa8,%rsp 0.00 : 6ce1: 8b 81 mov %ebx,%eax 0.00 : 6ce3: 5c pop %rbx 0.00 : 6ce4: 07 pop %rbp 0.00 : 6ce5: 00 00 pop %r12 0.00 : 6ce7: 83 f8 pop %r13 0.00 : 6ce9: 06 0f pop %r14 0.00 : 6ceb: 84 d8 pop %r15 0.00 : 6ced: 03 retq 0.00 : 6cee: 00 00 xchg %ax,%ax 0.00 : 6cf0: 3d ff 00 00 movzbl 0x28(%rbp),%eax 0.00 : 6cf4: 00 0f cmp $0x1,%al 0.00 : 6cf6: 84 cd 03 00 00 31 je 7010 0.00 : 6cfc: db 80 cmp $0x2,%al 0.64 : 6cfe: 3d 00 00 00 00 00 je 7118 0.00 : 6d04: 0f 85 58 01 nopl 0x0(%rax) 0.00 : 6d08: 00 00 48 81 c4 a8 00 mov 0xe0(%rsp),%rcx 0.00 : 6d0f: 00 0.00 : 6d10: 00 89 d8 5b movzbl 0xd(%rcx),%edx 1.28 : 6d14: 5d 41 5c test $0x10,%dl 0.00 : 6d17: 41 5d 41 5e 41 5f jne 6c0d 0.00 : 6d1d: c3 66 90 0f mov 0x0(%r13),%r15d 0.00 : 6d21: b6 45 28 3c 01 mov %r15d,0x54(%rsp) 0.00 : 6d26: 0f 84 14 and $0x4,%edx 0.00 : 6d29: 03 00 00 3c 02 0f je 6c40 0.00 : 6d2f: 84 14 04 00 mov 0x50(%rsp),%edi 0.00 : 6d33: 00 0f test %edi,%edi 0.00 : 6d35: 1f 40 00 48 8b 8c jne 6c40 0.00 : 6d3b: 24 e0 00 00 cmpb $0x1,0x28(%rbp) 0.00 : 6d3f: 00 0f b6 51 0d f6 jne 6c40 0.00 : 6d45: c2 10 0f 85 lea (%r12,%r12,4),%rax 0.00 : 6d49: f0 fe ff ff 45 mov 0x0(%rbp,%rax,4),%r14d 0.00 : 6d4e: 8b 7d 00 44 89 mov %r14d,0x50(%rsp) 0.00 : 6d53: 7c 24 54 83 e2 jmpq 6c40 0.00 : 6d58: 04 0f 84 11 ff ff ff nopl 0x0(%rax,%rax,1) 0.00 : 6d5f: 8b 1.28 : 6d60: 7c 24 mov %ecx,%eax 0.00 : 6d62: 50 85 ff 0f sub 0x6c(%r8),%eax 0.64 : 6d66: 85 05 ff mov %r9d,%esi 0.00 : 6d69: ff ff 80 add $0x14,%esi 0.00 : 6d6c: 7d 28 sub %esi,%eax 0.00 : 6d6e: 01 0f cmp %eax,%ebx 0.00 : 6d70: 85 fb fe ff ff 4b jg 7130 0.00 : 6d76: 8d 04 a4 movslq %esi,%rax 0.00 : 6d79: 44 8b 74 85 00 44 89 add 0xe0(%r8),%rax 1.28 : 6d80: 74 24 50 test %rax,%rax 1.28 : 6d83: e9 e8 fe mov %rax,%rdx 0.00 : 6d86: ff ff 0f 1f 84 00 je 7160 0.64 : 6d8c: 00 00 00 cmp $0x30,%ebx 0.00 : 6d8f: 00 89 c8 41 2b 40 je 7100 0.00 : 6d95: 6c 44 test %ebx,%ebx 0.00 : 6d97: 89 ce 83 c6 14 29 jle 6af5 0.00 : 6d9d: f0 39 c3 movzbl (%rdx),%eax 1.28 : 6da0: 0f 8f ba 03 add $0x1,%rdx 0.00 : 6da4: 00 00 test %al,%al 0.00 : 6da6: 48 63 c6 49 03 80 je 6af5 0.00 : 6dac: e0 00 cmp $0x1,%al 0.00 : 6dae: 00 00 48 85 c0 48 je 7000 0.64 : 6db4: 89 c2 0f movzbl (%rdx),%ecx 1.28 : 6db7: 84 d4 03 cmp $0x1,%ecx 0.00 : 6dba: 00 00 83 fb 30 0f jle 6af5 0.00 : 6dc0: 84 6b 03 00 add $0x1,%rdx 0.64 : 6dc4: 00 85 cmp %ecx,%ebx 0.00 : 6dc6: db 0f jl 6d95 1.28 : 6dc8: 8e 58 cmp $0x5,%al 0.00 : 6dca: fd ff ff 0f b6 02 je 71d0 0.64 : 6dd0: 48 83 c2 movslq %ecx,%rax 0.00 : 6dd3: 01 84 sub %ecx,%ebx 0.00 : 6dd5: c0 0f 84 49 fd lea -0x2(%rdx,%rax,1),%rdx 0.00 : 6dda: ff ff jmp 6d95 0.00 : 6ddc: 3c 01 0f 84 nopl 0x0(%rax) 0.00 : 6de0: 4c 02 00 00 0f mov %r14d,0x0(%rbp,%rax,4) 0.00 : 6de5: b6 0a 83 f9 movzbl 0x10(%rbx),%ecx 0.00 : 6de9: 01 0f 8e 35 fd mov $0x1,%eax 0.00 : 6dee: ff ff 48 83 shll %cl,0x58(%rsp) 0.00 : 6df2: c2 01 39 cb mov 0x58(%rsp),%edx 0.00 : 6df6: 7c cd test %edx,%edx 0.00 : 6df8: 3c 05 0f 84 00 cmovne 0x58(%rsp),%eax 0.00 : 6dfd: 04 00 00 mov %eax,0x8(%rbx) 0.00 : 6e00: 48 63 c1 add %r14d,%eax 0.00 : 6e03: 29 cb 48 mov %eax,0x4(%rbx) 0.00 : 6e06: 8d 54 02 fe mov 0x8(%r13),%r11d 0.00 : 6e0a: eb b9 0f test %r11d,%r11d 0.00 : 6e0d: 1f 40 00 44 89 74 jne 6d08 0.00 : 6e13: 85 00 0f b6 mov %r15d,0x4(%r13) 0.00 : 6e17: 4b 10 b8 01 mov %r15d,0x0(%r13) 0.00 : 6e1b: 00 00 00 d3 64 jmpq 6d08 0.00 : 6e20: 24 58 8b 54 24 mov $0x1,%ebx 0.00 : 6e25: 58 85 d2 0f 45 44 24 cmpb $0x0,0x0(%rip) # 6e2c ??:0 5.13 : 6e2c: 58 89 43 08 44 01 je 6cda 0.00 : 6e32: f0 89 43 04 lea (%r12,%r12,4),%rax 0.00 : 6e36: 45 8b 5d movzbl %bl,%edx 0.00 : 6e39: 08 45 85 db 0f 85 f5 mov $0x0,%rdi 0.00 : 6e40: fe ff ff 45 89 lea 0x0(%rbp,%rax,4),%rsi 0.00 : 6e45: 7d 04 45 89 mov 0x0(%rbp,%rax,4),%ecx 0.00 : 6e49: 7d 00 e9 e8 mov 0x8(%r13),%eax 0.00 : 6e4d: fe ff ff bb mov %eax,0x10(%rsp) 0.00 : 6e51: 01 00 00 00 mov 0x4(%r13),%eax 0.00 : 6e55: 80 3d 00 00 mov %eax,0x8(%rsp) 0.00 : 6e59: 00 00 00 0f mov 0x0(%r13),%eax 0.00 : 6e5d: 84 a8 fe mov %eax,(%rsp) 0.00 : 6e60: ff ff 4b 8d mov 0x8(%rsi),%r9d 0.00 : 6e64: 04 a4 xor %eax,%eax 0.00 : 6e66: 0f b6 d3 48 mov 0x4(%rsi),%r8d 0.00 : 6e6a: c7 c7 00 00 00 00 48 mov $0x0,%rsi 0.00 : 6e71: 8d 74 85 00 8b callq 6e76 0.00 : 6e76: 4c 85 00 41 8b jmpq 6cda 0.00 : 6e7b: 45 08 89 44 24 nopl 0x0(%rax,%rax,1) ??:0 1.28 : 6e80: 10 41 8b 45 04 89 44 mov 0x0(%rip),%rax # 6e87 4.49 : 6e87: 24 08 41 test %rax,%rax 0.00 : 6e8a: 8b 45 00 89 04 24 je 6b03 1.28 : 6e90: 44 8b xor %esi,%esi 0.00 : 6e92: 4e 08 31 c0 44 cmpl $0x0,0x40(%rsp) 0.00 : 6e97: 8b 46 04 48 c7 lea -0x1(%r12),%edx 0.00 : 6e9c: c6 00 00 mov %r10,%rdi 0.00 : 6e9f: 00 00 e8 00 sete %sil 0.00 : 6ea3: 00 00 callq *%rax 0.64 : 6ea5: 00 e9 5f fe ff mov %ax,0x5e(%rsp) 0.00 : 6eaa: ff cwtl 0.00 : 6eab: 0f 1f 44 00 00 jmpq 6b0c 0.00 : 6eb0: 48 8b 05 00 mov 0x0(%rbp,%rdx,4),%edi 0.00 : 6eb4: 00 00 00 lea -0x1(%rdi),%eax 0.00 : 6eb7: 48 85 c0 0f sub 0x8(%r13),%eax 0.64 : 6ebb: 84 73 fc cmp %r14d,%eax 0.00 : 6ebe: ff ff 31 f6 83 7c jns 6c8f 0.64 : 6ec4: 24 40 00 41 mov 0x0(%r13),%edx 0.64 : 6ec8: 8d 54 mov %edx,%eax 0.00 : 6eca: 24 ff not %eax 0.00 : 6ecc: 4c 89 d7 add %r15d,%eax 0.00 : 6ecf: 40 0f 94 c6 ff d0 jns 6c8f 0.00 : 6ed5: 66 89 44 mov 0x8(%rcx),%esi 0.00 : 6ed8: 24 5e 98 sub $0x1,%edx 0.00 : 6edb: e9 5c fc ff ff mov $0x101d0,%eax 0.00 : 6ee0: 8b 7c 95 00 8d 47 cmp $0x101d0,%esi 0.00 : 6ee6: ff 41 2b cmovae %esi,%eax 0.00 : 6ee9: 45 08 sub %eax,%edx 0.00 : 6eeb: 44 39 f0 cmp %r15d,%edx 0.00 : 6eee: 0f 89 cb fd ff ff jns 6c8f 0.64 : 6ef4: 41 8b 55 00 89 d0 f7 mov 0xe0(%rsp),%rdx 0.00 : 6efb: d0 0.00 : 6efc: 44 01 f8 0f testb $0x2,0xd(%rdx) 1.28 : 6f00: 89 ba jne 6f0a 0.00 : 6f02: fd ff ff 8b movzbl 0x10(%rcx),%ecx 0.00 : 6f06: 71 08 83 ea shll %cl,0x58(%rsp) 0.00 : 6f0a: 01 b8 d0 mov %r15d,%eax 0.00 : 6f0d: 01 01 00 81 sub 0x54(%rsp),%eax 0.00 : 6f11: fe d0 01 01 mov 0x58(%rsp),%ecx 0.00 : 6f15: 00 0f 43 lea (%rax,%rcx,1),%edx 0.00 : 6f18: c6 29 cmp %edx,%esi 0.00 : 6f1a: c2 44 jae 6f28 0.00 : 6f1c: 39 fa 0f 89 lea (%r12,%r12,4),%rax 0.00 : 6f20: 9b fd ff ff mov 0x0(%rbp,%rax,4),%edi 0.00 : 6f24: 48 8b 94 24 mov %edx,0x8(%rbp,%rax,4) 0.64 : 6f28: e0 00 00 cmp %r14d,%edi 0.00 : 6f2b: 00 f6 jns 6f3b 0.64 : 6f2d: 42 0d 02 75 lea (%r12,%r12,4),%rax 0.64 : 6f31: 08 0f b6 49 10 orb $0x10,0x11(%rbp,%rax,4) 0.00 : 6f36: d3 64 24 58 44 mov %r14d,0x0(%rbp,%rax,4) 0.64 : 6f3b: 89 f8 2b 44 24 54 8b mov 0xe0(%rsp),%rax 0.00 : 6f42: 4c 0.64 : 6f43: 24 58 8d 14 testb $0x10,0xd(%rax) 0.64 : 6f47: 08 39 je 6f6b 0.64 : 6f49: d6 73 0c 4b lea (%r12,%r12,4),%rax 0.00 : 6f4d: 8d 04 a4 8b 7c lea 0x0(%rbp,%rax,4),%rdx 0.00 : 6f52: 85 00 89 54 lea 0x10(%rdx),%rax 0.00 : 6f56: 85 08 44 39 testb $0x20,0x1(%rax) 0.64 : 6f5a: f7 79 0e 4b 8d 04 jne 730d 0.00 : 6f60: a4 80 4c 85 mov 0x54(%rsp),%ecx 0.00 : 6f64: 11 10 44 mov %ecx,0xc(%rdx) 0.00 : 6f67: 89 74 85 00 orb $0x20,0x1(%rax) 0.64 : 6f6b: 48 8b 84 24 mov 0x8(%r13),%edx 3.85 : 6f6f: e0 00 test %edx,%edx 0.00 : 6f71: 00 00 je 6f8a 0.64 : 6f73: f6 40 0d 10 lea (%r12,%r12,4),%rax 0.00 : 6f77: 74 22 4b 8d mov 0x4(%rbp,%rax,4),%eax 1.28 : 6f7b: 04 a4 48 cmp %r14d,%eax 0.64 : 6f7e: 8d 54 jns 6f8a 0.00 : 6f80: 85 00 sub %eax,%edx 0.00 : 6f82: 48 8d 42 10 lea (%rdx,%r14,1),%eax 0.00 : 6f86: f6 40 01 20 mov %eax,0x8(%r13) 0.00 : 6f8a: 0f 85 ad 03 mov 0x58(%rsp),%edx 0.00 : 6f8e: 00 00 8b add %r15d,%edx 0.00 : 6f91: 4c 24 mov %edx,%eax 0.00 : 6f93: 54 89 not %eax 0.64 : 6f95: 4a 0c 80 48 add 0x4(%r13),%eax 0.00 : 6f99: 01 20 41 8b 55 08 js 7208 0.00 : 6f9f: 85 d2 74 17 mov 0x54(%rsp),%edx 0.64 : 6fa3: 4b 8d 04 a4 cmp %edx,0x0(%r13) 0.00 : 6fa7: 8b 44 jne 6fae 1.28 : 6fa9: 85 04 44 39 f0 andb $0xef,0x11(%r13) 0.64 : 6fae: 79 0a 29 c2 42 cmpl $0x3,0x3c(%rsp) 0.00 : 6fb3: 8d 04 32 41 89 45 jne 6e20 0.00 : 6fb9: 08 8b 54 24 movzbl 0x29(%rbp),%eax 0.00 : 6fbd: 58 44 01 fa cmp 0x40(%rsp),%eax 0.00 : 6fc1: 89 d0 f7 d0 41 03 je 7224 2.56 : 6fc7: 45 04 0f 88 69 movzbl 0x40(%rsp),%edx 1.28 : 6fcc: 02 00 00 8b 54 mov $0x1,%ebx 0.00 : 6fd1: 24 54 41 mov %dl,0x29(%rbp) 0.64 : 6fd4: 39 55 00 75 mov 0x50(%rsp),%ecx 0.00 : 6fd8: 05 41 80 mov %ecx,0x2c(%rbp) 0.00 : 6fdb: 65 11 ef 83 mov 0x54(%rsp),%eax 0.00 : 6fdf: 7c 24 3c 03 mov %r14d,0x34(%rbp) 0.00 : 6fe3: 0f 85 67 mov %eax,0x30(%rbp) 0.00 : 6fe6: fe ff ff 0f b6 movzwl 0x58(%rsp),%edx 0.00 : 6feb: 45 29 3b 44 movb $0x0,0x2a(%rbp) 0.00 : 6fef: 24 40 0f 84 mov %dx,0x38(%rbp) 0.00 : 6ff3: 5d 02 00 00 0f jmpq 6e25 0.00 : 6ff8: b6 54 24 40 bb 01 00 nopl 0x0(%rax,%rax,1) 0.00 : 6fff: 00 3.21 : 7000: 00 88 55 sub $0x1,%ebx 0.64 : 7003: 29 8b 4c 24 50 jmpq 6d95 0.00 : 7008: 89 4d 2c 8b 44 24 54 nopl 0x0(%rax,%rax,1) 0.00 : 700f: 44 0.00 : 7010: 89 75 34 89 45 mov 0x40(%rsp),%r10d 0.00 : 7015: 30 0f b7 test %r10d,%r10d 0.00 : 7018: 54 24 58 c6 45 2a jne 6d08 0.00 : 701e: 00 66 89 55 lea (%r12,%r12,4),%rax 0.00 : 7022: 38 e9 2d fe ff cmp %r14d,0x0(%rbp,%rax,4) 0.00 : 7027: ff 0f 1f 84 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : 702e: 00 0.00 : 702f: 00 83 eb 01 e9 8d jns 6d08 0.00 : 7035: fd ff ff 0f 1f lea 0x0(%rbp,%rdx,1),%rdx 0.00 : 703a: 84 00 00 mov %rbx,%rcx 0.00 : 703d: 00 00 00 44 mov %r14d,0x4(%rdx) 0.00 : 7041: 8b 54 24 40 45 mov %r14d,0x0(%rbp,%rax,4) 0.00 : 7046: 85 d2 0f 85 ea mov $0x1,%eax 0.00 : 704b: fc ff ff 4b 8d mov 0x58(%rsp),%r9d 0.00 : 7050: 04 a4 44 test %r9d,%r9d 0.00 : 7053: 39 74 85 00 48 cmovne 0x58(%rsp),%eax 0.00 : 7058: 8d 14 85 mov %eax,0x8(%rdx) 0.00 : 705b: 00 00 00 00 0f 89 d3 mov 0xe0(%rsp),%rdx 0.00 : 7062: fc 0.00 : 7063: ff ff 48 8d mov 0x2c(%rsp),%esi 0.00 : 7067: 54 15 00 48 89 mov 0x30(%rsp),%rdi 0.00 : 706c: d9 44 89 72 04 callq 68c0 0.00 : 7071: 44 89 74 85 00 jmpq 6d08 0.00 : 7076: b8 01 00 00 00 44 8b nopw %cs:0x0(%rax,%rax,1) 0.00 : 707d: 4c 24 58 0.00 : 7080: 45 85 c9 0f 45 testb $0x1,0x11(%r13) 0.00 : 7085: 44 24 58 89 42 08 jne 6bf3 0.00 : 708b: 48 8b 94 24 e0 nopl 0x0(%rax,%rax,1) 0.00 : 7090: 00 00 00 8b 74 jmpq 6be5 0.00 : 7095: 24 2c 48 nopl (%rax) 0.00 : 7098: 8b 7c 24 30 e8 4f f8 nopl 0x0(%rax,%rax,1) 0.00 : 709f: ff 0.00 : 70a0: ff e9 92 fc ff callq 70a5 0.00 : 70a5: ff 66 test %eax,%eax 0.00 : 70a7: 2e 0f 1f 84 00 00 je 6ccb 0.00 : 70ad: 00 00 00 41 lea (%r12,%r12,4),%rcx 0.00 : 70b1: f6 45 11 01 0f mov $0xffffffff,%eax 0.00 : 70b6: 85 68 fb ff ff 0f 1f mov $0x0,%rdx 0.00 : 70bd: 44 00 00 e9 50 lea 0x0(%rbp,%rcx,4),%rsi 0.00 : 70c2: fb ff ff sub 0x4(%rsi),%eax 0.00 : 70c5: 0f 1f 00 0f add 0x50(%rsp),%eax 0.00 : 70c9: 1f 84 00 00 00 00 js 7168 0.00 : 70cf: 00 e8 00 00 00 movzbl 0x2b(%rsp),%edi 0.00 : 70d4: 00 85 c0 0f 84 mov %rdx,0x8(%rsp) 0.00 : 70d9: 1e fc ff xor %r9d,%r9d 0.00 : 70dc: ff 4b 8d 0c a4 mov 0x30(%rsp),%rdx 0.00 : 70e1: b8 ff ff xor %r8d,%r8d 0.00 : 70e4: ff ff xor %ecx,%ecx 0.00 : 70e6: 48 c7 xor %esi,%esi 0.00 : 70e8: c2 00 xor %eax,%eax 0.00 : 70ea: 00 00 00 48 8d 74 8d movq $0x0,(%rsp) 0.00 : 70f1: 00 0.00 : 70f2: 2b 46 xor %ebx,%ebx 0.00 : 70f4: 04 03 44 24 50 callq 70f9 0.00 : 70f9: 0f 88 99 00 00 jmpq 6e25 0.00 : 70fe: 00 0f xchg %ax,%ax 0.00 : 7100: b6 7c 24 2b 48 89 cmpl $0xa080101,(%rax) 0.00 : 7106: 54 24 08 45 31 c9 jne 6d9d 0.00 : 710c: 48 8b 54 24 nopl 0x0(%rax) 0.00 : 7110: 30 45 31 c0 31 jmpq 6af5 0.00 : 7115: c9 31 f6 nopl (%rax) 0.00 : 7118: 31 c0 48 c7 04 cmpl $0x1,0x40(%rsp) 0.00 : 711d: 24 00 00 nopl (%rax) 0.00 : 7120: 00 00 31 db e8 00 jne 6d08 0.00 : 7126: 00 00 xchg %ax,%ax 0.00 : 7128: 00 e9 27 fd ff jmpq 701e 0.00 : 712d: ff 66 90 nopl (%rax) 0.00 : 7130: 81 38 01 01 08 lea 0x70(%rsp),%r15 0.00 : 7135: 0a 0f 85 91 fc mov 0x30(%rsp),%rdi 0.00 : 713a: ff ff mov %ebx,%ecx 0.00 : 713c: 0f 1f 40 00 e9 mov %r10,0x20(%rsp) 0.00 : 7141: e0 f9 ff mov %r15,%rdx 0.00 : 7144: ff 0f 1f 00 83 callq 7149 0.00 : 7149: 7c 24 test %eax,%eax 0.00 : 714b: 40 01 0f 1f 00 mov 0x20(%rsp),%r10 0.00 : 7150: 0f 85 js 7160 0.00 : 7152: e2 fb ff mov %r15,%rax 0.00 : 7155: ff 66 90 e9 f1 jmpq 6d80 0.00 : 715a: fe ff ff 0f 1f 00 nopw 0x0(%rax,%rax,1) 0.00 : 7160: 4c 8d ud2 0.00 : 7162: 7c 24 jmp 7162 0.00 : 7164: 70 48 8b 7c nopl 0x0(%rax) 0.00 : 7168: 24 30 89 d9 mov 0x0(%rbp,%rcx,4),%eax 0.00 : 716c: 4c 89 54 24 20 4c 89 mov $0x0,%rdx 0.00 : 7173: fa e8 00 sub $0x1,%eax 0.00 : 7176: 00 00 00 85 sub 0x8(%r13),%eax 0.00 : 717a: c0 4c 8b cmp %r14d,%eax 0.00 : 717d: 54 24 20 78 0e 4c jns 70cf 0.00 : 7183: 89 f8 e9 26 mov 0x0(%r13),%ecx 0.00 : 7187: fc ff ff 66 0f 1f 44 mov $0x0,%rdx 0.00 : 718e: 00 00 mov %ecx,%eax 0.00 : 7190: 0f 0b not %eax 0.00 : 7192: eb fe 0f add %r15d,%eax 0.00 : 7195: 1f 40 00 8b 44 8d jns 70cf 0.00 : 719b: 00 48 c7 c2 00 00 00 cmpl $0x101d0,0x8(%rsi) 0.00 : 71a2: 00 83 e8 01 41 mov $0x101d0,%edx 0.00 : 71a7: 2b 45 08 lea -0x1(%rcx),%eax 0.00 : 71aa: 44 39 f0 0f cmovae 0x8(%rsi),%edx 0.00 : 71ae: 89 4c sub %edx,%eax 0.00 : 71b0: ff ff ff 41 8b 4d 00 mov $0x0,%rdx 0.00 : 71b7: 48 c7 c2 cmp %r15d,%eax 0.00 : 71ba: 00 00 00 00 89 c8 f7 mov $0x0,%rax 0.00 : 71c1: d0 44 01 f8 cmovs %rax,%rdx 0.00 : 71c5: 0f 89 34 ff ff jmpq 70cf 0.00 : 71ca: ff 81 7e 08 d0 01 nopw 0x0(%rax,%rax,1) 0.00 : 71d0: 01 00 ba cmp $0x9,%ecx 0.00 : 71d3: d0 01 01 00 8d 41 jle 6dd0 0.00 : 71d9: ff 0f 43 lea -0x2(%rcx),%esi 0.00 : 71dc: 56 08 29 d0 test $0x7,%sil 0.00 : 71e0: 48 c7 c2 00 00 00 jne 6dd0 0.00 : 71e6: 00 44 39 mov %r12d,%ecx 0.00 : 71e9: f8 48 xor %edi,%edi 0.00 : 71eb: c7 c0 00 movslq %edi,%rax 0.00 : 71ee: 00 00 00 48 mov 0x4(%rdx,%rax,1),%ebx 0.00 : 71f2: 0f 48 bswap %ebx 0.00 : 71f4: d0 e9 cmp %ebx,%ecx 0.00 : 71f6: 05 ff ff cmovns %ecx,%ebx 0.00 : 71f9: ff 66 0f add $0x8,%edi 0.00 : 71fc: 1f 44 cmp %edi,%esi 0.00 : 71fe: 00 00 83 f9 09 0f jle 6af8 0.00 : 7204: 8e f7 mov %ebx,%ecx 0.00 : 7206: fb ff jmp 71eb 1.28 : 7208: ff 8d 71 fe mov %edx,0x4(%r13) 1.92 : 720c: 40 f6 c6 07 mov 0x58(%rsp),%esi 0.00 : 7210: 0f 85 test %esi,%esi 0.00 : 7212: ea fb ff ff 44 89 jne 6f9f 0.00 : 7218: e1 31 ff lea 0x1(%rdx),%eax 0.00 : 721b: 48 63 c7 8b mov %eax,0x4(%r13) 0.00 : 721f: 5c 02 04 0f cb jmpq 6f9f 0.64 : 7224: 39 d9 0f 49 mov 0x50(%rsp),%ecx 1.28 : 7228: d9 83 c7 cmp %ecx,0x2c(%rbp) 0.00 : 722b: 08 39 fe 0f 8e f4 jne 6fc7 0.00 : 7231: f8 ff ff 89 mov 0x54(%rsp),%eax 0.00 : 7235: d9 eb e3 cmp %eax,0x30(%rbp) 0.00 : 7238: 41 89 55 04 8b 74 jne 6fc7 0.00 : 723e: 24 58 85 f6 cmp %r14d,0x34(%rbp) 0.00 : 7242: 0f 85 87 fd ff ff jne 6fc7 0.00 : 7248: 8d 42 01 41 movzwl 0x38(%rbp),%eax 0.00 : 724c: 89 45 04 e9 cmp 0x58(%rsp),%eax 0.00 : 7250: 7b fd ff ff 8b 4c jne 6fc7 0.00 : 7256: 24 50 39 4d addb $0x1,0x2a(%rbp) 0.00 : 725a: 2c 0f 85 96 fd mov $0x1,%ebx 0.00 : 725f: ff ff 8b 44 24 jmpq 6e25 0.00 : 7264: 54 39 45 30 mov 0x58(%rsp),%edx 0.00 : 7268: 0f 85 89 fd ff ff movswl 0x5e(%rsp),%r8d 0.00 : 726e: 44 39 75 mov %r15d,%r9d 0.00 : 7271: 34 0f 85 7f mov 0x54(%rsp),%ecx 0.00 : 7275: fd ff ff 0f b7 45 38 mov $0x0,%rsi 0.00 : 727c: 3b 44 24 58 0f 85 71 mov $0x0,%rdi 0.00 : 7283: fd ff xor %eax,%eax 0.00 : 7285: ff 80 45 2a 01 mov %r14d,0x10(%rsp) 0.00 : 728a: bb 01 00 00 mov %edx,0x8(%rsp) 0.00 : 728e: 00 e9 c1 fb mov 0x50(%rsp),%edx 0.00 : 7292: ff ff 8b 54 mov %r8d,(%rsp) 0.00 : 7296: 24 58 44 0f bf callq 729b 0.00 : 729b: 44 24 5e 45 89 jmpq 6b6e 0.00 : 72a0: f9 8b 4c 24 54 48 c7 mov $0x0,%rsi 0.00 : 72a7: c6 00 00 00 00 48 c7 mov $0x0,%rdi 0.00 : 72ae: c7 00 xor %eax,%eax 0.00 : 72b0: 00 00 00 31 c0 callq 72b5 0.00 : 72b5: 44 89 74 24 10 jmpq 6b34 0.00 : 72ba: 89 54 24 08 lea (%r12,%r12,4),%rax 0.00 : 72be: 8b 54 24 50 44 89 04 mov $0x0,%rsi 0.00 : 72c5: 24 e8 00 00 00 00 e9 mov $0x0,%rdi 0.00 : 72cc: ce f8 ff ff mov 0x0(%rbp,%rax,4),%edx 0.00 : 72d0: 48 c7 c6 00 00 lea 0x0(%rbp,%rax,4),%rcx 0.00 : 72d5: 00 00 48 c7 c7 movzbl 0x10(%r13),%eax 0.00 : 72da: 00 00 00 00 31 movzbl 0x10(%rcx),%r9d 0.00 : 72df: c0 e8 00 00 mov %eax,0x18(%rsp) 0.00 : 72e3: 00 00 e9 7a mov 0x8(%r13),%eax 0.00 : 72e7: f8 ff ff 4b mov %eax,0x10(%rsp) 0.00 : 72eb: 8d 04 a4 48 mov 0x4(%r13),%eax 0.00 : 72ef: c7 c6 00 00 mov %eax,0x8(%rsp) 0.00 : 72f3: 00 00 48 c7 mov 0x0(%r13),%eax 0.00 : 72f7: c7 00 00 mov %eax,(%rsp) 0.00 : 72fa: 00 00 8b 54 mov 0x8(%rcx),%r8d 0.00 : 72fe: 85 00 xor %eax,%eax 0.00 : 7300: 48 8d 4c mov 0x4(%rcx),%ecx 0.00 : 7303: 85 00 41 0f b6 callq 7308 0.00 : 7308: 45 10 44 0f b6 jmpq 6b80 1.92 : 730d: 49 10 89 44 mov 0x54(%rsp),%eax 1.92 : 7311: 24 18 41 cmp %eax,0xc(%rdx) 2.56 : 7314: 8b 45 08 89 44 24 jns 6f6b 0.64 : 731a: 10 41 8b mov %eax,0xc(%rdx) 0.64 : 731d: 45 04 89 nopl (%rax) 0.00 : 7320: 44 24 08 41 8b jmpq 6f6b 0.00 : 7325: 45 00 89 04 24 44 8b mov $0x0,%rsi 0.00 : 732c: 41 08 31 c0 8b 49 04 mov $0x0,%rdi 0.00 : 7333: e8 00 xor %eax,%eax 0.00 : 7335: 00 00 00 e9 73 callq 733a 0.00 : 733a: f8 ff ff 8b 44 jmpq 6c4d 0.00 : 733f: 24 54 39 42 mov 0x58(%rsp),%eax 0.00 : 7343: 0c 0f 89 51 fc ff movswl 0x5e(%rsp),%r8d 0.00 : 7349: ff 89 42 mov %r15d,%r9d 0.00 : 734c: 0c 0f 1f 00 mov 0x54(%rsp),%ecx 0.00 : 7350: e9 46 fc ff mov 0x50(%rsp),%edx 0.00 : 7354: ff 48 c7 c6 00 00 00 mov $0x0,%rsi 0.00 : 735b: 00 48 c7 c7 00 00 00 mov $0x0,%rdi 0.00 : 7362: 00 31 c0 e8 00 mov %r14d,0x10(%rsp) 0.00 : 7367: 00 00 00 e9 mov %eax,0x8(%rsp) 0.00 : 736b: 0e f9 xor %eax,%eax 0.00 : 736d: ff ff 8b 44 mov %r8d,(%rsp) 0.00 : 7371: 24 58 44 0f bf callq 7376 0.00 : 7376: 44 24 5e 45 89 jmpq 6c5a 0.00 : 737b: f9 8b 4c 24 lea (%r12,%r12,4),%rax 0.00 : 737f: 54 8b 54 24 50 48 c7 mov $0x0,%rsi 0.00 : 7386: c6 00 00 00 00 48 c7 mov $0x0,%rdi 0.00 : 738d: c7 00 00 00 mov 0x0(%rbp,%rax,4),%edx 0.00 : 7391: 00 44 89 74 24 lea 0x0(%rbp,%rax,4),%rcx 0.00 : 7396: 10 89 44 24 08 movzbl 0x10(%r13),%eax 0.00 : 739b: 31 c0 44 89 04 movzbl 0x10(%rcx),%r9d 0.00 : 73a0: 24 e8 00 00 mov %eax,0x18(%rsp) 0.00 : 73a4: 00 00 e9 df mov 0x8(%r13),%eax 0.00 : 73a8: f8 ff ff 4b mov %eax,0x10(%rsp) 0.00 : 73ac: 8d 04 a4 48 mov 0x4(%r13),%eax 0.00 : 73b0: c7 c6 00 00 mov %eax,0x8(%rsp) 0.00 : 73b4: 00 00 48 c7 mov 0x0(%r13),%eax 0.00 : 73b8: c7 00 00 mov %eax,(%rsp) 0.00 : 73bb: 00 00 8b 54 mov 0x8(%rcx),%r8d 0.00 : 73bf: 85 00 xor %eax,%eax 0.00 : 73c1: 48 8d 4c mov 0x4(%rcx),%ecx 0.00 : 73c4: 85 00 41 0f b6 callq 73c9 0.00 : 73c9: 45 10 44 0f b6 jmpq 6c67 0.00 : 73ce: 49 10 89 44 24 18 41 mov $0x0,%rsi 0.00 : 73d5: 8b 45 08 89 44 24 10 mov $0x0,%rdi 0.00 : 73dc: 41 8b xor %eax,%eax 0.00 : 73de: 45 04 89 44 24 callq 73e3 0.00 : 73e3: 08 41 8b 45 00 jmpq 6b27 0.00 : 73e8: 89 04 24 44 lea (%r12,%r12,4),%rcx 0.00 : 73ec: 8b 41 08 31 mov 0x0(%r13),%r8d 0.00 : 73f0: c0 8b 49 04 e8 mov $0xffffffff,%edx 0.00 : 73f5: 00 00 00 00 e9 mov $0x101d0,%eax 0.00 : 73fa: 99 f8 ff ff 48 c7 c6 mov $0x0,%rdi 0.00 : 7401: 00 00 00 00 48 lea 0x0(%rbp,%rcx,4),%rsi 0.00 : 7406: c7 c7 00 00 mov 0x0(%rbp,%rcx,4),%ecx 0.00 : 740a: 00 00 31 c0 lea -0x1(%r8),%r9d 0.00 : 740e: e8 00 00 not %r8d 0.00 : 7411: 00 00 e9 3f f7 ff ff cmpl $0x101d0,0x8(%rsi) 0.00 : 7418: 4b 8d 0c a4 cmovae 0x8(%rsi),%eax 0.00 : 741c: 45 8b add %edx,%ecx 0.00 : 741e: 45 00 ba sub 0x4(%rsi),%edx 0.00 : 7421: ff ff ff ff sub 0x8(%r13),%ecx 0.00 : 7425: b8 d0 01 01 add 0x50(%rsp),%edx 0.00 : 7429: 00 48 c7 add %r15d,%r8d 0.00 : 742c: c7 00 00 00 shr $0x1f,%r8d 0.00 : 7430: 00 48 8d 74 8d 00 8b mov $0x0,%rsi 0.00 : 7437: 4c 8d 00 sub %eax,%r9d 0.00 : 743a: 45 8d xor %eax,%eax 0.00 : 743c: 48 ff 41 sub %r15d,%r9d 0.00 : 743f: f7 d0 81 sub %r14d,%ecx 0.00 : 7442: 7e 08 d0 shr $0x1f,%edx 0.00 : 7445: 01 01 00 shr $0x1f,%ecx 0.00 : 7448: 0f 43 46 08 shr $0x1f,%r9d 0.00 : 744c: 01 d1 2b 56 04 callq 7451 0.00 : 7451: 41 2b 4d 08 03 jmpq 6c74 : 7456: 54 24 50 45 01 f8 41 nopw %cs:0x0(%rax,%rax,1) : 745d: c1 e8 1f : 7460: 48 c7 push %r13 : 7462: c6 00 push %r12 : 7464: 00 00 00 mov %edx,%r12d : 7467: 41 push %rbp : 7468: 29 c1 31 mov %rdi,%rbp : 746b: c0 push %rbx : 746c: 45 29 f9 mov %rsi,%rbx : 746f: 44 29 f1 c1 sub $0x48,%rsp : 7473: ea 1f c1 mov 0x68(%rsi),%eax : 7476: e9 1f 41 sub 0x6c(%rsi),%eax : 7479: c1 e9 sub %edx,%eax : 747b: 1f e8 00 cmp $0x13,%eax : 747e: 00 00 00 e9 1e f8 jle 7610 : 7484: ff ff 66 movslq %edx,%r8 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 47.47 ??:0 28.48 ??:0 21.52 ??:0 1.90 ??:0 0.63 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000db0c0 <__lseek>: ??:0 21.52 : db0c0: 83 3d ed c5 29 00 00 cmpl $0x0,0x29c5ed(%rip) # 3776b4 <__libc_multiple_threads> 28.48 : db0c7: 75 10 jne db0d9 <__lseek_nocancel+0x10> : : 00000000000db0c9 <__lseek_nocancel>: ??:0 0.63 : db0c9: b8 08 00 00 00 mov $0x8,%eax 0.00 : db0ce: 0f 05 syscall ??:0 47.47 : db0d0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : db0d6: 73 31 jae db109 <__lseek_nocancel+0x40> ??:0 1.90 : db0d8: c3 retq 0.00 : db0d9: 48 83 ec 08 sub $0x8,%rsp 0.00 : db0dd: e8 4e d1 00 00 callq e8230 <__libc_enable_asynccancel> 0.00 : db0e2: 48 89 04 24 mov %rax,(%rsp) 0.00 : db0e6: b8 08 00 00 00 mov $0x8,%eax 0.00 : db0eb: 0f 05 syscall 0.00 : db0ed: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : db0f1: 48 89 c2 mov %rax,%rdx 0.00 : db0f4: e8 97 d1 00 00 callq e8290 <__libc_disable_asynccancel> 0.00 : db0f9: 48 89 d0 mov %rdx,%rax 0.00 : db0fc: 48 83 c4 08 add $0x8,%rsp 0.00 : db100: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : db106: 73 01 jae db109 <__lseek_nocancel+0x40> 0.00 : db108: c3 retq 0.00 : db109: 48 8b 0d 28 6d 29 00 mov 0x296d28(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : db110: 31 d2 xor %edx,%edx 0.00 : db112: 48 29 c2 sub %rax,%rdx 0.00 : db115: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : db118: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : db11c: eb ea jmp db108 <__lseek_nocancel+0x3f> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 3.52 ??:0 2.82 ??:0 2.82 ??:0 2.82 ??:0 2.82 ??:0 2.11 ??:0 2.11 ??:0 2.11 ??:0 2.11 ??:0 2.11 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 1.41 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000442c0 <_IO_vfprintf>: ??:0 1.41 : 442c0: 55 push %rbp 0.00 : 442c1: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 442c8: 00 00 0.00 : 442ca: 48 89 e5 mov %rsp,%rbp 0.00 : 442cd: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 442d1: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 442d5: 49 89 d6 mov %rdx,%r14 0.00 : 442d8: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 442dc: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 442e0: 49 89 fc mov %rdi,%r12 0.00 : 442e3: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 442e7: 48 81 ec e0 07 00 00 sub $0x7e0,%rsp 0.00 : 442ee: 48 8b 15 43 db 32 00 mov 0x32db43(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 442f5: 48 89 85 58 f8 ff ff mov %rax,-0x7a8(%rbp) 1.41 : 442fc: 48 89 b5 b0 f8 ff ff mov %rsi,-0x750(%rbp) 0.00 : 44303: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 44306: 89 95 70 f9 ff ff mov %edx,-0x690(%rbp) 0.00 : 4430c: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 0.00 : 44312: 85 c0 test %eax,%eax 0.00 : 44314: 0f 85 f6 01 00 00 jne 44510 <_IO_vfprintf+0x250> 0.00 : 4431a: c7 87 c0 00 00 00 ff movl $0xffffffff,0xc0(%rdi) 0.00 : 44321: ff ff ff 1.41 : 44324: 41 8b 1c 24 mov (%r12),%ebx 0.00 : 44328: f6 c3 08 test $0x8,%bl 0.00 : 4432b: 0f 85 df 03 00 00 jne 44710 <_IO_vfprintf+0x450> 0.00 : 44331: 48 83 bd b0 f8 ff ff cmpq $0x0,-0x750(%rbp) 0.00 : 44338: 00 0.00 : 44339: 0f 84 21 27 00 00 je 46a60 <_IO_vfprintf+0x27a0> 0.00 : 4433f: f6 c3 02 test $0x2,%bl 0.00 : 44342: 0f 85 f8 01 00 00 jne 44540 <_IO_vfprintf+0x280> 0.00 : 44348: 49 8b 06 mov (%r14),%rax 0.70 : 4434b: 48 8d 95 00 ff ff ff lea -0x100(%rbp),%rdx 0.00 : 44352: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 44359: be 25 00 00 00 mov $0x25,%esi 0.00 : 4435e: 48 89 95 50 f8 ff ff mov %rdx,-0x7b0(%rbp) 0.00 : 44365: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) 0.00 : 4436c: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 44370: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 44377: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 4437b: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 44382: e8 79 18 04 00 callq 85c00 0.00 : 44387: 66 85 db test %bx,%bx 0.00 : 4438a: 48 89 85 50 f9 ff ff mov %rax,-0x6b0(%rbp) 1.41 : 44391: c7 85 8c f9 ff ff 00 movl $0x0,-0x674(%rbp) 0.00 : 44398: 00 00 00 0.00 : 4439b: 0f 88 87 00 00 00 js 44428 <_IO_vfprintf+0x168> 0.00 : 443a1: 8b 0d 09 33 33 00 mov 0x333309(%rip),%ecx # 3776b0 <__libc_pthread_functions_init> 0.00 : 443a7: 85 c9 test %ecx,%ecx 1.41 : 443a9: 89 8d 8c f9 ff ff mov %ecx,-0x674(%rbp) 0.00 : 443af: 0f 85 cb 26 00 00 jne 46a80 <_IO_vfprintf+0x27c0> 0.00 : 443b5: 48 8b 05 8c db 32 00 mov 0x32db8c(%rip),%rax # 371f48 <_DYNAMIC+0x3e8> 0.70 : 443bc: 4c 89 a5 e8 fe ff ff mov %r12,-0x118(%rbp) 0.00 : 443c3: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.70 : 443ca: 66 85 db test %bx,%bx 0.00 : 443cd: 78 59 js 44428 <_IO_vfprintf+0x168> 0.00 : 443cf: 4d 8b 8c 24 88 00 00 mov 0x88(%r12),%r9 0.00 : 443d6: 00 0.00 : 443d7: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 443de: 00 00 0.00 : 443e0: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 443e4: 74 3d je 44423 <_IO_vfprintf+0x163> 0.00 : 443e6: 31 d2 xor %edx,%edx 0.00 : 443e8: be 01 00 00 00 mov $0x1,%esi 0.00 : 443ed: 89 d0 mov %edx,%eax 0.00 : 443ef: 83 3d be 32 33 00 00 cmpl $0x0,0x3332be(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 443f6: 74 0d je 44405 <_IO_vfprintf+0x145> 0.00 : 443f8: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 443fd: 0f 85 bc 54 00 00 jne 498bf <_L_lock_724> 0.00 : 44403: eb 0a jmp 4440f <_IO_vfprintf+0x14f> 0.00 : 44405: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 44409: 0f 85 b0 54 00 00 jne 498bf <_L_lock_724> 0.00 : 4440f: 49 8b 84 24 88 00 00 mov 0x88(%r12),%rax 0.00 : 44416: 00 0.00 : 44417: 4c 89 50 08 mov %r10,0x8(%rax) 0.00 : 4441b: 4d 8b 8c 24 88 00 00 mov 0x88(%r12),%r9 0.00 : 44422: 00 0.00 : 44423: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.70 : 44428: 48 8b 9d 50 f9 ff ff mov -0x6b0(%rbp),%rbx 0.70 : 4442f: 48 2b 9d b0 f8 ff ff sub -0x750(%rbp),%rbx 2.11 : 44436: 4c 89 e7 mov %r12,%rdi 0.00 : 44439: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44440: 00 0.00 : 44441: 48 8b b5 b0 f8 ff ff mov -0x750(%rbp),%rsi 0.00 : 44448: 48 89 da mov %rbx,%rdx 0.70 : 4444b: ff 50 38 callq *0x38(%rax) 0.00 : 4444e: 48 39 c3 cmp %rax,%rbx 0.00 : 44451: 0f 84 09 01 00 00 je 44560 <_IO_vfprintf+0x2a0> 0.00 : 44457: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 4445d: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44464: 00 00 00 00 0.00 : 44468: 48 c7 85 78 f9 ff ff movq $0x0,-0x688(%rbp) 0.00 : 4446f: 00 00 00 00 0.00 : 44473: 48 8b bd 78 f9 ff ff mov -0x688(%rbp),%rdi 0.00 : 4447a: e8 21 a4 fd ff callq 1e8a0 0.00 : 4447f: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 44486: e8 15 a4 fd ff callq 1e8a0 0.00 : 4448b: 66 41 83 3c 24 00 cmpw $0x0,(%r12) 0.00 : 44491: 78 49 js 444dc <_IO_vfprintf+0x21c> 0.00 : 44493: 49 8b 94 24 88 00 00 mov 0x88(%r12),%rdx 0.00 : 4449a: 00 0.00 : 4449b: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 4449e: 83 e8 01 sub $0x1,%eax 0.00 : 444a1: 85 c0 test %eax,%eax 0.00 : 444a3: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 444a6: 75 34 jne 444dc <_IO_vfprintf+0x21c> 0.00 : 444a8: 49 8b 84 24 88 00 00 mov 0x88(%r12),%rax 0.00 : 444af: 00 0.00 : 444b0: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 444b7: 00 0.70 : 444b8: 49 8b 94 24 88 00 00 mov 0x88(%r12),%rdx 0.00 : 444bf: 00 0.00 : 444c0: 83 3d ed 31 33 00 00 cmpl $0x0,0x3331ed(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 444c7: 74 0b je 444d4 <_IO_vfprintf+0x214> 0.00 : 444c9: f0 ff 0a lock decl (%rdx) 0.00 : 444cc: 0f 85 08 54 00 00 jne 498da <_L_unlock_932> 0.00 : 444d2: eb 08 jmp 444dc <_IO_vfprintf+0x21c> 0.70 : 444d4: ff 0a decl (%rdx) 0.00 : 444d6: 0f 85 fe 53 00 00 jne 498da <_L_unlock_932> 0.00 : 444dc: 8b 85 8c f9 ff ff mov -0x674(%rbp),%eax 0.00 : 444e2: 85 c0 test %eax,%eax 0.00 : 444e4: 74 39 je 4451f <_IO_vfprintf+0x25f> 0.00 : 444e6: 48 8b 05 8b 31 33 00 mov 0x33318b(%rip),%rax # 377678 <__libc_pthread_functions+0x178> 0.00 : 444ed: 48 8d bd e0 fe ff ff lea -0x120(%rbp),%rdi 0.00 : 444f4: 31 f6 xor %esi,%esi 0.00 : 444f6: 48 c1 c8 11 ror $0x11,%rax 0.00 : 444fa: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 44501: 00 00 0.00 : 44503: ff d0 callq *%rax 0.00 : 44505: eb 18 jmp 4451f <_IO_vfprintf+0x25f> 0.00 : 44507: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4450e: 00 00 0.00 : 44510: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 44516: 44 39 e8 cmp %r13d,%eax 0.00 : 44519: 0f 84 05 fe ff ff je 44324 <_IO_vfprintf+0x64> 0.00 : 4451f: 44 89 e8 mov %r13d,%eax 0.00 : 44522: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 44526: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4452a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4452e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 44532: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.70 : 44536: c9 leaveq 0.00 : 44537: c3 retq 0.00 : 44538: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4453f: 00 0.00 : 44540: 48 8b b5 b0 f8 ff ff mov -0x750(%rbp),%rsi 0.00 : 44547: 4c 89 f2 mov %r14,%rdx 0.00 : 4454a: 4c 89 e7 mov %r12,%rdi 0.00 : 4454d: e8 2e 51 00 00 callq 49680 0.00 : 44552: 41 89 c5 mov %eax,%r13d 0.00 : 44555: eb c8 jmp 4451f <_IO_vfprintf+0x25f> 0.00 : 44557: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4455e: 00 00 0.00 : 44560: 48 81 fb ff ff ff 7f cmp $0x7fffffff,%rbx 0.00 : 44567: 0f 87 ea fe ff ff ja 44457 <_IO_vfprintf+0x197> 0.70 : 4456d: 48 8b 85 50 f9 ff ff mov -0x6b0(%rbp),%rax 0.00 : 44574: 44 8b ad 50 f9 ff ff mov -0x6b0(%rbp),%r13d 0.00 : 4457b: 44 2b ad b0 f8 ff ff sub -0x750(%rbp),%r13d 0.00 : 44582: 80 38 00 cmpb $0x0,(%rax) 0.00 : 44585: 0f 84 d2 fe ff ff je 4445d <_IO_vfprintf+0x19d> 0.00 : 4458b: 48 8d 95 f0 fa ff ff lea -0x510(%rbp),%rdx 0.00 : 44592: 48 8d 8d 60 ff ff ff lea -0xa0(%rbp),%rcx 0.00 : 44599: 49 89 c7 mov %rax,%r15 0.00 : 4459c: 8d 1d 16 0b 00 00 lea 0xb16(%rip),%ebx # 450b8 <_IO_vfprintf+0xdf8> 0.00 : 445a2: 8d 05 32 17 00 00 lea 0x1732(%rip),%eax # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 445a8: 48 c7 85 38 f9 ff ff movq $0x0,-0x6c8(%rbp) 0.00 : 445af: 00 00 00 00 0.70 : 445b3: 48 89 95 88 f8 ff ff mov %rdx,-0x778(%rbp) 1.41 : 445ba: 48 89 8d 30 f8 ff ff mov %rcx,-0x7d0(%rbp) 1.41 : 445c1: 48 81 c2 e8 03 00 00 add $0x3e8,%rdx 0.00 : 445c8: 48 83 c1 0c add $0xc,%rcx 0.00 : 445cc: 29 c3 sub %eax,%ebx 0.00 : 445ce: 48 89 95 c8 fa ff ff mov %rdx,-0x538(%rbp) 0.70 : 445d5: 48 c7 85 40 f9 ff ff movq $0xffffffffffffffff,-0x6c0(%rbp) 0.00 : 445dc: ff ff ff ff 0.00 : 445e0: c7 85 6c f9 ff ff 00 movl $0x0,-0x694(%rbp) 0.00 : 445e7: 00 00 00 0.00 : 445ea: c7 85 74 f9 ff ff 00 movl $0x0,-0x68c(%rbp) 0.00 : 445f1: 00 00 00 0.00 : 445f4: 48 c7 85 78 f9 ff ff movq $0x0,-0x688(%rbp) 0.00 : 445fb: 00 00 00 00 0.70 : 445ff: c6 85 8b f9 ff ff 00 movb $0x0,-0x675(%rbp) 0.00 : 44606: 48 89 8d 28 f8 ff ff mov %rcx,-0x7d8(%rbp) 0.70 : 4460d: 89 9d 24 f8 ff ff mov %ebx,-0x7dc(%rbp) 0.00 : 44613: 49 8d 7f 01 lea 0x1(%r15),%rdi 0.00 : 44617: 48 8d 15 bc 16 00 00 lea 0x16bc(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4461e: 48 89 bd 48 f9 ff ff mov %rdi,-0x6b8(%rbp) 0.00 : 44625: 45 0f b6 7f 01 movzbl 0x1(%r15),%r15d 0.70 : 4462a: 44 89 f8 mov %r15d,%eax 0.00 : 4462d: 44 88 bd eb f9 ff ff mov %r15b,-0x615(%rbp) 0.00 : 44634: 83 e8 20 sub $0x20,%eax 0.00 : 44637: 3c 5a cmp $0x5a,%al 0.00 : 44639: 77 2c ja 44667 <_IO_vfprintf+0x3a7> 0.00 : 4463b: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 1.41 : 44642: 48 8d 15 37 08 0f 00 lea 0xf0837(%rip),%rdx # 134e80 0.00 : 44649: 83 e8 20 sub $0x20,%eax 0.00 : 4464c: 48 98 cltq 0.70 : 4464e: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 3.52 : 44652: 48 8d 05 a7 07 0f 00 lea 0xf07a7(%rip),%rax # 134e00 0.00 : 44659: 48 63 04 90 movslq (%rax,%rdx,4),%rax 2.82 : 4465d: 48 8d 15 76 16 00 00 lea 0x1676(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 44664: 48 01 c2 add %rax,%rdx 1.41 : 44667: 48 8b 85 c8 fa ff ff mov -0x538(%rbp),%rax 0.00 : 4466e: 48 8d 4d 98 lea -0x68(%rbp),%rcx 0.00 : 44672: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44679: 00 00 00 00 0.00 : 4467d: c7 85 a4 f9 ff ff 00 movl $0x0,-0x65c(%rbp) 0.00 : 44684: 00 00 00 0.70 : 44687: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 4468e: 00 00 00 0.00 : 44691: c7 85 ac f9 ff ff 00 movl $0x0,-0x654(%rbp) 0.00 : 44698: 00 00 00 0.00 : 4469b: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 446a2: 00 00 00 0.00 : 446a5: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.70 : 446ac: c7 85 b4 f9 ff ff 00 movl $0x0,-0x64c(%rbp) 0.00 : 446b3: 00 00 00 0.00 : 446b6: c7 85 b8 f9 ff ff 00 movl $0x0,-0x648(%rbp) 0.00 : 446bd: 00 00 00 0.00 : 446c0: c7 85 bc f9 ff ff 00 movl $0x0,-0x644(%rbp) 0.00 : 446c7: 00 00 00 0.00 : 446ca: c7 85 c0 f9 ff ff 00 movl $0x0,-0x640(%rbp) 0.00 : 446d1: 00 00 00 0.00 : 446d4: c7 85 c4 f9 ff ff 00 movl $0x0,-0x63c(%rbp) 0.00 : 446db: 00 00 00 0.00 : 446de: c7 85 b8 fa ff ff 00 movl $0x0,-0x548(%rbp) 0.00 : 446e5: 00 00 00 0.00 : 446e8: c7 85 ec fa ff ff ff movl $0xffffffff,-0x514(%rbp) 0.00 : 446ef: ff ff ff 0.00 : 446f2: c7 85 cc f9 ff ff 00 movl $0x0,-0x634(%rbp) 0.00 : 446f9: 00 00 00 0.00 : 446fc: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.70 : 44703: 48 89 8d 38 f8 ff ff mov %rcx,-0x7c8(%rbp) 0.00 : 4470a: ff e2 jmpq *%rdx 0.00 : 4470c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 44710: 48 8b 9d 58 f8 ff ff mov -0x7a8(%rbp),%rbx 0.00 : 44717: 48 8b 0d 1a d7 32 00 mov 0x32d71a(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 4471e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 44724: c7 04 0b 09 00 00 00 movl $0x9,(%rbx,%rcx,1) 0.00 : 4472b: e9 ef fd ff ff jmpq 4451f <_IO_vfprintf+0x25f> 0.00 : 44730: 48 8b 05 51 d6 32 00 mov 0x32d651(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 44737: 48 8b 9d 58 f8 ff ff mov -0x7a8(%rbp),%rbx 0.00 : 4473e: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 44742: 48 89 a5 d8 f8 ff ff mov %rsp,-0x728(%rbp) 0.00 : 44749: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : 4474d: 48 8b 00 mov (%rax),%rax 0.00 : 44750: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 44756: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 4475d: 00 0.00 : 4475e: 48 83 c0 1e add $0x1e,%rax 0.00 : 44762: 48 c1 e8 04 shr $0x4,%rax 0.00 : 44766: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4476a: 48 29 c4 sub %rax,%rsp 0.00 : 4476d: 41 8b 06 mov (%r14),%eax 0.00 : 44770: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : 44775: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 44779: 83 f8 30 cmp $0x30,%eax 0.00 : 4477c: 48 89 bd a8 f8 ff ff mov %rdi,-0x758(%rbp) 0.00 : 44783: 0f 83 b3 2d 00 00 jae 4753c <_IO_vfprintf+0x327c> 0.00 : 44789: 89 c1 mov %eax,%ecx 0.00 : 4478b: 49 03 4e 10 add 0x10(%r14),%rcx 0.00 : 4478f: 83 c0 08 add $0x8,%eax 0.00 : 44792: 41 89 06 mov %eax,(%r14) 0.00 : 44795: 8b 31 mov (%rcx),%esi 0.00 : 44797: 48 8b bd a8 f8 ff ff mov -0x758(%rbp),%rdi 0.00 : 4479e: e8 3d 88 04 00 callq 8cfe0 0.00 : 447a3: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 447a7: 48 89 c3 mov %rax,%rbx 0.00 : 447aa: 0f 84 8b 3d 00 00 je 4853b <_IO_vfprintf+0x427b> 0.00 : 447b0: 44 8b bd b8 fa ff ff mov -0x548(%rbp),%r15d 0.00 : 447b7: 89 85 d4 f8 ff ff mov %eax,-0x72c(%rbp) 0.00 : 447bd: 41 29 c7 sub %eax,%r15d 0.00 : 447c0: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 447c6: 85 c0 test %eax,%eax 0.00 : 447c8: 75 38 jne 44802 <_IO_vfprintf+0x542> 0.00 : 447ca: 45 85 ff test %r15d,%r15d 0.00 : 447cd: 7e 33 jle 44802 <_IO_vfprintf+0x542> 0.00 : 447cf: 49 63 d7 movslq %r15d,%rdx 0.00 : 447d2: be 20 00 00 00 mov $0x20,%esi 0.00 : 447d7: 4c 89 e7 mov %r12,%rdi 0.00 : 447da: e8 61 3a 02 00 callq 68240 <_IO_padn> 0.00 : 447df: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 447e6: 0f 87 69 4a 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 447ec: 89 c2 mov %eax,%edx 0.00 : 447ee: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 447f3: 44 29 e8 sub %r13d,%eax 0.00 : 447f6: 39 c2 cmp %eax,%edx 0.00 : 447f8: 0f 87 3d 3d 00 00 ja 4853b <_IO_vfprintf+0x427b> 0.00 : 447fe: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44802: 45 85 ed test %r13d,%r13d 0.00 : 44805: 0f 88 11 3d 00 00 js 4851c <_IO_vfprintf+0x425c> 0.00 : 4480b: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44812: 00 0.00 : 44813: 48 89 da mov %rbx,%rdx 0.00 : 44816: 48 8b b5 a8 f8 ff ff mov -0x758(%rbp),%rsi 0.00 : 4481d: 4c 89 e7 mov %r12,%rdi 0.00 : 44820: ff 50 38 callq *0x38(%rax) 0.00 : 44823: 48 39 c3 cmp %rax,%rbx 0.00 : 44826: 0f 85 0f 3d 00 00 jne 4853b <_IO_vfprintf+0x427b> 0.00 : 4482c: 49 63 d5 movslq %r13d,%rdx 0.00 : 4482f: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44834: 48 29 d0 sub %rdx,%rax 0.00 : 44837: 48 39 c3 cmp %rax,%rbx 0.00 : 4483a: 0f 87 fb 3c 00 00 ja 4853b <_IO_vfprintf+0x427b> 0.00 : 44840: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 44846: 44 03 ad d4 f8 ff ff add -0x72c(%rbp),%r13d 0.00 : 4484d: 85 c0 test %eax,%eax 0.00 : 4484f: 74 38 je 44889 <_IO_vfprintf+0x5c9> 0.00 : 44851: 45 85 ff test %r15d,%r15d 0.00 : 44854: 7e 33 jle 44889 <_IO_vfprintf+0x5c9> 0.00 : 44856: 49 63 d7 movslq %r15d,%rdx 0.00 : 44859: be 20 00 00 00 mov $0x20,%esi 0.00 : 4485e: 4c 89 e7 mov %r12,%rdi 0.00 : 44861: e8 da 39 02 00 callq 68240 <_IO_padn> 0.00 : 44866: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4486d: 0f 87 e2 49 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 44873: 89 c2 mov %eax,%edx 0.00 : 44875: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4487a: 44 29 e8 sub %r13d,%eax 0.00 : 4487d: 39 c2 cmp %eax,%edx 0.00 : 4487f: 0f 87 b6 3c 00 00 ja 4853b <_IO_vfprintf+0x427b> 0.00 : 44885: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44889: 48 8b a5 d8 f8 ff ff mov -0x728(%rbp),%rsp 0.70 : 44890: 48 83 bd 58 f9 ff ff cmpq $0x0,-0x6a8(%rbp) 0.00 : 44897: 00 0.00 : 44898: 0f 85 57 49 00 00 jne 491f5 <_IO_vfprintf+0x4f35> 0.00 : 4489e: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 448a5: be 25 00 00 00 mov $0x25,%esi 0.00 : 448aa: 48 83 c2 01 add $0x1,%rdx 0.00 : 448ae: 48 89 95 b8 f8 ff ff mov %rdx,-0x748(%rbp) 0.00 : 448b5: 48 89 d7 mov %rdx,%rdi 0.70 : 448b8: e8 43 13 04 00 callq 85c00 0.00 : 448bd: 45 85 ed test %r13d,%r13d 0.00 : 448c0: 48 89 85 80 fa ff ff mov %rax,-0x580(%rbp) 0.00 : 448c7: 0f 88 09 49 00 00 js 491d6 <_IO_vfprintf+0x4f16> 0.00 : 448cd: 4c 8b bd 80 fa ff ff mov -0x580(%rbp),%r15 1.41 : 448d4: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 448db: 00 0.00 : 448dc: 4c 89 e7 mov %r12,%rdi 0.00 : 448df: 48 8b b5 b8 f8 ff ff mov -0x748(%rbp),%rsi 0.00 : 448e6: 4c 89 fb mov %r15,%rbx 0.00 : 448e9: 48 2b 9d b8 f8 ff ff sub -0x748(%rbp),%rbx 0.70 : 448f0: 48 89 da mov %rbx,%rdx 0.70 : 448f3: ff 50 38 callq *0x38(%rax) 0.00 : 448f6: 48 39 c3 cmp %rax,%rbx 0.00 : 448f9: 0f 85 40 24 00 00 jne 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 448ff: 49 63 d5 movslq %r13d,%rdx 0.00 : 44902: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44907: 48 29 d0 sub %rdx,%rax 0.00 : 4490a: 48 39 c3 cmp %rax,%rbx 0.00 : 4490d: 0f 87 2c 24 00 00 ja 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 44913: 45 01 fd add %r15d,%r13d 0.00 : 44916: 4c 8b bd 80 fa ff ff mov -0x580(%rbp),%r15 0.00 : 4491d: 44 2b ad b8 f8 ff ff sub -0x748(%rbp),%r13d 0.00 : 44924: 41 80 3f 00 cmpb $0x0,(%r15) 0.70 : 44928: 0f 84 63 26 00 00 je 46f91 <_IO_vfprintf+0x2cd1> 0.00 : 4492e: 83 85 6c f9 ff ff 01 addl $0x1,-0x694(%rbp) 0.00 : 44935: e9 d9 fc ff ff jmpq 44613 <_IO_vfprintf+0x353> 0.00 : 4493a: 48 8b 95 58 f8 ff ff mov -0x7a8(%rbp),%rdx 0.00 : 44941: 48 8b 05 40 d4 32 00 mov 0x32d440(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 44948: 48 89 a5 18 f9 ff ff mov %rsp,-0x6e8(%rbp) 0.00 : 4494f: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 44953: 48 8d 55 90 lea -0x70(%rbp),%rdx 0.00 : 44957: 48 8b 00 mov (%rax),%rax 0.00 : 4495a: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 44960: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 44967: 00 0.00 : 44968: 48 83 c0 1e add $0x1e,%rax 0.00 : 4496c: 48 c1 e8 04 shr $0x4,%rax 0.00 : 44970: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44974: 48 29 c4 sub %rax,%rsp 0.00 : 44977: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 4497e: 48 8d 4c 24 0f lea 0xf(%rsp),%rcx 0.00 : 44983: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : 44987: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4498b: 48 89 8d 98 f8 ff ff mov %rcx,-0x768(%rbp) 0.00 : 44992: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 44999: 00 0.00 : 4499a: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 449a1: 48 01 c8 add %rcx,%rax 0.00 : 449a4: 48 85 c0 test %rax,%rax 0.00 : 449a7: 0f 84 f8 3a 00 00 je 484a5 <_IO_vfprintf+0x41e5> 0.00 : 449ad: 48 8b 9d 80 f9 ff ff mov -0x680(%rbp),%rbx 0.00 : 449b4: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 449bb: 48 63 44 0b 30 movslq 0x30(%rbx,%rcx,1),%rax 0.00 : 449c0: 48 c1 e0 04 shl $0x4,%rax 0.00 : 449c4: 8b 34 07 mov (%rdi,%rax,1),%esi 0.00 : 449c7: 48 8b bd 98 f8 ff ff mov -0x768(%rbp),%rdi 0.00 : 449ce: e8 0d 86 04 00 callq 8cfe0 0.00 : 449d3: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 449d7: 48 89 c3 mov %rax,%rbx 0.00 : 449da: 0f 84 b3 3a 00 00 je 48493 <_IO_vfprintf+0x41d3> 0.00 : 449e0: 44 8b bd 64 fa ff ff mov -0x59c(%rbp),%r15d 0.00 : 449e7: 89 85 14 f9 ff ff mov %eax,-0x6ec(%rbp) 0.00 : 449ed: 41 29 c7 sub %eax,%r15d 0.00 : 449f0: 8b 85 48 fa ff ff mov -0x5b8(%rbp),%eax 0.00 : 449f6: 85 c0 test %eax,%eax 0.00 : 449f8: 75 38 jne 44a32 <_IO_vfprintf+0x772> 0.00 : 449fa: 45 85 ff test %r15d,%r15d 0.00 : 449fd: 7e 33 jle 44a32 <_IO_vfprintf+0x772> 0.00 : 449ff: 49 63 d7 movslq %r15d,%rdx 0.00 : 44a02: be 20 00 00 00 mov $0x20,%esi 0.00 : 44a07: 4c 89 e7 mov %r12,%rdi 0.00 : 44a0a: e8 31 38 02 00 callq 68240 <_IO_padn> 0.00 : 44a0f: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44a16: 0f 87 86 38 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44a1c: 89 c2 mov %eax,%edx 0.00 : 44a1e: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44a23: 44 29 e8 sub %r13d,%eax 0.00 : 44a26: 39 c2 cmp %eax,%edx 0.00 : 44a28: 0f 87 65 3a 00 00 ja 48493 <_IO_vfprintf+0x41d3> 0.00 : 44a2e: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44a32: 45 85 ed test %r13d,%r13d 0.00 : 44a35: 0f 88 c0 39 00 00 js 483fb <_IO_vfprintf+0x413b> 0.00 : 44a3b: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44a42: 00 0.00 : 44a43: 48 89 da mov %rbx,%rdx 0.00 : 44a46: 48 8b b5 98 f8 ff ff mov -0x768(%rbp),%rsi 0.00 : 44a4d: 4c 89 e7 mov %r12,%rdi 0.00 : 44a50: ff 50 38 callq *0x38(%rax) 0.00 : 44a53: 48 39 c3 cmp %rax,%rbx 0.00 : 44a56: 0f 85 37 3a 00 00 jne 48493 <_IO_vfprintf+0x41d3> 0.00 : 44a5c: 49 63 d5 movslq %r13d,%rdx 0.00 : 44a5f: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44a64: 48 29 d0 sub %rdx,%rax 0.00 : 44a67: 48 39 c3 cmp %rax,%rbx 0.00 : 44a6a: 0f 87 23 3a 00 00 ja 48493 <_IO_vfprintf+0x41d3> 0.00 : 44a70: 8b 9d 48 fa ff ff mov -0x5b8(%rbp),%ebx 0.00 : 44a76: 44 03 ad 14 f9 ff ff add -0x6ec(%rbp),%r13d 0.00 : 44a7d: 85 db test %ebx,%ebx 0.00 : 44a7f: 74 38 je 44ab9 <_IO_vfprintf+0x7f9> 0.00 : 44a81: 45 85 ff test %r15d,%r15d 0.00 : 44a84: 7e 33 jle 44ab9 <_IO_vfprintf+0x7f9> 0.00 : 44a86: 49 63 d7 movslq %r15d,%rdx 0.00 : 44a89: be 20 00 00 00 mov $0x20,%esi 0.00 : 44a8e: 4c 89 e7 mov %r12,%rdi 0.00 : 44a91: e8 aa 37 02 00 callq 68240 <_IO_padn> 0.00 : 44a96: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44a9d: 0f 87 ff 37 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44aa3: 89 c2 mov %eax,%edx 0.00 : 44aa5: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44aaa: 44 29 e8 sub %r13d,%eax 0.00 : 44aad: 39 c2 cmp %eax,%edx 0.00 : 44aaf: 0f 87 de 39 00 00 ja 48493 <_IO_vfprintf+0x41d3> 0.00 : 44ab5: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44ab9: 48 8b a5 18 f9 ff ff mov -0x6e8(%rbp),%rsp 0.00 : 44ac0: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 44ac7: e8 d4 9d fd ff callq 1e8a0 0.00 : 44acc: 45 85 ed test %r13d,%r13d 0.00 : 44acf: 0f 88 61 39 00 00 js 48436 <_IO_vfprintf+0x4176> 0.00 : 44ad5: 48 63 9d 6c f9 ff ff movslq -0x694(%rbp),%rbx 0.00 : 44adc: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 44ae3: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44aea: 00 0.00 : 44aeb: 48 8d 1c db lea (%rbx,%rbx,8),%rbx 0.00 : 44aef: 48 8d 1c df lea (%rdi,%rbx,8),%rbx 0.00 : 44af3: 4c 89 e7 mov %r12,%rdi 0.00 : 44af6: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 44afa: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 44afe: 48 29 f2 sub %rsi,%rdx 0.00 : 44b01: ff 50 38 callq *0x38(%rax) 0.00 : 44b04: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 44b08: 48 8b 4b 18 mov 0x18(%rbx),%rcx 0.00 : 44b0c: 48 89 c6 mov %rax,%rsi 0.00 : 44b0f: 48 89 f8 mov %rdi,%rax 0.00 : 44b12: 48 29 c8 sub %rcx,%rax 0.00 : 44b15: 48 39 c6 cmp %rax,%rsi 0.00 : 44b18: 0f 85 21 22 00 00 jne 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 44b1e: 49 63 d5 movslq %r13d,%rdx 0.00 : 44b21: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44b26: 48 29 d0 sub %rdx,%rax 0.00 : 44b29: 48 39 c6 cmp %rax,%rsi 0.00 : 44b2c: 0f 87 0d 22 00 00 ja 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 44b32: 89 f8 mov %edi,%eax 0.00 : 44b34: 83 85 6c f9 ff ff 01 addl $0x1,-0x694(%rbp) 0.00 : 44b3b: 29 c8 sub %ecx,%eax 0.00 : 44b3d: 46 8d 2c 28 lea (%rax,%r13,1),%r13d 0.00 : 44b41: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 44b48: 48 39 85 f8 f9 ff ff cmp %rax,-0x608(%rbp) 0.00 : 44b4f: 0f 86 3c 24 00 00 jbe 46f91 <_IO_vfprintf+0x2cd1> 0.00 : 44b55: 48 8b 95 80 f9 ff ff mov -0x680(%rbp),%rdx 0.00 : 44b5c: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 44b60: 4c 8d 3c c2 lea (%rdx,%rax,8),%r15 0.00 : 44b64: 41 0f b6 57 0c movzbl 0xc(%r15),%edx 0.00 : 44b69: 89 d0 mov %edx,%eax 0.00 : 44b6b: 89 d1 mov %edx,%ecx 0.00 : 44b6d: 89 d3 mov %edx,%ebx 0.00 : 44b6f: c0 e8 05 shr $0x5,%al 0.00 : 44b72: c0 e9 03 shr $0x3,%cl 0.00 : 44b75: c0 eb 04 shr $0x4,%bl 0.00 : 44b78: 89 c7 mov %eax,%edi 0.00 : 44b7a: 89 d0 mov %edx,%eax 0.00 : 44b7c: 83 e1 01 and $0x1,%ecx 0.00 : 44b7f: c0 e8 06 shr $0x6,%al 0.00 : 44b82: 83 e3 01 and $0x1,%ebx 0.00 : 44b85: 88 8d f7 f8 ff ff mov %cl,-0x709(%rbp) 0.00 : 44b8b: 83 e0 01 and $0x1,%eax 0.00 : 44b8e: 88 9d f8 f8 ff ff mov %bl,-0x708(%rbp) 0.00 : 44b94: 89 d1 mov %edx,%ecx 0.00 : 44b96: 88 85 f9 f8 ff ff mov %al,-0x707(%rbp) 0.00 : 44b9c: 89 d0 mov %edx,%eax 0.00 : 44b9e: 89 d3 mov %edx,%ebx 0.00 : 44ba0: d0 e8 shr %al 0.00 : 44ba2: 83 e7 01 and $0x1,%edi 0.00 : 44ba5: c0 e9 07 shr $0x7,%cl 0.00 : 44ba8: 83 e3 01 and $0x1,%ebx 0.00 : 44bab: 83 e0 01 and $0x1,%eax 0.00 : 44bae: 88 8d fa f8 ff ff mov %cl,-0x706(%rbp) 0.00 : 44bb4: 88 9d fb f8 ff ff mov %bl,-0x705(%rbp) 0.00 : 44bba: 89 bd 48 fa ff ff mov %edi,-0x5b8(%rbp) 0.00 : 44bc0: 89 d3 mov %edx,%ebx 0.00 : 44bc2: 88 85 fc f8 ff ff mov %al,-0x704(%rbp) 0.00 : 44bc8: 41 0f b6 47 0d movzbl 0xd(%r15),%eax 0.00 : 44bcd: c0 eb 02 shr $0x2,%bl 0.00 : 44bd0: 83 e3 01 and $0x1,%ebx 0.00 : 44bd3: 88 9d fe f8 ff ff mov %bl,-0x702(%rbp) 0.00 : 44bd9: 89 c1 mov %eax,%ecx 0.00 : 44bdb: c0 e8 03 shr $0x3,%al 0.00 : 44bde: d0 e9 shr %cl 0.00 : 44be0: 83 e0 01 and $0x1,%eax 0.00 : 44be3: 83 e1 01 and $0x1,%ecx 0.00 : 44be6: 88 8d fd f8 ff ff mov %cl,-0x703(%rbp) 0.00 : 44bec: 41 8b 7f 04 mov 0x4(%r15),%edi 0.00 : 44bf0: 89 bd 64 fa ff ff mov %edi,-0x59c(%rbp) 0.00 : 44bf6: 41 8b 0f mov (%r15),%ecx 0.00 : 44bf9: 88 85 ff f8 ff ff mov %al,-0x701(%rbp) 0.00 : 44bff: 89 8d 68 fa ff ff mov %ecx,-0x598(%rbp) 0.00 : 44c05: 41 8b 5f 10 mov 0x10(%r15),%ebx 0.00 : 44c09: 89 9d 00 f9 ff ff mov %ebx,-0x700(%rbp) 0.00 : 44c0f: 41 0f b6 7f 08 movzbl 0x8(%r15),%edi 0.00 : 44c14: 40 88 bd 73 fa ff ff mov %dil,-0x58d(%rbp) 0.00 : 44c1b: 41 8b 47 2c mov 0x2c(%r15),%eax 0.00 : 44c1f: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 44c22: 74 26 je 44c4a <_IO_vfprintf+0x98a> 0.00 : 44c24: 48 8b 8d 08 fa ff ff mov -0x5f8(%rbp),%rcx 0.00 : 44c2b: 48 98 cltq 0.00 : 44c2d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44c31: 8b 04 01 mov (%rcx,%rax,1),%eax 0.00 : 44c34: 85 c0 test %eax,%eax 0.00 : 44c36: 41 89 47 04 mov %eax,0x4(%r15) 0.00 : 44c3a: 0f 88 da 37 00 00 js 4841a <_IO_vfprintf+0x415a> 0.00 : 44c40: 41 8b 5f 04 mov 0x4(%r15),%ebx 0.00 : 44c44: 89 9d 64 fa ff ff mov %ebx,-0x59c(%rbp) 0.00 : 44c4a: 41 8b 47 28 mov 0x28(%r15),%eax 0.00 : 44c4e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 44c51: 74 23 je 44c76 <_IO_vfprintf+0x9b6> 0.00 : 44c53: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 44c5a: 48 98 cltq 0.00 : 44c5c: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 44c61: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44c65: 8b 04 07 mov (%rdi,%rax,1),%eax 0.00 : 44c68: 85 c0 test %eax,%eax 0.00 : 44c6a: 0f 48 c2 cmovs %edx,%eax 0.00 : 44c6d: 41 89 07 mov %eax,(%r15) 0.00 : 44c70: 89 85 68 fa ff ff mov %eax,-0x598(%rbp) 0.00 : 44c76: 8b 8d 64 fa ff ff mov -0x59c(%rbp),%ecx 0.00 : 44c7c: 39 8d 68 fa ff ff cmp %ecx,-0x598(%rbp) 0.00 : 44c82: 0f 4d 8d 68 fa ff ff cmovge -0x598(%rbp),%ecx 0.00 : 44c89: 48 8b 9d c8 fa ff ff mov -0x538(%rbp),%rbx 0.00 : 44c90: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44c97: 00 00 00 00 0.00 : 44c9b: 48 89 9d 60 f9 ff ff mov %rbx,-0x6a0(%rbp) 0.00 : 44ca2: 81 f9 c8 03 00 00 cmp $0x3c8,%ecx 0.00 : 44ca8: 89 8d 04 f9 ff ff mov %ecx,-0x6fc(%rbp) 0.00 : 44cae: 7e 4b jle 44cfb <_IO_vfprintf+0xa3b> 0.00 : 44cb0: 8b 85 04 f9 ff ff mov -0x6fc(%rbp),%eax 0.00 : 44cb6: 83 c0 20 add $0x20,%eax 0.00 : 44cb9: 48 63 d8 movslq %eax,%rbx 0.00 : 44cbc: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 44cc3: 0f 87 8c 37 00 00 ja 48455 <_IO_vfprintf+0x4195> 0.00 : 44cc9: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 44ccd: 48 63 95 04 f9 ff ff movslq -0x6fc(%rbp),%rdx 0.00 : 44cd4: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44cdb: 00 00 00 00 0.00 : 44cdf: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44ce3: 48 29 c4 sub %rax,%rsp 0.00 : 44ce6: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 44ceb: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44cef: 48 8d 54 10 20 lea 0x20(%rax,%rdx,1),%rdx 0.00 : 44cf4: 48 89 95 60 f9 ff ff mov %rdx,-0x6a0(%rbp) 0.00 : 44cfb: 48 8b 0d e6 26 33 00 mov 0x3326e6(%rip),%rcx # 3773e8 <__printf_function_table> 0.00 : 44d02: 48 85 c9 test %rcx,%rcx 0.00 : 44d05: 0f 84 f2 38 00 00 je 485fd <_IO_vfprintf+0x433d> 0.00 : 44d0b: 4c 0f be 85 73 fa ff movsbq -0x58d(%rbp),%r8 0.00 : 44d12: ff 0.00 : 44d13: 4a 83 3c c1 00 cmpq $0x0,(%rcx,%r8,8) 0.00 : 44d18: 0f 84 df 38 00 00 je 485fd <_IO_vfprintf+0x433d> 0.00 : 44d1e: 49 8b 47 38 mov 0x38(%r15),%rax 0.00 : 44d22: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : 44d29: 00 0.00 : 44d2a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44d2e: 48 29 c4 sub %rax,%rsp 0.00 : 44d31: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 44d36: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 44d3a: 49 83 7f 38 00 cmpq $0x0,0x38(%r15) 0.00 : 44d3f: 74 2b je 44d6c <_IO_vfprintf+0xaac> 0.00 : 44d41: 31 f6 xor %esi,%esi 0.00 : 44d43: 31 c9 xor %ecx,%ecx 0.00 : 44d45: 89 f0 mov %esi,%eax 0.00 : 44d47: 41 03 47 30 add 0x30(%r15),%eax 0.00 : 44d4b: 83 c6 01 add $0x1,%esi 0.00 : 44d4e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44d52: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 44d59: 48 89 04 ca mov %rax,(%rdx,%rcx,8) 0.00 : 44d5d: 89 f1 mov %esi,%ecx 0.00 : 44d5f: 49 3b 4f 38 cmp 0x38(%r15),%rcx 0.00 : 44d63: 72 e0 jb 44d45 <_IO_vfprintf+0xa85> 0.00 : 44d65: 48 8b 0d 7c 26 33 00 mov 0x33267c(%rip),%rcx # 3773e8 <__printf_function_table> 0.00 : 44d6c: 4c 89 fe mov %r15,%rsi 0.00 : 44d6f: 4c 89 e7 mov %r12,%rdi 0.00 : 44d72: 42 ff 14 c1 callq *(%rcx,%r8,8) 0.00 : 44d76: 83 f8 fe cmp $0xfffffffe,%eax 0.00 : 44d79: 89 c2 mov %eax,%edx 0.00 : 44d7b: 0f 84 7c 38 00 00 je 485fd <_IO_vfprintf+0x433d> 0.00 : 44d81: 85 c0 test %eax,%eax 0.00 : 44d83: 0f 88 48 1b 00 00 js 468d1 <_IO_vfprintf+0x2611> 0.00 : 44d89: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44d90: 0f 86 1d 01 00 00 jbe 44eb3 <_IO_vfprintf+0xbf3> 0.00 : 44d96: 48 8d 0d 73 db 0f 00 lea 0xfdb73(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 44d9d: 48 8d 35 32 5f 0f 00 lea 0xf5f32(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 44da4: 48 8d 3d e5 9a 0f 00 lea 0xf9ae5(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 44dab: ba ae 07 00 00 mov $0x7ae,%edx 0.00 : 44db0: e8 6b 6b fe ff callq 2b920 <__assert_fail> 0.00 : 44db5: 0f 1f 00 nopl (%rax) 0.00 : 44db8: 8b 85 60 fa ff ff mov -0x5a0(%rbp),%eax 0.00 : 44dbe: 85 c0 test %eax,%eax 0.00 : 44dc0: 0f 85 74 fb ff ff jne 4493a <_IO_vfprintf+0x67a> 0.00 : 44dc6: 8b 9d 64 fa ff ff mov -0x59c(%rbp),%ebx 0.00 : 44dcc: 8b 85 48 fa ff ff mov -0x5b8(%rbp),%eax 0.00 : 44dd2: 83 eb 01 sub $0x1,%ebx 0.00 : 44dd5: 85 c0 test %eax,%eax 0.00 : 44dd7: 75 37 jne 44e10 <_IO_vfprintf+0xb50> 0.00 : 44dd9: 85 db test %ebx,%ebx 0.00 : 44ddb: 7e 33 jle 44e10 <_IO_vfprintf+0xb50> 0.00 : 44ddd: 48 63 d3 movslq %ebx,%rdx 0.00 : 44de0: be 20 00 00 00 mov $0x20,%esi 0.00 : 44de5: 4c 89 e7 mov %r12,%rdi 0.00 : 44de8: e8 53 34 02 00 callq 68240 <_IO_padn> 0.00 : 44ded: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44df4: 0f 87 a8 34 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44dfa: 89 c2 mov %eax,%edx 0.00 : 44dfc: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44e01: 44 29 e8 sub %r13d,%eax 0.00 : 44e04: 39 c2 cmp %eax,%edx 0.00 : 44e06: 0f 87 c5 1a 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 44e0c: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44e10: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 44e17: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 44e1b: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 44e22: 00 0.00 : 44e23: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 44e2a: 48 01 d0 add %rdx,%rax 0.00 : 44e2d: 48 85 c0 test %rax,%rax 0.00 : 44e30: 0f 84 2f 37 00 00 je 48565 <_IO_vfprintf+0x42a5> 0.00 : 44e36: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 44e3d: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 44e44: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 44e49: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44e4d: 0f b6 34 07 movzbl (%rdi,%rax,1),%esi 0.00 : 44e51: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 44e56: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 44e5b: 0f 83 ec 36 00 00 jae 4854d <_IO_vfprintf+0x428d> 0.00 : 44e61: 40 88 30 mov %sil,(%rax) 0.00 : 44e64: 48 83 c0 01 add $0x1,%rax 0.00 : 44e68: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 44e6d: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 44e74: 0f 84 57 1a 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 44e7a: 8b 85 48 fa ff ff mov -0x5b8(%rbp),%eax 0.00 : 44e80: 41 83 c5 01 add $0x1,%r13d 0.00 : 44e84: 85 c0 test %eax,%eax 0.00 : 44e86: 0f 84 34 fc ff ff je 44ac0 <_IO_vfprintf+0x800> 0.00 : 44e8c: 85 db test %ebx,%ebx 0.00 : 44e8e: 0f 8e 2c fc ff ff jle 44ac0 <_IO_vfprintf+0x800> 0.00 : 44e94: 48 63 d3 movslq %ebx,%rdx 0.00 : 44e97: be 20 00 00 00 mov $0x20,%esi 0.00 : 44e9c: 4c 89 e7 mov %r12,%rdi 0.00 : 44e9f: e8 9c 33 02 00 callq 68240 <_IO_padn> 0.00 : 44ea4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44eab: 0f 87 f1 33 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44eb1: 89 c2 mov %eax,%edx 0.00 : 44eb3: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44eb8: 44 29 e8 sub %r13d,%eax 0.00 : 44ebb: 39 c2 cmp %eax,%edx 0.00 : 44ebd: 0f 87 0e 1a 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 44ec3: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44ec7: e9 f4 fb ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 44ecc: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 44ed3: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 44ed7: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 44ede: 00 0.00 : 44edf: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 44ee6: 48 01 d0 add %rdx,%rax 0.00 : 44ee9: 48 85 c0 test %rax,%rax 0.00 : 44eec: 0f 84 9a 3a 00 00 je 4898c <_IO_vfprintf+0x46cc> 0.00 : 44ef2: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 44ef9: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 44f00: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 44f05: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44f09: 4c 8b 3c 03 mov (%rbx,%rax,1),%r15 0.00 : 44f0d: 4d 85 ff test %r15,%r15 0.00 : 44f10: 0f 84 cc 2c 00 00 je 47be2 <_IO_vfprintf+0x3922> 0.00 : 44f16: 44 8b 9d 60 fa ff ff mov -0x5a0(%rbp),%r11d 0.00 : 44f1d: 45 85 db test %r11d,%r11d 0.00 : 44f20: 0f 84 da 24 00 00 je 47400 <_IO_vfprintf+0x3140> 0.00 : 44f26: 48 8b 9d 30 f8 ff ff mov -0x7d0(%rbp),%rbx 0.00 : 44f2d: 4c 89 bd 78 ff ff ff mov %r15,-0x88(%rbp) 0.00 : 44f34: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 0.00 : 44f3b: 44 8b 95 68 fa ff ff mov -0x598(%rbp),%r10d 0.00 : 44f42: 45 85 d2 test %r10d,%r10d 0.00 : 44f45: 0f 88 a6 3b 00 00 js 48af1 <_IO_vfprintf+0x4831> 0.00 : 44f4b: 48 63 9d 68 fa ff ff movslq -0x598(%rbp),%rbx 0.00 : 44f52: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 44f59: 0f 87 61 35 00 00 ja 484c0 <_IO_vfprintf+0x4200> 0.00 : 44f5f: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 44f63: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 44f6a: 00 00 00 0.00 : 44f6d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44f71: 48 29 c4 sub %rax,%rsp 0.00 : 44f74: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 44f79: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 44f7d: 48 8b 8d 30 f8 ff ff mov -0x7d0(%rbp),%rcx 0.00 : 44f84: 48 8d b5 78 ff ff ff lea -0x88(%rbp),%rsi 0.00 : 44f8b: 48 89 da mov %rbx,%rdx 0.00 : 44f8e: 4c 89 ff mov %r15,%rdi 0.00 : 44f91: e8 da 82 04 00 callq 8d270 0.00 : 44f96: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 44f9a: 48 89 c3 mov %rax,%rbx 0.00 : 44f9d: 0f 84 2e 19 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 44fa3: 89 9d 88 fa ff ff mov %ebx,-0x578(%rbp) 0.00 : 44fa9: 8b 95 64 fa ff ff mov -0x59c(%rbp),%edx 0.00 : 44faf: 2b 95 88 fa ff ff sub -0x578(%rbp),%edx 0.00 : 44fb5: 89 95 34 f9 ff ff mov %edx,-0x6cc(%rbp) 0.00 : 44fbb: 0f 88 e0 2d 00 00 js 47da1 <_IO_vfprintf+0x3ae1> 0.00 : 44fc1: 44 8b 85 48 fa ff ff mov -0x5b8(%rbp),%r8d 0.00 : 44fc8: 45 85 c0 test %r8d,%r8d 0.00 : 44fcb: 75 41 jne 4500e <_IO_vfprintf+0xd4e> 0.00 : 44fcd: 8b bd 34 f9 ff ff mov -0x6cc(%rbp),%edi 0.00 : 44fd3: 85 ff test %edi,%edi 0.00 : 44fd5: 74 37 je 4500e <_IO_vfprintf+0xd4e> 0.00 : 44fd7: 48 63 95 34 f9 ff ff movslq -0x6cc(%rbp),%rdx 0.00 : 44fde: be 20 00 00 00 mov $0x20,%esi 0.00 : 44fe3: 4c 89 e7 mov %r12,%rdi 0.00 : 44fe6: e8 55 32 02 00 callq 68240 <_IO_padn> 0.00 : 44feb: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44ff2: 0f 87 aa 32 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44ff8: 89 c2 mov %eax,%edx 0.00 : 44ffa: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44fff: 44 29 e8 sub %r13d,%eax 0.00 : 45002: 39 c2 cmp %eax,%edx 0.00 : 45004: 0f 87 c7 18 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4500a: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 4500e: 45 85 ed test %r13d,%r13d 0.00 : 45011: 0f 88 e4 33 00 00 js 483fb <_IO_vfprintf+0x413b> 0.00 : 45017: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 4501e: 00 0.00 : 4501f: 48 89 da mov %rbx,%rdx 0.00 : 45022: 4c 89 fe mov %r15,%rsi 0.00 : 45025: 4c 89 e7 mov %r12,%rdi 0.00 : 45028: ff 50 38 callq *0x38(%rax) 0.00 : 4502b: 48 39 d8 cmp %rbx,%rax 0.00 : 4502e: 0f 85 9d 18 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 45034: 49 63 d5 movslq %r13d,%rdx 0.00 : 45037: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4503c: 48 29 d0 sub %rdx,%rax 0.00 : 4503f: 48 39 c3 cmp %rax,%rbx 0.00 : 45042: 0f 87 89 18 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45048: 8b b5 48 fa ff ff mov -0x5b8(%rbp),%esi 0.00 : 4504e: 44 03 ad 88 fa ff ff add -0x578(%rbp),%r13d 0.00 : 45055: 85 f6 test %esi,%esi 0.00 : 45057: 74 41 je 4509a <_IO_vfprintf+0xdda> 0.00 : 45059: 8b 8d 34 f9 ff ff mov -0x6cc(%rbp),%ecx 0.00 : 4505f: 85 c9 test %ecx,%ecx 0.00 : 45061: 74 37 je 4509a <_IO_vfprintf+0xdda> 0.00 : 45063: 48 63 95 34 f9 ff ff movslq -0x6cc(%rbp),%rdx 0.00 : 4506a: be 20 00 00 00 mov $0x20,%esi 0.00 : 4506f: 4c 89 e7 mov %r12,%rdi 0.00 : 45072: e8 c9 31 02 00 callq 68240 <_IO_padn> 0.00 : 45077: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4507e: 0f 87 1e 32 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 45084: 89 c2 mov %eax,%edx 0.00 : 45086: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4508b: 44 29 e8 sub %r13d,%eax 0.00 : 4508e: 39 c2 cmp %eax,%edx 0.00 : 45090: 0f 87 3b 18 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45096: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 4509a: 8b 95 74 fa ff ff mov -0x58c(%rbp),%edx 0.00 : 450a0: 85 d2 test %edx,%edx 0.00 : 450a2: 0f 84 18 fa ff ff je 44ac0 <_IO_vfprintf+0x800> 0.00 : 450a8: 4c 89 ff mov %r15,%rdi 0.00 : 450ab: e8 f0 97 fd ff callq 1e8a0 0.00 : 450b0: e9 0b fa ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 450b5: 0f 1f 00 nopl (%rax) 0.00 : 450b8: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 450bf: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 450c6: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 450ca: 48 8d 04 c1 lea (%rcx,%rax,8),%rax 0.00 : 450ce: 48 89 85 d8 fa ff ff mov %rax,-0x528(%rbp) 0.00 : 450d5: 48 89 c3 mov %rax,%rbx 0.00 : 450d8: 48 8b 40 38 mov 0x38(%rax),%rax 0.00 : 450dc: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : 450e3: 00 0.00 : 450e4: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 450e8: 48 29 c4 sub %rax,%rsp 0.00 : 450eb: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 450f0: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 450f4: 48 83 7b 38 00 cmpq $0x0,0x38(%rbx) 0.00 : 450f9: 74 2a je 45125 <_IO_vfprintf+0xe65> 0.00 : 450fb: 31 c9 xor %ecx,%ecx 0.00 : 450fd: 31 d2 xor %edx,%edx 0.00 : 450ff: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 45106: 89 c8 mov %ecx,%eax 0.00 : 45108: 83 c1 01 add $0x1,%ecx 0.00 : 4510b: 03 47 30 add 0x30(%rdi),%eax 0.00 : 4510e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 45112: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 45119: 48 89 04 d6 mov %rax,(%rsi,%rdx,8) 0.00 : 4511d: 89 ca mov %ecx,%edx 0.00 : 4511f: 48 3b 57 38 cmp 0x38(%rdi),%rdx 0.00 : 45123: 72 da jb 450ff <_IO_vfprintf+0xe3f> 0.00 : 45125: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4512a: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4512f: 0f 83 71 37 00 00 jae 488a6 <_IO_vfprintf+0x45e6> 0.00 : 45135: c6 00 25 movb $0x25,(%rax) 0.00 : 45138: 48 83 c0 01 add $0x1,%rax 0.00 : 4513c: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 45141: 48 8b 95 d8 fa ff ff mov -0x528(%rbp),%rdx 0.00 : 45148: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 4514d: 0f b6 42 0c movzbl 0xc(%rdx),%eax 0.00 : 45151: a8 08 test $0x8,%al 0.00 : 45153: 0f 85 7a 30 00 00 jne 481d3 <_IO_vfprintf+0x3f13> 0.00 : 45159: 84 c0 test %al,%al 0.00 : 4515b: 0f 88 a3 30 00 00 js 48204 <_IO_vfprintf+0x3f44> 0.00 : 45161: a8 40 test $0x40,%al 0.00 : 45163: 0f 85 e8 2f 00 00 jne 48151 <_IO_vfprintf+0x3e91> 0.00 : 45169: a8 10 test $0x10,%al 0.00 : 4516b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 45170: 0f 85 cc 35 00 00 jne 48742 <_IO_vfprintf+0x4482> 0.00 : 45176: a8 20 test $0x20,%al 0.00 : 45178: 0f 85 ca 2d 00 00 jne 47f48 <_IO_vfprintf+0x3c88> 0.00 : 4517e: 48 8b 85 d8 fa ff ff mov -0x528(%rbp),%rax 0.00 : 45185: 83 78 10 30 cmpl $0x30,0x10(%rax) 0.00 : 45189: 0f 84 65 35 00 00 je 486f4 <_IO_vfprintf+0x4434> 0.00 : 4518f: 48 8b 95 d8 fa ff ff mov -0x528(%rbp),%rdx 0.00 : 45196: f6 42 0d 08 testb $0x8,0xd(%rdx) 0.00 : 4519a: 0f 85 34 35 00 00 jne 486d4 <_IO_vfprintf+0x4414> 0.00 : 451a0: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 451a7: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 451aa: 85 c0 test %eax,%eax 0.00 : 451ac: 0f 85 f8 40 00 00 jne 492aa <_IO_vfprintf+0x4fea> 0.00 : 451b2: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 451b9: 83 3f ff cmpl $0xffffffff,(%rdi) 0.00 : 451bc: 0f 84 25 2c 00 00 je 47de7 <_IO_vfprintf+0x3b27> 0.00 : 451c2: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 451c7: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 451cc: 0f 83 00 42 00 00 jae 493d2 <_IO_vfprintf+0x5112> 0.00 : 451d2: c6 00 2e movb $0x2e,(%rax) 0.00 : 451d5: 48 83 c0 01 add $0x1,%rax 0.00 : 451d9: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 451de: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 451e4: 0f 84 e7 16 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 451ea: 48 8b 85 d8 fa ff ff mov -0x528(%rbp),%rax 0.00 : 451f1: 48 8b b5 28 f8 ff ff mov -0x7d8(%rbp),%rsi 0.00 : 451f8: 31 c9 xor %ecx,%ecx 0.00 : 451fa: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 451ff: 83 c3 01 add $0x1,%ebx 0.00 : 45202: 48 63 38 movslq (%rax),%rdi 0.00 : 45205: e8 c6 ea ff ff callq 43cd0 <_itoa_word> 0.00 : 4520a: 48 39 85 28 f8 ff ff cmp %rax,-0x7d8(%rbp) 0.00 : 45211: 49 89 c7 mov %rax,%r15 0.00 : 45214: 77 35 ja 4524b <_IO_vfprintf+0xf8b> 0.00 : 45216: e9 cc 2b 00 00 jmpq 47de7 <_IO_vfprintf+0x3b27> 0.00 : 4521b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 45220: 88 10 mov %dl,(%rax) 0.00 : 45222: 48 83 c0 01 add $0x1,%rax 0.00 : 45226: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4522b: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 45231: 0f 84 9a 16 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45237: 49 83 c7 01 add $0x1,%r15 0.00 : 4523b: 83 c3 01 add $0x1,%ebx 0.00 : 4523e: 4c 39 bd 28 f8 ff ff cmp %r15,-0x7d8(%rbp) 0.00 : 45245: 0f 86 9c 2b 00 00 jbe 47de7 <_IO_vfprintf+0x3b27> 0.00 : 4524b: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 45250: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 45255: 41 0f b6 17 movzbl (%r15),%edx 0.00 : 45259: 72 c5 jb 45220 <_IO_vfprintf+0xf60> 0.00 : 4525b: 0f b6 f2 movzbl %dl,%esi 0.00 : 4525e: 4c 89 e7 mov %r12,%rdi 0.00 : 45261: e8 3a eb 02 00 callq 73da0 <__overflow> 0.00 : 45266: 83 c0 01 add $0x1,%eax 0.00 : 45269: 75 c0 jne 4522b <_IO_vfprintf+0xf6b> 0.00 : 4526b: e9 61 16 00 00 jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 45270: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45277: 01 0.00 : 45278: 48 8d 15 5b 0a 00 00 lea 0xa5b(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4527f: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 45286: 0f b6 1b movzbl (%rbx),%ebx 0.00 : 45289: 89 d8 mov %ebx,%eax 0.00 : 4528b: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 45291: 83 e8 20 sub $0x20,%eax 0.00 : 45294: 3c 5a cmp $0x5a,%al 0.00 : 45296: 77 2c ja 452c4 <_IO_vfprintf+0x1004> 0.00 : 45298: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4529f: 48 8d 15 da fb 0e 00 lea 0xefbda(%rip),%rdx # 134e80 0.00 : 452a6: 83 e8 20 sub $0x20,%eax 0.00 : 452a9: 48 98 cltq 0.00 : 452ab: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 452af: 48 8d 05 4a fb 0e 00 lea 0xefb4a(%rip),%rax # 134e00 0.00 : 452b6: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 452ba: 48 8d 15 19 0a 00 00 lea 0xa19(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 452c1: 48 01 c2 add %rax,%rdx 0.00 : 452c4: c7 85 a8 f9 ff ff 01 movl $0x1,-0x658(%rbp) 0.00 : 452cb: 00 00 00 0.00 : 452ce: ff e2 jmpq *%rdx 0.00 : 452d0: 48 83 bd 40 f9 ff ff cmpq $0xffffffffffffffff,-0x6c0(%rbp) 0.00 : 452d7: ff 0.00 : 452d8: 0f 84 6f 3c 00 00 je 48f4d <_IO_vfprintf+0x4c8d> 0.00 : 452de: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 452e5: 01 0.00 : 452e6: 48 8d 15 ed 09 00 00 lea 0x9ed(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 452ed: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 452f4: 0f b6 1b movzbl (%rbx),%ebx 0.00 : 452f7: 89 d8 mov %ebx,%eax 0.00 : 452f9: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 452ff: 83 e8 20 sub $0x20,%eax 0.00 : 45302: 3c 5a cmp $0x5a,%al 0.00 : 45304: 77 2c ja 45332 <_IO_vfprintf+0x1072> 0.00 : 45306: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4530d: 48 8d 15 6c fb 0e 00 lea 0xefb6c(%rip),%rdx # 134e80 0.00 : 45314: 83 e8 20 sub $0x20,%eax 0.00 : 45317: 48 98 cltq 0.00 : 45319: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 4531d: 48 8d 05 dc fa 0e 00 lea 0xefadc(%rip),%rax # 134e00 0.00 : 45324: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45328: 48 8d 15 ab 09 00 00 lea 0x9ab(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4532f: 48 01 c2 add %rax,%rdx 0.00 : 45332: c7 85 b4 f9 ff ff 01 movl $0x1,-0x64c(%rbp) 0.00 : 45339: 00 00 00 0.00 : 4533c: ff e2 jmpq *%rdx 0.00 : 4533e: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45345: 01 0.00 : 45346: 48 8d 15 8d 09 00 00 lea 0x98d(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4534d: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45354: 0f b6 3f movzbl (%rdi),%edi 0.00 : 45357: 89 f8 mov %edi,%eax 0.00 : 45359: 40 88 bd eb f9 ff ff mov %dil,-0x615(%rbp) 0.00 : 45360: 83 e8 20 sub $0x20,%eax 0.00 : 45363: 3c 5a cmp $0x5a,%al 0.00 : 45365: 77 2c ja 45393 <_IO_vfprintf+0x10d3> 0.00 : 45367: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4536e: 48 8d 15 0b fb 0e 00 lea 0xefb0b(%rip),%rdx # 134e80 0.00 : 45375: 83 e8 20 sub $0x20,%eax 0.00 : 45378: 48 98 cltq 0.00 : 4537a: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 4537e: 48 8d 05 7b fa 0e 00 lea 0xefa7b(%rip),%rax # 134e00 0.00 : 45385: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45389: 48 8d 15 4a 09 00 00 lea 0x94a(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45390: 48 01 c2 add %rax,%rdx 0.00 : 45393: c7 85 cc f9 ff ff 01 movl $0x1,-0x634(%rbp) 0.00 : 4539a: 00 00 00 0.00 : 4539d: ff e2 jmpq *%rdx 0.00 : 4539f: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 453a6: 01 0.00 : 453a7: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 453ae: 0f b6 02 movzbl (%rdx),%eax 0.00 : 453b1: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 453b4: 83 fa 09 cmp $0x9,%edx 0.00 : 453b7: 77 4a ja 45403 <_IO_vfprintf+0x1143> 0.00 : 453b9: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 453c0: 48 8b b5 48 f9 ff ff mov -0x6b8(%rbp),%rsi 0.00 : 453c7: 0f b6 4b 01 movzbl 0x1(%rbx),%ecx 0.00 : 453cb: 48 83 c6 01 add $0x1,%rsi 0.00 : 453cf: 0f b6 c1 movzbl %cl,%eax 0.00 : 453d2: 83 e8 30 sub $0x30,%eax 0.00 : 453d5: 83 f8 09 cmp $0x9,%eax 0.00 : 453d8: 77 1c ja 453f6 <_IO_vfprintf+0x1136> 0.00 : 453da: 48 83 c6 01 add $0x1,%rsi 0.00 : 453de: 0f b6 c1 movzbl %cl,%eax 0.00 : 453e1: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 453e4: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 453e7: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 453eb: 0f b6 c1 movzbl %cl,%eax 0.00 : 453ee: 83 e8 30 sub $0x30,%eax 0.00 : 453f1: 83 f8 09 cmp $0x9,%eax 0.00 : 453f4: 76 e4 jbe 453da <_IO_vfprintf+0x111a> 0.00 : 453f6: 85 d2 test %edx,%edx 0.00 : 453f8: 74 09 je 45403 <_IO_vfprintf+0x1143> 0.00 : 453fa: 80 f9 24 cmp $0x24,%cl 0.00 : 453fd: 0f 84 e4 08 00 00 je 45ce7 <_IO_vfprintf+0x1a27> 0.00 : 45403: 41 8b 06 mov (%r14),%eax 0.00 : 45406: 83 f8 30 cmp $0x30,%eax 0.00 : 45409: 0f 83 d5 23 00 00 jae 477e4 <_IO_vfprintf+0x3524> 0.00 : 4540f: 89 c2 mov %eax,%edx 0.00 : 45411: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45415: 83 c0 08 add $0x8,%eax 0.00 : 45418: 41 89 06 mov %eax,(%r14) 0.00 : 4541b: 8b 12 mov (%rdx),%edx 0.00 : 4541d: 85 d2 test %edx,%edx 0.00 : 4541f: 89 95 b8 fa ff ff mov %edx,-0x548(%rbp) 0.00 : 45425: 79 19 jns 45440 <_IO_vfprintf+0x1180> 0.00 : 45427: f7 da neg %edx 0.00 : 45429: c7 85 ac f9 ff ff 01 movl $0x1,-0x654(%rbp) 0.00 : 45430: 00 00 00 0.00 : 45433: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 4543a: 89 95 b8 fa ff ff mov %edx,-0x548(%rbp) 0.00 : 45440: 83 bd b8 fa ff ff de cmpl $0xffffffde,-0x548(%rbp) 0.00 : 45447: 0f 87 6e 41 00 00 ja 495bb <_IO_vfprintf+0x52fb> 0.00 : 4544d: 81 bd b8 fa ff ff c7 cmpl $0x3c7,-0x548(%rbp) 0.00 : 45454: 03 00 00 0.00 : 45457: 76 36 jbe 4548f <_IO_vfprintf+0x11cf> 0.00 : 45459: 48 63 85 b8 fa ff ff movslq -0x548(%rbp),%rax 0.00 : 45460: 48 8d 58 20 lea 0x20(%rax),%rbx 0.00 : 45464: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 4546b: 0f 87 6a 41 00 00 ja 495db <_IO_vfprintf+0x531b> 0.00 : 45471: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 45475: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45479: 48 29 c4 sub %rax,%rsp 0.00 : 4547c: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45481: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45485: 48 01 d8 add %rbx,%rax 0.00 : 45488: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 4548f: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 45496: 0f b6 12 movzbl (%rdx),%edx 0.00 : 45499: 89 d0 mov %edx,%eax 0.00 : 4549b: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 454a1: 83 e8 20 sub $0x20,%eax 0.00 : 454a4: 3c 5a cmp $0x5a,%al 0.00 : 454a6: 0f 87 2e 08 00 00 ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 454ac: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 454b3: 48 8d 15 c6 f9 0e 00 lea 0xef9c6(%rip),%rdx # 134e80 0.00 : 454ba: 83 e8 20 sub $0x20,%eax 0.00 : 454bd: 48 98 cltq 0.00 : 454bf: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 454c3: 48 8d 05 b6 f8 0e 00 lea 0xef8b6(%rip),%rax # 134d80 0.00 : 454ca: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 454ce: 48 8d 15 05 08 00 00 lea 0x805(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 454d5: 48 01 c2 add %rax,%rdx 0.00 : 454d8: ff e2 jmpq *%rdx 0.70 : 454da: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 454e1: 0f b6 01 movzbl (%rcx),%eax 0.00 : 454e4: 48 83 c1 01 add $0x1,%rcx 0.00 : 454e8: 48 89 8d 48 f9 ff ff mov %rcx,-0x6b8(%rbp) 0.70 : 454ef: 0f b6 19 movzbl (%rcx),%ebx 0.00 : 454f2: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 454f5: 0f b6 c3 movzbl %bl,%eax 0.00 : 454f8: 83 e8 30 sub $0x30,%eax 1.41 : 454fb: 83 f8 09 cmp $0x9,%eax 0.00 : 454fe: 77 27 ja 45527 <_IO_vfprintf+0x1267> 0.00 : 45500: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45507: 01 0.00 : 45508: 0f b6 c3 movzbl %bl,%eax 0.00 : 4550b: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 4550e: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45515: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 45519: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 4551c: 0f b6 c3 movzbl %bl,%eax 0.00 : 4551f: 83 e8 30 sub $0x30,%eax 0.00 : 45522: 83 f8 09 cmp $0x9,%eax 0.00 : 45525: 76 d9 jbe 45500 <_IO_vfprintf+0x1240> 0.00 : 45527: 83 fa de cmp $0xffffffde,%edx 0.00 : 4552a: 0f 87 3c 34 00 00 ja 4896c <_IO_vfprintf+0x46ac> 0.00 : 45530: 81 fa c7 03 00 00 cmp $0x3c7,%edx 0.00 : 45536: 89 95 b8 fa ff ff mov %edx,-0x548(%rbp) 0.70 : 4553c: 76 32 jbe 45570 <_IO_vfprintf+0x12b0> 0.00 : 4553e: 48 63 c2 movslq %edx,%rax 0.00 : 45541: 4c 8d 78 20 lea 0x20(%rax),%r15 0.00 : 45545: 49 81 ff 00 10 00 00 cmp $0x1000,%r15 0.00 : 4554c: 0f 87 4b 3a 00 00 ja 48f9d <_IO_vfprintf+0x4cdd> 0.00 : 45552: 49 8d 47 1e lea 0x1e(%r15),%rax 0.00 : 45556: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4555a: 48 29 c4 sub %rax,%rsp 0.00 : 4555d: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45562: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45566: 4c 01 f8 add %r15,%rax 0.00 : 45569: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 45570: 80 fb 24 cmp $0x24,%bl 0.00 : 45573: 0f 84 6e 07 00 00 je 45ce7 <_IO_vfprintf+0x1a27> 0.00 : 45579: 89 d8 mov %ebx,%eax 0.00 : 4557b: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 45581: 83 e8 20 sub $0x20,%eax 0.00 : 45584: 3c 5a cmp $0x5a,%al 0.00 : 45586: 0f 87 4e 07 00 00 ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4558c: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.70 : 45593: 48 8d 15 e6 f8 0e 00 lea 0xef8e6(%rip),%rdx # 134e80 0.00 : 4559a: 83 e8 20 sub $0x20,%eax 0.00 : 4559d: 48 98 cltq 0.00 : 4559f: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 455a3: 48 8d 05 d6 f7 0e 00 lea 0xef7d6(%rip),%rax # 134d80 0.00 : 455aa: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 455ae: 48 8d 15 25 07 00 00 lea 0x725(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 455b5: 48 01 c2 add %rax,%rdx 0.00 : 455b8: ff e2 jmpq *%rdx 0.00 : 455ba: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 455c1: 01 0.00 : 455c2: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 455c9: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 455cc: 80 fb 2a cmp $0x2a,%bl 0.00 : 455cf: 0f 84 a0 22 00 00 je 47875 <_IO_vfprintf+0x35b5> 0.00 : 455d5: 0f b6 c3 movzbl %bl,%eax 0.00 : 455d8: c7 85 ec fa ff ff 00 movl $0x0,-0x514(%rbp) 0.00 : 455df: 00 00 00 0.00 : 455e2: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 455e5: 83 fa 09 cmp $0x9,%edx 0.00 : 455e8: 0f 87 b2 00 00 00 ja 456a0 <_IO_vfprintf+0x13e0> 0.00 : 455ee: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 455f5: 01 0.00 : 455f6: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 455fd: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 45600: 0f b6 c3 movzbl %bl,%eax 0.00 : 45603: 83 e8 30 sub $0x30,%eax 0.00 : 45606: 83 f8 09 cmp $0x9,%eax 0.00 : 45609: 77 27 ja 45632 <_IO_vfprintf+0x1372> 0.00 : 4560b: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 4560e: 0f b6 c3 movzbl %bl,%eax 0.00 : 45611: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45618: 01 0.00 : 45619: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 4561d: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 45624: 0f b6 18 movzbl (%rax),%ebx 0.00 : 45627: 0f b6 c3 movzbl %bl,%eax 0.00 : 4562a: 83 e8 30 sub $0x30,%eax 0.00 : 4562d: 83 f8 09 cmp $0x9,%eax 0.00 : 45630: 76 d9 jbe 4560b <_IO_vfprintf+0x134b> 0.00 : 45632: 81 fa c8 03 00 00 cmp $0x3c8,%edx 0.00 : 45638: 89 95 ec fa ff ff mov %edx,-0x514(%rbp) 0.00 : 4563e: 0f 97 c0 seta %al 0.00 : 45641: 8b 8d b8 fa ff ff mov -0x548(%rbp),%ecx 0.00 : 45647: 39 8d ec fa ff ff cmp %ecx,-0x514(%rbp) 0.00 : 4564d: 7e 47 jle 45696 <_IO_vfprintf+0x13d6> 0.00 : 4564f: 84 c0 test %al,%al 0.00 : 45651: 0f 84 f8 22 00 00 je 4794f <_IO_vfprintf+0x368f> 0.00 : 45657: 83 fa de cmp $0xffffffde,%edx 0.00 : 4565a: 0f 87 e0 36 00 00 ja 48d40 <_IO_vfprintf+0x4a80> 0.00 : 45660: 48 63 95 ec fa ff ff movslq -0x514(%rbp),%rdx 0.00 : 45667: 48 8d 5a 20 lea 0x20(%rdx),%rbx 0.00 : 4566b: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 45672: 0f 87 a1 22 00 00 ja 47919 <_IO_vfprintf+0x3659> 0.00 : 45678: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 4567c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45680: 48 29 c4 sub %rax,%rsp 0.00 : 45683: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45688: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4568c: 48 01 d8 add %rbx,%rax 0.00 : 4568f: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 45696: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 4569d: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 456a0: 89 d8 mov %ebx,%eax 0.00 : 456a2: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 456a8: 83 e8 20 sub $0x20,%eax 0.00 : 456ab: 3c 5a cmp $0x5a,%al 0.00 : 456ad: 0f 87 27 06 00 00 ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 456b3: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 456ba: 48 8d 15 bf f7 0e 00 lea 0xef7bf(%rip),%rdx # 134e80 0.00 : 456c1: 83 e8 20 sub $0x20,%eax 0.00 : 456c4: 48 98 cltq 0.00 : 456c6: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 456ca: 48 8d 05 2f f6 0e 00 lea 0xef62f(%rip),%rax # 134d00 0.00 : 456d1: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 456d5: 48 8d 15 fe 05 00 00 lea 0x5fe(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 456dc: 48 01 c2 add %rax,%rdx 0.00 : 456df: ff e2 jmpq *%rdx 0.00 : 456e1: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 456e8: 01 0.00 : 456e9: 48 8d 15 ea 05 00 00 lea 0x5ea(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 456f0: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 456f7: 0f b6 09 movzbl (%rcx),%ecx 0.00 : 456fa: 89 c8 mov %ecx,%eax 0.00 : 456fc: 88 8d eb f9 ff ff mov %cl,-0x615(%rbp) 0.00 : 45702: 83 e8 20 sub $0x20,%eax 0.00 : 45705: 3c 5a cmp $0x5a,%al 0.00 : 45707: 77 2c ja 45735 <_IO_vfprintf+0x1475> 0.00 : 45709: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45710: 48 8d 15 69 f7 0e 00 lea 0xef769(%rip),%rdx # 134e80 0.00 : 45717: 83 e8 20 sub $0x20,%eax 0.00 : 4571a: 48 98 cltq 0.00 : 4571c: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45720: 48 8d 05 59 f4 0e 00 lea 0xef459(%rip),%rax # 134b80 0.00 : 45727: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 4572b: 48 8d 15 a8 05 00 00 lea 0x5a8(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45732: 48 01 c2 add %rax,%rdx 0.00 : 45735: c7 85 bc f9 ff ff 00 movl $0x0,-0x644(%rbp) 0.00 : 4573c: 00 00 00 0.00 : 4573f: c7 85 c4 f9 ff ff 01 movl $0x1,-0x63c(%rbp) 0.00 : 45746: 00 00 00 0.00 : 45749: ff e2 jmpq *%rdx 0.00 : 4574b: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45752: 01 0.00 : 45753: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 4575a: 0f b6 12 movzbl (%rdx),%edx 0.00 : 4575d: 89 d0 mov %edx,%eax 0.00 : 4575f: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 45765: 48 8d 15 6e 05 00 00 lea 0x56e(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4576c: 83 e8 20 sub $0x20,%eax 0.00 : 4576f: 3c 5a cmp $0x5a,%al 0.00 : 45771: 77 2c ja 4579f <_IO_vfprintf+0x14df> 0.00 : 45773: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4577a: 48 8d 15 ff f6 0e 00 lea 0xef6ff(%rip),%rdx # 134e80 0.00 : 45781: 83 e8 20 sub $0x20,%eax 0.00 : 45784: 48 98 cltq 0.00 : 45786: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 4578a: 48 8d 05 ef f4 0e 00 lea 0xef4ef(%rip),%rax # 134c80 0.00 : 45791: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45795: 48 8d 15 3e 05 00 00 lea 0x53e(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4579c: 48 01 c2 add %rax,%rdx 0.00 : 4579f: c7 85 bc f9 ff ff 01 movl $0x1,-0x644(%rbp) 0.00 : 457a6: 00 00 00 0.00 : 457a9: ff e2 jmpq *%rdx 0.70 : 457ab: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 457b2: 01 1.41 : 457b3: 48 8d 15 20 05 00 00 lea 0x520(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 457ba: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.70 : 457c1: 0f b6 1b movzbl (%rbx),%ebx 0.00 : 457c4: 89 d8 mov %ebx,%eax 0.00 : 457c6: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 457cc: 83 e8 20 sub $0x20,%eax 0.00 : 457cf: 3c 5a cmp $0x5a,%al 0.00 : 457d1: 77 2c ja 457ff <_IO_vfprintf+0x153f> 0.00 : 457d3: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 1.41 : 457da: 48 8d 15 9f f6 0e 00 lea 0xef69f(%rip),%rdx # 134e80 0.00 : 457e1: 83 e8 20 sub $0x20,%eax 0.00 : 457e4: 48 98 cltq 0.70 : 457e6: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.70 : 457ea: 48 8d 05 0f f4 0e 00 lea 0xef40f(%rip),%rax # 134c00 0.00 : 457f1: 48 63 04 90 movslq (%rax,%rdx,4),%rax 2.82 : 457f5: 48 8d 15 de 04 00 00 lea 0x4de(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 457fc: 48 01 c2 add %rax,%rdx 0.00 : 457ff: c7 85 c0 f9 ff ff 01 movl $0x1,-0x640(%rbp) 0.00 : 45806: 00 00 00 0.00 : 45809: ff e2 jmpq *%rdx 0.00 : 4580b: 8b 8d c0 f9 ff ff mov -0x640(%rbp),%ecx 0.00 : 45811: 85 c9 test %ecx,%ecx 0.00 : 45813: 0f 85 17 ef ff ff jne 44730 <_IO_vfprintf+0x470> 0.00 : 45819: 8b 9d b8 fa ff ff mov -0x548(%rbp),%ebx 0.00 : 4581f: 8b 95 ac f9 ff ff mov -0x654(%rbp),%edx 0.00 : 45825: 83 eb 01 sub $0x1,%ebx 0.00 : 45828: 85 d2 test %edx,%edx 0.00 : 4582a: 75 37 jne 45863 <_IO_vfprintf+0x15a3> 0.00 : 4582c: 85 db test %ebx,%ebx 0.00 : 4582e: 7e 33 jle 45863 <_IO_vfprintf+0x15a3> 0.00 : 45830: 48 63 d3 movslq %ebx,%rdx 0.00 : 45833: be 20 00 00 00 mov $0x20,%esi 0.00 : 45838: 4c 89 e7 mov %r12,%rdi 0.00 : 4583b: e8 00 2a 02 00 callq 68240 <_IO_padn> 0.00 : 45840: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 45847: 0f 87 08 3a 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 4584d: 89 c2 mov %eax,%edx 0.00 : 4584f: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45854: 44 29 e8 sub %r13d,%eax 0.00 : 45857: 39 c2 cmp %eax,%edx 0.00 : 45859: 0f 87 72 10 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4585f: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 45863: 41 8b 06 mov (%r14),%eax 0.00 : 45866: 83 f8 30 cmp $0x30,%eax 0.00 : 45869: 0f 83 c6 24 00 00 jae 47d35 <_IO_vfprintf+0x3a75> 0.00 : 4586f: 89 c2 mov %eax,%edx 0.00 : 45871: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45875: 83 c0 08 add $0x8,%eax 0.00 : 45878: 41 89 06 mov %eax,(%r14) 0.00 : 4587b: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 45880: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 45885: 0f b6 32 movzbl (%rdx),%esi 0.00 : 45888: 0f 83 10 3d 00 00 jae 4959e <_IO_vfprintf+0x52de> 0.00 : 4588e: 40 88 30 mov %sil,(%rax) 0.00 : 45891: 48 83 c0 01 add $0x1,%rax 0.00 : 45895: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4589a: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 458a1: 0f 84 2a 10 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 458a7: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 458ad: 41 83 c5 01 add $0x1,%r13d 0.00 : 458b1: 85 c0 test %eax,%eax 0.00 : 458b3: 0f 84 d7 ef ff ff je 44890 <_IO_vfprintf+0x5d0> 0.00 : 458b9: 85 db test %ebx,%ebx 0.00 : 458bb: 0f 8e cf ef ff ff jle 44890 <_IO_vfprintf+0x5d0> 0.00 : 458c1: 48 63 d3 movslq %ebx,%rdx 0.00 : 458c4: be 20 00 00 00 mov $0x20,%esi 0.00 : 458c9: 4c 89 e7 mov %r12,%rdi 0.00 : 458cc: e8 6f 29 02 00 callq 68240 <_IO_padn> 0.00 : 458d1: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 458d8: 0f 87 77 39 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 458de: 89 c2 mov %eax,%edx 0.00 : 458e0: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 458e5: 44 29 e8 sub %r13d,%eax 0.00 : 458e8: 39 c2 cmp %eax,%edx 0.00 : 458ea: 0f 87 e1 0f 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 458f0: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 458f4: e9 97 ef ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 458f9: 41 f6 44 24 74 04 testb $0x4,0x74(%r12) 0.00 : 458ff: 74 10 je 45911 <_IO_vfprintf+0x1651> 0.00 : 45901: 44 8b 8d 74 f9 ff ff mov -0x68c(%rbp),%r9d 0.00 : 45908: 45 85 c9 test %r9d,%r9d 0.00 : 4590b: 0f 84 38 2f 00 00 je 48849 <_IO_vfprintf+0x4589> 0.00 : 45911: 44 8b 85 c0 f9 ff ff mov -0x640(%rbp),%r8d 0.00 : 45918: 45 85 c0 test %r8d,%r8d 0.00 : 4591b: 0f 84 81 28 00 00 je 481a2 <_IO_vfprintf+0x3ee2> 0.00 : 45921: 41 8b 06 mov (%r14),%eax 0.00 : 45924: 83 f8 30 cmp $0x30,%eax 0.00 : 45927: 0f 83 64 28 00 00 jae 48191 <_IO_vfprintf+0x3ed1> 0.00 : 4592d: 89 c2 mov %eax,%edx 0.00 : 4592f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45933: 83 c0 08 add $0x8,%eax 0.00 : 45936: 41 89 06 mov %eax,(%r14) 0.00 : 45939: 48 8b 12 mov (%rdx),%rdx 0.00 : 4593c: 49 63 c5 movslq %r13d,%rax 0.00 : 4593f: 48 89 02 mov %rax,(%rdx) 0.00 : 45942: e9 49 ef ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 45947: 48 8b b5 88 f8 ff ff mov -0x778(%rbp),%rsi 0.00 : 4594e: 8b bd 70 f9 ff ff mov -0x690(%rbp),%edi 0.00 : 45954: ba e8 03 00 00 mov $0x3e8,%edx 0.00 : 45959: e8 f2 b0 03 00 callq 80a50 <__strerror_r> 0.00 : 4595e: c7 85 c0 f9 ff ff 00 movl $0x0,-0x640(%rbp) 0.00 : 45965: 00 00 00 0.00 : 45968: 49 89 c7 mov %rax,%r15 0.00 : 4596b: 4d 85 ff test %r15,%r15 0.00 : 4596e: 0f 84 34 26 00 00 je 47fa8 <_IO_vfprintf+0x3ce8> 0.00 : 45974: 8b 85 c0 f9 ff ff mov -0x640(%rbp),%eax 0.00 : 4597a: 85 c0 test %eax,%eax 0.00 : 4597c: 0f 84 74 1c 00 00 je 475f6 <_IO_vfprintf+0x3336> 0.00 : 45982: 8b 85 ec fa ff ff mov -0x514(%rbp),%eax 0.00 : 45988: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 4598c: 4c 89 7d 98 mov %r15,-0x68(%rbp) 0.00 : 45990: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 45997: 00 0.00 : 45998: 48 89 95 68 f8 ff ff mov %rdx,-0x798(%rbp) 0.00 : 4599f: 85 c0 test %eax,%eax 0.00 : 459a1: 0f 88 82 29 00 00 js 48329 <_IO_vfprintf+0x4069> 0.00 : 459a7: 48 63 9d ec fa ff ff movslq -0x514(%rbp),%rbx 0.00 : 459ae: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 459b5: 0f 87 0a 2f 00 00 ja 488c5 <_IO_vfprintf+0x4605> 0.00 : 459bb: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 459bf: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 459c6: 00 00 00 0.00 : 459c9: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 459cd: 48 29 c4 sub %rax,%rsp 0.00 : 459d0: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 459d5: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 459d9: 48 8d 4d 98 lea -0x68(%rbp),%rcx 0.00 : 459dd: 48 89 da mov %rbx,%rdx 0.00 : 459e0: 4c 89 ff mov %r15,%rdi 0.00 : 459e3: 48 89 8d 70 f8 ff ff mov %rcx,-0x790(%rbp) 0.00 : 459ea: 48 8b 8d 68 f8 ff ff mov -0x798(%rbp),%rcx 0.00 : 459f1: 48 8b b5 70 f8 ff ff mov -0x790(%rbp),%rsi 0.00 : 459f8: e8 73 78 04 00 callq 8d270 0.00 : 459fd: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 45a01: 48 89 c3 mov %rax,%rbx 0.00 : 45a04: 0f 84 c7 0e 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45a0a: 89 9d 8c fa ff ff mov %ebx,-0x574(%rbp) 0.00 : 45a10: 8b 85 b8 fa ff ff mov -0x548(%rbp),%eax 0.00 : 45a16: 2b 85 8c fa ff ff sub -0x574(%rbp),%eax 0.00 : 45a1c: 89 85 f0 f8 ff ff mov %eax,-0x710(%rbp) 0.00 : 45a22: 0f 88 c7 22 00 00 js 47cef <_IO_vfprintf+0x3a2f> 0.00 : 45a28: 44 8b 9d ac f9 ff ff mov -0x654(%rbp),%r11d 0.00 : 45a2f: 45 85 db test %r11d,%r11d 0.00 : 45a32: 75 43 jne 45a77 <_IO_vfprintf+0x17b7> 0.00 : 45a34: 44 8b 95 f0 f8 ff ff mov -0x710(%rbp),%r10d 0.00 : 45a3b: 45 85 d2 test %r10d,%r10d 0.00 : 45a3e: 74 37 je 45a77 <_IO_vfprintf+0x17b7> 0.00 : 45a40: 48 63 95 f0 f8 ff ff movslq -0x710(%rbp),%rdx 0.00 : 45a47: be 20 00 00 00 mov $0x20,%esi 0.00 : 45a4c: 4c 89 e7 mov %r12,%rdi 0.00 : 45a4f: e8 ec 27 02 00 callq 68240 <_IO_padn> 0.00 : 45a54: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 45a5b: 0f 87 f4 37 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 45a61: 89 c2 mov %eax,%edx 0.00 : 45a63: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45a68: 44 29 e8 sub %r13d,%eax 0.00 : 45a6b: 39 c2 cmp %eax,%edx 0.00 : 45a6d: 0f 87 5e 0e 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45a73: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 45a77: 45 85 ed test %r13d,%r13d 0.00 : 45a7a: 0f 88 9c 2a 00 00 js 4851c <_IO_vfprintf+0x425c> 0.00 : 45a80: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 45a87: 00 0.00 : 45a88: 48 89 da mov %rbx,%rdx 0.00 : 45a8b: 4c 89 fe mov %r15,%rsi 0.00 : 45a8e: 4c 89 e7 mov %r12,%rdi 0.00 : 45a91: ff 50 38 callq *0x38(%rax) 0.00 : 45a94: 48 39 d8 cmp %rbx,%rax 0.00 : 45a97: 0f 85 34 0e 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 45a9d: 49 63 d5 movslq %r13d,%rdx 0.00 : 45aa0: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45aa5: 48 29 d0 sub %rdx,%rax 0.00 : 45aa8: 48 39 c3 cmp %rax,%rbx 0.00 : 45aab: 0f 87 20 0e 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45ab1: 44 8b 8d ac f9 ff ff mov -0x654(%rbp),%r9d 0.00 : 45ab8: 44 03 ad 8c fa ff ff add -0x574(%rbp),%r13d 0.00 : 45abf: 45 85 c9 test %r9d,%r9d 0.00 : 45ac2: 74 43 je 45b07 <_IO_vfprintf+0x1847> 0.00 : 45ac4: 44 8b 85 f0 f8 ff ff mov -0x710(%rbp),%r8d 0.00 : 45acb: 45 85 c0 test %r8d,%r8d 0.00 : 45ace: 74 37 je 45b07 <_IO_vfprintf+0x1847> 0.00 : 45ad0: 48 63 95 f0 f8 ff ff movslq -0x710(%rbp),%rdx 0.00 : 45ad7: be 20 00 00 00 mov $0x20,%esi 0.00 : 45adc: 4c 89 e7 mov %r12,%rdi 0.00 : 45adf: e8 5c 27 02 00 callq 68240 <_IO_padn> 0.00 : 45ae4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 45aeb: 0f 87 64 37 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 45af1: 89 c2 mov %eax,%edx 0.00 : 45af3: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45af8: 44 29 e8 sub %r13d,%eax 0.00 : 45afb: 39 c2 cmp %eax,%edx 0.00 : 45afd: 0f 87 ce 0d 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45b03: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 45b07: 8b bd ec f9 ff ff mov -0x614(%rbp),%edi 0.00 : 45b0d: 85 ff test %edi,%edi 0.00 : 45b0f: 0f 84 7b ed ff ff je 44890 <_IO_vfprintf+0x5d0> 0.00 : 45b15: 4c 89 ff mov %r15,%rdi 0.00 : 45b18: e8 83 8d fd ff callq 1e8a0 0.00 : 45b1d: e9 6e ed ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 45b22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45b28: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45b2f: 01 0.00 : 45b30: 48 8d 15 a3 01 00 00 lea 0x1a3(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45b37: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45b3e: 0f b6 3f movzbl (%rdi),%edi 0.00 : 45b41: 89 f8 mov %edi,%eax 0.00 : 45b43: 40 88 bd eb f9 ff ff mov %dil,-0x615(%rbp) 0.00 : 45b4a: 83 e8 20 sub $0x20,%eax 0.00 : 45b4d: 3c 5a cmp $0x5a,%al 0.00 : 45b4f: 77 2c ja 45b7d <_IO_vfprintf+0x18bd> 0.00 : 45b51: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45b58: 48 8d 15 21 f3 0e 00 lea 0xef321(%rip),%rdx # 134e80 0.00 : 45b5f: 83 e8 20 sub $0x20,%eax 0.00 : 45b62: 48 98 cltq 0.00 : 45b64: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45b68: 48 8d 05 91 f2 0e 00 lea 0xef291(%rip),%rax # 134e00 0.00 : 45b6f: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45b73: 48 8d 15 60 01 00 00 lea 0x160(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45b7a: 48 01 c2 add %rax,%rdx 0.00 : 45b7d: c7 85 b0 f9 ff ff 01 movl $0x1,-0x650(%rbp) 0.00 : 45b84: 00 00 00 0.00 : 45b87: ff e2 jmpq *%rdx 0.00 : 45b89: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45b90: 01 0.00 : 45b91: 48 8d 15 42 01 00 00 lea 0x142(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45b98: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 45b9f: 0f b6 00 movzbl (%rax),%eax 0.00 : 45ba2: 88 85 eb f9 ff ff mov %al,-0x615(%rbp) 0.00 : 45ba8: 83 e8 20 sub $0x20,%eax 0.00 : 45bab: 3c 5a cmp $0x5a,%al 0.00 : 45bad: 77 2c ja 45bdb <_IO_vfprintf+0x191b> 0.00 : 45baf: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45bb6: 48 8d 15 c3 f2 0e 00 lea 0xef2c3(%rip),%rdx # 134e80 0.00 : 45bbd: 83 e8 20 sub $0x20,%eax 0.00 : 45bc0: 48 98 cltq 0.00 : 45bc2: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45bc6: 48 8d 05 33 f2 0e 00 lea 0xef233(%rip),%rax # 134e00 0.00 : 45bcd: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45bd1: 48 8d 15 02 01 00 00 lea 0x102(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45bd8: 48 01 c2 add %rax,%rdx 0.00 : 45bdb: c7 85 ac f9 ff ff 01 movl $0x1,-0x654(%rbp) 0.00 : 45be2: 00 00 00 0.00 : 45be5: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 45bec: ff e2 jmpq *%rdx 0.00 : 45bee: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45bf5: 01 0.00 : 45bf6: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 45bfd: 0f b6 12 movzbl (%rdx),%edx 0.00 : 45c00: 89 d0 mov %edx,%eax 0.00 : 45c02: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 45c08: 48 8d 15 cb 00 00 00 lea 0xcb(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45c0f: 83 e8 20 sub $0x20,%eax 0.00 : 45c12: 3c 5a cmp $0x5a,%al 0.00 : 45c14: 77 2c ja 45c42 <_IO_vfprintf+0x1982> 0.00 : 45c16: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45c1d: 48 8d 15 5c f2 0e 00 lea 0xef25c(%rip),%rdx # 134e80 0.00 : 45c24: 83 e8 20 sub $0x20,%eax 0.00 : 45c27: 48 98 cltq 0.00 : 45c29: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45c2d: 48 8d 05 cc f1 0e 00 lea 0xef1cc(%rip),%rax # 134e00 0.00 : 45c34: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45c38: 48 8d 15 9b 00 00 00 lea 0x9b(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45c3f: 48 01 c2 add %rax,%rdx 0.00 : 45c42: c7 85 a4 f9 ff ff 01 movl $0x1,-0x65c(%rbp) 0.00 : 45c49: 00 00 00 0.00 : 45c4c: ff e2 jmpq *%rdx 0.00 : 45c4e: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 45c54: 0f b6 8d d0 f9 ff ff movzbl -0x630(%rbp),%ecx 0.00 : 45c5b: 85 c0 test %eax,%eax 0.00 : 45c5d: b8 30 00 00 00 mov $0x30,%eax 0.00 : 45c62: 0f 44 c8 cmove %eax,%ecx 0.70 : 45c65: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45c6c: 01 0.00 : 45c6d: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.70 : 45c74: 88 8d d0 f9 ff ff mov %cl,-0x630(%rbp) 0.00 : 45c7a: 0f b6 1b movzbl (%rbx),%ebx 1.41 : 45c7d: 89 d8 mov %ebx,%eax 0.00 : 45c7f: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 45c85: 83 e8 20 sub $0x20,%eax 0.00 : 45c88: 3c 5a cmp $0x5a,%al 0.00 : 45c8a: 77 4e ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45c8c: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45c93: 48 8d 15 e6 f1 0e 00 lea 0xef1e6(%rip),%rdx # 134e80 0.00 : 45c9a: 83 e8 20 sub $0x20,%eax 0.00 : 45c9d: 48 98 cltq 0.00 : 45c9f: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 2.11 : 45ca3: 48 8d 05 56 f1 0e 00 lea 0xef156(%rip),%rax # 134e00 0.00 : 45caa: 48 63 04 90 movslq (%rax,%rdx,4),%rax 2.11 : 45cae: 48 8d 15 25 00 00 00 lea 0x25(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45cb5: 48 01 c2 add %rax,%rdx 0.70 : 45cb8: ff e2 jmpq *%rdx 1.41 : 45cba: 41 8b 06 mov (%r14),%eax 2.11 : 45cbd: 83 f8 30 cmp $0x30,%eax 0.00 : 45cc0: 0f 83 9e 1b 00 00 jae 47864 <_IO_vfprintf+0x35a4> 0.00 : 45cc6: 89 c2 mov %eax,%edx 0.00 : 45cc8: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45ccc: 83 c0 08 add $0x8,%eax 0.00 : 45ccf: 41 89 06 mov %eax,(%r14) 0.00 : 45cd2: 4c 8b 3a mov (%rdx),%r15 0.00 : 45cd5: e9 91 fc ff ff jmpq 4596b <_IO_vfprintf+0x16ab> 0.00 : 45cda: 80 bd eb f9 ff ff 00 cmpb $0x0,-0x615(%rbp) 0.00 : 45ce1: 0f 84 ea 0b 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45ce7: 48 81 ec 10 09 00 00 sub $0x910,%rsp 0.00 : 45cee: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 45cf5: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 45cfc: 00 0.00 : 45cfd: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 45d02: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 45d06: 48 89 9d a0 fa ff ff mov %rbx,-0x560(%rbp) 0.00 : 45d0d: e8 8e 8b fd ff callq 1e8a0 0.00 : 45d12: 48 83 bd 40 f9 ff ff cmpq $0xffffffffffffffff,-0x6c0(%rbp) 0.00 : 45d19: ff 0.00 : 45d1a: 0f 84 f1 2c 00 00 je 48a11 <_IO_vfprintf+0x4751> 0.00 : 45d20: 48 8b 8d 50 f9 ff ff mov -0x6b0(%rbp),%rcx 0.00 : 45d27: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 45d2a: 0f 84 7c 2c 00 00 je 489ac <_IO_vfprintf+0x46ec> 0.00 : 45d30: 48 8b 9d 50 f9 ff ff mov -0x6b0(%rbp),%rbx 0.00 : 45d37: 48 c7 85 f8 f9 ff ff movq $0x0,-0x608(%rbp) 0.00 : 45d3e: 00 00 00 00 0.00 : 45d42: 48 c7 85 00 fa ff ff movq $0x0,-0x600(%rbp) 0.00 : 45d49: 00 00 00 00 0.00 : 45d4d: 48 c7 85 90 fa ff ff movq $0x0,-0x570(%rbp) 0.00 : 45d54: 00 00 00 00 0.00 : 45d58: 48 89 9d 48 f9 ff ff mov %rbx,-0x6b8(%rbp) 0.00 : 45d5f: bb 00 09 00 00 mov $0x900,%ebx 0.00 : 45d64: e9 c2 00 00 00 jmpq 45e2b <_IO_vfprintf+0x1b6b> 0.00 : 45d69: 49 8d 47 1e lea 0x1e(%r15),%rax 0.00 : 45d6d: 49 8d 0c 1f lea (%r15,%rbx,1),%rcx 0.00 : 45d71: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45d75: 48 29 c4 sub %rax,%rsp 0.00 : 45d78: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45d7d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45d81: 4a 8d 14 38 lea (%rax,%r15,1),%rdx 0.00 : 45d85: 48 39 95 a0 fa ff ff cmp %rdx,-0x560(%rbp) 0.00 : 45d8c: 48 89 c3 mov %rax,%rbx 0.00 : 45d8f: 4c 0f 44 f9 cmove %rcx,%r15 0.00 : 45d93: 48 8b 95 90 fa ff ff mov -0x570(%rbp),%rdx 0.00 : 45d9a: 48 8b b5 a0 fa ff ff mov -0x560(%rbp),%rsi 0.00 : 45da1: 48 89 df mov %rbx,%rdi 0.00 : 45da4: e8 f7 d4 03 00 callq 832a0 <__GI_memmove> 0.00 : 45da9: 80 bd 8b f9 ff ff 00 cmpb $0x0,-0x675(%rbp) 0.00 : 45db0: 74 0c je 45dbe <_IO_vfprintf+0x1afe> 0.00 : 45db2: 48 8b bd a0 fa ff ff mov -0x560(%rbp),%rdi 0.00 : 45db9: e8 e2 8a fd ff callq 1e8a0 0.00 : 45dbe: 49 81 ff 00 10 00 00 cmp $0x1000,%r15 0.00 : 45dc5: 0f 87 eb 0d 00 00 ja 46bb6 <_IO_vfprintf+0x28f6> 0.00 : 45dcb: 48 89 9d a0 fa ff ff mov %rbx,-0x560(%rbp) 0.00 : 45dd2: 48 8b 9d a0 fa ff ff mov -0x560(%rbp),%rbx 0.00 : 45dd9: 48 03 9d 90 fa ff ff add -0x570(%rbp),%rbx 0.00 : 45de0: 48 8b 8d 38 f8 ff ff mov -0x7c8(%rbp),%rcx 0.00 : 45de7: 48 8b b5 00 fa ff ff mov -0x600(%rbp),%rsi 0.00 : 45dee: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45df5: 48 89 da mov %rbx,%rdx 0.00 : 45df8: e8 73 f3 01 00 callq 65170 <__parse_one_specmb> 0.00 : 45dfd: 48 01 85 00 fa ff ff add %rax,-0x600(%rbp) 0.00 : 45e04: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 45e08: 48 83 85 f8 f9 ff ff addq $0x1,-0x608(%rbp) 0.00 : 45e0f: 01 0.00 : 45e10: 48 83 85 90 fa ff ff addq $0x48,-0x570(%rbp) 0.00 : 45e17: 48 0.00 : 45e18: 48 89 9d 48 f9 ff ff mov %rbx,-0x6b8(%rbp) 0.00 : 45e1f: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 45e22: 0f 84 79 11 00 00 je 46fa1 <_IO_vfprintf+0x2ce1> 0.00 : 45e28: 4c 89 fb mov %r15,%rbx 0.00 : 45e2b: 48 3b 9d 90 fa ff ff cmp -0x570(%rbp),%rbx 0.00 : 45e32: 49 89 df mov %rbx,%r15 0.00 : 45e35: 77 9b ja 45dd2 <_IO_vfprintf+0x1b12> 0.00 : 45e37: 4c 8d 3c 1b lea (%rbx,%rbx,1),%r15 0.00 : 45e3b: 49 81 ff 00 10 00 00 cmp $0x1000,%r15 0.00 : 45e42: 0f 86 21 ff ff ff jbe 45d69 <_IO_vfprintf+0x1aa9> 0.00 : 45e48: 4c 89 ff mov %r15,%rdi 0.00 : 45e4b: e8 70 1d 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 45e50: 85 c0 test %eax,%eax 0.00 : 45e52: 0f 85 11 ff ff ff jne 45d69 <_IO_vfprintf+0x1aa9> 0.00 : 45e58: 4c 89 ff mov %r15,%rdi 0.00 : 45e5b: e8 f0 89 fd ff callq 1e850 0.00 : 45e60: 48 89 c3 mov %rax,%rbx 0.00 : 45e63: e9 2b ff ff ff jmpq 45d93 <_IO_vfprintf+0x1ad3> 0.00 : 45e68: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 45e6d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 45e72: 0f 83 cb 2f 00 00 jae 48e43 <_IO_vfprintf+0x4b83> 0.00 : 45e78: c6 00 25 movb $0x25,(%rax) 0.00 : 45e7b: 48 83 c0 01 add $0x1,%rax 0.00 : 45e7f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 45e84: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 45e8b: 0f 84 40 0a 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45e91: 41 83 c5 01 add $0x1,%r13d 0.00 : 45e95: e9 26 ec ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 45e9a: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 45ea1: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 45ea5: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 45eac: 00 0.00 : 45ead: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 45eb4: 48 01 d0 add %rdx,%rax 0.00 : 45eb7: 48 85 c0 test %rax,%rax 0.00 : 45eba: 0f 84 5d 2f 00 00 je 48e1d <_IO_vfprintf+0x4b5d> 0.00 : 45ec0: 8b 85 60 fa ff ff mov -0x5a0(%rbp),%eax 0.00 : 45ec6: 85 c0 test %eax,%eax 0.00 : 45ec8: 0f 84 7a 1b 00 00 je 47a48 <_IO_vfprintf+0x3788> 0.00 : 45ece: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 45ed5: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 45edc: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 45ee1: 48 c1 e0 04 shl $0x4,%rax 0.00 : 45ee5: 48 8b 14 03 mov (%rbx,%rax,1),%rdx 0.00 : 45ee9: 48 89 d7 mov %rdx,%rdi 0.00 : 45eec: 48 89 d0 mov %rdx,%rax 0.00 : 45eef: c7 85 3c fa ff ff 0a movl $0xa,-0x5c4(%rbp) 0.00 : 45ef6: 00 00 00 0.00 : 45ef9: 48 c1 ef 3f shr $0x3f,%rdi 0.00 : 45efd: 48 f7 d8 neg %rax 0.00 : 45f00: 85 ff test %edi,%edi 0.00 : 45f02: 89 bd 20 fa ff ff mov %edi,-0x5e0(%rbp) 0.00 : 45f08: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 45f0c: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 45f13: 83 bd 68 fa ff ff 00 cmpl $0x0,-0x598(%rbp) 0.00 : 45f1a: 0f 8c 61 13 00 00 jl 47281 <_IO_vfprintf+0x2fc1> 0.00 : 45f20: 0f 85 2f 0e 00 00 jne 46d55 <_IO_vfprintf+0x2a95> 0.00 : 45f26: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 45f2d: 00 0.00 : 45f2e: 0f 85 21 0e 00 00 jne 46d55 <_IO_vfprintf+0x2a95> 0.00 : 45f34: 83 bd 3c fa ff ff 08 cmpl $0x8,-0x5c4(%rbp) 0.00 : 45f3b: 0f 84 53 1c 00 00 je 47b94 <_IO_vfprintf+0x38d4> 0.00 : 45f41: 48 8b 8d 60 f9 ff ff mov -0x6a0(%rbp),%rcx 0.00 : 45f48: 31 c0 xor %eax,%eax 0.00 : 45f4a: c6 85 72 fa ff ff 20 movb $0x20,-0x58e(%rbp) 0.00 : 45f51: 48 89 8d d0 fa ff ff mov %rcx,-0x530(%rbp) 0.00 : 45f58: 49 89 cf mov %rcx,%r15 0.00 : 45f5b: 48 2b 85 60 f9 ff ff sub -0x6a0(%rbp),%rax 0.00 : 45f62: 8b b5 48 fa ff ff mov -0x5b8(%rbp),%esi 0.00 : 45f68: ba 00 00 00 00 mov $0x0,%edx 0.00 : 45f6d: 48 03 85 d0 fa ff ff add -0x530(%rbp),%rax 0.00 : 45f74: 48 0f 48 c2 cmovs %rdx,%rax 0.00 : 45f78: 85 f6 test %esi,%esi 0.00 : 45f7a: 89 85 bc fa ff ff mov %eax,-0x544(%rbp) 0.00 : 45f80: 0f 85 53 0c 00 00 jne 46bd9 <_IO_vfprintf+0x2919> 0.00 : 45f86: 8b 85 60 f9 ff ff mov -0x6a0(%rbp),%eax 0.00 : 45f8c: 29 85 64 fa ff ff sub %eax,-0x59c(%rbp) 0.00 : 45f92: 8b bd d0 fa ff ff mov -0x530(%rbp),%edi 0.00 : 45f98: 8b 9d 64 fa ff ff mov -0x59c(%rbp),%ebx 0.00 : 45f9e: 8b 8d 40 fa ff ff mov -0x5c0(%rbp),%ecx 0.00 : 45fa4: 89 85 c0 fa ff ff mov %eax,-0x540(%rbp) 0.00 : 45faa: 01 fb add %edi,%ebx 0.00 : 45fac: 2b 9d bc fa ff ff sub -0x544(%rbp),%ebx 0.00 : 45fb2: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 45fb9: 00 0.00 : 45fba: 89 bd 10 f9 ff ff mov %edi,-0x6f0(%rbp) 0.00 : 45fc0: 0f 95 c2 setne %dl 0.00 : 45fc3: 85 c9 test %ecx,%ecx 0.00 : 45fc5: 0f 95 c0 setne %al 0.00 : 45fc8: 20 c2 and %al,%dl 0.00 : 45fca: 88 95 c7 fa ff ff mov %dl,-0x539(%rbp) 0.00 : 45fd0: 74 0d je 45fdf <_IO_vfprintf+0x1d1f> 0.00 : 45fd2: 83 bd 3c fa ff ff 10 cmpl $0x10,-0x5c4(%rbp) 0.00 : 45fd9: 8d 43 fe lea -0x2(%rbx),%eax 0.00 : 45fdc: 0f 44 d8 cmove %eax,%ebx 0.00 : 45fdf: 8b 85 44 fa ff ff mov -0x5bc(%rbp),%eax 0.00 : 45fe5: 0b 85 20 fa ff ff or -0x5e0(%rbp),%eax 0.00 : 45feb: 0b 85 4c fa ff ff or -0x5b4(%rbp),%eax 0.00 : 45ff1: 83 f8 01 cmp $0x1,%eax 0.00 : 45ff4: 83 d3 ff adc $0xffffffff,%ebx 0.00 : 45ff7: 80 bd 72 fa ff ff 20 cmpb $0x20,-0x58e(%rbp) 0.00 : 45ffe: 0f 84 5a 17 00 00 je 4775e <_IO_vfprintf+0x349e> 0.00 : 46004: 8b 95 20 fa ff ff mov -0x5e0(%rbp),%edx 0.00 : 4600a: 85 d2 test %edx,%edx 0.00 : 4600c: 0f 85 1a 17 00 00 jne 4772c <_IO_vfprintf+0x346c> 0.00 : 46012: 8b 85 4c fa ff ff mov -0x5b4(%rbp),%eax 0.00 : 46018: 85 c0 test %eax,%eax 0.00 : 4601a: 0f 85 8d 1c 00 00 jne 47cad <_IO_vfprintf+0x39ed> 0.00 : 46020: 8b 85 44 fa ff ff mov -0x5bc(%rbp),%eax 0.00 : 46026: 85 c0 test %eax,%eax 0.00 : 46028: 0f 85 5e 1c 00 00 jne 47c8c <_IO_vfprintf+0x39cc> 0.00 : 4602e: 80 bd c7 fa ff ff 00 cmpb $0x0,-0x539(%rbp) 0.00 : 46035: 74 0d je 46044 <_IO_vfprintf+0x1d84> 0.00 : 46037: 83 bd 3c fa ff ff 10 cmpl $0x10,-0x5c4(%rbp) 0.00 : 4603e: 0f 84 1c 2d 00 00 je 48d60 <_IO_vfprintf+0x4aa0> 0.00 : 46044: 8b 8d bc fa ff ff mov -0x544(%rbp),%ecx 0.00 : 4604a: 8d 04 0b lea (%rbx,%rcx,1),%eax 0.00 : 4604d: 85 c0 test %eax,%eax 0.00 : 4604f: 7e 33 jle 46084 <_IO_vfprintf+0x1dc4> 0.00 : 46051: 48 63 d0 movslq %eax,%rdx 0.00 : 46054: be 30 00 00 00 mov $0x30,%esi 0.00 : 46059: 4c 89 e7 mov %r12,%rdi 0.00 : 4605c: e8 df 21 02 00 callq 68240 <_IO_padn> 0.00 : 46061: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46068: 0f 87 29 02 00 00 ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 4606e: 89 c2 mov %eax,%edx 0.00 : 46070: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46075: 44 29 e8 sub %r13d,%eax 0.00 : 46078: 39 c2 cmp %eax,%edx 0.00 : 4607a: 0f 87 51 08 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46080: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46084: 45 85 ed test %r13d,%r13d 0.00 : 46087: 0f 88 f6 32 00 00 js 49383 <_IO_vfprintf+0x50c3> 0.00 : 4608d: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46094: 48 2b 9d d0 fa ff ff sub -0x530(%rbp),%rbx 0.00 : 4609b: 4c 89 fe mov %r15,%rsi 0.00 : 4609e: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 460a5: 00 0.00 : 460a6: 4c 89 e7 mov %r12,%rdi 0.00 : 460a9: 48 89 da mov %rbx,%rdx 0.00 : 460ac: ff 50 38 callq *0x38(%rax) 0.00 : 460af: 48 39 c3 cmp %rax,%rbx 0.00 : 460b2: 0f 85 19 08 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 460b8: 49 63 d5 movslq %r13d,%rdx 0.00 : 460bb: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 460c0: 48 29 d0 sub %rdx,%rax 0.00 : 460c3: 48 39 c3 cmp %rax,%rbx 0.00 : 460c6: 0f 87 05 08 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 460cc: 8b 9d 10 f9 ff ff mov -0x6f0(%rbp),%ebx 0.00 : 460d2: 29 9d c0 fa ff ff sub %ebx,-0x540(%rbp) 0.00 : 460d8: 44 03 ad c0 fa ff ff add -0x540(%rbp),%r13d 0.00 : 460df: e9 dc e9 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 460e4: c7 85 3c fa ff ff 0a movl $0xa,-0x5c4(%rbp) 0.00 : 460eb: 00 00 00 0.00 : 460ee: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 460f5: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 460f9: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 46100: 00 0.00 : 46101: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 46108: 48 01 d0 add %rdx,%rax 0.00 : 4610b: 48 85 c0 test %rax,%rax 0.00 : 4610e: 0f 84 dc 18 00 00 je 479f0 <_IO_vfprintf+0x3730> 0.00 : 46114: 44 8b bd 60 fa ff ff mov -0x5a0(%rbp),%r15d 0.00 : 4611b: 45 85 ff test %r15d,%r15d 0.00 : 4611e: 0f 84 6c 11 00 00 je 47290 <_IO_vfprintf+0x2fd0> 0.00 : 46124: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 4612b: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 46132: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 46137: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4613b: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : 4613f: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 46146: 00 00 00 0.00 : 46149: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 46150: 00 00 00 0.00 : 46153: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 4615a: 00 00 00 0.00 : 4615d: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 46164: e9 aa fd ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.70 : 46169: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 46170: 01 1.41 : 46171: 48 8d 15 62 fb ff ff lea -0x49e(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 46178: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 1.41 : 4617f: 0f b6 3f movzbl (%rdi),%edi 0.00 : 46182: 89 f8 mov %edi,%eax 0.00 : 46184: 40 88 bd eb f9 ff ff mov %dil,-0x615(%rbp) 0.00 : 4618b: 83 e8 20 sub $0x20,%eax 0.00 : 4618e: 3c 5a cmp $0x5a,%al 0.00 : 46190: 77 2c ja 461be <_IO_vfprintf+0x1efe> 0.00 : 46192: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 46199: 48 8d 15 e0 ec 0e 00 lea 0xeece0(%rip),%rdx # 134e80 0.00 : 461a0: 83 e8 20 sub $0x20,%eax 0.00 : 461a3: 48 98 cltq 0.00 : 461a5: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 461a9: 48 8d 05 d0 e9 0e 00 lea 0xee9d0(%rip),%rax # 134b80 0.00 : 461b0: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 461b4: 48 8d 15 1f fb ff ff lea -0x4e1(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 461bb: 48 01 c2 add %rax,%rdx 0.00 : 461be: c7 85 b8 f9 ff ff 01 movl $0x1,-0x648(%rbp) 0.00 : 461c5: 00 00 00 0.00 : 461c8: c7 85 c0 f9 ff ff 01 movl $0x1,-0x640(%rbp) 0.00 : 461cf: 00 00 00 0.00 : 461d2: ff e2 jmpq *%rdx 0.00 : 461d4: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 461db: 01 0.00 : 461dc: 48 8d 15 f7 fa ff ff lea -0x509(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 461e3: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 461ea: 0f b6 00 movzbl (%rax),%eax 0.00 : 461ed: 88 85 eb f9 ff ff mov %al,-0x615(%rbp) 0.00 : 461f3: 83 e8 20 sub $0x20,%eax 0.00 : 461f6: 3c 5a cmp $0x5a,%al 0.00 : 461f8: 77 2c ja 46226 <_IO_vfprintf+0x1f66> 0.00 : 461fa: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 46201: 48 8d 15 78 ec 0e 00 lea 0xeec78(%rip),%rdx # 134e80 0.00 : 46208: 83 e8 20 sub $0x20,%eax 0.00 : 4620b: 48 98 cltq 0.00 : 4620d: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 46211: 48 8d 05 68 e9 0e 00 lea 0xee968(%rip),%rax # 134b80 0.00 : 46218: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 4621c: 48 8d 15 b7 fa ff ff lea -0x549(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 46223: 48 01 c2 add %rax,%rdx 0.00 : 46226: c7 85 b8 f9 ff ff 00 movl $0x0,-0x648(%rbp) 0.00 : 4622d: 00 00 00 0.00 : 46230: c7 85 c0 f9 ff ff 01 movl $0x1,-0x640(%rbp) 0.00 : 46237: 00 00 00 0.00 : 4623a: ff e2 jmpq *%rdx 0.00 : 4623c: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 46243: 48 8b 95 80 f9 ff ff mov -0x680(%rbp),%rdx 0.00 : 4624a: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4624e: 48 8d 34 c2 lea (%rdx,%rax,8),%rsi 0.00 : 46252: 48 85 f6 test %rsi,%rsi 0.00 : 46255: 0f 84 c4 1b 00 00 je 47e1f <_IO_vfprintf+0x3b5f> 0.00 : 4625b: 48 63 46 30 movslq 0x30(%rsi),%rax 0.00 : 4625f: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 46266: 4c 89 e7 mov %r12,%rdi 0.00 : 46269: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4626d: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 46274: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 4627b: e8 40 64 00 00 callq 4c6c0 <__printf_fphex> 0.00 : 46280: 89 c2 mov %eax,%edx 0.00 : 46282: 85 d2 test %edx,%edx 0.00 : 46284: 0f 88 47 06 00 00 js 468d1 <_IO_vfprintf+0x2611> 0.00 : 4628a: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46291: 0f 86 1c ec ff ff jbe 44eb3 <_IO_vfprintf+0xbf3> 0.00 : 46297: 48 8d 0d 72 c6 0f 00 lea 0xfc672(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4629e: 48 8d 35 31 4a 0f 00 lea 0xf4a31(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 462a5: 48 8d 3d e4 85 0f 00 lea 0xf85e4(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 462ac: ba b5 07 00 00 mov $0x7b5,%edx 0.00 : 462b1: e8 6a 56 fe ff callq 2b920 <__assert_fail> 0.00 : 462b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 462bd: 00 00 00 0.00 : 462c0: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 462c7: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 462cb: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 462d2: 00 0.00 : 462d3: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 462da: 48 01 d0 add %rdx,%rax 0.00 : 462dd: 48 85 c0 test %rax,%rax 0.00 : 462e0: 0f 84 30 33 00 00 je 49616 <_IO_vfprintf+0x5356> 0.00 : 462e6: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 462ed: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 462f2: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 462f9: 48 c1 e0 04 shl $0x4,%rax 0.00 : 462fd: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 46301: 48 85 c0 test %rax,%rax 0.00 : 46304: 0f 84 d6 10 00 00 je 473e0 <_IO_vfprintf+0x3120> 0.00 : 4630a: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 46311: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 46318: 00 00 00 0.00 : 4631b: c7 85 3c fa ff ff 10 movl $0x10,-0x5c4(%rbp) 0.00 : 46322: 00 00 00 0.00 : 46325: c7 85 40 fa ff ff 01 movl $0x1,-0x5c0(%rbp) 0.00 : 4632c: 00 00 00 0.00 : 4632f: c7 85 50 fa ff ff 00 movl $0x0,-0x5b0(%rbp) 0.00 : 46336: 00 00 00 0.00 : 46339: c6 85 73 fa ff ff 78 movb $0x78,-0x58d(%rbp) 0.00 : 46340: e9 ce fb ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 46345: 41 f6 44 24 74 04 testb $0x4,0x74(%r12) 0.00 : 4634b: 74 10 je 4635d <_IO_vfprintf+0x209d> 0.00 : 4634d: 44 8b 8d 74 f9 ff ff mov -0x68c(%rbp),%r9d 0.00 : 46354: 45 85 c9 test %r9d,%r9d 0.00 : 46357: 0f 84 28 2e 00 00 je 49185 <_IO_vfprintf+0x4ec5> 0.00 : 4635d: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 46364: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 46368: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 4636f: 00 0.00 : 46370: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 46377: 48 01 d0 add %rdx,%rax 0.00 : 4637a: 48 85 c0 test %rax,%rax 0.00 : 4637d: 0f 84 f1 2e 00 00 je 49274 <_IO_vfprintf+0x4fb4> 0.00 : 46383: 8b 8d 60 fa ff ff mov -0x5a0(%rbp),%ecx 0.00 : 46389: 85 c9 test %ecx,%ecx 0.00 : 4638b: 0f 84 b5 19 00 00 je 47d46 <_IO_vfprintf+0x3a86> 0.00 : 46391: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 46398: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 4639f: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 463a4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 463a8: 48 8b 14 03 mov (%rbx,%rax,1),%rdx 0.00 : 463ac: 49 63 c5 movslq %r13d,%rax 0.00 : 463af: 48 89 02 mov %rax,(%rdx) 0.00 : 463b2: e9 09 e7 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 463b7: 48 8b b5 88 f8 ff ff mov -0x778(%rbp),%rsi 0.00 : 463be: 8b bd 70 f9 ff ff mov -0x690(%rbp),%edi 0.00 : 463c4: ba e8 03 00 00 mov $0x3e8,%edx 0.00 : 463c9: e8 82 a6 03 00 callq 80a50 <__strerror_r> 0.00 : 463ce: c7 85 60 fa ff ff 00 movl $0x0,-0x5a0(%rbp) 0.00 : 463d5: 00 00 00 0.00 : 463d8: 49 89 c7 mov %rax,%r15 0.00 : 463db: e9 2d eb ff ff jmpq 44f0d <_IO_vfprintf+0xc4d> 0.00 : 463e0: c7 85 3c fa ff ff 10 movl $0x10,-0x5c4(%rbp) 0.00 : 463e7: 00 00 00 0.00 : 463ea: e9 ff fc ff ff jmpq 460ee <_IO_vfprintf+0x1e2e> 0.00 : 463ef: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 463f6: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 463fd: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 46401: 48 8d 34 c1 lea (%rcx,%rax,8),%rsi 0.00 : 46405: 48 85 f6 test %rsi,%rsi 0.00 : 46408: 0f 84 fb 1b 00 00 je 48009 <_IO_vfprintf+0x3d49> 0.00 : 4640e: 48 63 46 30 movslq 0x30(%rsi),%rax 0.00 : 46412: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 46419: 4c 89 e7 mov %r12,%rdi 0.00 : 4641c: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46420: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 46427: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 4642e: e8 7d 39 00 00 callq 49db0 <__printf_fp> 0.00 : 46433: 89 c2 mov %eax,%edx 0.00 : 46435: e9 48 fe ff ff jmpq 46282 <_IO_vfprintf+0x1fc2> 0.00 : 4643a: c7 85 3c fa ff ff 08 movl $0x8,-0x5c4(%rbp) 0.00 : 46441: 00 00 00 0.00 : 46444: e9 a5 fc ff ff jmpq 460ee <_IO_vfprintf+0x1e2e> 0.00 : 46449: c7 85 a0 f9 ff ff 10 movl $0x10,-0x660(%rbp) 0.00 : 46450: 00 00 00 0.00 : 46453: 8b 9d c0 f9 ff ff mov -0x640(%rbp),%ebx 0.00 : 46459: 85 db test %ebx,%ebx 0.00 : 4645b: 0f 84 db 0a 00 00 je 46f3c <_IO_vfprintf+0x2c7c> 0.00 : 46461: 41 8b 06 mov (%r14),%eax 0.00 : 46464: 83 f8 30 cmp $0x30,%eax 0.00 : 46467: 0f 83 62 0f 00 00 jae 473cf <_IO_vfprintf+0x310f> 0.00 : 4646d: 89 c2 mov %eax,%edx 0.00 : 4646f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 46473: 83 c0 08 add $0x8,%eax 0.00 : 46476: 41 89 06 mov %eax,(%r14) 0.00 : 46479: 48 8b 12 mov (%rdx),%rdx 0.00 : 4647c: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 46483: 00 00 00 0.00 : 46486: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 4648d: 00 00 00 0.00 : 46490: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 46497: 00 00 00 0.00 : 4649a: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.70 : 464a1: 83 bd ec fa ff ff 00 cmpl $0x0,-0x514(%rbp) 0.00 : 464a8: 0f 8c 7f 0a 00 00 jl 46f2d <_IO_vfprintf+0x2c6d> 0.00 : 464ae: 0f 85 8e 09 00 00 jne 46e42 <_IO_vfprintf+0x2b82> 0.00 : 464b4: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 464bb: 00 0.00 : 464bc: 0f 85 80 09 00 00 jne 46e42 <_IO_vfprintf+0x2b82> 0.00 : 464c2: 83 bd a0 f9 ff ff 08 cmpl $0x8,-0x660(%rbp) 0.00 : 464c9: 0f 84 51 17 00 00 je 47c20 <_IO_vfprintf+0x3960> 0.00 : 464cf: 48 8b bd 60 f9 ff ff mov -0x6a0(%rbp),%rdi 0.00 : 464d6: 31 c0 xor %eax,%eax 0.00 : 464d8: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 464df: 48 89 bd 98 fa ff ff mov %rdi,-0x568(%rbp) 0.00 : 464e6: 49 89 ff mov %rdi,%r15 0.00 : 464e9: 48 2b 85 60 f9 ff ff sub -0x6a0(%rbp),%rax 0.70 : 464f0: 8b 8d ac f9 ff ff mov -0x654(%rbp),%ecx 0.00 : 464f6: ba 00 00 00 00 mov $0x0,%edx 1.41 : 464fb: 48 03 85 98 fa ff ff add -0x568(%rbp),%rax 0.00 : 46502: 48 0f 48 c2 cmovs %rdx,%rax 0.70 : 46506: 85 c9 test %ecx,%ecx 0.00 : 46508: 89 85 c8 f9 ff ff mov %eax,-0x638(%rbp) 0.00 : 4650e: 0f 85 9c 05 00 00 jne 46ab0 <_IO_vfprintf+0x27f0> 0.00 : 46514: 8b 8d 60 f9 ff ff mov -0x6a0(%rbp),%ecx 0.00 : 4651a: 29 8d b8 fa ff ff sub %ecx,-0x548(%rbp) 0.00 : 46520: 8b 95 98 fa ff ff mov -0x568(%rbp),%edx 0.00 : 46526: 8b 9d b8 fa ff ff mov -0x548(%rbp),%ebx 0.00 : 4652c: 89 8d d0 f8 ff ff mov %ecx,-0x730(%rbp) 0.00 : 46532: 01 d3 add %edx,%ebx 0.00 : 46534: 89 95 cc f8 ff ff mov %edx,-0x734(%rbp) 0.00 : 4653a: 29 c3 sub %eax,%ebx 0.00 : 4653c: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 46543: 00 0.00 : 46544: 0f 95 c0 setne %al 0.00 : 46547: 22 85 a4 f9 ff ff and -0x65c(%rbp),%al 0.00 : 4654d: 88 85 af fa ff ff mov %al,-0x551(%rbp) 0.00 : 46553: 74 0d je 46562 <_IO_vfprintf+0x22a2> 0.00 : 46555: 83 bd a0 f9 ff ff 10 cmpl $0x10,-0x660(%rbp) 0.00 : 4655c: 8d 43 fe lea -0x2(%rbx),%eax 0.00 : 4655f: 0f 44 d8 cmove %eax,%ebx 0.00 : 46562: 8b 85 a8 f9 ff ff mov -0x658(%rbp),%eax 0.00 : 46568: 0b 85 90 f9 ff ff or -0x670(%rbp),%eax 0.00 : 4656e: 0b 85 b0 f9 ff ff or -0x650(%rbp),%eax 0.00 : 46574: 83 f8 01 cmp $0x1,%eax 0.70 : 46577: 83 d3 ff adc $0xffffffff,%ebx 0.00 : 4657a: 80 bd d0 f9 ff ff 20 cmpb $0x20,-0x630(%rbp) 0.70 : 46581: 0f 84 8e 0d 00 00 je 47315 <_IO_vfprintf+0x3055> 2.11 : 46587: 8b 95 90 f9 ff ff mov -0x670(%rbp),%edx 0.70 : 4658d: 85 d2 test %edx,%edx 0.00 : 4658f: 0f 85 4e 0d 00 00 jne 472e3 <_IO_vfprintf+0x3023> 0.00 : 46595: 8b 85 b0 f9 ff ff mov -0x650(%rbp),%eax 0.00 : 4659b: 85 c0 test %eax,%eax 0.00 : 4659d: 0f 85 c5 1c 00 00 jne 48268 <_IO_vfprintf+0x3fa8> 2.82 : 465a3: 8b 85 a8 f9 ff ff mov -0x658(%rbp),%eax 0.00 : 465a9: 85 c0 test %eax,%eax 0.00 : 465ab: 0f 85 cf 17 00 00 jne 47d80 <_IO_vfprintf+0x3ac0> 0.70 : 465b1: 80 bd af fa ff ff 00 cmpb $0x0,-0x551(%rbp) 0.00 : 465b8: 74 0d je 465c7 <_IO_vfprintf+0x2307> 0.00 : 465ba: 83 bd a0 f9 ff ff 10 cmpl $0x10,-0x660(%rbp) 0.00 : 465c1: 0f 84 51 2a 00 00 je 49018 <_IO_vfprintf+0x4d58> 0.00 : 465c7: 8b 8d c8 f9 ff ff mov -0x638(%rbp),%ecx 1.41 : 465cd: 8d 04 0b lea (%rbx,%rcx,1),%eax 0.00 : 465d0: 85 c0 test %eax,%eax 0.00 : 465d2: 7e 33 jle 46607 <_IO_vfprintf+0x2347> 0.70 : 465d4: 48 63 d0 movslq %eax,%rdx 0.00 : 465d7: be 30 00 00 00 mov $0x30,%esi 0.00 : 465dc: 4c 89 e7 mov %r12,%rdi 0.00 : 465df: e8 5c 1c 02 00 callq 68240 <_IO_padn> 0.00 : 465e4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 465eb: 0f 87 b0 01 00 00 ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 465f1: 89 c2 mov %eax,%edx 0.00 : 465f3: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 465f8: 44 29 e8 sub %r13d,%eax 0.00 : 465fb: 39 c2 cmp %eax,%edx 0.00 : 465fd: 0f 87 ce 02 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46603: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46607: 45 85 ed test %r13d,%r13d 0.00 : 4660a: 0f 88 f0 26 00 00 js 48d00 <_IO_vfprintf+0x4a40> 0.70 : 46610: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46617: 48 2b 9d 98 fa ff ff sub -0x568(%rbp),%rbx 0.00 : 4661e: 4c 89 fe mov %r15,%rsi 0.00 : 46621: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 46628: 00 0.00 : 46629: 4c 89 e7 mov %r12,%rdi 0.00 : 4662c: 48 89 da mov %rbx,%rdx 0.00 : 4662f: ff 50 38 callq *0x38(%rax) 0.00 : 46632: 48 39 c3 cmp %rax,%rbx 0.00 : 46635: 0f 85 96 02 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.70 : 4663b: 49 63 d5 movslq %r13d,%rdx 0.00 : 4663e: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46643: 48 29 d0 sub %rdx,%rax 0.00 : 46646: 48 39 c3 cmp %rax,%rbx 0.00 : 46649: 0f 87 82 02 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4664f: 8b 9d cc f8 ff ff mov -0x734(%rbp),%ebx 0.70 : 46655: 29 9d d0 f8 ff ff sub %ebx,-0x730(%rbp) 0.70 : 4665b: 44 03 ad d0 f8 ff ff add -0x730(%rbp),%r13d 2.82 : 46662: e9 29 e2 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 46667: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4666e: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 46675: 00 00 00 00 0.00 : 46679: 0f b6 95 bc f9 ff ff movzbl -0x644(%rbp),%edx 0.00 : 46680: 8b 8d ec fa ff ff mov -0x514(%rbp),%ecx 0.00 : 46686: 44 8b 9d b8 f9 ff ff mov -0x648(%rbp),%r11d 0.00 : 4668d: 8b 9d b8 fa ff ff mov -0x548(%rbp),%ebx 0.00 : 46693: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 46699: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 466a0: 01 d2 add %edx,%edx 0.00 : 466a2: 89 8d 20 ff ff ff mov %ecx,-0xe0(%rbp) 0.00 : 466a8: 0f b6 8d c0 f9 ff ff movzbl -0x640(%rbp),%ecx 0.00 : 466af: 89 9d 24 ff ff ff mov %ebx,-0xdc(%rbp) 0.00 : 466b5: 83 e0 fc and $0xfffffffc,%eax 0.00 : 466b8: 0a 85 b8 f9 ff ff or -0x648(%rbp),%al 0.00 : 466be: c1 e1 02 shl $0x2,%ecx 0.00 : 466c1: 09 d0 or %edx,%eax 0.00 : 466c3: 0f b6 95 a4 f9 ff ff movzbl -0x65c(%rbp),%edx 0.00 : 466ca: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 466cd: 09 c8 or %ecx,%eax 0.00 : 466cf: 0f b6 8d a8 f9 ff ff movzbl -0x658(%rbp),%ecx 0.00 : 466d6: c1 e2 03 shl $0x3,%edx 0.00 : 466d9: 09 d0 or %edx,%eax 0.00 : 466db: 0f b6 95 ac f9 ff ff movzbl -0x654(%rbp),%edx 0.00 : 466e2: c1 e1 04 shl $0x4,%ecx 0.00 : 466e5: 83 e0 cf and $0xffffffcf,%eax 0.00 : 466e8: 09 c8 or %ecx,%eax 0.00 : 466ea: 0f b6 8d b0 f9 ff ff movzbl -0x650(%rbp),%ecx 0.00 : 466f1: c1 e2 05 shl $0x5,%edx 0.00 : 466f4: 09 d0 or %edx,%eax 0.00 : 466f6: 0f b6 95 b4 f9 ff ff movzbl -0x64c(%rbp),%edx 0.00 : 466fd: c1 e1 06 shl $0x6,%ecx 0.00 : 46700: 83 e0 3f and $0x3f,%eax 0.00 : 46703: 09 c8 or %ecx,%eax 0.00 : 46705: c1 e2 07 shl $0x7,%edx 0.00 : 46708: 09 d0 or %edx,%eax 0.00 : 4670a: 0f b6 95 cc f9 ff ff movzbl -0x634(%rbp),%edx 0.00 : 46711: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 46717: 0f b6 85 2d ff ff ff movzbl -0xd3(%rbp),%eax 0.00 : 4671e: c1 e2 03 shl $0x3,%edx 0.00 : 46721: 83 e0 f7 and $0xfffffff7,%eax 0.00 : 46724: 09 d0 or %edx,%eax 0.00 : 46726: 45 85 db test %r11d,%r11d 0.00 : 46729: 88 85 2d ff ff ff mov %al,-0xd3(%rbp) 0.00 : 4672f: 0f b6 85 d0 f9 ff ff movzbl -0x630(%rbp),%eax 0.00 : 46736: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 4673c: 0f 84 2b 14 00 00 je 47b6d <_IO_vfprintf+0x38ad> 0.00 : 46742: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 46746: 48 83 c0 0f add $0xf,%rax 0.00 : 4674a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4674e: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 46752: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 46756: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 46759: 48 8b 00 mov (%rax),%rax 0.00 : 4675c: 89 95 58 ff ff ff mov %edx,-0xa8(%rbp) 0.00 : 46762: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 46769: 48 8d 7d 98 lea -0x68(%rbp),%rdi 0.00 : 4676d: 48 8d 85 50 ff ff ff lea -0xb0(%rbp),%rax 0.00 : 46774: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 4677b: 48 89 fa mov %rdi,%rdx 0.00 : 4677e: 4c 89 e7 mov %r12,%rdi 0.00 : 46781: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 46785: e8 26 36 00 00 callq 49db0 <__printf_fp> 0.00 : 4678a: 85 c0 test %eax,%eax 0.00 : 4678c: 89 c2 mov %eax,%edx 0.00 : 4678e: 0f 88 3d 01 00 00 js 468d1 <_IO_vfprintf+0x2611> 0.00 : 46794: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4679b: 0f 86 3f f1 ff ff jbe 458e0 <_IO_vfprintf+0x1620> 0.00 : 467a1: 48 8d 0d 68 c1 0f 00 lea 0xfc168(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 467a8: 48 8d 35 27 45 0f 00 lea 0xf4527(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 467af: 48 8d 3d da 80 0f 00 lea 0xf80da(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 467b6: ba 41 06 00 00 mov $0x641,%edx 0.00 : 467bb: e8 60 51 fe ff callq 2b920 <__assert_fail> 0.00 : 467c0: 8b 85 ec fa ff ff mov -0x514(%rbp),%eax 0.00 : 467c6: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 467cd: 00 00 00 00 0.00 : 467d1: 8b 95 b8 fa ff ff mov -0x548(%rbp),%edx 0.00 : 467d7: 0f b6 8d c0 f9 ff ff movzbl -0x640(%rbp),%ecx 0.00 : 467de: 44 8b 95 b8 f9 ff ff mov -0x648(%rbp),%r10d 0.00 : 467e5: 89 85 20 ff ff ff mov %eax,-0xe0(%rbp) 0.00 : 467eb: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 467f2: 89 95 24 ff ff ff mov %edx,-0xdc(%rbp) 0.00 : 467f8: 0f b6 95 bc f9 ff ff movzbl -0x644(%rbp),%edx 0.00 : 467ff: c1 e1 02 shl $0x2,%ecx 0.00 : 46802: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 46808: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 4680f: 01 d2 add %edx,%edx 0.00 : 46811: 83 e0 fc and $0xfffffffc,%eax 0.00 : 46814: 0a 85 b8 f9 ff ff or -0x648(%rbp),%al 0.00 : 4681a: 09 d0 or %edx,%eax 0.00 : 4681c: 0f b6 95 a4 f9 ff ff movzbl -0x65c(%rbp),%edx 0.00 : 46823: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 46826: 09 c8 or %ecx,%eax 0.00 : 46828: 0f b6 8d a8 f9 ff ff movzbl -0x658(%rbp),%ecx 0.00 : 4682f: c1 e2 03 shl $0x3,%edx 0.00 : 46832: 09 d0 or %edx,%eax 0.00 : 46834: 0f b6 95 ac f9 ff ff movzbl -0x654(%rbp),%edx 0.00 : 4683b: c1 e1 04 shl $0x4,%ecx 0.00 : 4683e: 83 e0 cf and $0xffffffcf,%eax 0.00 : 46841: 09 c8 or %ecx,%eax 0.00 : 46843: 0f b6 8d b0 f9 ff ff movzbl -0x650(%rbp),%ecx 0.00 : 4684a: c1 e2 05 shl $0x5,%edx 0.00 : 4684d: 09 d0 or %edx,%eax 0.00 : 4684f: 0f b6 95 b4 f9 ff ff movzbl -0x64c(%rbp),%edx 0.00 : 46856: c1 e1 06 shl $0x6,%ecx 0.00 : 46859: 83 e0 3f and $0x3f,%eax 0.00 : 4685c: 09 c8 or %ecx,%eax 0.00 : 4685e: c1 e2 07 shl $0x7,%edx 0.00 : 46861: 09 d0 or %edx,%eax 0.00 : 46863: 45 85 d2 test %r10d,%r10d 0.00 : 46866: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 4686c: 0f b6 85 d0 f9 ff ff movzbl -0x630(%rbp),%eax 0.00 : 46873: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 46879: 0f 84 01 12 00 00 je 47a80 <_IO_vfprintf+0x37c0> 0.00 : 4687f: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 46883: 48 83 c0 0f add $0xf,%rax 0.00 : 46887: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4688b: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 4688f: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 46893: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 46896: 48 8b 00 mov (%rax),%rax 0.00 : 46899: 89 95 58 ff ff ff mov %edx,-0xa8(%rbp) 0.00 : 4689f: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 468a6: 48 8d 4d 98 lea -0x68(%rbp),%rcx 0.00 : 468aa: 48 8d 85 50 ff ff ff lea -0xb0(%rbp),%rax 0.00 : 468b1: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 468b8: 4c 89 e7 mov %r12,%rdi 0.00 : 468bb: 48 89 ca mov %rcx,%rdx 0.00 : 468be: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 468c2: e8 f9 5d 00 00 callq 4c6c0 <__printf_fphex> 0.00 : 468c7: 85 c0 test %eax,%eax 0.00 : 468c9: 89 c2 mov %eax,%edx 0.00 : 468cb: 0f 89 c3 fe ff ff jns 46794 <_IO_vfprintf+0x24d4> 0.00 : 468d1: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 468d7: 80 bd 8b f9 ff ff 00 cmpb $0x0,-0x675(%rbp) 0.00 : 468de: 0f 84 8f db ff ff je 44473 <_IO_vfprintf+0x1b3> 0.00 : 468e4: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 468eb: e8 b0 7f fd ff callq 1e8a0 0.00 : 468f0: e9 7e db ff ff jmpq 44473 <_IO_vfprintf+0x1b3> 0.00 : 468f5: 41 8b 06 mov (%r14),%eax 0.00 : 468f8: 83 f8 30 cmp $0x30,%eax 0.00 : 468fb: 0f 83 7f 18 00 00 jae 48180 <_IO_vfprintf+0x3ec0> 0.00 : 46901: 89 c2 mov %eax,%edx 0.00 : 46903: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 46907: 83 c0 08 add $0x8,%eax 0.00 : 4690a: 41 89 06 mov %eax,(%r14) 0.00 : 4690d: 48 8b 02 mov (%rdx),%rax 0.00 : 46910: 48 85 c0 test %rax,%rax 0.00 : 46913: 0f 84 bd 0c 00 00 je 475d6 <_IO_vfprintf+0x3316> 0.00 : 46919: 48 89 85 c0 f8 ff ff mov %rax,-0x740(%rbp) 0.00 : 46920: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 46927: 00 00 00 0.00 : 4692a: c7 85 a0 f9 ff ff 10 movl $0x10,-0x660(%rbp) 0.00 : 46931: 00 00 00 0.00 : 46934: c7 85 a4 f9 ff ff 01 movl $0x1,-0x65c(%rbp) 0.00 : 4693b: 00 00 00 0.00 : 4693e: c7 85 b4 f9 ff ff 00 movl $0x0,-0x64c(%rbp) 0.00 : 46945: 00 00 00 0.00 : 46948: c6 85 eb f9 ff ff 78 movb $0x78,-0x615(%rbp) 0.00 : 4694f: e9 4d fb ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 46954: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 46959: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4695e: 0f 83 7e 26 00 00 jae 48fe2 <_IO_vfprintf+0x4d22> 0.00 : 46964: c6 00 25 movb $0x25,(%rax) 0.00 : 46967: 48 83 c0 01 add $0x1,%rax 0.00 : 4696b: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 46970: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 46977: 0f 84 54 ff ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4697d: 41 83 c5 01 add $0x1,%r13d 0.00 : 46981: e9 0a df ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.70 : 46986: 8b 85 c0 f9 ff ff mov -0x640(%rbp),%eax 0.70 : 4698c: 85 c0 test %eax,%eax 0.00 : 4698e: 0f 84 db 0f 00 00 je 4796f <_IO_vfprintf+0x36af> 0.00 : 46994: 41 8b 06 mov (%r14),%eax 0.00 : 46997: 83 f8 30 cmp $0x30,%eax 0.00 : 4699a: 0f 83 be 0f 00 00 jae 4795e <_IO_vfprintf+0x369e> 0.70 : 469a0: 89 c2 mov %eax,%edx 0.00 : 469a2: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 469a6: 83 c0 08 add $0x8,%eax 0.00 : 469a9: 41 89 06 mov %eax,(%r14) 0.70 : 469ac: 48 8b 12 mov (%rdx),%rdx 0.00 : 469af: 48 89 d3 mov %rdx,%rbx 0.00 : 469b2: 48 89 d0 mov %rdx,%rax 0.00 : 469b5: c7 85 a0 f9 ff ff 0a movl $0xa,-0x660(%rbp) 0.00 : 469bc: 00 00 00 0.00 : 469bf: 48 c1 eb 3f shr $0x3f,%rbx 0.00 : 469c3: 48 f7 d8 neg %rax 0.70 : 469c6: 85 db test %ebx,%ebx 0.00 : 469c8: 89 9d 90 f9 ff ff mov %ebx,-0x670(%rbp) 0.00 : 469ce: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 469d2: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 469d9: e9 c3 fa ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 469de: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 469e5: 01 0.00 : 469e6: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 469ed: 0f b6 12 movzbl (%rdx),%edx 0.00 : 469f0: 89 d0 mov %edx,%eax 0.00 : 469f2: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 469f8: 48 8d 15 db f2 ff ff lea -0xd25(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 469ff: 83 e8 20 sub $0x20,%eax 0.00 : 46a02: 3c 5a cmp $0x5a,%al 0.00 : 46a04: 0f 87 1c f8 ff ff ja 46226 <_IO_vfprintf+0x1f66> 0.00 : 46a0a: e9 eb f7 ff ff jmpq 461fa <_IO_vfprintf+0x1f3a> 0.00 : 46a0f: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 46a16: 01 0.00 : 46a17: 48 8d 15 bc f2 ff ff lea -0xd44(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 46a1e: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 46a25: 0f b6 09 movzbl (%rcx),%ecx 0.00 : 46a28: 89 c8 mov %ecx,%eax 0.00 : 46a2a: 88 8d eb f9 ff ff mov %cl,-0x615(%rbp) 0.00 : 46a30: 83 e8 20 sub $0x20,%eax 0.00 : 46a33: 3c 5a cmp $0x5a,%al 0.00 : 46a35: 0f 87 eb f7 ff ff ja 46226 <_IO_vfprintf+0x1f66> 0.00 : 46a3b: e9 ba f7 ff ff jmpq 461fa <_IO_vfprintf+0x1f3a> 0.00 : 46a40: c7 85 a0 f9 ff ff 0a movl $0xa,-0x660(%rbp) 0.00 : 46a47: 00 00 00 0.00 : 46a4a: e9 04 fa ff ff jmpq 46453 <_IO_vfprintf+0x2193> 0.00 : 46a4f: c7 85 a0 f9 ff ff 08 movl $0x8,-0x660(%rbp) 0.00 : 46a56: 00 00 00 0.00 : 46a59: e9 f5 f9 ff ff jmpq 46453 <_IO_vfprintf+0x2193> 0.00 : 46a5e: 66 90 xchg %ax,%ax 0.00 : 46a60: 48 8b 85 58 f8 ff ff mov -0x7a8(%rbp),%rax 0.00 : 46a67: 48 8b 3d ca b3 32 00 mov 0x32b3ca(%rip),%rdi # 371e38 <_DYNAMIC+0x2d8> 0.00 : 46a6e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 46a74: c7 04 38 16 00 00 00 movl $0x16,(%rax,%rdi,1) 0.00 : 46a7b: e9 9f da ff ff jmpq 4451f <_IO_vfprintf+0x25f> 0.00 : 46a80: 48 8b 05 e9 0b 33 00 mov 0x330be9(%rip),%rax # 377670 <__libc_pthread_functions+0x170> 0.00 : 46a87: 48 8d bd e0 fe ff ff lea -0x120(%rbp),%rdi 0.00 : 46a8e: 4c 89 e2 mov %r12,%rdx 0.00 : 46a91: 48 c1 c8 11 ror $0x11,%rax 0.00 : 46a95: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 46a9c: 00 00 0.00 : 46a9e: 48 8b 35 a3 b4 32 00 mov 0x32b4a3(%rip),%rsi # 371f48 <_DYNAMIC+0x3e8> 0.00 : 46aa5: ff d0 callq *%rax 0.00 : 46aa7: 41 8b 1c 24 mov (%r12),%ebx 0.00 : 46aab: e9 1a d9 ff ff jmpq 443ca <_IO_vfprintf+0x10a> 0.00 : 46ab0: 8b 85 90 f9 ff ff mov -0x670(%rbp),%eax 0.00 : 46ab6: 85 c0 test %eax,%eax 0.00 : 46ab8: 0f 85 c8 0a 00 00 jne 47586 <_IO_vfprintf+0x32c6> 0.00 : 46abe: 8b 85 b0 f9 ff ff mov -0x650(%rbp),%eax 0.00 : 46ac4: 85 c0 test %eax,%eax 0.00 : 46ac6: 0f 85 f7 0c 00 00 jne 477c3 <_IO_vfprintf+0x3503> 0.00 : 46acc: 8b 85 a8 f9 ff ff mov -0x658(%rbp),%eax 0.00 : 46ad2: 85 c0 test %eax,%eax 0.00 : 46ad4: 0f 85 c0 0e 00 00 jne 4799a <_IO_vfprintf+0x36da> 0.00 : 46ada: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 46ae1: 00 0.00 : 46ae2: 74 17 je 46afb <_IO_vfprintf+0x283b> 0.00 : 46ae4: 8b 85 a4 f9 ff ff mov -0x65c(%rbp),%eax 0.00 : 46aea: 85 c0 test %eax,%eax 0.00 : 46aec: 74 0d je 46afb <_IO_vfprintf+0x283b> 0.00 : 46aee: 83 bd a0 f9 ff ff 10 cmpl $0x10,-0x660(%rbp) 0.00 : 46af5: 0f 84 7e 25 00 00 je 49079 <_IO_vfprintf+0x4db9> 0.00 : 46afb: 8b 9d c8 f9 ff ff mov -0x638(%rbp),%ebx 0.00 : 46b01: 85 db test %ebx,%ebx 0.00 : 46b03: 7e 37 jle 46b3c <_IO_vfprintf+0x287c> 0.00 : 46b05: 48 63 95 c8 f9 ff ff movslq -0x638(%rbp),%rdx 0.00 : 46b0c: be 30 00 00 00 mov $0x30,%esi 0.00 : 46b11: 4c 89 e7 mov %r12,%rdi 0.00 : 46b14: e8 27 17 02 00 callq 68240 <_IO_padn> 0.00 : 46b19: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46b20: 0f 87 7b fc ff ff ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 46b26: 89 c2 mov %eax,%edx 0.00 : 46b28: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46b2d: 44 29 e8 sub %r13d,%eax 0.00 : 46b30: 39 c2 cmp %eax,%edx 0.00 : 46b32: 0f 87 99 fd ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46b38: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46b3c: 45 85 ed test %r13d,%r13d 0.00 : 46b3f: 0f 88 bb 21 00 00 js 48d00 <_IO_vfprintf+0x4a40> 0.00 : 46b45: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46b4c: 48 2b 9d 98 fa ff ff sub -0x568(%rbp),%rbx 0.00 : 46b53: 4c 89 fe mov %r15,%rsi 0.00 : 46b56: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 46b5d: 00 0.00 : 46b5e: 4c 89 e7 mov %r12,%rdi 0.00 : 46b61: 48 89 da mov %rbx,%rdx 0.00 : 46b64: ff 50 38 callq *0x38(%rax) 0.00 : 46b67: 48 39 c3 cmp %rax,%rbx 0.00 : 46b6a: 0f 85 61 fd ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 46b70: 49 63 d5 movslq %r13d,%rdx 0.00 : 46b73: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46b78: 48 29 d0 sub %rdx,%rax 0.00 : 46b7b: 48 39 c3 cmp %rax,%rbx 0.00 : 46b7e: 0f 87 4d fd ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46b84: 8b 8d 98 fa ff ff mov -0x568(%rbp),%ecx 0.00 : 46b8a: 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%edx 0.00 : 46b90: 89 c8 mov %ecx,%eax 0.00 : 46b92: 29 d0 sub %edx,%eax 0.00 : 46b94: 2b 85 c8 f9 ff ff sub -0x638(%rbp),%eax 0.00 : 46b9a: 29 ca sub %ecx,%edx 0.00 : 46b9c: 03 85 b8 fa ff ff add -0x548(%rbp),%eax 0.00 : 46ba2: 42 8d 1c 2a lea (%rdx,%r13,1),%ebx 0.00 : 46ba6: 85 c0 test %eax,%eax 0.00 : 46ba8: 0f 8f 51 06 00 00 jg 471ff <_IO_vfprintf+0x2f3f> 0.00 : 46bae: 41 89 dd mov %ebx,%r13d 0.00 : 46bb1: e9 da dc ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 46bb6: 4c 89 ff mov %r15,%rdi 0.00 : 46bb9: e8 02 10 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 46bbe: 85 c0 test %eax,%eax 0.00 : 46bc0: 0f 85 05 f2 ff ff jne 45dcb <_IO_vfprintf+0x1b0b> 0.00 : 46bc6: 48 89 9d a0 fa ff ff mov %rbx,-0x560(%rbp) 0.00 : 46bcd: c6 85 8b f9 ff ff 01 movb $0x1,-0x675(%rbp) 0.00 : 46bd4: e9 f9 f1 ff ff jmpq 45dd2 <_IO_vfprintf+0x1b12> 0.00 : 46bd9: 8b 85 20 fa ff ff mov -0x5e0(%rbp),%eax 0.00 : 46bdf: 85 c0 test %eax,%eax 0.00 : 46be1: 0f 85 66 09 00 00 jne 4754d <_IO_vfprintf+0x328d> 0.00 : 46be7: 8b 85 4c fa ff ff mov -0x5b4(%rbp),%eax 0.00 : 46bed: 85 c0 test %eax,%eax 0.00 : 46bef: 0f 85 f3 13 00 00 jne 47fe8 <_IO_vfprintf+0x3d28> 0.00 : 46bf5: 8b 85 44 fa ff ff mov -0x5bc(%rbp),%eax 0.00 : 46bfb: 85 c0 test %eax,%eax 0.00 : 46bfd: 0f 85 cb 10 00 00 jne 47cce <_IO_vfprintf+0x3a0e> 0.00 : 46c03: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 46c0a: 00 0.00 : 46c0b: 74 17 je 46c24 <_IO_vfprintf+0x2964> 0.00 : 46c0d: 8b 85 40 fa ff ff mov -0x5c0(%rbp),%eax 0.00 : 46c13: 85 c0 test %eax,%eax 0.00 : 46c15: 74 0d je 46c24 <_IO_vfprintf+0x2964> 0.00 : 46c17: 83 bd 3c fa ff ff 10 cmpl $0x10,-0x5c4(%rbp) 0.00 : 46c1e: 0f 84 9d 16 00 00 je 482c1 <_IO_vfprintf+0x4001> 0.00 : 46c24: 8b 9d bc fa ff ff mov -0x544(%rbp),%ebx 0.00 : 46c2a: 85 db test %ebx,%ebx 0.00 : 46c2c: 7e 37 jle 46c65 <_IO_vfprintf+0x29a5> 0.00 : 46c2e: 48 63 95 bc fa ff ff movslq -0x544(%rbp),%rdx 0.00 : 46c35: be 30 00 00 00 mov $0x30,%esi 0.00 : 46c3a: 4c 89 e7 mov %r12,%rdi 0.00 : 46c3d: e8 fe 15 02 00 callq 68240 <_IO_padn> 0.00 : 46c42: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46c49: 0f 87 48 f6 ff ff ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 46c4f: 89 c2 mov %eax,%edx 0.00 : 46c51: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46c56: 44 29 e8 sub %r13d,%eax 0.00 : 46c59: 39 c2 cmp %eax,%edx 0.00 : 46c5b: 0f 87 70 fc ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46c61: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46c65: 45 85 ed test %r13d,%r13d 0.00 : 46c68: 0f 88 15 27 00 00 js 49383 <_IO_vfprintf+0x50c3> 0.00 : 46c6e: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46c75: 48 2b 9d d0 fa ff ff sub -0x530(%rbp),%rbx 0.00 : 46c7c: 4c 89 fe mov %r15,%rsi 0.00 : 46c7f: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 46c86: 00 0.00 : 46c87: 4c 89 e7 mov %r12,%rdi 0.00 : 46c8a: 48 89 da mov %rbx,%rdx 0.00 : 46c8d: ff 50 38 callq *0x38(%rax) 0.00 : 46c90: 48 39 c3 cmp %rax,%rbx 0.00 : 46c93: 0f 85 38 fc ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 46c99: 49 63 d5 movslq %r13d,%rdx 0.00 : 46c9c: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46ca1: 48 29 d0 sub %rdx,%rax 0.00 : 46ca4: 48 39 c3 cmp %rax,%rbx 0.00 : 46ca7: 0f 87 24 fc ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46cad: 8b 8d d0 fa ff ff mov -0x530(%rbp),%ecx 0.00 : 46cb3: 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%edx 0.00 : 46cb9: 89 c8 mov %ecx,%eax 0.00 : 46cbb: 29 d0 sub %edx,%eax 0.00 : 46cbd: 2b 85 bc fa ff ff sub -0x544(%rbp),%eax 0.00 : 46cc3: 29 ca sub %ecx,%edx 0.00 : 46cc5: 03 85 64 fa ff ff add -0x59c(%rbp),%eax 0.00 : 46ccb: 42 8d 1c 2a lea (%rdx,%r13,1),%ebx 0.00 : 46ccf: 41 89 dd mov %ebx,%r13d 0.00 : 46cd2: 85 c0 test %eax,%eax 0.00 : 46cd4: 0f 8e e6 dd ff ff jle 44ac0 <_IO_vfprintf+0x800> 0.00 : 46cda: 48 63 d0 movslq %eax,%rdx 0.00 : 46cdd: be 20 00 00 00 mov $0x20,%esi 0.00 : 46ce2: 4c 89 e7 mov %r12,%rdi 0.00 : 46ce5: e8 56 15 02 00 callq 68240 <_IO_padn> 0.00 : 46cea: 81 fb fe ff ff 7f cmp $0x7ffffffe,%ebx 0.00 : 46cf0: 0f 87 a1 f5 ff ff ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 46cf6: 89 c2 mov %eax,%edx 0.00 : 46cf8: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46cfd: 29 d8 sub %ebx,%eax 0.00 : 46cff: 39 c2 cmp %eax,%edx 0.00 : 46d01: 0f 87 ca fb ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46d07: 44 8d 2c 1a lea (%rdx,%rbx,1),%r13d 0.00 : 46d0b: e9 b0 dd ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 46d10: 48 89 df mov %rbx,%rdi 0.00 : 46d13: e8 a8 0e 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 46d18: 85 c0 test %eax,%eax 0.00 : 46d1a: 0f 85 ee 02 00 00 jne 4700e <_IO_vfprintf+0x2d4e> 0.00 : 46d20: 48 89 df mov %rbx,%rdi 0.00 : 46d23: e8 28 7b fd ff callq 1e850 0.00 : 46d28: 48 85 c0 test %rax,%rax 0.00 : 46d2b: 48 89 85 78 f9 ff ff mov %rax,-0x688(%rbp) 0.00 : 46d32: 48 89 85 08 fa ff ff mov %rax,-0x5f8(%rbp) 0.00 : 46d39: 0f 85 ea 02 00 00 jne 47029 <_IO_vfprintf+0x2d69> 0.00 : 46d3f: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 46d45: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 46d4c: 00 00 00 00 0.00 : 46d50: e9 82 fb ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 46d55: c6 85 72 fa ff ff 20 movb $0x20,-0x58e(%rbp) 0.00 : 46d5c: 31 c9 xor %ecx,%ecx 0.00 : 46d5e: 80 bd 73 fa ff ff 58 cmpb $0x58,-0x58d(%rbp) 0.00 : 46d65: 8b 95 3c fa ff ff mov -0x5c4(%rbp),%edx 0.00 : 46d6b: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 0.00 : 46d72: 48 8b bd 08 f9 ff ff mov -0x6f8(%rbp),%rdi 0.00 : 46d79: 0f 94 c1 sete %cl 0.00 : 46d7c: e8 4f cf ff ff callq 43cd0 <_itoa_word> 0.00 : 46d81: 44 8b 8d 50 fa ff ff mov -0x5b0(%rbp),%r9d 0.00 : 46d88: 49 89 c7 mov %rax,%r15 0.00 : 46d8b: 45 85 c9 test %r9d,%r9d 0.00 : 46d8e: 74 2a je 46dba <_IO_vfprintf+0x2afa> 0.00 : 46d90: 48 83 bd 40 f9 ff ff cmpq $0x0,-0x6c0(%rbp) 0.00 : 46d97: 00 0.00 : 46d98: 74 20 je 46dba <_IO_vfprintf+0x2afa> 0.00 : 46d9a: 48 8b 8d 38 f9 ff ff mov -0x6c8(%rbp),%rcx 0.00 : 46da1: 48 8b 95 40 f9 ff ff mov -0x6c0(%rbp),%rdx 0.00 : 46da8: 48 89 c7 mov %rax,%rdi 0.00 : 46dab: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 0.00 : 46db2: e8 39 d1 ff ff callq 43ef0 0.00 : 46db7: 49 89 c7 mov %rax,%r15 0.00 : 46dba: 44 8b 85 6c fa ff ff mov -0x594(%rbp),%r8d 0.00 : 46dc1: 45 85 c0 test %r8d,%r8d 0.00 : 46dc4: 74 1e je 46de4 <_IO_vfprintf+0x2b24> 0.00 : 46dc6: 83 bd 3c fa ff ff 0a cmpl $0xa,-0x5c4(%rbp) 0.00 : 46dcd: 75 15 jne 46de4 <_IO_vfprintf+0x2b24> 0.00 : 46dcf: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46dd6: 4c 89 ff mov %r15,%rdi 0.00 : 46dd9: 48 89 d6 mov %rdx,%rsi 0.00 : 46ddc: e8 3f d2 ff ff callq 44020 <_i18n_number_rewrite> 0.00 : 46de1: 49 89 c7 mov %rax,%r15 0.00 : 46de4: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46deb: 48 63 85 68 fa ff ff movslq -0x598(%rbp),%rax 0.00 : 46df2: 4c 89 bd d0 fa ff ff mov %r15,-0x530(%rbp) 0.00 : 46df9: 4c 29 fa sub %r15,%rdx 0.00 : 46dfc: 48 39 d0 cmp %rdx,%rax 0.00 : 46dff: 0f 8f 56 f1 ff ff jg 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e05: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 46e0c: 00 0.00 : 46e0d: 0f 84 48 f1 ff ff je 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e13: 8b bd 40 fa ff ff mov -0x5c0(%rbp),%edi 0.00 : 46e19: 85 ff test %edi,%edi 0.00 : 46e1b: 0f 84 3a f1 ff ff je 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e21: 83 bd 3c fa ff ff 08 cmpl $0x8,-0x5c4(%rbp) 0.00 : 46e28: 0f 85 2d f1 ff ff jne 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e2e: 49 83 ef 01 sub $0x1,%r15 0.00 : 46e32: 41 c6 07 30 movb $0x30,(%r15) 0.00 : 46e36: 4c 89 bd d0 fa ff ff mov %r15,-0x530(%rbp) 0.00 : 46e3d: e9 19 f1 ff ff jmpq 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e42: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 46e49: 31 c9 xor %ecx,%ecx 0.00 : 46e4b: 80 bd eb f9 ff ff 58 cmpb $0x58,-0x615(%rbp) 0.70 : 46e52: 8b 95 a0 f9 ff ff mov -0x660(%rbp),%edx 0.00 : 46e58: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 1.41 : 46e5f: 48 8b bd c0 f8 ff ff mov -0x740(%rbp),%rdi 0.00 : 46e66: 0f 94 c1 sete %cl 0.00 : 46e69: e8 62 ce ff ff callq 43cd0 <_itoa_word> 0.00 : 46e6e: 44 8b 85 b4 f9 ff ff mov -0x64c(%rbp),%r8d 1.41 : 46e75: 49 89 c7 mov %rax,%r15 0.00 : 46e78: 45 85 c0 test %r8d,%r8d 0.00 : 46e7b: 74 2a je 46ea7 <_IO_vfprintf+0x2be7> 0.00 : 46e7d: 48 83 bd 40 f9 ff ff cmpq $0x0,-0x6c0(%rbp) 0.00 : 46e84: 00 0.00 : 46e85: 74 20 je 46ea7 <_IO_vfprintf+0x2be7> 0.00 : 46e87: 48 8b 8d 38 f9 ff ff mov -0x6c8(%rbp),%rcx 0.00 : 46e8e: 48 8b 95 40 f9 ff ff mov -0x6c0(%rbp),%rdx 0.00 : 46e95: 48 89 c7 mov %rax,%rdi 0.00 : 46e98: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 0.00 : 46e9f: e8 4c d0 ff ff callq 43ef0 0.00 : 46ea4: 49 89 c7 mov %rax,%r15 0.00 : 46ea7: 8b bd cc f9 ff ff mov -0x634(%rbp),%edi 0.00 : 46ead: 85 ff test %edi,%edi 0.00 : 46eaf: 74 1e je 46ecf <_IO_vfprintf+0x2c0f> 0.00 : 46eb1: 83 bd a0 f9 ff ff 0a cmpl $0xa,-0x660(%rbp) 0.00 : 46eb8: 75 15 jne 46ecf <_IO_vfprintf+0x2c0f> 0.00 : 46eba: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46ec1: 4c 89 ff mov %r15,%rdi 0.00 : 46ec4: 48 89 d6 mov %rdx,%rsi 0.00 : 46ec7: e8 54 d1 ff ff callq 44020 <_i18n_number_rewrite> 0.00 : 46ecc: 49 89 c7 mov %rax,%r15 0.70 : 46ecf: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46ed6: 48 63 85 ec fa ff ff movslq -0x514(%rbp),%rax 0.00 : 46edd: 4c 89 bd 98 fa ff ff mov %r15,-0x568(%rbp) 0.00 : 46ee4: 4c 29 fa sub %r15,%rdx 0.00 : 46ee7: 48 39 d0 cmp %rdx,%rax 0.00 : 46eea: 0f 8f f9 f5 ff ff jg 464e9 <_IO_vfprintf+0x2229> 0.00 : 46ef0: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 46ef7: 00 0.00 : 46ef8: 0f 84 eb f5 ff ff je 464e9 <_IO_vfprintf+0x2229> 0.00 : 46efe: 8b b5 a4 f9 ff ff mov -0x65c(%rbp),%esi 0.00 : 46f04: 85 f6 test %esi,%esi 0.00 : 46f06: 0f 84 dd f5 ff ff je 464e9 <_IO_vfprintf+0x2229> 0.00 : 46f0c: 83 bd a0 f9 ff ff 08 cmpl $0x8,-0x660(%rbp) 0.00 : 46f13: 0f 85 d0 f5 ff ff jne 464e9 <_IO_vfprintf+0x2229> 0.00 : 46f19: 49 83 ef 01 sub $0x1,%r15 0.00 : 46f1d: 41 c6 07 30 movb $0x30,(%r15) 0.00 : 46f21: 4c 89 bd 98 fa ff ff mov %r15,-0x568(%rbp) 0.00 : 46f28: e9 bc f5 ff ff jmpq 464e9 <_IO_vfprintf+0x2229> 0.70 : 46f2d: c7 85 ec fa ff ff 01 movl $0x1,-0x514(%rbp) 0.00 : 46f34: 00 00 00 0.00 : 46f37: e9 0d ff ff ff jmpq 46e49 <_IO_vfprintf+0x2b89> 0.70 : 46f3c: 44 8b 9d c4 f9 ff ff mov -0x63c(%rbp),%r11d 0.00 : 46f43: 45 85 db test %r11d,%r11d 0.00 : 46f46: 0f 84 2f 04 00 00 je 4737b <_IO_vfprintf+0x30bb> 0.00 : 46f4c: 41 8b 06 mov (%r14),%eax 0.00 : 46f4f: 83 f8 30 cmp $0x30,%eax 0.00 : 46f52: 0f 83 53 0b 00 00 jae 47aab <_IO_vfprintf+0x37eb> 0.00 : 46f58: 89 c2 mov %eax,%edx 0.00 : 46f5a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 46f5e: 83 c0 08 add $0x8,%eax 0.00 : 46f61: 41 89 06 mov %eax,(%r14) 0.00 : 46f64: 0f b6 12 movzbl (%rdx),%edx 0.00 : 46f67: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 46f6e: 00 00 00 0.00 : 46f71: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 46f78: 00 00 00 0.00 : 46f7b: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 46f82: 00 00 00 0.00 : 46f85: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 46f8c: e9 10 f5 ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 1.41 : 46f91: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 46f98: 00 00 00 00 0.70 : 46f9c: e9 36 f9 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 46fa1: 48 8b bd f8 f9 ff ff mov -0x608(%rbp),%rdi 0.00 : 46fa8: 48 8b 85 a0 fa ff ff mov -0x560(%rbp),%rax 0.00 : 46faf: 48 89 bd e0 fa ff ff mov %rdi,-0x520(%rbp) 0.00 : 46fb6: 48 89 85 80 f9 ff ff mov %rax,-0x680(%rbp) 0.00 : 46fbd: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 46fc1: 48 39 85 00 fa ff ff cmp %rax,-0x600(%rbp) 0.00 : 46fc8: 48 0f 43 85 00 fa ff cmovae -0x600(%rbp),%rax 0.00 : 46fcf: ff 0.00 : 46fd0: 48 89 85 b0 fa ff ff mov %rax,-0x550(%rbp) 0.00 : 46fd7: 48 b8 aa aa aa aa aa movabs $0xaaaaaaaaaaaaaaa,%rax 0.00 : 46fde: aa aa 0a 0.00 : 46fe1: 48 39 85 b0 fa ff ff cmp %rax,-0x550(%rbp) 0.00 : 46fe8: 0f 87 51 fd ff ff ja 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 46fee: 48 8b 95 b0 fa ff ff mov -0x550(%rbp),%rdx 0.00 : 46ff5: 48 8d 04 52 lea (%rdx,%rdx,2),%rax 0.00 : 46ff9: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 47000: 00 0.00 : 47001: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 47008: 0f 87 02 fd ff ff ja 46d10 <_IO_vfprintf+0x2a50> 0.00 : 4700e: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 47012: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 47016: 48 29 c4 sub %rax,%rsp 0.00 : 47019: 48 8d 4c 24 0f lea 0xf(%rsp),%rcx 0.00 : 4701e: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : 47022: 48 89 8d 08 fa ff ff mov %rcx,-0x5f8(%rbp) 0.00 : 47029: 48 8b 85 b0 fa ff ff mov -0x550(%rbp),%rax 0.00 : 47030: 48 8b 95 b0 fa ff ff mov -0x550(%rbp),%rdx 0.00 : 47037: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4703b: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 47042: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 47046: 48 89 85 10 fa ff ff mov %rax,-0x5f0(%rbp) 0.00 : 4704d: 48 01 d0 add %rdx,%rax 0.00 : 47050: 48 89 85 18 fa ff ff mov %rax,-0x5e8(%rbp) 0.00 : 47057: 41 8b 44 24 74 mov 0x74(%r12),%eax 0.00 : 4705c: 48 8b bd 18 fa ff ff mov -0x5e8(%rbp),%rdi 0.00 : 47063: 83 e0 04 and $0x4,%eax 0.00 : 47066: 83 f8 01 cmp $0x1,%eax 0.00 : 47069: 19 f6 sbb %esi,%esi 0.00 : 4706b: f7 d6 not %esi 0.00 : 4706d: e8 fe c3 03 00 callq 83470 <__GI_memset> 0.00 : 47072: 48 83 bd e0 fa ff ff cmpq $0x0,-0x520(%rbp) 0.00 : 47079: 00 0.00 : 4707a: 0f 84 ab 00 00 00 je 4712b <_IO_vfprintf+0x2e6b> 0.00 : 47080: 48 8b 9d a0 fa ff ff mov -0x560(%rbp),%rbx 0.00 : 47087: 45 31 ff xor %r15d,%r15d 0.00 : 4708a: eb 3c jmp 470c8 <_IO_vfprintf+0x2e08> 0.00 : 4708c: 48 63 53 30 movslq 0x30(%rbx),%rdx 0.00 : 47090: 48 8b 8d 10 fa ff ff mov -0x5f0(%rbp),%rcx 0.00 : 47097: 48 89 df mov %rbx,%rdi 0.00 : 4709a: 4c 63 43 08 movslq 0x8(%rbx),%r8 0.00 : 4709e: 48 8b 05 4b bd 32 00 mov 0x32bd4b(%rip),%rax # 372df0 <__printf_arginfo_table> 0.00 : 470a5: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 470a9: 48 01 d1 add %rdx,%rcx 0.00 : 470ac: 48 03 95 18 fa ff ff add -0x5e8(%rbp),%rdx 0.00 : 470b3: 42 ff 14 c0 callq *(%rax,%r8,8) 0.00 : 470b7: 49 83 c7 01 add $0x1,%r15 0.00 : 470bb: 48 83 c3 48 add $0x48,%rbx 0.00 : 470bf: 4c 3b bd e0 fa ff ff cmp -0x520(%rbp),%r15 0.00 : 470c6: 73 63 jae 4712b <_IO_vfprintf+0x2e6b> 0.00 : 470c8: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 470cb: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 470ce: 74 10 je 470e0 <_IO_vfprintf+0x2e20> 0.00 : 470d0: 48 8b bd 18 fa ff ff mov -0x5e8(%rbp),%rdi 0.00 : 470d7: 48 98 cltq 0.00 : 470d9: c7 04 87 00 00 00 00 movl $0x0,(%rdi,%rax,4) 0.00 : 470e0: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 470e3: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 470e6: 74 10 je 470f8 <_IO_vfprintf+0x2e38> 0.00 : 470e8: 48 8b 95 18 fa ff ff mov -0x5e8(%rbp),%rdx 0.00 : 470ef: 48 98 cltq 0.00 : 470f1: c7 04 82 00 00 00 00 movl $0x0,(%rdx,%rax,4) 0.00 : 470f8: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 470fc: 48 85 f6 test %rsi,%rsi 0.00 : 470ff: 74 b6 je 470b7 <_IO_vfprintf+0x2df7> 0.00 : 47101: 48 83 fe 01 cmp $0x1,%rsi 0.00 : 47105: 75 85 jne 4708c <_IO_vfprintf+0x2dcc> 0.00 : 47107: 48 63 53 30 movslq 0x30(%rbx),%rdx 0.00 : 4710b: 8b 43 34 mov 0x34(%rbx),%eax 0.00 : 4710e: 48 8b 8d 18 fa ff ff mov -0x5e8(%rbp),%rcx 0.00 : 47115: 89 04 91 mov %eax,(%rcx,%rdx,4) 0.00 : 47118: 48 63 53 30 movslq 0x30(%rbx),%rdx 0.00 : 4711c: 8b 43 40 mov 0x40(%rbx),%eax 0.00 : 4711f: 48 8b bd 10 fa ff ff mov -0x5f0(%rbp),%rdi 0.00 : 47126: 89 04 97 mov %eax,(%rdi,%rdx,4) 0.00 : 47129: eb 8c jmp 470b7 <_IO_vfprintf+0x2df7> 0.00 : 4712b: 48 83 bd b0 fa ff ff cmpq $0x0,-0x550(%rbp) 0.00 : 47132: 00 0.00 : 47133: 0f 84 08 da ff ff je 44b41 <_IO_vfprintf+0x881> 0.00 : 47139: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 47140: 45 31 ff xor %r15d,%r15d 0.00 : 47143: eb 48 jmp 4718d <_IO_vfprintf+0x2ecd> 0.00 : 47145: 83 f8 03 cmp $0x3,%eax 0.00 : 47148: 7d 7c jge 471c6 <_IO_vfprintf+0x2f06> 0.00 : 4714a: 83 f8 01 cmp $0x1,%eax 0.00 : 4714d: 0f 8e 19 0e 00 00 jle 47f6c <_IO_vfprintf+0x3cac> 0.00 : 47153: 8b 85 00 ff ff ff mov -0x100(%rbp),%eax 0.00 : 47159: 83 f8 30 cmp $0x30,%eax 0.00 : 4715c: 0f 83 5d 04 00 00 jae 475bf <_IO_vfprintf+0x32ff> 0.00 : 47162: 89 c2 mov %eax,%edx 0.00 : 47164: 48 03 95 10 ff ff ff add -0xf0(%rbp),%rdx 0.00 : 4716b: 83 c0 08 add $0x8,%eax 0.00 : 4716e: 89 85 00 ff ff ff mov %eax,-0x100(%rbp) 0.00 : 47174: 8b 02 mov (%rdx),%eax 0.00 : 47176: 89 03 mov %eax,(%rbx) 0.00 : 47178: 49 83 c7 01 add $0x1,%r15 0.00 : 4717c: 48 83 c3 10 add $0x10,%rbx 0.00 : 47180: 4c 39 bd b0 fa ff ff cmp %r15,-0x550(%rbp) 0.00 : 47187: 0f 86 b4 d9 ff ff jbe 44b41 <_IO_vfprintf+0x881> 0.00 : 4718d: 48 8b 95 18 fa ff ff mov -0x5e8(%rbp),%rdx 0.00 : 47194: 42 8b 04 ba mov (%rdx,%r15,4),%eax 0.00 : 47198: 83 f8 05 cmp $0x5,%eax 0.00 : 4719b: 7e a8 jle 47145 <_IO_vfprintf+0x2e85> 0.00 : 4719d: 3d 00 01 00 00 cmp $0x100,%eax 0.00 : 471a2: 74 22 je 471c6 <_IO_vfprintf+0x2f06> 0.00 : 471a4: 0f 8f 8b 00 00 00 jg 47235 <_IO_vfprintf+0x2f75> 0.00 : 471aa: 83 f8 07 cmp $0x7,%eax 0.00 : 471ad: 0f 1f 00 nopl (%rax) 0.00 : 471b0: 0f 8e 9d 01 00 00 jle 47353 <_IO_vfprintf+0x3093> 0.00 : 471b6: f6 c4 08 test $0x8,%ah 0.00 : 471b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 471c0: 0f 84 c3 10 00 00 je 48289 <_IO_vfprintf+0x3fc9> 0.00 : 471c6: 8b 85 00 ff ff ff mov -0x100(%rbp),%eax 0.00 : 471cc: 83 f8 30 cmp $0x30,%eax 0.00 : 471cf: 73 1a jae 471eb <_IO_vfprintf+0x2f2b> 0.00 : 471d1: 89 c2 mov %eax,%edx 0.00 : 471d3: 48 03 95 10 ff ff ff add -0xf0(%rbp),%rdx 0.00 : 471da: 83 c0 08 add $0x8,%eax 0.00 : 471dd: 89 85 00 ff ff ff mov %eax,-0x100(%rbp) 0.00 : 471e3: 48 8b 02 mov (%rdx),%rax 0.00 : 471e6: 48 89 03 mov %rax,(%rbx) 0.00 : 471e9: eb 8d jmp 47178 <_IO_vfprintf+0x2eb8> 0.00 : 471eb: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 471f2: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 471f6: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 471fd: eb e4 jmp 471e3 <_IO_vfprintf+0x2f23> 0.00 : 471ff: 48 63 d0 movslq %eax,%rdx 0.00 : 47202: be 20 00 00 00 mov $0x20,%esi 0.00 : 47207: 4c 89 e7 mov %r12,%rdi 0.00 : 4720a: e8 31 10 02 00 callq 68240 <_IO_padn> 0.00 : 4720f: 81 fb fe ff ff 7f cmp $0x7ffffffe,%ebx 0.00 : 47215: 0f 87 86 f5 ff ff ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 4721b: 89 c2 mov %eax,%edx 0.00 : 4721d: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47222: 29 d8 sub %ebx,%eax 0.00 : 47224: 39 c2 cmp %eax,%edx 0.00 : 47226: 0f 87 a5 f6 ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4722c: 44 8d 2c 1a lea (%rdx,%rbx,1),%r13d 0.00 : 47230: e9 5b d6 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 47235: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 4723a: 74 8a je 471c6 <_IO_vfprintf+0x2f06> 0.00 : 4723c: 3d 00 04 00 00 cmp $0x400,%eax 0.00 : 47241: 0f 84 0c ff ff ff je 47153 <_IO_vfprintf+0x2e93> 0.00 : 47247: 3d 07 01 00 00 cmp $0x107,%eax 0.00 : 4724c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 47250: 0f 85 60 ff ff ff jne 471b6 <_IO_vfprintf+0x2ef6> 0.00 : 47256: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 4725d: 48 83 c0 0f add $0xf,%rax 0.00 : 47261: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 47265: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 47269: 48 89 95 08 ff ff ff mov %rdx,-0xf8(%rbp) 0.00 : 47270: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 47273: 48 8b 00 mov (%rax),%rax 0.00 : 47276: 89 53 08 mov %edx,0x8(%rbx) 0.00 : 47279: 48 89 03 mov %rax,(%rbx) 0.00 : 4727c: e9 f7 fe ff ff jmpq 47178 <_IO_vfprintf+0x2eb8> 0.00 : 47281: c7 85 68 fa ff ff 01 movl $0x1,-0x598(%rbp) 0.00 : 47288: 00 00 00 0.00 : 4728b: e9 cc fa ff ff jmpq 46d5c <_IO_vfprintf+0x2a9c> 0.00 : 47290: 8b 9d 5c fa ff ff mov -0x5a4(%rbp),%ebx 0.00 : 47296: 85 db test %ebx,%ebx 0.00 : 47298: 0f 84 57 05 00 00 je 477f5 <_IO_vfprintf+0x3535> 0.00 : 4729e: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 472a5: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 472aa: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 472b1: 48 c1 e0 04 shl $0x4,%rax 0.00 : 472b5: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : 472b9: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 472c0: 00 00 00 0.00 : 472c3: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 472ca: 00 00 00 0.00 : 472cd: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 472d4: 00 00 00 0.00 : 472d7: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 472de: e9 30 ec ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 472e3: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 472e8: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 472ed: 0f 83 28 1e 00 00 jae 4911b <_IO_vfprintf+0x4e5b> 0.00 : 472f3: c6 00 2d movb $0x2d,(%rax) 0.00 : 472f6: 48 83 c0 01 add $0x1,%rax 0.00 : 472fa: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 472ff: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 47306: 0f 84 c5 f5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4730c: 41 83 c5 01 add $0x1,%r13d 0.00 : 47310: e9 9c f2 ff ff jmpq 465b1 <_IO_vfprintf+0x22f1> 0.00 : 47315: 85 db test %ebx,%ebx 0.00 : 47317: 7e 33 jle 4734c <_IO_vfprintf+0x308c> 0.00 : 47319: 48 63 d3 movslq %ebx,%rdx 0.00 : 4731c: be 20 00 00 00 mov $0x20,%esi 0.00 : 47321: 4c 89 e7 mov %r12,%rdi 0.00 : 47324: e8 17 0f 02 00 callq 68240 <_IO_padn> 0.00 : 47329: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 47330: 0f 87 6b f4 ff ff ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 47336: 89 c2 mov %eax,%edx 0.00 : 47338: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4733d: 44 29 e8 sub %r13d,%eax 0.00 : 47340: 39 c2 cmp %eax,%edx 0.00 : 47342: 0f 87 89 f5 ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47348: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 4734c: 31 db xor %ebx,%ebx 0.00 : 4734e: e9 34 f2 ff ff jmpq 46587 <_IO_vfprintf+0x22c7> 0.00 : 47353: 8b 85 04 ff ff ff mov -0xfc(%rbp),%eax 0.00 : 47359: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 4735e: 0f 83 87 fe ff ff jae 471eb <_IO_vfprintf+0x2f2b> 0.00 : 47364: 89 c2 mov %eax,%edx 0.00 : 47366: 83 c0 10 add $0x10,%eax 0.00 : 47369: 48 03 95 10 ff ff ff add -0xf0(%rbp),%rdx 0.00 : 47370: 89 85 04 ff ff ff mov %eax,-0xfc(%rbp) 0.00 : 47376: e9 68 fe ff ff jmpq 471e3 <_IO_vfprintf+0x2f23> 0.00 : 4737b: 44 8b 95 bc f9 ff ff mov -0x644(%rbp),%r10d 0.00 : 47382: 45 85 d2 test %r10d,%r10d 0.00 : 47385: 0f 85 9d 07 00 00 jne 47b28 <_IO_vfprintf+0x3868> 0.00 : 4738b: 41 8b 06 mov (%r14),%eax 0.00 : 4738e: 83 f8 30 cmp $0x30,%eax 0.00 : 47391: 0f 83 36 19 00 00 jae 48ccd <_IO_vfprintf+0x4a0d> 0.00 : 47397: 89 c2 mov %eax,%edx 0.00 : 47399: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4739d: 83 c0 08 add $0x8,%eax 0.00 : 473a0: 41 89 06 mov %eax,(%r14) 0.00 : 473a3: 8b 12 mov (%rdx),%edx 0.00 : 473a5: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 473ac: 00 00 00 0.00 : 473af: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 473b6: 00 00 00 0.00 : 473b9: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 473c0: 00 00 00 0.00 : 473c3: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 473ca: e9 d2 f0 ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 473cf: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 473d3: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 473d7: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 473db: e9 99 f0 ff ff jmpq 46479 <_IO_vfprintf+0x21b9> 0.00 : 473e0: 83 bd 68 fa ff ff 04 cmpl $0x4,-0x598(%rbp) 0.00 : 473e7: b8 05 00 00 00 mov $0x5,%eax 0.00 : 473ec: 4c 8d 3d ee 38 0f 00 lea 0xf38ee(%rip),%r15 # 13ace1 <__PRETTY_FUNCTION__.9779+0x95> 0.00 : 473f3: 0f 4f 85 68 fa ff ff cmovg -0x598(%rbp),%eax 0.00 : 473fa: 89 85 68 fa ff ff mov %eax,-0x598(%rbp) 0.00 : 47400: 80 bd 73 fa ff ff 53 cmpb $0x53,-0x58d(%rbp) 0.00 : 47407: 0f 84 19 db ff ff je 44f26 <_IO_vfprintf+0xc66> 0.00 : 4740d: 83 bd 68 fa ff ff ff cmpl $0xffffffff,-0x598(%rbp) 0.00 : 47414: 0f 84 b7 16 00 00 je 48ad1 <_IO_vfprintf+0x4811> 0.00 : 4741a: 48 8b 05 67 a9 32 00 mov 0x32a967(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 47421: 48 8b bd 58 f8 ff ff mov -0x7a8(%rbp),%rdi 0.00 : 47428: 48 8b 04 07 mov (%rdi,%rax,1),%rax 0.00 : 4742c: 48 8b 00 mov (%rax),%rax 0.00 : 4742f: 83 b8 a8 00 00 00 01 cmpl $0x1,0xa8(%rax) 0.00 : 47436: 0f 84 80 06 00 00 je 47abc <_IO_vfprintf+0x37fc> 0.00 : 4743c: 81 bd 68 fa ff ff 00 cmpl $0x400,-0x598(%rbp) 0.00 : 47443: 04 00 00 0.00 : 47446: 48 89 a5 20 f9 ff ff mov %rsp,-0x6e0(%rbp) 0.00 : 4744d: 0f 86 f6 03 00 00 jbe 47849 <_IO_vfprintf+0x3589> 0.00 : 47453: 48 63 95 68 fa ff ff movslq -0x598(%rbp),%rdx 0.00 : 4745a: 48 c7 85 78 fa ff ff movq $0x400,-0x588(%rbp) 0.00 : 47461: 00 04 00 00 0.00 : 47465: b8 00 10 00 00 mov $0x1000,%eax 0.00 : 4746a: 48 83 c0 1e add $0x1e,%rax 0.00 : 4746e: 4c 89 fb mov %r15,%rbx 0.00 : 47471: 48 8d 8d 78 ff ff ff lea -0x88(%rbp),%rcx 0.00 : 47478: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4747c: 4c 89 bd 78 ff ff ff mov %r15,-0x88(%rbp) 0.00 : 47483: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 4748a: 00 0.00 : 4748b: 48 29 c4 sub %rax,%rsp 0.00 : 4748e: 48 89 8d 40 f8 ff ff mov %rcx,-0x7c0(%rbp) 0.00 : 47495: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 4749a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4749e: 48 01 d3 add %rdx,%rbx 0.00 : 474a1: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 474a5: 48 89 85 90 f8 ff ff mov %rax,-0x770(%rbp) 0.00 : 474ac: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 474b3: 48 0f 42 d8 cmovb %rax,%rbx 0.00 : 474b7: 48 89 95 78 f8 ff ff mov %rdx,-0x788(%rbp) 0.00 : 474be: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 474c5: 48 85 c0 test %rax,%rax 0.00 : 474c8: 0f 84 77 1d 00 00 je 49245 <_IO_vfprintf+0x4f85> 0.00 : 474ce: 48 39 c3 cmp %rax,%rbx 0.00 : 474d1: 77 2d ja 47500 <_IO_vfprintf+0x3240> 0.00 : 474d3: 48 89 c3 mov %rax,%rbx 0.00 : 474d6: 48 63 45 80 movslq -0x80(%rbp),%rax 0.00 : 474da: 4c 29 fb sub %r15,%rbx 0.00 : 474dd: 83 e0 07 and $0x7,%eax 0.00 : 474e0: 48 29 c3 sub %rax,%rbx 0.00 : 474e3: 89 9d 88 fa ff ff mov %ebx,-0x578(%rbp) 0.00 : 474e9: 48 8b a5 20 f9 ff ff mov -0x6e0(%rbp),%rsp 0.00 : 474f0: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 474f7: 00 00 00 0.00 : 474fa: e9 aa da ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 474ff: 90 nop 0.00 : 47500: 4c 8b 85 78 f8 ff ff mov -0x788(%rbp),%r8 0.00 : 47507: 48 8b 8d 78 fa ff ff mov -0x588(%rbp),%rcx 0.00 : 4750e: 48 89 da mov %rbx,%rdx 0.00 : 47511: 48 8b b5 40 f8 ff ff mov -0x7c0(%rbp),%rsi 0.00 : 47518: 48 8b bd 90 f8 ff ff mov -0x770(%rbp),%rdi 0.00 : 4751f: 48 29 c2 sub %rax,%rdx 0.00 : 47522: e8 e9 60 04 00 callq 8d610 0.00 : 47527: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 4752b: 75 91 jne 474be <_IO_vfprintf+0x31fe> 0.00 : 4752d: 41 89 c5 mov %eax,%r13d 0.00 : 47530: 48 8b a5 20 f9 ff ff mov -0x6e0(%rbp),%rsp 0.00 : 47537: e9 9b f3 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4753c: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 47540: 48 8d 41 08 lea 0x8(%rcx),%rax 0.00 : 47544: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47548: e9 48 d2 ff ff jmpq 44795 <_IO_vfprintf+0x4d5> 0.00 : 4754d: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47552: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47557: 0f 83 d5 19 00 00 jae 48f32 <_IO_vfprintf+0x4c72> 0.00 : 4755d: c6 00 2d movb $0x2d,(%rax) 0.00 : 47560: 48 83 c0 01 add $0x1,%rax 0.00 : 47564: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47569: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 47570: 0f 84 5b f3 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 47576: 41 83 c5 01 add $0x1,%r13d 0.00 : 4757a: 83 ad 64 fa ff ff 01 subl $0x1,-0x59c(%rbp) 0.00 : 47581: e9 7d f6 ff ff jmpq 46c03 <_IO_vfprintf+0x2943> 0.00 : 47586: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4758b: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47590: 0f 83 f1 1e 00 00 jae 49487 <_IO_vfprintf+0x51c7> 0.00 : 47596: c6 00 2d movb $0x2d,(%rax) 0.00 : 47599: 48 83 c0 01 add $0x1,%rax 0.00 : 4759d: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 475a2: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 475a9: 0f 84 22 f3 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 475af: 41 83 c5 01 add $0x1,%r13d 0.00 : 475b3: 83 ad b8 fa ff ff 01 subl $0x1,-0x548(%rbp) 0.00 : 475ba: e9 1b f5 ff ff jmpq 46ada <_IO_vfprintf+0x281a> 0.00 : 475bf: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 475c6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 475ca: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 475d1: e9 9e fb ff ff jmpq 47174 <_IO_vfprintf+0x2eb4> 0.00 : 475d6: 83 bd ec fa ff ff 04 cmpl $0x4,-0x514(%rbp) 0.00 : 475dd: b8 05 00 00 00 mov $0x5,%eax 0.00 : 475e2: 4c 8d 3d f8 36 0f 00 lea 0xf36f8(%rip),%r15 # 13ace1 <__PRETTY_FUNCTION__.9779+0x95> 0.00 : 475e9: 0f 4f 85 ec fa ff ff cmovg -0x514(%rbp),%eax 0.00 : 475f0: 89 85 ec fa ff ff mov %eax,-0x514(%rbp) 0.70 : 475f6: 80 bd eb f9 ff ff 53 cmpb $0x53,-0x615(%rbp) 0.70 : 475fd: 0f 84 7f e3 ff ff je 45982 <_IO_vfprintf+0x16c2> 0.00 : 47603: 83 bd ec fa ff ff ff cmpl $0xffffffff,-0x514(%rbp) 0.00 : 4760a: 0f 84 11 1c 00 00 je 49221 <_IO_vfprintf+0x4f61> 0.00 : 47610: 48 8b 05 71 a7 32 00 mov 0x32a771(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 47617: 48 8b 95 58 f8 ff ff mov -0x7a8(%rbp),%rdx 0.00 : 4761e: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 47622: 48 8b 00 mov (%rax),%rax 0.00 : 47625: 83 b8 a8 00 00 00 01 cmpl $0x1,0xa8(%rax) 0.00 : 4762c: 0f 84 6a 01 00 00 je 4779c <_IO_vfprintf+0x34dc> 0.00 : 47632: 81 bd ec fa ff ff 00 cmpl $0x400,-0x514(%rbp) 0.00 : 47639: 04 00 00 0.00 : 4763c: 48 89 a5 e0 f8 ff ff mov %rsp,-0x720(%rbp) 0.00 : 47643: 0f 86 28 06 00 00 jbe 47c71 <_IO_vfprintf+0x39b1> 0.00 : 47649: 48 63 95 ec fa ff ff movslq -0x514(%rbp),%rdx 0.00 : 47650: 48 c7 85 f0 f9 ff ff movq $0x400,-0x610(%rbp) 0.00 : 47657: 00 04 00 00 0.00 : 4765b: b8 00 10 00 00 mov $0x1000,%eax 0.00 : 47660: 48 83 c0 1e add $0x1e,%rax 0.00 : 47664: 4c 89 fb mov %r15,%rbx 0.00 : 47667: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 4766b: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4766f: 4c 89 7d 98 mov %r15,-0x68(%rbp) 0.00 : 47673: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 4767a: 00 0.00 : 4767b: 48 29 c4 sub %rax,%rsp 0.00 : 4767e: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 47685: 48 89 bd 60 f8 ff ff mov %rdi,-0x7a0(%rbp) 0.00 : 4768c: 48 8d 4c 24 0f lea 0xf(%rsp),%rcx 0.00 : 47691: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : 47695: 48 01 d3 add %rdx,%rbx 0.00 : 47698: 48 0f 42 d8 cmovb %rax,%rbx 0.00 : 4769c: 48 8d 45 98 lea -0x68(%rbp),%rax 0.00 : 476a0: 48 89 8d a0 f8 ff ff mov %rcx,-0x760(%rbp) 0.00 : 476a7: 48 89 85 48 f8 ff ff mov %rax,-0x7b8(%rbp) 0.00 : 476ae: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 476b2: 48 85 c0 test %rax,%rax 0.00 : 476b5: 0f 84 bc 1d 00 00 je 49477 <_IO_vfprintf+0x51b7> 0.00 : 476bb: 48 39 c3 cmp %rax,%rbx 0.00 : 476be: 77 30 ja 476f0 <_IO_vfprintf+0x3430> 0.00 : 476c0: 48 89 c3 mov %rax,%rbx 0.00 : 476c3: 48 63 45 b0 movslq -0x50(%rbp),%rax 0.00 : 476c7: 4c 29 fb sub %r15,%rbx 0.00 : 476ca: 83 e0 07 and $0x7,%eax 0.00 : 476cd: 48 29 c3 sub %rax,%rbx 0.00 : 476d0: 89 9d 8c fa ff ff mov %ebx,-0x574(%rbp) 0.00 : 476d6: 48 8b a5 e0 f8 ff ff mov -0x720(%rbp),%rsp 0.00 : 476dd: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 476e4: 00 00 00 0.00 : 476e7: e9 24 e3 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 476ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 476f0: 4c 8b 85 60 f8 ff ff mov -0x7a0(%rbp),%r8 0.00 : 476f7: 48 8b 8d f0 f9 ff ff mov -0x610(%rbp),%rcx 0.00 : 476fe: 48 89 da mov %rbx,%rdx 0.00 : 47701: 48 8b b5 48 f8 ff ff mov -0x7b8(%rbp),%rsi 0.00 : 47708: 48 8b bd a0 f8 ff ff mov -0x760(%rbp),%rdi 0.00 : 4770f: 48 29 c2 sub %rax,%rdx 0.00 : 47712: e8 f9 5e 04 00 callq 8d610 0.00 : 47717: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 4771b: 75 91 jne 476ae <_IO_vfprintf+0x33ee> 0.00 : 4771d: 41 89 c5 mov %eax,%r13d 0.00 : 47720: 48 8b a5 e0 f8 ff ff mov -0x720(%rbp),%rsp 0.00 : 47727: e9 ab f1 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4772c: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47731: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47736: 0f 83 ca 1a 00 00 jae 49206 <_IO_vfprintf+0x4f46> 0.00 : 4773c: c6 00 2d movb $0x2d,(%rax) 0.00 : 4773f: 48 83 c0 01 add $0x1,%rax 0.00 : 47743: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47748: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 4774f: 0f 84 7c f1 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 47755: 41 83 c5 01 add $0x1,%r13d 0.00 : 47759: e9 d0 e8 ff ff jmpq 4602e <_IO_vfprintf+0x1d6e> 0.00 : 4775e: 85 db test %ebx,%ebx 0.00 : 47760: 7e 33 jle 47795 <_IO_vfprintf+0x34d5> 0.00 : 47762: 48 63 d3 movslq %ebx,%rdx 0.00 : 47765: be 20 00 00 00 mov $0x20,%esi 0.00 : 4776a: 4c 89 e7 mov %r12,%rdi 0.00 : 4776d: e8 ce 0a 02 00 callq 68240 <_IO_padn> 0.00 : 47772: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 47779: 0f 87 18 eb ff ff ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 4777f: 89 c2 mov %eax,%edx 0.00 : 47781: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47786: 44 29 e8 sub %r13d,%eax 0.00 : 47789: 39 c2 cmp %eax,%edx 0.00 : 4778b: 0f 87 40 f1 ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47791: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 47795: 31 db xor %ebx,%ebx 0.00 : 47797: e9 68 e8 ff ff jmpq 46004 <_IO_vfprintf+0x1d44> 0.00 : 4779c: 48 63 b5 ec fa ff ff movslq -0x514(%rbp),%rsi 0.00 : 477a3: 4c 89 ff mov %r15,%rdi 0.00 : 477a6: e8 55 94 03 00 callq 80c00 0.00 : 477ab: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 477b2: 00 00 00 0.00 : 477b5: 48 89 c3 mov %rax,%rbx 0.00 : 477b8: 89 85 8c fa ff ff mov %eax,-0x574(%rbp) 0.00 : 477be: e9 4d e2 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 477c3: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 477c8: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 477cd: 0f 83 2a 18 00 00 jae 48ffd <_IO_vfprintf+0x4d3d> 0.00 : 477d3: c6 00 2b movb $0x2b,(%rax) 0.00 : 477d6: 48 83 c0 01 add $0x1,%rax 0.00 : 477da: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 477df: e9 be fd ff ff jmpq 475a2 <_IO_vfprintf+0x32e2> 0.00 : 477e4: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 477e8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 477ec: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 477f0: e9 26 dc ff ff jmpq 4541b <_IO_vfprintf+0x115b> 0.00 : 477f5: 44 8b 9d 58 fa ff ff mov -0x5a8(%rbp),%r11d 0.00 : 477fc: 45 85 db test %r11d,%r11d 0.00 : 477ff: 0f 85 de 02 00 00 jne 47ae3 <_IO_vfprintf+0x3823> 0.00 : 47805: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 4780c: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 47813: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 47818: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4781c: 8b 04 03 mov (%rbx,%rax,1),%eax 0.00 : 4781f: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 47826: 00 00 00 0.00 : 47829: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 47830: 00 00 00 0.00 : 47833: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 4783a: 00 00 00 0.00 : 4783d: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 47844: e9 ca e6 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 47849: 48 63 95 68 fa ff ff movslq -0x598(%rbp),%rdx 0.00 : 47850: 48 89 95 78 fa ff ff mov %rdx,-0x588(%rbp) 0.00 : 47857: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : 4785e: 00 0.00 : 4785f: e9 06 fc ff ff jmpq 4746a <_IO_vfprintf+0x31aa> 0.00 : 47864: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47868: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4786c: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47870: e9 5d e4 ff ff jmpq 45cd2 <_IO_vfprintf+0x1a12> 0.00 : 47875: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 4787c: 48 83 c7 01 add $0x1,%rdi 0.00 : 47880: 0f b6 42 01 movzbl 0x1(%rdx),%eax 0.00 : 47884: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 47887: 83 fa 09 cmp $0x9,%edx 0.00 : 4788a: 77 4a ja 478d6 <_IO_vfprintf+0x3616> 0.00 : 4788c: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 47893: 48 8b b5 48 f9 ff ff mov -0x6b8(%rbp),%rsi 0.00 : 4789a: 0f b6 4b 02 movzbl 0x2(%rbx),%ecx 0.00 : 4789e: 48 83 c6 02 add $0x2,%rsi 0.00 : 478a2: 0f b6 c1 movzbl %cl,%eax 0.00 : 478a5: 83 e8 30 sub $0x30,%eax 0.00 : 478a8: 83 f8 09 cmp $0x9,%eax 0.00 : 478ab: 77 1c ja 478c9 <_IO_vfprintf+0x3609> 0.00 : 478ad: 48 83 c6 01 add $0x1,%rsi 0.00 : 478b1: 0f b6 c1 movzbl %cl,%eax 0.00 : 478b4: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 478b7: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 478ba: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 478be: 0f b6 c1 movzbl %cl,%eax 0.00 : 478c1: 83 e8 30 sub $0x30,%eax 0.00 : 478c4: 83 f8 09 cmp $0x9,%eax 0.00 : 478c7: 76 e4 jbe 478ad <_IO_vfprintf+0x35ed> 0.00 : 478c9: 85 d2 test %edx,%edx 0.00 : 478cb: 74 09 je 478d6 <_IO_vfprintf+0x3616> 0.00 : 478cd: 80 f9 24 cmp $0x24,%cl 0.00 : 478d0: 0f 84 11 e4 ff ff je 45ce7 <_IO_vfprintf+0x1a27> 0.00 : 478d6: 41 8b 06 mov (%r14),%eax 0.00 : 478d9: 83 f8 30 cmp $0x30,%eax 0.00 : 478dc: 0f 83 1e 11 00 00 jae 48a00 <_IO_vfprintf+0x4740> 0.00 : 478e2: 89 c2 mov %eax,%edx 0.00 : 478e4: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 478e8: 83 c0 08 add $0x8,%eax 0.00 : 478eb: 41 89 06 mov %eax,(%r14) 0.00 : 478ee: 8b 12 mov (%rdx),%edx 0.00 : 478f0: 85 d2 test %edx,%edx 0.00 : 478f2: 89 95 ec fa ff ff mov %edx,-0x514(%rbp) 0.00 : 478f8: 0f 88 e2 10 00 00 js 489e0 <_IO_vfprintf+0x4720> 0.00 : 478fe: 8b 95 ec fa ff ff mov -0x514(%rbp),%edx 0.00 : 47904: 48 89 bd 48 f9 ff ff mov %rdi,-0x6b8(%rbp) 0.00 : 4790b: 81 fa c8 03 00 00 cmp $0x3c8,%edx 0.00 : 47911: 0f 97 c0 seta %al 0.00 : 47914: e9 28 dd ff ff jmpq 45641 <_IO_vfprintf+0x1381> 0.00 : 47919: 48 89 df mov %rbx,%rdi 0.00 : 4791c: e8 9f 02 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 47921: 85 c0 test %eax,%eax 0.00 : 47923: 0f 85 4f dd ff ff jne 45678 <_IO_vfprintf+0x13b8> 0.00 : 47929: 48 89 df mov %rbx,%rdi 0.00 : 4792c: e8 1f 6f fd ff callq 1e850 0.00 : 47931: 48 85 c0 test %rax,%rax 0.00 : 47934: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 4793b: 0f 84 90 ef ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 47941: 48 03 9d 58 f9 ff ff add -0x6a8(%rbp),%rbx 0.00 : 47948: 48 89 9d 60 f9 ff ff mov %rbx,-0x6a0(%rbp) 0.00 : 4794f: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 47956: 0f b6 18 movzbl (%rax),%ebx 0.00 : 47959: e9 42 dd ff ff jmpq 456a0 <_IO_vfprintf+0x13e0> 0.00 : 4795e: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47962: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47966: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4796a: e9 3d f0 ff ff jmpq 469ac <_IO_vfprintf+0x26ec> 0.00 : 4796f: 8b 85 c4 f9 ff ff mov -0x63c(%rbp),%eax 0.00 : 47975: 85 c0 test %eax,%eax 0.00 : 47977: 74 42 je 479bb <_IO_vfprintf+0x36fb> 0.00 : 47979: 41 8b 06 mov (%r14),%eax 0.00 : 4797c: 83 f8 30 cmp $0x30,%eax 0.00 : 4797f: 0f 83 38 14 00 00 jae 48dbd <_IO_vfprintf+0x4afd> 0.00 : 47985: 89 c2 mov %eax,%edx 0.00 : 47987: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4798b: 83 c0 08 add $0x8,%eax 0.00 : 4798e: 41 89 06 mov %eax,(%r14) 0.00 : 47991: 48 0f be 12 movsbq (%rdx),%rdx 0.00 : 47995: e9 15 f0 ff ff jmpq 469af <_IO_vfprintf+0x26ef> 0.00 : 4799a: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4799f: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 479a4: 0f 83 24 14 00 00 jae 48dce <_IO_vfprintf+0x4b0e> 0.00 : 479aa: c6 00 20 movb $0x20,(%rax) 0.00 : 479ad: 48 83 c0 01 add $0x1,%rax 0.00 : 479b1: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 479b6: e9 e7 fb ff ff jmpq 475a2 <_IO_vfprintf+0x32e2> 0.00 : 479bb: 44 8b bd bc f9 ff ff mov -0x644(%rbp),%r15d 0.00 : 479c2: 45 85 ff test %r15d,%r15d 0.00 : 479c5: 0f 85 d9 14 00 00 jne 48ea4 <_IO_vfprintf+0x4be4> 0.00 : 479cb: 41 8b 06 mov (%r14),%eax 0.00 : 479ce: 83 f8 30 cmp $0x30,%eax 0.00 : 479d1: 0f 83 bc 14 00 00 jae 48e93 <_IO_vfprintf+0x4bd3> 0.00 : 479d7: 89 c2 mov %eax,%edx 0.00 : 479d9: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 479dd: 83 c0 08 add $0x8,%eax 0.00 : 479e0: 41 89 06 mov %eax,(%r14) 0.00 : 479e3: 48 63 12 movslq (%rdx),%rdx 0.00 : 479e6: e9 c4 ef ff ff jmpq 469af <_IO_vfprintf+0x26ef> 0.00 : 479eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 479f0: 8b 85 60 fa ff ff mov -0x5a0(%rbp),%eax 0.00 : 479f6: 85 c0 test %eax,%eax 0.00 : 479f8: 0f 84 80 10 00 00 je 48a7e <_IO_vfprintf+0x47be> 0.00 : 479fe: 41 8b 06 mov (%r14),%eax 0.00 : 47a01: 83 f8 30 cmp $0x30,%eax 0.00 : 47a04: 0f 83 63 10 00 00 jae 48a6d <_IO_vfprintf+0x47ad> 0.00 : 47a0a: 89 c2 mov %eax,%edx 0.00 : 47a0c: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47a10: 83 c0 08 add $0x8,%eax 0.00 : 47a13: 41 89 06 mov %eax,(%r14) 0.00 : 47a16: 48 8b 12 mov (%rdx),%rdx 0.00 : 47a19: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 47a20: 00 00 00 0.00 : 47a23: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 47a2a: 00 00 00 0.00 : 47a2d: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 47a34: 00 00 00 0.00 : 47a37: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 47a3e: e9 d0 e4 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 47a43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47a48: 8b 85 5c fa ff ff mov -0x5a4(%rbp),%eax 0.00 : 47a4e: 85 c0 test %eax,%eax 0.00 : 47a50: 0f 84 4d 12 00 00 je 48ca3 <_IO_vfprintf+0x49e3> 0.00 : 47a56: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 47a5d: 48 8b 8d 08 fa ff ff mov -0x5f8(%rbp),%rcx 0.00 : 47a64: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 47a69: 48 c1 e0 04 shl $0x4,%rax 0.00 : 47a6d: 48 0f be 14 01 movsbq (%rcx,%rax,1),%rdx 0.00 : 47a72: e9 72 e4 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 47a77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 47a7e: 00 00 0.00 : 47a80: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 47a84: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 47a89: 0f 83 d1 01 00 00 jae 47c60 <_IO_vfprintf+0x39a0> 0.00 : 47a8f: 89 c2 mov %eax,%edx 0.00 : 47a91: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47a95: 83 c0 10 add $0x10,%eax 0.00 : 47a98: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 47a9c: 48 8b 02 mov (%rdx),%rax 0.00 : 47a9f: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 47aa6: e9 fb ed ff ff jmpq 468a6 <_IO_vfprintf+0x25e6> 0.00 : 47aab: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47aaf: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47ab3: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47ab7: e9 a8 f4 ff ff jmpq 46f64 <_IO_vfprintf+0x2ca4> 0.00 : 47abc: 48 63 b5 68 fa ff ff movslq -0x598(%rbp),%rsi 0.00 : 47ac3: 4c 89 ff mov %r15,%rdi 0.00 : 47ac6: e8 35 91 03 00 callq 80c00 0.00 : 47acb: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 47ad2: 00 00 00 0.00 : 47ad5: 48 89 c3 mov %rax,%rbx 0.00 : 47ad8: 89 85 88 fa ff ff mov %eax,-0x578(%rbp) 0.00 : 47ade: e9 c6 d4 ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 47ae3: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 47aea: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 47aef: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 47af6: 48 c1 e0 04 shl $0x4,%rax 0.00 : 47afa: 0f b7 04 02 movzwl (%rdx,%rax,1),%eax 0.00 : 47afe: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 47b05: 00 00 00 0.00 : 47b08: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 47b0f: 00 00 00 0.00 : 47b12: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 47b19: 00 00 00 0.00 : 47b1c: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 47b23: e9 eb e3 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 47b28: 41 8b 06 mov (%r14),%eax 0.00 : 47b2b: 83 f8 30 cmp $0x30,%eax 0.00 : 47b2e: 0f 83 aa 11 00 00 jae 48cde <_IO_vfprintf+0x4a1e> 0.00 : 47b34: 89 c2 mov %eax,%edx 0.00 : 47b36: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47b3a: 83 c0 08 add $0x8,%eax 0.00 : 47b3d: 41 89 06 mov %eax,(%r14) 0.00 : 47b40: 0f b7 12 movzwl (%rdx),%edx 0.00 : 47b43: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 47b4a: 00 00 00 0.00 : 47b4d: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 47b54: 00 00 00 0.00 : 47b57: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 47b5e: 00 00 00 0.00 : 47b61: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 47b68: e9 34 e9 ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 47b6d: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 47b71: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 47b76: 73 5c jae 47bd4 <_IO_vfprintf+0x3914> 0.00 : 47b78: 89 c2 mov %eax,%edx 0.00 : 47b7a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47b7e: 83 c0 10 add $0x10,%eax 0.00 : 47b81: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 47b85: 48 8b 02 mov (%rdx),%rax 0.00 : 47b88: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 47b8f: e9 d5 eb ff ff jmpq 46769 <_IO_vfprintf+0x24a9> 0.00 : 47b94: 44 8b 95 40 fa ff ff mov -0x5c0(%rbp),%r10d 0.00 : 47b9b: 45 85 d2 test %r10d,%r10d 0.00 : 47b9e: 0f 84 9d e3 ff ff je 45f41 <_IO_vfprintf+0x1c81> 0.00 : 47ba4: 4c 8b bd 60 f9 ff ff mov -0x6a0(%rbp),%r15 0.00 : 47bab: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 47bb2: ba 01 00 00 00 mov $0x1,%edx 0.00 : 47bb7: 31 c0 xor %eax,%eax 0.00 : 47bb9: 49 83 ef 01 sub $0x1,%r15 0.00 : 47bbd: c6 43 ff 30 movb $0x30,-0x1(%rbx) 0.00 : 47bc1: c6 85 72 fa ff ff 20 movb $0x20,-0x58e(%rbp) 0.00 : 47bc8: 4c 89 bd d0 fa ff ff mov %r15,-0x530(%rbp) 0.00 : 47bcf: e9 28 f2 ff ff jmpq 46dfc <_IO_vfprintf+0x2b3c> 0.00 : 47bd4: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47bd8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47bdc: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47be0: eb a3 jmp 47b85 <_IO_vfprintf+0x38c5> 0.00 : 47be2: 83 bd 68 fa ff ff ff cmpl $0xffffffff,-0x598(%rbp) 0.00 : 47be9: 74 0d je 47bf8 <_IO_vfprintf+0x3938> 0.00 : 47beb: 83 bd 68 fa ff ff 05 cmpl $0x5,-0x598(%rbp) 0.00 : 47bf2: 0f 8e 5d 18 00 00 jle 49455 <_IO_vfprintf+0x5195> 0.00 : 47bf8: 4c 8d 3d 12 31 0f 00 lea 0xf3112(%rip),%r15 # 13ad11 0.00 : 47bff: bb 06 00 00 00 mov $0x6,%ebx 0.00 : 47c04: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 47c0b: 00 00 00 0.00 : 47c0e: c7 85 88 fa ff ff 06 movl $0x6,-0x578(%rbp) 0.00 : 47c15: 00 00 00 0.00 : 47c18: e9 8c d3 ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 47c1d: 0f 1f 00 nopl (%rax) 0.00 : 47c20: 44 8b 8d a4 f9 ff ff mov -0x65c(%rbp),%r9d 0.00 : 47c27: 45 85 c9 test %r9d,%r9d 0.00 : 47c2a: 0f 84 9f e8 ff ff je 464cf <_IO_vfprintf+0x220f> 0.00 : 47c30: 4c 8b bd 60 f9 ff ff mov -0x6a0(%rbp),%r15 0.00 : 47c37: 48 8b 85 60 f9 ff ff mov -0x6a0(%rbp),%rax 0.00 : 47c3e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 47c43: 49 83 ef 01 sub $0x1,%r15 0.00 : 47c47: c6 40 ff 30 movb $0x30,-0x1(%rax) 0.00 : 47c4b: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 47c52: 4c 89 bd 98 fa ff ff mov %r15,-0x568(%rbp) 0.00 : 47c59: 31 c0 xor %eax,%eax 0.00 : 47c5b: e9 87 f2 ff ff jmpq 46ee7 <_IO_vfprintf+0x2c27> 0.00 : 47c60: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47c64: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47c68: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47c6c: e9 2b fe ff ff jmpq 47a9c <_IO_vfprintf+0x37dc> 0.00 : 47c71: 48 63 95 ec fa ff ff movslq -0x514(%rbp),%rdx 0.00 : 47c78: 48 89 95 f0 f9 ff ff mov %rdx,-0x610(%rbp) 0.00 : 47c7f: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : 47c86: 00 0.00 : 47c87: e9 d4 f9 ff ff jmpq 47660 <_IO_vfprintf+0x33a0> 0.00 : 47c8c: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47c91: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47c96: 0f 83 e7 18 00 00 jae 49583 <_IO_vfprintf+0x52c3> 0.00 : 47c9c: c6 00 20 movb $0x20,(%rax) 0.00 : 47c9f: 48 83 c0 01 add $0x1,%rax 0.00 : 47ca3: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47ca8: e9 9b fa ff ff jmpq 47748 <_IO_vfprintf+0x3488> 0.00 : 47cad: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47cb2: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47cb7: 0f 83 ce 0b 00 00 jae 4888b <_IO_vfprintf+0x45cb> 0.00 : 47cbd: c6 00 2b movb $0x2b,(%rax) 0.00 : 47cc0: 48 83 c0 01 add $0x1,%rax 0.00 : 47cc4: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47cc9: e9 7a fa ff ff jmpq 47748 <_IO_vfprintf+0x3488> 0.00 : 47cce: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47cd3: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47cd8: 0f 83 1b 0c 00 00 jae 488f9 <_IO_vfprintf+0x4639> 0.00 : 47cde: c6 00 20 movb $0x20,(%rax) 0.00 : 47ce1: 48 83 c0 01 add $0x1,%rax 0.00 : 47ce5: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47cea: e9 7a f8 ff ff jmpq 47569 <_IO_vfprintf+0x32a9> 0.00 : 47cef: 45 85 ed test %r13d,%r13d 0.00 : 47cf2: 0f 88 24 08 00 00 js 4851c <_IO_vfprintf+0x425c> 0.00 : 47cf8: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 47cff: 00 0.00 : 47d00: 48 89 da mov %rbx,%rdx 0.00 : 47d03: 4c 89 fe mov %r15,%rsi 0.00 : 47d06: 4c 89 e7 mov %r12,%rdi 0.00 : 47d09: ff 50 38 callq *0x38(%rax) 0.00 : 47d0c: 48 39 d8 cmp %rbx,%rax 0.00 : 47d0f: 0f 85 bc eb ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 47d15: 49 63 d5 movslq %r13d,%rdx 0.00 : 47d18: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47d1d: 48 29 d0 sub %rdx,%rax 0.00 : 47d20: 48 39 c3 cmp %rax,%rbx 0.00 : 47d23: 0f 87 a8 eb ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47d29: 44 03 ad 8c fa ff ff add -0x574(%rbp),%r13d 0.00 : 47d30: e9 5b cb ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 47d35: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47d39: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47d3d: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47d41: e9 35 db ff ff jmpq 4587b <_IO_vfprintf+0x15bb> 0.00 : 47d46: 8b 85 5c fa ff ff mov -0x5a4(%rbp),%eax 0.00 : 47d4c: 85 c0 test %eax,%eax 0.00 : 47d4e: 0f 84 4e 17 00 00 je 494a2 <_IO_vfprintf+0x51e2> 0.00 : 47d54: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 47d5b: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 47d60: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 47d67: 48 c1 e0 04 shl $0x4,%rax 0.00 : 47d6b: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 47d6f: 44 88 28 mov %r13b,(%rax) 0.00 : 47d72: e9 49 cd ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 47d77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 47d7e: 00 00 0.00 : 47d80: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47d85: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47d8a: 0f 83 63 07 00 00 jae 484f3 <_IO_vfprintf+0x4233> 0.00 : 47d90: c6 00 20 movb $0x20,(%rax) 0.00 : 47d93: 48 83 c0 01 add $0x1,%rax 0.00 : 47d97: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47d9c: e9 5e f5 ff ff jmpq 472ff <_IO_vfprintf+0x303f> 0.00 : 47da1: 45 85 ed test %r13d,%r13d 0.00 : 47da4: 0f 88 51 06 00 00 js 483fb <_IO_vfprintf+0x413b> 0.00 : 47daa: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 47db1: 00 0.00 : 47db2: 48 89 da mov %rbx,%rdx 0.00 : 47db5: 4c 89 fe mov %r15,%rsi 0.00 : 47db8: 4c 89 e7 mov %r12,%rdi 0.00 : 47dbb: ff 50 38 callq *0x38(%rax) 0.00 : 47dbe: 48 39 d8 cmp %rbx,%rax 0.00 : 47dc1: 0f 85 0a eb ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 47dc7: 49 63 d5 movslq %r13d,%rdx 0.00 : 47dca: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47dcf: 48 29 d0 sub %rdx,%rax 0.00 : 47dd2: 48 39 c3 cmp %rax,%rbx 0.00 : 47dd5: 0f 87 f6 ea ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47ddb: 44 03 ad 88 fa ff ff add -0x578(%rbp),%r13d 0.00 : 47de2: e9 d9 cc ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 47de7: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 47dee: 8b 51 08 mov 0x8(%rcx),%edx 0.00 : 47df1: 85 d2 test %edx,%edx 0.00 : 47df3: 0f 85 5f 15 00 00 jne 49358 <_IO_vfprintf+0x5098> 0.00 : 47df9: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 47e00: 0f 87 33 15 00 00 ja 49339 <_IO_vfprintf+0x5079> 0.00 : 47e06: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47e0b: 44 29 e8 sub %r13d,%eax 0.00 : 47e0e: 39 c3 cmp %eax,%ebx 0.00 : 47e10: 0f 87 bb ea ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47e16: 46 8d 2c 2b lea (%rbx,%r13,1),%r13d 0.00 : 47e1a: e9 a1 cc ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 47e1f: 0f be 85 73 fa ff ff movsbl -0x58d(%rbp),%eax 0.00 : 47e26: 8b 8d 68 fa ff ff mov -0x598(%rbp),%ecx 0.00 : 47e2c: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 47e33: 00 00 00 00 0.00 : 47e37: 0f b6 95 58 fa ff ff movzbl -0x5a8(%rbp),%edx 0.00 : 47e3e: 44 8b 95 54 fa ff ff mov -0x5ac(%rbp),%r10d 0.00 : 47e45: 8b 9d 64 fa ff ff mov -0x59c(%rbp),%ebx 0.00 : 47e4b: 89 8d 20 ff ff ff mov %ecx,-0xe0(%rbp) 0.00 : 47e51: 0f b6 8d 54 fa ff ff movzbl -0x5ac(%rbp),%ecx 0.00 : 47e58: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 47e5e: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 47e65: 83 e2 01 and $0x1,%edx 0.00 : 47e68: 89 9d 24 ff ff ff mov %ebx,-0xdc(%rbp) 0.00 : 47e6e: 01 d2 add %edx,%edx 0.00 : 47e70: 83 e1 01 and $0x1,%ecx 0.00 : 47e73: 83 e0 fc and $0xfffffffc,%eax 0.00 : 47e76: 09 c8 or %ecx,%eax 0.00 : 47e78: 0f b6 8d 60 fa ff ff movzbl -0x5a0(%rbp),%ecx 0.00 : 47e7f: 09 d0 or %edx,%eax 0.00 : 47e81: 0f b6 95 40 fa ff ff movzbl -0x5c0(%rbp),%edx 0.00 : 47e88: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 47e8b: 83 e1 01 and $0x1,%ecx 0.00 : 47e8e: c1 e1 02 shl $0x2,%ecx 0.00 : 47e91: 83 e2 01 and $0x1,%edx 0.00 : 47e94: c1 e2 03 shl $0x3,%edx 0.00 : 47e97: 09 c8 or %ecx,%eax 0.00 : 47e99: 0f b6 8d 44 fa ff ff movzbl -0x5bc(%rbp),%ecx 0.00 : 47ea0: 09 d0 or %edx,%eax 0.00 : 47ea2: 0f b6 95 48 fa ff ff movzbl -0x5b8(%rbp),%edx 0.00 : 47ea9: 83 e0 cf and $0xffffffcf,%eax 0.00 : 47eac: 83 e1 01 and $0x1,%ecx 0.00 : 47eaf: c1 e1 04 shl $0x4,%ecx 0.00 : 47eb2: 83 e2 01 and $0x1,%edx 0.00 : 47eb5: c1 e2 05 shl $0x5,%edx 0.00 : 47eb8: 09 c8 or %ecx,%eax 0.00 : 47eba: 0f b6 8d 50 fa ff ff movzbl -0x5b0(%rbp),%ecx 0.00 : 47ec1: 09 d0 or %edx,%eax 0.00 : 47ec3: 0f b6 95 4c fa ff ff movzbl -0x5b4(%rbp),%edx 0.00 : 47eca: 83 e0 3f and $0x3f,%eax 0.00 : 47ecd: c1 e1 07 shl $0x7,%ecx 0.00 : 47ed0: 83 e2 01 and $0x1,%edx 0.00 : 47ed3: c1 e2 06 shl $0x6,%edx 0.00 : 47ed6: 09 d0 or %edx,%eax 0.00 : 47ed8: 09 c8 or %ecx,%eax 0.00 : 47eda: 45 85 d2 test %r10d,%r10d 0.00 : 47edd: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 47ee3: 0f be 85 72 fa ff ff movsbl -0x58e(%rbp),%eax 0.00 : 47eea: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 47ef0: 0f 84 7b 08 00 00 je 48771 <_IO_vfprintf+0x44b1> 0.00 : 47ef6: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 47efa: 48 83 c0 0f add $0xf,%rax 0.00 : 47efe: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 47f02: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 47f06: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 47f0a: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 47f0d: 48 8b 00 mov (%rax),%rax 0.00 : 47f10: 89 95 48 ff ff ff mov %edx,-0xb8(%rbp) 0.00 : 47f16: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 47f1d: 48 8d 85 40 ff ff ff lea -0xc0(%rbp),%rax 0.00 : 47f24: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 47f2b: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 47f32: 4c 89 e7 mov %r12,%rdi 0.00 : 47f35: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 47f3c: e8 7f 47 00 00 callq 4c6c0 <__printf_fphex> 0.00 : 47f41: 89 c2 mov %eax,%edx 0.00 : 47f43: e9 3a e3 ff ff jmpq 46282 <_IO_vfprintf+0x1fc2> 0.00 : 47f48: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47f4d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47f52: 0f 83 e7 15 00 00 jae 4953f <_IO_vfprintf+0x527f> 0.00 : 47f58: c6 00 2d movb $0x2d,(%rax) 0.00 : 47f5b: 48 83 c0 01 add $0x1,%rax 0.00 : 47f5f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47f64: 83 c3 01 add $0x1,%ebx 0.00 : 47f67: e9 12 d2 ff ff jmpq 4517e <_IO_vfprintf+0xebe> 0.00 : 47f6c: 85 c0 test %eax,%eax 0.00 : 47f6e: 0f 89 df f1 ff ff jns 47153 <_IO_vfprintf+0x2e93> 0.00 : 47f74: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 47f77: 0f 85 39 f2 ff ff jne 471b6 <_IO_vfprintf+0x2ef6> 0.00 : 47f7d: 41 f6 44 24 74 04 testb $0x4,0x74(%r12) 0.00 : 47f83: 0f 85 f6 08 00 00 jne 4887f <_IO_vfprintf+0x45bf> 0.00 : 47f89: 48 8d 0d 80 a9 0f 00 lea 0xfa980(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 47f90: 48 8d 35 3f 2d 0f 00 lea 0xf2d3f(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 47f97: 48 8d 3d 64 2d 0f 00 lea 0xf2d64(%rip),%rdi # 13ad02 <__PRETTY_FUNCTION__.9779+0xb6> 0.00 : 47f9e: ba 30 07 00 00 mov $0x730,%edx 0.00 : 47fa3: e8 78 39 fe ff callq 2b920 <__assert_fail> 0.00 : 47fa8: 83 bd ec fa ff ff ff cmpl $0xffffffff,-0x514(%rbp) 0.00 : 47faf: 74 0d je 47fbe <_IO_vfprintf+0x3cfe> 0.00 : 47fb1: 83 bd ec fa ff ff 05 cmpl $0x5,-0x514(%rbp) 0.00 : 47fb8: 0f 8e f6 11 00 00 jle 491b4 <_IO_vfprintf+0x4ef4> 0.00 : 47fbe: 4c 8d 3d 4c 2d 0f 00 lea 0xf2d4c(%rip),%r15 # 13ad11 0.00 : 47fc5: bb 06 00 00 00 mov $0x6,%ebx 0.00 : 47fca: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 47fd1: 00 00 00 0.00 : 47fd4: c7 85 8c fa ff ff 06 movl $0x6,-0x574(%rbp) 0.00 : 47fdb: 00 00 00 0.00 : 47fde: e9 2d da ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 47fe3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47fe8: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47fed: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47ff2: 0f 83 aa 13 00 00 jae 493a2 <_IO_vfprintf+0x50e2> 0.00 : 47ff8: c6 00 2b movb $0x2b,(%rax) 0.00 : 47ffb: 48 83 c0 01 add $0x1,%rax 0.00 : 47fff: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48004: e9 60 f5 ff ff jmpq 47569 <_IO_vfprintf+0x32a9> 0.00 : 48009: 0f be 85 73 fa ff ff movsbl -0x58d(%rbp),%eax 0.00 : 48010: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 48017: 00 00 00 00 0.00 : 4801b: 0f b6 8d 54 fa ff ff movzbl -0x5ac(%rbp),%ecx 0.00 : 48022: 0f b6 95 58 fa ff ff movzbl -0x5a8(%rbp),%edx 0.00 : 48029: 44 8b 9d 54 fa ff ff mov -0x5ac(%rbp),%r11d 0.00 : 48030: 8b 9d 68 fa ff ff mov -0x598(%rbp),%ebx 0.00 : 48036: 8b bd 64 fa ff ff mov -0x59c(%rbp),%edi 0.00 : 4803c: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 48042: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 48049: 83 e1 01 and $0x1,%ecx 0.00 : 4804c: 83 e2 01 and $0x1,%edx 0.00 : 4804f: 89 9d 20 ff ff ff mov %ebx,-0xe0(%rbp) 0.00 : 48055: 01 d2 add %edx,%edx 0.00 : 48057: 89 bd 24 ff ff ff mov %edi,-0xdc(%rbp) 0.00 : 4805d: 83 e0 fc and $0xfffffffc,%eax 0.00 : 48060: 09 c8 or %ecx,%eax 0.00 : 48062: 0f b6 8d 60 fa ff ff movzbl -0x5a0(%rbp),%ecx 0.00 : 48069: 09 d0 or %edx,%eax 0.00 : 4806b: 0f b6 95 40 fa ff ff movzbl -0x5c0(%rbp),%edx 0.00 : 48072: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 48075: 83 e1 01 and $0x1,%ecx 0.00 : 48078: c1 e1 02 shl $0x2,%ecx 0.00 : 4807b: 83 e2 01 and $0x1,%edx 0.00 : 4807e: c1 e2 03 shl $0x3,%edx 0.00 : 48081: 09 c8 or %ecx,%eax 0.00 : 48083: 0f b6 8d 44 fa ff ff movzbl -0x5bc(%rbp),%ecx 0.00 : 4808a: 09 d0 or %edx,%eax 0.00 : 4808c: 0f b6 95 48 fa ff ff movzbl -0x5b8(%rbp),%edx 0.00 : 48093: 83 e0 cf and $0xffffffcf,%eax 0.00 : 48096: 83 e1 01 and $0x1,%ecx 0.00 : 48099: c1 e1 04 shl $0x4,%ecx 0.00 : 4809c: 83 e2 01 and $0x1,%edx 0.00 : 4809f: c1 e2 05 shl $0x5,%edx 0.00 : 480a2: 09 c8 or %ecx,%eax 0.00 : 480a4: 0f b6 8d 50 fa ff ff movzbl -0x5b0(%rbp),%ecx 0.00 : 480ab: 09 d0 or %edx,%eax 0.00 : 480ad: 0f b6 95 4c fa ff ff movzbl -0x5b4(%rbp),%edx 0.00 : 480b4: 83 e0 3f and $0x3f,%eax 0.00 : 480b7: c1 e1 07 shl $0x7,%ecx 0.00 : 480ba: 83 e2 01 and $0x1,%edx 0.00 : 480bd: c1 e2 06 shl $0x6,%edx 0.00 : 480c0: 09 d0 or %edx,%eax 0.00 : 480c2: 0f b6 95 6c fa ff ff movzbl -0x594(%rbp),%edx 0.00 : 480c9: 09 c8 or %ecx,%eax 0.00 : 480cb: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 480d1: 0f b6 85 2d ff ff ff movzbl -0xd3(%rbp),%eax 0.00 : 480d8: 83 e2 01 and $0x1,%edx 0.00 : 480db: c1 e2 03 shl $0x3,%edx 0.00 : 480de: 83 e0 f7 and $0xfffffff7,%eax 0.00 : 480e1: 09 d0 or %edx,%eax 0.00 : 480e3: 45 85 db test %r11d,%r11d 0.00 : 480e6: 88 85 2d ff ff ff mov %al,-0xd3(%rbp) 0.00 : 480ec: 0f be 85 72 fa ff ff movsbl -0x58e(%rbp),%eax 0.00 : 480f3: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 480f9: 0f 84 be 06 00 00 je 487bd <_IO_vfprintf+0x44fd> 0.00 : 480ff: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 48103: 48 83 c0 0f add $0xf,%rax 0.00 : 48107: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4810b: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 4810f: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 48113: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 48116: 48 8b 00 mov (%rax),%rax 0.00 : 48119: 89 95 48 ff ff ff mov %edx,-0xb8(%rbp) 0.00 : 4811f: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 48126: 48 8d 85 40 ff ff ff lea -0xc0(%rbp),%rax 0.00 : 4812d: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 48134: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 4813b: 4c 89 e7 mov %r12,%rdi 0.00 : 4813e: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 48145: e8 66 1c 00 00 callq 49db0 <__printf_fp> 0.00 : 4814a: 89 c2 mov %eax,%edx 0.00 : 4814c: e9 31 e1 ff ff jmpq 46282 <_IO_vfprintf+0x1fc2> 0.00 : 48151: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48156: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4815b: 0f 83 6e 13 00 00 jae 494cf <_IO_vfprintf+0x520f> 0.00 : 48161: c6 00 2b movb $0x2b,(%rax) 0.00 : 48164: 48 83 c0 01 add $0x1,%rax 0.00 : 48168: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4816d: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 48174: 83 c3 01 add $0x1,%ebx 0.00 : 48177: 0f b6 41 0c movzbl 0xc(%rcx),%eax 0.00 : 4817b: e9 f6 cf ff ff jmpq 45176 <_IO_vfprintf+0xeb6> 0.00 : 48180: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48184: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48188: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4818c: e9 7c e7 ff ff jmpq 4690d <_IO_vfprintf+0x264d> 0.00 : 48191: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48195: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48199: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4819d: e9 97 d7 ff ff jmpq 45939 <_IO_vfprintf+0x1679> 0.00 : 481a2: 8b bd c4 f9 ff ff mov -0x63c(%rbp),%edi 0.00 : 481a8: 85 ff test %edi,%edi 0.00 : 481aa: 0f 84 83 00 00 00 je 48233 <_IO_vfprintf+0x3f73> 0.00 : 481b0: 41 8b 06 mov (%r14),%eax 0.00 : 481b3: 83 f8 30 cmp $0x30,%eax 0.00 : 481b6: 0f 83 61 06 00 00 jae 4881d <_IO_vfprintf+0x455d> 0.00 : 481bc: 89 c2 mov %eax,%edx 0.00 : 481be: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 481c2: 83 c0 08 add $0x8,%eax 0.00 : 481c5: 41 89 06 mov %eax,(%r14) 0.00 : 481c8: 48 8b 02 mov (%rdx),%rax 0.00 : 481cb: 44 88 28 mov %r13b,(%rax) 0.00 : 481ce: e9 bd c6 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 481d3: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 481d8: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 481dd: 0f 83 01 06 00 00 jae 487e4 <_IO_vfprintf+0x4524> 0.00 : 481e3: c6 00 23 movb $0x23,(%rax) 0.00 : 481e6: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 481ed: 48 83 c0 01 add $0x1,%rax 0.00 : 481f1: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 481f6: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 481fb: 0f b6 47 0c movzbl 0xc(%rdi),%eax 0.00 : 481ff: e9 55 cf ff ff jmpq 45159 <_IO_vfprintf+0xe99> 0.00 : 48204: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48209: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4820e: 0f 83 1a 06 00 00 jae 4882e <_IO_vfprintf+0x456e> 0.00 : 48214: c6 00 27 movb $0x27,(%rax) 0.00 : 48217: 48 83 c0 01 add $0x1,%rax 0.00 : 4821b: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48220: 48 8b 95 d8 fa ff ff mov -0x528(%rbp),%rdx 0.00 : 48227: 83 c3 01 add $0x1,%ebx 0.00 : 4822a: 0f b6 42 0c movzbl 0xc(%rdx),%eax 0.00 : 4822e: e9 2e cf ff ff jmpq 45161 <_IO_vfprintf+0xea1> 0.00 : 48233: 8b b5 bc f9 ff ff mov -0x644(%rbp),%esi 0.00 : 48239: 85 f6 test %esi,%esi 0.00 : 4823b: 0f 85 de 12 00 00 jne 4951f <_IO_vfprintf+0x525f> 0.00 : 48241: 41 8b 06 mov (%r14),%eax 0.00 : 48244: 83 f8 30 cmp $0x30,%eax 0.00 : 48247: 0f 83 c1 12 00 00 jae 4950e <_IO_vfprintf+0x524e> 0.00 : 4824d: 89 c2 mov %eax,%edx 0.00 : 4824f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48253: 83 c0 08 add $0x8,%eax 0.00 : 48256: 41 89 06 mov %eax,(%r14) 0.00 : 48259: 48 8b 02 mov (%rdx),%rax 0.00 : 4825c: 44 89 28 mov %r13d,(%rax) 0.00 : 4825f: e9 2c c6 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 48264: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 48268: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4826d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 48272: 0f 83 e2 12 00 00 jae 4955a <_IO_vfprintf+0x529a> 0.00 : 48278: c6 00 2b movb $0x2b,(%rax) 0.00 : 4827b: 48 83 c0 01 add $0x1,%rax 0.00 : 4827f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48284: e9 76 f0 ff ff jmpq 472ff <_IO_vfprintf+0x303f> 0.00 : 48289: 48 8b 15 68 ab 32 00 mov 0x32ab68(%rip),%rdx # 372df8 <__printf_va_arg_table> 0.00 : 48290: 48 85 d2 test %rdx,%rdx 0.00 : 48293: 0f 85 12 03 00 00 jne 485ab <_IO_vfprintf+0x42eb> 0.00 : 48299: d9 ee fldz 0.00 : 4829b: db 3b fstpt (%rbx) 0.00 : 4829d: e9 d6 ee ff ff jmpq 47178 <_IO_vfprintf+0x2eb8> 0.00 : 482a2: 48 8d 0d 67 a6 0f 00 lea 0xfa667(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 482a9: 48 8d 35 26 2a 0f 00 lea 0xf2a26(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 482b0: 48 8d 3d d9 65 0f 00 lea 0xf65d9(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 482b7: ba b6 07 00 00 mov $0x7b6,%edx 0.00 : 482bc: e8 5f 36 fe ff callq 2b920 <__assert_fail> 0.00 : 482c1: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 482c6: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 482cb: 0f 83 0e 01 00 00 jae 483df <_IO_vfprintf+0x411f> 0.00 : 482d1: c6 00 30 movb $0x30,(%rax) 0.00 : 482d4: 48 83 c0 01 add $0x1,%rax 0.00 : 482d8: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 482dd: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 482e4: 0f 84 e7 e5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 482ea: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 482ef: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 482f4: 0f 83 c8 00 00 00 jae 483c2 <_IO_vfprintf+0x4102> 0.00 : 482fa: 0f b6 95 73 fa ff ff movzbl -0x58d(%rbp),%edx 0.00 : 48301: 88 10 mov %dl,(%rax) 0.00 : 48303: 48 83 c0 01 add $0x1,%rax 0.00 : 48307: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4830c: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 48313: 0f 84 b8 e5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48319: 41 83 c5 02 add $0x2,%r13d 0.00 : 4831d: 83 ad 64 fa ff ff 02 subl $0x2,-0x59c(%rbp) 0.00 : 48324: e9 fb e8 ff ff jmpq 46c24 <_IO_vfprintf+0x2964> 0.00 : 48329: 48 8d 5d 98 lea -0x68(%rbp),%rbx 0.00 : 4832d: 48 8b 8d 68 f8 ff ff mov -0x798(%rbp),%rcx 0.00 : 48334: 31 d2 xor %edx,%edx 0.00 : 48336: 31 ff xor %edi,%edi 0.00 : 48338: 48 89 de mov %rbx,%rsi 0.00 : 4833b: 48 89 9d 70 f8 ff ff mov %rbx,-0x790(%rbp) 0.00 : 48342: e8 29 4f 04 00 callq 8d270 0.00 : 48347: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 4834b: 48 89 c3 mov %rax,%rbx 0.00 : 4834e: 0f 84 7d e5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48354: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 48357: 85 c0 test %eax,%eax 0.00 : 48359: 0f 85 ee 05 00 00 jne 4894d <_IO_vfprintf+0x468d> 0.00 : 4835f: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 48363: 4c 89 7d 98 mov %r15,-0x68(%rbp) 0.00 : 48367: 48 81 ff 00 10 00 00 cmp $0x1000,%rdi 0.00 : 4836e: 48 89 bd e8 f8 ff ff mov %rdi,-0x718(%rbp) 0.00 : 48375: 0f 87 9a 05 00 00 ja 48915 <_IO_vfprintf+0x4655> 0.00 : 4837b: 48 8b 85 e8 f8 ff ff mov -0x718(%rbp),%rax 0.00 : 48382: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 48389: 00 00 00 0.00 : 4838c: 48 83 c0 1e add $0x1e,%rax 0.00 : 48390: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 48394: 48 29 c4 sub %rax,%rsp 0.00 : 48397: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 4839c: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 483a0: 48 8b 8d 68 f8 ff ff mov -0x798(%rbp),%rcx 0.00 : 483a7: 48 8b 95 e8 f8 ff ff mov -0x718(%rbp),%rdx 0.00 : 483ae: 4c 89 ff mov %r15,%rdi 0.00 : 483b1: 48 8b b5 70 f8 ff ff mov -0x790(%rbp),%rsi 0.00 : 483b8: e8 b3 4e 04 00 callq 8d270 0.00 : 483bd: e9 48 d6 ff ff jmpq 45a0a <_IO_vfprintf+0x174a> 0.00 : 483c2: 0f b6 b5 73 fa ff ff movzbl -0x58d(%rbp),%esi 0.00 : 483c9: 4c 89 e7 mov %r12,%rdi 0.00 : 483cc: e8 cf b9 02 00 callq 73da0 <__overflow> 0.00 : 483d1: 83 c0 01 add $0x1,%eax 0.00 : 483d4: 0f 85 32 ff ff ff jne 4830c <_IO_vfprintf+0x404c> 0.00 : 483da: e9 f2 e4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 483df: be 30 00 00 00 mov $0x30,%esi 0.00 : 483e4: 4c 89 e7 mov %r12,%rdi 0.00 : 483e7: e8 b4 b9 02 00 callq 73da0 <__overflow> 0.00 : 483ec: 83 c0 01 add $0x1,%eax 0.00 : 483ef: 90 nop 0.00 : 483f0: 0f 85 e7 fe ff ff jne 482dd <_IO_vfprintf+0x401d> 0.00 : 483f6: e9 d6 e4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 483fb: 48 8d 0d 0e a5 0f 00 lea 0xfa50e(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48402: 48 8d 35 cd 28 0f 00 lea 0xf28cd(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48409: 48 8d 3d b0 64 0f 00 lea 0xf64b0(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 48410: ba b6 07 00 00 mov $0x7b6,%edx 0.00 : 48415: e8 06 35 fe ff callq 2b920 <__assert_fail> 0.00 : 4841a: f7 d8 neg %eax 0.00 : 4841c: 83 ca 20 or $0x20,%edx 0.00 : 4841f: 41 89 47 04 mov %eax,0x4(%r15) 0.00 : 48423: 41 88 57 0c mov %dl,0xc(%r15) 0.00 : 48427: c7 85 48 fa ff ff 01 movl $0x1,-0x5b8(%rbp) 0.00 : 4842e: 00 00 00 0.00 : 48431: e9 0a c8 ff ff jmpq 44c40 <_IO_vfprintf+0x980> 0.00 : 48436: 48 8d 0d d3 a4 0f 00 lea 0xfa4d3(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4843d: 48 8d 35 92 28 0f 00 lea 0xf2892(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48444: 48 8d 3d 75 64 0f 00 lea 0xf6475(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 4844b: ba db 07 00 00 mov $0x7db,%edx 0.00 : 48450: e8 cb 34 fe ff callq 2b920 <__assert_fail> 0.00 : 48455: 48 89 df mov %rbx,%rdi 0.00 : 48458: e8 63 f7 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 4845d: 85 c0 test %eax,%eax 0.00 : 4845f: 0f 85 64 c8 ff ff jne 44cc9 <_IO_vfprintf+0xa09> 0.00 : 48465: 48 89 df mov %rbx,%rdi 0.00 : 48468: e8 e3 63 fd ff callq 1e850 0.00 : 4846d: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 48474: 48 63 85 04 f9 ff ff movslq -0x6fc(%rbp),%rax 0.00 : 4847b: 48 8b 95 58 f9 ff ff mov -0x6a8(%rbp),%rdx 0.00 : 48482: 48 8d 44 02 20 lea 0x20(%rdx,%rax,1),%rax 0.00 : 48487: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 4848e: e9 68 c8 ff ff jmpq 44cfb <_IO_vfprintf+0xa3b> 0.00 : 48493: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48499: 48 8b a5 18 f9 ff ff mov -0x6e8(%rbp),%rsp 0.00 : 484a0: e9 32 e4 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 484a5: 41 8b 06 mov (%r14),%eax 0.00 : 484a8: 83 f8 30 cmp $0x30,%eax 0.00 : 484ab: 73 61 jae 4850e <_IO_vfprintf+0x424e> 0.00 : 484ad: 89 c1 mov %eax,%ecx 0.00 : 484af: 49 03 4e 10 add 0x10(%r14),%rcx 0.00 : 484b3: 83 c0 08 add $0x8,%eax 0.00 : 484b6: 41 89 06 mov %eax,(%r14) 0.00 : 484b9: 8b 31 mov (%rcx),%esi 0.00 : 484bb: e9 07 c5 ff ff jmpq 449c7 <_IO_vfprintf+0x707> 0.00 : 484c0: 48 89 df mov %rbx,%rdi 0.00 : 484c3: e8 f8 f6 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 484c8: 85 c0 test %eax,%eax 0.00 : 484ca: 0f 85 8f ca ff ff jne 44f5f <_IO_vfprintf+0xc9f> 0.00 : 484d0: 48 89 df mov %rbx,%rdi 0.00 : 484d3: e8 78 63 fd ff callq 1e850 0.00 : 484d8: 48 85 c0 test %rax,%rax 0.00 : 484db: 49 89 c7 mov %rax,%r15 0.00 : 484de: 0f 84 ed e3 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 484e4: c7 85 74 fa ff ff 01 movl $0x1,-0x58c(%rbp) 0.00 : 484eb: 00 00 00 0.00 : 484ee: e9 8a ca ff ff jmpq 44f7d <_IO_vfprintf+0xcbd> 0.00 : 484f3: be 20 00 00 00 mov $0x20,%esi 0.00 : 484f8: 4c 89 e7 mov %r12,%rdi 0.00 : 484fb: e8 a0 b8 02 00 callq 73da0 <__overflow> 0.00 : 48500: 83 c0 01 add $0x1,%eax 0.00 : 48503: 0f 85 f6 ed ff ff jne 472ff <_IO_vfprintf+0x303f> 0.00 : 48509: e9 c3 e3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4850e: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 48512: 48 8d 41 08 lea 0x8(%rcx),%rax 0.00 : 48516: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4851a: eb 9d jmp 484b9 <_IO_vfprintf+0x41f9> 0.00 : 4851c: 48 8d 0d ed a3 0f 00 lea 0xfa3ed(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48523: 48 8d 35 ac 27 0f 00 lea 0xf27ac(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 4852a: 48 8d 3d 8f 63 0f 00 lea 0xf638f(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 48531: ba 42 06 00 00 mov $0x642,%edx 0.00 : 48536: e8 e5 33 fe ff callq 2b920 <__assert_fail> 0.00 : 4853b: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48541: 48 8b a5 d8 f8 ff ff mov -0x728(%rbp),%rsp 0.00 : 48548: e9 8a e3 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4854d: 4c 89 e7 mov %r12,%rdi 0.00 : 48550: e8 4b b8 02 00 callq 73da0 <__overflow> 0.00 : 48555: 83 c0 01 add $0x1,%eax 0.00 : 48558: 0f 85 0f c9 ff ff jne 44e6d <_IO_vfprintf+0xbad> 0.00 : 4855e: 66 90 xchg %ax,%ax 0.00 : 48560: e9 6c e3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48565: 41 8b 06 mov (%r14),%eax 0.00 : 48568: 83 f8 30 cmp $0x30,%eax 0.00 : 4856b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 48570: 0f 83 4d 01 00 00 jae 486c3 <_IO_vfprintf+0x4403> 0.00 : 48576: 89 c2 mov %eax,%edx 0.00 : 48578: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4857c: 83 c0 08 add $0x8,%eax 0.00 : 4857f: 41 89 06 mov %eax,(%r14) 0.00 : 48582: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48587: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4858c: 0f b6 32 movzbl (%rdx),%esi 0.00 : 4858f: 0f 82 cc c8 ff ff jb 44e61 <_IO_vfprintf+0xba1> 0.00 : 48595: 4c 89 e7 mov %r12,%rdi 0.00 : 48598: e8 03 b8 02 00 callq 73da0 <__overflow> 0.00 : 4859d: 83 c0 01 add $0x1,%eax 0.00 : 485a0: 0f 85 c7 c8 ff ff jne 44e6d <_IO_vfprintf+0xbad> 0.00 : 485a6: e9 26 e3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 485ab: 48 98 cltq 0.00 : 485ad: 48 83 7c c2 c0 00 cmpq $0x0,-0x40(%rdx,%rax,8) 0.00 : 485b3: 0f 84 e0 fc ff ff je 48299 <_IO_vfprintf+0x3fd9> 0.00 : 485b9: 48 8b 8d 10 fa ff ff mov -0x5f0(%rbp),%rcx 0.00 : 485c0: 4a 63 04 b9 movslq (%rcx,%r15,4),%rax 0.00 : 485c4: 48 83 c0 1e add $0x1e,%rax 0.00 : 485c8: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 485cc: 48 29 c4 sub %rax,%rsp 0.00 : 485cf: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : 485d4: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 485d8: 48 89 3b mov %rdi,(%rbx) 0.00 : 485db: 48 8b 85 18 fa ff ff mov -0x5e8(%rbp),%rax 0.00 : 485e2: 48 8b b5 50 f8 ff ff mov -0x7b0(%rbp),%rsi 0.00 : 485e9: 4a 63 14 b8 movslq (%rax,%r15,4),%rdx 0.00 : 485ed: 48 8b 05 04 a8 32 00 mov 0x32a804(%rip),%rax # 372df8 <__printf_va_arg_table> 0.00 : 485f4: ff 54 d0 c0 callq *-0x40(%rax,%rdx,8) 0.00 : 485f8: e9 7b eb ff ff jmpq 47178 <_IO_vfprintf+0x2eb8> 0.00 : 485fd: 0f b6 85 73 fa ff ff movzbl -0x58d(%rbp),%eax 0.00 : 48604: 8b 95 24 f8 ff ff mov -0x7dc(%rbp),%edx 0.00 : 4860a: 83 e8 20 sub $0x20,%eax 0.00 : 4860d: 3c 5a cmp $0x5a,%al 0.00 : 4860f: 77 21 ja 48632 <_IO_vfprintf+0x4372> 0.00 : 48611: 0f be 85 73 fa ff ff movsbl -0x58d(%rbp),%eax 0.00 : 48618: 48 8d 15 61 c8 0e 00 lea 0xec861(%rip),%rdx # 134e80 0.00 : 4861f: 83 e8 20 sub $0x20,%eax 0.00 : 48622: 48 98 cltq 0.00 : 48624: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 48628: 48 8d 05 d1 c4 0e 00 lea 0xec4d1(%rip),%rax # 134b00 0.00 : 4862f: 8b 14 90 mov (%rax,%rdx,4),%edx 0.00 : 48632: 0f b6 85 f8 f8 ff ff movzbl -0x708(%rbp),%eax 0.00 : 48639: 0f b6 bd f7 f8 ff ff movzbl -0x709(%rbp),%edi 0.00 : 48640: 0f b6 8d f9 f8 ff ff movzbl -0x707(%rbp),%ecx 0.00 : 48647: 0f b6 9d fa f8 ff ff movzbl -0x706(%rbp),%ebx 0.00 : 4864e: 89 85 44 fa ff ff mov %eax,-0x5bc(%rbp) 0.00 : 48654: 0f b6 85 fc f8 ff ff movzbl -0x704(%rbp),%eax 0.00 : 4865b: 89 bd 40 fa ff ff mov %edi,-0x5c0(%rbp) 0.00 : 48661: 0f b6 bd fb f8 ff ff movzbl -0x705(%rbp),%edi 0.00 : 48668: 89 8d 4c fa ff ff mov %ecx,-0x5b4(%rbp) 0.00 : 4866e: 89 9d 50 fa ff ff mov %ebx,-0x5b0(%rbp) 0.00 : 48674: 0f b6 8d fd f8 ff ff movzbl -0x703(%rbp),%ecx 0.00 : 4867b: 0f b6 9d fe f8 ff ff movzbl -0x702(%rbp),%ebx 0.00 : 48682: 89 85 58 fa ff ff mov %eax,-0x5a8(%rbp) 0.00 : 48688: 0f b6 85 00 f9 ff ff movzbl -0x700(%rbp),%eax 0.00 : 4868f: 89 bd 54 fa ff ff mov %edi,-0x5ac(%rbp) 0.00 : 48695: 0f b6 bd ff f8 ff ff movzbl -0x701(%rbp),%edi 0.00 : 4869c: 89 8d 5c fa ff ff mov %ecx,-0x5a4(%rbp) 0.00 : 486a2: 89 9d 60 fa ff ff mov %ebx,-0x5a0(%rbp) 0.00 : 486a8: 88 85 72 fa ff ff mov %al,-0x58e(%rbp) 0.00 : 486ae: 48 63 c2 movslq %edx,%rax 0.00 : 486b1: 48 8d 15 22 d6 ff ff lea -0x29de(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 486b8: 89 bd 6c fa ff ff mov %edi,-0x594(%rbp) 0.00 : 486be: 48 01 c2 add %rax,%rdx 0.00 : 486c1: ff e2 jmpq *%rdx 0.00 : 486c3: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 486c7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 486cb: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 486cf: e9 ae fe ff ff jmpq 48582 <_IO_vfprintf+0x42c2> 0.00 : 486d4: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 486d9: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 486de: 73 34 jae 48714 <_IO_vfprintf+0x4454> 0.00 : 486e0: c6 00 49 movb $0x49,(%rax) 0.00 : 486e3: 48 83 c0 01 add $0x1,%rax 0.00 : 486e7: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 486ec: 83 c3 01 add $0x1,%ebx 0.00 : 486ef: e9 ac ca ff ff jmpq 451a0 <_IO_vfprintf+0xee0> 0.00 : 486f4: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 486f9: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 486fe: 73 2b jae 4872b <_IO_vfprintf+0x446b> 0.00 : 48700: c6 00 30 movb $0x30,(%rax) 0.00 : 48703: 48 83 c0 01 add $0x1,%rax 0.00 : 48707: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4870c: 83 c3 01 add $0x1,%ebx 0.00 : 4870f: e9 7b ca ff ff jmpq 4518f <_IO_vfprintf+0xecf> 0.00 : 48714: be 49 00 00 00 mov $0x49,%esi 0.00 : 48719: 4c 89 e7 mov %r12,%rdi 0.00 : 4871c: e8 7f b6 02 00 callq 73da0 <__overflow> 0.00 : 48721: 83 c0 01 add $0x1,%eax 0.00 : 48724: 75 c6 jne 486ec <_IO_vfprintf+0x442c> 0.00 : 48726: e9 a6 e1 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4872b: be 30 00 00 00 mov $0x30,%esi 0.00 : 48730: 4c 89 e7 mov %r12,%rdi 0.00 : 48733: e8 68 b6 02 00 callq 73da0 <__overflow> 0.00 : 48738: 83 c0 01 add $0x1,%eax 0.00 : 4873b: 75 cf jne 4870c <_IO_vfprintf+0x444c> 0.00 : 4873d: e9 8f e1 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48742: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48747: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4874c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 48750: 73 46 jae 48798 <_IO_vfprintf+0x44d8> 0.00 : 48752: c6 00 20 movb $0x20,(%rax) 0.00 : 48755: 48 83 c0 01 add $0x1,%rax 0.00 : 48759: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4875e: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 48765: 83 c3 01 add $0x1,%ebx 0.00 : 48768: 0f b6 47 0c movzbl 0xc(%rdi),%eax 0.00 : 4876c: e9 05 ca ff ff jmpq 45176 <_IO_vfprintf+0xeb6> 0.00 : 48771: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 48775: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 4877a: 73 33 jae 487af <_IO_vfprintf+0x44ef> 0.00 : 4877c: 89 c2 mov %eax,%edx 0.00 : 4877e: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48782: 83 c0 10 add $0x10,%eax 0.00 : 48785: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 48789: 48 8b 02 mov (%rdx),%rax 0.00 : 4878c: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 48793: e9 85 f7 ff ff jmpq 47f1d <_IO_vfprintf+0x3c5d> 0.00 : 48798: be 20 00 00 00 mov $0x20,%esi 0.00 : 4879d: 4c 89 e7 mov %r12,%rdi 0.00 : 487a0: e8 fb b5 02 00 callq 73da0 <__overflow> 0.00 : 487a5: 83 c0 01 add $0x1,%eax 0.00 : 487a8: 75 b4 jne 4875e <_IO_vfprintf+0x449e> 0.00 : 487aa: e9 22 e1 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 487af: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 487b3: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 487b7: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 487bb: eb cc jmp 48789 <_IO_vfprintf+0x44c9> 0.00 : 487bd: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 487c1: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 487c6: 73 47 jae 4880f <_IO_vfprintf+0x454f> 0.00 : 487c8: 89 c2 mov %eax,%edx 0.00 : 487ca: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 487ce: 83 c0 10 add $0x10,%eax 0.00 : 487d1: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 487d5: 48 8b 02 mov (%rdx),%rax 0.00 : 487d8: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 487df: e9 42 f9 ff ff jmpq 48126 <_IO_vfprintf+0x3e66> 0.00 : 487e4: be 23 00 00 00 mov $0x23,%esi 0.00 : 487e9: 4c 89 e7 mov %r12,%rdi 0.00 : 487ec: e8 af b5 02 00 callq 73da0 <__overflow> 0.00 : 487f1: 83 c0 01 add $0x1,%eax 0.00 : 487f4: 0f 84 d7 e0 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 487fa: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 48801: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 48806: 0f b6 41 0c movzbl 0xc(%rcx),%eax 0.00 : 4880a: e9 4a c9 ff ff jmpq 45159 <_IO_vfprintf+0xe99> 0.00 : 4880f: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48813: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48817: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4881b: eb b8 jmp 487d5 <_IO_vfprintf+0x4515> 0.00 : 4881d: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48821: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48825: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48829: e9 9a f9 ff ff jmpq 481c8 <_IO_vfprintf+0x3f08> 0.00 : 4882e: be 27 00 00 00 mov $0x27,%esi 0.00 : 48833: 4c 89 e7 mov %r12,%rdi 0.00 : 48836: e8 65 b5 02 00 callq 73da0 <__overflow> 0.00 : 4883b: 83 c0 01 add $0x1,%eax 0.00 : 4883e: 0f 85 dc f9 ff ff jne 48220 <_IO_vfprintf+0x3f60> 0.00 : 48844: e9 88 e0 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48849: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 48850: e8 5b 83 03 00 callq 80bb0 <__GI_strlen> 0.00 : 48855: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 4885c: 48 8d 70 01 lea 0x1(%rax),%rsi 0.00 : 48860: e8 4b 6f 0a 00 callq ef7b0 <__readonly_area> 0.00 : 48865: 85 c0 test %eax,%eax 0.00 : 48867: 89 85 74 f9 ff ff mov %eax,-0x68c(%rbp) 0.00 : 4886d: 0f 89 9e d0 ff ff jns 45911 <_IO_vfprintf+0x1651> 0.00 : 48873: 48 8d 3d 6e 60 0f 00 lea 0xf606e(%rip),%rdi # 13e8e8 <__PRETTY_FUNCTION__.11129+0xf0f> 0.00 : 4887a: e8 51 86 02 00 callq 70ed0 <__libc_fatal> 0.00 : 4887f: 48 8d 3d 92 60 0f 00 lea 0xf6092(%rip),%rdi # 13e918 <__PRETTY_FUNCTION__.11129+0xf3f> 0.00 : 48886: e8 45 86 02 00 callq 70ed0 <__libc_fatal> 0.00 : 4888b: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 48890: 4c 89 e7 mov %r12,%rdi 0.00 : 48893: e8 08 b5 02 00 callq 73da0 <__overflow> 0.00 : 48898: 83 c0 01 add $0x1,%eax 0.00 : 4889b: 0f 85 a7 ee ff ff jne 47748 <_IO_vfprintf+0x3488> 0.00 : 488a1: e9 2b e0 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 488a6: be 25 00 00 00 mov $0x25,%esi 0.00 : 488ab: 4c 89 e7 mov %r12,%rdi 0.00 : 488ae: 66 90 xchg %ax,%ax 0.00 : 488b0: e8 eb b4 02 00 callq 73da0 <__overflow> 0.00 : 488b5: 83 c0 01 add $0x1,%eax 0.00 : 488b8: 0f 85 83 c8 ff ff jne 45141 <_IO_vfprintf+0xe81> 0.00 : 488be: 66 90 xchg %ax,%ax 0.00 : 488c0: e9 0c e0 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 488c5: 48 89 df mov %rbx,%rdi 0.00 : 488c8: e8 f3 f2 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 488cd: 85 c0 test %eax,%eax 0.00 : 488cf: 90 nop 0.00 : 488d0: 0f 85 e5 d0 ff ff jne 459bb <_IO_vfprintf+0x16fb> 0.00 : 488d6: 48 89 df mov %rbx,%rdi 0.00 : 488d9: e8 72 5f fd ff callq 1e850 0.00 : 488de: 48 85 c0 test %rax,%rax 0.00 : 488e1: 49 89 c7 mov %rax,%r15 0.00 : 488e4: 0f 84 e7 df ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 488ea: c7 85 ec f9 ff ff 01 movl $0x1,-0x614(%rbp) 0.00 : 488f1: 00 00 00 0.00 : 488f4: e9 e0 d0 ff ff jmpq 459d9 <_IO_vfprintf+0x1719> 0.00 : 488f9: be 20 00 00 00 mov $0x20,%esi 0.00 : 488fe: 4c 89 e7 mov %r12,%rdi 0.00 : 48901: e8 9a b4 02 00 callq 73da0 <__overflow> 0.00 : 48906: 83 c0 01 add $0x1,%eax 0.00 : 48909: 0f 85 5a ec ff ff jne 47569 <_IO_vfprintf+0x32a9> 0.00 : 4890f: 90 nop 0.00 : 48910: e9 bc df ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48915: 0f 1f 00 nopl (%rax) 0.00 : 48918: e8 a3 f2 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 4891d: 85 c0 test %eax,%eax 0.00 : 4891f: 90 nop 0.00 : 48920: 0f 85 55 fa ff ff jne 4837b <_IO_vfprintf+0x40bb> 0.00 : 48926: 48 8b bd e8 f8 ff ff mov -0x718(%rbp),%rdi 0.00 : 4892d: e8 1e 5f fd ff callq 1e850 0.00 : 48932: 48 85 c0 test %rax,%rax 0.00 : 48935: 49 89 c7 mov %rax,%r15 0.00 : 48938: 0f 84 93 df ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4893e: c7 85 ec f9 ff ff 01 movl $0x1,-0x614(%rbp) 0.00 : 48945: 00 00 00 0.00 : 48948: e9 53 fa ff ff jmpq 483a0 <_IO_vfprintf+0x40e0> 0.00 : 4894d: 48 8d 0d bc 9f 0f 00 lea 0xf9fbc(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48954: 48 8d 35 7b 23 0f 00 lea 0xf237b(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 4895b: 48 8d 3d 85 23 0f 00 lea 0xf2385(%rip),%rdi # 13ace7 <__PRETTY_FUNCTION__.9779+0x9b> 0.00 : 48962: ba 42 06 00 00 mov $0x642,%edx 0.00 : 48967: e8 b4 2f fe ff callq 2b920 <__assert_fail> 0.00 : 4896c: 48 8b 95 58 f8 ff ff mov -0x7a8(%rbp),%rdx 0.00 : 48973: 48 8b 05 be 94 32 00 mov 0x3294be(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 4897a: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48980: c7 04 02 22 00 00 00 movl $0x22,(%rdx,%rax,1) 0.00 : 48987: e9 4b df ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4898c: 41 8b 06 mov (%r14),%eax 0.00 : 4898f: 83 f8 30 cmp $0x30,%eax 0.00 : 48992: 0f 83 c4 00 00 00 jae 48a5c <_IO_vfprintf+0x479c> 0.00 : 48998: 89 c2 mov %eax,%edx 0.00 : 4899a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4899e: 83 c0 08 add $0x8,%eax 0.00 : 489a1: 41 89 06 mov %eax,(%r14) 0.00 : 489a4: 4c 8b 3a mov (%rdx),%r15 0.00 : 489a7: e9 61 c5 ff ff jmpq 44f0d <_IO_vfprintf+0xc4d> 0.00 : 489ac: 48 89 9d 80 f9 ff ff mov %rbx,-0x680(%rbp) 0.00 : 489b3: 48 89 8d 48 f9 ff ff mov %rcx,-0x6b8(%rbp) 0.00 : 489ba: 48 c7 85 e0 fa ff ff movq $0x0,-0x520(%rbp) 0.00 : 489c1: 00 00 00 00 0.00 : 489c5: 48 c7 85 00 fa ff ff movq $0x0,-0x600(%rbp) 0.00 : 489cc: 00 00 00 00 0.00 : 489d0: 48 c7 85 f8 f9 ff ff movq $0x0,-0x608(%rbp) 0.00 : 489d7: 00 00 00 00 0.00 : 489db: e9 dd e5 ff ff jmpq 46fbd <_IO_vfprintf+0x2cfd> 0.00 : 489e0: 48 89 bd 48 f9 ff ff mov %rdi,-0x6b8(%rbp) 0.00 : 489e7: c7 85 ec fa ff ff ff movl $0xffffffff,-0x514(%rbp) 0.00 : 489ee: ff ff ff 0.00 : 489f1: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 489f6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 489fb: e9 41 cc ff ff jmpq 45641 <_IO_vfprintf+0x1381> 0.00 : 48a00: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48a04: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48a08: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48a0c: e9 dd ee ff ff jmpq 478ee <_IO_vfprintf+0x362e> 0.00 : 48a11: 48 8b 05 70 93 32 00 mov 0x329370(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 48a18: 48 8b 8d 58 f8 ff ff mov -0x7a8(%rbp),%rcx 0.00 : 48a1f: 48 8b 04 01 mov (%rcx,%rax,1),%rax 0.00 : 48a23: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 48a27: 48 8b 78 48 mov 0x48(%rax),%rdi 0.00 : 48a2b: 48 89 bd 38 f9 ff ff mov %rdi,-0x6c8(%rbp) 0.00 : 48a32: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 48a36: 48 89 85 40 f9 ff ff mov %rax,-0x6c0(%rbp) 0.00 : 48a3d: 0f b6 00 movzbl (%rax),%eax 0.00 : 48a40: 84 c0 test %al,%al 0.00 : 48a42: 74 08 je 48a4c <_IO_vfprintf+0x478c> 0.00 : 48a44: 3c 7f cmp $0x7f,%al 0.00 : 48a46: 0f 85 d4 d2 ff ff jne 45d20 <_IO_vfprintf+0x1a60> 0.00 : 48a4c: 48 c7 85 40 f9 ff ff movq $0x0,-0x6c0(%rbp) 0.00 : 48a53: 00 00 00 00 0.00 : 48a57: e9 c4 d2 ff ff jmpq 45d20 <_IO_vfprintf+0x1a60> 0.00 : 48a5c: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48a60: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48a64: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48a68: e9 37 ff ff ff jmpq 489a4 <_IO_vfprintf+0x46e4> 0.00 : 48a6d: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48a71: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48a75: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48a79: e9 98 ef ff ff jmpq 47a16 <_IO_vfprintf+0x3756> 0.00 : 48a7e: 8b 85 5c fa ff ff mov -0x5a4(%rbp),%eax 0.00 : 48a84: 85 c0 test %eax,%eax 0.00 : 48a86: 0f 84 19 01 00 00 je 48ba5 <_IO_vfprintf+0x48e5> 0.00 : 48a8c: 41 8b 06 mov (%r14),%eax 0.00 : 48a8f: 83 f8 30 cmp $0x30,%eax 0.00 : 48a92: 0f 83 fc 00 00 00 jae 48b94 <_IO_vfprintf+0x48d4> 0.00 : 48a98: 89 c2 mov %eax,%edx 0.00 : 48a9a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48a9e: 83 c0 08 add $0x8,%eax 0.00 : 48aa1: 41 89 06 mov %eax,(%r14) 0.00 : 48aa4: 0f b6 12 movzbl (%rdx),%edx 0.00 : 48aa7: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 48aae: 00 00 00 0.00 : 48ab1: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 48ab8: 00 00 00 0.00 : 48abb: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 48ac2: 00 00 00 0.00 : 48ac5: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 48acc: e9 42 d4 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 48ad1: 4c 89 ff mov %r15,%rdi 0.00 : 48ad4: e8 d7 80 03 00 callq 80bb0 <__GI_strlen> 0.00 : 48ad9: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 48ae0: 00 00 00 0.00 : 48ae3: 48 89 c3 mov %rax,%rbx 0.00 : 48ae6: 89 85 88 fa ff ff mov %eax,-0x578(%rbp) 0.00 : 48aec: e9 b8 c4 ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 48af1: 48 8d bd 78 ff ff ff lea -0x88(%rbp),%rdi 0.00 : 48af8: 48 8b 8d 30 f8 ff ff mov -0x7d0(%rbp),%rcx 0.00 : 48aff: 31 d2 xor %edx,%edx 0.00 : 48b01: 48 89 bd 80 f8 ff ff mov %rdi,-0x780(%rbp) 0.00 : 48b08: 48 89 fe mov %rdi,%rsi 0.00 : 48b0b: 31 ff xor %edi,%edi 0.00 : 48b0d: e8 5e 47 04 00 callq 8d270 0.00 : 48b12: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 48b16: 48 89 c3 mov %rax,%rbx 0.00 : 48b19: 0f 84 b2 dd ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48b1f: 44 8b 8d 60 ff ff ff mov -0xa0(%rbp),%r9d 0.00 : 48b26: 45 85 c9 test %r9d,%r9d 0.00 : 48b29: 0f 85 ff 00 00 00 jne 48c2e <_IO_vfprintf+0x496e> 0.00 : 48b2f: 48 8d 40 01 lea 0x1(%rax),%rax 0.00 : 48b33: 4c 89 bd 78 ff ff ff mov %r15,-0x88(%rbp) 0.00 : 48b3a: 48 3d 00 10 00 00 cmp $0x1000,%rax 0.00 : 48b40: 48 89 85 28 f9 ff ff mov %rax,-0x6d8(%rbp) 0.00 : 48b47: 0f 87 aa 00 00 00 ja 48bf7 <_IO_vfprintf+0x4937> 0.00 : 48b4d: 48 8b 85 28 f9 ff ff mov -0x6d8(%rbp),%rax 0.00 : 48b54: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 48b5b: 00 00 00 0.00 : 48b5e: 48 83 c0 1e add $0x1e,%rax 0.00 : 48b62: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 48b66: 48 29 c4 sub %rax,%rsp 0.00 : 48b69: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 48b6e: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 48b72: 48 8b 8d 30 f8 ff ff mov -0x7d0(%rbp),%rcx 0.00 : 48b79: 48 8b 95 28 f9 ff ff mov -0x6d8(%rbp),%rdx 0.00 : 48b80: 4c 89 ff mov %r15,%rdi 0.00 : 48b83: 48 8b b5 80 f8 ff ff mov -0x780(%rbp),%rsi 0.00 : 48b8a: e8 e1 46 04 00 callq 8d270 0.00 : 48b8f: e9 0f c4 ff ff jmpq 44fa3 <_IO_vfprintf+0xce3> 0.00 : 48b94: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48b98: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48b9c: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48ba0: e9 ff fe ff ff jmpq 48aa4 <_IO_vfprintf+0x47e4> 0.00 : 48ba5: 8b 85 58 fa ff ff mov -0x5a8(%rbp),%eax 0.00 : 48bab: 85 c0 test %eax,%eax 0.00 : 48bad: 0f 85 ab 00 00 00 jne 48c5e <_IO_vfprintf+0x499e> 0.00 : 48bb3: 41 8b 06 mov (%r14),%eax 0.00 : 48bb6: 83 f8 30 cmp $0x30,%eax 0.00 : 48bb9: 0f 83 8e 00 00 00 jae 48c4d <_IO_vfprintf+0x498d> 0.00 : 48bbf: 89 c2 mov %eax,%edx 0.00 : 48bc1: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48bc5: 83 c0 08 add $0x8,%eax 0.00 : 48bc8: 41 89 06 mov %eax,(%r14) 0.00 : 48bcb: 8b 12 mov (%rdx),%edx 0.00 : 48bcd: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 48bd4: 00 00 00 0.00 : 48bd7: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 48bde: 00 00 00 0.00 : 48be1: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 48be8: 00 00 00 0.00 : 48beb: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 48bf2: e9 1c d3 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 48bf7: 48 89 c7 mov %rax,%rdi 0.00 : 48bfa: e8 c1 ef 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 48bff: 85 c0 test %eax,%eax 0.00 : 48c01: 0f 85 46 ff ff ff jne 48b4d <_IO_vfprintf+0x488d> 0.00 : 48c07: 48 8b bd 28 f9 ff ff mov -0x6d8(%rbp),%rdi 0.00 : 48c0e: e8 3d 5c fd ff callq 1e850 0.00 : 48c13: 48 85 c0 test %rax,%rax 0.00 : 48c16: 49 89 c7 mov %rax,%r15 0.00 : 48c19: 0f 84 b2 dc ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48c1f: c7 85 74 fa ff ff 01 movl $0x1,-0x58c(%rbp) 0.00 : 48c26: 00 00 00 0.00 : 48c29: e9 44 ff ff ff jmpq 48b72 <_IO_vfprintf+0x48b2> 0.00 : 48c2e: 48 8d 0d db 9c 0f 00 lea 0xf9cdb(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48c35: 48 8d 35 9a 20 0f 00 lea 0xf209a(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48c3c: 48 8d 3d a4 20 0f 00 lea 0xf20a4(%rip),%rdi # 13ace7 <__PRETTY_FUNCTION__.9779+0x9b> 0.00 : 48c43: ba b6 07 00 00 mov $0x7b6,%edx 0.00 : 48c48: e8 d3 2c fe ff callq 2b920 <__assert_fail> 0.00 : 48c4d: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48c51: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48c55: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48c59: e9 6d ff ff ff jmpq 48bcb <_IO_vfprintf+0x490b> 0.00 : 48c5e: 41 8b 06 mov (%r14),%eax 0.00 : 48c61: 83 f8 30 cmp $0x30,%eax 0.00 : 48c64: 0f 83 85 00 00 00 jae 48cef <_IO_vfprintf+0x4a2f> 0.00 : 48c6a: 89 c2 mov %eax,%edx 0.00 : 48c6c: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48c70: 83 c0 08 add $0x8,%eax 0.00 : 48c73: 41 89 06 mov %eax,(%r14) 0.00 : 48c76: 0f b7 12 movzwl (%rdx),%edx 0.00 : 48c79: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 48c80: 00 00 00 0.00 : 48c83: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 48c8a: 00 00 00 0.00 : 48c8d: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 48c94: 00 00 00 0.00 : 48c97: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 48c9e: e9 70 d2 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 48ca3: 8b 85 58 fa ff ff mov -0x5a8(%rbp),%eax 0.00 : 48ca9: 85 c0 test %eax,%eax 0.00 : 48cab: 75 72 jne 48d1f <_IO_vfprintf+0x4a5f> 0.00 : 48cad: 48 8b 9d 80 f9 ff ff mov -0x680(%rbp),%rbx 0.00 : 48cb4: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 48cbb: 48 63 44 13 30 movslq 0x30(%rbx,%rdx,1),%rax 0.00 : 48cc0: 48 c1 e0 04 shl $0x4,%rax 0.00 : 48cc4: 48 63 14 07 movslq (%rdi,%rax,1),%rdx 0.00 : 48cc8: e9 1c d2 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48ccd: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48cd1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48cd5: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48cd9: e9 c5 e6 ff ff jmpq 473a3 <_IO_vfprintf+0x30e3> 0.00 : 48cde: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48ce2: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48ce6: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48cea: e9 51 ee ff ff jmpq 47b40 <_IO_vfprintf+0x3880> 0.00 : 48cef: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48cf3: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48cf7: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48cfb: e9 76 ff ff ff jmpq 48c76 <_IO_vfprintf+0x49b6> 0.00 : 48d00: 48 8d 0d 09 9c 0f 00 lea 0xf9c09(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48d07: 48 8d 35 c8 1f 0f 00 lea 0xf1fc8(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48d0e: 48 8d 3d ab 5b 0f 00 lea 0xf5bab(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 48d15: ba 41 06 00 00 mov $0x641,%edx 0.00 : 48d1a: e8 01 2c fe ff callq 2b920 <__assert_fail> 0.00 : 48d1f: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 48d26: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 48d2d: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 48d32: 48 c1 e0 04 shl $0x4,%rax 0.00 : 48d36: 48 0f bf 14 03 movswq (%rbx,%rax,1),%rdx 0.00 : 48d3b: e9 a9 d1 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48d40: 48 8b 8d 58 f8 ff ff mov -0x7a8(%rbp),%rcx 0.00 : 48d47: 48 8b 15 ea 90 32 00 mov 0x3290ea(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 48d4e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48d54: c7 04 11 22 00 00 00 movl $0x22,(%rcx,%rdx,1) 0.00 : 48d5b: e9 77 db ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 48d60: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48d65: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 48d6a: 0f 83 92 00 00 00 jae 48e02 <_IO_vfprintf+0x4b42> 0.00 : 48d70: c6 00 30 movb $0x30,(%rax) 0.00 : 48d73: 48 83 c0 01 add $0x1,%rax 0.00 : 48d77: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48d7c: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 48d83: 0f 84 48 db ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48d89: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48d8e: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 48d93: 73 54 jae 48de9 <_IO_vfprintf+0x4b29> 0.00 : 48d95: 0f b6 95 73 fa ff ff movzbl -0x58d(%rbp),%edx 0.00 : 48d9c: 88 10 mov %dl,(%rax) 0.00 : 48d9e: 48 83 c0 01 add $0x1,%rax 0.00 : 48da2: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48da7: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 48dae: 0f 84 1d db ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48db4: 41 83 c5 02 add $0x2,%r13d 0.00 : 48db8: e9 87 d2 ff ff jmpq 46044 <_IO_vfprintf+0x1d84> 0.00 : 48dbd: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48dc1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48dc5: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48dc9: e9 c3 eb ff ff jmpq 47991 <_IO_vfprintf+0x36d1> 0.00 : 48dce: be 20 00 00 00 mov $0x20,%esi 0.00 : 48dd3: 4c 89 e7 mov %r12,%rdi 0.00 : 48dd6: e8 c5 af 02 00 callq 73da0 <__overflow> 0.00 : 48ddb: 83 c0 01 add $0x1,%eax 0.00 : 48dde: 0f 85 be e7 ff ff jne 475a2 <_IO_vfprintf+0x32e2> 0.00 : 48de4: e9 e8 da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48de9: 0f b6 b5 73 fa ff ff movzbl -0x58d(%rbp),%esi 0.00 : 48df0: 4c 89 e7 mov %r12,%rdi 0.00 : 48df3: e8 a8 af 02 00 callq 73da0 <__overflow> 0.00 : 48df8: 83 c0 01 add $0x1,%eax 0.00 : 48dfb: 75 aa jne 48da7 <_IO_vfprintf+0x4ae7> 0.00 : 48dfd: e9 cf da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48e02: be 30 00 00 00 mov $0x30,%esi 0.00 : 48e07: 4c 89 e7 mov %r12,%rdi 0.00 : 48e0a: e8 91 af 02 00 callq 73da0 <__overflow> 0.00 : 48e0f: 83 c0 01 add $0x1,%eax 0.00 : 48e12: 0f 85 64 ff ff ff jne 48d7c <_IO_vfprintf+0x4abc> 0.00 : 48e18: e9 b4 da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48e1d: 8b b5 60 fa ff ff mov -0x5a0(%rbp),%esi 0.00 : 48e23: 85 f6 test %esi,%esi 0.00 : 48e25: 74 45 je 48e6c <_IO_vfprintf+0x4bac> 0.00 : 48e27: 41 8b 06 mov (%r14),%eax 0.00 : 48e2a: 83 f8 30 cmp $0x30,%eax 0.00 : 48e2d: 73 2f jae 48e5e <_IO_vfprintf+0x4b9e> 0.00 : 48e2f: 89 c2 mov %eax,%edx 0.00 : 48e31: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48e35: 83 c0 08 add $0x8,%eax 0.00 : 48e38: 41 89 06 mov %eax,(%r14) 0.00 : 48e3b: 48 8b 12 mov (%rdx),%rdx 0.00 : 48e3e: e9 a6 d0 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48e43: be 25 00 00 00 mov $0x25,%esi 0.00 : 48e48: 4c 89 e7 mov %r12,%rdi 0.00 : 48e4b: e8 50 af 02 00 callq 73da0 <__overflow> 0.00 : 48e50: 83 c0 01 add $0x1,%eax 0.00 : 48e53: 0f 85 2b d0 ff ff jne 45e84 <_IO_vfprintf+0x1bc4> 0.00 : 48e59: e9 73 da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48e5e: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48e62: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48e66: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48e6a: eb cf jmp 48e3b <_IO_vfprintf+0x4b7b> 0.00 : 48e6c: 8b 8d 5c fa ff ff mov -0x5a4(%rbp),%ecx 0.00 : 48e72: 85 c9 test %ecx,%ecx 0.00 : 48e74: 74 59 je 48ecf <_IO_vfprintf+0x4c0f> 0.00 : 48e76: 41 8b 06 mov (%r14),%eax 0.00 : 48e79: 83 f8 30 cmp $0x30,%eax 0.00 : 48e7c: 73 43 jae 48ec1 <_IO_vfprintf+0x4c01> 0.00 : 48e7e: 89 c2 mov %eax,%edx 0.00 : 48e80: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48e84: 83 c0 08 add $0x8,%eax 0.00 : 48e87: 41 89 06 mov %eax,(%r14) 0.00 : 48e8a: 48 0f be 12 movsbq (%rdx),%rdx 0.00 : 48e8e: e9 56 d0 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48e93: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48e97: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48e9b: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48e9f: e9 3f eb ff ff jmpq 479e3 <_IO_vfprintf+0x3723> 0.00 : 48ea4: 41 8b 06 mov (%r14),%eax 0.00 : 48ea7: 83 f8 30 cmp $0x30,%eax 0.00 : 48eaa: 73 49 jae 48ef5 <_IO_vfprintf+0x4c35> 0.00 : 48eac: 89 c2 mov %eax,%edx 0.00 : 48eae: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48eb2: 83 c0 08 add $0x8,%eax 0.00 : 48eb5: 41 89 06 mov %eax,(%r14) 0.00 : 48eb8: 48 0f bf 12 movswq (%rdx),%rdx 0.00 : 48ebc: e9 ee da ff ff jmpq 469af <_IO_vfprintf+0x26ef> 0.00 : 48ec1: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48ec5: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48ec9: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48ecd: eb bb jmp 48e8a <_IO_vfprintf+0x4bca> 0.00 : 48ecf: 8b 95 58 fa ff ff mov -0x5a8(%rbp),%edx 0.00 : 48ed5: 85 d2 test %edx,%edx 0.00 : 48ed7: 75 38 jne 48f11 <_IO_vfprintf+0x4c51> 0.00 : 48ed9: 41 8b 06 mov (%r14),%eax 0.00 : 48edc: 83 f8 30 cmp $0x30,%eax 0.00 : 48edf: 73 22 jae 48f03 <_IO_vfprintf+0x4c43> 0.00 : 48ee1: 89 c2 mov %eax,%edx 0.00 : 48ee3: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48ee7: 83 c0 08 add $0x8,%eax 0.00 : 48eea: 41 89 06 mov %eax,(%r14) 0.00 : 48eed: 48 63 12 movslq (%rdx),%rdx 0.00 : 48ef0: e9 f4 cf ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48ef5: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48ef9: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48efd: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48f01: eb b5 jmp 48eb8 <_IO_vfprintf+0x4bf8> 0.00 : 48f03: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48f07: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48f0b: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48f0f: eb dc jmp 48eed <_IO_vfprintf+0x4c2d> 0.00 : 48f11: 41 8b 06 mov (%r14),%eax 0.00 : 48f14: 83 f8 30 cmp $0x30,%eax 0.00 : 48f17: 0f 83 19 02 00 00 jae 49136 <_IO_vfprintf+0x4e76> 0.00 : 48f1d: 89 c2 mov %eax,%edx 0.00 : 48f1f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48f23: 83 c0 08 add $0x8,%eax 0.00 : 48f26: 41 89 06 mov %eax,(%r14) 0.00 : 48f29: 48 0f bf 12 movswq (%rdx),%rdx 0.00 : 48f2d: e9 b7 cf ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48f32: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 48f37: 4c 89 e7 mov %r12,%rdi 0.00 : 48f3a: e8 61 ae 02 00 callq 73da0 <__overflow> 0.00 : 48f3f: 83 c0 01 add $0x1,%eax 0.00 : 48f42: 0f 85 21 e6 ff ff jne 47569 <_IO_vfprintf+0x32a9> 0.00 : 48f48: e9 84 d9 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48f4d: 48 8b 05 34 8e 32 00 mov 0x328e34(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 48f54: 48 8b bd 58 f8 ff ff mov -0x7a8(%rbp),%rdi 0.00 : 48f5b: 48 8b 04 07 mov (%rdi,%rax,1),%rax 0.00 : 48f5f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 48f63: 48 8b 50 48 mov 0x48(%rax),%rdx 0.00 : 48f67: 48 89 95 38 f9 ff ff mov %rdx,-0x6c8(%rbp) 0.00 : 48f6e: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 48f72: 48 89 85 40 f9 ff ff mov %rax,-0x6c0(%rbp) 0.00 : 48f79: 0f b6 00 movzbl (%rax),%eax 0.00 : 48f7c: 84 c0 test %al,%al 0.00 : 48f7e: 74 0d je 48f8d <_IO_vfprintf+0x4ccd> 0.00 : 48f80: 3c 7f cmp $0x7f,%al 0.00 : 48f82: 74 09 je 48f8d <_IO_vfprintf+0x4ccd> 0.00 : 48f84: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 48f87: 0f 85 51 c3 ff ff jne 452de <_IO_vfprintf+0x101e> 0.00 : 48f8d: 48 c7 85 40 f9 ff ff movq $0x0,-0x6c0(%rbp) 0.00 : 48f94: 00 00 00 00 0.00 : 48f98: e9 41 c3 ff ff jmpq 452de <_IO_vfprintf+0x101e> 0.00 : 48f9d: 4c 89 ff mov %r15,%rdi 0.00 : 48fa0: e8 1b ec 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 48fa5: 85 c0 test %eax,%eax 0.00 : 48fa7: 0f 85 a5 c5 ff ff jne 45552 <_IO_vfprintf+0x1292> 0.00 : 48fad: 4c 89 ff mov %r15,%rdi 0.00 : 48fb0: e8 9b 58 fd ff callq 1e850 0.00 : 48fb5: 48 85 c0 test %rax,%rax 0.00 : 48fb8: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 48fbf: 0f 84 0c d9 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48fc5: 4c 03 bd 58 f9 ff ff add -0x6a8(%rbp),%r15 0.00 : 48fcc: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 48fd3: 4c 89 bd 60 f9 ff ff mov %r15,-0x6a0(%rbp) 0.00 : 48fda: 0f b6 19 movzbl (%rcx),%ebx 0.00 : 48fdd: e9 8e c5 ff ff jmpq 45570 <_IO_vfprintf+0x12b0> 0.00 : 48fe2: be 25 00 00 00 mov $0x25,%esi 0.00 : 48fe7: 4c 89 e7 mov %r12,%rdi 0.00 : 48fea: e8 b1 ad 02 00 callq 73da0 <__overflow> 0.00 : 48fef: 83 c0 01 add $0x1,%eax 0.00 : 48ff2: 0f 85 78 d9 ff ff jne 46970 <_IO_vfprintf+0x26b0> 0.00 : 48ff8: e9 d4 d8 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48ffd: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 49002: 4c 89 e7 mov %r12,%rdi 0.00 : 49005: e8 96 ad 02 00 callq 73da0 <__overflow> 0.00 : 4900a: 83 c0 01 add $0x1,%eax 0.00 : 4900d: 0f 85 8f e5 ff ff jne 475a2 <_IO_vfprintf+0x32e2> 0.00 : 49013: e9 b9 d8 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49018: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4901d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 49022: 0f 83 d6 00 00 00 jae 490fe <_IO_vfprintf+0x4e3e> 0.00 : 49028: c6 00 30 movb $0x30,(%rax) 0.00 : 4902b: 48 83 c0 01 add $0x1,%rax 0.00 : 4902f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 49034: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 4903b: 0f 84 90 d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 49041: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 49046: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4904b: 0f 83 90 00 00 00 jae 490e1 <_IO_vfprintf+0x4e21> 0.00 : 49051: 0f b6 95 eb f9 ff ff movzbl -0x615(%rbp),%edx 0.00 : 49058: 88 10 mov %dl,(%rax) 0.00 : 4905a: 48 83 c0 01 add $0x1,%rax 0.00 : 4905e: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 49063: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4906a: 0f 84 61 d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 49070: 41 83 c5 02 add $0x2,%r13d 0.00 : 49074: e9 4e d5 ff ff jmpq 465c7 <_IO_vfprintf+0x2307> 0.00 : 49079: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4907e: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 49083: 0f 83 db 00 00 00 jae 49164 <_IO_vfprintf+0x4ea4> 0.00 : 49089: c6 00 30 movb $0x30,(%rax) 0.00 : 4908c: 48 83 c0 01 add $0x1,%rax 0.00 : 49090: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 49095: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 4909c: 0f 84 2f d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 490a2: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 490a7: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 490ac: 0f 83 95 00 00 00 jae 49147 <_IO_vfprintf+0x4e87> 0.00 : 490b2: 0f b6 95 eb f9 ff ff movzbl -0x615(%rbp),%edx 0.00 : 490b9: 88 10 mov %dl,(%rax) 0.00 : 490bb: 48 83 c0 01 add $0x1,%rax 0.00 : 490bf: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 490c4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 490cb: 0f 84 00 d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 490d1: 41 83 c5 02 add $0x2,%r13d 0.00 : 490d5: 83 ad b8 fa ff ff 02 subl $0x2,-0x548(%rbp) 0.00 : 490dc: e9 1a da ff ff jmpq 46afb <_IO_vfprintf+0x283b> 0.00 : 490e1: 0f b6 b5 eb f9 ff ff movzbl -0x615(%rbp),%esi 0.00 : 490e8: 4c 89 e7 mov %r12,%rdi 0.00 : 490eb: e8 b0 ac 02 00 callq 73da0 <__overflow> 0.00 : 490f0: 83 c0 01 add $0x1,%eax 0.00 : 490f3: 0f 85 6a ff ff ff jne 49063 <_IO_vfprintf+0x4da3> 0.00 : 490f9: e9 d3 d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 490fe: be 30 00 00 00 mov $0x30,%esi 0.00 : 49103: 4c 89 e7 mov %r12,%rdi 0.00 : 49106: e8 95 ac 02 00 callq 73da0 <__overflow> 0.00 : 4910b: 83 c0 01 add $0x1,%eax 0.00 : 4910e: 66 90 xchg %ax,%ax 0.00 : 49110: 0f 85 1e ff ff ff jne 49034 <_IO_vfprintf+0x4d74> 0.00 : 49116: e9 b6 d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4911b: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 49120: 4c 89 e7 mov %r12,%rdi 0.00 : 49123: e8 78 ac 02 00 callq 73da0 <__overflow> 0.00 : 49128: 83 c0 01 add $0x1,%eax 0.00 : 4912b: 0f 85 ce e1 ff ff jne 472ff <_IO_vfprintf+0x303f> 0.00 : 49131: e9 9b d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49136: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 4913a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4913e: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49142: e9 e2 fd ff ff jmpq 48f29 <_IO_vfprintf+0x4c69> 0.00 : 49147: 0f b6 b5 eb f9 ff ff movzbl -0x615(%rbp),%esi 0.00 : 4914e: 4c 89 e7 mov %r12,%rdi 0.00 : 49151: e8 4a ac 02 00 callq 73da0 <__overflow> 0.00 : 49156: 83 c0 01 add $0x1,%eax 0.00 : 49159: 0f 85 65 ff ff ff jne 490c4 <_IO_vfprintf+0x4e04> 0.00 : 4915f: e9 6d d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49164: be 30 00 00 00 mov $0x30,%esi 0.00 : 49169: 4c 89 e7 mov %r12,%rdi 0.00 : 4916c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 49170: e8 2b ac 02 00 callq 73da0 <__overflow> 0.00 : 49175: 83 c0 01 add $0x1,%eax 0.00 : 49178: 0f 85 17 ff ff ff jne 49095 <_IO_vfprintf+0x4dd5> 0.00 : 4917e: 66 90 xchg %ax,%ax 0.00 : 49180: e9 4c d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49185: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 4918c: e8 1f 7a 03 00 callq 80bb0 <__GI_strlen> 0.00 : 49191: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 49198: 48 8d 70 01 lea 0x1(%rax),%rsi 0.00 : 4919c: e8 0f 66 0a 00 callq ef7b0 <__readonly_area> 0.00 : 491a1: 85 c0 test %eax,%eax 0.00 : 491a3: 89 85 74 f9 ff ff mov %eax,-0x68c(%rbp) 0.00 : 491a9: 0f 88 c4 f6 ff ff js 48873 <_IO_vfprintf+0x45b3> 0.00 : 491af: e9 a9 d1 ff ff jmpq 4635d <_IO_vfprintf+0x209d> 0.00 : 491b4: 4c 8d 3d 85 18 0f 00 lea 0xf1885(%rip),%r15 # 13aa40 0.00 : 491bb: 31 db xor %ebx,%ebx 0.00 : 491bd: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 491c4: 00 00 00 0.00 : 491c7: c7 85 8c fa ff ff 00 movl $0x0,-0x574(%rbp) 0.00 : 491ce: 00 00 00 0.00 : 491d1: e9 3a c8 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 491d6: 48 8d 0d 33 97 0f 00 lea 0xf9733(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 491dd: 48 8d 35 f2 1a 0f 00 lea 0xf1af2(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 491e4: 48 8d 3d d5 56 0f 00 lea 0xf56d5(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 491eb: ba 60 06 00 00 mov $0x660,%edx 0.00 : 491f0: e8 2b 27 fe ff callq 2b920 <__assert_fail> 0.00 : 491f5: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 491fc: e8 9f 56 fd ff callq 1e8a0 0.00 : 49201: e9 98 b6 ff ff jmpq 4489e <_IO_vfprintf+0x5de> 0.00 : 49206: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4920b: 4c 89 e7 mov %r12,%rdi 0.00 : 4920e: e8 8d ab 02 00 callq 73da0 <__overflow> 0.00 : 49213: 83 c0 01 add $0x1,%eax 0.00 : 49216: 0f 85 2c e5 ff ff jne 47748 <_IO_vfprintf+0x3488> 0.00 : 4921c: e9 b0 d6 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.70 : 49221: 4c 89 ff mov %r15,%rdi 0.70 : 49224: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 49228: e8 83 79 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4922d: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 49234: 00 00 00 0.00 : 49237: 48 89 c3 mov %rax,%rbx 0.00 : 4923a: 89 85 8c fa ff ff mov %eax,-0x574(%rbp) 0.00 : 49240: e9 cb c7 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 49245: 4c 89 ff mov %r15,%rdi 0.00 : 49248: e8 63 79 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4924d: 48 89 c3 mov %rax,%rbx 0.00 : 49250: e9 8e e2 ff ff jmpq 474e3 <_IO_vfprintf+0x3223> 0.00 : 49255: 48 8d 0d b4 96 0f 00 lea 0xf96b4(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4925c: 48 8d 35 73 1a 0f 00 lea 0xf1a73(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 49263: 48 8d 3d 26 56 0f 00 lea 0xf5626(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 4926a: ba 42 06 00 00 mov $0x642,%edx 0.00 : 4926f: e8 ac 26 fe ff callq 2b920 <__assert_fail> 0.00 : 49274: 44 8b 85 60 fa ff ff mov -0x5a0(%rbp),%r8d 0.00 : 4927b: 45 85 c0 test %r8d,%r8d 0.00 : 4927e: 0f 84 69 01 00 00 je 493ed <_IO_vfprintf+0x512d> 0.00 : 49284: 41 8b 06 mov (%r14),%eax 0.00 : 49287: 83 f8 30 cmp $0x30,%eax 0.00 : 4928a: 0f 83 98 00 00 00 jae 49328 <_IO_vfprintf+0x5068> 0.00 : 49290: 89 c2 mov %eax,%edx 0.00 : 49292: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49296: 83 c0 08 add $0x8,%eax 0.00 : 49299: 41 89 06 mov %eax,(%r14) 0.00 : 4929c: 48 8b 12 mov (%rdx),%rdx 0.00 : 4929f: 49 63 c5 movslq %r13d,%rax 0.00 : 492a2: 48 89 02 mov %rax,(%rdx) 0.00 : 492a5: e9 16 b8 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 492aa: 48 8b b5 28 f8 ff ff mov -0x7d8(%rbp),%rsi 0.00 : 492b1: 31 c9 xor %ecx,%ecx 0.00 : 492b3: 48 63 f8 movslq %eax,%rdi 0.00 : 492b6: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 492bb: e8 10 aa ff ff callq 43cd0 <_itoa_word> 0.00 : 492c0: 48 39 85 28 f8 ff ff cmp %rax,-0x7d8(%rbp) 0.00 : 492c7: 49 89 c7 mov %rax,%r15 0.00 : 492ca: 77 37 ja 49303 <_IO_vfprintf+0x5043> 0.00 : 492cc: e9 e1 be ff ff jmpq 451b2 <_IO_vfprintf+0xef2> 0.00 : 492d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 492d8: 88 10 mov %dl,(%rax) 0.00 : 492da: 48 83 c0 01 add $0x1,%rax 0.00 : 492de: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 492e3: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 492e9: 0f 84 e2 d5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 492ef: 49 83 c7 01 add $0x1,%r15 0.00 : 492f3: 83 c3 01 add $0x1,%ebx 0.00 : 492f6: 4c 39 bd 28 f8 ff ff cmp %r15,-0x7d8(%rbp) 0.00 : 492fd: 0f 86 af be ff ff jbe 451b2 <_IO_vfprintf+0xef2> 0.00 : 49303: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 49308: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4930d: 41 0f b6 17 movzbl (%r15),%edx 0.00 : 49311: 72 c5 jb 492d8 <_IO_vfprintf+0x5018> 0.00 : 49313: 0f b6 f2 movzbl %dl,%esi 0.00 : 49316: 4c 89 e7 mov %r12,%rdi 0.00 : 49319: e8 82 aa 02 00 callq 73da0 <__overflow> 0.00 : 4931e: 83 c0 01 add $0x1,%eax 0.00 : 49321: 75 c0 jne 492e3 <_IO_vfprintf+0x5023> 0.00 : 49323: e9 a9 d5 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49328: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 4932c: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 49330: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49334: e9 63 ff ff ff jmpq 4929c <_IO_vfprintf+0x4fdc> 0.00 : 49339: 48 8d 0d d0 95 0f 00 lea 0xf95d0(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 49340: 48 8d 35 8f 19 0f 00 lea 0xf198f(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 49347: 48 8d 3d 42 55 0f 00 lea 0xf5542(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 4934e: ba d0 07 00 00 mov $0x7d0,%edx 0.00 : 49353: e8 c8 25 fe ff callq 2b920 <__assert_fail> 0.00 : 49358: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4935d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 49362: 73 59 jae 493bd <_IO_vfprintf+0x50fd> 0.00 : 49364: 88 10 mov %dl,(%rax) 0.00 : 49366: 48 83 c0 01 add $0x1,%rax 0.00 : 4936a: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4936f: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 49375: 0f 84 56 d5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4937b: 83 c3 01 add $0x1,%ebx 0.00 : 4937e: e9 76 ea ff ff jmpq 47df9 <_IO_vfprintf+0x3b39> 0.00 : 49383: 48 8d 0d 86 95 0f 00 lea 0xf9586(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4938a: 48 8d 35 45 19 0f 00 lea 0xf1945(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 49391: 48 8d 3d 28 55 0f 00 lea 0xf5528(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 49398: ba b5 07 00 00 mov $0x7b5,%edx 0.00 : 4939d: e8 7e 25 fe ff callq 2b920 <__assert_fail> 0.00 : 493a2: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 493a7: 4c 89 e7 mov %r12,%rdi 0.00 : 493aa: e8 f1 a9 02 00 callq 73da0 <__overflow> 0.00 : 493af: 83 c0 01 add $0x1,%eax 0.00 : 493b2: 0f 85 b1 e1 ff ff jne 47569 <_IO_vfprintf+0x32a9> 0.00 : 493b8: e9 14 d5 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 493bd: 0f b6 f2 movzbl %dl,%esi 0.00 : 493c0: 4c 89 e7 mov %r12,%rdi 0.00 : 493c3: e8 d8 a9 02 00 callq 73da0 <__overflow> 0.00 : 493c8: 83 c0 01 add $0x1,%eax 0.00 : 493cb: 75 a2 jne 4936f <_IO_vfprintf+0x50af> 0.00 : 493cd: e9 ff d4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 493d2: be 2e 00 00 00 mov $0x2e,%esi 0.00 : 493d7: 4c 89 e7 mov %r12,%rdi 0.00 : 493da: e8 c1 a9 02 00 callq 73da0 <__overflow> 0.00 : 493df: 83 c0 01 add $0x1,%eax 0.00 : 493e2: 0f 85 f6 bd ff ff jne 451de <_IO_vfprintf+0xf1e> 0.00 : 493e8: e9 e4 d4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 493ed: 8b bd 5c fa ff ff mov -0x5a4(%rbp),%edi 0.00 : 493f3: 85 ff test %edi,%edi 0.00 : 493f5: 74 2d je 49424 <_IO_vfprintf+0x5164> 0.00 : 493f7: 41 8b 06 mov (%r14),%eax 0.00 : 493fa: 83 f8 30 cmp $0x30,%eax 0.00 : 493fd: 73 17 jae 49416 <_IO_vfprintf+0x5156> 0.00 : 493ff: 89 c2 mov %eax,%edx 0.00 : 49401: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49405: 83 c0 08 add $0x8,%eax 0.00 : 49408: 41 89 06 mov %eax,(%r14) 0.00 : 4940b: 48 8b 02 mov (%rdx),%rax 0.00 : 4940e: 44 88 28 mov %r13b,(%rax) 0.00 : 49411: e9 aa b6 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 49416: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 4941a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4941e: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49422: eb e7 jmp 4940b <_IO_vfprintf+0x514b> 0.00 : 49424: 8b b5 58 fa ff ff mov -0x5a8(%rbp),%esi 0.00 : 4942a: 85 f6 test %esi,%esi 0.00 : 4942c: 0f 85 11 02 00 00 jne 49643 <_IO_vfprintf+0x5383> 0.00 : 49432: 41 8b 06 mov (%r14),%eax 0.00 : 49435: 83 f8 30 cmp $0x30,%eax 0.00 : 49438: 0f 83 f4 01 00 00 jae 49632 <_IO_vfprintf+0x5372> 0.00 : 4943e: 89 c2 mov %eax,%edx 0.00 : 49440: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49444: 83 c0 08 add $0x8,%eax 0.00 : 49447: 41 89 06 mov %eax,(%r14) 0.00 : 4944a: 48 8b 02 mov (%rdx),%rax 0.00 : 4944d: 44 89 28 mov %r13d,(%rax) 0.00 : 49450: e9 6b b6 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 49455: 4c 8d 3d e4 15 0f 00 lea 0xf15e4(%rip),%r15 # 13aa40 0.00 : 4945c: 31 db xor %ebx,%ebx 0.00 : 4945e: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 49465: 00 00 00 0.00 : 49468: c7 85 88 fa ff ff 00 movl $0x0,-0x578(%rbp) 0.00 : 4946f: 00 00 00 0.00 : 49472: e9 32 bb ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 49477: 4c 89 ff mov %r15,%rdi 0.00 : 4947a: e8 31 77 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4947f: 48 89 c3 mov %rax,%rbx 0.00 : 49482: e9 49 e2 ff ff jmpq 476d0 <_IO_vfprintf+0x3410> 0.00 : 49487: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4948c: 4c 89 e7 mov %r12,%rdi 0.00 : 4948f: e8 0c a9 02 00 callq 73da0 <__overflow> 0.00 : 49494: 83 c0 01 add $0x1,%eax 0.00 : 49497: 0f 85 05 e1 ff ff jne 475a2 <_IO_vfprintf+0x32e2> 0.00 : 4949d: e9 2f d4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 494a2: 8b 85 58 fa ff ff mov -0x5a8(%rbp),%eax 0.00 : 494a8: 85 c0 test %eax,%eax 0.00 : 494aa: 75 3e jne 494ea <_IO_vfprintf+0x522a> 0.00 : 494ac: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 494b3: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 494ba: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 494bf: 48 c1 e0 04 shl $0x4,%rax 0.00 : 494c3: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : 494c7: 44 89 28 mov %r13d,(%rax) 0.00 : 494ca: e9 f1 b5 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 494cf: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 494d4: 4c 89 e7 mov %r12,%rdi 0.00 : 494d7: e8 c4 a8 02 00 callq 73da0 <__overflow> 0.00 : 494dc: 83 c0 01 add $0x1,%eax 0.00 : 494df: 0f 85 88 ec ff ff jne 4816d <_IO_vfprintf+0x3ead> 0.00 : 494e5: e9 e7 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 494ea: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 494f1: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 494f6: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 494fd: 48 c1 e0 04 shl $0x4,%rax 0.00 : 49501: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 49505: 66 44 89 28 mov %r13w,(%rax) 0.00 : 49509: e9 b2 b5 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 4950e: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49512: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 49516: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4951a: e9 3a ed ff ff jmpq 48259 <_IO_vfprintf+0x3f99> 0.00 : 4951f: 41 8b 06 mov (%r14),%eax 0.00 : 49522: 83 f8 30 cmp $0x30,%eax 0.00 : 49525: 73 4e jae 49575 <_IO_vfprintf+0x52b5> 0.00 : 49527: 89 c2 mov %eax,%edx 0.00 : 49529: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4952d: 83 c0 08 add $0x8,%eax 0.00 : 49530: 41 89 06 mov %eax,(%r14) 0.00 : 49533: 48 8b 02 mov (%rdx),%rax 0.00 : 49536: 66 44 89 28 mov %r13w,(%rax) 0.00 : 4953a: e9 51 b3 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 4953f: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 49544: 4c 89 e7 mov %r12,%rdi 0.00 : 49547: e8 54 a8 02 00 callq 73da0 <__overflow> 0.00 : 4954c: 83 c0 01 add $0x1,%eax 0.00 : 4954f: 0f 85 0f ea ff ff jne 47f64 <_IO_vfprintf+0x3ca4> 0.00 : 49555: e9 77 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4955a: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 4955f: 4c 89 e7 mov %r12,%rdi 0.00 : 49562: e8 39 a8 02 00 callq 73da0 <__overflow> 0.00 : 49567: 83 c0 01 add $0x1,%eax 0.00 : 4956a: 0f 85 8f dd ff ff jne 472ff <_IO_vfprintf+0x303f> 0.00 : 49570: e9 5c d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49575: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49579: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4957d: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49581: eb b0 jmp 49533 <_IO_vfprintf+0x5273> 0.00 : 49583: be 20 00 00 00 mov $0x20,%esi 0.00 : 49588: 4c 89 e7 mov %r12,%rdi 0.00 : 4958b: e8 10 a8 02 00 callq 73da0 <__overflow> 0.00 : 49590: 83 c0 01 add $0x1,%eax 0.00 : 49593: 0f 85 af e1 ff ff jne 47748 <_IO_vfprintf+0x3488> 0.00 : 49599: e9 33 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4959e: 4c 89 e7 mov %r12,%rdi 0.00 : 495a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 495a8: e8 f3 a7 02 00 callq 73da0 <__overflow> 0.00 : 495ad: 83 c0 01 add $0x1,%eax 0.00 : 495b0: 0f 85 e4 c2 ff ff jne 4589a <_IO_vfprintf+0x15da> 0.00 : 495b6: e9 16 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 495bb: 48 8b 85 58 f8 ff ff mov -0x7a8(%rbp),%rax 0.00 : 495c2: 48 8b 3d 6f 88 32 00 mov 0x32886f(%rip),%rdi # 371e38 <_DYNAMIC+0x2d8> 0.00 : 495c9: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 495cf: c7 04 38 22 00 00 00 movl $0x22,(%rax,%rdi,1) 0.00 : 495d6: e9 fc d2 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 495db: 48 89 df mov %rbx,%rdi 0.00 : 495de: e8 dd e5 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 495e3: 85 c0 test %eax,%eax 0.00 : 495e5: 0f 85 86 be ff ff jne 45471 <_IO_vfprintf+0x11b1> 0.00 : 495eb: 48 89 df mov %rbx,%rdi 0.00 : 495ee: e8 5d 52 fd ff callq 1e850 0.00 : 495f3: 48 85 c0 test %rax,%rax 0.00 : 495f6: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 495fd: 0f 84 ce d2 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 49603: 48 03 9d 58 f9 ff ff add -0x6a8(%rbp),%rbx 0.00 : 4960a: 48 89 9d 60 f9 ff ff mov %rbx,-0x6a0(%rbp) 0.00 : 49611: e9 79 be ff ff jmpq 4548f <_IO_vfprintf+0x11cf> 0.00 : 49616: 41 8b 06 mov (%r14),%eax 0.00 : 49619: 83 f8 30 cmp $0x30,%eax 0.00 : 4961c: 73 45 jae 49663 <_IO_vfprintf+0x53a3> 0.00 : 4961e: 89 c2 mov %eax,%edx 0.00 : 49620: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49624: 83 c0 08 add $0x8,%eax 0.00 : 49627: 41 89 06 mov %eax,(%r14) 0.00 : 4962a: 48 8b 02 mov (%rdx),%rax 0.00 : 4962d: e9 cf cc ff ff jmpq 46301 <_IO_vfprintf+0x2041> 0.00 : 49632: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49636: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4963a: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4963e: e9 07 fe ff ff jmpq 4944a <_IO_vfprintf+0x518a> 0.00 : 49643: 41 8b 06 mov (%r14),%eax 0.00 : 49646: 83 f8 30 cmp $0x30,%eax 0.00 : 49649: 73 26 jae 49671 <_IO_vfprintf+0x53b1> 0.00 : 4964b: 89 c2 mov %eax,%edx 0.00 : 4964d: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49651: 83 c0 08 add $0x8,%eax 0.00 : 49654: 41 89 06 mov %eax,(%r14) 0.00 : 49657: 48 8b 02 mov (%rdx),%rax 0.00 : 4965a: 66 44 89 28 mov %r13w,(%rax) 0.00 : 4965e: e9 5d b4 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 49663: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49667: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4966b: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4966f: eb b9 jmp 4962a <_IO_vfprintf+0x536a> 0.00 : 49671: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49675: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 49679: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4967d: eb d8 jmp 49657 <_IO_vfprintf+0x5397> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:157 9.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:262 6.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:157 5.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:102 5.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:113 4.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 4.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 4.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:111 4.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:119 4.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:257 3.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:111 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:118 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:91 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:118 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:262 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:71 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:72 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:122 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:260 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:87 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:122 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:122 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:262 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:262 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:87 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:118 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:122 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:262 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:225 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:226 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:157 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a84a0 : : * Note that if the plan node has parameters that have changed value, : * the output might be different from last time. : */ : void : ExecReScan(PlanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:69 3.43 : 5a84a0: 55 push %rbp 4.00 : 5a84a1: 48 89 e5 mov %rsp,%rbp 4.57 : 5a84a4: 41 56 push %r14 1.71 : 5a84a6: 49 89 fe mov %rdi,%r14 1.71 : 5a84a9: 41 55 push %r13 0.57 : 5a84ab: 41 54 push %r12 1.14 : 5a84ad: 53 push %rbx : /* If collecting timing stats, update them */ : if (node->instrument) 0.00 : 5a84ae: 48 8b 7f 18 mov 0x18(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:71 1.71 : 5a84b2: 48 85 ff test %rdi,%rdi 0.00 : 5a84b5: 74 05 je 5a84bc : InstrEndLoop(node->instrument); /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:72 1.71 : 5a84b7: e8 24 f6 00 00 callq 5b7ae0 : * the limited ways in which one InitPlan could depend on another, but : * eventually we might need to work harder (or else make the planner : * enlarge the extParam/allParam sets to include the params of depended-on : * InitPlans). : */ : if (node->chgParam != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:87 0.57 : 5a84bc: 49 83 7e 50 00 cmpq $0x0,0x50(%r14) 1.14 : 5a84c1: 0f 84 b1 00 00 00 je 5a8578 : { : ListCell *l; : : foreach(l, node->initPlan) /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:91 2.29 : 5a84c7: 49 8b 46 40 mov 0x40(%r14),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5a84cb: 48 85 c0 test %rax,%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 0.57 : 5a84ce: 66 90 xchg %ax,%ax 0.00 : 5a84d0: 74 49 je 5a851b 0.00 : 5a84d2: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5a84d6: 4d 85 e4 test %r12,%r12 0.00 : 5a84d9: 74 40 je 5a851b 0.00 : 5a84db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : SubPlanState *sstate = (SubPlanState *) lfirst(l); 0.00 : 5a84e0: 4d 8b 2c 24 mov (%r12),%r13 : PlanState *splan = sstate->planstate; 0.00 : 5a84e4: 49 8b 5d 18 mov 0x18(%r13),%rbx : : if (splan->plan->extParam != NULL) /* don't care about child 0.00 : 5a84e8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 5a84ec: 48 83 78 50 00 cmpq $0x0,0x50(%rax) 0.00 : 5a84f1: 74 0c je 5a84ff : * local Params */ : UpdateChangedParamSet(splan, node->chgParam); 0.00 : 5a84f3: 49 8b 76 50 mov 0x50(%r14),%rsi 0.00 : 5a84f7: 48 89 df mov %rbx,%rdi 0.00 : 5a84fa: e8 d1 c5 00 00 callq 5b4ad0 : if (splan->chgParam != NULL) 0.00 : 5a84ff: 48 83 7b 50 00 cmpq $0x0,0x50(%rbx) 0.00 : 5a8504: 74 0b je 5a8511 : ExecReScanSetParamPlan(sstate, node); 0.00 : 5a8506: 4c 89 f6 mov %r14,%rsi 0.00 : 5a8509: 4c 89 ef mov %r13,%rdi 0.00 : 5a850c: e8 2f fb 01 00 callq 5c8040 : */ : if (node->chgParam != NULL) : { : ListCell *l; : : foreach(l, node->initPlan) 0.00 : 5a8511: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5a8516: 4d 85 e4 test %r12,%r12 0.00 : 5a8519: 75 c5 jne 5a84e0 : * local Params */ : UpdateChangedParamSet(splan, node->chgParam); : if (splan->chgParam != NULL) : ExecReScanSetParamPlan(sstate, node); : } : foreach(l, node->subPlan) /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:102 5.14 : 5a851b: 49 8b 46 48 mov 0x48(%r14),%rax 0.00 : 5a851f: 48 85 c0 test %rax,%rax 0.00 : 5a8522: 74 30 je 5a8554 0.00 : 5a8524: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5a8528: 48 85 db test %rbx,%rbx 0.00 : 5a852b: 74 27 je 5a8554 0.00 : 5a852d: 0f 1f 00 nopl (%rax) : { : SubPlanState *sstate = (SubPlanState *) lfirst(l); : PlanState *splan = sstate->planstate; 0.00 : 5a8530: 48 8b 03 mov (%rbx),%rax 0.00 : 5a8533: 48 8b 78 18 mov 0x18(%rax),%rdi : : if (splan->plan->extParam != NULL) 0.00 : 5a8537: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 5a853b: 48 83 78 50 00 cmpq $0x0,0x50(%rax) 0.00 : 5a8540: 74 09 je 5a854b : UpdateChangedParamSet(splan, node->chgParam); 0.00 : 5a8542: 49 8b 76 50 mov 0x50(%r14),%rsi 0.00 : 5a8546: e8 85 c5 00 00 callq 5b4ad0 : * local Params */ : UpdateChangedParamSet(splan, node->chgParam); : if (splan->chgParam != NULL) : ExecReScanSetParamPlan(sstate, node); : } : foreach(l, node->subPlan) 0.00 : 5a854b: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5a854f: 48 85 db test %rbx,%rbx 0.00 : 5a8552: 75 dc jne 5a8530 : : if (splan->plan->extParam != NULL) : UpdateChangedParamSet(splan, node->chgParam); : } : /* Well. Now set chgParam for left/right trees. */ : if (node->lefttree != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:111 4.00 : 5a8554: 49 8b 7e 30 mov 0x30(%r14),%rdi 2.86 : 5a8558: 48 85 ff test %rdi,%rdi 0.00 : 5a855b: 74 09 je 5a8566 : UpdateChangedParamSet(node->lefttree, node->chgParam); 0.00 : 5a855d: 49 8b 76 50 mov 0x50(%r14),%rsi 0.00 : 5a8561: e8 6a c5 00 00 callq 5b4ad0 : if (node->righttree != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:113 5.14 : 5a8566: 49 8b 7e 38 mov 0x38(%r14),%rdi 0.00 : 5a856a: 48 85 ff test %rdi,%rdi 0.00 : 5a856d: 74 09 je 5a8578 : UpdateChangedParamSet(node->righttree, node->chgParam); 0.00 : 5a856f: 49 8b 76 50 mov 0x50(%r14),%rsi 0.00 : 5a8573: e8 58 c5 00 00 callq 5b4ad0 : } : : /* Shut down any SRFs in the plan node's targetlist */ : if (node->ps_ExprContext) /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:118 2.29 : 5a8578: 49 8b 7e 60 mov 0x60(%r14),%rdi 0.57 : 5a857c: 48 85 ff test %rdi,%rdi 2.86 : 5a857f: 74 05 je 5a8586 : ReScanExprContext(node->ps_ExprContext); /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:119 4.00 : 5a8581: e8 fa cb 00 00 callq 5b5180 : : /* And do node-type-specific processing */ : switch (nodeTag(node)) 0.00 : 5a8586: 41 8b 06 mov (%r14),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:122 1.14 : 5a8589: 2d c9 00 00 00 sub $0xc9,%eax 1.71 : 5a858e: 83 f8 21 cmp $0x21,%eax 0.00 : 5a8591: 76 2d jbe 5a85c0 : case T_LimitState: : ExecReScanLimit((LimitState *) node); : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); 0.00 : 5a8593: ba 13 93 88 00 mov $0x889313,%edx 0.00 : 5a8598: be fd 00 00 00 mov $0xfd,%esi 0.00 : 5a859d: bf 08 8f 88 00 mov $0x888f08,%edi 0.00 : 5a85a2: e8 79 2e 1d 00 callq 77b420 0.00 : 5a85a7: 41 8b 16 mov (%r14),%edx 0.00 : 5a85aa: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5a85af: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5a85b4: 31 c0 xor %eax,%eax 0.00 : 5a85b6: e8 75 2c 1d 00 callq 77b230 0.00 : 5a85bb: e8 10 0f ec ff callq 4694d0 : /* Shut down any SRFs in the plan node's targetlist */ : if (node->ps_ExprContext) : ReScanExprContext(node->ps_ExprContext); : : /* And do node-type-specific processing */ : switch (nodeTag(node)) 1.14 : 5a85c0: 89 c0 mov %eax,%eax 0.57 : 5a85c2: ff 24 c5 d0 91 88 00 jmpq *0x8891d0(,%rax,8) : case T_LockRowsState: : ExecReScanLockRows((LockRowsState *) node); : break; : : case T_LimitState: : ExecReScanLimit((LimitState *) node); 0.00 : 5a85c9: 4c 89 f7 mov %r14,%rdi 0.00 : 5a85cc: e8 df 7a 01 00 callq 5c00b0 0.00 : 5a85d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : : if (node->chgParam != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:257 4.00 : 5a85d8: 49 8b 7e 50 mov 0x50(%r14),%rdi 0.00 : 5a85dc: 48 85 ff test %rdi,%rdi 0.00 : 5a85df: 74 0d je 5a85ee : { : bms_free(node->chgParam); 0.00 : 5a85e1: e8 ca a7 03 00 callq 5e2db0 : node->chgParam = NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:260 1.71 : 5a85e6: 49 c7 46 50 00 00 00 movq $0x0,0x50(%r14) 0.00 : 5a85ed: 00 : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:262 0.57 : 5a85ee: 5b pop %rbx 1.14 : 5a85ef: 41 5c pop %r12 0.00 : 5a85f1: 41 5d pop %r13 2.29 : 5a85f3: 41 5e pop %r14 1.14 : 5a85f5: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:262 9.14 : 5a85f6: c3 retq : case T_SetOpState: : ExecReScanSetOp((SetOpState *) node); : break; : : case T_LockRowsState: : ExecReScanLockRows((LockRowsState *) node); 0.00 : 5a85f7: 4c 89 f7 mov %r14,%rdi 0.00 : 5a85fa: e8 81 7e 01 00 callq 5c0480 : break; 0.00 : 5a85ff: eb d7 jmp 5a85d8 : case T_HashState: : ExecReScanHash((HashState *) node); : break; : : case T_SetOpState: : ExecReScanSetOp((SetOpState *) node); 0.00 : 5a8601: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8604: e8 97 d3 01 00 callq 5c59a0 : break; 0.00 : 5a8609: eb cd jmp 5a85d8 : case T_UniqueState: : ExecReScanUnique((UniqueState *) node); : break; : : case T_HashState: : ExecReScanHash((HashState *) node); 0.00 : 5a860b: 4c 89 f7 mov %r14,%rdi 0.00 : 5a860e: e8 fd 35 01 00 callq 5bbc10 : break; 0.00 : 5a8613: eb c3 jmp 5a85d8 : case T_WindowAggState: : ExecReScanWindowAgg((WindowAggState *) node); : break; : : case T_UniqueState: : ExecReScanUnique((UniqueState *) node); 0.00 : 5a8615: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8618: e8 83 de 01 00 callq 5c64a0 0.00 : 5a861d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8620: eb b6 jmp 5a85d8 : case T_AggState: : ExecReScanAgg((AggState *) node); : break; : : case T_WindowAggState: : ExecReScanWindowAgg((WindowAggState *) node); 0.00 : 5a8622: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8625: e8 56 25 02 00 callq 5cab80 0.00 : 5a862a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; 0.00 : 5a8630: eb a6 jmp 5a85d8 : case T_GroupState: : ExecReScanGroup((GroupState *) node); : break; : : case T_AggState: : ExecReScanAgg((AggState *) node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:225 0.57 : 5a8632: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8635: e8 76 fe 00 00 callq 5b84b0 0.00 : 5a863a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:226 0.57 : 5a8640: eb 96 jmp 5a85d8 : case T_SortState: : ExecReScanSort((SortState *) node); : break; : : case T_GroupState: : ExecReScanGroup((GroupState *) node); 0.00 : 5a8642: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8645: e8 b6 e9 01 00 callq 5c7000 0.00 : 5a864a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; 0.00 : 5a8650: eb 86 jmp 5a85d8 : case T_MaterialState: : ExecReScanMaterial((MaterialState *) node); : break; : : case T_SortState: : ExecReScanSort((SortState *) node); 0.00 : 5a8652: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8655: e8 d6 da 01 00 callq 5c6130 0.00 : 5a865a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; 0.00 : 5a8660: e9 73 ff ff ff jmpq 5a85d8 : case T_HashJoinState: : ExecReScanHashJoin((HashJoinState *) node); : break; : : case T_MaterialState: : ExecReScanMaterial((MaterialState *) node); 0.00 : 5a8665: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8668: e8 a3 84 01 00 callq 5c0b10 0.00 : 5a866d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8670: e9 63 ff ff ff jmpq 5a85d8 : case T_MergeJoinState: : ExecReScanMergeJoin((MergeJoinState *) node); : break; : : case T_HashJoinState: : ExecReScanHashJoin((HashJoinState *) node); 0.00 : 5a8675: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8678: e8 e3 4d 01 00 callq 5bd460 0.00 : 5a867d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8680: e9 53 ff ff ff jmpq 5a85d8 : case T_NestLoopState: : ExecReScanNestLoop((NestLoopState *) node); : break; : : case T_MergeJoinState: : ExecReScanMergeJoin((MergeJoinState *) node); 0.00 : 5a8685: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8688: e8 73 8d 01 00 callq 5c1400 0.00 : 5a868d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8690: e9 43 ff ff ff jmpq 5a85d8 : case T_ForeignScanState: : ExecReScanForeignScan((ForeignScanState *) node); : break; : : case T_NestLoopState: : ExecReScanNestLoop((NestLoopState *) node); 0.00 : 5a8695: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8698: e8 b3 b9 01 00 callq 5c4050 0.00 : 5a869d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a86a0: e9 33 ff ff ff jmpq 5a85d8 : case T_WorkTableScanState: : ExecReScanWorkTableScan((WorkTableScanState *) node); : break; : : case T_ForeignScanState: : ExecReScanForeignScan((ForeignScanState *) node); 0.00 : 5a86a5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a86a8: e8 13 11 02 00 callq 5c97c0 0.00 : 5a86ad: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a86b0: e9 23 ff ff ff jmpq 5a85d8 : case T_CteScanState: : ExecReScanCteScan((CteScanState *) node); : break; : : case T_WorkTableScanState: : ExecReScanWorkTableScan((WorkTableScanState *) node); 0.00 : 5a86b5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a86b8: e8 63 e7 01 00 callq 5c6e20 0.00 : 5a86bd: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a86c0: e9 13 ff ff ff jmpq 5a85d8 : case T_ValuesScanState: : ExecReScanValuesScan((ValuesScanState *) node); : break; : : case T_CteScanState: : ExecReScanCteScan((CteScanState *) node); 0.00 : 5a86c5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a86c8: e8 43 e3 01 00 callq 5c6a10 0.00 : 5a86cd: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a86d0: e9 03 ff ff ff jmpq 5a85d8 : case T_FunctionScanState: : ExecReScanFunctionScan((FunctionScanState *) node); : break; : : case T_ValuesScanState: : ExecReScanValuesScan((ValuesScanState *) node); 0.00 : 5a86d5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a86d8: e8 e3 df 01 00 callq 5c66c0 0.00 : 5a86dd: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a86e0: e9 f3 fe ff ff jmpq 5a85d8 : case T_SubqueryScanState: : ExecReScanSubqueryScan((SubqueryScanState *) node); : break; : : case T_FunctionScanState: : ExecReScanFunctionScan((FunctionScanState *) node); 0.00 : 5a86e5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a86e8: e8 73 be 01 00 callq 5c4560 0.00 : 5a86ed: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a86f0: e9 e3 fe ff ff jmpq 5a85d8 : case T_TidScanState: : ExecReScanTidScan((TidScanState *) node); : break; : : case T_SubqueryScanState: : ExecReScanSubqueryScan((SubqueryScanState *) node); 0.00 : 5a86f5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a86f8: e8 03 06 02 00 callq 5c8d00 0.00 : 5a86fd: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8700: e9 d3 fe ff ff jmpq 5a85d8 : case T_BitmapHeapScanState: : ExecReScanBitmapHeapScan((BitmapHeapScanState *) node); : break; : : case T_TidScanState: : ExecReScanTidScan((TidScanState *) node); 0.00 : 5a8705: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8708: e8 a3 09 02 00 callq 5c90b0 0.00 : 5a870d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8710: e9 c3 fe ff ff jmpq 5a85d8 : case T_BitmapIndexScanState: : ExecReScanBitmapIndexScan((BitmapIndexScanState *) node); : break; : : case T_BitmapHeapScanState: : ExecReScanBitmapHeapScan((BitmapHeapScanState *) node); 0.00 : 5a8715: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8718: e8 53 27 01 00 callq 5bae70 0.00 : 5a871d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8720: e9 b3 fe ff ff jmpq 5a85d8 : case T_IndexOnlyScanState: : ExecReScanIndexOnlyScan((IndexOnlyScanState *) node); : break; : : case T_BitmapIndexScanState: : ExecReScanBitmapIndexScan((BitmapIndexScanState *) node); 0.00 : 5a8725: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8728: e8 93 31 01 00 callq 5bb8c0 0.00 : 5a872d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8730: e9 a3 fe ff ff jmpq 5a85d8 : case T_IndexScanState: : ExecReScanIndexScan((IndexScanState *) node); : break; : : case T_IndexOnlyScanState: : ExecReScanIndexOnlyScan((IndexOnlyScanState *) node); 0.00 : 5a8735: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8738: e8 b3 72 01 00 callq 5bf9f0 0.00 : 5a873d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8740: e9 93 fe ff ff jmpq 5a85d8 : case T_SeqScanState: : ExecReScanSeqScan((SeqScanState *) node); : break; : : case T_IndexScanState: : ExecReScanIndexScan((IndexScanState *) node); /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:157 14.86 : 5a8745: 4c 89 f7 mov %r14,%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:157 0.57 : 5a8748: e8 03 6d 01 00 callq 5bf450 /home/Computational/mark/src/postgres-andres/src/backend/executor/execAmi.c:157 6.86 : 5a874d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8750: e9 83 fe ff ff jmpq 5a85d8 : case T_BitmapOrState: : ExecReScanBitmapOr((BitmapOrState *) node); : break; : : case T_SeqScanState: : ExecReScanSeqScan((SeqScanState *) node); 0.00 : 5a8755: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8758: e8 33 d0 01 00 callq 5c5790 0.00 : 5a875d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8760: e9 73 fe ff ff jmpq 5a85d8 : case T_BitmapAndState: : ExecReScanBitmapAnd((BitmapAndState *) node); : break; : : case T_BitmapOrState: : ExecReScanBitmapOr((BitmapOrState *) node); 0.00 : 5a8765: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8768: e8 e3 21 01 00 callq 5ba950 0.00 : 5a876d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8770: e9 63 fe ff ff jmpq 5a85d8 : case T_RecursiveUnionState: : ExecReScanRecursiveUnion((RecursiveUnionState *) node); : break; : : case T_BitmapAndState: : ExecReScanBitmapAnd((BitmapAndState *) node); 0.00 : 5a8775: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8778: e8 13 1f 01 00 callq 5ba690 0.00 : 5a877d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8780: e9 53 fe ff ff jmpq 5a85d8 : case T_MergeAppendState: : ExecReScanMergeAppend((MergeAppendState *) node); : break; : : case T_RecursiveUnionState: : ExecReScanRecursiveUnion((RecursiveUnionState *) node); 0.00 : 5a8785: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8788: e8 13 c8 01 00 callq 5c4fa0 0.00 : 5a878d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a8790: e9 43 fe ff ff jmpq 5a85d8 : case T_AppendState: : ExecReScanAppend((AppendState *) node); : break; : : case T_MergeAppendState: : ExecReScanMergeAppend((MergeAppendState *) node); 0.00 : 5a8795: 4c 89 f7 mov %r14,%rdi 0.00 : 5a8798: e8 63 87 01 00 callq 5c0f00 0.00 : 5a879d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a87a0: e9 33 fe ff ff jmpq 5a85d8 : case T_ModifyTableState: : ExecReScanModifyTable((ModifyTableState *) node); : break; : : case T_AppendState: : ExecReScanAppend((AppendState *) node); 0.00 : 5a87a5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a87a8: e8 f3 f8 00 00 callq 5b80a0 0.00 : 5a87ad: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a87b0: e9 23 fe ff ff jmpq 5a85d8 : case T_ResultState: : ExecReScanResult((ResultState *) node); : break; : : case T_ModifyTableState: : ExecReScanModifyTable((ModifyTableState *) node); 0.00 : 5a87b5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a87b8: e8 e3 9f 01 00 callq 5c27a0 0.00 : 5a87bd: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a87c0: e9 13 fe ff ff jmpq 5a85d8 : : /* And do node-type-specific processing */ : switch (nodeTag(node)) : { : case T_ResultState: : ExecReScanResult((ResultState *) node); 0.00 : 5a87c5: 4c 89 f7 mov %r14,%rdi 0.00 : 5a87c8: e8 93 cc 01 00 callq 5c5460 0.00 : 5a87cd: 0f 1f 00 nopl (%rax) : break; 0.00 : 5a87d0: e9 03 fe ff ff jmpq 5a85d8 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 6.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:311 5.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:311 5.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:152 4.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:304 3.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 3.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:305 3.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:306 3.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:306 3.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:304 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:305 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:157 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:157 2.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:296 2.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:303 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:295 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:296 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:304 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:305 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:305 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:152 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:295 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:303 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:303 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:303 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:303 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:305 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:311 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:304 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:306 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:306 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006fd330 : : PG_RETURN_BOOL(result); : } : : Datum : textnlike(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:294 3.85 : 6fd330: 55 push %rbp 3.08 : 6fd331: 48 89 e5 mov %rsp,%rbp 3.08 : 6fd334: 48 89 5d e0 mov %rbx,-0x20(%rbp) 3.08 : 6fd338: 4c 89 65 e8 mov %r12,-0x18(%rbp) 1.54 : 6fd33c: 48 89 fb mov %rdi,%rbx 1.54 : 6fd33f: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 6fd343: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.77 : 6fd347: 48 83 ec 20 sub $0x20,%rsp : text *str = PG_GETARG_TEXT_PP(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:295 0.77 : 6fd34b: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6fd34f: e8 8c 19 08 00 callq 77ece0 : text *pat = PG_GETARG_TEXT_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:296 2.31 : 6fd354: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : textnlike(PG_FUNCTION_ARGS) : { : text *str = PG_GETARG_TEXT_PP(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:295 1.54 : 6fd358: 49 89 c4 mov %rax,%r12 : char *s, : *p; : int slen, : plen; : : s = VARDATA_ANY(str); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:303 0.77 : 6fd35b: 4d 8d 74 24 01 lea 0x1(%r12),%r14 : : Datum : textnlike(PG_FUNCTION_ARGS) : { : text *str = PG_GETARG_TEXT_PP(0); : text *pat = PG_GETARG_TEXT_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:296 1.54 : 6fd360: e8 7b 19 08 00 callq 77ece0 : char *s, : *p; : int slen, : plen; : : s = VARDATA_ANY(str); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:303 2.31 : 6fd365: 41 0f b6 14 24 movzbl (%r12),%edx : : Datum : textnlike(PG_FUNCTION_ARGS) : { : text *str = PG_GETARG_TEXT_PP(0); : text *pat = PG_GETARG_TEXT_PP(1); 0.00 : 6fd36a: 48 89 c6 mov %rax,%rsi : char *s, : *p; : int slen, : plen; : : s = VARDATA_ANY(str); 0.77 : 6fd36d: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 6fd372: 89 d1 mov %edx,%ecx 0.77 : 6fd374: 83 e1 01 and $0x1,%ecx 0.77 : 6fd377: 4c 0f 44 f0 cmove %rax,%r14 : slen = VARSIZE_ANY_EXHDR(str); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:304 3.08 : 6fd37b: 80 fa 01 cmp $0x1,%dl 0.00 : 6fd37e: 0f 84 cc 00 00 00 je 6fd450 1.54 : 6fd384: 85 c9 test %ecx,%ecx 0.00 : 6fd386: 0f 85 84 00 00 00 jne 6fd410 0.00 : 6fd38c: 41 8b 04 24 mov (%r12),%eax 0.00 : 6fd390: c1 e8 02 shr $0x2,%eax 0.00 : 6fd393: 44 8d 68 fc lea -0x4(%rax),%r13d : p = VARDATA_ANY(pat); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:305 0.77 : 6fd397: 0f b6 16 movzbl (%rsi),%edx 3.85 : 6fd39a: 4c 8d 66 01 lea 0x1(%rsi),%r12 3.08 : 6fd39e: 48 8d 46 04 lea 0x4(%rsi),%rax 1.54 : 6fd3a2: 89 d1 mov %edx,%ecx 0.00 : 6fd3a4: 83 e1 01 and $0x1,%ecx 1.54 : 6fd3a7: 4c 0f 44 e0 cmove %rax,%r12 : plen = VARSIZE_ANY_EXHDR(pat); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:306 3.85 : 6fd3ab: 80 fa 01 cmp $0x1,%dl 0.00 : 6fd3ae: 0f 84 cc 00 00 00 je 6fd480 0.00 : 6fd3b4: 85 c9 test %ecx,%ecx 0.00 : 6fd3b6: 74 68 je 6fd420 0.00 : 6fd3b8: d0 ea shr %dl 0.00 : 6fd3ba: 0f b6 c2 movzbl %dl,%eax 0.00 : 6fd3bd: 8d 58 ff lea -0x1(%rax),%ebx : : /* Generic for all cases not requiring inline case-folding */ : static inline int : GenericMatchText(char *s, int slen, char *p, int plen) : { : if (pg_database_encoding_max_length() == 1) 0.00 : 6fd3c0: e8 cb e4 08 00 callq 78b890 0.00 : 6fd3c5: 83 e8 01 sub $0x1,%eax 0.00 : 6fd3c8: 74 68 je 6fd432 : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) 0.00 : 6fd3ca: e8 11 b5 08 00 callq 7888e0 0.00 : 6fd3cf: 83 f8 06 cmp $0x6,%eax 0.00 : 6fd3d2: 0f 84 d0 00 00 00 je 6fd4a8 : return UTF8_MatchText(s, slen, p, plen, 0, true); : else : return MB_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fd3d8: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 6fd3de: 45 31 c0 xor %r8d,%r8d 0.00 : 6fd3e1: 89 d9 mov %ebx,%ecx 0.00 : 6fd3e3: 4c 89 e2 mov %r12,%rdx 0.00 : 6fd3e6: 44 89 ee mov %r13d,%esi 0.00 : 6fd3e9: 4c 89 f7 mov %r14,%rdi 0.00 : 6fd3ec: e8 9f f3 ff ff callq 6fc790 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:157 3.08 : 6fd3f1: 83 e8 01 sub $0x1,%eax : plen = VARSIZE_ANY_EXHDR(pat); : : result = (GenericMatchText(s, slen, p, plen) != LIKE_TRUE); : : PG_RETURN_BOOL(result); : } 0.00 : 6fd3f4: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:311 0.77 : 6fd3f8: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 : if (pg_database_encoding_max_length() == 1) : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) : return UTF8_MatchText(s, slen, p, plen, 0, true); : else : return MB_MatchText(s, slen, p, plen, 0, true); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:157 3.08 : 6fd3fd: 0f 95 c0 setne %al : plen = VARSIZE_ANY_EXHDR(pat); : : result = (GenericMatchText(s, slen, p, plen) != LIKE_TRUE); : : PG_RETURN_BOOL(result); : } 0.00 : 6fd400: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 6fd405: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 : if (pg_database_encoding_max_length() == 1) : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) : return UTF8_MatchText(s, slen, p, plen, 0, true); : else : return MB_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fd40a: 0f b6 c0 movzbl %al,%eax : plen = VARSIZE_ANY_EXHDR(pat); : : result = (GenericMatchText(s, slen, p, plen) != LIKE_TRUE); : : PG_RETURN_BOOL(result); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:311 5.38 : 6fd40d: c9 leaveq 6.15 : 6fd40e: c3 retq 0.00 : 6fd40f: 90 nop : *p; : int slen, : plen; : : s = VARDATA_ANY(str); : slen = VARSIZE_ANY_EXHDR(str); 0.00 : 6fd410: d0 ea shr %dl /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:304 0.77 : 6fd412: 0f b6 c2 movzbl %dl,%eax 0.00 : 6fd415: 44 8d 68 ff lea -0x1(%rax),%r13d 4.62 : 6fd419: e9 79 ff ff ff jmpq 6fd397 0.00 : 6fd41e: 66 90 xchg %ax,%ax : p = VARDATA_ANY(pat); : plen = VARSIZE_ANY_EXHDR(pat); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:306 3.85 : 6fd420: 8b 06 mov (%rsi),%eax 0.77 : 6fd422: c1 e8 02 shr $0x2,%eax 0.77 : 6fd425: 8d 58 fc lea -0x4(%rax),%ebx : : /* Generic for all cases not requiring inline case-folding */ : static inline int : GenericMatchText(char *s, int slen, char *p, int plen) : { : if (pg_database_encoding_max_length() == 1) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:152 1.54 : 6fd428: e8 63 e4 08 00 callq 78b890 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:152 5.38 : 6fd42d: 83 e8 01 sub $0x1,%eax 0.00 : 6fd430: 75 98 jne 6fd3ca : return SB_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fd432: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 6fd438: 45 31 c0 xor %r8d,%r8d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 0.77 : 6fd43b: 89 d9 mov %ebx,%ecx 3.85 : 6fd43d: 4c 89 e2 mov %r12,%rdx 0.00 : 6fd440: 44 89 ee mov %r13d,%esi 0.77 : 6fd443: 4c 89 f7 mov %r14,%rdi 0.00 : 6fd446: e8 b5 e7 ff ff callq 6fbc00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 10.77 : 6fd44b: eb a4 jmp 6fd3f1 0.00 : 6fd44d: 0f 1f 00 nopl (%rax) : *p; : int slen, : plen; : : s = VARDATA_ANY(str); : slen = VARSIZE_ANY_EXHDR(str); 0.00 : 6fd450: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax 0.00 : 6fd456: 41 bd 08 00 00 00 mov $0x8,%r13d 0.00 : 6fd45c: 3c 01 cmp $0x1,%al 0.00 : 6fd45e: 0f 84 33 ff ff ff je 6fd397 0.00 : 6fd464: 3c 12 cmp $0x12,%al 0.00 : 6fd466: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 6fd46c: b8 10 00 00 00 mov $0x10,%eax 0.00 : 6fd471: 44 0f 44 e8 cmove %eax,%r13d 0.00 : 6fd475: e9 1d ff ff ff jmpq 6fd397 0.00 : 6fd47a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : p = VARDATA_ANY(pat); : plen = VARSIZE_ANY_EXHDR(pat); 0.00 : 6fd480: 0f b6 46 01 movzbl 0x1(%rsi),%eax 0.00 : 6fd484: bb 08 00 00 00 mov $0x8,%ebx 0.00 : 6fd489: 3c 01 cmp $0x1,%al 0.00 : 6fd48b: 0f 84 2f ff ff ff je 6fd3c0 0.00 : 6fd491: 3c 12 cmp $0x12,%al 0.00 : 6fd493: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 6fd498: b8 10 00 00 00 mov $0x10,%eax 0.00 : 6fd49d: 0f 44 d8 cmove %eax,%ebx 0.00 : 6fd4a0: e9 1b ff ff ff jmpq 6fd3c0 0.00 : 6fd4a5: 0f 1f 00 nopl (%rax) : GenericMatchText(char *s, int slen, char *p, int plen) : { : if (pg_database_encoding_max_length() == 1) : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) : return UTF8_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fd4a8: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 6fd4ae: 45 31 c0 xor %r8d,%r8d 0.00 : 6fd4b1: 89 d9 mov %ebx,%ecx 0.00 : 6fd4b3: 4c 89 e2 mov %r12,%rdx 0.00 : 6fd4b6: 44 89 ee mov %r13d,%esi 0.00 : 6fd4b9: 4c 89 f7 mov %r14,%rdi 0.00 : 6fd4bc: e8 ff e4 ff ff callq 6fb9c0 0.00 : 6fd4c1: e9 2b ff ff ff jmpq 6fd3f1 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:588 16.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:607 13.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:588 12.73 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:607 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:599 6.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:599 6.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:610 4.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:601 3.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:601 2.42 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:607 1.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:588 0.61 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:607 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b3f00 : : * The slot itself is undisturbed. : * -------------------------------- : */ : MinimalTuple : ExecCopySlotMinimalTuple(TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:588 13.94 : 5b3f00: 55 push %rbp 24.85 : 5b3f01: 48 89 f8 mov %rdi,%rax : : /* : * If we have a physical tuple then just copy it. Prefer to copy : * tts_mintuple since that's a tad cheaper. : */ : if (slot->tts_mintuple) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:599 6.06 : 5b3f04: 48 8b 7f 38 mov 0x38(%rdi),%rdi : * The slot itself is undisturbed. : * -------------------------------- : */ : MinimalTuple : ExecCopySlotMinimalTuple(TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:588 1.82 : 5b3f08: 48 89 e5 mov %rsp,%rbp : : /* : * If we have a physical tuple then just copy it. Prefer to copy : * tts_mintuple since that's a tad cheaper. : */ : if (slot->tts_mintuple) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:599 6.67 : 5b3f0b: 48 85 ff test %rdi,%rdi 0.00 : 5b3f0e: 74 10 je 5b3f20 : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_minimal_tuple(slot->tts_tupleDescriptor, : slot->tts_values, : slot->tts_isnull); : } 0.00 : 5b3f10: c9 leaveq : /* : * If we have a physical tuple then just copy it. Prefer to copy : * tts_mintuple since that's a tad cheaper. : */ : if (slot->tts_mintuple) : return heap_copy_minimal_tuple(slot->tts_mintuple); 0.00 : 5b3f11: e9 ca ab eb ff jmpq 46eae0 0.00 : 5b3f16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5b3f1d: 00 00 00 : if (slot->tts_tuple) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:601 4.85 : 5b3f20: 48 8b 78 08 mov 0x8(%rax),%rdi 3.64 : 5b3f24: 48 85 ff test %rdi,%rdi 0.00 : 5b3f27: 74 07 je 5b3f30 : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_minimal_tuple(slot->tts_tupleDescriptor, : slot->tts_values, : slot->tts_isnull); : } 0.00 : 5b3f29: c9 leaveq : * tts_mintuple since that's a tad cheaper. : */ : if (slot->tts_mintuple) : return heap_copy_minimal_tuple(slot->tts_mintuple); : if (slot->tts_tuple) : return minimal_tuple_from_heap_tuple(slot->tts_tuple); 0.00 : 5b3f2a: e9 51 ab eb ff jmpq 46ea80 0.00 : 5b3f2f: 90 nop : : /* : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_minimal_tuple(slot->tts_tupleDescriptor, /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:607 12.73 : 5b3f30: 48 8b 50 30 mov 0x30(%rax),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:607 2.42 : 5b3f34: 48 8b 70 28 mov 0x28(%rax),%rsi 0.61 : 5b3f38: 48 8b 78 10 mov 0x10(%rax),%rdi : slot->tts_values, : slot->tts_isnull); : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:610 6.06 : 5b3f3c: c9 leaveq : return minimal_tuple_from_heap_tuple(slot->tts_tuple); : : /* : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_minimal_tuple(slot->tts_tupleDescriptor, /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:607 16.36 : 5b3f3d: e9 9e c5 eb ff jmpq 4704e0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.46 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:605 10.82 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:620 9.28 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:614 6.70 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 6.19 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:589 5.67 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 5.67 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:615 5.15 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:602 4.64 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:589 4.64 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:620 4.12 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:620 3.61 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 3.61 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:602 3.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 3.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 3.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:620 2.58 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:602 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 0.52 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:614 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5710 : : * enough information to do it efficiently in the general case. : * ---------------- : */ : HeapTuple : index_getnext(IndexScanDesc scan, ScanDirection direction) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 6.70 : 4a5710: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 3.61 : 4a5711: 48 89 e5 mov %rsp,%rbp 1.03 : 4a5714: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 5.67 : 4a5716: 41 89 f4 mov %esi,%r12d /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:583 3.09 : 4a5719: 53 push %rbx 3.09 : 4a571a: 48 89 fb mov %rdi,%rbx 1.03 : 4a571d: 0f 1f 00 nopl (%rax) : HeapTuple heapTuple; : ItemPointer tid; : : for (;;) : { : if (scan->xs_continue_hot) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:589 6.19 : 4a5720: 80 7b 6d 00 cmpb $0x0,0x6d(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:589 4.64 : 4a5724: 74 1a je 4a5740 : /* : * Fetch the next (or only) visible heap tuple for this index entry. : * If we don't find anything, loop around and grab the next TID from : * the index. : */ : heapTuple = index_fetch_heap(scan); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:614 9.28 : 4a5726: 48 89 df mov %rbx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:614 0.52 : 4a5729: e8 f2 fd ff ff callq 4a5520 : if (heapTuple != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:615 5.67 : 4a572e: 48 85 c0 test %rax,%rax 0.00 : 4a5731: 74 ed je 4a5720 : return heapTuple; : } : : return NULL; /* failure exit */ : } /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:620 4.64 : 4a5733: 5b pop %rbx 4.12 : 4a5734: 41 5c pop %r12 3.09 : 4a5736: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:620 10.82 : 4a5737: c3 retq 0.00 : 4a5738: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a573f: 00 : BufferGetBlockNumber(scan->xs_cbuf)); : } : else : { : /* Time to fetch the next TID from the index */ : tid = index_getnext_tid(scan, direction); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:602 3.61 : 4a5740: 44 89 e6 mov %r12d,%esi 2.58 : 4a5743: 48 89 df mov %rbx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:602 5.15 : 4a5746: e8 e5 fe ff ff callq 4a5630 : : /* If we're out of index entries, we're done */ : if (tid == NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:605 15.46 : 4a574b: 48 85 c0 test %rax,%rax 0.00 : 4a574e: 75 d6 jne 4a5726 0.00 : 4a5750: eb e1 jmp 4a5733 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:143 19.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:147 12.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:143 12.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:153 11.11 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:143 8.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:150 5.05 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:153 3.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:147 2.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:150 2.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:150 1.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:147 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:150 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bf4e0 : : * ExecIndexScan(node) : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecIndexScan(IndexScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:143 21.72 : 5bf4e0: 55 push %rbp 11.11 : 5bf4e1: 48 89 e5 mov %rsp,%rbp 0.00 : 5bf4e4: 53 push %rbx 12.12 : 5bf4e5: 48 89 fb mov %rdi,%rbx 0.00 : 5bf4e8: 48 83 ec 08 sub $0x8,%rsp : /* : * If we have runtime keys and they've not already been set up, do it now. : */ : if (node->iss_NumRuntimeKeys != 0 && !node->iss_RuntimeKeysReady) 0.00 : 5bf4ec: 44 8b 97 c0 00 00 00 mov 0xc0(%rdi),%r10d /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:147 19.70 : 5bf4f3: 45 85 d2 test %r10d,%r10d 0.00 : 5bf4f6: 74 09 je 5bf501 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:147 1.52 : 5bf4f8: 80 bf c4 00 00 00 00 cmpb $0x0,0xc4(%rdi) 3.54 : 5bf4ff: 74 1f je 5bf520 : ExecReScan((PlanState *) node); : : return ExecScan(&node->ss, : (ExecScanAccessMtd) IndexNext, : (ExecScanRecheckMtd) IndexRecheck); : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:153 5.05 : 5bf501: 48 83 c4 08 add $0x8,%rsp : * If we have runtime keys and they've not already been set up, do it now. : */ : if (node->iss_NumRuntimeKeys != 0 && !node->iss_RuntimeKeysReady) : ExecReScan((PlanState *) node); : : return ExecScan(&node->ss, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:150 2.02 : 5bf505: 48 89 df mov %rbx,%rdi 0.51 : 5bf508: ba 30 f5 5b 00 mov $0x5bf530,%edx : (ExecScanAccessMtd) IndexNext, : (ExecScanRecheckMtd) IndexRecheck); : } 0.00 : 5bf50d: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:153 12.12 : 5bf50e: c9 leaveq : * If we have runtime keys and they've not already been set up, do it now. : */ : if (node->iss_NumRuntimeKeys != 0 && !node->iss_RuntimeKeysReady) : ExecReScan((PlanState *) node); : : return ExecScan(&node->ss, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:150 8.08 : 5bf50f: be 70 f5 5b 00 mov $0x5bf570,%esi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:150 2.53 : 5bf514: e9 37 42 ff ff jmpq 5b3750 0.00 : 5bf519: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* : * If we have runtime keys and they've not already been set up, do it now. : */ : if (node->iss_NumRuntimeKeys != 0 && !node->iss_RuntimeKeysReady) : ExecReScan((PlanState *) node); 0.00 : 5bf520: e8 7b 8f fe ff callq 5a84a0 0.00 : 5bf525: eb da jmp 5bf501 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 57.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1306 9.20 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1303 6.13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1303 4.91 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1326 4.29 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1306 4.29 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1350 3.07 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1303 2.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1303 2.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1306 1.84 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1328 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1306 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1328 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1306 0.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1350 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ae1b0 <_bt_mark_scankey_required>: : * from scan to scan within a query, and so we'd just re-mark the same way : * anyway on a rescan. Something to keep an eye on though. : */ : static void : _bt_mark_scankey_required(ScanKey skey) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1303 3.07 : 4ae1b0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1303 9.20 : 4ae1b1: 48 89 e5 mov %rsp,%rbp 0.00 : 4ae1b4: 53 push %rbx 6.13 : 4ae1b5: 48 89 fb mov %rdi,%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1303 2.45 : 4ae1b8: 48 83 ec 08 sub $0x8,%rsp : int addflags; : : switch (skey->sk_strategy) 0.00 : 4ae1bc: 66 83 7f 06 05 cmpw $0x5,0x6(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1306 4.29 : 4ae1c1: 76 35 jbe 4ae1f8 <_bt_mark_scankey_required+0x48> : case BTGreaterEqualStrategyNumber: : case BTGreaterStrategyNumber: : addflags = SK_BT_REQBKWD; : break; : default: : elog(ERROR, "unrecognized StrategyNumber: %d", 0.00 : 4ae1c3: ba 80 4b 7b 00 mov $0x7b4b80,%edx 0.00 : 4ae1c8: be 29 05 00 00 mov $0x529,%esi 0.00 : 4ae1cd: bf 17 49 7b 00 mov $0x7b4917,%edi 0.00 : 4ae1d2: e8 49 d2 2c 00 callq 77b420 0.00 : 4ae1d7: 0f b7 53 06 movzwl 0x6(%rbx),%edx 0.00 : 4ae1db: be 78 49 7b 00 mov $0x7b4978,%esi 0.00 : 4ae1e0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ae1e5: 31 c0 xor %eax,%eax 0.00 : 4ae1e7: e8 44 d0 2c 00 callq 77b230 0.00 : 4ae1ec: e8 df b2 fb ff callq 4694d0 0.00 : 4ae1f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static void : _bt_mark_scankey_required(ScanKey skey) : { : int addflags; : : switch (skey->sk_strategy) 1.23 : 4ae1f8: 0f b7 47 06 movzwl 0x6(%rdi),%eax 2.45 : 4ae1fc: ff 24 c5 70 4a 7b 00 jmpq *0x7b4a70(,%rax,8) 0.00 : 4ae203: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.61 : 4ae208: be 00 00 02 00 mov $0x20000,%esi : (int) skey->sk_strategy); : addflags = 0; /* keep compiler quiet */ : break; : } : : skey->sk_flags |= addflags; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1326 4.91 : 4ae20d: 89 f0 mov %esi,%eax 0.00 : 4ae20f: 0b 03 or (%rbx),%eax : : if (skey->sk_flags & SK_ROW_HEADER) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1328 1.23 : 4ae211: a8 04 test $0x4,%al : (int) skey->sk_strategy); : addflags = 0; /* keep compiler quiet */ : break; : } : : skey->sk_flags |= addflags; 0.00 : 4ae213: 89 03 mov %eax,(%rbx) : : if (skey->sk_flags & SK_ROW_HEADER) 1.84 : 4ae215: 74 41 je 4ae258 <_bt_mark_scankey_required+0xa8> : { : ScanKey subkey = (ScanKey) DatumGetPointer(skey->sk_argument); 0.00 : 4ae217: 48 8b 53 40 mov 0x40(%rbx),%rdx : AttrNumber attno = skey->sk_attno; 0.00 : 4ae21b: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx : Assert(subkey->sk_attno == attno); : : for (;;) : { : Assert(subkey->sk_flags & SK_ROW_MEMBER); : if (subkey->sk_attno != attno) 0.00 : 4ae21f: 66 3b 4a 04 cmp 0x4(%rdx),%cx 0.00 : 4ae223: 74 25 je 4ae24a <_bt_mark_scankey_required+0x9a> 0.00 : 4ae225: eb 31 jmp 4ae258 <_bt_mark_scankey_required+0xa8> 0.00 : 4ae227: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae22e: 00 00 : break; /* non-adjacent key, so not required */ : if (subkey->sk_strategy != skey->sk_strategy) : break; /* wrong direction, so not required */ : subkey->sk_flags |= addflags; 0.00 : 4ae230: 89 f0 mov %esi,%eax 0.00 : 4ae232: 0b 02 or (%rdx),%eax : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ae234: a8 10 test $0x10,%al : Assert(subkey->sk_flags & SK_ROW_MEMBER); : if (subkey->sk_attno != attno) : break; /* non-adjacent key, so not required */ : if (subkey->sk_strategy != skey->sk_strategy) : break; /* wrong direction, so not required */ : subkey->sk_flags |= addflags; 0.00 : 4ae236: 89 02 mov %eax,(%rdx) : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ae238: 75 1e jne 4ae258 <_bt_mark_scankey_required+0xa8> : break; : subkey++; 0.00 : 4ae23a: 48 83 c2 48 add $0x48,%rdx : attno++; 0.00 : 4ae23e: 8d 41 01 lea 0x1(%rcx),%eax : Assert(subkey->sk_attno == attno); : : for (;;) : { : Assert(subkey->sk_flags & SK_ROW_MEMBER); : if (subkey->sk_attno != attno) 0.00 : 4ae241: 0f b7 4a 04 movzwl 0x4(%rdx),%ecx 0.00 : 4ae245: 66 39 c1 cmp %ax,%cx 0.00 : 4ae248: 75 0e jne 4ae258 <_bt_mark_scankey_required+0xa8> : break; /* non-adjacent key, so not required */ : if (subkey->sk_strategy != skey->sk_strategy) 0.00 : 4ae24a: 0f b7 42 06 movzwl 0x6(%rdx),%eax 0.00 : 4ae24e: 66 3b 43 06 cmp 0x6(%rbx),%ax 0.00 : 4ae252: 74 dc je 4ae230 <_bt_mark_scankey_required+0x80> 0.00 : 4ae254: 0f 1f 40 00 nopl 0x0(%rax) : break; : subkey++; : attno++; : } : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1350 0.61 : 4ae258: 48 83 c4 08 add $0x8,%rsp 0.00 : 4ae25c: 5b pop %rbx 0.00 : 4ae25d: c9 leaveq 4.29 : 4ae25e: c3 retq 0.00 : 4ae25f: 90 nop : static void : _bt_mark_scankey_required(ScanKey skey) : { : int addflags; : : switch (skey->sk_strategy) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1306 57.67 : 4ae260: be 00 00 03 00 mov $0x30000,%esi 0.00 : 4ae265: eb a6 jmp 4ae20d <_bt_mark_scankey_required+0x5d> 0.00 : 4ae267: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae26e: 00 00 : case BTGreaterEqualStrategyNumber: : case BTGreaterStrategyNumber: : addflags = SK_BT_REQBKWD; : break; : default: : elog(ERROR, "unrecognized StrategyNumber: %d", 0.00 : 4ae270: be 00 00 01 00 mov $0x10000,%esi 0.00 : 4ae275: eb 96 jmp 4ae20d <_bt_mark_scankey_required+0x5d> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4399 19.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4316 10.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4316 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4348 4.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4316 4.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 3.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4517 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4517 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4343 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4348 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4317 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4518 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4403 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4317 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4338 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4343 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4343 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4399 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4337 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4518 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4343 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4343 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007445b0 : : /* timestamp_part() : * Extract specified field from timestamp. : */ : Datum : timestamp_part(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4316 19.27 : 7445b0: 55 push %rbp 10.42 : 7445b1: 48 89 e5 mov %rsp,%rbp 0.00 : 7445b4: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4316 4.17 : 7445b6: 41 54 push %r12 0.00 : 7445b8: 53 push %rbx 0.00 : 7445b9: 48 89 fb mov %rdi,%rbx 0.00 : 7445bc: 48 83 ec 48 sub $0x48,%rsp : text *units = PG_GETARG_TEXT_PP(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4317 1.56 : 7445c0: 48 8b 7f 20 mov 0x20(%rdi),%rdi 1.04 : 7445c4: e8 17 a7 03 00 callq 77ece0 : Timestamp timestamp = PG_GETARG_TIMESTAMP(1); 0.00 : 7445c9: 48 8b 5b 28 mov 0x28(%rbx),%rbx : * Extract specified field from timestamp. : */ : Datum : timestamp_part(PG_FUNCTION_ARGS) : { : text *units = PG_GETARG_TEXT_PP(0); 0.00 : 7445cd: 48 89 c2 mov %rax,%rdx : char *lowunits; : fsec_t fsec; : struct pg_tm tt, : *tm = &tt; : : if (TIMESTAMP_NOT_FINITE(timestamp)) 0.00 : 7445d0: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 7445d7: 00 00 80 0.00 : 7445da: 48 39 c3 cmp %rax,%rbx 0.00 : 7445dd: 0f 84 e5 00 00 00 je 7446c8 0.00 : 7445e3: 48 83 e8 01 sub $0x1,%rax 0.00 : 7445e7: 48 39 c3 cmp %rax,%rbx 0.00 : 7445ea: 0f 84 d8 00 00 00 je 7446c8 : { : result = 0; : PG_RETURN_FLOAT8(result); : } : : lowunits = downcase_truncate_identifier(VARDATA_ANY(units), /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 1.04 : 7445f0: 0f b6 02 movzbl (%rdx),%eax 0.00 : 7445f3: 3c 01 cmp $0x1,%al 0.00 : 7445f5: 0f 84 a5 00 00 00 je 7446a0 0.52 : 7445fb: a8 01 test $0x1,%al 1.56 : 7445fd: 0f 84 dd 00 00 00 je 7446e0 0.00 : 744603: d0 e8 shr %al 0.00 : 744605: 0f b6 c0 movzbl %al,%eax 0.00 : 744608: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 74460b: 48 8d 7a 01 lea 0x1(%rdx),%rdi : VARSIZE_ANY_EXHDR(units), : false); : : type = DecodeUnits(0, lowunits, &val); 0.00 : 74460f: 4c 8d 65 dc lea -0x24(%rbp),%r12 : { : result = 0; : PG_RETURN_FLOAT8(result); : } : : lowunits = downcase_truncate_identifier(VARDATA_ANY(units), 0.00 : 744613: 31 d2 xor %edx,%edx 0.00 : 744615: e8 a6 38 e0 ff callq 547ec0 : VARSIZE_ANY_EXHDR(units), : false); : : type = DecodeUnits(0, lowunits, &val); 0.00 : 74461a: 31 ff xor %edi,%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4337 0.52 : 74461c: 4c 89 e2 mov %r12,%rdx 0.00 : 74461f: 48 89 c6 mov %rax,%rsi : { : result = 0; : PG_RETURN_FLOAT8(result); : } : : lowunits = downcase_truncate_identifier(VARDATA_ANY(units), 0.00 : 744622: 49 89 c5 mov %rax,%r13 : VARSIZE_ANY_EXHDR(units), : false); : : type = DecodeUnits(0, lowunits, &val); 0.00 : 744625: e8 76 62 f8 ff callq 6ca8a0 : if (type == UNKNOWN_FIELD) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4338 1.04 : 74462a: 83 f8 1f cmp $0x1f,%eax 0.00 : 74462d: 0f 84 fd 01 00 00 je 744830 : type = DecodeSpecial(0, lowunits, &val); : : if (type == UNITS) 0.00 : 744633: 83 f8 11 cmp $0x11,%eax 0.00 : 744636: 0f 84 b4 01 00 00 je 7447f0 : errmsg("timestamp units \"%s\" not supported", : lowunits))); : result = 0; : } : } : else if (type == RESERV) 0.00 : 74463c: 85 c0 test %eax,%eax 0.00 : 74463e: 66 90 xchg %ax,%ax 0.00 : 744640: 0f 85 ed 03 00 00 jne 744a33 : { : switch (val) 0.00 : 744646: 8b 45 dc mov -0x24(%rbp),%eax 0.00 : 744649: 83 f8 21 cmp $0x21,%eax 0.00 : 74464c: 0f 84 4e 01 00 00 je 7447a0 0.00 : 744652: 0f 8f a0 00 00 00 jg 7446f8 0.00 : 744658: 83 f8 0b cmp $0xb,%eax 0.00 : 74465b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 744660: 0f 84 0a 01 00 00 je 744770 0.00 : 744666: 83 f8 20 cmp $0x20,%eax 0.00 : 744669: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 744670: 0f 84 8b 00 00 00 je 744701 : result = (date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) : - date2j(tm->tm_year, 1, 1) + 1); : break; : : default: : ereport(ERROR, 0.00 : 744676: 45 31 c0 xor %r8d,%r8d 0.00 : 744679: b9 81 9f 8c 00 mov $0x8c9f81,%ecx 0.00 : 74467e: ba 98 11 00 00 mov $0x1198,%edx 0.00 : 744683: be 17 94 8c 00 mov $0x8c9417,%esi 0.00 : 744688: bf 14 00 00 00 mov $0x14,%edi 0.00 : 74468d: e8 2e 64 03 00 callq 77aac0 0.00 : 744692: 84 c0 test %al,%al 0.00 : 744694: 0f 85 6e 03 00 00 jne 744a08 : } : : } : else : { : ereport(ERROR, 0.00 : 74469a: e8 31 4e d2 ff callq 4694d0 0.00 : 74469f: 90 nop : { : result = 0; : PG_RETURN_FLOAT8(result); : } : : lowunits = downcase_truncate_identifier(VARDATA_ANY(units), 0.00 : 7446a0: 0f b6 42 01 movzbl 0x1(%rdx),%eax 0.00 : 7446a4: be 08 00 00 00 mov $0x8,%esi 0.00 : 7446a9: 3c 01 cmp $0x1,%al 0.00 : 7446ab: 0f 84 5a ff ff ff je 74460b 0.00 : 7446b1: 3c 12 cmp $0x12,%al 0.00 : 7446b3: 40 b6 10 mov $0x10,%sil 0.00 : 7446b6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 7446bb: 0f 45 f0 cmovne %eax,%esi 0.00 : 7446be: e9 48 ff ff ff jmpq 74460b 0.00 : 7446c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : *tm = &tt; : : if (TIMESTAMP_NOT_FINITE(timestamp)) : { : result = 0; : PG_RETURN_FLOAT8(result); 0.00 : 7446c8: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 7446cc: e8 ef 92 03 00 callq 77d9c0 : errmsg("timestamp units \"%s\" not recognized", lowunits))); : result = 0; : } : : PG_RETURN_FLOAT8(result); : } 0.00 : 7446d1: 48 83 c4 48 add $0x48,%rsp 0.00 : 7446d5: 5b pop %rbx 0.00 : 7446d6: 41 5c pop %r12 0.00 : 7446d8: 41 5d pop %r13 0.00 : 7446da: c9 leaveq 0.00 : 7446db: c3 retq 0.00 : 7446dc: 0f 1f 40 00 nopl 0x0(%rax) : { : result = 0; : PG_RETURN_FLOAT8(result); : } : : lowunits = downcase_truncate_identifier(VARDATA_ANY(units), /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 4.17 : 7446e0: 8b 02 mov (%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 5.21 : 7446e2: 48 8d 7a 04 lea 0x4(%rdx),%rdi 0.00 : 7446e6: c1 e8 02 shr $0x2,%eax 0.00 : 7446e9: 8d 70 fc lea -0x4(%rax),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4333 1.56 : 7446ec: e9 1e ff ff ff jmpq 74460f 0.00 : 7446f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : result = 0; : } : } : else if (type == RESERV) : { : switch (val) 0.00 : 7446f8: 83 f8 25 cmp $0x25,%eax 0.00 : 7446fb: 0f 85 75 ff ff ff jne 744676 : #endif : break; : : case DTK_DOW: : case DTK_ISODOW: : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) 0.00 : 744701: 48 8d 4d d8 lea -0x28(%rbp),%rcx 0.00 : 744705: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 744709: 45 31 c9 xor %r9d,%r9d 0.00 : 74470c: 45 31 c0 xor %r8d,%r8d 0.00 : 74470f: 31 f6 xor %esi,%esi 0.00 : 744711: 48 89 df mov %rbx,%rdi 0.00 : 744714: e8 87 ed ff ff callq 7434a0 0.00 : 744719: 85 c0 test %eax,%eax 0.00 : 74471b: 0f 85 b9 03 00 00 jne 744ada : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday)); 0.00 : 744721: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 744724: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 744727: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 74472a: e8 f1 55 f8 ff callq 6c9d20 0.00 : 74472f: 89 c7 mov %eax,%edi 0.00 : 744731: e8 8a 57 f8 ff callq 6c9ec0 : if (val == DTK_ISODOW && result == 0) 0.00 : 744736: 83 7d dc 25 cmpl $0x25,-0x24(%rbp) : case DTK_ISODOW: : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday)); 0.00 : 74473a: f2 0f 2a d8 cvtsi2sd %eax,%xmm3 : if (val == DTK_ISODOW && result == 0) 0.00 : 74473e: 75 45 jne 744785 : } : : } : else : { : ereport(ERROR, 0.00 : 744740: 66 0f 28 c3 movapd %xmm3,%xmm0 0.00 : 744744: 66 0f 28 d3 movapd %xmm3,%xmm2 0.00 : 744748: f2 0f 10 0d 30 5c 18 movsd 0x185c30(%rip),%xmm1 # 8ca380 <__func__.17278+0x30> 0.00 : 74474f: 00 0.00 : 744750: f2 0f c2 05 7f db 06 cmpneqsd 0x6db7f(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 744757: 00 04 0.00 : 744759: 66 0f 28 d8 movapd %xmm0,%xmm3 0.00 : 74475d: 66 0f 54 d0 andpd %xmm0,%xmm2 0.00 : 744761: 66 0f 55 d9 andnpd %xmm1,%xmm3 0.00 : 744765: 66 0f 56 da orpd %xmm2,%xmm3 0.00 : 744769: eb 1a jmp 744785 0.00 : 74476b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : switch (val) : { : case DTK_EPOCH: : #ifdef HAVE_INT64_TIMESTAMP : result = (timestamp - SetEpochTimestamp()) / 1000000.0; 0.00 : 744770: e8 fb ec ff ff callq 743470 0.00 : 744775: 48 29 c3 sub %rax,%rbx 0.00 : 744778: f2 48 0f 2a db cvtsi2sd %rbx,%xmm3 0.00 : 74477d: f2 0f 5e 1d 5b 7e 13 divsd 0x137e5b(%rip),%xmm3 # 87c5e0 <__func__.18742+0x1b> 0.00 : 744784: 00 : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("timestamp units \"%s\" not recognized", lowunits))); : result = 0; : } : : PG_RETURN_FLOAT8(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4517 3.65 : 744785: 66 0f 28 c3 movapd %xmm3,%xmm0 3.12 : 744789: e8 32 92 03 00 callq 77d9c0 : } 0.00 : 74478e: 48 83 c4 48 add $0x48,%rsp 0.00 : 744792: 5b pop %rbx 0.00 : 744793: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4518 0.52 : 744795: 41 5d pop %r13 0.00 : 744797: c9 leaveq 1.56 : 744798: c3 retq 0.00 : 744799: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (val == DTK_ISODOW && result == 0) : result = 7; : break; : : case DTK_DOY: : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) 0.00 : 7447a0: 48 8d 4d d8 lea -0x28(%rbp),%rcx 0.00 : 7447a4: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 7447a8: 45 31 c9 xor %r9d,%r9d 0.00 : 7447ab: 45 31 c0 xor %r8d,%r8d 0.00 : 7447ae: 31 f6 xor %esi,%esi 0.00 : 7447b0: 48 89 df mov %rbx,%rdi 0.00 : 7447b3: e8 e8 ec ff ff callq 7434a0 0.00 : 7447b8: 85 c0 test %eax,%eax 0.00 : 7447ba: 0f 85 56 03 00 00 jne 744b16 : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : result = (date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) 0.00 : 7447c0: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 7447c3: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 7447c6: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 7447c9: e8 52 55 f8 ff callq 6c9d20 0.00 : 7447ce: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 7447d1: 89 c3 mov %eax,%ebx 0.00 : 7447d3: ba 01 00 00 00 mov $0x1,%edx 0.00 : 7447d8: be 01 00 00 00 mov $0x1,%esi 0.00 : 7447dd: e8 3e 55 f8 ff callq 6c9d20 0.00 : 7447e2: 8d 53 01 lea 0x1(%rbx),%edx 0.00 : 7447e5: 29 c2 sub %eax,%edx 0.00 : 7447e7: f2 0f 2a da cvtsi2sd %edx,%xmm3 : - date2j(tm->tm_year, 1, 1) + 1); : break; 0.00 : 7447eb: eb 98 jmp 744785 0.00 : 7447ed: 0f 1f 00 nopl (%rax) : if (type == UNKNOWN_FIELD) : type = DecodeSpecial(0, lowunits, &val); : : if (type == UNITS) : { : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4343 2.08 : 7447f0: 48 8d 4d d8 lea -0x28(%rbp),%rcx 1.04 : 7447f4: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 7447f8: 45 31 c9 xor %r9d,%r9d 0.00 : 7447fb: 45 31 c0 xor %r8d,%r8d 0.52 : 7447fe: 31 f6 xor %esi,%esi 0.52 : 744800: 48 89 df mov %rbx,%rdi 1.04 : 744803: e8 98 ec ff ff callq 7434a0 0.00 : 744808: 85 c0 test %eax,%eax 0.00 : 74480a: 0f 85 15 03 00 00 jne 744b25 : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : : switch (val) 0.00 : 744810: 8b 45 dc mov -0x24(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4348 5.21 : 744813: 83 e8 12 sub $0x12,%eax 0.00 : 744816: 83 f8 12 cmp $0x12,%eax 0.00 : 744819: 76 2d jbe 744848 : : case DTK_TZ: : case DTK_TZ_MINUTE: : case DTK_TZ_HOUR: : default: : ereport(ERROR, 0.00 : 74481b: 45 31 c0 xor %r8d,%r8d 0.00 : 74481e: b9 81 9f 8c 00 mov $0x8c9f81,%ecx 0.00 : 744823: ba 70 11 00 00 mov $0x1170,%edx 0.00 : 744828: e9 56 fe ff ff jmpq 744683 0.00 : 74482d: 0f 1f 00 nopl (%rax) : VARSIZE_ANY_EXHDR(units), : false); : : type = DecodeUnits(0, lowunits, &val); : if (type == UNKNOWN_FIELD) : type = DecodeSpecial(0, lowunits, &val); 0.00 : 744830: 4c 89 e2 mov %r12,%rdx 0.00 : 744833: 4c 89 ee mov %r13,%rsi 0.00 : 744836: 31 ff xor %edi,%edi 0.00 : 744838: e8 33 61 f8 ff callq 6ca970 0.00 : 74483d: e9 f1 fd ff ff jmpq 744633 0.00 : 744842: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : : switch (val) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4348 2.08 : 744848: 89 c0 mov %eax,%eax 0.00 : 74484a: ff 24 c5 58 9c 8c 00 jmpq *0x8c9c58(,%rax,8) : tm->tm_sec + fsec) / (double) SECS_PER_DAY; : #endif : break; : : case DTK_ISOYEAR: : result = date2isoyear(tm->tm_year, tm->tm_mon, tm->tm_mday); 0.00 : 744851: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 744854: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 744857: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 74485a: e8 51 e1 ff ff callq 7429b0 0.00 : 74485f: f2 0f 2a d8 cvtsi2sd %eax,%xmm3 : break; 0.00 : 744863: e9 1d ff ff ff jmpq 744785 : else : result = -((999 - (tm->tm_year - 1)) / 1000); : break; : : case DTK_JULIAN: : result = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday); 0.00 : 744868: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 74486b: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 74486e: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 744871: e8 aa 54 f8 ff callq 6c9d20 : #ifdef HAVE_INT64_TIMESTAMP : result += ((((tm->tm_hour * MINS_PER_HOUR) + tm->tm_min) * SECS_PER_MINUTE) + 0.00 : 744876: f2 0f 2a 45 d8 cvtsi2sdl -0x28(%rbp),%xmm0 : else : result = -((999 - (tm->tm_year - 1)) / 1000); : break; : : case DTK_JULIAN: : result = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday); 0.00 : 74487b: f2 0f 2a c8 cvtsi2sd %eax,%xmm1 : #ifdef HAVE_INT64_TIMESTAMP : result += ((((tm->tm_hour * MINS_PER_HOUR) + tm->tm_min) * SECS_PER_MINUTE) + 0.00 : 74487f: f2 0f 5e 05 59 7d 13 divsd 0x137d59(%rip),%xmm0 # 87c5e0 <__func__.18742+0x1b> 0.00 : 744886: 00 0.00 : 744887: 8b 45 a8 mov -0x58(%rbp),%eax 0.00 : 74488a: 41 b9 3c 00 00 00 mov $0x3c,%r9d 0.00 : 744890: 41 b8 3c 00 00 00 mov $0x3c,%r8d 0.00 : 744896: 41 0f af c1 imul %r9d,%eax 0.00 : 74489a: 03 45 a4 add -0x5c(%rbp),%eax 0.00 : 74489d: 41 0f af c0 imul %r8d,%eax 0.00 : 7448a1: 03 45 a0 add -0x60(%rbp),%eax 0.00 : 7448a4: f2 0f 2a d8 cvtsi2sd %eax,%xmm3 0.00 : 7448a8: f2 0f 58 d8 addsd %xmm0,%xmm3 0.00 : 7448ac: f2 0f 5e 1d 14 ef 17 divsd 0x17ef14(%rip),%xmm3 # 8c37c8 <__func__.12046+0x1c> 0.00 : 7448b3: 00 0.00 : 7448b4: f2 0f 58 d9 addsd %xmm1,%xmm3 : tm->tm_sec + (fsec / 1000000.0)) / (double) SECS_PER_DAY; : #else : result += ((((tm->tm_hour * MINS_PER_HOUR) + tm->tm_min) * SECS_PER_MINUTE) + : tm->tm_sec + fsec) / (double) SECS_PER_DAY; : #endif : break; 0.00 : 7448b8: e9 c8 fe ff ff jmpq 744785 : : switch (val) : { : case DTK_MICROSEC: : #ifdef HAVE_INT64_TIMESTAMP : result = tm->tm_sec * 1000000.0 + fsec; 0.00 : 7448bd: f2 0f 2a 5d a0 cvtsi2sdl -0x60(%rbp),%xmm3 0.00 : 7448c2: f2 0f 59 1d 16 7d 13 mulsd 0x137d16(%rip),%xmm3 # 87c5e0 <__func__.18742+0x1b> 0.00 : 7448c9: 00 0.00 : 7448ca: f2 0f 2a 45 d8 cvtsi2sdl -0x28(%rbp),%xmm0 0.00 : 7448cf: f2 0f 58 d8 addsd %xmm0,%xmm3 : #else : result = (tm->tm_sec + fsec) * 1000000; : #endif : break; 0.00 : 7448d3: e9 ad fe ff ff jmpq 744785 : : case DTK_MILLISEC: : #ifdef HAVE_INT64_TIMESTAMP : result = tm->tm_sec * 1000.0 + fsec / 1000.0; 0.00 : 7448d8: f2 0f 10 0d f8 7c 13 movsd 0x137cf8(%rip),%xmm1 # 87c5d8 <__func__.18742+0x13> 0.00 : 7448df: 00 0.00 : 7448e0: f2 0f 2a 45 d8 cvtsi2sdl -0x28(%rbp),%xmm0 0.00 : 7448e5: f2 0f 2a 5d a0 cvtsi2sdl -0x60(%rbp),%xmm3 0.00 : 7448ea: f2 0f 5e c1 divsd %xmm1,%xmm0 0.00 : 7448ee: f2 0f 59 d9 mulsd %xmm1,%xmm3 0.00 : 7448f2: f2 0f 58 d8 addsd %xmm0,%xmm3 : #else : result = (tm->tm_sec + fsec) * 1000; : #endif : break; 0.00 : 7448f6: e9 8a fe ff ff jmpq 744785 : result = -((99 - (tm->tm_year - 1)) / 100); : break; : : case DTK_MILLENNIUM: : /* see comments above. */ : if (tm->tm_year > 0) 0.00 : 7448fb: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 7448fe: 85 d2 test %edx,%edx 0.00 : 744900: 0f 8e 69 01 00 00 jle 744a6f : result = (tm->tm_year + 999) / 1000; 0.00 : 744906: 8d 8a e7 03 00 00 lea 0x3e7(%rdx),%ecx 0.00 : 74490c: ba d3 4d 62 10 mov $0x10624dd3,%edx 0.00 : 744911: 89 c8 mov %ecx,%eax 0.00 : 744913: c1 f9 1f sar $0x1f,%ecx 0.00 : 744916: f7 ea imul %edx 0.00 : 744918: c1 fa 06 sar $0x6,%edx 0.00 : 74491b: 29 ca sub %ecx,%edx 0.00 : 74491d: f2 0f 2a da cvtsi2sd %edx,%xmm3 0.00 : 744921: e9 5f fe ff ff jmpq 744785 : * centuries AD, c>0: year in [ (c-1)* 100 + 1 : c*100 ] : * centuries BC, c<0: year in [ c*100 : (c+1) * 100 - 1] : * there is no number 0 century. : * ---- : */ : if (tm->tm_year > 0) 0.00 : 744926: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 744929: 85 d2 test %edx,%edx 0.00 : 74492b: 0f 8e 67 01 00 00 jle 744a98 : result = (tm->tm_year + 99) / 100; 0.00 : 744931: 8d 4a 63 lea 0x63(%rdx),%ecx 0.00 : 744934: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 744939: 89 c8 mov %ecx,%eax 0.00 : 74493b: c1 f9 1f sar $0x1f,%ecx 0.00 : 74493e: f7 ea imul %edx 0.00 : 744940: c1 fa 05 sar $0x5,%edx 0.00 : 744943: 29 ca sub %ecx,%edx 0.00 : 744945: f2 0f 2a da cvtsi2sd %edx,%xmm3 0.00 : 744949: e9 37 fe ff ff jmpq 744785 : case DTK_WEEK: : result = (float8) date2isoweek(tm->tm_year, tm->tm_mon, tm->tm_mday); : break; : : case DTK_YEAR: : if (tm->tm_year > 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4399 23.96 : 74494e: 8b 45 b4 mov -0x4c(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4399 1.04 : 744951: 85 c0 test %eax,%eax 0.00 : 744953: 0f 8e 37 01 00 00 jle 744a90 : result = tm->tm_year; : else : /* there is no year 0, just 1 BC and 1 AD */ : result = tm->tm_year - 1; 0.00 : 744959: f2 0f 2a d8 cvtsi2sd %eax,%xmm3 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:4403 1.56 : 74495d: e9 23 fe ff ff jmpq 744785 : /* : * what is a decade wrt dates? let us assume that decade 199 : * is 1990 thru 1999... decade 0 starts on year 1 BC, and -1 : * is 11 BC thru 2 BC... : */ : if (tm->tm_year >= 0) 0.00 : 744962: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 744965: 85 c9 test %ecx,%ecx 0.00 : 744967: 0f 88 4c 01 00 00 js 744ab9 : result = tm->tm_year / 10; 0.00 : 74496d: 89 c8 mov %ecx,%eax 0.00 : 74496f: ba 67 66 66 66 mov $0x66666667,%edx 0.00 : 744974: c1 f9 1f sar $0x1f,%ecx 0.00 : 744977: f7 ea imul %edx 0.00 : 744979: c1 fa 02 sar $0x2,%edx 0.00 : 74497c: 29 ca sub %ecx,%edx 0.00 : 74497e: f2 0f 2a da cvtsi2sd %edx,%xmm3 0.00 : 744982: e9 fe fd ff ff jmpq 744785 : case DTK_MONTH: : result = tm->tm_mon; : break; : : case DTK_QUARTER: : result = (tm->tm_mon - 1) / 3 + 1; 0.00 : 744987: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 74498a: ba 56 55 55 55 mov $0x55555556,%edx 0.00 : 74498f: 8d 48 ff lea -0x1(%rax),%ecx 0.00 : 744992: 89 c8 mov %ecx,%eax 0.00 : 744994: c1 f9 1f sar $0x1f,%ecx 0.00 : 744997: f7 ea imul %edx 0.00 : 744999: 29 ca sub %ecx,%edx 0.00 : 74499b: 83 c2 01 add $0x1,%edx 0.00 : 74499e: f2 0f 2a da cvtsi2sd %edx,%xmm3 : break; 0.00 : 7449a2: e9 de fd ff ff jmpq 744785 : case DTK_DAY: : result = tm->tm_mday; : break; : : case DTK_MONTH: : result = tm->tm_mon; 0.00 : 7449a7: f2 0f 2a 5d b0 cvtsi2sdl -0x50(%rbp),%xmm3 : break; 0.00 : 7449ac: e9 d4 fd ff ff jmpq 744785 : case DTK_QUARTER: : result = (tm->tm_mon - 1) / 3 + 1; : break; : : case DTK_WEEK: : result = (float8) date2isoweek(tm->tm_year, tm->tm_mon, tm->tm_mday); 0.00 : 7449b1: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 7449b4: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 7449b7: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 7449ba: e8 e1 e0 ff ff callq 742aa0 0.00 : 7449bf: f2 0f 2a d8 cvtsi2sd %eax,%xmm3 : break; 0.00 : 7449c3: e9 bd fd ff ff jmpq 744785 : case DTK_HOUR: : result = tm->tm_hour; : break; : : case DTK_DAY: : result = tm->tm_mday; 0.00 : 7449c8: f2 0f 2a 5d ac cvtsi2sdl -0x54(%rbp),%xmm3 : break; 0.00 : 7449cd: e9 b3 fd ff ff jmpq 744785 : case DTK_MINUTE: : result = tm->tm_min; : break; : : case DTK_HOUR: : result = tm->tm_hour; 0.00 : 7449d2: f2 0f 2a 5d a8 cvtsi2sdl -0x58(%rbp),%xmm3 : break; 0.00 : 7449d7: e9 a9 fd ff ff jmpq 744785 : result = tm->tm_sec + fsec; : #endif : break; : : case DTK_MINUTE: : result = tm->tm_min; 0.00 : 7449dc: f2 0f 2a 5d a4 cvtsi2sdl -0x5c(%rbp),%xmm3 : break; 0.00 : 7449e1: e9 9f fd ff ff jmpq 744785 : #endif : break; : : case DTK_SECOND: : #ifdef HAVE_INT64_TIMESTAMP : result = tm->tm_sec + fsec / 1000000.0; 0.00 : 7449e6: f2 0f 2a 45 d8 cvtsi2sdl -0x28(%rbp),%xmm0 0.00 : 7449eb: f2 0f 5e 05 ed 7b 13 divsd 0x137bed(%rip),%xmm0 # 87c5e0 <__func__.18742+0x1b> 0.00 : 7449f2: 00 0.00 : 7449f3: f2 0f 2a 5d a0 cvtsi2sdl -0x60(%rbp),%xmm3 0.00 : 7449f8: f2 0f 58 d8 addsd %xmm0,%xmm3 : #else : result = tm->tm_sec + fsec; : #endif : break; 0.00 : 7449fc: e9 84 fd ff ff jmpq 744785 0.00 : 744a01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : result = (date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) : - date2j(tm->tm_year, 1, 1) + 1); : break; : : default: : ereport(ERROR, 0.00 : 744a08: bf 50 97 8c 00 mov $0x8c9750,%edi 0.00 : 744a0d: 4c 89 ee mov %r13,%rsi 0.00 : 744a10: 31 c0 xor %eax,%eax 0.00 : 744a12: e8 89 7e 03 00 callq 77c8a0 0.00 : 744a17: bf 40 04 00 00 mov $0x440,%edi 0.00 : 744a1c: 89 c3 mov %eax,%ebx : } : : } : else : { : ereport(ERROR, 0.00 : 744a1e: e8 2d 83 03 00 callq 77cd50 0.00 : 744a23: 89 de mov %ebx,%esi 0.00 : 744a25: 89 c7 mov %eax,%edi 0.00 : 744a27: 31 c0 xor %eax,%eax 0.00 : 744a29: e8 b2 5b 03 00 callq 77a5e0 0.00 : 744a2e: e9 67 fc ff ff jmpq 74469a 0.00 : 744a33: 45 31 c0 xor %r8d,%r8d 0.00 : 744a36: b9 81 9f 8c 00 mov $0x8c9f81,%ecx 0.00 : 744a3b: ba a1 11 00 00 mov $0x11a1,%edx 0.00 : 744a40: be 17 94 8c 00 mov $0x8c9417,%esi 0.00 : 744a45: bf 14 00 00 00 mov $0x14,%edi 0.00 : 744a4a: e8 71 60 03 00 callq 77aac0 0.00 : 744a4f: 84 c0 test %al,%al 0.00 : 744a51: 0f 84 43 fc ff ff je 74469a 0.00 : 744a57: bf 78 97 8c 00 mov $0x8c9778,%edi 0.00 : 744a5c: 4c 89 ee mov %r13,%rsi 0.00 : 744a5f: 31 c0 xor %eax,%eax 0.00 : 744a61: e8 3a 7e 03 00 callq 77c8a0 0.00 : 744a66: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 744a6b: 89 c3 mov %eax,%ebx 0.00 : 744a6d: eb af jmp 744a1e : case DTK_MILLENNIUM: : /* see comments above. */ : if (tm->tm_year > 0) : result = (tm->tm_year + 999) / 1000; : else : result = -((999 - (tm->tm_year - 1)) / 1000); 0.00 : 744a6f: b9 e8 03 00 00 mov $0x3e8,%ecx 0.00 : 744a74: 29 d1 sub %edx,%ecx 0.00 : 744a76: ba d3 4d 62 10 mov $0x10624dd3,%edx 0.00 : 744a7b: 89 c8 mov %ecx,%eax 0.00 : 744a7d: c1 f9 1f sar $0x1f,%ecx 0.00 : 744a80: f7 ea imul %edx 0.00 : 744a82: c1 fa 06 sar $0x6,%edx 0.00 : 744a85: 29 d1 sub %edx,%ecx 0.00 : 744a87: f2 0f 2a d9 cvtsi2sd %ecx,%xmm3 0.00 : 744a8b: e9 f5 fc ff ff jmpq 744785 : case DTK_YEAR: : if (tm->tm_year > 0) : result = tm->tm_year; : else : /* there is no year 0, just 1 BC and 1 AD */ : result = tm->tm_year - 1; 0.00 : 744a90: 83 e8 01 sub $0x1,%eax 0.00 : 744a93: e9 c1 fe ff ff jmpq 744959 : */ : if (tm->tm_year > 0) : result = (tm->tm_year + 99) / 100; : else : /* caution: C division may have negative remainder */ : result = -((99 - (tm->tm_year - 1)) / 100); 0.00 : 744a98: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 744a9d: 29 d1 sub %edx,%ecx 0.00 : 744a9f: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 744aa4: 89 c8 mov %ecx,%eax 0.00 : 744aa6: c1 f9 1f sar $0x1f,%ecx 0.00 : 744aa9: f7 ea imul %edx 0.00 : 744aab: c1 fa 05 sar $0x5,%edx 0.00 : 744aae: 29 d1 sub %edx,%ecx 0.00 : 744ab0: f2 0f 2a d9 cvtsi2sd %ecx,%xmm3 0.00 : 744ab4: e9 cc fc ff ff jmpq 744785 : * is 11 BC thru 2 BC... : */ : if (tm->tm_year >= 0) : result = tm->tm_year / 10; : else : result = -((8 - (tm->tm_year - 1)) / 10); 0.00 : 744ab9: be 09 00 00 00 mov $0x9,%esi 0.00 : 744abe: ba 67 66 66 66 mov $0x66666667,%edx 0.00 : 744ac3: 29 ce sub %ecx,%esi 0.00 : 744ac5: 89 f0 mov %esi,%eax 0.00 : 744ac7: c1 fe 1f sar $0x1f,%esi 0.00 : 744aca: f7 ea imul %edx 0.00 : 744acc: c1 fa 02 sar $0x2,%edx 0.00 : 744acf: 29 d6 sub %edx,%esi 0.00 : 744ad1: f2 0f 2a de cvtsi2sd %esi,%xmm3 0.00 : 744ad5: e9 ab fc ff ff jmpq 744785 : break; : : case DTK_DOW: : case DTK_ISODOW: : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) : ereport(ERROR, 0.00 : 744ada: 45 31 c0 xor %r8d,%r8d 0.00 : 744add: b9 81 9f 8c 00 mov $0x8c9f81,%ecx 0.00 : 744ae2: ba 85 11 00 00 mov $0x1185,%edx : result = 7; : break; : : case DTK_DOY: : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) : ereport(ERROR, 0.00 : 744ae7: be 17 94 8c 00 mov $0x8c9417,%esi 0.00 : 744aec: bf 14 00 00 00 mov $0x14,%edi 0.00 : 744af1: e8 ca 5f 03 00 callq 77aac0 0.00 : 744af6: 84 c0 test %al,%al 0.00 : 744af8: 0f 84 9c fb ff ff je 74469a 0.00 : 744afe: bf f8 94 8b 00 mov $0x8b94f8,%edi 0.00 : 744b03: 31 c0 xor %eax,%eax 0.00 : 744b05: e8 96 7d 03 00 callq 77c8a0 0.00 : 744b0a: bf 82 00 00 08 mov $0x8000082,%edi 0.00 : 744b0f: 89 c3 mov %eax,%ebx 0.00 : 744b11: e9 08 ff ff ff jmpq 744a1e 0.00 : 744b16: 45 31 c0 xor %r8d,%r8d 0.00 : 744b19: b9 81 9f 8c 00 mov $0x8c9f81,%ecx 0.00 : 744b1e: ba 8f 11 00 00 mov $0x118f,%edx 0.00 : 744b23: eb c2 jmp 744ae7 : type = DecodeSpecial(0, lowunits, &val); : : if (type == UNITS) : { : if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0) : ereport(ERROR, 0.00 : 744b25: 45 31 c0 xor %r8d,%r8d 0.00 : 744b28: b9 81 9f 8c 00 mov $0x8c9f81,%ecx 0.00 : 744b2d: ba fa 10 00 00 mov $0x10fa,%edx 0.00 : 744b32: eb b3 jmp 744ae7 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 33.33 ??:0 7.84 ??:0 6.86 ??:0 4.90 ??:0 4.90 ??:0 2.94 ??:0 2.94 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007f90 : : * Returns true if all work is completed without reaching budget : **/ : static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector, : struct ixgbe_ring *rx_ring, : int budget) : { 0.00 : 7f90: 41 57 push %r15 : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; : u16 ntu = ring->next_to_use; : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; ??:0 7.84 : 7f92: 31 c9 xor %ecx,%ecx 0.00 : 7f94: 41 56 push %r14 ??:0 1.96 : 7f96: 41 55 push %r13 0.00 : 7f98: 41 54 push %r12 0.00 : 7f9a: 55 push %rbp 0.00 : 7f9b: 48 89 f5 mov %rsi,%rbp 0.00 : 7f9e: 53 push %rbx 0.98 : 7f9f: 48 83 ec 28 sub $0x28,%rsp 0.00 : 7fa3: 48 89 7c 24 08 mov %rdi,0x8(%rsp) 0.00 : 7fa8: 89 54 24 04 mov %edx,0x4(%rsp) : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 7fac: 0f b7 46 52 movzwl 0x52(%rsi),%eax : u16 ntu = ring->next_to_use; 1.96 : 7fb0: 0f b7 56 50 movzwl 0x50(%rsi),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.98 : 7fb4: 66 39 d0 cmp %dx,%ax 0.00 : 7fb7: 77 04 ja 7fbd 0.00 : 7fb9: 0f b7 4e 4c movzwl 0x4c(%rsi),%ecx 0.98 : 7fbd: 83 e8 01 sub $0x1,%eax : rx_ring->next_to_clean = ntc; : : prefetch(IXGBE_RX_DESC(rx_ring, ntc)); : : /* update RSC append count if present */ : if (ring_is_rsc_enabled(rx_ring)) { 0.00 : 7fc0: 4c 8d 7d 30 lea 0x30(%rbp),%r15 : else : #endif : #ifdef HAVE_VLAN_RX_REGISTER : ixgbe_receive_skb(q_vector, skb); : #else : napi_gro_receive(&q_vector->napi, skb); 0.00 : 7fc4: c7 44 24 14 00 00 00 movl $0x0,0x14(%rsp) 0.00 : 7fcb: 00 0.00 : 7fcc: 66 29 d0 sub %dx,%ax 0.00 : 7fcf: c7 44 24 18 00 00 00 movl $0x0,0x18(%rsp) 0.00 : 7fd6: 00 0.98 : 7fd7: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 7fde: 00 0.00 : 7fdf: 44 8d 2c 08 lea (%rax,%rcx,1),%r13d 0.00 : 7fe3: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.98 : 7fe8: 48 83 c0 40 add $0x40,%rax 0.98 : 7fec: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 7ff1: eb 7e jmp 8071 0.00 : 7ff3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : struct sk_buff *next_skb; : #endif : u32 ntc = rx_ring->next_to_clean + 1; : : /* fetch, update, and store next to clean */ : ntc = (ntc < rx_ring->count) ? ntc : 0; 0.00 : 7ff8: 31 d2 xor %edx,%edx 0.00 : 7ffa: 31 c9 xor %ecx,%ecx 0.00 : 7ffc: 31 c0 xor %eax,%eax : rx_ring->next_to_clean = ntc; 0.98 : 7ffe: 66 89 4d 52 mov %cx,0x52(%rbp) : * It's not worth to care about 3dnow prefetches for the K6 : * because they are microcoded there and very slow. : */ : static inline void prefetch(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 8002: 48 03 45 20 add 0x20(%rbp),%rax 0.00 : 8006: 0f 18 08 prefetcht0 (%rax) : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 8009: 49 8b 07 mov (%r15),%rax : : prefetch(IXGBE_RX_DESC(rx_ring, ntc)); : : /* update RSC append count if present */ : if (ring_is_rsc_enabled(rx_ring)) { 0.00 : 800c: a8 08 test $0x8,%al 0.00 : 800e: 0f 84 bc 00 00 00 je 80d0 : __le32 rsc_enabled = rx_desc->wb.lower.lo_dword.data & : cpu_to_le32(IXGBE_RXDADV_RSCCNT_MASK); 0.00 : 8014: 8b 03 mov (%rbx),%eax : : if (unlikely(rsc_enabled)) { 0.00 : 8016: 89 c1 mov %eax,%ecx 0.00 : 8018: 81 e1 00 00 1e 00 and $0x1e0000,%ecx 0.00 : 801e: 0f 84 ac 00 00 00 je 80d0 : u32 rsc_cnt = le32_to_cpu(rsc_enabled); : : rsc_cnt >>= IXGBE_RXDADV_RSCCNT_SHIFT; : IXGBE_CB(skb)->append_cnt += rsc_cnt - 1; 0.00 : 8024: 49 8d 54 24 28 lea 0x28(%r12),%rdx 0.00 : 8029: c1 e9 11 shr $0x11,%ecx 0.00 : 802c: 0f b7 42 18 movzwl 0x18(%rdx),%eax 0.00 : 8030: 8d 44 08 ff lea -0x1(%rax,%rcx,1),%eax 0.00 : 8034: 66 89 42 18 mov %ax,0x18(%rdx) : : /* update ntc based on RSC value */ : ntc = le32_to_cpu(rx_desc->wb.upper.status_error); 0.00 : 8038: 8b 43 08 mov 0x8(%rbx),%eax : ntc &= IXGBE_RXDADV_NEXTP_MASK; 0.00 : 803b: 89 c2 mov %eax,%edx 0.00 : 803d: 81 e2 f0 ff 0f 00 and $0xffff0,%edx : ntc >>= IXGBE_RXDADV_NEXTP_SHIFT; 0.00 : 8043: c1 ea 04 shr $0x4,%edx : } : } : : /* if we are the last buffer then there is nothing else to do */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) 0.00 : 8046: a8 02 test $0x2,%al 0.00 : 8048: 0f 85 8d 00 00 00 jne 80db : next_skb = rx_ring->rx_buffer_info[ntc].skb; : : ixgbe_add_active_tail(skb, next_skb); : IXGBE_CB(next_skb)->head = skb; : #else : rx_ring->rx_buffer_info[ntc].skb = skb; 0.00 : 804e: 89 d0 mov %edx,%eax 0.00 : 8050: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 8054: 48 c1 e0 05 shl $0x5,%rax 0.00 : 8058: 4c 89 24 02 mov %r12,(%rdx,%rax,1) : #endif : rx_ring->rx_stats.non_eop_descs++; 0.00 : 805c: 48 83 45 78 01 addq $0x1,0x78(%rbp) : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 0.00 : 8061: 8b 44 24 04 mov 0x4(%rsp),%eax : : /* exit if we failed to retrieve a buffer */ : if (!skb) : break; : : cleaned_count++; 0.00 : 8065: 41 83 c5 01 add $0x1,%r13d : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 0.00 : 8069: 85 c0 test %eax,%eax 0.00 : 806b: 0f 84 f7 01 00 00 je 8268 : do { : union ixgbe_adv_rx_desc *rx_desc; : struct sk_buff *skb; : : /* return some buffers to hardware, one at a time is too slow */ : if (cleaned_count >= IXGBE_RX_BUFFER_WRITE) { 0.98 : 8071: 66 41 83 fd 0f cmp $0xf,%r13w 0.00 : 8076: 0f 87 ac 02 00 00 ja 8328 : ixgbe_alloc_rx_buffers(rx_ring, cleaned_count); : cleaned_count = 0; : } : : rx_desc = IXGBE_RX_DESC(rx_ring, rx_ring->next_to_clean); 0.98 : 807c: 0f b7 5d 52 movzwl 0x52(%rbp),%ebx 4.90 : 8080: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 8084: 48 03 5d 20 add 0x20(%rbp),%rbx : : if (!ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_DD)) ??:0 6.86 : 8088: f6 43 08 01 testb $0x1,0x8(%rbx) 33.33 : 808c: 0f 84 d6 01 00 00 je 8268 : /* : * This memory barrier is needed to keep us from reading : * any other fields out of the rx_desc until we know the : * RXD_STAT_DD bit is set : */ : rmb(); ??:0 2.94 : 8092: 0f ae e8 lfence : : /* retrieve a buffer from the ring */ : skb = ixgbe_fetch_rx_buffer(rx_ring, rx_desc); 1.96 : 8095: 48 89 de mov %rbx,%rsi 0.00 : 8098: 48 89 ef mov %rbp,%rdi 0.00 : 809b: e8 60 fb ff ff callq 7c00 : : /* exit if we failed to retrieve a buffer */ : if (!skb) 0.00 : 80a0: 48 85 c0 test %rax,%rax : * RXD_STAT_DD bit is set : */ : rmb(); : : /* retrieve a buffer from the ring */ : skb = ixgbe_fetch_rx_buffer(rx_ring, rx_desc); 0.00 : 80a3: 49 89 c4 mov %rax,%r12 : : /* exit if we failed to retrieve a buffer */ : if (!skb) 0.00 : 80a6: 0f 84 bc 01 00 00 je 8268 : struct sk_buff *skb) : { : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : struct sk_buff *next_skb; : #endif : u32 ntc = rx_ring->next_to_clean + 1; 0.00 : 80ac: 0f b7 45 52 movzwl 0x52(%rbp),%eax 0.00 : 80b0: 8d 50 01 lea 0x1(%rax),%edx : : /* fetch, update, and store next to clean */ : ntc = (ntc < rx_ring->count) ? ntc : 0; 0.00 : 80b3: 0f b7 45 4c movzwl 0x4c(%rbp),%eax 0.00 : 80b7: 39 c2 cmp %eax,%edx 0.00 : 80b9: 0f 83 39 ff ff ff jae 7ff8 0.00 : 80bf: 89 d0 mov %edx,%eax 0.98 : 80c1: 89 d1 mov %edx,%ecx 0.00 : 80c3: 48 c1 e0 04 shl $0x4,%rax 0.00 : 80c7: e9 32 ff ff ff jmpq 7ffe 0.00 : 80cc: 0f 1f 40 00 nopl 0x0(%rax) : /* update RSC append count if present */ : if (ring_is_rsc_enabled(rx_ring)) { : __le32 rsc_enabled = rx_desc->wb.lower.lo_dword.data & : cpu_to_le32(IXGBE_RXDADV_RSCCNT_MASK); : : if (unlikely(rsc_enabled)) { 0.00 : 80d0: 8b 43 08 mov 0x8(%rbx),%eax : ntc >>= IXGBE_RXDADV_NEXTP_SHIFT; : } : } : : /* if we are the last buffer then there is nothing else to do */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) 0.00 : 80d3: a8 02 test $0x2,%al 0.00 : 80d5: 0f 84 73 ff ff ff je 804e : static bool ixgbe_cleanup_headers(struct ixgbe_ring *rx_ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : /* verify that the packet does not have any known errors */ : if (unlikely(ixgbe_test_staterr(rx_desc, 0.00 : 80db: a9 00 00 00 3b test $0x3b000000,%eax 0.00 : 80e0: 0f 85 5a 02 00 00 jne 8340 : dev_kfree_skb_any(skb); : return true; : } : : /* place header in linear portion of buffer */ : if (skb_is_nonlinear(skb)) 0.00 : 80e6: 41 8b 4c 24 6c mov 0x6c(%r12),%ecx 0.00 : 80eb: 85 c9 test %ecx,%ecx 0.00 : 80ed: 0f 85 5d 02 00 00 jne 8350 0.00 : 80f3: 49 8b 07 mov (%r15),%rax : * Returns : true if it is FCoE pkt : */ : static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc) : { : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; 0.00 : 80f6: 0f b7 13 movzwl (%rbx),%edx : : return test_bit(__IXGBE_RX_FCOE, &ring->state) && 0.00 : 80f9: a8 20 test $0x20,%al 0.00 : 80fb: 74 0e je 810b 0.00 : 80fd: 89 d0 mov %edx,%eax 0.00 : 80ff: 83 e0 70 and $0x70,%eax 0.00 : 8102: 83 f8 20 cmp $0x20,%eax 0.00 : 8105: 0f 84 15 03 00 00 je 8420 : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) : return false; : : #endif : /* if skb_pad returns an error the skb was freed */ : if (unlikely(skb->len < 60)) { 0.00 : 810b: 41 8b 44 24 68 mov 0x68(%r12),%eax 1.96 : 8110: 83 f8 3b cmp $0x3b,%eax 0.00 : 8113: 0f 86 17 03 00 00 jbe 8430 : #endif /* NETIF_F_GSO */ : static void ixgbe_update_rsc_stats(struct ixgbe_ring *rx_ring, : struct sk_buff *skb) : { : /* if append_cnt is 0 then frame is not RSC */ : if (!IXGBE_CB(skb)->append_cnt) 0.00 : 8119: 4d 8d 44 24 28 lea 0x28(%r12),%r8 : /* verify the packet layout is correct */ : if (ixgbe_cleanup_headers(rx_ring, rx_desc, skb)) : continue; : : /* probably a little skewed due to removing CRC */ : total_rx_bytes += skb->len; 0.00 : 811e: 01 44 24 14 add %eax,0x14(%rsp) : total_rx_packets++; 1.96 : 8122: 83 44 24 18 01 addl $0x1,0x18(%rsp) : #endif /* NETIF_F_GSO */ : static void ixgbe_update_rsc_stats(struct ixgbe_ring *rx_ring, : struct sk_buff *skb) : { : /* if append_cnt is 0 then frame is not RSC */ : if (!IXGBE_CB(skb)->append_cnt) 0.00 : 8127: 41 0f b7 40 18 movzwl 0x18(%r8),%eax 0.00 : 812c: 66 85 c0 test %ax,%ax 0.00 : 812f: 74 44 je 8175 : return; : : rx_ring->rx_stats.rsc_count += IXGBE_CB(skb)->append_cnt; : rx_ring->rx_stats.rsc_flush++; 0.00 : 8131: 48 83 45 70 01 addq $0x1,0x70(%rbp) : { : /* if append_cnt is 0 then frame is not RSC */ : if (!IXGBE_CB(skb)->append_cnt) : return; : : rx_ring->rx_stats.rsc_count += IXGBE_CB(skb)->append_cnt; 0.00 : 8136: 0f b7 c0 movzwl %ax,%eax 0.00 : 8139: 48 01 45 68 add %rax,0x68(%rbp) : #else : u16 hdr_len = ixgbe_get_headlen(skb->data, skb_headlen(skb)); : #endif : : /* set gso_size to avoid messing up TCP MSS */ : skb_shinfo(skb)->gso_size = DIV_ROUND_UP((skb->len - hdr_len), 0.00 : 813d: 41 0f b7 48 18 movzwl 0x18(%r8),%ecx : return skb->data_len; : } : : static inline unsigned int skb_headlen(const struct sk_buff *skb) : { : return skb->len - skb->data_len; 0.00 : 8142: 41 8b 54 24 68 mov 0x68(%r12),%edx 0.00 : 8147: 41 8b bc 24 d0 00 00 mov 0xd0(%r12),%edi 0.00 : 814e: 00 0.00 : 814f: 49 8b b4 24 d8 00 00 mov 0xd8(%r12),%rsi 0.00 : 8156: 00 0.00 : 8157: 8d 44 0a ff lea -0x1(%rdx,%rcx,1),%eax 0.00 : 815b: 41 2b 54 24 6c sub 0x6c(%r12),%edx 0.00 : 8160: 0f b7 d2 movzwl %dx,%edx 0.00 : 8163: 29 d0 sub %edx,%eax 0.00 : 8165: 31 d2 xor %edx,%edx 0.00 : 8167: f7 f1 div %ecx 0.00 : 8169: 66 89 44 3e 02 mov %ax,0x2(%rsi,%rdi,1) : #ifdef NETIF_F_GSO : ixgbe_set_rsc_gso_size(rx_ring, skb); : : #endif : /* gso_size is computed using append_cnt so always clear it last */ : IXGBE_CB(skb)->append_cnt = 0; 0.00 : 816e: 66 41 c7 40 18 00 00 movw $0x0,0x18(%r8) : #ifdef NETIF_F_RXHASH : static inline void ixgbe_rx_hash(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : if (netdev_ring(ring)->features & NETIF_F_RXHASH) 0.00 : 8175: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.98 : 8179: 8b 96 b0 00 00 00 mov 0xb0(%rsi),%edx 0.98 : 817f: f7 c2 00 00 00 10 test $0x10000000,%edx 0.00 : 8185: 74 15 je 819c : skb->rxhash = le32_to_cpu(rx_desc->wb.lower.hi_dword.rss); 0.00 : 8187: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 818a: 41 89 84 24 a8 00 00 mov %eax,0xa8(%r12) 0.00 : 8191: 00 0.00 : 8192: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 8196: 8b 96 b0 00 00 00 mov 0xb0(%rsi),%edx : { : skb_checksum_none_assert(skb); : : /* Rx csum disabled */ : #ifdef HAVE_NDO_SET_FEATURES : if (!(netdev_ring(ring)->features & NETIF_F_RXCSUM)) 0.00 : 819c: f7 c2 00 00 00 20 test $0x20000000,%edx 0.00 : 81a2: 74 2c je 81d0 : : /* ixgbe_test_staterr - tests bits in Rx descriptor status and error fields */ : static inline __le32 ixgbe_test_staterr(union ixgbe_adv_rx_desc *rx_desc, : const u32 stat_err_bits) : { : return rx_desc->wb.upper.status_error & cpu_to_le32(stat_err_bits); 0.00 : 81a4: 8b 4b 08 mov 0x8(%rbx),%ecx : if (!test_bit(__IXGBE_RX_CSUM_ENABLED, &ring->state)) : #endif : return; : : /* if IP and error */ : if (ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_IPCS) && 0.00 : 81a7: 89 c8 mov %ecx,%eax 0.00 : 81a9: 25 40 00 00 80 and $0x80000040,%eax 0.00 : 81ae: 3d 40 00 00 80 cmp $0x80000040,%eax 0.00 : 81b3: 0f 85 a7 01 00 00 jne 8360 : */ : if ((pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_UDP)) && : test_bit(__IXGBE_RX_CSUM_UDP_ZERO_ERR, &ring->state)) : return; : : ring->rx_stats.csum_err++; 0.00 : 81b9: 48 83 85 90 00 00 00 addq $0x1,0x90(%rbp) 0.00 : 81c0: 01 0.00 : 81c1: 8b 96 b0 00 00 00 mov 0xb0(%rsi),%edx 0.00 : 81c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 81ce: 00 00 : : static void ixgbe_rx_vlan(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : if ((netdev_ring(ring)->features & NETIF_F_HW_VLAN_RX) && 0.00 : 81d0: 80 e6 01 and $0x1,%dh 0.00 : 81d3: 74 16 je 81eb 0.98 : 81d5: f6 43 08 08 testb $0x8,0x8(%rbx) 0.00 : 81d9: 74 10 je 81eb : * Puts the VLAN TCI in @skb->vlan_tci and lets the device do the rest : */ : static inline struct sk_buff *__vlan_hwaccel_put_tag(struct sk_buff *skb, : u16 vlan_tci) : { : skb->vlan_tci = VLAN_TAG_PRESENT | vlan_tci; 0.00 : 81db: 0f b7 43 0e movzwl 0xe(%rbx),%eax 0.00 : 81df: 80 cc 10 or $0x10,%ah 0.00 : 81e2: 66 41 89 84 24 bc 00 mov %ax,0xbc(%r12) 0.00 : 81e9: 00 00 : to->queue_mapping = from->queue_mapping; : } : : static inline void skb_record_rx_queue(struct sk_buff *skb, u16 rx_queue) : { : skb->queue_mapping = rx_queue + 1; 0.00 : 81eb: 0f b6 45 4e movzbl 0x4e(%rbp),%eax : #endif : ixgbe_rx_vlan(rx_ring, rx_desc, skb); : : skb_record_rx_queue(skb, ring_queue_index(rx_ring)); : : skb->protocol = eth_type_trans(skb, netdev_ring(rx_ring)); 0.00 : 81ef: 4c 89 e7 mov %r12,%rdi 0.00 : 81f2: 83 c0 01 add $0x1,%eax 0.00 : 81f5: 66 41 89 84 24 ac 00 mov %ax,0xac(%r12) 0.00 : 81fc: 00 00 0.00 : 81fe: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 8202: e8 00 00 00 00 callq 8207 0.00 : 8207: 66 41 89 44 24 7e mov %ax,0x7e(%r12) 0.00 : 820d: 49 8b 07 mov (%r15),%rax 0.00 : 8210: 0f b7 13 movzwl (%rbx),%edx : static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc) : { : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : return test_bit(__IXGBE_RX_FCOE, &ring->state) && 0.00 : 8213: a8 20 test $0x20,%al 0.00 : 8215: 74 0e je 8225 0.00 : 8217: 89 d0 mov %edx,%eax 0.00 : 8219: 83 e0 70 and $0x70,%eax 0.00 : 821c: 83 f8 20 cmp $0x20,%eax 0.00 : 821f: 0f 84 53 02 00 00 je 8478 : { : struct iphdr *iph = (struct iphdr *)skb->data; : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : /* verify hardware indicates this is IPv4/TCP */ : if (!(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) || 0.00 : 8225: 81 e2 10 01 00 00 and $0x110,%edx : **/ : static inline bool ixgbe_can_lro(struct ixgbe_ring *rx_ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : struct iphdr *iph = (struct iphdr *)skb->data; 0.00 : 822b: 49 8b 9c 24 e0 00 00 mov 0xe0(%r12),%rbx 0.00 : 8232: 00 : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : /* verify hardware indicates this is IPv4/TCP */ : if (!(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) || 0.00 : 8233: 81 fa 10 01 00 00 cmp $0x110,%edx 0.00 : 8239: 0f 84 59 01 00 00 je 8398 : else : #endif : #ifdef HAVE_VLAN_RX_REGISTER : ixgbe_receive_skb(q_vector, skb); : #else : napi_gro_receive(&q_vector->napi, skb); 0.00 : 823f: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 8244: 4c 89 e6 mov %r12,%rsi 0.00 : 8247: e8 00 00 00 00 callq 824c : : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; 4.90 : 824c: 83 6c 24 04 01 subl $0x1,0x4(%rsp) : : /* exit if we failed to retrieve a buffer */ : if (!skb) : break; : : cleaned_count++; 0.98 : 8251: 41 83 c5 01 add $0x1,%r13d : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 0.00 : 8255: 8b 44 24 04 mov 0x4(%rsp),%eax 0.98 : 8259: 85 c0 test %eax,%eax 0.00 : 825b: 0f 85 10 fe ff ff jne 8071 0.00 : 8261: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : #ifdef IXGBE_FCOE : /* include DDPed FCoE data */ : if (ddp_bytes > 0) { 0.00 : 8268: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 826c: 85 c0 test %eax,%eax 0.00 : 826e: 7e 31 jle 82a1 : unsigned int mss; : : mss = netdev_ring(rx_ring)->mtu - sizeof(struct fcoe_hdr) - 0.00 : 8270: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 8274: 8b 90 c0 01 00 00 mov 0x1c0(%rax),%edx 0.00 : 827a: 8d 72 d2 lea -0x2e(%rdx),%esi : sizeof(struct fc_frame_header) - : sizeof(struct fcoe_crc_eof); : if (mss > 512) : mss &= ~511; 0.00 : 827d: 89 f0 mov %esi,%eax 0.00 : 827f: 25 00 fe ff ff and $0xfffffe00,%eax 0.00 : 8284: 81 fe 01 02 00 00 cmp $0x201,%esi 0.00 : 828a: 0f 43 f0 cmovae %eax,%esi : total_rx_bytes += ddp_bytes; 0.00 : 828d: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 8291: 01 44 24 14 add %eax,0x14(%rsp) : total_rx_packets += DIV_ROUND_UP(ddp_bytes, mss); 0.00 : 8295: 31 d2 xor %edx,%edx 0.00 : 8297: 8d 44 06 ff lea -0x1(%rsi,%rax,1),%eax 0.00 : 829b: f7 f6 div %esi 0.00 : 829d: 01 44 24 18 add %eax,0x18(%rsp) : } : : #endif /* IXGBE_FCOE */ : rx_ring->stats.packets += total_rx_packets; 0.98 : 82a1: 8b 44 24 18 mov 0x18(%rsp),%eax 0.98 : 82a5: 48 01 45 58 add %rax,0x58(%rbp) : rx_ring->stats.bytes += total_rx_bytes; 0.98 : 82a9: 8b 44 24 14 mov 0x14(%rsp),%eax 0.00 : 82ad: 48 01 45 60 add %rax,0x60(%rbp) : q_vector->rx.total_packets += total_rx_packets; 0.00 : 82b1: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 82b6: 8b 44 24 18 mov 0x18(%rsp),%eax 1.96 : 82ba: 01 41 1c add %eax,0x1c(%rcx) : q_vector->rx.total_bytes += total_rx_bytes; 0.00 : 82bd: 8b 54 24 14 mov 0x14(%rsp),%edx 0.00 : 82c1: 01 51 18 add %edx,0x18(%rcx) : : if (cleaned_count) 0.00 : 82c4: 66 45 85 ed test %r13w,%r13w 0.00 : 82c8: 0f 85 f2 01 00 00 jne 84c0 : static void ixgbe_lro_flush_all(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_lro_list *lrolist = &q_vector->lrolist; : struct sk_buff *skb, *tmp; : : skb_queue_reverse_walk_safe(&lrolist->active, skb, tmp) 0.00 : 82ce: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 82d3: 48 8b b1 a8 02 00 00 mov 0x2a8(%rcx),%rsi 2.94 : 82da: 48 89 cd mov %rcx,%rbp 0.00 : 82dd: 48 81 c5 a0 02 00 00 add $0x2a0,%rbp 0.00 : 82e4: 48 39 ee cmp %rbp,%rsi 0.00 : 82e7: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 82eb: 75 09 jne 82f6 0.00 : 82ed: eb 1a jmp 8309 0.00 : 82ef: 90 nop 0.00 : 82f0: 48 89 de mov %rbx,%rsi 0.00 : 82f3: 48 89 c3 mov %rax,%rbx : ixgbe_lro_flush(q_vector, skb); 0.00 : 82f6: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 82fb: e8 00 d3 ff ff callq 5600 : static void ixgbe_lro_flush_all(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_lro_list *lrolist = &q_vector->lrolist; : struct sk_buff *skb, *tmp; : : skb_queue_reverse_walk_safe(&lrolist->active, skb, tmp) 0.00 : 8300: 48 39 eb cmp %rbp,%rbx 0.00 : 8303: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 8307: 75 e7 jne 82f0 0.00 : 8309: 8b 44 24 04 mov 0x4(%rsp),%eax 0.00 : 830d: 85 c0 test %eax,%eax 0.00 : 830f: 0f 95 c0 setne %al : #ifndef IXGBE_NO_LRO : ixgbe_lro_flush_all(q_vector); : : #endif /* IXGBE_NO_LRO */ : return !!budget; : } 0.00 : 8312: 48 83 c4 28 add $0x28,%rsp 0.00 : 8316: 5b pop %rbx 0.00 : 8317: 5d pop %rbp 0.00 : 8318: 41 5c pop %r12 0.00 : 831a: 41 5d pop %r13 0.00 : 831c: 41 5e pop %r14 0.00 : 831e: 41 5f pop %r15 0.00 : 8320: c3 retq 0.00 : 8321: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : union ixgbe_adv_rx_desc *rx_desc; : struct sk_buff *skb; : : /* return some buffers to hardware, one at a time is too slow */ : if (cleaned_count >= IXGBE_RX_BUFFER_WRITE) { : ixgbe_alloc_rx_buffers(rx_ring, cleaned_count); 0.00 : 8328: 41 0f b7 f5 movzwl %r13w,%esi 0.00 : 832c: 48 89 ef mov %rbp,%rdi 0.00 : 832f: 45 31 ed xor %r13d,%r13d 0.00 : 8332: e8 00 00 00 00 callq 8337 0.00 : 8337: e9 40 fd ff ff jmpq 807c 0.00 : 833c: 0f 1f 40 00 nopl 0x0(%rax) : /* if ddp, not passing to ULD unless for FCP_RSP or error */ : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) { : ddp_bytes = ixgbe_fcoe_ddp(q_vector->adapter, : rx_desc, skb); : if (!ddp_bytes) { : dev_kfree_skb_any(skb); 0.00 : 8340: 4c 89 e7 mov %r12,%rdi 0.00 : 8343: e8 00 00 00 00 callq 8348 : #ifndef NETIF_F_GRO : netdev_ring(rx_ring)->last_rx = jiffies; : #endif : continue; 0.00 : 8348: e9 14 fd ff ff jmpq 8061 0.00 : 834d: 0f 1f 00 nopl (%rax) : return true; : } : : /* place header in linear portion of buffer */ : if (skb_is_nonlinear(skb)) : ixgbe_pull_tail(rx_ring, skb); 0.00 : 8350: 4c 89 e6 mov %r12,%rsi 0.00 : 8353: 48 89 ef mov %rbp,%rdi 0.00 : 8356: e8 05 b1 ff ff callq 3460 0.00 : 835b: e9 93 fd ff ff jmpq 80f3 : ixgbe_test_staterr(rx_desc, IXGBE_RXDADV_ERR_IPE)) { : ring->rx_stats.csum_err++; : return; : } : : if (!ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_L4CS)) 0.00 : 8360: f6 c1 20 test $0x20,%cl 0.00 : 8363: 0f 84 67 fe ff ff je 81d0 : return; : : if (ixgbe_test_staterr(rx_desc, IXGBE_RXDADV_ERR_TCPE)) { 1.96 : 8369: 81 e1 00 00 00 40 and $0x40000000,%ecx 0.00 : 836f: 90 nop 0.00 : 8370: 0f 84 2a 01 00 00 je 84a0 : : /* : * 82599 errata, UDP frames with a 0 checksum can be marked as : * checksum errors. : */ : if ((pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_UDP)) && 0.00 : 8376: f6 43 01 02 testb $0x2,0x1(%rbx) 0.00 : 837a: 0f 84 39 fe ff ff je 81b9 0.00 : 8380: 49 8b 07 mov (%r15),%rax 0.00 : 8383: a8 10 test $0x10,%al 0.00 : 8385: 0f 85 45 fe ff ff jne 81d0 0.00 : 838b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8390: e9 24 fe ff ff jmpq 81b9 0.00 : 8395: 0f 1f 00 nopl (%rax) 0.00 : 8398: 49 8b 07 mov (%r15),%rax : if (!(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) || : !(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_TCP))) : return false; : : /* .. and RSC is not already enabled */ : if (ring_is_rsc_enabled(rx_ring)) 0.00 : 839b: a8 08 test $0x8,%al 0.00 : 839d: 0f 1f 00 nopl (%rax) 0.00 : 83a0: 0f 85 99 fe ff ff jne 823f : return false; : : /* .. and LRO is enabled */ : if (!(netdev_ring(rx_ring)->features & NETIF_F_LRO)) 0.00 : 83a6: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 83aa: 66 83 b8 b0 00 00 00 cmpw $0x0,0xb0(%rax) 0.00 : 83b1: 00 0.00 : 83b2: 0f 89 87 fe ff ff jns 823f : return false; : : /* .. and we are not in promiscuous mode */ : if (netdev_ring(rx_ring)->flags & IFF_PROMISC) 0.00 : 83b8: f6 80 b1 01 00 00 01 testb $0x1,0x1b1(%rax) 0.00 : 83bf: 0f 85 7a fe ff ff jne 823f : return skb->data_len; : } : : static inline unsigned int skb_headlen(const struct sk_buff *skb) : { : return skb->len - skb->data_len; 0.00 : 83c5: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 83ca: 89 c2 mov %eax,%edx 0.00 : 83cc: 41 2b 54 24 6c sub 0x6c(%r12),%edx : return unlikely(len > skb->len) ? NULL : __pskb_pull(skb, len); : } : : static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len) : { : if (likely(len <= skb_headlen(skb))) 0.00 : 83d1: 83 fa 27 cmp $0x27,%edx 0.00 : 83d4: 0f 86 f7 00 00 00 jbe 84d1 : /* .. and the header is large enough for us to read IP/TCP fields */ : if (!pskb_may_pull(skb, sizeof(struct ixgbe_lrohdr))) : return false; : : /* .. and there are no VLANs on packet */ : if (skb->protocol != __constant_htons(ETH_P_IP)) 0.00 : 83da: 66 41 83 7c 24 7e 08 cmpw $0x8,0x7e(%r12) 0.00 : 83e1: 0f 85 58 fe ff ff jne 823f : return false; : : /* .. and we are version 4 with no options */ : if (*(u8 *)iph != 0x45) 0.00 : 83e7: 80 3b 45 cmpb $0x45,(%rbx) 0.00 : 83ea: 0f 85 4f fe ff ff jne 823f : return false; : : /* .. and the packet is not fragmented */ : if (iph->frag_off & htons(IP_MF | IP_OFFSET)) 0.00 : 83f0: 66 f7 43 06 3f ff testw $0xff3f,0x6(%rbx) 0.00 : 83f6: 0f 85 43 fe ff ff jne 823f : return false; : : /* .. and that next header is TCP */ : if (iph->protocol != IPPROTO_TCP) 0.00 : 83fc: 80 7b 09 06 cmpb $0x6,0x9(%rbx) 0.00 : 8400: 0f 85 39 fe ff ff jne 823f : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : #ifndef IXGBE_NO_LRO : if (ixgbe_can_lro(rx_ring, rx_desc, skb)) : ixgbe_lro_receive(q_vector, skb); 0.00 : 8406: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 840b: 4c 89 e6 mov %r12,%rsi 0.00 : 840e: e8 3d d4 ff ff callq 5850 0.00 : 8413: e9 34 fe ff ff jmpq 824c 0.00 : 8418: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 841f: 00 : static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc) : { : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : return test_bit(__IXGBE_RX_FCOE, &ring->state) && 0.00 : 8420: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 8425: e9 ef fc ff ff jmpq 8119 0.00 : 842a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return false; : : #endif : /* if skb_pad returns an error the skb was freed */ : if (unlikely(skb->len < 60)) { : int pad_len = 60 - skb->len; 0.00 : 8430: 41 be 3c 00 00 00 mov $0x3c,%r14d : : if (skb_pad(skb, pad_len)) 0.00 : 8436: 4c 89 e7 mov %r12,%rdi : return false; : : #endif : /* if skb_pad returns an error the skb was freed */ : if (unlikely(skb->len < 60)) { : int pad_len = 60 - skb->len; 0.00 : 8439: 41 29 c6 sub %eax,%r14d : : if (skb_pad(skb, pad_len)) 0.00 : 843c: 44 89 f6 mov %r14d,%esi 0.00 : 843f: e8 00 00 00 00 callq 8444 0.00 : 8444: 85 c0 test %eax,%eax 0.00 : 8446: 0f 85 15 fc ff ff jne 8061 : */ : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); 0.00 : 844c: 41 8b 54 24 6c mov 0x6c(%r12),%edx 0.00 : 8451: 85 d2 test %edx,%edx 0.00 : 8453: 0f 85 a7 00 00 00 jne 8500 : skb->tail += len; : skb->len += len; 0.00 : 8459: 44 89 f0 mov %r14d,%eax 0.00 : 845c: 41 03 44 24 68 add 0x68(%r12),%eax : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); : skb->tail += len; 0.00 : 8461: 45 01 b4 24 cc 00 00 add %r14d,0xcc(%r12) 0.00 : 8468: 00 : skb->len += len; 0.00 : 8469: 41 89 44 24 68 mov %eax,0x68(%r12) 0.00 : 846e: e9 a6 fc ff ff jmpq 8119 0.00 : 8473: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : ixgbe_process_skb_fields(rx_ring, rx_desc, skb); : : #ifdef IXGBE_FCOE : /* if ddp, not passing to ULD unless for FCP_RSP or error */ : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) { : ddp_bytes = ixgbe_fcoe_ddp(q_vector->adapter, 0.00 : 8478: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 847d: 4c 89 e2 mov %r12,%rdx 0.00 : 8480: 48 89 de mov %rbx,%rsi 0.00 : 8483: 48 8b 39 mov (%rcx),%rdi 0.00 : 8486: e8 00 00 00 00 callq 848b : rx_desc, skb); : if (!ddp_bytes) { 0.00 : 848b: 85 c0 test %eax,%eax : ixgbe_process_skb_fields(rx_ring, rx_desc, skb); : : #ifdef IXGBE_FCOE : /* if ddp, not passing to ULD unless for FCP_RSP or error */ : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) { : ddp_bytes = ixgbe_fcoe_ddp(q_vector->adapter, 0.00 : 848d: 89 44 24 1c mov %eax,0x1c(%rsp) : rx_desc, skb); : if (!ddp_bytes) { 0.00 : 8491: 0f 84 a9 fe ff ff je 8340 0.00 : 8497: 0f b7 13 movzwl (%rbx),%edx 0.00 : 849a: e9 86 fd ff ff jmpq 8225 0.00 : 849f: 90 nop : ring->rx_stats.csum_err++; : return; : } : : /* It must be a TCP or UDP packet with a valid checksum */ : skb->ip_summed = CHECKSUM_UNNECESSARY; 1.96 : 84a0: 41 0f b6 44 24 7c movzbl 0x7c(%r12),%eax 0.98 : 84a6: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 84a9: 83 c8 04 or $0x4,%eax 0.98 : 84ac: 41 88 44 24 7c mov %al,0x7c(%r12) 0.98 : 84b1: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 84b5: 8b 90 b0 00 00 00 mov 0xb0(%rax),%edx 0.00 : 84bb: e9 10 fd ff ff jmpq 81d0 : rx_ring->stats.bytes += total_rx_bytes; : q_vector->rx.total_packets += total_rx_packets; : q_vector->rx.total_bytes += total_rx_bytes; : : if (cleaned_count) : ixgbe_alloc_rx_buffers(rx_ring, cleaned_count); 0.00 : 84c0: 41 0f b7 f5 movzwl %r13w,%esi 0.00 : 84c4: 48 89 ef mov %rbp,%rdi 0.00 : 84c7: e8 00 00 00 00 callq 84cc 0.00 : 84cc: e9 fd fd ff ff jmpq 82ce : : static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len) : { : if (likely(len <= skb_headlen(skb))) : return 1; : if (unlikely(len > skb->len)) 0.00 : 84d1: 83 f8 27 cmp $0x27,%eax 0.00 : 84d4: 0f 86 65 fd ff ff jbe 823f : return 0; : return __pskb_pull_tail(skb, len - skb_headlen(skb)) != NULL; 0.00 : 84da: be 28 00 00 00 mov $0x28,%esi 0.00 : 84df: 4c 89 e7 mov %r12,%rdi 0.00 : 84e2: 29 d6 sub %edx,%esi 0.00 : 84e4: e8 00 00 00 00 callq 84e9 : /* .. and we are not in promiscuous mode */ : if (netdev_ring(rx_ring)->flags & IFF_PROMISC) : return false; : : /* .. and the header is large enough for us to read IP/TCP fields */ : if (!pskb_may_pull(skb, sizeof(struct ixgbe_lrohdr))) 0.00 : 84e9: 48 85 c0 test %rax,%rax 0.00 : 84ec: 0f 84 4d fd ff ff je 823f 0.00 : 84f2: e9 e3 fe ff ff jmpq 83da 0.00 : 84f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 84fe: 00 00 : */ : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); 0.00 : 8500: 0f 0b ud2 0.00 : 8502: eb fe jmp 8502 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 9.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 6.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2915 6.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 5.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2912 4.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 4.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 4.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2913 4.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2913 3.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2915 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 2.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2921 2.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 2.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2913 2.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 2.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2911 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2916 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2921 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2913 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2921 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a0920 : : return 0; : } : : static void : copytup_heap(Tuplesortstate *state, SortTuple *stup, void *tup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 4.59 : 7a0920: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 16.33 : 7a0921: 48 89 e5 mov %rsp,%rbp 0.00 : 7a0924: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2901 4.08 : 7a0928: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 7a092c: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.02 : 7a0930: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.51 : 7a0934: 49 89 fd mov %rdi,%r13 0.51 : 7a0937: 48 83 ec 40 sub $0x40,%rsp 0.00 : 7a093b: 49 89 f6 mov %rsi,%r14 2.04 : 7a093e: 48 89 d7 mov %rdx,%rdi : TupleTableSlot *slot = (TupleTableSlot *) tup; : MinimalTuple tuple; : HeapTupleData htup; : : /* copy the tuple into sort storage */ : tuple = ExecCopySlotMinimalTuple(slot); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2911 1.53 : 7a0941: e8 ba 35 e1 ff callq 5b3f00 : stup->tuple = (void *) tuple; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2912 5.10 : 7a0946: 49 89 06 mov %rax,(%r14) : USEMEM(state, GetMemoryChunkSpace(tuple)); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2913 4.08 : 7a0949: 49 8b 5d 10 mov 0x10(%r13),%rbx 4.08 : 7a094d: 48 89 c7 mov %rax,%rdi : TupleTableSlot *slot = (TupleTableSlot *) tup; : MinimalTuple tuple; : HeapTupleData htup; : : /* copy the tuple into sort storage */ : tuple = ExecCopySlotMinimalTuple(slot); 0.00 : 7a0950: 49 89 c4 mov %rax,%r12 : stup->tuple = (void *) tuple; : USEMEM(state, GetMemoryChunkSpace(tuple)); 0.00 : 7a0953: e8 38 81 ff ff callq 798a90 2.04 : 7a0958: 48 29 c3 sub %rax,%rbx 0.51 : 7a095b: 49 89 5d 10 mov %rbx,0x10(%r13) : /* set up first-column key value */ : htup.t_len = tuple->t_len + MINIMAL_TUPLE_OFFSET; 0.00 : 7a095f: 41 8b 04 24 mov (%r12),%eax : htup.t_data = (HeapTupleHeader) ((char *) tuple - MINIMAL_TUPLE_OFFSET); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2916 1.02 : 7a0963: 49 83 ec 08 sub $0x8,%r12 0.00 : 7a0967: 4c 89 65 d0 mov %r12,-0x30(%rbp) : /* copy the tuple into sort storage */ : tuple = ExecCopySlotMinimalTuple(slot); : stup->tuple = (void *) tuple; : USEMEM(state, GetMemoryChunkSpace(tuple)); : /* set up first-column key value */ : htup.t_len = tuple->t_len + MINIMAL_TUPLE_OFFSET; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2915 6.12 : 7a096b: 83 c0 08 add $0x8,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2915 3.57 : 7a096e: 89 45 c0 mov %eax,-0x40(%rbp) : htup.t_data = (HeapTupleHeader) ((char *) tuple - MINIMAL_TUPLE_OFFSET); : stup->datum1 = heap_getattr(&htup, /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 2.04 : 7a0971: 49 8b 85 f8 00 00 00 mov 0xf8(%r13),%rax 2.04 : 7a0978: 0f b7 40 0e movzwl 0xe(%rax),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 9.69 : 7a097c: 66 85 c0 test %ax,%ax 0.00 : 7a097f: 0f 8e eb 00 00 00 jle 7a0a70 0.00 : 7a0985: 0f bf d0 movswl %ax,%edx 0.00 : 7a0988: 41 0f b7 44 24 12 movzwl 0x12(%r12),%eax 0.00 : 7a098e: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 7a0993: 39 c2 cmp %eax,%edx 0.00 : 7a0995: 7e 21 jle 7a09b8 0.00 : 7a0997: 41 c6 46 10 01 movb $0x1,0x10(%r14) 0.00 : 7a099c: 31 c0 xor %eax,%eax 0.00 : 7a099e: 49 89 46 08 mov %rax,0x8(%r14) : state->sortKeys[0].ssup_attno, : state->tupDesc, : &stup->isnull1); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2921 2.55 : 7a09a2: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 7a09a6: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 7a09aa: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 7a09ae: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.51 : 7a09b2: c9 leaveq 1.02 : 7a09b3: c3 retq 0.00 : 7a09b4: 0f 1f 40 00 nopl 0x0(%rax) : stup->tuple = (void *) tuple; : USEMEM(state, GetMemoryChunkSpace(tuple)); : /* set up first-column key value */ : htup.t_len = tuple->t_len + MINIMAL_TUPLE_OFFSET; : htup.t_data = (HeapTupleHeader) ((char *) tuple - MINIMAL_TUPLE_OFFSET); : stup->datum1 = heap_getattr(&htup, /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 0.51 : 7a09b8: 41 c6 46 10 00 movb $0x0,0x10(%r14) 0.00 : 7a09bd: 41 f6 44 24 14 01 testb $0x1,0x14(%r12) 0.00 : 7a09c3: 75 6b jne 7a0a30 0.00 : 7a09c5: 49 8b 85 f8 00 00 00 mov 0xf8(%r13),%rax 3.06 : 7a09cc: 4d 8b 85 f0 00 00 00 mov 0xf0(%r13),%r8 0.00 : 7a09d3: 0f b7 48 0e movzwl 0xe(%rax),%ecx 1.53 : 7a09d7: 49 8b 40 08 mov 0x8(%r8),%rax 1.02 : 7a09db: 48 0f bf d1 movswq %cx,%rdx 1.53 : 7a09df: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 6.12 : 7a09e4: 8b 42 54 mov 0x54(%rdx),%eax 7.14 : 7a09e7: 85 c0 test %eax,%eax 0.00 : 7a09e9: 0f 88 b9 00 00 00 js 7a0aa8 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2917 1.53 : 7a09ef: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.51 : 7a09f3: 0f 84 97 00 00 00 je 7a0a90 0.00 : 7a09f9: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 7a09fd: 66 83 fa 08 cmp $0x8,%dx 0.00 : 7a0a01: 0f 84 d1 00 00 00 je 7a0ad8 0.00 : 7a0a07: 66 83 fa 04 cmp $0x4,%dx 0.00 : 7a0a0b: 0f 84 af 00 00 00 je 7a0ac0 0.00 : 7a0a11: 66 83 fa 02 cmp $0x2,%dx 0.00 : 7a0a15: 0f 84 d5 00 00 00 je 7a0af0 0.00 : 7a0a1b: 41 0f b6 54 24 16 movzbl 0x16(%r12),%edx 0.00 : 7a0a21: 48 98 cltq 0.00 : 7a0a23: 49 8d 04 04 lea (%r12,%rax,1),%rax 0.00 : 7a0a27: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 7a0a2b: e9 6e ff ff ff jmpq 7a099e 0.00 : 7a0a30: 49 8b 85 f8 00 00 00 mov 0xf8(%r13),%rax 0.00 : 7a0a37: 0f bf 70 0e movswl 0xe(%rax),%esi 0.00 : 7a0a3b: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 7a0a3e: 89 c8 mov %ecx,%eax 0.00 : 7a0a40: 83 e1 07 and $0x7,%ecx 0.00 : 7a0a43: c1 f8 03 sar $0x3,%eax 0.00 : 7a0a46: 48 98 cltq 0.00 : 7a0a48: 41 0f b6 44 04 17 movzbl 0x17(%r12,%rax,1),%eax 0.00 : 7a0a4e: d3 f8 sar %cl,%eax 0.00 : 7a0a50: a8 01 test $0x1,%al 0.00 : 7a0a52: 0f 84 3f ff ff ff je 7a0997 0.00 : 7a0a58: 49 8b 95 f0 00 00 00 mov 0xf0(%r13),%rdx 0.00 : 7a0a5f: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 7a0a63: e8 28 ef cc ff callq 46f990 0.00 : 7a0a68: e9 31 ff ff ff jmpq 7a099e 0.00 : 7a0a6d: 0f 1f 00 nopl (%rax) 0.00 : 7a0a70: 49 8b 95 f0 00 00 00 mov 0xf0(%r13),%rdx 0.00 : 7a0a77: 49 8d 4e 10 lea 0x10(%r14),%rcx 0.00 : 7a0a7b: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 7a0a7f: 0f bf f0 movswl %ax,%esi 0.00 : 7a0a82: e8 49 e2 cc ff callq 46ecd0 0.00 : 7a0a87: e9 12 ff ff ff jmpq 7a099e 0.00 : 7a0a8c: 0f 1f 40 00 nopl 0x0(%rax) 0.51 : 7a0a90: 41 0f b6 54 24 16 movzbl 0x16(%r12),%edx 0.00 : 7a0a96: 48 98 cltq 0.00 : 7a0a98: 48 01 d0 add %rdx,%rax 0.00 : 7a0a9b: 49 8d 04 04 lea (%r12,%rax,1),%rax 0.51 : 7a0a9f: e9 fa fe ff ff jmpq 7a099e 0.00 : 7a0aa4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7a0aa8: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 7a0aac: 0f bf f1 movswl %cx,%esi 0.00 : 7a0aaf: 4c 89 c2 mov %r8,%rdx 0.51 : 7a0ab2: e8 d9 ee cc ff callq 46f990 0.51 : 7a0ab7: e9 e2 fe ff ff jmpq 7a099e 0.00 : 7a0abc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7a0ac0: 41 0f b6 54 24 16 movzbl 0x16(%r12),%edx 0.00 : 7a0ac6: 48 98 cltq 0.00 : 7a0ac8: 49 8d 04 04 lea (%r12,%rax,1),%rax 0.00 : 7a0acc: 8b 04 10 mov (%rax,%rdx,1),%eax 0.00 : 7a0acf: e9 ca fe ff ff jmpq 7a099e 0.00 : 7a0ad4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7a0ad8: 41 0f b6 54 24 16 movzbl 0x16(%r12),%edx 0.00 : 7a0ade: 48 98 cltq 0.00 : 7a0ae0: 49 8d 04 04 lea (%r12,%rax,1),%rax 0.00 : 7a0ae4: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 7a0ae8: e9 b1 fe ff ff jmpq 7a099e 0.00 : 7a0aed: 0f 1f 00 nopl (%rax) 0.00 : 7a0af0: 41 0f b6 54 24 16 movzbl 0x16(%r12),%edx 0.00 : 7a0af6: 48 98 cltq 0.00 : 7a0af8: 49 8d 04 04 lea (%r12,%rax,1),%rax 0.00 : 7a0afc: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax 0.00 : 7a0b00: e9 99 fe ff ff jmpq 7a099e Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.43 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 25.47 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 14.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:467 12.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 9.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:467 4.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:469 1.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006766a0 : : * ReadBuffer -- a shorthand for ReadBufferExtended, for reading from main : * fork with RBM_NORMAL mode and default strategy. : */ : Buffer : ReadBuffer(Relation reln, BlockNumber blockNum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:467 14.91 : 6766a0: 55 push %rbp : return ReadBufferExtended(reln, MAIN_FORKNUM, blockNum, RBM_NORMAL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 25.47 : 6766a1: 89 f2 mov %esi,%edx 0.00 : 6766a3: 45 31 c0 xor %r8d,%r8d /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 1.86 : 6766a6: 31 c9 xor %ecx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 12.42 : 6766a8: 31 f6 xor %esi,%esi : * ReadBuffer -- a shorthand for ReadBufferExtended, for reading from main : * fork with RBM_NORMAL mode and default strategy. : */ : Buffer : ReadBuffer(Relation reln, BlockNumber blockNum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:467 9.94 : 6766aa: 48 89 e5 mov %rsp,%rbp : return ReadBufferExtended(reln, MAIN_FORKNUM, blockNum, RBM_NORMAL, NULL); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:469 4.97 : 6766ad: c9 leaveq : * fork with RBM_NORMAL mode and default strategy. : */ : Buffer : ReadBuffer(Relation reln, BlockNumber blockNum) : { : return ReadBufferExtended(reln, MAIN_FORKNUM, blockNum, RBM_NORMAL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:468 30.43 : 6766ae: e9 bd fe ff ff jmpq 676570 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 9.23 ??:0 9.23 ??:0 7.69 ??:0 7.18 ??:0 6.15 ??:0 5.13 ??:0 3.59 ??:0 3.08 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.05 ??:0 2.05 ??:0 1.54 ??:0 1.54 ??:0 1.54 ??:0 1.54 ??:0 1.54 ??:0 1.54 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 1.03 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 0.51 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000092c0 : ??:0 0.51 : 92c0: 41 57 push %r15 0.51 : 92c2: 49 89 f3 mov %rsi,%r11 0.00 : 92c5: 41 56 push %r14 0.00 : 92c7: 41 55 push %r13 0.00 : 92c9: 41 54 push %r12 0.00 : 92cb: 55 push %rbp 0.00 : 92cc: 53 push %rbx 0.00 : 92cd: 48 81 ec a8 00 00 00 sub $0xa8,%rsp 0.00 : 92d4: 48 8b 84 24 e8 00 00 mov 0xe8(%rsp),%rax 0.00 : 92db: 00 0.00 : 92dc: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.51 : 92e1: 4c 89 44 24 28 mov %r8,0x28(%rsp) 0.00 : 92e6: 48 89 7c 24 78 mov %rdi,0x78(%rsp) 0.00 : 92eb: 48 89 8c 24 88 00 00 mov %rcx,0x88(%rsp) 0.00 : 92f2: 00 0.00 : 92f3: 48 8b ac 24 e0 00 00 mov 0xe0(%rsp),%rbp 0.00 : 92fa: 00 0.00 : 92fb: 48 89 44 24 68 mov %rax,0x68(%rsp) 0.00 : 9300: 8b 84 24 f0 00 00 00 mov 0xf0(%rsp),%eax 0.00 : 9307: 4c 8b ac 24 f8 00 00 mov 0xf8(%rsp),%r13 0.00 : 930e: 00 0.00 : 930f: 89 84 24 94 00 00 00 mov %eax,0x94(%rsp) 0.00 : 9316: 8b 84 24 00 01 00 00 mov 0x100(%rsp),%eax 0.51 : 931d: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) 0.51 : 9324: 45 8b 61 08 mov 0x8(%r9),%r12d 0.51 : 9328: 48 8d 44 24 60 lea 0x60(%rsp),%rax 0.00 : 932d: 49 89 f6 mov %rsi,%r14 0.00 : 9330: 41 89 f7 mov %esi,%r15d 0.00 : 9333: 48 8d 1c ed 00 00 00 lea 0x0(,%rbp,8),%rbx 0.00 : 933a: 00 0.00 : 933b: 49 c1 ee 06 shr $0x6,%r14 0.00 : 933f: 49 03 19 add (%r9),%rbx 0.51 : 9342: 41 83 e7 3f and $0x3f,%r15d 0.00 : 9346: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 934b: eb 14 jmp 9361 0.00 : 934d: 0f 1f 00 nopl (%rax) 0.00 : 9350: 48 83 c5 01 add $0x1,%rbp 0.00 : 9354: 48 83 c3 08 add $0x8,%rbx 0.00 : 9358: 49 39 ec cmp %rbp,%r12 0.00 : 935b: 0f 86 1f 01 00 00 jbe 9480 0.00 : 9361: c7 84 24 90 00 00 00 movl $0x0,0x90(%rsp) 0.00 : 9368: 00 00 00 00 0.51 : 936c: 48 c7 44 24 60 00 00 movq $0x0,0x60(%rsp) 0.00 : 9373: 00 00 0.51 : 9375: 48 8b 03 mov (%rbx),%rax 1.54 : 9378: 48 8b 40 28 mov 0x28(%rax),%rax 2.05 : 937c: 4c 39 e8 cmp %r13,%rax 1.54 : 937f: 48 89 44 24 70 mov %rax,0x70(%rsp) 0.00 : 9384: 74 ca je 9350 0.00 : 9386: f6 84 24 9c 00 00 00 testb $0x2,0x9c(%rsp) 0.00 : 938d: 02 0.51 : 938e: 74 09 je 9399 0.00 : 9390: f6 80 14 03 00 00 03 testb $0x3,0x314(%rax) 0.00 : 9397: 74 b7 je 9350 0.00 : 9399: f6 80 15 03 00 00 20 testb $0x20,0x315(%rax) 0.51 : 93a0: 75 ae jne 9350 0.00 : 93a2: f6 05 77 58 21 00 08 testb $0x8,0x215877(%rip) # 21ec20 <_rtld_global_ro> 2.56 : 93a9: 0f 85 bf 04 00 00 jne 986e 1.03 : 93af: 48 8b 74 24 70 mov 0x70(%rsp),%rsi 0.51 : 93b4: 8b be ec 02 00 00 mov 0x2ec(%rsi),%edi 3.08 : 93ba: 85 ff test %edi,%edi 0.00 : 93bc: 74 92 je 9350 0.51 : 93be: 48 8b 46 70 mov 0x70(%rsi),%rax 0.51 : 93c2: 4c 8b 48 08 mov 0x8(%rax),%r9 ??:0 9.23 : 93c6: 48 8b 46 68 mov 0x68(%rsi),%rax ??:0 0.51 : 93ca: 48 8b 40 08 mov 0x8(%rax),%rax 1.03 : 93ce: 48 89 84 24 80 00 00 mov %rax,0x80(%rsp) 0.00 : 93d5: 00 1.54 : 93d6: 48 8b 96 f8 02 00 00 mov 0x2f8(%rsi),%rdx 0.00 : 93dd: 48 85 d2 test %rdx,%rdx 0.00 : 93e0: 0f 84 0e 05 00 00 je 98f4 0.00 : 93e6: 8b 86 f0 02 00 00 mov 0x2f0(%rsi),%eax 0.00 : 93ec: 8b 8e f4 02 00 00 mov 0x2f4(%rsi),%ecx 0.00 : 93f2: 44 21 f0 and %r14d,%eax ??:0 7.69 : 93f5: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 9.23 : 93f9: 4c 89 d8 mov %r11,%rax 0.00 : 93fc: 48 d3 e8 shr %cl,%rax ??:0 0.51 : 93ff: 48 89 c1 mov %rax,%rcx 0.00 : 9402: 83 e1 3f and $0x3f,%ecx 0.00 : 9405: 48 89 d0 mov %rdx,%rax 0.00 : 9408: 48 d3 e8 shr %cl,%rax 2.05 : 940b: 44 89 f9 mov %r15d,%ecx 0.00 : 940e: 48 d3 ea shr %cl,%rdx 1.54 : 9411: 48 21 d0 and %rdx,%rax 0.00 : 9414: a8 01 test $0x1,%al 0.00 : 9416: 0f 85 78 05 00 00 jne 9994 1.03 : 941c: c7 84 24 98 00 00 00 movl $0x0,0x98(%rsp) 0.00 : 9423: 00 00 00 00 0.00 : 9427: 83 bc 24 90 00 00 00 cmpl $0x1,0x90(%rsp) 0.00 : 942e: 01 0.51 : 942f: 74 67 je 9498 0.00 : 9431: 8b 94 24 98 00 00 00 mov 0x98(%rsp),%edx 1.03 : 9438: 85 d2 test %edx,%edx 0.00 : 943a: 0f 85 10 ff ff ff jne 9350 0.00 : 9440: 48 8b 44 24 68 mov 0x68(%rsp),%rax 1.03 : 9445: 48 85 c0 test %rax,%rax 0.00 : 9448: 0f 84 02 ff ff ff je 9350 0.00 : 944e: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 9452: 48 85 ff test %rdi,%rdi 0.00 : 9455: 0f 84 f5 fe ff ff je 9350 0.00 : 945b: 48 8b 74 24 70 mov 0x70(%rsp),%rsi 0.00 : 9460: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.51 : 9465: e8 16 57 00 00 callq eb80 <_dl_name_match_p> 0.00 : 946a: 85 c0 test %eax,%eax 0.00 : 946c: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9471: 0f 84 d9 fe ff ff je 9350 0.00 : 9477: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 947c: eb 04 jmp 9482 0.00 : 947e: 66 90 xchg %ax,%ax 0.00 : 9480: 31 c0 xor %eax,%eax 0.00 : 9482: 48 81 c4 a8 00 00 00 add $0xa8,%rsp 0.00 : 9489: 5b pop %rbx 0.00 : 948a: 5d pop %rbp 0.00 : 948b: 41 5c pop %r12 0.00 : 948d: 41 5d pop %r13 0.00 : 948f: 41 5e pop %r14 0.00 : 9491: 41 5f pop %r15 0.00 : 9493: c3 retq 0.00 : 9494: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9498: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 949d: 48 85 d2 test %rdx,%rdx 0.00 : 94a0: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 94a5: 74 8a je 9431 0.00 : 94a7: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.51 : 94ac: 0f b6 41 04 movzbl 0x4(%rcx),%eax 0.00 : 94b0: c0 e8 04 shr $0x4,%al 1.03 : 94b3: 3c 02 cmp $0x2,%al 0.00 : 94b5: 0f 84 75 01 00 00 je 9630 0.00 : 94bb: 3c 0a cmp $0xa,%al 0.00 : 94bd: 74 31 je 94f0 0.00 : 94bf: 2c 01 sub $0x1,%al 0.00 : 94c1: 0f 85 6a ff ff ff jne 9431 0.51 : 94c7: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 94cc: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 94d1: 48 89 10 mov %rdx,(%rax) 1.03 : 94d4: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.51 : 94d9: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 94de: 48 89 41 08 mov %rax,0x8(%rcx) 1.03 : 94e2: b8 01 00 00 00 mov $0x1,%eax 0.51 : 94e7: eb 99 jmp 9482 0.00 : 94e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 94f0: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 94f5: 48 8d 2d 6c 5b 21 00 lea 0x215b6c(%rip),%rbp # 21f068 <_rtld_global+0x8> 0.00 : 94fc: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 9500: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9505: 48 8d 1c c0 lea (%rax,%rax,8),%rbx 0.00 : 9509: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 950e: 48 8d 05 4b 5b 21 00 lea 0x215b4b(%rip),%rax # 21f060 <_rtld_global> 0.00 : 9515: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 9519: 48 8d 44 18 20 lea 0x20(%rax,%rbx,1),%rax 0.00 : 951e: 48 01 dd add %rbx,%rbp 0.00 : 9521: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 9526: 48 89 c7 mov %rax,%rdi 0.00 : 9529: ff 15 11 6a 21 00 callq *0x216a11(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : 952f: 48 8b 55 40 mov 0x40(%rbp),%rdx 0.00 : 9533: 48 8d 0d 26 5b 21 00 lea 0x215b26(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 953a: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 953f: 48 8d 1c 19 lea (%rcx,%rbx,1),%rbx 0.00 : 9543: 48 85 d2 test %rdx,%rdx 0.00 : 9546: 48 89 54 24 50 mov %rdx,0x50(%rsp) 0.00 : 954b: 4c 8b 73 50 mov 0x50(%rbx),%r14 0.00 : 954f: 0f 84 bb 02 00 00 je 9810 0.00 : 9555: 4c 89 d8 mov %r11,%rax 0.00 : 9558: 31 d2 xor %edx,%edx 0.00 : 955a: 49 8d 76 fe lea -0x2(%r14),%rsi 0.00 : 955e: 49 f7 f6 div %r14 0.00 : 9561: 4c 89 d8 mov %r11,%rax 0.00 : 9564: 48 89 d1 mov %rdx,%rcx 0.00 : 9567: 31 d2 xor %edx,%edx 0.00 : 9569: 48 f7 f6 div %rsi 0.00 : 956c: 4c 8d 6a 01 lea 0x1(%rdx),%r13 0.00 : 9570: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 9575: 4d 89 ef mov %r13,%r15 0.00 : 9578: 48 89 54 24 38 mov %rdx,0x38(%rsp) 0.00 : 957d: 49 c1 e7 05 shl $0x5,%r15 0.00 : 9581: 48 8b 6c 24 50 mov 0x50(%rsp),%rbp 0.00 : 9586: 4d 8d 64 0d 00 lea 0x0(%r13,%rcx,1),%r12 0.00 : 958b: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 958f: 48 01 cd add %rcx,%rbp 0.00 : 9592: eb 26 jmp 95ba 0.00 : 9594: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9598: 48 8b 5d 08 mov 0x8(%rbp),%rbx 0.00 : 959c: 48 85 db test %rbx,%rbx 0.00 : 959f: 0f 84 cb 00 00 00 je 9670 0.00 : 95a5: 4b 8d 14 2c lea (%r12,%r13,1),%rdx 0.00 : 95a9: 4c 01 fd add %r15,%rbp 0.00 : 95ac: 48 89 d0 mov %rdx,%rax 0.00 : 95af: 4c 29 e8 sub %r13,%rax 0.00 : 95b2: 49 39 c6 cmp %rax,%r14 0.00 : 95b5: 76 69 jbe 9620 0.00 : 95b7: 49 89 d4 mov %rdx,%r12 0.00 : 95ba: 8b 45 00 mov 0x0(%rbp),%eax 0.00 : 95bd: 4c 39 d8 cmp %r11,%rax 0.00 : 95c0: 75 d6 jne 9598 0.00 : 95c2: 48 8b 5d 08 mov 0x8(%rbp),%rbx 0.00 : 95c6: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 95cb: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 95d0: 48 89 df mov %rbx,%rdi 0.00 : 95d3: e8 88 d0 00 00 callq 16660 0.00 : 95d8: 85 c0 test %eax,%eax 0.00 : 95da: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 95df: 75 bb jne 959c 0.00 : 95e1: f6 84 24 9c 00 00 00 testb $0x2,0x9c(%rsp) 0.00 : 95e8: 02 0.00 : 95e9: 0f 84 ec 02 00 00 je 98db 0.00 : 95ef: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 95f4: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 95f9: 48 89 01 mov %rax,(%rcx) 0.00 : 95fc: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 9601: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 9605: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 960a: ff 15 38 69 21 00 callq *0x216938(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : 9610: b8 01 00 00 00 mov $0x1,%eax 0.00 : 9615: e9 68 fe ff ff jmpq 9482 0.00 : 961a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9620: 4c 89 e1 mov %r12,%rcx 0.00 : 9623: 4c 29 f1 sub %r14,%rcx 0.00 : 9626: e9 56 ff ff ff jmpq 9581 0.00 : 962b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.51 : 9630: 8b 0d 32 56 21 00 mov 0x215632(%rip),%ecx # 21ec68 <_rtld_global_ro+0x48> 0.00 : 9636: 85 c9 test %ecx,%ecx 0.00 : 9638: 0f 84 89 fe ff ff je 94c7 0.00 : 963e: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 9643: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 9647: 0f 85 e4 fd ff ff jne 9431 0.00 : 964d: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 9652: 48 89 10 mov %rdx,(%rax) 0.00 : 9655: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 965a: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 965f: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 9663: e9 c9 fd ff ff jmpq 9431 0.00 : 9668: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 966f: 00 0.00 : 9670: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 9675: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 9679: 48 8d 14 c9 lea (%rcx,%rcx,8),%rdx 0.00 : 967d: 48 8d 0d e4 59 21 00 lea 0x2159e4(%rip),%rcx # 21f068 <_rtld_global+0x8> 0.00 : 9684: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 9688: 48 8b 54 11 50 mov 0x50(%rcx,%rdx,1),%rdx 0.00 : 968d: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 9691: 48 39 d0 cmp %rdx,%rax 0.00 : 9694: 0f 87 d3 00 00 00 ja 976d 0.00 : 969a: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : 96a1: 00 0.00 : 96a2: 85 c0 test %eax,%eax 0.00 : 96a4: 0f 85 9e 04 00 00 jne 9b48 0.00 : 96aa: 49 8d 7e 01 lea 0x1(%r14),%rdi 0.00 : 96ae: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 96b3: e8 48 54 00 00 callq eb00 <_dl_higher_prime_number> 0.00 : 96b8: bf 20 00 00 00 mov $0x20,%edi 0.00 : 96bd: 48 89 c6 mov %rax,%rsi 0.00 : 96c0: 49 89 c7 mov %rax,%r15 0.00 : 96c3: e8 08 74 ff ff callq ad0 0.00 : 96c8: 48 85 c0 test %rax,%rax 0.00 : 96cb: 49 89 c5 mov %rax,%r13 0.00 : 96ce: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 96d3: 0f 84 da 01 00 00 je 98b3 0.00 : 96d9: 31 ed xor %ebp,%ebp 0.00 : 96db: 4d 85 f6 test %r14,%r14 0.00 : 96de: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 96e3: 74 38 je 971d 0.00 : 96e5: 0f 1f 00 nopl (%rax) 0.00 : 96e8: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : 96ec: 48 85 c9 test %rcx,%rcx 0.00 : 96ef: 74 1f je 9710 0.00 : 96f1: 4c 8b 4b 18 mov 0x18(%rbx),%r9 0.00 : 96f5: 4c 8b 43 10 mov 0x10(%rbx),%r8 0.00 : 96f9: 4c 89 fe mov %r15,%rsi 0.00 : 96fc: 8b 13 mov (%rbx),%edx 0.00 : 96fe: 4c 89 ef mov %r13,%rdi 0.00 : 9701: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9706: e8 a5 f8 ff ff callq 8fb0 0.00 : 970b: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9710: 48 83 c5 01 add $0x1,%rbp 0.00 : 9714: 48 83 c3 20 add $0x20,%rbx 0.00 : 9718: 49 39 ee cmp %rbp,%r14 0.00 : 971b: 77 cb ja 96e8 0.00 : 971d: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 9722: 4c 8d 25 37 59 21 00 lea 0x215937(%rip),%r12 # 21f060 <_rtld_global> 0.00 : 9729: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 972e: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 9733: 4d 89 fe mov %r15,%r14 0.00 : 9736: 48 8d 1c c0 lea (%rax,%rax,8),%rbx 0.00 : 973a: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 973e: 49 01 dc add %rbx,%r12 0.00 : 9741: 41 ff 54 24 60 callq *0x60(%r12) 0.00 : 9746: 48 8b 05 ab 58 21 00 mov 0x2158ab(%rip),%rax # 21eff8 <_DYNAMIC+0x188> 0.00 : 974d: 48 8d 15 14 59 21 00 lea 0x215914(%rip),%rdx # 21f068 <_rtld_global+0x8> 0.00 : 9754: 4d 89 7c 24 50 mov %r15,0x50(%r12) 0.00 : 9759: 4c 89 6c 1a 40 mov %r13,0x40(%rdx,%rbx,1) 0.00 : 975e: 49 89 44 24 60 mov %rax,0x60(%r12) 0.00 : 9763: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9768: 4c 89 6c 24 50 mov %r13,0x50(%rsp) 0.00 : 976d: f6 84 24 9c 00 00 00 testb $0x2,0x9c(%rsp) 0.00 : 9774: 02 0.00 : 9775: 75 68 jne 97df 0.00 : 9777: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 977c: 4c 8b 4c 24 70 mov 0x70(%rsp),%r9 0.00 : 9781: 4c 89 f6 mov %r14,%rsi 0.00 : 9784: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 9789: 8b 0a mov (%rdx),%ecx 0.00 : 978b: 49 89 d0 mov %rdx,%r8 0.00 : 978e: 44 89 da mov %r11d,%edx 0.00 : 9791: 48 03 8c 24 80 00 00 add 0x80(%rsp),%rcx 0.00 : 9798: 00 0.00 : 9799: e8 12 f8 ff ff callq 8fb0 0.00 : 979e: 48 8b 54 24 70 mov 0x70(%rsp),%rdx 0.00 : 97a3: 0f b6 82 14 03 00 00 movzbl 0x314(%rdx),%eax 0.00 : 97aa: 83 e0 03 and $0x3,%eax 0.00 : 97ad: 3c 02 cmp $0x2,%al 0.00 : 97af: 0f 84 f2 00 00 00 je 98a7 0.00 : 97b5: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 97ba: 48 8d 15 a7 58 21 00 lea 0x2158a7(%rip),%rdx # 21f068 <_rtld_global+0x8> 0.00 : 97c1: 48 8d 04 c9 lea (%rcx,%rcx,8),%rax 0.00 : 97c5: 48 c1 e0 04 shl $0x4,%rax 0.00 : 97c9: 48 83 44 02 50 01 addq $0x1,0x50(%rdx,%rax,1) 0.00 : 97cf: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 97d4: ff 15 6e 67 21 00 callq *0x21676e(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : 97da: e9 e8 fc ff ff jmpq 94c7 0.00 : 97df: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 97e4: 4c 8b 8c 24 08 01 00 mov 0x108(%rsp),%r9 0.00 : 97eb: 00 0.00 : 97ec: 44 89 da mov %r11d,%edx 0.00 : 97ef: 4c 8b 84 24 88 00 00 mov 0x88(%rsp),%r8 0.00 : 97f6: 00 0.00 : 97f7: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 97fc: 4c 89 f6 mov %r14,%rsi 0.00 : 97ff: 8b 08 mov (%rax),%ecx 0.00 : 9801: 48 03 8c 24 80 00 00 add 0x80(%rsp),%rcx 0.00 : 9808: 00 0.00 : 9809: e8 a2 f7 ff ff callq 8fb0 0.00 : 980e: eb a5 jmp 97b5 0.00 : 9810: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : 9817: 00 0.00 : 9818: 85 c0 test %eax,%eax 0.00 : 981a: 0f 85 09 03 00 00 jne 9b29 0.00 : 9820: 4d 85 f6 test %r14,%r14 0.00 : 9823: 0f 85 d4 02 00 00 jne 9afd 0.00 : 9829: be 1f 00 00 00 mov $0x1f,%esi 0.00 : 982e: bf 20 00 00 00 mov $0x20,%edi 0.00 : 9833: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9838: e8 93 72 ff ff callq ad0 0.00 : 983d: 48 85 c0 test %rax,%rax 0.00 : 9840: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 9845: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 984a: 74 67 je 98b3 0.00 : 984c: 48 89 45 40 mov %rax,0x40(%rbp) 0.00 : 9850: 48 8b 05 a1 57 21 00 mov 0x2157a1(%rip),%rax # 21eff8 <_DYNAMIC+0x188> 0.00 : 9857: 41 be 1f 00 00 00 mov $0x1f,%r14d 0.00 : 985d: 48 c7 43 50 1f 00 00 movq $0x1f,0x50(%rbx) 0.00 : 9864: 00 0.00 : 9865: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 9869: e9 ff fe ff ff jmpq 976d 0.00 : 986e: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 9872: 48 8b 48 30 mov 0x30(%rax),%rcx 0.00 : 9876: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 9879: 75 0a jne 9885 0.00 : 987b: 48 8b 05 86 53 21 00 mov 0x215386(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 9882: 48 8b 10 mov (%rax),%rdx 0.00 : 9885: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 988a: 48 8d 3d cf 1d 01 00 lea 0x11dcf(%rip),%rdi # 1b660 <__PRETTY_FUNCTION__.3644+0x12ef> 0.00 : 9891: 31 c0 xor %eax,%eax 0.00 : 9893: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9898: e8 b3 5a 00 00 callq f350 <_dl_debug_printf> 0.00 : 989d: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 98a2: e9 08 fb ff ff jmpq 93af 0.00 : 98a7: 83 8a dc 03 00 00 08 orl $0x8,0x3dc(%rdx) 0.00 : 98ae: e9 02 ff ff ff jmpq 97b5 0.00 : 98b3: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 98b8: ff 15 8a 66 21 00 callq *0x21668a(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : 98be: 48 8d 35 7f fe 00 00 lea 0xfe7f(%rip),%rsi # 19744 0.00 : 98c5: bf 02 00 00 00 mov $0x2,%edi 0.00 : 98ca: 31 c0 xor %eax,%eax 0.00 : 98cc: e8 2f 59 00 00 callq f200 <_dl_dprintf> 0.00 : 98d1: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 98d6: e8 e5 c9 00 00 callq 162c0 <_Exit> 0.00 : 98db: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 98df: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 98e4: 48 89 02 mov %rax,(%rdx) 0.00 : 98e7: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 98eb: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 98ef: e9 11 fd ff ff jmpq 9605 0.00 : 98f4: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 98f9: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 98fe: 48 8b 3a mov (%rdx),%rdi 0.00 : 9901: 48 39 cf cmp %rcx,%rdi 0.00 : 9904: 0f 84 41 01 00 00 je 9a4b 0.00 : 990a: 8b 8e ec 02 00 00 mov 0x2ec(%rsi),%ecx 0.00 : 9910: 31 d2 xor %edx,%edx 0.00 : 9912: 48 89 f8 mov %rdi,%rax 0.00 : 9915: 48 f7 f1 div %rcx 0.00 : 9918: 48 8b 86 08 03 00 00 mov 0x308(%rsi),%rax 0.00 : 991f: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 9922: 85 c0 test %eax,%eax 0.00 : 9924: 89 84 24 98 00 00 00 mov %eax,0x98(%rsp) 0.00 : 992b: 75 30 jne 995d 0.00 : 992d: e9 f5 fa ff ff jmpq 9427 0.00 : 9932: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9938: 48 8b 54 24 70 mov 0x70(%rsp),%rdx 0.51 : 993d: 8b 84 24 98 00 00 00 mov 0x98(%rsp),%eax 0.00 : 9944: 48 8b 92 00 03 00 00 mov 0x300(%rdx),%rdx 0.00 : 994b: 8b 04 82 mov (%rdx,%rax,4),%eax 0.00 : 994e: 85 c0 test %eax,%eax 0.00 : 9950: 89 84 24 98 00 00 00 mov %eax,0x98(%rsp) 0.00 : 9957: 0f 84 ca fa ff ff je 9427 0.00 : 995d: 89 c7 mov %eax,%edi 0.00 : 995f: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 0.00 : 9964: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 9969: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 996d: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9972: 49 8d 3c f9 lea (%r9,%rdi,8),%rdi 0.00 : 9976: e8 85 f7 ff ff callq 9100 0.51 : 997b: 48 85 c0 test %rax,%rax 0.00 : 997e: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : 9983: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 9988: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 998d: 74 a9 je 9938 0.00 : 998f: e9 13 fb ff ff jmpq 94a7 0.51 : 9994: 8b 8e ec 02 00 00 mov 0x2ec(%rsi),%ecx 1.54 : 999a: 31 d2 xor %edx,%edx 0.00 : 999c: 4c 89 d8 mov %r11,%rax 0.00 : 999f: 48 f7 f1 div %rcx ??:0 5.13 : 99a2: 48 8b 86 00 03 00 00 mov 0x300(%rsi),%rax ??:0 2.56 : 99a9: 8b 04 90 mov (%rax,%rdx,4),%eax ??:0 6.15 : 99ac: 85 c0 test %eax,%eax 0.00 : 99ae: 0f 84 68 fa ff ff je 941c ??:0 0.51 : 99b4: 89 c0 mov %eax,%eax 0.00 : 99b6: 4c 8d 04 85 00 00 00 lea 0x0(,%rax,4),%r8 0.00 : 99bd: 00 0.00 : 99be: 4c 03 86 08 03 00 00 add 0x308(%rsi),%r8 3.59 : 99c5: 41 8b 10 mov (%r8),%edx ??:0 7.18 : 99c8: 89 d0 mov %edx,%eax 0.00 : 99ca: 4c 31 d8 xor %r11,%rax ??:0 0.51 : 99cd: 48 d1 e8 shr %rax 0.51 : 99d0: 74 1a je 99ec 1.03 : 99d2: 83 e2 01 and $0x1,%edx 0.00 : 99d5: 0f 85 41 fa ff ff jne 941c 1.54 : 99db: 49 83 c0 04 add $0x4,%r8 0.51 : 99df: 41 8b 10 mov (%r8),%edx 0.51 : 99e2: 89 d0 mov %edx,%eax 0.00 : 99e4: 4c 31 d8 xor %r11,%rax 0.00 : 99e7: 48 d1 e8 shr %rax 0.00 : 99ea: 75 e6 jne 99d2 2.56 : 99ec: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 99f1: 4c 89 c7 mov %r8,%rdi 0.00 : 99f4: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 0.00 : 99f9: 48 2b b8 08 03 00 00 sub 0x308(%rax),%rdi 0.00 : 9a00: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 9a05: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 9a0a: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9a0f: 48 c1 ff 02 sar $0x2,%rdi 0.00 : 9a13: 89 bc 24 98 00 00 00 mov %edi,0x98(%rsp) 0.00 : 9a1a: 89 ff mov %edi,%edi 0.51 : 9a1c: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 9a20: 49 8d 3c f9 lea (%r9,%rdi,8),%rdi 0.51 : 9a24: e8 d7 f6 ff ff callq 9100 0.51 : 9a29: 48 85 c0 test %rax,%rax 0.00 : 9a2c: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.51 : 9a31: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 9a36: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 9a3b: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9a40: 0f 85 61 fa ff ff jne 94a7 0.00 : 9a46: 41 8b 10 mov (%r8),%edx 0.00 : 9a49: eb 87 jmp 99d2 0.00 : 9a4b: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 9a50: 31 ff xor %edi,%edi 0.00 : 9a52: 0f b6 02 movzbl (%rdx),%eax 0.00 : 9a55: 84 c0 test %al,%al 0.00 : 9a57: 0f 84 93 00 00 00 je 9af0 0.00 : 9a5d: 0f b6 c8 movzbl %al,%ecx 0.00 : 9a60: 0f b6 42 01 movzbl 0x1(%rdx),%eax 0.00 : 9a64: 89 cf mov %ecx,%edi 0.00 : 9a66: 84 c0 test %al,%al 0.00 : 9a68: 0f 84 82 00 00 00 je 9af0 0.00 : 9a6e: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9a72: 0f b6 c0 movzbl %al,%eax 0.00 : 9a75: 48 8d 0c 08 lea (%rax,%rcx,1),%rcx 0.00 : 9a79: 0f b6 42 02 movzbl 0x2(%rdx),%eax 0.00 : 9a7d: 89 cf mov %ecx,%edi 0.00 : 9a7f: 84 c0 test %al,%al 0.00 : 9a81: 74 6d je 9af0 0.00 : 9a83: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9a87: 0f b6 c0 movzbl %al,%eax 0.00 : 9a8a: 48 01 c1 add %rax,%rcx 0.00 : 9a8d: 0f b6 42 03 movzbl 0x3(%rdx),%eax 0.00 : 9a91: 89 cf mov %ecx,%edi 0.00 : 9a93: 84 c0 test %al,%al 0.00 : 9a95: 74 59 je 9af0 0.00 : 9a97: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9a9b: 0f b6 c0 movzbl %al,%eax 0.00 : 9a9e: 48 01 c1 add %rax,%rcx 0.00 : 9aa1: 0f b6 42 04 movzbl 0x4(%rdx),%eax 0.00 : 9aa5: 89 cf mov %ecx,%edi 0.00 : 9aa7: 84 c0 test %al,%al 0.00 : 9aa9: 74 45 je 9af0 0.00 : 9aab: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9aaf: 0f b6 c0 movzbl %al,%eax 0.00 : 9ab2: 4c 8d 42 05 lea 0x5(%rdx),%r8 0.00 : 9ab6: 48 01 c1 add %rax,%rcx 0.00 : 9ab9: 0f b6 42 05 movzbl 0x5(%rdx),%eax 0.00 : 9abd: 89 cf mov %ecx,%edi 0.00 : 9abf: 84 c0 test %al,%al 0.00 : 9ac1: 74 2d je 9af0 0.00 : 9ac3: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9ac7: 0f b6 d0 movzbl %al,%edx 0.00 : 9aca: 49 83 c0 01 add $0x1,%r8 0.00 : 9ace: 48 01 ca add %rcx,%rdx 0.00 : 9ad1: 48 89 d0 mov %rdx,%rax 0.00 : 9ad4: 25 00 00 00 f0 and $0xf0000000,%eax 0.00 : 9ad9: 48 89 c1 mov %rax,%rcx 0.51 : 9adc: 48 c1 e8 18 shr $0x18,%rax 0.00 : 9ae0: 48 31 d1 xor %rdx,%rcx 0.00 : 9ae3: 48 31 c1 xor %rax,%rcx 0.00 : 9ae6: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 9aea: 84 c0 test %al,%al 0.00 : 9aec: 75 d5 jne 9ac3 0.00 : 9aee: 89 cf mov %ecx,%edi 0.00 : 9af0: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 9af5: 48 89 38 mov %rdi,(%rax) 0.00 : 9af8: e9 0d fe ff ff jmpq 990a 0.00 : 9afd: f6 05 1d 51 21 00 04 testb $0x4,0x21511d(%rip) # 21ec21 <_rtld_global_ro+0x1> 0.00 : 9b04: 0f 85 c5 fc ff ff jne 97cf 0.00 : 9b0a: 48 8d 0d b6 01 01 00 lea 0x101b6(%rip),%rcx # 19cc7 <__PRETTY_FUNCTION__.12172> 0.00 : 9b11: 48 8d 35 bc 00 01 00 lea 0x100bc(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 9b18: 48 8d 3d 21 1e 01 00 lea 0x11e21(%rip),%rdi # 1b940 <__PRETTY_FUNCTION__.3644+0x15cf> 0.00 : 9b1f: ba a2 01 00 00 mov $0x1a2,%edx 0.00 : 9b24: e8 47 b2 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 9b29: 48 8d 0d 97 01 01 00 lea 0x10197(%rip),%rcx # 19cc7 <__PRETTY_FUNCTION__.12172> 0.00 : 9b30: 48 8d 35 9d 00 01 00 lea 0x1009d(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 9b37: 48 8d 3d 4a 1b 01 00 lea 0x11b4a(%rip),%rdi # 1b688 <__PRETTY_FUNCTION__.3644+0x1317> 0.00 : 9b3e: ba 97 01 00 00 mov $0x197,%edx 0.00 : 9b43: e8 28 b2 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 9b48: 48 8d 0d 78 01 01 00 lea 0x10178(%rip),%rcx # 19cc7 <__PRETTY_FUNCTION__.12172> 0.00 : 9b4f: 48 8d 35 7e 00 01 00 lea 0x1007e(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 9b56: 48 8d 3d 2b 1b 01 00 lea 0x11b2b(%rip),%rdi # 1b688 <__PRETTY_FUNCTION__.3644+0x1317> 0.00 : 9b5d: ba 7a 01 00 00 mov $0x17a,%edx 0.00 : 9b62: e8 09 b2 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 75.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1165 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1163 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1165 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1148 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1170 1.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1148 1.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1163 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1151 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1186 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1148 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1170 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bbcb0 : : * econtext->ecxt_innertuple, using hjstate->hj_HashTupleSlot as the slot : * for the latter. : */ : bool : ExecScanHashTableForUnmatched(HashJoinState *hjstate, ExprContext *econtext) : { 0.00 : 5bbcb0: 55 push %rbp 0.00 : 5bbcb1: 48 89 e5 mov %rsp,%rbp 0.00 : 5bbcb4: 41 55 push %r13 0.00 : 5bbcb6: 49 89 f5 mov %rsi,%r13 0.00 : 5bbcb9: 41 54 push %r12 0.00 : 5bbcbb: 49 89 fc mov %rdi,%r12 0.00 : 5bbcbe: 53 push %rbx 0.00 : 5bbcbf: 48 83 ec 08 sub $0x8,%rsp : HashJoinTable hashtable = hjstate->hj_HashTable; : HashJoinTuple hashTuple = hjstate->hj_CurTuple; 0.00 : 5bbcc3: 48 8b 9f c0 00 00 00 mov 0xc0(%rdi),%rbx : * for the latter. : */ : bool : ExecScanHashTableForUnmatched(HashJoinState *hjstate, ExprContext *econtext) : { : HashJoinTable hashtable = hjstate->hj_HashTable; 0.00 : 5bbcca: 48 8b b7 a8 00 00 00 mov 0xa8(%rdi),%rsi : /* : * hj_CurTuple is the address of the tuple last returned from the : * current bucket, or NULL if it's time to start scanning a new : * bucket. : */ : if (hashTuple != NULL) 0.00 : 5bbcd1: 48 85 db test %rbx,%rbx 0.00 : 5bbcd4: 74 08 je 5bbcde : hashTuple = hashTuple->next; 0.00 : 5bbcd6: 48 8b 1b mov (%rbx),%rbx : hjstate->hj_CurSkewBucketNo++; : } : else : break; /* finished all buckets */ : : while (hashTuple != NULL) 0.00 : 5bbcd9: 48 85 db test %rbx,%rbx 0.00 : 5bbcdc: 75 32 jne 5bbd10 : * current bucket, or NULL if it's time to start scanning a new : * bucket. : */ : if (hashTuple != NULL) : hashTuple = hashTuple->next; : else if (hjstate->hj_CurBucketNo < hashtable->nbuckets) 0.00 : 5bbcde: 41 8b 8c 24 b4 00 00 mov 0xb4(%r12),%ecx 0.00 : 5bbce5: 00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1148 2.86 : 5bbce6: 3b 0e cmp (%rsi),%ecx 0.00 : 5bbce8: 7d 45 jge 5bbd2f 1.90 : 5bbcea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : hashTuple = hashtable->buckets[hjstate->hj_CurBucketNo]; 0.00 : 5bbcf0: 48 8b 56 18 mov 0x18(%rsi),%rdx 0.00 : 5bbcf4: 48 63 c1 movslq %ecx,%rax 0.00 : 5bbcf7: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx : hjstate->hj_CurBucketNo++; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1151 0.95 : 5bbcfb: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : 5bbcfe: 41 89 84 24 b4 00 00 mov %eax,0xb4(%r12) 0.00 : 5bbd05: 00 : hjstate->hj_CurSkewBucketNo++; : } : else : break; /* finished all buckets */ : : while (hashTuple != NULL) 0.00 : 5bbd06: 48 85 db test %rbx,%rbx 0.00 : 5bbd09: 74 d3 je 5bbcde /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1163 1.90 : 5bbd0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (!HeapTupleHeaderHasMatch(HJTUPLE_MINTUPLE(hashTuple))) 0.00 : 5bbd10: 48 8d 7b 10 lea 0x10(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1165 4.76 : 5bbd14: 66 83 7f 0a 00 cmpw $0x0,0xa(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1165 75.24 : 5bbd19: 79 4a jns 5bbd65 : : hjstate->hj_CurTuple = hashTuple; : return true; : } : : hashTuple = hashTuple->next; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1186 0.95 : 5bbd1b: 48 8b 1b mov (%rbx),%rbx : hjstate->hj_CurSkewBucketNo++; : } : else : break; /* finished all buckets */ : : while (hashTuple != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1163 6.67 : 5bbd1e: 48 85 db test %rbx,%rbx 0.00 : 5bbd21: 75 ed jne 5bbd10 : * current bucket, or NULL if it's time to start scanning a new : * bucket. : */ : if (hashTuple != NULL) : hashTuple = hashTuple->next; : else if (hjstate->hj_CurBucketNo < hashtable->nbuckets) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1148 0.95 : 5bbd23: 41 8b 8c 24 b4 00 00 mov 0xb4(%r12),%ecx 0.00 : 5bbd2a: 00 0.00 : 5bbd2b: 3b 0e cmp (%rsi),%ecx 0.00 : 5bbd2d: 7c c1 jl 5bbcf0 : { : hashTuple = hashtable->buckets[hjstate->hj_CurBucketNo]; : hjstate->hj_CurBucketNo++; : } : else if (hjstate->hj_CurSkewBucketNo < hashtable->nSkewBuckets) 0.00 : 5bbd2f: 41 8b 8c 24 b8 00 00 mov 0xb8(%r12),%ecx 0.00 : 5bbd36: 00 : hjstate->hj_CurSkewBucketNo++; : } : else : break; /* finished all buckets */ : : while (hashTuple != NULL) 0.00 : 5bbd37: 31 c0 xor %eax,%eax : else if (hjstate->hj_CurBucketNo < hashtable->nbuckets) : { : hashTuple = hashtable->buckets[hjstate->hj_CurBucketNo]; : hjstate->hj_CurBucketNo++; : } : else if (hjstate->hj_CurSkewBucketNo < hashtable->nSkewBuckets) 0.00 : 5bbd39: 3b 4e 34 cmp 0x34(%rsi),%ecx 0.00 : 5bbd3c: 7d 50 jge 5bbd8e : { : int j = hashtable->skewBucketNums[hjstate->hj_CurSkewBucketNo]; : : hashTuple = hashtable->skewBucket[j]->tuples; 0.00 : 5bbd3e: 48 8b 46 38 mov 0x38(%rsi),%rax 0.00 : 5bbd42: 48 63 d1 movslq %ecx,%rdx 0.00 : 5bbd45: 48 63 14 90 movslq (%rax,%rdx,4),%rdx 0.00 : 5bbd49: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 5bbd4d: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5bbd51: 48 8b 58 08 mov 0x8(%rax),%rbx : hjstate->hj_CurSkewBucketNo++; 0.00 : 5bbd55: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : 5bbd58: 41 89 84 24 b8 00 00 mov %eax,0xb8(%r12) 0.00 : 5bbd5f: 00 0.00 : 5bbd60: e9 74 ff ff ff jmpq 5bbcd9 : if (!HeapTupleHeaderHasMatch(HJTUPLE_MINTUPLE(hashTuple))) : { : TupleTableSlot *inntuple; : : /* insert hashtable's tuple into exec slot */ : inntuple = ExecStoreMinimalTuple(HJTUPLE_MINTUPLE(hashTuple), /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeHash.c:1170 2.86 : 5bbd65: 49 8b b4 24 d0 00 00 mov 0xd0(%r12),%rsi 0.00 : 5bbd6c: 00 0.95 : 5bbd6d: 31 d2 xor %edx,%edx 0.00 : 5bbd6f: e8 6c 86 ff ff callq 5b43e0 : /* : * Reset temp memory each time; although this function doesn't : * do any qual eval, the caller will, so let's keep it : * parallel to ExecScanHashBucket. : */ : ResetExprContext(econtext); 0.00 : 5bbd74: 49 8b 7d 28 mov 0x28(%r13),%rdi : : /* insert hashtable's tuple into exec slot */ : inntuple = ExecStoreMinimalTuple(HJTUPLE_MINTUPLE(hashTuple), : hjstate->hj_HashTupleSlot, : false); /* do not pfree */ : econtext->ecxt_innertuple = inntuple; 0.00 : 5bbd78: 49 89 45 10 mov %rax,0x10(%r13) : /* : * Reset temp memory each time; although this function doesn't : * do any qual eval, the caller will, so let's keep it : * parallel to ExecScanHashBucket. : */ : ResetExprContext(econtext); 0.00 : 5bbd7c: e8 2f cc 1d 00 callq 7989b0 : : hjstate->hj_CurTuple = hashTuple; 0.00 : 5bbd81: 49 89 9c 24 c0 00 00 mov %rbx,0xc0(%r12) 0.00 : 5bbd88: 00 0.00 : 5bbd89: b8 01 00 00 00 mov $0x1,%eax : : /* : * no more unmatched tuples : */ : return false; : } 0.00 : 5bbd8e: 48 83 c4 08 add $0x8,%rsp 0.00 : 5bbd92: 5b pop %rbx 0.00 : 5bbd93: 41 5c pop %r12 0.00 : 5bbd95: 41 5d pop %r13 0.00 : 5bbd97: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 56.15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:109 15.38 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:116 6.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:109 4.62 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:116 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:115 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:109 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:112 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:113 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:110 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:111 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:116 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:114 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:115 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000473b40 : : StrategyNumber strategy, : Oid subtype, : Oid collation, : FmgrInfo *finfo, : Datum argument) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:109 6.92 : 473b40: 55 push %rbp 56.15 : 473b41: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:109 2.31 : 473b44: 4c 8b 55 10 mov 0x10(%rbp),%r10 : entry->sk_flags = flags; /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:110 1.54 : 473b48: 89 37 mov %esi,(%rdi) : entry->sk_attno = attributeNumber; /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:111 1.54 : 473b4a: 66 89 57 04 mov %dx,0x4(%rdi) : entry->sk_strategy = strategy; /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:112 2.31 : 473b4e: 66 89 4f 06 mov %cx,0x6(%rdi) : entry->sk_subtype = subtype; /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:113 2.31 : 473b52: 44 89 47 08 mov %r8d,0x8(%rdi) : entry->sk_collation = collation; /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:114 0.77 : 473b56: 44 89 4f 0c mov %r9d,0xc(%rdi) : entry->sk_argument = argument; /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:115 0.77 : 473b5a: 48 8b 45 18 mov 0x18(%rbp),%rax : fmgr_info_copy(&entry->sk_func, finfo, CurrentMemoryContext); 0.00 : 473b5e: 4c 89 d6 mov %r10,%rsi : entry->sk_flags = flags; : entry->sk_attno = attributeNumber; : entry->sk_strategy = strategy; : entry->sk_subtype = subtype; : entry->sk_collation = collation; : entry->sk_argument = argument; 3.85 : 473b61: 48 89 47 40 mov %rax,0x40(%rdi) : fmgr_info_copy(&entry->sk_func, finfo, CurrentMemoryContext); /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:116 1.54 : 473b65: 48 8b 15 f4 6c 74 00 mov 0x746cf4(%rip),%rdx # bba860 /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:116 15.38 : 473b6c: 48 83 c7 10 add $0x10,%rdi : } 0.00 : 473b70: c9 leaveq : entry->sk_attno = attributeNumber; : entry->sk_strategy = strategy; : entry->sk_subtype = subtype; : entry->sk_collation = collation; : entry->sk_argument = argument; : fmgr_info_copy(&entry->sk_func, finfo, CurrentMemoryContext); /home/Computational/mark/src/postgres-andres/src/backend/access/common/scankey.c:116 4.62 : 473b71: e9 ca bb 30 00 jmpq 77f740 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 28.83 ??:0 19.82 ??:0 5.41 ??:0 3.60 ??:0 3.60 ??:0 2.70 ??:0 2.70 ??:0 1.80 ??:0 1.80 ??:0 1.80 ??:0 1.80 ??:0 1.80 ??:0 1.80 ??:0 1.80 ??:0 1.80 ??:0 1.80 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 0.90 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007700 : ??:0 29.73 : 7700: 41 57 push %r15 0.00 : 7732: 41 56 41 mov 0x68(%rsi),%eax 0.00 : 7735: 55 41 54 sub 0x6c(%rsi),%eax ??:0 1.80 : 7738: 55 53 sub %edx,%eax 0.00 : 773a: 48 89 fb cmp $0x13,%eax 0.00 : 773d: 48 81 ec 98 00 00 jle 7b60 0.00 : 7743: 00 48 89 movslq %edx,%r12 0.00 : 7746: 74 24 30 89 54 24 2c add 0xe0(%rsi),%r12 0.00 : 774d: 89 4c 24 test %r12,%r12 0.00 : 7750: 28 44 88 44 24 27 je 7f18 0.00 : 7756: 48 8b 87 e8 lea 0x4(%rbx),%rdx 0.00 : 775a: 00 00 00 xor %r14d,%r14d 0.00 : 775d: 48 89 44 mov %rdx,%rdi 0.00 : 7760: 24 38 8b 46 68 mov %rdx,0x48(%rsp) 0.90 : 7765: 2b 46 6c 29 d0 callq 776a 0.00 : 776a: 83 f8 13 0f 8e 1d 04 movzbl 0x118(%rbx),%eax ??:0 28.83 : 7771: 00 00 4c 63 e2 cmpl $0x2,0x28(%rsp) 0.00 : 7776: 4c 03 a6 e0 00 00 mov $0x4,%r8d 0.00 : 777c: 00 4d 85 e4 mov %eax,0x44(%rsp) 0.00 : 7780: 0f 84 c2 07 00 00 movzbl 0xd(%r12),%esi 0.00 : 7786: 48 8d 53 04 seta %r14b 0.00 : 778a: 45 31 f6 and %sil,%r8b 0.00 : 778d: 48 89 d7 48 89 54 je 7910 0.00 : 7793: 24 48 e8 00 00 mov $0x4,%ebp 0.00 : 7798: 00 00 0f mov %r14d,%r13d 0.00 : 779b: b6 83 mov %ebp,%edx 0.00 : 779d: 18 01 00 00 mov 0x44(%rsp),%ecx 0.00 : 77a1: 83 7c 24 28 02 41 b8 lea 0x0(,%r13,4),%rdi 0.00 : 77a8: 04 0.00 : 77a9: 00 00 00 mov %r13,%rax 0.00 : 77ac: 89 44 24 44 lea (%rdx,%rdx,4),%rdx 0.00 : 77b0: 41 0f b6 74 shl $0x6,%rax 0.00 : 77b4: 24 0d 41 sub %rdi,%rax 0.00 : 77b7: 0f 97 c6 41 lea (%rax,%rdx,2),%rdx ??:0 0.90 : 77bb: 20 f0 0f 84 7d 01 00 movzbl 0x0(%rcx,%rdx,1),%eax 0.00 : 77c2: 00 0.90 : 77c3: bd 04 cmp $0x8,%al 0.00 : 77c5: 00 00 00 45 movzbl %al,%r15d 0.00 : 77c9: 89 f5 89 ea 8b 4c je 7c08 0.00 : 77cf: 24 44 4a 8d 3c ad ja 7930 0.00 : 77d5: 00 00 sub $0x1,%al 0.00 : 77d7: 00 00 4c 89 e8 48 je 7c70 0.90 : 77dd: 8d 14 92 48 c1 movzbl 0x27(%rsp),%eax 0.00 : 77e2: e0 06 48 29 f8 mov 0x2c(%rsp),%r9d 0.00 : 77e7: 48 8d 14 50 0f b6 84 lea 0xf0(%rbx),%rsi 0.00 : 77ee: 11 00 00 00 00 mov 0x30(%rsp),%r8 0.90 : 77f3: 3c 08 44 mov %r14d,%edx 0.00 : 77f6: 0f b6 mov %ebp,%ecx 0.00 : 77f8: f8 0f 84 mov %rbx,%rdi 0.00 : 77fb: 39 04 00 00 mov %r12,(%rsp) 1.80 : 77ff: 0f 87 5b 01 mov %eax,0x8(%rsp) 0.00 : 7803: 00 00 2c 01 0f callq 6a40 0.00 : 7808: 84 93 04 00 lea 0x78(%rbx),%rdx 0.00 : 780c: 00 0f test %al,%al 0.00 : 780e: b6 44 24 27 44 mov %rdx,0x18(%rsp) 1.80 : 7813: 8b 4c 24 2c 48 8d je 7f00 0.00 : 7819: b3 f0 00 00 00 4c 8b mov %bpl,0x11b(%rbx) 0.90 : 7820: 44 24 30 44 89 f2 89 mov %r14b,0x119(%rbx) 0.90 : 7827: e9 48 89 df 4c 89 24 cmpb $0x0,0x0(%rip) # 782e 3.60 : 782e: 24 89 44 24 08 e8 jne 7fa5 0.90 : 7834: 38 f2 ff ff 48 8d 53 cmpb $0x0,0x0(%rip) # 783b 1.80 : 783b: 78 84 c0 48 89 54 jne 7f1c 0.90 : 7841: 24 18 0f 84 e7 cmp %r15d,0x44(%rsp) 0.00 : 7846: 06 00 00 40 88 ab 1b mov %r15b,0x118(%rbx) 0.00 : 784d: 01 00 00 44 setne %r14b 0.00 : 7851: 88 b3 je 785d 0.00 : 7853: 19 01 00 00 cmp $0x4,%r15d 0.00 : 7857: 80 3d 00 00 00 00 je 7b40 0.00 : 785d: 00 0f 85 71 07 00 00 movzbl 0x11a(%rbx),%eax 0.00 : 7864: 80 3d 00 00 00 00 cmp 0x0(%rip),%eax # 786a 0.90 : 786a: 00 0f 85 db 06 00 jl 7a60 0.00 : 7870: 00 44 39 mov %r15d,%eax 0.00 : 7873: 7c 24 44 44 88 bb 18 mov 0x0(,%rax,4),%edx 0.00 : 787a: 01 00 00 41 0f 95 mov 0x0(%rip),%eax # 7880 0.00 : 7880: c6 74 cmp %eax,%edx 0.00 : 7882: 0a 41 mov %eax,%ebp 0.00 : 7884: 83 ff 04 0f 84 e3 jbe 7a6a 0.90 : 788a: 02 00 00 0f b6 mov 0x48(%rsp),%rdi 1.80 : 788f: 83 1a 01 00 00 callq 7894 0.00 : 7894: 3b 05 00 test %r14b,%r14b 0.00 : 7897: 00 00 je 78c2 0.00 : 7899: 00 0f 8c f0 01 00 00 mov 0xe8(%rbx),%rax 0.00 : 78a0: 44 89 f8 8b 14 85 00 cmpq $0x0,0x738(%rax) 0.00 : 78a7: 00 0.00 : 78a8: 00 00 je 78c2 0.00 : 78aa: 8b 05 00 00 00 00 39 mov 0xe0(%rbx),%rdx 0.00 : 78b1: c2 89 c5 test %rdx,%rdx 0.00 : 78b4: 0f 86 je 78c2 0.00 : 78b6: e0 01 00 00 movzbl 0x13(%rdx),%eax 0.00 : 78ba: 48 8b test %al,%al 0.00 : 78bc: 7c 24 48 e8 00 00 jne 7d30 0.00 : 78c2: 00 00 45 84 f6 mov 0x18(%rsp),%rdx 1.80 : 78c7: 74 29 48 mov (%rdx),%rax 0.00 : 78ca: 8b 83 test $0x2,%al 0.00 : 78cc: e8 00 00 00 48 83 jne 7b90 0.00 : 78d2: b8 38 07 00 00 00 testb $0x4,0xd(%r12) 0.00 : 78d8: 74 18 48 8b 93 e0 jne 7dc0 1.80 : 78de: 00 00 00 48 85 mov 0x30(%rsp),%rdx 0.00 : 78e3: d2 74 0c 0f mov 0x28(%rsp),%esi 0.00 : 78e7: b6 42 13 84 c0 0f mov $0x1,%r8d 0.00 : 78ed: 85 6e 04 mov %rbp,%rcx 0.90 : 78f0: 00 00 48 mov %rbx,%rdi 0.00 : 78f3: 8b 54 24 18 48 callq 78f8 0.00 : 78f8: 8b 02 a8 02 0f mov $0x1,%eax 0.00 : 78fd: 85 be 02 00 00 41 f6 add $0x98,%rsp 0.00 : 7904: 44 pop %rbx 0.00 : 7905: 24 pop %rbp 0.00 : 7906: 0d 04 pop %r12 0.00 : 7908: 0f 85 pop %r13 0.00 : 790a: e2 04 pop %r14 0.00 : 790c: 00 00 pop %r15 0.00 : 790e: 48 retq 0.00 : 790f: 8b nop 0.00 : 7910: 54 24 30 8b test $0x2,%sil 0.00 : 7914: 74 24 28 41 b8 01 je 7a38 0.00 : 791a: 00 00 mov %esi,%eax 0.00 : 791c: 00 48 89 e9 48 mov $0x1,%ebp 0.00 : 7921: 89 df e8 shr $0x4,%al 0.00 : 7924: 00 00 and %eax,%ebp 0.00 : 7926: 00 00 b8 01 00 jmpq 7798 0.00 : 792b: 00 00 48 81 c4 nopl 0x0(%rax,%rax,1) 0.00 : 7930: 98 00 cmp $0xa,%al 0.00 : 7932: 00 00 5b 5d 41 5c je 7cd0 0.00 : 7938: 41 5d cmp $0xb,%al 0.00 : 793a: 41 5e 41 5f c3 90 jne 77dd 0.00 : 7940: 40 f6 c6 cmp $0x1,%ebp 0.00 : 7943: 02 0f 84 1e 01 00 jne 7a90 0.00 : 7949: 00 89 f0 bd 01 00 00 cmpb $0x0,0x11b(%rbx) 0.00 : 7950: 00 c0 e8 04 21 c5 jne 7a90 0.00 : 7956: e9 6d fe ff ff 0f 1f movzbl 0x119(%rbx),%ecx 0.00 : 795d: 44 00 00 movzbl %cl,%eax 0.00 : 7960: 3c 0a 0f cmp %r14d,%eax 0.00 : 7963: 84 98 03 00 00 3c je 7a90 0.00 : 7969: 0b 0f 85 9d fe ff mov 0x124(%rbx),%edx 0.00 : 796f: ff 83 fd 01 0f mov 0x8(%r12),%eax 0.00 : 7974: 85 47 bswap %eax 0.00 : 7976: 01 00 cmp %eax,%edx 0.00 : 7978: 00 80 bb 1b 01 00 jne 7a90 0.00 : 797e: 00 00 0f movzbl %cl,%eax 0.00 : 7981: 85 3a 01 00 00 0f mov $0x2,%r15d 0.00 : 7987: b6 8b 19 01 lea (%rax,%rax,4),%rax 0.00 : 798b: 00 00 0f b6 c1 44 39 mov %edx,0xf0(%rbx,%rax,4) 0.00 : 7992: f0 0f 84 27 01 00 00 movzbl 0x119(%rbx),%eax 0.00 : 7999: 8b 93 24 01 00 00 mov 0x124(%rbx),%edx 0.00 : 799f: 41 8b 44 24 lea (%rax,%rax,4),%rax 0.00 : 79a3: 08 0f c8 39 c2 0f 85 mov %edx,0xf4(%rbx,%rax,4) 0.00 : 79aa: 12 01 00 00 0f b6 c1 movzwl 0x128(%rbx),%eax 0.00 : 79b1: 41 bf 02 test %ax,%ax 0.00 : 79b4: 00 00 00 movzwl %ax,%edx 0.00 : 79b7: 48 8d 04 80 89 94 83 movzbl 0x119(%rbx),%eax 0.00 : 79be: f0 00 00 cmove %ebp,%edx 0.00 : 79c1: 00 0f b6 83 lea (%rax,%rax,4),%rax 0.00 : 79c5: 19 01 00 00 8b 93 24 mov %edx,0xf8(%rbx,%rax,4) 0.00 : 79cc: 01 00 00 48 8d 04 80 movzbl 0x119(%rbx),%eax 0.00 : 79d3: 89 94 83 f4 00 00 00 movzbl 0x12a(%rbx),%edx 0.00 : 79da: 0f b7 83 28 lea (%rax,%rax,4),%rax 0.00 : 79de: 01 00 00 66 85 c0 0f mov %dl,0x100(%rbx,%rax,4) 0.00 : 79e5: b7 d0 0f b6 83 19 01 movzbl 0x119(%rbx),%eax 0.00 : 79ec: 00 00 0f 44 d5 48 8d movzbl 0x12b(%rbx),%edx 0.00 : 79f3: 04 80 89 94 lea (%rax,%rax,4),%rax 0.00 : 79f7: 83 f8 00 00 00 0f b6 mov %dl,0x101(%rbx,%rax,4) 0.00 : 79fe: 83 19 01 00 00 0f b6 lea 0x0(,%r13,4),%rax 0.00 : 7a05: 93 0.00 : 7a06: 2a 01 00 add %r13,%rax 0.00 : 7a09: 00 48 8d 04 80 88 94 lea 0xf0(%rbx,%rax,4),%rax 0.00 : 7a10: 83 0.00 : 7a11: 00 01 00 00 0f b6 83 movq $0x0,(%rax) 0.00 : 7a18: 19 01 00 00 0f b6 93 movq $0x0,0x8(%rax) 0.00 : 7a1f: 2b 0.00 : 7a20: 01 00 00 48 8d 04 80 movl $0x0,0x10(%rax) 0.00 : 7a27: 88 94 83 01 01 00 00 movl $0x1,0x44(%rsp) 0.00 : 7a2e: 4a 0.00 : 7a2f: 8d 04 ad 00 00 jmpq 77dd 0.00 : 7a34: 00 00 4c 01 nopl 0x0(%rax) ??:0 5.41 : 7a38: e8 48 8d 84 test $0x1,%sil 0.00 : 7a3c: 83 f0 00 00 00 mov $0x2,%ebp 0.00 : 7a41: 48 c7 00 00 00 00 jne 7798 0.00 : 7a47: 00 48 mov %esi,%eax ??:0 0.90 : 7a49: c7 40 08 and $0x10,%eax 0.00 : 7a4c: 00 00 cmp $0x1,%al 0.00 : 7a4e: 00 00 sbb %ebp,%ebp 0.00 : 7a50: c7 40 10 and $0x2,%ebp 0.90 : 7a53: 00 00 00 add $0x3,%ebp 0.00 : 7a56: 00 c7 44 24 44 jmpq 7798 0.00 : 7a5b: 01 00 00 00 e9 nopl 0x0(%rax,%rax,1) 0.00 : 7a60: a9 fd ff mov %r15d,%eax 0.00 : 7a63: ff 0f 1f 40 00 40 f6 mov 0x0(,%rax,4),%edx 0.90 : 7a6a: c6 01 bd 02 00 00 00 movzbl 0x115(%rbx),%eax 0.00 : 7a71: 0f 85 51 fd ff ff or 0x101(%rbx),%al 0.00 : 7a77: 89 f0 test $0x10,%al 0.00 : 7a79: 83 e0 10 3c 01 19 jne 7d10 0.00 : 7a7f: ed 83 mov %edx,%ebp 0.00 : 7a81: e5 02 83 c5 03 jmpq 788a 0.00 : 7a86: e9 3d fd ff ff 0f 1f nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a8d: 44 00 00 0.00 : 7a90: 44 89 f8 8b 14 85 00 mov %bpl,0x11b(%rbx) 0.00 : 7a97: 00 00 00 0f b6 83 15 mov %r14b,0x119(%rbx) 0.00 : 7a9e: 01 00 00 0a 83 mov 0x4(%r12),%eax 0.00 : 7aa3: 01 01 bswap %eax 0.00 : 7aa5: 00 00 a8 10 0f 85 mov %eax,0x11c(%rbx) 0.00 : 7aab: 91 02 00 00 89 d5 movzbl 0xd(%r12),%eax 0.00 : 7ab1: e9 04 fe ff ff mov 0x4(%r12),%ecx 0.00 : 7ab6: 66 2e bswap %ecx 0.00 : 7ab8: 0f 1f mov %eax,%edx 0.00 : 7aba: 84 00 00 and $0x1,%eax 0.00 : 7abd: 00 00 shr %dl 0.00 : 7abf: 00 40 88 and $0x1,%edx 0.00 : 7ac2: ab 1b add %eax,%edx 0.00 : 7ac4: 01 00 00 44 88 mov 0x30(%rsp),%rax 0.00 : 7ac9: b3 19 01 add 0x68(%rax),%edx 0.00 : 7acc: 00 00 41 8b 44 24 movzbl 0xc(%r12),%eax 0.00 : 7ad2: 04 0f c8 shr $0x4,%al 0.00 : 7ad5: 89 83 1c movzbl %al,%eax 0.00 : 7ad8: 01 00 00 shl $0x2,%eax 0.00 : 7adb: 41 0f sub %eax,%edx 0.00 : 7add: b6 44 24 0d sub 0x2c(%rsp),%edx 0.00 : 7ae1: 41 8b add %edx,%ecx 0.00 : 7ae3: 4c 24 04 0f c9 89 mov %ecx,0x124(%rbx) 0.00 : 7ae9: c2 83 e0 01 d0 ea movzwl 0xe(%r12),%eax 0.00 : 7aef: 83 e2 01 01 rol $0x8,%ax 0.00 : 7af3: c2 48 8b or %r14d,%ebp 0.00 : 7af6: 44 24 30 03 50 68 41 mov %ax,0x128(%rbx) 0.00 : 7afd: 0f b6 44 24 0c c0 je 7d48 0.00 : 7b03: e8 04 0f b6 c0 mov 0x48(%rsp),%rdi 0.00 : 7b08: c1 e0 02 29 c2 callq 7b0d 0.00 : 7b0d: 2b 54 24 2c 01 mov 0x38(%rsp),%rdx 0.00 : 7b12: d1 89 8b 24 01 00 mov 0x75c(%rdx),%eax 0.00 : 7b18: 00 41 0f cmp $0x6,%eax 0.00 : 7b1b: b7 44 24 0e 66 c1 je 7de0 0.00 : 7b21: c0 08 44 09 f5 cmp $0xff,%eax 0.00 : 7b26: 66 89 83 28 01 00 je 7de0 0.00 : 7b2c: 00 0f 84 45 02 mov $0x1,%eax 0.00 : 7b31: 00 00 48 8b 7c jmpq 78fd 0.00 : 7b36: 24 48 e8 00 00 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7b3d: 48 8b 54 0.00 : 7b40: 24 38 8b 82 5c 07 00 lea 0x0(,%r13,4),%rax 0.00 : 7b47: 00 0.00 : 7b48: 83 f8 06 add %r13,%rax 0.00 : 7b4b: 0f 84 bf 02 00 00 3d orb $0x4,0x101(%rbx,%rax,4) 0.00 : 7b52: ff 0.00 : 7b53: 00 00 00 0f 84 jmpq 785d 0.00 : 7b58: b4 02 00 00 b8 01 00 nopl 0x0(%rax,%rax,1) 0.00 : 7b5f: 00 0.00 : 7b60: 00 e9 c7 fd ff lea 0x70(%rsp),%rbp 0.00 : 7b65: ff 66 2e 0f mov 0x2c(%rsp),%esi 0.00 : 7b69: 1f 84 00 00 00 mov 0x30(%rsp),%rdi 0.00 : 7b6e: 00 00 4a 8d 04 mov $0x14,%ecx 0.00 : 7b73: ad 00 00 mov %rbp,%rdx 0.00 : 7b76: 00 00 4c 01 e8 callq 7b7b 0.00 : 7b7b: 80 8c test %eax,%eax 0.00 : 7b7d: 83 01 01 00 00 04 js 7f18 0.00 : 7b83: e9 05 fd mov %rbp,%r12 0.00 : 7b86: ff ff 0f 1f 84 jmpq 774d 0.00 : 7b8b: 00 00 00 00 00 nopl 0x0(%rax,%rax,1) 2.70 : 7b90: 48 8d 6c 24 70 mov 0x18(%rsp),%rdx 1.80 : 7b95: 8b 74 24 mov (%rdx),%rax 0.00 : 7b98: 2c 48 test $0x4,%al 0.00 : 7b9a: 8b 7c 24 30 b9 14 jne 78de 0.00 : 7ba0: 00 00 00 48 mov 0x44(%rsp),%eax 0.00 : 7ba4: 89 ea e8 sub $0x2,%eax 0.00 : 7ba7: 00 00 00 cmp $0x1,%eax 0.00 : 7baa: 00 85 c0 0f 88 95 ja 78de 0.00 : 7bb0: 03 00 00 49 cmp $0x3,%r15d 0.00 : 7bb4: 89 ec e9 c2 fb ff jne 78de 0.00 : 7bba: ff 0f 1f 44 lock orb $0x4,(%rdx) 0.00 : 7bbe: 00 00 48 8b 54 24 18 mov 0xe8(%rbx),%rax 0.00 : 7bc5: 48 8b 02 a8 04 0f 85 cmpq $0x0,0x738(%rax) 0.00 : 7bcc: 3e 0.00 : 7bcd: fd ff ff 8b 44 24 je 78de 0.00 : 7bd3: 44 83 e8 02 83 f8 01 mov 0xe0(%rbx),%rdx 0.00 : 7bda: 0f 87 2e test %rdx,%rdx 0.00 : 7bdd: fd ff ff 41 83 ff je 78de 0.00 : 7be3: 03 0f 85 24 movzbl 0x13(%rdx),%eax 0.00 : 7be7: fd ff test %al,%al 0.00 : 7be9: ff f0 80 0a 04 48 je 78de 0.00 : 7bef: 8b 83 e8 movzbl %al,%eax 0.00 : 7bf2: 00 00 00 add %rdx,%rax 0.00 : 7bf5: 48 83 b8 38 07 00 je 78de 0.00 : 7bfb: 00 00 0f 84 lock orb $0x10,(%rax) 0.00 : 7bff: 0b fd ff ff 48 jmpq 78de 0.00 : 7c04: 8b 93 e0 00 nopl 0x0(%rax) 0.00 : 7c08: 00 00 48 cmp $0x4,%ebp 0.00 : 7c0b: 85 d2 0f 84 fb fc jne 77dd 0.00 : 7c11: ff ff 0f test %r14d,%r14d 0.00 : 7c14: b6 42 13 sete %dl 0.00 : 7c17: 84 c0 0f and $0x1,%edx 0.00 : 7c1a: 84 ef fc ff ff 0f b6 lea 0x0(,%rdx,4),%rax 0.00 : 7c21: c0 0.00 : 7c22: 48 01 d0 add %rdx,%rax 0.00 : 7c25: 0f 84 e3 fc lea (%rbx,%rax,4),%rdx 0.00 : 7c29: ff ff f0 80 08 10 e9 testb $0x20,0x101(%rdx) 0.00 : 7c30: da fc ff ff 0f 1f jne 7ea8 0.00 : 7c36: 40 00 83 fd lea 0x78(%rbx),%rax 0.00 : 7c3a: 04 0f 85 cc fb mov %rax,0x18(%rsp) 0.00 : 7c3f: ff ff 45 85 mov 0x78(%rbx),%rax 0.00 : 7c43: f6 0f test $0x2,%al 0.00 : 7c45: 94 c2 83 e2 01 48 je 7e20 0.00 : 7c4b: 8d 04 95 00 00 00 00 cmpb $0x0,0x11b(%rbx) 0.00 : 7c52: 48 01 d0 48 8d 14 jne 7e20 0.00 : 7c58: 83 f6 82 01 01 mov 0x8(%r12),%eax 0.00 : 7c5d: 00 00 bswap %eax 0.00 : 7c5f: 20 0f 85 72 02 00 cmp %eax,0x124(%rbx) 0.00 : 7c65: 00 48 8d 43 78 48 jne 77dd 0.00 : 7c6b: 89 44 24 18 48 jmpq 7819 0.00 : 7c70: 8b 43 78 a8 02 cmpl $0x6,0x44(%rsp) 0.00 : 7c75: 0f 84 d5 01 00 00 jbe 77dd 0.00 : 7c7b: 80 bb 1b 01 cmp $0x1,%r14d 0.00 : 7c7f: 00 00 00 0f lea (%rdi,%r13,1),%rdx 0.00 : 7c83: 85 c8 01 sbb %rax,%rax 0.00 : 7c86: 00 00 41 and $0x14,%eax 0.00 : 7c89: 8b 44 24 08 0f c8 39 movzbl 0x101(%rbx,%rax,1),%eax 0.00 : 7c90: 83 0.00 : 7c91: 24 01 00 00 0f 85 72 or 0x101(%rbx,%rdx,4),%al 0.00 : 7c98: fb ff test $0x4,%al 0.00 : 7c9a: ff e9 a9 fb ff ff je 7e40 0.00 : 7ca0: 83 7c 24 44 06 mov 0x48(%rsp),%rdi 0.00 : 7ca5: 0f 86 62 fb ff callq 7caa 0.00 : 7caa: ff 41 xor %ecx,%ecx 0.00 : 7cac: 83 fe xor %edx,%edx 0.00 : 7cae: 01 4a xor %esi,%esi 0.00 : 7cb0: 8d 14 2f mov %rbx,%rdi 0.00 : 7cb3: 48 19 c0 83 e0 callq 7cb8 0.00 : 7cb8: 14 0f cmp $0x1,%al 0.00 : 7cba: b6 84 sbb %eax,%eax 0.00 : 7cbc: 03 01 not %eax 0.00 : 7cbe: 01 00 00 and $0xfffffffc,%eax 0.00 : 7cc1: 0a 84 93 01 01 jmpq 78fd 0.00 : 7cc6: 00 00 a8 04 0f 84 a0 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7ccd: 01 00 00 0.00 : 7cd0: 48 8b 7c 24 48 e8 00 cmpb $0x0,0x0(%rip) # 7cd7 0.00 : 7cd7: 00 00 00 31 c9 31 jne 7f6a 0.00 : 7cdd: d2 31 f6 48 89 mov 0x48(%rsp),%rdi 0.00 : 7ce2: df e8 00 00 00 callq 7ce7 0.00 : 7ce7: 00 3c 01 19 c0 mov 0x38(%rsp),%rdx 0.00 : 7cec: f7 d0 83 e0 fc e9 mov 0x75c(%rdx),%eax 0.00 : 7cf2: 37 fc ff cmp $0x6,%eax 0.00 : 7cf5: ff 66 2e 0f 1f 84 je 7e68 0.00 : 7cfb: 00 00 00 00 00 cmp $0xff,%eax 0.00 : 7d00: 80 3d 00 00 00 00 je 7e68 0.00 : 7d06: 00 0f 85 8d 02 mov $0xffffffff,%eax 0.00 : 7d0b: 00 00 48 8b 7c jmpq 78fd 0.90 : 7d10: 24 48 e8 00 00 00 mov 0x0(%rip),%eax # 7d16 0.90 : 7d16: 00 48 cmp %edx,%eax 0.00 : 7d18: 8b 54 mov %eax,%ebp 0.00 : 7d1a: 24 38 8b 82 5c 07 jb 788a 0.00 : 7d20: 00 00 mov %edx,%ebp 0.00 : 7d22: 83 f8 06 0f 84 jmpq 788a 0.00 : 7d27: 6d 01 00 00 3d ff 00 nopw 0x0(%rax,%rax,1) 0.00 : 7d2e: 00 00 0.00 : 7d30: 0f 84 62 movzbl %al,%eax 0.00 : 7d33: 01 00 00 add %rdx,%rax 0.00 : 7d36: b8 ff ff ff ff e9 je 78c2 0.00 : 7d3c: ed fb ff ff lock orb $0x20,(%rax) 0.00 : 7d40: 8b 05 00 00 00 jmpq 78c2 0.00 : 7d45: 00 39 d0 nopl (%rax) 0.00 : 7d48: 89 c5 0f 82 mov 0x2c(%rsp),%esi 0.00 : 7d4c: 6a fb ff ff 89 mov 0x30(%rsp),%rdi 0.00 : 7d51: d5 e9 63 fb ff lea 0x50(%rsp),%rcx 0.00 : 7d56: ff 66 0f mov %r12,%rdx 0.00 : 7d59: 1f 84 00 00 00 00 00 movb $0x0,0x12a(%rbx) 0.00 : 7d60: 0f b6 c0 48 01 d0 0f movb $0x0,0x12b(%rbx) 0.00 : 7d67: 84 86 fb ff ff f0 80 movq $0x0,0x50(%rsp) 0.00 : 7d6e: 08 20 0.00 : 7d70: e9 7d fb ff ff 0f 1f movq $0x0,0x58(%rsp) 0.00 : 7d77: 00 8b 0.00 : 7d79: 74 24 2c 48 8b 7c 24 movl $0x0,0x60(%rsp) 0.00 : 7d80: 30 0.00 : 7d81: 48 8d 4c 24 50 callq 68c0 0.00 : 7d86: 4c 89 e2 c6 83 movzbl 0x61(%rsp),%edx 0.00 : 7d8b: 2a 01 00 test $0x1,%dl 0.00 : 7d8e: 00 00 je 7da2 0.00 : 7d90: c6 83 2b 01 00 movzbl 0x60(%rsp),%eax 0.00 : 7d95: 00 00 48 c7 44 24 50 orb $0x1,0x12b(%rbx) 0.00 : 7d9c: 00 00 00 00 48 c7 mov %al,0x12a(%rbx) 0.00 : 7da2: 44 24 58 and $0x2,%edx 0.00 : 7da5: 00 00 00 00 c7 44 je 7b03 0.00 : 7dab: 24 60 00 00 00 00 e8 orb $0x2,0x12b(%rbx) 0.00 : 7db2: 3a eb ff ff 0f jmpq 7b03 0.00 : 7db7: b6 54 24 61 f6 c2 01 nopw 0x0(%rax,%rax,1) 0.00 : 7dbe: 74 12 0.00 : 7dc0: 0f b6 44 24 60 mov 0x30(%rsp),%rdx 0.00 : 7dc5: 80 8b 2b 01 mov 0x28(%rsp),%esi 0.00 : 7dc9: 00 00 01 88 83 mov $0x1,%ecx 0.00 : 7dce: 2a 01 00 mov %rbx,%rdi 0.00 : 7dd1: 00 83 e2 02 0f callq 7dd6 0.00 : 7dd6: 84 58 fd ff ff mov $0x1,%eax 0.00 : 7ddb: 80 8b 2b 01 00 jmpq 78fd 0.00 : 7de0: 00 02 e9 4c fd callq 7de5 0.00 : 7de5: ff ff test %eax,%eax 0.00 : 7de7: 66 0f 1f 84 00 00 je 7b2c 0.00 : 7ded: 00 00 00 48 8b movzbl 0x27(%rsp),%edi 0.00 : 7df2: 54 24 30 8b 74 mov 0x30(%rsp),%rdx 0.00 : 7df7: 24 28 xor %eax,%eax 0.00 : 7df9: b9 01 00 xor %r9d,%r9d 0.00 : 7dfc: 00 00 48 xor %r8d,%r8d 0.00 : 7dff: 89 df xor %ecx,%ecx 0.00 : 7e01: e8 00 xor %esi,%esi 0.00 : 7e03: 00 00 00 b8 01 00 00 movq $0x0,(%rsp) 0.00 : 7e0a: 00 0.00 : 7e0b: e9 1d fb ff ff callq 7e10 0.00 : 7e10: e8 00 00 00 00 mov $0x1,%eax 0.00 : 7e15: 85 c0 0f 84 3f jmpq 78fd 0.00 : 7e1a: fd ff ff 0f b6 7c nopw 0x0(%rax,%rax,1) 0.00 : 7e20: 24 27 48 8b mov 0x78(%rbx),%rax 0.00 : 7e24: 54 24 test $0x4,%al 0.00 : 7e26: 30 31 c0 45 31 c9 jne 77dd 0.00 : 7e2c: 45 31 c0 31 c9 31 f6 cmpb $0x3,0x11b(%rbx) 0.00 : 7e33: 48 c7 04 24 00 00 jne 77dd 0.00 : 7e39: 00 00 e8 00 00 jmpq 7c58 0.00 : 7e3e: 00 00 xchg %ax,%ax 0.00 : 7e40: b8 01 00 00 00 e9 e3 movzbl 0x119(%rbx),%eax 0.00 : 7e47: fa ff ff cmp %r14d,%eax 0.00 : 7e4a: 66 0f 1f 44 00 00 jne 7940 0.00 : 7e50: 48 8b 43 78 a8 04 0f cmpb $0x4,0x11b(%rbx) 0.00 : 7e57: 85 b1 f9 ff ff 80 jne 7940 0.00 : 7e5d: bb 1b 01 00 00 jmpq 7ca0 0.00 : 7e62: 03 0f 85 a4 f9 ff nopw 0x0(%rax,%rax,1) 0.00 : 7e68: ff e9 1a fe ff callq 7e6d 0.00 : 7e6d: ff 66 test %eax,%eax 0.00 : 7e6f: 90 nop 0.00 : 7e70: 0f b6 83 19 01 00 je 7d06 0.00 : 7e76: 00 44 39 f0 0f movzbl 0x27(%rsp),%edi 0.00 : 7e7b: 85 f0 fa ff ff 80 bb movq $0x0,(%rsp) 0.00 : 7e82: 1b 0.00 : 7e83: 01 00 00 04 0f mov 0x30(%rsp),%rdx 0.00 : 7e88: 85 e3 xor %eax,%eax 0.00 : 7e8a: fa ff ff xor %r9d,%r9d 0.00 : 7e8d: e9 3e fe xor %r8d,%r8d 0.00 : 7e90: ff ff xor %ecx,%ecx 0.00 : 7e92: 66 0f xor %esi,%esi 0.00 : 7e94: 1f 44 00 00 e8 callq 7e99 0.00 : 7e99: 00 00 00 00 85 mov $0xffffffff,%eax 0.00 : 7e9e: c0 90 0f 84 90 jmpq 78fd 0.00 : 7ea3: fe ff ff 0f b6 nopl 0x0(%rax,%rax,1) 0.00 : 7ea8: 7c 24 27 48 c7 mov 0x4(%r12),%eax 0.00 : 7ead: 04 24 bswap %eax 0.00 : 7eaf: 00 00 00 00 48 8b cmp 0xfc(%rdx),%eax 0.00 : 7eb5: 54 24 30 31 c0 45 jns 7c36 0.00 : 7ebb: 31 c9 45 31 c0 mov 0x48(%rsp),%rdi 0.00 : 7ec0: 31 c9 31 f6 e8 callq 7ec5 0.00 : 7ec5: 00 00 00 00 b8 mov 0x38(%rsp),%rdx 0.00 : 7eca: ff ff ff ff e9 5a mov 0x75c(%rdx),%eax 0.00 : 7ed0: fa ff ff cmp $0x6,%eax 0.00 : 7ed3: 0f 1f je 7ee0 0.00 : 7ed5: 44 00 00 41 8b cmp $0xff,%eax 0.00 : 7eda: 44 24 04 0f c8 3b jne 7d06 0.00 : 7ee0: 82 fc 00 00 00 callq 7ee5 0.00 : 7ee5: 0f 89 test %eax,%eax 0.00 : 7ee7: 7b fd ff ff 48 8b je 7d06 0.00 : 7eed: 7c 24 48 e8 00 movzbl 0x27(%rsp),%edi 0.00 : 7ef2: 00 00 00 48 8b 54 24 movq $0x0,(%rsp) 0.00 : 7ef9: 38 0.00 : 7efa: 8b 82 jmp 7e83 0.00 : 7efc: 5c 07 00 00 nopl 0x0(%rax) 0.00 : 7f00: 83 f8 06 74 0b mov 0x48(%rsp),%rdi 0.00 : 7f05: 3d ff 00 00 00 callq 7f0a 0.00 : 7f0a: 0f 85 26 fe ff mov $0xffffffff,%eax 0.00 : 7f0f: ff e8 00 00 00 jmpq 78fd 0.00 : 7f14: 00 85 c0 0f nopl 0x0(%rax) 0.00 : 7f18: 84 19 ud2 0.00 : 7f1a: fe ff jmp 7f1a 0.00 : 7f1c: ff 0f b6 7c 24 27 movzbl 0xd(%r12),%r8d 0.00 : 7f22: 48 c7 04 24 00 00 00 mov $0x0,%rsi 0.00 : 7f29: 00 eb 87 0f 1f 40 00 mov $0x0,%rdi 0.00 : 7f30: 48 8b 7c 24 48 mov %r15d,0x8(%rsp) 0.00 : 7f35: e8 00 00 mov %r8d,%eax 0.00 : 7f38: 00 00 b8 mov %r8d,%ecx 0.00 : 7f3b: ff ff ff mov %r8d,%edx 0.00 : 7f3e: ff e9 e9 shr $0x2,%al 0.00 : 7f41: f9 ff ff shr $0x4,%cl 0.00 : 7f44: 0f 1f shr %dl 0.00 : 7f46: 40 00 0f mov %eax,%r9d 0.00 : 7f49: 0b eb fe 45 mov 0x44(%rsp),%eax 0.00 : 7f4d: 0f b6 44 and $0x1,%ecx 0.00 : 7f50: 24 0d 48 and $0x1,%edx 0.00 : 7f53: c7 c6 00 00 and $0x1,%r9d 0.00 : 7f57: 00 00 48 c7 and $0x1,%r8d 0.00 : 7f5b: c7 00 00 mov %eax,(%rsp) 0.00 : 7f5e: 00 00 xor %eax,%eax 0.00 : 7f60: 44 89 7c 24 08 callq 7f65 0.00 : 7f65: 44 89 c0 44 89 jmpq 7841 0.00 : 7f6a: c1 44 89 test %r8b,%r8b 0.00 : 7f6d: c2 c0 e8 02 c0 mov $0x4,%ecx 0.00 : 7f72: e9 04 jne 7f83 0.00 : 7f74: d0 ea 41 89 test $0x2,%sil 0.00 : 7f78: c1 8b je 7fbf 0.00 : 7f7a: 44 24 44 83 shr $0x4,%sil 0.00 : 7f7e: e1 01 mov %esi,%ecx 0.00 : 7f80: 83 e2 01 and $0x1,%ecx 0.00 : 7f83: 41 83 e1 01 41 mov 0x44(%rsp),%r8d 0.00 : 7f88: 83 e0 01 mov %r14d,%edx 0.00 : 7f8b: 89 04 24 31 c0 e8 00 mov $0x0,%rsi 0.00 : 7f92: 00 00 00 e9 d7 f8 ff mov $0x0,%rdi 0.00 : 7f99: ff 45 xor %eax,%eax 0.00 : 7f9b: 84 c0 b9 04 00 callq 7fa0 0.00 : 7fa0: 00 00 75 0f 40 jmpq 7cdd 0.00 : 7fa5: f6 c6 02 74 45 40 c0 mov $0x0,%rsi 0.00 : 7fac: ee 04 89 f1 83 e1 01 mov $0x0,%rdi 0.00 : 7fb3: 44 8b xor %eax,%eax 0.00 : 7fb5: 44 24 44 44 89 callq 7fba 0.00 : 7fba: f2 48 c7 c6 00 jmpq 7834 0.00 : 7fbf: 00 00 00 48 test $0x1,%sil 0.00 : 7fc3: c7 c7 00 00 00 mov $0x2,%ecx 0.00 : 7fc8: 00 31 jne 7f83 0.00 : 7fca: c0 e8 00 and $0x10,%esi 0.00 : 7fcd: 00 00 00 e9 cmp $0x1,%sil 0.00 : 7fd1: 38 fd sbb %ecx,%ecx 0.00 : 7fd3: ff ff 48 and $0x2,%ecx 0.00 : 7fd6: c7 c6 00 add $0x3,%ecx 0.00 : 7fd9: 00 00 jmp 7f83 : 7fdb: 00 48 c7 c7 00 nopl 0x0(%rax,%rax,1) : 7fe0: 00 00 00 31 movzwl 0x24(%rsi),%eax : 7fe4: c0 e8 00 00 mov %ax,0x10(%rdi) : 7fe8: 00 00 e9 75 movzwl 0x10(%rsi),%eax : 7fec: f8 ff ff 40 mov %ax,0x24(%rdi) : 7ff0: f6 c6 01 b9 02 mov $0x1,%eax : 7ff5: 00 retq : 7ff6: 00 00 75 b9 83 e6 10 nopw %cs:0x0(%rax,%rax,1) : 7ffd: 40 80 fe : 8000: 01 19 c9 83 e1 mov $0x1,%eax : 8005: 02 retq : 8006: 83 c1 03 eb a8 0f 1f nopw %cs:0x0(%rax,%rax,1) : 800d: 44 00 00 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 34.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:117 20.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:107 10.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 6.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 5.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:107 5.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:117 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5c70 : : PG_RETURN_INT32(-1); : } : : static int : btint4fastcmp(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:107 20.83 : 4a5c70: 55 push %rbp : int32 a = DatumGetInt32(x); : int32 b = DatumGetInt32(y); : : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 5.00 : 4a5c71: 39 f7 cmp %esi,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 1.67 : 4a5c73: b8 01 00 00 00 mov $0x1,%eax : PG_RETURN_INT32(-1); : } : : static int : btint4fastcmp(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:107 5.83 : 4a5c78: 48 89 e5 mov %rsp,%rbp : int32 a = DatumGetInt32(x); : int32 b = DatumGetInt32(y); : : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 10.83 : 4a5c7b: 7f 09 jg 4a5c86 : return 1; : else if (a == b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 4.17 : 4a5c7d: 0f 94 c0 sete %al /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 5.83 : 4a5c80: 0f b6 c0 movzbl %al,%eax 6.67 : 4a5c83: 83 e8 01 sub $0x1,%eax : return 0; : else : return -1; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:117 39.17 : 4a5c86: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 22.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:530 12.24 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 10.20 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 7.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:531 7.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:539 3.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:534 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:530 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:534 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ad8e0 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalAggref(AggrefExprState *aggref, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:530 22.45 : 5ad8e0: 55 push %rbp : if (isDone) 0.00 : 5ad8e1: 48 85 c9 test %rcx,%rcx : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalAggref(AggrefExprState *aggref, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { 0.00 : 5ad8e4: 49 89 d0 mov %rdx,%r8 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:530 1.02 : 5ad8e7: 48 89 e5 mov %rsp,%rbp : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:531 7.14 : 5ad8ea: 74 06 je 5ad8f2 : *isDone = ExprSingleResult; 0.00 : 5ad8ec: c7 01 00 00 00 00 movl $0x0,(%rcx) : : if (econtext->ecxt_aggvalues == NULL) /* safety check */ /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:534 3.06 : 5ad8f2: 48 83 7e 40 00 cmpq $0x0,0x40(%rsi) 1.02 : 5ad8f7: 74 1d je 5ad916 : elog(ERROR, "no aggregates in this expression context"); : : *isNull = econtext->ecxt_aggnulls[aggref->aggno]; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 12.24 : 5ad8f9: 48 63 57 30 movslq 0x30(%rdi),%rdx 0.00 : 5ad8fd: 48 8b 46 48 mov 0x48(%rsi),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 2.04 : 5ad901: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 31.63 : 5ad905: 41 88 00 mov %al,(%r8) 10.20 : 5ad908: 48 63 57 30 movslq 0x30(%rdi),%rdx 0.00 : 5ad90c: 48 8b 46 40 mov 0x40(%rsi),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:537 2.04 : 5ad910: 48 8b 04 d0 mov (%rax,%rdx,8),%rax : return econtext->ecxt_aggvalues[aggref->aggno]; : } 0.00 : 5ad914: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:539 7.14 : 5ad915: c3 retq : { : if (isDone) : *isDone = ExprSingleResult; : : if (econtext->ecxt_aggvalues == NULL) /* safety check */ : elog(ERROR, "no aggregates in this expression context"); 0.00 : 5ad916: ba d3 af 88 00 mov $0x88afd3,%edx 0.00 : 5ad91b: be 17 02 00 00 mov $0x217,%esi 0.00 : 5ad920: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5ad925: e8 f6 da 1c 00 callq 77b420 0.00 : 5ad92a: be 80 a5 88 00 mov $0x88a580,%esi 0.00 : 5ad92f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ad934: 31 c0 xor %eax,%eax 0.00 : 5ad936: e8 f5 d8 1c 00 callq 77b230 0.00 : 5ad93b: e8 90 bb eb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 48.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 10.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 6.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:192 4.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:188 4.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:184 4.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:188 4.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:192 3.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:192 2.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 2.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:190 2.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:189 2.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:190 1.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 1.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:190 1.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:190 1.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:192 0.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2f70 : : /* : * bms_make_singleton - build a bitmapset containing a single member : */ : Bitmapset * : bms_make_singleton(int x) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 2.67 : 5e2f70: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 48.67 : 5e2f71: 48 89 e5 mov %rsp,%rbp 0.00 : 5e2f74: 4c 89 6d f8 mov %r13,-0x8(%rbp) 10.00 : 5e2f78: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:179 0.67 : 5e2f7c: 41 89 fd mov %edi,%r13d 0.00 : 5e2f7f: 4c 89 65 f0 mov %r12,-0x10(%rbp) 1.33 : 5e2f83: 48 83 ec 20 sub $0x20,%rsp : Bitmapset *result; : int wordnum, : bitnum; : : if (x < 0) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:184 4.00 : 5e2f87: 85 ff test %edi,%edi 0.00 : 5e2f89: 78 3f js 5e2fca : elog(ERROR, "negative bitmapset member not allowed"); : wordnum = WORDNUM(x); 0.00 : 5e2f8b: 89 fb mov %edi,%ebx : bitnum = BITNUM(x); : result = (Bitmapset *) palloc0(BITMAPSET_SIZE(wordnum + 1)); : result->nwords = wordnum + 1; : result->words[wordnum] = ((bitmapword) 1 << bitnum); 0.00 : 5e2f8d: 41 83 e5 1f and $0x1f,%r13d : int wordnum, : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : wordnum = WORDNUM(x); 0.00 : 5e2f91: c1 fb 05 sar $0x5,%ebx : bitnum = BITNUM(x); : result = (Bitmapset *) palloc0(BITMAPSET_SIZE(wordnum + 1)); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:188 4.00 : 5e2f94: 44 8d 63 01 lea 0x1(%rbx),%r12d : result->nwords = wordnum + 1; : result->words[wordnum] = ((bitmapword) 1 << bitnum); 0.00 : 5e2f98: 48 63 db movslq %ebx,%rbx : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : wordnum = WORDNUM(x); : bitnum = BITNUM(x); : result = (Bitmapset *) palloc0(BITMAPSET_SIZE(wordnum + 1)); 0.00 : 5e2f9b: 49 63 fc movslq %r12d,%rdi 0.00 : 5e2f9e: 48 8d 3c bd 04 00 00 lea 0x4(,%rdi,4),%rdi 0.00 : 5e2fa5: 00 4.67 : 5e2fa6: e8 c5 5f 1b 00 callq 798f70 : result->nwords = wordnum + 1; : result->words[wordnum] = ((bitmapword) 1 << bitnum); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:190 2.00 : 5e2fab: 44 89 e9 mov %r13d,%ecx 1.33 : 5e2fae: ba 01 00 00 00 mov $0x1,%edx : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : wordnum = WORDNUM(x); : bitnum = BITNUM(x); : result = (Bitmapset *) palloc0(BITMAPSET_SIZE(wordnum + 1)); : result->nwords = wordnum + 1; /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:189 2.00 : 5e2fb3: 44 89 20 mov %r12d,(%rax) : result->words[wordnum] = ((bitmapword) 1 << bitnum); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:190 1.33 : 5e2fb6: d3 e2 shl %cl,%edx 2.00 : 5e2fb8: 89 54 98 04 mov %edx,0x4(%rax,%rbx,4) : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:192 6.67 : 5e2fbc: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:192 3.33 : 5e2fc0: 4c 8b 65 f0 mov -0x10(%rbp),%r12 4.00 : 5e2fc4: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 5e2fc8: c9 leaveq 1.33 : 5e2fc9: c3 retq : Bitmapset *result; : int wordnum, : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); 0.00 : 5e2fca: ba b0 24 89 00 mov $0x8924b0,%edx 0.00 : 5e2fcf: be b9 00 00 00 mov $0xb9,%esi 0.00 : 5e2fd4: bf e2 21 89 00 mov $0x8921e2,%edi 0.00 : 5e2fd9: e8 42 84 19 00 callq 77b420 0.00 : 5e2fde: be 08 22 89 00 mov $0x892208,%esi 0.00 : 5e2fe3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e2fe8: 31 c0 xor %eax,%eax 0.00 : 5e2fea: e8 41 82 19 00 callq 77b230 0.00 : 5e2fef: e8 dc 64 e8 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 14.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2653 13.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 13.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 6.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2650 6.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2650 5.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2649 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 3.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 3.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2653 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2649 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 1.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3720 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) <= 0); : } : : Datum : float48gt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 4.35 : 6d3720: 55 push %rbp 0.00 : 6d3721: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 13.04 : 6d3724: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 1.09 : 6d3725: 48 89 fb mov %rdi,%rbx 0.00 : 6d3728: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2649 5.43 : 6d372c: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d3730: e8 7b a2 0a 00 callq 77d9b0 : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2650 6.52 : 6d3735: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float48gt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2649 2.17 : 6d3739: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2650 6.52 : 6d373e: e8 8d a2 0a 00 callq 77d9d0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) > 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 2.17 : 6d3743: f3 0f 10 55 f4 movss -0xc(%rbp),%xmm2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 13.04 : 6d3748: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 6d374c: 0f 5a d2 cvtps2pd %xmm2,%xmm2 20.65 : 6d374f: 66 0f 28 c2 movapd %xmm2,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2652 3.26 : 6d3753: e8 c8 f7 ff ff callq 6d2f20 1.09 : 6d3758: 85 c0 test %eax,%eax 2.17 : 6d375a: 0f 9f c0 setg %al : } 0.00 : 6d375d: 48 83 c4 08 add $0x8,%rsp : float48gt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float8 arg2 = PG_GETARG_FLOAT8(1); : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) > 0); 1.09 : 6d3761: 0f b6 c0 movzbl %al,%eax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2653 3.26 : 6d3764: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2653 14.13 : 6d3765: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.88 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:178 18.38 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:175 18.38 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 8.82 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 7.35 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 5.15 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 3.68 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 2.94 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:175 2.94 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:178 1.47 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2d60 : : * to other backends. Those are treated the same as other backends' regular : * temp table namespaces, and access is prevented where appropriate. : */ : bool : IsToastNamespace(Oid namespaceId) : { /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:175 18.38 : 4e2d60: 55 push %rbp : return (namespaceId == PG_TOAST_NAMESPACE) || /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 18.38 : 4e2d61: 83 ff 63 cmp $0x63,%edi 7.35 : 4e2d64: b8 01 00 00 00 mov $0x1,%eax : * to other backends. Those are treated the same as other backends' regular : * temp table namespaces, and access is prevented where appropriate. : */ : bool : IsToastNamespace(Oid namespaceId) : { /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:175 2.94 : 4e2d69: 48 89 e5 mov %rsp,%rbp : return (namespaceId == PG_TOAST_NAMESPACE) || /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 8.82 : 4e2d6c: 74 0a je 4e2d78 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 3.68 : 4e2d6e: e8 0d 9c 00 00 callq 4ec980 1.47 : 4e2d73: 84 c0 test %al,%al /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 5.15 : 4e2d75: 0f 95 c0 setne %al : isTempToastNamespace(namespaceId); : } /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:178 33.82 : 4e2d78: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 41.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1018 30.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 16.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 5.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1018 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007888e0 : : * encoding of data stored in text-like data types. Affected types include : * cstring, text, varchar, name, xml, and json. : */ : int : GetDatabaseEncoding(void) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 30.08 : 7888e0: 48 8b 05 69 02 3e 00 mov 0x3e0269(%rip),%rax # b68b50 16.26 : 7888e7: 55 push %rbp 5.69 : 7888e8: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 3.25 : 7888eb: 8b 40 08 mov 0x8(%rax),%eax : return DatabaseEncoding->encoding; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1018 44.72 : 7888ee: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 32.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:439 29.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:440 21.32 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:440 16.91 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:443 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005baf20 : : * ExecBitmapHeapScan(node) : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecBitmapHeapScan(BitmapHeapScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:439 32.35 : 5baf20: 55 push %rbp : return ExecScan(&node->ss, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:440 29.41 : 5baf21: ba 40 af 5b 00 mov $0x5baf40,%edx 0.00 : 5baf26: be 80 af 5b 00 mov $0x5baf80,%esi : * ExecBitmapHeapScan(node) : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecBitmapHeapScan(BitmapHeapScanState *node) : { 0.00 : 5baf2b: 48 89 e5 mov %rsp,%rbp : return ExecScan(&node->ss, : (ExecScanAccessMtd) BitmapHeapNext, : (ExecScanRecheckMtd) BitmapHeapRecheck); : } /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:443 16.91 : 5baf2e: c9 leaveq : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecBitmapHeapScan(BitmapHeapScanState *node) : { : return ExecScan(&node->ss, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:440 21.32 : 5baf2f: e9 1c 88 ff ff jmpq 5b3750 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 76.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2444 12.60 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2455 3.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2444 2.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2444 2.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 2.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2455 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000693260 : : * Skip if a coarser predicate lock already covers this page. : * Clear any finer-grained predicate locks this session has on the relation. : */ : void : PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2444 3.94 : 693260: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2444 76.38 : 693261: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2444 2.36 : 693264: 48 83 ec 10 sub $0x10,%rsp : */ : static inline bool : SerializationNeededForRead(Relation relation, Snapshot snapshot) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) 0.00 : 693268: 48 8b 0d 51 b4 4e 00 mov 0x4eb451(%rip),%rcx # b7e6c0 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 2.36 : 69326f: 48 85 c9 test %rcx,%rcx 0.00 : 693272: 74 13 je 693287 : * This excludes things like CLUSTER and REINDEX. They use the wholesale : * functions TransferPredicateLocksToHeapRelation() and : * CheckTableForSerializableConflictIn() to participate serialization, but : * the scans involved don't need serialization. : */ : if (!IsMVCCSnapshot(snapshot)) 0.00 : 693274: 48 8b 02 mov (%rdx),%rax 0.00 : 693277: 48 3d 50 57 7a 00 cmp $0x7a5750,%rax 0.00 : 69327d: 74 11 je 693290 0.00 : 69327f: 48 3d 60 47 7a 00 cmp $0x7a4760,%rax 0.00 : 693285: 74 09 je 693290 : SET_PREDICATELOCKTARGETTAG_PAGE(tag, : relation->rd_node.dbNode, : relation->rd_id, : blkno); : PredicateLockAcquire(&tag); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2455 2.36 : 693287: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:2455 12.60 : 693288: c3 retq 0.00 : 693289: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * : * A transaction is flagged as RO_SAFE if all concurrent R/W transactions : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) 0.00 : 693290: 80 79 7c 00 cmpb $0x0,0x7c(%rcx) 0.00 : 693294: 78 3a js 6932d0 : * relations are exempt, as are materialized views. : */ : static inline bool : PredicateLockingNeededForRelation(Relation relation) : { : return !(relation->rd_id < FirstBootstrapObjectId || 0.00 : 693296: 8b 57 40 mov 0x40(%rdi),%edx 0.00 : 693299: 81 fa 0f 27 00 00 cmp $0x270f,%edx 0.00 : 69329f: 90 nop 0.00 : 6932a0: 76 e5 jbe 693287 0.00 : 6932a2: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 6932a6: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 0.00 : 6932aa: 74 db je 693287 0.00 : 6932ac: 80 78 6f 6d cmpb $0x6d,0x6f(%rax) 0.00 : 6932b0: 74 d5 je 693287 : PREDICATELOCKTARGETTAG tag; : : if (!SerializationNeededForRead(relation, snapshot)) : return; : : SET_PREDICATELOCKTARGETTAG_PAGE(tag, 0.00 : 6932b2: 8b 47 04 mov 0x4(%rdi),%eax : relation->rd_node.dbNode, : relation->rd_id, : blkno); : PredicateLockAcquire(&tag); 0.00 : 6932b5: 48 8d 7d f0 lea -0x10(%rbp),%rdi : PREDICATELOCKTARGETTAG tag; : : if (!SerializationNeededForRead(relation, snapshot)) : return; : : SET_PREDICATELOCKTARGETTAG_PAGE(tag, 0.00 : 6932b9: 89 55 f4 mov %edx,-0xc(%rbp) 0.00 : 6932bc: 89 75 f8 mov %esi,-0x8(%rbp) 0.00 : 6932bf: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp) 0.00 : 6932c6: 89 45 f0 mov %eax,-0x10(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : blkno); : PredicateLockAcquire(&tag); 0.00 : 6932c9: e8 62 ed ff ff callq 692030 : } 0.00 : 6932ce: c9 leaveq 0.00 : 6932cf: c3 retq : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) : { : ReleasePredicateLocks(false); 0.00 : 6932d0: 31 ff xor %edi,%edi 0.00 : 6932d2: e8 19 f6 ff ff callq 6928f0 : SET_PREDICATELOCKTARGETTAG_PAGE(tag, : relation->rd_node.dbNode, : relation->rd_id, : blkno); : PredicateLockAcquire(&tag); : } 0.00 : 6932d7: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 55.10 ??:0 16.33 ??:0 13.27 ??:0 8.16 ??:0 6.12 ??:0 1.02 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d1e50 : ??:0 16.33 : d1e50: 4c 63 d1 movslq %ecx,%r10 13.27 : d1e53: 48 63 ff movslq %edi,%rdi 0.00 : d1e56: b8 dd 00 00 00 mov $0xdd,%eax 0.00 : d1e5b: 0f 05 syscall 55.10 : d1e5d: 89 c1 mov %eax,%ecx 6.12 : d1e5f: 89 c2 mov %eax,%edx 0.00 : d1e61: 31 c0 xor %eax,%eax 0.00 : d1e63: f7 da neg %edx ??:0 1.02 : d1e65: 81 f9 00 f0 ff ff cmp $0xfffff000,%ecx ??:0 8.16 : d1e6b: 0f 47 c2 cmova %edx,%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 7.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 6.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 5.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 5.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1231 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 3.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 3.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 2.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 2.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1231 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1272 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1276 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079e830 : : /* : * Shared code for tuple and datum cases. : */ : static void : puttuple_common(Tuplesortstate *state, SortTuple *tuple) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 4.35 : 79e830: 55 push %rbp 2.90 : 79e831: 48 89 e5 mov %rsp,%rbp 0.00 : 79e834: 41 57 push %r15 2.17 : 79e836: 41 56 push %r14 0.00 : 79e838: 41 55 push %r13 1.45 : 79e83a: 49 89 f5 mov %rsi,%r13 0.00 : 79e83d: 41 54 push %r12 0.72 : 79e83f: 49 89 fc mov %rdi,%r12 0.72 : 79e842: 53 push %rbx 0.72 : 79e843: 48 83 ec 28 sub $0x28,%rsp : switch (state->status) 0.00 : 79e847: 8b 07 mov (%rdi),%eax 0.00 : 79e849: 83 f8 01 cmp $0x1,%eax 0.00 : 79e84c: 0f 84 fe 02 00 00 je 79eb50 0.00 : 79e852: 72 3c jb 79e890 0.00 : 79e854: 83 f8 02 cmp $0x2,%eax 0.00 : 79e857: 0f 84 43 03 00 00 je 79eba0 : */ : dumptuples(state, false); : break; : : default: : elog(ERROR, "invalid tuplesort state"); 0.00 : 79e85d: ba d0 2e 8e 00 mov $0x8e2ed0,%edx 0.00 : 79e862: be 23 05 00 00 mov $0x523,%esi 0.00 : 79e867: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79e86c: e8 af cb fd ff callq 77b420 0.00 : 79e871: be f0 29 8e 00 mov $0x8e29f0,%esi 0.00 : 79e876: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79e87b: 31 c0 xor %eax,%eax 0.00 : 79e87d: e8 ae c9 fd ff callq 77b230 0.00 : 79e882: e8 49 ac cc ff callq 4694d0 0.00 : 79e887: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79e88e: 00 00 : * as needed. Note that we try to grow the array when there is : * still one free slot remaining --- if we fail, there'll still be : * room to store the incoming tuple, and then we'll switch to : * tape-based operation. : */ : if (state->memtupcount >= state->memtupsize - 1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 0.72 : 79e890: 41 8b 4c 24 6c mov 0x6c(%r12),%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 5.07 : 79e895: 8b 57 68 mov 0x68(%rdi),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 4.35 : 79e898: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 79e89b: 89 d7 mov %edx,%edi 0.72 : 79e89d: 39 c2 cmp %eax,%edx 0.72 : 79e89f: 0f 8d 63 03 00 00 jge 79ec08 : { : (void) grow_memtuples(state); : Assert(state->memtupcount < state->memtupsize); : } : state->memtuples[state->memtupcount++] = *tuple; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 2.17 : 79e8a5: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 79e8a9: 49 8b 4c 24 60 mov 0x60(%r12),%rcx 1.45 : 79e8ae: 48 63 c7 movslq %edi,%rax 1.45 : 79e8b1: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79e8b5: 48 89 14 c1 mov %rdx,(%rcx,%rax,8) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 21.74 : 79e8b9: 48 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%rsi 0.00 : 79e8c0: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 0.72 : 79e8c1: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 79e8c5: 8d 57 01 lea 0x1(%rdi),%edx 0.00 : 79e8c8: 48 89 44 0e 08 mov %rax,0x8(%rsi,%rcx,1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 6.52 : 79e8cd: 49 8b 45 10 mov 0x10(%r13),%rax 7.25 : 79e8d1: 48 89 44 0e 10 mov %rax,0x10(%rsi,%rcx,1) : * Note that once we enter TSS_BOUNDED state we will always try to : * complete the sort that way. In the worst case, if later input : * tuples are larger than earlier ones, this might cause us to : * exceed workMem significantly. : */ : if (state->bounded && /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1231 4.35 : 79e8d6: 41 80 7c 24 09 00 cmpb $0x0,0x9(%r12) : if (state->memtupcount >= state->memtupsize - 1) : { : (void) grow_memtuples(state); : Assert(state->memtupcount < state->memtupsize); : } : state->memtuples[state->memtupcount++] = *tuple; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 3.62 : 79e8dc: 41 89 54 24 68 mov %edx,0x68(%r12) : * Note that once we enter TSS_BOUNDED state we will always try to : * complete the sort that way. In the worst case, if later input : * tuples are larger than earlier ones, this might cause us to : * exceed workMem significantly. : */ : if (state->bounded && /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1231 0.72 : 79e8e1: 74 1d je 79e900 0.00 : 79e8e3: 41 8b 4c 24 0c mov 0xc(%r12),%ecx 0.00 : 79e8e8: 8d 04 09 lea (%rcx,%rcx,1),%eax 0.00 : 79e8eb: 39 c2 cmp %eax,%edx 0.00 : 79e8ed: 0f 8f ad 03 00 00 jg 79eca0 0.00 : 79e8f3: 39 ca cmp %ecx,%edx 0.00 : 79e8f5: 0f 8f 95 03 00 00 jg 79ec90 0.00 : 79e8fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* : * Done if we still fit in available memory and have array slots. : */ : if (state->memtupcount < state->memtupsize && !LACKMEM(state)) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 1.45 : 79e900: 41 8b 74 24 6c mov 0x6c(%r12),%esi 2.90 : 79e905: 39 f2 cmp %esi,%edx 0.00 : 79e907: 7d 0d jge 79e916 0.00 : 79e909: 49 83 7c 24 10 00 cmpq $0x0,0x10(%r12) 0.00 : 79e90f: 90 nop 0.00 : 79e910: 0f 89 c0 02 00 00 jns 79ebd6 : * : * Note: you might be thinking we need to account for the memtuples[] : * array in this calculation, but we effectively treat that as part of the : * MERGE_BUFFER_SIZE workspace. : */ : mOrder = (allowedMem - TAPE_BUFFER_OVERHEAD) / 0.00 : 79e916: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 79e91b: 48 ba a1 0e ea a0 0e movabs $0xea0ea0ea0ea0ea1,%rdx 0.00 : 79e922: ea a0 0e 0.00 : 79e925: 48 8d 88 00 a0 ff ff lea -0x6000(%rax),%rcx 0.00 : 79e92c: 48 89 c8 mov %rcx,%rax 0.00 : 79e92f: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 79e933: 48 f7 ea imul %rdx : /* : * We must have at least 2*maxTapes slots in the memtuples[] array, else : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); 0.00 : 79e936: 89 f0 mov %esi,%eax : * : * Note: you might be thinking we need to account for the memtuples[] : * array in this calculation, but we effectively treat that as part of the : * MERGE_BUFFER_SIZE workspace. : */ : mOrder = (allowedMem - TAPE_BUFFER_OVERHEAD) / 0.00 : 79e938: 48 c1 fa 0e sar $0xe,%rdx 0.00 : 79e93c: 29 ca sub %ecx,%edx : ntuples, : j; : int64 tapeSpace; : : /* Compute number of tapes to use: merge order plus 1 */ : maxTapes = tuplesort_merge_order(state->allowedMem) + 1; 0.00 : 79e93e: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 79e943: 83 fa 06 cmp $0x6,%edx 0.00 : 79e946: 0f 4d ca cmovge %edx,%ecx : /* : * We must have at least 2*maxTapes slots in the memtuples[] array, else : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); 0.00 : 79e949: c1 e8 1f shr $0x1f,%eax 0.00 : 79e94c: 01 f0 add %esi,%eax : ntuples, : j; : int64 tapeSpace; : : /* Compute number of tapes to use: merge order plus 1 */ : maxTapes = tuplesort_merge_order(state->allowedMem) + 1; 0.00 : 79e94e: 83 c1 01 add $0x1,%ecx : /* : * We must have at least 2*maxTapes slots in the memtuples[] array, else : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); 0.00 : 79e951: d1 f8 sar %eax 0.00 : 79e953: 39 c1 cmp %eax,%ecx 0.00 : 79e955: 41 89 c7 mov %eax,%r15d 0.00 : 79e958: 44 0f 4e f9 cmovle %ecx,%r15d : : state->maxTapes = maxTapes; : state->tapeRange = maxTapes - 1; 0.00 : 79e95c: 41 8d 47 ff lea -0x1(%r15),%eax : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); : : state->maxTapes = maxTapes; 0.00 : 79e960: 45 89 7c 24 20 mov %r15d,0x20(%r12) : state->tapeRange = maxTapes - 1; 0.00 : 79e965: 41 89 44 24 24 mov %eax,0x24(%r12) : : #ifdef TRACE_SORT : if (trace_sort) 0.00 : 79e96a: 80 3d 6f bf 41 00 00 cmpb $0x0,0x41bf6f(%rip) # bba8e0 0.00 : 79e971: 0f 85 89 04 00 00 jne 79ee00 : * other scenarios the memtuples[] array is unlikely to occupy more than : * half of allowedMem. In the pass-by-value case it's not important to : * account for tuple space, so we don't care if LACKMEM becomes : * inaccurate.) : */ : tapeSpace = (int64) maxTapes *TAPE_BUFFER_OVERHEAD; 0.00 : 79e977: 4d 63 ef movslq %r15d,%r13 : : if (tapeSpace + GetMemoryChunkSpace(state->memtuples) < state->allowedMem) 0.00 : 79e97a: 49 8b 7c 24 60 mov 0x60(%r12),%rdi : * other scenarios the memtuples[] array is unlikely to occupy more than : * half of allowedMem. In the pass-by-value case it's not important to : * account for tuple space, so we don't care if LACKMEM becomes : * inaccurate.) : */ : tapeSpace = (int64) maxTapes *TAPE_BUFFER_OVERHEAD; 0.00 : 79e97f: 4b 8d 5c 6d 00 lea 0x0(%r13,%r13,2),%rbx 0.00 : 79e984: 48 c1 e3 0d shl $0xd,%rbx : : if (tapeSpace + GetMemoryChunkSpace(state->memtuples) < state->allowedMem) 0.00 : 79e988: e8 03 a1 ff ff callq 798a90 0.00 : 79e98d: 48 01 d8 add %rbx,%rax 0.00 : 79e990: 49 3b 44 24 18 cmp 0x18(%r12),%rax 0.00 : 79e995: 0f 82 0d 04 00 00 jb 79eda8 : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e99b: 4a 8d 1c ad 00 00 00 lea 0x0(,%r13,4),%rbx 0.00 : 79e9a2: 00 : : /* : * Make sure that the temp file(s) underlying the tape set are created in : * suitable temp tablespaces. : */ : PrepareTempTablespaces(); 0.00 : 79e9a3: e8 c8 05 df ff callq 58ef70 : : /* : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); 0.00 : 79e9a8: 44 89 ff mov %r15d,%edi 0.00 : 79e9ab: e8 b0 dd ff ff callq 79c760 : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); 0.00 : 79e9b0: 4c 89 ef mov %r13,%rdi : PrepareTempTablespaces(); : : /* : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); 0.00 : 79e9b3: 49 89 44 24 30 mov %rax,0x30(%r12) : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); 0.00 : 79e9b8: e8 b3 a5 ff ff callq 798f70 : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9bd: 48 89 df mov %rbx,%rdi : /* : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); 0.00 : 79e9c0: 49 89 44 24 78 mov %rax,0x78(%r12) : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9c5: e8 a6 a5 ff ff callq 798f70 : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9ca: 48 89 df mov %rbx,%rdi : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9cd: 49 89 84 24 80 00 00 mov %rax,0x80(%r12) 0.00 : 79e9d4: 00 : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9d5: e8 96 a5 ff ff callq 798f70 : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9da: 48 89 df mov %rbx,%rdi : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9dd: 49 89 84 24 88 00 00 mov %rax,0x88(%r12) 0.00 : 79e9e4: 00 : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9e5: e8 86 a5 ff ff callq 798f70 : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); 0.00 : 79e9ea: 4a 8d 3c ed 00 00 00 lea 0x0(,%r13,8),%rdi 0.00 : 79e9f1: 00 : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9f2: 49 89 84 24 90 00 00 mov %rax,0x90(%r12) 0.00 : 79e9f9: 00 : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); 0.00 : 79e9fa: e8 71 a5 ff ff callq 798f70 : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9ff: 48 89 df mov %rbx,%rdi : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); 0.00 : 79ea02: 49 89 84 24 98 00 00 mov %rax,0x98(%r12) 0.00 : 79ea09: 00 : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea0a: e8 61 a5 ff ff callq 798f70 : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea0f: 48 89 df mov %rbx,%rdi : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea12: 49 89 84 24 b0 00 00 mov %rax,0xb0(%r12) 0.00 : 79ea19: 00 : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea1a: e8 51 a5 ff ff callq 798f70 : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea1f: 48 89 df mov %rbx,%rdi : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea22: 49 89 84 24 b8 00 00 mov %rax,0xb8(%r12) 0.00 : 79ea29: 00 : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea2a: e8 41 a5 ff ff callq 798f70 : state->tp_tapenum = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea2f: 48 89 df mov %rbx,%rdi : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea32: 49 89 84 24 c0 00 00 mov %rax,0xc0(%r12) 0.00 : 79ea39: 00 : state->tp_tapenum = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea3a: e8 31 a5 ff ff callq 798f70 : * : * NOTE: we pass false for checkIndex since there's no point in comparing : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; 0.00 : 79ea3f: 45 8b 74 24 68 mov 0x68(%r12),%r14d : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_tapenum = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea44: 49 89 84 24 c8 00 00 mov %rax,0xc8(%r12) 0.00 : 79ea4b: 00 : * NOTE: we pass false for checkIndex since there's no point in comparing : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ 0.00 : 79ea4c: 41 c7 44 24 68 00 00 movl $0x0,0x68(%r12) 0.00 : 79ea53: 00 00 : for (j = 0; j < ntuples; j++) 0.00 : 79ea55: 45 85 f6 test %r14d,%r14d 0.00 : 79ea58: 7e 42 jle 79ea9c 0.00 : 79ea5a: 45 31 ed xor %r13d,%r13d 0.00 : 79ea5d: 31 db xor %ebx,%ebx 0.00 : 79ea5f: 90 nop : { : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[j]; 0.00 : 79ea60: 49 8b 54 24 60 mov 0x60(%r12),%rdx : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ea65: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 79ea69: 31 c9 xor %ecx,%ecx 0.00 : 79ea6b: 4c 89 e7 mov %r12,%rdi : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ : for (j = 0; j < ntuples; j++) 0.00 : 79ea6e: 41 83 c5 01 add $0x1,%r13d : { : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[j]; 0.00 : 79ea72: 48 8b 04 1a mov (%rdx,%rbx,1),%rax 0.00 : 79ea76: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 79ea7a: 48 8b 44 1a 08 mov 0x8(%rdx,%rbx,1),%rax 0.00 : 79ea7f: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 79ea83: 48 8b 44 1a 10 mov 0x10(%rdx,%rbx,1),%rax : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ea88: 31 d2 xor %edx,%edx : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ : for (j = 0; j < ntuples; j++) 0.00 : 79ea8a: 48 83 c3 18 add $0x18,%rbx : { : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[j]; 0.00 : 79ea8e: 48 89 45 c0 mov %rax,-0x40(%rbp) : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ea92: e8 39 e7 ff ff callq 79d1d0 : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ : for (j = 0; j < ntuples; j++) 0.00 : 79ea97: 45 39 ee cmp %r13d,%r14d 0.00 : 79ea9a: 7f c4 jg 79ea60 : state->currentRun = 0; : : /* : * Initialize variables of Algorithm D (step D1). : */ : for (j = 0; j < maxTapes; j++) 0.00 : 79ea9c: 45 85 ff test %r15d,%r15d : : tuplesort_heap_insert(state, &stup, 0, false); : } : Assert(state->memtupcount == ntuples); : : state->currentRun = 0; 0.00 : 79ea9f: 41 c7 44 24 74 00 00 movl $0x0,0x74(%r12) 0.00 : 79eaa6: 00 00 : : /* : * Initialize variables of Algorithm D (step D1). : */ : for (j = 0; j < maxTapes; j++) 0.00 : 79eaa8: 7e 4a jle 79eaf4 0.00 : 79eaaa: 31 c9 xor %ecx,%ecx 0.00 : 79eaac: 31 d2 xor %edx,%edx 0.00 : 79eaae: 66 90 xchg %ax,%ax : { : state->tp_fib[j] = 1; 0.00 : 79eab0: 49 8b 84 24 b0 00 00 mov 0xb0(%r12),%rax 0.00 : 79eab7: 00 0.00 : 79eab8: c7 04 10 01 00 00 00 movl $0x1,(%rax,%rdx,1) : state->tp_runs[j] = 0; 0.00 : 79eabf: 49 8b 84 24 b8 00 00 mov 0xb8(%r12),%rax 0.00 : 79eac6: 00 0.00 : 79eac7: c7 04 10 00 00 00 00 movl $0x0,(%rax,%rdx,1) : state->tp_dummy[j] = 1; 0.00 : 79eace: 49 8b 84 24 c0 00 00 mov 0xc0(%r12),%rax 0.00 : 79ead5: 00 0.00 : 79ead6: c7 04 10 01 00 00 00 movl $0x1,(%rax,%rdx,1) : state->tp_tapenum[j] = j; 0.00 : 79eadd: 49 8b 84 24 c8 00 00 mov 0xc8(%r12),%rax 0.00 : 79eae4: 00 0.00 : 79eae5: 89 0c 10 mov %ecx,(%rax,%rdx,1) : state->currentRun = 0; : : /* : * Initialize variables of Algorithm D (step D1). : */ : for (j = 0; j < maxTapes; j++) 0.00 : 79eae8: 83 c1 01 add $0x1,%ecx 0.00 : 79eaeb: 48 83 c2 04 add $0x4,%rdx 0.00 : 79eaef: 41 39 cf cmp %ecx,%r15d 0.00 : 79eaf2: 7f bc jg 79eab0 : state->tp_fib[j] = 1; : state->tp_runs[j] = 0; : state->tp_dummy[j] = 1; : state->tp_tapenum[j] = j; : } : state->tp_fib[state->tapeRange] = 0; 0.00 : 79eaf4: 49 63 54 24 24 movslq 0x24(%r12),%rdx 0.00 : 79eaf9: 49 8b 84 24 b0 00 00 mov 0xb0(%r12),%rax 0.00 : 79eb00: 00 : inittapes(state); : : /* : * Dump tuples until we are back under the limit. : */ : dumptuples(state, false); 0.00 : 79eb01: 31 f6 xor %esi,%esi 0.00 : 79eb03: 4c 89 e7 mov %r12,%rdi : state->tp_fib[j] = 1; : state->tp_runs[j] = 0; : state->tp_dummy[j] = 1; : state->tp_tapenum[j] = j; : } : state->tp_fib[state->tapeRange] = 0; 0.00 : 79eb06: c7 04 90 00 00 00 00 movl $0x0,(%rax,%rdx,4) : state->tp_dummy[state->tapeRange] = 0; 0.00 : 79eb0d: 49 63 54 24 24 movslq 0x24(%r12),%rdx 0.00 : 79eb12: 49 8b 84 24 c0 00 00 mov 0xc0(%r12),%rax 0.00 : 79eb19: 00 0.00 : 79eb1a: c7 04 90 00 00 00 00 movl $0x0,(%rax,%rdx,4) : : state->Level = 1; 0.00 : 79eb21: 41 c7 84 24 a8 00 00 movl $0x1,0xa8(%r12) 0.00 : 79eb28: 00 01 00 00 00 : state->destTape = 0; 0.00 : 79eb2d: 41 c7 84 24 ac 00 00 movl $0x0,0xac(%r12) 0.00 : 79eb34: 00 00 00 00 00 : : state->status = TSS_BUILDRUNS; 0.00 : 79eb39: 41 c7 04 24 02 00 00 movl $0x2,(%r12) 0.00 : 79eb40: 00 : inittapes(state); : : /* : * Dump tuples until we are back under the limit. : */ : dumptuples(state, false); 0.00 : 79eb41: e8 da f7 ff ff callq 79e320 : break; 0.00 : 79eb46: e9 8b 00 00 00 jmpq 79ebd6 0.00 : 79eb4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * good speed optimization, too, since when there are many more : * input tuples than the bound, most input tuples can be discarded : * with just this one comparison. Note that because we currently : * have the sort direction reversed, we must check for <= not >=. : */ : if (COMPARETUP(state, tuple, &state->memtuples[0]) <= 0) 0.00 : 79eb50: 48 8b 77 60 mov 0x60(%rdi),%rsi 0.00 : 79eb54: 48 89 fa mov %rdi,%rdx 0.00 : 79eb57: 4c 89 ef mov %r13,%rdi 0.00 : 79eb5a: 41 ff 54 24 38 callq *0x38(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1272 0.72 : 79eb5f: 85 c0 test %eax,%eax 0.00 : 79eb61: 0f 8e 81 00 00 00 jle 79ebe8 : CHECK_FOR_INTERRUPTS(); : } : else : { : /* discard top of heap, sift up, insert new tuple */ : free_sort_tuple(state, &state->memtuples[0]); 0.00 : 79eb67: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 79eb6c: 4c 89 e7 mov %r12,%rdi 0.00 : 79eb6f: e8 1c ed ff ff callq 79d890 : tuplesort_heap_siftup(state, false); 0.00 : 79eb74: 4c 89 e7 mov %r12,%rdi 0.00 : 79eb77: 31 f6 xor %esi,%esi 0.00 : 79eb79: e8 62 e4 ff ff callq 79cfe0 : tuplesort_heap_insert(state, tuple, 0, false); 0.00 : 79eb7e: 4c 89 ee mov %r13,%rsi 0.00 : 79eb81: 4c 89 e7 mov %r12,%rdi 0.00 : 79eb84: 31 c9 xor %ecx,%ecx 0.00 : 79eb86: 31 d2 xor %edx,%edx 0.00 : 79eb88: e8 43 e6 ff ff callq 79d1d0 : : default: : elog(ERROR, "invalid tuplesort state"); : break; : } : } 0.00 : 79eb8d: 48 83 c4 28 add $0x28,%rsp 0.00 : 79eb91: 5b pop %rbx 0.00 : 79eb92: 41 5c pop %r12 0.00 : 79eb94: 41 5d pop %r13 0.00 : 79eb96: 41 5e pop %r14 0.00 : 79eb98: 41 5f pop %r15 0.00 : 79eb9a: c9 leaveq 0.00 : 79eb9b: c3 retq 0.00 : 79eb9c: 0f 1f 40 00 nopl 0x0(%rax) : * : * Note there will always be at least one tuple in the heap at : * this point; see dumptuples. : */ : Assert(state->memtupcount > 0); : if (COMPARETUP(state, tuple, &state->memtuples[0]) >= 0) 0.00 : 79eba0: 48 8b 77 60 mov 0x60(%rdi),%rsi 0.00 : 79eba4: 48 89 fa mov %rdi,%rdx 0.00 : 79eba7: 4c 89 ef mov %r13,%rdi 0.00 : 79ebaa: 41 ff 54 24 38 callq *0x38(%r12) 0.00 : 79ebaf: 85 c0 test %eax,%eax 0.00 : 79ebb1: 0f 88 b9 00 00 00 js 79ec70 : tuplesort_heap_insert(state, tuple, state->currentRun, true); 0.00 : 79ebb7: 41 8b 54 24 74 mov 0x74(%r12),%edx 0.00 : 79ebbc: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 79ebc1: 4c 89 ee mov %r13,%rsi 0.00 : 79ebc4: 4c 89 e7 mov %r12,%rdi 0.00 : 79ebc7: e8 04 e6 ff ff callq 79d1d0 : tuplesort_heap_insert(state, tuple, state->currentRun + 1, true); : : /* : * If we are over the memory limit, dump tuples till we're under. : */ : dumptuples(state, false); 0.00 : 79ebcc: 31 f6 xor %esi,%esi 0.00 : 79ebce: 4c 89 e7 mov %r12,%rdi 0.00 : 79ebd1: e8 4a f7 ff ff callq 79e320 : : default: : elog(ERROR, "invalid tuplesort state"); : break; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.45 : 79ebd6: 48 83 c4 28 add $0x28,%rsp 2.17 : 79ebda: 5b pop %rbx 4.35 : 79ebdb: 41 5c pop %r12 1.45 : 79ebdd: 41 5d pop %r13 3.62 : 79ebdf: 41 5e pop %r14 0.00 : 79ebe1: 41 5f pop %r15 1.45 : 79ebe3: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 5.07 : 79ebe4: c3 retq 0.00 : 79ebe5: 0f 1f 00 nopl (%rax) : * have the sort direction reversed, we must check for <= not >=. : */ : if (COMPARETUP(state, tuple, &state->memtuples[0]) <= 0) : { : /* new tuple <= top of the heap, so we can discard it */ : free_sort_tuple(state, tuple); 0.00 : 79ebe8: 4c 89 ee mov %r13,%rsi 0.00 : 79ebeb: 4c 89 e7 mov %r12,%rdi 0.00 : 79ebee: e8 9d ec ff ff callq 79d890 : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1276 0.72 : 79ebf3: 0f b6 05 96 b4 41 00 movzbl 0x41b496(%rip),%eax # bba090 0.00 : 79ebfa: 84 c0 test %al,%al 0.00 : 79ebfc: 74 d8 je 79ebd6 0.00 : 79ebfe: e8 9d d6 ef ff callq 69c2a0 0.00 : 79ec03: eb d1 jmp 79ebd6 0.00 : 79ec05: 0f 1f 00 nopl (%rax) : int newmemtupsize; : int memtupsize = state->memtupsize; : int64 memNowUsed = state->allowedMem - state->availMem; : : /* Forget it if we've already maxed out memtuples, per comment above */ : if (!state->growmemtuples) 0.00 : 79ec08: 41 80 7c 24 70 00 cmpb $0x0,0x70(%r12) : static bool : grow_memtuples(Tuplesortstate *state) : { : int newmemtupsize; : int memtupsize = state->memtupsize; : int64 memNowUsed = state->allowedMem - state->availMem; 0.00 : 79ec0e: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 79ec13: 4d 8b 74 24 10 mov 0x10(%r12),%r14 : : /* Forget it if we've already maxed out memtuples, per comment above */ : if (!state->growmemtuples) 0.00 : 79ec18: 0f 84 87 fc ff ff je 79e8a5 : static bool : grow_memtuples(Tuplesortstate *state) : { : int newmemtupsize; : int memtupsize = state->memtupsize; : int64 memNowUsed = state->allowedMem - state->availMem; 0.00 : 79ec1e: 48 89 f0 mov %rsi,%rax 0.00 : 79ec21: 4c 29 f0 sub %r14,%rax : /* Forget it if we've already maxed out memtuples, per comment above */ : if (!state->growmemtuples) : return false; : : /* Select new value of memtupsize */ : if (memNowUsed <= state->availMem) 0.00 : 79ec24: 49 39 c6 cmp %rax,%r14 0.00 : 79ec27: 0f 8c 13 02 00 00 jl 79ee40 : { : /* : * We've used no more than half of allowedMem; double our usage, : * clamping at INT_MAX tuples. : */ : if (memtupsize < INT_MAX / 2) 0.00 : 79ec2d: 81 f9 fe ff ff 3f cmp $0x3ffffffe,%ecx 0.00 : 79ec33: 0f 8f 47 02 00 00 jg 79ee80 : newmemtupsize = memtupsize * 2; 0.00 : 79ec39: 8d 1c 09 lea (%rcx,%rcx,1),%ebx : /* We won't make any further enlargement attempts */ : state->growmemtuples = false; : } : : /* Must enlarge array by at least one element, else report failure */ : if (newmemtupsize <= memtupsize) 0.00 : 79ec3c: 39 d9 cmp %ebx,%ecx 0.00 : 79ec3e: 7d 1f jge 79ec5f : * to ensure our request won't be rejected. Note that we can easily : * exhaust address space before facing this outcome. (This is presently : * impossible due to guc.c's MAX_KILOBYTES limitation on work_mem, but : * don't rely on that at this distance.) : */ : if ((Size) newmemtupsize >= MaxAllocHugeSize / sizeof(SortTuple)) 0.00 : 79ec40: 85 db test %ebx,%ebx 0.00 : 79ec42: 0f 88 9d 02 00 00 js 79eee5 : * array were to increase. That shouldn't happen with any sane value of : * allowedMem, because at any array size large enough to risk LACKMEM, : * palloc would be treating both old and new arrays as separate chunks. : * But we'll check LACKMEM explicitly below just in case.) : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) 0.00 : 79ec48: 89 d8 mov %ebx,%eax 0.00 : 79ec4a: 29 c8 sub %ecx,%eax 0.00 : 79ec4c: 48 98 cltq 0.00 : 79ec4e: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79ec52: 48 c1 e0 03 shl $0x3,%rax 0.00 : 79ec56: 49 39 c6 cmp %rax,%r14 0.00 : 79ec59: 0f 8d 31 02 00 00 jge 79ee90 : elog(ERROR, "unexpected out-of-memory situation during sort"); : return true; : : noalloc: : /* If for any reason we didn't realloc, shut off future attempts */ : state->growmemtuples = false; 0.00 : 79ec5f: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79ec65: 89 d7 mov %edx,%edi 0.00 : 79ec67: e9 39 fc ff ff jmpq 79e8a5 0.00 : 79ec6c: 0f 1f 40 00 nopl 0x0(%rax) : */ : Assert(state->memtupcount > 0); : if (COMPARETUP(state, tuple, &state->memtuples[0]) >= 0) : tuplesort_heap_insert(state, tuple, state->currentRun, true); : else : tuplesort_heap_insert(state, tuple, state->currentRun + 1, true); 0.00 : 79ec70: 41 8b 54 24 74 mov 0x74(%r12),%edx 0.00 : 79ec75: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 79ec7a: 4c 89 ee mov %r13,%rsi 0.00 : 79ec7d: 4c 89 e7 mov %r12,%rdi 0.00 : 79ec80: 83 c2 01 add $0x1,%edx 0.00 : 79ec83: e8 48 e5 ff ff callq 79d1d0 0.00 : 79ec88: e9 3f ff ff ff jmpq 79ebcc 0.00 : 79ec8d: 0f 1f 00 nopl (%rax) : * Note that once we enter TSS_BOUNDED state we will always try to : * complete the sort that way. In the worst case, if later input : * tuples are larger than earlier ones, this might cause us to : * exceed workMem significantly. : */ : if (state->bounded && 0.00 : 79ec90: 49 83 7c 24 10 00 cmpq $0x0,0x10(%r12) 0.00 : 79ec96: 0f 89 64 fc ff ff jns 79e900 0.00 : 79ec9c: 0f 1f 40 00 nopl 0x0(%rax) : (state->memtupcount > state->bound * 2 || : (state->memtupcount > state->bound && LACKMEM(state)))) : { : #ifdef TRACE_SORT : if (trace_sort) 0.00 : 79eca0: 80 3d 39 bc 41 00 00 cmpb $0x0,0x41bc39(%rip) # bba8e0 0.00 : 79eca7: 0f 85 0b 01 00 00 jne 79edb8 : * the direction of comparison for tupindexes. : */ : static void : make_bounded_heap(Tuplesortstate *state) : { : int tupcount = state->memtupcount; 0.00 : 79ecad: 45 8b 6c 24 68 mov 0x68(%r12),%r13d : Assert(state->status == TSS_INITIAL); : Assert(state->bounded); : Assert(tupcount >= state->bound); : : /* Reverse sort direction so largest entry will be at root */ : REVERSEDIRECTION(state); 0.00 : 79ecb2: 4c 89 e7 mov %r12,%rdi 0.00 : 79ecb5: 41 ff 54 24 58 callq *0x58(%r12) : : state->memtupcount = 0; /* make the heap empty */ 0.00 : 79ecba: 41 c7 44 24 68 00 00 movl $0x0,0x68(%r12) 0.00 : 79ecc1: 00 00 : for (i = 0; i < tupcount; i++) 0.00 : 79ecc3: 45 85 ed test %r13d,%r13d 0.00 : 79ecc6: 0f 8e 9c 00 00 00 jle 79ed68 0.00 : 79eccc: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 79ecd0: 31 db xor %ebx,%ebx : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ecd2: 4c 8d 75 b0 lea -0x50(%rbp),%r14 : : /* Reverse sort direction so largest entry will be at root */ : REVERSEDIRECTION(state); : : state->memtupcount = 0; /* make the heap empty */ : for (i = 0; i < tupcount; i++) 0.00 : 79ecd6: 48 8d 44 40 03 lea 0x3(%rax,%rax,2),%rax 0.00 : 79ecdb: 4c 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%r13 0.00 : 79ece2: 00 0.00 : 79ece3: eb 0c jmp 79ecf1 0.00 : 79ece5: 0f 1f 00 nopl (%rax) : : /* If heap too full, discard largest entry */ : if (state->memtupcount > state->bound) : { : free_sort_tuple(state, &state->memtuples[0]); : tuplesort_heap_siftup(state, false); 0.00 : 79ece8: 48 83 c3 18 add $0x18,%rbx : : /* Reverse sort direction so largest entry will be at root */ : REVERSEDIRECTION(state); : : state->memtupcount = 0; /* make the heap empty */ : for (i = 0; i < tupcount; i++) 0.00 : 79ecec: 4c 39 eb cmp %r13,%rbx 0.00 : 79ecef: 74 77 je 79ed68 : { : if (state->memtupcount >= state->bound && 0.00 : 79ecf1: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 79ecf6: 41 3b 44 24 0c cmp 0xc(%r12),%eax 0.00 : 79ecfb: 7c 15 jl 79ed12 0.00 : 79ecfd: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 79ed02: 4c 89 e2 mov %r12,%rdx 0.00 : 79ed05: 48 8d 3c 1e lea (%rsi,%rbx,1),%rdi 0.00 : 79ed09: 41 ff 54 24 38 callq *0x38(%r12) 0.00 : 79ed0e: 85 c0 test %eax,%eax 0.00 : 79ed10: 7e 66 jle 79ed78 : } : else : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; 0.00 : 79ed12: 49 8b 54 24 60 mov 0x60(%r12),%rdx : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ed17: 31 c9 xor %ecx,%ecx 0.00 : 79ed19: 4c 89 f6 mov %r14,%rsi 0.00 : 79ed1c: 4c 89 e7 mov %r12,%rdi : } : else : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; 0.00 : 79ed1f: 48 8b 04 1a mov (%rdx,%rbx,1),%rax 0.00 : 79ed23: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 79ed27: 48 8b 44 1a 08 mov 0x8(%rdx,%rbx,1),%rax 0.00 : 79ed2c: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 79ed30: 48 8b 44 1a 10 mov 0x10(%rdx,%rbx,1),%rax : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ed35: 31 d2 xor %edx,%edx : } : else : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; 0.00 : 79ed37: 48 89 45 c0 mov %rax,-0x40(%rbp) : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ed3b: e8 90 e4 ff ff callq 79d1d0 : : /* If heap too full, discard largest entry */ : if (state->memtupcount > state->bound) 0.00 : 79ed40: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 79ed45: 41 3b 44 24 0c cmp 0xc(%r12),%eax 0.00 : 79ed4a: 7e 9c jle 79ece8 : { : free_sort_tuple(state, &state->memtuples[0]); 0.00 : 79ed4c: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 79ed51: 4c 89 e7 mov %r12,%rdi 0.00 : 79ed54: e8 37 eb ff ff callq 79d890 : tuplesort_heap_siftup(state, false); 0.00 : 79ed59: 31 f6 xor %esi,%esi 0.00 : 79ed5b: 4c 89 e7 mov %r12,%rdi 0.00 : 79ed5e: e8 7d e2 ff ff callq 79cfe0 0.00 : 79ed63: eb 83 jmp 79ece8 0.00 : 79ed65: 0f 1f 00 nopl (%rax) : } : } : } : : Assert(state->memtupcount == state->bound); : state->status = TSS_BOUNDED; 0.00 : 79ed68: 41 c7 04 24 01 00 00 movl $0x1,(%r12) 0.00 : 79ed6f: 00 : : default: : elog(ERROR, "invalid tuplesort state"); : break; : } : } 0.00 : 79ed70: e9 61 fe ff ff jmpq 79ebd6 0.00 : 79ed75: 0f 1f 00 nopl (%rax) : { : if (state->memtupcount >= state->bound && : COMPARETUP(state, &state->memtuples[i], &state->memtuples[0]) <= 0) : { : /* New tuple would just get thrown out, so skip it */ : free_sort_tuple(state, &state->memtuples[i]); 0.00 : 79ed78: 48 89 de mov %rbx,%rsi 0.00 : 79ed7b: 49 03 74 24 60 add 0x60(%r12),%rsi 0.00 : 79ed80: 4c 89 e7 mov %r12,%rdi 0.00 : 79ed83: e8 08 eb ff ff callq 79d890 : CHECK_FOR_INTERRUPTS(); 0.00 : 79ed88: 0f b6 05 01 b3 41 00 movzbl 0x41b301(%rip),%eax # bba090 0.00 : 79ed8f: 84 c0 test %al,%al 0.00 : 79ed91: 0f 84 51 ff ff ff je 79ece8 0.00 : 79ed97: e8 04 d5 ef ff callq 69c2a0 0.00 : 79ed9c: e9 47 ff ff ff jmpq 79ece8 0.00 : 79eda1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * inaccurate.) : */ : tapeSpace = (int64) maxTapes *TAPE_BUFFER_OVERHEAD; : : if (tapeSpace + GetMemoryChunkSpace(state->memtuples) < state->allowedMem) : USEMEM(state, tapeSpace); 0.00 : 79eda8: 49 29 5c 24 10 sub %rbx,0x10(%r12) 0.00 : 79edad: 0f 1f 00 nopl (%rax) 0.00 : 79edb0: e9 e6 fb ff ff jmpq 79e99b 0.00 : 79edb5: 0f 1f 00 nopl (%rax) : (state->memtupcount > state->bound * 2 || : (state->memtupcount > state->bound && LACKMEM(state)))) : { : #ifdef TRACE_SORT : if (trace_sort) : elog(LOG, "switching to bounded heapsort at %d tuples: %s", 0.00 : 79edb8: ba d0 2e 8e 00 mov $0x8e2ed0,%edx 0.00 : 79edbd: be d7 04 00 00 mov $0x4d7,%esi 0.00 : 79edc2: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79edc7: e8 54 c6 fd ff callq 77b420 0.00 : 79edcc: 49 8d bc 24 48 01 00 lea 0x148(%r12),%rdi 0.00 : 79edd3: 00 0.00 : 79edd4: e8 b7 6c ff ff callq 795a90 0.00 : 79edd9: 41 8b 54 24 68 mov 0x68(%r12),%edx 0.00 : 79edde: 48 89 c1 mov %rax,%rcx 0.00 : 79ede1: be 88 2b 8e 00 mov $0x8e2b88,%esi 0.00 : 79ede6: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 79edeb: 31 c0 xor %eax,%eax 0.00 : 79eded: e8 3e c4 fd ff callq 77b230 0.00 : 79edf2: e9 b6 fe ff ff jmpq 79ecad 0.00 : 79edf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79edfe: 00 00 : state->maxTapes = maxTapes; : state->tapeRange = maxTapes - 1; : : #ifdef TRACE_SORT : if (trace_sort) : elog(LOG, "switching to external sort with %d tapes: %s", 0.00 : 79ee00: ba ef 2e 8e 00 mov $0x8e2eef,%edx 0.00 : 79ee05: be 3c 07 00 00 mov $0x73c,%esi 0.00 : 79ee0a: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79ee0f: e8 0c c6 fd ff callq 77b420 0.00 : 79ee14: 49 8d bc 24 48 01 00 lea 0x148(%r12),%rdi 0.00 : 79ee1b: 00 0.00 : 79ee1c: e8 6f 6c ff ff callq 795a90 0.00 : 79ee21: 44 89 fa mov %r15d,%edx 0.00 : 79ee24: 48 89 c1 mov %rax,%rcx 0.00 : 79ee27: be b8 2b 8e 00 mov $0x8e2bb8,%esi 0.00 : 79ee2c: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 79ee31: 31 c0 xor %eax,%eax 0.00 : 79ee33: e8 f8 c3 fd ff callq 77b230 0.00 : 79ee38: e9 3a fb ff ff jmpq 79e977 0.00 : 79ee3d: 0f 1f 00 nopl (%rax) : * really bad from happening. : */ : double grow_ratio; : : grow_ratio = (double) state->allowedMem / (double) memNowUsed; : if (memtupsize * grow_ratio < INT_MAX) 0.00 : 79ee40: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 79ee45: bb ff ff ff 7f mov $0x7fffffff,%ebx 0.00 : 79ee4a: f2 48 0f 2a ce cvtsi2sd %rsi,%xmm1 0.00 : 79ee4f: f2 0f 5e c8 divsd %xmm0,%xmm1 0.00 : 79ee53: f2 0f 2a c1 cvtsi2sd %ecx,%xmm0 0.00 : 79ee57: f2 0f 59 c8 mulsd %xmm0,%xmm1 0.00 : 79ee5b: 66 0f 2e 0d b5 24 01 ucomisd 0x124b5(%rip),%xmm1 # 7b1318 <__func__.11700+0x18> 0.00 : 79ee62: 00 0.00 : 79ee63: 73 06 jae 79ee6b 0.00 : 79ee65: 7a 04 jp 79ee6b : newmemtupsize = (int) (memtupsize * grow_ratio); 0.00 : 79ee67: f2 0f 2c d9 cvttsd2si %xmm1,%ebx : else : newmemtupsize = INT_MAX; : : /* We won't make any further enlargement attempts */ : state->growmemtuples = false; 0.00 : 79ee6b: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79ee71: e9 c6 fd ff ff jmpq 79ec3c 0.00 : 79ee76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79ee7d: 00 00 00 : if (memtupsize < INT_MAX / 2) : newmemtupsize = memtupsize * 2; : else : { : newmemtupsize = INT_MAX; : state->growmemtuples = false; 0.00 : 79ee80: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79ee86: bb ff ff ff 7f mov $0x7fffffff,%ebx 0.00 : 79ee8b: e9 ac fd ff ff jmpq 79ec3c : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79ee90: 49 8b 7c 24 60 mov 0x60(%r12),%rdi 0.00 : 79ee95: e8 f6 9b ff ff callq 798a90 : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79ee9a: 48 63 f3 movslq %ebx,%rsi 0.00 : 79ee9d: 49 8b 7c 24 60 mov 0x60(%r12),%rdi : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eea2: 4c 01 f0 add %r14,%rax : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79eea5: 48 8d 34 76 lea (%rsi,%rsi,2),%rsi : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); : state->memtupsize = newmemtupsize; 0.00 : 79eea9: 41 89 5c 24 6c mov %ebx,0x6c(%r12) : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eeae: 49 89 44 24 10 mov %rax,0x10(%r12) : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79eeb3: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 79eeb7: e8 74 9d ff ff callq 798c30 : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eebc: 49 8b 5c 24 10 mov 0x10(%r12),%rbx : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79eec1: 48 89 c7 mov %rax,%rdi 0.00 : 79eec4: 49 89 44 24 60 mov %rax,0x60(%r12) : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eec9: e8 c2 9b ff ff callq 798a90 0.00 : 79eece: 48 29 c3 sub %rax,%rbx : if (LACKMEM(state)) 0.00 : 79eed1: 48 85 db test %rbx,%rbx : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eed4: 49 89 5c 24 10 mov %rbx,0x10(%r12) : if (LACKMEM(state)) 0.00 : 79eed9: 78 1a js 79eef5 0.00 : 79eedb: 41 8b 7c 24 68 mov 0x68(%r12),%edi 0.00 : 79eee0: e9 c0 f9 ff ff jmpq 79e8a5 : * don't rely on that at this distance.) : */ : if ((Size) newmemtupsize >= MaxAllocHugeSize / sizeof(SortTuple)) : { : newmemtupsize = (int) (MaxAllocHugeSize / sizeof(SortTuple)); : state->growmemtuples = false; /* can't grow any more */ 0.00 : 79eee5: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79eeeb: bb 55 55 55 55 mov $0x55555555,%ebx 0.00 : 79eef0: e9 53 fd ff ff jmpq 79ec48 : state->memtuples = (SortTuple *) : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); : if (LACKMEM(state)) : elog(ERROR, "unexpected out-of-memory situation during sort"); 0.00 : 79eef5: ba e0 2e 8e 00 mov $0x8e2ee0,%edx 0.00 : 79eefa: be 3b 04 00 00 mov $0x43b,%esi 0.00 : 79eeff: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79ef04: e8 17 c5 fd ff callq 77b420 0.00 : 79ef09: be 58 2b 8e 00 mov $0x8e2b58,%esi 0.00 : 79ef0e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79ef13: 31 c0 xor %eax,%eax 0.00 : 79ef15: e8 16 c3 fd ff callq 77b230 0.00 : 79ef1a: e8 b1 a5 cc ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:238 9.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 8.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:234 8.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:234 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 6.15 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 6.15 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:253 3.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 3.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 3.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:213 3.85 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:253 3.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 3.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:245 3.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 2.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:253 1.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:234 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:253 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bf250 : : * Evaluate any runtime key values, and update the scankeys. : */ : void : ExecIndexEvalRuntimeKeys(ExprContext *econtext, : IndexRuntimeKeyInfo *runtimeKeys, int numRuntimeKeys) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 : 5bf250: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 9.23 : 5bf251: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 : 5bf254: 41 57 push %r15 0.77 : 5bf256: 49 89 ff mov %rdi,%r15 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 6.15 : 5bf259: 41 56 push %r14 0.00 : 5bf25b: 41 89 d6 mov %edx,%r14d 0.00 : 5bf25e: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:203 0.77 : 5bf260: 41 54 push %r12 3.85 : 5bf262: 53 push %rbx 1.54 : 5bf263: 48 83 ec 18 sub $0x18,%rsp : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 0.77 : 5bf267: 48 8b 05 f2 b5 5f 00 mov 0x5fb5f2(%rip),%rax # bba860 : MemoryContext oldContext; : : /* We want to keep the key values in per-tuple memory */ : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (j = 0; j < numRuntimeKeys; j++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 3.08 : 5bf26e: 85 d2 test %edx,%edx 0.00 : 5bf270: 48 89 45 c0 mov %rax,-0x40(%rbp) : : CurrentMemoryContext = context; 0.00 : 5bf274: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 5bf278: 48 89 05 e1 b5 5f 00 mov %rax,0x5fb5e1(%rip) # bba860 3.85 : 5bf27f: 7e 5d jle 5bf2de 0.00 : 5bf281: 49 89 f4 mov %rsi,%r12 0.77 : 5bf284: 45 31 ed xor %r13d,%r13d 0.77 : 5bf287: eb 1b jmp 5bf2a4 0.00 : 5bf289: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5bf290: 41 83 c5 01 add $0x1,%r13d : &isNull, : NULL); : if (isNull) : { : scan_key->sk_argument = scanvalue; : scan_key->sk_flags |= SK_ISNULL; 0.00 : 5bf294: 83 0b 01 orl $0x1,(%rbx) : MemoryContext oldContext; : : /* We want to keep the key values in per-tuple memory */ : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (j = 0; j < numRuntimeKeys; j++) 0.00 : 5bf297: 49 83 c4 18 add $0x18,%r12 0.00 : 5bf29b: 45 39 ee cmp %r13d,%r14d : econtext, : &isNull, : NULL); : if (isNull) : { : scan_key->sk_argument = scanvalue; 0.00 : 5bf29e: 48 89 43 40 mov %rax,0x40(%rbx) : MemoryContext oldContext; : : /* We want to keep the key values in per-tuple memory */ : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (j = 0; j < numRuntimeKeys; j++) 0.00 : 5bf2a2: 7e 3a jle 5bf2de : { : ScanKey scan_key = runtimeKeys[j].scan_key; : ExprState *key_expr = runtimeKeys[j].key_expr; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:213 3.85 : 5bf2a4: 49 8b 44 24 08 mov 0x8(%r12),%rax : * It's also entirely possible that the result of the eval is a : * toasted value. In this case we should forcibly detoast it, to : * avoid repeat detoastings each time the value is examined by an : * index support function. : */ : scanvalue = ExecEvalExpr(key_expr, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:234 8.46 : 5bf2a9: 31 c9 xor %ecx,%ecx : /* We want to keep the key values in per-tuple memory */ : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (j = 0; j < numRuntimeKeys; j++) : { : ScanKey scan_key = runtimeKeys[j].scan_key; 0.00 : 5bf2ab: 49 8b 1c 24 mov (%r12),%rbx : * It's also entirely possible that the result of the eval is a : * toasted value. In this case we should forcibly detoast it, to : * avoid repeat detoastings each time the value is examined by an : * index support function. : */ : scanvalue = ExecEvalExpr(key_expr, 8.46 : 5bf2af: 48 8d 55 d7 lea -0x29(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:234 0.77 : 5bf2b3: 4c 89 fe mov %r15,%rsi 0.00 : 5bf2b6: 48 89 c7 mov %rax,%rdi 0.00 : 5bf2b9: ff 50 10 callq *0x10(%rax) : econtext, : &isNull, : NULL); : if (isNull) 0.00 : 5bf2bc: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:238 17.69 : 5bf2c0: 75 ce jne 5bf290 : scan_key->sk_argument = scanvalue; : scan_key->sk_flags |= SK_ISNULL; : } : else : { : if (runtimeKeys[j].key_toastable) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:245 3.08 : 5bf2c2: 41 80 7c 24 10 00 cmpb $0x0,0x10(%r12) 0.00 : 5bf2c8: 75 36 jne 5bf300 : MemoryContext oldContext; : : /* We want to keep the key values in per-tuple memory */ : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (j = 0; j < numRuntimeKeys; j++) 0.00 : 5bf2ca: 41 83 c5 01 add $0x1,%r13d : else : { : if (runtimeKeys[j].key_toastable) : scanvalue = PointerGetDatum(PG_DETOAST_DATUM(scanvalue)); : scan_key->sk_argument = scanvalue; : scan_key->sk_flags &= ~SK_ISNULL; 0.00 : 5bf2ce: 83 23 fe andl $0xfffffffe,(%rbx) : MemoryContext oldContext; : : /* We want to keep the key values in per-tuple memory */ : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (j = 0; j < numRuntimeKeys; j++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 7.69 : 5bf2d1: 49 83 c4 18 add $0x18,%r12 0.00 : 5bf2d5: 45 39 ee cmp %r13d,%r14d : } : else : { : if (runtimeKeys[j].key_toastable) : scanvalue = PointerGetDatum(PG_DETOAST_DATUM(scanvalue)); : scan_key->sk_argument = scanvalue; 0.00 : 5bf2d8: 48 89 43 40 mov %rax,0x40(%rbx) : MemoryContext oldContext; : : /* We want to keep the key values in per-tuple memory */ : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (j = 0; j < numRuntimeKeys; j++) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:210 3.08 : 5bf2dc: 7f c6 jg 5bf2a4 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 0.77 : 5bf2de: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 5bf2e2: 48 89 05 77 b5 5f 00 mov %rax,0x5fb577(%rip) # bba860 : scan_key->sk_flags &= ~SK_ISNULL; : } : } : : MemoryContextSwitchTo(oldContext); : } 0.00 : 5bf2e9: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:253 3.85 : 5bf2ed: 5b pop %rbx 0.00 : 5bf2ee: 41 5c pop %r12 0.77 : 5bf2f0: 41 5d pop %r13 2.31 : 5bf2f2: 41 5e pop %r14 0.00 : 5bf2f4: 41 5f pop %r15 0.00 : 5bf2f6: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:253 6.15 : 5bf2f7: c3 retq 0.00 : 5bf2f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5bf2ff: 00 : scan_key->sk_flags |= SK_ISNULL; : } : else : { : if (runtimeKeys[j].key_toastable) : scanvalue = PointerGetDatum(PG_DETOAST_DATUM(scanvalue)); 0.00 : 5bf300: 48 89 c7 mov %rax,%rdi 0.00 : 5bf303: e8 08 fa 1b 00 callq 77ed10 0.00 : 5bf308: eb c0 jmp 5bf2ca Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2639 23.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2640 21.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2639 11.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 4.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2639 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2644 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2641 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2644 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3770 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) < 0); : } : : Datum : float48le(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2639 24.49 : 6d3770: 55 push %rbp 21.43 : 6d3771: 48 89 e5 mov %rsp,%rbp 0.00 : 6d3774: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2639 3.06 : 6d3775: 48 89 fb mov %rdi,%rbx 0.00 : 6d3778: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d377c: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2640 23.47 : 6d3780: e8 2b a2 0a 00 callq 77d9b0 : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2641 1.02 : 6d3785: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float48le(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d3789: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); 0.00 : 6d378e: e8 3d a2 0a 00 callq 77d9d0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) <= 0); 0.00 : 6d3793: f3 0f 10 55 f4 movss -0xc(%rbp),%xmm2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 3.06 : 6d3798: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 6d379c: 0f 5a d2 cvtps2pd %xmm2,%xmm2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 11.22 : 6d379f: 66 0f 28 c2 movapd %xmm2,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 3.06 : 6d37a3: e8 78 f7 ff ff callq 6d2f20 1.02 : 6d37a8: 85 c0 test %eax,%eax 0.00 : 6d37aa: 0f 9e c0 setle %al : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2644 1.02 : 6d37ad: 48 83 c4 08 add $0x8,%rsp : float48le(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float8 arg2 = PG_GETARG_FLOAT8(1); : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) <= 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2643 4.08 : 6d37b1: 0f b6 c0 movzbl %al,%eax : } 0.00 : 6d37b4: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2644 3.06 : 6d37b5: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 10.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:714 9.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:718 7.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:718 6.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 6.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:715 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:715 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:713 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:714 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:718 3.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 3.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 3.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:718 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:712 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:712 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:713 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:713 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:715 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a8fe0 <_bt_relandgetbuf>: : * convenience. The only case where it saves work over _bt_relbuf/_bt_getbuf : * is when the target page is the same one already in the buffer. : */ : Buffer : _bt_relandgetbuf(Relation rel, Buffer obuf, BlockNumber blkno, int access) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 1.67 : 4a8fe0: 55 push %rbp 2.50 : 4a8fe1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 11.67 : 4a8fe4: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 1.67 : 4a8fe8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.83 : 4a8fec: 89 f3 mov %esi,%ebx 2.50 : 4a8fee: 4c 89 6d f0 mov %r13,-0x10(%rbp) 3.33 : 4a8ff2: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.83 : 4a8ff6: 48 83 ec 20 sub $0x20,%rsp : Buffer buf; : : Assert(blkno != P_NEW); : if (BufferIsValid(obuf)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:712 1.67 : 4a8ffa: 85 f6 test %esi,%esi : * convenience. The only case where it saves work over _bt_relbuf/_bt_getbuf : * is when the target page is the same one already in the buffer. : */ : Buffer : _bt_relandgetbuf(Relation rel, Buffer obuf, BlockNumber blkno, int access) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 6.67 : 4a8ffc: 49 89 fe mov %rdi,%r14 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:708 3.33 : 4a8fff: 41 89 d4 mov %edx,%r12d 1.67 : 4a9002: 41 89 cd mov %ecx,%r13d : Buffer buf; : : Assert(blkno != P_NEW); : if (BufferIsValid(obuf)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:712 2.50 : 4a9005: 74 09 je 4a9010 <_bt_relandgetbuf+0x30> : LockBuffer(obuf, BUFFER_LOCK_UNLOCK); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:713 4.17 : 4a9007: 31 f6 xor %esi,%esi 1.67 : 4a9009: 89 df mov %ebx,%edi 1.67 : 4a900b: e8 00 b7 1c 00 callq 674710 : buf = ReleaseAndReadBuffer(obuf, rel, blkno); 0.00 : 4a9010: 44 89 e2 mov %r12d,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:714 10.83 : 4a9013: 4c 89 f6 mov %r14,%rsi 0.00 : 4a9016: 89 df mov %ebx,%edi 0.00 : 4a9018: e8 a3 d6 1c 00 callq 6766c0 : LockBuffer(buf, access); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:715 5.00 : 4a901d: 44 89 ee mov %r13d,%esi : Buffer buf; : : Assert(blkno != P_NEW); : if (BufferIsValid(obuf)) : LockBuffer(obuf, BUFFER_LOCK_UNLOCK); : buf = ReleaseAndReadBuffer(obuf, rel, blkno); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:714 4.17 : 4a9020: 89 c3 mov %eax,%ebx : LockBuffer(buf, access); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:715 0.83 : 4a9022: 89 c7 mov %eax,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:715 6.67 : 4a9024: e8 e7 b6 1c 00 callq 674710 : _bt_checkpage(rel, buf); 0.00 : 4a9029: 89 de mov %ebx,%esi 0.00 : 4a902b: 4c 89 f7 mov %r14,%rdi 0.00 : 4a902e: e8 9d fa ff ff callq 4a8ad0 <_bt_checkpage> : return buf; : } 0.00 : 4a9033: 89 d8 mov %ebx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:718 4.17 : 4a9035: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 3.33 : 4a903a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4a903e: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:718 9.17 : 4a9043: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 7.50 : 4a9048: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 13.28 ??:0 13.28 ??:0 9.38 ??:0 7.81 ??:0 6.25 ??:0 5.47 ??:0 4.69 ??:0 4.69 ??:0 3.91 ??:0 3.91 ??:0 3.12 ??:0 3.12 ??:0 3.12 ??:0 2.34 ??:0 2.34 ??:0 2.34 ??:0 2.34 ??:0 1.56 ??:0 1.56 ??:0 1.56 ??:0 1.56 ??:0 0.78 ??:0 0.78 ??:0 0.78 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000001129c0 <_dl_addr>: 0.00 : 1129c0: 41 57 push %r15 0.00 : 1129c2: 49 89 f7 mov %rsi,%r15 0.00 : 1129c5: 41 56 push %r14 0.00 : 1129c7: 41 55 push %r13 0.00 : 1129c9: 41 54 push %r12 0.00 : 1129cb: 55 push %rbp 0.00 : 1129cc: 48 89 fd mov %rdi,%rbp 0.00 : 1129cf: 53 push %rbx 0.00 : 1129d0: 48 83 ec 28 sub $0x28,%rsp 0.00 : 1129d4: 48 8b 05 dd f3 25 00 mov 0x25f3dd(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 1129db: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 1129e0: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 1129e5: 48 8d b8 08 09 00 00 lea 0x908(%rax),%rdi 0.00 : 1129ec: ff 90 e0 0e 00 00 callq *0xee0(%rax) 0.00 : 1129f2: 48 8b 05 bf f3 25 00 mov 0x25f3bf(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 1129f9: 48 83 b8 00 09 00 00 cmpq $0x0,0x900(%rax) 0.00 : 112a00: 00 0.00 : 112a01: 74 63 je 112a66 <_dl_addr+0xa6> 0.00 : 112a03: 49 89 c4 mov %rax,%r12 0.00 : 112a06: 45 31 ed xor %r13d,%r13d 0.00 : 112a09: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 112a0d: 48 85 db test %rbx,%rbx 0.00 : 112a10: 74 39 je 112a4b <_dl_addr+0x8b> 0.00 : 112a12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 112a18: 48 3b ab 40 03 00 00 cmp 0x340(%rbx),%rbp 0.00 : 112a1f: 72 21 jb 112a42 <_dl_addr+0x82> 0.00 : 112a21: 48 3b ab 48 03 00 00 cmp 0x348(%rbx),%rbp 0.00 : 112a28: 73 18 jae 112a42 <_dl_addr+0x82> 0.00 : 112a2a: f6 83 15 03 00 00 40 testb $0x40,0x315(%rbx) 0.00 : 112a31: 75 3d jne 112a70 <_dl_addr+0xb0> 0.00 : 112a33: 48 89 ee mov %rbp,%rsi 0.00 : 112a36: 48 89 df mov %rbx,%rdi 0.00 : 112a39: e8 12 ff ff ff callq 112950 <_dl_addr_inside_object> 0.00 : 112a3e: 85 c0 test %eax,%eax 0.00 : 112a40: 75 2e jne 112a70 <_dl_addr+0xb0> 0.00 : 112a42: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 112a46: 48 85 db test %rbx,%rbx 0.00 : 112a49: 75 cd jne 112a18 <_dl_addr+0x58> 0.00 : 112a4b: 48 8b 05 66 f3 25 00 mov 0x25f366(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 112a52: 49 83 c5 01 add $0x1,%r13 0.00 : 112a56: 49 81 c4 90 00 00 00 add $0x90,%r12 0.00 : 112a5d: 4c 39 a8 00 09 00 00 cmp %r13,0x900(%rax) 0.00 : 112a64: 77 a3 ja 112a09 <_dl_addr+0x49> 0.00 : 112a66: 31 db xor %ebx,%ebx 0.00 : 112a68: e9 77 01 00 00 jmpq 112be4 <_dl_addr+0x224> 0.00 : 112a6d: 0f 1f 00 nopl (%rax) 0.00 : 112a70: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 112a74: 49 89 07 mov %rax,(%r15) 0.00 : 112a77: 48 8b 83 40 03 00 00 mov 0x340(%rbx),%rax 0.00 : 112a7e: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 112a82: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 112a86: 80 38 00 cmpb $0x0,(%rax) 0.00 : 112a89: 0f 84 7a 01 00 00 je 112c09 <_dl_addr+0x249> 0.00 : 112a8f: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 112a93: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 112a97: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 112a9b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 112a9f: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 112aa4: 48 8b 83 90 00 00 00 mov 0x90(%rbx),%rax 0.00 : 112aab: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 112aae: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : 112ab2: 48 83 bb 98 02 00 00 cmpq $0x0,0x298(%rbx) 0.00 : 112ab9: 00 0.00 : 112aba: 0f 84 6b 01 00 00 je 112c2b <_dl_addr+0x26b> 0.00 : 112ac0: 44 8b ab ec 02 00 00 mov 0x2ec(%rbx),%r13d 0.00 : 112ac7: 45 85 ed test %r13d,%r13d 0.00 : 112aca: 0f 84 c9 00 00 00 je 112b99 <_dl_addr+0x1d9> 0.00 : 112ad0: 4c 8b b3 00 03 00 00 mov 0x300(%rbx),%r14 0.00 : 112ad7: 45 31 c9 xor %r9d,%r9d 0.00 : 112ada: 45 31 db xor %r11d,%r11d 0.00 : 112add: 0f 1f 00 nopl (%rax) ??:0 2.34 : 112ae0: 47 8b 04 9e mov (%r14,%r11,4),%r8d 4.69 : 112ae4: 4c 89 ca mov %r9,%rdx 0.00 : 112ae7: 45 85 c0 test %r8d,%r8d 0.00 : 112aea: 0f 84 98 00 00 00 je 112b88 <_dl_addr+0x1c8> 0.00 : 112af0: 44 89 c0 mov %r8d,%eax 0.00 : 112af3: 48 8d 3c 85 00 00 00 lea 0x0(,%rax,4),%rdi 0.00 : 112afa: 00 0.78 : 112afb: 48 03 bb 08 03 00 00 add 0x308(%rbx),%rdi 1.56 : 112b02: eb 12 jmp 112b16 <_dl_addr+0x156> 0.00 : 112b04: 0f 1f 40 00 nopl 0x0(%rax) ??:0 5.47 : 112b08: 41 83 c0 01 add $0x1,%r8d ??:0 4.69 : 112b0c: 48 83 c7 04 add $0x4,%rdi 0.00 : 112b10: 49 89 d1 mov %rdx,%r9 0.00 : 112b13: 44 89 c0 mov %r8d,%eax 3.12 : 112b16: 48 8d 04 40 lea (%rax,%rax,2),%rax 1.56 : 112b1a: 49 8d 14 c4 lea (%r12,%rax,8),%rdx 3.12 : 112b1e: 0f b7 72 06 movzwl 0x6(%rdx),%esi ??:0 9.38 : 112b22: 66 85 f6 test %si,%si 0.00 : 112b25: 75 07 jne 112b2e <_dl_addr+0x16e> 0.00 : 112b27: 48 83 7a 08 00 cmpq $0x0,0x8(%rdx) 0.00 : 112b2c: 74 52 je 112b80 <_dl_addr+0x1c0> ??:0 1.56 : 112b2e: 0f b6 42 04 movzbl 0x4(%rdx),%eax 0.00 : 112b32: 83 e0 0f and $0xf,%eax 0.00 : 112b35: 83 f8 06 cmp $0x6,%eax 0.00 : 112b38: 74 46 je 112b80 <_dl_addr+0x1c0> 0.78 : 112b3a: 4c 8b 52 08 mov 0x8(%rdx),%r10 1.56 : 112b3e: 4c 89 d1 mov %r10,%rcx 0.00 : 112b41: 48 03 0b add (%rbx),%rcx 3.91 : 112b44: 48 39 cd cmp %rcx,%rbp 0.00 : 112b47: 72 37 jb 112b80 <_dl_addr+0x1c0> ??:0 13.28 : 112b49: 66 85 f6 test %si,%si 0.00 : 112b4c: 74 09 je 112b57 <_dl_addr+0x197> 6.25 : 112b4e: 48 8b 42 10 mov 0x10(%rdx),%rax ??:0 3.12 : 112b52: 48 85 c0 test %rax,%rax 0.00 : 112b55: 75 09 jne 112b60 <_dl_addr+0x1a0> 0.00 : 112b57: 48 39 cd cmp %rcx,%rbp 0.00 : 112b5a: 74 0c je 112b68 <_dl_addr+0x1a8> 0.00 : 112b5c: 48 8b 42 10 mov 0x10(%rdx),%rax 0.78 : 112b60: 48 01 c8 add %rcx,%rax 0.00 : 112b63: 48 39 c5 cmp %rax,%rbp 0.00 : 112b66: 73 18 jae 112b80 <_dl_addr+0x1c0> 0.00 : 112b68: 4d 85 c9 test %r9,%r9 0.00 : 112b6b: 74 06 je 112b73 <_dl_addr+0x1b3> 0.00 : 112b6d: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 112b71: 76 0d jbe 112b80 <_dl_addr+0x1c0> 0.00 : 112b73: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 112b77: 3b 02 cmp (%rdx),%eax 0.00 : 112b79: 77 08 ja 112b83 <_dl_addr+0x1c3> 0.00 : 112b7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) ??:0 7.81 : 112b80: 4c 89 ca mov %r9,%rdx ??:0 2.34 : 112b83: f6 07 01 testb $0x1,(%rdi) 2.34 : 112b86: 74 80 je 112b08 <_dl_addr+0x148> ??:0 13.28 : 112b88: 49 83 c3 01 add $0x1,%r11 ??:0 3.91 : 112b8c: 45 39 dd cmp %r11d,%r13d 0.00 : 112b8f: 76 0f jbe 112ba0 <_dl_addr+0x1e0> 2.34 : 112b91: 49 89 d1 mov %rdx,%r9 0.00 : 112b94: e9 47 ff ff ff jmpq 112ae0 <_dl_addr+0x120> 0.00 : 112b99: 31 d2 xor %edx,%edx 0.00 : 112b9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 112ba0: 48 83 7c 24 10 00 cmpq $0x0,0x10(%rsp) 0.00 : 112ba6: 74 08 je 112bb0 <_dl_addr+0x1f0> 0.00 : 112ba8: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 112bad: 48 89 18 mov %rbx,(%rax) 0.00 : 112bb0: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 112bb6: 74 08 je 112bc0 <_dl_addr+0x200> 0.00 : 112bb8: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 112bbd: 48 89 10 mov %rdx,(%rax) 0.00 : 112bc0: 48 85 d2 test %rdx,%rdx 0.00 : 112bc3: 0f 84 1f 01 00 00 je 112ce8 <_dl_addr+0x328> 0.00 : 112bc9: 8b 02 mov (%rdx),%eax 0.00 : 112bcb: 48 03 44 24 20 add 0x20(%rsp),%rax 0.00 : 112bd0: 49 89 47 10 mov %rax,0x10(%r15) 0.00 : 112bd4: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 112bd8: 48 03 03 add (%rbx),%rax 0.00 : 112bdb: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 112be0: 49 89 47 18 mov %rax,0x18(%r15) 0.00 : 112be4: 48 8b 05 cd f1 25 00 mov 0x25f1cd(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 112beb: 48 8d b8 08 09 00 00 lea 0x908(%rax),%rdi 0.00 : 112bf2: ff 90 e8 0e 00 00 callq *0xee8(%rax) 0.00 : 112bf8: 48 83 c4 28 add $0x28,%rsp 0.00 : 112bfc: 89 d8 mov %ebx,%eax 0.00 : 112bfe: 5b pop %rbx 0.00 : 112bff: 5d pop %rbp 0.00 : 112c00: 41 5c pop %r12 0.00 : 112c02: 41 5d pop %r13 0.00 : 112c04: 41 5e pop %r14 0.00 : 112c06: 41 5f pop %r15 0.00 : 112c08: c3 retq 0.00 : 112c09: f6 83 14 03 00 00 03 testb $0x3,0x314(%rbx) 0.00 : 112c10: 0f 85 79 fe ff ff jne 112a8f <_dl_addr+0xcf> 0.00 : 112c16: 48 8b 05 b3 f3 25 00 mov 0x25f3b3(%rip),%rax # 371fd0 <_DYNAMIC+0x470> 0.00 : 112c1d: 48 8b 00 mov (%rax),%rax 0.00 : 112c20: 48 8b 00 mov (%rax),%rax 0.00 : 112c23: 49 89 07 mov %rax,(%r15) 0.00 : 112c26: e9 64 fe ff ff jmpq 112a8f <_dl_addr+0xcf> 0.00 : 112c2b: 48 8b 43 60 mov 0x60(%rbx),%rax 0.00 : 112c2f: 48 8b 74 24 20 mov 0x20(%rsp),%rsi 0.00 : 112c34: 48 85 c0 test %rax,%rax 0.00 : 112c37: 74 0f je 112c48 <_dl_addr+0x288> 0.00 : 112c39: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 112c3d: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 112c40: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 112c44: 49 8d 34 c4 lea (%r12,%rax,8),%rsi 0.00 : 112c48: 31 d2 xor %edx,%edx 0.00 : 112c4a: 49 39 f4 cmp %rsi,%r12 0.00 : 112c4d: 72 16 jb 112c65 <_dl_addr+0x2a5> 0.00 : 112c4f: e9 45 ff ff ff jmpq 112b99 <_dl_addr+0x1d9> 0.00 : 112c54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 112c58: 49 83 c4 18 add $0x18,%r12 0.00 : 112c5c: 49 39 f4 cmp %rsi,%r12 0.00 : 112c5f: 0f 83 3b ff ff ff jae 112ba0 <_dl_addr+0x1e0> 0.00 : 112c65: 41 0f b6 4c 24 04 movzbl 0x4(%r12),%ecx 0.00 : 112c6b: 89 c8 mov %ecx,%eax 0.00 : 112c6d: c0 e8 04 shr $0x4,%al 0.00 : 112c70: 83 e8 01 sub $0x1,%eax 0.00 : 112c73: 3c 01 cmp $0x1,%al 0.00 : 112c75: 77 e1 ja 112c58 <_dl_addr+0x298> 0.00 : 112c77: 89 c8 mov %ecx,%eax 0.00 : 112c79: 83 e0 0f and $0xf,%eax 0.00 : 112c7c: 83 f8 06 cmp $0x6,%eax 0.00 : 112c7f: 74 d7 je 112c58 <_dl_addr+0x298> 0.00 : 112c81: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 112c87: 66 85 c0 test %ax,%ax 0.00 : 112c8a: 74 4c je 112cd8 <_dl_addr+0x318> 0.00 : 112c8c: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 112c91: 48 89 f9 mov %rdi,%rcx 0.00 : 112c94: 48 03 0b add (%rbx),%rcx 0.00 : 112c97: 48 39 cd cmp %rcx,%rbp 0.00 : 112c9a: 72 bc jb 112c58 <_dl_addr+0x298> 0.00 : 112c9c: 66 85 c0 test %ax,%ax 0.00 : 112c9f: 74 2b je 112ccc <_dl_addr+0x30c> 0.00 : 112ca1: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 112ca6: 48 85 c0 test %rax,%rax 0.00 : 112ca9: 74 21 je 112ccc <_dl_addr+0x30c> 0.00 : 112cab: 48 01 c8 add %rcx,%rax 0.00 : 112cae: 48 39 c5 cmp %rax,%rbp 0.00 : 112cb1: 73 a5 jae 112c58 <_dl_addr+0x298> 0.00 : 112cb3: 48 85 d2 test %rdx,%rdx 0.00 : 112cb6: 74 06 je 112cbe <_dl_addr+0x2fe> 0.00 : 112cb8: 48 39 7a 08 cmp %rdi,0x8(%rdx) 0.00 : 112cbc: 73 9a jae 112c58 <_dl_addr+0x298> 0.00 : 112cbe: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 112cc2: 41 3b 04 24 cmp (%r12),%eax 0.00 : 112cc6: 49 0f 47 d4 cmova %r12,%rdx 0.00 : 112cca: eb 8c jmp 112c58 <_dl_addr+0x298> 0.00 : 112ccc: 48 39 cd cmp %rcx,%rbp 0.00 : 112ccf: 74 e2 je 112cb3 <_dl_addr+0x2f3> 0.00 : 112cd1: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 112cd6: eb d3 jmp 112cab <_dl_addr+0x2eb> 0.00 : 112cd8: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 112cdd: 48 85 ff test %rdi,%rdi 0.00 : 112ce0: 0f 84 72 ff ff ff je 112c58 <_dl_addr+0x298> 0.00 : 112ce6: eb a9 jmp 112c91 <_dl_addr+0x2d1> 0.00 : 112ce8: 49 c7 47 10 00 00 00 movq $0x0,0x10(%r15) 0.00 : 112cef: 00 0.00 : 112cf0: 49 c7 47 18 00 00 00 movq $0x0,0x18(%r15) 0.00 : 112cf7: 00 0.00 : 112cf8: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 112cfd: e9 e2 fe ff ff jmpq 112be4 <_dl_addr+0x224> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 9.02 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1273 9.02 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1276 7.52 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1273 7.52 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1276 6.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1320 6.77 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1285 6.02 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1261 4.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1228 4.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1228 4.51 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1265 3.76 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1245 3.76 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1273 3.01 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1345 3.01 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1276 2.26 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1238 2.26 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1261 2.26 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1265 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1228 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1228 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1238 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1345 1.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1345 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1228 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1228 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1345 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1345 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1345 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1268 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1268 0.75 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1285 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ac680 <_bt_steppage>: : * If there are no more matching records in the given direction, we drop all : * locks and pins, set so->currPos.buf to InvalidBuffer, and return FALSE. : */ : static bool : _bt_steppage(IndexScanDesc scan, ScanDirection dir) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1228 4.51 : 4ac680: 55 push %rbp 1.50 : 4ac681: 48 89 e5 mov %rsp,%rbp 4.51 : 4ac684: 41 57 push %r15 0.75 : 4ac686: 41 56 push %r14 0.75 : 4ac688: 41 55 push %r13 0.00 : 4ac68a: 41 54 push %r12 1.50 : 4ac68c: 53 push %rbx 0.00 : 4ac68d: 48 83 ec 18 sub $0x18,%rsp 0.00 : 4ac691: 48 89 7d c8 mov %rdi,-0x38(%rbp) 0.00 : 4ac695: 89 75 c4 mov %esi,-0x3c(%rbp) : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4ac698: 48 8b 47 38 mov 0x38(%rdi),%rax 0.00 : 4ac69c: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* we must have the buffer pinned and locked */ : Assert(BufferIsValid(so->currPos.buf)); : : /* Before leaving current page, deal with any killed items */ : if (so->numKilled > 0) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1238 1.50 : 4ac6a0: 8b 70 38 mov 0x38(%rax),%esi 2.26 : 4ac6a3: 85 f6 test %esi,%esi 0.00 : 4ac6a5: 7e 0a jle 4ac6b1 <_bt_steppage+0x31> : _bt_killitems(scan, true); 0.00 : 4ac6a7: be 01 00 00 00 mov $0x1,%esi 0.00 : 4ac6ac: e8 cf 1b 00 00 callq 4ae280 <_bt_killitems> : : /* : * Before we modify currPos, make a copy of the page data if there was a : * mark position that needs it. : */ : if (so->markItemIndex >= 0) 0.00 : 4ac6b1: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 4ac6b5: 8b 4a 50 mov 0x50(%rdx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1245 3.76 : 4ac6b8: 85 c9 test %ecx,%ecx 0.00 : 4ac6ba: 78 62 js 4ac71e <_bt_steppage+0x9e> : { : /* bump pin on current buffer for assignment to mark buffer */ : IncrBufferRefCount(so->currPos.buf); 0.00 : 4ac6bc: 8b 7a 54 mov 0x54(%rdx),%edi 0.00 : 4ac6bf: e8 9c 84 1c 00 callq 674b60 : memcpy(&so->markPos, &so->currPos, 0.00 : 4ac6c4: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 4ac6c8: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 4ac6cc: 48 63 50 68 movslq 0x68(%rax),%rdx 0.00 : 4ac6d0: 48 89 c6 mov %rax,%rsi 0.00 : 4ac6d3: 48 81 c7 60 10 00 00 add $0x1060,%rdi 0.00 : 4ac6da: 48 83 c6 54 add $0x54,%rsi 0.00 : 4ac6de: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 4ac6e2: 48 8d 54 12 26 lea 0x26(%rdx,%rdx,1),%rdx 0.00 : 4ac6e7: e8 04 d5 fb ff callq 469bf0 : offsetof(BTScanPosData, items[1]) + : so->currPos.lastItem * sizeof(BTScanPosItem)); : if (so->markTuples) 0.00 : 4ac6ec: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 4ac6f0: 48 8b 7a 48 mov 0x48(%rdx),%rdi 0.00 : 4ac6f4: 48 85 ff test %rdi,%rdi 0.00 : 4ac6f7: 74 11 je 4ac70a <_bt_steppage+0x8a> : memcpy(so->markTuples, so->currTuples, 0.00 : 4ac6f9: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 4ac6fd: 48 63 52 60 movslq 0x60(%rdx),%rdx 0.00 : 4ac701: 48 8b 70 40 mov 0x40(%rax),%rsi 0.00 : 4ac705: e8 e6 d4 fb ff callq 469bf0 : so->currPos.nextTupleOffset); : so->markPos.itemIndex = so->markItemIndex; 0.00 : 4ac70a: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 4ac70e: 8b 42 50 mov 0x50(%rdx),%eax : so->markItemIndex = -1; 0.00 : 4ac711: c7 42 50 ff ff ff ff movl $0xffffffff,0x50(%rdx) : offsetof(BTScanPosData, items[1]) + : so->currPos.lastItem * sizeof(BTScanPosItem)); : if (so->markTuples) : memcpy(so->markTuples, so->currTuples, : so->currPos.nextTupleOffset); : so->markPos.itemIndex = so->markItemIndex; 0.00 : 4ac718: 89 82 78 10 00 00 mov %eax,0x1078(%rdx) : so->markItemIndex = -1; : } : : rel = scan->indexRelation; : : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1261 6.02 : 4ac71e: 83 7d c4 01 cmpl $0x1,-0x3c(%rbp) : so->currPos.nextTupleOffset); : so->markPos.itemIndex = so->markItemIndex; : so->markItemIndex = -1; : } : : rel = scan->indexRelation; 0.00 : 4ac722: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 4ac726: 4c 8b 68 08 mov 0x8(%rax),%r13 : : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1261 2.26 : 4ac72a: 0f 84 46 03 00 00 je 4aca76 <_bt_steppage+0x3f6> : } : } : else : { : /* Remember we left a page with data */ : so->currPos.moreRight = true; 0.00 : 4ac730: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 4ac734: c6 42 5d 01 movb $0x1,0x5d(%rdx) : * it. See nbtree/README for details. : */ : for (;;) : { : /* Done if we know there are no matching keys to the left */ : if (!so->currPos.moreLeft) 0.00 : 4ac738: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 4ac73c: 80 78 5c 00 cmpb $0x0,0x5c(%rax) 0.00 : 4ac740: 0f 84 17 04 00 00 je 4acb5d <_bt_steppage+0x4dd> : so->currPos.buf = InvalidBuffer; : return false; : } : : /* Step to next physical page */ : so->currPos.buf = _bt_walk_left(rel, so->currPos.buf); 0.00 : 4ac746: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 4ac74a: 44 8b 60 54 mov 0x54(%rax),%r12d : _bt_walk_left(Relation rel, Buffer buf) : { : Page page; : BTPageOpaque opaque; : : page = BufferGetPage(buf); 0.00 : 4ac74e: 45 85 e4 test %r12d,%r12d 0.00 : 4ac751: 0f 88 9d 02 00 00 js 4ac9f4 <_bt_steppage+0x374> 0.00 : 4ac757: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4ac75c: 48 63 d0 movslq %eax,%rdx 0.00 : 4ac75f: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ac763: 48 03 15 8e 33 71 00 add 0x71338e(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ac76a: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4ac76e: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx 0.00 : 4ac772: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : BlockNumber lblkno; : BlockNumber blkno; : int tries; : : /* if we're at end of tree, release buf and return failure */ : if (P_LEFTMOST(opaque)) 0.00 : 4ac778: 8b 03 mov (%rbx),%eax 0.00 : 4ac77a: 85 c0 test %eax,%eax 0.00 : 4ac77c: 0f 84 b7 02 00 00 je 4aca39 <_bt_steppage+0x3b9> : { : _bt_relbuf(rel, buf); : break; : } : /* remember original page we are stepping left from */ : obknum = BufferGetBlockNumber(buf); 0.00 : 4ac782: 44 89 e7 mov %r12d,%edi 0.00 : 4ac785: e8 a6 78 1c 00 callq 674030 : /* step left */ : blkno = lblkno = opaque->btpo_prev; : _bt_relbuf(rel, buf); 0.00 : 4ac78a: 44 89 e6 mov %r12d,%esi 0.00 : 4ac78d: 4c 89 ef mov %r13,%rdi : { : _bt_relbuf(rel, buf); : break; : } : /* remember original page we are stepping left from */ : obknum = BufferGetBlockNumber(buf); 0.00 : 4ac790: 41 89 c6 mov %eax,%r14d : /* step left */ : blkno = lblkno = opaque->btpo_prev; 0.00 : 4ac793: 44 8b 3b mov (%rbx),%r15d : _bt_relbuf(rel, buf); 0.00 : 4ac796: e8 35 c8 ff ff callq 4a8fd0 <_bt_relbuf> : /* check for interrupts while we're not holding any buffer lock */ : CHECK_FOR_INTERRUPTS(); 0.00 : 4ac79b: 0f b6 05 ee d8 70 00 movzbl 0x70d8ee(%rip),%eax # bba090 0.00 : 4ac7a2: 84 c0 test %al,%al 0.00 : 4ac7a4: 0f 85 0e 02 00 00 jne 4ac9b8 <_bt_steppage+0x338> : buf = _bt_getbuf(rel, blkno, BT_READ); 0.00 : 4ac7aa: 44 89 fe mov %r15d,%esi 0.00 : 4ac7ad: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ac7b2: 4c 89 ef mov %r13,%rdi 0.00 : 4ac7b5: e8 96 c8 ff ff callq 4a9050 <_bt_getbuf> : page = BufferGetPage(buf); 0.00 : 4ac7ba: 85 c0 test %eax,%eax : /* step left */ : blkno = lblkno = opaque->btpo_prev; : _bt_relbuf(rel, buf); : /* check for interrupts while we're not holding any buffer lock */ : CHECK_FOR_INTERRUPTS(); : buf = _bt_getbuf(rel, blkno, BT_READ); 0.00 : 4ac7bc: 89 c6 mov %eax,%esi : page = BufferGetPage(buf); 0.00 : 4ac7be: 0f 88 04 02 00 00 js 4ac9c8 <_bt_steppage+0x348> 0.00 : 4ac7c4: 8d 46 ff lea -0x1(%rsi),%eax 0.00 : 4ac7c7: 48 63 d0 movslq %eax,%rdx 0.00 : 4ac7ca: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ac7ce: 48 03 15 23 33 71 00 add 0x713323(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ac7d5: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4ac7d9: 31 db xor %ebx,%ebx 0.00 : 4ac7db: 48 8d 04 02 lea (%rdx,%rax,1),%rax : * must reject half-dead pages if wanted. : */ : tries = 0; : for (;;) : { : if (!P_ISDELETED(opaque) && opaque->btpo_next == obknum) 0.00 : 4ac7df: f6 40 0c 04 testb $0x4,0xc(%rax) 0.00 : 4ac7e3: 74 4d je 4ac832 <_bt_steppage+0x1b2> 0.00 : 4ac7e5: 8b 50 04 mov 0x4(%rax),%edx : { : /* Found desired page, return it */ : return buf; : } : if (P_RIGHTMOST(opaque) || ++tries > 4) 0.00 : 4ac7e8: 85 d2 test %edx,%edx 0.00 : 4ac7ea: 0f 84 f8 00 00 00 je 4ac8e8 <_bt_steppage+0x268> 0.00 : 4ac7f0: 83 c3 01 add $0x1,%ebx 0.00 : 4ac7f3: 83 fb 05 cmp $0x5,%ebx 0.00 : 4ac7f6: 0f 84 ec 00 00 00 je 4ac8e8 <_bt_steppage+0x268> : break; : blkno = opaque->btpo_next; : buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ); 0.00 : 4ac7fc: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ac801: 4c 89 ef mov %r13,%rdi 0.00 : 4ac804: e8 d7 c7 ff ff callq 4a8fe0 <_bt_relandgetbuf> : page = BufferGetPage(buf); 0.00 : 4ac809: 85 c0 test %eax,%eax : return buf; : } : if (P_RIGHTMOST(opaque) || ++tries > 4) : break; : blkno = opaque->btpo_next; : buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ); 0.00 : 4ac80b: 89 c6 mov %eax,%esi : page = BufferGetPage(buf); 0.00 : 4ac80d: 0f 88 bd 00 00 00 js 4ac8d0 <_bt_steppage+0x250> 0.00 : 4ac813: 8d 46 ff lea -0x1(%rsi),%eax 0.00 : 4ac816: 48 63 d0 movslq %eax,%rdx 0.00 : 4ac819: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ac81d: 48 03 15 d4 32 71 00 add 0x7132d4(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ac824: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4ac828: 48 8d 04 02 lea (%rdx,%rax,1),%rax : * must reject half-dead pages if wanted. : */ : tries = 0; : for (;;) : { : if (!P_ISDELETED(opaque) && opaque->btpo_next == obknum) 0.00 : 4ac82c: f6 40 0c 04 testb $0x4,0xc(%rax) 0.00 : 4ac830: 75 b3 jne 4ac7e5 <_bt_steppage+0x165> 0.00 : 4ac832: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 4ac835: 41 39 d6 cmp %edx,%r14d 0.00 : 4ac838: 75 ae jne 4ac7e8 <_bt_steppage+0x168> : so->currPos.buf = InvalidBuffer; : return false; : } : : /* Step to next physical page */ : so->currPos.buf = _bt_walk_left(rel, so->currPos.buf); 0.00 : 4ac83a: 48 8b 45 d0 mov -0x30(%rbp),%rax : : /* if we're physically at end of index, return failure */ : if (so->currPos.buf == InvalidBuffer) 0.00 : 4ac83e: 83 fe 00 cmp $0x0,%esi : so->currPos.buf = InvalidBuffer; : return false; : } : : /* Step to next physical page */ : so->currPos.buf = _bt_walk_left(rel, so->currPos.buf); 0.00 : 4ac841: 89 70 54 mov %esi,0x54(%rax) : : /* if we're physically at end of index, return failure */ : if (so->currPos.buf == InvalidBuffer) 0.00 : 4ac844: 0f 84 05 02 00 00 je 4aca4f <_bt_steppage+0x3cf> : /* : * Okay, we managed to move left to a non-deleted page. Done if : * it's not half-dead and contains matching tuples. Else loop back : * and do it all again. : */ : page = BufferGetPage(so->currPos.buf); 0.00 : 4ac84a: 0f 8c 10 02 00 00 jl 4aca60 <_bt_steppage+0x3e0> 0.00 : 4ac850: 8d 46 ff lea -0x1(%rsi),%eax 0.00 : 4ac853: 4c 63 e0 movslq %eax,%r12 0.00 : 4ac856: 49 c1 e4 0d shl $0xd,%r12 0.00 : 4ac85a: 4c 03 25 97 32 71 00 add 0x713297(%rip),%r12 # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (!P_IGNORE(opaque)) 0.00 : 4ac861: 41 0f b7 44 24 10 movzwl 0x10(%r12),%eax 0.00 : 4ac867: 41 0f b7 44 04 0c movzwl 0xc(%r12,%rax,1),%eax 0.00 : 4ac86d: a8 14 test $0x14,%al 0.00 : 4ac86f: 0f 85 c3 fe ff ff jne 4ac738 <_bt_steppage+0xb8> : { : PredicateLockPage(rel, BufferGetBlockNumber(so->currPos.buf), scan->xs_snapshot); 0.00 : 4ac875: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 4ac879: 89 f7 mov %esi,%edi 0.00 : 4ac87b: 48 8b 5a 10 mov 0x10(%rdx),%rbx 0.00 : 4ac87f: e8 ac 77 1c 00 callq 674030 0.00 : 4ac884: 4c 89 ef mov %r13,%rdi 0.00 : 4ac887: 89 c6 mov %eax,%esi 0.00 : 4ac889: 48 89 da mov %rbx,%rdx 0.00 : 4ac88c: e8 cf 69 1e 00 callq 693260 : /* see if there are any matches on this page */ : /* note that this will clear moreLeft if we can stop */ : if (_bt_readpage(scan, dir, PageGetMaxOffsetNumber(page))) 0.00 : 4ac891: 41 0f b7 44 24 0c movzwl 0xc(%r12),%eax 0.00 : 4ac897: 31 d2 xor %edx,%edx 0.00 : 4ac899: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ac89d: 76 0e jbe 4ac8ad <_bt_steppage+0x22d> 0.00 : 4ac89f: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ac8a2: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ac8a6: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ac8aa: 0f b7 d0 movzwl %ax,%edx 0.00 : 4ac8ad: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 4ac8b0: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 4ac8b4: e8 27 fb ff ff callq 4ac3e0 <_bt_readpage> 0.00 : 4ac8b9: 84 c0 test %al,%al 0.00 : 4ac8bb: 0f 84 77 fe ff ff je 4ac738 <_bt_steppage+0xb8> 0.00 : 4ac8c1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4ac8c6: e9 86 01 00 00 jmpq 4aca51 <_bt_steppage+0x3d1> 0.00 : 4ac8cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : if (P_RIGHTMOST(opaque) || ++tries > 4) : break; : blkno = opaque->btpo_next; : buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ); : page = BufferGetPage(buf); 0.00 : 4ac8d0: 48 8b 15 41 08 6d 00 mov 0x6d0841(%rip),%rdx # b7d118 0.00 : 4ac8d7: f7 d0 not %eax 0.00 : 4ac8d9: 48 98 cltq 0.00 : 4ac8db: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4ac8df: e9 40 ff ff ff jmpq 4ac824 <_bt_steppage+0x1a4> 0.00 : 4ac8e4: 0f 1f 40 00 nopl 0x0(%rax) : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : } : : /* Return to the original page to see what's up */ : buf = _bt_relandgetbuf(rel, buf, obknum, BT_READ); 0.00 : 4ac8e8: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ac8ed: 44 89 f2 mov %r14d,%edx 0.00 : 4ac8f0: 4c 89 ef mov %r13,%rdi 0.00 : 4ac8f3: e8 e8 c6 ff ff callq 4a8fe0 <_bt_relandgetbuf> : page = BufferGetPage(buf); 0.00 : 4ac8f8: 85 c0 test %eax,%eax : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : } : : /* Return to the original page to see what's up */ : buf = _bt_relandgetbuf(rel, buf, obknum, BT_READ); 0.00 : 4ac8fa: 41 89 c4 mov %eax,%r12d : page = BufferGetPage(buf); 0.00 : 4ac8fd: 0f 88 dd 00 00 00 js 4ac9e0 <_bt_steppage+0x360> 0.00 : 4ac903: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4ac908: 48 63 d0 movslq %eax,%rdx 0.00 : 4ac90b: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ac90f: 48 03 15 e2 31 71 00 add 0x7131e2(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ac916: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4ac91a: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : if (P_ISDELETED(opaque)) 0.00 : 4ac91e: f6 43 0c 04 testb $0x4,0xc(%rbx) 0.00 : 4ac922: 75 61 jne 4ac985 <_bt_steppage+0x305> : /* : * It wasn't deleted; the explanation had better be that the page : * to the left got split or deleted. Without this check, we'd go : * into an infinite loop if there's anything wrong. : */ : if (opaque->btpo_prev == lblkno) 0.00 : 4ac924: 44 3b 3b cmp (%rbx),%r15d 0.00 : 4ac927: 0f 85 4b fe ff ff jne 4ac778 <_bt_steppage+0xf8> : elog(ERROR, "could not find left sibling of block %u in index \"%s\"", 0.00 : 4ac92d: ba d1 48 7b 00 mov $0x7b48d1,%edx 0.00 : 4ac932: be b4 05 00 00 mov $0x5b4,%esi 0.00 : 4ac937: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4ac93c: e8 df ea 2c 00 callq 77b420 0.00 : 4ac941: 49 8b 4d 30 mov 0x30(%r13),%rcx 0.00 : 4ac945: 44 89 f2 mov %r14d,%edx 0.00 : 4ac948: be e0 47 7b 00 mov $0x7b47e0,%esi 0.00 : 4ac94d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ac952: 31 c0 xor %eax,%eax 0.00 : 4ac954: e8 d7 e8 2c 00 callq 77b230 0.00 : 4ac959: e8 72 cb fb ff callq 4694d0 0.00 : 4ac95e: 66 90 xchg %ax,%ax : if (P_RIGHTMOST(opaque)) : elog(ERROR, "fell off the end of index \"%s\"", : RelationGetRelationName(rel)); : blkno = opaque->btpo_next; : buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ); : page = BufferGetPage(buf); 0.00 : 4ac960: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4ac965: 48 63 d0 movslq %eax,%rdx 0.00 : 4ac968: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ac96c: 48 03 15 85 31 71 00 add 0x713185(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ac973: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4ac977: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : if (!P_ISDELETED(opaque)) 0.00 : 4ac97b: f6 43 0c 04 testb $0x4,0xc(%rbx) 0.00 : 4ac97f: 0f 84 f3 fd ff ff je 4ac778 <_bt_steppage+0xf8> : * one's keyspace, so stepping left from it will take us where we : * want to be. : */ : for (;;) : { : if (P_RIGHTMOST(opaque)) 0.00 : 4ac985: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 4ac988: 85 d2 test %edx,%edx 0.00 : 4ac98a: 74 7f je 4aca0b <_bt_steppage+0x38b> : elog(ERROR, "fell off the end of index \"%s\"", : RelationGetRelationName(rel)); : blkno = opaque->btpo_next; : buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ); 0.00 : 4ac98c: 44 89 e6 mov %r12d,%esi 0.00 : 4ac98f: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ac994: 4c 89 ef mov %r13,%rdi 0.00 : 4ac997: e8 44 c6 ff ff callq 4a8fe0 <_bt_relandgetbuf> : page = BufferGetPage(buf); 0.00 : 4ac99c: 85 c0 test %eax,%eax : { : if (P_RIGHTMOST(opaque)) : elog(ERROR, "fell off the end of index \"%s\"", : RelationGetRelationName(rel)); : blkno = opaque->btpo_next; : buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ); 0.00 : 4ac99e: 41 89 c4 mov %eax,%r12d : page = BufferGetPage(buf); 0.00 : 4ac9a1: 79 bd jns 4ac960 <_bt_steppage+0x2e0> 0.00 : 4ac9a3: 48 8b 15 6e 07 6d 00 mov 0x6d076e(%rip),%rdx # b7d118 0.00 : 4ac9aa: f7 d0 not %eax 0.00 : 4ac9ac: 48 98 cltq 0.00 : 4ac9ae: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4ac9b2: eb bf jmp 4ac973 <_bt_steppage+0x2f3> 0.00 : 4ac9b4: 0f 1f 40 00 nopl 0x0(%rax) : obknum = BufferGetBlockNumber(buf); : /* step left */ : blkno = lblkno = opaque->btpo_prev; : _bt_relbuf(rel, buf); : /* check for interrupts while we're not holding any buffer lock */ : CHECK_FOR_INTERRUPTS(); 0.00 : 4ac9b8: e8 e3 f8 1e 00 callq 69c2a0 0.00 : 4ac9bd: e9 e8 fd ff ff jmpq 4ac7aa <_bt_steppage+0x12a> 0.00 : 4ac9c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : buf = _bt_getbuf(rel, blkno, BT_READ); : page = BufferGetPage(buf); 0.00 : 4ac9c8: 48 8b 15 49 07 6d 00 mov 0x6d0749(%rip),%rdx # b7d118 0.00 : 4ac9cf: f7 d0 not %eax 0.00 : 4ac9d1: 48 98 cltq 0.00 : 4ac9d3: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4ac9d7: e9 f9 fd ff ff jmpq 4ac7d5 <_bt_steppage+0x155> 0.00 : 4ac9dc: 0f 1f 40 00 nopl 0x0(%rax) : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : } : : /* Return to the original page to see what's up */ : buf = _bt_relandgetbuf(rel, buf, obknum, BT_READ); : page = BufferGetPage(buf); 0.00 : 4ac9e0: 48 8b 15 31 07 6d 00 mov 0x6d0731(%rip),%rdx # b7d118 0.00 : 4ac9e7: f7 d0 not %eax 0.00 : 4ac9e9: 48 98 cltq 0.00 : 4ac9eb: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4ac9ef: e9 22 ff ff ff jmpq 4ac916 <_bt_steppage+0x296> : _bt_walk_left(Relation rel, Buffer buf) : { : Page page; : BTPageOpaque opaque; : : page = BufferGetPage(buf); 0.00 : 4ac9f4: 44 89 e0 mov %r12d,%eax 0.00 : 4ac9f7: 48 8b 15 1a 07 6d 00 mov 0x6d071a(%rip),%rdx # b7d118 0.00 : 4ac9fe: f7 d0 not %eax 0.00 : 4aca00: 48 98 cltq 0.00 : 4aca02: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4aca06: e9 5f fd ff ff jmpq 4ac76a <_bt_steppage+0xea> : * want to be. : */ : for (;;) : { : if (P_RIGHTMOST(opaque)) : elog(ERROR, "fell off the end of index \"%s\"", 0.00 : 4aca0b: ba d1 48 7b 00 mov $0x7b48d1,%edx 0.00 : 4aca10: be 9d 05 00 00 mov $0x59d,%esi 0.00 : 4aca15: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4aca1a: e8 01 ea 2c 00 callq 77b420 0.00 : 4aca1f: 49 8b 55 30 mov 0x30(%r13),%rdx 0.00 : 4aca23: be 60 41 7b 00 mov $0x7b4160,%esi 0.00 : 4aca28: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4aca2d: 31 c0 xor %eax,%eax 0.00 : 4aca2f: e8 fc e7 2c 00 callq 77b230 0.00 : 4aca34: e8 97 ca fb ff callq 4694d0 : int tries; : : /* if we're at end of tree, release buf and return failure */ : if (P_LEFTMOST(opaque)) : { : _bt_relbuf(rel, buf); 0.00 : 4aca39: 44 89 e6 mov %r12d,%esi 0.00 : 4aca3c: 4c 89 ef mov %r13,%rdi 0.00 : 4aca3f: e8 8c c5 ff ff callq 4a8fd0 <_bt_relbuf> : so->currPos.buf = InvalidBuffer; : return false; : } : : /* Step to next physical page */ : so->currPos.buf = _bt_walk_left(rel, so->currPos.buf); 0.00 : 4aca44: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 4aca48: c7 42 54 00 00 00 00 movl $0x0,0x54(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1320 6.77 : 4aca4f: 31 c0 xor %eax,%eax : } : } : } : : return true; : } 0.00 : 4aca51: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1345 0.75 : 4aca55: 5b pop %rbx 1.50 : 4aca56: 41 5c pop %r12 0.75 : 4aca58: 41 5d pop %r13 0.00 : 4aca5a: 41 5e pop %r14 1.50 : 4aca5c: 41 5f pop %r15 3.01 : 4aca5e: c9 leaveq 0.75 : 4aca5f: c3 retq : /* : * Okay, we managed to move left to a non-deleted page. Done if : * it's not half-dead and contains matching tuples. Else loop back : * and do it all again. : */ : page = BufferGetPage(so->currPos.buf); 0.00 : 4aca60: 89 f0 mov %esi,%eax 0.00 : 4aca62: 48 8b 15 af 06 6d 00 mov 0x6d06af(%rip),%rdx # b7d118 0.00 : 4aca69: f7 d0 not %eax 0.00 : 4aca6b: 48 98 cltq 0.00 : 4aca6d: 4c 8b 24 c2 mov (%rdx,%rax,8),%r12 0.00 : 4aca71: e9 eb fd ff ff jmpq 4ac861 <_bt_steppage+0x1e1> : : if (ScanDirectionIsForward(dir)) : { : /* Walk right to the next page with data */ : /* We must rely on the previously saved nextPage link! */ : BlockNumber blkno = so->currPos.nextPage; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1265 2.26 : 4aca76: 48 8b 55 d0 mov -0x30(%rbp),%rdx 4.51 : 4aca7a: 44 8b 62 58 mov 0x58(%rdx),%r12d : : /* Remember we left a page with data */ : so->currPos.moreLeft = true; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1268 0.75 : 4aca7e: c6 42 5c 01 movb $0x1,0x5c(%rdx) 0.75 : 4aca82: eb 48 jmp 4acacc <_bt_steppage+0x44c> 0.00 : 4aca84: 0f 1f 40 00 nopl 0x0(%rax) : if (blkno == P_NONE || !so->currPos.moreRight) : return false; : /* check for interrupts while we're not holding any buffer lock */ : CHECK_FOR_INTERRUPTS(); : /* step right one page */ : so->currPos.buf = _bt_getbuf(rel, blkno, BT_READ); 0.00 : 4aca88: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4aca8d: 44 89 e6 mov %r12d,%esi 0.00 : 4aca90: 4c 89 ef mov %r13,%rdi 0.00 : 4aca93: e8 b8 c5 ff ff callq 4a9050 <_bt_getbuf> 0.00 : 4aca98: 48 8b 55 d0 mov -0x30(%rbp),%rdx : /* check for deleted page */ : page = BufferGetPage(so->currPos.buf); 0.00 : 4aca9c: 85 c0 test %eax,%eax : if (blkno == P_NONE || !so->currPos.moreRight) : return false; : /* check for interrupts while we're not holding any buffer lock */ : CHECK_FOR_INTERRUPTS(); : /* step right one page */ : so->currPos.buf = _bt_getbuf(rel, blkno, BT_READ); 0.00 : 4aca9e: 89 42 54 mov %eax,0x54(%rdx) : /* check for deleted page */ : page = BufferGetPage(so->currPos.buf); 0.00 : 4acaa1: 0f 88 a1 00 00 00 js 4acb48 <_bt_steppage+0x4c8> 0.00 : 4acaa7: 83 e8 01 sub $0x1,%eax 0.00 : 4acaaa: 48 63 d0 movslq %eax,%rdx 0.00 : 4acaad: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4acab1: 48 03 15 40 30 71 00 add 0x713040(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4acab8: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4acabc: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : if (!P_IGNORE(opaque)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1285 0.75 : 4acac0: 0f b7 43 0c movzwl 0xc(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1285 6.77 : 4acac4: a8 14 test $0x14,%al 0.00 : 4acac6: 74 48 je 4acb10 <_bt_steppage+0x490> : /* note that this will clear moreRight if we can stop */ : if (_bt_readpage(scan, dir, P_FIRSTDATAKEY(opaque))) : break; : } : /* nope, keep going */ : blkno = opaque->btpo_next; 0.00 : 4acac8: 44 8b 63 04 mov 0x4(%rbx),%r12d : so->currPos.moreLeft = true; : : for (;;) : { : /* release the previous buffer */ : _bt_relbuf(rel, so->currPos.buf); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1273 3.76 : 4acacc: 48 8b 45 d0 mov -0x30(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1273 9.02 : 4acad0: 4c 89 ef mov %r13,%rdi 0.00 : 4acad3: 8b 70 54 mov 0x54(%rax),%esi 7.52 : 4acad6: e8 f5 c4 ff ff callq 4a8fd0 <_bt_relbuf> : so->currPos.buf = InvalidBuffer; 0.00 : 4acadb: 48 8b 55 d0 mov -0x30(%rbp),%rdx : /* if we're at end of scan, give up */ : if (blkno == P_NONE || !so->currPos.moreRight) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1276 3.01 : 4acadf: 45 85 e4 test %r12d,%r12d : : for (;;) : { : /* release the previous buffer */ : _bt_relbuf(rel, so->currPos.buf); : so->currPos.buf = InvalidBuffer; 0.00 : 4acae2: c7 42 54 00 00 00 00 movl $0x0,0x54(%rdx) : /* if we're at end of scan, give up */ : if (blkno == P_NONE || !so->currPos.moreRight) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:1276 7.52 : 4acae9: 0f 84 60 ff ff ff je 4aca4f <_bt_steppage+0x3cf> 0.00 : 4acaef: 80 7a 5d 00 cmpb $0x0,0x5d(%rdx) 9.02 : 4acaf3: 0f 84 56 ff ff ff je 4aca4f <_bt_steppage+0x3cf> : return false; : /* check for interrupts while we're not holding any buffer lock */ : CHECK_FOR_INTERRUPTS(); 0.00 : 4acaf9: 0f b6 05 90 d5 70 00 movzbl 0x70d590(%rip),%eax # bba090 0.00 : 4acb00: 84 c0 test %al,%al 0.00 : 4acb02: 74 84 je 4aca88 <_bt_steppage+0x408> 0.00 : 4acb04: e8 97 f7 1e 00 callq 69c2a0 0.00 : 4acb09: e9 7a ff ff ff jmpq 4aca88 <_bt_steppage+0x408> 0.00 : 4acb0e: 66 90 xchg %ax,%ax : /* check for deleted page */ : page = BufferGetPage(so->currPos.buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (!P_IGNORE(opaque)) : { : PredicateLockPage(rel, blkno, scan->xs_snapshot); 0.00 : 4acb10: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 4acb14: 44 89 e6 mov %r12d,%esi 0.00 : 4acb17: 4c 89 ef mov %r13,%rdi 0.00 : 4acb1a: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 4acb1e: e8 3d 67 1e 00 callq 693260 : /* see if there are any matches on this page */ : /* note that this will clear moreRight if we can stop */ : if (_bt_readpage(scan, dir, P_FIRSTDATAKEY(opaque))) 0.00 : 4acb23: 83 7b 04 01 cmpl $0x1,0x4(%rbx) 0.00 : 4acb27: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 4acb2b: be 01 00 00 00 mov $0x1,%esi 0.00 : 4acb30: 19 d2 sbb %edx,%edx 0.00 : 4acb32: 83 c2 02 add $0x2,%edx 0.00 : 4acb35: e8 a6 f8 ff ff callq 4ac3e0 <_bt_readpage> 0.00 : 4acb3a: 84 c0 test %al,%al 0.00 : 4acb3c: 74 8a je 4acac8 <_bt_steppage+0x448> 0.00 : 4acb3e: e9 7e fd ff ff jmpq 4ac8c1 <_bt_steppage+0x241> 0.00 : 4acb43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* check for interrupts while we're not holding any buffer lock */ : CHECK_FOR_INTERRUPTS(); : /* step right one page */ : so->currPos.buf = _bt_getbuf(rel, blkno, BT_READ); : /* check for deleted page */ : page = BufferGetPage(so->currPos.buf); 0.00 : 4acb48: f7 d0 not %eax 0.00 : 4acb4a: 48 63 d0 movslq %eax,%rdx 0.00 : 4acb4d: 48 8b 05 c4 05 6d 00 mov 0x6d05c4(%rip),%rax # b7d118 0.00 : 4acb54: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 4acb58: e9 5b ff ff ff jmpq 4acab8 <_bt_steppage+0x438> : for (;;) : { : /* Done if we know there are no matching keys to the left */ : if (!so->currPos.moreLeft) : { : _bt_relbuf(rel, so->currPos.buf); 0.00 : 4acb5d: 8b 70 54 mov 0x54(%rax),%esi 0.00 : 4acb60: e9 d7 fe ff ff jmpq 4aca3c <_bt_steppage+0x3bc> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 42.98 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 12.40 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 9.09 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 6.61 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:632 4.96 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 4.96 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 3.31 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 1.65 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 1.65 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 1.65 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:637 1.65 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 1.65 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 1.65 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 0.83 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 0.83 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:631 0.83 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:633 0.83 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 0.83 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 0.83 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:632 0.83 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3000 : : * : * Input set is modified or recycled! : */ : Bitmapset * : bms_add_member(Bitmapset *a, int x) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 4.96 : 5e3000: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 42.98 : 5e3001: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 0.83 : 5e3004: 4c 89 6d f0 mov %r13,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 12.40 : 5e3008: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 5e300c: 41 89 f5 mov %esi,%r13d 0.00 : 5e300f: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 1.65 : 5e3013: 4c 89 75 f8 mov %r14,-0x8(%rbp) 1.65 : 5e3017: 48 83 ec 20 sub $0x20,%rsp : int wordnum, : bitnum; : : if (x < 0) 0.00 : 5e301b: 85 f6 test %esi,%esi 0.00 : 5e301d: 0f 88 a8 00 00 00 js 5e30cb : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:631 0.83 : 5e3023: 48 85 ff test %rdi,%rdi 0.00 : 5e3026: 0f 84 84 00 00 00 je 5e30b0 : return bms_make_singleton(x); : wordnum = WORDNUM(x); : bitnum = BITNUM(x); : : /* enlarge the set if necessary */ : if (wordnum >= a->nwords) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:637 1.65 : 5e302c: 44 8b 27 mov (%rdi),%r12d : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) : return bms_make_singleton(x); : wordnum = WORDNUM(x); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:633 0.83 : 5e302f: 41 89 f6 mov %esi,%r14d 0.00 : 5e3032: 41 c1 fe 05 sar $0x5,%r14d : bitnum = BITNUM(x); : : /* enlarge the set if necessary */ : if (wordnum >= a->nwords) 0.00 : 5e3036: 45 39 e6 cmp %r12d,%r14d 0.00 : 5e3039: 7d 35 jge 5e3070 : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) : a->words[i] = 0; : } : : a->words[wordnum] |= ((bitmapword) 1 << bitnum); 0.00 : 5e303b: 41 83 e5 1f and $0x1f,%r13d 0.00 : 5e303f: 49 63 d6 movslq %r14d,%rdx 0.00 : 5e3042: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5e3047: 44 89 e9 mov %r13d,%ecx 0.00 : 5e304a: d3 e0 shl %cl,%eax 0.00 : 5e304c: 09 44 97 04 or %eax,0x4(%rdi,%rdx,4) : return a; : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 1.65 : 5e3050: 48 89 f8 mov %rdi,%rax 0.00 : 5e3053: 48 8b 1c 24 mov (%rsp),%rbx 1.65 : 5e3057: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.83 : 5e305c: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.83 : 5e3061: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 5e3066: c9 leaveq 0.00 : 5e3067: c3 retq 0.00 : 5e3068: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e306f: 00 : if (wordnum >= a->nwords) : { : int oldnwords = a->nwords; : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); 0.00 : 5e3070: 41 8d 5e 01 lea 0x1(%r14),%ebx 0.00 : 5e3074: 48 63 f3 movslq %ebx,%rsi 0.00 : 5e3077: 48 8d 34 b5 04 00 00 lea 0x4(,%rsi,4),%rsi 0.00 : 5e307e: 00 0.00 : 5e307f: e8 6c 5c 1b 00 callq 798cf0 : a->nwords = wordnum + 1; : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e3084: 41 39 dc cmp %ebx,%r12d : if (wordnum >= a->nwords) : { : int oldnwords = a->nwords; : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); 0.00 : 5e3087: 48 89 c7 mov %rax,%rdi : a->nwords = wordnum + 1; 0.00 : 5e308a: 89 18 mov %ebx,(%rax) : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e308c: 7d ad jge 5e303b 0.00 : 5e308e: 66 90 xchg %ax,%ax : a->words[i] = 0; 0.00 : 5e3090: 49 63 c4 movslq %r12d,%rax : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); : a->nwords = wordnum + 1; : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e3093: 41 83 c4 01 add $0x1,%r12d : a->words[i] = 0; 0.00 : 5e3097: c7 44 87 04 00 00 00 movl $0x0,0x4(%rdi,%rax,4) 0.00 : 5e309e: 00 : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); : a->nwords = wordnum + 1; : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e309f: 44 39 27 cmp %r12d,(%rdi) 0.00 : 5e30a2: 7f ec jg 5e3090 0.00 : 5e30a4: eb 95 jmp 5e303b 0.00 : 5e30a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5e30ad: 00 00 00 : a->words[i] = 0; : } : : a->words[wordnum] |= ((bitmapword) 1 << bitnum); : return a; : } 3.31 : 5e30b0: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 9.09 : 5e30b4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) : return bms_make_singleton(x); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:632 0.83 : 5e30b9: 89 f7 mov %esi,%edi : a->words[i] = 0; : } : : a->words[wordnum] |= ((bitmapword) 1 << bitnum); : return a; : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 0.83 : 5e30bb: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.65 : 5e30c0: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 4.96 : 5e30c5: c9 leaveq : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) : return bms_make_singleton(x); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:632 6.61 : 5e30c6: e9 a5 fe ff ff jmpq 5e2f70 : { : int wordnum, : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); 0.00 : 5e30cb: ba 6f 23 89 00 mov $0x89236f,%edx 0.00 : 5e30d0: be 76 02 00 00 mov $0x276,%esi 0.00 : 5e30d5: bf e2 21 89 00 mov $0x8921e2,%edi 0.00 : 5e30da: e8 41 83 19 00 callq 77b420 0.00 : 5e30df: be 08 22 89 00 mov $0x892208,%esi 0.00 : 5e30e4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e30e9: 31 c0 xor %eax,%eax 0.00 : 5e30eb: e8 40 81 19 00 callq 77b230 0.00 : 5e30f0: e8 db 63 e8 ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 9.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:331 7.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:324 6.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 4.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:336 3.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:334 3.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 2.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:336 2.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:337 2.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 2.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:324 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:324 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:341 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:332 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:324 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:332 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:334 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:334 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:337 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:342 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:347 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:332 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:334 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:336 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:337 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:341 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:342 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:343 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 0.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9db0 : : unsigned int quad; : unsigned int extra; : int y; : : julian = jd; : julian += 32044; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:331 9.21 : 6c9db0: 44 8d 9f 2c 7d 00 00 lea 0x7d2c(%rdi),%r11d : return julian; : } /* date2j() */ : : void : j2date(int jd, int *year, int *month, int *day) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:324 7.89 : 6c9db7: 49 89 c9 mov %rcx,%r9 : unsigned int extra; : int y; : : julian = jd; : julian += 32044; : quad = julian / 146097; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:332 1.32 : 6c9dba: b9 bd 06 6b 39 mov $0x396b06bd,%ecx : return julian; : } /* date2j() */ : : void : j2date(int jd, int *year, int *month, int *day) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:324 1.97 : 6c9dbf: 49 89 d2 mov %rdx,%r10 1.32 : 6c9dc2: 55 push %rbp : unsigned int extra; : int y; : : julian = jd; : julian += 32044; : quad = julian / 146097; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:332 1.32 : 6c9dc3: 44 89 d8 mov %r11d,%eax 0.66 : 6c9dc6: f7 e1 mul %ecx : return julian; : } /* date2j() */ : : void : j2date(int jd, int *year, int *month, int *day) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:324 1.97 : 6c9dc8: 48 89 e5 mov %rsp,%rbp : unsigned int extra; : int y; : : julian = jd; : julian += 32044; : quad = julian / 146097; 0.00 : 6c9dcb: 41 89 d0 mov %edx,%r8d 0.00 : 6c9dce: 41 c1 e8 0f shr $0xf,%r8d : extra = (julian - quad * 146097) * 4 + 3; : julian += 60 + quad * 3 + extra / 146097; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:334 1.32 : 6c9dd2: 41 69 c0 b1 3a 02 00 imul $0x23ab1,%r8d,%eax 0.66 : 6c9dd9: 41 29 c3 sub %eax,%r11d 1.32 : 6c9ddc: 42 8d 14 9d 03 00 00 lea 0x3(,%r11,4),%edx 0.00 : 6c9de3: 00 : quad = julian / 1461; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 0.66 : 6c9de4: 41 bb 73 b0 6d 16 mov $0x166db073,%r11d : : julian = jd; : julian += 32044; : quad = julian / 146097; : extra = (julian - quad * 146097) * 4 + 3; : julian += 60 + quad * 3 + extra / 146097; 0.00 : 6c9dea: 89 d0 mov %edx,%eax 0.00 : 6c9dec: f7 e1 mul %ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:334 3.95 : 6c9dee: 43 8d 04 40 lea (%r8,%r8,2),%eax 0.00 : 6c9df2: 8d bc 07 68 7d 00 00 lea 0x7d68(%rdi,%rax,1),%edi 0.00 : 6c9df9: c1 ea 0f shr $0xf,%edx 0.00 : 6c9dfc: 01 d7 add %edx,%edi : quad = julian / 1461; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 0.66 : 6c9dfe: 89 f8 mov %edi,%eax : julian -= quad * 1461; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:336 2.63 : 6c9e00: 89 f9 mov %edi,%ecx : julian = jd; : julian += 32044; : quad = julian / 146097; : extra = (julian - quad * 146097) * 4 + 3; : julian += 60 + quad * 3 + extra / 146097; : quad = julian / 1461; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 0.66 : 6c9e02: 41 f7 e3 mul %r11d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:335 6.58 : 6c9e05: 41 89 d0 mov %edx,%r8d 0.00 : 6c9e08: 41 c1 e8 07 shr $0x7,%r8d : julian -= quad * 1461; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:336 0.66 : 6c9e0c: 41 69 c0 b5 05 00 00 imul $0x5b5,%r8d,%eax 4.61 : 6c9e13: 29 c1 sub %eax,%ecx : y = julian * 4 / 1461; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:337 1.32 : 6c9e15: 8d 04 8d 00 00 00 00 lea 0x0(,%rcx,4),%eax 0.00 : 6c9e1c: 41 f7 e3 mul %r11d 2.63 : 6c9e1f: 89 d7 mov %edx,%edi 0.66 : 6c9e21: c1 ef 07 shr $0x7,%edi : julian = ((y != 0) ? ((julian + 305) % 365) : ((julian + 306) % 366)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.97 : 6c9e24: 85 ff test %edi,%edi 0.00 : 6c9e26: 75 60 jne 6c9e88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 5.26 : 6c9e28: 81 c1 32 01 00 00 add $0x132,%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 2.63 : 6c9e2e: ba 53 63 0f b3 mov $0xb30f6353,%edx 0.00 : 6c9e33: 89 c8 mov %ecx,%eax 0.00 : 6c9e35: f7 e2 mul %edx 1.32 : 6c9e37: c1 ea 08 shr $0x8,%edx 0.00 : 6c9e3a: 69 d2 6e 01 00 00 imul $0x16e,%edx,%edx 1.32 : 6c9e40: 29 d1 sub %edx,%ecx 0.66 : 6c9e42: 8d 51 7b lea 0x7b(%rcx),%edx : + 123; : y += quad * 4; : *year = y - 4800; : quad = julian * 2141 / 65536; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:342 1.32 : 6c9e45: 69 ca 5d 08 00 00 imul $0x85d,%edx,%ecx : julian -= quad * 1461; : y = julian * 4 / 1461; : julian = ((y != 0) ? ((julian + 305) % 365) : ((julian + 306) % 366)) : + 123; : y += quad * 4; : *year = y - 4800; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:341 1.97 : 6c9e4b: 42 8d 84 87 40 ed ff lea -0x12c0(%rdi,%r8,4),%eax 0.00 : 6c9e52: ff 0.66 : 6c9e53: 89 06 mov %eax,(%rsi) : quad = julian * 2141 / 65536; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:342 0.66 : 6c9e55: c1 e9 10 shr $0x10,%ecx : *day = julian - 7834 * quad / 256; 0.00 : 6c9e58: 69 c1 9a 1e 00 00 imul $0x1e9a,%ecx,%eax : *month = (quad + 10) % MONTHS_PER_YEAR + 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 3.95 : 6c9e5e: 83 c1 0a add $0xa,%ecx : julian = ((y != 0) ? ((julian + 305) % 365) : ((julian + 306) % 366)) : + 123; : y += quad * 4; : *year = y - 4800; : quad = julian * 2141 / 65536; : *day = julian - 7834 * quad / 256; 0.00 : 6c9e61: c1 e8 08 shr $0x8,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:343 0.66 : 6c9e64: 29 c2 sub %eax,%edx : *month = (quad + 10) % MONTHS_PER_YEAR + 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:344 1.97 : 6c9e66: 89 c8 mov %ecx,%eax : julian = ((y != 0) ? ((julian + 305) % 365) : ((julian + 306) % 366)) : + 123; : y += quad * 4; : *year = y - 4800; : quad = julian * 2141 / 65536; : *day = julian - 7834 * quad / 256; 0.00 : 6c9e68: 41 89 11 mov %edx,(%r9) : *month = (quad + 10) % MONTHS_PER_YEAR + 1; 1.32 : 6c9e6b: ba ab aa aa aa mov $0xaaaaaaab,%edx 0.00 : 6c9e70: f7 e2 mul %edx 1.32 : 6c9e72: c1 ea 03 shr $0x3,%edx 0.66 : 6c9e75: 8d 14 52 lea (%rdx,%rdx,2),%edx 1.97 : 6c9e78: c1 e2 02 shl $0x2,%edx 1.32 : 6c9e7b: 29 d1 sub %edx,%ecx 1.97 : 6c9e7d: 83 c1 01 add $0x1,%ecx 2.63 : 6c9e80: 41 89 0a mov %ecx,(%r10) : : return; : } /* j2date() */ /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:347 1.32 : 6c9e83: c9 leaveq 0.00 : 6c9e84: c3 retq 0.00 : 6c9e85: 0f 1f 00 nopl (%rax) : extra = (julian - quad * 146097) * 4 + 3; : julian += 60 + quad * 3 + extra / 146097; : quad = julian / 1461; : julian -= quad * 1461; : y = julian * 4 / 1461; : julian = ((y != 0) ? ((julian + 305) % 365) : ((julian + 306) % 366)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:338 1.97 : 6c9e88: 44 8d 99 31 01 00 00 lea 0x131(%rcx),%r11d 0.66 : 6c9e8f: ba 61 f3 19 67 mov $0x6719f361,%edx 0.00 : 6c9e94: 44 89 d8 mov %r11d,%eax 0.66 : 6c9e97: 44 89 d9 mov %r11d,%ecx 0.00 : 6c9e9a: f7 e2 mul %edx 1.97 : 6c9e9c: 29 d1 sub %edx,%ecx 0.00 : 6c9e9e: d1 e9 shr %ecx 0.00 : 6c9ea0: 01 ca add %ecx,%edx 0.66 : 6c9ea2: c1 ea 08 shr $0x8,%edx 0.66 : 6c9ea5: 69 d2 6d 01 00 00 imul $0x16d,%edx,%edx 1.97 : 6c9eab: 41 29 d3 sub %edx,%r11d 0.66 : 6c9eae: 41 8d 53 7b lea 0x7b(%r11),%edx 0.00 : 6c9eb2: eb 91 jmp 6c9e45 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1408 11.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1408 7.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1394 7.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1395 6.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1388 6.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1401 5.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1405 4.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1388 4.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1397 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1388 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1392 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1396 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1402 2.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1392 2.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1392 2.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1398 2.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1412 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1392 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1399 0.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1392 0.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1400 0.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1412 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077ddf0 : : } : : Datum : FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, : Datum arg3, Datum arg4, Datum arg5) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1388 6.50 : 77ddf0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1388 3.25 : 77ddf1: 49 89 fa mov %rdi,%r10 0.00 : 77ddf4: 48 89 e5 mov %rsp,%rbp 4.88 : 77ddf7: 48 81 ec b0 03 00 00 sub $0x3b0,%rsp : : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.arg[2] = arg3; : fcinfo.arg[3] = arg4; : fcinfo.arg[4] = arg5; 0.00 : 77ddfe: 48 8b 45 10 mov 0x10(%rbp),%rax : Datum arg3, Datum arg4, Datum arg5) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 5, collation, NULL, NULL); 0.00 : 77de02: 48 89 bd 50 fc ff ff mov %rdi,-0x3b0(%rbp) : fcinfo.argnull[1] = false; : fcinfo.argnull[2] = false; : fcinfo.argnull[3] = false; : fcinfo.argnull[4] = false; : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1405 5.69 : 77de09: 48 8d bd 50 fc ff ff lea -0x3b0(%rbp),%rdi : Datum arg3, Datum arg4, Datum arg5) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 5, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1392 3.25 : 77de10: 48 c7 85 58 fc ff ff movq $0x0,-0x3a8(%rbp) 0.00 : 77de17: 00 00 00 00 1.63 : 77de1b: 48 c7 85 60 fc ff ff movq $0x0,-0x3a0(%rbp) 0.00 : 77de22: 00 00 00 00 0.81 : 77de26: 89 b5 68 fc ff ff mov %esi,-0x398(%rbp) 2.44 : 77de2c: c6 85 6c fc ff ff 00 movb $0x0,-0x394(%rbp) 2.44 : 77de33: 66 c7 85 6e fc ff ff movw $0x5,-0x392(%rbp) 0.00 : 77de3a: 05 00 : : fcinfo.arg[0] = arg1; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1394 7.32 : 77de3c: 48 89 95 70 fc ff ff mov %rdx,-0x390(%rbp) : fcinfo.arg[1] = arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1395 7.32 : 77de43: 48 89 8d 78 fc ff ff mov %rcx,-0x388(%rbp) : fcinfo.arg[2] = arg3; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1396 3.25 : 77de4a: 4c 89 85 80 fc ff ff mov %r8,-0x380(%rbp) : fcinfo.arg[3] = arg4; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1397 4.07 : 77de51: 4c 89 8d 88 fc ff ff mov %r9,-0x378(%rbp) : fcinfo.arg[4] = arg5; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1398 2.44 : 77de58: 48 89 85 90 fc ff ff mov %rax,-0x370(%rbp) : fcinfo.argnull[0] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1399 1.63 : 77de5f: c6 45 90 00 movb $0x0,-0x70(%rbp) : fcinfo.argnull[1] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1400 0.81 : 77de63: c6 45 91 00 movb $0x0,-0x6f(%rbp) : fcinfo.argnull[2] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1401 6.50 : 77de67: c6 45 92 00 movb $0x0,-0x6e(%rbp) : fcinfo.argnull[3] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1402 3.25 : 77de6b: c6 45 93 00 movb $0x0,-0x6d(%rbp) : fcinfo.argnull[4] = false; 0.00 : 77de6f: c6 45 94 00 movb $0x0,-0x6c(%rbp) : : result = FunctionCallInvoke(&fcinfo); 0.00 : 77de73: 41 ff 12 callq *(%r10) : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1408 11.38 : 77de76: 80 bd 6c fc ff ff 00 cmpb $0x0,-0x394(%rbp) 17.89 : 77de7d: 75 02 jne 77de81 : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1412 2.44 : 77de7f: c9 leaveq 0.81 : 77de80: c3 retq : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 77de81: ba e0 51 8d 00 mov $0x8d51e0,%edx 0.00 : 77de86: be 81 05 00 00 mov $0x581,%esi 0.00 : 77de8b: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77de90: e8 8b d5 ff ff callq 77b420 0.00 : 77de95: 48 8b 85 50 fc ff ff mov -0x3b0(%rbp),%rax 0.00 : 77de9c: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 77dea1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77dea6: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77dea9: 31 c0 xor %eax,%eax 0.00 : 77deab: e8 80 d3 ff ff callq 77b230 0.00 : 77deb0: e8 1b b6 ce ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 14.29 ??:0 10.71 ??:0 8.93 ??:0 7.14 ??:0 7.14 ??:0 5.36 ??:0 5.36 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 1.79 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008f50 : : : #endif /* HAVE_NETDEV_SELECT_QUEUE */ : netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb, : struct ixgbe_adapter *adapter, : struct ixgbe_ring *tx_ring) : { ??:0 1.79 : 8f50: 48 83 ec 48 sub $0x48,%rsp ??:0 14.29 : 8f54: 48 89 5c 24 18 mov %rbx,0x18(%rsp) ??:0 3.57 : 8f59: 48 89 6c 24 20 mov %rbp,0x20(%rsp) 1.79 : 8f5e: 48 89 fb mov %rdi,%rbx 0.00 : 8f61: 4c 89 6c 24 30 mov %r13,0x30(%rsp) 0.00 : 8f66: 4c 89 7c 24 40 mov %r15,0x40(%rsp) 0.00 : 8f6b: 49 89 d5 mov %rdx,%r13 0.00 : 8f6e: 4c 89 64 24 28 mov %r12,0x28(%rsp) 0.00 : 8f73: 4c 89 74 24 38 mov %r14,0x38(%rsp) 0.00 : 8f78: 49 89 f7 mov %rsi,%r15 : #ifdef MAX_SKB_FRAGS : #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD : unsigned short f; : #endif : #endif : u16 count = TXD_USE_COUNT(skb_headlen(skb)); 0.00 : 8f7b: 8b 47 68 mov 0x68(%rdi),%eax : __be16 protocol = skb->protocol; 1.79 : 8f7e: 44 0f b7 77 7e movzwl 0x7e(%rdi),%r14d : #ifdef MAX_SKB_FRAGS : #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD : unsigned short f; : #endif : #endif : u16 count = TXD_USE_COUNT(skb_headlen(skb)); 1.79 : 8f83: 05 ff 3f 00 00 add $0x3fff,%eax 0.00 : 8f88: 2b 47 6c sub 0x6c(%rdi),%eax : __be16 protocol = skb->protocol; : u8 hdr_len = 0; 0.00 : 8f8b: c6 44 24 0f 00 movb $0x0,0xf(%rsp) : count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); : #else : count += skb_shinfo(skb)->nr_frags; : #endif : #endif : if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) { 1.79 : 8f90: 8b 8f d0 00 00 00 mov 0xd0(%rdi),%ecx 0.00 : 8f96: 48 8b 97 d8 00 00 00 mov 0xd8(%rdi),%rdx : #ifdef MAX_SKB_FRAGS : #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD : unsigned short f; : #endif : #endif : u16 count = TXD_USE_COUNT(skb_headlen(skb)); 0.00 : 8f9d: c1 e8 0e shr $0xe,%eax : count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); : #else : count += skb_shinfo(skb)->nr_frags; : #endif : #endif : if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) { 0.00 : 8fa0: 0f b7 14 0a movzwl (%rdx,%rcx,1),%edx : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; : u16 ntu = ring->next_to_use; : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 8fa4: 31 c9 xor %ecx,%ecx 0.00 : 8fa6: 8d 6c 10 03 lea 0x3(%rax,%rdx,1),%ebp : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 1.79 : 8faa: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; ??:0 10.71 : 8faf: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 8fb4: 66 39 d0 cmp %dx,%ax 0.00 : 8fb7: 77 05 ja 8fbe 0.00 : 8fb9: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : return 0; : } : : static inline int ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : if (likely(ixgbe_desc_unused(tx_ring) >= size)) 0.00 : 8fbe: 83 e8 01 sub $0x1,%eax 0.00 : 8fc1: 66 29 d0 sub %dx,%ax 0.00 : 8fc4: 01 c8 add %ecx,%eax 0.00 : 8fc6: 66 39 c5 cmp %ax,%bp 0.00 : 8fc9: 0f 87 16 04 00 00 ja 93e5 : tx_ring->tx_stats.tx_busy++; : return NETDEV_TX_BUSY; : } : : /* record the location of the first descriptor for this packet */ : first = &tx_ring->tx_buffer_info[tx_ring->next_to_use]; 0.00 : 8fcf: 0f b7 c2 movzwl %dx,%eax 0.00 : 8fd2: 4c 8d 24 40 lea (%rax,%rax,2),%r12 0.00 : 8fd6: 49 c1 e4 04 shl $0x4,%r12 0.00 : 8fda: 4d 03 65 28 add 0x28(%r13),%r12 : first->skb = skb; 7.14 : 8fde: 49 89 5c 24 10 mov %rbx,0x10(%r12) : first->bytecount = skb->len; 8.93 : 8fe3: 8b 43 68 mov 0x68(%rbx),%eax : first->gso_segs = 1; 0.00 : 8fe6: 66 41 c7 44 24 1c 01 movw $0x1,0x1c(%r12) 0.00 : 8fed: 00 : } : : /* record the location of the first descriptor for this packet */ : first = &tx_ring->tx_buffer_info[tx_ring->next_to_use]; : first->skb = skb; : first->bytecount = skb->len; ??:0 3.57 : 8fee: 41 89 44 24 18 mov %eax,0x18(%r12) : first->gso_segs = 1; : : /* if we have a HW VLAN tag being added default to the HW one */ : if (vlan_tx_tag_present(skb)) { 0.00 : 8ff3: 0f b7 83 bc 00 00 00 movzwl 0xbc(%rbx),%eax 0.00 : 8ffa: f6 c4 10 test $0x10,%ah 0.00 : 8ffd: 75 71 jne 9070 : tx_flags |= vlan_tx_tag_get(skb) << IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; : /* else if it is a SW VLAN check the next protocol and store the tag */ : } else if (protocol == __constant_htons(ETH_P_8021Q)) { 0.00 : 8fff: 31 ed xor %ebp,%ebp 0.00 : 9001: 66 41 81 fe 81 00 cmp $0x81,%r14w 0.00 : 9007: 0f 84 e3 02 00 00 je 92f0 : #ifdef CONFIG_PCI_IOV : /* : * Use the l2switch_enable flag - would be false if the DMA : * Tx switch had been disabled. : */ : if (adapter->flags & IXGBE_FLAG_SRIOV_L2SWITCH_ENABLE) 0.00 : 900d: 41 8b 97 18 02 00 00 mov 0x218(%r15),%edx : tx_flags |= IXGBE_TX_FLAGS_TXSW; 0.00 : 9014: 89 e8 mov %ebp,%eax 0.00 : 9016: 0c 80 or $0x80,%al 0.00 : 9018: f7 c2 00 00 40 00 test $0x400000,%edx 0.00 : 901e: 0f 45 e8 cmovne %eax,%ebp : : #endif : #ifdef HAVE_TX_MQ : if ((adapter->flags & IXGBE_FLAG_DCB_ENABLED) && 0.00 : 9021: f6 c6 04 test $0x4,%dh 0.00 : 9024: 74 5d je 9083 0.00 : 9026: 40 f6 c5 06 test $0x6,%bpl 0.00 : 902a: 75 06 jne 9032 0.00 : 902c: 83 7b 78 07 cmpl $0x7,0x78(%rbx) 0.00 : 9030: 74 51 je 9083 : ((tx_flags & (IXGBE_TX_FLAGS_HW_VLAN | IXGBE_TX_FLAGS_SW_VLAN)) || : (skb->priority != TC_PRIO_CONTROL))) { : tx_flags &= ~IXGBE_TX_FLAGS_VLAN_PRIO_MASK; 0.00 : 9032: 89 e8 mov %ebp,%eax 0.00 : 9034: 25 ff ff ff 1f and $0x1fffffff,%eax : #ifdef IXGBE_FCOE : /* for FCoE with DCB, we force the priority to what : * was specified by the switch */ : if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) && 0.00 : 9039: 81 e2 00 00 04 00 and $0x40000,%edx 0.00 : 903f: 0f 84 0b 02 00 00 je 9250 0.00 : 9045: 66 41 81 fe 89 06 cmp $0x689,%r14w 0.00 : 904b: 74 0c je 9059 0.00 : 904d: 66 41 81 fe 89 14 cmp $0x1489,%r14w 0.00 : 9053: 0f 85 f7 01 00 00 jne 9250 : ((protocol == __constant_htons(ETH_P_FCOE)) || : (protocol == __constant_htons(ETH_P_FIP)))) : tx_flags |= adapter->fcoe.up << 0.00 : 9059: 41 0f b6 af 10 7c 00 movzbl 0x7c10(%r15),%ebp 0.00 : 9060: 00 0.00 : 9061: c1 e5 1d shl $0x1d,%ebp 0.00 : 9064: 09 c5 or %eax,%ebp : (skb->priority != TC_PRIO_CONTROL))) { : tx_flags &= ~IXGBE_TX_FLAGS_VLAN_PRIO_MASK; : #ifdef IXGBE_FCOE : /* for FCoE with DCB, we force the priority to what : * was specified by the switch */ : if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) && 0.00 : 9066: e9 ed 01 00 00 jmpq 9258 0.00 : 906b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : first->gso_segs = 1; : : /* if we have a HW VLAN tag being added default to the HW one */ : if (vlan_tx_tag_present(skb)) { : tx_flags |= vlan_tx_tag_get(skb) << IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; 0.00 : 9070: 89 c5 mov %eax,%ebp 0.00 : 9072: 81 e5 ff ef ff ff and $0xffffefff,%ebp 0.00 : 9078: c1 e5 10 shl $0x10,%ebp 0.00 : 907b: 83 cd 02 or $0x2,%ebp 0.00 : 907e: eb 8d jmp 900d : goto out_drop; : vhdr = (struct vlan_ethhdr *)skb->data; : vhdr->h_vlan_TCI = htons(tx_flags >> : IXGBE_TX_FLAGS_VLAN_SHIFT); : } else { : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; 0.00 : 9080: 83 cd 02 or $0x2,%ebp : first->tx_flags = tx_flags; : first->protocol = protocol; : : #ifdef IXGBE_FCOE : /* setup tx offload for FCoE */ : if ((protocol == __constant_htons(ETH_P_FCOE)) && ??:0 7.14 : 9083: 66 41 81 fe 89 06 cmp $0x689,%r14w : } : } : : #endif /* HAVE_TX_MQ */ : /* record initial flags and protocol */ : first->tx_flags = tx_flags; 0.00 : 9089: 41 89 6c 24 2c mov %ebp,0x2c(%r12) : first->protocol = protocol; ??:0 3.57 : 908e: 66 45 89 74 24 1e mov %r14w,0x1e(%r12) : : #ifdef IXGBE_FCOE : /* setup tx offload for FCoE */ : if ((protocol == __constant_htons(ETH_P_FCOE)) && 0.00 : 9094: 75 14 jne 90aa 0.00 : 9096: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 909a: f7 80 b0 00 00 00 00 testl $0x1200000,0xb0(%rax) 0.00 : 90a1: 00 20 01 0.00 : 90a4: 0f 85 06 03 00 00 jne 93b0 : : goto xmit_fcoe; : } : : #endif /* IXGBE_FCOE */ : tso = ixgbe_tso(tx_ring, first, &hdr_len); 0.00 : 90aa: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 90af: 4c 89 e6 mov %r12,%rsi 0.00 : 90b2: 4c 89 ef mov %r13,%rdi 0.00 : 90b5: e8 56 b1 ff ff callq 4210 : if (tso < 0) 0.00 : 90ba: 83 f8 00 cmp $0x0,%eax 0.00 : 90bd: 0f 8c dd 01 00 00 jl 92a0 : goto out_drop; : else if (!tso) 3.57 : 90c3: 0f 84 17 02 00 00 je 92e0 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 90c9: 49 8b 45 30 mov 0x30(%r13),%rax : ixgbe_tx_csum(tx_ring, first); : : /* add the ATR filter if ATR is on */ : if (test_bit(__IXGBE_TX_FDIR_INIT_DONE, &tx_ring->state)) 0.00 : 90cd: a8 01 test $0x1,%al 0.00 : 90cf: 90 nop 0.00 : 90d0: 0f 84 1a 01 00 00 je 91f0 : } : : static void ixgbe_atr(struct ixgbe_ring *ring, : struct ixgbe_tx_buffer *first) : { : struct ixgbe_q_vector *q_vector = ring->q_vector; 1.79 : 90d6: 49 8b 7d 08 mov 0x8(%r13),%rdi : } hdr; : struct tcphdr *th; : __be16 vlan_id; : : /* if ring doesn't have a interrupt vector, cannot perform ATR */ : if (!q_vector) 0.00 : 90da: 48 85 ff test %rdi,%rdi 0.00 : 90dd: 0f 1f 00 nopl (%rax) 0.00 : 90e0: 0f 84 0a 01 00 00 je 91f0 : return; : : /* do nothing if sampling is disabled */ : if (!ring->atr_sample_rate) 0.00 : 90e6: 41 80 7d 54 00 cmpb $0x0,0x54(%r13) 0.00 : 90eb: 0f 84 ff 00 00 00 je 91f0 : return; : : ring->atr_count++; 0.00 : 90f1: 41 0f b6 45 55 movzbl 0x55(%r13),%eax 0.00 : 90f6: 8d 70 01 lea 0x1(%rax),%esi 1.79 : 90f9: 41 88 75 55 mov %sil,0x55(%r13) : : /* snag network header to get L4 type and address */ : hdr.network = skb_network_header(first->skb); 0.00 : 90fd: 49 8b 54 24 10 mov 0x10(%r12),%rdx : skb->transport_header += offset; : } : : static inline unsigned char *skb_network_header(const struct sk_buff *skb) : { : return skb->head + skb->network_header; 0.00 : 9102: 8b 82 c4 00 00 00 mov 0xc4(%rdx),%eax 0.00 : 9108: 48 8b 8a d8 00 00 00 mov 0xd8(%rdx),%rcx 1.79 : 910f: 4c 8d 0c 01 lea (%rcx,%rax,1),%r9 : : /* Currently only IPv4/IPv6 with TCP is supported */ : if ((first->protocol != __constant_htons(ETH_P_IPV6) || 0.00 : 9113: 41 0f b7 44 24 1e movzwl 0x1e(%r12),%eax 0.00 : 9119: 66 3d 86 dd cmp $0xdd86,%ax 0.00 : 911d: 0f 84 ad 02 00 00 je 93d0 0.00 : 9123: 66 83 f8 08 cmp $0x8,%ax 0.00 : 9127: 0f 85 c3 00 00 00 jne 91f0 3.57 : 912d: 41 80 79 09 06 cmpb $0x6,0x9(%r9) 0.00 : 9132: 0f 85 b8 00 00 00 jne 91f0 : #include : #include : : static inline struct tcphdr *tcp_hdr(const struct sk_buff *skb) : { : return (struct tcphdr *)skb_transport_header(skb); 0.00 : 9138: 8b 82 c0 00 00 00 mov 0xc0(%rdx),%eax : return; : : th = tcp_hdr(first->skb); : : /* skip this packet since it is invalid or the socket is closing */ : if (!th || th->fin) 0.00 : 913e: 48 01 c1 add %rax,%rcx 0.00 : 9141: 0f 84 a9 00 00 00 je 91f0 ??:0 5.36 : 9147: 0f b6 41 0d movzbl 0xd(%rcx),%eax 0.00 : 914b: a8 01 test $0x1,%al 0.00 : 914d: 0f 85 9d 00 00 00 jne 91f0 : return; : : /* sample on all syn packets or once every atr sample count */ : if (!th->syn && (ring->atr_count < ring->atr_sample_rate)) ??:0 1.79 : 9153: a8 02 test $0x2,%al 0.00 : 9155: 75 0a jne 9161 1.79 : 9157: 41 3a 75 54 cmp 0x54(%r13),%sil 0.00 : 915b: 0f 82 8f 00 00 00 jb 91f0 : return; : : /* reset sample count */ : ring->atr_count = 0; 0.00 : 9161: 41 c6 45 55 00 movb $0x0,0x55(%r13) : : vlan_id = htons(first->tx_flags >> IXGBE_TX_FLAGS_VLAN_SHIFT); 0.00 : 9166: 41 8b 54 24 2c mov 0x2c(%r12),%edx : static void ixgbe_atr(struct ixgbe_ring *ring, : struct ixgbe_tx_buffer *first) : { : struct ixgbe_q_vector *q_vector = ring->q_vector; : union ixgbe_atr_hash_dword input = { .dword = 0 }; : union ixgbe_atr_hash_dword common = { .dword = 0 }; 0.00 : 916b: 45 31 c0 xor %r8d,%r8d : return; : : /* reset sample count */ : ring->atr_count = 0; : : vlan_id = htons(first->tx_flags >> IXGBE_TX_FLAGS_VLAN_SHIFT); 0.00 : 916e: 89 d0 mov %edx,%eax 0.00 : 9170: c1 e8 10 shr $0x10,%eax : * : * The input is broken into two sections, a non-compressed section : * containing vm_pool, vlan_id, and flow_type. The rest of the data : * is XORed together and stored in the compressed dword. : */ : input.formatted.vlan_id = vlan_id; 0.00 : 9173: 66 c1 c0 08 rol $0x8,%ax 0.00 : 9177: 89 c3 mov %eax,%ebx 0.00 : 9179: c1 e3 10 shl $0x10,%ebx : : /* : * since src port and flex bytes occupy the same word XOR them together : * and write the value to source port portion of compressed dword : */ : if (first->tx_flags & (IXGBE_TX_FLAGS_SW_VLAN | IXGBE_TX_FLAGS_HW_VLAN)) 0.00 : 917c: 83 e2 06 and $0x6,%edx 0.00 : 917f: 0f 84 d1 02 00 00 je 9456 : common.port.src ^= th->dest ^ __constant_htons(ETH_P_8021Q); 0.00 : 9185: 0f b7 41 02 movzwl 0x2(%rcx),%eax 0.00 : 9189: 41 0f b7 74 24 1e movzwl 0x1e(%r12),%esi 0.00 : 918f: 34 81 xor $0x81,%al 0.00 : 9191: 66 41 89 c0 mov %ax,%r8w : else : common.port.src ^= th->dest ^ first->protocol; : common.port.dst ^= th->source; 0.00 : 9195: 44 89 c0 mov %r8d,%eax 0.00 : 9198: 41 0f b7 d0 movzwl %r8w,%edx 0.00 : 919c: c1 e8 10 shr $0x10,%eax 0.00 : 919f: 66 33 01 xor (%rcx),%ax 0.00 : 91a2: c1 e0 10 shl $0x10,%eax 0.00 : 91a5: 09 c2 or %eax,%edx : : if (first->protocol == __constant_htons(ETH_P_IP)) { 0.00 : 91a7: 66 83 fe 08 cmp $0x8,%si 0.00 : 91ab: 0f 84 ba 02 00 00 je 946b : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; : } else { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV6; : common.ip ^= hdr.ipv6->saddr.s6_addr32[0] ^ 0.00 : 91b1: 41 89 d0 mov %edx,%r8d 0.00 : 91b4: 45 33 41 08 xor 0x8(%r9),%r8d : : if (first->protocol == __constant_htons(ETH_P_IP)) { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; : } else { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV6; 0.00 : 91b8: b7 06 mov $0x6,%bh : common.ip ^= hdr.ipv6->saddr.s6_addr32[0] ^ 0.00 : 91ba: 45 33 41 0c xor 0xc(%r9),%r8d 0.00 : 91be: 45 33 41 10 xor 0x10(%r9),%r8d 0.00 : 91c2: 45 33 41 14 xor 0x14(%r9),%r8d 0.00 : 91c6: 45 33 41 18 xor 0x18(%r9),%r8d 0.00 : 91ca: 45 33 41 1c xor 0x1c(%r9),%r8d 0.00 : 91ce: 45 33 41 20 xor 0x20(%r9),%r8d 0.00 : 91d2: 45 33 41 24 xor 0x24(%r9),%r8d : hdr.ipv6->daddr.s6_addr32[2] ^ : hdr.ipv6->daddr.s6_addr32[3]; : } : : /* This assumes the Rx queue and Tx queue are bound to the same CPU */ : ixgbe_fdir_add_signature_filter_82599(&q_vector->adapter->hw, 0.00 : 91d6: 48 8b 3f mov (%rdi),%rdi 0.00 : 91d9: 41 0f b6 4d 4e movzbl 0x4e(%r13),%ecx 0.00 : 91de: 44 89 c2 mov %r8d,%edx 0.00 : 91e1: 89 de mov %ebx,%esi 0.00 : 91e3: 48 81 c7 80 0e 00 00 add $0xe80,%rdi 0.00 : 91ea: e8 00 00 00 00 callq 91ef 0.00 : 91ef: 90 nop : ixgbe_atr(tx_ring, first); : : #ifdef IXGBE_FCOE : xmit_fcoe: : #endif /* IXGBE_FCOE */ : ixgbe_tx_map(tx_ring, first, hdr_len); 1.79 : 91f0: 0f b6 54 24 0f movzbl 0xf(%rsp),%edx 1.79 : 91f5: 4c 89 e6 mov %r12,%rsi 0.00 : 91f8: 4c 89 ef mov %r13,%rdi 0.00 : 91fb: e8 30 b4 ff ff callq 4630 : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 9200: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; 0.00 : 9205: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 920a: 31 c9 xor %ecx,%ecx 0.00 : 920c: 66 39 d0 cmp %dx,%ax 0.00 : 920f: 77 05 ja 9216 0.00 : 9211: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : return 0; : } : : static inline int ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : if (likely(ixgbe_desc_unused(tx_ring) >= size)) 0.00 : 9216: 83 e8 01 sub $0x1,%eax 0.00 : 9219: 66 29 d0 sub %dx,%ax 0.00 : 921c: 01 c8 add %ecx,%eax 0.00 : 921e: 66 83 f8 15 cmp $0x15,%ax 0.00 : 9222: 0f 86 22 01 00 00 jbe 934a : : return NETDEV_TX_OK; : : out_drop: : dev_kfree_skb_any(first->skb); : first->skb = NULL; 0.00 : 9228: 31 c0 xor %eax,%eax : : return NETDEV_TX_OK; : } 0.00 : 922a: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 0.00 : 922f: 48 8b 6c 24 20 mov 0x20(%rsp),%rbp 0.00 : 9234: 4c 8b 64 24 28 mov 0x28(%rsp),%r12 0.00 : 9239: 4c 8b 6c 24 30 mov 0x30(%rsp),%r13 0.00 : 923e: 4c 8b 74 24 38 mov 0x38(%rsp),%r14 0.00 : 9243: 4c 8b 7c 24 40 mov 0x40(%rsp),%r15 0.00 : 9248: 48 83 c4 48 add $0x48,%rsp 0.00 : 924c: c3 retq 0.00 : 924d: 0f 1f 00 nopl (%rax) : (protocol == __constant_htons(ETH_P_FIP)))) : tx_flags |= adapter->fcoe.up << : IXGBE_TX_FLAGS_VLAN_PRIO_SHIFT; : else : #endif /* IXGBE_FCOE */ : tx_flags |= skb->priority << 0.00 : 9250: 8b 6b 78 mov 0x78(%rbx),%ebp 0.00 : 9253: c1 e5 1d shl $0x1d,%ebp 0.00 : 9256: 09 c5 or %eax,%ebp : IXGBE_TX_FLAGS_VLAN_PRIO_SHIFT; : if (tx_flags & IXGBE_TX_FLAGS_SW_VLAN) { 0.00 : 9258: 40 f6 c5 04 test $0x4,%bpl 0.00 : 925c: 0f 84 1e fe ff ff je 9080 : */ : static inline int skb_header_cloned(const struct sk_buff *skb) : { : int dataref; : : if (!skb->cloned) 0.00 : 9262: f6 43 7c 02 testb $0x2,0x7c(%rbx) 0.00 : 9266: 74 58 je 92c0 : * : * Atomically reads the value of @v. : */ : static inline int atomic_read(const atomic_t *v) : { : return (*(volatile int *)&(v)->counter); 0.00 : 9268: 8b 83 d0 00 00 00 mov 0xd0(%rbx),%eax 0.00 : 926e: 48 03 83 d8 00 00 00 add 0xd8(%rbx),%rax 0.00 : 9275: 8b 40 28 mov 0x28(%rax),%eax : return 0; : : dataref = atomic_read(&skb_shinfo(skb)->dataref); : dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT); 0.00 : 9278: 0f b7 d0 movzwl %ax,%edx 0.00 : 927b: c1 f8 10 sar $0x10,%eax : struct vlan_ethhdr *vhdr; : if (skb_header_cloned(skb) && 0.00 : 927e: 29 c2 sub %eax,%edx 0.00 : 9280: 83 ea 01 sub $0x1,%edx 0.00 : 9283: 74 3b je 92c0 0.00 : 9285: 31 d2 xor %edx,%edx 0.00 : 9287: 31 f6 xor %esi,%esi 0.00 : 9289: b9 20 00 00 00 mov $0x20,%ecx 0.00 : 928e: 48 89 df mov %rbx,%rdi 0.00 : 9291: e8 00 00 00 00 callq 9296 0.00 : 9296: 85 c0 test %eax,%eax 0.00 : 9298: 74 26 je 92c0 0.00 : 929a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ixgbe_maybe_stop_tx(tx_ring, DESC_NEEDED); : : return NETDEV_TX_OK; : : out_drop: : dev_kfree_skb_any(first->skb); 0.00 : 92a0: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 92a5: e8 00 00 00 00 callq 92aa : first->skb = NULL; 0.00 : 92aa: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 92b1: 00 00 0.00 : 92b3: 31 c0 xor %eax,%eax : : return NETDEV_TX_OK; : } 0.00 : 92b5: e9 70 ff ff ff jmpq 922a 0.00 : 92ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : struct vlan_ethhdr *vhdr; : if (skb_header_cloned(skb) && : pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) : goto out_drop; : vhdr = (struct vlan_ethhdr *)skb->data; : vhdr->h_vlan_TCI = htons(tx_flags >> 0.00 : 92c0: 89 e8 mov %ebp,%eax 0.00 : 92c2: 48 8b 93 e0 00 00 00 mov 0xe0(%rbx),%rdx 0.00 : 92c9: c1 e8 10 shr $0x10,%eax 0.00 : 92cc: 66 c1 c0 08 rol $0x8,%ax 0.00 : 92d0: 66 89 42 0e mov %ax,0xe(%rdx) 0.00 : 92d4: e9 aa fd ff ff jmpq 9083 0.00 : 92d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif /* IXGBE_FCOE */ : tso = ixgbe_tso(tx_ring, first, &hdr_len); : if (tso < 0) : goto out_drop; : else if (!tso) : ixgbe_tx_csum(tx_ring, first); ??:0 5.36 : 92e0: 4c 89 e6 mov %r12,%rsi 0.00 : 92e3: 4c 89 ef mov %r13,%rdi 0.00 : 92e6: e8 65 b1 ff ff callq 4450 0.00 : 92eb: e9 d9 fd ff ff jmpq 90c9 : static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, : int len, void *buffer) : { : int hlen = skb_headlen(skb); : : if (hlen - offset >= len) 0.00 : 92f0: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 92f3: 2b 43 6c sub 0x6c(%rbx),%eax 0.00 : 92f6: 83 e8 0e sub $0xe,%eax 0.00 : 92f9: 83 f8 03 cmp $0x3,%eax 0.00 : 92fc: 7e 2a jle 9328 : tx_flags |= vlan_tx_tag_get(skb) << IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; : /* else if it is a SW VLAN check the next protocol and store the tag */ : } else if (protocol == __constant_htons(ETH_P_8021Q)) { : struct vlan_hdr *vhdr, _vhdr; : vhdr = skb_header_pointer(skb, ETH_HLEN, sizeof(_vhdr), &_vhdr); 0.00 : 92fe: 48 8b 83 e0 00 00 00 mov 0xe0(%rbx),%rax : if (!vhdr) 0.00 : 9305: 48 83 c0 0e add $0xe,%rax 0.00 : 9309: 74 95 je 92a0 : goto out_drop; : : protocol = vhdr->h_vlan_encapsulated_proto; 0.00 : 930b: 44 0f b7 70 02 movzwl 0x2(%rax),%r14d : tx_flags |= ntohs(vhdr->h_vlan_TCI) << 0.00 : 9310: 0f b7 00 movzwl (%rax),%eax : IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_SW_VLAN; 0.00 : 9313: 66 c1 c0 08 rol $0x8,%ax 0.00 : 9317: 89 c5 mov %eax,%ebp 0.00 : 9319: c1 e5 10 shl $0x10,%ebp 0.00 : 931c: 83 cd 04 or $0x4,%ebp 0.00 : 931f: e9 e9 fc ff ff jmpq 900d 0.00 : 9324: 0f 1f 40 00 nopl 0x0(%rax) : return skb->data + offset; : : if (skb_copy_bits(skb, offset, buffer, len) < 0) 0.00 : 9328: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 932d: 48 89 e2 mov %rsp,%rdx 0.00 : 9330: be 0e 00 00 00 mov $0xe,%esi 0.00 : 9335: 48 89 df mov %rbx,%rdi 0.00 : 9338: e8 00 00 00 00 callq 933d 0.00 : 933d: 85 c0 test %eax,%eax 0.00 : 933f: 0f 88 5b ff ff ff js 92a0 0.00 : 9345: 48 89 e0 mov %rsp,%rax 0.00 : 9348: eb c1 jmp 930b : input, common, ring->queue_index); : } : : static int __ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : netif_stop_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); 0.00 : 934a: 41 0f b6 75 4e movzbl 0x4e(%r13),%esi 0.00 : 934f: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 9353: e8 78 fb ff ff callq 8ed0 : /* Herbert's original patch had: : * smp_mb__after_netif_stop_queue(); : * but since that doesn't exist yet, just open code it. */ : smp_mb(); 0.00 : 9358: 0f ae f0 mfence : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 935b: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; 0.00 : 9360: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 9365: 31 c9 xor %ecx,%ecx 0.00 : 9367: 66 39 d0 cmp %dx,%ax 0.00 : 936a: 77 05 ja 9371 0.00 : 936c: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : : /* We need to check again in a case another CPU has just : * made room available. */ : if (likely(ixgbe_desc_unused(tx_ring) < size)) 0.00 : 9371: 83 e8 01 sub $0x1,%eax 0.00 : 9374: 66 29 d0 sub %dx,%ax 0.00 : 9377: 01 c8 add %ecx,%eax 0.00 : 9379: 66 83 f8 15 cmp $0x15,%ax 0.00 : 937d: 0f 86 a5 fe ff ff jbe 9228 : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 9383: 41 0f b6 55 4e movzbl 0x4e(%r13),%edx 0.00 : 9388: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 938c: 48 c1 e2 08 shl $0x8,%rdx 0.00 : 9390: 48 03 90 80 03 00 00 add 0x380(%rax),%rdx 0.00 : 9397: 48 8d 42 10 lea 0x10(%rdx),%rax 0.00 : 939b: f0 80 62 10 fe lock andb $0xfe,0x10(%rdx) : return -EBUSY; : : /* A reprieve! - use start_queue because it doesn't call schedule */ : netif_start_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); : ++tx_ring->tx_stats.restart_queue; 0.00 : 93a0: 31 c0 xor %eax,%eax 0.00 : 93a2: 49 83 45 68 01 addq $0x1,0x68(%r13) 0.00 : 93a7: e9 7e fe ff ff jmpq 922a 0.00 : 93ac: 0f 1f 40 00 nopl 0x0(%rax) : : #ifdef IXGBE_FCOE : /* setup tx offload for FCoE */ : if ((protocol == __constant_htons(ETH_P_FCOE)) && : (tx_ring->netdev->features & (NETIF_F_FSO | NETIF_F_FCOE_CRC))) { : tso = ixgbe_fso(tx_ring, first, &hdr_len); 0.00 : 93b0: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 93b5: 4c 89 e6 mov %r12,%rsi 0.00 : 93b8: 4c 89 ef mov %r13,%rdi 0.00 : 93bb: e8 00 00 00 00 callq 93c0 : if (tso < 0) 0.00 : 93c0: 85 c0 test %eax,%eax 0.00 : 93c2: 0f 89 28 fe ff ff jns 91f0 0.00 : 93c8: e9 d3 fe ff ff jmpq 92a0 0.00 : 93cd: 0f 1f 00 nopl (%rax) : : /* snag network header to get L4 type and address */ : hdr.network = skb_network_header(first->skb); : : /* Currently only IPv4/IPv6 with TCP is supported */ : if ((first->protocol != __constant_htons(ETH_P_IPV6) || 0.00 : 93d0: 41 80 79 06 06 cmpb $0x6,0x6(%r9) 0.00 : 93d5: 0f 1f 00 nopl (%rax) 0.00 : 93d8: 0f 85 12 fe ff ff jne 91f0 0.00 : 93de: 66 90 xchg %ax,%ax 0.00 : 93e0: e9 53 fd ff ff jmpq 9138 : input, common, ring->queue_index); : } : : static int __ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : netif_stop_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); 0.00 : 93e5: 41 0f b6 75 4e movzbl 0x4e(%r13),%esi 0.00 : 93ea: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 93ee: 66 90 xchg %ax,%ax 0.00 : 93f0: e8 db fa ff ff callq 8ed0 : /* Herbert's original patch had: : * smp_mb__after_netif_stop_queue(); : * but since that doesn't exist yet, just open code it. */ : smp_mb(); 0.00 : 93f5: 0f ae f0 mfence : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 93f8: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; 0.00 : 93fd: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 9402: 31 c9 xor %ecx,%ecx 0.00 : 9404: 66 39 d0 cmp %dx,%ax 0.00 : 9407: 77 05 ja 940e 0.00 : 9409: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : : /* We need to check again in a case another CPU has just : * made room available. */ : if (likely(ixgbe_desc_unused(tx_ring) < size)) 0.00 : 940e: 83 e8 01 sub $0x1,%eax 0.00 : 9411: 66 29 d0 sub %dx,%ax 0.00 : 9414: 01 c8 add %ecx,%eax 0.00 : 9416: 66 39 c5 cmp %ax,%bp 0.00 : 9419: 77 2c ja 9447 0.00 : 941b: 41 0f b6 55 4e movzbl 0x4e(%r13),%edx 0.00 : 9420: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 9424: 48 c1 e2 08 shl $0x8,%rdx 0.00 : 9428: 48 03 90 80 03 00 00 add 0x380(%rax),%rdx 0.00 : 942f: 48 8d 42 10 lea 0x10(%rdx),%rax 0.00 : 9433: f0 80 62 10 fe lock andb $0xfe,0x10(%rdx) : return -EBUSY; : : /* A reprieve! - use start_queue because it doesn't call schedule */ : netif_start_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); : ++tx_ring->tx_stats.restart_queue; 0.00 : 9438: 49 83 45 68 01 addq $0x1,0x68(%r13) 0.00 : 943d: 41 0f b7 55 50 movzwl 0x50(%r13),%edx 0.00 : 9442: e9 88 fb ff ff jmpq 8fcf : #else : count += skb_shinfo(skb)->nr_frags; : #endif : #endif : if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) { : tx_ring->tx_stats.tx_busy++; 0.00 : 9447: 49 83 45 70 01 addq $0x1,0x70(%r13) 0.00 : 944c: b8 10 00 00 00 mov $0x10,%eax : out_drop: : dev_kfree_skb_any(first->skb); : first->skb = NULL; : : return NETDEV_TX_OK; : } 0.00 : 9451: e9 d4 fd ff ff jmpq 922a : * and write the value to source port portion of compressed dword : */ : if (first->tx_flags & (IXGBE_TX_FLAGS_SW_VLAN | IXGBE_TX_FLAGS_HW_VLAN)) : common.port.src ^= th->dest ^ __constant_htons(ETH_P_8021Q); : else : common.port.src ^= th->dest ^ first->protocol; 0.00 : 9456: 41 0f b7 74 24 1e movzwl 0x1e(%r12),%esi 0.00 : 945c: 0f b7 41 02 movzwl 0x2(%rcx),%eax 0.00 : 9460: 31 f0 xor %esi,%eax 0.00 : 9462: 66 41 89 c0 mov %ax,%r8w 0.00 : 9466: e9 2a fd ff ff jmpq 9195 : common.port.dst ^= th->source; : : if (first->protocol == __constant_htons(ETH_P_IP)) { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; 0.00 : 946b: 41 89 d0 mov %edx,%r8d 0.00 : 946e: 45 33 41 0c xor 0xc(%r9),%r8d : else : common.port.src ^= th->dest ^ first->protocol; : common.port.dst ^= th->source; : : if (first->protocol == __constant_htons(ETH_P_IP)) { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; 0.00 : 9472: b7 02 mov $0x2,%bh : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; 0.00 : 9474: 45 33 41 10 xor 0x10(%r9),%r8d 0.00 : 9478: e9 59 fd ff ff jmpq 91d6 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 29.89 ??:0 13.79 ??:0 8.05 ??:0 4.60 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 2.30 ??:0 2.30 ??:0 2.30 ??:0 2.30 ??:0 2.30 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 1.15 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000088b0 : : * @q_vector: structure containing interrupt and ring information : * @tx_ring: tx ring to clean : **/ : static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector, : struct ixgbe_ring *tx_ring) : { ??:0 3.45 : 88b0: 41 57 push %r15 0.00 : 88b2: 41 56 push %r14 3.45 : 88b4: 49 89 f6 mov %rsi,%r14 0.00 : 88b7: 41 55 push %r13 0.00 : 88b9: 41 54 push %r12 0.00 : 88bb: 55 push %rbp 0.00 : 88bc: 53 push %rbx 0.00 : 88bd: 48 83 ec 28 sub $0x28,%rsp 0.00 : 88c1: 48 89 7c 24 10 mov %rdi,0x10(%rsp) : struct ixgbe_adapter *adapter = q_vector->adapter; 1.15 : 88c6: 4c 8b 3f mov (%rdi),%r15 : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; 0.00 : 88c9: 0f b7 4f 38 movzwl 0x38(%rdi),%ecx : unsigned int i = tx_ring->next_to_clean; 0.00 : 88cd: 0f b7 56 52 movzwl 0x52(%rsi),%edx : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 2.30 : 88d1: 49 8b 87 10 02 00 00 mov 0x210(%r15),%rax : : if (test_bit(__IXGBE_DOWN, &adapter->state)) 0.00 : 88d8: a8 04 test $0x4,%al 0.00 : 88da: 0f 85 88 02 00 00 jne 8b68 : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; : unsigned int i = tx_ring->next_to_clean; 0.00 : 88e0: 0f b7 c2 movzwl %dx,%eax : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; 0.00 : 88e3: 0f b7 c9 movzwl %cx,%ecx : unsigned int i = tx_ring->next_to_clean; : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 88e6: 89 c2 mov %eax,%edx : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; 1.15 : 88e8: 89 4c 24 24 mov %ecx,0x24(%rsp) : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; : tx_desc = IXGBE_TX_DESC(tx_ring, i); : i -= tx_ring->count; 0.00 : 88ec: 41 89 c4 mov %eax,%r12d : unsigned int i = tx_ring->next_to_clean; : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 88ef: 48 8d 1c 52 lea (%rdx,%rdx,2),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, i); 0.00 : 88f3: 48 89 d5 mov %rdx,%rbp : i -= tx_ring->count; 0.00 : 88f6: 0f b7 56 4c movzwl 0x4c(%rsi),%edx : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; : tx_desc = IXGBE_TX_DESC(tx_ring, i); 0.00 : 88fa: 48 c1 e5 04 shl $0x4,%rbp 0.00 : 88fe: 48 03 6e 20 add 0x20(%rsi),%rbp : unsigned int i = tx_ring->next_to_clean; : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 2.30 : 8902: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 8906: 48 03 5e 28 add 0x28(%rsi),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, i); : i -= tx_ring->count; 0.00 : 890a: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 8911: 00 0.00 : 8912: c7 44 24 20 00 00 00 movl $0x0,0x20(%rsp) 0.00 : 8919: 00 0.00 : 891a: 41 29 d4 sub %edx,%r12d 0.00 : 891d: 0f 1f 00 nopl (%rax) : : do { : union ixgbe_adv_tx_desc *eop_desc = tx_buffer->next_to_watch; 0.00 : 8920: 4c 8b 2b mov (%rbx),%r13 : : /* if next_to_watch is not set then there is no work pending */ : if (!eop_desc) ??:0 13.79 : 8923: 4d 85 ed test %r13,%r13 0.00 : 8926: 0f 84 f5 00 00 00 je 8a21 : break; : : /* prevent any other reads prior to eop_desc */ : rmb(); ??:0 1.15 : 892c: 0f ae e8 lfence : : /* if DD is not set pending work has not been completed */ : if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD))) 1.15 : 892f: 41 f6 45 0c 01 testb $0x1,0xc(%r13) ??:0 29.89 : 8934: 0f 84 e7 00 00 00 je 8a21 : : /* clear next_to_watch to prevent false hangs */ : tx_buffer->next_to_watch = NULL; : : /* update the statistics for this packet */ : total_bytes += tx_buffer->bytecount; 0.00 : 893a: 8b 43 18 mov 0x18(%rbx),%eax : /* if DD is not set pending work has not been completed */ : if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD))) : break; : : /* clear next_to_watch to prevent false hangs */ : tx_buffer->next_to_watch = NULL; 0.00 : 893d: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) : : /* update the statistics for this packet */ : total_bytes += tx_buffer->bytecount; 0.00 : 8944: 01 44 24 1c add %eax,0x1c(%rsp) : total_packets += tx_buffer->gso_segs; 0.00 : 8948: 0f b7 43 1c movzwl 0x1c(%rbx),%eax 0.00 : 894c: 01 44 24 20 add %eax,0x20(%rsp) : tx_buffer->skb); : : : #endif : /* free the skb */ : dev_kfree_skb_any(tx_buffer->skb); ??:0 1.15 : 8950: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 8954: e8 00 00 00 00 callq 8959 : : /* unmap skb header data */ : dma_unmap_single(tx_ring->dev, 0.00 : 8959: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 895d: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 8960: 48 8b 73 20 mov 0x20(%rbx),%rsi : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 8964: 48 85 ff test %rdi,%rdi 0.00 : 8967: 0f 84 83 01 00 00 je 8af0 0.00 : 896d: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 8974: 48 85 c0 test %rax,%rax 0.00 : 8977: 0f 84 73 01 00 00 je 8af0 : struct dma_attrs *attrs) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->unmap_page) 1.15 : 897d: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 8981: 48 85 c0 test %rax,%rax 0.00 : 8984: 74 0c je 8992 : ops->unmap_page(dev, addr, size, dir, attrs); 0.00 : 8986: 89 d2 mov %edx,%edx 0.00 : 8988: 45 31 c0 xor %r8d,%r8d 0.00 : 898b: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 8990: ff d0 callq *%rax : dma_unmap_addr(tx_buffer, dma), : dma_unmap_len(tx_buffer, len), : DMA_TO_DEVICE); : : /* clear tx_buffer data */ : tx_buffer->skb = NULL; 0.00 : 8992: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 8999: 00 : dma_unmap_len_set(tx_buffer, len, 0); 1.15 : 899a: c7 43 28 00 00 00 00 movl $0x0,0x28(%rbx) : : /* unmap remaining buffers */ : while (tx_desc != eop_desc) { 0.00 : 89a1: 4c 39 ed cmp %r13,%rbp 0.00 : 89a4: 74 5a je 8a00 : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { 0.00 : 89a6: 41 83 c4 01 add $0x1,%r12d 0.00 : 89aa: 0f 84 4c 01 00 00 je 8afc : tx_buffer->skb = NULL; : dma_unmap_len_set(tx_buffer, len, 0); : : /* unmap remaining buffers */ : while (tx_desc != eop_desc) { : tx_buffer++; 0.00 : 89b0: 48 83 c3 30 add $0x30,%rbx : tx_desc++; 1.15 : 89b4: 48 83 c5 10 add $0x10,%rbp : tx_buffer = tx_ring->tx_buffer_info; : tx_desc = IXGBE_TX_DESC(tx_ring, 0); : } : : /* unmap any remaining paged data */ : if (dma_unmap_len(tx_buffer, len)) { 0.00 : 89b8: 8b 53 28 mov 0x28(%rbx),%edx ??:0 8.05 : 89bb: 85 d2 test %edx,%edx 0.00 : 89bd: 74 e2 je 89a1 : dma_unmap_page(tx_ring->dev, 0.00 : 89bf: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 89c3: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 89c7: 48 85 ff test %rdi,%rdi 0.00 : 89ca: 0f 84 10 01 00 00 je 8ae0 ??:0 1.15 : 89d0: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 89d7: 48 85 c0 test %rax,%rax 0.00 : 89da: 0f 84 00 01 00 00 je 8ae0 : size_t size, enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->unmap_page) 1.15 : 89e0: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 89e4: 48 85 c0 test %rax,%rax 0.00 : 89e7: 74 b1 je 899a : ops->unmap_page(dev, addr, size, dir, NULL); 0.00 : 89e9: 89 d2 mov %edx,%edx 0.00 : 89eb: 45 31 c0 xor %r8d,%r8d 0.00 : 89ee: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 89f3: ff d0 callq *%rax 0.00 : 89f5: eb a3 jmp 899a 0.00 : 89f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 89fe: 00 00 : : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { 0.00 : 8a00: 41 83 c4 01 add $0x1,%r12d 0.00 : 8a04: 0f 84 10 02 00 00 je 8c1a : dma_unmap_len_set(tx_buffer, len, 0); : } : } : : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; 0.00 : 8a0a: 48 83 c3 30 add $0x30,%rbx : tx_desc++; 0.00 : 8a0e: 48 83 c5 10 add $0x10,%rbp : * It's not worth to care about 3dnow prefetches for the K6 : * because they are microcoded there and very slow. : */ : static inline void prefetch(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 8a12: 0f 18 4d 00 prefetcht0 0x0(%rbp) : /* issue prefetch for next Tx descriptor */ : prefetch(tx_desc); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 2.30 : 8a16: 83 6c 24 24 01 subl $0x1,0x24(%rsp) 0.00 : 8a1b: 0f 85 ff fe ff ff jne 8920 : : i += tx_ring->count; 0.00 : 8a21: 41 0f b7 46 4c movzwl 0x4c(%r14),%eax : tx_ring->next_to_clean = i; : tx_ring->stats.bytes += total_bytes; : tx_ring->stats.packets += total_packets; : q_vector->tx.total_bytes += total_bytes; 0.00 : 8a26: 48 8b 54 24 10 mov 0x10(%rsp),%rdx : q_vector->tx.total_packets += total_packets; : : if (check_for_tx_hang(tx_ring) && ixgbe_check_tx_hang(tx_ring)) { 0.00 : 8a2b: 49 8d 4e 30 lea 0x30(%r14),%rcx : : /* update budget accounting */ : budget--; : } while (likely(budget)); : : i += tx_ring->count; 0.00 : 8a2f: 41 8d 1c 04 lea (%r12,%rax,1),%ebx : tx_ring->next_to_clean = i; : tx_ring->stats.bytes += total_bytes; 0.00 : 8a33: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 8a37: 49 01 46 60 add %rax,0x60(%r14) : tx_ring->stats.packets += total_packets; 1.15 : 8a3b: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 8a3f: 49 01 46 58 add %rax,0x58(%r14) : /* update budget accounting */ : budget--; : } while (likely(budget)); : : i += tx_ring->count; : tx_ring->next_to_clean = i; 0.00 : 8a43: 66 41 89 5e 52 mov %bx,0x52(%r14) : tx_ring->stats.bytes += total_bytes; : tx_ring->stats.packets += total_packets; : q_vector->tx.total_bytes += total_bytes; 0.00 : 8a48: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 8a4c: 01 42 30 add %eax,0x30(%rdx) : q_vector->tx.total_packets += total_packets; 0.00 : 8a4f: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 8a53: 01 42 34 add %eax,0x34(%rdx) 0.00 : 8a56: 49 8b 46 30 mov 0x30(%r14),%rax : : if (check_for_tx_hang(tx_ring) && ixgbe_check_tx_hang(tx_ring)) { 0.00 : 8a5a: a8 02 test $0x2,%al 0.00 : 8a5c: 74 63 je 8ac1 : return ring->stats.packets; : } : : static u64 ixgbe_get_tx_pending(struct ixgbe_ring *ring) : { : struct ixgbe_adapter *adapter = ring->q_vector->adapter; 0.00 : 8a5e: 49 8b 46 08 mov 0x8(%r14),%rax : return ((head <= tail) ? tail : tail + ring->count) - head; : } : : static bool ixgbe_check_tx_hang(struct ixgbe_ring *tx_ring) : { : u32 tx_done = ixgbe_get_tx_completed(tx_ring); 0.00 : 8a62: 41 8b 7e 58 mov 0x58(%r14),%edi : u32 tx_done_old = tx_ring->tx_stats.tx_done_old; 0.00 : 8a66: 4d 8b 46 78 mov 0x78(%r14),%r8 : return ring->stats.packets; : } : : static u64 ixgbe_get_tx_pending(struct ixgbe_ring *ring) : { : struct ixgbe_adapter *adapter = ring->q_vector->adapter; 0.00 : 8a6a: 48 8b 10 mov (%rax),%rdx : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 8a6d: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax 0.00 : 8a72: c1 e0 06 shl $0x6,%eax 0.00 : 8a75: 48 98 cltq 0.00 : 8a77: 48 05 10 60 00 00 add $0x6010,%rax 0.00 : 8a7d: 48 03 82 80 0e 00 00 add 0xe80(%rdx),%rax 0.00 : 8a84: 8b 30 mov (%rax),%esi 1.15 : 8a86: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax 0.00 : 8a8b: c1 e0 06 shl $0x6,%eax 0.00 : 8a8e: 48 98 cltq 0.00 : 8a90: 48 05 18 60 00 00 add $0x6018,%rax 0.00 : 8a96: 48 03 82 80 0e 00 00 add 0xe80(%rdx),%rax 0.00 : 8a9d: 8b 10 mov (%rax),%edx : struct ixgbe_hw *hw = &adapter->hw; : : u32 head = IXGBE_READ_REG(hw, IXGBE_TDH(ring->reg_idx)); : u32 tail = IXGBE_READ_REG(hw, IXGBE_TDT(ring->reg_idx)); : : return ((head <= tail) ? tail : tail + ring->count) - head; 2.30 : 8a9f: 39 d6 cmp %edx,%esi 0.00 : 8aa1: 76 07 jbe 8aaa 0.00 : 8aa3: 41 0f b7 46 4c movzwl 0x4c(%r14),%eax 0.00 : 8aa8: 01 c2 add %eax,%edx : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 8aaa: f0 41 80 66 30 fd lock andb $0xfd,0x30(%r14) : * requiring this to fail twice we avoid races with : * PFC clearing the ARMED bit and conditions where we : * run the check_tx_hang logic with a transmit completion : * pending but without time to complete it yet. : */ : if ((tx_done_old == tx_done) && tx_pending) { 0.00 : 8ab0: 44 39 c7 cmp %r8d,%edi 0.00 : 8ab3: 74 5c je 8b11 : /* make sure it is true for two checks in a row */ : ret = test_and_set_bit(__IXGBE_HANG_CHECK_ARMED, : &tx_ring->state); : } else { : /* update completed stats and continue */ : tx_ring->tx_stats.tx_done_old = tx_done; 0.00 : 8ab5: 89 ff mov %edi,%edi 0.00 : 8ab7: 49 89 7e 78 mov %rdi,0x78(%r14) 0.00 : 8abb: f0 41 80 66 30 fb lock andb $0xfb,0x30(%r14) : /* the adapter is about to reset, no point in enabling stuff */ : return true; : } : : #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) : if (unlikely(total_packets && netif_carrier_ok(netdev_ring(tx_ring)) && 0.00 : 8ac1: 8b 7c 24 20 mov 0x20(%rsp),%edi 1.15 : 8ac5: 85 ff test %edi,%edi 0.00 : 8ac7: 0f 85 af 00 00 00 jne 8b7c : ++tx_ring->tx_stats.restart_queue; : } : #endif : } : : return !!budget; 1.15 : 8acd: 8b 74 24 24 mov 0x24(%rsp),%esi 0.00 : 8ad1: 85 f6 test %esi,%esi 0.00 : 8ad3: 0f 95 c0 setne %al : } 0.00 : 8ad6: e9 92 00 00 00 jmpq 8b6d 0.00 : 8adb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return dma_ops; 0.00 : 8ae0: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 8ae7 1.15 : 8ae7: e9 f4 fe ff ff jmpq 89e0 0.00 : 8aec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8af0: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 8af7 0.00 : 8af7: e9 81 fe ff ff jmpq 897d : while (tx_desc != eop_desc) { : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8afc: 45 0f b7 66 4c movzwl 0x4c(%r14),%r12d : tx_buffer = tx_ring->tx_buffer_info; 0.00 : 8b01: 49 8b 5e 28 mov 0x28(%r14),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 8b05: 49 8b 6e 20 mov 0x20(%r14),%rbp : while (tx_desc != eop_desc) { : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8b09: 41 f7 dc neg %r12d 0.00 : 8b0c: e9 a7 fe ff ff jmpq 89b8 : * requiring this to fail twice we avoid races with : * PFC clearing the ARMED bit and conditions where we : * run the check_tx_hang logic with a transmit completion : * pending but without time to complete it yet. : */ : if ((tx_done_old == tx_done) && tx_pending) { 0.00 : 8b11: 39 f2 cmp %esi,%edx 0.00 : 8b13: 74 a0 je 8ab5 : */ : static inline int test_and_set_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "bts %2,%1\n\t" 0.00 : 8b15: f0 0f ba 29 02 lock btsl $0x2,(%rcx) 0.00 : 8b1a: 19 c0 sbb %eax,%eax : tx_ring->stats.bytes += total_bytes; : tx_ring->stats.packets += total_packets; : q_vector->tx.total_bytes += total_bytes; : q_vector->tx.total_packets += total_packets; : : if (check_for_tx_hang(tx_ring) && ixgbe_check_tx_hang(tx_ring)) { 0.00 : 8b1c: 85 c0 test %eax,%eax 0.00 : 8b1e: 74 a1 je 8ac1 : " next_to_use <%x>\n" : " next_to_clean <%x>\n", : tx_ring->queue_index, : IXGBE_READ_REG(hw, IXGBE_TDH(tx_ring->reg_idx)), : IXGBE_READ_REG(hw, IXGBE_TDT(tx_ring->reg_idx)), : tx_ring->next_to_use, i); 0.00 : 8b20: 41 f6 87 a8 14 00 00 testb $0x1,0x14a8(%r15) 0.00 : 8b27: 01 0.00 : 8b28: 0f 85 34 01 00 00 jne 8c62 : : static inline : struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, : unsigned int index) : { : return &dev->_tx[index]; 0.00 : 8b2e: 49 8b 46 10 mov 0x10(%r14),%rax : e_err(drv, "tx_buffer_info[next_to_clean]\n" : " time_stamp <%lx>\n" : " jiffies <%lx>\n", : tx_ring->tx_buffer_info[i].time_stamp, jiffies); : : netif_stop_subqueue(netdev_ring(tx_ring), 0.00 : 8b32: 41 0f b6 5e 4e movzbl 0x4e(%r14),%ebx 0.00 : 8b37: 48 8b a8 80 03 00 00 mov 0x380(%rax),%rbp : */ : static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index) : { : struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); : #ifdef CONFIG_NETPOLL_TRAP : if (netpoll_trap()) 0.00 : 8b3e: e8 00 00 00 00 callq 8b43 0.00 : 8b43: 85 c0 test %eax,%eax 0.00 : 8b45: 0f 84 01 01 00 00 je 8c4c : ring_queue_index(tx_ring)); : : e_info(probe, 0.00 : 8b4b: 41 f6 87 a8 14 00 00 testb $0x2,0x14a8(%r15) 0.00 : 8b52: 02 0.00 : 8b53: 0f 85 a0 01 00 00 jne 8cf9 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 8b59: 49 8b 87 10 02 00 00 mov 0x210(%r15),%rax : **/ : static void ixgbe_tx_timeout_reset(struct ixgbe_adapter *adapter) : { : : /* Do the reset outside of interrupt context */ : if (!test_bit(__IXGBE_DOWN, &adapter->state)) { 0.00 : 8b60: a8 04 test $0x4,%al 0.00 : 8b62: 0f 84 c7 00 00 00 je 8c2f : ++tx_ring->tx_stats.restart_queue; : } : #endif : } : : return !!budget; 0.00 : 8b68: b8 01 00 00 00 mov $0x1,%eax : } 2.30 : 8b6d: 48 83 c4 28 add $0x28,%rsp 0.00 : 8b71: 5b pop %rbx 0.00 : 8b72: 5d pop %rbp 0.00 : 8b73: 41 5c pop %r12 0.00 : 8b75: 41 5d pop %r13 0.00 : 8b77: 41 5e pop %r14 0.00 : 8b79: 41 5f pop %r15 0.00 : 8b7b: c3 retq : * : * Check if carrier is present on device : */ : static inline int netif_carrier_ok(const struct net_device *dev) : { : return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); 0.00 : 8b7c: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 8b80: 48 8b 40 78 mov 0x78(%rax),%rax : /* the adapter is about to reset, no point in enabling stuff */ : return true; : } : : #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) : if (unlikely(total_packets && netif_carrier_ok(netdev_ring(tx_ring)) && 4.60 : 8b84: a8 04 test $0x4,%al 0.00 : 8b86: 0f 85 41 ff ff ff jne 8acd : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 8b8c: 41 0f b7 46 52 movzwl 0x52(%r14),%eax : u16 ntu = ring->next_to_use; 0.00 : 8b91: 41 0f b7 4e 50 movzwl 0x50(%r14),%ecx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 8b96: 31 d2 xor %edx,%edx 0.00 : 8b98: 66 39 c8 cmp %cx,%ax 0.00 : 8b9b: 77 05 ja 8ba2 0.00 : 8b9d: 41 0f b7 56 4c movzwl 0x4c(%r14),%edx 0.00 : 8ba2: 83 e8 01 sub $0x1,%eax 0.00 : 8ba5: 66 29 c8 sub %cx,%ax 0.00 : 8ba8: 01 d0 add %edx,%eax 0.00 : 8baa: 66 83 f8 2b cmp $0x2b,%ax 0.00 : 8bae: 0f 86 19 ff ff ff jbe 8acd : (ixgbe_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD))) { : /* Make sure that anybody stopping the queue after this : * sees the new next_to_clean. : */ : smp_mb(); 0.00 : 8bb4: 0f ae f0 mfence : : static inline : struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, : unsigned int index) : { : return &dev->_tx[index]; 1.15 : 8bb7: 41 0f b6 5e 4e movzbl 0x4e(%r14),%ebx 3.45 : 8bbc: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 8bc0: 48 c1 e3 08 shl $0x8,%rbx 1.15 : 8bc4: 48 03 98 80 03 00 00 add 0x380(%rax),%rbx 1.15 : 8bcb: 48 8b 43 10 mov 0x10(%rbx),%rax : } : } : : static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue) : { : return test_bit(__QUEUE_STATE_XOFF, &dev_queue->state); 0.00 : 8bcf: 48 8d 6b 10 lea 0x10(%rbx),%rbp : #ifdef HAVE_TX_MQ : if (__netif_subqueue_stopped(netdev_ring(tx_ring), 0.00 : 8bd3: a8 01 test $0x1,%al 0.00 : 8bd5: 0f 84 f2 fe ff ff je 8acd 0.00 : 8bdb: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 8be0: 48 8b 02 mov (%rdx),%rax 0.00 : 8be3: 48 8b 80 10 02 00 00 mov 0x210(%rax),%rax 0.00 : 8bea: a8 04 test $0x4,%al 0.00 : 8bec: 0f 85 db fe ff ff jne 8acd : */ : static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index) : { : struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); : #ifdef CONFIG_NETPOLL_TRAP : if (netpoll_trap()) 0.00 : 8bf2: e8 00 00 00 00 callq 8bf7 0.00 : 8bf7: 85 c0 test %eax,%eax 0.00 : 8bf9: 75 15 jne 8c10 : */ : static inline int test_and_clear_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "btr %2,%1\n\t" 0.00 : 8bfb: f0 0f ba 75 00 00 lock btrl $0x0,0x0(%rbp) 0.00 : 8c01: 19 c0 sbb %eax,%eax : return; : #endif : if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state)) 0.00 : 8c03: 85 c0 test %eax,%eax 0.00 : 8c05: 74 09 je 8c10 : __netif_schedule(txq->qdisc); 0.00 : 8c07: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 8c0b: e8 00 00 00 00 callq 8c10 : ring_queue_index(tx_ring)) : && !test_bit(__IXGBE_DOWN, &q_vector->adapter->state)) { : netif_wake_subqueue(netdev_ring(tx_ring), : ring_queue_index(tx_ring)); : ++tx_ring->tx_stats.restart_queue; 0.00 : 8c10: 49 83 46 68 01 addq $0x1,0x68(%r14) 0.00 : 8c15: e9 b3 fe ff ff jmpq 8acd : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8c1a: 45 0f b7 66 4c movzwl 0x4c(%r14),%r12d : tx_buffer = tx_ring->tx_buffer_info; 1.15 : 8c1f: 49 8b 5e 28 mov 0x28(%r14),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 8c23: 49 8b 6e 20 mov 0x20(%r14),%rbp : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8c27: 41 f7 dc neg %r12d 0.00 : 8c2a: e9 e3 fd ff ff jmpq 8a12 : static void ixgbe_tx_timeout_reset(struct ixgbe_adapter *adapter) : { : : /* Do the reset outside of interrupt context */ : if (!test_bit(__IXGBE_DOWN, &adapter->state)) { : adapter->flags2 |= IXGBE_FLAG2_RESET_REQUESTED; 0.00 : 8c2f: 41 81 8f 1c 02 00 00 orl $0x80,0x21c(%r15) 0.00 : 8c36: 80 00 00 00 : ixgbe_service_event_schedule(adapter); 0.00 : 8c3a: 4c 89 ff mov %r15,%rdi 0.00 : 8c3d: e8 9e 85 ff ff callq 11e0 0.00 : 8c42: b8 01 00 00 00 mov $0x1,%eax 0.00 : 8c47: e9 21 ff ff ff jmpq 8b6d : struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); : #ifdef CONFIG_NETPOLL_TRAP : if (netpoll_trap()) : return; : #endif : netif_tx_stop_queue(txq); 0.00 : 8c4c: 0f b6 fb movzbl %bl,%edi 0.00 : 8c4f: 48 c1 e7 08 shl $0x8,%rdi 0.00 : 8c53: 48 8d 7c 3d 00 lea 0x0(%rbp,%rdi,1),%rdi 0.00 : 8c58: e8 e3 a9 ff ff callq 3640 0.00 : 8c5d: e9 e9 fe ff ff jmpq 8b4b 0.00 : 8c62: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax : " next_to_use <%x>\n" : " next_to_clean <%x>\n", : tx_ring->queue_index, : IXGBE_READ_REG(hw, IXGBE_TDH(tx_ring->reg_idx)), : IXGBE_READ_REG(hw, IXGBE_TDT(tx_ring->reg_idx)), : tx_ring->next_to_use, i); 0.00 : 8c67: 45 0f b7 4e 50 movzwl 0x50(%r14),%r9d 0.00 : 8c6c: c1 e0 06 shl $0x6,%eax 0.00 : 8c6f: 48 98 cltq 0.00 : 8c71: 48 05 18 60 00 00 add $0x6018,%rax 0.00 : 8c77: 49 03 87 80 0e 00 00 add 0xe80(%r15),%rax 0.00 : 8c7e: 44 8b 00 mov (%rax),%r8d 0.00 : 8c81: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax 0.00 : 8c86: c1 e0 06 shl $0x6,%eax 0.00 : 8c89: 48 98 cltq 0.00 : 8c8b: 48 05 10 60 00 00 add $0x6010,%rax 0.00 : 8c91: 49 03 87 80 0e 00 00 add 0xe80(%r15),%rax 0.00 : 8c98: 8b 08 mov (%rax),%ecx 0.00 : 8c9a: 41 0f b6 56 4e movzbl 0x4e(%r14),%edx 0.00 : 8c9f: 49 8b bf 00 02 00 00 mov 0x200(%r15),%rdi 0.00 : 8ca6: 31 c0 xor %eax,%eax 0.00 : 8ca8: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 8caf: 89 1c 24 mov %ebx,(%rsp) 0.00 : 8cb2: e8 00 00 00 00 callq 8cb7 : e_err(drv, "tx_buffer_info[next_to_clean]\n" : " time_stamp <%lx>\n" : " jiffies <%lx>\n", : tx_ring->tx_buffer_info[i].time_stamp, jiffies); 0.00 : 8cb7: 41 f6 87 a8 14 00 00 testb $0x1,0x14a8(%r15) 0.00 : 8cbe: 01 0.00 : 8cbf: 0f 84 69 fe ff ff je 8b2e 0.00 : 8cc5: 89 d8 mov %ebx,%eax 0.00 : 8cc7: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 8ccb: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 8cd2 0.00 : 8cd2: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8cd6: 49 8b bf 00 02 00 00 mov 0x200(%r15),%rdi 0.00 : 8cdd: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 8ce4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 8ce8: 48 8b 54 02 08 mov 0x8(%rdx,%rax,1),%rdx 0.00 : 8ced: 31 c0 xor %eax,%eax 0.00 : 8cef: e8 00 00 00 00 callq 8cf4 0.00 : 8cf4: e9 35 fe ff ff jmpq 8b2e : netif_stop_subqueue(netdev_ring(tx_ring), : ring_queue_index(tx_ring)); : : e_info(probe, : "tx hang %d detected on queue %d, resetting adapter\n", : adapter->tx_timeout_count + 1, tx_ring->queue_index); 0.00 : 8cf9: 41 8b 97 d0 04 00 00 mov 0x4d0(%r15),%edx 0.00 : 8d00: 41 0f b6 4e 4e movzbl 0x4e(%r14),%ecx 0.00 : 8d05: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 8d0c: 49 8b bf 00 02 00 00 mov 0x200(%r15),%rdi 0.00 : 8d13: 31 c0 xor %eax,%eax 0.00 : 8d15: 83 c2 01 add $0x1,%edx 0.00 : 8d18: e8 00 00 00 00 callq 8d1d 0.00 : 8d1d: e9 37 fe ff ff jmpq 8b59 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 26.87 ??:0 17.91 ??:0 14.93 ??:0 5.97 ??:0 5.97 ??:0 4.48 ??:0 2.99 ??:0 2.99 ??:0 2.99 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 1.49 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007c00 : : return true; : } : : static struct sk_buff *ixgbe_fetch_rx_buffer(struct ixgbe_ring *rx_ring, : union ixgbe_adv_rx_desc *rx_desc) : { ??:0 1.49 : 7c00: 48 83 ec 38 sub $0x38,%rsp 0.00 : 7c04: 48 89 6c 24 10 mov %rbp,0x10(%rsp) ??:0 5.97 : 7c09: 4c 89 6c 24 20 mov %r13,0x20(%rsp) 0.00 : 7c0e: 48 89 fd mov %rdi,%rbp 0.00 : 7c11: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 7c16: 4c 89 64 24 18 mov %r12,0x18(%rsp) 0.00 : 7c1b: 49 89 f5 mov %rsi,%r13 0.00 : 7c1e: 4c 89 74 24 28 mov %r14,0x28(%rsp) 0.00 : 7c23: 4c 89 7c 24 30 mov %r15,0x30(%rsp) : struct ixgbe_rx_buffer *rx_buffer; : struct sk_buff *skb; : struct page *page; : : rx_buffer = &rx_ring->rx_buffer_info[rx_ring->next_to_clean]; 0.00 : 7c28: 0f b7 5f 52 movzwl 0x52(%rdi),%ebx 0.00 : 7c2c: 48 c1 e3 05 shl $0x5,%rbx 0.00 : 7c30: 48 03 5f 28 add 0x28(%rdi),%rbx : page = rx_buffer->page; 0.00 : 7c34: 48 8b 53 10 mov 0x10(%rbx),%rdx : * Useful for spinlocks to avoid one state transition in the : * cache coherency protocol: : */ : static inline void prefetchw(const void *x) : { : alternative_input(BASE_PREFETCH, 17.91 : 7c38: 0f 18 0a prefetcht0 (%rdx) : prefetchw(page); : : skb = rx_buffer->skb; 26.87 : 7c3b: 4c 8b 23 mov (%rbx),%r12 : : if (likely(!skb)) { 0.00 : 7c3e: 4d 85 e4 test %r12,%r12 0.00 : 7c41: 0f 85 49 02 00 00 jne 7e90 : * It's not worth to care about 3dnow prefetches for the K6 : * because they are microcoded there and very slow. : */ : static inline void prefetch(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 7c47: 48 b8 00 00 00 00 00 movabs $0x160000000000,%rax 0.00 : 7c4e: 16 00 00 0.00 : 7c51: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 7c55: 48 ba b7 6d db b6 6d movabs $0x6db6db6db6db6db7,%rdx 0.00 : 7c5c: db b6 6d 0.00 : 7c5f: 48 c1 f8 03 sar $0x3,%rax 0.00 : 7c63: 48 0f af c2 imul %rdx,%rax 0.00 : 7c67: 48 ba 00 00 00 00 00 movabs $0xffff880000000000,%rdx 0.00 : 7c6e: 88 ff ff 0.00 : 7c71: 48 c1 e0 0c shl $0xc,%rax 0.00 : 7c75: 48 01 d0 add %rdx,%rax 0.00 : 7c78: 8b 53 18 mov 0x18(%rbx),%edx 0.00 : 7c7b: 48 01 d0 add %rdx,%rax 0.00 : 7c7e: 0f 18 08 prefetcht0 (%rax) : } : : static inline struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev, : unsigned int length, gfp_t gfp) : { : struct sk_buff *skb = __netdev_alloc_skb(dev, length + NET_IP_ALIGN, gfp); 14.93 : 7c81: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 7c85: ba 20 00 00 00 mov $0x20,%edx 0.00 : 7c8a: be 00 01 00 00 mov $0x100,%esi 0.00 : 7c8f: e8 00 00 00 00 callq 7c94 : #endif : : /* allocate a skb to store the frags */ : skb = netdev_alloc_skb_ip_align(netdev_ring(rx_ring), : IXGBE_RX_HDR_SIZE); : if (unlikely(!skb)) { 0.00 : 7c94: 48 85 c0 test %rax,%rax 0.00 : 7c97: 49 89 c4 mov %rax,%r12 0.00 : 7c9a: 0f 84 60 02 00 00 je 7f00 : * Useful for spinlocks to avoid one state transition in the : * cache coherency protocol: : */ : static inline void prefetchw(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 7ca0: 48 8b 80 e0 00 00 00 mov 0xe0(%rax),%rax 0.00 : 7ca7: 0f 18 08 prefetcht0 (%rax) : * Delay unmapping of the first packet. It carries the : * header information, HW may still access the header : * after the writeback. Only unmap it when EOP is : * reached : */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) 0.00 : 7caa: 41 f6 45 08 02 testb $0x2,0x8(%r13) 0.00 : 7caf: 4c 8d 75 30 lea 0x30(%rbp),%r14 0.00 : 7cb3: 0f 84 2f 02 00 00 je 7ee8 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 7cb9: 49 8b 06 mov (%r14),%rax : if (ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP)) : ixgbe_dma_sync_frag(rx_ring, skb); : : dma_sync: : /* we are reusing so sync this buffer for CPU use */ : dma_sync_single_range_for_cpu(rx_ring->dev, 0.00 : 7cbc: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 7cc0: 8b 73 18 mov 0x18(%rbx),%esi ??:0 1.49 : 7cc3: 48 8b 4b 08 mov 0x8(%rbx),%rcx : { : #if MAX_SKB_FRAGS < 8 : return ALIGN(IXGBE_MAX_RXBUFFER / MAX_SKB_FRAGS, 1024); : #else : #ifdef IXGBE_FCOE : if (test_bit(__IXGBE_RX_FCOE, &ring->state)) 0.00 : 7cc7: 83 e0 20 and $0x20,%eax 0.00 : 7cca: 48 83 f8 01 cmp $0x1,%rax 0.00 : 7cce: 48 19 d2 sbb %rdx,%rdx 0.00 : 7cd1: 48 81 e2 00 f8 ff ff and $0xfffffffffffff800,%rdx 0.00 : 7cd8: 48 81 c2 00 10 00 00 add $0x1000,%rdx : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 7cdf: 48 85 ff test %rdi,%rdi 0.00 : 7ce2: 0f 84 68 01 00 00 je 7e50 0.00 : 7ce8: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 7cef: 48 85 c0 test %rax,%rax 0.00 : 7cf2: 0f 84 58 01 00 00 je 7e50 : enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->sync_single_for_cpu) 0.00 : 7cf8: 48 8b 40 30 mov 0x30(%rax),%rax 4.48 : 7cfc: 48 85 c0 test %rax,%rax 1.49 : 7cff: 74 0c je 7d0d : ops->sync_single_for_cpu(dev, addr, size, dir); 2.99 : 7d01: 89 f6 mov %esi,%esi 0.00 : 7d03: 48 01 ce add %rcx,%rsi 0.00 : 7d06: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7d0b: ff d0 callq *%rax : ixgbe_rx_bufsz(rx_ring), : DMA_FROM_DEVICE); : } : : /* pull page into skb */ : if (ixgbe_add_rx_frag(rx_ring, rx_buffer, rx_desc, skb)) { 2.99 : 7d0d: 4c 89 e1 mov %r12,%rcx 0.00 : 7d10: 4c 89 ea mov %r13,%rdx 0.00 : 7d13: 48 89 de mov %rbx,%rsi 0.00 : 7d16: 48 89 ef mov %rbp,%rdi 0.00 : 7d19: e8 72 d7 ff ff callq 5490 0.00 : 7d1e: 84 c0 test %al,%al 0.00 : 7d20: 0f 85 9a 00 00 00 jne 7dc0 : /* hand second half of page back to the ring */ : ixgbe_reuse_rx_page(rx_ring, rx_buffer); : } else if (IXGBE_CB(skb)->dma == rx_buffer->dma) { 0.00 : 7d26: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 7d2a: 49 39 74 24 28 cmp %rsi,0x28(%r12) 0.00 : 7d2f: 49 8d 44 24 28 lea 0x28(%r12),%rax 0.00 : 7d34: 0f 84 26 01 00 00 je 7e60 : /* the page has been released from the ring */ : IXGBE_CB(skb)->page_released = true; : } else { : /* we are not reusing the buffer so unmap it */ : dma_unmap_page(rx_ring->dev, rx_buffer->dma, 0.00 : 7d3a: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 7d3e: 48 8b 55 30 mov 0x30(%rbp),%rdx 0.00 : 7d42: 48 85 ff test %rdi,%rdi 0.00 : 7d45: 0f 84 35 01 00 00 je 7e80 0.00 : 7d4b: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 7d52: 48 85 c0 test %rax,%rax 0.00 : 7d55: 0f 84 25 01 00 00 je 7e80 : size_t size, enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->unmap_page) 0.00 : 7d5b: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 7d5f: 48 85 c0 test %rax,%rax 0.00 : 7d62: 74 1b je 7d7f : ops->unmap_page(dev, addr, size, dir, NULL); 0.00 : 7d64: 48 c1 ea 05 shr $0x5,%rdx 0.00 : 7d68: 45 31 c0 xor %r8d,%r8d 0.00 : 7d6b: 89 d1 mov %edx,%ecx 0.00 : 7d6d: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 7d72: 83 e1 01 and $0x1,%ecx 0.00 : 7d75: 48 d3 e2 shl %cl,%rdx 0.00 : 7d78: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7d7d: ff d0 callq *%rax : ixgbe_rx_pg_size(rx_ring), : DMA_FROM_DEVICE); : } : : /* clear contents of buffer_info */ : rx_buffer->skb = NULL; 0.00 : 7d7f: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) : rx_buffer->dma = 0; 1.49 : 7d86: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 7d8d: 00 : rx_buffer->page = NULL; 0.00 : 7d8e: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 7d95: 00 : : return skb; : } 0.00 : 7d96: 4c 89 e0 mov %r12,%rax 0.00 : 7d99: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7d9e: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7da3: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7da8: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7dad: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 7db2: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 7db7: 48 83 c4 38 add $0x38,%rsp 1.49 : 7dbb: c3 retq 0.00 : 7dbc: 0f 1f 40 00 nopl 0x0(%rax) : **/ : static void ixgbe_reuse_rx_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *old_buff) : { : struct ixgbe_rx_buffer *new_buff; : u16 nta = rx_ring->next_to_alloc; 2.99 : 7dc0: 0f b7 45 54 movzwl 0x54(%rbp),%eax : : new_buff = &rx_ring->rx_buffer_info[nta]; : : /* update, and store next to alloc */ : nta++; : rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0; 0.00 : 7dc4: ba 00 00 00 00 mov $0x0,%edx : struct ixgbe_rx_buffer *old_buff) : { : struct ixgbe_rx_buffer *new_buff; : u16 nta = rx_ring->next_to_alloc; : : new_buff = &rx_ring->rx_buffer_info[nta]; 0.00 : 7dc9: 0f b7 c8 movzwl %ax,%ecx : : /* update, and store next to alloc */ : nta++; 0.00 : 7dcc: 83 c0 01 add $0x1,%eax : struct ixgbe_rx_buffer *old_buff) : { : struct ixgbe_rx_buffer *new_buff; : u16 nta = rx_ring->next_to_alloc; : : new_buff = &rx_ring->rx_buffer_info[nta]; 1.49 : 7dcf: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 7dd3: 48 03 4d 28 add 0x28(%rbp),%rcx : : /* update, and store next to alloc */ : nta++; : rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0; 0.00 : 7dd7: 66 3b 45 4c cmp 0x4c(%rbp),%ax 0.00 : 7ddb: 0f 43 c2 cmovae %edx,%eax 1.49 : 7dde: 66 89 45 54 mov %ax,0x54(%rbp) : : /* transfer page from old buffer to new buffer */ : new_buff->page = old_buff->page; 0.00 : 7de2: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 7de6: 48 89 41 10 mov %rax,0x10(%rcx) : new_buff->dma = old_buff->dma; 1.49 : 7dea: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 7dee: 48 89 51 08 mov %rdx,0x8(%rcx) : new_buff->page_offset = old_buff->page_offset; 0.00 : 7df2: 8b 73 18 mov 0x18(%rbx),%esi 0.00 : 7df5: 89 71 18 mov %esi,0x18(%rcx) 0.00 : 7df8: 48 8b 45 30 mov 0x30(%rbp),%rax : : /* sync the buffer for use by the device */ : dma_sync_single_range_for_device(rx_ring->dev, new_buff->dma, 0.00 : 7dfc: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 7e00: 83 e0 20 and $0x20,%eax 0.00 : 7e03: 48 83 f8 01 cmp $0x1,%rax 0.00 : 7e07: 4d 19 c0 sbb %r8,%r8 0.00 : 7e0a: 49 81 e0 00 f8 ff ff and $0xfffffffffffff800,%r8 0.00 : 7e11: 49 81 c0 00 10 00 00 add $0x1000,%r8 0.00 : 7e18: 48 85 ff test %rdi,%rdi 0.00 : 7e1b: 74 53 je 7e70 0.00 : 7e1d: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 7e24: 48 85 c0 test %rax,%rax 0.00 : 7e27: 74 47 je 7e70 : enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->sync_single_for_device) 0.00 : 7e29: 48 8b 40 38 mov 0x38(%rax),%rax 0.00 : 7e2d: 48 85 c0 test %rax,%rax 0.00 : 7e30: 0f 84 49 ff ff ff je 7d7f : ops->sync_single_for_device(dev, addr, size, dir); 0.00 : 7e36: 89 f6 mov %esi,%esi 0.00 : 7e38: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7e3d: 48 01 d6 add %rdx,%rsi 0.00 : 7e40: 4c 89 c2 mov %r8,%rdx 0.00 : 7e43: ff d0 callq *%rax 0.00 : 7e45: e9 35 ff ff ff jmpq 7d7f 0.00 : 7e4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return dma_ops; 1.49 : 7e50: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7e57 ??:0 5.97 : 7e57: e9 9c fe ff ff jmpq 7cf8 0.00 : 7e5c: 0f 1f 40 00 nopl 0x0(%rax) : if (ixgbe_add_rx_frag(rx_ring, rx_buffer, rx_desc, skb)) { : /* hand second half of page back to the ring */ : ixgbe_reuse_rx_page(rx_ring, rx_buffer); : } else if (IXGBE_CB(skb)->dma == rx_buffer->dma) { : /* the page has been released from the ring */ : IXGBE_CB(skb)->page_released = true; 0.00 : 7e60: c6 40 1a 01 movb $0x1,0x1a(%rax) 0.00 : 7e64: e9 16 ff ff ff jmpq 7d7f 0.00 : 7e69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) ??:0 1.49 : 7e70: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7e77 0.00 : 7e77: eb b0 jmp 7e29 0.00 : 7e79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7e80: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7e87 0.00 : 7e87: e9 cf fe ff ff jmpq 7d5b 0.00 : 7e8c: 0f 1f 40 00 nopl 0x0(%rax) : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) : goto dma_sync; : : IXGBE_CB(skb)->dma = rx_buffer->dma; : } else { : if (ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP)) 0.00 : 7e90: f6 46 08 02 testb $0x2,0x8(%rsi) 0.00 : 7e94: 4c 8d 77 30 lea 0x30(%rdi),%r14 0.00 : 7e98: 0f 84 1b fe ff ff je 7cb9 : */ : static void ixgbe_dma_sync_frag(struct ixgbe_ring *rx_ring, : struct sk_buff *skb) : { : /* if the page was released unmap it, else just sync our portion */ : if (unlikely(IXGBE_CB(skb)->page_released)) { 0.00 : 7e9e: 4d 8d 7c 24 28 lea 0x28(%r12),%r15 0.00 : 7ea3: 41 80 7f 1a 00 cmpb $0x0,0x1a(%r15) 0.00 : 7ea8: 74 63 je 7f0d 0.00 : 7eaa: 48 8b 4f 30 mov 0x30(%rdi),%rcx : dma_unmap_page(rx_ring->dev, IXGBE_CB(skb)->dma, 0.00 : 7eae: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 7eb3: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 7eb8: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 7ebc: 48 c1 e9 05 shr $0x5,%rcx 0.00 : 7ec0: 83 e1 01 and $0x1,%ecx 0.00 : 7ec3: 48 d3 e2 shl %cl,%rdx 0.00 : 7ec6: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7ecb: e8 30 81 ff ff callq 0 : ixgbe_rx_pg_size(rx_ring), DMA_FROM_DEVICE); : IXGBE_CB(skb)->page_released = false; 0.00 : 7ed0: 41 c6 47 1a 00 movb $0x0,0x1a(%r15) : IXGBE_CB(skb)->dma, : skb_shinfo(skb)->frags[0].page_offset, : ixgbe_rx_bufsz(rx_ring), : DMA_FROM_DEVICE); : } : IXGBE_CB(skb)->dma = 0; 0.00 : 7ed5: 49 c7 07 00 00 00 00 movq $0x0,(%r15) 0.00 : 7edc: e9 d8 fd ff ff jmpq 7cb9 0.00 : 7ee1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * reached : */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) : goto dma_sync; : : IXGBE_CB(skb)->dma = rx_buffer->dma; 0.00 : 7ee8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7eec: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 7ef1: e9 17 fe ff ff jmpq 7d0d 0.00 : 7ef6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7efd: 00 00 00 : : /* allocate a skb to store the frags */ : skb = netdev_alloc_skb_ip_align(netdev_ring(rx_ring), : IXGBE_RX_HDR_SIZE); : if (unlikely(!skb)) { : rx_ring->rx_stats.alloc_rx_buff_failed++; 0.00 : 7f00: 48 83 85 88 00 00 00 addq $0x1,0x88(%rbp) 0.00 : 7f07: 01 : rx_buffer->skb = NULL; : rx_buffer->dma = 0; : rx_buffer->page = NULL; : : return skb; : } 0.00 : 7f08: e9 89 fe ff ff jmpq 7d96 0.00 : 7f0d: 48 8b 47 30 mov 0x30(%rdi),%rax : if (unlikely(IXGBE_CB(skb)->page_released)) { : dma_unmap_page(rx_ring->dev, IXGBE_CB(skb)->dma, : ixgbe_rx_pg_size(rx_ring), DMA_FROM_DEVICE); : IXGBE_CB(skb)->page_released = false; : } else { : dma_sync_single_range_for_cpu(rx_ring->dev, 0.00 : 7f11: 41 8b 94 24 d0 00 00 mov 0xd0(%r12),%edx 0.00 : 7f18: 00 0.00 : 7f19: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 7f1d: 83 e0 20 and $0x20,%eax 0.00 : 7f20: 48 83 f8 01 cmp $0x1,%rax 0.00 : 7f24: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 7f2b: 00 0.00 : 7f2c: 4d 19 c0 sbb %r8,%r8 0.00 : 7f2f: 49 81 e0 00 f8 ff ff and $0xfffffffffffff800,%r8 0.00 : 7f36: 49 81 c0 00 10 00 00 add $0x1000,%r8 : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 7f3d: 48 85 ff test %rdi,%rdi 0.00 : 7f40: 8b 4c 10 40 mov 0x40(%rax,%rdx,1),%ecx 0.00 : 7f44: 49 8b 54 24 28 mov 0x28(%r12),%rdx 0.00 : 7f49: 74 2d je 7f78 0.00 : 7f4b: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 7f52: 48 85 c0 test %rax,%rax 0.00 : 7f55: 74 21 je 7f78 : enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->sync_single_for_cpu) 0.00 : 7f57: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 7f5b: 48 85 c0 test %rax,%rax 0.00 : 7f5e: 0f 84 71 ff ff ff je 7ed5 : ops->sync_single_for_cpu(dev, addr, size, dir); 0.00 : 7f64: 89 ce mov %ecx,%esi 0.00 : 7f66: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7f6b: 48 01 d6 add %rdx,%rsi 0.00 : 7f6e: 4c 89 c2 mov %r8,%rdx 0.00 : 7f71: ff d0 callq *%rax 0.00 : 7f73: e9 5d ff ff ff jmpq 7ed5 : return dma_ops; 0.00 : 7f78: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7f7f 0.00 : 7f7f: eb d6 jmp 7f57 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 52.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 18.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 6.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 3.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1109 3.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1112 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1112 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1112 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1112 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1112 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079f030 : : * : * Note that the input data is always copied; the caller need not save it. : */ : void : tuplesort_puttupleslot(Tuplesortstate *state, TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 0.69 : 79f030: 55 push %rbp : : /* : * Copy the given tuple into memory we control, and decrease availMem. : * Then call the common code. : */ : COPYTUP(state, &stup, (void *) slot); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 52.78 : 79f031: 48 89 f2 mov %rsi,%rdx : * : * Note that the input data is always copied; the caller need not save it. : */ : void : tuplesort_puttupleslot(Tuplesortstate *state, TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 0.69 : 79f034: 48 89 e5 mov %rsp,%rbp 0.00 : 79f037: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 6.94 : 79f03b: 4c 89 65 f0 mov %r12,-0x10(%rbp) : : /* : * Copy the given tuple into memory we control, and decrease availMem. : * Then call the common code. : */ : COPYTUP(state, &stup, (void *) slot); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 0.69 : 79f03f: 4c 8d 65 c0 lea -0x40(%rbp),%r12 : * : * Note that the input data is always copied; the caller need not save it. : */ : void : tuplesort_puttupleslot(Tuplesortstate *state, TupleTableSlot *slot) : { 0.00 : 79f043: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1099 1.39 : 79f047: 48 83 ec 40 sub $0x40,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 2.08 : 79f04b: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 18.75 : 79f04f: 4c 8b 2d 0a b8 41 00 mov 0x41b80a(%rip),%r13 # bba860 0.00 : 79f056: 48 89 fb mov %rdi,%rbx : : /* : * Copy the given tuple into memory we control, and decrease availMem. : * Then call the common code. : */ : COPYTUP(state, &stup, (void *) slot); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 0.69 : 79f059: 4c 89 e6 mov %r12,%rsi : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 0.69 : 79f05c: 48 89 05 fd b7 41 00 mov %rax,0x41b7fd(%rip) # bba860 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1107 2.08 : 79f063: ff 53 40 callq *0x40(%rbx) : : puttuple_common(state, &stup); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1109 3.47 : 79f066: 4c 89 e6 mov %r12,%rsi 0.00 : 79f069: 48 89 df mov %rbx,%rdi 0.00 : 79f06c: e8 bf f7 ff ff callq 79e830 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 1.39 : 79f071: 4c 89 2d e8 b7 41 00 mov %r13,0x41b7e8(%rip) # bba860 : : MemoryContextSwitchTo(oldcontext); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1112 1.39 : 79f078: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.69 : 79f07c: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.69 : 79f080: 4c 8b 6d f8 mov -0x8(%rbp),%r13 4.86 : 79f084: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 12.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:443 9.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 8.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 8.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:458 5.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 4.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 4.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:458 4.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:458 4.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:458 2.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:418 2.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:418 2.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:439 2.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 2.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 2.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:442 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:416 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:418 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:439 1.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:443 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006767d0 : : * block will not be delayed by the I/O. Prefetching is optional. : * No-op if prefetching isn't compiled in. : */ : void : PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 1.33 : 6767d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 9.33 : 6767d1: 48 89 e5 mov %rsp,%rbp 0.00 : 6767d4: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 4.00 : 6767d8: 4c 89 65 f0 mov %r12,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 5.33 : 6767dc: 48 89 fb mov %rdi,%rbx 0.00 : 6767df: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 1.33 : 6767e3: 48 83 ec 40 sub $0x40,%rsp : #ifdef USE_PREFETCH : Assert(RelationIsValid(reln)); : Assert(BlockNumberIsValid(blockNum)); : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:416 1.33 : 6767e7: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) : * block will not be delayed by the I/O. Prefetching is optional. : * No-op if prefetching isn't compiled in. : */ : void : PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:410 8.00 : 6767ec: 41 89 f5 mov %esi,%r13d 0.00 : 6767ef: 41 89 d4 mov %edx,%r12d : #ifdef USE_PREFETCH : Assert(RelationIsValid(reln)); : Assert(BlockNumberIsValid(blockNum)); : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); 0.00 : 6767f2: 74 6c je 676860 : : if (RelationUsesLocalBuffers(reln)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:418 1.33 : 6767f4: 48 8b 43 30 mov 0x30(%rbx),%rax 2.67 : 6767f8: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 2.67 : 6767fc: 75 2a jne 676828 : { : /* see comments in ReadBufferExtended */ : if (RELATION_IS_OTHER_TEMP(reln)) 0.00 : 6767fe: 80 7b 20 00 cmpb $0x0,0x20(%rbx) 0.00 : 676802: 74 7b je 67687f : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("cannot access temporary tables of other sessions"))); : : /* pass it off to localbuf.c */ : LocalPrefetchBuffer(reln->rd_smgr, forkNum, blockNum); 0.00 : 676804: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 676808: 44 89 e2 mov %r12d,%edx 0.00 : 67680b: 44 89 ee mov %r13d,%esi 0.00 : 67680e: e8 0d 1a 00 00 callq 678220 : * real fix would involve some additional per-buffer state, and it's : * not clear that there's enough of a problem to justify that. : */ : } : #endif /* USE_PREFETCH */ : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:458 4.00 : 676813: 48 8b 5d e8 mov -0x18(%rbp),%rbx 4.00 : 676817: 4c 8b 65 f0 mov -0x10(%rbp),%r12 4.00 : 67681b: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 67681f: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:458 8.00 : 676820: c3 retq 0.00 : 676821: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : BufferTag newTag; /* identity of requested block */ : int buf_id; : : /* create a tag so we can lookup the buffer */ : INIT_BUFFERTAG(newTag, reln->rd_smgr->smgr_rnode.node, /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 1.33 : 676828: 48 8b 53 10 mov 0x10(%rbx),%rdx : forkNum, blockNum); : : /* see if the block is in the buffer pool already */ : buf_id = BufTableLookup(&newTag); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:439 2.67 : 67682c: 48 8d 7d c0 lea -0x40(%rbp),%rdi : { : BufferTag newTag; /* identity of requested block */ : int buf_id; : : /* create a tag so we can lookup the buffer */ : INIT_BUFFERTAG(newTag, reln->rd_smgr->smgr_rnode.node, /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 2.67 : 676830: 48 8b 02 mov (%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 14.67 : 676833: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 676837: 8b 42 08 mov 0x8(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:435 2.67 : 67683a: 44 89 6d cc mov %r13d,-0x34(%rbp) 1.33 : 67683e: 44 89 65 d0 mov %r12d,-0x30(%rbp) 0.00 : 676842: 89 45 c8 mov %eax,-0x38(%rbp) : forkNum, blockNum); : : /* see if the block is in the buffer pool already */ : buf_id = BufTableLookup(&newTag); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:439 1.33 : 676845: e8 96 d5 ff ff callq 673de0 : : /* If not in buffers, initiate prefetch */ : if (buf_id < 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:442 2.67 : 67684a: 85 c0 test %eax,%eax 0.00 : 67684c: 79 c5 jns 676813 : smgrprefetch(reln->rd_smgr, forkNum, blockNum); 0.00 : 67684e: 48 8b 7b 10 mov 0x10(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:443 1.33 : 676852: 44 89 e2 mov %r12d,%edx 0.00 : 676855: 44 89 ee mov %r13d,%esi 0.00 : 676858: e8 93 2b 02 00 callq 6993f0 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:443 12.00 : 67685d: eb b4 jmp 676813 0.00 : 67685f: 90 nop : #ifdef USE_PREFETCH : Assert(RelationIsValid(reln)); : Assert(BlockNumberIsValid(blockNum)); : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); 0.00 : 676860: 8b 57 1c mov 0x1c(%rdi),%edx 0.00 : 676863: 8b 73 08 mov 0x8(%rbx),%esi 0.00 : 676866: 48 8b 3f mov (%rdi),%rdi 0.00 : 676869: e8 c2 31 02 00 callq 699a30 0.00 : 67686e: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 676872: 48 89 c6 mov %rax,%rsi 0.00 : 676875: e8 86 2a 02 00 callq 699300 0.00 : 67687a: e9 75 ff ff ff jmpq 6767f4 : : if (RelationUsesLocalBuffers(reln)) : { : /* see comments in ReadBufferExtended */ : if (RELATION_IS_OTHER_TEMP(reln)) : ereport(ERROR, 0.00 : 67687f: 45 31 c0 xor %r8d,%r8d 0.00 : 676882: b9 d3 a0 8a 00 mov $0x8aa0d3,%ecx 0.00 : 676887: ba a8 01 00 00 mov $0x1a8,%edx 0.00 : 67688c: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 676891: bf 14 00 00 00 mov $0x14,%edi 0.00 : 676896: e8 25 42 10 00 callq 77aac0 0.00 : 67689b: 84 c0 test %al,%al 0.00 : 67689d: 75 05 jne 6768a4 0.00 : 67689f: e8 2c 2c df ff callq 4694d0 0.00 : 6768a4: bf 08 9f 8a 00 mov $0x8a9f08,%edi 0.00 : 6768a9: 31 c0 xor %eax,%eax 0.00 : 6768ab: e8 f0 5f 10 00 callq 77c8a0 0.00 : 6768b0: bf 40 04 00 00 mov $0x440,%edi 0.00 : 6768b5: 89 c3 mov %eax,%ebx 0.00 : 6768b7: e8 94 64 10 00 callq 77cd50 0.00 : 6768bc: 89 de mov %ebx,%esi 0.00 : 6768be: 89 c7 mov %eax,%edi 0.00 : 6768c0: 31 c0 xor %eax,%eax 0.00 : 6768c2: e8 19 3d 10 00 callq 77a5e0 0.00 : 6768c7: eb d6 jmp 67689f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:119 17.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 11.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 2.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 2.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 2.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 1.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 1.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 1.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cff70 : : * If the datatype is pass-by-reference, memory is obtained with palloc(). : *------------------------------------------------------------------------- : */ : Datum : datumCopy(Datum value, bool typByVal, int typLen) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 6.25 : 6cff70: 55 push %rbp : Datum res; : : if (typByVal) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:119 28.75 : 6cff71: 48 89 f8 mov %rdi,%rax : * If the datatype is pass-by-reference, memory is obtained with palloc(). : *------------------------------------------------------------------------- : */ : Datum : datumCopy(Datum value, bool typByVal, int typLen) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 2.50 : 6cff74: 48 89 e5 mov %rsp,%rbp 1.25 : 6cff77: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 17.50 : 6cff7b: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 2.50 : 6cff7f: 49 89 fd mov %rdi,%r13 1.25 : 6cff82: 4c 89 65 f0 mov %r12,-0x10(%rbp) 1.25 : 6cff86: 48 83 ec 20 sub $0x20,%rsp : Datum res; : : if (typByVal) 0.00 : 6cff8a: 40 84 f6 test %sil,%sil 0.00 : 6cff8d: 75 2d jne 6cffbc : else : { : Size realSize; : char *s; : : if (DatumGetPointer(value) == NULL) 0.00 : 6cff8f: 31 c0 xor %eax,%eax 0.00 : 6cff91: 48 85 ff test %rdi,%rdi 0.00 : 6cff94: 74 26 je 6cffbc : return PointerGetDatum(NULL); : : realSize = datumGetSize(value, typByVal, typLen); 0.00 : 6cff96: 31 f6 xor %esi,%esi 0.00 : 6cff98: e8 23 fe ff ff callq 6cfdc0 0.00 : 6cff9d: 48 89 c3 mov %rax,%rbx : : s = (char *) palloc(realSize); 0.00 : 6cffa0: 48 89 c7 mov %rax,%rdi 0.00 : 6cffa3: e8 a8 8d 0c 00 callq 798d50 : memcpy(s, DatumGetPointer(value), realSize); 0.00 : 6cffa8: 48 89 da mov %rbx,%rdx : if (DatumGetPointer(value) == NULL) : return PointerGetDatum(NULL); : : realSize = datumGetSize(value, typByVal, typLen); : : s = (char *) palloc(realSize); 0.00 : 6cffab: 49 89 c4 mov %rax,%r12 : memcpy(s, DatumGetPointer(value), realSize); 0.00 : 6cffae: 4c 89 ee mov %r13,%rsi 0.00 : 6cffb1: 48 89 c7 mov %rax,%rdi 0.00 : 6cffb4: e8 37 9c d9 ff callq 469bf0 : res = PointerGetDatum(s); 0.00 : 6cffb9: 4c 89 e0 mov %r12,%rax : } : return res; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 5.00 : 6cffbc: 48 8b 5d e8 mov -0x18(%rbp),%rbx 10.00 : 6cffc0: 4c 8b 65 f0 mov -0x10(%rbp),%r12 11.25 : 6cffc4: 4c 8b 6d f8 mov -0x8(%rbp),%r13 12.50 : 6cffc8: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 21.82 ??:0 10.00 ??:0 8.18 ??:0 6.36 ??:0 4.55 ??:0 4.55 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 1.82 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 0.91 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000022b0 : ??:0 24.55 : 22b0: 48 81 ec b8 00 00 00 sub $0xb8,%rsp 0.00 : 22e7: 4c 89 add %al,(%rax) 0.00 : 22e9: a4 24 mov %esi,%edx 0.00 : 22eb: 98 00 00 00 4c 89 ac mov %r15,0xb0(%rsp) 0.00 : 22f2: 24 0.00 : 22f3: a0 00 00 00 45 mov %rdi,0x20(%rsp) ??:0 0.91 : 22f8: 31 ed 89 54 24 1c 48 mov 0x88(%rcx),%rdi 1.82 : 22ff: 89 9c 24 test %rdi,%rdi 0.00 : 2302: 88 00 je 231f 0.00 : 2304: 00 00 49 89 mov 0x78(%rdi),%rax 0.00 : 2308: cc 48 89 mov %rdi,%r13 0.00 : 230b: ac 24 90 test $0x8,%ah 0.00 : 230e: 00 00 00 4c 89 b4 je 2440 0.00 : 2314: 24 a8 00 00 00 89 f2 movq $0x0,0x88(%rcx) 0.00 : 231b: 4c 89 bc 24 0.91 : 231f: b0 00 00 00 movzbl %dl,%r15d 0.00 : 2323: 48 89 7c 24 20 48 8b mov $0x0,%r14 0.00 : 232a: b9 88 00 00 00 cmp $0x26,%r15w 0.00 : 232f: 48 85 ff 74 1b 48 jbe 2410 0.00 : 2335: 8b 47 78 49 89 fd f6 mov 0xc4(%r12),%esi 0.00 : 233c: c4 0.00 : 233d: 08 0f 84 2c 01 lea 0x7f(%rsp),%rcx 0.00 : 2342: 00 00 48 c7 81 lea 0x74(%rsp),%rdx 0.00 : 2347: 88 00 00 00 00 00 00 add 0xd8(%r12),%rsi 0.00 : 234e: 00 0.91 : 234f: 44 0f b6 mov %r12,%rdi 0.00 : 2352: fa 49 c7 c6 00 00 00 sub 0xe0(%r12),%esi 0.00 : 2359: 00 0.91 : 235a: 66 41 83 ff callq *0x28(%r14) 1.82 : 235e: 26 0f test %eax,%eax 0.00 : 2360: 86 db mov %eax,%ebx 0.00 : 2362: 00 00 00 41 8b b4 jle 2468 0.00 : 2368: 24 c4 00 00 00 movzbl 0x7f(%rsp),%esi 0.91 : 236d: 48 8d 4c mov %r15d,%edi 0.00 : 2370: 24 7f 48 8d 54 callq 2375 0.00 : 2375: 24 74 49 03 b4 mov %rax,0x28(%rsp) 0.00 : 237a: 24 d8 00 00 mov 0x30(%rax),%rax ??:0 6.36 : 237e: 00 4c 89 test %rax,%rax 0.00 : 2381: e7 41 2b b4 24 e0 je 24b8 ??:0 1.82 : 2387: 00 00 00 41 mov 0x1c(%rsp),%edx 0.00 : 238b: ff 56 28 85 mov 0x74(%rsp),%ecx 0.00 : 238f: c0 89 c3 mov %r15d,%r9d 0.00 : 2392: 0f 8e 00 01 00 lea 0x78(%rsp),%r8 0.00 : 2397: 00 0f b6 mov %r13,%rsi 0.00 : 239a: 74 24 7f 44 89 mov 0x20(%rsp),%rdi 0.00 : 239f: ff e8 00 mov %edx,(%rsp) 0.00 : 23a2: 00 00 00 mov %r12,%rdx 0.91 : 23a5: 48 89 callq *%rax 0.00 : 23a7: 44 24 test %eax,%eax 0.00 : 23a9: 28 48 mov %eax,%ebp 0.00 : 23ab: 8b 40 30 48 85 c0 jle 2590 0.00 : 23b1: 0f 84 31 01 00 00 8b cmpq $0x0,0x88(%r12) 0.00 : 23b8: 54 24 0.00 : 23ba: 1c 8b mov %eax,%ebx 0.00 : 23bc: 4c 24 74 45 89 f9 je 24b8 0.00 : 23c2: 4c 8d 44 test %r13,%r13 0.00 : 23c5: 24 78 je 23d4 0.00 : 23c7: 4c 89 ee cmp $0x4,%ebp 0.00 : 23ca: 48 8b jne 2428 0.00 : 23cc: 7c 24 20 89 14 24 4c mov %r13,0x88(%r12) 0.00 : 23d3: 89 0.00 : 23d4: e2 ff mov %ebx,%eax 0.00 : 23d6: d0 85 c0 89 c5 0f 8e mov 0x90(%rsp),%rbp 0.00 : 23dd: df 0.00 : 23de: 01 00 00 49 83 bc 24 mov 0x88(%rsp),%rbx 0.00 : 23e5: 88 0.00 : 23e6: 00 00 00 00 89 c3 0f mov 0x98(%rsp),%r12 0.00 : 23ed: 84 0.91 : 23ee: f6 00 00 00 4d 85 ed mov 0xa0(%rsp),%r13 0.00 : 23f5: 74 0.00 : 23f6: 0d 83 fd 04 75 5c 4d mov 0xa8(%rsp),%r14 0.00 : 23fd: 89 0.00 : 23fe: ac 24 88 00 00 00 89 mov 0xb0(%rsp),%r15 0.00 : 2405: d8 0.00 : 2406: 48 8b ac 24 90 00 00 add $0xb8,%rsp 0.00 : 240d: 00 retq 0.00 : 240e: 48 8b xchg %ax,%ax 0.00 : 2410: 9c 24 88 00 movzwl %r15w,%eax 0.91 : 2414: 00 00 4c 8b a4 24 98 mov 0x0(,%rax,8),%r14 0.00 : 241b: 00 ??:0 10.00 : 241c: 00 00 4c 8b ac jmpq 2335 0.00 : 2421: 24 a0 00 00 00 4c 8b nopl 0x0(%rax) 0.00 : 2428: b4 24 a8 00 00 lock decl 0x0(%r13) 0.00 : 242d: 00 4c 8b sete %al 0.00 : 2430: bc 24 test %al,%al 0.00 : 2432: b0 00 je 23d4 0.00 : 2434: 00 00 48 mov %r13,%rdi 0.00 : 2437: 81 c4 b8 00 00 callq 243c 0.00 : 243c: 00 c3 jmp 23d4 0.00 : 243e: 66 90 xchg %ax,%ax 0.00 : 2440: 41 0f b7 c7 4c callq 2445 0.00 : 2445: 8b 34 c5 00 00 mov 0x20(%rsp),%rdx 0.00 : 244a: 00 00 e9 14 ff mov $0x1,%ebx 0.00 : 244f: ff ff 0f 1f 80 00 00 mov 0x730(%rdx),%rax 0.00 : 2456: 00 00 f0 41 incl %gs:0x10(%rax) 0.00 : 245a: ff 4d 00 0f 94 callq 245f 0.00 : 245f: c0 84 c0 74 a0 jmpq 23d4 0.00 : 2464: 4c 89 ef e8 nopl 0x0(%rax) 0.00 : 2468: 00 00 00 00 eb 96 66 cmpb $0x0,0x0(%rip) # 246f 0.00 : 246f: 90 e8 00 00 00 00 jne 28f7 0.00 : 2475: 48 8b 54 24 20 callq 247a 0.00 : 247a: bb 01 00 00 00 mov 0x20(%rsp),%rdx 0.00 : 247f: 48 8b mov %ebx,%ebp 0.00 : 2481: 82 30 neg %ebp 0.00 : 2483: 07 00 mov %ebp,%ebx 0.00 : 2485: 00 65 ff 40 10 e8 00 mov 0x730(%rdx),%rax 0.00 : 248c: 00 00 00 e9 incl %gs:0x2c(%rax) 0.00 : 2490: 70 ff ff ff 0f callq 2495 0.00 : 2495: 1f 40 00 80 3d callq 249a 0.00 : 249a: 00 00 00 00 00 mov 0x20(%rsp),%rdx 0.00 : 249f: 0f 85 82 04 00 00 e8 mov 0x730(%rdx),%rax 0.00 : 24a6: 00 00 00 00 incl %gs:0xc(%rax) 0.00 : 24aa: 48 8b 54 24 20 callq 24af 0.00 : 24af: 89 dd f7 dd 89 jmpq 23c2 0.00 : 24b4: eb 48 8b 82 nopl 0x0(%rax) ??:0 4.55 : 24b8: 30 07 00 00 mov 0x74(%rsp),%eax 0.91 : 24bc: 65 ff 40 test %r13,%r13 0.00 : 24bf: 2c e8 00 00 00 movzbl 0x7f(%rsp),%ecx 0.00 : 24c4: 00 e8 00 00 mov %eax,0x3c(%rsp) 0.00 : 24c8: 00 00 48 8b 54 24 je 2580 0.00 : 24ce: 20 48 8b 82 30 07 00 mov 0xe0(%r13),%rdx 0.00 : 24d5: 00 65 ff test %rdx,%rdx 0.00 : 24d8: 40 0c e8 00 00 00 je 2580 0.00 : 24de: 00 e9 0e ff movzbl 0x14(%rdx),%eax 0.00 : 24e2: ff ff test %al,%al 0.00 : 24e4: 0f 1f 40 00 8b 44 je 2580 0.00 : 24ea: 24 74 4d movzbl %al,%eax 0.00 : 24ed: 85 ed 0f add %rdx,%rax 0.00 : 24f0: b6 4c 24 7f 89 44 je 2580 0.00 : 24f6: 24 3c 0f movzwl (%rax),%ebx 1.82 : 24f9: 84 b2 00 00 00 mov 0x28(%rsp),%rdx 0.91 : 24fe: 49 8b 95 e0 00 00 00 mov 0xc4(%r12),%esi 0.00 : 2505: 48 1.82 : 2506: 85 d2 0f 84 a2 lea 0x40(%rsp),%rbp 0.00 : 250b: 00 00 00 0f b6 42 14 add 0xd8(%r12),%rsi 0.00 : 2512: 84 1.82 : 2513: c0 0f 84 96 movzbl %cl,%r8d 0.00 : 2517: 00 00 00 mov %r12,%rdi 0.00 : 251a: 0f b6 c0 48 01 d0 0f sub 0xe0(%r12),%esi 0.00 : 2521: 84 0.00 : 2522: 8a 00 00 mov %rbp,%r9 0.00 : 2525: 00 0f b7 mov %r15d,%ecx 0.00 : 2528: 18 48 8b 54 24 mov %rdx,0x8(%rsp) 0.00 : 252d: 28 41 8b b4 mov 0x3c(%rsp),%edx 0.91 : 2531: 24 c4 00 00 mov %r14,(%rsp) 0.91 : 2535: 00 48 8d 6c 24 callq 253a 1.82 : 253a: 40 49 test %al,%al 1.82 : 253c: 03 b4 24 d8 00 00 jne 25d0 0.00 : 2542: 00 44 0f b6 c1 4c 89 cmpb $0x0,0x0(%rip) # 2549 0.00 : 2549: e7 41 2b b4 24 e0 jne 2758 0.00 : 254f: 00 00 00 49 89 callq 2554 0.00 : 2554: e9 44 89 f9 48 mov 0x20(%rsp),%rdx 0.00 : 2559: 89 54 24 08 8b mov $0x1,%ebp 0.00 : 255e: 54 24 3c 4c 89 mov $0x1,%ebx 0.00 : 2563: 34 24 e8 00 00 00 00 mov 0x730(%rdx),%rax 0.00 : 256a: 84 c0 0f 85 incl %gs:0xc(%rax) 0.00 : 256e: 8e 00 00 00 80 callq 2573 0.00 : 2573: 3d 00 00 00 00 jmpq 23c2 0.00 : 2578: 00 0f 85 09 02 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 257f: e8 1.82 : 2580: 00 00 xor %ebx,%ebx 0.00 : 2582: 00 00 48 8b 54 jmpq 24f9 0.00 : 2587: 24 20 bd 01 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 258e: bb 01 0.00 : 2590: 00 00 00 48 8b callq 2595 0.00 : 2595: 82 30 07 00 00 mov 0x20(%rsp),%rbx 0.00 : 259a: 65 ff neg %ebp 0.00 : 259c: 40 0c e8 00 00 00 00 mov 0x730(%rbx),%rax 0.00 : 25a3: e9 4a fe ff incl %gs:0x2c(%rax) 0.00 : 25a7: ff 0f 1f 84 00 callq 25ac 0.00 : 25ac: 00 00 00 00 31 callq 25b1 0.00 : 25b1: db e9 72 ff ff ff 66 mov 0x730(%rbx),%rax 0.00 : 25b8: 0f 1f mov %ebp,%ebx 0.00 : 25ba: 84 00 00 00 incl %gs:0xc(%rax) 0.00 : 25be: 00 00 e8 00 00 callq 25c3 0.00 : 25c3: 00 00 48 8b 5c jmpq 23c2 0.00 : 25c8: 24 20 f7 dd 48 8b 83 nopl 0x0(%rax,%rax,1) 0.00 : 25cf: 30 4.55 : 25d0: 07 00 00 movzwl %bx,%ebx 0.91 : 25d3: 65 ff 40 mov %rbp,%rdi 0.00 : 25d6: 2c e8 mov %ebx,%esi 0.91 : 25d8: 00 00 00 00 e8 callq 0 0.00 : 25dd: 00 00 00 00 48 mov 0x20(%rsp),%rdi 0.00 : 25e2: 8b 83 mov %ebx,%esi 0.00 : 25e4: 30 07 mov %eax,%ecx 0.00 : 25e6: 00 00 89 mov %rbp,%rdx 0.00 : 25e9: eb 65 ff 40 mov %eax,0x38(%rsp) 0.00 : 25ed: 0c e8 00 00 00 callq 2120 0.00 : 25f2: 00 e9 fa test %rax,%rax 0.00 : 25f5: fd ff ff mov %rax,%rsi 0.00 : 25f8: 0f 1f 84 00 00 00 je 285b 0.00 : 25fe: 00 00 0f b7 movzbl 0x37(%rsi),%ecx 0.00 : 2602: db 48 89 mov %rsi,%r14 1.82 : 2605: ef 89 de movzbl %cl,%edx 0.00 : 2608: e8 23 da ff ff 48 8b lea 0x0(,%rdx,8),%rax 0.00 : 260f: 7c 0.00 : 2610: 24 20 89 sub %rdx,%rax 0.00 : 2613: de 89 c1 48 89 ea 89 lea 0x8(,%rax,8),%rax 0.00 : 261a: 44 0.91 : 261b: 24 38 e8 sub %rax,%r14 0.00 : 261e: 2e fb ff sub $0x1,%cl 0.00 : 2621: ff 48 je 26a0 0.00 : 2623: 85 c0 48 89 mov 0x78(%r14),%rax 0.00 : 2627: c6 0f test $0x2,%al 0.00 : 2629: 84 5d 02 00 00 0f je 2770 0.91 : 262f: b6 4e 37 49 89 f6 0f cmpb $0x0,0x0(%rip) # 2636 0.91 : 2636: b6 d1 48 8d 04 d5 jne 2822 0.00 : 263c: 00 00 00 00 48 29 d0 movl $0x0,0x78(%rsp) 0.00 : 2643: 48 0.00 : 2644: 8d 04 c5 08 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 264b: 49 0.91 : 264c: 29 c6 80 e9 01 74 movzbl 0x7c(%r12),%eax 0.00 : 2652: 7d 49 8b 46 mov 0x78(%rsp),%edx 0.00 : 2656: 78 a8 02 0f 84 41 01 mov %r14,0x88(%r12) 0.00 : 265d: 00 0.00 : 265e: 00 80 3d shl $0x5,%edx 0.00 : 2661: 00 00 00 and $0x1f,%eax 0.00 : 2664: 00 00 or %edx,%eax 0.91 : 2666: 0f 85 e6 01 00 mov %al,0x7c(%r12) 0.00 : 266b: 00 c7 44 test %r14,%r14 0.00 : 266e: 24 78 00 00 00 00 je 254f 0.00 : 2674: c7 44 24 34 00 00 00 cmp $0xfffffffffffff000,%r14 0.00 : 267b: 00 41 jbe 26b8 0.00 : 267d: 0f b6 44 24 7c callq 2682 0.00 : 2682: 8b 54 24 78 4d mov 0x20(%rsp),%rbx 0.00 : 2687: 89 b4 xor %ebp,%ebp 0.00 : 2689: 24 88 00 00 00 c1 e2 mov 0x730(%rbx),%rax 0.00 : 2690: 05 83 xor %ebx,%ebx 0.00 : 2692: e0 1f 09 d0 incl %gs:0x24(%rax) 0.00 : 2696: 41 88 44 24 7c callq 269b 0.00 : 269b: 4d 85 f6 0f 84 jmpq 23c2 0.91 : 26a0: db fe ff ff 49 81 fe movl $0x3,0x78(%rsp) 0.00 : 26a7: 00 1.82 : 26a8: f0 ff ff 76 3b e8 00 movl $0x1,0x34(%rsp) 0.00 : 26af: 00 1.82 : 26b0: 00 00 jmp 264c 0.00 : 26b2: 48 8b 5c 24 20 31 nopw 0x0(%rax,%rax,1) 0.00 : 26b8: ed 48 8b 83 30 mov 0x28(%rsp),%rbx 0.00 : 26bd: 07 00 00 31 mov 0x78(%rsp),%ecx 0.00 : 26c1: db 65 ff mov %r15d,%r8d 0.00 : 26c4: 40 24 e8 00 mov 0x74(%rsp),%edx 0.00 : 26c8: 00 00 00 e9 22 mov 0x1c(%rsp),%r9d 0.00 : 26cd: fd ff ff mov %r12,%rsi 0.00 : 26d0: c7 44 24 mov %r14,%rdi 0.00 : 26d3: 78 03 00 callq *0x18(%rbx) 0.00 : 26d6: 00 00 test %eax,%eax 0.91 : 26d8: c7 44 mov %eax,%ebp 0.00 : 26da: 24 34 01 00 00 00 jle 27a0 0.00 : 26e0: eb 9a mov %eax,%ebx 0.91 : 26e2: 66 0f 1f 44 mov 0x34(%rsp),%eax 0.00 : 26e6: 00 00 test %eax,%eax 0.00 : 26e8: 48 8b 5c 24 28 8b je 23c2 0.00 : 26ee: 4c 24 78 45 lea 0x78(%r14),%rax 0.00 : 26f2: 89 f8 8b 54 24 lock btsl $0x1,(%rax) ??:0 8.18 : 26f7: 74 44 sbb %edx,%edx 0.00 : 26f9: 8b 4c test %edx,%edx 0.00 : 26fb: 24 1c mov %ebp,%ebx 0.00 : 26fd: 4c 89 e6 4c 89 f7 jne 23c2 0.00 : 2703: ff 53 18 85 c0 89 c5 mov 0xe8(%r14),%rax 0.00 : 270a: 0f 8e mov %ebp,%ebx 0.00 : 270c: c0 00 00 00 89 c3 8b cmpq $0x0,0x738(%rax) 0.00 : 2713: 44 0.00 : 2714: 24 34 85 c0 0f 84 je 23c2 0.00 : 271a: d4 fc ff ff 49 8d 46 mov 0xe0(%r14),%rdx 0.00 : 2721: 78 f0 mov %ebp,%ebx 0.00 : 2723: 0f ba 28 test %rdx,%rdx 0.00 : 2726: 01 19 d2 85 d2 89 je 23c2 0.00 : 272c: eb 0f 85 bf movzbl 0x13(%rdx),%eax 0.00 : 2730: fc ff mov %ebp,%ebx 0.00 : 2732: ff 49 test %al,%al 0.00 : 2734: 8b 86 e8 00 00 00 je 23c2 0.00 : 273a: 89 eb 48 movzbl %al,%eax 0.00 : 273d: 83 b8 mov %ebp,%ebx 0.00 : 273f: 38 07 00 add %rdx,%rax 0.00 : 2742: 00 00 0f 84 a8 fc je 23c2 0.00 : 2748: ff ff 49 8b lock orb $0x8,(%rax) 0.00 : 274c: 96 e0 mov %ebp,%ebx 0.00 : 274e: 00 00 00 89 eb jmpq 23c2 0.00 : 2753: 48 85 d2 0f 84 nopl 0x0(%rax,%rax,1) 0.00 : 2758: 96 fc ff ff 0f b6 42 mov $0x0,%rsi 0.00 : 275f: 13 89 eb 84 c0 0f 84 mov $0x0,%rdi 0.00 : 2766: 88 fc ff ff 0f callq 276b 0.00 : 276b: b6 c0 89 eb 48 jmpq 254f 0.00 : 2770: 01 d0 0f 84 mov 0x78(%r14),%rax 0.00 : 2774: 7a fc test $0x1,%al 0.00 : 2776: ff ff f0 80 08 08 je 2800 0.00 : 277c: 89 eb e9 6f fc ff ff cmpb $0x0,0x0(%rip) # 2783 0.00 : 2783: 0f 1f 44 00 00 48 jne 28da 0.00 : 2789: c7 c6 00 00 00 00 48 movl $0x1,0x78(%rsp) 0.00 : 2790: c7 0.00 : 2791: c7 00 00 00 00 e8 00 movl $0x0,0x34(%rsp) 0.00 : 2798: 00 0.00 : 2799: 00 00 e9 df fd jmpq 264c 0.00 : 279e: ff ff xchg %ax,%ax 0.00 : 27a0: 49 8b 46 78 a8 01 0f cmpb $0x0,0x0(%rip) # 27a7 0.00 : 27a7: 84 84 00 00 00 80 jne 2911 0.00 : 27ad: 3d 00 00 00 00 00 0f mov 0x88(%r12),%rdi 0.00 : 27b4: 85 0.00 : 27b5: 51 01 00 test %rdi,%rdi 0.00 : 27b8: 00 c7 je 27c8 0.00 : 27ba: 44 24 78 lock decl (%rdi) 0.00 : 27bd: 01 00 00 sete %al 0.00 : 27c0: 00 c7 test %al,%al 0.00 : 27c2: 44 24 34 00 00 00 jne 28ad 0.00 : 27c8: 00 e9 ae fe ff ff 66 movq $0x0,0x88(%r12) 0.00 : 27cf: 90 80 3d 00 00 0.00 : 27d4: 00 00 00 0f 85 callq 27d9 0.00 : 27d9: 64 01 00 00 49 mov 0x20(%rsp),%rdx 0.00 : 27de: 8b bc 24 88 00 00 00 mov 0x730(%rdx),%rax 0.00 : 27e5: 48 85 ff 74 incl %gs:0xc(%rax) 0.00 : 27e9: 0e f0 ff 0f 0f callq 27ee 0.00 : 27ee: 94 c0 test %ebp,%ebp 0.00 : 27f0: 84 c0 je 283f 0.00 : 27f2: 0f 85 neg %ebp 0.00 : 27f4: e5 00 mov %ebp,%ebx 0.00 : 27f6: 00 00 49 c7 84 jmpq 23c2 0.00 : 27fb: 24 88 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2800: 00 00 00 00 e8 00 00 cmpb $0x0,0x0(%rip) # 2807 0.00 : 2807: 00 00 48 8b 54 24 jne 28bd 0.00 : 280d: 20 48 8b 82 30 07 00 movl $0x2,0x78(%rsp) 0.00 : 2814: 00 0.00 : 2815: 65 ff 40 0c e8 00 00 movl $0x0,0x34(%rsp) 0.00 : 281c: 00 0.00 : 281d: 00 85 ed 74 4d jmpq 264c 0.00 : 2822: f7 dd 89 mov %r14,%rdx 0.00 : 2825: eb e9 c7 fb ff ff 0f mov $0x0,%rsi 0.00 : 282c: 1f 44 00 00 80 3d 00 mov $0x0,%rdi 0.00 : 2833: 00 00 xor %eax,%eax 0.00 : 2835: 00 00 0f 85 b0 callq 283a 0.00 : 283a: 00 00 00 c7 44 jmpq 263c 0.00 : 283f: 24 78 02 00 00 callq 2844 0.00 : 2844: 00 c7 44 24 34 mov 0x20(%rsp),%rbx 0.00 : 2849: 00 00 00 00 e9 2a fe mov 0x730(%rbx),%rax 0.00 : 2850: ff ff 4c 89 incl %gs:0x24(%rax) 0.00 : 2854: f2 48 c7 c6 00 callq 2859 0.00 : 2859: 00 00 jmp 27f2 0.00 : 285b: 00 48 c7 c7 mov 0x38(%rsp),%ebx 0.00 : 285f: 00 00 00 00 mov 0x3c(%rsp),%eax 0.00 : 2863: 31 c0 e8 mov %r13,%rsi 0.00 : 2866: 00 00 00 00 e9 mov 0x28(%rsp),%r8 0.00 : 286b: fd fd ff ff e8 mov 0x20(%rsp),%rdi 0.00 : 2870: 00 00 00 mov %r12,%r9 0.00 : 2873: 00 48 8b mov %r14,%rcx 0.00 : 2876: 5c 24 20 mov %rbp,%rdx 0.00 : 2879: 48 8b 83 30 mov %ebx,0x8(%rsp) 0.00 : 287d: 07 00 00 mov %eax,(%rsp) 0.00 : 2880: 65 ff 40 24 e8 callq 1a90 0.00 : 2885: 00 00 00 test %rax,%rax 0.00 : 2888: 00 eb 97 mov %rax,%rsi 0.00 : 288b: 8b 5c 24 38 8b 44 je 254f 0.00 : 2891: 24 3c 4c 89 ee 4c cmp $0xfffffffffffff000,%rax 0.00 : 2897: 8b 44 24 mov %rax,%r14 0.00 : 289a: 28 48 8b 7c 24 20 4d movl $0x0,0x34(%rsp) 0.00 : 28a1: 89 0.00 : 28a2: e1 4c 89 f1 48 89 ja 266b 0.00 : 28a8: ea 89 5c 24 08 jmpq 25fe 0.00 : 28ad: 89 04 24 e8 0b callq 28b2 0.00 : 28b2: f2 ff ff 48 85 c0 nopw 0x0(%rax,%rax,1) 0.00 : 28b8: 48 89 c6 0f 84 jmpq 27c8 0.00 : 28bd: be fc ff mov %r14,%rdx 0.00 : 28c0: ff 48 3d 00 f0 ff ff mov $0x0,%rsi 0.00 : 28c7: 49 89 c6 c7 44 24 34 mov $0x0,%rdi 0.00 : 28ce: 00 00 xor %eax,%eax 0.00 : 28d0: 00 00 0f 87 c3 callq 28d5 0.00 : 28d5: fd ff ff e9 51 jmpq 280d 0.00 : 28da: fd ff ff mov %r14,%rdx 0.00 : 28dd: e8 00 00 00 00 66 0f mov $0x0,%rsi 0.00 : 28e4: 1f 44 00 00 e9 0b ff mov $0x0,%rdi 0.00 : 28eb: ff ff xor %eax,%eax 0.00 : 28ed: 4c 89 f2 48 c7 callq 28f2 0.00 : 28f2: c6 00 00 00 00 jmpq 2789 0.00 : 28f7: 48 c7 c7 00 00 00 00 mov $0x0,%rsi 0.00 : 28fe: 31 c0 e8 00 00 00 00 mov $0x0,%rdi 0.00 : 2905: e9 33 xor %eax,%eax 0.00 : 2907: ff ff ff 4c 89 callq 290c 0.00 : 290c: f2 48 c7 c6 00 jmpq 2475 0.00 : 2911: 00 00 00 48 c7 c7 00 mov $0x0,%rsi 0.00 : 2918: 00 00 00 31 c0 e8 00 mov $0x0,%rdi 0.00 : 291f: 00 00 xor %eax,%eax 0.00 : 2921: 00 e9 92 fe ff callq 2926 0.00 : 2926: ff 48 c7 c6 00 jmpq 27ad : 292b: 00 00 00 48 c7 nopl 0x0(%rax,%rax,1) : 2930: c7 00 00 00 sub $0x18,%rsp : 2934: 00 31 c0 e8 mov %rbx,(%rsp) : 2938: 00 00 00 movzwl %si,%ebx : 293b: 00 e9 64 fb ff mov %r12,0x8(%rsp) : 2940: ff 48 c7 c6 00 mov %r13,0x10(%rsp) : 2945: 00 00 00 mov %rdx,%r12 : 2948: 48 c7 c7 mov %rdi,%r13 : 294b: 00 00 mov %ebx,%esi : 294d: 00 00 31 mov %rdx,%rdi : 2950: c0 e8 00 00 00 callq 0 : 2955: 00 e9 82 mov %r12,%rdx : 2958: fe ff mov %ebx,%esi Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.34 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:383 13.21 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:381 10.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:386 7.55 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:385 6.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:381 6.60 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:385 4.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:383 2.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:381 2.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:386 0.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:386 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b5180 : : * : * Note we make no assumption about the caller's memory context. : */ : void : ReScanExprContext(ExprContext *econtext) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:381 13.21 : 5b5180: 55 push %rbp : /* Call any registered callbacks */ : ShutdownExprContext(econtext, true); /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:383 44.34 : 5b5181: be 01 00 00 00 mov $0x1,%esi : * : * Note we make no assumption about the caller's memory context. : */ : void : ReScanExprContext(ExprContext *econtext) : { 0.00 : 5b5186: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:381 2.83 : 5b5189: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:381 6.60 : 5b518a: 48 89 fb mov %rdi,%rbx 0.00 : 5b518d: 48 83 ec 08 sub $0x8,%rsp : /* Call any registered callbacks */ : ShutdownExprContext(econtext, true); /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:383 4.72 : 5b5191: e8 6a f8 ff ff callq 5b4a00 : /* And clean up the memory used */ : MemoryContextReset(econtext->ecxt_per_tuple_memory); /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:385 6.60 : 5b5196: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:386 10.38 : 5b519a: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:386 2.83 : 5b519e: 5b pop %rbx 0.94 : 5b519f: c9 leaveq : ReScanExprContext(ExprContext *econtext) : { : /* Call any registered callbacks */ : ShutdownExprContext(econtext, true); : /* And clean up the memory used */ : MemoryContextReset(econtext->ecxt_per_tuple_memory); /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:385 7.55 : 5b51a0: e9 0b 38 1e 00 jmpq 7989b0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2696 13.89 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2696 12.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2692 9.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2699 4.17 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 2.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2692 2.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2713 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2692 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2693 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2705 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2705 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2712 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2713 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2713 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005aca40 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalNot(BoolExprState *notclause, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2692 12.50 : 5aca40: 55 push %rbp : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/nodes/pg_list.h:87 4.17 : 5aca41: 31 c0 xor %eax,%eax 0.00 : 5aca43: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2692 2.78 : 5aca46: 53 push %rbx 1.39 : 5aca47: 48 89 d3 mov %rdx,%rbx 0.00 : 5aca4a: 48 83 ec 08 sub $0x8,%rsp : ExprState *clause = linitial(notclause->args); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2693 1.39 : 5aca4e: 48 8b 57 18 mov 0x18(%rdi),%rdx 0.00 : 5aca52: 48 85 d2 test %rdx,%rdx 0.00 : 5aca55: 74 04 je 5aca5b 0.00 : 5aca57: 48 8b 42 08 mov 0x8(%rdx),%rax : Datum expr_value; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2696 13.89 : 5aca5b: 48 85 c9 test %rcx,%rcx : */ : static Datum : ExecEvalNot(BoolExprState *notclause, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { : ExprState *clause = linitial(notclause->args); 0.00 : 5aca5e: 48 8b 00 mov (%rax),%rax : Datum expr_value; : : if (isDone) 44.44 : 5aca61: 74 06 je 5aca69 : *isDone = ExprSingleResult; 0.00 : 5aca63: c7 01 00 00 00 00 movl $0x0,(%rcx) : : expr_value = ExecEvalExpr(clause, econtext, isNull, NULL); 0.00 : 5aca69: 31 c9 xor %ecx,%ecx 0.00 : 5aca6b: 48 89 da mov %rbx,%rdx 0.00 : 5aca6e: 48 89 c7 mov %rax,%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2699 9.72 : 5aca71: ff 50 10 callq *0x10(%rax) : : /* : * if the expression evaluates to null, then we just cascade the null back : * to whoever called us. : */ : if (*isNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2705 1.39 : 5aca74: 80 3b 00 cmpb $0x0,(%rbx) 1.39 : 5aca77: 75 08 jne 5aca81 : : /* : * evaluation of 'not' is simple.. expr is false, then return 'true' and : * vice versa. : */ : return BoolGetDatum(!DatumGetBool(expr_value)); 0.00 : 5aca79: 84 c0 test %al,%al /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2712 1.39 : 5aca7b: 0f 94 c0 sete %al 0.00 : 5aca7e: 0f b6 c0 movzbl %al,%eax : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2713 1.39 : 5aca81: 48 83 c4 08 add $0x8,%rsp 2.78 : 5aca85: 5b pop %rbx 1.39 : 5aca86: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 18.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1339 10.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 10.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 9.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1343 8.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 6.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1341 5.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 5.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1346 4.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1339 4.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1344 2.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1339 2.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1341 2.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1348 2.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1346 1.35 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 1.35 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1336 1.35 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 1.35 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1346 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674bd0 : : * to save a spin lock/unlock cycle, because we need to pin a buffer before : * its state can change under us. : */ : static void : PinBuffer_Locked(volatile BufferDesc *buf) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 8.11 : 674bd0: 55 push %rbp : int b = buf->buf_id; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1339 18.92 : 674bd1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 674bd6: be 01 00 00 00 mov $0x1,%esi : * to save a spin lock/unlock cycle, because we need to pin a buffer before : * its state can change under us. : */ : static void : PinBuffer_Locked(volatile BufferDesc *buf) : { 0.00 : 674bdb: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 5.41 : 674bde: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 1.35 : 674bdf: 48 89 fb mov %rdi,%rbx 0.00 : 674be2: 48 83 ec 08 sub $0x8,%rsp : int b = buf->buf_id; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1336 1.35 : 674be6: 8b 7f 24 mov 0x24(%rdi),%edi : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1339 4.05 : 674be9: 83 c7 01 add $0x1,%edi 0.00 : 674bec: e8 2f f9 ff ff callq 674520 : : if (ref->refcount == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1341 6.76 : 674bf1: 8b 48 04 mov 0x4(%rax),%ecx : PinBuffer_Locked(volatile BufferDesc *buf) : { : int b = buf->buf_id; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1339 2.70 : 674bf4: 48 89 c2 mov %rax,%rdx : : if (ref->refcount == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1341 2.70 : 674bf7: 85 c9 test %ecx,%ecx 0.00 : 674bf9: 75 09 jne 674c04 : buf->refcount++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 1.35 : 674bfb: 8b 43 18 mov 0x18(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 10.81 : 674bfe: 83 c0 01 add $0x1,%eax 10.81 : 674c01: 89 43 18 mov %eax,0x18(%rbx) : UnlockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1343 9.46 : 674c04: c6 43 20 00 movb $0x0,0x20(%rbx) : ref->refcount++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1344 4.05 : 674c08: 83 42 04 01 addl $0x1,0x4(%rdx) : Assert(ref->refcount > 0); : ResourceOwnerRememberBuffer(CurrentResourceOwner, /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1346 5.41 : 674c0c: 8b 73 24 mov 0x24(%rbx),%esi 0.00 : 674c0f: 48 8b 3d aa 5c 54 00 mov 0x545caa(%rip),%rdi # bba8c0 : BufferDescriptorGetBuffer(buf)); : } 0.00 : 674c16: 48 83 c4 08 add $0x8,%rsp 0.00 : 674c1a: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1348 2.70 : 674c1b: c9 leaveq : if (ref->refcount == 0) : buf->refcount++; : UnlockBufHdr(buf); : ref->refcount++; : Assert(ref->refcount > 0); : ResourceOwnerRememberBuffer(CurrentResourceOwner, /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1346 2.70 : 674c1c: 83 c6 01 add $0x1,%esi 1.35 : 674c1f: e9 7c 55 12 00 jmpq 79a1a0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:105 16.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:105 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:105 5.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:103 4.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:40 4.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:53 4.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:142 2.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:40 2.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:61 2.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:137 2.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:108 1.92 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:108 0.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:138 0.96 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:142 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c6340 : : * -- the outer child is prepared to return the first tuple. : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecSort(SortState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:40 2.88 : 5c6340: 55 push %rbp 0.00 : 5c6341: 48 89 e5 mov %rsp,%rbp 0.00 : 5c6344: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5c6348: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 5c634c: 49 89 fc mov %rdi,%r12 0.00 : 5c634f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5c6353: 4c 89 75 f0 mov %r14,-0x10(%rbp) 4.81 : 5c6357: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5c635b: 48 83 ec 40 sub $0x40,%rsp : * get state info from node : */ : SO1_printf("ExecSort: %s\n", : "entering routine"); : : estate = node->ss.ps.state; 0.00 : 5c635f: 4c 8b 7f 10 mov 0x10(%rdi),%r15 : /* : * If first time through, read all tuples from outer plan and pass them to : * tuplesort.c. Subsequent calls just fetch tuples from tuplesort. : */ : : if (!node->sort_Done) 0.00 : 5c6363: 41 80 bc 24 a0 00 00 cmpb $0x0,0xa0(%r12) 0.00 : 5c636a: 00 00 : */ : SO1_printf("ExecSort: %s\n", : "entering routine"); : : estate = node->ss.ps.state; : dir = estate->es_direction; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:53 4.81 : 5c636c: 41 8b 47 04 mov 0x4(%r15),%eax 0.00 : 5c6370: 89 45 d4 mov %eax,-0x2c(%rbp) : tuplesortstate = (Tuplesortstate *) node->tuplesortstate; 0.00 : 5c6373: 48 8b bf b0 00 00 00 mov 0xb0(%rdi),%rdi 0.00 : 5c637a: 49 89 fd mov %rdi,%r13 : /* : * If first time through, read all tuples from outer plan and pass them to : * tuplesort.c. Subsequent calls just fetch tuples from tuplesort. : */ : : if (!node->sort_Done) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:61 2.88 : 5c637d: 74 39 je 5c63b8 : /* : * Get the first or next tuple from tuplesort. Returns NULL if no more : * tuples. : */ : slot = node->ss.ps.ps_ResultTupleSlot; : (void) tuplesort_gettupleslot(tuplesortstate, 0.00 : 5c637f: 31 f6 xor %esi,%esi 0.00 : 5c6381: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) : : /* : * Get the first or next tuple from tuplesort. Returns NULL if no more : * tuples. : */ : slot = node->ss.ps.ps_ResultTupleSlot; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:137 2.88 : 5c6385: 49 8b 5c 24 58 mov 0x58(%r12),%rbx : (void) tuplesort_gettupleslot(tuplesortstate, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:138 0.96 : 5c638a: 4c 89 ef mov %r13,%rdi 0.00 : 5c638d: 48 89 da mov %rbx,%rdx 0.00 : 5c6390: 40 0f 94 c6 sete %sil 0.00 : 5c6394: e8 f7 7e 1d 00 callq 79e290 : ScanDirectionIsForward(dir), : slot); : return slot; : } 0.00 : 5c6399: 48 89 d8 mov %rbx,%rax 0.00 : 5c639c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:142 4.81 : 5c63a0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5c63a4: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5c63a8: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5c63ac: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.96 : 5c63b0: c9 leaveq 0.00 : 5c63b1: c3 retq 0.00 : 5c63b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * tuplesort.c. Subsequent calls just fetch tuples from tuplesort. : */ : : if (!node->sort_Done) : { : Sort *plannode = (Sort *) node->ss.ps.plan; 0.00 : 5c63b8: 49 8b 5c 24 08 mov 0x8(%r12),%rbx : : /* : * Want to scan subplan in the forward direction while creating the : * sorted data. : */ : estate->es_direction = ForwardScanDirection; 0.00 : 5c63bd: 41 c7 47 04 01 00 00 movl $0x1,0x4(%r15) 0.00 : 5c63c4: 00 : * Initialize tuplesort module. : */ : SO1_printf("ExecSort: %s\n", : "calling tuplesort_begin"); : : outerNode = outerPlanState(node); 0.00 : 5c63c5: 4d 8b 74 24 30 mov 0x30(%r12),%r14 : tupDesc = ExecGetResultType(outerNode); 0.00 : 5c63ca: 4c 89 f7 mov %r14,%rdi 0.00 : 5c63cd: e8 3e e5 fe ff callq 5b4910 0.00 : 5c63d2: 48 89 c7 mov %rax,%rdi : : tuplesortstate = tuplesort_begin_heap(tupDesc, 0.00 : 5c63d5: 41 0f be 84 24 90 00 movsbl 0x90(%r12),%eax 0.00 : 5c63dc: 00 00 0.00 : 5c63de: 4c 8b 8b 80 00 00 00 mov 0x80(%rbx),%r9 0.00 : 5c63e5: 4c 8b 43 78 mov 0x78(%rbx),%r8 0.00 : 5c63e9: 48 8b 4b 70 mov 0x70(%rbx),%rcx 0.00 : 5c63ed: 48 8b 53 68 mov 0x68(%rbx),%rdx 0.00 : 5c63f1: 8b 73 60 mov 0x60(%rbx),%esi 0.00 : 5c63f4: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 5c63f8: 8b 05 1a 27 5a 00 mov 0x5a271a(%rip),%eax # b68b18 0.00 : 5c63fe: 89 04 24 mov %eax,(%rsp) 0.00 : 5c6401: e8 ea 92 1d 00 callq 79f6f0 : plannode->sortOperators, : plannode->collations, : plannode->nullsFirst, : work_mem, : node->randomAccess); : if (node->bounded) 0.00 : 5c6406: 41 80 bc 24 91 00 00 cmpb $0x0,0x91(%r12) 0.00 : 5c640d: 00 00 : "calling tuplesort_begin"); : : outerNode = outerPlanState(node); : tupDesc = ExecGetResultType(outerNode); : : tuplesortstate = tuplesort_begin_heap(tupDesc, 0.00 : 5c640f: 49 89 c5 mov %rax,%r13 : plannode->sortOperators, : plannode->collations, : plannode->nullsFirst, : work_mem, : node->randomAccess); : if (node->bounded) 0.00 : 5c6412: 75 6c jne 5c6480 : tuplesort_set_bound(tuplesortstate, node->bound); : node->tuplesortstate = (void *) tuplesortstate; 0.00 : 5c6414: 4d 89 ac 24 b0 00 00 mov %r13,0xb0(%r12) 0.00 : 5c641b: 00 0.00 : 5c641c: eb 13 jmp 5c6431 0.00 : 5c641e: 66 90 xchg %ax,%ax : : for (;;) : { : slot = ExecProcNode(outerNode); : : if (TupIsNull(slot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:105 16.35 : 5c6420: 80 78 04 00 cmpb $0x0,0x4(%rax) 7.69 : 5c6424: 75 18 jne 5c643e : break; : : tuplesort_puttupleslot(tuplesortstate, slot); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:108 1.92 : 5c6426: 48 89 c6 mov %rax,%rsi 0.00 : 5c6429: 4c 89 ef mov %r13,%rdi 2.88 : 5c642c: e8 ff 8b 1d 00 callq 79f030 : * Scan the subplan and feed all the tuples to tuplesort. : */ : : for (;;) : { : slot = ExecProcNode(outerNode); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:103 5.77 : 5c6431: 4c 89 f7 mov %r14,%rdi 0.00 : 5c6434: e8 67 60 fe ff callq 5ac4a0 : : if (TupIsNull(slot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSort.c:105 40.38 : 5c6439: 48 85 c0 test %rax,%rax 0.00 : 5c643c: 75 e2 jne 5c6420 : } : : /* : * Complete the sort. : */ : tuplesort_performsort(tuplesortstate); 0.00 : 5c643e: 4c 89 ef mov %r13,%rdi 0.00 : 5c6441: e8 aa bb 1d 00 callq 7a1ff0 : : /* : * restore to user specified direction : */ : estate->es_direction = dir; 0.00 : 5c6446: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 5c6449: 41 89 47 04 mov %eax,0x4(%r15) : : /* : * finally set the sorted flag to true : */ : node->sort_Done = true; : node->bounded_Done = node->bounded; 0.00 : 5c644d: 41 0f b6 84 24 91 00 movzbl 0x91(%r12),%eax 0.00 : 5c6454: 00 00 : estate->es_direction = dir; : : /* : * finally set the sorted flag to true : */ : node->sort_Done = true; 0.00 : 5c6456: 41 c6 84 24 a0 00 00 movb $0x1,0xa0(%r12) 0.00 : 5c645d: 00 01 : node->bounded_Done = node->bounded; 0.00 : 5c645f: 41 88 84 24 a1 00 00 mov %al,0xa1(%r12) 0.00 : 5c6466: 00 : node->bound_Done = node->bound; 0.00 : 5c6467: 49 8b 84 24 98 00 00 mov 0x98(%r12),%rax 0.00 : 5c646e: 00 0.00 : 5c646f: 49 89 84 24 a8 00 00 mov %rax,0xa8(%r12) 0.00 : 5c6476: 00 0.00 : 5c6477: e9 03 ff ff ff jmpq 5c637f 0.00 : 5c647c: 0f 1f 40 00 nopl 0x0(%rax) : plannode->collations, : plannode->nullsFirst, : work_mem, : node->randomAccess); : if (node->bounded) : tuplesort_set_bound(tuplesortstate, node->bound); 0.00 : 5c6480: 49 8b b4 24 98 00 00 mov 0x98(%r12),%rsi 0.00 : 5c6487: 00 0.00 : 5c6488: 48 89 c7 mov %rax,%rdi 0.00 : 5c648b: e8 40 66 1d 00 callq 79cad0 0.00 : 5c6490: eb 82 jmp 5c6414 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:767 22.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:767 15.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:769 7.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:769 4.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:768 3.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:767 3.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:773 3.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:775 3.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:776 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:773 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:775 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:768 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:772 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:772 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:776 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7bb0 : : PG_RETURN_FLOAT4(result); : } : : Datum : float4mul(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:767 22.34 : 6d7bb0: 55 push %rbp 28.72 : 6d7bb1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d7bb4: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:767 3.19 : 6d7bb5: 48 89 fb mov %rdi,%rbx 0.00 : 6d7bb8: 48 83 ec 18 sub $0x18,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d7bbc: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:768 4.26 : 6d7bc0: e8 eb 5d 0a 00 callq 77d9b0 1.06 : 6d7bc5: f3 0f 11 45 ec movss %xmm0,-0x14(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d7bca: 48 8b 7b 28 mov 0x28(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:769 15.96 : 6d7bce: e8 dd 5d 0a 00 callq 77d9b0 : float4 result; : : result = arg1 * arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:772 1.06 : 6d7bd3: f3 0f 10 4d ec movss -0x14(%rbp),%xmm1 1.06 : 6d7bd8: f3 0f 59 c8 mulss %xmm0,%xmm1 : : Datum : float4mul(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:769 7.45 : 6d7bdc: f3 0f 11 45 f0 movss %xmm0,-0x10(%rbp) : float4 result; : : result = arg1 * arg2; 0.00 : 6d7be1: f3 0f 11 4d f4 movss %xmm1,-0xc(%rbp) : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:773 3.19 : 6d7be6: 0f 28 c1 movaps %xmm1,%xmm0 0.00 : 6d7be9: e8 42 1b d9 ff callq 469730 <__isinff@plt> 0.00 : 6d7bee: 85 c0 test %eax,%eax 0.00 : 6d7bf0: 75 46 jne 6d7c38 2.13 : 6d7bf2: 0f 57 c0 xorps %xmm0,%xmm0 0.00 : 6d7bf5: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1 0.00 : 6d7bfa: 0f 2e c8 ucomiss %xmm0,%xmm1 0.00 : 6d7bfd: 75 23 jne 6d7c22 0.00 : 6d7bff: 90 nop 0.00 : 6d7c00: 7a 20 jp 6d7c22 0.00 : 6d7c02: f3 0f 10 4d ec movss -0x14(%rbp),%xmm1 0.00 : 6d7c07: 0f 2e c8 ucomiss %xmm0,%xmm1 0.00 : 6d7c0a: 7a 06 jp 6d7c12 0.00 : 6d7c0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6d7c10: 74 10 je 6d7c22 0.00 : 6d7c12: f3 0f 10 4d f0 movss -0x10(%rbp),%xmm1 0.00 : 6d7c17: 0f 2e c8 ucomiss %xmm0,%xmm1 0.00 : 6d7c1a: 7a 7d jp 6d7c99 0.00 : 6d7c1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6d7c20: 75 77 jne 6d7c99 : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT4(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:775 3.19 : 6d7c22: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:776 3.19 : 6d7c27: 48 83 c4 18 add $0x18,%rsp 1.06 : 6d7c2b: 5b pop %rbx 0.00 : 6d7c2c: c9 leaveq : float4 result; : : result = arg1 * arg2; : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT4(result); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:775 2.13 : 6d7c2d: e9 6e 5d 0a 00 jmpq 77d9a0 0.00 : 6d7c32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : float4 arg1 = PG_GETARG_FLOAT4(0); : float4 arg2 = PG_GETARG_FLOAT4(1); : float4 result; : : result = arg1 * arg2; : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), 0.00 : 6d7c38: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0 0.00 : 6d7c3d: e8 ee 1a d9 ff callq 469730 <__isinff@plt> 0.00 : 6d7c42: 85 c0 test %eax,%eax 0.00 : 6d7c44: 75 ac jne 6d7bf2 0.00 : 6d7c46: f3 0f 10 45 f0 movss -0x10(%rbp),%xmm0 0.00 : 6d7c4b: e8 e0 1a d9 ff callq 469730 <__isinff@plt> 0.00 : 6d7c50: 85 c0 test %eax,%eax 0.00 : 6d7c52: 75 9e jne 6d7bf2 0.00 : 6d7c54: 45 31 c0 xor %r8d,%r8d 0.00 : 6d7c57: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d7c5c: b9 44 bb 8b 00 mov $0x8bbb44,%ecx 0.00 : 6d7c61: ba 06 03 00 00 mov $0x306,%edx 0.00 : 6d7c66: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d7c6b: e8 50 2e 0a 00 callq 77aac0 0.00 : 6d7c70: 84 c0 test %al,%al 0.00 : 6d7c72: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d7c77: 74 40 je 6d7cb9 0.00 : 6d7c79: 31 c0 xor %eax,%eax 0.00 : 6d7c7b: e8 20 4c 0a 00 callq 77c8a0 0.00 : 6d7c80: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d7c85: 89 c3 mov %eax,%ebx 0.00 : 6d7c87: e8 c4 50 0a 00 callq 77cd50 0.00 : 6d7c8c: 89 de mov %ebx,%esi 0.00 : 6d7c8e: 89 c7 mov %eax,%edi 0.00 : 6d7c90: 31 c0 xor %eax,%eax 0.00 : 6d7c92: e8 49 29 0a 00 callq 77a5e0 0.00 : 6d7c97: eb 20 jmp 6d7cb9 0.00 : 6d7c99: 45 31 c0 xor %r8d,%r8d 0.00 : 6d7c9c: b9 44 bb 8b 00 mov $0x8bbb44,%ecx 0.00 : 6d7ca1: ba 06 03 00 00 mov $0x306,%edx 0.00 : 6d7ca6: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d7cab: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d7cb0: e8 0b 2e 0a 00 callq 77aac0 0.00 : 6d7cb5: 84 c0 test %al,%al 0.00 : 6d7cb7: 75 05 jne 6d7cbe 0.00 : 6d7cb9: e8 12 18 d9 ff callq 4694d0 0.00 : 6d7cbe: bf 4c b4 8b 00 mov $0x8bb44c,%edi 0.00 : 6d7cc3: eb b4 jmp 6d7c79 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 23.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 5.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 5.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 3.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 2.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1424 2.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1431 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 1.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1424 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1431 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079db40 : : * If *should_free is set, the caller must pfree stup.tuple when done with it. : */ : static bool : tuplesort_gettuple_common(Tuplesortstate *state, bool forward, : SortTuple *stup, bool *should_free) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 0.83 : 79db40: 55 push %rbp 0.00 : 79db41: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 5.79 : 79db44: 48 89 5d d8 mov %rbx,-0x28(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.65 : 79db48: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 79db4c: 48 89 fb mov %rdi,%rbx 0.00 : 79db4f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 1.65 : 79db53: 4c 89 75 f0 mov %r14,-0x10(%rbp) 1.65 : 79db57: 49 89 d4 mov %rdx,%r12 0.00 : 79db5a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 1.65 : 79db5e: 48 83 ec 30 sub $0x30,%rsp : unsigned int tuplen; : : switch (state->status) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1424 2.48 : 79db62: 8b 07 mov (%rdi),%eax 0.83 : 79db64: 83 f8 04 cmp $0x4,%eax 0.00 : 79db67: 0f 84 93 01 00 00 je 79dd00 0.00 : 79db6d: 83 f8 05 cmp $0x5,%eax 0.00 : 79db70: 0f 84 9a 00 00 00 je 79dc10 0.00 : 79db76: 83 f8 03 cmp $0x3,%eax 0.00 : 79db79: 74 2d je 79dba8 : return true; : } : return false; : : default: : elog(ERROR, "invalid tuplesort state"); 0.00 : 79db7b: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79db80: be 49 06 00 00 mov $0x649,%esi 0.00 : 79db85: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79db8a: e8 91 d8 fd ff callq 77b420 0.00 : 79db8f: be f0 29 8e 00 mov $0x8e29f0,%esi 0.00 : 79db94: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79db99: 31 c0 xor %eax,%eax 0.00 : 79db9b: e8 90 d6 fd ff callq 77b230 0.00 : 79dba0: e8 2b b9 cc ff callq 4694d0 0.00 : 79dba5: 0f 1f 00 nopl (%rax) : switch (state->status) : { : case TSS_SORTEDINMEM: : Assert(forward || state->randomAccess); : *should_free = false; : if (forward) 0.00 : 79dba8: 40 84 f6 test %sil,%sil : : switch (state->status) : { : case TSS_SORTEDINMEM: : Assert(forward || state->randomAccess); : *should_free = false; 0.00 : 79dbab: c6 01 00 movb $0x0,(%rcx) : if (forward) 0.00 : 79dbae: 0f 84 84 01 00 00 je 79dd38 : { : if (state->current < state->memtupcount) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1431 0.83 : 79dbb4: 8b b7 d8 00 00 00 mov 0xd8(%rdi),%esi 2.48 : 79dbba: 3b 77 68 cmp 0x68(%rdi),%esi 0.00 : 79dbbd: 0f 8c dd 02 00 00 jl 79dea0 : /* : * Complain if caller tries to retrieve more tuples than : * originally asked for in a bounded sort. This is because : * returning EOF here might be the wrong thing. : */ : if (state->bounded && state->current >= state->bound) 0.00 : 79dbc3: 80 7f 09 00 cmpb $0x0,0x9(%rdi) : if (state->current < state->memtupcount) : { : *stup = state->memtuples[state->current++]; : return true; : } : state->eof_reached = true; 0.00 : 79dbc7: c6 87 dc 00 00 00 01 movb $0x1,0xdc(%rdi) : /* : * Complain if caller tries to retrieve more tuples than : * originally asked for in a bounded sort. This is because : * returning EOF here might be the wrong thing. : */ : if (state->bounded && state->current >= state->bound) 0.00 : 79dbce: 0f 84 45 01 00 00 je 79dd19 0.00 : 79dbd4: 3b 77 0c cmp 0xc(%rdi),%esi 0.00 : 79dbd7: 0f 8c 3c 01 00 00 jl 79dd19 : elog(ERROR, "retrieved too many tuples in a bounded sort"); 0.00 : 79dbdd: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79dbe2: be a4 05 00 00 mov $0x5a4,%esi 0.00 : 79dbe7: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79dbec: e8 2f d8 fd ff callq 77b420 0.00 : 79dbf1: be d0 2a 8e 00 mov $0x8e2ad0,%esi 0.00 : 79dbf6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79dbfb: 31 c0 xor %eax,%eax 0.00 : 79dbfd: e8 2e d6 fd ff callq 77b230 0.00 : 79dc02: e8 c9 b8 cc ff callq 4694d0 0.00 : 79dc07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79dc0e: 00 00 : READTUP(state, stup, state->result_tape, tuplen); : return true; : : case TSS_FINALMERGE: : Assert(forward); : *should_free = true; 0.00 : 79dc10: c6 01 01 movb $0x1,(%rcx) : : /* : * This code should match the inner loop of mergeonerun(). : */ : if (state->memtupcount > 0) 0.00 : 79dc13: 44 8b 4f 68 mov 0x68(%rdi),%r9d 0.00 : 79dc17: 45 85 c9 test %r9d,%r9d 0.00 : 79dc1a: 0f 8e f9 00 00 00 jle 79dd19 : { : int srcTape = state->memtuples[0].tupindex; 0.00 : 79dc20: 48 8b 47 60 mov 0x60(%rdi),%rax : Size tuplen; : int tupIndex; : SortTuple *newtup; : : *stup = state->memtuples[0]; 0.00 : 79dc24: 48 8b 38 mov (%rax),%rdi : /* : * This code should match the inner loop of mergeonerun(). : */ : if (state->memtupcount > 0) : { : int srcTape = state->memtuples[0].tupindex; 0.00 : 79dc27: 44 8b 78 14 mov 0x14(%rax),%r15d : Size tuplen; : int tupIndex; : SortTuple *newtup; : : *stup = state->memtuples[0]; 0.00 : 79dc2b: 49 89 3c 24 mov %rdi,(%r12) 0.00 : 79dc2f: 48 8b 50 08 mov 0x8(%rax),%rdx : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) 0.00 : 79dc33: 48 85 ff test %rdi,%rdi : int srcTape = state->memtuples[0].tupindex; : Size tuplen; : int tupIndex; : SortTuple *newtup; : : *stup = state->memtuples[0]; 0.00 : 79dc36: 49 89 54 24 08 mov %rdx,0x8(%r12) 0.00 : 79dc3b: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 79dc3f: 49 89 44 24 10 mov %rax,0x10(%r12) : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) 0.00 : 79dc44: 4d 63 e7 movslq %r15d,%r12 0.00 : 79dc47: 74 1e je 79dc67 : { : tuplen = GetMemoryChunkSpace(stup->tuple); : state->availMem += tuplen; : state->mergeavailmem[srcTape] += tuplen; 0.00 : 79dc49: 4d 63 e7 movslq %r15d,%r12 : : *stup = state->memtuples[0]; : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) : { : tuplen = GetMemoryChunkSpace(stup->tuple); 0.00 : 79dc4c: e8 3f ae ff ff callq 798a90 : state->availMem += tuplen; : state->mergeavailmem[srcTape] += tuplen; 0.00 : 79dc51: 4a 8d 14 e5 00 00 00 lea 0x0(,%r12,8),%rdx 0.00 : 79dc58: 00 0.00 : 79dc59: 48 03 93 98 00 00 00 add 0x98(%rbx),%rdx : *stup = state->memtuples[0]; : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) : { : tuplen = GetMemoryChunkSpace(stup->tuple); : state->availMem += tuplen; 0.00 : 79dc60: 48 01 43 10 add %rax,0x10(%rbx) : state->mergeavailmem[srcTape] += tuplen; 0.00 : 79dc64: 48 01 02 add %rax,(%rdx) : } : tuplesort_heap_siftup(state, false); : if ((tupIndex = state->mergenext[srcTape]) == 0) 0.00 : 79dc67: 4e 8d 2c a5 00 00 00 lea 0x0(,%r12,4),%r13 0.00 : 79dc6e: 00 : { : tuplen = GetMemoryChunkSpace(stup->tuple); : state->availMem += tuplen; : state->mergeavailmem[srcTape] += tuplen; : } : tuplesort_heap_siftup(state, false); 0.00 : 79dc6f: 31 f6 xor %esi,%esi 0.00 : 79dc71: 48 89 df mov %rbx,%rdi 0.00 : 79dc74: e8 67 f3 ff ff callq 79cfe0 : if ((tupIndex = state->mergenext[srcTape]) == 0) 0.00 : 79dc79: 4c 89 ea mov %r13,%rdx 0.00 : 79dc7c: 48 03 93 80 00 00 00 add 0x80(%rbx),%rdx 0.00 : 79dc83: 44 8b 32 mov (%rdx),%r14d 0.00 : 79dc86: 45 85 f6 test %r14d,%r14d 0.00 : 79dc89: 0f 84 59 02 00 00 je 79dee8 : */ : if ((tupIndex = state->mergenext[srcTape]) == 0) : return true; : } : /* pull next preread tuple from list, insert in heap */ : newtup = &state->memtuples[tupIndex]; 0.00 : 79dc8f: 49 63 c6 movslq %r14d,%rax 0.00 : 79dc92: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79dc96: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : 79dc9d: 00 0.00 : 79dc9e: 4c 03 63 60 add 0x60(%rbx),%r12 : state->mergenext[srcTape] = newtup->tupindex; 0.00 : 79dca2: 41 8b 44 24 14 mov 0x14(%r12),%eax 0.00 : 79dca7: 89 02 mov %eax,(%rdx) : if (state->mergenext[srcTape] == 0) 0.00 : 79dca9: 48 8b 83 80 00 00 00 mov 0x80(%rbx),%rax 0.00 : 79dcb0: 46 8b 04 28 mov (%rax,%r13,1),%r8d 0.00 : 79dcb4: 45 85 c0 test %r8d,%r8d 0.00 : 79dcb7: 75 0f jne 79dcc8 : state->mergelast[srcTape] = 0; 0.00 : 79dcb9: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 79dcc0: 42 c7 04 28 00 00 00 movl $0x0,(%rax,%r13,1) 0.00 : 79dcc7: 00 : tuplesort_heap_insert(state, newtup, srcTape, false); 0.00 : 79dcc8: 31 c9 xor %ecx,%ecx 0.00 : 79dcca: 44 89 fa mov %r15d,%edx 0.00 : 79dccd: 4c 89 e6 mov %r12,%rsi 0.00 : 79dcd0: 48 89 df mov %rbx,%rdi 0.00 : 79dcd3: e8 f8 f4 ff ff callq 79d1d0 : /* put the now-unused memtuples entry on the freelist */ : newtup->tupindex = state->mergefreelist; 0.00 : 79dcd8: 8b 83 a0 00 00 00 mov 0xa0(%rbx),%eax 0.00 : 79dcde: 41 89 44 24 14 mov %eax,0x14(%r12) : state->mergefreelist = tupIndex; : state->mergeavailslots[srcTape]++; 0.00 : 79dce3: 4c 03 ab 90 00 00 00 add 0x90(%rbx),%r13 0.00 : 79dcea: b8 01 00 00 00 mov $0x1,%eax : if (state->mergenext[srcTape] == 0) : state->mergelast[srcTape] = 0; : tuplesort_heap_insert(state, newtup, srcTape, false); : /* put the now-unused memtuples entry on the freelist */ : newtup->tupindex = state->mergefreelist; : state->mergefreelist = tupIndex; 0.00 : 79dcef: 44 89 b3 a0 00 00 00 mov %r14d,0xa0(%rbx) : state->mergeavailslots[srcTape]++; 0.00 : 79dcf6: 41 83 45 00 01 addl $0x1,0x0(%r13) : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79dcfb: eb 1e jmp 79dd1b 0.00 : 79dcfd: 0f 1f 00 nopl (%rax) : break; : : case TSS_SORTEDONTAPE: : Assert(forward || state->randomAccess); : *should_free = true; : if (forward) 0.00 : 79dd00: 40 84 f6 test %sil,%sil : } : break; : : case TSS_SORTEDONTAPE: : Assert(forward || state->randomAccess); : *should_free = true; 0.00 : 79dd03: c6 01 01 movb $0x1,(%rcx) : if (forward) 0.00 : 79dd06: 0f 84 8c 00 00 00 je 79dd98 : { : if (state->eof_reached) 0.00 : 79dd0c: 80 bf dc 00 00 00 00 cmpb $0x0,0xdc(%rdi) 0.00 : 79dd13: 0f 84 0f 02 00 00 je 79df28 : return true; : } : return false; : : default: : elog(ERROR, "invalid tuplesort state"); 0.00 : 79dd19: 31 c0 xor %eax,%eax : return false; /* keep compiler quiet */ : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 1.65 : 79dd1b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.83 : 79dd1f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 1.65 : 79dd23: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 79dd27: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 79dd2b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 79dd2f: c9 leaveq 1.65 : 79dd30: c3 retq 0.00 : 79dd31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : return false; : } : else : { : if (state->current <= 0) 0.00 : 79dd38: 8b 87 d8 00 00 00 mov 0xd8(%rdi),%eax 0.00 : 79dd3e: 85 c0 test %eax,%eax 0.00 : 79dd40: 7e d7 jle 79dd19 : : /* : * if all tuples are fetched already then we return last : * tuple, else - tuple before last returned. : */ : if (state->eof_reached) 0.00 : 79dd42: 80 bf dc 00 00 00 00 cmpb $0x0,0xdc(%rdi) 0.00 : 79dd49: 0f 85 c9 01 00 00 jne 79df18 : state->eof_reached = false; : else : { : state->current--; /* last returned tuple */ 0.00 : 79dd4f: 83 e8 01 sub $0x1,%eax : if (state->current <= 0) 0.00 : 79dd52: 85 c0 test %eax,%eax : */ : if (state->eof_reached) : state->eof_reached = false; : else : { : state->current--; /* last returned tuple */ 0.00 : 79dd54: 89 87 d8 00 00 00 mov %eax,0xd8(%rdi) : if (state->current <= 0) 0.00 : 79dd5a: 7e bd jle 79dd19 : return false; : } : *stup = state->memtuples[state->current - 1]; 0.00 : 79dd5c: 48 8b 53 60 mov 0x60(%rbx),%rdx 0.00 : 79dd60: 48 98 cltq 0.00 : 79dd62: 48 8d 44 40 fd lea -0x3(%rax,%rax,2),%rax 0.00 : 79dd67: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 79dd6e: 00 0.00 : 79dd6f: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 79dd73: 49 89 04 24 mov %rax,(%r12) 0.00 : 79dd77: 48 8b 44 11 08 mov 0x8(%rcx,%rdx,1),%rax 0.00 : 79dd7c: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 79dd81: 48 8b 44 11 10 mov 0x10(%rcx,%rdx,1),%rax 0.00 : 79dd86: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 79dd8b: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79dd90: eb 89 jmp 79dd1b 0.00 : 79dd92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Backward. : * : * if all tuples are fetched already then we return last tuple, : * else - tuple before last returned. : */ : if (state->eof_reached) 0.00 : 79dd98: 80 bf dc 00 00 00 00 cmpb $0x0,0xdc(%rdi) 0.00 : 79dd9f: 74 6f je 79de10 : /* : * Seek position is pointing just past the zero tuplen at the : * end of file; back up to fetch last tuple's ending length : * word. If seek fails we must have a completely empty file. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79dda1: 8b b7 d4 00 00 00 mov 0xd4(%rdi),%esi 0.00 : 79dda7: 48 8b 7f 30 mov 0x30(%rdi),%rdi 0.00 : 79ddab: ba 08 00 00 00 mov $0x8,%edx 0.00 : 79ddb0: e8 8b dd ff ff callq 79bb40 0.00 : 79ddb5: 84 c0 test %al,%al 0.00 : 79ddb7: 0f 84 5c ff ff ff je 79dd19 : state->result_tape, : 2 * sizeof(unsigned int))) : return false; : state->eof_reached = false; 0.00 : 79ddbd: c6 83 dc 00 00 00 00 movb $0x0,0xdc(%rbx) : elog(ERROR, "bogus tuple length in backward scan"); : return false; : } : } : : tuplen = getlen(state, state->result_tape, false); 0.00 : 79ddc4: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79ddca: 31 d2 xor %edx,%edx 0.00 : 79ddcc: 48 89 df mov %rbx,%rdi 0.00 : 79ddcf: e8 0c fb ff ff callq 79d8e0 : /* : * Now we have the length of the prior tuple, back up and read it. : * Note: READTUP expects we are positioned after the initial : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79ddd4: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79ddda: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 79ddde: 89 c2 mov %eax,%edx : elog(ERROR, "bogus tuple length in backward scan"); : return false; : } : } : : tuplen = getlen(state, state->result_tape, false); 0.00 : 79dde0: 41 89 c5 mov %eax,%r13d : /* : * Now we have the length of the prior tuple, back up and read it. : * Note: READTUP expects we are positioned after the initial : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79dde3: e8 58 dd ff ff callq 79bb40 0.00 : 79dde8: 84 c0 test %al,%al 0.00 : 79ddea: 0f 84 7b 01 00 00 je 79df6b : state->result_tape, : tuplen)) : elog(ERROR, "bogus tuple length in backward scan"); : READTUP(state, stup, state->result_tape, tuplen); 0.00 : 79ddf0: 8b 93 d4 00 00 00 mov 0xd4(%rbx),%edx 0.00 : 79ddf6: 44 89 e9 mov %r13d,%ecx 0.00 : 79ddf9: 4c 89 e6 mov %r12,%rsi 0.00 : 79ddfc: 48 89 df mov %rbx,%rdi 0.00 : 79ddff: ff 53 50 callq *0x50(%rbx) 0.00 : 79de02: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79de07: e9 0f ff ff ff jmpq 79dd1b 0.00 : 79de0c: 0f 1f 40 00 nopl 0x0(%rax) : { : /* : * Back up and fetch previously-returned tuple's ending length : * word. If seek fails, assume we are at start of file. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de10: 8b b7 d4 00 00 00 mov 0xd4(%rdi),%esi 0.00 : 79de16: 48 8b 7f 30 mov 0x30(%rdi),%rdi 0.00 : 79de1a: ba 04 00 00 00 mov $0x4,%edx 0.00 : 79de1f: e8 1c dd ff ff callq 79bb40 0.00 : 79de24: 84 c0 test %al,%al 0.00 : 79de26: 0f 84 ed fe ff ff je 79dd19 : state->result_tape, : sizeof(unsigned int))) : return false; : tuplen = getlen(state, state->result_tape, false); 0.00 : 79de2c: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79de32: 31 d2 xor %edx,%edx 0.00 : 79de34: 48 89 df mov %rbx,%rdi 0.00 : 79de37: e8 a4 fa ff ff callq 79d8e0 : : /* : * Back up to get ending length word of tuple before it. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de3c: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79de42: 41 89 c5 mov %eax,%r13d 0.00 : 79de45: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 79de49: 49 8d 55 08 lea 0x8(%r13),%rdx 0.00 : 79de4d: e8 ee dc ff ff callq 79bb40 0.00 : 79de52: 84 c0 test %al,%al 0.00 : 79de54: 0f 85 6a ff ff ff jne 79ddc4 : * If that fails, presumably the prev tuple is the first : * in the file. Back up so that it becomes next to read : * in forward direction (not obviously right, but that is : * what in-memory case does). : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de5a: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79de60: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 79de64: 49 8d 55 04 lea 0x4(%r13),%rdx 0.00 : 79de68: e8 d3 dc ff ff callq 79bb40 0.00 : 79de6d: 84 c0 test %al,%al : state->result_tape, : tuplen + sizeof(unsigned int))) : elog(ERROR, "bogus tuple length in backward scan"); 0.00 : 79de6f: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79de74: be 00 06 00 00 mov $0x600,%esi : * If that fails, presumably the prev tuple is the first : * in the file. Back up so that it becomes next to read : * in forward direction (not obviously right, but that is : * what in-memory case does). : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de79: 0f 85 9a fe ff ff jne 79dd19 : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, : state->result_tape, : tuplen)) : elog(ERROR, "bogus tuple length in backward scan"); 0.00 : 79de7f: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79de84: e8 97 d5 fd ff callq 77b420 0.00 : 79de89: be 00 2b 8e 00 mov $0x8e2b00,%esi 0.00 : 79de8e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79de93: 31 c0 xor %eax,%eax 0.00 : 79de95: e8 96 d3 fd ff callq 77b230 0.00 : 79de9a: e8 31 b6 cc ff callq 4694d0 0.00 : 79de9f: 90 nop : *should_free = false; : if (forward) : { : if (state->current < state->memtupcount) : { : *stup = state->memtuples[state->current++]; 0.00 : 79dea0: 48 8b 57 60 mov 0x60(%rdi),%rdx 0.00 : 79dea4: 48 63 c6 movslq %esi,%rax 0.00 : 79dea7: 48 8d 04 40 lea (%rax,%rax,2),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 3.31 : 79deab: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 79deb2: 00 0.83 : 79deb3: 48 8b 04 c2 mov (%rdx,%rax,8),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 23.97 : 79deb7: 49 89 04 24 mov %rax,(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 1.65 : 79debb: 48 8b 44 11 08 mov 0x8(%rcx,%rdx,1),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 38.02 : 79dec0: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 79dec5: 48 8b 44 11 10 mov 0x10(%rcx,%rdx,1),%rax 5.79 : 79deca: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 79decf: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 79ded2: 89 87 d8 00 00 00 mov %eax,0xd8(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 0.83 : 79ded8: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79dedd: e9 39 fe ff ff jmpq 79dd1b 0.00 : 79dee2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * out of preloaded data on this tape, try to read more : * : * Unlike mergeonerun(), we only preload from the single : * tape that's run dry. See mergepreread() comments. : */ : mergeprereadone(state, srcTape); 0.00 : 79dee8: 44 89 fe mov %r15d,%esi 0.00 : 79deeb: 48 89 df mov %rbx,%rdi 0.00 : 79deee: e8 8d fa ff ff callq 79d980 : : /* : * if still no data, we've reached end of run on this tape : */ : if ((tupIndex = state->mergenext[srcTape]) == 0) 0.00 : 79def3: 4c 89 ea mov %r13,%rdx 0.00 : 79def6: 48 03 93 80 00 00 00 add 0x80(%rbx),%rdx 0.00 : 79defd: b8 01 00 00 00 mov $0x1,%eax 0.00 : 79df02: 44 8b 32 mov (%rdx),%r14d 0.00 : 79df05: 45 85 f6 test %r14d,%r14d 0.00 : 79df08: 0f 85 81 fd ff ff jne 79dc8f 0.00 : 79df0e: e9 08 fe ff ff jmpq 79dd1b 0.00 : 79df13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * if all tuples are fetched already then we return last : * tuple, else - tuple before last returned. : */ : if (state->eof_reached) : state->eof_reached = false; 0.00 : 79df18: c6 87 dc 00 00 00 00 movb $0x0,0xdc(%rdi) 0.00 : 79df1f: e9 38 fe ff ff jmpq 79dd5c 0.00 : 79df24: 0f 1f 40 00 nopl 0x0(%rax) : *should_free = true; : if (forward) : { : if (state->eof_reached) : return false; : if ((tuplen = getlen(state, state->result_tape, true)) != 0) 0.00 : 79df28: 8b b7 d4 00 00 00 mov 0xd4(%rdi),%esi 0.00 : 79df2e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 79df33: e8 a8 f9 ff ff callq 79d8e0 0.00 : 79df38: 85 c0 test %eax,%eax 0.00 : 79df3a: 75 14 jne 79df50 : READTUP(state, stup, state->result_tape, tuplen); : return true; : } : else : { : state->eof_reached = true; 0.00 : 79df3c: c6 83 dc 00 00 00 01 movb $0x1,0xdc(%rbx) 0.00 : 79df43: 31 c0 xor %eax,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79df45: e9 d1 fd ff ff jmpq 79dd1b 0.00 : 79df4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (state->eof_reached) : return false; : if ((tuplen = getlen(state, state->result_tape, true)) != 0) : { : READTUP(state, stup, state->result_tape, tuplen); 0.00 : 79df50: 89 c1 mov %eax,%ecx 0.00 : 79df52: 8b 93 d4 00 00 00 mov 0xd4(%rbx),%edx 0.00 : 79df58: 4c 89 e6 mov %r12,%rsi 0.00 : 79df5b: 48 89 df mov %rbx,%rdi 0.00 : 79df5e: ff 53 50 callq *0x50(%rbx) 0.00 : 79df61: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79df66: e9 b0 fd ff ff jmpq 79dd1b : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, : state->result_tape, : tuplen)) : elog(ERROR, "bogus tuple length in backward scan"); 0.00 : 79df6b: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79df70: be 0f 06 00 00 mov $0x60f,%esi 0.00 : 79df75: e9 05 ff ff ff jmpq 79de7f Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1747 7.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 5.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 4.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 3.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 3.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 2.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 2.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1756 2.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1757 2.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1758 2.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1758 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1754 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1757 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1756 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1757 1.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1758 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1754 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1757 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1757 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007406f0 : : TimeOffset time; : : time = jd; : : #ifdef HAVE_INT64_TIMESTAMP : *hour = time / USECS_PER_HOUR; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 3.74 : 7406f0: 49 b9 c5 29 e5 03 2c movabs $0x98b5bf2c03e529c5,%r9 0.00 : 7406f7: bf b5 98 : } : : : void : dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1747 38.32 : 7406fa: 49 89 d2 mov %rdx,%r10 0.00 : 7406fd: 55 push %rbp : TimeOffset time; : : time = jd; : : #ifdef HAVE_INT64_TIMESTAMP : *hour = time / USECS_PER_HOUR; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1753 1.87 : 7406fe: 4c 89 c8 mov %r9,%rax 0.93 : 740701: 48 f7 ef imul %rdi 4.67 : 740704: 48 89 f8 mov %rdi,%rax : } : : : void : dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec) : { 0.00 : 740707: 48 89 e5 mov %rsp,%rbp : TimeOffset time; : : time = jd; : : #ifdef HAVE_INT64_TIMESTAMP : *hour = time / USECS_PER_HOUR; 1.87 : 74070a: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 74070e: 49 89 d1 mov %rdx,%r9 0.00 : 740711: 49 01 f9 add %rdi,%r9 0.93 : 740714: 49 c1 f9 1f sar $0x1f,%r9 1.87 : 740718: 49 29 c1 sub %rax,%r9 : time -= (*hour) * USECS_PER_HOUR; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1754 0.93 : 74071b: 48 b8 00 5c 6c 29 ff movabs $0xffffffff296c5c00,%rax 0.00 : 740722: ff ff ff : TimeOffset time; : : time = jd; : : #ifdef HAVE_INT64_TIMESTAMP : *hour = time / USECS_PER_HOUR; 0.00 : 740725: 44 89 0e mov %r9d,(%rsi) : time -= (*hour) * USECS_PER_HOUR; 0.00 : 740728: 49 63 f1 movslq %r9d,%rsi 0.00 : 74072b: 48 0f af f0 imul %rax,%rsi 1.87 : 74072f: 48 8d 3c 3e lea (%rsi,%rdi,1),%rdi : *min = time / USECS_PER_MINUTE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 1.87 : 740733: 48 be 29 d7 a6 43 39 movabs $0x8f2a633943a6d729,%rsi 0.00 : 74073a: 63 2a 8f 0.00 : 74073d: 48 89 f0 mov %rsi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 5.61 : 740740: 48 f7 ef imul %rdi 7.48 : 740743: 48 89 f8 mov %rdi,%rax 0.00 : 740746: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 74074a: 48 89 d6 mov %rdx,%rsi : time -= (*min) * USECS_PER_MINUTE; : *sec = time / USECS_PER_SEC; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1757 1.87 : 74074d: 48 ba db 34 b6 d7 82 movabs $0x431bde82d7b634db,%rdx 0.00 : 740754: de 1b 43 : time = jd; : : #ifdef HAVE_INT64_TIMESTAMP : *hour = time / USECS_PER_HOUR; : time -= (*hour) * USECS_PER_HOUR; : *min = time / USECS_PER_MINUTE; 0.00 : 740757: 48 01 fe add %rdi,%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1755 2.80 : 74075a: 48 c1 fe 19 sar $0x19,%rsi 0.93 : 74075e: 48 29 c6 sub %rax,%rsi : time -= (*min) * USECS_PER_MINUTE; 0.00 : 740761: 48 63 c6 movslq %esi,%rax : time = jd; : : #ifdef HAVE_INT64_TIMESTAMP : *hour = time / USECS_PER_HOUR; : time -= (*hour) * USECS_PER_HOUR; : *min = time / USECS_PER_MINUTE; 3.74 : 740764: 41 89 32 mov %esi,(%r10) : time -= (*min) * USECS_PER_MINUTE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1756 2.80 : 740767: 48 69 c0 00 79 6c fc imul $0xfffffffffc6c7900,%rax,%rax 1.87 : 74076e: 48 8d 34 38 lea (%rax,%rdi,1),%rsi : *sec = time / USECS_PER_SEC; 0.00 : 740772: 48 89 f0 mov %rsi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1757 1.87 : 740775: 48 f7 ea imul %rdx 2.80 : 740778: 48 89 f0 mov %rsi,%rax 0.00 : 74077b: 48 c1 f8 3f sar $0x3f,%rax 0.93 : 74077f: 48 c1 fa 12 sar $0x12,%rdx 0.00 : 740783: 48 29 c2 sub %rax,%rdx 0.93 : 740786: 89 11 mov %edx,(%rcx) : *fsec = time - (*sec * USECS_PER_SEC); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1758 2.80 : 740788: 69 d2 c0 bd f0 ff imul $0xfff0bdc0,%edx,%edx 2.80 : 74078e: 01 f2 add %esi,%edx 1.87 : 740790: 41 89 10 mov %edx,(%r8) : *min = time / SECS_PER_MINUTE; : time -= (*min) * SECS_PER_MINUTE; : *sec = time; : *fsec = time - *sec; : #endif : } /* dt2time() */ 0.00 : 740793: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 18.84 ??:0 14.49 ??:0 14.49 ??:0 11.59 ??:0 8.70 ??:0 5.80 ??:0 2.90 ??:0 2.90 ??:0 2.90 ??:0 2.90 ??:0 2.90 ??:0 1.45 ??:0 1.45 ??:0 1.45 ??:0 1.45 ??:0 1.45 ??:0 1.45 ??:0 1.45 ??:0 1.45 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007b6d0 <__libc_malloc>: ??:0 18.84 : 7b6d0: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 11.59 : 7b6d5: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 8.70 : 7b6da: 49 89 fc mov %rdi,%r12 ??:0 1.45 : 7b6dd: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 7b6e2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 7b6e7: 48 83 ec 28 sub $0x28,%rsp 0.00 : 7b6eb: 48 8b 05 be 67 2f 00 mov 0x2f67be(%rip),%rax # 371eb0 <_DYNAMIC+0x350> 2.90 : 7b6f2: 48 8b 00 mov (%rax),%rax ??:0 14.49 : 7b6f5: 48 85 c0 test %rax,%rax 0.00 : 7b6f8: 0f 85 18 02 00 00 jne 7b916 <__libc_malloc+0x246> ??:0 1.45 : 7b6fe: 48 8b 15 3b 66 2f 00 mov 0x2f663b(%rip),%rdx # 371d40 <_DYNAMIC+0x1e0> 0.00 : 7b705: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7b70c: 00 00 0.00 : 7b70e: 48 8b 1c 10 mov (%rax,%rdx,1),%rbx ??:0 5.80 : 7b712: 48 85 db test %rbx,%rbx 0.00 : 7b715: 0f 84 b5 00 00 00 je 7b7d0 <__libc_malloc+0x100> ??:0 1.45 : 7b71b: 31 c0 xor %eax,%eax 0.00 : 7b71d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 7b722: 83 3d 8b bf 2f 00 00 cmpl $0x0,0x2fbf8b(%rip) # 3776b4 <__libc_multiple_threads> 2.90 : 7b729: 74 06 je 7b731 <__libc_malloc+0x61> 0.00 : 7b72b: f0 0f b1 13 lock cmpxchg %edx,(%rbx) 0.00 : 7b72f: eb 03 jmp 7b734 <__libc_malloc+0x64> 0.00 : 7b731: 0f b1 13 cmpxchg %edx,(%rbx) ??:0 14.49 : 7b734: 85 c0 test %eax,%eax 0.00 : 7b736: 0f 85 94 00 00 00 jne 7b7d0 <__libc_malloc+0x100> 0.00 : 7b73c: 4c 89 e6 mov %r12,%rsi 0.00 : 7b73f: 48 89 df mov %rbx,%rdi ??:0 1.45 : 7b742: e8 d9 d6 ff ff callq 78e20 <_int_malloc> 0.00 : 7b747: 48 85 c0 test %rax,%rax 0.00 : 7b74a: 48 89 c5 mov %rax,%rbp 0.00 : 7b74d: 0f 84 ad 00 00 00 je 7b800 <__libc_malloc+0x130> 0.00 : 7b753: 83 3d 5a bf 2f 00 00 cmpl $0x0,0x2fbf5a(%rip) # 3776b4 <__libc_multiple_threads> 1.45 : 7b75a: 74 0b je 7b767 <__libc_malloc+0x97> 0.00 : 7b75c: f0 ff 0b lock decl (%rbx) 0.00 : 7b75f: 0f 85 60 1c 00 00 jne 7d3c5 <_L_unlock_10041> 0.00 : 7b765: eb 08 jmp 7b76f <__libc_malloc+0x9f> 0.00 : 7b767: ff 0b decl (%rbx) 2.90 : 7b769: 0f 85 56 1c 00 00 jne 7d3c5 <_L_unlock_10041> 0.00 : 7b76f: 48 8b 45 f8 mov -0x8(%rbp),%rax 2.90 : 7b773: 48 8d 55 f0 lea -0x10(%rbp),%rdx 0.00 : 7b777: a8 02 test $0x2,%al 0.00 : 7b779: 75 2f jne 7b7aa <__libc_malloc+0xda> 0.00 : 7b77b: a8 04 test $0x4,%al 0.00 : 7b77d: 48 8d 0d 1c 87 2f 00 lea 0x2f871c(%rip),%rcx # 373ea0 0.00 : 7b784: 75 6a jne 7b7f0 <__libc_malloc+0x120> 0.00 : 7b786: 48 39 d9 cmp %rbx,%rcx 0.00 : 7b789: 74 1f je 7b7aa <__libc_malloc+0xda> 0.00 : 7b78b: 48 8d 0d 13 07 0c 00 lea 0xc0713(%rip),%rcx # 13bea5 <__func__.13639> 0.00 : 7b792: 48 8d 35 a9 03 0c 00 lea 0xc03a9(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7b799: 48 8d 3d 98 46 0c 00 lea 0xc4698(%rip),%rdi # 13fe38 <__PRETTY_FUNCTION__.11129+0x245f> 0.00 : 7b7a0: ba 5e 0e 00 00 mov $0xe5e,%edx 0.00 : 7b7a5: e8 16 b0 ff ff callq 767c0 <__malloc_assert> 0.00 : 7b7aa: 48 89 e8 mov %rbp,%rax 0.00 : 7b7ad: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 1.45 : 7b7b2: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 1.45 : 7b7b7: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 2.90 : 7b7bc: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7b7c1: 48 83 c4 28 add $0x28,%rsp 0.00 : 7b7c5: c3 retq 0.00 : 7b7c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7b7cd: 00 00 00 0.00 : 7b7d0: 48 89 df mov %rbx,%rdi 0.00 : 7b7d3: 4c 89 e6 mov %r12,%rsi 0.00 : 7b7d6: 31 ed xor %ebp,%ebp 0.00 : 7b7d8: e8 b3 d2 ff ff callq 78a90 0.00 : 7b7dd: 48 85 c0 test %rax,%rax 0.00 : 7b7e0: 48 89 c3 mov %rax,%rbx 0.00 : 7b7e3: 0f 85 53 ff ff ff jne 7b73c <__libc_malloc+0x6c> 0.00 : 7b7e9: eb bf jmp 7b7aa <__libc_malloc+0xda> 0.00 : 7b7eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7b7f0: 48 81 e2 00 00 00 fc and $0xfffffffffc000000,%rdx 0.00 : 7b7f7: 48 8b 0a mov (%rdx),%rcx 0.00 : 7b7fa: eb 8a jmp 7b786 <__libc_malloc+0xb6> 0.00 : 7b7fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7b800: 4c 8d 2d 99 86 2f 00 lea 0x2f8699(%rip),%r13 # 373ea0 0.00 : 7b807: 4c 39 eb cmp %r13,%rbx 0.00 : 7b80a: 0f 84 90 00 00 00 je 7b8a0 <__libc_malloc+0x1d0> 0.00 : 7b810: 83 3d 9d be 2f 00 00 cmpl $0x0,0x2fbe9d(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b817: 74 0b je 7b824 <__libc_malloc+0x154> 0.00 : 7b819: f0 ff 0b lock decl (%rbx) 0.00 : 7b81c: 0f 85 be 1b 00 00 jne 7d3e0 <_L_unlock_10131> 0.00 : 7b822: eb 08 jmp 7b82c <__libc_malloc+0x15c> 0.00 : 7b824: ff 0b decl (%rbx) 0.00 : 7b826: 0f 85 b4 1b 00 00 jne 7d3e0 <_L_unlock_10131> 0.00 : 7b82c: be 01 00 00 00 mov $0x1,%esi 0.00 : 7b831: 31 c0 xor %eax,%eax 0.00 : 7b833: 83 3d 7a be 2f 00 00 cmpl $0x0,0x2fbe7a(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b83a: 74 10 je 7b84c <__libc_malloc+0x17c> 0.00 : 7b83c: f0 0f b1 35 5c 86 2f lock cmpxchg %esi,0x2f865c(%rip) # 373ea0 0.00 : 7b843: 00 0.00 : 7b844: 0f 85 b1 1b 00 00 jne 7d3fb <_L_lock_10139> 0.00 : 7b84a: eb 0d jmp 7b859 <__libc_malloc+0x189> 0.00 : 7b84c: 0f b1 35 4d 86 2f 00 cmpxchg %esi,0x2f864d(%rip) # 373ea0 0.00 : 7b853: 0f 85 a2 1b 00 00 jne 7d3fb <_L_lock_10139> 0.00 : 7b859: 4c 89 e6 mov %r12,%rsi 0.00 : 7b85c: 4c 89 ef mov %r13,%rdi 0.00 : 7b85f: e8 bc d5 ff ff callq 78e20 <_int_malloc> 0.00 : 7b864: 48 89 c5 mov %rax,%rbp 0.00 : 7b867: 83 3d 46 be 2f 00 00 cmpl $0x0,0x2fbe46(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b86e: 74 0f je 7b87f <__libc_malloc+0x1af> 0.00 : 7b870: f0 ff 0d 29 86 2f 00 lock decl 0x2f8629(%rip) # 373ea0 0.00 : 7b877: 0f 85 9d 1b 00 00 jne 7d41a <_L_unlock_10152> 0.00 : 7b87d: eb 0c jmp 7b88b <__libc_malloc+0x1bb> 0.00 : 7b87f: ff 0d 1b 86 2f 00 decl 0x2f861b(%rip) # 373ea0 0.00 : 7b885: 0f 85 8f 1b 00 00 jne 7d41a <_L_unlock_10152> 0.00 : 7b88b: 4c 89 eb mov %r13,%rbx 0.00 : 7b88e: 48 85 ed test %rbp,%rbp 0.00 : 7b891: 0f 84 13 ff ff ff je 7b7aa <__libc_malloc+0xda> 0.00 : 7b897: e9 d3 fe ff ff jmpq 7b76f <__libc_malloc+0x9f> 0.00 : 7b89c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7b8a0: 48 83 3d 60 8e 2f 00 cmpq $0x0,0x2f8e60(%rip) # 374708 0.00 : 7b8a7: 00 0.00 : 7b8a8: 4c 89 e6 mov %r12,%rsi 0.00 : 7b8ab: 48 0f 44 d8 cmove %rax,%rbx 0.00 : 7b8af: 48 89 df mov %rbx,%rdi 0.00 : 7b8b2: e8 d9 d1 ff ff callq 78a90 0.00 : 7b8b7: 48 89 c3 mov %rax,%rbx 0.00 : 7b8ba: 83 3d f3 bd 2f 00 00 cmpl $0x0,0x2fbdf3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b8c1: 74 0f je 7b8d2 <__libc_malloc+0x202> 0.00 : 7b8c3: f0 ff 0d d6 85 2f 00 lock decl 0x2f85d6(%rip) # 373ea0 0.00 : 7b8ca: 0f 85 69 1b 00 00 jne 7d439 <_L_unlock_10175> 0.00 : 7b8d0: eb 0c jmp 7b8de <__libc_malloc+0x20e> 0.00 : 7b8d2: ff 0d c8 85 2f 00 decl 0x2f85c8(%rip) # 373ea0 0.00 : 7b8d8: 0f 85 5b 1b 00 00 jne 7d439 <_L_unlock_10175> 0.00 : 7b8de: 48 85 db test %rbx,%rbx 0.00 : 7b8e1: 0f 84 c3 fe ff ff je 7b7aa <__libc_malloc+0xda> 0.00 : 7b8e7: 4c 89 e6 mov %r12,%rsi 0.00 : 7b8ea: 48 89 df mov %rbx,%rdi 0.00 : 7b8ed: e8 2e d5 ff ff callq 78e20 <_int_malloc> 0.00 : 7b8f2: 48 89 c5 mov %rax,%rbp 0.00 : 7b8f5: 83 3d b8 bd 2f 00 00 cmpl $0x0,0x2fbdb8(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b8fc: 74 0b je 7b909 <__libc_malloc+0x239> 0.00 : 7b8fe: f0 ff 0b lock decl (%rbx) 0.00 : 7b901: 0f 85 51 1b 00 00 jne 7d458 <_L_unlock_10187> 0.00 : 7b907: eb 08 jmp 7b911 <__libc_malloc+0x241> 0.00 : 7b909: ff 0b decl (%rbx) 0.00 : 7b90b: 0f 85 47 1b 00 00 jne 7d458 <_L_unlock_10187> 0.00 : 7b911: e9 78 ff ff ff jmpq 7b88e <__libc_malloc+0x1be> 1.45 : 7b916: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 7b91b: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7b920: 49 89 c3 mov %rax,%r11 0.00 : 7b923: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7b928: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7b92d: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7b932: 48 83 c4 28 add $0x28,%rsp 0.00 : 7b936: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 18.97 ??:0 15.52 ??:0 12.07 ??:0 12.07 ??:0 8.62 ??:0 8.62 ??:0 5.17 ??:0 5.17 ??:0 3.45 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000db80 <_dl_fixup>: ??:0 1.72 : db80: 41 55 push %r13 1.72 : db82: 89 f6 mov %esi,%esi 0.00 : db84: 49 89 fa mov %rdi,%r10 1.72 : db87: 48 8d 34 76 lea (%rsi,%rsi,2),%rsi 0.00 : db8b: 41 54 push %r12 0.00 : db8d: 48 c1 e6 03 shl $0x3,%rsi 0.00 : db91: 55 push %rbp 0.00 : db92: 53 push %rbx 0.00 : db93: 48 83 ec 28 sub $0x28,%rsp 0.00 : db97: 48 8b 47 68 mov 0x68(%rdi),%rax ??:0 12.07 : db9b: 48 8b 57 70 mov 0x70(%rdi),%rdx ??:0 1.72 : db9f: 4c 8b 48 08 mov 0x8(%rax),%r9 0.00 : dba3: 48 8b 87 f8 00 00 00 mov 0xf8(%rdi),%rax 0.00 : dbaa: 48 03 70 08 add 0x8(%rax),%rsi ??:0 8.62 : dbae: 8b 46 0c mov 0xc(%rsi),%eax ??:0 3.45 : dbb1: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : dbb5: 48 8d 3c c5 00 00 00 lea 0x0(,%rax,8),%rdi 0.00 : dbbc: 00 0.00 : dbbd: 48 03 7a 08 add 0x8(%rdx),%rdi 0.00 : dbc1: 48 89 7c 24 20 mov %rdi,0x20(%rsp) 0.00 : dbc6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : dbca: 4d 8b 2a mov (%r10),%r13 0.00 : dbcd: 4c 8b 26 mov (%rsi),%r12 0.00 : dbd0: 83 fa 07 cmp $0x7,%edx 0.00 : dbd3: 0f 85 2e 01 00 00 jne dd07 <_dl_fixup+0x187> ??:0 12.07 : dbd9: f6 47 05 03 testb $0x3,0x5(%rdi) 15.52 : dbdd: 0f 85 43 01 00 00 jne dd26 <_dl_fixup+0x1a6> 0.00 : dbe3: 49 8b 82 c8 01 00 00 mov 0x1c8(%r10),%rax ??:0 1.72 : dbea: 48 85 c0 test %rax,%rax 0.00 : dbed: 0f 84 fd 00 00 00 je dcf0 <_dl_fixup+0x170> 0.00 : dbf3: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : dbf7: 48 c1 ea 20 shr $0x20,%rdx ??:0 5.17 : dbfb: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 5.17 : dbff: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : dc04: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : dc08: 4c 8d 04 c5 00 00 00 lea 0x0(,%rax,8),%r8 0.00 : dc0f: 00 0.00 : dc10: 4d 03 82 e0 02 00 00 add 0x2e0(%r10),%r8 0.00 : dc17: 41 8b 58 08 mov 0x8(%r8),%ebx 8.62 : dc1b: 85 db test %ebx,%ebx 0.00 : dc1d: 0f 84 cd 00 00 00 je dcf0 <_dl_fixup+0x170> 0.00 : dc23: 64 8b 04 25 18 00 00 mov %fs:0x18,%eax 0.00 : dc2a: 00 0.00 : dc2b: 85 c0 test %eax,%eax 0.00 : dc2d: be 01 00 00 00 mov $0x1,%esi 0.00 : dc32: 0f 85 f7 00 00 00 jne dd2f <_dl_fixup+0x1af> 0.00 : dc38: 64 8b 2c 25 4c 00 00 mov %fs:0x4c,%ebp 0.00 : dc3f: 00 0.00 : dc40: 64 c7 04 25 4c 00 00 movl $0x1,%fs:0x4c 0.00 : dc47: 00 01 00 00 00 0.00 : dc4c: 8b 3f mov (%rdi),%edi 0.00 : dc4e: 49 8b 8a 80 03 00 00 mov 0x380(%r10),%rcx 0.00 : dc55: 48 8d 54 24 20 lea 0x20(%rsp),%rdx 0.00 : dc5a: 89 34 24 mov %esi,(%rsp) 0.00 : dc5d: 4c 89 d6 mov %r10,%rsi 0.00 : dc60: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : dc67: 00 00 0.00 : dc69: 49 8d 3c 39 lea (%r9,%rdi,1),%rdi 0.00 : dc6d: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : dc73: e8 f8 be ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : dc78: 48 89 c3 mov %rax,%rbx 0.00 : dc7b: 64 8b 04 25 18 00 00 mov %fs:0x18,%eax 0.00 : dc82: 00 ??:0 1.72 : dc83: 85 c0 test %eax,%eax 0.00 : dc85: 0f 85 ba 00 00 00 jne dd45 <_dl_fixup+0x1c5> 0.00 : dc8b: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : dc92: 00 0.00 : dc93: 85 c0 test %eax,%eax 0.00 : dc95: 74 69 je dd00 <_dl_fixup+0x180> 0.00 : dc97: 64 89 2c 25 4c 00 00 mov %ebp,%fs:0x4c 0.00 : dc9e: 00 0.00 : dc9f: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : dca4: 31 d2 xor %edx,%edx 0.00 : dca6: 48 85 ff test %rdi,%rdi 0.00 : dca9: 74 21 je dccc <_dl_fixup+0x14c> 0.00 : dcab: 31 c0 xor %eax,%eax 0.00 : dcad: 48 85 db test %rbx,%rbx 0.00 : dcb0: 74 03 je dcb5 <_dl_fixup+0x135> 0.00 : dcb2: 48 8b 03 mov (%rbx),%rax 0.00 : dcb5: 48 89 c2 mov %rax,%rdx 0.00 : dcb8: 48 03 57 08 add 0x8(%rdi),%rdx 0.00 : dcbc: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : dcc0: 83 e0 0f and $0xf,%eax 0.00 : dcc3: 83 f8 0a cmp $0xa,%eax 0.00 : dcc6: 0f 84 b2 00 00 00 je dd7e <_dl_fixup+0x1fe> 0.00 : dccc: 44 8b 1d 91 0f 21 00 mov 0x210f91(%rip),%r11d # 21ec64 <_rtld_global_ro+0x44> 0.00 : dcd3: 45 85 db test %r11d,%r11d 0.00 : dcd6: 75 04 jne dcdc <_dl_fixup+0x15c> ??:0 18.97 : dcd8: 4b 89 14 2c mov %rdx,(%r12,%r13,1) 0.00 : dcdc: 48 83 c4 28 add $0x28,%rsp 0.00 : dce0: 48 89 d0 mov %rdx,%rax 0.00 : dce3: 5b pop %rbx 0.00 : dce4: 5d pop %rbp 0.00 : dce5: 41 5c pop %r12 0.00 : dce7: 41 5d pop %r13 0.00 : dce9: c3 retq 0.00 : dcea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : dcf0: 45 31 c0 xor %r8d,%r8d 0.00 : dcf3: e9 2b ff ff ff jmpq dc23 <_dl_fixup+0xa3> 0.00 : dcf8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : dcff: 00 0.00 : dd00: e8 eb 61 00 00 callq 13ef0 <_dl_x86_64_restore_sse> 0.00 : dd05: eb 90 jmp dc97 <_dl_fixup+0x117> 0.00 : dd07: 48 8d 0d 3c c0 00 00 lea 0xc03c(%rip),%rcx # 19d4a <__PRETTY_FUNCTION__.12044> 0.00 : dd0e: 48 8d 35 21 c0 00 00 lea 0xc021(%rip),%rsi # 19d36 <__PRETTY_FUNCTION__.12494+0x57> 0.00 : dd15: 48 8d 3d fc e0 00 00 lea 0xe0fc(%rip),%rdi # 1be18 <__PRETTY_FUNCTION__.3644+0x1aa7> 0.00 : dd1c: ba 56 00 00 00 mov $0x56,%edx 0.00 : dd21: e8 4a 70 00 00 callq 14d70 <__GI___assert_fail> 0.00 : dd26: 4c 89 ea mov %r13,%rdx 0.00 : dd29: 48 03 57 08 add 0x8(%rdi),%rdx 0.00 : dd2d: eb 8d jmp dcbc <_dl_fixup+0x13c> 0.00 : dd2f: 64 c7 04 25 1c 00 00 movl $0x1,%fs:0x1c 0.00 : dd36: 00 01 00 00 00 0.00 : dd3b: be 05 00 00 00 mov $0x5,%esi 0.00 : dd40: e9 f3 fe ff ff jmpq dc38 <_dl_fixup+0xb8> 0.00 : dd45: 31 c0 xor %eax,%eax 0.00 : dd47: 64 87 04 25 1c 00 00 xchg %eax,%fs:0x1c 0.00 : dd4e: 00 0.00 : dd4f: 83 f8 02 cmp $0x2,%eax 0.00 : dd52: 0f 85 33 ff ff ff jne dc8b <_dl_fixup+0x10b> 0.00 : dd58: ba 01 00 00 00 mov $0x1,%edx 0.00 : dd5d: 64 48 8b 3c 25 10 00 mov %fs:0x10,%rdi 0.00 : dd64: 00 00 0.00 : dd66: 64 8b 34 25 48 00 00 mov %fs:0x48,%esi 0.00 : dd6d: 00 0.00 : dd6e: 48 83 c7 1c add $0x1c,%rdi 0.00 : dd72: 83 ce 01 or $0x1,%esi 0.00 : dd75: b0 ca mov $0xca,%al 0.00 : dd77: 0f 05 syscall 0.00 : dd79: e9 0d ff ff ff jmpq dc8b <_dl_fixup+0x10b> 0.00 : dd7e: ff d2 callq *%rdx 0.00 : dd80: 48 89 c2 mov %rax,%rdx 0.00 : dd83: e9 44 ff ff ff jmpq dccc <_dl_fixup+0x14c> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 42.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:341 24.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:334 14.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:338 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:349 5.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:335 5.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:341 1.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:349 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b35f0 : : * that uses ExecScan(). : */ : void : ExecScanReScan(ScanState *node) : { : EState *estate = node->ps.state; /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:335 5.33 : 5b35f0: 48 8b 47 10 mov 0x10(%rdi),%rax : * This must be called within the ReScan function of any plan node type : * that uses ExecScan(). : */ : void : ExecScanReScan(ScanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:334 24.00 : 5b35f4: 55 push %rbp : EState *estate = node->ps.state; : : /* Stop projecting any tuples from SRFs in the targetlist */ : node->ps.ps_TupFromTlist = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:338 14.67 : 5b35f5: c6 47 70 00 movb $0x0,0x70(%rdi) : * This must be called within the ReScan function of any plan node type : * that uses ExecScan(). : */ : void : ExecScanReScan(ScanState *node) : { 0.00 : 5b35f9: 48 89 e5 mov %rsp,%rbp : : /* Stop projecting any tuples from SRFs in the targetlist */ : node->ps.ps_TupFromTlist = false; : : /* Rescan EvalPlanQual tuple if we're inside an EvalPlanQual recheck */ : if (estate->es_epqScanDone != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:341 5.33 : 5b35fc: 48 8b 90 e0 00 00 00 mov 0xe0(%rax),%rdx 42.67 : 5b3603: 48 85 d2 test %rdx,%rdx 0.00 : 5b3606: 74 0e je 5b3616 : { : Index scanrelid = ((Scan *) node->ps.plan)->scanrelid; : : Assert(scanrelid > 0); : : estate->es_epqScanDone[scanrelid - 1] = false; 0.00 : 5b3608: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 5b360c: 8b 40 60 mov 0x60(%rax),%eax 0.00 : 5b360f: 83 e8 01 sub $0x1,%eax 0.00 : 5b3612: c6 04 02 00 movb $0x0,(%rdx,%rax,1) : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execScan.c:349 8.00 : 5b3616: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 11.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 7.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 7.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:282 5.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:285 5.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:290 5.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 4.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:152 4.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:274 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:275 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:284 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:157 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:290 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:285 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:285 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:282 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:283 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:285 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:290 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:290 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:283 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:283 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006fc9f0 : : PG_RETURN_BOOL(result); : } : : Datum : textlike(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 11.27 : 6fc9f0: 55 push %rbp 11.27 : 6fc9f1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 2.82 : 6fc9f4: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 7.04 : 6fc9f8: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:273 2.82 : 6fc9fc: 48 89 fb mov %rdi,%rbx 0.00 : 6fc9ff: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 6fca03: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.41 : 6fca07: 48 83 ec 20 sub $0x20,%rsp : text *str = PG_GETARG_TEXT_PP(0); 0.00 : 6fca0b: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:274 2.82 : 6fca0f: e8 cc 22 08 00 callq 77ece0 : text *pat = PG_GETARG_TEXT_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:275 2.82 : 6fca14: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : textlike(PG_FUNCTION_ARGS) : { : text *str = PG_GETARG_TEXT_PP(0); 0.00 : 6fca18: 49 89 c4 mov %rax,%r12 : char *s, : *p; : int slen, : plen; : : s = VARDATA_ANY(str); 0.00 : 6fca1b: 4d 8d 74 24 01 lea 0x1(%r12),%r14 : : Datum : textlike(PG_FUNCTION_ARGS) : { : text *str = PG_GETARG_TEXT_PP(0); : text *pat = PG_GETARG_TEXT_PP(1); 0.00 : 6fca20: e8 bb 22 08 00 callq 77ece0 : char *s, : *p; : int slen, : plen; : : s = VARDATA_ANY(str); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:282 7.04 : 6fca25: 41 0f b6 14 24 movzbl (%r12),%edx : : Datum : textlike(PG_FUNCTION_ARGS) : { : text *str = PG_GETARG_TEXT_PP(0); : text *pat = PG_GETARG_TEXT_PP(1); 0.00 : 6fca2a: 48 89 c6 mov %rax,%rsi : char *s, : *p; : int slen, : plen; : : s = VARDATA_ANY(str); 0.00 : 6fca2d: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 6fca32: 89 d1 mov %edx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:282 1.41 : 6fca34: 83 e1 01 and $0x1,%ecx 0.00 : 6fca37: 4c 0f 44 f0 cmove %rax,%r14 : slen = VARSIZE_ANY_EXHDR(str); 0.00 : 6fca3b: 80 fa 01 cmp $0x1,%dl 0.00 : 6fca3e: 0f 84 cc 00 00 00 je 6fcb10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:283 1.41 : 6fca44: 85 c9 test %ecx,%ecx 0.00 : 6fca46: 0f 85 84 00 00 00 jne 6fcad0 0.00 : 6fca4c: 41 8b 04 24 mov (%r12),%eax 0.00 : 6fca50: c1 e8 02 shr $0x2,%eax 0.00 : 6fca53: 44 8d 68 fc lea -0x4(%rax),%r13d : p = VARDATA_ANY(pat); 0.00 : 6fca57: 0f b6 16 movzbl (%rsi),%edx 0.00 : 6fca5a: 4c 8d 66 01 lea 0x1(%rsi),%r12 0.00 : 6fca5e: 48 8d 46 04 lea 0x4(%rsi),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:284 2.82 : 6fca62: 89 d1 mov %edx,%ecx 0.00 : 6fca64: 83 e1 01 and $0x1,%ecx 0.00 : 6fca67: 4c 0f 44 e0 cmove %rax,%r12 : plen = VARSIZE_ANY_EXHDR(pat); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:285 5.63 : 6fca6b: 80 fa 01 cmp $0x1,%dl 0.00 : 6fca6e: 0f 84 cc 00 00 00 je 6fcb40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:285 1.41 : 6fca74: 85 c9 test %ecx,%ecx 0.00 : 6fca76: 74 68 je 6fcae0 0.00 : 6fca78: d0 ea shr %dl 0.00 : 6fca7a: 0f b6 c2 movzbl %dl,%eax 0.00 : 6fca7d: 8d 58 ff lea -0x1(%rax),%ebx : : /* Generic for all cases not requiring inline case-folding */ : static inline int : GenericMatchText(char *s, int slen, char *p, int plen) : { : if (pg_database_encoding_max_length() == 1) 0.00 : 6fca80: e8 0b ee 08 00 callq 78b890 0.00 : 6fca85: 83 e8 01 sub $0x1,%eax 0.00 : 6fca88: 74 68 je 6fcaf2 : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) 0.00 : 6fca8a: e8 51 be 08 00 callq 7888e0 0.00 : 6fca8f: 83 f8 06 cmp $0x6,%eax 0.00 : 6fca92: 0f 84 d0 00 00 00 je 6fcb68 : return UTF8_MatchText(s, slen, p, plen, 0, true); : else : return MB_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fca98: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 6fca9e: 45 31 c0 xor %r8d,%r8d 0.00 : 6fcaa1: 89 d9 mov %ebx,%ecx 0.00 : 6fcaa3: 4c 89 e2 mov %r12,%rdx 0.00 : 6fcaa6: 44 89 ee mov %r13d,%esi 0.00 : 6fcaa9: 4c 89 f7 mov %r14,%rdi 0.00 : 6fcaac: e8 df fc ff ff callq 6fc790 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:157 2.82 : 6fcab1: 83 e8 01 sub $0x1,%eax : plen = VARSIZE_ANY_EXHDR(pat); : : result = (GenericMatchText(s, slen, p, plen) == LIKE_TRUE); : : PG_RETURN_BOOL(result); : } 0.00 : 6fcab4: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:290 1.41 : 6fcab8: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 : if (pg_database_encoding_max_length() == 1) : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) : return UTF8_MatchText(s, slen, p, plen, 0, true); : else : return MB_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fcabd: 0f 94 c0 sete %al : plen = VARSIZE_ANY_EXHDR(pat); : : result = (GenericMatchText(s, slen, p, plen) == LIKE_TRUE); : : PG_RETURN_BOOL(result); : } 0.00 : 6fcac0: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.41 : 6fcac5: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 : if (pg_database_encoding_max_length() == 1) : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) : return UTF8_MatchText(s, slen, p, plen, 0, true); : else : return MB_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fcaca: 0f b6 c0 movzbl %al,%eax : plen = VARSIZE_ANY_EXHDR(pat); : : result = (GenericMatchText(s, slen, p, plen) == LIKE_TRUE); : : PG_RETURN_BOOL(result); : } 2.82 : 6fcacd: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:290 5.63 : 6fcace: c3 retq 0.00 : 6fcacf: 90 nop : *p; : int slen, : plen; : : s = VARDATA_ANY(str); : slen = VARSIZE_ANY_EXHDR(str); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:283 1.41 : 6fcad0: d0 ea shr %dl 0.00 : 6fcad2: 0f b6 c2 movzbl %dl,%eax 1.41 : 6fcad5: 44 8d 68 ff lea -0x1(%rax),%r13d 0.00 : 6fcad9: e9 79 ff ff ff jmpq 6fca57 0.00 : 6fcade: 66 90 xchg %ax,%ax : p = VARDATA_ANY(pat); : plen = VARSIZE_ANY_EXHDR(pat); 0.00 : 6fcae0: 8b 06 mov (%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:285 2.82 : 6fcae2: c1 e8 02 shr $0x2,%eax 2.82 : 6fcae5: 8d 58 fc lea -0x4(%rax),%ebx : : /* Generic for all cases not requiring inline case-folding */ : static inline int : GenericMatchText(char *s, int slen, char *p, int plen) : { : if (pg_database_encoding_max_length() == 1) 0.00 : 6fcae8: e8 a3 ed 08 00 callq 78b890 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:152 4.23 : 6fcaed: 83 e8 01 sub $0x1,%eax 0.00 : 6fcaf0: 75 98 jne 6fca8a : return SB_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fcaf2: 41 b9 01 00 00 00 mov $0x1,%r9d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 1.41 : 6fcaf8: 45 31 c0 xor %r8d,%r8d 0.00 : 6fcafb: 89 d9 mov %ebx,%ecx 4.23 : 6fcafd: 4c 89 e2 mov %r12,%rdx 0.00 : 6fcb00: 44 89 ee mov %r13d,%esi 0.00 : 6fcb03: 4c 89 f7 mov %r14,%rdi 0.00 : 6fcb06: e8 f5 f0 ff ff callq 6fbc00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/like.c:153 5.63 : 6fcb0b: eb a4 jmp 6fcab1 0.00 : 6fcb0d: 0f 1f 00 nopl (%rax) : *p; : int slen, : plen; : : s = VARDATA_ANY(str); : slen = VARSIZE_ANY_EXHDR(str); 0.00 : 6fcb10: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax 0.00 : 6fcb16: 41 bd 08 00 00 00 mov $0x8,%r13d 0.00 : 6fcb1c: 3c 01 cmp $0x1,%al 0.00 : 6fcb1e: 0f 84 33 ff ff ff je 6fca57 0.00 : 6fcb24: 3c 12 cmp $0x12,%al 0.00 : 6fcb26: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 6fcb2c: b8 10 00 00 00 mov $0x10,%eax 0.00 : 6fcb31: 44 0f 44 e8 cmove %eax,%r13d 0.00 : 6fcb35: e9 1d ff ff ff jmpq 6fca57 0.00 : 6fcb3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : p = VARDATA_ANY(pat); : plen = VARSIZE_ANY_EXHDR(pat); 0.00 : 6fcb40: 0f b6 46 01 movzbl 0x1(%rsi),%eax 0.00 : 6fcb44: bb 08 00 00 00 mov $0x8,%ebx 0.00 : 6fcb49: 3c 01 cmp $0x1,%al 0.00 : 6fcb4b: 0f 84 2f ff ff ff je 6fca80 0.00 : 6fcb51: 3c 12 cmp $0x12,%al 0.00 : 6fcb53: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 6fcb58: b8 10 00 00 00 mov $0x10,%eax 0.00 : 6fcb5d: 0f 44 d8 cmove %eax,%ebx 0.00 : 6fcb60: e9 1b ff ff ff jmpq 6fca80 0.00 : 6fcb65: 0f 1f 00 nopl (%rax) : GenericMatchText(char *s, int slen, char *p, int plen) : { : if (pg_database_encoding_max_length() == 1) : return SB_MatchText(s, slen, p, plen, 0, true); : else if (GetDatabaseEncoding() == PG_UTF8) : return UTF8_MatchText(s, slen, p, plen, 0, true); 0.00 : 6fcb68: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 6fcb6e: 45 31 c0 xor %r8d,%r8d 0.00 : 6fcb71: 89 d9 mov %ebx,%ecx 0.00 : 6fcb73: 4c 89 e2 mov %r12,%rdx 0.00 : 6fcb76: 44 89 ee mov %r13d,%esi 0.00 : 6fcb79: 4c 89 f7 mov %r14,%rdi 0.00 : 6fcb7c: e8 3f ee ff ff callq 6fb9c0 0.00 : 6fcb81: e9 2b ff ff ff jmpq 6fcab1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 39.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1794 16.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 5.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1853 4.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 4.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1909 4.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1852 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1810 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1803 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1794 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1810 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1854 2.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1851 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1794 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1909 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1909 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1794 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1809 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1809 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1849 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1849 1.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1892 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007434a0 : : * : * If attimezone is NULL, the global timezone setting will be used. : */ : int : timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 4.04 : 7434a0: 55 push %rbp : if (attimezone == NULL) : attimezone = session_timezone; : : #ifdef HAVE_INT64_TIMESTAMP : time = dt; : TMODULO(time, date, USECS_PER_DAY); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1794 39.39 : 7434a1: 48 89 f8 mov %rdi,%rax : * : * If attimezone is NULL, the global timezone setting will be used. : */ : int : timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone) : { 0.00 : 7434a4: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 1.01 : 7434a7: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 7434ab: 48 89 d3 mov %rdx,%rbx : if (attimezone == NULL) : attimezone = session_timezone; : : #ifdef HAVE_INT64_TIMESTAMP : time = dt; : TMODULO(time, date, USECS_PER_DAY); 0.00 : 7434ae: 48 ba 97 b8 a1 56 b9 movabs $0x32e73fb956a1b897,%rdx 0.00 : 7434b5: 3f e7 32 : * : * If attimezone is NULL, the global timezone setting will be used. : */ : int : timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone) : { 0.00 : 7434b8: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 7434bc: 4c 89 75 f0 mov %r14,-0x10(%rbp) 2.02 : 7434c0: 4d 89 ce mov %r9,%r14 0.00 : 7434c3: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 7434c7: 4c 89 65 e0 mov %r12,-0x20(%rbp) 2.02 : 7434cb: 48 83 ec 50 sub $0x50,%rsp : Timestamp time; : pg_time_t utime; : : /* Use session timezone if caller asks for default */ : if (attimezone == NULL) : attimezone = session_timezone; 0.00 : 7434cf: 4d 85 c9 test %r9,%r9 0.00 : 7434d2: 4c 0f 44 35 66 bc 47 cmove 0x47bc66(%rip),%r14 # bbf140 0.00 : 7434d9: 00 : * : * If attimezone is NULL, the global timezone setting will be used. : */ : int : timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1783 16.16 : 7434da: 49 89 fd mov %rdi,%r13 : if (attimezone == NULL) : attimezone = session_timezone; : : #ifdef HAVE_INT64_TIMESTAMP : time = dt; : TMODULO(time, date, USECS_PER_DAY); 0.00 : 7434dd: 48 f7 ea imul %rdx 0.00 : 7434e0: 48 89 f8 mov %rdi,%rax : * : * If attimezone is NULL, the global timezone setting will be used. : */ : int : timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone) : { 0.00 : 7434e3: 48 89 75 c0 mov %rsi,-0x40(%rbp) : if (attimezone == NULL) : attimezone = session_timezone; : : #ifdef HAVE_INT64_TIMESTAMP : time = dt; : TMODULO(time, date, USECS_PER_DAY); 0.00 : 7434e7: 48 c1 f8 3f sar $0x3f,%rax : * : * If attimezone is NULL, the global timezone setting will be used. : */ : int : timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone) : { 0.00 : 7434eb: 49 89 cf mov %rcx,%r15 0.00 : 7434ee: 4c 89 45 b8 mov %r8,-0x48(%rbp) : if (attimezone == NULL) : attimezone = session_timezone; : : #ifdef HAVE_INT64_TIMESTAMP : time = dt; : TMODULO(time, date, USECS_PER_DAY); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1794 1.01 : 7434f2: 48 c1 fa 22 sar $0x22,%rdx 0.00 : 7434f6: 48 29 c2 sub %rax,%rdx 0.00 : 7434f9: 75 35 jne 743530 0.00 : 7434fb: 49 89 fc mov %rdi,%r12 : : if (time < INT64CONST(0)) 0.00 : 7434fe: 4d 85 e4 test %r12,%r12 0.00 : 743501: 78 44 js 743547 : time += USECS_PER_DAY; : date -= 1; : } : : /* add offset to go from J2000 back to standard Julian date */ : date += POSTGRES_EPOCH_JDATE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1803 2.02 : 743503: 48 8d ba 59 68 25 00 lea 0x256859(%rdx),%rdi : : /* Julian day routine does not work for negative Julian days */ : if (date < 0 || date > (Timestamp) INT_MAX) 0.00 : 74350a: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 74350f: 48 81 ff ff ff ff 7f cmp $0x7fffffff,%rdi 0.00 : 743516: 76 48 jbe 743560 : if (tzn != NULL) : *tzn = NULL; : } : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1909 1.01 : 743518: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 74351c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 743520: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 743524: 4c 8b 75 f0 mov -0x10(%rbp),%r14 4.04 : 743528: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 74352c: c9 leaveq 1.01 : 74352d: c3 retq 0.00 : 74352e: 66 90 xchg %ax,%ax : if (attimezone == NULL) : attimezone = session_timezone; : : #ifdef HAVE_INT64_TIMESTAMP : time = dt; : TMODULO(time, date, USECS_PER_DAY); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1794 2.02 : 743530: 48 b8 00 a0 28 e2 eb movabs $0xffffffebe228a000,%rax 0.00 : 743537: ff ff ff 0.00 : 74353a: 48 0f af c2 imul %rdx,%rax 1.01 : 74353e: 4c 8d 24 38 lea (%rax,%rdi,1),%r12 : : if (time < INT64CONST(0)) 0.00 : 743542: 4d 85 e4 test %r12,%r12 0.00 : 743545: 79 bc jns 743503 : { : time += USECS_PER_DAY; 0.00 : 743547: 48 b8 00 60 d7 1d 14 movabs $0x141dd76000,%rax 0.00 : 74354e: 00 00 00 : date -= 1; 0.00 : 743551: 48 83 ea 01 sub $0x1,%rdx : time = dt; : TMODULO(time, date, USECS_PER_DAY); : : if (time < INT64CONST(0)) : { : time += USECS_PER_DAY; 0.00 : 743555: 49 01 c4 add %rax,%r12 0.00 : 743558: eb a9 jmp 743503 0.00 : 74355a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* Julian day routine does not work for negative Julian days */ : if (date < 0 || date > (Timestamp) INT_MAX) : return -1; : : j2date((int) date, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1809 1.01 : 743560: 48 8d 4b 0c lea 0xc(%rbx),%rcx 0.00 : 743564: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.00 : 743568: 48 8d 73 14 lea 0x14(%rbx),%rsi 1.01 : 74356c: e8 3f 68 f8 ff callq 6c9db0 : dt2time(time, &tm->tm_hour, &tm->tm_min, &tm->tm_sec, fsec); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1810 2.02 : 743571: 48 8d 53 04 lea 0x4(%rbx),%rdx 0.00 : 743575: 48 8d 73 08 lea 0x8(%rbx),%rsi 0.00 : 743579: 4d 89 f8 mov %r15,%r8 0.00 : 74357c: 48 89 d9 mov %rbx,%rcx 3.03 : 74357f: 4c 89 e7 mov %r12,%rdi 0.00 : 743582: e8 69 d1 ff ff callq 7406f0 : goto recalc_t; : } : #endif : : /* Done if no TZ conversion wanted */ : if (tzp == NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1849 1.01 : 743587: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 1.01 : 74358c: 0f 84 9e 00 00 00 je 743630 : * Unix epoch. Then see if we can convert to pg_time_t without loss. This : * coding avoids hardwiring any assumptions about the width of pg_time_t, : * so it should behave sanely on machines without int64. : */ : #ifdef HAVE_INT64_TIMESTAMP : dt = (dt - *fsec) / USECS_PER_SEC + 0.00 : 743592: 49 63 07 movslq (%r15),%rax 0.00 : 743595: 4c 89 e9 mov %r13,%rcx 0.00 : 743598: 48 ba db 34 b6 d7 82 movabs $0x431bde82d7b634db,%rdx 0.00 : 74359f: de 1b 43 : (POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY); : #endif : utime = (pg_time_t) dt; : if ((Timestamp) utime == dt) : { : struct pg_tm *tx = pg_localtime(&utime, attimezone); 0.00 : 7435a2: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 7435a6: 4c 89 f6 mov %r14,%rsi : * Unix epoch. Then see if we can convert to pg_time_t without loss. This : * coding avoids hardwiring any assumptions about the width of pg_time_t, : * so it should behave sanely on machines without int64. : */ : #ifdef HAVE_INT64_TIMESTAMP : dt = (dt - *fsec) / USECS_PER_SEC + 0.00 : 7435a9: 48 29 c1 sub %rax,%rcx 0.00 : 7435ac: 48 89 c8 mov %rcx,%rax 0.00 : 7435af: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 7435b3: 48 f7 ea imul %rdx 0.00 : 7435b6: 48 c1 fa 12 sar $0x12,%rdx 0.00 : 7435ba: 48 29 ca sub %rcx,%rdx : (POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY; : #else : dt = rint(dt - *fsec + : (POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY); : #endif : utime = (pg_time_t) dt; 0.00 : 7435bd: 48 81 c2 80 43 6d 38 add $0x386d4380,%rdx 0.00 : 7435c4: 48 89 55 d0 mov %rdx,-0x30(%rbp) : if ((Timestamp) utime == dt) : { : struct pg_tm *tx = pg_localtime(&utime, attimezone); 0.00 : 7435c8: e8 33 50 06 00 callq 7a8600 : : tm->tm_year = tx->tm_year + 1900; 0.00 : 7435cd: 8b 50 14 mov 0x14(%rax),%edx 0.00 : 7435d0: 81 c2 6c 07 00 00 add $0x76c,%edx 0.00 : 7435d6: 89 53 14 mov %edx,0x14(%rbx) : tm->tm_mon = tx->tm_mon + 1; 0.00 : 7435d9: 8b 50 10 mov 0x10(%rax),%edx 0.00 : 7435dc: 83 c2 01 add $0x1,%edx 0.00 : 7435df: 89 53 10 mov %edx,0x10(%rbx) : tm->tm_mday = tx->tm_mday; 0.00 : 7435e2: 8b 50 0c mov 0xc(%rax),%edx 0.00 : 7435e5: 89 53 0c mov %edx,0xc(%rbx) : tm->tm_hour = tx->tm_hour; 0.00 : 7435e8: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 7435eb: 89 53 08 mov %edx,0x8(%rbx) : tm->tm_min = tx->tm_min; 0.00 : 7435ee: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 7435f1: 89 53 04 mov %edx,0x4(%rbx) : tm->tm_sec = tx->tm_sec; 0.00 : 7435f4: 8b 10 mov (%rax),%edx 0.00 : 7435f6: 89 13 mov %edx,(%rbx) : tm->tm_isdst = tx->tm_isdst; 0.00 : 7435f8: 8b 50 20 mov 0x20(%rax),%edx 0.00 : 7435fb: 89 53 20 mov %edx,0x20(%rbx) : tm->tm_gmtoff = tx->tm_gmtoff; 0.00 : 7435fe: 48 8b 50 28 mov 0x28(%rax),%rdx 0.00 : 743602: 48 89 53 28 mov %rdx,0x28(%rbx) : tm->tm_zone = tx->tm_zone; 0.00 : 743606: 48 8b 40 30 mov 0x30(%rax),%rax : *tzp = -tm->tm_gmtoff; 0.00 : 74360a: f7 da neg %edx : tm->tm_hour = tx->tm_hour; : tm->tm_min = tx->tm_min; : tm->tm_sec = tx->tm_sec; : tm->tm_isdst = tx->tm_isdst; : tm->tm_gmtoff = tx->tm_gmtoff; : tm->tm_zone = tx->tm_zone; 0.00 : 74360c: 48 89 43 30 mov %rax,0x30(%rbx) : *tzp = -tm->tm_gmtoff; 0.00 : 743610: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 743614: 89 10 mov %edx,(%rax) : if (tzn != NULL) 0.00 : 743616: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) 0.00 : 74361b: 74 33 je 743650 : *tzn = tm->tm_zone; 0.00 : 74361d: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 743621: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 743625: 48 89 02 mov %rax,(%rdx) 0.00 : 743628: 31 c0 xor %eax,%eax 0.00 : 74362a: e9 e9 fe ff ff jmpq 743518 0.00 : 74362f: 90 nop : if (tzp == NULL) : { : tm->tm_isdst = -1; : tm->tm_gmtoff = 0; : tm->tm_zone = NULL; : if (tzn != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1854 2.02 : 743630: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) : #endif : : /* Done if no TZ conversion wanted */ : if (tzp == NULL) : { : tm->tm_isdst = -1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1851 2.02 : 743635: c7 43 20 ff ff ff ff movl $0xffffffff,0x20(%rbx) : tm->tm_gmtoff = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1852 4.04 : 74363c: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 743643: 00 : tm->tm_zone = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1853 5.05 : 743644: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 74364b: 00 : if (tzn != NULL) 0.00 : 74364c: 75 12 jne 743660 0.00 : 74364e: 66 90 xchg %ax,%ax : tm->tm_isdst = tx->tm_isdst; : tm->tm_gmtoff = tx->tm_gmtoff; : tm->tm_zone = tx->tm_zone; : *tzp = -tm->tm_gmtoff; : if (tzn != NULL) : *tzn = tm->tm_zone; 0.00 : 743650: 31 c0 xor %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:1892 1.01 : 743652: e9 c1 fe ff ff jmpq 743518 0.00 : 743657: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 74365e: 00 00 : { : tm->tm_isdst = -1; : tm->tm_gmtoff = 0; : tm->tm_zone = NULL; : if (tzn != NULL) : *tzn = NULL; 0.00 : 743660: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 743664: 31 c0 xor %eax,%eax 0.00 : 743666: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 74366d: e9 a6 fe ff ff jmpq 743518 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.22 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1485 16.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 12.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 12.50 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 9.72 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 8.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 6.94 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 2.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1485 2.78 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 1.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b4a00 : : * If isCommit is false, just clean the callback list but don't call 'em. : * (See comment for FreeExprContext.) : */ : static void : ShutdownExprContext(ExprContext *econtext, bool isCommit) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 9.72 : 5b4a00: 55 push %rbp 12.50 : 5b4a01: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 1.39 : 5b4a04: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 16.67 : 5b4a06: 41 55 push %r13 12.50 : 5b4a08: 41 89 f5 mov %esi,%r13d /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1480 1.39 : 5b4a0b: 41 54 push %r12 0.00 : 5b4a0d: 49 89 fc mov %rdi,%r12 0.00 : 5b4a10: 53 push %rbx : ExprContext_CB *ecxt_callback; : MemoryContext oldcontext; : : /* Fast path in normal case where there's nothing to do. */ : if (econtext->ecxt_callbacks == NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1485 2.78 : 5b4a11: 48 83 7f 78 00 cmpq $0x0,0x78(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1485 22.22 : 5b4a16: 74 57 je 5b4a6f : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5b4a18: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5b4a1c: 4c 8b 35 3d 5e 60 00 mov 0x605e3d(%rip),%r14 # bba860 : : CurrentMemoryContext = context; 0.00 : 5b4a23: 48 89 05 36 5e 60 00 mov %rax,0x605e36(%rip) # bba860 : oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : /* : * Call each callback function in reverse registration order. : */ : while ((ecxt_callback = econtext->ecxt_callbacks) != NULL) 0.00 : 5b4a2a: 48 8b 5f 78 mov 0x78(%rdi),%rbx 0.00 : 5b4a2e: 48 85 db test %rbx,%rbx 0.00 : 5b4a31: 75 17 jne 5b4a4a 0.00 : 5b4a33: eb 33 jmp 5b4a68 0.00 : 5b4a35: 0f 1f 00 nopl (%rax) : { : econtext->ecxt_callbacks = ecxt_callback->next; : if (isCommit) : (*ecxt_callback->function) (ecxt_callback->arg); : pfree(ecxt_callback); 0.00 : 5b4a38: 48 89 df mov %rbx,%rdi 0.00 : 5b4a3b: e8 40 41 1e 00 callq 798b80 : oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : /* : * Call each callback function in reverse registration order. : */ : while ((ecxt_callback = econtext->ecxt_callbacks) != NULL) 0.00 : 5b4a40: 49 8b 5c 24 78 mov 0x78(%r12),%rbx 0.00 : 5b4a45: 48 85 db test %rbx,%rbx 0.00 : 5b4a48: 74 1e je 5b4a68 : { : econtext->ecxt_callbacks = ecxt_callback->next; 0.00 : 5b4a4a: 48 8b 03 mov (%rbx),%rax : if (isCommit) 0.00 : 5b4a4d: 45 84 ed test %r13b,%r13b : /* : * Call each callback function in reverse registration order. : */ : while ((ecxt_callback = econtext->ecxt_callbacks) != NULL) : { : econtext->ecxt_callbacks = ecxt_callback->next; 0.00 : 5b4a50: 49 89 44 24 78 mov %rax,0x78(%r12) : if (isCommit) 0.00 : 5b4a55: 74 e1 je 5b4a38 : (*ecxt_callback->function) (ecxt_callback->arg); 0.00 : 5b4a57: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5b4a5b: ff 53 08 callq *0x8(%rbx) 0.00 : 5b4a5e: 66 90 xchg %ax,%ax 0.00 : 5b4a60: eb d6 jmp 5b4a38 0.00 : 5b4a62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b4a68: 4c 89 35 f1 5d 60 00 mov %r14,0x605df1(%rip) # bba860 : pfree(ecxt_callback); : } : : MemoryContextSwitchTo(oldcontext); : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 6.94 : 5b4a6f: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 2.78 : 5b4a70: 41 5c pop %r12 1.39 : 5b4a72: 41 5d pop %r13 1.39 : 5b4a74: 41 5e pop %r14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 8.33 : 5b4a76: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 23.08 ??:0 11.54 ??:0 5.77 ??:0 5.77 ??:0 5.77 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008d30 : : * @budget: amount of work driver is allowed to do this pass, in packets : * : * This function will clean all queues associated with a q_vector. : **/ : int ixgbe_poll(struct napi_struct *napi, int budget) : { ??:0 5.77 : 8d30: 41 57 push %r15 23.08 : 8d32: 41 89 f7 mov %esi,%r15d 0.00 : 8d35: 41 56 push %r14 ??:0 1.92 : 8d37: 49 89 fe mov %rdi,%r14 0.00 : 8d3a: 41 55 push %r13 : struct ixgbe_q_vector *q_vector = : container_of(napi, struct ixgbe_q_vector, napi); 0.00 : 8d3c: 4c 8d 6f c0 lea -0x40(%rdi),%r13 : * @budget: amount of work driver is allowed to do this pass, in packets : * : * This function will clean all queues associated with a q_vector. : **/ : int ixgbe_poll(struct napi_struct *napi, int budget) : { 1.92 : 8d40: 41 54 push %r12 ??:0 5.77 : 8d42: 55 push %rbp 0.00 : 8d43: 53 push %rbx ??:0 1.92 : 8d44: 48 83 ec 08 sub $0x8,%rsp : struct ixgbe_q_vector *q_vector = : container_of(napi, struct ixgbe_q_vector, napi); : struct ixgbe_adapter *adapter = q_vector->adapter; 0.00 : 8d48: 48 8b 47 c0 mov -0x40(%rdi),%rax 0.00 : 8d4c: 48 89 04 24 mov %rax,(%rsp) : struct ixgbe_ring *ring; : int per_ring_budget; : bool clean_complete = true; : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) 3.85 : 8d50: f6 80 18 02 00 00 40 testb $0x40,0x218(%rax) 3.85 : 8d57: 0f 85 db 00 00 00 jne 8e38 : ixgbe_update_dca(q_vector); : : #endif : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 8d5d: 49 8b 5e e8 mov -0x18(%r14),%rbx 0.00 : 8d61: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 8d66: 48 85 db test %rbx,%rbx 0.00 : 8d69: 74 1a je 8d85 0.00 : 8d6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : clean_complete &= ixgbe_clean_tx_irq(q_vector, ring); 0.00 : 8d70: 48 89 de mov %rbx,%rsi 0.00 : 8d73: 4c 89 ef mov %r13,%rdi 0.00 : 8d76: e8 35 fb ff ff callq 88b0 : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : ixgbe_update_dca(q_vector); : : #endif : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 8d7b: 48 8b 1b mov (%rbx),%rbx : clean_complete &= ixgbe_clean_tx_irq(q_vector, ring); 0.00 : 8d7e: 21 c5 and %eax,%ebp : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : ixgbe_update_dca(q_vector); : : #endif : ixgbe_for_each_ring(ring, q_vector->tx) 3.85 : 8d80: 48 85 db test %rbx,%rbx 0.00 : 8d83: 75 eb jne 8d70 : clean_complete &= ixgbe_clean_tx_irq(q_vector, ring); : : /* attempt to distribute budget to each queue fairly, but don't allow : * the budget to go below 1 because we'll exit polling */ : if (q_vector->rx.count > 1) 0.00 : 8d85: 41 0f b6 46 e2 movzbl -0x1e(%r14),%eax 0.00 : 8d8a: 45 89 fc mov %r15d,%r12d 0.00 : 8d8d: 3c 01 cmp $0x1,%al 0.00 : 8d8f: 76 1c jbe 8dad : per_ring_budget = max(budget/q_vector->rx.count, 1); 0.00 : 8d91: 0f b6 c0 movzbl %al,%eax 0.00 : 8d94: 44 89 fa mov %r15d,%edx 0.00 : 8d97: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 8d9d: 89 c1 mov %eax,%ecx 0.00 : 8d9f: c1 fa 1f sar $0x1f,%edx 0.00 : 8da2: 44 89 f8 mov %r15d,%eax 0.00 : 8da5: f7 f9 idiv %ecx 0.00 : 8da7: 85 c0 test %eax,%eax 0.00 : 8da9: 44 0f 4f e0 cmovg %eax,%r12d : else : per_ring_budget = budget; : : ixgbe_for_each_ring(ring, q_vector->rx) 1.92 : 8dad: 49 8b 5e d0 mov -0x30(%r14),%rbx 0.00 : 8db1: 48 85 db test %rbx,%rbx 0.00 : 8db4: 74 22 je 8dd8 0.00 : 8db6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8dbd: 00 00 00 : clean_complete &= ixgbe_clean_rx_irq(q_vector, ring, 0.00 : 8dc0: 48 89 de mov %rbx,%rsi 0.00 : 8dc3: 44 89 e2 mov %r12d,%edx 0.00 : 8dc6: 4c 89 ef mov %r13,%rdi 1.92 : 8dc9: e8 c2 f1 ff ff callq 7f90 : if (q_vector->rx.count > 1) : per_ring_budget = max(budget/q_vector->rx.count, 1); : else : per_ring_budget = budget; : : ixgbe_for_each_ring(ring, q_vector->rx) ??:0 5.77 : 8dce: 48 8b 1b mov (%rbx),%rbx : clean_complete &= ixgbe_clean_rx_irq(q_vector, ring, 0.00 : 8dd1: 21 c5 and %eax,%ebp : if (q_vector->rx.count > 1) : per_ring_budget = max(budget/q_vector->rx.count, 1); : else : per_ring_budget = budget; : : ixgbe_for_each_ring(ring, q_vector->rx) 0.00 : 8dd3: 48 85 db test %rbx,%rbx 0.00 : 8dd6: 75 e8 jne 8dc0 : if (!netif_running(adapter->netdev)) : clean_complete = true; : : #endif : /* If all work not completed, return budget and keep polling */ : if (!clean_complete) 0.00 : 8dd8: 40 84 ed test %bpl,%bpl 0.00 : 8ddb: 75 13 jne 8df0 : ixgbe_set_itr(q_vector); : if (!test_bit(__IXGBE_DOWN, &adapter->state)) : ixgbe_irq_enable_queues(adapter, ((u64)1 << q_vector->v_idx)); : : return 0; : } ??:0 1.92 : 8ddd: 48 83 c4 08 add $0x8,%rsp 0.00 : 8de1: 44 89 f8 mov %r15d,%eax 0.00 : 8de4: 5b pop %rbx 0.00 : 8de5: 5d pop %rbp 0.00 : 8de6: 41 5c pop %r12 0.00 : 8de8: 41 5d pop %r13 0.00 : 8dea: 41 5e pop %r14 0.00 : 8dec: 41 5f pop %r15 0.00 : 8dee: c3 retq 0.00 : 8def: 90 nop : /* If all work not completed, return budget and keep polling */ : if (!clean_complete) : return budget; : : /* all work done, exit the polling mode */ : napi_complete(napi); 0.00 : 8df0: 4c 89 f7 mov %r14,%rdi 0.00 : 8df3: e8 00 00 00 00 callq 8df8 : if (adapter->rx_itr_setting == 1) 1.92 : 8df8: 48 8b 04 24 mov (%rsp),%rax 0.00 : 8dfc: 66 83 b8 2c 02 00 00 cmpw $0x1,0x22c(%rax) 0.00 : 8e03: 01 3.85 : 8e04: 74 3f je 8e45 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 8e06: 48 8b 14 24 mov (%rsp),%rdx : ixgbe_set_itr(q_vector); : if (!test_bit(__IXGBE_DOWN, &adapter->state)) 0.00 : 8e0a: 45 31 ff xor %r15d,%r15d 0.00 : 8e0d: 48 8b 82 10 02 00 00 mov 0x210(%rdx),%rax 0.00 : 8e14: a8 04 test $0x4,%al 0.00 : 8e16: 75 c5 jne 8ddd : ixgbe_irq_enable_queues(adapter, ((u64)1 << q_vector->v_idx)); 0.00 : 8e18: 41 0f b7 4e cc movzwl -0x34(%r14),%ecx 1.92 : 8e1d: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8e21: be 01 00 00 00 mov $0x1,%esi 0.00 : 8e26: 45 31 ff xor %r15d,%r15d 0.00 : 8e29: 48 d3 e6 shl %cl,%rsi 0.00 : 8e2c: e8 00 00 00 00 callq 8e31 1.92 : 8e31: eb aa jmp 8ddd 0.00 : 8e33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int per_ring_budget; : bool clean_complete = true; : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : ixgbe_update_dca(q_vector); 0.00 : 8e38: 4c 89 ef mov %r13,%rdi 0.00 : 8e3b: e8 40 a8 ff ff callq 3680 0.00 : 8e40: e9 18 ff ff ff jmpq 8d5d : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; : u8 current_itr; : : ixgbe_update_itr(q_vector, &q_vector->tx); 0.00 : 8e45: 49 8d 75 28 lea 0x28(%r13),%rsi 0.00 : 8e49: 4c 89 ef mov %r13,%rdi : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); : } : : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; 0.00 : 8e4c: 41 0f b7 5e ce movzwl -0x32(%r14),%ebx : u8 current_itr; : : ixgbe_update_itr(q_vector, &q_vector->tx); 0.00 : 8e51: e8 ca 73 ff ff callq 220 : ixgbe_update_itr(q_vector, &q_vector->rx); 1.92 : 8e56: 49 8d 75 10 lea 0x10(%r13),%rsi 0.00 : 8e5a: 4c 89 ef mov %r13,%rdi 0.00 : 8e5d: e8 be 73 ff ff callq 220 : : current_itr = max(q_vector->rx.itr, q_vector->tx.itr); : : switch (current_itr) { 0.00 : 8e62: 41 0f b6 56 fb movzbl -0x5(%r14),%edx 1.92 : 8e67: 41 0f b6 46 e3 movzbl -0x1d(%r14),%eax 0.00 : 8e6c: 38 c2 cmp %al,%dl 3.85 : 8e6e: 89 c1 mov %eax,%ecx 0.00 : 8e70: 0f 43 ca cmovae %edx,%ecx : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); : } : : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; 0.00 : 8e73: ba c8 00 00 00 mov $0xc8,%edx : ixgbe_update_itr(q_vector, &q_vector->tx); : ixgbe_update_itr(q_vector, &q_vector->rx); : : current_itr = max(q_vector->rx.itr, q_vector->tx.itr); : : switch (current_itr) { 0.00 : 8e78: 80 f9 01 cmp $0x1,%cl 0.00 : 8e7b: 74 11 je 8e8e 1.92 : 8e7d: b2 28 mov $0x28,%dl 0.00 : 8e7f: 72 0d jb 8e8e : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); : } : : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; 0.00 : 8e81: 0f b7 c3 movzwl %bx,%eax 0.00 : 8e84: 66 ba f4 01 mov $0x1f4,%dx 1.92 : 8e88: 80 f9 02 cmp $0x2,%cl 0.00 : 8e8b: 0f 45 d0 cmovne %eax,%edx : break; : default: : break; : } : : if (new_itr != q_vector->itr) { 1.92 : 8e8e: 41 0f b7 4e ce movzwl -0x32(%r14),%ecx 0.00 : 8e93: 39 d1 cmp %edx,%ecx 0.00 : 8e95: 0f 84 6b ff ff ff je 8e06 : /* do an exponential smoothing */ : new_itr = (10 * new_itr * q_vector->itr) / 0.00 : 8e9b: 8d 04 89 lea (%rcx,%rcx,4),%eax : ((9 * new_itr) + q_vector->itr); : : /* save the algorithm value here */ : q_vector->itr = new_itr; : : ixgbe_write_eitr(q_vector); 0.00 : 8e9e: 4c 89 ef mov %r13,%rdi : break; : } : : if (new_itr != q_vector->itr) { : /* do an exponential smoothing */ : new_itr = (10 * new_itr * q_vector->itr) / 0.00 : 8ea1: 8d 34 00 lea (%rax,%rax,1),%esi 0.00 : 8ea4: 8d 04 d2 lea (%rdx,%rdx,8),%eax 0.00 : 8ea7: 0f af f2 imul %edx,%esi 1.92 : 8eaa: 8d 0c 08 lea (%rax,%rcx,1),%ecx : ((9 * new_itr) + q_vector->itr); : : /* save the algorithm value here */ : q_vector->itr = new_itr; 0.00 : 8ead: 31 d2 xor %edx,%edx 0.00 : 8eaf: 89 f0 mov %esi,%eax 0.00 : 8eb1: f7 f1 div %ecx ??:0 11.54 : 8eb3: 66 41 89 46 ce mov %ax,-0x32(%r14) : : ixgbe_write_eitr(q_vector); 0.00 : 8eb8: e8 00 00 00 00 callq 8ebd 0.00 : 8ebd: e9 44 ff ff ff jmpq 8e06 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.46 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4169 27.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4168 15.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4168 10.77 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4169 4.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4170 3.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4169 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005acec0 : : */ : static Datum : ExecEvalRelabelType(GenericExprState *exprstate, : ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4168 27.69 : 5acec0: 55 push %rbp : return ExecEvalExpr(exprstate->arg, econtext, isNull, isDone); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4169 3.08 : 5acec1: 48 8b 47 18 mov 0x18(%rdi),%rax : */ : static Datum : ExecEvalRelabelType(GenericExprState *exprstate, : ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4168 15.38 : 5acec5: 48 89 e5 mov %rsp,%rbp : return ExecEvalExpr(exprstate->arg, econtext, isNull, isDone); 0.00 : 5acec8: 4c 8b 58 10 mov 0x10(%rax),%r11 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4169 38.46 : 5acecc: 48 89 c7 mov %rax,%rdi : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4170 4.62 : 5acecf: c9 leaveq : static Datum : ExecEvalRelabelType(GenericExprState *exprstate, : ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { : return ExecEvalExpr(exprstate->arg, econtext, isNull, isDone); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4169 10.77 : 5aced0: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.52 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:899 8.62 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:887 8.62 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:910 8.62 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:899 6.90 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:910 6.90 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:941 6.90 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:941 5.17 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:924 5.17 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:899 3.45 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:878 3.45 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:891 3.45 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:940 3.45 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:940 3.45 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:941 1.72 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:878 1.72 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:890 1.72 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:910 1.72 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:915 1.72 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:910 1.72 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:938 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3af0 : : * This may cause the table to exceed the desired memory size. It is : * up to the caller to call tbm_lossify() at the next safe point if so. : */ : static void : tbm_mark_page_lossy(TIDBitmap *tbm, BlockNumber pageno) : { 0.00 : 5e3af0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:878 1.72 : 5e3af1: 48 89 e5 mov %rsp,%rbp 0.00 : 5e3af4: 41 54 push %r12 0.00 : 5e3af6: 53 push %rbx 3.45 : 5e3af7: 48 89 fb mov %rdi,%rbx 0.00 : 5e3afa: 48 83 ec 20 sub $0x20,%rsp 0.00 : 5e3afe: 89 75 dc mov %esi,-0x24(%rbp) : int bitno; : int wordnum; : int bitnum; : : /* We force the bitmap into hashtable mode whenever it's lossy */ : if (tbm->status != TBM_HASH) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:887 8.62 : 5e3b01: 83 7f 10 02 cmpl $0x2,0x10(%rdi) 0.00 : 5e3b05: 74 05 je 5e3b0c : tbm_create_pagetable(tbm); 0.00 : 5e3b07: e8 04 ff ff ff callq 5e3a10 : : bitno = pageno % PAGES_PER_CHUNK; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:890 1.72 : 5e3b0c: 8b 45 dc mov -0x24(%rbp),%eax 0.00 : 5e3b0f: 44 0f b6 e0 movzbl %al,%r12d : chunk_pageno = pageno - bitno; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:891 3.45 : 5e3b13: 44 29 e0 sub %r12d,%eax : : /* : * Remove any extant non-lossy entry for the page. If the page is its own : * chunk header, however, we skip this and handle the case below. : */ : if (bitno != 0) 0.00 : 5e3b16: 45 85 e4 test %r12d,%r12d : /* We force the bitmap into hashtable mode whenever it's lossy */ : if (tbm->status != TBM_HASH) : tbm_create_pagetable(tbm); : : bitno = pageno % PAGES_PER_CHUNK; : chunk_pageno = pageno - bitno; 0.00 : 5e3b19: 89 45 e8 mov %eax,-0x18(%rbp) : : /* : * Remove any extant non-lossy entry for the page. If the page is its own : * chunk header, however, we skip this and handle the case below. : */ : if (bitno != 0) 0.00 : 5e3b1c: 0f 85 06 01 00 00 jne 5e3c28 : tbm->npages--; /* assume it must have been non-lossy */ : } : } : : /* Look up or create entry for chunk-header page */ : page = (PagetableEntry *) hash_search(tbm->pagetable, /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:910 8.62 : 5e3b22: 48 8b 7b 18 mov 0x18(%rbx),%rdi 6.90 : 5e3b26: 48 8d 75 e8 lea -0x18(%rbp),%rsi 0.00 : 5e3b2a: 48 8d 4d ef lea -0x11(%rbp),%rcx 0.00 : 5e3b2e: ba 01 00 00 00 mov $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:910 1.72 : 5e3b33: e8 68 0b 1a 00 callq 7846a0 : (void *) &chunk_pageno, : HASH_ENTER, &found); : : /* Initialize it if not present before */ : if (!found) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:915 1.72 : 5e3b38: 80 7d ef 00 cmpb $0x0,-0x11(%rbp) : tbm->npages--; /* assume it must have been non-lossy */ : } : } : : /* Look up or create entry for chunk-header page */ : page = (PagetableEntry *) hash_search(tbm->pagetable, /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:910 1.72 : 5e3b3c: 48 89 c6 mov %rax,%rsi : (void *) &chunk_pageno, : HASH_ENTER, &found); : : /* Initialize it if not present before */ : if (!found) 0.00 : 5e3b3f: 75 6f jne 5e3bb0 : { : MemSet(page, 0, sizeof(PagetableEntry)); 0.00 : 5e3b41: a8 07 test $0x7,%al 0.00 : 5e3b43: 0f 85 c7 00 00 00 jne 5e3c10 0.00 : 5e3b49: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 5e3b50: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5e3b57: 00 0.00 : 5e3b58: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5e3b5f: 00 0.00 : 5e3b60: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5e3b67: 00 0.00 : 5e3b68: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5e3b6f: 00 0.00 : 5e3b70: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5e3b77: 00 : page->blockno = chunk_pageno; 0.00 : 5e3b78: 8b 45 e8 mov -0x18(%rbp),%eax : page->ischunk = true; 0.00 : 5e3b7b: c6 46 04 01 movb $0x1,0x4(%rsi) : : /* Initialize it if not present before */ : if (!found) : { : MemSet(page, 0, sizeof(PagetableEntry)); : page->blockno = chunk_pageno; 0.00 : 5e3b7f: 89 06 mov %eax,(%rsi) : page->ischunk = true; : /* must count it too */ : tbm->nentries++; 0.00 : 5e3b81: 83 43 20 01 addl $0x1,0x20(%rbx) : tbm->nchunks++; 0.00 : 5e3b85: 83 43 2c 01 addl $0x1,0x2c(%rbx) : tbm->nchunks++; : tbm->npages--; : } : : /* Now set the original target page's bit */ : wordnum = WORDNUM(bitno); /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:938 1.72 : 5e3b89: 44 89 e2 mov %r12d,%edx : bitnum = BITNUM(bitno); : page->words[wordnum] |= ((bitmapword) 1 << bitnum); 0.00 : 5e3b8c: 41 83 e4 1f and $0x1f,%r12d 0.00 : 5e3b90: b8 01 00 00 00 mov $0x1,%eax : tbm->nchunks++; : tbm->npages--; : } : : /* Now set the original target page's bit */ : wordnum = WORDNUM(bitno); 0.00 : 5e3b95: c1 fa 05 sar $0x5,%edx : bitnum = BITNUM(bitno); : page->words[wordnum] |= ((bitmapword) 1 << bitnum); /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:940 3.45 : 5e3b98: 44 89 e1 mov %r12d,%ecx 0.00 : 5e3b9b: 48 63 d2 movslq %edx,%rdx 0.00 : 5e3b9e: d3 e0 shl %cl,%eax 3.45 : 5e3ba0: 09 44 96 08 or %eax,0x8(%rsi,%rdx,4) : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:941 6.90 : 5e3ba4: 48 83 c4 20 add $0x20,%rsp 0.00 : 5e3ba8: 5b pop %rbx 6.90 : 5e3ba9: 41 5c pop %r12 0.00 : 5e3bab: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:941 3.45 : 5e3bac: c3 retq 0.00 : 5e3bad: 0f 1f 00 nopl (%rax) : page->ischunk = true; : /* must count it too */ : tbm->nentries++; : tbm->nchunks++; : } : else if (!page->ischunk) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:924 5.17 : 5e3bb0: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5e3bb4: 75 d3 jne 5e3b89 : { : /* chunk header page was formerly non-lossy, make it lossy */ : MemSet(page, 0, sizeof(PagetableEntry)); 0.00 : 5e3bb6: a8 07 test $0x7,%al 0.00 : 5e3bb8: 0f 85 9a 00 00 00 jne 5e3c58 0.00 : 5e3bbe: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 5e3bc5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5e3bcc: 00 0.00 : 5e3bcd: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5e3bd4: 00 0.00 : 5e3bd5: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5e3bdc: 00 0.00 : 5e3bdd: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5e3be4: 00 0.00 : 5e3be5: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5e3bec: 00 : page->blockno = chunk_pageno; 0.00 : 5e3bed: 8b 45 e8 mov -0x18(%rbp),%eax : page->ischunk = true; 0.00 : 5e3bf0: c6 46 04 01 movb $0x1,0x4(%rsi) : /* we assume it had some tuple bit(s) set, so mark it lossy */ : page->words[0] = ((bitmapword) 1 << 0); 0.00 : 5e3bf4: c7 46 08 01 00 00 00 movl $0x1,0x8(%rsi) : } : else if (!page->ischunk) : { : /* chunk header page was formerly non-lossy, make it lossy */ : MemSet(page, 0, sizeof(PagetableEntry)); : page->blockno = chunk_pageno; 0.00 : 5e3bfb: 89 06 mov %eax,(%rsi) : page->ischunk = true; : /* we assume it had some tuple bit(s) set, so mark it lossy */ : page->words[0] = ((bitmapword) 1 << 0); : /* adjust counts */ : tbm->nchunks++; 0.00 : 5e3bfd: 83 43 2c 01 addl $0x1,0x2c(%rbx) : tbm->npages--; 0.00 : 5e3c01: 83 6b 28 01 subl $0x1,0x28(%rbx) 0.00 : 5e3c05: eb 82 jmp 5e3b89 0.00 : 5e3c07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e3c0e: 00 00 : HASH_ENTER, &found); : : /* Initialize it if not present before */ : if (!found) : { : MemSet(page, 0, sizeof(PagetableEntry)); 0.00 : 5e3c10: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 5e3c15: 31 c0 xor %eax,%eax 0.00 : 5e3c17: 48 89 f7 mov %rsi,%rdi 0.00 : 5e3c1a: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 5e3c1d: e9 56 ff ff ff jmpq 5e3b78 0.00 : 5e3c22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Remove any extant non-lossy entry for the page. If the page is its own : * chunk header, however, we skip this and handle the case below. : */ : if (bitno != 0) : { : if (hash_search(tbm->pagetable, /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:899 8.62 : 5e3c28: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5e3c2c: 48 8d 75 dc lea -0x24(%rbp),%rsi 0.00 : 5e3c30: 31 c9 xor %ecx,%ecx 0.00 : 5e3c32: ba 02 00 00 00 mov $0x2,%edx 5.17 : 5e3c37: e8 64 0a 1a 00 callq 7846a0 15.52 : 5e3c3c: 48 85 c0 test %rax,%rax 0.00 : 5e3c3f: 0f 84 dd fe ff ff je 5e3b22 : (void *) &pageno, : HASH_REMOVE, NULL) != NULL) : { : /* It was present, so adjust counts */ : tbm->nentries--; 0.00 : 5e3c45: 83 6b 20 01 subl $0x1,0x20(%rbx) : tbm->npages--; /* assume it must have been non-lossy */ 0.00 : 5e3c49: 83 6b 28 01 subl $0x1,0x28(%rbx) 0.00 : 5e3c4d: e9 d0 fe ff ff jmpq 5e3b22 0.00 : 5e3c52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : tbm->nchunks++; : } : else if (!page->ischunk) : { : /* chunk header page was formerly non-lossy, make it lossy */ : MemSet(page, 0, sizeof(PagetableEntry)); 0.00 : 5e3c58: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 5e3c5d: 31 c0 xor %eax,%eax 0.00 : 5e3c5f: 48 89 f7 mov %rsi,%rdi 0.00 : 5e3c62: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 5e3c65: eb 86 jmp 5e3bed Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 16.67 ??:0 10.71 ??:0 7.14 ??:0 5.95 ??:0 5.95 ??:0 4.76 ??:0 4.76 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 1.19 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009b70 <_dl_lookup_symbol_x>: ??:0 3.57 : 9b70: 55 push %rbp 4.76 : 9b71: 48 89 e5 mov %rsp,%rbp 0.00 : 9b74: 41 57 push %r15 0.00 : 9b76: 49 89 f7 mov %rsi,%r15 0.00 : 9b79: 48 89 fe mov %rdi,%rsi 0.00 : 9b7c: 41 56 push %r14 0.00 : 9b7e: 41 55 push %r13 0.00 : 9b80: 41 bd 05 15 00 00 mov $0x1505,%r13d 1.19 : 9b86: 41 54 push %r12 0.00 : 9b88: 53 push %rbx 0.00 : 9b89: 48 81 ec 08 01 00 00 sub $0x108,%rsp 0.00 : 9b90: 48 89 8d 30 ff ff ff mov %rcx,-0xd0(%rbp) 0.00 : 9b97: 48 89 bd 40 ff ff ff mov %rdi,-0xc0(%rbp) 0.00 : 9b9e: 48 89 95 38 ff ff ff mov %rdx,-0xc8(%rbp) 0.00 : 9ba5: 4c 89 85 28 ff ff ff mov %r8,-0xd8(%rbp) 1.19 : 9bac: b9 05 15 00 00 mov $0x1505,%ecx 0.00 : 9bb1: 44 89 8d 24 ff ff ff mov %r9d,-0xdc(%rbp) ??:0 10.71 : 9bb8: 0f b6 17 movzbl (%rdi),%edx 16.67 : 9bbb: 84 d2 test %dl,%dl 0.00 : 9bbd: 74 24 je 9be3 <_dl_lookup_symbol_x+0x73> 0.00 : 9bbf: 90 nop ??:0 1.19 : 9bc0: 48 89 c8 mov %rcx,%rax ??:0 5.95 : 9bc3: 0f b6 d2 movzbl %dl,%edx ??:0 1.19 : 9bc6: 48 83 c6 01 add $0x1,%rsi 1.19 : 9bca: 48 c1 e0 05 shl $0x5,%rax 3.57 : 9bce: 48 01 c8 add %rcx,%rax ??:0 7.14 : 9bd1: 48 8d 0c 02 lea (%rdx,%rax,1),%rcx 5.95 : 9bd5: 0f b6 16 movzbl (%rsi),%edx ??:0 3.57 : 9bd8: 84 d2 test %dl,%dl 0.00 : 9bda: 75 e4 jne 9bc0 <_dl_lookup_symbol_x+0x50> 0.00 : 9bdc: 49 89 cd mov %rcx,%r13 1.19 : 9bdf: 41 83 e5 ff and $0xffffffff,%r13d 2.38 : 9be3: 48 83 05 c5 5d 21 00 addq $0x1,0x215dc5(%rip) # 21f9b0 <_rtld_global+0x950> 0.00 : 9bea: 01 4.76 : 9beb: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : 9bf2: 00 1.19 : 9bf3: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 9bf8: 48 89 5d c8 mov %rbx,-0x38(%rbp) 0.00 : 9bfc: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 9c03: 00 1.19 : 9c04: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 9c0b: 00 0.00 : 9c0c: 74 0d je 9c1b <_dl_lookup_symbol_x+0xab> 0.00 : 9c0e: f7 45 10 fa ff ff ff testl $0xfffffffa,0x10(%rbp) 0.00 : 9c15: 0f 85 d8 03 00 00 jne 9ff3 <_dl_lookup_symbol_x+0x483> 0.00 : 9c1b: 48 83 7d 18 00 cmpq $0x0,0x18(%rbp) 1.19 : 9c20: 0f 85 8a 03 00 00 jne 9fb0 <_dl_lookup_symbol_x+0x440> 0.00 : 9c26: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 9c2d: 48 8b 02 mov (%rdx),%rax 2.38 : 9c30: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 9c37: 00 00 00 00 0.00 : 9c3b: 48 85 c0 test %rax,%rax 0.00 : 9c3e: 0f 84 ec 01 00 00 je 9e30 <_dl_lookup_symbol_x+0x2c0> 0.00 : 9c44: 48 8b 9d 30 ff ff ff mov -0xd0(%rbp),%rbx 0.00 : 9c4b: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 9c52: 4c 8d 75 b0 lea -0x50(%rbp),%r14 0.00 : 9c56: 4c 8d 65 c8 lea -0x38(%rbp),%r12 1.19 : 9c5a: eb 16 jmp 9c72 <_dl_lookup_symbol_x+0x102> 0.00 : 9c5c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9c60: 48 83 c3 08 add $0x8,%rbx 0.00 : 9c64: 31 d2 xor %edx,%edx 0.00 : 9c66: 48 8b 03 mov (%rbx),%rax 0.00 : 9c69: 48 85 c0 test %rax,%rax 0.00 : 9c6c: 0f 84 be 01 00 00 je 9e30 <_dl_lookup_symbol_x+0x2c0> 2.38 : 9c72: 4c 89 7c 24 28 mov %r15,0x28(%rsp) 0.00 : 9c77: 8b 8d 24 ff ff ff mov -0xdc(%rbp),%ecx 0.00 : 9c7d: 49 89 c1 mov %rax,%r9 0.00 : 9c80: 4d 89 f0 mov %r14,%r8 0.00 : 9c83: 4c 89 ee mov %r13,%rsi 0.00 : 9c86: 89 4c 24 20 mov %ecx,0x20(%rsp) 1.19 : 9c8a: 48 8b 4d 18 mov 0x18(%rbp),%rcx 0.00 : 9c8e: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 1.19 : 9c93: 8b 4d 10 mov 0x10(%rbp),%ecx 0.00 : 9c96: 89 4c 24 10 mov %ecx,0x10(%rsp) 1.19 : 9c9a: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 9ca1: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 9ca5: 4c 89 e2 mov %r12,%rdx 0.00 : 9ca8: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 9cad: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 9cb4: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 9cbb: 48 8b 08 mov (%rax),%rcx 0.00 : 9cbe: e8 fd f5 ff ff callq 92c0 0.00 : 9cc3: 85 c0 test %eax,%eax 0.00 : 9cc5: 0f 8f 65 01 00 00 jg 9e30 <_dl_lookup_symbol_x+0x2c0> 0.00 : 9ccb: a9 00 00 00 80 test $0x80000000,%eax 0.00 : 9cd0: 74 8e je 9c60 <_dl_lookup_symbol_x+0xf0> 0.00 : 9cd2: 48 83 7d 18 00 cmpq $0x0,0x18(%rbp) 0.00 : 9cd7: 75 87 jne 9c60 <_dl_lookup_symbol_x+0xf0> 0.00 : 9cd9: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : 9ce0: 00 0.00 : 9ce1: 0f 84 e0 06 00 00 je a3c7 <_dl_lookup_symbol_x+0x857> 0.00 : 9ce7: 4d 85 ff test %r15,%r15 0.00 : 9cea: 48 c7 85 50 ff ff ff movq $0x0,-0xb0(%rbp) 0.00 : 9cf1: 00 00 00 00 0.00 : 9cf5: 74 0b je 9d02 <_dl_lookup_symbol_x+0x192> 0.00 : 9cf7: 4d 8b 7f 08 mov 0x8(%r15),%r15 0.00 : 9cfb: 4c 89 bd 50 ff ff ff mov %r15,-0xb0(%rbp) 0.00 : 9d02: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : 9d09: 83 f8 fe cmp $0xfffffffe,%eax 0.00 : 9d0c: 48 8d 05 e4 fe 00 00 lea 0xfee4(%rip),%rax # 19bf7 <__PRETTY_FUNCTION__.12287+0x96> 0.00 : 9d13: 48 8d 1d f3 fe 00 00 lea 0xfef3(%rip),%rbx # 19c0d <__PRETTY_FUNCTION__.12287+0xac> 0.00 : 9d1a: 4c 8d ad 70 ff ff ff lea -0x90(%rbp),%r13 0.00 : 9d21: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 9d27: 48 8b 0a mov (%rdx),%rcx 0.00 : 9d2a: 48 8b 72 10 mov 0x10(%rdx),%rsi 0.00 : 9d2e: 48 8d 15 a8 fa 00 00 lea 0xfaa8(%rip),%rdx # 197dd 0.00 : 9d35: 48 89 9d 70 ff ff ff mov %rbx,-0x90(%rbp) 0.00 : 9d3c: 48 8d 1d d2 fe 00 00 lea 0xfed2(%rip),%rbx # 19c15 <__PRETTY_FUNCTION__.12287+0xb4> 0.00 : 9d43: 4d 8d 75 40 lea 0x40(%r13),%r14 0.00 : 9d47: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 9d4b: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 9d52: 48 89 4d 88 mov %rcx,-0x78(%rbp) 0.00 : 9d56: 48 8d 0d d9 fe 00 00 lea 0xfed9(%rip),%rcx # 19c36 <__PRETTY_FUNCTION__.12287+0xd5> 0.00 : 9d5d: 48 89 5d 80 mov %rbx,-0x80(%rbp) 0.00 : 9d61: 48 89 75 98 mov %rsi,-0x68(%rbp) 0.00 : 9d65: 48 89 55 a8 mov %rdx,-0x58(%rbp) 0.00 : 9d69: 4c 89 eb mov %r13,%rbx 0.00 : 9d6c: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 9d73: 48 8d 05 a6 fe 00 00 lea 0xfea6(%rip),%rax # 19c20 <__PRETTY_FUNCTION__.12287+0xbf> 0.00 : 9d7a: 48 89 4d a0 mov %rcx,-0x60(%rbp) 0.00 : 9d7e: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 9d82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9d88: 48 8b 3b mov (%rbx),%rdi 0.00 : 9d8b: 48 83 c3 08 add $0x8,%rbx 0.00 : 9d8f: e8 dc c9 00 00 callq 16770 <__GI_strlen> 0.00 : 9d94: 49 01 c4 add %rax,%r12 0.00 : 9d97: 4c 39 f3 cmp %r14,%rbx 0.00 : 9d9a: 75 ec jne 9d88 <_dl_lookup_symbol_x+0x218> 0.00 : 9d9c: 49 8d 44 24 1e lea 0x1e(%r12),%rax 0.00 : 9da1: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 9da5: 48 29 c4 sub %rax,%rsp 0.00 : 9da8: 4c 8d 64 24 3f lea 0x3f(%rsp),%r12 0.00 : 9dad: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 9db1: 4c 89 e7 mov %r12,%rdi 0.00 : 9db4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9db8: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 9dbc: 49 83 c5 08 add $0x8,%r13 0.00 : 9dc0: e8 4b d4 00 00 callq 17210 <__stpcpy> 0.00 : 9dc5: 49 39 dd cmp %rbx,%r13 0.00 : 9dc8: 48 89 c7 mov %rax,%rdi 0.00 : 9dcb: 75 eb jne 9db8 <_dl_lookup_symbol_x+0x248> 0.00 : 9dcd: 48 8b 9d 50 ff ff ff mov -0xb0(%rbp),%rbx 0.00 : 9dd4: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 9dd7: 75 1f jne 9df8 <_dl_lookup_symbol_x+0x288> 0.00 : 9dd9: 48 8b 05 28 4e 21 00 mov 0x214e28(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 9de0: 48 8d 15 ab f7 00 00 lea 0xf7ab(%rip),%rdx # 19592 0.00 : 9de7: 48 8b 00 mov (%rax),%rax 0.00 : 9dea: 48 85 c0 test %rax,%rax 0.00 : 9ded: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 9df1: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 9df8: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 9dff: 48 8d 15 4a fe 00 00 lea 0xfe4a(%rip),%rdx # 19c50 <__PRETTY_FUNCTION__.12287+0xef> 0.00 : 9e06: 4c 89 e1 mov %r12,%rcx 0.00 : 9e09: 31 ff xor %edi,%edi 0.00 : 9e0b: e8 90 42 00 00 callq e0a0 <_dl_signal_cerror> 0.00 : 9e10: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 9e17: 31 c0 xor %eax,%eax 0.00 : 9e19: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 9e20: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 9e24: 5b pop %rbx 0.00 : 9e25: 41 5c pop %r12 0.00 : 9e27: 41 5d pop %r13 0.00 : 9e29: 41 5e pop %r14 0.00 : 9e2b: 41 5f pop %r15 0.00 : 9e2d: c9 leaveq 0.00 : 9e2e: c3 retq 0.00 : 9e2f: 90 nop 1.19 : 9e30: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 1.19 : 9e35: 0f 84 52 05 00 00 je a38d <_dl_lookup_symbol_x+0x81d> 0.00 : 9e3b: 48 8b 9d 38 ff ff ff mov -0xc8(%rbp),%rbx 0.00 : 9e42: 48 8b 13 mov (%rbx),%rdx 0.00 : 9e45: 48 85 d2 test %rdx,%rdx 0.00 : 9e48: 74 0c je 9e56 <_dl_lookup_symbol_x+0x2e6> 0.00 : 9e4a: 0f b6 42 05 movzbl 0x5(%rdx),%eax 0.00 : 9e4e: 83 e0 03 and $0x3,%eax 0.00 : 9e51: 83 f8 03 cmp $0x3,%eax 0.00 : 9e54: 74 62 je 9eb8 <_dl_lookup_symbol_x+0x348> 0.00 : 9e56: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 9e5a: 45 31 ed xor %r13d,%r13d 0.00 : 9e5d: 0f b6 83 14 03 00 00 movzbl 0x314(%rbx),%eax 0.00 : 9e64: 83 e0 03 and $0x3,%eax 1.19 : 9e67: 3c 02 cmp $0x2,%al 0.00 : 9e69: 0f 84 a3 01 00 00 je a012 <_dl_lookup_symbol_x+0x4a2> 0.00 : 9e6f: 44 8b 8b d4 03 00 00 mov 0x3d4(%rbx),%r9d 0.00 : 9e76: 45 85 c9 test %r9d,%r9d 0.00 : 9e79: 0f 84 29 03 00 00 je a1a8 <_dl_lookup_symbol_x+0x638> 0.00 : 9e7f: 8b 05 9b 4d 21 00 mov 0x214d9b(%rip),%eax # 21ec20 <_rtld_global_ro> 2.38 : 9e85: a9 04 04 00 00 test $0x404,%eax 0.00 : 9e8a: 0f 85 27 03 00 00 jne a1b7 <_dl_lookup_symbol_x+0x647> 0.00 : 9e90: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 9e94: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 9e9b: 48 89 10 mov %rdx,(%rax) 1.19 : 9e9e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 9ea2: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 9ea6: 5b pop %rbx 0.00 : 9ea7: 41 5c pop %r12 0.00 : 9ea9: 41 5d pop %r13 0.00 : 9eab: 41 5e pop %r14 0.00 : 9ead: 41 5f pop %r15 0.00 : 9eaf: c9 leaveq 2.38 : 9eb0: c3 retq 0.00 : 9eb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 9eb8: 83 bd 24 ff ff ff 01 cmpl $0x1,-0xdc(%rbp) 0.00 : 9ebf: 0f 84 af 05 00 00 je a474 <_dl_lookup_symbol_x+0x904> 0.00 : 9ec5: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 9ecc: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : 9ed3: 00 00 00 00 0.00 : 9ed7: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : 9ede: 00 00 00 00 0.00 : 9ee2: 48 8b 02 mov (%rdx),%rax 0.00 : 9ee5: 48 85 c0 test %rax,%rax 0.00 : 9ee8: 0f 84 87 00 00 00 je 9f75 <_dl_lookup_symbol_x+0x405> 0.00 : 9eee: 48 89 d3 mov %rdx,%rbx 0.00 : 9ef1: 4c 8d 65 c8 lea -0x38(%rbp),%r12 0.00 : 9ef5: 4c 8d b5 70 ff ff ff lea -0x90(%rbp),%r14 0.00 : 9efc: eb 19 jmp 9f17 <_dl_lookup_symbol_x+0x3a7> 0.00 : 9efe: 66 90 xchg %ax,%ax 0.00 : 9f00: 48 83 c3 08 add $0x8,%rbx 0.00 : 9f04: 48 8b 03 mov (%rbx),%rax 0.00 : 9f07: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 9f0e: 00 00 00 00 0.00 : 9f12: 48 85 c0 test %rax,%rax 0.00 : 9f15: 74 5e je 9f75 <_dl_lookup_symbol_x+0x405> 0.00 : 9f17: 48 c7 44 24 28 00 00 movq $0x0,0x28(%rsp) 0.00 : 9f1e: 00 00 0.00 : 9f20: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 9f27: 00 0.00 : 9f28: 49 89 c1 mov %rax,%r9 0.00 : 9f2b: 48 8b 4d 18 mov 0x18(%rbp),%rcx 0.00 : 9f2f: 4d 89 f0 mov %r14,%r8 0.00 : 9f32: 4c 89 ee mov %r13,%rsi 0.00 : 9f35: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 9f3a: 8b 55 10 mov 0x10(%rbp),%edx 0.00 : 9f3d: 89 54 24 10 mov %edx,0x10(%rsp) 0.00 : 9f41: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 9f48: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 9f4d: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 9f54: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 9f58: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 9f5f: 4c 89 e2 mov %r12,%rdx 0.00 : 9f62: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 9f69: 48 8b 08 mov (%rax),%rcx 0.00 : 9f6c: e8 4f f3 ff ff callq 92c0 0.00 : 9f71: 85 c0 test %eax,%eax 0.00 : 9f73: 74 8b je 9f00 <_dl_lookup_symbol_x+0x390> 0.00 : 9f75: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 9f7c: 00 0.00 : 9f7d: 0f 84 29 06 00 00 je a5ac <_dl_lookup_symbol_x+0xa3c> 0.00 : 9f83: 4c 39 bd 78 ff ff ff cmp %r15,-0x88(%rbp) 0.00 : 9f8a: 0f 84 1c 06 00 00 je a5ac <_dl_lookup_symbol_x+0xa3c> 0.00 : 9f90: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 9f97: 4c 89 fb mov %r15,%rbx 0.00 : 9f9a: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 9fa0: 48 8b 02 mov (%rdx),%rax 0.00 : 9fa3: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : 9fa7: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 9fab: e9 ad fe ff ff jmpq 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : 9fb0: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 9fb7: 48 8b 5d 18 mov 0x18(%rbp),%rbx 0.00 : 9fbb: 48 8b 01 mov (%rcx),%rax 0.00 : 9fbe: 48 8b 10 mov (%rax),%rdx 0.00 : 9fc1: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 9fc8: 00 00 00 00 0.00 : 9fcc: 48 39 1a cmp %rbx,(%rdx) 0.00 : 9fcf: 0f 84 66 fc ff ff je 9c3b <_dl_lookup_symbol_x+0xcb> 0.00 : 9fd5: 48 83 85 48 ff ff ff addq $0x1,-0xb8(%rbp) 0.00 : 9fdc: 01 0.00 : 9fdd: 48 8b 5d 18 mov 0x18(%rbp),%rbx 0.00 : 9fe1: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 9fe8: 48 39 1c ca cmp %rbx,(%rdx,%rcx,8) 0.00 : 9fec: 75 e7 jne 9fd5 <_dl_lookup_symbol_x+0x465> 0.00 : 9fee: e9 48 fc ff ff jmpq 9c3b <_dl_lookup_symbol_x+0xcb> 0.00 : 9ff3: 48 8d 0d 96 27 01 00 lea 0x12796(%rip),%rcx # 1c790 <__PRETTY_FUNCTION__.12641> 0.00 : 9ffa: 48 8d 35 d3 fb 00 00 lea 0xfbd3(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : a001: 48 8d 3d 68 19 01 00 lea 0x11968(%rip),%rdi # 1b970 <__PRETTY_FUNCTION__.3644+0x15ff> 0.00 : a008: ba d8 02 00 00 mov $0x2d8,%edx 0.00 : a00d: e8 5e ad 00 00 callq 14d70 <__GI___assert_fail> 0.00 : a012: f6 45 10 01 testb $0x1,0x10(%rbp) 0.00 : a016: 0f 84 53 fe ff ff je 9e6f <_dl_lookup_symbol_x+0x2ff> 0.00 : a01c: 49 39 df cmp %rbx,%r15 0.00 : a01f: 0f 84 79 06 00 00 je a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a025: f6 83 dc 03 00 00 08 testb $0x8,0x3dc(%rbx) 0.00 : a02c: 0f 85 6c 06 00 00 jne a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a032: 4d 8b 8f c8 03 00 00 mov 0x3c8(%r15),%r9 0.00 : a039: 4d 8b 87 b8 03 00 00 mov 0x3b8(%r15),%r8 0.00 : a040: 4d 85 c0 test %r8,%r8 0.00 : a043: 74 32 je a077 <_dl_lookup_symbol_x+0x507> 0.00 : a045: 49 8b 00 mov (%r8),%rax 0.00 : a048: 48 85 c0 test %rax,%rax 0.00 : a04b: 74 2a je a077 <_dl_lookup_symbol_x+0x507> 0.00 : a04d: 31 d2 xor %edx,%edx 0.00 : a04f: 48 39 c3 cmp %rax,%rbx 0.00 : a052: 75 15 jne a069 <_dl_lookup_symbol_x+0x4f9> 0.00 : a054: e9 45 06 00 00 jmpq a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a059: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : a060: 48 39 c3 cmp %rax,%rbx 0.00 : a063: 0f 84 35 06 00 00 je a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a069: 83 c2 01 add $0x1,%edx 0.00 : a06c: 89 d0 mov %edx,%eax 0.00 : a06e: 49 8b 04 c0 mov (%r8,%rax,8),%rax 0.00 : a072: 48 85 c0 test %rax,%rax 0.00 : a075: 75 e9 jne a060 <_dl_lookup_symbol_x+0x4f0> 0.00 : a077: 45 31 f6 xor %r14d,%r14d 0.00 : a07a: 4d 85 c9 test %r9,%r9 0.00 : a07d: 74 2f je a0ae <_dl_lookup_symbol_x+0x53e> 0.00 : a07f: 45 8b 31 mov (%r9),%r14d 0.00 : a082: 45 85 f6 test %r14d,%r14d 0.00 : a085: 74 27 je a0ae <_dl_lookup_symbol_x+0x53e> 0.00 : a087: 31 d2 xor %edx,%edx 0.00 : a089: 49 3b 59 08 cmp 0x8(%r9),%rbx 0.00 : a08d: 75 17 jne a0a6 <_dl_lookup_symbol_x+0x536> 0.00 : a08f: 90 nop 0.00 : a090: e9 09 06 00 00 jmpq a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a095: 0f 1f 00 nopl (%rax) 0.00 : a098: 89 d0 mov %edx,%eax 0.00 : a09a: 49 3b 5c c1 08 cmp 0x8(%r9,%rax,8),%rbx 0.00 : a09f: 90 nop 0.00 : a0a0: 0f 84 f8 05 00 00 je a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a0a6: 83 c2 01 add $0x1,%edx 0.00 : a0a9: 41 39 d6 cmp %edx,%r14d 0.00 : a0ac: 77 ea ja a098 <_dl_lookup_symbol_x+0x528> 0.00 : a0ae: 8b 45 10 mov 0x10(%rbp),%eax 0.00 : a0b1: 48 8b 8b 68 04 00 00 mov 0x468(%rbx),%rcx 0.00 : a0b8: 83 e0 04 and $0x4,%eax 0.00 : a0bb: 48 89 8d 60 ff ff ff mov %rcx,-0xa0(%rbp) 0.00 : a0c2: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : a0c9: 0f 85 42 06 00 00 jne a711 <_dl_lookup_symbol_x+0xba1> 0.00 : a0cf: 48 8d 3d 92 58 21 00 lea 0x215892(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a0d6: 49 89 dc mov %rbx,%r12 0.00 : a0d9: ff 15 61 5e 21 00 callq *0x215e61(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : a0df: 45 89 f0 mov %r14d,%r8d 0.00 : a0e2: 49 8b 47 30 mov 0x30(%r15),%rax 0.00 : a0e6: 48 8d 15 73 4f 21 00 lea 0x214f73(%rip),%rdx # 21f060 <_rtld_global> 0.00 : a0ed: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : a0f1: 48 c1 e0 04 shl $0x4,%rax 0.00 : a0f5: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : a0f9: 48 85 c0 test %rax,%rax 0.00 : a0fc: 75 0b jne a109 <_dl_lookup_symbol_x+0x599> 0.00 : a0fe: eb 2c jmp a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a100: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : a104: 48 85 c0 test %rax,%rax 0.00 : a107: 74 23 je a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a109: 4c 39 e0 cmp %r12,%rax 0.00 : a10c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : a110: 75 ee jne a100 <_dl_lookup_symbol_x+0x590> 0.00 : a112: 48 85 c0 test %rax,%rax 0.00 : a115: 74 15 je a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a117: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : a11e: 49 3b 94 24 68 04 00 cmp 0x468(%r12),%rdx 0.00 : a125: 00 0.00 : a126: 0f 84 b5 06 00 00 je a7e1 <_dl_lookup_symbol_x+0xc71> 0.00 : a12c: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : a131: 48 8d 3d 30 58 21 00 lea 0x215830(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a138: ff 15 0a 5e 21 00 callq *0x215e0a(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : a13e: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : a145: 00 0.00 : a146: 0f 85 84 06 00 00 jne a7d0 <_dl_lookup_symbol_x+0xc60> 0.00 : a14c: 83 c3 01 add $0x1,%ebx 0.00 : a14f: 0f 85 49 05 00 00 jne a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a155: f6 45 10 04 testb $0x4,0x10(%rbp) 0.00 : a159: 74 0e je a169 <_dl_lookup_symbol_x+0x5f9> 0.00 : a15b: 49 8b 8f 80 03 00 00 mov 0x380(%r15),%rcx 0.00 : a162: 48 89 8d 30 ff ff ff mov %rcx,-0xd0(%rbp) 0.00 : a169: 48 8b 5d 18 mov 0x18(%rbp),%rbx 0.00 : a16d: 4c 89 fe mov %r15,%rsi 0.00 : a170: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : a175: 8b 45 10 mov 0x10(%rbp),%eax 0.00 : a178: 89 04 24 mov %eax,(%rsp) 0.00 : a17b: 44 8b 8d 24 ff ff ff mov -0xdc(%rbp),%r9d 0.00 : a182: 4c 8b 85 28 ff ff ff mov -0xd8(%rbp),%r8 0.00 : a189: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : a190: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : a197: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : a19e: e8 cd f9 ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : a1a3: e9 fa fc ff ff jmpq 9ea2 <_dl_lookup_symbol_x+0x332> 0.00 : a1a8: c7 83 d4 03 00 00 01 movl $0x1,0x3d4(%rbx) 0.00 : a1af: 00 00 00 1.19 : a1b2: e9 c8 fc ff ff jmpq 9e7f <_dl_lookup_symbol_x+0x30f> 0.00 : a1b7: a8 04 test $0x4,%al 0.00 : a1b9: 49 8b 77 08 mov 0x8(%r15),%rsi 0.00 : a1bd: 0f 84 96 00 00 00 je a259 <_dl_lookup_symbol_x+0x6e9> 0.00 : a1c3: 48 8d 05 b2 fa 00 00 lea 0xfab2(%rip),%rax # 19c7c <__PRETTY_FUNCTION__.12287+0x11b> 0.00 : a1ca: 4c 8d 0d a4 fa 00 00 lea 0xfaa4(%rip),%r9 # 19c75 <__PRETTY_FUNCTION__.12287+0x114> 0.00 : a1d1: 45 85 ed test %r13d,%r13d 0.00 : a1d4: 4c 0f 45 c8 cmovne %rax,%r9 0.00 : a1d8: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : a1dc: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : a1e0: 4c 8b 40 30 mov 0x30(%rax),%r8 0.00 : a1e4: 80 39 00 cmpb $0x0,(%rcx) 0.00 : a1e7: 75 0a jne a1f3 <_dl_lookup_symbol_x+0x683> 0.00 : a1e9: 48 8b 05 18 4a 21 00 mov 0x214a18(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a1f0: 48 8b 08 mov (%rax),%rcx 0.00 : a1f3: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : a1f6: 49 8b 57 30 mov 0x30(%r15),%rdx 0.00 : a1fa: 75 18 jne a214 <_dl_lookup_symbol_x+0x6a4> 0.00 : a1fc: 48 8b 05 05 4a 21 00 mov 0x214a05(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a203: 48 8d 35 88 f3 00 00 lea 0xf388(%rip),%rsi # 19592 0.00 : a20a: 48 8b 00 mov (%rax),%rax 0.00 : a20d: 48 85 c0 test %rax,%rax 0.00 : a210: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : a214: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : a21b: 48 8d 3d ee 17 01 00 lea 0x117ee(%rip),%rdi # 1ba10 <__PRETTY_FUNCTION__.3644+0x169f> 0.00 : a222: 31 c0 xor %eax,%eax 0.00 : a224: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : a228: e8 23 51 00 00 callq f350 <_dl_debug_printf> 0.00 : a22d: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : a234: 00 0.00 : a235: 0f 84 a9 04 00 00 je a6e4 <_dl_lookup_symbol_x+0xb74> 0.00 : a23b: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : a242: 48 8d 3d 3d fa 00 00 lea 0xfa3d(%rip),%rdi # 19c86 <__PRETTY_FUNCTION__.12287+0x125> 0.00 : a249: 48 8b 30 mov (%rax),%rsi 0.00 : a24c: 31 c0 xor %eax,%eax 0.00 : a24e: e8 4d 50 00 00 callq f2a0 <_dl_debug_printf_c> 0.00 : a253: 8b 05 c7 49 21 00 mov 0x2149c7(%rip),%eax # 21ec20 <_rtld_global_ro> 0.00 : a259: f6 c4 04 test $0x4,%ah 0.00 : a25c: 0f 84 2e fc ff ff je 9e90 <_dl_lookup_symbol_x+0x320> 0.00 : a262: 48 8b 15 4f 4a 21 00 mov 0x214a4f(%rip),%rdx # 21ecb8 <_rtld_global_ro+0x98> 0.00 : a269: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : a270: 00 00 00 00 0.00 : a274: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : a27b: 00 00 00 00 0.00 : a27f: 48 85 d2 test %rdx,%rdx 0.00 : a282: 0f 84 33 03 00 00 je a5bb <_dl_lookup_symbol_x+0xa4b> 0.00 : a288: 48 8b 05 d1 4d 21 00 mov 0x214dd1(%rip),%rax # 21f060 <_rtld_global> 0.00 : a28f: 48 39 c2 cmp %rax,%rdx 0.00 : a292: 0f 84 2a 03 00 00 je a5c2 <_dl_lookup_symbol_x+0xa52> 0.00 : a298: 31 f6 xor %esi,%esi 0.00 : a29a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : a29e: 48 85 d2 test %rdx,%rdx 0.00 : a2a1: 74 29 je a2cc <_dl_lookup_symbol_x+0x75c> 0.00 : a2a3: 0f b6 4a 04 movzbl 0x4(%rdx),%ecx 0.00 : a2a7: 83 e1 0f and $0xf,%ecx 0.00 : a2aa: 83 f9 06 cmp $0x6,%ecx 0.00 : a2ad: 0f 84 f4 03 00 00 je a6a7 <_dl_lookup_symbol_x+0xb37> 0.00 : a2b3: 8b 85 24 ff ff ff mov -0xdc(%rbp),%eax 0.00 : a2b9: 83 c8 08 or $0x8,%eax 0.00 : a2bc: 83 f9 0a cmp $0xa,%ecx 0.00 : a2bf: 0f 45 85 24 ff ff ff cmovne -0xdc(%rbp),%eax 0.00 : a2c6: 89 85 24 ff ff ff mov %eax,-0xdc(%rbp) 0.00 : a2cc: 85 f6 test %esi,%esi 0.00 : a2ce: 75 1e jne a2ee <_dl_lookup_symbol_x+0x77e> 0.00 : a2d0: 48 8b 05 e1 49 21 00 mov 0x2149e1(%rip),%rax # 21ecb8 <_rtld_global_ro+0x98> 0.00 : a2d7: 49 39 c7 cmp %rax,%r15 0.00 : a2da: 74 12 je a2ee <_dl_lookup_symbol_x+0x77e> 0.00 : a2dc: 48 85 c0 test %rax,%rax 0.00 : a2df: 74 0d je a2ee <_dl_lookup_symbol_x+0x77e> 0.00 : a2e1: 83 bd 24 ff ff ff 03 cmpl $0x3,-0xdc(%rbp) 0.00 : a2e8: 0f 8e a6 fb ff ff jle 9e94 <_dl_lookup_symbol_x+0x324> 0.00 : a2ee: 31 ff xor %edi,%edi 0.00 : a2f0: 31 c9 xor %ecx,%ecx 0.00 : a2f2: 48 85 d2 test %rdx,%rdx 0.00 : a2f5: 74 0f je a306 <_dl_lookup_symbol_x+0x796> 0.00 : a2f7: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : a2fb: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : a2ff: 48 8b b8 40 03 00 00 mov 0x340(%rax),%rdi 0.00 : a306: 48 8b 9d 38 ff ff ff mov -0xc8(%rbp),%rbx 0.00 : a30d: 49 8b 97 40 03 00 00 mov 0x340(%r15),%rdx 0.00 : a314: 48 8b 03 mov (%rbx),%rax 0.00 : a317: 48 29 d0 sub %rdx,%rax 0.00 : a31a: 85 f6 test %esi,%esi 0.00 : a31c: 0f 85 c4 00 00 00 jne a3e6 <_dl_lookup_symbol_x+0x876> 0.00 : a322: 49 89 d0 mov %rdx,%r8 0.00 : a325: 48 8d 35 1c 17 01 00 lea 0x1171c(%rip),%rsi # 1ba48 <__PRETTY_FUNCTION__.3644+0x16d7> 0.00 : a32c: 48 8d 15 5a f9 00 00 lea 0xf95a(%rip),%rdx # 19c8d <__PRETTY_FUNCTION__.12287+0x12c> 0.00 : a333: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : a338: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : a33d: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : a343: 48 89 04 24 mov %rax,(%rsp) 0.00 : a347: c7 44 24 18 10 00 00 movl $0x10,0x18(%rsp) 0.00 : a34e: 00 0.00 : a34f: b9 10 00 00 00 mov $0x10,%ecx 0.00 : a354: c7 44 24 08 10 00 00 movl $0x10,0x8(%rsp) 0.00 : a35b: 00 0.00 : a35c: bf 01 00 00 00 mov $0x1,%edi 0.00 : a361: 31 c0 xor %eax,%eax 0.00 : a363: e8 98 4e 00 00 callq f200 <_dl_dprintf> 0.00 : a368: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : a36f: 8b 95 24 ff ff ff mov -0xdc(%rbp),%edx 0.00 : a375: 48 8d 35 2b f9 00 00 lea 0xf92b(%rip),%rsi # 19ca7 <__PRETTY_FUNCTION__.12287+0x146> 0.00 : a37c: bf 01 00 00 00 mov $0x1,%edi 0.00 : a381: 31 c0 xor %eax,%eax 0.00 : a383: e8 78 4e 00 00 callq f200 <_dl_dprintf> 0.00 : a388: e9 03 fb ff ff jmpq 9e90 <_dl_lookup_symbol_x+0x320> 0.00 : a38d: 48 8b 9d 38 ff ff ff mov -0xc8(%rbp),%rbx 0.00 : a394: 48 8b 03 mov (%rbx),%rax 0.00 : a397: 48 85 c0 test %rax,%rax 0.00 : a39a: 74 0b je a3a7 <_dl_lookup_symbol_x+0x837> 0.00 : a39c: 0f b6 40 04 movzbl 0x4(%rax),%eax 0.00 : a3a0: c0 e8 04 shr $0x4,%al 0.00 : a3a3: 3c 02 cmp $0x2,%al 0.00 : a3a5: 74 0b je a3b2 <_dl_lookup_symbol_x+0x842> 0.00 : a3a7: 48 83 7d 18 00 cmpq $0x0,0x18(%rbp) 0.00 : a3ac: 0f 84 eb 00 00 00 je a49d <_dl_lookup_symbol_x+0x92d> 0.00 : a3b2: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : a3b9: 31 c0 xor %eax,%eax 0.00 : a3bb: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : a3c2: e9 db fa ff ff jmpq 9ea2 <_dl_lookup_symbol_x+0x332> 0.00 : a3c7: 48 8d 0d c2 23 01 00 lea 0x123c2(%rip),%rcx # 1c790 <__PRETTY_FUNCTION__.12641> 0.00 : a3ce: 48 8d 35 ff f7 00 00 lea 0xf7ff(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : a3d5: 48 8d 3d 04 f8 00 00 lea 0xf804(%rip),%rdi # 19be0 <__PRETTY_FUNCTION__.12287+0x7f> 0.00 : a3dc: ba ee 02 00 00 mov $0x2ee,%edx 0.00 : a3e1: e8 8a a9 00 00 callq 14d70 <__GI___assert_fail> 0.00 : a3e6: 49 89 d0 mov %rdx,%r8 0.00 : a3e9: 48 8d 35 58 16 01 00 lea 0x11658(%rip),%rsi # 1ba48 <__PRETTY_FUNCTION__.3644+0x16d7> 0.00 : a3f0: 48 8d 15 b8 f8 00 00 lea 0xf8b8(%rip),%rdx # 19caf <__PRETTY_FUNCTION__.12287+0x14e> 0.00 : a3f7: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : a3fc: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : a401: b9 10 00 00 00 mov $0x10,%ecx 0.00 : a406: 48 89 04 24 mov %rax,(%rsp) 0.00 : a40a: c7 44 24 18 10 00 00 movl $0x10,0x18(%rsp) 0.00 : a411: 00 0.00 : a412: 31 c0 xor %eax,%eax 0.00 : a414: c7 44 24 08 10 00 00 movl $0x10,0x8(%rsp) 0.00 : a41b: 00 0.00 : a41c: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : a422: bf 01 00 00 00 mov $0x1,%edi 0.00 : a427: e8 d4 4d 00 00 callq f200 <_dl_dprintf> 0.00 : a42c: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : a433: 31 c9 xor %ecx,%ecx 0.00 : a435: 31 d2 xor %edx,%edx 0.00 : a437: 48 85 c0 test %rax,%rax 0.00 : a43a: 74 12 je a44e <_dl_lookup_symbol_x+0x8de> 0.00 : a43c: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : a440: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : a447: 48 8b 88 40 03 00 00 mov 0x340(%rax),%rcx 0.00 : a44e: 48 8d 35 3f f8 00 00 lea 0xf83f(%rip),%rsi # 19c94 <__PRETTY_FUNCTION__.12287+0x133> 0.00 : a455: 49 89 d1 mov %rdx,%r9 0.00 : a458: 41 b8 10 00 00 00 mov $0x10,%r8d 0.00 : a45e: ba 10 00 00 00 mov $0x10,%edx 0.00 : a463: bf 01 00 00 00 mov $0x1,%edi 0.00 : a468: 31 c0 xor %eax,%eax 0.00 : a46a: e8 91 4d 00 00 callq f200 <_dl_dprintf> 0.00 : a46f: e9 f4 fe ff ff jmpq a368 <_dl_lookup_symbol_x+0x7f8> 0.00 : a474: 4c 39 7d b8 cmp %r15,-0x48(%rbp) 0.00 : a478: 4c 89 fb mov %r15,%rbx 0.00 : a47b: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : a481: 0f 84 d6 f9 ff ff je 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : a487: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : a48b: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : a48f: 4c 89 fb mov %r15,%rbx 0.00 : a492: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : a498: e9 c0 f9 ff ff jmpq 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : a49d: 48 8d 05 39 f3 00 00 lea 0xf339(%rip),%rax # 197dd 0.00 : a4a4: 4d 85 ff test %r15,%r15 0.00 : a4a7: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 0.00 : a4ae: 74 0b je a4bb <_dl_lookup_symbol_x+0x94b> 0.00 : a4b0: 4d 8b 7f 08 mov 0x8(%r15),%r15 0.00 : a4b4: 4c 89 bd 58 ff ff ff mov %r15,-0xa8(%rbp) 0.00 : a4bb: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : a4c2: 00 0.00 : a4c3: 0f 84 34 02 00 00 je a6fd <_dl_lookup_symbol_x+0xb8d> 0.00 : a4c9: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : a4d0: 4c 8b 2a mov (%rdx),%r13 0.00 : a4d3: 4d 85 ed test %r13,%r13 0.00 : a4d6: 0f 84 ed 01 00 00 je a6c9 <_dl_lookup_symbol_x+0xb59> 0.00 : a4dc: 4c 89 ef mov %r13,%rdi 0.00 : a4df: 4c 8d 35 2f f7 00 00 lea 0xf72f(%rip),%r14 # 19c15 <__PRETTY_FUNCTION__.12287+0xb4> 0.00 : a4e6: bb 0a 00 00 00 mov $0xa,%ebx 0.00 : a4eb: e8 80 c2 00 00 callq 16770 <__GI_strlen> 0.00 : a4f0: 49 89 c4 mov %rax,%r12 0.00 : a4f3: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : a4fa: e8 71 c2 00 00 callq 16770 <__GI_strlen> 0.00 : a4ff: 48 8d 44 03 13 lea 0x13(%rbx,%rax,1),%rax 0.00 : a504: 49 bb 75 6e 64 65 66 movabs $0x656e696665646e75,%r11 0.00 : a50b: 69 6e 65 0.00 : a50e: 49 ba 64 20 73 79 6d movabs $0x6c6f626d79732064,%r10 0.00 : a515: 62 6f 6c 0.00 : a518: 4a 8d 44 20 1e lea 0x1e(%rax,%r12,1),%rax 0.00 : a51d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : a521: 48 29 c4 sub %rax,%rsp 0.00 : a524: 48 8d 5c 24 3f lea 0x3f(%rsp),%rbx 0.00 : a529: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : a52d: 4c 89 1b mov %r11,(%rbx) 0.00 : a530: 4c 89 53 08 mov %r10,0x8(%rbx) 0.00 : a534: 48 8d 7b 12 lea 0x12(%rbx),%rdi 0.00 : a538: 66 c7 43 10 3a 20 movw $0x203a,0x10(%rbx) 0.00 : a53e: c6 43 12 00 movb $0x0,0x12(%rbx) 0.00 : a542: 48 8b b5 40 ff ff ff mov -0xc0(%rbp),%rsi 0.00 : a549: e8 c2 cc 00 00 callq 17210 <__stpcpy> 0.00 : a54e: 4c 89 f6 mov %r14,%rsi 0.00 : a551: 48 89 c7 mov %rax,%rdi 0.00 : a554: e8 b7 cc 00 00 callq 17210 <__stpcpy> 0.00 : a559: 4c 89 ee mov %r13,%rsi 0.00 : a55c: 48 89 c7 mov %rax,%rdi 0.00 : a55f: e8 2c c1 00 00 callq 16690 0.00 : a564: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : a56b: 80 39 00 cmpb $0x0,(%rcx) 0.00 : a56e: 75 1f jne a58f <_dl_lookup_symbol_x+0xa1f> 0.00 : a570: 48 8b 05 91 46 21 00 mov 0x214691(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a577: 48 8d 15 14 f0 00 00 lea 0xf014(%rip),%rdx # 19592 0.00 : a57e: 48 8b 00 mov (%rax),%rax 0.00 : a581: 48 85 c0 test %rax,%rax 0.00 : a584: 48 0f 44 c2 cmove %rdx,%rax 0.00 : a588: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 0.00 : a58f: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : a596: 48 8d 15 c4 f6 00 00 lea 0xf6c4(%rip),%rdx # 19c61 <__PRETTY_FUNCTION__.12287+0x100> 0.00 : a59d: 48 89 d9 mov %rbx,%rcx 0.00 : a5a0: 31 ff xor %edi,%edi 0.00 : a5a2: e8 f9 3a 00 00 callq e0a0 <_dl_signal_cerror> 0.00 : a5a7: e9 06 fe ff ff jmpq a3b2 <_dl_lookup_symbol_x+0x842> 0.00 : a5ac: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : a5b0: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : a5b6: e9 a2 f8 ff ff jmpq 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : a5bb: 48 8b 05 9e 4a 21 00 mov 0x214a9e(%rip),%rax # 21f060 <_rtld_global> 0.00 : a5c2: 4c 39 f8 cmp %r15,%rax 0.00 : a5c5: 0f 84 cd fc ff ff je a298 <_dl_lookup_symbol_x+0x728> 0.00 : a5cb: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : a5d2: be 05 15 00 00 mov $0x1505,%esi 0.00 : a5d7: 0f b6 11 movzbl (%rcx),%edx 0.00 : a5da: 48 89 cf mov %rcx,%rdi 0.00 : a5dd: b9 05 15 00 00 mov $0x1505,%ecx 0.00 : a5e2: 84 d2 test %dl,%dl 0.00 : a5e4: 74 22 je a608 <_dl_lookup_symbol_x+0xa98> 0.00 : a5e6: 48 89 c8 mov %rcx,%rax 0.00 : a5e9: 0f b6 d2 movzbl %dl,%edx 0.00 : a5ec: 48 83 c7 01 add $0x1,%rdi 0.00 : a5f0: 48 c1 e0 05 shl $0x5,%rax 0.00 : a5f4: 48 01 c8 add %rcx,%rax 0.00 : a5f7: 48 8d 0c 02 lea (%rdx,%rax,1),%rcx 0.00 : a5fb: 0f b6 17 movzbl (%rdi),%edx 0.00 : a5fe: 84 d2 test %dl,%dl 0.00 : a600: 75 e4 jne a5e6 <_dl_lookup_symbol_x+0xa76> 0.00 : a602: 48 89 ce mov %rcx,%rsi 0.00 : a605: 83 e6 ff and $0xffffffff,%esi 0.00 : a608: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : a60e: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : a612: 4c 89 45 c0 mov %r8,-0x40(%rbp) 0.00 : a616: 48 8b 1d 8b 4a 21 00 mov 0x214a8b(%rip),%rbx # 21f0a8 <_rtld_global+0x48> 0.00 : a61d: 4c 8d 85 70 ff ff ff lea -0x90(%rbp),%r8 0.00 : a624: 48 c7 05 79 4a 21 00 movq $0x0,0x214a79(%rip) # 21f0a8 <_rtld_global+0x48> 0.00 : a62b: 00 00 00 00 0.00 : a62f: 4d 8b 8f 88 03 00 00 mov 0x388(%r15),%r9 0.00 : a636: 4c 89 7c 24 28 mov %r15,0x28(%rsp) 0.00 : a63b: 8b 85 24 ff ff ff mov -0xdc(%rbp),%eax 0.00 : a641: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : a648: 00 00 0.00 : a64a: c7 44 24 10 00 00 00 movl $0x0,0x10(%rsp) 0.00 : a651: 00 0.00 : a652: 89 44 24 20 mov %eax,0x20(%rsp) 0.00 : a656: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : a65d: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : a664: 00 0.00 : a665: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : a66a: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : a671: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : a678: 48 8b 08 mov (%rax),%rcx 0.00 : a67b: e8 40 ec ff ff callq 92c0 0.00 : a680: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : a684: 48 39 95 70 ff ff ff cmp %rdx,-0x90(%rbp) 0.00 : a68b: be 01 00 00 00 mov $0x1,%esi 0.00 : a690: 74 24 je a6b6 <_dl_lookup_symbol_x+0xb46> 0.00 : a692: 48 89 1d 0f 4a 21 00 mov %rbx,0x214a0f(%rip) # 21f0a8 <_rtld_global+0x48> 0.00 : a699: e9 fc fb ff ff jmpq a29a <_dl_lookup_symbol_x+0x72a> 0.00 : a69e: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : a6a2: e9 c8 f7 ff ff jmpq 9e6f <_dl_lookup_symbol_x+0x2ff> 0.00 : a6a7: c7 85 24 ff ff ff 04 movl $0x4,-0xdc(%rbp) 0.00 : a6ae: 00 00 00 0.00 : a6b1: e9 16 fc ff ff jmpq a2cc <_dl_lookup_symbol_x+0x75c> 0.00 : a6b6: 31 f6 xor %esi,%esi 0.00 : a6b8: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : a6bc: 48 39 8d 78 ff ff ff cmp %rcx,-0x88(%rbp) 0.00 : a6c3: 40 0f 95 c6 setne %sil 0.00 : a6c7: eb c9 jmp a692 <_dl_lookup_symbol_x+0xb22> 0.00 : a6c9: 4c 8d 2d 0d f1 00 00 lea 0xf10d(%rip),%r13 # 197dd 0.00 : a6d0: 4c 8d 35 3e f5 00 00 lea 0xf53e(%rip),%r14 # 19c15 <__PRETTY_FUNCTION__.12287+0xb4> 0.00 : a6d7: bb 0a 00 00 00 mov $0xa,%ebx 0.00 : a6dc: 45 31 e4 xor %r12d,%r12d 0.00 : a6df: e9 0f fe ff ff jmpq a4f3 <_dl_lookup_symbol_x+0x983> 0.00 : a6e4: 48 8d 3d f1 f0 00 00 lea 0xf0f1(%rip),%rdi # 197dc 0.00 : a6eb: 31 c0 xor %eax,%eax 0.00 : a6ed: e8 ae 4b 00 00 callq f2a0 <_dl_debug_printf_c> 0.00 : a6f2: 8b 05 28 45 21 00 mov 0x214528(%rip),%eax # 21ec20 <_rtld_global_ro> 0.00 : a6f8: e9 5c fb ff ff jmpq a259 <_dl_lookup_symbol_x+0x6e9> 0.00 : a6fd: 4c 8d 2d d9 f0 00 00 lea 0xf0d9(%rip),%r13 # 197dd 0.00 : a704: 31 db xor %ebx,%ebx 0.00 : a706: 45 31 e4 xor %r12d,%r12d 0.00 : a709: 4d 89 ee mov %r13,%r14 0.00 : a70c: e9 e2 fd ff ff jmpq a4f3 <_dl_lookup_symbol_x+0x983> 0.00 : a711: 31 c0 xor %eax,%eax 0.00 : a713: 64 87 04 25 1c 00 00 xchg %eax,%fs:0x1c 0.00 : a71a: 00 0.00 : a71b: 83 f8 02 cmp $0x2,%eax 0.00 : a71e: 75 21 jne a741 <_dl_lookup_symbol_x+0xbd1> 0.00 : a720: ba 01 00 00 00 mov $0x1,%edx 0.00 : a725: 64 48 8b 3c 25 10 00 mov %fs:0x10,%rdi 0.00 : a72c: 00 00 0.00 : a72e: 64 8b 34 25 48 00 00 mov %fs:0x48,%esi 0.00 : a735: 00 0.00 : a736: 48 83 c7 1c add $0x1c,%rdi 0.00 : a73a: 83 ce 01 or $0x1,%esi 0.00 : a73d: b0 ca mov $0xca,%al 0.00 : a73f: 0f 05 syscall 0.00 : a741: 4c 89 85 10 ff ff ff mov %r8,-0xf0(%rbp) 0.00 : a748: 4c 89 8d 08 ff ff ff mov %r9,-0xf8(%rbp) 0.00 : a74f: 48 8d 3d 12 52 21 00 lea 0x215212(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a756: ff 15 e4 57 21 00 callq *0x2157e4(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : a75c: 49 8b 8f b8 03 00 00 mov 0x3b8(%r15),%rcx 0.00 : a763: 4c 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8 0.00 : a76a: 49 89 dc mov %rbx,%r12 0.00 : a76d: 4c 8b 8d 08 ff ff ff mov -0xf8(%rbp),%r9 0.00 : a774: 49 39 c8 cmp %rcx,%r8 0.00 : a777: 0f 84 96 00 00 00 je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a77d: 48 85 c9 test %rcx,%rcx 0.00 : a780: 0f 84 8d 00 00 00 je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a786: 48 8b 01 mov (%rcx),%rax 0.00 : a789: 48 85 c0 test %rax,%rax 0.00 : a78c: 0f 84 81 00 00 00 je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a792: 31 d2 xor %edx,%edx 0.00 : a794: 49 39 c4 cmp %rax,%r12 0.00 : a797: 74 13 je a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a799: 83 c2 01 add $0x1,%edx 0.00 : a79c: 89 d0 mov %edx,%eax 0.00 : a79e: 48 8b 04 c1 mov (%rcx,%rax,8),%rax 0.00 : a7a2: 48 85 c0 test %rax,%rax 0.00 : a7a5: 74 6c je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a7a7: 49 39 c4 cmp %rax,%r12 0.00 : a7aa: 75 ed jne a799 <_dl_lookup_symbol_x+0xc29> 0.00 : a7ac: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : a7b3: 49 3b 94 24 68 04 00 cmp 0x468(%r12),%rdx 0.00 : a7ba: 00 0.00 : a7bb: 0f 85 6b f9 ff ff jne a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a7c1: 31 db xor %ebx,%ebx 0.00 : a7c3: 48 8d 3d 9e 51 21 00 lea 0x21519e(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a7ca: ff 15 78 57 21 00 callq *0x215778(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : a7d0: 64 c7 04 25 1c 00 00 movl $0x1,%fs:0x1c 0.00 : a7d7: 00 01 00 00 00 0.00 : a7dc: e9 6b f9 ff ff jmpq a14c <_dl_lookup_symbol_x+0x5dc> 0.00 : a7e1: 41 8b 94 24 dc 03 00 mov 0x3dc(%r12),%edx 0.00 : a7e8: 00 0.00 : a7e9: f6 c2 08 test $0x8,%dl 0.00 : a7ec: 0f 85 a7 00 00 00 jne a899 <_dl_lookup_symbol_x+0xd29> 0.00 : a7f2: 41 0f b6 87 14 03 00 movzbl 0x314(%r15),%eax 0.00 : a7f9: 00 0.00 : a7fa: 83 e0 03 and $0x3,%eax 0.00 : a7fd: 3c 02 cmp $0x2,%al 0.00 : a7ff: 74 5d je a85e <_dl_lookup_symbol_x+0xcee> 0.00 : a801: 83 ca 08 or $0x8,%edx 0.00 : a804: 31 db xor %ebx,%ebx 0.00 : a806: 41 89 94 24 dc 03 00 mov %edx,0x3dc(%r12) 0.00 : a80d: 00 0.00 : a80e: e9 1e f9 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a813: 49 8b 8f c8 03 00 00 mov 0x3c8(%r15),%rcx 0.00 : a81a: 48 85 c9 test %rcx,%rcx 0.00 : a81d: 0f 84 cd 01 00 00 je a9f0 <_dl_lookup_symbol_x+0xe80> 0.00 : a823: 49 39 c9 cmp %rcx,%r9 0.00 : a826: 0f 84 a0 01 00 00 je a9cc <_dl_lookup_symbol_x+0xe5c> 0.00 : a82c: 44 8b 01 mov (%rcx),%r8d 0.00 : a82f: 45 85 c0 test %r8d,%r8d 0.00 : a832: 0f 84 aa f8 ff ff je a0e2 <_dl_lookup_symbol_x+0x572> 0.00 : a838: 31 d2 xor %edx,%edx 0.00 : a83a: 4c 3b 61 08 cmp 0x8(%rcx),%r12 0.00 : a83e: 0f 84 68 ff ff ff je a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a844: 83 c2 01 add $0x1,%edx 0.00 : a847: 41 39 d0 cmp %edx,%r8d 0.00 : a84a: 0f 86 92 f8 ff ff jbe a0e2 <_dl_lookup_symbol_x+0x572> 0.00 : a850: 89 d0 mov %edx,%eax 0.00 : a852: 4c 3b 64 c1 08 cmp 0x8(%rcx,%rax,8),%r12 0.00 : a857: 75 eb jne a844 <_dl_lookup_symbol_x+0xcd4> 0.00 : a859: e9 4e ff ff ff jmpq a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a85e: 41 f6 87 dc 03 00 00 testb $0x8,0x3dc(%r15) 0.00 : a865: 08 0.00 : a866: 75 99 jne a801 <_dl_lookup_symbol_x+0xc91> 0.00 : a868: 41 8b 87 d0 03 00 00 mov 0x3d0(%r15),%eax 0.00 : a86f: 44 39 c0 cmp %r8d,%eax 0.00 : a872: 76 71 jbe a8e5 <_dl_lookup_symbol_x+0xd75> 0.00 : a874: 49 8b 97 c8 03 00 00 mov 0x3c8(%r15),%rdx 0.00 : a87b: 44 89 c0 mov %r8d,%eax 0.00 : a87e: 4c 89 64 c2 08 mov %r12,0x8(%rdx,%rax,8) 0.00 : a883: 49 8b 97 c8 03 00 00 mov 0x3c8(%r15),%rdx 0.00 : a88a: 41 8d 40 01 lea 0x1(%r8),%eax 0.00 : a88e: 89 02 mov %eax,(%rdx) 0.00 : a890: f6 05 89 43 21 00 40 testb $0x40,0x214389(%rip) # 21ec20 <_rtld_global_ro> 0.00 : a897: 75 07 jne a8a0 <_dl_lookup_symbol_x+0xd30> 0.00 : a899: 31 db xor %ebx,%ebx 0.00 : a89b: e9 91 f8 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a8a0: 49 8b 4f 08 mov 0x8(%r15),%rcx 0.00 : a8a4: 4d 8b 47 30 mov 0x30(%r15),%r8 0.00 : a8a8: 80 39 00 cmpb $0x0,(%rcx) 0.00 : a8ab: 75 0a jne a8b7 <_dl_lookup_symbol_x+0xd47> 0.00 : a8ad: 48 8b 05 54 43 21 00 mov 0x214354(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a8b4: 48 8b 08 mov (%rax),%rcx 0.00 : a8b7: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : a8bc: 49 8b 54 24 30 mov 0x30(%r12),%rdx 0.00 : a8c1: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : a8c4: 75 0a jne a8d0 <_dl_lookup_symbol_x+0xd60> 0.00 : a8c6: 48 8b 05 3b 43 21 00 mov 0x21433b(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a8cd: 48 8b 30 mov (%rax),%rsi 0.00 : a8d0: 48 8d 3d f9 10 01 00 lea 0x110f9(%rip),%rdi # 1b9d0 <__PRETTY_FUNCTION__.3644+0x165f> 0.00 : a8d7: 31 c0 xor %eax,%eax 0.00 : a8d9: 31 db xor %ebx,%ebx 0.00 : a8db: e8 70 4a 00 00 callq f350 <_dl_debug_printf> 0.00 : a8e0: e9 4c f8 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a8e5: 85 c0 test %eax,%eax 0.00 : a8e7: 41 be 0a 00 00 00 mov $0xa,%r14d 0.00 : a8ed: bb 58 00 00 00 mov $0x58,%ebx 0.00 : a8f2: 74 0f je a903 <_dl_lookup_symbol_x+0xd93> 0.00 : a8f4: 44 8d 34 00 lea (%rax,%rax,1),%r14d 0.00 : a8f8: 44 89 f0 mov %r14d,%eax 0.00 : a8fb: 48 8d 1c c5 08 00 00 lea 0x8(,%rax,8),%rbx 0.00 : a902: 00 0.00 : a903: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : a90a: 00 0.00 : a90b: 85 c0 test %eax,%eax 0.00 : a90d: 74 1f je a92e <_dl_lookup_symbol_x+0xdbe> 0.00 : a90f: 44 89 85 10 ff ff ff mov %r8d,-0xf0(%rbp) 0.00 : a916: e8 75 95 00 00 callq 13e90 <_dl_x86_64_save_sse> 0.00 : a91b: 64 c7 04 25 4c 00 00 movl $0x0,%fs:0x4c 0.00 : a922: 00 00 00 00 00 0.00 : a927: 44 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8d 0.00 : a92e: 48 89 df mov %rbx,%rdi 0.00 : a931: 44 89 85 10 ff ff ff mov %r8d,-0xf0(%rbp) 0.00 : a938: e8 73 61 ff ff callq ab0 0.00 : a93d: 48 85 c0 test %rax,%rax 0.00 : a940: 48 89 c3 mov %rax,%rbx 0.00 : a943: 44 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8d 0.00 : a94a: 74 72 je a9be <_dl_lookup_symbol_x+0xe4e> 0.00 : a94c: 44 89 c1 mov %r8d,%ecx 0.00 : a94f: 45 85 c0 test %r8d,%r8d 0.00 : a952: 48 89 8d 18 ff ff ff mov %rcx,-0xe8(%rbp) 0.00 : a959: 74 29 je a984 <_dl_lookup_symbol_x+0xe14> 0.00 : a95b: 49 8b b7 c8 03 00 00 mov 0x3c8(%r15),%rsi 0.00 : a962: 48 89 ca mov %rcx,%rdx 0.00 : a965: 48 8d 78 08 lea 0x8(%rax),%rdi 0.00 : a969: 44 89 85 10 ff ff ff mov %r8d,-0xf0(%rbp) 0.00 : a970: 48 c1 e2 03 shl $0x3,%rdx 0.00 : a974: 48 83 c6 08 add $0x8,%rsi 0.00 : a978: e8 73 c9 00 00 callq 172f0 0.00 : a97d: 44 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8d 0.00 : a984: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : a98b: 4c 89 64 c3 08 mov %r12,0x8(%rbx,%rax,8) 0.00 : a990: 41 8d 40 01 lea 0x1(%r8),%eax 0.00 : a994: 89 03 mov %eax,(%rbx) 0.00 : a996: 49 8b bf c8 03 00 00 mov 0x3c8(%r15),%rdi 0.00 : a99d: 45 89 b7 d0 03 00 00 mov %r14d,0x3d0(%r15) 0.00 : a9a4: 49 89 9f c8 03 00 00 mov %rbx,0x3c8(%r15) 0.00 : a9ab: 48 85 ff test %rdi,%rdi 0.00 : a9ae: 0f 84 dc fe ff ff je a890 <_dl_lookup_symbol_x+0xd20> 0.00 : a9b4: e8 87 6f 00 00 callq 11940 <_dl_scope_free> 0.00 : a9b9: e9 d2 fe ff ff jmpq a890 <_dl_lookup_symbol_x+0xd20> 0.00 : a9be: 41 83 8c 24 dc 03 00 orl $0x8,0x3dc(%r12) 0.00 : a9c5: 00 08 0.00 : a9c7: e9 65 f7 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a9cc: 45 8b 01 mov (%r9),%r8d 0.00 : a9cf: 45 39 f0 cmp %r14d,%r8d 0.00 : a9d2: 76 1c jbe a9f0 <_dl_lookup_symbol_x+0xe80> 0.00 : a9d4: 44 89 f0 mov %r14d,%eax 0.00 : a9d7: 4d 3b 64 c1 08 cmp 0x8(%r9,%rax,8),%r12 0.00 : a9dc: 0f 84 ca fd ff ff je a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a9e2: 41 83 c6 01 add $0x1,%r14d 0.00 : a9e6: 45 39 f0 cmp %r14d,%r8d 0.00 : a9e9: 77 e9 ja a9d4 <_dl_lookup_symbol_x+0xe64> 0.00 : a9eb: e9 f2 f6 ff ff jmpq a0e2 <_dl_lookup_symbol_x+0x572> 0.00 : a9f0: 45 89 f0 mov %r14d,%r8d 0.00 : a9f3: e9 ea f6 ff ff jmpq a0e2 <_dl_lookup_symbol_x+0x572> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 42.86 ??:0 11.43 ??:0 11.43 ??:0 8.57 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000550 : ??:0 71.43 : 550: 48 83 ec 18 sub $0x18,%rsp 0.00 : 584: 48 89 ja 5a0 0.00 : 586: 5c 24 08 48 89 mov $0x1,%ebp 0.00 : 58b: f3 48 mov %ebp,%eax ??:0 2.86 : 58d: 89 6c 24 10 83 mov 0x8(%rsp),%rbx ??:0 11.43 : 592: 7b 68 13 48 89 mov 0x10(%rsp),%rbp ??:0 2.86 : 597: d6 76 1c 8b add $0x18,%rsp 0.00 : 59b: 93 retq 0.00 : 59c: c4 00 00 00 nopl 0x0(%rax) 0.00 : 5a0: 48 8b 83 mov %rsi,%rdx 0.00 : 5a3: d8 00 00 mov %rbx,%rsi 0.00 : 5a6: 00 0f b6 04 10 callq 320 0.00 : 5ab: 83 e0 test %eax,%eax 0.00 : 5ad: 0f c1 mov %eax,%ebp 0.00 : 5af: e0 02 je 58b 0.00 : 5b1: 83 f8 13 cmp $0x2,%eax 0.00 : 5b4: 77 1a je 58b 2.86 : 5b6: bd 01 00 00 movzbl 0x7c(%rbx),%eax 0.00 : 5ba: 00 89 e8 48 8b 5c 24 mov 0x88(%rbx),%rsi 0.00 : 5c1: 08 48 8b shr $0x5,%al 0.00 : 5c4: 6c 24 10 test %rsi,%rsi 0.00 : 5c7: 48 83 je 58b 0.00 : 5c9: c4 18 c3 movzbl %al,%eax 2.86 : 5cc: 0f 1f 40 cmp $0x2,%eax 0.00 : 5cf: 00 48 89 seta %al 0.00 : 5d2: f2 48 89 movzbl %al,%eax 0.00 : 5d5: de e8 test %eax,%eax 0.00 : 5d7: 75 fd mov %eax,%eax 0.00 : 5d9: ff ff 85 c0 89 c5 74 lea 0x0(,%rax,8),%rcx 0.00 : 5e0: da 0.00 : 5e1: 83 f8 02 sete %dl 0.00 : 5e4: 74 d5 0f b6 shl $0x6,%rax 0.00 : 5e8: 43 7c 48 and $0x1,%edx 0.00 : 5eb: 8b b3 88 sub %rcx,%rax 0.00 : 5ee: 00 00 00 c0 lea (%rsi,%rax,1),%rcx 0.00 : 5f2: e8 05 48 85 f6 74 c2 lea 0x0(,%rdx,8),%rax 0.00 : 5f9: 0f 0.00 : 5fa: b6 c0 83 f8 shl $0x6,%rdx 0.00 : 5fe: 02 0f 97 sub %rax,%rdx 0.00 : 601: c0 0f b6 mov 0x2c(%rcx),%eax 2.86 : 604: c0 85 c0 89 lea (%rsi,%rdx,1),%rdx 0.00 : 608: c0 48 8d cmp 0x18(%rdx),%eax 0.00 : 60b: 0c c5 jne 640 2.86 : 60d: 00 00 00 00 lea 0x30(%rcx),%rax 0.00 : 611: 0f 94 c2 48 cmpb $0x1,0xe(%rax) 0.00 : 615: c1 e0 06 83 e2 01 je 58b 0.00 : 61b: 48 29 c8 48 movzwl 0xc(%rax),%eax 0.00 : 61f: 8d 0c 06 48 cmp 0x28(%rdx),%ax 0.00 : 623: 8d 04 d5 00 00 00 je 58b 0.00 : 629: 00 48 c1 mov %rbx,%rdi 0.00 : 62c: e2 06 48 29 c2 callq 631 0.00 : 631: 8b 41 test %eax,%eax 0.00 : 633: 2c 48 8d 14 16 3b je 58b 0.00 : 639: 42 18 xor %ebp,%ebp 0.00 : 63b: 75 33 48 8d 41 jmpq 58b 0.00 : 640: 30 80 xor %esi,%esi 0.00 : 642: 78 0e 01 mov %rbx,%rdi 0.00 : 645: 0f 84 70 ff ff callq 64a 0.00 : 64a: ff 0f test %eax,%eax 0.00 : 64c: b7 40 0c 66 3b 42 je 58b 0.00 : 652: 28 0f xor %ebp,%ebp 0.00 : 654: 84 62 ff ff ff jmpq 58b : 659: 48 89 df e8 00 00 00 nopl 0x0(%rax) : 660: 00 85 c0 0f sub $0x18,%rsp : 664: 84 52 ff ff ff mov %rbx,0x8(%rsp) : 669: 31 ed e9 mov %rsi,%rbx : 66c: 4b ff ff ff 31 mov %rbp,0x10(%rsp) : 671: f6 48 89 df cmpl $0x13,0x68(%rbx) : 675: e8 00 00 mov %rdx,%rsi : 678: 00 00 jbe 696 : 67a: 85 c0 0f 84 39 ff mov 0xc4(%rbx),%edx : 680: ff ff 31 ed e9 32 ff mov 0xd8(%rbx),%rax : 687: ff ff 0f 1f movzbl (%rax,%rdx,1),%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.06 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:155 14.71 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 13.24 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 8.82 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 4.41 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:153 4.41 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:165 2.94 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:157 2.94 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:151 2.94 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:155 2.94 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:155 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:137 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:149 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:149 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:157 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:149 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:159 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:161 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:165 1.47 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:165 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000547ec0 : : * support that. If you want to implement it, you'll need to fix : * SplitIdentifierString() in utils/adt/varlena.c. : */ : char * : downcase_truncate_identifier(const char *ident, int len, bool warn) : { /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 14.71 : 547ec0: 55 push %rbp 13.24 : 547ec1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 1.47 : 547ec4: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 8.82 : 547ec6: 41 56 push %r14 0.00 : 547ec8: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:132 1.47 : 547eca: 41 89 f5 mov %esi,%r13d 0.00 : 547ecd: 41 54 push %r12 1.47 : 547ecf: 53 push %rbx 1.47 : 547ed0: 48 83 ec 18 sub $0x18,%rsp 1.47 : 547ed4: 48 89 7d c8 mov %rdi,-0x38(%rbp) : char *result; : int i; : bool enc_is_single_byte; : : result = palloc(len + 1); 0.00 : 547ed8: 41 8d 7d 01 lea 0x1(%r13),%edi : * support that. If you want to implement it, you'll need to fix : * SplitIdentifierString() in utils/adt/varlena.c. : */ : char * : downcase_truncate_identifier(const char *ident, int len, bool warn) : { 0.00 : 547edc: 88 55 c7 mov %dl,-0x39(%rbp) : char *result; : int i; : bool enc_is_single_byte; : : result = palloc(len + 1); 0.00 : 547edf: 48 63 ff movslq %edi,%rdi /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:137 1.47 : 547ee2: e8 69 0e 25 00 callq 798d50 0.00 : 547ee7: 49 89 c6 mov %rax,%r14 : enc_is_single_byte = pg_database_encoding_max_length() == 1; 0.00 : 547eea: e8 a1 39 24 00 callq 78b890 : * is not right either (eg, Turkish may do strange things with 'i' and : * 'I'). Our current compromise is to use tolower() for characters with : * the high bit set, as long as they aren't part of a multi-byte : * character, and use an ASCII-only downcasing for 7-bit characters. : */ : for (i = 0; i < len; i++) /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:149 1.47 : 547eef: 45 85 ed test %r13d,%r13d : char *result; : int i; : bool enc_is_single_byte; : : result = palloc(len + 1); : enc_is_single_byte = pg_database_encoding_max_length() == 1; 0.00 : 547ef2: 89 45 d4 mov %eax,-0x2c(%rbp) : * is not right either (eg, Turkish may do strange things with 'i' and : * 'I'). Our current compromise is to use tolower() for characters with : * the high bit set, as long as they aren't part of a multi-byte : * character, and use an ASCII-only downcasing for 7-bit characters. : */ : for (i = 0; i < len; i++) 1.47 : 547ef5: 0f 8e 94 00 00 00 jle 547f8f 0.00 : 547efb: 45 31 e4 xor %r12d,%r12d 0.00 : 547efe: eb 10 jmp 547f10 : { : unsigned char ch = (unsigned char) ident[i]; : : if (ch >= 'A' && ch <= 'Z') : ch += 'a' - 'A'; 0.00 : 547f00: 83 c3 20 add $0x20,%ebx : else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) : ch = tolower(ch); : result[i] = (char) ch; /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:157 2.94 : 547f03: 43 88 1c 26 mov %bl,(%r14,%r12,1) 1.47 : 547f07: 49 83 c4 01 add $0x1,%r12 : * is not right either (eg, Turkish may do strange things with 'i' and : * 'I'). Our current compromise is to use tolower() for characters with : * the high bit set, as long as they aren't part of a multi-byte : * character, and use an ASCII-only downcasing for 7-bit characters. : */ : for (i = 0; i < len; i++) /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:149 1.47 : 547f0b: 45 39 e5 cmp %r12d,%r13d 0.00 : 547f0e: 7e 50 jle 547f60 : { : unsigned char ch = (unsigned char) ident[i]; /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:151 2.94 : 547f10: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 547f14: 42 0f b6 1c 20 movzbl (%rax,%r12,1),%ebx : : if (ch >= 'A' && ch <= 'Z') 0.00 : 547f19: 8d 43 bf lea -0x41(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:153 4.41 : 547f1c: 3c 19 cmp $0x19,%al 0.00 : 547f1e: 76 e0 jbe 547f00 : ch += 'a' - 'A'; : else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:155 2.94 : 547f20: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:155 22.06 : 547f24: 75 dd jne 547f03 /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:155 2.94 : 547f26: 84 db test %bl,%bl 0.00 : 547f28: 79 d9 jns 547f03 0.00 : 547f2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 547f30: e8 8b 19 f2 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 547f35: 48 8b 00 mov (%rax),%rax 0.00 : 547f38: 44 0f b6 fb movzbl %bl,%r15d 0.00 : 547f3c: 42 f6 44 78 01 01 testb $0x1,0x1(%rax,%r15,2) 0.00 : 547f42: 74 bf je 547f03 : ch = tolower(ch); 0.00 : 547f44: e8 87 1e f2 ff callq 469dd0 <__ctype_tolower_loc@plt> 0.00 : 547f49: 48 8b 00 mov (%rax),%rax 0.00 : 547f4c: 42 0f b6 1c b8 movzbl (%rax,%r15,4),%ebx : result[i] = (char) ch; 0.00 : 547f51: 43 88 1c 26 mov %bl,(%r14,%r12,1) 0.00 : 547f55: 49 83 c4 01 add $0x1,%r12 : * is not right either (eg, Turkish may do strange things with 'i' and : * 'I'). Our current compromise is to use tolower() for characters with : * the high bit set, as long as they aren't part of a multi-byte : * character, and use an ASCII-only downcasing for 7-bit characters. : */ : for (i = 0; i < len; i++) 0.00 : 547f59: 45 39 e5 cmp %r12d,%r13d 0.00 : 547f5c: 7f b2 jg 547f10 0.00 : 547f5e: 66 90 xchg %ax,%ax : ch += 'a' - 'A'; : else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) : ch = tolower(ch); : result[i] = (char) ch; : } : result[i] = '\0'; 0.00 : 547f60: 49 63 c5 movslq %r13d,%rax : : if (i >= NAMEDATALEN) 0.00 : 547f63: 41 83 fd 3f cmp $0x3f,%r13d : ch += 'a' - 'A'; : else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) : ch = tolower(ch); : result[i] = (char) ch; : } : result[i] = '\0'; /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:159 1.47 : 547f67: 41 c6 04 06 00 movb $0x0,(%r14,%rax,1) : : if (i >= NAMEDATALEN) /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:161 1.47 : 547f6c: 7e 0f jle 547f7d : truncate_identifier(result, i, warn); 0.00 : 547f6e: 0f be 55 c7 movsbl -0x39(%rbp),%edx 0.00 : 547f72: 44 89 ee mov %r13d,%esi 0.00 : 547f75: 4c 89 f7 mov %r14,%rdi 0.00 : 547f78: e8 83 fe ff ff callq 547e00 : : return result; : } 0.00 : 547f7d: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/parser/scansup.c:165 4.41 : 547f81: 4c 89 f0 mov %r14,%rax 0.00 : 547f84: 5b pop %rbx 0.00 : 547f85: 41 5c pop %r12 1.47 : 547f87: 41 5d pop %r13 0.00 : 547f89: 41 5e pop %r14 0.00 : 547f8b: 41 5f pop %r15 0.00 : 547f8d: c9 leaveq 1.47 : 547f8e: c3 retq : ch += 'a' - 'A'; : else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) : ch = tolower(ch); : result[i] = (char) ch; : } : result[i] = '\0'; 0.00 : 547f8f: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 547f93: eb e8 jmp 547f7d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 15.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 9.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 9.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:947 7.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 7.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 6.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 3.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:941 2.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 2.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000712bd0 : : /* : * Detect whether collation's LC_COLLATE property is C : */ : bool : lc_collate_is_c(Oid collation) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 9.21 : 712bd0: 55 push %rbp : /* : * If we're asked about "collation 0", return false, so that the code will : * go into the non-C path and report that the collation is bogus. : */ : if (!OidIsValid(collation)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 5.26 : 712bd1: 31 d2 xor %edx,%edx 6.58 : 712bd3: 85 ff test %edi,%edi : /* : * Detect whether collation's LC_COLLATE property is C : */ : bool : lc_collate_is_c(Oid collation) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 7.89 : 712bd5: 48 89 e5 mov %rsp,%rbp : /* : * If we're asked about "collation 0", return false, so that the code will : * go into the non-C path and report that the collation is bogus. : */ : if (!OidIsValid(collation)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 15.79 : 712bd8: 74 23 je 712bfd : : /* : * If we're asked about the default collation, we have to inquire of the C : * library. Cache the result so we only have to compute it once. : */ : if (collation == DEFAULT_COLLATION_OID) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:941 3.95 : 712bda: 83 ff 64 cmp $0x64,%edi 0.00 : 712bdd: 74 29 je 712c08 : } : : /* : * If we're asked about the built-in C/POSIX collations, we know that. : */ : if (collation == C_COLLATION_OID || 0.00 : 712bdf: 8d 87 4a fc ff ff lea -0x3b6(%rdi),%eax 0.00 : 712be5: ba 01 00 00 00 mov $0x1,%edx 0.00 : 712bea: 83 f8 01 cmp $0x1,%eax 0.00 : 712bed: 76 0e jbe 712bfd : return true; : : /* : * Otherwise, we have to consult pg_collation, but we cache that. : */ : return (lookup_collation_cache(collation, true))->collate_is_c; 0.00 : 712bef: be 01 00 00 00 mov $0x1,%esi 0.00 : 712bf4: e8 87 fb ff ff callq 712780 0.00 : 712bf9: 0f b6 50 04 movzbl 0x4(%rax),%edx : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 7.89 : 712bfd: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 2.63 : 712bff: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 23.68 : 712c00: c3 retq 0.00 : 712c01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (collation == DEFAULT_COLLATION_OID) : { : static int result = -1; : char *localeptr; : : if (result >= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 5.26 : 712c08: 8b 05 26 5e 45 00 mov 0x455e26(%rip),%eax # b68a34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 2.63 : 712c0e: 85 c0 test %eax,%eax : return (bool) result; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:947 9.21 : 712c10: 89 c2 mov %eax,%edx : if (collation == DEFAULT_COLLATION_OID) : { : static int result = -1; : char *localeptr; : : if (result >= 0) 0.00 : 712c12: 79 e9 jns 712bfd : return (bool) result; : localeptr = setlocale(LC_COLLATE, NULL); 0.00 : 712c14: 31 f6 xor %esi,%esi 0.00 : 712c16: bf 03 00 00 00 mov $0x3,%edi 0.00 : 712c1b: e8 e0 73 d5 ff callq 46a000 : if (!localeptr) 0.00 : 712c20: 48 85 c0 test %rax,%rax 0.00 : 712c23: 74 3d je 712c62 : elog(ERROR, "invalid LC_COLLATE setting"); : : if (strcmp(localeptr, "C") == 0) 0.00 : 712c25: 80 38 43 cmpb $0x43,(%rax) 0.00 : 712c28: 74 26 je 712c50 : result = true; : else if (strcmp(localeptr, "POSIX") == 0) 0.00 : 712c2a: 48 89 c6 mov %rax,%rsi 0.00 : 712c2d: bf c8 48 8c 00 mov $0x8c48c8,%edi 0.00 : 712c32: b9 06 00 00 00 mov $0x6,%ecx : result = true; 0.00 : 712c37: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 712c39: 0f 94 c0 sete %al 0.00 : 712c3c: 0f b6 c0 movzbl %al,%eax 0.00 : 712c3f: 89 05 ef 5d 45 00 mov %eax,0x455def(%rip) # b68a34 : else : result = false; : return (bool) result; 0.00 : 712c45: 0f b6 15 e8 5d 45 00 movzbl 0x455de8(%rip),%edx # b68a34 : : /* : * Otherwise, we have to consult pg_collation, but we cache that. : */ : return (lookup_collation_cache(collation, true))->collate_is_c; : } 0.00 : 712c4c: eb af jmp 712bfd 0.00 : 712c4e: 66 90 xchg %ax,%ax : return (bool) result; : localeptr = setlocale(LC_COLLATE, NULL); : if (!localeptr) : elog(ERROR, "invalid LC_COLLATE setting"); : : if (strcmp(localeptr, "C") == 0) 0.00 : 712c50: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 712c54: 75 d4 jne 712c2a : result = true; 0.00 : 712c56: c7 05 d4 5d 45 00 01 movl $0x1,0x455dd4(%rip) # b68a34 0.00 : 712c5d: 00 00 00 0.00 : 712c60: eb e3 jmp 712c45 : : if (result >= 0) : return (bool) result; : localeptr = setlocale(LC_COLLATE, NULL); : if (!localeptr) : elog(ERROR, "invalid LC_COLLATE setting"); 0.00 : 712c62: ba 90 4b 8c 00 mov $0x8c4b90,%edx 0.00 : 712c67: be b6 03 00 00 mov $0x3b6,%esi 0.00 : 712c6c: bf 75 2f 8a 00 mov $0x8a2f75,%edi 0.00 : 712c71: e8 aa 87 06 00 callq 77b420 0.00 : 712c76: be e7 48 8c 00 mov $0x8c48e7,%esi 0.00 : 712c7b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 712c80: 31 c0 xor %eax,%eax 0.00 : 712c82: e8 a9 85 06 00 callq 77b230 0.00 : 712c87: e8 44 68 d5 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.19 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:172 16.13 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:165 11.29 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:168 11.29 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:174 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:165 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:165 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:168 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:174 4.84 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:168 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:174 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:165 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:171 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004af870 <_bt_freestack>: : /* : * free a retracement stack made by _bt_search. : */ : void : _bt_freestack(BTStack stack) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:165 16.13 : 4af870: 55 push %rbp 6.45 : 4af871: 48 89 e5 mov %rsp,%rbp 6.45 : 4af874: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:165 1.61 : 4af875: 48 83 ec 08 sub $0x8,%rsp : BTStack ostack; : : while (stack != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:168 4.84 : 4af879: 48 85 ff test %rdi,%rdi 0.00 : 4af87c: 75 05 jne 4af883 <_bt_freestack+0x13> 0.00 : 4af87e: eb 12 jmp 4af892 <_bt_freestack+0x22> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:168 6.45 : 4af880: 48 89 df mov %rbx,%rdi : { : ostack = stack; : stack = stack->bts_parent; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:171 1.61 : 4af883: 48 8b 5f 10 mov 0x10(%rdi),%rbx : pfree(ostack); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:172 24.19 : 4af887: e8 f4 92 2e 00 callq 798b80 : void : _bt_freestack(BTStack stack) : { : BTStack ostack; : : while (stack != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:168 11.29 : 4af88c: 48 85 db test %rbx,%rbx 0.00 : 4af88f: 90 nop 0.00 : 4af890: 75 ee jne 4af880 <_bt_freestack+0x10> : { : ostack = stack; : stack = stack->bts_parent; : pfree(ostack); : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:174 6.45 : 4af892: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:174 3.23 : 4af896: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:174 11.29 : 4af897: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.69 ??:0 8.62 ??:0 6.90 ??:0 5.17 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 1.72 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000077aa0 <_int_free>: ??:0 1.72 : 77aa0: 41 57 push %r15 ??:0 20.69 : 77aa2: 41 56 push %r14 ??:0 1.72 : 77aa4: 41 55 push %r13 0.00 : 77aa6: 49 89 fd mov %rdi,%r13 0.00 : 77aa9: 41 54 push %r12 ??:0 5.17 : 77aab: 55 push %rbp 0.00 : 77aac: 53 push %rbx ??:0 1.72 : 77aad: 48 89 f3 mov %rsi,%rbx 0.00 : 77ab0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 77ab4: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 77ab8: 48 89 d5 mov %rdx,%rbp 0.00 : 77abb: 48 83 e5 f8 and $0xfffffffffffffff8,%rbp 0.00 : 77abf: 48 89 e8 mov %rbp,%rax 0.00 : 77ac2: 48 f7 d8 neg %rax 1.72 : 77ac5: 48 39 c6 cmp %rax,%rsi 0.00 : 77ac8: 0f 87 02 08 00 00 ja 782d0 <_int_free+0x830> 0.00 : 77ace: 40 f6 c6 0f test $0xf,%sil 0.00 : 77ad2: 0f 85 f8 07 00 00 jne 782d0 <_int_free+0x830> 3.45 : 77ad8: 48 83 fd 1f cmp $0x1f,%rbp 0.00 : 77adc: 48 8d 35 03 41 0c 00 lea 0xc4103(%rip),%rsi # 13bbe6 <__PRETTY_FUNCTION__.14063+0x17f> 0.00 : 77ae3: 0f 86 ff 05 00 00 jbe 780e8 <_int_free+0x648> 0.00 : 77ae9: 48 3b 2d 88 cc 2f 00 cmp 0x2fcc88(%rip),%rbp # 374778 3.45 : 77af0: 0f 86 1a 03 00 00 jbe 77e10 <_int_free+0x370> 1.72 : 77af6: f6 c2 02 test $0x2,%dl 0.00 : 77af9: 0f 85 f9 02 00 00 jne 77df8 <_int_free+0x358> 0.00 : 77aff: 48 8b 4f 58 mov 0x58(%rdi),%rcx 0.00 : 77b03: 48 8d 35 de 76 0c 00 lea 0xc76de(%rip),%rsi # 13f1e8 <__PRETTY_FUNCTION__.11129+0x180f> 0.00 : 77b0a: 48 39 d9 cmp %rbx,%rcx 0.00 : 77b0d: 0f 84 d5 05 00 00 je 780e8 <_int_free+0x648> 0.00 : 77b13: f6 47 04 02 testb $0x2,0x4(%rdi) 0.00 : 77b17: 4c 8d 24 2b lea (%rbx,%rbp,1),%r12 0.00 : 77b1b: 0f 84 e1 07 00 00 je 78302 <_int_free+0x862> 1.72 : 77b21: 49 8b 44 24 08 mov 0x8(%r12),%rax 1.72 : 77b26: 48 8d 35 fb 76 0c 00 lea 0xc76fb(%rip),%rsi # 13f228 <__PRETTY_FUNCTION__.11129+0x184f> 0.00 : 77b2d: a8 01 test $0x1,%al 0.00 : 77b2f: 0f 84 b3 05 00 00 je 780e8 <_int_free+0x648> 0.00 : 77b35: 48 83 f8 10 cmp $0x10,%rax 0.00 : 77b39: 0f 86 9b 05 00 00 jbe 780da <_int_free+0x63a> 1.72 : 77b3f: 49 89 c0 mov %rax,%r8 0.00 : 77b42: 49 83 e0 f8 and $0xfffffffffffffff8,%r8 0.00 : 77b46: 4d 3b 85 70 08 00 00 cmp 0x870(%r13),%r8 0.00 : 77b4d: 0f 83 87 05 00 00 jae 780da <_int_free+0x63a> 1.72 : 77b53: 8b 05 27 cc 2f 00 mov 0x2fcc27(%rip),%eax # 374780 0.00 : 77b59: 85 c0 test %eax,%eax 0.00 : 77b5b: 0f 85 c7 07 00 00 jne 78328 <_int_free+0x888> 0.00 : 77b61: 83 e2 01 and $0x1,%edx 0.00 : 77b64: 0f 84 2e 05 00 00 je 78098 <_int_free+0x5f8> 0.00 : 77b6a: 4d 39 65 58 cmp %r12,0x58(%r13) 0.00 : 77b6e: 0f 84 a4 05 00 00 je 78118 <_int_free+0x678> 0.00 : 77b74: 43 f6 44 04 08 01 testb $0x1,0x8(%r12,%r8,1) 0.00 : 77b7a: 0f 84 00 03 00 00 je 77e80 <_int_free+0x3e0> 1.72 : 77b80: 49 83 64 24 08 fe andq $0xfffffffffffffffe,0x8(%r12) 0.00 : 77b86: 49 8d 45 58 lea 0x58(%r13),%rax 0.00 : 77b8a: 48 8d 35 bf 76 0c 00 lea 0xc76bf(%rip),%rsi # 13f250 <__PRETTY_FUNCTION__.11129+0x1877> 0.00 : 77b91: 48 8b 48 10 mov 0x10(%rax),%rcx 0.00 : 77b95: 48 8b 51 18 mov 0x18(%rcx),%rdx 1.72 : 77b99: 48 39 c2 cmp %rax,%rdx 0.00 : 77b9c: 0f 85 46 05 00 00 jne 780e8 <_int_free+0x648> 0.00 : 77ba2: 48 81 fd ff 03 00 00 cmp $0x3ff,%rbp 1.72 : 77ba9: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 77bad: 48 89 53 18 mov %rdx,0x18(%rbx) 0.00 : 77bb1: 76 10 jbe 77bc3 <_int_free+0x123> 0.00 : 77bb3: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 77bba: 00 0.00 : 77bbb: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 77bc2: 00 1.72 : 77bc3: 48 89 e8 mov %rbp,%rax 1.72 : 77bc6: 48 89 5a 10 mov %rbx,0x10(%rdx) 0.00 : 77bca: 48 89 59 18 mov %rbx,0x18(%rcx) 1.72 : 77bce: 48 83 c8 01 or $0x1,%rax 0.00 : 77bd2: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 77bd6: 48 89 2c 2b mov %rbp,(%rbx,%rbp,1) 1.72 : 77bda: 48 81 fd ff ff 00 00 cmp $0xffff,%rbp 0.00 : 77be1: 0f 86 82 02 00 00 jbe 77e69 <_int_free+0x3c9> 0.00 : 77be7: 41 f6 45 04 01 testb $0x1,0x4(%r13) 0.00 : 77bec: 0f 84 16 05 00 00 je 78108 <_int_free+0x668> 0.00 : 77bf2: 48 8d 05 a7 c2 2f 00 lea 0x2fc2a7(%rip),%rax # 373ea0 0.00 : 77bf9: 49 39 c5 cmp %rax,%r13 0.00 : 77bfc: 0f 84 6e 06 00 00 je 78270 <_int_free+0x7d0> 0.00 : 77c02: 4d 8b 65 58 mov 0x58(%r13),%r12 0.00 : 77c06: 49 81 e4 00 00 00 fc and $0xfffffffffc000000,%r12 0.00 : 77c0d: 49 8b 04 24 mov (%r12),%rax 0.00 : 77c11: 4c 39 e8 cmp %r13,%rax 0.00 : 77c14: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 77c19: 74 28 je 77c43 <_int_free+0x1a3> 0.00 : 77c1b: 48 8d 0d f1 41 0c 00 lea 0xc41f1(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 77c22: 48 8d 35 19 3f 0c 00 lea 0xc3f19(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 77c29: 48 8d 3d cb 3f 0c 00 lea 0xc3fcb(%rip),%rdi # 13bbfb <__PRETTY_FUNCTION__.14063+0x194> 0.00 : 77c30: ba b6 13 00 00 mov $0x13b6,%edx 0.00 : 77c35: e8 86 eb ff ff callq 767c0 <__malloc_assert> 0.00 : 77c3a: 49 8b 14 24 mov (%r12),%rdx 0.00 : 77c3e: 48 89 54 24 20 mov %rdx,0x20(%rsp) 0.00 : 77c43: 48 8b 05 de ca 2f 00 mov 0x2fcade(%rip),%rax # 374728 0.00 : 77c4a: 8b 15 00 cb 2f 00 mov 0x2fcb00(%rip),%edx # 374750 0.00 : 77c50: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 77c55: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 77c5a: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 77c5f: 4c 8b 78 58 mov 0x58(%rax),%r15 0.00 : 77c63: 49 8d 44 24 20 lea 0x20(%r12),%rax 0.00 : 77c68: 49 39 c7 cmp %rax,%r15 0.00 : 77c6b: 0f 85 72 03 00 00 jne 77fe3 <_int_free+0x543> 0.00 : 77c71: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 77c76: 4d 89 e6 mov %r12,%r14 0.00 : 77c79: 48 8d 44 10 20 lea 0x20(%rax,%rdx,1),%rax 0.00 : 77c7e: 48 83 ea 01 sub $0x1,%rdx 0.00 : 77c82: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 77c87: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 77c8c: e9 e3 00 00 00 jmpq 77d74 <_int_free+0x2d4> 0.00 : 77c91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 77c98: 83 e2 01 and $0x1,%edx 0.00 : 77c9b: 4c 89 ed mov %r13,%rbp 0.00 : 77c9e: 75 06 jne 77ca6 <_int_free+0x206> 0.00 : 77ca0: 4c 89 ed mov %r13,%rbp 0.00 : 77ca3: 48 03 2b add (%rbx),%rbp 0.00 : 77ca6: 48 8d 45 ff lea -0x1(%rbp),%rax 0.00 : 77caa: 48 3d fe ff ff 03 cmp $0x3fffffe,%rax 0.00 : 77cb0: 0f 87 0a 02 00 00 ja 77ec0 <_int_free+0x420> 0.00 : 77cb6: b8 00 00 00 04 mov $0x4000000,%eax 0.00 : 77cbb: 49 2b 44 24 10 sub 0x10(%r12),%rax 0.00 : 77cc0: 48 01 e8 add %rbp,%rax 0.00 : 77cc3: 48 3b 44 24 30 cmp 0x30(%rsp),%rax 0.00 : 77cc8: 0f 82 12 03 00 00 jb 77fe0 <_int_free+0x540> 0.00 : 77cce: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 77cd3: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 77cd7: 48 29 82 70 08 00 00 sub %rax,0x870(%rdx) 0.00 : 77cde: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 77ce2: 48 29 05 a7 ca 2f 00 sub %rax,0x2fcaa7(%rip) # 374790 0.00 : 77ce9: 49 8d 86 00 00 00 04 lea 0x4000000(%r14),%rax 0.00 : 77cf0: 48 39 05 01 cb 2f 00 cmp %rax,0x2fcb01(%rip) # 3747f8 0.00 : 77cf7: 0f 84 d3 02 00 00 je 77fd0 <_int_free+0x530> 0.00 : 77cfd: be 00 00 00 04 mov $0x4000000,%esi 0.00 : 77d02: 4c 89 f7 mov %r14,%rdi 0.00 : 77d05: 49 89 df mov %rbx,%r15 0.00 : 77d08: e8 73 ff 05 00 callq d7c80 0.00 : 77d0d: f6 43 08 01 testb $0x1,0x8(%rbx) 0.00 : 77d11: 0f 84 f9 01 00 00 je 77f10 <_int_free+0x470> 0.00 : 77d17: 49 8d 1c 2f lea (%r15,%rbp,1),%rbx 0.00 : 77d1b: 48 85 5c 24 10 test %rbx,0x10(%rsp) 0.00 : 77d20: 0f 85 c2 01 00 00 jne 77ee8 <_int_free+0x448> 0.00 : 77d26: 4c 89 e0 mov %r12,%rax 0.00 : 77d29: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : 77d2e: 48 39 c3 cmp %rax,%rbx 0.00 : 77d31: 74 1f je 77d52 <_int_free+0x2b2> 0.00 : 77d33: 48 8d 0d e3 40 0c 00 lea 0xc40e3(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77d3a: 48 8d 35 cd 3e 0c 00 lea 0xc3ecd(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77d41: 48 8d 3d 60 76 0c 00 lea 0xc7660(%rip),%rdi # 13f3a8 <__PRETTY_FUNCTION__.11129+0x19cf> 0.00 : 77d48: ba 6a 03 00 00 mov $0x36a,%edx 0.00 : 77d4d: e8 6e ea ff ff callq 767c0 <__malloc_assert> 0.00 : 77d52: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 77d57: 48 83 cd 01 or $0x1,%rbp 0.00 : 77d5b: 4c 89 78 58 mov %r15,0x58(%rax) 0.00 : 77d5f: 49 8d 44 24 20 lea 0x20(%r12),%rax 0.00 : 77d64: 49 89 6f 08 mov %rbp,0x8(%r15) 0.00 : 77d68: 49 39 c7 cmp %rax,%r15 0.00 : 77d6b: 0f 85 72 02 00 00 jne 77fe3 <_int_free+0x543> 0.00 : 77d71: 4d 89 e6 mov %r12,%r14 0.00 : 77d74: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 77d79: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 77d7e: 49 8d 5c 04 f0 lea -0x10(%r12,%rax,1),%rbx 0.00 : 77d83: 48 83 7b 08 01 cmpq $0x1,0x8(%rbx) 0.00 : 77d88: 74 1f je 77da9 <_int_free+0x309> 0.00 : 77d8a: 48 8d 0d 8c 40 0c 00 lea 0xc408c(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77d91: 48 8d 35 76 3e 0c 00 lea 0xc3e76(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77d98: 48 8d 3d 77 3e 0c 00 lea 0xc3e77(%rip),%rdi # 13bc16 <__PRETTY_FUNCTION__.14063+0x1af> 0.00 : 77d9f: ba 58 03 00 00 mov $0x358,%edx 0.00 : 77da4: e8 17 ea ff ff callq 767c0 <__malloc_assert> 0.00 : 77da9: 48 2b 1b sub (%rbx),%rbx 0.00 : 77dac: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 77db0: 48 89 d0 mov %rdx,%rax 0.00 : 77db3: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 77db7: 4c 8d 68 10 lea 0x10(%rax),%r13 0.00 : 77dbb: 48 83 c0 0f add $0xf,%rax 0.00 : 77dbf: 48 83 f8 3e cmp $0x3e,%rax 0.00 : 77dc3: 0f 86 cf fe ff ff jbe 77c98 <_int_free+0x1f8> 0.00 : 77dc9: 48 8d 0d 4d 40 0c 00 lea 0xc404d(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77dd0: 48 8d 35 37 3e 0c 00 lea 0xc3e37(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77dd7: 48 8d 3d 9a 74 0c 00 lea 0xc749a(%rip),%rdi # 13f278 <__PRETTY_FUNCTION__.11129+0x189f> 0.00 : 77dde: ba 5b 03 00 00 mov $0x35b,%edx 0.00 : 77de3: e8 d8 e9 ff ff callq 767c0 <__malloc_assert> 0.00 : 77de8: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 77dec: e9 a7 fe ff ff jmpq 77c98 <_int_free+0x1f8> 0.00 : 77df1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 77df8: 48 83 c4 38 add $0x38,%rsp 0.00 : 77dfc: 48 89 df mov %rbx,%rdi 0.00 : 77dff: 5b pop %rbx 0.00 : 77e00: 5d pop %rbp 0.00 : 77e01: 41 5c pop %r12 0.00 : 77e03: 41 5d pop %r13 0.00 : 77e05: 41 5e pop %r14 0.00 : 77e07: 41 5f pop %r15 0.00 : 77e09: e9 c2 fb ff ff jmpq 779d0 0.00 : 77e0e: 66 90 xchg %ax,%ax 1.72 : 77e10: 48 8b 44 2b 08 mov 0x8(%rbx,%rbp,1),%rax ??:0 8.62 : 77e15: 48 83 f8 10 cmp $0x10,%rax 0.00 : 77e19: 0f 86 d7 04 00 00 jbe 782f6 <_int_free+0x856> 0.00 : 77e1f: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 77e23: 48 3b 87 70 08 00 00 cmp 0x870(%rdi),%rax 0.00 : 77e2a: 0f 83 c6 04 00 00 jae 782f6 <_int_free+0x856> ??:0 1.72 : 77e30: 8b 05 4a c9 2f 00 mov 0x2fc94a(%rip),%eax # 374780 0.00 : 77e36: 85 c0 test %eax,%eax 0.00 : 77e38: 0f 85 0d 05 00 00 jne 7834b <_int_free+0x8ab> 0.00 : 77e3e: 89 e8 mov %ebp,%eax 0.00 : 77e40: 41 83 65 04 fe andl $0xfffffffe,0x4(%r13) 1.72 : 77e45: 48 8d 35 74 73 0c 00 lea 0xc7374(%rip),%rsi # 13f1c0 <__PRETTY_FUNCTION__.11129+0x17e7> 0.00 : 77e4c: c1 e8 04 shr $0x4,%eax 0.00 : 77e4f: 83 e8 02 sub $0x2,%eax 3.45 : 77e52: 49 8b 4c c5 08 mov 0x8(%r13,%rax,8),%rcx 1.72 : 77e57: 48 39 d9 cmp %rbx,%rcx 0.00 : 77e5a: 0f 84 88 02 00 00 je 780e8 <_int_free+0x648> 3.45 : 77e60: 48 89 4b 10 mov %rcx,0x10(%rbx) 1.72 : 77e64: 49 89 5c c5 08 mov %rbx,0x8(%r13,%rax,8) 0.00 : 77e69: 48 83 c4 38 add $0x38,%rsp 0.00 : 77e6d: 5b pop %rbx 1.72 : 77e6e: 5d pop %rbp 0.00 : 77e6f: 41 5c pop %r12 0.00 : 77e71: 41 5d pop %r13 1.72 : 77e73: 41 5e pop %r14 0.00 : 77e75: 41 5f pop %r15 0.00 : 77e77: c3 retq 0.00 : 77e78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77e7f: 00 0.00 : 77e80: 4d 8b 74 24 10 mov 0x10(%r12),%r14 0.00 : 77e85: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 77e8a: 4d 8b 7e 18 mov 0x18(%r14),%r15 0.00 : 77e8e: 4d 39 e7 cmp %r12,%r15 0.00 : 77e91: 0f 85 ed 04 00 00 jne 78384 <_int_free+0x8e4> 0.00 : 77e97: 4c 3b 60 10 cmp 0x10(%rax),%r12 0.00 : 77e9b: 0f 85 e3 04 00 00 jne 78384 <_int_free+0x8e4> 0.00 : 77ea1: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 77ea5: 4c 89 70 10 mov %r14,0x10(%rax) 0.00 : 77ea9: 49 81 7c 24 08 ff 03 cmpq $0x3ff,0x8(%r12) 0.00 : 77eb0: 00 00 0.00 : 77eb2: 0f 87 18 03 00 00 ja 781d0 <_int_free+0x730> 0.00 : 77eb8: 4c 01 c5 add %r8,%rbp 0.00 : 77ebb: e9 c6 fc ff ff jmpq 77b86 <_int_free+0xe6> 0.00 : 77ec0: 48 8d 0d 56 3f 0c 00 lea 0xc3f56(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77ec7: 48 8d 35 40 3d 0c 00 lea 0xc3d40(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77ece: 48 8d 3d 53 74 0c 00 lea 0xc7453(%rip),%rdi # 13f328 <__PRETTY_FUNCTION__.11129+0x194f> 0.00 : 77ed5: ba 5e 03 00 00 mov $0x35e,%edx 0.00 : 77eda: e8 e1 e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77edf: e9 d2 fd ff ff jmpq 77cb6 <_int_free+0x216> 0.00 : 77ee4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77ee8: 48 8d 0d 2e 3f 0c 00 lea 0xc3f2e(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77eef: 48 8d 35 18 3d 0c 00 lea 0xc3d18(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77ef6: 48 8d 3d 6b 74 0c 00 lea 0xc746b(%rip),%rdi # 13f368 <__PRETTY_FUNCTION__.11129+0x198f> 0.00 : 77efd: ba 69 03 00 00 mov $0x369,%edx 0.00 : 77f02: e8 b9 e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77f07: e9 1a fe ff ff jmpq 77d26 <_int_free+0x286> 0.00 : 77f0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77f10: 49 89 df mov %rbx,%r15 0.00 : 77f13: 4c 2b 3b sub (%rbx),%r15 0.00 : 77f16: 49 8b 5f 10 mov 0x10(%r15),%rbx 0.00 : 77f1a: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 77f1e: 4c 3b 7b 18 cmp 0x18(%rbx),%r15 0.00 : 77f22: 0f 85 b4 03 00 00 jne 782dc <_int_free+0x83c> 0.00 : 77f28: 4c 3b 78 10 cmp 0x10(%rax),%r15 0.00 : 77f2c: 0f 85 aa 03 00 00 jne 782dc <_int_free+0x83c> 0.00 : 77f32: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 77f36: 48 89 58 10 mov %rbx,0x10(%rax) 0.00 : 77f3a: 49 81 7f 08 ff 03 00 cmpq $0x3ff,0x8(%r15) 0.00 : 77f41: 00 0.00 : 77f42: 0f 86 cf fd ff ff jbe 77d17 <_int_free+0x277> 0.00 : 77f48: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 77f4c: 48 85 c0 test %rax,%rax 0.00 : 77f4f: 0f 84 c2 fd ff ff je 77d17 <_int_free+0x277> 0.00 : 77f55: 4c 3b 78 28 cmp 0x28(%rax),%r15 0.00 : 77f59: 74 1f je 77f7a <_int_free+0x4da> 0.00 : 77f5b: 48 8d 0d bb 3e 0c 00 lea 0xc3ebb(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77f62: 48 8d 35 a5 3c 0c 00 lea 0xc3ca5(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77f69: 48 8d 3d 20 71 0c 00 lea 0xc7120(%rip),%rdi # 13f090 <__PRETTY_FUNCTION__.11129+0x16b7> 0.00 : 77f70: ba 67 03 00 00 mov $0x367,%edx 0.00 : 77f75: e8 46 e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77f7a: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 77f7e: 4c 3b 78 20 cmp 0x20(%rax),%r15 0.00 : 77f82: 74 1f je 77fa3 <_int_free+0x503> 0.00 : 77f84: 48 8d 0d 92 3e 0c 00 lea 0xc3e92(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77f8b: 48 8d 35 7c 3c 0c 00 lea 0xc3c7c(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77f92: 48 8d 3d 1f 71 0c 00 lea 0xc711f(%rip),%rdi # 13f0b8 <__PRETTY_FUNCTION__.11129+0x16df> 0.00 : 77f99: ba 67 03 00 00 mov $0x367,%edx 0.00 : 77f9e: e8 1d e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77fa3: 48 83 7b 20 00 cmpq $0x0,0x20(%rbx) 0.00 : 77fa8: 0f 84 fa 03 00 00 je 783a8 <_int_free+0x908> 0.00 : 77fae: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 77fb2: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 77fb6: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 77fba: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 77fbe: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 77fc2: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 77fc6: e9 4c fd ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 77fcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77fd0: 48 c7 05 1d c8 2f 00 movq $0x0,0x2fc81d(%rip) # 3747f8 0.00 : 77fd7: 00 00 00 00 0.00 : 77fdb: e9 1d fd ff ff jmpq 77cfd <_int_free+0x25d> 0.00 : 77fe0: 4d 89 f4 mov %r14,%r12 0.00 : 77fe3: 4d 8b 6f 08 mov 0x8(%r15),%r13 0.00 : 77fe7: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 77fec: 31 d2 xor %edx,%edx 0.00 : 77fee: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.00 : 77ff3: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 77ff7: 49 8d 44 05 df lea -0x21(%r13,%rax,1),%rax 0.00 : 77ffc: 48 f7 74 24 18 divq 0x18(%rsp) 0.00 : 78001: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 78005: 48 0f af 5c 24 18 imul 0x18(%rsp),%rbx 0.00 : 7800b: 48 3b 5c 24 18 cmp 0x18(%rsp),%rbx 0.00 : 78010: 0f 8c 53 fe ff ff jl 77e69 <_int_free+0x3c9> 0.00 : 78016: 49 8b 6c 24 10 mov 0x10(%r12),%rbp 0.00 : 7801b: 48 29 dd sub %rbx,%rbp 0.00 : 7801e: 48 83 fd 1f cmp $0x1f,%rbp 0.00 : 78022: 0f 8e 41 fe ff ff jle 77e69 <_int_free+0x3c9> 0.00 : 78028: 48 8b 05 c1 9d 2f 00 mov 0x2f9dc1(%rip),%rax # 371df0 <_DYNAMIC+0x290> 0.00 : 7802f: 44 8b 30 mov (%rax),%r14d 0.00 : 78032: 45 85 f6 test %r14d,%r14d 0.00 : 78035: 0f 84 75 02 00 00 je 782b0 <_int_free+0x810> 0.00 : 7803b: 49 8d 3c 2c lea (%r12,%rbp,1),%rdi 0.00 : 7803f: 45 31 c9 xor %r9d,%r9d 0.00 : 78042: 31 d2 xor %edx,%edx 0.00 : 78044: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 7804a: b9 32 00 00 00 mov $0x32,%ecx 0.00 : 7804f: 48 89 de mov %rbx,%rsi 0.00 : 78052: e8 f9 fb 05 00 callq d7c50 0.00 : 78057: 48 83 c0 01 add $0x1,%rax 0.00 : 7805b: 0f 84 08 fe ff ff je 77e69 <_int_free+0x3c9> 0.00 : 78061: 49 89 6c 24 18 mov %rbp,0x18(%r12) 0.00 : 78066: 49 89 6c 24 10 mov %rbp,0x10(%r12) 0.00 : 7806b: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 78070: 4c 89 e8 mov %r13,%rax 0.00 : 78073: 48 29 d8 sub %rbx,%rax 0.00 : 78076: 48 83 c8 01 or $0x1,%rax 0.00 : 7807a: 48 29 9a 70 08 00 00 sub %rbx,0x870(%rdx) 0.00 : 78081: 48 29 1d 08 c7 2f 00 sub %rbx,0x2fc708(%rip) # 374790 0.00 : 78088: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 7808c: e9 d8 fd ff ff jmpq 77e69 <_int_free+0x3c9> 0.00 : 78091: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 78098: 48 8b 03 mov (%rbx),%rax 0.00 : 7809b: 48 29 c3 sub %rax,%rbx 0.00 : 7809e: 48 01 c5 add %rax,%rbp 0.00 : 780a1: 4c 8b 73 10 mov 0x10(%rbx),%r14 0.00 : 780a5: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 780a9: 4d 8b 7e 18 mov 0x18(%r14),%r15 0.00 : 780ad: 49 39 df cmp %rbx,%r15 0.00 : 780b0: 0f 85 aa 02 00 00 jne 78360 <_int_free+0x8c0> 0.00 : 780b6: 48 3b 58 10 cmp 0x10(%rax),%rbx 0.00 : 780ba: 0f 85 a0 02 00 00 jne 78360 <_int_free+0x8c0> 0.00 : 780c0: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 780c4: 4c 89 70 10 mov %r14,0x10(%rax) 0.00 : 780c8: 48 81 7b 08 ff 03 00 cmpq $0x3ff,0x8(%rbx) 0.00 : 780cf: 00 0.00 : 780d0: 77 5e ja 78130 <_int_free+0x690> 0.00 : 780d2: 4c 89 fb mov %r15,%rbx 0.00 : 780d5: e9 90 fa ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 780da: 48 8d 35 b7 70 0c 00 lea 0xc70b7(%rip),%rsi # 13f198 <__PRETTY_FUNCTION__.11129+0x17bf> 0.00 : 780e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 780e8: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.00 : 780ec: 8b 3d 16 a0 2f 00 mov 0x2fa016(%rip),%edi # 372108 0.00 : 780f2: 48 83 c4 38 add $0x38,%rsp 0.00 : 780f6: 5b pop %rbx 0.00 : 780f7: 5d pop %rbp 0.00 : 780f8: 41 5c pop %r12 0.00 : 780fa: 41 5d pop %r13 0.00 : 780fc: 41 5e pop %r14 0.00 : 780fe: 41 5f pop %r15 0.00 : 78100: e9 5b e4 ff ff jmpq 76560 0.00 : 78105: 0f 1f 00 nopl (%rax) 0.00 : 78108: 4c 89 ef mov %r13,%rdi 0.00 : 7810b: e8 30 e7 ff ff callq 76840 0.00 : 78110: e9 dd fa ff ff jmpq 77bf2 <_int_free+0x152> 0.00 : 78115: 0f 1f 00 nopl (%rax) 0.00 : 78118: 4c 01 c5 add %r8,%rbp 0.00 : 7811b: 48 89 e8 mov %rbp,%rax 0.00 : 7811e: 48 83 c8 01 or $0x1,%rax 0.00 : 78122: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 78126: 49 89 5d 58 mov %rbx,0x58(%r13) 0.00 : 7812a: e9 ab fa ff ff jmpq 77bda <_int_free+0x13a> 0.00 : 7812f: 90 nop 0.00 : 78130: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 78134: 48 85 c0 test %rax,%rax 0.00 : 78137: 74 99 je 780d2 <_int_free+0x632> 0.00 : 78139: 48 3b 58 28 cmp 0x28(%rax),%rbx 0.00 : 7813d: 74 29 je 78168 <_int_free+0x6c8> 0.00 : 7813f: 48 8d 0d cd 3c 0c 00 lea 0xc3ccd(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 78146: 48 8d 35 f5 39 0c 00 lea 0xc39f5(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7814d: 48 8d 3d 3c 6f 0c 00 lea 0xc6f3c(%rip),%rdi # 13f090 <__PRETTY_FUNCTION__.11129+0x16b7> 0.00 : 78154: ba 63 13 00 00 mov $0x1363,%edx 0.00 : 78159: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 7815e: e8 5d e6 ff ff callq 767c0 <__malloc_assert> 0.00 : 78163: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 78168: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 7816c: 4c 3b 78 20 cmp 0x20(%rax),%r15 0.00 : 78170: 74 29 je 7819b <_int_free+0x6fb> 0.00 : 78172: 48 8d 0d 9a 3c 0c 00 lea 0xc3c9a(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 78179: 48 8d 35 c2 39 0c 00 lea 0xc39c2(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 78180: 48 8d 3d 31 6f 0c 00 lea 0xc6f31(%rip),%rdi # 13f0b8 <__PRETTY_FUNCTION__.11129+0x16df> 0.00 : 78187: ba 63 13 00 00 mov $0x1363,%edx 0.00 : 7818c: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78191: e8 2a e6 ff ff callq 767c0 <__malloc_assert> 0.00 : 78196: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7819b: 49 83 7e 20 00 cmpq $0x0,0x20(%r14) 0.00 : 781a0: 0f 84 2c 02 00 00 je 783d2 <_int_free+0x932> 0.00 : 781a6: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 781aa: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 781ae: 4c 89 fb mov %r15,%rbx 0.00 : 781b1: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 781b5: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 781b9: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 781bd: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 781c1: e9 a4 f9 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 781c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 781cd: 00 00 00 1.72 : 781d0: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 781d5: 48 85 c0 test %rax,%rax 0.00 : 781d8: 0f 84 da fc ff ff je 77eb8 <_int_free+0x418> 0.00 : 781de: 4c 3b 60 28 cmp 0x28(%rax),%r12 0.00 : 781e2: 74 29 je 7820d <_int_free+0x76d> 0.00 : 781e4: 48 8d 0d 28 3c 0c 00 lea 0xc3c28(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 781eb: 48 8d 35 50 39 0c 00 lea 0xc3950(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 781f2: 48 8d 3d e7 6e 0c 00 lea 0xc6ee7(%rip),%rdi # 13f0e0 <__PRETTY_FUNCTION__.11129+0x1707> 0.00 : 781f9: ba 6c 13 00 00 mov $0x136c,%edx 0.00 : 781fe: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78203: e8 b8 e5 ff ff callq 767c0 <__malloc_assert> 0.00 : 78208: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7820d: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78211: 4c 3b 78 20 cmp 0x20(%rax),%r15 0.00 : 78215: 74 29 je 78240 <_int_free+0x7a0> 0.00 : 78217: 48 8d 0d f5 3b 0c 00 lea 0xc3bf5(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 7821e: 48 8d 35 1d 39 0c 00 lea 0xc391d(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 78225: 48 8d 3d ec 6e 0c 00 lea 0xc6eec(%rip),%rdi # 13f118 <__PRETTY_FUNCTION__.11129+0x173f> 0.00 : 7822c: ba 6c 13 00 00 mov $0x136c,%edx 0.00 : 78231: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78236: e8 85 e5 ff ff callq 767c0 <__malloc_assert> 0.00 : 7823b: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 78240: 49 83 7e 20 00 cmpq $0x0,0x20(%r14) 0.00 : 78245: 0f 84 b4 01 00 00 je 783ff <_int_free+0x95f> 0.00 : 7824b: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 7824f: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78253: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 78257: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 7825b: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 7825f: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 78263: e9 50 fc ff ff jmpq 77eb8 <_int_free+0x418> 0.00 : 78268: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7826f: 00 0.00 : 78270: 48 8b 05 81 bc 2f 00 mov 0x2fbc81(%rip),%rax # 373ef8 1.72 : 78277: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 7827b: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 7827f: 48 3b 05 9a c4 2f 00 cmp 0x2fc49a(%rip),%rax # 374720 0.00 : 78286: 0f 82 dd fb ff ff jb 77e69 <_int_free+0x3c9> 0.00 : 7828c: 48 8b 3d 95 c4 2f 00 mov 0x2fc495(%rip),%rdi # 374728 0.00 : 78293: 48 83 c4 38 add $0x38,%rsp 0.00 : 78297: 4c 89 ee mov %r13,%rsi 0.00 : 7829a: 5b pop %rbx 0.00 : 7829b: 5d pop %rbp 0.00 : 7829c: 41 5c pop %r12 0.00 : 7829e: 41 5d pop %r13 0.00 : 782a0: 41 5e pop %r14 0.00 : 782a2: 41 5f pop %r15 0.00 : 782a4: e9 07 df ff ff jmpq 761b0 0.00 : 782a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 782b0: 49 8d 3c 2c lea (%r12,%rbp,1),%rdi 0.00 : 782b4: ba 04 00 00 00 mov $0x4,%edx 0.00 : 782b9: 48 89 de mov %rbx,%rsi 0.00 : 782bc: e8 7f fa 05 00 callq d7d40 0.00 : 782c1: e9 a0 fd ff ff jmpq 78066 <_int_free+0x5c6> 0.00 : 782c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 782cd: 00 00 00 0.00 : 782d0: 48 8d 35 f7 38 0c 00 lea 0xc38f7(%rip),%rsi # 13bbce <__PRETTY_FUNCTION__.14063+0x167> 0.00 : 782d7: e9 0c fe ff ff jmpq 780e8 <_int_free+0x648> 0.00 : 782dc: 8b 3d 26 9e 2f 00 mov 0x2f9e26(%rip),%edi # 372108 0.00 : 782e2: 48 8d 35 3c 38 0c 00 lea 0xc383c(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 782e9: 4c 89 fa mov %r15,%rdx 0.00 : 782ec: e8 6f e2 ff ff callq 76560 0.00 : 782f1: e9 21 fa ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 782f6: 48 8d 35 73 6e 0c 00 lea 0xc6e73(%rip),%rsi # 13f170 <__PRETTY_FUNCTION__.11129+0x1797> 0.00 : 782fd: e9 e6 fd ff ff jmpq 780e8 <_int_free+0x648> 1.72 : 78302: 48 8b 41 08 mov 0x8(%rcx),%rax ??:0 6.90 : 78306: 48 8d 35 fb 6e 0c 00 lea 0xc6efb(%rip),%rsi # 13f208 <__PRETTY_FUNCTION__.11129+0x182f> 0.00 : 7830d: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 78311: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 78315: 49 39 c4 cmp %rax,%r12 0.00 : 78318: 0f 82 03 f8 ff ff jb 77b21 <_int_free+0x81> 0.00 : 7831e: e9 c5 fd ff ff jmpq 780e8 <_int_free+0x648> 0.00 : 78323: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 78328: 48 8d 55 f0 lea -0x10(%rbp),%rdx 0.00 : 7832c: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 78330: 0f b6 f0 movzbl %al,%esi 0.00 : 78333: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78338: e8 33 b1 00 00 callq 83470 <__GI_memset> 0.00 : 7833d: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 78341: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 78346: e9 16 f8 ff ff jmpq 77b61 <_int_free+0xc1> 0.00 : 7834b: 48 8d 55 f0 lea -0x10(%rbp),%rdx 0.00 : 7834f: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 78353: 0f b6 f0 movzbl %al,%esi 0.00 : 78356: e8 15 b1 00 00 callq 83470 <__GI_memset> 0.00 : 7835b: e9 de fa ff ff jmpq 77e3e <_int_free+0x39e> 0.00 : 78360: 8b 3d a2 9d 2f 00 mov 0x2f9da2(%rip),%edi # 372108 0.00 : 78366: 48 8d 35 b8 37 0c 00 lea 0xc37b8(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 7836d: 48 89 da mov %rbx,%rdx 0.00 : 78370: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78375: e8 e6 e1 ff ff callq 76560 0.00 : 7837a: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7837f: e9 e6 f7 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 78384: 8b 3d 7e 9d 2f 00 mov 0x2f9d7e(%rip),%edi # 372108 0.00 : 7838a: 48 8d 35 94 37 0c 00 lea 0xc3794(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 78391: 4c 89 e2 mov %r12,%rdx 0.00 : 78394: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78399: e8 c2 e1 ff ff callq 76560 0.00 : 7839e: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 783a3: e9 10 fb ff ff jmpq 77eb8 <_int_free+0x418> 0.00 : 783a8: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783ac: 49 39 c7 cmp %rax,%r15 0.00 : 783af: 74 78 je 78429 <_int_free+0x989> 0.00 : 783b1: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 783b5: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783b9: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 783bd: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783c1: 48 89 58 28 mov %rbx,0x28(%rax) 0.00 : 783c5: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783c9: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : 783cd: e9 45 f9 ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 783d2: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783d6: 49 39 c7 cmp %rax,%r15 0.00 : 783d9: 74 5b je 78436 <_int_free+0x996> 0.00 : 783db: 49 89 46 20 mov %rax,0x20(%r14) 0.00 : 783df: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783e3: 4c 89 fb mov %r15,%rbx 0.00 : 783e6: 49 89 46 28 mov %rax,0x28(%r14) 0.00 : 783ea: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783ee: 4c 89 70 28 mov %r14,0x28(%rax) 0.00 : 783f2: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783f6: 4c 89 70 20 mov %r14,0x20(%rax) 0.00 : 783fa: e9 6b f7 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 783ff: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 78403: 49 39 c7 cmp %rax,%r15 0.00 : 78406: 74 3e je 78446 <_int_free+0x9a6> 0.00 : 78408: 49 89 46 20 mov %rax,0x20(%r14) 0.00 : 7840c: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78410: 49 89 46 28 mov %rax,0x28(%r14) 0.00 : 78414: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 78418: 4c 89 70 28 mov %r14,0x28(%rax) 0.00 : 7841c: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78420: 4c 89 70 20 mov %r14,0x20(%rax) 0.00 : 78424: e9 8f fa ff ff jmpq 77eb8 <_int_free+0x418> 0.00 : 78429: 48 89 5b 28 mov %rbx,0x28(%rbx) 0.00 : 7842d: 48 89 5b 20 mov %rbx,0x20(%rbx) 0.00 : 78431: e9 e1 f8 ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 78436: 4d 89 76 28 mov %r14,0x28(%r14) 0.00 : 7843a: 4d 89 76 20 mov %r14,0x20(%r14) 0.00 : 7843e: 4c 89 fb mov %r15,%rbx 0.00 : 78441: e9 24 f7 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 78446: 4d 89 76 28 mov %r14,0x28(%r14) 0.00 : 7844a: 4d 89 76 20 mov %r14,0x20(%r14) 0.00 : 7844e: e9 65 fa ff ff jmpq 77eb8 <_int_free+0x418> Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 32.69 ??:0 26.92 ??:0 5.77 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 1.92 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000f70 : ??:0 48.08 : f70: 48 83 ec 28 sub $0x28,%rsp 0.00 : fa4: 49 c7 adc %al,(%rax) 0.00 : fa6: 01 00 add %al,(%rax) 0.00 : fa8: 00 00 00 add %cl,-0x39(%rcx) 0.00 : fab: 48 89 1c or %al,(%r8) 0.00 : fae: 24 48 add %al,(%rax) ??:0 1.92 : fb0: 89 6c 24 add %al,-0x77(%rbp) 0.00 : fb3: 08 (bad) 0.00 : fb4: 4c 89 cb 4c 89 64 24 movq $0x0,0x18(%r9) 0.00 : fbb: 10 3.85 : fbc: 4c 89 6c 24 18 48 89 movq $0x0,0x20(%r9) 0.00 : fc3: fd ??:0 5.77 : fc4: 4c 89 74 mov %r9,%rdx 0.00 : fc7: 24 20 4c 8b 6c mov %cx,0x12(%r9) ??:0 1.92 : fcc: 24 38 41 89 d6 mov 0x30(%rsp),%rax 0.00 : fd1: 49 c7 41 callq *0x10(%rax) 0.00 : fd4: 10 00 test %al,%al 0.00 : fd6: 00 00 jne ff8 0.00 : fd8: 00 49 c7 41 mov (%rsp),%rbx 0.00 : fdc: 08 00 00 00 00 mov 0x8(%rsp),%rbp 0.00 : fe1: 45 89 c4 49 c7 mov 0x10(%rsp),%r12 0.00 : fe6: 41 18 00 00 00 mov 0x18(%rsp),%r13 0.00 : feb: 00 49 c7 41 20 mov 0x20(%rsp),%r14 0.00 : ff0: 00 00 00 00 add $0x28,%rsp 0.00 : ff4: 4c retq 0.00 : ff5: 89 ca 66 nopl (%rax) 1.92 : ff8: 41 89 49 12 mov %r12b,0x26(%rbx) 3.85 : ffc: 48 8b 44 24 movb $0x0,0x27(%rbx) 1.92 : 1000: 30 ff 50 mov %rbx,%rdx ??:0 26.92 : 1003: 10 84 c0 75 mov 0x8(%r13),%r11 ??:0 1.92 : 1007: 20 48 8b mov %r14d,%esi 0.00 : 100a: 1c 24 48 mov %rbp,%rdi 0.00 : 100d: 8b 6c 24 08 mov (%rsp),%rbx 1.92 : 1011: 4c 8b 64 24 10 mov 0x8(%rsp),%rbp 0.00 : 1016: 4c 8b 6c 24 18 mov 0x10(%rsp),%r12 0.00 : 101b: 4c 8b 74 24 20 mov 0x18(%rsp),%r13 0.00 : 1020: 48 83 c4 28 c3 mov 0x20(%rsp),%r14 0.00 : 1025: 0f 1f 00 44 add $0x28,%rsp 0.00 : 1029: 88 63 26 jmpq *%r11 : 102c: c6 43 27 00 nopl 0x0(%rax) : 1030: 48 89 da 4d sub $0x48,%rsp : 1034: 8b 5d 08 44 89 mov %rbx,0x20(%rsp) : 1039: f6 48 89 ef 48 mov %r12,0x30(%rsp) : 103e: 8b 1c mov %edx,%ebx : 1040: 24 48 8b 6c 24 mov %r13,0x38(%rsp) : 1045: 08 4c 8b 64 24 mov %r14,0x40(%rsp) : 104a: 10 4c 8b mov %rdi,%r13 : 104d: 6c 24 18 4c 8b mov %rbp,0x28(%rsp) : 1052: 74 24 20 mov %esi,%r12d : 1055: 48 83 c4 mov %rcx,%r14 : 1058: 28 41 ff e3 cmp $0x26,%dx Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:691 7.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 6.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 6.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 6.06 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:583 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:580 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:583 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:691 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:691 3.03 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 3.03 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:584 3.03 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:584 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a9050 <_bt_getbuf>: : * (ie, the buffer is "locked and pinned"). Also, we apply : * _bt_checkpage to sanity-check the page (except in P_NEW case). : */ : Buffer : _bt_getbuf(Relation rel, BlockNumber blkno, int access) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 7.58 : 4a9050: 55 push %rbp 16.67 : 4a9051: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 3.03 : 4a9054: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 16.67 : 4a9056: 49 89 fe mov %rdi,%r14 0.00 : 4a9059: 41 55 push %r13 6.06 : 4a905b: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 4.55 : 4a905d: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:577 6.06 : 4a905e: 89 d3 mov %edx,%ebx 0.00 : 4a9060: 48 83 ec 40 sub $0x40,%rsp : Buffer buf; : : if (blkno != P_NEW) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:580 4.55 : 4a9064: 83 fe ff cmp $0xffffffff,%esi 0.00 : 4a9067: 74 5c je 4a90c5 <_bt_getbuf+0x75> : { : /* Read an existing block of the relation */ : buf = ReadBuffer(rel, blkno); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:583 4.55 : 4a9069: e8 32 d6 1c 00 callq 6766a0 : LockBuffer(buf, access); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:584 3.03 : 4a906e: 89 de mov %ebx,%esi : Buffer buf; : : if (blkno != P_NEW) : { : /* Read an existing block of the relation */ : buf = ReadBuffer(rel, blkno); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:583 6.06 : 4a9070: 41 89 c4 mov %eax,%r12d : LockBuffer(buf, access); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:584 3.03 : 4a9073: 89 c7 mov %eax,%edi 0.00 : 4a9075: e8 96 b6 1c 00 callq 674710 : _bt_checkpage(rel, buf); 0.00 : 4a907a: 44 89 e6 mov %r12d,%esi 0.00 : 4a907d: 4c 89 f7 mov %r14,%rdi 0.00 : 4a9080: e8 4b fa ff ff callq 4a8ad0 <_bt_checkpage> : _bt_pageinit(page, BufferGetPageSize(buf)); : } : : /* ref count and lock type are correct */ : return buf; : } 0.00 : 4a9085: 48 83 c4 40 add $0x40,%rsp 0.00 : 4a9089: 44 89 e0 mov %r12d,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:691 4.55 : 4a908c: 5b pop %rbx 0.00 : 4a908d: 41 5c pop %r12 4.55 : 4a908f: 41 5d pop %r13 0.00 : 4a9091: 41 5e pop %r14 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:691 9.09 : 4a9093: c9 leaveq 0.00 : 4a9094: c3 retq 0.00 : 4a9095: 0f 1f 00 nopl (%rax) : elog(DEBUG2, "FSM returned nonrecyclable page"); : _bt_relbuf(rel, buf); : } : else : { : elog(DEBUG2, "FSM returned nonlockable page"); 0.00 : 4a9098: ba f9 46 7b 00 mov $0x7b46f9,%edx 0.00 : 4a909d: be 8a 02 00 00 mov $0x28a,%esi 0.00 : 4a90a2: bf 22 43 7b 00 mov $0x7b4322,%edi 0.00 : 4a90a7: e8 74 23 2d 00 callq 77b420 0.00 : 4a90ac: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 4a90b1: be 2c 43 7b 00 mov $0x7b432c,%esi 0.00 : 4a90b6: 31 c0 xor %eax,%eax 0.00 : 4a90b8: e8 73 21 2d 00 callq 77b230 : /* couldn't get lock, so just drop pin */ : ReleaseBuffer(buf); 0.00 : 4a90bd: 44 89 e7 mov %r12d,%edi 0.00 : 4a90c0: e8 9b bd 1c 00 callq 674e60 : * wrong, the worst consequence is the page will be lost to use till : * the next VACUUM, which is no big problem.) : */ : for (;;) : { : blkno = GetFreeIndexPage(rel); 0.00 : 4a90c5: 4c 89 f7 mov %r14,%rdi 0.00 : 4a90c8: e8 d3 3c 1d 00 callq 67cda0 : if (blkno == InvalidBlockNumber) 0.00 : 4a90cd: 83 f8 ff cmp $0xffffffff,%eax : * wrong, the worst consequence is the page will be lost to use till : * the next VACUUM, which is no big problem.) : */ : for (;;) : { : blkno = GetFreeIndexPage(rel); 0.00 : 4a90d0: 41 89 c5 mov %eax,%r13d : if (blkno == InvalidBlockNumber) 0.00 : 4a90d3: 0f 84 d7 00 00 00 je 4a91b0 <_bt_getbuf+0x160> : break; : buf = ReadBuffer(rel, blkno); 0.00 : 4a90d9: 89 c6 mov %eax,%esi 0.00 : 4a90db: 4c 89 f7 mov %r14,%rdi 0.00 : 4a90de: e8 bd d5 1c 00 callq 6766a0 : if (ConditionalLockBuffer(buf)) 0.00 : 4a90e3: 89 c7 mov %eax,%edi : for (;;) : { : blkno = GetFreeIndexPage(rel); : if (blkno == InvalidBlockNumber) : break; : buf = ReadBuffer(rel, blkno); 0.00 : 4a90e5: 41 89 c4 mov %eax,%r12d : if (ConditionalLockBuffer(buf)) 0.00 : 4a90e8: e8 c3 b6 1c 00 callq 6747b0 0.00 : 4a90ed: 84 c0 test %al,%al 0.00 : 4a90ef: 74 a7 je 4a9098 <_bt_getbuf+0x48> : { : page = BufferGetPage(buf); 0.00 : 4a90f1: 45 85 e4 test %r12d,%r12d 0.00 : 4a90f4: 78 52 js 4a9148 <_bt_getbuf+0xf8> 0.00 : 4a90f6: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4a90fb: 48 63 d8 movslq %eax,%rbx 0.00 : 4a90fe: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4a9102: 48 03 1d ef 69 71 00 add 0x7169ef(%rip),%rbx # bbfaf8 : if (_bt_page_recyclable(page)) 0.00 : 4a9109: 48 89 df mov %rbx,%rdi 0.00 : 4a910c: e8 ff fd ff ff callq 4a8f10 <_bt_page_recyclable> 0.00 : 4a9111: 84 c0 test %al,%al 0.00 : 4a9113: 75 51 jne 4a9166 <_bt_getbuf+0x116> : : /* Okay to use page. Re-initialize and return it */ : _bt_pageinit(page, BufferGetPageSize(buf)); : return buf; : } : elog(DEBUG2, "FSM returned nonrecyclable page"); 0.00 : 4a9115: ba f9 46 7b 00 mov $0x7b46f9,%edx 0.00 : 4a911a: be 85 02 00 00 mov $0x285,%esi 0.00 : 4a911f: bf 22 43 7b 00 mov $0x7b4322,%edi 0.00 : 4a9124: e8 f7 22 2d 00 callq 77b420 0.00 : 4a9129: be 68 43 7b 00 mov $0x7b4368,%esi 0.00 : 4a912e: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 4a9133: 31 c0 xor %eax,%eax 0.00 : 4a9135: e8 f6 20 2d 00 callq 77b230 : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4a913a: 44 89 e7 mov %r12d,%edi 0.00 : 4a913d: e8 ee bd 1c 00 callq 674f30 0.00 : 4a9142: eb 81 jmp 4a90c5 <_bt_getbuf+0x75> 0.00 : 4a9144: 0f 1f 40 00 nopl 0x0(%rax) : if (blkno == InvalidBlockNumber) : break; : buf = ReadBuffer(rel, blkno); : if (ConditionalLockBuffer(buf)) : { : page = BufferGetPage(buf); 0.00 : 4a9148: 48 8b 15 c9 3f 6d 00 mov 0x6d3fc9(%rip),%rdx # b7d118 0.00 : 4a914f: 44 89 e0 mov %r12d,%eax 0.00 : 4a9152: f7 d0 not %eax 0.00 : 4a9154: 48 98 cltq 0.00 : 4a9156: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx : if (_bt_page_recyclable(page)) 0.00 : 4a915a: 48 89 df mov %rbx,%rdi 0.00 : 4a915d: e8 ae fd ff ff callq 4a8f10 <_bt_page_recyclable> 0.00 : 4a9162: 84 c0 test %al,%al 0.00 : 4a9164: 74 af je 4a9115 <_bt_getbuf+0xc5> : /* : * If we are generating WAL for Hot Standby then create a : * WAL record that will allow us to conflict with queries : * running on standby. : */ : if (XLogStandbyInfoActive()) 0.00 : 4a9166: 83 3d ef ff 6c 00 01 cmpl $0x1,0x6cffef(%rip) # b7915c 0.00 : 4a916d: 7e 16 jle 4a9185 <_bt_getbuf+0x135> : { : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : : _bt_log_reuse_page(rel, blkno, opaque->btpo.xact); 0.00 : 4a916f: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.00 : 4a9173: 8b 54 03 08 mov 0x8(%rbx,%rax,1),%edx : * Log the reuse of a page from the FSM. : */ : static void : _bt_log_reuse_page(Relation rel, BlockNumber blkno, TransactionId latestRemovedXid) : { : if (!RelationNeedsWAL(rel)) 0.00 : 4a9177: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 4a917b: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4a917f: 0f 84 df 00 00 00 je 4a9264 <_bt_getbuf+0x214> : * special space is zeroed out. : */ : void : _bt_pageinit(Page page, Size size) : { : PageInit(page, size, sizeof(BTPageOpaqueData)); 0.00 : 4a9185: 48 89 df mov %rbx,%rdi 0.00 : 4a9188: ba 10 00 00 00 mov $0x10,%edx 0.00 : 4a918d: be 00 20 00 00 mov $0x2000,%esi 0.00 : 4a9192: e8 a9 d0 1e 00 callq 696240 : _bt_pageinit(page, BufferGetPageSize(buf)); : } : : /* ref count and lock type are correct */ : return buf; : } 0.00 : 4a9197: 48 83 c4 40 add $0x40,%rsp 0.00 : 4a919b: 44 89 e0 mov %r12d,%eax 0.00 : 4a919e: 5b pop %rbx 0.00 : 4a919f: 41 5c pop %r12 0.00 : 4a91a1: 41 5d pop %r13 0.00 : 4a91a3: 41 5e pop %r14 0.00 : 4a91a5: c9 leaveq 0.00 : 4a91a6: c3 retq 0.00 : 4a91a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a91ae: 00 00 : * page. We can skip locking for new or temp relations, however, : * since no one else could be accessing them. : */ : needLock = !RELATION_IS_LOCAL(rel); : : if (needLock) 0.00 : 4a91b0: 48 b8 ff 00 00 00 ff movabs $0xffffffff000000ff,%rax 0.00 : 4a91b7: ff ff ff 0.00 : 4a91ba: 49 85 46 20 test %rax,0x20(%r14) 0.00 : 4a91be: 74 58 je 4a9218 <_bt_getbuf+0x1c8> : LockRelationForExtension(rel, ExclusiveLock); : : buf = ReadBuffer(rel, P_NEW); 0.00 : 4a91c0: 44 89 ee mov %r13d,%esi 0.00 : 4a91c3: 4c 89 f7 mov %r14,%rdi 0.00 : 4a91c6: e8 d5 d4 1c 00 callq 6766a0 : : /* Acquire buffer lock on new page */ : LockBuffer(buf, BT_WRITE); 0.00 : 4a91cb: be 02 00 00 00 mov $0x2,%esi 0.00 : 4a91d0: 89 c7 mov %eax,%edi : needLock = !RELATION_IS_LOCAL(rel); : : if (needLock) : LockRelationForExtension(rel, ExclusiveLock); : : buf = ReadBuffer(rel, P_NEW); 0.00 : 4a91d2: 41 89 c4 mov %eax,%r12d : : /* Acquire buffer lock on new page */ : LockBuffer(buf, BT_WRITE); 0.00 : 4a91d5: e8 36 b5 1c 00 callq 674710 : */ : if (needLock) : UnlockRelationForExtension(rel, ExclusiveLock); : : /* Initialize the new page before returning it */ : page = BufferGetPage(buf); 0.00 : 4a91da: 45 85 e4 test %r12d,%r12d 0.00 : 4a91dd: 78 71 js 4a9250 <_bt_getbuf+0x200> 0.00 : 4a91df: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4a91e4: 48 63 f8 movslq %eax,%rdi 0.00 : 4a91e7: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 4a91eb: 48 03 3d 06 69 71 00 add 0x716906(%rip),%rdi # bbfaf8 : * special space is zeroed out. : */ : void : _bt_pageinit(Page page, Size size) : { : PageInit(page, size, sizeof(BTPageOpaqueData)); 0.00 : 4a91f2: ba 10 00 00 00 mov $0x10,%edx 0.00 : 4a91f7: be 00 20 00 00 mov $0x2000,%esi 0.00 : 4a91fc: e8 3f d0 1e 00 callq 696240 : _bt_pageinit(page, BufferGetPageSize(buf)); : } : : /* ref count and lock type are correct */ : return buf; : } 0.00 : 4a9201: 48 83 c4 40 add $0x40,%rsp 0.00 : 4a9205: 44 89 e0 mov %r12d,%eax 0.00 : 4a9208: 5b pop %rbx 0.00 : 4a9209: 41 5c pop %r12 0.00 : 4a920b: 41 5d pop %r13 0.00 : 4a920d: 41 5e pop %r14 0.00 : 4a920f: c9 leaveq 0.00 : 4a9210: c3 retq 0.00 : 4a9211: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * since no one else could be accessing them. : */ : needLock = !RELATION_IS_LOCAL(rel); : : if (needLock) : LockRelationForExtension(rel, ExclusiveLock); 0.00 : 4a9218: 4c 89 f7 mov %r14,%rdi 0.00 : 4a921b: be 07 00 00 00 mov $0x7,%esi 0.00 : 4a9220: e8 1b ec 1d 00 callq 687e40 : : buf = ReadBuffer(rel, P_NEW); 0.00 : 4a9225: 44 89 ee mov %r13d,%esi 0.00 : 4a9228: 4c 89 f7 mov %r14,%rdi 0.00 : 4a922b: e8 70 d4 1c 00 callq 6766a0 : : /* Acquire buffer lock on new page */ : LockBuffer(buf, BT_WRITE); 0.00 : 4a9230: be 02 00 00 00 mov $0x2,%esi 0.00 : 4a9235: 89 c7 mov %eax,%edi : needLock = !RELATION_IS_LOCAL(rel); : : if (needLock) : LockRelationForExtension(rel, ExclusiveLock); : : buf = ReadBuffer(rel, P_NEW); 0.00 : 4a9237: 41 89 c4 mov %eax,%r12d : : /* Acquire buffer lock on new page */ : LockBuffer(buf, BT_WRITE); 0.00 : 4a923a: e8 d1 b4 1c 00 callq 674710 : * extend the relation some more. Note that we cannot release this : * lock before we have buffer lock on the new page, or we risk a race : * condition against btvacuumscan --- see comments therein. : */ : if (needLock) : UnlockRelationForExtension(rel, ExclusiveLock); 0.00 : 4a923f: be 07 00 00 00 mov $0x7,%esi 0.00 : 4a9244: 4c 89 f7 mov %r14,%rdi 0.00 : 4a9247: e8 44 e9 1d 00 callq 687b90 0.00 : 4a924c: eb 8c jmp 4a91da <_bt_getbuf+0x18a> 0.00 : 4a924e: 66 90 xchg %ax,%ax : : /* Initialize the new page before returning it */ : page = BufferGetPage(buf); 0.00 : 4a9250: 44 89 e0 mov %r12d,%eax 0.00 : 4a9253: 48 8b 15 be 3e 6d 00 mov 0x6d3ebe(%rip),%rdx # b7d118 0.00 : 4a925a: f7 d0 not %eax 0.00 : 4a925c: 48 98 cltq 0.00 : 4a925e: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 4a9262: eb 8e jmp 4a91f2 <_bt_getbuf+0x1a2> : { : if (!RelationNeedsWAL(rel)) : return; : : /* No ereport(ERROR) until changes are logged */ : START_CRIT_SECTION(); 0.00 : 4a9264: 8b 05 32 0e 71 00 mov 0x710e32(%rip),%eax # bba09c : rdata[0].data = (char *) &xlrec_reuse; : rdata[0].len = SizeOfBtreeReusePage; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = NULL; : : XLogInsert(RM_BTREE_ID, XLOG_BTREE_REUSE_PAGE, rdata); 0.00 : 4a926a: be d0 00 00 00 mov $0xd0,%esi 0.00 : 4a926f: bf 0b 00 00 00 mov $0xb,%edi : { : if (!RelationNeedsWAL(rel)) : return; : : /* No ereport(ERROR) until changes are logged */ : START_CRIT_SECTION(); 0.00 : 4a9274: 83 c0 01 add $0x1,%eax 0.00 : 4a9277: 89 05 1f 0e 71 00 mov %eax,0x710e1f(%rip) # bba09c : /* XLOG stuff */ : { : XLogRecData rdata[1]; : xl_btree_reuse_page xlrec_reuse; : : xlrec_reuse.node = rel->rd_node; 0.00 : 4a927d: 49 8b 06 mov (%r14),%rax 0.00 : 4a9280: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 4a9284: 41 8b 46 08 mov 0x8(%r14),%eax : xlrec_reuse.block = blkno; : xlrec_reuse.latestRemovedXid = latestRemovedXid; 0.00 : 4a9288: 89 55 d0 mov %edx,-0x30(%rbp) : rdata[0].data = (char *) &xlrec_reuse; : rdata[0].len = SizeOfBtreeReusePage; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = NULL; : : XLogInsert(RM_BTREE_ID, XLOG_BTREE_REUSE_PAGE, rdata); 0.00 : 4a928b: 48 8d 55 a0 lea -0x60(%rbp),%rdx : { : XLogRecData rdata[1]; : xl_btree_reuse_page xlrec_reuse; : : xlrec_reuse.node = rel->rd_node; : xlrec_reuse.block = blkno; 0.00 : 4a928f: 44 89 6d cc mov %r13d,-0x34(%rbp) : xlrec_reuse.latestRemovedXid = latestRemovedXid; : rdata[0].data = (char *) &xlrec_reuse; : rdata[0].len = SizeOfBtreeReusePage; 0.00 : 4a9293: c7 45 a8 14 00 00 00 movl $0x14,-0x58(%rbp) : rdata[0].buffer = InvalidBuffer; 0.00 : 4a929a: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) : /* XLOG stuff */ : { : XLogRecData rdata[1]; : xl_btree_reuse_page xlrec_reuse; : : xlrec_reuse.node = rel->rd_node; 0.00 : 4a92a1: 89 45 c8 mov %eax,-0x38(%rbp) : xlrec_reuse.block = blkno; : xlrec_reuse.latestRemovedXid = latestRemovedXid; : rdata[0].data = (char *) &xlrec_reuse; 0.00 : 4a92a4: 48 8d 45 c0 lea -0x40(%rbp),%rax : rdata[0].len = SizeOfBtreeReusePage; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = NULL; 0.00 : 4a92a8: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4a92af: 00 : xl_btree_reuse_page xlrec_reuse; : : xlrec_reuse.node = rel->rd_node; : xlrec_reuse.block = blkno; : xlrec_reuse.latestRemovedXid = latestRemovedXid; : rdata[0].data = (char *) &xlrec_reuse; 0.00 : 4a92b0: 48 89 45 a0 mov %rax,-0x60(%rbp) : rdata[0].len = SizeOfBtreeReusePage; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = NULL; : : XLogInsert(RM_BTREE_ID, XLOG_BTREE_REUSE_PAGE, rdata); 0.00 : 4a92b4: e8 67 bc 02 00 callq 4d4f20 : * We don't do PageSetLSN here because we're about to initialise the : * page, so no need. : */ : } : : END_CRIT_SECTION(); 0.00 : 4a92b9: 8b 05 dd 0d 71 00 mov 0x710ddd(%rip),%eax # bba09c 0.00 : 4a92bf: 83 e8 01 sub $0x1,%eax 0.00 : 4a92c2: 89 05 d4 0d 71 00 mov %eax,0x710dd4(%rip) # bba09c 0.00 : 4a92c8: e9 b8 fe ff ff jmpq 4a9185 <_bt_getbuf+0x135> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 23.40 ??:0 8.51 ??:0 8.51 ??:0 8.51 ??:0 8.51 ??:0 6.38 ??:0 4.26 ??:0 4.26 ??:0 4.26 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000a86a0 <__fork>: 0.00 : a86a0: 55 push %rbp 0.00 : a86a1: 48 89 e5 mov %rsp,%rbp 0.00 : a86a4: 41 56 push %r14 0.00 : a86a6: 41 55 push %r13 0.00 : a86a8: 41 54 push %r12 0.00 : a86aa: 53 push %rbx 0.00 : a86ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a86b0: 48 8b 1d b9 ed 2c 00 mov 0x2cedb9(%rip),%rbx # 377470 <__fork_handlers> 0.00 : a86b7: 48 85 db test %rbx,%rbx 0.00 : a86ba: 74 5c je a8718 <__fork+0x78> 0.00 : a86bc: 8b 4b 28 mov 0x28(%rbx),%ecx 0.00 : a86bf: 85 c9 test %ecx,%ecx 0.00 : a86c1: 74 ed je a86b0 <__fork+0x10> 0.00 : a86c3: 48 8b 35 a6 ed 2c 00 mov 0x2ceda6(%rip),%rsi # 377470 <__fork_handlers> 0.00 : a86ca: 8d 51 01 lea 0x1(%rcx),%edx 0.00 : a86cd: 89 c8 mov %ecx,%eax 0.00 : a86cf: f0 0f b1 56 28 lock cmpxchg %edx,0x28(%rsi) 0.00 : a86d4: 75 da jne a86b0 <__fork+0x10> 0.00 : a86d6: 45 31 e4 xor %r12d,%r12d 0.00 : a86d9: eb 0c jmp a86e7 <__fork+0x47> 0.00 : a86db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a86e0: f0 ff 43 28 lock incl 0x28(%rbx) 0.00 : a86e4: 49 89 c4 mov %rax,%r12 0.00 : a86e7: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : a86eb: 48 85 c0 test %rax,%rax 0.00 : a86ee: 74 02 je a86f2 <__fork+0x52> 0.00 : a86f0: ff d0 callq *%rax 0.00 : a86f2: 48 83 ec 20 sub $0x20,%rsp 0.00 : a86f6: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : a86fb: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : a86ff: 48 89 18 mov %rbx,(%rax) ??:0 2.13 : a8702: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : a8706: 48 8b 1b mov (%rbx),%rbx 0.00 : a8709: 48 85 db test %rbx,%rbx 0.00 : a870c: 75 d2 jne a86e0 <__fork+0x40> 0.00 : a870e: 49 89 c4 mov %rax,%r12 0.00 : a8711: eb 08 jmp a871b <__fork+0x7b> 0.00 : a8713: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a8718: 45 31 e4 xor %r12d,%r12d 0.00 : a871b: e8 f0 c4 fc ff callq 74c10 <_IO_list_lock> 0.00 : a8720: 64 44 8b 0c 25 d0 02 mov %fs:0x2d0,%r9d 0.00 : a8727: 00 00 2.13 : a8729: 64 44 8b 04 25 d4 02 mov %fs:0x2d4,%r8d 0.00 : a8730: 00 00 0.00 : a8732: 44 89 c0 mov %r8d,%eax 0.00 : a8735: f7 d8 neg %eax 0.00 : a8737: 64 89 04 25 d4 02 00 mov %eax,%fs:0x2d4 0.00 : a873e: 00 0.00 : a873f: 64 48 8b 1c 25 10 00 mov %fs:0x10,%rbx 0.00 : a8746: 00 00 0.00 : a8748: 31 d2 xor %edx,%edx 0.00 : a874a: 4c 8d 93 d0 02 00 00 lea 0x2d0(%rbx),%r10 0.00 : a8751: 31 f6 xor %esi,%esi 0.00 : a8753: bf 11 00 20 01 mov $0x1200011,%edi 0.00 : a8758: b8 38 00 00 00 mov $0x38,%eax 0.00 : a875d: 0f 05 syscall 2.13 : a875f: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : a8765: 0f 87 43 01 00 00 ja a88ae <__fork+0x20e> 2.13 : a876b: 85 c0 test %eax,%eax 0.00 : a876d: 41 89 c6 mov %eax,%r14d 2.13 : a8770: 0f 85 5a 01 00 00 jne a88d0 <__fork+0x230> 2.13 : a8776: 64 8b 04 25 d0 02 00 mov %fs:0x2d0,%eax 0.00 : a877d: 00 0.00 : a877e: 41 39 c1 cmp %eax,%r9d 0.00 : a8781: 0f 84 ea 01 00 00 je a8971 <__fork+0x2d1> 0.00 : a8787: 48 8b 05 da ec 2c 00 mov 0x2cecda(%rip),%rax # 377468 <__fork_generation_pointer> ??:0 8.51 : a878e: 48 85 c0 test %rax,%rax 0.00 : a8791: 74 04 je a8797 <__fork+0xf7> 0.00 : a8793: 48 83 00 04 addq $0x4,(%rax) 0.00 : a8797: 64 8b 04 25 d0 02 00 mov %fs:0x2d0,%eax 0.00 : a879e: 00 0.00 : a879f: 64 89 04 25 d4 02 00 mov %eax,%fs:0x2d4 0.00 : a87a6: 00 0.00 : a87a7: 0f 31 rdtsc 0.00 : a87a9: 48 c1 e2 20 shl $0x20,%rdx 0.00 : a87ad: 89 c0 mov %eax,%eax 0.00 : a87af: 48 09 c2 or %rax,%rdx 0.00 : a87b2: 64 48 89 14 25 20 06 mov %rdx,%fs:0x620 0.00 : a87b9: 00 00 0.00 : a87bb: 8b 0d ef ee 2c 00 mov 0x2ceeef(%rip),%ecx # 3776b0 <__libc_pthread_functions_init> 0.00 : a87c1: 4c 8b 2d f0 95 2c 00 mov 0x2c95f0(%rip),%r13 # 371db8 <_DYNAMIC+0x258> 23.40 : a87c8: 85 c9 test %ecx,%ecx 8.51 : a87ca: 49 89 95 40 09 00 00 mov %rdx,0x940(%r13) ??:0 2.13 : a87d1: 0f 85 b9 01 00 00 jne a8990 <__fork+0x2f0> 4.26 : a87d7: e8 f4 c3 fc ff callq 74bd0 <_IO_iter_begin> 0.00 : a87dc: 48 89 c3 mov %rax,%rbx 0.00 : a87df: eb 36 jmp a8817 <__fork+0x177> 0.00 : a87e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : a87e8: 48 89 df mov %rbx,%rdi 0.00 : a87eb: e8 10 c4 fc ff callq 74c00 <_IO_iter_file> 0.00 : a87f0: 48 8b 80 88 00 00 00 mov 0x88(%rax),%rax 2.13 : a87f7: 48 89 df mov %rbx,%rdi ??:0 6.38 : a87fa: c7 00 00 00 00 00 movl $0x0,(%rax) ??:0 2.13 : a8800: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) 0.00 : a8807: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : a880e: 00 0.00 : a880f: e8 dc c3 fc ff callq 74bf0 <_IO_iter_next> 0.00 : a8814: 48 89 c3 mov %rax,%rbx 0.00 : a8817: e8 c4 c3 fc ff callq 74be0 <_IO_iter_end> 0.00 : a881c: 48 39 c3 cmp %rax,%rbx 0.00 : a881f: 75 c7 jne a87e8 <__fork+0x148> 2.13 : a8821: e8 8a c4 fc ff callq 74cb0 <_IO_list_resetlock> 0.00 : a8826: 4d 85 e4 test %r12,%r12 0.00 : a8829: 49 c7 85 18 09 00 00 movq $0x0,0x918(%r13) 0.00 : a8830: 00 00 00 00 0.00 : a8834: 49 c7 85 08 09 00 00 movq $0x0,0x908(%r13) 0.00 : a883b: 00 00 00 00 0.00 : a883f: 49 c7 85 10 09 00 00 movq $0x0,0x910(%r13) 0.00 : a8846: 00 00 00 00 0.00 : a884a: 49 c7 85 20 09 00 00 movq $0x0,0x920(%r13) 0.00 : a8851: 00 00 00 00 0.00 : a8855: 49 c7 85 28 09 00 00 movq $0x0,0x928(%r13) 0.00 : a885c: 00 00 00 00 0.00 : a8860: 41 c7 85 18 09 00 00 movl $0x1,0x918(%r13) 0.00 : a8867: 01 00 00 00 0.00 : a886b: 74 27 je a8894 <__fork+0x1f4> 0.00 : a886d: 0f 1f 00 nopl (%rax) 0.00 : a8870: 49 8b 04 24 mov (%r12),%rax 2.13 : a8874: 48 8b 50 18 mov 0x18(%rax),%rdx ??:0 8.51 : a8878: 48 85 d2 test %rdx,%rdx 0.00 : a887b: 74 06 je a8883 <__fork+0x1e3> 0.00 : a887d: ff d2 callq *%rdx 0.00 : a887f: 49 8b 04 24 mov (%r12),%rax 0.00 : a8883: c7 40 28 01 00 00 00 movl $0x1,0x28(%rax) 0.00 : a888a: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : a888f: 4d 85 e4 test %r12,%r12 0.00 : a8892: 75 dc jne a8870 <__fork+0x1d0> ??:0 4.26 : a8894: c7 05 22 cf 2c 00 00 movl $0x0,0x2ccf22(%rip) # 3757c0 <__fork_lock> 0.00 : a889b: 00 00 00 0.00 : a889e: 48 8d 65 e0 lea -0x20(%rbp),%rsp 0.00 : a88a2: 44 89 f0 mov %r14d,%eax 0.00 : a88a5: 5b pop %rbx 0.00 : a88a6: 41 5c pop %r12 0.00 : a88a8: 41 5d pop %r13 0.00 : a88aa: 41 5e pop %r14 0.00 : a88ac: c9 leaveq 0.00 : a88ad: c3 retq 0.00 : a88ae: 89 c1 mov %eax,%ecx 0.00 : a88b0: 48 8b 15 81 95 2c 00 mov 0x2c9581(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : a88b7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : a88be: 00 00 0.00 : a88c0: f7 d9 neg %ecx 0.00 : a88c2: 41 be ff ff ff ff mov $0xffffffff,%r14d 0.00 : a88c8: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : a88cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a88d0: 64 8b 04 25 d0 02 00 mov %fs:0x2d0,%eax 0.00 : a88d7: 00 0.00 : a88d8: 41 39 c1 cmp %eax,%r9d 0.00 : a88db: 75 75 jne a8952 <__fork+0x2b2> 4.26 : a88dd: 64 44 89 04 25 d4 02 mov %r8d,%fs:0x2d4 0.00 : a88e4: 00 00 ??:0 8.51 : a88e6: e8 75 c3 fc ff callq 74c60 <_IO_list_unlock> 0.00 : a88eb: 4d 85 e4 test %r12,%r12 0.00 : a88ee: 74 ae je a889e <__fork+0x1fe> 0.00 : a88f0: bb ca 00 00 00 mov $0xca,%ebx 0.00 : a88f5: 0f 1f 00 nopl (%rax) 0.00 : a88f8: 49 8b 14 24 mov (%r12),%rdx 0.00 : a88fc: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : a8900: 48 85 c0 test %rax,%rax 0.00 : a8903: 74 06 je a890b <__fork+0x26b> 0.00 : a8905: ff d0 callq *%rax 0.00 : a8907: 49 8b 14 24 mov (%r12),%rdx 0.00 : a890b: f0 ff 4a 28 lock decl 0x28(%rdx) 0.00 : a890f: 0f 94 c0 sete %al 0.00 : a8912: 84 c0 test %al,%al 0.00 : a8914: 74 22 je a8938 <__fork+0x298> 0.00 : a8916: 49 8b 04 24 mov (%r12),%rax 0.00 : a891a: 8b 50 2c mov 0x2c(%rax),%edx 0.00 : a891d: 85 d2 test %edx,%edx 0.00 : a891f: 74 17 je a8938 <__fork+0x298> 0.00 : a8921: ba 01 00 00 00 mov $0x1,%edx 0.00 : a8926: 64 8b 34 25 48 00 00 mov %fs:0x48,%esi 0.00 : a892d: 00 0.00 : a892e: 8b 78 28 mov 0x28(%rax),%edi 0.00 : a8931: 83 ce 01 or $0x1,%esi 0.00 : a8934: 89 d8 mov %ebx,%eax 0.00 : a8936: 0f 05 syscall 0.00 : a8938: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : a893d: 4d 85 e4 test %r12,%r12 0.00 : a8940: 75 b6 jne a88f8 <__fork+0x258> 0.00 : a8942: 48 8d 65 e0 lea -0x20(%rbp),%rsp 0.00 : a8946: 44 89 f0 mov %r14d,%eax 0.00 : a8949: 5b pop %rbx 0.00 : a894a: 41 5c pop %r12 0.00 : a894c: 41 5d pop %r13 0.00 : a894e: 41 5e pop %r14 0.00 : a8950: c9 leaveq 0.00 : a8951: c3 retq 0.00 : a8952: 48 8d 0d 72 39 09 00 lea 0x93972(%rip),%rcx # 13c2cb <__PRETTY_FUNCTION__.14012> 0.00 : a8959: 48 8d 35 70 86 09 00 lea 0x98670(%rip),%rsi # 140fd0 <__PRETTY_FUNCTION__.11129+0x35f7> 0.00 : a8960: 48 8d 3d 79 88 09 00 lea 0x98879(%rip),%rdi # 1411e0 <__PRETTY_FUNCTION__.11129+0x3807> 0.00 : a8967: ba d4 00 00 00 mov $0xd4,%edx 0.00 : a896c: e8 af 2f f8 ff callq 2b920 <__assert_fail> 0.00 : a8971: 48 8d 0d 53 39 09 00 lea 0x93953(%rip),%rcx # 13c2cb <__PRETTY_FUNCTION__.14012> 0.00 : a8978: 48 8d 35 51 86 09 00 lea 0x98651(%rip),%rsi # 140fd0 <__PRETTY_FUNCTION__.11129+0x35f7> 0.00 : a897f: 48 8d 3d 82 86 09 00 lea 0x98682(%rip),%rdi # 141008 <__PRETTY_FUNCTION__.11129+0x362f> 0.00 : a8986: ba 8e 00 00 00 mov $0x8e,%edx 0.00 : a898b: e8 90 2f f8 ff callq 2b920 <__assert_fail> 0.00 : a8990: 48 8b 05 11 ed 2c 00 mov 0x2ced11(%rip),%rax # 3776a8 <__libc_pthread_functions+0x1a8> 0.00 : a8997: 48 89 df mov %rbx,%rdi 0.00 : a899a: 48 c1 c8 11 ror $0x11,%rax 0.00 : a899e: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : a89a5: 00 00 0.00 : a89a7: ff d0 callq *%rax 0.00 : a89a9: e9 29 fe ff ff jmpq a87d7 <__fork+0x137> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 17.54 ??:0 12.28 ??:0 8.77 ??:0 8.77 ??:0 7.02 ??:0 7.02 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 3.51 ??:0 3.51 ??:0 3.51 ??:0 3.51 ??:0 1.75 ??:0 1.75 ??:0 1.75 ??:0 1.75 ??:0 1.75 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000320 : ??:0 31.58 : 320: 48 83 ec 38 sub $0x38,%rsp 0.00 : 354: 4c 89 add %al,(%rax) 0.00 : 356: 64 24 18 mov %rcx,%r14 0.00 : 359: 4c 89 6c shr $0x5,%bl 0.00 : 35c: 24 20 49 test %rbp,%rbp 0.00 : 35f: 89 f4 je 3e0 0.00 : 361: 4c 89 74 24 mov 0x78(%rbp),%rax 17.54 : 365: 28 4c 89 test $0x10,%ah 0.00 : 368: 7c 24 jne 3e0 8.77 : 36a: 30 41 89 fd 48 89 5c mov 0xe0(%rbp),%rdx 7.02 : 371: 24 08 48 test %rdx,%rdx 0.00 : 374: 89 6c je 3d0 0.00 : 376: 24 10 49 89 movzbl 0x11(%rdx),%eax 12.28 : 37a: d7 0f test %al,%al 0.00 : 37c: b6 5e je 3d0 ??:0 3.51 : 37e: 7c 48 8b movzbl %al,%eax ??:0 5.26 : 381: ae 88 00 add %rax,%rdx 0.00 : 384: 00 00 je 3d0 ??:0 3.51 : 386: 49 89 ce cmp $0x2,%bl 0.00 : 389: c0 eb 05 48 movzbl %bl,%r9d 0.00 : 38d: 85 ed 74 7f 48 8b je 42b 0.00 : 393: 45 78 f6 cmp $0x4,%bl 0.00 : 396: c4 10 je 410 0.00 : 398: 75 76 48 sub $0x1,%bl 0.00 : 39b: 8b 95 je 410 0.00 : 39d: e0 00 00 mov %r12,%rcx 0.00 : 3a0: 00 48 85 mov %r13d,%edx 0.00 : 3a3: d2 74 5a mov %rbp,%rdi 0.00 : 3a6: 0f b6 42 11 84 mov 0x8(%rsp),%rbx 0.00 : 3ab: c0 74 52 0f b6 mov 0x10(%rsp),%rbp 0.00 : 3b0: c0 48 01 mov %r9d,%esi 0.00 : 3b3: c2 74 4a 80 fb mov 0x18(%rsp),%r12 1.75 : 3b8: 02 44 0f b6 cb mov 0x20(%rsp),%r13 0.00 : 3bd: 0f 84 98 00 00 mov 0x28(%rsp),%r14 0.00 : 3c2: 00 80 fb 04 74 mov 0x30(%rsp),%r15 0.00 : 3c7: 78 80 eb 01 add $0x38,%rsp 1.75 : 3cb: 74 73 4c 89 e1 jmpq 3d0 3.51 : 3d0: 44 89 ea 48 mov 0x78(%rbp),%rax 0.00 : 3d4: 89 ef test $0x8,%al 0.00 : 3d6: 48 8b 5c 24 08 48 je 4e0 0.00 : 3dc: 8b 6c 24 10 nopl 0x0(%rax) 0.00 : 3e0: 44 89 ce 4c 8b mov $0x1,%eax 1.75 : 3e5: 64 24 18 4c 8b mov 0x8(%rsp),%rbx 0.00 : 3ea: 6c 24 20 4c 8b mov 0x10(%rsp),%rbp 0.00 : 3ef: 74 24 28 4c 8b mov 0x18(%rsp),%r12 1.75 : 3f4: 7c 24 30 48 83 mov 0x20(%rsp),%r13 0.00 : 3f9: c4 38 e9 00 00 mov 0x28(%rsp),%r14 0.00 : 3fe: 00 00 48 8b 45 mov 0x30(%rsp),%r15 0.00 : 403: 78 a8 08 0f add $0x38,%rsp 0.00 : 407: 84 retq 0.00 : 408: 04 01 00 00 0f 1f 40 nopl 0x0(%rax,%rax,1) 0.00 : 40f: 00 0.00 : 410: b8 01 00 00 00 48 8b mov 0xc4(%r12),%edx 0.00 : 417: 5c 0.00 : 418: 24 08 48 8b 6c 24 10 mov 0xd8(%r12),%rax 0.00 : 41f: 4c 0.00 : 420: 8b 64 24 18 4c cmpb $0x1,0x9(%rax,%rdx,1) 0.00 : 425: 8b 6c 24 20 4c 8b je 528 0.00 : 42b: 74 24 28 4c cmp $0x4,%r13d 0.00 : 42f: 8b 7c 24 setne %dl 0.00 : 432: 30 48 xor %eax,%eax 0.00 : 434: 83 c4 38 c3 cmp $0x1,%r13d 0.00 : 438: 0f 1f 84 setne %al 0.00 : 43b: 00 00 mov %eax,%ecx 0.00 : 43d: 00 00 and %edx,%ecx 0.00 : 43f: 00 41 8b 94 24 c4 jne 4d0 0.00 : 445: 00 00 00 49 mov 0x78(%rbp),%rax 0.00 : 449: 8b 84 24 d8 00 and $0x80,%eax 0.00 : 44e: 00 00 test %eax,%eax 0.00 : 450: 80 7c jne 480 0.00 : 452: 10 09 01 mov %rbp,%r8 0.00 : 455: 0f 84 fd mov %r14,%rcx 0.00 : 458: 00 00 00 mov %r15,%rdx 0.00 : 45b: 41 83 fd mov %r13d,%esi 0.00 : 45e: 04 0f 95 mov %r12,%rdi 0.00 : 461: c2 31 c0 41 mov %r9d,(%rsp) 0.00 : 465: 83 fd 01 0f 95 callq 46a 0.00 : 46a: c0 89 c1 cmp $0x1,%eax 0.00 : 46d: 21 d1 0f 85 mov (%rsp),%r9d 0.00 : 471: 8b 00 00 00 48 8b jne 3e5 0.00 : 477: 45 78 25 80 00 jmpq 39d 0.00 : 47c: 00 00 85 c0 nopl 0x0(%rax) 0.00 : 480: 75 2e 49 89 e8 4c 89 cmpb $0x0,0x0(%rip) # 487 0.00 : 487: f1 4c 89 fa 44 89 je 39d 0.00 : 48d: ee 4c test %ecx,%ecx 0.00 : 48f: 89 e7 44 89 0c 24 e8 mov $0x0,%rax 0.00 : 496: 00 00 00 00 83 f8 01 mov $0x0,%rdx 0.00 : 49d: 44 8b 0c 24 cmove %rax,%rdx 0.00 : 4a1: 0f 85 6e mov %rbp,%rcx 0.00 : 4a4: ff ff ff e9 21 ff ff mov $0x0,%rsi 0.00 : 4ab: ff 0f 1f 40 00 80 3d mov $0x0,%rdi 0.00 : 4b2: 00 00 xor %eax,%eax 0.00 : 4b4: 00 00 00 0f mov %r9d,(%rsp) 0.00 : 4b8: 84 10 ff ff ff callq 4bd 0.00 : 4bd: 85 c9 48 c7 mov (%rsp),%r9d 0.00 : 4c1: c0 00 00 00 00 jmpq 39d 0.00 : 4c6: 48 c7 c2 00 00 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4cd: 48 0f 44 0.00 : 4d0: d0 48 89 e9 mov 0x78(%rbp),%rax 0.00 : 4d4: 48 c7 c6 00 00 and $0x100,%eax 0.00 : 4d9: 00 00 48 c7 c7 jmpq 44e 0.00 : 4de: 00 00 xchg %ax,%ax 0.00 : 4e0: 00 00 31 c0 44 mov $0x20,%edx 0.00 : 4e5: 89 0c 24 e8 00 mov $0x1,%esi 0.00 : 4ea: 00 00 00 mov %rbp,%rdi 0.00 : 4ed: 44 8b 0c 24 e9 callq 4f2 0.00 : 4f2: d7 fe ff test %rax,%rax 0.00 : 4f5: ff 66 2e 0f 1f 84 jne 386 0.00 : 4fb: 00 00 00 00 00 48 8b cmpb $0x0,0x0(%rip) # 502 0.00 : 502: 45 78 25 00 01 00 je 3e0 0.00 : 508: 00 e9 70 ff ff ff 66 mov $0x0,%rsi 0.00 : 50f: 90 ba 20 00 00 00 be mov $0x0,%rdi 0.00 : 516: 01 00 00 00 48 callq 51b 0.00 : 51b: 89 ef e8 00 00 mov $0x1,%eax 0.00 : 520: 00 00 48 85 c0 jmpq 3e5 0.00 : 525: 0f 85 8b nopl (%rax) 0.00 : 528: fe ff ff mov %r12,%rcx 0.00 : 52b: 80 3d 00 mov %r13d,%edx 0.00 : 52e: 00 00 00 mov %r9d,%esi 0.00 : 531: 00 0f 84 mov %rbp,%rdi 0.00 : 534: d8 fe ff ff 48 callq 539 0.00 : 539: c7 c6 test %eax,%eax 0.00 : 53b: 00 00 00 setne %al 0.00 : 53e: 00 48 c7 movzbl %al,%eax 0.00 : 541: c7 00 00 00 00 jmpq 3e5 : 546: e8 00 00 00 00 b8 01 nopw %cs:0x0(%rax,%rax,1) : 54d: 00 00 00 : 550: e9 c0 fe ff sub $0x18,%rsp : 554: ff 0f 1f 00 4c mov %rbx,0x8(%rsp) : 559: 89 e1 44 mov %rsi,%rbx : 55c: 89 ea 44 89 ce mov %rbp,0x10(%rsp) : 561: 48 89 ef e8 cmpl $0x13,0x68(%rbx) : 565: 00 00 00 mov %rdx,%rsi : 568: 00 85 jbe 586 : 56a: c0 0f 95 c0 0f b6 mov 0xc4(%rbx),%edx : 570: c0 e9 9f fe ff ff 66 mov 0xd8(%rbx),%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.64 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:459 16.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 16.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:449 8.93 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:449 5.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:425 5.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:425 3.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:440 3.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:442 3.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:454 3.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:459 1.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:425 1.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:449 1.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:444 1.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:445 1.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:459 1.79 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:459 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a8e00 : : */ : TupleHashEntry : FindTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, : FmgrInfo *eqfunctions, : FmgrInfo *hashfunctions) : { 0.00 : 5a8e00: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:425 3.57 : 5a8e01: 48 89 e5 mov %rsp,%rbp 0.00 : 5a8e04: 41 54 push %r12 1.79 : 5a8e06: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:425 5.36 : 5a8e07: 48 83 ec 10 sub $0x10,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5a8e0b: 48 8b 47 30 mov 0x30(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:93 16.07 : 5a8e0f: 4c 8b 25 4a 1a 61 00 mov 0x611a4a(%rip),%r12 # bba860 : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 5.36 : 5a8e16: 48 89 05 43 1a 61 00 mov %rax,0x611a43(%rip) # bba860 : * Set up data needed by hash and match functions : * : * We save and restore CurTupleHashTable just in case someone manages to : * invoke this code re-entrantly. : */ : hashtable->inputslot = slot; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:440 3.57 : 5a8e1d: 48 89 77 48 mov %rsi,0x48(%rdi) : saveCurHT = CurTupleHashTable; : CurTupleHashTable = hashtable; : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ : entry = (TupleHashEntry) hash_search(hashtable->hashtab, /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:449 16.07 : 5a8e21: 48 8d 75 e0 lea -0x20(%rbp),%rsi : * : * We save and restore CurTupleHashTable just in case someone manages to : * invoke this code re-entrantly. : */ : hashtable->inputslot = slot; : hashtable->in_hash_funcs = hashfunctions; 0.00 : 5a8e25: 48 89 4f 50 mov %rcx,0x50(%rdi) : hashtable->cur_eq_funcs = eqfunctions; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:442 3.57 : 5a8e29: 48 89 57 58 mov %rdx,0x58(%rdi) : saveCurHT = CurTupleHashTable; : CurTupleHashTable = hashtable; : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ : entry = (TupleHashEntry) hash_search(hashtable->hashtab, /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:449 1.79 : 5a8e2d: 31 c9 xor %ecx,%ecx : */ : hashtable->inputslot = slot; : hashtable->in_hash_funcs = hashfunctions; : hashtable->cur_eq_funcs = eqfunctions; : : saveCurHT = CurTupleHashTable; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:444 1.79 : 5a8e2f: 48 8b 1d 8a 0a 5d 00 mov 0x5d0a8a(%rip),%rbx # b798c0 : CurTupleHashTable = hashtable; : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ 0.00 : 5a8e36: 48 c7 45 e0 00 00 00 movq $0x0,-0x20(%rbp) 0.00 : 5a8e3d: 00 : entry = (TupleHashEntry) hash_search(hashtable->hashtab, /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:449 8.93 : 5a8e3e: 31 d2 xor %edx,%edx : hashtable->inputslot = slot; : hashtable->in_hash_funcs = hashfunctions; : hashtable->cur_eq_funcs = eqfunctions; : : saveCurHT = CurTupleHashTable; : CurTupleHashTable = hashtable; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:445 1.79 : 5a8e40: 48 89 3d 79 0a 5d 00 mov %rdi,0x5d0a79(%rip) # b798c0 : : /* Search the hash table */ : dummy.firstTuple = NULL; /* flag to reference inputslot */ : entry = (TupleHashEntry) hash_search(hashtable->hashtab, 0.00 : 5a8e47: 48 8b 3f mov (%rdi),%rdi 0.00 : 5a8e4a: e8 51 b8 1d 00 callq 7846a0 : &dummy, : HASH_FIND, : NULL); : : CurTupleHashTable = saveCurHT; /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:454 3.57 : 5a8e4f: 48 89 1d 6a 0a 5d 00 mov %rbx,0x5d0a6a(%rip) # b798c0 0.00 : 5a8e56: 4c 89 25 03 1a 61 00 mov %r12,0x611a03(%rip) # bba860 : : MemoryContextSwitchTo(oldContext); : : return entry; : } 0.00 : 5a8e5d: 48 83 c4 10 add $0x10,%rsp /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:459 3.57 : 5a8e61: 5b pop %rbx 1.79 : 5a8e62: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/execGrouping.c:459 21.43 : 5a8e64: c9 leaveq Sorted summary for file /bin/bash ---------------------------------------------- 21.62 ??:0 21.62 ??:0 13.51 ??:0 5.41 ??:0 5.41 ??:0 5.41 ??:0 5.41 ??:0 2.70 ??:0 2.70 ??:0 2.70 ??:0 2.70 ??:0 2.70 ??:0 2.70 ??:0 2.70 ??:0 2.70 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000444710 : 5.41 : 444710: 41 57 push %r15 5.41 : 444712: 49 89 ff mov %rdi,%r15 0.00 : 444715: 41 56 push %r14 0.00 : 444717: 41 55 push %r13 ??:0 2.70 : 444719: 49 89 f5 mov %rsi,%r13 0.00 : 44471c: 41 54 push %r12 0.00 : 44471e: 55 push %rbp 0.00 : 44471f: 53 push %rbx 0.00 : 444720: 48 83 ec 08 sub $0x8,%rsp 0.00 : 444724: 48 85 f6 test %rsi,%rsi 0.00 : 444727: 0f 84 9d 00 00 00 je 4447ca 0.00 : 44472d: 83 e2 02 and $0x2,%edx 2.70 : 444730: 89 54 24 04 mov %edx,0x4(%rsp) 0.00 : 444734: 0f 84 df 00 00 00 je 444819 2.70 : 44473a: 45 0f b6 27 movzbl (%r15),%r12d ??:0 5.41 : 44473e: 31 ed xor %ebp,%ebp 0.00 : 444740: 45 31 f6 xor %r14d,%r14d 0.00 : 444743: 45 84 e4 test %r12b,%r12b 0.00 : 444746: 74 31 je 444779 0.00 : 444748: 4c 89 f9 mov %r15,%rcx 0.00 : 44474b: 44 89 e2 mov %r12d,%edx 0.00 : 44474e: 31 ed xor %ebp,%ebp 0.00 : 444750: 48 83 c1 01 add $0x1,%rcx 0.00 : 444754: 69 c5 93 01 00 01 imul $0x1000193,%ebp,%eax ??:0 2.70 : 44475a: 0f be ea movsbl %dl,%ebp 0.00 : 44475d: 0f b6 11 movzbl (%rcx),%edx 0.00 : 444760: 31 c5 xor %eax,%ebp 0.00 : 444762: 84 d2 test %dl,%dl 0.00 : 444764: 75 ea jne 444750 0.00 : 444766: 41 8b 45 08 mov 0x8(%r13),%eax 2.70 : 44476a: 83 e8 01 sub $0x1,%eax 0.00 : 44476d: 21 e8 and %ebp,%eax 0.00 : 44476f: 48 98 cltq 0.00 : 444771: 4c 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%r14 0.00 : 444778: 00 0.00 : 444779: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 44477d: 4a 8b 1c 30 mov (%rax,%r14,1),%rbx ??:0 13.51 : 444781: 48 85 db test %rbx,%rbx 0.00 : 444784: 75 12 jne 444798 0.00 : 444786: eb 38 jmp 4447c0 0.00 : 444788: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 44478f: 00 0.00 : 444790: 48 8b 1b mov (%rbx),%rbx 0.00 : 444793: 48 85 db test %rbx,%rbx 0.00 : 444796: 74 28 je 4447c0 0.00 : 444798: 39 6b 18 cmp %ebp,0x18(%rbx) 21.62 : 44479b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4447a0: 75 ee jne 444790 0.00 : 4447a2: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 4447a6: 44 38 27 cmp %r12b,(%rdi) 0.00 : 4447a9: 75 e5 jne 444790 5.41 : 4447ab: 4c 89 fe mov %r15,%rsi 0.00 : 4447ae: e8 7d 21 fd ff callq 416930 0.00 : 4447b3: 85 c0 test %eax,%eax 0.00 : 4447b5: 75 d9 jne 444790 21.62 : 4447b7: 83 43 1c 01 addl $0x1,0x1c(%rbx) ??:0 2.70 : 4447bb: eb 0f jmp 4447cc 0.00 : 4447bd: 0f 1f 00 nopl (%rax) 0.00 : 4447c0: 44 8b 44 24 04 mov 0x4(%rsp),%r8d 0.00 : 4447c5: 45 85 c0 test %r8d,%r8d 0.00 : 4447c8: 75 16 jne 4447e0 0.00 : 4447ca: 31 db xor %ebx,%ebx 0.00 : 4447cc: 48 83 c4 08 add $0x8,%rsp 0.00 : 4447d0: 48 89 d8 mov %rbx,%rax 0.00 : 4447d3: 5b pop %rbx 0.00 : 4447d4: 5d pop %rbp 0.00 : 4447d5: 41 5c pop %r12 2.70 : 4447d7: 41 5d pop %r13 0.00 : 4447d9: 41 5e pop %r14 0.00 : 4447db: 41 5f pop %r15 0.00 : 4447dd: c3 retq 0.00 : 4447de: 66 90 xchg %ax,%ax 0.00 : 4447e0: bf 20 00 00 00 mov $0x20,%edi 0.00 : 4447e5: e8 d6 3a 01 00 callq 4582c0 0.00 : 4447ea: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 4447ee: 48 89 c3 mov %rax,%rbx 0.00 : 4447f1: 89 6b 18 mov %ebp,0x18(%rbx) 0.00 : 4447f4: c7 43 1c 00 00 00 00 movl $0x0,0x1c(%rbx) 0.00 : 4447fb: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 444802: 00 0.00 : 444803: 4c 89 7b 08 mov %r15,0x8(%rbx) 0.00 : 444807: 4a 8b 04 32 mov (%rdx,%r14,1),%rax 0.00 : 44480b: 41 83 45 0c 01 addl $0x1,0xc(%r13) 0.00 : 444810: 48 89 03 mov %rax,(%rbx) 0.00 : 444813: 4a 89 1c 32 mov %rbx,(%rdx,%r14,1) 0.00 : 444817: eb b3 jmp 4447cc 2.70 : 444819: 44 8b 4e 0c mov 0xc(%rsi),%r9d 0.00 : 44481d: 45 85 c9 test %r9d,%r9d 0.00 : 444820: 0f 85 14 ff ff ff jne 44473a 0.00 : 444826: eb a2 jmp 4447ca Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ---------------------------------------------- 56.82 ??:0 11.36 ??:0 6.82 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000010 : ??:0 70.45 : 10: 55 push %rbp 11.36 : 41: 48 89 f5 53 48 83 je 105 0.00 : 47: ec 08 48 8b 46 18 48 mov 0x88(%rbp),%rax 0.00 : 4e: 85 c0 74 test %rax,%rax 0.00 : 51: 0b 66 83 78 0c 02 je 118 0.00 : 57: 0f 84 cb 00 00 00 8b mov 0xe0(%rax),%rdx 0.00 : 5e: 95 c4 00 test %rdx,%rdx 0.00 : 61: 00 00 48 8b 85 d8 je 118 0.00 : 67: 00 00 00 66 movzbl 0x14(%rdx),%eax 0.00 : 6b: f7 44 test %al,%al 0.00 : 6d: 10 06 3f ff 0f 84 je 118 0.00 : 73: be 00 00 movzbl %al,%eax 0.00 : 76: 00 48 8b add %rdx,%rax 0.00 : 79: 85 88 00 00 00 48 je 118 0.00 : 7f: 85 c0 0f movzwl (%rax),%eax 0.00 : 82: 84 c1 00 00 00 48 8b mov 0x98(%rbp),%rdx 0.00 : 89: 90 e0 00 test %rdx,%rdx 0.00 : 8c: 00 00 je 9a 0.00 : 8e: 48 85 d2 0f testb $0x8,0x18(%rdx) 0.00 : 92: 84 b1 00 00 00 0f lea 0x20002(%rax),%ebx 0.00 : 98: b6 42 jne a7 0.00 : 9a: 14 84 c0 lea 0x2(%rax),%ebx 0.00 : 9d: 0f 84 a5 00 00 add $0x10002,%eax 0.00 : a2: 00 0f test %edi,%edi 0.00 : a4: b6 c0 48 cmovne %eax,%ebx 0.00 : a7: 01 d0 0f 84 99 00 00 mov 0x80(%rbp),%rax 0.00 : ae: 00 0f b7 test %rax,%rax 0.00 : b1: 00 48 je b8 0.00 : b3: 8b 95 98 mov %rbp,%rdi 0.00 : b6: 00 00 callq *%rax 0.00 : b8: 00 48 85 d2 74 0c f6 movq $0x0,0x80(%rbp) 0.00 : bf: 42 18 08 8d 0.00 : c3: 98 02 00 02 00 75 0d movq $0x0,0x18(%rbp) 0.00 : ca: 8d 0.00 : cb: 58 02 05 02 00 callq d0 0.00 : d0: 01 00 mov %ebx,%esi 0.00 : d2: 85 ff 0f mov %rbp,%rdi 0.00 : d5: 45 d8 48 8b 85 callq da 0.00 : da: 80 00 mov %eax,%ebx 0.00 : dc: 00 00 48 85 c0 callq e1 0.00 : e1: 74 05 test %ebx,%ebx 0.00 : e3: 48 89 ef ff d0 mov $0x2,%eax 0.00 : e8: 48 c7 je 120 0.00 : ea: 85 80 00 00 add $0x8,%rsp 0.00 : ee: 00 pop %rbx 0.00 : ef: 00 pop %rbp 0.00 : f0: 00 retq 0.00 : f1: 00 00 48 c7 45 18 00 nopl 0x0(%rax) ??:0 2.27 : f8: 00 00 00 e8 00 00 00 cmpb $0x0,0x29c(%rax) 4.55 : ff: 00 89 de 48 89 ef jns 2d 4.55 : 105: e8 00 00 00 add $0x8,%rsp 0.00 : 109: 00 89 c3 e8 00 mov $0x1,%eax 0.00 : 10e: 00 pop %rbx ??:0 6.82 : 10f: 00 pop %rbp 0.00 : 110: 00 retq 0.00 : 111: 85 db b8 02 00 00 00 nopl 0x0(%rax) 0.00 : 118: 74 36 xor %eax,%eax 0.00 : 11a: 48 83 c4 08 5b jmpq 82 0.00 : 11f: 5d nop 0.00 : 120: c3 0f 1f 80 00 00 mov 0xc4(%rbp),%edi 0.00 : 126: 00 00 80 b8 9c 02 00 add 0xd8(%rbp),%rdi 0.00 : 12d: 00 00 0f 89 28 callq 132 0.00 : 132: ff ff ff 48 add $0x8,%rsp 0.00 : 136: 83 c4 08 b8 01 mov $0x1,%eax 0.00 : 13b: 00 pop %rbx 0.00 : 13c: 00 pop %rbp 0.00 : 13d: 00 retq : 13e: 5b 5d xchg %ax,%ax : 140: Address 0x0000000000000140 is out of bounds. : Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 23.33 ??:0 20.00 ??:0 13.33 ??:0 10.00 ??:0 10.00 ??:0 6.67 ??:0 6.67 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000003bb0 : : return __ixgbe_maybe_stop_tx(tx_ring, size); : } : : #ifdef HAVE_NETDEV_SELECT_QUEUE : static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb) : { ??:0 6.67 : 3bb0: 48 83 ec 38 sub $0x38,%rsp 23.33 : 3bb4: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 10.00 : 3bb9: 4c 89 64 24 20 mov %r12,0x20(%rsp) 0.00 : 3bbe: 48 89 f3 mov %rsi,%rbx 10.00 : 3bc1: 4c 89 6c 24 28 mov %r13,0x28(%rsp) 0.00 : 3bc6: 48 89 6c 24 18 mov %rbp,0x18(%rsp) 0.00 : 3bcb: 49 89 fd mov %rdi,%r13 0.00 : 3bce: 4c 89 74 24 30 mov %r14,0x30(%rsp) : return skb->queue_mapping - 1; : } : : static inline bool skb_rx_queue_recorded(const struct sk_buff *skb) : { : return skb->queue_mapping != 0; 0.00 : 3bd3: 0f b7 86 ac 00 00 00 movzwl 0xac(%rsi),%eax : struct ixgbe_adapter *adapter = netdev_priv(dev); 0.00 : 3bda: 4c 8d a7 00 08 00 00 lea 0x800(%rdi),%r12 : int txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : : smp_processor_id(); 0.00 : 3be1: 66 85 c0 test %ax,%ax 0.00 : 3be4: 0f 84 de 00 00 00 je 3cc8 0.00 : 3bea: 83 e8 01 sub $0x1,%eax 0.00 : 3bed: 0f b7 e8 movzwl %ax,%ebp : */ : static inline __be16 vlan_get_protocol(const struct sk_buff *skb) : { : __be16 protocol = 0; : : if (vlan_tx_tag_present(skb) || 0.00 : 3bf0: f6 83 bd 00 00 00 10 testb $0x10,0xbd(%rbx) 0.00 : 3bf7: 0f 84 93 00 00 00 je 3c90 0.00 : 3bfd: 0f b7 43 7e movzwl 0x7e(%rbx),%eax : #ifdef IXGBE_FCOE : __be16 protocol = vlan_get_protocol(skb); : : if ((protocol == __constant_htons(ETH_P_FCOE)) || 0.00 : 3c01: 66 3d 89 06 cmp $0x689,%ax 0.00 : 3c05: 74 49 je 3c50 ??:0 3.33 : 3c07: 66 3d 89 14 cmp $0x1489,%ax 0.00 : 3c0b: 74 43 je 3c50 : txq += f->offset; : : return txq; : } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { : txq = adapter->fcoe.up; : return txq; 0.00 : 3c0d: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : 3c14: 00 : : return txq; : } : : #endif : if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) { ??:0 6.67 : 3c15: 66 85 c0 test %ax,%ax 0.00 : 3c18: 0f 89 d2 00 00 00 jns 3cf0 : while (unlikely(txq >= dev->real_num_tx_queues)) 0.00 : 3c1e: 41 8b 85 8c 03 00 00 mov 0x38c(%r13),%eax 0.00 : 3c25: 39 c5 cmp %eax,%ebp 0.00 : 3c27: 0f 83 dc 00 00 00 jae 3d09 : txq -= dev->real_num_tx_queues; : return txq; 0.00 : 3c2d: 89 e8 mov %ebp,%eax : } : : return __skb_tx_hash(dev, skb, : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3c2f: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 3c34: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp ??:0 3.33 : 3c39: 4c 8b 64 24 20 mov 0x20(%rsp),%r12 0.00 : 3c3e: 4c 8b 6c 24 28 mov 0x28(%rsp),%r13 0.00 : 3c43: 4c 8b 74 24 30 mov 0x30(%rsp),%r14 0.00 : 3c48: 48 83 c4 38 add $0x38,%rsp 0.00 : 3c4c: c3 retq 0.00 : 3c4d: 0f 1f 00 nopl (%rax) : #ifdef IXGBE_FCOE : __be16 protocol = vlan_get_protocol(skb); : : if ((protocol == __constant_htons(ETH_P_FCOE)) || : (protocol == __constant_htons(ETH_P_FIP))) { : if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) { 0.00 : 3c50: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : 3c57: 00 0.00 : 3c58: a9 00 00 04 00 test $0x40000,%eax 0.00 : 3c5d: 74 79 je 3cd8 : struct ixgbe_ring_feature *f; : : f = &adapter->ring_feature[RING_F_FCOE]; : : while (txq >= f->indices) 0.00 : 3c5f: 41 0f b7 8c 24 ea 0b movzwl 0xbea(%r12),%ecx 0.00 : 3c66: 00 00 0.00 : 3c68: 39 cd cmp %ecx,%ebp 0.00 : 3c6a: 7c 17 jl 3c83 0.00 : 3c6c: 89 ce mov %ecx,%esi 0.00 : 3c6e: 89 ea mov %ebp,%edx 0.00 : 3c70: f7 de neg %esi 0.00 : 3c72: 29 ca sub %ecx,%edx 0.00 : 3c74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 3c78: 89 d5 mov %edx,%ebp 0.00 : 3c7a: 01 f2 add %esi,%edx 0.00 : 3c7c: 8d 04 0a lea (%rdx,%rcx,1),%eax 0.00 : 3c7f: 39 c1 cmp %eax,%ecx 0.00 : 3c81: 7e f5 jle 3c78 : txq -= f->indices; : txq += f->offset; : : return txq; 0.00 : 3c83: 41 0f b7 84 24 ee 0b movzwl 0xbee(%r12),%eax 0.00 : 3c8a: 00 00 0.00 : 3c8c: 01 e8 add %ebp,%eax : return txq; : } : : return __skb_tx_hash(dev, skb, : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3c8e: eb 9f jmp 3c2f ??:0 13.33 : 3c90: 0f b7 43 7e movzwl 0x7e(%rbx),%eax 0.00 : 3c94: 66 3d 81 00 cmp $0x81,%ax 0.00 : 3c98: 0f 85 63 ff ff ff jne 3c01 : static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, : int len, void *buffer) : { : int hlen = skb_headlen(skb); : : if (hlen - offset >= len) 0.00 : 3c9e: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 3ca1: 2b 43 6c sub 0x6c(%rbx),%eax 0.00 : 3ca4: 83 e8 10 sub $0x10,%eax 0.00 : 3ca7: 83 e8 01 sub $0x1,%eax 0.00 : 3caa: 7e 7c jle 3d28 : skb->protocol != cpu_to_be16(ETH_P_8021Q)) : protocol = skb->protocol; : else { : __be16 proto, *protop; : protop = skb_header_pointer(skb, offsetof(struct vlan_ethhdr, 0.00 : 3cac: 48 8b 83 e0 00 00 00 mov 0xe0(%rbx),%rax : h_vlan_encapsulated_proto), : sizeof(proto), &proto); : if (likely(protop)) 0.00 : 3cb3: 48 83 c0 10 add $0x10,%rax 0.00 : 3cb7: 0f 84 50 ff ff ff je 3c0d : protocol = *protop; 0.00 : 3cbd: 0f b7 00 movzwl (%rax),%eax 0.00 : 3cc0: e9 3c ff ff ff jmpq 3c01 0.00 : 3cc5: 0f 1f 00 nopl (%rax) : #ifdef HAVE_NETDEV_SELECT_QUEUE : static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb) : { : struct ixgbe_adapter *adapter = netdev_priv(dev); : int txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : : smp_processor_id(); 20.00 : 3cc8: 65 8b 2c 25 00 00 00 mov %gs:0x0,%ebp 0.00 : 3ccf: 00 ??:0 3.33 : 3cd0: e9 1b ff ff ff jmpq 3bf0 0.00 : 3cd5: 0f 1f 00 nopl (%rax) : while (txq >= f->indices) : txq -= f->indices; : txq += f->offset; : : return txq; : } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { 0.00 : 3cd8: f6 c4 04 test $0x4,%ah 0.00 : 3cdb: 0f 84 34 ff ff ff je 3c15 : txq = adapter->fcoe.up; : return txq; 0.00 : 3ce1: 41 0f b6 84 24 10 7c movzbl 0x7c10(%r12),%eax 0.00 : 3ce8: 00 00 : return txq; : } : : return __skb_tx_hash(dev, skb, : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3cea: e9 40 ff ff ff jmpq 3c2f 0.00 : 3cef: 90 nop : while (unlikely(txq >= dev->real_num_tx_queues)) : txq -= dev->real_num_tx_queues; : return txq; : } : : return __skb_tx_hash(dev, skb, 0.00 : 3cf0: 41 0f b7 94 24 da 0b movzwl 0xbda(%r12),%edx 0.00 : 3cf7: 00 00 0.00 : 3cf9: 48 89 de mov %rbx,%rsi 0.00 : 3cfc: 4c 89 ef mov %r13,%rdi 0.00 : 3cff: e8 00 00 00 00 callq 3d04 : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3d04: e9 26 ff ff ff jmpq 3c2f : return txq; : } : : #endif : if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) { : while (unlikely(txq >= dev->real_num_tx_queues)) 0.00 : 3d09: 89 c1 mov %eax,%ecx 0.00 : 3d0b: 89 ea mov %ebp,%edx 0.00 : 3d0d: f7 d9 neg %ecx 0.00 : 3d0f: 29 c2 sub %eax,%edx 0.00 : 3d11: 89 d5 mov %edx,%ebp 0.00 : 3d13: 01 ca add %ecx,%edx 0.00 : 3d15: 89 d3 mov %edx,%ebx 0.00 : 3d17: 01 c3 add %eax,%ebx 0.00 : 3d19: 0f 82 0e ff ff ff jb 3c2d 0.00 : 3d1f: eb f0 jmp 3d11 0.00 : 3d21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return skb->data + offset; : : if (skb_copy_bits(skb, offset, buffer, len) < 0) 0.00 : 3d28: 4c 8d 74 24 0e lea 0xe(%rsp),%r14 0.00 : 3d2d: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 3d32: be 10 00 00 00 mov $0x10,%esi 0.00 : 3d37: 48 89 df mov %rbx,%rdi 0.00 : 3d3a: 4c 89 f2 mov %r14,%rdx 0.00 : 3d3d: e8 00 00 00 00 callq 3d42 0.00 : 3d42: 85 c0 test %eax,%eax 0.00 : 3d44: 0f 88 c3 fe ff ff js 3c0d 0.00 : 3d4a: 4c 89 f0 mov %r14,%rax 0.00 : 3d4d: e9 6b ff ff ff jmpq 3cbd Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 43.18 ??:0 25.00 ??:0 22.73 ??:0 4.55 ??:0 2.27 ??:0 2.27 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005b20 <__nf_ct_l4proto_find>: ??:0 100.00 : 5b20: 66 83 ff 26 cmp $0x26,%di : 5b54: 77 22 0f b7 cmp $0x26,%di : 5b58: c7 48 8b 14 c5 00 00 mov $0x0,%r12 : 5b5f: 00 00 ja 5b6c : 5b61: 48 85 d2 movzwl %di,%eax : 5b64: 74 12 40 0f b6 c6 48 mov 0x0(,%rax,8),%r12 : 5b6b: 8d : 5b6c: 04 c2 48 8b 00 mov 0x70(%r12),%rbp : 5b71: c3 66 0f test %rbp,%rbp : 5b74: 1f 44 je 5bde : 5b76: 00 00 xor %edx,%edx : 5b78: 48 c7 c0 00 cmpl $0x2,0x0(%rbp) : 5b7c: 00 00 je 5bd1 : ... Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 62.07 ??:0 20.69 ??:0 10.34 ??:0 3.45 ??:0 3.45 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009480 : : return NETDEV_TX_OK; : } : : static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb, : struct net_device *netdev) : { 0.00 : 9480: 48 83 ec 18 sub $0x18,%rsp ??:0 62.07 : 9484: 48 89 1c 24 mov %rbx,(%rsp) 10.34 : 9488: 4c 89 64 24 10 mov %r12,0x10(%rsp) ??:0 3.45 : 948d: 48 89 fb mov %rdi,%rbx 0.00 : 9490: 48 89 6c 24 08 mov %rbp,0x8(%rsp) : : /* : * The minimum packet size for olinfo paylen is 17 so pad the skb : * in order to meet this minimum size requirement. : */ : if (unlikely(skb->len < 17)) { 0.00 : 9495: 8b 47 68 mov 0x68(%rdi),%eax : return NETDEV_TX_OK; : } : : static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb, : struct net_device *netdev) : { 0.00 : 9498: 49 89 f4 mov %rsi,%r12 : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_ring *tx_ring; : #ifdef HAVE_TX_MQ : unsigned int r_idx = skb->queue_mapping; 0.00 : 949b: 0f b7 af ac 00 00 00 movzwl 0xac(%rdi),%ebp : : /* : * The minimum packet size for olinfo paylen is 17 so pad the skb : * in order to meet this minimum size requirement. : */ : if (unlikely(skb->len < 17)) { 0.00 : 94a2: 83 f8 10 cmp $0x10,%eax 0.00 : 94a5: 76 41 jbe 94e8 : } : : static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb, : struct net_device *netdev) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : 94a7: 49 8d b4 24 00 08 00 lea 0x800(%r12),%rsi 0.00 : 94ae: 00 : struct ixgbe_ring *tx_ring; : #ifdef HAVE_TX_MQ : unsigned int r_idx = skb->queue_mapping; 3.45 : 94af: 0f b7 cd movzwl %bp,%ecx : return NETDEV_TX_OK; : skb->len = 17; : } : : #ifdef HAVE_TX_MQ : if (r_idx >= adapter->num_tx_queues) 0.00 : 94b2: 8b be 20 02 00 00 mov 0x220(%rsi),%edi 0.00 : 94b8: 39 f9 cmp %edi,%ecx 0.00 : 94ba: 72 08 jb 94c4 : r_idx = r_idx % adapter->num_tx_queues; 0.00 : 94bc: 89 c8 mov %ecx,%eax 0.00 : 94be: 31 d2 xor %edx,%edx 0.00 : 94c0: f7 f7 div %edi 0.00 : 94c2: 89 d1 mov %edx,%ecx : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); 0.00 : 94c4: 89 c8 mov %ecx,%eax 0.00 : 94c6: 48 89 df mov %rbx,%rdi : } 0.00 : 94c9: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp : r_idx = r_idx % adapter->num_tx_queues; : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); 0.00 : 94ce: 48 8b 94 c6 80 02 00 mov 0x280(%rsi,%rax,8),%rdx 0.00 : 94d5: 00 : } ??:0 20.69 : 94d6: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 94da: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 94df: 48 83 c4 18 add $0x18,%rsp : r_idx = r_idx % adapter->num_tx_queues; : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); 0.00 : 94e3: e9 00 00 00 00 jmpq 94e8 : /* : * The minimum packet size for olinfo paylen is 17 so pad the skb : * in order to meet this minimum size requirement. : */ : if (unlikely(skb->len < 17)) { : if (skb_pad(skb, 17 - skb->len)) 0.00 : 94e8: be 11 00 00 00 mov $0x11,%esi 0.00 : 94ed: 29 c6 sub %eax,%esi 0.00 : 94ef: e8 00 00 00 00 callq 94f4 0.00 : 94f4: 85 c0 test %eax,%eax 0.00 : 94f6: 75 09 jne 9501 : return NETDEV_TX_OK; : skb->len = 17; 0.00 : 94f8: c7 43 68 11 00 00 00 movl $0x11,0x68(%rbx) 0.00 : 94ff: eb a6 jmp 94a7 : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); : } 0.00 : 9501: 31 c0 xor %eax,%eax 0.00 : 9503: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 9507: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 950c: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 9511: 48 83 c4 18 add $0x18,%rsp Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000400da0 : ??:0 100.00 : 400da0: ff 25 92 92 20 00 jmpq *0x209292(%rip) # 60a038 <_GLOBAL_OFFSET_TABLE_+0x38> 0.00 : 400da6: 68 04 00 00 00 pushq $0x4 0.00 : 400dab: e9 a0 ff ff ff jmpq 400d50 <_init+0x18> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 11.76 ??:0 7.84 ??:0 6.86 ??:0 5.88 ??:0 4.90 ??:0 4.90 ??:0 3.92 ??:0 3.92 ??:0 2.94 ??:0 2.94 ??:0 2.94 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 1.96 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 0.98 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000b070 <_dl_relocate_object>: 0.00 : b070: 55 push %rbp ??:0 0.98 : b071: 48 89 e5 mov %rsp,%rbp 0.00 : b074: 41 57 push %r15 0.00 : b076: 41 56 push %r14 0.00 : b078: 49 89 fe mov %rdi,%r14 0.00 : b07b: 41 55 push %r13 0.00 : b07d: 41 54 push %r12 0.00 : b07f: 41 89 d4 mov %edx,%r12d 0.00 : b082: 41 83 e4 01 and $0x1,%r12d 0.00 : b086: 53 push %rbx 0.98 : b087: 48 81 ec b8 00 00 00 sub $0xb8,%rsp 0.00 : b08e: 81 e2 00 00 00 08 and $0x8000000,%edx 0.00 : b094: 48 89 b5 58 ff ff ff mov %rsi,-0xa8(%rbp) 0.00 : b09b: 89 8d 54 ff ff ff mov %ecx,-0xac(%rbp) 0.00 : b0a1: 75 15 jne b0b8 <_dl_relocate_object+0x48> 0.00 : b0a3: 31 c0 xor %eax,%eax 0.00 : b0a5: 48 83 3d 83 3c 21 00 cmpq $0x0,0x213c83(%rip) # 21ed30 <_rtld_global_ro+0x110> 0.00 : b0ac: 00 0.00 : b0ad: 0f 95 c0 setne %al 0.00 : b0b0: 09 c1 or %eax,%ecx 0.00 : b0b2: 89 8d 54 ff ff ff mov %ecx,-0xac(%rbp) 0.00 : b0b8: 41 f6 86 14 03 00 00 testb $0x4,0x314(%r14) 0.00 : b0bf: 04 0.00 : b0c0: 0f 85 1a 02 00 00 jne b2e0 <_dl_relocate_object+0x270> 0.00 : b0c6: 44 8b 8d 54 ff ff ff mov -0xac(%rbp),%r9d 0.00 : b0cd: 45 85 c9 test %r9d,%r9d 0.00 : b0d0: 0f 84 52 0a 00 00 je bb28 <_dl_relocate_object+0xab8> 0.00 : b0d6: f6 05 43 3b 21 00 20 testb $0x20,0x213b43(%rip) # 21ec20 <_rtld_global_ro> 0.00 : b0dd: 0f 85 cf 0f 00 00 jne c0b2 <_dl_relocate_object+0x1042> 0.00 : b0e3: 49 83 be f0 00 00 00 cmpq $0x0,0xf0(%r14) 0.00 : b0ea: 00 0.00 : b0eb: 0f 85 ba 0e 00 00 jne bfab <_dl_relocate_object+0xf3b> 0.00 : b0f1: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : b0f8: 00 00 00 00 0.00 : b0fc: 49 8b 46 68 mov 0x68(%r14),%rax 0.00 : b100: 45 85 e4 test %r12d,%r12d 0.00 : b103: 0f 95 c3 setne %bl 0.00 : b106: 49 83 be f8 00 00 00 cmpq $0x0,0xf8(%r14) 0.00 : b10d: 00 0.00 : b10e: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b112: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : b119: 0f 85 19 07 00 00 jne b838 <_dl_relocate_object+0x7c8> 0.00 : b11f: 84 db test %bl,%bl 0.00 : b121: 49 8b 86 88 02 00 00 mov 0x288(%r14),%rax 0.00 : b128: 74 17 je b141 <_dl_relocate_object+0xd1> 0.00 : b12a: 48 85 c0 test %rax,%rax 0.00 : b12d: 74 12 je b141 <_dl_relocate_object+0xd1> 0.00 : b12f: 49 8b 16 mov (%r14),%rdx 0.00 : b132: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b136: 48 8d 0d 53 aa 00 00 lea 0xaa53(%rip),%rcx # 15b90 <_dl_tlsdesc_resolve_rela> 0.00 : b13d: 48 89 0c 02 mov %rcx,(%rdx,%rax,1) 0.00 : b141: 49 8b 46 78 mov 0x78(%r14),%rax 0.00 : b145: c7 45 a0 00 00 00 00 movl $0x0,-0x60(%rbp) 0.00 : b14c: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : b153: 00 0.00 : b154: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : b15b: 00 0.00 : b15c: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : b163: 00 0.00 : b164: 48 85 c0 test %rax,%rax 0.00 : b167: 74 17 je b180 <_dl_relocate_object+0x110> 0.00 : b169: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b16d: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : b171: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : b178: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b17c: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : b180: 49 83 be e0 00 00 00 cmpq $0x0,0xe0(%r14) 0.00 : b187: 00 0.00 : b188: 74 37 je b1c1 <_dl_relocate_object+0x151> 0.00 : b18a: 49 8b 86 f8 00 00 00 mov 0xf8(%r14),%rax 0.00 : b191: 84 db test %bl,%bl 0.00 : b193: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : b197: 75 14 jne b1ad <_dl_relocate_object+0x13d> 0.00 : b199: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : b19d: 48 89 d0 mov %rdx,%rax 0.00 : b1a0: 48 03 45 90 add -0x70(%rbp),%rax 0.00 : b1a4: 48 39 c8 cmp %rcx,%rax 0.00 : b1a7: 0f 84 b1 0a 00 00 je bc5e <_dl_relocate_object+0xbee> 0.00 : b1ad: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : b1b1: 48 89 4d a8 mov %rcx,-0x58(%rbp) 0.00 : b1b5: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b1b9: 44 89 65 b8 mov %r12d,-0x48(%rbp) 0.00 : b1bd: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : b1c1: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : b1c5: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : b1c9: 48 89 b5 48 ff ff ff mov %rsi,-0xb8(%rbp) 0.00 : b1d0: 48 89 75 88 mov %rsi,-0x78(%rbp) 0.00 : b1d4: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : b1db: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.98 : b1df: 4d 8b 1e mov (%r14),%r11 0.00 : b1e2: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : b1e6: 48 8b 1a mov (%rdx),%rbx 0.00 : b1e9: 48 8d 34 0b lea (%rbx,%rcx,1),%rsi 0.00 : b1ed: 48 89 b5 78 ff ff ff mov %rsi,-0x88(%rbp) 0.00 : b1f4: 8b 7a 10 mov 0x10(%rdx),%edi 0.00 : b1f7: 85 ff test %edi,%edi 0.00 : b1f9: 0f 84 31 01 00 00 je b330 <_dl_relocate_object+0x2c0> 0.98 : b1ff: 48 39 f3 cmp %rsi,%rbx 0.00 : b202: 72 52 jb b256 <_dl_relocate_object+0x1e6> 0.00 : b204: e9 87 00 00 00 jmpq b290 <_dl_relocate_object+0x220> 0.00 : b209: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b210: 48 83 f8 24 cmp $0x24,%rax 0.00 : b214: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b218: 0f 84 d2 00 00 00 je b2f0 <_dl_relocate_object+0x280> 0.00 : b21e: 48 83 f8 25 cmp $0x25,%rax 0.00 : b222: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b228: 0f 85 53 0c 00 00 jne be81 <_dl_relocate_object+0xe11> 0.00 : b22e: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b232: 49 03 06 add (%r14),%rax 0.00 : b235: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b23c: ff d0 callq *%rax 0.00 : b23e: 49 89 04 24 mov %rax,(%r12) 0.00 : b242: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b249: 48 83 c3 18 add $0x18,%rbx 0.00 : b24d: 48 39 9d 78 ff ff ff cmp %rbx,-0x88(%rbp) 0.00 : b254: 76 3a jbe b290 <_dl_relocate_object+0x220> 0.98 : b256: 8b 43 08 mov 0x8(%rbx),%eax 2.94 : b259: 4d 89 dc mov %r11,%r12 0.00 : b25c: 4c 03 23 add (%rbx),%r12 0.00 : b25f: 48 83 f8 07 cmp $0x7,%rax 0.00 : b263: 75 ab jne b210 <_dl_relocate_object+0x1a0> 0.00 : b265: 49 8b 96 e8 03 00 00 mov 0x3e8(%r14),%rdx 0.00 : b26c: 48 85 d2 test %rdx,%rdx 0.00 : b26f: 0f 85 9b 00 00 00 jne b310 <_dl_relocate_object+0x2a0> 0.00 : b275: 4d 01 1c 24 add %r11,(%r12) 0.98 : b279: 48 83 c3 18 add $0x18,%rbx 0.00 : b27d: 48 39 9d 78 ff ff ff cmp %rbx,-0x88(%rbp) 0.00 : b284: 77 d0 ja b256 <_dl_relocate_object+0x1e6> 0.00 : b286: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b28d: 00 00 00 0.98 : b290: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.98 : b297: 48 83 45 88 18 addq $0x18,-0x78(%rbp) 0.00 : b29c: 48 83 c0 30 add $0x30,%rax 0.00 : b2a0: 48 39 45 88 cmp %rax,-0x78(%rbp) 0.00 : b2a4: 0f 85 31 ff ff ff jne b1db <_dl_relocate_object+0x16b> 0.00 : b2aa: 8b 85 54 ff ff ff mov -0xac(%rbp),%eax 0.00 : b2b0: 85 c0 test %eax,%eax 0.00 : b2b2: 0f 85 84 0e 00 00 jne c13c <_dl_relocate_object+0x10cc> 0.00 : b2b8: 41 80 8e 14 03 00 00 orb $0x4,0x314(%r14) 0.00 : b2bf: 04 0.00 : b2c0: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : b2c7: 00 0.00 : b2c8: 0f 85 37 0e 00 00 jne c105 <_dl_relocate_object+0x1095> 0.00 : b2ce: 49 83 be 60 04 00 00 cmpq $0x0,0x460(%r14) 0.00 : b2d5: 00 1.96 : b2d6: 74 08 je b2e0 <_dl_relocate_object+0x270> 0.00 : b2d8: 4c 89 f7 mov %r14,%rdi 0.00 : b2db: e8 90 fb ff ff callq ae70 <_dl_protect_relro> 0.00 : b2e0: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : b2e4: 5b pop %rbx 0.00 : b2e5: 41 5c pop %r12 0.00 : b2e7: 41 5d pop %r13 0.00 : b2e9: 41 5e pop %r14 0.00 : b2eb: 41 5f pop %r15 0.00 : b2ed: c9 leaveq 0.00 : b2ee: c3 retq 0.00 : b2ef: 90 nop 0.00 : b2f0: 49 89 5c 24 08 mov %rbx,0x8(%r12) 0.00 : b2f5: 49 8b 96 90 02 00 00 mov 0x290(%r14),%rdx 0.00 : b2fc: 49 8b 06 mov (%r14),%rax 0.00 : b2ff: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : b303: 49 89 04 24 mov %rax,(%r12) 0.00 : b307: e9 3d ff ff ff jmpq b249 <_dl_relocate_object+0x1d9> 0.00 : b30c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b310: 4c 89 e0 mov %r12,%rax 0.00 : b313: 49 2b 86 f0 03 00 00 sub 0x3f0(%r14),%rax 0.00 : b31a: 48 8d 04 42 lea (%rdx,%rax,2),%rax 0.00 : b31e: 49 89 04 24 mov %rax,(%r12) 0.00 : b322: e9 22 ff ff ff jmpq b249 <_dl_relocate_object+0x1d9> 0.00 : b327: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b32e: 00 00 0.00 : b330: 49 8b 46 70 mov 0x70(%r14),%rax 0.00 : b334: 49 8b 96 80 01 00 00 mov 0x180(%r14),%rdx 0.00 : b33b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b33f: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : b343: 31 c0 xor %eax,%eax 0.00 : b345: 48 85 d2 test %rdx,%rdx 0.00 : b348: 74 2a je b374 <_dl_relocate_object+0x304> 0.00 : b34a: 8b 72 08 mov 0x8(%rdx),%esi 0.00 : b34d: 48 89 c8 mov %rcx,%rax 0.00 : b350: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : b357: aa aa aa 0.00 : b35a: 48 f7 e2 mul %rdx 0.00 : b35d: 48 c1 ea 04 shr $0x4,%rdx 0.00 : b361: 48 39 d6 cmp %rdx,%rsi 0.00 : b364: 48 0f 46 d6 cmovbe %rsi,%rdx 0.00 : b368: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : b36c: 48 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%rax 0.00 : b373: 00 0.00 : b374: 4c 8d 24 03 lea (%rbx,%rax,1),%r12 0.00 : b378: 48 8d 05 51 46 21 00 lea 0x214651(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : b37f: 49 39 c6 cmp %rax,%r14 0.00 : b382: 74 39 je b3bd <_dl_relocate_object+0x34d> 0.00 : b384: 4d 85 db test %r11,%r11 0.00 : b387: 0f 84 93 04 00 00 je b820 <_dl_relocate_object+0x7b0> 0.00 : b38d: 4c 39 e3 cmp %r12,%rbx 0.00 : b390: 73 2b jae b3bd <_dl_relocate_object+0x34d> 0.00 : b392: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 3.92 : b398: 83 7b 08 08 cmpl $0x8,0x8(%rbx) 4.90 : b39c: 48 8b 03 mov (%rbx),%rax 0.98 : b39f: 90 nop 0.98 : b3a0: 0f 85 ea 0a 00 00 jne be90 <_dl_relocate_object+0xe20> 1.96 : b3a6: 4a 8d 14 18 lea (%rax,%r11,1),%rdx 0.00 : b3aa: 4c 89 d8 mov %r11,%rax 2.94 : b3ad: 48 03 43 10 add 0x10(%rbx),%rax ??:0 6.86 : b3b1: 48 83 c3 18 add $0x18,%rbx ??:0 0.98 : b3b5: 49 39 dc cmp %rbx,%r12 3.92 : b3b8: 48 89 02 mov %rax,(%rdx) 4.90 : b3bb: 77 db ja b398 <_dl_relocate_object+0x328> 0.98 : b3bd: 49 8b 86 c8 01 00 00 mov 0x1c8(%r14),%rax 0.00 : b3c4: 48 85 c0 test %rax,%rax 0.00 : b3c7: 0f 84 cf 01 00 00 je b59c <_dl_relocate_object+0x52c> 0.00 : b3cd: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b3d4: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b3d8: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : b3df: 0f 86 ab fe ff ff jbe b290 <_dl_relocate_object+0x220> 0.00 : b3e5: 0f 1f 00 nopl (%rax) 0.00 : b3e8: 41 8b 44 24 0c mov 0xc(%r12),%eax 0.98 : b3ed: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : b3f4: 4d 89 da mov %r11,%r10 0.00 : b3f7: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.98 : b3fb: 4d 03 14 24 add (%r12),%r10 0.00 : b3ff: 4d 8b 86 e0 02 00 00 mov 0x2e0(%r14),%r8 0.00 : b406: 0f b7 3c 42 movzwl (%rdx,%rax,2),%edi ??:0 5.88 : b40a: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : b40e: 4c 8d 2c c1 lea (%rcx,%rax,8),%r13 0.00 : b412: 4c 89 6d c8 mov %r13,-0x38(%rbp) 0.00 : b416: 41 8b 5c 24 08 mov 0x8(%r12),%ebx ??:0 1.96 : b41b: 48 83 fb 08 cmp $0x8,%rbx 0.00 : b41f: 0f 84 4b 03 00 00 je b770 <_dl_relocate_object+0x700> 0.00 : b425: 48 85 db test %rbx,%rbx 0.00 : b428: 0f 84 2a 03 00 00 je b758 <_dl_relocate_object+0x6e8> ??:0 7.84 : b42e: 41 0f b6 45 04 movzbl 0x4(%r13),%eax 11.76 : b433: 4d 89 f7 mov %r14,%r15 0.00 : b436: 4c 89 ea mov %r13,%rdx 0.00 : b439: c0 e8 04 shr $0x4,%al ??:0 0.98 : b43c: 84 c0 test %al,%al 0.00 : b43e: 0f 84 d5 00 00 00 je b519 <_dl_relocate_object+0x4a9> 0.00 : b444: 4d 3b ae 00 04 00 00 cmp 0x400(%r14),%r13 0.00 : b44b: 0f 84 7f 06 00 00 je bad0 <_dl_relocate_object+0xa60> 0.00 : b451: 48 83 fb 07 cmp $0x7,%rbx 0.98 : b455: 40 0f 94 c6 sete %sil 0.00 : b459: 48 83 fb 10 cmp $0x10,%rbx 0.00 : b45d: 0f 94 c2 sete %dl 1.96 : b460: 84 d2 test %dl,%dl 0.00 : b462: 75 09 jne b46d <_dl_relocate_object+0x3fd> 0.00 : b464: 40 84 f6 test %sil,%sil 0.00 : b467: 0f 84 db 01 00 00 je b648 <_dl_relocate_object+0x5d8> 0.00 : b46d: b9 01 00 00 00 mov $0x1,%ecx 0.98 : b472: 89 c8 mov %ecx,%eax 0.00 : b474: 83 c8 02 or $0x2,%eax 0.00 : b477: 48 83 fb 05 cmp $0x5,%rbx 0.00 : b47b: 0f 44 c8 cmove %eax,%ecx 0.00 : b47e: 48 89 f8 mov %rdi,%rax 0.00 : b481: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : b485: 41 89 8e 08 04 00 00 mov %ecx,0x408(%r14) 0.00 : b48c: 25 ff 7f 00 00 and $0x7fff,%eax 0.98 : b491: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : b495: 49 89 96 00 04 00 00 mov %rdx,0x400(%r14) 0.00 : b49c: 49 8d 04 c0 lea (%r8,%rax,8),%rax 0.00 : b4a0: 48 85 c0 test %rax,%rax 0.00 : b4a3: 74 0e je b4b3 <_dl_relocate_object+0x443> 0.00 : b4a5: 8b 70 08 mov 0x8(%rax),%esi 0.00 : b4a8: 85 f6 test %esi,%esi 0.00 : b4aa: be 00 00 00 00 mov $0x0,%esi 0.00 : b4af: 48 0f 44 c6 cmove %rsi,%rax 0.00 : b4b3: 8b 3a mov (%rdx),%edi 0.00 : b4b5: 41 89 c9 mov %ecx,%r9d 0.00 : b4b8: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : b4bf: 48 03 bd 60 ff ff ff add -0xa0(%rbp),%rdi 0.00 : b4c6: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : b4cd: 49 89 c0 mov %rax,%r8 0.98 : b4d0: 4c 89 f6 mov %r14,%rsi 0.00 : b4d3: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : b4da: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b4e1: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : b4e8: 00 00 0.00 : b4ea: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : b4f1: e8 7a e6 ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : b4f6: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : b4fa: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b501: 49 89 c7 mov %rax,%r15 0.00 : b504: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : b50b: 49 89 86 10 04 00 00 mov %rax,0x410(%r14) 0.00 : b512: 49 89 96 18 04 00 00 mov %rdx,0x418(%r14) 0.00 : b519: 31 c9 xor %ecx,%ecx 0.00 : b51b: 48 85 d2 test %rdx,%rdx 0.00 : b51e: 74 17 je b537 <_dl_relocate_object+0x4c7> 0.00 : b520: 0f b6 42 04 movzbl 0x4(%rdx),%eax 2.94 : b524: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : b528: 49 03 0f add (%r15),%rcx 0.98 : b52b: 83 e0 0f and $0xf,%eax 0.98 : b52e: 83 f8 0a cmp $0xa,%eax 0.00 : b531: 0f 84 99 02 00 00 je b7d0 <_dl_relocate_object+0x760> 0.00 : b537: 48 83 fb 25 cmp $0x25,%rbx 0.00 : b53b: 0f 86 57 02 00 00 jbe b798 <_dl_relocate_object+0x728> 0.00 : b541: 31 d2 xor %edx,%edx 0.00 : b543: 89 de mov %ebx,%esi 0.00 : b545: 4c 89 f7 mov %r14,%rdi 0.00 : b548: e8 43 f8 ff ff callq ad90 <_dl_reloc_bad_type> 0.00 : b54d: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : b552: 0f 84 57 09 00 00 je beaf <_dl_relocate_object+0xe3f> 0.00 : b558: 49 8b 87 48 04 00 00 mov 0x448(%r15),%rax 0.00 : b55f: 48 83 f8 01 cmp $0x1,%rax 0.00 : b563: 0f 84 d5 09 00 00 je bf3e <_dl_relocate_object+0xece> 0.00 : b569: 48 85 c0 test %rax,%rax 0.00 : b56c: 0f 84 a0 09 00 00 je bf12 <_dl_relocate_object+0xea2> 0.00 : b572: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : b576: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b57b: 48 8d 0d 4e a5 00 00 lea 0xa54e(%rip),%rcx # 15ad0 <_dl_tlsdesc_return> 0.00 : b582: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : b586: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : b58d: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : b591: 49 89 0a mov %rcx,(%r10) 0.00 : b594: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b598: 49 83 c4 18 add $0x18,%r12 0.00 : b59c: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b5a3: 0f 86 e7 fc ff ff jbe b290 <_dl_relocate_object+0x220> 0.00 : b5a9: 41 8b 44 24 0c mov 0xc(%r12),%eax 0.00 : b5ae: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : b5b2: 4d 89 da mov %r11,%r10 0.00 : b5b5: 4d 03 14 24 add (%r12),%r10 0.00 : b5b9: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : b5bd: 4c 8d 2c c2 lea (%rdx,%rax,8),%r13 0.00 : b5c1: 4c 89 6d c8 mov %r13,-0x38(%rbp) 0.00 : b5c5: 41 8b 5c 24 08 mov 0x8(%r12),%ebx 0.00 : b5ca: 48 83 fb 08 cmp $0x8,%rbx 0.00 : b5ce: 0f 84 34 02 00 00 je b808 <_dl_relocate_object+0x798> 0.00 : b5d4: 48 85 db test %rbx,%rbx 0.00 : b5d7: 74 bf je b598 <_dl_relocate_object+0x528> 0.00 : b5d9: 41 0f b6 45 04 movzbl 0x4(%r13),%eax 0.00 : b5de: 4d 89 f7 mov %r14,%r15 0.00 : b5e1: 4c 89 ea mov %r13,%rdx 0.00 : b5e4: c0 e8 04 shr $0x4,%al 0.00 : b5e7: 84 c0 test %al,%al 0.00 : b5e9: 0f 84 01 01 00 00 je b6f0 <_dl_relocate_object+0x680> 0.00 : b5ef: 4d 3b ae 00 04 00 00 cmp 0x400(%r14),%r13 0.00 : b5f6: 74 7d je b675 <_dl_relocate_object+0x605> 0.00 : b5f8: 48 83 fb 07 cmp $0x7,%rbx 0.00 : b5fc: 40 0f 94 c6 sete %sil 0.00 : b600: 48 83 fb 10 cmp $0x10,%rbx 0.00 : b604: 0f 94 c2 sete %dl 0.00 : b607: 84 d2 test %dl,%dl 0.00 : b609: 0f 85 81 05 00 00 jne bb90 <_dl_relocate_object+0xb20> 0.00 : b60f: 40 84 f6 test %sil,%sil 0.00 : b612: 0f 85 78 05 00 00 jne bb90 <_dl_relocate_object+0xb20> 0.00 : b618: 48 83 fb 11 cmp $0x11,%rbx 0.00 : b61c: 0f 84 6e 05 00 00 je bb90 <_dl_relocate_object+0xb20> 0.00 : b622: 48 83 fb 12 cmp $0x12,%rbx 0.00 : b626: 0f 84 64 05 00 00 je bb90 <_dl_relocate_object+0xb20> 0.00 : b62c: 48 83 fb 24 cmp $0x24,%rbx 0.00 : b630: ba 01 00 00 00 mov $0x1,%edx 0.00 : b635: 0f 84 66 05 00 00 je bba1 <_dl_relocate_object+0xb31> 0.00 : b63b: 30 d2 xor %dl,%dl 0.00 : b63d: 0f 1f 00 nopl (%rax) 0.00 : b640: e9 50 05 00 00 jmpq bb95 <_dl_relocate_object+0xb25> 0.00 : b645: 0f 1f 00 nopl (%rax) 0.00 : b648: 48 83 fb 11 cmp $0x11,%rbx 0.00 : b64c: 0f 84 1b fe ff ff je b46d <_dl_relocate_object+0x3fd> 0.00 : b652: 48 83 fb 12 cmp $0x12,%rbx 0.00 : b656: 0f 84 11 fe ff ff je b46d <_dl_relocate_object+0x3fd> 0.00 : b65c: 48 83 fb 24 cmp $0x24,%rbx 0.00 : b660: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b665: 0f 84 13 fe ff ff je b47e <_dl_relocate_object+0x40e> 0.00 : b66b: 30 c9 xor %cl,%cl 0.00 : b66d: 0f 1f 00 nopl (%rax) 0.00 : b670: e9 fd fd ff ff jmpq b472 <_dl_relocate_object+0x402> 0.00 : b675: 48 83 fb 07 cmp $0x7,%rbx 0.00 : b679: 40 0f 94 c6 sete %sil 0.00 : b67d: 48 83 fb 10 cmp $0x10,%rbx 0.00 : b681: 0f 94 c2 sete %dl 0.00 : b684: 40 84 f6 test %sil,%sil 0.00 : b687: 0f 85 7b 08 00 00 jne bf08 <_dl_relocate_object+0xe98> 0.00 : b68d: 84 d2 test %dl,%dl 0.00 : b68f: 0f 85 73 08 00 00 jne bf08 <_dl_relocate_object+0xe98> 0.00 : b695: 48 83 fb 11 cmp $0x11,%rbx 0.00 : b699: 0f 84 69 08 00 00 je bf08 <_dl_relocate_object+0xe98> 0.00 : b69f: 48 83 fb 12 cmp $0x12,%rbx 0.00 : b6a3: 0f 84 5f 08 00 00 je bf08 <_dl_relocate_object+0xe98> 0.00 : b6a9: 48 83 fb 24 cmp $0x24,%rbx 0.00 : b6ad: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b6b2: 74 0e je b6c2 <_dl_relocate_object+0x652> 0.00 : b6b4: 30 c9 xor %cl,%cl 0.00 : b6b6: 89 c8 mov %ecx,%eax 0.00 : b6b8: 83 c8 02 or $0x2,%eax 0.00 : b6bb: 48 83 fb 05 cmp $0x5,%rbx 0.00 : b6bf: 0f 44 c8 cmove %eax,%ecx 0.00 : b6c2: 41 39 8e 08 04 00 00 cmp %ecx,0x408(%r14) 0.00 : b6c9: 0f 85 38 ff ff ff jne b607 <_dl_relocate_object+0x597> 0.00 : b6cf: 48 83 05 e1 42 21 00 addq $0x1,0x2142e1(%rip) # 21f9b8 <_rtld_global+0x958> 0.00 : b6d6: 01 0.00 : b6d7: 49 8b 86 18 04 00 00 mov 0x418(%r14),%rax 0.00 : b6de: 4d 8b be 10 04 00 00 mov 0x410(%r14),%r15 0.00 : b6e5: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : b6e9: 48 89 c2 mov %rax,%rdx 0.00 : b6ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b6f0: 31 c9 xor %ecx,%ecx 0.00 : b6f2: 48 85 d2 test %rdx,%rdx 0.00 : b6f5: 74 17 je b70e <_dl_relocate_object+0x69e> 0.00 : b6f7: 0f b6 42 04 movzbl 0x4(%rdx),%eax 0.00 : b6fb: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : b6ff: 49 03 0f add (%r15),%rcx 0.00 : b702: 83 e0 0f and $0xf,%eax 0.00 : b705: 83 f8 0a cmp $0xa,%eax 0.00 : b708: 0f 84 2f 04 00 00 je bb3d <_dl_relocate_object+0xacd> 0.00 : b70e: 48 83 fb 25 cmp $0x25,%rbx 0.00 : b712: 0f 87 29 fe ff ff ja b541 <_dl_relocate_object+0x4d1> 0.00 : b718: 48 8d 35 21 d3 00 00 lea 0xd321(%rip),%rsi # 18a40 0.00 : b71f: 48 63 04 9e movslq (%rsi,%rbx,4),%rax 0.00 : b723: 48 01 f0 add %rsi,%rax 0.00 : b726: ff e0 jmpq *%rax 0.00 : b728: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : b72d: 74 29 je b758 <_dl_relocate_object+0x6e8> 0.00 : b72f: 49 83 bf 48 04 00 00 cmpq $0x1,0x448(%r15) 0.00 : b736: 01 0.00 : b737: 0f 86 a2 07 00 00 jbe bedf <_dl_relocate_object+0xe6f> 0.00 : b73d: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.98 : b741: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b746: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : b74a: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : b751: 49 89 02 mov %rax,(%r10) 0.00 : b754: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b758: 49 83 c4 18 add $0x18,%r12 0.00 : b75c: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b763: 0f 87 7f fc ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b769: e9 22 fb ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b76e: 66 90 xchg %ax,%ax 0.00 : b770: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b775: 49 03 06 add (%r14),%rax 0.00 : b778: 49 83 c4 18 add $0x18,%r12 0.00 : b77c: 49 89 02 mov %rax,(%r10) 0.00 : b77f: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b786: 0f 87 5c fc ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b78c: e9 ff fa ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b791: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b798: 48 8d 15 39 d3 00 00 lea 0xd339(%rip),%rdx # 18ad8 1.96 : b79f: 48 63 04 9a movslq (%rdx,%rbx,4),%rax 0.98 : b7a3: 48 01 d0 add %rdx,%rax 0.00 : b7a6: ff e0 jmpq *%rax 0.00 : b7a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b7af: 00 0.98 : b7b0: 49 03 4c 24 10 add 0x10(%r12),%rcx 0.00 : b7b5: 49 83 c4 18 add $0x18,%r12 0.98 : b7b9: 49 89 0a mov %rcx,(%r10) 0.00 : b7bc: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b7c3: 0f 87 1f fc ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b7c9: e9 c2 fa ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b7ce: 66 90 xchg %ax,%ax 0.00 : b7d0: 66 83 7a 06 00 cmpw $0x0,0x6(%rdx) 0.00 : b7d5: 0f 84 5c fd ff ff je b537 <_dl_relocate_object+0x4c7> 0.00 : b7db: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : b7e2: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b7e9: ff d1 callq *%rcx 0.00 : b7eb: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b7f2: 48 89 c1 mov %rax,%rcx 0.00 : b7f5: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : b7fc: e9 36 fd ff ff jmpq b537 <_dl_relocate_object+0x4c7> 0.00 : b801: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b808: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b80d: 49 03 06 add (%r14),%rax 0.00 : b810: 49 83 c4 18 add $0x18,%r12 0.00 : b814: 49 89 02 mov %rax,(%r10) 0.00 : b817: e9 80 fd ff ff jmpq b59c <_dl_relocate_object+0x52c> 0.00 : b81c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b820: 49 83 be 38 02 00 00 cmpq $0x0,0x238(%r14) 0.00 : b827: 00 0.00 : b828: 0f 85 8f fb ff ff jne b3bd <_dl_relocate_object+0x34d> 0.00 : b82e: e9 5a fb ff ff jmpq b38d <_dl_relocate_object+0x31d> 0.00 : b833: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b838: 84 db test %bl,%bl 0.00 : b83a: 0f 84 df f8 ff ff je b11f <_dl_relocate_object+0xaf> 0.98 : b840: 49 8b 46 58 mov 0x58(%r14),%rax 0.00 : b844: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : b848: 48 8b 42 08 mov 0x8(%rdx),%rax 0.98 : b84c: 48 85 c0 test %rax,%rax 0.00 : b84f: 74 15 je b866 <_dl_relocate_object+0x7f6> 0.00 : b851: 49 03 06 add (%r14),%rax 0.00 : b854: 49 89 86 e8 03 00 00 mov %rax,0x3e8(%r14) 0.00 : b85b: 48 8d 42 18 lea 0x18(%rdx),%rax 0.00 : b85f: 49 89 86 f0 03 00 00 mov %rax,0x3f0(%r14) 0.98 : b866: 4c 89 72 08 mov %r14,0x8(%rdx) 0.00 : b86a: 44 8b 85 54 ff ff ff mov -0xac(%rbp),%r8d 0.00 : b871: 45 85 c0 test %r8d,%r8d 0.00 : b874: 0f 84 f4 02 00 00 je bb6e <_dl_relocate_object+0xafe> 0.00 : b87a: 48 8d 0d 7f 84 00 00 lea 0x847f(%rip),%rcx # 13d00 <_dl_runtime_profile> 0.00 : b881: 48 89 4a 10 mov %rcx,0x10(%rdx) 0.00 : b885: 48 8b 3d 14 34 21 00 mov 0x213414(%rip),%rdi # 21eca0 <_rtld_global_ro+0x80> 0.00 : b88c: 48 85 ff test %rdi,%rdi 0.00 : b88f: 0f 84 8a f8 ff ff je b11f <_dl_relocate_object+0xaf> 0.00 : b895: 4c 89 f6 mov %r14,%rsi 0.00 : b898: e8 e3 32 00 00 callq eb80 <_dl_name_match_p> 0.00 : b89d: 85 c0 test %eax,%eax 0.00 : b89f: 0f 84 7a f8 ff ff je b11f <_dl_relocate_object+0xaf> 0.00 : b8a5: 4c 89 35 fc 40 21 00 mov %r14,0x2140fc(%rip) # 21f9a8 <_rtld_global+0x948> 0.00 : b8ac: e9 6e f8 ff ff jmpq b11f <_dl_relocate_object+0xaf> 0.00 : b8b1: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b8b6: 49 03 06 add (%r14),%rax 0.00 : b8b9: 49 83 c4 18 add $0x18,%r12 0.00 : b8bd: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : b8c4: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b8cb: ff d0 callq *%rax 0.00 : b8cd: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : b8d4: 49 89 02 mov %rax,(%r10) 0.00 : b8d7: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b8de: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b8e5: 0f 87 fd fa ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b8eb: e9 a0 f9 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b8f0: 48 89 c8 mov %rcx,%rax 0.00 : b8f3: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : b8f8: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : b8fd: 48 39 d0 cmp %rdx,%rax 0.00 : b900: 41 89 02 mov %eax,(%r10) 0.00 : b903: 0f 86 4f fe ff ff jbe b758 <_dl_relocate_object+0x6e8> 0.00 : b909: 48 8d 3d e8 01 01 00 lea 0x101e8(%rip),%rdi # 1baf8 <__PRETTY_FUNCTION__.3644+0x1787> 0.00 : b910: 48 8b 05 f1 32 21 00 mov 0x2132f1(%rip),%rax # 21ec08 <_dl_argv> 0.00 : b917: 49 8b 76 68 mov 0x68(%r14),%rsi 0.00 : b91b: 48 8d 0d 88 dc 00 00 lea 0xdc88(%rip),%rcx # 195aa 0.00 : b922: 48 8b 10 mov (%rax),%rdx 0.00 : b925: 48 85 d2 test %rdx,%rdx 0.00 : b928: 48 0f 44 d1 cmove %rcx,%rdx 0.00 : b92c: 41 8b 4d 00 mov 0x0(%r13),%ecx 0.00 : b930: 31 c0 xor %eax,%eax 0.00 : b932: 48 03 4e 08 add 0x8(%rsi),%rcx 0.00 : b936: 48 89 fe mov %rdi,%rsi 0.00 : b939: bf 02 00 00 00 mov $0x2,%edi 0.00 : b93e: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b945: 49 83 c4 18 add $0x18,%r12 0.00 : b949: e8 b2 38 00 00 callq f200 <_dl_dprintf> 0.00 : b94e: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b955: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b95c: 0f 87 86 fa ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b962: e9 29 f9 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b967: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b96e: 00 00 0.00 : b970: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : b974: 48 85 c0 test %rax,%rax 0.00 : b977: 0f 84 db fd ff ff je b758 <_dl_relocate_object+0x6e8> 0.00 : b97d: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : b981: 48 39 50 10 cmp %rdx,0x10(%rax) 0.00 : b985: 48 89 ce mov %rcx,%rsi 0.00 : b988: 48 0f 46 50 10 cmovbe 0x10(%rax),%rdx 0.00 : b98d: 4c 89 d7 mov %r10,%rdi 0.00 : b990: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b997: e8 54 b9 00 00 callq 172f0 0.00 : b99c: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : b9a0: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : b9a4: 48 8d 3d cd 01 01 00 lea 0x101cd(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : b9ab: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b9b2: 48 39 70 10 cmp %rsi,0x10(%rax) 0.00 : b9b6: 0f 87 54 ff ff ff ja b910 <_dl_relocate_object+0x8a0> 0.00 : b9bc: 0f 83 96 fd ff ff jae b758 <_dl_relocate_object+0x6e8> 0.00 : b9c2: 8b 0d 8c 32 21 00 mov 0x21328c(%rip),%ecx # 21ec54 <_rtld_global_ro+0x34> 0.00 : b9c8: 48 8d 3d a9 01 01 00 lea 0x101a9(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : b9cf: 85 c9 test %ecx,%ecx 0.00 : b9d1: 0f 85 39 ff ff ff jne b910 <_dl_relocate_object+0x8a0> 0.00 : b9d7: e9 7c fd ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : b9dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b9e0: 48 89 c8 mov %rcx,%rax 0.00 : b9e3: 48 8d 3d 4e 01 01 00 lea 0x1014e(%rip),%rdi # 1bb38 <__PRETTY_FUNCTION__.3644+0x17c7> 0.00 : b9ea: 4c 29 d0 sub %r10,%rax 0.00 : b9ed: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : b9f2: 48 63 d0 movslq %eax,%rdx 0.00 : b9f5: 41 89 02 mov %eax,(%r10) 0.00 : b9f8: 48 39 d0 cmp %rdx,%rax 0.00 : b9fb: 0f 85 0f ff ff ff jne b910 <_dl_relocate_object+0x8a0> 0.00 : ba01: e9 52 fd ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : ba06: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : ba0b: 0f 84 b6 04 00 00 je bec7 <_dl_relocate_object+0xe57> 0.00 : ba11: 49 8b 87 48 04 00 00 mov 0x448(%r15),%rax 0.00 : ba18: 48 83 f8 01 cmp $0x1,%rax 0.00 : ba1c: 0f 84 79 02 00 00 je bc9b <_dl_relocate_object+0xc2b> 0.00 : ba22: 48 85 c0 test %rax,%rax 0.00 : ba25: 0f 84 44 02 00 00 je bc6f <_dl_relocate_object+0xbff> 0.00 : ba2b: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : ba2f: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : ba34: 49 83 c4 18 add $0x18,%r12 0.00 : ba38: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : ba3c: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : ba43: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : ba47: 48 8d 05 82 a0 00 00 lea 0xa082(%rip),%rax # 15ad0 <_dl_tlsdesc_return> 0.00 : ba4e: 49 89 02 mov %rax,(%r10) 0.00 : ba51: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : ba58: 0f 87 8a f9 ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : ba5e: e9 2d f8 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : ba63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : ba68: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : ba6c: 48 85 d2 test %rdx,%rdx 0.00 : ba6f: 0f 84 e3 fc ff ff je b758 <_dl_relocate_object+0x6e8> 0.00 : ba75: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : ba7a: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : ba7e: 49 83 c4 18 add $0x18,%r12 0.00 : ba82: 49 89 02 mov %rax,(%r10) 0.00 : ba85: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : ba8c: 0f 87 56 f9 ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : ba92: e9 f9 f7 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : ba97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : ba9e: 00 00 0.00 : baa0: 4d 85 ff test %r15,%r15 0.00 : baa3: 0f 84 af fc ff ff je b758 <_dl_relocate_object+0x6e8> 0.00 : baa9: 49 8b 87 50 04 00 00 mov 0x450(%r15),%rax 0.00 : bab0: 49 83 c4 18 add $0x18,%r12 0.00 : bab4: 49 89 02 mov %rax,(%r10) 0.00 : bab7: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : babe: 0f 87 24 f9 ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : bac4: e9 c7 f7 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : bac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.98 : bad0: 48 83 fb 07 cmp $0x7,%rbx 0.00 : bad4: 40 0f 94 c6 sete %sil 0.00 : bad8: 48 83 fb 10 cmp $0x10,%rbx 0.00 : badc: 0f 94 c2 sete %dl 0.00 : badf: 40 84 f6 test %sil,%sil 0.00 : bae2: 0f 84 41 01 00 00 je bc29 <_dl_relocate_object+0xbb9> 0.00 : bae8: b9 01 00 00 00 mov $0x1,%ecx 0.00 : baed: 89 c8 mov %ecx,%eax 0.00 : baef: 83 c8 02 or $0x2,%eax 0.00 : baf2: 48 83 fb 05 cmp $0x5,%rbx 0.00 : baf6: 0f 44 c8 cmove %eax,%ecx 0.00 : baf9: 41 39 8e 08 04 00 00 cmp %ecx,0x408(%r14) 0.00 : bb00: 0f 85 5a f9 ff ff jne b460 <_dl_relocate_object+0x3f0> 0.00 : bb06: 48 83 05 aa 3e 21 00 addq $0x1,0x213eaa(%rip) # 21f9b8 <_rtld_global+0x958> 0.00 : bb0d: 01 0.98 : bb0e: 49 8b 86 18 04 00 00 mov 0x418(%r14),%rax 0.00 : bb15: 4d 8b be 10 04 00 00 mov 0x410(%r14),%r15 0.00 : bb1c: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : bb20: 48 89 c2 mov %rax,%rdx 0.00 : bb23: e9 f1 f9 ff ff jmpq b519 <_dl_relocate_object+0x4a9> 0.00 : bb28: 49 83 be 00 01 00 00 cmpq $0x0,0x100(%r14) 0.00 : bb2f: 00 0.00 : bb30: 44 0f 45 a5 54 ff ff cmovne -0xac(%rbp),%r12d 0.00 : bb37: ff 0.00 : bb38: e9 99 f5 ff ff jmpq b0d6 <_dl_relocate_object+0x66> 0.00 : bb3d: 66 83 7a 06 00 cmpw $0x0,0x6(%rdx) 0.00 : bb42: 0f 84 c6 fb ff ff je b70e <_dl_relocate_object+0x69e> 0.00 : bb48: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bb4f: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bb56: ff d1 callq *%rcx 0.00 : bb58: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bb5f: 48 89 c1 mov %rax,%rcx 0.00 : bb62: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bb69: e9 a0 fb ff ff jmpq b70e <_dl_relocate_object+0x69e> 0.00 : bb6e: 48 8d 35 1b 81 00 00 lea 0x811b(%rip),%rsi # 13c90 <_dl_runtime_resolve> 0.00 : bb75: 84 db test %bl,%bl 0.00 : bb77: 48 89 72 10 mov %rsi,0x10(%rdx) 0.00 : bb7b: 49 8b 86 88 02 00 00 mov 0x288(%r14),%rax 0.00 : bb82: 0f 84 b9 f5 ff ff je b141 <_dl_relocate_object+0xd1> 0.00 : bb88: e9 9d f5 ff ff jmpq b12a <_dl_relocate_object+0xba> 0.00 : bb8d: 0f 1f 00 nopl (%rax) 0.00 : bb90: ba 01 00 00 00 mov $0x1,%edx 0.00 : bb95: 89 d0 mov %edx,%eax 0.00 : bb97: 83 c8 02 or $0x2,%eax 0.00 : bb9a: 48 83 fb 05 cmp $0x5,%rbx 0.00 : bb9e: 0f 44 d0 cmove %eax,%edx 0.00 : bba1: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bba5: 41 89 96 08 04 00 00 mov %edx,0x408(%r14) 0.00 : bbac: 41 89 d1 mov %edx,%r9d 0.00 : bbaf: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : bbb6: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : bbbd: 45 31 c0 xor %r8d,%r8d 0.00 : bbc0: 4c 89 f6 mov %r14,%rsi 0.00 : bbc3: 49 89 86 00 04 00 00 mov %rax,0x400(%r14) 0.00 : bbca: 8b 38 mov (%rax),%edi 0.00 : bbcc: 48 03 bd 60 ff ff ff add -0xa0(%rbp),%rdi 0.00 : bbd3: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bbda: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bbe1: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : bbe8: 00 00 0.00 : bbea: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : bbf1: e8 7a df ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : bbf6: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : bbfa: 31 c9 xor %ecx,%ecx 0.00 : bbfc: 49 89 c7 mov %rax,%r15 0.00 : bbff: 49 89 86 10 04 00 00 mov %rax,0x410(%r14) 0.00 : bc06: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bc0d: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bc14: 48 85 d2 test %rdx,%rdx 0.00 : bc17: 49 89 96 18 04 00 00 mov %rdx,0x418(%r14) 0.00 : bc1e: 0f 85 d3 fa ff ff jne b6f7 <_dl_relocate_object+0x687> 0.00 : bc24: e9 e5 fa ff ff jmpq b70e <_dl_relocate_object+0x69e> 0.00 : bc29: 84 d2 test %dl,%dl 0.00 : bc2b: 0f 85 b7 fe ff ff jne bae8 <_dl_relocate_object+0xa78> 0.00 : bc31: 48 83 fb 11 cmp $0x11,%rbx 0.00 : bc35: 0f 1f 00 nopl (%rax) 0.00 : bc38: 0f 84 aa fe ff ff je bae8 <_dl_relocate_object+0xa78> 0.00 : bc3e: 48 83 fb 12 cmp $0x12,%rbx 0.00 : bc42: 0f 84 a0 fe ff ff je bae8 <_dl_relocate_object+0xa78> 0.98 : bc48: 48 83 fb 24 cmp $0x24,%rbx 0.00 : bc4c: b9 01 00 00 00 mov $0x1,%ecx 0.98 : bc51: 0f 84 a2 fe ff ff je baf9 <_dl_relocate_object+0xa89> 0.00 : bc57: 30 c9 xor %cl,%cl 0.00 : bc59: e9 8f fe ff ff jmpq baed <_dl_relocate_object+0xa7d> 0.00 : bc5e: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : bc62: 48 03 50 08 add 0x8(%rax),%rdx 0.00 : bc66: 48 89 55 98 mov %rdx,-0x68(%rbp) 0.00 : bc6a: e9 52 f5 ff ff jmpq b1c1 <_dl_relocate_object+0x151> 0.00 : bc6f: 4c 89 ff mov %r15,%rdi 0.00 : bc72: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bc79: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bc80: e8 db f2 ff ff callq af60 <_dl_try_allocate_static_tls> 0.00 : bc85: 85 c0 test %eax,%eax 0.00 : bc87: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bc8e: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bc95: 0f 84 90 fd ff ff je ba2b <_dl_relocate_object+0x9bb> 0.00 : bc9b: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bc9f: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : bca4: 4c 89 ff mov %r15,%rdi 0.00 : bca7: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : bcab: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bcb2: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bcb9: e8 42 99 00 00 callq 15600 <_dl_make_tlsdesc_dynamic> 0.00 : bcbe: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bcc5: 48 8d 35 24 9e 00 00 lea 0x9e24(%rip),%rsi # 15af0 <_dl_tlsdesc_dynamic> 0.00 : bccc: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : bcd0: 49 89 32 mov %rsi,(%r10) 0.00 : bcd3: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bcda: e9 79 fa ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : bcdf: 49 03 4c 24 10 add 0x10(%r12),%rcx 0.00 : bce4: 49 83 c4 18 add $0x18,%r12 0.00 : bce8: 49 89 0a mov %rcx,(%r10) 0.00 : bceb: e9 ac f8 ff ff jmpq b59c <_dl_relocate_object+0x52c> 0.00 : bcf0: 4d 85 ff test %r15,%r15 0.00 : bcf3: 0f 84 9f f8 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : bcf9: 49 8b 87 50 04 00 00 mov 0x450(%r15),%rax 0.00 : bd00: 49 89 02 mov %rax,(%r10) 0.00 : bd03: e9 90 f8 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bd08: 48 89 c8 mov %rcx,%rax 0.00 : bd0b: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : bd10: be ff ff ff ff mov $0xffffffff,%esi 0.00 : bd15: 48 39 f0 cmp %rsi,%rax 0.00 : bd18: 41 89 02 mov %eax,(%r10) 0.00 : bd1b: 0f 86 77 f8 ff ff jbe b598 <_dl_relocate_object+0x528> 0.00 : bd21: 48 8d 3d d0 fd 00 00 lea 0xfdd0(%rip),%rdi # 1baf8 <__PRETTY_FUNCTION__.3644+0x1787> 0.00 : bd28: 48 8b 05 d9 2e 21 00 mov 0x212ed9(%rip),%rax # 21ec08 <_dl_argv> 0.00 : bd2f: 49 8b 76 68 mov 0x68(%r14),%rsi 0.00 : bd33: 41 8b 4d 00 mov 0x0(%r13),%ecx 0.00 : bd37: 48 8b 10 mov (%rax),%rdx 0.00 : bd3a: 48 8d 05 69 d8 00 00 lea 0xd869(%rip),%rax # 195aa 0.00 : bd41: 48 85 d2 test %rdx,%rdx 0.00 : bd44: 48 0f 44 d0 cmove %rax,%rdx 0.00 : bd48: 48 03 4e 08 add 0x8(%rsi),%rcx 0.00 : bd4c: 31 c0 xor %eax,%eax 0.00 : bd4e: 48 89 fe mov %rdi,%rsi 0.00 : bd51: bf 02 00 00 00 mov $0x2,%edi 0.00 : bd56: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bd5d: e8 9e 34 00 00 callq f200 <_dl_dprintf> 0.00 : bd62: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bd69: e9 2a f8 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bd6e: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bd72: 48 85 c0 test %rax,%rax 0.00 : bd75: 0f 84 1d f8 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : bd7b: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : bd7f: 48 39 50 10 cmp %rdx,0x10(%rax) 0.00 : bd83: 4c 89 d7 mov %r10,%rdi 0.00 : bd86: 48 0f 46 50 10 cmovbe 0x10(%rax),%rdx 0.00 : bd8b: 48 89 ce mov %rcx,%rsi 0.00 : bd8e: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bd95: e8 56 b5 00 00 callq 172f0 0.00 : bd9a: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bd9e: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : bda2: 48 8d 3d cf fd 00 00 lea 0xfdcf(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : bda9: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bdb0: 48 39 50 10 cmp %rdx,0x10(%rax) 0.00 : bdb4: 0f 87 6e ff ff ff ja bd28 <_dl_relocate_object+0xcb8> 0.00 : bdba: 0f 83 d8 f7 ff ff jae b598 <_dl_relocate_object+0x528> 0.00 : bdc0: 8b 15 8e 2e 21 00 mov 0x212e8e(%rip),%edx # 21ec54 <_rtld_global_ro+0x34> 0.00 : bdc6: 48 8d 3d ab fd 00 00 lea 0xfdab(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : bdcd: 85 d2 test %edx,%edx 0.00 : bdcf: 0f 85 53 ff ff ff jne bd28 <_dl_relocate_object+0xcb8> 0.00 : bdd5: e9 be f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bdda: 48 89 c8 mov %rcx,%rax 0.00 : bddd: 48 8d 3d 54 fd 00 00 lea 0xfd54(%rip),%rdi # 1bb38 <__PRETTY_FUNCTION__.3644+0x17c7> 0.00 : bde4: 4c 29 d0 sub %r10,%rax 0.00 : bde7: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : bdec: 48 63 d0 movslq %eax,%rdx 0.00 : bdef: 41 89 02 mov %eax,(%r10) 0.00 : bdf2: 48 39 d0 cmp %rdx,%rax 0.00 : bdf5: 0f 85 2d ff ff ff jne bd28 <_dl_relocate_object+0xcb8> 0.00 : bdfb: e9 98 f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be00: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : be05: 49 03 06 add (%r14),%rax 0.00 : be08: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : be0f: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : be16: ff d0 callq *%rax 0.00 : be18: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : be1f: 49 89 02 mov %rax,(%r10) 0.00 : be22: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : be29: e9 6a f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be2e: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : be33: 0f 84 5f f7 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : be39: 49 83 bf 48 04 00 00 cmpq $0x1,0x448(%r15) 0.00 : be40: 01 0.00 : be41: 0f 86 3b 01 00 00 jbe bf82 <_dl_relocate_object+0xf12> 0.00 : be47: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : be4b: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : be50: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : be54: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : be5b: 49 89 02 mov %rax,(%r10) 0.00 : be5e: e9 35 f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be63: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : be67: 48 85 d2 test %rdx,%rdx 0.00 : be6a: 0f 84 28 f7 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : be70: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : be75: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : be79: 49 89 02 mov %rax,(%r10) 0.00 : be7c: e9 17 f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be81: ba 01 00 00 00 mov $0x1,%edx 0.00 : be86: 89 c6 mov %eax,%esi 0.00 : be88: 4c 89 f7 mov %r14,%rdi 0.00 : be8b: e8 00 ef ff ff callq ad90 <_dl_reloc_bad_type> 0.00 : be90: 48 8d 0d 19 08 01 00 lea 0x10819(%rip),%rcx # 1c6b0 <__PRETTY_FUNCTION__.11640> 0.00 : be97: 48 8d 35 4a e7 00 00 lea 0xe74a(%rip),%rsi # 1a5e8 <__PRETTY_FUNCTION__.3644+0x277> 0.00 : be9e: 48 8d 3d 63 e7 00 00 lea 0xe763(%rip),%rdi # 1a608 <__PRETTY_FUNCTION__.3644+0x297> 0.00 : bea5: ba d2 01 00 00 mov $0x1d2,%edx 0.00 : beaa: e8 c1 8e 00 00 callq 14d70 <__GI___assert_fail> 0.00 : beaf: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : beb4: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : beb8: 48 8d 05 21 9c 00 00 lea 0x9c21(%rip),%rax # 15ae0 <_dl_tlsdesc_undefweak> 0.00 : bebf: 49 89 02 mov %rax,(%r10) 0.00 : bec2: e9 d1 f6 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bec7: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : becc: 48 8d 0d 0d 9c 00 00 lea 0x9c0d(%rip),%rcx # 15ae0 <_dl_tlsdesc_undefweak> 0.00 : bed3: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : bed7: 49 89 0a mov %rcx,(%r10) 0.00 : beda: e9 79 f8 ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : bedf: 4c 89 ff mov %r15,%rdi 0.00 : bee2: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bee9: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bef0: e8 3b f1 ff ff callq b030 <_dl_allocate_static_tls> 0.00 : bef5: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : befc: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bf03: e9 35 f8 ff ff jmpq b73d <_dl_relocate_object+0x6cd> 0.00 : bf08: b9 01 00 00 00 mov $0x1,%ecx 0.00 : bf0d: e9 a4 f7 ff ff jmpq b6b6 <_dl_relocate_object+0x646> 0.00 : bf12: 4c 89 ff mov %r15,%rdi 0.00 : bf15: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bf1c: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bf23: e8 38 f0 ff ff callq af60 <_dl_try_allocate_static_tls> 0.00 : bf28: 85 c0 test %eax,%eax 0.00 : bf2a: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bf31: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bf38: 0f 84 34 f6 ff ff je b572 <_dl_relocate_object+0x502> 0.00 : bf3e: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bf42: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : bf47: 4c 89 ff mov %r15,%rdi 0.00 : bf4a: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : bf4e: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bf55: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bf5c: e8 9f 96 00 00 callq 15600 <_dl_make_tlsdesc_dynamic> 0.00 : bf61: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bf68: 48 8d 15 81 9b 00 00 lea 0x9b81(%rip),%rdx # 15af0 <_dl_tlsdesc_dynamic> 0.00 : bf6f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : bf73: 49 89 12 mov %rdx,(%r10) 0.00 : bf76: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bf7d: e9 16 f6 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bf82: 4c 89 ff mov %r15,%rdi 0.00 : bf85: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bf8c: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bf93: e8 98 f0 ff ff callq b030 <_dl_allocate_static_tls> 0.00 : bf98: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bf9f: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bfa6: e9 9c fe ff ff jmpq be47 <_dl_relocate_object+0xdd7> 0.00 : bfab: 41 0f b7 8e b0 02 00 movzwl 0x2b0(%r14),%ecx 0.00 : bfb2: 00 0.00 : bfb3: 49 8b 9e a0 02 00 00 mov 0x2a0(%r14),%rbx 0.00 : bfba: 48 8d 14 cd 00 00 00 lea 0x0(,%rcx,8),%rdx 0.00 : bfc1: 00 0.00 : bfc2: 48 89 c8 mov %rcx,%rax 0.00 : bfc5: 48 c1 e0 06 shl $0x6,%rax 0.00 : bfc9: 48 29 d0 sub %rdx,%rax 0.00 : bfcc: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : bfd0: 48 39 c3 cmp %rax,%rbx 0.00 : bfd3: 0f 83 18 f1 ff ff jae b0f1 <_dl_relocate_object+0x81> 0.00 : bfd9: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : bfe0: 00 00 00 00 0.00 : bfe4: 49 bf ff ff ff ff 02 movabs $0x2ffffffff,%r15 0.00 : bfeb: 00 00 00 0.00 : bfee: eb 26 jmp c016 <_dl_relocate_object+0xfa6> 0.00 : bff0: 48 8d 14 cd 00 00 00 lea 0x0(,%rcx,8),%rdx 0.00 : bff7: 00 0.00 : bff8: 48 89 c8 mov %rcx,%rax 0.00 : bffb: 48 83 c3 38 add $0x38,%rbx 0.00 : bfff: 48 c1 e0 06 shl $0x6,%rax 0.00 : c003: 48 29 d0 sub %rdx,%rax 0.00 : c006: 49 03 86 a0 02 00 00 add 0x2a0(%r14),%rax 0.00 : c00d: 48 39 c3 cmp %rax,%rbx 0.00 : c010: 0f 83 e6 f0 ff ff jae b0fc <_dl_relocate_object+0x8c> 0.00 : c016: 4c 89 f8 mov %r15,%rax 0.00 : c019: 48 23 03 and (%rbx),%rax 0.00 : c01c: 48 83 e8 01 sub $0x1,%rax 0.00 : c020: 75 ce jne bff0 <_dl_relocate_object+0xf80> 0.00 : c022: 48 8b 4b 10 mov 0x10(%rbx),%rcx 0.00 : c026: 48 8b 35 0b 2c 21 00 mov 0x212c0b(%rip),%rsi # 21ec38 <_rtld_global_ro+0x18> 0.00 : c02d: 48 83 ec 30 sub $0x30,%rsp 0.00 : c031: 4c 8d 6c 24 1f lea 0x1f(%rsp),%r13 0.00 : c036: 48 89 ca mov %rcx,%rdx 0.00 : c039: 48 03 53 28 add 0x28(%rbx),%rdx 0.00 : c03d: 48 89 f0 mov %rsi,%rax 0.00 : c040: 48 f7 d8 neg %rax 0.00 : c043: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : c047: 48 8d 74 16 ff lea -0x1(%rsi,%rdx,1),%rsi 0.00 : c04c: ba 03 00 00 00 mov $0x3,%edx 0.00 : c051: 48 21 c6 and %rax,%rsi 0.00 : c054: 48 21 c8 and %rcx,%rax 0.00 : c057: 48 29 c6 sub %rax,%rsi 0.00 : c05a: 49 89 75 08 mov %rsi,0x8(%r13) 0.00 : c05e: 48 8b 3d d3 2b 21 00 mov 0x212bd3(%rip),%rdi # 21ec38 <_rtld_global_ro+0x18> 0.00 : c065: 48 f7 df neg %rdi 0.00 : c068: 48 23 7b 10 and 0x10(%rbx),%rdi 0.00 : c06c: 49 03 3e add (%r14),%rdi 0.00 : c06f: 49 89 7d 00 mov %rdi,0x0(%r13) 0.00 : c073: e8 b8 a1 00 00 callq 16230 <__mprotect> 0.00 : c078: 85 c0 test %eax,%eax 0.00 : c07a: 78 71 js c0ed <_dl_relocate_object+0x107d> 0.00 : c07c: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : c07f: b8 40 62 51 73 mov $0x73516240,%eax 0.00 : c084: 83 e1 07 and $0x7,%ecx 0.00 : c087: c1 e1 02 shl $0x2,%ecx 0.00 : c08a: d3 f8 sar %cl,%eax 0.00 : c08c: 83 e0 0f and $0xf,%eax 0.00 : c08f: 41 89 45 10 mov %eax,0x10(%r13) 0.00 : c093: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : c09a: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : c09e: 4c 89 ad 68 ff ff ff mov %r13,-0x98(%rbp) 0.00 : c0a5: 41 0f b7 8e b0 02 00 movzwl 0x2b0(%r14),%ecx 0.00 : c0ac: 00 0.00 : c0ad: e9 3e ff ff ff jmpq bff0 <_dl_relocate_object+0xf80> 0.00 : c0b2: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : c0b6: 48 8d 15 20 d7 00 00 lea 0xd720(%rip),%rdx # 197dd 0.00 : c0bd: 48 8d 05 35 dc 00 00 lea 0xdc35(%rip),%rax # 19cf9 <__PRETTY_FUNCTION__.12494+0x1a> 0.00 : c0c4: 45 85 e4 test %r12d,%r12d 0.00 : c0c7: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : c0cb: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : c0ce: 75 0a jne c0da <_dl_relocate_object+0x106a> 0.00 : c0d0: 48 8b 05 31 2b 21 00 mov 0x212b31(%rip),%rax # 21ec08 <_dl_argv> 0.00 : c0d7: 48 8b 30 mov (%rax),%rsi 0.00 : c0da: 48 8d 3d 20 dc 00 00 lea 0xdc20(%rip),%rdi # 19d01 <__PRETTY_FUNCTION__.12494+0x22> 0.00 : c0e1: 31 c0 xor %eax,%eax 0.00 : c0e3: e8 68 32 00 00 callq f350 <_dl_debug_printf> 0.00 : c0e8: e9 f6 ef ff ff jmpq b0e3 <_dl_relocate_object+0x73> 0.00 : c0ed: 48 8d 0d d4 f9 00 00 lea 0xf9d4(%rip),%rcx # 1bac8 <__PRETTY_FUNCTION__.3644+0x1757> 0.00 : c0f4: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : c0f8: 8b 3d 86 40 21 00 mov 0x214086(%rip),%edi # 220184 0.00 : c0fe: 31 d2 xor %edx,%edx 0.00 : c100: e8 fb 1d 00 00 callq df00 <_dl_signal_error> 0.00 : c105: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : c10c: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : c10f: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : c113: 48 8b 39 mov (%rcx),%rdi 0.00 : c116: e8 15 a1 00 00 callq 16230 <__mprotect> 0.00 : c11b: 85 c0 test %eax,%eax 0.00 : c11d: 78 7d js c19c <_dl_relocate_object+0x112c> 0.00 : c11f: 48 8b b5 68 ff ff ff mov -0x98(%rbp),%rsi 0.00 : c126: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : c12a: 48 85 f6 test %rsi,%rsi 0.00 : c12d: 48 89 b5 68 ff ff ff mov %rsi,-0x98(%rbp) 0.00 : c134: 0f 84 94 f1 ff ff je b2ce <_dl_relocate_object+0x25e> 0.00 : c13a: eb c9 jmp c105 <_dl_relocate_object+0x1095> 0.00 : c13c: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : c140: 48 85 c0 test %rax,%rax 0.00 : c143: 74 63 je c1a8 <_dl_relocate_object+0x1138> 0.00 : c145: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : c149: bf 20 00 00 00 mov $0x20,%edi 0.00 : c14e: e8 7d 49 ff ff callq ad0 0.00 : c153: 48 85 c0 test %rax,%rax 0.00 : c156: 49 89 86 28 03 00 00 mov %rax,0x328(%r14) 0.00 : c15d: 48 8d 35 8c fa 00 00 lea 0xfa8c(%rip),%rsi # 1bbf0 <__PRETTY_FUNCTION__.3644+0x187f> 0.00 : c164: 0f 85 4e f1 ff ff jne b2b8 <_dl_relocate_object+0x248> 0.00 : c16a: 48 8b 05 97 2a 21 00 mov 0x212a97(%rip),%rax # 21ec08 <_dl_argv> 0.00 : c171: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : c175: 48 8d 15 2e d4 00 00 lea 0xd42e(%rip),%rdx # 195aa 0.00 : c17c: bf 02 00 00 00 mov $0x2,%edi 0.00 : c181: 48 8b 00 mov (%rax),%rax 0.00 : c184: 48 85 c0 test %rax,%rax 0.00 : c187: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : c18b: 31 c0 xor %eax,%eax 0.00 : c18d: e8 6e 30 00 00 callq f200 <_dl_dprintf> 0.00 : c192: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : c197: e8 24 a1 00 00 callq 162c0 <_Exit> 0.00 : c19c: 48 8d 0d 85 fa 00 00 lea 0xfa85(%rip),%rcx # 1bc28 <__PRETTY_FUNCTION__.3644+0x18b7> 0.00 : c1a3: e9 4c ff ff ff jmpq c0f4 <_dl_relocate_object+0x1084> 0.00 : c1a8: 48 8d 35 19 fa 00 00 lea 0xfa19(%rip),%rsi # 1bbc8 <__PRETTY_FUNCTION__.3644+0x1857> 0.00 : c1af: eb b9 jmp c16a <_dl_relocate_object+0x10fa> Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 14.89 ??:0 14.89 ??:0 10.64 ??:0 8.51 ??:0 8.51 ??:0 6.38 ??:0 6.38 ??:0 6.38 ??:0 6.38 ??:0 4.26 ??:0 4.26 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000ca0 <__nf_ct_refresh_acct>: ??:0 34.04 : ca0: 48 83 ec 28 sub $0x28,%rsp 0.00 : cd4: 48 89 5c 24 08 48 test %ecx,0x48000000(%rdi) 0.00 : cda: 89 6c 24 10 44 89 mov %ecx,0x98(%rdi) 6.38 : ce0: c3 4c test %ebx,%ebx 0.00 : ce2: 89 64 je d48 0.00 : ce4: 24 18 4c 89 6c 24 20 mov 0xe0(%rbp),%rdx 0.00 : ceb: 48 89 fd test %rdx,%rdx 0.00 : cee: 48 8b je d48 0.00 : cf0: 47 78 41 89 movzbl 0x12(%rdx),%eax 6.38 : cf4: f4 49 test %al,%al 0.00 : cf6: 89 d5 je d48 0.00 : cf8: f6 c4 04 movzbl %al,%eax 0.00 : cfb: 75 13 48 mov %rdx,%rbx 0.00 : cfe: 8b 47 78 add %rax,%rbx 0.00 : d01: a8 08 je d48 ??:0 2.13 : d03: 0f 85 8f 00 add $0x4,%rbp 2.13 : d07: 00 00 48 mov %rbp,%rdi 0.00 : d0a: 89 8f 98 00 00 callq d0f 0.00 : d0f: 00 85 db 74 cmp $0x2,%r12d 0.00 : d13: 64 48 8b 95 e0 00 ja da0 0.00 : d19: 00 00 48 85 addq $0x1,(%rbx) 0.00 : d1d: d2 74 58 0f mov 0x68(%r13),%eax ??:0 8.51 : d21: b6 42 12 mov %rbp,%rdi 0.00 : d24: 84 c0 74 50 add %rax,0x8(%rbx) ??:0 4.26 : d28: 0f b6 c0 48 89 mov 0x8(%rsp),%rbx 0.00 : d2d: d3 48 01 c3 74 mov 0x10(%rsp),%rbp 0.00 : d32: 45 48 83 c5 04 mov 0x18(%rsp),%r12 0.00 : d37: 48 89 ef e8 00 mov 0x20(%rsp),%r13 2.13 : d3c: 00 00 00 41 add $0x28,%rsp 0.00 : d40: 83 fc 02 0f 87 jmpq d45 0.00 : d45: 87 00 00 nopl (%rax) 0.00 : d48: 00 48 83 03 01 mov 0x8(%rsp),%rbx 0.00 : d4d: 41 8b 45 68 48 mov 0x10(%rsp),%rbp 0.00 : d52: 89 ef 48 01 43 mov 0x18(%rsp),%r12 0.00 : d57: 08 48 8b 5c 24 mov 0x20(%rsp),%r13 0.00 : d5c: 08 48 8b 6c add $0x28,%rsp 0.00 : d60: 24 retq 0.00 : d61: 10 4c 8b 64 24 18 4c nopl 0x0(%rax) ??:0 14.89 : d68: 8b 6c 24 20 48 83 c4 mov 0x0(%rip),%rax # d6f 10.64 : d6f: 28 e9 00 00 lea (%rcx,%rax,1),%rsi 0.00 : d73: 00 00 0f mov %rsi,%rax 0.00 : d76: 1f 00 48 8b 5c 24 08 sub 0x98(%rdi),%rax 8.51 : d7d: 48 8b 6c 24 10 4c cmp $0xf9,%rax 0.00 : d83: 8b 64 24 18 4c 8b jbe ce0 0.00 : d89: 6c 24 20 48 83 c4 28 lea 0x88(%rdi),%rdi 0.00 : d90: c3 0f 1f 80 00 callq d95 0.00 : d95: 00 00 00 48 8b jmpq ce0 0.00 : d9a: 05 00 00 00 00 48 nopw 0x0(%rax,%rax,1) 0.00 : da0: 8d 34 01 48 add $0x10,%rbx 0.00 : da4: 89 f0 48 2b addq $0x1,(%rbx) 0.00 : da8: 87 98 00 00 00 jmpq d1d : dad: 48 3d f9 nopl (%rax) : db0: 00 00 00 0f sub $0x18,%rsp : db4: 86 57 ff ff mov %rbx,(%rsp) : db8: ff 48 8d bf 88 mov %rbp,0x8(%rsp) : dbd: 00 00 00 mov %rdi,%rbx : dc0: e8 00 00 00 00 mov %r12,0x10(%rsp) : dc5: e9 46 ff ff ff 66 0f mov 0xe0(%rdi),%rdx : dcc: 1f 44 00 mov %rsi,%rbp : dcf: 00 48 83 test %rdx,%rdx : dd2: c3 10 je ddc : dd4: 48 83 03 01 movzbl 0x10(%rdx),%eax : dd8: e9 70 test %al,%al : dda: ff ff jne e30 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_mangle.ko ---------------------------------------------- 26.19 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 2.38 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_mangle.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000080 : 40.48 : 80: 48 83 ec 38 sub $0x38,%rsp 0.00 : b4: 83 ff 03 48 89 5c mov 0x460(%rdx),%eax 0.00 : ba: 24 08 mov %edi,%esi 0.00 : bc: 48 89 6c 24 10 48 89 mov 0x250(%rax),%r8 7.14 : c3: f3 4c 89 mov %rbx,%rdi 0.00 : c6: 64 24 18 4c 89 mov 0x10(%rsp),%rbp 0.00 : cb: 6c 24 20 4c 89 mov 0x8(%rsp),%rbx ??:0 2.38 : d0: 74 24 28 4c 89 mov 0x18(%rsp),%r12 2.38 : d5: 7c 24 30 74 46 mov 0x20(%rsp),%r13 0.00 : da: 83 ff 04 0f 84 mov 0x28(%rsp),%r14 0.00 : df: fd 00 00 00 48 mov 0x30(%rsp),%r15 0.00 : e4: 8b 82 60 04 add $0x38,%rsp 2.38 : e8: 00 00 89 fe 4c jmpq ed 0.00 : ed: 8b 80 50 nopl (%rax) 0.00 : f0: 02 00 00 48 cmpl $0x13,0x68(%rsi) 0.00 : f4: 89 df 48 8b 6c 24 jbe 180 0.00 : fa: 10 48 8b 5c 24 08 mov 0xc4(%rsi),%edx 4.76 : 100: 4c 8b 64 24 18 4c 8b add 0xd8(%rsi),%rdx 4.76 : 107: 6c 24 20 movzbl (%rdx),%eax 0.00 : 10a: 4c 8b 74 and $0xf,%eax 0.00 : 10d: 24 28 4c shl $0x2,%eax 0.00 : 110: 8b 7c 24 cmp $0x13,%eax 0.00 : 113: 30 48 jbe 180 0.00 : 115: 83 c4 38 e9 00 00 00 mov 0x460(%rcx),%rax 0.00 : 11c: 00 0f 1f 00 83 7e 68 mov 0xb8(%rsi),%r15d 0.00 : 123: 13 0f 86 mov %rbx,%rdi 0.00 : 126: 86 00 00 00 mov 0xc(%rdx),%r12d 4.76 : 12a: 8b 96 c4 00 mov 0x10(%rdx),%r13d 0.00 : 12e: 00 00 48 03 96 mov $0x3,%esi 0.00 : 133: d8 00 00 00 0f movzbl 0x1(%rdx),%r14d 0.00 : 138: b6 02 xor %edx,%edx 0.00 : 13a: 83 e0 0f c1 e0 02 83 mov 0x250(%rax),%r8 ??:0 7.14 : 141: f8 13 76 6b 48 callq 146 0.00 : 146: 8b 81 test %eax,%eax 0.00 : 148: 60 04 mov %eax,%ebp 0.00 : 14a: 00 00 je 185 0.00 : 14c: 44 8b be cmp $0x2,%eax 0.00 : 14f: b8 00 je 185 0.00 : 151: 00 00 48 89 df 44 mov 0xc4(%rbx),%eax 0.00 : 157: 8b 62 0c 44 8b 6a 10 add 0xd8(%rbx),%rax ??:0 4.76 : 15e: be 03 00 00 cmp 0xc(%rax),%r12d 0.00 : 162: 00 44 jne 16a 0.00 : 164: 0f b6 72 01 cmp 0x10(%rax),%r13d 0.00 : 168: 31 d2 je 1c8 0.00 : 16a: 4c 8b xor %esi,%esi 0.00 : 16c: 80 50 02 mov %rbx,%rdi 0.00 : 16f: 00 00 e8 00 00 callq 174 0.00 : 174: 00 00 test %eax,%eax 0.00 : 176: 85 c0 89 c5 74 mov $0x0,%eax 0.00 : 17b: 39 83 f8 cmovne %eax,%ebp 0.00 : 17e: 02 74 jmp 185 0.00 : 180: 34 8b 83 c4 00 mov $0x1,%ebp 4.76 : 185: 00 00 mov %ebp,%eax 0.00 : 187: 48 03 83 d8 00 mov 0x8(%rsp),%rbx 0.00 : 18c: 00 00 44 3b 60 mov 0x10(%rsp),%rbp 0.00 : 191: 0c 75 06 44 3b mov 0x18(%rsp),%r12 0.00 : 196: 68 10 74 5e 31 mov 0x20(%rsp),%r13 0.00 : 19b: f6 48 89 df e8 mov 0x28(%rsp),%r14 0.00 : 1a0: 00 00 00 00 85 mov 0x30(%rsp),%r15 0.00 : 1a5: c0 b8 00 00 add $0x38,%rsp 0.00 : 1a9: 00 retq 0.00 : 1aa: 00 0f 45 e8 eb 05 nopw 0x0(%rax,%rax,1) 2.38 : 1b0: bd 01 00 00 00 89 e8 mov 0x460(%rcx),%rax 0.00 : 1b7: 48 8b 5c 24 08 mov $0x4,%esi 0.00 : 1bc: 48 8b 6c 24 10 4c 8b mov 0x250(%rax),%r8 0.00 : 1c3: 64 24 18 4c 8b jmpq c3 ??:0 7.14 : 1c8: 6c 24 20 4c 8b 74 24 cmp 0xb8(%rbx),%r15d 0.00 : 1cf: 28 4c jne 16a 0.00 : 1d1: 8b 7c 24 30 cmp 0x1(%rax),%r14b 0.00 : 1d5: 48 83 jne 16a ??:0 4.76 : 1d7: c4 38 jmp 185 : 1d9: c3 66 0f nopl (%rax) : 1dc: Address 0x00000000000001dc is out of bounds. : Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_filter.ko ---------------------------------------------- 51.11 ??:0 20.00 ??:0 4.44 ??:0 4.44 ??:0 4.44 ??:0 4.44 ??:0 2.22 ??:0 2.22 ??:0 2.22 ??:0 2.22 ??:0 2.22 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_filter.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000080 : ??:0 88.89 : 80: 83 ff 03 cmp $0x3,%edi ??:0 4.44 : b3: 49 89 f1 48 89 pushq $0x411d7613 0.00 : b8: d6 74 25 48 85 f6 mov 0xc4(%rcx),%edx 0.00 : be: 48 89 c8 48 89 f2 48 mov 0xd8(%r9),%rax 4.44 : c5: 0f 45 c6 89 movzbl (%rax,%rdx,1),%eax 2.22 : c9: fe 4c 89 and $0xf,%eax 0.00 : cc: cf 48 8b shl $0x2,%eax 0.00 : cf: 80 60 04 cmp $0x13,%eax 0.00 : d2: 00 00 ja 8b 0.00 : d4: 4c 8b 80 48 02 mov $0x1,%eax 0.00 : d9: 00 retq : da: 00 e9 xchg %ax,%ax : dc: Address 0x00000000000000dc is out of bounds. : Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1532 21.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1534 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1530 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1506 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1506 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1530 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1530 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1545 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1506 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1549 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1519 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1530 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1530 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000783ec0 : : /* : * allocate some new elements and link them into the free list : */ : static bool : element_alloc(HTAB *hashp, int nelem) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1506 4.76 : 783ec0: 55 push %rbp 4.76 : 783ec1: 48 89 fa mov %rdi,%rdx 0.00 : 783ec4: 48 89 e5 mov %rsp,%rbp 0.00 : 783ec7: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 783ecb: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 783ecf: 89 f3 mov %esi,%ebx 0.00 : 783ed1: 4c 89 6d e8 mov %r13,-0x18(%rbp) 2.38 : 783ed5: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 783ed9: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 783edd: 48 83 ec 30 sub $0x30,%rsp : HASHELEMENT *firstElement; : HASHELEMENT *tmpElement; : HASHELEMENT *prevElement; : int i; : : if (hashp->isfixed) 0.00 : 783ee1: 80 7f 41 00 cmpb $0x0,0x41(%rdi) : */ : static bool : element_alloc(HTAB *hashp, int nelem) : { : /* use volatile pointer to prevent code rearrangement */ : volatile HASHHDR *hctlv = hashp->hctl; 0.00 : 783ee5: 4c 8b 2f mov (%rdi),%r13 : HASHELEMENT *firstElement; : HASHELEMENT *tmpElement; : HASHELEMENT *prevElement; : int i; : : if (hashp->isfixed) 0.00 : 783ee8: 74 1e je 783f08 : /* freelist could be nonempty if two backends did this concurrently */ : firstElement->link = hctlv->freeList; : hctlv->freeList = prevElement; : : if (IS_PARTITIONED(hctlv)) : SpinLockRelease(&hctlv->mutex); 0.00 : 783eea: 31 d2 xor %edx,%edx : : return true; : } 0.00 : 783eec: 89 d0 mov %edx,%eax 0.00 : 783eee: 48 8b 5d d8 mov -0x28(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1549 2.38 : 783ef2: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 783ef6: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 783efa: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 783efe: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 783f02: c9 leaveq 0.00 : 783f03: c3 retq 0.00 : 783f04: 0f 1f 40 00 nopl 0x0(%rax) : : if (hashp->isfixed) : return false; : : /* Each element has a HASHELEMENT header plus user data. */ : elementSize = MAXALIGN(sizeof(HASHELEMENT)) + MAXALIGN(hctlv->entrysize); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1519 2.38 : 783f08: 49 8b 45 40 mov 0x40(%r13),%rax 0.00 : 783f0c: 48 83 c0 07 add $0x7,%rax 0.00 : 783f10: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 783f14: 4c 8d 60 10 lea 0x10(%rax),%r12 : : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 783f18: 48 8b 47 30 mov 0x30(%rdi),%rax : firstElement = (HASHELEMENT *) hashp->alloc(nelem * elementSize); 0.00 : 783f1c: 48 63 fe movslq %esi,%rdi 0.00 : 783f1f: 49 0f af fc imul %r12,%rdi : return false; : : /* Each element has a HASHELEMENT header plus user data. */ : elementSize = MAXALIGN(sizeof(HASHELEMENT)) + MAXALIGN(hctlv->entrysize); : : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 783f23: 48 89 05 9e 5c 43 00 mov %rax,0x435c9e(%rip) # bb9bc8 : firstElement = (HASHELEMENT *) hashp->alloc(nelem * elementSize); 0.00 : 783f2a: ff 52 28 callq *0x28(%rdx) : : if (!firstElement) 0.00 : 783f2d: 48 85 c0 test %rax,%rax : : /* Each element has a HASHELEMENT header plus user data. */ : elementSize = MAXALIGN(sizeof(HASHELEMENT)) + MAXALIGN(hctlv->entrysize); : : CurrentDynaHashCxt = hashp->hcxt; : firstElement = (HASHELEMENT *) hashp->alloc(nelem * elementSize); 0.00 : 783f30: 49 89 c6 mov %rax,%r14 : : if (!firstElement) 0.00 : 783f33: 74 b5 je 783eea : return false; : : /* prepare to link all the new entries into the freelist */ : prevElement = NULL; : tmpElement = firstElement; : for (i = 0; i < nelem; i++) 0.00 : 783f35: 45 31 ff xor %r15d,%r15d 0.00 : 783f38: 85 db test %ebx,%ebx 0.00 : 783f3a: 7e 2b jle 783f67 0.00 : 783f3c: 31 f6 xor %esi,%esi 0.00 : 783f3e: 31 d2 xor %edx,%edx 0.00 : 783f40: eb 09 jmp 783f4b 0.00 : 783f42: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1530 7.14 : 783f48: 48 89 c8 mov %rcx,%rax 0.00 : 783f4b: 83 c2 01 add $0x1,%edx : { : tmpElement->link = prevElement; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1532 35.71 : 783f4e: 48 89 30 mov %rsi,(%rax) : prevElement = tmpElement; : tmpElement = (HASHELEMENT *) (((char *) tmpElement) + elementSize); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1534 21.43 : 783f51: 4a 8d 0c 20 lea (%rax,%r12,1),%rcx : return false; : : /* prepare to link all the new entries into the freelist */ : prevElement = NULL; : tmpElement = firstElement; : for (i = 0; i < nelem; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1530 2.38 : 783f55: 39 d3 cmp %edx,%ebx 4.76 : 783f57: 48 89 c6 mov %rax,%rsi 2.38 : 783f5a: 7f ec jg 783f48 4.76 : 783f5c: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 783f5f: 49 0f af c4 imul %r12,%rax 0.00 : 783f63: 4d 8d 3c 06 lea (%r14,%rax,1),%r15 : prevElement = tmpElement; : tmpElement = (HASHELEMENT *) (((char *) tmpElement) + elementSize); : } : : /* if partitioned, must lock to touch freeList */ : if (IS_PARTITIONED(hctlv)) 0.00 : 783f67: 49 8b 45 48 mov 0x48(%r13),%rax 0.00 : 783f6b: 48 85 c0 test %rax,%rax 0.00 : 783f6e: 74 0e je 783f7e : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 783f70: b8 01 00 00 00 mov $0x1,%eax 0.00 : 783f75: f0 41 86 45 00 lock xchg %al,0x0(%r13) : SpinLockAcquire(&hctlv->mutex); 0.00 : 783f7a: 84 c0 test %al,%al 0.00 : 783f7c: 75 32 jne 783fb0 : : /* freelist could be nonempty if two backends did this concurrently */ : firstElement->link = hctlv->freeList; 0.00 : 783f7e: 49 8b 45 10 mov 0x10(%r13),%rax : hctlv->freeList = prevElement; : : if (IS_PARTITIONED(hctlv)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1545 4.76 : 783f82: ba 01 00 00 00 mov $0x1,%edx : /* if partitioned, must lock to touch freeList */ : if (IS_PARTITIONED(hctlv)) : SpinLockAcquire(&hctlv->mutex); : : /* freelist could be nonempty if two backends did this concurrently */ : firstElement->link = hctlv->freeList; 0.00 : 783f87: 49 89 06 mov %rax,(%r14) : hctlv->freeList = prevElement; 0.00 : 783f8a: 4d 89 7d 10 mov %r15,0x10(%r13) : : if (IS_PARTITIONED(hctlv)) 0.00 : 783f8e: 49 8b 45 48 mov 0x48(%r13),%rax 0.00 : 783f92: 48 85 c0 test %rax,%rax 0.00 : 783f95: 0f 84 51 ff ff ff je 783eec : SpinLockRelease(&hctlv->mutex); 0.00 : 783f9b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 783fa0: 41 c6 45 00 00 movb $0x0,0x0(%r13) 0.00 : 783fa5: e9 42 ff ff ff jmpq 783eec 0.00 : 783faa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : tmpElement = (HASHELEMENT *) (((char *) tmpElement) + elementSize); : } : : /* if partitioned, must lock to touch freeList */ : if (IS_PARTITIONED(hctlv)) : SpinLockAcquire(&hctlv->mutex); 0.00 : 783fb0: ba 03 06 00 00 mov $0x603,%edx 0.00 : 783fb5: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 783fba: 4c 89 ef mov %r13,%rdi 0.00 : 783fbd: e8 7e c0 f0 ff callq 690040 0.00 : 783fc2: eb ba jmp 783f7e Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 44.68 ??:0 36.17 ??:0 14.89 ??:0 4.26 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000dc950 : ??:0 14.89 : dc950: b8 41 00 00 00 mov $0x41,%eax ??:0 4.26 : dc955: 0f 05 syscall ??:0 36.17 : dc957: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : dc95d: 73 01 jae dc960 44.68 : dc95f: c3 retq 0.00 : dc960: 48 8b 0d d1 54 29 00 mov 0x2954d1(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : dc967: 31 d2 xor %edx,%edx 0.00 : dc969: 48 29 c2 sub %rax,%rdx 0.00 : dc96c: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : dc96f: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : dc973: eb ea jmp dc95f Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 16.67 ??:0 7.41 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 1.85 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007f150 <__GI_strcmp>: ??:0 3.70 : 7f150: 89 f1 mov %esi,%ecx 0.00 : 7f152: 89 f8 mov %edi,%eax 0.00 : 7f154: 48 83 e1 3f and $0x3f,%rcx 0.00 : 7f158: 48 83 e0 3f and $0x3f,%rax ??:0 5.56 : 7f15c: 83 f9 30 cmp $0x30,%ecx 0.00 : 7f15f: 77 3f ja 7f1a0 <__GI_strcmp+0x50> 0.00 : 7f161: 83 f8 30 cmp $0x30,%eax 0.00 : 7f164: 77 3a ja 7f1a0 <__GI_strcmp+0x50> ??:0 1.85 : 7f166: 66 0f 12 0f movlpd (%rdi),%xmm1 ??:0 16.67 : 7f16a: 66 0f 12 16 movlpd (%rsi),%xmm2 ??:0 3.70 : 7f16e: 66 0f 16 4f 08 movhpd 0x8(%rdi),%xmm1 1.85 : 7f173: 66 0f 16 56 08 movhpd 0x8(%rsi),%xmm2 0.00 : 7f178: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f17c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 1.85 : 7f180: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f184: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f188: 66 0f d7 d1 pmovmskb %xmm1,%edx ??:0 7.41 : 7f18c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f192: 0f 85 c8 13 00 00 jne 80560 <__GI_strcmp+0x1410> ??:0 3.70 : 7f198: 48 83 c6 10 add $0x10,%rsi 0.00 : 7f19c: 48 83 c7 10 add $0x10,%rdi 1.85 : 7f1a0: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 7f1a4: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 7f1a8: ba ff ff 00 00 mov $0xffff,%edx 0.00 : 7f1ad: 45 31 c0 xor %r8d,%r8d 0.00 : 7f1b0: 83 e1 0f and $0xf,%ecx 0.00 : 7f1b3: 83 e0 0f and $0xf,%eax 3.70 : 7f1b6: 39 c1 cmp %eax,%ecx 0.00 : 7f1b8: 74 26 je 7f1e0 <__GI_strcmp+0x90> 0.00 : 7f1ba: 77 07 ja 7f1c3 <__GI_strcmp+0x73> 0.00 : 7f1bc: 41 89 d0 mov %edx,%r8d 0.00 : 7f1bf: 91 xchg %eax,%ecx 0.00 : 7f1c0: 48 87 f7 xchg %rsi,%rdi 0.00 : 7f1c3: 4c 8d 48 0f lea 0xf(%rax),%r9 0.00 : 7f1c7: 49 29 c9 sub %rcx,%r9 0.00 : 7f1ca: 4c 8d 15 37 6f 0b 00 lea 0xb6f37(%rip),%r10 # 136108 0.00 : 7f1d1: 4f 63 0c 8a movslq (%r10,%r9,4),%r9 3.70 : 7f1d5: 4f 8d 14 0a lea (%r10,%r9,1),%r10 0.00 : 7f1d9: 41 ff e2 jmpq *%r10 0.00 : 7f1dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7f1e0: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7f1e4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f1e8: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 1.85 : 7f1ec: 66 0f 74 0f pcmpeqb (%rdi),%xmm1 0.00 : 7f1f0: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f1f4: 66 44 0f d7 c9 pmovmskb %xmm1,%r9d 0.00 : 7f1f9: d3 ea shr %cl,%edx 0.00 : 7f1fb: 41 d3 e9 shr %cl,%r9d 0.00 : 7f1fe: 44 29 ca sub %r9d,%edx 0.00 : 7f201: 0f 85 3e 13 00 00 jne 80545 <__GI_strcmp+0x13f5> 1.85 : 7f207: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 1.85 : 7f20e: 49 c7 c1 10 00 00 00 mov $0x10,%r9 0.00 : 7f215: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f219: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7f220: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f225: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 1.85 : 7f22a: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f22e: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f232: 66 0f f8 c8 psubb %xmm0,%xmm1 1.85 : 7f236: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f23a: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f240: 0f 85 fa 12 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f246: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f24a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f24f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f254: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f258: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f25c: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f260: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f264: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f26a: 0f 85 d0 12 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f270: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f274: eb aa jmp 7f220 <__GI_strcmp+0xd0> 0.00 : 7f276: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f27d: 00 00 00 0.00 : 7f280: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f284: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7f288: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7f28c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f290: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 7f295: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7f299: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7f29d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7f2a2: d3 ea shr %cl,%edx 0.00 : 7f2a4: 41 d3 e9 shr %cl,%r9d 0.00 : 7f2a7: 44 29 ca sub %r9d,%edx 0.00 : 7f2aa: 0f 85 95 12 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7f2b0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7f2b4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f2b8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7f2bf: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 7f2c5: 4c 8d 57 01 lea 0x1(%rdi),%r10 0.00 : 7f2c9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7f2d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f2d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7f2de: 00 00 0.00 : 7f2e0: 49 83 c2 10 add $0x10,%r10 0.00 : 7f2e4: 0f 8f 96 00 00 00 jg 7f380 <__GI_strcmp+0x230> 0.00 : 7f2ea: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f2ef: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f2f4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f2f8: 66 0f 73 db 01 psrldq $0x1,%xmm3 0.00 : 7f2fd: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 7f302: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f306: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f30a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f30e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f312: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f316: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f31c: 0f 85 1e 12 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f322: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f326: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f32a: 49 83 c2 10 add $0x10,%r10 0.00 : 7f32e: 7f 50 jg 7f380 <__GI_strcmp+0x230> 0.00 : 7f330: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f335: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f33a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f33e: 66 0f 73 db 01 psrldq $0x1,%xmm3 0.00 : 7f343: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 7f348: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f34c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f350: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f354: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f358: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f35c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f362: 0f 85 d8 11 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f368: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f36c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f370: e9 6b ff ff ff jmpq 7f2e0 <__GI_strcmp+0x190> 0.00 : 7f375: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f37c: 00 00 00 00 0.00 : 7f380: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7f384: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f388: f7 c2 fe ff 00 00 test $0xfffe,%edx 0.00 : 7f38e: 75 10 jne 7f3a0 <__GI_strcmp+0x250> 0.00 : 7f390: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f394: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f39b: e9 4a ff ff ff jmpq 7f2ea <__GI_strcmp+0x19a> 0.00 : 7f3a0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f3a5: 66 0f 73 d8 01 psrldq $0x1,%xmm0 0.00 : 7f3aa: 66 0f 73 db 01 psrldq $0x1,%xmm3 0.00 : 7f3af: e9 7c 11 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7f3b4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f3bb: 00 00 00 00 00 0.00 : 7f3c0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f3c4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7f3c8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7f3cc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f3d0: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 7f3d5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7f3d9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7f3dd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7f3e2: d3 ea shr %cl,%edx 0.00 : 7f3e4: 41 d3 e9 shr %cl,%r9d 0.00 : 7f3e7: 44 29 ca sub %r9d,%edx 0.00 : 7f3ea: 0f 85 55 11 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7f3f0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7f3f4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f3f8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7f3ff: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 7f405: 4c 8d 57 02 lea 0x2(%rdi),%r10 0.00 : 7f409: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7f410: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f417: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7f41e: 00 00 0.00 : 7f420: 49 83 c2 10 add $0x10,%r10 0.00 : 7f424: 0f 8f 96 00 00 00 jg 7f4c0 <__GI_strcmp+0x370> 0.00 : 7f42a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f42f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f434: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f438: 66 0f 73 db 02 psrldq $0x2,%xmm3 0.00 : 7f43d: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 7f442: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f446: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f44a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f44e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f452: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f456: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f45c: 0f 85 de 10 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f462: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f466: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f46a: 49 83 c2 10 add $0x10,%r10 0.00 : 7f46e: 7f 50 jg 7f4c0 <__GI_strcmp+0x370> 0.00 : 7f470: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f475: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f47a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f47e: 66 0f 73 db 02 psrldq $0x2,%xmm3 0.00 : 7f483: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 7f488: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f48c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f490: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f494: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f498: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f49c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f4a2: 0f 85 98 10 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f4a8: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f4ac: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f4b0: e9 6b ff ff ff jmpq 7f420 <__GI_strcmp+0x2d0> 0.00 : 7f4b5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f4bc: 00 00 00 00 0.00 : 7f4c0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7f4c4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f4c8: f7 c2 fc ff 00 00 test $0xfffc,%edx 0.00 : 7f4ce: 75 10 jne 7f4e0 <__GI_strcmp+0x390> 0.00 : 7f4d0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f4d4: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f4db: e9 4a ff ff ff jmpq 7f42a <__GI_strcmp+0x2da> 0.00 : 7f4e0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f4e5: 66 0f 73 d8 02 psrldq $0x2,%xmm0 0.00 : 7f4ea: 66 0f 73 db 02 psrldq $0x2,%xmm3 0.00 : 7f4ef: e9 3c 10 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7f4f4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f4fb: 00 00 00 00 00 0.00 : 7f500: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f504: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7f508: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7f50c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f510: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 7f515: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7f519: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7f51d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7f522: d3 ea shr %cl,%edx 0.00 : 7f524: 41 d3 e9 shr %cl,%r9d 0.00 : 7f527: 44 29 ca sub %r9d,%edx 0.00 : 7f52a: 0f 85 15 10 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7f530: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7f534: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f538: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7f53f: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 7f545: 4c 8d 57 03 lea 0x3(%rdi),%r10 0.00 : 7f549: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7f550: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f557: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7f55e: 00 00 0.00 : 7f560: 49 83 c2 10 add $0x10,%r10 0.00 : 7f564: 0f 8f 96 00 00 00 jg 7f600 <__GI_strcmp+0x4b0> 0.00 : 7f56a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f56f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f574: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f578: 66 0f 73 db 03 psrldq $0x3,%xmm3 0.00 : 7f57d: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 7f582: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f586: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f58a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f58e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f592: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f596: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f59c: 0f 85 9e 0f 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f5a2: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f5a6: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f5aa: 49 83 c2 10 add $0x10,%r10 0.00 : 7f5ae: 7f 50 jg 7f600 <__GI_strcmp+0x4b0> 0.00 : 7f5b0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f5b5: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f5ba: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f5be: 66 0f 73 db 03 psrldq $0x3,%xmm3 0.00 : 7f5c3: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 7f5c8: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f5cc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f5d0: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f5d4: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f5d8: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f5dc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f5e2: 0f 85 58 0f 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f5e8: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f5ec: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f5f0: e9 6b ff ff ff jmpq 7f560 <__GI_strcmp+0x410> 0.00 : 7f5f5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f5fc: 00 00 00 00 0.00 : 7f600: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7f604: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f608: f7 c2 f8 ff 00 00 test $0xfff8,%edx 0.00 : 7f60e: 75 10 jne 7f620 <__GI_strcmp+0x4d0> 0.00 : 7f610: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f614: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f61b: e9 4a ff ff ff jmpq 7f56a <__GI_strcmp+0x41a> 0.00 : 7f620: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f625: 66 0f 73 d8 03 psrldq $0x3,%xmm0 0.00 : 7f62a: 66 0f 73 db 03 psrldq $0x3,%xmm3 0.00 : 7f62f: e9 fc 0e 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7f634: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f63b: 00 00 00 00 00 0.00 : 7f640: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f644: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7f648: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7f64c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f650: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 7f655: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7f659: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7f65d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7f662: d3 ea shr %cl,%edx 0.00 : 7f664: 41 d3 e9 shr %cl,%r9d 0.00 : 7f667: 44 29 ca sub %r9d,%edx 0.00 : 7f66a: 0f 85 d5 0e 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7f670: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7f674: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f678: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7f67f: 41 b9 04 00 00 00 mov $0x4,%r9d 0.00 : 7f685: 4c 8d 57 04 lea 0x4(%rdi),%r10 0.00 : 7f689: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7f690: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f697: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7f69e: 00 00 0.00 : 7f6a0: 49 83 c2 10 add $0x10,%r10 0.00 : 7f6a4: 0f 8f 96 00 00 00 jg 7f740 <__GI_strcmp+0x5f0> 0.00 : 7f6aa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f6af: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f6b4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f6b8: 66 0f 73 db 04 psrldq $0x4,%xmm3 0.00 : 7f6bd: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 7f6c2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f6c6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f6ca: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f6ce: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f6d2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f6d6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f6dc: 0f 85 5e 0e 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f6e2: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f6e6: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f6ea: 49 83 c2 10 add $0x10,%r10 0.00 : 7f6ee: 7f 50 jg 7f740 <__GI_strcmp+0x5f0> 0.00 : 7f6f0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f6f5: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f6fa: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f6fe: 66 0f 73 db 04 psrldq $0x4,%xmm3 0.00 : 7f703: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 7f708: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f70c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f710: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f714: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f718: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f71c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f722: 0f 85 18 0e 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f728: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f72c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f730: e9 6b ff ff ff jmpq 7f6a0 <__GI_strcmp+0x550> 0.00 : 7f735: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f73c: 00 00 00 00 0.00 : 7f740: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7f744: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f748: f7 c2 f0 ff 00 00 test $0xfff0,%edx 0.00 : 7f74e: 75 10 jne 7f760 <__GI_strcmp+0x610> 0.00 : 7f750: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f754: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f75b: e9 4a ff ff ff jmpq 7f6aa <__GI_strcmp+0x55a> 0.00 : 7f760: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f765: 66 0f 73 d8 04 psrldq $0x4,%xmm0 0.00 : 7f76a: 66 0f 73 db 04 psrldq $0x4,%xmm3 0.00 : 7f76f: e9 bc 0d 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7f774: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f77b: 00 00 00 00 00 0.00 : 7f780: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f784: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7f788: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7f78c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f790: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 7f795: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7f799: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7f79d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7f7a2: d3 ea shr %cl,%edx 0.00 : 7f7a4: 41 d3 e9 shr %cl,%r9d 0.00 : 7f7a7: 44 29 ca sub %r9d,%edx 0.00 : 7f7aa: 0f 85 95 0d 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7f7b0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7f7b4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f7b8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7f7bf: 41 b9 05 00 00 00 mov $0x5,%r9d 0.00 : 7f7c5: 4c 8d 57 05 lea 0x5(%rdi),%r10 0.00 : 7f7c9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7f7d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f7d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7f7de: 00 00 0.00 : 7f7e0: 49 83 c2 10 add $0x10,%r10 0.00 : 7f7e4: 0f 8f 96 00 00 00 jg 7f880 <__GI_strcmp+0x730> 0.00 : 7f7ea: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f7ef: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f7f4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f7f8: 66 0f 73 db 05 psrldq $0x5,%xmm3 0.00 : 7f7fd: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 7f802: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f806: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f80a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f80e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f812: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f816: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f81c: 0f 85 1e 0d 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f822: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f826: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f82a: 49 83 c2 10 add $0x10,%r10 0.00 : 7f82e: 7f 50 jg 7f880 <__GI_strcmp+0x730> 0.00 : 7f830: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f835: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f83a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f83e: 66 0f 73 db 05 psrldq $0x5,%xmm3 0.00 : 7f843: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 7f848: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f84c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f850: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f854: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f858: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f85c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f862: 0f 85 d8 0c 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f868: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f86c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f870: e9 6b ff ff ff jmpq 7f7e0 <__GI_strcmp+0x690> 0.00 : 7f875: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f87c: 00 00 00 00 0.00 : 7f880: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7f884: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f888: f7 c2 e0 ff 00 00 test $0xffe0,%edx 0.00 : 7f88e: 75 10 jne 7f8a0 <__GI_strcmp+0x750> 0.00 : 7f890: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f894: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f89b: e9 4a ff ff ff jmpq 7f7ea <__GI_strcmp+0x69a> 0.00 : 7f8a0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f8a5: 66 0f 73 d8 05 psrldq $0x5,%xmm0 0.00 : 7f8aa: 66 0f 73 db 05 psrldq $0x5,%xmm3 0.00 : 7f8af: e9 7c 0c 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7f8b4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f8bb: 00 00 00 00 00 0.00 : 7f8c0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f8c4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7f8c8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7f8cc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f8d0: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 7f8d5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7f8d9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7f8dd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7f8e2: d3 ea shr %cl,%edx 0.00 : 7f8e4: 41 d3 e9 shr %cl,%r9d 0.00 : 7f8e7: 44 29 ca sub %r9d,%edx 0.00 : 7f8ea: 0f 85 55 0c 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7f8f0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7f8f4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f8f8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7f8ff: 41 b9 06 00 00 00 mov $0x6,%r9d 0.00 : 7f905: 4c 8d 57 06 lea 0x6(%rdi),%r10 0.00 : 7f909: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7f910: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f917: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7f91e: 00 00 0.00 : 7f920: 49 83 c2 10 add $0x10,%r10 0.00 : 7f924: 0f 8f 96 00 00 00 jg 7f9c0 <__GI_strcmp+0x870> 0.00 : 7f92a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f92f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f934: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f938: 66 0f 73 db 06 psrldq $0x6,%xmm3 0.00 : 7f93d: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 7f942: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f946: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f94a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f94e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f952: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f956: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f95c: 0f 85 de 0b 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f962: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f966: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f96a: 49 83 c2 10 add $0x10,%r10 0.00 : 7f96e: 7f 50 jg 7f9c0 <__GI_strcmp+0x870> 0.00 : 7f970: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f975: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7f97a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7f97e: 66 0f 73 db 06 psrldq $0x6,%xmm3 0.00 : 7f983: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 7f988: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7f98c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f990: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7f994: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7f998: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7f99c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7f9a2: 0f 85 98 0b 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7f9a8: 48 83 c1 10 add $0x10,%rcx 0.00 : 7f9ac: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7f9b0: e9 6b ff ff ff jmpq 7f920 <__GI_strcmp+0x7d0> 0.00 : 7f9b5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f9bc: 00 00 00 00 0.00 : 7f9c0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7f9c4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f9c8: f7 c2 c0 ff 00 00 test $0xffc0,%edx 0.00 : 7f9ce: 75 10 jne 7f9e0 <__GI_strcmp+0x890> 0.00 : 7f9d0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7f9d4: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7f9db: e9 4a ff ff ff jmpq 7f92a <__GI_strcmp+0x7da> 0.00 : 7f9e0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7f9e5: 66 0f 73 d8 06 psrldq $0x6,%xmm0 0.00 : 7f9ea: 66 0f 73 db 06 psrldq $0x6,%xmm3 0.00 : 7f9ef: e9 3c 0b 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7f9f4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7f9fb: 00 00 00 00 00 0.00 : 7fa00: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fa04: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7fa08: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7fa0c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fa10: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 7fa15: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7fa19: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7fa1d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7fa22: d3 ea shr %cl,%edx 0.00 : 7fa24: 41 d3 e9 shr %cl,%r9d 0.00 : 7fa27: 44 29 ca sub %r9d,%edx 0.00 : 7fa2a: 0f 85 15 0b 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7fa30: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7fa34: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fa38: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7fa3f: 41 b9 07 00 00 00 mov $0x7,%r9d 0.00 : 7fa45: 4c 8d 57 07 lea 0x7(%rdi),%r10 0.00 : 7fa49: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7fa50: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fa57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7fa5e: 00 00 0.00 : 7fa60: 49 83 c2 10 add $0x10,%r10 0.00 : 7fa64: 0f 8f 96 00 00 00 jg 7fb00 <__GI_strcmp+0x9b0> 0.00 : 7fa6a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fa6f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7fa74: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fa78: 66 0f 73 db 07 psrldq $0x7,%xmm3 0.00 : 7fa7d: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 7fa82: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7fa86: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fa8a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fa8e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fa92: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fa96: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fa9c: 0f 85 9e 0a 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7faa2: 48 83 c1 10 add $0x10,%rcx 0.00 : 7faa6: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7faaa: 49 83 c2 10 add $0x10,%r10 0.00 : 7faae: 7f 50 jg 7fb00 <__GI_strcmp+0x9b0> 0.00 : 7fab0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fab5: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7faba: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fabe: 66 0f 73 db 07 psrldq $0x7,%xmm3 0.00 : 7fac3: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 7fac8: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7facc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fad0: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fad4: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fad8: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fadc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fae2: 0f 85 58 0a 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7fae8: 48 83 c1 10 add $0x10,%rcx 0.00 : 7faec: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7faf0: e9 6b ff ff ff jmpq 7fa60 <__GI_strcmp+0x910> 0.00 : 7faf5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fafc: 00 00 00 00 0.00 : 7fb00: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7fb04: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7fb08: f7 c2 80 ff 00 00 test $0xff80,%edx 0.00 : 7fb0e: 75 10 jne 7fb20 <__GI_strcmp+0x9d0> 0.00 : 7fb10: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fb14: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fb1b: e9 4a ff ff ff jmpq 7fa6a <__GI_strcmp+0x91a> 0.00 : 7fb20: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fb25: 66 0f 73 d8 07 psrldq $0x7,%xmm0 0.00 : 7fb2a: 66 0f 73 db 07 psrldq $0x7,%xmm3 0.00 : 7fb2f: e9 fc 09 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7fb34: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fb3b: 00 00 00 00 00 0.00 : 7fb40: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fb44: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7fb48: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7fb4c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fb50: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 7fb55: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7fb59: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7fb5d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7fb62: d3 ea shr %cl,%edx 0.00 : 7fb64: 41 d3 e9 shr %cl,%r9d 0.00 : 7fb67: 44 29 ca sub %r9d,%edx 0.00 : 7fb6a: 0f 85 d5 09 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7fb70: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7fb74: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fb78: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7fb7f: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 7fb85: 4c 8d 57 08 lea 0x8(%rdi),%r10 0.00 : 7fb89: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7fb90: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fb97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7fb9e: 00 00 0.00 : 7fba0: 49 83 c2 10 add $0x10,%r10 0.00 : 7fba4: 0f 8f 96 00 00 00 jg 7fc40 <__GI_strcmp+0xaf0> 0.00 : 7fbaa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fbaf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7fbb4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fbb8: 66 0f 73 db 08 psrldq $0x8,%xmm3 0.00 : 7fbbd: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 7fbc2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7fbc6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fbca: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fbce: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fbd2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fbd6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fbdc: 0f 85 5e 09 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7fbe2: 48 83 c1 10 add $0x10,%rcx 0.00 : 7fbe6: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7fbea: 49 83 c2 10 add $0x10,%r10 0.00 : 7fbee: 7f 50 jg 7fc40 <__GI_strcmp+0xaf0> 0.00 : 7fbf0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fbf5: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7fbfa: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fbfe: 66 0f 73 db 08 psrldq $0x8,%xmm3 0.00 : 7fc03: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 7fc08: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7fc0c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fc10: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fc14: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fc18: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fc1c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fc22: 0f 85 18 09 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7fc28: 48 83 c1 10 add $0x10,%rcx 0.00 : 7fc2c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7fc30: e9 6b ff ff ff jmpq 7fba0 <__GI_strcmp+0xa50> 0.00 : 7fc35: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fc3c: 00 00 00 00 0.00 : 7fc40: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7fc44: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7fc48: f7 c2 00 ff 00 00 test $0xff00,%edx 0.00 : 7fc4e: 75 10 jne 7fc60 <__GI_strcmp+0xb10> 0.00 : 7fc50: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fc54: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fc5b: e9 4a ff ff ff jmpq 7fbaa <__GI_strcmp+0xa5a> 0.00 : 7fc60: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fc65: 66 0f 73 d8 08 psrldq $0x8,%xmm0 0.00 : 7fc6a: 66 0f 73 db 08 psrldq $0x8,%xmm3 0.00 : 7fc6f: e9 bc 08 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7fc74: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fc7b: 00 00 00 00 00 0.00 : 7fc80: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fc84: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7fc88: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7fc8c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fc90: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 7fc95: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7fc99: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7fc9d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7fca2: d3 ea shr %cl,%edx 0.00 : 7fca4: 41 d3 e9 shr %cl,%r9d 0.00 : 7fca7: 44 29 ca sub %r9d,%edx 0.00 : 7fcaa: 0f 85 95 08 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7fcb0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7fcb4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fcb8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7fcbf: 41 b9 09 00 00 00 mov $0x9,%r9d 0.00 : 7fcc5: 4c 8d 57 09 lea 0x9(%rdi),%r10 0.00 : 7fcc9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7fcd0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fcd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7fcde: 00 00 0.00 : 7fce0: 49 83 c2 10 add $0x10,%r10 0.00 : 7fce4: 0f 8f 96 00 00 00 jg 7fd80 <__GI_strcmp+0xc30> 0.00 : 7fcea: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fcef: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7fcf4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fcf8: 66 0f 73 db 09 psrldq $0x9,%xmm3 0.00 : 7fcfd: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 7fd02: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7fd06: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fd0a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fd0e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fd12: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fd16: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fd1c: 0f 85 1e 08 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7fd22: 48 83 c1 10 add $0x10,%rcx 0.00 : 7fd26: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7fd2a: 49 83 c2 10 add $0x10,%r10 0.00 : 7fd2e: 7f 50 jg 7fd80 <__GI_strcmp+0xc30> 0.00 : 7fd30: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fd35: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7fd3a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fd3e: 66 0f 73 db 09 psrldq $0x9,%xmm3 0.00 : 7fd43: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 7fd48: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7fd4c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fd50: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fd54: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fd58: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fd5c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fd62: 0f 85 d8 07 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7fd68: 48 83 c1 10 add $0x10,%rcx 0.00 : 7fd6c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7fd70: e9 6b ff ff ff jmpq 7fce0 <__GI_strcmp+0xb90> 0.00 : 7fd75: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fd7c: 00 00 00 00 0.00 : 7fd80: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7fd84: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7fd88: f7 c2 00 fe 00 00 test $0xfe00,%edx 0.00 : 7fd8e: 75 10 jne 7fda0 <__GI_strcmp+0xc50> 0.00 : 7fd90: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fd94: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fd9b: e9 4a ff ff ff jmpq 7fcea <__GI_strcmp+0xb9a> 0.00 : 7fda0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fda5: 66 0f 73 d8 09 psrldq $0x9,%xmm0 0.00 : 7fdaa: 66 0f 73 db 09 psrldq $0x9,%xmm3 0.00 : 7fdaf: e9 7c 07 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7fdb4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fdbb: 00 00 00 00 00 0.00 : 7fdc0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fdc4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7fdc8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7fdcc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fdd0: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 7fdd5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7fdd9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7fddd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7fde2: d3 ea shr %cl,%edx 0.00 : 7fde4: 41 d3 e9 shr %cl,%r9d 0.00 : 7fde7: 44 29 ca sub %r9d,%edx 0.00 : 7fdea: 0f 85 55 07 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7fdf0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7fdf4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fdf8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7fdff: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 7fe05: 4c 8d 57 0a lea 0xa(%rdi),%r10 0.00 : 7fe09: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7fe10: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fe17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7fe1e: 00 00 0.00 : 7fe20: 49 83 c2 10 add $0x10,%r10 0.00 : 7fe24: 0f 8f 96 00 00 00 jg 7fec0 <__GI_strcmp+0xd70> 0.00 : 7fe2a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fe2f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7fe34: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fe38: 66 0f 73 db 0a psrldq $0xa,%xmm3 0.00 : 7fe3d: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 7fe42: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7fe46: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fe4a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fe4e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fe52: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fe56: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fe5c: 0f 85 de 06 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7fe62: 48 83 c1 10 add $0x10,%rcx 0.00 : 7fe66: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7fe6a: 49 83 c2 10 add $0x10,%r10 0.00 : 7fe6e: 7f 50 jg 7fec0 <__GI_strcmp+0xd70> 0.00 : 7fe70: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fe75: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7fe7a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7fe7e: 66 0f 73 db 0a psrldq $0xa,%xmm3 0.00 : 7fe83: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 7fe88: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7fe8c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7fe90: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7fe94: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7fe98: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7fe9c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7fea2: 0f 85 98 06 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7fea8: 48 83 c1 10 add $0x10,%rcx 0.00 : 7feac: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7feb0: e9 6b ff ff ff jmpq 7fe20 <__GI_strcmp+0xcd0> 0.00 : 7feb5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7febc: 00 00 00 00 0.00 : 7fec0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 7fec4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7fec8: f7 c2 00 fc 00 00 test $0xfc00,%edx 0.00 : 7fece: 75 10 jne 7fee0 <__GI_strcmp+0xd90> 0.00 : 7fed0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7fed4: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7fedb: e9 4a ff ff ff jmpq 7fe2a <__GI_strcmp+0xcda> 0.00 : 7fee0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7fee5: 66 0f 73 d8 0a psrldq $0xa,%xmm0 0.00 : 7feea: 66 0f 73 db 0a psrldq $0xa,%xmm3 0.00 : 7feef: e9 3c 06 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 7fef4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fefb: 00 00 00 00 00 0.00 : 7ff00: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7ff04: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 7ff08: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 7ff0c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7ff10: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 7ff15: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 7ff19: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 7ff1d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 7ff22: d3 ea shr %cl,%edx 0.00 : 7ff24: 41 d3 e9 shr %cl,%r9d 0.00 : 7ff27: 44 29 ca sub %r9d,%edx 0.00 : 7ff2a: 0f 85 15 06 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 7ff30: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 7ff34: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 7ff38: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 7ff3f: 41 b9 0b 00 00 00 mov $0xb,%r9d 0.00 : 7ff45: 4c 8d 57 0b lea 0xb(%rdi),%r10 0.00 : 7ff49: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 7ff50: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 7ff57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7ff5e: 00 00 0.00 : 7ff60: 49 83 c2 10 add $0x10,%r10 0.00 : 7ff64: 0f 8f 96 00 00 00 jg 80000 <__GI_strcmp+0xeb0> 0.00 : 7ff6a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7ff6f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7ff74: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7ff78: 66 0f 73 db 0b psrldq $0xb,%xmm3 0.00 : 7ff7d: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 7ff82: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7ff86: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7ff8a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7ff8e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7ff92: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7ff96: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7ff9c: 0f 85 9e 05 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7ffa2: 48 83 c1 10 add $0x10,%rcx 0.00 : 7ffa6: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7ffaa: 49 83 c2 10 add $0x10,%r10 0.00 : 7ffae: 7f 50 jg 80000 <__GI_strcmp+0xeb0> 0.00 : 7ffb0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 7ffb5: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 7ffba: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 7ffbe: 66 0f 73 db 0b psrldq $0xb,%xmm3 0.00 : 7ffc3: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 7ffc8: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 7ffcc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7ffd0: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 7ffd4: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 7ffd8: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 7ffdc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 7ffe2: 0f 85 58 05 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 7ffe8: 48 83 c1 10 add $0x10,%rcx 0.00 : 7ffec: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 7fff0: e9 6b ff ff ff jmpq 7ff60 <__GI_strcmp+0xe10> 0.00 : 7fff5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7fffc: 00 00 00 00 0.00 : 80000: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 80004: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 80008: f7 c2 00 f8 00 00 test $0xf800,%edx 0.00 : 8000e: 75 10 jne 80020 <__GI_strcmp+0xed0> 0.00 : 80010: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80014: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 8001b: e9 4a ff ff ff jmpq 7ff6a <__GI_strcmp+0xe1a> 0.00 : 80020: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80025: 66 0f 73 d8 0b psrldq $0xb,%xmm0 0.00 : 8002a: 66 0f 73 db 0b psrldq $0xb,%xmm3 0.00 : 8002f: e9 fc 04 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 80034: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8003b: 00 00 00 00 00 0.00 : 80040: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80044: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 80048: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 8004c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80050: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 80055: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 80059: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8005d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 80062: d3 ea shr %cl,%edx 0.00 : 80064: 41 d3 e9 shr %cl,%r9d 0.00 : 80067: 44 29 ca sub %r9d,%edx 0.00 : 8006a: 0f 85 d5 04 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 80070: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 80074: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80078: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 8007f: 41 b9 0c 00 00 00 mov $0xc,%r9d 0.00 : 80085: 4c 8d 57 0c lea 0xc(%rdi),%r10 0.00 : 80089: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 80090: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 80097: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8009e: 00 00 0.00 : 800a0: 49 83 c2 10 add $0x10,%r10 0.00 : 800a4: 0f 8f 96 00 00 00 jg 80140 <__GI_strcmp+0xff0> 0.00 : 800aa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 800af: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 800b4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 800b8: 66 0f 73 db 0c psrldq $0xc,%xmm3 0.00 : 800bd: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 800c2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 800c6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 800ca: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 800ce: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 800d2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 800d6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 800dc: 0f 85 5e 04 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 800e2: 48 83 c1 10 add $0x10,%rcx 0.00 : 800e6: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 800ea: 49 83 c2 10 add $0x10,%r10 0.00 : 800ee: 7f 50 jg 80140 <__GI_strcmp+0xff0> 0.00 : 800f0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 800f5: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 800fa: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 800fe: 66 0f 73 db 0c psrldq $0xc,%xmm3 0.00 : 80103: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 80108: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 8010c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80110: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 80114: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80118: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 8011c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 80122: 0f 85 18 04 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 80128: 48 83 c1 10 add $0x10,%rcx 0.00 : 8012c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 80130: e9 6b ff ff ff jmpq 800a0 <__GI_strcmp+0xf50> 0.00 : 80135: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8013c: 00 00 00 00 0.00 : 80140: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 80144: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 80148: f7 c2 00 f0 00 00 test $0xf000,%edx 0.00 : 8014e: 75 10 jne 80160 <__GI_strcmp+0x1010> 0.00 : 80150: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80154: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 8015b: e9 4a ff ff ff jmpq 800aa <__GI_strcmp+0xf5a> 0.00 : 80160: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80165: 66 0f 73 d8 0c psrldq $0xc,%xmm0 0.00 : 8016a: 66 0f 73 db 0c psrldq $0xc,%xmm3 0.00 : 8016f: e9 bc 03 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 80174: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8017b: 00 00 00 00 00 3.70 : 80180: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80184: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 80188: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 8018c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80190: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 80195: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 80199: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8019d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 801a2: d3 ea shr %cl,%edx 0.00 : 801a4: 41 d3 e9 shr %cl,%r9d 0.00 : 801a7: 44 29 ca sub %r9d,%edx 0.00 : 801aa: 0f 85 95 03 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 801b0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 801b4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 801b8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 801bf: 41 b9 0d 00 00 00 mov $0xd,%r9d 0.00 : 801c5: 4c 8d 57 0d lea 0xd(%rdi),%r10 0.00 : 801c9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 801d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 801d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 801de: 00 00 0.00 : 801e0: 49 83 c2 10 add $0x10,%r10 0.00 : 801e4: 0f 8f 96 00 00 00 jg 80280 <__GI_strcmp+0x1130> 0.00 : 801ea: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 801ef: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 801f4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 801f8: 66 0f 73 db 0d psrldq $0xd,%xmm3 0.00 : 801fd: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 80202: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 80206: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8020a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8020e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80212: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 80216: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8021c: 0f 85 1e 03 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 80222: 48 83 c1 10 add $0x10,%rcx 0.00 : 80226: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 8022a: 49 83 c2 10 add $0x10,%r10 0.00 : 8022e: 7f 50 jg 80280 <__GI_strcmp+0x1130> 0.00 : 80230: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80235: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 8023a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 8023e: 66 0f 73 db 0d psrldq $0xd,%xmm3 0.00 : 80243: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 80248: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 8024c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80250: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 80254: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80258: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 8025c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 80262: 0f 85 d8 02 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 80268: 48 83 c1 10 add $0x10,%rcx 0.00 : 8026c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 80270: e9 6b ff ff ff jmpq 801e0 <__GI_strcmp+0x1090> 0.00 : 80275: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8027c: 00 00 00 00 0.00 : 80280: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 80284: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 80288: f7 c2 00 e0 00 00 test $0xe000,%edx 0.00 : 8028e: 75 10 jne 802a0 <__GI_strcmp+0x1150> 0.00 : 80290: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80294: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 8029b: e9 4a ff ff ff jmpq 801ea <__GI_strcmp+0x109a> 0.00 : 802a0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 802a5: 66 0f 73 d8 0d psrldq $0xd,%xmm0 0.00 : 802aa: 66 0f 73 db 0d psrldq $0xd,%xmm3 0.00 : 802af: e9 7c 02 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 802b4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 802bb: 00 00 00 00 00 0.00 : 802c0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 802c4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 802c8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 802cc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 802d0: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 802d5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 802d9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 802dd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 802e2: d3 ea shr %cl,%edx 0.00 : 802e4: 41 d3 e9 shr %cl,%r9d 0.00 : 802e7: 44 29 ca sub %r9d,%edx 0.00 : 802ea: 0f 85 55 02 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 802f0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 802f4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 802f8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 802ff: 41 b9 0e 00 00 00 mov $0xe,%r9d 0.00 : 80305: 4c 8d 57 0e lea 0xe(%rdi),%r10 0.00 : 80309: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 80310: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 80317: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8031e: 00 00 0.00 : 80320: 49 83 c2 10 add $0x10,%r10 0.00 : 80324: 0f 8f 96 00 00 00 jg 803c0 <__GI_strcmp+0x1270> 0.00 : 8032a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8032f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 80334: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 80338: 66 0f 73 db 0e psrldq $0xe,%xmm3 0.00 : 8033d: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 80342: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 80346: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8034a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8034e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80352: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 80356: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8035c: 0f 85 de 01 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 80362: 48 83 c1 10 add $0x10,%rcx 0.00 : 80366: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 8036a: 49 83 c2 10 add $0x10,%r10 0.00 : 8036e: 7f 50 jg 803c0 <__GI_strcmp+0x1270> 0.00 : 80370: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80375: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 8037a: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 8037e: 66 0f 73 db 0e psrldq $0xe,%xmm3 0.00 : 80383: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 80388: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 8038c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80390: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 80394: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80398: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 8039c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 803a2: 0f 85 98 01 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 803a8: 48 83 c1 10 add $0x10,%rcx 0.00 : 803ac: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 803b0: e9 6b ff ff ff jmpq 80320 <__GI_strcmp+0x11d0> 0.00 : 803b5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 803bc: 00 00 00 00 0.00 : 803c0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 803c4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 803c8: f7 c2 00 c0 00 00 test $0xc000,%edx 0.00 : 803ce: 75 10 jne 803e0 <__GI_strcmp+0x1290> 0.00 : 803d0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 803d4: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 803db: e9 4a ff ff ff jmpq 8032a <__GI_strcmp+0x11da> 0.00 : 803e0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 803e5: 66 0f 73 d8 0e psrldq $0xe,%xmm0 0.00 : 803ea: 66 0f 73 db 0e psrldq $0xe,%xmm3 0.00 : 803ef: e9 3c 01 00 00 jmpq 80530 <__GI_strcmp+0x13e0> 0.00 : 803f4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 803fb: 00 00 00 00 00 0.00 : 80400: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80404: 66 0f 6f 17 movdqa (%rdi),%xmm2 1.85 : 80408: 66 0f 6f 0e movdqa (%rsi),%xmm1 3.70 : 8040c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80410: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 80415: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 80419: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8041d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 80422: d3 ea shr %cl,%edx 0.00 : 80424: 41 d3 e9 shr %cl,%r9d 0.00 : 80427: 44 29 ca sub %r9d,%edx 0.00 : 8042a: 0f 85 15 01 00 00 jne 80545 <__GI_strcmp+0x13f5> 0.00 : 80430: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 80434: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80438: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 8043f: 41 b9 0f 00 00 00 mov $0xf,%r9d 0.00 : 80445: 4c 8d 57 0f lea 0xf(%rdi),%r10 0.00 : 80449: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 80450: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 80457: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8045e: 00 00 0.00 : 80460: 49 83 c2 10 add $0x10,%r10 0.00 : 80464: 0f 8f 96 00 00 00 jg 80500 <__GI_strcmp+0x13b0> 0.00 : 8046a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8046f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 80474: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 80478: 66 0f 73 db 0f psrldq $0xf,%xmm3 0.00 : 8047d: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 80482: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 80486: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8048a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8048e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80492: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 80496: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8049c: 0f 85 9e 00 00 00 jne 80540 <__GI_strcmp+0x13f0> 0.00 : 804a2: 48 83 c1 10 add $0x10,%rcx 0.00 : 804a6: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 804aa: 49 83 c2 10 add $0x10,%r10 0.00 : 804ae: 7f 50 jg 80500 <__GI_strcmp+0x13b0> 0.00 : 804b0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 804b5: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 804ba: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 804be: 66 0f 73 db 0f psrldq $0xf,%xmm3 0.00 : 804c3: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 804c8: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 804cc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 804d0: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 804d4: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 804d8: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 804dc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 804e2: 75 5c jne 80540 <__GI_strcmp+0x13f0> 0.00 : 804e4: 48 83 c1 10 add $0x10,%rcx 0.00 : 804e8: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 804ec: e9 6f ff ff ff jmpq 80460 <__GI_strcmp+0x1310> 0.00 : 804f1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 804f8: 0f 1f 84 00 00 00 00 0.00 : 804ff: 00 0.00 : 80500: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 80504: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 80508: f7 c2 00 80 00 00 test $0x8000,%edx 0.00 : 8050e: 75 10 jne 80520 <__GI_strcmp+0x13d0> 0.00 : 80510: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80514: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 8051b: e9 4a ff ff ff jmpq 8046a <__GI_strcmp+0x131a> 0.00 : 80520: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80525: 66 0f 73 db 0f psrldq $0xf,%xmm3 0.00 : 8052a: 66 0f 73 d8 0f psrldq $0xf,%xmm0 0.00 : 8052f: 90 nop 0.00 : 80530: 66 0f 74 cb pcmpeqb %xmm3,%xmm1 0.00 : 80534: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80538: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 8053c: f7 d2 not %edx 0.00 : 8053e: 66 90 xchg %ax,%ax 1.85 : 80540: 49 8d 44 09 f0 lea -0x10(%r9,%rcx,1),%rax 1.85 : 80545: 48 8d 3c 07 lea (%rdi,%rax,1),%rdi 0.00 : 80549: 48 8d 34 0e lea (%rsi,%rcx,1),%rsi ??:0 5.56 : 8054d: 45 85 c0 test %r8d,%r8d 0.00 : 80550: 74 0e je 80560 <__GI_strcmp+0x1410> 0.00 : 80552: 48 87 f7 xchg %rsi,%rdi 0.00 : 80555: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8055c: 00 00 00 00 ??:0 1.85 : 80560: 48 0f bc d2 bsf %rdx,%rdx 3.70 : 80564: 0f b6 0c 16 movzbl (%rsi,%rdx,1),%ecx ??:0 5.56 : 80568: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax ??:0 1.85 : 8056c: 29 c8 sub %ecx,%eax 3.70 : 8056e: c3 retq 0.00 : 8056f: 31 c0 xor %eax,%eax 0.00 : 80571: c3 retq 0.00 : 80572: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 80579: 1f 84 00 00 00 00 00 0.00 : 80580: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 80583: 0f b6 07 movzbl (%rdi),%eax 0.00 : 80586: 29 c8 sub %ecx,%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 48.98 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2798 16.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2799 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2799 8.16 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 6.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2798 4.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 2.04 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674f30 : : * : * This is just a shorthand for a common combination. : */ : void : UnlockReleaseBuffer(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 2.04 : 674f30: 55 push %rbp : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2798 48.98 : 674f31: 31 f6 xor %esi,%esi : * : * This is just a shorthand for a common combination. : */ : void : UnlockReleaseBuffer(Buffer buffer) : { 0.00 : 674f33: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 8.16 : 674f36: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 4.08 : 674f37: 89 fb mov %edi,%ebx 0.00 : 674f39: 48 83 ec 08 sub $0x8,%rsp : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2798 6.12 : 674f3d: e8 ce f7 ff ff callq 674710 : ReleaseBuffer(buffer); : } 0.00 : 674f42: 48 83 c4 08 add $0x8,%rsp : */ : void : UnlockReleaseBuffer(Buffer buffer) : { : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : ReleaseBuffer(buffer); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2799 16.33 : 674f46: 89 df mov %ebx,%edi : } 0.00 : 674f48: 5b pop %rbx 0.00 : 674f49: c9 leaveq : */ : void : UnlockReleaseBuffer(Buffer buffer) : { : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : ReleaseBuffer(buffer); 14.29 : 674f4a: e9 11 ff ff ff jmpq 674e60 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 34.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:628 21.05 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:627 18.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:627 13.16 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:626 10.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:627 2.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:626 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699410 : : * return pages in the format that POSTGRES expects. : */ : void : smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:626 13.16 : 699410: 55 push %rbp : (*(smgrsw[reln->smgr_which].smgr_read)) (reln, forknum, blocknum, buffer); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:627 10.53 : 699411: 48 63 47 24 movslq 0x24(%rdi),%rax : * return pages in the format that POSTGRES expects. : */ : void : smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:626 2.63 : 699415: 48 89 e5 mov %rsp,%rbp : (*(smgrsw[reln->smgr_which].smgr_read)) (reln, forknum, blocknum, buffer); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:627 18.42 : 699418: 48 c1 e0 07 shl $0x7,%rax 0.00 : 69941c: 4c 8b 98 a0 e4 8a 00 mov 0x8ae4a0(%rax),%r11 : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:628 34.21 : 699423: c9 leaveq : */ : void : smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { : (*(smgrsw[reln->smgr_which].smgr_read)) (reln, forknum, blocknum, buffer); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:627 21.05 : 699424: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 43.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:64 29.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:67 11.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:66 11.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:64 3.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:66 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000784f50 : : * : * (tag_hash works for this case too, but is slower) : */ : uint32 : oid_hash(const void *key, Size keysize) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:64 43.14 : 784f50: 55 push %rbp : Assert(keysize == sizeof(Oid)); : return DatumGetUInt32(hash_uint32((uint32) *((const Oid *) key))); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:66 11.76 : 784f51: 8b 3f mov (%rdi),%edi : * : * (tag_hash works for this case too, but is slower) : */ : uint32 : oid_hash(const void *key, Size keysize) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:64 11.76 : 784f53: 48 89 e5 mov %rsp,%rbp : Assert(keysize == sizeof(Oid)); : return DatumGetUInt32(hash_uint32((uint32) *((const Oid *) key))); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:66 3.92 : 784f56: e8 05 b7 d0 ff callq 490660 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:67 29.41 : 784f5b: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_tcpudp.ko ---------------------------------------------- 28.12 ??:0 18.75 ??:0 9.38 ??:0 9.38 ??:0 6.25 ??:0 6.25 ??:0 3.12 ??:0 3.12 ??:0 3.12 ??:0 3.12 ??:0 3.12 ??:0 3.12 ??:0 3.12 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_tcpudp.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000140 : ??:0 56.25 : 140: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 177: 48 89 je 1b0 0.00 : 179: 6c 24 60 sub $0x1,%eax 0.00 : 17c: 4c 89 64 24 68 48 je 320 0.00 : 182: 89 f5 xor %eax,%eax 0.00 : 184: 48 89 5c 24 58 mov 0x58(%rsp),%rbx 0.00 : 189: 4c 89 6c 24 70 mov 0x60(%rsp),%rbp 0.00 : 18e: 49 89 fc 4c 89 mov 0x68(%rsp),%r12 0.00 : 193: 74 24 78 4c 89 mov 0x70(%rsp),%r13 0.00 : 198: bc 24 80 00 00 mov 0x78(%rsp),%r14 0.00 : 19d: 00 8b 46 20 48 8b 5e mov 0x80(%rsp),%r15 0.00 : 1a4: 08 0.00 : 1a5: 85 c0 74 37 83 e8 01 add $0x88,%rsp 0.00 : 1ac: 0f retq 0.00 : 1ad: 84 9e 01 nopl (%rax) 0.00 : 1b0: 00 00 31 mov 0x68(%rdi),%eax 9.38 : 1b3: c0 48 8b sub 0x6c(%rdi),%eax 9.38 : 1b6: 5c 24 58 mov 0x24(%rsi),%esi 0.00 : 1b9: 48 8b sub %esi,%eax 0.00 : 1bb: 6c 24 60 cmp $0x13,%eax 6.25 : 1be: 4c 8b 64 24 68 4c jle 300 0.00 : 1c4: 8b 6c 24 movslq %esi,%rsi 0.00 : 1c7: 70 4c 8b 74 24 78 4c add 0xe0(%rdi),%rsi ??:0 3.12 : 1ce: 8b bc 24 test %rsi,%rsi 0.00 : 1d1: 80 00 00 00 48 81 je 338 0.00 : 1d7: c4 88 00 movzwl (%rsi),%eax 3.12 : 1da: 00 00 c3 0f movzbl 0xb(%rbx),%edi 0.00 : 1de: 1f 00 8b 47 rol $0x8,%ax 3.12 : 1e2: 68 2b 47 cmp %ax,(%rbx) 3.12 : 1e5: 6c 8b 76 setbe %dl 0.00 : 1e8: 24 29 f0 83 cmp %ax,0x2(%rbx) 0.00 : 1ec: f8 13 0f setae %al 0.00 : 1ef: 8e 3c 01 movzbl %al,%eax 3.12 : 1f2: 00 00 and %edx,%eax 0.00 : 1f4: 48 63 mov %edi,%edx 0.00 : 1f6: f6 48 03 and $0x1,%edx 0.00 : 1f9: b7 e0 cmp %edx,%eax 0.00 : 1fb: 00 00 je 182 3.12 : 1fd: 00 48 85 f6 movzwl 0x2(%rsi),%eax 0.00 : 201: 0f 84 61 01 rol $0x8,%ax 0.00 : 205: 00 00 0f b7 cmp %ax,0x4(%rbx) 0.00 : 209: 06 0f b6 setbe %cl 0.00 : 20c: 7b 0b xor %edx,%edx 0.00 : 20e: 66 c1 c0 08 cmp %ax,0x6(%rbx) 0.00 : 212: 66 39 mov %edi,%eax 0.00 : 214: 03 0f 96 setae %dl 0.00 : 217: c2 66 shr %eax 0.00 : 219: 39 43 and %ecx,%edx 0.00 : 21b: 02 0f 93 and $0x1,%eax 0.00 : 21e: c0 0f cmp %eax,%edx 0.00 : 220: b6 c0 21 d0 89 fa je 182 0.00 : 226: 83 e2 01 39 movzbl 0xd(%rsi),%eax 0.00 : 22a: d0 74 85 and 0x9(%rbx),%al 0.00 : 22d: 0f b7 46 cmp 0xa(%rbx),%al 0.00 : 230: 02 66 mov %edi,%eax 0.00 : 232: c1 c0 08 setne %dl 0.00 : 235: 66 39 43 shr $0x2,%eax 0.00 : 238: 04 0f 96 and $0x1,%eax 0.00 : 23b: c1 31 cmp %al,%dl 0.00 : 23d: d2 66 39 43 06 89 jne 182 0.00 : 243: f8 0f 93 c2 d1 movzbl 0x8(%rbx),%r13d 0.00 : 248: e8 21 ca 83 e0 mov $0x1,%eax 0.00 : 24d: 01 39 c2 test %r13b,%r13b 0.00 : 250: 0f 84 5c ff ff ff je 184 0.00 : 256: 0f b6 46 0d movzbl 0xc(%rsi),%eax 0.00 : 25a: 22 43 09 shr $0x4,%al 0.00 : 25d: 3a 43 0a movzbl %al,%edx 0.00 : 260: 89 f8 0f 95 c2 c1 e8 lea 0x0(,%rdx,4),%eax 0.00 : 267: 02 83 e0 cmp $0x13,%eax 0.00 : 26a: 01 38 c2 0f 85 3f jbe 329 0.00 : 270: ff ff ff shr $0x3,%edi 0.00 : 273: 44 0f b6 6b 08 b8 01 lea -0x14(,%rdx,4),%ebx 0.00 : 27a: 00 00 00 45 mov 0x24(%rbp),%r14d 0.00 : 27e: 84 ed mov %edi,%eax 0.00 : 280: 0f 84 2e and $0x1,%eax 0.00 : 283: ff ff ff 0f b6 46 0c cmpb $0x0,0x0(%rip) # 28a 0.00 : 28a: c0 e8 04 mov %eax,%r15d 0.00 : 28d: 0f b6 d0 8d 04 95 jne 367 0.00 : 293: 00 00 test %ebx,%ebx 0.00 : 295: 00 00 83 f8 13 0f je 35c 0.00 : 29b: 86 b9 00 00 00 mov 0x68(%r12),%eax 0.00 : 2a0: c1 ef 03 8d 1c sub 0x6c(%r12),%eax 0.00 : 2a5: 95 ec ff ff lea 0x14(%r14),%esi 0.00 : 2a9: ff 44 sub %esi,%eax 0.00 : 2ab: 8b 75 cmp %eax,%ebx 0.00 : 2ad: 24 89 f8 83 e0 01 jg 381 0.00 : 2b3: 80 3d 00 movslq %esi,%rsi 0.00 : 2b6: 00 00 00 00 41 89 c7 add 0xe0(%r12),%rsi 0.00 : 2bd: 0f 0.00 : 2be: 85 d4 xor %ecx,%ecx 0.00 : 2c0: 00 00 00 test %rsi,%rsi 0.00 : 2c3: 85 db 0f 84 c1 mov $0x1,%edi 0.00 : 2c8: 00 00 jne 2e5 0.00 : 2ca: 00 41 jmp 329 0.00 : 2cc: 8b 44 24 68 nopl 0x0(%rax) 0.00 : 2d0: 41 2b 44 lea 0x1(%rcx),%eax 0.00 : 2d3: 24 6c 41 8d movzbl (%rsi,%rax,1),%edx 0.00 : 2d7: 76 14 test %dl,%dl 0.00 : 2d9: 29 f0 39 movzbl %dl,%eax 0.00 : 2dc: c3 0f 8f cmove %edi,%eax 0.00 : 2df: ce 00 add %eax,%ecx 0.00 : 2e1: 00 00 cmp %ecx,%ebx 0.00 : 2e3: 48 63 jbe 35c 0.00 : 2e5: f6 49 mov %ecx,%eax 0.00 : 2e7: 03 b4 24 e0 movzbl (%rsi,%rax,1),%eax 0.00 : 2eb: 00 00 00 cmp %al,%r13b 0.00 : 2ee: 31 c9 je 358 0.00 : 2f0: 48 85 cmp $0x1,%al 0.00 : 2f2: f6 bf ja 2d0 0.00 : 2f4: 01 00 00 add $0x1,%ecx 0.00 : 2f7: 00 75 jmp 2e1 0.00 : 2f9: 1b eb 5d 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 300: 8d 41 01 0f b6 lea 0x30(%rsp),%r13 0.00 : 305: 14 06 84 d2 0f mov $0x14,%ecx 0.00 : 30a: b6 c2 0f mov %r13,%rdx 0.00 : 30d: 44 c7 01 c1 39 callq 312 0.00 : 312: cb 76 test %eax,%eax 0.00 : 314: 77 89 js 338 0.00 : 316: c8 0f b6 mov %r13,%rsi 0.00 : 319: 04 06 41 38 c5 jmpq 1ce 0.00 : 31e: 74 68 xchg %ax,%ax 0.00 : 320: 3c 01 77 dc 83 c1 01 cmpb $0x0,0x0(%rip) # 327 0.00 : 327: eb e8 jne 39a 0.00 : 329: 0f 1f 80 00 movb $0x1,0x2d(%rbp) 0.00 : 32d: 00 00 xor %eax,%eax 0.00 : 32f: 00 4c 8d 6c 24 jmpq 184 0.00 : 334: 30 b9 14 00 nopl 0x0(%rax) 0.00 : 338: 00 00 4c 89 ea e8 00 cmpb $0x0,0x0(%rip) # 33f 0.00 : 33f: 00 00 je 329 0.00 : 341: 00 85 c0 78 22 4c 89 mov $0x0,%rsi 0.00 : 348: ee e9 b0 fe ff ff 66 mov $0x0,%rdi 0.00 : 34f: 90 80 xor %eax,%eax 0.00 : 351: 3d 00 00 00 00 callq 356 0.00 : 356: 00 75 jmp 329 0.00 : 358: 71 c6 45 2d xor $0x1,%r15d 0.00 : 35c: 01 31 c0 test %r15b,%r15b 0.00 : 35f: e9 50 fe setne %al 0.00 : 362: ff ff 0f 1f 40 jmpq 184 0.00 : 367: 00 80 3d 00 00 00 00 mov $0x0,%rsi 0.00 : 36e: 00 74 e8 48 c7 c6 00 mov $0x0,%rdi 0.00 : 375: 00 00 xor %eax,%eax 0.00 : 377: 00 48 c7 c7 00 callq 37c 0.00 : 37c: 00 00 00 31 c0 jmpq 293 0.00 : 381: e8 00 mov %ebx,%ecx 0.00 : 383: 00 00 00 mov %rsp,%rdx 0.00 : 386: eb d1 41 mov %r12,%rdi 0.00 : 389: 83 f7 01 45 84 callq 38e 0.00 : 38e: ff 0f test %eax,%eax 0.00 : 390: 95 c0 js 329 0.00 : 392: e9 1d fe mov %rsp,%rsi 0.00 : 395: ff ff 48 c7 c6 jmpq 2be 0.00 : 39a: 00 00 00 00 48 c7 c7 mov $0x0,%rsi 0.00 : 3a1: 00 00 00 00 31 c0 e8 mov $0x0,%rdi 0.00 : 3a8: 00 00 xor %eax,%eax 0.00 : 3aa: 00 00 e9 12 ff callq 3af 0.00 : 3af: ff ff 89 d9 48 jmpq 329 : 3b4: Address 0x00000000000003b4 is out of bounds. : Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 47.37 ??:0 23.68 ??:0 18.42 ??:0 5.26 ??:0 2.63 ??:0 2.63 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000002d10 : : : return IRQ_HANDLED; : } : : static irqreturn_t ixgbe_msix_clean_rings(int irq, void *data) : { ??:0 5.26 : 2d10: 48 83 ec 08 sub $0x8,%rsp : struct ixgbe_q_vector *q_vector = data; : : /* EIAM disabled interrupts (on this vector) for us */ : : if (q_vector->rx.ring || q_vector->tx.ring) 47.37 : 2d14: 48 83 7e 10 00 cmpq $0x0,0x10(%rsi) 18.42 : 2d19: 74 2d je 2d48 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & ??:0 2.63 : 2d1b: 48 8b 46 50 mov 0x50(%rsi),%rax : : extern void __napi_schedule(struct napi_struct *n); : : static inline int napi_disable_pending(struct napi_struct *n) : { : return test_bit(NAPI_STATE_DISABLE, &n->state); 0.00 : 2d1f: 48 8d 56 50 lea 0x50(%rsi),%rdx : * insure only one NAPI poll instance runs. We also make : * sure there is no pending NAPI disable. : */ : static inline int napi_schedule_prep(struct napi_struct *n) : { : return !napi_disable_pending(n) && 0.00 : 2d23: a8 02 test $0x2,%al 0.00 : 2d25: 75 14 jne 2d3b : */ : static inline int test_and_set_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "bts %2,%1\n\t" 0.00 : 2d27: f0 0f ba 2a 00 lock btsl $0x0,(%rdx) ??:0 23.68 : 2d2c: 19 c0 sbb %eax,%eax 0.00 : 2d2e: 85 c0 test %eax,%eax 0.00 : 2d30: 75 09 jne 2d3b : * running. : */ : static inline void napi_schedule(struct napi_struct *n) : { : if (napi_schedule_prep(n)) : __napi_schedule(n); 0.00 : 2d32: 48 8d 7e 40 lea 0x40(%rsi),%rdi ??:0 2.63 : 2d36: e8 00 00 00 00 callq 2d3b : napi_schedule(&q_vector->napi); : : return IRQ_HANDLED; : } 0.00 : 2d3b: b8 01 00 00 00 mov $0x1,%eax 0.00 : 2d40: 48 83 c4 08 add $0x8,%rsp 0.00 : 2d44: c3 retq 0.00 : 2d45: 0f 1f 00 nopl (%rax) : { : struct ixgbe_q_vector *q_vector = data; : : /* EIAM disabled interrupts (on this vector) for us */ : : if (q_vector->rx.ring || q_vector->tx.ring) 0.00 : 2d48: 48 83 7e 28 00 cmpq $0x0,0x28(%rsi) 0.00 : 2d4d: 75 cc jne 2d1b 0.00 : 2d4f: 90 nop 0.00 : 2d50: eb e9 jmp 2d3b Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 14.81 ??:0 11.11 ??:0 7.41 ??:0 7.41 ??:0 7.41 ??:0 7.41 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004450 : : #endif : } : : static void ixgbe_tx_csum(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first) : { ??:0 11.11 : 4450: 48 83 ec 38 sub $0x38,%rsp ??:0 3.70 : 4454: 48 89 6c 24 10 mov %rbp,0x10(%rsp) 0.00 : 4459: 4c 89 7c 24 30 mov %r15,0x30(%rsp) 3.70 : 445e: 48 89 f5 mov %rsi,%rbp 0.00 : 4461: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 4466: 4c 89 64 24 18 mov %r12,0x18(%rsp) 3.70 : 446b: 49 89 ff mov %rdi,%r15 0.00 : 446e: 4c 89 6c 24 20 mov %r13,0x20(%rsp) 0.00 : 4473: 4c 89 74 24 28 mov %r14,0x28(%rsp) : struct sk_buff *skb = first->skb; 3.70 : 4478: 48 8b 5e 10 mov 0x10(%rsi),%rbx : u32 vlan_macip_lens = 0; : u32 mss_l4len_idx = 0; : u32 type_tucmd = 0; : : if (skb->ip_summed != CHECKSUM_PARTIAL) { 0.00 : 447c: 0f b6 43 7c movzbl 0x7c(%rbx),%eax 0.00 : 4480: 83 e0 0c and $0xc,%eax 0.00 : 4483: 3c 0c cmp $0xc,%al 0.00 : 4485: 0f 84 8d 00 00 00 je 4518 : if (!(first->tx_flags & IXGBE_TX_FLAGS_HW_VLAN) && 0.00 : 448b: f6 46 2c 82 testb $0x82,0x2c(%rsi) 0.00 : 448f: 74 5f je 44f0 : !(first->tx_flags & IXGBE_TX_FLAGS_TXSW)) : return; 0.00 : 4491: 45 31 ed xor %r13d,%r13d 0.00 : 4494: 31 d2 xor %edx,%edx 0.00 : 4496: 45 31 e4 xor %r12d,%r12d : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 4499: 8b b3 c4 00 00 00 mov 0xc4(%rbx),%esi 3.70 : 449f: 8b 45 2c mov 0x2c(%rbp),%eax : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 3.70 : 44a2: 41 89 d0 mov %edx,%r8d : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 44a5: 48 03 b3 d8 00 00 00 add 0xd8(%rbx),%rsi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44ac: 44 89 e1 mov %r12d,%ecx 0.00 : 44af: 4c 89 ff mov %r15,%rdi : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 44b2: 2b b3 e0 00 00 00 sub 0xe0(%rbx),%esi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, : type_tucmd, mss_l4len_idx); : } 0.00 : 44b8: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44bd: 31 d2 xor %edx,%edx : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; ??:0 7.41 : 44bf: 66 31 c0 xor %ax,%ax : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, : type_tucmd, mss_l4len_idx); : } ??:0 3.70 : 44c2: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44c7: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 44cc: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 44d1: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 3.70 : 44d6: c1 e6 09 shl $0x9,%esi 0.00 : 44d9: 09 c6 or %eax,%esi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44db: 44 09 ee or %r13d,%esi : type_tucmd, mss_l4len_idx); : } 0.00 : 44de: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 44e3: 48 83 c4 38 add $0x38,%rsp : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44e7: e9 00 00 00 00 jmpq 44ec 0.00 : 44ec: 0f 1f 40 00 nopl 0x0(%rax) : type_tucmd, mss_l4len_idx); : } 0.00 : 44f0: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44f5: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 44fa: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 44ff: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 4504: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 4509: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 450e: 48 83 c4 38 add $0x38,%rsp 0.00 : 4512: c3 retq 0.00 : 4513: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (!(first->tx_flags & IXGBE_TX_FLAGS_HW_VLAN) && : !(first->tx_flags & IXGBE_TX_FLAGS_TXSW)) : return; : } else { : u8 l4_hdr = 0; : switch (first->protocol) { ??:0 14.81 : 4518: 0f b7 46 1e movzwl 0x1e(%rsi),%eax ??:0 3.70 : 451c: 66 83 f8 08 cmp $0x8,%ax 0.00 : 4520: 0f 84 92 00 00 00 je 45b8 0.00 : 4526: 66 3d 86 dd cmp $0xdd86,%ax 0.00 : 452a: 74 34 je 4560 0.00 : 452c: 0f 1f 40 00 nopl 0x0(%rax) : vlan_macip_lens |= skb_network_header_len(skb); : l4_hdr = ipv6_hdr(skb)->nexthdr; : break; : #endif : default: : if (unlikely(net_ratelimit())) { 0.00 : 4530: e8 00 00 00 00 callq 4535 0.00 : 4535: 85 c0 test %eax,%eax 0.00 : 4537: 0f 85 b4 00 00 00 jne 45f1 : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 453d: 45 31 ed xor %r13d,%r13d 0.00 : 4540: 45 31 e4 xor %r12d,%r12d 0.00 : 4543: 45 31 f6 xor %r14d,%r14d : case IPPROTO_UDP: : mss_l4len_idx = sizeof(struct udphdr) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; : default: : if (unlikely(net_ratelimit())) { 0.00 : 4546: e8 00 00 00 00 callq 454b 0.00 : 454b: 31 d2 xor %edx,%edx 0.00 : 454d: 85 c0 test %eax,%eax 0.00 : 454f: 0f 85 b7 00 00 00 jne 460c : } : break; : } : : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; 0.00 : 4555: 83 4d 2c 01 orl $0x1,0x2c(%rbp) ??:0 7.41 : 4559: e9 3b ff ff ff jmpq 4499 0.00 : 455e: 66 90 xchg %ax,%ax : return skb_transport_header(skb) - skb->data; : } : : static inline u32 skb_network_header_len(const struct sk_buff *skb) : { : return skb->transport_header - skb->network_header; 0.00 : 4560: 8b 83 c4 00 00 00 mov 0xc4(%rbx),%eax : l4_hdr = ip_hdr(skb)->protocol; : break; : #ifdef NETIF_F_IPV6_CSUM : case __constant_htons(ETH_P_IPV6): : vlan_macip_lens |= skb_network_header_len(skb); : l4_hdr = ipv6_hdr(skb)->nexthdr; 0.00 : 4566: 48 8b 8b d8 00 00 00 mov 0xd8(%rbx),%rcx 0.00 : 456d: 45 31 e4 xor %r12d,%r12d 0.00 : 4570: 44 8b ab c0 00 00 00 mov 0xc0(%rbx),%r13d 0.00 : 4577: 44 0f b6 74 01 06 movzbl 0x6(%rcx,%rax,1),%r14d 0.00 : 457d: 41 29 c5 sub %eax,%r13d : first->protocol); : } : break; : } : : switch (l4_hdr) { 0.00 : 4580: 41 80 fe 11 cmp $0x11,%r14b 0.00 : 4584: ba 00 08 00 00 mov $0x800,%edx 0.00 : 4589: 74 ca je 4555 0.00 : 458b: 41 80 fe 84 cmp $0x84,%r14b 0.00 : 458f: 74 4f je 45e0 0.00 : 4591: 41 80 fe 06 cmp $0x6,%r14b 0.00 : 4595: 75 af jne 4546 : case IPPROTO_TCP: : type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_TCP; : mss_l4len_idx = tcp_hdrlen(skb) << 0.00 : 4597: 8b 83 c0 00 00 00 mov 0xc0(%rbx),%eax : break; : } : : switch (l4_hdr) { : case IPPROTO_TCP: : type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_TCP; 0.00 : 459d: 41 81 cc 00 08 00 00 or $0x800,%r12d : mss_l4len_idx = tcp_hdrlen(skb) << 0.00 : 45a4: 0f b6 44 01 0c movzbl 0xc(%rcx,%rax,1),%eax ??:0 3.70 : 45a9: c0 e8 04 shr $0x4,%al 0.00 : 45ac: 0f b6 d0 movzbl %al,%edx 0.00 : 45af: c1 e2 0a shl $0xa,%edx : IXGBE_ADVTXD_L4LEN_SHIFT; : break; 0.00 : 45b2: eb a1 jmp 4555 0.00 : 45b4: 0f 1f 40 00 nopl 0x0(%rax) ??:0 7.41 : 45b8: 8b 83 c4 00 00 00 mov 0xc4(%rbx),%eax 7.41 : 45be: 44 8b ab c0 00 00 00 mov 0xc0(%rbx),%r13d : u8 l4_hdr = 0; : switch (first->protocol) { : case __constant_htons(ETH_P_IP): : vlan_macip_lens |= skb_network_header_len(skb); : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : l4_hdr = ip_hdr(skb)->protocol; ??:0 3.70 : 45c5: 41 bc 00 04 00 00 mov $0x400,%r12d 0.00 : 45cb: 48 8b 8b d8 00 00 00 mov 0xd8(%rbx),%rcx 3.70 : 45d2: 41 29 c5 sub %eax,%r13d 0.00 : 45d5: 44 0f b6 74 01 09 movzbl 0x9(%rcx,%rax,1),%r14d : break; 0.00 : 45db: eb a3 jmp 4580 0.00 : 45dd: 0f 1f 00 nopl (%rax) : mss_l4len_idx = tcp_hdrlen(skb) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; : #ifdef HAVE_SCTP : case IPPROTO_SCTP: : type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_SCTP; 0.00 : 45e0: 41 81 cc 00 10 00 00 or $0x1000,%r12d 0.00 : 45e7: ba 00 0c 00 00 mov $0xc00,%edx : mss_l4len_idx = sizeof(struct sctphdr) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; 0.00 : 45ec: e9 64 ff ff ff jmpq 4555 : l4_hdr = ipv6_hdr(skb)->nexthdr; : break; : #endif : default: : if (unlikely(net_ratelimit())) { : dev_warn(tx_ring->dev, 0.00 : 45f1: 0f b7 55 1e movzwl 0x1e(%rbp),%edx 0.00 : 45f5: 49 8b 7f 18 mov 0x18(%r15),%rdi 0.00 : 45f9: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 4600: 31 c0 xor %eax,%eax 0.00 : 4602: e8 00 00 00 00 callq 4607 0.00 : 4607: e9 31 ff ff ff jmpq 453d : mss_l4len_idx = sizeof(struct udphdr) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; : default: : if (unlikely(net_ratelimit())) { : dev_warn(tx_ring->dev, 0.00 : 460c: 49 8b 7f 18 mov 0x18(%r15),%rdi 0.00 : 4610: 41 0f b6 d6 movzbl %r14b,%edx 0.00 : 4614: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 461b: 31 c0 xor %eax,%eax 0.00 : 461d: e8 00 00 00 00 callq 4622 0.00 : 4622: 31 d2 xor %edx,%edx 0.00 : 4624: e9 2c ff ff ff jmpq 4555 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 26.83 ??:0 26.83 ??:0 24.39 ??:0 17.07 ??:0 4.88 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002ada0 <__ctype_get_mb_cur_max>: ??:0 26.83 : 2ada0: 48 8b 15 e1 6f 34 00 mov 0x346fe1(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : 2ada7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 2adae: 00 00 ??:0 4.88 : 2adb0: 48 8b 04 10 mov (%rax,%rdx,1),%rax ??:0 17.07 : 2adb4: 48 8b 00 mov (%rax),%rax 51.22 : 2adb7: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 8.57 ??:0 5.71 ??:0 5.71 ??:0 5.71 ??:0 5.71 ??:0 5.71 ??:0 5.71 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 2.86 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072190 <_IO_file_xsputn@@GLIBC_2.2.5>: ??:0 5.71 : 72190: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) ??:0 2.86 : 72195: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 7219a: 31 c0 xor %eax,%eax 0.00 : 7219c: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 2.86 : 721a1: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 721a6: 49 89 fd mov %rdi,%r13 0.00 : 721a9: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 721ae: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) ??:0 8.57 : 721b3: 48 83 ec 38 sub $0x38,%rsp 0.00 : 721b7: 48 85 d2 test %rdx,%rdx 0.00 : 721ba: 48 89 f5 mov %rsi,%rbp 0.00 : 721bd: 49 89 d4 mov %rdx,%r12 ??:0 2.86 : 721c0: 74 74 je 72236 <_IO_file_xsputn@@GLIBC_2.2.5+0xa6> 0.00 : 721c2: 8b 07 mov (%rdi),%eax 0.00 : 721c4: 49 89 f7 mov %rsi,%r15 0.00 : 721c7: 25 00 0a 00 00 and $0xa00,%eax 2.86 : 721cc: 3d 00 0a 00 00 cmp $0xa00,%eax 0.00 : 721d1: 0f 84 01 01 00 00 je 722d8 <_IO_file_xsputn@@GLIBC_2.2.5+0x148> 0.00 : 721d7: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 721db: 48 8b 7f 28 mov 0x28(%rdi),%rdi 0.00 : 721df: 48 89 d3 mov %rdx,%rbx 0.00 : 721e2: 48 39 f8 cmp %rdi,%rax 0.00 : 721e5: 77 79 ja 72260 <_IO_file_xsputn@@GLIBC_2.2.5+0xd0> 0.00 : 721e7: 49 8b 85 d8 00 00 00 mov 0xd8(%r13),%rax 0.00 : 721ee: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 721f3: 4c 89 ef mov %r13,%rdi 0.00 : 721f6: ff 50 18 callq *0x18(%rax) 0.00 : 721f9: 83 c0 01 add $0x1,%eax 0.00 : 721fc: 0f 84 56 01 00 00 je 72358 <_IO_file_xsputn@@GLIBC_2.2.5+0x1c8> 0.00 : 72202: 49 8b 4d 40 mov 0x40(%r13),%rcx 0.00 : 72206: 49 2b 4d 38 sub 0x38(%r13),%rcx 0.00 : 7220a: 31 d2 xor %edx,%edx 0.00 : 7220c: 48 83 f9 7f cmp $0x7f,%rcx 0.00 : 72210: 76 08 jbe 7221a <_IO_file_xsputn@@GLIBC_2.2.5+0x8a> 0.00 : 72212: 48 89 d8 mov %rbx,%rax 0.00 : 72215: 31 d2 xor %edx,%edx 0.00 : 72217: 48 f7 f1 div %rcx 0.00 : 7221a: 48 89 dd mov %rbx,%rbp 0.00 : 7221d: 48 29 d5 sub %rdx,%rbp 0.00 : 72220: 0f 85 4a 01 00 00 jne 72370 <_IO_file_xsputn@@GLIBC_2.2.5+0x1e0> 0.00 : 72226: 48 85 db test %rbx,%rbx 0.00 : 72229: 0f 85 61 01 00 00 jne 72390 <_IO_file_xsputn@@GLIBC_2.2.5+0x200> 0.00 : 7222f: 90 nop 2.86 : 72230: 4c 89 e0 mov %r12,%rax 0.00 : 72233: 48 29 d8 sub %rbx,%rax ??:0 5.71 : 72236: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7223b: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 72240: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 5.71 : 72245: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7224a: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 5.71 : 7224f: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 72254: 48 83 c4 38 add $0x38,%rsp ??:0 2.86 : 72258: c3 retq 0.00 : 72259: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 2.86 : 72260: 48 89 c2 mov %rax,%rdx 0.00 : 72263: 45 31 f6 xor %r14d,%r14d 2.86 : 72266: 48 29 fa sub %rdi,%rdx 0.00 : 72269: 48 85 d2 test %rdx,%rdx 0.00 : 7226c: 48 89 fe mov %rdi,%rsi 0.00 : 7226f: 4c 89 e3 mov %r12,%rbx 0.00 : 72272: 74 4b je 722bf <_IO_file_xsputn@@GLIBC_2.2.5+0x12f> 0.00 : 72274: 4c 39 e2 cmp %r12,%rdx 0.00 : 72277: 4c 89 e3 mov %r12,%rbx 0.00 : 7227a: 48 0f 46 da cmovbe %rdx,%rbx 0.00 : 7227e: 48 83 fb 14 cmp $0x14,%rbx 0.00 : 72282: 0f 87 b0 00 00 00 ja 72338 <_IO_file_xsputn@@GLIBC_2.2.5+0x1a8> 0.00 : 72288: 85 db test %ebx,%ebx 0.00 : 7228a: 74 26 je 722b2 <_IO_file_xsputn@@GLIBC_2.2.5+0x122> 2.86 : 7228c: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 7228f: 31 d2 xor %edx,%edx 0.00 : 72291: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 72295: 0f 1f 00 nopl (%rax) 2.86 : 72298: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax ??:0 20.00 : 7229d: 88 04 17 mov %al,(%rdi,%rdx,1) 5.71 : 722a0: 48 83 c2 01 add $0x1,%rdx 0.00 : 722a4: 48 39 ca cmp %rcx,%rdx 0.00 : 722a7: 75 ef jne 72298 <_IO_file_xsputn@@GLIBC_2.2.5+0x108> 0.00 : 722a9: 4c 8d 7c 15 00 lea 0x0(%rbp,%rdx,1),%r15 5.71 : 722ae: 48 8d 34 17 lea (%rdi,%rdx,1),%rsi 0.00 : 722b2: 49 89 75 28 mov %rsi,0x28(%r13) ??:0 2.86 : 722b6: 4c 89 e0 mov %r12,%rax 0.00 : 722b9: 48 29 d8 sub %rbx,%rax 0.00 : 722bc: 48 89 c3 mov %rax,%rbx 0.00 : 722bf: 49 63 c6 movslq %r14d,%rax 0.00 : 722c2: 48 01 d8 add %rbx,%rax 0.00 : 722c5: 48 85 c0 test %rax,%rax 0.00 : 722c8: 0f 84 62 ff ff ff je 72230 <_IO_file_xsputn@@GLIBC_2.2.5+0xa0> 0.00 : 722ce: e9 14 ff ff ff jmpq 721e7 <_IO_file_xsputn@@GLIBC_2.2.5+0x57> 0.00 : 722d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 722d8: 48 8b 7f 28 mov 0x28(%rdi),%rdi 0.00 : 722dc: 49 8b 55 40 mov 0x40(%r13),%rdx 0.00 : 722e0: 45 31 f6 xor %r14d,%r14d 0.00 : 722e3: 48 29 fa sub %rdi,%rdx 0.00 : 722e6: 48 89 fe mov %rdi,%rsi 0.00 : 722e9: 49 39 d4 cmp %rdx,%r12 0.00 : 722ec: 0f 87 77 ff ff ff ja 72269 <_IO_file_xsputn@@GLIBC_2.2.5+0xd9> 0.00 : 722f2: 4a 8d 4c 25 00 lea 0x0(%rbp,%r12,1),%rcx 0.00 : 722f7: 48 39 cd cmp %rcx,%rbp 0.00 : 722fa: 0f 83 b0 00 00 00 jae 723b0 <_IO_file_xsputn@@GLIBC_2.2.5+0x220> 0.00 : 72300: 80 79 ff 0a cmpb $0xa,-0x1(%rcx) 0.00 : 72304: 48 8d 41 ff lea -0x1(%rcx),%rax 0.00 : 72308: 74 18 je 72322 <_IO_file_xsputn@@GLIBC_2.2.5+0x192> 0.00 : 7230a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72310: 48 39 c5 cmp %rax,%rbp 0.00 : 72313: 0f 83 97 00 00 00 jae 723b0 <_IO_file_xsputn@@GLIBC_2.2.5+0x220> 0.00 : 72319: 48 83 e8 01 sub $0x1,%rax 0.00 : 7231d: 80 38 0a cmpb $0xa,(%rax) 0.00 : 72320: 75 ee jne 72310 <_IO_file_xsputn@@GLIBC_2.2.5+0x180> 0.00 : 72322: 48 29 e8 sub %rbp,%rax 0.00 : 72325: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 7232b: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 7232f: e9 35 ff ff ff jmpq 72269 <_IO_file_xsputn@@GLIBC_2.2.5+0xd9> 0.00 : 72334: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 72338: 48 89 da mov %rbx,%rdx 0.00 : 7233b: 48 89 ee mov %rbp,%rsi 0.00 : 7233e: 4c 8d 7c 1d 00 lea 0x0(%rbp,%rbx,1),%r15 0.00 : 72343: e8 48 1c 01 00 callq 83f90 <__mempcpy> 2.86 : 72348: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 7234c: e9 65 ff ff ff jmpq 722b6 <_IO_file_xsputn@@GLIBC_2.2.5+0x126> 0.00 : 72351: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 72358: 49 29 dc sub %rbx,%r12 0.00 : 7235b: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 72362: 48 85 db test %rbx,%rbx 0.00 : 72365: 49 0f 45 c4 cmovne %r12,%rax 0.00 : 72369: e9 c8 fe ff ff jmpq 72236 <_IO_file_xsputn@@GLIBC_2.2.5+0xa6> 0.00 : 7236e: 66 90 xchg %ax,%ax 0.00 : 72370: 48 89 ea mov %rbp,%rdx 0.00 : 72373: 4c 89 fe mov %r15,%rsi 0.00 : 72376: 4c 89 ef mov %r13,%rdi 0.00 : 72379: e8 d2 fc ff ff callq 72050 0.00 : 7237e: 48 29 c3 sub %rax,%rbx 0.00 : 72381: 48 39 c5 cmp %rax,%rbp 0.00 : 72384: 0f 86 9c fe ff ff jbe 72226 <_IO_file_xsputn@@GLIBC_2.2.5+0x96> 0.00 : 7238a: e9 a1 fe ff ff jmpq 72230 <_IO_file_xsputn@@GLIBC_2.2.5+0xa0> 0.00 : 7238f: 90 nop 0.00 : 72390: 49 8d 34 2f lea (%r15,%rbp,1),%rsi 0.00 : 72394: 48 89 da mov %rbx,%rdx 0.00 : 72397: 4c 89 ef mov %r13,%rdi 0.00 : 7239a: e8 81 2a 00 00 callq 74e20 <_IO_default_xsputn> 0.00 : 7239f: 48 29 c3 sub %rax,%rbx 0.00 : 723a2: e9 89 fe ff ff jmpq 72230 <_IO_file_xsputn@@GLIBC_2.2.5+0xa0> 0.00 : 723a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 723ae: 00 00 2.86 : 723b0: 45 31 f6 xor %r14d,%r14d 0.00 : 723b3: e9 bc fe ff ff jmpq 72274 <_IO_file_xsputn@@GLIBC_2.2.5+0xe4> Sorted summary for file /bin/bash ---------------------------------------------- 25.00 ??:0 18.75 ??:0 18.75 ??:0 12.50 ??:0 9.38 ??:0 6.25 ??:0 3.12 ??:0 3.12 ??:0 3.12 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000437b00 : 0.00 : 437b00: 41 56 push %r14 0.00 : 437b02: 49 89 fe mov %rdi,%r14 0.00 : 437b05: 41 55 push %r13 0.00 : 437b07: 41 54 push %r12 0.00 : 437b09: 41 89 f4 mov %esi,%r12d 0.00 : 437b0c: 55 push %rbp 0.00 : 437b0d: 53 push %rbx 0.00 : 437b0e: 48 81 ec b0 01 00 00 sub $0x1b0,%rsp 0.00 : 437b15: 48 8d 9c 24 10 01 00 lea 0x110(%rsp),%rbx 0.00 : 437b1c: 00 0.00 : 437b1d: 4c 8d ac 24 90 00 00 lea 0x90(%rsp),%r13 0.00 : 437b24: 00 0.00 : 437b25: 48 89 df mov %rbx,%rdi 0.00 : 437b28: e8 13 f0 fd ff callq 416b40 0.00 : 437b2d: be 11 00 00 00 mov $0x11,%esi 0.00 : 437b32: 48 89 df mov %rbx,%rdi 0.00 : 437b35: e8 76 ed fd ff callq 4168b0 0.00 : 437b3a: be 02 00 00 00 mov $0x2,%esi 0.00 : 437b3f: 48 89 df mov %rbx,%rdi 0.00 : 437b42: e8 69 ed fd ff callq 4168b0 0.00 : 437b47: 4c 89 ef mov %r13,%rdi 0.00 : 437b4a: e8 f1 ef fd ff callq 416b40 0.00 : 437b4f: 31 ff xor %edi,%edi 0.00 : 437b51: 4c 89 ea mov %r13,%rdx 0.00 : 437b54: 48 89 de mov %rbx,%rsi 0.00 : 437b57: e8 84 ea fd ff callq 4165e0 0.00 : 437b5c: e8 7f ff ff ff callq 437ae0 0.00 : 437b61: 8b 3d 39 2f 25 00 mov 0x252f39(%rip),%edi # 68aaa0 0.00 : 437b67: 83 ff ff cmp $0xffffffff,%edi 0.00 : 437b6a: 74 11 je 437b7d 0.00 : 437b6c: 45 85 e4 test %r12d,%r12d 0.00 : 437b6f: 74 04 je 437b75 0.00 : 437b71: 85 ff test %edi,%edi 0.00 : 437b73: 7e 08 jle 437b7d 0.00 : 437b75: 0f 1f 00 nopl (%rax) 0.00 : 437b78: e8 f3 ea 00 00 callq 446670 0.00 : 437b7d: 0f 1f 00 nopl (%rax) 0.00 : 437b80: e8 ab ef fd ff callq 416b30 ??:0 3.12 : 437b85: 85 c0 test %eax,%eax ??:0 18.75 : 437b87: 89 c5 mov %eax,%ebp 0.00 : 437b89: 0f 88 a1 03 00 00 js 437f30 0.00 : 437b8f: 85 ed test %ebp,%ebp 0.00 : 437b91: 0f 84 01 02 00 00 je 437d98 0.00 : 437b97: 8b 05 e3 36 25 00 mov 0x2536e3(%rip),%eax # 68b280 6.25 : 437b9d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 437ba0: 74 4e je 437bf0 0.00 : 437ba2: 8b 15 dc 36 25 00 mov 0x2536dc(%rip),%edx # 68b284 0.00 : 437ba8: 83 fa ff cmp $0xffffffff,%edx 0.00 : 437bab: 0f 84 af 03 00 00 je 437f60 0.00 : 437bb1: 85 d2 test %edx,%edx 0.00 : 437bb3: 75 41 jne 437bf6 0.00 : 437bb5: 39 c5 cmp %eax,%ebp 0.00 : 437bb7: 7c 3d jl 437bf6 0.00 : 437bb9: 44 8b 15 a8 36 25 00 mov 0x2536a8(%rip),%r10d # 68b268 0.00 : 437bc0: c7 05 ba 36 25 00 01 movl $0x1,0x2536ba(%rip) # 68b284 0.00 : 437bc7: 00 00 00 0.00 : 437bca: 45 85 d2 test %r10d,%r10d 0.00 : 437bcd: 75 33 jne 437c02 0.00 : 437bcf: 90 nop 0.00 : 437bd0: 44 8b 05 a9 cf 25 00 mov 0x25cfa9(%rip),%r8d # 694b80 0.00 : 437bd7: 45 85 c0 test %r8d,%r8d 0.00 : 437bda: 75 43 jne 437c1f 0.00 : 437bdc: 8b 05 6a 36 25 00 mov 0x25366a(%rip),%eax # 68b24c 0.00 : 437be2: 89 05 98 cf 25 00 mov %eax,0x25cf98(%rip) # 694b80 0.00 : 437be8: eb 35 jmp 437c1f 0.00 : 437bea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437bf0: 89 2d 8a 36 25 00 mov %ebp,0x25368a(%rip) # 68b280 0.00 : 437bf6: 44 8b 15 6b 36 25 00 mov 0x25366b(%rip),%r10d # 68b268 0.00 : 437bfd: 45 85 d2 test %r10d,%r10d 0.00 : 437c00: 74 ce je 437bd0 0.00 : 437c02: 44 8b 0d 77 cf 25 00 mov 0x25cf77(%rip),%r9d # 694b80 0.00 : 437c09: 45 85 c9 test %r9d,%r9d 0.00 : 437c0c: 0f 84 a6 02 00 00 je 437eb8 0.00 : 437c12: 8b 35 68 cf 25 00 mov 0x25cf68(%rip),%esi # 694b80 0.00 : 437c18: 89 ef mov %ebp,%edi 0.00 : 437c1a: e8 31 e6 fd ff callq 416250 0.00 : 437c1f: 48 8d 94 24 ac 01 00 lea 0x1ac(%rsp),%rdx 0.00 : 437c26: 00 0.00 : 437c27: 31 f6 xor %esi,%esi 0.00 : 437c29: 89 ef mov %ebp,%edi 0.00 : 437c2b: e8 b0 b2 ff ff callq 432ee0 0.00 : 437c30: 48 85 c0 test %rax,%rax 0.00 : 437c33: 48 89 c3 mov %rax,%rbx 0.00 : 437c36: 75 10 jne 437c48 0.00 : 437c38: eb 33 jmp 437c6d 0.00 : 437c3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437c40: 48 8b 1b mov (%rbx),%rbx 0.00 : 437c43: 48 85 db test %rbx,%rbx 0.00 : 437c46: 74 25 je 437c6d 0.00 : 437c48: 3b 6b 08 cmp 0x8(%rbx),%ebp 0.00 : 437c4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 437c50: 75 ee jne 437c40 0.00 : 437c52: 83 7b 10 01 cmpl $0x1,0x10(%rbx) 0.00 : 437c56: 0f 84 3c 02 00 00 je 437e98 0.00 : 437c5c: 80 7b 0c 7f cmpb $0x7f,0xc(%rbx) 0.00 : 437c60: 0f 84 32 02 00 00 je 437e98 0.00 : 437c66: c7 43 10 04 00 00 00 movl $0x4,0x10(%rbx) 0.00 : 437c6d: bf 20 00 00 00 mov $0x20,%edi 0.00 : 437c72: e8 49 06 02 00 callq 4582c0 0.00 : 437c77: 48 8b 35 0a cf 25 00 mov 0x25cf0a(%rip),%rsi # 694b88 0.00 : 437c7e: 89 68 08 mov %ebp,0x8(%rax) ??:0 3.12 : 437c81: c7 40 0c 00 00 00 00 movl $0x0,0xc(%rax) 0.00 : 437c88: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) 0.00 : 437c8f: 4c 89 70 18 mov %r14,0x18(%rax) 0.00 : 437c93: 48 85 f6 test %rsi,%rsi 0.00 : 437c96: 48 89 30 mov %rsi,(%rax) 0.00 : 437c99: 48 89 f1 mov %rsi,%rcx 3.12 : 437c9c: 48 89 05 e5 ce 25 00 mov %rax,0x25cee5(%rip) # 694b88 0.00 : 437ca3: 75 0e jne 437cb3 0.00 : 437ca5: e9 e1 02 00 00 jmpq 437f8b 0.00 : 437caa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437cb0: 48 89 d1 mov %rdx,%rcx 0.00 : 437cb3: 48 8b 11 mov (%rcx),%rdx 0.00 : 437cb6: 48 39 d6 cmp %rdx,%rsi 0.00 : 437cb9: 75 f5 jne 437cb0 0.00 : 437cbb: 48 89 01 mov %rax,(%rcx) 0.00 : 437cbe: 45 85 e4 test %r12d,%r12d 0.00 : 437cc1: 0f 84 b1 00 00 00 je 437d78 0.00 : 437cc7: 89 2d 97 35 25 00 mov %ebp,0x253597(%rip) # 68b264 0.00 : 437ccd: 8b 3d b1 35 25 00 mov 0x2535b1(%rip),%edi # 68b284 0.00 : 437cd3: 85 ff test %edi,%edi 0.00 : 437cd5: 7e 62 jle 437d39 0.00 : 437cd7: 48 8d 94 24 a0 01 00 lea 0x1a0(%rsp),%rdx 0.00 : 437cde: 00 0.00 : 437cdf: 31 f6 xor %esi,%esi 0.00 : 437ce1: 89 ef mov %ebp,%edi 0.00 : 437ce3: e8 78 b1 ff ff callq 432e60 0.00 : 437ce8: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 437ceb: 89 c3 mov %eax,%ebx 0.00 : 437ced: 74 4a je 437d39 0.00 : 437cef: 48 8b 15 82 ce 25 00 mov 0x25ce82(%rip),%rdx # 694b78 0.00 : 437cf6: 48 98 cltq 0.00 : 437cf8: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 437cfc: 83 78 14 02 cmpl $0x2,0x14(%rax) 0.00 : 437d00: 0f 84 12 02 00 00 je 437f18 0.00 : 437d06: 31 ff xor %edi,%edi 0.00 : 437d08: ba 05 00 00 00 mov $0x5,%edx 0.00 : 437d0d: be 28 5c 47 00 mov $0x475c28,%esi 0.00 : 437d12: e8 69 eb fd ff callq 416880 0.00 : 437d17: 89 da mov %ebx,%edx 0.00 : 437d19: 48 89 c7 mov %rax,%rdi 0.00 : 437d1c: 89 ee mov %ebp,%esi 0.00 : 437d1e: 31 c0 xor %eax,%eax 0.00 : 437d20: e8 cb 91 ff ff callq 430ef0 0.00 : 437d25: 48 8b 84 24 a0 01 00 mov 0x1a0(%rsp),%rax 0.00 : 437d2c: 00 0.00 : 437d2d: 48 85 c0 test %rax,%rax 0.00 : 437d30: 74 07 je 437d39 0.00 : 437d32: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) 0.00 : 437d39: 89 ef mov %ebp,%edi 0.00 : 437d3b: e8 10 ce ff ff callq 434b50 0.00 : 437d40: 31 d2 xor %edx,%edx 0.00 : 437d42: 4c 89 ee mov %r13,%rsi 0.00 : 437d45: bf 02 00 00 00 mov $0x2,%edi ??:0 18.75 : 437d4a: 89 2d 10 35 25 00 mov %ebp,0x253510(%rip) # 68b260 0.00 : 437d50: 83 05 bd 34 25 00 01 addl $0x1,0x2534bd(%rip) # 68b214 0.00 : 437d57: 83 05 aa 34 25 00 01 addl $0x1,0x2534aa(%rip) # 68b208 0.00 : 437d5e: e8 7d e8 fd ff callq 4165e0 0.00 : 437d63: 48 81 c4 b0 01 00 00 add $0x1b0,%rsp 0.00 : 437d6a: 89 e8 mov %ebp,%eax 0.00 : 437d6c: 5b pop %rbx 0.00 : 437d6d: 5d pop %rbp 0.00 : 437d6e: 41 5c pop %r12 0.00 : 437d70: 41 5d pop %r13 0.00 : 437d72: 41 5e pop %r14 0.00 : 437d74: c3 retq 0.00 : 437d75: 0f 1f 00 nopl (%rax) 0.00 : 437d78: 8b 05 e6 34 25 00 mov 0x2534e6(%rip),%eax # 68b264 0.00 : 437d7e: 39 c5 cmp %eax,%ebp 0.00 : 437d80: 0f 85 47 ff ff ff jne 437ccd 0.00 : 437d86: c7 05 d4 34 25 00 01 movl $0x1,0x2534d4(%rip) # 68b264 0.00 : 437d8d: 00 00 00 0.00 : 437d90: e9 38 ff ff ff jmpq 437ccd 0.00 : 437d95: 0f 1f 00 nopl (%rax) 0.00 : 437d98: e8 d3 e4 fd ff callq 416270 0.00 : 437d9d: 89 c3 mov %eax,%ebx 0.00 : 437d9f: 8b 05 93 e1 25 00 mov 0x25e193(%rip),%eax # 695f38 25.00 : 437da5: 85 c0 test %eax,%eax 0.00 : 437da7: 0f 85 eb 01 00 00 jne 437f98 0.00 : 437dad: 31 ff xor %edi,%edi 0.00 : 437daf: e8 fc f1 fd ff callq 416fb0 0.00 : 437db4: 31 d2 xor %edx,%edx 0.00 : 437db6: be a0 73 69 00 mov $0x6973a0,%esi 0.00 : 437dbb: bf 02 00 00 00 mov $0x2,%edi 0.00 : 437dc0: e8 1b e8 fd ff callq 4165e0 0.00 : 437dc5: 44 8b 35 9c 34 25 00 mov 0x25349c(%rip),%r14d # 68b268 12.50 : 437dcc: 45 85 f6 test %r14d,%r14d 0.00 : 437dcf: 0f 84 f3 00 00 00 je 437ec8 0.00 : 437dd5: 44 8b 2d a4 cd 25 00 mov 0x25cda4(%rip),%r13d # 694b80 0.00 : 437ddc: 45 85 ed test %r13d,%r13d 0.00 : 437ddf: 75 06 jne 437de7 0.00 : 437de1: 89 1d 99 cd 25 00 mov %ebx,0x25cd99(%rip) # 694b80 0.00 : 437de7: 8b 05 93 cd 25 00 mov 0x25cd93(%rip),%eax # 694b80 0.00 : 437ded: 3b 05 59 34 25 00 cmp 0x253459(%rip),%eax # 68b24c 0.00 : 437df3: 0f 84 cc 01 00 00 je 437fc5 0.00 : 437df9: e8 42 b3 ff ff callq 433140 0.00 : 437dfe: 8b 35 7c cd 25 00 mov 0x25cd7c(%rip),%esi # 694b80 0.00 : 437e04: 89 df mov %ebx,%edi 0.00 : 437e06: e8 45 e4 fd ff callq 416250 0.00 : 437e0b: 85 c0 test %eax,%eax 0.00 : 437e0d: 0f 88 c2 01 00 00 js 437fd5 0.00 : 437e13: 45 85 e4 test %r12d,%r12d 0.00 : 437e16: 75 1b jne 437e33 0.00 : 437e18: 8b 3d 62 cd 25 00 mov 0x25cd62(%rip),%edi # 694b80 0.00 : 437e1e: 3b 3d 28 34 25 00 cmp 0x253428(%rip),%edi # 68b24c 0.00 : 437e24: 74 0d je 437e33 0.00 : 437e26: f6 05 6b ed 25 00 01 testb $0x1,0x25ed6b(%rip) # 696b98 0.00 : 437e2d: 0f 84 83 01 00 00 je 437fb6 0.00 : 437e33: 3b 1d 47 cd 25 00 cmp 0x25cd47(%rip),%ebx # 694b80 0.00 : 437e39: 0f 85 a6 00 00 00 jne 437ee5 0.00 : 437e3f: 8b 3d 17 34 25 00 mov 0x253417(%rip),%edi # 68b25c 0.00 : 437e45: 85 ff test %edi,%edi 0.00 : 437e47: 78 0f js 437e58 0.00 : 437e49: e8 92 e0 fd ff callq 415ee0 0.00 : 437e4e: c7 05 04 34 25 00 ff movl $0xffffffff,0x253404(%rip) # 68b25c 0.00 : 437e55: ff ff ff 0.00 : 437e58: 8b 3d fa 33 25 00 mov 0x2533fa(%rip),%edi # 68b258 0.00 : 437e5e: 85 ff test %edi,%edi 0.00 : 437e60: 0f 88 7f 00 00 00 js 437ee5 0.00 : 437e66: 4c 8d ac 24 ac 01 00 lea 0x1ac(%rsp),%r13 0.00 : 437e6d: 00 0.00 : 437e6e: eb 06 jmp 437e76 0.00 : 437e70: 8b 3d e2 33 25 00 mov 0x2533e2(%rip),%edi # 68b258 0.00 : 437e76: ba 01 00 00 00 mov $0x1,%edx 0.00 : 437e7b: 4c 89 ee mov %r13,%rsi 0.00 : 437e7e: e8 7d e2 fd ff callq 416100 0.00 : 437e83: 48 83 c0 01 add $0x1,%rax 0.00 : 437e87: 75 5c jne 437ee5 0.00 : 437e89: e8 b2 e9 fd ff callq 416840 <__errno_location@plt> 0.00 : 437e8e: 83 38 04 cmpl $0x4,(%rax) 0.00 : 437e91: 74 dd je 437e70 0.00 : 437e93: eb 50 jmp 437ee5 0.00 : 437e95: 0f 1f 00 nopl (%rax) 0.00 : 437e98: 48 63 73 08 movslq 0x8(%rbx),%rsi 0.00 : 437e9c: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 437ea0: bf f0 5b 47 00 mov $0x475bf0,%edi 0.00 : 437ea5: 31 c0 xor %eax,%eax 0.00 : 437ea7: e8 44 90 ff ff callq 430ef0 0.00 : 437eac: e9 b5 fd ff ff jmpq 437c66 0.00 : 437eb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 437eb8: 89 2d c2 cc 25 00 mov %ebp,0x25ccc2(%rip) # 694b80 0.00 : 437ebe: e9 4f fd ff ff jmpq 437c12 0.00 : 437ec3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 437ec8: 44 8b 1d b1 cc 25 00 mov 0x25ccb1(%rip),%r11d # 694b80 9.38 : 437ecf: 45 85 db test %r11d,%r11d 0.00 : 437ed2: 75 0c jne 437ee0 0.00 : 437ed4: 8b 05 72 33 25 00 mov 0x253372(%rip),%eax # 68b24c 0.00 : 437eda: 89 05 a0 cc 25 00 mov %eax,0x25cca0(%rip) # 694b80 0.00 : 437ee0: e8 5b b2 ff ff callq 433140 0.00 : 437ee5: bf 58 b2 68 00 mov $0x68b258,%edi 0.00 : 437eea: e8 21 b1 ff ff callq 433010 0.00 : 437eef: 45 85 e4 test %r12d,%r12d 0.00 : 437ef2: 0f 85 88 00 00 00 jne 437f80 0.00 : 437ef8: 8b 05 66 33 25 00 mov 0x253366(%rip),%eax # 68b264 0.00 : 437efe: 39 c3 cmp %eax,%ebx 0.00 : 437f00: 0f 85 5d fe ff ff jne 437d63 0.00 : 437f06: c7 05 54 33 25 00 01 movl $0x1,0x253354(%rip) # 68b264 0.00 : 437f0d: 00 00 00 0.00 : 437f10: e9 4e fe ff ff jmpq 437d63 0.00 : 437f15: 0f 1f 00 nopl (%rax) 0.00 : 437f18: be 02 00 00 00 mov $0x2,%esi 0.00 : 437f1d: 89 df mov %ebx,%edi 0.00 : 437f1f: e8 9c dc ff ff callq 435bc0 0.00 : 437f24: e9 10 fe ff ff jmpq 437d39 0.00 : 437f29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 437f30: 31 c0 xor %eax,%eax 0.00 : 437f32: bf 92 5a 47 00 mov $0x475a92,%edi 0.00 : 437f37: e8 a4 8b ff ff callq 430ae0 0.00 : 437f3c: e8 9f d6 ff ff callq 4355e0 0.00 : 437f41: 48 83 3d 3f cc 25 00 cmpq $0x0,0x25cc3f(%rip) # 694b88 0.00 : 437f48: 00 0.00 : 437f49: 74 05 je 437f50 0.00 : 437f4b: e8 80 fb ff ff callq 437ad0 0.00 : 437f50: e8 3b fe 00 00 callq 447d90 0.00 : 437f55: e9 35 fc ff ff jmpq 437b8f 0.00 : 437f5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437f60: 39 c5 cmp %eax,%ebp 0.00 : 437f62: 0f 8d 8e fc ff ff jge 437bf6 0.00 : 437f68: c7 05 12 33 25 00 00 movl $0x0,0x253312(%rip) # 68b284 0.00 : 437f6f: 00 00 00 0.00 : 437f72: e9 7f fc ff ff jmpq 437bf6 0.00 : 437f77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437f7e: 00 00 0.00 : 437f80: 89 1d de 32 25 00 mov %ebx,0x2532de(%rip) # 68b264 0.00 : 437f86: e9 d8 fd ff ff jmpq 437d63 0.00 : 437f8b: 48 89 00 mov %rax,(%rax) 0.00 : 437f8e: e9 2b fd ff ff jmpq 437cbe 0.00 : 437f93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 437f98: 48 8d bc 24 90 01 00 lea 0x190(%rsp),%rdi 0.00 : 437f9f: 00 0.00 : 437fa0: 31 f6 xor %esi,%esi 0.00 : 437fa2: e8 e9 e0 fd ff callq 416090 0.00 : 437fa7: 48 89 e6 mov %rsp,%rsi 0.00 : 437faa: 31 ff xor %edi,%edi 0.00 : 437fac: e8 ef df fd ff callq 415fa0 0.00 : 437fb1: e9 f7 fd ff ff jmpq 437dad 0.00 : 437fb6: 31 f6 xor %esi,%esi 0.00 : 437fb8: e8 73 cd ff ff callq 434d30 0.00 : 437fbd: 0f 1f 00 nopl (%rax) 0.00 : 437fc0: e9 6e fe ff ff jmpq 437e33 0.00 : 437fc5: e8 a6 b1 ff ff callq 433170 0.00 : 437fca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437fd0: e9 29 fe ff ff jmpq 437dfe 0.00 : 437fd5: 48 63 15 a4 cb 25 00 movslq 0x25cba4(%rip),%rdx # 694b80 0.00 : 437fdc: 48 63 f3 movslq %ebx,%rsi 0.00 : 437fdf: bf 97 5a 47 00 mov $0x475a97,%edi 0.00 : 437fe4: 31 c0 xor %eax,%eax 0.00 : 437fe6: e8 f5 8a ff ff callq 430ae0 0.00 : 437feb: e9 23 fe ff ff jmpq 437e13 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2199 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4670 : : * unwritten data. Any new pages are initialized to zeros, with pages headers : * initialized properly. : */ : static void : AdvanceXLInsertBuffer(XLogRecPtr upto, bool opportunistic) : { 0.00 : 4d4670: 55 push %rbp 0.00 : 4d4671: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4674: 41 57 push %r15 0.00 : 4d4676: 49 89 ff mov %rdi,%r15 0.00 : 4d4679: 41 56 push %r14 0.00 : 4d467b: 41 55 push %r13 0.00 : 4d467d: 41 54 push %r12 0.00 : 4d467f: 53 push %rbx 0.00 : 4d4680: 89 f3 mov %esi,%ebx : XLogRecPtr NewPageEndPtr = InvalidXLogRecPtr; : XLogRecPtr NewPageBeginPtr; : XLogPageHeader NewPage; : int npages = 0; : : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d4682: 31 f6 xor %esi,%esi : * unwritten data. Any new pages are initialized to zeros, with pages headers : * initialized properly. : */ : static void : AdvanceXLInsertBuffer(XLogRecPtr upto, bool opportunistic) : { 0.00 : 4d4684: 48 83 ec 28 sub $0x28,%rsp : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4688: 48 8b 05 09 4b 6a 00 mov 0x6a4b09(%rip),%rax # b79198 : XLogRecPtr NewPageEndPtr = InvalidXLogRecPtr; : XLogRecPtr NewPageBeginPtr; : XLogPageHeader NewPage; : int npages = 0; : : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d468f: 48 8b 3d 6a 93 6a 00 mov 0x6a936a(%rip),%rdi # b7da00 : * initialized properly. : */ : static void : AdvanceXLInsertBuffer(XLogRecPtr upto, bool opportunistic) : { : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4696: 48 89 45 b8 mov %rax,-0x48(%rbp) : XLogRecPtr NewPageEndPtr = InvalidXLogRecPtr; : XLogRecPtr NewPageBeginPtr; : XLogPageHeader NewPage; : int npages = 0; : : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d469a: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d46a1: e8 4a b4 1b 00 callq 68faf0 0.00 : 4d46a6: 84 db test %bl,%bl 0.00 : 4d46a8: 41 0f 95 c6 setne %r14b 0.00 : 4d46ac: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Now that we have the lock, check if someone initialized the page : * already. : */ : while (upto >= XLogCtl->InitializedUpTo || opportunistic) 0.00 : 4d46b0: 48 8b 0d e1 4a 6a 00 mov 0x6a4ae1(%rip),%rcx # b79198 0.00 : 4d46b7: 48 8b 91 38 01 00 00 mov 0x138(%rcx),%rdx 0.00 : 4d46be: 4c 39 fa cmp %r15,%rdx 0.00 : 4d46c1: 76 2d jbe 4d46f0 0.00 : 4d46c3: 45 84 f6 test %r14b,%r14b 0.00 : 4d46c6: 75 28 jne 4d46f0 : : XLogCtl->InitializedUpTo = NewPageEndPtr; : : npages++; : } : LWLockRelease(WALBufMappingLock); 0.00 : 4d46c8: 48 8b 3d 31 93 6a 00 mov 0x6a9331(%rip),%rdi # b7da00 : { : elog(DEBUG1, "initialized %d pages, upto %X/%X", : npages, (uint32) (NewPageEndPtr >> 32), (uint32) NewPageEndPtr); : } : #endif : } 0.00 : 4d46cf: 48 83 c4 28 add $0x28,%rsp 0.00 : 4d46d3: 5b pop %rbx 0.00 : 4d46d4: 41 5c pop %r12 0.00 : 4d46d6: 41 5d pop %r13 0.00 : 4d46d8: 41 5e pop %r14 0.00 : 4d46da: 41 5f pop %r15 0.00 : 4d46dc: c9 leaveq : : XLogCtl->InitializedUpTo = NewPageEndPtr; : : npages++; : } : LWLockRelease(WALBufMappingLock); 0.00 : 4d46dd: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d46e4: e9 b7 ac 1b 00 jmpq 68f3a0 0.00 : 4d46e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Get ending-offset of the buffer page we need to replace (this may : * be zero if the buffer hasn't been used yet). Fall through if it's : * already written out. : */ : OldPageRqstPtr = XLogCtl->xlblocks[nextidx]; 0.00 : 4d46f0: 8b 81 50 01 00 00 mov 0x150(%rcx),%eax 0.00 : 4d46f6: 48 c1 ea 0d shr $0xd,%rdx 0.00 : 4d46fa: 83 c0 01 add $0x1,%eax 0.00 : 4d46fd: 48 63 f0 movslq %eax,%rsi 0.00 : 4d4700: 48 89 d0 mov %rdx,%rax 0.00 : 4d4703: 31 d2 xor %edx,%edx 0.00 : 4d4705: 48 f7 f6 div %rsi 0.00 : 4d4708: 48 8b 81 48 01 00 00 mov 0x148(%rcx),%rax 0.00 : 4d470f: 4c 63 e2 movslq %edx,%r12 0.00 : 4d4712: 4a 8b 1c e0 mov (%rax,%r12,8),%rbx : if (LogwrtResult.Write < OldPageRqstPtr) 0.00 : 4d4716: 48 3b 1d 93 4a 6a 00 cmp 0x6a4a93(%rip),%rbx # b791b0 : /* : * Get ending-offset of the buffer page we need to replace (this may : * be zero if the buffer hasn't been used yet). Fall through if it's : * already written out. : */ : OldPageRqstPtr = XLogCtl->xlblocks[nextidx]; 0.00 : 4d471d: 4e 8d 2c e5 00 00 00 lea 0x0(,%r12,8),%r13 0.00 : 4d4724: 00 : if (LogwrtResult.Write < OldPageRqstPtr) 0.00 : 4d4725: 76 71 jbe 4d4798 : { : /* : * Nope, got work to do. If we just want to pre-initialize as much : * as we can without flushing, give up now. : */ : if (opportunistic) 0.00 : 4d4727: 45 84 f6 test %r14b,%r14b 0.00 : 4d472a: 75 9c jne 4d46c8 : break; : : /* Before waiting, get info_lck and update LogwrtResult */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d472c: 48 8d 91 08 06 00 00 lea 0x608(%rcx),%rdx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d4733: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d4738: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d473b: 84 c0 test %al,%al 0.00 : 4d473d: 0f 85 f5 00 00 00 jne 4d4838 : if (XLogCtl->LogwrtRqst.Write < OldPageRqstPtr) 0.00 : 4d4743: 48 8b 15 4e 4a 6a 00 mov 0x6a4a4e(%rip),%rdx # b79198 0.00 : 4d474a: 48 3b 9a d8 00 00 00 cmp 0xd8(%rdx),%rbx 0.00 : 4d4751: 76 07 jbe 4d475a : XLogCtl->LogwrtRqst.Write = OldPageRqstPtr; 0.00 : 4d4753: 48 89 9a d8 00 00 00 mov %rbx,0xd8(%rdx) : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d475a: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d4761: 48 89 05 48 4a 6a 00 mov %rax,0x6a4a48(%rip) # b791b0 0.00 : 4d4768: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d476f: 48 89 05 42 4a 6a 00 mov %rax,0x6a4a42(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4776: 48 8b 05 1b 4a 6a 00 mov 0x6a4a1b(%rip),%rax # b79198 0.00 : 4d477d: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : : /* : * Now that we have an up-to-date LogwrtResult value, see if we : * still need to write it or if someone else already did. : */ : if (LogwrtResult.Write < OldPageRqstPtr) 0.00 : 4d4784: 48 3b 1d 25 4a 6a 00 cmp 0x6a4a25(%rip),%rbx # b791b0 0.00 : 4d478b: 0f 87 cf 00 00 00 ja 4d4860 0.00 : 4d4791: 48 8b 0d 00 4a 6a 00 mov 0x6a4a00(%rip),%rcx # b79198 : NewPageBeginPtr = XLogCtl->InitializedUpTo; : NewPageEndPtr = NewPageBeginPtr + XLOG_BLCKSZ; : : Assert(XLogRecPtrToBufIdx(NewPageBeginPtr) == nextidx); : : NewPage = (XLogPageHeader) (XLogCtl->pages + nextidx * (Size) XLOG_BLCKSZ); 0.00 : 4d4798: 4d 89 e0 mov %r12,%r8 : : /* : * Now the next buffer slot is free and we can set it up to be the : * next output page. : */ : NewPageBeginPtr = XLogCtl->InitializedUpTo; 0.00 : 4d479b: 48 8b 91 38 01 00 00 mov 0x138(%rcx),%rdx : : /* : * Be sure to re-zero the buffer so that bytes beyond what we've : * written will look like zeroes and not valid XLOG records... : */ : MemSet((char *) NewPage, 0, XLOG_BLCKSZ); 0.00 : 4d47a2: 31 c0 xor %eax,%eax : NewPageBeginPtr = XLogCtl->InitializedUpTo; : NewPageEndPtr = NewPageBeginPtr + XLOG_BLCKSZ; : : Assert(XLogRecPtrToBufIdx(NewPageBeginPtr) == nextidx); : : NewPage = (XLogPageHeader) (XLogCtl->pages + nextidx * (Size) XLOG_BLCKSZ); 0.00 : 4d47a4: 49 c1 e0 0d shl $0xd,%r8 0.00 : 4d47a8: 4c 03 81 40 01 00 00 add 0x140(%rcx),%r8 : : /* : * Be sure to re-zero the buffer so that bytes beyond what we've : * written will look like zeroes and not valid XLOG records... : */ : MemSet((char *) NewPage, 0, XLOG_BLCKSZ); 0.00 : 4d47af: b9 00 04 00 00 mov $0x400,%ecx : /* : * Now the next buffer slot is free and we can set it up to be the : * next output page. : */ : NewPageBeginPtr = XLogCtl->InitializedUpTo; : NewPageEndPtr = NewPageBeginPtr + XLOG_BLCKSZ; 0.00 : 4d47b4: 48 8d b2 00 20 00 00 lea 0x2000(%rdx),%rsi : : /* : * Be sure to re-zero the buffer so that bytes beyond what we've : * written will look like zeroes and not valid XLOG records... : */ : MemSet((char *) NewPage, 0, XLOG_BLCKSZ); 0.00 : 4d47bb: 4c 89 c7 mov %r8,%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2199 100.00 : 4d47be: f3 48 ab rep stos %rax,%es:(%rdi) : : /* : * Fill the new page's header : */ : NewPage ->xlp_magic = XLOG_PAGE_MAGIC; 0.00 : 4d47c1: 66 41 c7 00 7f d0 movw $0xd07f,(%r8) : : /* NewPage->xlp_info = 0; */ /* done by memset */ : NewPage ->xlp_tli = ThisTimeLineID; 0.00 : 4d47c7: 8b 05 97 49 6a 00 mov 0x6a4997(%rip),%eax # b79164 : NewPage ->xlp_pageaddr = NewPageBeginPtr; 0.00 : 4d47cd: 49 89 50 08 mov %rdx,0x8(%r8) : * Fill the new page's header : */ : NewPage ->xlp_magic = XLOG_PAGE_MAGIC; : : /* NewPage->xlp_info = 0; */ /* done by memset */ : NewPage ->xlp_tli = ThisTimeLineID; 0.00 : 4d47d1: 41 89 40 04 mov %eax,0x4(%r8) : * records can be written during the backup. At the end of a backup, : * the last page will be marked as all unsafe when perhaps only part : * is unsafe, but at worst the archiver would miss the opportunity to : * compress a few records. : */ : if (!Insert->forcePageWrites) 0.00 : 4d47d5: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4d47d9: 80 b8 a0 00 00 00 00 cmpb $0x0,0xa0(%rax) 0.00 : 4d47e0: 75 06 jne 4d47e8 : NewPage ->xlp_info |= XLP_BKP_REMOVABLE; 0.00 : 4d47e2: 66 41 83 48 02 04 orw $0x4,0x2(%r8) : : /* : * If first page of an XLOG segment file, make it a long header. : */ : if ((NewPage->xlp_pageaddr % XLogSegSize) == 0) 0.00 : 4d47e8: 41 f7 40 08 ff ff ff testl $0xffffff,0x8(%r8) 0.00 : 4d47ef: 00 0.00 : 4d47f0: 75 24 jne 4d4816 : { : XLogLongPageHeader NewLongPage = (XLogLongPageHeader) NewPage; : : NewLongPage->xlp_sysid = ControlFile->system_identifier; 0.00 : 4d47f2: 48 8b 05 a7 49 6a 00 mov 0x6a49a7(%rip),%rax # b791a0 0.00 : 4d47f9: 48 8b 00 mov (%rax),%rax : NewLongPage->xlp_seg_size = XLogSegSize; : NewLongPage->xlp_xlog_blcksz = XLOG_BLCKSZ; : NewPage ->xlp_info |= XLP_LONG_HEADER; 0.00 : 4d47fc: 66 41 83 48 02 02 orw $0x2,0x2(%r8) : if ((NewPage->xlp_pageaddr % XLogSegSize) == 0) : { : XLogLongPageHeader NewLongPage = (XLogLongPageHeader) NewPage; : : NewLongPage->xlp_sysid = ControlFile->system_identifier; : NewLongPage->xlp_seg_size = XLogSegSize; 0.00 : 4d4802: 41 c7 40 20 00 00 00 movl $0x1000000,0x20(%r8) 0.00 : 4d4809: 01 : NewLongPage->xlp_xlog_blcksz = XLOG_BLCKSZ; 0.00 : 4d480a: 41 c7 40 24 00 20 00 movl $0x2000,0x24(%r8) 0.00 : 4d4811: 00 : */ : if ((NewPage->xlp_pageaddr % XLogSegSize) == 0) : { : XLogLongPageHeader NewLongPage = (XLogLongPageHeader) NewPage; : : NewLongPage->xlp_sysid = ControlFile->system_identifier; 0.00 : 4d4812: 49 89 40 18 mov %rax,0x18(%r8) : * before the xlblocks update. GetXLogBuffer() reads xlblocks without : * holding a lock. : */ : pg_write_barrier(); : : *((volatile XLogRecPtr *) &XLogCtl->xlblocks[nextidx]) = NewPageEndPtr; 0.00 : 4d4816: 48 8b 05 7b 49 6a 00 mov 0x6a497b(%rip),%rax # b79198 0.00 : 4d481d: 4c 03 a8 48 01 00 00 add 0x148(%rax),%r13 0.00 : 4d4824: 49 89 75 00 mov %rsi,0x0(%r13) : : XLogCtl->InitializedUpTo = NewPageEndPtr; 0.00 : 4d4828: 48 89 b0 38 01 00 00 mov %rsi,0x138(%rax) 0.00 : 4d482f: e9 7c fe ff ff jmpq 4d46b0 0.00 : 4d4834: 0f 1f 40 00 nopl 0x0(%rax) : */ : if (opportunistic) : break; : : /* Before waiting, get info_lck and update LogwrtResult */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4838: 48 8b 3d 59 49 6a 00 mov 0x6a4959(%rip),%rdi # b79198 0.00 : 4d483f: ba 5a 08 00 00 mov $0x85a,%edx 0.00 : 4d4844: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4849: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4850: e8 eb b7 1b 00 callq 690040 0.00 : 4d4855: e9 e9 fe ff ff jmpq 4d4743 0.00 : 4d485a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Must acquire write lock. Release WALBufMappingLock first, : * to make sure that all insertions that we need to wait for : * can finish (up to this same position). Otherwise we risk : * deadlock. : */ : LWLockRelease(WALBufMappingLock); 0.00 : 4d4860: 48 8b 3d 99 91 6a 00 mov 0x6a9199(%rip),%rdi # b7da00 0.00 : 4d4867: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d486e: e8 2d ab 1b 00 callq 68f3a0 : : WaitXLogInsertionsToFinish(OldPageRqstPtr); 0.00 : 4d4873: 48 89 df mov %rbx,%rdi 0.00 : 4d4876: e8 95 f6 ff ff callq 4d3f10 : : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); 0.00 : 4d487b: 48 8b 3d 7e 91 6a 00 mov 0x6a917e(%rip),%rdi # b7da00 0.00 : 4d4882: 31 f6 xor %esi,%esi 0.00 : 4d4884: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d488b: e8 60 b2 1b 00 callq 68faf0 : : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4890: 48 8b 15 01 49 6a 00 mov 0x6a4901(%rip),%rdx # b79198 0.00 : 4d4897: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d489e: 48 89 05 0b 49 6a 00 mov %rax,0x6a490b(%rip) # b791b0 : if (LogwrtResult.Write >= OldPageRqstPtr) 0.00 : 4d48a5: 48 3b 1d 04 49 6a 00 cmp 0x6a4904(%rip),%rbx # b791b0 : : WaitXLogInsertionsToFinish(OldPageRqstPtr); : : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); : : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d48ac: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d48b3: 48 89 05 fe 48 6a 00 mov %rax,0x6a48fe(%rip) # b791b8 : if (LogwrtResult.Write >= OldPageRqstPtr) 0.00 : 4d48ba: 76 18 jbe 4d48d4 : } : else : { : /* Have to write it ourselves */ : TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START(); : WriteRqst.Write = OldPageRqstPtr; 0.00 : 4d48bc: 48 89 5d c0 mov %rbx,-0x40(%rbp) : WriteRqst.Flush = 0; 0.00 : 4d48c0: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 4d48c7: 00 : XLogWrite(WriteRqst, false); 0.00 : 4d48c8: 31 d2 xor %edx,%edx 0.00 : 4d48ca: 48 89 df mov %rbx,%rdi 0.00 : 4d48cd: 31 f6 xor %esi,%esi 0.00 : 4d48cf: e8 8c f7 ff ff callq 4d4060 : LWLockRelease(WALWriteLock); 0.00 : 4d48d4: 48 8b 3d 25 91 6a 00 mov 0x6a9125(%rip),%rdi # b7da00 0.00 : 4d48db: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d48e2: e8 b9 aa 1b 00 callq 68f3a0 : TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE(); : } : /* Re-acquire WALBufMappingLock and retry */ : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d48e7: 48 8b 3d 12 91 6a 00 mov 0x6a9112(%rip),%rdi # b7da00 0.00 : 4d48ee: 31 f6 xor %esi,%esi 0.00 : 4d48f0: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d48f7: e8 f4 b1 1b 00 callq 68faf0 : continue; 0.00 : 4d48fc: e9 af fd ff ff jmpq 4d46b0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3246 15.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3273 15.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3393 10.53 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3275 10.53 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3511 7.89 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3373 7.89 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3229 5.26 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3246 5.26 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3317 2.63 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3229 2.63 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3273 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000555070 : : * by newline. The terminating newline or EOF marker is not included : * in the final value of line_buf. : */ : static bool : CopyReadLine(CopyState cstate) : { 0.00 : 555070: 55 push %rbp : bool result; : : resetStringInfo(&cstate->line_buf); 0.00 : 555071: 48 8d 87 98 01 00 00 lea 0x198(%rdi),%rax : * by newline. The terminating newline or EOF marker is not included : * in the final value of line_buf. : */ : static bool : CopyReadLine(CopyState cstate) : { 0.00 : 555078: 48 89 e5 mov %rsp,%rbp 0.00 : 55507b: 41 57 push %r15 0.00 : 55507d: 41 56 push %r14 0.00 : 55507f: 41 55 push %r13 0.00 : 555081: 49 89 fd mov %rdi,%r13 : bool result; : : resetStringInfo(&cstate->line_buf); 0.00 : 555084: 48 89 c7 mov %rax,%rdi : * by newline. The terminating newline or EOF marker is not included : * in the final value of line_buf. : */ : static bool : CopyReadLine(CopyState cstate) : { 0.00 : 555087: 41 54 push %r12 0.00 : 555089: 53 push %rbx 0.00 : 55508a: 48 83 ec 78 sub $0x78,%rsp : bool result; : : resetStringInfo(&cstate->line_buf); 0.00 : 55508e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 555095: e8 86 ca 07 00 callq 5d1b20 : bool in_quote = false, : last_was_esc = false; : char quotec = '\0'; : char escapec = '\0'; : : if (cstate->csv_mode) 0.00 : 55509a: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) : CopyReadLine(CopyState cstate) : { : bool result; : : resetStringInfo(&cstate->line_buf); : cstate->line_buf_valid = true; 0.00 : 55509f: 41 c6 85 b1 01 00 00 movb $0x1,0x1b1(%r13) 0.00 : 5550a6: 01 : : /* Mark that encoding conversion hasn't occurred yet */ : cstate->line_buf_converted = false; 0.00 : 5550a7: 41 c6 85 b0 01 00 00 movb $0x0,0x1b0(%r13) 0.00 : 5550ae: 00 : bool in_quote = false, : last_was_esc = false; : char quotec = '\0'; : char escapec = '\0'; : : if (cstate->csv_mode) 0.00 : 5550af: c6 85 70 ff ff ff 00 movb $0x0,-0x90(%rbp) 0.00 : 5550b6: c6 45 8f 00 movb $0x0,-0x71(%rbp) 0.00 : 5550ba: 74 2f je 5550eb : { : quotec = cstate->quote[0]; 0.00 : 5550bc: 49 8b 45 70 mov 0x70(%r13),%rax 0.00 : 5550c0: 0f b6 00 movzbl (%rax),%eax 0.00 : 5550c3: 88 45 8f mov %al,-0x71(%rbp) : escapec = cstate->escape[0]; 0.00 : 5550c6: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 5550ca: 0f b6 00 movzbl (%rax),%eax : /* ignore special escape processing if it's the same as quotec */ : if (quotec == escapec) 0.00 : 5550cd: 38 45 8f cmp %al,-0x71(%rbp) : char escapec = '\0'; : : if (cstate->csv_mode) : { : quotec = cstate->quote[0]; : escapec = cstate->escape[0]; 0.00 : 5550d0: 88 85 70 ff ff ff mov %al,-0x90(%rbp) : /* ignore special escape processing if it's the same as quotec */ : if (quotec == escapec) 0.00 : 5550d6: 0f b6 95 70 ff ff ff movzbl -0x90(%rbp),%edx 0.00 : 5550dd: b8 00 00 00 00 mov $0x0,%eax 0.00 : 5550e2: 0f 44 d0 cmove %eax,%edx 0.00 : 5550e5: 88 95 70 ff ff ff mov %dl,-0x90(%rbp) : * : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; 0.00 : 5550eb: 41 8b 9d c0 01 00 00 mov 0x1c0(%r13),%ebx : copy_buf_len = cstate->raw_buf_len; 0.00 : 5550f2: 45 8b b5 c4 01 00 00 mov 0x1c4(%r13),%r14d 0.00 : 5550f9: 45 31 ff xor %r15d,%r15d : * line_buf. : * : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; 0.00 : 5550fc: 49 8b 8d b8 01 00 00 mov 0x1b8(%r13),%rcx : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 555103: 31 c0 xor %eax,%eax : /* ignore special escape processing if it's the same as quotec */ : if (quotec == escapec) : escapec = '\0'; : } : : mblen_str[1] = '\0'; 0.00 : 555105: c6 45 c1 00 movb $0x0,-0x3f(%rbp) : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 555109: c6 45 90 00 movb $0x0,-0x70(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3229 2.63 : 55510d: c6 45 a0 00 movb $0x0,-0x60(%rbp) : * next data, so we read-ahead only as far we know we can. One : * optimization would be to read-ahead four byte here if : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) 0.00 : 555111: 44 39 f3 cmp %r14d,%ebx : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 555114: c6 45 b7 01 movb $0x1,-0x49(%rbp) : * line_buf. : * : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; 0.00 : 555118: 48 89 4d b8 mov %rcx,-0x48(%rbp) : * next data, so we read-ahead only as far we know we can. One : * optimization would be to read-ahead four byte here if : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) 0.00 : 55511c: 0f 8d f6 01 00 00 jge 555318 0.00 : 555122: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3246 15.79 : 555128: 84 c0 test %al,%al 0.00 : 55512a: 0f 85 e8 01 00 00 jne 555318 5.26 : 555130: 44 8d 63 01 lea 0x1(%rbx),%r12d 0.00 : 555134: 48 63 c3 movslq %ebx,%rax : : /* OK to fetch a character */ : prev_raw_ptr = raw_buf_ptr; : c = copy_raw_buf[raw_buf_ptr++]; : : if (cstate->csv_mode) 0.00 : 555137: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) : need_data = false; : } : : /* OK to fetch a character */ : prev_raw_ptr = raw_buf_ptr; : c = copy_raw_buf[raw_buf_ptr++]; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3273 2.63 : 55513c: 48 8b 55 b8 mov -0x48(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3273 15.79 : 555140: 0f b6 0c 02 movzbl (%rdx,%rax,1),%ecx : : if (cstate->csv_mode) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3275 10.53 : 555144: 74 6a je 5551b0 : * these characters is also the quote or escape character. : * : * Note: old-protocol does not like forced prefetch, but it's OK : * here since we cannot validly be at EOF. : */ : if (c == '\\' || c == '\r') 0.00 : 555146: 80 f9 5c cmp $0x5c,%cl 0.00 : 555149: 0f 84 11 02 00 00 je 555360 0.00 : 55514f: 80 f9 0d cmp $0xd,%cl 0.00 : 555152: 0f 84 08 02 00 00 je 555360 : * just use the char as a toggle. If they are different, we need : * to ensure that we only take account of an escape inside a : * quoted field and immediately preceding a quote char, and not : * the second in a escape-escape sequence. : */ : if (in_quote && c == escapec) 0.00 : 555158: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) 0.00 : 55515c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 555160: 74 10 je 555172 0.00 : 555162: 3a 8d 70 ff ff ff cmp -0x90(%rbp),%cl 0.00 : 555168: 75 08 jne 555172 : last_was_esc = !last_was_esc; 0.00 : 55516a: 80 7d 90 00 cmpb $0x0,-0x70(%rbp) 0.00 : 55516e: 0f 94 45 90 sete -0x70(%rbp) : if (c == quotec && !last_was_esc) 0.00 : 555172: 3a 4d 8f cmp -0x71(%rbp),%cl 0.00 : 555175: 0f 84 2d 03 00 00 je 5554a8 : in_quote = !in_quote; : if (c != escapec) 0.00 : 55517b: 3a 8d 70 ff ff ff cmp -0x90(%rbp),%cl 0.00 : 555181: 0f b6 45 90 movzbl -0x70(%rbp),%eax 0.00 : 555185: ba 00 00 00 00 mov $0x0,%edx 0.00 : 55518a: 0f 44 d0 cmove %eax,%edx : * Updating the line count for embedded CR and/or LF chars is : * necessarily a little fragile - this test is probably about the : * best we can do. (XXX it's arguable whether we should do this : * at all --- is cur_lineno a physical or logical count?) : */ : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) 0.00 : 55518d: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) : */ : if (in_quote && c == escapec) : last_was_esc = !last_was_esc; : if (c == quotec && !last_was_esc) : in_quote = !in_quote; : if (c != escapec) 0.00 : 555191: 88 55 90 mov %dl,-0x70(%rbp) : * Updating the line count for embedded CR and/or LF chars is : * necessarily a little fragile - this test is probably about the : * best we can do. (XXX it's arguable whether we should do this : * at all --- is cur_lineno a physical or logical count?) : */ : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) 0.00 : 555194: 74 1a je 5551b0 0.00 : 555196: 31 c0 xor %eax,%eax 0.00 : 555198: 41 83 7d 1c 01 cmpl $0x1,0x1c(%r13) 0.00 : 55519d: 0f be d1 movsbl %cl,%edx 0.00 : 5551a0: 0f 95 c0 setne %al 0.00 : 5551a3: 8d 44 40 0a lea 0xa(%rax,%rax,2),%eax 0.00 : 5551a7: 39 c2 cmp %eax,%edx 0.00 : 5551a9: 0f 84 49 03 00 00 je 5554f8 0.00 : 5551af: 90 nop : cstate->cur_lineno++; : } : : /* Process \r */ : if (c == '\r' && (!cstate->csv_mode || !in_quote)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3317 5.26 : 5551b0: 80 f9 0d cmp $0xd,%cl 0.00 : 5551b3: 0f 84 c7 01 00 00 je 555380 : /* If reach here, we have found the line terminator */ : break; : } : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3373 7.89 : 5551b9: 80 f9 0a cmp $0xa,%cl 0.00 : 5551bc: 0f 84 0e 02 00 00 je 5553d0 : : /* : * In CSV mode, we only recognize \. alone on a line. This is because : * \. is a valid CSV data value. : */ : if (c == '\\' && (!cstate->csv_mode || first_char_in_line)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3393 15.79 : 5551c2: 80 f9 5c cmp $0x5c,%cl 0.00 : 5551c5: 0f 85 25 01 00 00 jne 5552f0 0.00 : 5551cb: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 5551d0: 40 0f 94 c6 sete %sil 0.00 : 5551d4: 74 0a je 5551e0 0.00 : 5551d6: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5551da: 0f 84 10 01 00 00 je 5552f0 : { : char c2; : : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 5551e0: 45 39 f4 cmp %r14d,%r12d 0.00 : 5551e3: 0f 9d c0 setge %al 0.00 : 5551e6: 45 84 ff test %r15b,%r15b 0.00 : 5551e9: 0f 94 c2 sete %dl 0.00 : 5551ec: 84 c0 test %al,%al 0.00 : 5551ee: 0f 84 14 03 00 00 je 555508 0.00 : 5551f4: 84 d2 test %dl,%dl 0.00 : 5551f6: 0f 85 76 01 00 00 jne 555372 : : mblen_str[0] = c; : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(mblen - 1); : IF_NEED_REFILL_AND_EOF_BREAK(mblen - 1); 0.00 : 5551fc: 45 89 e6 mov %r12d,%r14d 0.00 : 5551ff: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 555205: 0f 1f 00 nopl (%rax) : } /* end of outer loop */ : : /* : * Transfer any still-uncopied data to line_buf. : */ : REFILL_LINEBUF; 0.00 : 555208: 41 8b 85 c0 01 00 00 mov 0x1c0(%r13),%eax 0.00 : 55520f: 44 39 f0 cmp %r14d,%eax 0.00 : 555212: 7d 22 jge 555236 0.00 : 555214: 48 63 f0 movslq %eax,%rsi 0.00 : 555217: 49 03 b5 b8 01 00 00 add 0x1b8(%r13),%rsi 0.00 : 55521e: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 555225: 44 89 f2 mov %r14d,%edx 0.00 : 555228: 29 c2 sub %eax,%edx 0.00 : 55522a: e8 c1 ca 07 00 callq 5d1cf0 0.00 : 55522f: 45 89 b5 c0 01 00 00 mov %r14d,0x1c0(%r13) : cstate->line_buf_converted = false; : : /* Parse data and transfer into line_buf */ : result = CopyReadLineText(cstate); : : if (result) 0.00 : 555236: 45 84 ff test %r15b,%r15b 0.00 : 555239: 0f 85 61 03 00 00 jne 5555a0 : { : /* : * If we didn't hit EOF, then we must have transferred the EOL marker : * to line_buf along with the data. Get rid of it. : */ : switch (cstate->eol_type) 0.00 : 55523f: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 555243: 83 f8 02 cmp $0x2,%eax 0.00 : 555246: 74 12 je 55525a 0.00 : 555248: 83 f8 03 cmp $0x3,%eax 0.00 : 55524b: 0f 84 47 04 00 00 je 555698 0.00 : 555251: 83 e8 01 sub $0x1,%eax 0.00 : 555254: 0f 85 53 03 00 00 jne 5555ad : cstate->line_buf.data[cstate->line_buf.len] = '\0'; : break; : case EOL_CR: : Assert(cstate->line_buf.len >= 1); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\r'); : cstate->line_buf.len--; 0.00 : 55525a: 41 8b 85 a0 01 00 00 mov 0x1a0(%r13),%eax : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 555261: 49 8b 95 98 01 00 00 mov 0x198(%r13),%rdx : cstate->line_buf.data[cstate->line_buf.len] = '\0'; : break; : case EOL_CR: : Assert(cstate->line_buf.len >= 1); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\r'); : cstate->line_buf.len--; 0.00 : 555268: 83 e8 01 sub $0x1,%eax 0.00 : 55526b: 41 89 85 a0 01 00 00 mov %eax,0x1a0(%r13) : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 555272: 48 98 cltq 0.00 : 555274: c6 04 02 00 movb $0x0,(%rdx,%rax,1) : break; : } : } : : /* Done reading the line. Convert it to server encoding. */ : if (cstate->need_transcoding) 0.00 : 555278: 41 80 7d 24 00 cmpb $0x0,0x24(%r13) 0.00 : 55527d: 0f 84 35 03 00 00 je 5555b8 : { : char *cvt; : : cvt = pg_any_to_server(cstate->line_buf.data, 0.00 : 555283: 41 8b 55 20 mov 0x20(%r13),%edx 0.00 : 555287: 41 8b b5 a0 01 00 00 mov 0x1a0(%r13),%esi 0.00 : 55528e: 49 8b bd 98 01 00 00 mov 0x198(%r13),%rdi 0.00 : 555295: e8 96 3f 23 00 callq 789230 : cstate->line_buf.len, : cstate->file_encoding); : if (cvt != cstate->line_buf.data) 0.00 : 55529a: 49 3b 85 98 01 00 00 cmp 0x198(%r13),%rax : /* Done reading the line. Convert it to server encoding. */ : if (cstate->need_transcoding) : { : char *cvt; : : cvt = pg_any_to_server(cstate->line_buf.data, 0.00 : 5552a1: 48 89 c3 mov %rax,%rbx : cstate->line_buf.len, : cstate->file_encoding); : if (cvt != cstate->line_buf.data) 0.00 : 5552a4: 0f 84 0e 03 00 00 je 5555b8 : { : /* transfer converted data back to line_buf */ : resetStringInfo(&cstate->line_buf); 0.00 : 5552aa: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 5552b1: e8 6a c8 07 00 callq 5d1b20 : appendBinaryStringInfo(&cstate->line_buf, cvt, strlen(cvt)); 0.00 : 5552b6: 48 89 df mov %rbx,%rdi 0.00 : 5552b9: e8 92 45 f1 ff callq 469850 0.00 : 5552be: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 5552c5: 89 c2 mov %eax,%edx 0.00 : 5552c7: 48 89 de mov %rbx,%rsi 0.00 : 5552ca: e8 21 ca 07 00 callq 5d1cf0 : pfree(cvt); 0.00 : 5552cf: 48 89 df mov %rbx,%rdi 0.00 : 5552d2: e8 a9 38 24 00 callq 798b80 0.00 : 5552d7: e9 dc 02 00 00 jmpq 5555b8 0.00 : 5552dc: 0f 1f 40 00 nopl 0x0(%rax) : /* If reach here, we have found the line terminator */ : break; : } : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) 0.00 : 5552e0: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) 0.00 : 5552e4: 0f 84 f1 00 00 00 je 5553db 0.00 : 5552ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * We only support multi-byte sequences where the first byte has the : * high-bit set, so as an optimization we can avoid this block : * entirely if it is not set. : */ : if (cstate->encoding_embeds_ascii && IS_HIGHBIT_SET(c)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3511 10.53 : 5552f0: 41 80 7d 25 00 cmpb $0x0,0x25(%r13) 0.00 : 5552f5: 0f 1f 00 nopl (%rax) 0.00 : 5552f8: 74 0c je 555306 0.00 : 5552fa: 84 c9 test %cl,%cl 0.00 : 5552fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 555300: 0f 88 fa 00 00 00 js 555400 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3229 7.89 : 555306: c6 45 b7 00 movb $0x0,-0x49(%rbp) 0.00 : 55530a: 31 c0 xor %eax,%eax 0.00 : 55530c: 44 89 e3 mov %r12d,%ebx : * next data, so we read-ahead only as far we know we can. One : * optimization would be to read-ahead four byte here if : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) 0.00 : 55530f: 44 39 f3 cmp %r14d,%ebx 0.00 : 555312: 0f 8c 10 fe ff ff jl 555128 : { : REFILL_LINEBUF; 0.00 : 555318: 41 8b 85 c0 01 00 00 mov 0x1c0(%r13),%eax 0.00 : 55531f: 39 c3 cmp %eax,%ebx 0.00 : 555321: 0f 8f 19 01 00 00 jg 555440 : : /* : * Try to read some more data. This will certainly reset : * raw_buf_index to zero, and raw_buf_ptr must go with it. : */ : if (!CopyLoadRawBuf(cstate)) 0.00 : 555327: 4c 89 ef mov %r13,%rdi 0.00 : 55532a: e8 91 fc ff ff callq 554fc0 : hit_eof = true; : raw_buf_ptr = 0; : copy_buf_len = cstate->raw_buf_len; 0.00 : 55532f: 45 8b b5 c4 01 00 00 mov 0x1c4(%r13),%r14d : : /* : * Try to read some more data. This will certainly reset : * raw_buf_index to zero, and raw_buf_ptr must go with it. : */ : if (!CopyLoadRawBuf(cstate)) 0.00 : 555336: 84 c0 test %al,%al 0.00 : 555338: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 55533e: 45 0f 44 f8 cmove %r8d,%r15d : : /* : * If we are completely out of data, break out of the loop, : * reporting EOF. : */ : if (copy_buf_len <= 0) 0.00 : 555342: 45 85 f6 test %r14d,%r14d 0.00 : 555345: 0f 8e c5 02 00 00 jle 555610 0.00 : 55534b: 31 db xor %ebx,%ebx 0.00 : 55534d: 31 c0 xor %eax,%eax 0.00 : 55534f: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 555355: e9 dd fd ff ff jmpq 555137 0.00 : 55535a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Note: old-protocol does not like forced prefetch, but it's OK : * here since we cannot validly be at EOF. : */ : if (c == '\\' || c == '\r') : { : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 555360: 45 39 f4 cmp %r14d,%r12d 0.00 : 555363: 0f 8c ef fd ff ff jl 555158 0.00 : 555369: 45 84 ff test %r15b,%r15b 0.00 : 55536c: 0f 85 e6 fd ff ff jne 555158 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 555372: 41 89 dc mov %ebx,%r12d 0.00 : 555375: 45 31 ff xor %r15d,%r15d 0.00 : 555378: b8 01 00 00 00 mov $0x1,%eax 0.00 : 55537d: eb 8d jmp 55530c 0.00 : 55537f: 90 nop : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) : cstate->cur_lineno++; : } : : /* Process \r */ : if (c == '\r' && (!cstate->csv_mode || !in_quote)) 0.00 : 555380: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 555385: 74 0a je 555391 0.00 : 555387: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) 0.00 : 55538b: 0f 85 5f ff ff ff jne 5552f0 : { : /* Check for \r\n on first line, _and_ handle \r\n. */ : if (cstate->eol_type == EOL_UNKNOWN || 0.00 : 555391: 41 8b 55 1c mov 0x1c(%r13),%edx 0.00 : 555395: 85 d2 test %edx,%edx 0.00 : 555397: 0f 84 d3 00 00 00 je 555470 0.00 : 55539d: 83 fa 03 cmp $0x3,%edx 0.00 : 5553a0: 0f 84 ca 00 00 00 je 555470 : * \n, so don't consume the peeked character : */ : cstate->eol_type = EOL_CR; : } : } : else if (cstate->eol_type == EOL_NL) 0.00 : 5553a6: 45 31 ff xor %r15d,%r15d 0.00 : 5553a9: 83 ea 01 sub $0x1,%edx 0.00 : 5553ac: 45 89 e6 mov %r12d,%r14d 0.00 : 5553af: 0f 85 53 fe ff ff jne 555208 : ereport(ERROR, 0.00 : 5553b5: 45 31 c0 xor %r8d,%r8d 0.00 : 5553b8: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 5553bd: ba 27 0d 00 00 mov $0xd27,%edx 0.00 : 5553c2: e9 e9 03 00 00 jmpq 5557b0 0.00 : 5553c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5553ce: 00 00 : /* If reach here, we have found the line terminator */ : break; : } : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) 0.00 : 5553d0: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 5553d5: 0f 85 05 ff ff ff jne 5552e0 : { : if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL) 0.00 : 5553db: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5553df: 83 e8 02 sub $0x2,%eax 0.00 : 5553e2: 83 f8 01 cmp $0x1,%eax 0.00 : 5553e5: 0f 86 45 03 00 00 jbe 555730 : errmsg("literal newline found in data") : : errmsg("unquoted newline found in data"), : !cstate->csv_mode ? : errhint("Use \"\\n\" to represent newline.") : : errhint("Use quoted CSV field to represent newline."))); : cstate->eol_type = EOL_NL; /* in case not set yet */ 0.00 : 5553eb: 41 c7 45 1c 01 00 00 movl $0x1,0x1c(%r13) 0.00 : 5553f2: 00 0.00 : 5553f3: 45 89 e6 mov %r12d,%r14d 0.00 : 5553f6: 45 31 ff xor %r15d,%r15d 0.00 : 5553f9: e9 0a fe ff ff jmpq 555208 0.00 : 5553fe: 66 90 xchg %ax,%ax : { : int mblen; : : mblen_str[0] = c; : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); 0.00 : 555400: 41 8b 7d 20 mov 0x20(%r13),%edi 0.00 : 555404: 48 8d 75 c0 lea -0x40(%rbp),%rsi : */ : if (cstate->encoding_embeds_ascii && IS_HIGHBIT_SET(c)) : { : int mblen; : : mblen_str[0] = c; 0.00 : 555408: 88 4d c0 mov %cl,-0x40(%rbp) : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); 0.00 : 55540b: e8 20 5e 23 00 callq 78b230 : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(mblen - 1); 0.00 : 555410: 8d 14 18 lea (%rax,%rbx,1),%edx 0.00 : 555413: 41 39 d6 cmp %edx,%r14d 0.00 : 555416: 0f 8f ac 00 00 00 jg 5554c8 0.00 : 55541c: 45 84 ff test %r15b,%r15b 0.00 : 55541f: 0f 84 4d ff ff ff je 555372 : IF_NEED_REFILL_AND_EOF_BREAK(mblen - 1); 0.00 : 555425: 83 e8 01 sub $0x1,%eax 0.00 : 555428: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 55542e: 0f 85 d4 fd ff ff jne 555208 0.00 : 555434: e9 c3 fd ff ff jmpq 5551fc 0.00 : 555439: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) : { : REFILL_LINEBUF; 0.00 : 555440: 48 63 f0 movslq %eax,%rsi 0.00 : 555443: 49 03 b5 b8 01 00 00 add 0x1b8(%r13),%rsi 0.00 : 55544a: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 555451: 89 da mov %ebx,%edx 0.00 : 555453: 29 c2 sub %eax,%edx 0.00 : 555455: e8 96 c8 07 00 callq 5d1cf0 0.00 : 55545a: 41 89 9d c0 01 00 00 mov %ebx,0x1c0(%r13) 0.00 : 555461: e9 c1 fe ff ff jmpq 555327 0.00 : 555466: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55546d: 00 00 00 : * If need more data, go back to loop top to load it. : * : * Note that if we are at EOF, c will wind up as '\0' because : * of the guaranteed pad of raw_buf. : */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 555470: 45 39 f4 cmp %r14d,%r12d 0.00 : 555473: 7d 6b jge 5554e0 : : /* get next char */ : c = copy_raw_buf[raw_buf_ptr]; : : if (c == '\n') 0.00 : 555475: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 555479: 49 63 c4 movslq %r12d,%rax 0.00 : 55547c: 80 3c 01 0a cmpb $0xa,(%rcx,%rax,1) 0.00 : 555480: 0f 84 35 02 00 00 je 5556bb : cstate->eol_type = EOL_CRNL; /* in case not set yet */ : } : else : { : /* found \r, but no \n */ : if (cstate->eol_type == EOL_CRNL) 0.00 : 555486: 83 fa 03 cmp $0x3,%edx 0.00 : 555489: 0f 84 15 03 00 00 je 5557a4 : : /* : * if we got here, it is the first line and we didn't find : * \n, so don't consume the peeked character : */ : cstate->eol_type = EOL_CR; 0.00 : 55548f: 41 c7 45 1c 02 00 00 movl $0x2,0x1c(%r13) 0.00 : 555496: 00 0.00 : 555497: 45 89 e6 mov %r12d,%r14d 0.00 : 55549a: 45 31 ff xor %r15d,%r15d 0.00 : 55549d: e9 66 fd ff ff jmpq 555208 0.00 : 5554a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * the second in a escape-escape sequence. : */ : if (in_quote && c == escapec) : last_was_esc = !last_was_esc; : if (c == quotec && !last_was_esc) : in_quote = !in_quote; 0.00 : 5554a8: 0f b6 45 a0 movzbl -0x60(%rbp),%eax 0.00 : 5554ac: 0f b6 55 a0 movzbl -0x60(%rbp),%edx 0.00 : 5554b0: 83 f0 01 xor $0x1,%eax 0.00 : 5554b3: 80 7d 90 00 cmpb $0x0,-0x70(%rbp) 0.00 : 5554b7: 0f 44 d0 cmove %eax,%edx 0.00 : 5554ba: 88 55 a0 mov %dl,-0x60(%rbp) 0.00 : 5554bd: e9 b9 fc ff ff jmpq 55517b 0.00 : 5554c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : mblen_str[0] = c; : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(mblen - 1); : IF_NEED_REFILL_AND_EOF_BREAK(mblen - 1); 0.00 : 5554c8: 41 89 d4 mov %edx,%r12d 0.00 : 5554cb: c6 45 b7 00 movb $0x0,-0x49(%rbp) 0.00 : 5554cf: 31 c0 xor %eax,%eax 0.00 : 5554d1: e9 36 fe ff ff jmpq 55530c 0.00 : 5554d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5554dd: 00 00 00 : * If need more data, go back to loop top to load it. : * : * Note that if we are at EOF, c will wind up as '\0' because : * of the guaranteed pad of raw_buf. : */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 5554e0: 45 84 ff test %r15b,%r15b 0.00 : 5554e3: 75 90 jne 555475 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 5554e5: 41 89 dc mov %ebx,%r12d 0.00 : 5554e8: 45 31 ff xor %r15d,%r15d 0.00 : 5554eb: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5554f0: e9 17 fe ff ff jmpq 55530c 0.00 : 5554f5: 0f 1f 00 nopl (%rax) : * necessarily a little fragile - this test is probably about the : * best we can do. (XXX it's arguable whether we should do this : * at all --- is cur_lineno a physical or logical count?) : */ : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) : cstate->cur_lineno++; 0.00 : 5554f8: 41 83 85 d8 00 00 00 addl $0x1,0xd8(%r13) 0.00 : 5554ff: 01 0.00 : 555500: e9 ab fc ff ff jmpq 5551b0 0.00 : 555505: 0f 1f 00 nopl (%rax) : * through and continue processing for file encoding. : * ----- : */ : c2 = copy_raw_buf[raw_buf_ptr]; : : if (c2 == '.') 0.00 : 555508: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 55550c: 49 63 c4 movslq %r12d,%rax 0.00 : 55550f: 41 80 3c 00 2e cmpb $0x2e,(%r8,%rax,1) 0.00 : 555514: 74 12 je 555528 : * literal backslash followed by a period. In CSV mode, : * backslashes are not special, so we want to process the : * character after the backslash just like a normal character, : * so we don't increment in those cases. : */ : raw_buf_ptr++; 0.00 : 555516: 40 80 fe 01 cmp $0x1,%sil 0.00 : 55551a: 41 83 dc ff sbb $0xffffffff,%r12d 0.00 : 55551e: e9 e3 fd ff ff jmpq 555306 0.00 : 555523: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * Note: if we loop back for more data here, it does not : * matter that the CSV state change checks are re-executed; we : * will come back here with no important state changed. : */ : if (cstate->eol_type == EOL_CRNL) 0.00 : 555528: 41 8b 7d 1c mov 0x1c(%r13),%edi : */ : c2 = copy_raw_buf[raw_buf_ptr]; : : if (c2 == '.') : { : raw_buf_ptr++; /* consume the '.' */ 0.00 : 55552c: 41 8d 4c 24 01 lea 0x1(%r12),%ecx : /* : * Note: if we loop back for more data here, it does not : * matter that the CSV state change checks are re-executed; we : * will come back here with no important state changed. : */ : if (cstate->eol_type == EOL_CRNL) 0.00 : 555531: 83 ff 03 cmp $0x3,%edi 0.00 : 555534: 0f 84 e4 00 00 00 je 55561e : NO_END_OF_COPY_GOTO; : } : } : : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 55553a: 84 d2 test %dl,%dl 0.00 : 55553c: 0f 85 b2 00 00 00 jne 5555f4 : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; 0.00 : 555542: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 555546: 48 63 c1 movslq %ecx,%rax 0.00 : 555549: 44 8d 41 01 lea 0x1(%rcx),%r8d 0.00 : 55554d: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax : : if (c2 != '\r' && c2 != '\n') 0.00 : 555551: 3c 0d cmp $0xd,%al 0.00 : 555553: 0f 95 c2 setne %dl 0.00 : 555556: 3c 0a cmp $0xa,%al 0.00 : 555558: 0f 95 c0 setne %al 0.00 : 55555b: 84 d2 test %dl,%dl 0.00 : 55555d: 74 08 je 555567 0.00 : 55555f: 84 c0 test %al,%al 0.00 : 555561: 0f 85 f9 00 00 00 jne 555660 : errmsg("end-of-copy marker corrupt"))); : else : NO_END_OF_COPY_GOTO; : } : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || 0.00 : 555567: 83 ff 01 cmp $0x1,%edi 0.00 : 55556a: 0f 84 cc 02 00 00 je 55583c 0.00 : 555570: 83 ff 03 cmp $0x3,%edi 0.00 : 555573: 0f 84 c3 02 00 00 je 55583c 0.00 : 555579: 83 ff 02 cmp $0x2,%edi 0.00 : 55557c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 555580: 0f 84 fd 02 00 00 je 555883 : : /* : * Transfer only the data before the \. into line_buf, then : * discard the data and the \. sequence. : */ : if (prev_raw_ptr > cstate->raw_buf_index) 0.00 : 555586: 41 8b 85 c0 01 00 00 mov 0x1c0(%r13),%eax 0.00 : 55558d: 39 d8 cmp %ebx,%eax 0.00 : 55558f: 0f 8c c1 02 00 00 jl 555856 : appendBinaryStringInfo(&cstate->line_buf, : cstate->raw_buf + cstate->raw_buf_index, : prev_raw_ptr - cstate->raw_buf_index); : cstate->raw_buf_index = raw_buf_ptr; 0.00 : 555595: 45 89 85 c0 01 00 00 mov %r8d,0x1c0(%r13) 0.00 : 55559c: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Reached EOF. In protocol version 3, we should ignore anything : * after \. up to the protocol end of copy data. (XXX maybe better : * not to treat \. as special?) : */ : if (cstate->copy_dest == COPY_NEW_FE) 0.00 : 5555a0: 41 83 7d 00 02 cmpl $0x2,0x0(%r13) 0.00 : 5555a5: 74 31 je 5555d8 : case EOL_CRNL: : Assert(cstate->line_buf.len >= 2); : Assert(cstate->line_buf.data[cstate->line_buf.len - 2] == '\r'); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\n'); : cstate->line_buf.len -= 2; : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 5555a7: 41 bf 01 00 00 00 mov $0x1,%r15d : break; : } : } : : /* Done reading the line. Convert it to server encoding. */ : if (cstate->need_transcoding) 0.00 : 5555ad: 41 80 7d 24 00 cmpb $0x0,0x24(%r13) 0.00 : 5555b2: 0f 85 cb fc ff ff jne 555283 : pfree(cvt); : } : } : : /* Now it's safe to use the buffer in error messages */ : cstate->line_buf_converted = true; 0.00 : 5555b8: 41 c6 85 b0 01 00 00 movb $0x1,0x1b0(%r13) 0.00 : 5555bf: 01 : : return result; : } 0.00 : 5555c0: 48 83 c4 78 add $0x78,%rsp 0.00 : 5555c4: 44 89 f8 mov %r15d,%eax 0.00 : 5555c7: 5b pop %rbx 0.00 : 5555c8: 41 5c pop %r12 0.00 : 5555ca: 41 5d pop %r13 0.00 : 5555cc: 41 5e pop %r14 0.00 : 5555ce: 41 5f pop %r15 0.00 : 5555d0: c9 leaveq 0.00 : 5555d1: c3 retq 0.00 : 5555d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : if (cstate->copy_dest == COPY_NEW_FE) : { : do : { : cstate->raw_buf_index = cstate->raw_buf_len; 0.00 : 5555d8: 41 8b 85 c4 01 00 00 mov 0x1c4(%r13),%eax : } while (CopyLoadRawBuf(cstate)); 0.00 : 5555df: 4c 89 ef mov %r13,%rdi : */ : if (cstate->copy_dest == COPY_NEW_FE) : { : do : { : cstate->raw_buf_index = cstate->raw_buf_len; 0.00 : 5555e2: 41 89 85 c0 01 00 00 mov %eax,0x1c0(%r13) : } while (CopyLoadRawBuf(cstate)); 0.00 : 5555e9: e8 d2 f9 ff ff callq 554fc0 0.00 : 5555ee: 84 c0 test %al,%al 0.00 : 5555f0: 75 e6 jne 5555d8 0.00 : 5555f2: eb b3 jmp 5555a7 : NO_END_OF_COPY_GOTO; : } : } : : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 5555f4: 41 39 ce cmp %ecx,%r14d 0.00 : 5555f7: 90 nop 0.00 : 5555f8: 0f 8f 44 ff ff ff jg 555542 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 5555fe: 41 89 dc mov %ebx,%r12d 0.00 : 555601: 45 31 ff xor %r15d,%r15d 0.00 : 555604: b8 01 00 00 00 mov $0x1,%eax 0.00 : 555609: e9 fe fc ff ff jmpq 55530c 0.00 : 55560e: 66 90 xchg %ax,%ax : : /* : * If we are completely out of data, break out of the loop, : * reporting EOF. : */ : if (copy_buf_len <= 0) 0.00 : 555610: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 555616: 45 31 f6 xor %r14d,%r14d 0.00 : 555619: e9 ea fb ff ff jmpq 555208 : * will come back here with no important state changed. : */ : if (cstate->eol_type == EOL_CRNL) : { : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 55561e: 84 d2 test %dl,%dl 0.00 : 555620: 74 09 je 55562b 0.00 : 555622: 41 39 ce cmp %ecx,%r14d 0.00 : 555625: 0f 8e 47 fd ff ff jle 555372 : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; 0.00 : 55562b: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 55562f: 48 63 c1 movslq %ecx,%rax 0.00 : 555632: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax : : if (c2 == '\n') 0.00 : 555637: 3c 0a cmp $0xa,%al 0.00 : 555639: 0f 84 91 00 00 00 je 5556d0 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("end-of-copy marker does not match previous newline style"))); : else : NO_END_OF_COPY_GOTO; : } : else if (c2 != '\r') 0.00 : 55563f: 3c 0d cmp $0xd,%al 0.00 : 555641: 0f 84 e1 00 00 00 je 555728 : { : if (!cstate->csv_mode) 0.00 : 555647: 40 84 f6 test %sil,%sil 0.00 : 55564a: 0f 84 b6 fc ff ff je 555306 : ereport(ERROR, 0.00 : 555650: 45 31 c0 xor %r8d,%r8d 0.00 : 555653: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 555658: ba 6e 0d 00 00 mov $0xd6e,%edx 0.00 : 55565d: eb 17 jmp 555676 0.00 : 55565f: 90 nop : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; : : if (c2 != '\r' && c2 != '\n') : { : if (!cstate->csv_mode) 0.00 : 555660: 40 84 f6 test %sil,%sil 0.00 : 555663: 0f 84 9d fc ff ff je 555306 : ereport(ERROR, 0.00 : 555669: 45 31 c0 xor %r8d,%r8d 0.00 : 55566c: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 555671: ba 7e 0d 00 00 mov $0xd7e,%edx 0.00 : 555676: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55567b: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555680: e8 3b 54 22 00 callq 77aac0 0.00 : 555685: 84 c0 test %al,%al 0.00 : 555687: bf 64 89 87 00 mov $0x878964,%edi 0.00 : 55568c: 75 70 jne 5556fe : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || : (cstate->eol_type == EOL_CRNL && c2 != '\n') || : (cstate->eol_type == EOL_CR && c2 != '\r')) : { : ereport(ERROR, 0.00 : 55568e: e8 3d 3e f1 ff callq 4694d0 0.00 : 555693: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : break; : case EOL_CRNL: : Assert(cstate->line_buf.len >= 2); : Assert(cstate->line_buf.data[cstate->line_buf.len - 2] == '\r'); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\n'); : cstate->line_buf.len -= 2; 0.00 : 555698: 41 8b 85 a0 01 00 00 mov 0x1a0(%r13),%eax : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 55569f: 49 8b 95 98 01 00 00 mov 0x198(%r13),%rdx : break; : case EOL_CRNL: : Assert(cstate->line_buf.len >= 2); : Assert(cstate->line_buf.data[cstate->line_buf.len - 2] == '\r'); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\n'); : cstate->line_buf.len -= 2; 0.00 : 5556a6: 83 e8 02 sub $0x2,%eax 0.00 : 5556a9: 41 89 85 a0 01 00 00 mov %eax,0x1a0(%r13) : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 5556b0: 48 98 cltq 0.00 : 5556b2: c6 04 02 00 movb $0x0,(%rdx,%rax,1) 0.00 : 5556b6: e9 f2 fe ff ff jmpq 5555ad : /* get next char */ : c = copy_raw_buf[raw_buf_ptr]; : : if (c == '\n') : { : raw_buf_ptr++; /* eat newline */ 0.00 : 5556bb: 45 8d 74 24 01 lea 0x1(%r12),%r14d : cstate->eol_type = EOL_CRNL; /* in case not set yet */ 0.00 : 5556c0: 41 c7 45 1c 03 00 00 movl $0x3,0x1c(%r13) 0.00 : 5556c7: 00 0.00 : 5556c8: 45 31 ff xor %r15d,%r15d 0.00 : 5556cb: e9 38 fb ff ff jmpq 555208 : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; : : if (c2 == '\n') : { : if (!cstate->csv_mode) 0.00 : 5556d0: 40 84 f6 test %sil,%sil 0.00 : 5556d3: 0f 84 2d fc ff ff je 555306 : ereport(ERROR, 0.00 : 5556d9: 45 31 c0 xor %r8d,%r8d 0.00 : 5556dc: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 5556e1: ba 65 0d 00 00 mov $0xd65,%edx : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || : (cstate->eol_type == EOL_CRNL && c2 != '\n') || : (cstate->eol_type == EOL_CR && c2 != '\r')) : { : ereport(ERROR, 0.00 : 5556e6: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5556eb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5556f0: e8 cb 53 22 00 callq 77aac0 0.00 : 5556f5: 84 c0 test %al,%al 0.00 : 5556f7: 74 95 je 55568e 0.00 : 5556f9: bf 98 8d 87 00 mov $0x878d98,%edi 0.00 : 5556fe: 31 c0 xor %eax,%eax 0.00 : 555700: e8 9b 71 22 00 callq 77c8a0 0.00 : 555705: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 55570a: 89 c3 mov %eax,%ebx 0.00 : 55570c: e8 3f 76 22 00 callq 77cd50 0.00 : 555711: 89 de mov %ebx,%esi 0.00 : 555713: 89 c7 mov %eax,%edi 0.00 : 555715: 31 c0 xor %eax,%eax 0.00 : 555717: e8 c4 4e 22 00 callq 77a5e0 0.00 : 55571c: e9 6d ff ff ff jmpq 55568e 0.00 : 555721: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (cstate->eol_type == EOL_CRNL) : { : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; 0.00 : 555728: 83 c1 01 add $0x1,%ecx 0.00 : 55572b: e9 0a fe ff ff jmpq 55553a : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) : { : if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL) : ereport(ERROR, 0.00 : 555730: 45 31 c0 xor %r8d,%r8d 0.00 : 555733: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 555738: ba 37 0d 00 00 mov $0xd37,%edx 0.00 : 55573d: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555742: bf 14 00 00 00 mov $0x14,%edi 0.00 : 555747: e8 74 53 22 00 callq 77aac0 0.00 : 55574c: 84 c0 test %al,%al 0.00 : 55574e: 0f 84 3a ff ff ff je 55568e 0.00 : 555754: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 555759: 0f 85 c9 00 00 00 jne 555828 0.00 : 55575f: bf 28 8d 87 00 mov $0x878d28,%edi 0.00 : 555764: 31 c0 xor %eax,%eax 0.00 : 555766: e8 35 65 22 00 callq 77bca0 0.00 : 55576b: 41 89 c4 mov %eax,%r12d 0.00 : 55576e: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 555773: 0f 85 9c 00 00 00 jne 555815 0.00 : 555779: bf 46 89 87 00 mov $0x878946,%edi 0.00 : 55577e: 31 c0 xor %eax,%eax 0.00 : 555780: e8 1b 71 22 00 callq 77c8a0 0.00 : 555785: 89 c3 mov %eax,%ebx 0.00 : 555787: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 55578c: e8 bf 75 22 00 callq 77cd50 0.00 : 555791: 44 89 e2 mov %r12d,%edx 0.00 : 555794: 89 c7 mov %eax,%edi 0.00 : 555796: 89 de mov %ebx,%esi 0.00 : 555798: 31 c0 xor %eax,%eax 0.00 : 55579a: e8 41 4e 22 00 callq 77a5e0 0.00 : 55579f: e9 ea fe ff ff jmpq 55568e : } : else : { : /* found \r, but no \n */ : if (cstate->eol_type == EOL_CRNL) : ereport(ERROR, 0.00 : 5557a4: 45 31 c0 xor %r8d,%r8d 0.00 : 5557a7: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 5557ac: 66 ba 16 0d mov $0xd16,%dx : */ : cstate->eol_type = EOL_CR; : } : } : else if (cstate->eol_type == EOL_NL) : ereport(ERROR, 0.00 : 5557b0: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5557b5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5557ba: e8 01 53 22 00 callq 77aac0 0.00 : 5557bf: 84 c0 test %al,%al 0.00 : 5557c1: 0f 84 c7 fe ff ff je 55568e 0.00 : 5557c7: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 5557cc: 75 36 jne 555804 0.00 : 5557ce: bf 78 8c 87 00 mov $0x878c78,%edi 0.00 : 5557d3: 31 c0 xor %eax,%eax 0.00 : 5557d5: e8 c6 64 22 00 callq 77bca0 0.00 : 5557da: 41 89 c4 mov %eax,%r12d 0.00 : 5557dd: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 5557e2: 75 10 jne 5557f4 0.00 : 5557e4: bf d8 8c 87 00 mov $0x878cd8,%edi 0.00 : 5557e9: 31 c0 xor %eax,%eax 0.00 : 5557eb: e8 b0 70 22 00 callq 77c8a0 0.00 : 5557f0: 89 c3 mov %eax,%ebx 0.00 : 5557f2: eb 93 jmp 555787 0.00 : 5557f4: bf 00 8d 87 00 mov $0x878d00,%edi 0.00 : 5557f9: 31 c0 xor %eax,%eax 0.00 : 5557fb: e8 a0 70 22 00 callq 77c8a0 0.00 : 555800: 89 c3 mov %eax,%ebx 0.00 : 555802: eb 83 jmp 555787 0.00 : 555804: bf a0 8c 87 00 mov $0x878ca0,%edi 0.00 : 555809: 31 c0 xor %eax,%eax 0.00 : 55580b: e8 90 64 22 00 callq 77bca0 0.00 : 555810: 41 89 c4 mov %eax,%r12d 0.00 : 555813: eb c8 jmp 5557dd : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) : { : if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL) : ereport(ERROR, 0.00 : 555815: bf 78 8d 87 00 mov $0x878d78,%edi 0.00 : 55581a: 31 c0 xor %eax,%eax 0.00 : 55581c: e8 7f 70 22 00 callq 77c8a0 0.00 : 555821: 89 c3 mov %eax,%ebx 0.00 : 555823: e9 5f ff ff ff jmpq 555787 0.00 : 555828: bf 48 8d 87 00 mov $0x878d48,%edi 0.00 : 55582d: 31 c0 xor %eax,%eax 0.00 : 55582f: e8 6c 64 22 00 callq 77bca0 0.00 : 555834: 41 89 c4 mov %eax,%r12d 0.00 : 555837: e9 32 ff ff ff jmpq 55576e : errmsg("end-of-copy marker corrupt"))); : else : NO_END_OF_COPY_GOTO; : } : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || 0.00 : 55583c: 84 c0 test %al,%al 0.00 : 55583e: 0f 84 35 fd ff ff je 555579 : (cstate->eol_type == EOL_CRNL && c2 != '\n') || : (cstate->eol_type == EOL_CR && c2 != '\r')) : { : ereport(ERROR, 0.00 : 555844: 45 31 c0 xor %r8d,%r8d 0.00 : 555847: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 55584c: ba 89 0d 00 00 mov $0xd89,%edx 0.00 : 555851: e9 90 fe ff ff jmpq 5556e6 : /* : * Transfer only the data before the \. into line_buf, then : * discard the data and the \. sequence. : */ : if (prev_raw_ptr > cstate->raw_buf_index) : appendBinaryStringInfo(&cstate->line_buf, 0.00 : 555856: 48 63 f0 movslq %eax,%rsi 0.00 : 555859: 49 03 b5 b8 01 00 00 add 0x1b8(%r13),%rsi 0.00 : 555860: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 555867: 29 c3 sub %eax,%ebx 0.00 : 555869: 44 89 85 60 ff ff ff mov %r8d,-0xa0(%rbp) 0.00 : 555870: 89 da mov %ebx,%edx 0.00 : 555872: e8 79 c4 07 00 callq 5d1cf0 0.00 : 555877: 44 8b 85 60 ff ff ff mov -0xa0(%rbp),%r8d 0.00 : 55587e: e9 12 fd ff ff jmpq 555595 : errmsg("end-of-copy marker corrupt"))); : else : NO_END_OF_COPY_GOTO; : } : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || 0.00 : 555883: 84 d2 test %dl,%dl 0.00 : 555885: 0f 84 fb fc ff ff je 555586 0.00 : 55588b: eb b7 jmp 555844 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 42.55 ??:0 23.40 ??:0 21.28 ??:0 4.26 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016660 : ??:0 21.28 : 16660: 8a 07 mov (%rdi),%al 42.55 : 16662: 3a 06 cmp (%rsi),%al ??:0 2.13 : 16664: 75 0d jne 16673 ??:0 23.40 : 16666: 48 ff c7 inc %rdi 0.00 : 16669: 48 ff c6 inc %rsi ??:0 2.13 : 1666c: 84 c0 test %al,%al 0.00 : 1666e: 75 f0 jne 16660 0.00 : 16670: 31 c0 xor %eax,%eax 2.13 : 16672: c3 retq 4.26 : 16673: b8 01 00 00 00 mov $0x1,%eax 2.13 : 16678: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 1667d: 0f 42 c1 cmovb %ecx,%eax Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 22.92 ??:0 20.83 ??:0 8.33 ??:0 8.33 ??:0 6.25 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000066a0 : ??:0 37.50 : 66a0: 48 83 ec 68 sub $0x68,%rsp 0.00 : 66d4: 4c 89 rex.X insb (%dx),%es:(%rdi) 0.00 : 66d6: 64 24 sub %ecx,%eax 0.00 : 66d8: 48 4c 89 cmp $0x13,%eax 0.00 : 66db: 6c 24 50 41 89 cc jle 67e8 0.00 : 66e1: 4c 89 74 movslq %ecx,%rbp 0.00 : 66e4: 24 58 4c 89 7c 24 60 add 0xe0(%rdx),%rbp 0.00 : 66eb: 49 89 fe test %rbp,%rbp 0.00 : 66ee: 48 89 5c 24 38 48 je 6808 ??:0 2.08 : 66f4: 89 6c 24 40 movzbl 0xc(%rbp),%eax 2.08 : 66f8: 49 89 d5 shr $0x4,%al 0.00 : 66fb: 8b 5a 68 movzbl %al,%eax 4.17 : 66fe: 45 89 cf shl $0x2,%eax 0.00 : 6701: 89 d8 2b cmp $0x13,%eax 0.00 : 6704: 42 6c 29 c8 83 f8 jbe 67a0 0.00 : 670a: 13 0f 8e sub %r12d,%ebx 0.00 : 670d: 07 01 cmp %eax,%ebx 0.00 : 670f: 00 00 48 63 e9 48 jb 67a0 0.00 : 6715: 03 aa e0 00 00 00 48 mov 0x758(%r14),%edx ??:0 22.92 : 671c: 85 ed test %edx,%edx 0.00 : 671e: 0f 84 je 6758 0.00 : 6720: 14 01 00 00 mov 0x70(%rsp),%eax 0.00 : 6724: 0f b6 test %eax,%eax 0.00 : 6726: 45 0c jne 6758 0.00 : 6728: c0 e8 04 0f movzbl %r15b,%ebx 0.00 : 672c: b6 c0 c1 movzwl %bx,%eax ??:0 2.08 : 672f: e0 02 83 f8 13 0f 86 mov 0x0(,%rax,8),%r8 0.00 : 6736: 96 4.17 : 6737: 00 00 xor %eax,%eax 0.00 : 6739: 00 44 29 test %r8,%r8 0.00 : 673c: e3 39 je 674f 0.00 : 673e: c3 0f 82 8b 00 mov $0x6,%ecx 0.00 : 6743: 00 00 41 mov %r12d,%edx 0.00 : 6746: 8b 96 xor %esi,%esi 0.00 : 6748: 58 07 00 mov %r13,%rdi 0.00 : 674b: 00 85 d2 74 callq *0x8(%r8) 2.08 : 674f: 38 8b 44 test %ax,%ax 0.00 : 6752: 24 70 85 c0 75 30 jne 6870 0.00 : 6758: 41 0f b6 df movzbl 0xd(%rbp),%eax 2.08 : 675c: 0f b7 c3 4c 8b mov $0x1,%edx 0.00 : 6761: 04 c5 00 and $0x37,%eax 2.08 : 6764: 00 00 00 31 c0 4d 85 cmpb $0x0,0x0(%rax) ??:0 8.33 : 676b: c0 74 jne 67c0 0.00 : 676d: 11 b9 06 00 00 00 44 mov 0x75c(%r14),%eax 0.00 : 6774: 89 e2 31 cmp $0x6,%eax 0.00 : 6777: f6 4c je 6780 0.00 : 6779: 89 ef 41 ff 50 cmp $0xff,%eax 0.00 : 677e: 08 66 jne 67bb 0.00 : 6780: 85 c0 0f 85 18 callq 6785 0.00 : 6785: 01 00 test %eax,%eax 0.00 : 6787: 00 0f je 67bb 0.00 : 6789: b6 45 0d ba movzbl %r15b,%edi 0.00 : 678d: 01 00 00 00 83 e0 37 movq $0x0,(%rsp) 0.00 : 6794: 80 0.00 : 6795: b8 00 00 00 00 jmpq 6851 0.00 : 679a: 00 75 53 41 8b 86 nopw 0x0(%rax,%rax,1) 0.00 : 67a0: 5c 07 00 00 83 f8 06 mov 0x75c(%r14),%eax 0.00 : 67a7: 74 07 3d cmp $0x6,%eax 0.00 : 67aa: ff 00 00 00 75 3b je 6838 0.00 : 67b0: e8 00 00 00 00 cmp $0xff,%eax 0.00 : 67b5: 85 c0 74 32 41 0f je 6838 0.00 : 67bb: b6 ff 48 c7 04 mov $0xffffffff,%edx 6.25 : 67c0: 24 00 mov %edx,%eax ??:0 4.17 : 67c2: 00 00 00 e9 b7 mov 0x38(%rsp),%rbx 0.00 : 67c7: 00 00 00 66 0f mov 0x40(%rsp),%rbp 0.00 : 67cc: 1f 44 00 00 41 mov 0x48(%rsp),%r12 0.00 : 67d1: 8b 86 5c 07 00 mov 0x50(%rsp),%r13 0.00 : 67d6: 00 83 f8 06 0f mov 0x58(%rsp),%r14 0.00 : 67db: 84 88 00 00 00 mov 0x60(%rsp),%r15 0.00 : 67e0: 3d ff 00 00 add $0x68,%rsp 0.00 : 67e4: 00 retq 0.00 : 67e5: 0f 84 7d nopl (%rax) 0.00 : 67e8: 00 00 00 ba ff lea 0x10(%rsp),%rbp 0.00 : 67ed: ff ff ff 89 d0 mov $0x14,%ecx 0.00 : 67f2: 48 8b 5c mov %r12d,%esi 0.00 : 67f5: 24 38 48 mov %r13,%rdi 0.00 : 67f8: 8b 6c 24 mov %rbp,%rdx 0.00 : 67fb: 40 4c 8b 64 24 callq 6800 0.00 : 6800: 48 4c test %eax,%eax 0.00 : 6802: 8b 6c 24 50 4c 8b jns 66eb 0.00 : 6808: 74 24 58 4c 8b 7c 24 mov 0x75c(%r14),%eax 0.00 : 680f: 60 48 83 cmp $0x6,%eax 0.00 : 6812: c4 68 je 681b 0.00 : 6814: c3 0f 1f 00 48 cmp $0xff,%eax 0.00 : 6819: 8d 6c jne 67bb 0.00 : 681b: 24 10 b9 14 00 callq 6820 0.00 : 6820: 00 00 test %eax,%eax 0.00 : 6822: 44 89 je 67bb 0.00 : 6824: e6 4c 89 ef movzbl %r15b,%edi 0.00 : 6828: 48 89 ea e8 00 00 00 movq $0x0,(%rsp) 0.00 : 682f: 00 0.00 : 6830: 85 c0 jmp 6851 0.00 : 6832: 0f 89 e3 fe ff ff nopw 0x0(%rax,%rax,1) 0.00 : 6838: 41 8b 86 5c 07 callq 683d 0.00 : 683d: 00 00 test %eax,%eax 0.00 : 683f: 83 f8 06 74 07 3d je 67bb 0.00 : 6845: ff 00 00 00 movzbl %r15b,%edi 0.00 : 6849: 75 a0 e8 00 00 00 00 movq $0x0,(%rsp) 0.00 : 6850: 85 0.00 : 6851: c0 74 97 mov %r13,%rdx 0.00 : 6854: 41 0f b6 xor %r9d,%r9d 0.00 : 6857: ff 48 c7 xor %r8d,%r8d 0.00 : 685a: 04 24 xor %ecx,%ecx 0.00 : 685c: 00 00 xor %esi,%esi 0.00 : 685e: 00 00 xor %eax,%eax 0.00 : 6860: eb 1f 66 0f 1f callq 6865 0.00 : 6865: 44 00 00 e8 00 mov $0xffffffff,%edx 0.00 : 686a: 00 00 00 85 c0 jmpq 67c0 0.00 : 686f: 0f nop 0.00 : 6870: 84 76 ff ff ff 41 0f mov 0x75c(%r14),%eax 0.00 : 6877: b6 ff 48 cmp $0x6,%eax 0.00 : 687a: c7 04 je 6887 0.00 : 687c: 24 00 00 00 00 cmp $0xff,%eax 0.00 : 6881: 4c 89 ea 45 31 c9 jne 67bb 0.00 : 6887: 45 31 c0 31 c9 callq 688c 0.00 : 688c: 31 f6 test %eax,%eax 0.00 : 688e: 31 c0 xchg %ax,%ax 0.00 : 6890: e8 00 00 00 00 ba je 67bb 0.00 : 6896: ff ff ff mov %r13,%rdx 0.00 : 6899: ff e9 51 xor %r9d,%r9d 0.00 : 689c: ff ff ff xor %r8d,%r8d 0.00 : 689f: 90 41 xor %ecx,%ecx 0.00 : 68a1: 8b 86 xor %esi,%esi 0.00 : 68a3: 5c 07 mov %ebx,%edi 0.00 : 68a5: 00 00 xor %eax,%eax 0.00 : 68a7: 83 f8 06 74 0b 3d ff movq $0x0,(%rsp) 0.00 : 68ae: 00 0.00 : 68af: 00 00 0f 85 34 callq 68b4 0.00 : 68b4: ff ff ff e8 00 mov $0xffffffff,%edx 0.00 : 68b9: 00 00 00 85 c0 jmpq 67c0 : 68be: 66 90 xchg %ax,%ax : 68c0: 0f 84 push %r12 : 68c2: 25 push %rbp : 68c3: ff ff ff mov %rcx,%rbp : 68c6: 4c push %rbx : 68c7: 89 ea 45 31 sub $0x30,%rsp : 68cb: c9 45 31 c0 movzbl 0xc(%rdx),%eax : 68cf: 31 c9 31 shr $0x4,%al : 68d2: f6 89 df movzbl %al,%eax : 68d5: 31 c0 48 c7 04 24 00 lea -0x14(,%rax,4),%ebx : 68dc: 00 00 test %ebx,%ebx : 68de: 00 e8 je 6958 : 68e0: 00 00 00 mov 0x68(%rdi),%eax : 68e3: 00 ba ff sub 0x6c(%rdi),%eax : 68e6: ff ff ff add $0x14,%esi : 68e9: e9 02 sub %esi,%eax : 68eb: ff ff cmp %eax,%ebx Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2902 12.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2933 12.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2938 12.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2938 9.68 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2902 6.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2902 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2908 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2917 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2917 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2920 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2938 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2948 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2964 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2959 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2960 3.23 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2962 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005acbc0 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalCase(CaseExprState *caseExpr, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2902 9.68 : 5acbc0: 55 push %rbp 6.45 : 5acbc1: 48 89 e5 mov %rsp,%rbp 0.00 : 5acbc4: 41 57 push %r15 12.90 : 5acbc6: 49 89 ff mov %rdi,%r15 0.00 : 5acbc9: 41 56 push %r14 0.00 : 5acbcb: 49 89 d6 mov %rdx,%r14 0.00 : 5acbce: 41 55 push %r13 0.00 : 5acbd0: 49 89 f5 mov %rsi,%r13 0.00 : 5acbd3: 41 54 push %r12 0.00 : 5acbd5: 53 push %rbx 0.00 : 5acbd6: 48 83 ec 18 sub $0x18,%rsp : List *clauses = caseExpr->args; : ListCell *clause; : Datum save_datum; : bool save_isNull; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2908 3.23 : 5acbda: 48 85 c9 test %rcx,%rcx : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalCase(CaseExprState *caseExpr, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { 0.00 : 5acbdd: 48 89 4d c0 mov %rcx,-0x40(%rbp) : List *clauses = caseExpr->args; 0.00 : 5acbe1: 48 8b 5f 20 mov 0x20(%rdi),%rbx : ListCell *clause; : Datum save_datum; : bool save_isNull; : : if (isDone) 0.00 : 5acbe5: 74 06 je 5acbed : *isDone = ExprSingleResult; 0.00 : 5acbe7: c7 01 00 00 00 00 movl $0x0,(%rcx) : * If there's a test expression, we have to evaluate it and save the value : * where the CaseTestExpr placeholders can find it. We must save and : * restore prior setting of econtext's caseValue fields, in case this node : * is itself within a larger CASE. : */ : save_datum = econtext->caseValue_datum; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2917 3.23 : 5acbed: 49 8b 45 50 mov 0x50(%r13),%rax 3.23 : 5acbf1: 48 89 45 c8 mov %rax,-0x38(%rbp) : save_isNull = econtext->caseValue_isNull; 0.00 : 5acbf5: 41 0f b6 45 58 movzbl 0x58(%r13),%eax 0.00 : 5acbfa: 88 45 d7 mov %al,-0x29(%rbp) : : if (caseExpr->arg) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2920 3.23 : 5acbfd: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 5acc01: 48 85 c0 test %rax,%rax 0.00 : 5acc04: 74 13 je 5acc19 : { : econtext->caseValue_datum = ExecEvalExpr(caseExpr->arg, 0.00 : 5acc06: 49 8d 55 58 lea 0x58(%r13),%rdx 0.00 : 5acc0a: 31 c9 xor %ecx,%ecx 0.00 : 5acc0c: 4c 89 ee mov %r13,%rsi 0.00 : 5acc0f: 48 89 c7 mov %rax,%rdi 0.00 : 5acc12: ff 50 10 callq *0x10(%rax) 0.00 : 5acc15: 49 89 45 50 mov %rax,0x50(%r13) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5acc19: 48 85 db test %rbx,%rbx 0.00 : 5acc1c: 74 62 je 5acc80 0.00 : 5acc1e: 66 90 xchg %ax,%ax 0.00 : 5acc20: 48 8b 5b 08 mov 0x8(%rbx),%rbx : /* : * we evaluate each of the WHEN clauses in turn, as soon as one is true we : * return the corresponding result. If none are true then we return the : * value of the default clause, or NULL if there is none. : */ : foreach(clause, clauses) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2933 12.90 : 5acc24: 48 85 db test %rbx,%rbx 0.00 : 5acc27: 74 57 je 5acc80 : { : CaseWhenState *wclause = lfirst(clause); 0.00 : 5acc29: 4c 8b 23 mov (%rbx),%r12 : Datum clause_value; : : clause_value = ExecEvalExpr(wclause->expr, /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2938 12.90 : 5acc2c: 31 c9 xor %ecx,%ecx 0.00 : 5acc2e: 4c 89 f2 mov %r14,%rdx 0.00 : 5acc31: 4c 89 ee mov %r13,%rsi 0.00 : 5acc34: 49 8b 44 24 18 mov 0x18(%r12),%rax 12.90 : 5acc39: 48 89 c7 mov %rax,%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2938 3.23 : 5acc3c: ff 50 10 callq *0x10(%rax) : /* : * if we have a true test, then we return the result, since the case : * statement is satisfied. A NULL result from the test is not : * considered true. : */ : if (DatumGetBool(clause_value) && !*isNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2948 3.23 : 5acc3f: 84 c0 test %al,%al 0.00 : 5acc41: 74 dd je 5acc20 0.00 : 5acc43: 41 80 3e 00 cmpb $0x0,(%r14) 0.00 : 5acc47: 75 d7 jne 5acc20 : { : econtext->caseValue_datum = save_datum; 0.00 : 5acc49: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 5acc4d: 49 89 45 50 mov %rax,0x50(%r13) : econtext->caseValue_isNull = save_isNull; 0.00 : 5acc51: 0f b6 45 d7 movzbl -0x29(%rbp),%eax 0.00 : 5acc55: 41 88 45 58 mov %al,0x58(%r13) : return ExecEvalExpr(wclause->result, 0.00 : 5acc59: 49 8b 44 24 20 mov 0x20(%r12),%rax : econtext->caseValue_datum = save_datum; : econtext->caseValue_isNull = save_isNull; : : if (caseExpr->defresult) : { : return ExecEvalExpr(caseExpr->defresult, 0.00 : 5acc5e: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 5acc62: 4c 8b 58 10 mov 0x10(%rax),%r11 : isDone); : } : : *isNull = true; : return (Datum) 0; : } 0.00 : 5acc66: 48 83 c4 18 add $0x18,%rsp 0.00 : 5acc6a: 5b pop %rbx 0.00 : 5acc6b: 41 5c pop %r12 : econtext->caseValue_datum = save_datum; : econtext->caseValue_isNull = save_isNull; : : if (caseExpr->defresult) : { : return ExecEvalExpr(caseExpr->defresult, 0.00 : 5acc6d: 4c 89 ee mov %r13,%rsi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2964 3.23 : 5acc70: 4c 89 f2 mov %r14,%rdx 0.00 : 5acc73: 48 89 c7 mov %rax,%rdi : isDone); : } : : *isNull = true; : return (Datum) 0; : } 0.00 : 5acc76: 41 5d pop %r13 0.00 : 5acc78: 41 5e pop %r14 0.00 : 5acc7a: 41 5f pop %r15 0.00 : 5acc7c: c9 leaveq : econtext->caseValue_datum = save_datum; : econtext->caseValue_isNull = save_isNull; : : if (caseExpr->defresult) : { : return ExecEvalExpr(caseExpr->defresult, 0.00 : 5acc7d: 41 ff e3 jmpq *%r11 : isNull, : isDone); : } : } : : econtext->caseValue_datum = save_datum; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2959 3.23 : 5acc80: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 5acc84: 49 89 45 50 mov %rax,0x50(%r13) : econtext->caseValue_isNull = save_isNull; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2960 3.23 : 5acc88: 0f b6 45 d7 movzbl -0x29(%rbp),%eax 0.00 : 5acc8c: 41 88 45 58 mov %al,0x58(%r13) : : if (caseExpr->defresult) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2962 3.23 : 5acc90: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5acc94: 48 85 c0 test %rax,%rax 0.00 : 5acc97: 75 c5 jne 5acc5e : econtext, : isNull, : isDone); : } : : *isNull = true; 0.00 : 5acc99: 41 c6 06 01 movb $0x1,(%r14) : return (Datum) 0; : } 0.00 : 5acc9d: 48 83 c4 18 add $0x18,%rsp 0.00 : 5acca1: 31 c0 xor %eax,%eax 0.00 : 5acca3: 5b pop %rbx 0.00 : 5acca4: 41 5c pop %r12 0.00 : 5acca6: 41 5d pop %r13 0.00 : 5acca8: 41 5e pop %r14 0.00 : 5accaa: 41 5f pop %r15 0.00 : 5accac: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 54.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:202 28.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:201 16.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:203 2.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:204 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2db0 : : * : * Same as pfree except for allowing NULL input : */ : void : bms_free(Bitmapset *a) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:201 28.00 : 5e2db0: 55 push %rbp : if (a) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:202 54.00 : 5e2db1: 48 85 ff test %rdi,%rdi : * : * Same as pfree except for allowing NULL input : */ : void : bms_free(Bitmapset *a) : { 0.00 : 5e2db4: 48 89 e5 mov %rsp,%rbp : if (a) 0.00 : 5e2db7: 74 07 je 5e2dc0 : pfree(a); : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:204 2.00 : 5e2db9: c9 leaveq : */ : void : bms_free(Bitmapset *a) : { : if (a) : pfree(a); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:203 16.00 : 5e2dba: e9 c1 5d 1b 00 jmpq 798b80 0.00 : 5e2dbf: 90 nop : } 0.00 : 5e2dc0: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 20.45 ??:0 13.64 ??:0 6.82 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007b5f0 <__libc_free>: 25.00 : 7b5f0: 48 8b 05 c1 68 2f 00 mov 0x2f68c1(%rip),%rax # 371eb8 <_DYNAMIC+0x358> 13.64 : 7b5f7: 53 push %rbx ??:0 2.27 : 7b5f8: 48 8b 00 mov (%rax),%rax 4.55 : 7b5fb: 48 85 c0 test %rax,%rax 0.00 : 7b5fe: 0f 85 bd 00 00 00 jne 7b6c1 <__libc_free+0xd1> 4.55 : 7b604: 48 85 ff test %rdi,%rdi 0.00 : 7b607: 74 6f je 7b678 <__libc_free+0x88> 0.00 : 7b609: 48 8b 47 f8 mov -0x8(%rdi),%rax ??:0 20.45 : 7b60d: 48 8d 57 f0 lea -0x10(%rdi),%rdx 0.00 : 7b611: a8 02 test $0x2,%al 0.00 : 7b613: 75 6b jne 7b680 <__libc_free+0x90> ??:0 2.27 : 7b615: a8 04 test $0x4,%al 0.00 : 7b617: 48 8d 1d 82 88 2f 00 lea 0x2f8882(%rip),%rbx # 373ea0 0.00 : 7b61e: 74 0c je 7b62c <__libc_free+0x3c> 0.00 : 7b620: 48 89 d0 mov %rdx,%rax 0.00 : 7b623: 48 25 00 00 00 fc and $0xfffffffffc000000,%rax 0.00 : 7b629: 48 8b 18 mov (%rax),%rbx 0.00 : 7b62c: be 01 00 00 00 mov $0x1,%esi 4.55 : 7b631: 31 c0 xor %eax,%eax 0.00 : 7b633: 83 3d 7a c0 2f 00 00 cmpl $0x0,0x2fc07a(%rip) # 3776b4 <__libc_multiple_threads> 2.27 : 7b63a: 74 0c je 7b648 <__libc_free+0x58> 0.00 : 7b63c: f0 0f b1 33 lock cmpxchg %esi,(%rbx) 0.00 : 7b640: 0f 85 49 1d 00 00 jne 7d38f <_L_lock_9925> 0.00 : 7b646: eb 09 jmp 7b651 <__libc_free+0x61> ??:0 6.82 : 7b648: 0f b1 33 cmpxchg %esi,(%rbx) ??:0 4.55 : 7b64b: 0f 85 3e 1d 00 00 jne 7d38f <_L_lock_9925> 0.00 : 7b651: 48 89 d6 mov %rdx,%rsi 2.27 : 7b654: 48 89 df mov %rbx,%rdi 2.27 : 7b657: e8 44 c4 ff ff callq 77aa0 <_int_free> 2.27 : 7b65c: 83 3d 51 c0 2f 00 00 cmpl $0x0,0x2fc051(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b663: 74 0b je 7b670 <__libc_free+0x80> 0.00 : 7b665: f0 ff 0b lock decl (%rbx) 0.00 : 7b668: 0f 85 3c 1d 00 00 jne 7d3aa <_L_unlock_9938> 0.00 : 7b66e: eb 08 jmp 7b678 <__libc_free+0x88> 0.00 : 7b670: ff 0b decl (%rbx) 0.00 : 7b672: 0f 85 32 1d 00 00 jne 7d3aa <_L_unlock_9938> 2.27 : 7b678: 5b pop %rbx 0.00 : 7b679: c3 retq 0.00 : 7b67a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7b680: 44 8b 05 c5 90 2f 00 mov 0x2f90c5(%rip),%r8d # 37474c 0.00 : 7b687: 45 85 c0 test %r8d,%r8d 0.00 : 7b68a: 75 2c jne 7b6b8 <__libc_free+0xc8> 0.00 : 7b68c: 48 3b 05 9d 90 2f 00 cmp 0x2f909d(%rip),%rax # 374730 0.00 : 7b693: 76 23 jbe 7b6b8 <__libc_free+0xc8> 0.00 : 7b695: 48 3d 00 00 00 02 cmp $0x2000000,%rax 0.00 : 7b69b: 77 1b ja 7b6b8 <__libc_free+0xc8> 0.00 : 7b69d: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 7b6a1: 48 89 05 88 90 2f 00 mov %rax,0x2f9088(%rip) # 374730 0.00 : 7b6a8: 48 01 c0 add %rax,%rax 0.00 : 7b6ab: 48 89 05 6e 90 2f 00 mov %rax,0x2f906e(%rip) # 374720 0.00 : 7b6b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7b6b8: 5b pop %rbx 0.00 : 7b6b9: 48 89 d7 mov %rdx,%rdi 0.00 : 7b6bc: e9 0f c3 ff ff jmpq 779d0 0.00 : 7b6c1: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : 7b6c6: 49 89 c3 mov %rax,%r11 0.00 : 7b6c9: 5b pop %rbx 0.00 : 7b6ca: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1013 17.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1022 15.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1022 12.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1015 12.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1017 7.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1017 5.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1022 2.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1014 2.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1015 2.50 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1017 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e34f0 : : * qsort comparator to handle PagetableEntry pointers. : */ : static int : tbm_comparator(const void *left, const void *right) : { : BlockNumber l = (*((PagetableEntry *const *) left))->blockno; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1014 2.50 : 5e34f0: 48 8b 17 mov (%rdi),%rdx : BlockNumber r = (*((PagetableEntry *const *) right))->blockno; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1015 12.50 : 5e34f3: 48 8b 06 mov (%rsi),%rax : : if (l < r) 0.00 : 5e34f6: b9 ff ff ff ff mov $0xffffffff,%ecx : /* : * qsort comparator to handle PagetableEntry pointers. : */ : static int : tbm_comparator(const void *left, const void *right) : { 0.00 : 5e34fb: 55 push %rbp : BlockNumber l = (*((PagetableEntry *const *) left))->blockno; : BlockNumber r = (*((PagetableEntry *const *) right))->blockno; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1015 2.50 : 5e34fc: 8b 00 mov (%rax),%eax : : if (l < r) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1017 7.50 : 5e34fe: 39 02 cmp %eax,(%rdx) : /* : * qsort comparator to handle PagetableEntry pointers. : */ : static int : tbm_comparator(const void *left, const void *right) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1013 22.50 : 5e3500: 48 89 e5 mov %rsp,%rbp : BlockNumber l = (*((PagetableEntry *const *) left))->blockno; : BlockNumber r = (*((PagetableEntry *const *) right))->blockno; : : if (l < r) 0.00 : 5e3503: 72 06 jb 5e350b /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1017 2.50 : 5e3505: 0f 97 c0 seta %al /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1017 12.50 : 5e3508: 0f b6 c8 movzbl %al,%ecx : return -1; : else if (l > r) : return 1; : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:1022 15.00 : 5e350b: 89 c8 mov %ecx,%eax 22.50 : 5e350d: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 6.82 ??:0 6.82 ??:0 4.55 ??:0 4.55 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002ff90 <_nl_make_l10nflist>: 0.00 : 2ff90: 41 57 push %r15 0.00 : 2ff92: 41 56 push %r14 ??:0 2.27 : 2ff94: 41 55 push %r13 0.00 : 2ff96: 41 54 push %r12 0.00 : 2ff98: 41 89 cc mov %ecx,%r12d 0.00 : 2ff9b: 55 push %rbp 0.00 : 2ff9c: 53 push %rbx 0.00 : 2ff9d: 48 83 ec 78 sub $0x78,%rsp 0.00 : 2ffa1: 48 89 7c 24 58 mov %rdi,0x58(%rsp) 0.00 : 2ffa6: 48 89 74 24 50 mov %rsi,0x50(%rsp) 0.00 : 2ffab: 4c 89 c7 mov %r8,%rdi 0.00 : 2ffae: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 2ffb3: 4c 89 44 24 40 mov %r8,0x40(%rsp) 0.00 : 2ffb8: 4c 89 4c 24 38 mov %r9,0x38(%rsp) 0.00 : 2ffbd: e8 ee 0b 05 00 callq 80bb0 <__GI_strlen> 4.55 : 2ffc2: 49 89 c7 mov %rax,%r15 0.00 : 2ffc5: 44 89 e0 mov %r12d,%eax 0.00 : 2ffc8: 83 e0 04 and $0x4,%eax 0.00 : 2ffcb: 89 44 24 64 mov %eax,0x64(%rsp) 0.00 : 2ffcf: 0f 85 ab 03 00 00 jne 30380 <_nl_make_l10nflist+0x3f0> 0.00 : 2ffd5: 45 31 f6 xor %r14d,%r14d 0.00 : 2ffd8: 44 89 e2 mov %r12d,%edx 0.00 : 2ffdb: 83 e2 02 and $0x2,%edx 0.00 : 2ffde: 89 54 24 68 mov %edx,0x68(%rsp) 0.00 : 2ffe2: 0f 85 78 03 00 00 jne 30360 <_nl_make_l10nflist+0x3d0> 0.00 : 2ffe8: 45 31 ed xor %r13d,%r13d 0.00 : 2ffeb: 44 89 e0 mov %r12d,%eax 2.27 : 2ffee: 83 e0 01 and $0x1,%eax 0.00 : 2fff1: 89 44 24 6c mov %eax,0x6c(%rsp) 0.00 : 2fff5: 0f 85 45 03 00 00 jne 30340 <_nl_make_l10nflist+0x3b0> 0.00 : 2fffb: 31 ed xor %ebp,%ebp 0.00 : 2fffd: 44 89 e2 mov %r12d,%edx 0.00 : 30000: 83 e2 08 and $0x8,%edx 0.00 : 30003: 89 54 24 70 mov %edx,0x70(%rsp) 2.27 : 30007: 0f 85 1b 03 00 00 jne 30328 <_nl_make_l10nflist+0x398> 0.00 : 3000d: 31 db xor %ebx,%ebx 0.00 : 3000f: 48 8b bc 24 c8 00 00 mov 0xc8(%rsp),%rdi 0.00 : 30016: 00 0.00 : 30017: e8 94 0b 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3001c: 49 8d 7c 07 02 lea 0x2(%r15,%rax,1),%rdi 2.27 : 30021: 48 03 7c 24 48 add 0x48(%rsp),%rdi 0.00 : 30026: 4c 01 f7 add %r14,%rdi 0.00 : 30029: 45 31 f6 xor %r14d,%r14d 0.00 : 3002c: 4c 01 ef add %r13,%rdi 2.27 : 3002f: 48 01 ef add %rbp,%rdi 0.00 : 30032: 48 01 df add %rbx,%rdi 0.00 : 30035: e8 16 e8 fe ff callq 1e850 0.00 : 3003a: 48 85 c0 test %rax,%rax 0.00 : 3003d: 48 89 c3 mov %rax,%rbx 0.00 : 30040: 0f 84 0b 02 00 00 je 30251 <_nl_make_l10nflist+0x2c1> 0.00 : 30046: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 3004b: 48 8b 74 24 50 mov 0x50(%rsp),%rsi 0.00 : 30050: 48 89 c7 mov %rax,%rdi 0.00 : 30053: e8 f8 46 05 00 callq 84750 0.00 : 30058: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3005d: ba 3a 00 00 00 mov $0x3a,%edx 2.27 : 30062: 48 89 df mov %rbx,%rdi 0.00 : 30065: e8 66 61 05 00 callq 861d0 <__argz_stringify> 2.27 : 3006a: 48 8b 44 24 48 mov 0x48(%rsp),%rax 2.27 : 3006f: 48 8d 7c 03 ff lea -0x1(%rbx,%rax,1),%rdi 0.00 : 30074: c6 07 2f movb $0x2f,(%rdi) ??:0 6.82 : 30077: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : 3007c: 48 83 c7 01 add $0x1,%rdi 0.00 : 30080: e8 1b 44 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 30085: 8b 7c 24 64 mov 0x64(%rsp),%edi 0.00 : 30089: 85 ff test %edi,%edi 0.00 : 3008b: 0f 85 67 03 00 00 jne 303f8 <_nl_make_l10nflist+0x468> 0.00 : 30091: 8b 74 24 68 mov 0x68(%rsp),%esi 0.00 : 30095: 85 f6 test %esi,%esi 0.00 : 30097: 0f 85 3b 03 00 00 jne 303d8 <_nl_make_l10nflist+0x448> ??:0 2.27 : 3009d: 8b 4c 24 6c mov 0x6c(%rsp),%ecx 2.27 : 300a1: 85 c9 test %ecx,%ecx 0.00 : 300a3: 0f 85 0f 03 00 00 jne 303b8 <_nl_make_l10nflist+0x428> 2.27 : 300a9: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 300ad: 85 d2 test %edx,%edx 0.00 : 300af: 0f 85 e3 02 00 00 jne 30398 <_nl_make_l10nflist+0x408> 0.00 : 300b5: c6 00 2f movb $0x2f,(%rax) 0.00 : 300b8: 48 8b b4 24 c8 00 00 mov 0xc8(%rsp),%rsi 0.00 : 300bf: 00 0.00 : 300c0: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 300c4: 31 ed xor %ebp,%ebp 0.00 : 300c6: e8 15 05 05 00 callq 805e0 <__GI_strcpy> 0.00 : 300cb: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 300d0: 4c 8b 32 mov (%rdx),%r14 2.27 : 300d3: 4d 85 f6 test %r14,%r14 0.00 : 300d6: 0f 84 7a 03 00 00 je 30456 <_nl_make_l10nflist+0x4c6> 2.27 : 300dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 300e0: 49 8b 3e mov (%r14),%rdi ??:0 6.82 : 300e3: 48 85 ff test %rdi,%rdi 0.00 : 300e6: 74 1a je 30102 <_nl_make_l10nflist+0x172> ??:0 2.27 : 300e8: 48 89 de mov %rbx,%rsi 0.00 : 300eb: e8 60 f0 04 00 callq 7f150 <__GI_strcmp> 0.00 : 300f0: 83 f8 00 cmp $0x0,%eax 0.00 : 300f3: 0f 84 1f 02 00 00 je 30318 <_nl_make_l10nflist+0x388> 2.27 : 300f9: 0f 8c 0f 03 00 00 jl 3040e <_nl_make_l10nflist+0x47e> 4.55 : 300ff: 4c 89 f5 mov %r14,%rbp 2.27 : 30102: 4d 8b 76 18 mov 0x18(%r14),%r14 0.00 : 30106: 4d 85 f6 test %r14,%r14 0.00 : 30109: 75 d5 jne 300e0 <_nl_make_l10nflist+0x150> 0.00 : 3010b: 8b 84 24 d0 00 00 00 mov 0xd0(%rsp),%eax 2.27 : 30112: 85 c0 test %eax,%eax 0.00 : 30114: 0f 84 fe 01 00 00 je 30318 <_nl_make_l10nflist+0x388> 0.00 : 3011a: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 2.27 : 3011f: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 30124: e8 27 5c 05 00 callq 85d50 <__argz_count> 0.00 : 30129: 44 89 e2 mov %r12d,%edx 0.00 : 3012c: 44 89 e1 mov %r12d,%ecx 0.00 : 3012f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 30134: 81 e2 aa aa ff ff and $0xffffaaaa,%edx 0.00 : 3013a: 81 e1 55 55 00 00 and $0x5555,%ecx 0.00 : 30140: d1 fa sar %edx 0.00 : 30142: 01 ca add %ecx,%edx 0.00 : 30144: 89 d1 mov %edx,%ecx 0.00 : 30146: 81 e2 33 33 00 00 and $0x3333,%edx 0.00 : 3014c: 81 e1 cc cc ff ff and $0xffffcccc,%ecx 0.00 : 30152: c1 f9 02 sar $0x2,%ecx 0.00 : 30155: 01 d1 add %edx,%ecx 0.00 : 30157: 89 ca mov %ecx,%edx 0.00 : 30159: c1 fa 04 sar $0x4,%edx 0.00 : 3015c: 01 ca add %ecx,%edx 0.00 : 3015e: 81 e2 0f 0f 00 00 and $0xf0f,%edx 0.00 : 30164: 89 d1 mov %edx,%ecx 2.27 : 30166: c1 f9 08 sar $0x8,%ecx 0.00 : 30169: 01 d1 add %edx,%ecx 0.00 : 3016b: d3 e7 shl %cl,%edi 2.27 : 3016d: 48 63 ff movslq %edi,%rdi 0.00 : 30170: 48 0f af f8 imul %rax,%rdi 0.00 : 30174: 48 8d 3c fd 28 00 00 lea 0x28(,%rdi,8),%rdi 0.00 : 3017b: 00 0.00 : 3017c: e8 cf e6 fe ff callq 1e850 0.00 : 30181: 48 85 c0 test %rax,%rax 0.00 : 30184: 49 89 c6 mov %rax,%r14 0.00 : 30187: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 3018c: 0f 84 86 01 00 00 je 30318 <_nl_make_l10nflist+0x388> 0.00 : 30192: 48 89 18 mov %rbx,(%rax) 0.00 : 30195: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3019a: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 3019f: e8 ac 5b 05 00 callq 85d50 <__argz_count> 0.00 : 301a4: 48 83 e8 01 sub $0x1,%rax 0.00 : 301a8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 301ad: 0f 84 72 02 00 00 je 30425 <_nl_make_l10nflist+0x495> 0.00 : 301b3: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 301b8: 48 85 ed test %rbp,%rbp 0.00 : 301bb: 89 50 08 mov %edx,0x8(%rax) 0.00 : 301be: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 301c5: 00 0.00 : 301c6: 0f 84 6c 02 00 00 je 30438 <_nl_make_l10nflist+0x4a8> 0.00 : 301cc: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 301d0: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 301d5: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 301d9: 48 89 55 18 mov %rdx,0x18(%rbp) 0.00 : 301dd: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 301e2: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 301e7: 45 89 e5 mov %r12d,%r13d 0.00 : 301ea: e8 61 5b 05 00 callq 85d50 <__argz_count> 0.00 : 301ef: 41 8d 54 24 ff lea -0x1(%r12),%edx 0.00 : 301f4: 48 83 e8 01 sub $0x1,%rax 0.00 : 301f8: 41 f7 d4 not %r12d 0.00 : 301fb: 44 89 64 24 74 mov %r12d,0x74(%rsp) 2.27 : 30200: 44 0f 44 ea cmove %edx,%r13d 0.00 : 30204: 45 31 e4 xor %r12d,%r12d 0.00 : 30207: 45 85 ed test %r13d,%r13d 0.00 : 3020a: 78 37 js 30243 <_nl_make_l10nflist+0x2b3> 2.27 : 3020c: 4c 8b 7c 24 50 mov 0x50(%rsp),%r15 0.00 : 30211: 4c 03 7c 24 48 add 0x48(%rsp),%r15 0.00 : 30216: eb 0e jmp 30226 <_nl_make_l10nflist+0x296> 0.00 : 30218: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3021f: 00 0.00 : 30220: 41 83 ed 01 sub $0x1,%r13d 0.00 : 30224: 78 1d js 30243 <_nl_make_l10nflist+0x2b3> 0.00 : 30226: 31 db xor %ebx,%ebx 0.00 : 30228: 44 85 6c 24 74 test %r13d,0x74(%rsp) 0.00 : 3022d: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 30232: 4a 8d 6c e0 20 lea 0x20(%rax,%r12,8),%rbp 0.00 : 30237: 0f 84 b8 00 00 00 je 302f5 <_nl_make_l10nflist+0x365> 0.00 : 3023d: 41 83 ed 01 sub $0x1,%r13d 2.27 : 30241: 79 e3 jns 30226 <_nl_make_l10nflist+0x296> 0.00 : 30243: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 30248: 4a c7 44 e2 20 00 00 movq $0x0,0x20(%rdx,%r12,8) 0.00 : 3024f: 00 00 0.00 : 30251: 48 83 c4 78 add $0x78,%rsp 0.00 : 30255: 4c 89 f0 mov %r14,%rax 0.00 : 30258: 5b pop %rbx 0.00 : 30259: 5d pop %rbp 0.00 : 3025a: 41 5c pop %r12 0.00 : 3025c: 41 5d pop %r13 0.00 : 3025e: 41 5e pop %r14 0.00 : 30260: 41 5f pop %r15 0.00 : 30262: c3 retq 0.00 : 30263: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 30268: 4c 39 fb cmp %r15,%rbx 0.00 : 3026b: 73 b3 jae 30220 <_nl_make_l10nflist+0x290> 0.00 : 3026d: 31 f6 xor %esi,%esi 0.00 : 3026f: 48 89 df mov %rbx,%rdi 2.27 : 30272: e8 39 59 05 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 30277: 48 8d 78 01 lea 0x1(%rax),%rdi 2.27 : 3027b: 49 39 ff cmp %rdi,%r15 0.00 : 3027e: 76 a0 jbe 30220 <_nl_make_l10nflist+0x290> 0.00 : 30280: 48 89 fb mov %rdi,%rbx 0.00 : 30283: 48 85 db test %rbx,%rbx 0.00 : 30286: 74 98 je 30220 <_nl_make_l10nflist+0x290> 0.00 : 30288: 48 89 df mov %rbx,%rdi 0.00 : 3028b: 49 83 c4 01 add $0x1,%r12 0.00 : 3028f: e8 1c 09 05 00 callq 80bb0 <__GI_strlen> 0.00 : 30294: 48 8d 50 01 lea 0x1(%rax),%rdx 2.27 : 30298: 48 8b 84 24 c8 00 00 mov 0xc8(%rsp),%rax 0.00 : 3029f: 00 0.00 : 302a0: 4c 8b 4c 24 38 mov 0x38(%rsp),%r9 0.00 : 302a5: 4c 8b 44 24 40 mov 0x40(%rsp),%r8 0.00 : 302aa: 48 8b 7c 24 58 mov 0x58(%rsp),%rdi 0.00 : 302af: 44 89 e9 mov %r13d,%ecx 0.00 : 302b2: 48 89 de mov %rbx,%rsi 0.00 : 302b5: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 302bc: 00 0.00 : 302bd: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 302c2: 48 8b 84 24 c0 00 00 mov 0xc0(%rsp),%rax 0.00 : 302c9: 00 0.00 : 302ca: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 302cf: 48 8b 84 24 b8 00 00 mov 0xb8(%rsp),%rax 0.00 : 302d6: 00 0.00 : 302d7: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 302dc: 48 8b 84 24 b0 00 00 mov 0xb0(%rsp),%rax 0.00 : 302e3: 00 0.00 : 302e4: 48 89 04 24 mov %rax,(%rsp) 0.00 : 302e8: e8 a3 fc ff ff callq 2ff90 <_nl_make_l10nflist> 0.00 : 302ed: 48 89 45 00 mov %rax,0x0(%rbp) 2.27 : 302f1: 48 83 c5 08 add $0x8,%rbp 0.00 : 302f5: 48 85 db test %rbx,%rbx 0.00 : 302f8: 0f 85 6a ff ff ff jne 30268 <_nl_make_l10nflist+0x2d8> 0.00 : 302fe: 48 83 7c 24 48 00 cmpq $0x0,0x48(%rsp) 0.00 : 30304: 0f 84 16 ff ff ff je 30220 <_nl_make_l10nflist+0x290> 0.00 : 3030a: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 3030f: e9 6f ff ff ff jmpq 30283 <_nl_make_l10nflist+0x2f3> 0.00 : 30314: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 30318: 48 89 df mov %rbx,%rdi 2.27 : 3031b: e8 80 e5 fe ff callq 1e8a0 0.00 : 30320: e9 2c ff ff ff jmpq 30251 <_nl_make_l10nflist+0x2c1> 0.00 : 30325: 0f 1f 00 nopl (%rax) 0.00 : 30328: 48 8b bc 24 c0 00 00 mov 0xc0(%rsp),%rdi 0.00 : 3032f: 00 0.00 : 30330: e8 7b 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 30335: 48 8d 58 01 lea 0x1(%rax),%rbx 0.00 : 30339: e9 d1 fc ff ff jmpq 3000f <_nl_make_l10nflist+0x7f> 0.00 : 3033e: 66 90 xchg %ax,%ax 0.00 : 30340: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 30347: 00 0.00 : 30348: e8 63 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3034d: 48 8d 68 01 lea 0x1(%rax),%rbp 0.00 : 30351: e9 a7 fc ff ff jmpq 2fffd <_nl_make_l10nflist+0x6d> 0.00 : 30356: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3035d: 00 00 00 0.00 : 30360: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 30367: 00 0.00 : 30368: e8 43 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3036d: 4c 8d 68 01 lea 0x1(%rax),%r13 0.00 : 30371: e9 75 fc ff ff jmpq 2ffeb <_nl_make_l10nflist+0x5b> 0.00 : 30376: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3037d: 00 00 00 0.00 : 30380: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 2.27 : 30385: e8 26 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3038a: 4c 8d 70 01 lea 0x1(%rax),%r14 0.00 : 3038e: e9 45 fc ff ff jmpq 2ffd8 <_nl_make_l10nflist+0x48> 0.00 : 30393: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 30398: c6 00 40 movb $0x40,(%rax) 0.00 : 3039b: 48 8b b4 24 c0 00 00 mov 0xc0(%rsp),%rsi 0.00 : 303a2: 00 0.00 : 303a3: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 303a7: e8 f4 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 303ac: e9 04 fd ff ff jmpq 300b5 <_nl_make_l10nflist+0x125> 0.00 : 303b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 303b8: c6 00 2e movb $0x2e,(%rax) 2.27 : 303bb: 48 8b b4 24 b8 00 00 mov 0xb8(%rsp),%rsi 0.00 : 303c2: 00 0.00 : 303c3: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 303c7: e8 d4 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 303cc: e9 d8 fc ff ff jmpq 300a9 <_nl_make_l10nflist+0x119> 0.00 : 303d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 303d8: c6 00 2e movb $0x2e,(%rax) 0.00 : 303db: 48 8b b4 24 b0 00 00 mov 0xb0(%rsp),%rsi 0.00 : 303e2: 00 2.27 : 303e3: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 303e7: e8 b4 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 303ec: e9 ac fc ff ff jmpq 3009d <_nl_make_l10nflist+0x10d> 0.00 : 303f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 2.27 : 303f8: c6 00 5f movb $0x5f,(%rax) 2.27 : 303fb: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 30400: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 30404: e8 97 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 30409: e9 83 fc ff ff jmpq 30091 <_nl_make_l10nflist+0x101> 2.27 : 3040e: 8b 84 24 d0 00 00 00 mov 0xd0(%rsp),%eax 0.00 : 30415: 45 31 f6 xor %r14d,%r14d 0.00 : 30418: 85 c0 test %eax,%eax 0.00 : 3041a: 0f 85 fa fc ff ff jne 3011a <_nl_make_l10nflist+0x18a> 0.00 : 30420: e9 f3 fe ff ff jmpq 30318 <_nl_make_l10nflist+0x388> 0.00 : 30425: 44 89 e0 mov %r12d,%eax 0.00 : 30428: 31 d2 xor %edx,%edx 0.00 : 3042a: 83 e0 03 and $0x3,%eax 0.00 : 3042d: 83 f8 03 cmp $0x3,%eax 0.00 : 30430: 0f 94 c2 sete %dl 0.00 : 30433: e9 7b fd ff ff jmpq 301b3 <_nl_make_l10nflist+0x223> 0.00 : 30438: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 3043d: 48 8b 02 mov (%rdx),%rax 0.00 : 30440: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 30445: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 30449: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 3044e: 48 89 10 mov %rdx,(%rax) 0.00 : 30451: e9 87 fd ff ff jmpq 301dd <_nl_make_l10nflist+0x24d> 0.00 : 30456: 4c 89 f5 mov %r14,%rbp 0.00 : 30459: e9 ad fc ff ff jmpq 3010b <_nl_make_l10nflist+0x17b> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 19.15 ??:0 19.15 ??:0 10.64 ??:0 8.51 ??:0 6.38 ??:0 6.38 ??:0 4.26 ??:0 4.26 ??:0 4.26 ??:0 4.26 ??:0 4.26 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 2.13 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000080bb0 <__GI_strlen>: ??:0 6.38 : 80bb0: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 80bb4: 48 89 f9 mov %rdi,%rcx ??:0 2.13 : 80bb7: 49 89 f8 mov %rdi,%r8 2.13 : 80bba: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 4.26 : 80bbe: 66 0f 6f ca movdqa %xmm2,%xmm1 2.13 : 80bc2: 66 0f 74 17 pcmpeqb (%rdi),%xmm2 ??:0 19.15 : 80bc6: 83 ce ff or $0xffffffff,%esi ??:0 4.26 : 80bc9: 48 29 f9 sub %rdi,%rcx 0.00 : 80bcc: d3 e6 shl %cl,%esi ??:0 6.38 : 80bce: 66 0f d7 d2 pmovmskb %xmm2,%edx 0.00 : 80bd2: 21 f2 and %esi,%edx 0.00 : 80bd4: 75 15 jne 80beb <__GI_strlen+0x3b> 19.15 : 80bd6: 66 0f 6f 47 10 movdqa 0x10(%rdi),%xmm0 ??:0 2.13 : 80bdb: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 80bdf: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 4.26 : 80be3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 80be7: 85 d2 test %edx,%edx 0.00 : 80be9: 74 eb je 80bd6 <__GI_strlen+0x26> 4.26 : 80beb: 4c 29 c7 sub %r8,%rdi 4.26 : 80bee: 0f bc c2 bsf %edx,%eax ??:0 19.15 : 80bf1: 48 01 f8 add %rdi,%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 42.31 ??:0 23.08 ??:0 11.54 ??:0 7.69 ??:0 7.69 ??:0 3.85 ??:0 3.85 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000002a0 : : * when it needs to update EITR registers at runtime. Hardware : * specific quirks/differences are taken care of here. : */ : void ixgbe_write_eitr(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_adapter *adapter = q_vector->adapter; ??:0 3.85 : 2a0: 4c 8b 07 mov (%rdi),%r8 : struct ixgbe_hw *hw = &adapter->hw; : int v_idx = q_vector->v_idx; : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; 0.00 : 2a3: 0f b7 57 0e movzwl 0xe(%rdi),%edx : */ : void ixgbe_write_eitr(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_hw *hw = &adapter->hw; : int v_idx = q_vector->v_idx; ??:0 7.69 : 2a7: 0f b7 77 0c movzwl 0xc(%rdi),%esi : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; : : switch (adapter->hw.mac.type) { 0.00 : 2ab: 41 8b 88 50 10 00 00 mov 0x1050(%r8),%ecx : void ixgbe_write_eitr(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_hw *hw = &adapter->hw; : int v_idx = q_vector->v_idx; : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; 23.08 : 2b2: 81 e2 f8 0f 00 00 and $0xff8,%edx : : switch (adapter->hw.mac.type) { 0.00 : 2b8: 83 f9 01 cmp $0x1,%ecx 0.00 : 2bb: 74 43 je 300 0.00 : 2bd: 73 29 jae 2e8 : itr_reg |= IXGBE_EITR_CNT_WDIS; : break; : default: : break; : } : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); 0.00 : 2bf: 8d 04 b5 20 08 00 00 lea 0x820(,%rsi,4),%eax 0.00 : 2c6: 83 fe 17 cmp $0x17,%esi 0.00 : 2c9: 49 8b 88 80 0e 00 00 mov 0xe80(%r8),%rcx 11.54 : 2d0: 48 98 cltq 0.00 : 2d2: 7e 09 jle 2dd 0.00 : 2d4: 8d 04 b5 a0 22 01 00 lea 0x122a0(,%rsi,4),%eax 0.00 : 2db: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 2dd: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 2e1: 89 10 mov %edx,(%rax) : } 42.31 : 2e3: c3 retq 0.00 : 2e4: 0f 1f 40 00 nopl 0x0(%rax) : case ixgbe_mac_X540: : /* : * set the WDIS bit to not clear the timer bits and cause an : * immediate assertion of the interrupt : */ : itr_reg |= IXGBE_EITR_CNT_WDIS; 0.00 : 2e8: 89 d0 mov %edx,%eax ??:0 3.85 : 2ea: 0d 00 00 00 80 or $0x80000000,%eax ??:0 7.69 : 2ef: 83 f9 03 cmp $0x3,%ecx 0.00 : 2f2: 0f 46 d0 cmovbe %eax,%edx 0.00 : 2f5: eb c8 jmp 2bf 0.00 : 2f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2fe: 00 00 : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; : : switch (adapter->hw.mac.type) { : case ixgbe_mac_82598EB: : /* must write high and low 16 bits to reset counter */ : itr_reg |= (itr_reg << 16); 0.00 : 300: 89 d0 mov %edx,%eax 0.00 : 302: c1 e0 10 shl $0x10,%eax 0.00 : 305: 09 c2 or %eax,%edx : break; 0.00 : 307: eb b6 jmp 2bf : : Disassembly of section .devinit.text: : : 00000000000002a0 : : IXGBE_FLAG_MSIX_CAPABLE | : IXGBE_FLAG_MQ_CAPABLE; : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : adapter->flags |= IXGBE_FLAG_DCA_CAPABLE; : #endif : adapter->flags |= IXGBE_FLAG_SRIOV_CAPABLE; ??:0 3.85 : 2a0: 08 00 or %al,(%rax) : adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; ??:0 7.69 : 2a2: 83 8d 1c 02 00 00 01 orl $0x1,0x21c(%rbp) : #ifdef IXGBE_FCOE : adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE; : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; 0.00 : 2a9: 8b 85 18 02 00 00 mov 0x218(%rbp),%eax : #ifdef CONFIG_DCB : /* Default traffic class to use for FCoE */ : adapter->fcoe.up = IXGBE_FCOE_DEFUP; 23.08 : 2af: c6 85 10 7c 00 00 03 movb $0x3,0x7c10(%rbp) : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; 0.00 : 2b6: c6 85 11 7c 00 00 03 movb $0x3,0x7c11(%rbp) : #endif : adapter->flags |= IXGBE_FLAG_SRIOV_CAPABLE; : adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; : #ifdef IXGBE_FCOE : adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE; : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; 0.00 : 2bd: 0d 00 00 02 00 or $0x20000,%eax 0.00 : 2c2: 25 ff ff fb ff and $0xfffbffff,%eax : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; : #endif : #endif : adapter->ring_feature[RING_F_FDIR].limit = : IXGBE_MAX_FDIR_INDICES; : if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM) 0.00 : 2c7: 66 81 bd 90 14 00 00 cmpw $0x151c,0x1490(%rbp) 0.00 : 2ce: 1c 15 : /* Default traffic class to use for FCoE */ : adapter->fcoe.up = IXGBE_FCOE_DEFUP; : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; : #endif : #endif : adapter->ring_feature[RING_F_FDIR].limit = 11.54 : 2d0: 66 c7 85 e0 0b 00 00 movw $0x40,0xbe0(%rbp) 0.00 : 2d7: 40 00 : #endif : adapter->flags |= IXGBE_FLAG_SRIOV_CAPABLE; : adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; : #ifdef IXGBE_FCOE : adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE; : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; 0.00 : 2d9: 89 85 18 02 00 00 mov %eax,0x218(%rbp) : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; : #endif : #endif : adapter->ring_feature[RING_F_FDIR].limit = : IXGBE_MAX_FDIR_INDICES; : if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM) 0.00 : 2df: 74 2c je 30d : adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE; : #ifndef IXGBE_NO_SMART_SPEED : hw->phy.smart_speed = ixgbe_smart_speed_on; 42.31 : 2e1: c7 85 bc 13 00 00 01 movl $0x1,0x13bc(%rbp) ??:0 3.85 : 2e8: 00 00 00 : #else : hw->phy.smart_speed = ixgbe_smart_speed_off; : #endif : adapter->max_q_vectors = IXGBE_MAX_MSIX_Q_VECTORS_82599; ??:0 7.69 : 2eb: c7 85 c4 0b 00 00 40 movl $0x40,0xbc4(%rbp) 0.00 : 2f2: 00 00 00 0.00 : 2f5: e9 c0 fd ff ff jmpq ba : : #ifdef CONFIG_DCB : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : case ixgbe_mac_82599EB: : adapter->dcb_cfg.num_tcs.pg_tcs = 8; 0.00 : 2fa: c6 85 68 0a 00 00 08 movb $0x8,0xa68(%rbp) : adapter->dcb_cfg.num_tcs.pfc_tcs = 8; 0.00 : 301: c6 85 69 0a 00 00 08 movb $0x8,0xa69(%rbp) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 57.14 ??:0 19.05 ??:0 9.52 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000010070 : : : void ixgbe_tx_ctxtdesc(struct ixgbe_ring *tx_ring, u32 vlan_macip_lens, : u32 fcoe_sof_eof, u32 type_tucmd, u32 mss_l4len_idx) : { : struct ixgbe_adv_tx_context_desc *context_desc; : u16 i = tx_ring->next_to_use; 0.00 : 10070: 0f b7 47 50 movzwl 0x50(%rdi),%eax : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); : : i++; : tx_ring->next_to_use = (i < tx_ring->count) ? i : 0; ??:0 57.14 : 10074: 41 ba 00 00 00 00 mov $0x0,%r10d : u32 fcoe_sof_eof, u32 type_tucmd, u32 mss_l4len_idx) : { : struct ixgbe_adv_tx_context_desc *context_desc; : u16 i = tx_ring->next_to_use; : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); 0.00 : 1007a: 44 0f b7 c8 movzwl %ax,%r9d : : i++; ??:0 4.76 : 1007e: 83 c0 01 add $0x1,%eax : u32 fcoe_sof_eof, u32 type_tucmd, u32 mss_l4len_idx) : { : struct ixgbe_adv_tx_context_desc *context_desc; : u16 i = tx_ring->next_to_use; : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); 0.00 : 10081: 49 c1 e1 04 shl $0x4,%r9 0.00 : 10085: 4c 03 4f 20 add 0x20(%rdi),%r9 : : i++; : tx_ring->next_to_use = (i < tx_ring->count) ? i : 0; 4.76 : 10089: 66 3b 47 4c cmp 0x4c(%rdi),%ax 4.76 : 1008d: 41 0f 43 c2 cmovae %r10d,%eax : /* set bits to identify this as an advanced context descriptor */ : type_tucmd |= IXGBE_TXD_CMD_DEXT | IXGBE_ADVTXD_DTYP_CTXT; : : context_desc->vlan_macip_lens = cpu_to_le32(vlan_macip_lens); : context_desc->seqnum_seed = cpu_to_le32(fcoe_sof_eof); : context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd); ??:0 9.52 : 10091: 81 c9 00 00 20 20 or $0x20200000,%ecx : u16 i = tx_ring->next_to_use; : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); : : i++; : tx_ring->next_to_use = (i < tx_ring->count) ? i : 0; 0.00 : 10097: 66 89 47 50 mov %ax,0x50(%rdi) : : /* set bits to identify this as an advanced context descriptor */ : type_tucmd |= IXGBE_TXD_CMD_DEXT | IXGBE_ADVTXD_DTYP_CTXT; : : context_desc->vlan_macip_lens = cpu_to_le32(vlan_macip_lens); 0.00 : 1009b: 41 89 31 mov %esi,(%r9) : context_desc->seqnum_seed = cpu_to_le32(fcoe_sof_eof); 19.05 : 1009e: 41 89 51 04 mov %edx,0x4(%r9) : context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd); 0.00 : 100a2: 41 89 49 08 mov %ecx,0x8(%r9) : context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx); 0.00 : 100a6: 45 89 41 0c mov %r8d,0xc(%r9) Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.21 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:105 23.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 20.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:105 5.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 5.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 5.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:114 2.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 2.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:109 2.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 2.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:114 2.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:118 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000673da0 : : * : * Caller must hold exclusive lock on BufMappingLock for tag's partition : */ : int : BufTableInsert(BufferTag *tagPtr, int buf_id) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:105 28.21 : 673da0: 55 push %rbp 20.51 : 673da1: 48 89 e5 mov %rsp,%rbp 0.00 : 673da4: 48 83 ec 20 sub $0x20,%rsp : BufferLookupEnt ent; : : ent.key = *tagPtr; 0.00 : 673da8: 48 8b 07 mov (%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 2.56 : 673dab: 48 89 45 e0 mov %rax,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 23.08 : 673daf: 48 8b 47 08 mov 0x8(%rdi),%rax 5.13 : 673db3: 48 89 45 e8 mov %rax,-0x18(%rbp) 5.13 : 673db7: 8b 47 10 mov 0x10(%rdi),%eax : ent.id = buf_id; : : Assert(buf_id >= 0); /* -1 is reserved for not-in-table */ : Assert(tagPtr->blockNum != P_NEW); /* invalid tag */ : : if (CHashInsert(SharedBufHash, &ent)) 0.00 : 673dba: 48 8b 3d 97 92 50 00 mov 0x509297(%rip),%rdi # b7d058 : BufTableInsert(BufferTag *tagPtr, int buf_id) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; : ent.id = buf_id; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:109 2.56 : 673dc1: 89 75 f4 mov %esi,-0xc(%rbp) : : Assert(buf_id >= 0); /* -1 is reserved for not-in-table */ : Assert(tagPtr->blockNum != P_NEW); /* invalid tag */ : : if (CHashInsert(SharedBufHash, &ent)) 0.00 : 673dc4: 48 8d 75 e0 lea -0x20(%rbp),%rsi : int : BufTableInsert(BufferTag *tagPtr, int buf_id) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 2.56 : 673dc8: 89 45 f0 mov %eax,-0x10(%rbp) : ent.id = buf_id; : : Assert(buf_id >= 0); /* -1 is reserved for not-in-table */ : Assert(tagPtr->blockNum != P_NEW); /* invalid tag */ : : if (CHashInsert(SharedBufHash, &ent)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:114 2.56 : 673dcb: e8 50 f1 10 00 callq 782f20 0.00 : 673dd0: 89 c2 mov %eax,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:114 5.13 : 673dd2: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 673dd7: 84 d2 test %dl,%dl 0.00 : 673dd9: 0f 44 45 f4 cmove -0xc(%rbp),%eax : return -1; : : return ent.id; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:118 2.56 : 673ddd: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 76.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/storage/s_lock.h:224 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:821 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:801 3.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:834 3.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:837 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f080 : : /* : * Add ourselves to the end of the queue. Mode can be LW_WAIT_UNTIL_FREE here! : */ : static void : LWLockQueueSelf(LWLock *lock, LWLockMode mode) : { 0.00 : 68f080: 55 push %rbp : /* : * If we don't have a PGPROC structure, there's no way to wait. This : * should never occur, since MyProc should only be null during shared : * memory initialization. : */ : if (MyProc == NULL) 0.00 : 68f081: 48 83 3d bf e8 4e 00 cmpq $0x0,0x4ee8bf(%rip) # b7d948 0.00 : 68f088: 00 : /* : * Add ourselves to the end of the queue. Mode can be LW_WAIT_UNTIL_FREE here! : */ : static void : LWLockQueueSelf(LWLock *lock, LWLockMode mode) : { 0.00 : 68f089: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:801 6.67 : 68f08c: 41 54 push %r12 0.00 : 68f08e: 41 89 f4 mov %esi,%r12d 0.00 : 68f091: 53 push %rbx 0.00 : 68f092: 48 89 fb mov %rdi,%rbx : /* : * If we don't have a PGPROC structure, there's no way to wait. This : * should never occur, since MyProc should only be null during shared : * memory initialization. : */ : if (MyProc == NULL) 0.00 : 68f095: 0f 84 d7 00 00 00 je 68f172 : elog(PANIC, "cannot wait without a PGPROC structure"); : : pg_atomic_fetch_add_u32(&lock->nwaiters, 1); 0.00 : 68f09b: 48 8d 47 08 lea 0x8(%rdi),%rax : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68f09f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 68f0a4: f0 0f c1 10 lock xadd %edx,(%rax) : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/storage/s_lock.h:224 76.67 : 68f0a8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f0ad: f0 86 07 lock xchg %al,(%rdi) : : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:821 10.00 : 68f0b0: 84 c0 test %al,%al 0.00 : 68f0b2: 75 5c jne 68f110 : #endif : : if (MyProc->lwWaiting) 0.00 : 68f0b4: 48 8b 05 8d e8 4e 00 mov 0x4ee88d(%rip),%rax # b7d948 0.00 : 68f0bb: 80 78 41 00 cmpb $0x0,0x41(%rax) 0.00 : 68f0bf: 0f 85 d7 00 00 00 jne 68f19c : elog(PANIC, "queueing for lock while waiting on another one"); : : MyProc->lwWaiting = true; 0.00 : 68f0c5: c6 40 41 01 movb $0x1,0x41(%rax) : MyProc->lwWaitMode = mode; 0.00 : 68f0c9: 48 8b 05 78 e8 4e 00 mov 0x4ee878(%rip),%rax # b7d948 : : /* LW_WAIT_UNTIL_FREE waiters are always at the front of the queue */ : if (mode == LW_WAIT_UNTIL_FREE) 0.00 : 68f0d0: 41 83 fc 02 cmp $0x2,%r12d : : if (MyProc->lwWaiting) : elog(PANIC, "queueing for lock while waiting on another one"); : : MyProc->lwWaiting = true; : MyProc->lwWaitMode = mode; 0.00 : 68f0d4: 44 88 60 42 mov %r12b,0x42(%rax) : : /* LW_WAIT_UNTIL_FREE waiters are always at the front of the queue */ : if (mode == LW_WAIT_UNTIL_FREE) 0.00 : 68f0d8: 74 4e je 68f128 : * Insert a node at the end of the list. : */ : STATIC_IF_INLINE void : dlist_push_tail(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 68f0da: 48 83 7b 18 00 cmpq $0x0,0x18(%rbx) : dlist_push_head(&lock->waiters, &MyProc->lwWaitLink); : else : dlist_push_tail(&lock->waiters, &MyProc->lwWaitLink); 0.00 : 68f0df: 48 8b 15 62 e8 4e 00 mov 0x4ee862(%rip),%rdx # b7d948 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:834 3.33 : 68f0e6: 48 8d 4b 10 lea 0x10(%rbx),%rcx 0.00 : 68f0ea: 48 8d 72 48 lea 0x48(%rdx),%rsi 0.00 : 68f0ee: 74 68 je 68f158 : dlist_init(head); : : node->next = &head->head; 0.00 : 68f0f0: 48 89 4a 50 mov %rcx,0x50(%rdx) : node->prev = head->head.prev; 0.00 : 68f0f4: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 68f0f8: 48 89 42 48 mov %rax,0x48(%rdx) : node->prev->next = node; 0.00 : 68f0fc: 48 89 70 08 mov %rsi,0x8(%rax) : head->head.prev = node; 0.00 : 68f100: 48 89 73 10 mov %rsi,0x10(%rbx) : : /* Can release the mutex now */ : SpinLockRelease(&lock->mutex); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:837 3.33 : 68f104: c6 03 00 movb $0x0,(%rbx) : } 0.00 : 68f107: 5b pop %rbx 0.00 : 68f108: 41 5c pop %r12 0.00 : 68f10a: c9 leaveq 0.00 : 68f10b: c3 retq 0.00 : 68f10c: 0f 1f 40 00 nopl 0x0(%rax) : pg_atomic_fetch_add_u32(&lock->nwaiters, 1); : : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f110: ba 35 03 00 00 mov $0x335,%edx 0.00 : 68f115: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f11a: e8 21 0f 00 00 callq 690040 0.00 : 68f11f: eb 93 jmp 68f0b4 0.00 : 68f121: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 68f128: 48 83 7b 18 00 cmpq $0x0,0x18(%rbx) : MyProc->lwWaiting = true; : MyProc->lwWaitMode = mode; : : /* LW_WAIT_UNTIL_FREE waiters are always at the front of the queue */ : if (mode == LW_WAIT_UNTIL_FREE) : dlist_push_head(&lock->waiters, &MyProc->lwWaitLink); 0.00 : 68f12d: 48 8b 15 14 e8 4e 00 mov 0x4ee814(%rip),%rdx # b7d948 0.00 : 68f134: 48 8d 4b 10 lea 0x10(%rbx),%rcx 0.00 : 68f138: 48 8d 72 48 lea 0x48(%rdx),%rsi 0.00 : 68f13c: 74 2a je 68f168 : dlist_init(head); : : node->next = head->head.next; 0.00 : 68f13e: 48 8b 43 18 mov 0x18(%rbx),%rax : node->prev = &head->head; 0.00 : 68f142: 48 89 4a 48 mov %rcx,0x48(%rdx) : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ : dlist_init(head); : : node->next = head->head.next; 0.00 : 68f146: 48 89 42 50 mov %rax,0x50(%rdx) : node->prev = &head->head; : node->next->prev = node; 0.00 : 68f14a: 48 89 30 mov %rsi,(%rax) : head->head.next = node; 0.00 : 68f14d: 48 89 73 18 mov %rsi,0x18(%rbx) 0.00 : 68f151: eb b1 jmp 68f104 0.00 : 68f153: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f158: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 68f15c: 48 89 4b 18 mov %rcx,0x18(%rbx) 0.00 : 68f160: eb 8e jmp 68f0f0 0.00 : 68f162: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68f168: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 68f16c: 48 89 4b 18 mov %rcx,0x18(%rbx) 0.00 : 68f170: eb cc jmp 68f13e : * If we don't have a PGPROC structure, there's no way to wait. This : * should never occur, since MyProc should only be null during shared : * memory initialization. : */ : if (MyProc == NULL) : elog(PANIC, "cannot wait without a PGPROC structure"); 0.00 : 68f172: ba 20 d1 8a 00 mov $0x8ad120,%edx 0.00 : 68f177: be 2e 03 00 00 mov $0x32e,%esi 0.00 : 68f17c: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f181: e8 9a c2 0e 00 callq 77b420 0.00 : 68f186: be 80 b6 7b 00 mov $0x7bb680,%esi 0.00 : 68f18b: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68f190: 31 c0 xor %eax,%eax 0.00 : 68f192: e8 99 c0 0e 00 callq 77b230 0.00 : 68f197: e8 34 a3 dd ff callq 4694d0 : #else : SpinLockAcquire(&lock->mutex); : #endif : : if (MyProc->lwWaiting) : elog(PANIC, "queueing for lock while waiting on another one"); 0.00 : 68f19c: ba 20 d1 8a 00 mov $0x8ad120,%edx 0.00 : 68f1a1: be 39 03 00 00 mov $0x339,%esi 0.00 : 68f1a6: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f1ab: e8 70 c2 0e 00 callq 77b420 0.00 : 68f1b0: be d8 d0 8a 00 mov $0x8ad0d8,%esi 0.00 : 68f1b5: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68f1ba: 31 c0 xor %eax,%eax 0.00 : 68f1bc: e8 6f c0 0e 00 callq 77b230 0.00 : 68f1c1: e8 0a a3 dd ff callq 4694d0 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 22.73 ??:0 18.18 ??:0 15.91 ??:0 9.09 ??:0 9.09 ??:0 6.82 ??:0 4.55 ??:0 4.55 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 2.27 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009100 : 0.00 : 9100: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) ??:0 9.09 : 9105: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 910a: 4c 89 d3 mov %r10,%rbx 0.00 : 910d: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 9112: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 9117: 48 83 ec 28 sub $0x28,%rsp 15.91 : 911b: 0f b6 4f 04 movzbl 0x4(%rdi),%ecx 22.73 : 911f: 49 89 fc mov %rdi,%r12 0.00 : 9122: 83 e1 0f and $0xf,%ecx 0.00 : 9125: 48 83 7f 08 00 cmpq $0x0,0x8(%rdi) ??:0 2.27 : 912a: 75 24 jne 9150 0.00 : 912c: 83 f9 06 cmp $0x6,%ecx 0.00 : 912f: 74 1f je 9150 0.00 : 9131: 45 31 e4 xor %r12d,%r12d 0.00 : 9134: 4c 89 e0 mov %r12,%rax 0.00 : 9137: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 913c: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 9141: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 9146: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 914b: 48 83 c4 28 add $0x28,%rsp 0.00 : 914f: c3 retq 0.00 : 9150: 31 c0 xor %eax,%eax 0.00 : 9152: 66 41 83 7c 24 06 00 cmpw $0x0,0x6(%r12) 2.27 : 9159: 0f 94 c0 sete %al 0.00 : 915c: 85 43 3c test %eax,0x3c(%rbx) 0.00 : 915f: 75 d0 jne 9131 0.00 : 9161: b8 67 04 00 00 mov $0x467,%eax 0.00 : 9166: d3 f8 sar %cl,%eax 4.55 : 9168: a8 01 test $0x1,%al 0.00 : 916a: 74 c5 je 9131 0.00 : 916c: 4c 3b 63 28 cmp 0x28(%rbx),%r12 0.00 : 9170: 0f 85 e2 00 00 00 jne 9258 4.55 : 9176: 48 8b 6b 08 mov 0x8(%rbx),%rbp 0.00 : 917a: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 917e: 48 85 ed test %rbp,%rbp 0.00 : 9181: 48 8b 96 30 03 00 00 mov 0x330(%rsi),%rdx 2.27 : 9188: 74 6e je 91f8 0.00 : 918a: 48 85 d2 test %rdx,%rdx 0.00 : 918d: 0f 84 e3 00 00 00 je 9276 0.00 : 9193: 8b 43 38 mov 0x38(%rbx),%eax ??:0 18.18 : 9196: 44 0f b7 2c 42 movzwl (%rdx,%rax,2),%r13d 6.82 : 919b: 4c 89 e8 mov %r13,%rax 0.00 : 919e: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 91a3: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 91a7: 48 c1 e0 03 shl $0x3,%rax 0.00 : 91ab: 48 03 86 e0 02 00 00 add 0x2e0(%rsi),%rax 0.00 : 91b2: 8b 58 08 mov 0x8(%rax),%ebx 9.09 : 91b5: 3b 5d 08 cmp 0x8(%rbp),%ebx 0.00 : 91b8: 75 14 jne 91ce 0.00 : 91ba: 48 8b 38 mov (%rax),%rdi 0.00 : 91bd: 48 8b 75 00 mov 0x0(%rbp),%rsi 0.00 : 91c1: e8 9a d4 00 00 callq 16660 0.00 : 91c6: 85 c0 test %eax,%eax 0.00 : 91c8: 0f 84 66 ff ff ff je 9134 0.00 : 91ce: 8b 45 0c mov 0xc(%rbp),%eax 0.00 : 91d1: 85 c0 test %eax,%eax 0.00 : 91d3: 0f 85 58 ff ff ff jne 9131 0.00 : 91d9: 85 db test %ebx,%ebx 0.00 : 91db: 0f 85 50 ff ff ff jne 9131 0.00 : 91e1: 66 45 85 ed test %r13w,%r13w 0.00 : 91e5: 0f 89 49 ff ff ff jns 9134 0.00 : 91eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 91f0: e9 3c ff ff ff jmpq 9131 0.00 : 91f5: 0f 1f 00 nopl (%rax) 0.00 : 91f8: 48 85 d2 test %rdx,%rdx ??:0 2.27 : 91fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 9200: 0f 84 2e ff ff ff je 9134 0.00 : 9206: 8b 43 38 mov 0x38(%rbx),%eax 0.00 : 9209: 0f b7 0c 42 movzwl (%rdx,%rax,2),%ecx 0.00 : 920d: 8b 43 34 mov 0x34(%rbx),%eax 0.00 : 9210: 83 e0 02 and $0x2,%eax 0.00 : 9213: 83 f8 01 cmp $0x1,%eax 0.00 : 9216: 89 ca mov %ecx,%edx 0.00 : 9218: 19 c0 sbb %eax,%eax 0.00 : 921a: 81 e2 ff 7f 00 00 and $0x7fff,%edx 0.00 : 9220: f7 d0 not %eax 0.00 : 9222: 83 c0 03 add $0x3,%eax 0.00 : 9225: 39 d0 cmp %edx,%eax 0.00 : 9227: 0f 8f 07 ff ff ff jg 9134 0.00 : 922d: 66 85 c9 test %cx,%cx 0.00 : 9230: 0f 88 fb fe ff ff js 9131 0.00 : 9236: 8b 53 30 mov 0x30(%rbx),%edx 0.00 : 9239: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 923c: 85 d2 test %edx,%edx 0.00 : 923e: 89 43 30 mov %eax,0x30(%rbx) 0.00 : 9241: 0f 85 ea fe ff ff jne 9131 0.00 : 9247: 4c 89 23 mov %r12,(%rbx) 0.00 : 924a: 45 31 e4 xor %r12d,%r12d 0.00 : 924d: e9 e2 fe ff ff jmpq 9134 0.00 : 9252: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9258: 41 8b 3c 24 mov (%r12),%edi 0.00 : 925c: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 9260: 48 03 7b 20 add 0x20(%rbx),%rdi 0.00 : 9264: e8 f7 d3 00 00 callq 16660 0.00 : 9269: 85 c0 test %eax,%eax 0.00 : 926b: 0f 84 05 ff ff ff je 9176 0.00 : 9271: e9 bb fe ff ff jmpq 9131 0.00 : 9276: 48 8b 7d 10 mov 0x10(%rbp),%rdi 0.00 : 927a: 48 85 ff test %rdi,%rdi 0.00 : 927d: 0f 1f 00 nopl (%rax) 0.00 : 9280: 0f 84 ae fe ff ff je 9134 0.00 : 9286: 66 90 xchg %ax,%ax 0.00 : 9288: e8 f3 58 00 00 callq eb80 <_dl_name_match_p> 0.00 : 928d: 85 c0 test %eax,%eax 0.00 : 928f: 90 nop 0.00 : 9290: 0f 84 9e fe ff ff je 9134 0.00 : 9296: 48 8d 0d 36 0a 01 00 lea 0x10a36(%rip),%rcx # 19cd3 <__PRETTY_FUNCTION__.12100> 0.00 : 929d: 48 8d 35 30 09 01 00 lea 0x10930(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 92a4: 48 8d 3d 65 23 01 00 lea 0x12365(%rip),%rdi # 1b610 <__PRETTY_FUNCTION__.3644+0x129f> 0.00 : 92ab: ba a8 00 00 00 mov $0xa8,%edx 0.00 : 92b0: e8 bb ba 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 26.67 ??:0 16.67 ??:0 16.67 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 3.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000002120 <__nf_conntrack_find_get>: ??:0 26.67 : 2120: 41 56 push %r14 0.00 : 2152: 49 89 rex (bad) 0.00 : 2154: fe 41 55 mov %rsi,%rdi 0.00 : 2157: 41 89 cd 41 54 55 89 lea 0x0(,%rax,8),%rdx 0.00 : 215e: f5 0.00 : 215f: 53 48 89 sub %rax,%rdx 0.00 : 2162: d3 44 0f b7 e6 44 89 lea 0x8(,%rdx,8),%rdx 0.00 : 2169: e6 0.00 : 216a: 44 89 e9 sub %rdx,%rdi 0.00 : 216d: 48 89 da 4c mov 0x78(%rdi),%rax ??:0 3.33 : 2171: 89 f7 e8 test $0x2,%ah 0.00 : 2174: 68 fe jne 21b8 3.33 : 2176: ff ff mov (%rdi),%edx ??:0 16.67 : 2178: 48 85 test %edx,%edx 0.00 : 217a: c0 48 je 21b8 0.00 : 217c: 89 c6 74 70 lea 0x1(%rdx),%r8d ??:0 3.33 : 2180: 0f b6 mov %edx,%eax 3.33 : 2182: 40 37 48 89 f7 lock cmpxchg %r8d,(%rdi) ??:0 26.67 : 2187: 48 8d cmp %edx,%eax 0.00 : 2189: 14 c5 mov %eax,%ecx 0.00 : 218b: 00 00 jne 2192 0.00 : 218d: 00 00 jmp 21a5 0.00 : 218f: 48 nop 0.00 : 2190: 29 c2 mov %eax,%ecx 0.00 : 2192: 48 8d test %ecx,%ecx 0.00 : 2194: 14 d5 je 21b8 0.00 : 2196: 08 00 00 00 lea 0x1(%rcx),%r8d 0.00 : 219a: 48 29 mov %ecx,%eax 0.00 : 219c: d7 48 8b 47 78 lock cmpxchg %r8d,(%rdi) 0.00 : 21a1: f6 c4 cmp %ecx,%eax 0.00 : 21a3: 02 75 jne 2190 0.00 : 21a5: 42 8b mov (%rbx),%eax 0.00 : 21a7: 17 85 d2 cmp 0x10(%rsi),%eax 0.00 : 21aa: 74 3c je 21d0 0.00 : 21ac: 44 8d 42 01 89 callq 5d0 0.00 : 21b1: d0 f0 jmp 2137 0.00 : 21b3: 44 0f b1 07 39 nopl 0x0(%rax,%rax,1) 0.00 : 21b8: d0 89 xor %esi,%esi 0.00 : 21ba: c1 75 05 eb 16 90 nopw 0x0(%rax,%rax,1) 0.00 : 21c0: 89 pop %rbx ??:0 3.33 : 21c1: c1 pop %rbp 0.00 : 21c2: 85 c9 pop %r12 0.00 : 21c4: 74 22 pop %r13 0.00 : 21c6: 44 8d 41 mov %rsi,%rax 0.00 : 21c9: 01 89 pop %r14 0.00 : 21cb: c8 retq 0.00 : 21cc: f0 44 0f b1 nopl 0x0(%rax) 0.00 : 21d0: 07 39 c8 mov 0x4(%rbx),%eax 0.00 : 21d3: 75 eb 8b cmp 0x14(%rsi),%eax 0.00 : 21d6: 03 3b jne 21ac 0.00 : 21d8: 46 10 74 mov 0x8(%rbx),%eax 0.00 : 21db: 24 e8 1f cmp 0x18(%rsi),%eax 0.00 : 21de: e4 ff jne 21ac 0.00 : 21e0: ff eb 84 mov 0xc(%rbx),%eax 3.33 : 21e3: 0f 1f 44 cmp 0x1c(%rsi),%eax 0.00 : 21e6: 00 00 jne 21ac 0.00 : 21e8: 31 f6 66 mov 0x10(%rbx),%eax 0.00 : 21eb: 0f 1f 44 cmp 0x20(%rsi),%eax 0.00 : 21ee: 00 00 jne 21ac 0.00 : 21f0: 5b 5d 41 mov 0x14(%rbx),%eax 0.00 : 21f3: 5c 41 5d cmp 0x24(%rsi),%eax 0.00 : 21f6: 48 89 jne 21ac 0.00 : 21f8: f0 41 5e mov 0x18(%rbx),%eax 0.00 : 21fb: c3 0f 1f cmp 0x28(%rsi),%eax 0.00 : 21fe: 40 00 jne 21ac 0.00 : 2200: 8b 43 04 mov 0x1c(%rbx),%eax 3.33 : 2203: 3b 46 14 cmp 0x2c(%rsi),%eax 0.00 : 2206: 75 d4 jne 21ac 0.00 : 2208: 8b 43 08 mov 0x20(%rbx),%eax 0.00 : 220b: 3b 46 18 cmp 0x30(%rsi),%eax 0.00 : 220e: 75 cc jne 21ac 0.00 : 2210: 8b 43 0c mov 0x24(%rbx),%edx 0.00 : 2213: 3b 46 1c mov 0x34(%rsi),%eax 0.00 : 2216: 75 c4 8b 43 10 3b and $0xffffff,%edx 0.00 : 221c: 46 20 75 bc 8b and $0xffffff,%eax 0.00 : 2221: 43 14 cmp %eax,%edx 0.00 : 2223: 3b 46 jne 21ac 0.00 : 2225: 24 75 b4 8b 43 18 3b mov 0xe0(%rdi),%rdx 0.00 : 222c: 46 28 75 test %rdx,%rdx 0.00 : 222f: ac 8b je 2258 0.00 : 2231: 43 1c 3b 46 movzbl 0x14(%rdx),%eax 0.00 : 2235: 2c 75 test %al,%al 0.00 : 2237: a4 8b je 2258 0.00 : 2239: 43 20 3b movzbl %al,%eax 0.00 : 223c: 46 30 75 add %rdx,%rax 0.00 : 223f: 9c 8b je 2258 0.00 : 2241: 53 24 8b movzwl (%rax),%eax 3.33 : 2244: 46 34 81 cmp %ax,%bp 0.00 : 2247: e2 ff ff ff 00 25 je 21c0 0.00 : 224d: ff ff ff nopl (%rax) 0.00 : 2250: 00 39 c2 75 87 jmpq 21ac 0.00 : 2255: 48 8b 97 nopl (%rax) 3.33 : 2258: e0 00 xor %eax,%eax 0.00 : 225a: 00 00 jmp 2244 : 225c: 48 85 d2 74 nopl 0x0(%rax) : 2260: 27 0f b6 42 sub $0x18,%rsp : 2264: 14 84 c0 74 mov %rbx,(%rsp) : 2268: 1f 0f b6 movzwl %si,%ebx : 226b: c0 48 01 d0 74 mov %r12,0x8(%rsp) : 2270: 17 0f b7 00 66 mov %r13,0x10(%rsp) : 2275: 39 c5 0f mov %rdx,%r12 : 2278: 84 73 ff mov %rdi,%r13 : 227b: ff ff mov %ebx,%esi : 227d: 0f 1f 00 mov %rdx,%rdi : 2280: e9 57 ff ff ff callq 0 : 2285: 0f 1f 00 mov %r12,%rdx : 2288: 31 c0 mov %ebx,%esi : 228a: eb e8 0f mov %r13,%rdi Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 34.48 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:154 20.69 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:154 13.79 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:154 10.34 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:170 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:154 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:155 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:163 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:167 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:167 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:163 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004907c0 : : return hash_any((unsigned char *) key, keylen); : } : : Datum : hashtext(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:154 13.79 : 4907c0: 55 push %rbp 34.48 : 4907c1: 48 89 e5 mov %rsp,%rbp 0.00 : 4907c4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 20.69 : 4907c8: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 4907cc: 49 89 fd mov %rdi,%r13 0.00 : 4907cf: 4c 89 65 f0 mov %r12,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:154 3.45 : 4907d3: 48 83 ec 20 sub $0x20,%rsp : text *key = PG_GETARG_TEXT_PP(0); 0.00 : 4907d7: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:155 3.45 : 4907db: e8 00 e5 2e 00 callq 77ece0 0.00 : 4907e0: 48 89 c3 mov %rax,%rbx : /* : * Note: this is currently identical in behavior to hashvarlena, but keep : * it as a separate function in case we someday want to do something : * different in non-C locales. (See also hashbpchar, if so.) : */ : result = hash_any((unsigned char *) VARDATA_ANY(key), 0.00 : 4907e3: 0f b6 00 movzbl (%rax),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:163 3.45 : 4907e6: 3c 01 cmp $0x1,%al 0.00 : 4907e8: 74 56 je 490840 0.00 : 4907ea: a8 01 test $0x1,%al 0.00 : 4907ec: 75 3a jne 490828 0.00 : 4907ee: 8b 03 mov (%rbx),%eax 0.00 : 4907f0: 48 8d 7b 04 lea 0x4(%rbx),%rdi 0.00 : 4907f4: c1 e8 02 shr $0x2,%eax 0.00 : 4907f7: 8d 70 fc lea -0x4(%rax),%esi 0.00 : 4907fa: e8 51 fb ff ff callq 490350 : VARSIZE_ANY_EXHDR(key)); : : /* Avoid leaking memory for toasted inputs */ : PG_FREE_IF_COPY(key, 0); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:167 3.45 : 4907ff: 49 3b 5d 20 cmp 0x20(%r13),%rbx : /* : * Note: this is currently identical in behavior to hashvarlena, but keep : * it as a separate function in case we someday want to do something : * different in non-C locales. (See also hashbpchar, if so.) : */ : result = hash_any((unsigned char *) VARDATA_ANY(key), 0.00 : 490803: 49 89 c4 mov %rax,%r12 : VARSIZE_ANY_EXHDR(key)); : : /* Avoid leaking memory for toasted inputs */ : PG_FREE_IF_COPY(key, 0); 3.45 : 490806: 74 08 je 490810 0.00 : 490808: 48 89 df mov %rbx,%rdi 0.00 : 49080b: e8 70 83 30 00 callq 798b80 : : return result; : } 0.00 : 490810: 4c 89 e0 mov %r12,%rax 0.00 : 490813: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 490817: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 49081b: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 49081f: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:170 10.34 : 490820: c3 retq 0.00 : 490821: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Note: this is currently identical in behavior to hashvarlena, but keep : * it as a separate function in case we someday want to do something : * different in non-C locales. (See also hashbpchar, if so.) : */ : result = hash_any((unsigned char *) VARDATA_ANY(key), 0.00 : 490828: d0 e8 shr %al 0.00 : 49082a: 0f b6 c0 movzbl %al,%eax 0.00 : 49082d: 8d 70 ff lea -0x1(%rax),%esi /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:163 3.45 : 490830: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 490834: eb c4 jmp 4907fa 0.00 : 490836: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 49083d: 00 00 00 0.00 : 490840: 0f b6 43 01 movzbl 0x1(%rbx),%eax 0.00 : 490844: be 08 00 00 00 mov $0x8,%esi 0.00 : 490849: 3c 01 cmp $0x1,%al 0.00 : 49084b: 74 e3 je 490830 0.00 : 49084d: 3c 12 cmp $0x12,%al 0.00 : 49084f: 40 b6 10 mov $0x10,%sil 0.00 : 490852: b8 01 00 00 00 mov $0x1,%eax 0.00 : 490857: 0f 45 f0 cmovne %eax,%esi 0.00 : 49085a: eb d4 jmp 490830 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 39.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1245 10.71 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1245 10.71 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1259 7.14 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1245 7.14 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1259 7.14 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1267 3.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1245 3.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1245 3.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1255 3.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1256 3.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1259 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679e90 : : * this API is inappropriate for libaio, which wants to have a buffer provided : * to read into. : */ : int : FilePrefetch(File file, off_t offset, int amount) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1245 7.14 : 679e90: 55 push %rbp 39.29 : 679e91: 48 89 e5 mov %rsp,%rbp 0.00 : 679e94: 48 89 5d e8 mov %rbx,-0x18(%rbp) 10.71 : 679e98: 4c 89 65 f0 mov %r12,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1245 3.57 : 679e9c: 89 fb mov %edi,%ebx 0.00 : 679e9e: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 679ea2: 48 83 ec 20 sub $0x20,%rsp 3.57 : 679ea6: 49 89 f5 mov %rsi,%r13 0.00 : 679ea9: 41 89 d4 mov %edx,%r12d : : DO_DB(elog(LOG, "FilePrefetch: %d (%s) " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) offset, amount)); : : returnCode = FileAccess(file); /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1255 3.57 : 679eac: e8 6f fa ff ff callq 679920 : if (returnCode < 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1256 3.57 : 679eb1: 85 c0 test %eax,%eax 0.00 : 679eb3: 78 33 js 679ee8 : return returnCode; : : returnCode = posix_fadvise(VfdCache[file].fd, offset, amount, 0.00 : 679eb5: 48 8b 0d dc 32 50 00 mov 0x5032dc(%rip),%rcx # b7d198 0.00 : 679ebc: 48 63 c3 movslq %ebx,%rax 0.00 : 679ebf: 49 63 d4 movslq %r12d,%rdx /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1259 7.14 : 679ec2: 48 c1 e0 06 shl $0x6,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1259 3.57 : 679ec6: 4c 89 ee mov %r13,%rsi : return returnCode; : #else : Assert(FileIsValid(file)); : return 0; : #endif : } 0.00 : 679ec9: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1267 7.14 : 679ecd: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 679ed1: 4c 8b 6d f8 mov -0x8(%rbp),%r13 : : returnCode = FileAccess(file); : if (returnCode < 0) : return returnCode; : : returnCode = posix_fadvise(VfdCache[file].fd, offset, amount, 0.00 : 679ed5: 8b 3c 01 mov (%rcx,%rax,1),%edi : return returnCode; : #else : Assert(FileIsValid(file)); : return 0; : #endif : } 0.00 : 679ed8: c9 leaveq : : returnCode = FileAccess(file); : if (returnCode < 0) : return returnCode; : : returnCode = posix_fadvise(VfdCache[file].fd, offset, amount, /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1259 10.71 : 679ed9: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 679ede: e9 5d fc de ff jmpq 469b40 0.00 : 679ee3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return returnCode; : #else : Assert(FileIsValid(file)); : return 0; : #endif : } 0.00 : 679ee8: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 679eec: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 679ef0: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 679ef4: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1079 19.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1081 19.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1083 10.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1079 10.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1079 8.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1080 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1079 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1081 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1083 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1084 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1084 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1084 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d2f90 : : PG_RETURN_INT32(float8_cmp_internal(arg1, arg2)); : } : : static int : btfloat8fastcmp(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1079 19.15 : 6d2f90: 55 push %rbp 10.64 : 6d2f91: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1079 2.13 : 6d2f94: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1079 10.64 : 6d2f95: 48 89 f3 mov %rsi,%rbx 0.00 : 6d2f98: 48 83 ec 08 sub $0x8,%rsp : float8 arg1 = DatumGetFloat8(x); 0.00 : 6d2f9c: e8 2f aa 0a 00 callq 77d9d0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1080 8.51 : 6d2fa1: f2 0f 11 45 f0 movsd %xmm0,-0x10(%rbp) : float8 arg2 = DatumGetFloat8(y); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1081 19.15 : 6d2fa6: 48 89 df mov %rbx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1081 2.13 : 6d2fa9: e8 22 aa 0a 00 callq 77d9d0 : : return float8_cmp_internal(arg1, arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1083 19.15 : 6d2fae: 66 0f 28 c8 movapd %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1083 2.13 : 6d2fb2: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1084 2.13 : 6d2fb7: 48 83 c4 08 add $0x8,%rsp 2.13 : 6d2fbb: 5b pop %rbx 2.13 : 6d2fbc: c9 leaveq : btfloat8fastcmp(Datum x, Datum y, SortSupport ssup) : { : float8 arg1 = DatumGetFloat8(x); : float8 arg2 = DatumGetFloat8(y); : : return float8_cmp_internal(arg1, arg2); 0.00 : 6d2fbd: e9 5e ff ff ff jmpq 6d2f20 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 19.23 ??:0 15.38 ??:0 15.38 ??:0 11.54 ??:0 7.69 ??:0 7.69 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000006ec80 : ??:0 19.23 : 6ec80: 55 push %rbp 11.54 : 6ec81: 89 fd mov %edi,%ebp 0.00 : 6ec83: 53 push %rbx 0.00 : 6ec84: 48 89 f3 mov %rsi,%rbx 0.00 : 6ec87: 48 83 ec 08 sub $0x8,%rsp 0.00 : 6ec8b: 66 83 3e 00 cmpw $0x0,(%rsi) 0.00 : 6ec8f: 78 56 js 6ece7 ??:0 3.85 : 6ec91: 4c 8b 96 88 00 00 00 mov 0x88(%rsi),%r10 0.00 : 6ec98: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 6ec9f: 00 00 0.00 : 6eca1: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 6eca5: 74 3b je 6ece2 ??:0 15.38 : 6eca7: 31 d2 xor %edx,%edx 0.00 : 6eca9: be 01 00 00 00 mov $0x1,%esi 0.00 : 6ecae: 89 d0 mov %edx,%eax 0.00 : 6ecb0: 83 3d fd 89 30 00 00 cmpl $0x0,0x3089fd(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6ecb7: 74 0d je 6ecc6 0.00 : 6ecb9: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 6ecbe: 0f 85 f4 00 00 00 jne 6edb8 <_L_lock_35> 0.00 : 6ecc4: eb 0a jmp 6ecd0 0.00 : 6ecc6: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : 6ecca: 0f 85 e8 00 00 00 jne 6edb8 <_L_lock_35> 0.00 : 6ecd0: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ecd7: 4c 89 40 08 mov %r8,0x8(%rax) ??:0 3.85 : 6ecdb: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 6ece2: 41 83 42 04 01 addl $0x1,0x4(%r10) 3.85 : 6ece7: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 6eceb: 48 3b 43 30 cmp 0x30(%rbx),%rax 0.00 : 6ecef: 73 68 jae 6ed59 0.00 : 6ecf1: 40 88 28 mov %bpl,(%rax) 0.00 : 6ecf4: 48 83 c0 01 add $0x1,%rax 3.85 : 6ecf8: 40 0f b6 f5 movzbl %bpl,%esi 3.85 : 6ecfc: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 6ed00: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 6ed04: 78 4a js 6ed50 0.00 : 6ed06: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ed0d: 8b 42 04 mov 0x4(%rdx),%eax ??:0 15.38 : 6ed10: 83 e8 01 sub $0x1,%eax 0.00 : 6ed13: 85 c0 test %eax,%eax 0.00 : 6ed15: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6ed18: 75 36 jne 6ed50 0.00 : 6ed1a: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ed21: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6ed28: 00 0.00 : 6ed29: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ed30: 83 3d 7d 89 30 00 00 cmpl $0x0,0x30897d(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6ed37: 74 0b je 6ed44 0.00 : 6ed39: f0 ff 0a lock decl (%rdx) 0.00 : 6ed3c: 0f 85 91 00 00 00 jne 6edd3 <_L_unlock_82> 0.00 : 6ed42: eb 08 jmp 6ed4c ??:0 3.85 : 6ed44: ff 0a decl (%rdx) 0.00 : 6ed46: 0f 85 87 00 00 00 jne 6edd3 <_L_unlock_82> 0.00 : 6ed4c: 0f 1f 40 00 nopl 0x0(%rax) ??:0 7.69 : 6ed50: 48 83 c4 08 add $0x8,%rsp 7.69 : 6ed54: 89 f0 mov %esi,%eax 0.00 : 6ed56: 5b pop %rbx 0.00 : 6ed57: 5d pop %rbp 0.00 : 6ed58: c3 retq 0.00 : 6ed59: 40 0f b6 f5 movzbl %bpl,%esi 0.00 : 6ed5d: 48 89 df mov %rbx,%rdi 0.00 : 6ed60: e8 3b 50 00 00 callq 73da0 <__overflow> 0.00 : 6ed65: 89 c6 mov %eax,%esi 0.00 : 6ed67: eb 97 jmp 6ed00 0.00 : 6ed69: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 6ed6d: 49 89 c0 mov %rax,%r8 0.00 : 6ed70: 78 3e js 6edb0 0.00 : 6ed72: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ed79: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6ed7c: 83 e8 01 sub $0x1,%eax 0.00 : 6ed7f: 85 c0 test %eax,%eax 0.00 : 6ed81: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6ed84: 75 2a jne 6edb0 0.00 : 6ed86: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ed8d: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6ed94: 00 0.00 : 6ed95: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ed9c: 83 3d 11 89 30 00 00 cmpl $0x0,0x308911(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6eda3: 74 07 je 6edac 0.00 : 6eda5: f0 ff 0a lock decl (%rdx) 0.00 : 6eda8: 75 44 jne 6edee <_L_unlock_148> 0.00 : 6edaa: eb 04 jmp 6edb0 0.00 : 6edac: ff 0a decl (%rdx) 0.00 : 6edae: 75 3e jne 6edee <_L_unlock_148> 0.00 : 6edb0: 4c 89 c7 mov %r8,%rdi 0.00 : 6edb3: e8 a8 01 fb ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /bin/bash ---------------------------------------------- 8.70 ??:0 8.70 ??:0 8.70 ??:0 8.70 ??:0 8.70 ??:0 8.70 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000427060 : 0.00 : 427060: 41 57 push %r15 0.00 : 427062: 41 89 cf mov %ecx,%r15d 0.00 : 427065: 41 56 push %r14 0.00 : 427067: 41 55 push %r13 0.00 : 427069: 41 54 push %r12 0.00 : 42706b: 41 89 f4 mov %esi,%r12d 0.00 : 42706e: 55 push %rbp 0.00 : 42706f: 48 89 fd mov %rdi,%rbp 0.00 : 427072: 53 push %rbx 0.00 : 427073: 48 83 ec 78 sub $0x78,%rsp 0.00 : 427077: 44 8b 0d be f2 26 00 mov 0x26f2be(%rip),%r9d # 69633c 0.00 : 42707e: 89 54 24 10 mov %edx,0x10(%rsp) 0.00 : 427082: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 427087: 45 85 c9 test %r9d,%r9d 0.00 : 42708a: 0f 85 a0 03 00 00 jne 427430 0.00 : 427090: 44 8b 05 a9 f2 26 00 mov 0x26f2a9(%rip),%r8d # 696340 0.00 : 427097: 45 85 c0 test %r8d,%r8d 0.00 : 42709a: 0f 85 90 03 00 00 jne 427430 0.00 : 4270a0: 48 85 ff test %rdi,%rdi 0.00 : 4270a3: 0f 84 15 01 00 00 je 4271be 0.00 : 4270a9: 8b 3d 5d da 26 00 mov 0x26da5d(%rip),%edi # 694b0c 0.00 : 4270af: 49 bd ff ff ff ff 40 movabs $0x40ffffffff,%r13 0.00 : 4270b6: 00 00 00 0.00 : 4270b9: 48 bb 0d 00 00 00 40 movabs $0x400000000d,%rbx 0.00 : 4270c0: 00 00 00 0.00 : 4270c3: 85 ff test %edi,%edi 0.00 : 4270c5: 0f 85 f3 00 00 00 jne 4271be 0.00 : 4270cb: 8b 05 6f ee 26 00 mov 0x26ee6f(%rip),%eax # 695f40 0.00 : 4270d1: 85 c0 test %eax,%eax 0.00 : 4270d3: 0f 85 54 01 00 00 jne 42722d 0.00 : 4270d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4270e0: 8b 05 52 ee 26 00 mov 0x26ee52(%rip),%eax # 695f38 0.00 : 4270e6: 85 c0 test %eax,%eax 0.00 : 4270e8: 0f 85 58 01 00 00 jne 427246 0.00 : 4270ee: e8 ad ee 01 00 callq 445fa0 0.00 : 4270f3: 8b 45 04 mov 0x4(%rbp),%eax ??:0 8.70 : 4270f6: 8b 15 04 da 26 00 mov 0x26da04(%rip),%edx # 694b00 0.00 : 4270fc: 48 89 2d 3d d8 26 00 mov %rbp,0x26d83d(%rip) # 694940 0.00 : 427103: 41 89 c6 mov %eax,%r14d 0.00 : 427106: 41 c1 ee 02 shr $0x2,%r14d 0.00 : 42710a: 41 83 e6 01 and $0x1,%r14d 0.00 : 42710e: 85 d2 test %edx,%edx 0.00 : 427110: 74 0b je 42711d 0.00 : 427112: 45 85 f6 test %r14d,%r14d 0.00 : 427115: 74 06 je 42711d 0.00 : 427117: 83 c8 08 or $0x8,%eax 0.00 : 42711a: 89 45 04 mov %eax,0x4(%rbp) 0.00 : 42711d: 4c 89 e8 mov %r13,%rax 0.00 : 427120: 48 23 45 00 and 0x0(%rbp),%rax 0.00 : 427124: 48 39 d8 cmp %rbx,%rax 0.00 : 427127: 0f 84 4b 03 00 00 je 427478 0.00 : 42712d: 8b 4d 00 mov 0x0(%rbp),%ecx 0.00 : 427130: 83 f9 0d cmp $0xd,%ecx 0.00 : 427133: 74 2a je 42715f 0.00 : 427135: 8b 55 04 mov 0x4(%rbp),%edx 0.00 : 427138: f6 c2 03 test $0x3,%dl 0.00 : 42713b: 75 22 jne 42715f 0.00 : 42713d: 83 f9 0c cmp $0xc,%ecx 0.00 : 427140: 0f 87 9a 00 00 00 ja 4271e0 0.00 : 427146: b8 01 00 00 00 mov $0x1,%eax 0.00 : 42714b: 48 d3 e0 shl %cl,%rax 0.00 : 42714e: a9 af 1f 00 00 test $0x1faf,%eax 0.00 : 427153: 0f 84 87 00 00 00 je 4271e0 0.00 : 427159: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 42715d: 74 71 je 4271d0 0.00 : 42715f: 48 89 ef mov %rbp,%rdi 0.00 : 427162: e8 29 db ff ff callq 424c90 0.00 : 427167: 48 89 ef mov %rbp,%rdi 0.00 : 42716a: 48 89 c3 mov %rax,%rbx 0.00 : 42716d: e8 1e db ff ff callq 424c90 0.00 : 427172: 48 89 c7 mov %rax,%rdi 0.00 : 427175: e8 76 f2 fe ff callq 4163f0 0.00 : 42717a: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 42717e: e8 3d 11 03 00 callq 4582c0 0.00 : 427183: 48 89 de mov %rbx,%rsi 0.00 : 427186: 48 89 c7 mov %rax,%rdi 0.00 : 427189: e8 e2 f7 fe ff callq 416970 0.00 : 42718e: 44 89 e6 mov %r12d,%esi 0.00 : 427191: 48 89 c7 mov %rax,%rdi 0.00 : 427194: e8 67 09 01 00 callq 437b00 0.00 : 427199: 85 c0 test %eax,%eax 0.00 : 42719b: 89 c3 mov %eax,%ebx 0.00 : 42719d: 0f 84 f4 0b 00 00 je 427d97 0.00 : 4271a3: 8b 7c 24 10 mov 0x10(%rsp),%edi 0.00 : 4271a7: 44 89 fe mov %r15d,%esi 0.00 : 4271aa: e8 41 ee ff ff callq 425ff0 0.00 : 4271af: e8 1c 12 01 00 callq 4383d0 0.00 : 4271b4: 41 83 c7 01 add $0x1,%r15d 0.00 : 4271b8: 0f 84 8a 02 00 00 je 427448 0.00 : 4271be: 31 c0 xor %eax,%eax 0.00 : 4271c0: 48 83 c4 78 add $0x78,%rsp 0.00 : 4271c4: 5b pop %rbx 0.00 : 4271c5: 5d pop %rbp 0.00 : 4271c6: 41 5c pop %r12 0.00 : 4271c8: 41 5d pop %r13 0.00 : 4271ca: 41 5e pop %r14 0.00 : 4271cc: 41 5f pop %r15 0.00 : 4271ce: c3 retq 0.00 : 4271cf: 90 nop 0.00 : 4271d0: 83 7c 24 10 ff cmpl $0xffffffff,0x10(%rsp) 0.00 : 4271d5: 75 88 jne 42715f 0.00 : 4271d7: 45 85 e4 test %r12d,%r12d 0.00 : 4271da: 0f 85 7f ff ff ff jne 42715f 0.00 : 4271e0: 84 d2 test %dl,%dl 0.00 : 4271e2: 79 6c jns 427250 0.00 : 4271e4: 45 85 e4 test %r12d,%r12d 0.00 : 4271e7: 0f 84 b3 02 00 00 je 4274a0 0.00 : 4271ed: 8b 05 49 f1 26 00 mov 0x26f149(%rip),%eax # 69633c 0.00 : 4271f3: 83 ca 02 or $0x2,%edx 0.00 : 4271f6: 89 55 04 mov %edx,0x4(%rbp) 0.00 : 4271f9: 85 c0 test %eax,%eax 0.00 : 4271fb: 0f 85 2f 02 00 00 jne 427430 0.00 : 427201: 8b 35 39 f1 26 00 mov 0x26f139(%rip),%esi # 696340 0.00 : 427207: 85 f6 test %esi,%esi 0.00 : 427209: 0f 85 21 02 00 00 jne 427430 0.00 : 42720f: 8b 0d f7 d8 26 00 mov 0x26d8f7(%rip),%ecx # 694b0c 0.00 : 427215: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 42721b: 85 c9 test %ecx,%ecx 0.00 : 42721d: 75 9f jne 4271be 0.00 : 42721f: 8b 05 1b ed 26 00 mov 0x26ed1b(%rip),%eax # 695f40 0.00 : 427225: 85 c0 test %eax,%eax 0.00 : 427227: 0f 84 b3 fe ff ff je 4270e0 0.00 : 42722d: 8b 3d 0d ed 26 00 mov 0x26ed0d(%rip),%edi # 695f40 0.00 : 427233: e8 58 09 02 00 callq 447b90 0.00 : 427238: 8b 05 fa ec 26 00 mov 0x26ecfa(%rip),%eax # 695f38 0.00 : 42723e: 85 c0 test %eax,%eax 0.00 : 427240: 0f 84 a8 fe ff ff je 4270ee 0.00 : 427246: e8 45 0b 02 00 callq 447d90 0.00 : 42724b: e9 9e fe ff ff jmpq 4270ee 0.00 : 427250: 83 f9 0c cmp $0xc,%ecx 0.00 : 427253: 77 28 ja 42727d 0.00 : 427255: b8 01 00 00 00 mov $0x1,%eax 0.00 : 42725a: 48 d3 e0 shl %cl,%rax 0.00 : 42725d: a9 af 1f 00 00 test $0x1faf,%eax 0.00 : 427262: 74 19 je 42727d 0.00 : 427264: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 427268: 31 ff xor %edi,%edi 0.00 : 42726a: 48 85 c0 test %rax,%rax 0.00 : 42726d: 74 12 je 427281 0.00 : 42726f: 48 89 c7 mov %rax,%rdi 0.00 : 427272: e8 29 d4 02 00 callq 4546a0 0.00 : 427277: 89 05 0b f9 26 00 mov %eax,0x26f90b(%rip) # 696b88 0.00 : 42727d: 48 8b 7d 10 mov 0x10(%rbp),%rdi ??:0 4.35 : 427281: be 03 00 00 00 mov $0x3,%esi 0.00 : 427286: e8 75 e7 02 00 callq 455a00 0.00 : 42728b: 85 c0 test %eax,%eax 0.00 : 42728d: 0f 85 22 0b 00 00 jne 427db5 0.00 : 427293: 48 8b 3d 7e d6 26 00 mov 0x26d67e(%rip),%rdi # 694918 0.00 : 42729a: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 4272a1: 00 00 0.00 : 4272a3: c6 44 24 67 00 movb $0x0,0x67(%rsp) 0.00 : 4272a8: 48 85 ff test %rdi,%rdi 0.00 : 4272ab: 74 2c je 4272d9 0.00 : 4272ad: e8 ee 8c 00 00 callq 42ffa0 0.00 : 4272b2: 48 8b 3d 5f d6 26 00 mov 0x26d65f(%rip),%rdi # 694918 0.00 : 4272b9: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 4272be: e8 8d e6 ff ff callq 425950 0.00 : 4272c3: 48 83 7c 24 18 00 cmpq $0x0,0x18(%rsp) 0.00 : 4272c9: 48 c7 05 44 d6 26 00 movq $0x0,0x26d644(%rip) # 694918 0.00 : 4272d0: 00 00 00 00 0.00 : 4272d4: 0f 95 44 24 67 setne 0x67(%rsp) 0.00 : 4272d9: 48 8b 3d 40 d6 26 00 mov 0x26d640(%rip),%rdi # 694920 0.00 : 4272e0: 48 c7 44 24 20 00 00 movq $0x0,0x20(%rsp) 0.00 : 4272e7: 00 00 0.00 : 4272e9: c6 44 24 65 00 movb $0x0,0x65(%rsp) 0.00 : 4272ee: 48 85 ff test %rdi,%rdi 0.00 : 4272f1: 74 2c je 42731f 0.00 : 4272f3: e8 a8 8c 00 00 callq 42ffa0 0.00 : 4272f8: 48 8b 3d 21 d6 26 00 mov 0x26d621(%rip),%rdi # 694920 0.00 : 4272ff: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 427304: e8 47 e6 ff ff callq 425950 0.00 : 427309: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 42730f: 48 c7 05 06 d6 26 00 movq $0x0,0x26d606(%rip) # 694920 0.00 : 427316: 00 00 00 00 0.00 : 42731a: 0f 95 44 24 65 setne 0x65(%rsp) 0.00 : 42731f: 0f b6 44 24 65 movzbl 0x65(%rsp),%eax 0.00 : 427324: 0a 44 24 67 or 0x67(%rsp),%al 0.00 : 427328: 88 44 24 17 mov %al,0x17(%rsp) 0.00 : 42732c: 74 0a je 427338 4.35 : 42732e: bf 78 48 47 00 mov $0x474878,%edi 0.00 : 427333: e8 88 fb 01 00 callq 446ec0 0.00 : 427338: 80 7c 24 67 00 cmpb $0x0,0x67(%rsp) 0.00 : 42733d: 74 11 je 427350 0.00 : 42733f: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : 427344: bf 30 65 42 00 mov $0x426530,%edi 0.00 : 427349: 31 c0 xor %eax,%eax 0.00 : 42734b: e8 50 fb 01 00 callq 446ea0 0.00 : 427350: 80 7c 24 65 00 cmpb $0x0,0x65(%rsp) 0.00 : 427355: 74 11 je 427368 0.00 : 427357: 48 8b 74 24 20 mov 0x20(%rsp),%rsi 0.00 : 42735c: bf 50 59 42 00 mov $0x425950,%edi 0.00 : 427361: 31 c0 xor %eax,%eax 0.00 : 427363: e8 38 fb 01 00 callq 446ea0 0.00 : 427368: 8b 5d 04 mov 0x4(%rbp),%ebx 0.00 : 42736b: 8b 05 cf eb 26 00 mov 0x26ebcf(%rip),%eax # 695f40 0.00 : 427371: c1 eb 03 shr $0x3,%ebx 0.00 : 427374: 83 e3 01 and $0x1,%ebx 0.00 : 427377: 85 c0 test %eax,%eax 0.00 : 427379: 74 0b je 427386 0.00 : 42737b: 8b 3d bf eb 26 00 mov 0x26ebbf(%rip),%edi # 695f40 0.00 : 427381: e8 0a 08 02 00 callq 447b90 0.00 : 427386: 8b 05 ac eb 26 00 mov 0x26ebac(%rip),%eax # 695f38 0.00 : 42738c: 85 c0 test %eax,%eax 0.00 : 42738e: 74 05 je 427395 0.00 : 427390: e8 fb 09 02 00 callq 447d90 0.00 : 427395: 8b 55 00 mov 0x0(%rbp),%edx 0.00 : 427398: 83 fa 0c cmp $0xc,%edx 0.00 : 42739b: 0f 86 25 01 00 00 jbe 4274c6 0.00 : 4273a1: 31 c9 xor %ecx,%ecx 0.00 : 4273a3: be 01 00 00 00 mov $0x1,%esi 0.00 : 4273a8: bf b3 48 47 00 mov $0x4748b3,%edi 0.00 : 4273ad: 45 31 ed xor %r13d,%r13d 0.00 : 4273b0: e8 7b 93 00 00 callq 430730 0.00 : 4273b5: 0f 1f 00 nopl (%rax) 0.00 : 4273b8: 80 7c 24 67 00 cmpb $0x0,0x67(%rsp) ??:0 8.70 : 4273bd: 74 19 je 4273d8 0.00 : 4273bf: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 4273c4: be 01 00 00 00 mov $0x1,%esi 0.00 : 4273c9: e8 32 e6 02 00 callq 455a00 0.00 : 4273ce: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 4273d3: e8 78 e5 ff ff callq 425950 0.00 : 4273d8: 80 7c 24 65 00 cmpb $0x0,0x65(%rsp) 0.00 : 4273dd: 0f 84 02 0a 00 00 je 427de5 0.00 : 4273e3: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 4273e8: e8 63 e5 ff ff callq 425950 0.00 : 4273ed: bf 78 48 47 00 mov $0x474878,%edi 0.00 : 4273f2: e8 49 fa 01 00 callq 446e40 0.00 : 4273f7: 45 85 f6 test %r14d,%r14d 0.00 : 4273fa: 74 0a je 427406 0.00 : 4273fc: 45 85 ed test %r13d,%r13d 0.00 : 4273ff: 0f 94 c0 sete %al 0.00 : 427402: 44 0f b6 e8 movzbl %al,%r13d 0.00 : 427406: 8b 45 00 mov 0x0(%rbp),%eax 0.00 : 427409: 83 e8 0a sub $0xa,%eax 0.00 : 42740c: 83 f8 01 cmp $0x1,%eax 0.00 : 42740f: 77 08 ja 427419 0.00 : 427411: 44 89 ef mov %r13d,%edi 0.00 : 427414: e8 d7 61 00 00 callq 42d5f0 8.70 : 427419: 44 89 2d 84 f6 26 00 mov %r13d,0x26f684(%rip) # 696aa4 0.00 : 427420: e8 7b eb 01 00 callq 445fa0 0.00 : 427425: 48 c7 05 10 d5 26 00 movq $0x0,0x26d510(%rip) # 694940 0.00 : 42742c: 00 00 00 00 0.00 : 427430: 8b 05 6e f6 26 00 mov 0x26f66e(%rip),%eax # 696aa4 0.00 : 427436: 48 83 c4 78 add $0x78,%rsp 0.00 : 42743a: 5b pop %rbx 0.00 : 42743b: 5d pop %rbp 0.00 : 42743c: 41 5c pop %r12 0.00 : 42743e: 41 5d pop %r13 0.00 : 427440: 41 5e pop %r14 0.00 : 427442: 41 5f pop %r15 0.00 : 427444: c3 retq 0.00 : 427445: 0f 1f 00 nopl (%rax) 0.00 : 427448: 31 f6 xor %esi,%esi 0.00 : 42744a: 44 89 e7 mov %r12d,%edi 0.00 : 42744d: e8 0e ff 00 00 callq 437360 0.00 : 427452: 45 85 e4 test %r12d,%r12d 0.00 : 427455: 74 78 je 4274cf 0.00 : 427457: 8b 05 77 bf 26 00 mov 0x26bf77(%rip),%eax # 6933d4 0.00 : 42745d: 85 c0 test %eax,%eax 0.00 : 42745f: 74 07 je 427468 0.00 : 427461: 89 df mov %ebx,%edi 0.00 : 427463: e8 48 da 00 00 callq 434eb0 0.00 : 427468: e8 33 eb 01 00 callq 445fa0 0.00 : 42746d: 31 c0 xor %eax,%eax 0.00 : 42746f: e9 4c fd ff ff jmpq 4271c0 0.00 : 427474: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 427478: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 42747d: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 427481: 44 89 f9 mov %r15d,%ecx 0.00 : 427484: 44 89 e6 mov %r12d,%esi 0.00 : 427487: 48 89 ef mov %rbp,%rdi 0.00 : 42748a: e8 81 33 00 00 callq 42a810 0.00 : 42748f: 48 83 c4 78 add $0x78,%rsp 0.00 : 427493: 5b pop %rbx 0.00 : 427494: 5d pop %rbp 0.00 : 427495: 41 5c pop %r12 0.00 : 427497: 41 5d pop %r13 0.00 : 427499: 41 5e pop %r14 0.00 : 42749b: 41 5f pop %r15 0.00 : 42749d: c3 retq 0.00 : 42749e: 66 90 xchg %ax,%ax 0.00 : 4274a0: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 4274a5: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 4274a9: 44 89 f9 mov %r15d,%ecx 0.00 : 4274ac: 31 f6 xor %esi,%esi 0.00 : 4274ae: 48 89 ef mov %rbp,%rdi 0.00 : 4274b1: e8 0a 37 00 00 callq 42abc0 0.00 : 4274b6: 48 c7 05 7f d4 26 00 movq $0x0,0x26d47f(%rip) # 694940 0.00 : 4274bd: 00 00 00 00 0.00 : 4274c1: e9 fa fc ff ff jmpq 4271c0 0.00 : 4274c6: 89 d0 mov %edx,%eax 0.00 : 4274c8: ff 24 c5 c0 49 47 00 jmpq *0x4749c0(,%rax,8) 0.00 : 4274cf: 89 df mov %ebx,%edi 0.00 : 4274d1: e8 da ed 00 00 callq 4362b0 0.00 : 4274d6: 45 85 f6 test %r14d,%r14d 0.00 : 4274d9: 74 08 je 4274e3 0.00 : 4274db: 85 c0 test %eax,%eax 0.00 : 4274dd: 0f 94 c0 sete %al 0.00 : 4274e0: 0f b6 c0 movzbl %al,%eax 0.00 : 4274e3: 89 05 bb f5 26 00 mov %eax,0x26f5bb(%rip) # 696aa4 0.00 : 4274e9: e9 d2 fc ff ff jmpq 4271c0 0.00 : 4274ee: 85 db test %ebx,%ebx 0.00 : 4274f0: 74 07 je 4274f9 0.00 : 4274f2: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 4274f6: 83 08 08 orl $0x8,(%rax) 0.00 : 4274f9: 4c 8b 65 18 mov 0x18(%rbp),%r12 0.00 : 4274fd: 8b 15 81 bf 26 00 mov 0x26bf81(%rip),%edx # 693484 0.00 : 427503: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 427508: 4c 89 e7 mov %r12,%rdi 0.00 : 42750b: 89 54 24 44 mov %edx,0x44(%rsp) 0.00 : 42750f: c7 05 53 d3 26 00 00 movl $0x0,0x26d353(%rip) # 69486c 0.00 : 427516: 00 00 00 0.00 : 427519: 89 05 65 bf 26 00 mov %eax,0x26bf65(%rip) # 693484 0.00 : 42751f: e8 fc c9 ff ff callq 423f20 0.00 : 427524: 44 8b 15 f5 d5 26 00 mov 0x26d5f5(%rip),%r10d # 694b20 0.00 : 42752b: 45 85 d2 test %r10d,%r10d 0.00 : 42752e: 74 08 je 427538 0.00 : 427530: 4c 89 e7 mov %r12,%rdi 0.00 : 427533: e8 e8 dd ff ff callq 425320 0.00 : 427538: bf 41 00 00 00 mov $0x41,%edi 0.00 : 42753d: e8 be dd 01 00 callq 445300 0.00 : 427542: 85 c0 test %eax,%eax 0.00 : 427544: 75 47 jne 42758d 0.00 : 427546: 44 8b 0d ff fb 26 00 mov 0x26fbff(%rip),%r9d # 69714c 0.00 : 42754d: 45 85 c9 test %r9d,%r9d 0.00 : 427550: 75 3b jne 42758d 0.00 : 427552: 48 8b 3d e7 f6 26 00 mov 0x26f6e7(%rip),%rdi # 696c40 0.00 : 427559: 48 85 ff test %rdi,%rdi 0.00 : 42755c: 74 05 je 427563 0.00 : 42755e: e8 5d ee fe ff callq 4163c0 0.00 : 427563: 48 8b 1d f6 d2 26 00 mov 0x26d2f6(%rip),%rbx # 694860 0.00 : 42756a: 48 89 df mov %rbx,%rdi 0.00 : 42756d: e8 7e ee fe ff callq 4163f0 0.00 : 427572: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 427576: e8 45 0d 03 00 callq 4582c0 0.00 : 42757b: 48 89 de mov %rbx,%rsi 0.00 : 42757e: 48 89 c7 mov %rax,%rdi 0.00 : 427581: e8 ea f3 fe ff callq 416970 0.00 : 427586: 48 89 05 b3 f6 26 00 mov %rax,0x26f6b3(%rip) # 696c40 0.00 : 42758d: e8 1e e6 01 00 callq 445bb0 0.00 : 427592: 44 8b 05 5f be 26 00 mov 0x26be5f(%rip),%r8d # 6933f8 0.00 : 427599: 45 85 c0 test %r8d,%r8d 0.00 : 42759c: 0f 85 fa 08 00 00 jne 427e9c 0.00 : 4275a2: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 4275a7: 31 f6 xor %esi,%esi 0.00 : 4275a9: e8 52 95 01 00 callq 440b00 0.00 : 4275ae: 48 85 c0 test %rax,%rax 0.00 : 4275b1: 48 89 c3 mov %rax,%rbx 0.00 : 4275b4: 0f 84 fa 0e 00 00 je 4284b4 0.00 : 4275ba: 48 89 c7 mov %rax,%rdi 0.00 : 4275bd: e8 3e 18 01 00 callq 438e00 0.00 : 4275c2: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : 4275c7: 48 89 df mov %rbx,%rdi 0.00 : 4275ca: e8 31 e4 ff ff callq 425a00 0.00 : 4275cf: 41 8b 14 24 mov (%r12),%edx 0.00 : 4275d3: bf da 6e 47 00 mov $0x476eda,%edi 0.00 : 4275d8: 89 54 24 5c mov %edx,0x5c(%rsp) 0.00 : 4275dc: e8 df f8 01 00 callq 446ec0 0.00 : 4275e1: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 4275e6: 31 c0 xor %eax,%eax 0.00 : 4275e8: bf d0 81 45 00 mov $0x4581d0,%edi 0.00 : 4275ed: e8 ae f8 01 00 callq 446ea0 0.00 : 4275f2: 4d 8b 64 24 10 mov 0x10(%r12),%r12 0.00 : 4275f7: 4d 85 e4 test %r12,%r12 0.00 : 4275fa: 4c 89 64 24 50 mov %r12,0x50(%rsp) 0.00 : 4275ff: 0f 84 5e 0b 00 00 je 428163 0.00 : 427605: 8b 05 35 e9 26 00 mov 0x26e935(%rip),%eax # 695f40 0.00 : 42760b: 85 c0 test %eax,%eax 0.00 : 42760d: 74 0b je 42761a 0.00 : 42760f: 8b 3d 2b e9 26 00 mov 0x26e92b(%rip),%edi # 695f40 0.00 : 427615: e8 76 05 02 00 callq 447b90 0.00 : 42761a: 8b 05 18 e9 26 00 mov 0x26e918(%rip),%eax # 695f38 0.00 : 427620: 85 c0 test %eax,%eax 0.00 : 427622: 74 05 je 427629 0.00 : 427624: e8 67 07 02 00 callq 447d90 0.00 : 427629: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : 42762e: 4c 8b 78 08 mov 0x8(%rax),%r15 0.00 : 427632: 4d 85 ff test %r15,%r15 0.00 : 427635: 75 23 jne 42765a 0.00 : 427637: e9 11 0b 00 00 jmpq 42814d 0.00 : 42763c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 427640: 8b 05 f2 e8 26 00 mov 0x26e8f2(%rip),%eax # 695f38 0.00 : 427646: 85 c0 test %eax,%eax 0.00 : 427648: 0f 85 aa 07 00 00 jne 427df8 0.00 : 42764e: 4d 8b 3f mov (%r15),%r15 0.00 : 427651: 4d 85 ff test %r15,%r15 0.00 : 427654: 0f 84 f3 0a 00 00 je 42814d 0.00 : 42765a: 49 8b 7f 08 mov 0x8(%r15),%rdi 0.00 : 42765e: 31 f6 xor %esi,%esi 0.00 : 427660: e8 8b 94 01 00 callq 440af0 0.00 : 427665: 48 85 c0 test %rax,%rax 0.00 : 427668: 49 89 c5 mov %rax,%r13 0.00 : 42766b: 74 1a je 427687 0.00 : 42766d: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 427671: 48 85 c0 test %rax,%rax 0.00 : 427674: 74 11 je 427687 0.00 : 427676: 48 8b 38 mov (%rax),%rdi 0.00 : 427679: 48 85 ff test %rdi,%rdi 0.00 : 42767c: 74 09 je 427687 0.00 : 42767e: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 427681: 0f 85 86 07 00 00 jne 427e0d 0.00 : 427687: bf 01 00 00 00 mov $0x1,%edi 0.00 : 42768c: e8 2f 0c 03 00 callq 4582c0 0.00 : 427691: 49 89 c4 mov %rax,%r12 0.00 : 427694: c6 00 00 movb $0x0,(%rax) 0.00 : 427697: 83 3d 92 e8 26 00 01 cmpl $0x1,0x26e892(%rip) # 695f30 0.00 : 42769e: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 4276a3: 4c 89 e7 mov %r12,%rdi 0.00 : 4276a6: 19 c0 sbb %eax,%eax 0.00 : 4276a8: f7 d0 not %eax 0.00 : 4276aa: 83 e0 20 and $0x20,%eax 0.00 : 4276ad: 83 3d 78 d2 26 00 01 cmpl $0x1,0x26d278(%rip) # 69492c 0.00 : 4276b4: 19 d2 sbb %edx,%edx 0.00 : 4276b6: f7 d2 not %edx 0.00 : 4276b8: 83 e2 10 and $0x10,%edx 0.00 : 4276bb: 09 c2 or %eax,%edx 0.00 : 4276bd: e8 ee 78 04 00 callq 46efb0 0.00 : 4276c2: 4c 89 e7 mov %r12,%rdi 0.00 : 4276c5: 89 c3 mov %eax,%ebx 0.00 : 4276c7: e8 f4 ec fe ff callq 4163c0 0.00 : 4276cc: 4c 89 ef mov %r13,%rdi 0.00 : 4276cf: e8 2c e3 ff ff callq 425a00 0.00 : 4276d4: 83 eb 01 sub $0x1,%ebx 0.00 : 4276d7: 0f 85 c8 0a 00 00 jne 4281a5 0.00 : 4276dd: 8b 05 5d e8 26 00 mov 0x26e85d(%rip),%eax # 695f40 0.00 : 4276e3: 85 c0 test %eax,%eax 0.00 : 4276e5: 0f 84 55 ff ff ff je 427640 0.00 : 4276eb: 8b 3d 4f e8 26 00 mov 0x26e84f(%rip),%edi # 695f40 0.00 : 4276f1: e8 9a 04 02 00 callq 447b90 0.00 : 4276f6: e9 45 ff ff ff jmpq 427640 0.00 : 4276fb: 85 db test %ebx,%ebx 0.00 : 4276fd: 74 07 je 427706 0.00 : 4276ff: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427703: 83 08 08 orl $0x8,(%rax) 0.00 : 427706: 4c 8b 65 18 mov 0x18(%rbp),%r12 0.00 : 42770a: 8b 15 74 bd 26 00 mov 0x26bd74(%rip),%edx # 693484 0.00 : 427710: be 01 00 00 00 mov $0x1,%esi 0.00 : 427715: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 42771a: 89 54 24 2c mov %edx,0x2c(%rsp) 0.00 : 42771e: e8 ad ae ff ff callq 4225d0 0.00 : 427723: 85 c0 test %eax,%eax 0.00 : 427725: 0f 85 03 08 00 00 jne 427f2e 0.00 : 42772b: 8b 05 d7 bc 26 00 mov 0x26bcd7(%rip),%eax # 693408 0.00 : 427731: 85 c0 test %eax,%eax 0.00 : 427733: 74 0e je 427743 0.00 : 427735: 8b 05 9d bc 26 00 mov 0x26bc9d(%rip),%eax # 6933d8 0.00 : 42773b: 85 c0 test %eax,%eax 0.00 : 42773d: 0f 84 35 0d 00 00 je 428478 0.00 : 427743: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 427749: e9 6a fc ff ff jmpq 4273b8 0.00 : 42774e: 85 db test %ebx,%ebx 0.00 : 427750: 74 07 je 427759 0.00 : 427752: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427756: 83 08 08 orl $0x8,(%rax) 0.00 : 427759: 4c 8b 65 18 mov 0x18(%rbp),%r12 0.00 : 42775d: 83 05 d4 eb 26 00 01 addl $0x1,0x26ebd4(%rip) # 696338 0.00 : 427764: 8b 15 1a bd 26 00 mov 0x26bd1a(%rip),%edx # 693484 0.00 : 42776a: 41 f6 04 24 08 testb $0x8,(%r12) 0.00 : 42776f: 89 54 24 40 mov %edx,0x40(%rsp) 0.00 : 427773: 74 09 je 42777e 0.00 : 427775: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 42777a: 83 48 04 08 orl $0x8,0x4(%rax) 0.00 : 42777e: 8b 05 fc d1 26 00 mov 0x26d1fc(%rip),%eax # 694980 0.00 : 427784: 45 8b 7c 24 04 mov 0x4(%r12),%r15d 0.00 : 427789: 48 c7 05 fc f3 26 00 movq $0x4744c4,0x26f3fc(%rip) # 696b90 0.00 : 427790: c4 44 47 00 0.00 : 427794: 85 c0 test %eax,%eax 0.00 : 427796: 44 89 3d e7 bc 26 00 mov %r15d,0x26bce7(%rip) # 693484 0.00 : 42779d: 74 19 je 4277b8 0.00 : 42779f: 8b 05 33 bc 26 00 mov 0x26bc33(%rip),%eax # 6933d8 0.00 : 4277a5: 85 c0 test %eax,%eax 0.00 : 4277a7: 74 0f je 4277b8 0.00 : 4277a9: 44 89 f8 mov %r15d,%eax 0.00 : 4277ac: 2b 05 8a d1 26 00 sub 0x26d18a(%rip),%eax # 69493c 0.00 : 4277b2: 89 05 cc bc 26 00 mov %eax,0x26bccc(%rip) # 693484 0.00 : 4277b8: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 4277bd: 48 8d 74 24 6c lea 0x6c(%rsp),%rsi 0.00 : 4277c2: 45 31 ed xor %r13d,%r13d 0.00 : 4277c5: e8 56 f1 ff ff callq 426920 0.00 : 4277ca: 8b 44 24 6c mov 0x6c(%rsp),%eax 0.00 : 4277ce: 85 c0 test %eax,%eax 0.00 : 4277d0: 0f 84 e0 06 00 00 je 427eb6 0.00 : 4277d6: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 4277db: 48 8d 74 24 6c lea 0x6c(%rsp),%rsi 0.00 : 4277e0: 44 89 3d 9d bc 26 00 mov %r15d,0x26bc9d(%rip) # 693484 0.00 : 4277e7: e8 34 f1 ff ff callq 426920 0.00 : 4277ec: 48 89 c3 mov %rax,%rbx 0.00 : 4277ef: 8b 44 24 6c mov 0x6c(%rsp),%eax 0.00 : 4277f3: 8b 54 24 40 mov 0x40(%rsp),%edx 0.00 : 4277f7: 85 c0 test %eax,%eax 0.00 : 4277f9: 89 15 85 bc 26 00 mov %edx,0x26bc85(%rip) # 693484 0.00 : 4277ff: 0f 84 a5 00 00 00 je 4278aa 0.00 : 427805: 8b 05 cd bb 26 00 mov 0x26bbcd(%rip),%eax # 6933d8 0.00 : 42780b: 85 c0 test %eax,%eax 0.00 : 42780d: 0f 84 16 06 00 00 je 427e29 0.00 : 427813: 48 85 db test %rbx,%rbx 0.00 : 427816: 0f 84 94 00 00 00 je 4278b0 0.00 : 42781c: 8b 05 1e e7 26 00 mov 0x26e71e(%rip),%eax # 695f40 0.00 : 427822: 85 c0 test %eax,%eax 0.00 : 427824: 0f 85 13 06 00 00 jne 427e3d 0.00 : 42782a: 8b 05 08 e7 26 00 mov 0x26e708(%rip),%eax # 695f38 0.00 : 427830: 85 c0 test %eax,%eax 0.00 : 427832: 0f 85 e7 05 00 00 jne 427e1f 0.00 : 427838: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 42783d: e8 0e 0d 00 00 callq 428550 0.00 : 427842: 41 89 c5 mov %eax,%r13d 0.00 : 427845: 8b 05 f5 e6 26 00 mov 0x26e6f5(%rip),%eax # 695f40 0.00 : 42784b: 85 c0 test %eax,%eax 0.00 : 42784d: 0f 85 0a 06 00 00 jne 427e5d 0.00 : 427853: 8b 05 df e6 26 00 mov 0x26e6df(%rip),%eax # 695f38 0.00 : 427859: 85 c0 test %eax,%eax 0.00 : 42785b: 0f 85 ec 05 00 00 jne 427e4d 0.00 : 427861: 8b 05 d5 ea 26 00 mov 0x26ead5(%rip),%eax # 69633c 0.00 : 427867: 85 c0 test %eax,%eax 0.00 : 427869: 0f 85 37 0c 00 00 jne 4284a6 0.00 : 42786f: 8b 05 cb ea 26 00 mov 0x26eacb(%rip),%eax # 696340 0.00 : 427875: 85 c0 test %eax,%eax 0.00 : 427877: 74 0d je 427886 0.00 : 427879: 83 e8 01 sub $0x1,%eax 0.00 : 42787c: 85 c0 test %eax,%eax 0.00 : 42787e: 89 05 bc ea 26 00 mov %eax,0x26eabc(%rip) # 696340 0.00 : 427884: 75 2a jne 4278b0 0.00 : 427886: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 42788b: 48 8d 74 24 6c lea 0x6c(%rsp),%rsi 0.00 : 427890: 44 89 3d ed bb 26 00 mov %r15d,0x26bbed(%rip) # 693484 0.00 : 427897: e8 84 f0 ff ff callq 426920 0.00 : 42789c: 44 8b 5c 24 6c mov 0x6c(%rsp),%r11d 0.00 : 4278a1: 45 85 db test %r11d,%r11d 0.00 : 4278a4: 0f 85 2c ff ff ff jne 4277d6 0.00 : 4278aa: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4278b0: 8b 44 24 40 mov 0x40(%rsp),%eax 0.00 : 4278b4: 83 2d 7d ea 26 00 01 subl $0x1,0x26ea7d(%rip) # 696338 0.00 : 4278bb: 89 05 c3 bb 26 00 mov %eax,0x26bbc3(%rip) # 693484 0.00 : 4278c1: e9 f2 fa ff ff jmpq 4273b8 0.00 : 4278c6: 85 db test %ebx,%ebx 0.00 : 4278c8: 74 07 je 4278d1 0.00 : 4278ca: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 4278ce: 83 08 08 orl $0x8,(%rax) 0.00 : 4278d1: 44 8b 3d ac bb 26 00 mov 0x26bbac(%rip),%r15d # 693484 0.00 : 4278d8: 8b 35 a2 d0 26 00 mov 0x26d0a2(%rip),%esi # 694980 0.00 : 4278de: 44 89 7c 24 70 mov %r15d,0x70(%rsp) 0.00 : 4278e3: 4c 8b 65 18 mov 0x18(%rbp),%r12 0.00 : 4278e7: 85 f6 test %esi,%esi 0.00 : 4278e9: 48 c7 05 9c f2 26 00 movq $0x472699,0x26f29c(%rip) # 696b90 0.00 : 4278f0: 99 26 47 00 0.00 : 4278f4: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 4278f9: 89 05 85 bb 26 00 mov %eax,0x26bb85(%rip) # 693484 0.00 : 4278ff: 74 16 je 427917 0.00 : 427901: 8b 0d d1 ba 26 00 mov 0x26bad1(%rip),%ecx # 6933d8 0.00 : 427907: 85 c9 test %ecx,%ecx 0.00 : 427909: 74 0c je 427917 0.00 : 42790b: 2b 05 2b d0 26 00 sub 0x26d02b(%rip),%eax # 69493c 0.00 : 427911: 89 05 6d bb 26 00 mov %eax,0x26bb6d(%rip) # 693484 0.00 : 427917: 4c 89 e7 mov %r12,%rdi 0.00 : 42791a: c7 05 48 cf 26 00 00 movl $0x0,0x26cf48(%rip) # 69486c 0.00 : 427921: 00 00 00 0.00 : 427924: e8 97 c5 ff ff callq 423ec0 0.00 : 427929: bf 41 00 00 00 mov $0x41,%edi 0.00 : 42792e: e8 cd d9 01 00 callq 445300 0.00 : 427933: 85 c0 test %eax,%eax 0.00 : 427935: 75 3b jne 427972 0.00 : 427937: 48 8b 3d 02 f3 26 00 mov 0x26f302(%rip),%rdi # 696c40 0.00 : 42793e: 48 85 ff test %rdi,%rdi 0.00 : 427941: 74 05 je 427948 0.00 : 427943: e8 78 ea fe ff callq 4163c0 0.00 : 427948: 48 8b 1d 11 cf 26 00 mov 0x26cf11(%rip),%rbx # 694860 0.00 : 42794f: 48 89 df mov %rbx,%rdi 0.00 : 427952: e8 99 ea fe ff callq 4163f0 0.00 : 427957: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 42795b: e8 60 09 03 00 callq 4582c0 0.00 : 427960: 48 89 de mov %rbx,%rsi 0.00 : 427963: 48 89 c7 mov %rax,%rdi 0.00 : 427966: e8 05 f0 fe ff callq 416970 0.00 : 42796b: 48 89 05 ce f2 26 00 mov %rax,0x26f2ce(%rip) # 696c40 0.00 : 427972: e8 39 e2 01 00 callq 445bb0 0.00 : 427977: 8b 15 7b ba 26 00 mov 0x26ba7b(%rip),%edx # 6933f8 0.00 : 42797d: 85 d2 test %edx,%edx 0.00 : 42797f: 0f 85 00 05 00 00 jne 427e85 0.00 : 427985: 4c 89 e7 mov %r12,%rdi 0.00 : 427988: e8 c3 f0 ff ff callq 426a50 0.00 : 42798d: 44 89 3d f0 ba 26 00 mov %r15d,0x26baf0(%rip) # 693484 0.00 : 427994: 41 89 c5 mov %eax,%r13d 0.00 : 427997: 89 05 07 f1 26 00 mov %eax,0x26f107(%rip) # 696aa4 0.00 : 42799d: 8b 44 24 70 mov 0x70(%rsp),%eax 0.00 : 4279a1: 89 05 dd ba 26 00 mov %eax,0x26badd(%rip) # 693484 0.00 : 4279a7: e9 0c fa ff ff jmpq 4273b8 0.00 : 4279ac: 85 db test %ebx,%ebx 0.00 : 4279ae: 74 07 je 4279b7 0.00 : 4279b0: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 4279b4: 83 08 08 orl $0x8,(%rax) 0.00 : 4279b7: 4c 8b 65 18 mov 0x18(%rbp),%r12 0.00 : 4279bb: 44 8b 1d be cf 26 00 mov 0x26cfbe(%rip),%r11d # 694980 0.00 : 4279c2: 44 8b 2d bb ba 26 00 mov 0x26babb(%rip),%r13d # 693484 0.00 : 4279c9: 48 c7 05 bc f1 26 00 movq $0x4744c4,0x26f1bc(%rip) # 696b90 0.00 : 4279d0: c4 44 47 00 0.00 : 4279d4: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 4279d9: 45 85 db test %r11d,%r11d 0.00 : 4279dc: 89 05 a2 ba 26 00 mov %eax,0x26baa2(%rip) # 693484 0.00 : 4279e2: 74 18 je 4279fc 0.00 : 4279e4: 44 8b 15 ed b9 26 00 mov 0x26b9ed(%rip),%r10d # 6933d8 0.00 : 4279eb: 45 85 d2 test %r10d,%r10d 0.00 : 4279ee: 74 0c je 4279fc 0.00 : 4279f0: 2b 05 46 cf 26 00 sub 0x26cf46(%rip),%eax # 69493c 0.00 : 4279f6: 89 05 88 ba 26 00 mov %eax,0x26ba88(%rip) # 693484 0.00 : 4279fc: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 427a01: c7 05 61 ce 26 00 00 movl $0x0,0x26ce61(%rip) # 69486c 0.00 : 427a08: 00 00 00 0.00 : 427a0b: e8 e0 c4 ff ff callq 423ef0 0.00 : 427a10: bf 41 00 00 00 mov $0x41,%edi 0.00 : 427a15: e8 e6 d8 01 00 callq 445300 0.00 : 427a1a: 85 c0 test %eax,%eax 0.00 : 427a1c: 75 3b jne 427a59 0.00 : 427a1e: 48 8b 3d 1b f2 26 00 mov 0x26f21b(%rip),%rdi # 696c40 0.00 : 427a25: 48 85 ff test %rdi,%rdi 0.00 : 427a28: 74 05 je 427a2f 0.00 : 427a2a: e8 91 e9 fe ff callq 4163c0 0.00 : 427a2f: 48 8b 1d 2a ce 26 00 mov 0x26ce2a(%rip),%rbx # 694860 0.00 : 427a36: 48 89 df mov %rbx,%rdi 0.00 : 427a39: e8 b2 e9 fe ff callq 4163f0 0.00 : 427a3e: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 427a42: e8 79 08 03 00 callq 4582c0 0.00 : 427a47: 48 89 de mov %rbx,%rsi 0.00 : 427a4a: 48 89 c7 mov %rax,%rdi 0.00 : 427a4d: e8 1e ef fe ff callq 416970 0.00 : 427a52: 48 89 05 e7 f1 26 00 mov %rax,0x26f1e7(%rip) # 696c40 0.00 : 427a59: e8 52 e1 01 00 callq 445bb0 0.00 : 427a5e: 44 8b 0d 93 b9 26 00 mov 0x26b993(%rip),%r9d # 6933f8 0.00 : 427a65: 45 85 c9 test %r9d,%r9d 0.00 : 427a68: 0f 85 ff 03 00 00 jne 427e6d 0.00 : 427a6e: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 427a73: e8 88 8a 01 00 callq 440500 0.00 : 427a78: 44 8b 05 a1 d0 26 00 mov 0x26d0a1(%rip),%r8d # 694b20 0.00 : 427a7f: 48 89 c3 mov %rax,%rbx 0.00 : 427a82: 45 85 c0 test %r8d,%r8d 0.00 : 427a85: 74 08 je 427a8f 0.00 : 427a87: 48 89 c7 mov %rax,%rdi 0.00 : 427a8a: e8 31 d6 ff ff callq 4250c0 0.00 : 427a8f: 48 85 db test %rbx,%rbx 0.00 : 427a92: 0f 84 41 0a 00 00 je 4284d9 0.00 : 427a98: 48 83 3b 00 cmpq $0x0,(%rbx) 0.00 : 427a9c: 0f 84 ca 09 00 00 je 42846c 0.00 : 427aa2: 48 89 df mov %rbx,%rdi 0.00 : 427aa5: e8 56 13 01 00 callq 438e00 0.00 : 427aaa: 49 89 c4 mov %rax,%r12 0.00 : 427aad: 48 8d 74 24 6c lea 0x6c(%rsp),%rsi 0.00 : 427ab2: 4c 89 e7 mov %r12,%rdi 0.00 : 427ab5: e8 46 9c 00 00 callq 431700 0.00 : 427aba: 49 89 c7 mov %rax,%r15 0.00 : 427abd: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 427ac1: 44 89 2d bc b9 26 00 mov %r13d,0x26b9bc(%rip) # 693484 0.00 : 427ac8: 4c 3b 20 cmp (%rax),%r12 0.00 : 427acb: 74 08 je 427ad5 0.00 : 427acd: 4c 89 e7 mov %r12,%rdi 0.00 : 427ad0: e8 eb e8 fe ff callq 4163c0 0.00 : 427ad5: 48 89 df mov %rbx,%rdi 0.00 : 427ad8: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 427ade: e8 1d df ff ff callq 425a00 0.00 : 427ae3: 8b 7c 24 6c mov 0x6c(%rsp),%edi 0.00 : 427ae7: 85 ff test %edi,%edi 0.00 : 427ae9: 0f 84 c9 f8 ff ff je 4273b8 0.00 : 427aef: 45 31 ed xor %r13d,%r13d 0.00 : 427af2: 4d 85 ff test %r15,%r15 0.00 : 427af5: 41 0f 94 c5 sete %r13b 0.00 : 427af9: e9 ba f8 ff ff jmpq 4273b8 0.00 : 427afe: 45 85 e4 test %r12d,%r12d 0.00 : 427b01: 0f 85 7d 07 00 00 jne 428284 0.00 : 427b07: 85 db test %ebx,%ebx 0.00 : 427b09: 0f 85 56 07 00 00 jne 428265 0.00 : 427b0f: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427b13: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 427b17: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 427b1c: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 427b20: 44 89 f9 mov %r15d,%ecx 0.00 : 427b23: 31 f6 xor %esi,%esi 0.00 : 427b25: 48 89 c7 mov %rax,%rdi 0.00 : 427b28: e8 33 f5 ff ff callq 427060 0.00 : 427b2d: 41 89 c5 mov %eax,%r13d 0.00 : 427b30: e9 83 f8 ff ff jmpq 4273b8 0.00 : 427b35: 85 db test %ebx,%ebx 0.00 : 427b37: 74 07 je 427b40 0.00 : 427b39: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427b3d: 83 08 08 orl $0x8,(%rax) 0.00 : 427b40: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 427b44: be 01 00 00 00 mov $0x1,%esi 0.00 : 427b49: e8 f2 12 00 00 callq 428e40 0.00 : 427b4e: 41 89 c5 mov %eax,%r13d 0.00 : 427b51: e9 62 f8 ff ff jmpq 4273b8 0.00 : 427b56: 85 db test %ebx,%ebx 0.00 : 427b58: 74 07 je 427b61 0.00 : 427b5a: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427b5e: 83 08 08 orl $0x8,(%rax) 0.00 : 427b61: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 427b65: e8 a6 0a 00 00 callq 428610 0.00 : 427b6a: 41 89 c5 mov %eax,%r13d 0.00 : 427b6d: e9 46 f8 ff ff jmpq 4273b8 0.00 : 427b72: 8b 05 0c b9 26 00 mov 0x26b90c(%rip),%eax # 693484 ??:0 4.35 : 427b78: bf 42 00 00 00 mov $0x42,%edi 0.00 : 427b7d: 89 44 24 70 mov %eax,0x70(%rsp) 0.00 : 427b81: c7 05 d5 36 26 00 ff movl $0xffffffff,0x2636d5(%rip) # 68b260 0.00 : 427b88: ff ff ff 0.00 : 427b8b: 8b 05 cf 36 26 00 mov 0x2636cf(%rip),%eax # 68b260 0.00 : 427b91: 89 44 24 74 mov %eax,0x74(%rsp) 0.00 : 427b95: e8 16 d7 01 00 callq 4452b0 0.00 : 427b9a: 85 c0 test %eax,%eax 0.00 : 427b9c: 0f 85 e7 05 00 00 jne 428189 0.00 : 427ba2: c6 44 24 66 00 movb $0x0,0x66(%rsp) 0.00 : 427ba7: 85 db test %ebx,%ebx 0.00 : 427ba9: 74 0e je 427bb9 0.00 : 427bab: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427baf: 31 d2 xor %edx,%edx 0.00 : 427bb1: 48 85 c0 test %rax,%rax 0.00 : 427bb4: 74 07 je 427bbd 0.00 : 427bb6: 83 08 08 orl $0x8,(%rax) 4.35 : 427bb9: 48 8b 55 18 mov 0x18(%rbp),%rdx 0.00 : 427bbd: f6 45 05 04 testb $0x4,0x5(%rbp) 0.00 : 427bc1: 74 0a je 427bcd 0.00 : 427bc3: 81 0a 00 04 00 00 orl $0x400,(%rdx) 0.00 : 427bc9: 48 8b 55 18 mov 0x18(%rbp),%rdx 0.00 : 427bcd: 8b 42 04 mov 0x4(%rdx),%eax 4.35 : 427bd0: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 427bd5: 44 89 e1 mov %r12d,%ecx 0.00 : 427bd8: 8b 74 24 10 mov 0x10(%rsp),%esi 0.00 : 427bdc: 44 89 fa mov %r15d,%edx 0.00 : 427bdf: 89 05 9f b8 26 00 mov %eax,0x26b89f(%rip) # 693484 0.00 : 427be5: 89 05 65 cd 26 00 mov %eax,0x26cd65(%rip) # 694950 0.00 : 427beb: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 427bef: e8 bc 1d 00 00 callq 4299b0 0.00 : 427bf4: 41 89 c5 mov %eax,%r13d ??:0 8.70 : 427bf7: 8b 44 24 70 mov 0x70(%rsp),%eax 8.70 : 427bfb: 89 05 83 b8 26 00 mov %eax,0x26b883(%rip) # 693484 0.00 : 427c01: e8 da 81 00 00 callq 42fde0 0.00 : 427c06: 8b 05 84 cf 26 00 mov 0x26cf84(%rip),%eax # 694b90 0.00 : 427c0c: 85 c0 test %eax,%eax 0.00 : 427c0e: 74 0a je 427c1a 0.00 : 427c10: 41 83 c7 01 add $0x1,%r15d 0.00 : 427c14: 0f 84 ae 02 00 00 je 427ec8 ??:0 4.35 : 427c1a: 85 db test %ebx,%ebx 0.00 : 427c1c: 75 20 jne 427c3e 4.35 : 427c1e: 80 7c 24 66 00 cmpb $0x0,0x66(%rsp) 0.00 : 427c23: 74 19 je 427c3e 0.00 : 427c25: 45 85 f6 test %r14d,%r14d 0.00 : 427c28: 75 14 jne 427c3e 0.00 : 427c2a: 45 85 ed test %r13d,%r13d 0.00 : 427c2d: 0f 1f 00 nopl (%rax) 0.00 : 427c30: 74 0c je 427c3e 0.00 : 427c32: 44 89 2d 6b ee 26 00 mov %r13d,0x26ee6b(%rip) # 696aa4 0.00 : 427c39: e8 52 df 01 00 callq 445b90 0.00 : 427c3e: 44 09 f3 or %r14d,%ebx 0.00 : 427c41: 0f 85 71 f7 ff ff jne 4273b8 0.00 : 427c47: 8b 1d bb b7 26 00 mov 0x26b7bb(%rip),%ebx # 693408 0.00 : 427c4d: 85 db test %ebx,%ebx 0.00 : 427c4f: 0f 84 bb 02 00 00 je 427f10 0.00 : 427c55: 44 8b 1d 78 b7 26 00 mov 0x26b778(%rip),%r11d # 6933d4 0.00 : 427c5c: 45 85 db test %r11d,%r11d 0.00 : 427c5f: 0f 85 ab 02 00 00 jne 427f10 0.00 : 427c65: 44 8b 15 dc cc 26 00 mov 0x26ccdc(%rip),%r10d # 694948 0.00 : 427c6c: 45 85 d2 test %r10d,%r10d 0.00 : 427c6f: 0f 84 9b 02 00 00 je 427f10 0.00 : 427c75: 44 89 2d 28 ee 26 00 mov %r13d,0x26ee28(%rip) # 696aa4 0.00 : 427c7c: e8 1f e3 01 00 callq 445fa0 0.00 : 427c81: bf 04 00 00 00 mov $0x4,%edi 0.00 : 427c86: e8 95 00 02 00 callq 447d20 0.00 : 427c8b: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427c8f: 8b 35 73 b7 26 00 mov 0x26b773(%rip),%esi # 693408 0.00 : 427c95: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 427c99: 4c 8b 60 10 mov 0x10(%rax),%r12 0.00 : 427c9d: 48 89 df mov %rbx,%rdi 0.00 : 427ca0: e8 2b a9 ff ff callq 4225d0 0.00 : 427ca5: 85 c0 test %eax,%eax 0.00 : 427ca7: 0f 84 7e fa ff ff je 42772b 0.00 : 427cad: 48 8b 3b mov (%rbx),%rdi 0.00 : 427cb0: e8 cb 3b 00 00 callq 42b880 0.00 : 427cb5: 48 85 c0 test %rax,%rax 0.00 : 427cb8: 0f 84 73 07 00 00 je 428431 0.00 : 427cbe: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 427cc1: f7 c2 02 40 00 00 test $0x4002,%edx 0.00 : 427cc7: 0f 84 64 07 00 00 je 428431 0.00 : 427ccd: 83 e2 02 and $0x2,%edx 0.00 : 427cd0: 0f 84 6d fa ff ff je 427743 0.00 : 427cd6: 48 8b 18 mov (%rax),%rbx 0.00 : 427cd9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 427cde: be 9d 48 47 00 mov $0x47489d,%esi 0.00 : 427ce3: 31 ff xor %edi,%edi 0.00 : 427ce5: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 427ceb: e8 90 eb fe ff callq 416880 0.00 : 427cf0: 48 89 de mov %rbx,%rsi 0.00 : 427cf3: 48 89 c7 mov %rax,%rdi 0.00 : 427cf6: 31 c0 xor %eax,%eax 0.00 : 427cf8: e8 c3 8e 00 00 callq 430bc0 0.00 : 427cfd: e9 b6 f6 ff ff jmpq 4273b8 0.00 : 427d02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 427d08: 85 db test %ebx,%ebx 0.00 : 427d0a: 74 07 je 427d13 0.00 : 427d0c: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427d10: 83 08 08 orl $0x8,(%rax) 0.00 : 427d13: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 427d17: e8 94 12 00 00 callq 428fb0 0.00 : 427d1c: 41 89 c5 mov %eax,%r13d 0.00 : 427d1f: e9 94 f6 ff ff jmpq 4273b8 4.35 : 427d24: 8b 4d 04 mov 0x4(%rbp),%ecx 0.00 : 427d27: 89 c8 mov %ecx,%eax 0.00 : 427d29: c1 e8 03 shr $0x3,%eax 0.00 : 427d2c: 83 e0 01 and $0x1,%eax 0.00 : 427d2f: 89 44 24 60 mov %eax,0x60(%rsp) 0.00 : 427d33: 48 8b 75 18 mov 0x18(%rbp),%rsi 0.00 : 427d37: 8b 56 18 mov 0x18(%rsi),%edx 0.00 : 427d3a: 83 fa 7c cmp $0x7c,%edx 0.00 : 427d3d: 0f 84 66 05 00 00 je 4282a9 0.00 : 427d43: 0f 8f 7f 04 00 00 jg 4281c8 0.00 : 427d49: 83 fa 26 cmp $0x26,%edx 0.00 : 427d4c: 0f 84 13 06 00 00 je 428365 0.00 : 427d52: 83 fa 3b cmp $0x3b,%edx 0.00 : 427d55: 0f 1f 00 nopl (%rax) 0.00 : 427d58: 0f 84 6a 05 00 00 je 4282c8 0.00 : 427d5e: bf 8a 48 47 00 mov $0x47488a,%edi 0.00 : 427d63: 31 c9 xor %ecx,%ecx 0.00 : 427d65: be 02 00 00 00 mov $0x2,%esi 0.00 : 427d6a: e8 c1 89 00 00 callq 430730 0.00 : 427d6f: bf 02 00 00 00 mov $0x2,%edi 0.00 : 427d74: e8 a7 ff 01 00 callq 447d20 0.00 : 427d79: 85 db test %ebx,%ebx 0.00 : 427d7b: 74 07 je 427d84 0.00 : 427d7d: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 427d81: 83 08 08 orl $0x8,(%rax) 0.00 : 427d84: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 427d88: 31 f6 xor %esi,%esi 0.00 : 427d8a: e8 b1 10 00 00 callq 428e40 0.00 : 427d8f: 41 89 c5 mov %eax,%r13d 0.00 : 427d92: e9 21 f6 ff ff jmpq 4273b8 0.00 : 427d97: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 427d9c: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 427da0: 48 89 ef mov %rbp,%rdi 0.00 : 427da3: 44 89 f9 mov %r15d,%ecx 0.00 : 427da6: 44 89 e6 mov %r12d,%esi 0.00 : 427da9: e8 62 2a 00 00 callq 42a810 0.00 : 427dae: 89 c7 mov %eax,%edi 0.00 : 427db0: e8 7b e2 fe ff callq 416030 0.00 : 427db5: 48 8b 3d 5c cb 26 00 mov 0x26cb5c(%rip),%rdi # 694918 0.00 : 427dbc: e8 6f e7 ff ff callq 426530 0.00 : 427dc1: 48 c7 05 4c cb 26 00 movq $0x0,0x26cb4c(%rip) # 694918 0.00 : 427dc8: 00 00 00 00 0.00 : 427dcc: e8 9f e7 ff ff callq 426570 0.00 : 427dd1: c7 05 c9 ec 26 00 01 movl $0x1,0x26ecc9(%rip) # 696aa4 0.00 : 427dd8: 00 00 00 0.00 : 427ddb: b8 01 00 00 00 mov $0x1,%eax 0.00 : 427de0: e9 db f3 ff ff jmpq 4271c0 0.00 : 427de5: 80 7c 24 17 00 cmpb $0x0,0x17(%rsp) 0.00 : 427dea: 0f 84 07 f6 ff ff je 4273f7 0.00 : 427df0: e9 f8 f5 ff ff jmpq 4273ed 0.00 : 427df5: 0f 1f 00 nopl (%rax) 0.00 : 427df8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 427dff: 00 0.00 : 427e00: e8 8b ff 01 00 callq 447d90 0.00 : 427e05: 0f 1f 00 nopl (%rax) 0.00 : 427e08: e9 41 f8 ff ff jmpq 42764e 0.00 : 427e0d: be 01 00 00 00 mov $0x1,%esi 0.00 : 427e12: e8 39 f4 01 00 callq 447250 0.00 : 427e17: 49 89 c4 mov %rax,%r12 0.00 : 427e1a: e9 78 f8 ff ff jmpq 427697 0.00 : 427e1f: e8 6c ff 01 00 callq 447d90 0.00 : 427e24: e9 0f fa ff ff jmpq 427838 0.00 : 427e29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 427e30: e8 0b e4 00 00 callq 436240 0.00 : 427e35: 0f 1f 00 nopl (%rax) 0.00 : 427e38: e9 d6 f9 ff ff jmpq 427813 0.00 : 427e3d: 8b 3d fd e0 26 00 mov 0x26e0fd(%rip),%edi # 695f40 0.00 : 427e43: e8 48 fd 01 00 callq 447b90 0.00 : 427e48: e9 dd f9 ff ff jmpq 42782a 0.00 : 427e4d: e8 3e ff 01 00 callq 447d90 0.00 : 427e52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 427e58: e9 04 fa ff ff jmpq 427861 0.00 : 427e5d: 8b 3d dd e0 26 00 mov 0x26e0dd(%rip),%edi # 695f40 0.00 : 427e63: e8 28 fd 01 00 callq 447b90 0.00 : 427e68: e9 e6 f9 ff ff jmpq 427853 0.00 : 427e6d: 85 c0 test %eax,%eax 0.00 : 427e6f: 0f 84 f9 fb ff ff je 427a6e 0.00 : 427e75: 44 89 2d 08 b6 26 00 mov %r13d,0x26b608(%rip) # 693484 0.00 : 427e7c: 45 31 ed xor %r13d,%r13d 0.00 : 427e7f: 90 nop 0.00 : 427e80: e9 33 f5 ff ff jmpq 4273b8 0.00 : 427e85: 85 c0 test %eax,%eax 0.00 : 427e87: 0f 84 f8 fa ff ff je 427985 0.00 : 427e8d: 44 89 3d f0 b5 26 00 mov %r15d,0x26b5f0(%rip) # 693484 0.00 : 427e94: 45 31 ed xor %r13d,%r13d 0.00 : 427e97: e9 01 fb ff ff jmpq 42799d 0.00 : 427e9c: 85 c0 test %eax,%eax 0.00 : 427e9e: 0f 84 fe f6 ff ff je 4275a2 0.00 : 427ea4: 8b 44 24 44 mov 0x44(%rsp),%eax 0.00 : 427ea8: 45 31 ed xor %r13d,%r13d 0.00 : 427eab: 89 05 d3 b5 26 00 mov %eax,0x26b5d3(%rip) # 693484 0.00 : 427eb1: e9 02 f5 ff ff jmpq 4273b8 0.00 : 427eb6: 8b 44 24 40 mov 0x40(%rsp),%eax 0.00 : 427eba: 41 b5 01 mov $0x1,%r13b 0.00 : 427ebd: 89 05 c1 b5 26 00 mov %eax,0x26b5c1(%rip) # 693484 0.00 : 427ec3: e9 f0 f4 ff ff jmpq 4273b8 0.00 : 427ec8: 8b 15 92 33 26 00 mov 0x263392(%rip),%edx # 68b260 0.00 : 427ece: 8b 44 24 74 mov 0x74(%rsp),%eax 0.00 : 427ed2: 39 c2 cmp %eax,%edx 0.00 : 427ed4: 0f 84 40 fd ff ff je 427c1a 0.00 : 427eda: 31 f6 xor %esi,%esi 0.00 : 427edc: 44 89 e7 mov %r12d,%edi 0.00 : 427edf: e8 7c f4 00 00 callq 437360 0.00 : 427ee4: 45 85 e4 test %r12d,%r12d 0.00 : 427ee7: 0f 84 58 05 00 00 je 428445 0.00 : 427eed: 44 8b 25 e0 b4 26 00 mov 0x26b4e0(%rip),%r12d # 6933d4 0.00 : 427ef4: 45 85 e4 test %r12d,%r12d 0.00 : 427ef7: 0f 84 1d fd ff ff je 427c1a 0.00 : 427efd: 8b 3d 5d 33 26 00 mov 0x26335d(%rip),%edi # 68b260 0.00 : 427f03: e8 a8 cf 00 00 callq 434eb0 0.00 : 427f08: e9 0d fd ff ff jmpq 427c1a 0.00 : 427f0d: 0f 1f 00 nopl (%rax) 0.00 : 427f10: 44 8b 0d e9 cb 26 00 mov 0x26cbe9(%rip),%r9d # 694b00 ??:0 8.70 : 427f17: 45 85 c9 test %r9d,%r9d 0.00 : 427f1a: 0f 84 98 f4 ff ff je 4273b8 0.00 : 427f20: 45 85 ed test %r13d,%r13d 0.00 : 427f23: 0f 84 8f f4 ff ff je 4273b8 0.00 : 427f29: e9 47 fd ff ff jmpq 427c75 0.00 : 427f2e: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 427f33: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 427f38: 83 05 f9 e3 26 00 01 addl $0x1,0x26e3f9(%rip) # 696338 0.00 : 427f3f: 48 8b 00 mov (%rax),%rax 0.00 : 427f42: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 427f47: e8 b4 85 01 00 callq 440500 0.00 : 427f4c: bf 6b 79 47 00 mov $0x47796b,%edi 0.00 : 427f51: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 427f56: e8 65 ef 01 00 callq 446ec0 0.00 : 427f5b: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 427f60: 31 c0 xor %eax,%eax 0.00 : 427f62: bf 00 5a 42 00 mov $0x425a00,%edi 0.00 : 427f67: e8 34 ef 01 00 callq 446ea0 0.00 : 427f6c: 41 f6 04 24 08 testb $0x8,(%r12) 0.00 : 427f71: 74 09 je 427f7c 0.00 : 427f73: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 427f78: 83 48 04 08 orl $0x8,0x4(%rax) 0.00 : 427f7c: 4c 8b 7c 24 38 mov 0x38(%rsp),%r15 0.00 : 427f81: 45 31 ed xor %r13d,%r13d 0.00 : 427f84: 4d 85 ff test %r15,%r15 0.00 : 427f87: 0f 85 a2 00 00 00 jne 42802f 0.00 : 427f8d: e9 75 04 00 00 jmpq 428407 0.00 : 427f92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 427f98: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 427f9c: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 427fa1: 31 d2 xor %edx,%edx 0.00 : 427fa3: 48 c7 05 e2 eb 26 00 movq $0x0,0x26ebe2(%rip) # 696b90 0.00 : 427faa: 00 00 00 00 0.00 : 427fae: 48 8b 30 mov (%rax),%rsi 0.00 : 427fb1: e8 8a 5c 00 00 callq 42dc40 0.00 : 427fb6: f7 40 28 02 40 00 00 testl $0x4002,0x28(%rax) 0.00 : 427fbd: 0f 85 29 05 00 00 jne 4284ec 0.00 : 427fc3: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 427fc8: e8 83 05 00 00 callq 428550 0.00 : 427fcd: 41 89 c5 mov %eax,%r13d 0.00 : 427fd0: 8b 05 02 b4 26 00 mov 0x26b402(%rip),%eax # 6933d8 0.00 : 427fd6: 85 c0 test %eax,%eax 0.00 : 427fd8: 0f 84 5f 01 00 00 je 42813d 0.00 : 427fde: 8b 05 5c df 26 00 mov 0x26df5c(%rip),%eax # 695f40 0.00 : 427fe4: 85 c0 test %eax,%eax 0.00 : 427fe6: 0f 85 41 01 00 00 jne 42812d 0.00 : 427fec: 8b 05 46 df 26 00 mov 0x26df46(%rip),%eax # 695f38 0.00 : 427ff2: 85 c0 test %eax,%eax 0.00 : 427ff4: 0f 85 23 01 00 00 jne 42811d 0.00 : 427ffa: 8b 05 3c e3 26 00 mov 0x26e33c(%rip),%eax # 69633c 0.00 : 428000: 85 c0 test %eax,%eax 0.00 : 428002: 0f 85 f6 03 00 00 jne 4283fe 0.00 : 428008: 8b 05 32 e3 26 00 mov 0x26e332(%rip),%eax # 696340 0.00 : 42800e: 85 c0 test %eax,%eax 0.00 : 428010: 74 11 je 428023 0.00 : 428012: 83 e8 01 sub $0x1,%eax 0.00 : 428015: 85 c0 test %eax,%eax 0.00 : 428017: 89 05 23 e3 26 00 mov %eax,0x26e323(%rip) # 696340 0.00 : 42801d: 0f 85 e4 03 00 00 jne 428407 0.00 : 428023: 4d 8b 3f mov (%r15),%r15 0.00 : 428026: 4d 85 ff test %r15,%r15 0.00 : 428029: 0f 84 d8 03 00 00 je 428407 0.00 : 42802f: 8b 05 0b df 26 00 mov 0x26df0b(%rip),%eax # 695f40 0.00 : 428035: 85 c0 test %eax,%eax 0.00 : 428037: 0f 85 d0 00 00 00 jne 42810d 0.00 : 42803d: 8b 05 f5 de 26 00 mov 0x26def5(%rip),%eax # 695f38 0.00 : 428043: 85 c0 test %eax,%eax 0.00 : 428045: 0f 85 af 00 00 00 jne 4280fa 0.00 : 42804b: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 428050: 4c 89 e7 mov %r12,%rdi 0.00 : 428053: c7 05 0f c8 26 00 00 movl $0x0,0x26c80f(%rip) # 69486c 0.00 : 42805a: 00 00 00 0.00 : 42805d: 89 05 21 b4 26 00 mov %eax,0x26b421(%rip) # 693484 0.00 : 428063: e8 08 bf ff ff callq 423f70 0.00 : 428068: 44 8b 05 b1 ca 26 00 mov 0x26cab1(%rip),%r8d # 694b20 0.00 : 42806f: 45 85 c0 test %r8d,%r8d 0.00 : 428072: 75 76 jne 4280ea 0.00 : 428074: bf 41 00 00 00 mov $0x41,%edi 0.00 : 428079: e8 82 d2 01 00 callq 445300 0.00 : 42807e: 85 c0 test %eax,%eax 0.00 : 428080: 75 45 jne 4280c7 0.00 : 428082: 8b 3d c4 f0 26 00 mov 0x26f0c4(%rip),%edi # 69714c 0.00 : 428088: 85 ff test %edi,%edi 0.00 : 42808a: 75 3b jne 4280c7 0.00 : 42808c: 48 8b 3d ad eb 26 00 mov 0x26ebad(%rip),%rdi # 696c40 0.00 : 428093: 48 85 ff test %rdi,%rdi 0.00 : 428096: 74 05 je 42809d 0.00 : 428098: e8 23 e3 fe ff callq 4163c0 0.00 : 42809d: 48 8b 1d bc c7 26 00 mov 0x26c7bc(%rip),%rbx # 694860 0.00 : 4280a4: 48 89 df mov %rbx,%rdi 0.00 : 4280a7: e8 44 e3 fe ff callq 4163f0 0.00 : 4280ac: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 4280b0: e8 0b 02 03 00 callq 4582c0 0.00 : 4280b5: 48 89 de mov %rbx,%rsi 0.00 : 4280b8: 48 89 c7 mov %rax,%rdi 0.00 : 4280bb: e8 b0 e8 fe ff callq 416970 0.00 : 4280c0: 48 89 05 79 eb 26 00 mov %rax,0x26eb79(%rip) # 696c40 0.00 : 4280c7: e8 e4 da 01 00 callq 445bb0 0.00 : 4280cc: 8b 35 26 b3 26 00 mov 0x26b326(%rip),%esi # 6933f8 0.00 : 4280d2: 41 89 c5 mov %eax,%r13d 0.00 : 4280d5: 85 f6 test %esi,%esi 0.00 : 4280d7: 0f 84 bb fe ff ff je 427f98 0.00 : 4280dd: 85 c0 test %eax,%eax 0.00 : 4280df: 0f 85 3e ff ff ff jne 428023 0.00 : 4280e5: e9 ae fe ff ff jmpq 427f98 0.00 : 4280ea: 4c 89 e7 mov %r12,%rdi 0.00 : 4280ed: 0f 1f 00 nopl (%rax) 0.00 : 4280f0: e8 5b d4 ff ff callq 425550 0.00 : 4280f5: e9 7a ff ff ff jmpq 428074 0.00 : 4280fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 428100: e8 8b fc 01 00 callq 447d90 0.00 : 428105: 0f 1f 00 nopl (%rax) 0.00 : 428108: e9 3e ff ff ff jmpq 42804b 0.00 : 42810d: 8b 3d 2d de 26 00 mov 0x26de2d(%rip),%edi # 695f40 0.00 : 428113: e8 78 fa 01 00 callq 447b90 0.00 : 428118: e9 20 ff ff ff jmpq 42803d 0.00 : 42811d: e8 6e fc 01 00 callq 447d90 0.00 : 428122: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 428128: e9 cd fe ff ff jmpq 427ffa 0.00 : 42812d: 8b 3d 0d de 26 00 mov 0x26de0d(%rip),%edi # 695f40 0.00 : 428133: e8 58 fa 01 00 callq 447b90 0.00 : 428138: e9 af fe ff ff jmpq 427fec 0.00 : 42813d: e8 fe e0 00 00 callq 436240 0.00 : 428142: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 428148: e9 91 fe ff ff jmpq 427fde 0.00 : 42814d: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : 428152: 48 8b 00 mov (%rax),%rax 0.00 : 428155: 48 85 c0 test %rax,%rax 0.00 : 428158: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 42815d: 0f 85 a2 f4 ff ff jne 427605 0.00 : 428163: 45 31 ed xor %r13d,%r13d 0.00 : 428166: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 42816b: e8 50 e2 fe ff callq 4163c0 0.00 : 428170: bf da 6e 47 00 mov $0x476eda,%edi 0.00 : 428175: e8 c6 ec 01 00 callq 446e40 0.00 : 42817a: 8b 54 24 44 mov 0x44(%rsp),%edx 0.00 : 42817e: 89 15 00 b3 26 00 mov %edx,0x26b300(%rip) # 693484 0.00 : 428184: e9 2f f2 ff ff jmpq 4273b8 0.00 : 428189: bf 42 00 00 00 mov $0x42,%edi 0.00 : 42818e: e8 3d d1 01 00 callq 4452d0 0.00 : 428193: 85 c0 test %eax,%eax 0.00 : 428195: c6 44 24 66 01 movb $0x1,0x66(%rsp) 0.00 : 42819a: 0f 84 07 fa ff ff je 427ba7 0.00 : 4281a0: e9 fd f9 ff ff jmpq 427ba2 0.00 : 4281a5: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 4281aa: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 4281ae: 48 85 ff test %rdi,%rdi 0.00 : 4281b1: 74 0b je 4281be 0.00 : 4281b3: f6 44 24 5c 08 testb $0x8,0x5c(%rsp) 0.00 : 4281b8: 74 04 je 4281be 0.00 : 4281ba: 83 4f 04 08 orl $0x8,0x4(%rdi) 0.00 : 4281be: e8 8d 03 00 00 callq 428550 0.00 : 4281c3: 41 89 c5 mov %eax,%r13d 0.00 : 4281c6: eb 9e jmp 428166 0.00 : 4281c8: 8d 82 e3 fe ff ff lea -0x11d(%rdx),%eax 0.00 : 4281ce: 83 f8 01 cmp $0x1,%eax 0.00 : 4281d1: 0f 87 87 fb ff ff ja 427d5e 0.00 : 4281d7: 45 85 e4 test %r12d,%r12d 0.00 : 4281da: 0f 85 81 02 00 00 jne 428461 0.00 : 4281e0: 48 8b 7e 08 mov 0x8(%rsi),%rdi 0.00 : 4281e4: 48 85 ff test %rdi,%rdi 0.00 : 4281e7: 74 04 je 4281ed 0.00 : 4281e9: 83 4f 04 08 orl $0x8,0x4(%rdi) 0.00 : 4281ed: e8 5e 03 00 00 callq 428550 0.00 : 4281f2: 41 89 c5 mov %eax,%r13d 0.00 : 4281f5: 8b 05 45 dd 26 00 mov 0x26dd45(%rip),%eax # 695f40 0.00 : 4281fb: 85 c0 test %eax,%eax 0.00 : 4281fd: 0f 85 93 02 00 00 jne 428496 0.00 : 428203: 8b 05 2f dd 26 00 mov 0x26dd2f(%rip),%eax # 695f38 0.00 : 428209: 85 c0 test %eax,%eax 0.00 : 42820b: 0f 85 7b 02 00 00 jne 42848c 0.00 : 428211: 48 8b 55 18 mov 0x18(%rbp),%rdx 0.00 : 428215: 8b 42 18 mov 0x18(%rdx),%eax 0.00 : 428218: 3d 1d 01 00 00 cmp $0x11d,%eax 0.00 : 42821d: 0f 84 a8 02 00 00 je 4284cb 0.00 : 428223: 3d 1e 01 00 00 cmp $0x11e,%eax 0.00 : 428228: 0f 85 8a f1 ff ff jne 4273b8 0.00 : 42822e: 45 85 ed test %r13d,%r13d 0.00 : 428231: 0f 84 81 f1 ff ff je 4273b8 0.00 : 428237: 8b 5c 24 60 mov 0x60(%rsp),%ebx 0.00 : 42823b: 85 db test %ebx,%ebx 0.00 : 42823d: 0f 84 15 02 00 00 je 428458 0.00 : 428243: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 428247: 31 c0 xor %eax,%eax 0.00 : 428249: 48 85 ff test %rdi,%rdi 0.00 : 42824c: 74 07 je 428255 0.00 : 42824e: 83 4f 04 08 orl $0x8,0x4(%rdi) 0.00 : 428252: 48 89 f8 mov %rdi,%rax 0.00 : 428255: 48 89 c7 mov %rax,%rdi 0.00 : 428258: e8 f3 02 00 00 callq 428550 0.00 : 42825d: 41 89 c5 mov %eax,%r13d 0.00 : 428260: e9 53 f1 ff ff jmpq 4273b8 0.00 : 428265: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 428269: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 42826d: 31 c0 xor %eax,%eax 0.00 : 42826f: 48 85 ff test %rdi,%rdi 0.00 : 428272: 0f 84 9f f8 ff ff je 427b17 0.00 : 428278: 83 4f 04 08 orl $0x8,0x4(%rdi) 0.00 : 42827c: 48 89 f8 mov %rdi,%rax 0.00 : 42827f: e9 93 f8 ff ff jmpq 427b17 0.00 : 428284: 83 4d 04 02 orl $0x2,0x4(%rbp) 0.00 : 428288: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 42828d: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 428291: 44 89 f9 mov %r15d,%ecx 0.00 : 428294: be 01 00 00 00 mov $0x1,%esi 0.00 : 428299: 48 89 ef mov %rbp,%rdi 0.00 : 42829c: e8 bf ed ff ff callq 427060 0.00 : 4282a1: 41 89 c5 mov %eax,%r13d 0.00 : 4282a4: e9 0f f1 ff ff jmpq 4273b8 0.00 : 4282a9: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 4282ae: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 4282b2: 44 89 f9 mov %r15d,%ecx 0.00 : 4282b5: 44 89 e6 mov %r12d,%esi 0.00 : 4282b8: 48 89 ef mov %rbp,%rdi 0.00 : 4282bb: e8 10 eb ff ff callq 426dd0 0.00 : 4282c0: 41 89 c5 mov %eax,%r13d 0.00 : 4282c3: e9 f0 f0 ff ff jmpq 4273b8 0.00 : 4282c8: 44 8b 6c 24 60 mov 0x60(%rsp),%r13d 0.00 : 4282cd: 45 85 ed test %r13d,%r13d 0.00 : 4282d0: 74 1a je 4282ec 0.00 : 4282d2: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 4282d6: 48 85 c0 test %rax,%rax 0.00 : 4282d9: 74 04 je 4282df 0.00 : 4282db: 83 48 04 08 orl $0x8,0x4(%rax) 0.00 : 4282df: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : 4282e3: 48 85 c0 test %rax,%rax 0.00 : 4282e6: 74 04 je 4282ec 0.00 : 4282e8: 83 48 04 08 orl $0x8,0x4(%rax) 0.00 : 4282ec: 8b 05 4e dc 26 00 mov 0x26dc4e(%rip),%eax # 695f40 0.00 : 4282f2: 85 c0 test %eax,%eax 0.00 : 4282f4: 74 0b je 428301 0.00 : 4282f6: 8b 3d 44 dc 26 00 mov 0x26dc44(%rip),%edi # 695f40 0.00 : 4282fc: e8 8f f8 01 00 callq 447b90 0.00 : 428301: 8b 05 31 dc 26 00 mov 0x26dc31(%rip),%eax # 695f38 0.00 : 428307: 85 c0 test %eax,%eax 0.00 : 428309: 74 05 je 428310 0.00 : 42830b: e8 80 fa 01 00 callq 447d90 0.00 : 428310: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 428314: 48 8b 78 08 mov 0x8(%rax),%rdi ??:0 4.35 : 428318: e8 33 02 00 00 callq 428550 4.35 : 42831d: 8b 05 1d dc 26 00 mov 0x26dc1d(%rip),%eax # 695f40 0.00 : 428323: 85 c0 test %eax,%eax 0.00 : 428325: 74 0b je 428332 0.00 : 428327: 8b 3d 13 dc 26 00 mov 0x26dc13(%rip),%edi # 695f40 0.00 : 42832d: e8 5e f8 01 00 callq 447b90 0.00 : 428332: 8b 05 00 dc 26 00 mov 0x26dc00(%rip),%eax # 695f38 0.00 : 428338: 85 c0 test %eax,%eax 0.00 : 42833a: 74 05 je 428341 0.00 : 42833c: e8 4f fa 01 00 callq 447d90 0.00 : 428341: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 428345: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 428349: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 42834e: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 428352: 44 89 f9 mov %r15d,%ecx 0.00 : 428355: 44 89 e6 mov %r12d,%esi 0.00 : 428358: e8 03 ed ff ff callq 427060 0.00 : 42835d: 41 89 c5 mov %eax,%r13d 0.00 : 428360: e9 53 f0 ff ff jmpq 4273b8 0.00 : 428365: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 428369: 45 31 ed xor %r13d,%r13d 0.00 : 42836c: 48 85 db test %rbx,%rbx 0.00 : 42836f: 0f 84 43 f0 ff ff je 4273b8 0.00 : 428375: 8b 7c 24 60 mov 0x60(%rsp),%edi 0.00 : 428379: 85 ff test %edi,%edi 0.00 : 42837b: 74 04 je 428381 0.00 : 42837d: 83 4b 04 08 orl $0x8,0x4(%rbx) 0.00 : 428381: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 428384: 8b 35 0e e8 26 00 mov 0x26e80e(%rip),%esi # 696b98 0.00 : 42838a: 80 cc 02 or $0x2,%ah 0.00 : 42838d: 85 f6 test %esi,%esi 0.00 : 42838f: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 428392: 75 0a jne 42839e 0.00 : 428394: 8b 0d ce 2e 26 00 mov 0x262ece(%rip),%ecx # 68b268 0.00 : 42839a: 85 c9 test %ecx,%ecx 0.00 : 42839c: 75 10 jne 4283ae 0.00 : 42839e: 8b 15 e4 e7 26 00 mov 0x26e7e4(%rip),%edx # 696b88 0.00 : 4283a4: 85 d2 test %edx,%edx 0.00 : 4283a6: 75 06 jne 4283ae 0.00 : 4283a8: 80 cc 04 or $0x4,%ah 0.00 : 4283ab: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 4283ae: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 4283b3: 8b 54 24 10 mov 0x10(%rsp),%edx 0.00 : 4283b7: 44 89 f9 mov %r15d,%ecx 0.00 : 4283ba: be 01 00 00 00 mov $0x1,%esi 0.00 : 4283bf: 48 89 df mov %rbx,%rdi 0.00 : 4283c2: e8 99 ec ff ff callq 427060 0.00 : 4283c7: 41 89 c5 mov %eax,%r13d 0.00 : 4283ca: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 4283cd: f6 c4 04 test $0x4,%ah 0.00 : 4283d0: 74 06 je 4283d8 0.00 : 4283d2: 80 e4 fb and $0xfb,%ah 0.00 : 4283d5: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 4283d8: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 4283dc: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 4283e0: 48 85 ff test %rdi,%rdi 0.00 : 4283e3: 0f 84 cf ef ff ff je 4273b8 0.00 : 4283e9: 8b 44 24 60 mov 0x60(%rsp),%eax 0.00 : 4283ed: 85 c0 test %eax,%eax 0.00 : 4283ef: 0f 84 54 ff ff ff je 428349 0.00 : 4283f5: 83 4f 04 08 orl $0x8,0x4(%rdi) 0.00 : 4283f9: e9 4b ff ff ff jmpq 428349 0.00 : 4283fe: 83 e8 01 sub $0x1,%eax 0.00 : 428401: 89 05 35 df 26 00 mov %eax,0x26df35(%rip) # 69633c 0.00 : 428407: 8b 44 24 2c mov 0x2c(%rsp),%eax 0.00 : 42840b: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 428410: 83 2d 21 df 26 00 01 subl $0x1,0x26df21(%rip) # 696338 0.00 : 428417: 89 05 67 b0 26 00 mov %eax,0x26b067(%rip) # 693484 0.00 : 42841d: e8 de d5 ff ff callq 425a00 0.00 : 428422: bf 6b 79 47 00 mov $0x47796b,%edi 0.00 : 428427: e8 14 ea 01 00 callq 446e40 0.00 : 42842c: e9 87 ef ff ff jmpq 4273b8 0.00 : 428431: 48 8b 3b mov (%rbx),%rdi 0.00 : 428434: 4c 89 e6 mov %r12,%rsi 0.00 : 428437: 45 31 ed xor %r13d,%r13d 0.00 : 42843a: e8 31 4e 00 00 callq 42d270 0.00 : 42843f: 90 nop 0.00 : 428440: e9 73 ef ff ff jmpq 4273b8 0.00 : 428445: 8b 3d 15 2e 26 00 mov 0x262e15(%rip),%edi # 68b260 0.00 : 42844b: e8 60 de 00 00 callq 4362b0 0.00 : 428450: 41 89 c5 mov %eax,%r13d 4.35 : 428453: e9 c2 f7 ff ff jmpq 427c1a 0.00 : 428458: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 42845c: e9 f4 fd ff ff jmpq 428255 0.00 : 428461: 83 c9 02 or $0x2,%ecx 0.00 : 428464: 89 4d 04 mov %ecx,0x4(%rbp) 0.00 : 428467: e9 1c fe ff ff jmpq 428288 0.00 : 42846c: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 428470: 4c 8b 20 mov (%rax),%r12 0.00 : 428473: e9 35 f6 ff ff jmpq 427aad 0.00 : 428478: bf 04 00 00 00 mov $0x4,%edi 0.00 : 42847d: c7 05 1d e6 26 00 02 movl $0x102,0x26e61d(%rip) # 696aa4 0.00 : 428484: 01 00 00 0.00 : 428487: e8 94 f8 01 00 callq 447d20 0.00 : 42848c: e8 ff f8 01 00 callq 447d90 0.00 : 428491: e9 7b fd ff ff jmpq 428211 0.00 : 428496: 8b 3d a4 da 26 00 mov 0x26daa4(%rip),%edi # 695f40 0.00 : 42849c: e8 ef f6 01 00 callq 447b90 0.00 : 4284a1: e9 5d fd ff ff jmpq 428203 0.00 : 4284a6: 83 e8 01 sub $0x1,%eax 0.00 : 4284a9: 89 05 8d de 26 00 mov %eax,0x26de8d(%rip) # 69633c 0.00 : 4284af: e9 fc f3 ff ff jmpq 4278b0 0.00 : 4284b4: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4284b9: e8 02 fe 02 00 callq 4582c0 0.00 : 4284be: c6 00 00 movb $0x0,(%rax) 0.00 : 4284c1: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : 4284c6: e9 fc f0 ff ff jmpq 4275c7 0.00 : 4284cb: 45 85 ed test %r13d,%r13d 0.00 : 4284ce: 0f 84 63 fd ff ff je 428237 0.00 : 4284d4: e9 df ee ff ff jmpq 4273b8 0.00 : 4284d9: c7 44 24 6c 01 00 00 movl $0x1,0x6c(%rsp) 0.00 : 4284e0: 00 0.00 : 4284e1: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4284e7: e9 cc ee ff ff jmpq 4273b8 0.00 : 4284ec: f6 40 28 02 testb $0x2,0x28(%rax) 0.00 : 4284f0: 8b 54 24 2c mov 0x2c(%rsp),%edx 0.00 : 4284f4: 89 15 8a af 26 00 mov %edx,0x26af8a(%rip) # 693484 0.00 : 4284fa: 74 14 je 428510 0.00 : 4284fc: 8b 0d d6 ae 26 00 mov 0x26aed6(%rip),%ecx # 6933d8 0.00 : 428502: 85 c9 test %ecx,%ecx 0.00 : 428504: 75 0a jne 428510 0.00 : 428506: 8b 15 fc ae 26 00 mov 0x26aefc(%rip),%edx # 693408 0.00 : 42850c: 85 d2 test %edx,%edx 0.00 : 42850e: 75 26 jne 428536 0.00 : 428510: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 428515: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 42851b: e8 e0 d4 ff ff callq 425a00 0.00 : 428520: bf 6b 79 47 00 mov $0x47796b,%edi 0.00 : 428525: e8 16 e9 01 00 callq 446e40 0.00 : 42852a: 83 2d 07 de 26 00 01 subl $0x1,0x26de07(%rip) # 696338 0.00 : 428531: e9 82 ee ff ff jmpq 4273b8 0.00 : 428536: bf 01 00 00 00 mov $0x1,%edi 0.00 : 42853b: c7 05 5f e5 26 00 01 movl $0x1,0x26e55f(%rip) # 696aa4 0.00 : 428542: 00 00 00 0.00 : 428545: e8 d6 f7 01 00 callq 447d20 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 42.42 ??:0 27.27 ??:0 6.06 ??:0 6.06 ??:0 3.03 ??:0 3.03 ??:0 3.03 ??:0 3.03 ??:0 3.03 ??:0 3.03 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000220 : : int packets = ring_container->total_packets; : u32 timepassed_us; : u64 bytes_perint; : u8 itr_setting = ring_container->itr; : : if (packets == 0) ??:0 3.03 : 220: 8b 46 0c mov 0xc(%rsi),%eax : * parameter (see ixgbe_param.c) : **/ : static void ixgbe_update_itr(struct ixgbe_q_vector *q_vector, : struct ixgbe_ring_container *ring_container) : { : int bytes = ring_container->total_bytes; ??:0 42.42 : 223: 8b 4e 08 mov 0x8(%rsi),%ecx : int packets = ring_container->total_packets; : u32 timepassed_us; : u64 bytes_perint; : u8 itr_setting = ring_container->itr; 0.00 : 226: 44 0f b6 46 13 movzbl 0x13(%rsi),%r8d : : if (packets == 0) 0.00 : 22b: 85 c0 test %eax,%eax 0.00 : 22d: 74 35 je 264 : * 10-20MB/s low (20000 ints/s) : * 20-1249MB/s bulk (8000 ints/s) : */ : /* what was last interrupt timeslice? */ : timepassed_us = q_vector->itr >> 2; : bytes_perint = bytes / timepassed_us; /* bytes/usec */ 0.00 : 22f: 0f b7 47 0e movzwl 0xe(%rdi),%eax 0.00 : 233: 31 d2 xor %edx,%edx 0.00 : 235: 66 c1 e8 02 shr $0x2,%ax ??:0 3.03 : 239: 0f b7 f8 movzwl %ax,%edi 0.00 : 23c: 89 c8 mov %ecx,%eax 0.00 : 23e: f7 f7 div %edi : : switch (itr_setting) { ??:0 27.27 : 240: 41 80 f8 01 cmp $0x1,%r8b : * 10-20MB/s low (20000 ints/s) : * 20-1249MB/s bulk (8000 ints/s) : */ : /* what was last interrupt timeslice? */ : timepassed_us = q_vector->itr >> 2; : bytes_perint = bytes / timepassed_us; /* bytes/usec */ 0.00 : 244: 89 c0 mov %eax,%eax : : switch (itr_setting) { 0.00 : 246: 74 40 je 288 0.00 : 248: 73 26 jae 270 : if (bytes_perint > 10) { : itr_setting = low_latency; : } : break; : case low_latency: : if (bytes_perint > 20) { 0.00 : 24a: 48 83 f8 0a cmp $0xa,%rax 0.00 : 24e: 41 0f 97 c0 seta %r8b : } : break; : } : : /* clear work counters since we have the values we need */ : ring_container->total_bytes = 0; 6.06 : 252: c7 46 08 00 00 00 00 movl $0x0,0x8(%rsi) : ring_container->total_packets = 0; 0.00 : 259: c7 46 0c 00 00 00 00 movl $0x0,0xc(%rsi) : : /* write updated itr to ring container */ : ring_container->itr = itr_setting; ??:0 3.03 : 260: 44 88 46 13 mov %r8b,0x13(%rsi) ??:0 6.06 : 264: f3 c3 repz retq 0.00 : 266: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 26d: 00 00 00 : */ : /* what was last interrupt timeslice? */ : timepassed_us = q_vector->itr >> 2; : bytes_perint = bytes / timepassed_us; /* bytes/usec */ : : switch (itr_setting) { ??:0 3.03 : 270: 41 80 f8 02 cmp $0x2,%r8b 0.00 : 274: 75 dc jne 252 : } else if (bytes_perint <= 10) { : itr_setting = lowest_latency; : } : break; : case bulk_latency: : if (bytes_perint <= 20) { 0.00 : 276: 48 83 f8 14 cmp $0x14,%rax 0.00 : 27a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 27f: 44 0f 46 c0 cmovbe %eax,%r8d 3.03 : 283: eb cd jmp 252 0.00 : 285: 0f 1f 00 nopl (%rax) : if (bytes_perint > 10) { : itr_setting = low_latency; : } : break; : case low_latency: : if (bytes_perint > 20) { 0.00 : 288: 48 83 f8 14 cmp $0x14,%rax 3.03 : 28c: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 292: 77 be ja 252 0.00 : 294: eb b4 jmp 24a : : Disassembly of section .devinit.text: : : 0000000000000220 : : hw->fc.pause_time = IXGBE_DEFAULT_FCPAUSE; : hw->fc.send_xon = true; : hw->fc.disable_fc_autoneg = false; : : /* set default ring sizes */ : adapter->tx_ring_count = IXGBE_DEFAULT_TXD; 3.03 : 220: 00 c7 add %al,%bh : adapter->rx_ring_count = IXGBE_DEFAULT_RXD; ??:0 42.42 : 222: 85 14 1b test %edx,(%rbx,%rbx,1) 0.00 : 225: 00 00 add %al,(%rax) 0.00 : 227: 00 02 add %al,(%rdx) 0.00 : 229: 00 00 add %al,(%rax) : : /* set default work limits */ : adapter->tx_work_limit = IXGBE_DEFAULT_TX_WORK; 0.00 : 22b: 66 c7 85 26 02 00 00 movw $0x100,0x226(%rbp) 0.00 : 232: 00 01 : adapter->rx_work_limit = IXGBE_DEFAULT_RX_WORK; ??:0 3.03 : 234: 66 c7 85 2e 02 00 00 movw $0x100,0x22e(%rbp) 0.00 : 23b: 00 01 : */ : static __always_inline void : set_bit(unsigned int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "orb %1,%0" ??:0 27.27 : 23d: f0 80 8d 10 02 00 00 lock orb $0x4,0x210(%rbp) 0.00 : 244: 04 0.00 : 245: e9 2a fe ff ff jmpq 74 : hw->subsystem_vendor_id = pdev->subsystem_vendor; : hw->subsystem_device_id = pdev->subsystem_device; : : err = ixgbe_init_shared_code(hw); : if (err) { : e_err(probe, "init_shared_code failed: %d\n", err); 0.00 : 24a: 48 8b bd 00 02 00 00 mov 0x200(%rbp),%rdi 6.06 : 251: 89 c2 mov %eax,%edx 0.00 : 253: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 25a: 31 c0 xor %eax,%eax ??:0 3.03 : 25c: e8 00 00 00 00 callq 261 ??:0 6.06 : 261: e9 0e fe ff ff jmpq 74 : #endif : /* n-tuple support exists, always init our spinlock */ : spin_lock_init(&adapter->fdir_perfect_lock); : : #ifdef CONFIG_DCB : switch (hw->mac.type) { 0.00 : 266: 83 fa 02 cmp $0x2,%edx 0.00 : 269: 0f 86 8b 00 00 00 jbe 2fa ??:0 3.03 : 26f: 83 fa 03 cmp $0x3,%edx 0.00 : 272: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 278: 0f 85 59 fe ff ff jne d7 : case ixgbe_mac_82599EB: : adapter->dcb_cfg.num_tcs.pg_tcs = 8; : adapter->dcb_cfg.num_tcs.pfc_tcs = 8; : break; : case ixgbe_mac_X540: : adapter->dcb_cfg.num_tcs.pg_tcs = 4; 3.03 : 27e: c6 85 68 0a 00 00 04 movb $0x4,0xa68(%rbp) : adapter->dcb_cfg.num_tcs.pfc_tcs = 4; 0.00 : 285: c6 85 69 0a 00 00 04 movb $0x4,0xa69(%rbp) : break; 3.03 : 28c: e9 54 fe ff ff jmpq e5 : adapter->flags |= IXGBE_FLAG_FAN_FAIL_CAPABLE; : : adapter->max_q_vectors = IXGBE_MAX_MSIX_Q_VECTORS_82598; : break; : case ixgbe_mac_X540: : adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE; 0.00 : 291: 83 8d 1c 02 00 00 08 orl $0x8,0x21c(%rbp) Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 62.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2198 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2198 2.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2160 2.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2160 2.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2160 2.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2192 2.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2250 2.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2264 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674f50 : : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 674f50: 55 push %rbp 0.00 : 674f51: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2160 2.86 : 674f54: 41 55 push %r13 2.86 : 674f56: 49 89 f5 mov %rsi,%r13 : /* : * Acquire the buffer's io_in_progress lock. If StartBufferIO returns : * false, then someone else flushed the buffer before we could, so we need : * not do anything. : */ : if (!StartBufferIO(buf, false)) 0.00 : 674f59: 31 f6 xor %esi,%esi : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 674f5b: 41 54 push %r12 2.86 : 674f5d: 53 push %rbx 0.00 : 674f5e: 48 89 fb mov %rdi,%rbx 0.00 : 674f61: 48 83 ec 48 sub $0x48,%rsp : /* : * Acquire the buffer's io_in_progress lock. If StartBufferIO returns : * false, then someone else flushed the buffer before we could, so we need : * not do anything. : */ : if (!StartBufferIO(buf, false)) 0.00 : 674f65: e8 d6 f4 ff ff callq 674440 0.00 : 674f6a: 84 c0 test %al,%al 0.00 : 674f6c: 0f 84 e3 00 00 00 je 675055 : return; : : /* Setup error traceback support for ereport() */ : errcallback.callback = shared_buffer_write_error_callback; : errcallback.arg = (void *) buf; : errcallback.previous = error_context_stack; 0.00 : 674f72: 48 8b 05 c7 46 54 00 mov 0x5446c7(%rip),%rax # bb9640 : error_context_stack = &errcallback; : : /* Find smgr relation for buffer */ : if (reln == NULL) 0.00 : 674f79: 4d 85 ed test %r13,%r13 : */ : if (!StartBufferIO(buf, false)) : return; : : /* Setup error traceback support for ereport() */ : errcallback.callback = shared_buffer_write_error_callback; 0.00 : 674f7c: 48 c7 45 a8 50 53 67 movq $0x675350,-0x58(%rbp) 0.00 : 674f83: 00 : errcallback.arg = (void *) buf; 0.00 : 674f84: 48 89 5d b0 mov %rbx,-0x50(%rbp) : errcallback.previous = error_context_stack; 0.00 : 674f88: 48 89 45 a0 mov %rax,-0x60(%rbp) : error_context_stack = &errcallback; 0.00 : 674f8c: 48 8d 45 a0 lea -0x60(%rbp),%rax 0.00 : 674f90: 48 89 05 a9 46 54 00 mov %rax,0x5446a9(%rip) # bb9640 : : /* Find smgr relation for buffer */ : if (reln == NULL) 0.00 : 674f97: 0f 84 b3 01 00 00 je 675150 : buf->tag.blockNum, : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode); : : LockBufHdr(buf); 0.00 : 674f9d: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 674fa1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 674fa6: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2192 2.86 : 674fa9: 84 c0 test %al,%al 0.00 : 674fab: 0f 85 5f 01 00 00 jne 675110 : : /* : * Run PageGetLSN while holding header lock, since we don't have the : * buffer locked exclusively in all cases. : */ : recptr = BufferGetLSN(buf); 0.00 : 674fb1: 8b 43 24 mov 0x24(%rbx),%eax 0.00 : 674fb4: 48 8b 15 3d ab 54 00 mov 0x54ab3d(%rip),%rdx # bbfaf8 0.00 : 674fbb: 48 98 cltq 0.00 : 674fbd: 48 c1 e0 0d shl $0xd,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2198 20.00 : 674fc1: 8b 0c 02 mov (%rdx,%rax,1),%ecx 62.86 : 674fc4: 8b 43 24 mov 0x24(%rbx),%eax 0.00 : 674fc7: 48 98 cltq 0.00 : 674fc9: 48 c1 e0 0d shl $0xd,%rax 0.00 : 674fcd: 8b 54 02 04 mov 0x4(%rdx,%rax,1),%edx : : /* To check if block content changes while flushing. - vadim 01/17/97 */ : buf->flags &= ~BM_JUST_DIRTIED; 0.00 : 674fd1: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674fd5: 83 e0 df and $0xffffffdf,%eax 0.00 : 674fd8: 66 89 43 14 mov %ax,0x14(%rbx) : UnlockBufHdr(buf); 0.00 : 674fdc: c6 43 20 00 movb $0x0,0x20(%rbx) : * LSN counter could advance past the WAL insertion point; and if it did : * happen, attempting to flush WAL through that location would fail, with : * disastrous system-wide consequences. To make sure that can't happen, : * skip the flush if the buffer isn't permanent. : */ : if (buf->flags & BM_PERMANENT) 0.00 : 674fe0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674fe4: f6 c4 01 test $0x1,%ah 0.00 : 674fe7: 0f 85 3b 01 00 00 jne 675128 : /* : * Now it's safe to write buffer to disk. Note that no one else should : * have been able to write it while we were busy with log flushing because : * we have the io_in_progress lock. : */ : bufBlock = BufHdrGetBlock(buf); 0.00 : 674fed: 8b 7b 24 mov 0x24(%rbx),%edi : /* : * Update page checksum if desired. Since we have only shared lock on the : * buffer, other processes might be updating hint bits in it, so we must : * copy the page to private storage if we do checksumming. : */ : bufToWrite = PageSetChecksumCopy((Page) bufBlock, buf->tag.blockNum); 0.00 : 674ff0: 8b 73 10 mov 0x10(%rbx),%esi 0.00 : 674ff3: 48 63 ff movslq %edi,%rdi 0.00 : 674ff6: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 674ffa: 48 03 3d f7 aa 54 00 add 0x54aaf7(%rip),%rdi # bbfaf8 0.00 : 675001: e8 2a fe 01 00 callq 694e30 : : if (track_io_timing) 0.00 : 675006: 80 3d 54 80 50 00 00 cmpb $0x0,0x508054(%rip) # b7d061 : /* : * Update page checksum if desired. Since we have only shared lock on the : * buffer, other processes might be updating hint bits in it, so we must : * copy the page to private storage if we do checksumming. : */ : bufToWrite = PageSetChecksumCopy((Page) bufBlock, buf->tag.blockNum); 0.00 : 67500d: 49 89 c4 mov %rax,%r12 : : if (track_io_timing) 0.00 : 675010: 0f 85 2a 01 00 00 jne 675140 : INSTR_TIME_SET_CURRENT(io_start); : : /* : * bufToWrite is either the shared buffer or a copy, as appropriate. : */ : smgrwrite(reln, 0.00 : 675016: 8b 53 10 mov 0x10(%rbx),%edx 0.00 : 675019: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 67501c: 45 31 c0 xor %r8d,%r8d 0.00 : 67501f: 4c 89 e1 mov %r12,%rcx 0.00 : 675022: 4c 89 ef mov %r13,%rdi 0.00 : 675025: e8 06 44 02 00 callq 699430 : buf->tag.forkNum, : buf->tag.blockNum, : bufToWrite, : false); : : if (track_io_timing) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2250 2.86 : 67502a: 80 3d 30 80 50 00 00 cmpb $0x0,0x508030(%rip) # b7d061 0.00 : 675031: 75 2d jne 675060 : : /* : * Mark the buffer as clean (unless BM_JUST_DIRTIED has become set) and : * end the io_in_progress state. : */ : TerminateBufferIO(buf, true, 0); 0.00 : 675033: 31 d2 xor %edx,%edx 0.00 : 675035: be 01 00 00 00 mov $0x1,%esi 0.00 : 67503a: 48 89 df mov %rbx,%rdi : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); : } : : pgBufferUsage.shared_blks_written++; 0.00 : 67503d: 48 83 05 33 a7 54 00 addq $0x1,0x54a733(%rip) # bbf778 0.00 : 675044: 01 : : /* : * Mark the buffer as clean (unless BM_JUST_DIRTIED has become set) and : * end the io_in_progress state. : */ : TerminateBufferIO(buf, true, 0); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2264 2.86 : 675045: e8 86 f1 ff ff callq 6741d0 : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode); : : /* Pop the error context stack */ : error_context_stack = errcallback.previous; 0.00 : 67504a: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 67504e: 48 89 05 eb 45 54 00 mov %rax,0x5445eb(%rip) # bb9640 : } 0.00 : 675055: 48 83 c4 48 add $0x48,%rsp 0.00 : 675059: 5b pop %rbx 0.00 : 67505a: 41 5c pop %r12 0.00 : 67505c: 41 5d pop %r13 0.00 : 67505e: c9 leaveq 0.00 : 67505f: c3 retq : bufToWrite, : false); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); 0.00 : 675060: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 675064: 31 f6 xor %esi,%esi 0.00 : 675066: e8 55 45 df ff callq 4695c0 : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 67506b: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 67506f: 48 2b 55 d8 sub -0x28(%rbp),%rdx 0.00 : 675073: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 675077: 48 2b 45 d0 sub -0x30(%rbp),%rax 0.00 : 67507b: 48 85 d2 test %rdx,%rdx 0.00 : 67507e: 48 89 55 c8 mov %rdx,-0x38(%rbp) 0.00 : 675082: 48 89 c1 mov %rax,%rcx 0.00 : 675085: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 675089: 79 1d jns 6750a8 0.00 : 67508b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 675090: 48 83 e8 01 sub $0x1,%rax : false); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 675094: 48 81 c2 40 42 0f 00 add $0xf4240,%rdx 0.00 : 67509b: 78 f3 js 675090 0.00 : 67509d: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 6750a1: 48 89 55 c8 mov %rdx,-0x38(%rbp) 0.00 : 6750a5: 48 89 c1 mov %rax,%rcx : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 6750a8: 48 69 c1 40 42 0f 00 imul $0xf4240,%rcx,%rax : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); 0.00 : 6750af: 48 03 0d 0a a7 54 00 add 0x54a70a(%rip),%rcx # bbf7c0 : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 6750b6: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 6750ba: 48 01 05 07 6b 50 00 add %rax,0x506b07(%rip) # b7bbc8 : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); 0.00 : 6750c1: 48 89 d0 mov %rdx,%rax 0.00 : 6750c4: 48 03 05 fd a6 54 00 add 0x54a6fd(%rip),%rax # bbf7c8 0.00 : 6750cb: 48 89 0d ee a6 54 00 mov %rcx,0x54a6ee(%rip) # bbf7c0 0.00 : 6750d2: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6750d8: 48 89 05 e9 a6 54 00 mov %rax,0x54a6e9(%rip) # bbf7c8 0.00 : 6750df: 0f 8e 4e ff ff ff jle 675033 0.00 : 6750e5: 0f 1f 00 nopl (%rax) 0.00 : 6750e8: 48 2d 40 42 0f 00 sub $0xf4240,%rax : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 6750ee: 48 83 c1 01 add $0x1,%rcx : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); 0.00 : 6750f2: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6750f8: 7f ee jg 6750e8 0.00 : 6750fa: 48 89 0d bf a6 54 00 mov %rcx,0x54a6bf(%rip) # bbf7c0 0.00 : 675101: 48 89 05 c0 a6 54 00 mov %rax,0x54a6c0(%rip) # bbf7c8 0.00 : 675108: e9 26 ff ff ff jmpq 675033 0.00 : 67510d: 0f 1f 00 nopl (%rax) : buf->tag.blockNum, : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode); : : LockBufHdr(buf); 0.00 : 675110: ba 90 08 00 00 mov $0x890,%edx 0.00 : 675115: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67511a: e8 21 af 01 00 callq 690040 0.00 : 67511f: e9 8d fe ff ff jmpq 674fb1 0.00 : 675124: 0f 1f 40 00 nopl 0x0(%rax) : * happen, attempting to flush WAL through that location would fail, with : * disastrous system-wide consequences. To make sure that can't happen, : * skip the flush if the buffer isn't permanent. : */ : if (buf->flags & BM_PERMANENT) : XLogFlush(recptr); 0.00 : 675128: 48 89 cf mov %rcx,%rdi 0.00 : 67512b: 89 d0 mov %edx,%eax 0.00 : 67512d: 48 c1 e7 20 shl $0x20,%rdi 0.00 : 675131: 48 09 c7 or %rax,%rdi 0.00 : 675134: e8 17 fa e5 ff callq 4d4b50 0.00 : 675139: e9 af fe ff ff jmpq 674fed 0.00 : 67513e: 66 90 xchg %ax,%ax : * copy the page to private storage if we do checksumming. : */ : bufToWrite = PageSetChecksumCopy((Page) bufBlock, buf->tag.blockNum); : : if (track_io_timing) : INSTR_TIME_SET_CURRENT(io_start); 0.00 : 675140: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 675144: 31 f6 xor %esi,%esi 0.00 : 675146: e8 75 44 df ff callq 4695c0 0.00 : 67514b: e9 c6 fe ff ff jmpq 675016 : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; : : /* Find smgr relation for buffer */ : if (reln == NULL) : reln = smgropen(buf->tag.rnode, InvalidBackendId); 0.00 : 675150: 48 8b 3b mov (%rbx),%rdi 0.00 : 675153: 8b 73 08 mov 0x8(%rbx),%esi 0.00 : 675156: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 67515b: e8 d0 48 02 00 callq 699a30 0.00 : 675160: 49 89 c5 mov %rax,%r13 0.00 : 675163: e9 35 fe ff ff jmpq 674f9d Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 32.26 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:457 29.03 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:457 12.90 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:460 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:460 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:457 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:375 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:415 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:436 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:447 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046b230 : : * : * XXX see _bt_first on what to do about sk_subtype. : */ : Datum : bringetbitmap(PG_FUNCTION_ARGS) : { 0.00 : 46b230: 55 push %rbp 0.00 : 46b231: 48 89 e5 mov %rsp,%rbp 0.00 : 46b234: 41 57 push %r15 0.00 : 46b236: 41 56 push %r14 0.00 : 46b238: 41 55 push %r13 0.00 : 46b23a: 41 54 push %r12 0.00 : 46b23c: 53 push %rbx 0.00 : 46b23d: 48 83 ec 48 sub $0x48,%rsp : IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); 0.00 : 46b241: 48 8b 47 20 mov 0x20(%rdi),%rax 0.00 : 46b245: 48 89 45 98 mov %rax,-0x68(%rbp) : TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); 0.00 : 46b249: 48 8b 7f 28 mov 0x28(%rdi),%rdi 0.00 : 46b24d: 48 89 7d a0 mov %rdi,-0x60(%rbp) : Relation idxRel = scan->indexRelation; 0.00 : 46b251: 4c 8b 60 08 mov 0x8(%rax),%r12 : Buffer buf = InvalidBuffer; 0.00 : 46b255: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%rbp) : BlockNumber heapBlk; : int totalpages = 0; : int keyno; : FmgrInfo *consistentFn; : : opaque = (BrinOpaque *) scan->opaque; 0.00 : 46b25c: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 46b260: 48 89 55 b0 mov %rdx,-0x50(%rbp) : bdesc = opaque->bo_bdesc; 0.00 : 46b264: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 46b268: 48 89 45 a8 mov %rax,-0x58(%rbp) : pgstat_count_index_scan(idxRel); 0.00 : 46b26c: 49 8b 84 24 38 01 00 mov 0x138(%r12),%rax 0.00 : 46b273: 00 0.00 : 46b274: 48 85 c0 test %rax,%rax 0.00 : 46b277: 74 05 je 46b27e 0.00 : 46b279: 48 83 40 10 01 addq $0x1,0x10(%rax) : : /* : * We need to know the size of the table so that we know how long to : * iterate on the revmap. : */ : heapOid = IndexGetRelation(RelationGetRelid(idxRel), false); 0.00 : 46b27e: 41 8b 7c 24 40 mov 0x40(%r12),%edi 0.00 : 46b283: 31 f6 xor %esi,%esi 0.00 : 46b285: e8 d6 db 07 00 callq 4e8e60 : heapRel = heap_open(heapOid, AccessShareLock); 0.00 : 46b28a: be 01 00 00 00 mov $0x1,%esi : : /* : * We need to know the size of the table so that we know how long to : * iterate on the revmap. : */ : heapOid = IndexGetRelation(RelationGetRelid(idxRel), false); 0.00 : 46b28f: 89 c7 mov %eax,%edi : heapRel = heap_open(heapOid, AccessShareLock); 0.00 : 46b291: e8 ca 28 03 00 callq 49db60 : nblocks = RelationGetNumberOfBlocks(heapRel); 0.00 : 46b296: 31 f6 xor %esi,%esi : /* : * We need to know the size of the table so that we know how long to : * iterate on the revmap. : */ : heapOid = IndexGetRelation(RelationGetRelid(idxRel), false); : heapRel = heap_open(heapOid, AccessShareLock); 0.00 : 46b298: 48 89 c3 mov %rax,%rbx : nblocks = RelationGetNumberOfBlocks(heapRel); 0.00 : 46b29b: 48 89 c7 mov %rax,%rdi 0.00 : 46b29e: e8 ed a3 20 00 callq 675690 : heap_close(heapRel, AccessShareLock); 0.00 : 46b2a3: be 01 00 00 00 mov $0x1,%esi 0.00 : 46b2a8: 48 89 df mov %rbx,%rdi : * We need to know the size of the table so that we know how long to : * iterate on the revmap. : */ : heapOid = IndexGetRelation(RelationGetRelid(idxRel), false); : heapRel = heap_open(heapOid, AccessShareLock); : nblocks = RelationGetNumberOfBlocks(heapRel); 0.00 : 46b2ab: 89 45 bc mov %eax,-0x44(%rbp) : heap_close(heapRel, AccessShareLock); 0.00 : 46b2ae: e8 0d 27 03 00 callq 49d9c0 : /* : * Obtain consistent functions for all indexed column. Maybe it'd be : * possible to do this lazily only the first time we see a scan key that : * involves each particular attribute. : */ : consistentFn = palloc(sizeof(FmgrInfo) * bdesc->bd_tupdesc->natts); 0.00 : 46b2b3: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 46b2b7: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 46b2bb: 48 63 38 movslq (%rax),%rdi 0.00 : 46b2be: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 46b2c2: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 46b2c6: e8 85 da 32 00 callq 798d50 : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) 0.00 : 46b2cb: 48 8b 55 a8 mov -0x58(%rbp),%rdx : /* : * Obtain consistent functions for all indexed column. Maybe it'd be : * possible to do this lazily only the first time we see a scan key that : * involves each particular attribute. : */ : consistentFn = palloc(sizeof(FmgrInfo) * bdesc->bd_tupdesc->natts); 0.00 : 46b2cf: 48 89 45 c0 mov %rax,-0x40(%rbp) : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) 0.00 : 46b2d3: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 46b2d7: 44 8b 08 mov (%rax),%r9d 0.00 : 46b2da: 45 85 c9 test %r9d,%r9d 0.00 : 46b2dd: 7e 49 jle 46b328 0.00 : 46b2df: 31 db xor %ebx,%ebx 0.00 : 46b2e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : FmgrInfo *tmp; : : tmp = index_getprocinfo(idxRel, keyno + 1, BRIN_PROCNUM_CONSISTENT); 0.00 : 46b2e8: 8d 73 01 lea 0x1(%rbx),%esi 0.00 : 46b2eb: ba 03 00 00 00 mov $0x3,%edx 0.00 : 46b2f0: 4c 89 e7 mov %r12,%rdi 0.00 : 46b2f3: 0f bf f6 movswl %si,%esi 0.00 : 46b2f6: e8 c5 9d 03 00 callq 4a50c0 : fmgr_info_copy(&consistentFn[keyno], tmp, CurrentMemoryContext); 0.00 : 46b2fb: 48 63 fb movslq %ebx,%rdi 0.00 : 46b2fe: 48 8b 15 5b f5 74 00 mov 0x74f55b(%rip),%rdx # bba860 : consistentFn = palloc(sizeof(FmgrInfo) * bdesc->bd_tupdesc->natts); : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) : { : FmgrInfo *tmp; : : tmp = index_getprocinfo(idxRel, keyno + 1, BRIN_PROCNUM_CONSISTENT); 0.00 : 46b305: 48 89 c6 mov %rax,%rsi : fmgr_info_copy(&consistentFn[keyno], tmp, CurrentMemoryContext); 0.00 : 46b308: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi : * Obtain consistent functions for all indexed column. Maybe it'd be : * possible to do this lazily only the first time we see a scan key that : * involves each particular attribute. : */ : consistentFn = palloc(sizeof(FmgrInfo) * bdesc->bd_tupdesc->natts); : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) 0.00 : 46b30c: 83 c3 01 add $0x1,%ebx : { : FmgrInfo *tmp; : : tmp = index_getprocinfo(idxRel, keyno + 1, BRIN_PROCNUM_CONSISTENT); : fmgr_info_copy(&consistentFn[keyno], tmp, CurrentMemoryContext); 0.00 : 46b30f: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 46b313: 48 03 7d c0 add -0x40(%rbp),%rdi 0.00 : 46b317: e8 24 44 31 00 callq 77f740 : * Obtain consistent functions for all indexed column. Maybe it'd be : * possible to do this lazily only the first time we see a scan key that : * involves each particular attribute. : */ : consistentFn = palloc(sizeof(FmgrInfo) * bdesc->bd_tupdesc->natts); : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) 0.00 : 46b31c: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 46b320: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 46b324: 39 18 cmp %ebx,(%rax) 0.00 : 46b326: 7f c0 jg 46b2e8 : /* : * Now scan the revmap. We start by querying for heap page 0, : * incrementing by the number of pages per range; this gives us a full : * view of the table. : */ : for (heapBlk = 0; heapBlk < nblocks; heapBlk += opaque->bo_pagesPerRange) 0.00 : 46b328: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 46b32c: 31 db xor %ebx,%ebx 0.00 : 46b32e: 45 85 c0 test %r8d,%r8d 0.00 : 46b331: 0f 84 1e 01 00 00 je 46b455 0.00 : 46b337: 45 31 e4 xor %r12d,%r12d 0.00 : 46b33a: 45 31 f6 xor %r14d,%r14d 0.00 : 46b33d: 0f 1f 00 nopl (%rax) : bool addrange; : BrTuple *tup; : OffsetNumber off; : Size size; : : CHECK_FOR_INTERRUPTS(); 0.00 : 46b340: 0f b6 05 49 ed 74 00 movzbl 0x74ed49(%rip),%eax # bba090 0.00 : 46b347: 84 c0 test %al,%al 0.00 : 46b349: 0f 85 81 01 00 00 jne 46b4d0 : : tup = brinGetTupleForHeapBlock(opaque->bo_rmAccess, heapBlk, &buf, 0.00 : 46b34f: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 46b353: 4c 8d 45 c8 lea -0x38(%rbp),%r8 0.00 : 46b357: 48 8d 4d d6 lea -0x2a(%rbp),%rcx 0.00 : 46b35b: 48 8d 55 d0 lea -0x30(%rbp),%rdx 0.00 : 46b35f: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 46b365: 44 89 e6 mov %r12d,%esi 0.00 : 46b368: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 46b36c: e8 3f 14 00 00 callq 46c7b0 : &off, &size, BUFFER_LOCK_SHARE); : if (tup) 0.00 : 46b371: 48 85 c0 test %rax,%rax 0.00 : 46b374: 0f 84 12 01 00 00 je 46b48c : { : tup = brin_copy_tuple(tup, size); 0.00 : 46b37a: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 46b37e: 48 89 c7 mov %rax,%rdi 0.00 : 46b381: e8 ba 24 00 00 callq 46d840 : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 46b386: 8b 7d d0 mov -0x30(%rbp),%edi : : tup = brinGetTupleForHeapBlock(opaque->bo_rmAccess, heapBlk, &buf, : &off, &size, BUFFER_LOCK_SHARE); : if (tup) : { : tup = brin_copy_tuple(tup, size); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:375 3.23 : 46b389: 49 89 c7 mov %rax,%r15 : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 46b38c: 31 f6 xor %esi,%esi 0.00 : 46b38e: e8 7d 93 20 00 callq 674710 : : /* : * For page ranges with no indexed tuple, we must return the whole : * range; otherwise, compare it to the scan keys. : */ : if (tup == NULL) 0.00 : 46b393: 4d 85 ff test %r15,%r15 0.00 : 46b396: 0f 84 f0 00 00 00 je 46b48c : else : { : DeformedBrTuple *dtup; : int keyno; : : dtup = brin_deform_tuple(bdesc, tup); 0.00 : 46b39c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 46b3a0: 4c 89 fe mov %r15,%rsi 0.00 : 46b3a3: e8 38 1f 00 00 callq 46d2e0 : if (dtup->dt_placeholder) 0.00 : 46b3a8: 80 38 00 cmpb $0x0,(%rax) : else : { : DeformedBrTuple *dtup; : int keyno; : : dtup = brin_deform_tuple(bdesc, tup); 0.00 : 46b3ab: 49 89 c5 mov %rax,%r13 : if (dtup->dt_placeholder) 0.00 : 46b3ae: 0f 85 c4 00 00 00 jne 46b478 : * the bitmap. We initially assume the range needs to be : * added; in particular this serves the case where there are : * no keys. : */ : addrange = true; : for (keyno = 0; keyno < scan->numberOfKeys; keyno++) 0.00 : 46b3b4: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 46b3b8: 8b 7a 18 mov 0x18(%rdx),%edi 0.00 : 46b3bb: 85 ff test %edi,%edi 0.00 : 46b3bd: 0f 8e b5 00 00 00 jle 46b478 0.00 : 46b3c3: 31 db xor %ebx,%ebx 0.00 : 46b3c5: eb 19 jmp 46b3e0 0.00 : 46b3c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46b3ce: 00 00 0.00 : 46b3d0: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 46b3d4: 83 c3 01 add $0x1,%ebx 0.00 : 46b3d7: 39 5a 18 cmp %ebx,0x18(%rdx) 0.00 : 46b3da: 0f 8e 98 00 00 00 jle 46b478 : { : ScanKey key = &scan->keyData[keyno]; 0.00 : 46b3e0: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 46b3e4: 4c 63 c3 movslq %ebx,%r8 : * When there are multiple scan keys, failure to meet the : * criteria for a single one of them is enough to discard : * the range as a whole, so break out of the loop as soon : * as a false return value is obtained. : */ : add = FunctionCall3Coll(&consistentFn[keyattno - 1], 0.00 : 46b3e7: 48 8b 55 a8 mov -0x58(%rbp),%rdx : * no keys. : */ : addrange = true; : for (keyno = 0; keyno < scan->numberOfKeys; keyno++) : { : ScanKey key = &scan->keyData[keyno]; 0.00 : 46b3eb: 4f 8d 04 c0 lea (%r8,%r8,8),%r8 0.00 : 46b3ef: 49 c1 e0 03 shl $0x3,%r8 0.00 : 46b3f3: 4c 03 40 20 add 0x20(%rax),%r8 : AttrNumber keyattno = key->sk_attno; : BrinValues *bval = &dtup->dt_columns[keyattno - 1]; 0.00 : 46b3f7: 49 0f bf 78 04 movswq 0x4(%r8),%rdi : * When there are multiple scan keys, failure to meet the : * criteria for a single one of them is enough to discard : * the range as a whole, so break out of the loop as soon : * as a false return value is obtained. : */ : add = FunctionCall3Coll(&consistentFn[keyattno - 1], 0.00 : 46b3fc: 41 8b 70 0c mov 0xc(%r8),%esi : addrange = true; : for (keyno = 0; keyno < scan->numberOfKeys; keyno++) : { : ScanKey key = &scan->keyData[keyno]; : AttrNumber keyattno = key->sk_attno; : BrinValues *bval = &dtup->dt_columns[keyattno - 1]; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:415 3.23 : 46b400: 48 83 ef 01 sub $0x1,%rdi : * When there are multiple scan keys, failure to meet the : * criteria for a single one of them is enough to discard : * the range as a whole, so break out of the loop as soon : * as a false return value is obtained. : */ : add = FunctionCall3Coll(&consistentFn[keyattno - 1], 0.00 : 46b404: 48 89 f8 mov %rdi,%rax 0.00 : 46b407: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 46b40b: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46b40f: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 46b413: 48 03 7d c0 add -0x40(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:436 3.23 : 46b417: 49 8d 4c 05 08 lea 0x8(%r13,%rax,1),%rcx 0.00 : 46b41c: e8 5f 2b 31 00 callq 77df80 : key->sk_collation, : PointerGetDatum(bdesc), : PointerGetDatum(bval), : PointerGetDatum(key)); : addrange = DatumGetBool(add); : if (!addrange) 0.00 : 46b421: 84 c0 test %al,%al 0.00 : 46b423: 75 ab jne 46b3d0 : break; : } : } : : brin_free_tuple(tup); 0.00 : 46b425: 4c 89 ff mov %r15,%rdi 0.00 : 46b428: e8 73 1c 00 00 callq 46d0a0 : brin_free_dtuple(bdesc, dtup); 0.00 : 46b42d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 46b431: 4c 89 ee mov %r13,%rsi 0.00 : 46b434: e8 a7 1b 00 00 callq 46cfe0 0.00 : 46b439: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 46b43d: 8b 10 mov (%rax),%edx : /* : * Now scan the revmap. We start by querying for heap page 0, : * incrementing by the number of pages per range; this gives us a full : * view of the table. : */ : for (heapBlk = 0; heapBlk < nblocks; heapBlk += opaque->bo_pagesPerRange) 0.00 : 46b43f: 41 01 d4 add %edx,%r12d 0.00 : 46b442: 44 39 65 bc cmp %r12d,-0x44(%rbp) 0.00 : 46b446: 0f 87 f4 fe ff ff ja 46b340 0.00 : 46b44c: 43 8d 04 b6 lea (%r14,%r14,4),%eax 0.00 : 46b450: 01 c0 add %eax,%eax 0.00 : 46b452: 48 63 d8 movslq %eax,%rbx : totalpages++; : } : } : } : : if (buf != InvalidBuffer) 0.00 : 46b455: 8b 7d d0 mov -0x30(%rbp),%edi 0.00 : 46b458: 85 ff test %edi,%edi 0.00 : 46b45a: 74 05 je 46b461 : ReleaseBuffer(buf); 0.00 : 46b45c: e8 ff 99 20 00 callq 674e60 : * XXX We have an approximation of the number of *pages* that our scan : * returns, but we don't have a precise idea of the number of heap tuples : * involved. : */ : PG_RETURN_INT64(totalpages * 10); : } 0.00 : 46b461: 48 83 c4 48 add $0x48,%rsp 0.00 : 46b465: 48 89 d8 mov %rbx,%rax 0.00 : 46b468: 5b pop %rbx 0.00 : 46b469: 41 5c pop %r12 0.00 : 46b46b: 41 5d pop %r13 0.00 : 46b46d: 41 5e pop %r14 0.00 : 46b46f: 41 5f pop %r15 0.00 : 46b471: c9 leaveq 0.00 : 46b472: c3 retq 0.00 : 46b473: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (!addrange) : break; : } : } : : brin_free_tuple(tup); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:447 3.23 : 46b478: 4c 89 ff mov %r15,%rdi 0.00 : 46b47b: e8 20 1c 00 00 callq 46d0a0 : brin_free_dtuple(bdesc, dtup); 0.00 : 46b480: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 46b484: 4c 89 ee mov %r13,%rsi 0.00 : 46b487: e8 54 1b 00 00 callq 46cfe0 : if (addrange) : { : BlockNumber pageno; : : for (pageno = heapBlk; : pageno <= heapBlk + opaque->bo_pagesPerRange - 1; 0.00 : 46b48c: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 46b490: 8b 10 mov (%rax),%edx 0.00 : 46b492: 42 8d 44 22 ff lea -0x1(%rdx,%r12,1),%eax 0.00 : 46b497: 41 39 c4 cmp %eax,%r12d 0.00 : 46b49a: 77 a3 ja 46b43f 0.00 : 46b49c: 44 89 e3 mov %r12d,%ebx 0.00 : 46b49f: 90 nop : pageno++) : { : tbm_add_page(tbm, pageno); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:460 12.90 : 46b4a0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 46b4a4: 89 de mov %ebx,%esi : { : BlockNumber pageno; : : for (pageno = heapBlk; : pageno <= heapBlk + opaque->bo_pagesPerRange - 1; : pageno++) 0.00 : 46b4a6: 83 c3 01 add $0x1,%ebx : { : tbm_add_page(tbm, pageno); : totalpages++; 0.00 : 46b4a9: 41 83 c6 01 add $0x1,%r14d : : for (pageno = heapBlk; : pageno <= heapBlk + opaque->bo_pagesPerRange - 1; : pageno++) : { : tbm_add_page(tbm, pageno); 6.45 : 46b4ad: e8 8e 8a 17 00 callq 5e3f40 : if (addrange) : { : BlockNumber pageno; : : for (pageno = heapBlk; : pageno <= heapBlk + opaque->bo_pagesPerRange - 1; 0.00 : 46b4b2: 48 8b 45 b0 mov -0x50(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:457 6.45 : 46b4b6: 8b 10 mov (%rax),%edx 32.26 : 46b4b8: 42 8d 44 22 ff lea -0x1(%rdx,%r12,1),%eax 29.03 : 46b4bd: 39 d8 cmp %ebx,%eax 0.00 : 46b4bf: 73 df jae 46b4a0 0.00 : 46b4c1: e9 79 ff ff ff jmpq 46b43f 0.00 : 46b4c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46b4cd: 00 00 00 : bool addrange; : BrTuple *tup; : OffsetNumber off; : Size size; : : CHECK_FOR_INTERRUPTS(); 0.00 : 46b4d0: e8 cb 0d 23 00 callq 69c2a0 0.00 : 46b4d5: 0f 1f 00 nopl (%rax) 0.00 : 46b4d8: e9 72 fe ff ff jmpq 46b34f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.77 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:255 11.54 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:225 11.54 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:253 7.69 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:225 7.69 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:253 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:210 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:210 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:210 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:225 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:253 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:312 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:284 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:288 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046c7b0 : : * is returned in *size. : */ : BrTuple * : brinGetTupleForHeapBlock(brinRmAccess *rmAccess, BlockNumber heapBlk, : Buffer *buf, OffsetNumber *off, Size *size, int mode) : { 0.00 : 46c7b0: 55 push %rbp 0.00 : 46c7b1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:210 3.85 : 46c7b4: 41 57 push %r15 0.00 : 46c7b6: 49 89 d7 mov %rdx,%r15 : ItemId lp; : BrTuple *tup; : ItemPointerData previptr; : : /* normalize the heap block number to be the first page in the range */ : heapBlk = (heapBlk / rmAccess->pagesPerRange) * rmAccess->pagesPerRange; 0.00 : 46c7b9: 31 d2 xor %edx,%edx : * is returned in *size. : */ : BrTuple * : brinGetTupleForHeapBlock(brinRmAccess *rmAccess, BlockNumber heapBlk, : Buffer *buf, OffsetNumber *off, Size *size, int mode) : { 0.00 : 46c7bb: 41 56 push %r14 0.00 : 46c7bd: 41 55 push %r13 0.00 : 46c7bf: 49 89 fd mov %rdi,%r13 3.85 : 46c7c2: 41 54 push %r12 0.00 : 46c7c4: 53 push %rbx 0.00 : 46c7c5: 48 83 ec 48 sub $0x48,%rsp 0.00 : 46c7c9: 48 89 4d a8 mov %rcx,-0x58(%rbp) 3.85 : 46c7cd: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 46c7d1: 44 89 4d 9c mov %r9d,-0x64(%rbp) : Relation idxRel = rmAccess->idxrel; 0.00 : 46c7d5: 48 8b 07 mov (%rdi),%rax 0.00 : 46c7d8: 48 89 45 b0 mov %rax,-0x50(%rbp) : ItemId lp; : BrTuple *tup; : ItemPointerData previptr; : : /* normalize the heap block number to be the first page in the range */ : heapBlk = (heapBlk / rmAccess->pagesPerRange) * rmAccess->pagesPerRange; 0.00 : 46c7dc: 8b 4f 08 mov 0x8(%rdi),%ecx 0.00 : 46c7df: 89 f0 mov %esi,%eax 0.00 : 46c7e1: f7 f1 div %ecx : : /* Compute the revmap page number we need */ : mapBlk = HEAPBLK_TO_REVMAP_BLK(rmAccess->pagesPerRange, heapBlk); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:225 7.69 : 46c7e3: 31 d2 xor %edx,%edx : ItemId lp; : BrTuple *tup; : ItemPointerData previptr; : : /* normalize the heap block number to be the first page in the range */ : heapBlk = (heapBlk / rmAccess->pagesPerRange) * rmAccess->pagesPerRange; 0.00 : 46c7e5: 41 89 c6 mov %eax,%r14d 0.00 : 46c7e8: 44 0f af f1 imul %ecx,%r14d : : /* Compute the revmap page number we need */ : mapBlk = HEAPBLK_TO_REVMAP_BLK(rmAccess->pagesPerRange, heapBlk); 0.00 : 46c7ec: 44 89 f0 mov %r14d,%eax 0.00 : 46c7ef: f7 f1 div %ecx 11.54 : 46c7f1: b9 c1 c0 c0 c0 mov $0xc0c0c0c1,%ecx 0.00 : 46c7f6: f7 e1 mul %ecx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:225 3.85 : 46c7f8: c1 ea 0a shr $0xa,%edx : rm_get_phys_blkno(brinRmAccess *rmAccess, BlockNumber mapBlk, bool extend) : { : BlockNumber targetblk; : : /* skip the metapage to obtain physical block numbers of revmap pages */ : targetblk = mapBlk + 1; 0.00 : 46c7fb: 83 c2 01 add $0x1,%edx 0.00 : 46c7fe: 89 55 bc mov %edx,-0x44(%rbp) : : /* Normal case: the revmap page is already allocated */ : if (targetblk <= rmAccess->lastRevmapPage) 0.00 : 46c801: 3b 57 0c cmp 0xc(%rdi),%edx 0.00 : 46c804: 0f 87 56 02 00 00 ja 46ca60 : } : : ItemPointerSetInvalid(&previptr); : for (;;) : { : CHECK_FOR_INTERRUPTS(); 0.00 : 46c80a: 0f b6 05 7f d8 74 00 movzbl 0x74d87f(%rip),%eax # bba090 : { : *off = InvalidOffsetNumber; : return NULL; : } : : ItemPointerSetInvalid(&previptr); 0.00 : 46c811: 66 c7 45 c0 ff ff movw $0xffff,-0x40(%rbp) 0.00 : 46c817: 66 c7 45 c2 ff ff movw $0xffff,-0x3e(%rbp) 0.00 : 46c81d: 66 c7 45 c4 00 00 movw $0x0,-0x3c(%rbp) : for (;;) : { : CHECK_FOR_INTERRUPTS(); 0.00 : 46c823: 84 c0 test %al,%al 0.00 : 46c825: 0f 85 8d 01 00 00 jne 46c9b8 0.00 : 46c82b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : if (rmAccess->currBuf == InvalidBuffer || 0.00 : 46c830: 41 8b 7d 14 mov 0x14(%r13),%edi 0.00 : 46c834: 85 ff test %edi,%edi 0.00 : 46c836: 0f 85 8d 01 00 00 jne 46c9c9 : { : if (rmAccess->currBuf != InvalidBuffer) : ReleaseBuffer(rmAccess->currBuf); : : Assert(mapBlk != InvalidBlockNumber); : rmAccess->currBuf = ReadBuffer(rmAccess->idxrel, mapBlk); 0.00 : 46c83c: 8b 75 bc mov -0x44(%rbp),%esi 0.00 : 46c83f: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 46c843: e8 58 9e 20 00 callq 6766a0 0.00 : 46c848: 41 89 45 14 mov %eax,0x14(%r13) : } : : LockBuffer(rmAccess->currBuf, BUFFER_LOCK_SHARE); 0.00 : 46c84c: 41 8b 7d 14 mov 0x14(%r13),%edi 0.00 : 46c850: be 01 00 00 00 mov $0x1,%esi 0.00 : 46c855: e8 b6 7e 20 00 callq 674710 : : contents = (RevmapContents *) 0.00 : 46c85a: 41 8b 7d 14 mov 0x14(%r13),%edi 0.00 : 46c85e: 85 ff test %edi,%edi 0.00 : 46c860: 0f 88 8a 01 00 00 js 46c9f0 0.00 : 46c866: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 46c869: 48 98 cltq 0.00 : 46c86b: 48 c1 e0 0d shl $0xd,%rax 0.00 : 46c86f: 48 8d 58 18 lea 0x18(%rax),%rbx 0.00 : 46c873: 48 03 1d 7e 32 75 00 add 0x75327e(%rip),%rbx # bbfaf8 : PageGetContents(BufferGetPage(rmAccess->currBuf)); : iptr = contents->rm_tids; : iptr += HEAPBLK_TO_REVMAP_INDEX(rmAccess->pagesPerRange, heapBlk); 0.00 : 46c87a: 31 d2 xor %edx,%edx 0.00 : 46c87c: 44 89 f0 mov %r14d,%eax 0.00 : 46c87f: 41 f7 75 08 divl 0x8(%r13) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:253 7.69 : 46c883: 89 c6 mov %eax,%esi 0.00 : 46c885: b8 c1 c0 c0 c0 mov $0xc0c0c0c1,%eax 0.00 : 46c88a: f7 e6 mul %esi 11.54 : 46c88c: 41 89 f4 mov %esi,%r12d 0.00 : 46c88f: c1 ea 0a shr $0xa,%edx 0.00 : 46c892: 69 d2 50 05 00 00 imul $0x550,%edx,%edx 0.00 : 46c898: 41 29 d4 sub %edx,%r12d 0.00 : 46c89b: 4b 8d 04 64 lea (%r12,%r12,2),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:253 3.85 : 46c89f: 48 8d 34 43 lea (%rbx,%rax,2),%rsi : : if (!ItemPointerIsValid(iptr)) 0.00 : 46c8a3: 48 85 f6 test %rsi,%rsi 0.00 : 46c8a6: 74 07 je 46c8af 0.00 : 46c8a8: 66 83 7e 04 00 cmpw $0x0,0x4(%rsi) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:255 30.77 : 46c8ad: 75 21 jne 46c8d0 : { : LockBuffer(rmAccess->currBuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c8af: 31 f6 xor %esi,%esi 0.00 : 46c8b1: e8 5a 7e 20 00 callq 674710 0.00 : 46c8b6: 31 f6 xor %esi,%esi : */ : LockBuffer(*buf, BUFFER_LOCK_UNLOCK); : } : /* not reached, but keep compiler quiet */ : return NULL; : } 0.00 : 46c8b8: 48 83 c4 48 add $0x48,%rsp 0.00 : 46c8bc: 48 89 f0 mov %rsi,%rax 0.00 : 46c8bf: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:312 3.85 : 46c8c0: 41 5c pop %r12 0.00 : 46c8c2: 41 5d pop %r13 0.00 : 46c8c4: 41 5e pop %r14 0.00 : 46c8c6: 41 5f pop %r15 0.00 : 46c8c8: c9 leaveq 0.00 : 46c8c9: c3 retq 0.00 : 46c8ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * Save the current TID we got from the revmap; if we loop we can : * sanity-check that the new one is different. Otherwise we might be : * stuck looping forever if the revmap is somehow badly broken. : */ : if (ItemPointerIsValid(&previptr) && ItemPointerEquals(&previptr, iptr)) 0.00 : 46c8d0: 66 83 7d c4 00 cmpw $0x0,-0x3c(%rbp) 0.00 : 46c8d5: 74 11 je 46c8e8 0.00 : 46c8d7: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 46c8db: e8 80 a9 22 00 callq 697260 0.00 : 46c8e0: 84 c0 test %al,%al 0.00 : 46c8e2: 0f 85 aa 01 00 00 jne 46ca92 : ereport(ERROR, : /* FIXME improve message */ : (errmsg("revmap was updated but still contains same TID as before"))); : previptr = *iptr; 0.00 : 46c8e8: 4b 8d 14 64 lea (%r12,%r12,2),%rdx : : blk = ItemPointerGetBlockNumber(iptr); : *off = ItemPointerGetOffsetNumber(iptr); : : LockBuffer(rmAccess->currBuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c8ec: 31 f6 xor %esi,%esi : */ : if (ItemPointerIsValid(&previptr) && ItemPointerEquals(&previptr, iptr)) : ereport(ERROR, : /* FIXME improve message */ : (errmsg("revmap was updated but still contains same TID as before"))); : previptr = *iptr; 0.00 : 46c8ee: 8b 04 53 mov (%rbx,%rdx,2),%eax 0.00 : 46c8f1: 48 8d 0c 12 lea (%rdx,%rdx,1),%rcx 0.00 : 46c8f5: 89 45 c0 mov %eax,-0x40(%rbp) 0.00 : 46c8f8: 0f b7 44 19 04 movzwl 0x4(%rcx,%rbx,1),%eax : : blk = ItemPointerGetBlockNumber(iptr); 0.00 : 46c8fd: 48 8d 0c 0b lea (%rbx,%rcx,1),%rcx : */ : if (ItemPointerIsValid(&previptr) && ItemPointerEquals(&previptr, iptr)) : ereport(ERROR, : /* FIXME improve message */ : (errmsg("revmap was updated but still contains same TID as before"))); : previptr = *iptr; 0.00 : 46c901: 66 89 45 c4 mov %ax,-0x3c(%rbp) : : blk = ItemPointerGetBlockNumber(iptr); 0.00 : 46c905: 44 0f b7 24 53 movzwl (%rbx,%rdx,2),%r12d 0.00 : 46c90a: 0f b7 41 02 movzwl 0x2(%rcx),%eax : *off = ItemPointerGetOffsetNumber(iptr); 0.00 : 46c90e: 48 8b 55 a8 mov -0x58(%rbp),%rdx : ereport(ERROR, : /* FIXME improve message */ : (errmsg("revmap was updated but still contains same TID as before"))); : previptr = *iptr; : : blk = ItemPointerGetBlockNumber(iptr); 0.00 : 46c912: 41 c1 e4 10 shl $0x10,%r12d 0.00 : 46c916: 41 09 c4 or %eax,%r12d : *off = ItemPointerGetOffsetNumber(iptr); 0.00 : 46c919: 0f b7 41 04 movzwl 0x4(%rcx),%eax 0.00 : 46c91d: 66 89 02 mov %ax,(%rdx) : : LockBuffer(rmAccess->currBuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c920: 41 8b 7d 14 mov 0x14(%r13),%edi 0.00 : 46c924: e8 e7 7d 20 00 callq 674710 : : /* Ok, got a pointer to where the BrTuple should be. Fetch it. */ : if (!BufferIsValid(*buf) || BufferGetBlockNumber(*buf) != blk) 0.00 : 46c929: 41 8b 3f mov (%r15),%edi 0.00 : 46c92c: 85 ff test %edi,%edi 0.00 : 46c92e: 0f 85 dc 00 00 00 jne 46ca10 : { : if (BufferIsValid(*buf)) : ReleaseBuffer(*buf); : *buf = ReadBuffer(idxRel, blk); 0.00 : 46c934: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 46c938: 44 89 e6 mov %r12d,%esi 0.00 : 46c93b: e8 60 9d 20 00 callq 6766a0 0.00 : 46c940: 89 c7 mov %eax,%edi 0.00 : 46c942: 41 89 07 mov %eax,(%r15) : } : LockBuffer(*buf, mode); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:284 3.85 : 46c945: 8b 75 9c mov -0x64(%rbp),%esi 0.00 : 46c948: e8 c3 7d 20 00 callq 674710 : page = BufferGetPage(*buf); 0.00 : 46c94d: 41 8b 3f mov (%r15),%edi 0.00 : 46c950: 85 ff test %edi,%edi 0.00 : 46c952: 0f 88 d8 00 00 00 js 46ca30 0.00 : 46c958: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 46c95b: 48 63 d0 movslq %eax,%rdx 0.00 : 46c95e: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 46c962: 48 03 15 8f 31 75 00 add 0x75318f(%rip),%rdx # bbfaf8 : : /* If we land on a revmap page, start over */ : if (BRIN_IS_REGULAR_PAGE(page)) 0.00 : 46c969: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 46c96d: 66 81 7c 02 02 93 f0 cmpw $0xf093,0x2(%rdx,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:288 3.85 : 46c974: 75 2c jne 46c9a2 : { : lp = PageGetItemId(page, *off); 0.00 : 46c976: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 46c97a: 0f b7 01 movzwl (%rcx),%eax : if (ItemIdIsUsed(lp)) 0.00 : 46c97d: 48 8d 48 03 lea 0x3(%rax),%rcx 0.00 : 46c981: f7 44 8a 08 00 80 01 testl $0x18000,0x8(%rdx,%rcx,4) 0.00 : 46c988: 00 0.00 : 46c989: 74 17 je 46c9a2 : { : tup = (BrTuple *) PageGetItem(page, lp); 0.00 : 46c98b: 0f b7 44 8a 08 movzwl 0x8(%rdx,%rcx,4),%eax 0.00 : 46c990: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 46c995: 48 8d 34 02 lea (%rdx,%rax,1),%rsi : : if (tup->bt_blkno == heapBlk) 0.00 : 46c999: 44 39 36 cmp %r14d,(%rsi) 0.00 : 46c99c: 0f 84 ce 00 00 00 je 46ca70 : } : : /* : * No luck. Assume that the revmap was updated concurrently. : */ : LockBuffer(*buf, BUFFER_LOCK_UNLOCK); 0.00 : 46c9a2: 31 f6 xor %esi,%esi 0.00 : 46c9a4: e8 67 7d 20 00 callq 674710 : } : : ItemPointerSetInvalid(&previptr); : for (;;) : { : CHECK_FOR_INTERRUPTS(); 0.00 : 46c9a9: 0f b6 05 e0 d6 74 00 movzbl 0x74d6e0(%rip),%eax # bba090 0.00 : 46c9b0: 84 c0 test %al,%al 0.00 : 46c9b2: 0f 84 78 fe ff ff je 46c830 0.00 : 46c9b8: e8 e3 f8 22 00 callq 69c2a0 : : if (rmAccess->currBuf == InvalidBuffer || 0.00 : 46c9bd: 41 8b 7d 14 mov 0x14(%r13),%edi 0.00 : 46c9c1: 85 ff test %edi,%edi 0.00 : 46c9c3: 0f 84 73 fe ff ff je 46c83c 0.00 : 46c9c9: e8 62 76 20 00 callq 674030 0.00 : 46c9ce: 3b 45 bc cmp -0x44(%rbp),%eax 0.00 : 46c9d1: 0f 84 75 fe ff ff je 46c84c : BufferGetBlockNumber(rmAccess->currBuf) != mapBlk) : { : if (rmAccess->currBuf != InvalidBuffer) 0.00 : 46c9d7: 41 8b 7d 14 mov 0x14(%r13),%edi 0.00 : 46c9db: 85 ff test %edi,%edi 0.00 : 46c9dd: 0f 84 59 fe ff ff je 46c83c : ReleaseBuffer(rmAccess->currBuf); 0.00 : 46c9e3: e8 78 84 20 00 callq 674e60 0.00 : 46c9e8: e9 4f fe ff ff jmpq 46c83c 0.00 : 46c9ed: 0f 1f 00 nopl (%rax) : rmAccess->currBuf = ReadBuffer(rmAccess->idxrel, mapBlk); : } : : LockBuffer(rmAccess->currBuf, BUFFER_LOCK_SHARE); : : contents = (RevmapContents *) 0.00 : 46c9f0: 89 f8 mov %edi,%eax 0.00 : 46c9f2: 48 8b 15 1f 07 71 00 mov 0x71071f(%rip),%rdx # b7d118 0.00 : 46c9f9: f7 d0 not %eax 0.00 : 46c9fb: 48 98 cltq 0.00 : 46c9fd: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 46ca01: 48 8d 58 18 lea 0x18(%rax),%rbx 0.00 : 46ca05: e9 70 fe ff ff jmpq 46c87a 0.00 : 46ca0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : *off = ItemPointerGetOffsetNumber(iptr); : : LockBuffer(rmAccess->currBuf, BUFFER_LOCK_UNLOCK); : : /* Ok, got a pointer to where the BrTuple should be. Fetch it. */ : if (!BufferIsValid(*buf) || BufferGetBlockNumber(*buf) != blk) 0.00 : 46ca10: e8 1b 76 20 00 callq 674030 0.00 : 46ca15: 44 39 e0 cmp %r12d,%eax 0.00 : 46ca18: 74 36 je 46ca50 : { : if (BufferIsValid(*buf)) 0.00 : 46ca1a: 41 8b 3f mov (%r15),%edi 0.00 : 46ca1d: 85 ff test %edi,%edi 0.00 : 46ca1f: 90 nop 0.00 : 46ca20: 0f 84 0e ff ff ff je 46c934 : ReleaseBuffer(*buf); 0.00 : 46ca26: e8 35 84 20 00 callq 674e60 0.00 : 46ca2b: e9 04 ff ff ff jmpq 46c934 : *buf = ReadBuffer(idxRel, blk); : } : LockBuffer(*buf, mode); : page = BufferGetPage(*buf); 0.00 : 46ca30: 89 f8 mov %edi,%eax 0.00 : 46ca32: 48 8b 15 df 06 71 00 mov 0x7106df(%rip),%rdx # b7d118 0.00 : 46ca39: f7 d0 not %eax 0.00 : 46ca3b: 48 98 cltq 0.00 : 46ca3d: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 46ca41: e9 23 ff ff ff jmpq 46c969 0.00 : 46ca46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46ca4d: 00 00 00 : *off = ItemPointerGetOffsetNumber(iptr); : : LockBuffer(rmAccess->currBuf, BUFFER_LOCK_UNLOCK); : : /* Ok, got a pointer to where the BrTuple should be. Fetch it. */ : if (!BufferIsValid(*buf) || BufferGetBlockNumber(*buf) != blk) 0.00 : 46ca50: 41 8b 3f mov (%r15),%edi 0.00 : 46ca53: e9 ed fe ff ff jmpq 46c945 0.00 : 46ca58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46ca5f: 00 : /* Compute the revmap page number we need */ : mapBlk = HEAPBLK_TO_REVMAP_BLK(rmAccess->pagesPerRange, heapBlk); : mapBlk = rm_get_phys_blkno(rmAccess, mapBlk, false); : if (mapBlk == InvalidBlockNumber) : { : *off = InvalidOffsetNumber; 0.00 : 46ca60: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 46ca64: 31 f6 xor %esi,%esi 0.00 : 46ca66: 66 c7 01 00 00 movw $0x0,(%rcx) : */ : LockBuffer(*buf, BUFFER_LOCK_UNLOCK); : } : /* not reached, but keep compiler quiet */ : return NULL; : } 0.00 : 46ca6b: e9 48 fe ff ff jmpq 46c8b8 : { : tup = (BrTuple *) PageGetItem(page, lp); : : if (tup->bt_blkno == heapBlk) : { : if (size) 0.00 : 46ca70: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : 46ca75: 0f 84 3d fe ff ff je 46c8b8 : *size = ItemIdGetLength(lp); 0.00 : 46ca7b: 0f b7 44 8a 0a movzwl 0xa(%rdx,%rcx,4),%eax 0.00 : 46ca80: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 46ca84: 66 d1 e8 shr %ax 0.00 : 46ca87: 0f b7 c0 movzwl %ax,%eax 0.00 : 46ca8a: 48 89 02 mov %rax,(%rdx) 0.00 : 46ca8d: e9 26 fe ff ff jmpq 46c8b8 : * Save the current TID we got from the revmap; if we loop we can : * sanity-check that the new one is different. Otherwise we might be : * stuck looping forever if the revmap is somehow badly broken. : */ : if (ItemPointerIsValid(&previptr) && ItemPointerEquals(&previptr, iptr)) : ereport(ERROR, 0.00 : 46ca92: 45 31 c0 xor %r8d,%r8d 0.00 : 46ca95: b9 80 f3 7a 00 mov $0x7af380,%ecx 0.00 : 46ca9a: ba 0d 01 00 00 mov $0x10d,%edx 0.00 : 46ca9f: be b3 f2 7a 00 mov $0x7af2b3,%esi 0.00 : 46caa4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46caa9: e8 12 e0 30 00 callq 77aac0 0.00 : 46caae: 84 c0 test %al,%al 0.00 : 46cab0: 75 05 jne 46cab7 0.00 : 46cab2: e8 19 ca ff ff callq 4694d0 0.00 : 46cab7: bf c8 f2 7a 00 mov $0x7af2c8,%edi 0.00 : 46cabc: 31 c0 xor %eax,%eax 0.00 : 46cabe: e8 dd fd 30 00 callq 77c8a0 0.00 : 46cac3: 89 c7 mov %eax,%edi 0.00 : 46cac5: 31 c0 xor %eax,%eax 0.00 : 46cac7: e8 14 db 30 00 callq 77a5e0 0.00 : 46cacc: eb e4 jmp 46cab2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.54 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3649 7.69 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3623 7.69 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3745 7.69 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 7.69 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3649 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3577 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3614 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3623 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3750 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3761 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3772 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3774 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2816 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2816 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 3.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005558f0 : : * : * NOTE: force_not_null option are not applied to the returned fields. : */ : bool : NextCopyFromRawFields(CopyState cstate, char ***fields, int *nfields) : { 0.00 : 5558f0: 55 push %rbp 0.00 : 5558f1: 48 89 e5 mov %rsp,%rbp 0.00 : 5558f4: 41 57 push %r15 0.00 : 5558f6: 49 89 ff mov %rdi,%r15 0.00 : 5558f9: 41 56 push %r14 0.00 : 5558fb: 41 55 push %r13 0.00 : 5558fd: 41 54 push %r12 0.00 : 5558ff: 53 push %rbx 0.00 : 555900: 48 83 ec 58 sub $0x58,%rsp 0.00 : 555904: 48 89 75 b8 mov %rsi,-0x48(%rbp) 0.00 : 555908: 48 89 55 b0 mov %rdx,-0x50(%rbp) : : /* only available for text or csv input */ : Assert(!cstate->binary); : : /* on input just throw the header line away */ : if (cstate->cur_lineno == 0 && cstate->header_line) 0.00 : 55590c: 8b 87 d8 00 00 00 mov 0xd8(%rdi),%eax 0.00 : 555912: 85 c0 test %eax,%eax 0.00 : 555914: 75 0a jne 555920 0.00 : 555916: 80 7f 4d 00 cmpb $0x0,0x4d(%rdi) 0.00 : 55591a: 0f 85 c0 02 00 00 jne 555be0 : cstate->cur_lineno++; : if (CopyReadLine(cstate)) : return false; /* done */ : } : : cstate->cur_lineno++; 0.00 : 555920: 83 c0 01 add $0x1,%eax : : /* Actually read the line into memory here */ : done = CopyReadLine(cstate); 0.00 : 555923: 4c 89 ff mov %r15,%rdi : cstate->cur_lineno++; : if (CopyReadLine(cstate)) : return false; /* done */ : } : : cstate->cur_lineno++; 0.00 : 555926: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : : /* Actually read the line into memory here */ : done = CopyReadLine(cstate); 0.00 : 55592d: e8 3e f7 ff ff callq 555070 : /* : * EOF at start of line means we're done. If we see EOF after some : * characters, we act as though it was newline followed by EOF, ie, : * process the line and then exit loop on next iteration. : */ : if (done && cstate->line_buf.len == 0) 0.00 : 555932: 84 c0 test %al,%al 0.00 : 555934: 74 0f je 555945 0.00 : 555936: 41 8b bf a0 01 00 00 mov 0x1a0(%r15),%edi 0.00 : 55593d: 85 ff test %edi,%edi 0.00 : 55593f: 0f 84 bb 02 00 00 je 555c00 : return false; : : /* Parse the line into de-escaped field values */ : if (cstate->csv_mode) 0.00 : 555945: 41 80 7f 4c 00 cmpb $0x0,0x4c(%r15) 0.00 : 55594a: 0f 84 80 01 00 00 je 555ad0 : * "standard" (i.e. common) CSV usage. : */ : static int : CopyReadAttributesCSV(CopyState cstate) : { : char delimc = cstate->delim[0]; 0.00 : 555950: 49 8b 47 68 mov 0x68(%r15),%rax 0.00 : 555954: 0f b6 00 movzbl (%rax),%eax 0.00 : 555957: 88 45 c7 mov %al,-0x39(%rbp) : char quotec = cstate->quote[0]; 0.00 : 55595a: 49 8b 47 70 mov 0x70(%r15),%rax : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 55595e: 41 8b b7 88 01 00 00 mov 0x188(%r15),%esi : */ : static int : CopyReadAttributesCSV(CopyState cstate) : { : char delimc = cstate->delim[0]; : char quotec = cstate->quote[0]; 0.00 : 555965: 44 0f b6 30 movzbl (%rax),%r14d : char escapec = cstate->escape[0]; 0.00 : 555969: 49 8b 47 78 mov 0x78(%r15),%rax : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 55596d: 85 f6 test %esi,%esi : static int : CopyReadAttributesCSV(CopyState cstate) : { : char delimc = cstate->delim[0]; : char quotec = cstate->quote[0]; : char escapec = cstate->escape[0]; 0.00 : 55596f: 44 0f b6 00 movzbl (%rax),%r8d : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 555973: 0f 8e 6c 04 00 00 jle 555de5 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("extra data after last expected column"))); : return 0; : } : : resetStringInfo(&cstate->attribute_buf); 0.00 : 555979: 49 8d 9f 70 01 00 00 lea 0x170(%r15),%rbx 0.00 : 555980: 44 88 45 98 mov %r8b,-0x68(%rbp) 0.00 : 555984: 48 89 df mov %rbx,%rdi 0.00 : 555987: e8 94 c1 07 00 callq 5d1b20 : * data line, so we can just force attribute_buf to be large enough and : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) 0.00 : 55598c: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 555993: 41 39 b7 7c 01 00 00 cmp %esi,0x17c(%r15) 0.00 : 55599a: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 55599f: 0f 8e a1 06 00 00 jle 556046 : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; 0.00 : 5559a5: 4d 8b 8f 98 01 00 00 mov 0x198(%r15),%r9 : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.00 : 5559ac: 48 63 c6 movslq %esi,%rax : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; 0.00 : 5559af: 4d 8b a7 70 01 00 00 mov 0x170(%r15),%r12 : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.00 : 5559b6: 45 31 d2 xor %r10d,%r10d 0.00 : 5559b9: 4d 8d 2c 01 lea (%r9,%rax,1),%r13 : char *start_ptr; : char *end_ptr; : int input_len; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) 0.00 : 5559bd: 41 8b 87 88 01 00 00 mov 0x188(%r15),%eax 0.00 : 5559c4: 44 39 d0 cmp %r10d,%eax 0.00 : 5559c7: 0f 8e 61 05 00 00 jle 555f2e : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 5559cd: 49 63 c2 movslq %r10d,%rax : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5559d0: 45 31 db xor %r11d,%r11d 0.00 : 5559d3: 4d 39 cd cmp %r9,%r13 : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 5559d6: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 5559da: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5559e1: 4c 89 cb mov %r9,%rbx : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 5559e4: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5559e8: 4c 89 24 d0 mov %r12,(%rax,%rdx,8) : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5559ec: 0f 86 fc 06 00 00 jbe 5560ee : goto endfield; : c = *cur_ptr++; 0.00 : 5559f2: 41 0f b6 01 movzbl (%r9),%eax : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 5559f6: 31 c9 xor %ecx,%ecx : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : goto endfield; : c = *cur_ptr++; 0.00 : 5559f8: 49 8d 59 01 lea 0x1(%r9),%rbx : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 5559fc: 38 45 c7 cmp %al,-0x39(%rbp) 0.00 : 5559ff: 75 33 jne 555a34 0.00 : 555a01: e9 e2 06 00 00 jmpq 5560e8 0.00 : 555a06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 555a0d: 00 00 00 : { : saw_quote = true; : break; : } : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a10: 41 88 04 24 mov %al,(%r12) 0.00 : 555a14: 48 89 da mov %rbx,%rdx 0.00 : 555a17: 49 83 c4 01 add $0x1,%r12 : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a1b: 49 39 d5 cmp %rdx,%r13 0.00 : 555a1e: 0f 86 4c 05 00 00 jbe 555f70 : goto endfield; : c = *cur_ptr++; 0.00 : 555a24: 0f b6 02 movzbl (%rdx),%eax 0.00 : 555a27: 48 8d 5a 01 lea 0x1(%rdx),%rbx : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 555a2b: 38 45 c7 cmp %al,-0x39(%rbp) 0.00 : 555a2e: 0f 84 6d 05 00 00 je 555fa1 : { : found_delim = true; : goto endfield; : } : /* start of quoted field (or part of field) */ : if (c == quotec) 0.00 : 555a34: 41 38 c6 cmp %al,%r14b 0.00 : 555a37: 75 d7 jne 555a10 : : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a39: 49 39 dd cmp %rbx,%r13 0.00 : 555a3c: 76 5a jbe 555a98 : ereport(ERROR, 0.00 : 555a3e: 49 8d 4c 24 01 lea 0x1(%r12),%rcx 0.00 : 555a43: eb 20 jmp 555a65 0.00 : 555a45: 0f 1f 00 nopl (%rax) : /* : * end of quoted field. Must do this test after testing for : * escape in case quote char and escape char are the same : * (which is the common case). : */ : if (c == quotec) 0.00 : 555a48: 41 38 c6 cmp %al,%r14b 0.00 : 555a4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 555a50: 0f 84 2a 04 00 00 je 555e80 : break; : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a56: 88 41 ff mov %al,-0x1(%rcx) : { : saw_quote = true; : break; : } : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a59: 48 83 c1 01 add $0x1,%rcx : : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a5d: 49 39 d5 cmp %rdx,%r13 0.00 : 555a60: 76 36 jbe 555a98 0.00 : 555a62: 48 89 d3 mov %rdx,%rbx : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("unterminated CSV quoted field"))); : : c = *cur_ptr++; 0.00 : 555a65: 0f b6 03 movzbl (%rbx),%eax : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : ereport(ERROR, 0.00 : 555a68: 4c 8d 61 ff lea -0x1(%rcx),%r12 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("unterminated CSV quoted field"))); : : c = *cur_ptr++; 0.00 : 555a6c: 48 8d 53 01 lea 0x1(%rbx),%rdx : : /* escape within a quoted field */ : if (c == escapec) 0.00 : 555a70: 41 38 c0 cmp %al,%r8b 0.00 : 555a73: 75 d3 jne 555a48 : { : /* : * peek at the next char if available, and escape it if it : * is an escape char or a quote char : */ : if (cur_ptr < line_end_ptr) 0.00 : 555a75: 49 39 d5 cmp %rdx,%r13 0.00 : 555a78: 76 ce jbe 555a48 : { : char nextc = *cur_ptr; 0.00 : 555a7a: 0f b6 32 movzbl (%rdx),%esi : : if (nextc == escapec || nextc == quotec) 0.00 : 555a7d: 41 38 f0 cmp %sil,%r8b 0.00 : 555a80: 74 05 je 555a87 0.00 : 555a82: 41 38 f6 cmp %sil,%r14b 0.00 : 555a85: 75 c1 jne 555a48 : { : *output_ptr++ = nextc; : cur_ptr++; 0.00 : 555a87: 48 83 c2 01 add $0x1,%rdx : { : char nextc = *cur_ptr; : : if (nextc == escapec || nextc == quotec) : { : *output_ptr++ = nextc; 0.00 : 555a8b: 40 88 71 ff mov %sil,-0x1(%rcx) : { : saw_quote = true; : break; : } : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a8f: 48 83 c1 01 add $0x1,%rcx : : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a93: 49 39 d5 cmp %rdx,%r13 0.00 : 555a96: 77 ca ja 555a62 : ereport(ERROR, 0.00 : 555a98: 45 31 c0 xor %r8d,%r8d 0.00 : 555a9b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 555aa0: b9 40 9d 87 00 mov $0x879d40,%ecx 0.00 : 555aa5: ba 38 0f 00 00 mov $0xf38,%edx 0.00 : 555aaa: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555aaf: e8 0c 50 22 00 callq 77aac0 0.00 : 555ab4: 84 c0 test %al,%al 0.00 : 555ab6: bf 7f 89 87 00 mov $0x87897f,%edi 0.00 : 555abb: 0f 85 96 03 00 00 jne 555e57 : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) : ereport(ERROR, 0.00 : 555ac1: e8 0a 3a f1 ff callq 4694d0 0.00 : 555ac6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 555acd: 00 00 00 : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 555ad0: 41 8b 97 88 01 00 00 mov 0x188(%r15),%edx : * The return value is the number of fields actually read. : */ : static int : CopyReadAttributesText(CopyState cstate) : { : char delimc = cstate->delim[0]; 0.00 : 555ad7: 49 8b 47 68 mov 0x68(%r15),%rax : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 555adb: 85 d2 test %edx,%edx : * The return value is the number of fields actually read. : */ : static int : CopyReadAttributesText(CopyState cstate) : { : char delimc = cstate->delim[0]; 0.00 : 555add: 44 0f b6 08 movzbl (%rax),%r9d : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3577 3.85 : 555ae1: 0f 8e 39 03 00 00 jle 555e20 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("extra data after last expected column"))); : return 0; : } : : resetStringInfo(&cstate->attribute_buf); 0.00 : 555ae7: 49 8d 9f 70 01 00 00 lea 0x170(%r15),%rbx 0.00 : 555aee: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555af2: 48 89 df mov %rbx,%rdi 0.00 : 555af5: e8 26 c0 07 00 callq 5d1b20 : * data line, so we can just force attribute_buf to be large enough and : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) 0.00 : 555afa: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 555b01: 41 39 b7 7c 01 00 00 cmp %esi,0x17c(%r15) 0.00 : 555b08: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555b0d: 0f 8e 15 05 00 00 jle 556028 : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; 0.00 : 555b13: 4d 8b 87 98 01 00 00 mov 0x198(%r15),%r8 : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.00 : 555b1a: 48 63 c6 movslq %esi,%rax 0.00 : 555b1d: 45 31 d2 xor %r10d,%r10d : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; 0.00 : 555b20: 49 8b 9f 70 01 00 00 mov 0x170(%r15),%rbx : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.00 : 555b27: 4d 8d 34 00 lea (%r8,%rax,1),%r14 : char *end_ptr; : int input_len; : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) 0.00 : 555b2b: 41 8b 87 88 01 00 00 mov 0x188(%r15),%eax 0.00 : 555b32: 44 39 d0 cmp %r10d,%eax 0.00 : 555b35: 0f 8e 30 01 00 00 jle 555c6b /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3614 3.85 : 555b3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 555b40: 49 63 ca movslq %r10d,%rcx : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555b43: 4d 39 c6 cmp %r8,%r14 : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 555b46: 48 89 4d a0 mov %rcx,-0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3623 3.85 : 555b4a: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3623 7.69 : 555b51: 48 89 1c c8 mov %rbx,(%rax,%rcx,8) : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 3.85 : 555b55: 0f 86 67 05 00 00 jbe 5560c2 : break; : c = *cur_ptr++; 0.00 : 555b5b: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 555b5f: 4d 8d 60 01 lea 0x1(%r8),%r12 : if (c == delimc) 0.00 : 555b63: 41 38 c9 cmp %cl,%r9b 0.00 : 555b66: 0f 84 46 05 00 00 je 5560b2 0.00 : 555b6c: 4c 8d 6b 01 lea 0x1(%rbx),%r13 0.00 : 555b70: 4c 89 c2 mov %r8,%rdx 0.00 : 555b73: 45 31 db xor %r11d,%r11d 0.00 : 555b76: eb 35 jmp 555bad 0.00 : 555b78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 555b7f: 00 : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555b80: 4d 39 e6 cmp %r12,%r14 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555b83: 41 88 4d ff mov %cl,-0x1(%r13) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3745 7.69 : 555b87: 4c 89 eb mov %r13,%rbx : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555b8a: 0f 86 35 01 00 00 jbe 555cc5 : break; : c = *cur_ptr++; 0.00 : 555b90: 41 0f b6 0c 24 movzbl (%r12),%ecx /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 3.85 : 555b95: 49 83 c5 01 add $0x1,%r13 3.85 : 555b99: 49 8d 44 24 01 lea 0x1(%r12),%rax : if (c == delimc) 0.00 : 555b9e: 41 38 c9 cmp %cl,%r9b 0.00 : 555ba1: 0f 84 e9 02 00 00 je 555e90 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 7.69 : 555ba7: 4c 89 e2 mov %r12,%rdx 0.00 : 555baa: 49 89 c4 mov %rax,%r12 : { : found_delim = true; : break; : } : if (c == '\\') /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3649 11.54 : 555bad: 80 f9 5c cmp $0x5c,%cl : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : if (c == delimc) 0.00 : 555bb0: 49 8d 5d ff lea -0x1(%r13),%rbx : { : found_delim = true; : break; : } : if (c == '\\') 7.69 : 555bb4: 75 ca jne 555b80 : { : if (cur_ptr >= line_end_ptr) 0.00 : 555bb6: 4d 39 e6 cmp %r12,%r14 0.00 : 555bb9: 0f 86 09 01 00 00 jbe 555cc8 : break; : c = *cur_ptr++; 0.00 : 555bbf: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 555bc4: 49 83 c4 01 add $0x1,%r12 : switch (c) 0.00 : 555bc8: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 555bcb: 3c 48 cmp $0x48,%al 0.00 : 555bcd: 77 b1 ja 555b80 0.00 : 555bcf: 0f b6 c0 movzbl %al,%eax 0.00 : 555bd2: ff 24 c5 58 9a 87 00 jmpq *0x879a58(,%rax,8) 0.00 : 555bd9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : Assert(!cstate->binary); : : /* on input just throw the header line away */ : if (cstate->cur_lineno == 0 && cstate->header_line) : { : cstate->cur_lineno++; 0.00 : 555be0: c7 87 d8 00 00 00 01 movl $0x1,0xd8(%rdi) 0.00 : 555be7: 00 00 00 : if (CopyReadLine(cstate)) 0.00 : 555bea: e8 81 f4 ff ff callq 555070 0.00 : 555bef: 84 c0 test %al,%al 0.00 : 555bf1: 75 0d jne 555c00 0.00 : 555bf3: 41 8b 87 d8 00 00 00 mov 0xd8(%r15),%eax 0.00 : 555bfa: e9 21 fd ff ff jmpq 555920 0.00 : 555bff: 90 nop : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; : return true; : } 0.00 : 555c00: 48 83 c4 58 add $0x58,%rsp : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; 0.00 : 555c04: 31 c0 xor %eax,%eax : return true; : } 0.00 : 555c06: 5b pop %rbx 0.00 : 555c07: 41 5c pop %r12 0.00 : 555c09: 41 5d pop %r13 0.00 : 555c0b: 41 5e pop %r14 0.00 : 555c0d: 41 5f pop %r15 0.00 : 555c0f: c9 leaveq 0.00 : 555c10: c3 retq 0.00 : 555c11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : saw_non_ascii = true; : } : break; : case 'x': : /* Handle \x3F */ : if (cur_ptr < line_end_ptr) 0.00 : 555c18: 4d 39 e6 cmp %r12,%r14 0.00 : 555c1b: 0f 87 bf 02 00 00 ja 555ee0 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555c21: 44 89 e2 mov %r12d,%edx 0.00 : 555c24: c6 03 78 movb $0x78,(%rbx) 0.00 : 555c27: 45 31 ed xor %r13d,%r13d 0.00 : 555c2a: 48 83 c3 01 add $0x1,%rbx 0.00 : 555c2e: 44 29 c2 sub %r8d,%edx : } : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (input_len == cstate->null_print_len && /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3750 3.85 : 555c31: 41 39 57 58 cmp %edx,0x58(%r15) 0.00 : 555c35: 0f 84 9d 00 00 00 je 555cd8 : * At this point we know the field is supposed to contain data. : * : * If we de-escaped any non-7-bit-ASCII chars, make sure the : * resulting string is valid data for the db encoding. : */ : if (saw_non_ascii) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3761 3.85 : 555c3b: 45 84 db test %r11b,%r11b 0.00 : 555c3e: 0f 85 64 02 00 00 jne 555ea8 : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; : : fieldno++; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3772 3.85 : 555c44: 41 83 c2 01 add $0x1,%r10d : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.00 : 555c48: 45 84 ed test %r13b,%r13b : pg_verifymbstr(fld, output_ptr - fld, false); : } : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555c4b: c6 03 00 movb $0x0,(%rbx) : : fieldno++; : /* Done if we hit EOL instead of a delim */ : if (!found_delim) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3774 3.85 : 555c4e: 0f 84 dc 00 00 00 je 555d30 : char *end_ptr; : int input_len; : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) 0.00 : 555c54: 41 8b 87 88 01 00 00 mov 0x188(%r15),%eax : pg_verifymbstr(fld, output_ptr - fld, false); : } : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555c5b: 48 83 c3 01 add $0x1,%rbx 0.00 : 555c5f: 4d 89 e0 mov %r12,%r8 : char *end_ptr; : int input_len; : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) 0.00 : 555c62: 44 39 d0 cmp %r10d,%eax 0.00 : 555c65: 0f 8f d5 fe ff ff jg 555b40 : { : cstate->max_fields *= 2; 0.00 : 555c6b: 8d 34 00 lea (%rax,%rax,1),%esi : cstate->raw_fields = 0.00 : 555c6e: 49 8b bf 90 01 00 00 mov 0x190(%r15),%rdi : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) : { : cstate->max_fields *= 2; 0.00 : 555c75: 41 89 b7 88 01 00 00 mov %esi,0x188(%r15) : cstate->raw_fields = 0.00 : 555c7c: 48 63 f6 movslq %esi,%rsi 0.00 : 555c7f: 4c 89 45 98 mov %r8,-0x68(%rbp) 0.00 : 555c83: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555c87: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555c8b: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 555c8f: e8 5c 30 24 00 callq 798cf0 0.00 : 555c94: 49 89 87 90 01 00 00 mov %rax,0x190(%r15) 0.00 : 555c9b: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555c9f: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555ca4: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 555ca8: e9 93 fe ff ff jmpq 555b40 0.00 : 555cad: 0f 1f 00 nopl (%rax) : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555cb0: b9 0b 00 00 00 mov $0xb,%ecx : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555cb5: 4d 39 e6 cmp %r12,%r14 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555cb8: 4c 89 eb mov %r13,%rbx 0.00 : 555cbb: 41 88 4d ff mov %cl,-0x1(%r13) : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555cbf: 0f 87 cb fe ff ff ja 555b90 0.00 : 555cc5: 44 89 e2 mov %r12d,%edx 0.00 : 555cc8: 44 29 c2 sub %r8d,%edx 0.00 : 555ccb: 45 31 ed xor %r13d,%r13d : *output_ptr++ = c; : } : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (input_len == cstate->null_print_len && 0.00 : 555cce: 41 39 57 58 cmp %edx,0x58(%r15) 0.00 : 555cd2: 0f 85 63 ff ff ff jne 555c3b 0.00 : 555cd8: 49 8b 77 50 mov 0x50(%r15),%rsi 0.00 : 555cdc: 48 63 d2 movslq %edx,%rdx 0.00 : 555cdf: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555ce3: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555ce7: 44 88 5d 80 mov %r11b,-0x80(%rbp) 0.00 : 555ceb: 4c 89 c7 mov %r8,%rdi 0.00 : 555cee: e8 2d 39 f1 ff callq 469620 0.00 : 555cf3: 85 c0 test %eax,%eax 0.00 : 555cf5: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555cfa: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555cfe: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 555d03: 0f 85 32 ff ff ff jne 555c3b : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; 0.00 : 555d09: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.00 : 555d10: 48 8b 55 a0 mov -0x60(%rbp),%rdx : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; : : fieldno++; 0.00 : 555d14: 41 83 c2 01 add $0x1,%r10d : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.00 : 555d18: 45 84 ed test %r13b,%r13b : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (input_len == cstate->null_print_len && : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; 0.00 : 555d1b: 48 c7 04 d0 00 00 00 movq $0x0,(%rax,%rdx,8) 0.00 : 555d22: 00 : pg_verifymbstr(fld, output_ptr - fld, false); : } : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555d23: c6 03 00 movb $0x0,(%rbx) : : fieldno++; : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.00 : 555d26: 0f 85 28 ff ff ff jne 555c54 0.00 : 555d2c: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* Clean up state of attribute_buf */ : output_ptr--; : Assert(*output_ptr == '\0'); : cstate->attribute_buf.len = (output_ptr - cstate->attribute_buf.data); 0.00 : 555d30: 89 d8 mov %ebx,%eax 0.00 : 555d32: 41 2b 87 70 01 00 00 sub 0x170(%r15),%eax 0.00 : 555d39: 41 89 87 78 01 00 00 mov %eax,0x178(%r15) 0.00 : 555d40: e9 b2 00 00 00 jmpq 555df7 0.00 : 555d45: 0f 1f 00 nopl (%rax) : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555d48: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 555d4d: e9 2e fe ff ff jmpq 555b80 0.00 : 555d52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 555d58: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 555d5d: e9 1e fe ff ff jmpq 555b80 0.00 : 555d62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 555d68: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 555d6d: 0f 1f 00 nopl (%rax) 0.00 : 555d70: e9 0b fe ff ff jmpq 555b80 0.00 : 555d75: 0f 1f 00 nopl (%rax) 0.00 : 555d78: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 555d7d: 0f 1f 00 nopl (%rax) 0.00 : 555d80: e9 fb fd ff ff jmpq 555b80 0.00 : 555d85: 0f 1f 00 nopl (%rax) : if (c == '\\') : { : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : switch (c) 0.00 : 555d88: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 555d8d: 0f 1f 00 nopl (%rax) 0.00 : 555d90: e9 eb fd ff ff jmpq 555b80 0.00 : 555d95: 0f 1f 00 nopl (%rax) : case '7': : { : /* handle \013 */ : int val; : : val = OCTVALUE(c); 0.00 : 555d98: 0f be c1 movsbl %cl,%eax : if (cur_ptr < line_end_ptr) 0.00 : 555d9b: 4d 39 e6 cmp %r12,%r14 : case '7': : { : /* handle \013 */ : int val; : : val = OCTVALUE(c); 0.00 : 555d9e: 8d 50 d0 lea -0x30(%rax),%edx : if (cur_ptr < line_end_ptr) 0.00 : 555da1: 76 2d jbe 555dd0 : { : c = *cur_ptr; 0.00 : 555da3: 41 0f b6 0c 24 movzbl (%r12),%ecx : if (ISOCTAL(c)) 0.00 : 555da8: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 555dab: 3c 07 cmp $0x7,%al 0.00 : 555dad: 77 21 ja 555dd0 : { : cur_ptr++; 0.00 : 555daf: 49 83 c4 01 add $0x1,%r12 : val = (val << 3) + OCTVALUE(c); 0.00 : 555db3: 0f be c1 movsbl %cl,%eax : if (cur_ptr < line_end_ptr) 0.00 : 555db6: 4d 39 e6 cmp %r12,%r14 : { : c = *cur_ptr; : if (ISOCTAL(c)) : { : cur_ptr++; : val = (val << 3) + OCTVALUE(c); 0.00 : 555db9: 8d 54 d0 d0 lea -0x30(%rax,%rdx,8),%edx : if (cur_ptr < line_end_ptr) 0.00 : 555dbd: 76 11 jbe 555dd0 : { : c = *cur_ptr; 0.00 : 555dbf: 41 0f b6 0c 24 movzbl (%r12),%ecx : if (ISOCTAL(c)) 0.00 : 555dc4: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 555dc7: 3c 07 cmp $0x7,%al 0.00 : 555dc9: 0f 86 90 02 00 00 jbe 55605f 0.00 : 555dcf: 90 nop : } : } : } : } : c = val & 0377; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555dd0: 84 d2 test %dl,%dl : val = (val << 3) + OCTVALUE(c); : } : } : } : } : c = val & 0377; 0.00 : 555dd2: 89 d1 mov %edx,%ecx : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555dd4: 0f 8f a6 fd ff ff jg 555b80 : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555dda: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 555de0: e9 9b fd ff ff jmpq 555b80 : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) 0.00 : 555de5: 41 8b 8f a0 01 00 00 mov 0x1a0(%r15),%ecx 0.00 : 555dec: 45 31 d2 xor %r10d,%r10d 0.00 : 555def: 85 c9 test %ecx,%ecx 0.00 : 555df1: 0f 85 0c 03 00 00 jne 556103 : if (cstate->csv_mode) : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; 0.00 : 555df7: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.00 : 555dfe: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 555e02: 48 89 03 mov %rax,(%rbx) : *nfields = fldct; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2816 3.85 : 555e05: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 555e09: 44 89 10 mov %r10d,(%rax) : return true; : } 0.00 : 555e0c: 48 83 c4 58 add $0x58,%rsp : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; 3.85 : 555e10: b8 01 00 00 00 mov $0x1,%eax : return true; : } 0.00 : 555e15: 5b pop %rbx 0.00 : 555e16: 41 5c pop %r12 0.00 : 555e18: 41 5d pop %r13 0.00 : 555e1a: 41 5e pop %r14 0.00 : 555e1c: 41 5f pop %r15 0.00 : 555e1e: c9 leaveq 0.00 : 555e1f: c3 retq : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) 0.00 : 555e20: 41 8b 87 a0 01 00 00 mov 0x1a0(%r15),%eax 0.00 : 555e27: 45 31 d2 xor %r10d,%r10d 0.00 : 555e2a: 85 c0 test %eax,%eax 0.00 : 555e2c: 74 c9 je 555df7 : ereport(ERROR, 0.00 : 555e2e: 45 31 c0 xor %r8d,%r8d 0.00 : 555e31: b9 60 9d 87 00 mov $0x879d60,%ecx 0.00 : 555e36: ba fe 0d 00 00 mov $0xdfe,%edx 0.00 : 555e3b: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555e40: bf 14 00 00 00 mov $0x14,%edi 0.00 : 555e45: e8 76 4c 22 00 callq 77aac0 0.00 : 555e4a: 84 c0 test %al,%al 0.00 : 555e4c: 0f 84 6f fc ff ff je 555ac1 0.00 : 555e52: bf d8 8d 87 00 mov $0x878dd8,%edi 0.00 : 555e57: 31 c0 xor %eax,%eax 0.00 : 555e59: e8 42 6a 22 00 callq 77c8a0 0.00 : 555e5e: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 555e63: 89 c3 mov %eax,%ebx 0.00 : 555e65: e8 e6 6e 22 00 callq 77cd50 0.00 : 555e6a: 89 de mov %ebx,%esi 0.00 : 555e6c: 89 c7 mov %eax,%edi 0.00 : 555e6e: 31 c0 xor %eax,%eax 0.00 : 555e70: e8 6b 47 22 00 callq 77a5e0 0.00 : 555e75: e9 47 fc ff ff jmpq 555ac1 0.00 : 555e7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : goto endfield; : c = *cur_ptr++; : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 555e80: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 555e85: e9 91 fb ff ff jmpq 555a1b 0.00 : 555e8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : if (c == delimc) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 3.85 : 555e90: 44 89 e2 mov %r12d,%edx 3.85 : 555e93: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 555e99: 49 89 c4 mov %rax,%r12 3.85 : 555e9c: 44 29 c2 sub %r8d,%edx 0.00 : 555e9f: e9 8d fd ff ff jmpq 555c31 0.00 : 555ea4: 0f 1f 40 00 nopl 0x0(%rax) : * If we de-escaped any non-7-bit-ASCII chars, make sure the : * resulting string is valid data for the db encoding. : */ : if (saw_non_ascii) : { : char *fld = cstate->raw_fields[fieldno]; 0.00 : 555ea8: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.00 : 555eaf: 48 8b 4d a0 mov -0x60(%rbp),%rcx : : pg_verifymbstr(fld, output_ptr - fld, false); 0.00 : 555eb3: 89 de mov %ebx,%esi 0.00 : 555eb5: 31 d2 xor %edx,%edx : * If we de-escaped any non-7-bit-ASCII chars, make sure the : * resulting string is valid data for the db encoding. : */ : if (saw_non_ascii) : { : char *fld = cstate->raw_fields[fieldno]; 0.00 : 555eb7: 48 8b 3c c8 mov (%rax,%rcx,8),%rdi : : pg_verifymbstr(fld, output_ptr - fld, false); 0.00 : 555ebb: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555ebf: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555ec3: 29 fe sub %edi,%esi 0.00 : 555ec5: e8 d6 58 23 00 callq 78b7a0 0.00 : 555eca: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555ece: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555ed3: e9 6c fd ff ff jmpq 555c44 0.00 : 555ed8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 555edf: 00 : break; : case 'x': : /* Handle \x3F */ : if (cur_ptr < line_end_ptr) : { : char hexchar = *cur_ptr; 0.00 : 555ee0: 41 0f b6 1c 24 movzbl (%r12),%ebx : : if (isxdigit((unsigned char) hexchar)) 0.00 : 555ee5: 4c 89 45 98 mov %r8,-0x68(%rbp) 0.00 : 555ee9: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555eed: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555ef1: 44 88 5d 80 mov %r11b,-0x80(%rbp) 0.00 : 555ef5: e8 c6 39 f1 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 555efa: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 555efe: 48 8b 00 mov (%rax),%rax 0.00 : 555f01: 0f b6 d3 movzbl %bl,%edx 0.00 : 555f04: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 555f08: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555f0d: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555f11: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 555f16: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 555f1b: 0f 85 d5 00 00 00 jne 555ff6 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555f21: 41 c6 45 ff 78 movb $0x78,-0x1(%r13) 0.00 : 555f26: 4c 89 eb mov %r13,%rbx 0.00 : 555f29: e9 62 fc ff ff jmpq 555b90 : int input_len; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) : { : cstate->max_fields *= 2; 0.00 : 555f2e: 8d 34 00 lea (%rax,%rax,1),%esi : cstate->raw_fields = 0.00 : 555f31: 49 8b bf 90 01 00 00 mov 0x190(%r15),%rdi : int input_len; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) : { : cstate->max_fields *= 2; 0.00 : 555f38: 41 89 b7 88 01 00 00 mov %esi,0x188(%r15) : cstate->raw_fields = 0.00 : 555f3f: 48 63 f6 movslq %esi,%rsi 0.00 : 555f42: 44 88 45 98 mov %r8b,-0x68(%rbp) 0.00 : 555f46: 4c 89 4d 90 mov %r9,-0x70(%rbp) 0.00 : 555f4a: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555f4e: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 555f52: e8 99 2d 24 00 callq 798cf0 0.00 : 555f57: 49 89 87 90 01 00 00 mov %rax,0x190(%r15) 0.00 : 555f5e: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555f62: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 555f66: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 555f6b: e9 5d fa ff ff jmpq 5559cd : */ : if (c == quotec) : break; : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555f70: 48 89 d3 mov %rdx,%rbx 0.00 : 555f73: 45 31 db xor %r11d,%r11d : } : } : endfield: : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555f76: 49 8d 44 24 01 lea 0x1(%r12),%rax : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (!saw_quote && input_len == cstate->null_print_len && 0.00 : 555f7b: 84 c9 test %cl,%cl : } : } : endfield: : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555f7d: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 555f82: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (!saw_quote && input_len == cstate->null_print_len && 0.00 : 555f86: 74 21 je 555fa9 : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; : : fieldno++; 0.00 : 555f88: 41 83 c2 01 add $0x1,%r10d : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.00 : 555f8c: 45 84 db test %r11b,%r11b 0.00 : 555f8f: 0f 84 3d 01 00 00 je 5560d2 0.00 : 555f95: 49 89 d9 mov %rbx,%r9 0.00 : 555f98: 4c 8b 65 d0 mov -0x30(%rbp),%r12 0.00 : 555f9c: e9 1c fa ff ff jmpq 5559bd : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : goto endfield; : c = *cur_ptr++; : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 555fa1: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 555fa7: eb cd jmp 555f76 : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; 0.00 : 555fa9: 89 d0 mov %edx,%eax 0.00 : 555fab: 44 29 c8 sub %r9d,%eax : if (!saw_quote && input_len == cstate->null_print_len && 0.00 : 555fae: 41 3b 47 58 cmp 0x58(%r15),%eax 0.00 : 555fb2: 75 d4 jne 555f88 0.00 : 555fb4: 49 8b 77 50 mov 0x50(%r15),%rsi 0.00 : 555fb8: 48 63 d0 movslq %eax,%rdx 0.00 : 555fbb: 44 88 45 98 mov %r8b,-0x68(%rbp) 0.00 : 555fbf: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555fc3: 44 88 5d 80 mov %r11b,-0x80(%rbp) 0.00 : 555fc7: 4c 89 cf mov %r9,%rdi 0.00 : 555fca: e8 51 36 f1 ff callq 469620 0.00 : 555fcf: 85 c0 test %eax,%eax 0.00 : 555fd1: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 555fd6: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555fda: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 555fdf: 75 a7 jne 555f88 : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; 0.00 : 555fe1: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.00 : 555fe8: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 555fec: 48 c7 04 d0 00 00 00 movq $0x0,(%rax,%rdx,8) 0.00 : 555ff3: 00 0.00 : 555ff4: eb 92 jmp 555f88 : { : char hexchar = *cur_ptr; : : if (isxdigit((unsigned char) hexchar)) : { : int val = GetDecimalFromHex(hexchar); 0.00 : 555ff6: 0f be fb movsbl %bl,%edi : : cur_ptr++; 0.00 : 555ff9: 49 83 c4 01 add $0x1,%r12 : { : char hexchar = *cur_ptr; : : if (isxdigit((unsigned char) hexchar)) : { : int val = GetDecimalFromHex(hexchar); 0.00 : 555ffd: e8 8e f8 ff ff callq 555890 : : cur_ptr++; : if (cur_ptr < line_end_ptr) 0.00 : 556002: 4d 39 e6 cmp %r12,%r14 : { : char hexchar = *cur_ptr; : : if (isxdigit((unsigned char) hexchar)) : { : int val = GetDecimalFromHex(hexchar); 0.00 : 556005: 89 c1 mov %eax,%ecx : : cur_ptr++; : if (cur_ptr < line_end_ptr) 0.00 : 556007: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 55600b: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 556010: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 556014: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 556019: 77 54 ja 55606f : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 55601b: 84 c9 test %cl,%cl 0.00 : 55601d: 0f 8f 5d fb ff ff jg 555b80 0.00 : 556023: e9 b2 fd ff ff jmpq 555dda : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); 0.00 : 556028: 48 89 df mov %rbx,%rdi 0.00 : 55602b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 556030: e8 0b bb 07 00 callq 5d1b40 0.00 : 556035: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 55603c: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 556041: e9 cd fa ff ff jmpq 555b13 : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); 0.00 : 556046: 48 89 df mov %rbx,%rdi 0.00 : 556049: e8 f2 ba 07 00 callq 5d1b40 0.00 : 55604e: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 556055: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 55605a: e9 46 f9 ff ff jmpq 5559a5 : { : c = *cur_ptr; : if (ISOCTAL(c)) : { : cur_ptr++; : val = (val << 3) + OCTVALUE(c); 0.00 : 55605f: 0f be c1 movsbl %cl,%eax : if (cur_ptr < line_end_ptr) : { : c = *cur_ptr; : if (ISOCTAL(c)) : { : cur_ptr++; 0.00 : 556062: 49 83 c4 01 add $0x1,%r12 : val = (val << 3) + OCTVALUE(c); 0.00 : 556066: 8d 54 d0 d0 lea -0x30(%rax,%rdx,8),%edx 0.00 : 55606a: e9 61 fd ff ff jmpq 555dd0 : : cur_ptr++; : if (cur_ptr < line_end_ptr) : { : hexchar = *cur_ptr; : if (isxdigit((unsigned char) hexchar)) 0.00 : 55606f: 48 8b 5d c8 mov -0x38(%rbp),%rbx : int val = GetDecimalFromHex(hexchar); : : cur_ptr++; : if (cur_ptr < line_end_ptr) : { : hexchar = *cur_ptr; 0.00 : 556073: 41 0f b6 34 24 movzbl (%r12),%esi : if (isxdigit((unsigned char) hexchar)) 0.00 : 556078: 48 8b 03 mov (%rbx),%rax 0.00 : 55607b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 55607f: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 556084: 74 95 je 55601b : { : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); 0.00 : 556086: 89 cb mov %ecx,%ebx 0.00 : 556088: 40 0f be fe movsbl %sil,%edi : if (cur_ptr < line_end_ptr) : { : hexchar = *cur_ptr; : if (isxdigit((unsigned char) hexchar)) : { : cur_ptr++; 0.00 : 55608c: 49 83 c4 01 add $0x1,%r12 : val = (val << 4) + GetDecimalFromHex(hexchar); 0.00 : 556090: c1 e3 04 shl $0x4,%ebx 0.00 : 556093: e8 f8 f7 ff ff callq 555890 0.00 : 556098: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 55609d: 8d 0c 18 lea (%rax,%rbx,1),%ecx 0.00 : 5560a0: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 5560a4: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 5560a9: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 5560ad: e9 69 ff ff ff jmpq 55601b : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : if (c == delimc) 0.00 : 5560b2: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 5560b8: 45 31 db xor %r11d,%r11d 0.00 : 5560bb: 31 d2 xor %edx,%edx 0.00 : 5560bd: e9 6f fb ff ff jmpq 555c31 : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5560c2: 4d 89 c4 mov %r8,%r12 0.00 : 5560c5: 45 31 ed xor %r13d,%r13d 0.00 : 5560c8: 45 31 db xor %r11d,%r11d 0.00 : 5560cb: 31 d2 xor %edx,%edx 0.00 : 5560cd: e9 5f fb ff ff jmpq 555c31 : } : : /* Clean up state of attribute_buf */ : output_ptr--; : Assert(*output_ptr == '\0'); : cstate->attribute_buf.len = (output_ptr - cstate->attribute_buf.data); 0.00 : 5560d2: 44 89 e0 mov %r12d,%eax 0.00 : 5560d5: 41 2b 87 70 01 00 00 sub 0x170(%r15),%eax 0.00 : 5560dc: 41 89 87 78 01 00 00 mov %eax,0x178(%r15) 0.00 : 5560e3: e9 0f fd ff ff jmpq 555df7 : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; 0.00 : 5560e8: 41 bb 01 00 00 00 mov $0x1,%r11d : } : } : endfield: : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 5560ee: 49 8d 54 24 01 lea 0x1(%r12),%rdx 0.00 : 5560f3: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 5560f8: 31 c0 xor %eax,%eax 0.00 : 5560fa: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 5560fe: e9 ab fe ff ff jmpq 555fae : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) : ereport(ERROR, 0.00 : 556103: 45 31 c0 xor %r8d,%r8d 0.00 : 556106: b9 40 9d 87 00 mov $0x879d40,%ecx 0.00 : 55610b: ba e4 0e 00 00 mov $0xee4,%edx 0.00 : 556110: e9 26 fd ff ff jmpq 555e3b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 13.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2302 13.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 13.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 10.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2302 10.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 6.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2300 6.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2302 3.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000073c9d0 : : /* : * eqjoinsel - Join selectivity of "=" : */ : Datum : eqjoinsel(PG_FUNCTION_ARGS) : { 0.00 : 73c9d0: 55 push %rbp 0.00 : 73c9d1: 48 89 e5 mov %rsp,%rbp 0.00 : 73c9d4: 41 57 push %r15 : VariableStatData vardata1; : VariableStatData vardata2; : bool join_is_reversed; : RelOptInfo *inner_rel; : : get_join_variables(root, args, sjinfo, 0.00 : 73c9d6: 4c 8d 4d cf lea -0x31(%rbp),%r9 : /* : * eqjoinsel - Join selectivity of "=" : */ : Datum : eqjoinsel(PG_FUNCTION_ARGS) : { 0.00 : 73c9da: 41 56 push %r14 : VariableStatData vardata1; : VariableStatData vardata2; : bool join_is_reversed; : RelOptInfo *inner_rel; : : get_join_variables(root, args, sjinfo, 0.00 : 73c9dc: 4c 8d b5 30 ff ff ff lea -0xd0(%rbp),%r14 : /* : * eqjoinsel - Join selectivity of "=" : */ : Datum : eqjoinsel(PG_FUNCTION_ARGS) : { 0.00 : 73c9e3: 41 55 push %r13 : VariableStatData vardata1; : VariableStatData vardata2; : bool join_is_reversed; : RelOptInfo *inner_rel; : : get_join_variables(root, args, sjinfo, 0.00 : 73c9e5: 4c 8d ad 60 ff ff ff lea -0xa0(%rbp),%r13 0.00 : 73c9ec: 4d 89 f0 mov %r14,%r8 : /* : * eqjoinsel - Join selectivity of "=" : */ : Datum : eqjoinsel(PG_FUNCTION_ARGS) : { 0.00 : 73c9ef: 41 54 push %r12 : VariableStatData vardata1; : VariableStatData vardata2; : bool join_is_reversed; : RelOptInfo *inner_rel; : : get_join_variables(root, args, sjinfo, 0.00 : 73c9f1: 4c 89 e9 mov %r13,%rcx : /* : * eqjoinsel - Join selectivity of "=" : */ : Datum : eqjoinsel(PG_FUNCTION_ARGS) : { 0.00 : 73c9f4: 53 push %rbx 0.00 : 73c9f5: 48 81 ec 88 01 00 00 sub $0x188,%rsp : List *args = (List *) PG_GETARG_POINTER(2); : : #ifdef NOT_USED : JoinType jointype = (JoinType) PG_GETARG_INT16(3); : #endif : SpecialJoinInfo *sjinfo = (SpecialJoinInfo *) PG_GETARG_POINTER(4); 0.00 : 73c9fc: 48 8b 5f 40 mov 0x40(%rdi),%rbx : * eqjoinsel - Join selectivity of "=" : */ : Datum : eqjoinsel(PG_FUNCTION_ARGS) : { : PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); 0.00 : 73ca00: 4c 8b 67 20 mov 0x20(%rdi),%r12 : VariableStatData vardata1; : VariableStatData vardata2; : bool join_is_reversed; : RelOptInfo *inner_rel; : : get_join_variables(root, args, sjinfo, 0.00 : 73ca04: 48 8b 77 30 mov 0x30(%rdi),%rsi : */ : Datum : eqjoinsel(PG_FUNCTION_ARGS) : { : PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); : Oid operator = PG_GETARG_OID(1); 0.00 : 73ca08: 44 8b 7f 28 mov 0x28(%rdi),%r15d : VariableStatData vardata1; : VariableStatData vardata2; : bool join_is_reversed; : RelOptInfo *inner_rel; : : get_join_variables(root, args, sjinfo, 0.00 : 73ca0c: 48 89 da mov %rbx,%rdx 0.00 : 73ca0f: 4c 89 e7 mov %r12,%rdi 0.00 : 73ca12: e8 89 c5 ff ff callq 738fa0 : &vardata1, &vardata2, &join_is_reversed); : : switch (sjinfo->jointype) 0.00 : 73ca17: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 73ca1a: 83 f8 02 cmp $0x2,%eax 0.00 : 73ca1d: 0f 87 1d 03 00 00 ja 73cd40 : Datum *values2 = NULL; : int nvalues2 = 0; : float4 *numbers2 = NULL; : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); 0.00 : 73ca23: 48 8d 75 ce lea -0x32(%rbp),%rsi 0.00 : 73ca27: 4c 89 ef mov %r13,%rdi : bool isdefault1; : bool isdefault2; : Form_pg_statistic stats1 = NULL; : Form_pg_statistic stats2 = NULL; : bool have_mcvs1 = false; : Datum *values1 = NULL; 0.00 : 73ca2a: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 73ca31: 00 : int nvalues1 = 0; 0.00 : 73ca32: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : float4 *numbers1 = NULL; 0.00 : 73ca39: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 73ca40: 00 : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); : nd2 = get_variable_numdistinct(vardata2, &isdefault2); : : if (HeapTupleIsValid(vardata1->statsTuple)) 0.00 : 73ca41: 45 31 ed xor %r13d,%r13d : Form_pg_statistic stats2 = NULL; : bool have_mcvs1 = false; : Datum *values1 = NULL; : int nvalues1 = 0; : float4 *numbers1 = NULL; : int nnumbers1 = 0; 0.00 : 73ca44: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : bool have_mcvs2 = false; : Datum *values2 = NULL; 0.00 : 73ca4b: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 73ca52: 00 : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); : nd2 = get_variable_numdistinct(vardata2, &isdefault2); : : if (HeapTupleIsValid(vardata1->statsTuple)) 0.00 : 73ca53: 45 31 e4 xor %r12d,%r12d : int nvalues1 = 0; : float4 *numbers1 = NULL; : int nnumbers1 = 0; : bool have_mcvs2 = false; : Datum *values2 = NULL; : int nvalues2 = 0; 0.00 : 73ca56: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) : float4 *numbers2 = NULL; 0.00 : 73ca5d: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 73ca64: 00 : int nnumbers2 = 0; 0.00 : 73ca65: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); 0.00 : 73ca6c: e8 3f b9 ff ff callq 7383b0 : nd2 = get_variable_numdistinct(vardata2, &isdefault2); 0.00 : 73ca71: 48 8d 75 cd lea -0x33(%rbp),%rsi 0.00 : 73ca75: 4c 89 f7 mov %r14,%rdi : Datum *values2 = NULL; : int nvalues2 = 0; : float4 *numbers2 = NULL; : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); 0.00 : 73ca78: f2 0f 11 85 d0 fe ff movsd %xmm0,-0x130(%rbp) 0.00 : 73ca7f: ff : nd2 = get_variable_numdistinct(vardata2, &isdefault2); 0.00 : 73ca80: e8 2b b9 ff ff callq 7383b0 : : if (HeapTupleIsValid(vardata1->statsTuple)) 0.00 : 73ca85: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi : int nvalues2 = 0; : float4 *numbers2 = NULL; : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); : nd2 = get_variable_numdistinct(vardata2, &isdefault2); 0.00 : 73ca8c: f2 0f 11 85 c8 fe ff movsd %xmm0,-0x138(%rbp) 0.00 : 73ca93: ff : : if (HeapTupleIsValid(vardata1->statsTuple)) 0.00 : 73ca94: 48 85 ff test %rdi,%rdi 0.00 : 73ca97: 74 48 je 73cae1 : { : stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); 0.00 : 73ca99: 48 8b 57 10 mov 0x10(%rdi),%rdx : have_mcvs1 = get_attstatsslot(vardata1->statsTuple, 0.00 : 73ca9d: 8b 75 84 mov -0x7c(%rbp),%esi 0.00 : 73caa0: 45 31 c9 xor %r9d,%r9d 0.00 : 73caa3: 45 31 c0 xor %r8d,%r8d 0.00 : 73caa6: b9 01 00 00 00 mov $0x1,%ecx : nd1 = get_variable_numdistinct(vardata1, &isdefault1); : nd2 = get_variable_numdistinct(vardata2, &isdefault2); : : if (HeapTupleIsValid(vardata1->statsTuple)) : { : stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); 0.00 : 73caab: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 73caaf: 4c 8d 24 02 lea (%rdx,%rax,1),%r12 : have_mcvs1 = get_attstatsslot(vardata1->statsTuple, 0.00 : 73cab3: 48 8d 45 c4 lea -0x3c(%rbp),%rax 0.00 : 73cab7: 8b 55 88 mov -0x78(%rbp),%edx 0.00 : 73caba: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 73cabf: 48 8d 45 a8 lea -0x58(%rbp),%rax 0.00 : 73cac3: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 73cac8: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : 73cacc: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 73cad1: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 73cad5: 48 89 04 24 mov %rax,(%rsp) 0.00 : 73cad9: e8 f2 6c 03 00 callq 7737d0 0.00 : 73cade: 41 89 c5 mov %eax,%r13d : NULL, : &values1, &nvalues1, : &numbers1, &nnumbers1); : } : : if (HeapTupleIsValid(vardata2->statsTuple)) 0.00 : 73cae1: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 73cae8: 48 85 ff test %rdi,%rdi 0.00 : 73caeb: 0f 84 cc 02 00 00 je 73cdbd : { : stats2 = (Form_pg_statistic) GETSTRUCT(vardata2->statsTuple); 0.00 : 73caf1: 48 8b 57 10 mov 0x10(%rdi),%rdx : have_mcvs2 = get_attstatsslot(vardata2->statsTuple, 0.00 : 73caf5: 8b b5 54 ff ff ff mov -0xac(%rbp),%esi 0.00 : 73cafb: 45 31 c9 xor %r9d,%r9d 0.00 : 73cafe: 45 31 c0 xor %r8d,%r8d 0.00 : 73cb01: b9 01 00 00 00 mov $0x1,%ecx : &numbers1, &nnumbers1); : } : : if (HeapTupleIsValid(vardata2->statsTuple)) : { : stats2 = (Form_pg_statistic) GETSTRUCT(vardata2->statsTuple); 0.00 : 73cb06: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 73cb0a: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : have_mcvs2 = get_attstatsslot(vardata2->statsTuple, 0.00 : 73cb0e: 48 8d 45 bc lea -0x44(%rbp),%rax 0.00 : 73cb12: 8b 95 58 ff ff ff mov -0xa8(%rbp),%edx 0.00 : 73cb18: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 73cb1d: 48 8d 45 98 lea -0x68(%rbp),%rax 0.00 : 73cb21: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 73cb26: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 73cb2a: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 73cb2f: 48 8d 45 a0 lea -0x60(%rbp),%rax 0.00 : 73cb33: 48 89 04 24 mov %rax,(%rsp) 0.00 : 73cb37: e8 94 6c 03 00 callq 7737d0 : NULL, : &values2, &nvalues2, : &numbers2, &nnumbers2); : } : : if (have_mcvs1 && have_mcvs2) 0.00 : 73cb3c: 45 84 ed test %r13b,%r13b : } : : if (HeapTupleIsValid(vardata2->statsTuple)) : { : stats2 = (Form_pg_statistic) GETSTRUCT(vardata2->statsTuple); : have_mcvs2 = get_attstatsslot(vardata2->statsTuple, 0.00 : 73cb3f: 88 85 c7 fe ff ff mov %al,-0x139(%rbp) : NULL, : &values2, &nvalues2, : &numbers2, &nnumbers2); : } : : if (have_mcvs1 && have_mcvs2) 0.00 : 73cb45: 0f 84 7b 02 00 00 je 73cdc6 0.00 : 73cb4b: 84 c0 test %al,%al 0.00 : 73cb4d: 0f 84 73 02 00 00 je 73cdc6 : * of Wisconsin, Madison, March 1991 (available from ftp.cs.wisc.edu). : */ : FmgrInfo eqproc; : bool *hasmatch1; : bool *hasmatch2; : double nullfrac1 = stats1->stanullfrac; 0.00 : 73cb53: f3 41 0f 10 44 24 08 movss 0x8(%r12),%xmm0 : totalsel1, : totalsel2; : int i, : nmatches; : : fmgr_info(get_opcode(operator), &eqproc); 0.00 : 73cb5a: 44 89 ff mov %r15d,%edi : * of Wisconsin, Madison, March 1991 (available from ftp.cs.wisc.edu). : */ : FmgrInfo eqproc; : bool *hasmatch1; : bool *hasmatch2; : double nullfrac1 = stats1->stanullfrac; 0.00 : 73cb5d: f3 0f 11 85 ec fe ff movss %xmm0,-0x114(%rbp) 0.00 : 73cb64: ff : double nullfrac2 = stats2->stanullfrac; 0.00 : 73cb65: f3 0f 10 4b 08 movss 0x8(%rbx),%xmm1 0.00 : 73cb6a: f3 0f 11 8d e8 fe ff movss %xmm1,-0x118(%rbp) 0.00 : 73cb71: ff : totalsel1, : totalsel2; : int i, : nmatches; : : fmgr_info(get_opcode(operator), &eqproc); 0.00 : 73cb72: e8 49 5c 03 00 callq 7727c0 0.00 : 73cb77: 48 8d b5 00 ff ff ff lea -0x100(%rbp),%rsi 0.00 : 73cb7e: 89 c7 mov %eax,%edi 0.00 : 73cb80: e8 db 34 04 00 callq 780060 : hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); 0.00 : 73cb85: 48 63 7d c8 movslq -0x38(%rbp),%rdi 0.00 : 73cb89: e8 e2 c3 05 00 callq 798f70 : hasmatch2 = (bool *) palloc0(nvalues2 * sizeof(bool)); 0.00 : 73cb8e: 48 63 7d c0 movslq -0x40(%rbp),%rdi : totalsel2; : int i, : nmatches; : : fmgr_info(get_opcode(operator), &eqproc); : hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); 0.00 : 73cb92: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) : hasmatch2 = (bool *) palloc0(nvalues2 * sizeof(bool)); 0.00 : 73cb99: e8 d2 c3 05 00 callq 798f70 : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : matchprodfreq = 0.0; : nmatches = 0; : for (i = 0; i < nvalues1; i++) 0.00 : 73cb9e: 8b 55 c8 mov -0x38(%rbp),%edx : int i, : nmatches; : : fmgr_info(get_opcode(operator), &eqproc); : hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); : hasmatch2 = (bool *) palloc0(nvalues2 * sizeof(bool)); 0.00 : 73cba1: 49 89 c7 mov %rax,%r15 : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : matchprodfreq = 0.0; : nmatches = 0; : for (i = 0; i < nvalues1; i++) 0.00 : 73cba4: 85 d2 test %edx,%edx 0.00 : 73cba6: 0f 8e ae 07 00 00 jle 73d35a 0.00 : 73cbac: 66 0f 57 e4 xorpd %xmm4,%xmm4 0.00 : 73cbb0: c7 85 ac fe ff ff 00 movl $0x0,-0x154(%rbp) 0.00 : 73cbb7: 00 00 00 0.00 : 73cbba: c7 85 a8 fe ff ff 00 movl $0x0,-0x158(%rbp) 0.00 : 73cbc1: 00 00 00 0.00 : 73cbc4: f2 0f 11 a5 98 fe ff movsd %xmm4,-0x168(%rbp) 0.00 : 73cbcb: ff 0.00 : 73cbcc: f2 0f 11 a5 a0 fe ff movsd %xmm4,-0x160(%rbp) 0.00 : 73cbd3: ff 0.00 : 73cbd4: 0f 1f 40 00 nopl 0x0(%rax) : { : int j; : : for (j = 0; j < nvalues2; j++) 0.00 : 73cbd8: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 73cbdb: 85 c0 test %eax,%eax 0.00 : 73cbdd: 0f 8e ad 00 00 00 jle 73cc90 : { : if (hasmatch2[j]) : continue; : if (DatumGetBool(FunctionCall2Coll(&eqproc, 0.00 : 73cbe3: 48 63 85 ac fe ff ff movslq -0x154(%rbp),%rax 0.00 : 73cbea: 31 db xor %ebx,%ebx 0.00 : 73cbec: 49 89 c6 mov %rax,%r14 0.00 : 73cbef: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) 0.00 : 73cbf6: 49 c1 e6 03 shl $0x3,%r14 0.00 : 73cbfa: eb 10 jmp 73cc0c 0.00 : 73cbfc: 0f 1f 40 00 nopl 0x0(%rax) : nmatches = 0; : for (i = 0; i < nvalues1; i++) : { : int j; : : for (j = 0; j < nvalues2; j++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2300 6.90 : 73cc00: 83 c3 01 add $0x1,%ebx 0.00 : 73cc03: 3b 5d c0 cmp -0x40(%rbp),%ebx 0.00 : 73cc06: 0f 8d 14 03 00 00 jge 73cf20 : { : if (hasmatch2[j]) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2302 13.79 : 73cc0c: 4c 63 e3 movslq %ebx,%r12 0.00 : 73cc0f: 4f 8d 2c 27 lea (%r15,%r12,1),%r13 10.34 : 73cc13: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 6.90 : 73cc18: 75 e6 jne 73cc00 : continue; : if (DatumGetBool(FunctionCall2Coll(&eqproc, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 13.79 : 73cc1a: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 73cc1e: 48 8d bd 00 ff ff ff lea -0x100(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 3.45 : 73cc25: be 64 00 00 00 mov $0x64,%esi 0.00 : 73cc2a: 4a 8b 0c e0 mov (%rax,%r12,8),%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2304 20.69 : 73cc2e: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 73cc32: 4a 8b 14 30 mov (%rax,%r14,1),%rdx 13.79 : 73cc36: e8 f5 13 04 00 callq 77e030 10.34 : 73cc3b: 84 c0 test %al,%al 0.00 : 73cc3d: 74 c1 je 73cc00 : DEFAULT_COLLATION_OID, : values1[i], : values2[j]))) : { : hasmatch1[i] = hasmatch2[j] = true; 0.00 : 73cc3f: 41 c6 45 00 01 movb $0x1,0x0(%r13) 0.00 : 73cc44: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 73cc4b: 48 8b 85 d8 fe ff ff mov -0x128(%rbp),%rax 0.00 : 73cc52: c6 04 02 01 movb $0x1,(%rdx,%rax,1) : matchprodfreq += numbers1[i] * numbers2[j]; 0.00 : 73cc56: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 73cc5a: 48 8b 9d d8 fe ff ff mov -0x128(%rbp),%rbx 0.00 : 73cc61: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73cc64: f3 0f 10 04 98 movss (%rax,%rbx,4),%xmm0 0.00 : 73cc69: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 73cc6d: f3 42 0f 59 04 a0 mulss (%rax,%r12,4),%xmm0 : nmatches++; 0.00 : 73cc73: 83 85 a8 fe ff ff 01 addl $0x1,-0x158(%rbp) : DEFAULT_COLLATION_OID, : values1[i], : values2[j]))) : { : hasmatch1[i] = hasmatch2[j] = true; : matchprodfreq += numbers1[i] * numbers2[j]; 0.00 : 73cc7a: 0f 14 c0 unpcklps %xmm0,%xmm0 0.00 : 73cc7d: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73cc80: f2 0f 58 85 a0 fe ff addsd -0x160(%rbp),%xmm0 0.00 : 73cc87: ff 0.00 : 73cc88: f2 0f 11 85 a0 fe ff movsd %xmm0,-0x160(%rbp) 0.00 : 73cc8f: ff : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : matchprodfreq = 0.0; : nmatches = 0; : for (i = 0; i < nvalues1; i++) 0.00 : 73cc90: 83 85 ac fe ff ff 01 addl $0x1,-0x154(%rbp) 0.00 : 73cc97: 39 95 ac fe ff ff cmp %edx,-0x154(%rbp) 0.00 : 73cc9d: 0f 8c 35 ff ff ff jl 73cbd8 : nmatches++; : break; : } : } : } : CLAMP_PROBABILITY(matchprodfreq); 0.00 : 73cca3: f2 0f 10 85 98 fe ff movsd -0x168(%rbp),%xmm0 0.00 : 73ccaa: ff 0.00 : 73ccab: 66 0f 2e 85 a0 fe ff ucomisd -0x160(%rbp),%xmm0 0.00 : 73ccb2: ff 0.00 : 73ccb3: 0f 87 49 06 00 00 ja 73d302 0.00 : 73ccb9: f2 0f 10 25 97 24 07 movsd 0x72497(%rip),%xmm4 # 7af158 <__func__.15777+0x10> 0.00 : 73ccc0: 00 0.00 : 73ccc1: f2 0f 10 8d a0 fe ff movsd -0x160(%rbp),%xmm1 0.00 : 73ccc8: ff 0.00 : 73ccc9: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73cccd: f2 0f c2 85 a0 fe ff cmpnltsd -0x160(%rbp),%xmm0 0.00 : 73ccd4: ff 05 0.00 : 73ccd6: 66 0f 54 c8 andpd %xmm0,%xmm1 0.00 : 73ccda: 66 0f 55 c4 andnpd %xmm4,%xmm0 0.00 : 73ccde: 66 0f 56 c1 orpd %xmm1,%xmm0 0.00 : 73cce2: f2 0f 11 85 a0 fe ff movsd %xmm0,-0x160(%rbp) 0.00 : 73cce9: ff : /* Sum up frequencies of matched and unmatched MCVs */ : matchfreq1 = unmatchfreq1 = 0.0; : for (i = 0; i < nvalues1; i++) 0.00 : 73ccea: 85 d2 test %edx,%edx 0.00 : 73ccec: 0f 8e a8 06 00 00 jle 73d39a : { : if (hasmatch1[i]) : matchfreq1 += numbers1[i]; 0.00 : 73ccf2: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 73ccf6: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 73ccfa: 31 c0 xor %eax,%eax 0.00 : 73ccfc: 66 0f 28 d1 movapd %xmm1,%xmm2 0.00 : 73cd00: eb 1e jmp 73cd20 0.00 : 73cd02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73cd08: f3 0f 10 04 81 movss (%rcx,%rax,4),%xmm0 0.00 : 73cd0d: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73cd10: f2 0f 58 c8 addsd %xmm0,%xmm1 : else : unmatchfreq1 += numbers1[i]; 0.00 : 73cd14: 48 83 c0 01 add $0x1,%rax : } : } : CLAMP_PROBABILITY(matchprodfreq); : /* Sum up frequencies of matched and unmatched MCVs */ : matchfreq1 = unmatchfreq1 = 0.0; : for (i = 0; i < nvalues1; i++) 0.00 : 73cd18: 39 c2 cmp %eax,%edx 0.00 : 73cd1a: 0f 8e 85 02 00 00 jle 73cfa5 : { : if (hasmatch1[i]) 0.00 : 73cd20: 48 8b 9d e0 fe ff ff mov -0x120(%rbp),%rbx 0.00 : 73cd27: 80 3c 03 00 cmpb $0x0,(%rbx,%rax,1) 0.00 : 73cd2b: 75 db jne 73cd08 : matchfreq1 += numbers1[i]; : else : unmatchfreq1 += numbers1[i]; 0.00 : 73cd2d: f3 0f 10 04 81 movss (%rcx,%rax,4),%xmm0 0.00 : 73cd32: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73cd35: f2 0f 58 d0 addsd %xmm0,%xmm2 0.00 : 73cd39: eb d9 jmp 73cd14 0.00 : 73cd3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : RelOptInfo *inner_rel; : : get_join_variables(root, args, sjinfo, : &vardata1, &vardata2, &join_is_reversed); : : switch (sjinfo->jointype) 0.00 : 73cd40: 83 e8 04 sub $0x4,%eax 0.00 : 73cd43: 83 f8 01 cmp $0x1,%eax 0.00 : 73cd46: 77 48 ja 73cd90 : * Look up the join's inner relation. min_righthand is sufficient : * information because neither SEMI nor ANTI joins permit any : * reassociation into or out of their RHS, so the righthand will : * always be exactly that set of rels. : */ : inner_rel = find_join_input_rel(root, sjinfo->min_righthand); 0.00 : 73cd48: 48 8b 5b 10 mov 0x10(%rbx),%rbx : static RelOptInfo * : find_join_input_rel(PlannerInfo *root, Relids relids) : { : RelOptInfo *rel = NULL; : : switch (bms_membership(relids)) 0.00 : 73cd4c: 48 89 df mov %rbx,%rdi 0.00 : 73cd4f: e8 8c 5d ea ff callq 5e2ae0 0.00 : 73cd54: 83 f8 01 cmp $0x1,%eax 0.00 : 73cd57: 0f 84 2e 02 00 00 je 73cf8b 0.00 : 73cd5d: 83 f8 02 cmp $0x2,%eax 0.00 : 73cd60: 0f 84 73 01 00 00 je 73ced9 : rel = find_join_rel(root, relids); : break; : } : : if (rel == NULL) : elog(ERROR, "could not find RelOptInfo for given relids"); 0.00 : 73cd66: ba 60 92 8c 00 mov $0x8c9260,%edx 0.00 : 73cd6b: be 03 14 00 00 mov $0x1403,%esi 0.00 : 73cd70: bf d5 59 8c 00 mov $0x8c59d5,%edi 0.00 : 73cd75: e8 a6 e6 03 00 callq 77b420 0.00 : 73cd7a: be 90 8f 8c 00 mov $0x8c8f90,%esi 0.00 : 73cd7f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 73cd84: 31 c0 xor %eax,%eax 0.00 : 73cd86: e8 a5 e4 03 00 callq 77b230 0.00 : 73cd8b: e8 40 c7 d2 ff callq 4694d0 : &vardata2, &vardata1, : inner_rel); : break; : default: : /* other values not expected here */ : elog(ERROR, "unrecognized join type: %d", 0.00 : 73cd90: ba 4c 92 8c 00 mov $0x8c924c,%edx 0.00 : 73cd95: be 87 08 00 00 mov $0x887,%esi 0.00 : 73cd9a: bf d5 59 8c 00 mov $0x8c59d5,%edi 0.00 : 73cd9f: e8 7c e6 03 00 callq 77b420 0.00 : 73cda4: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 73cda7: be 39 17 87 00 mov $0x871739,%esi 0.00 : 73cdac: bf 14 00 00 00 mov $0x14,%edi 0.00 : 73cdb1: 31 c0 xor %eax,%eax 0.00 : 73cdb3: e8 78 e4 03 00 callq 77b230 0.00 : 73cdb8: e8 13 c7 d2 ff callq 4694d0 : * Use the smaller of the two estimates. This can be justified in : * essentially the same terms as given below for the no-stats case: to : * a first approximation, we are estimating from the point of view of : * the relation with smaller nd. : */ : selec = (totalsel1 < totalsel2) ? totalsel1 : totalsel2; 0.00 : 73cdbd: c6 85 c7 fe ff ff 00 movb $0x0,-0x139(%rbp) 0.00 : 73cdc4: 31 db xor %ebx,%ebx : * : * XXX Can we be smarter if we have an MCV list for just one side? It : * seems that if we assume equal distribution for the other side, we : * end up with the same answer anyway. : */ : double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; 0.00 : 73cdc6: 4d 85 e4 test %r12,%r12 0.00 : 73cdc9: 0f 84 10 05 00 00 je 73d2df 0.00 : 73cdcf: f2 0f 10 25 81 23 07 movsd 0x72381(%rip),%xmm4 # 7af158 <__func__.15777+0x10> 0.00 : 73cdd6: 00 0.00 : 73cdd7: f3 41 0f 10 44 24 08 movss 0x8(%r12),%xmm0 0.00 : 73cdde: 66 0f 28 cc movapd %xmm4,%xmm1 0.00 : 73cde2: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73cde5: f2 0f 5c c8 subsd %xmm0,%xmm1 : double nullfrac2 = stats2 ? stats2->stanullfrac : 0.0; 0.00 : 73cde9: 48 85 db test %rbx,%rbx 0.00 : 73cdec: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73cdf0: 74 10 je 73ce02 0.00 : 73cdf2: f3 0f 10 43 08 movss 0x8(%rbx),%xmm0 0.00 : 73cdf7: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73cdfa: f2 0f 5c e0 subsd %xmm0,%xmm4 0.00 : 73cdfe: 66 0f 28 c4 movapd %xmm4,%xmm0 : : selec = (1.0 - nullfrac1) * (1.0 - nullfrac2); : if (nd1 > nd2) 0.00 : 73ce02: f2 0f 10 9d d0 fe ff movsd -0x130(%rbp),%xmm3 0.00 : 73ce09: ff : * end up with the same answer anyway. : */ : double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; : double nullfrac2 = stats2 ? stats2->stanullfrac : 0.0; : : selec = (1.0 - nullfrac1) * (1.0 - nullfrac2); 0.00 : 73ce0a: f2 0f 59 c1 mulsd %xmm1,%xmm0 : if (nd1 > nd2) 0.00 : 73ce0e: 66 0f 2e 9d c8 fe ff ucomisd -0x138(%rbp),%xmm3 0.00 : 73ce15: ff 0.00 : 73ce16: 0f 86 5a 01 00 00 jbe 73cf76 : selec /= nd1; 0.00 : 73ce1c: f2 0f 5e 85 d0 fe ff divsd -0x130(%rbp),%xmm0 0.00 : 73ce23: ff 0.00 : 73ce24: f2 0f 11 85 f8 fe ff movsd %xmm0,-0x108(%rbp) 0.00 : 73ce2b: ff : else : selec /= nd2; : } : : if (have_mcvs1) 0.00 : 73ce2c: 45 84 ed test %r13b,%r13b 0.00 : 73ce2f: 0f 85 7e 05 00 00 jne 73d3b3 0.00 : 73ce35: 66 0f 57 e4 xorpd %xmm4,%xmm4 0.00 : 73ce39: f2 0f 11 a5 98 fe ff movsd %xmm4,-0x168(%rbp) 0.00 : 73ce40: ff : free_attstatsslot(vardata1->atttype, values1, nvalues1, : numbers1, nnumbers1); : if (have_mcvs2) 0.00 : 73ce41: 80 bd c7 fe ff ff 00 cmpb $0x0,-0x139(%rbp) 0.00 : 73ce48: 74 1e je 73ce68 : free_attstatsslot(vardata2->atttype, values2, nvalues2, 0.00 : 73ce4a: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 73ce4e: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 73ce51: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 73ce55: 8b bd 54 ff ff ff mov -0xac(%rbp),%edi 0.00 : 73ce5b: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 73ce5f: e8 1c 5e 03 00 callq 772c80 0.00 : 73ce64: 0f 1f 40 00 nopl 0x0(%rax) : (int) sjinfo->jointype); : selec = 0; /* keep compiler quiet */ : break; : } : : ReleaseVariableStats(vardata1); 0.00 : 73ce68: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 73ce6f: 48 85 ff test %rdi,%rdi 0.00 : 73ce72: 74 06 je 73ce7a 0.00 : 73ce74: ff 95 78 ff ff ff callq *-0x88(%rbp) : ReleaseVariableStats(vardata2); 0.00 : 73ce7a: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 73ce81: 48 85 ff test %rdi,%rdi 0.00 : 73ce84: 74 06 je 73ce8c 0.00 : 73ce86: ff 95 48 ff ff ff callq *-0xb8(%rbp) : : CLAMP_PROBABILITY(selec); 0.00 : 73ce8c: f2 0f 10 a5 98 fe ff movsd -0x168(%rbp),%xmm4 0.00 : 73ce93: ff 0.00 : 73ce94: 66 0f 2e a5 f8 fe ff ucomisd -0x108(%rbp),%xmm4 0.00 : 73ce9b: ff 0.00 : 73ce9c: 0f 87 8e 00 00 00 ja 73cf30 0.00 : 73cea2: f2 0f 10 05 ae 22 07 movsd 0x722ae(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 73cea9: 00 0.00 : 73ceaa: f2 0f 5d 85 f8 fe ff minsd -0x108(%rbp),%xmm0 0.00 : 73ceb1: ff 0.00 : 73ceb2: f2 0f 11 85 f8 fe ff movsd %xmm0,-0x108(%rbp) 0.00 : 73ceb9: ff : : PG_RETURN_FLOAT8((float8) selec); 0.00 : 73ceba: f2 0f 10 85 f8 fe ff movsd -0x108(%rbp),%xmm0 0.00 : 73cec1: ff 0.00 : 73cec2: e8 f9 0a 04 00 callq 77d9c0 : } 0.00 : 73cec7: 48 81 c4 88 01 00 00 add $0x188,%rsp 0.00 : 73cece: 5b pop %rbx 0.00 : 73cecf: 41 5c pop %r12 0.00 : 73ced1: 41 5d pop %r13 0.00 : 73ced3: 41 5e pop %r14 0.00 : 73ced5: 41 5f pop %r15 0.00 : 73ced7: c9 leaveq 0.00 : 73ced8: c3 retq : break; : case BMS_SINGLETON: : rel = find_base_rel(root, bms_singleton_member(relids)); : break; : case BMS_MULTIPLE: : rel = find_join_rel(root, relids); 0.00 : 73ced9: 48 89 de mov %rbx,%rsi 0.00 : 73cedc: 4c 89 e7 mov %r12,%rdi 0.00 : 73cedf: e8 2c 8f ef ff callq 635e10 0.00 : 73cee4: 48 89 c3 mov %rax,%rbx : break; : } : : if (rel == NULL) 0.00 : 73cee7: 48 85 db test %rbx,%rbx 0.00 : 73ceea: 0f 84 76 fe ff ff je 73cd66 : * reassociation into or out of their RHS, so the righthand will : * always be exactly that set of rels. : */ : inner_rel = find_join_input_rel(root, sjinfo->min_righthand); : : if (!join_is_reversed) 0.00 : 73cef0: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 73cef4: 75 4f jne 73cf45 : selec = eqjoinsel_semi(operator, &vardata1, &vardata2, 0.00 : 73cef6: 48 89 d9 mov %rbx,%rcx 0.00 : 73cef9: 4c 89 f2 mov %r14,%rdx 0.00 : 73cefc: 4c 89 ee mov %r13,%rsi 0.00 : 73ceff: 44 89 ff mov %r15d,%edi 0.00 : 73cf02: e8 49 f5 ff ff callq 73c450 0.00 : 73cf07: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 73cf0b: f2 0f 11 85 f8 fe ff movsd %xmm0,-0x108(%rbp) 0.00 : 73cf12: ff 0.00 : 73cf13: f2 0f 11 8d 98 fe ff movsd %xmm1,-0x168(%rbp) 0.00 : 73cf1a: ff 0.00 : 73cf1b: e9 48 ff ff ff jmpq 73ce68 0.00 : 73cf20: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73cf23: e9 68 fd ff ff jmpq 73cc90 0.00 : 73cf28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 73cf2f: 00 : } : : ReleaseVariableStats(vardata1); : ReleaseVariableStats(vardata2); : : CLAMP_PROBABILITY(selec); 0.00 : 73cf30: f2 0f 10 85 98 fe ff movsd -0x168(%rbp),%xmm0 0.00 : 73cf37: ff 0.00 : 73cf38: f2 0f 11 85 f8 fe ff movsd %xmm0,-0x108(%rbp) 0.00 : 73cf3f: ff 0.00 : 73cf40: e9 75 ff ff ff jmpq 73ceba : : if (!join_is_reversed) : selec = eqjoinsel_semi(operator, &vardata1, &vardata2, : inner_rel); : else : selec = eqjoinsel_semi(get_commutator(operator), 0.00 : 73cf45: 44 89 ff mov %r15d,%edi 0.00 : 73cf48: e8 23 58 03 00 callq 772770 0.00 : 73cf4d: 48 89 d9 mov %rbx,%rcx 0.00 : 73cf50: 89 c7 mov %eax,%edi 0.00 : 73cf52: 4c 89 ea mov %r13,%rdx 0.00 : 73cf55: 4c 89 f6 mov %r14,%rsi 0.00 : 73cf58: e8 f3 f4 ff ff callq 73c450 0.00 : 73cf5d: 66 0f 57 db xorpd %xmm3,%xmm3 0.00 : 73cf61: f2 0f 11 85 f8 fe ff movsd %xmm0,-0x108(%rbp) 0.00 : 73cf68: ff 0.00 : 73cf69: f2 0f 11 9d 98 fe ff movsd %xmm3,-0x168(%rbp) 0.00 : 73cf70: ff 0.00 : 73cf71: e9 f2 fe ff ff jmpq 73ce68 : : selec = (1.0 - nullfrac1) * (1.0 - nullfrac2); : if (nd1 > nd2) : selec /= nd1; : else : selec /= nd2; 0.00 : 73cf76: f2 0f 5e 85 c8 fe ff divsd -0x138(%rbp),%xmm0 0.00 : 73cf7d: ff 0.00 : 73cf7e: f2 0f 11 85 f8 fe ff movsd %xmm0,-0x108(%rbp) 0.00 : 73cf85: ff 0.00 : 73cf86: e9 a1 fe ff ff jmpq 73ce2c : { : case BMS_EMPTY_SET: : /* should not happen */ : break; : case BMS_SINGLETON: : rel = find_base_rel(root, bms_singleton_member(relids)); 0.00 : 73cf8b: 48 89 df mov %rbx,%rdi 0.00 : 73cf8e: e8 9d 5e ea ff callq 5e2e30 0.00 : 73cf93: 4c 89 e7 mov %r12,%rdi 0.00 : 73cf96: 89 c6 mov %eax,%esi 0.00 : 73cf98: e8 63 8b ef ff callq 635b00 0.00 : 73cf9d: 48 89 c3 mov %rax,%rbx 0.00 : 73cfa0: e9 42 ff ff ff jmpq 73cee7 : if (hasmatch1[i]) : matchfreq1 += numbers1[i]; : else : unmatchfreq1 += numbers1[i]; : } : CLAMP_PROBABILITY(matchfreq1); 0.00 : 73cfa5: f2 0f 10 85 98 fe ff movsd -0x168(%rbp),%xmm0 0.00 : 73cfac: ff 0.00 : 73cfad: f2 0f 11 95 b8 fe ff movsd %xmm2,-0x148(%rbp) 0.00 : 73cfb4: ff 0.00 : 73cfb5: f2 0f 11 85 f0 fe ff movsd %xmm0,-0x110(%rbp) 0.00 : 73cfbc: ff 0.00 : 73cfbd: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 73cfc1: 77 1d ja 73cfe0 0.00 : 73cfc3: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73cfc7: f2 0f c2 c1 05 cmpnltsd %xmm1,%xmm0 0.00 : 73cfcc: 66 0f 54 c8 andpd %xmm0,%xmm1 0.00 : 73cfd0: 66 0f 55 c4 andnpd %xmm4,%xmm0 0.00 : 73cfd4: 66 0f 56 c1 orpd %xmm1,%xmm0 0.00 : 73cfd8: f2 0f 11 85 f0 fe ff movsd %xmm0,-0x110(%rbp) 0.00 : 73cfdf: ff : CLAMP_PROBABILITY(unmatchfreq1); 0.00 : 73cfe0: f2 0f 10 8d 98 fe ff movsd -0x168(%rbp),%xmm1 0.00 : 73cfe7: ff 0.00 : 73cfe8: 66 0f 2e ca ucomisd %xmm2,%xmm1 0.00 : 73cfec: 0f 87 53 03 00 00 ja 73d345 0.00 : 73cff2: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73cff6: f2 0f 10 8d b8 fe ff movsd -0x148(%rbp),%xmm1 0.00 : 73cffd: ff 0.00 : 73cffe: f2 0f c2 c2 05 cmpnltsd %xmm2,%xmm0 0.00 : 73d003: 66 0f 54 c8 andpd %xmm0,%xmm1 0.00 : 73d007: 66 0f 55 c4 andnpd %xmm4,%xmm0 0.00 : 73d00b: 66 0f 56 c1 orpd %xmm1,%xmm0 0.00 : 73d00f: f2 0f 11 85 b8 fe ff movsd %xmm0,-0x148(%rbp) 0.00 : 73d016: ff : matchfreq2 = unmatchfreq2 = 0.0; : for (i = 0; i < nvalues2; i++) 0.00 : 73d017: 8b 4d c0 mov -0x40(%rbp),%ecx 0.00 : 73d01a: 85 c9 test %ecx,%ecx 0.00 : 73d01c: 0f 8e 63 03 00 00 jle 73d385 : { : if (hasmatch2[i]) : matchfreq2 += numbers2[i]; 0.00 : 73d022: 66 0f 57 db xorpd %xmm3,%xmm3 0.00 : 73d026: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 73d02a: 31 c0 xor %eax,%eax 0.00 : 73d02c: 66 0f 28 d3 movapd %xmm3,%xmm2 0.00 : 73d030: eb 1a jmp 73d04c 0.00 : 73d032: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73d038: f3 0f 10 04 82 movss (%rdx,%rax,4),%xmm0 0.00 : 73d03d: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73d040: f2 0f 58 d8 addsd %xmm0,%xmm3 : else : unmatchfreq2 += numbers2[i]; 0.00 : 73d044: 48 83 c0 01 add $0x1,%rax : unmatchfreq1 += numbers1[i]; : } : CLAMP_PROBABILITY(matchfreq1); : CLAMP_PROBABILITY(unmatchfreq1); : matchfreq2 = unmatchfreq2 = 0.0; : for (i = 0; i < nvalues2; i++) 0.00 : 73d048: 39 c1 cmp %eax,%ecx 0.00 : 73d04a: 7e 15 jle 73d061 : { : if (hasmatch2[i]) 0.00 : 73d04c: 41 80 3c 07 00 cmpb $0x0,(%r15,%rax,1) 0.00 : 73d051: 75 e5 jne 73d038 : matchfreq2 += numbers2[i]; : else : unmatchfreq2 += numbers2[i]; 0.00 : 73d053: f3 0f 10 04 82 movss (%rdx,%rax,4),%xmm0 0.00 : 73d058: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73d05b: f2 0f 58 d0 addsd %xmm0,%xmm2 0.00 : 73d05f: eb e3 jmp 73d044 : } : CLAMP_PROBABILITY(matchfreq2); 0.00 : 73d061: f2 0f 10 85 98 fe ff movsd -0x168(%rbp),%xmm0 0.00 : 73d068: ff 0.00 : 73d069: 66 0f 2e c3 ucomisd %xmm3,%xmm0 0.00 : 73d06d: 0f 87 c1 02 00 00 ja 73d334 0.00 : 73d073: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73d077: f2 0f 11 95 b0 fe ff movsd %xmm2,-0x150(%rbp) 0.00 : 73d07e: ff 0.00 : 73d07f: 66 0f 28 cb movapd %xmm3,%xmm1 0.00 : 73d083: f2 0f c2 c3 05 cmpnltsd %xmm3,%xmm0 0.00 : 73d088: 66 0f 28 d8 movapd %xmm0,%xmm3 0.00 : 73d08c: 66 0f 54 c8 andpd %xmm0,%xmm1 0.00 : 73d090: 66 0f 55 dc andnpd %xmm4,%xmm3 0.00 : 73d094: 66 0f 56 d9 orpd %xmm1,%xmm3 : CLAMP_PROBABILITY(unmatchfreq2); 0.00 : 73d098: f2 0f 10 8d 98 fe ff movsd -0x168(%rbp),%xmm1 0.00 : 73d09f: ff 0.00 : 73d0a0: 66 0f 2e ca ucomisd %xmm2,%xmm1 0.00 : 73d0a4: 0f 87 75 02 00 00 ja 73d31f 0.00 : 73d0aa: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73d0ae: f2 0f 10 8d b0 fe ff movsd -0x150(%rbp),%xmm1 0.00 : 73d0b5: ff 0.00 : 73d0b6: f2 0f c2 c2 05 cmpnltsd %xmm2,%xmm0 0.00 : 73d0bb: 66 0f 54 c8 andpd %xmm0,%xmm1 0.00 : 73d0bf: 66 0f 55 c4 andnpd %xmm4,%xmm0 0.00 : 73d0c3: 66 0f 56 c1 orpd %xmm1,%xmm0 0.00 : 73d0c7: f2 0f 11 85 b0 fe ff movsd %xmm0,-0x150(%rbp) 0.00 : 73d0ce: ff : pfree(hasmatch1); 0.00 : 73d0cf: 48 8b bd e0 fe ff ff mov -0x120(%rbp),%rdi 0.00 : 73d0d6: f2 0f 11 9d 80 fe ff movsd %xmm3,-0x180(%rbp) 0.00 : 73d0dd: ff 0.00 : 73d0de: f2 0f 11 a5 70 fe ff movsd %xmm4,-0x190(%rbp) 0.00 : 73d0e5: ff 0.00 : 73d0e6: e8 95 ba 05 00 callq 798b80 : pfree(hasmatch2); 0.00 : 73d0eb: 4c 89 ff mov %r15,%rdi 0.00 : 73d0ee: e8 8d ba 05 00 callq 798b80 : : /* : * Compute total frequency of non-null values that are not in the MCV : * lists. : */ : otherfreq1 = 1.0 - nullfrac1 - matchfreq1 - unmatchfreq1; 0.00 : 73d0f3: f2 0f 10 a5 70 fe ff movsd -0x190(%rbp),%xmm4 0.00 : 73d0fa: ff 0.00 : 73d0fb: f3 0f 10 85 ec fe ff movss -0x114(%rbp),%xmm0 0.00 : 73d102: ff : otherfreq2 = 1.0 - nullfrac2 - matchfreq2 - unmatchfreq2; 0.00 : 73d103: f2 0f 10 9d 80 fe ff movsd -0x180(%rbp),%xmm3 0.00 : 73d10a: ff : : /* : * Compute total frequency of non-null values that are not in the MCV : * lists. : */ : otherfreq1 = 1.0 - nullfrac1 - matchfreq1 - unmatchfreq1; 0.00 : 73d10b: 66 0f 28 d4 movapd %xmm4,%xmm2 0.00 : 73d10f: 0f 5a c0 cvtps2pd %xmm0,%xmm0 : otherfreq2 = 1.0 - nullfrac2 - matchfreq2 - unmatchfreq2; 0.00 : 73d112: 66 0f 28 cc movapd %xmm4,%xmm1 : : /* : * Compute total frequency of non-null values that are not in the MCV : * lists. : */ : otherfreq1 = 1.0 - nullfrac1 - matchfreq1 - unmatchfreq1; 0.00 : 73d116: f2 0f 5c d0 subsd %xmm0,%xmm2 : otherfreq2 = 1.0 - nullfrac2 - matchfreq2 - unmatchfreq2; 0.00 : 73d11a: f3 0f 10 85 e8 fe ff movss -0x118(%rbp),%xmm0 0.00 : 73d121: ff 0.00 : 73d122: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73d125: f2 0f 5c c8 subsd %xmm0,%xmm1 : : /* : * Compute total frequency of non-null values that are not in the MCV : * lists. : */ : otherfreq1 = 1.0 - nullfrac1 - matchfreq1 - unmatchfreq1; 0.00 : 73d129: f2 0f 5c 95 f0 fe ff subsd -0x110(%rbp),%xmm2 0.00 : 73d130: ff : otherfreq2 = 1.0 - nullfrac2 - matchfreq2 - unmatchfreq2; 0.00 : 73d131: f2 0f 5c cb subsd %xmm3,%xmm1 : CLAMP_PROBABILITY(otherfreq1); 0.00 : 73d135: f2 0f 10 9d 98 fe ff movsd -0x168(%rbp),%xmm3 0.00 : 73d13c: ff : : /* : * Compute total frequency of non-null values that are not in the MCV : * lists. : */ : otherfreq1 = 1.0 - nullfrac1 - matchfreq1 - unmatchfreq1; 0.00 : 73d13d: f2 0f 5c 95 b8 fe ff subsd -0x148(%rbp),%xmm2 0.00 : 73d144: ff : otherfreq2 = 1.0 - nullfrac2 - matchfreq2 - unmatchfreq2; 0.00 : 73d145: f2 0f 5c 8d b0 fe ff subsd -0x150(%rbp),%xmm1 0.00 : 73d14c: ff : CLAMP_PROBABILITY(otherfreq1); 0.00 : 73d14d: 66 0f 2e da ucomisd %xmm2,%xmm3 0.00 : 73d151: 0f 87 a2 01 00 00 ja 73d2f9 0.00 : 73d157: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73d15b: f2 0f 5d c2 minsd %xmm2,%xmm0 0.00 : 73d15f: 66 0f 28 d0 movapd %xmm0,%xmm2 : CLAMP_PROBABILITY(otherfreq2); 0.00 : 73d163: f2 0f 10 9d 98 fe ff movsd -0x168(%rbp),%xmm3 0.00 : 73d16a: ff 0.00 : 73d16b: 66 0f 2e d9 ucomisd %xmm1,%xmm3 0.00 : 73d16f: 0f 87 7b 01 00 00 ja 73d2f0 0.00 : 73d175: f2 0f 5d e1 minsd %xmm1,%xmm4 0.00 : 73d179: 66 0f 28 cc movapd %xmm4,%xmm1 : * relation 2's non-MCV population, plus non-MCV values that are : * assumed to match against random members of relation 2's unmatched : * MCVs plus non-MCV values. : */ : totalsel1 = matchprodfreq; : if (nd2 > nvalues2) 0.00 : 73d17d: f2 0f 10 a5 a0 fe ff movsd -0x160(%rbp),%xmm4 0.00 : 73d184: ff 0.00 : 73d185: f2 0f 2a 45 c0 cvtsi2sdl -0x40(%rbp),%xmm0 0.00 : 73d18a: f2 0f 10 9d c8 fe ff movsd -0x138(%rbp),%xmm3 0.00 : 73d191: ff 0.00 : 73d192: f2 0f 11 a5 f8 fe ff movsd %xmm4,-0x108(%rbp) 0.00 : 73d199: ff 0.00 : 73d19a: 66 0f 2e d8 ucomisd %xmm0,%xmm3 0.00 : 73d19e: 76 2c jbe 73d1cc : totalsel1 += unmatchfreq1 * otherfreq2 / (nd2 - nvalues2); 0.00 : 73d1a0: f2 0f 10 a5 b8 fe ff movsd -0x148(%rbp),%xmm4 0.00 : 73d1a7: ff 0.00 : 73d1a8: f2 0f 10 9d c8 fe ff movsd -0x138(%rbp),%xmm3 0.00 : 73d1af: ff 0.00 : 73d1b0: f2 0f 59 e1 mulsd %xmm1,%xmm4 0.00 : 73d1b4: f2 0f 5c d8 subsd %xmm0,%xmm3 0.00 : 73d1b8: f2 0f 5e e3 divsd %xmm3,%xmm4 0.00 : 73d1bc: f2 0f 58 a5 a0 fe ff addsd -0x160(%rbp),%xmm4 0.00 : 73d1c3: ff 0.00 : 73d1c4: f2 0f 11 a5 f8 fe ff movsd %xmm4,-0x108(%rbp) 0.00 : 73d1cb: ff : if (nd2 > nmatches) 0.00 : 73d1cc: f2 0f 10 a5 c8 fe ff movsd -0x138(%rbp),%xmm4 0.00 : 73d1d3: ff 0.00 : 73d1d4: f2 0f 2a 9d a8 fe ff cvtsi2sdl -0x158(%rbp),%xmm3 0.00 : 73d1db: ff 0.00 : 73d1dc: 66 0f 2e e3 ucomisd %xmm3,%xmm4 0.00 : 73d1e0: 76 30 jbe 73d212 : totalsel1 += otherfreq1 * (otherfreq2 + unmatchfreq2) / 0.00 : 73d1e2: f2 0f 10 85 b0 fe ff movsd -0x150(%rbp),%xmm0 0.00 : 73d1e9: ff 0.00 : 73d1ea: f2 0f 10 a5 c8 fe ff movsd -0x138(%rbp),%xmm4 0.00 : 73d1f1: ff 0.00 : 73d1f2: f2 0f 58 c1 addsd %xmm1,%xmm0 0.00 : 73d1f6: f2 0f 5c e3 subsd %xmm3,%xmm4 0.00 : 73d1fa: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 73d1fe: f2 0f 5e c4 divsd %xmm4,%xmm0 0.00 : 73d202: f2 0f 58 85 f8 fe ff addsd -0x108(%rbp),%xmm0 0.00 : 73d209: ff 0.00 : 73d20a: f2 0f 11 85 f8 fe ff movsd %xmm0,-0x108(%rbp) 0.00 : 73d211: ff : (nd2 - nmatches); : /* Same estimate from the point of view of relation 2. */ : totalsel2 = matchprodfreq; : if (nd1 > nvalues1) 0.00 : 73d212: f2 0f 10 a5 d0 fe ff movsd -0x130(%rbp),%xmm4 0.00 : 73d219: ff 0.00 : 73d21a: f2 0f 2a 45 c8 cvtsi2sdl -0x38(%rbp),%xmm0 0.00 : 73d21f: 66 0f 2e e0 ucomisd %xmm0,%xmm4 0.00 : 73d223: 76 44 jbe 73d269 : totalsel2 += unmatchfreq2 * otherfreq1 / (nd1 - nvalues1); 0.00 : 73d225: f2 0f 10 a5 b0 fe ff movsd -0x150(%rbp),%xmm4 0.00 : 73d22c: ff 0.00 : 73d22d: f2 0f 59 e2 mulsd %xmm2,%xmm4 0.00 : 73d231: f2 0f 11 a5 b0 fe ff movsd %xmm4,-0x150(%rbp) 0.00 : 73d238: ff 0.00 : 73d239: f2 0f 10 a5 d0 fe ff movsd -0x130(%rbp),%xmm4 0.00 : 73d240: ff 0.00 : 73d241: f2 0f 5c e0 subsd %xmm0,%xmm4 0.00 : 73d245: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 73d249: f2 0f 10 a5 b0 fe ff movsd -0x150(%rbp),%xmm4 0.00 : 73d250: ff 0.00 : 73d251: f2 0f 5e e0 divsd %xmm0,%xmm4 0.00 : 73d255: f2 0f 10 85 a0 fe ff movsd -0x160(%rbp),%xmm0 0.00 : 73d25c: ff 0.00 : 73d25d: f2 0f 58 c4 addsd %xmm4,%xmm0 0.00 : 73d261: f2 0f 11 85 a0 fe ff movsd %xmm0,-0x160(%rbp) 0.00 : 73d268: ff : if (nd1 > nmatches) 0.00 : 73d269: f2 0f 10 a5 d0 fe ff movsd -0x130(%rbp),%xmm4 0.00 : 73d270: ff 0.00 : 73d271: 66 0f 2e e3 ucomisd %xmm3,%xmm4 0.00 : 73d275: 76 34 jbe 73d2ab : totalsel2 += otherfreq2 * (otherfreq1 + unmatchfreq1) / 0.00 : 73d277: f2 0f 58 95 b8 fe ff addsd -0x148(%rbp),%xmm2 0.00 : 73d27e: ff 0.00 : 73d27f: f2 0f 10 85 d0 fe ff movsd -0x130(%rbp),%xmm0 0.00 : 73d286: ff 0.00 : 73d287: f2 0f 5c c3 subsd %xmm3,%xmm0 0.00 : 73d28b: f2 0f 59 ca mulsd %xmm2,%xmm1 0.00 : 73d28f: f2 0f 11 95 b8 fe ff movsd %xmm2,-0x148(%rbp) 0.00 : 73d296: ff 0.00 : 73d297: f2 0f 5e c8 divsd %xmm0,%xmm1 0.00 : 73d29b: f2 0f 58 8d a0 fe ff addsd -0x160(%rbp),%xmm1 0.00 : 73d2a2: ff 0.00 : 73d2a3: f2 0f 11 8d a0 fe ff movsd %xmm1,-0x160(%rbp) 0.00 : 73d2aa: ff : * Use the smaller of the two estimates. This can be justified in : * essentially the same terms as given below for the no-stats case: to : * a first approximation, we are estimating from the point of view of : * the relation with smaller nd. : */ : selec = (totalsel1 < totalsel2) ? totalsel1 : totalsel2; 0.00 : 73d2ab: f2 0f 10 8d f8 fe ff movsd -0x108(%rbp),%xmm1 0.00 : 73d2b2: ff 0.00 : 73d2b3: f2 0f 5d 8d a0 fe ff minsd -0x160(%rbp),%xmm1 0.00 : 73d2ba: ff 0.00 : 73d2bb: f2 0f 11 8d f8 fe ff movsd %xmm1,-0x108(%rbp) 0.00 : 73d2c2: ff : else : selec /= nd2; : } : : if (have_mcvs1) : free_attstatsslot(vardata1->atttype, values1, nvalues1, 0.00 : 73d2c3: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 73d2c7: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73d2ca: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 73d2ce: 8b 7d 84 mov -0x7c(%rbp),%edi 0.00 : 73d2d1: 44 8b 45 c4 mov -0x3c(%rbp),%r8d 0.00 : 73d2d5: e8 a6 59 03 00 callq 772c80 0.00 : 73d2da: e9 62 fb ff ff jmpq 73ce41 : * : * XXX Can we be smarter if we have an MCV list for just one side? It : * seems that if we assume equal distribution for the other side, we : * end up with the same answer anyway. : */ : double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; 0.00 : 73d2df: f2 0f 10 25 71 1e 07 movsd 0x71e71(%rip),%xmm4 # 7af158 <__func__.15777+0x10> 0.00 : 73d2e6: 00 0.00 : 73d2e7: 66 0f 28 cc movapd %xmm4,%xmm1 0.00 : 73d2eb: e9 f9 fa ff ff jmpq 73cde9 : * lists. : */ : otherfreq1 = 1.0 - nullfrac1 - matchfreq1 - unmatchfreq1; : otherfreq2 = 1.0 - nullfrac2 - matchfreq2 - unmatchfreq2; : CLAMP_PROBABILITY(otherfreq1); : CLAMP_PROBABILITY(otherfreq2); 0.00 : 73d2f0: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 73d2f4: e9 84 fe ff ff jmpq 73d17d : * Compute total frequency of non-null values that are not in the MCV : * lists. : */ : otherfreq1 = 1.0 - nullfrac1 - matchfreq1 - unmatchfreq1; : otherfreq2 = 1.0 - nullfrac2 - matchfreq2 - unmatchfreq2; : CLAMP_PROBABILITY(otherfreq1); 0.00 : 73d2f9: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 73d2fd: e9 61 fe ff ff jmpq 73d163 : nmatches++; : break; : } : } : } : CLAMP_PROBABILITY(matchprodfreq); 0.00 : 73d302: f2 0f 10 8d 98 fe ff movsd -0x168(%rbp),%xmm1 0.00 : 73d309: ff 0.00 : 73d30a: f2 0f 10 25 46 1e 07 movsd 0x71e46(%rip),%xmm4 # 7af158 <__func__.15777+0x10> 0.00 : 73d311: 00 0.00 : 73d312: f2 0f 11 8d a0 fe ff movsd %xmm1,-0x160(%rbp) 0.00 : 73d319: ff 0.00 : 73d31a: e9 cb f9 ff ff jmpq 73ccea : matchfreq2 += numbers2[i]; : else : unmatchfreq2 += numbers2[i]; : } : CLAMP_PROBABILITY(matchfreq2); : CLAMP_PROBABILITY(unmatchfreq2); 0.00 : 73d31f: f2 0f 10 85 98 fe ff movsd -0x168(%rbp),%xmm0 0.00 : 73d326: ff 0.00 : 73d327: f2 0f 11 85 b0 fe ff movsd %xmm0,-0x150(%rbp) 0.00 : 73d32e: ff 0.00 : 73d32f: e9 9b fd ff ff jmpq 73d0cf : if (hasmatch2[i]) : matchfreq2 += numbers2[i]; : else : unmatchfreq2 += numbers2[i]; : } : CLAMP_PROBABILITY(matchfreq2); 0.00 : 73d334: f2 0f 11 95 b0 fe ff movsd %xmm2,-0x150(%rbp) 0.00 : 73d33b: ff 0.00 : 73d33c: 66 0f 57 db xorpd %xmm3,%xmm3 0.00 : 73d340: e9 53 fd ff ff jmpq 73d098 : matchfreq1 += numbers1[i]; : else : unmatchfreq1 += numbers1[i]; : } : CLAMP_PROBABILITY(matchfreq1); : CLAMP_PROBABILITY(unmatchfreq1); 0.00 : 73d345: f2 0f 10 9d 98 fe ff movsd -0x168(%rbp),%xmm3 0.00 : 73d34c: ff 0.00 : 73d34d: f2 0f 11 9d b8 fe ff movsd %xmm3,-0x148(%rbp) 0.00 : 73d354: ff 0.00 : 73d355: e9 bd fc ff ff jmpq 73d017 : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : matchprodfreq = 0.0; : nmatches = 0; : for (i = 0; i < nvalues1; i++) 0.00 : 73d35a: 66 0f 57 db xorpd %xmm3,%xmm3 0.00 : 73d35e: c7 85 a8 fe ff ff 00 movl $0x0,-0x158(%rbp) 0.00 : 73d365: 00 00 00 0.00 : 73d368: f2 0f 10 25 e8 1d 07 movsd 0x71de8(%rip),%xmm4 # 7af158 <__func__.15777+0x10> 0.00 : 73d36f: 00 0.00 : 73d370: f2 0f 11 9d 98 fe ff movsd %xmm3,-0x168(%rbp) 0.00 : 73d377: ff 0.00 : 73d378: f2 0f 11 9d a0 fe ff movsd %xmm3,-0x160(%rbp) 0.00 : 73d37f: ff 0.00 : 73d380: e9 65 f9 ff ff jmpq 73ccea : unmatchfreq1 += numbers1[i]; : } : CLAMP_PROBABILITY(matchfreq1); : CLAMP_PROBABILITY(unmatchfreq1); : matchfreq2 = unmatchfreq2 = 0.0; : for (i = 0; i < nvalues2; i++) 0.00 : 73d385: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 73d389: 66 0f 28 da movapd %xmm2,%xmm3 0.00 : 73d38d: f2 0f 11 95 b0 fe ff movsd %xmm2,-0x150(%rbp) 0.00 : 73d394: ff 0.00 : 73d395: e9 fe fc ff ff jmpq 73d098 : } : } : CLAMP_PROBABILITY(matchprodfreq); : /* Sum up frequencies of matched and unmatched MCVs */ : matchfreq1 = unmatchfreq1 = 0.0; : for (i = 0; i < nvalues1; i++) 0.00 : 73d39a: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 73d39e: f2 0f 11 95 f0 fe ff movsd %xmm2,-0x110(%rbp) 0.00 : 73d3a5: ff 0.00 : 73d3a6: f2 0f 11 95 b8 fe ff movsd %xmm2,-0x148(%rbp) 0.00 : 73d3ad: ff 0.00 : 73d3ae: e9 2d fc ff ff jmpq 73cfe0 0.00 : 73d3b3: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 73d3b7: f2 0f 11 85 98 fe ff movsd %xmm0,-0x168(%rbp) 0.00 : 73d3be: ff 0.00 : 73d3bf: e9 ff fe ff ff jmpq 73d2c3 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 24.00 ??:0 20.00 ??:0 12.00 ??:0 12.00 ??:0 8.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000113e60 <__strcmp_sse42>: ??:0 24.00 : 113e60: 89 f1 mov %esi,%ecx ??:0 4.00 : 113e62: 89 f8 mov %edi,%eax 0.00 : 113e64: 48 83 e1 3f and $0x3f,%rcx 4.00 : 113e68: 48 83 e0 3f and $0x3f,%rax 0.00 : 113e6c: 83 f9 30 cmp $0x30,%ecx 0.00 : 113e6f: 77 3f ja 113eb0 <__strcmp_sse42+0x50> 0.00 : 113e71: 83 f8 30 cmp $0x30,%eax 0.00 : 113e74: 77 3a ja 113eb0 <__strcmp_sse42+0x50> ??:0 20.00 : 113e76: f3 0f 6f 0f movdqu (%rdi),%xmm1 12.00 : 113e7a: f3 0f 6f 16 movdqu (%rsi),%xmm2 0.00 : 113e7e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 113e82: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 113e86: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 ??:0 4.00 : 113e8a: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 113e8e: 66 0f d7 d1 pmovmskb %xmm1,%edx 4.00 : 113e92: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 113e98: 0f 85 32 0e 00 00 jne 114cd0 <__strcmp_sse42+0xe70> 0.00 : 113e9e: 48 83 c6 10 add $0x10,%rsi 0.00 : 113ea2: 48 83 c7 10 add $0x10,%rdi 0.00 : 113ea6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 113ead: 00 00 00 0.00 : 113eb0: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 113eb4: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 113eb8: ba ff ff 00 00 mov $0xffff,%edx 0.00 : 113ebd: 45 31 c0 xor %r8d,%r8d 0.00 : 113ec0: 83 e1 0f and $0xf,%ecx 0.00 : 113ec3: 83 e0 0f and $0xf,%eax 0.00 : 113ec6: 39 c1 cmp %eax,%ecx 0.00 : 113ec8: 74 26 je 113ef0 <__strcmp_sse42+0x90> 0.00 : 113eca: 77 07 ja 113ed3 <__strcmp_sse42+0x73> 0.00 : 113ecc: 41 89 d0 mov %edx,%r8d 0.00 : 113ecf: 91 xchg %eax,%ecx 0.00 : 113ed0: 48 87 f7 xchg %rsi,%rdi 0.00 : 113ed3: 4c 8d 48 0f lea 0xf(%rax),%r9 0.00 : 113ed7: 49 29 c9 sub %rcx,%r9 0.00 : 113eda: 4c 8d 15 7f fc 02 00 lea 0x2fc7f(%rip),%r10 # 143b60 0.00 : 113ee1: 4f 63 0c 8a movslq (%r10,%r9,4),%r9 0.00 : 113ee5: 4f 8d 14 0a lea (%r10,%r9,1),%r10 0.00 : 113ee9: 41 ff e2 jmpq *%r10 0.00 : 113eec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 113ef0: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 113ef4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 113ef8: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 113efc: 66 0f 74 0f pcmpeqb (%rdi),%xmm1 0.00 : 113f00: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 113f04: 66 44 0f d7 c9 pmovmskb %xmm1,%r9d 0.00 : 113f09: d3 ea shr %cl,%edx 0.00 : 113f0b: 41 d3 e9 shr %cl,%r9d 0.00 : 113f0e: 44 29 ca sub %r9d,%edx 0.00 : 113f11: 0f 85 a4 0d 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 113f17: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 113f1e: 49 c7 c1 10 00 00 00 mov $0x10,%r9 0.00 : 113f25: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 113f29: 48 89 ca mov %rcx,%rdx 0.00 : 113f2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 113f30: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 113f35: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 113f3c: 48 8d 52 10 lea 0x10(%rdx),%rdx 0.00 : 113f40: 76 1e jbe 113f60 <__strcmp_sse42+0x100> 0.00 : 113f42: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 113f47: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 113f4e: 48 8d 52 10 lea 0x10(%rdx),%rdx 0.00 : 113f52: 76 0c jbe 113f60 <__strcmp_sse42+0x100> 0.00 : 113f54: eb da jmp 113f30 <__strcmp_sse42+0xd0> 0.00 : 113f56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 113f5d: 00 00 00 0.00 : 113f60: 0f 83 79 0d 00 00 jae 114cdf <__strcmp_sse42+0xe7f> 0.00 : 113f66: 48 8d 4c 0a f0 lea -0x10(%rdx,%rcx,1),%rcx 0.00 : 113f6b: 0f b6 04 0f movzbl (%rdi,%rcx,1),%eax 0.00 : 113f6f: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : 113f73: 29 d0 sub %edx,%eax 0.00 : 113f75: c3 retq 0.00 : 113f76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 113f7d: 00 00 00 0.00 : 113f80: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 113f84: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 113f88: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 113f8c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 113f90: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 113f95: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 113f99: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 113f9d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 113fa2: d3 ea shr %cl,%edx 0.00 : 113fa4: 41 d3 e9 shr %cl,%r9d 0.00 : 113fa7: 44 29 ca sub %r9d,%edx 0.00 : 113faa: 0f 85 0b 0d 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 113fb0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 113fb4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 113fb8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 113fbf: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 113fc5: 4c 8d 57 01 lea 0x1(%rdi),%r10 0.00 : 113fc9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 113fd0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 113fd7: 48 89 ca mov %rcx,%rdx 0.00 : 113fda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 113fe0: 49 83 c2 10 add $0x10,%r10 0.00 : 113fe4: 7f 4a jg 114030 <__strcmp_sse42+0x1d0> 0.00 : 113fe6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 113feb: 66 0f 3a 0f 44 17 f0 palignr $0x1,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 113ff2: 01 0.00 : 113ff3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 113ffa: 0f 86 a0 0c 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114000: 48 83 c2 10 add $0x10,%rdx 0.00 : 114004: 49 83 c2 10 add $0x10,%r10 0.00 : 114008: 7f 26 jg 114030 <__strcmp_sse42+0x1d0> 0.00 : 11400a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11400f: 66 0f 3a 0f 44 17 f0 palignr $0x1,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114016: 01 0.00 : 114017: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11401e: 0f 86 7c 0c 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114024: 48 83 c2 10 add $0x10,%rdx 0.00 : 114028: eb b6 jmp 113fe0 <__strcmp_sse42+0x180> 0.00 : 11402a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114030: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114037: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11403d: 66 0f 73 d8 01 psrldq $0x1,%xmm0 0.00 : 114042: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114048: 83 f9 0e cmp $0xe,%ecx 0.00 : 11404b: 77 bd ja 11400a <__strcmp_sse42+0x1aa> 0.00 : 11404d: e9 3b 0c 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114052: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114059: 1f 84 00 00 00 00 00 0.00 : 114060: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114064: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114068: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11406c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114070: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 114075: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114079: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11407d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114082: d3 ea shr %cl,%edx 0.00 : 114084: 41 d3 e9 shr %cl,%r9d 0.00 : 114087: 44 29 ca sub %r9d,%edx 0.00 : 11408a: 0f 85 2b 0c 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114090: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114094: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114098: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11409f: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 1140a5: 4c 8d 57 02 lea 0x2(%rdi),%r10 0.00 : 1140a9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1140b0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1140b7: 48 89 ca mov %rcx,%rdx 0.00 : 1140ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1140c0: 49 83 c2 10 add $0x10,%r10 0.00 : 1140c4: 7f 4a jg 114110 <__strcmp_sse42+0x2b0> 0.00 : 1140c6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1140cb: 66 0f 3a 0f 44 17 f0 palignr $0x2,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1140d2: 02 0.00 : 1140d3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1140da: 0f 86 c0 0b 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1140e0: 48 83 c2 10 add $0x10,%rdx 0.00 : 1140e4: 49 83 c2 10 add $0x10,%r10 0.00 : 1140e8: 7f 26 jg 114110 <__strcmp_sse42+0x2b0> 0.00 : 1140ea: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1140ef: 66 0f 3a 0f 44 17 f0 palignr $0x2,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1140f6: 02 0.00 : 1140f7: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1140fe: 0f 86 9c 0b 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114104: 48 83 c2 10 add $0x10,%rdx 0.00 : 114108: eb b6 jmp 1140c0 <__strcmp_sse42+0x260> 0.00 : 11410a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114110: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114117: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11411d: 66 0f 73 d8 02 psrldq $0x2,%xmm0 0.00 : 114122: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114128: 83 f9 0d cmp $0xd,%ecx 0.00 : 11412b: 77 99 ja 1140c6 <__strcmp_sse42+0x266> 0.00 : 11412d: e9 5b 0b 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114132: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114139: 1f 84 00 00 00 00 00 0.00 : 114140: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114144: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114148: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11414c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114150: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 114155: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114159: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11415d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114162: d3 ea shr %cl,%edx 0.00 : 114164: 41 d3 e9 shr %cl,%r9d 0.00 : 114167: 44 29 ca sub %r9d,%edx 0.00 : 11416a: 0f 85 4b 0b 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114170: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114174: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114178: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11417f: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 114185: 4c 8d 57 03 lea 0x3(%rdi),%r10 0.00 : 114189: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114190: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114197: 48 89 ca mov %rcx,%rdx 0.00 : 11419a: 49 83 c2 10 add $0x10,%r10 0.00 : 11419e: 7f 50 jg 1141f0 <__strcmp_sse42+0x390> 0.00 : 1141a0: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1141a5: 66 0f 3a 0f 44 17 f0 palignr $0x3,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1141ac: 03 0.00 : 1141ad: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1141b4: 0f 86 e6 0a 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1141ba: 48 83 c2 10 add $0x10,%rdx 0.00 : 1141be: 49 83 c2 10 add $0x10,%r10 0.00 : 1141c2: 7f 2c jg 1141f0 <__strcmp_sse42+0x390> 0.00 : 1141c4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1141c9: 66 0f 3a 0f 44 17 f0 palignr $0x3,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1141d0: 03 0.00 : 1141d1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1141d8: 0f 86 c2 0a 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1141de: 48 83 c2 10 add $0x10,%rdx 0.00 : 1141e2: eb b6 jmp 11419a <__strcmp_sse42+0x33a> 0.00 : 1141e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1141eb: 00 00 00 00 00 0.00 : 1141f0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1141f7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1141fd: 66 0f 73 d8 03 psrldq $0x3,%xmm0 0.00 : 114202: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114208: 83 f9 0c cmp $0xc,%ecx 0.00 : 11420b: 77 93 ja 1141a0 <__strcmp_sse42+0x340> 0.00 : 11420d: e9 7b 0a 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114212: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114219: 1f 84 00 00 00 00 00 0.00 : 114220: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114224: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114228: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11422c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114230: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 114235: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114239: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11423d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114242: d3 ea shr %cl,%edx 0.00 : 114244: 41 d3 e9 shr %cl,%r9d 4.00 : 114247: 44 29 ca sub %r9d,%edx 0.00 : 11424a: 0f 85 6b 0a 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114250: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114254: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114258: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11425f: 41 b9 04 00 00 00 mov $0x4,%r9d 0.00 : 114265: 4c 8d 57 04 lea 0x4(%rdi),%r10 0.00 : 114269: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114270: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114277: 48 89 ca mov %rcx,%rdx 0.00 : 11427a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114280: 49 83 c2 10 add $0x10,%r10 0.00 : 114284: 7f 4a jg 1142d0 <__strcmp_sse42+0x470> 0.00 : 114286: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11428b: 66 0f 3a 0f 44 17 f0 palignr $0x4,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114292: 04 0.00 : 114293: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11429a: 0f 86 00 0a 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1142a0: 48 83 c2 10 add $0x10,%rdx 0.00 : 1142a4: 49 83 c2 10 add $0x10,%r10 0.00 : 1142a8: 7f 26 jg 1142d0 <__strcmp_sse42+0x470> 0.00 : 1142aa: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1142af: 66 0f 3a 0f 44 17 f0 palignr $0x4,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1142b6: 04 0.00 : 1142b7: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1142be: 0f 86 dc 09 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1142c4: 48 83 c2 10 add $0x10,%rdx 0.00 : 1142c8: eb b6 jmp 114280 <__strcmp_sse42+0x420> 0.00 : 1142ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1142d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1142d7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1142dd: 66 0f 73 d8 04 psrldq $0x4,%xmm0 0.00 : 1142e2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1142e8: 83 f9 0b cmp $0xb,%ecx 0.00 : 1142eb: 77 99 ja 114286 <__strcmp_sse42+0x426> 0.00 : 1142ed: e9 9b 09 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 1142f2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1142f9: 1f 84 00 00 00 00 00 0.00 : 114300: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114304: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114308: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11430c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114310: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 114315: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114319: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11431d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114322: d3 ea shr %cl,%edx 0.00 : 114324: 41 d3 e9 shr %cl,%r9d 0.00 : 114327: 44 29 ca sub %r9d,%edx 0.00 : 11432a: 0f 85 8b 09 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114330: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114334: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114338: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11433f: 41 b9 05 00 00 00 mov $0x5,%r9d 0.00 : 114345: 4c 8d 57 05 lea 0x5(%rdi),%r10 0.00 : 114349: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114350: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114357: 48 89 ca mov %rcx,%rdx 0.00 : 11435a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114360: 49 83 c2 10 add $0x10,%r10 0.00 : 114364: 7f 4a jg 1143b0 <__strcmp_sse42+0x550> 0.00 : 114366: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11436b: 66 0f 3a 0f 44 17 f0 palignr $0x5,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114372: 05 0.00 : 114373: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11437a: 0f 86 20 09 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114380: 48 83 c2 10 add $0x10,%rdx 0.00 : 114384: 49 83 c2 10 add $0x10,%r10 0.00 : 114388: 7f 26 jg 1143b0 <__strcmp_sse42+0x550> 0.00 : 11438a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11438f: 66 0f 3a 0f 44 17 f0 palignr $0x5,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114396: 05 0.00 : 114397: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11439e: 0f 86 fc 08 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1143a4: 48 83 c2 10 add $0x10,%rdx 0.00 : 1143a8: eb b6 jmp 114360 <__strcmp_sse42+0x500> 0.00 : 1143aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1143b0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1143b7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1143bd: 66 0f 73 d8 05 psrldq $0x5,%xmm0 0.00 : 1143c2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1143c8: 83 f9 0a cmp $0xa,%ecx 0.00 : 1143cb: 77 99 ja 114366 <__strcmp_sse42+0x506> 0.00 : 1143cd: e9 bb 08 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 1143d2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1143d9: 1f 84 00 00 00 00 00 0.00 : 1143e0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1143e4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 1143e8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 1143ec: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 1143f0: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 1143f5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 1143f9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 1143fd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114402: d3 ea shr %cl,%edx 0.00 : 114404: 41 d3 e9 shr %cl,%r9d 0.00 : 114407: 44 29 ca sub %r9d,%edx 0.00 : 11440a: 0f 85 ab 08 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114410: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114414: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114418: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11441f: 41 b9 06 00 00 00 mov $0x6,%r9d 0.00 : 114425: 4c 8d 57 06 lea 0x6(%rdi),%r10 0.00 : 114429: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114430: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114437: 48 89 ca mov %rcx,%rdx 0.00 : 11443a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114440: 49 83 c2 10 add $0x10,%r10 0.00 : 114444: 7f 4a jg 114490 <__strcmp_sse42+0x630> 0.00 : 114446: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11444b: 66 0f 3a 0f 44 17 f0 palignr $0x6,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114452: 06 0.00 : 114453: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11445a: 0f 86 40 08 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114460: 48 83 c2 10 add $0x10,%rdx 0.00 : 114464: 49 83 c2 10 add $0x10,%r10 0.00 : 114468: 7f 26 jg 114490 <__strcmp_sse42+0x630> 0.00 : 11446a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11446f: 66 0f 3a 0f 44 17 f0 palignr $0x6,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114476: 06 0.00 : 114477: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11447e: 0f 86 1c 08 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114484: 48 83 c2 10 add $0x10,%rdx 0.00 : 114488: eb b6 jmp 114440 <__strcmp_sse42+0x5e0> 0.00 : 11448a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114490: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114497: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11449d: 66 0f 73 d8 06 psrldq $0x6,%xmm0 0.00 : 1144a2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1144a8: 83 f9 09 cmp $0x9,%ecx 0.00 : 1144ab: 77 99 ja 114446 <__strcmp_sse42+0x5e6> 0.00 : 1144ad: e9 db 07 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 1144b2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1144b9: 1f 84 00 00 00 00 00 0.00 : 1144c0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1144c4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 1144c8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 1144cc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 1144d0: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 1144d5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 1144d9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 1144dd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 1144e2: d3 ea shr %cl,%edx 0.00 : 1144e4: 41 d3 e9 shr %cl,%r9d 0.00 : 1144e7: 44 29 ca sub %r9d,%edx 0.00 : 1144ea: 0f 85 cb 07 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 1144f0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 1144f4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1144f8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 1144ff: 41 b9 07 00 00 00 mov $0x7,%r9d 0.00 : 114505: 4c 8d 57 07 lea 0x7(%rdi),%r10 0.00 : 114509: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114510: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114517: 48 89 ca mov %rcx,%rdx 0.00 : 11451a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114520: 49 83 c2 10 add $0x10,%r10 0.00 : 114524: 7f 4a jg 114570 <__strcmp_sse42+0x710> 0.00 : 114526: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11452b: 66 0f 3a 0f 44 17 f0 palignr $0x7,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114532: 07 0.00 : 114533: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11453a: 0f 86 60 07 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114540: 48 83 c2 10 add $0x10,%rdx 0.00 : 114544: 49 83 c2 10 add $0x10,%r10 0.00 : 114548: 7f 26 jg 114570 <__strcmp_sse42+0x710> 0.00 : 11454a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11454f: 66 0f 3a 0f 44 17 f0 palignr $0x7,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114556: 07 0.00 : 114557: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11455e: 0f 86 3c 07 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114564: 48 83 c2 10 add $0x10,%rdx 0.00 : 114568: eb b6 jmp 114520 <__strcmp_sse42+0x6c0> 0.00 : 11456a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114570: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114577: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11457d: 66 0f 73 d8 07 psrldq $0x7,%xmm0 0.00 : 114582: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114588: 83 f9 08 cmp $0x8,%ecx 0.00 : 11458b: 77 99 ja 114526 <__strcmp_sse42+0x6c6> 0.00 : 11458d: e9 fb 06 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114592: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114599: 1f 84 00 00 00 00 00 0.00 : 1145a0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1145a4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 1145a8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 1145ac: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 1145b0: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 1145b5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 1145b9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 1145bd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 1145c2: d3 ea shr %cl,%edx 0.00 : 1145c4: 41 d3 e9 shr %cl,%r9d 0.00 : 1145c7: 44 29 ca sub %r9d,%edx 0.00 : 1145ca: 0f 85 eb 06 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 1145d0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 1145d4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1145d8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 1145df: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 1145e5: 4c 8d 57 08 lea 0x8(%rdi),%r10 0.00 : 1145e9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1145f0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1145f7: 48 89 ca mov %rcx,%rdx 0.00 : 1145fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114600: 49 83 c2 10 add $0x10,%r10 0.00 : 114604: 7f 4a jg 114650 <__strcmp_sse42+0x7f0> 0.00 : 114606: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11460b: 66 0f 3a 0f 44 17 f0 palignr $0x8,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114612: 08 0.00 : 114613: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11461a: 0f 86 80 06 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114620: 48 83 c2 10 add $0x10,%rdx 0.00 : 114624: 49 83 c2 10 add $0x10,%r10 0.00 : 114628: 7f 26 jg 114650 <__strcmp_sse42+0x7f0> 0.00 : 11462a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11462f: 66 0f 3a 0f 44 17 f0 palignr $0x8,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114636: 08 0.00 : 114637: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11463e: 0f 86 5c 06 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114644: 48 83 c2 10 add $0x10,%rdx 0.00 : 114648: eb b6 jmp 114600 <__strcmp_sse42+0x7a0> 0.00 : 11464a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114650: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114657: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11465d: 66 0f 73 d8 08 psrldq $0x8,%xmm0 0.00 : 114662: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114668: 83 f9 07 cmp $0x7,%ecx 0.00 : 11466b: 77 99 ja 114606 <__strcmp_sse42+0x7a6> 0.00 : 11466d: e9 1b 06 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114672: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114679: 1f 84 00 00 00 00 00 0.00 : 114680: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114684: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114688: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11468c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114690: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 114695: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114699: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11469d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 1146a2: d3 ea shr %cl,%edx 0.00 : 1146a4: 41 d3 e9 shr %cl,%r9d 0.00 : 1146a7: 44 29 ca sub %r9d,%edx 0.00 : 1146aa: 0f 85 0b 06 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 1146b0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 1146b4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1146b8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 1146bf: 41 b9 09 00 00 00 mov $0x9,%r9d 0.00 : 1146c5: 4c 8d 57 09 lea 0x9(%rdi),%r10 0.00 : 1146c9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1146d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1146d7: 48 89 ca mov %rcx,%rdx 0.00 : 1146da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1146e0: 49 83 c2 10 add $0x10,%r10 0.00 : 1146e4: 7f 4a jg 114730 <__strcmp_sse42+0x8d0> 0.00 : 1146e6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1146eb: 66 0f 3a 0f 44 17 f0 palignr $0x9,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1146f2: 09 0.00 : 1146f3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1146fa: 0f 86 a0 05 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114700: 48 83 c2 10 add $0x10,%rdx 0.00 : 114704: 49 83 c2 10 add $0x10,%r10 0.00 : 114708: 7f 26 jg 114730 <__strcmp_sse42+0x8d0> 0.00 : 11470a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11470f: 66 0f 3a 0f 44 17 f0 palignr $0x9,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114716: 09 0.00 : 114717: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11471e: 0f 86 7c 05 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114724: 48 83 c2 10 add $0x10,%rdx 0.00 : 114728: eb b6 jmp 1146e0 <__strcmp_sse42+0x880> 0.00 : 11472a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114730: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114737: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11473d: 66 0f 73 d8 09 psrldq $0x9,%xmm0 0.00 : 114742: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114748: 83 f9 06 cmp $0x6,%ecx 0.00 : 11474b: 77 99 ja 1146e6 <__strcmp_sse42+0x886> 0.00 : 11474d: e9 3b 05 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114752: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114759: 1f 84 00 00 00 00 00 0.00 : 114760: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114764: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114768: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11476c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114770: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 114775: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114779: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11477d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114782: d3 ea shr %cl,%edx 0.00 : 114784: 41 d3 e9 shr %cl,%r9d 0.00 : 114787: 44 29 ca sub %r9d,%edx 0.00 : 11478a: 0f 85 2b 05 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114790: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114794: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114798: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11479f: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 1147a5: 4c 8d 57 0a lea 0xa(%rdi),%r10 0.00 : 1147a9: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1147b0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1147b7: 48 89 ca mov %rcx,%rdx 0.00 : 1147ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1147c0: 49 83 c2 10 add $0x10,%r10 0.00 : 1147c4: 7f 4a jg 114810 <__strcmp_sse42+0x9b0> 0.00 : 1147c6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1147cb: 66 0f 3a 0f 44 17 f0 palignr $0xa,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1147d2: 0a 0.00 : 1147d3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1147da: 0f 86 c0 04 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1147e0: 48 83 c2 10 add $0x10,%rdx 0.00 : 1147e4: 49 83 c2 10 add $0x10,%r10 0.00 : 1147e8: 7f 26 jg 114810 <__strcmp_sse42+0x9b0> 0.00 : 1147ea: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1147ef: 66 0f 3a 0f 44 17 f0 palignr $0xa,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1147f6: 0a 0.00 : 1147f7: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1147fe: 0f 86 9c 04 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114804: 48 83 c2 10 add $0x10,%rdx 0.00 : 114808: eb b6 jmp 1147c0 <__strcmp_sse42+0x960> 0.00 : 11480a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114810: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114817: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11481d: 66 0f 73 d8 0a psrldq $0xa,%xmm0 0.00 : 114822: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114828: 83 f9 05 cmp $0x5,%ecx 0.00 : 11482b: 77 99 ja 1147c6 <__strcmp_sse42+0x966> 0.00 : 11482d: e9 5b 04 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114832: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114839: 1f 84 00 00 00 00 00 0.00 : 114840: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114844: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114848: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11484c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114850: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 114855: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114859: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11485d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114862: d3 ea shr %cl,%edx 0.00 : 114864: 41 d3 e9 shr %cl,%r9d 0.00 : 114867: 44 29 ca sub %r9d,%edx 0.00 : 11486a: 0f 85 4b 04 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114870: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114874: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114878: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11487f: 41 b9 0b 00 00 00 mov $0xb,%r9d 0.00 : 114885: 4c 8d 57 0b lea 0xb(%rdi),%r10 0.00 : 114889: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114890: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114897: 48 89 ca mov %rcx,%rdx 0.00 : 11489a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1148a0: 49 83 c2 10 add $0x10,%r10 0.00 : 1148a4: 7f 4a jg 1148f0 <__strcmp_sse42+0xa90> 0.00 : 1148a6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1148ab: 66 0f 3a 0f 44 17 f0 palignr $0xb,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1148b2: 0b 0.00 : 1148b3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1148ba: 0f 86 e0 03 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1148c0: 48 83 c2 10 add $0x10,%rdx 0.00 : 1148c4: 49 83 c2 10 add $0x10,%r10 0.00 : 1148c8: 7f 26 jg 1148f0 <__strcmp_sse42+0xa90> 0.00 : 1148ca: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1148cf: 66 0f 3a 0f 44 17 f0 palignr $0xb,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1148d6: 0b 0.00 : 1148d7: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1148de: 0f 86 bc 03 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1148e4: 48 83 c2 10 add $0x10,%rdx 0.00 : 1148e8: eb b6 jmp 1148a0 <__strcmp_sse42+0xa40> 0.00 : 1148ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1148f0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1148f7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1148fd: 66 0f 73 d8 0b psrldq $0xb,%xmm0 0.00 : 114902: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114908: 83 f9 04 cmp $0x4,%ecx 0.00 : 11490b: 77 99 ja 1148a6 <__strcmp_sse42+0xa46> 0.00 : 11490d: e9 7b 03 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114912: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114919: 1f 84 00 00 00 00 00 0.00 : 114920: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114924: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114928: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11492c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114930: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 114935: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114939: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11493d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114942: d3 ea shr %cl,%edx 0.00 : 114944: 41 d3 e9 shr %cl,%r9d 0.00 : 114947: 44 29 ca sub %r9d,%edx 0.00 : 11494a: 0f 85 6b 03 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114950: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114954: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114958: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 11495f: 41 b9 0c 00 00 00 mov $0xc,%r9d 0.00 : 114965: 4c 8d 57 0c lea 0xc(%rdi),%r10 0.00 : 114969: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114970: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114977: 48 89 ca mov %rcx,%rdx 0.00 : 11497a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114980: 49 83 c2 10 add $0x10,%r10 0.00 : 114984: 7f 4a jg 1149d0 <__strcmp_sse42+0xb70> 0.00 : 114986: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11498b: 66 0f 3a 0f 44 17 f0 palignr $0xc,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114992: 0c 0.00 : 114993: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11499a: 0f 86 00 03 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1149a0: 48 83 c2 10 add $0x10,%rdx 0.00 : 1149a4: 49 83 c2 10 add $0x10,%r10 0.00 : 1149a8: 7f 26 jg 1149d0 <__strcmp_sse42+0xb70> 0.00 : 1149aa: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1149af: 66 0f 3a 0f 44 17 f0 palignr $0xc,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1149b6: 0c 0.00 : 1149b7: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1149be: 0f 86 dc 02 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 1149c4: 48 83 c2 10 add $0x10,%rdx 0.00 : 1149c8: eb b6 jmp 114980 <__strcmp_sse42+0xb20> 0.00 : 1149ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1149d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1149d7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1149dd: 66 0f 73 d8 0c psrldq $0xc,%xmm0 0.00 : 1149e2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1149e8: 83 f9 03 cmp $0x3,%ecx 0.00 : 1149eb: 77 99 ja 114986 <__strcmp_sse42+0xb26> 0.00 : 1149ed: e9 9b 02 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 1149f2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1149f9: 1f 84 00 00 00 00 00 0.00 : 114a00: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114a04: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114a08: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114a0c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114a10: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 114a15: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114a19: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 114a1d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114a22: d3 ea shr %cl,%edx 0.00 : 114a24: 41 d3 e9 shr %cl,%r9d 0.00 : 114a27: 44 29 ca sub %r9d,%edx 0.00 : 114a2a: 0f 85 8b 02 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114a30: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114a34: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114a38: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 114a3f: 41 b9 0d 00 00 00 mov $0xd,%r9d 0.00 : 114a45: 4c 8d 57 0d lea 0xd(%rdi),%r10 0.00 : 114a49: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114a50: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114a57: 48 89 ca mov %rcx,%rdx 0.00 : 114a5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114a60: 49 83 c2 10 add $0x10,%r10 0.00 : 114a64: 7f 4a jg 114ab0 <__strcmp_sse42+0xc50> 0.00 : 114a66: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114a6b: 66 0f 3a 0f 44 17 f0 palignr $0xd,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114a72: 0d 0.00 : 114a73: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114a7a: 0f 86 20 02 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114a80: 48 83 c2 10 add $0x10,%rdx 0.00 : 114a84: 49 83 c2 10 add $0x10,%r10 0.00 : 114a88: 7f 26 jg 114ab0 <__strcmp_sse42+0xc50> 0.00 : 114a8a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114a8f: 66 0f 3a 0f 44 17 f0 palignr $0xd,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114a96: 0d 0.00 : 114a97: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114a9e: 0f 86 fc 01 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114aa4: 48 83 c2 10 add $0x10,%rdx 0.00 : 114aa8: eb b6 jmp 114a60 <__strcmp_sse42+0xc00> 0.00 : 114aaa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114ab0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114ab7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 114abd: 66 0f 73 d8 0d psrldq $0xd,%xmm0 0.00 : 114ac2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114ac8: 83 f9 02 cmp $0x2,%ecx 0.00 : 114acb: 77 99 ja 114a66 <__strcmp_sse42+0xc06> 0.00 : 114acd: e9 bb 01 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114ad2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114ad9: 1f 84 00 00 00 00 00 0.00 : 114ae0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114ae4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114ae8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114aec: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114af0: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 114af5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114af9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 114afd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114b02: d3 ea shr %cl,%edx 0.00 : 114b04: 41 d3 e9 shr %cl,%r9d 0.00 : 114b07: 44 29 ca sub %r9d,%edx 0.00 : 114b0a: 0f 85 ab 01 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114b10: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114b14: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114b18: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 114b1f: 41 b9 0e 00 00 00 mov $0xe,%r9d 0.00 : 114b25: 4c 8d 57 0e lea 0xe(%rdi),%r10 0.00 : 114b29: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114b30: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114b37: 48 89 ca mov %rcx,%rdx 0.00 : 114b3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114b40: 49 83 c2 10 add $0x10,%r10 0.00 : 114b44: 7f 4a jg 114b90 <__strcmp_sse42+0xd30> 0.00 : 114b46: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114b4b: 66 0f 3a 0f 44 17 f0 palignr $0xe,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114b52: 0e 0.00 : 114b53: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114b5a: 0f 86 40 01 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114b60: 48 83 c2 10 add $0x10,%rdx 0.00 : 114b64: 49 83 c2 10 add $0x10,%r10 0.00 : 114b68: 7f 26 jg 114b90 <__strcmp_sse42+0xd30> 0.00 : 114b6a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114b6f: 66 0f 3a 0f 44 17 f0 palignr $0xe,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114b76: 0e 0.00 : 114b77: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114b7e: 0f 86 1c 01 00 00 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114b84: 48 83 c2 10 add $0x10,%rdx 0.00 : 114b88: eb b6 jmp 114b40 <__strcmp_sse42+0xce0> 0.00 : 114b8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114b90: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114b97: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 114b9d: 66 0f 73 d8 0e psrldq $0xe,%xmm0 0.00 : 114ba2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114ba8: 83 f9 01 cmp $0x1,%ecx 0.00 : 114bab: 77 99 ja 114b46 <__strcmp_sse42+0xce6> 0.00 : 114bad: e9 db 00 00 00 jmpq 114c8d <__strcmp_sse42+0xe2d> 0.00 : 114bb2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114bb9: 1f 84 00 00 00 00 00 0.00 : 114bc0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114bc4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114bc8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114bcc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114bd0: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 114bd5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114bd9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 114bdd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114be2: d3 ea shr %cl,%edx 0.00 : 114be4: 41 d3 e9 shr %cl,%r9d 0.00 : 114be7: 44 29 ca sub %r9d,%edx 0.00 : 114bea: 0f 85 cb 00 00 00 jne 114cbb <__strcmp_sse42+0xe5b> 0.00 : 114bf0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114bf4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114bf8: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 114bff: 41 b9 0f 00 00 00 mov $0xf,%r9d 0.00 : 114c05: 4c 8d 57 0f lea 0xf(%rdi),%r10 0.00 : 114c09: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114c10: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114c17: 48 89 ca mov %rcx,%rdx 0.00 : 114c1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114c20: 49 83 c2 10 add $0x10,%r10 0.00 : 114c24: 7f 4a jg 114c70 <__strcmp_sse42+0xe10> 0.00 : 114c26: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114c2b: 66 0f 3a 0f 44 17 f0 palignr $0xf,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114c32: 0f 0.00 : 114c33: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114c3a: 76 64 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114c3c: 48 83 c2 10 add $0x10,%rdx 0.00 : 114c40: 49 83 c2 10 add $0x10,%r10 0.00 : 114c44: 7f 2a jg 114c70 <__strcmp_sse42+0xe10> 0.00 : 114c46: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114c4b: 66 0f 3a 0f 44 17 f0 palignr $0xf,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114c52: 0f 0.00 : 114c53: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114c5a: 76 44 jbe 114ca0 <__strcmp_sse42+0xe40> 0.00 : 114c5c: 48 83 c2 10 add $0x10,%rdx 0.00 : 114c60: eb be jmp 114c20 <__strcmp_sse42+0xdc0> 0.00 : 114c62: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114c69: 1f 84 00 00 00 00 00 0.00 : 114c70: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114c77: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 114c7d: 66 0f 73 d8 0f psrldq $0xf,%xmm0 0.00 : 114c82: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114c88: 83 f9 00 cmp $0x0,%ecx 0.00 : 114c8b: 77 99 ja 114c26 <__strcmp_sse42+0xdc6> 0.00 : 114c8d: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114c94: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114c9b: 00 00 00 00 00 0.00 : 114ca0: 73 3d jae 114cdf <__strcmp_sse42+0xe7f> 0.00 : 114ca2: 48 01 ca add %rcx,%rdx 0.00 : 114ca5: 4a 8d 7c 0f f0 lea -0x10(%rdi,%r9,1),%rdi 0.00 : 114caa: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 0.00 : 114cae: 0f b6 14 16 movzbl (%rsi,%rdx,1),%edx 0.00 : 114cb2: 45 85 c0 test %r8d,%r8d 0.00 : 114cb5: 74 01 je 114cb8 <__strcmp_sse42+0xe58> 0.00 : 114cb7: 92 xchg %eax,%edx 0.00 : 114cb8: 29 d0 sub %edx,%eax 0.00 : 114cba: c3 retq 0.00 : 114cbb: 48 8d 3c 07 lea (%rdi,%rax,1),%rdi 0.00 : 114cbf: 48 8d 34 0e lea (%rsi,%rcx,1),%rsi 0.00 : 114cc3: 45 85 c0 test %r8d,%r8d 0.00 : 114cc6: 74 08 je 114cd0 <__strcmp_sse42+0xe70> 0.00 : 114cc8: 48 87 f7 xchg %rsi,%rdi 0.00 : 114ccb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 4.00 : 114cd0: 48 0f bc d2 bsf %rdx,%rdx ??:0 8.00 : 114cd4: 0f b6 0c 16 movzbl (%rsi,%rdx,1),%ecx 12.00 : 114cd8: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 0.00 : 114cdc: 29 c8 sub %ecx,%eax 0.00 : 114cde: c3 retq 0.00 : 114cdf: 31 c0 xor %eax,%eax 0.00 : 114ce1: c3 retq 0.00 : 114ce2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114ce9: 1f 84 00 00 00 00 00 0.00 : 114cf0: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 114cf3: 0f b6 07 movzbl (%rdi),%eax 0.00 : 114cf6: 29 c8 sub %ecx,%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_state.ko ---------------------------------------------- 48.28 ??:0 41.38 ??:0 10.34 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_state.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000000 : ??:0 100.00 : 0: 0f b6 4f 7c movzbl 0x7c(%rdi),%ecx : 34: 48 8b mul %edx : 36: 87 88 shr %edx : 38: 00 00 00 lea (%rdx,%rdx,2),%edx Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 44.44 ??:0 16.67 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 5.56 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004210 : : } : : static int ixgbe_tso(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : u8 *hdr_len) : { ??:0 11.11 : 4210: 48 83 ec 28 sub $0x28,%rsp 44.44 : 4214: 4c 89 64 24 10 mov %r12,0x10(%rsp) 11.11 : 4219: 4c 89 6c 24 18 mov %r13,0x18(%rsp) 0.00 : 421e: 49 89 d5 mov %rdx,%r13 0.00 : 4221: 4c 89 74 24 20 mov %r14,0x20(%rsp) 0.00 : 4226: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 422a: 49 89 fe mov %rdi,%r14 0.00 : 422d: 48 89 6c 24 08 mov %rbp,0x8(%rsp) : #ifdef NETIF_F_TSO : struct sk_buff *skb = first->skb; 0.00 : 4232: 48 8b 6e 10 mov 0x10(%rsi),%rbp : } : : static int ixgbe_tso(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : u8 *hdr_len) : { 0.00 : 4236: 49 89 f4 mov %rsi,%r12 : } : #endif : : static inline int skb_is_gso(const struct sk_buff *skb) : { : return skb_shinfo(skb)->gso_size; 0.00 : 4239: 8b 85 d0 00 00 00 mov 0xd0(%rbp),%eax : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) : { : return skb->head + skb->end; 0.00 : 423f: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx : } : #endif : : static inline int skb_is_gso(const struct sk_buff *skb) : { : return skb_shinfo(skb)->gso_size; 5.56 : 4246: 48 8d 14 01 lea (%rcx,%rax,1),%rdx : #ifdef NETIF_F_TSO : struct sk_buff *skb = first->skb; : u32 vlan_macip_lens, type_tucmd; : u32 mss_l4len_idx, l4len; : : if (!skb_is_gso(skb)) 0.00 : 424a: 31 c0 xor %eax,%eax 0.00 : 424c: 66 83 7a 02 00 cmpw $0x0,0x2(%rdx) 11.11 : 4251: 0f 84 cf 00 00 00 je 4326 : */ : static inline int skb_header_cloned(const struct sk_buff *skb) : { : int dataref; : : if (!skb->cloned) 0.00 : 4257: f6 45 7c 02 testb $0x2,0x7c(%rbp) 0.00 : 425b: 0f 85 e7 00 00 00 jne 4348 : } : : /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */ : type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP; : : if (first->protocol == __constant_htons(ETH_P_IP)) { 0.00 : 4261: 66 41 83 7c 24 1e 08 cmpw $0x8,0x1e(%r12) 0.00 : 4268: 0f 84 12 01 00 00 je 4380 : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : first->tx_flags |= IXGBE_TX_FLAGS_TSO | : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { 0.00 : 426e: 8b 85 d0 00 00 00 mov 0xd0(%rbp),%eax 0.00 : 4274: 41 b9 00 08 00 00 mov $0x800,%r9d 0.00 : 427a: f6 44 01 06 10 testb $0x10,0x6(%rcx,%rax,1) 0.00 : 427f: 0f 85 6b 01 00 00 jne 43f0 : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_transport_header(const struct sk_buff *skb) : { : return skb->head + skb->transport_header; 0.00 : 4285: 8b 85 c0 00 00 00 mov 0xc0(%rbp),%eax 0.00 : 428b: 48 8d 04 01 lea (%rcx,%rax,1),%rax : return (struct tcphdr *)skb_transport_header(skb); : } : : static inline unsigned int tcp_hdrlen(const struct sk_buff *skb) : { : return tcp_hdr(skb)->doff * 4; 0.00 : 428f: 0f b6 48 0c movzbl 0xc(%rax),%ecx : #endif : } : : /* compute header lengths */ : l4len = tcp_hdrlen(skb); : *hdr_len = skb_transport_offset(skb) + l4len; 0.00 : 4293: 2b 85 e0 00 00 00 sub 0xe0(%rbp),%eax 0.00 : 4299: c0 e9 04 shr $0x4,%cl 0.00 : 429c: 0f b6 c9 movzbl %cl,%ecx 0.00 : 429f: 8d 04 88 lea (%rax,%rcx,4),%eax : /* update gso size and bytecount with header size */ : first->gso_segs = skb_shinfo(skb)->gso_segs; : first->bytecount += (first->gso_segs - 1) * *hdr_len; : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; 0.00 : 42a2: c1 e1 0a shl $0xa,%ecx : #endif : } : : /* compute header lengths */ : l4len = tcp_hdrlen(skb); : *hdr_len = skb_transport_offset(skb) + l4len; 0.00 : 42a5: 41 88 45 00 mov %al,0x0(%r13) : : /* update gso size and bytecount with header size */ : first->gso_segs = skb_shinfo(skb)->gso_segs; 0.00 : 42a9: 8b 95 d0 00 00 00 mov 0xd0(%rbp),%edx 0.00 : 42af: 48 8b 85 d8 00 00 00 mov 0xd8(%rbp),%rax 0.00 : 42b6: 0f b7 44 10 04 movzwl 0x4(%rax,%rdx,1),%eax 0.00 : 42bb: 66 41 89 44 24 1c mov %ax,0x1c(%r12) : first->bytecount += (first->gso_segs - 1) * *hdr_len; 0.00 : 42c1: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 42c6: 83 e8 01 sub $0x1,%eax 0.00 : 42c9: 0f af d0 imul %eax,%edx 0.00 : 42cc: 41 01 54 24 18 add %edx,0x18(%r12) : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; 0.00 : 42d1: 8b 85 d0 00 00 00 mov 0xd0(%rbp),%eax : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) : { : return skb->head + skb->end; 0.00 : 42d7: 48 8b bd d8 00 00 00 mov 0xd8(%rbp),%rdi : return skb_transport_header(skb) - skb->data; : } : : static inline u32 skb_network_header_len(const struct sk_buff *skb) : { : return skb->transport_header - skb->network_header; 0.00 : 42de: 8b 95 c4 00 00 00 mov 0xc4(%rbp),%edx 0.00 : 42e4: 8b b5 c0 00 00 00 mov 0xc0(%rbp),%esi 0.00 : 42ea: 44 0f b7 44 07 02 movzwl 0x2(%rdi,%rax,1),%r8d 0.00 : 42f0: 29 d6 sub %edx,%esi : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 42f2: 2b 95 e0 00 00 00 sub 0xe0(%rbp),%edx : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; : mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT; : : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 42f8: 41 8b 44 24 2c mov 0x2c(%r12),%eax : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 42fd: 01 fa add %edi,%edx : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; : mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT; : : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 42ff: 66 31 c0 xor %ax,%ax : first->gso_segs = skb_shinfo(skb)->gso_segs; : first->bytecount += (first->gso_segs - 1) * *hdr_len; : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; 0.00 : 4302: 41 c1 e0 10 shl $0x10,%r8d : mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT; : : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 4306: 09 c6 or %eax,%esi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 4308: c1 e2 09 shl $0x9,%edx : first->gso_segs = skb_shinfo(skb)->gso_segs; : first->bytecount += (first->gso_segs - 1) * *hdr_len; : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; 0.00 : 430b: 41 83 c8 10 or $0x10,%r8d : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 430f: 09 d6 or %edx,%esi 0.00 : 4311: 41 09 c8 or %ecx,%r8d 0.00 : 4314: 31 d2 xor %edx,%edx 0.00 : 4316: 44 89 c9 mov %r9d,%ecx 0.00 : 4319: 4c 89 f7 mov %r14,%rdi 0.00 : 431c: e8 00 00 00 00 callq 4321 0.00 : 4321: b8 01 00 00 00 mov $0x1,%eax : mss_l4len_idx); : : return 1; : #endif : } 16.67 : 4326: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 432a: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 432f: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 4334: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 4339: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 433e: 48 83 c4 28 add $0x28,%rsp 0.00 : 4342: c3 retq 0.00 : 4343: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * : * Atomically reads the value of @v. : */ : static inline int atomic_read(const atomic_t *v) : { : return (*(volatile int *)&(v)->counter); 0.00 : 4348: 8b 42 28 mov 0x28(%rdx),%eax : : if (!skb->cloned) : return 0; : : dataref = atomic_read(&skb_shinfo(skb)->dataref); : dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT); 0.00 : 434b: 0f b7 d0 movzwl %ax,%edx 0.00 : 434e: c1 f8 10 sar $0x10,%eax : if (!skb_is_gso(skb)) : #endif /* NETIF_F_TSO */ : return 0; : #ifdef NETIF_F_TSO : : if (skb_header_cloned(skb)) { 0.00 : 4351: 29 c2 sub %eax,%edx 0.00 : 4353: 83 ea 01 sub $0x1,%edx 0.00 : 4356: 0f 84 05 ff ff ff je 4261 : int err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); 0.00 : 435c: 31 d2 xor %edx,%edx 0.00 : 435e: 31 f6 xor %esi,%esi 0.00 : 4360: b9 20 00 00 00 mov $0x20,%ecx 0.00 : 4365: 48 89 ef mov %rbp,%rdi 0.00 : 4368: e8 00 00 00 00 callq 436d : if (err) 0.00 : 436d: 85 c0 test %eax,%eax 0.00 : 436f: 75 b5 jne 4326 0.00 : 4371: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx 0.00 : 4378: e9 e4 fe ff ff jmpq 4261 0.00 : 437d: 0f 1f 00 nopl (%rax) : #ifdef __KERNEL__ : #include : : static inline struct iphdr *ip_hdr(const struct sk_buff *skb) : { : return (struct iphdr *)skb_network_header(skb); 0.00 : 4380: 8b 95 c4 00 00 00 mov 0xc4(%rbp),%edx : */ : static inline __wsum : csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, : unsigned short proto, __wsum sum) : { : asm(" addl %1, %0\n" 0.00 : 4386: 31 c0 xor %eax,%eax : tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, : iph->daddr, 0, : IPPROTO_TCP, : 0); : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 0.00 : 4388: 41 b9 00 0c 00 00 mov $0xc00,%r9d 0.00 : 438e: 48 8d 14 11 lea (%rcx,%rdx,1),%rdx 0.00 : 4392: 03 42 10 add 0x10(%rdx),%eax 0.00 : 4395: 13 42 0c adc 0xc(%rdx),%eax 0.00 : 4398: 15 00 06 00 00 adc $0x600,%eax 0.00 : 439d: 83 d0 00 adc $0x0,%eax : /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */ : type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP; : : if (first->protocol == __constant_htons(ETH_P_IP)) { : struct iphdr *iph = ip_hdr(skb); : iph->tot_len = 0; 0.00 : 43a0: 66 c7 42 02 00 00 movw $0x0,0x2(%rdx) : iph->check = 0; 0.00 : 43a6: 66 c7 42 0a 00 00 movw $0x0,0xa(%rdx) : * the last step before putting a checksum into a packet. : * Make sure not to mix with 64bit checksums. : */ : static inline __sum16 csum_fold(__wsum sum) : { : asm(" addl %1,%0\n" 0.00 : 43ac: 89 c2 mov %eax,%edx : tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, 0.00 : 43ae: 8b 8d c0 00 00 00 mov 0xc0(%rbp),%ecx 0.00 : 43b4: c1 e2 10 shl $0x10,%edx 0.00 : 43b7: 66 31 c0 xor %ax,%ax 0.00 : 43ba: 01 d0 add %edx,%eax 0.00 : 43bc: 15 ff ff 00 00 adc $0xffff,%eax 0.00 : 43c1: 48 8b 95 d8 00 00 00 mov 0xd8(%rbp),%rdx 0.00 : 43c8: f7 d0 not %eax 0.00 : 43ca: c1 e8 10 shr $0x10,%eax 0.00 : 43cd: f7 d0 not %eax 0.00 : 43cf: 66 89 44 0a 10 mov %ax,0x10(%rdx,%rcx,1) : iph->daddr, 0, : IPPROTO_TCP, : 0); : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 0.00 : 43d4: 41 83 4c 24 2c 19 orl $0x19,0x2c(%r12) 0.00 : 43da: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx 0.00 : 43e1: e9 9f fe ff ff jmpq 4285 0.00 : 43e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43ed: 00 00 00 : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { : ipv6_hdr(skb)->payload_len = 0; 0.00 : 43f0: 8b 85 c4 00 00 00 mov 0xc4(%rbp),%eax : tcp_hdr(skb)->check = 0.00 : 43f6: 45 31 c0 xor %r8d,%r8d 0.00 : 43f9: 31 d2 xor %edx,%edx : first->tx_flags |= IXGBE_TX_FLAGS_TSO | : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { : ipv6_hdr(skb)->payload_len = 0; 0.00 : 43fb: 66 c7 44 01 04 00 00 movw $0x0,0x4(%rcx,%rax,1) : #include : #include : : static inline struct tcphdr *tcp_hdr(const struct sk_buff *skb) : { : return (struct tcphdr *)skb_transport_header(skb); 0.00 : 4402: 8b 9d c0 00 00 00 mov 0xc0(%rbp),%ebx : tcp_hdr(skb)->check = 0.00 : 4408: b9 06 00 00 00 mov $0x6,%ecx : : #include : : static inline struct ipv6hdr *ipv6_hdr(const struct sk_buff *skb) : { : return (struct ipv6hdr *)skb_network_header(skb); 0.00 : 440d: 8b 85 c4 00 00 00 mov 0xc4(%rbp),%eax : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_transport_header(const struct sk_buff *skb) : { : return skb->head + skb->transport_header; 0.00 : 4413: 48 8b bd d8 00 00 00 mov 0xd8(%rbp),%rdi 0.00 : 441a: 48 8d 1c 1f lea (%rdi,%rbx,1),%rbx 0.00 : 441e: 48 01 c7 add %rax,%rdi 0.00 : 4421: 48 8d 77 18 lea 0x18(%rdi),%rsi 0.00 : 4425: 48 83 c7 08 add $0x8,%rdi 0.00 : 4429: e8 00 00 00 00 callq 442e 0.00 : 442e: f7 d0 not %eax : ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, : &ipv6_hdr(skb)->daddr, : 0, IPPROTO_TCP, 0); : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 0.00 : 4430: 41 b9 00 08 00 00 mov $0x800,%r9d : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { : ipv6_hdr(skb)->payload_len = 0; : tcp_hdr(skb)->check = 0.00 : 4436: 66 89 43 10 mov %ax,0x10(%rbx) : ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, : &ipv6_hdr(skb)->daddr, : 0, IPPROTO_TCP, 0); : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 0.00 : 443a: 41 83 4c 24 2c 09 orl $0x9,0x2c(%r12) 0.00 : 4440: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx 0.00 : 4447: e9 39 fe ff ff jmpq 4285 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469bf0 : ??:0 100.00 : 469bf0: ff 25 6a d8 6f 00 jmpq *0x6fd86a(%rip) # b67460 <_GLOBAL_OFFSET_TABLE_+0x460> 0.00 : 469bf6: 68 89 00 00 00 pushq $0x89 0.00 : 469bfb: e9 50 f7 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 48.57 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1482 28.57 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1483 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1484 2.86 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1482 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ecb0 : : /* : * heap_free_minimal_tuple : */ : void : heap_free_minimal_tuple(MinimalTuple mtup) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1482 48.57 : 46ecb0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1482 2.86 : 46ecb1: 48 89 e5 mov %rsp,%rbp : pfree(mtup); : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1484 20.00 : 46ecb4: c9 leaveq : * heap_free_minimal_tuple : */ : void : heap_free_minimal_tuple(MinimalTuple mtup) : { : pfree(mtup); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1483 28.57 : 46ecb5: e9 c6 9e 32 00 jmpq 798b80 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 55.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:656 25.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:664 7.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:651 3.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:651 3.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:662 3.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:662 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698d90 : : /* : * mdprefetch() -- Initiate asynchronous read of the specified block of a relation : */ : void : mdprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:651 7.41 : 698d90: 55 push %rbp : #ifdef USE_PREFETCH : off_t seekpos; : MdfdVec *v; : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:656 55.56 : 698d91: 45 31 c0 xor %r8d,%r8d 0.00 : 698d94: 31 c9 xor %ecx,%ecx : /* : * mdprefetch() -- Initiate asynchronous read of the specified block of a relation : */ : void : mdprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:651 3.70 : 698d96: 48 89 e5 mov %rsp,%rbp 0.00 : 698d99: 53 push %rbx 0.00 : 698d9a: 89 d3 mov %edx,%ebx 0.00 : 698d9c: 48 83 ec 08 sub $0x8,%rsp : #ifdef USE_PREFETCH : off_t seekpos; : MdfdVec *v; : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); 0.00 : 698da0: e8 2b f6 ff ff callq 6983d0 <_mdfd_getseg> : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : (void) FilePrefetch(v->mdfd_vfd, seekpos, BLCKSZ); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:662 3.70 : 698da5: 48 89 de mov %rbx,%rsi 0.00 : 698da8: 8b 38 mov (%rax),%edi : #endif /* USE_PREFETCH */ : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:664 25.93 : 698daa: 48 83 c4 08 add $0x8,%rsp 0.00 : 698dae: 5b pop %rbx 0.00 : 698daf: c9 leaveq : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : (void) FilePrefetch(v->mdfd_vfd, seekpos, BLCKSZ); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:662 3.70 : 698db0: 81 e6 ff ff 01 00 and $0x1ffff,%esi 0.00 : 698db6: 48 c1 e6 0d shl $0xd,%rsi 0.00 : 698dba: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 698dbf: e9 cc 10 fe ff jmpq 679e90 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 46.43 ??:0 7.14 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000001182c0 <__strncpy_ssse3>: ??:0 3.57 : 1182c0: 48 85 d2 test %rdx,%rdx 0.00 : 1182c3: 0f 84 57 0a 00 00 je 118d20 <__strncpy_ssse3+0xa60> 3.57 : 1182c9: 49 89 d0 mov %rdx,%r8 3.57 : 1182cc: 89 f1 mov %esi,%ecx 0.00 : 1182ce: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 1182d2: 83 e1 0f and $0xf,%ecx 0.00 : 1182d5: 48 89 f8 mov %rdi,%rax 0.00 : 1182d8: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1182dc: 66 0f 74 06 pcmpeqb (%rsi),%xmm0 ??:0 46.43 : 1182e0: 66 0f d7 d0 pmovmskb %xmm0,%edx ??:0 3.57 : 1182e4: d3 ea shr %cl,%edx 0.00 : 1182e6: 85 d2 test %edx,%edx 0.00 : 1182e8: 0f 85 c5 09 00 00 jne 118cb3 <__strncpy_ssse3+0x9f3> 0.00 : 1182ee: 4d 8d 5c 08 f0 lea -0x10(%r8,%rcx,1),%r11 0.00 : 1182f3: 49 83 fb 00 cmp $0x0,%r11 0.00 : 1182f7: 0f 8e b6 09 00 00 jle 118cb3 <__strncpy_ssse3+0x9f3> 0.00 : 1182fd: 49 89 c9 mov %rcx,%r9 0.00 : 118300: 09 f9 or %edi,%ecx 0.00 : 118302: 83 e1 0f and $0xf,%ecx 0.00 : 118305: 4d 8d 51 f0 lea -0x10(%r9),%r10 0.00 : 118309: 74 75 je 118380 <__strncpy_ssse3+0xc0> 0.00 : 11830b: 49 f7 da neg %r10 0.00 : 11830e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 118312: 66 0f 74 46 10 pcmpeqb 0x10(%rsi),%xmm0 0.00 : 118317: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11831b: 85 d2 test %edx,%edx 0.00 : 11831d: 0f 85 7d 09 00 00 jne 118ca0 <__strncpy_ssse3+0x9e0> 0.00 : 118323: 49 83 e8 10 sub $0x10,%r8 0.00 : 118327: 0f 86 c3 09 00 00 jbe 118cf0 <__strncpy_ssse3+0xa30> 3.57 : 11832d: 4a 8b 14 0e mov (%rsi,%r9,1),%rdx 0.00 : 118331: 48 89 17 mov %rdx,(%rdi) 0.00 : 118334: 4a 8b 54 0e 08 mov 0x8(%rsi,%r9,1),%rdx 0.00 : 118339: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11833d: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 118341: 48 89 c2 mov %rax,%rdx 0.00 : 118344: 48 31 fa xor %rdi,%rdx 0.00 : 118347: 49 01 d0 add %rdx,%r8 0.00 : 11834a: 48 83 c7 10 add $0x10,%rdi 0.00 : 11834e: 49 29 d1 sub %rdx,%r9 0.00 : 118351: 49 8d 74 31 10 lea 0x10(%r9,%rsi,1),%rsi 0.00 : 118356: 89 f1 mov %esi,%ecx 0.00 : 118358: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 11835c: 83 e1 0f and $0xf,%ecx 0.00 : 11835f: 74 1f je 118380 <__strncpy_ssse3+0xc0> 0.00 : 118361: 4c 8d 51 f0 lea -0x10(%rcx),%r10 0.00 : 118365: 49 89 c9 mov %rcx,%r9 0.00 : 118368: 49 f7 da neg %r10 0.00 : 11836b: 4c 8d 1d ee b9 02 00 lea 0x2b9ee(%rip),%r11 # 143d60 0.00 : 118372: 49 63 0c 8b movslq (%r11,%rcx,4),%rcx 0.00 : 118376: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx 0.00 : 11837a: ff e1 jmpq *%rcx 0.00 : 11837c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 118380: 49 83 e8 10 sub $0x10,%r8 0.00 : 118384: 0f 86 6b 09 00 00 jbe 118cf5 <__strncpy_ssse3+0xa35> 0.00 : 11838a: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11838e: 66 0f 7f 0f movdqa %xmm1,(%rdi) 0.00 : 118392: 48 83 c6 10 add $0x10,%rsi 0.00 : 118396: 48 83 c7 10 add $0x10,%rdi 0.00 : 11839a: 66 0f 74 06 pcmpeqb (%rsi),%xmm0 0.00 : 11839e: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1183a2: 85 d2 test %edx,%edx 0.00 : 1183a4: 0f 85 0c 09 00 00 jne 118cb6 <__strncpy_ssse3+0x9f6> 0.00 : 1183aa: 49 83 e8 10 sub $0x10,%r8 0.00 : 1183ae: 0f 86 41 09 00 00 jbe 118cf5 <__strncpy_ssse3+0xa35> 0.00 : 1183b4: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 1183b9: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 1183be: 48 83 c1 10 add $0x10,%rcx 0.00 : 1183c2: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 1183c7: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1183cb: 85 d2 test %edx,%edx 0.00 : 1183cd: 0f 85 dd 08 00 00 jne 118cb0 <__strncpy_ssse3+0x9f0> 0.00 : 1183d3: 49 83 e8 10 sub $0x10,%r8 0.00 : 1183d7: 0f 86 18 09 00 00 jbe 118cf5 <__strncpy_ssse3+0xa35> 0.00 : 1183dd: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 1183e2: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 1183e7: 48 83 c1 10 add $0x10,%rcx 0.00 : 1183eb: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 1183f0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1183f4: 85 d2 test %edx,%edx 0.00 : 1183f6: 0f 85 b4 08 00 00 jne 118cb0 <__strncpy_ssse3+0x9f0> 0.00 : 1183fc: 49 83 e8 10 sub $0x10,%r8 0.00 : 118400: 0f 86 ef 08 00 00 jbe 118cf5 <__strncpy_ssse3+0xa35> 0.00 : 118406: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 11840b: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 118410: 48 83 c1 10 add $0x10,%rcx 0.00 : 118414: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 118419: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11841d: 85 d2 test %edx,%edx 0.00 : 11841f: 0f 85 8b 08 00 00 jne 118cb0 <__strncpy_ssse3+0x9f0> 0.00 : 118425: 49 83 e8 10 sub $0x10,%r8 0.00 : 118429: 0f 86 c6 08 00 00 jbe 118cf5 <__strncpy_ssse3+0xa35> 0.00 : 11842f: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 118434: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 118439: 48 83 c1 10 add $0x10,%rcx 0.00 : 11843d: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 118442: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118446: 85 d2 test %edx,%edx 0.00 : 118448: 0f 84 5c ff ff ff je 1183aa <__strncpy_ssse3+0xea> 0.00 : 11844e: e9 5d 08 00 00 jmpq 118cb0 <__strncpy_ssse3+0x9f0> 0.00 : 118453: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11845a: 84 00 00 00 00 00 0.00 : 118460: 31 c9 xor %ecx,%ecx 0.00 : 118462: 4d 39 d0 cmp %r10,%r8 0.00 : 118465: 0f 86 37 08 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11846b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118470: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118476: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 11847a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11847e: 85 d2 test %edx,%edx 0.00 : 118480: 0f 85 1c 08 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118486: 49 83 e8 10 sub $0x10,%r8 0.00 : 11848a: 0f 86 62 08 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118490: 66 0f 3a 0f 1c 0e 0f palignr $0xf,(%rsi,%rcx,1),%xmm3 0.00 : 118497: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 11849c: 48 83 c1 10 add $0x10,%rcx 0.00 : 1184a0: 4d 39 d0 cmp %r10,%r8 0.00 : 1184a3: 0f 86 f9 07 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1184a9: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1184af: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1184b3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1184b7: 85 d2 test %edx,%edx 0.00 : 1184b9: 0f 85 e3 07 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1184bf: 49 83 e8 10 sub $0x10,%r8 0.00 : 1184c3: 0f 86 29 08 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1184c9: 66 0f 3a 0f 1c 0e 0f palignr $0xf,(%rsi,%rcx,1),%xmm3 0.00 : 1184d0: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1184d5: 48 83 c1 10 add $0x10,%rcx 0.00 : 1184d9: 4d 39 d0 cmp %r10,%r8 0.00 : 1184dc: 0f 86 c0 07 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1184e2: eb 8c jmp 118470 <__strncpy_ssse3+0x1b0> 0.00 : 1184e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1184eb: 00 00 00 00 00 0.00 : 1184f0: 31 c9 xor %ecx,%ecx 0.00 : 1184f2: 4d 39 d0 cmp %r10,%r8 0.00 : 1184f5: 0f 86 a7 07 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1184fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118500: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118506: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 11850a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11850e: 85 d2 test %edx,%edx 0.00 : 118510: 0f 85 8c 07 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118516: 49 83 e8 10 sub $0x10,%r8 0.00 : 11851a: 0f 86 d2 07 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118520: 66 0f 3a 0f 1c 0e 0e palignr $0xe,(%rsi,%rcx,1),%xmm3 0.00 : 118527: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 11852c: 48 83 c1 10 add $0x10,%rcx 0.00 : 118530: 4d 39 d0 cmp %r10,%r8 0.00 : 118533: 0f 86 69 07 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118539: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 11853f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118543: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118547: 85 d2 test %edx,%edx 0.00 : 118549: 0f 85 53 07 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11854f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118553: 0f 86 99 07 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118559: 66 0f 3a 0f 1c 0e 0e palignr $0xe,(%rsi,%rcx,1),%xmm3 0.00 : 118560: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118565: 48 83 c1 10 add $0x10,%rcx 0.00 : 118569: 4d 39 d0 cmp %r10,%r8 0.00 : 11856c: 0f 86 30 07 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118572: eb 8c jmp 118500 <__strncpy_ssse3+0x240> 0.00 : 118574: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11857b: 00 00 00 00 00 0.00 : 118580: 31 c9 xor %ecx,%ecx 0.00 : 118582: 4d 39 d0 cmp %r10,%r8 0.00 : 118585: 0f 86 17 07 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11858b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118590: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118596: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 11859a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11859e: 85 d2 test %edx,%edx 0.00 : 1185a0: 0f 85 fc 06 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1185a6: 49 83 e8 10 sub $0x10,%r8 0.00 : 1185aa: 0f 86 42 07 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1185b0: 66 0f 3a 0f 1c 0e 0d palignr $0xd,(%rsi,%rcx,1),%xmm3 0.00 : 1185b7: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1185bc: 48 83 c1 10 add $0x10,%rcx 0.00 : 1185c0: 4d 39 d0 cmp %r10,%r8 0.00 : 1185c3: 0f 86 d9 06 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1185c9: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1185cf: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1185d3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1185d7: 85 d2 test %edx,%edx 0.00 : 1185d9: 0f 85 c3 06 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1185df: 49 83 e8 10 sub $0x10,%r8 0.00 : 1185e3: 0f 86 09 07 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1185e9: 66 0f 3a 0f 1c 0e 0d palignr $0xd,(%rsi,%rcx,1),%xmm3 0.00 : 1185f0: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1185f5: 48 83 c1 10 add $0x10,%rcx 0.00 : 1185f9: 4d 39 d0 cmp %r10,%r8 0.00 : 1185fc: 0f 86 a0 06 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118602: eb 8c jmp 118590 <__strncpy_ssse3+0x2d0> 0.00 : 118604: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11860b: 00 00 00 00 00 0.00 : 118610: 31 c9 xor %ecx,%ecx 0.00 : 118612: 4d 39 d0 cmp %r10,%r8 0.00 : 118615: 0f 86 87 06 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11861b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118620: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118626: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 11862a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11862e: 85 d2 test %edx,%edx 0.00 : 118630: 0f 85 6c 06 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118636: 49 83 e8 10 sub $0x10,%r8 0.00 : 11863a: 0f 86 b2 06 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118640: 66 0f 3a 0f 1c 0e 0c palignr $0xc,(%rsi,%rcx,1),%xmm3 0.00 : 118647: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 11864c: 48 83 c1 10 add $0x10,%rcx 0.00 : 118650: 4d 39 d0 cmp %r10,%r8 0.00 : 118653: 0f 86 49 06 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118659: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 11865f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118663: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118667: 85 d2 test %edx,%edx 0.00 : 118669: 0f 85 33 06 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11866f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118673: 0f 86 79 06 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118679: 66 0f 3a 0f 1c 0e 0c palignr $0xc,(%rsi,%rcx,1),%xmm3 0.00 : 118680: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118685: 48 83 c1 10 add $0x10,%rcx 0.00 : 118689: 4d 39 d0 cmp %r10,%r8 0.00 : 11868c: 0f 86 10 06 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118692: eb 8c jmp 118620 <__strncpy_ssse3+0x360> 0.00 : 118694: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11869b: 00 00 00 00 00 0.00 : 1186a0: 31 c9 xor %ecx,%ecx 0.00 : 1186a2: 4d 39 d0 cmp %r10,%r8 0.00 : 1186a5: 0f 86 f7 05 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1186ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1186b0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1186b6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1186ba: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1186be: 85 d2 test %edx,%edx 0.00 : 1186c0: 0f 85 dc 05 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1186c6: 49 83 e8 10 sub $0x10,%r8 0.00 : 1186ca: 0f 86 22 06 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1186d0: 66 0f 3a 0f 1c 0e 0b palignr $0xb,(%rsi,%rcx,1),%xmm3 0.00 : 1186d7: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1186dc: 48 83 c1 10 add $0x10,%rcx 0.00 : 1186e0: 4d 39 d0 cmp %r10,%r8 0.00 : 1186e3: 0f 86 b9 05 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1186e9: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1186ef: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1186f3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1186f7: 85 d2 test %edx,%edx 0.00 : 1186f9: 0f 85 a3 05 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1186ff: 49 83 e8 10 sub $0x10,%r8 0.00 : 118703: 0f 86 e9 05 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118709: 66 0f 3a 0f 1c 0e 0b palignr $0xb,(%rsi,%rcx,1),%xmm3 0.00 : 118710: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118715: 48 83 c1 10 add $0x10,%rcx 0.00 : 118719: 4d 39 d0 cmp %r10,%r8 0.00 : 11871c: 0f 86 80 05 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118722: eb 8c jmp 1186b0 <__strncpy_ssse3+0x3f0> 0.00 : 118724: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11872b: 00 00 00 00 00 0.00 : 118730: 31 c9 xor %ecx,%ecx 0.00 : 118732: 4d 39 d0 cmp %r10,%r8 0.00 : 118735: 0f 86 67 05 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11873b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118740: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118746: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 11874a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11874e: 85 d2 test %edx,%edx 0.00 : 118750: 0f 85 4c 05 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118756: 49 83 e8 10 sub $0x10,%r8 0.00 : 11875a: 0f 86 92 05 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118760: 66 0f 3a 0f 1c 0e 0a palignr $0xa,(%rsi,%rcx,1),%xmm3 0.00 : 118767: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 11876c: 48 83 c1 10 add $0x10,%rcx 0.00 : 118770: 4d 39 d0 cmp %r10,%r8 0.00 : 118773: 0f 86 29 05 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118779: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 11877f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118783: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118787: 85 d2 test %edx,%edx 0.00 : 118789: 0f 85 13 05 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11878f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118793: 0f 86 59 05 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118799: 66 0f 3a 0f 1c 0e 0a palignr $0xa,(%rsi,%rcx,1),%xmm3 0.00 : 1187a0: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1187a5: 48 83 c1 10 add $0x10,%rcx 0.00 : 1187a9: 4d 39 d0 cmp %r10,%r8 0.00 : 1187ac: 0f 86 f0 04 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1187b2: eb 8c jmp 118740 <__strncpy_ssse3+0x480> 0.00 : 1187b4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1187bb: 00 00 00 00 00 0.00 : 1187c0: 31 c9 xor %ecx,%ecx 0.00 : 1187c2: 4d 39 d0 cmp %r10,%r8 0.00 : 1187c5: 0f 86 d7 04 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1187cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1187d0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1187d6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1187da: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1187de: 85 d2 test %edx,%edx 0.00 : 1187e0: 0f 85 bc 04 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1187e6: 49 83 e8 10 sub $0x10,%r8 0.00 : 1187ea: 0f 86 02 05 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1187f0: 66 0f 3a 0f 1c 0e 09 palignr $0x9,(%rsi,%rcx,1),%xmm3 0.00 : 1187f7: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1187fc: 48 83 c1 10 add $0x10,%rcx 0.00 : 118800: 4d 39 d0 cmp %r10,%r8 0.00 : 118803: 0f 86 99 04 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118809: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 11880f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118813: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118817: 85 d2 test %edx,%edx 0.00 : 118819: 0f 85 83 04 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11881f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118823: 0f 86 c9 04 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118829: 66 0f 3a 0f 1c 0e 09 palignr $0x9,(%rsi,%rcx,1),%xmm3 0.00 : 118830: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118835: 48 83 c1 10 add $0x10,%rcx 0.00 : 118839: 4d 39 d0 cmp %r10,%r8 0.00 : 11883c: 0f 86 60 04 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118842: eb 8c jmp 1187d0 <__strncpy_ssse3+0x510> 0.00 : 118844: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11884b: 00 00 00 00 00 0.00 : 118850: 31 c9 xor %ecx,%ecx 0.00 : 118852: 4d 39 d0 cmp %r10,%r8 0.00 : 118855: 0f 86 47 04 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11885b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118860: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118866: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 11886a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11886e: 85 d2 test %edx,%edx 0.00 : 118870: 0f 85 2c 04 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118876: 49 83 e8 10 sub $0x10,%r8 0.00 : 11887a: 0f 86 72 04 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118880: 66 0f 3a 0f 1c 0e 08 palignr $0x8,(%rsi,%rcx,1),%xmm3 0.00 : 118887: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 11888c: 48 83 c1 10 add $0x10,%rcx 0.00 : 118890: 4d 39 d0 cmp %r10,%r8 0.00 : 118893: 0f 86 09 04 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118899: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 11889f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1188a3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1188a7: 85 d2 test %edx,%edx 0.00 : 1188a9: 0f 85 f3 03 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1188af: 49 83 e8 10 sub $0x10,%r8 0.00 : 1188b3: 0f 86 39 04 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1188b9: 66 0f 3a 0f 1c 0e 08 palignr $0x8,(%rsi,%rcx,1),%xmm3 0.00 : 1188c0: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1188c5: 48 83 c1 10 add $0x10,%rcx 0.00 : 1188c9: 4d 39 d0 cmp %r10,%r8 0.00 : 1188cc: 0f 86 d0 03 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1188d2: eb 8c jmp 118860 <__strncpy_ssse3+0x5a0> 0.00 : 1188d4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1188db: 00 00 00 00 00 0.00 : 1188e0: 31 c9 xor %ecx,%ecx 0.00 : 1188e2: 4d 39 d0 cmp %r10,%r8 0.00 : 1188e5: 0f 86 b7 03 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1188eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1188f0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1188f6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1188fa: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1188fe: 85 d2 test %edx,%edx 0.00 : 118900: 0f 85 9c 03 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118906: 49 83 e8 10 sub $0x10,%r8 0.00 : 11890a: 0f 86 e2 03 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118910: 66 0f 3a 0f 1c 0e 07 palignr $0x7,(%rsi,%rcx,1),%xmm3 0.00 : 118917: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 11891c: 48 83 c1 10 add $0x10,%rcx 0.00 : 118920: 4d 39 d0 cmp %r10,%r8 0.00 : 118923: 0f 86 79 03 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118929: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 11892f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118933: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118937: 85 d2 test %edx,%edx 0.00 : 118939: 0f 85 63 03 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11893f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118943: 0f 86 a9 03 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118949: 66 0f 3a 0f 1c 0e 07 palignr $0x7,(%rsi,%rcx,1),%xmm3 0.00 : 118950: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118955: 48 83 c1 10 add $0x10,%rcx 0.00 : 118959: 4d 39 d0 cmp %r10,%r8 0.00 : 11895c: 0f 86 40 03 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118962: eb 8c jmp 1188f0 <__strncpy_ssse3+0x630> 0.00 : 118964: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11896b: 00 00 00 00 00 0.00 : 118970: 31 c9 xor %ecx,%ecx 0.00 : 118972: 4d 39 d0 cmp %r10,%r8 0.00 : 118975: 0f 86 27 03 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 11897b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118980: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118986: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 11898a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 11898e: 85 d2 test %edx,%edx 0.00 : 118990: 0f 85 0c 03 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118996: 49 83 e8 10 sub $0x10,%r8 0.00 : 11899a: 0f 86 52 03 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1189a0: 66 0f 3a 0f 1c 0e 06 palignr $0x6,(%rsi,%rcx,1),%xmm3 0.00 : 1189a7: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1189ac: 48 83 c1 10 add $0x10,%rcx 0.00 : 1189b0: 4d 39 d0 cmp %r10,%r8 0.00 : 1189b3: 0f 86 e9 02 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1189b9: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1189bf: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1189c3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1189c7: 85 d2 test %edx,%edx 0.00 : 1189c9: 0f 85 d3 02 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1189cf: 49 83 e8 10 sub $0x10,%r8 0.00 : 1189d3: 0f 86 19 03 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 1189d9: 66 0f 3a 0f 1c 0e 06 palignr $0x6,(%rsi,%rcx,1),%xmm3 0.00 : 1189e0: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 1189e5: 48 83 c1 10 add $0x10,%rcx 0.00 : 1189e9: 4d 39 d0 cmp %r10,%r8 0.00 : 1189ec: 0f 86 b0 02 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 1189f2: eb 8c jmp 118980 <__strncpy_ssse3+0x6c0> 0.00 : 1189f4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1189fb: 00 00 00 00 00 0.00 : 118a00: 31 c9 xor %ecx,%ecx 0.00 : 118a02: 4d 39 d0 cmp %r10,%r8 0.00 : 118a05: 0f 86 97 02 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118a0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118a10: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118a16: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118a1a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118a1e: 85 d2 test %edx,%edx 0.00 : 118a20: 0f 85 7c 02 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118a26: 49 83 e8 10 sub $0x10,%r8 0.00 : 118a2a: 0f 86 c2 02 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118a30: 66 0f 3a 0f 1c 0e 05 palignr $0x5,(%rsi,%rcx,1),%xmm3 0.00 : 118a37: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118a3c: 48 83 c1 10 add $0x10,%rcx 0.00 : 118a40: 4d 39 d0 cmp %r10,%r8 0.00 : 118a43: 0f 86 59 02 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118a49: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118a4f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118a53: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118a57: 85 d2 test %edx,%edx 0.00 : 118a59: 0f 85 43 02 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118a5f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118a63: 0f 86 89 02 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118a69: 66 0f 3a 0f 1c 0e 05 palignr $0x5,(%rsi,%rcx,1),%xmm3 0.00 : 118a70: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118a75: 48 83 c1 10 add $0x10,%rcx 0.00 : 118a79: 4d 39 d0 cmp %r10,%r8 0.00 : 118a7c: 0f 86 20 02 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118a82: eb 8c jmp 118a10 <__strncpy_ssse3+0x750> 0.00 : 118a84: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118a8b: 00 00 00 00 00 0.00 : 118a90: 31 c9 xor %ecx,%ecx 0.00 : 118a92: 4d 39 d0 cmp %r10,%r8 0.00 : 118a95: 0f 86 07 02 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118a9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118aa0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118aa6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118aaa: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118aae: 85 d2 test %edx,%edx 0.00 : 118ab0: 0f 85 ec 01 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118ab6: 49 83 e8 10 sub $0x10,%r8 0.00 : 118aba: 0f 86 32 02 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118ac0: 66 0f 3a 0f 1c 0e 04 palignr $0x4,(%rsi,%rcx,1),%xmm3 0.00 : 118ac7: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118acc: 48 83 c1 10 add $0x10,%rcx 0.00 : 118ad0: 4d 39 d0 cmp %r10,%r8 0.00 : 118ad3: 0f 86 c9 01 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118ad9: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118adf: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118ae3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118ae7: 85 d2 test %edx,%edx 0.00 : 118ae9: 0f 85 b3 01 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118aef: 49 83 e8 10 sub $0x10,%r8 0.00 : 118af3: 0f 86 f9 01 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118af9: 66 0f 3a 0f 1c 0e 04 palignr $0x4,(%rsi,%rcx,1),%xmm3 0.00 : 118b00: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118b05: 48 83 c1 10 add $0x10,%rcx 0.00 : 118b09: 4d 39 d0 cmp %r10,%r8 0.00 : 118b0c: 0f 86 90 01 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118b12: eb 8c jmp 118aa0 <__strncpy_ssse3+0x7e0> 0.00 : 118b14: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118b1b: 00 00 00 00 00 0.00 : 118b20: 31 c9 xor %ecx,%ecx 0.00 : 118b22: 4d 39 d0 cmp %r10,%r8 0.00 : 118b25: 0f 86 77 01 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118b2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118b30: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118b36: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118b3a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118b3e: 85 d2 test %edx,%edx 0.00 : 118b40: 0f 85 5c 01 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118b46: 49 83 e8 10 sub $0x10,%r8 0.00 : 118b4a: 0f 86 a2 01 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118b50: 66 0f 3a 0f 1c 0e 03 palignr $0x3,(%rsi,%rcx,1),%xmm3 0.00 : 118b57: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118b5c: 48 83 c1 10 add $0x10,%rcx 0.00 : 118b60: 4d 39 d0 cmp %r10,%r8 0.00 : 118b63: 0f 86 39 01 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118b69: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118b6f: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118b73: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118b77: 85 d2 test %edx,%edx 0.00 : 118b79: 0f 85 23 01 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118b7f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118b83: 0f 86 69 01 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118b89: 66 0f 3a 0f 1c 0e 03 palignr $0x3,(%rsi,%rcx,1),%xmm3 0.00 : 118b90: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118b95: 48 83 c1 10 add $0x10,%rcx 0.00 : 118b99: 4d 39 d0 cmp %r10,%r8 0.00 : 118b9c: 0f 86 00 01 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118ba2: eb 8c jmp 118b30 <__strncpy_ssse3+0x870> 0.00 : 118ba4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118bab: 00 00 00 00 00 0.00 : 118bb0: 31 c9 xor %ecx,%ecx 0.00 : 118bb2: 4d 39 d0 cmp %r10,%r8 0.00 : 118bb5: 0f 86 e7 00 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118bbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118bc0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 3.57 : 118bc6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118bca: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118bce: 85 d2 test %edx,%edx 0.00 : 118bd0: 0f 85 cc 00 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118bd6: 49 83 e8 10 sub $0x10,%r8 0.00 : 118bda: 0f 86 12 01 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118be0: 66 0f 3a 0f 1c 0e 02 palignr $0x2,(%rsi,%rcx,1),%xmm3 0.00 : 118be7: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118bec: 48 83 c1 10 add $0x10,%rcx 0.00 : 118bf0: 4d 39 d0 cmp %r10,%r8 0.00 : 118bf3: 0f 86 a9 00 00 00 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118bf9: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118bff: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118c03: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118c07: 85 d2 test %edx,%edx 0.00 : 118c09: 0f 85 93 00 00 00 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118c0f: 49 83 e8 10 sub $0x10,%r8 0.00 : 118c13: 0f 86 d9 00 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118c19: 66 0f 3a 0f 1c 0e 02 palignr $0x2,(%rsi,%rcx,1),%xmm3 0.00 : 118c20: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118c25: 48 83 c1 10 add $0x10,%rcx 0.00 : 118c29: 4d 39 d0 cmp %r10,%r8 0.00 : 118c2c: 76 74 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118c2e: eb 90 jmp 118bc0 <__strncpy_ssse3+0x900> 0.00 : 118c30: 31 c9 xor %ecx,%ecx 0.00 : 118c32: 4d 39 d0 cmp %r10,%r8 0.00 : 118c35: 76 6b jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118c37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 118c3e: 00 00 0.00 : 118c40: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118c46: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118c4a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118c4e: 85 d2 test %edx,%edx 0.00 : 118c50: 75 50 jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118c52: 49 83 e8 10 sub $0x10,%r8 0.00 : 118c56: 0f 86 96 00 00 00 jbe 118cf2 <__strncpy_ssse3+0xa32> 3.57 : 118c5c: 66 0f 3a 0f 1c 0e 01 palignr $0x1,(%rsi,%rcx,1),%xmm3 0.00 : 118c63: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118c68: 48 83 c1 10 add $0x10,%rcx 0.00 : 118c6c: 4d 39 d0 cmp %r10,%r8 0.00 : 118c6f: 76 31 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118c71: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 118c77: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 118c7b: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 118c7f: 85 d2 test %edx,%edx 0.00 : 118c81: 75 1f jne 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118c83: 49 83 e8 10 sub $0x10,%r8 0.00 : 118c87: 76 69 jbe 118cf2 <__strncpy_ssse3+0xa32> 0.00 : 118c89: 66 0f 3a 0f 1c 0e 01 palignr $0x1,(%rsi,%rcx,1),%xmm3 0.00 : 118c90: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 118c95: 48 83 c1 10 add $0x10,%rcx 0.00 : 118c99: 4d 39 d0 cmp %r10,%r8 0.00 : 118c9c: 76 04 jbe 118ca2 <__strncpy_ssse3+0x9e2> 0.00 : 118c9e: eb a0 jmp 118c40 <__strncpy_ssse3+0x980> 0.00 : 118ca0: 31 c9 xor %ecx,%ecx 0.00 : 118ca2: 4c 01 ce add %r9,%rsi 0.00 : 118ca5: 49 89 c9 mov %rcx,%r9 0.00 : 118ca8: 4c 89 d1 mov %r10,%rcx 0.00 : 118cab: d3 e2 shl %cl,%edx 0.00 : 118cad: 4c 89 c9 mov %r9,%rcx 0.00 : 118cb0: 48 01 cf add %rcx,%rdi 0.00 : 118cb3: 48 01 ce add %rcx,%rsi 0.00 : 118cb6: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 118cbc: 49 8d 48 ff lea -0x1(%r8),%rcx 0.00 : 118cc0: 41 d3 e1 shl %cl,%r9d 0.00 : 118cc3: 49 83 f8 20 cmp $0x20,%r8 0.00 : 118cc7: 77 03 ja 118ccc <__strncpy_ssse3+0xa0c> 0.00 : 118cc9: 44 09 ca or %r9d,%edx 0.00 : 118ccc: 48 0f bc ca bsf %rdx,%rcx 0.00 : 118cd0: 4c 8d 1d 09 b0 02 00 lea 0x2b009(%rip),%r11 # 143ce0 0.00 : 118cd7: 49 63 0c 8b movslq (%r11,%rcx,4),%rcx ??:0 7.14 : 118cdb: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx 0.00 : 118cdf: ff e1 jmpq *%rcx 0.00 : 118ce1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118ce8: 0f 1f 84 00 00 00 00 0.00 : 118cef: 00 0.00 : 118cf0: 31 c9 xor %ecx,%ecx 0.00 : 118cf2: 4c 01 ce add %r9,%rsi 0.00 : 118cf5: 48 01 cf add %rcx,%rdi 0.00 : 118cf8: 48 01 ce add %rcx,%rsi 0.00 : 118cfb: 49 83 c0 10 add $0x10,%r8 0.00 : 118cff: 49 8d 48 ff lea -0x1(%r8),%rcx 0.00 : 118d03: 4c 8d 1d d6 af 02 00 lea 0x2afd6(%rip),%r11 # 143ce0 0.00 : 118d0a: 49 63 0c 8b movslq (%r11,%rcx,4),%rcx 0.00 : 118d0e: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx 0.00 : 118d12: ff e1 jmpq *%rcx 0.00 : 118d14: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118d1b: 00 00 00 00 00 0.00 : 118d20: 48 89 f8 mov %rdi,%rax 0.00 : 118d23: c3 retq 0.00 : 118d24: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118d2b: 00 00 00 00 00 0.00 : 118d30: 48 89 c2 mov %rax,%rdx 0.00 : 118d33: 48 0f b6 c1 movzbq %cl,%rax 0.00 : 118d37: 4c 89 c1 mov %r8,%rcx 0.00 : 118d3a: 48 01 c7 add %rax,%rdi 0.00 : 118d3d: 31 c0 xor %eax,%eax 0.00 : 118d3f: c1 e9 03 shr $0x3,%ecx 0.00 : 118d42: 74 03 je 118d47 <__strncpy_ssse3+0xa87> 0.00 : 118d44: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 118d47: 4c 89 c1 mov %r8,%rcx 0.00 : 118d4a: 83 e1 07 and $0x7,%ecx 0.00 : 118d4d: 74 08 je 118d57 <__strncpy_ssse3+0xa97> 0.00 : 118d4f: 83 e9 01 sub $0x1,%ecx 0.00 : 118d52: 88 04 0f mov %al,(%rdi,%rcx,1) 0.00 : 118d55: 75 f8 jne 118d4f <__strncpy_ssse3+0xa8f> 0.00 : 118d57: 48 89 d0 mov %rdx,%rax 0.00 : 118d5a: c3 retq 0.00 : 118d5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118d60: 8a 0e mov (%rsi),%cl 0.00 : 118d62: 88 0f mov %cl,(%rdi) 0.00 : 118d64: b1 01 mov $0x1,%cl 0.00 : 118d66: 49 83 e8 01 sub $0x1,%r8 0.00 : 118d6a: 75 c4 jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118d6c: c3 retq 0.00 : 118d6d: 0f 1f 00 nopl (%rax) 0.00 : 118d70: 66 8b 0e mov (%rsi),%cx 0.00 : 118d73: 66 89 0f mov %cx,(%rdi) 0.00 : 118d76: b1 02 mov $0x2,%cl 0.00 : 118d78: 49 83 e8 02 sub $0x2,%r8 0.00 : 118d7c: 75 b2 jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118d7e: c3 retq 0.00 : 118d7f: 90 nop 0.00 : 118d80: 66 8b 0e mov (%rsi),%cx 0.00 : 118d83: 66 89 0f mov %cx,(%rdi) 0.00 : 118d86: 66 8b 4e 01 mov 0x1(%rsi),%cx 0.00 : 118d8a: 66 89 4f 01 mov %cx,0x1(%rdi) 0.00 : 118d8e: b1 03 mov $0x3,%cl 0.00 : 118d90: 49 83 e8 03 sub $0x3,%r8 0.00 : 118d94: 75 9a jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118d96: c3 retq 0.00 : 118d97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 118d9e: 00 00 0.00 : 118da0: 8b 0e mov (%rsi),%ecx 0.00 : 118da2: 89 0f mov %ecx,(%rdi) 0.00 : 118da4: b1 04 mov $0x4,%cl 0.00 : 118da6: 49 83 e8 04 sub $0x4,%r8 0.00 : 118daa: 75 84 jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118dac: c3 retq 0.00 : 118dad: 0f 1f 00 nopl (%rax) ??:0 3.57 : 118db0: 8b 0e mov (%rsi),%ecx 0.00 : 118db2: 89 0f mov %ecx,(%rdi) 0.00 : 118db4: 8b 56 01 mov 0x1(%rsi),%edx 0.00 : 118db7: 89 57 01 mov %edx,0x1(%rdi) 0.00 : 118dba: b1 05 mov $0x5,%cl 0.00 : 118dbc: 49 83 e8 05 sub $0x5,%r8 0.00 : 118dc0: 0f 85 6a ff ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118dc6: c3 retq 0.00 : 118dc7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 118dce: 00 00 0.00 : 118dd0: 8b 0e mov (%rsi),%ecx 0.00 : 118dd2: 89 0f mov %ecx,(%rdi) 0.00 : 118dd4: 8b 56 02 mov 0x2(%rsi),%edx 0.00 : 118dd7: 89 57 02 mov %edx,0x2(%rdi) 0.00 : 118dda: b1 06 mov $0x6,%cl 0.00 : 118ddc: 49 83 e8 06 sub $0x6,%r8 0.00 : 118de0: 0f 85 4a ff ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118de6: c3 retq 0.00 : 118de7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 118dee: 00 00 0.00 : 118df0: 8b 0e mov (%rsi),%ecx 0.00 : 118df2: 89 0f mov %ecx,(%rdi) 0.00 : 118df4: 8b 56 03 mov 0x3(%rsi),%edx 0.00 : 118df7: 89 57 03 mov %edx,0x3(%rdi) 0.00 : 118dfa: b1 07 mov $0x7,%cl 0.00 : 118dfc: 49 83 e8 07 sub $0x7,%r8 0.00 : 118e00: 0f 85 2a ff ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118e06: c3 retq 0.00 : 118e07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 118e0e: 00 00 3.57 : 118e10: 48 8b 0e mov (%rsi),%rcx 0.00 : 118e13: 48 89 0f mov %rcx,(%rdi) 0.00 : 118e16: b1 08 mov $0x8,%cl 0.00 : 118e18: 49 83 e8 08 sub $0x8,%r8 0.00 : 118e1c: 0f 85 0e ff ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118e22: c3 retq 0.00 : 118e23: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118e2a: 84 00 00 00 00 00 0.00 : 118e30: 48 8b 0e mov (%rsi),%rcx 0.00 : 118e33: 48 89 0f mov %rcx,(%rdi) 0.00 : 118e36: 8b 56 05 mov 0x5(%rsi),%edx 0.00 : 118e39: 89 57 05 mov %edx,0x5(%rdi) 0.00 : 118e3c: b1 09 mov $0x9,%cl 0.00 : 118e3e: 49 83 e8 09 sub $0x9,%r8 0.00 : 118e42: 0f 85 e8 fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118e48: c3 retq 0.00 : 118e49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 118e50: 48 8b 0e mov (%rsi),%rcx 0.00 : 118e53: 48 89 0f mov %rcx,(%rdi) 0.00 : 118e56: 8b 56 06 mov 0x6(%rsi),%edx 0.00 : 118e59: 89 57 06 mov %edx,0x6(%rdi) 0.00 : 118e5c: b1 0a mov $0xa,%cl 0.00 : 118e5e: 49 83 e8 0a sub $0xa,%r8 0.00 : 118e62: 0f 85 c8 fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118e68: c3 retq 0.00 : 118e69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 118e70: 48 8b 0e mov (%rsi),%rcx 0.00 : 118e73: 48 89 0f mov %rcx,(%rdi) 0.00 : 118e76: 8b 56 07 mov 0x7(%rsi),%edx 0.00 : 118e79: 89 57 07 mov %edx,0x7(%rdi) 0.00 : 118e7c: b1 0b mov $0xb,%cl 0.00 : 118e7e: 49 83 e8 0b sub $0xb,%r8 0.00 : 118e82: 0f 85 a8 fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118e88: c3 retq 0.00 : 118e89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 118e90: 48 8b 0e mov (%rsi),%rcx 3.57 : 118e93: 48 89 0f mov %rcx,(%rdi) 0.00 : 118e96: 8b 56 08 mov 0x8(%rsi),%edx 0.00 : 118e99: 89 57 08 mov %edx,0x8(%rdi) 0.00 : 118e9c: b1 0c mov $0xc,%cl 0.00 : 118e9e: 49 83 e8 0c sub $0xc,%r8 0.00 : 118ea2: 0f 85 88 fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118ea8: c3 retq 0.00 : 118ea9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 118eb0: 48 8b 0e mov (%rsi),%rcx 3.57 : 118eb3: 48 89 0f mov %rcx,(%rdi) 0.00 : 118eb6: 48 8b 4e 05 mov 0x5(%rsi),%rcx 0.00 : 118eba: 48 89 4f 05 mov %rcx,0x5(%rdi) 0.00 : 118ebe: b1 0d mov $0xd,%cl 0.00 : 118ec0: 49 83 e8 0d sub $0xd,%r8 0.00 : 118ec4: 0f 85 66 fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118eca: c3 retq 0.00 : 118ecb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 3.57 : 118ed0: 48 8b 0e mov (%rsi),%rcx 0.00 : 118ed3: 48 89 0f mov %rcx,(%rdi) 0.00 : 118ed6: 48 8b 4e 06 mov 0x6(%rsi),%rcx 0.00 : 118eda: 48 89 4f 06 mov %rcx,0x6(%rdi) 0.00 : 118ede: b1 0e mov $0xe,%cl 0.00 : 118ee0: 49 83 e8 0e sub $0xe,%r8 0.00 : 118ee4: 0f 85 46 fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118eea: c3 retq 0.00 : 118eeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118ef0: 48 8b 0e mov (%rsi),%rcx 0.00 : 118ef3: 48 89 0f mov %rcx,(%rdi) 0.00 : 118ef6: 48 8b 4e 07 mov 0x7(%rsi),%rcx 0.00 : 118efa: 48 89 4f 07 mov %rcx,0x7(%rdi) 0.00 : 118efe: b1 0f mov $0xf,%cl 0.00 : 118f00: 49 83 e8 0f sub $0xf,%r8 0.00 : 118f04: 0f 85 26 fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118f0a: c3 retq 0.00 : 118f0b: 48 8b 0e mov (%rsi),%rcx 0.00 : 118f0e: 48 89 0f mov %rcx,(%rdi) 0.00 : 118f11: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 118f15: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 118f19: b1 10 mov $0x10,%cl 0.00 : 118f1b: 49 83 e8 10 sub $0x10,%r8 0.00 : 118f1f: 0f 85 0b fe ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118f25: c3 retq 0.00 : 118f26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118f2d: 00 00 00 0.00 : 118f30: 48 8b 0e mov (%rsi),%rcx 0.00 : 118f33: 48 89 0f mov %rcx,(%rdi) 0.00 : 118f36: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 118f3a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 118f3e: 8a 4e 10 mov 0x10(%rsi),%cl 0.00 : 118f41: 88 4f 10 mov %cl,0x10(%rdi) 0.00 : 118f44: b1 11 mov $0x11,%cl 0.00 : 118f46: 49 83 e8 11 sub $0x11,%r8 0.00 : 118f4a: 0f 85 e0 fd ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118f50: c3 retq 0.00 : 118f51: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118f58: 0f 1f 84 00 00 00 00 0.00 : 118f5f: 00 0.00 : 118f60: 48 8b 0e mov (%rsi),%rcx 0.00 : 118f63: 48 89 0f mov %rcx,(%rdi) 0.00 : 118f66: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 118f6a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 118f6e: 66 8b 4e 10 mov 0x10(%rsi),%cx 0.00 : 118f72: 66 89 4f 10 mov %cx,0x10(%rdi) 0.00 : 118f76: b1 12 mov $0x12,%cl 0.00 : 118f78: 49 83 e8 12 sub $0x12,%r8 0.00 : 118f7c: 0f 85 ae fd ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118f82: c3 retq 0.00 : 118f83: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118f8a: 84 00 00 00 00 00 0.00 : 118f90: 48 8b 0e mov (%rsi),%rcx 0.00 : 118f93: 48 89 0f mov %rcx,(%rdi) 0.00 : 118f96: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 118f9a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 118f9e: 8b 4e 0f mov 0xf(%rsi),%ecx 0.00 : 118fa1: 89 4f 0f mov %ecx,0xf(%rdi) 0.00 : 118fa4: b1 13 mov $0x13,%cl 0.00 : 118fa6: 49 83 e8 13 sub $0x13,%r8 0.00 : 118faa: 0f 85 80 fd ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118fb0: c3 retq 0.00 : 118fb1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118fb8: 0f 1f 84 00 00 00 00 0.00 : 118fbf: 00 0.00 : 118fc0: 48 8b 0e mov (%rsi),%rcx 0.00 : 118fc3: 48 89 0f mov %rcx,(%rdi) 0.00 : 118fc6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 118fca: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 118fce: 8b 4e 10 mov 0x10(%rsi),%ecx 0.00 : 118fd1: 89 4f 10 mov %ecx,0x10(%rdi) 0.00 : 118fd4: b1 14 mov $0x14,%cl 0.00 : 118fd6: 49 83 e8 14 sub $0x14,%r8 0.00 : 118fda: 0f 85 50 fd ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 118fe0: c3 retq 0.00 : 118fe1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 118fe8: 0f 1f 84 00 00 00 00 0.00 : 118fef: 00 0.00 : 118ff0: 48 8b 0e mov (%rsi),%rcx 0.00 : 118ff3: 48 89 0f mov %rcx,(%rdi) 0.00 : 118ff6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 118ffa: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 118ffe: 48 8b 4e 0d mov 0xd(%rsi),%rcx 0.00 : 119002: 48 89 4f 0d mov %rcx,0xd(%rdi) 0.00 : 119006: b1 15 mov $0x15,%cl 0.00 : 119008: 49 83 e8 15 sub $0x15,%r8 0.00 : 11900c: 0f 85 1e fd ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 119012: c3 retq 0.00 : 119013: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11901a: 84 00 00 00 00 00 0.00 : 119020: 48 8b 0e mov (%rsi),%rcx 0.00 : 119023: 48 89 0f mov %rcx,(%rdi) 0.00 : 119026: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11902a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11902e: 48 8b 4e 0e mov 0xe(%rsi),%rcx 0.00 : 119032: 48 89 4f 0e mov %rcx,0xe(%rdi) 0.00 : 119036: b1 16 mov $0x16,%cl 0.00 : 119038: 49 83 e8 16 sub $0x16,%r8 0.00 : 11903c: 0f 85 ee fc ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 119042: c3 retq 0.00 : 119043: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11904a: 84 00 00 00 00 00 0.00 : 119050: 48 8b 0e mov (%rsi),%rcx 0.00 : 119053: 48 89 0f mov %rcx,(%rdi) 0.00 : 119056: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11905a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11905e: 48 8b 4e 0f mov 0xf(%rsi),%rcx 0.00 : 119062: 48 89 4f 0f mov %rcx,0xf(%rdi) 0.00 : 119066: b1 17 mov $0x17,%cl 0.00 : 119068: 49 83 e8 17 sub $0x17,%r8 0.00 : 11906c: 0f 85 be fc ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 119072: c3 retq 0.00 : 119073: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11907a: 84 00 00 00 00 00 0.00 : 119080: 48 8b 0e mov (%rsi),%rcx 0.00 : 119083: 48 89 0f mov %rcx,(%rdi) 0.00 : 119086: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11908a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11908e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 119092: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 119096: b1 18 mov $0x18,%cl 0.00 : 119098: 49 83 e8 18 sub $0x18,%r8 0.00 : 11909c: 0f 85 8e fc ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 1190a2: c3 retq 0.00 : 1190a3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1190aa: 84 00 00 00 00 00 0.00 : 1190b0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1190b3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1190b6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1190ba: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1190be: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1190c2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1190c6: 8b 56 15 mov 0x15(%rsi),%edx 0.00 : 1190c9: 89 57 15 mov %edx,0x15(%rdi) 0.00 : 1190cc: b1 19 mov $0x19,%cl 0.00 : 1190ce: 49 83 e8 19 sub $0x19,%r8 0.00 : 1190d2: 0f 85 58 fc ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 1190d8: c3 retq 0.00 : 1190d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1190e0: 48 8b 0e mov (%rsi),%rcx 3.57 : 1190e3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1190e6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1190ea: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1190ee: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1190f2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1190f6: 8b 56 16 mov 0x16(%rsi),%edx 0.00 : 1190f9: 89 57 16 mov %edx,0x16(%rdi) 0.00 : 1190fc: b1 1a mov $0x1a,%cl 0.00 : 1190fe: 49 83 e8 1a sub $0x1a,%r8 0.00 : 119102: 0f 85 28 fc ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 119108: c3 retq 0.00 : 119109: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 119110: 48 8b 0e mov (%rsi),%rcx 0.00 : 119113: 48 89 0f mov %rcx,(%rdi) 0.00 : 119116: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11911a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11911e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 119122: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 119126: 8b 56 17 mov 0x17(%rsi),%edx 0.00 : 119129: 89 57 17 mov %edx,0x17(%rdi) 0.00 : 11912c: b1 1b mov $0x1b,%cl 0.00 : 11912e: 49 83 e8 1b sub $0x1b,%r8 0.00 : 119132: 0f 85 f8 fb ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 119138: c3 retq 0.00 : 119139: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 119140: 48 8b 0e mov (%rsi),%rcx 0.00 : 119143: 48 89 0f mov %rcx,(%rdi) 0.00 : 119146: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11914a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11914e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 119152: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 119156: 8b 56 18 mov 0x18(%rsi),%edx 0.00 : 119159: 89 57 18 mov %edx,0x18(%rdi) 0.00 : 11915c: b1 1c mov $0x1c,%cl 0.00 : 11915e: 49 83 e8 1c sub $0x1c,%r8 0.00 : 119162: 0f 85 c8 fb ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 119168: c3 retq 0.00 : 119169: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 119170: 48 8b 0e mov (%rsi),%rcx 0.00 : 119173: 48 89 0f mov %rcx,(%rdi) 0.00 : 119176: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11917a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11917e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 119182: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 119186: 48 8b 56 15 mov 0x15(%rsi),%rdx 0.00 : 11918a: 48 89 57 15 mov %rdx,0x15(%rdi) 0.00 : 11918e: b1 1d mov $0x1d,%cl 0.00 : 119190: 49 83 e8 1d sub $0x1d,%r8 0.00 : 119194: 0f 85 96 fb ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 11919a: c3 retq 0.00 : 11919b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1191a0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1191a3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1191a6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1191aa: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1191ae: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1191b2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1191b6: 48 8b 56 16 mov 0x16(%rsi),%rdx 0.00 : 1191ba: 48 89 57 16 mov %rdx,0x16(%rdi) 0.00 : 1191be: b1 1e mov $0x1e,%cl 0.00 : 1191c0: 49 83 e8 1e sub $0x1e,%r8 0.00 : 1191c4: 0f 85 66 fb ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 1191ca: c3 retq 0.00 : 1191cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1191d0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1191d3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1191d6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1191da: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1191de: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1191e2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1191e6: 48 8b 56 17 mov 0x17(%rsi),%rdx 0.00 : 1191ea: 48 89 57 17 mov %rdx,0x17(%rdi) 0.00 : 1191ee: b1 1f mov $0x1f,%cl 0.00 : 1191f0: 49 83 e8 1f sub $0x1f,%r8 0.00 : 1191f4: 0f 85 36 fb ff ff jne 118d30 <__strncpy_ssse3+0xa70> 0.00 : 1191fa: c3 retq 0.00 : 1191fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 119200: 48 8b 0e mov (%rsi),%rcx 0.00 : 119203: 48 89 0f mov %rcx,(%rdi) 0.00 : 119206: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11920a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11920e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 119212: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 119216: 48 8b 56 18 mov 0x18(%rsi),%rdx 0.00 : 11921a: 48 89 57 18 mov %rdx,0x18(%rdi) 0.00 : 11921e: b1 20 mov $0x20,%cl 0.00 : 119220: 49 83 e8 20 sub $0x20,%r8 0.00 : 119224: 0f 85 06 fb ff ff jne 118d30 <__strncpy_ssse3+0xa70> Sorted summary for file /bin/bash ---------------------------------------------- 21.05 ??:0 10.53 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000041f790 : ??:0 10.53 : 41f790: 41 57 push %r15 5.26 : 41f792: 45 31 ff xor %r15d,%r15d 0.00 : 41f795: 41 56 push %r14 0.00 : 41f797: 41 55 push %r13 0.00 : 41f799: 41 54 push %r12 0.00 : 41f79b: 55 push %rbp 0.00 : 41f79c: 53 push %rbx 0.00 : 41f79d: 48 81 ec 78 0e 00 00 sub $0xe78,%rsp 0.00 : 41f7a4: c7 05 d2 72 27 00 00 movl $0x0,0x2772d2(%rip) # 696a80 0.00 : 41f7ab: 00 00 00 0.00 : 41f7ae: c7 05 74 72 27 00 fe movl $0xfffffffe,0x277274(%rip) # 696a2c 0.00 : 41f7b5: ff ff ff 0.00 : 41f7b8: 4c 8d 84 24 c0 0c 00 lea 0xcc0(%rsp),%r8 0.00 : 41f7bf: 00 0.00 : 41f7c0: 48 8d 6c 24 40 lea 0x40(%rsp),%rbp 21.05 : 41f7c5: c7 44 24 2c 00 00 00 movl $0x0,0x2c(%rsp) 0.00 : 41f7cc: 00 0.00 : 41f7cd: 48 c7 44 24 30 c8 00 movq $0xc8,0x30(%rsp) 0.00 : 41f7d4: 00 00 0.00 : 41f7d6: 48 c7 44 24 18 c7 00 movq $0xc7,0x18(%rsp) 0.00 : 41f7dd: 00 00 0.00 : 41f7df: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 41f7e4: 4d 89 c5 mov %r8,%r13 0.00 : 41f7e7: 49 89 ee mov %rbp,%r14 0.00 : 41f7ea: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 41f7ef: 66 45 89 7d 00 mov %r15w,0x0(%r13) 0.00 : 41f7f4: 48 89 6c 24 38 mov %rbp,0x38(%rsp) 0.00 : 41f7f9: 49 8d 04 50 lea (%r8,%rdx,2),%rax 0.00 : 41f7fd: 49 39 c5 cmp %rax,%r13 0.00 : 41f800: 0f 82 d8 00 00 00 jb 41f8de 0.00 : 41f806: 48 81 7c 24 30 0f 27 cmpq $0x270f,0x30(%rsp) 0.00 : 41f80d: 00 00 0.00 : 41f80f: 0f 87 90 1c 00 00 ja 4214a5 0.00 : 41f815: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 41f81a: b9 10 27 00 00 mov $0x2710,%ecx 0.00 : 41f81f: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41f824: 48 01 c0 add %rax,%rax 0.00 : 41f827: 48 3d 10 27 00 00 cmp $0x2710,%rax 0.00 : 41f82d: 48 0f 46 c8 cmovbe %rax,%rcx 0.00 : 41f831: 48 8d 3c c9 lea (%rcx,%rcx,8),%rdi 0.00 : 41f835: 48 89 4c 24 30 mov %rcx,0x30(%rsp) 0.00 : 41f83a: 48 8d 7c 3f 0f lea 0xf(%rdi,%rdi,1),%rdi 0.00 : 41f83f: e8 dc 68 ff ff callq 416120 0.00 : 41f844: 48 85 c0 test %rax,%rax 0.00 : 41f847: 48 89 c3 mov %rax,%rbx 0.00 : 41f84a: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41f84f: 0f 84 50 1c 00 00 je 4214a5 0.00 : 41f855: 4d 29 c5 sub %r8,%r13 0.00 : 41f858: 4c 89 c6 mov %r8,%rsi 0.00 : 41f85b: 48 89 c7 mov %rax,%rdi 0.00 : 41f85e: 49 d1 fd sar %r13 0.00 : 41f861: 4d 8d 65 01 lea 0x1(%r13),%r12 0.00 : 41f865: 4b 8d 14 24 lea (%r12,%r12,1),%rdx 0.00 : 41f869: e8 c2 6e ff ff callq 416730 0.00 : 41f86e: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 41f873: 48 89 ee mov %rbp,%rsi 0.00 : 41f876: 48 8d 44 12 0f lea 0xf(%rdx,%rdx,1),%rax 0.00 : 41f87b: 4c 89 e2 mov %r12,%rdx 0.00 : 41f87e: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 41f882: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 41f886: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 41f88a: 48 89 c7 mov %rax,%rdi 0.00 : 41f88d: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 41f892: e8 99 6e ff ff callq 416730 0.00 : 41f897: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41f89c: 4c 3b 44 24 08 cmp 0x8(%rsp),%r8 0.00 : 41f8a1: 74 08 je 41f8ab 0.00 : 41f8a3: 4c 89 c7 mov %r8,%rdi 0.00 : 41f8a6: e8 15 6b ff ff callq 4163c0 0.00 : 41f8ab: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 41f8b0: 49 8d 54 24 ff lea -0x1(%r12),%rdx 0.00 : 41f8b5: 4c 8d 2c 53 lea (%rbx,%rdx,2),%r13 0.00 : 41f8b9: 48 83 e9 01 sub $0x1,%rcx 0.00 : 41f8bd: 48 8d 04 4b lea (%rbx,%rcx,2),%rax 0.00 : 41f8c1: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 41f8c6: 49 39 c5 cmp %rax,%r13 0.00 : 41f8c9: 0f 83 1f 1c 00 00 jae 4214ee 0.00 : 41f8cf: 4c 8b 74 24 38 mov 0x38(%rsp),%r14 0.00 : 41f8d4: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 41f8d8: 49 89 d8 mov %rbx,%r8 0.00 : 41f8db: 49 01 d6 add %rdx,%r14 5.26 : 41f8de: 49 63 ef movslq %r15d,%rbp 5.26 : 41f8e1: 0f bf 9c 2d a0 2e 47 movswl 0x472ea0(%rbp,%rbp,1),%ebx 0.00 : 41f8e8: 00 0.00 : 41f8e9: 81 fb 52 ff ff ff cmp $0xffffff52,%ebx 0.00 : 41f8ef: 74 4d je 41f93e 0.00 : 41f8f1: 83 3d 34 71 27 00 fe cmpl $0xfffffffe,0x277134(%rip) # 696a2c 0.00 : 41f8f8: 0f 84 82 02 00 00 je 41fb80 0.00 : 41f8fe: 8b 05 28 71 27 00 mov 0x277128(%rip),%eax # 696a2c 0.00 : 41f904: 85 c0 test %eax,%eax 0.00 : 41f906: 0f 8e ec 02 00 00 jle 41fbf8 0.00 : 41f90c: 3d 29 01 00 00 cmp $0x129,%eax 0.00 : 41f911: ba 02 00 00 00 mov $0x2,%edx 0.00 : 41f916: 77 09 ja 41f921 0.00 : 41f918: 48 98 cltq 0.00 : 41f91a: 0f b6 90 00 31 47 00 movzbl 0x473100(%rax),%edx 0.00 : 41f921: 8d 04 1a lea (%rdx,%rbx,1),%eax 0.00 : 41f924: 3d 5b 02 00 00 cmp $0x25b,%eax 0.00 : 41f929: 77 13 ja 41f93e 0.00 : 41f92b: 48 63 c8 movslq %eax,%rcx 0.00 : 41f92e: 0f bf 84 09 40 32 47 movswl 0x473240(%rcx,%rcx,1),%eax 0.00 : 41f935: 00 5.26 : 41f936: 39 d0 cmp %edx,%eax 0.00 : 41f938: 0f 84 4a 01 00 00 je 41fa88 5.26 : 41f93e: 0f b6 8d c0 3b 47 00 movzbl 0x473bc0(%rbp),%ecx 0.00 : 41f945: 0f b6 c1 movzbl %cl,%eax 0.00 : 41f948: 85 c0 test %eax,%eax 0.00 : 41f94a: 0f 84 50 01 00 00 je 41faa0 0.00 : 41f950: 48 98 cltq 0.00 : 41f952: 44 0f b6 b8 00 3d 47 movzbl 0x473d00(%rax),%r15d 0.00 : 41f959: 00 0.00 : 41f95a: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 41f95f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 41f964: 44 29 f8 sub %r15d,%eax 0.00 : 41f967: 48 98 cltq 0.00 : 41f969: 48 c1 e0 04 shl $0x4,%rax 0.00 : 41f96d: 80 f9 8d cmp $0x8d,%cl 0.00 : 41f970: 4a 8b 14 30 mov (%rax,%r14,1),%rdx 5.26 : 41f974: 48 89 94 24 60 0e 00 mov %rdx,0xe60(%rsp) 0.00 : 41f97b: 00 0.00 : 41f97c: 4a 8b 44 30 08 mov 0x8(%rax,%r14,1),%rax 0.00 : 41f981: 48 89 84 24 68 0e 00 mov %rax,0xe68(%rsp) 0.00 : 41f988: 00 0.00 : 41f989: 77 75 ja 41fa00 0.00 : 41f98b: 0f b6 c1 movzbl %cl,%eax 0.00 : 41f98e: ff 24 c5 c0 29 47 00 jmpq *0x4729c0(,%rax,8) 0.00 : 41f995: 48 63 05 48 b4 26 00 movslq 0x26b448(%rip),%rax # 68ade4 0.00 : 41f99c: 49 8b 5e f0 mov -0x10(%r14),%rbx 0.00 : 41f9a0: 8b 2c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebp 0.00 : 41f9a7: 49 8b 46 b0 mov -0x50(%r14),%rax 0.00 : 41f9ab: 48 85 c0 test %rax,%rax 0.00 : 41f9ae: 74 1a je 41f9ca 0.00 : 41f9b0: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 41f9b4: 74 14 je 41f9ca 0.00 : 41f9b6: 48 89 c7 mov %rax,%rdi 0.00 : 41f9b9: 31 c0 xor %eax,%eax 0.00 : 41f9bb: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41f9c0: e8 0b 2f 03 00 callq 4528d0 0.00 : 41f9c5: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41f9ca: 49 8b 7e 80 mov -0x80(%r14),%rdi 0.00 : 41f9ce: 89 e9 mov %ebp,%ecx 0.00 : 41f9d0: 48 89 da mov %rbx,%rdx 0.00 : 41f9d3: 48 89 c6 mov %rax,%rsi 0.00 : 41f9d6: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41f9db: e8 b0 33 00 00 callq 422d90 0.00 : 41f9e0: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41f9e7: 00 0.00 : 41f9e8: 8b 05 f6 b3 26 00 mov 0x26b3f6(%rip),%eax # 68ade4 0.00 : 41f9ee: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41f9f3: 85 c0 test %eax,%eax 0.00 : 41f9f5: 7e 09 jle 41fa00 0.00 : 41f9f7: 83 e8 01 sub $0x1,%eax 0.00 : 41f9fa: 89 05 e4 b3 26 00 mov %eax,0x26b3e4(%rip) # 68ade4 0.00 : 41fa00: 49 63 c7 movslq %r15d,%rax 0.00 : 41fa03: 48 89 c2 mov %rax,%rdx 0.00 : 41fa06: 48 01 c0 add %rax,%rax 0.00 : 41fa09: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 41fa0d: 49 29 c5 sub %rax,%r13 0.00 : 41fa10: 48 8b 84 24 60 0e 00 mov 0xe60(%rsp),%rax 0.00 : 41fa17: 00 0.00 : 41fa18: 49 29 d6 sub %rdx,%r14 0.00 : 41fa1b: 41 0f b7 75 00 movzwl 0x0(%r13),%esi 0.00 : 41fa20: 4c 89 f2 mov %r14,%rdx 0.00 : 41fa23: 4d 8d 76 10 lea 0x10(%r14),%r14 0.00 : 41fa27: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 41fa2b: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 41fa30: 48 8b 84 24 68 0e 00 mov 0xe68(%rsp),%rax 0.00 : 41fa37: 00 5.26 : 41fa38: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 41fa3c: 0f b6 82 a0 3d 47 00 movzbl 0x473da0(%rdx),%eax 0.00 : 41fa43: 0f bf d6 movswl %si,%edx 0.00 : 41fa46: 83 e8 36 sub $0x36,%eax 0.00 : 41fa49: 48 63 c8 movslq %eax,%rcx 0.00 : 41fa4c: 0f bf 84 09 40 3e 47 movswl 0x473e40(%rcx,%rcx,1),%eax 0.00 : 41fa53: 00 0.00 : 41fa54: 8d 04 02 lea (%rdx,%rax,1),%eax 0.00 : 41fa57: 3d 5b 02 00 00 cmp $0x25b,%eax 0.00 : 41fa5c: 77 10 ja 41fa6e 0.00 : 41fa5e: 48 98 cltq 0.00 : 41fa60: 66 3b b4 00 40 32 47 cmp 0x473240(%rax,%rax,1),%si 0.00 : 41fa67: 00 0.00 : 41fa68: 0f 84 62 02 00 00 je 41fcd0 0.00 : 41fa6e: 44 0f bf bc 09 a0 3e movswl 0x473ea0(%rcx,%rcx,1),%r15d 0.00 : 41fa75: 47 00 5.26 : 41fa77: 49 83 c5 02 add $0x2,%r13 0.00 : 41fa7b: 48 8b 6c 24 38 mov 0x38(%rsp),%rbp 5.26 : 41fa80: e9 65 fd ff ff jmpq 41f7ea 0.00 : 41fa85: 0f 1f 00 nopl (%rax) 0.00 : 41fa88: 0f b7 94 09 00 37 47 movzwl 0x473700(%rcx,%rcx,1),%edx 0.00 : 41fa8f: 00 0.00 : 41fa90: 85 d2 test %edx,%edx 0.00 : 41fa92: 0f 85 e8 01 00 00 jne 41fc80 0.00 : 41fa98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41fa9f: 00 0.00 : 41faa0: 8b 44 24 2c mov 0x2c(%rsp),%eax 0.00 : 41faa4: 85 c0 test %eax,%eax 0.00 : 41faa6: 0f 84 b4 01 00 00 je 41fc60 0.00 : 41faac: 83 7c 24 2c 03 cmpl $0x3,0x2c(%rsp) 0.00 : 41fab1: 75 3f jne 41faf2 0.00 : 41fab3: 83 3d 72 6f 27 00 00 cmpl $0x0,0x276f72(%rip) # 696a2c 0.00 : 41faba: 0f 8e 8f 00 00 00 jle 41fb4f 0.00 : 41fac0: 81 fb 52 ff ff ff cmp $0xffffff52,%ebx 0.00 : 41fac6: c7 05 5c 6f 27 00 fe movl $0xfffffffe,0x276f5c(%rip) # 696a2c 0.00 : 41facd: ff ff ff 0.00 : 41fad0: 75 28 jne 41fafa 0.00 : 41fad2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 41fad8: 4d 39 c5 cmp %r8,%r13 0.00 : 41fadb: 74 7b je 41fb58 0.00 : 41fadd: 49 83 ed 02 sub $0x2,%r13 0.00 : 41fae1: 49 83 ee 10 sub $0x10,%r14 0.00 : 41fae5: 49 0f bf 45 00 movswq 0x0(%r13),%rax 0.00 : 41faea: 0f bf 9c 00 a0 2e 47 movswl 0x472ea0(%rax,%rax,1),%ebx 0.00 : 41faf1: 00 0.00 : 41faf2: 81 fb 52 ff ff ff cmp $0xffffff52,%ebx 0.00 : 41faf8: 74 de je 41fad8 0.00 : 41fafa: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 41fafd: 3d 5b 02 00 00 cmp $0x25b,%eax 0.00 : 41fb02: 77 d4 ja 41fad8 0.00 : 41fb04: 48 98 cltq 0.00 : 41fb06: 66 83 bc 00 40 32 47 cmpw $0x1,0x473240(%rax,%rax,1) 0.00 : 41fb0d: 00 01 0.00 : 41fb0f: 75 c7 jne 41fad8 0.00 : 41fb11: 0f b7 94 00 00 37 47 movzwl 0x473700(%rax,%rax,1),%edx 0.00 : 41fb18: 00 0.00 : 41fb19: 85 d2 test %edx,%edx 0.00 : 41fb1b: 74 bb je 41fad8 0.00 : 41fb1d: 83 fa 5f cmp $0x5f,%edx 0.00 : 41fb20: 0f 84 d5 19 00 00 je 4214fb 0.00 : 41fb26: 48 8b 05 43 6f 27 00 mov 0x276f43(%rip),%rax # 696a70 0.00 : 41fb2d: 49 83 c6 10 add $0x10,%r14 0.00 : 41fb31: 41 89 d7 mov %edx,%r15d 0.00 : 41fb34: c7 44 24 2c 03 00 00 movl $0x3,0x2c(%rsp) 0.00 : 41fb3b: 00 0.00 : 41fb3c: 49 89 06 mov %rax,(%r14) 0.00 : 41fb3f: 48 8b 05 32 6f 27 00 mov 0x276f32(%rip),%rax # 696a78 0.00 : 41fb46: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 41fb4a: e9 28 ff ff ff jmpq 41fa77 0.00 : 41fb4f: 75 a1 jne 41faf2 0.00 : 41fb51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41fb58: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 41fb5d: 4c 3b 44 24 08 cmp 0x8(%rsp),%r8 0.00 : 41fb62: 74 08 je 41fb6c 0.00 : 41fb64: 4c 89 c7 mov %r8,%rdi 0.00 : 41fb67: e8 54 68 ff ff callq 4163c0 0.00 : 41fb6c: 48 81 c4 78 0e 00 00 add $0xe78,%rsp 0.00 : 41fb73: 89 d8 mov %ebx,%eax 0.00 : 41fb75: 5b pop %rbx 0.00 : 41fb76: 5d pop %rbp 0.00 : 41fb77: 41 5c pop %r12 0.00 : 41fb79: 41 5d pop %r13 0.00 : 41fb7b: 41 5e pop %r14 0.00 : 41fb7d: 41 5f pop %r15 0.00 : 41fb7f: c3 retq 0.00 : 41fb80: 8b 05 4e 38 27 00 mov 0x27384e(%rip),%eax # 6933d4 0.00 : 41fb86: 85 c0 test %eax,%eax 0.00 : 41fb88: 0f 84 82 00 00 00 je 41fc10 0.00 : 41fb8e: 8b 15 04 3c 27 00 mov 0x273c04(%rip),%edx # 693798 0.00 : 41fb94: 85 d2 test %edx,%edx 0.00 : 41fb96: 0f 85 42 01 00 00 jne 41fcde 0.00 : 41fb9c: 48 8b 05 bd 38 27 00 mov 0x2738bd(%rip),%rax # 693460 0.00 : 41fba3: 48 85 c0 test %rax,%rax 0.00 : 41fba6: 0f 84 17 19 00 00 je 4214c3 0.00 : 41fbac: 48 3d 68 6a 69 00 cmp $0x696a68,%rax 0.00 : 41fbb2: 0f 84 0b 19 00 00 je 4214c3 0.00 : 41fbb8: 44 8b 3d c1 3b 27 00 mov 0x273bc1(%rip),%r15d # 693780 0.00 : 41fbbf: 45 85 ff test %r15d,%r15d 0.00 : 41fbc2: 75 4c jne 41fc10 0.00 : 41fbc4: 44 8b 25 09 38 27 00 mov 0x273809(%rip),%r12d # 6933d4 0.00 : 41fbcb: 45 85 e4 test %r12d,%r12d 0.00 : 41fbce: 74 40 je 41fc10 0.00 : 41fbd0: 8b 05 6a 6e 27 00 mov 0x276e6a(%rip),%eax # 696a40 0.00 : 41fbd6: 83 e8 01 sub $0x1,%eax 0.00 : 41fbd9: 83 f8 01 cmp $0x1,%eax 0.00 : 41fbdc: 77 32 ja 41fc10 0.00 : 41fbde: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fbe3: e8 58 b9 ff ff callq 41b540 0.00 : 41fbe8: 8b 15 aa 3b 27 00 mov 0x273baa(%rip),%edx # 693798 0.00 : 41fbee: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fbf3: eb 21 jmp 41fc16 0.00 : 41fbf5: 0f 1f 00 nopl (%rax) 0.00 : 41fbf8: c7 05 2a 6e 27 00 00 movl $0x0,0x276e2a(%rip) # 696a2c 0.00 : 41fbff: 00 00 00 0.00 : 41fc02: 31 d2 xor %edx,%edx 0.00 : 41fc04: e9 18 fd ff ff jmpq 41f921 0.00 : 41fc09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41fc10: 8b 15 82 3b 27 00 mov 0x273b82(%rip),%edx # 693798 0.00 : 41fc16: 8b 05 84 3b 27 00 mov 0x273b84(%rip),%eax # 6937a0 0.00 : 41fc1c: 31 ff xor %edi,%edi 0.00 : 41fc1e: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fc23: 89 05 7b 3b 27 00 mov %eax,0x273b7b(%rip) # 6937a4 0.00 : 41fc29: 8b 05 6d 3b 27 00 mov 0x273b6d(%rip),%eax # 69379c 0.00 : 41fc2f: 89 15 67 3b 27 00 mov %edx,0x273b67(%rip) # 69379c 0.00 : 41fc35: 89 05 65 3b 27 00 mov %eax,0x273b65(%rip) # 6937a0 0.00 : 41fc3b: e8 30 ce ff ff callq 41ca70 0.00 : 41fc40: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fc45: 89 05 4d 3b 27 00 mov %eax,0x273b4d(%rip) # 693798 0.00 : 41fc4b: 89 05 db 6d 27 00 mov %eax,0x276ddb(%rip) # 696a2c 0.00 : 41fc51: e9 a8 fc ff ff jmpq 41f8fe 0.00 : 41fc56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41fc5d: 00 00 00 0.00 : 41fc60: bf dc 25 47 00 mov $0x4725dc,%edi 0.00 : 41fc65: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fc6a: 83 05 0f 6e 27 00 01 addl $0x1,0x276e0f(%rip) # 696a80 0.00 : 41fc71: e8 3a a4 ff ff callq 41a0b0 0.00 : 41fc76: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fc7b: e9 72 fe ff ff jmpq 41faf2 0.00 : 41fc80: 83 fa 5f cmp $0x5f,%edx 0.00 : 41fc83: 0f 84 72 18 00 00 je 4214fb 0.00 : 41fc89: 44 8b 1d 9c 6d 27 00 mov 0x276d9c(%rip),%r11d # 696a2c 0.00 : 41fc90: 83 7c 24 2c 01 cmpl $0x1,0x2c(%rsp) 0.00 : 41fc95: b8 fe ff ff ff mov $0xfffffffe,%eax 0.00 : 41fc9a: 83 54 24 2c ff adcl $0xffffffff,0x2c(%rsp) 0.00 : 41fc9f: 41 89 d7 mov %edx,%r15d 5.26 : 41fca2: 45 85 db test %r11d,%r11d 0.00 : 41fca5: 0f 44 05 80 6d 27 00 cmove 0x276d80(%rip),%eax # 696a2c 0.00 : 41fcac: 49 83 c6 10 add $0x10,%r14 0.00 : 41fcb0: 89 05 76 6d 27 00 mov %eax,0x276d76(%rip) # 696a2c 0.00 : 41fcb6: 48 8b 05 b3 6d 27 00 mov 0x276db3(%rip),%rax # 696a70 0.00 : 41fcbd: 49 89 06 mov %rax,(%r14) 0.00 : 41fcc0: 48 8b 05 b1 6d 27 00 mov 0x276db1(%rip),%rax # 696a78 0.00 : 41fcc7: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 41fccb: e9 a7 fd ff ff jmpq 41fa77 0.00 : 41fcd0: 44 0f b7 bc 00 00 37 movzwl 0x473700(%rax,%rax,1),%r15d 0.00 : 41fcd7: 47 00 0.00 : 41fcd9: e9 99 fd ff ff jmpq 41fa77 0.00 : 41fcde: 83 fa 0a cmp $0xa,%edx 0.00 : 41fce1: 0f 85 2f ff ff ff jne 41fc16 0.00 : 41fce7: e9 b0 fe ff ff jmpq 41fb9c 0.00 : 41fcec: 49 8b 16 mov (%r14),%rdx 0.00 : 41fcef: be 0c 00 00 00 mov $0xc,%esi 0.00 : 41fcf4: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41fcf9: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fcfe: 48 89 15 8b 3a 27 00 mov %rdx,0x273a8b(%rip) # 693790 0.00 : 41fd05: e8 56 34 00 00 callq 423160 0.00 : 41fd0a: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fd0f: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fd16: 00 0.00 : 41fd17: e9 e4 fc ff ff jmpq 41fa00 0.00 : 41fd1c: 49 8b 16 mov (%r14),%rdx 0.00 : 41fd1f: be 0b 00 00 00 mov $0xb,%esi 0.00 : 41fd24: 31 ff xor %edi,%edi 0.00 : 41fd26: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fd2b: 48 89 15 5e 3a 27 00 mov %rdx,0x273a5e(%rip) # 693790 0.00 : 41fd32: e8 29 34 00 00 callq 423160 0.00 : 41fd37: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fd3c: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fd43: 00 0.00 : 41fd44: e9 b7 fc ff ff jmpq 41fa00 0.00 : 41fd49: 49 8b 16 mov (%r14),%rdx 0.00 : 41fd4c: be 0b 00 00 00 mov $0xb,%esi 0.00 : 41fd51: 48 89 15 38 3a 27 00 mov %rdx,0x273a38(%rip) # 693790 0.00 : 41fd58: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 41fd5c: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fd61: e8 fa 33 00 00 callq 423160 0.00 : 41fd66: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fd6b: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fd72: 00 0.00 : 41fd73: e9 88 fc ff ff jmpq 41fa00 0.00 : 41fd78: 49 8b 16 mov (%r14),%rdx 0.00 : 41fd7b: be 0a 00 00 00 mov $0xa,%esi 0.00 : 41fd80: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41fd85: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fd8a: 48 89 15 ff 39 27 00 mov %rdx,0x2739ff(%rip) # 693790 0.00 : 41fd91: e8 ca 33 00 00 callq 423160 0.00 : 41fd96: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fd9b: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fda2: 00 0.00 : 41fda3: e9 58 fc ff ff jmpq 41fa00 0.00 : 41fda8: c7 05 de 39 27 00 00 movl $0x0,0x2739de(%rip) # 693790 0.00 : 41fdaf: 00 00 00 0.00 : 41fdb2: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 41fdb6: be 09 00 00 00 mov $0x9,%esi 0.00 : 41fdbb: 48 8b 15 ce 39 27 00 mov 0x2739ce(%rip),%rdx # 693790 0.00 : 41fdc2: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fdc7: e8 94 33 00 00 callq 423160 0.00 : 41fdcc: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fdd1: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fdd8: 00 0.00 : 41fdd9: e9 22 fc ff ff jmpq 41fa00 0.00 : 41fdde: c7 05 a8 39 27 00 00 movl $0x0,0x2739a8(%rip) # 693790 0.00 : 41fde5: 00 00 00 0.00 : 41fde8: 48 8b 15 a1 39 27 00 mov 0x2739a1(%rip),%rdx # 693790 0.00 : 41fdef: be 09 00 00 00 mov $0x9,%esi 0.00 : 41fdf4: 31 ff xor %edi,%edi 0.00 : 41fdf6: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fdfb: e8 60 33 00 00 callq 423160 0.00 : 41fe00: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fe05: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fe0c: 00 0.00 : 41fe0d: e9 ee fb ff ff jmpq 41fa00 0.00 : 41fe12: c7 05 74 39 27 00 00 movl $0x0,0x273974(%rip) # 693790 0.00 : 41fe19: 00 00 00 0.00 : 41fe1c: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 41fe20: be 09 00 00 00 mov $0x9,%esi 0.00 : 41fe25: 48 8b 15 64 39 27 00 mov 0x273964(%rip),%rdx # 693790 0.00 : 41fe2c: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fe31: e8 2a 33 00 00 callq 423160 0.00 : 41fe36: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fe3b: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fe42: 00 0.00 : 41fe43: e9 b8 fb ff ff jmpq 41fa00 0.00 : 41fe48: c7 05 3e 39 27 00 00 movl $0x0,0x27393e(%rip) # 693790 0.00 : 41fe4f: 00 00 00 0.00 : 41fe52: 48 8b 15 37 39 27 00 mov 0x273937(%rip),%rdx # 693790 0.00 : 41fe59: be 09 00 00 00 mov $0x9,%esi 0.00 : 41fe5e: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41fe63: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fe68: e8 f3 32 00 00 callq 423160 0.00 : 41fe6d: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41fe72: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fe79: 00 0.00 : 41fe7a: e9 81 fb ff ff jmpq 41fa00 0.00 : 41fe7f: 49 8b 06 mov (%r14),%rax 0.00 : 41fe82: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fe89: 00 0.00 : 41fe8a: e9 71 fb ff ff jmpq 41fa00 0.00 : 41fe8f: 49 8b 06 mov (%r14),%rax 0.00 : 41fe92: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fe99: 00 0.00 : 41fe9a: e9 61 fb ff ff jmpq 41fa00 0.00 : 41fe9f: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 41fea3: 49 8b 36 mov (%r14),%rsi 0.00 : 41fea6: ba 3b 00 00 00 mov $0x3b,%edx 0.00 : 41feab: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41feb0: e8 4b 2f 00 00 callq 422e00 0.00 : 41feb5: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41feba: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fec1: 00 0.00 : 41fec2: e9 39 fb ff ff jmpq 41fa00 0.00 : 41fec7: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 41fecb: 83 3f 06 cmpl $0x6,(%rdi) 0.00 : 41fece: 0f 84 bb 16 00 00 je 42158f 0.00 : 41fed4: 49 8b 36 mov (%r14),%rsi 0.00 : 41fed7: ba 26 00 00 00 mov $0x26,%edx 0.00 : 41fedc: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41fee1: e8 1a 2f 00 00 callq 422e00 0.00 : 41fee6: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41feeb: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41fef2: 00 0.00 : 41fef3: e9 08 fb ff ff jmpq 41fa00 0.00 : 41fef8: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 41fefc: 49 8b 36 mov (%r14),%rsi 0.00 : 41feff: ba 1e 01 00 00 mov $0x11e,%edx 0.00 : 41ff04: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41ff09: e8 f2 2e 00 00 callq 422e00 0.00 : 41ff0e: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41ff13: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41ff1a: 00 0.00 : 41ff1b: e9 e0 fa ff ff jmpq 41fa00 0.00 : 41ff20: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 41ff24: 49 8b 36 mov (%r14),%rsi 0.00 : 41ff27: ba 1d 01 00 00 mov $0x11d,%edx 0.00 : 41ff2c: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41ff31: e8 ca 2e 00 00 callq 422e00 0.00 : 41ff36: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41ff3b: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41ff42: 00 0.00 : 41ff43: e9 b8 fa ff ff jmpq 41fa00 0.00 : 41ff48: 49 8b 46 f0 mov -0x10(%r14),%rax 0.00 : 41ff4c: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41ff53: 00 0.00 : 41ff54: 8b 05 de 6a 27 00 mov 0x276ade(%rip),%eax # 696a38 0.00 : 41ff5a: 85 c0 test %eax,%eax 0.00 : 41ff5c: 0f 84 9e fa ff ff je 41fa00 0.00 : 41ff62: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41ff67: e8 d4 a3 ff ff callq 41a340 0.00 : 41ff6c: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41ff71: e9 8a fa ff ff jmpq 41fa00 0.00 : 41ff76: 49 8b 7e f0 mov -0x10(%r14),%rdi 0.00 : 41ff7a: 83 3f 06 cmpl $0x6,(%rdi) 0.00 : 41ff7d: 0f 84 30 16 00 00 je 4215b3 0.00 : 41ff83: ba 26 00 00 00 mov $0x26,%edx 0.00 : 41ff88: 31 f6 xor %esi,%esi 0.00 : 41ff8a: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41ff8f: e8 6c 2e 00 00 callq 422e00 0.00 : 41ff94: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41ff99: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41ffa0: 00 0.00 : 41ffa1: 8b 05 91 6a 27 00 mov 0x276a91(%rip),%eax # 696a38 0.00 : 41ffa7: 85 c0 test %eax,%eax 0.00 : 41ffa9: 0f 84 51 fa ff ff je 41fa00 0.00 : 41ffaf: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41ffb4: e8 87 a3 ff ff callq 41a340 0.00 : 41ffb9: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41ffbe: e9 3d fa ff ff jmpq 41fa00 0.00 : 41ffc3: 8b 15 6f 6a 27 00 mov 0x276a6f(%rip),%edx # 696a38 0.00 : 41ffc9: 49 8b 06 mov (%r14),%rax 0.00 : 41ffcc: 85 d2 test %edx,%edx 0.00 : 41ffce: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 41ffd5: 00 0.00 : 41ffd6: 0f 84 24 fa ff ff je 41fa00 0.00 : 41ffdc: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 41ffe1: e8 5a a3 ff ff callq 41a340 0.00 : 41ffe6: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 41ffeb: e9 10 fa ff ff jmpq 41fa00 0.00 : 41fff0: c7 84 24 60 0e 00 00 movl $0x129,0xe60(%rsp) 0.00 : 41fff7: 29 01 00 00 0.00 : 41fffb: e9 00 fa ff ff jmpq 41fa00 0.00 : 420000: c7 84 24 60 0e 00 00 movl $0x3b,0xe60(%rsp) 0.00 : 420007: 3b 00 00 00 0.00 : 42000b: e9 f0 f9 ff ff jmpq 41fa00 0.00 : 420010: c7 84 24 60 0e 00 00 movl $0xa,0xe60(%rsp) 0.00 : 420017: 0a 00 00 00 0.00 : 42001b: e9 e0 f9 ff ff jmpq 41fa00 0.00 : 420020: 49 8b 06 mov (%r14),%rax 0.00 : 420023: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42002a: 00 0.00 : 42002b: e9 d0 f9 ff ff jmpq 41fa00 0.00 : 420030: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 420034: 49 8b 36 mov (%r14),%rsi 0.00 : 420037: ba 3b 00 00 00 mov $0x3b,%edx 0.00 : 42003c: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420041: e8 ba 2d 00 00 callq 422e00 0.00 : 420046: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42004b: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420052: 00 0.00 : 420053: e9 a8 f9 ff ff jmpq 41fa00 0.00 : 420058: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 42005c: 49 8b 36 mov (%r14),%rsi 0.00 : 42005f: ba 3b 00 00 00 mov $0x3b,%edx 0.00 : 420064: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420069: e8 92 2d 00 00 callq 422e00 0.00 : 42006e: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420073: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42007a: 00 0.00 : 42007b: e9 80 f9 ff ff jmpq 41fa00 0.00 : 420080: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 420084: 83 3f 06 cmpl $0x6,(%rdi) 0.00 : 420087: 0f 84 bb 14 00 00 je 421548 0.00 : 42008d: 49 8b 36 mov (%r14),%rsi 0.00 : 420090: ba 26 00 00 00 mov $0x26,%edx 0.00 : 420095: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42009a: e8 61 2d 00 00 callq 422e00 0.00 : 42009f: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4200a4: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4200ab: 00 0.00 : 4200ac: e9 4f f9 ff ff jmpq 41fa00 0.00 : 4200b1: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 4200b5: 49 8b 36 mov (%r14),%rsi 0.00 : 4200b8: ba 1e 01 00 00 mov $0x11e,%edx 0.00 : 4200bd: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4200c2: e8 39 2d 00 00 callq 422e00 0.00 : 4200c7: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4200cc: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4200d3: 00 0.00 : 4200d4: e9 27 f9 ff ff jmpq 41fa00 0.00 : 4200d9: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 4200dd: 49 8b 36 mov (%r14),%rsi 0.00 : 4200e0: ba 1d 01 00 00 mov $0x11d,%edx 0.00 : 4200e5: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4200ea: e8 11 2d 00 00 callq 422e00 0.00 : 4200ef: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4200f4: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4200fb: 00 0.00 : 4200fc: e9 ff f8 ff ff jmpq 41fa00 0.00 : 420101: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 420105: 83 3f 06 cmpl $0x6,(%rdi) 0.00 : 420108: 0f 84 5e 14 00 00 je 42156c 0.00 : 42010e: ba 26 00 00 00 mov $0x26,%edx 0.00 : 420113: 31 f6 xor %esi,%esi 0.00 : 420115: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42011a: e8 e1 2c 00 00 callq 422e00 0.00 : 42011f: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420124: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42012b: 00 0.00 : 42012c: e9 cf f8 ff ff jmpq 41fa00 0.00 : 420131: 49 8b 06 mov (%r14),%rax 0.00 : 420134: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42013b: 00 0.00 : 42013c: e9 bf f8 ff ff jmpq 41fa00 0.00 : 420141: 49 8b 46 f0 mov -0x10(%r14),%rax 0.00 : 420145: 49 8b 56 e0 mov -0x20(%r14),%rdx 0.00 : 420149: 48 89 10 mov %rdx,(%rax) 0.00 : 42014c: 49 8b 46 f0 mov -0x10(%r14),%rax 0.00 : 420150: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420157: 00 0.00 : 420158: e9 a3 f8 ff ff jmpq 41fa00 0.00 : 42015d: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 420161: 31 f6 xor %esi,%esi 0.00 : 420163: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420168: e8 23 29 00 00 callq 422a90 0.00 : 42016d: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420172: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420179: 00 0.00 : 42017a: e9 81 f8 ff ff jmpq 41fa00 0.00 : 42017f: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 420183: 49 8b 36 mov (%r14),%rsi 0.00 : 420186: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42018b: e8 00 29 00 00 callq 422a90 0.00 : 420190: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420195: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42019c: 00 0.00 : 42019d: e9 5e f8 ff ff jmpq 41fa00 0.00 : 4201a2: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 4201a6: 31 f6 xor %esi,%esi 0.00 : 4201a8: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4201ad: e8 de 28 00 00 callq 422a90 0.00 : 4201b2: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4201b7: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4201be: 00 0.00 : 4201bf: e9 3c f8 ff ff jmpq 41fa00 0.00 : 4201c4: 49 8b 76 e0 mov -0x20(%r14),%rsi 0.00 : 4201c8: 49 8b 3e mov (%r14),%rdi 0.00 : 4201cb: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4201d0: e8 1b 2d 00 00 callq 422ef0 0.00 : 4201d5: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4201da: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4201e1: 00 0.00 : 4201e2: e9 19 f8 ff ff jmpq 41fa00 0.00 : 4201e7: 49 8b 3e mov (%r14),%rdi 0.00 : 4201ea: 31 f6 xor %esi,%esi 0.00 : 4201ec: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4201f1: e8 fa 2c 00 00 callq 422ef0 0.00 : 4201f6: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4201fb: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420202: 00 0.00 : 420203: e9 f8 f7 ff ff jmpq 41fa00 0.00 : 420208: 8b 0d 2a 68 27 00 mov 0x27682a(%rip),%ecx # 696a38 0.00 : 42020e: 49 8b 06 mov (%r14),%rax 0.00 : 420211: 85 c9 test %ecx,%ecx 0.00 : 420213: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42021a: 00 0.00 : 42021b: 0f 84 df f7 ff ff je 41fa00 0.00 : 420221: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420226: e8 15 a1 ff ff callq 41a340 0.00 : 42022b: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420230: e9 cb f7 ff ff jmpq 41fa00 0.00 : 420235: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 420239: 49 8b 36 mov (%r14),%rsi 0.00 : 42023c: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420241: e8 4a 28 00 00 callq 422a90 0.00 : 420246: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42024b: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420252: 00 0.00 : 420253: e9 a8 f7 ff ff jmpq 41fa00 0.00 : 420258: 49 8b 06 mov (%r14),%rax 0.00 : 42025b: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 42025f: 48 89 10 mov %rdx,(%rax) 0.00 : 420262: 49 8b 06 mov (%r14),%rax 0.00 : 420265: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42026c: 00 0.00 : 42026d: e9 8e f7 ff ff jmpq 41fa00 0.00 : 420272: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 420276: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 42027a: 49 8b 16 mov (%r14),%rdx 0.00 : 42027d: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420282: e8 99 29 00 00 callq 422c20 0.00 : 420287: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42028c: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420293: 00 0.00 : 420294: e9 67 f7 ff ff jmpq 41fa00 0.00 : 420299: 49 8b 76 e0 mov -0x20(%r14),%rsi 0.00 : 42029d: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 4202a1: 49 8b 16 mov (%r14),%rdx 0.00 : 4202a4: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4202a9: e8 72 29 00 00 callq 422c20 0.00 : 4202ae: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4202b3: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4202ba: 00 0.00 : 4202bb: e9 40 f7 ff ff jmpq 41fa00 0.00 : 4202c0: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 4202c4: 49 8b 36 mov (%r14),%rsi 0.00 : 4202c7: 31 d2 xor %edx,%edx 0.00 : 4202c9: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4202ce: e8 4d 29 00 00 callq 422c20 0.00 : 4202d3: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4202d8: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4202df: 00 0.00 : 4202e0: e9 1b f7 ff ff jmpq 41fa00 0.00 : 4202e5: 49 8b 46 f0 mov -0x10(%r14),%rax 0.00 : 4202e9: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4202f0: 00 0.00 : 4202f1: e9 0a f7 ff ff jmpq 41fa00 0.00 : 4202f6: 49 8b 3e mov (%r14),%rdi 0.00 : 4202f9: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4202fe: e8 1d 27 00 00 callq 422a20 0.00 : 420303: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420308: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42030f: 00 0.00 : 420310: e9 eb f6 ff ff jmpq 41fa00 0.00 : 420315: 49 8b 7e f0 mov -0x10(%r14),%rdi 0.00 : 420319: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42031e: e8 dd 29 00 00 callq 422d00 0.00 : 420323: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420328: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42032f: 00 0.00 : 420330: e9 cb f6 ff ff jmpq 41fa00 0.00 : 420335: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 420339: 49 8b 76 e0 mov -0x20(%r14),%rsi 0.00 : 42033d: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 420341: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420346: e8 d5 28 00 00 callq 422c20 0.00 : 42034b: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420350: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420357: 00 0.00 : 420358: e9 a3 f6 ff ff jmpq 41fa00 0.00 : 42035d: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 420361: 49 8b 76 d0 mov -0x30(%r14),%rsi 0.00 : 420365: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 420369: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42036e: e8 ad 28 00 00 callq 422c20 0.00 : 420373: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420378: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42037f: 00 0.00 : 420380: e9 7b f6 ff ff jmpq 41fa00 0.00 : 420385: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 420389: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 42038d: 31 d2 xor %edx,%edx 0.00 : 42038f: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420394: e8 87 28 00 00 callq 422c20 0.00 : 420399: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42039e: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4203a5: 00 0.00 : 4203a6: e9 55 f6 ff ff jmpq 41fa00 0.00 : 4203ab: 49 8b 7e f0 mov -0x10(%r14),%rdi 0.00 : 4203af: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4203b4: e8 97 27 00 00 callq 422b50 0.00 : 4203b9: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4203be: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4203c5: 00 0.00 : 4203c6: 83 48 04 01 orl $0x1,0x4(%rax) 0.00 : 4203ca: e9 31 f6 ff ff jmpq 41fa00 0.00 : 4203cf: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 4203d3: 49 8d 4e f0 lea -0x10(%r14),%rcx 0.00 : 4203d7: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 4203db: 48 85 c0 test %rax,%rax 0.00 : 4203de: 0f 84 58 11 00 00 je 42153c 0.00 : 4203e4: 48 89 c2 mov %rax,%rdx 0.00 : 4203e7: 48 8b 00 mov (%rax),%rax 0.00 : 4203ea: 48 85 c0 test %rax,%rax 0.00 : 4203ed: 75 f5 jne 4203e4 0.00 : 4203ef: 49 8b 06 mov (%r14),%rax 0.00 : 4203f2: 48 89 02 mov %rax,(%rdx) 0.00 : 4203f5: 48 8b 01 mov (%rcx),%rax 0.00 : 4203f8: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4203ff: 00 0.00 : 420400: e9 fb f5 ff ff jmpq 41fa00 0.00 : 420405: 49 8b 06 mov (%r14),%rax 0.00 : 420408: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42040f: 00 0.00 : 420410: e9 eb f5 ff ff jmpq 41fa00 0.00 : 420415: 49 8b 7e e0 mov -0x20(%r14),%rdi 0.00 : 420419: 49 8b 36 mov (%r14),%rsi 0.00 : 42041c: 8b 0d 42 31 27 00 mov 0x273142(%rip),%ecx # 693564 0.00 : 420422: 8b 15 38 31 27 00 mov 0x273138(%rip),%edx # 693560 0.00 : 420428: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42042d: e8 6e 2c 00 00 callq 4230a0 0.00 : 420432: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420437: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42043e: 00 0.00 : 42043f: e9 bc f5 ff ff jmpq 41fa00 0.00 : 420444: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 420448: 49 8b 36 mov (%r14),%rsi 0.00 : 42044b: 8b 0d 13 31 27 00 mov 0x273113(%rip),%ecx # 693564 0.00 : 420451: 8b 15 09 31 27 00 mov 0x273109(%rip),%edx # 693560 0.00 : 420457: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42045c: e8 3f 2c 00 00 callq 4230a0 0.00 : 420461: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420466: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42046d: 00 0.00 : 42046e: e9 8d f5 ff ff jmpq 41fa00 0.00 : 420473: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 420477: 49 8b 36 mov (%r14),%rsi 0.00 : 42047a: 8b 0d e4 30 27 00 mov 0x2730e4(%rip),%ecx # 693564 0.00 : 420480: 8b 15 da 30 27 00 mov 0x2730da(%rip),%edx # 693560 0.00 : 420486: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42048b: e8 10 2c 00 00 callq 4230a0 0.00 : 420490: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420495: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42049c: 00 0.00 : 42049d: e9 5e f5 ff ff jmpq 41fa00 0.00 : 4204a2: 48 63 05 3b a9 26 00 movslq 0x26a93b(%rip),%rax # 68ade4 0.00 : 4204a9: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 4204ad: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 4204b1: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4204b6: 8b 14 85 80 35 69 00 mov 0x693580(,%rax,4),%edx 0.00 : 4204bd: e8 be 27 00 00 callq 422c80 0.00 : 4204c2: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4204c9: 00 0.00 : 4204ca: 8b 05 14 a9 26 00 mov 0x26a914(%rip),%eax # 68ade4 0.00 : 4204d0: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4204d5: 85 c0 test %eax,%eax 0.00 : 4204d7: 0f 8e 23 f5 ff ff jle 41fa00 0.00 : 4204dd: 83 e8 01 sub $0x1,%eax 0.00 : 4204e0: 89 05 fe a8 26 00 mov %eax,0x26a8fe(%rip) # 68ade4 0.00 : 4204e6: e9 15 f5 ff ff jmpq 41fa00 0.00 : 4204eb: 48 63 05 f2 a8 26 00 movslq 0x26a8f2(%rip),%rax # 68ade4 0.00 : 4204f2: 49 8b 76 e0 mov -0x20(%r14),%rsi 0.00 : 4204f6: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 4204fa: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4204ff: 8b 14 85 80 35 69 00 mov 0x693580(,%rax,4),%edx 0.00 : 420506: e8 75 27 00 00 callq 422c80 0.00 : 42050b: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420512: 00 0.00 : 420513: 8b 05 cb a8 26 00 mov 0x26a8cb(%rip),%eax # 68ade4 0.00 : 420519: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42051e: 85 c0 test %eax,%eax 0.00 : 420520: 0f 8e da f4 ff ff jle 41fa00 0.00 : 420526: 83 e8 01 sub $0x1,%eax 0.00 : 420529: 89 05 b5 a8 26 00 mov %eax,0x26a8b5(%rip) # 68ade4 0.00 : 42052f: e9 cc f4 ff ff jmpq 41fa00 0.00 : 420534: 48 63 05 a9 a8 26 00 movslq 0x26a8a9(%rip),%rax # 68ade4 0.00 : 42053b: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 42053f: 31 f6 xor %esi,%esi 0.00 : 420541: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420546: 8b 14 85 80 35 69 00 mov 0x693580(,%rax,4),%edx 0.00 : 42054d: e8 2e 27 00 00 callq 422c80 0.00 : 420552: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420559: 00 0.00 : 42055a: 8b 05 84 a8 26 00 mov 0x26a884(%rip),%eax # 68ade4 0.00 : 420560: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420565: 85 c0 test %eax,%eax 0.00 : 420567: 0f 8e 93 f4 ff ff jle 41fa00 0.00 : 42056d: 83 e8 01 sub $0x1,%eax 0.00 : 420570: 89 05 6e a8 26 00 mov %eax,0x26a86e(%rip) # 68ade4 0.00 : 420576: e9 85 f4 ff ff jmpq 41fa00 0.00 : 42057b: 48 63 05 62 a8 26 00 movslq 0x26a862(%rip),%rax # 68ade4 0.00 : 420582: 49 8b 5e f0 mov -0x10(%r14),%rbx 0.00 : 420586: 8b 2c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebp 0.00 : 42058d: 49 8b 46 b0 mov -0x50(%r14),%rax 0.00 : 420591: 48 85 c0 test %rax,%rax 0.00 : 420594: 74 1a je 4205b0 0.00 : 420596: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 42059a: 74 14 je 4205b0 0.00 : 42059c: 48 89 c7 mov %rax,%rdi 0.00 : 42059f: 31 c0 xor %eax,%eax 0.00 : 4205a1: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4205a6: e8 25 23 03 00 callq 4528d0 0.00 : 4205ab: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4205b0: 49 8b 7e 80 mov -0x80(%r14),%rdi 0.00 : 4205b4: 89 e9 mov %ebp,%ecx 0.00 : 4205b6: 48 89 da mov %rbx,%rdx 0.00 : 4205b9: 48 89 c6 mov %rax,%rsi 0.00 : 4205bc: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4205c1: e8 5a 27 00 00 callq 422d20 0.00 : 4205c6: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4205cd: 00 0.00 : 4205ce: 8b 05 10 a8 26 00 mov 0x26a810(%rip),%eax # 68ade4 0.00 : 4205d4: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4205d9: 85 c0 test %eax,%eax 0.00 : 4205db: 0f 8e 1f f4 ff ff jle 41fa00 0.00 : 4205e1: 83 e8 01 sub $0x1,%eax 0.00 : 4205e4: 89 05 fa a7 26 00 mov %eax,0x26a7fa(%rip) # 68ade4 0.00 : 4205ea: e9 11 f4 ff ff jmpq 41fa00 0.00 : 4205ef: 48 63 05 ee a7 26 00 movslq 0x26a7ee(%rip),%rax # 68ade4 0.00 : 4205f6: 49 8b 5e f0 mov -0x10(%r14),%rbx 0.00 : 4205fa: 8b 2c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebp 0.00 : 420601: 49 8b 46 b0 mov -0x50(%r14),%rax 0.00 : 420605: 48 85 c0 test %rax,%rax 0.00 : 420608: 74 1a je 420624 0.00 : 42060a: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 42060e: 74 14 je 420624 0.00 : 420610: 48 89 c7 mov %rax,%rdi 0.00 : 420613: 31 c0 xor %eax,%eax 0.00 : 420615: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42061a: e8 b1 22 03 00 callq 4528d0 0.00 : 42061f: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420624: 49 8b 7e 80 mov -0x80(%r14),%rdi 0.00 : 420628: 89 e9 mov %ebp,%ecx 0.00 : 42062a: 48 89 da mov %rbx,%rdx 0.00 : 42062d: 48 89 c6 mov %rax,%rsi 0.00 : 420630: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420635: e8 e6 26 00 00 callq 422d20 0.00 : 42063a: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420641: 00 0.00 : 420642: 8b 05 9c a7 26 00 mov 0x26a79c(%rip),%eax # 68ade4 0.00 : 420648: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42064d: 85 c0 test %eax,%eax 0.00 : 42064f: 0f 8e ab f3 ff ff jle 41fa00 0.00 : 420655: 83 e8 01 sub $0x1,%eax 0.00 : 420658: 89 05 86 a7 26 00 mov %eax,0x26a786(%rip) # 68ade4 0.00 : 42065e: e9 9d f3 ff ff jmpq 41fa00 0.00 : 420663: 48 63 05 7a a7 26 00 movslq 0x26a77a(%rip),%rax # 68ade4 0.00 : 42066a: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 42066f: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 420673: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420678: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 42067f: e8 4c 30 00 00 callq 4236d0 0.00 : 420684: 31 f6 xor %esi,%esi 0.00 : 420686: 48 89 c7 mov %rax,%rdi 0.00 : 420689: e8 62 28 00 00 callq 422ef0 0.00 : 42068e: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 420692: 48 89 c6 mov %rax,%rsi 0.00 : 420695: 89 d9 mov %ebx,%ecx 0.00 : 420697: 4c 89 e2 mov %r12,%rdx 0.00 : 42069a: e8 81 26 00 00 callq 422d20 0.00 : 42069f: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4206a6: 00 0.00 : 4206a7: 8b 05 37 a7 26 00 mov 0x26a737(%rip),%eax # 68ade4 0.00 : 4206ad: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4206b2: 85 c0 test %eax,%eax 0.00 : 4206b4: 0f 8e 46 f3 ff ff jle 41fa00 0.00 : 4206ba: 83 e8 01 sub $0x1,%eax 0.00 : 4206bd: 89 05 21 a7 26 00 mov %eax,0x26a721(%rip) # 68ade4 0.00 : 4206c3: e9 38 f3 ff ff jmpq 41fa00 0.00 : 4206c8: 48 63 05 15 a7 26 00 movslq 0x26a715(%rip),%rax # 68ade4 0.00 : 4206cf: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 4206d4: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 4206d8: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4206dd: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 4206e4: e8 e7 2f 00 00 callq 4236d0 0.00 : 4206e9: 31 f6 xor %esi,%esi 0.00 : 4206eb: 48 89 c7 mov %rax,%rdi 0.00 : 4206ee: e8 fd 27 00 00 callq 422ef0 0.00 : 4206f3: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 4206f7: 48 89 c6 mov %rax,%rsi 0.00 : 4206fa: 89 d9 mov %ebx,%ecx 0.00 : 4206fc: 4c 89 e2 mov %r12,%rdx 0.00 : 4206ff: e8 1c 26 00 00 callq 422d20 0.00 : 420704: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42070b: 00 0.00 : 42070c: 8b 05 d2 a6 26 00 mov 0x26a6d2(%rip),%eax # 68ade4 0.00 : 420712: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420717: 85 c0 test %eax,%eax 0.00 : 420719: 0f 8e e1 f2 ff ff jle 41fa00 0.00 : 42071f: 83 e8 01 sub $0x1,%eax 0.00 : 420722: 89 05 bc a6 26 00 mov %eax,0x26a6bc(%rip) # 68ade4 0.00 : 420728: e9 d3 f2 ff ff jmpq 41fa00 0.00 : 42072d: 48 63 05 b0 a6 26 00 movslq 0x26a6b0(%rip),%rax # 68ade4 0.00 : 420734: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 420739: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 42073d: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420742: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 420749: e8 82 2f 00 00 callq 4236d0 0.00 : 42074e: 31 f6 xor %esi,%esi 0.00 : 420750: 48 89 c7 mov %rax,%rdi 0.00 : 420753: e8 98 27 00 00 callq 422ef0 0.00 : 420758: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 42075c: 48 89 c6 mov %rax,%rsi 0.00 : 42075f: 89 d9 mov %ebx,%ecx 0.00 : 420761: 4c 89 e2 mov %r12,%rdx 0.00 : 420764: e8 b7 25 00 00 callq 422d20 0.00 : 420769: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420770: 00 0.00 : 420771: 8b 05 6d a6 26 00 mov 0x26a66d(%rip),%eax # 68ade4 0.00 : 420777: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42077c: 85 c0 test %eax,%eax 0.00 : 42077e: 0f 8e 7c f2 ff ff jle 41fa00 0.00 : 420784: 83 e8 01 sub $0x1,%eax 0.00 : 420787: 89 05 57 a6 26 00 mov %eax,0x26a657(%rip) # 68ade4 0.00 : 42078d: e9 6e f2 ff ff jmpq 41fa00 0.00 : 420792: 48 63 05 4b a6 26 00 movslq 0x26a64b(%rip),%rax # 68ade4 0.00 : 420799: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 42079e: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 4207a2: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4207a7: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 4207ae: e8 1d 2f 00 00 callq 4236d0 0.00 : 4207b3: 31 f6 xor %esi,%esi 0.00 : 4207b5: 48 89 c7 mov %rax,%rdi 0.00 : 4207b8: e8 33 27 00 00 callq 422ef0 0.00 : 4207bd: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 4207c1: 48 89 c6 mov %rax,%rsi 0.00 : 4207c4: 89 d9 mov %ebx,%ecx 0.00 : 4207c6: 4c 89 e2 mov %r12,%rdx 0.00 : 4207c9: e8 52 25 00 00 callq 422d20 0.00 : 4207ce: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4207d5: 00 0.00 : 4207d6: 8b 05 08 a6 26 00 mov 0x26a608(%rip),%eax # 68ade4 0.00 : 4207dc: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4207e1: 85 c0 test %eax,%eax 0.00 : 4207e3: 0f 8e 17 f2 ff ff jle 41fa00 0.00 : 4207e9: 83 e8 01 sub $0x1,%eax 0.00 : 4207ec: 89 05 f2 a5 26 00 mov %eax,0x26a5f2(%rip) # 68ade4 0.00 : 4207f2: e9 09 f2 ff ff jmpq 41fa00 0.00 : 4207f7: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 4207fb: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 4207ff: 8b 15 63 2d 27 00 mov 0x272d63(%rip),%edx # 693568 0.00 : 420805: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42080a: e8 11 2f 00 00 callq 423720 0.00 : 42080f: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420816: 00 0.00 : 420817: 8b 05 c7 a5 26 00 mov 0x26a5c7(%rip),%eax # 68ade4 0.00 : 42081d: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420822: 85 c0 test %eax,%eax 0.00 : 420824: 0f 8e d6 f1 ff ff jle 41fa00 0.00 : 42082a: 83 e8 01 sub $0x1,%eax 0.00 : 42082d: 89 05 b1 a5 26 00 mov %eax,0x26a5b1(%rip) # 68ade4 0.00 : 420833: e9 c8 f1 ff ff jmpq 41fa00 0.00 : 420838: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 42083c: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 420840: 8b 15 22 2d 27 00 mov 0x272d22(%rip),%edx # 693568 0.00 : 420846: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42084b: e8 d0 2e 00 00 callq 423720 0.00 : 420850: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420857: 00 0.00 : 420858: 8b 05 86 a5 26 00 mov 0x26a586(%rip),%eax # 68ade4 0.00 : 42085e: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420863: 85 c0 test %eax,%eax 0.00 : 420865: 0f 8e 95 f1 ff ff jle 41fa00 0.00 : 42086b: 83 e8 01 sub $0x1,%eax 0.00 : 42086e: 89 05 70 a5 26 00 mov %eax,0x26a570(%rip) # 68ade4 0.00 : 420874: e9 87 f1 ff ff jmpq 41fa00 0.00 : 420879: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 42087d: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 420881: 8b 15 e1 2c 27 00 mov 0x272ce1(%rip),%edx # 693568 0.00 : 420887: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42088c: e8 8f 2e 00 00 callq 423720 0.00 : 420891: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420898: 00 0.00 : 420899: 8b 05 45 a5 26 00 mov 0x26a545(%rip),%eax # 68ade4 0.00 : 42089f: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4208a4: 85 c0 test %eax,%eax 0.00 : 4208a6: 0f 8e 54 f1 ff ff jle 41fa00 0.00 : 4208ac: 83 e8 01 sub $0x1,%eax 0.00 : 4208af: 89 05 2f a5 26 00 mov %eax,0x26a52f(%rip) # 68ade4 0.00 : 4208b5: e9 46 f1 ff ff jmpq 41fa00 0.00 : 4208ba: 41 8b 06 mov (%r14),%eax 0.00 : 4208bd: be 06 00 00 00 mov $0x6,%esi 0.00 : 4208c2: 89 05 c8 2e 27 00 mov %eax,0x272ec8(%rip) # 693790 0.00 : 4208c8: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 4208cc: 48 8b 15 bd 2e 27 00 mov 0x272ebd(%rip),%rdx # 693790 0.00 : 4208d3: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4208d8: e8 83 28 00 00 callq 423160 0.00 : 4208dd: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4208e2: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4208e9: 00 0.00 : 4208ea: e9 11 f1 ff ff jmpq 41fa00 0.00 : 4208ef: 41 8b 06 mov (%r14),%eax 0.00 : 4208f2: be 06 00 00 00 mov $0x6,%esi 0.00 : 4208f7: 31 ff xor %edi,%edi 0.00 : 4208f9: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4208fe: 89 05 8c 2e 27 00 mov %eax,0x272e8c(%rip) # 693790 0.00 : 420904: 48 8b 15 85 2e 27 00 mov 0x272e85(%rip),%rdx # 693790 0.00 : 42090b: e8 50 28 00 00 callq 423160 0.00 : 420910: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420915: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42091c: 00 0.00 : 42091d: e9 de f0 ff ff jmpq 41fa00 0.00 : 420922: 49 8b 16 mov (%r14),%rdx 0.00 : 420925: be 05 00 00 00 mov $0x5,%esi 0.00 : 42092a: 48 89 15 5f 2e 27 00 mov %rdx,0x272e5f(%rip) # 693790 0.00 : 420931: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420935: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42093a: e8 21 28 00 00 callq 423160 0.00 : 42093f: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420944: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42094b: 00 0.00 : 42094c: e9 af f0 ff ff jmpq 41fa00 0.00 : 420951: 49 8b 16 mov (%r14),%rdx 0.00 : 420954: be 05 00 00 00 mov $0x5,%esi 0.00 : 420959: 31 ff xor %edi,%edi 0.00 : 42095b: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420960: 48 89 15 29 2e 27 00 mov %rdx,0x272e29(%rip) # 693790 0.00 : 420967: e8 f4 27 00 00 callq 423160 0.00 : 42096c: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420971: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420978: 00 0.00 : 420979: e9 82 f0 ff ff jmpq 41fa00 0.00 : 42097e: 49 8b 16 mov (%r14),%rdx 0.00 : 420981: be 04 00 00 00 mov $0x4,%esi 0.00 : 420986: 48 89 15 03 2e 27 00 mov %rdx,0x272e03(%rip) # 693790 0.00 : 42098d: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420991: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420996: e8 c5 27 00 00 callq 423160 0.00 : 42099b: 8b 15 97 60 27 00 mov 0x276097(%rip),%edx # 696a38 0.00 : 4209a1: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4209a8: 00 0.00 : 4209a9: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4209ae: 48 63 ca movslq %edx,%rcx 0.00 : 4209b1: 83 c2 01 add $0x1,%edx 0.00 : 4209b4: 48 89 04 cd 00 35 69 mov %rax,0x693500(,%rcx,8) 0.00 : 4209bb: 00 0.00 : 4209bc: 89 15 76 60 27 00 mov %edx,0x276076(%rip) # 696a38 0.00 : 4209c2: e9 39 f0 ff ff jmpq 41fa00 0.00 : 4209c7: 49 8b 16 mov (%r14),%rdx 0.00 : 4209ca: be 04 00 00 00 mov $0x4,%esi 0.00 : 4209cf: 31 ff xor %edi,%edi 0.00 : 4209d1: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4209d6: 48 89 15 b3 2d 27 00 mov %rdx,0x272db3(%rip) # 693790 0.00 : 4209dd: e8 7e 27 00 00 callq 423160 0.00 : 4209e2: 8b 15 50 60 27 00 mov 0x276050(%rip),%edx # 696a38 0.00 : 4209e8: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4209ef: 00 0.00 : 4209f0: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4209f5: 48 63 ca movslq %edx,%rcx 0.00 : 4209f8: 83 c2 01 add $0x1,%edx 0.00 : 4209fb: 48 89 04 cd 00 35 69 mov %rax,0x693500(,%rcx,8) 0.00 : 420a02: 00 0.00 : 420a03: 89 15 2f 60 27 00 mov %edx,0x27602f(%rip) # 696a38 0.00 : 420a09: e9 f2 ef ff ff jmpq 41fa00 0.00 : 420a0e: 49 8b 16 mov (%r14),%rdx 0.00 : 420a11: be 03 00 00 00 mov $0x3,%esi 0.00 : 420a16: 48 89 15 73 2d 27 00 mov %rdx,0x272d73(%rip) # 693790 0.00 : 420a1d: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420a21: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420a26: e8 35 27 00 00 callq 423160 0.00 : 420a2b: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420a30: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420a37: 00 0.00 : 420a38: e9 c3 ef ff ff jmpq 41fa00 0.00 : 420a3d: 49 8b 16 mov (%r14),%rdx 0.00 : 420a40: be 03 00 00 00 mov $0x3,%esi 0.00 : 420a45: bf 01 00 00 00 mov $0x1,%edi 0.00 : 420a4a: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420a4f: 48 89 15 3a 2d 27 00 mov %rdx,0x272d3a(%rip) # 693790 0.00 : 420a56: e8 05 27 00 00 callq 423160 0.00 : 420a5b: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420a60: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420a67: 00 0.00 : 420a68: e9 93 ef ff ff jmpq 41fa00 0.00 : 420a6d: 48 63 05 70 a3 26 00 movslq 0x26a370(%rip),%rax # 68ade4 0.00 : 420a74: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 420a79: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 420a7d: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420a82: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 420a89: e8 42 2c 00 00 callq 4236d0 0.00 : 420a8e: 31 f6 xor %esi,%esi 0.00 : 420a90: 48 89 c7 mov %rax,%rdi 0.00 : 420a93: e8 58 24 00 00 callq 422ef0 0.00 : 420a98: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 420a9c: 48 89 c6 mov %rax,%rsi 0.00 : 420a9f: 89 d9 mov %ebx,%ecx 0.00 : 420aa1: 4c 89 e2 mov %r12,%rdx 0.00 : 420aa4: e8 e7 22 00 00 callq 422d90 0.00 : 420aa9: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420ab0: 00 0.00 : 420ab1: 8b 05 2d a3 26 00 mov 0x26a32d(%rip),%eax # 68ade4 0.00 : 420ab7: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420abc: 85 c0 test %eax,%eax 0.00 : 420abe: 0f 8e 3c ef ff ff jle 41fa00 0.00 : 420ac4: 83 e8 01 sub $0x1,%eax 0.00 : 420ac7: 89 05 17 a3 26 00 mov %eax,0x26a317(%rip) # 68ade4 0.00 : 420acd: e9 2e ef ff ff jmpq 41fa00 0.00 : 420ad2: 49 8b 06 mov (%r14),%rax 0.00 : 420ad5: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420adc: 00 0.00 : 420add: e9 1e ef ff ff jmpq 41fa00 0.00 : 420ae2: 49 8b 06 mov (%r14),%rax 0.00 : 420ae5: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420aec: 00 0.00 : 420aed: e9 0e ef ff ff jmpq 41fa00 0.00 : 420af2: 49 8b 06 mov (%r14),%rax 0.00 : 420af5: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420afc: 00 0.00 : 420afd: e9 fe ee ff ff jmpq 41fa00 0.00 : 420b02: 49 8b 06 mov (%r14),%rax 0.00 : 420b05: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420b0c: 00 0.00 : 420b0d: e9 ee ee ff ff jmpq 41fa00 0.00 : 420b12: 49 8b 06 mov (%r14),%rax 0.00 : 420b15: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420b1c: 00 0.00 : 420b1d: e9 de ee ff ff jmpq 41fa00 0.00 : 420b22: 49 8b 06 mov (%r14),%rax 0.00 : 420b25: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420b2c: 00 0.00 : 420b2d: e9 ce ee ff ff jmpq 41fa00 0.00 : 420b32: 49 8b 06 mov (%r14),%rax 0.00 : 420b35: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420b3c: 00 0.00 : 420b3d: e9 be ee ff ff jmpq 41fa00 0.00 : 420b42: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 420b46: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 420b4a: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420b4f: e8 2c 20 00 00 callq 422b80 0.00 : 420b54: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420b59: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420b60: 00 0.00 : 420b61: e9 9a ee ff ff jmpq 41fa00 0.00 : 420b66: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 420b6a: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 420b6e: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420b73: e8 58 20 00 00 callq 422bd0 0.00 : 420b78: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420b7d: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420b84: 00 0.00 : 420b85: e9 76 ee ff ff jmpq 41fa00 0.00 : 420b8a: 49 8b 06 mov (%r14),%rax 0.00 : 420b8d: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420b94: 00 0.00 : 420b95: e9 66 ee ff ff jmpq 41fa00 0.00 : 420b9a: 49 8b 06 mov (%r14),%rax 0.00 : 420b9d: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420ba4: 00 0.00 : 420ba5: e9 56 ee ff ff jmpq 41fa00 0.00 : 420baa: 49 8b 06 mov (%r14),%rax 0.00 : 420bad: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420bb4: 00 0.00 : 420bb5: e9 46 ee ff ff jmpq 41fa00 0.00 : 420bba: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 420bbe: 49 8d 4e f0 lea -0x10(%r14),%rcx 0.00 : 420bc2: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 420bc6: 48 85 c0 test %rax,%rax 0.00 : 420bc9: 0f 84 61 09 00 00 je 421530 0.00 : 420bcf: 48 89 c2 mov %rax,%rdx 0.00 : 420bd2: 48 8b 00 mov (%rax),%rax 0.00 : 420bd5: 48 85 c0 test %rax,%rax 0.00 : 420bd8: 75 f5 jne 420bcf 0.00 : 420bda: 49 8b 06 mov (%r14),%rax 0.00 : 420bdd: 48 89 02 mov %rax,(%rdx) 0.00 : 420be0: 48 8b 01 mov (%rcx),%rax 0.00 : 420be3: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420bea: 00 0.00 : 420beb: e9 10 ee ff ff jmpq 41fa00 0.00 : 420bf0: 49 8b 06 mov (%r14),%rax 0.00 : 420bf3: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420bfa: 00 0.00 : 420bfb: e9 00 ee ff ff jmpq 41fa00 0.00 : 420c00: 49 8b 3e mov (%r14),%rdi 0.00 : 420c03: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420c08: e8 63 1c 00 00 callq 422870 0.00 : 420c0d: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420c12: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420c19: 00 0.00 : 420c1a: e9 e1 ed ff ff jmpq 41fa00 0.00 : 420c1f: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 420c23: 49 8b 3e mov (%r14),%rdi 0.00 : 420c26: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : 420c2a: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420c2f: e8 1c 23 00 00 callq 422f50 0.00 : 420c34: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420c39: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420c40: 00 0.00 : 420c41: e9 ba ed ff ff jmpq 41fa00 5.26 : 420c46: 49 8b 3e mov (%r14),%rdi 0.00 : 420c49: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : 420c4d: 31 d2 xor %edx,%edx 0.00 : 420c4f: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420c54: e8 f7 22 00 00 callq 422f50 0.00 : 420c59: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420c5e: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420c65: 00 0.00 : 420c66: e9 95 ed ff ff jmpq 41fa00 0.00 : 420c6b: 49 8b 46 f0 mov -0x10(%r14),%rax 0.00 : 420c6f: 49 8d 4e f0 lea -0x10(%r14),%rcx 0.00 : 420c73: 48 89 c2 mov %rax,%rdx 0.00 : 420c76: 48 8b 00 mov (%rax),%rax 0.00 : 420c79: 48 85 c0 test %rax,%rax 0.00 : 420c7c: 75 f5 jne 420c73 0.00 : 420c7e: 49 8b 06 mov (%r14),%rax 0.00 : 420c81: 48 89 02 mov %rax,(%rdx) 0.00 : 420c84: 48 8b 01 mov (%rcx),%rax 0.00 : 420c87: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420c8e: 00 0.00 : 420c8f: e9 6c ed ff ff jmpq 41fa00 0.00 : 420c94: 49 8b 06 mov (%r14),%rax 0.00 : 420c97: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420c9e: 00 0.00 : 420c9f: e9 5c ed ff ff jmpq 41fa00 0.00 : 420ca4: 49 8b 06 mov (%r14),%rax 0.00 : 420ca7: 48 c7 84 24 60 0e 00 movq $0x0,0xe60(%rsp) 0.00 : 420cae: 00 00 00 00 00 0.00 : 420cb3: 48 89 84 24 68 0e 00 mov %rax,0xe68(%rsp) 0.00 : 420cba: 00 0.00 : 420cbb: e9 40 ed ff ff jmpq 41fa00 0.00 : 420cc0: 49 8b 06 mov (%r14),%rax 0.00 : 420cc3: 48 c7 84 24 68 0e 00 movq $0x0,0xe68(%rsp) 0.00 : 420cca: 00 00 00 00 00 0.00 : 420ccf: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420cd6: 00 0.00 : 420cd7: e9 24 ed ff ff jmpq 41fa00 0.00 : 420cdc: 49 8b 06 mov (%r14),%rax 0.00 : 420cdf: 48 c7 84 24 68 0e 00 movq $0x0,0xe68(%rsp) 0.00 : 420ce6: 00 00 00 00 00 5.26 : 420ceb: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420cf2: 00 0.00 : 420cf3: e9 08 ed ff ff jmpq 41fa00 0.00 : 420cf8: 49 8b 16 mov (%r14),%rdx 0.00 : 420cfb: be 0c 00 00 00 mov $0xc,%esi 0.00 : 420d00: 48 89 15 89 2a 27 00 mov %rdx,0x272a89(%rip) # 693790 0.00 : 420d07: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420d0b: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420d10: e8 4b 24 00 00 callq 423160 0.00 : 420d15: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420d1a: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420d21: 00 0.00 : 420d22: e9 d9 ec ff ff jmpq 41fa00 0.00 : 420d27: 49 8b 16 mov (%r14),%rdx 0.00 : 420d2a: be 01 00 00 00 mov $0x1,%esi 0.00 : 420d2f: 48 89 15 5a 2a 27 00 mov %rdx,0x272a5a(%rip) # 693790 0.00 : 420d36: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420d3a: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420d3f: e8 1c 24 00 00 callq 423160 0.00 : 420d44: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420d49: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420d50: 00 0.00 : 420d51: e9 aa ec ff ff jmpq 41fa00 0.00 : 420d56: 49 8b 16 mov (%r14),%rdx 0.00 : 420d59: 31 f6 xor %esi,%esi 0.00 : 420d5b: 48 89 15 2e 2a 27 00 mov %rdx,0x272a2e(%rip) # 693790 0.00 : 420d62: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420d66: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420d6b: e8 f0 23 00 00 callq 423160 0.00 : 420d70: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420d75: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420d7c: 00 0.00 : 420d7d: e9 7e ec ff ff jmpq 41fa00 0.00 : 420d82: 49 8b 16 mov (%r14),%rdx 0.00 : 420d85: be 01 00 00 00 mov $0x1,%esi 0.00 : 420d8a: 31 ff xor %edi,%edi 0.00 : 420d8c: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420d91: 48 89 15 f8 29 27 00 mov %rdx,0x2729f8(%rip) # 693790 0.00 : 420d98: e8 c3 23 00 00 callq 423160 0.00 : 420d9d: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420da2: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420da9: 00 0.00 : 420daa: e9 51 ec ff ff jmpq 41fa00 0.00 : 420daf: 49 8b 16 mov (%r14),%rdx 0.00 : 420db2: 31 f6 xor %esi,%esi 0.00 : 420db4: bf 01 00 00 00 mov $0x1,%edi 0.00 : 420db9: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420dbe: 48 89 15 cb 29 27 00 mov %rdx,0x2729cb(%rip) # 693790 0.00 : 420dc5: e8 96 23 00 00 callq 423160 0.00 : 420dca: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420dcf: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420dd6: 00 0.00 : 420dd7: e9 24 ec ff ff jmpq 41fa00 0.00 : 420ddc: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 420de0: 49 8b 3e mov (%r14),%rdi 0.00 : 420de3: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420de8: e8 03 21 00 00 callq 422ef0 0.00 : 420ded: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420df2: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420df9: 00 0.00 : 420dfa: e9 01 ec ff ff jmpq 41fa00 0.00 : 420dff: 49 8b 3e mov (%r14),%rdi 0.00 : 420e02: 31 f6 xor %esi,%esi 0.00 : 420e04: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420e09: e8 e2 20 00 00 callq 422ef0 0.00 : 420e0e: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420e13: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420e1a: 00 0.00 : 420e1b: e9 e0 eb ff ff jmpq 41fa00 0.00 : 420e20: 44 8b 15 ad 25 27 00 mov 0x2725ad(%rip),%r10d # 6933d4 0.00 : 420e27: 48 c7 05 8e 25 27 00 movq $0x0,0x27258e(%rip) # 6933c0 0.00 : 420e2e: 00 00 00 00 0.00 : 420e32: 45 85 d2 test %r10d,%r10d 0.00 : 420e35: 0f 84 c7 06 00 00 je 421502 0.00 : 420e3b: 44 8b 0d 2a 26 27 00 mov 0x27262a(%rip),%r9d # 69346c 0.00 : 420e42: 45 85 c9 test %r9d,%r9d 0.00 : 420e45: 74 0a je 420e51 0.00 : 420e47: c7 05 1b 26 27 00 00 movl $0x0,0x27261b(%rip) # 69346c 0.00 : 420e4e: 00 00 00 0.00 : 420e51: 8b 3d 59 26 27 00 mov 0x272659(%rip),%edi # 6934b0 0.00 : 420e57: 85 ff test %edi,%edi 0.00 : 420e59: 0f 84 b4 06 00 00 je 421513 0.00 : 420e5f: 8b 05 4f 26 27 00 mov 0x27264f(%rip),%eax # 6934b4 0.00 : 420e65: 3b 05 75 9f 26 00 cmp 0x269f75(%rip),%eax # 68ade0 0.00 : 420e6b: 0f 8d a2 06 00 00 jge 421513 0.00 : 420e71: 8b 35 59 25 27 00 mov 0x272559(%rip),%esi # 6933d0 0.00 : 420e77: b8 d7 96 47 00 mov $0x4796d7,%eax 0.00 : 420e7c: bb 97 a9 47 00 mov $0x47a997,%ebx 0.00 : 420e81: ba 05 00 00 00 mov $0x5,%edx 0.00 : 420e86: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420e8b: 85 f6 test %esi,%esi 0.00 : 420e8d: be 38 26 47 00 mov $0x472638,%esi 0.00 : 420e92: 48 0f 45 d8 cmovne %rax,%rbx 0.00 : 420e96: 31 ff xor %edi,%edi 0.00 : 420e98: e8 e3 59 ff ff callq 416880 0.00 : 420e9d: 48 8b 3d cc 24 27 00 mov 0x2724cc(%rip),%rdi # 693370 0.00 : 420ea4: 48 89 d9 mov %rbx,%rcx 0.00 : 420ea7: 48 89 c2 mov %rax,%rdx 0.00 : 420eaa: be 01 00 00 00 mov $0x1,%esi 0.00 : 420eaf: 31 c0 xor %eax,%eax 0.00 : 420eb1: 31 db xor %ebx,%ebx 0.00 : 420eb3: e8 d8 50 ff ff callq 415f90 <__fprintf_chk@plt> 0.00 : 420eb8: 83 05 f5 25 27 00 01 addl $0x1,0x2725f5(%rip) # 6934b4 0.00 : 420ebf: c7 05 cf 28 27 00 0a movl $0xa,0x2728cf(%rip) # 693798 0.00 : 420ec6: 00 00 00 0.00 : 420ec9: c7 05 c9 28 27 00 0a movl $0xa,0x2728c9(%rip) # 69379c 0.00 : 420ed0: 00 00 00 0.00 : 420ed3: 48 c7 05 82 25 27 00 movq $0x0,0x272582(%rip) # 693460 0.00 : 420eda: 00 00 00 00 0.00 : 420ede: e8 5d a6 ff ff callq 41b540 0.00 : 420ee3: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420ee8: e9 70 ec ff ff jmpq 41fb5d 0.00 : 420eed: 31 db xor %ebx,%ebx 0.00 : 420eef: 83 3d de 24 27 00 00 cmpl $0x0,0x2724de(%rip) # 6933d4 0.00 : 420ef6: 48 c7 05 bf 24 27 00 movq $0x0,0x2724bf(%rip) # 6933c0 0.00 : 420efd: 00 00 00 00 0.00 : 420f01: c7 05 a9 25 27 00 00 movl $0x0,0x2725a9(%rip) # 6934b4 0.00 : 420f08: 00 00 00 0.00 : 420f0b: 0f 94 c3 sete %bl 0.00 : 420f0e: e9 4a ec ff ff jmpq 41fb5d 0.00 : 420f13: 49 8b 16 mov (%r14),%rdx 0.00 : 420f16: be 08 00 00 00 mov $0x8,%esi 0.00 : 420f1b: 31 ff xor %edi,%edi 0.00 : 420f1d: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420f22: 48 89 15 67 28 27 00 mov %rdx,0x272867(%rip) # 693790 0.00 : 420f29: e8 32 22 00 00 callq 423160 0.00 : 420f2e: 8b 15 04 5b 27 00 mov 0x275b04(%rip),%edx # 696a38 0.00 : 420f34: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420f3b: 00 0.00 : 420f3c: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420f41: 48 63 ca movslq %edx,%rcx 0.00 : 420f44: 83 c2 01 add $0x1,%edx 0.00 : 420f47: 48 89 04 cd 00 35 69 mov %rax,0x693500(,%rcx,8) 0.00 : 420f4e: 00 0.00 : 420f4f: 89 15 e3 5a 27 00 mov %edx,0x275ae3(%rip) # 696a38 0.00 : 420f55: e9 a6 ea ff ff jmpq 41fa00 0.00 : 420f5a: 49 8b 16 mov (%r14),%rdx 0.00 : 420f5d: be 0e 00 00 00 mov $0xe,%esi 0.00 : 420f62: 48 89 15 27 28 27 00 mov %rdx,0x272827(%rip) # 693790 0.00 : 420f69: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420f6d: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420f72: e8 e9 21 00 00 callq 423160 0.00 : 420f77: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420f7c: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420f83: 00 0.00 : 420f84: e9 77 ea ff ff jmpq 41fa00 0.00 : 420f89: 49 8b 16 mov (%r14),%rdx 0.00 : 420f8c: be 08 00 00 00 mov $0x8,%esi 0.00 : 420f91: 48 89 15 f8 27 27 00 mov %rdx,0x2727f8(%rip) # 693790 0.00 : 420f98: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 420f9c: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420fa1: e8 ba 21 00 00 callq 423160 0.00 : 420fa6: 8b 15 8c 5a 27 00 mov 0x275a8c(%rip),%edx # 696a38 0.00 : 420fac: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420fb3: 00 0.00 : 420fb4: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420fb9: 48 63 ca movslq %edx,%rcx 0.00 : 420fbc: 83 c2 01 add $0x1,%edx 0.00 : 420fbf: 48 89 04 cd 00 35 69 mov %rax,0x693500(,%rcx,8) 0.00 : 420fc6: 00 0.00 : 420fc7: 89 15 6b 5a 27 00 mov %edx,0x275a6b(%rip) # 696a38 0.00 : 420fcd: e9 2e ea ff ff jmpq 41fa00 0.00 : 420fd2: 49 8b 16 mov (%r14),%rdx 0.00 : 420fd5: be 0e 00 00 00 mov $0xe,%esi 0.00 : 420fda: bf 01 00 00 00 mov $0x1,%edi 0.00 : 420fdf: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 420fe4: 48 89 15 a5 27 27 00 mov %rdx,0x2727a5(%rip) # 693790 0.00 : 420feb: e8 70 21 00 00 callq 423160 0.00 : 420ff0: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 420ff5: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 420ffc: 00 0.00 : 420ffd: e9 fe e9 ff ff jmpq 41fa00 0.00 : 421002: 49 8b 16 mov (%r14),%rdx 0.00 : 421005: be 0d 00 00 00 mov $0xd,%esi 0.00 : 42100a: 48 89 15 7f 27 27 00 mov %rdx,0x27277f(%rip) # 693790 0.00 : 421011: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 421015: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42101a: e8 41 21 00 00 callq 423160 0.00 : 42101f: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421024: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42102b: 00 0.00 : 42102c: e9 cf e9 ff ff jmpq 41fa00 0.00 : 421031: 49 8b 16 mov (%r14),%rdx 0.00 : 421034: be 0d 00 00 00 mov $0xd,%esi 0.00 : 421039: 31 ff xor %edi,%edi 0.00 : 42103b: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 421040: 48 89 15 49 27 27 00 mov %rdx,0x272749(%rip) # 693790 0.00 : 421047: e8 14 21 00 00 callq 423160 0.00 : 42104c: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421051: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 421058: 00 0.00 : 421059: e9 a2 e9 ff ff jmpq 41fa00 0.00 : 42105e: 41 8b 06 mov (%r14),%eax 0.00 : 421061: be 07 00 00 00 mov $0x7,%esi 0.00 : 421066: 89 05 24 27 27 00 mov %eax,0x272724(%rip) # 693790 0.00 : 42106c: 41 8b 7e e0 mov -0x20(%r14),%edi 0.00 : 421070: 48 8b 15 19 27 27 00 mov 0x272719(%rip),%rdx # 693790 0.00 : 421077: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42107c: e8 df 20 00 00 callq 423160 0.00 : 421081: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421086: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42108d: 00 0.00 : 42108e: e9 6d e9 ff ff jmpq 41fa00 0.00 : 421093: 41 8b 06 mov (%r14),%eax 0.00 : 421096: be 07 00 00 00 mov $0x7,%esi 0.00 : 42109b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4210a0: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4210a5: 89 05 e5 26 27 00 mov %eax,0x2726e5(%rip) # 693790 0.00 : 4210ab: 48 8b 15 de 26 27 00 mov 0x2726de(%rip),%rdx # 693790 0.00 : 4210b2: e8 a9 20 00 00 callq 423160 0.00 : 4210b7: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4210bc: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4210c3: 00 0.00 : 4210c4: e9 37 e9 ff ff jmpq 41fa00 0.00 : 4210c9: 31 d2 xor %edx,%edx 0.00 : 4210cb: 31 ff xor %edi,%edi 0.00 : 4210cd: 31 f6 xor %esi,%esi 0.00 : 4210cf: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4210d4: 48 c7 84 24 50 0e 00 movq $0x0,0xe50(%rsp) 0.00 : 4210db: 00 00 00 00 00 0.00 : 4210e0: 48 c7 84 24 58 0e 00 movq $0x0,0xe58(%rsp) 0.00 : 4210e7: 00 00 00 00 00 0.00 : 4210ec: e8 5f 1e 00 00 callq 422f50 0.00 : 4210f1: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4210f8: 00 0.00 : 4210f9: 41 8b 56 f0 mov -0x10(%r14),%edx 0.00 : 4210fd: 09 50 04 or %edx,0x4(%rax) 0.00 : 421100: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 421105: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42110a: 41 83 3e 0a cmpl $0xa,(%r14) 0.00 : 42110e: 0f 45 05 6b 26 27 00 cmovne 0x27266b(%rip),%eax # 693780 0.00 : 421115: 89 05 65 26 27 00 mov %eax,0x272665(%rip) # 693780 0.00 : 42111b: e9 e0 e8 ff ff jmpq 41fa00 0.00 : 421120: 49 8b 16 mov (%r14),%rdx 0.00 : 421123: 48 85 d2 test %rdx,%rdx 0.00 : 421126: 74 10 je 421138 0.00 : 421128: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 42112b: 41 0b 46 f0 or -0x10(%r14),%eax 0.00 : 42112f: 83 c8 04 or $0x4,%eax 0.00 : 421132: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 421135: 49 8b 16 mov (%r14),%rdx 0.00 : 421138: 48 89 94 24 60 0e 00 mov %rdx,0xe60(%rsp) 0.00 : 42113f: 00 0.00 : 421140: e9 bb e8 ff ff jmpq 41fa00 0.00 : 421145: 49 8b 16 mov (%r14),%rdx 0.00 : 421148: 48 85 d2 test %rdx,%rdx 0.00 : 42114b: 74 10 je 42115d 0.00 : 42114d: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 421150: 41 0b 46 e0 or -0x20(%r14),%eax 0.00 : 421154: 83 c8 04 or $0x4,%eax 0.00 : 421157: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 42115a: 49 8b 16 mov (%r14),%rdx 0.00 : 42115d: 48 89 94 24 60 0e 00 mov %rdx,0xe60(%rsp) 0.00 : 421164: 00 0.00 : 421165: e9 96 e8 ff ff jmpq 41fa00 0.00 : 42116a: 49 8b 16 mov (%r14),%rdx 0.00 : 42116d: 48 85 d2 test %rdx,%rdx 0.00 : 421170: 74 0a je 42117c 0.00 : 421172: 41 8b 46 f0 mov -0x10(%r14),%eax 0.00 : 421176: 09 42 04 or %eax,0x4(%rdx) 0.00 : 421179: 49 8b 16 mov (%r14),%rdx 0.00 : 42117c: 48 89 94 24 60 0e 00 mov %rdx,0xe60(%rsp) 0.00 : 421183: 00 0.00 : 421184: e9 77 e8 ff ff jmpq 41fa00 0.00 : 421189: 49 8b 16 mov (%r14),%rdx 0.00 : 42118c: 48 85 d2 test %rdx,%rdx 0.00 : 42118f: 74 07 je 421198 0.00 : 421191: 83 4a 04 04 orl $0x4,0x4(%rdx) 0.00 : 421195: 49 8b 16 mov (%r14),%rdx 0.00 : 421198: 48 89 94 24 60 0e 00 mov %rdx,0xe60(%rsp) 0.00 : 42119f: 00 0.00 : 4211a0: e9 5b e8 ff ff jmpq 41fa00 0.00 : 4211a5: c7 84 24 60 0e 00 00 movl $0x180,0xe60(%rsp) 0.00 : 4211ac: 80 01 00 00 0.00 : 4211b0: e9 4b e8 ff ff jmpq 41fa00 0.00 : 4211b5: 48 c7 05 00 22 27 00 movq $0x0,0x272200(%rip) # 6933c0 0.00 : 4211bc: 00 00 00 00 0.00 : 4211c0: 31 db xor %ebx,%ebx 0.00 : 4211c2: e9 96 e9 ff ff jmpq 41fb5d 0.00 : 4211c7: 49 8b 46 f0 mov -0x10(%r14),%rax 0.00 : 4211cb: 31 db xor %ebx,%ebx 0.00 : 4211cd: c7 05 dd 22 27 00 00 movl $0x0,0x2722dd(%rip) # 6934b4 0.00 : 4211d4: 00 00 00 0.00 : 4211d7: 48 89 05 e2 21 27 00 mov %rax,0x2721e2(%rip) # 6933c0 0.00 : 4211de: e9 7a e9 ff ff jmpq 41fb5d 0.00 : 4211e3: 49 8b 76 f0 mov -0x10(%r14),%rsi 0.00 : 4211e7: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 4211eb: 8b 15 77 23 27 00 mov 0x272377(%rip),%edx # 693568 0.00 : 4211f1: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4211f6: e8 25 25 00 00 callq 423720 0.00 : 4211fb: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 421202: 00 0.00 : 421203: 8b 05 db 9b 26 00 mov 0x269bdb(%rip),%eax # 68ade4 0.00 : 421209: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42120e: 85 c0 test %eax,%eax 0.00 : 421210: 0f 8e ea e7 ff ff jle 41fa00 0.00 : 421216: 83 e8 01 sub $0x1,%eax 0.00 : 421219: 89 05 c5 9b 26 00 mov %eax,0x269bc5(%rip) # 68ade4 0.00 : 42121f: e9 dc e7 ff ff jmpq 41fa00 0.00 : 421224: 48 63 05 b9 9b 26 00 movslq 0x269bb9(%rip),%rax # 68ade4 0.00 : 42122b: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 42122f: 31 f6 xor %esi,%esi 0.00 : 421231: 49 8b 7e 90 mov -0x70(%r14),%rdi 0.00 : 421235: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42123a: 8b 0c 85 80 35 69 00 mov 0x693580(,%rax,4),%ecx 0.00 : 421241: e8 4a 1b 00 00 callq 422d90 0.00 : 421246: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42124d: 00 0.00 : 42124e: 8b 05 90 9b 26 00 mov 0x269b90(%rip),%eax # 68ade4 0.00 : 421254: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421259: 85 c0 test %eax,%eax 0.00 : 42125b: 0f 8e 9f e7 ff ff jle 41fa00 0.00 : 421261: 83 e8 01 sub $0x1,%eax 0.00 : 421264: 89 05 7a 9b 26 00 mov %eax,0x269b7a(%rip) # 68ade4 0.00 : 42126a: e9 91 e7 ff ff jmpq 41fa00 0.00 : 42126f: 48 63 05 6e 9b 26 00 movslq 0x269b6e(%rip),%rax # 68ade4 0.00 : 421276: 49 8b 56 f0 mov -0x10(%r14),%rdx 0.00 : 42127a: 31 f6 xor %esi,%esi 0.00 : 42127c: 49 8b 7e 90 mov -0x70(%r14),%rdi 0.00 : 421280: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 421285: 8b 0c 85 80 35 69 00 mov 0x693580(,%rax,4),%ecx 0.00 : 42128c: e8 ff 1a 00 00 callq 422d90 0.00 : 421291: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 421298: 00 0.00 : 421299: 8b 05 45 9b 26 00 mov 0x269b45(%rip),%eax # 68ade4 0.00 : 42129f: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4212a4: 85 c0 test %eax,%eax 0.00 : 4212a6: 0f 8e 54 e7 ff ff jle 41fa00 0.00 : 4212ac: 83 e8 01 sub $0x1,%eax 0.00 : 4212af: 89 05 2f 9b 26 00 mov %eax,0x269b2f(%rip) # 68ade4 0.00 : 4212b5: e9 46 e7 ff ff jmpq 41fa00 0.00 : 4212ba: 48 63 05 23 9b 26 00 movslq 0x269b23(%rip),%rax # 68ade4 0.00 : 4212c1: 49 8b 5e f0 mov -0x10(%r14),%rbx 0.00 : 4212c5: 8b 2c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebp 0.00 : 4212cc: 49 8b 46 b0 mov -0x50(%r14),%rax 0.00 : 4212d0: 48 85 c0 test %rax,%rax 0.00 : 4212d3: 74 1a je 4212ef 0.00 : 4212d5: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 4212d9: 74 14 je 4212ef 0.00 : 4212db: 48 89 c7 mov %rax,%rdi 0.00 : 4212de: 31 c0 xor %eax,%eax 0.00 : 4212e0: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4212e5: e8 e6 15 03 00 callq 4528d0 0.00 : 4212ea: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4212ef: 49 8b 7e 80 mov -0x80(%r14),%rdi 0.00 : 4212f3: 89 e9 mov %ebp,%ecx 0.00 : 4212f5: 48 89 da mov %rbx,%rdx 0.00 : 4212f8: 48 89 c6 mov %rax,%rsi 0.00 : 4212fb: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 421300: e8 8b 1a 00 00 callq 422d90 0.00 : 421305: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42130c: 00 0.00 : 42130d: 8b 05 d1 9a 26 00 mov 0x269ad1(%rip),%eax # 68ade4 0.00 : 421313: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421318: 85 c0 test %eax,%eax 0.00 : 42131a: 0f 8e e0 e6 ff ff jle 41fa00 0.00 : 421320: 83 e8 01 sub $0x1,%eax 0.00 : 421323: 89 05 bb 9a 26 00 mov %eax,0x269abb(%rip) # 68ade4 0.00 : 421329: e9 d2 e6 ff ff jmpq 41fa00 0.00 : 42132e: 48 63 05 af 9a 26 00 movslq 0x269aaf(%rip),%rax # 68ade4 0.00 : 421335: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 42133a: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 42133e: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 421343: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 42134a: e8 81 23 00 00 callq 4236d0 0.00 : 42134f: 31 f6 xor %esi,%esi 0.00 : 421351: 48 89 c7 mov %rax,%rdi 0.00 : 421354: e8 97 1b 00 00 callq 422ef0 0.00 : 421359: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 42135d: 48 89 c6 mov %rax,%rsi 0.00 : 421360: 89 d9 mov %ebx,%ecx 0.00 : 421362: 4c 89 e2 mov %r12,%rdx 0.00 : 421365: e8 26 1a 00 00 callq 422d90 0.00 : 42136a: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 421371: 00 0.00 : 421372: 8b 05 6c 9a 26 00 mov 0x269a6c(%rip),%eax # 68ade4 0.00 : 421378: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42137d: 85 c0 test %eax,%eax 0.00 : 42137f: 0f 8e 7b e6 ff ff jle 41fa00 0.00 : 421385: 83 e8 01 sub $0x1,%eax 0.00 : 421388: 89 05 56 9a 26 00 mov %eax,0x269a56(%rip) # 68ade4 0.00 : 42138e: e9 6d e6 ff ff jmpq 41fa00 0.00 : 421393: 48 63 05 4a 9a 26 00 movslq 0x269a4a(%rip),%rax # 68ade4 0.00 : 42139a: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 42139f: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 4213a3: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4213a8: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 4213af: e8 1c 23 00 00 callq 4236d0 0.00 : 4213b4: 31 f6 xor %esi,%esi 0.00 : 4213b6: 48 89 c7 mov %rax,%rdi 0.00 : 4213b9: e8 32 1b 00 00 callq 422ef0 0.00 : 4213be: 49 8b 7e b0 mov -0x50(%r14),%rdi 0.00 : 4213c2: 48 89 c6 mov %rax,%rsi 0.00 : 4213c5: 89 d9 mov %ebx,%ecx 0.00 : 4213c7: 4c 89 e2 mov %r12,%rdx 0.00 : 4213ca: e8 c1 19 00 00 callq 422d90 0.00 : 4213cf: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4213d6: 00 0.00 : 4213d7: 8b 05 07 9a 26 00 mov 0x269a07(%rip),%eax # 68ade4 0.00 : 4213dd: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4213e2: 85 c0 test %eax,%eax 0.00 : 4213e4: 0f 8e 16 e6 ff ff jle 41fa00 0.00 : 4213ea: 83 e8 01 sub $0x1,%eax 0.00 : 4213ed: 89 05 f1 99 26 00 mov %eax,0x2699f1(%rip) # 68ade4 0.00 : 4213f3: e9 08 e6 ff ff jmpq 41fa00 0.00 : 4213f8: 48 63 05 e5 99 26 00 movslq 0x2699e5(%rip),%rax # 68ade4 0.00 : 4213ff: bf 56 26 47 00 mov $0x472656,%edi 0.00 : 421404: 4d 8b 66 f0 mov -0x10(%r14),%r12 0.00 : 421408: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42140d: 8b 1c 85 80 35 69 00 mov 0x693580(,%rax,4),%ebx 0.00 : 421414: e8 b7 22 00 00 callq 4236d0 0.00 : 421419: 31 f6 xor %esi,%esi 0.00 : 42141b: 48 89 c7 mov %rax,%rdi 0.00 : 42141e: e8 cd 1a 00 00 callq 422ef0 0.00 : 421423: 49 8b 7e c0 mov -0x40(%r14),%rdi 0.00 : 421427: 48 89 c6 mov %rax,%rsi 0.00 : 42142a: 89 d9 mov %ebx,%ecx 0.00 : 42142c: 4c 89 e2 mov %r12,%rdx 0.00 : 42142f: e8 5c 19 00 00 callq 422d90 0.00 : 421434: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42143b: 00 0.00 : 42143c: 8b 05 a2 99 26 00 mov 0x2699a2(%rip),%eax # 68ade4 0.00 : 421442: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421447: 85 c0 test %eax,%eax 0.00 : 421449: 0f 8e b1 e5 ff ff jle 41fa00 0.00 : 42144f: 83 e8 01 sub $0x1,%eax 0.00 : 421452: 89 05 8c 99 26 00 mov %eax,0x26998c(%rip) # 68ade4 0.00 : 421458: e9 a3 e5 ff ff jmpq 41fa00 5.26 : 42145d: 49 8b 06 mov (%r14),%rax 0.00 : 421460: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 421467: 00 0.00 : 421468: e9 93 e5 ff ff jmpq 41fa00 0.00 : 42146d: 49 8b 7e d0 mov -0x30(%r14),%rdi 0.00 : 421471: 49 8b 36 mov (%r14),%rsi 0.00 : 421474: ba 7c 00 00 00 mov $0x7c,%edx 0.00 : 421479: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42147e: e8 7d 19 00 00 callq 422e00 0.00 : 421483: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421488: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 42148f: 00 0.00 : 421490: e9 6b e5 ff ff jmpq 41fa00 0.00 : 421495: c7 84 24 60 0e 00 00 movl $0x80,0xe60(%rsp) 0.00 : 42149c: 80 00 00 00 0.00 : 4214a0: e9 5b e5 ff ff jmpq 41fa00 0.00 : 4214a5: bf 5b 26 47 00 mov $0x47265b,%edi 0.00 : 4214aa: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4214af: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 4214b4: e8 f7 8b ff ff callq 41a0b0 0.00 : 4214b9: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4214be: e9 9a e6 ff ff jmpq 41fb5d 0.00 : 4214c3: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4214c8: e8 33 3d 02 00 callq 445200 0.00 : 4214cd: 85 c0 test %eax,%eax 0.00 : 4214cf: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4214d4: 0f 84 de e6 ff ff je 41fbb8 0.00 : 4214da: e8 31 37 02 00 callq 444c10 0.00 : 4214df: e8 fc 3c 02 00 callq 4451e0 0.00 : 4214e4: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4214e9: e9 ca e6 ff ff jmpq 41fbb8 0.00 : 4214ee: 49 89 d8 mov %rbx,%r8 0.00 : 4214f1: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 4214f6: e9 62 e6 ff ff jmpq 41fb5d 0.00 : 4214fb: 31 db xor %ebx,%ebx 0.00 : 4214fd: e9 5b e6 ff ff jmpq 41fb5d 0.00 : 421502: c7 05 60 1f 27 00 01 movl $0x1,0x271f60(%rip) # 69346c 0.00 : 421509: 00 00 00 0.00 : 42150c: 31 db xor %ebx,%ebx 0.00 : 42150e: e9 4a e6 ff ff jmpq 41fb5d 0.00 : 421513: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 421518: 31 db xor %ebx,%ebx 0.00 : 42151a: e8 c1 85 ff ff callq 419ae0 0.00 : 42151f: 31 ff xor %edi,%edi 0.00 : 421521: e8 ea bd 03 00 callq 45d310 0.00 : 421526: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42152b: e9 2d e6 ff ff jmpq 41fb5d 0.00 : 421530: 49 8b 06 mov (%r14),%rax 0.00 : 421533: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 421537: e9 a4 f6 ff ff jmpq 420be0 0.00 : 42153c: 49 8b 06 mov (%r14),%rax 0.00 : 42153f: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 421543: e9 ad ee ff ff jmpq 4203f5 0.00 : 421548: 49 8b 36 mov (%r14),%rsi 0.00 : 42154b: ba 26 00 00 00 mov $0x26,%edx 0.00 : 421550: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 421555: e8 f6 18 00 00 callq 422e50 0.00 : 42155a: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 42155f: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 421566: 00 0.00 : 421567: e9 94 e4 ff ff jmpq 41fa00 0.00 : 42156c: ba 26 00 00 00 mov $0x26,%edx 0.00 : 421571: 31 f6 xor %esi,%esi 0.00 : 421573: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 421578: e8 d3 18 00 00 callq 422e50 0.00 : 42157d: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 421582: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 421589: 00 0.00 : 42158a: e9 71 e4 ff ff jmpq 41fa00 0.00 : 42158f: 49 8b 36 mov (%r14),%rsi 0.00 : 421592: ba 26 00 00 00 mov $0x26,%edx 0.00 : 421597: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 42159c: e8 af 18 00 00 callq 422e50 0.00 : 4215a1: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4215a6: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4215ad: 00 0.00 : 4215ae: e9 4d e4 ff ff jmpq 41fa00 0.00 : 4215b3: ba 26 00 00 00 mov $0x26,%edx 0.00 : 4215b8: 31 f6 xor %esi,%esi 0.00 : 4215ba: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 4215bf: e8 8c 18 00 00 callq 422e50 0.00 : 4215c4: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 4215c9: 48 89 84 24 60 0e 00 mov %rax,0xe60(%rsp) 0.00 : 4215d0: 00 0.00 : 4215d1: e9 cb e9 ff ff jmpq 41ffa1 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ---------------------------------------------- 56.00 ??:0 12.00 ??:0 12.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001e70 : ??:0 100.00 : 1e70: 48 83 ec 18 sub $0x18,%rsp 0.00 : 1ea4: 4c 89 mov %esi,%ebx 0.00 : 1ea6: 64 24 10 48 89 1c 24 mov $0x0,%rdi 0.00 : 1ead: 41 89 d4 48 89 callq 1eb2 0.00 : 1eb2: 6c 24 08 48 lea 0x2(%rbx),%rax 0.00 : 1eb6: 8b 97 e0 00 00 cmp %r12d,0x0(%rbp,%rax,8) 0.00 : 1ebb: 00 48 js 1ef0 0.00 : 1ebd: 85 d2 74 57 0f movzwl 0x4(%rbp,%rax,8),%ebx 0.00 : 1ec2: b6 42 11 84 c0 74 4f mov $0x0,%rdi 0.00 : 1ec9: 0f b6 c0 48 89 callq 1ece 0.00 : 1ece: d5 48 mov %ebx,%eax 0.00 : 1ed0: 01 c5 74 44 89 mov 0x8(%rsp),%rbp 0.00 : 1ed5: f3 48 c7 c7 mov (%rsp),%rbx 0.00 : 1ed9: 00 00 00 00 e8 mov 0x10(%rsp),%r12 0.00 : 1ede: 00 00 00 00 add $0x18,%rsp 0.00 : 1ee2: 48 retq 0.00 : 1ee3: 8d 43 02 44 39 nopl 0x0(%rax,%rax,1) 0.00 : 1ee8: 64 c5 xor %ebx,%ebx 0.00 : 1eea: 00 78 jmp 1ece 0.00 : 1eec: 33 0f b7 5c nopl 0x0(%rax) 0.00 : 1ef0: c5 04 48 c7 c7 movzwl 0x6(%rbp,%rax,8),%ebx 0.00 : 1ef5: 00 00 jmp 1ec2 : 1ef7: 00 00 e8 00 00 00 00 nopw 0x0(%rax,%rax,1) : 1efe: 89 d8 : 1f00: 48 8b 6c 24 08 mov $0x1,%eax : 1f05: 48 retq : 1f06: 8b 1c 24 4c 8b 64 24 nopw %cs:0x0(%rax,%rax,1) : 1f0d: 10 48 83 : 1f10: c4 18 repz retq : 1f12: c3 0f 1f 44 00 00 31 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 1f19: db eb e2 0f 1f 40 00 : 1f20: 0f b7 5c c5 06 mov $0x1,%eax : 1f25: eb retq Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 20.83 ??:0 20.83 ??:0 12.50 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000069d0 : ??:0 91.67 : 69d0: 55 push %rbp 0.00 : 6a01: 53 48 89 mov %eax,0x24(%rbx) 8.33 : 6a04: d3 48 83 ec add $0x28,%rsp 0.00 : 6a08: 28 8b 47 68 2b mov $0x1,%eax 0.00 : 6a0d: 47 pop %rbx 0.00 : 6a0e: 6c pop %rbp 0.00 : 6a0f: 29 retq 0.00 : 6a10: f0 83 f8 07 7e mov $0x8,%ecx 0.00 : 6a15: 2a 48 63 mov %rsp,%rdx 0.00 : 6a18: d6 48 03 97 e0 callq 6a1d 0.00 : 6a1d: 00 00 test %eax,%eax 0.00 : 6a1f: 00 48 js 6a30 0.00 : 6a21: 85 d2 74 mov %rsp,%rdx 0.00 : 6a24: 3b 0f jmp 69f0 0.00 : 6a26: b7 02 66 89 43 10 0f nopw %cs:0x0(%rax,%rax,1) 0.00 : 6a2d: b7 42 02 0.00 : 6a30: 66 89 43 24 add $0x28,%rsp 0.00 : 6a34: 48 83 xor %eax,%eax 0.00 : 6a36: c4 pop %rbx 0.00 : 6a37: 28 pop %rbp 0.00 : 6a38: b8 retq : 6a39: 01 00 00 00 5b 5d c3 nopl 0x0(%rax) : 6a40: b9 08 push %r15 : 6a42: 00 00 00 mov %rdi,%r10 : 6a45: 48 89 push %r14 : 6a47: e2 e8 push %r13 : 6a49: 00 00 push %r12 : 6a4b: 00 push %rbp : 6a4c: 00 85 c0 mov %rsi,%rbp : 6a4f: 78 push %rbx : 6a50: 0f 48 89 e2 eb ca 66 sub $0xa8,%rsp : 6a57: 2e 0f 1f 84 mov %edx,0x40(%rsp) : 6a5b: 00 00 00 00 00 48 83 movzbl 0xe8(%rsp),%eax : 6a62: c4 : 6a63: 28 31 c0 5b 5d cmpl $0x1,0x40(%rsp) Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 18.52 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2959 11.11 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2957 11.11 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2957 7.41 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2952 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2834 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2851 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2857 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2911 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2908 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2913 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2918 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2920 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2927 3.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2856 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000556120 : : * Oid of the tuple is returned with 'tupleOid' separately. : */ : bool : NextCopyFrom(CopyState cstate, ExprContext *econtext, : Datum *values, bool *nulls, Oid *tupleOid) : { 0.00 : 556120: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2834 3.70 : 556121: 48 89 e5 mov %rsp,%rbp 0.00 : 556124: 41 57 push %r15 0.00 : 556126: 41 56 push %r14 0.00 : 556128: 49 89 fe mov %rdi,%r14 0.00 : 55612b: 41 55 push %r13 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 55612d: 45 31 ed xor %r13d,%r13d 0.00 : 556130: 41 54 push %r12 0.00 : 556132: 45 31 e4 xor %r12d,%r12d 0.00 : 556135: 53 push %rbx 0.00 : 556136: 48 83 ec 78 sub $0x78,%rsp 0.00 : 55613a: 48 89 75 88 mov %rsi,-0x78(%rbp) 0.00 : 55613e: 48 89 55 80 mov %rdx,-0x80(%rbp) 0.00 : 556142: 48 89 8d 78 ff ff ff mov %rcx,-0x88(%rbp) 0.00 : 556149: 4c 89 85 70 ff ff ff mov %r8,-0x90(%rbp) : TupleDesc tupDesc; : Form_pg_attribute *attr; : AttrNumber num_phys_attrs, : attr_count, : num_defaults = cstate->num_defaults; 0.00 : 556150: 0f b7 87 08 01 00 00 movzwl 0x108(%rdi),%eax 0.00 : 556157: 66 89 45 9e mov %ax,-0x62(%rbp) : FmgrInfo *in_functions = cstate->in_functions; 0.00 : 55615b: 48 8b 97 48 01 00 00 mov 0x148(%rdi),%rdx 0.00 : 556162: 48 89 55 a0 mov %rdx,-0x60(%rbp) : Oid *typioparams = cstate->typioparams; 0.00 : 556166: 48 8b b7 50 01 00 00 mov 0x150(%rdi),%rsi 0.00 : 55616d: 48 89 75 a8 mov %rsi,-0x58(%rbp) : int i; : int nfields; : bool isnull; : bool file_has_oids = cstate->file_has_oids; 0.00 : 556171: 0f b6 87 0a 01 00 00 movzbl 0x10a(%rdi),%eax 0.00 : 556178: 88 45 b7 mov %al,-0x49(%rbp) : int *defmap = cstate->defmap; 0.00 : 55617b: 48 8b 97 58 01 00 00 mov 0x158(%rdi),%rdx 0.00 : 556182: 48 89 55 b8 mov %rdx,-0x48(%rbp) : ExprState **defexprs = cstate->defexprs; 0.00 : 556186: 48 8b b7 60 01 00 00 mov 0x160(%rdi),%rsi 0.00 : 55618d: 48 89 75 c0 mov %rsi,-0x40(%rbp) : : tupDesc = RelationGetDescr(cstate->rel); 0.00 : 556191: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 556195: 48 8b 40 38 mov 0x38(%rax),%rax : attr = tupDesc->attrs; 0.00 : 556199: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 55619d: 48 89 55 90 mov %rdx,-0x70(%rbp) : num_phys_attrs = tupDesc->natts; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2851 3.70 : 5561a1: 8b 10 mov (%rax),%edx : attr_count = list_length(cstate->attnumlist); 0.00 : 5561a3: 48 8b 47 38 mov 0x38(%rdi),%rax 0.00 : 5561a7: 48 85 c0 test %rax,%rax 0.00 : 5561aa: 74 09 je 5561b5 0.00 : 5561ac: 44 0f b7 68 04 movzwl 0x4(%rax),%r13d 0.00 : 5561b1: 45 0f bf e5 movswl %r13w,%r12d : nfields = file_has_oids ? (attr_count + 1) : attr_count; 0.00 : 5561b5: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5561b9: 41 8d 44 24 01 lea 0x1(%r12),%eax 0.00 : 5561be: 45 89 e7 mov %r12d,%r15d : : /* Initialize all values for row to NULL */ : MemSet(values, 0, num_phys_attrs * sizeof(Datum)); 0.00 : 5561c1: 48 0f bf da movswq %dx,%rbx 0.00 : 5561c5: 48 8d 14 dd 00 00 00 lea 0x0(,%rbx,8),%rdx 0.00 : 5561cc: 00 : : tupDesc = RelationGetDescr(cstate->rel); : attr = tupDesc->attrs; : num_phys_attrs = tupDesc->natts; : attr_count = list_length(cstate->attnumlist); : nfields = file_has_oids ? (attr_count + 1) : attr_count; 0.00 : 5561cd: 44 0f 45 f8 cmovne %eax,%r15d : : /* Initialize all values for row to NULL */ : MemSet(values, 0, num_phys_attrs * sizeof(Datum)); 0.00 : 5561d1: f6 45 80 07 testb $0x7,-0x80(%rbp) 0.00 : 5561d5: 75 0d jne 5561e4 0.00 : 5561d7: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 5561de: 0f 86 0c 03 00 00 jbe 5564f0 0.00 : 5561e4: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 5561e8: 31 f6 xor %esi,%esi 0.00 : 5561ea: e8 31 32 f1 ff callq 469420 : MemSet(nulls, true, num_phys_attrs * sizeof(bool)); 0.00 : 5561ef: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2857 3.70 : 5561f6: 48 89 da mov %rbx,%rdx 0.00 : 5561f9: be 01 00 00 00 mov $0x1,%esi 0.00 : 5561fe: e8 1d 32 f1 ff callq 469420 : : if (!cstate->binary) 0.00 : 556203: 41 80 7e 49 00 cmpb $0x0,0x49(%r14) 0.00 : 556208: 0f 85 8a 01 00 00 jne 556398 : int fldct; : int fieldno; : char *string; : : /* read raw fields in the next line */ : if (!NextCopyFromRawFields(cstate, &field_strings, &fldct)) 0.00 : 55620e: 48 8d 55 d0 lea -0x30(%rbp),%rdx 0.00 : 556212: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 556216: 4c 89 f7 mov %r14,%rdi 0.00 : 556219: e8 d2 f6 ff ff callq 5558f0 0.00 : 55621e: 84 c0 test %al,%al 0.00 : 556220: 0f 84 98 01 00 00 je 5563be : return false; : : /* check for overflowing fields */ : if (nfields > 0 && fldct > nfields) 0.00 : 556226: 45 85 ff test %r15d,%r15d 0.00 : 556229: 7e 0b jle 556236 0.00 : 55622b: 44 3b 7d d0 cmp -0x30(%rbp),%r15d 0.00 : 55622f: 90 nop 0.00 : 556230: 0f 8c 5d 04 00 00 jl 556693 : errmsg("extra data after last expected column"))); : : fieldno = 0; : : /* Read the OID field if present */ : if (file_has_oids) 0.00 : 556236: 45 31 ff xor %r15d,%r15d 0.00 : 556239: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 55623d: 0f 1f 00 nopl (%rax) 0.00 : 556240: 0f 85 d2 02 00 00 jne 556518 : cstate->cur_attval = NULL; : } : } : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) 0.00 : 556246: 49 8b 46 38 mov 0x38(%r14),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 55624a: 48 85 c0 test %rax,%rax 0.00 : 55624d: 0f 84 2e 02 00 00 je 556481 0.00 : 556253: 4c 8b 40 08 mov 0x8(%rax),%r8 0.00 : 556257: 4d 85 c0 test %r8,%r8 0.00 : 55625a: 0f 84 21 02 00 00 je 556481 : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : if (fieldno >= fldct) 0.00 : 556260: 44 3b 7d d0 cmp -0x30(%rbp),%r15d : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; 0.00 : 556264: 41 8b 00 mov (%r8),%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2911 3.70 : 556267: 44 8d 60 ff lea -0x1(%rax),%r12d : : if (fieldno >= fldct) 0.00 : 55626b: 0f 8c ab 00 00 00 jl 55631c 0.00 : 556271: e9 c2 04 00 00 jmpq 556738 0.00 : 556276: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55627d: 00 00 00 : */ : string = NULL; : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); 0.00 : 556280: 48 8b 45 90 mov -0x70(%rbp),%rax : cstate->cur_attval = string; : values[m] = InputFunctionCall(&in_functions[m], 0.00 : 556284: 48 8d 3c 5b lea (%rbx,%rbx,2),%rdi 0.00 : 556288: 48 c1 e7 04 shl $0x4,%rdi : */ : string = NULL; : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 3.70 : 55628c: 48 8d 14 d8 lea (%rax,%rbx,8),%rdx 0.00 : 556290: 48 8b 02 mov (%rdx),%rax : cstate->cur_attval = string; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2952 7.41 : 556293: 4d 89 ae e8 00 00 00 mov %r13,0xe8(%r14) : */ : string = NULL; : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); 0.00 : 55629a: 48 83 c0 04 add $0x4,%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 3.70 : 55629e: 49 89 86 e0 00 00 00 mov %rax,0xe0(%r14) : cstate->cur_attval = string; : values[m] = InputFunctionCall(&in_functions[m], /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 3.70 : 5562a5: 48 8b 02 mov (%rdx),%rax 0.00 : 5562a8: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 5562ac: 48 03 7d a0 add -0x60(%rbp),%rdi 0.00 : 5562b0: 8b 48 58 mov 0x58(%rax),%ecx 3.70 : 5562b3: 8b 14 9e mov (%rsi,%rbx,4),%edx 0.00 : 5562b6: 4c 89 85 68 ff ff ff mov %r8,-0x98(%rbp) 0.00 : 5562bd: 4c 89 ee mov %r13,%rsi 0.00 : 5562c0: e8 cb 91 22 00 callq 77f490 0.00 : 5562c5: 48 8b 55 80 mov -0x80(%rbp),%rdx : string, : typioparams[m], : attr[m]->atttypmod); : if (string != NULL) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2957 11.11 : 5562c9: 4d 85 ed test %r13,%r13 : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); : cstate->cur_attval = string; : values[m] = InputFunctionCall(&in_functions[m], 0.00 : 5562cc: 48 89 04 da mov %rax,(%rdx,%rbx,8) : string, : typioparams[m], : attr[m]->atttypmod); : if (string != NULL) 11.11 : 5562d0: 4c 8b 85 68 ff ff ff mov -0x98(%rbp),%r8 0.00 : 5562d7: 74 0b je 5562e4 : nulls[m] = false; 0.00 : 5562d9: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 5562e0: c6 04 1e 00 movb $0x0,(%rsi,%rbx,1) : cstate->cur_attname = NULL; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2959 18.52 : 5562e4: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 5562eb: 00 00 00 00 : cstate->cur_attval = NULL; 0.00 : 5562ef: 49 c7 86 e8 00 00 00 movq $0x0,0xe8(%r14) 0.00 : 5562f6: 00 00 00 00 : cstate->cur_attval = NULL; : } : } : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) 0.00 : 5562fa: 4d 8b 40 08 mov 0x8(%r8),%r8 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2908 3.70 : 5562fe: 4d 85 c0 test %r8,%r8 0.00 : 556301: 0f 84 7a 01 00 00 je 556481 : if (fieldno >= fldct) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for column \"%s\"", : NameStr(attr[m]->attname)))); : string = field_strings[fieldno++]; 0.00 : 556307: 41 83 c7 01 add $0x1,%r15d : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : if (fieldno >= fldct) 0.00 : 55630b: 44 39 7d d0 cmp %r15d,-0x30(%rbp) : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; 0.00 : 55630f: 41 8b 00 mov (%r8),%eax 0.00 : 556312: 44 8d 60 ff lea -0x1(%rax),%r12d : : if (fieldno >= fldct) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2913 3.70 : 556316: 0f 8e 1c 04 00 00 jle 556738 : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for column \"%s\"", : NameStr(attr[m]->attname)))); : string = field_strings[fieldno++]; 0.00 : 55631c: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 556320: 49 63 d7 movslq %r15d,%rdx : : if (cstate->convert_select_flags && 0.00 : 556323: 49 63 dc movslq %r12d,%rbx : if (fieldno >= fldct) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for column \"%s\"", : NameStr(attr[m]->attname)))); : string = field_strings[fieldno++]; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2918 3.70 : 556326: 4c 8b 2c d0 mov (%rax,%rdx,8),%r13 : : if (cstate->convert_select_flags && /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2920 3.70 : 55632a: 49 8b 86 c8 00 00 00 mov 0xc8(%r14),%rax 0.00 : 556331: 48 85 c0 test %rax,%rax 0.00 : 556334: 74 09 je 55633f 0.00 : 556336: 49 63 dc movslq %r12d,%rbx 0.00 : 556339: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 0.00 : 55633d: 74 bb je 5562fa : { : /* ignore input field, leaving column as NULL */ : continue; : } : : if (cstate->csv_mode) 0.00 : 55633f: 41 80 7e 4c 00 cmpb $0x0,0x4c(%r14) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2927 3.70 : 556344: 0f 84 36 ff ff ff je 556280 : { : if (string == NULL && 0.00 : 55634a: 4d 85 ed test %r13,%r13 0.00 : 55634d: 0f 1f 00 nopl (%rax) 0.00 : 556350: 0f 84 4a 02 00 00 je 5565a0 : * FORCE_NOT_NULL option is set and column is NULL - : * convert it to the NULL string. : */ : string = cstate->null_print; : } : else if (string != NULL && cstate->force_null_flags[m] 0.00 : 556356: 49 8b 86 b0 00 00 00 mov 0xb0(%r14),%rax 0.00 : 55635d: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 0.00 : 556361: 0f 84 19 ff ff ff je 556280 : && strcmp(string, cstate->null_print) == 0) 0.00 : 556367: 49 8b 76 50 mov 0x50(%r14),%rsi 0.00 : 55636b: 4c 89 ef mov %r13,%rdi 0.00 : 55636e: 4c 89 85 68 ff ff ff mov %r8,-0x98(%rbp) 0.00 : 556375: e8 b6 39 f1 ff callq 469d30 : * FORCE_NOT_NULL option is set and column is NULL - : * convert it to the NULL string. : */ : string = cstate->null_print; : } : else if (string != NULL && cstate->force_null_flags[m] 0.00 : 55637a: be 00 00 00 00 mov $0x0,%esi 0.00 : 55637f: 85 c0 test %eax,%eax 0.00 : 556381: 4c 8b 85 68 ff ff ff mov -0x98(%rbp),%r8 0.00 : 556388: 4c 0f 44 ee cmove %rsi,%r13 0.00 : 55638c: e9 ef fe ff ff jmpq 556280 0.00 : 556391: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* binary */ : int16 fld_count; : ListCell *cur; : : cstate->cur_lineno++; 0.00 : 556398: 41 83 86 d8 00 00 00 addl $0x1,0xd8(%r14) 0.00 : 55639f: 01 : static bool : CopyGetInt16(CopyState cstate, int16 *val) : { : uint16 buf; : : if (CopyGetData(cstate, &buf, sizeof(buf), sizeof(buf)) != sizeof(buf)) 0.00 : 5563a0: 4c 8d 7d d0 lea -0x30(%rbp),%r15 0.00 : 5563a4: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 5563a9: ba 02 00 00 00 mov $0x2,%edx 0.00 : 5563ae: 4c 89 f7 mov %r14,%rdi 0.00 : 5563b1: 4c 89 fe mov %r15,%rsi 0.00 : 5563b4: e8 37 e7 ff ff callq 554af0 0.00 : 5563b9: 83 f8 02 cmp $0x2,%eax 0.00 : 5563bc: 74 12 je 5563d0 : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.00 : 5563be: 48 83 c4 78 add $0x78,%rsp : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5563c2: 31 c0 xor %eax,%eax : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.00 : 5563c4: 5b pop %rbx 0.00 : 5563c5: 41 5c pop %r12 0.00 : 5563c7: 41 5d pop %r13 0.00 : 5563c9: 41 5e pop %r14 0.00 : 5563cb: 41 5f pop %r15 0.00 : 5563cd: c9 leaveq 0.00 : 5563ce: c3 retq 0.00 : 5563cf: 90 nop : if (CopyGetData(cstate, &buf, sizeof(buf), sizeof(buf)) != sizeof(buf)) : { : *val = 0; /* suppress compiler warning */ : return false; : } : *val = (int16) ntohs(buf); 0.00 : 5563d0: 0f b7 5d d0 movzwl -0x30(%rbp),%ebx 0.00 : 5563d4: 66 c1 cb 08 ror $0x8,%bx : { : /* EOF detected (end of file, or protocol-level EOF) */ : return false; : } : : if (fld_count == -1) 0.00 : 5563d8: 66 83 fb ff cmp $0xffff,%bx 0.00 : 5563dc: 0f 84 d8 01 00 00 je 5565ba : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("received copy data after EOF marker"))); : return false; : } : : if (fld_count != attr_count) 0.00 : 5563e2: 66 44 39 eb cmp %r13w,%bx 0.00 : 5563e6: 0f 85 90 03 00 00 jne 55677c : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("row field count is %d, expected %d", : (int) fld_count, attr_count))); : : if (file_has_oids) 0.00 : 5563ec: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5563f0: 0f 85 1a 02 00 00 jne 556610 : if (cstate->oids && tupleOid != NULL) : *tupleOid = loaded_oid; : } : : i = 0; : foreach(cur, cstate->attnumlist) 0.00 : 5563f6: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 5563fa: 48 85 c0 test %rax,%rax 0.00 : 5563fd: 0f 1f 00 nopl (%rax) 0.00 : 556400: 74 7f je 556481 0.00 : 556402: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 556406: 4d 85 e4 test %r12,%r12 0.00 : 556409: 74 76 je 556481 0.00 : 55640b: 45 31 ed xor %r13d,%r13d 0.00 : 55640e: 66 90 xchg %ax,%ax : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : cstate->cur_attname = NameStr(attr[m]->attname); 0.00 : 556410: 41 8b 1c 24 mov (%r12),%ebx 0.00 : 556414: 48 8b 75 90 mov -0x70(%rbp),%rsi : i++; 0.00 : 556418: 41 83 c5 01 add $0x1,%r13d : values[m] = CopyReadBinaryAttribute(cstate, 0.00 : 55641c: 4c 89 f7 mov %r14,%rdi : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : cstate->cur_attname = NameStr(attr[m]->attname); 0.00 : 55641f: 83 eb 01 sub $0x1,%ebx 0.00 : 556422: 48 63 db movslq %ebx,%rbx 0.00 : 556425: 48 8d 14 de lea (%rsi,%rbx,8),%rdx 0.00 : 556429: 48 8b 02 mov (%rdx),%rax 0.00 : 55642c: 48 83 c0 04 add $0x4,%rax 0.00 : 556430: 49 89 86 e0 00 00 00 mov %rax,0xe0(%r14) : i++; : values[m] = CopyReadBinaryAttribute(cstate, 0.00 : 556437: 48 8b 02 mov (%rdx),%rax 0.00 : 55643a: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 55643e: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 556445: 44 8b 40 58 mov 0x58(%rax),%r8d 0.00 : 556449: 8b 0c 9a mov (%rdx,%rbx,4),%ecx 0.00 : 55644c: 48 8d 14 5b lea (%rbx,%rbx,2),%rdx 0.00 : 556450: 4c 8d 0c 1e lea (%rsi,%rbx,1),%r9 0.00 : 556454: 44 89 ee mov %r13d,%esi 0.00 : 556457: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 55645b: 48 03 55 a0 add -0x60(%rbp),%rdx 0.00 : 55645f: e8 8c e9 ff ff callq 554df0 0.00 : 556464: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 556468: 48 89 04 da mov %rax,(%rdx,%rbx,8) : i, : &in_functions[m], : typioparams[m], : attr[m]->atttypmod, : &nulls[m]); : cstate->cur_attname = NULL; 0.00 : 55646c: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 556473: 00 00 00 00 : if (cstate->oids && tupleOid != NULL) : *tupleOid = loaded_oid; : } : : i = 0; : foreach(cur, cstate->attnumlist) 0.00 : 556477: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 55647c: 4d 85 e4 test %r12,%r12 0.00 : 55647f: 75 8f jne 556410 : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 556481: 44 0f bf 75 9e movswl -0x62(%rbp),%r14d : if (cstate->oids && tupleOid != NULL) : *tupleOid = loaded_oid; : } : : i = 0; : foreach(cur, cstate->attnumlist) 0.00 : 556486: 45 31 ed xor %r13d,%r13d 0.00 : 556489: 45 31 e4 xor %r12d,%r12d : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 55648c: 45 85 f6 test %r14d,%r14d 0.00 : 55648f: 7e 42 jle 5564d3 0.00 : 556491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 556498: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 55649c: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 5564a0: 31 c9 xor %ecx,%ecx : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564a2: 41 83 c5 01 add $0x1,%r13d : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 5564a6: 4a 63 1c 26 movslq (%rsi,%r12,1),%rbx 0.00 : 5564aa: 4a 8b 04 62 mov (%rdx,%r12,2),%rax : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564ae: 49 83 c4 04 add $0x4,%r12 : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 5564b2: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 5564b9: 48 8b 75 88 mov -0x78(%rbp),%rsi 0.00 : 5564bd: 48 89 c7 mov %rax,%rdi 0.00 : 5564c0: 48 01 da add %rbx,%rdx 0.00 : 5564c3: ff 50 10 callq *0x10(%rax) 0.00 : 5564c6: 48 8b 75 80 mov -0x80(%rbp),%rsi : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564ca: 45 39 ee cmp %r13d,%r14d : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 5564cd: 48 89 04 de mov %rax,(%rsi,%rbx,8) : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564d1: 7f c5 jg 556498 : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.00 : 5564d3: 48 83 c4 78 add $0x78,%rsp : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564d7: b8 01 00 00 00 mov $0x1,%eax : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.00 : 5564dc: 5b pop %rbx 0.00 : 5564dd: 41 5c pop %r12 0.00 : 5564df: 41 5d pop %r13 0.00 : 5564e1: 41 5e pop %r14 0.00 : 5564e3: 41 5f pop %r15 0.00 : 5564e5: c9 leaveq 0.00 : 5564e6: c3 retq 0.00 : 5564e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5564ee: 00 00 : num_phys_attrs = tupDesc->natts; : attr_count = list_length(cstate->attnumlist); : nfields = file_has_oids ? (attr_count + 1) : attr_count; : : /* Initialize all values for row to NULL */ : MemSet(values, 0, num_phys_attrs * sizeof(Datum)); 0.00 : 5564f0: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 5564f4: 48 01 c2 add %rax,%rdx 0.00 : 5564f7: 48 39 d0 cmp %rdx,%rax 0.00 : 5564fa: 0f 83 ef fc ff ff jae 5561ef 0.00 : 556500: 48 c7 00 00 00 00 00 movq $0x0,(%rax) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2856 3.70 : 556507: 48 83 c0 08 add $0x8,%rax 0.00 : 55650b: 48 39 c2 cmp %rax,%rdx 0.00 : 55650e: 77 f0 ja 556500 0.00 : 556510: e9 da fc ff ff jmpq 5561ef 0.00 : 556515: 0f 1f 00 nopl (%rax) : fieldno = 0; : : /* Read the OID field if present */ : if (file_has_oids) : { : if (fieldno >= fldct) 0.00 : 556518: 44 8b 45 d0 mov -0x30(%rbp),%r8d 0.00 : 55651c: 45 85 c0 test %r8d,%r8d 0.00 : 55651f: 0f 8e c6 02 00 00 jle 5567eb : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for OID column"))); : string = field_strings[fieldno++]; 0.00 : 556525: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 556529: 48 8b 10 mov (%rax),%rdx : : if (string == NULL) 0.00 : 55652c: 48 85 d2 test %rdx,%rdx 0.00 : 55652f: 0f 84 82 02 00 00 je 5567b7 : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("null OID in COPY data"))); : else if (cstate->oids && tupleOid != NULL) 0.00 : 556535: 41 80 7e 4a 00 cmpb $0x0,0x4a(%r14) 0.00 : 55653a: 74 4f je 55658b 0.00 : 55653c: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 556543: 00 0.00 : 556544: 74 45 je 55658b : { : cstate->cur_attname = "oid"; : cstate->cur_attval = string; : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, 0.00 : 556546: 31 f6 xor %esi,%esi : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("null OID in COPY data"))); : else if (cstate->oids && tupleOid != NULL) : { : cstate->cur_attname = "oid"; 0.00 : 556548: 49 c7 86 e0 00 00 00 movq $0x8e5fe8,0xe0(%r14) 0.00 : 55654f: e8 5f 8e 00 : cstate->cur_attval = string; 0.00 : 556553: 49 89 96 e8 00 00 00 mov %rdx,0xe8(%r14) : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, 0.00 : 55655a: bf b0 e2 70 00 mov $0x70e2b0,%edi 0.00 : 55655f: e8 dc 82 22 00 callq 77e840 0.00 : 556564: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi : CStringGetDatum(string))); : if (*tupleOid == InvalidOid) 0.00 : 55656b: 85 c0 test %eax,%eax : errmsg("null OID in COPY data"))); : else if (cstate->oids && tupleOid != NULL) : { : cstate->cur_attname = "oid"; : cstate->cur_attval = string; : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, 0.00 : 55656d: 89 06 mov %eax,(%rsi) : CStringGetDatum(string))); : if (*tupleOid == InvalidOid) 0.00 : 55656f: 0f 84 50 01 00 00 je 5566c5 : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("invalid OID in COPY data"))); : cstate->cur_attname = NULL; 0.00 : 556575: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 55657c: 00 00 00 00 : cstate->cur_attval = NULL; 0.00 : 556580: 49 c7 86 e8 00 00 00 movq $0x0,0xe8(%r14) 0.00 : 556587: 00 00 00 00 0.00 : 55658b: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 556591: e9 b0 fc ff ff jmpq 556246 0.00 : 556596: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55659d: 00 00 00 : continue; : } : : if (cstate->csv_mode) : { : if (string == NULL && 0.00 : 5565a0: 49 8b 86 a0 00 00 00 mov 0xa0(%r14),%rax 0.00 : 5565a7: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 0.00 : 5565ab: 0f 84 cf fc ff ff je 556280 : { : /* : * FORCE_NOT_NULL option is set and column is NULL - : * convert it to the NULL string. : */ : string = cstate->null_print; 0.00 : 5565b1: 4d 8b 6e 50 mov 0x50(%r14),%r13 : continue; : } : : if (cstate->csv_mode) : { : if (string == NULL && 0.00 : 5565b5: e9 c6 fc ff ff jmpq 556280 : * error if there's data after the EOF marker, for consistency : * with the new-protocol case. : */ : char dummy; : : if (cstate->copy_dest != COPY_OLD_FE && 0.00 : 5565ba: 41 83 3e 01 cmpl $0x1,(%r14) 0.00 : 5565be: 0f 84 fa fd ff ff je 5563be 0.00 : 5565c4: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 5565c9: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5565ce: 4c 89 fe mov %r15,%rsi 0.00 : 5565d1: 4c 89 f7 mov %r14,%rdi 0.00 : 5565d4: e8 17 e5 ff ff callq 554af0 0.00 : 5565d9: 85 c0 test %eax,%eax 0.00 : 5565db: 0f 8e dd fd ff ff jle 5563be : CopyGetData(cstate, &dummy, 1, 1) > 0) : ereport(ERROR, 0.00 : 5565e1: 45 31 c0 xor %r8d,%r8d 0.00 : 5565e4: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5565e9: ba b7 0b 00 00 mov $0xbb7,%edx 0.00 : 5565ee: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5565f3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5565f8: e8 c3 44 22 00 callq 77aac0 0.00 : 5565fd: 84 c0 test %al,%al 0.00 : 5565ff: 0f 85 14 02 00 00 jne 556819 0.00 : 556605: 0f 1f 00 nopl (%rax) : &cstate->oid_in_function, : cstate->oid_typioparam, : -1, : &isnull)); : if (isnull || loaded_oid == InvalidOid) : ereport(ERROR, 0.00 : 556608: e8 c3 2e f1 ff callq 4694d0 0.00 : 55660d: 0f 1f 00 nopl (%rax) : if (file_has_oids) : { : Oid loaded_oid; : : cstate->cur_attname = "oid"; : loaded_oid = 0.00 : 556610: 41 8b 8e 40 01 00 00 mov 0x140(%r14),%ecx 0.00 : 556617: 49 8d 96 10 01 00 00 lea 0x110(%r14),%rdx 0.00 : 55661e: 4c 8d 4d d7 lea -0x29(%rbp),%r9 0.00 : 556622: 31 f6 xor %esi,%esi : : if (file_has_oids) : { : Oid loaded_oid; : : cstate->cur_attname = "oid"; 0.00 : 556624: 49 c7 86 e0 00 00 00 movq $0x8e5fe8,0xe0(%r14) 0.00 : 55662b: e8 5f 8e 00 : loaded_oid = 0.00 : 55662f: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 556635: 4c 89 f7 mov %r14,%rdi 0.00 : 556638: e8 b3 e7 ff ff callq 554df0 : 0, : &cstate->oid_in_function, : cstate->oid_typioparam, : -1, : &isnull)); : if (isnull || loaded_oid == InvalidOid) 0.00 : 55663d: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 556641: 75 08 jne 55664b 0.00 : 556643: 85 c0 test %eax,%eax 0.00 : 556645: 0f 85 b5 00 00 00 jne 556700 : ereport(ERROR, 0.00 : 55664b: 45 31 c0 xor %r8d,%r8d 0.00 : 55664e: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 556653: ba d0 0b 00 00 mov $0xbd0,%edx 0.00 : 556658: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55665d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 556662: e8 59 44 22 00 callq 77aac0 0.00 : 556667: 84 c0 test %al,%al 0.00 : 556669: 74 9d je 556608 0.00 : 55666b: bf cf 89 87 00 mov $0x8789cf,%edi 0.00 : 556670: 31 c0 xor %eax,%eax 0.00 : 556672: e8 29 62 22 00 callq 77c8a0 0.00 : 556677: 89 c3 mov %eax,%ebx 0.00 : 556679: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 55667e: e8 cd 66 22 00 callq 77cd50 0.00 : 556683: 89 de mov %ebx,%esi 0.00 : 556685: 89 c7 mov %eax,%edi 0.00 : 556687: 31 c0 xor %eax,%eax 0.00 : 556689: e8 52 3f 22 00 callq 77a5e0 0.00 : 55668e: e9 75 ff ff ff jmpq 556608 : if (!NextCopyFromRawFields(cstate, &field_strings, &fldct)) : return false; : : /* check for overflowing fields */ : if (nfields > 0 && fldct > nfields) : ereport(ERROR, 0.00 : 556693: 45 31 c0 xor %r8d,%r8d 0.00 : 556696: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 55669b: ba 3b 0b 00 00 mov $0xb3b,%edx 0.00 : 5566a0: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5566a5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5566aa: e8 11 44 22 00 callq 77aac0 0.00 : 5566af: 84 c0 test %al,%al 0.00 : 5566b1: 0f 84 51 ff ff ff je 556608 0.00 : 5566b7: bf d8 8d 87 00 mov $0x878dd8,%edi 0.00 : 5566bc: 31 c0 xor %eax,%eax 0.00 : 5566be: e8 dd 61 22 00 callq 77c8a0 0.00 : 5566c3: eb b2 jmp 556677 : cstate->cur_attname = "oid"; : cstate->cur_attval = string; : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, : CStringGetDatum(string))); : if (*tupleOid == InvalidOid) : ereport(ERROR, 0.00 : 5566c5: 45 31 c0 xor %r8d,%r8d 0.00 : 5566c8: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5566cd: ba 55 0b 00 00 mov $0xb55,%edx 0.00 : 5566d2: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5566d7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5566dc: e8 df 43 22 00 callq 77aac0 0.00 : 5566e1: 84 c0 test %al,%al 0.00 : 5566e3: 0f 84 1f ff ff ff je 556608 0.00 : 5566e9: bf cf 89 87 00 mov $0x8789cf,%edi 0.00 : 5566ee: 31 c0 xor %eax,%eax 0.00 : 5566f0: e8 ab 61 22 00 callq 77c8a0 0.00 : 5566f5: eb 80 jmp 556677 0.00 : 5566f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5566fe: 00 00 : if (isnull || loaded_oid == InvalidOid) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("invalid OID in COPY data"))); : cstate->cur_attname = NULL; : if (cstate->oids && tupleOid != NULL) 0.00 : 556700: 41 80 7e 4a 00 cmpb $0x0,0x4a(%r14) : &isnull)); : if (isnull || loaded_oid == InvalidOid) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("invalid OID in COPY data"))); : cstate->cur_attname = NULL; 0.00 : 556705: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 55670c: 00 00 00 00 : if (cstate->oids && tupleOid != NULL) 0.00 : 556710: 0f 84 e0 fc ff ff je 5563f6 0.00 : 556716: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 55671d: 00 0.00 : 55671e: 0f 84 d2 fc ff ff je 5563f6 : *tupleOid = loaded_oid; 0.00 : 556724: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 55672b: 89 02 mov %eax,(%rdx) 0.00 : 55672d: e9 c4 fc ff ff jmpq 5563f6 0.00 : 556732: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : if (fieldno >= fldct) : ereport(ERROR, 0.00 : 556738: 45 31 c0 xor %r8d,%r8d 0.00 : 55673b: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 556740: ba 65 0b 00 00 mov $0xb65,%edx 0.00 : 556745: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55674a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55674f: e8 6c 43 22 00 callq 77aac0 0.00 : 556754: 84 c0 test %al,%al 0.00 : 556756: 0f 84 ac fe ff ff je 556608 0.00 : 55675c: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 556760: 49 63 c4 movslq %r12d,%rax 0.00 : 556763: bf e8 89 87 00 mov $0x8789e8,%edi 0.00 : 556768: 48 8b 34 c2 mov (%rdx,%rax,8),%rsi 0.00 : 55676c: 31 c0 xor %eax,%eax 0.00 : 55676e: 48 83 c6 04 add $0x4,%rsi 0.00 : 556772: e8 29 61 22 00 callq 77c8a0 0.00 : 556777: e9 fb fe ff ff jmpq 556677 : errmsg("received copy data after EOF marker"))); : return false; : } : : if (fld_count != attr_count) : ereport(ERROR, 0.00 : 55677c: 45 31 c0 xor %r8d,%r8d 0.00 : 55677f: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 556784: ba bf 0b 00 00 mov $0xbbf,%edx 0.00 : 556789: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55678e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 556793: e8 28 43 22 00 callq 77aac0 0.00 : 556798: 84 c0 test %al,%al 0.00 : 55679a: 0f 84 68 fe ff ff je 556608 0.00 : 5567a0: 0f bf f3 movswl %bx,%esi 0.00 : 5567a3: 44 89 e2 mov %r12d,%edx 0.00 : 5567a6: bf 28 8e 87 00 mov $0x878e28,%edi 0.00 : 5567ab: 31 c0 xor %eax,%eax 0.00 : 5567ad: e8 ee 60 22 00 callq 77c8a0 0.00 : 5567b2: e9 c0 fe ff ff jmpq 556677 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for OID column"))); : string = field_strings[fieldno++]; : : if (string == NULL) : ereport(ERROR, 0.00 : 5567b7: 45 31 c0 xor %r8d,%r8d 0.00 : 5567ba: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5567bf: 66 ba 4b 0b mov $0xb4b,%dx 0.00 : 5567c3: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5567c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5567cd: e8 ee 42 22 00 callq 77aac0 0.00 : 5567d2: 84 c0 test %al,%al 0.00 : 5567d4: 0f 84 2e fe ff ff je 556608 0.00 : 5567da: bf b9 89 87 00 mov $0x8789b9,%edi 0.00 : 5567df: 31 c0 xor %eax,%eax 0.00 : 5567e1: e8 ba 60 22 00 callq 77c8a0 0.00 : 5567e6: e9 8c fe ff ff jmpq 556677 : : /* Read the OID field if present */ : if (file_has_oids) : { : if (fieldno >= fldct) : ereport(ERROR, 0.00 : 5567eb: 45 31 c0 xor %r8d,%r8d 0.00 : 5567ee: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5567f3: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5567f8: ba 45 0b 00 00 mov $0xb45,%edx 0.00 : 5567fd: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 556802: e8 b9 42 22 00 callq 77aac0 0.00 : 556807: 84 c0 test %al,%al 0.00 : 556809: bf 9d 89 87 00 mov $0x87899d,%edi 0.00 : 55680e: 0f 84 f4 fd ff ff je 556608 0.00 : 556814: e9 57 fe ff ff jmpq 556670 : */ : char dummy; : : if (cstate->copy_dest != COPY_OLD_FE && : CopyGetData(cstate, &dummy, 1, 1) > 0) : ereport(ERROR, 0.00 : 556819: bf 00 8e 87 00 mov $0x878e00,%edi 0.00 : 55681e: 31 c0 xor %eax,%eax 0.00 : 556820: e8 7b 60 22 00 callq 77c8a0 0.00 : 556825: e9 4d fe ff ff jmpq 556677 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 74.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 9.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 6.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 4.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 4.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1217 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000797f70 : : * Given a currently-allocated chunk, determine the total space : * it occupies (including all memory-allocation overhead). : */ : static Size : AllocSetGetChunkSpace(MemoryContext context, void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 6.98 : 797f70: 48 8b 46 f8 mov -0x8(%rsi),%rax 74.42 : 797f74: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 4.65 : 797f75: 48 89 e5 mov %rsp,%rbp : AllocChunk chunk = AllocPointerGetChunk(pointer); : : return chunk->size + ALLOC_CHUNKHDRSZ; : } 0.00 : 797f78: c9 leaveq : * Given a currently-allocated chunk, determine the total space : * it occupies (including all memory-allocation overhead). : */ : static Size : AllocSetGetChunkSpace(MemoryContext context, void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 13.95 : 797f79: 48 83 c0 10 add $0x10,%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 14.29 ??:0 10.71 ??:0 10.71 ??:0 7.14 ??:0 7.14 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000036b20 <__GI_____strtol_l_internal>: 0.00 : 36b20: 41 57 push %r15 ??:0 3.57 : 36b22: 41 89 d1 mov %edx,%r9d 0.00 : 36b25: 41 56 push %r14 0.00 : 36b27: 41 55 push %r13 0.00 : 36b29: 4d 89 c5 mov %r8,%r13 0.00 : 36b2c: 41 54 push %r12 0.00 : 36b2e: 55 push %rbp 0.00 : 36b2f: 53 push %rbx 0.00 : 36b30: 48 83 ec 38 sub $0x38,%rsp 0.00 : 36b34: 85 c9 test %ecx,%ecx 0.00 : 36b36: 48 89 7c 24 28 mov %rdi,0x28(%rsp) 0.00 : 36b3b: 48 89 74 24 20 mov %rsi,0x20(%rsp) 0.00 : 36b40: 49 8b 50 08 mov 0x8(%r8),%rdx 3.57 : 36b44: 0f 85 4e 03 00 00 jne 36e98 <__GI_____strtol_l_internal+0x378> 0.00 : 36b4a: 31 ed xor %ebp,%ebp 0.00 : 36b4c: 45 31 d2 xor %r10d,%r10d 0.00 : 36b4f: 45 85 c9 test %r9d,%r9d 0.00 : 36b52: 0f 88 d0 01 00 00 js 36d28 <__GI_____strtol_l_internal+0x208> 0.00 : 36b58: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 36b5c: 0f 84 c6 01 00 00 je 36d28 <__GI_____strtol_l_internal+0x208> 0.00 : 36b62: 41 83 f9 24 cmp $0x24,%r9d 0.00 : 36b66: 0f 8f bc 01 00 00 jg 36d28 <__GI_____strtol_l_internal+0x208> 0.00 : 36b6c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 36b71: 4d 8b 65 68 mov 0x68(%r13),%r12 0.00 : 36b75: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 36b7a: 0f b6 08 movzbl (%rax),%ecx 0.00 : 36b7d: 48 0f be c1 movsbq %cl,%rax 0.00 : 36b81: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) 3.57 : 36b87: 74 1a je 36ba3 <__GI_____strtol_l_internal+0x83> 0.00 : 36b89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 36b90: 48 83 c2 01 add $0x1,%rdx 0.00 : 36b94: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 36b97: 48 0f be c1 movsbq %cl,%rax 0.00 : 36b9b: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) 0.00 : 36ba1: 75 ed jne 36b90 <__GI_____strtol_l_internal+0x70> 0.00 : 36ba3: 84 c9 test %cl,%cl 0.00 : 36ba5: 49 89 d7 mov %rdx,%r15 0.00 : 36ba8: 0f 84 2d 03 00 00 je 36edb <__GI_____strtol_l_internal+0x3bb> 0.00 : 36bae: 80 f9 2d cmp $0x2d,%cl 0.00 : 36bb1: 0f 84 bb 02 00 00 je 36e72 <__GI_____strtol_l_internal+0x352> ??:0 10.71 : 36bb7: 80 f9 2b cmp $0x2b,%cl 0.00 : 36bba: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 36bc1: 00 0.00 : 36bc2: 0f 84 a6 01 00 00 je 36d6e <__GI_____strtol_l_internal+0x24e> 0.00 : 36bc8: 45 0f b6 37 movzbl (%r15),%r14d 0.00 : 36bcc: 41 80 fe 30 cmp $0x30,%r14b 0.00 : 36bd0: 45 89 f0 mov %r14d,%r8d 0.00 : 36bd3: 0f 84 5d 02 00 00 je 36e36 <__GI_____strtol_l_internal+0x316> ??:0 3.57 : 36bd9: 45 85 c9 test %r9d,%r9d 0.00 : 36bdc: 0f 84 71 01 00 00 je 36d53 <__GI_____strtol_l_internal+0x233> 3.57 : 36be2: 41 83 f9 0a cmp $0xa,%r9d 0.00 : 36be6: 41 8d 41 fe lea -0x2(%r9),%eax 0.00 : 36bea: 0f 84 63 01 00 00 je 36d53 <__GI_____strtol_l_internal+0x233> 0.00 : 36bf0: 45 31 d2 xor %r10d,%r10d 0.00 : 36bf3: 31 db xor %ebx,%ebx 0.00 : 36bf5: 48 8d 15 24 ca 0f 00 lea 0xfca24(%rip),%rdx # 133620 <__strtol_ul_max_tab> 0.00 : 36bfc: 48 98 cltq 0.00 : 36bfe: 45 84 c0 test %r8b,%r8b 0.00 : 36c01: 44 89 c7 mov %r8d,%edi 0.00 : 36c04: 4c 8b 1c c2 mov (%rdx,%rax,8),%r11 ??:0 7.14 : 36c08: 48 8d 15 31 cb 0f 00 lea 0xfcb31(%rip),%rdx # 133740 <__strtol_ul_rem_tab> 0.00 : 36c0f: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 36c13: 88 54 24 33 mov %dl,0x33(%rsp) 0.00 : 36c17: 0f 84 9c 01 00 00 je 36db9 <__GI_____strtol_l_internal+0x299> 0.00 : 36c1d: 4d 39 fa cmp %r15,%r10 0.00 : 36c20: 0f 84 93 01 00 00 je 36db9 <__GI_____strtol_l_internal+0x299> 0.00 : 36c26: 48 8d 53 ff lea -0x1(%rbx),%rdx 0.00 : 36c2a: 4c 89 fe mov %r15,%rsi 0.00 : 36c2d: 45 31 c0 xor %r8d,%r8d 0.00 : 36c30: 45 31 e4 xor %r12d,%r12d 0.00 : 36c33: 4d 63 f1 movslq %r9d,%r14 0.00 : 36c36: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 36c3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 36c40: 8d 4f d0 lea -0x30(%rdi),%ecx 0.00 : 36c43: 80 f9 09 cmp $0x9,%cl 0.00 : 36c46: 76 51 jbe 36c99 <__GI_____strtol_l_internal+0x179> 0.00 : 36c48: 48 85 db test %rbx,%rbx 0.00 : 36c4b: 74 2f je 36c7c <__GI_____strtol_l_internal+0x15c> 0.00 : 36c4d: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 36c51: 31 d2 xor %edx,%edx 0.00 : 36c53: 3a 06 cmp (%rsi),%al 0.00 : 36c55: 74 13 je 36c6a <__GI_____strtol_l_internal+0x14a> 0.00 : 36c57: eb 23 jmp 36c7c <__GI_____strtol_l_internal+0x15c> 0.00 : 36c59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 36c60: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 36c65: 3a 04 16 cmp (%rsi,%rdx,1),%al 0.00 : 36c68: 75 09 jne 36c73 <__GI_____strtol_l_internal+0x153> 0.00 : 36c6a: 48 83 c2 01 add $0x1,%rdx 0.00 : 36c6e: 48 39 d3 cmp %rdx,%rbx 0.00 : 36c71: 77 ed ja 36c60 <__GI_____strtol_l_internal+0x140> 0.00 : 36c73: 48 39 da cmp %rbx,%rdx 0.00 : 36c76: 0f 84 24 01 00 00 je 36da0 <__GI_____strtol_l_internal+0x280> 0.00 : 36c7c: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 36c80: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 36c84: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 36c89: 0f 84 21 01 00 00 je 36db0 <__GI_____strtol_l_internal+0x290> 0.00 : 36c8f: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36c93: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 36c96: 8d 48 c9 lea -0x37(%rax),%ecx ??:0 3.57 : 36c99: 0f b6 c1 movzbl %cl,%eax 0.00 : 36c9c: 41 39 c1 cmp %eax,%r9d 0.00 : 36c9f: 0f 8e 0b 01 00 00 jle 36db0 <__GI_____strtol_l_internal+0x290> 3.57 : 36ca5: 4d 39 c3 cmp %r8,%r11 0.00 : 36ca8: 0f 82 e2 00 00 00 jb 36d90 <__GI_____strtol_l_internal+0x270> 0.00 : 36cae: 4d 39 d8 cmp %r11,%r8 0.00 : 36cb1: 0f 84 c9 00 00 00 je 36d80 <__GI_____strtol_l_internal+0x260> 0.00 : 36cb7: 4c 89 c2 mov %r8,%rdx 3.57 : 36cba: 0f b6 c1 movzbl %cl,%eax 3.57 : 36cbd: 49 0f af d6 imul %r14,%rdx 3.57 : 36cc1: 4c 8d 04 10 lea (%rax,%rdx,1),%r8 0.00 : 36cc5: 48 83 c6 01 add $0x1,%rsi 0.00 : 36cc9: 0f b6 3e movzbl (%rsi),%edi 0.00 : 36ccc: 40 84 ff test %dil,%dil 0.00 : 36ccf: 0f 84 db 00 00 00 je 36db0 <__GI_____strtol_l_internal+0x290> ??:0 14.29 : 36cd5: 49 39 f2 cmp %rsi,%r10 0.00 : 36cd8: 0f 85 62 ff ff ff jne 36c40 <__GI_____strtol_l_internal+0x120> 7.14 : 36cde: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 36ce4: 74 08 je 36cee <__GI_____strtol_l_internal+0x1ce> 0.00 : 36ce6: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 36ceb: 48 89 30 mov %rsi,(%rax) 10.71 : 36cee: 45 85 e4 test %r12d,%r12d 0.00 : 36cf1: 0f 84 09 01 00 00 je 36e00 <__GI_____strtol_l_internal+0x2e0> 0.00 : 36cf7: 83 7c 24 34 01 cmpl $0x1,0x34(%rsp) 0.00 : 36cfc: 48 8b 05 35 b1 33 00 mov 0x33b135(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 36d03: 64 48 8b 14 25 00 00 mov %fs:0x0,%rdx 0.00 : 36d0a: 00 00 0.00 : 36d0c: c7 04 02 22 00 00 00 movl $0x22,(%rdx,%rax,1) 0.00 : 36d13: 48 19 d2 sbb %rdx,%rdx 0.00 : 36d16: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 36d1d: 00 00 80 0.00 : 36d20: 48 01 c2 add %rax,%rdx 0.00 : 36d23: eb 1c jmp 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36d25: 0f 1f 00 nopl (%rax) 0.00 : 36d28: 48 8b 15 09 b1 33 00 mov 0x33b109(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 36d2f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 36d36: 00 00 0.00 : 36d38: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 36d3f: 31 d2 xor %edx,%edx 0.00 : 36d41: 48 83 c4 38 add $0x38,%rsp 0.00 : 36d45: 48 89 d0 mov %rdx,%rax 0.00 : 36d48: 5b pop %rbx 0.00 : 36d49: 5d pop %rbp 0.00 : 36d4a: 41 5c pop %r12 ??:0 3.57 : 36d4c: 41 5d pop %r13 0.00 : 36d4e: 41 5e pop %r14 0.00 : 36d50: 41 5f pop %r15 0.00 : 36d52: c3 retq 0.00 : 36d53: 4d 85 d2 test %r10,%r10 0.00 : 36d56: 0f 85 89 01 00 00 jne 36ee5 <__GI_____strtol_l_internal+0x3c5> 0.00 : 36d5c: 31 db xor %ebx,%ebx 0.00 : 36d5e: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 36d64: b8 08 00 00 00 mov $0x8,%eax 0.00 : 36d69: e9 87 fe ff ff jmpq 36bf5 <__GI_____strtol_l_internal+0xd5> 0.00 : 36d6e: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 36d72: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 36d79: 00 0.00 : 36d7a: e9 49 fe ff ff jmpq 36bc8 <__GI_____strtol_l_internal+0xa8> 0.00 : 36d7f: 90 nop 0.00 : 36d80: 3a 4c 24 33 cmp 0x33(%rsp),%cl 0.00 : 36d84: 0f 86 2d ff ff ff jbe 36cb7 <__GI_____strtol_l_internal+0x197> 0.00 : 36d8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 36d90: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 36d96: e9 2a ff ff ff jmpq 36cc5 <__GI_____strtol_l_internal+0x1a5> 0.00 : 36d9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 36da0: 48 03 74 24 18 add 0x18(%rsp),%rsi 0.00 : 36da5: e9 1b ff ff ff jmpq 36cc5 <__GI_____strtol_l_internal+0x1a5> 0.00 : 36daa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 3.57 : 36db0: 49 39 f7 cmp %rsi,%r15 0.00 : 36db3: 0f 85 25 ff ff ff jne 36cde <__GI_____strtol_l_internal+0x1be> 0.00 : 36db9: 4c 89 f9 mov %r15,%rcx 0.00 : 36dbc: 31 d2 xor %edx,%edx 0.00 : 36dbe: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 36dc4: 0f 84 77 ff ff ff je 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36dca: 48 89 c8 mov %rcx,%rax 0.00 : 36dcd: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.00 : 36dd2: 48 83 e8 01 sub $0x1,%rax 0.00 : 36dd6: 7e 13 jle 36deb <__GI_____strtol_l_internal+0x2cb> 0.00 : 36dd8: 48 0f be 51 ff movsbq -0x1(%rcx),%rdx 0.00 : 36ddd: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36de1: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 36de5: 0f 84 d3 00 00 00 je 36ebe <__GI_____strtol_l_internal+0x39e> 0.00 : 36deb: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 36df0: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 36df5: 48 89 10 mov %rdx,(%rax) 0.00 : 36df8: 31 d2 xor %edx,%edx 0.00 : 36dfa: e9 42 ff ff ff jmpq 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36dff: 90 nop 0.00 : 36e00: 83 7c 24 34 01 cmpl $0x1,0x34(%rsp) 0.00 : 36e05: 48 ba 00 00 00 00 00 movabs $0x8000000000000000,%rdx 0.00 : 36e0c: 00 00 80 0.00 : 36e0f: 48 19 c0 sbb %rax,%rax 0.00 : 36e12: 48 01 d0 add %rdx,%rax 0.00 : 36e15: 4c 39 c0 cmp %r8,%rax 0.00 : 36e18: 0f 82 d9 fe ff ff jb 36cf7 <__GI_____strtol_l_internal+0x1d7> 0.00 : 36e1e: 8b 54 24 34 mov 0x34(%rsp),%edx 0.00 : 36e22: 4c 89 c0 mov %r8,%rax 0.00 : 36e25: 48 f7 d8 neg %rax 0.00 : 36e28: 85 d2 test %edx,%edx 3.57 : 36e2a: 4c 89 c2 mov %r8,%rdx 0.00 : 36e2d: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 36e31: e9 0b ff ff ff jmpq 36d41 <__GI_____strtol_l_internal+0x221> 3.57 : 36e36: 45 85 c9 test %r9d,%r9d 0.00 : 36e39: 0f 94 c1 sete %cl 0.00 : 36e3c: 74 0a je 36e48 <__GI_____strtol_l_internal+0x328> 0.00 : 36e3e: 41 83 f9 10 cmp $0x10,%r9d 0.00 : 36e42: 0f 85 9a fd ff ff jne 36be2 <__GI_____strtol_l_internal+0xc2> 0.00 : 36e48: 49 0f be 57 01 movsbq 0x1(%r15),%rdx 0.00 : 36e4d: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36e51: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 36e55: 74 2c je 36e83 <__GI_____strtol_l_internal+0x363> 0.00 : 36e57: 84 c9 test %cl,%cl 0.00 : 36e59: 0f 84 83 fd ff ff je 36be2 <__GI_____strtol_l_internal+0xc2> 0.00 : 36e5f: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 36e65: b8 06 00 00 00 mov $0x6,%eax 0.00 : 36e6a: 45 89 f0 mov %r14d,%r8d 0.00 : 36e6d: e9 7e fd ff ff jmpq 36bf0 <__GI_____strtol_l_internal+0xd0> 0.00 : 36e72: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 36e76: c7 44 24 34 01 00 00 movl $0x1,0x34(%rsp) 0.00 : 36e7d: 00 0.00 : 36e7e: e9 45 fd ff ff jmpq 36bc8 <__GI_____strtol_l_internal+0xa8> 0.00 : 36e83: 49 83 c7 02 add $0x2,%r15 0.00 : 36e87: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : 36e8d: b8 0e 00 00 00 mov $0xe,%eax 0.00 : 36e92: 45 0f b6 37 movzbl (%r15),%r14d 0.00 : 36e96: eb d2 jmp 36e6a <__GI_____strtol_l_internal+0x34a> 0.00 : 36e98: 4c 8b 52 50 mov 0x50(%rdx),%r10 0.00 : 36e9c: 41 0f b6 02 movzbl (%r10),%eax 0.00 : 36ea0: 83 e8 01 sub $0x1,%eax 0.00 : 36ea3: 3c 7d cmp $0x7d,%al 0.00 : 36ea5: 0f 87 9f fc ff ff ja 36b4a <__GI_____strtol_l_internal+0x2a> 0.00 : 36eab: 48 8b 6a 48 mov 0x48(%rdx),%rbp 0.00 : 36eaf: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 36eb3: 0f 85 96 fc ff ff jne 36b4f <__GI_____strtol_l_internal+0x2f> 0.00 : 36eb9: e9 8c fc ff ff jmpq 36b4a <__GI_____strtol_l_internal+0x2a> 0.00 : 36ebe: 80 79 fe 30 cmpb $0x30,-0x2(%rcx) 0.00 : 36ec2: 0f 85 23 ff ff ff jne 36deb <__GI_____strtol_l_internal+0x2cb> 0.00 : 36ec8: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 36ecd: 48 8d 41 ff lea -0x1(%rcx),%rax 0.00 : 36ed1: 48 89 02 mov %rax,(%rdx) 0.00 : 36ed4: 31 d2 xor %edx,%edx 0.00 : 36ed6: e9 66 fe ff ff jmpq 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36edb: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 36ee0: e9 d7 fe ff ff jmpq 36dbc <__GI_____strtol_l_internal+0x29c> 0.00 : 36ee5: 48 89 ef mov %rbp,%rdi 0.00 : 36ee8: 44 88 44 24 10 mov %r8b,0x10(%rsp) 0.00 : 36eed: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 36ef2: e8 b9 9c 04 00 callq 80bb0 <__GI_strlen> 0.00 : 36ef7: 48 85 c0 test %rax,%rax 0.00 : 36efa: 48 89 c7 mov %rax,%rdi 0.00 : 36efd: 48 89 c3 mov %rax,%rbx 0.00 : 36f00: 44 0f b6 44 24 10 movzbl 0x10(%rsp),%r8d 0.00 : 36f06: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 36f0b: 74 27 je 36f34 <__GI_____strtol_l_internal+0x414> 0.00 : 36f0d: 44 0f b6 4d 00 movzbl 0x0(%rbp),%r9d 0.00 : 36f12: 31 d2 xor %edx,%edx 0.00 : 36f14: 45 38 ce cmp %r9b,%r14b 0.00 : 36f17: 74 12 je 36f2b <__GI_____strtol_l_internal+0x40b> 0.00 : 36f19: eb 2c jmp 36f47 <__GI_____strtol_l_internal+0x427> 0.00 : 36f1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 36f20: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 36f25: 41 3a 04 17 cmp (%r15,%rdx,1),%al 0.00 : 36f29: 75 1c jne 36f47 <__GI_____strtol_l_internal+0x427> 0.00 : 36f2b: 48 83 c2 01 add $0x1,%rdx 0.00 : 36f2f: 48 39 d7 cmp %rdx,%rdi 0.00 : 36f32: 77 ec ja 36f20 <__GI_____strtol_l_internal+0x400> 0.00 : 36f34: 4d 89 fa mov %r15,%r10 0.00 : 36f37: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 36f3d: b8 08 00 00 00 mov $0x8,%eax 0.00 : 36f42: e9 ae fc ff ff jmpq 36bf5 <__GI_____strtol_l_internal+0xd5> 0.00 : 36f47: 45 84 f6 test %r14b,%r14b 0.00 : 36f4a: 44 89 f1 mov %r14d,%ecx 0.00 : 36f4d: 4c 89 fe mov %r15,%rsi 0.00 : 36f50: 74 34 je 36f86 <__GI_____strtol_l_internal+0x466> 0.00 : 36f52: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 36f55: 3c 09 cmp $0x9,%al 0.00 : 36f57: 76 22 jbe 36f7b <__GI_____strtol_l_internal+0x45b> 0.00 : 36f59: 31 d2 xor %edx,%edx 0.00 : 36f5b: 44 3a 0e cmp (%rsi),%r9b 0.00 : 36f5e: 74 12 je 36f72 <__GI_____strtol_l_internal+0x452> 0.00 : 36f60: eb 49 jmp 36fab <__GI_____strtol_l_internal+0x48b> 0.00 : 36f62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 36f68: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 36f6d: 3a 04 16 cmp (%rsi,%rdx,1),%al 0.00 : 36f70: 75 39 jne 36fab <__GI_____strtol_l_internal+0x48b> 0.00 : 36f72: 48 83 c2 01 add $0x1,%rdx 0.00 : 36f76: 48 39 d7 cmp %rdx,%rdi 0.00 : 36f79: 77 ed ja 36f68 <__GI_____strtol_l_internal+0x448> 0.00 : 36f7b: 48 83 c6 01 add $0x1,%rsi 0.00 : 36f7f: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 36f82: 84 c9 test %cl,%cl 0.00 : 36f84: 75 cc jne 36f52 <__GI_____strtol_l_internal+0x432> 0.00 : 36f86: 4c 89 d1 mov %r10,%rcx 0.00 : 36f89: 48 89 ea mov %rbp,%rdx 0.00 : 36f8c: 4c 89 ff mov %r15,%rdi 0.00 : 36f8f: e8 3c c8 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 36f94: 45 0f b6 07 movzbl (%r15),%r8d 0.00 : 36f98: 49 89 c2 mov %rax,%r10 0.00 : 36f9b: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 36fa1: b8 08 00 00 00 mov $0x8,%eax 0.00 : 36fa6: e9 4a fc ff ff jmpq 36bf5 <__GI_____strtol_l_internal+0xd5> 0.00 : 36fab: 0f b6 d1 movzbl %cl,%edx 0.00 : 36fae: 41 f6 44 54 01 04 testb $0x4,0x1(%r12,%rdx,2) 0.00 : 36fb4: 74 d0 je 36f86 <__GI_____strtol_l_internal+0x466> 0.00 : 36fb6: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36fba: 83 3c 90 40 cmpl $0x40,(%rax,%rdx,4) 0.00 : 36fbe: 7e bb jle 36f7b <__GI_____strtol_l_internal+0x45b> 0.00 : 36fc0: eb c4 jmp 36f86 <__GI_____strtol_l_internal+0x466> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 16.67 ??:0 8.33 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000003a210 <__GI_____strtod_l_internal>: 0.00 : 3a210: 41 57 push %r15 0.00 : 3a212: 41 56 push %r14 0.00 : 3a214: 41 55 push %r13 0.00 : 3a216: 41 54 push %r12 0.00 : 3a218: 55 push %rbp 0.00 : 3a219: 53 push %rbx 0.00 : 3a21a: 48 81 ec 48 02 00 00 sub $0x248,%rsp 0.00 : 3a221: 85 d2 test %edx,%edx 0.00 : 3a223: 48 89 7c 24 58 mov %rdi,0x58(%rsp) 0.00 : 3a228: 48 89 74 24 50 mov %rsi,0x50(%rsp) 0.00 : 3a22d: 48 89 4c 24 48 mov %rcx,0x48(%rsp) 0.00 : 3a232: 48 8b 49 08 mov 0x8(%rcx),%rcx ??:0 4.17 : 3a236: 0f 85 ba 1a 00 00 jne 3bcf6 <__GI_____strtod_l_internal+0x1ae6> 0.00 : 3a23c: 48 c7 84 24 88 00 00 movq $0x0,0x88(%rsp) 0.00 : 3a243: 00 00 00 00 00 0.00 : 3a248: 48 c7 84 24 90 00 00 movq $0x0,0x90(%rsp) 0.00 : 3a24f: 00 00 00 00 00 0.00 : 3a254: 4c 8b 71 40 mov 0x40(%rcx),%r14 0.00 : 3a258: 4c 89 f7 mov %r14,%rdi 0.00 : 3a25b: e8 50 69 04 00 callq 80bb0 <__GI_strlen> 0.00 : 3a260: 48 85 c0 test %rax,%rax 0.00 : 3a263: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 3a268: 0f 84 69 1a 00 00 je 3bcd7 <__GI_____strtod_l_internal+0x1ac7> 0.00 : 3a26e: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3a273: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 3a278: 48 c7 84 24 30 02 00 movq $0x0,0x230(%rsp) 0.00 : 3a27f: 00 00 00 00 00 0.00 : 3a284: 48 8b 56 68 mov 0x68(%rsi),%rdx 0.00 : 3a288: 48 83 ed 01 sub $0x1,%rbp 0.00 : 3a28c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 3a290: 48 83 c5 01 add $0x1,%rbp 0.00 : 3a294: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.00 : 3a298: 48 0f be c3 movsbq %bl,%rax 0.00 : 3a29c: f6 44 42 01 20 testb $0x20,0x1(%rdx,%rax,2) 0.00 : 3a2a1: 75 ed jne 3a290 <__GI_____strtod_l_internal+0x80> 0.00 : 3a2a3: 80 fb 2d cmp $0x2d,%bl 0.00 : 3a2a6: 0f 84 94 05 00 00 je 3a840 <__GI_____strtod_l_internal+0x630> 0.00 : 3a2ac: 80 fb 2b cmp $0x2b,%bl 0.00 : 3a2af: c7 44 24 70 00 00 00 movl $0x0,0x70(%rsp) 0.00 : 3a2b6: 00 0.00 : 3a2b7: 0f 84 8b 01 00 00 je 3a448 <__GI_____strtod_l_internal+0x238> 0.00 : 3a2bd: 41 0f b6 36 movzbl (%r14),%esi 0.00 : 3a2c1: 31 d2 xor %edx,%edx 0.00 : 3a2c3: 40 84 f6 test %sil,%sil 0.00 : 3a2c6: 74 26 je 3a2ee <__GI_____strtod_l_internal+0xde> 0.00 : 3a2c8: 40 3a 75 00 cmp 0x0(%rbp),%sil 0.00 : 3a2cc: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3a2d1: 74 12 je 3a2e5 <__GI_____strtod_l_internal+0xd5> 0.00 : 3a2d3: eb 2b jmp 3a300 <__GI_____strtod_l_internal+0xf0> 0.00 : 3a2d5: 0f 1f 00 nopl (%rax) 0.00 : 3a2d8: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 3a2dd: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a2e1: 38 c1 cmp %al,%cl 0.00 : 3a2e3: 75 1b jne 3a300 <__GI_____strtod_l_internal+0xf0> 0.00 : 3a2e5: 41 0f b6 0c 16 movzbl (%r14,%rdx,1),%ecx 0.00 : 3a2ea: 84 c9 test %cl,%cl 0.00 : 3a2ec: 75 ea jne 3a2d8 <__GI_____strtod_l_internal+0xc8> 0.00 : 3a2ee: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 3a2f3: 3c 2f cmp $0x2f,%al 0.00 : 3a2f5: 7e 09 jle 3a300 <__GI_____strtod_l_internal+0xf0> 0.00 : 3a2f7: 3c 39 cmp $0x39,%al 0.00 : 3a2f9: 7e 5d jle 3a358 <__GI_____strtod_l_internal+0x148> 0.00 : 3a2fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a300: 8d 43 d0 lea -0x30(%rbx),%eax 0.00 : 3a303: 3c 09 cmp $0x9,%al 0.00 : 3a305: 76 51 jbe 3a358 <__GI_____strtod_l_internal+0x148> 0.00 : 3a307: 48 8b 05 42 68 33 00 mov 0x336842(%rip),%rax # 370b50 <_nl_C_locobj+0x70> 0.00 : 3a30e: 48 0f be d3 movsbq %bl,%rdx 0.00 : 3a312: 0f b6 04 90 movzbl (%rax,%rdx,4),%eax 0.00 : 3a316: 3c 69 cmp $0x69,%al 0.00 : 3a318: 0f 84 7d 07 00 00 je 3aa9b <__GI_____strtod_l_internal+0x88b> 0.00 : 3a31e: 3c 6e cmp $0x6e,%al 0.00 : 3a320: 0f 84 eb 07 00 00 je 3ab11 <__GI_____strtod_l_internal+0x901> 0.00 : 3a326: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3a32c: 0f 84 26 05 00 00 je 3a858 <__GI_____strtod_l_internal+0x648> 0.00 : 3a332: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 3a337: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : 3a33c: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3a340: 48 89 10 mov %rdx,(%rax) 0.00 : 3a343: 48 81 c4 48 02 00 00 add $0x248,%rsp 0.00 : 3a34a: 5b pop %rbx 0.00 : 3a34b: 5d pop %rbp 4.17 : 3a34c: 41 5c pop %r12 0.00 : 3a34e: 41 5d pop %r13 0.00 : 3a350: 41 5e pop %r14 0.00 : 3a352: 41 5f pop %r15 0.00 : 3a354: c3 retq 0.00 : 3a355: 0f 1f 00 nopl (%rax) 0.00 : 3a358: 80 fb 30 cmp $0x30,%bl 0.00 : 3a35b: 0f 84 07 05 00 00 je 3a868 <__GI_____strtod_l_internal+0x658> 0.00 : 3a361: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 3a366: 4c 8b 41 70 mov 0x70(%rcx),%r8 0.00 : 3a36a: c7 44 24 74 0a 00 00 movl $0xa,0x74(%rsp) 0.00 : 3a371: 00 0.00 : 3a372: 48 83 bc 24 88 00 00 cmpq $0x0,0x88(%rsp) 0.00 : 3a379: 00 00 0.00 : 3a37b: 0f 85 72 1b 00 00 jne 3bef3 <__GI_____strtod_l_internal+0x1ce3> 0.00 : 3a381: 80 fb 30 cmp $0x30,%bl 0.00 : 3a384: 49 89 ed mov %rbp,%r13 0.00 : 3a387: 75 15 jne 3a39e <__GI_____strtod_l_internal+0x18e> 0.00 : 3a389: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a390: 49 83 c5 01 add $0x1,%r13 0.00 : 3a394: 41 0f b6 5d 00 movzbl 0x0(%r13),%ebx 0.00 : 3a399: 80 fb 30 cmp $0x30,%bl 0.00 : 3a39c: 74 f2 je 3a390 <__GI_____strtod_l_internal+0x180> 0.00 : 3a39e: 48 0f be c3 movsbq %bl,%rax 0.00 : 3a3a2: 41 8b 14 80 mov (%r8,%rax,4),%edx 0.00 : 3a3a6: 8d 43 d0 lea -0x30(%rbx),%eax 0.00 : 3a3a9: 3c 09 cmp $0x9,%al 0.00 : 3a3ab: 0f 86 df 00 00 00 jbe 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3a3b1: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a3b6: 89 d7 mov %edx,%edi 0.00 : 3a3b8: 41 0f 95 c1 setne %r9b 0.00 : 3a3bc: 0f 84 ee 04 00 00 je 3a8b0 <__GI_____strtod_l_internal+0x6a0> 0.00 : 3a3c2: 40 84 f6 test %sil,%sil 0.00 : 3a3c5: 0f 84 b1 00 00 00 je 3a47c <__GI_____strtod_l_internal+0x26c> 0.00 : 3a3cb: 31 d2 xor %edx,%edx 0.00 : 3a3cd: 41 3a 75 00 cmp 0x0(%r13),%sil 0.00 : 3a3d1: 0f 84 9b 00 00 00 je 3a472 <__GI_____strtod_l_internal+0x262> 0.00 : 3a3d7: 45 84 c9 test %r9b,%r9b 0.00 : 3a3da: 0f 84 76 14 00 00 je 3b856 <__GI_____strtod_l_internal+0x1646> 0.00 : 3a3e0: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a3e5: 41 0f 94 c4 sete %r12b 0.00 : 3a3e9: 0f 85 11 09 00 00 jne 3ad00 <__GI_____strtod_l_internal+0xaf0> 0.00 : 3a3ef: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 3a3f6: 00 0.00 : 3a3f7: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3a3fe: 00 0.00 : 3a3ff: 4c 89 ee mov %r13,%rsi 0.00 : 3a402: 48 89 ef mov %rbp,%rdi 0.00 : 3a405: e8 c6 93 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 3a40a: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3a410: 74 16 je 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3a412: 48 39 c5 cmp %rax,%rbp 0.00 : 3a415: 0f 84 54 1c 00 00 je 3c06f <__GI_____strtod_l_internal+0x1e5f> 0.00 : 3a41b: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 3a420: 48 89 03 mov %rax,(%rbx) 0.00 : 3a423: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a428: 8b 6c 24 70 mov 0x70(%rsp),%ebp 0.00 : 3a42c: 85 ed test %ebp,%ebp 0.00 : 3a42e: 0f 84 24 04 00 00 je 3a858 <__GI_____strtod_l_internal+0x648> 0.00 : 3a434: f2 0f 10 05 f4 95 10 movsd 0x1095f4(%rip),%xmm0 # 143a30 0.00 : 3a43b: 00 0.00 : 3a43c: e9 02 ff ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3a441: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a448: 48 83 c5 01 add $0x1,%rbp 0.00 : 3a44c: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.00 : 3a450: c7 44 24 70 00 00 00 movl $0x0,0x70(%rsp) 0.00 : 3a457: 00 0.00 : 3a458: e9 60 fe ff ff jmpq 3a2bd <__GI_____strtod_l_internal+0xad> 0.00 : 3a45d: 0f 1f 00 nopl (%rax) 0.00 : 3a460: 41 0f b6 44 15 01 movzbl 0x1(%r13,%rdx,1),%eax 0.00 : 3a466: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a46a: 38 c1 cmp %al,%cl 0.00 : 3a46c: 0f 85 65 ff ff ff jne 3a3d7 <__GI_____strtod_l_internal+0x1c7> 0.00 : 3a472: 41 0f b6 4c 16 01 movzbl 0x1(%r14,%rdx,1),%ecx 0.00 : 3a478: 84 c9 test %cl,%cl 0.00 : 3a47a: 75 e4 jne 3a460 <__GI_____strtod_l_internal+0x250> 0.00 : 3a47c: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a481: 0f 84 f6 08 00 00 je 3ad7d <__GI_____strtod_l_internal+0xb6d> 0.00 : 3a487: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a48e: 00 00 0.00 : 3a490: 4d 89 ec mov %r13,%r12 0.00 : 3a493: 45 31 ff xor %r15d,%r15d 0.00 : 3a496: 8d 43 d0 lea -0x30(%rbx),%eax 0.00 : 3a499: 3c 09 cmp $0x9,%al 0.00 : 3a49b: 0f 86 bf 00 00 00 jbe 3a560 <__GI_____strtod_l_internal+0x350> 0.00 : 3a4a1: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a4a6: 0f 84 9c 00 00 00 je 3a548 <__GI_____strtod_l_internal+0x338> 0.00 : 3a4ac: 48 83 bc 24 88 00 00 cmpq $0x0,0x88(%rsp) 0.00 : 3a4b3: 00 00 0.00 : 3a4b5: 0f 85 d7 19 00 00 jne 3be92 <__GI_____strtod_l_internal+0x1c82> 0.00 : 3a4bb: 48 83 bc 24 90 00 00 cmpq $0x0,0x90(%rsp) 0.00 : 3a4c2: 00 00 0.00 : 3a4c4: 0f 84 b6 00 00 00 je 3a580 <__GI_____strtod_l_internal+0x370> 0.00 : 3a4ca: 4c 39 e5 cmp %r12,%rbp 0.00 : 3a4cd: 0f 83 ad 00 00 00 jae 3a580 <__GI_____strtod_l_internal+0x370> 0.00 : 3a4d3: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 3a4da: 00 0.00 : 3a4db: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3a4e2: 00 0.00 : 3a4e3: 4c 89 e6 mov %r12,%rsi 0.00 : 3a4e6: 48 89 ef mov %rbp,%rdi 0.00 : 3a4e9: e8 e2 92 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 3a4ee: 49 39 c4 cmp %rax,%r12 0.00 : 3a4f1: 48 89 c1 mov %rax,%rcx 0.00 : 3a4f4: 74 7c je 3a572 <__GI_____strtod_l_internal+0x362> 0.00 : 3a4f6: 48 39 c5 cmp %rax,%rbp 0.00 : 3a4f9: 0f 84 92 14 00 00 je 3b991 <__GI_____strtod_l_internal+0x1781> 0.00 : 3a4ff: 49 39 c5 cmp %rax,%r13 0.00 : 3a502: 0f 87 df 07 00 00 ja 3ace7 <__GI_____strtod_l_internal+0xad7> 0.00 : 3a508: 4c 89 ea mov %r13,%rdx 0.00 : 3a50b: bd 00 00 00 00 mov $0x0,%ebp 0.00 : 3a510: 0f 83 46 1a 00 00 jae 3bf5c <__GI_____strtod_l_internal+0x1d4c> 0.00 : 3a516: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3a51d: 00 00 00 0.00 : 3a520: 0f b6 02 movzbl (%rdx),%eax 0.00 : 3a523: 83 e8 30 sub $0x30,%eax 0.00 : 3a526: 3c 0a cmp $0xa,%al 0.00 : 3a528: 48 83 d5 00 adc $0x0,%rbp 0.00 : 3a52c: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a530: 48 39 d1 cmp %rdx,%rcx 0.00 : 3a533: 77 eb ja 3a520 <__GI_____strtod_l_internal+0x310> 0.00 : 3a535: 49 89 c8 mov %rcx,%r8 0.00 : 3a538: 49 89 eb mov %rbp,%r11 0.00 : 3a53b: 45 31 d2 xor %r10d,%r10d 0.00 : 3a53e: e9 53 01 00 00 jmpq 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3a543: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a548: 48 0f be c3 movsbq %bl,%rax 0.00 : 3a54c: 41 8b 04 80 mov (%r8,%rax,4),%eax 0.00 : 3a550: 83 e8 61 sub $0x61,%eax 0.00 : 3a553: 3c 05 cmp $0x5,%al 0.00 : 3a555: 0f 87 51 ff ff ff ja 3a4ac <__GI_____strtod_l_internal+0x29c> 0.00 : 3a55b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a560: 49 83 c7 01 add $0x1,%r15 0.00 : 3a564: 49 83 c4 01 add $0x1,%r12 0.00 : 3a568: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 3a56d: e9 24 ff ff ff jmpq 3a496 <__GI_____strtod_l_internal+0x286> 0.00 : 3a572: 41 0f b6 36 movzbl (%r14),%esi 0.00 : 3a576: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3a57d: 00 00 00 0.00 : 3a580: 49 83 ff 01 cmp $0x1,%r15 0.00 : 3a584: 4d 19 d2 sbb %r10,%r10 0.00 : 3a587: 40 84 f6 test %sil,%sil 0.00 : 3a58a: 74 30 je 3a5bc <__GI_____strtod_l_internal+0x3ac> 0.00 : 3a58c: 31 d2 xor %edx,%edx 0.00 : 3a58e: 41 3a 34 24 cmp (%r12),%sil 0.00 : 3a592: 74 1e je 3a5b2 <__GI_____strtod_l_internal+0x3a2> 0.00 : 3a594: e9 47 04 00 00 jmpq 3a9e0 <__GI_____strtod_l_internal+0x7d0> 0.00 : 3a599: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a5a0: 41 0f b6 44 14 01 movzbl 0x1(%r12,%rdx,1),%eax 0.00 : 3a5a6: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a5aa: 38 c1 cmp %al,%cl 0.00 : 3a5ac: 0f 85 2e 04 00 00 jne 3a9e0 <__GI_____strtod_l_internal+0x7d0> 4.17 : 3a5b2: 41 0f b6 4c 16 01 movzbl 0x1(%r14,%rdx,1),%ecx 0.00 : 3a5b8: 84 c9 test %cl,%cl 0.00 : 3a5ba: 75 e4 jne 3a5a0 <__GI_____strtod_l_internal+0x390> 0.00 : 3a5bc: 4c 03 64 24 40 add 0x40(%rsp),%r12 0.00 : 3a5c1: 4c 89 fd mov %r15,%rbp 0.00 : 3a5c4: 31 c9 xor %ecx,%ecx 0.00 : 3a5c6: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 3a5cb: eb 38 jmp 3a605 <__GI_____strtod_l_internal+0x3f5> 0.00 : 3a5cd: 0f 1f 00 nopl (%rax) 0.00 : 3a5d0: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3a5d5: 48 0f be d3 movsbq %bl,%rdx 0.00 : 3a5d9: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 3a5dd: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 3a5e0: 83 e8 61 sub $0x61,%eax 0.00 : 3a5e3: 3c 05 cmp $0x5,%al 0.00 : 3a5e5: 77 2c ja 3a613 <__GI_____strtod_l_internal+0x403> 0.00 : 3a5e7: 80 fb 30 cmp $0x30,%bl 0.00 : 3a5ea: 74 08 je 3a5f4 <__GI_____strtod_l_internal+0x3e4> 0.00 : 3a5ec: 49 83 fa ff cmp $0xffffffffffffffff,%r10 0.00 : 3a5f0: 4c 0f 44 d1 cmove %rcx,%r10 0.00 : 3a5f4: 49 83 c4 01 add $0x1,%r12 0.00 : 3a5f8: 48 83 c5 01 add $0x1,%rbp 0.00 : 3a5fc: 48 83 c1 01 add $0x1,%rcx 0.00 : 3a600: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 3a605: 8d 43 d0 lea -0x30(%rbx),%eax 0.00 : 3a608: 3c 09 cmp $0x9,%al 0.00 : 3a60a: 76 db jbe 3a5e7 <__GI_____strtod_l_internal+0x3d7> 0.00 : 3a60c: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a611: 74 bd je 3a5d0 <__GI_____strtod_l_internal+0x3c0> 0.00 : 3a613: 48 85 ed test %rbp,%rbp 0.00 : 3a616: 0f 88 34 1a 00 00 js 3c050 <__GI_____strtod_l_internal+0x1e40> 0.00 : 3a61c: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 3a621: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a626: 48 0f be d3 movsbq %bl,%rdx 0.00 : 3a62a: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 3a62e: 41 0f 94 c1 sete %r9b 0.00 : 3a632: 0f b6 04 90 movzbl (%rax,%rdx,4),%eax 4.17 : 3a636: 75 08 jne 3a640 <__GI_____strtod_l_internal+0x430> 0.00 : 3a638: 3c 70 cmp $0x70,%al 0.00 : 3a63a: 0f 84 9d 02 00 00 je 3a8dd <__GI_____strtod_l_internal+0x6cd> 0.00 : 3a640: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a645: 74 08 je 3a64f <__GI_____strtod_l_internal+0x43f> 0.00 : 3a647: 3c 65 cmp $0x65,%al 0.00 : 3a649: 0f 84 8e 02 00 00 je 3a8dd <__GI_____strtod_l_internal+0x6cd> 4.17 : 3a64f: 4d 89 e0 mov %r12,%r8 0.00 : 3a652: 4c 39 fd cmp %r15,%rbp 0.00 : 3a655: 4c 89 e2 mov %r12,%rdx 0.00 : 3a658: 76 30 jbe 3a68a <__GI_____strtod_l_internal+0x47a> 0.00 : 3a65a: 48 83 ea 01 sub $0x1,%rdx 0.00 : 3a65e: 80 3a 30 cmpb $0x30,(%rdx) 0.00 : 3a661: 74 10 je 3a673 <__GI_____strtod_l_internal+0x463> 0.00 : 3a663: e9 a1 13 00 00 jmpq 3ba09 <__GI_____strtod_l_internal+0x17f9> 0.00 : 3a668: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a66f: 00 0.00 : 3a670: 48 89 c2 mov %rax,%rdx 0.00 : 3a673: 48 83 ed 01 sub $0x1,%rbp 0.00 : 3a677: 80 7a ff 30 cmpb $0x30,-0x1(%rdx) 0.00 : 3a67b: 48 8d 42 ff lea -0x1(%rdx),%rax 0.00 : 3a67f: 74 ef je 3a670 <__GI_____strtod_l_internal+0x460> 0.00 : 3a681: 4c 39 fd cmp %r15,%rbp 0.00 : 3a684: 0f 82 98 1c 00 00 jb 3c322 <__GI_____strtod_l_internal+0x2112> 0.00 : 3a68a: 49 39 ef cmp %rbp,%r15 0.00 : 3a68d: 0f 84 55 03 00 00 je 3a9e8 <__GI_____strtod_l_internal+0x7d8> 0.00 : 3a693: 4d 89 fb mov %r15,%r11 0.00 : 3a696: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3a69c: 74 08 je 3a6a6 <__GI_____strtod_l_internal+0x496> 0.00 : 3a69e: 48 8b 74 24 50 mov 0x50(%rsp),%rsi 0.00 : 3a6a3: 4c 89 06 mov %r8,(%rsi) 4.17 : 3a6a6: 48 85 ed test %rbp,%rbp 0.00 : 3a6a9: 0f 84 79 fd ff ff je 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3a6af: 4d 85 d2 test %r10,%r10 0.00 : 3a6b2: 4d 89 ec mov %r13,%r12 0.00 : 3a6b5: 0f 84 cd 00 00 00 je 3a788 <__GI_____strtod_l_internal+0x578> 0.00 : 3a6bb: 45 0f b6 0e movzbl (%r14),%r9d 0.00 : 3a6bf: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : 3a6c4: 49 8d 75 01 lea 0x1(%r13),%rsi 0.00 : 3a6c8: 45 0f b6 46 01 movzbl 0x1(%r14),%r8d 0.00 : 3a6cd: eb 08 jmp 3a6d7 <__GI_____strtod_l_internal+0x4c7> 0.00 : 3a6cf: 90 nop 0.00 : 3a6d0: 0f b6 06 movzbl (%rsi),%eax 0.00 : 3a6d3: 48 83 c6 01 add $0x1,%rsi 0.00 : 3a6d7: 44 38 c8 cmp %r9b,%al 0.00 : 3a6da: 48 8d 7e ff lea -0x1(%rsi),%rdi 0.00 : 3a6de: 75 f0 jne 3a6d0 <__GI_____strtod_l_internal+0x4c0> 0.00 : 3a6e0: 45 84 c0 test %r8b,%r8b 0.00 : 3a6e3: 74 2e je 3a713 <__GI_____strtod_l_internal+0x503> 0.00 : 3a6e5: 0f b6 06 movzbl (%rsi),%eax 0.00 : 3a6e8: 31 d2 xor %edx,%edx 0.00 : 3a6ea: 41 38 c0 cmp %al,%r8b 0.00 : 3a6ed: 74 1a je 3a709 <__GI_____strtod_l_internal+0x4f9> 0.00 : 3a6ef: 90 nop 0.00 : 3a6f0: eb e1 jmp 3a6d3 <__GI_____strtod_l_internal+0x4c3> 0.00 : 3a6f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a6f8: 0f b6 44 17 02 movzbl 0x2(%rdi,%rdx,1),%eax 0.00 : 3a6fd: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a701: 38 c1 cmp %al,%cl 0.00 : 3a703: 0f 85 c7 01 00 00 jne 3a8d0 <__GI_____strtod_l_internal+0x6c0> 0.00 : 3a709: 41 0f b6 4c 16 02 movzbl 0x2(%r14,%rdx,1),%ecx 0.00 : 3a70f: 84 c9 test %cl,%cl 0.00 : 3a711: 75 e5 jne 3a6f8 <__GI_____strtod_l_internal+0x4e8> 0.00 : 3a713: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a718: 48 b8 ff ff ff ff ff movabs $0x7fffffffffffffff,%rax 0.00 : 3a71f: ff ff 7f 0.00 : 3a722: 48 ba ff ff ff ff ff movabs $0x1fffffffffffffff,%rdx 0.00 : 3a729: ff ff 1f 0.00 : 3a72c: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 3a730: 4c 39 d0 cmp %r10,%rax 0.00 : 3a733: 0f 82 ca 1b 00 00 jb 3c303 <__GI_____strtod_l_internal+0x20f3> 0.00 : 3a739: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a73e: 0f 84 c2 0b 00 00 je 3b306 <__GI_____strtod_l_internal+0x10f6> 0.00 : 3a744: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 3a74b: 00 00 80 0.00 : 3a74e: 48 03 84 24 30 02 00 add 0x230(%rsp),%rax 0.00 : 3a755: 00 4.17 : 3a756: 4c 39 d0 cmp %r10,%rax 0.00 : 3a759: 0f 82 e2 1b 00 00 jb 3c341 <__GI_____strtod_l_internal+0x2131> 0.00 : 3a75f: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 4.17 : 3a764: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 3a769: 4a 8d 14 95 00 00 00 lea 0x0(,%r10,4),%rdx 0.00 : 3a770: 00 0.00 : 3a771: 49 8d 04 0a lea (%r10,%rcx,1),%rax 0.00 : 3a775: 49 0f 45 d2 cmovne %r10,%rdx 0.00 : 3a779: 48 29 94 24 30 02 00 sub %rdx,0x230(%rsp) 0.00 : 3a780: 00 0.00 : 3a781: 4c 29 d5 sub %r10,%rbp 0.00 : 3a784: 4c 8d 24 07 lea (%rdi,%rax,1),%r12 0.00 : 3a788: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a78d: 0f 84 d0 03 00 00 je 3ab63 <__GI_____strtod_l_internal+0x953> 0.00 : 3a793: 48 8b 94 24 30 02 00 mov 0x230(%rsp),%rdx 0.00 : 3a79a: 00 0.00 : 3a79b: 48 85 d2 test %rdx,%rdx 0.00 : 3a79e: 0f 88 38 09 00 00 js 3b0dc <__GI_____strtod_l_internal+0xecc> 0.00 : 3a7a4: 48 89 e8 mov %rbp,%rax 0.00 : 3a7a7: 4c 29 d8 sub %r11,%rax 0.00 : 3a7aa: 48 39 d0 cmp %rdx,%rax 0.00 : 3a7ad: 48 0f 4f c2 cmovg %rdx,%rax 4.17 : 3a7b1: 4e 8d 1c 18 lea (%rax,%r11,1),%r11 0.00 : 3a7b5: 48 29 c2 sub %rax,%rdx 0.00 : 3a7b8: b8 35 01 00 00 mov $0x135,%eax 0.00 : 3a7bd: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3a7c4: 00 0.00 : 3a7c5: 4c 29 d8 sub %r11,%rax 0.00 : 3a7c8: 4c 89 9c 24 c8 00 00 mov %r11,0xc8(%rsp) 0.00 : 3a7cf: 00 0.00 : 3a7d0: 48 39 c2 cmp %rax,%rdx 0.00 : 3a7d3: 0f 8f fe 11 00 00 jg 3b9d7 <__GI_____strtod_l_internal+0x17c7> 0.00 : 3a7d9: 48 81 fa bd fe ff ff cmp $0xfffffffffffffebd,%rdx 0.00 : 3a7e0: 0f 8c c6 1a 00 00 jl 3c2ac <__GI_____strtod_l_internal+0x209c> 0.00 : 3a7e6: 48 83 bc 24 c8 00 00 cmpq $0x0,0xc8(%rsp) 0.00 : 3a7ed: 00 00 0.00 : 3a7ef: c7 84 24 84 00 00 00 movl $0x0,0x84(%rsp) 0.00 : 3a7f6: 00 00 00 00 0.00 : 3a7fa: 0f 85 28 06 00 00 jne 3ae28 <__GI_____strtod_l_internal+0xc18> 0.00 : 3a800: 48 3b ac 24 c8 00 00 cmp 0xc8(%rsp),%rbp 0.00 : 3a807: 00 0.00 : 3a808: 76 11 jbe 3a81b <__GI_____strtod_l_internal+0x60b> 0.00 : 3a80a: 48 8b 8c 24 30 02 00 mov 0x230(%rsp),%rcx 0.00 : 3a811: 00 0.00 : 3a812: 48 85 c9 test %rcx,%rcx 0.00 : 3a815: 0f 8e 99 09 00 00 jle 3b1b4 <__GI_____strtod_l_internal+0xfa4> 0.00 : 3a81b: 48 8d 0d ae 80 10 00 lea 0x1080ae(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3a822: 48 8d 35 f7 03 10 00 lea 0x1003f7(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3a829: 48 8d 3d 28 3d 10 00 lea 0x103d28(%rip),%rdi # 13e558 <__PRETTY_FUNCTION__.11129+0xb7f> 0.00 : 3a830: ba ff 04 00 00 mov $0x4ff,%edx 0.00 : 3a835: e8 e6 10 ff ff callq 2b920 <__assert_fail> 0.00 : 3a83a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a840: 48 83 c5 01 add $0x1,%rbp 0.00 : 3a844: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.00 : 3a848: c7 44 24 70 01 00 00 movl $0x1,0x70(%rsp) 0.00 : 3a84f: 00 0.00 : 3a850: e9 68 fa ff ff jmpq 3a2bd <__GI_____strtod_l_internal+0xad> 0.00 : 3a855: 0f 1f 00 nopl (%rax) 0.00 : 3a858: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3a85c: e9 e2 fa ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3a861: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 4.17 : 3a868: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 3a86d: 4c 8b 40 70 mov 0x70(%rax),%r8 0.00 : 3a871: 48 0f be 45 01 movsbq 0x1(%rbp),%rax 0.00 : 3a876: c7 44 24 74 0a 00 00 movl $0xa,0x74(%rsp) 0.00 : 3a87d: 00 0.00 : 3a87e: 41 83 3c 80 78 cmpl $0x78,(%r8,%rax,4) 0.00 : 3a883: 0f 85 e9 fa ff ff jne 3a372 <__GI_____strtod_l_internal+0x162> 0.00 : 3a889: 48 83 c5 02 add $0x2,%rbp 0.00 : 3a88d: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.00 : 3a891: c7 44 24 74 10 00 00 movl $0x10,0x74(%rsp) 0.00 : 3a898: 00 0.00 : 3a899: 48 c7 84 24 90 00 00 movq $0x0,0x90(%rsp) 0.00 : 3a8a0: 00 00 00 00 00 0.00 : 3a8a5: e9 c8 fa ff ff jmpq 3a372 <__GI_____strtod_l_internal+0x162> 0.00 : 3a8aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a8b0: 80 fa 60 cmp $0x60,%dl 0.00 : 3a8b3: 0f 8e 09 fb ff ff jle 3a3c2 <__GI_____strtod_l_internal+0x1b2> 0.00 : 3a8b9: 80 fa 66 cmp $0x66,%dl 0.00 : 3a8bc: 0f 8e ce fb ff ff jle 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3a8c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a8c8: e9 f5 fa ff ff jmpq 3a3c2 <__GI_____strtod_l_internal+0x1b2> 0.00 : 3a8cd: 0f 1f 00 nopl (%rax) 0.00 : 3a8d0: 44 89 c0 mov %r8d,%eax 0.00 : 3a8d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a8d8: e9 f6 fd ff ff jmpq 3a6d3 <__GI_____strtod_l_internal+0x4c3> 0.00 : 3a8dd: 41 0f b6 74 24 01 movzbl 0x1(%r12),%esi 0.00 : 3a8e3: 4d 8d 44 24 01 lea 0x1(%r12),%r8 0.00 : 3a8e8: 40 80 fe 2d cmp $0x2d,%sil 0.00 : 3a8ec: 0f 84 93 01 00 00 je 3aa85 <__GI_____strtod_l_internal+0x875> 0.00 : 3a8f2: 45 31 db xor %r11d,%r11d 0.00 : 3a8f5: 40 80 fe 2b cmp $0x2b,%sil 0.00 : 3a8f9: 0f 84 d5 03 00 00 je 3acd4 <__GI_____strtod_l_internal+0xac4> 0.00 : 3a8ff: 8d 46 d0 lea -0x30(%rsi),%eax 0.00 : 3a902: 3c 09 cmp $0x9,%al 0.00 : 3a904: 0f 87 45 fd ff ff ja 3a64f <__GI_____strtod_l_internal+0x43f> 0.00 : 3a90a: 45 84 c9 test %r9b,%r9b 0.00 : 3a90d: 0f 85 cd 04 00 00 jne 3ade0 <__GI_____strtod_l_internal+0xbd0> 0.00 : 3a913: 45 85 db test %r11d,%r11d 0.00 : 3a916: 0f 84 f3 03 00 00 je 3ad0f <__GI_____strtod_l_internal+0xaff> 0.00 : 3a91c: 48 b8 97 fe ff ff ff movabs $0x7ffffffffffffe97,%rax 0.00 : 3a923: ff ff 7f 0.00 : 3a926: 49 8d 8f 68 01 00 00 lea 0x168(%r15),%rcx 0.00 : 3a92d: 49 39 c7 cmp %rax,%r15 0.00 : 3a930: 0f 87 8c 1a 00 00 ja 3c3c2 <__GI_____strtod_l_internal+0x21b2> 0.00 : 3a936: 48 b8 67 66 66 66 66 movabs $0x6666666666666667,%rax 0.00 : 3a93d: 66 66 66 0.00 : 3a940: 48 f7 e9 imul %rcx 0.00 : 3a943: 48 89 c8 mov %rcx,%rax 0.00 : 3a946: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 3a94a: 48 89 d7 mov %rdx,%rdi 0.00 : 3a94d: 48 c1 ff 02 sar $0x2,%rdi 0.00 : 3a951: 48 29 c7 sub %rax,%rdi 0.00 : 3a954: 48 89 c8 mov %rcx,%rax 0.00 : 3a957: 48 ba 67 66 66 66 66 movabs $0x6666666666666667,%rdx 0.00 : 3a95e: 66 66 66 0.00 : 3a961: 48 89 cb mov %rcx,%rbx 0.00 : 3a964: 48 f7 ea imul %rdx 0.00 : 3a967: 48 89 c8 mov %rcx,%rax 0.00 : 3a96a: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 3a96e: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 3a972: 48 29 c2 sub %rax,%rdx 0.00 : 3a975: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 3a979: 48 01 d2 add %rdx,%rdx 0.00 : 3a97c: 48 29 d3 sub %rdx,%rbx 0.00 : 3a97f: 90 nop 0.00 : 3a980: 48 8b 8c 24 30 02 00 mov 0x230(%rsp),%rcx 0.00 : 3a987: 00 0.00 : 3a988: 48 39 f9 cmp %rdi,%rcx 0.00 : 3a98b: 0f 8f 70 07 00 00 jg 3b101 <__GI_____strtod_l_internal+0xef1> 0.00 : 3a991: 0f 84 57 07 00 00 je 3b0ee <__GI_____strtod_l_internal+0xede> 0.00 : 3a997: 40 0f be c6 movsbl %sil,%eax 0.00 : 3a99b: 83 e8 30 sub $0x30,%eax 0.00 : 3a99e: 48 63 d0 movslq %eax,%rdx 0.00 : 3a9a1: 48 8d 04 89 lea (%rcx,%rcx,4),%rax 0.00 : 3a9a5: 49 83 c0 01 add $0x1,%r8 0.00 : 3a9a9: 48 8d 14 42 lea (%rdx,%rax,2),%rdx 0.00 : 3a9ad: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3a9b4: 00 0.00 : 3a9b5: 41 0f b6 30 movzbl (%r8),%esi 0.00 : 3a9b9: 8d 46 d0 lea -0x30(%rsi),%eax 0.00 : 3a9bc: 3c 09 cmp $0x9,%al 0.00 : 3a9be: 76 c0 jbe 3a980 <__GI_____strtod_l_internal+0x770> 0.00 : 3a9c0: 45 85 db test %r11d,%r11d 0.00 : 3a9c3: 0f 84 89 fc ff ff je 3a652 <__GI_____strtod_l_internal+0x442> 0.00 : 3a9c9: 48 f7 da neg %rdx 0.00 : 3a9cc: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3a9d3: 00 0.00 : 3a9d4: e9 79 fc ff ff jmpq 3a652 <__GI_____strtod_l_internal+0x442> 0.00 : 3a9d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a9e0: 4c 89 fd mov %r15,%rbp 0.00 : 3a9e3: e9 2b fc ff ff jmpq 3a613 <__GI_____strtod_l_internal+0x403> 0.00 : 3a9e8: 48 85 ed test %rbp,%rbp 0.00 : 3a9eb: 0f 84 a2 fc ff ff je 3a693 <__GI_____strtod_l_internal+0x483> 0.00 : 3a9f1: 48 83 bc 24 30 02 00 cmpq $0x0,0x230(%rsp) 0.00 : 3a9f8: 00 00 0.00 : 3a9fa: 48 8d 4a ff lea -0x1(%rdx),%rcx 0.00 : 3a9fe: 49 89 eb mov %rbp,%r11 0.00 : 3aa01: 0f 89 8c fc ff ff jns 3a693 <__GI_____strtod_l_internal+0x483> 0.00 : 3aa07: eb 5b jmp 3aa64 <__GI_____strtod_l_internal+0x854> 0.00 : 3aa09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3aa10: 0f be 01 movsbl (%rcx),%eax 0.00 : 3aa13: 83 e8 30 sub $0x30,%eax 0.00 : 3aa16: 83 f8 09 cmp $0x9,%eax 0.00 : 3aa19: 0f 97 c0 seta %al 0.00 : 3aa1c: 84 c0 test %al,%al 0.00 : 3aa1e: 75 40 jne 3aa60 <__GI_____strtod_l_internal+0x850> 0.00 : 3aa20: 80 39 30 cmpb $0x30,(%rcx) 0.00 : 3aa23: 0f 85 6d fc ff ff jne 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3aa29: 49 83 eb 01 sub $0x1,%r11 0.00 : 3aa2d: 41 80 f9 01 cmp $0x1,%r9b 0.00 : 3aa31: 48 19 c0 sbb %rax,%rax 0.00 : 3aa34: 48 83 e0 fd and $0xfffffffffffffffd,%rax 0.00 : 3aa38: 48 83 c0 04 add $0x4,%rax 0.00 : 3aa3c: 48 03 84 24 30 02 00 add 0x230(%rsp),%rax 0.00 : 3aa43: 00 0.00 : 3aa44: 48 83 ed 01 sub $0x1,%rbp 0.00 : 3aa48: 48 89 84 24 30 02 00 mov %rax,0x230(%rsp) 0.00 : 3aa4f: 00 0.00 : 3aa50: 0f 84 40 fc ff ff je 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3aa56: 48 85 c0 test %rax,%rax 0.00 : 3aa59: 0f 89 37 fc ff ff jns 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3aa5f: 90 nop 0.00 : 3aa60: 48 83 e9 01 sub $0x1,%rcx 0.00 : 3aa64: 45 84 c9 test %r9b,%r9b 0.00 : 3aa67: 74 a7 je 3aa10 <__GI_____strtod_l_internal+0x800> 0.00 : 3aa69: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 3aa6e: 48 0f be 11 movsbq (%rcx),%rdx 0.00 : 3aa72: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 3aa76: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 3aa7a: c1 e8 0c shr $0xc,%eax 0.00 : 3aa7d: 83 f0 01 xor $0x1,%eax 0.00 : 3aa80: 83 e0 01 and $0x1,%eax 0.00 : 3aa83: eb 97 jmp 3aa1c <__GI_____strtod_l_internal+0x80c> 0.00 : 3aa85: 4d 8d 44 24 02 lea 0x2(%r12),%r8 0.00 : 3aa8a: 41 0f b6 74 24 02 movzbl 0x2(%r12),%esi 0.00 : 3aa90: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 3aa96: e9 64 fe ff ff jmpq 3a8ff <__GI_____strtod_l_internal+0x6ef> 0.00 : 3aa9b: 48 8d 0d 3e 60 33 00 lea 0x33603e(%rip),%rcx # 370ae0 <_nl_C_locobj> 0.00 : 3aaa2: 48 8d 35 fd 00 10 00 lea 0x1000fd(%rip),%rsi # 13aba6 <__PRETTY_FUNCTION__.8908+0x28> 0.00 : 3aaa9: ba 03 00 00 00 mov $0x3,%edx 0.00 : 3aaae: 48 89 ef mov %rbp,%rdi 0.00 : 3aab1: e8 fa 9b 04 00 callq 846b0 <__strncasecmp_l> 0.00 : 3aab6: 85 c0 test %eax,%eax 0.00 : 3aab8: 0f 85 68 f8 ff ff jne 3a326 <__GI_____strtod_l_internal+0x116> 0.00 : 3aabe: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3aac4: 74 32 je 3aaf8 <__GI_____strtod_l_internal+0x8e8> 0.00 : 3aac6: 48 8d 7d 03 lea 0x3(%rbp),%rdi 0.00 : 3aaca: 48 8d 0d 0f 60 33 00 lea 0x33600f(%rip),%rcx # 370ae0 <_nl_C_locobj> 0.00 : 3aad1: 48 8d 35 d2 00 10 00 lea 0x1000d2(%rip),%rsi # 13abaa <__PRETTY_FUNCTION__.8908+0x2c> 0.00 : 3aad8: ba 05 00 00 00 mov $0x5,%edx 0.00 : 3aadd: e8 ce 9b 04 00 callq 846b0 <__strncasecmp_l> 0.00 : 3aae2: 83 f8 01 cmp $0x1,%eax 0.00 : 3aae5: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 3aaea: 48 19 c0 sbb %rax,%rax 0.00 : 3aaed: 83 e0 05 and $0x5,%eax 0.00 : 3aaf0: 48 8d 44 05 03 lea 0x3(%rbp,%rax,1),%rax 0.00 : 3aaf5: 48 89 02 mov %rax,(%rdx) 0.00 : 3aaf8: 8b 5c 24 70 mov 0x70(%rsp),%ebx 0.00 : 3aafc: 85 db test %ebx,%ebx 0.00 : 3aafe: 0f 85 f8 0e 00 00 jne 3b9fc <__GI_____strtod_l_internal+0x17ec> 0.00 : 3ab04: f2 0f 10 05 1c 8f 10 movsd 0x108f1c(%rip),%xmm0 # 143a28 0.00 : 3ab0b: 00 0.00 : 3ab0c: e9 32 f8 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3ab11: 48 8d 0d c8 5f 33 00 lea 0x335fc8(%rip),%rcx # 370ae0 <_nl_C_locobj> 0.00 : 3ab18: 48 8d 35 91 00 10 00 lea 0x100091(%rip),%rsi # 13abb0 <__PRETTY_FUNCTION__.8908+0x32> 0.00 : 3ab1f: ba 03 00 00 00 mov $0x3,%edx 0.00 : 3ab24: 48 89 ef mov %rbp,%rdi 0.00 : 3ab27: e8 84 9b 04 00 callq 846b0 <__strncasecmp_l> 0.00 : 3ab2c: 85 c0 test %eax,%eax 0.00 : 3ab2e: 0f 85 f2 f7 ff ff jne 3a326 <__GI_____strtod_l_internal+0x116> 0.00 : 3ab34: 80 7d 03 28 cmpb $0x28,0x3(%rbp) 0.00 : 3ab38: 48 8d 7d 03 lea 0x3(%rbp),%rdi 0.00 : 3ab3c: 0f 84 e8 11 00 00 je 3bd2a <__GI_____strtod_l_internal+0x1b1a> 0.00 : 3ab42: f2 0f 10 05 1e 8f 10 movsd 0x108f1e(%rip),%xmm0 # 143a68 0.00 : 3ab49: 00 0.00 : 3ab4a: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3ab50: 0f 84 ed f7 ff ff je 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3ab56: 48 8b 74 24 50 mov 0x50(%rsp),%rsi 0.00 : 3ab5b: 48 89 3e mov %rdi,(%rsi) 0.00 : 3ab5e: e9 e0 f7 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3ab63: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 3ab68: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 3ab6d: 4c 8b 4b 68 mov 0x68(%rbx),%r9 0.00 : 3ab71: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ab75: 41 f6 44 41 01 10 testb $0x10,0x1(%r9,%rax,2) 0.00 : 3ab7b: 75 2c jne 3aba9 <__GI_____strtod_l_internal+0x999> 0.00 : 3ab7d: 0f 1f 00 nopl (%rax) 0.00 : 3ab80: 49 83 c4 01 add $0x1,%r12 0.00 : 3ab84: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 3ab89: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ab8d: 41 f6 44 41 01 10 testb $0x10,0x1(%r9,%rax,2) 0.00 : 3ab93: 74 eb je 3ab80 <__GI_____strtod_l_internal+0x970> 0.00 : 3ab95: eb 12 jmp 3aba9 <__GI_____strtod_l_internal+0x999> 0.00 : 3ab97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3ab9e: 00 00 0.00 : 3aba0: 49 83 c4 01 add $0x1,%r12 0.00 : 3aba4: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 3aba9: 80 fa 30 cmp $0x30,%dl 0.00 : 3abac: 74 f2 je 3aba0 <__GI_____strtod_l_internal+0x990> 0.00 : 3abae: 0f be c2 movsbl %dl,%eax 0.00 : 3abb1: 83 e8 30 sub $0x30,%eax 0.00 : 3abb4: 83 f8 09 cmp $0x9,%eax 0.00 : 3abb7: 0f 86 b3 01 00 00 jbe 3ad70 <__GI_____strtod_l_internal+0xb60> 0.00 : 3abbd: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3abc2: 48 0f be d2 movsbq %dl,%rdx 0.00 : 3abc6: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 3abcb: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 3abcf: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 3abd2: 83 e8 57 sub $0x57,%eax 0.00 : 3abd5: 48 63 d0 movslq %eax,%rdx 0.00 : 3abd8: 48 8d 05 e1 8b 0f 00 lea 0xf8be1(%rip),%rax # 1337c0 0.00 : 3abdf: 8b 34 90 mov (%rax,%rdx,4),%esi 0.00 : 3abe2: 85 f6 test %esi,%esi 0.00 : 3abe4: 0f 84 54 18 00 00 je 3c43e <__GI_____strtod_l_internal+0x222e> 0.00 : 3abea: 41 b8 34 00 00 00 mov $0x34,%r8d 0.00 : 3abf0: 41 29 f0 sub %esi,%r8d 0.00 : 3abf3: 41 8d 48 01 lea 0x1(%r8),%ecx 0.00 : 3abf7: 48 d3 e2 shl %cl,%rdx 0.00 : 3abfa: 48 8b 8c 24 30 02 00 mov 0x230(%rsp),%rcx 0.00 : 3ac01: 00 0.00 : 3ac02: 48 89 94 24 20 02 00 mov %rdx,0x220(%rsp) 0.00 : 3ac09: 00 0.00 : 3ac0a: 48 85 c9 test %rcx,%rcx 0.00 : 3ac0d: 0f 88 a0 0d 00 00 js 3b9b3 <__GI_____strtod_l_internal+0x17a3> 0.00 : 3ac13: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 3ac1a: 00 00 80 0.00 : 3ac1d: 48 63 d6 movslq %esi,%rdx 0.00 : 3ac20: 48 29 c8 sub %rcx,%rax 0.00 : 3ac23: 48 29 d0 sub %rdx,%rax 0.00 : 3ac26: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 3ac2a: 48 85 c0 test %rax,%rax 0.00 : 3ac2d: 48 0f 48 c2 cmovs %rdx,%rax 0.00 : 3ac31: 48 c1 f8 02 sar $0x2,%rax 0.00 : 3ac35: 4c 39 d8 cmp %r11,%rax 0.00 : 3ac38: 0f 82 9f 18 00 00 jb 3c4dd <__GI_____strtod_l_internal+0x22cd> 0.00 : 3ac3e: 8d 46 ff lea -0x1(%rsi),%eax 0.00 : 3ac41: 4a 8d 54 99 fc lea -0x4(%rcx,%r11,4),%rdx 0.00 : 3ac46: 48 89 ee mov %rbp,%rsi 0.00 : 3ac49: 48 98 cltq 0.00 : 3ac4b: 48 01 c2 add %rax,%rdx 0.00 : 3ac4e: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3ac52: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3ac59: 00 0.00 : 3ac5a: 75 3a jne 3ac96 <__GI_____strtod_l_internal+0xa86> 0.00 : 3ac5c: e9 2d 05 00 00 jmpq 3b18e <__GI_____strtod_l_internal+0xf7e> 0.00 : 3ac61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3ac68: 48 63 d0 movslq %eax,%rdx 0.00 : 3ac6b: 48 83 c7 01 add $0x1,%rdi 0.00 : 3ac6f: 41 83 f8 02 cmp $0x2,%r8d 0.00 : 3ac73: 0f 8e 68 0b 00 00 jle 3b7e1 <__GI_____strtod_l_internal+0x15d1> 0.00 : 3ac79: 41 8d 48 fd lea -0x3(%r8),%ecx 0.00 : 3ac7d: 48 d3 e2 shl %cl,%rdx 0.00 : 3ac80: 48 09 94 24 20 02 00 or %rdx,0x220(%rsp) 0.00 : 3ac87: 00 0.00 : 3ac88: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3ac8c: 0f 84 fc 04 00 00 je 3b18e <__GI_____strtod_l_internal+0xf7e> 0.00 : 3ac92: 41 83 e8 04 sub $0x4,%r8d 0.00 : 3ac96: 0f b6 17 movzbl (%rdi),%edx 0.00 : 3ac99: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ac9d: 41 f6 44 41 01 10 testb $0x10,0x1(%r9,%rax,2) 0.00 : 3aca3: 75 08 jne 3acad <__GI_____strtod_l_internal+0xa9d> 0.00 : 3aca5: 48 03 7c 24 40 add 0x40(%rsp),%rdi 0.00 : 3acaa: 0f b6 17 movzbl (%rdi),%edx 0.00 : 3acad: 0f be c2 movsbl %dl,%eax 0.00 : 3acb0: 83 e8 30 sub $0x30,%eax 0.00 : 3acb3: 83 f8 09 cmp $0x9,%eax 0.00 : 3acb6: 76 b0 jbe 3ac68 <__GI_____strtod_l_internal+0xa58> 0.00 : 3acb8: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 3acbd: 48 0f be d2 movsbq %dl,%rdx 0.00 : 3acc1: 48 83 c7 01 add $0x1,%rdi 0.00 : 3acc5: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 3acc9: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 3accc: 83 e8 57 sub $0x57,%eax 0.00 : 3accf: 48 63 d0 movslq %eax,%rdx 0.00 : 3acd2: eb 9b jmp 3ac6f <__GI_____strtod_l_internal+0xa5f> 0.00 : 3acd4: 4d 8d 44 24 02 lea 0x2(%r12),%r8 0.00 : 3acd9: 41 0f b6 74 24 02 movzbl 0x2(%r12),%esi 0.00 : 3acdf: 45 31 db xor %r11d,%r11d 0.00 : 3ace2: e9 18 fc ff ff jmpq 3a8ff <__GI_____strtod_l_internal+0x6ef> 0.00 : 3ace7: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3aced: 0f 84 35 f7 ff ff je 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3acf3: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 3acf8: 48 89 03 mov %rax,(%rbx) 0.00 : 3acfb: e9 28 f7 ff ff jmpq 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3ad00: 40 80 ff 65 cmp $0x65,%dil 0.00 : 3ad04: 0f 85 e5 f6 ff ff jne 3a3ef <__GI_____strtod_l_internal+0x1df> 0.00 : 3ad0a: e9 81 f7 ff ff jmpq 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3ad0f: 4d 85 ff test %r15,%r15 0.00 : 3ad12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3ad18: 0f 85 94 00 00 00 jne 3adb2 <__GI_____strtod_l_internal+0xba2> 0.00 : 3ad1e: 49 83 fa ff cmp $0xffffffffffffffff,%r10 0.00 : 3ad22: b9 35 01 00 00 mov $0x135,%ecx 0.00 : 3ad27: 0f 84 09 fc ff ff je 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ad2d: 48 b8 ca fe ff ff ff movabs $0x7ffffffffffffeca,%rax 0.00 : 3ad34: ff ff 7f 0.00 : 3ad37: 49 8d 8a 35 01 00 00 lea 0x135(%r10),%rcx 0.00 : 3ad3e: 49 39 c2 cmp %rax,%r10 0.00 : 3ad41: 0f 86 ef fb ff ff jbe 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ad47: 48 8d 0d 82 7b 10 00 lea 0x107b82(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3ad4e: 48 8d 35 cb fe 0f 00 lea 0xffecb(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3ad55: 48 8d 3d 2c 39 10 00 lea 0x10392c(%rip),%rdi # 13e688 <__PRETTY_FUNCTION__.11129+0xcaf> 0.00 : 3ad5c: ba 7b 03 00 00 mov $0x37b,%edx 0.00 : 3ad61: e8 ba 0b ff ff callq 2b920 <__assert_fail> 0.00 : 3ad66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3ad6d: 00 00 00 0.00 : 3ad70: 48 63 d0 movslq %eax,%rdx 0.00 : 3ad73: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 3ad78: e9 5b fe ff ff jmpq 3abd8 <__GI_____strtod_l_internal+0x9c8> 0.00 : 3ad7d: 4c 39 ed cmp %r13,%rbp 0.00 : 3ad80: 0f 85 0a f7 ff ff jne 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3ad86: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 3ad8b: 0f b6 54 0d 00 movzbl 0x0(%rbp,%rcx,1),%edx 0.00 : 3ad90: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 3ad93: 3c 09 cmp $0x9,%al 0.00 : 3ad95: 76 13 jbe 3adaa <__GI_____strtod_l_internal+0xb9a> 0.00 : 3ad97: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ad9b: 41 8b 04 80 mov (%r8,%rax,4),%eax 0.00 : 3ad9f: 83 e8 61 sub $0x61,%eax 0.00 : 3ada2: 3c 05 cmp $0x5,%al 0.00 : 3ada4: 0f 87 36 f6 ff ff ja 3a3e0 <__GI_____strtod_l_internal+0x1d0> 0.00 : 3adaa: 49 89 ec mov %rbp,%r12 0.00 : 3adad: e9 e1 f6 ff ff jmpq 3a493 <__GI_____strtod_l_internal+0x283> 0.00 : 3adb2: 4d 85 d2 test %r10,%r10 0.00 : 3adb5: 0f 84 56 0c 00 00 je 3ba11 <__GI_____strtod_l_internal+0x1801> 0.00 : 3adbb: 48 8d 0d 0e 7b 10 00 lea 0x107b0e(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3adc2: 48 8d 35 57 fe 0f 00 lea 0xffe57(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3adc9: 48 8d 3d 50 35 10 00 lea 0x103550(%rip),%rdi # 13e320 <__PRETTY_FUNCTION__.11129+0x947> 0.00 : 3add0: ba 6f 03 00 00 mov $0x36f,%edx 0.00 : 3add5: e8 46 0b ff ff callq 2b920 <__assert_fail> 0.00 : 3adda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3ade0: 45 85 db test %r11d,%r11d 0.00 : 3ade3: 0f 84 8f 0a 00 00 je 3b878 <__GI_____strtod_l_internal+0x1668> 0.00 : 3ade9: 48 b8 f3 fe ff ff ff movabs $0x1ffffffffffffef3,%rax 0.00 : 3adf0: ff ff 1f 0.00 : 3adf3: 4a 8d 0c bd 32 04 00 lea 0x432(,%r15,4),%rcx 0.00 : 3adfa: 00 0.00 : 3adfb: 49 39 c7 cmp %rax,%r15 0.00 : 3adfe: 0f 86 32 fb ff ff jbe 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ae04: 48 8d 0d c5 7a 10 00 lea 0x107ac5(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3ae0b: 48 8d 35 0e fe 0f 00 lea 0xffe0e(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3ae12: 48 8d 3d 9f 37 10 00 lea 0x10379f(%rip),%rdi # 13e5b8 <__PRETTY_FUNCTION__.11129+0xbdf> 0.00 : 3ae19: ba 47 03 00 00 mov $0x347,%edx 0.00 : 3ae1e: e8 fd 0a ff ff callq 2b920 <__assert_fail> 0.00 : 3ae23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3ae28: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : 3ae2f: 00 0.00 : 3ae30: 48 8d 9c 24 70 01 00 lea 0x170(%rsp),%rbx 0.00 : 3ae37: 00 0.00 : 3ae38: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : 3ae3d: 48 8d 8c 24 38 02 00 lea 0x238(%rsp),%rcx 0.00 : 3ae44: 00 0.00 : 3ae45: 4c 8d 84 24 30 02 00 lea 0x230(%rsp),%r8 0.00 : 3ae4c: 00 0.00 : 3ae4d: 4c 89 e7 mov %r12,%rdi 0.00 : 3ae50: 4d 89 f1 mov %r14,%r9 0.00 : 3ae53: 48 89 da mov %rbx,%rdx 0.00 : 3ae56: 48 89 5c 24 38 mov %rbx,0x38(%rsp) 0.00 : 3ae5b: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 3ae60: 8b b4 24 c8 00 00 00 mov 0xc8(%rsp),%esi 0.00 : 3ae67: 48 89 04 24 mov %rax,(%rsp) 0.00 : 3ae6b: e8 90 ee ff ff callq 39d00 0.00 : 3ae70: 48 83 bc 24 30 02 00 cmpq $0x0,0x230(%rsp) 0.00 : 3ae77: 00 00 0.00 : 3ae79: 49 89 c4 mov %rax,%r12 0.00 : 3ae7c: 0f 8e 6e 01 00 00 jle 3aff0 <__GI_____strtod_l_internal+0xde0> 0.00 : 3ae82: 48 8d 94 24 d0 00 00 lea 0xd0(%rsp),%rdx 0.00 : 3ae89: 00 0.00 : 3ae8a: 48 89 9c 24 98 00 00 mov %rbx,0x98(%rsp) 0.00 : 3ae91: 00 0.00 : 3ae92: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 3ae98: 4c 8d 2d 61 99 0f 00 lea 0xf9961(%rip),%r13 # 134800 <_fpioconst_pow10> 0.00 : 3ae9f: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : 3aea4: 48 89 94 24 a0 00 00 mov %rdx,0xa0(%rsp) 0.00 : 3aeab: 00 0.00 : 3aeac: eb 7d jmp 3af2b <__GI_____strtod_l_internal+0xd1b> 0.00 : 3aeae: 49 8b 4d 00 mov 0x0(%r13),%rcx 0.00 : 3aeb2: 48 8d 35 47 8b 0f 00 lea 0xf8b47(%rip),%rsi # 133a00 <__tens> 0.00 : 3aeb9: 48 8b bc 24 a0 00 00 mov 0xa0(%rsp),%rdi 0.00 : 3aec0: 00 0.00 : 3aec1: 49 89 d8 mov %rbx,%r8 0.00 : 3aec4: 48 8d 4c ce 08 lea 0x8(%rsi,%rcx,8),%rcx 0.00 : 3aec9: 48 8b b4 24 98 00 00 mov 0x98(%rsp),%rsi 0.00 : 3aed0: 00 0.00 : 3aed1: e8 ea 77 00 00 callq 426c0 <__mpn_mul> 0.00 : 3aed6: 48 89 c2 mov %rax,%rdx 0.00 : 3aed9: 48 89 d8 mov %rbx,%rax 0.00 : 3aedc: 48 03 84 24 38 02 00 add 0x238(%rsp),%rax 0.00 : 3aee3: 00 0.00 : 3aee4: 48 85 d2 test %rdx,%rdx 0.00 : 3aee7: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3aeee: 00 0.00 : 3aeef: 0f 84 9d 00 00 00 je 3af92 <__GI_____strtod_l_internal+0xd82> 0.00 : 3aef5: 48 8b b4 24 a0 00 00 mov 0xa0(%rsp),%rsi 0.00 : 3aefc: 00 0.00 : 3aefd: 48 8b 94 24 98 00 00 mov 0x98(%rsp),%rdx 0.00 : 3af04: 00 0.00 : 3af05: 48 89 b4 24 98 00 00 mov %rsi,0x98(%rsp) 0.00 : 3af0c: 00 0.00 : 3af0d: 48 89 94 24 a0 00 00 mov %rdx,0xa0(%rsp) 0.00 : 3af14: 00 0.00 : 3af15: 48 83 bc 24 30 02 00 cmpq $0x0,0x230(%rsp) 0.00 : 3af1c: 00 00 0.00 : 3af1e: 0f 84 9f 00 00 00 je 3afc3 <__GI_____strtod_l_internal+0xdb3> 0.00 : 3af24: 45 01 ff add %r15d,%r15d 0.00 : 3af27: 49 83 c5 18 add $0x18,%r13 0.00 : 3af2b: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3af32: 00 0.00 : 3af33: 49 63 cf movslq %r15d,%rcx 0.00 : 3af36: 48 85 f1 test %rsi,%rcx 0.00 : 3af39: 74 da je 3af15 <__GI_____strtod_l_internal+0xd05> 0.00 : 3af3b: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 3af3f: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3af46: 00 0.00 : 3af47: 48 31 f1 xor %rsi,%rcx 0.00 : 3af4a: 48 89 8c 24 30 02 00 mov %rcx,0x230(%rsp) 0.00 : 3af51: 00 0.00 : 3af52: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 3af56: 48 39 d3 cmp %rdx,%rbx 0.00 : 3af59: 0f 8e 4f ff ff ff jle 3aeae <__GI_____strtod_l_internal+0xc9e> 0.00 : 3af5f: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 3af63: 48 8d 05 96 8a 0f 00 lea 0xf8a96(%rip),%rax # 133a00 <__tens> 0.00 : 3af6a: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx 0.00 : 3af71: 00 0.00 : 3af72: 48 8b bc 24 a0 00 00 mov 0xa0(%rsp),%rdi 0.00 : 3af79: 00 0.00 : 3af7a: 49 89 d0 mov %rdx,%r8 0.00 : 3af7d: 48 89 da mov %rbx,%rdx 0.00 : 3af80: 48 8d 74 f0 08 lea 0x8(%rax,%rsi,8),%rsi 0.00 : 3af85: e8 36 77 00 00 callq 426c0 <__mpn_mul> 0.00 : 3af8a: 48 89 c2 mov %rax,%rdx 0.00 : 3af8d: e9 47 ff ff ff jmpq 3aed9 <__GI_____strtod_l_internal+0xcc9> 0.00 : 3af92: 48 8b b4 24 a0 00 00 mov 0xa0(%rsp),%rsi 0.00 : 3af99: 00 0.00 : 3af9a: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx 0.00 : 3afa1: 00 0.00 : 3afa2: 48 83 e8 01 sub $0x1,%rax 0.00 : 3afa6: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3afad: 00 0.00 : 3afae: 48 89 8c 24 a0 00 00 mov %rcx,0xa0(%rsp) 0.00 : 3afb5: 00 0.00 : 3afb6: 48 89 b4 24 98 00 00 mov %rsi,0x98(%rsp) 0.00 : 3afbd: 00 0.00 : 3afbe: e9 52 ff ff ff jmpq 3af15 <__GI_____strtod_l_internal+0xd05> 0.00 : 3afc3: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 3afc8: 48 39 9c 24 98 00 00 cmp %rbx,0x98(%rsp) 0.00 : 3afcf: 00 0.00 : 3afd0: 75 1e jne 3aff0 <__GI_____strtod_l_internal+0xde0> 0.00 : 3afd2: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3afd9: 00 0.00 : 3afda: 48 8b b4 24 98 00 00 mov 0x98(%rsp),%rsi 0.00 : 3afe1: 00 0.00 : 3afe2: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 3afe7: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 3afeb: e8 60 97 04 00 callq 84750 0.00 : 3aff0: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3aff7: 00 0.00 : 3aff8: 4d 8d 48 ff lea -0x1(%r8),%r9 0.00 : 3affc: 4c 89 c2 mov %r8,%rdx 0.00 : 3afff: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 3b003: 4a 0f bd 84 cc 70 01 bsr 0x170(%rsp,%r9,8),%rax 0.00 : 3b00a: 00 00 0.00 : 3b00c: 89 d6 mov %edx,%esi 0.00 : 3b00e: 83 f0 3f xor $0x3f,%eax 0.00 : 3b011: 29 c6 sub %eax,%esi 0.00 : 3b013: 81 fe 00 04 00 00 cmp $0x400,%esi 0.00 : 3b019: 89 b4 24 84 00 00 00 mov %esi,0x84(%rsp) 0.00 : 3b020: 0f 8f cc 13 00 00 jg 3c3f2 <__GI_____strtod_l_internal+0x21e2> 0.00 : 3b026: 83 fe 35 cmp $0x35,%esi 0.00 : 3b029: 0f 8e a8 08 00 00 jle 3b8d7 <__GI_____strtod_l_internal+0x16c7> 0.00 : 3b02f: 8d 46 cb lea -0x35(%rsi),%eax 0.00 : 3b032: 41 89 c5 mov %eax,%r13d 0.00 : 3b035: 89 c2 mov %eax,%edx 0.00 : 3b037: 41 83 e5 3f and $0x3f,%r13d 0.00 : 3b03b: c1 fa 06 sar $0x6,%edx 0.00 : 3b03e: 49 63 c5 movslq %r13d,%rax 0.00 : 3b041: 48 63 ca movslq %edx,%rcx 0.00 : 3b044: 48 85 c0 test %rax,%rax 0.00 : 3b047: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 3b04c: 0f 85 be 0d 00 00 jne 3be10 <__GI_____strtod_l_internal+0x1c00> 0.00 : 3b052: 48 8b 5c 24 38 mov 0x38(%rsp),%rbx 0.00 : 3b057: 48 89 cf mov %rcx,%rdi 0.00 : 3b05a: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b061: 00 0.00 : 3b062: 48 83 ef 01 sub $0x1,%rdi 0.00 : 3b066: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3b06c: 48 8b 04 cb mov (%rbx,%rcx,8),%rax 0.00 : 3b070: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3b077: 00 0.00 : 3b078: 31 c9 xor %ecx,%ecx 0.00 : 3b07a: 48 83 bc 24 70 01 00 cmpq $0x0,0x170(%rsp) 0.00 : 3b081: 00 00 0.00 : 3b083: 75 1a jne 3b09f <__GI_____strtod_l_internal+0xe8f> 0.00 : 3b085: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 3b08a: 31 c9 xor %ecx,%ecx 0.00 : 3b08c: 48 83 c2 08 add $0x8,%rdx 0.00 : 3b090: 48 8b 02 mov (%rdx),%rax 0.00 : 3b093: 83 c1 01 add $0x1,%ecx 0.00 : 3b096: 48 83 c2 08 add $0x8,%rdx 0.00 : 3b09a: 48 85 c0 test %rax,%rax 0.00 : 3b09d: 74 f1 je 3b090 <__GI_____strtod_l_internal+0xe80> 0.00 : 3b09f: 48 3b ac 24 c8 00 00 cmp 0xc8(%rsp),%rbp 0.00 : 3b0a6: 00 0.00 : 3b0a7: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3b0ac: 77 0c ja 3b0ba <__GI_____strtod_l_internal+0xeaa> 0.00 : 3b0ae: 48 63 c1 movslq %ecx,%rax 0.00 : 3b0b1: 48 39 c7 cmp %rax,%rdi 0.00 : 3b0b4: 0f 9f c0 setg %al 0.00 : 3b0b7: 0f b6 c0 movzbl %al,%eax 0.00 : 3b0ba: 48 8b 8c fc 70 01 00 mov 0x170(%rsp,%rdi,8),%rcx 0.00 : 3b0c1: 00 0.00 : 3b0c2: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b0c6: 83 ee 01 sub $0x1,%esi 0.00 : 3b0c9: 48 63 f6 movslq %esi,%rsi 0.00 : 3b0cc: 41 89 c1 mov %eax,%r9d 0.00 : 3b0cf: 4c 89 ff mov %r15,%rdi 0.00 : 3b0d2: e8 19 ef ff ff callq 39ff0 0.00 : 3b0d7: e9 67 f2 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b0dc: 4c 89 d8 mov %r11,%rax 0.00 : 3b0df: 48 f7 d8 neg %rax 0.00 : 3b0e2: 48 39 d0 cmp %rdx,%rax 0.00 : 3b0e5: 48 0f 4c c2 cmovl %rdx,%rax 0.00 : 3b0e9: e9 c3 f6 ff ff jmpq 3a7b1 <__GI_____strtod_l_internal+0x5a1> 0.00 : 3b0ee: 40 0f be c6 movsbl %sil,%eax 0.00 : 3b0f2: 83 e8 30 sub $0x30,%eax 0.00 : 3b0f5: 48 63 d0 movslq %eax,%rdx 0.00 : 3b0f8: 48 39 da cmp %rbx,%rdx 0.00 : 3b0fb: 0f 8e a0 f8 ff ff jle 3a9a1 <__GI_____strtod_l_internal+0x791> 0.00 : 3b101: 49 83 c2 01 add $0x1,%r10 0.00 : 3b105: 0f 84 ad 07 00 00 je 3b8b8 <__GI_____strtod_l_internal+0x16a8> 0.00 : 3b10b: 48 8b 15 26 6d 33 00 mov 0x336d26(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3b112: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3b119: 00 00 0.00 : 3b11b: 45 85 db test %r11d,%r11d 0.00 : 3b11e: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3b125: 0f 85 8d 07 00 00 jne 3b8b8 <__GI_____strtod_l_internal+0x16a8> 0.00 : 3b12b: 44 8b 6c 24 70 mov 0x70(%rsp),%r13d 0.00 : 3b130: 48 ba 00 00 00 00 00 movabs $0x7ff0000000000000,%rdx 0.00 : 3b137: 00 f0 7f 0.00 : 3b13a: 45 85 ed test %r13d,%r13d 0.00 : 3b13d: 74 11 je 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b13f: 48 ba 00 00 00 00 00 movabs $0xfff0000000000000,%rdx 0.00 : 3b146: 00 f0 ff 0.00 : 3b149: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b150: 49 83 c0 01 add $0x1,%r8 0.00 : 3b154: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 3b158: 83 e8 30 sub $0x30,%eax 0.00 : 3b15b: 3c 09 cmp $0x9,%al 0.00 : 3b15d: 76 f1 jbe 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b15f: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3b165: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 3b16a: f2 0f 10 44 24 18 movsd 0x18(%rsp),%xmm0 0.00 : 3b170: 0f 84 cd f1 ff ff je 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b176: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : 3b17b: 4c 89 01 mov %r8,(%rcx) 0.00 : 3b17e: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 3b183: f2 0f 10 44 24 18 movsd 0x18(%rsp),%xmm0 0.00 : 3b189: e9 b5 f1 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b18e: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3b195: 00 0.00 : 3b196: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b19a: 48 8d bc 24 20 02 00 lea 0x220(%rsp),%rdi 0.00 : 3b1a1: 00 0.00 : 3b1a2: 45 31 c9 xor %r9d,%r9d 0.00 : 3b1a5: 45 31 c0 xor %r8d,%r8d 0.00 : 3b1a8: 31 c9 xor %ecx,%ecx 0.00 : 3b1aa: e8 41 ee ff ff callq 39ff0 0.00 : 3b1af: e9 8f f1 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b1b4: be 37 00 00 00 mov $0x37,%esi 4.17 : 3b1b9: 2b b4 24 84 00 00 00 sub 0x84(%rsp),%esi 0.00 : 3b1c0: ba 56 55 55 55 mov $0x55555556,%edx 0.00 : 3b1c5: 48 8b 9c 24 c8 00 00 mov 0xc8(%rsp),%rbx 0.00 : 3b1cc: 00 0.00 : 3b1cd: c7 84 24 ac 00 00 00 movl $0x0,0xac(%rsp) 0.00 : 3b1d4: 00 00 00 00 0.00 : 3b1d8: 89 f0 mov %esi,%eax 0.00 : 3b1da: c1 fe 1f sar $0x1f,%esi 0.00 : 3b1dd: f7 ea imul %edx 0.00 : 3b1df: 29 f2 sub %esi,%edx 0.00 : 3b1e1: 48 63 d2 movslq %edx,%rdx 0.00 : 3b1e4: 48 8d 44 13 02 lea 0x2(%rbx,%rdx,1),%rax 0.00 : 3b1e9: 48 39 c5 cmp %rax,%rbp 0.00 : 3b1ec: 7e 0e jle 3b1fc <__GI_____strtod_l_internal+0xfec> 0.00 : 3b1ee: 48 89 c5 mov %rax,%rbp 0.00 : 3b1f1: c7 84 24 ac 00 00 00 movl $0x1,0xac(%rsp) 0.00 : 3b1f8: 01 00 00 00 0.00 : 3b1fc: 2b ac 24 c8 00 00 00 sub 0xc8(%rsp),%ebp 0.00 : 3b203: 48 8d b4 24 d0 00 00 lea 0xd0(%rsp),%rsi 0.00 : 3b20a: 00 0.00 : 3b20b: 48 8d 84 24 70 01 00 lea 0x170(%rsp),%rax 0.00 : 3b212: 00 0.00 : 3b213: 4c 8d 2d e6 95 0f 00 lea 0xf95e6(%rip),%r13 # 134800 <_fpioconst_pow10> 0.00 : 3b21a: 48 c7 44 24 78 00 00 movq $0x0,0x78(%rsp) 0.00 : 3b221: 00 00 0.00 : 3b223: 48 89 74 24 28 mov %rsi,0x28(%rsp) 0.00 : 3b228: 48 89 b4 24 b0 00 00 mov %rsi,0xb0(%rsp) 0.00 : 3b22f: 00 0.00 : 3b230: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 3b235: 48 89 84 24 b8 00 00 mov %rax,0xb8(%rsp) 0.00 : 3b23c: 00 0.00 : 3b23d: 41 89 ef mov %ebp,%r15d 0.00 : 3b240: 89 6c 24 64 mov %ebp,0x64(%rsp) 0.00 : 3b244: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 3b249: 41 29 cf sub %ecx,%r15d 0.00 : 3b24c: eb 40 jmp 3b28e <__GI_____strtod_l_internal+0x107e> 0.00 : 3b24e: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 3b252: 48 8d 0d a7 87 0f 00 lea 0xf87a7(%rip),%rcx # 133a00 <__tens> 0.00 : 3b259: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 3b260: 00 0.00 : 3b261: 48 83 e8 01 sub $0x1,%rax 0.00 : 3b265: 48 89 44 24 78 mov %rax,0x78(%rsp) 0.00 : 3b26a: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 3b26e: 48 89 c2 mov %rax,%rdx 0.00 : 3b271: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 3b275: 48 8d 74 f1 08 lea 0x8(%rcx,%rsi,8),%rsi 0.00 : 3b27a: e8 d1 94 04 00 callq 84750 0.00 : 3b27f: 45 85 ff test %r15d,%r15d 0.00 : 3b282: 0f 84 99 00 00 00 je 3b321 <__GI_____strtod_l_internal+0x1111> 0.00 : 3b288: 01 ed add %ebp,%ebp 0.00 : 3b28a: 49 83 c5 18 add $0x18,%r13 0.00 : 3b28e: 41 85 ef test %ebp,%r15d 0.00 : 3b291: 74 ec je 3b27f <__GI_____strtod_l_internal+0x106f> 0.00 : 3b293: 41 31 ef xor %ebp,%r15d 0.00 : 3b296: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 3b29c: 74 b0 je 3b24e <__GI_____strtod_l_internal+0x103e> 0.00 : 3b29e: 49 8b 5d 08 mov 0x8(%r13),%rbx 0.00 : 3b2a2: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 3b2a6: 48 8d 05 53 87 0f 00 lea 0xf8753(%rip),%rax # 133a00 <__tens> 0.00 : 3b2ad: 4c 8b 44 24 78 mov 0x78(%rsp),%r8 0.00 : 3b2b2: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : 3b2b9: 00 0.00 : 3b2ba: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 3b2c1: 00 0.00 : 3b2c2: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3b2c6: 48 8d 74 f0 08 lea 0x8(%rax,%rsi,8),%rsi 0.00 : 3b2cb: 48 89 da mov %rbx,%rdx 0.00 : 3b2ce: e8 ed 73 00 00 callq 426c0 <__mpn_mul> 0.00 : 3b2d3: 48 01 5c 24 78 add %rbx,0x78(%rsp) 0.00 : 3b2d8: 48 85 c0 test %rax,%rax 0.00 : 3b2db: 0f 84 4a 05 00 00 je 3b82b <__GI_____strtod_l_internal+0x161b> 0.00 : 3b2e1: 48 8b 84 24 b8 00 00 mov 0xb8(%rsp),%rax 0.00 : 3b2e8: 00 0.00 : 3b2e9: 48 8b 94 24 b0 00 00 mov 0xb0(%rsp),%rdx 0.00 : 3b2f0: 00 0.00 : 3b2f1: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) 0.00 : 3b2f8: 00 0.00 : 3b2f9: 48 89 94 24 b8 00 00 mov %rdx,0xb8(%rsp) 0.00 : 3b300: 00 0.00 : 3b301: e9 79 ff ff ff jmpq 3b27f <__GI_____strtod_l_internal+0x106f> 0.00 : 3b306: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 3b30d: 00 00 80 0.00 : 3b310: 48 03 84 24 30 02 00 add 0x230(%rsp),%rax 0.00 : 3b317: 00 0.00 : 3b318: 48 c1 e8 02 shr $0x2,%rax 0.00 : 3b31c: e9 35 f4 ff ff jmpq 3a756 <__GI_____strtod_l_internal+0x546> 0.00 : 3b321: 48 8b 5c 24 38 mov 0x38(%rsp),%rbx 0.00 : 3b326: 48 39 9c 24 b0 00 00 cmp %rbx,0xb0(%rsp) 0.00 : 3b32d: 00 0.00 : 3b32e: 0f 84 ec 0e 00 00 je 3c220 <__GI_____strtod_l_internal+0x2010> 0.00 : 3b334: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : 3b33b: 00 0.00 : 3b33c: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : 3b341: 48 8d 8c 24 38 02 00 lea 0x238(%rsp),%rcx 0.00 : 3b348: 00 0.00 : 3b349: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 3b34e: 4c 8d 84 24 30 02 00 lea 0x230(%rsp),%r8 0.00 : 3b355: 00 0.00 : 3b356: 4d 89 f1 mov %r14,%r9 0.00 : 3b359: 4c 89 e7 mov %r12,%rdi 0.00 : 3b35c: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 3b361: 8b 74 24 64 mov 0x64(%rsp),%esi 0.00 : 3b365: 48 89 04 24 mov %rax,(%rsp) 4.17 : 3b369: e8 92 e9 ff ff callq 39d00 0.00 : 3b36e: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 4.17 : 3b373: 48 83 ea 01 sub $0x1,%rdx 0.00 : 3b377: 48 89 54 24 68 mov %rdx,0x68(%rsp) 0.00 : 3b37c: 48 0f bd 9c d4 d0 00 bsr 0xd0(%rsp,%rdx,8),%rbx 0.00 : 3b383: 00 00 ??:0 8.33 : 3b385: 48 83 f3 3f xor $0x3f,%rbx 0.00 : 3b389: 85 db test %ebx,%ebx 0.00 : 3b38b: 7e 4f jle 3b3dc <__GI_____strtod_l_internal+0x11cc> 0.00 : 3b38d: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 3b392: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 3b397: 89 d9 mov %ebx,%ecx 0.00 : 3b399: 48 89 f7 mov %rsi,%rdi 0.00 : 3b39c: e8 ef 71 00 00 callq 42590 <__mpn_lshift> 0.00 : 3b3a1: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b3a6: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3b3ad: 00 0.00 : 3b3ae: 89 d9 mov %ebx,%ecx 0.00 : 3b3b0: 48 89 f7 mov %rsi,%rdi ??:0 4.17 : 3b3b3: e8 d8 71 00 00 callq 42590 <__mpn_lshift> 0.00 : 3b3b8: 48 85 c0 test %rax,%rax 0.00 : 3b3bb: 48 89 c2 mov %rax,%rdx 0.00 : 3b3be: 74 1c je 3b3dc <__GI_____strtod_l_internal+0x11cc> 0.00 : 3b3c0: 48 8b 84 24 38 02 00 mov 0x238(%rsp),%rax 0.00 : 3b3c7: 00 0.00 : 3b3c8: 48 89 94 c4 70 01 00 mov %rdx,0x170(%rsp,%rax,8) 0.00 : 3b3cf: 00 0.00 : 3b3d0: 48 83 c0 01 add $0x1,%rax 0.00 : 3b3d4: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3b3db: 00 0.00 : 3b3dc: 4c 63 bc 24 84 00 00 movslq 0x84(%rsp),%r15 0.00 : 3b3e3: 00 0.00 : 3b3e4: 48 83 7c 24 78 01 cmpq $0x1,0x78(%rsp) 0.00 : 3b3ea: 4c 89 bc 24 30 02 00 mov %r15,0x230(%rsp) 0.00 : 3b3f1: 00 0.00 : 3b3f2: 0f 84 d0 09 00 00 je 3bdc8 <__GI_____strtod_l_internal+0x1bb8> 0.00 : 3b3f8: 48 83 7c 24 78 02 cmpq $0x2,0x78(%rsp) 0.00 : 3b3fe: 0f 84 7c 06 00 00 je 3ba80 <__GI_____strtod_l_internal+0x1870> 0.00 : 3b404: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3b40b: 00 0.00 : 3b40c: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 3b411: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 3b416: 4c 8b 74 24 78 mov 0x78(%rsp),%r14 0.00 : 3b41b: 48 8b 4c 24 68 mov 0x68(%rsp),%rcx 0.00 : 3b420: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 3b425: 48 29 d6 sub %rdx,%rsi 0.00 : 3b428: 48 8d 34 f3 lea (%rbx,%rsi,8),%rsi 0.00 : 3b42c: 49 83 ee 02 sub $0x2,%r14 0.00 : 3b430: 4c 8b a4 cc d0 00 00 mov 0xd0(%rsp,%rcx,8),%r12 0.00 : 3b437: 00 0.00 : 3b438: 4e 8b ac f4 d0 00 00 mov 0xd0(%rsp,%r14,8),%r13 0.00 : 3b43f: 00 0.00 : 3b440: e8 bb 6b 00 00 callq 42000 <__mpn_cmp> 0.00 : 3b445: 85 c0 test %eax,%eax 0.00 : 3b447: 7e 20 jle 3b469 <__GI_____strtod_l_internal+0x1259> 0.00 : 3b449: 48 8b 84 24 38 02 00 mov 0x238(%rsp),%rax 0.00 : 3b450: 00 0.00 : 3b451: 48 c7 84 c4 70 01 00 movq $0x0,0x170(%rsp,%rax,8) 0.00 : 3b458: 00 00 00 00 00 0.00 : 3b45d: 48 83 c0 01 add $0x1,%rax 0.00 : 3b461: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3b468: 00 0.00 : 3b469: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3b470: 00 0.00 : 3b471: 4c 39 44 24 78 cmp %r8,0x78(%rsp) 0.00 : 3b476: 0f 8e ee 0a 00 00 jle 3bf6a <__GI_____strtod_l_internal+0x1d5a> 0.00 : 3b47c: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : 3b481: 8b 94 24 84 00 00 00 mov 0x84(%rsp),%edx 0.00 : 3b488: 4c 29 c3 sub %r8,%rbx 0.00 : 3b48b: 85 d2 test %edx,%edx 0.00 : 3b48d: 0f 8e ed 0d 00 00 jle 3c280 <__GI_____strtod_l_internal+0x2070> 0.00 : 3b493: 48 89 dd mov %rbx,%rbp 0.00 : 3b496: 48 c1 e5 06 shl $0x6,%rbp 0.00 : 3b49a: 4a 8d 44 3d 00 lea 0x0(%rbp,%r15,1),%rax 0.00 : 3b49f: 48 83 f8 35 cmp $0x35,%rax 0.00 : 3b4a3: 0f 8f 92 0d 00 00 jg 3c23b <__GI_____strtod_l_internal+0x202b> 0.00 : 3b4a9: 48 83 fb 01 cmp $0x1,%rbx 0.00 : 3b4ad: 0f 85 49 10 00 00 jne 3c4fc <__GI_____strtod_l_internal+0x22ec> 0.00 : 3b4b3: 48 c7 84 24 20 02 00 movq $0x0,0x220(%rsp) 0.00 : 3b4ba: 00 00 00 00 00 0.00 : 3b4bf: c7 84 24 c4 00 00 00 movl $0x0,0xc4(%rsp) 0.00 : 3b4c6: 00 00 00 00 0.00 : 3b4ca: 01 ac 24 84 00 00 00 add %ebp,0x84(%rsp) 0.00 : 3b4d1: 45 85 c0 test %r8d,%r8d 0.00 : 3b4d4: 44 89 c2 mov %r8d,%edx 0.00 : 3b4d7: 7e 29 jle 3b502 <__GI_____strtod_l_internal+0x12f2> 0.00 : 3b4d9: 49 63 c0 movslq %r8d,%rax 0.00 : 3b4dc: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b4e1: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 3b4e5: 48 8d 0c c6 lea (%rsi,%rax,8),%rcx 0.00 : 3b4e9: 83 ea 01 sub $0x1,%edx 0.00 : 3b4ec: 48 63 c2 movslq %edx,%rax 0.00 : 3b4ef: 48 8b 84 c4 70 01 00 mov 0x170(%rsp,%rax,8),%rax 0.00 : 3b4f6: 00 0.00 : 3b4f7: 48 89 01 mov %rax,(%rcx) 0.00 : 3b4fa: 48 83 e9 08 sub $0x8,%rcx 0.00 : 3b4fe: 85 d2 test %edx,%edx 0.00 : 3b500: 75 e7 jne 3b4e9 <__GI_____strtod_l_internal+0x12d9> 0.00 : 3b502: 48 85 db test %rbx,%rbx 0.00 : 3b505: 78 18 js 3b51f <__GI_____strtod_l_internal+0x130f> 0.00 : 3b507: 31 c0 xor %eax,%eax 0.00 : 3b509: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 3b50e: 48 c7 04 c2 00 00 00 movq $0x0,(%rdx,%rax,8) 0.00 : 3b515: 00 0.00 : 3b516: 48 83 c0 01 add $0x1,%rax 0.00 : 3b51a: 48 39 c3 cmp %rax,%rbx 0.00 : 3b51d: 7d ea jge 3b509 <__GI_____strtod_l_internal+0x12f9> 0.00 : 3b51f: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : 3b524: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b52b: 00 0.00 : 3b52c: 48 8d 59 01 lea 0x1(%rcx),%rbx 0.00 : 3b530: 48 c7 84 cc d0 00 00 movq $0x0,0xd0(%rsp,%rcx,8) 0.00 : 3b537: 00 00 00 00 00 0.00 : 3b53c: 48 8b bc cc 70 01 00 mov 0x170(%rsp,%rcx,8),%rdi 0.00 : 3b543: 00 0.00 : 3b544: 48 89 5c 24 30 mov %rbx,0x30(%rsp) 0.00 : 3b549: 31 db xor %ebx,%ebx 0.00 : 3b54b: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3b552: 35 0.00 : 3b553: 0f 8f 45 01 00 00 jg 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b559: 8b 6c 24 78 mov 0x78(%rsp),%ebp 0.00 : 3b55d: 41 bf 40 00 00 00 mov $0x40,%r15d 0.00 : 3b563: 83 ed 01 sub $0x1,%ebp 0.00 : 3b566: 4c 39 e7 cmp %r12,%rdi 0.00 : 3b569: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 3b570: 74 56 je 3b5c8 <__GI_____strtod_l_internal+0x13b8> 0.00 : 3b572: 48 8b 74 24 68 mov 0x68(%rsp),%rsi 0.00 : 3b577: 48 89 fa mov %rdi,%rdx 0.00 : 3b57a: 48 8b 84 f4 70 01 00 mov 0x170(%rsp,%rsi,8),%rax 0.00 : 3b581: 00 0.00 : 3b582: 49 f7 f4 div %r12 0.00 : 3b585: 48 89 c3 mov %rax,%rbx 0.00 : 3b588: 48 89 d7 mov %rdx,%rdi 0.00 : 3b58b: 4c 89 e8 mov %r13,%rax 0.00 : 3b58e: 48 f7 e3 mul %rbx 0.00 : 3b591: 48 89 d6 mov %rdx,%rsi 0.00 : 3b594: 48 89 c1 mov %rax,%rcx 0.00 : 3b597: eb 15 jmp 3b5ae <__GI_____strtod_l_internal+0x139e> 0.00 : 3b599: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b5a0: 31 c0 xor %eax,%eax 0.00 : 3b5a2: 4c 39 e9 cmp %r13,%rcx 0.00 : 3b5a5: 0f 92 c0 setb %al 0.00 : 3b5a8: 4c 29 e9 sub %r13,%rcx 0.00 : 3b5ab: 48 29 c6 sub %rax,%rsi 0.00 : 3b5ae: 48 39 fe cmp %rdi,%rsi 0.00 : 3b5b1: 77 0c ja 3b5bf <__GI_____strtod_l_internal+0x13af> 0.00 : 3b5b3: 75 13 jne 3b5c8 <__GI_____strtod_l_internal+0x13b8> 0.00 : 3b5b5: 4a 3b 8c f4 70 01 00 cmp 0x170(%rsp,%r14,8),%rcx 0.00 : 3b5bc: 00 0.00 : 3b5bd: 76 09 jbe 3b5c8 <__GI_____strtod_l_internal+0x13b8> 0.00 : 3b5bf: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3b5c3: 4c 01 e7 add %r12,%rdi 0.00 : 3b5c6: 73 d8 jae 3b5a0 <__GI_____strtod_l_internal+0x1390> 0.00 : 3b5c8: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 3b5cd: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 3b5d2: 48 89 d9 mov %rbx,%rcx 0.00 : 3b5d5: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 3b5da: e8 81 7f 00 00 callq 43560 <__mpn_submul_1> 0.00 : 3b5df: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : 3b5e4: 48 3b 84 cc 70 01 00 cmp 0x170(%rsp,%rcx,8),%rax 0.00 : 3b5eb: 00 0.00 : 3b5ec: 74 1f je 3b60d <__GI_____strtod_l_internal+0x13fd> 0.00 : 3b5ee: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b5f3: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 3b5f8: 48 89 f7 mov %rsi,%rdi 0.00 : 3b5fb: e8 90 69 00 00 callq 41f90 <__mpn_add_n> 0.00 : 3b600: 48 85 c0 test %rax,%rax 0.00 : 3b603: 0f 84 db 0c 00 00 je 3c2e4 <__GI_____strtod_l_internal+0x20d4> 0.00 : 3b609: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3b60d: 48 8b 74 24 68 mov 0x68(%rsp),%rsi 0.00 : 3b612: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : 3b617: 85 ed test %ebp,%ebp 0.00 : 3b619: 48 8b bc f4 70 01 00 mov 0x170(%rsp,%rsi,8),%rdi 0.00 : 3b620: 00 0.00 : 3b621: 48 89 bc c4 70 01 00 mov %rdi,0x170(%rsp,%rax,8) 0.00 : 3b628: 00 0.00 : 3b629: 89 e8 mov %ebp,%eax 0.00 : 3b62b: 7e 32 jle 3b65f <__GI_____strtod_l_internal+0x144f> 0.00 : 3b62d: 31 c9 xor %ecx,%ecx 0.00 : 3b62f: eb 09 jmp 3b63a <__GI_____strtod_l_internal+0x142a> 0.00 : 3b631: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b638: 89 f0 mov %esi,%eax 0.00 : 3b63a: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 3b63d: 48 63 d0 movslq %eax,%rdx 0.00 : 3b640: 48 83 c1 01 add $0x1,%rcx 0.00 : 3b644: 48 63 c6 movslq %esi,%rax 0.00 : 3b647: 48 8b 84 c4 70 01 00 mov 0x170(%rsp,%rax,8),%rax 0.00 : 3b64e: 00 0.00 : 3b64f: 48 89 84 d4 70 01 00 mov %rax,0x170(%rsp,%rdx,8) 0.00 : 3b656: 00 0.00 : 3b657: 89 e8 mov %ebp,%eax 0.00 : 3b659: 29 c8 sub %ecx,%eax 0.00 : 3b65b: 85 c0 test %eax,%eax 0.00 : 3b65d: 7f d9 jg 3b638 <__GI_____strtod_l_internal+0x1428> 0.00 : 3b65f: 8b 84 24 84 00 00 00 mov 0x84(%rsp),%eax 0.00 : 3b666: 85 c0 test %eax,%eax 0.00 : 3b668: 0f 85 b4 00 00 00 jne 3b722 <__GI_____strtod_l_internal+0x1512> 0.00 : 3b66e: 48 85 db test %rbx,%rbx 0.00 : 3b671: 0f 85 1c 01 00 00 jne 3b793 <__GI_____strtod_l_internal+0x1583> 0.00 : 3b677: 48 83 ac 24 30 02 00 subq $0x40,0x230(%rsp) 0.00 : 3b67e: 00 40 0.00 : 3b680: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3b687: 35 0.00 : 3b688: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3b68f: 00 0.00 : 3b690: 0f 8e d0 fe ff ff jle 3b566 <__GI_____strtod_l_internal+0x1356> 0.00 : 3b696: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b69d: 00 0.00 : 3b69e: 44 8b 4c 24 78 mov 0x78(%rsp),%r9d 0.00 : 3b6a3: 49 63 c1 movslq %r9d,%rax 0.00 : 3b6a6: 48 83 bc c4 70 01 00 cmpq $0x0,0x170(%rsp,%rax,8) 0.00 : 3b6ad: 00 00 0.00 : 3b6af: 75 31 jne 3b6e2 <__GI_____strtod_l_internal+0x14d2> 0.00 : 3b6b1: 45 85 c9 test %r9d,%r9d 0.00 : 3b6b4: 78 2c js 3b6e2 <__GI_____strtod_l_internal+0x14d2> 0.00 : 3b6b6: 44 89 c9 mov %r9d,%ecx 0.00 : 3b6b9: 31 ff xor %edi,%edi 0.00 : 3b6bb: 83 e9 01 sub $0x1,%ecx 0.00 : 3b6be: 41 83 e9 01 sub $0x1,%r9d 0.00 : 3b6c2: 49 63 c1 movslq %r9d,%rax 0.00 : 3b6c5: 48 83 bc c4 70 01 00 cmpq $0x0,0x170(%rsp,%rax,8) 0.00 : 3b6cc: 00 00 0.00 : 3b6ce: 89 c8 mov %ecx,%eax 0.00 : 3b6d0: 0f 94 c2 sete %dl 0.00 : 3b6d3: 29 f8 sub %edi,%eax 0.00 : 3b6d5: 48 83 c7 01 add $0x1,%rdi 0.00 : 3b6d9: f7 d0 not %eax 0.00 : 3b6db: c1 e8 1f shr $0x1f,%eax 0.00 : 3b6de: 84 c2 test %al,%dl 0.00 : 3b6e0: 75 dc jne 3b6be <__GI_____strtod_l_internal+0x14ae> 0.00 : 3b6e2: 41 f7 d1 not %r9d 0.00 : 3b6e5: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3b6eb: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3b6f2: 00 0.00 : 3b6f3: 41 c1 e9 1f shr $0x1f,%r9d 0.00 : 3b6f7: 44 2b 84 24 c4 00 00 sub 0xc4(%rsp),%r8d 0.00 : 3b6fe: 00 0.00 : 3b6ff: 44 0b 8c 24 ac 00 00 or 0xac(%rsp),%r9d 0.00 : 3b706: 00 0.00 : 3b707: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3b70b: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b70f: 4d 63 c0 movslq %r8d,%r8 4.17 : 3b712: 48 89 d9 mov %rbx,%rcx 0.00 : 3b715: 4c 89 ff mov %r15,%rdi 0.00 : 3b718: e8 d3 e8 ff ff callq 39ff0 0.00 : 3b71d: e9 21 ec ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b722: 83 bc 24 84 00 00 00 cmpl $0xfffffff6,0x84(%rsp) 0.00 : 3b729: f6 0.00 : 3b72a: 7d 15 jge 3b741 <__GI_____strtod_l_internal+0x1531> 0.00 : 3b72c: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3b733: 00 0.00 : 3b734: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3b73b: 40 0.00 : 3b73c: e9 25 fe ff ff jmpq 3b566 <__GI_____strtod_l_internal+0x1356> 0.00 : 3b741: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3b746: 2b 84 24 84 00 00 00 sub 0x84(%rsp),%eax 0.00 : 3b74d: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b754: 00 0.00 : 3b755: 89 84 24 c4 00 00 00 mov %eax,0xc4(%rsp) 0.00 : 3b75c: 0f 84 3c ff ff ff je 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b762: 89 c1 mov %eax,%ecx 0.00 : 3b764: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3b769: 4c 89 fe mov %r15,%rsi 0.00 : 3b76c: 4c 89 ff mov %r15,%rdi 0.00 : 3b76f: e8 1c 6e 00 00 callq 42590 <__mpn_lshift> 0.00 : 3b774: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3b779: 2b 8c 24 c4 00 00 00 sub 0xc4(%rsp),%ecx 0.00 : 3b780: 48 89 d8 mov %rbx,%rax 0.00 : 3b783: 48 d3 e8 shr %cl,%rax 0.00 : 3b786: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3b78d: 00 0.00 : 3b78e: e9 0b ff ff ff jmpq 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b793: 48 0f bd c3 bsr %rbx,%rax 0.00 : 3b797: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3b79c: 89 c2 mov %eax,%edx 0.00 : 3b79e: 83 f2 3f xor $0x3f,%edx 0.00 : 3b7a1: 48 63 c2 movslq %edx,%rax 0.00 : 3b7a4: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3b7ab: 00 0.00 : 3b7ac: 44 89 f8 mov %r15d,%eax 0.00 : 3b7af: 29 d0 sub %edx,%eax 0.00 : 3b7b1: 83 f8 35 cmp $0x35,%eax 0.00 : 3b7b4: 0f 8e 54 0c 00 00 jle 3c40e <__GI_____strtod_l_internal+0x21fe> 0.00 : 3b7ba: 83 c2 35 add $0x35,%edx 0.00 : 3b7bd: 48 89 d8 mov %rbx,%rax 0.00 : 3b7c0: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b7c7: 00 0.00 : 3b7c8: 29 d1 sub %edx,%ecx 0.00 : 3b7ca: 89 94 24 c4 00 00 00 mov %edx,0xc4(%rsp) 0.00 : 3b7d1: 48 d3 e8 shr %cl,%rax 0.00 : 3b7d4: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3b7db: 00 0.00 : 3b7dc: e9 bd fe ff ff jmpq 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b7e1: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 3b7e6: 48 89 d0 mov %rdx,%rax 0.00 : 3b7e9: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3b7f0: 00 0.00 : 3b7f1: 44 29 c1 sub %r8d,%ecx 0.00 : 3b7f4: 48 8d bc 24 20 02 00 lea 0x220(%rsp),%rdi 0.00 : 3b7fb: 00 0.00 : 3b7fc: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 3b802: 48 d3 e8 shr %cl,%rax 0.00 : 3b805: 41 8d 48 3d lea 0x3d(%r8),%ecx 0.00 : 3b809: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3b80f: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3b816: 00 0.00 : 3b817: 48 d3 e2 shl %cl,%rdx 0.00 : 3b81a: 48 89 d1 mov %rdx,%rcx 0.00 : 3b81d: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b821: e8 ca e7 ff ff callq 39ff0 0.00 : 3b826: e9 18 eb ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b82b: 48 8b 84 24 b8 00 00 mov 0xb8(%rsp),%rax 0.00 : 3b832: 00 0.00 : 3b833: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : 3b83a: 00 0.00 : 3b83b: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 3b841: 48 89 8c 24 b8 00 00 mov %rcx,0xb8(%rsp) 0.00 : 3b848: 00 0.00 : 3b849: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) 0.00 : 3b850: 00 0.00 : 3b851: e9 29 fa ff ff jmpq 3b27f <__GI_____strtod_l_internal+0x106f> 0.00 : 3b856: 40 80 ff 70 cmp $0x70,%dil 0.00 : 3b85a: 0f 85 80 eb ff ff jne 3a3e0 <__GI_____strtod_l_internal+0x1d0> 0.00 : 3b860: 4c 39 ed cmp %r13,%rbp 0.00 : 3b863: 0f 85 27 ec ff ff jne 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3b869: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b870: e9 6b eb ff ff jmpq 3a3e0 <__GI_____strtod_l_internal+0x1d0> 0.00 : 3b875: 0f 1f 00 nopl (%rax) 0.00 : 3b878: 4d 85 ff test %r15,%r15 0.00 : 3b87b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3b880: 0f 84 ae 01 00 00 je 3ba34 <__GI_____strtod_l_internal+0x1824> 0.00 : 3b886: 4d 85 d2 test %r10,%r10 0.00 : 3b889: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b890: 0f 84 d4 05 00 00 je 3be6a <__GI_____strtod_l_internal+0x1c5a> 0.00 : 3b896: 48 8d 0d 33 70 10 00 lea 0x107033(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3b89d: 48 8d 35 7c f3 0f 00 lea 0xff37c(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3b8a4: 48 8d 3d ad 29 10 00 lea 0x1029ad(%rip),%rdi # 13e258 <__PRETTY_FUNCTION__.11129+0x87f> 0.00 : 3b8ab: ba 4f 03 00 00 mov $0x34f,%edx 0.00 : 3b8b0: e8 6b 00 ff ff callq 2b920 <__assert_fail> 0.00 : 3b8b5: 0f 1f 00 nopl (%rax) 0.00 : 3b8b8: 44 8b 74 24 70 mov 0x70(%rsp),%r14d 0.00 : 3b8bd: 48 ba 00 00 00 00 00 movabs $0x8000000000000000,%rdx 0.00 : 3b8c4: 00 00 80 0.00 : 3b8c7: 45 85 f6 test %r14d,%r14d 0.00 : 3b8ca: 0f 85 80 f8 ff ff jne 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b8d0: 31 d2 xor %edx,%edx 0.00 : 3b8d2: e9 79 f8 ff ff jmpq 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b8d7: 48 3b ac 24 c8 00 00 cmp 0xc8(%rsp),%rbp 0.00 : 3b8de: 00 0.00 : 3b8df: 0f 85 c1 04 00 00 jne 3bda6 <__GI_____strtod_l_internal+0x1b96> 0.00 : 3b8e5: 8d 6e ff lea -0x1(%rsi),%ebp 0.00 : 3b8e8: 89 ea mov %ebp,%edx 0.00 : 3b8ea: c1 fa 1f sar $0x1f,%edx 0.00 : 3b8ed: c1 ea 1a shr $0x1a,%edx 0.00 : 3b8f0: 8d 44 15 00 lea 0x0(%rbp,%rdx,1),%eax 0.00 : 3b8f4: 83 e0 3f and $0x3f,%eax 0.00 : 3b8f7: 29 d0 sub %edx,%eax 0.00 : 3b8f9: 48 98 cltq 0.00 : 3b8fb: 48 83 f8 34 cmp $0x34,%rax 0.00 : 3b8ff: 0f 84 5b 0a 00 00 je 3c360 <__GI_____strtod_l_internal+0x2150> 0.00 : 3b905: 48 83 f8 33 cmp $0x33,%rax 0.00 : 3b909: 0f 8e ad 08 00 00 jle 3c1bc <__GI_____strtod_l_internal+0x1fac> 0.00 : 3b90f: 4d 85 c0 test %r8,%r8 0.00 : 3b912: 0f 8f 07 0b 00 00 jg 3c41f <__GI_____strtod_l_internal+0x220f> 0.00 : 3b918: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b91f: 00 0.00 : 3b920: bf 01 00 00 00 mov $0x1,%edi 0.00 : 3b925: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b92a: 4c 29 c7 sub %r8,%rdi 0.00 : 3b92d: 8d 48 cc lea -0x34(%rax),%ecx 0.00 : 3b930: 4c 89 c2 mov %r8,%rdx 0.00 : 3b933: 49 8d 3c ff lea (%r15,%rdi,8),%rdi 0.00 : 3b937: e8 c4 6c 00 00 callq 42600 <__mpn_rshift> 0.00 : 3b93c: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3b943: 00 0.00 : 3b944: 4a 8d 14 c5 00 00 00 lea 0x0(,%r8,8),%rdx 0.00 : 3b94b: 00 0.00 : 3b94c: 48 f7 da neg %rdx 0.00 : 3b94f: 48 89 84 14 20 02 00 mov %rax,0x220(%rsp,%rdx,1) 0.00 : 3b956: 00 0.00 : 3b957: 4c 89 c2 mov %r8,%rdx 0.00 : 3b95a: 48 f7 da neg %rdx 0.00 : 3b95d: 48 85 d2 test %rdx,%rdx 0.00 : 3b960: 7e 13 jle 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3b962: 31 c0 xor %eax,%eax 0.00 : 3b964: 49 c7 04 c7 00 00 00 movq $0x0,(%r15,%rax,8) 0.00 : 3b96b: 00 0.00 : 3b96c: 48 83 c0 01 add $0x1,%rax 0.00 : 3b970: 48 39 c2 cmp %rax,%rdx 0.00 : 3b973: 7f ef jg 3b964 <__GI_____strtod_l_internal+0x1754> 0.00 : 3b975: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b979: 48 63 f5 movslq %ebp,%rsi 0.00 : 3b97c: 45 31 c9 xor %r9d,%r9d 0.00 : 3b97f: 45 31 c0 xor %r8d,%r8d 0.00 : 3b982: 31 c9 xor %ecx,%ecx 0.00 : 3b984: 4c 89 ff mov %r15,%rdi 0.00 : 3b987: e8 64 e6 ff ff callq 39ff0 0.00 : 3b98c: e9 b2 e9 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b991: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3b997: 0f 84 bb ee ff ff je 3a858 <__GI_____strtod_l_internal+0x648> 0.00 : 3b99d: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 3b9a2: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 3b9a7: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3b9ab: 48 89 0a mov %rcx,(%rdx) 0.00 : 3b9ae: e9 90 e9 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b9b3: 48 63 c6 movslq %esi,%rax 0.00 : 3b9b6: 48 ba 00 00 00 00 00 movabs $0x8000000000000000,%rdx 0.00 : 3b9bd: 00 00 80 0.00 : 3b9c0: 48 29 c2 sub %rax,%rdx 0.00 : 3b9c3: 48 8d 42 03 lea 0x3(%rdx),%rax 0.00 : 3b9c7: 48 85 d2 test %rdx,%rdx 0.00 : 3b9ca: 48 0f 49 c2 cmovns %rdx,%rax 0.00 : 3b9ce: 48 c1 f8 02 sar $0x2,%rax 0.00 : 3b9d2: e9 5e f2 ff ff jmpq 3ac35 <__GI_____strtod_l_internal+0xa25> 0.00 : 3b9d7: 44 8b 64 24 70 mov 0x70(%rsp),%r12d 0.00 : 3b9dc: 48 8b 15 55 64 33 00 mov 0x336455(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3b9e3: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3b9ea: 00 00 0.00 : 3b9ec: 45 85 e4 test %r12d,%r12d 0.00 : 3b9ef: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3b9f6: 0f 84 08 f1 ff ff je 3ab04 <__GI_____strtod_l_internal+0x8f4> 0.00 : 3b9fc: f2 0f 10 05 5c 80 10 movsd 0x10805c(%rip),%xmm0 # 143a60 0.00 : 3ba03: 00 0.00 : 3ba04: e9 3a e9 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3ba09: 4c 89 e2 mov %r12,%rdx 0.00 : 3ba0c: e9 70 ec ff ff jmpq 3a681 <__GI_____strtod_l_internal+0x471> 0.00 : 3ba11: 4d 85 ff test %r15,%r15 0.00 : 3ba14: 0f 88 a1 f3 ff ff js 3adbb <__GI_____strtod_l_internal+0xbab> 0.00 : 3ba1a: b9 35 01 00 00 mov $0x135,%ecx 0.00 : 3ba1f: 4c 29 f9 sub %r15,%rcx 0.00 : 3ba22: 48 85 c9 test %rcx,%rcx 0.00 : 3ba25: 0f 89 0b ef ff ff jns 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ba2b: 31 c9 xor %ecx,%ecx 0.00 : 3ba2d: 31 ff xor %edi,%edi 0.00 : 3ba2f: e9 20 ef ff ff jmpq 3a954 <__GI_____strtod_l_internal+0x744> 0.00 : 3ba34: 49 83 fa ff cmp $0xffffffffffffffff,%r10 0.00 : 3ba38: 0f 84 43 06 00 00 je 3c081 <__GI_____strtod_l_internal+0x1e71> 0.00 : 3ba3e: 48 b8 ff fe ff ff ff movabs $0x1ffffffffffffeff,%rax 0.00 : 3ba45: ff ff 1f 0.00 : 3ba48: 4a 8d 0c 95 03 04 00 lea 0x403(,%r10,4),%rcx 0.00 : 3ba4f: 00 0.00 : 3ba50: 49 39 c2 cmp %rax,%r10 0.00 : 3ba53: 0f 86 dd ee ff ff jbe 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ba59: 48 8d 0d 70 6e 10 00 lea 0x106e70(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3ba60: 48 8d 35 b9 f1 0f 00 lea 0xff1b9(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3ba67: 48 8d 3d 92 2b 10 00 lea 0x102b92(%rip),%rdi # 13e600 <__PRETTY_FUNCTION__.11129+0xc27> 0.00 : 3ba6e: ba 5b 03 00 00 mov $0x35b,%edx 0.00 : 3ba73: e8 a8 fe fe ff callq 2b920 <__assert_fail> 0.00 : 3ba78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3ba7f: 00 0.00 : 3ba80: 48 83 bc 24 38 02 00 cmpq $0x1,0x238(%rsp) 0.00 : 3ba87: 00 01 0.00 : 3ba89: 4c 8b b4 24 d0 00 00 mov 0xd0(%rsp),%r14 0.00 : 3ba90: 00 0.00 : 3ba91: 48 8b ac 24 d8 00 00 mov 0xd8(%rsp),%rbp 0.00 : 3ba98: 00 0.00 : 3ba99: 0f 8f ab 03 00 00 jg 3be4a <__GI_____strtod_l_internal+0x1c3a> 0.00 : 3ba9f: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3baa6: 00 0.00 : 3baa7: 45 31 ed xor %r13d,%r13d 0.00 : 3baaa: 4c 39 e5 cmp %r12,%rbp 0.00 : 3baad: 0f 86 a7 03 00 00 jbe 3be5a <__GI_____strtod_l_internal+0x1c4a> 0.00 : 3bab3: 44 8b 94 24 84 00 00 mov 0x84(%rsp),%r10d 0.00 : 3baba: 00 0.00 : 3babb: 45 85 d2 test %r10d,%r10d 0.00 : 3babe: 0f 8e 04 08 00 00 jle 3c2c8 <__GI_____strtod_l_internal+0x20b8> 0.00 : 3bac4: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3bac9: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3bad0: 00 0.00 : 3bad1: 41 89 c2 mov %eax,%r10d 0.00 : 3bad4: 44 2b 94 24 84 00 00 sub 0x84(%rsp),%r10d 0.00 : 3badb: 00 0.00 : 3badc: 74 25 je 3bb03 <__GI_____strtod_l_internal+0x18f3> 0.00 : 3bade: 44 89 d1 mov %r10d,%ecx 0.00 : 3bae1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3bae6: 4c 89 fe mov %r15,%rsi 0.00 : 3bae9: 4c 89 ff mov %r15,%rdi 0.00 : 3baec: 44 89 54 24 20 mov %r10d,0x20(%rsp) 0.00 : 3baf1: e8 9a 6a 00 00 callq 42590 <__mpn_lshift> 0.00 : 3baf6: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3bafd: 00 0.00 : 3bafe: 44 8b 54 24 20 mov 0x20(%rsp),%r10d 0.00 : 3bb03: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3bb0a: 40 0.00 : 3bb0b: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3bb12: 35 0.00 : 3bb13: 0f 8f 86 07 00 00 jg 3c29f <__GI_____strtod_l_internal+0x208f> 0.00 : 3bb19: 4d 89 e5 mov %r12,%r13 0.00 : 3bb1c: 45 31 e4 xor %r12d,%r12d 0.00 : 3bb1f: 4c 89 f7 mov %r14,%rdi 0.00 : 3bb22: 31 f6 xor %esi,%esi 0.00 : 3bb24: 41 b8 40 00 00 00 mov $0x40,%r8d 0.00 : 3bb2a: 48 f7 df neg %rdi 0.00 : 3bb2d: 49 39 ed cmp %rbp,%r13 0.00 : 3bb30: 0f 84 a3 00 00 00 je 3bbd9 <__GI_____strtod_l_internal+0x19c9> 0.00 : 3bb36: 4c 89 e0 mov %r12,%rax 0.00 : 3bb39: 4c 89 ea mov %r13,%rdx 0.00 : 3bb3c: 48 f7 f5 div %rbp 0.00 : 3bb3f: 48 89 c3 mov %rax,%rbx 0.00 : 3bb42: 49 89 d1 mov %rdx,%r9 0.00 : 3bb45: 4c 89 f0 mov %r14,%rax 0.00 : 3bb48: 48 f7 e3 mul %rbx 0.00 : 3bb4b: 48 89 d1 mov %rdx,%rcx 0.00 : 3bb4e: 66 90 xchg %ax,%ax 0.00 : 3bb50: 4c 39 c9 cmp %r9,%rcx 0.00 : 3bb53: 77 53 ja 3bba8 <__GI_____strtod_l_internal+0x1998> 0.00 : 3bb55: 74 49 je 3bba0 <__GI_____strtod_l_internal+0x1990> 0.00 : 3bb57: 4d 89 cd mov %r9,%r13 0.00 : 3bb5a: 49 89 f4 mov %rsi,%r12 0.00 : 3bb5d: 49 29 c4 sub %rax,%r12 0.00 : 3bb60: 49 19 cd sbb %rcx,%r13 0.00 : 3bb63: 44 8b 8c 24 84 00 00 mov 0x84(%rsp),%r9d 0.00 : 3bb6a: 00 0.00 : 3bb6b: 45 85 c9 test %r9d,%r9d 0.00 : 3bb6e: 75 4a jne 3bbba <__GI_____strtod_l_internal+0x19aa> 0.00 : 3bb70: 48 85 db test %rbx,%rbx 0.00 : 3bb73: 0f 85 03 01 00 00 jne 3bc7c <__GI_____strtod_l_internal+0x1a6c> 0.00 : 3bb79: 48 83 ac 24 30 02 00 subq $0x40,0x230(%rsp) 0.00 : 3bb80: 00 40 0.00 : 3bb82: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3bb89: 35 0.00 : 3bb8a: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3bb91: 00 0.00 : 3bb92: 7e 99 jle 3bb2d <__GI_____strtod_l_internal+0x191d> 0.00 : 3bb94: e9 ad 00 00 00 jmpq 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3bb99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3bba0: 48 85 c0 test %rax,%rax 0.00 : 3bba3: 74 b2 je 3bb57 <__GI_____strtod_l_internal+0x1947> 0.00 : 3bba5: 0f 1f 00 nopl (%rax) 0.00 : 3bba8: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3bbac: 4c 29 f0 sub %r14,%rax 0.00 : 3bbaf: 48 83 d9 00 sbb $0x0,%rcx 0.00 : 3bbb3: 49 01 e9 add %rbp,%r9 0.00 : 3bbb6: 73 98 jae 3bb50 <__GI_____strtod_l_internal+0x1940> 0.00 : 3bbb8: eb 9d jmp 3bb57 <__GI_____strtod_l_internal+0x1947> 0.00 : 3bbba: 83 bc 24 84 00 00 00 cmpl $0xfffffff6,0x84(%rsp) 0.00 : 3bbc1: f6 0.00 : 3bbc2: 7d 3d jge 3bc01 <__GI_____strtod_l_internal+0x19f1> 0.00 : 3bbc4: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3bbcb: 00 0.00 : 3bbcc: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3bbd3: 40 0.00 : 3bbd4: e9 54 ff ff ff jmpq 3bb2d <__GI_____strtod_l_internal+0x191d> 0.00 : 3bbd9: 4d 89 e1 mov %r12,%r9 0.00 : 3bbdc: 4d 01 e9 add %r13,%r9 0.00 : 3bbdf: 0f 83 d5 00 00 00 jae 3bcba <__GI_____strtod_l_internal+0x1aaa> 0.00 : 3bbe5: 4d 29 f1 sub %r14,%r9 0.00 : 3bbe8: 49 89 f4 mov %rsi,%r12 0.00 : 3bbeb: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 3bbf2: 4d 89 cd mov %r9,%r13 0.00 : 3bbf5: 4d 01 f4 add %r14,%r12 0.00 : 3bbf8: 49 83 d5 00 adc $0x0,%r13 0.00 : 3bbfc: e9 62 ff ff ff jmpq 3bb63 <__GI_____strtod_l_internal+0x1953> 0.00 : 3bc01: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3bc06: 41 89 c2 mov %eax,%r10d 0.00 : 3bc09: 44 2b 94 24 84 00 00 sub 0x84(%rsp),%r10d 0.00 : 3bc10: 00 0.00 : 3bc11: 74 33 je 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3bc13: 44 89 d1 mov %r10d,%ecx 0.00 : 3bc16: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3bc1b: 4c 89 fe mov %r15,%rsi 0.00 : 3bc1e: 4c 89 ff mov %r15,%rdi 0.00 : 3bc21: 44 89 54 24 20 mov %r10d,0x20(%rsp) 0.00 : 3bc26: e8 65 69 00 00 callq 42590 <__mpn_lshift> 0.00 : 3bc2b: 44 8b 54 24 20 mov 0x20(%rsp),%r10d 0.00 : 3bc30: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3bc35: 48 89 d8 mov %rbx,%rax 0.00 : 3bc38: 44 29 d1 sub %r10d,%ecx 0.00 : 3bc3b: 48 d3 e8 shr %cl,%rax 0.00 : 3bc3e: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3bc45: 00 0.00 : 3bc46: 8b 8c 24 ac 00 00 00 mov 0xac(%rsp),%ecx 0.00 : 3bc4d: 85 c9 test %ecx,%ecx 0.00 : 3bc4f: 75 09 jne 3bc5a <__GI_____strtod_l_internal+0x1a4a> 0.00 : 3bc51: 4d 85 ed test %r13,%r13 0.00 : 3bc54: 0f 84 8c 02 00 00 je 3bee6 <__GI_____strtod_l_internal+0x1cd6> 0.00 : 3bc5a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3bc5f: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3bc66: 00 0.00 : 3bc67: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3bc6d: 41 89 c1 mov %eax,%r9d 0.00 : 3bc70: 45 29 d0 sub %r10d,%r8d 0.00 : 3bc73: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3bc77: e9 8f fa ff ff jmpq 3b70b <__GI_____strtod_l_internal+0x14fb> 0.00 : 3bc7c: 48 0f bd c3 bsr %rbx,%rax 0.00 : 3bc80: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3bc85: 89 c2 mov %eax,%edx 0.00 : 3bc87: 83 f2 3f xor $0x3f,%edx 0.00 : 3bc8a: 48 63 c2 movslq %edx,%rax 0.00 : 3bc8d: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3bc94: 00 0.00 : 3bc95: 44 89 c0 mov %r8d,%eax 0.00 : 3bc98: 29 d0 sub %edx,%eax 0.00 : 3bc9a: 83 f8 35 cmp $0x35,%eax 0.00 : 3bc9d: 0f 8e 29 08 00 00 jle 3c4cc <__GI_____strtod_l_internal+0x22bc> 0.00 : 3bca3: 44 8d 52 35 lea 0x35(%rdx),%r10d 0.00 : 3bca7: 48 89 d8 mov %rbx,%rax 0.00 : 3bcaa: 44 29 d1 sub %r10d,%ecx 0.00 : 3bcad: 48 d3 e8 shr %cl,%rax 0.00 : 3bcb0: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3bcb7: 00 0.00 : 3bcb8: eb 8c jmp 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3bcba: 31 c0 xor %eax,%eax 0.00 : 3bcbc: 4d 85 f6 test %r14,%r14 0.00 : 3bcbf: 4c 89 f1 mov %r14,%rcx 0.00 : 3bcc2: 0f 95 c0 setne %al 0.00 : 3bcc5: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 3bccc: 48 29 c1 sub %rax,%rcx 0.00 : 3bccf: 48 89 f8 mov %rdi,%rax 0.00 : 3bcd2: e9 79 fe ff ff jmpq 3bb50 <__GI_____strtod_l_internal+0x1940> 0.00 : 3bcd7: 48 8d 0d f2 6b 10 00 lea 0x106bf2(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3bcde: 48 8d 35 3b ef 0f 00 lea 0xfef3b(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3bce5: 48 8d 3d aa ee 0f 00 lea 0xfeeaa(%rip),%rdi # 13ab96 <__PRETTY_FUNCTION__.8908+0x18> 0.00 : 3bcec: ba 00 02 00 00 mov $0x200,%edx 0.00 : 3bcf1: e8 2a fc fe ff callq 2b920 <__assert_fail> 0.00 : 3bcf6: 48 8b 51 50 mov 0x50(%rcx),%rdx 0.00 : 3bcfa: 48 89 94 24 90 00 00 mov %rdx,0x90(%rsp) 0.00 : 3bd01: 00 0.00 : 3bd02: 0f b6 02 movzbl (%rdx),%eax 0.00 : 3bd05: 83 e8 01 sub $0x1,%eax 0.00 : 3bd08: 3c 7d cmp $0x7d,%al 0.00 : 3bd0a: 0f 87 2c e5 ff ff ja 3a23c <__GI_____strtod_l_internal+0x2c> 0.00 : 3bd10: 48 8b 59 48 mov 0x48(%rcx),%rbx 0.00 : 3bd14: 48 89 9c 24 88 00 00 mov %rbx,0x88(%rsp) 0.00 : 3bd1b: 00 0.00 : 3bd1c: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 3bd1f: 0f 85 2f e5 ff ff jne 3a254 <__GI_____strtod_l_internal+0x44> 0.00 : 3bd25: e9 12 e5 ff ff jmpq 3a23c <__GI_____strtod_l_internal+0x2c> 0.00 : 3bd2a: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 3bd2f: 48 8b 4b 70 mov 0x70(%rbx),%rcx 0.00 : 3bd33: 48 89 fb mov %rdi,%rbx 0.00 : 3bd36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3bd3d: 00 00 00 0.00 : 3bd40: 48 83 c3 01 add $0x1,%rbx 0.00 : 3bd44: 0f b6 13 movzbl (%rbx),%edx 0.00 : 3bd47: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 3bd4a: 3c 09 cmp $0x9,%al 0.00 : 3bd4c: 76 f2 jbe 3bd40 <__GI_____strtod_l_internal+0x1b30> 0.00 : 3bd4e: 48 0f be c2 movsbq %dl,%rax 0.00 : 3bd52: 8b 04 81 mov (%rcx,%rax,4),%eax 0.00 : 3bd55: 83 e8 61 sub $0x61,%eax 0.00 : 3bd58: 3c 19 cmp $0x19,%al 0.00 : 3bd5a: 76 e4 jbe 3bd40 <__GI_____strtod_l_internal+0x1b30> 0.00 : 3bd5c: 80 fa 5f cmp $0x5f,%dl 0.00 : 3bd5f: 74 df je 3bd40 <__GI_____strtod_l_internal+0x1b30> 0.00 : 3bd61: 80 fa 29 cmp $0x29,%dl 0.00 : 3bd64: 0f 85 d8 ed ff ff jne 3ab42 <__GI_____strtod_l_internal+0x932> 0.00 : 3bd6a: 4c 8b 44 24 48 mov 0x48(%rsp),%r8 0.00 : 3bd6f: 48 8d b4 24 18 02 00 lea 0x218(%rsp),%rsi 0.00 : 3bd76: 00 0.00 : 3bd77: 31 d2 xor %edx,%edx 0.00 : 3bd79: 48 83 c7 01 add $0x1,%rdi 0.00 : 3bd7d: 31 c9 xor %ecx,%ecx 0.00 : 3bd7f: e8 5c b2 ff ff callq 36fe0 <__GI_____strtoul_l_internal> 0.00 : 3bd84: 48 39 9c 24 18 02 00 cmp %rbx,0x218(%rsp) 0.00 : 3bd8b: 00 0.00 : 3bd8c: 48 89 c2 mov %rax,%rdx 0.00 : 3bd8f: 0f 84 c8 06 00 00 je 3c45d <__GI_____strtod_l_internal+0x224d> 0.00 : 3bd95: f2 0f 10 05 cb 7c 10 movsd 0x107ccb(%rip),%xmm0 # 143a68 0.00 : 3bd9c: 00 0.00 : 3bd9d: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 3bda1: e9 a4 ed ff ff jmpq 3ab4a <__GI_____strtod_l_internal+0x93a> 4.17 : 3bda6: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3bdad: 00 0.00 : 3bdae: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3bdb3: 4a 8d 14 c5 00 00 00 lea 0x0(,%r8,8),%rdx 0.00 : 3bdba: 00 0.00 : 3bdbb: 4c 89 ff mov %r15,%rdi 0.00 : 3bdbe: e8 8d 89 04 00 callq 84750 0.00 : 3bdc3: e9 38 ea ff ff jmpq 3a800 <__GI_____strtod_l_internal+0x5f0> 0.00 : 3bdc8: 48 83 bc 24 38 02 00 cmpq $0x1,0x238(%rsp) 0.00 : 3bdcf: 00 01 0.00 : 3bdd1: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3bdd8: 00 0.00 : 3bdd9: 48 8b b4 24 d0 00 00 mov 0xd0(%rsp),%rsi 0.00 : 3bde0: 00 0.00 : 3bde1: 0f 84 a4 02 00 00 je 3c08b <__GI_____strtod_l_internal+0x1e7b> 0.00 : 3bde7: 48 8d 0d e2 6a 10 00 lea 0x106ae2(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3bdee: 48 8d 35 2b ee 0f 00 lea 0xfee2b(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3bdf5: 48 8d 3d d3 ed 0f 00 lea 0xfedd3(%rip),%rdi # 13abcf <__PRETTY_FUNCTION__.8908+0x51> 0.00 : 3bdfc: ba 66 05 00 00 mov $0x566,%edx 0.00 : 3be01: e8 1a fb fe ff callq 2b920 <__assert_fail> 0.00 : 3be06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3be0d: 00 00 00 0.00 : 3be10: 4c 8b 54 24 10 mov 0x10(%rsp),%r10 0.00 : 3be15: 4c 8d 40 ff lea -0x1(%rax),%r8 0.00 : 3be19: 4d 39 d1 cmp %r10,%r9 0.00 : 3be1c: 0f 8f ae 01 00 00 jg 3bfd0 <__GI_____strtod_l_internal+0x1dc0> 0.00 : 3be22: 4a 8b 84 d4 70 01 00 mov 0x170(%rsp,%r10,8),%rax 0.00 : 3be29: 00 0.00 : 3be2a: 44 89 e9 mov %r13d,%ecx 0.00 : 3be2d: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 3be32: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3be39: 00 0.00 : 3be3a: 48 d3 e8 shr %cl,%rax 0.00 : 3be3d: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3be44: 00 0.00 : 3be45: e9 2e f2 ff ff jmpq 3b078 <__GI_____strtod_l_internal+0xe68> 0.00 : 3be4a: 4c 8b ac 24 78 01 00 mov 0x178(%rsp),%r13 0.00 : 3be51: 00 0.00 : 3be52: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3be59: 00 0.00 : 3be5a: 45 31 d2 xor %r10d,%r10d 0.00 : 3be5d: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3be64: 00 0.00 : 3be65: e9 b5 fc ff ff jmpq 3bb1f <__GI_____strtod_l_internal+0x190f> 0.00 : 3be6a: 48 b8 ff ff ff ff ff movabs $0x1fffffffffffffff,%rax 0.00 : 3be71: ff ff 1f 0.00 : 3be74: 49 39 c7 cmp %rax,%r15 0.00 : 3be77: 0f 87 19 fa ff ff ja 3b896 <__GI_____strtod_l_internal+0x1686> 0.00 : 3be7d: b8 00 01 00 00 mov $0x100,%eax 0.00 : 3be82: 4c 29 f8 sub %r15,%rax 0.00 : 3be85: 48 8d 0c 85 03 00 00 lea 0x3(,%rax,4),%rcx 0.00 : 3be8c: 00 0.00 : 3be8d: e9 90 fb ff ff jmpq 3ba22 <__GI_____strtod_l_internal+0x1812> 0.00 : 3be92: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3be99: 00 0.00 : 3be9a: 0f b6 02 movzbl (%rdx),%eax 0.00 : 3be9d: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 3bea4: 84 c0 test %al,%al 0.00 : 3bea6: 74 36 je 3bede <__GI_____strtod_l_internal+0x1cce> 0.00 : 3bea8: 41 3a 04 24 cmp (%r12),%al 0.00 : 3beac: 0f 85 09 e6 ff ff jne 3a4bb <__GI_____strtod_l_internal+0x2ab> 0.00 : 3beb2: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3beb7: eb 11 jmp 3beca <__GI_____strtod_l_internal+0x1cba> 0.00 : 3beb9: 41 0f b6 04 14 movzbl (%r12,%rdx,1),%eax 0.00 : 3bebe: 48 83 c2 01 add $0x1,%rdx 0.00 : 3bec2: 38 c1 cmp %al,%cl 0.00 : 3bec4: 0f 85 f1 e5 ff ff jne 3a4bb <__GI_____strtod_l_internal+0x2ab> 0.00 : 3beca: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax 0.00 : 3bed1: 00 0.00 : 3bed2: 0f b6 0c 10 movzbl (%rax,%rdx,1),%ecx 0.00 : 3bed6: 84 c9 test %cl,%cl 0.00 : 3bed8: 75 df jne 3beb9 <__GI_____strtod_l_internal+0x1ca9> 0.00 : 3beda: 48 83 ea 01 sub $0x1,%rdx 0.00 : 3bede: 49 01 d4 add %rdx,%r12 0.00 : 3bee1: e9 7e e6 ff ff jmpq 3a564 <__GI_____strtod_l_internal+0x354> 0.00 : 3bee6: 31 c0 xor %eax,%eax 0.00 : 3bee8: 4d 85 e4 test %r12,%r12 0.00 : 3beeb: 0f 95 c0 setne %al 0.00 : 3beee: e9 6c fd ff ff jmpq 3bc5f <__GI_____strtod_l_internal+0x1a4f> 0.00 : 3bef3: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3befa: 00 0.00 : 3befb: 49 89 ed mov %rbp,%r13 0.00 : 3befe: 0f b6 3a movzbl (%rdx),%edi 0.00 : 3bf01: 80 fb 30 cmp $0x30,%bl 0.00 : 3bf04: 74 4b je 3bf51 <__GI_____strtod_l_internal+0x1d41> 0.00 : 3bf06: 40 84 ff test %dil,%dil 0.00 : 3bf09: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 3bf10: 74 3c je 3bf4e <__GI_____strtod_l_internal+0x1d3e> 0.00 : 3bf12: 41 3a 7d 00 cmp 0x0(%r13),%dil 0.00 : 3bf16: 0f 85 82 e4 ff ff jne 3a39e <__GI_____strtod_l_internal+0x18e> 0.00 : 3bf1c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3bf21: eb 17 jmp 3bf3a <__GI_____strtod_l_internal+0x1d2a> 0.00 : 3bf23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3bf28: 41 0f b6 44 15 00 movzbl 0x0(%r13,%rdx,1),%eax 0.00 : 3bf2e: 48 83 c2 01 add $0x1,%rdx 0.00 : 3bf32: 38 c1 cmp %al,%cl 0.00 : 3bf34: 0f 85 64 e4 ff ff jne 3a39e <__GI_____strtod_l_internal+0x18e> 0.00 : 3bf3a: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax 0.00 : 3bf41: 00 0.00 : 3bf42: 0f b6 0c 10 movzbl (%rax,%rdx,1),%ecx 0.00 : 3bf46: 84 c9 test %cl,%cl 0.00 : 3bf48: 75 de jne 3bf28 <__GI_____strtod_l_internal+0x1d18> 0.00 : 3bf4a: 48 8d 42 ff lea -0x1(%rdx),%rax 0.00 : 3bf4e: 49 01 c5 add %rax,%r13 0.00 : 3bf51: 49 83 c5 01 add $0x1,%r13 0.00 : 3bf55: 41 0f b6 5d 00 movzbl 0x0(%r13),%ebx 0.00 : 3bf5a: eb a5 jmp 3bf01 <__GI_____strtod_l_internal+0x1cf1> 0.00 : 3bf5c: 49 89 c0 mov %rax,%r8 0.00 : 3bf5f: 45 31 db xor %r11d,%r11d 0.00 : 3bf62: 45 31 d2 xor %r10d,%r10d 0.00 : 3bf65: e9 2c e7 ff ff jmpq 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3bf6a: 0f 85 3d 05 00 00 jne 3c4ad <__GI_____strtod_l_internal+0x229d> 0.00 : 3bf70: 8b 44 24 78 mov 0x78(%rsp),%eax 0.00 : 3bf74: 85 c0 test %eax,%eax 0.00 : 3bf76: 7f 0a jg 3bf82 <__GI_____strtod_l_internal+0x1d72> 0.00 : 3bf78: eb 24 jmp 3bf9e <__GI_____strtod_l_internal+0x1d8e> 0.00 : 3bf7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3bf80: 89 c8 mov %ecx,%eax 0.00 : 3bf82: 8d 48 ff lea -0x1(%rax),%ecx 0.00 : 3bf85: 48 98 cltq 0.00 : 3bf87: 48 63 d1 movslq %ecx,%rdx 0.00 : 3bf8a: 85 c9 test %ecx,%ecx 0.00 : 3bf8c: 48 8b 94 d4 70 01 00 mov 0x170(%rsp,%rdx,8),%rdx 0.00 : 3bf93: 00 0.00 : 3bf94: 48 89 94 c4 70 01 00 mov %rdx,0x170(%rsp,%rax,8) 0.00 : 3bf9b: 00 0.00 : 3bf9c: 75 e2 jne 3bf80 <__GI_____strtod_l_internal+0x1d70> 0.00 : 3bf9e: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 3bfa3: 48 8d 4a 01 lea 0x1(%rdx),%rcx 0.00 : 3bfa7: 48 c7 84 d4 d0 00 00 movq $0x0,0xd0(%rsp,%rdx,8) 0.00 : 3bfae: 00 00 00 00 00 0.00 : 3bfb3: 48 8b bc d4 70 01 00 mov 0x170(%rsp,%rdx,8),%rdi 0.00 : 3bfba: 00 0.00 : 3bfbb: c7 84 24 c4 00 00 00 movl $0x0,0xc4(%rsp) 0.00 : 3bfc2: 00 00 00 00 0.00 : 3bfc6: 48 89 4c 24 30 mov %rcx,0x30(%rsp) 0.00 : 3bfcb: e9 89 f5 ff ff jmpq 3b559 <__GI_____strtod_l_internal+0x1349> 0.00 : 3bfd0: 41 bc 40 00 00 00 mov $0x40,%r12d 0.00 : 3bfd6: 41 89 d3 mov %edx,%r11d 0.00 : 3bfd9: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 3bfde: 41 29 c4 sub %eax,%r12d 0.00 : 3bfe1: 41 8d 43 01 lea 0x1(%r11),%eax 0.00 : 3bfe5: 31 db xor %ebx,%ebx 0.00 : 3bfe7: 49 89 fa mov %rdi,%r10 0.00 : 3bfea: 4c 63 f0 movslq %eax,%r14 0.00 : 3bfed: 41 83 c3 01 add $0x1,%r11d 0.00 : 3bff1: 4a 8b 94 d4 70 01 00 mov 0x170(%rsp,%r10,8),%rdx 0.00 : 3bff8: 00 0.00 : 3bff9: 48 2b 7c 24 10 sub 0x10(%rsp),%rdi 0.00 : 3bffe: 4d 63 d3 movslq %r11d,%r10 0.00 : 3c001: 44 89 e9 mov %r13d,%ecx 0.00 : 3c004: 4a 8b 84 d4 70 01 00 mov 0x170(%rsp,%r10,8),%rax 0.00 : 3c00b: 00 0.00 : 3c00c: 48 d3 ea shr %cl,%rdx 0.00 : 3c00f: 44 89 e1 mov %r12d,%ecx 0.00 : 3c012: 48 d3 e0 shl %cl,%rax 0.00 : 3c015: 48 09 d0 or %rdx,%rax 0.00 : 3c018: 48 89 84 fc 20 02 00 mov %rax,0x220(%rsp,%rdi,8) 0.00 : 3c01f: 00 0.00 : 3c020: 4a 8d 3c 33 lea (%rbx,%r14,1),%rdi 0.00 : 3c024: 48 83 c3 01 add $0x1,%rbx 0.00 : 3c028: 49 39 f9 cmp %rdi,%r9 0.00 : 3c02b: 7f c0 jg 3bfed <__GI_____strtod_l_internal+0x1ddd> 0.00 : 3c02d: 4c 89 d0 mov %r10,%rax 0.00 : 3c030: 48 2b 44 24 10 sub 0x10(%rsp),%rax 0.00 : 3c035: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 3c03a: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c041: 00 0.00 : 3c042: 48 85 c0 test %rax,%rax 0.00 : 3c045: 0f 8f 2d f0 ff ff jg 3b078 <__GI_____strtod_l_internal+0xe68> 0.00 : 3c04b: e9 d2 fd ff ff jmpq 3be22 <__GI_____strtod_l_internal+0x1c12> 0.00 : 3c050: 48 8d 0d 79 68 10 00 lea 0x106879(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c057: 48 8d 35 c2 eb 0f 00 lea 0xfebc2(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c05e: 48 8d 3d 7b 21 10 00 lea 0x10217b(%rip),%rdi # 13e1e0 <__PRETTY_FUNCTION__.11129+0x807> 0.00 : 3c065: ba 28 03 00 00 mov $0x328,%edx 0.00 : 3c06a: e8 b1 f8 fe ff callq 2b920 <__assert_fail> 0.00 : 3c06f: 49 8d 45 ff lea -0x1(%r13),%rax 0.00 : 3c073: 45 84 e4 test %r12b,%r12b 0.00 : 3c076: 48 0f 44 44 24 58 cmove 0x58(%rsp),%rax 0.00 : 3c07c: e9 9a e3 ff ff jmpq 3a41b <__GI_____strtod_l_internal+0x20b> 0.00 : 3c081: b9 03 04 00 00 mov $0x403,%ecx 0.00 : 3c086: e9 ab e8 ff ff jmpq 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3c08b: 31 ff xor %edi,%edi 0.00 : 3c08d: 49 39 f4 cmp %rsi,%r12 0.00 : 3c090: 41 b8 40 00 00 00 mov $0x40,%r8d 0.00 : 3c096: 0f 83 4b fd ff ff jae 3bde7 <__GI_____strtod_l_internal+0x1bd7> 0.00 : 3c09c: 44 8b 9c 24 84 00 00 mov 0x84(%rsp),%r11d 0.00 : 3c0a3: 00 0.00 : 3c0a4: 4c 89 e2 mov %r12,%rdx 0.00 : 3c0a7: 48 89 f8 mov %rdi,%rax 0.00 : 3c0aa: 48 f7 f6 div %rsi ??:0 16.67 : 3c0ad: 49 89 d4 mov %rdx,%r12 0.00 : 3c0b0: 48 89 c3 mov %rax,%rbx ??:0 4.17 : 3c0b3: 45 85 db test %r11d,%r11d 0.00 : 3c0b6: 75 38 jne 3c0f0 <__GI_____strtod_l_internal+0x1ee0> 0.00 : 3c0b8: 48 85 c0 test %rax,%rax 0.00 : 3c0bb: 0f 85 b7 00 00 00 jne 3c178 <__GI_____strtod_l_internal+0x1f68> 0.00 : 3c0c1: 48 83 ac 24 30 02 00 subq $0x40,0x230(%rsp) 0.00 : 3c0c8: 00 40 0.00 : 3c0ca: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3c0d1: 35 0.00 : 3c0d2: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3c0d9: 00 0.00 : 3c0da: 7e c0 jle 3c09c <__GI_____strtod_l_internal+0x1e8c> 0.00 : 3c0dc: 31 ed xor %ebp,%ebp 0.00 : 3c0de: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c0e5: 00 0.00 : 3c0e6: eb 63 jmp 3c14b <__GI_____strtod_l_internal+0x1f3b> 0.00 : 3c0e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3c0ef: 00 0.00 : 3c0f0: 83 bc 24 84 00 00 00 cmpl $0xfffffff6,0x84(%rsp) 0.00 : 3c0f7: f6 0.00 : 3c0f8: 7d 12 jge 3c10c <__GI_____strtod_l_internal+0x1efc> 0.00 : 3c0fa: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3c101: 00 0.00 : 3c102: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3c109: 40 0.00 : 3c10a: eb 90 jmp 3c09c <__GI_____strtod_l_internal+0x1e8c> 0.00 : 3c10c: bd 35 00 00 00 mov $0x35,%ebp 0.00 : 3c111: 2b ac 24 84 00 00 00 sub 0x84(%rsp),%ebp 0.00 : 3c118: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c11f: 00 0.00 : 3c120: 85 ed test %ebp,%ebp 0.00 : 3c122: 7e 27 jle 3c14b <__GI_____strtod_l_internal+0x1f3b> 0.00 : 3c124: 89 e9 mov %ebp,%ecx 0.00 : 3c126: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3c12b: 4c 89 fe mov %r15,%rsi 0.00 : 3c12e: 4c 89 ff mov %r15,%rdi 0.00 : 3c131: e8 5a 64 00 00 callq 42590 <__mpn_lshift> 0.00 : 3c136: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3c13b: 48 89 d8 mov %rbx,%rax 0.00 : 3c13e: 29 e9 sub %ebp,%ecx 0.00 : 3c140: 48 d3 e8 shr %cl,%rax 0.00 : 3c143: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3c14a: 00 0.00 : 3c14b: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3c152: 00 0.00 : 3c153: 44 8b 8c 24 ac 00 00 mov 0xac(%rsp),%r9d 0.00 : 3c15a: 00 0.00 : 3c15b: 31 c0 xor %eax,%eax 0.00 : 3c15d: 4d 85 e4 test %r12,%r12 0.00 : 3c160: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3c166: 0f 95 c0 setne %al 0.00 : 3c169: 41 29 e8 sub %ebp,%r8d 0.00 : 3c16c: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3c170: 41 09 c1 or %eax,%r9d 4.17 : 3c173: e9 93 f5 ff ff jmpq 3b70b <__GI_____strtod_l_internal+0x14fb> 0.00 : 3c178: 48 0f bd c0 bsr %rax,%rax 0.00 : 3c17c: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3c181: 89 c2 mov %eax,%edx 0.00 : 3c183: 83 f2 3f xor $0x3f,%edx 0.00 : 3c186: 48 63 c2 movslq %edx,%rax 0.00 : 3c189: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3c190: 00 0.00 : 3c191: 44 89 c0 mov %r8d,%eax 0.00 : 3c194: 29 d0 sub %edx,%eax 0.00 : 3c196: 83 f8 35 cmp $0x35,%eax 0.00 : 3c199: 0f 8e 42 02 00 00 jle 3c3e1 <__GI_____strtod_l_internal+0x21d1> 0.00 : 3c19f: 8d 6a 35 lea 0x35(%rdx),%ebp 0.00 : 3c1a2: 48 89 d8 mov %rbx,%rax 0.00 : 3c1a5: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c1ac: 00 0.00 : 3c1ad: 29 e9 sub %ebp,%ecx 0.00 : 3c1af: 48 d3 e8 shr %cl,%rax 0.00 : 3c1b2: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3c1b9: 00 0.00 : 3c1ba: eb 8f jmp 3c14b <__GI_____strtod_l_internal+0x1f3b> 0.00 : 3c1bc: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 3c1c1: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c1c8: 00 0.00 : 3c1c9: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3c1ce: 48 89 df mov %rbx,%rdi 0.00 : 3c1d1: b9 34 00 00 00 mov $0x34,%ecx 0.00 : 3c1d6: 4c 89 c2 mov %r8,%rdx 0.00 : 3c1d9: 4c 29 c7 sub %r8,%rdi 0.00 : 3c1dc: 29 c1 sub %eax,%ecx 0.00 : 3c1de: 49 8d 3c ff lea (%r15,%rdi,8),%rdi 0.00 : 3c1e2: e8 a9 63 00 00 callq 42590 <__mpn_lshift> 0.00 : 3c1e7: 48 2b 9c 24 38 02 00 sub 0x238(%rsp),%rbx 0.00 : 3c1ee: 00 0.00 : 3c1ef: 48 85 db test %rbx,%rbx 0.00 : 3c1f2: 0f 8e 7d f7 ff ff jle 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c1f8: 31 d2 xor %edx,%edx 0.00 : 3c1fa: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 3c1ff: 48 89 c8 mov %rcx,%rax 0.00 : 3c202: 48 2b 84 24 38 02 00 sub 0x238(%rsp),%rax 0.00 : 3c209: 00 0.00 : 3c20a: 49 c7 04 d7 00 00 00 movq $0x0,(%r15,%rdx,8) 0.00 : 3c211: 00 0.00 : 3c212: 48 83 c2 01 add $0x1,%rdx 0.00 : 3c216: 48 39 d0 cmp %rdx,%rax 0.00 : 3c219: 7f e4 jg 3c1ff <__GI_____strtod_l_internal+0x1fef> 0.00 : 3c21b: e9 55 f7 ff ff jmpq 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c220: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 3c225: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 3c22a: 48 89 de mov %rbx,%rsi 0.00 : 3c22d: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 3c231: e8 1a 85 04 00 callq 84750 0.00 : 3c236: e9 f9 f0 ff ff jmpq 3b334 <__GI_____strtod_l_internal+0x1124> 0.00 : 3c23b: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3c240: 2b 84 24 84 00 00 00 sub 0x84(%rsp),%eax 0.00 : 3c247: 89 84 24 c4 00 00 00 mov %eax,0xc4(%rsp) 0.00 : 3c24e: 0f 84 76 f2 ff ff je 3b4ca <__GI_____strtod_l_internal+0x12ba> 0.00 : 3c254: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c25b: 00 0.00 : 3c25c: 89 c1 mov %eax,%ecx 0.00 : 3c25e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3c263: 4c 89 fe mov %r15,%rsi 0.00 : 3c266: 4c 89 ff mov %r15,%rdi 0.00 : 3c269: e8 22 63 00 00 callq 42590 <__mpn_lshift> 0.00 : 3c26e: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3c275: 00 0.00 : 3c276: e9 4f f2 ff ff jmpq 3b4ca <__GI_____strtod_l_internal+0x12ba> 0.00 : 3c27b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3c280: 48 89 d8 mov %rbx,%rax 0.00 : 3c283: c7 84 24 c4 00 00 00 movl $0x0,0xc4(%rsp) 0.00 : 3c28a: 00 00 00 00 0.00 : 3c28e: 48 c1 e0 06 shl $0x6,%rax 0.00 : 3c292: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3c299: 00 0.00 : 3c29a: e9 32 f2 ff ff jmpq 3b4d1 <__GI_____strtod_l_internal+0x12c1> 0.00 : 3c29f: 4d 89 e5 mov %r12,%r13 0.00 : 3c2a2: 31 db xor %ebx,%ebx 0.00 : 3c2a4: 45 31 e4 xor %r12d,%r12d 0.00 : 3c2a7: e9 9a f9 ff ff jmpq 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3c2ac: 48 8b 15 85 5b 33 00 mov 0x335b85(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3c2b3: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3c2ba: 00 00 0.00 : 3c2bc: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3c2c3: e9 60 e1 ff ff jmpq 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3c2c8: 49 8d 47 c0 lea -0x40(%r15),%rax 0.00 : 3c2cc: 45 31 d2 xor %r10d,%r10d 0.00 : 3c2cf: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c2d6: 00 0.00 : 3c2d7: 48 89 84 24 30 02 00 mov %rax,0x230(%rsp) 0.00 : 3c2de: 00 0.00 : 3c2df: e9 27 f8 ff ff jmpq 3bb0b <__GI_____strtod_l_internal+0x18fb> 0.00 : 3c2e4: 48 8d 0d e5 65 10 00 lea 0x1065e5(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c2eb: 48 8d 35 2e e9 0f 00 lea 0xfe92e(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c2f2: 48 8d 3d 0a e9 0f 00 lea 0xfe90a(%rip),%rdi # 13ac03 <__PRETTY_FUNCTION__.8908+0x85> 0.00 : 3c2f9: ba 62 06 00 00 mov $0x662,%edx 0.00 : 3c2fe: e8 1d f6 fe ff callq 2b920 <__assert_fail> 0.00 : 3c303: 48 8d 0d c6 65 10 00 lea 0x1065c6(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c30a: 48 8d 35 0f e9 0f 00 lea 0xfe90f(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c311: 48 8d 3d 88 20 10 00 lea 0x102088(%rip),%rdi # 13e3a0 <__PRETTY_FUNCTION__.11129+0x9c7> 0.00 : 3c318: ba ed 03 00 00 mov $0x3ed,%edx 0.00 : 3c31d: e8 fe f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c322: 48 8d 0d a7 65 10 00 lea 0x1065a7(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c329: 48 8d 35 f0 e8 0f 00 lea 0xfe8f0(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c330: 48 8d 3d 7d e8 0f 00 lea 0xfe87d(%rip),%rdi # 13abb4 <__PRETTY_FUNCTION__.8908+0x36> 0.00 : 3c337: ba ba 03 00 00 mov $0x3ba,%edx 0.00 : 3c33c: e8 df f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c341: 48 8d 0d 88 65 10 00 lea 0x106588(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c348: 48 8d 35 d1 e8 0f 00 lea 0xfe8d1(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c34f: 48 8d 3d b2 20 10 00 lea 0x1020b2(%rip),%rdi # 13e408 <__PRETTY_FUNCTION__.11129+0xa2f> 0.00 : 3c356: ba f1 03 00 00 mov $0x3f1,%edx 0.00 : 3c35b: e8 c0 f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c360: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 3c365: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c36c: 00 0.00 : 3c36d: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3c372: 48 89 df mov %rbx,%rdi 0.00 : 3c375: 4a 8d 14 c5 00 00 00 lea 0x0(,%r8,8),%rdx 0.00 : 3c37c: 00 0.00 : 3c37d: 4c 29 c7 sub %r8,%rdi 0.00 : 3c380: 49 8d 3c ff lea (%r15,%rdi,8),%rdi 0.00 : 3c384: e8 c7 83 04 00 callq 84750 0.00 : 3c389: 48 2b 9c 24 38 02 00 sub 0x238(%rsp),%rbx 0.00 : 3c390: 00 0.00 : 3c391: 48 85 db test %rbx,%rbx 0.00 : 3c394: 0f 8e db f5 ff ff jle 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c39a: 31 d2 xor %edx,%edx 0.00 : 3c39c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 3c3a1: 48 89 c8 mov %rcx,%rax 0.00 : 3c3a4: 48 2b 84 24 38 02 00 sub 0x238(%rsp),%rax 0.00 : 3c3ab: 00 0.00 : 3c3ac: 49 c7 04 d7 00 00 00 movq $0x0,(%r15,%rdx,8) 0.00 : 3c3b3: 00 0.00 : 3c3b4: 48 83 c2 01 add $0x1,%rdx 0.00 : 3c3b8: 48 39 d0 cmp %rdx,%rax 0.00 : 3c3bb: 7f e4 jg 3c3a1 <__GI_____strtod_l_internal+0x2191> 0.00 : 3c3bd: e9 b3 f5 ff ff jmpq 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c3c2: 48 8d 0d 07 65 10 00 lea 0x106507(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c3c9: 48 8d 35 50 e8 0f 00 lea 0xfe850(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c3d0: 48 8d 3d 71 22 10 00 lea 0x102271(%rip),%rdi # 13e648 <__PRETTY_FUNCTION__.11129+0xc6f> 0.00 : 3c3d7: ba 67 03 00 00 mov $0x367,%edx 0.00 : 3c3dc: e8 3f f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c3e1: f7 da neg %edx 0.00 : 3c3e3: 83 c2 40 add $0x40,%edx 0.00 : 3c3e6: 89 94 24 84 00 00 00 mov %edx,0x84(%rsp) 0.00 : 3c3ed: e9 d8 fc ff ff jmpq 3c0ca <__GI_____strtod_l_internal+0x1eba> 0.00 : 3c3f2: 48 8b 15 3f 5a 33 00 mov 0x335a3f(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3c3f9: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3c400: 00 00 0.00 : 3c402: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3c409: e9 ea e6 ff ff jmpq 3aaf8 <__GI_____strtod_l_internal+0x8e8> 0.00 : 3c40e: f7 da neg %edx 0.00 : 3c410: 83 c2 40 add $0x40,%edx 0.00 : 3c413: 89 94 24 84 00 00 00 mov %edx,0x84(%rsp) 0.00 : 3c41a: e9 61 f2 ff ff jmpq 3b680 <__GI_____strtod_l_internal+0x1470> 0.00 : 3c41f: 48 8d 0d aa 64 10 00 lea 0x1064aa(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c426: 48 8d 35 f3 e7 0f 00 lea 0xfe7f3(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c42d: 48 8d 3d 94 22 10 00 lea 0x102294(%rip),%rdi # 13e6c8 <__PRETTY_FUNCTION__.11129+0xcef> 0.00 : 3c434: ba d6 04 00 00 mov $0x4d6,%edx 0.00 : 3c439: e8 e2 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c43e: 48 8d 0d 8b 64 10 00 lea 0x10648b(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c445: 48 8d 35 d4 e7 0f 00 lea 0xfe7d4(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c44c: 48 8d 3d 72 e7 0f 00 lea 0xfe772(%rip),%rdi # 13abc5 <__PRETTY_FUNCTION__.8908+0x47> 0.00 : 3c453: ba 09 04 00 00 mov $0x409,%edx 0.00 : 3c458: e8 c3 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c45d: 48 b8 ff ff ff ff ff movabs $0xfffffffffffff,%rax 0.00 : 3c464: ff 0f 00 0.00 : 3c467: 31 c9 xor %ecx,%ecx 0.00 : 3c469: be 00 00 08 00 mov $0x80000,%esi 0.00 : 3c46e: 48 85 c2 test %rax,%rdx 0.00 : 3c471: 74 11 je 3c484 <__GI_____strtod_l_internal+0x2274> 0.00 : 3c473: 48 89 d0 mov %rdx,%rax 0.00 : 3c476: 89 d1 mov %edx,%ecx 0.00 : 3c478: 48 c1 e8 20 shr $0x20,%rax 0.00 : 3c47c: 89 c6 mov %eax,%esi 0.00 : 3c47e: 81 e6 ff ff 0f 00 and $0xfffff,%esi 0.00 : 3c484: 48 89 f0 mov %rsi,%rax 0.00 : 3c487: 48 ba 00 00 00 00 00 movabs $0x7ff0000000000000,%rdx 0.00 : 3c48e: 00 f0 7f 0.00 : 3c491: 89 c9 mov %ecx,%ecx 0.00 : 3c493: 48 c1 e0 20 shl $0x20,%rax 0.00 : 3c497: 48 09 c2 or %rax,%rdx 0.00 : 3c49a: 48 09 ca or %rcx,%rdx 0.00 : 3c49d: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 3c4a2: f2 0f 10 44 24 18 movsd 0x18(%rsp),%xmm0 0.00 : 3c4a8: e9 f0 f8 ff ff jmpq 3bd9d <__GI_____strtod_l_internal+0x1b8d> 0.00 : 3c4ad: 48 8d 0d 1c 64 10 00 lea 0x10641c(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c4b4: 48 8d 35 65 e7 0f 00 lea 0xfe765(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c4bb: 48 8d 3d 2e e7 0f 00 lea 0xfe72e(%rip),%rdi # 13abf0 <__PRETTY_FUNCTION__.8908+0x72> 0.00 : 3c4c2: ba 39 06 00 00 mov $0x639,%edx 0.00 : 3c4c7: e8 54 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c4cc: f7 da neg %edx 0.00 : 3c4ce: 83 c2 40 add $0x40,%edx 0.00 : 3c4d1: 89 94 24 84 00 00 00 mov %edx,0x84(%rsp) 0.00 : 3c4d8: e9 a5 f6 ff ff jmpq 3bb82 <__GI_____strtod_l_internal+0x1972> 0.00 : 3c4dd: 48 8d 0d ec 63 10 00 lea 0x1063ec(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c4e4: 48 8d 35 35 e7 0f 00 lea 0xfe735(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c4eb: 48 8d 3d b6 1f 10 00 lea 0x101fb6(%rip),%rdi # 13e4a8 <__PRETTY_FUNCTION__.11129+0xacf> 0.00 : 3c4f2: ba 1e 04 00 00 mov $0x41e,%edx 0.00 : 3c4f7: e8 24 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c4fc: 48 8d 0d cd 63 10 00 lea 0x1063cd(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c503: 48 8d 35 16 e7 0f 00 lea 0xfe716(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c50a: 48 8d 3d d4 e6 0f 00 lea 0xfe6d4(%rip),%rdi # 13abe5 <__PRETTY_FUNCTION__.8908+0x67> 0.00 : 3c511: ba 14 06 00 00 mov $0x614,%edx 0.00 : 3c516: e8 05 f4 fe ff callq 2b920 <__assert_fail> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 45.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2630 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2630 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2632 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2634 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2630 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2634 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2634 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2634 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2635 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d37c0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) != 0); : } : : Datum : float48lt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2630 10.00 : 6d37c0: 55 push %rbp 45.00 : 6d37c1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d37c4: 53 push %rbx 5.00 : 6d37c5: 48 89 fb mov %rdi,%rbx 0.00 : 6d37c8: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d37cc: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d37d0: e8 db a1 0a 00 callq 77d9b0 : float8 arg2 = PG_GETARG_FLOAT8(1); 0.00 : 6d37d5: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float48lt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d37d9: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2632 10.00 : 6d37de: e8 ed a1 0a 00 callq 77d9d0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) < 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2634 10.00 : 6d37e3: f3 0f 10 55 f4 movss -0xc(%rbp),%xmm2 0.00 : 6d37e8: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 6d37ec: 0f 5a d2 cvtps2pd %xmm2,%xmm2 0.00 : 6d37ef: 66 0f 28 c2 movapd %xmm2,%xmm0 5.00 : 6d37f3: e8 28 f7 ff ff callq 6d2f20 5.00 : 6d37f8: 48 98 cltq : } 0.00 : 6d37fa: 48 83 c4 08 add $0x8,%rsp : float48lt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float8 arg2 = PG_GETARG_FLOAT8(1); : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) < 0); 5.00 : 6d37fe: 48 c1 e8 3f shr $0x3f,%rax : } 0.00 : 6d3802: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2635 5.00 : 6d3803: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 36.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:748 26.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:731 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:731 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:731 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:751 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:748 3.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:732 3.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:754 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000758160 : : PG_RETURN_BOOL(result); : } : : Datum : bpcharne(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:731 26.67 : 758160: 55 push %rbp 10.00 : 758161: 48 89 e5 mov %rsp,%rbp 0.00 : 758164: 48 89 5d d8 mov %rbx,-0x28(%rbp) 6.67 : 758168: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 75816c: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 758170: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 758174: 49 89 fd mov %rdi,%r13 0.00 : 758177: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 75817b: 48 83 ec 30 sub $0x30,%rsp : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:732 3.33 : 75817f: 48 8b 7f 20 mov 0x20(%rdi),%rdi : : /* : * Since we only care about equality or not-equality, we can avoid all the : * expense of strcoll() here, and just do bitwise comparison. : */ : if (len1 != len2) 0.00 : 758183: 41 be 01 00 00 00 mov $0x1,%r14d : } : : Datum : bpcharne(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); 0.00 : 758189: e8 52 6b 02 00 callq 77ece0 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 0.00 : 75818e: 49 8b 7d 28 mov 0x28(%r13),%rdi : } : : Datum : bpcharne(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); 0.00 : 758192: 49 89 c4 mov %rax,%r12 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 0.00 : 758195: e8 46 6b 02 00 callq 77ece0 : int len1, : len2; : bool result; : : len1 = bcTruelen(arg1); 0.00 : 75819a: 4c 89 e7 mov %r12,%rdi : : Datum : bpcharne(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 0.00 : 75819d: 48 89 c3 mov %rax,%rbx : int len1, : len2; : bool result; : : len1 = bcTruelen(arg1); 0.00 : 7581a0: e8 eb fb ff ff callq 757d90 : len2 = bcTruelen(arg2); 0.00 : 7581a5: 48 89 df mov %rbx,%rdi : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); : int len1, : len2; : bool result; : : len1 = bcTruelen(arg1); 0.00 : 7581a8: 41 89 c7 mov %eax,%r15d : len2 = bcTruelen(arg2); 0.00 : 7581ab: e8 e0 fb ff ff callq 757d90 : : /* : * Since we only care about equality or not-equality, we can avoid all the : * expense of strcoll() here, and just do bitwise comparison. : */ : if (len1 != len2) 0.00 : 7581b0: 41 39 c7 cmp %eax,%r15d 0.00 : 7581b3: 74 3b je 7581f0 : result = true; : else : result = (memcmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) != 0); : : PG_FREE_IF_COPY(arg1, 0); 0.00 : 7581b5: 4d 3b 65 20 cmp 0x20(%r13),%r12 0.00 : 7581b9: 74 0a je 7581c5 0.00 : 7581bb: 4c 89 e7 mov %r12,%rdi 0.00 : 7581be: 66 90 xchg %ax,%ax 0.00 : 7581c0: e8 bb 09 04 00 callq 798b80 : PG_FREE_IF_COPY(arg2, 1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:751 6.67 : 7581c5: 49 3b 5d 28 cmp 0x28(%r13),%rbx 0.00 : 7581c9: 74 08 je 7581d3 0.00 : 7581cb: 48 89 df mov %rbx,%rdi 0.00 : 7581ce: e8 ad 09 04 00 callq 798b80 : : PG_RETURN_BOOL(result); : } 0.00 : 7581d3: 4c 89 f0 mov %r14,%rax 0.00 : 7581d6: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 7581da: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 7581de: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 7581e2: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 7581e6: 4c 8b 7d f8 mov -0x8(%rbp),%r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:754 3.33 : 7581ea: c9 leaveq 0.00 : 7581eb: c3 retq 0.00 : 7581ec: 0f 1f 40 00 nopl 0x0(%rax) : * expense of strcoll() here, and just do bitwise comparison. : */ : if (len1 != len2) : result = true; : else : result = (memcmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) != 0); 0.00 : 7581f0: f6 03 01 testb $0x1,(%rbx) 0.00 : 7581f3: 48 8d 43 04 lea 0x4(%rbx),%rax 0.00 : 7581f7: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 7581fb: 49 8d 74 24 01 lea 0x1(%r12),%rsi 0.00 : 758200: 49 63 cf movslq %r15d,%rcx 0.00 : 758203: 48 0f 44 f8 cmove %rax,%rdi 0.00 : 758207: 41 f6 04 24 01 testb $0x1,(%r12) 0.00 : 75820c: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 758211: 48 0f 44 f0 cmove %rax,%rsi 0.00 : 758215: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:748 6.67 : 758218: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 36.67 : 75821a: 0f 97 c2 seta %dl 0.00 : 75821d: 0f 92 c0 setb %al 0.00 : 758220: 45 31 f6 xor %r14d,%r14d 0.00 : 758223: 38 c2 cmp %al,%dl 0.00 : 758225: 41 0f 95 c6 setne %r14b 0.00 : 758229: eb 8a jmp 7581b5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.11 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:181 7.41 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:104 7.41 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 7.41 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 7.41 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:163 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:118 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:127 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:137 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:151 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:191 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:172 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:172 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:165 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:120 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:123 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:123 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:121 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:121 3.70 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:120 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007acc70 : : : (cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c)); : } : : void : pg_qsort(void *a, size_t n, size_t es, int (*cmp) (const void *, const void *)) : { 0.00 : 7acc70: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/port/qsort.c:104 7.41 : 7acc71: 48 89 e5 mov %rsp,%rbp 0.00 : 7acc74: 41 57 push %r15 0.00 : 7acc76: 41 56 push %r14 0.00 : 7acc78: 49 89 f6 mov %rsi,%r14 0.00 : 7acc7b: 41 55 push %r13 0.00 : 7acc7d: 41 54 push %r12 0.00 : 7acc7f: 53 push %rbx 0.00 : 7acc80: 48 83 ec 58 sub $0x58,%rsp 0.00 : 7acc84: 48 89 55 a0 mov %rdx,-0x60(%rbp) : pl -= es) : swap(pl, pl - es); : return; : } : presorted = 1; : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7acc88: 48 f7 da neg %rdx 0.00 : 7acc8b: 48 89 55 90 mov %rdx,-0x70(%rbp) : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acc8f: 48 8b 55 a0 mov -0x60(%rbp),%rdx : : (cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c)); : } : : void : pg_qsort(void *a, size_t n, size_t es, int (*cmp) (const void *, const void *)) : { 0.00 : 7acc93: 48 89 7d a8 mov %rdi,-0x58(%rbp) 0.00 : 7acc97: 48 89 4d 98 mov %rcx,-0x68(%rbp) : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acc9b: 48 8d 04 52 lea (%rdx,%rdx,2),%rax 0.00 : 7acc9f: 48 01 c0 add %rax,%rax 0.00 : 7acca2: 48 89 45 88 mov %rax,-0x78(%rbp) : int d, : r, : swaptype, : presorted; : : loop:SWAPINIT(a, es); 0.00 : 7acca6: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7accaa: 48 0b 45 a0 or -0x60(%rbp),%rax 0.00 : 7accae: c7 45 c4 02 00 00 00 movl $0x2,-0x3c(%rbp) 0.00 : 7accb5: a8 07 test $0x7,%al 0.00 : 7accb7: 75 0d jne 7accc6 0.00 : 7accb9: 31 c0 xor %eax,%eax 0.00 : 7accbb: 48 83 7d a0 08 cmpq $0x8,-0x60(%rbp) 0.00 : 7accc0: 0f 95 c0 setne %al 0.00 : 7accc3: 89 45 c4 mov %eax,-0x3c(%rbp) : if (n < 7) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:118 3.70 : 7accc6: 49 83 fe 06 cmp $0x6,%r14 0.00 : 7accca: 0f 86 91 03 00 00 jbe 7ad061 : pl -= es) : swap(pl, pl - es); : return; : } : presorted = 1; : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7accd0: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7accd4: 4c 8b 7d a8 mov -0x58(%rbp),%r15 0.00 : 7accd8: 4c 03 7d a0 add -0x60(%rbp),%r15 0.00 : 7accdc: 49 0f af c6 imul %r14,%rax 0.00 : 7acce0: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 7acce4: 49 39 c7 cmp %rax,%r15 0.00 : 7acce7: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 7acceb: 0f 83 d5 02 00 00 jae 7acfc6 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:127 3.70 : 7accf1: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7accf5: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7accf9: 4c 89 fb mov %r15,%rbx 0.00 : 7accfc: 4d 8d 2c 07 lea (%r15,%rax,1),%r13 0.00 : 7acd00: 4d 8d 24 17 lea (%r15,%rdx,1),%r12 0.00 : 7acd04: eb 27 jmp 7acd2d 0.00 : 7acd06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7acd0d: 00 00 00 0.00 : 7acd10: 4c 03 6d a0 add -0x60(%rbp),%r13 0.00 : 7acd14: 48 03 5d a0 add -0x60(%rbp),%rbx 0.00 : 7acd18: 4c 03 65 a0 add -0x60(%rbp),%r12 0.00 : 7acd1c: 4c 89 e8 mov %r13,%rax 0.00 : 7acd1f: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7acd23: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 7acd27: 0f 86 99 02 00 00 jbe 7acfc6 : { : if (cmp(pm - es, pm) > 0) 0.00 : 7acd2d: 48 89 de mov %rbx,%rsi 0.00 : 7acd30: 4c 89 e7 mov %r12,%rdi 0.00 : 7acd33: ff 55 98 callq *-0x68(%rbp) 0.00 : 7acd36: 85 c0 test %eax,%eax 0.00 : 7acd38: 7e d6 jle 7acd10 : break; : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; 0.00 : 7acd3a: 4c 89 f0 mov %r14,%rax 0.00 : 7acd3d: 4c 8b 65 a8 mov -0x58(%rbp),%r12 0.00 : 7acd41: 48 d1 e8 shr %rax /home/Computational/mark/src/postgres-andres/src/port/qsort.c:137 3.70 : 7acd44: 48 0f af 45 a0 imul -0x60(%rbp),%rax 0.00 : 7acd49: 49 01 c4 add %rax,%r12 : if (n > 7) 0.00 : 7acd4c: 49 83 fe 07 cmp $0x7,%r14 0.00 : 7acd50: 0f 85 ed 01 00 00 jne 7acf43 0.00 : 7acd56: 48 8b 4d a8 mov -0x58(%rbp),%rcx : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); : } : swap(a, pm); 0.00 : 7acd5a: 8b 75 c4 mov -0x3c(%rbp),%esi : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acd5d: 48 03 4d 88 add -0x78(%rbp),%rcx : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); : } : swap(a, pm); 0.00 : 7acd61: 85 f6 test %esi,%esi : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acd63: 48 89 4d d0 mov %rcx,-0x30(%rbp) : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); : } : swap(a, pm); 0.00 : 7acd67: 0f 85 15 02 00 00 jne 7acf82 0.00 : 7acd6d: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7acd71: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7acd75: 48 8b 10 mov (%rax),%rdx /home/Computational/mark/src/postgres-andres/src/port/qsort.c:151 3.70 : 7acd78: 49 8b 04 24 mov (%r12),%rax 0.00 : 7acd7c: 48 89 01 mov %rax,(%rcx) 0.00 : 7acd7f: 49 89 14 24 mov %rdx,(%r12) 0.00 : 7acd83: 4c 8b 6d d0 mov -0x30(%rbp),%r13 0.00 : 7acd87: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : 7acd8b: 4d 89 fe mov %r15,%r14 0.00 : 7acd8e: 4d 89 ef mov %r13,%r15 0.00 : 7acd91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : pa = pb = (char *) a + es; : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 7.41 : 7acd98: 4d 39 ee cmp %r13,%r14 0.00 : 7acd9b: 0f 86 9f 00 00 00 jbe 7ace40 : swap(pb, pc); : pb += es; : pc -= es; : } : pn = (char *) a + n * es; : r = Min(pa - (char *) a, pb - pa); 0.00 : 7acda1: 48 8b 55 b8 mov -0x48(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/port/qsort.c:181 11.11 : 7acda5: 4c 89 f0 mov %r14,%rax 0.00 : 7acda8: 48 2b 55 a8 sub -0x58(%rbp),%rdx 0.00 : 7acdac: 48 2b 45 b8 sub -0x48(%rbp),%rax 0.00 : 7acdb0: 48 39 c2 cmp %rax,%rdx 0.00 : 7acdb3: 48 0f 4e c2 cmovle %rdx,%rax : vecswap(a, pb - r, r); 0.00 : 7acdb7: 85 c0 test %eax,%eax 0.00 : 7acdb9: 7e 15 jle 7acdd0 0.00 : 7acdbb: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acdbe: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7acdc2: 48 63 d0 movslq %eax,%rdx 0.00 : 7acdc5: 4c 89 f6 mov %r14,%rsi 0.00 : 7acdc8: 48 29 d6 sub %rdx,%rsi 0.00 : 7acdcb: e8 a0 fd ff ff callq 7acb70 : r = Min(pd - pc, pn - pd - es); 0.00 : 7acdd0: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 7acdd4: 4c 89 fa mov %r15,%rdx 0.00 : 7acdd7: 4c 29 ea sub %r13,%rdx 0.00 : 7acdda: 4c 29 f8 sub %r15,%rax 0.00 : 7acddd: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7acde1: 48 39 d0 cmp %rdx,%rax 0.00 : 7acde4: 48 0f 47 c2 cmova %rdx,%rax : vecswap(pb, pn - r, r); 0.00 : 7acde8: 85 c0 test %eax,%eax 0.00 : 7acdea: 7e 15 jle 7ace01 0.00 : 7acdec: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 7acdf0: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acdf3: 48 63 d0 movslq %eax,%rdx 0.00 : 7acdf6: 4c 89 f7 mov %r14,%rdi 0.00 : 7acdf9: 48 29 d6 sub %rdx,%rsi 0.00 : 7acdfc: e8 6f fd ff ff callq 7acb70 : if ((r = pb - pa) > es) 0.00 : 7ace01: 44 89 f0 mov %r14d,%eax 0.00 : 7ace04: 2b 45 b8 sub -0x48(%rbp),%eax 0.00 : 7ace07: 48 98 cltq 0.00 : 7ace09: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7ace0d: 0f 82 87 01 00 00 jb 7acf9a : qsort(a, r / es, es, cmp); : if ((r = pd - pc) > es) 0.00 : 7ace13: 44 89 f8 mov %r15d,%eax 0.00 : 7ace16: 44 29 e8 sub %r13d,%eax 0.00 : 7ace19: 48 98 cltq 0.00 : 7ace1b: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7ace1f: 0f 83 a1 01 00 00 jae 7acfc6 : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 7ace25: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 7ace29: 48 29 c2 sub %rax,%rdx 0.00 : 7ace2c: 48 89 55 a8 mov %rdx,-0x58(%rbp) : n = r / es; 0.00 : 7ace30: 31 d2 xor %edx,%edx 0.00 : 7ace32: 48 f7 75 a0 divq -0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:191 3.70 : 7ace36: 49 89 c6 mov %rax,%r14 : goto loop; 0.00 : 7ace39: e9 68 fe ff ff jmpq 7acca6 0.00 : 7ace3e: 66 90 xchg %ax,%ax : swap(a, pm); : pa = pb = (char *) a + es; : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) 0.00 : 7ace40: 48 8b 75 a8 mov -0x58(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 7.41 : 7ace44: 4c 89 f7 mov %r14,%rdi 0.00 : 7ace47: ff 55 98 callq *-0x68(%rbp) 0.00 : 7ace4a: 83 f8 00 cmp $0x0,%eax 0.00 : 7ace4d: 0f 8e b9 00 00 00 jle 7acf0c 0.00 : 7ace53: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7ace57: 4d 8d 64 15 00 lea 0x0(%r13,%rdx,1),%r12 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 3.70 : 7ace5c: 4c 89 e3 mov %r12,%rbx 3.70 : 7ace5f: eb 37 jmp 7ace98 0.00 : 7ace61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : while (pb <= pc && (r = cmp(pc, a)) >= 0) : { : if (r == 0) : { : swap(pc, pd); 0.00 : 7ace68: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 7ace6c: 49 8b 07 mov (%r15),%rax 0.00 : 7ace6f: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 7ace73: 49 89 17 mov %rdx,(%r15) : pd -= es; 0.00 : 7ace76: 4c 03 7d 90 add -0x70(%rbp),%r15 : } : pc -= es; /home/Computational/mark/src/postgres-andres/src/port/qsort.c:172 3.70 : 7ace7a: 48 03 5d 90 add -0x70(%rbp),%rbx 3.70 : 7ace7e: 4d 89 e5 mov %r12,%r13 : swap(pa, pb); : pa += es; : } : pb += es; : } : while (pb <= pc && (r = cmp(pc, a)) >= 0) 0.00 : 7ace81: 48 89 d8 mov %rbx,%rax 0.00 : 7ace84: 48 2b 45 90 sub -0x70(%rbp),%rax 0.00 : 7ace88: 49 39 c6 cmp %rax,%r14 0.00 : 7ace8b: 0f 87 10 ff ff ff ja 7acda1 0.00 : 7ace91: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 7ace95: 49 01 cc add %rcx,%r12 0.00 : 7ace98: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 7ace9c: 4c 89 ef mov %r13,%rdi 0.00 : 7ace9f: ff 55 98 callq *-0x68(%rbp) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:165 3.70 : 7acea2: 83 f8 00 cmp $0x0,%eax 0.00 : 7acea5: 7c 29 jl 7aced0 : { : if (r == 0) 0.00 : 7acea7: 75 d1 jne 7ace7a : { : swap(pc, pd); 0.00 : 7acea9: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 7aceac: 85 d2 test %edx,%edx 0.00 : 7aceae: 66 90 xchg %ax,%ax 0.00 : 7aceb0: 74 b6 je 7ace68 0.00 : 7aceb2: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7aceb5: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7aceb9: 4c 89 fe mov %r15,%rsi 0.00 : 7acebc: 4c 89 ef mov %r13,%rdi 0.00 : 7acebf: e8 ac fc ff ff callq 7acb70 0.00 : 7acec4: eb b0 jmp 7ace76 0.00 : 7acec6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7acecd: 00 00 00 : } : pc -= es; : } : if (pb > pc) : break; : swap(pb, pc); 0.00 : 7aced0: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 7aced3: 85 c0 test %eax,%eax 0.00 : 7aced5: 75 21 jne 7acef8 0.00 : 7aced7: 49 8b 16 mov (%r14),%rdx 0.00 : 7aceda: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 7acede: 49 89 06 mov %rax,(%r14) 0.00 : 7acee1: 49 89 55 00 mov %rdx,0x0(%r13) : pb += es; 0.00 : 7acee5: 4c 03 75 a0 add -0x60(%rbp),%r14 : pc -= es; 0.00 : 7acee9: 4d 89 e5 mov %r12,%r13 0.00 : 7aceec: e9 a7 fe ff ff jmpq 7acd98 0.00 : 7acef1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : pc -= es; : } : if (pb > pc) : break; : swap(pb, pc); 0.00 : 7acef8: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acefb: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7aceff: 4c 89 ee mov %r13,%rsi 0.00 : 7acf02: 4c 89 f7 mov %r14,%rdi 0.00 : 7acf05: e8 66 fc ff ff callq 7acb70 0.00 : 7acf0a: eb d9 jmp 7acee5 : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) : { : if (r == 0) 0.00 : 7acf0c: 75 2c jne 7acf3a : { : swap(pa, pb); 0.00 : 7acf0e: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acf11: 85 c9 test %ecx,%ecx 0.00 : 7acf13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7acf18: 0f 85 b7 00 00 00 jne 7acfd5 0.00 : 7acf1e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 7acf22: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 7acf26: 48 8b 10 mov (%rax),%rdx 0.00 : 7acf29: 49 8b 06 mov (%r14),%rax 0.00 : 7acf2c: 48 89 01 mov %rax,(%rcx) 0.00 : 7acf2f: 49 89 16 mov %rdx,(%r14) : pa += es; 0.00 : 7acf32: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7acf36: 48 01 45 b8 add %rax,-0x48(%rbp) : } : pb += es; 0.00 : 7acf3a: 4c 03 75 a0 add -0x60(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:163 7.41 : 7acf3e: e9 55 fe ff ff jmpq 7acd98 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7acf43: 49 8d 46 ff lea -0x1(%r14),%rax : if (n > 40) 0.00 : 7acf47: 4c 8b 45 a8 mov -0x58(%rbp),%r8 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7acf4b: 48 0f af 45 a0 imul -0x60(%rbp),%rax 0.00 : 7acf50: 48 03 45 a8 add -0x58(%rbp),%rax : if (n > 40) 0.00 : 7acf54: 49 83 fe 28 cmp $0x28,%r14 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7acf58: 48 89 45 d0 mov %rax,-0x30(%rbp) : if (n > 40) 0.00 : 7acf5c: 48 89 c2 mov %rax,%rdx 0.00 : 7acf5f: 0f 87 88 00 00 00 ja 7acfed : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp); : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); 0.00 : 7acf65: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7acf69: 4c 89 e6 mov %r12,%rsi 0.00 : 7acf6c: 4c 89 c7 mov %r8,%rdi 0.00 : 7acf6f: e8 5c fc ff ff callq 7acbd0 : } : swap(a, pm); 0.00 : 7acf74: 8b 75 c4 mov -0x3c(%rbp),%esi : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp); : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); 0.00 : 7acf77: 49 89 c4 mov %rax,%r12 : } : swap(a, pm); 0.00 : 7acf7a: 85 f6 test %esi,%esi 0.00 : 7acf7c: 0f 84 eb fd ff ff je 7acd6d 0.00 : 7acf82: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acf85: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7acf89: 4c 89 e6 mov %r12,%rsi 0.00 : 7acf8c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7acf90: e8 db fb ff ff callq 7acb70 0.00 : 7acf95: e9 e9 fd ff ff jmpq 7acd83 : r = Min(pa - (char *) a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - es); : vecswap(pb, pn - r, r); : if ((r = pb - pa) > es) : qsort(a, r / es, es, cmp); 0.00 : 7acf9a: 31 d2 xor %edx,%edx 0.00 : 7acf9c: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7acfa0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7acfa4: 48 f7 75 a0 divq -0x60(%rbp) 0.00 : 7acfa8: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7acfac: 48 89 c6 mov %rax,%rsi 0.00 : 7acfaf: e8 bc fc ff ff callq 7acc70 : if ((r = pd - pc) > es) 0.00 : 7acfb4: 44 89 f8 mov %r15d,%eax 0.00 : 7acfb7: 44 29 e8 sub %r13d,%eax 0.00 : 7acfba: 48 98 cltq 0.00 : 7acfbc: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7acfc0: 0f 82 5f fe ff ff jb 7ace25 : a = pn - r; : n = r / es; : goto loop; : } : /* qsort(pn - r, r / es, es, cmp);*/ : } 0.00 : 7acfc6: 48 83 c4 58 add $0x58,%rsp 0.00 : 7acfca: 5b pop %rbx 0.00 : 7acfcb: 41 5c pop %r12 0.00 : 7acfcd: 41 5d pop %r13 0.00 : 7acfcf: 41 5e pop %r14 0.00 : 7acfd1: 41 5f pop %r15 0.00 : 7acfd3: c9 leaveq 0.00 : 7acfd4: c3 retq : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) : { : if (r == 0) : { : swap(pa, pb); 0.00 : 7acfd5: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acfd8: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7acfdc: 4c 89 f6 mov %r14,%rsi 0.00 : 7acfdf: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 7acfe3: e8 88 fb ff ff callq 7acb70 0.00 : 7acfe8: e9 45 ff ff ff jmpq 7acf32 : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; 0.00 : 7acfed: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 7acff0: 49 c1 ee 03 shr $0x3,%r14 : pl = med3(pl, pl + d, pl + 2 * d, cmp); 0.00 : 7acff4: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7acff8: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 7acffc: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad000: 48 8b 7d a8 mov -0x58(%rbp),%rdi : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; 0.00 : 7ad004: 41 0f af c6 imul %r14d,%eax : pl = med3(pl, pl + d, pl + 2 * d, cmp); 0.00 : 7ad008: 8d 1c 00 lea (%rax,%rax,1),%ebx 0.00 : 7ad00b: 4c 63 e8 movslq %eax,%r13 0.00 : 7ad00e: 4c 01 ee add %r13,%rsi 0.00 : 7ad011: 48 63 db movslq %ebx,%rbx 0.00 : 7ad014: 48 01 da add %rbx,%rdx 0.00 : 7ad017: e8 b4 fb ff ff callq 7acbd0 : pm = med3(pm - d, pm, pm + d, cmp); 0.00 : 7ad01c: 4b 8d 14 2c lea (%r12,%r13,1),%rdx 0.00 : 7ad020: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad024: 49 f7 dd neg %r13 0.00 : 7ad027: 4b 8d 3c 2c lea (%r12,%r13,1),%rdi 0.00 : 7ad02b: 4c 89 e6 mov %r12,%rsi 0.00 : 7ad02e: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 7ad032: e8 99 fb ff ff callq 7acbd0 : pn = med3(pn - 2 * d, pn - d, pn, cmp); 0.00 : 7ad037: 48 8b 75 d0 mov -0x30(%rbp),%rsi 0.00 : 7ad03b: 48 8b 7d d0 mov -0x30(%rbp),%rdi : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp); : pm = med3(pm - d, pm, pm + d, cmp); 0.00 : 7ad03f: 49 89 c4 mov %rax,%r12 : pn = med3(pn - 2 * d, pn - d, pn, cmp); 0.00 : 7ad042: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 7ad046: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad04a: 4c 01 ee add %r13,%rsi 0.00 : 7ad04d: 48 29 df sub %rbx,%rdi 0.00 : 7ad050: e8 7b fb ff ff callq 7acbd0 0.00 : 7ad055: 4c 8b 45 80 mov -0x80(%rbp),%r8 0.00 : 7ad059: 48 89 c2 mov %rax,%rdx 0.00 : 7ad05c: e9 04 ff ff ff jmpq 7acf65 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad061: 4c 0f af 75 a0 imul -0x60(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:120 3.70 : 7ad066: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7ad06a: 48 03 7d a0 add -0x60(%rbp),%rdi 0.00 : 7ad06e: 4c 03 75 a8 add -0x58(%rbp),%r14 0.00 : 7ad072: 4c 39 f7 cmp %r14,%rdi 0.00 : 7ad075: 4c 89 75 b0 mov %r14,-0x50(%rbp) 0.00 : 7ad079: 0f 83 47 ff ff ff jae 7acfc6 0.00 : 7ad07f: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 7ad083: 49 89 fd mov %rdi,%r13 : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad086: 49 89 ce mov %rcx,%r14 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad089: 4c 8d 3c 0f lea (%rdi,%rcx,1),%r15 : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad08d: 49 f7 de neg %r14 0.00 : 7ad090: 4c 39 6d a8 cmp %r13,-0x58(%rbp) 0.00 : 7ad094: 4b 8d 5c 35 00 lea 0x0(%r13,%r14,1),%rbx 0.00 : 7ad099: 49 89 dc mov %rbx,%r12 0.00 : 7ad09c: 72 2f jb 7ad0cd 0.00 : 7ad09e: eb 55 jmp 7ad0f5 : pl -= es) : swap(pl, pl - es); 0.00 : 7ad0a0: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7ad0a4: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 7ad0a8: 48 8b 14 03 mov (%rbx,%rax,1),%rdx /home/Computational/mark/src/postgres-andres/src/port/qsort.c:123 3.70 : 7ad0ac: 49 8b 04 24 mov (%r12),%rax 0.00 : 7ad0b0: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 3.70 : 7ad0b4: 49 89 14 24 mov %rdx,(%r12) 0.00 : 7ad0b8: 4d 01 f4 add %r14,%r12 : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad0bb: 4c 89 e0 mov %r12,%rax 0.00 : 7ad0be: 4c 29 f0 sub %r14,%rax 0.00 : 7ad0c1: 48 39 45 a8 cmp %rax,-0x58(%rbp) 0.00 : 7ad0c5: 73 2e jae 7ad0f5 0.00 : 7ad0c7: 49 89 dd mov %rbx,%r13 0.00 : 7ad0ca: 4c 01 f3 add %r14,%rbx /home/Computational/mark/src/postgres-andres/src/port/qsort.c:121 3.70 : 7ad0cd: 4c 89 ee mov %r13,%rsi 0.00 : 7ad0d0: 48 89 df mov %rbx,%rdi 0.00 : 7ad0d3: ff 55 98 callq *-0x68(%rbp) 3.70 : 7ad0d6: 85 c0 test %eax,%eax 0.00 : 7ad0d8: 7e 1b jle 7ad0f5 : pl -= es) : swap(pl, pl - es); 0.00 : 7ad0da: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 7ad0dd: 85 ff test %edi,%edi 0.00 : 7ad0df: 74 bf je 7ad0a0 0.00 : 7ad0e1: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad0e4: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad0e8: 48 89 de mov %rbx,%rsi 0.00 : 7ad0eb: 4c 89 ef mov %r13,%rdi 0.00 : 7ad0ee: e8 7d fa ff ff callq 7acb70 0.00 : 7ad0f3: eb c3 jmp 7ad0b8 : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad0f5: 4c 89 ff mov %r15,%rdi 0.00 : 7ad0f8: 4c 03 7d a0 add -0x60(%rbp),%r15 0.00 : 7ad0fc: 49 89 fd mov %rdi,%r13 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:120 3.70 : 7ad0ff: 4c 89 f8 mov %r15,%rax 0.00 : 7ad102: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7ad106: 48 39 45 b0 cmp %rax,-0x50(%rbp) 0.00 : 7ad10a: 77 84 ja 7ad090 : a = pn - r; : n = r / es; : goto loop; : } : /* qsort(pn - r, r / es, es, cmp);*/ : } 0.00 : 7ad10c: 48 83 c4 58 add $0x58,%rsp 0.00 : 7ad110: 5b pop %rbx 0.00 : 7ad111: 41 5c pop %r12 0.00 : 7ad113: 41 5d pop %r13 0.00 : 7ad115: 41 5e pop %r14 0.00 : 7ad117: 41 5f pop %r15 0.00 : 7ad119: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 55.00 ??:0 15.00 ??:0 10.00 ??:0 10.00 ??:0 5.00 ??:0 5.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000750 : ??:0 90.00 : 750: 48 83 ec 18 sub $0x18,%rsp 0.00 : 784: 48 89 1c 24 48 89 xor 0x2e7402f8(%rbx),%eax 0.00 : 78a: 6c 24 08 48 89 f3 mov 0xc4(%rbx),%edx 0.00 : 790: 4c 89 64 24 10 8b b6 mov 0xd8(%rbx),%rax 5.00 : 797: c4 00 00 00 48 cmp %r12d,0x10(%rax,%rdx,1) 0.00 : 79c: 8b 83 je 7b8 0.00 : 79e: d8 00 00 00 mov 0x58(%rbx),%rdi 0.00 : 7a2: 44 8b 64 test %rdi,%rdi 0.00 : 7a5: 30 10 je 7b8 0.00 : 7a7: 48 89 de e8 test $0x1,%dil 0.00 : 7ab: a1 fb je 7d0 0.00 : 7ad: ff ff 85 c0 89 c5 74 movq $0x0,0x58(%rbx) 0.00 : 7b4: 33 0.00 : 7b5: 83 f8 02 nopl (%rax) 5.00 : 7b8: 74 2e mov %ebp,%eax 0.00 : 7ba: 8b 93 c4 00 mov (%rsp),%rbx 0.00 : 7be: 00 00 48 8b 83 mov 0x8(%rsp),%rbp 0.00 : 7c3: d8 00 00 00 44 mov 0x10(%rsp),%r12 0.00 : 7c8: 39 64 10 10 add $0x18,%rsp 0.00 : 7cc: 74 retq 0.00 : 7cd: 1a 48 8b nopl (%rax) 0.00 : 7d0: 7b 58 48 85 and $0xfffffffffffffffe,%rdi 0.00 : 7d4: ff 74 11 40 f6 callq 7d9 0.00 : 7d9: c7 01 jmp 7ad : 7db: 74 nop : 7dc: Address 0x00000000000007dc is out of bounds. : Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469420 : ??:0 100.00 : 469420: ff 25 52 dc 6f 00 jmpq *0x6fdc52(%rip) # b67078 <_GLOBAL_OFFSET_TABLE_+0x78> 0.00 : 469426: 68 0c 00 00 00 pushq $0xc 0.00 : 46942b: e9 20 ff ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 43.24 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:96 29.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:96 8.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:102 8.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:102 5.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:52 2.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:52 2.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/storage/s_lock.h:224 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000690040 : : /* : * s_lock(lock) - platform-independent portion of waiting for a spinlock. : */ : int : s_lock(volatile slock_t *lock, const char *file, int line) : { 0.00 : 690040: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:52 5.41 : 690041: 48 89 e5 mov %rsp,%rbp 0.00 : 690044: 41 57 push %r15 : if (++spins >= spins_per_delay) : { : if (++delays > NUM_DELAYS) : s_lock_stuck(lock, file, line); : : if (cur_delay == 0) /* first time to delay? */ 0.00 : 690046: 41 bf e8 03 00 00 mov $0x3e8,%r15d : /* : * s_lock(lock) - platform-independent portion of waiting for a spinlock. : */ : int : s_lock(volatile slock_t *lock, const char *file, int line) : { 0.00 : 69004c: 41 56 push %r14 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 69004e: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 690054: 41 55 push %r13 0.00 : 690056: 45 31 ed xor %r13d,%r13d 0.00 : 690059: 41 54 push %r12 0.00 : 69005b: 45 31 e4 xor %r12d,%r12d 0.00 : 69005e: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:52 2.70 : 69005f: 48 89 fb mov %rdi,%rbx 0.00 : 690062: 48 83 ec 18 sub $0x18,%rsp 0.00 : 690066: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 69006a: 89 55 c4 mov %edx,-0x3c(%rbp) 0.00 : 69006d: 0f 1f 00 nopl (%rax) : : /* increase delay by a random fraction between 1X and 2X */ : cur_delay += (int) (cur_delay * : ((double) random() / (double) MAX_RANDOM_VALUE) + 0.5); : /* wrap back to minimum delay when max is exceeded */ : if (cur_delay > MAX_DELAY_USEC) 0.00 : 690070: 31 d2 xor %edx,%edx 0.00 : 690072: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : int spins = 0; : int delays = 0; : int cur_delay = 0; : : while (TAS_SPIN(lock)) 0.00 : 690078: 0f b6 03 movzbl (%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:96 43.24 : 69007b: 84 c0 test %al,%al 0.00 : 69007d: 75 0e jne 69008d /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/storage/s_lock.h:224 2.70 : 69007f: 44 89 f0 mov %r14d,%eax 0.00 : 690082: f0 86 03 lock xchg %al,(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:96 29.73 : 690085: 84 c0 test %al,%al 0.00 : 690087: 0f 84 a3 00 00 00 je 690130 : { : /* : * Adding a PAUSE in the spin delay loop is demonstrably a no-op on : * Opteron, but it may be of some use on EM64T, so we keep it. : */ : __asm__ __volatile__( 0.00 : 69008d: f3 90 pause : { : /* CPU-specific delay each time through the loop */ : SPIN_DELAY(); : : /* Block the process every spins_per_delay tries */ : if (++spins >= spins_per_delay) 0.00 : 69008f: 83 c2 01 add $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:102 8.11 : 690092: 3b 15 40 86 4d 00 cmp 0x4d8640(%rip),%edx # b686d8 8.11 : 690098: 7c de jl 690078 : { : if (++delays > NUM_DELAYS) 0.00 : 69009a: 41 83 c5 01 add $0x1,%r13d 0.00 : 69009e: 41 81 fd e9 03 00 00 cmp $0x3e9,%r13d 0.00 : 6900a5: 0f 84 eb 00 00 00 je 690196 : s_lock_stuck(lock, file, line); : : if (cur_delay == 0) /* first time to delay? */ 0.00 : 6900ab: 45 85 e4 test %r12d,%r12d 0.00 : 6900ae: 75 68 jne 690118 0.00 : 6900b0: 48 b8 00 00 00 00 00 movabs $0x408f400000000000,%rax 0.00 : 6900b7: 40 8f 40 0.00 : 6900ba: 66 41 bc e8 03 mov $0x3e8,%r12w 0.00 : 6900bf: bf e8 03 00 00 mov $0x3e8,%edi 0.00 : 6900c4: 48 89 45 d0 mov %rax,-0x30(%rbp) : cur_delay = MIN_DELAY_USEC; : : pg_usleep(cur_delay); 0.00 : 6900c8: e8 83 c6 11 00 callq 7ac750 : fprintf(stdout, "*"); : fflush(stdout); : #endif : : /* increase delay by a random fraction between 1X and 2X */ : cur_delay += (int) (cur_delay * 0.00 : 6900cd: e8 ce 9d dd ff callq 469ea0 0.00 : 6900d2: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 6900d7: f2 0f 5e 05 39 12 12 divsd 0x121239(%rip),%xmm0 # 7b1318 <__func__.11700+0x18> 0.00 : 6900de: 00 0.00 : 6900df: f2 0f 59 45 d0 mulsd -0x30(%rbp),%xmm0 0.00 : 6900e4: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) 0.00 : 6900e9: f2 0f 10 05 f7 78 1e movsd 0x1e78f7(%rip),%xmm0 # 8779e8 <__func__.20024+0x28> 0.00 : 6900f0: 00 0.00 : 6900f1: f2 0f 58 45 d0 addsd -0x30(%rbp),%xmm0 0.00 : 6900f6: f2 0f 2c c0 cvttsd2si %xmm0,%eax 0.00 : 6900fa: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) 0.00 : 6900ff: 41 01 c4 add %eax,%r12d : ((double) random() / (double) MAX_RANDOM_VALUE) + 0.5); : /* wrap back to minimum delay when max is exceeded */ : if (cur_delay > MAX_DELAY_USEC) 0.00 : 690102: 41 81 fc 41 42 0f 00 cmp $0xf4241,%r12d 0.00 : 690109: 45 0f 4d e7 cmovge %r15d,%r12d 0.00 : 69010d: e9 5e ff ff ff jmpq 690070 0.00 : 690112: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (++spins >= spins_per_delay) : { : if (++delays > NUM_DELAYS) : s_lock_stuck(lock, file, line); : : if (cur_delay == 0) /* first time to delay? */ 0.00 : 690118: f2 41 0f 2a c4 cvtsi2sd %r12d,%xmm0 0.00 : 69011d: 49 63 fc movslq %r12d,%rdi 0.00 : 690120: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) 0.00 : 690125: eb a1 jmp 6900c8 0.00 : 690127: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 69012e: 00 00 : * average these observations across multiple backends, since it's : * relatively rare for this function to even get entered, and so a single : * backend might not live long enough to converge on a good value. That : * is handled by the two routines below. : */ : if (cur_delay == 0) 0.00 : 690130: 45 85 e4 test %r12d,%r12d 0.00 : 690133: 74 3b je 690170 : if (spins_per_delay < MAX_SPINS_PER_DELAY) : spins_per_delay = Min(spins_per_delay + 100, MAX_SPINS_PER_DELAY); : } : else : { : if (spins_per_delay > MIN_SPINS_PER_DELAY) 0.00 : 690135: 8b 05 9d 85 4d 00 mov 0x4d859d(%rip),%eax # b686d8 0.00 : 69013b: 83 f8 0a cmp $0xa,%eax 0.00 : 69013e: 7e 14 jle 690154 : spins_per_delay = Max(spins_per_delay - 1, MIN_SPINS_PER_DELAY); 0.00 : 690140: 8d 50 ff lea -0x1(%rax),%edx 0.00 : 690143: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 690148: 83 fa 09 cmp $0x9,%edx 0.00 : 69014b: 0f 4f c2 cmovg %edx,%eax 0.00 : 69014e: 89 05 84 85 4d 00 mov %eax,0x4d8584(%rip) # b686d8 : } : return delays; : } 0.00 : 690154: 48 83 c4 18 add $0x18,%rsp 0.00 : 690158: 44 89 e8 mov %r13d,%eax 0.00 : 69015b: 5b pop %rbx 0.00 : 69015c: 41 5c pop %r12 0.00 : 69015e: 41 5d pop %r13 0.00 : 690160: 41 5e pop %r14 0.00 : 690162: 41 5f pop %r15 0.00 : 690164: c9 leaveq 0.00 : 690165: c3 retq 0.00 : 690166: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69016d: 00 00 00 : * is handled by the two routines below. : */ : if (cur_delay == 0) : { : /* we never had to delay */ : if (spins_per_delay < MAX_SPINS_PER_DELAY) 0.00 : 690170: 8b 05 62 85 4d 00 mov 0x4d8562(%rip),%eax # b686d8 0.00 : 690176: 3d e7 03 00 00 cmp $0x3e7,%eax 0.00 : 69017b: 7f d7 jg 690154 : spins_per_delay = Min(spins_per_delay + 100, MAX_SPINS_PER_DELAY); 0.00 : 69017d: 8d 50 64 lea 0x64(%rax),%edx 0.00 : 690180: b8 e8 03 00 00 mov $0x3e8,%eax 0.00 : 690185: 81 fa e8 03 00 00 cmp $0x3e8,%edx 0.00 : 69018b: 0f 4e c2 cmovle %edx,%eax 0.00 : 69018e: 89 05 44 85 4d 00 mov %eax,0x4d8544(%rip) # b686d8 0.00 : 690194: eb be jmp 690154 : fprintf(stderr, : "\nStuck spinlock (%p) detected at %s:%d.\n", : lock, file, line); : exit(1); : #else : elog(PANIC, "stuck spinlock (%p) detected at %s:%d", 0.00 : 690196: ba c6 d1 8a 00 mov $0x8ad1c6,%edx 0.00 : 69019b: be 2a 00 00 00 mov $0x2a,%esi 0.00 : 6901a0: bf 91 d1 8a 00 mov $0x8ad191,%edi 0.00 : 6901a5: e8 76 b2 0e 00 callq 77b420 0.00 : 6901aa: 44 8b 45 c4 mov -0x3c(%rbp),%r8d 0.00 : 6901ae: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 6901b2: 48 89 da mov %rbx,%rdx 0.00 : 6901b5: be a0 d1 8a 00 mov $0x8ad1a0,%esi 0.00 : 6901ba: bf 16 00 00 00 mov $0x16,%edi 0.00 : 6901bf: 31 c0 xor %eax,%eax 0.00 : 6901c1: e8 6a b0 0e 00 callq 77b230 0.00 : 6901c6: e8 05 93 dd ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.83 ??:0 16.67 ??:0 16.67 ??:0 12.50 ??:0 12.50 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000082e60 : ??:0 16.67 : 82e60: 48 85 d2 test %rdx,%rdx 0.00 : 82e63: 0f 84 f7 00 00 00 je 82f60 ??:0 4.17 : 82e69: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 82e6d: 0f 8e bd 00 00 00 jle 82f30 0.00 : 82e73: 48 29 fe sub %rdi,%rsi 0.00 : 82e76: 49 89 d2 mov %rdx,%r10 ??:0 12.50 : 82e79: 49 83 fa 20 cmp $0x20,%r10 0.00 : 82e7d: 0f 8d e0 00 00 00 jge 82f63 ??:0 4.17 : 82e83: 49 f7 c2 01 00 00 00 test $0x1,%r10 0.00 : 82e8a: 74 1d je 82ea9 0.00 : 82e8c: 0f b6 07 movzbl (%rdi),%eax 0.00 : 82e8f: 0f b6 14 37 movzbl (%rdi,%rsi,1),%edx 0.00 : 82e93: 49 83 ea 01 sub $0x1,%r10 0.00 : 82e97: 0f 84 99 00 00 00 je 82f36 0.00 : 82e9d: 48 83 c7 01 add $0x1,%rdi 0.00 : 82ea1: 29 d0 sub %edx,%eax 0.00 : 82ea3: 0f 85 8f 00 00 00 jne 82f38 0.00 : 82ea9: 49 f7 c2 02 00 00 00 test $0x2,%r10 0.00 : 82eb0: 74 15 je 82ec7 0.00 : 82eb2: 0f b7 07 movzwl (%rdi),%eax 0.00 : 82eb5: 0f b7 14 37 movzwl (%rdi,%rsi,1),%edx 0.00 : 82eb9: 49 83 ea 02 sub $0x2,%r10 0.00 : 82ebd: 74 7a je 82f39 0.00 : 82ebf: 48 83 c7 02 add $0x2,%rdi 0.00 : 82ec3: 39 d0 cmp %edx,%eax 0.00 : 82ec5: 75 72 jne 82f39 ??:0 20.83 : 82ec7: 49 f7 c2 04 00 00 00 test $0x4,%r10 0.00 : 82ece: 74 13 je 82ee3 0.00 : 82ed0: 8b 07 mov (%rdi),%eax 0.00 : 82ed2: 8b 14 37 mov (%rdi,%rsi,1),%edx 0.00 : 82ed5: 49 83 ea 04 sub $0x4,%r10 0.00 : 82ed9: 74 5e je 82f39 0.00 : 82edb: 48 83 c7 04 add $0x4,%rdi 0.00 : 82edf: 39 d0 cmp %edx,%eax 0.00 : 82ee1: 75 56 jne 82f39 0.00 : 82ee3: 49 f7 c2 08 00 00 00 test $0x8,%r10 0.00 : 82eea: 74 16 je 82f02 0.00 : 82eec: 48 8b 07 mov (%rdi),%rax 0.00 : 82eef: 48 8b 14 37 mov (%rdi,%rsi,1),%rdx 0.00 : 82ef3: 49 83 ea 08 sub $0x8,%r10 0.00 : 82ef7: 74 40 je 82f39 0.00 : 82ef9: 48 83 c7 08 add $0x8,%rdi 0.00 : 82efd: 48 39 d0 cmp %rdx,%rax 0.00 : 82f00: 75 37 jne 82f39 ??:0 4.17 : 82f02: f3 0f 6f 0f movdqu (%rdi),%xmm1 0.00 : 82f06: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82f0b: 66 0f 74 c8 pcmpeqb %xmm0,%xmm1 4.17 : 82f0f: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 82f13: 31 c0 xor %eax,%eax 0.00 : 82f15: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82f1b: 74 43 je 82f60 0.00 : 82f1d: 0f bc ca bsf %edx,%ecx 0.00 : 82f20: 48 8d 0c 0f lea (%rdi,%rcx,1),%rcx 0.00 : 82f24: 0f b6 01 movzbl (%rcx),%eax 0.00 : 82f27: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : 82f2b: eb 09 jmp 82f36 0.00 : 82f2d: 0f 1f 00 nopl (%rax) 0.00 : 82f30: 0f b6 07 movzbl (%rdi),%eax 0.00 : 82f33: 0f b6 16 movzbl (%rsi),%edx 0.00 : 82f36: 29 d0 sub %edx,%eax 0.00 : 82f38: c3 retq ??:0 12.50 : 82f39: 48 39 d0 cmp %rdx,%rax 0.00 : 82f3c: 74 22 je 82f60 0.00 : 82f3e: 49 89 c3 mov %rax,%r11 0.00 : 82f41: 49 29 d3 sub %rdx,%r11 0.00 : 82f44: 49 0f bc cb bsf %r11,%rcx 0.00 : 82f48: 48 c1 f9 03 sar $0x3,%rcx 0.00 : 82f4c: 48 c1 e1 03 shl $0x3,%rcx 0.00 : 82f50: 48 d3 f8 sar %cl,%rax 0.00 : 82f53: 0f b6 c0 movzbl %al,%eax 0.00 : 82f56: 48 d3 fa sar %cl,%rdx 0.00 : 82f59: 0f b6 d2 movzbl %dl,%edx 0.00 : 82f5c: 29 d0 sub %edx,%eax 0.00 : 82f5e: c3 retq 0.00 : 82f5f: 90 nop 16.67 : 82f60: 31 c0 xor %eax,%eax 0.00 : 82f62: c3 retq 0.00 : 82f63: 49 89 d3 mov %rdx,%r11 0.00 : 82f66: 49 01 fb add %rdi,%r11 0.00 : 82f69: 49 89 f8 mov %rdi,%r8 0.00 : 82f6c: 49 83 e0 0f and $0xf,%r8 0.00 : 82f70: 74 25 je 82f97 0.00 : 82f72: f3 0f 6f 0f movdqu (%rdi),%xmm1 0.00 : 82f76: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82f7b: 66 0f 74 c8 pcmpeqb %xmm0,%xmm1 0.00 : 82f7f: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 82f83: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82f89: 0f 85 61 01 00 00 jne 830f0 0.00 : 82f8f: 49 f7 d8 neg %r8 0.00 : 82f92: 4a 8d 7c 07 10 lea 0x10(%rdi,%r8,1),%rdi 0.00 : 82f97: 48 f7 c6 0f 00 00 00 test $0xf,%rsi 0.00 : 82f9e: 0f 84 5f 01 00 00 je 83103 0.00 : 82fa4: 48 f7 c7 10 00 00 00 test $0x10,%rdi 0.00 : 82fab: 74 1d je 82fca 0.00 : 82fad: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82fb2: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 82fb6: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 82fba: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82fc0: 0f 85 2a 01 00 00 jne 830f0 0.00 : 82fc6: 48 83 c7 10 add $0x10,%rdi 0.00 : 82fca: 4d 89 da mov %r11,%r10 0.00 : 82fcd: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 82fd1: 4c 39 d7 cmp %r10,%rdi 0.00 : 82fd4: 0f 8d 03 01 00 00 jge 830dd 0.00 : 82fda: 48 f7 c7 20 00 00 00 test $0x20,%rdi 0.00 : 82fe1: 74 3a je 8301d 0.00 : 82fe3: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82fe8: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 82fec: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 82ff0: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82ff6: 0f 85 f4 00 00 00 jne 830f0 0.00 : 82ffc: 48 83 c7 10 add $0x10,%rdi 0.00 : 83000: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 83005: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83009: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 8300d: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83013: 0f 85 d7 00 00 00 jne 830f0 0.00 : 83019: 48 83 c7 10 add $0x10,%rdi 0.00 : 8301d: 4d 89 da mov %r11,%r10 0.00 : 83020: 49 83 e2 c0 and $0xffffffffffffffc0,%r10 0.00 : 83024: 4c 39 d7 cmp %r10,%rdi 0.00 : 83027: 7d 71 jge 8309a 0.00 : 83029: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 8302e: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83032: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83036: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8303c: 0f 85 ae 00 00 00 jne 830f0 0.00 : 83042: 48 83 c7 10 add $0x10,%rdi 0.00 : 83046: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 8304b: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8304f: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83053: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83059: 0f 85 91 00 00 00 jne 830f0 0.00 : 8305f: 48 83 c7 10 add $0x10,%rdi 0.00 : 83063: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 83068: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8306c: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83070: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83076: 75 78 jne 830f0 0.00 : 83078: 48 83 c7 10 add $0x10,%rdi 0.00 : 8307c: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 83081: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83085: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83089: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8308f: 75 5f jne 830f0 0.00 : 83091: 48 83 c7 10 add $0x10,%rdi 0.00 : 83095: 49 39 fa cmp %rdi,%r10 0.00 : 83098: 75 8f jne 83029 0.00 : 8309a: 4d 89 da mov %r11,%r10 0.00 : 8309d: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 830a1: 4c 39 d7 cmp %r10,%rdi 0.00 : 830a4: 7d 37 jge 830dd 0.00 : 830a6: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 830ab: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 830af: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 830b3: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 830b9: 75 35 jne 830f0 0.00 : 830bb: 48 83 c7 10 add $0x10,%rdi 0.00 : 830bf: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 830c4: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 830c8: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 830cc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 830d2: 75 1c jne 830f0 0.00 : 830d4: 48 83 c7 10 add $0x10,%rdi 0.00 : 830d8: 49 39 fa cmp %rdi,%r10 0.00 : 830db: 75 c9 jne 830a6 0.00 : 830dd: 49 29 fb sub %rdi,%r11 0.00 : 830e0: 0f 84 7a fe ff ff je 82f60 0.00 : 830e6: 4d 89 da mov %r11,%r10 0.00 : 830e9: e9 95 fd ff ff jmpq 82e83 0.00 : 830ee: 66 90 xchg %ax,%ax 0.00 : 830f0: 0f bc ca bsf %edx,%ecx 0.00 : 830f3: 0f b6 04 0f movzbl (%rdi,%rcx,1),%eax 0.00 : 830f7: 48 01 fe add %rdi,%rsi 0.00 : 830fa: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : 830fe: e9 33 fe ff ff jmpq 82f36 0.00 : 83103: 4d 89 da mov %r11,%r10 0.00 : 83106: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 8310a: 4c 39 d7 cmp %r10,%rdi 0.00 : 8310d: 7d ce jge 830dd 0.00 : 8310f: 48 f7 c7 10 00 00 00 test $0x10,%rdi 0.00 : 83116: 74 1e je 83136 0.00 : 83118: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 8311d: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83121: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83125: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8312b: 75 c3 jne 830f0 0.00 : 8312d: 48 83 c7 10 add $0x10,%rdi 0.00 : 83131: 49 39 fa cmp %rdi,%r10 0.00 : 83134: 74 a7 je 830dd 0.00 : 83136: 4d 89 da mov %r11,%r10 0.00 : 83139: 49 83 e2 c0 and $0xffffffffffffffc0,%r10 0.00 : 8313d: 48 f7 c7 20 00 00 00 test $0x20,%rdi 0.00 : 83144: 74 36 je 8317c 0.00 : 83146: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 8314b: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8314f: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83153: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83159: 75 95 jne 830f0 0.00 : 8315b: 48 83 c7 10 add $0x10,%rdi 0.00 : 8315f: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 83164: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83168: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 8316c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83172: 0f 85 78 ff ff ff jne 830f0 0.00 : 83178: 48 83 c7 10 add $0x10,%rdi 0.00 : 8317c: 49 39 fa cmp %rdi,%r10 0.00 : 8317f: 0f 84 15 ff ff ff je 8309a 0.00 : 83185: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 8318a: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8318e: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83192: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83198: 0f 85 52 ff ff ff jne 830f0 0.00 : 8319e: 48 83 c7 10 add $0x10,%rdi 0.00 : 831a2: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 831a7: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 831ab: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 831af: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 831b5: 0f 85 35 ff ff ff jne 830f0 0.00 : 831bb: 48 83 c7 10 add $0x10,%rdi 0.00 : 831bf: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 831c4: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 831c8: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 831cc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 831d2: 0f 85 18 ff ff ff jne 830f0 0.00 : 831d8: 48 83 c7 10 add $0x10,%rdi 0.00 : 831dc: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 831e1: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 831e5: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 831e9: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 831ef: 0f 85 fb fe ff ff jne 830f0 0.00 : 831f5: 48 83 c7 10 add $0x10,%rdi 0.00 : 831f9: 49 39 fa cmp %rdi,%r10 0.00 : 831fc: 75 87 jne 83185 ??:0 4.17 : 831fe: 4d 89 da mov %r11,%r10 0.00 : 83201: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 83205: 4c 39 d7 cmp %r10,%rdi 0.00 : 83208: 0f 8d cf fe ff ff jge 830dd 0.00 : 8320e: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 83213: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83217: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 8321b: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83221: 0f 85 c9 fe ff ff jne 830f0 0.00 : 83227: 48 83 c7 10 add $0x10,%rdi 0.00 : 8322b: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 83230: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83234: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83238: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8323e: 0f 85 ac fe ff ff jne 830f0 0.00 : 83244: 48 83 c7 10 add $0x10,%rdi 0.00 : 83248: 4c 39 d7 cmp %r10,%rdi 0.00 : 8324b: 75 c1 jne 8320e 0.00 : 8324d: 49 29 fb sub %rdi,%r11 0.00 : 83250: 0f 84 0a fd ff ff je 82f60 0.00 : 83256: 4d 89 da mov %r11,%r10 0.00 : 83259: e9 25 fc ff ff jmpq 82e83 0.00 : 8325e: 66 90 xchg %ax,%ax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 42.86 ??:0 14.29 ??:0 10.71 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 3.57 ??:0 3.57 ??:0 3.57 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008cd0 : ??:0 71.43 : 8cd0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 8d04: 48 89 5c 24 10 48 mov 0xe0(%rdi),%edx 0.00 : 8d0a: 89 6c 24 test %rdx,%rdx 0.00 : 8d0d: 18 48 je 8d70 0.00 : 8d0f: 89 fb 4c 89 movzbl 0x13(%rdx),%eax 0.00 : 8d13: 64 24 test %al,%al 0.00 : 8d15: 20 4c je 8d70 0.00 : 8d17: 89 6c 24 movzbl %al,%eax 0.00 : 8d1a: 28 4c 89 mov %rdx,%rbp 0.00 : 8d1d: 74 24 30 add %rax,%rbp 0.00 : 8d20: 48 8b je 8d70 0.00 : 8d22: 87 e8 00 xor %r12d,%r12d 0.00 : 8d25: 00 00 48 8b xchg %r12,0x0(%rbp) 0.00 : 8d29: 88 38 07 00 mov 0x78(%rdi),%rax 0.00 : 8d2d: 00 48 test $0x8,%al 0.00 : 8d2f: 85 c9 je 8d70 0.00 : 8d31: 74 6d 48 8b mov 0x78(%rdi),%rax 0.00 : 8d35: 97 e0 00 test $0x2,%ah 0.00 : 8d38: 00 00 jne 8d70 0.00 : 8d3a: 48 85 d2 test %r12,%r12 0.00 : 8d3d: 74 61 je 8d70 0.00 : 8d3f: 0f b6 42 13 mov %rdi,(%rsp) 0.00 : 8d43: 84 c0 74 59 0f b6 c0 movl $0x0,0x8(%rsp) 0.00 : 8d4a: 48 0.00 : 8d4b: 89 d5 48 mov %r12,%rdx 0.00 : 8d4e: 01 c5 74 4e 45 31 e4 movl $0x0,0xc(%rsp) 0.00 : 8d55: 4c 0.00 : 8d56: 87 65 00 48 mov 0x8(%rbp),%r13 0.00 : 8d5a: 8b 47 78 a8 movzwl 0x10(%rbp),%eax 0.00 : 8d5e: 08 74 3f or %r13,%rdx 0.00 : 8d61: 48 8b 47 test %rax,%rdx 0.00 : 8d64: 78 f6 jne 8d90 0.00 : 8d66: c4 02 75 36 4d 85 e4 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8d6d: 74 31 48 ??:0 3.57 : 8d70: 89 3c 24 c7 44 mov 0x10(%rsp),%rbx ??:0 7.14 : 8d75: 24 08 00 00 00 mov 0x18(%rsp),%rbp 0.00 : 8d7a: 00 4c 89 e2 c7 mov 0x20(%rsp),%r12 7.14 : 8d7f: 44 24 0c 00 00 mov 0x28(%rsp),%r13 10.71 : 8d84: 00 00 4c 8b 6d mov 0x30(%rsp),%r14 0.00 : 8d89: 08 0f b7 45 add $0x38,%rsp 0.00 : 8d8d: 10 retq 0.00 : 8d8e: 4c 09 xchg %ax,%ax 0.00 : 8d90: ea 48 85 mov %r12d,%edi 0.00 : 8d93: c2 75 2a mov %rsp,%rsi 0.00 : 8d96: 66 2e 0f or %r13d,%edi 0.00 : 8d99: 1f 84 callq *(%rcx) 0.00 : 8d9b: 00 00 test %eax,%eax 0.00 : 8d9d: 00 00 00 mov %eax,%r14d 0.00 : 8da0: 48 8b js 8da7 0.00 : 8da2: 5c 24 10 test %r13,%r13 0.00 : 8da5: 48 8b je 8d70 0.00 : 8da7: 6c 24 18 4c add $0x4,%rbx 0.00 : 8dab: 8b 64 24 mov %rbx,%rdi 0.00 : 8dae: 20 4c 8b 6c 24 callq 8db3 0.00 : 8db3: 28 4c 8b test %r14d,%r14d 0.00 : 8db6: 74 24 js 8dc9 0.00 : 8db8: 30 48 83 not %r13 0.00 : 8dbb: c4 38 c3 66 and %r13,0x8(%rbp) 0.00 : 8dbf: 90 44 89 mov %rbx,%rdi 0.00 : 8dc2: e7 48 89 e6 44 callq 8dc7 0.00 : 8dc7: 09 ef jmp 8d70 0.00 : 8dc9: ff 11 85 c0 or %r12,0x8(%rbp) 0.00 : 8dcd: 41 89 jmp 8dbf : 8dcf: c6 nop : 8dd0: Address 0x0000000000008dd0 is out of bounds. : Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 53.85 ??:0 11.54 ??:0 7.69 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000000f0 : ??:0 76.92 : f0: 48 83 ec 48 sub $0x48,%rsp 0.00 : 124: 48 89 5c 24 20 48 mov 0x48000000(%rdi),%ss 0.00 : 12a: 89 6c movslq %esi,%edx 0.00 : 12c: 24 28 48 89 fb 4c 89 add 0xe0(%rdi),%rdx 0.00 : 133: 64 24 30 test %rdx,%rdx 0.00 : 136: 4c 89 je 1a0 0.00 : 138: 6c 24 38 89 f5 4c testw $0xff1f,0x6(%rdx) ??:0 3.85 : 13e: 89 74 jne 1a0 0.00 : 140: 24 40 8b movzbl (%rdx),%eax 3.85 : 143: 47 68 49 and $0xf,%eax 0.00 : 146: 89 d4 2b 47 lea 0x0(%rbp,%rax,4),%eax 0.00 : 14a: 6c 49 89 cd mov %eax,(%r12) 0.00 : 14e: 29 f0 83 f8 movzbl 0x9(%rdx),%eax 0.00 : 152: 13 0f 8e 97 mov %al,0x0(%r13) 0.00 : 156: 00 00 00 48 mov 0x68(%rbx),%r8d 0.00 : 15a: 63 d6 48 03 97 mov $0x1,%eax 0.00 : 15f: e0 00 00 00 cmp %r8d,(%r12) 0.00 : 163: 48 85 jbe 1a2 0.00 : 165: d2 74 68 66 f7 42 06 cmpb $0x0,0x0(%rip) # 16c 0.00 : 16c: 1f ff 75 60 0f mov $0xffffffff,%eax 0.00 : 171: b6 02 je 1a2 0.00 : 173: 83 e0 0f movzbl (%rdx),%ecx 0.00 : 176: 8d 44 85 00 41 89 04 mov $0x0,%rsi 0.00 : 17d: 24 0f mov %ebp,%edx 0.00 : 17f: b6 42 09 41 88 45 00 mov $0x0,%rdi 0.00 : 186: 44 8b xor %eax,%eax 0.00 : 188: 43 68 b8 and $0xf,%ecx 0.00 : 18b: 01 00 00 shl $0x2,%ecx 0.00 : 18e: 00 45 39 04 24 callq 193 0.00 : 193: 76 3d 80 3d 00 mov $0xffffffff,%eax 0.00 : 198: 00 00 jmp 1a2 0.00 : 19a: 00 00 b8 ff ff ff nopw 0x0(%rax,%rax,1) 0.00 : 1a0: ff 74 xor %eax,%eax ??:0 11.54 : 1a2: 2f 0f b6 0a 48 mov 0x20(%rsp),%rbx ??:0 3.85 : 1a7: c7 c6 00 00 00 mov 0x28(%rsp),%rbp 0.00 : 1ac: 00 89 ea 48 c7 mov 0x30(%rsp),%r12 0.00 : 1b1: c7 00 00 00 00 mov 0x38(%rsp),%r13 0.00 : 1b6: 31 c0 83 e1 0f mov 0x40(%rsp),%r14 0.00 : 1bb: c1 e1 02 e8 add $0x48,%rsp 0.00 : 1bf: 00 retq 0.00 : 1c0: 00 00 00 b8 ff mov $0x14,%ecx 0.00 : 1c5: ff ff ff mov %rsp,%rdx 0.00 : 1c8: eb 08 66 0f 1f callq 1cd 0.00 : 1cd: 44 00 test %eax,%eax 0.00 : 1cf: 00 31 js 1a0 0.00 : 1d1: c0 48 8b mov %rsp,%rdx 0.00 : 1d4: 5c 24 20 48 8b jmpq 133 : 1d9: 6c 24 28 4c 8b 64 24 nopl 0x0(%rax) : 1e0: 30 push %rbp : 1e1: 4c 8b 6c add $0xc,%esi : 1e4: 24 push %rbx : 1e5: 38 4c 8b mov %rdx,%rbx : 1e8: 74 24 40 48 sub $0x18,%rsp : 1ec: 83 c4 48 mov 0x68(%rdi),%eax : 1ef: c3 b9 14 sub 0x6c(%rdi),%eax : 1f2: 00 00 sub %esi,%eax : 1f4: 00 48 89 cmp $0x7,%eax : 1f7: e2 e8 jle 220 : 1f9: 00 00 00 movslq %esi,%rdx : 1fc: 00 85 c0 78 cf 48 89 add 0xe0(%rdi),%rdx : 203: e2 e9 5a test %rdx,%rdx : 206: ff ff je 240 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:336 30.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:357 12.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 12.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 6.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:336 6.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798a90 : : * This is useful for measuring the total space occupied by a set of : * allocated chunks. : */ : Size : GetMemoryChunkSpace(void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:336 33.33 : 798a90: 55 push %rbp 0.00 : 798a91: 48 89 f8 mov %rdi,%rax : header = (StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE); : : AssertArg(MemoryContextIsValid(header->context)); : : return (*header->context->methods->get_chunk_space) (header->context, 0.00 : 798a94: 48 8b 7f f0 mov -0x10(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 12.12 : 798a98: 48 89 c6 mov %rax,%rsi : * This is useful for measuring the total space occupied by a set of : * allocated chunks. : */ : Size : GetMemoryChunkSpace(void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:336 6.06 : 798a9b: 48 89 e5 mov %rsp,%rbp : header = (StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE); : : AssertArg(MemoryContextIsValid(header->context)); : : return (*header->context->methods->get_chunk_space) (header->context, /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 6.06 : 798a9e: 48 8b 57 08 mov 0x8(%rdi),%rdx 12.12 : 798aa2: 4c 8b 5a 30 mov 0x30(%rdx),%r11 : pointer); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:357 30.30 : 798aa6: c9 leaveq : header = (StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE); : : AssertArg(MemoryContextIsValid(header->context)); : : return (*header->context->methods->get_chunk_space) (header->context, 0.00 : 798aa7: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 18.75 ??:0 18.75 ??:0 18.75 ??:0 18.75 ??:0 12.50 ??:0 6.25 ??:0 6.25 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000a7f50 <__waitpid>: ??:0 18.75 : a7f50: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 12.50 : a7f55: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : a7f5a: 89 d3 mov %edx,%ebx 0.00 : a7f5c: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : a7f61: 48 83 ec 18 sub $0x18,%rsp 0.00 : a7f65: 8b 05 49 f7 2c 00 mov 0x2cf749(%rip),%eax # 3776b4 <__libc_multiple_threads> 18.75 : a7f6b: 41 89 fc mov %edi,%r12d 0.00 : a7f6e: 48 89 f5 mov %rsi,%rbp 0.00 : a7f71: 85 c0 test %eax,%eax 0.00 : a7f73: 75 2f jne a7fa4 <__waitpid+0x54> 0.00 : a7f75: 45 31 d2 xor %r10d,%r10d 0.00 : a7f78: 48 63 d2 movslq %edx,%rdx 0.00 : a7f7b: 48 63 ff movslq %edi,%rdi 0.00 : a7f7e: b8 3d 00 00 00 mov $0x3d,%eax 0.00 : a7f83: 0f 05 syscall 18.75 : a7f85: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 18.75 : a7f8b: 89 c3 mov %eax,%ebx 0.00 : a7f8d: 77 44 ja a7fd3 <__waitpid+0x83> 0.00 : a7f8f: 89 d8 mov %ebx,%eax 0.00 : a7f91: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 6.25 : a7f96: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : a7f9a: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : a7f9f: 48 83 c4 18 add $0x18,%rsp 0.00 : a7fa3: c3 retq 0.00 : a7fa4: e8 87 02 04 00 callq e8230 <__libc_enable_asynccancel> 0.00 : a7fa9: 45 31 d2 xor %r10d,%r10d 0.00 : a7fac: 41 89 c0 mov %eax,%r8d 0.00 : a7faf: 48 63 d3 movslq %ebx,%rdx 0.00 : a7fb2: 48 89 ee mov %rbp,%rsi 0.00 : a7fb5: 49 63 fc movslq %r12d,%rdi 0.00 : a7fb8: b8 3d 00 00 00 mov $0x3d,%eax 0.00 : a7fbd: 0f 05 syscall 0.00 : a7fbf: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : a7fc5: 89 c3 mov %eax,%ebx 0.00 : a7fc7: 77 28 ja a7ff1 <__waitpid+0xa1> 0.00 : a7fc9: 44 89 c7 mov %r8d,%edi 0.00 : a7fcc: e8 bf 02 04 00 callq e8290 <__libc_disable_asynccancel> 0.00 : a7fd1: eb bc jmp a7f8f <__waitpid+0x3f> 0.00 : a7fd3: 89 c1 mov %eax,%ecx 6.25 : a7fd5: 48 8b 15 5c 9e 2c 00 mov 0x2c9e5c(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : a7fdc: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : a7fe3: 00 00 0.00 : a7fe5: f7 d9 neg %ecx 0.00 : a7fe7: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : a7fec: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : a7fef: eb 9e jmp a7f8f <__waitpid+0x3f> 0.00 : a7ff1: 89 c1 mov %eax,%ecx 0.00 : a7ff3: 48 8b 15 3e 9e 2c 00 mov 0x2c9e3e(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : a7ffa: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : a8001: 00 00 0.00 : a8003: f7 d9 neg %ecx 0.00 : a8005: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : a800a: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : a800d: eb ba jmp a7fc9 <__waitpid+0x79> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /bin/gawk ---------------------------------------------- 13.33 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000418660 : 0.00 : 418660: 41 57 push %r15 0.00 : 418662: 41 56 push %r14 0.00 : 418664: 41 55 push %r13 0.00 : 418666: 41 54 push %r12 0.00 : 418668: 55 push %rbp 0.00 : 418669: 31 ed xor %ebp,%ebp 0.00 : 41866b: 53 push %rbx 0.00 : 41866c: 48 81 ec e8 08 00 00 sub $0x8e8,%rsp 0.00 : 418673: c7 05 d3 c2 23 00 00 movl $0x0,0x23c2d3(%rip) # 654950 0.00 : 41867a: 00 00 00 0.00 : 41867d: c7 05 b9 a2 23 00 fe movl $0xfffffffe,0x23a2b9(%rip) # 652940 0.00 : 418684: ff ff ff 0.00 : 418687: 48 8d 9c 24 00 07 00 lea 0x700(%rsp),%rbx 0.00 : 41868e: 00 0.00 : 41868f: 4c 8d a4 24 c0 00 00 lea 0xc0(%rsp),%r12 0.00 : 418696: 00 0.00 : 418697: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41869e: 00 0.00 : 41869f: 48 c7 84 24 b8 00 00 movq $0xc8,0xb8(%rsp) 0.00 : 4186a6: 00 c8 00 00 00 0.00 : 4186ab: 48 c7 44 24 10 c7 00 movq $0xc7,0x10(%rsp) 0.00 : 4186b2: 00 00 0.00 : 4186b4: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 4186b9: 48 89 5c 24 48 mov %rbx,0x48(%rsp) 0.00 : 4186be: 4c 89 a4 24 a8 00 00 mov %r12,0xa8(%rsp) 0.00 : 4186c5: 00 0.00 : 4186c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4186cd: 00 00 00 0.00 : 4186d0: 48 8b 54 24 10 mov 0x10(%rsp),%rdx ??:0 6.67 : 4186d5: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 4186da: 48 8d 04 53 lea (%rbx,%rdx,2),%rax 0.00 : 4186de: 48 39 44 24 48 cmp %rax,0x48(%rsp) 0.00 : 4186e3: 66 89 29 mov %bp,(%rcx) 0.00 : 4186e6: 0f 83 24 2a 00 00 jae 41b110 0.00 : 4186ec: 83 fd 05 cmp $0x5,%ebp 0.00 : 4186ef: 4c 89 a4 24 90 00 00 mov %r12,0x90(%rsp) 0.00 : 4186f6: 00 0.00 : 4186f7: 0f 84 7a 20 00 00 je 41a777 0.00 : 4186fd: 48 63 ed movslq %ebp,%rbp 0.00 : 418700: 48 89 9c 24 98 00 00 mov %rbx,0x98(%rsp) 0.00 : 418707: 00 0.00 : 418708: 0f bf b4 2d e0 ea 43 movswl 0x43eae0(%rbp,%rbp,1),%esi 0.00 : 41870f: 00 6.67 : 418710: 48 89 6c 24 20 mov %rbp,0x20(%rsp) 0.00 : 418715: 81 fe 23 ff ff ff cmp $0xffffff23,%esi 0.00 : 41871b: 89 74 24 1c mov %esi,0x1c(%rsp) 6.67 : 41871f: 0f 84 b3 00 00 00 je 4187d8 0.00 : 418725: 83 3d 14 a2 23 00 fe cmpl $0xfffffffe,0x23a214(%rip) # 652940 6.67 : 41872c: 0f 84 ee 0d 00 00 je 419520 0.00 : 418732: 8b 05 08 a2 23 00 mov 0x23a208(%rip),%eax # 652940 0.00 : 418738: 85 c0 test %eax,%eax 0.00 : 41873a: 0f 8e d2 11 00 00 jle 419912 0.00 : 418740: 3d 2d 01 00 00 cmp $0x12d,%eax 0.00 : 418745: 0f 87 bb 29 00 00 ja 41b106 0.00 : 41874b: 48 98 cltq 0.00 : 41874d: 44 8b 54 24 1c mov 0x1c(%rsp),%r10d 0.00 : 418752: 0f b6 88 60 ed 43 00 movzbl 0x43ed60(%rax),%ecx 0.00 : 418759: 42 8d 04 11 lea (%rcx,%r10,1),%eax 0.00 : 41875d: 3d 40 04 00 00 cmp $0x440,%eax 0.00 : 418762: 77 7c ja 4187e0 0.00 : 418764: 48 63 d0 movslq %eax,%rdx 0.00 : 418767: 0f bf ac 12 a0 ee 43 movswl 0x43eea0(%rdx,%rdx,1),%ebp 0.00 : 41876e: 00 0.00 : 41876f: 39 cd cmp %ecx,%ebp 0.00 : 418771: 75 6d jne 4187e0 0.00 : 418773: 0f bf 94 12 40 f7 43 movswl 0x43f740(%rdx,%rdx,1),%edx 0.00 : 41877a: 00 0.00 : 41877b: 83 fa 00 cmp $0x0,%edx 0.00 : 41877e: 0f 8e ec 16 00 00 jle 419e70 6.67 : 418784: 44 8b 7c 24 44 mov 0x44(%rsp),%r15d 0.00 : 418789: 45 85 ff test %r15d,%r15d 0.00 : 41878c: 0f 85 d8 20 00 00 jne 41a86a 0.00 : 418792: 48 83 84 24 a8 00 00 addq $0x8,0xa8(%rsp) 0.00 : 418799: 00 08 0.00 : 41879b: 48 8b 35 a6 c1 23 00 mov 0x23c1a6(%rip),%rsi # 654948 0.00 : 4187a2: 89 d5 mov %edx,%ebp 0.00 : 4187a4: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 4187ab: 00 0.00 : 4187ac: c7 05 8a a1 23 00 fe movl $0xfffffffe,0x23a18a(%rip) # 652940 0.00 : 4187b3: ff ff ff 0.00 : 4187b6: 48 83 44 24 48 02 addq $0x2,0x48(%rsp) 0.00 : 4187bc: 48 8b 9c 24 98 00 00 mov 0x98(%rsp),%rbx 0.00 : 4187c3: 00 0.00 : 4187c4: 4c 8b a4 24 90 00 00 mov 0x90(%rsp),%r12 0.00 : 4187cb: 00 0.00 : 4187cc: 48 89 37 mov %rsi,(%rdi) 0.00 : 4187cf: e9 fc fe ff ff jmpq 4186d0 0.00 : 4187d4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4187d8: 48 89 9c 24 98 00 00 mov %rbx,0x98(%rsp) 0.00 : 4187df: 00 0.00 : 4187e0: 4c 8b 4c 24 20 mov 0x20(%rsp),%r9 0.00 : 4187e5: 41 0f b6 91 e0 ff 43 movzbl 0x43ffe0(%r9),%edx 0.00 : 4187ec: 00 0.00 : 4187ed: 85 d2 test %edx,%edx 0.00 : 4187ef: 0f 84 81 16 00 00 je 419e76 0.00 : 4187f5: 48 63 da movslq %edx,%rbx 0.00 : 4187f8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4187fd: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 418804: 00 0.00 : 418805: 44 0f b6 93 20 01 44 movzbl 0x440120(%rbx),%r10d 0.00 : 41880c: 00 0.00 : 41880d: 48 89 5c 24 28 mov %rbx,0x28(%rsp) 0.00 : 418812: 44 29 d0 sub %r10d,%eax 0.00 : 418815: 81 fa a5 00 00 00 cmp $0xa5,%edx 0.00 : 41881b: 44 89 54 24 50 mov %r10d,0x50(%rsp) 0.00 : 418820: 48 98 cltq 0.00 : 418822: 4d 8b 7c c5 00 mov 0x0(%r13,%rax,8),%r15 0.00 : 418827: 0f 86 e3 00 00 00 jbe 418910 0.00 : 41882d: 4c 63 5c 24 50 movslq 0x50(%rsp),%r11 0.00 : 418832: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 418839: 00 0.00 : 41883a: 4a 8d 14 dd 00 00 00 lea 0x0(,%r11,8),%rdx 0.00 : 418841: 00 0.00 : 418842: 4d 01 db add %r11,%r11 0.00 : 418845: 4c 29 5c 24 48 sub %r11,0x48(%rsp) 0.00 : 41884a: 48 29 d1 sub %rdx,%rcx 0.00 : 41884d: 4c 8d 61 08 lea 0x8(%rcx),%r12 0.00 : 418851: 48 89 ca mov %rcx,%rdx 0.00 : 418854: 4c 89 a4 24 a8 00 00 mov %r12,0xa8(%rsp) 0.00 : 41885b: 00 0.00 : 41885c: 4c 89 7a 08 mov %r15,0x8(%rdx) 0.00 : 418860: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 418865: 4c 8b 64 24 48 mov 0x48(%rsp),%r12 0.00 : 41886a: 44 0f b6 8e e0 01 44 movzbl 0x4401e0(%rsi),%r9d 0.00 : 418871: 00 0.00 : 418872: 41 0f b7 34 24 movzwl (%r12),%esi 0.00 : 418877: 41 83 e9 43 sub $0x43,%r9d 0.00 : 41887b: 0f bf d6 movswl %si,%edx 6.67 : 41887e: 49 63 c9 movslq %r9d,%rcx 0.00 : 418881: 0f bf bc 09 a0 02 44 movswl 0x4402a0(%rcx,%rcx,1),%edi 0.00 : 418888: 00 0.00 : 418889: 8d 04 3a lea (%rdx,%rdi,1),%eax 0.00 : 41888c: 3d 40 04 00 00 cmp $0x440,%eax 0.00 : 418891: 77 10 ja 4188a3 0.00 : 418893: 48 98 cltq 0.00 : 418895: 66 3b b4 00 a0 ee 43 cmp 0x43eea0(%rax,%rax,1),%si 0.00 : 41889c: 00 0.00 : 41889d: 0f 84 0d 10 00 00 je 4198b0 13.33 : 4188a3: 0f bf ac 09 20 03 44 movswl 0x440320(%rcx,%rcx,1),%ebp 0.00 : 4188aa: 00 0.00 : 4188ab: 48 83 44 24 48 02 addq $0x2,0x48(%rsp) 0.00 : 4188b1: 48 8b 9c 24 98 00 00 mov 0x98(%rsp),%rbx 0.00 : 4188b8: 00 0.00 : 4188b9: 4c 8b a4 24 90 00 00 mov 0x90(%rsp),%r12 0.00 : 4188c0: 00 0.00 : 4188c1: e9 0a fe ff ff jmpq 4186d0 0.00 : 4188c6: 83 fa a3 cmp $0xffffffa3,%edx 0.00 : 4188c9: 0f 84 a7 15 00 00 je 419e76 0.00 : 4188cf: f7 da neg %edx 0.00 : 4188d1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4188d6: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : 4188dd: 00 0.00 : 4188de: 48 63 ca movslq %edx,%rcx 0.00 : 4188e1: 44 0f b6 99 20 01 44 movzbl 0x440120(%rcx),%r11d 0.00 : 4188e8: 00 0.00 : 4188e9: 48 89 4c 24 28 mov %rcx,0x28(%rsp) 0.00 : 4188ee: 44 29 d8 sub %r11d,%eax 0.00 : 4188f1: 81 fa a5 00 00 00 cmp $0xa5,%edx 0.00 : 4188f7: 44 89 5c 24 50 mov %r11d,0x50(%rsp) 0.00 : 4188fc: 48 98 cltq 0.00 : 4188fe: 4d 8b 3c c4 mov (%r12,%rax,8),%r15 0.00 : 418902: 0f 87 25 ff ff ff ja 41882d 0.00 : 418908: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41890f: 00 0.00 : 418910: 89 d5 mov %edx,%ebp 0.00 : 418912: ff 24 ed 90 d1 43 00 jmpq *0x43d190(,%rbp,8) 0.00 : 418919: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 418920: 00 0.00 : 418921: 48 63 44 24 50 movslq 0x50(%rsp),%rax 0.00 : 418926: 48 8b 0b mov (%rbx),%rcx 0.00 : 418929: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 418930: 00 0.00 : 418931: 48 29 d3 sub %rdx,%rbx 0.00 : 418934: 48 01 c0 add %rax,%rax 0.00 : 418937: 48 29 44 24 48 sub %rax,0x48(%rsp) 0.00 : 41893c: 48 8d 73 08 lea 0x8(%rbx),%rsi 0.00 : 418940: 48 89 4b 08 mov %rcx,0x8(%rbx) 0.00 : 418944: 48 89 b4 24 a8 00 00 mov %rsi,0xa8(%rsp) 0.00 : 41894b: 00 0.00 : 41894c: e9 0f ff ff ff jmpq 418860 0.00 : 418951: 48 63 44 24 50 movslq 0x50(%rsp),%rax 0.00 : 418956: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41895d: 00 0.00 : 41895e: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 418965: 00 0.00 : 418966: 49 8b 08 mov (%r8),%rcx 0.00 : 418969: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 418970: 00 0.00 : 418971: eb be jmp 418931 0.00 : 418973: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41897a: 00 0.00 : 41897b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 418980: 4c 63 5c 24 50 movslq 0x50(%rsp),%r11 0.00 : 418985: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41898c: 00 0.00 : 41898d: 4e 8d 04 dd 00 00 00 lea 0x0(,%r11,8),%r8 0.00 : 418994: 00 0.00 : 418995: 4d 01 db add %r11,%r11 0.00 : 418998: 4c 29 5c 24 48 sub %r11,0x48(%rsp) 0.00 : 41899d: 4c 29 c1 sub %r8,%rcx 0.00 : 4189a0: 48 8d 69 08 lea 0x8(%rcx),%rbp 0.00 : 4189a4: 48 89 ca mov %rcx,%rdx 0.00 : 4189a7: 48 89 ac 24 a8 00 00 mov %rbp,0xa8(%rsp) 0.00 : 4189ae: 00 0.00 : 4189af: e9 a8 fe ff ff jmpq 41885c 0.00 : 4189b4: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 4189bb: 00 0.00 : 4189bc: 48 8b 2a mov (%rdx),%rbp 0.00 : 4189bf: 48 85 ed test %rbp,%rbp 0.00 : 4189c2: 0f 84 79 3b 00 00 je 41c541 0.00 : 4189c8: 8b 15 32 79 23 00 mov 0x237932(%rip),%edx # 650300 0.00 : 4189ce: 85 d2 test %edx,%edx 0.00 : 4189d0: 0f 85 57 3b 00 00 jne 41c52d 0.00 : 4189d6: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 4189dd: 00 0.00 : 4189de: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 4189e5: 00 0.00 : 4189e6: 49 89 ef mov %rbp,%r15 0.00 : 4189e9: 49 8b 58 f8 mov -0x8(%r8),%rbx 0.00 : 4189ed: 49 83 ed 08 sub $0x8,%r13 0.00 : 4189f1: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 4189f8: 00 0.00 : 4189f9: 48 85 db test %rbx,%rbx 0.00 : 4189fc: 74 82 je 418980 0.00 : 4189fe: 83 7d 38 25 cmpl $0x25,0x38(%rbp) 0.00 : 418a02: 49 89 ec mov %rbp,%r12 0.00 : 418a05: 74 6e je 418a75 0.00 : 418a07: 48 8b 15 72 79 23 00 mov 0x237972(%rip),%rdx # 650380 0.00 : 418a0e: 48 85 d2 test %rdx,%rdx 0.00 : 418a11: 0f 84 06 3b 00 00 je 41c51d 0.00 : 418a17: 4c 8b 0a mov (%rdx),%r9 0.00 : 418a1a: 4c 89 0d 5f 79 23 00 mov %r9,0x23795f(%rip) # 650380 0.00 : 418a21: 48 8b 05 58 4e 23 00 mov 0x234e58(%rip),%rax # 64d880 0.00 : 418a28: c7 42 38 25 00 00 00 movl $0x25,0x38(%rdx) 0.00 : 418a2f: 66 c7 42 3c 01 00 movw $0x1,0x3c(%rdx) 0.00 : 418a35: 48 85 c0 test %rax,%rax 0.00 : 418a38: 74 12 je 418a4c 0.00 : 418a3a: 48 3b 05 37 4e 23 00 cmp 0x234e37(%rip),%rax # 64d878 0.00 : 418a41: 72 09 jb 418a4c 0.00 : 418a43: 80 38 0a cmpb $0xa,(%rax) 0.00 : 418a46: 0f 84 0c 1e 00 00 je 41a858 0.00 : 418a4c: 44 8b 15 05 79 23 00 mov 0x237905(%rip),%r10d # 650358 0.00 : 418a53: 66 44 89 52 20 mov %r10w,0x20(%rdx) 0.00 : 418a58: 4c 8b 25 01 79 23 00 mov 0x237901(%rip),%r12 # 650360 0.00 : 418a5f: 48 89 2a mov %rbp,(%rdx) 0.00 : 418a62: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 418a69: 00 0.00 : 418a6a: 4c 89 62 18 mov %r12,0x18(%rdx) 0.00 : 418a6e: 49 8b 5d 00 mov 0x0(%r13),%rbx 0.00 : 418a72: 49 89 d4 mov %rdx,%r12 0.00 : 418a75: 83 7b 38 25 cmpl $0x25,0x38(%rbx) 0.00 : 418a79: 48 89 d8 mov %rbx,%rax 0.00 : 418a7c: 0f 85 7e 1b 00 00 jne 41a600 0.00 : 418a82: 48 3b 05 c7 4d 23 00 cmp 0x234dc7(%rip),%rax # 64d850 0.00 : 418a89: 0f 85 08 19 00 00 jne 41a397 0.00 : 418a8f: 48 8b 0d b2 4d 23 00 mov 0x234db2(%rip),%rcx # 64d848 0.00 : 418a96: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 418a9a: 48 89 ce mov %rcx,%rsi 0.00 : 418a9d: 48 85 d2 test %rdx,%rdx 0.00 : 418aa0: 74 3c je 418ade 0.00 : 418aa2: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 418aa6: 48 89 d6 mov %rdx,%rsi 0.00 : 418aa9: 48 85 c9 test %rcx,%rcx 0.00 : 418aac: 74 30 je 418ade 0.00 : 418aae: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 418ab2: 48 89 ce mov %rcx,%rsi 0.00 : 418ab5: 48 85 d2 test %rdx,%rdx 0.00 : 418ab8: 74 24 je 418ade 0.00 : 418aba: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 418abe: 48 89 d6 mov %rdx,%rsi 0.00 : 418ac1: 48 85 c9 test %rcx,%rcx 0.00 : 418ac4: 74 18 je 418ade 0.00 : 418ac6: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 418aca: 48 89 ce mov %rcx,%rsi 0.00 : 418acd: 48 85 d2 test %rdx,%rdx 0.00 : 418ad0: 74 0c je 418ade 0.00 : 418ad2: 48 89 d6 mov %rdx,%rsi 0.00 : 418ad5: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 418ad9: 48 85 d2 test %rdx,%rdx 0.00 : 418adc: 75 f4 jne 418ad2 0.00 : 418ade: 4c 89 66 08 mov %r12,0x8(%rsi) 0.00 : 418ae2: 49 89 c7 mov %rax,%r15 0.00 : 418ae5: 4c 89 25 5c 4d 23 00 mov %r12,0x234d5c(%rip) # 64d848 0.00 : 418aec: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 418af3: 00 0.00 : 418af4: e9 87 fe ff ff jmpq 418980 0.00 : 418af9: 4c 8b bc 24 a8 00 00 mov 0xa8(%rsp),%r15 0.00 : 418b00: 00 0.00 : 418b01: ba 46 00 00 00 mov $0x46,%edx 0.00 : 418b06: be 01 00 00 00 mov $0x1,%esi 0.00 : 418b0b: 49 8b 3f mov (%r15),%rdi 0.00 : 418b0e: e8 fd f8 ff ff callq 418410 0.00 : 418b13: 49 89 c7 mov %rax,%r15 0.00 : 418b16: e9 65 fe ff ff jmpq 418980 0.00 : 418b1b: 48 8b 15 5e 78 23 00 mov 0x23785e(%rip),%rdx # 650380 0.00 : 418b22: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 418b29: 00 0.00 : 418b2a: 48 85 d2 test %rdx,%rdx 0.00 : 418b2d: 49 8b 18 mov (%r8),%rbx 0.00 : 418b30: 0f 84 d4 39 00 00 je 41c50a 0.00 : 418b36: 48 8b 3a mov (%rdx),%rdi 0.00 : 418b39: 48 89 3d 40 78 23 00 mov %rdi,0x237840(%rip) # 650380 0.00 : 418b40: 48 8b 05 39 4d 23 00 mov 0x234d39(%rip),%rax # 64d880 0.00 : 418b47: c7 42 38 29 00 00 00 movl $0x29,0x38(%rdx) 0.00 : 418b4e: 66 c7 42 3c 01 00 movw $0x1,0x3c(%rdx) 0.00 : 418b54: 48 85 c0 test %rax,%rax 0.00 : 418b57: 74 12 je 418b6b 0.00 : 418b59: 48 3b 05 18 4d 23 00 cmp 0x234d18(%rip),%rax # 64d878 0.00 : 418b60: 72 09 jb 418b6b 0.00 : 418b62: 80 38 0a cmpb $0xa,(%rax) 0.00 : 418b65: 0f 84 b6 1c 00 00 je 41a821 0.00 : 418b6b: 44 8b 0d e6 77 23 00 mov 0x2377e6(%rip),%r9d # 650358 0.00 : 418b72: 66 44 89 4a 20 mov %r9w,0x20(%rdx) 0.00 : 418b77: 4c 8b 2d e2 77 23 00 mov 0x2377e2(%rip),%r13 # 650360 0.00 : 418b7e: 49 89 d7 mov %rdx,%r15 0.00 : 418b81: 48 89 1a mov %rbx,(%rdx) 0.00 : 418b84: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 418b8b: 00 0.00 : 418b8c: 4c 89 6a 18 mov %r13,0x18(%rdx) 0.00 : 418b90: e9 eb fd ff ff jmpq 418980 0.00 : 418b95: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 418b9c: 00 0.00 : 418b9d: 4c 8b 3e mov (%rsi),%r15 0.00 : 418ba0: e9 db fd ff ff jmpq 418980 0.00 : 418ba5: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 418bac: 00 0.00 : 418bad: 4d 8b 38 mov (%r8),%r15 0.00 : 418bb0: e9 cb fd ff ff jmpq 418980 0.00 : 418bb5: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 418bbc: 00 0.00 : 418bbd: 4c 8b 3e mov (%rsi),%r15 0.00 : 418bc0: e9 bb fd ff ff jmpq 418980 0.00 : 418bc5: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 418bcc: 00 0.00 : 418bcd: 4c 8b 3f mov (%rdi),%r15 0.00 : 418bd0: e9 ab fd ff ff jmpq 418980 0.00 : 418bd5: 48 8b 0d a4 77 23 00 mov 0x2377a4(%rip),%rcx # 650380 0.00 : 418bdc: 4c 8b b4 24 a8 00 00 mov 0xa8(%rsp),%r14 0.00 : 418be3: 00 0.00 : 418be4: 48 85 c9 test %rcx,%rcx 0.00 : 418be7: 49 8b 1e mov (%r14),%rbx 0.00 : 418bea: 0f 84 0d 39 00 00 je 41c4fd 0.00 : 418bf0: 48 8b 01 mov (%rcx),%rax 0.00 : 418bf3: 48 89 05 86 77 23 00 mov %rax,0x237786(%rip) # 650380 0.00 : 418bfa: 48 8b 05 7f 4c 23 00 mov 0x234c7f(%rip),%rax # 64d880 0.00 : 418c01: c7 41 38 29 00 00 00 movl $0x29,0x38(%rcx) 0.00 : 418c08: 66 c7 41 3c 01 00 movw $0x1,0x3c(%rcx) 0.00 : 418c0e: 48 85 c0 test %rax,%rax 0.00 : 418c11: 74 12 je 418c25 0.00 : 418c13: 48 3b 05 5e 4c 23 00 cmp 0x234c5e(%rip),%rax # 64d878 0.00 : 418c1a: 72 09 jb 418c25 0.00 : 418c1c: 80 38 0a cmpb $0xa,(%rax) 0.00 : 418c1f: 0f 84 c3 38 00 00 je 41c4e8 0.00 : 418c25: 44 8b 15 2c 77 23 00 mov 0x23772c(%rip),%r10d # 650358 0.00 : 418c2c: 66 44 89 51 20 mov %r10w,0x20(%rcx) 0.00 : 418c31: 4c 8b 1d 28 77 23 00 mov 0x237728(%rip),%r11 # 650360 0.00 : 418c38: 48 89 19 mov %rbx,(%rcx) 0.00 : 418c3b: 48 c7 41 08 00 00 00 movq $0x0,0x8(%rcx) 0.00 : 418c42: 00 0.00 : 418c43: 4c 89 59 18 mov %r11,0x18(%rcx) 0.00 : 418c47: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 418c4e: 00 0.00 : 418c4f: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 418c53: 48 85 c0 test %rax,%rax 0.00 : 418c56: 74 2f je 418c87 0.00 : 418c58: 48 3b 05 f1 4b 23 00 cmp 0x234bf1(%rip),%rax # 64d850 0.00 : 418c5f: 0f 84 b5 19 00 00 je 41a61a 0.00 : 418c65: 48 89 05 e4 4b 23 00 mov %rax,0x234be4(%rip) # 64d850 0.00 : 418c6c: 48 89 c2 mov %rax,%rdx 0.00 : 418c6f: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 418c73: 48 85 f6 test %rsi,%rsi 0.00 : 418c76: 0f 85 4a 38 00 00 jne 41c4c6 0.00 : 418c7c: 48 89 4a 08 mov %rcx,0x8(%rdx) 0.00 : 418c80: 48 89 0d c1 4b 23 00 mov %rcx,0x234bc1(%rip) # 64d848 0.00 : 418c87: 49 89 c7 mov %rax,%r15 0.00 : 418c8a: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 418c91: 00 0.00 : 418c92: e9 e9 fc ff ff jmpq 418980 0.00 : 418c97: 8b 0d 63 76 23 00 mov 0x237663(%rip),%ecx # 650300 0.00 : 418c9d: 85 c9 test %ecx,%ecx 0.00 : 418c9f: 0f 85 cd 37 00 00 jne 41c472 0.00 : 418ca5: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 418cac: 00 0.00 : 418cad: 48 8b 5d 00 mov 0x0(%rbp),%rbx 0.00 : 418cb1: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 418cb8: 00 0.00 : 418cb9: 41 8b 78 f8 mov -0x8(%r8),%edi 0.00 : 418cbd: 49 8b 68 f0 mov -0x10(%r8),%rbp 0.00 : 418cc1: 83 ff 10 cmp $0x10,%edi 0.00 : 418cc4: 0f 85 af 1e 00 00 jne 41ab79 0.00 : 418cca: 8b 55 38 mov 0x38(%rbp),%edx 0.00 : 418ccd: 8d 7a ba lea -0x46(%rdx),%edi 0.00 : 418cd0: 83 ff 01 cmp $0x1,%edi 0.00 : 418cd3: 0f 86 3f 17 00 00 jbe 41a418 0.00 : 418cd9: 83 fa 2a cmp $0x2a,%edx 0.00 : 418cdc: 0f 84 36 17 00 00 je 41a418 0.00 : 418ce2: 48 8b 15 97 76 23 00 mov 0x237697(%rip),%rdx # 650380 0.00 : 418ce9: 48 85 d2 test %rdx,%rdx 0.00 : 418cec: 0f 84 5b 37 00 00 je 41c44d 0.00 : 418cf2: 4c 8b 2a mov (%rdx),%r13 0.00 : 418cf5: 4c 89 2d 84 76 23 00 mov %r13,0x237684(%rip) # 650380 0.00 : 418cfc: 48 8b 05 7d 4b 23 00 mov 0x234b7d(%rip),%rax # 64d880 0.00 : 418d03: c7 42 38 10 00 00 00 movl $0x10,0x38(%rdx) 0.00 : 418d0a: 66 c7 42 3c 01 00 movw $0x1,0x3c(%rdx) 0.00 : 418d10: 48 85 c0 test %rax,%rax 0.00 : 418d13: 74 12 je 418d27 0.00 : 418d15: 48 3b 05 5c 4b 23 00 cmp 0x234b5c(%rip),%rax # 64d878 0.00 : 418d1c: 72 09 jb 418d27 0.00 : 418d1e: 80 38 0a cmpb $0xa,(%rax) 0.00 : 418d21: 0f 84 36 37 00 00 je 41c45d 0.00 : 418d27: 8b 05 2b 76 23 00 mov 0x23762b(%rip),%eax # 650358 0.00 : 418d2d: 66 89 42 20 mov %ax,0x20(%rdx) 0.00 : 418d31: 4c 8b 3d 28 76 23 00 mov 0x237628(%rip),%r15 # 650360 0.00 : 418d38: 48 89 2a mov %rbp,(%rdx) 0.00 : 418d3b: 48 89 5a 08 mov %rbx,0x8(%rdx) 0.00 : 418d3f: 4c 89 7a 18 mov %r15,0x18(%rdx) 0.00 : 418d43: 49 89 d7 mov %rdx,%r15 0.00 : 418d46: e9 35 fc ff ff jmpq 418980 0.00 : 418d4b: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 418d52: 00 0.00 : 418d53: 48 bf 00 00 00 00 ff movabs $0xffffffff00000000,%rdi 0.00 : 418d5a: ff ff ff 0.00 : 418d5d: 49 21 ff and %rdi,%r15 0.00 : 418d60: 44 8b 08 mov (%rax),%r9d 6.67 : 418d63: 4d 09 cf or %r9,%r15 0.00 : 418d66: e9 15 fc ff ff jmpq 418980 0.00 : 418d6b: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 418d72: 00 0.00 : 418d73: 8b 6b e8 mov -0x18(%rbx),%ebp 0.00 : 418d76: 83 fd 34 cmp $0x34,%ebp 0.00 : 418d79: 0f 85 91 1a 00 00 jne 41a810 0.00 : 418d7f: 49 89 dc mov %rbx,%r12 0.00 : 418d82: 48 8b 5b f8 mov -0x8(%rbx),%rbx 0.00 : 418d86: 49 83 ec 08 sub $0x8,%r12 0.00 : 418d8a: 48 85 db test %rbx,%rbx 0.00 : 418d8d: 0f 84 23 36 00 00 je 41c3b6 0.00 : 418d93: 83 7b 38 29 cmpl $0x29,0x38(%rbx) 0.00 : 418d97: 75 14 jne 418dad 0.00 : 418d99: 48 83 7b 08 00 cmpq $0x0,0x8(%rbx) 0.00 : 418d9e: 75 0d jne 418dad 0.00 : 418da0: 48 8b 03 mov (%rbx),%rax 0.00 : 418da3: 83 78 38 0f cmpl $0xf,0x38(%rax) 0.00 : 418da7: 0f 84 e5 35 00 00 je 41c392 0.00 : 418dad: 48 8b 15 cc 75 23 00 mov 0x2375cc(%rip),%rdx # 650380 0.00 : 418db4: 4c 8b bc 24 a8 00 00 mov 0xa8(%rsp),%r15 0.00 : 418dbb: 00 0.00 : 418dbc: 48 85 d2 test %rdx,%rdx 0.00 : 418dbf: 4d 8b 27 mov (%r15),%r12 0.00 : 418dc2: 0f 84 bd 35 00 00 je 41c385 0.00 : 418dc8: 48 8b 32 mov (%rdx),%rsi 0.00 : 418dcb: 48 89 35 ae 75 23 00 mov %rsi,0x2375ae(%rip) # 650380 0.00 : 418dd2: 48 8b 05 a7 4a 23 00 mov 0x234aa7(%rip),%rax # 64d880 0.00 : 418dd9: 89 6a 38 mov %ebp,0x38(%rdx) 0.00 : 418ddc: 66 c7 42 3c 01 00 movw $0x1,0x3c(%rdx) 0.00 : 418de2: 48 85 c0 test %rax,%rax 0.00 : 418de5: 74 12 je 418df9 0.00 : 418de7: 48 3b 05 8a 4a 23 00 cmp 0x234a8a(%rip),%rax # 64d878 0.00 : 418dee: 72 09 jb 418df9 0.00 : 418df0: 80 38 0a cmpb $0xa,(%rax) 0.00 : 418df3: 0f 84 5a 35 00 00 je 41c353 0.00 : 418df9: 8b 2d 59 75 23 00 mov 0x237559(%rip),%ebp # 650358 0.00 : 418dff: 66 89 6a 20 mov %bp,0x20(%rdx) 0.00 : 418e03: 83 7a 38 36 cmpl $0x36,0x38(%rdx) 0.00 : 418e07: 48 8b 3d 52 75 23 00 mov 0x237552(%rip),%rdi # 650360 0.00 : 418e0e: 49 89 d7 mov %rdx,%r15 0.00 : 418e11: 48 89 1a mov %rbx,(%rdx) 0.00 : 418e14: 4c 89 62 08 mov %r12,0x8(%rdx) 0.00 : 418e18: 48 89 7a 18 mov %rdi,0x18(%rdx) 0.00 : 418e1c: 0f 85 5e fb ff ff jne 418980 0.00 : 418e22: 31 c0 xor %eax,%eax 0.00 : 418e24: 48 85 db test %rbx,%rbx 0.00 : 418e27: 74 48 je 418e71 0.00 : 418e29: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 418e2d: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 418e32: 48 85 c0 test %rax,%rax 0.00 : 418e35: 74 37 je 418e6e 0.00 : 418e37: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 418e3b: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 418e40: 48 85 c0 test %rax,%rax 0.00 : 418e43: 74 29 je 418e6e 0.00 : 418e45: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 418e49: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 418e4e: 48 85 c0 test %rax,%rax 0.00 : 418e51: 74 1b je 418e6e 0.00 : 418e53: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 418e57: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 418e5c: 48 85 c0 test %rax,%rax 0.00 : 418e5f: 74 0d je 418e6e 0.00 : 418e61: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 418e65: 48 83 c1 01 add $0x1,%rcx 0.00 : 418e69: 48 85 c0 test %rax,%rax 0.00 : 418e6c: 75 f3 jne 418e61 0.00 : 418e6e: 48 89 c8 mov %rcx,%rax 0.00 : 418e71: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 418e75: e9 06 fb ff ff jmpq 418980 0.00 : 418e7a: c7 05 3c 49 23 00 01 movl $0x1,0x23493c(%rip) # 64d7c0 0.00 : 418e81: 00 00 00 0.00 : 418e84: c7 05 36 49 23 00 00 movl $0x0,0x234936(%rip) # 64d7c4 0.00 : 418e8b: 00 00 00 0.00 : 418e8e: e9 ed fa ff ff jmpq 418980 0.00 : 418e93: 45 31 ff xor %r15d,%r15d 0.00 : 418e96: e9 e5 fa ff ff jmpq 418980 0.00 : 418e9b: c7 05 1b 49 23 00 00 movl $0x0,0x23491b(%rip) # 64d7c0 0.00 : 418ea2: 00 00 00 0.00 : 418ea5: c7 05 15 49 23 00 00 movl $0x0,0x234915(%rip) # 64d7c4 0.00 : 418eac: 00 00 00 0.00 : 418eaf: 45 31 ff xor %r15d,%r15d 0.00 : 418eb2: e9 c9 fa ff ff jmpq 418980 0.00 : 418eb7: c7 05 f7 48 23 00 00 movl $0x0,0x2348f7(%rip) # 64d7b8 0.00 : 418ebe: 00 00 00 0.00 : 418ec1: c7 05 f1 48 23 00 00 movl $0x0,0x2348f1(%rip) # 64d7bc 0.00 : 418ec8: 00 00 00 0.00 : 418ecb: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 418ed2: 00 0.00 : 418ed3: e9 a8 fa ff ff jmpq 418980 0.00 : 418ed8: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 418edf: 00 0.00 : 418ee0: 4d 8b 7b e8 mov -0x18(%r11),%r15 0.00 : 418ee4: e9 97 fa ff ff jmpq 418980 0.00 : 418ee9: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 418ef0: 00 0.00 : 418ef1: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 418ef5: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 418ef9: be 4a 00 00 00 mov $0x4a,%esi 0.00 : 418efe: e8 bd ec ff ff callq 417bc0 0.00 : 418f03: 49 89 c7 mov %rax,%r15 0.00 : 418f06: e9 75 fa ff ff jmpq 418980 0.00 : 418f0b: 45 31 ff xor %r15d,%r15d 0.00 : 418f0e: e9 6d fa ff ff jmpq 418980 0.00 : 418f13: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 418f1a: 00 0.00 : 418f1b: 4d 8b 41 f8 mov -0x8(%r9),%r8 0.00 : 418f1f: 4d 8b 31 mov (%r9),%r14 0.00 : 418f22: 4d 89 70 08 mov %r14,0x8(%r8) 0.00 : 418f26: e9 55 fa ff ff jmpq 418980 0.00 : 418f2b: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 418f32: 00 0.00 : 418f33: be 08 00 00 00 mov $0x8,%esi 0.00 : 418f38: 49 8b 79 f8 mov -0x8(%r9),%rdi 0.00 : 418f3c: 49 8b 11 mov (%r9),%rdx 0.00 : 418f3f: e8 2c e8 ff ff callq 417770 0.00 : 418f44: 49 89 c7 mov %rax,%r15 0.00 : 418f47: e9 34 fa ff ff jmpq 418980 0.00 : 418f4c: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 418f53: 00 0.00 : 418f54: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 418f59: 4d 8b 72 f8 mov -0x8(%r10),%r14 0.00 : 418f5d: e8 5e dc ff ff callq 416bc0 0.00 : 418f62: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 418f69: 00 0.00 : 418f6a: 4c 89 30 mov %r14,(%rax) 0.00 : 418f6d: 4c 8b bc 24 a8 00 00 mov 0xa8(%rsp),%r15 0.00 : 418f74: 00 0.00 : 418f75: 49 8b 17 mov (%r15),%rdx 0.00 : 418f78: 49 89 c7 mov %rax,%r15 0.00 : 418f7b: 48 85 d2 test %rdx,%rdx 0.00 : 418f7e: 0f 84 fc f9 ff ff je 418980 0.00 : 418f84: 80 3a 2b cmpb $0x2b,(%rdx) 0.00 : 418f87: 0f 85 db 33 00 00 jne 41c368 0.00 : 418f8d: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 418f92: e8 29 dc ff ff callq 416bc0 0.00 : 418f97: 4c 89 38 mov %r15,(%rax) 0.00 : 418f9a: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 418fa1: 00 0.00 : 418fa2: 49 89 c7 mov %rax,%r15 0.00 : 418fa5: e9 d6 f9 ff ff jmpq 418980 0.00 : 418faa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 418fb0: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 418fb7: 00 0.00 : 418fb8: 4c 8b 38 mov (%rax),%r15 0.00 : 418fbb: e9 c0 f9 ff ff jmpq 418980 0.00 : 418fc0: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 418fc7: 00 0.00 : 418fc8: 4c 8b 39 mov (%rcx),%r15 0.00 : 418fcb: e9 b0 f9 ff ff jmpq 418980 0.00 : 418fd0: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 418fd7: 00 0.00 : 418fd8: 48 8b 5d 00 mov 0x0(%rbp),%rbx 0.00 : 418fdc: 48 89 df mov %rbx,%rdi 0.00 : 418fdf: e8 4c dd fe ff callq 406d30 0.00 : 418fe4: 44 8b 15 15 73 23 00 mov 0x237315(%rip),%r10d # 650300 0.00 : 418feb: 48 89 c5 mov %rax,%rbp 0.00 : 418fee: 45 85 d2 test %r10d,%r10d 0.00 : 418ff1: 0f 85 d0 32 00 00 jne 41c2c7 0.00 : 418ff7: 48 8b 1d 82 73 23 00 mov 0x237382(%rip),%rbx # 650380 0.00 : 418ffe: 48 85 db test %rbx,%rbx 0.00 : 419001: 0f 84 6b 32 00 00 je 41c272 0.00 : 419007: 4c 8b 1b mov (%rbx),%r11 0.00 : 41900a: 4c 89 1d 6f 73 23 00 mov %r11,0x23736f(%rip) # 650380 0.00 : 419011: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 419018: 00 0.00 : 419019: c7 43 38 50 00 00 00 movl $0x50,0x38(%rbx) 0.00 : 419020: 31 d2 xor %edx,%edx 0.00 : 419022: 48 89 ee mov %rbp,%rsi 0.00 : 419025: 48 8b 39 mov (%rcx),%rdi 0.00 : 419028: e8 73 c4 01 00 callq 4354a0 0.00 : 41902d: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 419031: 4c 8b bc 24 a8 00 00 mov 0xa8(%rsp),%r15 0.00 : 419038: 00 0.00 : 419039: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 41903e: 31 d2 xor %edx,%edx 0.00 : 419040: 48 89 ee mov %rbp,%rsi 0.00 : 419043: 49 8b 3f mov (%r15),%rdi 0.00 : 419046: 49 89 df mov %rbx,%r15 0.00 : 419049: e8 d2 d3 01 00 callq 436420 0.00 : 41904e: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 0.00 : 419055: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 419059: 48 c7 43 28 02 00 00 movq $0x2,0x28(%rbx) 0.00 : 419060: 00 0.00 : 419061: 66 c7 43 20 01 00 movw $0x1,0x20(%rbx) 0.00 : 419067: e9 14 f9 ff ff jmpq 418980 0.00 : 41906c: 83 05 e9 47 23 00 01 addl $0x1,0x2347e9(%rip) # 64d85c 0.00 : 419073: e9 08 f9 ff ff jmpq 418980 0.00 : 419078: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 41907f: 00 0.00 : 419080: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 419087: 00 0.00 : 419088: 49 8b 7a e8 mov -0x18(%r10),%rdi 0.00 : 41908c: 48 83 eb 18 sub $0x18,%rbx 0.00 : 419090: e8 9b d5 ff ff callq 416630 0.00 : 419095: 48 85 c0 test %rax,%rax 0.00 : 419098: 0f 84 eb 15 00 00 je 41a689 0.00 : 41909e: 8b 50 38 mov 0x38(%rax),%edx 0.00 : 4190a1: 83 fa 46 cmp $0x46,%edx 0.00 : 4190a4: 0f 84 df 15 00 00 je 41a689 0.00 : 4190aa: 0f 86 64 31 00 00 jbe 41c214 0.00 : 4190b0: 83 fa 48 cmp $0x48,%edx 0.00 : 4190b3: 0f 84 d0 15 00 00 je 41a689 0.00 : 4190b9: 83 fa 54 cmp $0x54,%edx 0.00 : 4190bc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4190c0: 0f 85 57 31 00 00 jne 41c21d 0.00 : 4190c6: ba 0f c0 43 00 mov $0x43c00f,%edx 0.00 : 4190cb: be 98 0d 00 00 mov $0xd98,%esi 0.00 : 4190d0: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 4190d5: 31 c0 xor %eax,%eax 0.00 : 4190d7: e8 ee 83 ff ff callq 4114ca 0.00 : 4190dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4190e0: 41 be 60 d9 64 00 mov $0x64d960,%r14d 0.00 : 4190e6: 4c 89 f5 mov %r14,%rbp 0.00 : 4190e9: b8 40 f9 64 00 mov $0x64f940,%eax 0.00 : 4190ee: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 4190f2: 48 29 e8 sub %rbp,%rax 0.00 : 4190f5: 48 c1 e8 03 shr $0x3,%rax 0.00 : 4190f9: 83 e0 07 and $0x7,%eax 0.00 : 4190fc: 4d 85 ed test %r13,%r13 0.00 : 4190ff: 0f 85 74 30 00 00 jne 41c179 0.00 : 419105: 48 83 c5 08 add $0x8,%rbp 0.00 : 419109: 48 81 fd 48 f9 64 00 cmp $0x64f948,%rbp 0.00 : 419110: 0f 84 61 01 00 00 je 419277 0.00 : 419116: 48 85 c0 test %rax,%rax 0.00 : 419119: 0f 84 c1 00 00 00 je 4191e0 0.00 : 41911f: 48 83 f8 01 cmp $0x1,%rax 0.00 : 419123: 0f 84 8f 00 00 00 je 4191b8 0.00 : 419129: 48 83 f8 02 cmp $0x2,%rax 0.00 : 41912d: 0f 1f 00 nopl (%rax) 0.00 : 419130: 74 75 je 4191a7 0.00 : 419132: 48 83 f8 03 cmp $0x3,%rax 0.00 : 419136: 74 5e je 419196 0.00 : 419138: 48 83 f8 04 cmp $0x4,%rax 0.00 : 41913c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 419140: 74 43 je 419185 0.00 : 419142: 48 83 f8 05 cmp $0x5,%rax 0.00 : 419146: 74 2c je 419174 0.00 : 419148: 48 83 f8 06 cmp $0x6,%rax 0.00 : 41914c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 419150: 74 11 je 419163 0.00 : 419152: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 419156: 4d 85 ed test %r13,%r13 0.00 : 419159: 0f 85 1a 30 00 00 jne 41c179 0.00 : 41915f: 48 83 c5 08 add $0x8,%rbp 0.00 : 419163: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 419167: 4d 85 ed test %r13,%r13 0.00 : 41916a: 0f 85 09 30 00 00 jne 41c179 0.00 : 419170: 48 83 c5 08 add $0x8,%rbp 0.00 : 419174: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 419178: 4d 85 ed test %r13,%r13 0.00 : 41917b: 0f 85 f8 2f 00 00 jne 41c179 0.00 : 419181: 48 83 c5 08 add $0x8,%rbp 0.00 : 419185: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 419189: 4d 85 ed test %r13,%r13 0.00 : 41918c: 0f 85 e7 2f 00 00 jne 41c179 0.00 : 419192: 48 83 c5 08 add $0x8,%rbp 0.00 : 419196: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 41919a: 4d 85 ed test %r13,%r13 0.00 : 41919d: 0f 85 d6 2f 00 00 jne 41c179 0.00 : 4191a3: 48 83 c5 08 add $0x8,%rbp 0.00 : 4191a7: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 4191ab: 4d 85 ed test %r13,%r13 0.00 : 4191ae: 0f 85 c5 2f 00 00 jne 41c179 0.00 : 4191b4: 48 83 c5 08 add $0x8,%rbp 0.00 : 4191b8: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 4191bc: 4d 85 ed test %r13,%r13 0.00 : 4191bf: 0f 85 b4 2f 00 00 jne 41c179 0.00 : 4191c5: 48 83 c5 08 add $0x8,%rbp 0.00 : 4191c9: 48 81 fd 48 f9 64 00 cmp $0x64f948,%rbp 0.00 : 4191d0: 0f 84 a1 00 00 00 je 419277 0.00 : 4191d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4191dd: 00 00 00 0.00 : 4191e0: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 4191e4: 4d 85 ed test %r13,%r13 0.00 : 4191e7: 0f 85 8c 2f 00 00 jne 41c179 0.00 : 4191ed: 48 8d 45 08 lea 0x8(%rbp),%rax 0.00 : 4191f1: 4c 8b 28 mov (%rax),%r13 0.00 : 4191f4: 48 89 c5 mov %rax,%rbp 0.00 : 4191f7: 4d 85 ed test %r13,%r13 0.00 : 4191fa: 0f 85 79 2f 00 00 jne 41c179 0.00 : 419200: 48 83 c5 08 add $0x8,%rbp 0.00 : 419204: 4c 8b 6d 00 mov 0x0(%rbp),%r13 0.00 : 419208: 4d 85 ed test %r13,%r13 0.00 : 41920b: 0f 85 68 2f 00 00 jne 41c179 0.00 : 419211: 4c 8b 68 10 mov 0x10(%rax),%r13 0.00 : 419215: 48 8d 68 10 lea 0x10(%rax),%rbp 0.00 : 419219: 4d 85 ed test %r13,%r13 0.00 : 41921c: 0f 85 57 2f 00 00 jne 41c179 0.00 : 419222: 4c 8b 68 18 mov 0x18(%rax),%r13 0.00 : 419226: 48 8d 68 18 lea 0x18(%rax),%rbp 0.00 : 41922a: 4d 85 ed test %r13,%r13 0.00 : 41922d: 0f 85 46 2f 00 00 jne 41c179 0.00 : 419233: 4c 8b 68 20 mov 0x20(%rax),%r13 0.00 : 419237: 48 8d 68 20 lea 0x20(%rax),%rbp 0.00 : 41923b: 4d 85 ed test %r13,%r13 0.00 : 41923e: 0f 85 35 2f 00 00 jne 41c179 0.00 : 419244: 4c 8b 68 28 mov 0x28(%rax),%r13 0.00 : 419248: 48 8d 68 28 lea 0x28(%rax),%rbp 0.00 : 41924c: 4d 85 ed test %r13,%r13 0.00 : 41924f: 0f 85 24 2f 00 00 jne 41c179 0.00 : 419255: 4c 8b 68 30 mov 0x30(%rax),%r13 0.00 : 419259: 48 8d 68 30 lea 0x30(%rax),%rbp 0.00 : 41925d: 4d 85 ed test %r13,%r13 0.00 : 419260: 0f 85 13 2f 00 00 jne 41c179 0.00 : 419266: 48 8d 68 38 lea 0x38(%rax),%rbp 0.00 : 41926a: 48 81 fd 48 f9 64 00 cmp $0x64f948,%rbp 0.00 : 419271: 0f 85 69 ff ff ff jne 4191e0 0.00 : 419277: 48 89 e8 mov %rbp,%rax 0.00 : 41927a: 4d 8b 26 mov (%r14),%r12 0.00 : 41927d: 4c 29 f0 sub %r14,%rax 0.00 : 419280: 48 83 e8 08 sub $0x8,%rax 0.00 : 419284: 48 c1 e8 03 shr $0x3,%rax 0.00 : 419288: 83 e0 07 and $0x7,%eax 0.00 : 41928b: 4d 85 e4 test %r12,%r12 0.00 : 41928e: 0f 85 2d 01 00 00 jne 4193c1 0.00 : 419294: 49 83 c6 08 add $0x8,%r14 0.00 : 419298: 4c 39 f5 cmp %r14,%rbp 0.00 : 41929b: 0f 84 df f6 ff ff je 418980 0.00 : 4192a1: 48 85 c0 test %rax,%rax 0.00 : 4192a4: 0f 84 0f 01 00 00 je 4193b9 0.00 : 4192aa: 48 83 f8 01 cmp $0x1,%rax 0.00 : 4192ae: 66 90 xchg %ax,%ax 0.00 : 4192b0: 0f 84 84 00 00 00 je 41933a 0.00 : 4192b6: 48 83 f8 02 cmp $0x2,%rax 0.00 : 4192ba: 74 6e je 41932a 0.00 : 4192bc: 48 83 f8 03 cmp $0x3,%rax 0.00 : 4192c0: 74 58 je 41931a 0.00 : 4192c2: 48 83 f8 04 cmp $0x4,%rax 0.00 : 4192c6: 74 42 je 41930a 0.00 : 4192c8: 48 83 f8 05 cmp $0x5,%rax 0.00 : 4192cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4192d0: 74 28 je 4192fa 0.00 : 4192d2: 48 83 f8 06 cmp $0x6,%rax 0.00 : 4192d6: 74 12 je 4192ea 0.00 : 4192d8: 4d 8b 26 mov (%r14),%r12 0.00 : 4192db: 4d 85 e4 test %r12,%r12 0.00 : 4192de: 66 90 xchg %ax,%ax 0.00 : 4192e0: 0f 85 db 00 00 00 jne 4193c1 0.00 : 4192e6: 49 83 c6 08 add $0x8,%r14 0.00 : 4192ea: 4d 8b 26 mov (%r14),%r12 0.00 : 4192ed: 4d 85 e4 test %r12,%r12 0.00 : 4192f0: 0f 85 cb 00 00 00 jne 4193c1 0.00 : 4192f6: 49 83 c6 08 add $0x8,%r14 0.00 : 4192fa: 4d 8b 26 mov (%r14),%r12 0.00 : 4192fd: 4d 85 e4 test %r12,%r12 0.00 : 419300: 0f 85 bb 00 00 00 jne 4193c1 0.00 : 419306: 49 83 c6 08 add $0x8,%r14 0.00 : 41930a: 4d 8b 26 mov (%r14),%r12 0.00 : 41930d: 4d 85 e4 test %r12,%r12 0.00 : 419310: 0f 85 ab 00 00 00 jne 4193c1 0.00 : 419316: 49 83 c6 08 add $0x8,%r14 0.00 : 41931a: 4d 8b 26 mov (%r14),%r12 0.00 : 41931d: 4d 85 e4 test %r12,%r12 0.00 : 419320: 0f 85 9b 00 00 00 jne 4193c1 0.00 : 419326: 49 83 c6 08 add $0x8,%r14 0.00 : 41932a: 4d 8b 26 mov (%r14),%r12 0.00 : 41932d: 4d 85 e4 test %r12,%r12 0.00 : 419330: 0f 85 8b 00 00 00 jne 4193c1 0.00 : 419336: 49 83 c6 08 add $0x8,%r14 0.00 : 41933a: 4d 8b 26 mov (%r14),%r12 0.00 : 41933d: 4d 85 e4 test %r12,%r12 0.00 : 419340: 75 7f jne 4193c1 0.00 : 419342: 49 83 c6 08 add $0x8,%r14 0.00 : 419346: 4c 39 f5 cmp %r14,%rbp 0.00 : 419349: 75 6e jne 4193b9 0.00 : 41934b: e9 30 f6 ff ff jmpq 418980 0.00 : 419350: 49 8d 46 08 lea 0x8(%r14),%rax 0.00 : 419354: 4c 8b 20 mov (%rax),%r12 0.00 : 419357: 49 89 c6 mov %rax,%r14 0.00 : 41935a: 4d 85 e4 test %r12,%r12 0.00 : 41935d: 75 62 jne 4193c1 0.00 : 41935f: 49 83 c6 08 add $0x8,%r14 0.00 : 419363: 4d 8b 26 mov (%r14),%r12 0.00 : 419366: 4d 85 e4 test %r12,%r12 0.00 : 419369: 75 56 jne 4193c1 0.00 : 41936b: 4c 8b 60 10 mov 0x10(%rax),%r12 0.00 : 41936f: 4c 8d 70 10 lea 0x10(%rax),%r14 0.00 : 419373: 4d 85 e4 test %r12,%r12 0.00 : 419376: 75 49 jne 4193c1 0.00 : 419378: 4c 8b 60 18 mov 0x18(%rax),%r12 0.00 : 41937c: 4c 8d 70 18 lea 0x18(%rax),%r14 0.00 : 419380: 4d 85 e4 test %r12,%r12 0.00 : 419383: 75 3c jne 4193c1 0.00 : 419385: 4c 8b 60 20 mov 0x20(%rax),%r12 0.00 : 419389: 4c 8d 70 20 lea 0x20(%rax),%r14 0.00 : 41938d: 4d 85 e4 test %r12,%r12 0.00 : 419390: 75 2f jne 4193c1 0.00 : 419392: 4c 8b 60 28 mov 0x28(%rax),%r12 0.00 : 419396: 4c 8d 70 28 lea 0x28(%rax),%r14 0.00 : 41939a: 4d 85 e4 test %r12,%r12 0.00 : 41939d: 75 22 jne 4193c1 0.00 : 41939f: 4c 8b 60 30 mov 0x30(%rax),%r12 0.00 : 4193a3: 4c 8d 70 30 lea 0x30(%rax),%r14 0.00 : 4193a7: 4d 85 e4 test %r12,%r12 0.00 : 4193aa: 75 15 jne 4193c1 0.00 : 4193ac: 4c 8d 70 38 lea 0x38(%rax),%r14 0.00 : 4193b0: 4c 39 f5 cmp %r14,%rbp 0.00 : 4193b3: 0f 84 c7 f5 ff ff je 418980 0.00 : 4193b9: 4d 8b 26 mov (%r14),%r12 0.00 : 4193bc: 4d 85 e4 test %r12,%r12 0.00 : 4193bf: 74 8f je 419350 0.00 : 4193c1: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 4193c5: 4d 8b 6c 24 10 mov 0x10(%r12),%r13 0.00 : 4193ca: e8 51 d9 fe ff callq 406d20 0.00 : 4193cf: 4c 89 e7 mov %r12,%rdi 0.00 : 4193d2: 4d 89 ec mov %r13,%r12 0.00 : 4193d5: e8 46 d9 fe ff callq 406d20 0.00 : 4193da: 4d 85 ed test %r13,%r13 0.00 : 4193dd: 75 e2 jne 4193c1 0.00 : 4193df: 49 83 c6 08 add $0x8,%r14 0.00 : 4193e3: 4c 39 f5 cmp %r14,%rbp 0.00 : 4193e6: 0f 85 8b fe ff ff jne 419277 0.00 : 4193ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4193f0: e9 8b f5 ff ff jmpq 418980 0.00 : 4193f5: 0f 1f 00 nopl (%rax) 0.00 : 4193f8: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 4193ff: 00 0.00 : 419400: 4c 8b b4 24 a8 00 00 mov 0xa8(%rsp),%r14 0.00 : 419407: 00 0.00 : 419408: 4d 8b 7a e8 mov -0x18(%r10),%r15 0.00 : 41940c: 49 83 ee 18 sub $0x18,%r14 0.00 : 419410: 4c 89 ff mov %r15,%rdi 0.00 : 419413: e8 18 d9 fe ff callq 406d30 0.00 : 419418: 31 d2 xor %edx,%edx 0.00 : 41941a: 48 89 c6 mov %rax,%rsi 0.00 : 41941d: 4c 89 ff mov %r15,%rdi 0.00 : 419420: e8 7b c0 01 00 callq 4354a0 0.00 : 419425: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 41942c: 00 0.00 : 41942d: 49 89 c4 mov %rax,%r12 0.00 : 419430: bf 4e 00 00 00 mov $0x4e,%edi 0.00 : 419435: 49 8b 5d f8 mov -0x8(%r13),%rbx 0.00 : 419439: e8 82 d7 ff ff callq 416bc0 0.00 : 41943e: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 419442: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 419449: 00 0.00 : 41944a: be 01 00 00 00 mov $0x1,%esi 0.00 : 41944f: 48 89 18 mov %rbx,(%rax) 0.00 : 419452: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 419459: 00 0.00 : 41945a: 49 89 c5 mov %rax,%r13 0.00 : 41945d: 48 8b 7d e8 mov -0x18(%rbp),%rdi 0.00 : 419461: e8 aa cb ff ff callq 416010 0.00 : 419466: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 41946d: 00 0.00 : 41946e: 48 8b 58 f8 mov -0x8(%rax),%rbx 0.00 : 419472: 48 85 db test %rbx,%rbx 0.00 : 419475: 0f 85 dd 2c 00 00 jne 41c158 0.00 : 41947b: 49 8b 3e mov (%r14),%rdi 0.00 : 41947e: 4d 89 ef mov %r13,%r15 0.00 : 419481: e8 9a d8 fe ff callq 406d20 0.00 : 419486: e9 f5 f4 ff ff jmpq 418980 0.00 : 41948b: 44 8b 0d 72 6e 23 00 mov 0x236e72(%rip),%r9d # 650304 0.00 : 419492: 45 85 c9 test %r9d,%r9d 0.00 : 419495: 0f 85 85 2c 00 00 jne 41c120 0.00 : 41949b: 31 f6 xor %esi,%esi 0.00 : 41949d: bf d8 02 65 00 mov $0x6502d8,%edi 0.00 : 4194a2: c7 05 10 43 23 00 01 movl $0x1,0x234310(%rip) # 64d7bc 0.00 : 4194a9: 00 00 00 0.00 : 4194ac: e8 5f c9 ff ff callq 415e10 0.00 : 4194b1: 49 89 c7 mov %rax,%r15 0.00 : 4194b4: e9 c7 f4 ff ff jmpq 418980 0.00 : 4194b9: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 4194c0: 00 0.00 : 4194c1: 4d 8b 7d 00 mov 0x0(%r13),%r15 0.00 : 4194c5: e9 b6 f4 ff ff jmpq 418980 0.00 : 4194ca: 44 8b 15 2f 6e 23 00 mov 0x236e2f(%rip),%r10d # 650300 0.00 : 4194d1: 45 85 d2 test %r10d,%r10d 0.00 : 4194d4: 0f 85 f0 2b 00 00 jne 41c0ca 0.00 : 4194da: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 4194e1: 00 0.00 : 4194e2: 49 8b 2b mov (%r11),%rbp 0.00 : 4194e5: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 4194ec: 00 0.00 : 4194ed: 4c 8b 79 f0 mov -0x10(%rcx),%r15 0.00 : 4194f1: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 4194f4: e8 c7 d6 ff ff callq 416bc0 0.00 : 4194f9: 4c 89 38 mov %r15,(%rax) 0.00 : 4194fc: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 419500: 49 89 c7 mov %rax,%r15 0.00 : 419503: e9 78 f4 ff ff jmpq 418980 0.00 : 419508: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41950f: 00 0.00 : 419510: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 419514: e9 67 f4 ff ff jmpq 418980 0.00 : 419519: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 419520: 83 3d e1 b4 23 00 01 cmpl $0x1,0x23b4e1(%rip) # 654a08 0.00 : 419527: 0f 8f 73 09 00 00 jg 419ea0 0.00 : 41952d: 48 8b 05 34 43 23 00 mov 0x234334(%rip),%rax # 64d868 0.00 : 419534: 48 85 c0 test %rax,%rax 0.00 : 419537: 0f 84 39 2b 00 00 je 41c076 0.00 : 41953d: 48 3b 05 2c 43 23 00 cmp 0x23432c(%rip),%rax # 64d870 0.00 : 419544: 0f 83 2c 2b 00 00 jae 41c076 0.00 : 41954a: 83 3d b7 b4 23 00 01 cmpl $0x1,0x23b4b7(%rip) # 654a08 0.00 : 419551: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 419555: 48 89 0d 0c 43 23 00 mov %rcx,0x23430c(%rip) # 64d868 0.00 : 41955c: 0f 8f 1e 0a 00 00 jg 419f80 0.00 : 419562: 31 d2 xor %edx,%edx 0.00 : 419564: 48 85 c9 test %rcx,%rcx 0.00 : 419567: 0f 84 52 0a 00 00 je 419fbf 0.00 : 41956d: 48 3b 0d 04 43 23 00 cmp 0x234304(%rip),%rcx # 64d878 0.00 : 419574: 48 89 ca mov %rcx,%rdx 0.00 : 419577: 0f 86 42 0a 00 00 jbe 419fbf 0.00 : 41957d: 8b 1d d9 42 23 00 mov 0x2342d9(%rip),%ebx # 64d85c 0.00 : 419583: 48 89 05 de 42 23 00 mov %rax,0x2342de(%rip) # 64d868 0.00 : 41958a: 48 89 05 ef 42 23 00 mov %rax,0x2342ef(%rip) # 64d880 0.00 : 419591: 48 c7 05 44 42 23 00 movq $0x0,0x234244(%rip) # 64d7e0 0.00 : 419598: 00 00 00 00 0.00 : 41959c: 85 db test %ebx,%ebx 0.00 : 41959e: 0f 85 3b 0a 00 00 jne 419fdf 0.00 : 4195a4: 83 3d 5d b4 23 00 01 cmpl $0x1,0x23b45d(%rip) # 654a08 0.00 : 4195ab: 48 89 c2 mov %rax,%rdx 0.00 : 4195ae: 0f 8f c4 0a 00 00 jg 41a078 0.00 : 4195b4: 48 3b 05 b5 42 23 00 cmp 0x2342b5(%rip),%rax # 64d870 0.00 : 4195bb: 0f 83 a2 2a 00 00 jae 41c063 0.00 : 4195c1: 0f b6 28 movzbl (%rax),%ebp 0.00 : 4195c4: 48 89 ca mov %rcx,%rdx 0.00 : 4195c7: 48 89 0d 9a 42 23 00 mov %rcx,0x23429a(%rip) # 64d868 0.00 : 4195ce: 83 fd 20 cmp $0x20,%ebp 0.00 : 4195d1: 0f 84 30 02 00 00 je 419807 0.00 : 4195d7: 83 fd 09 cmp $0x9,%ebp 0.00 : 4195da: 0f 84 20 02 00 00 je 419800 0.00 : 4195e0: 83 fd 0d cmp $0xd,%ebp 0.00 : 4195e3: 0f 84 17 02 00 00 je 419800 0.00 : 4195e9: 48 8b 15 78 42 23 00 mov 0x234278(%rip),%rdx # 64d868 0.00 : 4195f0: 48 85 d2 test %rdx,%rdx 0.00 : 4195f3: 48 8d 42 ff lea -0x1(%rdx),%rax 0.00 : 4195f7: 0f 84 c6 2a 00 00 je 41c0c3 0.00 : 4195fd: 83 3d 04 b4 23 00 01 cmpl $0x1,0x23b404(%rip) # 654a08 0.00 : 419604: 4c 8b 25 a5 41 23 00 mov 0x2341a5(%rip),%r12 # 64d7b0 0.00 : 41960b: 48 89 05 6e 42 23 00 mov %rax,0x23426e(%rip) # 64d880 0.00 : 419612: 48 c7 05 c3 41 23 00 movq $0x0,0x2341c3(%rip) # 64d7e0 0.00 : 419619: 00 00 00 00 0.00 : 41961d: c7 05 21 b3 23 00 00 movl $0x0,0x23b321(%rip) # 654948 0.00 : 419624: 00 00 00 0.00 : 419627: 4c 89 25 7a 41 23 00 mov %r12,0x23417a(%rip) # 64d7a8 0.00 : 41962e: 0f 85 fb 0b 00 00 jne 41a22f 0.00 : 419634: 8d 45 01 lea 0x1(%rbp),%eax 0.00 : 419637: 83 f8 7f cmp $0x7f,%eax 0.00 : 41963a: 0f 86 98 02 00 00 jbe 4198d8 0.00 : 419640: 83 fd 5f cmp $0x5f,%ebp 0.00 : 419643: 89 eb mov %ebp,%ebx 0.00 : 419645: 74 17 je 41965e 0.00 : 419647: e8 74 d7 fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 41964c: 48 8b 38 mov (%rax),%rdi 0.00 : 41964f: 4c 63 fd movslq %ebp,%r15 0.00 : 419652: 42 f6 44 7f 01 04 testb $0x4,0x1(%rdi,%r15,2) 0.00 : 419658: 0f 84 2d 2a 00 00 je 41c08b 0.00 : 41965e: 8b 05 94 6c 23 00 mov 0x236c94(%rip),%eax # 6502f8 0.00 : 419664: 85 c0 test %eax,%eax 0.00 : 419666: 75 09 jne 419671 0.00 : 419668: 83 fd 5f cmp $0x5f,%ebp 0.00 : 41966b: 0f 84 6a 29 00 00 je 41bfdb 0.00 : 419671: 4c 89 25 30 41 23 00 mov %r12,0x234130(%rip) # 64d7a8 0.00 : 419678: 45 31 ed xor %r13d,%r13d 0.00 : 41967b: e8 40 d7 fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 419680: 48 89 c5 mov %rax,%rbp 0.00 : 419683: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 419688: 4c 8b 55 00 mov 0x0(%rbp),%r10 0.00 : 41968c: 4c 63 f3 movslq %ebx,%r14 0.00 : 41968f: 43 f6 04 72 08 testb $0x8,(%r10,%r14,2) 0.00 : 419694: 0f 85 b6 01 00 00 jne 419850 0.00 : 41969a: 83 fb 5f cmp $0x5f,%ebx 0.00 : 41969d: 0f 84 ad 01 00 00 je 419850 0.00 : 4196a3: 4c 8b 2d fe 40 23 00 mov 0x2340fe(%rip),%r13 # 64d7a8 0.00 : 4196aa: 41 c6 45 00 00 movb $0x0,0x0(%r13) 0.00 : 4196af: 49 83 c5 01 add $0x1,%r13 0.00 : 4196b3: 4c 3b 2d d6 41 23 00 cmp 0x2341d6(%rip),%r13 # 64d890 0.00 : 4196ba: 4c 89 2d e7 40 23 00 mov %r13,0x2340e7(%rip) # 64d7a8 0.00 : 4196c1: 0f 84 0a 29 00 00 je 41bfd1 0.00 : 4196c7: 48 8b 3d da 40 23 00 mov 0x2340da(%rip),%rdi # 64d7a8 0.00 : 4196ce: 48 2b 3d db 40 23 00 sub 0x2340db(%rip),%rdi # 64d7b0 0.00 : 4196d5: e8 c6 d4 fe ff callq 406ba0 0.00 : 4196da: 48 85 c0 test %rax,%rax 0.00 : 4196dd: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 4196e2: 0f 84 2f 28 00 00 je 41bf17 0.00 : 4196e8: 48 8b 35 c1 40 23 00 mov 0x2340c1(%rip),%rsi # 64d7b0 0.00 : 4196ef: 48 8b 15 b2 40 23 00 mov 0x2340b2(%rip),%rdx # 64d7a8 0.00 : 4196f6: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 4196fb: 48 29 f2 sub %rsi,%rdx 0.00 : 4196fe: e8 4d d8 fe ff callq 406f50 0.00 : 419703: 83 c3 01 add $0x1,%ebx 0.00 : 419706: 0f 84 b2 27 00 00 je 41bebe 0.00 : 41970c: 83 3d f5 b2 23 00 01 cmpl $0x1,0x23b2f5(%rip) # 654a08 0.00 : 419713: 0f 8f 1d 11 00 00 jg 41a836 0.00 : 419719: 48 8b 05 48 41 23 00 mov 0x234148(%rip),%rax # 64d868 0.00 : 419720: 48 85 c0 test %rax,%rax 0.00 : 419723: 74 14 je 419739 0.00 : 419725: 48 3b 05 4c 41 23 00 cmp 0x23414c(%rip),%rax # 64d878 0.00 : 41972c: 76 0b jbe 419739 0.00 : 41972e: 48 83 e8 01 sub $0x1,%rax 0.00 : 419732: 48 89 05 2f 41 23 00 mov %rax,0x23412f(%rip) # 64d868 0.00 : 419739: 48 8b 35 70 40 23 00 mov 0x234070(%rip),%rsi # 64d7b0 0.00 : 419740: 31 ed xor %ebp,%ebp 0.00 : 419742: 41 bc 3a 00 00 00 mov $0x3a,%r12d 0.00 : 419748: 48 89 b4 24 b0 00 00 mov %rsi,0xb0(%rsp) 0.00 : 41974f: 00 0.00 : 419750: 44 0f be 2e movsbl (%rsi),%r13d 0.00 : 419754: eb 18 jmp 41976e 0.00 : 419756: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41975d: 00 00 00 0.00 : 419760: 0f 84 d2 01 00 00 je 419938 0.00 : 419766: 8d 6b 01 lea 0x1(%rbx),%ebp 0.00 : 419769: 41 39 ec cmp %ebp,%r12d 0.00 : 41976c: 7c 37 jl 4197a5 0.00 : 41976e: 42 8d 5c 25 00 lea 0x0(%rbp,%r12,1),%ebx 0.00 : 419773: 44 89 ef mov %r13d,%edi 0.00 : 419776: d1 fb sar %ebx 0.00 : 419778: 4c 63 f3 movslq %ebx,%r14 0.00 : 41977b: 4d 89 f0 mov %r14,%r8 0.00 : 41977e: 49 c1 e0 05 shl $0x5,%r8 0.00 : 419782: 4d 8b b8 60 e3 43 00 mov 0x43e360(%r8),%r15 6.67 : 419789: 41 0f be 07 movsbl (%r15),%eax 0.00 : 41978d: 29 c7 sub %eax,%edi 0.00 : 41978f: 89 f8 mov %edi,%eax 0.00 : 419791: 0f 84 69 06 00 00 je 419e00 0.00 : 419797: 83 f8 00 cmp $0x0,%eax 0.00 : 41979a: 7d c4 jge 419760 0.00 : 41979c: 44 8d 63 ff lea -0x1(%rbx),%r12d 0.00 : 4197a0: 41 39 ec cmp %ebp,%r12d 0.00 : 4197a3: 7d c9 jge 41976e 0.00 : 4197a5: 4c 8b 44 24 30 mov 0x30(%rsp),%r8 0.00 : 4197aa: 48 8b 05 b7 40 23 00 mov 0x2340b7(%rip),%rax # 64d868 0.00 : 4197b1: 4c 89 05 90 b1 23 00 mov %r8,0x23b190(%rip) # 654948 0.00 : 4197b8: 80 38 28 cmpb $0x28,(%rax) 0.00 : 4197bb: 0f 84 d2 0d 00 00 je 41a593 0.00 : 4197c1: 44 8b 0d 38 6b 23 00 mov 0x236b38(%rip),%r9d # 650300 0.00 : 4197c8: 45 85 c9 test %r9d,%r9d 0.00 : 4197cb: 0f 85 54 1b 00 00 jne 41b325 0.00 : 4197d1: c7 05 25 40 23 00 03 movl $0x103,0x234025(%rip) # 64d800 0.00 : 4197d8: 01 00 00 0.00 : 4197db: bd 03 01 00 00 mov $0x103,%ebp 0.00 : 4197e0: e9 19 01 00 00 jmpq 4198fe 0.00 : 4197e5: e8 26 dc ff ff callq 417410 0.00 : 4197ea: 83 f8 0a cmp $0xa,%eax 0.00 : 4197ed: 0f 85 5e 21 00 00 jne 41b951 0.00 : 4197f3: 83 05 5e 6b 23 00 01 addl $0x1,0x236b5e(%rip) # 650358 0.00 : 4197fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 419800: 48 8b 15 61 40 23 00 mov 0x234061(%rip),%rdx # 64d868 0.00 : 419807: 83 3d fa b1 23 00 01 cmpl $0x1,0x23b1fa(%rip) # 654a08 0.00 : 41980e: 0f 8f 64 08 00 00 jg 41a078 0.00 : 419814: 48 85 d2 test %rdx,%rdx 0.00 : 419817: 0f 84 46 28 00 00 je 41c063 0.00 : 41981d: 48 3b 15 4c 40 23 00 cmp 0x23404c(%rip),%rdx # 64d870 0.00 : 419824: 0f 83 39 28 00 00 jae 41c063 0.00 : 41982a: 48 8d 5a 01 lea 0x1(%rdx),%rbx 0.00 : 41982e: 0f b6 2a movzbl (%rdx),%ebp 0.00 : 419831: 48 89 1d 30 40 23 00 mov %rbx,0x234030(%rip) # 64d868 0.00 : 419838: 83 fd 20 cmp $0x20,%ebp 0.00 : 41983b: 0f 85 96 fd ff ff jne 4195d7 0.00 : 419841: 48 8b 15 20 40 23 00 mov 0x234020(%rip),%rdx # 64d868 6.67 : 419848: eb bd jmp 419807 0.00 : 41984a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 419850: 4c 8b 15 51 3f 23 00 mov 0x233f51(%rip),%r10 # 64d7a8 0.00 : 419857: 41 88 1a mov %bl,(%r10) 0.00 : 41985a: 49 83 c2 01 add $0x1,%r10 0.00 : 41985e: 4c 3b 15 2b 40 23 00 cmp 0x23402b(%rip),%r10 # 64d890 0.00 : 419865: 4c 89 15 3c 3f 23 00 mov %r10,0x233f3c(%rip) # 64d7a8 0.00 : 41986c: 0f 84 fc 26 00 00 je 41bf6e 0.00 : 419872: 83 3d 8f b1 23 00 01 cmpl $0x1,0x23b18f(%rip) # 654a08 0.00 : 419879: 0f 8f 06 0a 00 00 jg 41a285 0.00 : 41987f: 48 8b 05 e2 3f 23 00 mov 0x233fe2(%rip),%rax # 64d868 0.00 : 419886: 48 85 c0 test %rax,%rax 0.00 : 419889: 0f 84 15 26 00 00 je 41bea4 0.00 : 41988f: 48 3b 05 da 3f 23 00 cmp 0x233fda(%rip),%rax # 64d870 0.00 : 419896: 0f 83 08 26 00 00 jae 41bea4 0.00 : 41989c: 0f b6 18 movzbl (%rax),%ebx 0.00 : 41989f: 48 83 c0 01 add $0x1,%rax 0.00 : 4198a3: 48 89 05 be 3f 23 00 mov %rax,0x233fbe(%rip) # 64d868 0.00 : 4198aa: e9 d9 fd ff ff jmpq 419688 0.00 : 4198af: 90 nop 6.67 : 4198b0: 0f bf ac 00 40 f7 43 movswl 0x43f740(%rax,%rax,1),%ebp 0.00 : 4198b7: 00 0.00 : 4198b8: 48 83 44 24 48 02 addq $0x2,0x48(%rsp) 0.00 : 4198be: 48 8b 9c 24 98 00 00 mov 0x98(%rsp),%rbx 0.00 : 4198c5: 00 0.00 : 4198c6: 4c 8b a4 24 90 00 00 mov 0x90(%rsp),%r12 0.00 : 4198cd: 00 0.00 : 4198ce: e9 fd ed ff ff jmpq 4186d0 0.00 : 4198d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4198d8: 41 89 c2 mov %eax,%r10d 0.00 : 4198db: 42 ff 24 d5 c0 d6 43 jmpq *0x43d6c0(,%r10,8) 0.00 : 4198e2: 00 0.00 : 4198e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4198e8: 83 05 69 6a 23 00 01 addl $0x1,0x236a69(%rip) # 650358 0.00 : 4198ef: c7 05 07 3f 23 00 2b movl $0x12b,0x233f07(%rip) # 64d800 0.00 : 4198f6: 01 00 00 0.00 : 4198f9: bd 2b 01 00 00 mov $0x12b,%ebp 0.00 : 4198fe: 89 2d 3c 90 23 00 mov %ebp,0x23903c(%rip) # 652940 0.00 : 419904: 8b 05 36 90 23 00 mov 0x239036(%rip),%eax # 652940 0.00 : 41990a: 85 c0 test %eax,%eax 0.00 : 41990c: 0f 8f 2e ee ff ff jg 418740 0.00 : 419912: c7 05 24 90 23 00 00 movl $0x0,0x239024(%rip) # 652940 0.00 : 419919: 00 00 00 0.00 : 41991c: 31 c9 xor %ecx,%ecx 0.00 : 41991e: 8b 5c 24 1c mov 0x1c(%rsp),%ebx 0.00 : 419922: 8d 04 19 lea (%rcx,%rbx,1),%eax 0.00 : 419925: 3d 40 04 00 00 cmp $0x440,%eax 0.00 : 41992a: 0f 86 34 ee ff ff jbe 418764 0.00 : 419930: e9 ab ee ff ff jmpq 4187e0 0.00 : 419935: 0f 1f 00 nopl (%rax) 0.00 : 419938: 44 8b 0d c1 69 23 00 mov 0x2369c1(%rip),%r9d # 650300 0.00 : 41993f: 45 85 c9 test %r9d,%r9d 0.00 : 419942: 0f 85 75 19 00 00 jne 41b2bd 0.00 : 419948: 44 8b 25 b5 69 23 00 mov 0x2369b5(%rip),%r12d # 650304 0.00 : 41994f: 45 85 e4 test %r12d,%r12d 0.00 : 419952: 0f 85 2d 19 00 00 jne 41b285 0.00 : 419958: 8b 0d 9a 69 23 00 mov 0x23699a(%rip),%ecx # 6502f8 0.00 : 41995e: 85 c9 test %ecx,%ecx 0.00 : 419960: 0f 85 05 19 00 00 jne 41b26b 0.00 : 419966: 44 8b 3d 8f 69 23 00 mov 0x23698f(%rip),%r15d # 6502fc 0.00 : 41996d: 45 85 ff test %r15d,%r15d 0.00 : 419970: 0f 85 dc 18 00 00 jne 41b252 0.00 : 419976: 4c 89 f2 mov %r14,%rdx 0.00 : 419979: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 41997d: 8b aa 6c e3 43 00 mov 0x43e36c(%rdx),%ebp 0.00 : 419983: 8d bd d7 fe ff ff lea -0x129(%rbp),%edi 0.00 : 419989: 83 ff 01 cmp $0x1,%edi 0.00 : 41998c: 0f 86 ae 0b 00 00 jbe 41a540 0.00 : 419992: 44 8b b2 68 e3 43 00 mov 0x43e368(%rdx),%r14d 0.00 : 419999: 44 89 35 a8 af 23 00 mov %r14d,0x23afa8(%rip) # 654948 0.00 : 4199a0: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 4199a5: e8 76 d3 fe ff callq 406d20 0.00 : 4199aa: 89 2d 50 3e 23 00 mov %ebp,0x233e50(%rip) # 64d800 0.00 : 4199b0: e9 49 ff ff ff jmpq 4198fe 0.00 : 4199b5: 45 31 e4 xor %r12d,%r12d 0.00 : 4199b8: eb 33 jmp 4199ed 0.00 : 4199ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4199c0: 48 85 d2 test %rdx,%rdx 0.00 : 4199c3: 0f 84 5d 0c 00 00 je 41a626 0.00 : 4199c9: 48 3b 15 a0 3e 23 00 cmp 0x233ea0(%rip),%rdx # 64d870 0.00 : 4199d0: 0f 83 50 0c 00 00 jae 41a626 0.00 : 4199d6: 0f b6 1a movzbl (%rdx),%ebx 0.00 : 4199d9: 48 83 c2 01 add $0x1,%rdx 0.00 : 4199dd: 48 89 15 84 3e 23 00 mov %rdx,0x233e84(%rip) # 64d868 0.00 : 4199e4: 83 fb 0a cmp $0xa,%ebx 0.00 : 4199e7: 0f 84 fb fe ff ff je 4198e8 0.00 : 4199ed: 83 3d 14 b0 23 00 01 cmpl $0x1,0x23b014(%rip) # 654a08 0.00 : 4199f4: 7e ca jle 4199c0 0.00 : 4199f6: 48 85 d2 test %rdx,%rdx 0.00 : 4199f9: 0f 84 06 1c 00 00 je 41b605 0.00 : 4199ff: 48 3b 15 6a 3e 23 00 cmp 0x233e6a(%rip),%rdx # 64d870 0.00 : 419a06: 0f 83 f9 1b 00 00 jae 41b605 0.00 : 419a0c: 8b 35 2e 3f 23 00 mov 0x233f2e(%rip),%esi # 64d940 0.00 : 419a12: 44 89 e3 mov %r12d,%ebx 0.00 : 419a15: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 419a1a: 8d 4e 01 lea 0x1(%rsi),%ecx 0.00 : 419a1d: 83 fe 7f cmp $0x7f,%esi 0.00 : 419a20: 0f 45 d9 cmovne %ecx,%ebx 0.00 : 419a23: 48 63 d3 movslq %ebx,%rdx 0.00 : 419a26: 89 1d 14 3f 23 00 mov %ebx,0x233f14(%rip) # 64d940 0.00 : 419a2c: 80 ba c0 d8 64 00 00 cmpb $0x0,0x64d8c0(%rdx) 0.00 : 419a33: 0f 85 0c 04 00 00 jne 419e45 0.00 : 419a39: 4c 8d 4d ff lea -0x1(%rbp),%r9 0.00 : 419a3d: 4c 03 0d 24 3e 23 00 add 0x233e24(%rip),%r9 # 64d868 0.00 : 419a44: 4c 39 0d 25 3e 23 00 cmp %r9,0x233e25(%rip) # 64d870 0.00 : 419a4b: 0f 86 d2 03 00 00 jbe 419e23 0.00 : 419a51: 4c 8b 2d 4c 3e 23 00 mov 0x233e4c(%rip),%r13 # 64d8a4 0.00 : 419a58: 48 8b 35 09 3e 23 00 mov 0x233e09(%rip),%rsi # 64d868 0.00 : 419a5f: 48 8d 8c 24 b0 08 00 lea 0x8b0(%rsp),%rcx 0.00 : 419a66: 00 0.00 : 419a67: 31 ff xor %edi,%edi 0.00 : 419a69: 48 89 ea mov %rbp,%rdx 0.00 : 419a6c: 4c 89 ac 24 b0 08 00 mov %r13,0x8b0(%rsp) 0.00 : 419a73: 00 0.00 : 419a74: e8 77 cf fe ff callq 4069f0 0.00 : 419a79: 48 83 f8 01 cmp $0x1,%rax 0.00 : 419a7d: 0f 84 95 03 00 00 je 419e18 0.00 : 419a83: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 419a87: 0f 84 8b 03 00 00 je 419e18 0.00 : 419a8d: 48 85 c0 test %rax,%rax 0.00 : 419a90: 0f 84 82 03 00 00 je 419e18 0.00 : 419a96: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 419a9a: 0f 85 7a 1c 00 00 jne 41b71a 0.00 : 419aa0: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 419aa3: 83 fb 7f cmp $0x7f,%ebx 0.00 : 419aa6: 48 63 fb movslq %ebx,%rdi 0.00 : 419aa9: 44 89 e3 mov %r12d,%ebx 0.00 : 419aac: 40 88 af c0 d8 64 00 mov %bpl,0x64d8c0(%rdi) 0.00 : 419ab3: 0f 45 d8 cmovne %eax,%ebx 0.00 : 419ab6: 48 83 c5 01 add $0x1,%rbp 0.00 : 419aba: e9 7a ff ff ff jmpq 419a39 0.00 : 419abf: 90 nop 0.00 : 419ac0: 45 31 ed xor %r13d,%r13d 0.00 : 419ac3: 45 31 e4 xor %r12d,%r12d 0.00 : 419ac6: 45 31 f6 xor %r14d,%r14d 0.00 : 419ac9: eb 55 jmp 419b20 0.00 : 419acb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 419ad0: 83 fb 0a cmp $0xa,%ebx 0.00 : 419ad3: 0f 84 ac 1a 00 00 je 41b585 0.00 : 419ad9: 83 3d 28 af 23 00 01 cmpl $0x1,0x23af28(%rip) # 654a08 0.00 : 419ae0: 0f 85 ff 0a 00 00 jne 41a5e5 0.00 : 419ae6: 83 fb 5c cmp $0x5c,%ebx 0.00 : 419ae9: 0f 84 dd 08 00 00 je 41a3cc 0.00 : 419aef: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 419af2: 0f 84 8d 1a 00 00 je 41b585 0.00 : 419af8: 48 8b 05 a9 3c 23 00 mov 0x233ca9(%rip),%rax # 64d7a8 0.00 : 419aff: 88 18 mov %bl,(%rax) 0.00 : 419b01: 48 83 c0 01 add $0x1,%rax 0.00 : 419b05: 48 3b 05 84 3d 23 00 cmp 0x233d84(%rip),%rax # 64d890 0.00 : 419b0c: 48 89 05 95 3c 23 00 mov %rax,0x233c95(%rip) # 64d7a8 0.00 : 419b13: 0f 84 5f 1a 00 00 je 41b578 0.00 : 419b19: 48 8b 15 48 3d 23 00 mov 0x233d48(%rip),%rdx # 64d868 0.00 : 419b20: 83 3d e1 ae 23 00 01 cmpl $0x1,0x23aee1(%rip) # 654a08 0.00 : 419b27: 0f 8f 53 09 00 00 jg 41a480 0.00 : 419b2d: 48 85 d2 test %rdx,%rdx 0.00 : 419b30: 0f 84 ba 1a 00 00 je 41b5f0 0.00 : 419b36: 48 3b 15 33 3d 23 00 cmp 0x233d33(%rip),%rdx # 64d870 0.00 : 419b3d: 0f 83 ad 1a 00 00 jae 41b5f0 0.00 : 419b43: 4c 8d 4a 01 lea 0x1(%rdx),%r9 0.00 : 419b47: 0f b6 1a movzbl (%rdx),%ebx 0.00 : 419b4a: 4c 89 0d 17 3d 23 00 mov %r9,0x233d17(%rip) # 64d868 0.00 : 419b51: 83 fb 22 cmp $0x22,%ebx 0.00 : 419b54: 0f 85 76 ff ff ff jne 419ad0 0.00 : 419b5a: 48 8b 3d 4f 3c 23 00 mov 0x233c4f(%rip),%rdi # 64d7b0 0.00 : 419b61: 48 8b 35 40 3c 23 00 mov 0x233c40(%rip),%rsi # 64d7a8 0.00 : 419b68: 44 89 e2 mov %r12d,%edx 0.00 : 419b6b: 48 29 fe sub %rdi,%rsi 0.00 : 419b6e: e8 2d b9 01 00 callq 4354a0 0.00 : 419b73: 48 89 05 ce ad 23 00 mov %rax,0x23adce(%rip) # 654948 0.00 : 419b7a: 66 83 48 3c 04 orw $0x4,0x3c(%rax) 0.00 : 419b7f: 45 85 ed test %r13d,%r13d 0.00 : 419b82: 0f 85 b8 19 00 00 jne 41b540 0.00 : 419b88: c7 05 6e 3c 23 00 07 movl $0x107,0x233c6e(%rip) # 64d800 0.00 : 419b8f: 01 00 00 0.00 : 419b92: bd 07 01 00 00 mov $0x107,%ebp 0.00 : 419b97: e9 62 fd ff ff jmpq 4198fe 0.00 : 419b9c: bd 28 00 00 00 mov $0x28,%ebp 0.00 : 419ba1: 83 05 1c 3c 23 00 01 addl $0x1,0x233c1c(%rip) # 64d7c4 0.00 : 419ba8: 89 2d 52 3c 23 00 mov %ebp,0x233c52(%rip) # 64d800 0.00 : 419bae: e9 4b fd ff ff jmpq 4198fe 0.00 : 419bb3: 83 2d 0a 3c 23 00 01 subl $0x1,0x233c0a(%rip) # 64d7c4 0.00 : 419bba: c7 05 3c 3c 23 00 29 movl $0x29,0x233c3c(%rip) # 64d800 0.00 : 419bc1: 00 00 00 0.00 : 419bc4: bd 29 00 00 00 mov $0x29,%ebp 0.00 : 419bc9: e9 30 fd ff ff jmpq 4198fe 6.67 : 419bce: 44 8b 2d 2f 3c 23 00 mov 0x233c2f(%rip),%r13d # 64d804 0.00 : 419bd5: 45 85 ed test %r13d,%r13d 0.00 : 419bd8: 0f 84 c8 07 00 00 je 41a3a6 0.00 : 419bde: c7 05 1c 3c 23 00 00 movl $0x0,0x233c1c(%rip) # 64d804 0.00 : 419be5: 00 00 00 0.00 : 419be8: c7 05 0e 3c 23 00 7d movl $0x7d,0x233c0e(%rip) # 64d800 0.00 : 419bef: 00 00 00 0.00 : 419bf2: bd 7d 00 00 00 mov $0x7d,%ebp 0.00 : 419bf7: e9 02 fd ff ff jmpq 4198fe 0.00 : 419bfc: e8 0f d8 ff ff callq 417410 0.00 : 419c01: 83 3d 00 ae 23 00 01 cmpl $0x1,0x23ae00(%rip) # 654a08 0.00 : 419c08: 89 c3 mov %eax,%ebx 0.00 : 419c0a: 7e 19 jle 419c25 0.00 : 419c0c: 8b 35 2e 3d 23 00 mov 0x233d2e(%rip),%esi # 64d940 0.00 : 419c12: ba 7f 00 00 00 mov $0x7f,%edx 0.00 : 419c17: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 419c1a: 85 f6 test %esi,%esi 0.00 : 419c1c: 0f 45 d1 cmovne %ecx,%edx 0.00 : 419c1f: 89 15 1b 3d 23 00 mov %edx,0x233d1b(%rip) # 64d940 0.00 : 419c25: 48 8b 05 3c 3c 23 00 mov 0x233c3c(%rip),%rax # 64d868 0.00 : 419c2c: 48 85 c0 test %rax,%rax 0.00 : 419c2f: 74 14 je 419c45 0.00 : 419c31: 48 3b 05 40 3c 23 00 cmp 0x233c40(%rip),%rax # 64d878 0.00 : 419c38: 76 0b jbe 419c45 0.00 : 419c3a: 48 83 e8 01 sub $0x1,%rax 0.00 : 419c3e: 48 89 05 23 3c 23 00 mov %rax,0x233c23(%rip) # 64d868 0.00 : 419c45: e8 76 d1 fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 419c4a: 4c 8b 38 mov (%rax),%r15 0.00 : 419c4d: 48 63 fb movslq %ebx,%rdi 0.00 : 419c50: 41 f6 44 7f 01 08 testb $0x8,0x1(%r15,%rdi,2) 0.00 : 419c56: 0f 84 4e 1e 00 00 je 41baaa 0.00 : 419c5c: bd 2e 00 00 00 mov $0x2e,%ebp 0.00 : 419c61: 45 31 ed xor %r13d,%r13d 0.00 : 419c64: 45 31 f6 xor %r14d,%r14d 0.00 : 419c67: 45 31 e4 xor %r12d,%r12d 0.00 : 419c6a: 41 bf 7f 00 00 00 mov $0x7f,%r15d 0.00 : 419c70: 48 8b 05 31 3b 23 00 mov 0x233b31(%rip),%rax # 64d7a8 0.00 : 419c77: 40 88 28 mov %bpl,(%rax) 0.00 : 419c7a: 48 83 c0 01 add $0x1,%rax 0.00 : 419c7e: 48 3b 05 0b 3c 23 00 cmp 0x233c0b(%rip),%rax # 64d890 0.00 : 419c85: 48 89 05 1c 3b 23 00 mov %rax,0x233b1c(%rip) # 64d7a8 0.00 : 419c8c: 0f 84 a4 18 00 00 je 41b536 0.00 : 419c92: 8d 45 d2 lea -0x2e(%rbp),%eax 0.00 : 419c95: 83 f8 4a cmp $0x4a,%eax 0.00 : 419c98: 0f 86 f4 04 00 00 jbe 41a192 0.00 : 419c9e: 83 c5 01 add $0x1,%ebp 0.00 : 419ca1: 0f 84 36 18 00 00 je 41b4dd 0.00 : 419ca7: 83 3d 5a ad 23 00 01 cmpl $0x1,0x23ad5a(%rip) # 654a08 0.00 : 419cae: 0f 8f 05 18 00 00 jg 41b4b9 0.00 : 419cb4: 48 8b 05 ad 3b 23 00 mov 0x233bad(%rip),%rax # 64d868 0.00 : 419cbb: 48 85 c0 test %rax,%rax 0.00 : 419cbe: 74 14 je 419cd4 0.00 : 419cc0: 48 3b 05 b1 3b 23 00 cmp 0x233bb1(%rip),%rax # 64d878 0.00 : 419cc7: 76 0b jbe 419cd4 0.00 : 419cc9: 48 83 e8 01 sub $0x1,%rax 0.00 : 419ccd: 48 89 05 94 3b 23 00 mov %rax,0x233b94(%rip) # 64d868 0.00 : 419cd4: 4c 8b 1d cd 3a 23 00 mov 0x233acd(%rip),%r11 # 64d7a8 0.00 : 419cdb: 41 c6 03 00 movb $0x0,(%r11) 0.00 : 419cdf: 49 83 c3 01 add $0x1,%r11 0.00 : 419ce3: 4c 3b 1d a6 3b 23 00 cmp 0x233ba6(%rip),%r11 # 64d890 0.00 : 419cea: 4c 89 1d b7 3a 23 00 mov %r11,0x233ab7(%rip) # 64d7a8 0.00 : 419cf1: 0f 84 b8 17 00 00 je 41b4af 0.00 : 419cf7: 8b 0d fb 65 23 00 mov 0x2365fb(%rip),%ecx # 6502f8 0.00 : 419cfd: 85 c9 test %ecx,%ecx 0.00 : 419cff: 75 16 jne 419d17 0.00 : 419d01: 48 8b 3d a8 3a 23 00 mov 0x233aa8(%rip),%rdi # 64d7b0 0.00 : 419d08: 31 f6 xor %esi,%esi 0.00 : 419d0a: e8 71 af 01 00 callq 434c80 0.00 : 419d0f: 85 c0 test %eax,%eax 0.00 : 419d11: 0f 85 90 08 00 00 jne 41a5a7 0.00 : 419d17: 48 8b 3d 92 3a 23 00 mov 0x233a92(%rip),%rdi # 64d7b0 0.00 : 419d1e: 31 f6 xor %esi,%esi 0.00 : 419d20: e8 eb d5 fe ff callq 407310 0.00 : 419d25: bf 61 00 00 00 mov $0x61,%edi 0.00 : 419d2a: e8 f1 ae 01 00 callq 434c20 0.00 : 419d2f: 48 89 05 12 ac 23 00 mov %rax,0x23ac12(%rip) # 654948 0.00 : 419d36: 48 8b 05 0b ac 23 00 mov 0x23ac0b(%rip),%rax # 654948 0.00 : 419d3d: c7 05 b9 3a 23 00 06 movl $0x106,0x233ab9(%rip) # 64d800 0.00 : 419d44: 01 00 00 0.00 : 419d47: bd 06 01 00 00 mov $0x106,%ebp 0.00 : 419d4c: 66 83 48 3c 04 orw $0x4,0x3c(%rax) 0.00 : 419d51: e9 a8 fb ff ff jmpq 4198fe 0.00 : 419d56: e8 b5 d6 ff ff callq 417410 0.00 : 419d5b: 83 f8 3d cmp $0x3d,%eax 0.00 : 419d5e: 0f 84 2d 17 00 00 je 41b491 0.00 : 419d64: 83 3d 9d ac 23 00 01 cmpl $0x1,0x23ac9d(%rip) # 654a08 0.00 : 419d6b: c7 05 d3 ab 23 00 10 movl $0x10,0x23abd3(%rip) # 654948 0.00 : 419d72: 00 00 00 0.00 : 419d75: 0f 8f f6 16 00 00 jg 41b471 0.00 : 419d7b: 48 8b 05 e6 3a 23 00 mov 0x233ae6(%rip),%rax # 64d868 0.00 : 419d82: 48 85 c0 test %rax,%rax 0.00 : 419d85: 74 14 je 419d9b 0.00 : 419d87: 48 3b 05 ea 3a 23 00 cmp 0x233aea(%rip),%rax # 64d878 0.00 : 419d8e: 76 0b jbe 419d9b 0.00 : 419d90: 48 83 e8 01 sub $0x1,%rax 0.00 : 419d94: 48 89 05 cd 3a 23 00 mov %rax,0x233acd(%rip) # 64d868 0.00 : 419d9b: c7 05 5b 3a 23 00 0c movl $0x10c,0x233a5b(%rip) # 64d800 0.00 : 419da2: 01 00 00 0.00 : 419da5: bd 0c 01 00 00 mov $0x10c,%ebp 0.00 : 419daa: e9 4f fb ff ff jmpq 4198fe 0.00 : 419daf: e8 5c d6 ff ff callq 417410 0.00 : 419db4: 83 f8 3d cmp $0x3d,%eax 0.00 : 419db7: 0f 84 5b 16 00 00 je 41b418 0.00 : 419dbd: 83 3d 44 ac 23 00 01 cmpl $0x1,0x23ac44(%rip) # 654a08 0.00 : 419dc4: 0f 8f bd 15 00 00 jg 41b387 0.00 : 419dca: 48 8b 05 97 3a 23 00 mov 0x233a97(%rip),%rax # 64d868 0.00 : 419dd1: 48 85 c0 test %rax,%rax 0.00 : 419dd4: 74 14 je 419dea 0.00 : 419dd6: 48 3b 05 9b 3a 23 00 cmp 0x233a9b(%rip),%rax # 64d878 0.00 : 419ddd: 76 0b jbe 419dea 0.00 : 419ddf: 48 83 e8 01 sub $0x1,%rax 0.00 : 419de3: 48 89 05 7e 3a 23 00 mov %rax,0x233a7e(%rip) # 64d868 0.00 : 419dea: c7 05 0c 3a 23 00 2f movl $0x2f,0x233a0c(%rip) # 64d800 0.00 : 419df1: 00 00 00 0.00 : 419df4: bd 2f 00 00 00 mov $0x2f,%ebp 0.00 : 419df9: e9 00 fb ff ff jmpq 4198fe 0.00 : 419dfe: 66 90 xchg %ax,%ax 0.00 : 419e00: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 419e07: 00 0.00 : 419e08: 4c 89 fe mov %r15,%rsi 0.00 : 419e0b: e8 60 d2 fe ff callq 407070 0.00 : 419e10: e9 82 f9 ff ff jmpq 419797 0.00 : 419e15: 0f 1f 00 nopl (%rax) 0.00 : 419e18: 4c 63 fb movslq %ebx,%r15 0.00 : 419e1b: 41 c6 87 c0 d8 64 00 movb $0x1,0x64d8c0(%r15) 0.00 : 419e22: 01 0.00 : 419e23: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 419e26: 4c 8b 94 24 b0 08 00 mov 0x8b0(%rsp),%r10 0.00 : 419e2d: 00 0.00 : 419e2e: 83 fb 7f cmp $0x7f,%ebx 0.00 : 419e31: 41 0f 44 c4 cmove %r12d,%eax 0.00 : 419e35: 48 98 cltq 0.00 : 419e37: 4c 89 15 66 3a 23 00 mov %r10,0x233a66(%rip) # 64d8a4 0.00 : 419e3e: c6 80 c0 d8 64 00 00 movb $0x0,0x64d8c0(%rax) 0.00 : 419e45: 4c 8b 35 1c 3a 23 00 mov 0x233a1c(%rip),%r14 # 64d868 0.00 : 419e4c: 41 0f b6 2e movzbl (%r14),%ebp 0.00 : 419e50: 49 83 c6 01 add $0x1,%r14 0.00 : 419e54: 4c 89 35 0d 3a 23 00 mov %r14,0x233a0d(%rip) # 64d868 0.00 : 419e5b: 83 fd 0a cmp $0xa,%ebp 0.00 : 419e5e: 0f 84 84 fa ff ff je 4198e8 0.00 : 419e64: 48 8b 15 fd 39 23 00 mov 0x2339fd(%rip),%rdx # 64d868 0.00 : 419e6b: e9 7d fb ff ff jmpq 4199ed 0.00 : 419e70: 0f 85 50 ea ff ff jne 4188c6 0.00 : 419e76: 8b 5c 24 44 mov 0x44(%rsp),%ebx 0.00 : 419e7a: 85 db test %ebx,%ebx 0.00 : 419e7c: 0f 85 54 11 00 00 jne 41afd6 0.00 : 419e82: bf 58 c3 43 00 mov $0x43c358,%edi 0.00 : 419e87: 31 c0 xor %eax,%eax 0.00 : 419e89: 83 05 c0 aa 23 00 01 addl $0x1,0x23aac0(%rip) # 654950 0.00 : 419e90: e8 fb c2 ff ff callq 416190 0.00 : 419e95: e9 47 11 00 00 jmpq 41afe1 0.00 : 419e9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 419ea0: 48 8b 05 c1 39 23 00 mov 0x2339c1(%rip),%rax # 64d868 0.00 : 419ea7: 48 85 c0 test %rax,%rax 0.00 : 419eaa: 0f 84 85 0d 00 00 je 41ac35 0.00 : 419eb0: 48 3b 05 b9 39 23 00 cmp 0x2339b9(%rip),%rax # 64d870 0.00 : 419eb7: 0f 83 78 0d 00 00 jae 41ac35 0.00 : 419ebd: 8b 35 7d 3a 23 00 mov 0x233a7d(%rip),%esi # 64d940 0.00 : 419ec3: 31 db xor %ebx,%ebx 0.00 : 419ec5: 8d 4e 01 lea 0x1(%rsi),%ecx 0.00 : 419ec8: 83 fe 7f cmp $0x7f,%esi 0.00 : 419ecb: 0f 45 d9 cmovne %ecx,%ebx 0.00 : 419ece: 48 63 d3 movslq %ebx,%rdx 0.00 : 419ed1: 89 1d 69 3a 23 00 mov %ebx,0x233a69(%rip) # 64d940 0.00 : 419ed7: 80 ba c0 d8 64 00 00 cmpb $0x0,0x64d8c0(%rdx) 0.00 : 419ede: 0f 85 8b 00 00 00 jne 419f6f 0.00 : 419ee4: 4c 8d a4 24 d0 08 00 lea 0x8d0(%rsp),%r12 0.00 : 419eeb: 00 0.00 : 419eec: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 419ef1: 45 31 ed xor %r13d,%r13d 0.00 : 419ef4: 4c 8d 5d ff lea -0x1(%rbp),%r11 6.67 : 419ef8: 4c 03 1d 69 39 23 00 add 0x233969(%rip),%r11 # 64d868 0.00 : 419eff: 4c 39 1d 6a 39 23 00 cmp %r11,0x23396a(%rip) # 64d870 0.00 : 419f06: 76 42 jbe 419f4a 0.00 : 419f08: 48 8b 3d 95 39 23 00 mov 0x233995(%rip),%rdi # 64d8a4 0.00 : 419f0f: 48 8b 35 52 39 23 00 mov 0x233952(%rip),%rsi # 64d868 0.00 : 419f16: 4c 89 e1 mov %r12,%rcx 0.00 : 419f19: 48 89 ea mov %rbp,%rdx 0.00 : 419f1c: 48 89 bc 24 d0 08 00 mov %rdi,0x8d0(%rsp) 0.00 : 419f23: 00 0.00 : 419f24: 31 ff xor %edi,%edi 0.00 : 419f26: e8 c5 ca fe ff callq 4069f0 0.00 : 419f2b: 48 83 f8 01 cmp $0x1,%rax 0.00 : 419f2f: 74 0f je 419f40 0.00 : 419f31: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 419f35: 74 09 je 419f40 0.00 : 419f37: 48 85 c0 test %rax,%rax 0.00 : 419f3a: 0f 85 8f 0c 00 00 jne 41abcf 0.00 : 419f40: 48 63 eb movslq %ebx,%rbp 0.00 : 419f43: c6 85 c0 d8 64 00 01 movb $0x1,0x64d8c0(%rbp) 0.00 : 419f4a: 44 8d 63 01 lea 0x1(%rbx),%r12d 0.00 : 419f4e: 31 c0 xor %eax,%eax 0.00 : 419f50: 4c 8b ac 24 d0 08 00 mov 0x8d0(%rsp),%r13 0.00 : 419f57: 00 0.00 : 419f58: 83 fb 7f cmp $0x7f,%ebx 0.00 : 419f5b: 41 0f 45 c4 cmovne %r12d,%eax 0.00 : 419f5f: 48 98 cltq 0.00 : 419f61: 4c 89 2d 3c 39 23 00 mov %r13,0x23393c(%rip) # 64d8a4 0.00 : 419f68: c6 80 c0 d8 64 00 00 movb $0x0,0x64d8c0(%rax) 0.00 : 419f6f: 48 83 05 f1 38 23 00 addq $0x1,0x2338f1(%rip) # 64d868 0.00 : 419f76: 01 0.00 : 419f77: 83 3d 8a aa 23 00 01 cmpl $0x1,0x23aa8a(%rip) # 654a08 0.00 : 419f7e: 7e 1c jle 419f9c 0.00 : 419f80: 8b 0d ba 39 23 00 mov 0x2339ba(%rip),%ecx # 64d940 0.00 : 419f86: 41 be 7f 00 00 00 mov $0x7f,%r14d 0.00 : 419f8c: 8d 51 ff lea -0x1(%rcx),%edx 0.00 : 419f8f: 85 c9 test %ecx,%ecx 0.00 : 419f91: 44 0f 45 f2 cmovne %edx,%r14d 0.00 : 419f95: 44 89 35 a4 39 23 00 mov %r14d,0x2339a4(%rip) # 64d940 0.00 : 419f9c: 48 8b 15 c5 38 23 00 mov 0x2338c5(%rip),%rdx # 64d868 0.00 : 419fa3: 48 85 d2 test %rdx,%rdx 0.00 : 419fa6: 74 17 je 419fbf 0.00 : 419fa8: 48 3b 15 c9 38 23 00 cmp 0x2338c9(%rip),%rdx # 64d878 0.00 : 419faf: 76 0e jbe 419fbf 0.00 : 419fb1: 48 8d 72 ff lea -0x1(%rdx),%rsi 0.00 : 419fb5: 48 89 35 ac 38 23 00 mov %rsi,0x2338ac(%rip) # 64d868 0.00 : 419fbc: 48 89 f2 mov %rsi,%rdx 6.67 : 419fbf: 8b 3d 97 38 23 00 mov 0x233897(%rip),%edi # 64d85c 0.00 : 419fc5: 48 89 15 b4 38 23 00 mov %rdx,0x2338b4(%rip) # 64d880 0.00 : 419fcc: 48 c7 05 09 38 23 00 movq $0x0,0x233809(%rip) # 64d7e0 0.00 : 419fd3: 00 00 00 00 0.00 : 419fd7: 85 ff test %edi,%edi 0.00 : 419fd9: 0f 84 28 f8 ff ff je 419807 0.00 : 419fdf: 48 8b 2d ca 37 23 00 mov 0x2337ca(%rip),%rbp # 64d7b0 0.00 : 419fe6: c7 05 6c 38 23 00 00 movl $0x0,0x23386c(%rip) # 64d85c 0.00 : 419fed: 00 00 00 0.00 : 419ff0: 41 bc 7f 00 00 00 mov $0x7f,%r12d 0.00 : 419ff6: 48 89 2d ab 37 23 00 mov %rbp,0x2337ab(%rip) # 64d7a8 0.00 : 419ffd: 31 ed xor %ebp,%ebp 0.00 : 419fff: 90 nop 0.00 : 41a000: e8 0b d4 ff ff callq 417410 0.00 : 41a005: 8b 15 fd a9 23 00 mov 0x23a9fd(%rip),%edx # 654a08 0.00 : 41a00b: 89 c3 mov %eax,%ebx 0.00 : 41a00d: 83 fa 01 cmp $0x1,%edx 0.00 : 41a010: 0f 85 27 10 00 00 jne 41b03d 0.00 : 41a016: 83 fb 5b cmp $0x5b,%ebx 0.00 : 41a019: 0f 84 0e 0f 00 00 je 41af2d 0.00 : 41a01f: 0f 8f 2b 02 00 00 jg 41a250 0.00 : 41a025: 83 fb 2f cmp $0x2f,%ebx 0.00 : 41a028: 0f 84 ea 06 00 00 je 41a718 0.00 : 41a02e: 66 90 xchg %ax,%ax 0.00 : 41a030: 7f 1c jg 41a04e 0.00 : 41a032: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 41a035: 0f 1f 00 nopl (%rax) 0.00 : 41a038: 0f 84 9b 10 00 00 je 41b0d9 0.00 : 41a03e: 83 fb 0a cmp $0xa,%ebx 0.00 : 41a041: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41a048: 0f 84 38 0f 00 00 je 41af86 0.00 : 41a04e: 48 8b 15 53 37 23 00 mov 0x233753(%rip),%rdx # 64d7a8 0.00 : 41a055: 88 1a mov %bl,(%rdx) 0.00 : 41a057: 4c 8d 4a 01 lea 0x1(%rdx),%r9 0.00 : 41a05b: 4c 3b 0d 2e 38 23 00 cmp 0x23382e(%rip),%r9 # 64d890 0.00 : 41a062: 4c 89 0d 3f 37 23 00 mov %r9,0x23373f(%rip) # 64d7a8 0.00 : 41a069: 75 95 jne 41a000 0.00 : 41a06b: e8 b0 be ff ff callq 415f20 0.00 : 41a070: eb 8e jmp 41a000 0.00 : 41a072: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 41a078: 48 85 d2 test %rdx,%rdx 0.00 : 41a07b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41a080: 0f 84 8f 0e 00 00 je 41af15 0.00 : 41a086: 48 3b 15 e3 37 23 00 cmp 0x2337e3(%rip),%rdx # 64d870 0.00 : 41a08d: 0f 1f 00 nopl (%rax) 0.00 : 41a090: 0f 83 7f 0e 00 00 jae 41af15 0.00 : 41a096: 8b 05 a4 38 23 00 mov 0x2338a4(%rip),%eax # 64d940 0.00 : 41a09c: 31 db xor %ebx,%ebx 0.00 : 41a09e: 44 8d 58 01 lea 0x1(%rax),%r11d 0.00 : 41a0a2: 83 f8 7f cmp $0x7f,%eax 0.00 : 41a0a5: 41 0f 45 db cmovne %r11d,%ebx 0.00 : 41a0a9: 4c 63 d3 movslq %ebx,%r10 0.00 : 41a0ac: 89 1d 8e 38 23 00 mov %ebx,0x23388e(%rip) # 64d940 0.00 : 41a0b2: 41 80 ba c0 d8 64 00 cmpb $0x0,0x64d8c0(%r10) 0.00 : 41a0b9: 00 0.00 : 41a0ba: 0f 85 b7 00 00 00 jne 41a177 0.00 : 41a0c0: 4c 8d a4 24 c0 08 00 lea 0x8c0(%rsp),%r12 0.00 : 41a0c7: 00 0.00 : 41a0c8: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 41a0cd: 45 31 ed xor %r13d,%r13d 0.00 : 41a0d0: 4c 8d 7d ff lea -0x1(%rbp),%r15 0.00 : 41a0d4: 4c 03 3d 8d 37 23 00 add 0x23378d(%rip),%r15 # 64d868 0.00 : 41a0db: 4c 39 3d 8e 37 23 00 cmp %r15,0x23378e(%rip) # 64d870 0.00 : 41a0e2: 76 6e jbe 41a152 0.00 : 41a0e4: 4c 8b 35 b9 37 23 00 mov 0x2337b9(%rip),%r14 # 64d8a4 0.00 : 41a0eb: 48 8b 35 76 37 23 00 mov 0x233776(%rip),%rsi # 64d868 0.00 : 41a0f2: 31 ff xor %edi,%edi 0.00 : 41a0f4: 4c 89 e1 mov %r12,%rcx 0.00 : 41a0f7: 48 89 ea mov %rbp,%rdx 0.00 : 41a0fa: 4c 89 b4 24 c0 08 00 mov %r14,0x8c0(%rsp) 0.00 : 41a101: 00 0.00 : 41a102: e8 e9 c8 fe ff callq 4069f0 0.00 : 41a107: 48 83 f8 01 cmp $0x1,%rax 0.00 : 41a10b: 74 3b je 41a148 0.00 : 41a10d: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 41a111: 74 35 je 41a148 0.00 : 41a113: 48 85 c0 test %rax,%rax 0.00 : 41a116: 74 30 je 41a148 0.00 : 41a118: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 41a11c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41a120: 0f 85 a4 0f 00 00 jne 41b0ca 0.00 : 41a126: 8d 4b 01 lea 0x1(%rbx),%ecx 0.00 : 41a129: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41a12c: 48 63 f3 movslq %ebx,%rsi 0.00 : 41a12f: 44 89 eb mov %r13d,%ebx 0.00 : 41a132: 40 88 ae c0 d8 64 00 mov %bpl,0x64d8c0(%rsi) 0.00 : 41a139: 0f 45 d9 cmovne %ecx,%ebx 0.00 : 41a13c: 48 83 c5 01 add $0x1,%rbp 0.00 : 41a140: eb 8e jmp 41a0d0 0.00 : 41a142: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 41a148: 48 63 d3 movslq %ebx,%rdx 0.00 : 41a14b: c6 82 c0 d8 64 00 01 movb $0x1,0x64d8c0(%rdx) 0.00 : 41a152: 44 8d 63 01 lea 0x1(%rbx),%r12d 0.00 : 41a156: 31 c0 xor %eax,%eax 0.00 : 41a158: 48 8b bc 24 c0 08 00 mov 0x8c0(%rsp),%rdi 0.00 : 41a15f: 00 0.00 : 41a160: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41a163: 41 0f 45 c4 cmovne %r12d,%eax 0.00 : 41a167: 48 98 cltq 0.00 : 41a169: 48 89 3d 34 37 23 00 mov %rdi,0x233734(%rip) # 64d8a4 0.00 : 41a170: c6 80 c0 d8 64 00 00 movb $0x0,0x64d8c0(%rax) 0.00 : 41a177: 4c 8b 05 ea 36 23 00 mov 0x2336ea(%rip),%r8 # 64d868 0.00 : 41a17e: 41 0f b6 28 movzbl (%r8),%ebp 0.00 : 41a182: 49 83 c0 01 add $0x1,%r8 0.00 : 41a186: 4c 89 05 db 36 23 00 mov %r8,0x2336db(%rip) # 64d868 0.00 : 41a18d: e9 a6 f6 ff ff jmpq 419838 0.00 : 41a192: 41 89 c0 mov %eax,%r8d 0.00 : 41a195: 42 ff 24 c5 c0 da 43 jmpq *0x43dac0(,%r8,8) 0.00 : 41a19c: 00 0.00 : 41a19d: 83 3d 64 a8 23 00 01 cmpl $0x1,0x23a864(%rip) # 654a08 0.00 : 41a1a4: 7e 15 jle 41a1bb 0.00 : 41a1a6: 8b 15 94 37 23 00 mov 0x233794(%rip),%edx # 64d940 0.00 : 41a1ac: 8d 4a ff lea -0x1(%rdx),%ecx 0.00 : 41a1af: 85 d2 test %edx,%edx 0.00 : 41a1b1: 41 0f 44 cf cmove %r15d,%ecx 0.00 : 41a1b5: 89 0d 85 37 23 00 mov %ecx,0x233785(%rip) # 64d940 0.00 : 41a1bb: 48 8b 0d a6 36 23 00 mov 0x2336a6(%rip),%rcx # 64d868 0.00 : 41a1c2: 48 85 c9 test %rcx,%rcx 0.00 : 41a1c5: 74 17 je 41a1de 0.00 : 41a1c7: 48 3b 0d aa 36 23 00 cmp 0x2336aa(%rip),%rcx # 64d878 0.00 : 41a1ce: 76 0e jbe 41a1de 0.00 : 41a1d0: 48 8d 71 ff lea -0x1(%rcx),%rsi 0.00 : 41a1d4: 48 89 35 8d 36 23 00 mov %rsi,0x23368d(%rip) # 64d868 0.00 : 41a1db: 48 89 f1 mov %rsi,%rcx 0.00 : 41a1de: 83 3d 23 a8 23 00 01 cmpl $0x1,0x23a823(%rip) # 654a08 0.00 : 41a1e5: 7e 15 jle 41a1fc 0.00 : 41a1e7: 8b 05 53 37 23 00 mov 0x233753(%rip),%eax # 64d940 0.00 : 41a1ed: 8d 78 ff lea -0x1(%rax),%edi 0.00 : 41a1f0: 85 c0 test %eax,%eax 0.00 : 41a1f2: 41 0f 44 ff cmove %r15d,%edi 0.00 : 41a1f6: 89 3d 44 37 23 00 mov %edi,0x233744(%rip) # 64d940 0.00 : 41a1fc: 48 85 c9 test %rcx,%rcx 0.00 : 41a1ff: 0f 84 f8 0b 00 00 je 41adfd 0.00 : 41a205: 48 3b 0d 6c 36 23 00 cmp 0x23366c(%rip),%rcx # 64d878 0.00 : 41a20c: 0f 86 eb 0b 00 00 jbe 41adfd 0.00 : 41a212: 4c 8d 41 ff lea -0x1(%rcx),%r8 0.00 : 41a216: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 41a21c: 4c 89 05 45 36 23 00 mov %r8,0x233645(%rip) # 64d868 0.00 : 41a223: e8 e8 d1 ff ff callq 417410 0.00 : 41a228: 89 c5 mov %eax,%ebp 0.00 : 41a22a: e9 41 fa ff ff jmpq 419c70 0.00 : 41a22f: 4c 63 0d 0a 37 23 00 movslq 0x23370a(%rip),%r9 # 64d940 0.00 : 41a236: 41 80 b9 c0 d8 64 00 cmpb $0x1,0x64d8c0(%r9) 0.00 : 41a23d: 01 0.00 : 41a23e: 0f 84 f0 f3 ff ff je 419634 0.00 : 41a244: e9 f7 f3 ff ff jmpq 419640 0.00 : 41a249: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41a250: 83 fb 5c cmp $0x5c,%ebx 0.00 : 41a253: 0f 84 50 05 00 00 je 41a7a9 0.00 : 41a259: 83 fb 5d cmp $0x5d,%ebx 0.00 : 41a25c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41a260: 0f 85 e8 fd ff ff jne 41a04e 0.00 : 41a266: 48 8b 0d 43 35 23 00 mov 0x233543(%rip),%rcx # 64d7b0 0.00 : 41a26d: 80 39 5b cmpb $0x5b,(%rcx) 0.00 : 41a270: 0f 84 80 09 00 00 je 41abf6 0.00 : 41a276: 48 8b 15 2b 35 23 00 mov 0x23352b(%rip),%rdx # 64d7a8 0.00 : 41a27d: 83 ed 01 sub $0x1,%ebp 0.00 : 41a280: e9 d0 fd ff ff jmpq 41a055 0.00 : 41a285: 48 8b 05 dc 35 23 00 mov 0x2335dc(%rip),%rax # 64d868 0.00 : 41a28c: 48 85 c0 test %rax,%rax 0.00 : 41a28f: 0f 84 13 09 00 00 je 41aba8 0.00 : 41a295: 48 3b 05 d4 35 23 00 cmp 0x2335d4(%rip),%rax # 64d870 0.00 : 41a29c: 0f 83 06 09 00 00 jae 41aba8 0.00 : 41a2a2: 44 8b 1d 97 36 23 00 mov 0x233697(%rip),%r11d # 64d940 0.00 : 41a2a9: 44 89 eb mov %r13d,%ebx 0.00 : 41a2ac: 45 8d 63 01 lea 0x1(%r11),%r12d 0.00 : 41a2b0: 41 83 fb 7f cmp $0x7f,%r11d 0.00 : 41a2b4: 41 0f 45 dc cmovne %r12d,%ebx 0.00 : 41a2b8: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 41a2be: 4c 63 f3 movslq %ebx,%r14 0.00 : 41a2c1: 89 1d 79 36 23 00 mov %ebx,0x233679(%rip) # 64d940 0.00 : 41a2c7: 41 80 be c0 d8 64 00 cmpb $0x0,0x64d8c0(%r14) 0.00 : 41a2ce: 00 0.00 : 41a2cf: 0f 85 a7 00 00 00 jne 41a37c 0.00 : 41a2d5: 49 8d 44 24 ff lea -0x1(%r12),%rax 0.00 : 41a2da: 48 03 05 87 35 23 00 add 0x233587(%rip),%rax # 64d868 0.00 : 41a2e1: 48 39 05 88 35 23 00 cmp %rax,0x233588(%rip) # 64d870 0.00 : 41a2e8: 76 70 jbe 41a35a 0.00 : 41a2ea: 48 8b 0d b3 35 23 00 mov 0x2335b3(%rip),%rcx # 64d8a4 0.00 : 41a2f1: 48 8b 35 70 35 23 00 mov 0x233570(%rip),%rsi # 64d868 0.00 : 41a2f8: 31 ff xor %edi,%edi 0.00 : 41a2fa: 4c 89 e2 mov %r12,%rdx 0.00 : 41a2fd: 48 89 8c 24 90 08 00 mov %rcx,0x890(%rsp) 0.00 : 41a304: 00 0.00 : 41a305: 48 8d 8c 24 90 08 00 lea 0x890(%rsp),%rcx 0.00 : 41a30c: 00 0.00 : 41a30d: e8 de c6 fe ff callq 4069f0 0.00 : 41a312: 48 83 f8 01 cmp $0x1,%rax 0.00 : 41a316: 74 38 je 41a350 0.00 : 41a318: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 41a31c: 74 32 je 41a350 0.00 : 41a31e: 48 85 c0 test %rax,%rax 0.00 : 41a321: 74 2d je 41a350 0.00 : 41a323: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 41a327: 0f 85 93 08 00 00 jne 41abc0 0.00 : 41a32d: 8d 73 01 lea 0x1(%rbx),%esi 0.00 : 41a330: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41a333: 48 63 fb movslq %ebx,%rdi 0.00 : 41a336: 44 89 eb mov %r13d,%ebx 0.00 : 41a339: 44 88 a7 c0 d8 64 00 mov %r12b,0x64d8c0(%rdi) 0.00 : 41a340: 0f 45 de cmovne %esi,%ebx 0.00 : 41a343: 49 83 c4 01 add $0x1,%r12 0.00 : 41a347: eb 8c jmp 41a2d5 0.00 : 41a349: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41a350: 48 63 d3 movslq %ebx,%rdx 0.00 : 41a353: c6 82 c0 d8 64 00 01 movb $0x1,0x64d8c0(%rdx) 0.00 : 41a35a: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 41a35d: 4c 8b 84 24 90 08 00 mov 0x890(%rsp),%r8 0.00 : 41a364: 00 0.00 : 41a365: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41a368: 41 0f 44 c5 cmove %r13d,%eax 0.00 : 41a36c: 48 98 cltq 0.00 : 41a36e: 4c 89 05 2f 35 23 00 mov %r8,0x23352f(%rip) # 64d8a4 0.00 : 41a375: c6 80 c0 d8 64 00 00 movb $0x0,0x64d8c0(%rax) 0.00 : 41a37c: 4c 8b 0d e5 34 23 00 mov 0x2334e5(%rip),%r9 # 64d868 0.00 : 41a383: 41 0f b6 19 movzbl (%r9),%ebx 0.00 : 41a387: 49 83 c1 01 add $0x1,%r9 0.00 : 41a38b: 4c 89 0d d6 34 23 00 mov %r9,0x2334d6(%rip) # 64d868 0.00 : 41a392: e9 f1 f2 ff ff jmpq 419688 0.00 : 41a397: 48 89 05 b2 34 23 00 mov %rax,0x2334b2(%rip) # 64d850 0.00 : 41a39e: 48 89 c1 mov %rax,%rcx 0.00 : 41a3a1: e9 f0 e6 ff ff jmpq 418a96 0.00 : 41a3a6: c7 05 54 34 23 00 01 movl $0x1,0x233454(%rip) # 64d804 0.00 : 41a3ad: 00 00 00 0.00 : 41a3b0: 48 83 2d b0 34 23 00 subq $0x1,0x2334b0(%rip) # 64d868 0.00 : 41a3b7: 01 0.00 : 41a3b8: bd 2b 01 00 00 mov $0x12b,%ebp 0.00 : 41a3bd: c7 05 39 34 23 00 2b movl $0x12b,0x233439(%rip) # 64d800 0.00 : 41a3c4: 01 00 00 0.00 : 41a3c7: e9 32 f5 ff ff jmpq 4198fe 0.00 : 41a3cc: e8 3f d0 ff ff callq 417410 0.00 : 41a3d1: 83 f8 0a cmp $0xa,%eax 0.00 : 41a3d4: 89 c3 mov %eax,%ebx 0.00 : 41a3d6: 0f 84 b9 07 00 00 je 41ab95 0.00 : 41a3dc: 4c 8b 3d c5 33 23 00 mov 0x2333c5(%rip),%r15 # 64d7a8 0.00 : 41a3e3: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 41a3e9: 41 c6 07 5c movb $0x5c,(%r15) 0.00 : 41a3ed: 49 83 c7 01 add $0x1,%r15 0.00 : 41a3f1: 4c 3b 3d 98 34 23 00 cmp 0x233498(%rip),%r15 # 64d890 0.00 : 41a3f8: 4c 89 3d a9 33 23 00 mov %r15,0x2333a9(%rip) # 64d7a8 0.00 : 41a3ff: 0f 85 ea f6 ff ff jne 419aef 0.00 : 41a405: e8 16 bb ff ff callq 415f20 0.00 : 41a40a: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 41a410: e9 da f6 ff ff jmpq 419aef 0.00 : 41a415: 0f 1f 00 nopl (%rax) 0.00 : 41a418: 83 7b 38 08 cmpl $0x8,0x38(%rbx) 0.00 : 41a41c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41a420: 0f 85 bc e8 ff ff jne 418ce2 0.00 : 41a426: 48 89 da mov %rbx,%rdx 0.00 : 41a429: 48 8b 02 mov (%rdx),%rax 0.00 : 41a42c: 48 85 c0 test %rax,%rax 0.00 : 41a42f: 0f 84 ad e8 ff ff je 418ce2 0.00 : 41a435: 83 7a 38 08 cmpl $0x8,0x38(%rdx) 0.00 : 41a439: 0f 85 a3 e8 ff ff jne 418ce2 0.00 : 41a43f: 83 78 38 08 cmpl $0x8,0x38(%rax) 0.00 : 41a443: 0f 84 44 07 00 00 je 41ab8d 0.00 : 41a449: 48 39 c5 cmp %rax,%rbp 0.00 : 41a44c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41a450: 0f 85 1e 07 00 00 jne 41ab74 0.00 : 41a456: 4c 8b 0d 83 a5 23 00 mov 0x23a583(%rip),%r9 # 6549e0 0.00 : 41a45d: bf 17 00 00 00 mov $0x17,%edi 0.00 : 41a462: 4c 89 0a mov %r9,(%rdx) 0.00 : 41a465: e8 56 c7 ff ff callq 416bc0 0.00 : 41a46a: 48 89 c2 mov %rax,%rdx 0.00 : 41a46d: 48 89 28 mov %rbp,(%rax) 0.00 : 41a470: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 41a474: e9 ca e8 ff ff jmpq 418d43 0.00 : 41a479: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41a480: 48 85 d2 test %rdx,%rdx 0.00 : 41a483: 0f 84 c0 06 00 00 je 41ab49 0.00 : 41a489: 48 3b 15 e0 33 23 00 cmp 0x2333e0(%rip),%rdx # 64d870 0.00 : 41a490: 0f 83 b3 06 00 00 jae 41ab49 0.00 : 41a496: 8b 1d a4 34 23 00 mov 0x2334a4(%rip),%ebx # 64d940 0.00 : 41a49c: 8d 6b 01 lea 0x1(%rbx),%ebp 0.00 : 41a49f: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41a4a2: 44 89 f3 mov %r14d,%ebx 0.00 : 41a4a5: 0f 45 dd cmovne %ebp,%ebx 0.00 : 41a4a8: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 41a4ad: 4c 63 d3 movslq %ebx,%r10 0.00 : 41a4b0: 89 1d 8a 34 23 00 mov %ebx,0x23348a(%rip) # 64d940 0.00 : 41a4b6: 41 80 ba c0 d8 64 00 cmpb $0x0,0x64d8c0(%r10) 0.00 : 41a4bd: 00 0.00 : 41a4be: 0f 85 b4 00 00 00 jne 41a578 0.00 : 41a4c4: 48 8d 7d ff lea -0x1(%rbp),%rdi 0.00 : 41a4c8: 48 03 3d 99 33 23 00 add 0x233399(%rip),%rdi # 64d868 0.00 : 41a4cf: 48 39 3d 9a 33 23 00 cmp %rdi,0x23339a(%rip) # 64d870 0.00 : 41a4d6: 76 7e jbe 41a556 0.00 : 41a4d8: 4c 8b 1d c5 33 23 00 mov 0x2333c5(%rip),%r11 # 64d8a4 0.00 : 41a4df: 48 8b 35 82 33 23 00 mov 0x233382(%rip),%rsi # 64d868 0.00 : 41a4e6: 48 8d 8c 24 a0 08 00 lea 0x8a0(%rsp),%rcx 0.00 : 41a4ed: 00 0.00 : 41a4ee: 31 ff xor %edi,%edi 0.00 : 41a4f0: 48 89 ea mov %rbp,%rdx 0.00 : 41a4f3: 4c 89 9c 24 a0 08 00 mov %r11,0x8a0(%rsp) 0.00 : 41a4fa: 00 0.00 : 41a4fb: e8 f0 c4 fe ff callq 4069f0 0.00 : 41a500: 48 83 f8 01 cmp $0x1,%rax 0.00 : 41a504: 74 46 je 41a54c 0.00 : 41a506: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 41a50a: 74 40 je 41a54c 0.00 : 41a50c: 48 85 c0 test %rax,%rax 0.00 : 41a50f: 90 nop 0.00 : 41a510: 74 3a je 41a54c 0.00 : 41a512: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 41a516: 0f 85 49 06 00 00 jne 41ab65 0.00 : 41a51c: 8d 4b 01 lea 0x1(%rbx),%ecx 0.00 : 41a51f: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41a522: 48 63 f3 movslq %ebx,%rsi 0.00 : 41a525: 44 89 f3 mov %r14d,%ebx 0.00 : 41a528: 40 88 ae c0 d8 64 00 mov %bpl,0x64d8c0(%rsi) 0.00 : 41a52f: 0f 45 d9 cmovne %ecx,%ebx 0.00 : 41a532: 48 83 c5 01 add $0x1,%rbp 0.00 : 41a536: eb 8c jmp 41a4c4 0.00 : 41a538: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41a53f: 00 0.00 : 41a540: 4c 89 35 01 a4 23 00 mov %r14,0x23a401(%rip) # 654948 0.00 : 41a547: e9 54 f4 ff ff jmpq 4199a0 0.00 : 41a54c: 48 63 d3 movslq %ebx,%rdx 0.00 : 41a54f: c6 82 c0 d8 64 00 01 movb $0x1,0x64d8c0(%rdx) 0.00 : 41a556: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 41a559: 4c 8b 84 24 a0 08 00 mov 0x8a0(%rsp),%r8 0.00 : 41a560: 00 0.00 : 41a561: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41a564: 41 0f 44 c6 cmove %r14d,%eax 0.00 : 41a568: 48 98 cltq 0.00 : 41a56a: 4c 89 05 33 33 23 00 mov %r8,0x233333(%rip) # 64d8a4 0.00 : 41a571: c6 80 c0 d8 64 00 00 movb $0x0,0x64d8c0(%rax) 0.00 : 41a578: 4c 8b 15 e9 32 23 00 mov 0x2332e9(%rip),%r10 # 64d868 0.00 : 41a57f: 41 0f b6 1a movzbl (%r10),%ebx 0.00 : 41a583: 49 83 c2 01 add $0x1,%r10 0.00 : 41a587: 4c 89 15 da 32 23 00 mov %r10,0x2332da(%rip) # 64d868 0.00 : 41a58e: e9 be f5 ff ff jmpq 419b51 0.00 : 41a593: c7 05 63 32 23 00 02 movl $0x102,0x233263(%rip) # 64d800 0.00 : 41a59a: 01 00 00 0.00 : 41a59d: bd 02 01 00 00 mov $0x102,%ebp 0.00 : 41a5a2: e9 57 f3 ff ff jmpq 4198fe 0.00 : 41a5a7: 8b 15 53 5d 23 00 mov 0x235d53(%rip),%edx # 650300 0.00 : 41a5ad: 85 d2 test %edx,%edx 0.00 : 41a5af: 0f 85 f5 04 00 00 jne 41aaaa 0.00 : 41a5b5: 48 8b 1d f4 31 23 00 mov 0x2331f4(%rip),%rbx # 64d7b0 0.00 : 41a5bc: 48 89 df mov %rbx,%rdi 0.00 : 41a5bf: e8 6c c7 fe ff callq 406d30 0.00 : 41a5c4: 48 89 df mov %rbx,%rdi 0.00 : 41a5c7: 48 89 c6 mov %rax,%rsi 0.00 : 41a5ca: e8 01 3f 00 00 callq 41e4d0 0.00 : 41a5cf: bf 61 00 00 00 mov $0x61,%edi 0.00 : 41a5d4: e8 47 a6 01 00 callq 434c20 0.00 : 41a5d9: 48 89 05 68 a3 23 00 mov %rax,0x23a368(%rip) # 654948 0.00 : 41a5e0: e9 51 f7 ff ff jmpq 419d36 0.00 : 41a5e5: 48 63 35 54 33 23 00 movslq 0x233354(%rip),%rsi # 64d940 0.00 : 41a5ec: 80 be c0 d8 64 00 01 cmpb $0x1,0x64d8c0(%rsi) 0.00 : 41a5f3: 0f 84 ed f4 ff ff je 419ae6 0.00 : 41a5f9: e9 f1 f4 ff ff jmpq 419aef 0.00 : 41a5fe: 66 90 xchg %ax,%ax 0.00 : 41a600: bf 25 00 00 00 mov $0x25,%edi 0.00 : 41a605: e8 b6 c5 ff ff callq 416bc0 0.00 : 41a60a: 48 89 18 mov %rbx,(%rax) 0.00 : 41a60d: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41a614: 00 0.00 : 41a615: e9 68 e4 ff ff jmpq 418a82 0.00 : 41a61a: 48 8b 15 27 32 23 00 mov 0x233227(%rip),%rdx # 64d848 0.00 : 41a621: e9 49 e6 ff ff jmpq 418c6f 0.00 : 41a626: e8 35 c6 ff ff callq 416c60 0.00 : 41a62b: 48 85 c0 test %rax,%rax 0.00 : 41a62e: 0f 85 11 f8 ff ff jne 419e45 0.00 : 41a634: 81 3d c2 31 23 00 2b cmpl $0x12b,0x2331c2(%rip) # 64d800 0.00 : 41a63b: 01 00 00 0.00 : 41a63e: 74 38 je 41a678 0.00 : 41a640: 44 8b 1d b9 5c 23 00 mov 0x235cb9(%rip),%r11d # 650300 0.00 : 41a647: c7 05 af 31 23 00 2b movl $0x12b,0x2331af(%rip) # 64d800 0.00 : 41a64e: 01 00 00 0.00 : 41a651: 45 85 db test %r11d,%r11d 0.00 : 41a654: 74 13 je 41a669 0.00 : 41a656: 66 83 3d 9e 31 23 00 cmpw $0x0,0x23319e(%rip) # 64d7fc 0.00 : 41a65d: 00 0.00 : 41a65e: be 4b 07 00 00 mov $0x74b,%esi 0.00 : 41a663: 0f 84 a1 03 00 00 je 41aa0a 0.00 : 41a669: bd 2b 01 00 00 mov $0x12b,%ebp 0.00 : 41a66e: e9 8b f2 ff ff jmpq 4198fe 0.00 : 41a673: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41a678: 31 ed xor %ebp,%ebp 0.00 : 41a67a: e9 7f f2 ff ff jmpq 4198fe 0.00 : 41a67f: f6 40 3d 02 testb $0x2,0x3d(%rax) 0.00 : 41a683: 0f 85 94 1b 00 00 jne 41c21d 0.00 : 41a689: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41a690: 00 0.00 : 41a691: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41a698: 00 0.00 : 41a699: 4c 8b 61 f8 mov -0x8(%rcx),%r12 0.00 : 41a69d: 48 83 ed 08 sub $0x8,%rbp 0.00 : 41a6a1: 4d 85 e4 test %r12,%r12 0.00 : 41a6a4: 0f 84 fb 02 00 00 je 41a9a5 0.00 : 41a6aa: 49 83 7c 24 08 00 cmpq $0x0,0x8(%r12) 0.00 : 41a6b0: 0f 85 91 03 00 00 jne 41aa47 0.00 : 41a6b6: 48 8b 3b mov (%rbx),%rdi 0.00 : 41a6b9: 4d 8b 24 24 mov (%r12),%r12 0.00 : 41a6bd: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41a6c2: be 01 00 00 00 mov $0x1,%esi 0.00 : 41a6c7: e8 44 dd ff ff callq 418410 0.00 : 41a6cc: bf 07 00 00 00 mov $0x7,%edi 0.00 : 41a6d1: 48 89 c3 mov %rax,%rbx 0.00 : 41a6d4: e8 e7 c4 ff ff callq 416bc0 0.00 : 41a6d9: 48 89 18 mov %rbx,(%rax) 0.00 : 41a6dc: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41a6e0: 49 89 c7 mov %rax,%r15 0.00 : 41a6e3: 4c 8b 4d 00 mov 0x0(%rbp),%r9 0.00 : 41a6e7: 66 41 c7 41 3c 00 00 movw $0x0,0x3c(%r9) 0.00 : 41a6ee: 48 8b 55 00 mov 0x0(%rbp),%rdx 0.00 : 41a6f2: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 41a6f9: 00 0.00 : 41a6fa: 48 8b 75 00 mov 0x0(%rbp),%rsi 0.00 : 41a6fe: 48 8b 3d 7b 5c 23 00 mov 0x235c7b(%rip),%rdi # 650380 0.00 : 41a705: 48 89 3e mov %rdi,(%rsi) 0.00 : 41a708: 4c 8b 45 00 mov 0x0(%rbp),%r8 0.00 : 41a70c: 4c 89 05 6d 5c 23 00 mov %r8,0x235c6d(%rip) # 650380 0.00 : 41a713: e9 68 e2 ff ff jmpq 418980 0.00 : 41a718: 85 ed test %ebp,%ebp 0.00 : 41a71a: 0f 8f 2e f9 ff ff jg 41a04e 0.00 : 41a720: 4c 8b 25 81 30 23 00 mov 0x233081(%rip),%r12 # 64d7a8 0.00 : 41a727: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 41a72c: 49 83 c4 01 add $0x1,%r12 0.00 : 41a730: 4c 3b 25 59 31 23 00 cmp 0x233159(%rip),%r12 # 64d890 0.00 : 41a737: 4c 89 25 6a 30 23 00 mov %r12,0x23306a(%rip) # 64d7a8 0.00 : 41a73e: 0f 84 50 02 00 00 je 41a994 0.00 : 41a744: 8b 1d b6 5b 23 00 mov 0x235bb6(%rip),%ebx # 650300 0.00 : 41a74a: 4c 8b 35 5f 30 23 00 mov 0x23305f(%rip),%r14 # 64d7b0 0.00 : 41a751: 85 db test %ebx,%ebx 0.00 : 41a753: 4c 89 35 ee a1 23 00 mov %r14,0x23a1ee(%rip) # 654948 0.00 : 41a75a: 0f 85 85 01 00 00 jne 41a8e5 0.00 : 41a760: c7 05 96 30 23 00 04 movl $0x104,0x233096(%rip) # 64d800 0.00 : 41a767: 01 00 00 0.00 : 41a76a: bd 04 01 00 00 mov $0x104,%ebp 0.00 : 41a76f: e9 8a f1 ff ff jmpq 4198fe 0.00 : 41a774: 4c 89 f3 mov %r14,%rbx 0.00 : 41a777: 40 30 ed xor %bpl,%bpl 0.00 : 41a77a: 48 89 9c 24 98 00 00 mov %rbx,0x98(%rsp) 0.00 : 41a781: 00 0.00 : 41a782: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 41a787: 4c 39 9c 24 98 00 00 cmp %r11,0x98(%rsp) 0.00 : 41a78e: 00 0.00 : 41a78f: 0f 85 3c 01 00 00 jne 41a8d1 0.00 : 41a795: 48 81 c4 e8 08 00 00 add $0x8e8,%rsp 0.00 : 41a79c: 89 e8 mov %ebp,%eax 0.00 : 41a79e: 5b pop %rbx 0.00 : 41a79f: 5d pop %rbp 0.00 : 41a7a0: 41 5c pop %r12 0.00 : 41a7a2: 41 5d pop %r13 0.00 : 41a7a4: 41 5e pop %r14 0.00 : 41a7a6: 41 5f pop %r15 0.00 : 41a7a8: c3 retq 0.00 : 41a7a9: e8 62 cc ff ff callq 417410 0.00 : 41a7ae: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 41a7b1: 89 c3 mov %eax,%ebx 0.00 : 41a7b3: 0f 84 f8 00 00 00 je 41a8b1 0.00 : 41a7b9: 83 f8 0a cmp $0xa,%eax 0.00 : 41a7bc: 0f 84 e3 00 00 00 je 41a8a5 0.00 : 41a7c2: 4c 8b 2d df 2f 23 00 mov 0x232fdf(%rip),%r13 # 64d7a8 0.00 : 41a7c9: 41 c6 45 00 5c movb $0x5c,0x0(%r13) 0.00 : 41a7ce: 49 83 c5 01 add $0x1,%r13 0.00 : 41a7d2: 4c 3b 2d b7 30 23 00 cmp 0x2330b7(%rip),%r13 # 64d890 0.00 : 41a7d9: 4c 89 2d c8 2f 23 00 mov %r13,0x232fc8(%rip) # 64d7a8 0.00 : 41a7e0: 0f 84 b5 00 00 00 je 41a89b 0.00 : 41a7e6: 4c 8b 3d bb 2f 23 00 mov 0x232fbb(%rip),%r15 # 64d7a8 0.00 : 41a7ed: 41 88 1f mov %bl,(%r15) 0.00 : 41a7f0: 49 83 c7 01 add $0x1,%r15 0.00 : 41a7f4: 4c 3b 3d 95 30 23 00 cmp 0x233095(%rip),%r15 # 64d890 0.00 : 41a7fb: 4c 89 3d a6 2f 23 00 mov %r15,0x232fa6(%rip) # 64d7a8 0.00 : 41a802: 0f 85 f8 f7 ff ff jne 41a000 0.00 : 41a808: e9 5e f8 ff ff jmpq 41a06b 0.00 : 41a80d: 0f 1f 00 nopl (%rax) 0.00 : 41a810: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41a817: 00 0.00 : 41a818: 48 8b 5a f8 mov -0x8(%rdx),%rbx 0.00 : 41a81c: e9 8c e5 ff ff jmpq 418dad 0.00 : 41a821: 44 8b 25 30 5b 23 00 mov 0x235b30(%rip),%r12d # 650358 0.00 : 41a828: 41 83 ec 01 sub $0x1,%r12d 0.00 : 41a82c: 66 44 89 62 20 mov %r12w,0x20(%rdx) 0.00 : 41a831: e9 41 e3 ff ff jmpq 418b77 0.00 : 41a836: 8b 0d 04 31 23 00 mov 0x233104(%rip),%ecx # 64d940 0.00 : 41a83c: 41 bc 7f 00 00 00 mov $0x7f,%r12d 0.00 : 41a842: 44 8d 59 ff lea -0x1(%rcx),%r11d 0.00 : 41a846: 85 c9 test %ecx,%ecx 0.00 : 41a848: 45 0f 45 e3 cmovne %r11d,%r12d 0.00 : 41a84c: 44 89 25 ed 30 23 00 mov %r12d,0x2330ed(%rip) # 64d940 0.00 : 41a853: e9 c1 ee ff ff jmpq 419719 0.00 : 41a858: 8b 05 fa 5a 23 00 mov 0x235afa(%rip),%eax # 650358 0.00 : 41a85e: 83 e8 01 sub $0x1,%eax 0.00 : 41a861: 66 89 42 20 mov %ax,0x20(%rdx) 0.00 : 41a865: e9 ee e1 ff ff jmpq 418a58 0.00 : 41a86a: 48 83 84 24 a8 00 00 addq $0x8,0xa8(%rsp) 0.00 : 41a871: 00 08 0.00 : 41a873: 4c 8b 35 ce a0 23 00 mov 0x23a0ce(%rip),%r14 # 654948 0.00 : 41a87a: 89 d5 mov %edx,%ebp 0.00 : 41a87c: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41a883: 00 0.00 : 41a884: 83 6c 24 44 01 subl $0x1,0x44(%rsp) 0.00 : 41a889: c7 05 ad 80 23 00 fe movl $0xfffffffe,0x2380ad(%rip) # 652940 0.00 : 41a890: ff ff ff 0.00 : 41a893: 4d 89 30 mov %r14,(%r8) 0.00 : 41a896: e9 1d f0 ff ff jmpq 4198b8 0.00 : 41a89b: e8 80 b6 ff ff callq 415f20 0.00 : 41a8a0: e9 41 ff ff ff jmpq 41a7e6 0.00 : 41a8a5: 83 05 ac 5a 23 00 01 addl $0x1,0x235aac(%rip) # 650358 0.00 : 41a8ac: e9 4f f7 ff ff jmpq 41a000 0.00 : 41a8b1: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41a8b6: be 70 c8 43 00 mov $0x43c870,%esi 0.00 : 41a8bb: 31 ff xor %edi,%edi 0.00 : 41a8bd: e8 5e c7 fe ff callq 407020 0.00 : 41a8c2: 48 89 c7 mov %rax,%rdi 0.00 : 41a8c5: 31 c0 xor %eax,%eax 0.00 : 41a8c7: e8 c4 b8 ff ff callq 416190 0.00 : 41a8cc: e9 4f fe ff ff jmpq 41a720 0.00 : 41a8d1: 48 8b bc 24 98 00 00 mov 0x98(%rsp),%rdi 0.00 : 41a8d8: 00 0.00 : 41a8d9: e8 42 c4 fe ff callq 406d20 0.00 : 41a8de: 66 90 xchg %ax,%ax 0.00 : 41a8e0: e9 b0 fe ff ff jmpq 41a795 0.00 : 41a8e5: e8 26 cb ff ff callq 417410 0.00 : 41a8ea: 83 3d 17 a1 23 00 01 cmpl $0x1,0x23a117(%rip) # 654a08 0.00 : 41a8f1: 89 c5 mov %eax,%ebp 0.00 : 41a8f3: 7e 19 jle 41a90e 0.00 : 41a8f5: 8b 35 45 30 23 00 mov 0x233045(%rip),%esi # 64d940 0.00 : 41a8fb: ba 7f 00 00 00 mov $0x7f,%edx 0.00 : 41a900: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 41a903: 85 f6 test %esi,%esi 0.00 : 41a905: 0f 45 d1 cmovne %ecx,%edx 0.00 : 41a908: 89 15 32 30 23 00 mov %edx,0x233032(%rip) # 64d940 0.00 : 41a90e: 48 8b 05 53 2f 23 00 mov 0x232f53(%rip),%rax # 64d868 0.00 : 41a915: 48 85 c0 test %rax,%rax 0.00 : 41a918: 74 14 je 41a92e 0.00 : 41a91a: 48 3b 05 57 2f 23 00 cmp 0x232f57(%rip),%rax # 64d878 0.00 : 41a921: 76 0b jbe 41a92e 0.00 : 41a923: 48 83 e8 01 sub $0x1,%rax 0.00 : 41a927: 48 89 05 3a 2f 23 00 mov %rax,0x232f3a(%rip) # 64d868 0.00 : 41a92e: 83 fd 69 cmp $0x69,%ebp 0.00 : 41a931: 74 09 je 41a93c 0.00 : 41a933: 83 fd 73 cmp $0x73,%ebp 0.00 : 41a936: 0f 85 24 fe ff ff jne 41a760 0.00 : 41a93c: 48 83 3d 1c 5a 23 00 cmpq $0x0,0x235a1c(%rip) # 650360 0.00 : 41a943: 00 0.00 : 41a944: 0f 84 2b 01 00 00 je 41aa75 0.00 : 41a94a: be 15 07 00 00 mov $0x715,%esi 0.00 : 41a94f: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41a954: e8 ef 69 ff ff callq 411348 0.00 : 41a959: 44 8b 25 f8 59 23 00 mov 0x2359f8(%rip),%r12d # 650358 0.00 : 41a960: 4c 8b 3d f9 59 23 00 mov 0x2359f9(%rip),%r15 # 650360 0.00 : 41a967: 31 ff xor %edi,%edi 0.00 : 41a969: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41a96e: be a8 c8 43 00 mov $0x43c8a8,%esi 0.00 : 41a973: 4c 8b 2d 56 2c 23 00 mov 0x232c56(%rip),%r13 # 64d5d0 0.00 : 41a97a: e8 a1 c6 fe ff callq 407020 0.00 : 41a97f: 89 e9 mov %ebp,%ecx 0.00 : 41a981: 48 89 c7 mov %rax,%rdi 0.00 : 41a984: 44 89 e2 mov %r12d,%edx 0.00 : 41a987: 4c 89 fe mov %r15,%rsi 0.00 : 41a98a: 31 c0 xor %eax,%eax 0.00 : 41a98c: 41 ff d5 callq *%r13 0.00 : 41a98f: e9 cc fd ff ff jmpq 41a760 0.00 : 41a994: e8 87 b5 ff ff callq 415f20 0.00 : 41a999: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41a9a0: e9 9f fd ff ff jmpq 41a744 0.00 : 41a9a5: be f4 03 00 00 mov $0x3f4,%esi 0.00 : 41a9aa: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41a9af: e8 94 69 ff ff callq 411348 0.00 : 41a9b4: 31 ff xor %edi,%edi 0.00 : 41a9b6: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41a9bb: be 3b c3 43 00 mov $0x43c33b,%esi 0.00 : 41a9c0: e8 5b c6 fe ff callq 407020 0.00 : 41a9c5: 48 89 c7 mov %rax,%rdi 0.00 : 41a9c8: 31 c0 xor %eax,%eax 0.00 : 41a9ca: e8 fb 6a ff ff callq 4114ca 0.00 : 41a9cf: 81 3d 27 2e 23 00 2b cmpl $0x12b,0x232e27(%rip) # 64d800 0.00 : 41a9d6: 01 00 00 0.00 : 41a9d9: 0f 84 99 fc ff ff je 41a678 0.00 : 41a9df: 8b 2d 1b 59 23 00 mov 0x23591b(%rip),%ebp # 650300 0.00 : 41a9e5: c7 05 11 2e 23 00 2b movl $0x12b,0x232e11(%rip) # 64d800 0.00 : 41a9ec: 01 00 00 0.00 : 41a9ef: 85 ed test %ebp,%ebp 0.00 : 41a9f1: 0f 84 72 fc ff ff je 41a669 0.00 : 41a9f7: 66 83 3d fd 2d 23 00 cmpw $0x0,0x232dfd(%rip) # 64d7fc 0.00 : 41a9fe: 00 0.00 : 41a9ff: 0f 85 64 fc ff ff jne 41a669 0.00 : 41aa05: be 3a 07 00 00 mov $0x73a,%esi 0.00 : 41aa0a: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41aa0f: bd 2b 01 00 00 mov $0x12b,%ebp 0.00 : 41aa14: e8 2f 69 ff ff callq 411348 0.00 : 41aa19: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41aa1e: be 48 c8 43 00 mov $0x43c848,%esi 0.00 : 41aa23: 31 ff xor %edi,%edi 0.00 : 41aa25: 4c 8b 35 a4 2b 23 00 mov 0x232ba4(%rip),%r14 # 64d5d0 0.00 : 41aa2c: e8 ef c5 fe ff callq 407020 0.00 : 41aa31: 48 89 c7 mov %rax,%rdi 0.00 : 41aa34: 31 c0 xor %eax,%eax 0.00 : 41aa36: 41 ff d6 callq *%r14 0.00 : 41aa39: 66 c7 05 ba 2d 23 00 movw $0x1,0x232dba(%rip) # 64d7fc 0.00 : 41aa40: 01 00 0.00 : 41aa42: e9 b7 ee ff ff jmpq 4198fe 0.00 : 41aa47: 48 8b 3b mov (%rbx),%rdi 0.00 : 41aa4a: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41aa4f: be 01 00 00 00 mov $0x1,%esi 0.00 : 41aa54: e8 b7 d9 ff ff callq 418410 0.00 : 41aa59: bf 07 00 00 00 mov $0x7,%edi 0.00 : 41aa5e: 49 89 c5 mov %rax,%r13 0.00 : 41aa61: e8 5a c1 ff ff callq 416bc0 0.00 : 41aa66: 4c 89 28 mov %r13,(%rax) 0.00 : 41aa69: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41aa6d: 49 89 c7 mov %rax,%r15 0.00 : 41aa70: e9 0b df ff ff jmpq 418980 0.00 : 41aa75: be 19 07 00 00 mov $0x719,%esi 0.00 : 41aa7a: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41aa7f: e8 c4 68 ff ff callq 411348 0.00 : 41aa84: 31 ff xor %edi,%edi 0.00 : 41aa86: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41aa8b: be b0 c8 43 00 mov $0x43c8b0,%esi 0.00 : 41aa90: 48 8b 1d 39 2b 23 00 mov 0x232b39(%rip),%rbx # 64d5d0 0.00 : 41aa97: e8 84 c5 fe ff callq 407020 0.00 : 41aa9c: 89 ee mov %ebp,%esi 0.00 : 41aa9e: 48 89 c7 mov %rax,%rdi 0.00 : 41aaa1: 31 c0 xor %eax,%eax 0.00 : 41aaa3: ff d3 callq *%rbx 0.00 : 41aaa5: e9 b6 fc ff ff jmpq 41a760 0.00 : 41aaaa: e8 11 c3 fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 41aaaf: 48 8b 1d fa 2c 23 00 mov 0x232cfa(%rip),%rbx # 64d7b0 0.00 : 41aab6: 48 8b 30 mov (%rax),%rsi 0.00 : 41aab9: 0f b6 4b 01 movzbl 0x1(%rbx),%ecx 0.00 : 41aabd: 48 0f be f9 movsbq %cl,%rdi 0.00 : 41aac1: f6 44 7e 01 08 testb $0x8,0x1(%rsi,%rdi,2) 0.00 : 41aac6: 75 44 jne 41ab0c 0.00 : 41aac8: 80 f9 78 cmp $0x78,%cl 0.00 : 41aacb: 74 09 je 41aad6 0.00 : 41aacd: 80 f9 58 cmp $0x58,%cl 0.00 : 41aad0: 0f 85 e6 fa ff ff jne 41a5bc 0.00 : 41aad6: be cd 08 00 00 mov $0x8cd,%esi 0.00 : 41aadb: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41aae0: e8 63 68 ff ff callq 411348 0.00 : 41aae5: 4c 8b 3d c4 2c 23 00 mov 0x232cc4(%rip),%r15 # 64d7b0 0.00 : 41aaec: 4c 89 ff mov %r15,%rdi 0.00 : 41aaef: e8 3c c2 fe ff callq 406d30 0.00 : 41aaf4: 4c 89 fa mov %r15,%rdx 0.00 : 41aaf7: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 41aafa: bf 68 ca 43 00 mov $0x43ca68,%edi 0.00 : 41aaff: 31 c0 xor %eax,%eax 0.00 : 41ab01: ff 15 c9 2a 23 00 callq *0x232ac9(%rip) # 64d5d0 0.00 : 41ab07: e9 a9 fa ff ff jmpq 41a5b5 0.00 : 41ab0c: be ca 08 00 00 mov $0x8ca,%esi 0.00 : 41ab11: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41ab16: e8 2d 68 ff ff callq 411348 0.00 : 41ab1b: 48 8b 1d 8e 2c 23 00 mov 0x232c8e(%rip),%rbx # 64d7b0 0.00 : 41ab22: 48 89 df mov %rbx,%rdi 0.00 : 41ab25: e8 06 c2 fe ff callq 406d30 0.00 : 41ab2a: 48 89 da mov %rbx,%rdx 0.00 : 41ab2d: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 41ab30: bf 38 ca 43 00 mov $0x43ca38,%edi 0.00 : 41ab35: 31 c0 xor %eax,%eax 0.00 : 41ab37: ff 15 93 2a 23 00 callq *0x232a93(%rip) # 64d5d0 0.00 : 41ab3d: 48 8b 1d 6c 2c 23 00 mov 0x232c6c(%rip),%rbx # 64d7b0 0.00 : 41ab44: e9 73 fa ff ff jmpq 41a5bc 0.00 : 41ab49: e8 12 c1 ff ff callq 416c60 0.00 : 41ab4e: 48 85 c0 test %rax,%rax 0.00 : 41ab51: 0f 85 3f f9 ff ff jne 41a496 0.00 : 41ab57: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 41ab5c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41ab60: e9 74 ef ff ff jmpq 419ad9 0.00 : 41ab65: 4c 63 fb movslq %ebx,%r15 0.00 : 41ab68: 41 88 87 c0 d8 64 00 mov %al,0x64d8c0(%r15) 0.00 : 41ab6f: e9 e2 f9 ff ff jmpq 41a556 0.00 : 41ab74: bf 10 00 00 00 mov $0x10,%edi 0.00 : 41ab79: e8 42 c0 ff ff callq 416bc0 0.00 : 41ab7e: 48 89 c2 mov %rax,%rdx 0.00 : 41ab81: 48 89 28 mov %rbp,(%rax) 0.00 : 41ab84: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 41ab88: e9 b6 e1 ff ff jmpq 418d43 0.00 : 41ab8d: 48 89 c2 mov %rax,%rdx 0.00 : 41ab90: e9 94 f8 ff ff jmpq 41a429 0.00 : 41ab95: 83 05 bc 57 23 00 01 addl $0x1,0x2357bc(%rip) # 650358 0.00 : 41ab9c: 48 8b 15 c5 2c 23 00 mov 0x232cc5(%rip),%rdx # 64d868 0.00 : 41aba3: e9 78 ef ff ff jmpq 419b20 0.00 : 41aba8: e8 b3 c0 ff ff callq 416c60 0.00 : 41abad: 48 85 c0 test %rax,%rax 0.00 : 41abb0: 0f 85 ec f6 ff ff jne 41a2a2 0.00 : 41abb6: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 41abbb: e9 c8 ea ff ff jmpq 419688 0.00 : 41abc0: 4c 63 fb movslq %ebx,%r15 0.00 : 41abc3: 41 88 87 c0 d8 64 00 mov %al,0x64d8c0(%r15) 0.00 : 41abca: e9 8b f7 ff ff jmpq 41a35a 0.00 : 41abcf: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 41abd3: 75 51 jne 41ac26 0.00 : 41abd5: 44 8d 43 01 lea 0x1(%rbx),%r8d 0.00 : 41abd9: 83 fb 7f cmp $0x7f,%ebx 0.00 : 41abdc: 4c 63 cb movslq %ebx,%r9 0.00 : 41abdf: 44 89 eb mov %r13d,%ebx 0.00 : 41abe2: 41 88 a9 c0 d8 64 00 mov %bpl,0x64d8c0(%r9) 0.00 : 41abe9: 41 0f 45 d8 cmovne %r8d,%ebx 0.00 : 41abed: 48 83 c5 01 add $0x1,%rbp 0.00 : 41abf1: e9 fe f2 ff ff jmpq 419ef4 0.00 : 41abf6: 48 8b 15 ab 2b 23 00 mov 0x232bab(%rip),%rdx # 64d7a8 0.00 : 41abfd: 4c 8d 59 01 lea 0x1(%rcx),%r11 0.00 : 41ac01: 49 39 d3 cmp %rdx,%r11 0.00 : 41ac04: 0f 84 4b f4 ff ff je 41a055 0.00 : 41ac0a: 48 8d 41 02 lea 0x2(%rcx),%rax 0.00 : 41ac0e: 48 39 c2 cmp %rax,%rdx 0.00 : 41ac11: 0f 85 66 f6 ff ff jne 41a27d 0.00 : 41ac17: 80 79 01 5e cmpb $0x5e,0x1(%rcx) 0.00 : 41ac1b: 0f 85 5c f6 ff ff jne 41a27d 0.00 : 41ac21: e9 2f f4 ff ff jmpq 41a055 0.00 : 41ac26: 4c 63 d3 movslq %ebx,%r10 0.00 : 41ac29: 41 88 82 c0 d8 64 00 mov %al,0x64d8c0(%r10) 0.00 : 41ac30: e9 15 f3 ff ff jmpq 419f4a 0.00 : 41ac35: e8 26 c0 ff ff callq 416c60 0.00 : 41ac3a: 48 85 c0 test %rax,%rax 0.00 : 41ac3d: 0f 85 7a f2 ff ff jne 419ebd 0.00 : 41ac43: 81 3d b3 2b 23 00 2b cmpl $0x12b,0x232bb3(%rip) # 64d800 0.00 : 41ac4a: 01 00 00 0.00 : 41ac4d: 0f 84 25 fa ff ff je 41a678 0.00 : 41ac53: 44 8b 3d a6 56 23 00 mov 0x2356a6(%rip),%r15d # 650300 0.00 : 41ac5a: c7 05 9c 2b 23 00 2b movl $0x12b,0x232b9c(%rip) # 64d800 0.00 : 41ac61: 01 00 00 0.00 : 41ac64: 45 85 ff test %r15d,%r15d 0.00 : 41ac67: 0f 84 fc f9 ff ff je 41a669 0.00 : 41ac6d: 66 83 3d 87 2b 23 00 cmpw $0x0,0x232b87(%rip) # 64d7fc 0.00 : 41ac74: 00 0.00 : 41ac75: be c0 06 00 00 mov $0x6c0,%esi 0.00 : 41ac7a: 0f 85 e9 f9 ff ff jne 41a669 0.00 : 41ac80: e9 85 fd ff ff jmpq 41aa0a 0.00 : 41ac85: 44 8b 0d 6c 56 23 00 mov 0x23566c(%rip),%r9d # 6502f8 0.00 : 41ac8c: 45 85 c9 test %r9d,%r9d 0.00 : 41ac8f: 0f 85 09 f0 ff ff jne 419c9e 0.00 : 41ac95: 4c 8b 15 14 2b 23 00 mov 0x232b14(%rip),%r10 # 64d7b0 0.00 : 41ac9c: 49 83 c2 02 add $0x2,%r10 0.00 : 41aca0: 4c 39 15 01 2b 23 00 cmp %r10,0x232b01(%rip) # 64d7a8 0.00 : 41aca7: 0f 85 76 f5 ff ff jne 41a223 0.00 : 41acad: e8 5e c7 ff ff callq 417410 0.00 : 41acb2: 41 89 c6 mov %eax,%r14d 0.00 : 41acb5: 49 63 de movslq %r14d,%rbx 0.00 : 41acb8: e8 03 c1 fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 41acbd: 4c 8b 30 mov (%rax),%r14 0.00 : 41acc0: 41 f6 44 5e 01 10 testb $0x10,0x1(%r14,%rbx,2) 0.00 : 41acc6: 74 4c je 41ad14 0.00 : 41acc8: 83 3d 39 9d 23 00 01 cmpl $0x1,0x239d39(%rip) # 654a08 0.00 : 41accf: 7e 18 jle 41ace9 0.00 : 41acd1: 44 8b 1d 68 2c 23 00 mov 0x232c68(%rip),%r11d # 64d940 0.00 : 41acd8: 41 8d 6b ff lea -0x1(%r11),%ebp 0.00 : 41acdc: 45 85 db test %r11d,%r11d 0.00 : 41acdf: 41 0f 44 ef cmove %r15d,%ebp 0.00 : 41ace3: 89 2d 57 2c 23 00 mov %ebp,0x232c57(%rip) # 64d940 0.00 : 41ace9: 48 8b 05 78 2b 23 00 mov 0x232b78(%rip),%rax # 64d868 0.00 : 41acf0: 48 85 c0 test %rax,%rax 0.00 : 41acf3: 74 72 je 41ad67 0.00 : 41acf5: 48 3b 05 7c 2b 23 00 cmp 0x232b7c(%rip),%rax # 64d878 0.00 : 41acfc: 76 69 jbe 41ad67 0.00 : 41acfe: 48 83 e8 01 sub $0x1,%rax 0.00 : 41ad02: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 41ad08: 48 89 05 59 2b 23 00 mov %rax,0x232b59(%rip) # 64d868 0.00 : 41ad0f: e9 0f f5 ff ff jmpq 41a223 0.00 : 41ad14: 83 3d ed 9c 23 00 01 cmpl $0x1,0x239ced(%rip) # 654a08 0.00 : 41ad1b: 7e 1d jle 41ad3a 0.00 : 41ad1d: 8b 15 1d 2c 23 00 mov 0x232c1d(%rip),%edx # 64d940 0.00 : 41ad23: 41 bc 7f 00 00 00 mov $0x7f,%r12d 0.00 : 41ad29: 44 8d 6a ff lea -0x1(%rdx),%r13d 0.00 : 41ad2d: 85 d2 test %edx,%edx 0.00 : 41ad2f: 45 0f 45 e5 cmovne %r13d,%r12d 0.00 : 41ad33: 44 89 25 06 2c 23 00 mov %r12d,0x232c06(%rip) # 64d940 0.00 : 41ad3a: 48 8b 05 27 2b 23 00 mov 0x232b27(%rip),%rax # 64d868 0.00 : 41ad41: 48 85 c0 test %rax,%rax 0.00 : 41ad44: 0f 84 54 ef ff ff je 419c9e 0.00 : 41ad4a: 48 3b 05 27 2b 23 00 cmp 0x232b27(%rip),%rax # 64d878 0.00 : 41ad51: 0f 86 47 ef ff ff jbe 419c9e 0.00 : 41ad57: 48 83 e8 01 sub $0x1,%rax 0.00 : 41ad5b: 48 89 05 06 2b 23 00 mov %rax,0x232b06(%rip) # 64d868 0.00 : 41ad62: e9 37 ef ff ff jmpq 419c9e 0.00 : 41ad67: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 41ad6d: e9 b1 f4 ff ff jmpq 41a223 0.00 : 41ad72: 45 85 f6 test %r14d,%r14d 0.00 : 41ad75: 0f 85 a8 f4 ff ff jne 41a223 0.00 : 41ad7b: 45 85 e4 test %r12d,%r12d 0.00 : 41ad7e: 66 90 xchg %ax,%ax 0.00 : 41ad80: 0f 85 18 ef ff ff jne 419c9e 0.00 : 41ad86: 66 90 xchg %ax,%ax 0.00 : 41ad88: e8 83 c6 ff ff callq 417410 0.00 : 41ad8d: 83 f8 2d cmp $0x2d,%eax 0.00 : 41ad90: 89 c3 mov %eax,%ebx 0.00 : 41ad92: 74 74 je 41ae08 0.00 : 41ad94: 83 f8 2b cmp $0x2b,%eax 0.00 : 41ad97: 74 6f je 41ae08 0.00 : 41ad99: e8 22 c0 fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 41ad9e: 4c 8b 18 mov (%rax),%r11 0.00 : 41ada1: 4c 63 e3 movslq %ebx,%r12 0.00 : 41ada4: 43 f6 44 63 01 08 testb $0x8,0x1(%r11,%r12,2) 0.00 : 41adaa: 0f 84 ed f3 ff ff je 41a19d 0.00 : 41adb0: 83 3d 51 9c 23 00 01 cmpl $0x1,0x239c51(%rip) # 654a08 0.00 : 41adb7: 7e 19 jle 41add2 0.00 : 41adb9: 44 8b 15 80 2b 23 00 mov 0x232b80(%rip),%r10d # 64d940 0.00 : 41adc0: 45 8d 4a ff lea -0x1(%r10),%r9d 0.00 : 41adc4: 45 85 d2 test %r10d,%r10d 0.00 : 41adc7: 45 0f 44 cf cmove %r15d,%r9d 0.00 : 41adcb: 44 89 0d 6e 2b 23 00 mov %r9d,0x232b6e(%rip) # 64d940 0.00 : 41add2: 48 8b 05 8f 2a 23 00 mov 0x232a8f(%rip),%rax # 64d868 0.00 : 41add9: 48 85 c0 test %rax,%rax 0.00 : 41addc: 74 1f je 41adfd 0.00 : 41adde: 48 3b 05 93 2a 23 00 cmp 0x232a93(%rip),%rax # 64d878 0.00 : 41ade5: 76 16 jbe 41adfd 0.00 : 41ade7: 48 83 e8 01 sub $0x1,%rax 0.00 : 41adeb: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 41adf1: 48 89 05 70 2a 23 00 mov %rax,0x232a70(%rip) # 64d868 0.00 : 41adf8: e9 26 f4 ff ff jmpq 41a223 0.00 : 41adfd: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 41ae03: e9 1b f4 ff ff jmpq 41a223 0.00 : 41ae08: e8 03 c6 ff ff callq 417410 0.00 : 41ae0d: 89 c5 mov %eax,%ebp 0.00 : 41ae0f: e8 ac bf fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 41ae14: 48 8b 08 mov (%rax),%rcx 0.00 : 41ae17: 48 63 f5 movslq %ebp,%rsi 0.00 : 41ae1a: f6 44 71 01 08 testb $0x8,0x1(%rcx,%rsi,2) 0.00 : 41ae1f: 74 50 je 41ae71 0.00 : 41ae21: 48 8b 3d 80 29 23 00 mov 0x232980(%rip),%rdi # 64d7a8 0.00 : 41ae28: 88 1f mov %bl,(%rdi) 0.00 : 41ae2a: 48 83 c7 01 add $0x1,%rdi 0.00 : 41ae2e: 48 3b 3d 5b 2a 23 00 cmp 0x232a5b(%rip),%rdi # 64d890 0.00 : 41ae35: 48 89 3d 6c 29 23 00 mov %rdi,0x23296c(%rip) # 64d7a8 0.00 : 41ae3c: 75 05 jne 41ae43 0.00 : 41ae3e: e8 dd b0 ff ff callq 415f20 0.00 : 41ae43: 48 8b 05 5e 29 23 00 mov 0x23295e(%rip),%rax # 64d7a8 0.00 : 41ae4a: 40 88 28 mov %bpl,(%rax) 0.00 : 41ae4d: 48 83 c0 01 add $0x1,%rax 0.00 : 41ae51: 48 3b 05 38 2a 23 00 cmp 0x232a38(%rip),%rax # 64d890 0.00 : 41ae58: 48 89 05 49 29 23 00 mov %rax,0x232949(%rip) # 64d7a8 0.00 : 41ae5f: 75 9c jne 41adfd 0.00 : 41ae61: e8 ba b0 ff ff callq 415f20 0.00 : 41ae66: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 41ae6c: e9 b2 f3 ff ff jmpq 41a223 0.00 : 41ae71: 83 3d 90 9b 23 00 01 cmpl $0x1,0x239b90(%rip) # 654a08 0.00 : 41ae78: 7e 19 jle 41ae93 0.00 : 41ae7a: 44 8b 0d bf 2a 23 00 mov 0x232abf(%rip),%r9d # 64d940 0.00 : 41ae81: 45 8d 41 ff lea -0x1(%r9),%r8d 0.00 : 41ae85: 45 85 c9 test %r9d,%r9d 0.00 : 41ae88: 45 0f 44 c7 cmove %r15d,%r8d 0.00 : 41ae8c: 44 89 05 ad 2a 23 00 mov %r8d,0x232aad(%rip) # 64d940 0.00 : 41ae93: 48 8b 0d ce 29 23 00 mov 0x2329ce(%rip),%rcx # 64d868 0.00 : 41ae9a: 48 85 c9 test %rcx,%rcx 0.00 : 41ae9d: 74 17 je 41aeb6 0.00 : 41ae9f: 48 3b 0d d2 29 23 00 cmp 0x2329d2(%rip),%rcx # 64d878 0.00 : 41aea6: 76 0e jbe 41aeb6 0.00 : 41aea8: 4c 8d 51 ff lea -0x1(%rcx),%r10 0.00 : 41aeac: 4c 89 15 b5 29 23 00 mov %r10,0x2329b5(%rip) # 64d868 0.00 : 41aeb3: 4c 89 d1 mov %r10,%rcx 0.00 : 41aeb6: 83 3d 4b 9b 23 00 01 cmpl $0x1,0x239b4b(%rip) # 654a08 0.00 : 41aebd: 0f 8e ff f2 ff ff jle 41a1c2 0.00 : 41aec3: 8b 2d 77 2a 23 00 mov 0x232a77(%rip),%ebp # 64d940 0.00 : 41aec9: 8d 5d ff lea -0x1(%rbp),%ebx 0.00 : 41aecc: 85 ed test %ebp,%ebp 0.00 : 41aece: 41 0f 44 df cmove %r15d,%ebx 0.00 : 41aed2: 89 1d 68 2a 23 00 mov %ebx,0x232a68(%rip) # 64d940 0.00 : 41aed8: e9 e5 f2 ff ff jmpq 41a1c2 0.00 : 41aedd: 8b 1d 15 54 23 00 mov 0x235415(%rip),%ebx # 6502f8 0.00 : 41aee3: 85 db test %ebx,%ebx 0.00 : 41aee5: 0f 85 b3 ed ff ff jne 419c9e 0.00 : 41aeeb: 45 85 f6 test %r14d,%r14d 0.00 : 41aeee: 0f 84 aa ed ff ff je 419c9e 0.00 : 41aef4: e9 2a f3 ff ff jmpq 41a223 0.00 : 41aef9: 45 09 ec or %r13d,%r12d 0.00 : 41aefc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41af00: 0f 85 a1 ed ff ff jne 419ca7 0.00 : 41af06: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 41af0c: 45 31 e4 xor %r12d,%r12d 0.00 : 41af0f: 90 nop 0.00 : 41af10: e9 0e f3 ff ff jmpq 41a223 0.00 : 41af15: e8 46 bd ff ff callq 416c60 0.00 : 41af1a: 48 85 c0 test %rax,%rax 0.00 : 41af1d: 0f 85 73 f1 ff ff jne 41a096 0.00 : 41af23: bd ff ff ff ff mov $0xffffffff,%ebp 0.00 : 41af28: e9 bc e6 ff ff jmpq 4195e9 0.00 : 41af2d: 0f 1f 00 nopl (%rax) 0.00 : 41af30: e8 db c4 ff ff callq 417410 0.00 : 41af35: 83 f8 3a cmp $0x3a,%eax 0.00 : 41af38: 74 08 je 41af42 0.00 : 41af3a: 85 ed test %ebp,%ebp 0.00 : 41af3c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41af40: 75 03 jne 41af45 0.00 : 41af42: 83 c5 01 add $0x1,%ebp 0.00 : 41af45: 83 3d bc 9a 23 00 01 cmpl $0x1,0x239abc(%rip) # 654a08 0.00 : 41af4c: 0f 8f 96 01 00 00 jg 41b0e8 0.00 : 41af52: 48 8b 05 0f 29 23 00 mov 0x23290f(%rip),%rax # 64d868 0.00 : 41af59: 48 85 c0 test %rax,%rax 0.00 : 41af5c: 0f 84 ec f0 ff ff je 41a04e 0.00 : 41af62: 48 3b 05 0f 29 23 00 cmp 0x23290f(%rip),%rax # 64d878 0.00 : 41af69: 0f 86 df f0 ff ff jbe 41a04e 0.00 : 41af6f: 48 83 e8 01 sub $0x1,%rax 0.00 : 41af73: 48 8b 15 2e 28 23 00 mov 0x23282e(%rip),%rdx # 64d7a8 0.00 : 41af7a: 48 89 05 e7 28 23 00 mov %rax,0x2328e7(%rip) # 64d868 0.00 : 41af81: e9 cf f0 ff ff jmpq 41a055 0.00 : 41af86: 83 ea 01 sub $0x1,%edx 0.00 : 41af89: 7e 1c jle 41afa7 0.00 : 41af8b: 44 8b 05 ae 29 23 00 mov 0x2329ae(%rip),%r8d # 64d940 0.00 : 41af92: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 41af97: 41 8d 68 ff lea -0x1(%r8),%ebp 0.00 : 41af9b: 45 85 c0 test %r8d,%r8d 0.00 : 41af9e: 0f 45 fd cmovne %ebp,%edi 0.00 : 41afa1: 89 3d 99 29 23 00 mov %edi,0x232999(%rip) # 64d940 0.00 : 41afa7: 48 8b 05 ba 28 23 00 mov 0x2328ba(%rip),%rax # 64d868 0.00 : 41afae: 48 85 c0 test %rax,%rax 0.00 : 41afb1: 74 14 je 41afc7 0.00 : 41afb3: 48 3b 05 be 28 23 00 cmp 0x2328be(%rip),%rax # 64d878 0.00 : 41afba: 76 0b jbe 41afc7 0.00 : 41afbc: 48 83 e8 01 sub $0x1,%rax 0.00 : 41afc0: 48 89 05 a1 28 23 00 mov %rax,0x2328a1(%rip) # 64d868 0.00 : 41afc7: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41afcc: be 16 c2 43 00 mov $0x43c216,%esi 0.00 : 41afd1: e9 e5 f8 ff ff jmpq 41a8bb 0.00 : 41afd6: 83 7c 24 44 03 cmpl $0x3,0x44(%rsp) 0.00 : 41afdb: 0f 84 af 00 00 00 je 41b090 0.00 : 41afe1: 81 7c 24 1c 23 ff ff cmpl $0xffffff23,0x1c(%rsp) 0.00 : 41afe8: ff 0.00 : 41afe9: 74 6c je 41b057 0.00 : 41afeb: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 41afef: 83 c0 01 add $0x1,%eax 0.00 : 41aff2: 3d 40 04 00 00 cmp $0x440,%eax 0.00 : 41aff7: 77 5e ja 41b057 0.00 : 41aff9: 48 98 cltq 0.00 : 41affb: 66 83 bc 00 a0 ee 43 cmpw $0x1,0x43eea0(%rax,%rax,1) 0.00 : 41b002: 00 01 0.00 : 41b004: 75 51 jne 41b057 0.00 : 41b006: 0f bf 94 00 40 f7 43 movswl 0x43f740(%rax,%rax,1),%edx 0.00 : 41b00d: 00 0.00 : 41b00e: 85 d2 test %edx,%edx 0.00 : 41b010: 7e 45 jle 41b057 0.00 : 41b012: 48 83 84 24 a8 00 00 addq $0x8,0xa8(%rsp) 0.00 : 41b019: 00 08 0.00 : 41b01b: 4c 8b 15 26 99 23 00 mov 0x239926(%rip),%r10 # 654948 0.00 : 41b022: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41b029: 00 0.00 : 41b02a: c7 44 24 44 03 00 00 movl $0x3,0x44(%rsp) 0.00 : 41b031: 00 0.00 : 41b032: 4c 89 55 00 mov %r10,0x0(%rbp) 0.00 : 41b036: 89 d5 mov %edx,%ebp 0.00 : 41b038: e9 7b e8 ff ff jmpq 4198b8 0.00 : 41b03d: 4c 63 05 fc 28 23 00 movslq 0x2328fc(%rip),%r8 # 64d940 0.00 : 41b044: 41 80 b8 c0 d8 64 00 cmpb $0x1,0x64d8c0(%r8) 0.00 : 41b04b: 01 0.00 : 41b04c: 0f 84 c4 ef ff ff je 41a016 0.00 : 41b052: e9 f7 ef ff ff jmpq 41a04e 0.00 : 41b057: 4c 8b ac 24 98 00 00 mov 0x98(%rsp),%r13 0.00 : 41b05e: 00 0.00 : 41b05f: 4c 39 6c 24 48 cmp %r13,0x48(%rsp) 0.00 : 41b064: 74 42 je 41b0a8 0.00 : 41b066: 48 83 6c 24 48 02 subq $0x2,0x48(%rsp) 0.00 : 41b06c: 48 83 ac 24 a8 00 00 subq $0x8,0xa8(%rsp) 0.00 : 41b073: 00 08 0.00 : 41b075: 4c 8b 74 24 48 mov 0x48(%rsp),%r14 0.00 : 41b07a: 4d 0f bf 3e movswq (%r14),%r15 0.00 : 41b07e: 43 0f bf 84 3f e0 ea movswl 0x43eae0(%r15,%r15,1),%eax 0.00 : 41b085: 43 00 0.00 : 41b087: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : 41b08b: e9 51 ff ff ff jmpq 41afe1 0.00 : 41b090: 83 3d a9 78 23 00 00 cmpl $0x0,0x2378a9(%rip) # 652940 0.00 : 41b097: 7e 19 jle 41b0b2 0.00 : 41b099: c7 05 9d 78 23 00 fe movl $0xfffffffe,0x23789d(%rip) # 652940 0.00 : 41b0a0: ff ff ff 0.00 : 41b0a3: e9 39 ff ff ff jmpq 41afe1 0.00 : 41b0a8: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 41b0ad: e9 d0 f6 ff ff jmpq 41a782 0.00 : 41b0b2: 0f 85 29 ff ff ff jne 41afe1 0.00 : 41b0b8: 48 8b 9c 24 98 00 00 mov 0x98(%rsp),%rbx 0.00 : 41b0bf: 00 0.00 : 41b0c0: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 41b0c5: e9 b0 f6 ff ff jmpq 41a77a 0.00 : 41b0ca: 4c 63 eb movslq %ebx,%r13 0.00 : 41b0cd: 41 88 85 c0 d8 64 00 mov %al,0x64d8c0(%r13) 0.00 : 41b0d4: e9 79 f0 ff ff jmpq 41a152 0.00 : 41b0d9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b0de: be e8 c8 43 00 mov $0x43c8e8,%esi 0.00 : 41b0e3: e9 d3 f7 ff ff jmpq 41a8bb 0.00 : 41b0e8: 44 8b 15 51 28 23 00 mov 0x232851(%rip),%r10d # 64d940 0.00 : 41b0ef: 45 8d 4a ff lea -0x1(%r10),%r9d 0.00 : 41b0f3: 45 85 d2 test %r10d,%r10d 0.00 : 41b0f6: 45 0f 44 cc cmove %r12d,%r9d 0.00 : 41b0fa: 44 89 0d 3f 28 23 00 mov %r9d,0x23283f(%rip) # 64d940 0.00 : 41b101: e9 4c fe ff ff jmpq 41af52 0.00 : 41b106: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 41b10b: e9 0e e8 ff ff jmpq 41991e 0.00 : 41b110: 48 81 bc 24 b8 00 00 cmpq $0x270f,0xb8(%rsp) 0.00 : 41b117: 00 0f 27 00 00 0.00 : 41b11c: 0f 87 1a 01 00 00 ja 41b23c 0.00 : 41b122: 4c 8b 84 24 b8 00 00 mov 0xb8(%rsp),%r8 0.00 : 41b129: 00 0.00 : 41b12a: 48 c7 84 24 b8 00 00 movq $0x2710,0xb8(%rsp) 0.00 : 41b131: 00 10 27 00 00 0.00 : 41b136: 4d 01 c0 add %r8,%r8 0.00 : 41b139: 49 81 f8 10 27 00 00 cmp $0x2710,%r8 0.00 : 41b140: 4c 0f 47 84 24 b8 00 cmova 0xb8(%rsp),%r8 0.00 : 41b147: 00 00 0.00 : 41b149: 4b 8d 3c 80 lea (%r8,%r8,4),%rdi 0.00 : 41b14d: 4c 89 84 24 b8 00 00 mov %r8,0xb8(%rsp) 0.00 : 41b154: 00 0.00 : 41b155: 48 8d 7c 3f 07 lea 0x7(%rdi,%rdi,1),%rdi 0.00 : 41b15a: e8 41 ba fe ff callq 406ba0 0.00 : 41b15f: 48 85 c0 test %rax,%rax 0.00 : 41b162: 49 89 c6 mov %rax,%r14 0.00 : 41b165: 0f 84 d1 00 00 00 je 41b23c 0.00 : 41b16b: 48 29 5c 24 48 sub %rbx,0x48(%rsp) 0.00 : 41b170: 48 89 de mov %rbx,%rsi 0.00 : 41b173: 48 89 c7 mov %rax,%rdi 0.00 : 41b176: 48 d1 7c 24 48 sarq 0x48(%rsp) 0.00 : 41b17b: 48 89 84 24 98 00 00 mov %rax,0x98(%rsp) 0.00 : 41b182: 00 0.00 : 41b183: 4c 8b 6c 24 48 mov 0x48(%rsp),%r13 0.00 : 41b188: 49 83 c5 01 add $0x1,%r13 0.00 : 41b18c: 4b 8d 54 2d 00 lea 0x0(%r13,%r13,1),%rdx 0.00 : 41b191: e8 ba bd fe ff callq 406f50 0.00 : 41b196: 4c 8b 94 24 b8 00 00 mov 0xb8(%rsp),%r10 0.00 : 41b19d: 00 0.00 : 41b19e: 4a 8d 14 ed 00 00 00 lea 0x0(,%r13,8),%rdx 0.00 : 41b1a5: 00 0.00 : 41b1a6: 4c 89 e6 mov %r12,%rsi 0.00 : 41b1a9: 4f 8d 0c 56 lea (%r14,%r10,2),%r9 0.00 : 41b1ad: 4c 89 cf mov %r9,%rdi 0.00 : 41b1b0: 4c 89 8c 24 90 00 00 mov %r9,0x90(%rsp) 0.00 : 41b1b7: 00 0.00 : 41b1b8: e8 93 bd fe ff callq 406f50 0.00 : 41b1bd: 48 3b 5c 24 08 cmp 0x8(%rsp),%rbx 0.00 : 41b1c2: 74 08 je 41b1cc 0.00 : 41b1c4: 48 89 df mov %rbx,%rdi 0.00 : 41b1c7: e8 54 bb fe ff callq 406d20 0.00 : 41b1cc: 48 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%rbx 0.00 : 41b1d3: 00 0.00 : 41b1d4: 49 8d 55 ff lea -0x1(%r13),%rdx 0.00 : 41b1d8: 4d 8d 24 56 lea (%r14,%rdx,2),%r12 0.00 : 41b1dc: 48 83 eb 01 sub $0x1,%rbx 0.00 : 41b1e0: 4d 8d 1c 5e lea (%r14,%rbx,2),%r11 0.00 : 41b1e4: 4c 89 64 24 48 mov %r12,0x48(%rsp) 0.00 : 41b1e9: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 41b1ee: 4d 39 dc cmp %r11,%r12 0.00 : 41b1f1: 0f 83 c1 fe ff ff jae 41b0b8 0.00 : 41b1f7: 4c 8b bc 24 90 00 00 mov 0x90(%rsp),%r15 0.00 : 41b1fe: 00 0.00 : 41b1ff: 83 fd 05 cmp $0x5,%ebp 0.00 : 41b202: 4d 8d 2c d7 lea (%r15,%rdx,8),%r13 0.00 : 41b206: 4c 89 ac 24 a8 00 00 mov %r13,0xa8(%rsp) 0.00 : 41b20d: 00 0.00 : 41b20e: 0f 84 60 f5 ff ff je 41a774 0.00 : 41b214: 48 63 c5 movslq %ebp,%rax 0.00 : 41b217: 44 0f bf b4 00 e0 ea movswl 0x43eae0(%rax,%rax,1),%r14d 0.00 : 41b21e: 43 00 0.00 : 41b220: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 41b225: 41 81 fe 23 ff ff ff cmp $0xffffff23,%r14d 0.00 : 41b22c: 44 89 74 24 1c mov %r14d,0x1c(%rsp) 0.00 : 41b231: 0f 85 ee d4 ff ff jne 418725 0.00 : 41b237: e9 a4 d5 ff ff jmpq 4187e0 0.00 : 41b23c: bf 65 c3 43 00 mov $0x43c365,%edi 0.00 : 41b241: 31 c0 xor %eax,%eax 0.00 : 41b243: bd 02 00 00 00 mov $0x2,%ebp 0.00 : 41b248: e8 43 af ff ff callq 416190 0.00 : 41b24d: e9 28 f5 ff ff jmpq 41a77a 0.00 : 41b252: 4c 89 f6 mov %r14,%rsi 0.00 : 41b255: 48 c1 e6 05 shl $0x5,%rsi 0.00 : 41b259: f6 86 71 e3 43 00 02 testb $0x2,0x43e371(%rsi) 0.00 : 41b260: 0f 84 10 e7 ff ff je 419976 0.00 : 41b266: e9 3a e5 ff ff jmpq 4197a5 0.00 : 41b26b: 4c 89 f2 mov %r14,%rdx 0.00 : 41b26e: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 41b272: f6 82 71 e3 43 00 04 testb $0x4,0x43e371(%rdx) 0.00 : 41b279: 0f 84 e7 e6 ff ff je 419966 0.00 : 41b27f: 90 nop 0.00 : 41b280: e9 20 e5 ff ff jmpq 4197a5 0.00 : 41b285: 4d 89 f3 mov %r14,%r11 0.00 : 41b288: 49 c1 e3 05 shl $0x5,%r11 0.00 : 41b28c: 41 f6 83 71 e3 43 00 testb $0x1,0x43e371(%r11) 0.00 : 41b293: 01 0.00 : 41b294: 0f 84 be e6 ff ff je 419958 0.00 : 41b29a: 31 ff xor %edi,%edi 0.00 : 41b29c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b2a1: be b8 ca 43 00 mov $0x43cab8,%esi 0.00 : 41b2a6: e8 75 bd fe ff callq 407020 0.00 : 41b2ab: 4c 89 fe mov %r15,%rsi 0.00 : 41b2ae: 48 89 c7 mov %rax,%rdi 0.00 : 41b2b1: 31 c0 xor %eax,%eax 0.00 : 41b2b3: e8 6f 63 ff ff callq 411627 0.00 : 41b2b8: e9 9b e6 ff ff jmpq 419958 0.00 : 41b2bd: 4d 89 f2 mov %r14,%r10 0.00 : 41b2c0: 49 c1 e2 05 shl $0x5,%r10 0.00 : 41b2c4: 41 8b aa 70 e3 43 00 mov 0x43e370(%r10),%ebp 0.00 : 41b2cb: f7 c5 00 04 00 00 test $0x400,%ebp 0.00 : 41b2d1: 0f 85 0a 01 00 00 jne 41b3e1 0.00 : 41b2d7: f7 c5 00 08 00 00 test $0x800,%ebp 0.00 : 41b2dd: 0f 85 c8 00 00 00 jne 41b3ab 0.00 : 41b2e3: 81 e5 00 02 00 00 and $0x200,%ebp 0.00 : 41b2e9: 0f 84 59 e6 ff ff je 419948 0.00 : 41b2ef: be 29 09 00 00 mov $0x929,%esi 0.00 : 41b2f4: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41b2f9: e8 4a 60 ff ff callq 411348 0.00 : 41b2fe: 31 ff xor %edi,%edi 0.00 : 41b300: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b305: be 82 c2 43 00 mov $0x43c282,%esi 0.00 : 41b30a: 48 8b 2d bf 22 23 00 mov 0x2322bf(%rip),%rbp # 64d5d0 0.00 : 41b311: e8 0a bd fe ff callq 407020 0.00 : 41b316: 4c 89 fe mov %r15,%rsi 0.00 : 41b319: 48 89 c7 mov %rax,%rdi 0.00 : 41b31c: 31 c0 xor %eax,%eax 0.00 : 41b31e: ff d5 callq *%rbp 0.00 : 41b320: e9 23 e6 ff ff jmpq 419948 0.00 : 41b325: 66 83 3d bb 24 23 00 cmpw $0x0,0x2324bb(%rip) # 64d7e8 0.00 : 41b32c: 00 0.00 : 41b32d: 0f 85 9e e4 ff ff jne 4197d1 0.00 : 41b333: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 41b338: be 9c c2 43 00 mov $0x43c29c,%esi 0.00 : 41b33d: e8 0e b8 fe ff callq 406b50 0.00 : 41b342: 85 c0 test %eax,%eax 0.00 : 41b344: 0f 85 87 e4 ff ff jne 4197d1 0.00 : 41b34a: be 47 09 00 00 mov $0x947,%esi 0.00 : 41b34f: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41b354: 66 c7 05 8b 24 23 00 movw $0x1,0x23248b(%rip) # 64d7e8 0.00 : 41b35b: 01 00 0.00 : 41b35d: e8 e6 5f ff ff callq 411348 0.00 : 41b362: 31 ff xor %edi,%edi 0.00 : 41b364: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b369: be a1 c2 43 00 mov $0x43c2a1,%esi 0.00 : 41b36e: 4c 8b 2d 5b 22 23 00 mov 0x23225b(%rip),%r13 # 64d5d0 0.00 : 41b375: e8 a6 bc fe ff callq 407020 0.00 : 41b37a: 48 89 c7 mov %rax,%rdi 0.00 : 41b37d: 31 c0 xor %eax,%eax 0.00 : 41b37f: 41 ff d5 callq *%r13 0.00 : 41b382: e9 4a e4 ff ff jmpq 4197d1 0.00 : 41b387: 44 8b 3d b2 25 23 00 mov 0x2325b2(%rip),%r15d # 64d940 0.00 : 41b38e: 41 bd 7f 00 00 00 mov $0x7f,%r13d 0.00 : 41b394: 41 8d 77 ff lea -0x1(%r15),%esi 0.00 : 41b398: 45 85 ff test %r15d,%r15d 0.00 : 41b39b: 44 0f 45 ee cmovne %esi,%r13d 0.00 : 41b39f: 44 89 2d 9a 25 23 00 mov %r13d,0x23259a(%rip) # 64d940 0.00 : 41b3a6: e9 1f ea ff ff jmpq 419dca 0.00 : 41b3ab: be 26 09 00 00 mov $0x926,%esi 0.00 : 41b3b0: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41b3b5: e8 8e 5f ff ff callq 411348 0.00 : 41b3ba: 31 ff xor %edi,%edi 0.00 : 41b3bc: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b3c1: be 64 c2 43 00 mov $0x43c264,%esi 0.00 : 41b3c6: 48 8b 1d 03 22 23 00 mov 0x232203(%rip),%rbx # 64d5d0 0.00 : 41b3cd: e8 4e bc fe ff callq 407020 0.00 : 41b3d2: 4c 89 fe mov %r15,%rsi 0.00 : 41b3d5: 48 89 c7 mov %rax,%rdi 0.00 : 41b3d8: 31 c0 xor %eax,%eax 0.00 : 41b3da: ff d3 callq *%rbx 0.00 : 41b3dc: e9 02 ff ff ff jmpq 41b2e3 0.00 : 41b3e1: be 23 09 00 00 mov $0x923,%esi 0.00 : 41b3e6: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41b3eb: e8 58 5f ff ff callq 411348 0.00 : 41b3f0: 31 ff xor %edi,%edi 0.00 : 41b3f2: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b3f7: be 4b c2 43 00 mov $0x43c24b,%esi 0.00 : 41b3fc: 4c 8b 2d cd 21 23 00 mov 0x2321cd(%rip),%r13 # 64d5d0 0.00 : 41b403: e8 18 bc fe ff callq 407020 0.00 : 41b408: 4c 89 fe mov %r15,%rsi 0.00 : 41b40b: 48 89 c7 mov %rax,%rdi 0.00 : 41b40e: 31 c0 xor %eax,%eax 0.00 : 41b410: 41 ff d5 callq *%r13 0.00 : 41b413: e9 bf fe ff ff jmpq 41b2d7 0.00 : 41b418: 83 3d e9 95 23 00 01 cmpl $0x1,0x2395e9(%rip) # 654a08 0.00 : 41b41f: 7e 1c jle 41b43d 0.00 : 41b421: 8b 0d 19 25 23 00 mov 0x232519(%rip),%ecx # 64d940 0.00 : 41b427: 41 bb 7f 00 00 00 mov $0x7f,%r11d 0.00 : 41b42d: 8d 51 ff lea -0x1(%rcx),%edx 0.00 : 41b430: 85 c9 test %ecx,%ecx 0.00 : 41b432: 44 0f 45 da cmovne %edx,%r11d 0.00 : 41b436: 44 89 1d 03 25 23 00 mov %r11d,0x232503(%rip) # 64d940 0.00 : 41b43d: 48 8b 05 24 24 23 00 mov 0x232424(%rip),%rax # 64d868 0.00 : 41b444: 48 85 c0 test %rax,%rax 0.00 : 41b447: 74 14 je 41b45d 0.00 : 41b449: 48 3b 05 28 24 23 00 cmp 0x232428(%rip),%rax # 64d878 0.00 : 41b450: 76 0b jbe 41b45d 0.00 : 41b452: 48 83 e8 01 sub $0x1,%rax 0.00 : 41b456: 48 89 05 0b 24 23 00 mov %rax,0x23240b(%rip) # 64d868 0.00 : 41b45d: c7 05 99 23 23 00 2c movl $0x12c,0x232399(%rip) # 64d800 0.00 : 41b464: 01 00 00 0.00 : 41b467: bd 2c 01 00 00 mov $0x12c,%ebp 0.00 : 41b46c: e9 8d e4 ff ff jmpq 4198fe 0.00 : 41b471: 8b 2d c9 24 23 00 mov 0x2324c9(%rip),%ebp # 64d940 0.00 : 41b477: bb 7f 00 00 00 mov $0x7f,%ebx 0.00 : 41b47c: 44 8d 55 ff lea -0x1(%rbp),%r10d 0.00 : 41b480: 85 ed test %ebp,%ebp 0.00 : 41b482: 41 0f 45 da cmovne %r10d,%ebx 0.00 : 41b486: 89 1d b4 24 23 00 mov %ebx,0x2324b4(%rip) # 64d940 0.00 : 41b48c: e9 ea e8 ff ff jmpq 419d7b 0.00 : 41b491: c7 05 ad 94 23 00 1a movl $0x1a,0x2394ad(%rip) # 654948 0.00 : 41b498: 00 00 00 0.00 : 41b49b: c7 05 5b 23 23 00 08 movl $0x108,0x23235b(%rip) # 64d800 0.00 : 41b4a2: 01 00 00 0.00 : 41b4a5: bd 08 01 00 00 mov $0x108,%ebp 0.00 : 41b4aa: e9 4f e4 ff ff jmpq 4198fe 0.00 : 41b4af: e8 6c aa ff ff callq 415f20 0.00 : 41b4b4: e9 3e e8 ff ff jmpq 419cf7 0.00 : 41b4b9: 44 8b 2d 80 24 23 00 mov 0x232480(%rip),%r13d # 64d940 0.00 : 41b4c0: 41 bf 7f 00 00 00 mov $0x7f,%r15d 0.00 : 41b4c6: 45 8d 75 ff lea -0x1(%r13),%r14d 0.00 : 41b4ca: 45 85 ed test %r13d,%r13d 0.00 : 41b4cd: 45 0f 45 fe cmovne %r14d,%r15d 0.00 : 41b4d1: 44 89 3d 68 24 23 00 mov %r15d,0x232468(%rip) # 64d940 0.00 : 41b4d8: e9 d7 e7 ff ff jmpq 419cb4 0.00 : 41b4dd: 8b 2d 1d 4e 23 00 mov 0x234e1d(%rip),%ebp # 650300 0.00 : 41b4e3: 85 ed test %ebp,%ebp 0.00 : 41b4e5: 0f 84 e9 e7 ff ff je 419cd4 0.00 : 41b4eb: 66 83 3d 09 23 23 00 cmpw $0x0,0x232309(%rip) # 64d7fc 0.00 : 41b4f2: 00 0.00 : 41b4f3: 0f 85 db e7 ff ff jne 419cd4 0.00 : 41b4f9: be c3 08 00 00 mov $0x8c3,%esi 0.00 : 41b4fe: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41b503: e8 40 5e ff ff callq 411348 0.00 : 41b508: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b50d: be 48 c8 43 00 mov $0x43c848,%esi 0.00 : 41b512: 31 ff xor %edi,%edi 0.00 : 41b514: 4c 8b 25 b5 20 23 00 mov 0x2320b5(%rip),%r12 # 64d5d0 0.00 : 41b51b: e8 00 bb fe ff callq 407020 0.00 : 41b520: 48 89 c7 mov %rax,%rdi 0.00 : 41b523: 31 c0 xor %eax,%eax 0.00 : 41b525: 41 ff d4 callq *%r12 0.00 : 41b528: 66 c7 05 cb 22 23 00 movw $0x1,0x2322cb(%rip) # 64d7fc 0.00 : 41b52f: 01 00 0.00 : 41b531: e9 9e e7 ff ff jmpq 419cd4 0.00 : 41b536: e8 e5 a9 ff ff callq 415f20 0.00 : 41b53b: e9 52 e7 ff ff jmpq 419c92 0.00 : 41b540: 4c 8b 25 01 94 23 00 mov 0x239401(%rip),%r12 # 654948 0.00 : 41b547: 44 8b 35 ba 4d 23 00 mov 0x234dba(%rip),%r14d # 650308 0.00 : 41b54e: 66 41 81 4c 24 3c 00 orw $0x800,0x3c(%r12) 0.00 : 41b555: 08 0.00 : 41b556: 45 85 f6 test %r14d,%r14d 0.00 : 41b559: 0f 84 29 e6 ff ff je 419b88 0.00 : 41b55f: 4c 8b 2d e2 93 23 00 mov 0x2393e2(%rip),%r13 # 654948 0.00 : 41b566: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 41b56a: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 41b56e: e8 3c d4 fe ff callq 4089af 0.00 : 41b573: e9 10 e6 ff ff jmpq 419b88 0.00 : 41b578: e8 a3 a9 ff ff callq 415f20 0.00 : 41b57d: 0f 1f 00 nopl (%rax) 0.00 : 41b580: e9 94 e5 ff ff jmpq 419b19 0.00 : 41b585: 83 3d 7c 94 23 00 01 cmpl $0x1,0x23947c(%rip) # 654a08 0.00 : 41b58c: 7e 1d jle 41b5ab 0.00 : 41b58e: 44 8b 0d ab 23 23 00 mov 0x2323ab(%rip),%r9d # 64d940 0.00 : 41b595: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 41b59a: 45 8d 41 ff lea -0x1(%r9),%r8d 0.00 : 41b59e: 45 85 c9 test %r9d,%r9d 0.00 : 41b5a1: 41 0f 45 f8 cmovne %r8d,%edi 0.00 : 41b5a5: 89 3d 95 23 23 00 mov %edi,0x232395(%rip) # 64d940 0.00 : 41b5ab: 48 8b 05 b6 22 23 00 mov 0x2322b6(%rip),%rax # 64d868 0.00 : 41b5b2: 48 85 c0 test %rax,%rax 0.00 : 41b5b5: 74 14 je 41b5cb 0.00 : 41b5b7: 48 3b 05 ba 22 23 00 cmp 0x2322ba(%rip),%rax # 64d878 0.00 : 41b5be: 76 0b jbe 41b5cb 0.00 : 41b5c0: 48 83 e8 01 sub $0x1,%rax 0.00 : 41b5c4: 48 89 05 9d 22 23 00 mov %rax,0x23229d(%rip) # 64d868 0.00 : 41b5cb: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b5d0: be 2a c2 43 00 mov $0x43c22a,%esi 0.00 : 41b5d5: 31 ff xor %edi,%edi 0.00 : 41b5d7: e8 44 ba fe ff callq 407020 0.00 : 41b5dc: 48 89 c7 mov %rax,%rdi 0.00 : 41b5df: 31 c0 xor %eax,%eax 0.00 : 41b5e1: e8 aa ab ff ff callq 416190 0.00 : 41b5e6: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41b5eb: e8 20 b5 fe ff callq 406b10 0.00 : 41b5f0: e8 6b b6 ff ff callq 416c60 0.00 : 41b5f5: 48 85 c0 test %rax,%rax 0.00 : 41b5f8: 0f 85 7a ef ff ff jne 41a578 0.00 : 41b5fe: 66 90 xchg %ax,%ax 0.00 : 41b600: e9 52 f5 ff ff jmpq 41ab57 0.00 : 41b605: 0f 1f 00 nopl (%rax) 0.00 : 41b608: e8 53 b6 ff ff callq 416c60 0.00 : 41b60d: 48 85 c0 test %rax,%rax 0.00 : 41b610: 0f 84 1e f0 ff ff je 41a634 0.00 : 41b616: e9 f1 e3 ff ff jmpq 419a0c 0.00 : 41b61b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41b620: e8 eb bd ff ff callq 417410 0.00 : 41b625: 83 f8 7c cmp $0x7c,%eax 0.00 : 41b628: 0f 84 83 00 00 00 je 41b6b1 0.00 : 41b62e: 44 8b 35 c3 4c 23 00 mov 0x234cc3(%rip),%r14d # 6502f8 0.00 : 41b635: 45 85 f6 test %r14d,%r14d 0.00 : 41b638: 75 09 jne 41b643 0.00 : 41b63a: 83 f8 26 cmp $0x26,%eax 0.00 : 41b63d: 0f 84 b3 01 00 00 je 41b7f6 0.00 : 41b643: 83 3d be 93 23 00 01 cmpl $0x1,0x2393be(%rip) # 654a08 0.00 : 41b64a: 7f 48 jg 41b694 0.00 : 41b64c: 48 8b 05 15 22 23 00 mov 0x232215(%rip),%rax # 64d868 0.00 : 41b653: 48 85 c0 test %rax,%rax 0.00 : 41b656: 74 14 je 41b66c 0.00 : 41b658: 48 3b 05 19 22 23 00 cmp 0x232219(%rip),%rax # 64d878 0.00 : 41b65f: 76 0b jbe 41b66c 0.00 : 41b661: 48 83 e8 01 sub $0x1,%rax 0.00 : 41b665: 48 89 05 fc 21 23 00 mov %rax,0x2321fc(%rip) # 64d868 0.00 : 41b66c: 8b 15 4e 21 23 00 mov 0x23214e(%rip),%edx # 64d7c0 0.00 : 41b672: 85 d2 test %edx,%edx 0.00 : 41b674: 75 5e jne 41b6d4 0.00 : 41b676: c7 05 c8 92 23 00 43 movl $0x43,0x2392c8(%rip) # 654948 0.00 : 41b67d: 00 00 00 0.00 : 41b680: c7 05 76 21 23 00 0a movl $0x10a,0x232176(%rip) # 64d800 0.00 : 41b687: 01 00 00 0.00 : 41b68a: bd 0a 01 00 00 mov $0x10a,%ebp 0.00 : 41b68f: e9 6a e2 ff ff jmpq 4198fe 0.00 : 41b694: 8b 0d a6 22 23 00 mov 0x2322a6(%rip),%ecx # 64d940 0.00 : 41b69a: bd 7f 00 00 00 mov $0x7f,%ebp 0.00 : 41b69f: 44 8d 59 ff lea -0x1(%rcx),%r11d 0.00 : 41b6a3: 85 c9 test %ecx,%ecx 0.00 : 41b6a5: 41 0f 45 eb cmovne %r11d,%ebp 0.00 : 41b6a9: 89 2d 91 22 23 00 mov %ebp,0x232291(%rip) # 64d940 0.00 : 41b6af: eb 9b jmp 41b64c 0.00 : 41b6b1: c7 05 8d 92 23 00 19 movl $0x19,0x23928d(%rip) # 654948 0.00 : 41b6b8: 00 00 00 0.00 : 41b6bb: bd 26 01 00 00 mov $0x126,%ebp 0.00 : 41b6c0: e8 d1 d3 fe ff callq 408a96 0.00 : 41b6c5: c7 05 31 21 23 00 26 movl $0x126,0x232131(%rip) # 64d800 0.00 : 41b6cc: 01 00 00 0.00 : 41b6cf: e9 2a e2 ff ff jmpq 4198fe 0.00 : 41b6d4: 8b 35 ea 20 23 00 mov 0x2320ea(%rip),%esi # 64d7c4 0.00 : 41b6da: 85 f6 test %esi,%esi 0.00 : 41b6dc: 75 98 jne 41b676 0.00 : 41b6de: c7 05 60 92 23 00 42 movl $0x42,0x239260(%rip) # 654948 0.00 : 41b6e5: 00 00 00 0.00 : 41b6e8: c7 05 0e 21 23 00 09 movl $0x109,0x23210e(%rip) # 64d800 0.00 : 41b6ef: 01 00 00 0.00 : 41b6f2: bd 09 01 00 00 mov $0x109,%ebp 0.00 : 41b6f7: e9 02 e2 ff ff jmpq 4198fe 0.00 : 41b6fc: c7 05 42 92 23 00 20 movl $0x20,0x239242(%rip) # 654948 0.00 : 41b703: 00 00 00 0.00 : 41b706: c7 05 f0 20 23 00 0d movl $0x10d,0x2320f0(%rip) # 64d800 0.00 : 41b70d: 01 00 00 0.00 : 41b710: bd 0d 01 00 00 mov $0x10d,%ebp 0.00 : 41b715: e9 e4 e1 ff ff jmpq 4198fe 0.00 : 41b71a: 4c 63 c3 movslq %ebx,%r8 0.00 : 41b71d: 41 88 80 c0 d8 64 00 mov %al,0x64d8c0(%r8) 0.00 : 41b724: e9 fa e6 ff ff jmpq 419e23 0.00 : 41b729: e8 e2 bc ff ff callq 417410 0.00 : 41b72e: 83 f8 3d cmp $0x3d,%eax 0.00 : 41b731: 74 6c je 41b79f 0.00 : 41b733: 83 3d ce 92 23 00 01 cmpl $0x1,0x2392ce(%rip) # 654a08 0.00 : 41b73a: 7e 1f jle 41b75b 0.00 : 41b73c: 44 8b 35 fd 21 23 00 mov 0x2321fd(%rip),%r14d # 64d940 0.00 : 41b743: 41 ba 7f 00 00 00 mov $0x7f,%r10d 0.00 : 41b749: 41 8d 6e ff lea -0x1(%r14),%ebp 0.00 : 41b74d: 45 85 f6 test %r14d,%r14d 0.00 : 41b750: 44 0f 45 d5 cmovne %ebp,%r10d 0.00 : 41b754: 44 89 15 e5 21 23 00 mov %r10d,0x2321e5(%rip) # 64d940 0.00 : 41b75b: 48 8b 05 06 21 23 00 mov 0x232106(%rip),%rax # 64d868 0.00 : 41b762: 48 85 c0 test %rax,%rax 0.00 : 41b765: 74 14 je 41b77b 0.00 : 41b767: 48 3b 05 0a 21 23 00 cmp 0x23210a(%rip),%rax # 64d878 0.00 : 41b76e: 76 0b jbe 41b77b 0.00 : 41b770: 48 83 e8 01 sub $0x1,%rax 0.00 : 41b774: 48 89 05 ed 20 23 00 mov %rax,0x2320ed(%rip) # 64d868 0.00 : 41b77b: 44 8b 25 82 4b 23 00 mov 0x234b82(%rip),%r12d # 650304 0.00 : 41b782: 45 85 e4 test %r12d,%r12d 0.00 : 41b785: 0f 85 a0 00 00 00 jne 41b82b 0.00 : 41b78b: c7 05 6b 20 23 00 5e movl $0x5e,0x23206b(%rip) # 64d800 0.00 : 41b792: 00 00 00 0.00 : 41b795: bd 5e 00 00 00 mov $0x5e,%ebp 0.00 : 41b79a: e9 5f e1 ff ff jmpq 4198fe 0.00 : 41b79f: 8b 05 5f 4b 23 00 mov 0x234b5f(%rip),%eax # 650304 0.00 : 41b7a5: 85 c0 test %eax,%eax 0.00 : 41b7a7: 74 2f je 41b7d8 0.00 : 41b7a9: 8b 1d 3d 20 23 00 mov 0x23203d(%rip),%ebx # 64d7ec 0.00 : 41b7af: 85 db test %ebx,%ebx 0.00 : 41b7b1: 75 25 jne 41b7d8 0.00 : 41b7b3: 31 ff xor %edi,%edi 0.00 : 41b7b5: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b7ba: be d8 c9 43 00 mov $0x43c9d8,%esi 0.00 : 41b7bf: c7 05 23 20 23 00 01 movl $0x1,0x232023(%rip) # 64d7ec 0.00 : 41b7c6: 00 00 00 0.00 : 41b7c9: e8 52 b8 fe ff callq 407020 0.00 : 41b7ce: 48 89 c7 mov %rax,%rdi 0.00 : 41b7d1: 31 c0 xor %eax,%eax 0.00 : 41b7d3: e8 4f 5e ff ff callq 411627 0.00 : 41b7d8: c7 05 66 91 23 00 16 movl $0x16,0x239166(%rip) # 654948 0.00 : 41b7df: 00 00 00 0.00 : 41b7e2: c7 05 14 20 23 00 0b movl $0x10b,0x232014(%rip) # 64d800 0.00 : 41b7e9: 01 00 00 0.00 : 41b7ec: bd 0b 01 00 00 mov $0x10b,%ebp 0.00 : 41b7f1: e9 08 e1 ff ff jmpq 4198fe 0.00 : 41b7f6: 44 8b 2d c3 1f 23 00 mov 0x231fc3(%rip),%r13d # 64d7c0 0.00 : 41b7fd: c7 05 41 91 23 00 45 movl $0x45,0x239141(%rip) # 654948 0.00 : 41b804: 00 00 00 0.00 : 41b807: 45 85 ed test %r13d,%r13d 0.00 : 41b80a: 74 15 je 41b821 0.00 : 41b80c: 44 8b 25 b1 1f 23 00 mov 0x231fb1(%rip),%r12d # 64d7c4 0.00 : 41b813: bd 09 01 00 00 mov $0x109,%ebp 0.00 : 41b818: 45 85 e4 test %r12d,%r12d 0.00 : 41b81b: 0f 84 89 e1 ff ff je 4199aa 0.00 : 41b821: bd 0a 01 00 00 mov $0x10a,%ebp 0.00 : 41b826: e9 7f e1 ff ff jmpq 4199aa 0.00 : 41b82b: 44 8b 1d be 1f 23 00 mov 0x231fbe(%rip),%r11d # 64d7f0 0.00 : 41b832: 45 85 db test %r11d,%r11d 0.00 : 41b835: 0f 85 50 ff ff ff jne 41b78b 0.00 : 41b83b: c7 05 ab 1f 23 00 01 movl $0x1,0x231fab(%rip) # 64d7f0 0.00 : 41b842: 00 00 00 0.00 : 41b845: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b84a: be 08 ca 43 00 mov $0x43ca08,%esi 0.00 : 41b84f: 31 ff xor %edi,%edi 0.00 : 41b851: e8 ca b7 fe ff callq 407020 0.00 : 41b856: 48 89 c7 mov %rax,%rdi 0.00 : 41b859: 31 c0 xor %eax,%eax 0.00 : 41b85b: e8 c7 5d ff ff callq 411627 0.00 : 41b860: e9 26 ff ff ff jmpq 41b78b 0.00 : 41b865: e8 a6 bb ff ff callq 417410 0.00 : 41b86a: 83 f8 3d cmp $0x3d,%eax 0.00 : 41b86d: 0f 1f 00 nopl (%rax) 0.00 : 41b870: 0f 84 bd 00 00 00 je 41b933 0.00 : 41b876: 83 f8 3e cmp $0x3e,%eax 0.00 : 41b879: 74 72 je 41b8ed 0.00 : 41b87b: 83 3d 86 91 23 00 01 cmpl $0x1,0x239186(%rip) # 654a08 0.00 : 41b882: 7f 48 jg 41b8cc 0.00 : 41b884: 48 8b 05 dd 1f 23 00 mov 0x231fdd(%rip),%rax # 64d868 0.00 : 41b88b: 48 85 c0 test %rax,%rax 0.00 : 41b88e: 74 14 je 41b8a4 0.00 : 41b890: 48 3b 05 e1 1f 23 00 cmp 0x231fe1(%rip),%rax # 64d878 0.00 : 41b897: 76 0b jbe 41b8a4 0.00 : 41b899: 48 83 e8 01 sub $0x1,%rax 0.00 : 41b89d: 48 89 05 c4 1f 23 00 mov %rax,0x231fc4(%rip) # 64d868 0.00 : 41b8a4: 8b 15 16 1f 23 00 mov 0x231f16(%rip),%edx # 64d7c0 0.00 : 41b8aa: 85 d2 test %edx,%edx 0.00 : 41b8ac: 75 5d jne 41b90b 0.00 : 41b8ae: c7 05 90 90 23 00 1d movl $0x1d,0x239090(%rip) # 654948 0.00 : 41b8b5: 00 00 00 0.00 : 41b8b8: c7 05 3e 1f 23 00 3e movl $0x3e,0x231f3e(%rip) # 64d800 0.00 : 41b8bf: 00 00 00 0.00 : 41b8c2: bd 3e 00 00 00 mov $0x3e,%ebp 0.00 : 41b8c7: e9 32 e0 ff ff jmpq 4198fe 0.00 : 41b8cc: 44 8b 1d 6d 20 23 00 mov 0x23206d(%rip),%r11d # 64d940 0.00 : 41b8d3: 41 be 7f 00 00 00 mov $0x7f,%r14d 0.00 : 41b8d9: 45 8d 63 ff lea -0x1(%r11),%r12d 0.00 : 41b8dd: 45 85 db test %r11d,%r11d 0.00 : 41b8e0: 45 0f 45 f4 cmovne %r12d,%r14d 0.00 : 41b8e4: 44 89 35 55 20 23 00 mov %r14d,0x232055(%rip) # 64d940 0.00 : 41b8eb: eb 97 jmp 41b884 0.00 : 41b8ed: c7 05 51 90 23 00 41 movl $0x41,0x239051(%rip) # 654948 0.00 : 41b8f4: 00 00 00 0.00 : 41b8f7: c7 05 ff 1e 23 00 09 movl $0x109,0x231eff(%rip) # 64d800 0.00 : 41b8fe: 01 00 00 0.00 : 41b901: bd 09 01 00 00 mov $0x109,%ebp 0.00 : 41b906: e9 f3 df ff ff jmpq 4198fe 0.00 : 41b90b: 8b 0d b3 1e 23 00 mov 0x231eb3(%rip),%ecx # 64d7c4 0.00 : 41b911: 85 c9 test %ecx,%ecx 0.00 : 41b913: 75 99 jne 41b8ae 0.00 : 41b915: c7 05 29 90 23 00 40 movl $0x40,0x239029(%rip) # 654948 0.00 : 41b91c: 00 00 00 0.00 : 41b91f: c7 05 d7 1e 23 00 09 movl $0x109,0x231ed7(%rip) # 64d800 0.00 : 41b926: 01 00 00 0.00 : 41b929: bd 09 01 00 00 mov $0x109,%ebp 0.00 : 41b92e: e9 cb df ff ff jmpq 4198fe 0.00 : 41b933: c7 05 0b 90 23 00 1f movl $0x1f,0x23900b(%rip) # 654948 0.00 : 41b93a: 00 00 00 0.00 : 41b93d: c7 05 b9 1e 23 00 08 movl $0x108,0x231eb9(%rip) # 64d800 0.00 : 41b944: 01 00 00 0.00 : 41b947: bd 08 01 00 00 mov $0x108,%ebp 0.00 : 41b94c: e9 ad df ff ff jmpq 4198fe 0.00 : 41b951: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41b956: be 10 c9 43 00 mov $0x43c910,%esi 0.00 : 41b95b: e9 75 fc ff ff jmpq 41b5d5 0.00 : 41b960: e8 ab ba ff ff callq 417410 0.00 : 41b965: 83 f8 3d cmp $0x3d,%eax 0.00 : 41b968: 75 3e jne 41b9a8 0.00 : 41b96a: c7 05 d4 8f 23 00 1e movl $0x1e,0x238fd4(%rip) # 654948 0.00 : 41b971: 00 00 00 0.00 : 41b974: c7 05 82 1e 23 00 08 movl $0x108,0x231e82(%rip) # 64d800 0.00 : 41b97b: 01 00 00 0.00 : 41b97e: bd 08 01 00 00 mov $0x108,%ebp 0.00 : 41b983: e9 76 df ff ff jmpq 4198fe 0.00 : 41b988: 44 8b 25 6d 49 23 00 mov 0x23496d(%rip),%r12d # 6502fc 0.00 : 41b98f: 45 85 e4 test %r12d,%r12d 0.00 : 41b992: 0f 85 12 e0 ff ff jne 4199aa 0.00 : 41b998: e8 f9 d0 fe ff callq 408a96 0.00 : 41b99d: 89 2d 5d 1e 23 00 mov %ebp,0x231e5d(%rip) # 64d800 0.00 : 41b9a3: e9 56 df ff ff jmpq 4198fe 0.00 : 41b9a8: 83 3d 59 90 23 00 01 cmpl $0x1,0x239059(%rip) # 654a08 0.00 : 41b9af: c7 05 8f 8f 23 00 1c movl $0x1c,0x238f8f(%rip) # 654948 0.00 : 41b9b6: 00 00 00 0.00 : 41b9b9: 7f 34 jg 41b9ef 0.00 : 41b9bb: 48 8b 05 a6 1e 23 00 mov 0x231ea6(%rip),%rax # 64d868 0.00 : 41b9c2: 48 85 c0 test %rax,%rax 0.00 : 41b9c5: 74 14 je 41b9db 0.00 : 41b9c7: 48 3b 05 aa 1e 23 00 cmp 0x231eaa(%rip),%rax # 64d878 0.00 : 41b9ce: 76 0b jbe 41b9db 0.00 : 41b9d0: 48 83 e8 01 sub $0x1,%rax 0.00 : 41b9d4: 48 89 05 8d 1e 23 00 mov %rax,0x231e8d(%rip) # 64d868 0.00 : 41b9db: c7 05 1b 1e 23 00 3c movl $0x3c,0x231e1b(%rip) # 64d800 0.00 : 41b9e2: 00 00 00 0.00 : 41b9e5: bd 3c 00 00 00 mov $0x3c,%ebp 0.00 : 41b9ea: e9 0f df ff ff jmpq 4198fe 0.00 : 41b9ef: 8b 05 4b 1f 23 00 mov 0x231f4b(%rip),%eax # 64d940 0.00 : 41b9f5: 41 b8 7f 00 00 00 mov $0x7f,%r8d 0.00 : 41b9fb: 44 8d 48 ff lea -0x1(%rax),%r9d 0.00 : 41b9ff: 85 c0 test %eax,%eax 0.00 : 41ba01: 45 0f 45 c1 cmovne %r9d,%r8d 0.00 : 41ba05: 44 89 05 34 1f 23 00 mov %r8d,0x231f34(%rip) # 64d940 0.00 : 41ba0c: eb ad jmp 41b9bb 0.00 : 41ba0e: e8 fd b9 ff ff callq 417410 0.00 : 41ba13: 83 f8 3d cmp $0x3d,%eax 0.00 : 41ba16: 74 74 je 41ba8c 0.00 : 41ba18: 83 f8 2d cmp $0x2d,%eax 0.00 : 41ba1b: 74 5b je 41ba78 0.00 : 41ba1d: 83 3d e4 8f 23 00 01 cmpl $0x1,0x238fe4(%rip) # 654a08 0.00 : 41ba24: 7f 34 jg 41ba5a 0.00 : 41ba26: 48 8b 05 3b 1e 23 00 mov 0x231e3b(%rip),%rax # 64d868 0.00 : 41ba2d: 48 85 c0 test %rax,%rax 0.00 : 41ba30: 74 14 je 41ba46 0.00 : 41ba32: 48 3b 05 3f 1e 23 00 cmp 0x231e3f(%rip),%rax # 64d878 0.00 : 41ba39: 76 0b jbe 41ba46 0.00 : 41ba3b: 48 83 e8 01 sub $0x1,%rax 0.00 : 41ba3f: 48 89 05 22 1e 23 00 mov %rax,0x231e22(%rip) # 64d868 0.00 : 41ba46: c7 05 b0 1d 23 00 2d movl $0x2d,0x231db0(%rip) # 64d800 0.00 : 41ba4d: 00 00 00 0.00 : 41ba50: bd 2d 00 00 00 mov $0x2d,%ebp 0.00 : 41ba55: e9 a4 de ff ff jmpq 4198fe 0.00 : 41ba5a: 44 8b 1d df 1e 23 00 mov 0x231edf(%rip),%r11d # 64d940 0.00 : 41ba61: bd 7f 00 00 00 mov $0x7f,%ebp 0.00 : 41ba66: 41 8d 5b ff lea -0x1(%r11),%ebx 0.00 : 41ba6a: 45 85 db test %r11d,%r11d 0.00 : 41ba6d: 0f 45 eb cmovne %ebx,%ebp 0.00 : 41ba70: 89 2d ca 1e 23 00 mov %ebp,0x231eca(%rip) # 64d940 0.00 : 41ba76: eb ae jmp 41ba26 0.00 : 41ba78: c7 05 7e 1d 23 00 28 movl $0x128,0x231d7e(%rip) # 64d800 0.00 : 41ba7f: 01 00 00 0.00 : 41ba82: bd 28 01 00 00 mov $0x128,%ebp 0.00 : 41ba87: e9 72 de ff ff jmpq 4198fe 0.00 : 41ba8c: c7 05 b2 8e 23 00 15 movl $0x15,0x238eb2(%rip) # 654948 0.00 : 41ba93: 00 00 00 0.00 : 41ba96: c7 05 60 1d 23 00 0b movl $0x10b,0x231d60(%rip) # 64d800 0.00 : 41ba9d: 01 00 00 0.00 : 41baa0: bd 0b 01 00 00 mov $0x10b,%ebp 0.00 : 41baa5: e9 54 de ff ff jmpq 4198fe 0.00 : 41baaa: c7 05 4c 1d 23 00 2e movl $0x2e,0x231d4c(%rip) # 64d800 0.00 : 41bab1: 00 00 00 0.00 : 41bab4: bd 2e 00 00 00 mov $0x2e,%ebp 0.00 : 41bab9: e9 40 de ff ff jmpq 4198fe 0.00 : 41babe: e8 4d b9 ff ff callq 417410 0.00 : 41bac3: 83 f8 3d cmp $0x3d,%eax 0.00 : 41bac6: 0f 84 5c 02 00 00 je 41bd28 0.00 : 41bacc: 83 f8 2b cmp $0x2b,%eax 0.00 : 41bacf: 90 nop 0.00 : 41bad0: 0f 85 f7 01 00 00 jne 41bccd 0.00 : 41bad6: c7 05 20 1d 23 00 27 movl $0x127,0x231d20(%rip) # 64d800 0.00 : 41badd: 01 00 00 0.00 : 41bae0: bd 27 01 00 00 mov $0x127,%ebp 0.00 : 41bae5: e9 14 de ff ff jmpq 4198fe 0.00 : 41baea: e8 21 b9 ff ff callq 417410 0.00 : 41baef: 83 f8 3d cmp $0x3d,%eax 0.00 : 41baf2: 74 6e je 41bb62 0.00 : 41baf4: 44 8b 1d 01 48 23 00 mov 0x234801(%rip),%r11d # 6502fc 0.00 : 41bafb: 45 85 db test %r11d,%r11d 0.00 : 41bafe: 75 05 jne 41bb05 0.00 : 41bb00: 83 f8 2a cmp $0x2a,%eax 0.00 : 41bb03: 74 7b je 41bb80 0.00 : 41bb05: 83 3d fc 8e 23 00 01 cmpl $0x1,0x238efc(%rip) # 654a08 0.00 : 41bb0c: 7f 34 jg 41bb42 0.00 : 41bb0e: 48 8b 05 53 1d 23 00 mov 0x231d53(%rip),%rax # 64d868 0.00 : 41bb15: 48 85 c0 test %rax,%rax 0.00 : 41bb18: 74 14 je 41bb2e 0.00 : 41bb1a: 48 3b 05 57 1d 23 00 cmp 0x231d57(%rip),%rax # 64d878 0.00 : 41bb21: 76 0b jbe 41bb2e 0.00 : 41bb23: 48 83 e8 01 sub $0x1,%rax 0.00 : 41bb27: 48 89 05 3a 1d 23 00 mov %rax,0x231d3a(%rip) # 64d868 0.00 : 41bb2e: c7 05 c8 1c 23 00 2a movl $0x2a,0x231cc8(%rip) # 64d800 0.00 : 41bb35: 00 00 00 0.00 : 41bb38: bd 2a 00 00 00 mov $0x2a,%ebp 0.00 : 41bb3d: e9 bc dd ff ff jmpq 4198fe 0.00 : 41bb42: 44 8b 25 f7 1d 23 00 mov 0x231df7(%rip),%r12d # 64d940 0.00 : 41bb49: bd 7f 00 00 00 mov $0x7f,%ebp 0.00 : 41bb4e: 45 8d 74 24 ff lea -0x1(%r12),%r14d 0.00 : 41bb53: 45 85 e4 test %r12d,%r12d 0.00 : 41bb56: 41 0f 45 ee cmovne %r14d,%ebp 0.00 : 41bb5a: 89 2d e0 1d 23 00 mov %ebp,0x231de0(%rip) # 64d940 0.00 : 41bb60: eb ac jmp 41bb0e 0.00 : 41bb62: c7 05 dc 8d 23 00 11 movl $0x11,0x238ddc(%rip) # 654948 0.00 : 41bb69: 00 00 00 0.00 : 41bb6c: c7 05 8a 1c 23 00 0b movl $0x10b,0x231c8a(%rip) # 64d800 0.00 : 41bb73: 01 00 00 0.00 : 41bb76: bd 0b 01 00 00 mov $0x10b,%ebp 0.00 : 41bb7b: e9 7e dd ff ff jmpq 4198fe 0.00 : 41bb80: e8 8b b8 ff ff callq 417410 0.00 : 41bb85: 83 f8 3d cmp $0x3d,%eax 0.00 : 41bb88: 0f 85 86 00 00 00 jne 41bc14 0.00 : 41bb8e: 8b 15 60 1c 23 00 mov 0x231c60(%rip),%edx # 64d7f4 0.00 : 41bb94: 85 d2 test %edx,%edx 0.00 : 41bb96: 75 68 jne 41bc00 0.00 : 41bb98: 8b 0d 62 47 23 00 mov 0x234762(%rip),%ecx # 650300 0.00 : 41bb9e: c7 05 4c 1c 23 00 01 movl $0x1,0x231c4c(%rip) # 64d7f4 0.00 : 41bba5: 00 00 00 0.00 : 41bba8: 85 c9 test %ecx,%ecx 0.00 : 41bbaa: 74 2f je 41bbdb 0.00 : 41bbac: be a3 07 00 00 mov $0x7a3,%esi 0.00 : 41bbb1: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41bbb6: e8 8d 57 ff ff callq 411348 0.00 : 41bbbb: 31 ff xor %edi,%edi 0.00 : 41bbbd: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41bbc2: be 38 c9 43 00 mov $0x43c938,%esi 0.00 : 41bbc7: 4c 8b 2d 02 1a 23 00 mov 0x231a02(%rip),%r13 # 64d5d0 0.00 : 41bbce: e8 4d b4 fe ff callq 407020 0.00 : 41bbd3: 48 89 c7 mov %rax,%rdi 0.00 : 41bbd6: 31 c0 xor %eax,%eax 0.00 : 41bbd8: 41 ff d5 callq *%r13 0.00 : 41bbdb: 8b 35 23 47 23 00 mov 0x234723(%rip),%esi # 650304 0.00 : 41bbe1: 85 f6 test %esi,%esi 0.00 : 41bbe3: 74 1b je 41bc00 0.00 : 41bbe5: 31 ff xor %edi,%edi 0.00 : 41bbe7: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41bbec: be 60 c9 43 00 mov $0x43c960,%esi 0.00 : 41bbf1: e8 2a b4 fe ff callq 407020 0.00 : 41bbf6: 48 89 c7 mov %rax,%rdi 0.00 : 41bbf9: 31 c0 xor %eax,%eax 0.00 : 41bbfb: e8 27 5a ff ff callq 411627 0.00 : 41bc00: c7 05 3e 8d 23 00 16 movl $0x16,0x238d3e(%rip) # 654948 0.00 : 41bc07: 00 00 00 0.00 : 41bc0a: bd 0b 01 00 00 mov $0x10b,%ebp 0.00 : 41bc0f: e9 ea dc ff ff jmpq 4198fe 0.00 : 41bc14: 83 3d ed 8d 23 00 01 cmpl $0x1,0x238ded(%rip) # 654a08 0.00 : 41bc1b: 7e 1f jle 41bc3c 0.00 : 41bc1d: 44 8b 05 1c 1d 23 00 mov 0x231d1c(%rip),%r8d # 64d940 0.00 : 41bc24: 41 bf 7f 00 00 00 mov $0x7f,%r15d 0.00 : 41bc2a: 41 8d 78 ff lea -0x1(%r8),%edi 0.00 : 41bc2e: 45 85 c0 test %r8d,%r8d 0.00 : 41bc31: 44 0f 45 ff cmovne %edi,%r15d 0.00 : 41bc35: 44 89 3d 04 1d 23 00 mov %r15d,0x231d04(%rip) # 64d940 0.00 : 41bc3c: 48 8b 05 25 1c 23 00 mov 0x231c25(%rip),%rax # 64d868 0.00 : 41bc43: 48 85 c0 test %rax,%rax 0.00 : 41bc46: 74 14 je 41bc5c 0.00 : 41bc48: 48 3b 05 29 1c 23 00 cmp 0x231c29(%rip),%rax # 64d878 0.00 : 41bc4f: 76 0b jbe 41bc5c 0.00 : 41bc51: 48 83 e8 01 sub $0x1,%rax 0.00 : 41bc55: 48 89 05 0c 1c 23 00 mov %rax,0x231c0c(%rip) # 64d868 0.00 : 41bc5c: 44 8b 0d 95 1b 23 00 mov 0x231b95(%rip),%r9d # 64d7f8 0.00 : 41bc63: 45 85 c9 test %r9d,%r9d 0.00 : 41bc66: 0f 85 1f fb ff ff jne 41b78b 0.00 : 41bc6c: 8b 05 8e 46 23 00 mov 0x23468e(%rip),%eax # 650300 0.00 : 41bc72: c7 05 7c 1b 23 00 01 movl $0x1,0x231b7c(%rip) # 64d7f8 0.00 : 41bc79: 00 00 00 0.00 : 41bc7c: 85 c0 test %eax,%eax 0.00 : 41bc7e: 74 2e je 41bcae 0.00 : 41bc80: be ae 07 00 00 mov $0x7ae,%esi 0.00 : 41bc85: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41bc8a: e8 b9 56 ff ff callq 411348 0.00 : 41bc8f: 31 ff xor %edi,%edi 0.00 : 41bc91: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41bc96: be 88 c9 43 00 mov $0x43c988,%esi 0.00 : 41bc9b: 48 8b 1d 2e 19 23 00 mov 0x23192e(%rip),%rbx # 64d5d0 0.00 : 41bca2: e8 79 b3 fe ff callq 407020 0.00 : 41bca7: 48 89 c7 mov %rax,%rdi 0.00 : 41bcaa: 31 c0 xor %eax,%eax 0.00 : 41bcac: ff d3 callq *%rbx 0.00 : 41bcae: 44 8b 15 4f 46 23 00 mov 0x23464f(%rip),%r10d # 650304 0.00 : 41bcb5: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41bcba: be b0 c9 43 00 mov $0x43c9b0,%esi 0.00 : 41bcbf: 45 85 d2 test %r10d,%r10d 0.00 : 41bcc2: 0f 85 87 fb ff ff jne 41b84f 0.00 : 41bcc8: e9 be fa ff ff jmpq 41b78b 0.00 : 41bccd: 83 3d 34 8d 23 00 01 cmpl $0x1,0x238d34(%rip) # 654a08 0.00 : 41bcd4: 7f 34 jg 41bd0a 0.00 : 41bcd6: 48 8b 05 8b 1b 23 00 mov 0x231b8b(%rip),%rax # 64d868 0.00 : 41bcdd: 48 85 c0 test %rax,%rax 0.00 : 41bce0: 74 14 je 41bcf6 0.00 : 41bce2: 48 3b 05 8f 1b 23 00 cmp 0x231b8f(%rip),%rax # 64d878 0.00 : 41bce9: 76 0b jbe 41bcf6 0.00 : 41bceb: 48 83 e8 01 sub $0x1,%rax 0.00 : 41bcef: 48 89 05 72 1b 23 00 mov %rax,0x231b72(%rip) # 64d868 0.00 : 41bcf6: c7 05 00 1b 23 00 2b movl $0x2b,0x231b00(%rip) # 64d800 0.00 : 41bcfd: 00 00 00 0.00 : 41bd00: bd 2b 00 00 00 mov $0x2b,%ebp 0.00 : 41bd05: e9 f4 db ff ff jmpq 4198fe 0.00 : 41bd0a: 44 8b 2d 2f 1c 23 00 mov 0x231c2f(%rip),%r13d # 64d940 0.00 : 41bd11: ba 7f 00 00 00 mov $0x7f,%edx 0.00 : 41bd16: 41 8d 4d ff lea -0x1(%r13),%ecx 0.00 : 41bd1a: 45 85 ed test %r13d,%r13d 0.00 : 41bd1d: 0f 45 d1 cmovne %ecx,%edx 0.00 : 41bd20: 89 15 1a 1c 23 00 mov %edx,0x231c1a(%rip) # 64d940 0.00 : 41bd26: eb ae jmp 41bcd6 0.00 : 41bd28: c7 05 16 8c 23 00 14 movl $0x14,0x238c16(%rip) # 654948 0.00 : 41bd2f: 00 00 00 0.00 : 41bd32: c7 05 c4 1a 23 00 0b movl $0x10b,0x231ac4(%rip) # 64d800 0.00 : 41bd39: 01 00 00 0.00 : 41bd3c: bd 0b 01 00 00 mov $0x10b,%ebp 0.00 : 41bd41: e9 b8 db ff ff jmpq 4198fe 0.00 : 41bd46: e8 c5 b6 ff ff callq 417410 0.00 : 41bd4b: 83 f8 26 cmp $0x26,%eax 0.00 : 41bd4e: 0f 85 a5 00 00 00 jne 41bdf9 0.00 : 41bd54: c7 05 ea 8b 23 00 18 movl $0x18,0x238bea(%rip) # 654948 0.00 : 41bd5b: 00 00 00 0.00 : 41bd5e: bd 25 01 00 00 mov $0x125,%ebp 0.00 : 41bd63: e8 2e cd fe ff callq 408a96 0.00 : 41bd68: c7 05 8e 1a 23 00 25 movl $0x125,0x231a8e(%rip) # 64d800 0.00 : 41bd6f: 01 00 00 0.00 : 41bd72: e9 87 db ff ff jmpq 4198fe 0.00 : 41bd77: e8 94 b6 ff ff callq 417410 0.00 : 41bd7c: 83 f8 3d cmp $0x3d,%eax 0.00 : 41bd7f: 74 5a je 41bddb 0.00 : 41bd81: 83 3d 80 8c 23 00 01 cmpl $0x1,0x238c80(%rip) # 654a08 0.00 : 41bd88: 7e 1d jle 41bda7 0.00 : 41bd8a: 44 8b 0d af 1b 23 00 mov 0x231baf(%rip),%r9d # 64d940 0.00 : 41bd91: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 41bd96: 45 8d 41 ff lea -0x1(%r9),%r8d 0.00 : 41bd9a: 45 85 c9 test %r9d,%r9d 0.00 : 41bd9d: 41 0f 45 f8 cmovne %r8d,%edi 0.00 : 41bda1: 89 3d 99 1b 23 00 mov %edi,0x231b99(%rip) # 64d940 0.00 : 41bda7: 48 8b 05 ba 1a 23 00 mov 0x231aba(%rip),%rax # 64d868 0.00 : 41bdae: 48 85 c0 test %rax,%rax 0.00 : 41bdb1: 74 14 je 41bdc7 0.00 : 41bdb3: 48 3b 05 be 1a 23 00 cmp 0x231abe(%rip),%rax # 64d878 0.00 : 41bdba: 76 0b jbe 41bdc7 0.00 : 41bdbc: 48 83 e8 01 sub $0x1,%rax 0.00 : 41bdc0: 48 89 05 a1 1a 23 00 mov %rax,0x231aa1(%rip) # 64d868 0.00 : 41bdc7: c7 05 2f 1a 23 00 25 movl $0x25,0x231a2f(%rip) # 64d800 0.00 : 41bdce: 00 00 00 0.00 : 41bdd1: bd 25 00 00 00 mov $0x25,%ebp 0.00 : 41bdd6: e9 23 db ff ff jmpq 4198fe 0.00 : 41bddb: c7 05 63 8b 23 00 13 movl $0x13,0x238b63(%rip) # 654948 0.00 : 41bde2: 00 00 00 0.00 : 41bde5: c7 05 11 1a 23 00 0b movl $0x10b,0x231a11(%rip) # 64d800 0.00 : 41bdec: 01 00 00 0.00 : 41bdef: bd 0b 01 00 00 mov $0x10b,%ebp 0.00 : 41bdf4: e9 05 db ff ff jmpq 4198fe 0.00 : 41bdf9: 83 3d 08 8c 23 00 01 cmpl $0x1,0x238c08(%rip) # 654a08 0.00 : 41be00: 7e 1f jle 41be21 0.00 : 41be02: 44 8b 15 37 1b 23 00 mov 0x231b37(%rip),%r10d # 64d940 0.00 : 41be09: 41 b8 7f 00 00 00 mov $0x7f,%r8d 0.00 : 41be0f: 45 8d 4a ff lea -0x1(%r10),%r9d 0.00 : 41be13: 45 85 d2 test %r10d,%r10d 0.00 : 41be16: 45 0f 45 c1 cmovne %r9d,%r8d 0.00 : 41be1a: 44 89 05 1f 1b 23 00 mov %r8d,0x231b1f(%rip) # 64d940 0.00 : 41be21: 48 8b 05 40 1a 23 00 mov 0x231a40(%rip),%rax # 64d868 0.00 : 41be28: 48 85 c0 test %rax,%rax 0.00 : 41be2b: 74 14 je 41be41 0.00 : 41be2d: 48 3b 05 44 1a 23 00 cmp 0x231a44(%rip),%rax # 64d878 0.00 : 41be34: 76 0b jbe 41be41 0.00 : 41be36: 48 83 e8 01 sub $0x1,%rax 0.00 : 41be3a: 48 89 05 27 1a 23 00 mov %rax,0x231a27(%rip) # 64d868 0.00 : 41be41: c7 05 b5 19 23 00 26 movl $0x26,0x2319b5(%rip) # 64d800 0.00 : 41be48: 00 00 00 0.00 : 41be4b: bd 26 00 00 00 mov $0x26,%ebp 0.00 : 41be50: e9 a9 da ff ff jmpq 4198fe 0.00 : 41be55: e8 b6 b5 ff ff callq 417410 0.00 : 41be5a: 83 f8 3d cmp $0x3d,%eax 0.00 : 41be5d: 75 1e jne 41be7d 0.00 : 41be5f: c7 05 df 8a 23 00 1b movl $0x1b,0x238adf(%rip) # 654948 0.00 : 41be66: 00 00 00 0.00 : 41be69: c7 05 8d 19 23 00 08 movl $0x108,0x23198d(%rip) # 64d800 0.00 : 41be70: 01 00 00 0.00 : 41be73: bd 08 01 00 00 mov $0x108,%ebp 0.00 : 41be78: e9 81 da ff ff jmpq 4198fe 0.00 : 41be7d: 83 f8 7e cmp $0x7e,%eax 0.00 : 41be80: 0f 85 f2 00 00 00 jne 41bf78 0.00 : 41be86: c7 05 b8 8a 23 00 21 movl $0x21,0x238ab8(%rip) # 654948 0.00 : 41be8d: 00 00 00 0.00 : 41be90: c7 05 66 19 23 00 0d movl $0x10d,0x231966(%rip) # 64d800 0.00 : 41be97: 01 00 00 0.00 : 41be9a: bd 0d 01 00 00 mov $0x10d,%ebp 0.00 : 41be9f: e9 5a da ff ff jmpq 4198fe 0.00 : 41bea4: e8 b7 ad ff ff callq 416c60 0.00 : 41bea9: 48 85 c0 test %rax,%rax 0.00 : 41beac: 0f 84 04 ed ff ff je 41abb6 0.00 : 41beb2: 48 8b 05 af 19 23 00 mov 0x2319af(%rip),%rax # 64d868 0.00 : 41beb9: e9 de d9 ff ff jmpq 41989c 0.00 : 41bebe: 8b 15 3c 44 23 00 mov 0x23443c(%rip),%edx # 650300 0.00 : 41bec4: 85 d2 test %edx,%edx 0.00 : 41bec6: 0f 84 6d d8 ff ff je 419739 0.00 : 41becc: 66 83 3d 28 19 23 00 cmpw $0x0,0x231928(%rip) # 64d7fc 0.00 : 41bed3: 00 0.00 : 41bed4: 0f 85 5f d8 ff ff jne 419739 0.00 : 41beda: be 1a 09 00 00 mov $0x91a,%esi 0.00 : 41bedf: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41bee4: e8 5f 54 ff ff callq 411348 0.00 : 41bee9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41beee: be 48 c8 43 00 mov $0x43c848,%esi 0.00 : 41bef3: 31 ff xor %edi,%edi 0.00 : 41bef5: 4c 8b 3d d4 16 23 00 mov 0x2316d4(%rip),%r15 # 64d5d0 0.00 : 41befc: e8 1f b1 fe ff callq 407020 0.00 : 41bf01: 48 89 c7 mov %rax,%rdi 0.00 : 41bf04: 31 c0 xor %eax,%eax 0.00 : 41bf06: 41 ff d7 callq *%r15 0.00 : 41bf09: 66 c7 05 ea 18 23 00 movw $0x1,0x2318ea(%rip) # 64d7fc 0.00 : 41bf10: 01 00 0.00 : 41bf12: e9 22 d8 ff ff jmpq 419739 0.00 : 41bf17: be 15 09 00 00 mov $0x915,%esi 0.00 : 41bf1c: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41bf21: e8 22 54 ff ff callq 411348 0.00 : 41bf26: e8 c5 b0 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41bf2b: 8b 38 mov (%rax),%edi 0.00 : 41bf2d: e8 8e af fe ff callq 406ec0 0.00 : 41bf32: 48 8b 2d 6f 18 23 00 mov 0x23186f(%rip),%rbp # 64d7a8 0.00 : 41bf39: 48 2b 2d 70 18 23 00 sub 0x231870(%rip),%rbp # 64d7b0 0.00 : 41bf40: 48 89 c3 mov %rax,%rbx 0.00 : 41bf43: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41bf48: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41bf4d: 31 ff xor %edi,%edi 0.00 : 41bf4f: e8 cc b0 fe ff callq 407020 0.00 : 41bf54: 49 89 d8 mov %rbx,%r8 0.00 : 41bf57: 48 89 c7 mov %rax,%rdi 0.00 : 41bf5a: ba 3e c2 43 00 mov $0x43c23e,%edx 0.00 : 41bf5f: 48 89 e9 mov %rbp,%rcx 0.00 : 41bf62: be 45 c2 43 00 mov $0x43c245,%esi 0.00 : 41bf67: 31 c0 xor %eax,%eax 0.00 : 41bf69: e8 5c 55 ff ff callq 4114ca 0.00 : 41bf6e: e8 ad 9f ff ff callq 415f20 0.00 : 41bf73: e9 fa d8 ff ff jmpq 419872 0.00 : 41bf78: 83 3d 89 8a 23 00 01 cmpl $0x1,0x238a89(%rip) # 654a08 0.00 : 41bf7f: 90 nop 0.00 : 41bf80: 7e 1b jle 41bf9d 0.00 : 41bf82: 8b 3d b8 19 23 00 mov 0x2319b8(%rip),%edi # 64d940 0.00 : 41bf88: be 7f 00 00 00 mov $0x7f,%esi 0.00 : 41bf8d: 44 8d 7f ff lea -0x1(%rdi),%r15d 0.00 : 41bf91: 85 ff test %edi,%edi 0.00 : 41bf93: 41 0f 45 f7 cmovne %r15d,%esi 0.00 : 41bf97: 89 35 a3 19 23 00 mov %esi,0x2319a3(%rip) # 64d940 0.00 : 41bf9d: 48 8b 05 c4 18 23 00 mov 0x2318c4(%rip),%rax # 64d868 0.00 : 41bfa4: 48 85 c0 test %rax,%rax 0.00 : 41bfa7: 74 14 je 41bfbd 0.00 : 41bfa9: 48 3b 05 c8 18 23 00 cmp 0x2318c8(%rip),%rax # 64d878 0.00 : 41bfb0: 76 0b jbe 41bfbd 0.00 : 41bfb2: 48 83 e8 01 sub $0x1,%rax 0.00 : 41bfb6: 48 89 05 ab 18 23 00 mov %rax,0x2318ab(%rip) # 64d868 0.00 : 41bfbd: c7 05 39 18 23 00 21 movl $0x21,0x231839(%rip) # 64d800 0.00 : 41bfc4: 00 00 00 0.00 : 41bfc7: bd 21 00 00 00 mov $0x21,%ebp 0.00 : 41bfcc: e9 2d d9 ff ff jmpq 4198fe 0.00 : 41bfd1: e8 4a 9f ff ff callq 415f20 0.00 : 41bfd6: e9 ec d6 ff ff jmpq 4196c7 0.00 : 41bfdb: 83 3d 1e 18 23 00 24 cmpl $0x24,0x23181e(%rip) # 64d800 0.00 : 41bfe2: 0f 84 d1 00 00 00 je 41c0b9 0.00 : 41bfe8: e8 23 b4 ff ff callq 417410 0.00 : 41bfed: 83 f8 22 cmp $0x22,%eax 0.00 : 41bff0: 74 5f je 41c051 0.00 : 41bff2: 83 3d 0f 8a 23 00 01 cmpl $0x1,0x238a0f(%rip) # 654a08 0.00 : 41bff9: 7e 1d jle 41c018 0.00 : 41bffb: 44 8b 0d 3e 19 23 00 mov 0x23193e(%rip),%r9d # 64d940 0.00 : 41c002: bb 7f 00 00 00 mov $0x7f,%ebx 0.00 : 41c007: 45 8d 41 ff lea -0x1(%r9),%r8d 0.00 : 41c00b: 45 85 c9 test %r9d,%r9d 0.00 : 41c00e: 41 0f 45 d8 cmovne %r8d,%ebx 0.00 : 41c012: 89 1d 28 19 23 00 mov %ebx,0x231928(%rip) # 64d940 0.00 : 41c018: 48 8b 05 49 18 23 00 mov 0x231849(%rip),%rax # 64d868 0.00 : 41c01f: 48 85 c0 test %rax,%rax 0.00 : 41c022: 0f 84 8a 00 00 00 je 41c0b2 0.00 : 41c028: 48 3b 05 49 18 23 00 cmp 0x231849(%rip),%rax # 64d878 0.00 : 41c02f: 0f 86 7d 00 00 00 jbe 41c0b2 0.00 : 41c035: 48 83 e8 01 sub $0x1,%rax 0.00 : 41c039: bb 5f 00 00 00 mov $0x5f,%ebx 0.00 : 41c03e: 4c 8b 25 6b 17 23 00 mov 0x23176b(%rip),%r12 # 64d7b0 0.00 : 41c045: 48 89 05 1c 18 23 00 mov %rax,0x23181c(%rip) # 64d868 0.00 : 41c04c: e9 20 d6 ff ff jmpq 419671 0.00 : 41c051: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 41c057: 48 8b 15 0a 18 23 00 mov 0x23180a(%rip),%rdx # 64d868 0.00 : 41c05e: e9 60 da ff ff jmpq 419ac3 0.00 : 41c063: e8 f8 ab ff ff callq 416c60 0.00 : 41c068: 48 85 c0 test %rax,%rax 0.00 : 41c06b: 0f 85 06 e1 ff ff jne 41a177 0.00 : 41c071: e9 ad ee ff ff jmpq 41af23 0.00 : 41c076: 66 90 xchg %ax,%ax 0.00 : 41c078: e8 e3 ab ff ff callq 416c60 0.00 : 41c07d: 48 85 c0 test %rax,%rax 0.00 : 41c080: 0f 85 e9 de ff ff jne 419f6f 0.00 : 41c086: e9 b8 eb ff ff jmpq 41ac43 0.00 : 41c08b: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c090: be 98 ca 43 00 mov $0x43ca98,%esi 0.00 : 41c095: 31 ff xor %edi,%edi 0.00 : 41c097: e8 84 af fe ff callq 407020 0.00 : 41c09c: 89 ee mov %ebp,%esi 0.00 : 41c09e: 48 89 c7 mov %rax,%rdi 0.00 : 41c0a1: 31 c0 xor %eax,%eax 0.00 : 41c0a3: e8 e8 a0 ff ff callq 416190 0.00 : 41c0a8: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41c0ad: e8 5e aa fe ff callq 406b10 0.00 : 41c0b2: 4c 8b 25 f7 16 23 00 mov 0x2316f7(%rip),%r12 # 64d7b0 0.00 : 41c0b9: bb 5f 00 00 00 mov $0x5f,%ebx 0.00 : 41c0be: e9 ae d5 ff ff jmpq 419671 0.00 : 41c0c3: 31 c0 xor %eax,%eax 0.00 : 41c0c5: e9 33 d5 ff ff jmpq 4195fd 0.00 : 41c0ca: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : 41c0d1: 00 0.00 : 41c0d2: 49 8b 2c 24 mov (%r12),%rbp 0.00 : 41c0d6: 83 7d 38 50 cmpl $0x50,0x38(%rbp) 0.00 : 41c0da: 0f 85 05 d4 ff ff jne 4194e5 0.00 : 41c0e0: be 44 03 00 00 mov $0x344,%esi 0.00 : 41c0e5: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c0ea: e8 59 52 ff ff callq 411348 0.00 : 41c0ef: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c0f4: be e0 cf 43 00 mov $0x43cfe0,%esi 0.00 : 41c0f9: 31 ff xor %edi,%edi 0.00 : 41c0fb: 4c 8b 35 ce 14 23 00 mov 0x2314ce(%rip),%r14 # 64d5d0 0.00 : 41c102: e8 19 af fe ff callq 407020 0.00 : 41c107: 48 89 c7 mov %rax,%rdi 0.00 : 41c10a: 31 c0 xor %eax,%eax 0.00 : 41c10c: 41 ff d6 callq *%r14 0.00 : 41c10f: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 41c116: 00 0.00 : 41c117: 49 8b 6d 00 mov 0x0(%r13),%rbp 0.00 : 41c11b: e9 c5 d3 ff ff jmpq 4194e5 0.00 : 41c120: 8b 05 b2 16 23 00 mov 0x2316b2(%rip),%eax # 64d7d8 0.00 : 41c126: 83 c0 01 add $0x1,%eax 0.00 : 41c129: 83 f8 02 cmp $0x2,%eax 0.00 : 41c12c: 89 05 a6 16 23 00 mov %eax,0x2316a6(%rip) # 64d7d8 0.00 : 41c132: 0f 85 63 d3 ff ff jne 41949b 0.00 : 41c138: 31 ff xor %edi,%edi 0.00 : 41c13a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c13f: be 38 cc 43 00 mov $0x43cc38,%esi 0.00 : 41c144: e8 d7 ae fe ff callq 407020 0.00 : 41c149: 48 89 c7 mov %rax,%rdi 0.00 : 41c14c: 31 c0 xor %eax,%eax 0.00 : 41c14e: e8 d4 54 ff ff callq 411627 0.00 : 41c153: e9 43 d3 ff ff jmpq 41949b 0.00 : 41c158: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 41c15d: 4c 8b 1b mov (%rbx),%r11 0.00 : 41c160: 41 83 7b 38 50 cmpl $0x50,0x38(%r11) 0.00 : 41c165: 74 3b je 41c1a2 0.00 : 41c167: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 41c16b: 48 85 db test %rbx,%rbx 0.00 : 41c16e: 0f 84 07 d3 ff ff je 41947b 0.00 : 41c174: 83 c5 01 add $0x1,%ebp 0.00 : 41c177: eb e4 jmp 41c15d 0.00 : 41c179: 8b 35 81 41 23 00 mov 0x234181(%rip),%esi # 650300 0.00 : 41c17f: 85 f6 test %esi,%esi 0.00 : 41c181: 75 3e jne 41c1c1 0.00 : 41c183: 4d 8b 6d 10 mov 0x10(%r13),%r13 0.00 : 41c187: 4d 85 ed test %r13,%r13 0.00 : 41c18a: 75 ed jne 41c179 0.00 : 41c18c: 48 83 c5 08 add $0x8,%rbp 0.00 : 41c190: 48 81 fd 48 f9 64 00 cmp $0x64f948,%rbp 0.00 : 41c197: 0f 85 4c cf ff ff jne 4190e9 0.00 : 41c19d: e9 d5 d0 ff ff jmpq 419277 0.00 : 41c1a2: 31 ff xor %edi,%edi 0.00 : 41c1a4: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c1a9: be f8 d0 43 00 mov $0x43d0f8,%esi 0.00 : 41c1ae: e8 6d ae fe ff callq 407020 0.00 : 41c1b3: 89 ee mov %ebp,%esi 0.00 : 41c1b5: 48 89 c7 mov %rax,%rdi 0.00 : 41c1b8: 31 c0 xor %eax,%eax 0.00 : 41c1ba: e8 68 54 ff ff callq 411627 0.00 : 41c1bf: eb a6 jmp 41c167 0.00 : 41c1c1: 66 41 83 7d 0a 00 cmpw $0x0,0xa(%r13) 0.00 : 41c1c7: 0f 84 b2 00 00 00 je 41c27f 0.00 : 41c1cd: 66 41 83 7d 08 00 cmpw $0x0,0x8(%r13) 0.00 : 41c1d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41c1d8: 75 a9 jne 41c183 0.00 : 41c1da: be 66 0c 00 00 mov $0xc66,%esi 0.00 : 41c1df: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c1e4: e8 5f 51 ff ff callq 411348 0.00 : 41c1e9: 4d 8b 65 00 mov 0x0(%r13),%r12 0.00 : 41c1ed: 31 ff xor %edi,%edi 0.00 : 41c1ef: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c1f4: be 08 cb 43 00 mov $0x43cb08,%esi 0.00 : 41c1f9: 48 8b 1d d0 13 23 00 mov 0x2313d0(%rip),%rbx # 64d5d0 0.00 : 41c200: e8 1b ae fe ff callq 407020 0.00 : 41c205: 4c 89 e6 mov %r12,%rsi 0.00 : 41c208: 48 89 c7 mov %rax,%rdi 0.00 : 41c20b: 31 c0 xor %eax,%eax 0.00 : 41c20d: ff d3 callq *%rbx 0.00 : 41c20f: e9 6f ff ff ff jmpq 41c183 0.00 : 41c214: 83 fa 2a cmp $0x2a,%edx 0.00 : 41c217: 0f 84 62 e4 ff ff je 41a67f 0.00 : 41c21d: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c222: be 21 c3 43 00 mov $0x43c321,%esi 0.00 : 41c227: 31 ff xor %edi,%edi 0.00 : 41c229: e8 f2 ad fe ff callq 407020 0.00 : 41c22e: 48 89 c7 mov %rax,%rdi 0.00 : 41c231: 31 c0 xor %eax,%eax 0.00 : 41c233: e8 58 9f ff ff callq 416190 0.00 : 41c238: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41c23f: 00 0.00 : 41c240: 48 8b 3b mov (%rbx),%rdi 0.00 : 41c243: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41c248: be 01 00 00 00 mov $0x1,%esi 0.00 : 41c24d: 4d 8b 73 f8 mov -0x8(%r11),%r14 0.00 : 41c251: e8 ba c1 ff ff callq 418410 0.00 : 41c256: bf 07 00 00 00 mov $0x7,%edi 0.00 : 41c25b: 48 89 c5 mov %rax,%rbp 0.00 : 41c25e: e8 5d a9 ff ff callq 416bc0 0.00 : 41c263: 48 89 28 mov %rbp,(%rax) 0.00 : 41c266: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41c26a: 49 89 c7 mov %rax,%r15 0.00 : 41c26d: e9 0e c7 ff ff jmpq 418980 0.00 : 41c272: e8 89 88 01 00 callq 434b00 0.00 : 41c277: 48 89 c3 mov %rax,%rbx 0.00 : 41c27a: e9 92 cd ff ff jmpq 419011 0.00 : 41c27f: be 62 0c 00 00 mov $0xc62,%esi 0.00 : 41c284: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c289: e8 ba 50 ff ff callq 411348 0.00 : 41c28e: 4d 8b 65 00 mov 0x0(%r13),%r12 0.00 : 41c292: 31 ff xor %edi,%edi 0.00 : 41c294: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c299: be e0 ca 43 00 mov $0x43cae0,%esi 0.00 : 41c29e: 48 8b 1d 2b 13 23 00 mov 0x23132b(%rip),%rbx # 64d5d0 0.00 : 41c2a5: e8 76 ad fe ff callq 407020 0.00 : 41c2aa: 4c 89 e6 mov %r12,%rsi 0.00 : 41c2ad: 48 89 c7 mov %rax,%rdi 0.00 : 41c2b0: 31 c0 xor %eax,%eax 0.00 : 41c2b2: ff d3 callq *%rbx 0.00 : 41c2b4: 8b 3d 46 40 23 00 mov 0x234046(%rip),%edi # 650300 0.00 : 41c2ba: 85 ff test %edi,%edi 0.00 : 41c2bc: 0f 85 0b ff ff ff jne 41c1cd 0.00 : 41c2c2: e9 bc fe ff ff jmpq 41c183 0.00 : 41c2c7: 48 85 c0 test %rax,%rax 0.00 : 41c2ca: 74 53 je 41c31f 0.00 : 41c2cc: 80 3b 2a cmpb $0x2a,(%rbx) 0.00 : 41c2cf: 90 nop 0.00 : 41c2d0: 0f 85 21 cd ff ff jne 418ff7 0.00 : 41c2d6: 80 7c 03 ff 2a cmpb $0x2a,-0x1(%rbx,%rax,1) 0.00 : 41c2db: 0f 85 16 cd ff ff jne 418ff7 0.00 : 41c2e1: be 4e 01 00 00 mov $0x14e,%esi 0.00 : 41c2e6: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c2eb: e8 58 50 ff ff callq 411348 0.00 : 41c2f0: 4c 8b 35 b9 14 23 00 mov 0x2314b9(%rip),%r14 # 64d7b0 0.00 : 41c2f7: 31 ff xor %edi,%edi 0.00 : 41c2f9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c2fe: be 30 cd 43 00 mov $0x43cd30,%esi 0.00 : 41c303: 4c 8b 2d c6 12 23 00 mov 0x2312c6(%rip),%r13 # 64d5d0 0.00 : 41c30a: e8 11 ad fe ff callq 407020 0.00 : 41c30f: 4c 89 f6 mov %r14,%rsi 0.00 : 41c312: 48 89 c7 mov %rax,%rdi 0.00 : 41c315: 31 c0 xor %eax,%eax 0.00 : 41c317: 41 ff d5 callq *%r13 0.00 : 41c31a: e9 d8 cc ff ff jmpq 418ff7 0.00 : 41c31f: be 4b 01 00 00 mov $0x14b,%esi 0.00 : 41c324: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c329: e8 1a 50 ff ff callq 411348 0.00 : 41c32e: 31 ff xor %edi,%edi 0.00 : 41c330: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c335: be f0 cc 43 00 mov $0x43ccf0,%esi 0.00 : 41c33a: 4c 8b 25 8f 12 23 00 mov 0x23128f(%rip),%r12 # 64d5d0 0.00 : 41c341: e8 da ac fe ff callq 407020 0.00 : 41c346: 48 89 c7 mov %rax,%rdi 0.00 : 41c349: 31 c0 xor %eax,%eax 0.00 : 41c34b: 41 ff d4 callq *%r12 0.00 : 41c34e: e9 a4 cc ff ff jmpq 418ff7 0.00 : 41c353: 44 8b 05 fe 3f 23 00 mov 0x233ffe(%rip),%r8d # 650358 0.00 : 41c35a: 41 83 e8 01 sub $0x1,%r8d 0.00 : 41c35e: 66 44 89 42 20 mov %r8w,0x20(%rdx) 0.00 : 41c363: e9 9b ca ff ff jmpq 418e03 0.00 : 41c368: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 41c36d: e8 4e a8 ff ff callq 416bc0 0.00 : 41c372: 4c 89 38 mov %r15,(%rax) 0.00 : 41c375: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41c37c: 00 0.00 : 41c37d: 49 89 c7 mov %rax,%r15 0.00 : 41c380: e9 fb c5 ff ff jmpq 418980 0.00 : 41c385: e8 76 87 01 00 callq 434b00 0.00 : 41c38a: 48 89 c2 mov %rax,%rdx 0.00 : 41c38d: e9 40 ca ff ff jmpq 418dd2 0.00 : 41c392: 48 8b 00 mov (%rax),%rax 0.00 : 41c395: 83 78 38 49 cmpl $0x49,0x38(%rax) 0.00 : 41c399: 0f 85 0e ca ff ff jne 418dad 0.00 : 41c39f: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 41c3a3: 66 0f 2e 00 ucomisd (%rax),%xmm0 0.00 : 41c3a7: 0f 85 00 ca ff ff jne 418dad 0.00 : 41c3ad: 0f 1f 00 nopl (%rax) 0.00 : 41c3b0: 0f 8a f7 c9 ff ff jp 418dad 0.00 : 41c3b6: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41c3bd: 00 0.00 : 41c3be: bf 35 00 00 00 mov $0x35,%edi 0.00 : 41c3c3: 4d 8b 2b mov (%r11),%r13 0.00 : 41c3c6: e8 f5 a7 ff ff callq 416bc0 0.00 : 41c3cb: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 41c3d2: 49 89 c7 mov %rax,%r15 0.00 : 41c3d5: 4c 89 68 08 mov %r13,0x8(%rax) 0.00 : 41c3d9: 44 8b 15 20 3f 23 00 mov 0x233f20(%rip),%r10d # 650300 0.00 : 41c3e0: 45 85 d2 test %r10d,%r10d 0.00 : 41c3e3: 0f 84 97 c5 ff ff je 418980 0.00 : 41c3e9: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 41c3ee: 0f 85 8c c5 ff ff jne 418980 0.00 : 41c3f4: 8b 0d c2 13 23 00 mov 0x2313c2(%rip),%ecx # 64d7bc 0.00 : 41c3fa: 85 c9 test %ecx,%ecx 0.00 : 41c3fc: 0f 84 7e c5 ff ff je 418980 0.00 : 41c402: 66 83 3d c6 13 23 00 cmpw $0x0,0x2313c6(%rip) # 64d7d0 0.00 : 41c409: 00 0.00 : 41c40a: 0f 85 70 c5 ff ff jne 418980 0.00 : 41c410: be 15 02 00 00 mov $0x215,%esi 0.00 : 41c415: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c41a: 66 c7 05 ad 13 23 00 movw $0x1,0x2313ad(%rip) # 64d7d0 0.00 : 41c421: 01 00 0.00 : 41c423: e8 20 4f ff ff callq 411348 0.00 : 41c428: 31 ff xor %edi,%edi 0.00 : 41c42a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c42f: be 08 ce 43 00 mov $0x43ce08,%esi 0.00 : 41c434: 4c 8b 35 95 11 23 00 mov 0x231195(%rip),%r14 # 64d5d0 0.00 : 41c43b: e8 e0 ab fe ff callq 407020 0.00 : 41c440: 48 89 c7 mov %rax,%rdi 0.00 : 41c443: 31 c0 xor %eax,%eax 0.00 : 41c445: 41 ff d6 callq *%r14 0.00 : 41c448: e9 33 c5 ff ff jmpq 418980 0.00 : 41c44d: 0f 1f 00 nopl (%rax) 0.00 : 41c450: e8 ab 86 01 00 callq 434b00 0.00 : 41c455: 48 89 c2 mov %rax,%rdx 0.00 : 41c458: e9 9f c8 ff ff jmpq 418cfc 0.00 : 41c45d: 44 8b 35 f4 3e 23 00 mov 0x233ef4(%rip),%r14d # 650358 0.00 : 41c464: 41 83 ee 01 sub $0x1,%r14d 0.00 : 41c468: 66 44 89 72 20 mov %r14w,0x20(%rdx) 0.00 : 41c46d: e9 bf c8 ff ff jmpq 418d31 0.00 : 41c472: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41c479: 00 0.00 : 41c47a: 48 8b 1a mov (%rdx),%rbx 0.00 : 41c47d: 83 7b 38 50 cmpl $0x50,0x38(%rbx) 0.00 : 41c481: 0f 85 2a c8 ff ff jne 418cb1 0.00 : 41c487: be 2e 03 00 00 mov $0x32e,%esi 0.00 : 41c48c: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c491: e8 b2 4e ff ff callq 411348 0.00 : 41c496: be 38 cf 43 00 mov $0x43cf38,%esi 0.00 : 41c49b: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c4a0: 31 ff xor %edi,%edi 0.00 : 41c4a2: 4c 8b 25 27 11 23 00 mov 0x231127(%rip),%r12 # 64d5d0 0.00 : 41c4a9: e8 72 ab fe ff callq 407020 0.00 : 41c4ae: 48 89 c7 mov %rax,%rdi 0.00 : 41c4b1: 31 c0 xor %eax,%eax 0.00 : 41c4b3: 41 ff d4 callq *%r12 0.00 : 41c4b6: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41c4bd: 00 0.00 : 41c4be: 48 8b 1e mov (%rsi),%rbx 0.00 : 41c4c1: e9 eb c7 ff ff jmpq 418cb1 0.00 : 41c4c6: 48 89 f2 mov %rsi,%rdx 0.00 : 41c4c9: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 41c4cd: 48 85 f6 test %rsi,%rsi 0.00 : 41c4d0: 0f 84 a6 c7 ff ff je 418c7c 0.00 : 41c4d6: 48 89 f2 mov %rsi,%rdx 0.00 : 41c4d9: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 41c4dd: 48 85 f6 test %rsi,%rsi 0.00 : 41c4e0: 0f 84 96 c7 ff ff je 418c7c 0.00 : 41c4e6: eb ee jmp 41c4d6 0.00 : 41c4e8: 44 8b 3d 69 3e 23 00 mov 0x233e69(%rip),%r15d # 650358 0.00 : 41c4ef: 41 83 ef 01 sub $0x1,%r15d 0.00 : 41c4f3: 66 44 89 79 20 mov %r15w,0x20(%rcx) 0.00 : 41c4f8: e9 34 c7 ff ff jmpq 418c31 0.00 : 41c4fd: e8 fe 85 01 00 callq 434b00 0.00 : 41c502: 48 89 c1 mov %rax,%rcx 0.00 : 41c505: e9 f0 c6 ff ff jmpq 418bfa 0.00 : 41c50a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 41c510: e8 eb 85 01 00 callq 434b00 0.00 : 41c515: 48 89 c2 mov %rax,%rdx 0.00 : 41c518: e9 23 c6 ff ff jmpq 418b40 0.00 : 41c51d: 0f 1f 00 nopl (%rax) 0.00 : 41c520: e8 db 85 01 00 callq 434b00 0.00 : 41c525: 48 89 c2 mov %rax,%rdx 0.00 : 41c528: e9 f4 c4 ff ff jmpq 418a21 0.00 : 41c52d: 83 7d 38 63 cmpl $0x63,0x38(%rbp) 0.00 : 41c531: 0f 87 9f c4 ff ff ja 4189d6 0.00 : 41c537: 8b 75 38 mov 0x38(%rbp),%esi 0.00 : 41c53a: ff 24 f5 18 dd 43 00 jmpq *0x43dd18(,%rsi,8) 0.00 : 41c541: 4c 8b 7a f8 mov -0x8(%rdx),%r15 0.00 : 41c545: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41c54c: 00 0.00 : 41c54d: e9 2e c4 ff ff jmpq 418980 0.00 : 41c552: be 69 01 00 00 mov $0x169,%esi 0.00 : 41c557: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c55c: e8 e7 4d ff ff callq 411348 0.00 : 41c561: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c566: be e1 c2 43 00 mov $0x43c2e1,%esi 0.00 : 41c56b: 31 ff xor %edi,%edi 0.00 : 41c56d: 48 8b 1d 5c 10 23 00 mov 0x23105c(%rip),%rbx # 64d5d0 0.00 : 41c574: e8 a7 aa fe ff callq 407020 0.00 : 41c579: 48 89 c7 mov %rax,%rdi 0.00 : 41c57c: 31 c0 xor %eax,%eax 0.00 : 41c57e: ff d3 callq *%rbx 0.00 : 41c580: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41c587: 00 0.00 : 41c588: 48 8b 2f mov (%rdi),%rbp 0.00 : 41c58b: e9 46 c4 ff ff jmpq 4189d6 0.00 : 41c590: 41 bf 22 85 44 00 mov $0x448522,%r15d 0.00 : 41c596: e9 e5 c3 ff ff jmpq 418980 0.00 : 41c59b: 41 bf 90 85 44 00 mov $0x448590,%r15d 0.00 : 41c5a1: e9 da c3 ff ff jmpq 418980 0.00 : 41c5a6: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 41c5ad: 00 0.00 : 41c5ae: 4d 8b 7d 00 mov 0x0(%r13),%r15 0.00 : 41c5b2: e9 c9 c3 ff ff jmpq 418980 0.00 : 41c5b7: 45 31 ff xor %r15d,%r15d 0.00 : 41c5ba: e9 c1 c3 ff ff jmpq 418980 0.00 : 41c5bf: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 41c5c6: 00 0.00 : 41c5c7: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 41c5cb: bf 61 00 00 00 mov $0x61,%edi 0.00 : 41c5d0: 4c 8b 20 mov (%rax),%r12 0.00 : 41c5d3: e8 48 86 01 00 callq 434c20 0.00 : 41c5d8: bf 04 00 00 00 mov $0x4,%edi 0.00 : 41c5dd: 48 89 c3 mov %rax,%rbx 0.00 : 41c5e0: e8 db a5 ff ff callq 416bc0 0.00 : 41c5e5: 48 89 18 mov %rbx,(%rax) 0.00 : 41c5e8: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41c5ec: 49 89 c7 mov %rax,%r15 0.00 : 41c5ef: e9 8c c3 ff ff jmpq 418980 0.00 : 41c5f4: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41c5fb: 00 0.00 : 41c5fc: 48 8b 1a mov (%rdx),%rbx 0.00 : 41c5ff: 83 7b 38 49 cmpl $0x49,0x38(%rbx) 0.00 : 41c603: 0f 85 92 00 00 00 jne 41c69b 0.00 : 41c609: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 41c60d: a8 18 test $0x18,%al 0.00 : 41c60f: 0f 85 86 00 00 00 jne 41c69b 0.00 : 41c615: a8 20 test $0x20,%al 0.00 : 41c617: 74 74 je 41c68d 0.00 : 41c619: f2 0f 10 0b movsd (%rbx),%xmm1 0.00 : 41c61d: f2 0f 10 1d 9b 3d 02 movsd 0x23d9b(%rip),%xmm3 # 4403c0 <_IO_stdin_used+0x48a0> 0.00 : 41c624: 00 0.00 : 41c625: 66 0f 57 cb xorpd %xmm3,%xmm1 0.00 : 41c629: f2 0f 11 0b movsd %xmm1,(%rbx) 0.00 : 41c62d: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41c634: 00 0.00 : 41c635: 4d 8b 39 mov (%r9),%r15 0.00 : 41c638: e9 43 c3 ff ff jmpq 418980 0.00 : 41c63d: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41c644: 00 0.00 : 41c645: bf 0b 00 00 00 mov $0xb,%edi 0.00 : 41c64a: 49 8b 28 mov (%r8),%rbp 0.00 : 41c64d: e8 6e a5 ff ff callq 416bc0 0.00 : 41c652: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41c659: 00 0.00 : 41c65a: 49 89 c7 mov %rax,%r15 0.00 : 41c65d: 48 89 28 mov %rbp,(%rax) 0.00 : 41c660: e9 1b c3 ff ff jmpq 418980 0.00 : 41c665: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41c66c: 00 0.00 : 41c66d: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 41c672: 4c 8b 31 mov (%rcx),%r14 0.00 : 41c675: e8 46 a5 ff ff callq 416bc0 0.00 : 41c67a: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41c681: 00 0.00 : 41c682: 49 89 c7 mov %rax,%r15 0.00 : 41c685: 4c 89 30 mov %r14,(%rax) 0.00 : 41c688: e9 f3 c2 ff ff jmpq 418980 0.00 : 41c68d: 48 89 df mov %rbx,%rdi 0.00 : 41c690: e8 1b 91 01 00 callq 4357b0 0.00 : 41c695: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 41c699: eb 82 jmp 41c61d 0.00 : 41c69b: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 41c6a0: e8 1b a5 ff ff callq 416bc0 0.00 : 41c6a5: 48 89 18 mov %rbx,(%rax) 0.00 : 41c6a8: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41c6af: 00 0.00 : 41c6b0: 49 89 c7 mov %rax,%r15 0.00 : 41c6b3: e9 c8 c2 ff ff jmpq 418980 0.00 : 41c6b8: 8b 15 42 3c 23 00 mov 0x233c42(%rip),%edx # 650300 0.00 : 41c6be: 85 d2 test %edx,%edx 0.00 : 41c6c0: 74 41 je 41c703 0.00 : 41c6c2: 66 83 3d 00 11 23 00 cmpw $0x0,0x231100(%rip) # 64d7ca 0.00 : 41c6c9: 00 0.00 : 41c6ca: 75 37 jne 41c703 0.00 : 41c6cc: be b6 03 00 00 mov $0x3b6,%esi 0.00 : 41c6d1: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41c6d6: 66 c7 05 eb 10 23 00 movw $0x1,0x2310eb(%rip) # 64d7ca 0.00 : 41c6dd: 01 00 0.00 : 41c6df: e8 64 4c ff ff callq 411348 0.00 : 41c6e4: 31 ff xor %edi,%edi 0.00 : 41c6e6: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c6eb: be 80 d0 43 00 mov $0x43d080,%esi 0.00 : 41c6f0: 48 8b 1d d9 0e 23 00 mov 0x230ed9(%rip),%rbx # 64d5d0 0.00 : 41c6f7: e8 24 a9 fe ff callq 407020 0.00 : 41c6fc: 48 89 c7 mov %rax,%rdi 0.00 : 41c6ff: 31 c0 xor %eax,%eax 0.00 : 41c701: ff d3 callq *%rbx 0.00 : 41c703: 4c 8b bc 24 a8 00 00 mov 0xa8(%rsp),%r15 0.00 : 41c70a: 00 0.00 : 41c70b: 31 ff xor %edi,%edi 0.00 : 41c70d: be 4a 00 00 00 mov $0x4a,%esi 0.00 : 41c712: 49 8b 17 mov (%r15),%rdx 0.00 : 41c715: e8 a6 b4 ff ff callq 417bc0 0.00 : 41c71a: 44 8b 0d db 3b 23 00 mov 0x233bdb(%rip),%r9d # 6502fc 0.00 : 41c721: 49 89 c7 mov %rax,%r15 0.00 : 41c724: 45 85 c9 test %r9d,%r9d 0.00 : 41c727: 0f 84 53 c2 ff ff je 418980 0.00 : 41c72d: 66 83 3d 93 10 23 00 cmpw $0x0,0x231093(%rip) # 64d7c8 0.00 : 41c734: 00 0.00 : 41c735: 0f 85 45 c2 ff ff jne 418980 0.00 : 41c73b: 31 ff xor %edi,%edi 0.00 : 41c73d: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c742: be b8 d0 43 00 mov $0x43d0b8,%esi 0.00 : 41c747: 66 c7 05 78 10 23 00 movw $0x1,0x231078(%rip) # 64d7c8 0.00 : 41c74e: 01 00 0.00 : 41c750: e8 cb a8 fe ff callq 407020 0.00 : 41c755: 48 89 c7 mov %rax,%rdi 0.00 : 41c758: 31 c0 xor %eax,%eax 0.00 : 41c75a: e8 c8 4e ff ff callq 411627 0.00 : 41c75f: e9 1c c2 ff ff jmpq 418980 0.00 : 41c764: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : 41c76b: 00 0.00 : 41c76c: be 4a 00 00 00 mov $0x4a,%esi 0.00 : 41c771: 49 8b 54 24 e8 mov -0x18(%r12),%rdx 0.00 : 41c776: 49 8b 7c 24 f8 mov -0x8(%r12),%rdi 0.00 : 41c77b: e8 40 b4 ff ff callq 417bc0 0.00 : 41c780: 49 89 c7 mov %rax,%r15 0.00 : 41c783: e9 f8 c1 ff ff jmpq 418980 0.00 : 41c788: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41c78f: 00 0.00 : 41c790: 4c 8b 7f f8 mov -0x8(%rdi),%r15 0.00 : 41c794: e9 e7 c1 ff ff jmpq 418980 0.00 : 41c799: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41c7a0: 00 0.00 : 41c7a1: 31 d2 xor %edx,%edx 0.00 : 41c7a3: be 22 00 00 00 mov $0x22,%esi 0.00 : 41c7a8: 49 8b 38 mov (%r8),%rdi 0.00 : 41c7ab: e8 c0 af ff ff callq 417770 0.00 : 41c7b0: 49 89 c7 mov %rax,%r15 0.00 : 41c7b3: e9 c8 c1 ff ff jmpq 418980 0.00 : 41c7b8: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41c7bf: 00 0.00 : 41c7c0: bf 05 00 00 00 mov $0x5,%edi 0.00 : 41c7c5: 49 8b 2b mov (%r11),%rbp 0.00 : 41c7c8: 4d 8b 6b f0 mov -0x10(%r11),%r13 0.00 : 41c7cc: e8 ef a3 ff ff callq 416bc0 0.00 : 41c7d1: 49 89 c7 mov %rax,%r15 0.00 : 41c7d4: 4c 89 28 mov %r13,(%rax) 0.00 : 41c7d7: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 41c7db: e9 a0 c1 ff ff jmpq 418980 0.00 : 41c7e0: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 41c7e7: 00 0.00 : 41c7e8: bf 04 00 00 00 mov $0x4,%edi 0.00 : 41c7ed: 4c 8b 38 mov (%rax),%r15 0.00 : 41c7f0: 4c 8b 70 f0 mov -0x10(%rax),%r14 0.00 : 41c7f4: e8 c7 a3 ff ff callq 416bc0 0.00 : 41c7f9: 4c 89 78 08 mov %r15,0x8(%rax) 0.00 : 41c7fd: 4c 89 30 mov %r14,(%rax) 0.00 : 41c800: 49 89 c7 mov %rax,%r15 0.00 : 41c803: e9 78 c1 ff ff jmpq 418980 0.00 : 41c808: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41c80f: 00 0.00 : 41c810: bf 03 00 00 00 mov $0x3,%edi 0.00 : 41c815: 4d 8b 21 mov (%r9),%r12 0.00 : 41c818: 49 8b 59 f0 mov -0x10(%r9),%rbx 0.00 : 41c81c: e8 9f a3 ff ff callq 416bc0 0.00 : 41c821: 49 89 c7 mov %rax,%r15 0.00 : 41c824: 48 89 18 mov %rbx,(%rax) 0.00 : 41c827: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41c82b: e9 50 c1 ff ff jmpq 418980 0.00 : 41c830: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41c837: 00 0.00 : 41c838: bf 02 00 00 00 mov $0x2,%edi 0.00 : 41c83d: 49 8b 28 mov (%r8),%rbp 0.00 : 41c840: 4d 8b 68 f0 mov -0x10(%r8),%r13 0.00 : 41c844: e8 77 a3 ff ff callq 416bc0 0.00 : 41c849: 49 89 c7 mov %rax,%r15 0.00 : 41c84c: 4c 89 28 mov %r13,(%rax) 0.00 : 41c84f: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 41c853: e9 28 c1 ff ff jmpq 418980 0.00 : 41c858: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41c85f: 00 0.00 : 41c860: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41c865: 4c 8b 3a mov (%rdx),%r15 0.00 : 41c868: 4c 8b 72 f0 mov -0x10(%rdx),%r14 0.00 : 41c86c: e8 4f a3 ff ff callq 416bc0 0.00 : 41c871: 4c 89 78 08 mov %r15,0x8(%rax) 0.00 : 41c875: 4c 89 30 mov %r14,(%rax) 0.00 : 41c878: 49 89 c7 mov %rax,%r15 0.00 : 41c87b: e9 00 c1 ff ff jmpq 418980 0.00 : 41c880: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41c887: 00 0.00 : 41c888: 4c 8b 27 mov (%rdi),%r12 0.00 : 41c88b: 48 8b 5f f0 mov -0x10(%rdi),%rbx 0.00 : 41c88f: bf 09 00 00 00 mov $0x9,%edi 0.00 : 41c894: e8 27 a3 ff ff callq 416bc0 0.00 : 41c899: 49 89 c7 mov %rax,%r15 0.00 : 41c89c: 48 89 18 mov %rbx,(%rax) 0.00 : 41c89f: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41c8a3: e9 d8 c0 ff ff jmpq 418980 0.00 : 41c8a8: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41c8af: 00 0.00 : 41c8b0: 4c 8b 69 e8 mov -0x18(%rcx),%r13 0.00 : 41c8b4: 8b 79 f0 mov -0x10(%rcx),%edi 0.00 : 41c8b7: e8 04 a3 ff ff callq 416bc0 0.00 : 41c8bc: 4c 89 28 mov %r13,(%rax) 0.00 : 41c8bf: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41c8c6: 00 0.00 : 41c8c7: 49 89 c6 mov %rax,%r14 0.00 : 41c8ca: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41c8d1: 00 0.00 : 41c8d2: bf 3d 00 00 00 mov $0x3d,%edi 0.00 : 41c8d7: 49 8b 2b mov (%r11),%rbp 0.00 : 41c8da: e8 e1 a2 ff ff callq 416bc0 0.00 : 41c8df: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41c8e3: 49 89 c7 mov %rax,%r15 0.00 : 41c8e6: 48 89 28 mov %rbp,(%rax) 0.00 : 41c8e9: e9 92 c0 ff ff jmpq 418980 0.00 : 41c8ee: 8b 05 10 3a 23 00 mov 0x233a10(%rip),%eax # 650304 0.00 : 41c8f4: 85 c0 test %eax,%eax 0.00 : 41c8f6: 74 36 je 41c92e 0.00 : 41c8f8: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c8fd: be a0 cf 43 00 mov $0x43cfa0,%esi 0.00 : 41c902: 31 ff xor %edi,%edi 0.00 : 41c904: e8 17 a7 fe ff callq 407020 0.00 : 41c909: 48 89 c7 mov %rax,%rdi 0.00 : 41c90c: 31 c0 xor %eax,%eax 0.00 : 41c90e: e8 14 4d ff ff callq 411627 0.00 : 41c913: 31 ff xor %edi,%edi 0.00 : 41c915: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41c91a: be 48 d0 43 00 mov $0x43d048,%esi 0.00 : 41c91f: e8 fc a6 fe ff callq 407020 0.00 : 41c924: 48 89 c7 mov %rax,%rdi 0.00 : 41c927: 31 c0 xor %eax,%eax 0.00 : 41c929: e8 f9 4c ff ff callq 411627 0.00 : 41c92e: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 41c935: 00 0.00 : 41c936: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41c93b: be 01 00 00 00 mov $0x1,%esi 0.00 : 41c940: 49 8b 3a mov (%r10),%rdi 0.00 : 41c943: 4d 8b 62 e8 mov -0x18(%r10),%r12 0.00 : 41c947: e8 c4 ba ff ff callq 418410 0.00 : 41c94c: bf 4c 00 00 00 mov $0x4c,%edi 0.00 : 41c951: 49 89 c7 mov %rax,%r15 0.00 : 41c954: e8 67 a2 ff ff callq 416bc0 0.00 : 41c959: 4c 89 38 mov %r15,(%rax) 0.00 : 41c95c: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41c960: 49 89 c7 mov %rax,%r15 0.00 : 41c963: e9 18 c0 ff ff jmpq 418980 0.00 : 41c968: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41c96f: 00 0.00 : 41c970: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 41c975: 4d 8b 69 f8 mov -0x8(%r9),%r13 0.00 : 41c979: e8 42 a2 ff ff callq 416bc0 0.00 : 41c97e: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41c985: 00 0.00 : 41c986: 49 89 c7 mov %rax,%r15 0.00 : 41c989: 4c 89 28 mov %r13,(%rax) 0.00 : 41c98c: e9 ef bf ff ff jmpq 418980 0.00 : 41c991: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41c998: 00 0.00 : 41c999: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 41c99e: 49 8b 58 f8 mov -0x8(%r8),%rbx 0.00 : 41c9a2: e8 19 a2 ff ff callq 416bc0 0.00 : 41c9a7: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41c9ae: 00 0.00 : 41c9af: 49 89 c7 mov %rax,%r15 0.00 : 41c9b2: 48 89 18 mov %rbx,(%rax) 0.00 : 41c9b5: e9 c6 bf ff ff jmpq 418980 0.00 : 41c9ba: 8b 3d 40 39 23 00 mov 0x233940(%rip),%edi # 650300 0.00 : 41c9c0: 85 ff test %edi,%edi 0.00 : 41c9c2: 75 4a jne 41ca0e 0.00 : 41c9c4: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41c9cb: 00 0.00 : 41c9cc: bf 3d 00 00 00 mov $0x3d,%edi 0.00 : 41c9d1: 4c 8b 36 mov (%rsi),%r14 0.00 : 41c9d4: 48 8b 6e f8 mov -0x8(%rsi),%rbp 0.00 : 41c9d8: e8 e3 a1 ff ff callq 416bc0 0.00 : 41c9dd: 49 89 c7 mov %rax,%r15 0.00 : 41c9e0: 48 89 28 mov %rbp,(%rax) 0.00 : 41c9e3: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41c9e7: e9 94 bf ff ff jmpq 418980 0.00 : 41c9ec: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 41c9f3: 00 0.00 : 41c9f4: be 05 00 00 00 mov $0x5,%esi 0.00 : 41c9f9: 49 8b 7d f0 mov -0x10(%r13),%rdi 0.00 : 41c9fd: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 41ca01: e8 6a ad ff ff callq 417770 0.00 : 41ca06: 49 89 c7 mov %rax,%r15 0.00 : 41ca09: e9 72 bf ff ff jmpq 418980 0.00 : 41ca0e: 8b 15 a4 0d 23 00 mov 0x230da4(%rip),%edx # 64d7b8 0.00 : 41ca14: 85 d2 test %edx,%edx 0.00 : 41ca16: 74 ac je 41c9c4 0.00 : 41ca18: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : 41ca1f: 00 0.00 : 41ca20: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 41ca25: 75 9d jne 41c9c4 0.00 : 41ca27: be 7d 03 00 00 mov $0x37d,%esi 0.00 : 41ca2c: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41ca31: e8 12 49 ff ff callq 411348 0.00 : 41ca36: 31 ff xor %edi,%edi 0.00 : 41ca38: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41ca3d: be 10 d0 43 00 mov $0x43d010,%esi 0.00 : 41ca42: 4c 8b 3d 87 0b 23 00 mov 0x230b87(%rip),%r15 # 64d5d0 0.00 : 41ca49: e8 d2 a5 fe ff callq 407020 0.00 : 41ca4e: 48 89 c7 mov %rax,%rdi 0.00 : 41ca51: 31 c0 xor %eax,%eax 0.00 : 41ca53: 41 ff d7 callq *%r15 0.00 : 41ca56: e9 69 ff ff ff jmpq 41c9c4 0.00 : 41ca5b: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 41ca62: 00 0.00 : 41ca63: be 04 00 00 00 mov $0x4,%esi 0.00 : 41ca68: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 41ca6c: 48 8b 13 mov (%rbx),%rdx 0.00 : 41ca6f: e8 fc ac ff ff callq 417770 0.00 : 41ca74: 49 89 c7 mov %rax,%r15 0.00 : 41ca77: e9 04 bf ff ff jmpq 418980 0.00 : 41ca7c: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41ca83: 00 0.00 : 41ca84: be 03 00 00 00 mov $0x3,%esi 0.00 : 41ca89: 48 8b 7d f0 mov -0x10(%rbp),%rdi 0.00 : 41ca8d: 48 8b 55 00 mov 0x0(%rbp),%rdx 0.00 : 41ca91: e8 da ac ff ff callq 417770 0.00 : 41ca96: 49 89 c7 mov %rax,%r15 0.00 : 41ca99: e9 e2 be ff ff jmpq 418980 0.00 : 41ca9e: 4c 8b b4 24 a8 00 00 mov 0xa8(%rsp),%r14 0.00 : 41caa5: 00 0.00 : 41caa6: be 02 00 00 00 mov $0x2,%esi 0.00 : 41caab: 49 8b 7e f0 mov -0x10(%r14),%rdi 0.00 : 41caaf: 49 8b 16 mov (%r14),%rdx 0.00 : 41cab2: e8 b9 ac ff ff callq 417770 0.00 : 41cab7: 49 89 c7 mov %rax,%r15 0.00 : 41caba: e9 c1 be ff ff jmpq 418980 0.00 : 41cabf: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41cac6: 00 0.00 : 41cac7: be 01 00 00 00 mov $0x1,%esi 0.00 : 41cacc: 49 8b 7b f0 mov -0x10(%r11),%rdi 0.00 : 41cad0: 49 8b 13 mov (%r11),%rdx 0.00 : 41cad3: e8 98 ac ff ff callq 417770 0.00 : 41cad8: 49 89 c7 mov %rax,%r15 0.00 : 41cadb: e9 a0 be ff ff jmpq 418980 0.00 : 41cae0: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 41cae7: 00 0.00 : 41cae8: be 09 00 00 00 mov $0x9,%esi 0.00 : 41caed: 49 8b 7a f0 mov -0x10(%r10),%rdi 0.00 : 41caf1: 49 8b 12 mov (%r10),%rdx 0.00 : 41caf4: e8 77 ac ff ff callq 417770 0.00 : 41caf9: 49 89 c7 mov %rax,%r15 0.00 : 41cafc: e9 7f be ff ff jmpq 418980 0.00 : 41cb01: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41cb08: 00 0.00 : 41cb09: 4d 8b 38 mov (%r8),%r15 0.00 : 41cb0c: e9 6f be ff ff jmpq 418980 0.00 : 41cb11: 49 bc 00 00 00 00 ff movabs $0xffffffff00000000,%r12 0.00 : 41cb18: ff ff ff 0.00 : 41cb1b: 4d 21 e7 and %r12,%r15 0.00 : 41cb1e: 49 83 cf 1d or $0x1d,%r15 0.00 : 41cb22: e9 59 be ff ff jmpq 418980 0.00 : 41cb27: 49 bd 00 00 00 00 ff movabs $0xffffffff00000000,%r13 0.00 : 41cb2e: ff ff ff 0.00 : 41cb31: 4d 21 ef and %r13,%r15 0.00 : 41cb34: 49 83 cf 1c or $0x1c,%r15 0.00 : 41cb38: e9 43 be ff ff jmpq 418980 0.00 : 41cb3d: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41cb44: 00 0.00 : 41cb45: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 41cb4c: ff ff ff 0.00 : 41cb4f: 49 21 df and %rbx,%r15 0.00 : 41cb52: 8b 2a mov (%rdx),%ebp 0.00 : 41cb54: 49 09 ef or %rbp,%r15 0.00 : 41cb57: e9 24 be ff ff jmpq 418980 0.00 : 41cb5c: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 41cb63: ff ff ff 0.00 : 41cb66: 49 21 cf and %rcx,%r15 0.00 : 41cb69: 49 83 cf 12 or $0x12,%r15 0.00 : 41cb6d: e9 0e be ff ff jmpq 418980 0.00 : 41cb72: 4c 8b b4 24 a8 00 00 mov 0xa8(%rsp),%r14 0.00 : 41cb79: 00 0.00 : 41cb7a: 49 bb 00 00 00 00 ff movabs $0xffffffff00000000,%r11 0.00 : 41cb81: ff ff ff 0.00 : 41cb84: 4d 21 df and %r11,%r15 0.00 : 41cb87: 45 8b 16 mov (%r14),%r10d 0.00 : 41cb8a: 4d 09 d7 or %r10,%r15 0.00 : 41cb8d: e9 ee bd ff ff jmpq 418980 0.00 : 41cb92: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41cb99: 00 0.00 : 41cb9a: bf 28 00 00 00 mov $0x28,%edi 0.00 : 41cb9f: 4c 8b 2e mov (%rsi),%r13 0.00 : 41cba2: 4c 8b 66 f0 mov -0x10(%rsi),%r12 0.00 : 41cba6: e8 15 a0 ff ff callq 416bc0 0.00 : 41cbab: bf 4f 00 00 00 mov $0x4f,%edi 0.00 : 41cbb0: 48 89 c5 mov %rax,%rbp 0.00 : 41cbb3: 4c 89 20 mov %r12,(%rax) 0.00 : 41cbb6: 4c 89 68 08 mov %r13,0x8(%rax) 0.00 : 41cbba: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41cbc1: 00 0.00 : 41cbc2: 48 8b 5a e0 mov -0x20(%rdx),%rbx 0.00 : 41cbc6: e8 f5 9f ff ff callq 416bc0 0.00 : 41cbcb: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 41cbcf: 49 89 c7 mov %rax,%r15 0.00 : 41cbd2: 48 89 18 mov %rbx,(%rax) 0.00 : 41cbd5: e9 a6 bd ff ff jmpq 418980 0.00 : 41cbda: 8b 3d 24 37 23 00 mov 0x233724(%rip),%edi # 650304 0.00 : 41cbe0: 85 ff test %edi,%edi 0.00 : 41cbe2: 74 1b je 41cbff 0.00 : 41cbe4: 31 ff xor %edi,%edi 0.00 : 41cbe6: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41cbeb: be a0 cf 43 00 mov $0x43cfa0,%esi 0.00 : 41cbf0: e8 2b a4 fe ff callq 407020 0.00 : 41cbf5: 48 89 c7 mov %rax,%rdi 0.00 : 41cbf8: 31 c0 xor %eax,%eax 0.00 : 41cbfa: e8 28 4a ff ff callq 411627 0.00 : 41cbff: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 41cc06: 00 0.00 : 41cc07: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41cc0c: be 01 00 00 00 mov $0x1,%esi 0.00 : 41cc11: 48 8b 38 mov (%rax),%rdi 0.00 : 41cc14: 48 8b 68 f0 mov -0x10(%rax),%rbp 0.00 : 41cc18: e8 f3 b7 ff ff callq 418410 0.00 : 41cc1d: bf 4c 00 00 00 mov $0x4c,%edi 0.00 : 41cc22: 48 89 c3 mov %rax,%rbx 0.00 : 41cc25: e8 96 9f ff ff callq 416bc0 0.00 : 41cc2a: 48 89 18 mov %rbx,(%rax) 0.00 : 41cc2d: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 41cc31: 49 89 c7 mov %rax,%r15 0.00 : 41cc34: e9 47 bd ff ff jmpq 418980 0.00 : 41cc39: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41cc40: 00 0.00 : 41cc41: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 41cc48: 00 0.00 : 41cc49: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 41cc4d: 48 83 eb 10 sub $0x10,%rbx 0.00 : 41cc51: 83 7a 38 50 cmpl $0x50,0x38(%rdx) 0.00 : 41cc55: 0f 84 86 00 00 00 je 41cce1 0.00 : 41cc5b: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41cc62: 00 0.00 : 41cc63: 49 8b 39 mov (%r9),%rdi 0.00 : 41cc66: e8 ea bc fe ff callq 408955 0.00 : 41cc6b: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41cc72: 00 0.00 : 41cc73: 4c 8b 3b mov (%rbx),%r15 0.00 : 41cc76: 49 89 c6 mov %rax,%r14 0.00 : 41cc79: 41 8b 78 f8 mov -0x8(%r8),%edi 0.00 : 41cc7d: e8 3e 9f ff ff callq 416bc0 0.00 : 41cc82: 4c 89 38 mov %r15,(%rax) 0.00 : 41cc85: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41cc89: 49 89 c7 mov %rax,%r15 0.00 : 41cc8c: e9 ef bc ff ff jmpq 418980 0.00 : 41cc91: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41cc98: 00 0.00 : 41cc99: bf 19 00 00 00 mov $0x19,%edi 0.00 : 41cc9e: 4c 8b 21 mov (%rcx),%r12 0.00 : 41cca1: 4c 8b 69 f0 mov -0x10(%rcx),%r13 0.00 : 41cca5: e8 16 9f ff ff callq 416bc0 0.00 : 41ccaa: 49 89 c7 mov %rax,%r15 0.00 : 41ccad: 4c 89 28 mov %r13,(%rax) 0.00 : 41ccb0: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41ccb4: e9 c7 bc ff ff jmpq 418980 0.00 : 41ccb9: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41ccc0: 00 0.00 : 41ccc1: bf 18 00 00 00 mov $0x18,%edi 0.00 : 41ccc6: 49 8b 2b mov (%r11),%rbp 0.00 : 41ccc9: 49 8b 5b f0 mov -0x10(%r11),%rbx 0.00 : 41cccd: e8 ee 9e ff ff callq 416bc0 0.00 : 41ccd2: 49 89 c7 mov %rax,%r15 0.00 : 41ccd5: 48 89 18 mov %rbx,(%rax) 0.00 : 41ccd8: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 41ccdc: e9 9f bc ff ff jmpq 418980 0.00 : 41cce1: 31 ff xor %edi,%edi 0.00 : 41cce3: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41cce8: be 68 cf 43 00 mov $0x43cf68,%esi 0.00 : 41cced: e8 2e a3 fe ff callq 407020 0.00 : 41ccf2: 48 89 c7 mov %rax,%rdi 0.00 : 41ccf5: 31 c0 xor %eax,%eax 0.00 : 41ccf7: e8 2b 49 ff ff callq 411627 0.00 : 41ccfc: e9 5a ff ff ff jmpq 41cc5b 0.00 : 41cd01: 45 31 ff xor %r15d,%r15d 0.00 : 41cd04: e9 77 bc ff ff jmpq 418980 0.00 : 41cd09: 45 31 ff xor %r15d,%r15d 0.00 : 41cd0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41cd10: e9 6b bc ff ff jmpq 418980 0.00 : 41cd15: 45 31 ff xor %r15d,%r15d 0.00 : 41cd18: e9 63 bc ff ff jmpq 418980 0.00 : 41cd1d: 45 31 ff xor %r15d,%r15d 0.00 : 41cd20: e9 5b bc ff ff jmpq 418980 0.00 : 41cd25: 45 31 ff xor %r15d,%r15d 0.00 : 41cd28: e9 53 bc ff ff jmpq 418980 0.00 : 41cd2d: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41cd34: 00 0.00 : 41cd35: 4c 8b 3a mov (%rdx),%r15 0.00 : 41cd38: e9 43 bc ff ff jmpq 418980 0.00 : 41cd3d: 45 31 ff xor %r15d,%r15d 0.00 : 41cd40: e9 3b bc ff ff jmpq 418980 0.00 : 41cd45: 45 31 ff xor %r15d,%r15d 0.00 : 41cd48: e9 33 bc ff ff jmpq 418980 0.00 : 41cd4d: 45 31 ff xor %r15d,%r15d 0.00 : 41cd50: e9 2b bc ff ff jmpq 418980 0.00 : 41cd55: 45 31 ff xor %r15d,%r15d 0.00 : 41cd58: e9 23 bc ff ff jmpq 418980 0.00 : 41cd5d: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41cd64: 00 0.00 : 41cd65: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 41cd69: e8 52 91 ff ff callq 415ec0 0.00 : 41cd6e: 48 89 c6 mov %rax,%rsi 0.00 : 41cd71: 48 8b 45 f0 mov -0x10(%rbp),%rax 0.00 : 41cd75: 48 85 c0 test %rax,%rax 0.00 : 41cd78: 74 2c je 41cda6 0.00 : 41cd7a: 48 85 f6 test %rsi,%rsi 0.00 : 41cd7d: 74 27 je 41cda6 0.00 : 41cd7f: 48 3b 05 ca 0a 23 00 cmp 0x230aca(%rip),%rax # 64d850 0.00 : 41cd86: 75 46 jne 41cdce 0.00 : 41cd88: 48 8b 15 b9 0a 23 00 mov 0x230ab9(%rip),%rdx # 64d848 0.00 : 41cd8f: 48 89 d1 mov %rdx,%rcx 0.00 : 41cd92: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 41cd96: 48 85 d2 test %rdx,%rdx 0.00 : 41cd99: 75 f4 jne 41cd8f 0.00 : 41cd9b: 48 89 71 08 mov %rsi,0x8(%rcx) 0.00 : 41cd9f: 48 89 35 a2 0a 23 00 mov %rsi,0x230aa2(%rip) # 64d848 0.00 : 41cda6: 49 89 c7 mov %rax,%r15 0.00 : 41cda9: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41cdb0: 00 0.00 : 41cdb1: e9 ca bb ff ff jmpq 418980 0.00 : 41cdb6: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41cdbd: 00 0.00 : 41cdbe: 48 8b 39 mov (%rcx),%rdi 0.00 : 41cdc1: e8 fa 90 ff ff callq 415ec0 0.00 : 41cdc6: 49 89 c7 mov %rax,%r15 0.00 : 41cdc9: e9 b2 bb ff ff jmpq 418980 0.00 : 41cdce: 48 89 05 7b 0a 23 00 mov %rax,0x230a7b(%rip) # 64d850 0.00 : 41cdd5: 48 89 c2 mov %rax,%rdx 0.00 : 41cdd8: eb b5 jmp 41cd8f 0.00 : 41cdda: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41cde1: 00 0.00 : 41cde2: 4d 8b 3b mov (%r11),%r15 0.00 : 41cde5: e9 96 bb ff ff jmpq 418980 0.00 : 41cdea: 45 31 ff xor %r15d,%r15d 0.00 : 41cded: e9 8e bb ff ff jmpq 418980 0.00 : 41cdf2: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 41cdf9: 00 0.00 : 41cdfa: bf 44 00 00 00 mov $0x44,%edi 0.00 : 41cdff: 4d 8b 3a mov (%r10),%r15 0.00 : 41ce02: e8 b9 9d ff ff callq 416bc0 0.00 : 41ce07: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41ce0e: 00 0.00 : 41ce0f: 4c 89 38 mov %r15,(%rax) 0.00 : 41ce12: 49 89 c7 mov %rax,%r15 0.00 : 41ce15: e9 66 bb ff ff jmpq 418980 0.00 : 41ce1a: 45 31 ff xor %r15d,%r15d 0.00 : 41ce1d: e9 5e bb ff ff jmpq 418980 0.00 : 41ce22: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 41ce29: 00 0.00 : 41ce2a: bf 28 00 00 00 mov $0x28,%edi 0.00 : 41ce2f: 4c 8b 28 mov (%rax),%r13 0.00 : 41ce32: 4c 8b 70 e8 mov -0x18(%rax),%r14 0.00 : 41ce36: e8 85 9d ff ff callq 416bc0 0.00 : 41ce3b: bf 2b 00 00 00 mov $0x2b,%edi 0.00 : 41ce40: 48 89 c3 mov %rax,%rbx 0.00 : 41ce43: 4c 89 30 mov %r14,(%rax) 0.00 : 41ce46: 4c 89 68 08 mov %r13,0x8(%rax) 0.00 : 41ce4a: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41ce51: 00 0.00 : 41ce52: 4d 8b 61 d0 mov -0x30(%r9),%r12 0.00 : 41ce56: e8 65 9d ff ff callq 416bc0 0.00 : 41ce5b: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 41ce5f: 49 89 c7 mov %rax,%r15 0.00 : 41ce62: 4c 89 20 mov %r12,(%rax) 0.00 : 41ce65: e9 16 bb ff ff jmpq 418980 0.00 : 41ce6a: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41ce71: 00 0.00 : 41ce72: 48 8b 2f mov (%rdi),%rbp 0.00 : 41ce75: bf 28 00 00 00 mov $0x28,%edi 0.00 : 41ce7a: e8 41 9d ff ff callq 416bc0 0.00 : 41ce7f: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41ce86: 00 0.00 : 41ce87: 49 89 c6 mov %rax,%r14 0.00 : 41ce8a: bf 2b 00 00 00 mov $0x2b,%edi 0.00 : 41ce8f: 48 89 28 mov %rbp,(%rax) 0.00 : 41ce92: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41ce99: 00 0.00 : 41ce9a: 4d 8b 78 e8 mov -0x18(%r8),%r15 0.00 : 41ce9e: e8 1d 9d ff ff callq 416bc0 0.00 : 41cea3: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41cea7: 4c 89 38 mov %r15,(%rax) 0.00 : 41ceaa: 49 89 c7 mov %rax,%r15 0.00 : 41cead: e9 ce ba ff ff jmpq 418980 0.00 : 41ceb2: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 41ceb9: 00 0.00 : 41ceba: 4c 8b 2b mov (%rbx),%r13 0.00 : 41cebd: 8b 7b f0 mov -0x10(%rbx),%edi 0.00 : 41cec0: e8 fb 9c ff ff callq 416bc0 0.00 : 41cec5: 4c 89 28 mov %r13,(%rax) 0.00 : 41cec8: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41cecf: 00 0.00 : 41ced0: 49 89 c7 mov %rax,%r15 0.00 : 41ced3: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41ceda: 00 0.00 : 41cedb: 83 79 f0 45 cmpl $0x45,-0x10(%rcx) 0.00 : 41cedf: 0f 85 9b ba ff ff jne 418980 0.00 : 41cee5: 48 8b 01 mov (%rcx),%rax 0.00 : 41cee8: 83 78 38 3d cmpl $0x3d,0x38(%rax) 0.00 : 41ceec: 0f 85 8e ba ff ff jne 418980 0.00 : 41cef2: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 41cef6: 48 85 c0 test %rax,%rax 0.00 : 41cef9: 0f 84 81 ba ff ff je 418980 0.00 : 41ceff: 83 78 38 45 cmpl $0x45,0x38(%rax) 0.00 : 41cf03: 0f 85 77 ba ff ff jne 418980 0.00 : 41cf09: 31 ff xor %edi,%edi 0.00 : 41cf0b: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41cf10: be 10 cf 43 00 mov $0x43cf10,%esi 0.00 : 41cf15: e8 06 a1 fe ff callq 407020 0.00 : 41cf1a: 48 89 c7 mov %rax,%rdi 0.00 : 41cf1d: 31 c0 xor %eax,%eax 0.00 : 41cf1f: e8 6c 92 ff ff callq 416190 0.00 : 41cf24: e9 57 ba ff ff jmpq 418980 0.00 : 41cf29: c7 05 8d 08 23 00 00 movl $0x0,0x23088d(%rip) # 64d7c0 0.00 : 41cf30: 00 00 00 0.00 : 41cf33: c7 05 87 08 23 00 00 movl $0x0,0x230887(%rip) # 64d7c4 0.00 : 41cf3a: 00 00 00 0.00 : 41cf3d: e9 3e ba ff ff jmpq 418980 0.00 : 41cf42: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41cf49: 00 0.00 : 41cf4a: bf 29 00 00 00 mov $0x29,%edi 0.00 : 41cf4f: 4c 8b 7e f8 mov -0x8(%rsi),%r15 0.00 : 41cf53: 48 8b 6e e8 mov -0x18(%rsi),%rbp 0.00 : 41cf57: e8 64 9c ff ff callq 416bc0 0.00 : 41cf5c: 4c 89 78 08 mov %r15,0x8(%rax) 0.00 : 41cf60: 48 89 28 mov %rbp,(%rax) 0.00 : 41cf63: 49 89 c7 mov %rax,%r15 0.00 : 41cf66: e9 15 ba ff ff jmpq 418980 0.00 : 41cf6b: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41cf72: 00 0.00 : 41cf73: 4c 8b 3a mov (%rdx),%r15 0.00 : 41cf76: e9 05 ba ff ff jmpq 418980 0.00 : 41cf7b: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41cf82: 00 0.00 : 41cf83: 4c 8b 39 mov (%rcx),%r15 0.00 : 41cf86: e9 f5 b9 ff ff jmpq 418980 0.00 : 41cf8b: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41cf92: 00 0.00 : 41cf93: 4d 8b 3b mov (%r11),%r15 0.00 : 41cf96: e9 e5 b9 ff ff jmpq 418980 0.00 : 41cf9b: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 41cfa2: 00 0.00 : 41cfa3: 48 8b 18 mov (%rax),%rbx 0.00 : 41cfa6: f6 43 3c 20 testb $0x20,0x3c(%rbx) 0.00 : 41cfaa: 74 34 je 41cfe0 0.00 : 41cfac: f2 0f 10 0b movsd (%rbx),%xmm1 0.00 : 41cfb0: f2 0f 10 15 08 34 02 movsd 0x23408(%rip),%xmm2 # 4403c0 <_IO_stdin_used+0x48a0> 0.00 : 41cfb7: 00 0.00 : 41cfb8: 66 0f 57 ca xorpd %xmm2,%xmm1 0.00 : 41cfbc: f2 0f 11 0b movsd %xmm1,(%rbx) 0.00 : 41cfc0: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 41cfc7: 00 0.00 : 41cfc8: 4d 8b 3a mov (%r10),%r15 0.00 : 41cfcb: e9 b0 b9 ff ff jmpq 418980 0.00 : 41cfd0: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41cfd7: 00 0.00 : 41cfd8: 4d 8b 39 mov (%r9),%r15 0.00 : 41cfdb: e9 a0 b9 ff ff jmpq 418980 0.00 : 41cfe0: 48 89 df mov %rbx,%rdi 0.00 : 41cfe3: e8 c8 87 01 00 callq 4357b0 0.00 : 41cfe8: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 41cfec: eb c2 jmp 41cfb0 0.00 : 41cfee: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41cff5: 00 0.00 : 41cff6: 4c 8b 37 mov (%rdi),%r14 0.00 : 41cff9: bf 2e 00 00 00 mov $0x2e,%edi 0.00 : 41cffe: e8 bd 9b ff ff callq 416bc0 0.00 : 41d003: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 41d00a: 49 89 c7 mov %rax,%r15 0.00 : 41d00d: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41d011: e9 6a b9 ff ff jmpq 418980 0.00 : 41d016: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41d01d: 00 0.00 : 41d01e: bf 2d 00 00 00 mov $0x2d,%edi 0.00 : 41d023: 4d 8b 28 mov (%r8),%r13 0.00 : 41d026: 49 8b 58 e8 mov -0x18(%r8),%rbx 0.00 : 41d02a: e8 91 9b ff ff callq 416bc0 0.00 : 41d02f: 49 89 c7 mov %rax,%r15 0.00 : 41d032: 48 89 18 mov %rbx,(%rax) 0.00 : 41d035: 4c 89 68 08 mov %r13,0x8(%rax) 0.00 : 41d039: e9 42 b9 ff ff jmpq 418980 0.00 : 41d03e: 45 31 ff xor %r15d,%r15d 0.00 : 41d041: e9 3a b9 ff ff jmpq 418980 0.00 : 41d046: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41d04d: 00 0.00 : 41d04e: 48 8b 19 mov (%rcx),%rbx 0.00 : 41d051: 48 85 db test %rbx,%rbx 0.00 : 41d054: 0f 84 90 03 00 00 je 41d3ea 0.00 : 41d05a: 44 8b 3d 9f 32 23 00 mov 0x23329f(%rip),%r15d # 650300 0.00 : 41d061: 45 85 ff test %r15d,%r15d 0.00 : 41d064: 0f 84 c1 02 00 00 je 41d32b 0.00 : 41d06a: 83 7b 38 63 cmpl $0x63,0x38(%rbx) 0.00 : 41d06e: 0f 87 b7 02 00 00 ja 41d32b 0.00 : 41d074: 8b 53 38 mov 0x38(%rbx),%edx 0.00 : 41d077: ff 24 d5 38 e0 43 00 jmpq *0x43e038(,%rdx,8) 0.00 : 41d07e: 45 31 ff xor %r15d,%r15d 0.00 : 41d081: e9 fa b8 ff ff jmpq 418980 0.00 : 41d086: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 41d08d: 00 0.00 : 41d08e: 45 31 ff xor %r15d,%r15d 0.00 : 41d091: 4c 8b 23 mov (%rbx),%r12 0.00 : 41d094: 4d 85 e4 test %r12,%r12 0.00 : 41d097: 4c 89 a4 24 a0 00 00 mov %r12,0xa0(%rsp) 0.00 : 41d09e: 00 0.00 : 41d09f: 0f 84 db b8 ff ff je 418980 0.00 : 41d0a5: bf 00 04 00 00 mov $0x400,%edi 0.00 : 41d0aa: e8 f1 9a fe ff callq 406ba0 0.00 : 41d0af: 48 85 c0 test %rax,%rax 0.00 : 41d0b2: 49 89 c4 mov %rax,%r12 0.00 : 41d0b5: 0f 84 ea 01 00 00 je 41d2a5 0.00 : 41d0bb: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41d0c2: 00 0.00 : 41d0c3: 45 31 ff xor %r15d,%r15d 0.00 : 41d0c6: 4d 8b 29 mov (%r9),%r13 0.00 : 41d0c9: 4d 85 ed test %r13,%r13 0.00 : 41d0cc: 74 44 je 41d112 0.00 : 41d0ce: 45 31 f6 xor %r14d,%r14d 0.00 : 41d0d1: 45 31 ff xor %r15d,%r15d 0.00 : 41d0d4: c7 44 24 54 80 00 00 movl $0x80,0x54(%rsp) 0.00 : 41d0db: 00 0.00 : 41d0dc: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 41d0e0: 83 78 38 2d cmpl $0x2d,0x38(%rax) 0.00 : 41d0e4: 74 55 je 41d13b 0.00 : 41d0e6: 4d 85 ff test %r15,%r15 0.00 : 41d0e9: 74 1b je 41d106 0.00 : 41d0eb: 31 ff xor %edi,%edi 0.00 : 41d0ed: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d0f2: be e0 ce 43 00 mov $0x43cee0,%esi 0.00 : 41d0f7: e8 24 9f fe ff callq 407020 0.00 : 41d0fc: 48 89 c7 mov %rax,%rdi 0.00 : 41d0ff: 31 c0 xor %eax,%eax 0.00 : 41d101: e8 8a 90 ff ff callq 416190 0.00 : 41d106: 4d 89 ef mov %r13,%r15 0.00 : 41d109: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 41d10d: 4d 85 ed test %r13,%r13 0.00 : 41d110: 75 ca jne 41d0dc 0.00 : 41d112: 4c 89 e7 mov %r12,%rdi 0.00 : 41d115: e8 06 9c fe ff callq 406d20 0.00 : 41d11a: bf 26 00 00 00 mov $0x26,%edi 0.00 : 41d11f: e8 9c 9a ff ff callq 416bc0 0.00 : 41d124: 48 8b 8c 24 a0 00 00 mov 0xa0(%rsp),%rcx 0.00 : 41d12b: 00 0.00 : 41d12c: 4c 89 78 08 mov %r15,0x8(%rax) 0.00 : 41d130: 49 89 c7 mov %rax,%r15 0.00 : 41d133: 48 89 08 mov %rcx,(%rax) 0.00 : 41d136: e9 45 b8 ff ff jmpq 418980 0.00 : 41d13b: 48 8b 10 mov (%rax),%rdx 0.00 : 41d13e: 8b 42 38 mov 0x38(%rdx),%eax 0.00 : 41d141: 83 f8 50 cmp $0x50,%eax 0.00 : 41d144: 0f 84 45 01 00 00 je 41d28f 0.00 : 41d14a: 83 f8 47 cmp $0x47,%eax 0.00 : 41d14d: 0f 84 27 01 00 00 je 41d27a 0.00 : 41d153: 83 f8 49 cmp $0x49,%eax 0.00 : 41d156: 0f 84 b6 00 00 00 je 41d212 0.00 : 41d15c: 48 89 d7 mov %rdx,%rdi 0.00 : 41d15f: 31 f6 xor %esi,%esi 0.00 : 41d161: e8 5a b1 01 00 callq 4382c0 0.00 : 41d166: 48 89 c7 mov %rax,%rdi 0.00 : 41d169: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 41d16d: f6 c4 08 test $0x8,%ah 0.00 : 41d170: 75 1c jne 41d18e 0.00 : 41d172: a8 10 test $0x10,%al 0.00 : 41d174: 74 18 je 41d18e 0.00 : 41d176: 8b 47 20 mov 0x20(%rdi),%eax 0.00 : 41d179: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 41d17c: 0f 84 1a 01 00 00 je 41d29c 0.00 : 41d182: 3b 05 b8 79 23 00 cmp 0x2379b8(%rip),%eax # 654b40 0.00 : 41d188: 0f 84 0e 01 00 00 je 41d29c 0.00 : 41d18e: e8 1d 8f 01 00 callq 4360b0 0.00 : 41d193: 48 8b 68 08 mov 0x8(%rax),%rbp 0.00 : 41d197: 45 85 f6 test %r14d,%r14d 0.00 : 41d19a: 74 39 je 41d1d5 0.00 : 41d19c: 31 db xor %ebx,%ebx 0.00 : 41d19e: 49 8b 34 dc mov (%r12,%rbx,8),%rsi 0.00 : 41d1a2: 48 89 ef mov %rbp,%rdi 0.00 : 41d1a5: e8 c6 9e fe ff callq 407070 0.00 : 41d1aa: 85 c0 test %eax,%eax 0.00 : 41d1ac: 75 1e jne 41d1cc 0.00 : 41d1ae: be b0 ce 43 00 mov $0x43ceb0,%esi 0.00 : 41d1b3: 31 ff xor %edi,%edi 0.00 : 41d1b5: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d1ba: e8 61 9e fe ff callq 407020 0.00 : 41d1bf: 48 89 ee mov %rbp,%rsi 0.00 : 41d1c2: 48 89 c7 mov %rax,%rdi 0.00 : 41d1c5: 31 c0 xor %eax,%eax 0.00 : 41d1c7: e8 c4 8f ff ff callq 416190 0.00 : 41d1cc: 48 83 c3 01 add $0x1,%rbx 0.00 : 41d1d0: 41 39 de cmp %ebx,%r14d 0.00 : 41d1d3: 7f c9 jg 41d19e 0.00 : 41d1d5: 44 39 74 24 54 cmp %r14d,0x54(%rsp) 0.00 : 41d1da: 7f 26 jg 41d202 0.00 : 41d1dc: 83 6c 24 54 80 subl $0xffffff80,0x54(%rsp) 0.00 : 41d1e1: 4c 89 e7 mov %r12,%rdi 0.00 : 41d1e4: 4c 63 54 24 54 movslq 0x54(%rsp),%r10 0.00 : 41d1e9: 49 c1 e2 03 shl $0x3,%r10 0.00 : 41d1ed: 4c 89 d6 mov %r10,%rsi 0.00 : 41d1f0: 4c 89 54 24 38 mov %r10,0x38(%rsp) 0.00 : 41d1f5: e8 26 a0 fe ff callq 407220 0.00 : 41d1fa: 48 85 c0 test %rax,%rax 0.00 : 41d1fd: 49 89 c4 mov %rax,%r12 0.00 : 41d200: 74 2d je 41d22f 0.00 : 41d202: 4d 63 de movslq %r14d,%r11 0.00 : 41d205: 41 83 c6 01 add $0x1,%r14d 0.00 : 41d209: 4b 89 2c dc mov %rbp,(%r12,%r11,8) 0.00 : 41d20d: e9 f7 fe ff ff jmpq 41d109 0.00 : 41d212: 0f b7 42 3c movzwl 0x3c(%rdx),%eax 0.00 : 41d216: 48 89 d7 mov %rdx,%rdi 0.00 : 41d219: f6 c4 08 test $0x8,%ah 0.00 : 41d21c: 0f 84 50 ff ff ff je 41d172 0.00 : 41d222: e8 89 8e 01 00 callq 4360b0 0.00 : 41d227: 48 89 c7 mov %rax,%rdi 0.00 : 41d22a: e9 3a ff ff ff jmpq 41d169 0.00 : 41d22f: be 74 02 00 00 mov $0x274,%esi 0.00 : 41d234: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41d239: e8 0a 41 ff ff callq 411348 0.00 : 41d23e: e8 ad 9d fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41d243: 8b 38 mov (%rax),%edi 0.00 : 41d245: e8 76 9c fe ff callq 406ec0 0.00 : 41d24a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d24f: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41d254: 31 ff xor %edi,%edi 0.00 : 41d256: 49 89 c6 mov %rax,%r14 0.00 : 41d259: e8 c2 9d fe ff callq 407020 0.00 : 41d25e: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 41d263: 48 89 c7 mov %rax,%rdi 0.00 : 41d266: 4d 89 f0 mov %r14,%r8 0.00 : 41d269: ba 15 c3 43 00 mov $0x43c315,%edx 0.00 : 41d26e: be d9 69 44 00 mov $0x4469d9,%esi 0.00 : 41d273: 31 c0 xor %eax,%eax 0.00 : 41d275: e8 50 42 ff ff callq 4114ca 0.00 : 41d27a: 48 8b 3a mov (%rdx),%rdi 0.00 : 41d27d: 48 3b 3d 5c 77 23 00 cmp 0x23775c(%rip),%rdi # 6549e0 0.00 : 41d284: 0f 85 df fe ff ff jne 41d169 0.00 : 41d28a: e9 cd fe ff ff jmpq 41d15c 0.00 : 41d28f: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 41d293: 48 8b 68 08 mov 0x8(%rax),%rbp 0.00 : 41d297: e9 fb fe ff ff jmpq 41d197 0.00 : 41d29c: 48 89 f8 mov %rdi,%rax 0.00 : 41d29f: 90 nop 0.00 : 41d2a0: e9 ee fe ff ff jmpq 41d193 0.00 : 41d2a5: be 63 02 00 00 mov $0x263,%esi 0.00 : 41d2aa: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41d2af: e8 94 40 ff ff callq 411348 0.00 : 41d2b4: e8 37 9d fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41d2b9: 8b 38 mov (%rax),%edi 0.00 : 41d2bb: e8 00 9c fe ff callq 406ec0 0.00 : 41d2c0: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d2c5: 49 89 c5 mov %rax,%r13 0.00 : 41d2c8: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41d2cd: 31 ff xor %edi,%edi 0.00 : 41d2cf: e8 4c 9d fe ff callq 407020 0.00 : 41d2d4: 4d 89 e8 mov %r13,%r8 0.00 : 41d2d7: 48 89 c7 mov %rax,%rdi 0.00 : 41d2da: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 41d2df: ba 15 c3 43 00 mov $0x43c315,%edx 0.00 : 41d2e4: be d9 69 44 00 mov $0x4469d9,%esi 0.00 : 41d2e9: 31 c0 xor %eax,%eax 0.00 : 41d2eb: e8 da 41 ff ff callq 4114ca 0.00 : 41d2f0: be 90 02 00 00 mov $0x290,%esi 0.00 : 41d2f5: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41d2fa: e8 49 40 ff ff callq 411348 0.00 : 41d2ff: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d304: be e1 c2 43 00 mov $0x43c2e1,%esi 0.00 : 41d309: 31 ff xor %edi,%edi 0.00 : 41d30b: 4c 8b 25 be 02 23 00 mov 0x2302be(%rip),%r12 # 64d5d0 0.00 : 41d312: e8 09 9d fe ff callq 407020 0.00 : 41d317: 48 89 c7 mov %rax,%rdi 0.00 : 41d31a: 31 c0 xor %eax,%eax 0.00 : 41d31c: 41 ff d4 callq *%r12 0.00 : 41d31f: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41d326: 00 0.00 : 41d327: 48 8b 5d 00 mov 0x0(%rbp),%rbx 0.00 : 41d32b: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41d332: 00 0.00 : 41d333: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 41d33a: 00 0.00 : 41d33b: 48 8b 6e f8 mov -0x8(%rsi),%rbp 0.00 : 41d33f: 49 83 ed 08 sub $0x8,%r13 0.00 : 41d343: 48 85 ed test %rbp,%rbp 0.00 : 41d346: 74 7d je 41d3c5 0.00 : 41d348: 83 7b 38 27 cmpl $0x27,0x38(%rbx) 0.00 : 41d34c: 49 89 dc mov %rbx,%r12 0.00 : 41d34f: 74 1c je 41d36d 0.00 : 41d351: bf 27 00 00 00 mov $0x27,%edi 0.00 : 41d356: e8 65 98 ff ff callq 416bc0 0.00 : 41d35b: 48 89 18 mov %rbx,(%rax) 0.00 : 41d35e: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d365: 00 0.00 : 41d366: 49 89 c4 mov %rax,%r12 0.00 : 41d369: 49 8b 6d 00 mov 0x0(%r13),%rbp 0.00 : 41d36d: 83 7d 38 27 cmpl $0x27,0x38(%rbp) 0.00 : 41d371: 48 89 e8 mov %rbp,%rax 0.00 : 41d374: 74 15 je 41d38b 0.00 : 41d376: bf 27 00 00 00 mov $0x27,%edi 0.00 : 41d37b: e8 40 98 ff ff callq 416bc0 0.00 : 41d380: 48 89 28 mov %rbp,(%rax) 0.00 : 41d383: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d38a: 00 0.00 : 41d38b: 48 3b 05 be 04 23 00 cmp 0x2304be(%rip),%rax # 64d850 0.00 : 41d392: 74 67 je 41d3fb 0.00 : 41d394: 48 89 05 b5 04 23 00 mov %rax,0x2304b5(%rip) # 64d850 0.00 : 41d39b: 48 89 c2 mov %rax,%rdx 0.00 : 41d39e: 48 89 d1 mov %rdx,%rcx 0.00 : 41d3a1: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 41d3a5: 48 85 d2 test %rdx,%rdx 0.00 : 41d3a8: 75 f4 jne 41d39e 0.00 : 41d3aa: 4c 89 61 08 mov %r12,0x8(%rcx) 0.00 : 41d3ae: 49 89 c7 mov %rax,%r15 0.00 : 41d3b1: 4c 89 25 90 04 23 00 mov %r12,0x230490(%rip) # 64d848 0.00 : 41d3b8: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41d3bf: 00 0.00 : 41d3c0: e9 bb b5 ff ff jmpq 418980 0.00 : 41d3c5: bf 27 00 00 00 mov $0x27,%edi 0.00 : 41d3ca: e8 f1 97 ff ff callq 416bc0 0.00 : 41d3cf: 48 89 18 mov %rbx,(%rax) 0.00 : 41d3d2: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d3d9: 00 0.00 : 41d3da: 49 89 c7 mov %rax,%r15 0.00 : 41d3dd: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41d3e4: 00 0.00 : 41d3e5: e9 96 b5 ff ff jmpq 418980 0.00 : 41d3ea: 4c 8b 79 f8 mov -0x8(%rcx),%r15 0.00 : 41d3ee: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41d3f5: 00 0.00 : 41d3f6: e9 85 b5 ff ff jmpq 418980 0.00 : 41d3fb: 48 8b 15 46 04 23 00 mov 0x230446(%rip),%rdx # 64d848 0.00 : 41d402: eb 9a jmp 41d39e 0.00 : 41d404: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41d40b: 00 0.00 : 41d40c: 4c 8b 3f mov (%rdi),%r15 0.00 : 41d40f: e9 6c b5 ff ff jmpq 418980 0.00 : 41d414: 45 31 ff xor %r15d,%r15d 0.00 : 41d417: e9 64 b5 ff ff jmpq 418980 0.00 : 41d41c: 8b 0d de 2e 23 00 mov 0x232ede(%rip),%ecx # 650300 0.00 : 41d422: 85 c9 test %ecx,%ecx 0.00 : 41d424: 74 42 je 41d468 0.00 : 41d426: 66 83 3d 9e 03 23 00 cmpw $0x0,0x23039e(%rip) # 64d7cc 0.00 : 41d42d: 00 0.00 : 41d42e: 75 38 jne 41d468 0.00 : 41d430: be 3c 02 00 00 mov $0x23c,%esi 0.00 : 41d435: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41d43a: 66 c7 05 89 03 23 00 movw $0x1,0x230389(%rip) # 64d7cc 0.00 : 41d441: 01 00 0.00 : 41d443: e8 00 3f ff ff callq 411348 0.00 : 41d448: 31 ff xor %edi,%edi 0.00 : 41d44a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d44f: be 78 ce 43 00 mov $0x43ce78,%esi 0.00 : 41d454: 4c 8b 3d 75 01 23 00 mov 0x230175(%rip),%r15 # 64d5d0 0.00 : 41d45b: e8 c0 9b fe ff callq 407020 0.00 : 41d460: 48 89 c7 mov %rax,%rdi 0.00 : 41d463: 31 c0 xor %eax,%eax 0.00 : 41d465: 41 ff d7 callq *%r15 0.00 : 41d468: 8b 15 8a 2e 23 00 mov 0x232e8a(%rip),%edx # 6502f8 0.00 : 41d46e: 85 d2 test %edx,%edx 0.00 : 41d470: 74 22 je 41d494 0.00 : 41d472: 31 ff xor %edi,%edi 0.00 : 41d474: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d479: be 78 ce 43 00 mov $0x43ce78,%esi 0.00 : 41d47e: 83 05 4b 2e 23 00 01 addl $0x1,0x232e4b(%rip) # 6502d0 0.00 : 41d485: e8 96 9b fe ff callq 407020 0.00 : 41d48a: 48 89 c7 mov %rax,%rdi 0.00 : 41d48d: 31 c0 xor %eax,%eax 0.00 : 41d48f: e8 e4 40 ff ff callq 411578 0.00 : 41d494: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41d49b: 00 0.00 : 41d49c: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41d4a1: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 41d4a5: be 01 00 00 00 mov $0x1,%esi 0.00 : 41d4aa: e8 61 af ff ff callq 418410 0.00 : 41d4af: bf 3b 00 00 00 mov $0x3b,%edi 0.00 : 41d4b4: 48 89 c5 mov %rax,%rbp 0.00 : 41d4b7: e8 04 97 ff ff callq 416bc0 0.00 : 41d4bc: 48 89 28 mov %rbp,(%rax) 0.00 : 41d4bf: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d4c6: 00 0.00 : 41d4c7: 49 89 c7 mov %rax,%r15 0.00 : 41d4ca: e9 b1 b4 ff ff jmpq 418980 0.00 : 41d4cf: 8b 05 2b 2e 23 00 mov 0x232e2b(%rip),%eax # 650300 0.00 : 41d4d5: 85 c0 test %eax,%eax 0.00 : 41d4d7: 75 68 jne 41d541 0.00 : 41d4d9: 44 8b 15 18 2e 23 00 mov 0x232e18(%rip),%r10d # 6502f8 0.00 : 41d4e0: 45 85 d2 test %r10d,%r10d 0.00 : 41d4e3: 74 22 je 41d507 0.00 : 41d4e5: 31 ff xor %edi,%edi 0.00 : 41d4e7: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d4ec: be 50 ce 43 00 mov $0x43ce50,%esi 0.00 : 41d4f1: 83 05 d8 2d 23 00 01 addl $0x1,0x232dd8(%rip) # 6502d0 0.00 : 41d4f8: e8 23 9b fe ff callq 407020 0.00 : 41d4fd: 48 89 c7 mov %rax,%rdi 0.00 : 41d500: 31 c0 xor %eax,%eax 0.00 : 41d502: e8 71 40 ff ff callq 411578 0.00 : 41d507: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41d50e: 00 0.00 : 41d50f: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41d514: be 01 00 00 00 mov $0x1,%esi 0.00 : 41d519: 49 8b 3b mov (%r11),%rdi 0.00 : 41d51c: e8 ef ae ff ff callq 418410 0.00 : 41d521: bf 3b 00 00 00 mov $0x3b,%edi 0.00 : 41d526: 49 89 c6 mov %rax,%r14 0.00 : 41d529: e8 92 96 ff ff callq 416bc0 0.00 : 41d52e: 4c 89 30 mov %r14,(%rax) 0.00 : 41d531: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d538: 00 0.00 : 41d539: 49 89 c7 mov %rax,%r15 0.00 : 41d53c: e9 3f b4 ff ff jmpq 418980 0.00 : 41d541: 66 83 3d 85 02 23 00 cmpw $0x0,0x230285(%rip) # 64d7ce 0.00 : 41d548: 00 0.00 : 41d549: 75 8e jne 41d4d9 0.00 : 41d54b: be 26 02 00 00 mov $0x226,%esi 0.00 : 41d550: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41d555: 66 c7 05 70 02 23 00 movw $0x1,0x230270(%rip) # 64d7ce 0.00 : 41d55c: 01 00 0.00 : 41d55e: e8 e5 3d ff ff callq 411348 0.00 : 41d563: 31 ff xor %edi,%edi 0.00 : 41d565: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d56a: be 50 ce 43 00 mov $0x43ce50,%esi 0.00 : 41d56f: 4c 8b 2d 5a 00 23 00 mov 0x23005a(%rip),%r13 # 64d5d0 0.00 : 41d576: e8 a5 9a fe ff callq 407020 0.00 : 41d57b: 48 89 c7 mov %rax,%rdi 0.00 : 41d57e: 31 c0 xor %eax,%eax 0.00 : 41d580: 41 ff d5 callq *%r13 0.00 : 41d583: e9 51 ff ff ff jmpq 41d4d9 0.00 : 41d588: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41d58f: 00 0.00 : 41d590: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41d595: be 01 00 00 00 mov $0x1,%esi 0.00 : 41d59a: 49 8b 79 e8 mov -0x18(%r9),%rdi 0.00 : 41d59e: 4d 8b 61 f8 mov -0x8(%r9),%r12 0.00 : 41d5a2: e8 69 ae ff ff callq 418410 0.00 : 41d5a7: bf 3b 00 00 00 mov $0x3b,%edi 0.00 : 41d5ac: 48 89 c3 mov %rax,%rbx 0.00 : 41d5af: e8 0c 96 ff ff callq 416bc0 0.00 : 41d5b4: 48 89 18 mov %rbx,(%rax) 0.00 : 41d5b7: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41d5bb: 49 89 c7 mov %rax,%r15 0.00 : 41d5be: e9 bd b3 ff ff jmpq 418980 0.00 : 41d5c3: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41d5ca: 00 0.00 : 41d5cb: bf 3a 00 00 00 mov $0x3a,%edi 0.00 : 41d5d0: 49 8b 59 f8 mov -0x8(%r9),%rbx 0.00 : 41d5d4: 48 85 db test %rbx,%rbx 0.00 : 41d5d7: 48 0f 44 1d 01 74 23 cmove 0x237401(%rip),%rbx # 6549e0 0.00 : 41d5de: 00 0.00 : 41d5df: e8 dc 95 ff ff callq 416bc0 0.00 : 41d5e4: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d5eb: 00 0.00 : 41d5ec: 49 89 c7 mov %rax,%r15 0.00 : 41d5ef: 48 89 18 mov %rbx,(%rax) 0.00 : 41d5f2: e9 89 b3 ff ff jmpq 418980 0.00 : 41d5f7: 8b 3d 63 02 23 00 mov 0x230263(%rip),%edi # 64d860 0.00 : 41d5fd: 85 ff test %edi,%edi 0.00 : 41d5ff: 0f 85 7b b3 ff ff jne 418980 0.00 : 41d605: 31 ff xor %edi,%edi 0.00 : 41d607: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d60c: be e0 cd 43 00 mov $0x43cde0,%esi 0.00 : 41d611: e8 0a 9a fe ff callq 407020 0.00 : 41d616: 48 89 c7 mov %rax,%rdi 0.00 : 41d619: 31 c0 xor %eax,%eax 0.00 : 41d61b: e8 70 8b ff ff callq 416190 0.00 : 41d620: e9 5b b3 ff ff jmpq 418980 0.00 : 41d625: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41d62c: 00 0.00 : 41d62d: bf 38 00 00 00 mov $0x38,%edi 0.00 : 41d632: 4c 8b 65 f8 mov -0x8(%rbp),%r12 0.00 : 41d636: e8 85 95 ff ff callq 416bc0 0.00 : 41d63b: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d642: 00 0.00 : 41d643: 49 89 c7 mov %rax,%r15 0.00 : 41d646: 4c 89 20 mov %r12,(%rax) 0.00 : 41d649: e9 32 b3 ff ff jmpq 418980 0.00 : 41d64e: 8b 0d a4 2c 23 00 mov 0x232ca4(%rip),%ecx # 6502f8 0.00 : 41d654: 85 c9 test %ecx,%ecx 0.00 : 41d656: 74 22 je 41d67a 0.00 : 41d658: 31 ff xor %edi,%edi 0.00 : 41d65a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d65f: be c0 cd 43 00 mov $0x43cdc0,%esi 0.00 : 41d664: 83 05 65 2c 23 00 01 addl $0x1,0x232c65(%rip) # 6502d0 0.00 : 41d66b: e8 b0 99 fe ff callq 407020 0.00 : 41d670: 48 89 c7 mov %rax,%rdi 0.00 : 41d673: 31 c0 xor %eax,%eax 0.00 : 41d675: e8 fe 3e ff ff callq 411578 0.00 : 41d67a: 8b 15 80 2c 23 00 mov 0x232c80(%rip),%edx # 650300 0.00 : 41d680: 85 d2 test %edx,%edx 0.00 : 41d682: 74 42 je 41d6c6 0.00 : 41d684: 66 83 3d 46 01 23 00 cmpw $0x0,0x230146(%rip) # 64d7d2 0.00 : 41d68b: 00 0.00 : 41d68c: 75 38 jne 41d6c6 0.00 : 41d68e: be dd 01 00 00 mov $0x1dd,%esi 0.00 : 41d693: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41d698: 66 c7 05 31 01 23 00 movw $0x1,0x230131(%rip) # 64d7d2 0.00 : 41d69f: 01 00 0.00 : 41d6a1: e8 a2 3c ff ff callq 411348 0.00 : 41d6a6: 31 ff xor %edi,%edi 0.00 : 41d6a8: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d6ad: be c0 cd 43 00 mov $0x43cdc0,%esi 0.00 : 41d6b2: 4c 8b 2d 17 ff 22 00 mov 0x22ff17(%rip),%r13 # 64d5d0 0.00 : 41d6b9: e8 62 99 fe ff callq 407020 0.00 : 41d6be: 48 89 c7 mov %rax,%rdi 0.00 : 41d6c1: 31 c0 xor %eax,%eax 0.00 : 41d6c3: 41 ff d5 callq *%r13 0.00 : 41d6c6: 44 8b 35 ef 00 23 00 mov 0x2300ef(%rip),%r14d # 64d7bc 0.00 : 41d6cd: 45 85 f6 test %r14d,%r14d 0.00 : 41d6d0: 74 43 je 41d715 0.00 : 41d6d2: 44 8b 05 df 00 23 00 mov 0x2300df(%rip),%r8d # 64d7b8 0.00 : 41d6d9: 83 05 f0 2b 23 00 01 addl $0x1,0x232bf0(%rip) # 6502d0 0.00 : 41d6e0: be 3c 33 44 00 mov $0x44333c,%esi 0.00 : 41d6e5: 41 bf bd c2 43 00 mov $0x43c2bd,%r15d 0.00 : 41d6eb: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d6f0: 45 85 c0 test %r8d,%r8d 0.00 : 41d6f3: 4c 0f 45 fe cmovne %rsi,%r15 0.00 : 41d6f7: be fe c2 43 00 mov $0x43c2fe,%esi 0.00 : 41d6fc: 31 ff xor %edi,%edi 0.00 : 41d6fe: e8 1d 99 fe ff callq 407020 0.00 : 41d703: 4c 89 fa mov %r15,%rdx 0.00 : 41d706: 48 89 c7 mov %rax,%rdi 0.00 : 41d709: be 45 6b 44 00 mov $0x446b45,%esi 0.00 : 41d70e: 31 c0 xor %eax,%eax 0.00 : 41d710: e8 63 3e ff ff callq 411578 0.00 : 41d715: bf 3f 00 00 00 mov $0x3f,%edi 0.00 : 41d71a: e8 a1 94 ff ff callq 416bc0 0.00 : 41d71f: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 41d726: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d72d: 00 0.00 : 41d72e: 49 89 c7 mov %rax,%r15 0.00 : 41d731: e9 4a b2 ff ff jmpq 418980 0.00 : 41d736: 8b 05 80 00 23 00 mov 0x230080(%rip),%eax # 64d7bc 0.00 : 41d73c: 85 c0 test %eax,%eax 0.00 : 41d73e: 75 63 jne 41d7a3 0.00 : 41d740: bf 37 00 00 00 mov $0x37,%edi 0.00 : 41d745: e8 76 94 ff ff callq 416bc0 0.00 : 41d74a: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 41d751: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d758: 00 0.00 : 41d759: 49 89 c7 mov %rax,%r15 0.00 : 41d75c: e9 1f b2 ff ff jmpq 418980 0.00 : 41d761: bf 33 00 00 00 mov $0x33,%edi 0.00 : 41d766: e8 55 94 ff ff callq 416bc0 0.00 : 41d76b: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 41d772: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d779: 00 0.00 : 41d77a: 49 89 c7 mov %rax,%r15 0.00 : 41d77d: e9 fe b1 ff ff jmpq 418980 0.00 : 41d782: bf 32 00 00 00 mov $0x32,%edi 0.00 : 41d787: e8 34 94 ff ff callq 416bc0 0.00 : 41d78c: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 41d793: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41d79a: 00 0.00 : 41d79b: 49 89 c7 mov %rax,%r15 0.00 : 41d79e: e9 dd b1 ff ff jmpq 418980 0.00 : 41d7a3: 44 8b 1d 0e 00 23 00 mov 0x23000e(%rip),%r11d # 64d7b8 0.00 : 41d7aa: 41 ba 3c 33 44 00 mov $0x44333c,%r10d 0.00 : 41d7b0: bb bd c2 43 00 mov $0x43c2bd,%ebx 0.00 : 41d7b5: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41d7ba: be fe c2 43 00 mov $0x43c2fe,%esi 0.00 : 41d7bf: 45 85 db test %r11d,%r11d 0.00 : 41d7c2: 49 0f 45 da cmovne %r10,%rbx 0.00 : 41d7c6: 31 ff xor %edi,%edi 0.00 : 41d7c8: e8 53 98 fe ff callq 407020 0.00 : 41d7cd: 48 89 da mov %rbx,%rdx 0.00 : 41d7d0: 48 89 c7 mov %rax,%rdi 0.00 : 41d7d3: be d5 6a 44 00 mov $0x446ad5,%esi 0.00 : 41d7d8: 31 c0 xor %eax,%eax 0.00 : 41d7da: e8 b1 89 ff ff callq 416190 0.00 : 41d7df: e9 5c ff ff ff jmpq 41d740 0.00 : 41d7e4: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41d7eb: 00 0.00 : 41d7ec: 31 f6 xor %esi,%esi 0.00 : 41d7ee: 49 8b 79 c0 mov -0x40(%r9),%rdi 0.00 : 41d7f2: 49 8b 51 e8 mov -0x18(%r9),%rdx 0.00 : 41d7f6: e8 a6 b0 fe ff callq 4088a1 0.00 : 41d7fb: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41d802: 00 0.00 : 41d803: 49 89 c4 mov %rax,%r12 0.00 : 41d806: 48 8b 2f mov (%rdi),%rbp 0.00 : 41d809: bf 30 00 00 00 mov $0x30,%edi 0.00 : 41d80e: e8 ad 93 ff ff callq 416bc0 0.00 : 41d813: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41d817: 49 89 c7 mov %rax,%r15 0.00 : 41d81a: 48 89 28 mov %rbp,(%rax) 0.00 : 41d81d: e9 5e b1 ff ff jmpq 418980 0.00 : 41d822: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41d829: 00 0.00 : 41d82a: 49 8b 70 d0 mov -0x30(%r8),%rsi 0.00 : 41d82e: 49 8b 78 b8 mov -0x48(%r8),%rdi 0.00 : 41d832: 49 8b 50 e8 mov -0x18(%r8),%rdx 0.00 : 41d836: e8 66 b0 fe ff callq 4088a1 0.00 : 41d83b: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41d842: 00 0.00 : 41d843: 49 89 c6 mov %rax,%r14 0.00 : 41d846: bf 30 00 00 00 mov $0x30,%edi 0.00 : 41d84b: 4c 8b 3e mov (%rsi),%r15 0.00 : 41d84e: e8 6d 93 ff ff callq 416bc0 0.00 : 41d853: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41d857: 4c 89 38 mov %r15,(%rax) 0.00 : 41d85a: 49 89 c7 mov %rax,%r15 0.00 : 41d85d: e9 1e b1 ff ff jmpq 418980 0.00 : 41d862: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 41d869: 00 0.00 : 41d86a: 4c 8b 23 mov (%rbx),%r12 0.00 : 41d86d: 4d 85 e4 test %r12,%r12 0.00 : 41d870: 0f 84 e2 00 00 00 je 41d958 0.00 : 41d876: 41 83 7c 24 38 3b cmpl $0x3b,0x38(%r12) 0.00 : 41d87c: 0f 84 90 00 00 00 je 41d912 0.00 : 41d882: 48 89 dd mov %rbx,%rbp 0.00 : 41d885: 48 8b 5b e8 mov -0x18(%rbx),%rbx 0.00 : 41d889: 48 83 ed 28 sub $0x28,%rbp 0.00 : 41d88d: 48 89 df mov %rbx,%rdi 0.00 : 41d890: ba 48 00 00 00 mov $0x48,%edx 0.00 : 41d895: be 01 00 00 00 mov $0x1,%esi 0.00 : 41d89a: e8 71 ab ff ff callq 418410 0.00 : 41d89f: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 41d8a3: 49 89 c5 mov %rax,%r13 0.00 : 41d8a6: ba 47 00 00 00 mov $0x47,%edx 0.00 : 41d8ab: be 01 00 00 00 mov $0x1,%esi 0.00 : 41d8b0: e8 5b ab ff ff callq 418410 0.00 : 41d8b5: 4c 89 ea mov %r13,%rdx 0.00 : 41d8b8: 48 89 c7 mov %rax,%rdi 0.00 : 41d8bb: 31 f6 xor %esi,%esi 0.00 : 41d8bd: e8 df af fe ff callq 4088a1 0.00 : 41d8c2: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41d8c9: 00 0.00 : 41d8ca: 48 89 c5 mov %rax,%rbp 0.00 : 41d8cd: bf 31 00 00 00 mov $0x31,%edi 0.00 : 41d8d2: 48 8b 1a mov (%rdx),%rbx 0.00 : 41d8d5: e8 e6 92 ff ff callq 416bc0 0.00 : 41d8da: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 41d8de: 49 89 c7 mov %rax,%r15 0.00 : 41d8e1: 48 89 18 mov %rbx,(%rax) 0.00 : 41d8e4: e9 97 b0 ff ff jmpq 418980 0.00 : 41d8e9: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41d8f0: 00 0.00 : 41d8f1: bf 39 00 00 00 mov $0x39,%edi 0.00 : 41d8f6: 48 8b 6e d8 mov -0x28(%rsi),%rbp 0.00 : 41d8fa: 4c 8b 6e f0 mov -0x10(%rsi),%r13 0.00 : 41d8fe: e8 bd 92 ff ff callq 416bc0 0.00 : 41d903: 49 89 c7 mov %rax,%r15 0.00 : 41d906: 4c 89 28 mov %r13,(%rax) 0.00 : 41d909: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 41d90d: e9 6e b0 ff ff jmpq 418980 0.00 : 41d912: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 41d917: 48 85 c0 test %rax,%rax 0.00 : 41d91a: 0f 84 15 01 00 00 je 41da35 0.00 : 41d920: 83 78 38 29 cmpl $0x29,0x38(%rax) 0.00 : 41d924: 0f 85 f2 00 00 00 jne 41da1c 0.00 : 41d92a: 4d 8b 2c 24 mov (%r12),%r13 0.00 : 41d92e: 48 8b 08 mov (%rax),%rcx 0.00 : 41d931: 41 8b 45 38 mov 0x38(%r13),%eax 0.00 : 41d935: 83 f8 46 cmp $0x46,%eax 0.00 : 41d938: 74 0e je 41d948 0.00 : 41d93a: 83 f8 48 cmp $0x48,%eax 0.00 : 41d93d: 74 09 je 41d948 0.00 : 41d93f: 83 f8 2a cmp $0x2a,%eax 0.00 : 41d942: 0f 85 a6 00 00 00 jne 41d9ee 0.00 : 41d948: 8b 51 38 mov 0x38(%rcx),%edx 0.00 : 41d94b: 8d 42 ba lea -0x46(%rdx),%eax 0.00 : 41d94e: 83 f8 01 cmp $0x1,%eax 0.00 : 41d951: 76 23 jbe 41d976 0.00 : 41d953: 83 fa 2a cmp $0x2a,%edx 0.00 : 41d956: 74 1e je 41d976 0.00 : 41d958: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41d95f: 00 0.00 : 41d960: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : 41d967: 00 0.00 : 41d968: 48 83 ed 28 sub $0x28,%rbp 0.00 : 41d96c: 49 8b 5c 24 e8 mov -0x18(%r12),%rbx 0.00 : 41d971: e9 17 ff ff ff jmpq 41d88d 0.00 : 41d976: 4c 8b 94 24 a8 00 00 mov 0xa8(%rsp),%r10 0.00 : 41d97d: 00 0.00 : 41d97e: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41d985: 00 0.00 : 41d986: 48 8b 71 18 mov 0x18(%rcx),%rsi 0.00 : 41d98a: 49 8b 7a d8 mov -0x28(%r10),%rdi 0.00 : 41d98e: 48 83 ed 28 sub $0x28,%rbp 0.00 : 41d992: e8 d9 96 fe ff callq 407070 0.00 : 41d997: 85 c0 test %eax,%eax 0.00 : 41d999: 75 70 jne 41da0b 0.00 : 41d99b: 4c 8b bc 24 a8 00 00 mov 0xa8(%rsp),%r15 0.00 : 41d9a2: 00 0.00 : 41d9a3: 49 8b 75 18 mov 0x18(%r13),%rsi 0.00 : 41d9a7: 49 8b 5f e8 mov -0x18(%r15),%rbx 0.00 : 41d9ab: 48 89 df mov %rbx,%rdi 0.00 : 41d9ae: e8 bd 96 fe ff callq 407070 0.00 : 41d9b3: 85 c0 test %eax,%eax 0.00 : 41d9b5: 0f 85 d2 fe ff ff jne 41d88d 0.00 : 41d9bb: 41 c7 44 24 38 3c 00 movl $0x3c,0x38(%r12) 0.00 : 41d9c2: 00 00 0.00 : 41d9c4: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41d9cb: 00 0.00 : 41d9cc: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 41d9d0: 4c 8b 39 mov (%rcx),%r15 0.00 : 41d9d3: e8 48 93 fe ff callq 406d20 0.00 : 41d9d8: 4c 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%r11 0.00 : 41d9df: 00 0.00 : 41d9e0: 49 8b 7b e8 mov -0x18(%r11),%rdi 0.00 : 41d9e4: e8 37 93 fe ff callq 406d20 0.00 : 41d9e9: e9 92 af ff ff jmpq 418980 0.00 : 41d9ee: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41d9f5: 00 0.00 : 41d9f6: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 41d9fd: 00 0.00 : 41d9fe: 48 83 ed 28 sub $0x28,%rbp 0.00 : 41da02: 49 8b 59 e8 mov -0x18(%r9),%rbx 0.00 : 41da06: e9 82 fe ff ff jmpq 41d88d 0.00 : 41da0b: 4c 8b b4 24 a8 00 00 mov 0xa8(%rsp),%r14 0.00 : 41da12: 00 0.00 : 41da13: 49 8b 5e e8 mov -0x18(%r14),%rbx 0.00 : 41da17: e9 71 fe ff ff jmpq 41d88d 0.00 : 41da1c: b9 90 03 44 00 mov $0x440390,%ecx 0.00 : 41da21: ba 9d 01 00 00 mov $0x19d,%edx 0.00 : 41da26: be 0f c0 43 00 mov $0x43c00f,%esi 0.00 : 41da2b: bf 70 cd 43 00 mov $0x43cd70,%edi 0.00 : 41da30: e8 eb 90 fe ff callq 406b20 <__assert_fail@plt> 0.00 : 41da35: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 41da3c: 00 0.00 : 41da3d: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41da44: 00 0.00 : 41da45: 48 83 ed 28 sub $0x28,%rbp 0.00 : 41da49: 49 8b 58 e8 mov -0x18(%r8),%rbx 0.00 : 41da4d: e9 3b fe ff ff jmpq 41d88d 0.00 : 41da52: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41da59: 00 0.00 : 41da5a: bf 2f 00 00 00 mov $0x2f,%edi 0.00 : 41da5f: 4c 8b 22 mov (%rdx),%r12 0.00 : 41da62: 48 8b 5a e8 mov -0x18(%rdx),%rbx 0.00 : 41da66: e8 55 91 ff ff callq 416bc0 0.00 : 41da6b: 49 89 c7 mov %rax,%r15 0.00 : 41da6e: 48 89 18 mov %rbx,(%rax) 0.00 : 41da71: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 41da75: e9 06 af ff ff jmpq 418980 0.00 : 41da7a: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41da81: 00 0.00 : 41da82: bf 2c 00 00 00 mov $0x2c,%edi 0.00 : 41da87: 4c 8b 79 d0 mov -0x30(%rcx),%r15 0.00 : 41da8b: 4c 8b 71 f0 mov -0x10(%rcx),%r14 0.00 : 41da8f: e8 2c 91 ff ff callq 416bc0 0.00 : 41da94: 4c 89 38 mov %r15,(%rax) 0.00 : 41da97: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 41da9b: 49 89 c7 mov %rax,%r15 0.00 : 41da9e: e9 dd ae ff ff jmpq 418980 0.00 : 41daa3: 45 31 ff xor %r15d,%r15d 0.00 : 41daa6: e9 d5 ae ff ff jmpq 418980 0.00 : 41daab: 45 31 ff xor %r15d,%r15d 0.00 : 41daae: e9 cd ae ff ff jmpq 418980 0.00 : 41dab3: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : 41daba: 00 0.00 : 41dabb: 48 8b 7e e0 mov -0x20(%rsi),%rdi 0.00 : 41dabf: e8 fc 83 ff ff callq 415ec0 0.00 : 41dac4: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41dacb: 00 0.00 : 41dacc: 66 81 48 3c 00 02 orw $0x200,0x3c(%rax) 0.00 : 41dad2: 48 8b 4a f0 mov -0x10(%rdx),%rcx 0.00 : 41dad6: 48 85 c9 test %rcx,%rcx 0.00 : 41dad9: 74 2e je 41db09 0.00 : 41dadb: 48 3b 05 6e fd 22 00 cmp 0x22fd6e(%rip),%rax # 64d850 0.00 : 41dae2: 0f 84 f9 00 00 00 je 41dbe1 0.00 : 41dae8: 48 89 05 61 fd 22 00 mov %rax,0x22fd61(%rip) # 64d850 0.00 : 41daef: 48 89 c2 mov %rax,%rdx 0.00 : 41daf2: 48 89 d6 mov %rdx,%rsi 0.00 : 41daf5: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 41daf9: 48 85 d2 test %rdx,%rdx 0.00 : 41dafc: 75 f4 jne 41daf2 0.00 : 41dafe: 48 89 4e 08 mov %rcx,0x8(%rsi) 0.00 : 41db02: 48 89 0d 3f fd 22 00 mov %rcx,0x22fd3f(%rip) # 64d848 0.00 : 41db09: c7 05 4d fd 22 00 01 movl $0x1,0x22fd4d(%rip) # 64d860 0.00 : 41db10: 00 00 00 0.00 : 41db13: 48 8b 38 mov (%rax),%rdi 0.00 : 41db16: 49 89 c7 mov %rax,%r15 0.00 : 41db19: 48 89 7c 24 78 mov %rdi,0x78(%rsp) 0.00 : 41db1e: 0f bf 50 20 movswl 0x20(%rax),%edx 0.00 : 41db22: 85 d2 test %edx,%edx 0.00 : 41db24: 89 54 24 74 mov %edx,0x74(%rsp) 0.00 : 41db28: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 41db2c: 0f 84 4e ae ff ff je 418980 0.00 : 41db32: 48 85 db test %rbx,%rbx 0.00 : 41db35: 0f 84 3e 01 00 00 je 41dc79 0.00 : 41db3b: 4c 63 f2 movslq %edx,%r14 0.00 : 41db3e: 4e 8d 24 f5 00 00 00 lea 0x0(,%r14,8),%r12 0.00 : 41db45: 00 0.00 : 41db46: 4c 89 e7 mov %r12,%rdi 0.00 : 41db49: e8 52 90 fe ff callq 406ba0 0.00 : 41db4e: 48 85 c0 test %rax,%rax 0.00 : 41db51: 48 89 c5 mov %rax,%rbp 0.00 : 41db54: 0f 84 2b 01 00 00 je 41dc85 0.00 : 41db5a: 48 8b 13 mov (%rbx),%rdx 0.00 : 41db5d: 48 85 d2 test %rdx,%rdx 0.00 : 41db60: 0f 84 0b 01 00 00 je 41dc71 0.00 : 41db66: 48 89 10 mov %rdx,(%rax) 0.00 : 41db69: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 41db6d: 48 83 c0 08 add $0x8,%rax 0.00 : 41db71: 48 85 db test %rbx,%rbx 0.00 : 41db74: 75 e4 jne 41db5a 0.00 : 41db76: 83 7c 24 74 01 cmpl $0x1,0x74(%rsp) 0.00 : 41db7b: 7f 70 jg 41dbed 0.00 : 41db7d: 48 89 ef mov %rbp,%rdi 0.00 : 41db80: e8 9b 91 fe ff callq 406d20 0.00 : 41db85: e9 f6 ad ff ff jmpq 418980 0.00 : 41db8a: 4c 8b 2d 1f fc 22 00 mov 0x22fc1f(%rip),%r13 # 64d7b0 0.00 : 41db91: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41db96: be 78 cc 43 00 mov $0x43cc78,%esi 0.00 : 41db9b: 31 ff xor %edi,%edi 0.00 : 41db9d: 41 bf 20 d5 64 00 mov $0x64d520,%r15d 0.00 : 41dba3: e8 78 94 fe ff callq 407020 0.00 : 41dba8: 4c 89 ee mov %r13,%rsi 0.00 : 41dbab: 48 89 c7 mov %rax,%rdi 0.00 : 41dbae: 31 c0 xor %eax,%eax 0.00 : 41dbb0: e8 db 85 ff ff callq 416190 0.00 : 41dbb5: 83 05 14 27 23 00 01 addl $0x1,0x232714(%rip) # 6502d0 0.00 : 41dbbc: e9 bf ad ff ff jmpq 418980 0.00 : 41dbc1: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : 41dbc8: 00 0.00 : 41dbc9: 4d 8b 3c 24 mov (%r12),%r15 0.00 : 41dbcd: e9 ae ad ff ff jmpq 418980 0.00 : 41dbd2: c7 05 ac fc 22 00 00 movl $0x0,0x22fcac(%rip) # 64d888 0.00 : 41dbd9: 00 00 00 0.00 : 41dbdc: e9 9f ad ff ff jmpq 418980 0.00 : 41dbe1: 48 8b 15 60 fc 22 00 mov 0x22fc60(%rip),%rdx # 64d848 0.00 : 41dbe8: e9 05 ff ff ff jmpq 41daf2 0.00 : 41dbed: 49 89 ec mov %rbp,%r12 0.00 : 41dbf0: c7 44 24 6c 00 00 00 movl $0x0,0x6c(%rsp) 0.00 : 41dbf7: 00 0.00 : 41dbf8: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 41dbfe: 41 8d 5e 01 lea 0x1(%r14),%ebx 0.00 : 41dc02: 49 89 ed mov %rbp,%r13 0.00 : 41dc05: 89 5c 24 70 mov %ebx,0x70(%rsp) 0.00 : 41dc09: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 41dc0e: 4d 8b 45 00 mov 0x0(%r13),%r8 0.00 : 41dc12: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 41dc17: 4c 89 84 24 80 00 00 mov %r8,0x80(%rsp) 0.00 : 41dc1e: 00 0.00 : 41dc1f: 4c 89 c6 mov %r8,%rsi 0.00 : 41dc22: e8 49 94 fe ff callq 407070 0.00 : 41dc27: 85 c0 test %eax,%eax 0.00 : 41dc29: 89 9c 24 8c 00 00 00 mov %ebx,0x8c(%rsp) 0.00 : 41dc30: 0f 84 98 00 00 00 je 41dcce 0.00 : 41dc36: 49 83 c5 08 add $0x8,%r13 0.00 : 41dc3a: 83 c3 01 add $0x1,%ebx 0.00 : 41dc3d: 44 39 b4 24 8c 00 00 cmp %r14d,0x8c(%rsp) 0.00 : 41dc44: 00 0.00 : 41dc45: 7c c7 jl 41dc0e 0.00 : 41dc47: 49 83 c4 08 add $0x8,%r12 0.00 : 41dc4b: 44 8b 4c 24 74 mov 0x74(%rsp),%r9d 0.00 : 41dc50: 44 39 4c 24 70 cmp %r9d,0x70(%rsp) 0.00 : 41dc55: 0f 8c b3 00 00 00 jl 41dd0e 0.00 : 41dc5b: 48 89 ef mov %rbp,%rdi 0.00 : 41dc5e: e8 bd 90 fe ff callq 406d20 0.00 : 41dc63: 8b 44 24 6c mov 0x6c(%rsp),%eax 0.00 : 41dc67: 85 c0 test %eax,%eax 0.00 : 41dc69: 0f 84 11 ad ff ff je 418980 0.00 : 41dc6f: eb 08 jmp 41dc79 0.00 : 41dc71: 48 89 ef mov %rbp,%rdi 0.00 : 41dc74: e8 a7 90 fe ff callq 406d20 0.00 : 41dc79: 83 05 50 26 23 00 01 addl $0x1,0x232650(%rip) # 6502d0 0.00 : 41dc80: e9 fb ac ff ff jmpq 418980 0.00 : 41dc85: be 19 0a 00 00 mov $0xa19,%esi 0.00 : 41dc8a: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41dc8f: e8 b4 36 ff ff callq 411348 0.00 : 41dc94: e8 57 93 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41dc99: 8b 38 mov (%rax),%edi 0.00 : 41dc9b: e8 20 92 fe ff callq 406ec0 0.00 : 41dca0: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41dca5: 49 89 c7 mov %rax,%r15 0.00 : 41dca8: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41dcad: 31 ff xor %edi,%edi 0.00 : 41dcaf: e8 6c 93 fe ff callq 407020 0.00 : 41dcb4: 4d 89 f8 mov %r15,%r8 0.00 : 41dcb7: 48 89 c7 mov %rax,%rdi 0.00 : 41dcba: 4c 89 e1 mov %r12,%rcx 0.00 : 41dcbd: ba 4b 2b 44 00 mov $0x442b4b,%edx 0.00 : 41dcc2: be d7 c2 43 00 mov $0x43c2d7,%esi 0.00 : 41dcc7: 31 c0 xor %eax,%eax 0.00 : 41dcc9: e8 fc 37 ff ff callq 4114ca 0.00 : 41dcce: 31 ff xor %edi,%edi 0.00 : 41dcd0: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41dcd5: be b0 cc 43 00 mov $0x43ccb0,%esi 0.00 : 41dcda: 83 44 24 6c 01 addl $0x1,0x6c(%rsp) 0.00 : 41dcdf: 89 9c 24 8c 00 00 00 mov %ebx,0x8c(%rsp) 0.00 : 41dce6: e8 35 93 fe ff callq 407020 0.00 : 41dceb: 48 8b 8c 24 80 00 00 mov 0x80(%rsp),%rcx 0.00 : 41dcf2: 00 0.00 : 41dcf3: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 41dcf7: 48 89 c7 mov %rax,%rdi 0.00 : 41dcfa: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 41dcff: 41 89 d8 mov %ebx,%r8d 0.00 : 41dd02: 31 c0 xor %eax,%eax 0.00 : 41dd04: e8 6f 38 ff ff callq 411578 0.00 : 41dd09: e9 28 ff ff ff jmpq 41dc36 0.00 : 41dd0e: 44 8b 74 24 70 mov 0x70(%rsp),%r14d 0.00 : 41dd13: e9 e6 fe ff ff jmpq 41dbfe 0.00 : 41dd18: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 41dd1f: 00 0.00 : 41dd20: 4c 8b 39 mov (%rcx),%r15 0.00 : 41dd23: e9 58 ac ff ff jmpq 418980 0.00 : 41dd28: 44 8b 15 d5 25 23 00 mov 0x2325d5(%rip),%r10d # 650304 0.00 : 41dd2f: 45 85 d2 test %r10d,%r10d 0.00 : 41dd32: 0f 85 a7 00 00 00 jne 41dddf 0.00 : 41dd38: 31 f6 xor %esi,%esi 0.00 : 41dd3a: bf e0 02 65 00 mov $0x6502e0,%edi 0.00 : 41dd3f: c7 05 6f fa 22 00 01 movl $0x1,0x22fa6f(%rip) # 64d7b8 0.00 : 41dd46: 00 00 00 0.00 : 41dd49: c7 05 69 fa 22 00 01 movl $0x1,0x22fa69(%rip) # 64d7bc 0.00 : 41dd50: 00 00 00 0.00 : 41dd53: e8 b8 80 ff ff callq 415e10 0.00 : 41dd58: 49 89 c7 mov %rax,%r15 0.00 : 41dd5b: e9 20 ac ff ff jmpq 418980 0.00 : 41dd60: 48 8b 2d 19 26 23 00 mov 0x232619(%rip),%rbp # 650380 0.00 : 41dd67: 48 85 ed test %rbp,%rbp 0.00 : 41dd6a: 0f 84 a7 00 00 00 je 41de17 0.00 : 41dd70: 4c 8b 75 00 mov 0x0(%rbp),%r14 0.00 : 41dd74: 4c 89 35 05 26 23 00 mov %r14,0x232605(%rip) # 650380 0.00 : 41dd7b: 4c 8b 84 24 a8 00 00 mov 0xa8(%rsp),%r8 0.00 : 41dd82: 00 0.00 : 41dd83: c7 45 38 4b 00 00 00 movl $0x4b,0x38(%rbp) 0.00 : 41dd8a: bf 06 00 00 00 mov $0x6,%edi 0.00 : 41dd8f: 4d 8b 38 mov (%r8),%r15 0.00 : 41dd92: 49 8b 58 f0 mov -0x10(%r8),%rbx 0.00 : 41dd96: e8 25 8e ff ff callq 416bc0 0.00 : 41dd9b: 48 89 ee mov %rbp,%rsi 0.00 : 41dd9e: bf 90 4a 65 00 mov $0x654a90,%edi 0.00 : 41dda3: 4c 89 78 08 mov %r15,0x8(%rax) 0.00 : 41dda7: 48 89 18 mov %rbx,(%rax) 0.00 : 41ddaa: c7 45 08 00 00 00 00 movl $0x0,0x8(%rbp) 0.00 : 41ddb1: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 41ddb5: e8 56 80 ff ff callq 415e10 0.00 : 41ddba: 49 89 c7 mov %rax,%r15 0.00 : 41ddbd: e9 be ab ff ff jmpq 418980 0.00 : 41ddc2: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 41ddc9: 00 0.00 : 41ddca: 48 8b 37 mov (%rdi),%rsi 0.00 : 41ddcd: bf 90 4a 65 00 mov $0x654a90,%edi 0.00 : 41ddd2: e8 39 80 ff ff callq 415e10 0.00 : 41ddd7: 49 89 c7 mov %rax,%r15 0.00 : 41ddda: e9 a1 ab ff ff jmpq 418980 0.00 : 41dddf: 8b 2d ef f9 22 00 mov 0x22f9ef(%rip),%ebp # 64d7d4 0.00 : 41dde5: 83 c5 01 add $0x1,%ebp 0.00 : 41dde8: 83 fd 02 cmp $0x2,%ebp 0.00 : 41ddeb: 89 2d e3 f9 22 00 mov %ebp,0x22f9e3(%rip) # 64d7d4 0.00 : 41ddf1: 0f 85 41 ff ff ff jne 41dd38 0.00 : 41ddf7: 31 ff xor %edi,%edi 0.00 : 41ddf9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41ddfe: be 38 cc 43 00 mov $0x43cc38,%esi 0.00 : 41de03: e8 18 92 fe ff callq 407020 0.00 : 41de08: 48 89 c7 mov %rax,%rdi 0.00 : 41de0b: 31 c0 xor %eax,%eax 0.00 : 41de0d: e8 15 38 ff ff callq 411627 0.00 : 41de12: e9 21 ff ff ff jmpq 41dd38 0.00 : 41de17: e8 e4 6c 01 00 callq 434b00 0.00 : 41de1c: 48 89 c5 mov %rax,%rbp 0.00 : 41de1f: 90 nop 0.00 : 41de20: e9 56 ff ff ff jmpq 41dd7b 0.00 : 41de25: 31 f6 xor %esi,%esi 0.00 : 41de27: bf 90 4a 65 00 mov $0x654a90,%edi 0.00 : 41de2c: e8 df 7f ff ff callq 415e10 0.00 : 41de31: 49 89 c7 mov %rax,%r15 0.00 : 41de34: e9 47 ab ff ff jmpq 418980 0.00 : 41de39: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx 0.00 : 41de40: 00 0.00 : 41de41: c7 05 15 fa 22 00 00 movl $0x0,0x22fa15(%rip) # 64d860 0.00 : 41de48: 00 00 00 0.00 : 41de4b: 4c 8b 62 f8 mov -0x8(%rdx),%r12 0.00 : 41de4f: 4d 85 e4 test %r12,%r12 0.00 : 41de52: 0f 84 1b ab ff ff je 418973 0.00 : 41de58: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.00 : 41de5d: 4c 8b 2a mov (%rdx),%r13 0.00 : 41de60: 48 85 db test %rbx,%rbx 0.00 : 41de63: 74 30 je 41de95 0.00 : 41de65: 48 8b 2b mov (%rbx),%rbp 0.00 : 41de68: 49 8b 34 24 mov (%r12),%rsi 0.00 : 41de6c: 48 89 ef mov %rbp,%rdi 0.00 : 41de6f: e8 fc 91 fe ff callq 407070 0.00 : 41de74: 85 c0 test %eax,%eax 0.00 : 41de76: 0f 84 6f 01 00 00 je 41dfeb 0.00 : 41de7c: 48 89 ef mov %rbp,%rdi 0.00 : 41de7f: e8 4c 56 01 00 callq 4334d0 0.00 : 41de84: 85 c0 test %eax,%eax 0.00 : 41de86: 0f 85 90 01 00 00 jne 41e01c 0.00 : 41de8c: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 41de90: 48 85 db test %rbx,%rbx 0.00 : 41de93: 75 d0 jne 41de65 0.00 : 41de95: 31 f6 xor %esi,%esi 0.00 : 41de97: 4c 89 e7 mov %r12,%rdi 0.00 : 41de9a: e8 61 7e ff ff callq 415d00 0.00 : 41de9f: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 41dea3: e8 88 87 ff ff callq 416630 0.00 : 41dea8: 48 85 c0 test %rax,%rax 0.00 : 41deab: 0f 85 43 02 00 00 jne 41e0f4 0.00 : 41deb1: 49 81 3c 24 20 d5 64 cmpq $0x64d520,(%r12) 0.00 : 41deb8: 00 0.00 : 41deb9: 0f 84 01 02 00 00 je 41e0c0 0.00 : 41debf: bf 4d 00 00 00 mov $0x4d,%edi 0.00 : 41dec4: e8 f7 8c ff ff callq 416bc0 0.00 : 41dec9: 48 89 44 24 60 mov %rax,0x60(%rsp) 0.00 : 41dece: 4c 89 20 mov %r12,(%rax) 0.00 : 41ded1: 48 89 c6 mov %rax,%rsi 0.00 : 41ded4: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 41ded8: 4c 89 68 08 mov %r13,0x8(%rax) 0.00 : 41dedc: e8 ff 8b ff ff callq 416ae0 0.00 : 41dee1: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.00 : 41dee6: 48 85 db test %rbx,%rbx 0.00 : 41dee9: 0f 84 b1 01 00 00 je 41e0a0 0.00 : 41deef: 48 c7 44 24 58 00 00 movq $0x0,0x58(%rsp) 0.00 : 41def6: 00 00 0.00 : 41def8: 31 ed xor %ebp,%ebp 0.00 : 41defa: 48 83 44 24 58 01 addq $0x1,0x58(%rsp) 0.00 : 41df00: 48 8b 3b mov (%rbx),%rdi 0.00 : 41df03: e8 28 8e fe ff callq 406d30 0.00 : 41df08: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 41df0c: 48 8d 6c 05 01 lea 0x1(%rbp,%rax,1),%rbp 0.00 : 41df11: 48 85 db test %rbx,%rbx 0.00 : 41df14: 75 e4 jne 41defa 0.00 : 41df16: 48 83 7c 24 58 00 cmpq $0x0,0x58(%rsp) 0.00 : 41df1c: 0f 84 7e 01 00 00 je 41e0a0 0.00 : 41df22: 48 89 ef mov %rbp,%rdi 0.00 : 41df25: e8 76 8c fe ff callq 406ba0 0.00 : 41df2a: 48 85 c0 test %rax,%rax 0.00 : 41df2d: 49 89 c5 mov %rax,%r13 0.00 : 41df30: 0f 84 29 02 00 00 je 41e15f 0.00 : 41df36: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 41df3b: 48 c1 e5 03 shl $0x3,%rbp 0.00 : 41df3f: 48 89 ef mov %rbp,%rdi 0.00 : 41df42: e8 59 8c fe ff callq 406ba0 0.00 : 41df47: 48 85 c0 test %rax,%rax 0.00 : 41df4a: 49 89 c6 mov %rax,%r14 0.00 : 41df4d: 0f 84 c3 01 00 00 je 41e116 0.00 : 41df53: 49 8b 6c 24 08 mov 0x8(%r12),%rbp 0.00 : 41df58: 31 c0 xor %eax,%eax 0.00 : 41df5a: 31 db xor %ebx,%ebx 0.00 : 41df5c: 4d 89 2c c6 mov %r13,(%r14,%rax,8) 0.00 : 41df60: 48 8b 75 00 mov 0x0(%rbp),%rsi 0.00 : 41df64: 4c 89 ef mov %r13,%rdi 0.00 : 41df67: 48 83 c3 01 add $0x1,%rbx 0.00 : 41df6b: e8 30 91 fe ff callq 4070a0 0.00 : 41df70: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 41df74: e8 b7 8d fe ff callq 406d30 0.00 : 41df79: 48 3b 5c 24 58 cmp 0x58(%rsp),%rbx 0.00 : 41df7e: 4d 8d 6c 05 01 lea 0x1(%r13,%rax,1),%r13 0.00 : 41df83: 48 8b 6d 08 mov 0x8(%rbp),%rbp 0.00 : 41df87: 48 89 d8 mov %rbx,%rax 0.00 : 41df8a: 72 d0 jb 41df5c 0.00 : 41df8c: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 41df91: 4c 89 72 10 mov %r14,0x10(%rdx) 0.00 : 41df95: e9 13 01 00 00 jmpq 41e0ad 0.00 : 41df9a: 48 8b 84 24 a8 00 00 mov 0xa8(%rsp),%rax 0.00 : 41dfa1: 00 0.00 : 41dfa2: 48 8b 58 f8 mov -0x8(%rax),%rbx 0.00 : 41dfa6: 48 83 3b 00 cmpq $0x0,(%rbx) 0.00 : 41dfaa: 0f 84 a3 00 00 00 je 41e053 0.00 : 41dfb0: bf 35 00 00 00 mov $0x35,%edi 0.00 : 41dfb5: e8 06 8c ff ff callq 416bc0 0.00 : 41dfba: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 41dfc1: 00 0.00 : 41dfc2: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 41dfc9: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 41dfcd: e9 ae a9 ff ff jmpq 418980 0.00 : 41dfd2: c7 05 dc f7 22 00 00 movl $0x0,0x22f7dc(%rip) # 64d7b8 0.00 : 41dfd9: 00 00 00 0.00 : 41dfdc: c7 05 d6 f7 22 00 00 movl $0x0,0x22f7d6(%rip) # 64d7bc 0.00 : 41dfe3: 00 00 00 0.00 : 41dfe6: e9 95 a9 ff ff jmpq 418980 0.00 : 41dfeb: be b9 0b 00 00 mov $0xbb9,%esi 0.00 : 41dff0: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41dff5: e8 4e 33 ff ff callq 411348 0.00 : 41dffa: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 41dffe: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41e003: be 88 cb 43 00 mov $0x43cb88,%esi 0.00 : 41e008: 31 ff xor %edi,%edi 0.00 : 41e00a: e8 11 90 fe ff callq 407020 0.00 : 41e00f: 48 89 de mov %rbx,%rsi 0.00 : 41e012: 48 89 c7 mov %rax,%rdi 0.00 : 41e015: 31 c0 xor %eax,%eax 0.00 : 41e017: e8 ae 34 ff ff callq 4114ca 0.00 : 41e01c: be bc 0b 00 00 mov $0xbbc,%esi 0.00 : 41e021: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41e026: e8 1d 33 ff ff callq 411348 0.00 : 41e02b: 48 8b 1b mov (%rbx),%rbx 0.00 : 41e02e: 4d 8b 3c 24 mov (%r12),%r15 0.00 : 41e032: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41e037: be c8 cb 43 00 mov $0x43cbc8,%esi 0.00 : 41e03c: 31 ff xor %edi,%edi 0.00 : 41e03e: e8 dd 8f fe ff callq 407020 0.00 : 41e043: 48 89 da mov %rbx,%rdx 0.00 : 41e046: 48 89 c7 mov %rax,%rdi 0.00 : 41e049: 4c 89 fe mov %r15,%rsi 0.00 : 41e04c: 31 c0 xor %eax,%eax 0.00 : 41e04e: e8 77 34 ff ff callq 4114ca 0.00 : 41e053: 44 8b 15 62 f7 22 00 mov 0x22f762(%rip),%r10d # 64d7bc 0.00 : 41e05a: 45 85 d2 test %r10d,%r10d 0.00 : 41e05d: 74 78 je 41e0d7 0.00 : 41e05f: 8b 0d 53 f7 22 00 mov 0x22f753(%rip),%ecx # 64d7b8 0.00 : 41e065: 41 bb 3c 33 44 00 mov $0x44333c,%r11d 0.00 : 41e06b: bd bd c2 43 00 mov $0x43c2bd,%ebp 0.00 : 41e070: be 30 cb 43 00 mov $0x43cb30,%esi 0.00 : 41e075: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41e07a: 85 c9 test %ecx,%ecx 0.00 : 41e07c: 49 0f 45 eb cmovne %r11,%rbp 0.00 : 41e080: 31 ff xor %edi,%edi 0.00 : 41e082: e8 99 8f fe ff callq 407020 0.00 : 41e087: 48 89 ee mov %rbp,%rsi 0.00 : 41e08a: 48 89 c7 mov %rax,%rdi 0.00 : 41e08d: 31 c0 xor %eax,%eax 0.00 : 41e08f: e8 42 36 ff ff callq 4116d6 0.00 : 41e094: 83 05 35 22 23 00 01 addl $0x1,0x232235(%rip) # 6502d0 0.00 : 41e09b: e9 e0 a8 ff ff jmpq 418980 0.00 : 41e0a0: 48 8b 74 24 60 mov 0x60(%rsp),%rsi 0.00 : 41e0a5: 48 c7 46 10 00 00 00 movq $0x0,0x10(%rsi) 0.00 : 41e0ac: 00 0.00 : 41e0ad: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 41e0b1: 31 f6 xor %esi,%esi 0.00 : 41e0b3: e8 58 7f ff ff callq 416010 0.00 : 41e0b8: 48 83 05 d8 f7 22 00 addq $0x1,0x22f7d8(%rip) # 64d898 0.00 : 41e0bf: 01 0.00 : 41e0c0: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 41e0c5: e8 16 7d ff ff callq 415de0 0.00 : 41e0ca: c7 44 24 44 00 00 00 movl $0x0,0x44(%rsp) 0.00 : 41e0d1: 00 0.00 : 41e0d2: e9 a9 a8 ff ff jmpq 418980 0.00 : 41e0d7: 31 ff xor %edi,%edi 0.00 : 41e0d9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41e0de: be 58 cb 43 00 mov $0x43cb58,%esi 0.00 : 41e0e3: e8 38 8f fe ff callq 407020 0.00 : 41e0e8: 48 89 c7 mov %rax,%rdi 0.00 : 41e0eb: 31 c0 xor %eax,%eax 0.00 : 41e0ed: e8 e4 35 ff ff callq 4116d6 0.00 : 41e0f2: eb a0 jmp 41e094 0.00 : 41e0f4: be c6 0b 00 00 mov $0xbc6,%esi 0.00 : 41e0f9: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41e0fe: e8 45 32 ff ff callq 411348 0.00 : 41e103: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 41e107: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41e10c: be 10 cc 43 00 mov $0x43cc10,%esi 0.00 : 41e111: e9 f2 fe ff ff jmpq 41e008 0.00 : 41e116: be d7 0b 00 00 mov $0xbd7,%esi 0.00 : 41e11b: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41e120: e8 23 32 ff ff callq 411348 0.00 : 41e125: e8 c6 8e fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41e12a: 8b 38 mov (%rax),%edi 0.00 : 41e12c: e8 8f 8d fe ff callq 406ec0 0.00 : 41e131: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41e136: 49 89 c5 mov %rax,%r13 0.00 : 41e139: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41e13e: 31 ff xor %edi,%edi 0.00 : 41e140: e8 db 8e fe ff callq 407020 0.00 : 41e145: 4d 89 e8 mov %r13,%r8 0.00 : 41e148: 48 89 c7 mov %rax,%rdi 0.00 : 41e14b: 48 89 e9 mov %rbp,%rcx 0.00 : 41e14e: ba d0 c2 43 00 mov $0x43c2d0,%edx 0.00 : 41e153: be c3 c2 43 00 mov $0x43c2c3,%esi 0.00 : 41e158: 31 c0 xor %eax,%eax 0.00 : 41e15a: e8 6b 33 ff ff callq 4114ca 0.00 : 41e15f: be d6 0b 00 00 mov $0xbd6,%esi 0.00 : 41e164: bf 0f c0 43 00 mov $0x43c00f,%edi 0.00 : 41e169: e8 da 31 ff ff callq 411348 0.00 : 41e16e: e8 7d 8e fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41e173: 8b 38 mov (%rax),%edi 0.00 : 41e175: e8 46 8d fe ff callq 406ec0 0.00 : 41e17a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41e17f: 49 89 c4 mov %rax,%r12 0.00 : 41e182: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41e187: 31 ff xor %edi,%edi 0.00 : 41e189: e8 92 8e fe ff callq 407020 0.00 : 41e18e: 4d 89 e0 mov %r12,%r8 0.00 : 41e191: 48 89 c7 mov %rax,%rdi 0.00 : 41e194: 48 89 e9 mov %rbp,%rcx 0.00 : 41e197: ba 4b 2b 44 00 mov $0x442b4b,%edx 0.00 : 41e19c: be c3 c2 43 00 mov $0x43c2c3,%esi 0.00 : 41e1a1: 31 c0 xor %eax,%eax 0.00 : 41e1a3: e8 22 33 ff ff callq 4114ca Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:612 40.91 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:613 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:611 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:612 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006993f0 : : /* : * smgrprefetch() -- Initiate asynchronous read of the specified block of a relation. : */ : void : smgrprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum) : { 0.00 : 6993f0: 55 push %rbp : (*(smgrsw[reln->smgr_which].smgr_prefetch)) (reln, forknum, blocknum); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:612 40.91 : 6993f1: 48 63 47 24 movslq 0x24(%rdi),%rax : /* : * smgrprefetch() -- Initiate asynchronous read of the specified block of a relation. : */ : void : smgrprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:611 9.09 : 6993f5: 48 89 e5 mov %rsp,%rbp : (*(smgrsw[reln->smgr_which].smgr_prefetch)) (reln, forknum, blocknum); 0.00 : 6993f8: 48 c1 e0 07 shl $0x7,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:612 9.09 : 6993fc: 4c 8b 98 98 e4 8a 00 mov 0x8ae498(%rax),%r11 : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:613 40.91 : 699403: c9 leaveq : * smgrprefetch() -- Initiate asynchronous read of the specified block of a relation. : */ : void : smgrprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum) : { : (*(smgrsw[reln->smgr_which].smgr_prefetch)) (reln, forknum, blocknum); 0.00 : 699404: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 57.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:55 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:52 9.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:52 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000784f60 : : /* : * tag_hash: hash function for fixed-size tag values : */ : uint32 : tag_hash(const void *key, Size keysize) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:52 9.52 : 784f60: 55 push %rbp 33.33 : 784f61: 48 89 e5 mov %rsp,%rbp : return DatumGetUInt32(hash_any((const unsigned char *) key, 0.00 : 784f64: e8 e7 b3 d0 ff callq 490350 : (int) keysize)); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:55 57.14 : 784f69: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 6.25 ??:0 6.25 ??:0 6.25 ??:0 6.25 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000043cd0 <_itoa_word>: 0.00 : 43cd0: 4c 8d 05 69 0c 0f 00 lea 0xf0c69(%rip),%r8 # 134940 <_itoa_lower_digits> ??:0 6.25 : 43cd7: 48 8d 05 a2 0c 0f 00 lea 0xf0ca2(%rip),%rax # 134980 <_itoa_upper_digits> 0.00 : 43cde: 85 c9 test %ecx,%ecx 0.00 : 43ce0: 4c 0f 45 c0 cmovne %rax,%r8 0.00 : 43ce4: 83 fa 0a cmp $0xa,%edx 0.00 : 43ce7: 74 7f je 43d68 <_itoa_word+0x98> 0.00 : 43ce9: 83 fa 10 cmp $0x10,%edx 0.00 : 43cec: 74 3a je 43d28 <_itoa_word+0x58> 0.00 : 43cee: 83 fa 08 cmp $0x8,%edx 0.00 : 43cf1: 41 89 d1 mov %edx,%r9d 0.00 : 43cf4: 74 52 je 43d48 <_itoa_word+0x78> 0.00 : 43cf6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43cfd: 00 00 00 0.00 : 43d00: 48 89 f8 mov %rdi,%rax 0.00 : 43d03: 31 d2 xor %edx,%edx 0.00 : 43d05: 48 83 ee 01 sub $0x1,%rsi 0.00 : 43d09: 49 f7 f1 div %r9 0.00 : 43d0c: 48 89 c1 mov %rax,%rcx 0.00 : 43d0f: 41 0f b6 04 10 movzbl (%r8,%rdx,1),%eax 0.00 : 43d14: 48 85 c9 test %rcx,%rcx 0.00 : 43d17: 48 89 cf mov %rcx,%rdi 0.00 : 43d1a: 88 06 mov %al,(%rsi) 0.00 : 43d1c: 75 e2 jne 43d00 <_itoa_word+0x30> 0.00 : 43d1e: 48 89 f0 mov %rsi,%rax 0.00 : 43d21: c3 retq 0.00 : 43d22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43d28: 48 89 f8 mov %rdi,%rax 0.00 : 43d2b: 48 c1 ef 04 shr $0x4,%rdi 0.00 : 43d2f: 48 83 ee 01 sub $0x1,%rsi 0.00 : 43d33: 83 e0 0f and $0xf,%eax 0.00 : 43d36: 48 85 ff test %rdi,%rdi 0.00 : 43d39: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax 0.00 : 43d3e: 88 06 mov %al,(%rsi) 0.00 : 43d40: 75 e6 jne 43d28 <_itoa_word+0x58> 0.00 : 43d42: eb da jmp 43d1e <_itoa_word+0x4e> 0.00 : 43d44: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43d48: 48 89 f8 mov %rdi,%rax 0.00 : 43d4b: 48 c1 ef 03 shr $0x3,%rdi 0.00 : 43d4f: 48 83 ee 01 sub $0x1,%rsi 0.00 : 43d53: 83 e0 07 and $0x7,%eax 0.00 : 43d56: 48 85 ff test %rdi,%rdi 0.00 : 43d59: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax 0.00 : 43d5e: 88 06 mov %al,(%rsi) 0.00 : 43d60: 75 e6 jne 43d48 <_itoa_word+0x78> 0.00 : 43d62: eb ba jmp 43d1e <_itoa_word+0x4e> 0.00 : 43d64: 0f 1f 40 00 nopl 0x0(%rax) 6.25 : 43d68: 48 b9 cd cc cc cc cc movabs $0xcccccccccccccccd,%rcx 0.00 : 43d6f: cc cc cc 6.25 : 43d72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 12.50 : 43d78: 48 89 f8 mov %rdi,%rax 0.00 : 43d7b: 48 83 ee 01 sub $0x1,%rsi 0.00 : 43d7f: 48 f7 e1 mul %rcx 12.50 : 43d82: 48 c1 ea 03 shr $0x3,%rdx 0.00 : 43d86: 48 8d 04 92 lea (%rdx,%rdx,4),%rax 0.00 : 43d8a: 48 01 c0 add %rax,%rax 0.00 : 43d8d: 48 29 c7 sub %rax,%rdi 12.50 : 43d90: 48 85 d2 test %rdx,%rdx 0.00 : 43d93: 41 0f b6 04 38 movzbl (%r8,%rdi,1),%eax 25.00 : 43d98: 48 89 d7 mov %rdx,%rdi 0.00 : 43d9b: 88 06 mov %al,(%rsi) 12.50 : 43d9d: 75 d9 jne 43d78 <_itoa_word+0xa8> 6.25 : 43d9f: 48 89 f0 mov %rsi,%rax Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000400ef0 : 100.00 : 400ef0: ff 25 ea 91 20 00 jmpq *0x2091ea(%rip) # 60a0e0 <_GLOBAL_OFFSET_TABLE_+0xe0> 0.00 : 400ef6: 68 19 00 00 00 pushq $0x19 0.00 : 400efb: e9 50 fe ff ff jmpq 400d50 <_init+0x18> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 16.67 ??:0 16.67 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002f650 : 0.00 : 2f650: 55 push %rbp 0.00 : 2f651: 48 63 d6 movslq %esi,%rdx 0.00 : 2f654: 48 89 fe mov %rdi,%rsi 0.00 : 2f657: 48 8d 42 2c lea 0x2c(%rdx),%rax 0.00 : 2f65b: 48 89 e5 mov %rsp,%rbp 0.00 : 2f65e: 41 57 push %r15 0.00 : 2f660: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 2f664: 41 56 push %r14 0.00 : 2f666: 41 55 push %r13 0.00 : 2f668: 41 54 push %r12 0.00 : 2f66a: 53 push %rbx 0.00 : 2f66b: 48 81 ec c8 01 00 00 sub $0x1c8,%rsp 0.00 : 2f672: 48 29 c4 sub %rax,%rsp 0.00 : 2f675: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 2f67a: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 2f67e: 48 89 df mov %rbx,%rdi 0.00 : 2f681: e8 0a 49 05 00 callq 83f90 <__mempcpy> 0.00 : 2f686: 48 ba 2f 6c 6f 63 61 movabs $0x2e656c61636f6c2f,%rdx 0.00 : 2f68d: 6c 65 2e 0.00 : 2f690: 48 8d 35 23 af 10 00 lea 0x10af23(%rip),%rsi # 13a5ba <__PRETTY_FUNCTION__.10885+0x3e> 0.00 : 2f697: c7 40 08 61 6c 69 61 movl $0x61696c61,0x8(%rax) 0.00 : 2f69e: 48 89 10 mov %rdx,(%rax) 0.00 : 2f6a1: 66 c7 40 0c 73 00 movw $0x73,0xc(%rax) 0.00 : 2f6a7: 48 89 df mov %rbx,%rdi 0.00 : 2f6aa: e8 a1 77 03 00 callq 66e50 <_IO_fopen@@GLIBC_2.2.5> 0.00 : 2f6af: 48 85 c0 test %rax,%rax 0.00 : 2f6b2: 49 89 c7 mov %rax,%r15 0.00 : 2f6b5: 48 c7 85 28 fe ff ff movq $0x0,-0x1d8(%rbp) 0.00 : 2f6bc: 00 00 00 00 0.00 : 2f6c0: 0f 84 90 02 00 00 je 2f956 0.00 : 2f6c6: 8b 00 mov (%rax),%eax 0.00 : 2f6c8: 48 8d 95 40 fe ff ff lea -0x1c0(%rbp),%rdx 0.00 : 2f6cf: 64 4c 8b 34 25 00 00 mov %fs:0x0,%r14 0.00 : 2f6d6: 00 00 0.00 : 2f6d8: 80 cc 80 or $0x80,%ah 0.00 : 2f6db: a8 10 test $0x10,%al 0.00 : 2f6dd: 41 89 07 mov %eax,(%r15) 0.00 : 2f6e0: 48 c7 85 28 fe ff ff movq $0x0,-0x1d8(%rbp) 0.00 : 2f6e7: 00 00 00 00 0.00 : 2f6eb: 48 89 95 18 fe ff ff mov %rdx,-0x1e8(%rbp) 0.00 : 2f6f2: 0f 85 48 02 00 00 jne 2f940 0.00 : 2f6f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2f6ff: 00 0.00 : 2f700: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 2f707: 4c 89 fa mov %r15,%rdx 0.00 : 2f70a: be 90 01 00 00 mov $0x190,%esi 0.00 : 2f70f: e8 bc 1e 04 00 callq 715d0 0.00 : 2f714: 48 85 c0 test %rax,%rax 0.00 : 2f717: 0f 84 23 02 00 00 je 2f940 0.00 : 2f71d: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 2f724: be 0a 00 00 00 mov $0xa,%esi 0.00 : 2f729: e8 62 f9 04 00 callq 7f090 <__GI_strchr> 0.00 : 2f72e: 48 89 85 20 fe ff ff mov %rax,-0x1e0(%rbp) 0.00 : 2f735: 48 8b 05 4c 26 34 00 mov 0x34264c(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2f73c: 4c 8b ad 18 fe ff ff mov -0x1e8(%rbp),%r13 0.00 : 2f743: 48 8b 35 86 26 34 00 mov 0x342686(%rip),%rsi # 371dd0 <_DYNAMIC+0x270> 0.00 : 2f74a: 4d 8b 04 06 mov (%r14,%rax,1),%r8 0.00 : 2f74e: eb 17 jmp 2f767 ??:0 5.56 : 2f750: 41 0f b6 4d 00 movzbl 0x0(%r13),%ecx 0.00 : 2f755: 49 8b 04 36 mov (%r14,%rsi,1),%rax 0.00 : 2f759: 0f b6 d1 movzbl %cl,%edx 0.00 : 2f75c: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 2f761: 74 25 je 2f788 0.00 : 2f763: 49 83 c5 01 add $0x1,%r13 0.00 : 2f767: 49 83 3c 36 00 cmpq $0x0,(%r14,%rsi,1) 0.00 : 2f76c: 75 e2 jne 2f750 0.00 : 2f76e: 49 8b 00 mov (%r8),%rax 0.00 : 2f771: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2f775: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2f77b: 49 89 04 36 mov %rax,(%r14,%rsi,1) 0.00 : 2f77f: eb cf jmp 2f750 0.00 : 2f781: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2f788: 84 c9 test %cl,%cl 0.00 : 2f78a: 0f 84 9b 01 00 00 je 2f92b 0.00 : 2f790: 80 f9 23 cmp $0x23,%cl 0.00 : 2f793: 0f 84 92 01 00 00 je 2f92b 5.56 : 2f799: 41 0f b6 55 01 movzbl 0x1(%r13),%edx 0.00 : 2f79e: 4d 8d 65 01 lea 0x1(%r13),%r12 0.00 : 2f7a2: 84 d2 test %dl,%dl 0.00 : 2f7a4: 75 2d jne 2f7d3 0.00 : 2f7a6: e9 fd 01 00 00 jmpq 2f9a8 0.00 : 2f7ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2f7b0: 49 8b 04 36 mov (%r14,%rsi,1),%rax 0.00 : 2f7b4: 0f b6 d2 movzbl %dl,%edx 0.00 : 2f7b7: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 2f7bc: 0f 85 8e 02 00 00 jne 2fa50 0.00 : 2f7c2: 49 83 c4 01 add $0x1,%r12 0.00 : 2f7c6: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 2f7cb: 84 d2 test %dl,%dl 0.00 : 2f7cd: 0f 84 d5 01 00 00 je 2f9a8 0.00 : 2f7d3: 49 83 3c 36 00 cmpq $0x0,(%r14,%rsi,1) 5.56 : 2f7d8: 75 d6 jne 2f7b0 0.00 : 2f7da: 49 8b 00 mov (%r8),%rax 0.00 : 2f7dd: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2f7e1: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2f7e7: 49 89 04 36 mov %rax,(%r14,%rsi,1) 0.00 : 2f7eb: eb c3 jmp 2f7b0 0.00 : 2f7ed: 0f 1f 00 nopl (%rax) 0.00 : 2f7f0: 80 f9 0a cmp $0xa,%cl 0.00 : 2f7f3: 0f 85 c1 02 00 00 jne 2faba 0.00 : 2f7f9: c6 07 00 movb $0x0,(%rdi) 0.00 : 2f7fc: c6 47 01 0a movb $0xa,0x1(%rdi) 0.00 : 2f800: 48 8b 05 a9 3a 34 00 mov 0x343aa9(%rip),%rax # 3732b0 0.00 : 2f807: 48 39 05 9a 3a 34 00 cmp %rax,0x343a9a(%rip) # 3732a8 0.00 : 2f80e: 72 3d jb 2f84d 0.00 : 2f810: 48 85 c0 test %rax,%rax 0.00 : 2f813: bb 64 00 00 00 mov $0x64,%ebx 0.00 : 2f818: be 40 06 00 00 mov $0x640,%esi 0.00 : 2f81d: 74 0b je 2f82a 0.00 : 2f81f: 48 89 c6 mov %rax,%rsi 0.00 : 2f822: 48 8d 1c 00 lea (%rax,%rax,1),%rbx 0.00 : 2f826: 48 c1 e6 05 shl $0x5,%rsi 0.00 : 2f82a: 48 8b 3d b7 35 34 00 mov 0x3435b7(%rip),%rdi # 372de8 0.00 : 2f831: e8 0a f0 fe ff callq 1e840 0.00 : 2f836: 48 85 c0 test %rax,%rax 0.00 : 2f839: 0f 84 01 01 00 00 je 2f940 0.00 : 2f83f: 48 89 05 a2 35 34 00 mov %rax,0x3435a2(%rip) # 372de8 0.00 : 2f846: 48 89 1d 63 3a 34 00 mov %rbx,0x343a63(%rip) # 3732b0 0.00 : 2f84d: 4c 89 ef mov %r13,%rdi 0.00 : 2f850: e8 5b 13 05 00 callq 80bb0 <__GI_strlen> 0.00 : 2f855: 48 83 c0 01 add $0x1,%rax 0.00 : 2f859: 4c 89 e7 mov %r12,%rdi 0.00 : 2f85c: 48 89 85 30 fe ff ff mov %rax,-0x1d0(%rbp) 0.00 : 2f863: e8 48 13 05 00 callq 80bb0 <__GI_strlen> 0.00 : 2f868: 48 83 c0 01 add $0x1,%rax 0.00 : 2f86c: 48 8b 0d 2d 3a 34 00 mov 0x343a2d(%rip),%rcx # 3732a0 0.00 : 2f873: 48 89 c2 mov %rax,%rdx 0.00 : 2f876: 48 03 95 30 fe ff ff add -0x1d0(%rbp),%rdx 0.00 : 2f87d: 48 89 85 38 fe ff ff mov %rax,-0x1c8(%rbp) 0.00 : 2f884: 48 89 d0 mov %rdx,%rax 0.00 : 2f887: 48 03 05 0a 3a 34 00 add 0x343a0a(%rip),%rax # 373298 5.56 : 2f88e: 48 39 c8 cmp %rcx,%rax 0.00 : 2f891: 0f 87 d1 01 00 00 ja 2fa68 5.56 : 2f897: 48 8b 15 0a 3a 34 00 mov 0x343a0a(%rip),%rdx # 3732a8 0.00 : 2f89e: 48 89 d3 mov %rdx,%rbx 0.00 : 2f8a1: 48 8b 3d 38 35 34 00 mov 0x343538(%rip),%rdi # 372de0 <__start___libc_freeres_ptrs> 0.00 : 2f8a8: 48 03 3d e9 39 34 00 add 0x3439e9(%rip),%rdi # 373298 0.00 : 2f8af: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 2f8b3: 48 03 1d 2e 35 34 00 add 0x34352e(%rip),%rbx # 372de8 0.00 : 2f8ba: 48 8b 95 30 fe ff ff mov -0x1d0(%rbp),%rdx 0.00 : 2f8c1: 4c 89 ee mov %r13,%rsi 0.00 : 2f8c4: e8 87 4e 05 00 callq 84750 0.00 : 2f8c9: 48 89 03 mov %rax,(%rbx) 0.00 : 2f8cc: 48 8b bd 30 fe ff ff mov -0x1d0(%rbp),%rdi 0.00 : 2f8d3: 4c 89 e6 mov %r12,%rsi 0.00 : 2f8d6: 48 03 3d bb 39 34 00 add 0x3439bb(%rip),%rdi # 373298 0.00 : 2f8dd: 48 8b 1d c4 39 34 00 mov 0x3439c4(%rip),%rbx # 3732a8 0.00 : 2f8e4: 48 8b 95 38 fe ff ff mov -0x1c8(%rbp),%rdx 0.00 : 2f8eb: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 2f8ef: 48 03 1d f2 34 34 00 add 0x3434f2(%rip),%rbx # 372de8 0.00 : 2f8f6: 48 89 3d 9b 39 34 00 mov %rdi,0x34399b(%rip) # 373298 0.00 : 2f8fd: 48 03 3d dc 34 34 00 add 0x3434dc(%rip),%rdi # 372de0 <__start___libc_freeres_ptrs> 0.00 : 2f904: e8 47 4e 05 00 callq 84750 0.00 : 2f909: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 2f90d: 48 8b 85 38 fe ff ff mov -0x1c8(%rbp),%rax 0.00 : 2f914: 48 83 05 8c 39 34 00 addq $0x1,0x34398c(%rip) # 3732a8 0.00 : 2f91b: 01 0.00 : 2f91c: 48 01 05 75 39 34 00 add %rax,0x343975(%rip) # 373298 0.00 : 2f923: 48 83 85 28 fe ff ff addq $0x1,-0x1d8(%rbp) 0.00 : 2f92a: 01 5.56 : 2f92b: 48 83 bd 20 fe ff ff cmpq $0x0,-0x1e0(%rbp) 0.00 : 2f932: 00 0.00 : 2f933: 74 3b je 2f970 0.00 : 2f935: 41 8b 07 mov (%r15),%eax 0.00 : 2f938: a8 10 test $0x10,%al 0.00 : 2f93a: 0f 84 c0 fd ff ff je 2f700 0.00 : 2f940: 4c 89 ff mov %r15,%rdi 0.00 : 2f943: e8 d8 68 03 00 callq 66220 <_IO_fclose@@GLIBC_2.2.5> 0.00 : 2f948: 48 83 bd 28 fe ff ff cmpq $0x0,-0x1d8(%rbp) 0.00 : 2f94f: 00 0.00 : 2f950: 0f 85 6c 01 00 00 jne 2fac2 0.00 : 2f956: 48 8b 85 28 fe ff ff mov -0x1d8(%rbp),%rax 0.00 : 2f95d: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 2f961: 5b pop %rbx 0.00 : 2f962: 41 5c pop %r12 0.00 : 2f964: 41 5d pop %r13 0.00 : 2f966: 41 5e pop %r14 0.00 : 2f968: 41 5f pop %r15 0.00 : 2f96a: c9 leaveq 0.00 : 2f96b: c3 retq 0.00 : 2f96c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 2f970: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 2f977: 4c 89 fa mov %r15,%rdx 0.00 : 2f97a: be 90 01 00 00 mov $0x190,%esi 0.00 : 2f97f: e8 4c 1c 04 00 callq 715d0 0.00 : 2f984: 48 85 c0 test %rax,%rax 0.00 : 2f987: 74 ac je 2f935 0.00 : 2f989: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 2f990: be 0a 00 00 00 mov $0xa,%esi 0.00 : 2f995: e8 f6 f6 04 00 callq 7f090 <__GI_strchr> 0.00 : 2f99a: 48 85 c0 test %rax,%rax 0.00 : 2f99d: 74 d1 je 2f970 0.00 : 2f99f: eb 94 jmp 2f935 0.00 : 2f9a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2f9a8: 31 c9 xor %ecx,%ecx 0.00 : 2f9aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2f9b0: eb 1d jmp 2f9cf 0.00 : 2f9b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2f9b8: 49 8b 04 36 mov (%r14,%rsi,1),%rax 0.00 : 2f9bc: 0f b6 d1 movzbl %cl,%edx 0.00 : 2f9bf: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 16.67 : 2f9c4: 74 2a je 2f9f0 0.00 : 2f9c6: 49 83 c4 01 add $0x1,%r12 0.00 : 2f9ca: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 2f9cf: 49 83 3c 36 00 cmpq $0x0,(%r14,%rsi,1) 0.00 : 2f9d4: 75 e2 jne 2f9b8 0.00 : 2f9d6: 49 8b 00 mov (%r8),%rax 0.00 : 2f9d9: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2f9dd: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2f9e3: 49 89 04 36 mov %rax,(%r14,%rsi,1) 0.00 : 2f9e7: eb cf jmp 2f9b8 0.00 : 2f9e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2f9f0: 84 c9 test %cl,%cl 0.00 : 2f9f2: 0f 84 33 ff ff ff je 2f92b 0.00 : 2f9f8: 41 0f b6 4c 24 01 movzbl 0x1(%r12),%ecx 0.00 : 2f9fe: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 2fa03: 84 c9 test %cl,%cl 0.00 : 2fa05: 75 2a jne 2fa31 0.00 : 2fa07: e9 f4 fd ff ff jmpq 2f800 0.00 : 2fa0c: 0f 1f 40 00 nopl 0x0(%rax) 5.56 : 2fa10: 49 8b 04 36 mov (%r14,%rsi,1),%rax 5.56 : 2fa14: 0f b6 d1 movzbl %cl,%edx 16.67 : 2fa17: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 5.56 : 2fa1c: 0f 85 ce fd ff ff jne 2f7f0 5.56 : 2fa22: 48 83 c7 01 add $0x1,%rdi 5.56 : 2fa26: 0f b6 0f movzbl (%rdi),%ecx 0.00 : 2fa29: 84 c9 test %cl,%cl 0.00 : 2fa2b: 0f 84 cf fd ff ff je 2f800 0.00 : 2fa31: 49 83 3c 36 00 cmpq $0x0,(%r14,%rsi,1) 5.56 : 2fa36: 75 d8 jne 2fa10 0.00 : 2fa38: 49 8b 00 mov (%r8),%rax 0.00 : 2fa3b: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2fa3f: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2fa45: 49 89 04 36 mov %rax,(%r14,%rsi,1) 0.00 : 2fa49: eb c5 jmp 2fa10 0.00 : 2fa4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2fa50: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 2fa55: 49 83 c4 01 add $0x1,%r12 0.00 : 2fa59: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 2fa5e: e9 6c ff ff ff jmpq 2f9cf 0.00 : 2fa63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2fa68: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 2fa6f: b8 00 04 00 00 mov $0x400,%eax 0.00 : 2fa74: 48 8b 3d 65 33 34 00 mov 0x343365(%rip),%rdi # 372de0 <__start___libc_freeres_ptrs> 0.00 : 2fa7b: 48 0f 43 c2 cmovae %rdx,%rax 0.00 : 2fa7f: 48 8d 1c 08 lea (%rax,%rcx,1),%rbx 0.00 : 2fa83: 48 89 de mov %rbx,%rsi 0.00 : 2fa86: e8 b5 ed fe ff callq 1e840 0.00 : 2fa8b: 48 85 c0 test %rax,%rax 0.00 : 2fa8e: 0f 84 ac fe ff ff je 2f940 0.00 : 2fa94: 48 8b 0d 45 33 34 00 mov 0x343345(%rip),%rcx # 372de0 <__start___libc_freeres_ptrs> 0.00 : 2fa9b: 48 39 c1 cmp %rax,%rcx 0.00 : 2fa9e: 75 46 jne 2fae6 0.00 : 2faa0: 48 8b 15 01 38 34 00 mov 0x343801(%rip),%rdx # 3732a8 0.00 : 2faa7: 48 89 05 32 33 34 00 mov %rax,0x343332(%rip) # 372de0 <__start___libc_freeres_ptrs> 0.00 : 2faae: 48 89 1d eb 37 34 00 mov %rbx,0x3437eb(%rip) # 3732a0 0.00 : 2fab5: e9 e4 fd ff ff jmpq 2f89e 0.00 : 2faba: c6 07 00 movb $0x0,(%rdi) 0.00 : 2fabd: e9 3e fd ff ff jmpq 2f800 0.00 : 2fac2: 48 8b 35 df 37 34 00 mov 0x3437df(%rip),%rsi # 3732a8 0.00 : 2fac9: 48 8b 3d 18 33 34 00 mov 0x343318(%rip),%rdi # 372de8 0.00 : 2fad0: 48 8d 0d 59 01 00 00 lea 0x159(%rip),%rcx # 2fc30 0.00 : 2fad7: ba 10 00 00 00 mov $0x10,%edx 0.00 : 2fadc: e8 5f 53 00 00 callq 34e40 0.00 : 2fae1: e9 70 fe ff ff jmpq 2f956 0.00 : 2fae6: 48 8b 15 bb 37 34 00 mov 0x3437bb(%rip),%rdx # 3732a8 0.00 : 2faed: 48 85 d2 test %rdx,%rdx 0.00 : 2faf0: 74 b5 je 2faa7 0.00 : 2faf2: 48 89 c7 mov %rax,%rdi 0.00 : 2faf5: 31 f6 xor %esi,%esi 0.00 : 2faf7: 48 29 cf sub %rcx,%rdi 0.00 : 2fafa: 48 8b 0d e7 32 34 00 mov 0x3432e7(%rip),%rcx # 372de8 0.00 : 2fb01: 48 83 c6 01 add $0x1,%rsi 0.00 : 2fb05: 48 01 39 add %rdi,(%rcx) 0.00 : 2fb08: 48 01 79 08 add %rdi,0x8(%rcx) 0.00 : 2fb0c: 48 83 c1 10 add $0x10,%rcx 0.00 : 2fb10: 48 39 d6 cmp %rdx,%rsi 0.00 : 2fb13: 72 ec jb 2fb01 0.00 : 2fb15: eb 89 jmp 2faa0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 13.64 ??:0 13.64 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 4.55 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000004a0 : ??:0 59.09 : 4a0: 48 83 ec 58 sub $0x58,%rsp ??:0 4.55 : 4d4: 48 89 jl 51e 0.00 : 4d6: 5c 24 28 4c 89 7c mov 0x88(%rsi),%ebp 0.00 : 4dc: 24 50 48 shr $0x5,%al 0.00 : 4df: 89 f3 48 test %rbp,%rbp 0.00 : 4e2: 89 6c 24 30 4c 89 je 590 4.55 : 4e8: 64 24 38 49 movzbl %al,%r14d 0.00 : 4ec: 89 cf 4c 89 cmp $0x4,%r14d 0.00 : 4f0: 6c 24 je 568 0.00 : 4f2: 40 4c 89 74 24 48 89 mov 0xe0(%rbp),%rdx 4.55 : 4f9: 7c 24 24 test %rdx,%rdx 0.00 : 4fc: 48 89 je 568 0.00 : 4fe: 54 24 18 0f movzbl 0x10(%rdx),%eax 0.00 : 502: b6 46 test %al,%al 0.00 : 504: 7c 48 je 568 0.00 : 506: 8b ae 88 movzbl %al,%eax 0.00 : 509: 00 00 00 add %rdx,%rax 0.00 : 50c: c0 e8 je 568 0.00 : 50e: 05 48 85 mov (%rax),%r13 0.00 : 511: ed 0f 84 test %r13,%r13 0.00 : 514: a8 00 je 568 0.00 : 516: 00 00 44 0f b6 f0 mov 0xc4(%rsi),%eax 0.00 : 51c: 41 83 fe mov %r14d,%ecx 0.00 : 51f: 04 74 76 mov %rbp,%rdx 0.00 : 522: 48 8b 95 e0 00 00 00 add 0xd8(%rsi),%rax 0.00 : 529: 48 85 d2 mov %rbx,%rdi 0.00 : 52c: 74 6a 0f movzbl (%rax),%esi 0.00 : 52f: b6 42 10 and $0xf,%esi 0.00 : 532: 84 c0 74 shl $0x2,%esi 0.00 : 535: 62 0f b6 c0 48 01 sub 0xe0(%rbx),%esi 0.00 : 53b: d0 74 add %eax,%esi 0.00 : 53d: 5a 4c 8b 28 callq *0x50(%r13) 0.00 : 541: 4d 85 ed cmp $0x1,%eax 0.00 : 544: 74 52 8b mov %eax,%r12d 0.00 : 547: 86 c4 jne 5c0 0.00 : 549: 00 00 00 44 mov 0x78(%rbp),%rax 0.00 : 54d: 89 f1 test $0x40,%al 0.00 : 54f: 48 89 ea 48 03 86 jne 610 0.00 : 555: d8 00 00 00 48 89 df mov 0x88(%rbx),%rbp 0.00 : 55c: 0f b6 30 test %rbp,%rbp 0.00 : 55f: 83 e6 je 596 0.00 : 561: 0f c1 e6 02 2b b3 e0 nopl 0x0(%rax) 4.55 : 568: 00 00 00 01 mov 0x78(%rbp),%rax 4.55 : 56c: c6 41 ff test $0x10,%ah 0.00 : 56f: 55 50 jne 590 0.00 : 571: 83 f8 01 41 mov 0x78(%rbp),%rax 0.00 : 575: 89 c4 test $0x8,%al 0.00 : 577: 75 77 je 5f8 4.55 : 579: 48 8b 45 mov %rbp,%rdi 4.55 : 57c: 78 a8 40 0f 85 bb mov $0x1,%r12d 0.00 : 582: 00 00 00 48 8b callq 587 0.00 : 587: ab 88 jmp 596 0.00 : 589: 00 00 00 48 85 ed 74 nopl 0x0(%rax) 0.00 : 590: 35 0f 1f 80 00 00 mov $0x1,%r12d 0.00 : 596: 00 00 48 mov %r12d,%eax 0.00 : 599: 8b 45 78 f6 c4 mov 0x28(%rsp),%rbx 0.00 : 59e: 10 75 1f 48 8b mov 0x30(%rsp),%rbp 0.00 : 5a3: 45 78 a8 08 74 mov 0x38(%rsp),%r12 4.55 : 5a8: 7f 48 89 ef 41 mov 0x40(%rsp),%r13 4.55 : 5ad: bc 01 00 00 00 mov 0x48(%rsp),%r14 0.00 : 5b2: e8 00 00 00 00 mov 0x50(%rsp),%r15 0.00 : 5b7: eb 0d 0f 1f add $0x58,%rsp 0.00 : 5bb: 80 retq 0.00 : 5bc: 00 00 00 00 nopl 0x0(%rax) 0.00 : 5c0: 41 bc 01 00 mov 0x10(%r13),%rax 0.00 : 5c4: 00 00 44 89 e0 mov 0x18(%rsp),%rcx 0.00 : 5c9: 48 8b 5c xor %r9d,%r9d 0.00 : 5cc: 24 28 48 8b mov 0x24(%rsp),%esi 0.00 : 5d0: 6c 24 30 mov %r15,%r8 0.00 : 5d3: 4c 8b 64 mov %rbx,%rdx 0.00 : 5d6: 24 38 4c 8b 6c mov $0x2,%edi 0.00 : 5db: 24 40 4c 8b 74 24 48 movq $0x0,(%rsp) 0.00 : 5e2: 4c 0.00 : 5e3: 8b 7c 24 50 48 mov %rax,0x8(%rsp) 0.00 : 5e8: 83 c4 xor %eax,%eax 0.00 : 5ea: 58 c3 0f 1f 40 callq 5ef 0.00 : 5ef: 00 49 jmp 596 0.00 : 5f1: 8b 45 10 48 8b 4c 24 nopl 0x0(%rax) 0.00 : 5f8: 18 45 31 mov %rbx,%rdi 0.00 : 5fb: c9 8b 74 24 24 callq 600 0.00 : 600: 4d 89 f8 cmp $0x1,%eax 0.00 : 603: 48 89 da mov %eax,%r12d 0.00 : 606: bf 02 jne 596 0.00 : 608: 00 00 00 48 c7 jmpq 579 0.00 : 60d: 04 24 00 nopl (%rax) 0.00 : 610: 00 00 00 48 mov 0x20(%rbx),%rax 0.00 : 614: 89 44 24 test %rax,%rax 0.00 : 617: 08 31 je 623 0.00 : 619: c0 e8 00 00 00 00 mov 0xa0(%rbx),%edx 0.00 : 61f: eb a5 test %edx,%edx 0.00 : 621: 0f 1f jne 670 0.00 : 623: 80 00 00 00 00 48 89 mov 0x0(%rip),%rax # 62a 0.00 : 62a: df e8 00 test %rax,%rax 0.00 : 62d: 00 00 je 642 0.00 : 62f: 00 83 f8 mov %r14d,%edx 0.00 : 632: 01 41 89 mov %rbp,%rsi 0.00 : 635: c4 75 8e mov %rbx,%rdi 0.00 : 638: e9 6c callq *%rax 0.00 : 63a: ff ff test %eax,%eax 0.00 : 63c: ff 0f 1f 00 48 8b jne 555 0.00 : 642: 43 20 48 85 c0 callq 647 0.00 : 647: 74 0a 8b 93 a0 00 00 mov 0xe8(%rbp),%rax 0.00 : 64e: 00 85 d2 xor %r12d,%r12d 0.00 : 651: 75 4d 48 8b 05 00 00 mov 0x730(%rax),%rax 0.00 : 658: 00 00 48 85 incl %gs:0x24(%rax) 0.00 : 65c: c0 74 13 44 89 callq 661 0.00 : 661: f2 48 89 ee 48 jmpq 596 0.00 : 666: 89 df ff d0 85 c0 0f nopw %cs:0x0(%rax,%rax,1) 0.00 : 66d: 85 13 ff 0.00 : 670: ff ff e8 00 00 00 00 testb $0x8,0x1b0(%rax) 0.00 : 677: 48 8b je 623 0.00 : 679: 85 e8 00 00 00 jmpq 555 : 67e: 45 31 xchg %ax,%ax : 680: e4 48 8b 80 cmpl $0x13,0x68(%rsi) : 684: 30 07 00 mov %edi,%r8d : 687: 00 65 jbe 6a5 : 689: ff 40 24 e8 00 00 mov 0xc4(%rsi),%edx : 68f: 00 00 e9 30 ff ff ff mov 0xd8(%rsi),%rax : 696: 66 2e 0f 1f movzbl (%rax,%rdx,1),%eax : 69a: 84 00 00 and $0xf,%eax : 69d: 00 00 00 shl $0x2,%eax : 6a0: f6 80 b0 cmp $0x13,%eax : 6a3: 01 00 ja 6b0 : 6a5: 00 08 74 aa e9 mov $0x1,%eax : 6aa: d7 retq : 6ab: fe ff ff 66 90 nopl 0x0(%rax,%rax,1) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 45.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:442 25.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:436 15.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:457 5.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:453 5.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:457 5.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:457 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000638090 : : * : * Unlock a semaphore (increment count) : */ : void : PGSemaphoreUnlock(PGSemaphore sema) : { 0.00 : 638090: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:436 25.00 : 638091: 48 89 e5 mov %rsp,%rbp 0.00 : 638094: 41 54 push %r12 0.00 : 638096: 4c 8d 65 e0 lea -0x20(%rbp),%r12 0.00 : 63809a: 53 push %rbx 0.00 : 63809b: 48 89 fb mov %rdi,%rbx 0.00 : 63809e: 48 83 ec 10 sub $0x10,%rsp : int errStatus; : struct sembuf sops; : : sops.sem_op = 1; /* increment */ 0.00 : 6380a2: 66 c7 45 e2 01 00 movw $0x1,-0x1e(%rbp) : sops.sem_flg = 0; 0.00 : 6380a8: 66 c7 45 e4 00 00 movw $0x0,-0x1c(%rbp) : sops.sem_num = sema->semNum; 0.00 : 6380ae: 8b 47 04 mov 0x4(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:442 45.00 : 6380b1: 66 89 45 e0 mov %ax,-0x20(%rbp) 0.00 : 6380b5: 0f 1f 00 nopl (%rax) : * try and unlock the semaphore again. Not clear this can really happen, : * but might as well cope. : */ : do : { : errStatus = semop(sema->semId, &sops, 1); 0.00 : 6380b8: 8b 3b mov (%rbx),%edi 0.00 : 6380ba: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6380bf: 4c 89 e6 mov %r12,%rsi 0.00 : 6380c2: e8 f9 1d e3 ff callq 469ec0 : } while (errStatus < 0 && errno == EINTR); /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:453 5.00 : 6380c7: 85 c0 test %eax,%eax 0.00 : 6380c9: 79 3d jns 638108 0.00 : 6380cb: e8 f0 1b e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 6380d0: 83 38 04 cmpl $0x4,(%rax) 0.00 : 6380d3: 74 e3 je 6380b8 : : if (errStatus < 0) : elog(FATAL, "semop(id=%d) failed: %m", sema->semId); 0.00 : 6380d5: ba 70 d5 89 00 mov $0x89d570,%edx 0.00 : 6380da: be c8 01 00 00 mov $0x1c8,%esi 0.00 : 6380df: bf f7 d1 89 00 mov $0x89d1f7,%edi 0.00 : 6380e4: e8 37 33 14 00 callq 77b420 0.00 : 6380e9: 8b 13 mov (%rbx),%edx 0.00 : 6380eb: be 01 d2 89 00 mov $0x89d201,%esi 0.00 : 6380f0: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6380f5: 31 c0 xor %eax,%eax 0.00 : 6380f7: e8 34 31 14 00 callq 77b230 0.00 : 6380fc: e8 cf 13 e3 ff callq 4694d0 0.00 : 638101: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:457 15.00 : 638108: 48 83 c4 10 add $0x10,%rsp 0.00 : 63810c: 5b pop %rbx 5.00 : 63810d: 41 5c pop %r12 5.00 : 63810f: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 33.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001f0f0 <__errno_location>: ??:0 33.33 : 1f0f0: 48 8b 05 41 2d 35 00 mov 0x352d41(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 50.00 : 1f0f7: 64 48 03 04 25 00 00 add %fs:0x0,%rax 16.67 : 1f0fe: 00 00 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 82.35 ??:0 17.65 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000a95a0 <__getpid>: 82.35 : a95a0: 64 8b 14 25 d4 02 00 mov %fs:0x2d4,%edx 0.00 : a95a7: 00 17.65 : a95a8: 83 fa 00 cmp $0x0,%edx 0.00 : a95ab: 89 d0 mov %edx,%eax 0.00 : a95ad: 7e 02 jle a95b1 <__getpid+0x11> 0.00 : a95af: f3 c3 repz retq 0.00 : a95b1: 75 0c jne a95bf <__getpid+0x1f> 0.00 : a95b3: 64 8b 04 25 d0 02 00 mov %fs:0x2d0,%eax 0.00 : a95ba: 00 0.00 : a95bb: 85 c0 test %eax,%eax 0.00 : a95bd: 75 f0 jne a95af <__getpid+0xf> 0.00 : a95bf: b8 27 00 00 00 mov $0x27,%eax 0.00 : a95c4: 0f 05 syscall 0.00 : a95c6: 85 d2 test %edx,%edx 0.00 : a95c8: 48 89 c6 mov %rax,%rsi 0.00 : a95cb: 75 e2 jne a95af <__getpid+0xf> 0.00 : a95cd: 64 89 34 25 d0 02 00 mov %esi,%fs:0x2d0 0.00 : a95d4: 00 0.00 : a95d5: 89 f0 mov %esi,%eax Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 15.38 ??:0 15.38 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000e670 <_dl_fini>: 0.00 : e670: 55 push %rbp 0.00 : e671: 48 89 e5 mov %rsp,%rbp 0.00 : e674: 41 57 push %r15 0.00 : e676: 41 56 push %r14 0.00 : e678: 41 55 push %r13 0.00 : e67a: 41 54 push %r12 0.00 : e67c: 53 push %rbx 0.00 : e67d: 31 db xor %ebx,%ebx 0.00 : e67f: 48 83 ec 28 sub $0x28,%rsp 0.00 : e683: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : e68a: 00 0.00 : e68b: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) 0.00 : e692: 48 8b 05 c7 12 21 00 mov 0x2112c7(%rip),%rax # 21f960 <_rtld_global+0x900> 0.00 : e699: 48 83 e8 01 sub $0x1,%rax 0.00 : e69d: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : e6a1: 0f 88 00 02 00 00 js e8a7 <_dl_fini+0x237> 0.00 : e6a7: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : e6ab: 48 8d 15 ae 09 21 00 lea 0x2109ae(%rip),%rdx # 21f060 <_rtld_global> 0.00 : e6b2: 48 c1 e0 04 shl $0x4,%rax 0.00 : e6b6: 48 8d 44 02 08 lea 0x8(%rdx,%rax,1),%rax 0.00 : e6bb: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : e6bf: eb 27 jmp e6e8 <_dl_fini+0x78> 0.00 : e6c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : e6c8: 48 8d 3d 99 12 21 00 lea 0x211299(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : e6cf: ff 15 73 18 21 00 callq *0x211873(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : e6d5: 48 81 6d c8 90 00 00 subq $0x90,-0x38(%rbp) 0.00 : e6dc: 00 0.00 : e6dd: 48 83 6d c0 01 subq $0x1,-0x40(%rbp) 0.00 : e6e2: 0f 88 bf 01 00 00 js e8a7 <_dl_fini+0x237> 0.00 : e6e8: 48 8d 3d 79 12 21 00 lea 0x211279(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : e6ef: ff 15 4b 18 21 00 callq *0x21184b(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : e6f5: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : e6f9: 44 8b 01 mov (%rcx),%r8d 7.69 : e6fc: 45 85 c0 test %r8d,%r8d 0.00 : e6ff: 74 c7 je e6c8 <_dl_fini+0x58> 0.00 : e701: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : e705: 0f b6 87 15 03 00 00 movzbl 0x315(%rdi),%eax 0.00 : e70c: 48 89 fe mov %rdi,%rsi 0.00 : e70f: c0 e8 03 shr $0x3,%al 0.00 : e712: 83 e0 01 and $0x1,%eax 0.00 : e715: 3b 45 bc cmp -0x44(%rbp),%eax 0.00 : e718: 75 ae jne e6c8 <_dl_fini+0x58> 0.00 : e71a: 44 89 c0 mov %r8d,%eax 0.00 : e71d: 48 c1 e0 03 shl $0x3,%rax 0.00 : e721: 48 39 d8 cmp %rbx,%rax 0.00 : e724: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : e728: 0f 87 46 02 00 00 ja e974 <_dl_fini+0x304> 0.00 : e72e: 48 89 5d d0 mov %rbx,-0x30(%rbp) 0.00 : e732: 31 d2 xor %edx,%edx 0.00 : e734: 45 31 ff xor %r15d,%r15d 0.00 : e737: 48 85 ff test %rdi,%rdi 0.00 : e73a: 75 0d jne e749 <_dl_fini+0xd9> 0.00 : e73c: eb 43 jmp e781 <_dl_fini+0x111> 0.00 : e73e: 66 90 xchg %ax,%ax 0.00 : e740: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : e744: 48 85 f6 test %rsi,%rsi 0.00 : e747: 74 35 je e77e <_dl_fini+0x10e> 0.00 : e749: 48 39 76 28 cmp %rsi,0x28(%rsi) 7.69 : e74d: 0f 1f 00 nopl (%rax) 0.00 : e750: 75 ee jne e740 <_dl_fini+0xd0> 7.69 : e752: 41 39 d0 cmp %edx,%r8d 0.00 : e755: 0f 86 99 02 00 00 jbe e9f4 <_dl_fini+0x384> 0.00 : e75b: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : e75f: 89 d0 mov %edx,%eax 0.00 : e761: 48 89 34 c1 mov %rsi,(%rcx,%rax,8) 15.38 : e765: 89 96 e4 03 00 00 mov %edx,0x3e4(%rsi) 0.00 : e76b: 83 c2 01 add $0x1,%edx 0.00 : e76e: 83 86 10 03 00 00 01 addl $0x1,0x310(%rsi) 7.69 : e775: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : e779: 48 85 f6 test %rsi,%rsi 0.00 : e77c: 75 cb jne e749 <_dl_fini+0xd9> 0.00 : e77e: 41 89 d7 mov %edx,%r15d 0.00 : e781: 44 39 c2 cmp %r8d,%edx 0.00 : e784: 0f 95 c0 setne %al 0.00 : e787: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : e78c: 75 2a jne e7b8 <_dl_fini+0x148> 0.00 : e78e: 84 c0 test %al,%al 0.00 : e790: 74 36 je e7c8 <_dl_fini+0x158> 0.00 : e792: 48 8d 0d 9b b6 00 00 lea 0xb69b(%rip),%rcx # 19e34 <__PRETTY_FUNCTION__.10264> 0.00 : e799: 48 8d 35 42 b6 00 00 lea 0xb642(%rip),%rsi # 19de2 <_dl_out_of_memory+0x39> 0.00 : e7a0: 48 8d 3d 5b b6 00 00 lea 0xb65b(%rip),%rdi # 19e02 <_dl_out_of_memory+0x59> 0.00 : e7a7: ba c3 00 00 00 mov $0xc3,%edx 0.00 : e7ac: e8 bf 65 00 00 callq 14d70 <__GI___assert_fail> 0.00 : e7b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : e7b8: 84 c0 test %al,%al 0.00 : e7ba: 74 0c je e7c8 <_dl_fini+0x158> 0.00 : e7bc: 41 8d 40 ff lea -0x1(%r8),%eax 0.00 : e7c0: 39 d0 cmp %edx,%eax 0.00 : e7c2: 0f 85 4b 02 00 00 jne ea13 <_dl_fini+0x3a3> 0.00 : e7c8: 85 d2 test %edx,%edx 0.00 : e7ca: 0f 85 ca 01 00 00 jne e99a <_dl_fini+0x32a> 0.00 : e7d0: 48 8d 3d 91 11 21 00 lea 0x211191(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : e7d7: ff 15 6b 17 21 00 callq *0x21176b(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : e7dd: 45 85 ff test %r15d,%r15d 0.00 : e7e0: 0f 84 aa 00 00 00 je e890 <_dl_fini+0x220> 0.00 : e7e6: 45 31 f6 xor %r14d,%r14d 0.00 : e7e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : e7f0: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : e7f4: 4e 8b 2c f2 mov (%rdx,%r14,8),%r13 0.00 : e7f8: 41 0f b6 85 14 03 00 movzbl 0x314(%r13),%eax 0.00 : e7ff: 00 0.00 : e800: a8 08 test $0x8,%al 0.00 : e802: 74 77 je e87b <_dl_fini+0x20b> 0.00 : e804: 83 e0 f7 and $0xfffffff7,%eax 0.00 : e807: 41 88 85 14 03 00 00 mov %al,0x314(%r13) 0.00 : e80e: 49 8b 85 10 01 00 00 mov 0x110(%r13),%rax 7.69 : e815: 48 85 c0 test %rax,%rax 0.00 : e818: 0f 84 0a 01 00 00 je e928 <_dl_fini+0x2b8> 0.00 : e81e: f6 05 fb 03 21 00 02 testb $0x2,0x2103fb(%rip) # 21ec20 <_rtld_global_ro> 0.00 : e825: 0f 85 18 01 00 00 jne e943 <_dl_fini+0x2d3> 0.00 : e82b: 48 85 c0 test %rax,%rax 0.00 : e82e: 74 2e je e85e <_dl_fini+0x1ee> 7.69 : e830: 4c 8b 60 08 mov 0x8(%rax),%r12 7.69 : e834: 49 8b 85 20 01 00 00 mov 0x120(%r13),%rax 0.00 : e83b: 4d 03 65 00 add 0x0(%r13),%r12 0.00 : e83f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : e843: 48 c1 e8 03 shr $0x3,%rax 0.00 : e847: 85 c0 test %eax,%eax 0.00 : e849: 74 13 je e85e <_dl_fini+0x1ee> 0.00 : e84b: 8d 58 ff lea -0x1(%rax),%ebx 0.00 : e84e: 66 90 xchg %ax,%ax 0.00 : e850: 89 d8 mov %ebx,%eax 0.00 : e852: 83 eb 01 sub $0x1,%ebx 0.00 : e855: 41 ff 14 c4 callq *(%r12,%rax,8) 0.00 : e859: 83 fb ff cmp $0xffffffff,%ebx 0.00 : e85c: 75 f2 jne e850 <_dl_fini+0x1e0> 0.00 : e85e: 49 8b 85 a8 00 00 00 mov 0xa8(%r13),%rax 0.00 : e865: 48 85 c0 test %rax,%rax 0.00 : e868: 74 0a je e874 <_dl_fini+0x204> 0.00 : e86a: 48 8b 40 08 mov 0x8(%rax),%rax 15.38 : e86e: 49 03 45 00 add 0x0(%r13),%rax 0.00 : e872: ff d0 callq *%rax 0.00 : e874: 8b 75 bc mov -0x44(%rbp),%esi 0.00 : e877: 85 f6 test %esi,%esi 0.00 : e879: 74 65 je e8e0 <_dl_fini+0x270> 0.00 : e87b: 49 83 c6 01 add $0x1,%r14 0.00 : e87f: 41 83 ad 10 03 00 00 subl $0x1,0x310(%r13) 0.00 : e886: 01 0.00 : e887: 45 39 f7 cmp %r14d,%r15d 0.00 : e88a: 0f 87 60 ff ff ff ja e7f0 <_dl_fini+0x180> 0.00 : e890: 48 81 6d c8 90 00 00 subq $0x90,-0x38(%rbp) 0.00 : e897: 00 0.00 : e898: 48 83 6d c0 01 subq $0x1,-0x40(%rbp) 0.00 : e89d: 48 8b 5d d0 mov -0x30(%rbp),%rbx 0.00 : e8a1: 0f 89 41 fe ff ff jns e6e8 <_dl_fini+0x78> 0.00 : e8a7: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : e8aa: 85 d2 test %edx,%edx 0.00 : e8ac: 75 15 jne e8c3 <_dl_fini+0x253> 0.00 : e8ae: 8b 05 84 04 21 00 mov 0x210484(%rip),%eax # 21ed38 <_rtld_global_ro+0x118> 0.00 : e8b4: c7 45 bc 01 00 00 00 movl $0x1,-0x44(%rbp) 0.00 : e8bb: 85 c0 test %eax,%eax 0.00 : e8bd: 0f 85 cf fd ff ff jne e692 <_dl_fini+0x22> 0.00 : e8c3: 80 3d 56 03 21 00 00 cmpb $0x0,0x210356(%rip) # 21ec20 <_rtld_global_ro> 0.00 : e8ca: 0f 88 62 01 00 00 js ea32 <_dl_fini+0x3c2> 0.00 : e8d0: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : e8d4: 5b pop %rbx 0.00 : e8d5: 41 5c pop %r12 0.00 : e8d7: 41 5d pop %r13 0.00 : e8d9: 41 5e pop %r14 0.00 : e8db: 41 5f pop %r15 0.00 : e8dd: c9 leaveq 0.00 : e8de: c3 retq 0.00 : e8df: 90 nop 0.00 : e8e0: 8b 0d 52 04 21 00 mov 0x210452(%rip),%ecx # 21ed38 <_rtld_global_ro+0x118> 0.00 : e8e6: 85 c9 test %ecx,%ecx 0.00 : e8e8: 74 91 je e87b <_dl_fini+0x20b> 0.00 : e8ea: 4c 8b 25 3f 04 21 00 mov 0x21043f(%rip),%r12 # 21ed30 <_rtld_global_ro+0x110> 0.00 : e8f1: 31 db xor %ebx,%ebx 0.00 : e8f3: 49 8b 54 24 38 mov 0x38(%r12),%rdx 0.00 : e8f8: 48 85 d2 test %rdx,%rdx 0.00 : e8fb: 74 10 je e90d <_dl_fini+0x29d> 0.00 : e8fd: 89 d8 mov %ebx,%eax 0.00 : e8ff: 48 c1 e0 04 shl $0x4,%rax 0.00 : e903: 49 8d bc 05 70 04 00 lea 0x470(%r13,%rax,1),%rdi 0.00 : e90a: 00 0.00 : e90b: ff d2 callq *%rdx 0.00 : e90d: 83 c3 01 add $0x1,%ebx 0.00 : e910: 39 1d 22 04 21 00 cmp %ebx,0x210422(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : e916: 4d 8b 64 24 40 mov 0x40(%r12),%r12 0.00 : e91b: 77 d6 ja e8f3 <_dl_fini+0x283> 0.00 : e91d: e9 59 ff ff ff jmpq e87b <_dl_fini+0x20b> 0.00 : e922: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 7.69 : e928: 49 83 bd a8 00 00 00 cmpq $0x0,0xa8(%r13) 0.00 : e92f: 00 0.00 : e930: 0f 84 3e ff ff ff je e874 <_dl_fini+0x204> 0.00 : e936: f6 05 e3 02 21 00 02 testb $0x2,0x2102e3(%rip) # 21ec20 <_rtld_global_ro> 0.00 : e93d: 0f 84 e8 fe ff ff je e82b <_dl_fini+0x1bb> 0.00 : e943: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : e947: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : e94a: 75 0a jne e956 <_dl_fini+0x2e6> 0.00 : e94c: 48 8b 05 b5 02 21 00 mov 0x2102b5(%rip),%rax # 21ec08 <_dl_argv> 0.00 : e953: 48 8b 30 mov (%rax),%rsi 0.00 : e956: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : e95a: 48 8d 3d b9 b4 00 00 lea 0xb4b9(%rip),%rdi # 19e1a <_dl_out_of_memory+0x71> 0.00 : e961: 31 c0 xor %eax,%eax 0.00 : e963: e8 e8 09 00 00 callq f350 <_dl_debug_printf> 0.00 : e968: 49 8b 85 10 01 00 00 mov 0x110(%r13),%rax 0.00 : e96f: e9 b7 fe ff ff jmpq e82b <_dl_fini+0x1bb> 0.00 : e974: 48 85 db test %rbx,%rbx 0.00 : e977: 75 3f jne e9b8 <_dl_fini+0x348> 0.00 : e979: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : e97d: 48 83 c0 1e add $0x1e,%rax 0.00 : e981: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : e985: 48 29 c4 sub %rax,%rsp 0.00 : e988: 48 8d 44 24 0f lea 0xf(%rsp),%rax 7.69 : e98d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : e991: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : e995: e9 98 fd ff ff jmpq e732 <_dl_fini+0xc2> 0.00 : e99a: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : e99e: 4c 8b 45 c0 mov -0x40(%rbp),%r8 0.00 : e9a2: 89 d2 mov %edx,%edx 0.00 : e9a4: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : e9a8: 31 c9 xor %ecx,%ecx 0.00 : e9aa: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : e9ae: e8 0d fa ff ff callq e3c0 <_dl_sort_fini> 0.00 : e9b3: e9 18 fe ff ff jmpq e7d0 <_dl_fini+0x160> 0.00 : e9b8: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : e9bc: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : e9c0: 48 89 fe mov %rdi,%rsi 0.00 : e9c3: 48 83 c0 1e add $0x1e,%rax 0.00 : e9c7: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : e9cb: 48 29 c4 sub %rax,%rsp 0.00 : e9ce: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : e9d3: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : e9d7: 48 8d 14 08 lea (%rax,%rcx,1),%rdx 0.00 : e9db: 48 01 d9 add %rbx,%rcx 0.00 : e9de: 48 39 55 b0 cmp %rdx,-0x50(%rbp) 0.00 : e9e2: 48 0f 45 4d d0 cmovne -0x30(%rbp),%rcx 0.00 : e9e7: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : e9eb: 48 89 4d d0 mov %rcx,-0x30(%rbp) 0.00 : e9ef: e9 3e fd ff ff jmpq e732 <_dl_fini+0xc2> 0.00 : e9f4: 48 8d 0d 39 b4 00 00 lea 0xb439(%rip),%rcx # 19e34 <__PRETTY_FUNCTION__.10264> 0.00 : e9fb: 48 8d 35 e0 b3 00 00 lea 0xb3e0(%rip),%rsi # 19de2 <_dl_out_of_memory+0x39> 0.00 : ea02: 48 8d 3d ed b3 00 00 lea 0xb3ed(%rip),%rdi # 19df6 <_dl_out_of_memory+0x4d> 0.00 : ea09: ba b9 00 00 00 mov $0xb9,%edx 0.00 : ea0e: e8 5d 63 00 00 callq 14d70 <__GI___assert_fail> 0.00 : ea13: 48 8d 0d 1a b4 00 00 lea 0xb41a(%rip),%rcx # 19e34 <__PRETTY_FUNCTION__.10264> 0.00 : ea1a: 48 8d 35 c1 b3 00 00 lea 0xb3c1(%rip),%rsi # 19de2 <_dl_out_of_memory+0x39> 0.00 : ea21: 48 8d 3d 40 d4 00 00 lea 0xd440(%rip),%rdi # 1be68 <__PRETTY_FUNCTION__.3644+0x1af7> 0.00 : ea28: ba c4 00 00 00 mov $0xc4,%edx 0.00 : ea2d: e8 3e 63 00 00 callq 14d70 <__GI___assert_fail> 0.00 : ea32: 48 8b 15 7f 0f 21 00 mov 0x210f7f(%rip),%rdx # 21f9b8 <_rtld_global+0x958> 0.00 : ea39: 48 8b 35 70 0f 21 00 mov 0x210f70(%rip),%rsi # 21f9b0 <_rtld_global+0x950> 0.00 : ea40: 48 8d 3d 51 d4 00 00 lea 0xd451(%rip),%rdi # 1be98 <__PRETTY_FUNCTION__.3644+0x1b27> 0.00 : ea47: 31 c0 xor %eax,%eax 0.00 : ea49: e8 02 09 00 00 callq f350 <_dl_debug_printf> 0.00 : ea4e: e9 7d fe ff ff jmpq e8d0 <_dl_fini+0x260> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 25.00 ??:0 16.67 ??:0 16.67 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005490 : : **/ : static bool ixgbe_add_rx_frag(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *rx_buffer, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { 0.00 : 5490: 41 54 push %r12 25.00 : 5492: 49 89 ca mov %rcx,%r10 0.00 : 5495: 49 89 f4 mov %rsi,%r12 0.00 : 5498: 55 push %rbp 8.33 : 5499: 53 push %rbx : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 549a: 48 8b 47 30 mov 0x30(%rdi),%rax : struct page *page = rx_buffer->page; : unsigned int size = le16_to_cpu(rx_desc->wb.upper.length); 0.00 : 549e: 44 0f b7 42 0c movzwl 0xc(%rdx),%r8d : static bool ixgbe_add_rx_frag(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *rx_buffer, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : struct page *page = rx_buffer->page; 0.00 : 54a3: 48 8b 5e 10 mov 0x10(%rsi),%rbx : { : #if MAX_SKB_FRAGS < 8 : return ALIGN(IXGBE_MAX_RXBUFFER / MAX_SKB_FRAGS, 1024); : #else : #ifdef IXGBE_FCOE : if (test_bit(__IXGBE_RX_FCOE, &ring->state)) 0.00 : 54a7: 83 e0 20 and $0x20,%eax 0.00 : 54aa: 48 83 f8 01 cmp $0x1,%rax 0.00 : 54ae: 19 ed sbb %ebp,%ebp 0.00 : 54b0: 81 e5 00 f8 ff ff and $0xfffff800,%ebp 0.00 : 54b6: 81 c5 00 10 00 00 add $0x1000,%ebp : unsigned int truesize = ALIGN(size, L1_CACHE_BYTES); : unsigned int last_offset = ixgbe_rx_pg_size(rx_ring) - : ixgbe_rx_bufsz(rx_ring); : #endif : : if ((size <= IXGBE_RX_HDR_SIZE) && !skb_is_nonlinear(skb)) { 8.33 : 54bc: 41 81 f8 00 01 00 00 cmp $0x100,%r8d 0.00 : 54c3: 0f 87 97 00 00 00 ja 5560 8.33 : 54c9: 8b 79 6c mov 0x6c(%rcx),%edi 0.00 : 54cc: 85 ff test %edi,%edi 0.00 : 54ce: 0f 85 8c 00 00 00 jne 5560 : unsigned char *va = page_address(page) + rx_buffer->page_offset; 8.33 : 54d4: 48 be 00 00 00 00 00 movabs $0x160000000000,%rsi 0.00 : 54db: 16 00 00 0.00 : 54de: 48 b8 b7 6d db b6 6d movabs $0x6db6db6db6db6db7,%rax 0.00 : 54e5: db b6 6d : : memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); 0.00 : 54e8: 41 8d 50 07 lea 0x7(%r8),%edx : unsigned int last_offset = ixgbe_rx_pg_size(rx_ring) - : ixgbe_rx_bufsz(rx_ring); : #endif : : if ((size <= IXGBE_RX_HDR_SIZE) && !skb_is_nonlinear(skb)) { : unsigned char *va = page_address(page) + rx_buffer->page_offset; 0.00 : 54ec: 48 8d 34 33 lea (%rbx,%rsi,1),%rsi : : memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); 0.00 : 54f0: 81 e2 f8 ff 01 00 and $0x1fff8,%edx : unsigned int last_offset = ixgbe_rx_pg_size(rx_ring) - : ixgbe_rx_bufsz(rx_ring); : #endif : : if ((size <= IXGBE_RX_HDR_SIZE) && !skb_is_nonlinear(skb)) { : unsigned char *va = page_address(page) + rx_buffer->page_offset; 0.00 : 54f6: 48 c1 fe 03 sar $0x3,%rsi 0.00 : 54fa: 48 0f af f0 imul %rax,%rsi 16.67 : 54fe: 48 b8 00 00 00 00 00 movabs $0xffff880000000000,%rax 0.00 : 5505: 88 ff ff 0.00 : 5508: 48 c1 e6 0c shl $0xc,%rsi 0.00 : 550c: 48 01 c6 add %rax,%rsi 8.33 : 550f: 41 8b 44 24 18 mov 0x18(%r12),%eax : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); : skb->tail += len; : skb->len += len; 0.00 : 5514: 44 01 41 68 add %r8d,0x68(%rcx) 16.67 : 5518: 48 01 c6 add %rax,%rsi : #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb)) : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb) : { : return skb->head + skb->tail; 0.00 : 551b: 8b 81 cc 00 00 00 mov 0xcc(%rcx),%eax 0.00 : 5521: 89 c7 mov %eax,%edi 0.00 : 5523: 48 03 b9 d8 00 00 00 add 0xd8(%rcx),%rdi : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); : skb->tail += len; 0.00 : 552a: 41 8d 04 00 lea (%r8,%rax,1),%eax 0.00 : 552e: 89 81 cc 00 00 00 mov %eax,0xcc(%rcx) : : memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); 0.00 : 5534: e8 00 00 00 00 callq 5539 : : /* we can reuse buffer as-is, just make sure it is local */ : if (likely(page_to_nid(page) == numa_node_id())) 0.00 : 5539: 48 8b 03 mov (%rbx),%rax : : #ifndef numa_node_id : /* Returns the number of the current Node. */ : static inline int numa_node_id(void) : { : return __this_cpu_read(numa_node); 0.00 : 553c: 65 8b 14 25 00 00 00 mov %gs:0x0,%edx 0.00 : 5543: 00 0.00 : 5544: 48 c1 e8 36 shr $0x36,%rax 0.00 : 5548: 39 c2 cmp %eax,%edx 0.00 : 554a: 0f 85 9a 00 00 00 jne 55ea : * : * Atomically increments @v by 1. : */ : static inline void atomic_inc(atomic_t *v) : { : asm volatile(LOCK_PREFIX "incl %0" 0.00 : 5550: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5555: eb 72 jmp 55c9 0.00 : 5557: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 555e: 00 00 : /* this page cannot be reused so discard it */ : put_page(page); : return false; : } : : skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, 0.00 : 5560: 41 8b 92 d0 00 00 00 mov 0xd0(%r10),%edx 0.00 : 5567: 49 8b 82 d8 00 00 00 mov 0xd8(%r10),%rax 0.00 : 556e: 41 89 e9 mov %ebp,%r9d 0.00 : 5571: 41 8b 4c 24 18 mov 0x18(%r12),%ecx 0.00 : 5576: 4c 89 d7 mov %r10,%rdi 0.00 : 5579: 0f b7 34 10 movzwl (%rax,%rdx,1),%esi 0.00 : 557d: 48 89 da mov %rbx,%rdx 0.00 : 5580: e8 00 00 00 00 callq 5585 : rx_buffer->page_offset, size, truesize); : : /* avoid re-using remote pages */ : if (unlikely(page_to_nid(page) != numa_node_id())) 0.00 : 5585: 48 8b 03 mov (%rbx),%rax 0.00 : 5588: 65 8b 14 25 00 00 00 mov %gs:0x0,%edx 0.00 : 558f: 00 0.00 : 5590: 48 c1 e8 36 shr $0x36,%rax 0.00 : 5594: 39 c2 cmp %eax,%edx 0.00 : 5596: 75 4d jne 55e5 0.00 : 5598: 48 8b 03 mov (%rbx),%rax : #endif : } : : static inline struct page *compound_head(struct page *page) : { : if (unlikely(PageTail(page))) 0.00 : 559b: 48 89 da mov %rbx,%rdx 0.00 : 559e: a9 00 00 02 00 test $0x20000,%eax 0.00 : 55a3: 74 04 je 55a9 : return page->first_page; 0.00 : 55a5: 48 8b 53 10 mov 0x10(%rbx),%rdx : * : * Atomically reads the value of @v. : */ : static inline int atomic_read(const atomic_t *v) : { : return (*(volatile int *)&(v)->counter); 0.00 : 55a9: 8b 42 08 mov 0x8(%rdx),%eax : return false; : : #if (PAGE_SIZE < 8192) : /* if we are only owner of page we can reuse it */ : if (unlikely(page_count(page) != 1)) 0.00 : 55ac: 83 e8 01 sub $0x1,%eax 0.00 : 55af: 75 34 jne 55e5 : return false; : : /* flip page offset to other buffer */ : rx_buffer->page_offset ^= truesize; 0.00 : 55b1: 41 31 6c 24 18 xor %ebp,0x18(%r12) 0.00 : 55b6: 48 8b 03 mov (%rbx),%rax : : extern bool __get_page_tail(struct page *page); : : static inline void get_page(struct page *page) : { : if (unlikely(PageTail(page))) 0.00 : 55b9: a9 00 00 02 00 test $0x20000,%eax 0.00 : 55be: 75 10 jne 55d0 : * : * Atomically increments @v by 1. : */ : static inline void atomic_inc(atomic_t *v) : { : asm volatile(LOCK_PREFIX "incl %0" 0.00 : 55c0: f0 ff 43 08 lock incl 0x8(%rbx) 0.00 : 55c4: b8 01 00 00 00 mov $0x1,%eax : : /* bump ref count on page before it is given to the stack */ : get_page(page); : : return true; : } 0.00 : 55c9: 5b pop %rbx 0.00 : 55ca: 5d pop %rbp 0.00 : 55cb: 41 5c pop %r12 0.00 : 55cd: c3 retq 0.00 : 55ce: 66 90 xchg %ax,%ax : if (likely(__get_page_tail(page))) 0.00 : 55d0: 48 89 df mov %rbx,%rdi 0.00 : 55d3: e8 00 00 00 00 callq 55d8 0.00 : 55d8: 84 c0 test %al,%al 0.00 : 55da: 74 e4 je 55c0 0.00 : 55dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55e0: e9 6b ff ff ff jmpq 5550 0.00 : 55e5: 31 c0 xor %eax,%eax 0.00 : 55e7: 90 nop 0.00 : 55e8: eb df jmp 55c9 : /* we can reuse buffer as-is, just make sure it is local */ : if (likely(page_to_nid(page) == numa_node_id())) : return true; : : /* this page cannot be reused so discard it */ : put_page(page); 0.00 : 55ea: 48 89 df mov %rbx,%rdi 0.00 : 55ed: 0f 1f 00 nopl (%rax) 0.00 : 55f0: e8 00 00 00 00 callq 55f5 0.00 : 55f5: 31 c0 xor %eax,%eax : : /* bump ref count on page before it is given to the stack */ : get_page(page); : : return true; : } 0.00 : 55f7: eb d0 jmp 55c9 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2797 23.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2792 14.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2778 9.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2773 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2773 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2773 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2792 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2802 4.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2811 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005acb20 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalAnd(BoolExprState *andExpr, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2773 9.52 : 5acb20: 55 push %rbp : List *clauses = andExpr->args; : ListCell *clause; : bool AnyNull; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2778 14.29 : 5acb21: 48 85 c9 test %rcx,%rcx : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalAnd(BoolExprState *andExpr, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { 0.00 : 5acb24: 48 89 e5 mov %rsp,%rbp 0.00 : 5acb27: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2773 4.76 : 5acb29: 49 89 f6 mov %rsi,%r14 0.00 : 5acb2c: 41 55 push %r13 0.00 : 5acb2e: 41 54 push %r12 4.76 : 5acb30: 49 89 d4 mov %rdx,%r12 0.00 : 5acb33: 53 push %rbx : List *clauses = andExpr->args; 0.00 : 5acb34: 48 8b 47 18 mov 0x18(%rdi),%rax : ListCell *clause; : bool AnyNull; : : if (isDone) 0.00 : 5acb38: 74 06 je 5acb40 : *isDone = ExprSingleResult; 0.00 : 5acb3a: c7 01 00 00 00 00 movl $0x0,(%rcx) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5acb40: 48 85 c0 test %rax,%rax 0.00 : 5acb43: 74 6b je 5acbb0 0.00 : 5acb45: 48 8b 58 08 mov 0x8(%rax),%rbx : * we return NULL; otherwise we return TRUE. This makes sense when you : * interpret NULL as "don't know", using the same sort of reasoning as for : * OR, above. : */ : : foreach(clause, clauses) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2792 23.81 : 5acb49: 48 85 db test %rbx,%rbx 0.00 : 5acb4c: 74 62 je 5acbb0 0.00 : 5acb4e: 45 31 ed xor %r13d,%r13d 0.00 : 5acb51: eb 14 jmp 5acb67 0.00 : 5acb53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : clause_value = ExecEvalExpr(clausestate, econtext, isNull, NULL); : : /* : * if we have a non-null false result, then return it. : */ : if (*isNull) 0.00 : 5acb58: 41 bd 01 00 00 00 mov $0x1,%r13d : * we return NULL; otherwise we return TRUE. This makes sense when you : * interpret NULL as "don't know", using the same sort of reasoning as for : * OR, above. : */ : : foreach(clause, clauses) 0.00 : 5acb5e: 48 8b 5b 08 mov 0x8(%rbx),%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2792 4.76 : 5acb62: 48 85 db test %rbx,%rbx 0.00 : 5acb65: 74 29 je 5acb90 : { : ExprState *clausestate = (ExprState *) lfirst(clause); 0.00 : 5acb67: 48 8b 03 mov (%rbx),%rax : Datum clause_value; : : clause_value = ExecEvalExpr(clausestate, econtext, isNull, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2797 28.57 : 5acb6a: 31 c9 xor %ecx,%ecx 0.00 : 5acb6c: 4c 89 e2 mov %r12,%rdx 0.00 : 5acb6f: 4c 89 f6 mov %r14,%rsi 0.00 : 5acb72: 48 89 c7 mov %rax,%rdi 0.00 : 5acb75: ff 50 10 callq *0x10(%rax) : : /* : * if we have a non-null false result, then return it. : */ : if (*isNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2802 4.76 : 5acb78: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5acb7d: 75 d9 jne 5acb58 : AnyNull = true; /* remember we got a null */ : else if (!DatumGetBool(clause_value)) 0.00 : 5acb7f: 84 c0 test %al,%al 0.00 : 5acb81: 75 db jne 5acb5e : } : : /* AnyNull is true if at least one clause evaluated to NULL */ : *isNull = AnyNull; : return BoolGetDatum(!AnyNull); : } 0.00 : 5acb83: 5b pop %rbx 0.00 : 5acb84: 41 5c pop %r12 0.00 : 5acb86: 41 5d pop %r13 0.00 : 5acb88: 41 5e pop %r14 0.00 : 5acb8a: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2811 4.76 : 5acb8b: c3 retq 0.00 : 5acb8c: 0f 1f 40 00 nopl 0x0(%rax) : * we return NULL; otherwise we return TRUE. This makes sense when you : * interpret NULL as "don't know", using the same sort of reasoning as for : * OR, above. : */ : : foreach(clause, clauses) 0.00 : 5acb90: 44 89 e8 mov %r13d,%eax 0.00 : 5acb93: 83 f0 01 xor $0x1,%eax 0.00 : 5acb96: 0f b6 c0 movzbl %al,%eax : else if (!DatumGetBool(clause_value)) : return clause_value; : } : : /* AnyNull is true if at least one clause evaluated to NULL */ : *isNull = AnyNull; 0.00 : 5acb99: 45 88 2c 24 mov %r13b,(%r12) : return BoolGetDatum(!AnyNull); : } 0.00 : 5acb9d: 5b pop %rbx 0.00 : 5acb9e: 41 5c pop %r12 0.00 : 5acba0: 41 5d pop %r13 0.00 : 5acba2: 41 5e pop %r14 0.00 : 5acba4: c9 leaveq 0.00 : 5acba5: c3 retq 0.00 : 5acba6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5acbad: 00 00 00 : * we return NULL; otherwise we return TRUE. This makes sense when you : * interpret NULL as "don't know", using the same sort of reasoning as for : * OR, above. : */ : : foreach(clause, clauses) 0.00 : 5acbb0: 45 31 ed xor %r13d,%r13d 0.00 : 5acbb3: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5acbb8: eb df jmp 5acb99 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:670 17.39 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1329 13.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1326 13.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1329 8.70 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1211 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:612 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:670 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:670 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:670 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1323 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1214 4.35 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1223 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c2030 : : * ExecMergeJoin : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecMergeJoin(MergeJoinState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:612 4.35 : 5c2030: 55 push %rbp 0.00 : 5c2031: 48 89 e5 mov %rsp,%rbp 0.00 : 5c2034: 41 57 push %r15 0.00 : 5c2036: 41 56 push %r14 0.00 : 5c2038: 41 55 push %r13 0.00 : 5c203a: 41 54 push %r12 0.00 : 5c203c: 53 push %rbx 0.00 : 5c203d: 48 89 fb mov %rdi,%rbx 0.00 : 5c2040: 48 83 ec 28 sub $0x28,%rsp : * get information from node : */ : innerPlan = innerPlanState(node); : outerPlan = outerPlanState(node); : econtext = node->js.ps.ps_ExprContext; : joinqual = node->js.joinqual; 0.00 : 5c2044: 48 8b 87 80 00 00 00 mov 0x80(%rdi),%rax : bool doFillInner; : : /* : * get information from node : */ : innerPlan = innerPlanState(node); 0.00 : 5c204b: 4c 8b 6f 38 mov 0x38(%rdi),%r13 : outerPlan = outerPlanState(node); 0.00 : 5c204f: 4c 8b 7f 30 mov 0x30(%rdi),%r15 : econtext = node->js.ps.ps_ExprContext; 0.00 : 5c2053: 4c 8b 77 60 mov 0x60(%rdi),%r14 : joinqual = node->js.joinqual; 0.00 : 5c2057: 48 89 45 b0 mov %rax,-0x50(%rbp) : otherqual = node->js.ps.qual; 0.00 : 5c205b: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 5c205f: 48 89 45 b8 mov %rax,-0x48(%rbp) : doFillOuter = node->mj_FillOuter; 0.00 : 5c2063: 0f b6 87 9e 00 00 00 movzbl 0x9e(%rdi),%eax 0.00 : 5c206a: 88 45 c6 mov %al,-0x3a(%rbp) : doFillInner = node->mj_FillInner; 0.00 : 5c206d: 0f b6 87 9f 00 00 00 movzbl 0x9f(%rdi),%eax 0.00 : 5c2074: 88 45 c7 mov %al,-0x39(%rbp) : /* : * Check to see if we're still projecting out tuples from a previous join : * tuple (because there is a function-returning-set in the projection : * expressions). If so, try to project another one. : */ : if (node->js.ps.ps_TupFromTlist) 0.00 : 5c2077: 80 7f 70 00 cmpb $0x0,0x70(%rdi) 0.00 : 5c207b: 74 1b je 5c2098 : { : TupleTableSlot *result; : ExprDoneCond isDone; : : result = ExecProject(node->js.ps.ps_ProjInfo, &isDone); 0.00 : 5c207d: 48 8b 7f 68 mov 0x68(%rdi),%rdi 0.00 : 5c2081: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5c2085: e8 76 af fe ff callq 5ad000 : if (isDone == ExprMultipleResult) 0.00 : 5c208a: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) 0.00 : 5c208e: 0f 84 a8 00 00 00 je 5c213c : return result; : /* Done with that source tuple... */ : node->js.ps.ps_TupFromTlist = false; 0.00 : 5c2094: c6 43 70 00 movb $0x0,0x70(%rbx) : /* : * Reset per-tuple memory context to free any expression evaluation : * storage allocated in the previous tuple cycle. Note this can't happen : * until we're done projecting out tuples from a join tuple. : */ : ResetExprContext(econtext); 0.00 : 5c2098: 49 8b 7e 28 mov 0x28(%r14),%rdi 0.00 : 5c209c: e8 0f 69 1d 00 callq 7989b0 0.00 : 5c20a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : MJ_dump(node); : : /* : * get the current state of the join and do things accordingly. : */ : switch (node->mj_JoinState) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:670 4.35 : 5c20a8: 83 bb 98 00 00 00 0b cmpl $0xb,0x98(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:670 17.39 : 5c20af: 76 37 jbe 5c20e8 : : /* : * broken state value? : */ : default: : elog(ERROR, "unrecognized mergejoin state: %d", 0.00 : 5c20b1: ba 41 c0 88 00 mov $0x88c041,%edx 0.00 : 5c20b6: be ae 05 00 00 mov $0x5ae,%esi 0.00 : 5c20bb: bf 4e be 88 00 mov $0x88be4e,%edi 0.00 : 5c20c0: e8 5b 93 1b 00 callq 77b420 0.00 : 5c20c5: 8b 93 98 00 00 00 mov 0x98(%rbx),%edx 0.00 : 5c20cb: be 68 bf 88 00 mov $0x88bf68,%esi 0.00 : 5c20d0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c20d5: 31 c0 xor %eax,%eax 0.00 : 5c20d7: e8 54 91 1b 00 callq 77b230 0.00 : 5c20dc: e8 ef 73 ea ff callq 4694d0 0.00 : 5c20e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : MJ_dump(node); : : /* : * get the current state of the join and do things accordingly. : */ : switch (node->mj_JoinState) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:670 4.35 : 5c20e8: 8b 83 98 00 00 00 mov 0x98(%rbx),%eax 4.35 : 5c20ee: ff 24 c5 c0 bf 88 00 jmpq *0x88bfc0(,%rax,8) 0.00 : 5c20f5: 0f 1f 00 nopl (%rax) : case EXEC_MJ_ENDINNER: : MJ_printf("ExecMergeJoin: EXEC_MJ_ENDINNER\n"); : : Assert(doFillOuter); : : if (!node->mj_MatchedOuter) 0.00 : 5c20f8: 80 bb a0 00 00 00 00 cmpb $0x0,0xa0(%rbx) 0.00 : 5c20ff: 75 14 jne 5c2115 : * Generate a fake join tuple with nulls for the inner : * tuple, and return it if it passes the non-join quals. : */ : TupleTableSlot *result; : : node->mj_MatchedOuter = true; /* do it only once */ 0.00 : 5c2101: c6 83 a0 00 00 00 01 movb $0x1,0xa0(%rbx) : : result = MJFillOuter(node); 0.00 : 5c2108: 48 89 df mov %rbx,%rdi 0.00 : 5c210b: e8 70 fe ff ff callq 5c1f80 : if (result) 0.00 : 5c2110: 48 85 c0 test %rax,%rax 0.00 : 5c2113: 75 27 jne 5c213c : } : : /* : * now we get the next outer tuple, if any : */ : outerTupleSlot = ExecProcNode(outerPlan); 0.00 : 5c2115: 4c 89 ff mov %r15,%rdi 0.00 : 5c2118: e8 83 a3 fe ff callq 5ac4a0 : node->mj_OuterTupleSlot = outerTupleSlot; : MJ_DEBUG_PROC_NODE(outerTupleSlot); : node->mj_MatchedOuter = false; : : if (TupIsNull(outerTupleSlot)) 0.00 : 5c211d: 48 85 c0 test %rax,%rax : : /* : * now we get the next outer tuple, if any : */ : outerTupleSlot = ExecProcNode(outerPlan); : node->mj_OuterTupleSlot = outerTupleSlot; 0.00 : 5c2120: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) : MJ_DEBUG_PROC_NODE(outerTupleSlot); : node->mj_MatchedOuter = false; 0.00 : 5c2127: c6 83 a0 00 00 00 00 movb $0x0,0xa0(%rbx) : : if (TupIsNull(outerTupleSlot)) 0.00 : 5c212e: 74 0a je 5c213a 0.00 : 5c2130: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c2134: 0f 84 6e ff ff ff je 5c20a8 : : /* : * broken state value? : */ : default: : elog(ERROR, "unrecognized mergejoin state: %d", 0.00 : 5c213a: 31 c0 xor %eax,%eax : (int) node->mj_JoinState); : } : } : } 0.00 : 5c213c: 48 83 c4 28 add $0x28,%rsp 0.00 : 5c2140: 5b pop %rbx 0.00 : 5c2141: 41 5c pop %r12 0.00 : 5c2143: 41 5d pop %r13 0.00 : 5c2145: 41 5e pop %r14 0.00 : 5c2147: 41 5f pop %r15 0.00 : 5c2149: c9 leaveq 0.00 : 5c214a: c3 retq 0.00 : 5c214b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : case EXEC_MJ_ENDOUTER: : MJ_printf("ExecMergeJoin: EXEC_MJ_ENDOUTER\n"); : : Assert(doFillInner); : : if (!node->mj_MatchedInner) 0.00 : 5c2150: 80 bb a1 00 00 00 00 cmpb $0x0,0xa1(%rbx) 0.00 : 5c2157: 75 14 jne 5c216d : * Generate a fake join tuple with nulls for the outer : * tuple, and return it if it passes the non-join quals. : */ : TupleTableSlot *result; : : node->mj_MatchedInner = true; /* do it only once */ 0.00 : 5c2159: c6 83 a1 00 00 00 01 movb $0x1,0xa1(%rbx) : : result = MJFillInner(node); 0.00 : 5c2160: 48 89 df mov %rbx,%rdi 0.00 : 5c2163: e8 68 fd ff ff callq 5c1ed0 : if (result) 0.00 : 5c2168: 48 85 c0 test %rax,%rax 0.00 : 5c216b: 75 cf jne 5c213c : return result; : } : : /* Mark before advancing, if wanted */ : if (node->mj_ExtraMarks) 0.00 : 5c216d: 80 bb 9c 00 00 00 00 cmpb $0x0,0x9c(%rbx) 0.00 : 5c2174: 0f 85 ae 04 00 00 jne 5c2628 : ExecMarkPos(innerPlan); : : /* : * now we get the next inner tuple, if any : */ : innerTupleSlot = ExecProcNode(innerPlan); 0.00 : 5c217a: 4c 89 ef mov %r13,%rdi 0.00 : 5c217d: e8 1e a3 fe ff callq 5ac4a0 : node->mj_InnerTupleSlot = innerTupleSlot; : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; : : if (TupIsNull(innerTupleSlot)) 0.00 : 5c2182: 48 85 c0 test %rax,%rax : : /* : * now we get the next inner tuple, if any : */ : innerTupleSlot = ExecProcNode(innerPlan); : node->mj_InnerTupleSlot = innerTupleSlot; 0.00 : 5c2185: 48 89 83 b0 00 00 00 mov %rax,0xb0(%rbx) : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; 0.00 : 5c218c: c6 83 a1 00 00 00 00 movb $0x0,0xa1(%rbx) : : if (TupIsNull(innerTupleSlot)) 0.00 : 5c2193: 75 9b jne 5c2130 : : /* : * broken state value? : */ : default: : elog(ERROR, "unrecognized mergejoin state: %d", 0.00 : 5c2195: 31 c0 xor %eax,%eax 0.00 : 5c2197: eb a3 jmp 5c213c 0.00 : 5c2199: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * outer-join fill tuple for this inner tuple. : */ : case EXEC_MJ_SKIPINNER_ADVANCE: : MJ_printf("ExecMergeJoin: EXEC_MJ_SKIPINNER_ADVANCE\n"); : : if (doFillInner && !node->mj_MatchedInner) 0.00 : 5c21a0: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) 0.00 : 5c21a4: 74 0d je 5c21b3 0.00 : 5c21a6: 80 bb a1 00 00 00 00 cmpb $0x0,0xa1(%rbx) 0.00 : 5c21ad: 0f 84 fd 04 00 00 je 5c26b0 : if (result) : return result; : } : : /* Mark before advancing, if wanted */ : if (node->mj_ExtraMarks) 0.00 : 5c21b3: 80 bb 9c 00 00 00 00 cmpb $0x0,0x9c(%rbx) 0.00 : 5c21ba: 0f 85 58 04 00 00 jne 5c2618 : ExecMarkPos(innerPlan); : : /* : * now we get the next inner tuple, if any : */ : innerTupleSlot = ExecProcNode(innerPlan); 0.00 : 5c21c0: 4c 89 ef mov %r13,%rdi 0.00 : 5c21c3: e8 d8 a2 fe ff callq 5ac4a0 : node->mj_InnerTupleSlot = innerTupleSlot; : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1326 13.04 : 5c21c8: c6 83 a1 00 00 00 00 movb $0x0,0xa1(%rbx) : ExecMarkPos(innerPlan); : : /* : * now we get the next inner tuple, if any : */ : innerTupleSlot = ExecProcNode(innerPlan); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1323 4.35 : 5c21cf: 48 89 c6 mov %rax,%rsi : node->mj_InnerTupleSlot = innerTupleSlot; 0.00 : 5c21d2: 48 89 83 b0 00 00 00 mov %rax,0xb0(%rbx) : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; : : /* Compute join values and check for unmatchability */ : switch (MJEvalInnerValues(node, innerTupleSlot)) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1329 13.04 : 5c21d9: 48 89 df mov %rbx,%rdi 0.00 : 5c21dc: e8 df fb ff ff callq 5c1dc0 17.39 : 5c21e1: 83 f8 01 cmp $0x1,%eax 0.00 : 5c21e4: 0f 84 4e 04 00 00 je 5c2638 0.00 : 5c21ea: 0f 83 b8 03 00 00 jae 5c25a8 : { : case MJEVAL_MATCHABLE: : /* proceed to compare it to the current outer */ : node->mj_JoinState = EXEC_MJ_SKIP_TEST; 0.00 : 5c21f0: c7 83 98 00 00 00 07 movl $0x7,0x98(%rbx) 0.00 : 5c21f7: 00 00 00 : break; 0.00 : 5c21fa: e9 a9 fe ff ff jmpq 5c20a8 0.00 : 5c21ff: 90 nop : * outer-join fill tuple for this outer tuple. : */ : case EXEC_MJ_SKIPOUTER_ADVANCE: : MJ_printf("ExecMergeJoin: EXEC_MJ_SKIPOUTER_ADVANCE\n"); : : if (doFillOuter && !node->mj_MatchedOuter) 0.00 : 5c2200: 80 7d c6 00 cmpb $0x0,-0x3a(%rbp) 0.00 : 5c2204: 74 0d je 5c2213 0.00 : 5c2206: 80 bb a0 00 00 00 00 cmpb $0x0,0xa0(%rbx) 0.00 : 5c220d: 0f 84 3d 04 00 00 je 5c2650 : } : : /* : * now we get the next outer tuple, if any : */ : outerTupleSlot = ExecProcNode(outerPlan); 0.00 : 5c2213: 4c 89 ff mov %r15,%rdi 0.00 : 5c2216: e8 85 a2 fe ff callq 5ac4a0 : node->mj_OuterTupleSlot = outerTupleSlot; : MJ_DEBUG_PROC_NODE(outerTupleSlot); : node->mj_MatchedOuter = false; 0.00 : 5c221b: c6 83 a0 00 00 00 00 movb $0x0,0xa0(%rbx) : : /* : * now we get the next outer tuple, if any : */ : outerTupleSlot = ExecProcNode(outerPlan); : node->mj_OuterTupleSlot = outerTupleSlot; 0.00 : 5c2222: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) : MJ_DEBUG_PROC_NODE(outerTupleSlot); : node->mj_MatchedOuter = false; : : /* Compute join values and check for unmatchability */ : switch (MJEvalOuterValues(node)) 0.00 : 5c2229: 48 89 df mov %rbx,%rdi 0.00 : 5c222c: e8 7f fa ff ff callq 5c1cb0 0.00 : 5c2231: 83 f8 01 cmp $0x1,%eax 0.00 : 5c2234: 0f 84 16 05 00 00 je 5c2750 0.00 : 5c223a: 72 b4 jb 5c21f0 0.00 : 5c223c: 83 f8 02 cmp $0x2,%eax 0.00 : 5c223f: 90 nop 0.00 : 5c2240: 0f 85 62 fe ff ff jne 5c20a8 : break; : case MJEVAL_ENDOFJOIN: : /* No more outer tuples */ : MJ_printf("ExecMergeJoin: end of outer subplan\n"); : innerTupleSlot = node->mj_InnerTupleSlot; : if (doFillInner && !TupIsNull(innerTupleSlot)) 0.00 : 5c2246: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) : node->mj_JoinState = EXEC_MJ_SKIPOUTER_ADVANCE; : break; : case MJEVAL_ENDOFJOIN: : /* No more outer tuples */ : MJ_printf("ExecMergeJoin: end of outer subplan\n"); : innerTupleSlot = node->mj_InnerTupleSlot; 0.00 : 5c224a: 48 8b 83 b0 00 00 00 mov 0xb0(%rbx),%rax : if (doFillInner && !TupIsNull(innerTupleSlot)) 0.00 : 5c2251: 0f 84 e3 fe ff ff je 5c213a 0.00 : 5c2257: 48 85 c0 test %rax,%rax 0.00 : 5c225a: 0f 84 da fe ff ff je 5c213a 0.00 : 5c2260: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c2264: 0f 85 d0 fe ff ff jne 5c213a : { : /* : * Need to emit right-join tuples for remaining : * inner tuples. : */ : node->mj_JoinState = EXEC_MJ_ENDOUTER; 0.00 : 5c226a: c7 83 98 00 00 00 0a movl $0xa,0x98(%rbx) 0.00 : 5c2271: 00 00 00 : break; 0.00 : 5c2274: e9 2f fe ff ff jmpq 5c20a8 0.00 : 5c2279: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : *------------------------------------------------ : */ : case EXEC_MJ_NEXTOUTER: : MJ_printf("ExecMergeJoin: EXEC_MJ_NEXTOUTER\n"); : : if (doFillOuter && !node->mj_MatchedOuter) 0.00 : 5c2280: 80 7d c6 00 cmpb $0x0,-0x3a(%rbp) 0.00 : 5c2284: 74 0d je 5c2293 0.00 : 5c2286: 80 bb a0 00 00 00 00 cmpb $0x0,0xa0(%rbx) 0.00 : 5c228d: 0f 84 dd 03 00 00 je 5c2670 : } : : /* : * now we get the next outer tuple, if any : */ : outerTupleSlot = ExecProcNode(outerPlan); 0.00 : 5c2293: 4c 89 ff mov %r15,%rdi 0.00 : 5c2296: e8 05 a2 fe ff callq 5ac4a0 : node->mj_OuterTupleSlot = outerTupleSlot; : MJ_DEBUG_PROC_NODE(outerTupleSlot); : node->mj_MatchedOuter = false; 0.00 : 5c229b: c6 83 a0 00 00 00 00 movb $0x0,0xa0(%rbx) : : /* : * now we get the next outer tuple, if any : */ : outerTupleSlot = ExecProcNode(outerPlan); : node->mj_OuterTupleSlot = outerTupleSlot; 0.00 : 5c22a2: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) : MJ_DEBUG_PROC_NODE(outerTupleSlot); : node->mj_MatchedOuter = false; : : /* Compute join values and check for unmatchability */ : switch (MJEvalOuterValues(node)) 0.00 : 5c22a9: 48 89 df mov %rbx,%rdi 0.00 : 5c22ac: e8 ff f9 ff ff callq 5c1cb0 0.00 : 5c22b1: 83 f8 01 cmp $0x1,%eax 0.00 : 5c22b4: 0f 84 1a 02 00 00 je 5c24d4 0.00 : 5c22ba: 73 80 jae 5c223c : { : case MJEVAL_MATCHABLE: : /* Go test the new tuple against the marked tuple */ : node->mj_JoinState = EXEC_MJ_TESTOUTER; 0.00 : 5c22bc: c7 83 98 00 00 00 05 movl $0x5,0x98(%rbx) 0.00 : 5c22c3: 00 00 00 : break; 0.00 : 5c22c6: e9 dd fd ff ff jmpq 5c20a8 0.00 : 5c22cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * outer-join fill tuple for this inner tuple. : */ : case EXEC_MJ_NEXTINNER: : MJ_printf("ExecMergeJoin: EXEC_MJ_NEXTINNER\n"); : : if (doFillInner && !node->mj_MatchedInner) 0.00 : 5c22d0: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) 0.00 : 5c22d4: 74 0d je 5c22e3 0.00 : 5c22d6: 80 bb a1 00 00 00 00 cmpb $0x0,0xa1(%rbx) 0.00 : 5c22dd: 0f 84 ad 03 00 00 je 5c2690 : * previously marked tuples). : * : * NB: must NOT do "extraMarks" here, since we may need to : * return to previously marked tuples. : */ : innerTupleSlot = ExecProcNode(innerPlan); 0.00 : 5c22e3: 4c 89 ef mov %r13,%rdi 0.00 : 5c22e6: e8 b5 a1 fe ff callq 5ac4a0 : node->mj_InnerTupleSlot = innerTupleSlot; : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; 0.00 : 5c22eb: c6 83 a1 00 00 00 00 movb $0x0,0xa1(%rbx) : * previously marked tuples). : * : * NB: must NOT do "extraMarks" here, since we may need to : * return to previously marked tuples. : */ : innerTupleSlot = ExecProcNode(innerPlan); 0.00 : 5c22f2: 48 89 c6 mov %rax,%rsi : node->mj_InnerTupleSlot = innerTupleSlot; 0.00 : 5c22f5: 48 89 83 b0 00 00 00 mov %rax,0xb0(%rbx) : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; : : /* Compute join values and check for unmatchability */ : switch (MJEvalInnerValues(node, innerTupleSlot)) 0.00 : 5c22fc: 48 89 df mov %rbx,%rdi 0.00 : 5c22ff: e8 bc fa ff ff callq 5c1dc0 0.00 : 5c2304: 83 f8 01 cmp $0x1,%eax 0.00 : 5c2307: 0f 84 c7 01 00 00 je 5c24d4 0.00 : 5c230d: 0f 83 ad 01 00 00 jae 5c24c0 : * the next inner tuple (EXEC_MJ_JOINTUPLES). : * : * If they do not match then advance to next outer : * tuple. : */ : compareResult = MJCompare(node); 0.00 : 5c2313: 48 89 df mov %rbx,%rdi 0.00 : 5c2316: 66 90 xchg %ax,%ax 0.00 : 5c2318: e8 73 f8 ff ff callq 5c1b90 : MJ_DEBUG_COMPARE(compareResult); : : if (compareResult == 0) : node->mj_JoinState = EXEC_MJ_JOINTUPLES; 0.00 : 5c231d: 83 f8 01 cmp $0x1,%eax 0.00 : 5c2320: 19 c0 sbb %eax,%eax 0.00 : 5c2322: 83 c0 04 add $0x4,%eax 0.00 : 5c2325: 89 83 98 00 00 00 mov %eax,0x98(%rbx) 0.00 : 5c232b: e9 78 fd ff ff jmpq 5c20a8 : break; : : case EXEC_MJ_INITIALIZE_INNER: : MJ_printf("ExecMergeJoin: EXEC_MJ_INITIALIZE_INNER\n"); : : innerTupleSlot = ExecProcNode(innerPlan); 0.00 : 5c2330: 4c 89 ef mov %r13,%rdi 0.00 : 5c2333: e8 68 a1 fe ff callq 5ac4a0 : node->mj_InnerTupleSlot = innerTupleSlot; : : /* Compute join values and check for unmatchability */ : switch (MJEvalInnerValues(node, innerTupleSlot)) 0.00 : 5c2338: 48 89 df mov %rbx,%rdi : break; : : case EXEC_MJ_INITIALIZE_INNER: : MJ_printf("ExecMergeJoin: EXEC_MJ_INITIALIZE_INNER\n"); : : innerTupleSlot = ExecProcNode(innerPlan); 0.00 : 5c233b: 48 89 c6 mov %rax,%rsi : node->mj_InnerTupleSlot = innerTupleSlot; 0.00 : 5c233e: 48 89 83 b0 00 00 00 mov %rax,0xb0(%rbx) : : /* Compute join values and check for unmatchability */ : switch (MJEvalInnerValues(node, innerTupleSlot)) 0.00 : 5c2345: e8 76 fa ff ff callq 5c1dc0 0.00 : 5c234a: 83 f8 01 cmp $0x1,%eax 0.00 : 5c234d: 0f 84 9d 03 00 00 je 5c26f0 0.00 : 5c2353: 0f 82 97 fe ff ff jb 5c21f0 0.00 : 5c2359: 83 f8 02 cmp $0x2,%eax 0.00 : 5c235c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5c2360: 0f 85 42 fd ff ff jne 5c20a8 : } : break; : case MJEVAL_ENDOFJOIN: : /* No more inner tuples */ : MJ_printf("ExecMergeJoin: nothing in inner subplan\n"); : if (doFillOuter) 0.00 : 5c2366: 80 7d c6 00 cmpb $0x0,-0x3a(%rbp) 0.00 : 5c236a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c2370: 0f 84 c4 fd ff ff je 5c213a : * tuples, including the one we just fetched. We : * set MatchedOuter = false to force the ENDINNER : * state to emit first tuple before advancing : * outer. : */ : node->mj_JoinState = EXEC_MJ_ENDINNER; 0.00 : 5c2376: c7 83 98 00 00 00 0b movl $0xb,0x98(%rbx) 0.00 : 5c237d: 00 00 00 : node->mj_MatchedOuter = false; 0.00 : 5c2380: c6 83 a0 00 00 00 00 movb $0x0,0xa0(%rbx) : break; 0.00 : 5c2387: e9 1c fd ff ff jmpq 5c20a8 0.00 : 5c238c: 0f 1f 40 00 nopl 0x0(%rax) : /* : * before we advance, make sure the current tuples do not : * satisfy the mergeclauses. If they do, then we update the : * marked tuple position and go join them. : */ : compareResult = MJCompare(node); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1211 8.70 : 5c2390: 48 89 df mov %rbx,%rdi 0.00 : 5c2393: e8 f8 f7 ff ff callq 5c1b90 : MJ_DEBUG_COMPARE(compareResult); : : if (compareResult == 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1214 4.35 : 5c2398: 85 c0 test %eax,%eax 0.00 : 5c239a: 0f 84 48 02 00 00 je 5c25e8 : MarkInnerTuple(node->mj_InnerTupleSlot, node); : : node->mj_JoinState = EXEC_MJ_JOINTUPLES; : } : else if (compareResult < 0) : node->mj_JoinState = EXEC_MJ_SKIPOUTER_ADVANCE; 0.00 : 5c23a0: c1 f8 1f sar $0x1f,%eax 0.00 : 5c23a3: 83 c0 09 add $0x9,%eax 0.00 : 5c23a6: 89 83 98 00 00 00 mov %eax,0x98(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:1223 4.35 : 5c23ac: e9 f7 fc ff ff jmpq 5c20a8 0.00 : 5c23b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * qual. One per tuple should be sufficient. We do have to : * set up the econtext links to the tuples for ExecQual to : * use. : */ : outerTupleSlot = node->mj_OuterTupleSlot; : econtext->ecxt_outertuple = outerTupleSlot; 0.00 : 5c23b8: 48 8b 83 a8 00 00 00 mov 0xa8(%rbx),%rax : /* : * Set the next state machine state. The right things will : * happen whether we return this join tuple or just fall : * through to continue the state machine execution. : */ : node->mj_JoinState = EXEC_MJ_NEXTINNER; 0.00 : 5c23bf: c7 83 98 00 00 00 06 movl $0x6,0x98(%rbx) 0.00 : 5c23c6: 00 00 00 : * qual. One per tuple should be sufficient. We do have to : * set up the econtext links to the tuples for ExecQual to : * use. : */ : outerTupleSlot = node->mj_OuterTupleSlot; : econtext->ecxt_outertuple = outerTupleSlot; 0.00 : 5c23c9: 49 89 46 18 mov %rax,0x18(%r14) : innerTupleSlot = node->mj_InnerTupleSlot; : econtext->ecxt_innertuple = innerTupleSlot; 0.00 : 5c23cd: 48 8b 83 b0 00 00 00 mov 0xb0(%rbx),%rax 0.00 : 5c23d4: 49 89 46 10 mov %rax,0x10(%r14) : : qualResult = (joinqual == NIL || 0.00 : 5c23d8: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 0.00 : 5c23dd: 0f 84 2d 01 00 00 je 5c2510 0.00 : 5c23e3: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 5c23e7: 31 d2 xor %edx,%edx 0.00 : 5c23e9: 4c 89 f6 mov %r14,%rsi 0.00 : 5c23ec: e8 1f ab fe ff callq 5acf10 0.00 : 5c23f1: 84 c0 test %al,%al 0.00 : 5c23f3: 0f 85 17 01 00 00 jne 5c2510 : } : else : InstrCountFiltered2(node, 1); : } : else : InstrCountFiltered1(node, 1); 0.00 : 5c23f9: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 5c23fd: 48 85 c0 test %rax,%rax 0.00 : 5c2400: 0f 84 a2 fc ff ff je 5c20a8 0.00 : 5c2406: f2 0f 10 05 4a cd 1e movsd 0x1ecd4a(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5c240d: 00 0.00 : 5c240e: f2 0f 58 80 c8 00 00 addsd 0xc8(%rax),%xmm0 0.00 : 5c2415: 00 0.00 : 5c2416: f2 0f 11 80 c8 00 00 movsd %xmm0,0xc8(%rax) 0.00 : 5c241d: 00 0.00 : 5c241e: e9 85 fc ff ff jmpq 5c20a8 0.00 : 5c2423: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * to INITIALIZE_INNER state for the inner subplan. : */ : case EXEC_MJ_INITIALIZE_OUTER: : MJ_printf("ExecMergeJoin: EXEC_MJ_INITIALIZE_OUTER\n"); : : outerTupleSlot = ExecProcNode(outerPlan); 0.00 : 5c2428: 4c 89 ff mov %r15,%rdi 0.00 : 5c242b: e8 70 a0 fe ff callq 5ac4a0 : node->mj_OuterTupleSlot = outerTupleSlot; : : /* Compute join values and check for unmatchability */ : switch (MJEvalOuterValues(node)) 0.00 : 5c2430: 48 89 df mov %rbx,%rdi : */ : case EXEC_MJ_INITIALIZE_OUTER: : MJ_printf("ExecMergeJoin: EXEC_MJ_INITIALIZE_OUTER\n"); : : outerTupleSlot = ExecProcNode(outerPlan); : node->mj_OuterTupleSlot = outerTupleSlot; 0.00 : 5c2433: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) : : /* Compute join values and check for unmatchability */ : switch (MJEvalOuterValues(node)) 0.00 : 5c243a: e8 71 f8 ff ff callq 5c1cb0 0.00 : 5c243f: 83 f8 01 cmp $0x1,%eax 0.00 : 5c2442: 0f 84 d8 02 00 00 je 5c2720 0.00 : 5c2448: 0f 83 2a 01 00 00 jae 5c2578 : { : case MJEVAL_MATCHABLE: : /* OK to go get the first inner tuple */ : node->mj_JoinState = EXEC_MJ_INITIALIZE_INNER; 0.00 : 5c244e: c7 83 98 00 00 00 02 movl $0x2,0x98(%rbx) 0.00 : 5c2455: 00 00 00 : break; 0.00 : 5c2458: e9 4b fc ff ff jmpq 5c20a8 0.00 : 5c245d: 0f 1f 00 nopl (%rax) : /* : * Here we must compare the outer tuple with the marked inner : * tuple. (We can ignore the result of MJEvalInnerValues, : * since the marked inner tuple is certainly matchable.) : */ : innerTupleSlot = node->mj_MarkedTupleSlot; 0.00 : 5c2460: 4c 8b a3 b8 00 00 00 mov 0xb8(%rbx),%r12 : (void) MJEvalInnerValues(node, innerTupleSlot); 0.00 : 5c2467: 48 89 df mov %rbx,%rdi 0.00 : 5c246a: 4c 89 e6 mov %r12,%rsi 0.00 : 5c246d: e8 4e f9 ff ff callq 5c1dc0 : : compareResult = MJCompare(node); 0.00 : 5c2472: 48 89 df mov %rbx,%rdi 0.00 : 5c2475: e8 16 f7 ff ff callq 5c1b90 : MJ_DEBUG_COMPARE(compareResult); : : if (compareResult == 0) 0.00 : 5c247a: 85 c0 test %eax,%eax 0.00 : 5c247c: 74 6a je 5c24e8 : */ : Assert(compareResult > 0); : innerTupleSlot = node->mj_InnerTupleSlot; : : /* reload comparison data for current inner */ : switch (MJEvalInnerValues(node, innerTupleSlot)) 0.00 : 5c247e: 48 8b b3 b0 00 00 00 mov 0xb0(%rbx),%rsi 0.00 : 5c2485: 48 89 df mov %rbx,%rdi 0.00 : 5c2488: e8 33 f9 ff ff callq 5c1dc0 0.00 : 5c248d: 83 f8 01 cmp $0x1,%eax 0.00 : 5c2490: 0f 84 a2 01 00 00 je 5c2638 0.00 : 5c2496: 0f 82 54 fd ff ff jb 5c21f0 0.00 : 5c249c: 83 f8 02 cmp $0x2,%eax 0.00 : 5c249f: 90 nop 0.00 : 5c24a0: 0f 85 02 fc ff ff jne 5c20a8 : */ : node->mj_JoinState = EXEC_MJ_SKIPINNER_ADVANCE; : break; : case MJEVAL_ENDOFJOIN: : /* No more inner tuples */ : if (doFillOuter) 0.00 : 5c24a6: 80 7d c6 00 cmpb $0x0,-0x3a(%rbp) 0.00 : 5c24aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c24b0: 0f 85 1f 01 00 00 jne 5c25d5 : : /* : * broken state value? : */ : default: : elog(ERROR, "unrecognized mergejoin state: %d", 0.00 : 5c24b6: 31 c0 xor %eax,%eax 0.00 : 5c24b8: e9 7f fc ff ff jmpq 5c213c 0.00 : 5c24bd: 0f 1f 00 nopl (%rax) : node->mj_InnerTupleSlot = innerTupleSlot; : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; : : /* Compute join values and check for unmatchability */ : switch (MJEvalInnerValues(node, innerTupleSlot)) 0.00 : 5c24c0: 83 f8 02 cmp $0x2,%eax 0.00 : 5c24c3: 0f 85 df fb ff ff jne 5c20a8 : * force mj_InnerTupleSlot to null to make sure we : * don't fetch more inner tuples. (We need this hack : * because we are not transiting to a state where the : * inner plan is assumed to be exhausted.) : */ : node->mj_InnerTupleSlot = NULL; 0.00 : 5c24c9: 48 c7 83 b0 00 00 00 movq $0x0,0xb0(%rbx) 0.00 : 5c24d0: 00 00 00 00 : node->mj_JoinState = EXEC_MJ_NEXTOUTER; 0.00 : 5c24d4: c7 83 98 00 00 00 04 movl $0x4,0x98(%rbx) 0.00 : 5c24db: 00 00 00 0.00 : 5c24de: e9 c5 fb ff ff jmpq 5c20a8 0.00 : 5c24e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * This obviously won't happen for a constant-true extra : * joinqual, while the constant-false case is handled by : * forcing the merge clause to never match, so we never : * get here. : */ : ExecRestrPos(innerPlan); 0.00 : 5c24e8: 4c 89 ef mov %r13,%rdi 0.00 : 5c24eb: e8 f0 5d fe ff callq 5a82e0 : * ExecRestrPos probably should give us back a new Slot, : * but since it doesn't, use the marked slot. (The : * previously returned mj_InnerTupleSlot cannot be assumed : * to hold the required tuple.) : */ : node->mj_InnerTupleSlot = innerTupleSlot; 0.00 : 5c24f0: 4c 89 a3 b0 00 00 00 mov %r12,0xb0(%rbx) : /* we need not do MJEvalInnerValues again */ : : node->mj_JoinState = EXEC_MJ_JOINTUPLES; 0.00 : 5c24f7: c7 83 98 00 00 00 03 movl $0x3,0x98(%rbx) 0.00 : 5c24fe: 00 00 00 0.00 : 5c2501: e9 a2 fb ff ff jmpq 5c20a8 0.00 : 5c2506: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5c250d: 00 00 00 : { : node->mj_MatchedOuter = true; : node->mj_MatchedInner = true; : : /* In an antijoin, we never return a matched tuple */ : if (node->js.jointype == JOIN_ANTI) 0.00 : 5c2510: 8b 43 78 mov 0x78(%rbx),%eax : ExecQual(joinqual, econtext, false)); : MJ_DEBUG_QUAL(joinqual, qualResult); : : if (qualResult) : { : node->mj_MatchedOuter = true; 0.00 : 5c2513: c6 83 a0 00 00 00 01 movb $0x1,0xa0(%rbx) : node->mj_MatchedInner = true; 0.00 : 5c251a: c6 83 a1 00 00 00 01 movb $0x1,0xa1(%rbx) : : /* In an antijoin, we never return a matched tuple */ : if (node->js.jointype == JOIN_ANTI) 0.00 : 5c2521: 83 f8 05 cmp $0x5,%eax 0.00 : 5c2524: 74 ae je 5c24d4 : : /* : * In a semijoin, we'll consider returning the first : * match, but after that we're done with this outer tuple. : */ : if (node->js.jointype == JOIN_SEMI) 0.00 : 5c2526: 83 f8 04 cmp $0x4,%eax 0.00 : 5c2529: 0f 84 ab 01 00 00 je 5c26da : node->mj_JoinState = EXEC_MJ_NEXTOUTER; : : qualResult = (otherqual == NIL || 0.00 : 5c252f: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) 0.00 : 5c2534: 74 16 je 5c254c 0.00 : 5c2536: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 5c253a: 31 d2 xor %edx,%edx 0.00 : 5c253c: 4c 89 f6 mov %r14,%rsi 0.00 : 5c253f: e8 cc a9 fe ff callq 5acf10 0.00 : 5c2544: 84 c0 test %al,%al 0.00 : 5c2546: 0f 84 14 02 00 00 je 5c2760 : TupleTableSlot *result; : ExprDoneCond isDone; : : MJ_printf("ExecMergeJoin: returning tuple\n"); : : result = ExecProject(node->js.ps.ps_ProjInfo, 0.00 : 5c254c: 48 8b 7b 68 mov 0x68(%rbx),%rdi 0.00 : 5c2550: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5c2554: e8 a7 aa fe ff callq 5ad000 : &isDone); : : if (isDone != ExprEndResult) 0.00 : 5c2559: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 5c255c: 83 fa 02 cmp $0x2,%edx 0.00 : 5c255f: 0f 84 43 fb ff ff je 5c20a8 : { : node->js.ps.ps_TupFromTlist = 0.00 : 5c2565: 83 ea 01 sub $0x1,%edx 0.00 : 5c2568: 0f 94 43 70 sete 0x70(%rbx) : default: : elog(ERROR, "unrecognized mergejoin state: %d", : (int) node->mj_JoinState); : } : } : } 0.00 : 5c256c: e9 cb fb ff ff jmpq 5c213c 0.00 : 5c2571: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : outerTupleSlot = ExecProcNode(outerPlan); : node->mj_OuterTupleSlot = outerTupleSlot; : : /* Compute join values and check for unmatchability */ : switch (MJEvalOuterValues(node)) 0.00 : 5c2578: 83 f8 02 cmp $0x2,%eax 0.00 : 5c257b: 0f 85 27 fb ff ff jne 5c20a8 : } : break; : case MJEVAL_ENDOFJOIN: : /* No more outer tuples */ : MJ_printf("ExecMergeJoin: nothing in outer subplan\n"); : if (doFillInner) 0.00 : 5c2581: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) 0.00 : 5c2585: 0f 84 af fb ff ff je 5c213a : /* : * Need to emit right-join tuples for remaining : * inner tuples. We set MatchedInner = true to : * force the ENDOUTER state to advance inner. : */ : node->mj_JoinState = EXEC_MJ_ENDOUTER; 0.00 : 5c258b: c7 83 98 00 00 00 0a movl $0xa,0x98(%rbx) 0.00 : 5c2592: 00 00 00 : node->mj_MatchedInner = true; 0.00 : 5c2595: c6 83 a1 00 00 00 01 movb $0x1,0xa1(%rbx) : break; 0.00 : 5c259c: e9 07 fb ff ff jmpq 5c20a8 0.00 : 5c25a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : node->mj_InnerTupleSlot = innerTupleSlot; : MJ_DEBUG_PROC_NODE(innerTupleSlot); : node->mj_MatchedInner = false; : : /* Compute join values and check for unmatchability */ : switch (MJEvalInnerValues(node, innerTupleSlot)) 0.00 : 5c25a8: 83 f8 02 cmp $0x2,%eax 0.00 : 5c25ab: 0f 85 f7 fa ff ff jne 5c20a8 : break; : case MJEVAL_ENDOFJOIN: : /* No more inner tuples */ : MJ_printf("ExecMergeJoin: end of inner subplan\n"); : outerTupleSlot = node->mj_OuterTupleSlot; : if (doFillOuter && !TupIsNull(outerTupleSlot)) 0.00 : 5c25b1: 80 7d c6 00 cmpb $0x0,-0x3a(%rbp) : node->mj_JoinState = EXEC_MJ_SKIPINNER_ADVANCE; : break; : case MJEVAL_ENDOFJOIN: : /* No more inner tuples */ : MJ_printf("ExecMergeJoin: end of inner subplan\n"); : outerTupleSlot = node->mj_OuterTupleSlot; 0.00 : 5c25b5: 48 8b 83 a8 00 00 00 mov 0xa8(%rbx),%rax : if (doFillOuter && !TupIsNull(outerTupleSlot)) 0.00 : 5c25bc: 0f 84 78 fb ff ff je 5c213a 0.00 : 5c25c2: 48 85 c0 test %rax,%rax 0.00 : 5c25c5: 0f 84 6f fb ff ff je 5c213a 0.00 : 5c25cb: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c25cf: 0f 85 65 fb ff ff jne 5c213a : { : /* : * Need to emit left-join tuples for remaining : * outer tuples. : */ : node->mj_JoinState = EXEC_MJ_ENDINNER; 0.00 : 5c25d5: c7 83 98 00 00 00 0b movl $0xb,0x98(%rbx) 0.00 : 5c25dc: 00 00 00 0.00 : 5c25df: 90 nop : break; 0.00 : 5c25e0: e9 c3 fa ff ff jmpq 5c20a8 0.00 : 5c25e5: 0f 1f 00 nopl (%rax) : compareResult = MJCompare(node); : MJ_DEBUG_COMPARE(compareResult); : : if (compareResult == 0) : { : ExecMarkPos(innerPlan); 0.00 : 5c25e8: 4c 89 ef mov %r13,%rdi 0.00 : 5c25eb: e8 d0 5d fe ff callq 5a83c0 : : MarkInnerTuple(node->mj_InnerTupleSlot, node); 0.00 : 5c25f0: 48 8b b3 b0 00 00 00 mov 0xb0(%rbx),%rsi 0.00 : 5c25f7: 48 8b bb b8 00 00 00 mov 0xb8(%rbx),%rdi 0.00 : 5c25fe: e8 4d 1f ff ff callq 5b4550 : : node->mj_JoinState = EXEC_MJ_JOINTUPLES; 0.00 : 5c2603: c7 83 98 00 00 00 03 movl $0x3,0x98(%rbx) 0.00 : 5c260a: 00 00 00 0.00 : 5c260d: e9 96 fa ff ff jmpq 5c20a8 0.00 : 5c2612: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return result; : } : : /* Mark before advancing, if wanted */ : if (node->mj_ExtraMarks) : ExecMarkPos(innerPlan); 0.00 : 5c2618: 4c 89 ef mov %r13,%rdi 0.00 : 5c261b: e8 a0 5d fe ff callq 5a83c0 0.00 : 5c2620: e9 9b fb ff ff jmpq 5c21c0 0.00 : 5c2625: 0f 1f 00 nopl (%rax) : return result; : } : : /* Mark before advancing, if wanted */ : if (node->mj_ExtraMarks) : ExecMarkPos(innerPlan); 0.00 : 5c2628: 4c 89 ef mov %r13,%rdi 0.00 : 5c262b: e8 90 5d fe ff callq 5a83c0 0.00 : 5c2630: e9 45 fb ff ff jmpq 5c217a 0.00 : 5c2635: 0f 1f 00 nopl (%rax) : : /* : * current inner can't possibly match any outer; : * better to advance the inner scan than the outer. : */ : node->mj_JoinState = EXEC_MJ_SKIPINNER_ADVANCE; 0.00 : 5c2638: c7 83 98 00 00 00 09 movl $0x9,0x98(%rbx) 0.00 : 5c263f: 00 00 00 : break; 0.00 : 5c2642: e9 61 fa ff ff jmpq 5c20a8 0.00 : 5c2647: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c264e: 00 00 : * Generate a fake join tuple with nulls for the inner : * tuple, and return it if it passes the non-join quals. : */ : TupleTableSlot *result; : : node->mj_MatchedOuter = true; /* do it only once */ 0.00 : 5c2650: c6 83 a0 00 00 00 01 movb $0x1,0xa0(%rbx) : : result = MJFillOuter(node); 0.00 : 5c2657: 48 89 df mov %rbx,%rdi 0.00 : 5c265a: e8 21 f9 ff ff callq 5c1f80 : if (result) 0.00 : 5c265f: 48 85 c0 test %rax,%rax 0.00 : 5c2662: 0f 84 ab fb ff ff je 5c2213 0.00 : 5c2668: e9 cf fa ff ff jmpq 5c213c 0.00 : 5c266d: 0f 1f 00 nopl (%rax) : * Generate a fake join tuple with nulls for the inner : * tuple, and return it if it passes the non-join quals. : */ : TupleTableSlot *result; : : node->mj_MatchedOuter = true; /* do it only once */ 0.00 : 5c2670: c6 83 a0 00 00 00 01 movb $0x1,0xa0(%rbx) : : result = MJFillOuter(node); 0.00 : 5c2677: 48 89 df mov %rbx,%rdi 0.00 : 5c267a: e8 01 f9 ff ff callq 5c1f80 : if (result) 0.00 : 5c267f: 48 85 c0 test %rax,%rax 0.00 : 5c2682: 0f 84 0b fc ff ff je 5c2293 0.00 : 5c2688: e9 af fa ff ff jmpq 5c213c 0.00 : 5c268d: 0f 1f 00 nopl (%rax) : * Generate a fake join tuple with nulls for the outer : * tuple, and return it if it passes the non-join quals. : */ : TupleTableSlot *result; : : node->mj_MatchedInner = true; /* do it only once */ 0.00 : 5c2690: c6 83 a1 00 00 00 01 movb $0x1,0xa1(%rbx) : : result = MJFillInner(node); 0.00 : 5c2697: 48 89 df mov %rbx,%rdi 0.00 : 5c269a: e8 31 f8 ff ff callq 5c1ed0 : if (result) 0.00 : 5c269f: 48 85 c0 test %rax,%rax 0.00 : 5c26a2: 0f 84 3b fc ff ff je 5c22e3 0.00 : 5c26a8: e9 8f fa ff ff jmpq 5c213c 0.00 : 5c26ad: 0f 1f 00 nopl (%rax) : * Generate a fake join tuple with nulls for the outer : * tuple, and return it if it passes the non-join quals. : */ : TupleTableSlot *result; : : node->mj_MatchedInner = true; /* do it only once */ 0.00 : 5c26b0: c6 83 a1 00 00 00 01 movb $0x1,0xa1(%rbx) : : result = MJFillInner(node); 0.00 : 5c26b7: 48 89 df mov %rbx,%rdi 0.00 : 5c26ba: e8 11 f8 ff ff callq 5c1ed0 : if (result) 0.00 : 5c26bf: 48 85 c0 test %rax,%rax 0.00 : 5c26c2: 0f 85 74 fa ff ff jne 5c213c : return result; : } : : /* Mark before advancing, if wanted */ : if (node->mj_ExtraMarks) 0.00 : 5c26c8: 80 bb 9c 00 00 00 00 cmpb $0x0,0x9c(%rbx) 0.00 : 5c26cf: 0f 84 eb fa ff ff je 5c21c0 0.00 : 5c26d5: e9 3e ff ff ff jmpq 5c2618 : /* : * In a semijoin, we'll consider returning the first : * match, but after that we're done with this outer tuple. : */ : if (node->js.jointype == JOIN_SEMI) : node->mj_JoinState = EXEC_MJ_NEXTOUTER; 0.00 : 5c26da: c7 83 98 00 00 00 04 movl $0x4,0x98(%rbx) 0.00 : 5c26e1: 00 00 00 0.00 : 5c26e4: e9 46 fe ff ff jmpq 5c252f 0.00 : 5c26e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : node->mj_JoinState = EXEC_MJ_SKIP_TEST; : break; : case MJEVAL_NONMATCHABLE: : /* Mark before advancing, if wanted */ : if (node->mj_ExtraMarks) 0.00 : 5c26f0: 80 bb 9c 00 00 00 00 cmpb $0x0,0x9c(%rbx) 0.00 : 5c26f7: 0f 85 8d 00 00 00 jne 5c278a : ExecMarkPos(innerPlan); : /* Stay in same state to fetch next inner tuple */ : if (doFillInner) 0.00 : 5c26fd: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) 0.00 : 5c2701: 0f 84 a1 f9 ff ff je 5c20a8 : * outer tuple, and return it if it passes the : * non-join quals. : */ : TupleTableSlot *result; : : result = MJFillInner(node); 0.00 : 5c2707: 48 89 df mov %rbx,%rdi 0.00 : 5c270a: e8 c1 f7 ff ff callq 5c1ed0 : if (result) 0.00 : 5c270f: 48 85 c0 test %rax,%rax 0.00 : 5c2712: 0f 84 90 f9 ff ff je 5c20a8 0.00 : 5c2718: e9 1f fa ff ff jmpq 5c213c 0.00 : 5c271d: 0f 1f 00 nopl (%rax) : /* OK to go get the first inner tuple */ : node->mj_JoinState = EXEC_MJ_INITIALIZE_INNER; : break; : case MJEVAL_NONMATCHABLE: : /* Stay in same state to fetch next outer tuple */ : if (doFillOuter) 0.00 : 5c2720: 80 7d c6 00 cmpb $0x0,-0x3a(%rbp) 0.00 : 5c2724: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5c2728: 0f 84 7a f9 ff ff je 5c20a8 : * inner tuple, and return it if it passes the : * non-join quals. : */ : TupleTableSlot *result; : : result = MJFillOuter(node); 0.00 : 5c272e: 48 89 df mov %rbx,%rdi 0.00 : 5c2731: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5c2738: e8 43 f8 ff ff callq 5c1f80 : if (result) 0.00 : 5c273d: 48 85 c0 test %rax,%rax 0.00 : 5c2740: 0f 84 62 f9 ff ff je 5c20a8 0.00 : 5c2746: e9 f1 f9 ff ff jmpq 5c213c 0.00 : 5c274b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* Go test the new tuple against the current inner */ : node->mj_JoinState = EXEC_MJ_SKIP_TEST; : break; : case MJEVAL_NONMATCHABLE: : /* Can't match, so fetch next outer tuple */ : node->mj_JoinState = EXEC_MJ_SKIPOUTER_ADVANCE; 0.00 : 5c2750: c7 83 98 00 00 00 08 movl $0x8,0x98(%rbx) 0.00 : 5c2757: 00 00 00 : break; 0.00 : 5c275a: e9 49 f9 ff ff jmpq 5c20a8 0.00 : 5c275f: 90 nop : (isDone == ExprMultipleResult); : return result; : } : } : else : InstrCountFiltered2(node, 1); 0.00 : 5c2760: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 5c2764: 48 85 c0 test %rax,%rax 0.00 : 5c2767: 0f 84 3b f9 ff ff je 5c20a8 0.00 : 5c276d: f2 0f 10 05 e3 c9 1e movsd 0x1ec9e3(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5c2774: 00 0.00 : 5c2775: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5c277c: 00 0.00 : 5c277d: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5c2784: 00 0.00 : 5c2785: e9 1e f9 ff ff jmpq 5c20a8 : node->mj_JoinState = EXEC_MJ_SKIP_TEST; : break; : case MJEVAL_NONMATCHABLE: : /* Mark before advancing, if wanted */ : if (node->mj_ExtraMarks) : ExecMarkPos(innerPlan); 0.00 : 5c278a: 4c 89 ef mov %r13,%rdi 0.00 : 5c278d: e8 2e 5c fe ff callq 5a83c0 0.00 : 5c2792: e9 66 ff ff ff jmpq 5c26fd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3518 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3527 15.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3502 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3502 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3502 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3506 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3502 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3502 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ca8a0 : : * This routine supports time interval decoding : * (hence, it need not recognize timezone names). : */ : int : DecodeUnits(int field, char *lowtoken, int *val) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3502 10.00 : 6ca8a0: 55 push %rbp 10.00 : 6ca8a1: 48 89 e5 mov %rsp,%rbp 5.00 : 6ca8a4: 4c 89 6d f0 mov %r13,-0x10(%rbp) : int type; : const datetkn *tp; : : tp = deltacache[field]; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3506 10.00 : 6ca8a8: 4c 63 ef movslq %edi,%r13 : * This routine supports time interval decoding : * (hence, it need not recognize timezone names). : */ : int : DecodeUnits(int field, char *lowtoken, int *val) : { 0.00 : 6ca8ab: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 6ca8af: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 6ca8b3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 6ca8b7: 48 83 ec 20 sub $0x20,%rsp : int type; : const datetkn *tp; : : tp = deltacache[field]; 0.00 : 6ca8bb: 4a 8b 1c ed a0 ea b7 mov 0xb7eaa0(,%r13,8),%rbx 0.00 : 6ca8c2: 00 : * This routine supports time interval decoding : * (hence, it need not recognize timezone names). : */ : int : DecodeUnits(int field, char *lowtoken, int *val) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3502 15.00 : 6ca8c3: 49 89 f4 mov %rsi,%r12 5.00 : 6ca8c6: 49 89 d6 mov %rdx,%r14 : int type; : const datetkn *tp; : : tp = deltacache[field]; : if (tp == NULL || strncmp(lowtoken, tp->token, TOKMAXLEN) != 0) 0.00 : 6ca8c9: 48 85 db test %rbx,%rbx 0.00 : 6ca8cc: 74 4a je 6ca918 0.00 : 6ca8ce: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 6ca8d3: 48 89 de mov %rbx,%rsi 0.00 : 6ca8d6: 4c 89 e7 mov %r12,%rdi 0.00 : 6ca8d9: e8 42 ed d9 ff callq 469620 0.00 : 6ca8de: 85 c0 test %eax,%eax 0.00 : 6ca8e0: 75 36 jne 6ca918 : type = UNKNOWN_FIELD; : *val = 0; : } : else : { : deltacache[field] = tp; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3518 25.00 : 6ca8e2: 4a 89 1c ed a0 ea b7 mov %rbx,0xb7eaa0(,%r13,8) 0.00 : 6ca8e9: 00 : type = tp->type; 0.00 : 6ca8ea: 0f be 4b 0a movsbl 0xa(%rbx),%ecx : if (type == TZ || type == DTZ) 0.00 : 6ca8ee: 8d 41 fb lea -0x5(%rcx),%eax 0.00 : 6ca8f1: 83 f8 01 cmp $0x1,%eax 0.00 : 6ca8f4: 76 4a jbe 6ca940 : *val = FROMVAL(tp); : else : *val = tp->value; 0.00 : 6ca8f6: 0f be 43 0b movsbl 0xb(%rbx),%eax 0.00 : 6ca8fa: 41 89 06 mov %eax,(%r14) : } : : return type; : } /* DecodeUnits() */ 0.00 : 6ca8fd: 89 c8 mov %ecx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:3527 20.00 : 6ca8ff: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 6ca903: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 6ca908: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 6ca90d: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 6ca912: c9 leaveq 0.00 : 6ca913: c3 retq 0.00 : 6ca914: 0f 1f 40 00 nopl 0x0(%rax) : const datetkn *tp; : : tp = deltacache[field]; : if (tp == NULL || strncmp(lowtoken, tp->token, TOKMAXLEN) != 0) : { : tp = datebsearch(lowtoken, deltatktbl, szdeltatktbl); 0.00 : 6ca918: ba 3f 00 00 00 mov $0x3f,%edx 0.00 : 6ca91d: be a0 a9 8b 00 mov $0x8ba9a0,%esi 0.00 : 6ca922: 4c 89 e7 mov %r12,%rdi 0.00 : 6ca925: e8 a6 fe ff ff callq 6ca7d0 : } : if (tp == NULL) 0.00 : 6ca92a: 48 85 c0 test %rax,%rax : const datetkn *tp; : : tp = deltacache[field]; : if (tp == NULL || strncmp(lowtoken, tp->token, TOKMAXLEN) != 0) : { : tp = datebsearch(lowtoken, deltatktbl, szdeltatktbl); 0.00 : 6ca92d: 48 89 c3 mov %rax,%rbx : } : if (tp == NULL) 0.00 : 6ca930: 75 b0 jne 6ca8e2 : { : type = UNKNOWN_FIELD; : *val = 0; 0.00 : 6ca932: 41 c7 06 00 00 00 00 movl $0x0,(%r14) 0.00 : 6ca939: b9 1f 00 00 00 mov $0x1f,%ecx 0.00 : 6ca93e: eb bd jmp 6ca8fd : else : { : deltacache[field] = tp; : type = tp->type; : if (type == TZ || type == DTZ) : *val = FROMVAL(tp); 0.00 : 6ca940: 0f b6 43 0b movzbl 0xb(%rbx),%eax 0.00 : 6ca944: 84 c0 test %al,%al 0.00 : 6ca946: 78 18 js 6ca960 0.00 : 6ca948: 0f be d0 movsbl %al,%edx 0.00 : 6ca94b: 89 d0 mov %edx,%eax 0.00 : 6ca94d: c1 e0 04 shl $0x4,%eax 0.00 : 6ca950: 29 c2 sub %eax,%edx 0.00 : 6ca952: 41 89 16 mov %edx,(%r14) 0.00 : 6ca955: eb a6 jmp 6ca8fd 0.00 : 6ca957: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6ca95e: 00 00 0.00 : 6ca960: 83 e0 7f and $0x7f,%eax 0.00 : 6ca963: 89 c2 mov %eax,%edx 0.00 : 6ca965: c1 e2 04 shl $0x4,%edx 0.00 : 6ca968: 29 c2 sub %eax,%edx 0.00 : 6ca96a: eb e6 jmp 6ca952 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 47.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:777 29.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:776 11.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:776 11.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:778 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ed200 : : * test would complain about mismatched entries for a built-in function. : */ : : Datum : int8inc_any(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:776 29.41 : 6ed200: 55 push %rbp 11.76 : 6ed201: 48 89 e5 mov %rsp,%rbp : return int8inc(fcinfo); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:778 11.76 : 6ed204: c9 leaveq : */ : : Datum : int8inc_any(PG_FUNCTION_ARGS) : { : return int8inc(fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:777 47.06 : 6ed205: e9 76 ff ff ff jmpq 6ed180 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1622 17.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1627 13.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 8.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1622 8.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1632 8.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1642 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1627 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1634 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1634 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1642 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079e290 : : * and return FALSE. : */ : bool : tuplesort_gettupleslot(Tuplesortstate *state, bool forward, : TupleTableSlot *slot) : { 21.74 : 79e290: 55 push %rbp : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : bool should_free; : : if (!tuplesort_gettuple_common(state, forward, &stup, &should_free)) 0.00 : 79e291: 40 0f be f6 movsbl %sil,%esi : * and return FALSE. : */ : bool : tuplesort_gettupleslot(Tuplesortstate *state, bool forward, : TupleTableSlot *slot) : { 0.00 : 79e295: 48 89 e5 mov %rsp,%rbp 8.70 : 79e298: 41 54 push %r12 0.00 : 79e29a: 49 89 d4 mov %rdx,%r12 : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : bool should_free; : : if (!tuplesort_gettuple_common(state, forward, &stup, &should_free)) 0.00 : 79e29d: 48 8d 4d ef lea -0x11(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1627 17.39 : 79e2a1: 48 8d 55 d0 lea -0x30(%rbp),%rdx : * and return FALSE. : */ : bool : tuplesort_gettupleslot(Tuplesortstate *state, bool forward, : TupleTableSlot *slot) : { 0.00 : 79e2a5: 53 push %rbx 0.00 : 79e2a6: 48 83 ec 20 sub $0x20,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 13.04 : 79e2aa: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 79e2ae: 48 8b 1d ab c5 41 00 mov 0x41c5ab(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 79e2b5: 48 89 05 a4 c5 41 00 mov %rax,0x41c5a4(%rip) # bba860 : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : bool should_free; : : if (!tuplesort_gettuple_common(state, forward, &stup, &should_free)) 0.00 : 79e2bc: e8 7f f8 ff ff callq 79db40 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1627 4.35 : 79e2c1: 84 c0 test %al,%al 0.00 : 79e2c3: 75 2b jne 79e2f0 : stup.tuple = NULL; 0.00 : 79e2c5: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp) 0.00 : 79e2cc: 00 0.00 : 79e2cd: 48 89 1d 8c c5 41 00 mov %rbx,0x41c58c(%rip) # bba860 : ExecStoreMinimalTuple((MinimalTuple) stup.tuple, slot, should_free); : return true; : } : else : { : ExecClearTuple(slot); 0.00 : 79e2d4: 4c 89 e7 mov %r12,%rdi 0.00 : 79e2d7: e8 34 5e e1 ff callq 5b4110 : return false; : } : } 0.00 : 79e2dc: 48 83 c4 20 add $0x20,%rsp : ExecStoreMinimalTuple((MinimalTuple) stup.tuple, slot, should_free); : return true; : } : else : { : ExecClearTuple(slot); 0.00 : 79e2e0: 31 c0 xor %eax,%eax : return false; : } : } 0.00 : 79e2e2: 5b pop %rbx 0.00 : 79e2e3: 41 5c pop %r12 0.00 : 79e2e5: c9 leaveq 0.00 : 79e2e6: c3 retq 0.00 : 79e2e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79e2ee: 00 00 : if (!tuplesort_gettuple_common(state, forward, &stup, &should_free)) : stup.tuple = NULL; : : MemoryContextSwitchTo(oldcontext); : : if (stup.tuple) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1632 8.70 : 79e2f0: 48 8b 7d d0 mov -0x30(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 4.35 : 79e2f4: 48 89 1d 65 c5 41 00 mov %rbx,0x41c565(%rip) # bba860 0.00 : 79e2fb: 48 85 ff test %rdi,%rdi 0.00 : 79e2fe: 74 d4 je 79e2d4 : { : ExecStoreMinimalTuple((MinimalTuple) stup.tuple, slot, should_free); 0.00 : 79e300: 0f be 55 ef movsbl -0x11(%rbp),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1634 4.35 : 79e304: 4c 89 e6 mov %r12,%rsi 0.00 : 79e307: e8 d4 60 e1 ff callq 5b43e0 : else : { : ExecClearTuple(slot); : return false; : } : } 0.00 : 79e30c: 48 83 c4 20 add $0x20,%rsp : : MemoryContextSwitchTo(oldcontext); : : if (stup.tuple) : { : ExecStoreMinimalTuple((MinimalTuple) stup.tuple, slot, should_free); 4.35 : 79e310: b8 01 00 00 00 mov $0x1,%eax : else : { : ExecClearTuple(slot); : return false; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1642 8.70 : 79e315: 5b pop %rbx 0.00 : 79e316: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1642 4.35 : 79e318: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 41.67 ??:0 8.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000032e20 : ??:0 50.00 : 32e20: 41 ba 08 00 00 00 mov $0x8,%r10d 8.33 : 32e26: 48 63 ff movslq %edi,%rdi 0.00 : 32e29: b8 0e 00 00 00 mov $0xe,%eax 0.00 : 32e2e: 0f 05 syscall 41.67 : 32e30: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : 32e36: 89 c2 mov %eax,%edx 0.00 : 32e38: 77 03 ja 32e3d 0.00 : 32e3a: 89 d0 mov %edx,%eax 0.00 : 32e3c: c3 retq 0.00 : 32e3d: 89 c1 mov %eax,%ecx 0.00 : 32e3f: 48 8b 15 f2 ef 33 00 mov 0x33eff2(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 32e46: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 32e4d: 00 00 0.00 : 32e4f: f7 d9 neg %ecx 0.00 : 32e51: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : 32e54: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 32e59: eb df jmp 32e3a Sorted summary for file /bin/bash ---------------------------------------------- 31.58 ??:0 31.58 ??:0 15.79 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000459c50 : ??:0 15.79 : 459c50: 41 57 push %r15 0.00 : 459c52: 41 56 push %r14 0.00 : 459c54: 41 55 push %r13 0.00 : 459c56: 41 54 push %r12 0.00 : 459c58: 55 push %rbp 0.00 : 459c59: 53 push %rbx 0.00 : 459c5a: 48 83 ec 18 sub $0x18,%rsp 0.00 : 459c5e: 8b 05 54 33 23 00 mov 0x233354(%rip),%eax # 68cfb8 31.58 : 459c64: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : 459c69: 89 74 24 0c mov %esi,0xc(%rsp) 0.00 : 459c6d: 41 89 c5 mov %eax,%r13d 0.00 : 459c70: 41 83 ed 01 sub $0x1,%r13d 0.00 : 459c74: 78 5e js 459cd4 5.26 : 459c76: 44 0f be 37 movsbl (%rdi),%r14d 0.00 : 459c7a: 4c 8b 3d 2f 33 23 00 mov 0x23332f(%rip),%r15 # 68cfb0 0.00 : 459c81: 45 31 e4 xor %r12d,%r12d 0.00 : 459c84: eb 17 jmp 459c9d 0.00 : 459c86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 459c8d: 00 00 00 0.00 : 459c90: 85 c0 test %eax,%eax 0.00 : 459c92: 7e 5c jle 459cf0 5.26 : 459c94: 44 8d 6b ff lea -0x1(%rbx),%r13d 0.00 : 459c98: 45 39 ec cmp %r13d,%r12d 0.00 : 459c9b: 7f 37 jg 459cd4 0.00 : 459c9d: 43 8d 5c 25 00 lea 0x0(%r13,%r12,1),%ebx 0.00 : 459ca2: d1 fb sar %ebx 0.00 : 459ca4: 48 63 c3 movslq %ebx,%rax 5.26 : 459ca7: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 459cab: 48 c1 e0 04 shl $0x4,%rax 0.00 : 459caf: 49 8d 2c 07 lea (%r15,%rax,1),%rbp 0.00 : 459cb3: 48 8b 7d 00 mov 0x0(%rbp),%rdi 31.58 : 459cb7: 0f be 07 movsbl (%rdi),%eax 5.26 : 459cba: 44 29 f0 sub %r14d,%eax 0.00 : 459cbd: 75 d1 jne 459c90 0.00 : 459cbf: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 0.00 : 459cc4: e8 67 cc fb ff callq 416930 0.00 : 459cc9: 85 c0 test %eax,%eax 0.00 : 459ccb: 75 c3 jne 459c90 0.00 : 459ccd: 48 83 7d 08 00 cmpq $0x0,0x8(%rbp) 0.00 : 459cd2: 75 22 jne 459cf6 0.00 : 459cd4: 31 ed xor %ebp,%ebp 0.00 : 459cd6: 48 83 c4 18 add $0x18,%rsp 0.00 : 459cda: 48 89 e8 mov %rbp,%rax 0.00 : 459cdd: 5b pop %rbx 0.00 : 459cde: 5d pop %rbp 0.00 : 459cdf: 41 5c pop %r12 0.00 : 459ce1: 41 5d pop %r13 0.00 : 459ce3: 41 5e pop %r14 0.00 : 459ce5: 41 5f pop %r15 0.00 : 459ce7: c3 retq 0.00 : 459ce8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 459cef: 00 0.00 : 459cf0: 44 8d 63 01 lea 0x1(%rbx),%r12d 0.00 : 459cf4: eb a2 jmp 459c98 0.00 : 459cf6: 8b 45 10 mov 0x10(%rbp),%eax 0.00 : 459cf9: a8 02 test $0x2,%al 0.00 : 459cfb: 75 d7 jne 459cd4 0.00 : 459cfd: 83 e0 01 and $0x1,%eax 0.00 : 459d00: 0b 44 24 0c or 0xc(%rsp),%eax 0.00 : 459d04: 74 ce je 459cd4 0.00 : 459d06: eb ce jmp 459cd6 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 57.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:321 28.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:321 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:321 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:321 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c6b10 : : PG_RETURN_BOOL(dateVal1 < dateVal2); : } : : Datum : date_le(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:321 57.14 : 6c6b10: 48 8b 47 28 mov 0x28(%rdi),%rax 28.57 : 6c6b14: 39 47 20 cmp %eax,0x20(%rdi) 7.14 : 6c6b17: 55 push %rbp 0.00 : 6c6b18: 48 89 e5 mov %rsp,%rbp : DateADT dateVal1 = PG_GETARG_DATEADT(0); : DateADT dateVal2 = PG_GETARG_DATEADT(1); : : PG_RETURN_BOOL(dateVal1 <= dateVal2); : } 0.00 : 6c6b1b: c9 leaveq : PG_RETURN_BOOL(dateVal1 < dateVal2); : } : : Datum : date_le(PG_FUNCTION_ARGS) : { 7.14 : 6c6b1c: 0f 9e c0 setle %al 0.00 : 6c6b1f: 0f b6 c0 movzbl %al,%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 46.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:85 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:85 13.33 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:104 6.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:86 6.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:104 6.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:107 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004908d0 : : return hash_uint32((uint32) PG_GETARG_OID(0)); : } : : Datum : hashfloat4(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:85 46.67 : 4908d0: 55 push %rbp 20.00 : 4908d1: 48 89 e5 mov %rsp,%rbp 0.00 : 4908d4: 48 83 ec 10 sub $0x10,%rsp : float4 key = PG_GETARG_FLOAT4(0); 0.00 : 4908d8: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:86 6.67 : 4908dc: e8 cf d0 2e 00 callq 77d9b0 : /* : * On IEEE-float machines, minus zero and zero have different bit patterns : * but should compare as equal. We must ensure that they have the same : * hash value, which is most reliably done this way: : */ : if (key == (float4) 0) 0.00 : 4908e1: 31 c0 xor %eax,%eax 0.00 : 4908e3: 0f 2e 05 f6 19 32 00 ucomiss 0x3219f6(%rip),%xmm0 # 7b22e0 <__func__.14992+0xd7> 0.00 : 4908ea: 7a 0c jp 4908f8 0.00 : 4908ec: 75 0a jne 4908f8 : * on overflow.) : */ : key8 = key; : : return hash_any((unsigned char *) &key8, sizeof(key8)); : } 0.00 : 4908ee: c9 leaveq 0.00 : 4908ef: 90 nop 0.00 : 4908f0: c3 retq 0.00 : 4908f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * the same hash value hashfloat8 would produce for an equal float8 value. : * So, widen the value to float8 and hash that. (We must do this rather : * than have hashfloat8 try to narrow its value to float4; that could fail : * on overflow.) : */ : key8 = key; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:104 13.33 : 4908f8: 0f 14 c0 unpcklps %xmm0,%xmm0 : : return hash_any((unsigned char *) &key8, sizeof(key8)); 0.00 : 4908fb: 48 8d 7d f8 lea -0x8(%rbp),%rdi 0.00 : 4908ff: be 08 00 00 00 mov $0x8,%esi : * the same hash value hashfloat8 would produce for an equal float8 value. : * So, widen the value to float8 and hash that. (We must do this rather : * than have hashfloat8 try to narrow its value to float4; that could fail : * on overflow.) : */ : key8 = key; 0.00 : 490904: 0f 5a c0 cvtps2pd %xmm0,%xmm0 6.67 : 490907: f2 0f 11 45 f8 movsd %xmm0,-0x8(%rbp) : : return hash_any((unsigned char *) &key8, sizeof(key8)); 0.00 : 49090c: e8 3f fa ff ff callq 490350 : } /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:107 6.67 : 490911: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.74 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:325 13.04 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:291 13.04 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:291 13.04 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:291 13.04 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:295 13.04 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:314 4.35 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:314 4.35 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:319 4.35 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:325 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a14a0 : : * (including the VARHDRSZ header) : * ---------- : */ : Size : toast_raw_datum_size(Datum value) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:291 13.04 : 4a14a0: 55 push %rbp 13.04 : 4a14a1: 48 89 e5 mov %rsp,%rbp 13.04 : 4a14a4: 48 83 ec 10 sub $0x10,%rsp : struct varlena *attr = (struct varlena *) DatumGetPointer(value); : Size result; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a14a8: 0f b6 17 movzbl (%rdi),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:295 13.04 : 4a14ab: 80 fa 01 cmp $0x1,%dl 0.00 : 4a14ae: 74 30 je 4a14e0 : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(toast_pointer.pointer)); : : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); : } : else if (VARATT_IS_COMPRESSED(attr)) 0.00 : 4a14b0: 0f b6 ca movzbl %dl,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:314 4.35 : 4a14b3: 89 c8 mov %ecx,%eax 0.00 : 4a14b5: 83 e0 03 and $0x3,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:314 13.04 : 4a14b8: 83 f8 02 cmp $0x2,%eax 0.00 : 4a14bb: 74 13 je 4a14d0 : { : /* here, va_rawsize is just the payload size */ : result = VARRAWSIZE_4B_C(attr) + VARHDRSZ; : } : else if (VARATT_IS_SHORT(attr)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:319 4.35 : 4a14bd: 83 e1 01 and $0x1,%ecx 0.00 : 4a14c0: 75 2a jne 4a14ec : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; : } : else : { : /* plain untoasted datum */ : result = VARSIZE(attr); 0.00 : 4a14c2: 8b 07 mov (%rdi),%eax : } : return result; : } 0.00 : 4a14c4: c9 leaveq : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; : } : else : { : /* plain untoasted datum */ : result = VARSIZE(attr); 0.00 : 4a14c5: c1 e8 02 shr $0x2,%eax 0.00 : 4a14c8: 89 c0 mov %eax,%eax : } : return result; : } 0.00 : 4a14ca: c3 retq 0.00 : 4a14cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); : } : else if (VARATT_IS_COMPRESSED(attr)) : { : /* here, va_rawsize is just the payload size */ : result = VARRAWSIZE_4B_C(attr) + VARHDRSZ; 0.00 : 4a14d0: 8b 47 04 mov 0x4(%rdi),%eax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14d3: c9 leaveq : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); : } : else if (VARATT_IS_COMPRESSED(attr)) : { : /* here, va_rawsize is just the payload size */ : result = VARRAWSIZE_4B_C(attr) + VARHDRSZ; 0.00 : 4a14d4: 83 c0 04 add $0x4,%eax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14d7: c3 retq 0.00 : 4a14d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a14df: 00 : toast_raw_datum_size(Datum value) : { : struct varlena *attr = (struct varlena *) DatumGetPointer(value); : Size result; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a14e0: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 4a14e4: 3c 12 cmp $0x12,%al 0.00 : 4a14e6: 74 18 je 4a1500 : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); : result = toast_pointer.va_rawsize; : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a14e8: 2c 01 sub $0x1,%al 0.00 : 4a14ea: 74 24 je 4a1510 : { : /* : * we have to normalize the header length to VARHDRSZ or else the : * callers of this function will be confused. : */ : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; 0.00 : 4a14ec: d0 ea shr %dl : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14ee: c9 leaveq : { : /* : * we have to normalize the header length to VARHDRSZ or else the : * callers of this function will be confused. : */ : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:325 21.74 : 4a14ef: 0f b6 c2 movzbl %dl,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:325 4.35 : 4a14f2: 48 83 c0 03 add $0x3,%rax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14f6: c3 retq 0.00 : 4a14f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a14fe: 00 00 : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : /* va_rawsize is the size of the original datum -- including header */ : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a1500: 48 8b 47 02 mov 0x2(%rdi),%rax 0.00 : 4a1504: 48 89 45 f0 mov %rax,-0x10(%rbp) : result = toast_pointer.va_rawsize; 0.00 : 4a1508: 48 63 45 f0 movslq -0x10(%rbp),%rax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a150c: c9 leaveq 0.00 : 4a150d: c3 retq 0.00 : 4a150e: 66 90 xchg %ax,%ax : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) : { : struct varatt_indirect toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a1510: 48 8b 7f 02 mov 0x2(%rdi),%rdi 0.00 : 4a1514: 48 89 7d f0 mov %rdi,-0x10(%rbp) : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(toast_pointer.pointer)); : : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); 0.00 : 4a1518: e8 83 ff ff ff callq 4a14a0 : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a151d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:325 26.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:325 20.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:319 13.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:321 6.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:323 6.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:323 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3f40 : : * This causes the whole page to be reported (with the recheck flag) : * when the TIDBitmap is scanned. : */ : void : tbm_add_page(TIDBitmap *tbm, BlockNumber pageno) : { 0.00 : 5e3f40: 55 push %rbp 0.00 : 5e3f41: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:319 20.00 : 5e3f44: 53 push %rbx 0.00 : 5e3f45: 48 89 fb mov %rdi,%rbx 0.00 : 5e3f48: 48 83 ec 08 sub $0x8,%rsp : /* Enter the page in the bitmap, or mark it lossy if already present */ : tbm_mark_page_lossy(tbm, pageno); /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:321 13.33 : 5e3f4c: e8 9f fb ff ff callq 5e3af0 : /* If we went over the memory limit, lossify some more pages */ : if (tbm->nentries > tbm->maxentries) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:323 6.67 : 5e3f51: 8b 43 20 mov 0x20(%rbx),%eax 6.67 : 5e3f54: 3b 43 24 cmp 0x24(%rbx),%eax 0.00 : 5e3f57: 7f 07 jg 5e3f60 : tbm_lossify(tbm); : } 0.00 : 5e3f59: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:325 26.67 : 5e3f5d: 5b pop %rbx 0.00 : 5e3f5e: c9 leaveq 26.67 : 5e3f5f: c3 retq 0.00 : 5e3f60: 48 83 c4 08 add $0x8,%rsp : { : /* Enter the page in the bitmap, or mark it lossy if already present */ : tbm_mark_page_lossy(tbm, pageno); : /* If we went over the memory limit, lossify some more pages */ : if (tbm->nentries > tbm->maxentries) : tbm_lossify(tbm); 0.00 : 5e3f64: 48 89 df mov %rbx,%rdi : } 0.00 : 5e3f67: 5b pop %rbx 0.00 : 5e3f68: c9 leaveq : { : /* Enter the page in the bitmap, or mark it lossy if already present */ : tbm_mark_page_lossy(tbm, pageno); : /* If we went over the memory limit, lossify some more pages */ : if (tbm->nentries > tbm->maxentries) : tbm_lossify(tbm); 0.00 : 5e3f69: e9 d2 fd ff ff jmpq 5e3d40 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.53 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:287 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:271 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:275 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:278 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:277 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:277 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:277 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:287 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:287 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:290 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:292 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:300 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:300 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:300 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:303 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:304 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:309 5.26 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:309 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3f70 : : * TBMIterateResult when any of these tuples are reported out. : */ : void : tbm_add_tuples(TIDBitmap *tbm, const ItemPointer tids, int ntids, : bool recheck) : { 0.00 : 5e3f70: 55 push %rbp 0.00 : 5e3f71: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:271 5.26 : 5e3f74: 41 57 push %r15 0.00 : 5e3f76: 49 89 ff mov %rdi,%r15 0.00 : 5e3f79: 41 56 push %r14 0.00 : 5e3f7b: 41 55 push %r13 0.00 : 5e3f7d: 41 54 push %r12 0.00 : 5e3f7f: 53 push %rbx 0.00 : 5e3f80: 48 83 ec 08 sub $0x8,%rsp : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:275 5.26 : 5e3f84: 85 d2 test %edx,%edx : * TBMIterateResult when any of these tuples are reported out. : */ : void : tbm_add_tuples(TIDBitmap *tbm, const ItemPointer tids, int ntids, : bool recheck) : { 0.00 : 5e3f86: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 5e3f89: 88 4d d3 mov %cl,-0x2d(%rbp) : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) 0.00 : 5e3f8c: 0f 8e ee 00 00 00 jle 5e4080 : { : BlockNumber blk = ItemPointerGetBlockNumber(tids + i); : OffsetNumber off = ItemPointerGetOffsetNumber(tids + i); /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:278 5.26 : 5e3f92: 44 0f b7 76 04 movzwl 0x4(%rsi),%r14d : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) : { : BlockNumber blk = ItemPointerGetBlockNumber(tids + i); 0.00 : 5e3f97: 0f b7 0e movzwl (%rsi),%ecx /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:277 5.26 : 5e3f9a: 0f b7 56 02 movzwl 0x2(%rsi),%edx : PagetableEntry *page; : int wordnum, : bitnum; : : /* safety check to ensure we don't overrun bit array bounds */ : if (off < 1 || off > MAX_TUPLES_PER_PAGE) 0.00 : 5e3f9e: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 5e3fa2: 66 3d 22 01 cmp $0x122,%ax 0.00 : 5e3fa6: 0f 87 e4 00 00 00 ja 5e4090 : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) : { : BlockNumber blk = ItemPointerGetBlockNumber(tids + i); 0.00 : 5e3fac: 89 cb mov %ecx,%ebx 0.00 : 5e3fae: 0f b7 c2 movzwl %dx,%eax 5.26 : 5e3fb1: 49 89 f4 mov %rsi,%r12 0.00 : 5e3fb4: c1 e3 10 shl $0x10,%ebx 0.00 : 5e3fb7: 45 31 ed xor %r13d,%r13d 0.00 : 5e3fba: 09 c3 or %eax,%ebx 5.26 : 5e3fbc: eb 3e jmp 5e3ffc 0.00 : 5e3fbe: 66 90 xchg %ax,%ax : bool recheck) : { : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) 0.00 : 5e3fc0: 41 83 c5 01 add $0x1,%r13d 0.00 : 5e3fc4: 44 39 6d d4 cmp %r13d,-0x2c(%rbp) 0.00 : 5e3fc8: 0f 8e b2 00 00 00 jle 5e4080 : { : BlockNumber blk = ItemPointerGetBlockNumber(tids + i); : OffsetNumber off = ItemPointerGetOffsetNumber(tids + i); 0.00 : 5e3fce: 45 0f b7 74 24 0a movzwl 0xa(%r12),%r14d : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) : { : BlockNumber blk = ItemPointerGetBlockNumber(tids + i); 0.00 : 5e3fd4: 41 0f b7 4c 24 06 movzwl 0x6(%r12),%ecx 0.00 : 5e3fda: 41 0f b7 54 24 08 movzwl 0x8(%r12),%edx : OffsetNumber off = ItemPointerGetOffsetNumber(tids + i); 0.00 : 5e3fe0: 49 83 c4 06 add $0x6,%r12 : PagetableEntry *page; : int wordnum, : bitnum; : : /* safety check to ensure we don't overrun bit array bounds */ : if (off < 1 || off > MAX_TUPLES_PER_PAGE) 0.00 : 5e3fe4: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 5e3fe8: 66 3d 22 01 cmp $0x122,%ax 0.00 : 5e3fec: 0f 87 9e 00 00 00 ja 5e4090 : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) : { : BlockNumber blk = ItemPointerGetBlockNumber(tids + i); 0.00 : 5e3ff2: 89 cb mov %ecx,%ebx 0.00 : 5e3ff4: 0f b7 c2 movzwl %dx,%eax 0.00 : 5e3ff7: c1 e3 10 shl $0x10,%ebx 0.00 : 5e3ffa: 09 c3 or %eax,%ebx : : /* safety check to ensure we don't overrun bit array bounds */ : if (off < 1 || off > MAX_TUPLES_PER_PAGE) : elog(ERROR, "tuple offset out of range: %u", off); : : if (tbm_page_is_lossy(tbm, blk)) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:287 5.26 : 5e3ffc: 89 de mov %ebx,%esi 5.26 : 5e3ffe: 4c 89 ff mov %r15,%rdi 0.00 : 5e4001: e8 9a f6 ff ff callq 5e36a0 10.53 : 5e4006: 84 c0 test %al,%al 0.00 : 5e4008: 75 b6 jne 5e3fc0 : continue; /* whole page is already marked */ : : page = tbm_get_pageentry(tbm, blk); /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:290 5.26 : 5e400a: 89 de mov %ebx,%esi 0.00 : 5e400c: 4c 89 ff mov %r15,%rdi 0.00 : 5e400f: e8 5c fc ff ff callq 5e3c70 : : if (page->ischunk) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:292 5.26 : 5e4014: 31 f6 xor %esi,%esi 0.00 : 5e4016: 80 78 04 00 cmpb $0x0,0x4(%rax) : elog(ERROR, "tuple offset out of range: %u", off); : : if (tbm_page_is_lossy(tbm, blk)) : continue; /* whole page is already marked */ : : page = tbm_get_pageentry(tbm, blk); 0.00 : 5e401a: 48 89 c2 mov %rax,%rdx : : if (page->ischunk) 0.00 : 5e401d: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 5e4022: 75 2a jne 5e404e : wordnum = bitnum = 0; : } : else : { : /* Page is exact, so set bit for individual tuple */ : wordnum = WORDNUM(off - 1); 0.00 : 5e4024: 41 0f b7 ce movzwl %r14w,%ecx 0.00 : 5e4028: 8d 41 1e lea 0x1e(%rcx),%eax 0.00 : 5e402b: 83 e9 01 sub $0x1,%ecx /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:300 5.26 : 5e402e: 89 ce mov %ecx,%esi 0.00 : 5e4030: 0f 48 f0 cmovs %eax,%esi 0.00 : 5e4033: 89 c8 mov %ecx,%eax 5.26 : 5e4035: c1 f8 1f sar $0x1f,%eax 0.00 : 5e4038: c1 fe 05 sar $0x5,%esi 0.00 : 5e403b: c1 e8 1b shr $0x1b,%eax 0.00 : 5e403e: 01 c1 add %eax,%ecx 5.26 : 5e4040: 83 e1 1f and $0x1f,%ecx 0.00 : 5e4043: 29 c1 sub %eax,%ecx 0.00 : 5e4045: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5e404a: d3 e0 shl %cl,%eax 0.00 : 5e404c: 89 c1 mov %eax,%ecx : bitnum = BITNUM(off - 1); : } : page->words[wordnum] |= ((bitmapword) 1 << bitnum); 0.00 : 5e404e: 48 63 c6 movslq %esi,%rax /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:303 5.26 : 5e4051: 09 4c 82 08 or %ecx,0x8(%rdx,%rax,4) : page->recheck |= recheck; /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:304 5.26 : 5e4055: 0f b6 45 d3 movzbl -0x2d(%rbp),%eax 0.00 : 5e4059: 08 42 05 or %al,0x5(%rdx) : : if (tbm->nentries > tbm->maxentries) 0.00 : 5e405c: 41 8b 47 20 mov 0x20(%r15),%eax 0.00 : 5e4060: 41 3b 47 24 cmp 0x24(%r15),%eax 0.00 : 5e4064: 0f 8e 56 ff ff ff jle 5e3fc0 : tbm_lossify(tbm); 0.00 : 5e406a: 4c 89 ff mov %r15,%rdi : bool recheck) : { : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) 0.00 : 5e406d: 41 83 c5 01 add $0x1,%r13d : } : page->words[wordnum] |= ((bitmapword) 1 << bitnum); : page->recheck |= recheck; : : if (tbm->nentries > tbm->maxentries) : tbm_lossify(tbm); 0.00 : 5e4071: e8 ca fc ff ff callq 5e3d40 : bool recheck) : { : int i; : : Assert(!tbm->iterating); : for (i = 0; i < ntids; i++) 0.00 : 5e4076: 44 39 6d d4 cmp %r13d,-0x2c(%rbp) 0.00 : 5e407a: 0f 8f 4e ff ff ff jg 5e3fce : page->recheck |= recheck; : : if (tbm->nentries > tbm->maxentries) : tbm_lossify(tbm); : } : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:309 5.26 : 5e4080: 48 83 c4 08 add $0x8,%rsp 0.00 : 5e4084: 5b pop %rbx 0.00 : 5e4085: 41 5c pop %r12 5.26 : 5e4087: 41 5d pop %r13 0.00 : 5e4089: 41 5e pop %r14 0.00 : 5e408b: 41 5f pop %r15 0.00 : 5e408d: c9 leaveq 0.00 : 5e408e: c3 retq 0.00 : 5e408f: 90 nop : int wordnum, : bitnum; : : /* safety check to ensure we don't overrun bit array bounds */ : if (off < 1 || off > MAX_TUPLES_PER_PAGE) : elog(ERROR, "tuple offset out of range: %u", off); 0.00 : 5e4090: ba 05 25 89 00 mov $0x892505,%edx 0.00 : 5e4095: be 1d 01 00 00 mov $0x11d,%esi 0.00 : 5e409a: bf c3 24 89 00 mov $0x8924c3,%edi 0.00 : 5e409f: e8 7c 73 19 00 callq 77b420 0.00 : 5e40a4: 41 0f b7 d6 movzwl %r14w,%edx 0.00 : 5e40a8: be d9 24 89 00 mov $0x8924d9,%esi 0.00 : 5e40ad: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e40b2: 31 c0 xor %eax,%eax 0.00 : 5e40b4: e8 77 71 19 00 callq 77b230 0.00 : 5e40b9: e8 12 54 e8 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.57 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1156 14.29 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1123 14.29 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 14.29 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1140 7.14 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 7.14 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1129 7.14 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1156 7.14 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1168 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063dd10 : : * the queue is full and contains no duplicate entries. In that case, we : * let the backend know by returning false. : */ : bool : ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 7.14 : 63dd10: 55 push %rbp : CheckpointerRequest *request; : bool too_full; : : if (!IsUnderPostmaster) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1123 14.29 : 63dd11: 31 c0 xor %eax,%eax : * the queue is full and contains no duplicate entries. In that case, we : * let the backend know by returning false. : */ : bool : ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { 0.00 : 63dd13: 48 89 e5 mov %rsp,%rbp 0.00 : 63dd16: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 63dd1a: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 63dd1e: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 63dd22: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 63dd26: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 63dd2a: 48 81 ec d0 00 00 00 sub $0xd0,%rsp 0.00 : 63dd31: 48 89 bd 50 ff ff ff mov %rdi,-0xb0(%rbp) 0.00 : 63dd38: 89 bd 3c ff ff ff mov %edi,-0xc4(%rbp) 0.00 : 63dd3e: 48 c1 ef 20 shr $0x20,%rdi : CheckpointerRequest *request; : bool too_full; : : if (!IsUnderPostmaster) 0.00 : 63dd42: 80 3d 74 c3 57 00 00 cmpb $0x0,0x57c374(%rip) # bba0bd : * the queue is full and contains no duplicate entries. In that case, we : * let the backend know by returning false. : */ : bool : ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 14.29 : 63dd49: 89 b5 38 ff ff ff mov %esi,-0xc8(%rbp) 0.00 : 63dd4f: 89 95 34 ff ff ff mov %edx,-0xcc(%rbp) 0.00 : 63dd55: 89 8d 30 ff ff ff mov %ecx,-0xd0(%rbp) 0.00 : 63dd5b: 89 b5 58 ff ff ff mov %esi,-0xa8(%rbp) 0.00 : 63dd61: 89 bd 40 ff ff ff mov %edi,-0xc0(%rbp) : CheckpointerRequest *request; : bool too_full; : : if (!IsUnderPostmaster) 0.00 : 63dd67: 74 6c je 63ddd5 : return false; /* probably shouldn't even get here */ : : if (AmCheckpointerProcess()) 0.00 : 63dd69: 83 3d 08 a1 52 00 04 cmpl $0x4,0x52a108(%rip) # b67e78 0.00 : 63dd70: 0f 84 f0 02 00 00 je 63e066 : elog(ERROR, "ForwardFsyncRequest must not be called in checkpointer"); : : LWLockAcquire(CheckpointerCommLock, LW_EXCLUSIVE); 0.00 : 63dd76: 48 8b 3d 83 fc 53 00 mov 0x53fc83(%rip),%rdi # b7da00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1129 7.14 : 63dd7d: 31 f6 xor %esi,%esi 0.00 : 63dd7f: 48 81 c7 20 02 00 00 add $0x220,%rdi 0.00 : 63dd86: e8 65 1d 05 00 callq 68faf0 : : /* Count all backend writes regardless of if they fit in the queue */ : if (!AmBackgroundWriterProcess()) 0.00 : 63dd8b: 83 3d e6 a0 52 00 03 cmpl $0x3,0x52a0e6(%rip) # b67e78 0.00 : 63dd92: 74 0b je 63dd9f : CheckpointerShmem->num_backend_writes++; 0.00 : 63dd94: 48 8b 05 8d dd 53 00 mov 0x53dd8d(%rip),%rax # b7bb28 0.00 : 63dd9b: 83 40 18 01 addl $0x1,0x18(%rax) : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1140 14.29 : 63dd9f: 48 8b 0d 82 dd 53 00 mov 0x53dd82(%rip),%rcx # b7bb28 0.00 : 63dda6: 8b 31 mov (%rcx),%esi 0.00 : 63dda8: 85 f6 test %esi,%esi 0.00 : 63ddaa: 75 44 jne 63ddf0 : { : /* : * Count the subset of writes where backends have to do their own : * fsync : */ : if (!AmBackgroundWriterProcess()) 0.00 : 63ddac: 83 3d c5 a0 52 00 03 cmpl $0x3,0x52a0c5(%rip) # b67e78 0.00 : 63ddb3: 74 0b je 63ddc0 : CheckpointerShmem->num_backend_fsync++; 0.00 : 63ddb5: 48 8b 05 6c dd 53 00 mov 0x53dd6c(%rip),%rax # b7bb28 0.00 : 63ddbc: 83 40 1c 01 addl $0x1,0x1c(%rax) : LWLockRelease(CheckpointerCommLock); 0.00 : 63ddc0: 48 8b 3d 39 fc 53 00 mov 0x53fc39(%rip),%rdi # b7da00 0.00 : 63ddc7: 48 81 c7 20 02 00 00 add $0x220,%rdi 0.00 : 63ddce: e8 cd 15 05 00 callq 68f3a0 0.00 : 63ddd3: 31 c0 xor %eax,%eax : /* ... but not till after we release the lock */ : if (too_full && ProcGlobal->checkpointerLatch) : SetLatch(ProcGlobal->checkpointerLatch); : : return true; : } 0.00 : 63ddd5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 63ddd9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 63dddd: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 63dde1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 63dde5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 63dde9: c9 leaveq 0.00 : 63ddea: c3 retq 0.00 : 63ddeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || 0.00 : 63ddf0: 8b 41 20 mov 0x20(%rcx),%eax 0.00 : 63ddf3: 3b 41 24 cmp 0x24(%rcx),%eax 0.00 : 63ddf6: 0f 8c 88 01 00 00 jl 63df84 : : /* must hold CheckpointerCommLock in exclusive mode */ : Assert(LWLockHeldByMe(CheckpointerCommLock)); : : /* Initialize skip_slot array */ : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); 0.00 : 63ddfc: 48 63 f8 movslq %eax,%rdi 0.00 : 63ddff: e8 6c b1 15 00 callq 798f70 : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 63de04: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx : : /* must hold CheckpointerCommLock in exclusive mode */ : Assert(LWLockHeldByMe(CheckpointerCommLock)); : : /* Initialize skip_slot array */ : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); 0.00 : 63de0b: 49 89 c6 mov %rax,%r14 : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 63de0e: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 63de12: 48 39 d1 cmp %rdx,%rcx 0.00 : 63de15: 76 19 jbe 63de30 0.00 : 63de17: 48 89 d0 mov %rdx,%rax 0.00 : 63de1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 63de20: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 63de27: 48 83 c0 08 add $0x8,%rax 0.00 : 63de2b: 48 39 c1 cmp %rax,%rcx 0.00 : 63de2e: 75 f0 jne 63de20 : ctl.keysize = sizeof(CheckpointerRequest); : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); : ctl.hash = tag_hash; : ctl.hcxt = CurrentMemoryContext; 0.00 : 63de30: 48 8b 05 29 ca 57 00 mov 0x57ca29(%rip),%rax # bba860 : /* Initialize skip_slot array */ : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(CheckpointerRequest); 0.00 : 63de37: 48 c7 45 88 14 00 00 movq $0x14,-0x78(%rbp) 0.00 : 63de3e: 00 : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); : ctl.hash = tag_hash; : ctl.hcxt = CurrentMemoryContext; : : htab = hash_create("CompactCheckpointerRequestQueue", 0.00 : 63de3f: b9 30 02 00 00 mov $0x230,%ecx : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(CheckpointerRequest); : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); 0.00 : 63de44: 48 c7 45 90 18 00 00 movq $0x18,-0x70(%rbp) 0.00 : 63de4b: 00 : ctl.hash = tag_hash; 0.00 : 63de4c: 48 c7 45 98 60 4f 78 movq $0x784f60,-0x68(%rbp) 0.00 : 63de53: 00 : ctl.hcxt = CurrentMemoryContext; : : htab = hash_create("CompactCheckpointerRequestQueue", 0.00 : 63de54: bf f8 e8 89 00 mov $0x89e8f8,%edi : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(CheckpointerRequest); : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); : ctl.hash = tag_hash; : ctl.hcxt = CurrentMemoryContext; 0.00 : 63de59: 48 89 45 b8 mov %rax,-0x48(%rbp) : : htab = hash_create("CompactCheckpointerRequestQueue", 0.00 : 63de5d: 48 8b 05 c4 dc 53 00 mov 0x53dcc4(%rip),%rax # b7bb28 0.00 : 63de64: 48 63 70 20 movslq 0x20(%rax),%rsi 0.00 : 63de68: e8 43 6a 14 00 callq 7848b0 0.00 : 63de6d: 49 89 c5 mov %rax,%r13 : * the code below understand the specific semantics of such requests (it : * could blow away preceding entries that would end up being canceled : * anyhow), but it's not clear that the extra complexity would buy us : * anything. : */ : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63de70: 48 8b 05 b1 dc 53 00 mov 0x53dcb1(%rip),%rax # b7bb28 0.00 : 63de77: 8b 50 20 mov 0x20(%rax),%edx 0.00 : 63de7a: 85 d2 test %edx,%edx 0.00 : 63de7c: 0f 8e a3 01 00 00 jle 63e025 0.00 : 63de82: 4c 8d 7d cf lea -0x31(%rbp),%r15 0.00 : 63de86: 31 db xor %ebx,%ebx 0.00 : 63de88: 45 31 e4 xor %r12d,%r12d 0.00 : 63de8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * same, which should be okay because we zeroed them in : * CheckpointerShmemInit. Note also that RelFileNode had better : * contain no pad bytes. : */ : request = &CheckpointerShmem->requests[n]; : slotmap = hash_search(htab, request, HASH_ENTER, &found); 0.00 : 63de90: 48 63 f3 movslq %ebx,%rsi 0.00 : 63de93: ba 01 00 00 00 mov $0x1,%edx 0.00 : 63de98: 4c 89 f9 mov %r15,%rcx 0.00 : 63de9b: 48 8d 34 b6 lea (%rsi,%rsi,4),%rsi 0.00 : 63de9f: 4c 89 ef mov %r13,%rdi 0.00 : 63dea2: 48 8d 74 b0 28 lea 0x28(%rax,%rsi,4),%rsi 0.00 : 63dea7: e8 f4 67 14 00 callq 7846a0 : if (found) 0.00 : 63deac: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : * same, which should be okay because we zeroed them in : * CheckpointerShmemInit. Note also that RelFileNode had better : * contain no pad bytes. : */ : request = &CheckpointerShmem->requests[n]; : slotmap = hash_search(htab, request, HASH_ENTER, &found); 0.00 : 63deb0: 48 89 c2 mov %rax,%rdx : if (found) 0.00 : 63deb3: 74 0d je 63dec2 : { : /* Duplicate, so mark the previous occurrence as skippable */ : skip_slot[slotmap->slot] = true; 0.00 : 63deb5: 48 63 40 14 movslq 0x14(%rax),%rax : num_skipped++; 0.00 : 63deb9: 41 83 c4 01 add $0x1,%r12d : request = &CheckpointerShmem->requests[n]; : slotmap = hash_search(htab, request, HASH_ENTER, &found); : if (found) : { : /* Duplicate, so mark the previous occurrence as skippable */ : skip_slot[slotmap->slot] = true; 0.00 : 63debd: 41 c6 04 06 01 movb $0x1,(%r14,%rax,1) : num_skipped++; : } : /* Remember slot containing latest occurrence of this request value */ : slotmap->slot = n; 0.00 : 63dec2: 89 5a 14 mov %ebx,0x14(%rdx) : * the code below understand the specific semantics of such requests (it : * could blow away preceding entries that would end up being canceled : * anyhow), but it's not clear that the extra complexity would buy us : * anything. : */ : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63dec5: 48 8b 05 5c dc 53 00 mov 0x53dc5c(%rip),%rax # b7bb28 0.00 : 63decc: 83 c3 01 add $0x1,%ebx 0.00 : 63decf: 3b 58 20 cmp 0x20(%rax),%ebx 0.00 : 63ded2: 7c bc jl 63de90 : /* Remember slot containing latest occurrence of this request value */ : slotmap->slot = n; : } : : /* Done with the hash table. */ : hash_destroy(htab); 0.00 : 63ded4: 4c 89 ef mov %r13,%rdi 0.00 : 63ded7: e8 24 68 14 00 callq 784700 : : /* If no duplicates, we're out of luck. */ : if (!num_skipped) 0.00 : 63dedc: 45 85 e4 test %r12d,%r12d 0.00 : 63dedf: 0f 84 48 01 00 00 je 63e02d : return false; : } : : /* We found some duplicates; remove them. */ : preserve_count = 0; : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63dee5: 48 8b 0d 3c dc 53 00 mov 0x53dc3c(%rip),%rcx # b7bb28 : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || 0.00 : 63deec: 31 f6 xor %esi,%esi 0.00 : 63deee: 31 db xor %ebx,%ebx : return false; : } : : /* We found some duplicates; remove them. */ : preserve_count = 0; : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63def0: 8b 41 20 mov 0x20(%rcx),%eax 0.00 : 63def3: 85 c0 test %eax,%eax 0.00 : 63def5: 7e 50 jle 63df47 0.00 : 63def7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 63defe: 00 00 : { : if (skip_slot[n]) 0.00 : 63df00: 48 63 d6 movslq %esi,%rdx 0.00 : 63df03: 41 80 3c 16 00 cmpb $0x0,(%r14,%rdx,1) 0.00 : 63df08: 75 35 jne 63df3f : continue; : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; 0.00 : 63df0a: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 63df0e: 48 63 c3 movslq %ebx,%rax 0.00 : 63df11: 83 c3 01 add $0x1,%ebx 0.00 : 63df14: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 63df18: 48 8d 54 91 20 lea 0x20(%rcx,%rdx,4),%rdx 0.00 : 63df1d: 48 8d 44 81 20 lea 0x20(%rcx,%rax,4),%rax 0.00 : 63df22: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 63df26: 48 89 48 08 mov %rcx,0x8(%rax) 0.00 : 63df2a: 48 8b 4a 10 mov 0x10(%rdx),%rcx 0.00 : 63df2e: 48 89 48 10 mov %rcx,0x10(%rax) 0.00 : 63df32: 8b 52 18 mov 0x18(%rdx),%edx 0.00 : 63df35: 89 50 18 mov %edx,0x18(%rax) 0.00 : 63df38: 48 8b 0d e9 db 53 00 mov 0x53dbe9(%rip),%rcx # b7bb28 : return false; : } : : /* We found some duplicates; remove them. */ : preserve_count = 0; : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63df3f: 83 c6 01 add $0x1,%esi 0.00 : 63df42: 3b 71 20 cmp 0x20(%rcx),%esi 0.00 : 63df45: 7c b9 jl 63df00 : { : if (skip_slot[n]) : continue; : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; : } : ereport(DEBUG1, 0.00 : 63df47: 45 31 c0 xor %r8d,%r8d 0.00 : 63df4a: b9 60 eb 89 00 mov $0x89eb60,%ecx 0.00 : 63df4f: ba 01 05 00 00 mov $0x501,%edx 0.00 : 63df54: be 75 e8 89 00 mov $0x89e875,%esi 0.00 : 63df59: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 63df5e: e8 5d cb 13 00 callq 77aac0 0.00 : 63df63: 84 c0 test %al,%al 0.00 : 63df65: 0f 85 d5 00 00 00 jne 63e040 : (errmsg("compacted fsync request queue from %d entries to %d entries", : CheckpointerShmem->num_requests, preserve_count))); : CheckpointerShmem->num_requests = preserve_count; 0.00 : 63df6b: 48 8b 05 b6 db 53 00 mov 0x53dbb6(%rip),%rax # b7bb28 : : /* Cleanup. */ : pfree(skip_slot); 0.00 : 63df72: 4c 89 f7 mov %r14,%rdi : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; : } : ereport(DEBUG1, : (errmsg("compacted fsync request queue from %d entries to %d entries", : CheckpointerShmem->num_requests, preserve_count))); : CheckpointerShmem->num_requests = preserve_count; 0.00 : 63df75: 89 58 20 mov %ebx,0x20(%rax) : : /* Cleanup. */ : pfree(skip_slot); 0.00 : 63df78: e8 03 ac 15 00 callq 798b80 0.00 : 63df7d: 48 8b 0d a4 db 53 00 mov 0x53dba4(%rip),%rcx # b7bb28 : LWLockRelease(CheckpointerCommLock); : return false; : } : : /* OK, insert request */ : request = &CheckpointerShmem->requests[CheckpointerShmem->num_requests++]; 0.00 : 63df84: 8b 51 20 mov 0x20(%rcx),%edx 0.00 : 63df87: 48 63 c2 movslq %edx,%rax 0.00 : 63df8a: 83 c2 01 add $0x1,%edx : request->rnode = rnode; 0.00 : 63df8d: 48 8d 04 80 lea (%rax,%rax,4),%rax : LWLockRelease(CheckpointerCommLock); : return false; : } : : /* OK, insert request */ : request = &CheckpointerShmem->requests[CheckpointerShmem->num_requests++]; 0.00 : 63df91: 89 51 20 mov %edx,0x20(%rcx) : request->rnode = rnode; 0.00 : 63df94: 8b 95 38 ff ff ff mov -0xc8(%rbp),%edx 0.00 : 63df9a: 48 8d 04 81 lea (%rcx,%rax,4),%rax 0.00 : 63df9e: 89 50 30 mov %edx,0x30(%rax) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1156 28.57 : 63dfa1: 8b 95 40 ff ff ff mov -0xc0(%rbp),%edx 0.00 : 63dfa7: 89 50 2c mov %edx,0x2c(%rax) 7.14 : 63dfaa: 8b 95 3c ff ff ff mov -0xc4(%rbp),%edx 0.00 : 63dfb0: 89 50 28 mov %edx,0x28(%rax) : request->forknum = forknum; 0.00 : 63dfb3: 8b 95 34 ff ff ff mov -0xcc(%rbp),%edx 0.00 : 63dfb9: 89 50 34 mov %edx,0x34(%rax) : request->segno = segno; 0.00 : 63dfbc: 8b 95 30 ff ff ff mov -0xd0(%rbp),%edx 0.00 : 63dfc2: 89 50 38 mov %edx,0x38(%rax) : : /* If queue is more than half full, nudge the checkpointer to empty it */ : too_full = (CheckpointerShmem->num_requests >= 0.00 : 63dfc5: 48 8b 05 5c db 53 00 mov 0x53db5c(%rip),%rax # b7bb28 : CheckpointerShmem->max_requests / 2); : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dfcc: 48 8b 3d 2d fa 53 00 mov 0x53fa2d(%rip),%rdi # b7da00 : request->rnode = rnode; : request->forknum = forknum; : request->segno = segno; : : /* If queue is more than half full, nudge the checkpointer to empty it */ : too_full = (CheckpointerShmem->num_requests >= 0.00 : 63dfd3: 44 8b 60 20 mov 0x20(%rax),%r12d 0.00 : 63dfd7: 8b 40 24 mov 0x24(%rax),%eax : CheckpointerShmem->max_requests / 2); : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dfda: 48 81 c7 20 02 00 00 add $0x220,%rdi : request->rnode = rnode; : request->forknum = forknum; : request->segno = segno; : : /* If queue is more than half full, nudge the checkpointer to empty it */ : too_full = (CheckpointerShmem->num_requests >= 0.00 : 63dfe1: 89 c3 mov %eax,%ebx 0.00 : 63dfe3: c1 eb 1f shr $0x1f,%ebx 0.00 : 63dfe6: 01 c3 add %eax,%ebx 0.00 : 63dfe8: d1 fb sar %ebx : CheckpointerShmem->max_requests / 2); : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dfea: e8 b1 13 05 00 callq 68f3a0 : : /* ... but not till after we release the lock */ : if (too_full && ProcGlobal->checkpointerLatch) 0.00 : 63dfef: 41 39 dc cmp %ebx,%r12d 0.00 : 63dff2: 7c 24 jl 63e018 0.00 : 63dff4: 48 8b 05 5d f9 53 00 mov 0x53f95d(%rip),%rax # b7d958 0.00 : 63dffb: 48 8b 78 38 mov 0x38(%rax),%rdi 0.00 : 63dfff: 48 85 ff test %rdi,%rdi 0.00 : 63e002: 74 14 je 63e018 : SetLatch(ProcGlobal->checkpointerLatch); 0.00 : 63e004: e8 b7 b0 ff ff callq 6390c0 0.00 : 63e009: b8 01 00 00 00 mov $0x1,%eax 0.00 : 63e00e: e9 c2 fd ff ff jmpq 63ddd5 0.00 : 63e013: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 63e018: b8 01 00 00 00 mov $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1168 7.14 : 63e01d: 0f 1f 00 nopl (%rax) 0.00 : 63e020: e9 b0 fd ff ff jmpq 63ddd5 : /* Remember slot containing latest occurrence of this request value */ : slotmap->slot = n; : } : : /* Done with the hash table. */ : hash_destroy(htab); 0.00 : 63e025: 4c 89 ef mov %r13,%rdi 0.00 : 63e028: e8 d3 66 14 00 callq 784700 : : /* If no duplicates, we're out of luck. */ : if (!num_skipped) : { : pfree(skip_slot); 0.00 : 63e02d: 4c 89 f7 mov %r14,%rdi 0.00 : 63e030: e8 4b ab 15 00 callq 798b80 : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || 0.00 : 63e035: e9 72 fd ff ff jmpq 63ddac 0.00 : 63e03a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (skip_slot[n]) : continue; : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; : } : ereport(DEBUG1, 0.00 : 63e040: 48 8b 05 e1 da 53 00 mov 0x53dae1(%rip),%rax # b7bb28 0.00 : 63e047: 89 da mov %ebx,%edx 0.00 : 63e049: bf 18 e9 89 00 mov $0x89e918,%edi 0.00 : 63e04e: 8b 70 20 mov 0x20(%rax),%esi 0.00 : 63e051: 31 c0 xor %eax,%eax 0.00 : 63e053: e8 48 e8 13 00 callq 77c8a0 0.00 : 63e058: 89 c7 mov %eax,%edi 0.00 : 63e05a: 31 c0 xor %eax,%eax 0.00 : 63e05c: e8 7f c5 13 00 callq 77a5e0 0.00 : 63e061: e9 05 ff ff ff jmpq 63df6b : : if (!IsUnderPostmaster) : return false; /* probably shouldn't even get here */ : : if (AmCheckpointerProcess()) : elog(ERROR, "ForwardFsyncRequest must not be called in checkpointer"); 0.00 : 63e066: ba 40 eb 89 00 mov $0x89eb40,%edx 0.00 : 63e06b: be 67 04 00 00 mov $0x467,%esi 0.00 : 63e070: bf 75 e8 89 00 mov $0x89e875,%edi 0.00 : 63e075: e8 a6 d3 13 00 callq 77b420 0.00 : 63e07a: be c0 e8 89 00 mov $0x89e8c0,%esi 0.00 : 63e07f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 63e084: 31 c0 xor %eax,%eax 0.00 : 63e086: e8 a5 d1 13 00 callq 77b230 0.00 : 63e08b: e8 40 b4 e2 ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 15.38 ??:0 15.38 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000672f0 <_IO_fread>: 0.00 : 672f0: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 672f5: 49 89 d4 mov %rdx,%r12 0.00 : 672f8: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) ??:0 7.69 : 672fd: 4c 0f af e6 imul %rsi,%r12 0.00 : 67301: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 67306: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 6730b: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 67310: 48 83 ec 28 sub $0x28,%rsp 7.69 : 67314: 49 89 fe mov %rdi,%r14 0.00 : 67317: 49 89 f5 mov %rsi,%r13 0.00 : 6731a: 48 89 d5 mov %rdx,%rbp 7.69 : 6731d: 48 89 cb mov %rcx,%rbx 0.00 : 67320: 4d 85 e4 test %r12,%r12 0.00 : 67323: 0f 84 f7 00 00 00 je 67420 <_IO_fread+0x130> 0.00 : 67329: 66 83 39 00 cmpw $0x0,(%rcx) 0.00 : 6732d: 78 56 js 67385 <_IO_fread+0x95> 0.00 : 6732f: 4c 8b 91 88 00 00 00 mov 0x88(%rcx),%r10 7.69 : 67336: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 6733d: 00 00 0.00 : 6733f: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 67343: 74 3b je 67380 <_IO_fread+0x90> 0.00 : 67345: 31 d2 xor %edx,%edx 0.00 : 67347: be 01 00 00 00 mov $0x1,%esi 0.00 : 6734c: 89 d0 mov %edx,%eax 0.00 : 6734e: 83 3d 5f 03 31 00 00 cmpl $0x0,0x31035f(%rip) # 3776b4 <__libc_multiple_threads> 7.69 : 67355: 74 0d je 67364 <_IO_fread+0x74> 0.00 : 67357: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 6735c: 0f 85 11 01 00 00 jne 67473 <_L_lock_51> 0.00 : 67362: eb 0a jmp 6736e <_IO_fread+0x7e> 0.00 : 67364: 41 0f b1 32 cmpxchg %esi,(%r10) 7.69 : 67368: 0f 85 05 01 00 00 jne 67473 <_L_lock_51> 0.00 : 6736e: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 67375: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 67379: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 67380: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : 67385: 4c 89 e2 mov %r12,%rdx 0.00 : 67388: 4c 89 f6 mov %r14,%rsi 0.00 : 6738b: 48 89 df mov %rbx,%rdi 0.00 : 6738e: e8 cd ca 00 00 callq 73e60 <_IO_sgetn> 0.00 : 67393: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 67397: 48 89 c6 mov %rax,%rsi 0.00 : 6739a: 78 4c js 673e8 <_IO_fread+0xf8> 0.00 : 6739c: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 673a3: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 673a6: 83 e8 01 sub $0x1,%eax 0.00 : 673a9: 85 c0 test %eax,%eax 7.69 : 673ab: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 673ae: 75 38 jne 673e8 <_IO_fread+0xf8> 0.00 : 673b0: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 673b7: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 673be: 00 0.00 : 673bf: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 673c6: 83 3d e7 02 31 00 00 cmpl $0x0,0x3102e7(%rip) # 3776b4 <__libc_multiple_threads> 7.69 : 673cd: 74 0b je 673da <_IO_fread+0xea> 0.00 : 673cf: f0 ff 0a lock decl (%rdx) 0.00 : 673d2: 0f 85 b6 00 00 00 jne 6748e <_L_unlock_103> 0.00 : 673d8: eb 08 jmp 673e2 <_IO_fread+0xf2> 0.00 : 673da: ff 0a decl (%rdx) 7.69 : 673dc: 0f 85 ac 00 00 00 jne 6748e <_L_unlock_103> 0.00 : 673e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 673e8: 49 39 f4 cmp %rsi,%r12 0.00 : 673eb: 74 0b je 673f8 <_IO_fread+0x108> 0.00 : 673ed: 48 89 f0 mov %rsi,%rax 0.00 : 673f0: 31 d2 xor %edx,%edx 0.00 : 673f2: 49 f7 f5 div %r13 0.00 : 673f5: 48 89 c5 mov %rax,%rbp 0.00 : 673f8: 48 89 e8 mov %rbp,%rax 0.00 : 673fb: 48 8b 1c 24 mov (%rsp),%rbx 15.38 : 673ff: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 67404: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 67409: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 6740e: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 15.38 : 67413: 48 83 c4 28 add $0x28,%rsp 0.00 : 67417: c3 retq 0.00 : 67418: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6741f: 00 0.00 : 67420: 31 ed xor %ebp,%ebp 0.00 : 67422: eb d4 jmp 673f8 <_IO_fread+0x108> 0.00 : 67424: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 67428: 49 89 c0 mov %rax,%r8 0.00 : 6742b: 78 3e js 6746b <_IO_fread+0x17b> 0.00 : 6742d: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 67434: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 67437: 83 e8 01 sub $0x1,%eax 0.00 : 6743a: 85 c0 test %eax,%eax 0.00 : 6743c: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6743f: 75 2a jne 6746b <_IO_fread+0x17b> 0.00 : 67441: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 67448: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6744f: 00 0.00 : 67450: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 67457: 83 3d 56 02 31 00 00 cmpl $0x0,0x310256(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6745e: 74 07 je 67467 <_IO_fread+0x177> 0.00 : 67460: f0 ff 0a lock decl (%rdx) 0.00 : 67463: 75 44 jne 674a9 <_L_unlock_178> 0.00 : 67465: eb 04 jmp 6746b <_IO_fread+0x17b> 0.00 : 67467: ff 0a decl (%rdx) 0.00 : 67469: 75 3e jne 674a9 <_L_unlock_178> 0.00 : 6746b: 4c 89 c7 mov %r8,%rdi 0.00 : 6746e: e8 ed 7a fb ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /bin/bash ---------------------------------------------- 41.67 ??:0 16.67 ??:0 16.67 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046dd40 : 41.67 : 46dd40: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 8.33 : 46dd45: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 46dd4a: 48 89 fb mov %rdi,%rbx 0.00 : 46dd4d: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 46dd52: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 46dd57: 89 f5 mov %esi,%ebp 0.00 : 46dd59: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 46dd5e: 48 83 ec 38 sub $0x38,%rsp 0.00 : 46dd62: 40 80 fe 2f cmp $0x2f,%sil 0.00 : 46dd66: 76 0b jbe 46dd73 0.00 : 46dd68: e8 f3 86 fa ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 46dd6d: 48 83 f8 01 cmp $0x1,%rax 0.00 : 46dd71: 77 35 ja 46dda8 0.00 : 46dd73: 48 89 df mov %rbx,%rdi 0.00 : 46dd76: 89 ee mov %ebp,%esi 0.00 : 46dd78: e8 03 8a fa ff callq 416780 0.00 : 46dd7d: 48 89 c3 mov %rax,%rbx 0.00 : 46dd80: 48 89 d8 mov %rbx,%rax 0.00 : 46dd83: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp 8.33 : 46dd88: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 46dd8d: 4c 8b 64 24 20 mov 0x20(%rsp),%r12 0.00 : 46dd92: 4c 8b 6c 24 28 mov 0x28(%rsp),%r13 0.00 : 46dd97: 4c 8b 74 24 30 mov 0x30(%rsp),%r14 0.00 : 46dd9c: 48 83 c4 38 add $0x38,%rsp 0.00 : 46dda0: c3 retq 0.00 : 46dda1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 46dda8: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 46ddaf: 00 0.00 : 46ddb0: 48 89 df mov %rbx,%rdi 0.00 : 46ddb3: e8 38 86 fa ff callq 4163f0 0.00 : 46ddb8: 48 85 c0 test %rax,%rax 0.00 : 46ddbb: 49 89 c4 mov %rax,%r12 0.00 : 46ddbe: 74 3e je 46ddfe 16.67 : 46ddc0: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 46ddc6: eb 0b jmp 46ddd3 0.00 : 46ddc8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46ddcf: 00 0.00 : 46ddd0: 48 01 d3 add %rdx,%rbx 0.00 : 46ddd3: 4c 89 e2 mov %r12,%rdx 0.00 : 46ddd6: 31 ff xor %edi,%edi 16.67 : 46ddd8: 48 89 e1 mov %rsp,%rcx 0.00 : 46dddb: 48 89 de mov %rbx,%rsi 0.00 : 46ddde: e8 6d 80 fa ff callq 415e50 0.00 : 46dde3: 48 89 c2 mov %rax,%rdx 0.00 : 46dde6: 48 8d 40 ff lea -0x1(%rax),%rax 8.33 : 46ddea: 48 83 f8 fd cmp $0xfffffffffffffffd,%rax 0.00 : 46ddee: 0f b6 03 movzbl (%rbx),%eax 0.00 : 46ddf1: 49 0f 43 d5 cmovae %r13,%rdx 0.00 : 46ddf5: 39 e8 cmp %ebp,%eax 0.00 : 46ddf7: 74 87 je 46dd80 0.00 : 46ddf9: 49 29 d4 sub %rdx,%r12 0.00 : 46ddfc: 75 d2 jne 46ddd0 0.00 : 46ddfe: 31 db xor %ebx,%ebx 0.00 : 46de00: e9 7b ff ff ff jmpq 46dd80 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 23.53 ??:0 23.53 ??:0 11.76 ??:0 5.88 ??:0 5.88 ??:0 5.88 ??:0 5.88 ??:0 5.88 ??:0 5.88 ??:0 5.88 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000029f60 <_nl_intern_locale_data>: 0.00 : 29f60: 41 55 push %r13 0.00 : 29f62: 41 54 push %r12 0.00 : 29f64: 49 89 f4 mov %rsi,%r12 0.00 : 29f67: 55 push %rbp 0.00 : 29f68: 48 89 d5 mov %rdx,%rbp 0.00 : 29f6b: 53 push %rbx 0.00 : 29f6c: 89 fb mov %edi,%ebx 0.00 : 29f6e: 48 83 ec 08 sub $0x8,%rsp 0.00 : 29f72: 48 83 fa 07 cmp $0x7,%rdx 0.00 : 29f76: 0f 86 ff 00 00 00 jbe 2a07b <_nl_intern_locale_data+0x11b> 0.00 : 29f7c: 83 ff 03 cmp $0x3,%edi 23.53 : 29f7f: 8b 0e mov (%rsi),%ecx 11.76 : 29f81: ba 17 10 05 20 mov $0x20051017,%edx 0.00 : 29f86: 74 11 je 29f99 <_nl_intern_locale_data+0x39> 0.00 : 29f88: 89 f8 mov %edi,%eax 0.00 : 29f8a: ba 20 07 09 20 mov $0x20090720,%edx 0.00 : 29f8f: 35 15 11 03 20 xor $0x20031115,%eax 0.00 : 29f94: 85 ff test %edi,%edi 0.00 : 29f96: 0f 45 d0 cmovne %eax,%edx 0.00 : 29f99: 39 d1 cmp %edx,%ecx 0.00 : 29f9b: 0f 85 da 00 00 00 jne 2a07b <_nl_intern_locale_data+0x11b> 0.00 : 29fa1: 48 8d 05 98 cb 0f 00 lea 0xfcb98(%rip),%rax # 126b40 <_nl_category_num_items> 0.00 : 29fa8: 41 8b 54 24 04 mov 0x4(%r12),%edx 5.88 : 29fad: 4c 63 eb movslq %ebx,%r13 0.00 : 29fb0: 4a 3b 14 e8 cmp (%rax,%r13,8),%rdx 0.00 : 29fb4: 0f 82 c1 00 00 00 jb 2a07b <_nl_intern_locale_data+0x11b> 0.00 : 29fba: 48 8d 04 95 08 00 00 lea 0x8(,%rdx,4),%rax 0.00 : 29fc1: 00 0.00 : 29fc2: 48 39 c5 cmp %rax,%rbp 0.00 : 29fc5: 0f 86 b0 00 00 00 jbe 2a07b <_nl_intern_locale_data+0x11b> 0.00 : 29fcb: 48 8d 3c d5 40 00 00 lea 0x40(,%rdx,8),%rdi 0.00 : 29fd2: 00 0.00 : 29fd3: e8 78 48 ff ff callq 1e850 0.00 : 29fd8: 48 85 c0 test %rax,%rax 0.00 : 29fdb: 48 89 c1 mov %rax,%rcx 0.00 : 29fde: 49 89 c1 mov %rax,%r9 0.00 : 29fe1: 0f 84 ae 00 00 00 je 2a095 <_nl_intern_locale_data+0x135> 0.00 : 29fe7: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 29feb: 48 89 68 10 mov %rbp,0x10(%rax) 0.00 : 29fef: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 29ff6: 00 0.00 : 29ff7: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 29ffe: 00 0.00 : 29fff: c7 40 30 00 00 00 00 movl $0x0,0x30(%rax) 0.00 : 2a006: c7 40 34 00 00 00 00 movl $0x0,0x34(%rax) 0.00 : 2a00d: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 2a012: 85 c0 test %eax,%eax 0.00 : 2a014: 89 41 38 mov %eax,0x38(%rcx) 0.00 : 2a017: 74 7c je 2a095 <_nl_intern_locale_data+0x135> 0.00 : 2a019: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 2a01e: 31 d2 xor %edx,%edx 0.00 : 2a020: 4c 8d 15 99 48 34 00 lea 0x344899(%rip),%r10 # 36e8c0 <_nl_value_types> 0.00 : 2a027: 48 39 71 10 cmp %rsi,0x10(%rcx) 0.00 : 2a02b: 89 df mov %ebx,%edi 0.00 : 2a02d: 4c 8d 05 cc ca 0f 00 lea 0xfcacc(%rip),%r8 # 126b00 0.00 : 2a034: 72 3d jb 2a073 <_nl_intern_locale_data+0x113> 0.00 : 2a036: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 2a03d: 00 00 00 5.88 : 2a040: 83 fb 0c cmp $0xc,%ebx 0.00 : 2a043: 76 63 jbe 2a0a8 <_nl_intern_locale_data+0x148> 0.00 : 2a045: 85 db test %ebx,%ebx 0.00 : 2a047: 0f 85 64 02 00 00 jne 2a2b1 <_nl_intern_locale_data+0x351> 0.00 : 2a04d: 48 83 fa 46 cmp $0x46,%rdx 0.00 : 2a051: 76 75 jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a053: 48 03 71 08 add 0x8(%rcx),%rsi 0.00 : 2a057: 48 89 74 d1 40 mov %rsi,0x40(%rcx,%rdx,8) 5.88 : 2a05c: 8b 41 38 mov 0x38(%rcx),%eax 5.88 : 2a05f: 48 83 c2 01 add $0x1,%rdx 0.00 : 2a063: 48 39 d0 cmp %rdx,%rax 0.00 : 2a066: 76 2d jbe 2a095 <_nl_intern_locale_data+0x135> 0.00 : 2a068: 41 8b 74 94 08 mov 0x8(%r12,%rdx,4),%esi 0.00 : 2a06d: 48 3b 71 10 cmp 0x10(%rcx),%rsi 0.00 : 2a071: 76 cd jbe 2a040 <_nl_intern_locale_data+0xe0> 0.00 : 2a073: 48 89 cf mov %rcx,%rdi 0.00 : 2a076: e8 25 48 ff ff callq 1e8a0 0.00 : 2a07b: 48 8b 15 b6 7d 34 00 mov 0x347db6(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 2a082: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 2a089: 00 00 0.00 : 2a08b: 45 31 c9 xor %r9d,%r9d 0.00 : 2a08e: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 5.88 : 2a095: 48 83 c4 08 add $0x8,%rsp 0.00 : 2a099: 4c 89 c8 mov %r9,%rax 0.00 : 2a09c: 5b pop %rbx 0.00 : 2a09d: 5d pop %rbp 0.00 : 2a09e: 41 5c pop %r12 5.88 : 2a0a0: 41 5d pop %r13 0.00 : 2a0a2: c3 retq 0.00 : 2a0a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2a0a8: 49 63 04 b8 movslq (%r8,%rdi,4),%rax 0.00 : 2a0ac: 4c 01 c0 add %r8,%rax 0.00 : 2a0af: ff e0 jmpq *%rax 0.00 : 2a0b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a0b8: 48 83 fa 0f cmp $0xf,%rdx 0.00 : 2a0bc: 0f 87 0e 02 00 00 ja 2a2d0 <_nl_intern_locale_data+0x370> 0.00 : 2a0c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2a0c8: 4b 8b 04 ea mov (%r10,%r13,8),%rax 0.00 : 2a0cc: 83 3c 90 05 cmpl $0x5,(%rax,%rdx,4) 0.00 : 2a0d0: 75 81 jne 2a053 <_nl_intern_locale_data+0xf3> 0.00 : 2a0d2: 40 f6 c6 03 test $0x3,%sil 0.00 : 2a0d6: 75 9b jne 2a073 <_nl_intern_locale_data+0x113> 0.00 : 2a0d8: 48 8b 41 08 mov 0x8(%rcx),%rax 23.53 : 2a0dc: 8b 04 30 mov (%rax,%rsi,1),%eax 5.88 : 2a0df: 89 44 d1 40 mov %eax,0x40(%rcx,%rdx,8) 0.00 : 2a0e3: e9 74 ff ff ff jmpq 2a05c <_nl_intern_locale_data+0xfc> 0.00 : 2a0e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2a0ef: 00 0.00 : 2a0f0: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 2a0f4: 76 d2 jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a0f6: 48 8d 0d f3 86 11 00 lea 0x1186f3(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a0fd: 48 8d 35 ce 07 11 00 lea 0x1107ce(%rip),%rsi # 13a8d2 0.00 : 2a104: 48 8d 3d 3d 3e 11 00 lea 0x113e3d(%rip),%rdi # 13df48 <__PRETTY_FUNCTION__.11129+0x56f> 0.00 : 2a10b: ba 8a 00 00 00 mov $0x8a,%edx 0.00 : 2a110: e8 0b 18 00 00 callq 2b920 <__assert_fail> 0.00 : 2a115: 0f 1f 00 nopl (%rax) 0.00 : 2a118: 48 83 fa 04 cmp $0x4,%rdx 0.00 : 2a11c: 76 aa jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a11e: 48 8d 0d cb 86 11 00 lea 0x1186cb(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a125: 48 8d 35 a6 07 11 00 lea 0x1107a6(%rip),%rsi # 13a8d2 0.00 : 2a12c: 48 8d 3d bd 3d 11 00 lea 0x113dbd(%rip),%rdi # 13def0 <__PRETTY_FUNCTION__.11129+0x517> 0.00 : 2a133: ba 89 00 00 00 mov $0x89,%edx 0.00 : 2a138: e8 e3 17 00 00 callq 2b920 <__assert_fail> 0.00 : 2a13d: 0f 1f 00 nopl (%rax) 0.00 : 2a140: 48 83 fa 0c cmp $0xc,%rdx 0.00 : 2a144: 76 82 jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a146: 48 8d 0d a3 86 11 00 lea 0x1186a3(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a14d: 48 8d 35 7e 07 11 00 lea 0x11077e(%rip),%rsi # 13a8d2 0.00 : 2a154: 48 8d 3d 3d 3d 11 00 lea 0x113d3d(%rip),%rdi # 13de98 <__PRETTY_FUNCTION__.11129+0x4bf> 0.00 : 2a15b: ba 88 00 00 00 mov $0x88,%edx 0.00 : 2a160: e8 bb 17 00 00 callq 2b920 <__assert_fail> 0.00 : 2a165: 0f 1f 00 nopl (%rax) 0.00 : 2a168: 48 83 fa 06 cmp $0x6,%rdx 0.00 : 2a16c: 0f 86 56 ff ff ff jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a172: 48 8d 0d 77 86 11 00 lea 0x118677(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a179: 48 8d 35 52 07 11 00 lea 0x110752(%rip),%rsi # 13a8d2 0.00 : 2a180: 48 8d 3d c1 3c 11 00 lea 0x113cc1(%rip),%rdi # 13de48 <__PRETTY_FUNCTION__.11129+0x46f> 0.00 : 2a187: ba 87 00 00 00 mov $0x87,%edx 0.00 : 2a18c: e8 8f 17 00 00 callq 2b920 <__assert_fail> 0.00 : 2a191: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a198: 48 83 fa 02 cmp $0x2,%rdx 0.00 : 2a19c: 0f 86 26 ff ff ff jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a1a2: 48 8d 0d 47 86 11 00 lea 0x118647(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a1a9: 48 8d 35 22 07 11 00 lea 0x110722(%rip),%rsi # 13a8d2 0.00 : 2a1b0: 48 8d 3d 41 3c 11 00 lea 0x113c41(%rip),%rdi # 13ddf8 <__PRETTY_FUNCTION__.11129+0x41f> 0.00 : 2a1b7: ba 86 00 00 00 mov $0x86,%edx 0.00 : 2a1bc: e8 5f 17 00 00 callq 2b920 <__assert_fail> 0.00 : 2a1c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a1c8: 48 83 fa 04 cmp $0x4,%rdx 0.00 : 2a1cc: 0f 86 f6 fe ff ff jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a1d2: 48 8d 0d 17 86 11 00 lea 0x118617(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a1d9: 48 8d 35 f2 06 11 00 lea 0x1106f2(%rip),%rsi # 13a8d2 0.00 : 2a1e0: 48 8d 3d b9 3b 11 00 lea 0x113bb9(%rip),%rdi # 13dda0 <__PRETTY_FUNCTION__.11129+0x3c7> 0.00 : 2a1e7: ba 85 00 00 00 mov $0x85,%edx 0.00 : 2a1ec: e8 2f 17 00 00 callq 2b920 <__assert_fail> 0.00 : 2a1f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a1f8: 48 83 fa 2d cmp $0x2d,%rdx 0.00 : 2a1fc: 0f 86 c6 fe ff ff jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a202: 48 8d 0d e7 85 11 00 lea 0x1185e7(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a209: 48 8d 35 c2 06 11 00 lea 0x1106c2(%rip),%rsi # 13a8d2 0.00 : 2a210: 48 8d 3d 31 3b 11 00 lea 0x113b31(%rip),%rdi # 13dd48 <__PRETTY_FUNCTION__.11129+0x36f> 0.00 : 2a217: ba 84 00 00 00 mov $0x84,%edx 0.00 : 2a21c: e8 ff 16 00 00 callq 2b920 <__assert_fail> 0.00 : 2a221: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a228: 48 83 fa 12 cmp $0x12,%rdx 0.00 : 2a22c: 0f 86 96 fe ff ff jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a232: 48 8d 0d b7 85 11 00 lea 0x1185b7(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a239: 48 8d 35 92 06 11 00 lea 0x110692(%rip),%rsi # 13a8d2 0.00 : 2a240: 48 8d 3d a9 3a 11 00 lea 0x113aa9(%rip),%rdi # 13dcf0 <__PRETTY_FUNCTION__.11129+0x317> 0.00 : 2a247: ba 83 00 00 00 mov $0x83,%edx 0.00 : 2a24c: e8 cf 16 00 00 callq 2b920 <__assert_fail> 0.00 : 2a251: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a258: 48 83 fa 6e cmp $0x6e,%rdx 0.00 : 2a25c: 0f 86 66 fe ff ff jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a262: 48 8d 0d 87 85 11 00 lea 0x118587(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a269: 48 8d 35 62 06 11 00 lea 0x110662(%rip),%rsi # 13a8d2 0.00 : 2a270: 48 8d 3d 29 3a 11 00 lea 0x113a29(%rip),%rdi # 13dca0 <__PRETTY_FUNCTION__.11129+0x2c7> 0.00 : 2a277: ba 82 00 00 00 mov $0x82,%edx 0.00 : 2a27c: e8 9f 16 00 00 callq 2b920 <__assert_fail> 0.00 : 2a281: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a288: 48 83 fa 05 cmp $0x5,%rdx 0.00 : 2a28c: 0f 86 36 fe ff ff jbe 2a0c8 <_nl_intern_locale_data+0x168> 0.00 : 2a292: 48 8d 0d 57 85 11 00 lea 0x118557(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a299: 48 8d 35 32 06 11 00 lea 0x110632(%rip),%rsi # 13a8d2 0.00 : 2a2a0: 48 8d 3d a1 39 11 00 lea 0x1139a1(%rip),%rdi # 13dc48 <__PRETTY_FUNCTION__.11129+0x26f> 0.00 : 2a2a7: ba 81 00 00 00 mov $0x81,%edx 0.00 : 2a2ac: e8 6f 16 00 00 callq 2b920 <__assert_fail> 0.00 : 2a2b1: 48 8d 0d 38 85 11 00 lea 0x118538(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a2b8: 48 8d 35 13 06 11 00 lea 0x110613(%rip),%rsi # 13a8d2 0.00 : 2a2bf: 48 8d 3d 19 06 11 00 lea 0x110619(%rip),%rdi # 13a8df 0.00 : 2a2c6: ba 8d 00 00 00 mov $0x8d,%edx 0.00 : 2a2cb: e8 50 16 00 00 callq 2b920 <__assert_fail> 0.00 : 2a2d0: 48 8d 0d 19 85 11 00 lea 0x118519(%rip),%rcx # 1427f0 <__PRETTY_FUNCTION__.10637> 0.00 : 2a2d7: 48 8d 35 f4 05 11 00 lea 0x1105f4(%rip),%rsi # 13a8d2 0.00 : 2a2de: 48 8d 3d c3 3c 11 00 lea 0x113cc3(%rip),%rdi # 13dfa8 <__PRETTY_FUNCTION__.11129+0x5cf> 0.00 : 2a2e5: ba 8b 00 00 00 mov $0x8b,%edx 0.00 : 2a2ea: e8 31 16 00 00 callq 2b920 <__assert_fail> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ---------------------------------------------- 58.82 ??:0 11.76 ??:0 11.76 ??:0 5.88 ??:0 5.88 ??:0 5.88 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000007f0 : 94.12 : 7f0: 48 83 ec 48 sub $0x48,%rsp 0.00 : 824: 83 fe sbb %eax,%eax 0.00 : 826: 02 0f 97 c0 and $0xfffffffffffffff0,%rax 0.00 : 82a: 83 fa 04 48 add $0x20,%rax 0.00 : 82e: 89 6c 24 mov %rax,%rdx 0.00 : 831: 38 4c 89 64 xor $0x30,%rdx 0.00 : 835: 24 40 49 cmp $0x1,%esi 0.00 : 838: 89 cc 0f 95 cmove %rdx,%rax 0.00 : 83c: c1 31 ed 83 test %rax,0x78(%rdi) 5.88 : 840: fa 01 0f b6 f0 mov $0x1,%edx 0.00 : 845: 40 0f jne 860 0.00 : 847: 95 c5 mov %edx,%eax 0.00 : 849: 48 89 5c 24 30 mov 0x30(%rsp),%rbx 0.00 : 84e: 21 cd 83 fd 01 mov 0x38(%rsp),%rbp 0.00 : 853: 48 19 c0 48 83 mov 0x40(%rsp),%r12 0.00 : 858: e0 f0 48 83 add $0x48,%rsp 0.00 : 85c: c0 retq 0.00 : 85d: 20 48 89 nopl (%rax) 0.00 : 860: c2 48 83 cmp $0x1,%esi 0.00 : 863: f2 30 83 sbb %rax,%rax 0.00 : 866: fe 01 48 and $0x38,%eax 0.00 : 869: 0f 44 c2 48 85 lea 0x18(%rdi,%rax,1),%rsi 0.00 : 86e: 47 78 ba mov %rsp,%rdi 0.00 : 871: 01 00 00 00 75 callq 876 0.00 : 876: 19 89 d0 48 8b movzbl 0x26(%rsp),%edi 0.00 : 87b: 5c 24 xor %edx,%edx 0.00 : 87d: 30 48 8b mov %ebp,%r8d 0.00 : 880: 6c 24 38 mov %rsp,%rcx 0.00 : 883: 4c 8b 64 mov %r12,%rsi 0.00 : 886: 24 40 48 83 c4 callq 3f0 0.00 : 88b: 48 c3 xor %edx,%edx 0.00 : 88d: 0f 1f test %al,%al 0.00 : 88f: 00 83 fe setne %dl 0.00 : 892: 01 48 jmp 847 : 894: 19 c0 83 e0 38 48 8d data32 data32 nopw %cs:0x0(%rax,%rax,1) : 89b: 74 07 18 48 89 : 8a0: e7 e8 00 00 sub $0x8,%rsp : 8a4: 00 00 0f testb $0x1,(%rsi) : 8a7: b6 7c jne 8d0 : 8a9: 24 26 31 d2 movzbl 0x26(%rdi),%eax : 8ad: 41 89 e8 testb $0x2,(%rsi) : 8b0: 48 89 e1 4c 89 e6 e8 mov 0x0(,%rax,8),%rax : 8b7: 65 : 8b8: fb ff jne 8f0 : 8ba: ff 31 d2 84 c0 mov $0x1,%edx : 8bf: 0f 95 mov %edx,%eax : 8c1: c2 eb b3 66 add $0x8,%rsp Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 44.44 ??:0 44.44 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000680 : 100.00 : 680: 83 7e 68 13 cmpl $0x13,0x68(%rsi) 0.00 : 6b4: 41 89 add $0x0,%al 0.00 : 6b6: f8 76 1c 8b add %al,-0x3e(%rcx,%rcx,4) 0.00 : 6ba: 96 c4 00 mov %rsi,%rcx 0.00 : 6bd: 00 00 48 8b 86 mov $0x2,%esi 0.00 : 6c2: d8 00 00 00 0f jmpq 6c7 : 6c7: b6 04 10 83 e0 0f c1 nopw 0x0(%rax,%rax,1) : 6ce: e0 02 : 6d0: 83 f8 mov %edi,%eax : 6d2: 13 77 0b b8 01 00 00 mov 0x460(%rdx),%rdi : 6d9: 00 c3 0f mov %rsi,%rcx : 6dc: 1f 44 mov %eax,%edx : 6de: 00 00 48 8b b9 mov $0x2,%esi : 6e3: 60 04 00 00 44 jmpq 6e8 : 6e8: 89 c2 48 89 f1 be 02 nopl 0x0(%rax,%rax,1) : 6ef: 00 : 6f0: 00 00 e9 00 movzbl 0x24(%rsi),%eax : ... Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469920 <__isnan@plt>: 100.00 : 469920: ff 25 d2 d9 6f 00 jmpq *0x6fd9d2(%rip) # b672f8 <_GLOBAL_OFFSET_TABLE_+0x2f8> 0.00 : 469926: 68 5c 00 00 00 pushq $0x5c 0.00 : 46992b: e9 20 fa ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469af0 <__isinf@plt>: 100.00 : 469af0: ff 25 ea d8 6f 00 jmpq *0x6fd8ea(%rip) # b673e0 <_GLOBAL_OFFSET_TABLE_+0x3e0> 0.00 : 469af6: 68 79 00 00 00 pushq $0x79 0.00 : 469afb: e9 50 f8 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 54.55 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:88 18.18 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:70 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:70 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:79 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:79 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046cf10 : : * read stuff from it. This must be freed by brinRevmapAccessTerminate when caller : * is done with it. : */ : brinRmAccess * : brinRevmapAccessInit(Relation idxrel, BlockNumber *pagesPerRange) : { /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:70 18.18 : 46cf10: 55 push %rbp 0.00 : 46cf11: 48 89 e5 mov %rsp,%rbp 0.00 : 46cf14: 4c 89 6d e8 mov %r13,-0x18(%rbp) 9.09 : 46cf18: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 46cf1c: 49 89 fe mov %rdi,%r14 0.00 : 46cf1f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 46cf23: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 46cf27: 49 89 f7 mov %rsi,%r15 0.00 : 46cf2a: 4c 89 65 e0 mov %r12,-0x20(%rbp) : brinRmAccess *rmAccess; : Buffer meta; : BrinMetaPageData *metadata; : : meta = ReadBuffer(idxrel, BRIN_METAPAGE_BLKNO); 0.00 : 46cf2e: 31 f6 xor %esi,%esi : * read stuff from it. This must be freed by brinRevmapAccessTerminate when caller : * is done with it. : */ : brinRmAccess * : brinRevmapAccessInit(Relation idxrel, BlockNumber *pagesPerRange) : { 0.00 : 46cf30: 48 83 ec 30 sub $0x30,%rsp : brinRmAccess *rmAccess; : Buffer meta; : BrinMetaPageData *metadata; : : meta = ReadBuffer(idxrel, BRIN_METAPAGE_BLKNO); 0.00 : 46cf34: e8 67 97 20 00 callq 6766a0 : LockBuffer(meta, BUFFER_LOCK_SHARE); 0.00 : 46cf39: be 01 00 00 00 mov $0x1,%esi : { : brinRmAccess *rmAccess; : Buffer meta; : BrinMetaPageData *metadata; : : meta = ReadBuffer(idxrel, BRIN_METAPAGE_BLKNO); 0.00 : 46cf3e: 41 89 c5 mov %eax,%r13d : LockBuffer(meta, BUFFER_LOCK_SHARE); 0.00 : 46cf41: 89 c7 mov %eax,%edi 0.00 : 46cf43: e8 c8 77 20 00 callq 674710 : metadata = (BrinMetaPageData *) PageGetContents(BufferGetPage(meta)); 0.00 : 46cf48: 45 85 ed test %r13d,%r13d 0.00 : 46cf4b: 78 73 js 46cfc0 0.00 : 46cf4d: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 46cf51: 48 98 cltq 0.00 : 46cf53: 48 c1 e0 0d shl $0xd,%rax 0.00 : 46cf57: 4c 8d 60 18 lea 0x18(%rax),%r12 0.00 : 46cf5b: 4c 03 25 96 2b 75 00 add 0x752b96(%rip),%r12 # bbfaf8 : : rmAccess = palloc(sizeof(brinRmAccess)); 0.00 : 46cf62: bf 18 00 00 00 mov $0x18,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:79 9.09 : 46cf67: e8 e4 bd 32 00 callq 798d50 : rmAccess->idxrel = idxrel; 0.00 : 46cf6c: 4c 89 30 mov %r14,(%rax) : : meta = ReadBuffer(idxrel, BRIN_METAPAGE_BLKNO); : LockBuffer(meta, BUFFER_LOCK_SHARE); : metadata = (BrinMetaPageData *) PageGetContents(BufferGetPage(meta)); : : rmAccess = palloc(sizeof(brinRmAccess)); 9.09 : 46cf6f: 48 89 c3 mov %rax,%rbx : rmAccess->idxrel = idxrel; : rmAccess->pagesPerRange = metadata->pagesPerRange; 0.00 : 46cf72: 41 8b 44 24 08 mov 0x8(%r12),%eax : rmAccess->metaBuf = meta; : rmAccess->currBuf = InvalidBuffer; : : *pagesPerRange = metadata->pagesPerRange; : : LockBuffer(meta, BUFFER_LOCK_UNLOCK); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:88 54.55 : 46cf77: 44 89 ef mov %r13d,%edi 0.00 : 46cf7a: 31 f6 xor %esi,%esi : LockBuffer(meta, BUFFER_LOCK_SHARE); : metadata = (BrinMetaPageData *) PageGetContents(BufferGetPage(meta)); : : rmAccess = palloc(sizeof(brinRmAccess)); : rmAccess->idxrel = idxrel; : rmAccess->pagesPerRange = metadata->pagesPerRange; 0.00 : 46cf7c: 89 43 08 mov %eax,0x8(%rbx) : rmAccess->lastRevmapPage = metadata->lastRevmapPage; 0.00 : 46cf7f: 41 8b 44 24 0c mov 0xc(%r12),%eax : rmAccess->metaBuf = meta; 0.00 : 46cf84: 44 89 6b 10 mov %r13d,0x10(%rbx) : rmAccess->currBuf = InvalidBuffer; 0.00 : 46cf88: c7 43 14 00 00 00 00 movl $0x0,0x14(%rbx) : metadata = (BrinMetaPageData *) PageGetContents(BufferGetPage(meta)); : : rmAccess = palloc(sizeof(brinRmAccess)); : rmAccess->idxrel = idxrel; : rmAccess->pagesPerRange = metadata->pagesPerRange; : rmAccess->lastRevmapPage = metadata->lastRevmapPage; 0.00 : 46cf8f: 89 43 0c mov %eax,0xc(%rbx) : rmAccess->metaBuf = meta; : rmAccess->currBuf = InvalidBuffer; : : *pagesPerRange = metadata->pagesPerRange; 0.00 : 46cf92: 41 8b 44 24 08 mov 0x8(%r12),%eax 0.00 : 46cf97: 41 89 07 mov %eax,(%r15) : : LockBuffer(meta, BUFFER_LOCK_UNLOCK); 0.00 : 46cf9a: e8 71 77 20 00 callq 674710 : : return rmAccess; : } 0.00 : 46cf9f: 48 89 d8 mov %rbx,%rax 0.00 : 46cfa2: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 46cfa6: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 46cfaa: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 46cfae: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 46cfb2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 46cfb6: c9 leaveq 0.00 : 46cfb7: c3 retq 0.00 : 46cfb8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46cfbf: 00 : Buffer meta; : BrinMetaPageData *metadata; : : meta = ReadBuffer(idxrel, BRIN_METAPAGE_BLKNO); : LockBuffer(meta, BUFFER_LOCK_SHARE); : metadata = (BrinMetaPageData *) PageGetContents(BufferGetPage(meta)); 0.00 : 46cfc0: 44 89 e8 mov %r13d,%eax 0.00 : 46cfc3: 48 8b 15 4e 01 71 00 mov 0x71014e(%rip),%rdx # b7d118 0.00 : 46cfca: f7 d0 not %eax 0.00 : 46cfcc: 48 98 cltq 0.00 : 46cfce: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 46cfd2: 4c 8d 60 18 lea 0x18(%rax),%r12 0.00 : 46cfd6: eb 8a jmp 46cf62 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:727 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:727 29.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:728 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:729 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a8fd0 <_bt_relbuf>: : * : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:727 33.33 : 4a8fd0: 55 push %rbp 33.33 : 4a8fd1: 89 f7 mov %esi,%edi 0.00 : 4a8fd3: 48 89 e5 mov %rsp,%rbp : UnlockReleaseBuffer(buf); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:729 4.17 : 4a8fd6: c9 leaveq : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:728 29.17 : 4a8fd7: e9 54 bf 1c 00 jmpq 674f30 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1050 15.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1096 15.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1122 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1020 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1044 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1054 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1063 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1080 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1096 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1142 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b5af0 : : */ : List * : ExecInsertIndexTuples(TupleTableSlot *slot, : ItemPointer tupleid, : EState *estate) : { 0.00 : 5b5af0: 55 push %rbp 0.00 : 5b5af1: 48 89 e5 mov %rsp,%rbp 0.00 : 5b5af4: 41 57 push %r15 0.00 : 5b5af6: 41 56 push %r14 0.00 : 5b5af8: 41 55 push %r13 0.00 : 5b5afa: 41 54 push %r12 0.00 : 5b5afc: 53 push %rbx 0.00 : 5b5afd: 48 81 ec 88 01 00 00 sub $0x188,%rsp 0.00 : 5b5b04: 48 89 95 70 fe ff ff mov %rdx,-0x190(%rbp) 0.00 : 5b5b0b: 48 89 bd 80 fe ff ff mov %rdi,-0x180(%rbp) 0.00 : 5b5b12: 48 89 b5 78 fe ff ff mov %rsi,-0x188(%rbp) : bool isnull[INDEX_MAX_KEYS]; : : /* : * Get information from the result relation info structure. : */ : resultRelInfo = estate->es_result_relation_info; 0.00 : 5b5b19: 48 8b 42 48 mov 0x48(%rdx),%rax : numIndices = resultRelInfo->ri_NumIndices; 0.00 : 5b5b1d: 8b 50 10 mov 0x10(%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1020 7.69 : 5b5b20: 89 95 94 fe ff ff mov %edx,-0x16c(%rbp) : relationDescs = resultRelInfo->ri_IndexRelationDescs; 0.00 : 5b5b26: 48 8b 50 18 mov 0x18(%rax),%rdx 0.00 : 5b5b2a: 48 89 95 98 fe ff ff mov %rdx,-0x168(%rbp) : indexInfoArray = resultRelInfo->ri_IndexRelationInfo; 0.00 : 5b5b31: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 5b5b35: 48 89 95 a8 fe ff ff mov %rdx,-0x158(%rbp) : heapRelation = resultRelInfo->ri_RelationDesc; 0.00 : 5b5b3c: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5b5b40: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) : : /* : * We will use the EState's per-tuple context for evaluating predicates : * and index expressions (creating it if it's not already there). : */ : econtext = GetPerTupleExprContext(estate); 0.00 : 5b5b47: 48 8b 85 70 fe ff ff mov -0x190(%rbp),%rax 0.00 : 5b5b4e: 4c 8b b8 c8 00 00 00 mov 0xc8(%rax),%r15 0.00 : 5b5b55: 4d 85 ff test %r15,%r15 0.00 : 5b5b58: 0f 84 b5 01 00 00 je 5b5d13 : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 5b5b5e: 48 8b 95 80 fe ff ff mov -0x180(%rbp),%rdx : : /* : * for each index, form and insert the index tuple : */ : for (i = 0; i < numIndices; i++) 0.00 : 5b5b65: 45 31 e4 xor %r12d,%r12d : * and index expressions (creating it if it's not already there). : */ : econtext = GetPerTupleExprContext(estate); : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 5b5b68: 49 89 57 08 mov %rdx,0x8(%r15) : : /* : * for each index, form and insert the index tuple : */ : for (i = 0; i < numIndices; i++) 0.00 : 5b5b6c: 8b 85 94 fe ff ff mov -0x16c(%rbp),%eax 0.00 : 5b5b72: 48 c7 85 88 fe ff ff movq $0x0,-0x178(%rbp) 0.00 : 5b5b79: 00 00 00 00 0.00 : 5b5b7d: 85 c0 test %eax,%eax 0.00 : 5b5b7f: 0f 8e 34 01 00 00 jle 5b5cb9 0.00 : 5b5b85: 0f 1f 00 nopl (%rax) : { : Relation indexRelation = relationDescs[i]; 0.00 : 5b5b88: 48 8b 85 98 fe ff ff mov -0x168(%rbp),%rax 0.00 : 5b5b8f: 4e 8b 34 e0 mov (%rax,%r12,8),%r14 : IndexInfo *indexInfo; : IndexUniqueCheck checkUnique; : bool satisfiesConstraint; : : if (indexRelation == NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1044 7.69 : 5b5b93: 4d 85 f6 test %r14,%r14 0.00 : 5b5b96: 0f 84 0c 01 00 00 je 5b5ca8 : continue; : : indexInfo = indexInfoArray[i]; 0.00 : 5b5b9c: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 5b5ba3: 4a 8b 1c e2 mov (%rdx,%r12,8),%rbx : : /* If the index is marked as read-only, ignore it */ : if (!indexInfo->ii_ReadyForInserts) 0.00 : 5b5ba7: 80 bb 81 00 00 00 00 cmpb $0x0,0x81(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1050 15.38 : 5b5bae: 0f 84 f4 00 00 00 je 5b5ca8 : continue; : : /* Check for partial index */ : if (indexInfo->ii_Predicate != NIL) 0.00 : 5b5bb4: 48 8b 43 58 mov 0x58(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1054 7.69 : 5b5bb8: 48 85 c0 test %rax,%rax 0.00 : 5b5bbb: 74 1f je 5b5bdc : : /* : * If predicate state not set up yet, create it (in the estate's : * per-query context) : */ : predicate = indexInfo->ii_PredicateState; 0.00 : 5b5bbd: 48 8b 7b 60 mov 0x60(%rbx),%rdi : if (predicate == NIL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1063 7.69 : 5b5bc1: 48 85 ff test %rdi,%rdi 0.00 : 5b5bc4: 0f 84 2e 01 00 00 je 5b5cf8 : estate); : indexInfo->ii_PredicateState = predicate; : } : : /* Skip this index-update if the predicate isn't satisfied */ : if (!ExecQual(predicate, econtext, false)) 0.00 : 5b5bca: 31 d2 xor %edx,%edx 0.00 : 5b5bcc: 4c 89 fe mov %r15,%rsi 0.00 : 5b5bcf: e8 3c 73 ff ff callq 5acf10 0.00 : 5b5bd4: 84 c0 test %al,%al 0.00 : 5b5bd6: 0f 84 cc 00 00 00 je 5b5ca8 : : /* : * FormIndexDatum fills in its values and isnull parameters with the : * appropriate values for the column(s) of the index. : */ : FormIndexDatum(indexInfo, /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1080 7.69 : 5b5bdc: 48 8b 95 70 fe ff ff mov -0x190(%rbp),%rdx 0.00 : 5b5be3: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 5b5bea: 4c 8d 45 b0 lea -0x50(%rbp),%r8 0.00 : 5b5bee: 48 8d 8d b0 fe ff ff lea -0x150(%rbp),%rcx 0.00 : 5b5bf5: 48 89 df mov %rbx,%rdi : * : * For a deferrable unique index, we tell the index AM to just detect : * possible non-uniqueness, and we add the index OID to the result : * list if further checking is needed. : */ : if (!indexRelation->rd_index->indisunique) 0.00 : 5b5bf8: 45 31 ed xor %r13d,%r13d : : /* : * FormIndexDatum fills in its values and isnull parameters with the : * appropriate values for the column(s) of the index. : */ : FormIndexDatum(indexInfo, 0.00 : 5b5bfb: e8 80 36 f3 ff callq 4e9280 : * : * For a deferrable unique index, we tell the index AM to just detect : * possible non-uniqueness, and we add the index OID to the result : * list if further checking is needed. : */ : if (!indexRelation->rd_index->indisunique) 0.00 : 5b5c00: 49 8b 86 a0 00 00 00 mov 0xa0(%r14),%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1096 15.38 : 5b5c07: 80 78 0a 00 cmpb $0x0,0xa(%rax) 7.69 : 5b5c0b: 74 0e je 5b5c1b : checkUnique = UNIQUE_CHECK_NO; : else if (indexRelation->rd_index->indimmediate) 0.00 : 5b5c0d: 80 78 0d 01 cmpb $0x1,0xd(%rax) 0.00 : 5b5c11: 45 19 ed sbb %r13d,%r13d 0.00 : 5b5c14: 41 f7 d5 not %r13d 0.00 : 5b5c17: 41 83 c5 02 add $0x2,%r13d : checkUnique = UNIQUE_CHECK_YES; : else : checkUnique = UNIQUE_CHECK_PARTIAL; : : satisfiesConstraint = 0.00 : 5b5c1b: 4c 8b 85 a0 fe ff ff mov -0x160(%rbp),%r8 0.00 : 5b5c22: 48 8b 8d 78 fe ff ff mov -0x188(%rbp),%rcx 0.00 : 5b5c29: 48 8d 55 b0 lea -0x50(%rbp),%rdx 0.00 : 5b5c2d: 48 8d b5 b0 fe ff ff lea -0x150(%rbp),%rsi 0.00 : 5b5c34: 45 89 e9 mov %r13d,%r9d 0.00 : 5b5c37: 4c 89 f7 mov %r14,%rdi 0.00 : 5b5c3a: e8 01 fe ee ff callq 4a5a40 : * : * An index for an exclusion constraint can't also be UNIQUE (not an : * essential property, we just don't allow it in the grammar), so no : * need to preserve the prior state of satisfiesConstraint. : */ : if (indexInfo->ii_ExclusionOps != NULL) /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1122 15.38 : 5b5c3f: 48 83 7b 68 00 cmpq $0x0,0x68(%rbx) 0.00 : 5b5c44: 74 4c je 5b5c92 : { : bool errorOK = !indexRelation->rd_index->indimmediate; : : satisfiesConstraint = 0.00 : 5b5c46: 49 8b 86 a0 00 00 00 mov 0xa0(%r14),%rax 0.00 : 5b5c4d: 48 8b 8d 78 fe ff ff mov -0x188(%rbp),%rcx 0.00 : 5b5c54: 4c 8d 4d b0 lea -0x50(%rbp),%r9 0.00 : 5b5c58: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 5b5c5f: 4c 8d 85 b0 fe ff ff lea -0x150(%rbp),%r8 0.00 : 5b5c66: 48 89 da mov %rbx,%rdx 0.00 : 5b5c69: 4c 89 f6 mov %r14,%rsi 0.00 : 5b5c6c: 80 78 0d 00 cmpb $0x0,0xd(%rax) 0.00 : 5b5c70: c7 44 24 08 00 00 00 movl $0x0,0x8(%rsp) 0.00 : 5b5c77: 00 0.00 : 5b5c78: 0f 94 c0 sete %al 0.00 : 5b5c7b: 0f b6 c0 movzbl %al,%eax 0.00 : 5b5c7e: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 5b5c82: 48 8b 85 70 fe ff ff mov -0x190(%rbp),%rax 0.00 : 5b5c89: 48 89 04 24 mov %rax,(%rsp) 0.00 : 5b5c8d: e8 4e f9 ff ff callq 5b55e0 : indexRelation, indexInfo, : tupleid, values, isnull, : estate, false, errorOK); : } : : if ((checkUnique == UNIQUE_CHECK_PARTIAL || 0.00 : 5b5c92: 41 83 fd 02 cmp $0x2,%r13d 0.00 : 5b5c96: 74 07 je 5b5c9f 0.00 : 5b5c98: 48 83 7b 68 00 cmpq $0x0,0x68(%rbx) 0.00 : 5b5c9d: 74 09 je 5b5ca8 0.00 : 5b5c9f: 84 c0 test %al,%al 0.00 : 5b5ca1: 74 35 je 5b5cd8 0.00 : 5b5ca3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * The tuple potentially violates the uniqueness or exclusion : * constraint, so make a note of the index so that we can re-check : * it later. : */ : result = lappend_oid(result, RelationGetRelid(indexRelation)); /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1142 7.69 : 5b5ca8: 49 83 c4 01 add $0x1,%r12 : econtext->ecxt_scantuple = slot; : : /* : * for each index, form and insert the index tuple : */ : for (i = 0; i < numIndices; i++) 0.00 : 5b5cac: 44 39 a5 94 fe ff ff cmp %r12d,-0x16c(%rbp) 0.00 : 5b5cb3: 0f 8f cf fe ff ff jg 5b5b88 : result = lappend_oid(result, RelationGetRelid(indexRelation)); : } : } : : return result; : } 0.00 : 5b5cb9: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax 0.00 : 5b5cc0: 48 81 c4 88 01 00 00 add $0x188,%rsp 0.00 : 5b5cc7: 5b pop %rbx 0.00 : 5b5cc8: 41 5c pop %r12 0.00 : 5b5cca: 41 5d pop %r13 0.00 : 5b5ccc: 41 5e pop %r14 0.00 : 5b5cce: 41 5f pop %r15 0.00 : 5b5cd0: c9 leaveq 0.00 : 5b5cd1: c3 retq 0.00 : 5b5cd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * The tuple potentially violates the uniqueness or exclusion : * constraint, so make a note of the index so that we can re-check : * it later. : */ : result = lappend_oid(result, RelationGetRelid(indexRelation)); 0.00 : 5b5cd8: 41 8b 76 40 mov 0x40(%r14),%esi 0.00 : 5b5cdc: 48 8b bd 88 fe ff ff mov -0x178(%rbp),%rdi 0.00 : 5b5ce3: e8 18 bd 02 00 callq 5e1a00 0.00 : 5b5ce8: 48 89 85 88 fe ff ff mov %rax,-0x178(%rbp) 0.00 : 5b5cef: eb b7 jmp 5b5ca8 0.00 : 5b5cf1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * per-query context) : */ : predicate = indexInfo->ii_PredicateState; : if (predicate == NIL) : { : predicate = (List *) 0.00 : 5b5cf8: 48 8b b5 70 fe ff ff mov -0x190(%rbp),%rsi 0.00 : 5b5cff: 48 89 c7 mov %rax,%rdi 0.00 : 5b5d02: e8 49 92 ff ff callq 5aef50 0.00 : 5b5d07: 48 89 c7 mov %rax,%rdi : ExecPrepareExpr((Expr *) indexInfo->ii_Predicate, : estate); : indexInfo->ii_PredicateState = predicate; 0.00 : 5b5d0a: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 5b5d0e: e9 b7 fe ff ff jmpq 5b5bca : : /* : * We will use the EState's per-tuple context for evaluating predicates : * and index expressions (creating it if it's not already there). : */ : econtext = GetPerTupleExprContext(estate); 0.00 : 5b5d13: 48 89 c7 mov %rax,%rdi 0.00 : 5b5d16: e8 95 f8 ff ff callq 5b55b0 0.00 : 5b5d1b: 49 89 c7 mov %rax,%r15 0.00 : 5b5d1e: e9 3b fe ff ff jmpq 5b5b5e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 52.63 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:422 36.84 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:374 10.53 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:423 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000638120 : : * : * Lock a semaphore (decrement count), blocking if count would be < 0 : */ : void : PGSemaphoreLock(PGSemaphore sema, bool interruptOK) : { 0.00 : 638120: 55 push %rbp 0.00 : 638121: 48 89 e5 mov %rsp,%rbp 0.00 : 638124: 41 55 push %r13 0.00 : 638126: 4c 8d 6d d0 lea -0x30(%rbp),%r13 0.00 : 63812a: 41 54 push %r12 0.00 : 63812c: 41 89 f4 mov %esi,%r12d 0.00 : 63812f: 53 push %rbx 0.00 : 638130: 48 89 fb mov %rdi,%rbx 0.00 : 638133: 48 83 ec 18 sub $0x18,%rsp : int errStatus; : struct sembuf sops; : : sops.sem_op = -1; /* decrement */ 0.00 : 638137: 66 c7 45 d2 ff ff movw $0xffff,-0x2e(%rbp) : sops.sem_flg = 0; 0.00 : 63813d: 66 c7 45 d4 00 00 movw $0x0,-0x2c(%rbp) : sops.sem_num = sema->semNum; 0.00 : 638143: 8b 47 04 mov 0x4(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:374 36.84 : 638146: 66 89 45 d0 mov %ax,-0x30(%rbp) 0.00 : 63814a: eb 28 jmp 638174 0.00 : 63814c: 0f 1f 40 00 nopl 0x0(%rax) : */ : do : { : ImmediateInterruptOK = interruptOK; : CHECK_FOR_INTERRUPTS(); : errStatus = semop(sema->semId, &sops, 1); 0.00 : 638150: 8b 3b mov (%rbx),%edi 0.00 : 638152: ba 01 00 00 00 mov $0x1,%edx 0.00 : 638157: 4c 89 ee mov %r13,%rsi 0.00 : 63815a: e8 61 1d e3 ff callq 469ec0 : ImmediateInterruptOK = false; : } while (errStatus < 0 && errno == EINTR); 0.00 : 63815f: 85 c0 test %eax,%eax : do : { : ImmediateInterruptOK = interruptOK; : CHECK_FOR_INTERRUPTS(); : errStatus = semop(sema->semId, &sops, 1); : ImmediateInterruptOK = false; /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:422 52.63 : 638161: c6 05 2c 1f 58 00 00 movb $0x0,0x581f2c(%rip) # bba094 : } while (errStatus < 0 && errno == EINTR); /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:423 10.53 : 638168: 79 26 jns 638190 0.00 : 63816a: e8 51 1b e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 63816f: 83 38 04 cmpl $0x4,(%rax) 0.00 : 638172: 75 2c jne 6381a0 : * is waiting. The loop on EINTR is thus important only for platforms : * without SA_RESTART. : */ : do : { : ImmediateInterruptOK = interruptOK; 0.00 : 638174: 44 88 25 19 1f 58 00 mov %r12b,0x581f19(%rip) # bba094 : CHECK_FOR_INTERRUPTS(); 0.00 : 63817b: 0f b6 05 0e 1f 58 00 movzbl 0x581f0e(%rip),%eax # bba090 0.00 : 638182: 84 c0 test %al,%al 0.00 : 638184: 74 ca je 638150 0.00 : 638186: e8 15 41 06 00 callq 69c2a0 0.00 : 63818b: eb c3 jmp 638150 0.00 : 63818d: 0f 1f 00 nopl (%rax) : ImmediateInterruptOK = false; : } while (errStatus < 0 && errno == EINTR); : : if (errStatus < 0) : elog(FATAL, "semop(id=%d) failed: %m", sema->semId); : } 0.00 : 638190: 48 83 c4 18 add $0x18,%rsp 0.00 : 638194: 5b pop %rbx 0.00 : 638195: 41 5c pop %r12 0.00 : 638197: 41 5d pop %r13 0.00 : 638199: c9 leaveq 0.00 : 63819a: c3 retq 0.00 : 63819b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : errStatus = semop(sema->semId, &sops, 1); : ImmediateInterruptOK = false; : } while (errStatus < 0 && errno == EINTR); : : if (errStatus < 0) : elog(FATAL, "semop(id=%d) failed: %m", sema->semId); 0.00 : 6381a0: ba 90 d5 89 00 mov $0x89d590,%edx 0.00 : 6381a5: be aa 01 00 00 mov $0x1aa,%esi 0.00 : 6381aa: bf f7 d1 89 00 mov $0x89d1f7,%edi 0.00 : 6381af: e8 6c 32 14 00 callq 77b420 0.00 : 6381b4: 8b 13 mov (%rbx),%edx 0.00 : 6381b6: be 01 d2 89 00 mov $0x89d201,%esi 0.00 : 6381bb: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6381c0: 31 c0 xor %eax,%eax 0.00 : 6381c2: e8 69 30 14 00 callq 77b230 0.00 : 6381c7: e8 04 13 e3 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 36.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1375 18.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1378 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1367 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1370 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1358 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679c50 : : return returnCode; : } : : int : FileWrite(File file, char *buffer, int amount) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 9.09 : 679c50: 55 push %rbp 9.09 : 679c51: 48 89 e5 mov %rsp,%rbp 0.00 : 679c54: 41 57 push %r15 0.00 : 679c56: 49 89 f7 mov %rsi,%r15 0.00 : 679c59: 41 56 push %r14 0.00 : 679c5b: 41 89 d6 mov %edx,%r14d 0.00 : 679c5e: 41 55 push %r13 0.00 : 679c60: 41 54 push %r12 0.00 : 679c62: 53 push %rbx 0.00 : 679c63: 89 fb mov %edi,%ebx 0.00 : 679c65: 48 83 ec 08 sub $0x8,%rsp : DO_DB(elog(LOG, "FileWrite: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); 0.00 : 679c69: e8 b2 fc ff ff callq 679920 : if (returnCode < 0) 0.00 : 679c6e: 85 c0 test %eax,%eax : DO_DB(elog(LOG, "FileWrite: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); 0.00 : 679c70: 89 c2 mov %eax,%edx : if (returnCode < 0) 0.00 : 679c72: 0f 88 b0 00 00 00 js 679d28 : * really a modularity violation to throw error here; we should set errno : * and return -1. However, there's no way to report a suitable error : * message if we do that. All current callers would just throw error : * immediately anyway, so this is safe at present. : */ : if (temp_file_limit >= 0 && (VfdCache[file].fdstate & FD_TEMPORARY)) 0.00 : 679c78: 8b 05 fe ee 4e 00 mov 0x4eeefe(%rip),%eax # b68b7c 0.00 : 679c7e: 85 c0 test %eax,%eax 0.00 : 679c80: 0f 88 52 01 00 00 js 679dd8 0.00 : 679c86: 4c 63 e3 movslq %ebx,%r12 0.00 : 679c89: 49 c1 e4 06 shl $0x6,%r12 0.00 : 679c8d: 4c 89 e2 mov %r12,%rdx 0.00 : 679c90: 48 03 15 01 35 50 00 add 0x503501(%rip),%rdx # b7d198 0.00 : 679c97: f6 42 04 01 testb $0x1,0x4(%rdx) 0.00 : 679c9b: 0f 85 9f 00 00 00 jne 679d40 0.00 : 679ca1: 4d 63 ee movslq %r14d,%r13 : return returnCode; : } : : int : FileWrite(File file, char *buffer, int amount) : { 0.00 : 679ca4: e8 17 00 df ff callq 469cc0 <__errno_location@plt> 0.00 : 679ca9: 48 89 c3 mov %rax,%rbx 0.00 : 679cac: eb 0f jmp 679cbd 0.00 : 679cae: 66 90 xchg %ax,%ax : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) : errno = ENOSPC; : : if (returnCode >= 0) 0.00 : 679cb0: 85 d2 test %edx,%edx 0.00 : 679cb2: 79 3c jns 679cf0 : _dosmaperr(error); : break; : } : #endif : /* OK to retry if interrupted */ : if (errno == EINTR) 0.00 : 679cb4: 83 3b 04 cmpl $0x4,(%rbx) 0.00 : 679cb7: 0f 85 03 01 00 00 jne 679dc0 : temp_file_limit))); : } : } : : retry: : errno = 0; 0.00 : 679cbd: c7 03 00 00 00 00 movl $0x0,(%rbx) : returnCode = write(VfdCache[file].fd, buffer, amount); /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1367 9.09 : 679cc3: 48 8b 05 ce 34 50 00 mov 0x5034ce(%rip),%rax # b7d198 0.00 : 679cca: 4c 89 ea mov %r13,%rdx 0.00 : 679ccd: 4c 89 fe mov %r15,%rsi 0.00 : 679cd0: 42 8b 3c 20 mov (%rax,%r12,1),%edi 0.00 : 679cd4: e8 b7 03 df ff callq 46a090 : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1370 9.09 : 679cd9: 44 39 f0 cmp %r14d,%eax : } : } : : retry: : errno = 0; : returnCode = write(VfdCache[file].fd, buffer, amount); 0.00 : 679cdc: 89 c2 mov %eax,%edx : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) 0.00 : 679cde: 74 d0 je 679cb0 0.00 : 679ce0: 8b 03 mov (%rbx),%eax 0.00 : 679ce2: 85 c0 test %eax,%eax 0.00 : 679ce4: 75 ca jne 679cb0 : errno = ENOSPC; : : if (returnCode >= 0) 0.00 : 679ce6: 85 d2 test %edx,%edx : errno = 0; : returnCode = write(VfdCache[file].fd, buffer, amount); : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) : errno = ENOSPC; 0.00 : 679ce8: c7 03 1c 00 00 00 movl $0x1c,(%rbx) : : if (returnCode >= 0) 0.00 : 679cee: 78 c4 js 679cb4 : { : VfdCache[file].seekPos += returnCode; 0.00 : 679cf0: 4c 89 e6 mov %r12,%rsi 0.00 : 679cf3: 48 03 35 9e 34 50 00 add 0x50349e(%rip),%rsi # b7d198 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1375 36.36 : 679cfa: 48 63 ca movslq %edx,%rcx 0.00 : 679cfd: 48 03 4e 20 add 0x20(%rsi),%rcx : : /* maintain fileSize and temporary_files_size if it's a temp file */ : if (VfdCache[file].fdstate & FD_TEMPORARY) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1378 18.18 : 679d01: f6 46 04 01 testb $0x1,0x4(%rsi) : if (returnCode != amount && errno == 0) : errno = ENOSPC; : : if (returnCode >= 0) : { : VfdCache[file].seekPos += returnCode; 0.00 : 679d05: 48 89 4e 20 mov %rcx,0x20(%rsi) : : /* maintain fileSize and temporary_files_size if it's a temp file */ : if (VfdCache[file].fdstate & FD_TEMPORARY) 0.00 : 679d09: 74 1d je 679d28 : { : off_t newPos = VfdCache[file].seekPos; : : if (newPos > VfdCache[file].fileSize) 0.00 : 679d0b: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 679d0f: 48 39 c1 cmp %rax,%rcx 0.00 : 679d12: 7e 14 jle 679d28 : { : temporary_files_size += newPos - VfdCache[file].fileSize; 0.00 : 679d14: 48 89 cb mov %rcx,%rbx 0.00 : 679d17: 48 29 c3 sub %rax,%rbx 0.00 : 679d1a: 48 01 1d 67 34 50 00 add %rbx,0x503467(%rip) # b7d188 : VfdCache[file].fileSize = newPos; 0.00 : 679d21: 48 89 4e 28 mov %rcx,0x28(%rsi) 0.00 : 679d25: 0f 1f 00 nopl (%rax) : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; : } : : return returnCode; : } 0.00 : 679d28: 48 83 c4 08 add $0x8,%rsp 0.00 : 679d2c: 89 d0 mov %edx,%eax 0.00 : 679d2e: 5b pop %rbx 0.00 : 679d2f: 41 5c pop %r12 0.00 : 679d31: 41 5d pop %r13 0.00 : 679d33: 41 5e pop %r14 0.00 : 679d35: 41 5f pop %r15 0.00 : 679d37: c9 leaveq 0.00 : 679d38: c3 retq 0.00 : 679d39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * message if we do that. All current callers would just throw error : * immediately anyway, so this is safe at present. : */ : if (temp_file_limit >= 0 && (VfdCache[file].fdstate & FD_TEMPORARY)) : { : off_t newPos = VfdCache[file].seekPos + amount; 0.00 : 679d40: 4d 63 ee movslq %r14d,%r13 0.00 : 679d43: 4c 89 e9 mov %r13,%rcx 0.00 : 679d46: 48 03 4a 20 add 0x20(%rdx),%rcx : : if (newPos > VfdCache[file].fileSize) 0.00 : 679d4a: 48 8b 52 28 mov 0x28(%rdx),%rdx 0.00 : 679d4e: 48 39 d1 cmp %rdx,%rcx 0.00 : 679d51: 0f 8e 4d ff ff ff jle 679ca4 : { : uint64 newTotal = temporary_files_size; : : newTotal += newPos - VfdCache[file].fileSize; : if (newTotal > (uint64) temp_file_limit * (uint64) 1024) 0.00 : 679d57: 48 29 d1 sub %rdx,%rcx 0.00 : 679d5a: 48 03 0d 27 34 50 00 add 0x503427(%rip),%rcx # b7d188 0.00 : 679d61: 48 98 cltq 0.00 : 679d63: 48 c1 e0 0a shl $0xa,%rax 0.00 : 679d67: 48 39 c1 cmp %rax,%rcx 0.00 : 679d6a: 0f 86 34 ff ff ff jbe 679ca4 : ereport(ERROR, 0.00 : 679d70: 45 31 c0 xor %r8d,%r8d 0.00 : 679d73: b9 c8 a9 8a 00 mov $0x8aa9c8,%ecx 0.00 : 679d78: ba 51 05 00 00 mov $0x551,%edx 0.00 : 679d7d: be f1 a2 8a 00 mov $0x8aa2f1,%esi 0.00 : 679d82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 679d87: e8 34 0d 10 00 callq 77aac0 0.00 : 679d8c: 84 c0 test %al,%al 0.00 : 679d8e: 74 29 je 679db9 0.00 : 679d90: 8b 35 e6 ed 4e 00 mov 0x4eede6(%rip),%esi # b68b7c 0.00 : 679d96: bf 38 a7 8a 00 mov $0x8aa738,%edi 0.00 : 679d9b: 31 c0 xor %eax,%eax 0.00 : 679d9d: e8 fe 2a 10 00 callq 77c8a0 0.00 : 679da2: bf c5 40 00 00 mov $0x40c5,%edi 0.00 : 679da7: 89 c3 mov %eax,%ebx 0.00 : 679da9: e8 a2 2f 10 00 callq 77cd50 0.00 : 679dae: 89 de mov %ebx,%esi 0.00 : 679db0: 89 c7 mov %eax,%edi 0.00 : 679db2: 31 c0 xor %eax,%eax 0.00 : 679db4: e8 27 08 10 00 callq 77a5e0 0.00 : 679db9: e8 12 f7 de ff callq 4694d0 0.00 : 679dbe: 66 90 xchg %ax,%ax : /* OK to retry if interrupted */ : if (errno == EINTR) : goto retry; : : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; 0.00 : 679dc0: 48 8b 05 d1 33 50 00 mov 0x5033d1(%rip),%rax # b7d198 0.00 : 679dc7: 4a c7 44 20 20 ff ff movq $0xffffffffffffffff,0x20(%rax,%r12,1) 0.00 : 679dce: ff ff 0.00 : 679dd0: e9 53 ff ff ff jmpq 679d28 0.00 : 679dd5: 0f 1f 00 nopl (%rax) : { : uint64 newTotal = temporary_files_size; : : newTotal += newPos - VfdCache[file].fileSize; : if (newTotal > (uint64) temp_file_limit * (uint64) 1024) : ereport(ERROR, /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1358 9.09 : 679dd8: 4c 63 e3 movslq %ebx,%r12 0.00 : 679ddb: 4d 63 ee movslq %r14d,%r13 0.00 : 679dde: 49 c1 e4 06 shl $0x6,%r12 0.00 : 679de2: e9 bd fe ff ff jmpq 679ca4 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2243 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2264 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2193 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2197 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2245 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2251 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2257 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2261 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cd8b0 : : * *tm: field values are stored into appropriate members of this struct : */ : static int : DecodeDate(char *str, int fmask, int *tmask, bool *is2digits, : struct pg_tm * tm) : { 0.00 : 6cd8b0: 55 push %rbp 0.00 : 6cd8b1: 48 89 e5 mov %rsp,%rbp 0.00 : 6cd8b4: 41 57 push %r15 0.00 : 6cd8b6: 41 56 push %r14 0.00 : 6cd8b8: 41 55 push %r13 0.00 : 6cd8ba: 41 54 push %r12 0.00 : 6cd8bc: 53 push %rbx 0.00 : 6cd8bd: 48 89 fb mov %rdi,%rbx 0.00 : 6cd8c0: 48 81 ec 28 01 00 00 sub $0x128,%rsp 0.00 : 6cd8c7: 89 b5 e8 fe ff ff mov %esi,-0x118(%rbp) 0.00 : 6cd8cd: 48 89 95 e0 fe ff ff mov %rdx,-0x120(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 7.14 : 6cd8d4: 48 89 8d d8 fe ff ff mov %rcx,-0x128(%rbp) 0.00 : 6cd8db: 4c 89 85 d0 fe ff ff mov %r8,-0x130(%rbp) : len; : int dterr; : bool haveTextMonth = FALSE; : int type, : val, : dmask = 0; 0.00 : 6cd8e2: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : char *field[MAXDATEFIELDS]; : : *tmask = 0; 0.00 : 6cd8e9: c7 02 00 00 00 00 movl $0x0,(%rdx) : : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) 0.00 : 6cd8ef: 44 0f b6 27 movzbl (%rdi),%r12d 0.00 : 6cd8f3: 45 84 e4 test %r12b,%r12b 0.00 : 6cd8f6: 0f 84 56 02 00 00 je 6cdb52 0.00 : 6cd8fc: 4c 8d b5 f0 fe ff ff lea -0x110(%rbp),%r14 0.00 : 6cd903: 45 31 ed xor %r13d,%r13d 0.00 : 6cd906: 4d 89 f7 mov %r14,%r15 : * *tm: field values are stored into appropriate members of this struct : */ : static int : DecodeDate(char *str, int fmask, int *tmask, bool *is2digits, : struct pg_tm * tm) : { 0.00 : 6cd909: e8 b2 bf d9 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 6cd90e: 49 89 c0 mov %rax,%r8 0.00 : 6cd911: 48 8b 30 mov (%rax),%rsi 0.00 : 6cd914: eb 1b jmp 6cd931 0.00 : 6cd916: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6cd91d: 00 00 00 : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) : { : /* skip field separators */ : while (*str != '\0' && !isalnum((unsigned char) *str)) : str++; 0.00 : 6cd920: 48 83 c3 01 add $0x1,%rbx : : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) : { : /* skip field separators */ : while (*str != '\0' && !isalnum((unsigned char) *str)) 0.00 : 6cd924: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 6cd928: 45 84 e4 test %r12b,%r12b 0.00 : 6cd92b: 0f 84 af 00 00 00 je 6cd9e0 0.00 : 6cd931: 41 0f b6 d4 movzbl %r12b,%edx 0.00 : 6cd935: 0f b7 04 56 movzwl (%rsi,%rdx,2),%eax 0.00 : 6cd939: a8 08 test $0x8,%al 0.00 : 6cd93b: 74 e3 je 6cd920 : : if (*str == '\0') : return DTERR_BAD_FORMAT; /* end of string after separator */ : : field[nf] = str; : if (isdigit((unsigned char) *str)) 0.00 : 6cd93d: f6 c4 08 test $0x8,%ah : str++; : : if (*str == '\0') : return DTERR_BAD_FORMAT; /* end of string after separator */ : : field[nf] = str; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2193 7.14 : 6cd940: 49 89 1f mov %rbx,(%r15) : if (isdigit((unsigned char) *str)) 0.00 : 6cd943: 0f 84 e7 00 00 00 je 6cda30 : { : while (isdigit((unsigned char) *str)) 0.00 : 6cd949: f6 44 56 01 08 testb $0x8,0x1(%rsi,%rdx,2) 0.00 : 6cd94e: 44 89 e1 mov %r12d,%ecx 0.00 : 6cd951: 74 16 je 6cd969 0.00 : 6cd953: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : str++; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2197 7.14 : 6cd958: 48 83 c3 01 add $0x1,%rbx : return DTERR_BAD_FORMAT; /* end of string after separator */ : : field[nf] = str; : if (isdigit((unsigned char) *str)) : { : while (isdigit((unsigned char) *str)) 0.00 : 6cd95c: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 6cd95f: 0f b6 c1 movzbl %cl,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 14.29 : 6cd962: f6 44 46 01 08 testb $0x8,0x1(%rsi,%rax,2) 7.14 : 6cd967: 75 ef jne 6cd958 : while (isalpha((unsigned char) *str)) : str++; : } : : /* Just get rid of any non-digit, non-alpha characters... */ : if (*str != '\0') 0.00 : 6cd969: 84 c9 test %cl,%cl 0.00 : 6cd96b: 0f 85 8f 00 00 00 jne 6cda00 : *str++ = '\0'; : nf++; 0.00 : 6cd971: 41 83 c5 01 add $0x1,%r13d : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cd975: 45 85 ed test %r13d,%r13d 0.00 : 6cd978: 0f 8e d4 01 00 00 jle 6cdb52 0.00 : 6cd97e: 4d 89 f4 mov %r14,%r12 0.00 : 6cd981: 31 db xor %ebx,%ebx 0.00 : 6cd983: c6 85 ef fe ff ff 00 movb $0x0,-0x111(%rbp) : { : if (isalpha((unsigned char) *field[i])) : { : type = DecodeSpecial(i, field[i], &val); 0.00 : 6cd98a: 4c 8d 7d c8 lea -0x38(%rbp),%r15 0.00 : 6cd98e: eb 10 jmp 6cd9a0 : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cd990: 83 c3 01 add $0x1,%ebx 0.00 : 6cd993: 49 83 c4 08 add $0x8,%r12 0.00 : 6cd997: 44 39 eb cmp %r13d,%ebx 0.00 : 6cd99a: 0f 8d 17 01 00 00 jge 6cdab7 : { : if (isalpha((unsigned char) *field[i])) 0.00 : 6cd9a0: 49 8b 34 24 mov (%r12),%rsi 0.00 : 6cd9a4: 49 8b 00 mov (%r8),%rax 0.00 : 6cd9a7: 0f b6 16 movzbl (%rsi),%edx 0.00 : 6cd9aa: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 6cd9af: 74 df je 6cd990 : { : type = DecodeSpecial(i, field[i], &val); 0.00 : 6cd9b1: 4c 89 fa mov %r15,%rdx 0.00 : 6cd9b4: 89 df mov %ebx,%edi 0.00 : 6cd9b6: 4c 89 85 c8 fe ff ff mov %r8,-0x138(%rbp) 0.00 : 6cd9bd: e8 ae cf ff ff callq 6ca970 : if (type == IGNORE_DTF) 0.00 : 6cd9c2: 83 f8 08 cmp $0x8,%eax 0.00 : 6cd9c5: 4c 8b 85 c8 fe ff ff mov -0x138(%rbp),%r8 0.00 : 6cd9cc: 74 c2 je 6cd990 : continue; : : dmask = DTK_M(type); : switch (type) 0.00 : 6cd9ce: 83 e8 01 sub $0x1,%eax 0.00 : 6cd9d1: 0f 84 8f 00 00 00 je 6cda66 0.00 : 6cd9d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cd9de: 00 00 : : fmask |= dmask; : *tmask |= dmask; : } : : if ((fmask & ~(DTK_M(DOY) | DTK_M(TZ))) != DTK_DATE_M) 0.00 : 6cd9e0: b8 ff ff ff ff mov $0xffffffff,%eax : return DTERR_BAD_FORMAT; : : /* validation of the field values must wait until ValidateDate() */ : : return 0; : } 0.00 : 6cd9e5: 48 81 c4 28 01 00 00 add $0x128,%rsp 0.00 : 6cd9ec: 5b pop %rbx 0.00 : 6cd9ed: 41 5c pop %r12 0.00 : 6cd9ef: 41 5d pop %r13 0.00 : 6cd9f1: 41 5e pop %r14 0.00 : 6cd9f3: 41 5f pop %r15 0.00 : 6cd9f5: c9 leaveq 0.00 : 6cd9f6: c3 retq 0.00 : 6cd9f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cd9fe: 00 00 : str++; : } : : /* Just get rid of any non-digit, non-alpha characters... */ : if (*str != '\0') : *str++ = '\0'; 0.00 : 6cda00: c6 03 00 movb $0x0,(%rbx) 0.00 : 6cda03: 48 83 c3 01 add $0x1,%rbx : nf++; 0.00 : 6cda07: 41 83 c5 01 add $0x1,%r13d : char *field[MAXDATEFIELDS]; : : *tmask = 0; : : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) 0.00 : 6cda0b: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 6cda0f: 49 83 c7 08 add $0x8,%r15 0.00 : 6cda13: 45 84 e4 test %r12b,%r12b 0.00 : 6cda16: 0f 84 59 ff ff ff je 6cd975 0.00 : 6cda1c: 41 83 fd 18 cmp $0x18,%r13d 0.00 : 6cda20: 0f 8f 4f ff ff ff jg 6cd975 0.00 : 6cda26: e9 de fe ff ff jmpq 6cd909 0.00 : 6cda2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (isdigit((unsigned char) *str)) : { : while (isdigit((unsigned char) *str)) : str++; : } : else if (isalpha((unsigned char) *str)) 0.00 : 6cda30: f6 c4 04 test $0x4,%ah 0.00 : 6cda33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cda38: 74 c6 je 6cda00 : { : while (isalpha((unsigned char) *str)) 0.00 : 6cda3a: f6 44 56 01 04 testb $0x4,0x1(%rsi,%rdx,2) 0.00 : 6cda3f: 44 89 e1 mov %r12d,%ecx 0.00 : 6cda42: 0f 84 21 ff ff ff je 6cd969 0.00 : 6cda48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cda4f: 00 : str++; 0.00 : 6cda50: 48 83 c3 01 add $0x1,%rbx : while (isdigit((unsigned char) *str)) : str++; : } : else if (isalpha((unsigned char) *str)) : { : while (isalpha((unsigned char) *str)) 0.00 : 6cda54: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 6cda57: 0f b6 c1 movzbl %cl,%eax 0.00 : 6cda5a: f6 44 46 01 04 testb $0x4,0x1(%rsi,%rax,2) 0.00 : 6cda5f: 75 ef jne 6cda50 0.00 : 6cda61: e9 03 ff ff ff jmpq 6cd969 : : dmask = DTK_M(type); : switch (type) : { : case MONTH: : tm->tm_mon = val; 0.00 : 6cda66: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 6cda69: 48 8b 95 d0 fe ff ff mov -0x130(%rbp),%rdx : { : type = DecodeSpecial(i, field[i], &val); : if (type == IGNORE_DTF) : continue; : : dmask = DTK_M(type); 0.00 : 6cda70: c7 45 c4 02 00 00 00 movl $0x2,-0x3c(%rbp) : switch (type) : { : case MONTH: : tm->tm_mon = val; 0.00 : 6cda77: 89 42 10 mov %eax,0x10(%rdx) : break; : : default: : return DTERR_BAD_FORMAT; : } : if (fmask & dmask) 0.00 : 6cda7a: f6 85 e8 fe ff ff 02 testb $0x2,-0x118(%rbp) 0.00 : 6cda81: 0f 85 59 ff ff ff jne 6cd9e0 : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; 0.00 : 6cda87: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax : return DTERR_BAD_FORMAT; : } : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; 0.00 : 6cda8e: 83 8d e8 fe ff ff 02 orl $0x2,-0x118(%rbp) : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cda95: 83 c3 01 add $0x1,%ebx : } : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; 0.00 : 6cda98: 83 08 02 orl $0x2,(%rax) : : /* mark this field as being completed */ : field[i] = NULL; 0.00 : 6cda9b: 49 c7 04 24 00 00 00 movq $0x0,(%r12) 0.00 : 6cdaa2: 00 : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cdaa3: 49 83 c4 08 add $0x8,%r12 0.00 : 6cdaa7: 44 39 eb cmp %r13d,%ebx : : fmask |= dmask; : *tmask |= dmask; : : /* mark this field as being completed */ : field[i] = NULL; 0.00 : 6cdaaa: c6 85 ef fe ff ff 01 movb $0x1,-0x111(%rbp) : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cdab1: 0f 8c e9 fe ff ff jl 6cd9a0 0.00 : 6cdab7: 45 31 e4 xor %r12d,%r12d : continue; : : if ((len = strlen(field[i])) <= 0) : return DTERR_BAD_FORMAT; : : dterr = DecodeNumber(len, field[i], haveTextMonth, fmask, 0.00 : 6cdaba: 44 0f be bd ef fe ff movsbl -0x111(%rbp),%r15d 0.00 : 6cdac1: ff 0.00 : 6cdac2: eb 11 jmp 6cdad5 0.00 : 6cdac4: 0f 1f 40 00 nopl 0x0(%rax) : field[i] = NULL; : } : } : : /* now pick up remaining numeric fields */ : for (i = 0; i < nf; i++) 0.00 : 6cdac8: 41 83 c4 01 add $0x1,%r12d 0.00 : 6cdacc: 49 83 c6 08 add $0x8,%r14 0.00 : 6cdad0: 45 39 ec cmp %r13d,%r12d 0.00 : 6cdad3: 7d 7d jge 6cdb52 : { : if (field[i] == NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2245 7.14 : 6cdad5: 49 8b 1e mov (%r14),%rbx 0.00 : 6cdad8: 48 85 db test %rbx,%rbx 0.00 : 6cdadb: 74 eb je 6cdac8 : continue; : : if ((len = strlen(field[i])) <= 0) 0.00 : 6cdadd: 48 89 df mov %rbx,%rdi 0.00 : 6cdae0: e8 6b bd d9 ff callq 469850 0.00 : 6cdae5: 85 c0 test %eax,%eax 0.00 : 6cdae7: 0f 8e f3 fe ff ff jle 6cd9e0 : return DTERR_BAD_FORMAT; : : dterr = DecodeNumber(len, field[i], haveTextMonth, fmask, 0.00 : 6cdaed: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 6cdaf4: 4c 8b 8d d0 fe ff ff mov -0x130(%rbp),%r9 0.00 : 6cdafb: 4c 8d 45 c4 lea -0x3c(%rbp),%r8 0.00 : 6cdaff: 8b 8d e8 fe ff ff mov -0x118(%rbp),%ecx 0.00 : 6cdb05: 48 89 de mov %rbx,%rsi 0.00 : 6cdb08: 89 c7 mov %eax,%edi 0.00 : 6cdb0a: 48 89 54 24 08 mov %rdx,0x8(%rsp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2251 7.14 : 6cdb0f: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 6cdb13: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 6cdb17: 44 89 fa mov %r15d,%edx 0.00 : 6cdb1a: e8 81 fb ff ff callq 6cd6a0 : &dmask, tm, : &fsec, is2digits); : if (dterr) 0.00 : 6cdb1f: 85 c0 test %eax,%eax 0.00 : 6cdb21: 0f 85 be fe ff ff jne 6cd9e5 : return dterr; : : if (fmask & dmask) 0.00 : 6cdb27: 8b 45 c4 mov -0x3c(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2257 7.14 : 6cdb2a: 85 85 e8 fe ff ff test %eax,-0x118(%rbp) 0.00 : 6cdb30: 0f 85 aa fe ff ff jne 6cd9e0 : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2261 7.14 : 6cdb36: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx : return dterr; : : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; 0.00 : 6cdb3d: 09 85 e8 fe ff ff or %eax,-0x118(%rbp) : field[i] = NULL; : } : } : : /* now pick up remaining numeric fields */ : for (i = 0; i < nf; i++) 0.00 : 6cdb43: 41 83 c4 01 add $0x1,%r12d 0.00 : 6cdb47: 49 83 c6 08 add $0x8,%r14 : : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; 0.00 : 6cdb4b: 09 02 or %eax,(%rdx) : field[i] = NULL; : } : } : : /* now pick up remaining numeric fields */ : for (i = 0; i < nf; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2243 14.29 : 6cdb4d: 45 39 ec cmp %r13d,%r12d 0.00 : 6cdb50: 7c 83 jl 6cdad5 : : fmask |= dmask; : *tmask |= dmask; : } : : if ((fmask & ~(DTK_M(DOY) | DTK_M(TZ))) != DTK_DATE_M) 0.00 : 6cdb52: 81 a5 e8 fe ff ff df andl $0xffff7fdf,-0x118(%rbp) 0.00 : 6cdb59: 7f ff ff 0.00 : 6cdb5c: 31 c0 xor %eax,%eax 0.00 : 6cdb5e: 83 bd e8 fe ff ff 0e cmpl $0xe,-0x118(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2264 14.29 : 6cdb65: 0f 85 75 fe ff ff jne 6cd9e0 0.00 : 6cdb6b: e9 75 fe ff ff jmpq 6cd9e5 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 16.67 ??:0 16.67 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000032c00 <__GI___libc_sigaction>: ??:0 16.67 : 32c00: 53 push %rbx 0.00 : 32c01: 49 89 f0 mov %rsi,%r8 0.00 : 32c04: 49 89 d1 mov %rdx,%r9 0.00 : 32c07: 48 81 ec c8 00 00 00 sub $0xc8,%rsp 0.00 : 32c0e: 48 85 f6 test %rsi,%rsi 0.00 : 32c11: 0f 84 b0 00 00 00 je 32cc7 <__GI___libc_sigaction+0xc7> 0.00 : 32c17: 48 8b 06 mov (%rsi),%rax 0.00 : 32c1a: 48 8d 4c 24 40 lea 0x40(%rsp),%rcx 0.00 : 32c1f: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 32c24: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 32c28: 48 8d 46 08 lea 0x8(%rsi),%rax 0.00 : 32c2c: 48 89 54 24 40 mov %rdx,0x40(%rsp) 8.33 : 32c31: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 32c35: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 32c39: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 32c3d: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 32c41: 48 8b 50 18 mov 0x18(%rax),%rdx 0.00 : 32c45: 48 89 51 18 mov %rdx,0x18(%rcx) 0.00 : 32c49: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 32c4d: 48 89 51 20 mov %rdx,0x20(%rcx) 0.00 : 32c51: 48 8b 50 28 mov 0x28(%rax),%rdx 0.00 : 32c55: 48 89 51 28 mov %rdx,0x28(%rcx) 0.00 : 32c59: 48 8b 50 30 mov 0x30(%rax),%rdx 0.00 : 32c5d: 48 89 51 30 mov %rdx,0x30(%rcx) 0.00 : 32c61: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 32c65: 48 89 51 38 mov %rdx,0x38(%rcx) 0.00 : 32c69: 48 8b 50 40 mov 0x40(%rax),%rdx 0.00 : 32c6d: 48 89 51 40 mov %rdx,0x40(%rcx) 0.00 : 32c71: 48 8b 50 48 mov 0x48(%rax),%rdx 0.00 : 32c75: 48 89 51 48 mov %rdx,0x48(%rcx) 0.00 : 32c79: 48 8b 50 50 mov 0x50(%rax),%rdx 0.00 : 32c7d: 48 89 51 50 mov %rdx,0x50(%rcx) 8.33 : 32c81: 48 8b 50 58 mov 0x58(%rax),%rdx 0.00 : 32c85: 48 89 51 58 mov %rdx,0x58(%rcx) 0.00 : 32c89: 48 8b 50 60 mov 0x60(%rax),%rdx 0.00 : 32c8d: 48 89 51 60 mov %rdx,0x60(%rcx) 0.00 : 32c91: 48 8b 50 68 mov 0x68(%rax),%rdx 0.00 : 32c95: 48 89 51 68 mov %rdx,0x68(%rcx) 0.00 : 32c99: 48 8b 50 70 mov 0x70(%rax),%rdx 0.00 : 32c9d: 48 89 51 70 mov %rdx,0x70(%rcx) 0.00 : 32ca1: 48 8b 40 78 mov 0x78(%rax),%rax 0.00 : 32ca5: 48 89 41 78 mov %rax,0x78(%rcx) 8.33 : 32ca9: 8b 86 88 00 00 00 mov 0x88(%rsi),%eax 0.00 : 32caf: 0d 00 00 00 04 or $0x4000000,%eax 0.00 : 32cb4: 48 98 cltq 0.00 : 32cb6: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 32cbb: 48 8d 05 2e ff ff ff lea -0xd2(%rip),%rax # 32bf0 <__restore_rt> 0.00 : 32cc2: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 32cc7: 31 f6 xor %esi,%esi 0.00 : 32cc9: 48 8d 5c 24 88 lea -0x78(%rsp),%rbx 0.00 : 32cce: 4d 85 c9 test %r9,%r9 0.00 : 32cd1: 48 8d 44 24 28 lea 0x28(%rsp),%rax 0.00 : 32cd6: 48 89 f2 mov %rsi,%rdx 0.00 : 32cd9: 41 ba 08 00 00 00 mov $0x8,%r10d 0.00 : 32cdf: 48 0f 45 d3 cmovne %rbx,%rdx 0.00 : 32ce3: 4d 85 c0 test %r8,%r8 0.00 : 32ce6: 48 63 ff movslq %edi,%rdi 0.00 : 32ce9: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 32ced: b8 0d 00 00 00 mov $0xd,%eax 0.00 : 32cf2: 0f 05 syscall 33.33 : 32cf4: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : 32cfa: 0f 87 c6 00 00 00 ja 32dc6 <__GI___libc_sigaction+0x1c6> 0.00 : 32d00: 4d 85 c9 test %r9,%r9 0.00 : 32d03: 89 c6 mov %eax,%esi 0.00 : 32d05: 0f 84 b0 00 00 00 je 32dbb <__GI___libc_sigaction+0x1bb> 0.00 : 32d0b: 85 c0 test %eax,%eax 0.00 : 32d0d: 0f 88 a8 00 00 00 js 32dbb <__GI___libc_sigaction+0x1bb> 0.00 : 32d13: 48 8b 44 24 88 mov -0x78(%rsp),%rax 0.00 : 32d18: 49 8d 49 08 lea 0x8(%r9),%rcx 0.00 : 32d1c: 49 89 01 mov %rax,(%r9) 0.00 : 32d1f: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 32d23: 48 8d 43 18 lea 0x18(%rbx),%rax 0.00 : 32d27: 49 89 51 08 mov %rdx,0x8(%r9) 0.00 : 32d2b: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 32d2f: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 32d33: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 32d37: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 32d3b: 48 8b 50 18 mov 0x18(%rax),%rdx 16.67 : 32d3f: 48 89 51 18 mov %rdx,0x18(%rcx) 8.33 : 32d43: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 32d47: 48 89 51 20 mov %rdx,0x20(%rcx) 0.00 : 32d4b: 48 8b 50 28 mov 0x28(%rax),%rdx 0.00 : 32d4f: 48 89 51 28 mov %rdx,0x28(%rcx) 0.00 : 32d53: 48 8b 50 30 mov 0x30(%rax),%rdx 0.00 : 32d57: 48 89 51 30 mov %rdx,0x30(%rcx) 0.00 : 32d5b: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 32d5f: 48 89 51 38 mov %rdx,0x38(%rcx) 0.00 : 32d63: 48 8b 50 40 mov 0x40(%rax),%rdx 0.00 : 32d67: 48 89 51 40 mov %rdx,0x40(%rcx) 0.00 : 32d6b: 48 8b 50 48 mov 0x48(%rax),%rdx 0.00 : 32d6f: 48 89 51 48 mov %rdx,0x48(%rcx) 0.00 : 32d73: 48 8b 50 50 mov 0x50(%rax),%rdx 0.00 : 32d77: 48 89 51 50 mov %rdx,0x50(%rcx) 0.00 : 32d7b: 48 8b 50 58 mov 0x58(%rax),%rdx 0.00 : 32d7f: 48 89 51 58 mov %rdx,0x58(%rcx) 0.00 : 32d83: 48 8b 50 60 mov 0x60(%rax),%rdx 0.00 : 32d87: 48 89 51 60 mov %rdx,0x60(%rcx) 0.00 : 32d8b: 48 8b 50 68 mov 0x68(%rax),%rdx 0.00 : 32d8f: 48 89 51 68 mov %rdx,0x68(%rcx) 0.00 : 32d93: 48 8b 50 70 mov 0x70(%rax),%rdx 0.00 : 32d97: 48 89 51 70 mov %rdx,0x70(%rcx) 0.00 : 32d9b: 48 8b 40 78 mov 0x78(%rax),%rax 0.00 : 32d9f: 48 89 41 78 mov %rax,0x78(%rcx) 0.00 : 32da3: 48 8b 44 24 90 mov -0x70(%rsp),%rax 0.00 : 32da8: 41 89 81 88 00 00 00 mov %eax,0x88(%r9) 0.00 : 32daf: 48 8b 44 24 98 mov -0x68(%rsp),%rax 0.00 : 32db4: 49 89 81 90 00 00 00 mov %rax,0x90(%r9) 0.00 : 32dbb: 89 f0 mov %esi,%eax 0.00 : 32dbd: 48 81 c4 c8 00 00 00 add $0xc8,%rsp 0.00 : 32dc4: 5b pop %rbx 0.00 : 32dc5: c3 retq 0.00 : 32dc6: 89 c1 mov %eax,%ecx 0.00 : 32dc8: 48 8b 15 69 f0 33 00 mov 0x33f069(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 32dcf: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 32dd6: 00 00 0.00 : 32dd8: f7 d9 neg %ecx 0.00 : 32dda: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 32ddf: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : 32de2: eb d7 jmp 32dbb <__GI___libc_sigaction+0x1bb> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000054990 <_IO_vfscanf>: 0.00 : 54990: 55 push %rbp 0.00 : 54991: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 54998: 00 00 0.00 : 5499a: 49 89 fa mov %rdi,%r10 0.00 : 5499d: 48 89 e5 mov %rsp,%rbp 0.00 : 549a0: 41 57 push %r15 0.00 : 549a2: 41 56 push %r14 0.00 : 549a4: 41 55 push %r13 0.00 : 549a6: 41 54 push %r12 0.00 : 549a8: 53 push %rbx 0.00 : 549a9: 48 89 f3 mov %rsi,%rbx 0.00 : 549ac: 48 81 ec c8 03 00 00 sub $0x3c8,%rsp 0.00 : 549b3: 48 89 95 f8 fc ff ff mov %rdx,-0x308(%rbp) 0.00 : 549ba: 48 8b 15 c7 d3 31 00 mov 0x31d3c7(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : 549c1: 48 89 85 c0 fc ff ff mov %rax,-0x340(%rbp) 0.00 : 549c8: 48 89 8d f0 fc ff ff mov %rcx,-0x310(%rbp) 0.00 : 549cf: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 549d6: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 549da: 48 89 95 08 fd ff ff mov %rdx,-0x2f8(%rbp) 0.00 : 549e1: 48 8b 0a mov (%rdx),%rcx 0.00 : 549e4: 48 89 8d 10 fd ff ff mov %rcx,-0x2f0(%rbp) 0.00 : 549eb: 48 8b 06 mov (%rsi),%rax 0.00 : 549ee: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 549f5: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 549f9: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 54a00: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : 54a04: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 54a0b: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 0.00 : 54a11: 85 c0 test %eax,%eax 0.00 : 54a13: 0f 85 27 02 00 00 jne 54c40 <_IO_vfscanf+0x2b0> 0.00 : 54a19: c7 87 c0 00 00 00 ff movl $0xffffffff,0xc0(%rdi) 0.00 : 54a20: ff ff ff 0.00 : 54a23: 41 8b 12 mov (%r10),%edx 0.00 : 54a26: f6 c2 04 test $0x4,%dl 0.00 : 54a29: 0f 85 59 1e 00 00 jne 56888 <_IO_vfscanf+0x1ef8> 0.00 : 54a2f: 48 85 db test %rbx,%rbx 0.00 : 54a32: 0f 84 c1 44 00 00 je 58ef9 <_IO_vfscanf+0x4569> 0.00 : 54a38: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54a3f: 8b 3d 6b 2c 32 00 mov 0x322c6b(%rip),%edi # 3776b0 <__libc_pthread_functions_init> 0.00 : 54a45: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 54a49: 48 8b 70 40 mov 0x40(%rax),%rsi 0.00 : 54a4d: 48 89 b5 28 fd ff ff mov %rsi,-0x2d8(%rbp) 0.00 : 54a54: 48 8b 40 48 mov 0x48(%rax),%rax 0.00 : 54a58: 48 89 85 30 fd ff ff mov %rax,-0x2d0(%rbp) 0.00 : 54a5f: 80 38 00 cmpb $0x0,(%rax) ??:0 9.09 : 54a62: b8 00 00 00 00 mov $0x0,%eax 0.00 : 54a67: 48 0f 45 85 30 fd ff cmovne -0x2d0(%rbp),%rax 0.00 : 54a6e: ff 0.00 : 54a6f: 85 ff test %edi,%edi 0.00 : 54a71: 89 bd 58 fd ff ff mov %edi,-0x2a8(%rbp) 0.00 : 54a77: 48 89 85 30 fd ff ff mov %rax,-0x2d0(%rbp) 0.00 : 54a7e: 0f 85 08 12 00 00 jne 55c8c <_IO_vfscanf+0x12fc> 0.00 : 54a84: 48 8b 05 bd d4 31 00 mov 0x31d4bd(%rip),%rax # 371f48 <_DYNAMIC+0x3e8> 0.00 : 54a8b: 4c 89 95 48 ff ff ff mov %r10,-0xb8(%rbp) 0.00 : 54a92: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 54a99: 66 85 d2 test %dx,%dx 0.00 : 54a9c: 0f 89 09 06 00 00 jns 550ab <_IO_vfscanf+0x71b> 0.00 : 54aa2: 48 8d 8d 20 fe ff ff lea -0x1e0(%rbp),%rcx 0.00 : 54aa9: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 54aad: 48 8d 95 f0 fe ff ff lea -0x110(%rbp),%rdx 0.00 : 54ab4: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 54abb: 00 0.00 : 54abc: c7 85 00 fd ff ff 00 movl $0x0,-0x300(%rbp) 0.00 : 54ac3: 00 00 00 0.00 : 54ac6: 45 31 ff xor %r15d,%r15d 0.00 : 54ac9: 48 89 8d 40 fc ff ff mov %rcx,-0x3c0(%rbp) 0.00 : 54ad0: 48 81 c1 bb 00 00 00 add $0xbb,%rcx 0.00 : 54ad7: 48 89 85 c8 fc ff ff mov %rax,-0x338(%rbp) 0.00 : 54ade: 48 c7 85 d0 fd ff ff movq $0x0,-0x230(%rbp) 0.00 : 54ae5: 00 00 00 00 0.00 : 54ae9: c7 85 1c fd ff ff 00 movl $0x0,-0x2e4(%rbp) 0.00 : 54af0: 00 00 00 0.00 : 54af3: 45 31 ed xor %r13d,%r13d 0.00 : 54af6: 48 c7 85 38 fd ff ff movq $0x0,-0x2c8(%rbp) 0.00 : 54afd: 00 00 00 00 0.00 : 54b01: 48 c7 85 40 fd ff ff movq $0x0,-0x2c0(%rbp) 0.00 : 54b08: 00 00 00 00 0.00 : 54b0c: 48 c7 85 e0 fd ff ff movq $0x0,-0x220(%rbp) 0.00 : 54b13: 00 00 00 00 0.00 : 54b17: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 54b1e: 00 00 00 00 0.00 : 54b22: 48 c7 85 e8 fd ff ff movq $0x0,-0x218(%rbp) 0.00 : 54b29: 00 00 00 00 0.00 : 54b2d: 48 c7 85 f0 fd ff ff movq $0x0,-0x210(%rbp) 0.00 : 54b34: 00 00 00 00 0.00 : 54b38: 48 c7 85 50 fd ff ff movq $0x0,-0x2b0(%rbp) 0.00 : 54b3f: 00 00 00 00 0.00 : 54b43: 48 89 95 48 fc ff ff mov %rdx,-0x3b8(%rbp) 0.00 : 54b4a: 48 89 8d 38 fc ff ff mov %rcx,-0x3c8(%rbp) 0.00 : 54b51: eb 5d jmp 54bb0 <_IO_vfscanf+0x220> 0.00 : 54b53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54b58: 48 8d 53 01 lea 0x1(%rbx),%rdx 0.00 : 54b5c: 41 80 fc 25 cmp $0x25,%r12b 0.00 : 54b60: 48 89 95 c8 fd ff ff mov %rdx,-0x238(%rbp) 0.00 : 54b67: 0f 84 b3 01 00 00 je 54d20 <_IO_vfscanf+0x390> 0.00 : 54b6d: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54b74: 41 0f b6 d4 movzbl %r12b,%edx 0.00 : 54b78: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 54b7c: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 54b81: 0f 84 e9 00 00 00 je 54c70 <_IO_vfscanf+0x2e0> 0.00 : 54b87: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 54b8e: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 54b95: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 54b9b: 48 8b 9d c8 fd ff ff mov -0x238(%rbp),%rbx 0.00 : 54ba2: 4c 89 9d d0 fd ff ff mov %r11,-0x230(%rbp) 0.00 : 54ba9: 4c 89 a5 e8 fd ff ff mov %r12,-0x218(%rbp) 0.00 : 54bb0: 0f b6 03 movzbl (%rbx),%eax 0.00 : 54bb3: 84 c0 test %al,%al 0.00 : 54bb5: 0f 84 6a 20 00 00 je 56c25 <_IO_vfscanf+0x2295> 0.00 : 54bbb: a8 80 test $0x80,%al 0.00 : 54bbd: 41 89 c4 mov %eax,%r12d 0.00 : 54bc0: 74 96 je 54b58 <_IO_vfscanf+0x1c8> 0.00 : 54bc2: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 54bc9: 48 89 df mov %rbx,%rdi 0.00 : 54bcc: e8 df bf 02 00 callq 80bb0 <__GI_strlen> 0.00 : 54bd1: 48 8b 95 c8 fc ff ff mov -0x338(%rbp),%rdx 0.00 : 54bd8: 48 89 c6 mov %rax,%rsi 0.00 : 54bdb: 48 89 df mov %rbx,%rdi 0.00 : 54bde: e8 8d 81 03 00 callq 8cd70 <__mbrlen> 0.00 : 54be3: 85 c0 test %eax,%eax 0.00 : 54be5: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 54bec: 0f 8e be 0f 00 00 jle 55bb0 <_IO_vfscanf+0x1220> 0.00 : 54bf2: 41 83 c7 01 add $0x1,%r15d 0.00 : 54bf6: 0f 85 79 67 00 00 jne 5b375 <_IO_vfscanf+0x69e5> 0.00 : 54bfc: 48 8b 05 35 d2 31 00 mov 0x31d235(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 54c03: 8b b5 1c fd ff ff mov -0x2e4(%rbp),%esi 0.00 : 54c09: 48 8b 9d c0 fc ff ff mov -0x340(%rbp),%rbx 0.00 : 54c10: 89 34 03 mov %esi,(%rbx,%rax,1) 0.00 : 54c13: 44 8b 85 00 fd ff ff mov -0x300(%rbp),%r8d 0.00 : 54c1a: 45 85 c0 test %r8d,%r8d 0.00 : 54c1d: 0f 85 f6 04 00 00 jne 55119 <_IO_vfscanf+0x789> 0.00 : 54c23: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 54c2a: ff ff ff 0.00 : 54c2d: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 54c32: e9 a9 02 00 00 jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 54c37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54c3e: 00 00 0.00 : 54c40: 83 c0 01 add $0x1,%eax 0.00 : 54c43: 0f 84 da fd ff ff je 54a23 <_IO_vfscanf+0x93> 0.00 : 54c49: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 54c50: ff ff ff 0.00 : 54c53: 8b 85 00 fd ff ff mov -0x300(%rbp),%eax 0.00 : 54c59: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 54c5d: 5b pop %rbx 0.00 : 54c5e: 41 5c pop %r12 0.00 : 54c60: 41 5d pop %r13 0.00 : 54c62: 41 5e pop %r14 0.00 : 54c64: 41 5f pop %r15 0.00 : 54c66: c9 leaveq 0.00 : 54c67: c3 retq 0.00 : 54c68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54c6f: 00 0.00 : 54c70: 41 83 c7 01 add $0x1,%r15d 0.00 : 54c74: 74 86 je 54bfc <_IO_vfscanf+0x26c> 0.00 : 54c76: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 54c7a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 54c7e: 0f 83 d6 3a 00 00 jae 5875a <_IO_vfscanf+0x3dca> 0.00 : 54c84: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 54c88: 48 83 c0 01 add $0x1,%rax 0.00 : 54c8c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 54c90: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 54c97: 49 83 c3 01 add $0x1,%r11 0.00 : 54c9b: 45 85 ed test %r13d,%r13d 0.00 : 54c9e: 74 40 je 54ce0 <_IO_vfscanf+0x350> 0.00 : 54ca0: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54ca7: 49 63 d7 movslq %r15d,%rdx 0.00 : 54caa: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 54cae: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 54cb3: 74 2b je 54ce0 <_IO_vfscanf+0x350> 0.00 : 54cb5: 41 83 c7 01 add $0x1,%r15d 0.00 : 54cb9: 74 45 je 54d00 <_IO_vfscanf+0x370> 0.00 : 54cbb: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 54cbf: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 54cc3: 0f 83 21 22 00 00 jae 56eea <_IO_vfscanf+0x255a> 0.00 : 54cc9: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 54ccd: 48 83 c0 01 add $0x1,%rax 0.00 : 54cd1: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 54cd5: 49 83 c3 01 add $0x1,%r11 0.00 : 54cd9: eb c5 jmp 54ca0 <_IO_vfscanf+0x310> 0.00 : 54cdb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54ce0: 41 0f b6 c4 movzbl %r12b,%eax 0.00 : 54ce4: 44 39 f8 cmp %r15d,%eax 0.00 : 54ce7: 0f 85 87 10 00 00 jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 54ced: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 54cf4: 45 31 ed xor %r13d,%r13d 0.00 : 54cf7: e9 9f fe ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 54cfc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 54d00: 48 8b 05 31 d1 31 00 mov 0x31d131(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 54d07: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 54d0d: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 54d14: 89 14 07 mov %edx,(%rdi,%rax,1) 0.00 : 54d17: e9 f7 fe ff ff jmpq 54c13 <_IO_vfscanf+0x283> 0.00 : 54d1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 54d20: 0f b6 53 01 movzbl 0x1(%rbx),%edx 0.00 : 54d24: c7 85 5c fd ff ff 00 movl $0x0,-0x2a4(%rbp) 0.00 : 54d2b: 00 00 00 0.00 : 54d2e: 0f b6 c2 movzbl %dl,%eax 0.00 : 54d31: 83 e8 30 sub $0x30,%eax 9.09 : 54d34: 83 f8 09 cmp $0x9,%eax 0.00 : 54d37: 0f 87 82 02 00 00 ja 54fbf <_IO_vfscanf+0x62f> 0.00 : 54d3d: 89 85 5c fd ff ff mov %eax,-0x2a4(%rbp) 0.00 : 54d43: 0f b6 73 02 movzbl 0x2(%rbx),%esi 0.00 : 54d47: 48 8d 4b 02 lea 0x2(%rbx),%rcx 0.00 : 54d4b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 54d4f: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 54d52: 83 f8 09 cmp $0x9,%eax 0.00 : 54d55: 77 2f ja 54d86 <_IO_vfscanf+0x3f6> 0.00 : 54d57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54d5e: 00 00 0.00 : 54d60: 8b 9d 5c fd ff ff mov -0x2a4(%rbp),%ebx 0.00 : 54d66: 48 83 c1 01 add $0x1,%rcx 0.00 : 54d6a: 8d 04 9b lea (%rbx,%rbx,4),%eax 0.00 : 54d6d: 8d 44 42 d0 lea -0x30(%rdx,%rax,2),%eax 0.00 : 54d71: 89 85 5c fd ff ff mov %eax,-0x2a4(%rbp) 0.00 : 54d77: 0f b6 31 movzbl (%rcx),%esi 0.00 : 54d7a: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 54d7e: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 54d81: 83 f8 09 cmp $0x9,%eax 0.00 : 54d84: 76 da jbe 54d60 <_IO_vfscanf+0x3d0> 0.00 : 54d86: 40 80 fe 24 cmp $0x24,%sil 0.00 : 54d8a: 49 89 c8 mov %rcx,%r8 0.00 : 54d8d: 0f 84 1d 02 00 00 je 54fb0 <_IO_vfscanf+0x620> 0.00 : 54d93: 8b bd 5c fd ff ff mov -0x2a4(%rbp),%edi 0.00 : 54d99: 89 f1 mov %esi,%ecx 0.00 : 54d9b: c7 85 5c fd ff ff 00 movl $0x0,-0x2a4(%rbp) 0.00 : 54da2: 00 00 00 0.00 : 54da5: c7 85 04 fd ff ff 00 movl $0x0,-0x2fc(%rbp) 0.00 : 54dac: 00 00 00 0.00 : 54daf: 89 bd dc fd ff ff mov %edi,-0x224(%rbp) 0.00 : 54db5: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 54dbb: 85 c0 test %eax,%eax 0.00 : 54dbd: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 54dc2: 0f 45 85 dc fd ff ff cmovne -0x224(%rbp),%eax 0.00 : 54dc9: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 54dcf: 8d 41 b4 lea -0x4c(%rcx),%eax 0.00 : 54dd2: 4d 8d 70 01 lea 0x1(%r8),%r14 0.00 : 54dd6: 3c 2e cmp $0x2e,%al 0.00 : 54dd8: 4c 89 b5 c8 fd ff ff mov %r14,-0x238(%rbp) 0.00 : 54ddf: 0f 86 b3 02 00 00 jbe 55098 <_IO_vfscanf+0x708> 0.00 : 54de5: 89 c8 mov %ecx,%eax 0.00 : 54de7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54dee: 00 00 0.00 : 54df0: 84 c0 test %al,%al 0.00 : 54df2: 0f 84 e0 00 00 00 je 54ed8 <_IO_vfscanf+0x548> 0.00 : 54df8: 4d 8d 70 01 lea 0x1(%r8),%r14 0.00 : 54dfc: 89 c1 mov %eax,%ecx 9.09 : 54dfe: 41 89 cc mov %ecx,%r12d 0.00 : 54e01: 4c 89 b5 c8 fd ff ff mov %r14,-0x238(%rbp) 0.00 : 54e08: 45 85 ed test %r13d,%r13d 0.00 : 54e0b: 75 29 jne 54e36 <_IO_vfscanf+0x4a6> 0.00 : 54e0d: 41 80 fc 5b cmp $0x5b,%r12b 0.00 : 54e11: 0f 84 ad 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e17: 41 80 fc 63 cmp $0x63,%r12b 0.00 : 54e1b: 0f 84 a3 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e21: 41 80 fc 43 cmp $0x43,%r12b 0.00 : 54e25: 0f 84 99 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e2b: 41 80 fc 6e cmp $0x6e,%r12b 0.00 : 54e2f: 90 nop 0.00 : 54e30: 0f 84 8e 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e36: 48 8b 1d fb cf 31 00 mov 0x31cffb(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 54e3d: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 54e44: 44 8b 2c 1e mov (%rsi,%rbx,1),%r13d 0.00 : 54e48: c7 04 1e 00 00 00 00 movl $0x0,(%rsi,%rbx,1) 0.00 : 54e4f: 90 nop 0.00 : 54e50: 41 83 c7 01 add $0x1,%r15d 0.00 : 54e54: 0f 84 55 24 00 00 je 572af <_IO_vfscanf+0x291f> 0.00 : 54e5a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 54e5e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 54e62: 0f 83 15 24 00 00 jae 5727d <_IO_vfscanf+0x28ed> 0.00 : 54e68: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 54e6c: 48 83 c0 01 add $0x1,%rax 0.00 : 54e70: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 54e74: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 54e7b: 01 0.00 : 54e7c: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54e83: 49 63 d7 movslq %r15d,%rdx 0.00 : 54e86: 48 8b 41 68 mov 0x68(%rcx),%rax 9.09 : 54e8a: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 54e8f: 75 bf jne 54e50 <_IO_vfscanf+0x4c0> 0.00 : 54e91: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 54e98: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 54e9c: 44 89 2c 1e mov %r13d,(%rsi,%rbx,1) 0.00 : 54ea0: 74 22 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54ea2: 4c 89 d7 mov %r10,%rdi 0.00 : 54ea5: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 54ea9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 54eb0: 48 83 ad d0 fd ff ff subq $0x1,-0x230(%rbp) 0.00 : 54eb7: 01 0.00 : 54eb8: e8 93 f2 01 00 callq 74150 <_IO_sputbackc> 0.00 : 54ebd: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 54ec4: 41 8d 44 24 db lea -0x25(%r12),%eax 0.00 : 54ec9: 3c 53 cmp $0x53,%al 0.00 : 54ecb: 0f 86 07 03 00 00 jbe 551d8 <_IO_vfscanf+0x848> 0.00 : 54ed1: eb 05 jmp 54ed8 <_IO_vfscanf+0x548> 0.00 : 54ed3: dd d8 fstp %st(0) 0.00 : 54ed5: 0f 1f 00 nopl (%rax) 0.00 : 54ed8: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 54edd: 0f 1f 00 nopl (%rax) 0.00 : 54ee0: 66 41 83 3a 00 cmpw $0x0,(%r10) 0.00 : 54ee5: 78 46 js 54f2d <_IO_vfscanf+0x59d> 0.00 : 54ee7: 49 8b 92 88 00 00 00 mov 0x88(%r10),%rdx 0.00 : 54eee: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 54ef1: 83 e8 01 sub $0x1,%eax 0.00 : 54ef4: 85 c0 test %eax,%eax 0.00 : 54ef6: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 54ef9: 75 32 jne 54f2d <_IO_vfscanf+0x59d> 0.00 : 54efb: 49 8b 82 88 00 00 00 mov 0x88(%r10),%rax 0.00 : 54f02: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 54f09: 00 0.00 : 54f0a: 49 8b 92 88 00 00 00 mov 0x88(%r10),%rdx 0.00 : 54f11: 83 3d 9c 27 32 00 00 cmpl $0x0,0x32279c(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 54f18: 74 0b je 54f25 <_IO_vfscanf+0x595> 0.00 : 54f1a: f0 ff 0a lock decl (%rdx) 0.00 : 54f1d: 0f 85 64 76 00 00 jne 5c587 <_L_unlock_915> 0.00 : 54f23: eb 08 jmp 54f2d <_IO_vfscanf+0x59d> 0.00 : 54f25: ff 0a decl (%rdx) 0.00 : 54f27: 0f 85 5a 76 00 00 jne 5c587 <_L_unlock_915> 0.00 : 54f2d: 8b 95 58 fd ff ff mov -0x2a8(%rbp),%edx 0.00 : 54f33: 85 d2 test %edx,%edx 0.00 : 54f35: 0f 85 2d 0d 00 00 jne 55c68 <_IO_vfscanf+0x12d8> 0.00 : 54f3b: 48 83 bd f0 fc ff ff cmpq $0x0,-0x310(%rbp) 0.00 : 54f42: 00 0.00 : 54f43: 74 09 je 54f4e <_IO_vfscanf+0x5be> 0.00 : 54f45: 48 8b b5 f0 fc ff ff mov -0x310(%rbp),%rsi 0.00 : 54f4c: 09 1e or %ebx,(%rsi) 0.00 : 54f4e: 83 bd 00 fd ff ff ff cmpl $0xffffffff,-0x300(%rbp) 0.00 : 54f55: 0f 85 d9 0c 00 00 jne 55c34 <_IO_vfscanf+0x12a4> 0.00 : 54f5b: 4c 8b a5 38 fd ff ff mov -0x2c8(%rbp),%r12 0.00 : 54f62: 4d 85 e4 test %r12,%r12 0.00 : 54f65: 0f 84 de fc ff ff je 54c49 <_IO_vfscanf+0x2b9> 0.00 : 54f6b: 31 db xor %ebx,%ebx 0.00 : 54f6d: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 54f72: 74 27 je 54f9b <_IO_vfscanf+0x60b> 0.00 : 54f74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 54f78: 49 8b 44 dc 10 mov 0x10(%r12,%rbx,8),%rax 0.00 : 54f7d: 48 8b 38 mov (%rax),%rdi 0.00 : 54f80: e8 1b 99 fc ff callq 1e8a0 0.00 : 54f85: 49 8b 44 dc 10 mov 0x10(%r12,%rbx,8),%rax 0.00 : 54f8a: 48 83 c3 01 add $0x1,%rbx 0.00 : 54f8e: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 54f95: 49 39 1c 24 cmp %rbx,(%r12) 0.00 : 54f99: 77 dd ja 54f78 <_IO_vfscanf+0x5e8> 0.00 : 54f9b: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 54fa0: 4d 85 e4 test %r12,%r12 0.00 : 54fa3: 75 c6 jne 54f6b <_IO_vfscanf+0x5db> 0.00 : 54fa5: e9 9f fc ff ff jmpq 54c49 <_IO_vfscanf+0x2b9> 0.00 : 54faa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54fb0: 48 8d 71 01 lea 0x1(%rcx),%rsi 0.00 : 54fb4: 48 89 b5 c8 fd ff ff mov %rsi,-0x238(%rbp) 0.00 : 54fbb: 0f b6 51 01 movzbl 0x1(%rcx),%edx 0.00 : 54fbf: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 54fc6: c7 85 04 fd ff ff 00 movl $0x0,-0x2fc(%rbp) 0.00 : 54fcd: 00 00 00 0.00 : 54fd0: 48 83 c1 01 add $0x1,%rcx 0.00 : 54fd4: eb 25 jmp 54ffb <_IO_vfscanf+0x66b> 0.00 : 54fd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 54fdd: 00 00 00 0.00 : 54fe0: 80 fa 27 cmp $0x27,%dl 0.00 : 54fe3: 74 1f je 55004 <_IO_vfscanf+0x674> 0.00 : 54fe5: 80 fa 49 cmp $0x49,%dl 0.00 : 54fe8: 75 5e jne 55048 <_IO_vfscanf+0x6b8> 0.00 : 54fea: 81 8d 04 fd ff ff 00 orl $0x400,-0x2fc(%rbp) 0.00 : 54ff1: 04 00 00 0.00 : 54ff4: 0f b6 11 movzbl (%rcx),%edx 0.00 : 54ff7: 48 83 c1 01 add $0x1,%rcx 0.00 : 54ffb: 80 fa 2a cmp $0x2a,%dl 0.00 : 54ffe: 4c 8d 41 ff lea -0x1(%rcx),%r8 0.00 : 55002: 75 dc jne 54fe0 <_IO_vfscanf+0x650> 0.00 : 55004: 80 fa 2a cmp $0x2a,%dl 0.00 : 55007: 74 2f je 55038 <_IO_vfscanf+0x6a8> 0.00 : 55009: 80 fa 49 cmp $0x49,%dl 0.00 : 5500c: 74 dc je 54fea <_IO_vfscanf+0x65a> 0.00 : 5500e: 80 fa 27 cmp $0x27,%dl 0.00 : 55011: 75 e1 jne 54ff4 <_IO_vfscanf+0x664> 0.00 : 55013: 8b 85 04 fd ff ff mov -0x2fc(%rbp),%eax 0.00 : 55019: 0c 80 or $0x80,%al 0.00 : 5501b: 48 83 bd 30 fd ff ff cmpq $0x0,-0x2d0(%rbp) 0.00 : 55022: 00 0.00 : 55023: 0f 44 85 04 fd ff ff cmove -0x2fc(%rbp),%eax 0.00 : 5502a: 89 85 04 fd ff ff mov %eax,-0x2fc(%rbp) 0.00 : 55030: eb c2 jmp 54ff4 <_IO_vfscanf+0x664> 0.00 : 55032: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55038: 83 8d 04 fd ff ff 08 orl $0x8,-0x2fc(%rbp) 0.00 : 5503f: eb b3 jmp 54ff4 <_IO_vfscanf+0x664> 0.00 : 55041: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 55048: 0f b6 d2 movzbl %dl,%edx 0.00 : 5504b: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 5504e: 83 f8 09 cmp $0x9,%eax 0.00 : 55051: 0f 87 39 1f 00 00 ja 56f90 <_IO_vfscanf+0x2600> 0.00 : 55057: c7 85 dc fd ff ff 00 movl $0x0,-0x224(%rbp) 0.00 : 5505e: 00 00 00 0.00 : 55061: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 55068: 8b 8d dc fd ff ff mov -0x224(%rbp),%ecx 0.00 : 5506e: 49 83 c0 01 add $0x1,%r8 0.00 : 55072: 8d 04 89 lea (%rcx,%rcx,4),%eax 0.00 : 55075: 8d 44 42 d0 lea -0x30(%rdx,%rax,2),%eax 0.00 : 55079: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 5507f: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 55083: 0f b6 d1 movzbl %cl,%edx 0.00 : 55086: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 55089: 83 f8 09 cmp $0x9,%eax 0.00 : 5508c: 76 da jbe 55068 <_IO_vfscanf+0x6d8> 0.00 : 5508e: e9 22 fd ff ff jmpq 54db5 <_IO_vfscanf+0x425> 0.00 : 55093: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 55098: 48 8d 15 7d 02 0e 00 lea 0xe027d(%rip),%rdx # 13531c 0.00 : 5509f: 0f b6 c0 movzbl %al,%eax 0.00 : 550a2: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : 550a6: 48 01 d0 add %rdx,%rax 0.00 : 550a9: ff e0 jmpq *%rax 0.00 : 550ab: 4d 8b 8a 88 00 00 00 mov 0x88(%r10),%r9 0.00 : 550b2: 64 4c 8b 24 25 10 00 mov %fs:0x10,%r12 0.00 : 550b9: 00 00 0.00 : 550bb: 4d 3b 61 08 cmp 0x8(%r9),%r12 0.00 : 550bf: 74 3b je 550fc <_IO_vfscanf+0x76c> 0.00 : 550c1: 31 d2 xor %edx,%edx 0.00 : 550c3: be 01 00 00 00 mov $0x1,%esi 0.00 : 550c8: 89 d0 mov %edx,%eax 0.00 : 550ca: 83 3d e3 25 32 00 00 cmpl $0x0,0x3225e3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 550d1: 74 0d je 550e0 <_IO_vfscanf+0x750> 0.00 : 550d3: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 550d8: 0f 85 c4 74 00 00 jne 5c5a2 <_L_lock_1226> 0.00 : 550de: eb 0a jmp 550ea <_IO_vfscanf+0x75a> 0.00 : 550e0: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 550e4: 0f 85 b8 74 00 00 jne 5c5a2 <_L_lock_1226> 0.00 : 550ea: 49 8b 82 88 00 00 00 mov 0x88(%r10),%rax 0.00 : 550f1: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 550f5: 4d 8b 8a 88 00 00 00 mov 0x88(%r10),%r9 0.00 : 550fc: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 55101: e9 9c f9 ff ff jmpq 54aa2 <_IO_vfscanf+0x112> 0.00 : 55106: 83 8d 04 fd ff ff 01 orl $0x1,-0x2fc(%rbp) 0.00 : 5510d: 4d 89 f0 mov %r14,%r8 0.00 : 55110: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55114: e9 d7 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55119: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5511e: e9 bd fd ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 55123: 81 8d 04 fd ff ff 00 orl $0x2000,-0x2fc(%rbp) 0.00 : 5512a: 20 00 00 0.00 : 5512d: 4d 89 f0 mov %r14,%r8 0.00 : 55130: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55134: 3c 6c cmp $0x6c,%al 0.00 : 55136: 0f 85 b4 fc ff ff jne 54df0 <_IO_vfscanf+0x460> 0.00 : 5513c: 83 8d 04 fd ff ff 01 orl $0x1,-0x2fc(%rbp) 0.00 : 55143: 4d 8d 46 01 lea 0x1(%r14),%r8 0.00 : 55147: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 5514c: e9 9f fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 9.09 : 55151: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55155: 3c 6c cmp $0x6c,%al 0.00 : 55157: 0f 84 1a 0e 00 00 je 55f77 <_IO_vfscanf+0x15e7> 0.00 : 5515d: 83 8d 04 fd ff ff 01 orl $0x1,-0x2fc(%rbp) 0.00 : 55164: 4d 89 f0 mov %r14,%r8 0.00 : 55167: e9 84 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 5516c: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55170: 3c 68 cmp $0x68,%al 0.00 : 55172: 0f 84 e7 0d 00 00 je 55f5f <_IO_vfscanf+0x15cf> 0.00 : 55178: 83 8d 04 fd ff ff 04 orl $0x4,-0x2fc(%rbp) 0.00 : 5517f: 4d 89 f0 mov %r14,%r8 0.00 : 55182: e9 69 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55187: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 5518b: 3c 73 cmp $0x73,%al 0.00 : 5518d: 74 12 je 551a1 <_IO_vfscanf+0x811> 0.00 : 5518f: 3c 53 cmp $0x53,%al 0.00 : 55191: 74 0e je 551a1 <_IO_vfscanf+0x811> 0.00 : 55193: 3c 5b cmp $0x5b,%al 0.00 : 55195: 41 bc 61 00 00 00 mov $0x61,%r12d 0.00 : 5519b: 0f 85 67 fc ff ff jne 54e08 <_IO_vfscanf+0x478> 0.00 : 551a1: 41 f6 42 74 10 testb $0x10,0x74(%r10) 0.00 : 551a6: 0f 85 52 fc ff ff jne 54dfe <_IO_vfscanf+0x46e> 0.00 : 551ac: 81 8d 04 fd ff ff 00 orl $0x100,-0x2fc(%rbp) 0.00 : 551b3: 01 00 00 0.00 : 551b6: 4d 89 f0 mov %r14,%r8 0.00 : 551b9: e9 32 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 551be: 83 8d 04 fd ff ff 03 orl $0x3,-0x2fc(%rbp) 0.00 : 551c5: 4d 89 f0 mov %r14,%r8 0.00 : 551c8: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 551cc: e9 1f fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 551d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 551d8: 48 8d 15 f9 01 0e 00 lea 0xe01f9(%rip),%rdx # 1353d8 0.00 : 551df: 0f b6 c0 movzbl %al,%eax 0.00 : 551e2: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : 551e6: 48 01 d0 add %rdx,%rax 0.00 : 551e9: ff e0 jmpq *%rax 0.00 : 551eb: 83 8d 04 fd ff ff 40 orl $0x40,-0x2fc(%rbp) 0.00 : 551f2: c7 85 24 fd ff ff 0a movl $0xa,-0x2dc(%rbp) 0.00 : 551f9: 00 00 00 0.00 : 551fc: 41 83 c7 01 add $0x1,%r15d 0.00 : 55200: 0f 84 12 0a 00 00 je 55c18 <_IO_vfscanf+0x1288> 0.00 : 55206: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5520a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5520e: 0f 83 13 49 00 00 jae 59b27 <_IO_vfscanf+0x5197> 0.00 : 55214: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 55218: 48 83 c0 01 add $0x1,%rax 0.00 : 5521c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55220: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 55227: 49 83 c3 01 add $0x1,%r11 0.00 : 5522b: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 5522f: 0f 84 d6 0a 00 00 je 55d0b <_IO_vfscanf+0x137b> 0.00 : 55235: 45 31 c9 xor %r9d,%r9d 0.00 : 55238: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 5523c: 0f 84 c9 0a 00 00 je 55d0b <_IO_vfscanf+0x137b> 0.00 : 55242: 44 8b a5 dc fd ff ff mov -0x224(%rbp),%r12d 0.00 : 55249: 45 85 e4 test %r12d,%r12d 0.00 : 5524c: 74 0a je 55258 <_IO_vfscanf+0x8c8> 0.00 : 5524e: 41 83 ff 30 cmp $0x30,%r15d 0.00 : 55252: 0f 84 b8 01 00 00 je 55410 <_IO_vfscanf+0xa80> 0.00 : 55258: 8b b5 24 fd ff ff mov -0x2dc(%rbp),%esi 0.00 : 5525e: 85 f6 test %esi,%esi 0.00 : 55260: 0f 85 3b 02 00 00 jne 554a1 <_IO_vfscanf+0xb11> 0.00 : 55266: c7 85 24 fd ff ff 0a movl $0xa,-0x2dc(%rbp) 0.00 : 5526d: 00 00 00 0.00 : 55270: f7 85 04 fd ff ff 00 testl $0x400,-0x2fc(%rbp) 0.00 : 55277: 04 00 00 0.00 : 5527a: 0f 85 4c 50 00 00 jne 5a2cc <_IO_vfscanf+0x593c> 0.00 : 55280: 0f b6 95 04 fd ff ff movzbl -0x2fc(%rbp),%edx 0.00 : 55287: 4d 89 d8 mov %r11,%r8 0.00 : 5528a: 45 89 fd mov %r15d,%r13d 0.00 : 5528d: 83 e2 80 and $0xffffff80,%edx 0.00 : 55290: 88 95 8b fc ff ff mov %dl,-0x375(%rbp) 0.00 : 55296: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5529d: 00 00 00 0.00 : 552a0: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 552a4: 74 0e je 552b4 <_IO_vfscanf+0x924> 0.00 : 552a6: 8b bd dc fd ff ff mov -0x224(%rbp),%edi 0.00 : 552ac: 85 ff test %edi,%edi 0.00 : 552ae: 0f 85 b4 04 00 00 jne 55768 <_IO_vfscanf+0xdd8> 0.00 : 552b4: 4d 89 c3 mov %r8,%r11 0.00 : 552b7: 45 89 ef mov %r13d,%r15d 0.00 : 552ba: 4c 89 cb mov %r9,%rbx 0.00 : 552bd: 48 85 db test %rbx,%rbx 0.00 : 552c0: 0f 84 98 0a 00 00 je 55d5e <_IO_vfscanf+0x13ce> 0.00 : 552c6: 48 83 fb 01 cmp $0x1,%rbx 0.00 : 552ca: 0f 84 be 19 00 00 je 56c8e <_IO_vfscanf+0x22fe> 0.00 : 552d0: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 552d4: 74 2c je 55302 <_IO_vfscanf+0x972> 0.00 : 552d6: 49 83 eb 01 sub $0x1,%r11 0.00 : 552da: 4c 89 d7 mov %r10,%rdi 0.00 : 552dd: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 552e1: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 552e8: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 552ef: e8 5c ee 01 00 callq 74150 <_IO_sputbackc> 0.00 : 552f4: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 552fb: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55302: 48 3b 9d 50 fd ff ff cmp -0x2b0(%rbp),%rbx 0.00 : 55309: 4c 8b ad f0 fd ff ff mov -0x210(%rbp),%r13 0.00 : 55310: 0f 84 0a 1c 00 00 je 56f20 <_IO_vfscanf+0x2590> 0.00 : 55316: 41 c6 44 1d 00 00 movb $0x0,0x0(%r13,%rbx,1) 0.00 : 5531c: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 55322: 83 e3 40 and $0x40,%ebx 0.00 : 55325: 0f 84 9e 09 00 00 je 55cc9 <_IO_vfscanf+0x1339> 0.00 : 5532b: 8b 8d 04 fd ff ff mov -0x2fc(%rbp),%ecx 0.00 : 55331: 8b 95 24 fd ff ff mov -0x2dc(%rbp),%edx 0.00 : 55337: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 5533b: 4c 89 ef mov %r13,%rdi 0.00 : 5533e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55345: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5534c: 81 e1 80 00 00 00 and $0x80,%ecx 0.00 : 55352: e8 69 17 fe ff callq 36ac0 <__strtol_internal> 0.00 : 55357: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5535e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55365: 48 89 c1 mov %rax,%rcx 0.00 : 55368: 4c 3b 6d b8 cmp -0x48(%rbp),%r13 0.00 : 5536c: 0f 84 66 fb ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55372: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 55379: 0f 85 83 08 00 00 jne 55c02 <_IO_vfscanf+0x1272> 0.00 : 5537f: 85 db test %ebx,%ebx 0.00 : 55381: 0f 84 32 08 00 00 je 55bb9 <_IO_vfscanf+0x1229> 0.00 : 55387: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 5538e: 0f 84 50 1d 00 00 je 570e4 <_IO_vfscanf+0x2754> 0.00 : 55394: 8b b5 5c fd ff ff mov -0x2a4(%rbp),%esi 0.00 : 5539a: 85 f6 test %esi,%esi 0.00 : 5539c: 0f 84 32 08 00 00 je 55bd4 <_IO_vfscanf+0x1244> 0.00 : 553a2: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 553a9: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 553b0: 48 8b 02 mov (%rdx),%rax 0.00 : 553b3: 48 89 03 mov %rax,(%rbx) 0.00 : 553b6: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 553bd: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 553c1: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 553c5: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 553c9: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 553cd: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 553d3: 83 ea 01 sub $0x1,%edx 0.00 : 553d6: 74 17 je 553ef <_IO_vfscanf+0xa5f> 0.00 : 553d8: 83 f8 30 cmp $0x30,%eax 0.00 : 553db: 0f 83 f0 1a 00 00 jae 56ed1 <_IO_vfscanf+0x2541> 0.00 : 553e1: 83 c0 08 add $0x8,%eax 0.00 : 553e4: 83 ea 01 sub $0x1,%edx 0.00 : 553e7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 553ed: 75 e9 jne 553d8 <_IO_vfscanf+0xa48> 0.00 : 553ef: 83 f8 30 cmp $0x30,%eax 0.00 : 553f2: 0f 83 f2 2c 00 00 jae 580ea <_IO_vfscanf+0x375a> 0.00 : 553f8: 89 c2 mov %eax,%edx 0.00 : 553fa: 83 c0 08 add $0x8,%eax 0.00 : 553fd: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 55404: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5540a: e9 e6 07 00 00 jmpq 55bf5 <_IO_vfscanf+0x1265> 0.00 : 5540f: 90 nop 0.00 : 55410: 31 c0 xor %eax,%eax 0.00 : 55412: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 55419: 4c 8b a5 f0 fd ff ff mov -0x210(%rbp),%r12 0.00 : 55420: 0f 9f c0 setg %al 0.00 : 55423: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 55429: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 55430: 0f 84 b8 20 00 00 je 574ee <_IO_vfscanf+0x2b5e> 0.00 : 55436: 43 c6 04 0c 30 movb $0x30,(%r12,%r9,1) 0.00 : 5543b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5543f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55443: 0f 83 20 4e 00 00 jae 5a269 <_IO_vfscanf+0x58d9> 0.00 : 55449: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5544d: 48 83 c0 01 add $0x1,%rax 0.00 : 55451: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55455: 49 83 c3 01 add $0x1,%r11 0.00 : 55459: 8b 9d dc fd ff ff mov -0x224(%rbp),%ebx 0.00 : 5545f: 85 db test %ebx,%ebx 0.00 : 55461: 74 19 je 5547c <_IO_vfscanf+0xaec> 0.00 : 55463: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 5546a: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5546e: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 55472: 83 3c 90 78 cmpl $0x78,(%rax,%rdx,4) 0.00 : 55476: 0f 84 eb 21 00 00 je 57667 <_IO_vfscanf+0x2cd7> 0.00 : 5547c: 8b bd 24 fd ff ff mov -0x2dc(%rbp),%edi 0.00 : 55482: b8 08 00 00 00 mov $0x8,%eax 0.00 : 55487: 85 ff test %edi,%edi 0.00 : 55489: 0f 45 85 24 fd ff ff cmovne -0x2dc(%rbp),%eax 0.00 : 55490: 89 85 24 fd ff ff mov %eax,-0x2dc(%rbp) 0.00 : 55496: 49 83 c1 01 add $0x1,%r9 0.00 : 5549a: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 554a1: 83 bd 24 fd ff ff 0a cmpl $0xa,-0x2dc(%rbp) 0.00 : 554a8: 0f 85 d2 fd ff ff jne 55280 <_IO_vfscanf+0x8f0> 0.00 : 554ae: e9 bd fd ff ff jmpq 55270 <_IO_vfscanf+0x8e0> 0.00 : 554b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 554b8: 83 a5 04 fd ff ff f9 andl $0xfffffff9,-0x2fc(%rbp) 0.00 : 554bf: 81 8d 04 fd ff ff 01 orl $0x1001,-0x2fc(%rbp) 0.00 : 554c6: 10 00 00 0.00 : 554c9: c7 85 24 fd ff ff 10 movl $0x10,-0x2dc(%rbp) 0.00 : 554d0: 00 00 00 0.00 : 554d3: e9 24 fd ff ff jmpq 551fc <_IO_vfscanf+0x86c> 0.00 : 554d8: 44 8b b5 04 fd ff ff mov -0x2fc(%rbp),%r14d 0.00 : 554df: 41 83 e6 08 and $0x8,%r14d 0.00 : 554e3: 0f 84 a6 09 00 00 je 55e8f <_IO_vfscanf+0x14ff> 0.00 : 554e9: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 554f0: 41 83 c7 01 add $0x1,%r15d 0.00 : 554f4: 0f 84 1e 07 00 00 je 55c18 <_IO_vfscanf+0x1288> 0.00 : 554fa: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 554fe: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55502: 0f 83 75 5b 00 00 jae 5b07d <_IO_vfscanf+0x66ed> 0.00 : 55508: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5550c: 48 83 c0 01 add $0x1,%rax 0.00 : 55510: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55514: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 5551a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 55521: 4c 8d 6d 80 lea -0x80(%rbp),%r13 0.00 : 55525: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 5552c: 00 0.00 : 5552d: 81 e3 00 21 00 00 and $0x2100,%ebx 0.00 : 55533: 49 83 c3 01 add $0x1,%r11 0.00 : 55537: 89 9d 8c fc ff ff mov %ebx,-0x374(%rbp) 0.00 : 5553d: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 55544: 49 63 d7 movslq %r15d,%rdx 0.00 : 55547: 48 8b 46 68 mov 0x68(%rsi),%rax 0.00 : 5554b: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 55550: 0f 85 c1 36 00 00 jne 58c17 <_IO_vfscanf+0x4287> 0.00 : 55556: 44 88 bd f0 fe ff ff mov %r15b,-0x110(%rbp) 0.00 : 5555d: 44 89 fb mov %r15d,%ebx 0.00 : 55560: 45 85 f6 test %r14d,%r14d 0.00 : 55563: bf 00 00 00 00 mov $0x0,%edi 0.00 : 55568: 48 0f 44 bd e0 fd ff cmove -0x220(%rbp),%rdi 0.00 : 5556f: ff 0.00 : 55570: 48 8b b5 48 fc ff ff mov -0x3b8(%rbp),%rsi 0.00 : 55577: 4c 89 e9 mov %r13,%rcx 0.00 : 5557a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5557f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55586: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5558d: e8 fe 77 03 00 callq 8cd90 <__mbrtowc> 0.00 : 55592: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 55596: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5559d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 555a4: 0f 85 c2 13 00 00 jne 5696c <_IO_vfscanf+0x1fdc> 0.00 : 555aa: 83 c3 01 add $0x1,%ebx 0.00 : 555ad: 0f 85 2d 13 00 00 jne 568e0 <_IO_vfscanf+0x1f50> 0.00 : 555b3: 48 8b 1d 7e c8 31 00 mov 0x31c87e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 555ba: 8b 85 1c fd ff ff mov -0x2e4(%rbp),%eax 0.00 : 555c0: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 555c7: 89 04 1f mov %eax,(%rdi,%rbx,1) 0.00 : 555ca: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 555d1: c7 04 1a 54 00 00 00 movl $0x54,(%rdx,%rbx,1) 0.00 : 555d8: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 555dd: e9 fe f8 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 555e2: 83 bd dc fd ff ff ff cmpl $0xffffffff,-0x224(%rbp) 0.00 : 555e9: b8 01 00 00 00 mov $0x1,%eax 0.00 : 555ee: 44 8b ad 04 fd ff ff mov -0x2fc(%rbp),%r13d 0.00 : 555f5: 0f 45 85 dc fd ff ff cmovne -0x224(%rbp),%eax 0.00 : 555fc: 41 83 e5 08 and $0x8,%r13d 0.00 : 55600: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 55606: 0f 84 96 07 00 00 je 55da2 <_IO_vfscanf+0x1412> 0.00 : 5560c: 41 83 c7 01 add $0x1,%r15d 0.00 : 55610: 0f 84 02 06 00 00 je 55c18 <_IO_vfscanf+0x1288> 0.00 : 55616: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5561a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5561e: 0f 83 43 4b 00 00 jae 5a167 <_IO_vfscanf+0x57d7> 0.00 : 55624: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 55628: 48 83 c0 01 add $0x1,%rax 0.00 : 5562c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55630: 48 8b 9d 40 fc ff ff mov -0x3c0(%rbp),%rbx 0.00 : 55637: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5563e: 45 31 f6 xor %r14d,%r14d 0.00 : 55641: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 0.00 : 55648: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5564e: 49 83 c3 01 add $0x1,%r11 0.00 : 55652: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 55658: 48 63 bd dc fd ff ff movslq -0x224(%rbp),%rdi 0.00 : 5565f: 48 c7 85 a8 fd ff ff movq $0x0,-0x258(%rbp) 0.00 : 55666: 00 00 00 00 0.00 : 5566a: 83 e8 01 sub $0x1,%eax 0.00 : 5566d: 81 e6 00 21 00 00 and $0x2100,%esi 0.00 : 55673: 48 63 d0 movslq %eax,%rdx 0.00 : 55676: 89 85 9c fc ff ff mov %eax,-0x364(%rbp) 0.00 : 5567c: 89 b5 a8 fc ff ff mov %esi,-0x358(%rbp) 0.00 : 55682: 48 89 bd a0 fc ff ff mov %rdi,-0x360(%rbp) 0.00 : 55689: 48 89 95 90 fc ff ff mov %rdx,-0x370(%rbp) 0.00 : 55690: 45 85 ed test %r13d,%r13d 0.00 : 55693: 44 88 bd f0 fe ff ff mov %r15b,-0x110(%rbp) 0.00 : 5569a: 75 30 jne 556cc <_IO_vfscanf+0xd3c> 0.00 : 5569c: 8b b5 a8 fc ff ff mov -0x358(%rbp),%esi 0.00 : 556a2: 85 f6 test %esi,%esi 0.00 : 556a4: 74 26 je 556cc <_IO_vfscanf+0xd3c> 0.00 : 556a6: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 556ad: 48 8b 9d e8 fd ff ff mov -0x218(%rbp),%rbx 0.00 : 556b4: 48 8b 39 mov (%rcx),%rdi 0.00 : 556b7: 48 c1 e3 02 shl $0x2,%rbx 0.00 : 556bb: 48 8d 04 1f lea (%rdi,%rbx,1),%rax 0.00 : 556bf: 48 39 85 e0 fd ff ff cmp %rax,-0x220(%rbp) 0.00 : 556c6: 0f 84 19 2e 00 00 je 584e5 <_IO_vfscanf+0x3b55> 0.00 : 556cc: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 556d3: 44 89 fb mov %r15d,%ebx 0.00 : 556d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 556dd: 00 00 00 0.00 : 556e0: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 556e7: 48 8b 8d 40 fc ff ff mov -0x3c0(%rbp),%rcx 0.00 : 556ee: 45 85 ed test %r13d,%r13d 0.00 : 556f1: 48 8b b5 48 fc ff ff mov -0x3b8(%rbp),%rsi 0.00 : 556f8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 556fd: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55704: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5570b: 49 0f 45 fe cmovne %r14,%rdi 0.00 : 5570f: e8 7c 76 03 00 callq 8cd90 <__mbrtowc> 0.00 : 55714: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 55718: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5571f: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55726: 0f 85 dc 11 00 00 jne 56908 <_IO_vfscanf+0x1f78> 0.00 : 5572c: 83 c3 01 add $0x1,%ebx 0.00 : 5572f: 0f 85 7b 11 00 00 jne 568b0 <_IO_vfscanf+0x1f20> 0.00 : 55735: 48 8b 1d fc c6 31 00 mov 0x31c6fc(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5573c: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 55742: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 55749: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5574c: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 55753: c7 04 18 54 00 00 00 movl $0x54,(%rax,%rbx,1) 0.00 : 5575a: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 5575f: e9 7c f7 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 55764: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55768: 83 bd 24 fd ff ff 10 cmpl $0x10,-0x2dc(%rbp) 0.00 : 5576f: 0f 84 83 01 00 00 je 558f8 <_IO_vfscanf+0xf68> 0.00 : 55775: 41 8d 45 d0 lea -0x30(%r13),%eax 0.00 : 55779: 83 f8 09 cmp $0x9,%eax 0.00 : 5577c: 77 13 ja 55791 <_IO_vfscanf+0xe01> 0.00 : 5577e: 41 8d 45 d1 lea -0x2f(%r13),%eax 0.00 : 55782: 3b 85 24 fd ff ff cmp -0x2dc(%rbp),%eax 0.00 : 55788: 44 89 eb mov %r13d,%ebx 0.00 : 5578b: 0f 8e 83 01 00 00 jle 55914 <_IO_vfscanf+0xf84> 0.00 : 55791: 83 bd 24 fd ff ff 0a cmpl $0xa,-0x2dc(%rbp) 0.00 : 55798: 0f 85 16 fb ff ff jne 552b4 <_IO_vfscanf+0x924> 0.00 : 5579e: 80 bd 8b fc ff ff 00 cmpb $0x0,-0x375(%rbp) 0.00 : 557a5: 0f 84 09 fb ff ff je 552b4 <_IO_vfscanf+0x924> 0.00 : 557ab: 48 8b 9d 30 fd ff ff mov -0x2d0(%rbp),%rbx 0.00 : 557b2: 44 8b 9d dc fd ff ff mov -0x224(%rbp),%r11d 0.00 : 557b9: 41 bf ff ff ff 7f mov $0x7fffffff,%r15d 0.00 : 557bf: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 557c2: 45 85 db test %r11d,%r11d 0.00 : 557c5: 44 0f 4f bd dc fd ff cmovg -0x224(%rbp),%r15d 0.00 : 557cc: ff 0.00 : 557cd: 0f b6 c1 movzbl %cl,%eax 0.00 : 557d0: 41 39 c5 cmp %eax,%r13d 0.00 : 557d3: 0f 85 05 17 00 00 jne 56ede <_IO_vfscanf+0x254e> 0.00 : 557d9: 49 83 c0 01 add $0x1,%r8 0.00 : 557dd: 4f 8d 34 09 lea (%r9,%r9,1),%r14 0.00 : 557e1: 49 89 dc mov %rbx,%r12 0.00 : 557e4: eb 6e jmp 55854 <_IO_vfscanf+0xec4> 0.00 : 557e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 557ed: 00 00 00 0.00 : 557f0: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 557f7: 49 83 c4 01 add $0x1,%r12 0.00 : 557fb: 44 89 eb mov %r13d,%ebx 0.00 : 557fe: 46 88 2c 0f mov %r13b,(%rdi,%r9,1) 0.00 : 55802: 49 83 c1 01 add $0x1,%r9 0.00 : 55806: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5580b: 0f 84 d7 01 00 00 je 559e8 <_IO_vfscanf+0x1058> 0.00 : 55811: 45 85 ff test %r15d,%r15d 0.00 : 55814: 0f 84 b6 02 00 00 je 55ad0 <_IO_vfscanf+0x1140> 0.00 : 5581a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5581e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55822: 0f 83 47 01 00 00 jae 5596f <_IO_vfscanf+0xfdf> 0.00 : 55828: 44 0f b6 28 movzbl (%rax),%r13d 0.00 : 5582c: 48 83 c0 01 add $0x1,%rax 0.00 : 55830: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55834: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 55839: 41 83 ef 01 sub $0x1,%r15d 0.00 : 5583d: 49 83 c6 02 add $0x2,%r14 0.00 : 55841: 49 8d 50 01 lea 0x1(%r8),%rdx 0.00 : 55845: 0f b6 c1 movzbl %cl,%eax 0.00 : 55848: 44 39 e8 cmp %r13d,%eax 0.00 : 5584b: 0f 85 89 01 00 00 jne 559da <_IO_vfscanf+0x104a> 0.00 : 55851: 49 89 d0 mov %rdx,%r8 0.00 : 55854: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5585b: 4d 8d 58 ff lea -0x1(%r8),%r11 0.00 : 5585f: 75 8f jne 557f0 <_IO_vfscanf+0xe60> 0.00 : 55861: 49 81 fe 00 01 00 00 cmp $0x100,%r14 0.00 : 55868: be 00 01 00 00 mov $0x100,%esi 0.00 : 5586d: 49 0f 43 f6 cmovae %r14,%rsi 0.00 : 55871: 48 89 f0 mov %rsi,%rax 0.00 : 55874: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 5587b: 48 83 c0 1e add $0x1e,%rax 0.00 : 5587f: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 55883: 48 29 c4 sub %rax,%rsp 0.00 : 55886: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5588b: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5588f: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 55896: 00 0.00 : 55897: 0f 84 9b 01 00 00 je 55a38 <_IO_vfscanf+0x10a8> 0.00 : 5589d: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 558a4: 4c 89 ca mov %r9,%rdx 0.00 : 558a7: 48 89 df mov %rbx,%rdi 0.00 : 558aa: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 558b1: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 558b8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 558bf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 558c6: e8 85 ee 02 00 callq 84750 0.00 : 558cb: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 558d2: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 558d9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 558e0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 558e7: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 558ee: e9 fd fe ff ff jmpq 557f0 <_IO_vfscanf+0xe60> 0.00 : 558f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 558f8: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 558ff: 49 63 d5 movslq %r13d,%rdx 0.00 : 55902: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 55906: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 5590b: 0f 84 a3 f9 ff ff je 552b4 <_IO_vfscanf+0x924> 0.00 : 55911: 44 89 eb mov %r13d,%ebx 0.00 : 55914: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5591b: 4c 8b a5 f0 fd ff ff mov -0x210(%rbp),%r12 0.00 : 55922: 0f 84 20 01 00 00 je 55a48 <_IO_vfscanf+0x10b8> 0.00 : 55928: 43 88 1c 0c mov %bl,(%r12,%r9,1) 0.00 : 5592c: 31 c0 xor %eax,%eax 0.00 : 5592e: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 55935: 0f 9f c0 setg %al 0.00 : 55938: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 9.09 : 5593e: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 55942: 0f 85 c8 00 00 00 jne 55a10 <_IO_vfscanf+0x1080> 0.00 : 55948: 48 8b 1d e9 c4 31 00 mov 0x31c4e9(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5594f: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 55955: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5595c: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5595f: 49 83 c1 01 add $0x1,%r9 0.00 : 55963: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5596a: e9 31 f9 ff ff jmpq 552a0 <_IO_vfscanf+0x910> 0.00 : 5596f: 4c 89 d7 mov %r10,%rdi 0.00 : 55972: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 55979: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55980: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55987: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5598e: e8 6d f8 01 00 callq 75200 <__uflow> 0.00 : 55993: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 55996: 41 89 c5 mov %eax,%r13d 0.00 : 55999: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 559a0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 559a7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 559ae: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 559b5: 0f 85 79 fe ff ff jne 55834 <_IO_vfscanf+0xea4> 0.00 : 559bb: 48 8b 1d 76 c4 31 00 mov 0x31c476(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 559c2: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 559c9: 4d 89 d8 mov %r11,%r8 0.00 : 559cc: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 559cf: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 559d5: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 559da: 84 c9 test %cl,%cl 0.00 : 559dc: 0f 85 ac 47 00 00 jne 5a18e <_IO_vfscanf+0x57fe> 0.00 : 559e2: 44 89 eb mov %r13d,%ebx 0.00 : 559e5: 4d 89 c3 mov %r8,%r11 0.00 : 559e8: 44 8b 85 dc fd ff ff mov -0x224(%rbp),%r8d 0.00 : 559ef: 45 85 c0 test %r8d,%r8d 0.00 : 559f2: 44 0f 4e bd dc fd ff cmovle -0x224(%rbp),%r15d 0.00 : 559f9: ff 0.00 : 559fa: 4d 89 d8 mov %r11,%r8 0.00 : 559fd: 49 83 e9 01 sub $0x1,%r9 0.00 : 55a01: 44 89 bd dc fd ff ff mov %r15d,-0x224(%rbp) 0.00 : 55a08: e9 07 ff ff ff jmpq 55914 <_IO_vfscanf+0xf84> 0.00 : 55a0d: 0f 1f 00 nopl (%rax) 0.00 : 55a10: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 55a14: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55a18: 0f 83 24 1f 00 00 jae 57942 <_IO_vfscanf+0x2fb2> 0.00 : 55a1e: 44 0f b6 28 movzbl (%rax),%r13d 0.00 : 55a22: 48 83 c0 01 add $0x1,%rax 0.00 : 55a26: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55a2a: 49 83 c0 01 add $0x1,%r8 0.00 : 55a2e: e9 2c ff ff ff jmpq 5595f <_IO_vfscanf+0xfcf> 0.00 : 55a33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 55a38: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 55a3f: e9 ac fd ff ff jmpq 557f0 <_IO_vfscanf+0xe60> 0.00 : 55a44: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55a48: 4b 8d 14 09 lea (%r9,%r9,1),%rdx 0.00 : 55a4c: b9 00 01 00 00 mov $0x100,%ecx 0.00 : 55a51: 48 81 fa 00 01 00 00 cmp $0x100,%rdx 0.00 : 55a58: 48 0f 43 ca cmovae %rdx,%rcx 0.00 : 55a5c: 48 89 c8 mov %rcx,%rax 0.00 : 55a5f: 48 89 8d 50 fd ff ff mov %rcx,-0x2b0(%rbp) 0.00 : 55a66: 48 83 c0 1e add $0x1e,%rax 0.00 : 55a6a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 55a6e: 48 29 c4 sub %rax,%rsp 0.00 : 55a71: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 55a76: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 55a7a: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 55a81: 00 0.00 : 55a82: 0f 84 a0 fe ff ff je 55928 <_IO_vfscanf+0xf98> 0.00 : 55a88: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 55a8f: 4c 89 ca mov %r9,%rdx 0.00 : 55a92: 4c 89 e7 mov %r12,%rdi 0.00 : 55a95: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 55a9c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55aa3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55aaa: e8 a1 ec 02 00 callq 84750 0.00 : 55aaf: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55ab6: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 55abd: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 55ac4: e9 5f fe ff ff jmpq 55928 <_IO_vfscanf+0xf98> 0.00 : 55ac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 55ad0: 4d 89 d8 mov %r11,%r8 0.00 : 55ad3: 45 89 ef mov %r13d,%r15d 0.00 : 55ad6: 4c 89 cb mov %r9,%rbx 0.00 : 55ad9: 4c 39 a5 30 fd ff ff cmp %r12,-0x2d0(%rbp) 0.00 : 55ae0: 0f 83 d7 f7 ff ff jae 552bd <_IO_vfscanf+0x92d> 0.00 : 55ae6: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 55aea: 74 3a je 55b26 <_IO_vfscanf+0x1196> 0.00 : 55aec: 4d 8d 58 ff lea -0x1(%r8),%r11 0.00 : 55af0: 4c 89 d7 mov %r10,%rdi 0.00 : 55af3: 41 0f b6 f5 movzbl %r13b,%esi 0.00 : 55af7: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55afe: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55b05: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 55b0c: e8 3f e6 01 00 callq 74150 <_IO_sputbackc> 0.00 : 55b11: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55b18: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55b1f: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 55b26: 4d 8d 6c 24 ff lea -0x1(%r12),%r13 0.00 : 55b2b: 4c 39 ad 30 fd ff ff cmp %r13,-0x2d0(%rbp) 0.00 : 55b32: 73 5e jae 55b92 <_IO_vfscanf+0x1202> 0.00 : 55b34: 4c 89 eb mov %r13,%rbx 0.00 : 55b37: 0f b6 33 movzbl (%rbx),%esi 0.00 : 55b3a: 4c 89 d7 mov %r10,%rdi 0.00 : 55b3d: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55b44: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55b4b: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 55b52: 48 83 eb 01 sub $0x1,%rbx 0.00 : 55b56: e8 f5 e5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 55b5b: 48 39 9d 30 fd ff ff cmp %rbx,-0x2d0(%rbp) 0.00 : 55b62: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 55b69: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55b70: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55b77: 72 be jb 55b37 <_IO_vfscanf+0x11a7> 0.00 : 55b79: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 55b80: 49 8d 54 24 fe lea -0x2(%r12),%rdx 0.00 : 55b85: 48 83 e8 01 sub $0x1,%rax 0.00 : 55b89: 48 29 d0 sub %rdx,%rax 0.00 : 55b8c: 49 01 c3 add %rax,%r11 0.00 : 55b8f: 49 01 c5 add %rax,%r13 0.00 : 55b92: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 55b99: 45 0f b6 7d 00 movzbl 0x0(%r13),%r15d 0.00 : 55b9e: 4c 29 e0 sub %r12,%rax 0.00 : 55ba1: 4a 8d 1c 08 lea (%rax,%r9,1),%rbx 0.00 : 55ba5: e9 13 f7 ff ff jmpq 552bd <_IO_vfscanf+0x92d> 0.00 : 55baa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55bb0: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 55bb4: e9 9f ef ff ff jmpq 54b58 <_IO_vfscanf+0x1c8> 0.00 : 55bb9: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 55bc0: 0f 84 d7 14 00 00 je 5709d <_IO_vfscanf+0x270d> 0.00 : 55bc6: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 55bcc: 85 c0 test %eax,%eax 0.00 : 55bce: 0f 85 b7 24 00 00 jne 5808b <_IO_vfscanf+0x36fb> 0.00 : 55bd4: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55bda: 83 f8 30 cmp $0x30,%eax 0.00 : 55bdd: 0f 83 ec 18 00 00 jae 574cf <_IO_vfscanf+0x2b3f> 9.09 : 55be3: 89 c2 mov %eax,%edx 0.00 : 55be5: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55bec: 83 c0 08 add $0x8,%eax 0.00 : 55bef: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55bf5: 48 8b 02 mov (%rdx),%rax 0.00 : 55bf8: 48 89 08 mov %rcx,(%rax) 0.00 : 55bfb: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 55c02: 4c 89 ad f0 fd ff ff mov %r13,-0x210(%rbp) 0.00 : 55c09: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 55c10: 45 31 ed xor %r13d,%r13d 0.00 : 55c13: e9 83 ef ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 55c18: 48 8b 05 19 c2 31 00 mov 0x31c219(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 55c1f: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 55c25: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 55c2c: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 55c2f: e9 df ef ff ff jmpq 54c13 <_IO_vfscanf+0x283> 0.00 : 55c34: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55c3b: 00 0.00 : 55c3c: 0f 84 11 f0 ff ff je 54c53 <_IO_vfscanf+0x2c3> 0.00 : 55c42: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 55c49: 48 8b 38 mov (%rax),%rdi 0.00 : 55c4c: e8 4f 8c fc ff callq 1e8a0 0.00 : 55c51: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 55c58: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 55c5f: e9 ef ef ff ff jmpq 54c53 <_IO_vfscanf+0x2c3> 0.00 : 55c64: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55c68: 48 8b 05 09 1a 32 00 mov 0x321a09(%rip),%rax # 377678 <__libc_pthread_functions+0x178> 0.00 : 55c6f: 48 8d bd 40 ff ff ff lea -0xc0(%rbp),%rdi 0.00 : 55c76: 31 f6 xor %esi,%esi 0.00 : 55c78: 48 c1 c8 11 ror $0x11,%rax 0.00 : 55c7c: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 55c83: 00 00 0.00 : 55c85: ff d0 callq *%rax 0.00 : 55c87: e9 af f2 ff ff jmpq 54f3b <_IO_vfscanf+0x5ab> 0.00 : 55c8c: 4c 89 d2 mov %r10,%rdx 0.00 : 55c8f: 48 8b 05 da 19 32 00 mov 0x3219da(%rip),%rax # 377670 <__libc_pthread_functions+0x170> 0.00 : 55c96: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55c9d: 48 c1 c8 11 ror $0x11,%rax 0.00 : 55ca1: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 55ca8: 00 00 0.00 : 55caa: 48 8d bd 40 ff ff ff lea -0xc0(%rbp),%rdi 0.00 : 55cb1: 48 8b 35 90 c2 31 00 mov 0x31c290(%rip),%rsi # 371f48 <_DYNAMIC+0x3e8> 0.00 : 55cb8: ff d0 callq *%rax 0.00 : 55cba: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55cc1: 41 8b 12 mov (%r10),%edx 0.00 : 55cc4: e9 d0 ed ff ff jmpq 54a99 <_IO_vfscanf+0x109> 0.00 : 55cc9: 8b 8d 04 fd ff ff mov -0x2fc(%rbp),%ecx 0.00 : 55ccf: 8b 95 24 fd ff ff mov -0x2dc(%rbp),%edx 0.00 : 55cd5: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 55cd9: 4c 89 ef mov %r13,%rdi 0.00 : 55cdc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55ce3: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 55cea: 81 e1 80 00 00 00 and $0x80,%ecx 0.00 : 55cf0: e8 0b 0e fe ff callq 36b00 <__strtoul_internal> 0.00 : 55cf5: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55cfc: 48 89 c1 mov %rax,%rcx 0.00 : 55cff: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55d06: e9 5d f6 ff ff jmpq 55368 <_IO_vfscanf+0x9d8> 0.00 : 55d0b: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 55d12: 00 0.00 : 55d13: 0f 84 8a 12 00 00 je 56fa3 <_IO_vfscanf+0x2613> 0.00 : 55d19: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 55d20: 31 c0 xor %eax,%eax 0.00 : 55d22: 44 88 3e mov %r15b,(%rsi) 0.00 : 55d25: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 55d2c: 0f 9f c0 setg %al 0.00 : 55d2f: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 55d35: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 55d39: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55d3d: 0f 83 72 55 00 00 jae 5b2b5 <_IO_vfscanf+0x6925> 0.00 : 55d43: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 55d47: 48 83 c0 01 add $0x1,%rax 0.00 : 55d4b: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55d4f: 49 83 c3 01 add $0x1,%r11 0.00 : 55d53: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 55d59: e9 e4 f4 ff ff jmpq 55242 <_IO_vfscanf+0x8b2> 0.00 : 55d5e: f7 85 04 fd ff ff 00 testl $0x1000,-0x2fc(%rbp) 0.00 : 55d65: 10 00 00 0.00 : 55d68: 74 0a je 55d74 <_IO_vfscanf+0x13e4> 0.00 : 55d6a: 41 83 ff 28 cmp $0x28,%r15d 0.00 : 55d6e: 0f 84 e2 0c 00 00 je 56a56 <_IO_vfscanf+0x20c6> 0.00 : 55d74: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 55d78: 0f 84 5a f1 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55d7e: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 55d82: 4c 89 d7 mov %r10,%rdi 0.00 : 55d85: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55d8c: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 55d91: e8 ba e3 01 00 callq 74150 <_IO_sputbackc> 0.00 : 55d96: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55d9d: e9 3e f1 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 55da2: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 55da9: 21 00 00 0.00 : 55dac: 0f 84 c6 1d 00 00 je 57b78 <_IO_vfscanf+0x31e8> 0.00 : 55db2: 44 8b 85 5c fd ff ff mov -0x2a4(%rbp),%r8d 0.00 : 55db9: 45 85 c0 test %r8d,%r8d 0.00 : 55dbc: 0f 85 25 2d 00 00 jne 58ae7 <_IO_vfscanf+0x4157> 0.00 : 55dc2: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55dc8: 83 f8 30 cmp $0x30,%eax 0.00 : 55dcb: 0f 83 96 30 00 00 jae 58e67 <_IO_vfscanf+0x44d7> 0.00 : 55dd1: 89 c2 mov %eax,%edx 0.00 : 55dd3: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55dda: 83 c0 08 add $0x8,%eax 0.00 : 55ddd: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55de3: 48 8b 12 mov (%rdx),%rdx 0.00 : 55de6: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 55ded: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55df4: 00 0.00 : 55df5: 0f 84 dd f0 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55dfb: 81 bd dc fd ff ff 00 cmpl $0x400,-0x224(%rbp) 0.00 : 55e02: 04 00 00 0.00 : 55e05: b8 00 04 00 00 mov $0x400,%eax 0.00 : 55e0a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55e11: 0f 4e 85 dc fd ff ff cmovle -0x224(%rbp),%eax 0.00 : 55e18: 48 98 cltq 0.00 : 55e1a: 48 89 c7 mov %rax,%rdi 0.00 : 55e1d: 48 89 85 e8 fd ff ff mov %rax,-0x218(%rbp) 0.00 : 55e24: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 55e28: e8 23 8a fc ff callq 1e850 0.00 : 55e2d: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 55e34: 48 85 c0 test %rax,%rax 0.00 : 55e37: 48 89 06 mov %rax,(%rsi) 0.00 : 55e3a: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 55e41: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55e48: 0f 84 9b 2f 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 55e4e: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 55e55: 00 0.00 : 55e56: 0f 84 42 2e 00 00 je 58c9e <_IO_vfscanf+0x430e> 0.00 : 55e5c: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 55e63: 48 8b 17 mov (%rdi),%rdx 0.00 : 55e66: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 55e6a: 0f 84 2e 2e 00 00 je 58c9e <_IO_vfscanf+0x430e> 0.00 : 55e70: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 55e77: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 55e7e: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 55e82: 48 89 5c d1 10 mov %rbx,0x10(%rcx,%rdx,8) 0.00 : 55e87: 48 89 01 mov %rax,(%rcx) 0.00 : 55e8a: e9 7d f7 ff ff jmpq 5560c <_IO_vfscanf+0xc7c> 0.00 : 55e8f: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 55e96: 21 00 00 0.00 : 55e99: 0f 84 24 1b 00 00 je 579c3 <_IO_vfscanf+0x3033> 0.00 : 55e9f: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 55ea5: 85 c0 test %eax,%eax 0.00 : 55ea7: 0f 85 31 28 00 00 jne 586de <_IO_vfscanf+0x3d4e> 0.00 : 55ead: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55eb3: 83 f8 30 cmp $0x30,%eax 0.00 : 55eb6: 0f 83 61 29 00 00 jae 5881d <_IO_vfscanf+0x3e8d> 0.00 : 55ebc: 89 c2 mov %eax,%edx 0.00 : 55ebe: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55ec5: 83 c0 08 add $0x8,%eax 0.00 : 55ec8: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55ece: 48 8b 12 mov (%rdx),%rdx 0.00 : 55ed1: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 55ed8: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55edf: 00 0.00 : 55ee0: 0f 84 f2 ef ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55ee6: bf 90 01 00 00 mov $0x190,%edi 0.00 : 55eeb: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55ef2: e8 59 89 fc ff callq 1e850 0.00 : 55ef7: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 55efe: 48 85 c0 test %rax,%rax 0.00 : 55f01: 48 89 06 mov %rax,(%rsi) 0.00 : 55f04: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 55f0b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55f12: 0f 84 d1 2e 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 55f18: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 55f1f: 00 0.00 : 55f20: 0f 84 c7 28 00 00 je 587ed <_IO_vfscanf+0x3e5d> 0.00 : 55f26: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 55f2d: 48 8b 17 mov (%rdi),%rdx 0.00 : 55f30: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 55f34: 0f 84 b3 28 00 00 je 587ed <_IO_vfscanf+0x3e5d> 0.00 : 55f3a: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 55f41: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 55f48: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 55f4c: 41 bc 64 00 00 00 mov $0x64,%r12d 0.00 : 55f52: 48 89 5c d1 10 mov %rbx,0x10(%rcx,%rdx,8) 0.00 : 55f57: 48 89 01 mov %rax,(%rcx) 0.00 : 55f5a: e9 91 f5 ff ff jmpq 554f0 <_IO_vfscanf+0xb60> 0.00 : 55f5f: 81 8d 04 fd ff ff 00 orl $0x200,-0x2fc(%rbp) 0.00 : 55f66: 02 00 00 0.00 : 55f69: 4d 8d 46 01 lea 0x1(%r14),%r8 0.00 : 55f6d: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 55f72: e9 79 ee ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55f77: 83 8d 04 fd ff ff 03 orl $0x3,-0x2fc(%rbp) 0.00 : 55f7e: 4d 8d 46 01 lea 0x1(%r14),%r8 0.00 : 55f82: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 55f87: e9 64 ee ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55f8c: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 55f93: 0f 85 3f f5 ff ff jne 554d8 <_IO_vfscanf+0xb48> 0.00 : 55f99: 44 8b b5 04 fd ff ff mov -0x2fc(%rbp),%r14d 0.00 : 55fa0: 41 83 e6 08 and $0x8,%r14d 0.00 : 55fa4: 0f 85 d0 00 00 00 jne 5607a <_IO_vfscanf+0x16ea> 0.00 : 55faa: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 55fb1: 21 00 00 0.00 : 55fb4: 0f 84 14 2d 00 00 je 58cce <_IO_vfscanf+0x433e> 0.00 : 55fba: 8b 8d 5c fd ff ff mov -0x2a4(%rbp),%ecx 0.00 : 55fc0: 85 c9 test %ecx,%ecx 0.00 : 55fc2: 0f 85 f8 35 00 00 jne 595c0 <_IO_vfscanf+0x4c30> 0.00 : 55fc8: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55fce: 83 f8 30 cmp $0x30,%eax 0.00 : 55fd1: 0f 83 39 3b 00 00 jae 59b10 <_IO_vfscanf+0x5180> 0.00 : 55fd7: 89 c2 mov %eax,%edx 0.00 : 55fd9: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55fe0: 83 c0 08 add $0x8,%eax 0.00 : 55fe3: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55fe9: 48 8b 12 mov (%rdx),%rdx 0.00 : 55fec: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 55ff3: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55ffa: 00 0.00 : 55ffb: 0f 84 d7 ee ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 56001: bf 64 00 00 00 mov $0x64,%edi 0.00 : 56006: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5600d: e8 3e 88 fc ff callq 1e850 0.00 : 56012: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 56019: 48 85 c0 test %rax,%rax 0.00 : 5601c: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 56023: 48 89 06 mov %rax,(%rsi) 0.00 : 56026: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5602d: 0f 84 b6 2d 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 56033: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 5603a: 00 0.00 : 5603b: 0f 84 ef 35 00 00 je 59630 <_IO_vfscanf+0x4ca0> 0.00 : 56041: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 56048: 48 8b 17 mov (%rdi),%rdx 0.00 : 5604b: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 5604f: 0f 84 db 35 00 00 je 59630 <_IO_vfscanf+0x4ca0> 0.00 : 56055: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 5605c: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 56063: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 56067: 48 89 5c d1 10 mov %rbx,0x10(%rcx,%rdx,8) 0.00 : 5606c: 48 89 01 mov %rax,(%rcx) 0.00 : 5606f: 48 c7 85 e8 fd ff ff movq $0x64,-0x218(%rbp) 0.00 : 56076: 64 00 00 00 0.00 : 5607a: 41 83 c7 01 add $0x1,%r15d 0.00 : 5607e: 0f 84 94 fb ff ff je 55c18 <_IO_vfscanf+0x1288> 0.00 : 56084: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56088: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5608c: 0f 83 bc 52 00 00 jae 5b34e <_IO_vfscanf+0x69be> 0.00 : 56092: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56096: 48 83 c0 01 add $0x1,%rax 0.00 : 5609a: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5609e: 48 8b 85 d0 fd ff ff mov -0x230(%rbp),%rax 0.00 : 560a5: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 560ab: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 560b2: 48 83 c0 01 add $0x1,%rax 0.00 : 560b6: 81 e6 00 21 00 00 and $0x2100,%esi 0.00 : 560bc: 48 8d 58 01 lea 0x1(%rax),%rbx 0.00 : 560c0: 89 b5 54 fc ff ff mov %esi,-0x3ac(%rbp) 0.00 : 560c6: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 560cd: 49 63 d7 movslq %r15d,%rdx 0.00 : 560d0: 4c 8d 5b ff lea -0x1(%rbx),%r11 0.00 : 560d4: 48 8b 47 68 mov 0x68(%rdi),%rax 0.00 : 560d8: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 560dd: 0f 85 e5 2d 00 00 jne 58ec8 <_IO_vfscanf+0x4538> 0.00 : 560e3: 45 85 f6 test %r14d,%r14d 0.00 : 560e6: 75 3a jne 56122 <_IO_vfscanf+0x1792> 0.00 : 560e8: 48 8b 85 40 fd ff ff mov -0x2c0(%rbp),%rax 0.00 : 560ef: 44 88 38 mov %r15b,(%rax) 0.00 : 560f2: 48 83 c0 01 add $0x1,%rax 0.00 : 560f6: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 560fd: 8b 85 54 fc ff ff mov -0x3ac(%rbp),%eax 0.00 : 56103: 85 c0 test %eax,%eax 0.00 : 56105: 74 1b je 56122 <_IO_vfscanf+0x1792> 0.00 : 56107: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5610e: 48 8b 3a mov (%rdx),%rdi 0.00 : 56111: 4a 8d 04 27 lea (%rdi,%r12,1),%rax 0.00 : 56115: 48 39 85 40 fd ff ff cmp %rax,-0x2c0(%rbp) 0.00 : 5611c: 0f 84 5c 2d 00 00 je 58e7e <_IO_vfscanf+0x44ee> 0.00 : 56122: 4d 89 e5 mov %r12,%r13 0.00 : 56125: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5612b: 85 c0 test %eax,%eax 0.00 : 5612d: 7e 0d jle 5613c <_IO_vfscanf+0x17ac> 0.00 : 5612f: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 56136: 0f 84 d5 0e 00 00 je 57011 <_IO_vfscanf+0x2681> 0.00 : 5613c: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56140: 0f 84 0a 3a 00 00 je 59b50 <_IO_vfscanf+0x51c0> 0.00 : 56146: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5614a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5614e: 0f 83 76 0e 00 00 jae 56fca <_IO_vfscanf+0x263a> 0.00 : 56154: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56158: 48 83 c0 01 add $0x1,%rax 0.00 : 5615c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56160: 48 83 c3 01 add $0x1,%rbx 0.00 : 56164: 4d 89 ec mov %r13,%r12 0.00 : 56167: e9 5a ff ff ff jmpq 560c6 <_IO_vfscanf+0x1736> 0.00 : 5616c: c7 85 24 fd ff ff 08 movl $0x8,-0x2dc(%rbp) 0.00 : 56173: 00 00 00 0.00 : 56176: e9 81 f0 ff ff jmpq 551fc <_IO_vfscanf+0x86c> 0.00 : 5617b: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 56182: 0f 85 29 13 00 00 jne 574b1 <_IO_vfscanf+0x2b21> 0.00 : 56188: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 5618f: 0f 84 f4 1d 00 00 je 57f89 <_IO_vfscanf+0x35f9> 0.00 : 56195: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5619b: 85 c0 test %eax,%eax 0.00 : 5619d: 0f 85 06 2f 00 00 jne 590a9 <_IO_vfscanf+0x4719> 0.00 : 561a3: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 561a9: 83 f8 30 cmp $0x30,%eax 0.00 : 561ac: 0f 83 08 27 00 00 jae 588ba <_IO_vfscanf+0x3f2a> 0.00 : 561b2: 89 c2 mov %eax,%edx 0.00 : 561b4: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 561bb: 83 c0 08 add $0x8,%eax 0.00 : 561be: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 561c4: 48 8b b5 d0 fd ff ff mov -0x230(%rbp),%rsi 0.00 : 561cb: 48 8b 02 mov (%rdx),%rax 0.00 : 561ce: 45 31 ed xor %r13d,%r13d 0.00 : 561d1: 48 89 30 mov %rsi,(%rax) 0.00 : 561d4: 49 89 f3 mov %rsi,%r11 0.00 : 561d7: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 561de: e9 b8 e9 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 561e3: 83 8d 04 fd ff ff 40 orl $0x40,-0x2fc(%rbp) 0.00 : 561ea: c7 85 24 fd ff ff 00 movl $0x0,-0x2dc(%rbp) 0.00 : 561f1: 00 00 00 0.00 : 561f4: e9 03 f0 ff ff jmpq 551fc <_IO_vfscanf+0x86c> 0.00 : 561f9: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 56200: 0f 85 dc f3 ff ff jne 555e2 <_IO_vfscanf+0xc52> 0.00 : 56206: 83 bd dc fd ff ff ff cmpl $0xffffffff,-0x224(%rbp) 0.00 : 5620d: b8 01 00 00 00 mov $0x1,%eax 0.00 : 56212: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 56218: 0f 45 85 dc fd ff ff cmovne -0x224(%rbp),%eax 0.00 : 5621f: 83 e3 08 and $0x8,%ebx 0.00 : 56222: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 56228: 0f 85 e4 00 00 00 jne 56312 <_IO_vfscanf+0x1982> 0.00 : 5622e: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 56235: 21 00 00 0.00 : 56238: 0f 84 c2 2b 00 00 je 58e00 <_IO_vfscanf+0x4470> 0.00 : 5623e: 44 8b b5 5c fd ff ff mov -0x2a4(%rbp),%r14d 0.00 : 56245: 45 85 f6 test %r14d,%r14d 0.00 : 56248: 0f 85 d2 32 00 00 jne 59520 <_IO_vfscanf+0x4b90> 0.00 : 5624e: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 56254: 83 f8 30 cmp $0x30,%eax 0.00 : 56257: 0f 83 74 39 00 00 jae 59bd1 <_IO_vfscanf+0x5241> 0.00 : 5625d: 89 c2 mov %eax,%edx 0.00 : 5625f: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 56266: 83 c0 08 add $0x8,%eax 0.00 : 56269: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 5626f: 48 8b 12 mov (%rdx),%rdx 0.00 : 56272: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 56279: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 56280: 00 0.00 : 56281: 0f 84 51 ec ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 56287: 81 bd dc fd ff ff 00 cmpl $0x400,-0x224(%rbp) 0.00 : 5628e: 04 00 00 0.00 : 56291: b8 00 04 00 00 mov $0x400,%eax 0.00 : 56296: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5629d: 0f 4e 85 dc fd ff ff cmovle -0x224(%rbp),%eax 0.00 : 562a4: 48 98 cltq 0.00 : 562a6: 48 89 c7 mov %rax,%rdi 0.00 : 562a9: 48 89 85 e8 fd ff ff mov %rax,-0x218(%rbp) 0.00 : 562b0: e8 9b 85 fc ff callq 1e850 0.00 : 562b5: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 562bc: 48 85 c0 test %rax,%rax 0.00 : 562bf: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 562c6: 48 89 07 mov %rax,(%rdi) 0.00 : 562c9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 562d0: 0f 84 13 2b 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 562d6: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 562dd: 00 0.00 : 562de: 0f 84 ac 32 00 00 je 59590 <_IO_vfscanf+0x4c00> 0.00 : 562e4: 48 8b 85 38 fd ff ff mov -0x2c8(%rbp),%rax 0.00 : 562eb: 48 8b 10 mov (%rax),%rdx 0.00 : 562ee: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 562f2: 0f 84 98 32 00 00 je 59590 <_IO_vfscanf+0x4c00> 0.00 : 562f8: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 562ff: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 56306: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 5630a: 48 89 74 d1 10 mov %rsi,0x10(%rcx,%rdx,8) 0.00 : 5630f: 48 89 01 mov %rax,(%rcx) 0.00 : 56312: 41 83 c7 01 add $0x1,%r15d 0.00 : 56316: 0f 84 e0 e8 ff ff je 54bfc <_IO_vfscanf+0x26c> 0.00 : 5631c: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56320: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56324: 0f 83 22 3b 00 00 jae 59e4c <_IO_vfscanf+0x54bc> 0.00 : 5632a: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5632e: 48 83 c0 01 add $0x1,%rax 0.00 : 56332: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56336: 4c 8b b5 d0 fd ff ff mov -0x230(%rbp),%r14 0.00 : 5633d: 49 83 c6 01 add $0x1,%r14 0.00 : 56341: 85 db test %ebx,%ebx 0.00 : 56343: 0f 85 f7 1b 00 00 jne 57f40 <_IO_vfscanf+0x35b0> 0.00 : 56349: 8b bd 04 fd ff ff mov -0x2fc(%rbp),%edi 0.00 : 5634f: 44 8b ad dc fd ff ff mov -0x224(%rbp),%r13d 0.00 : 56356: 31 db xor %ebx,%ebx 0.00 : 56358: 4e 8d 1c 33 lea (%rbx,%r14,1),%r11 0.00 : 5635c: 81 e7 00 21 00 00 and $0x2100,%edi 0.00 : 56362: 49 63 c5 movslq %r13d,%rax 0.00 : 56365: 89 bd 9c fd ff ff mov %edi,-0x264(%rbp) 0.00 : 5636b: 44 8b a5 9c fd ff ff mov -0x264(%rbp),%r12d 0.00 : 56372: 48 89 85 60 fc ff ff mov %rax,-0x3a0(%rbp) 0.00 : 56379: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 5637d: 45 85 e4 test %r12d,%r12d 0.00 : 56380: 48 98 cltq 0.00 : 56382: 48 89 85 58 fc ff ff mov %rax,-0x3a8(%rbp) 0.00 : 56389: 74 22 je 563ad <_IO_vfscanf+0x1a1d> 0.00 : 5638b: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 56392: 48 8b 8d e8 fd ff ff mov -0x218(%rbp),%rcx 0.00 : 56399: 48 8b 3a mov (%rdx),%rdi 0.00 : 5639c: 48 8d 04 0f lea (%rdi,%rcx,1),%rax 0.00 : 563a0: 48 39 85 40 fd ff ff cmp %rax,-0x2c0(%rbp) 0.00 : 563a7: 0f 84 d3 29 00 00 je 58d80 <_IO_vfscanf+0x43f0> 0.00 : 563ad: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 563b4: 48 8b b5 40 fd ff ff mov -0x2c0(%rbp),%rsi 0.00 : 563bb: 41 83 ed 01 sub $0x1,%r13d 0.00 : 563bf: 44 88 3e mov %r15b,(%rsi) 0.00 : 563c2: 48 83 c6 01 add $0x1,%rsi 0.00 : 563c6: 45 85 ed test %r13d,%r13d 0.00 : 563c9: 48 89 b5 40 fd ff ff mov %rsi,-0x2c0(%rbp) 0.00 : 563d0: 0f 8e 1e 1b 00 00 jle 57ef4 <_IO_vfscanf+0x3564> 0.00 : 563d6: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 563da: 0f 84 96 2c 00 00 je 59076 <_IO_vfscanf+0x46e6> 0.00 : 563e0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 563e4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 563e8: 0f 83 bf 1a 00 00 jae 57ead <_IO_vfscanf+0x351d> 0.00 : 563ee: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 563f2: 48 83 c0 01 add $0x1,%rax 0.00 : 563f6: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 563fa: 4c 89 a5 e8 fd ff ff mov %r12,-0x218(%rbp) 0.00 : 56401: 44 8b a5 9c fd ff ff mov -0x264(%rbp),%r12d 0.00 : 56408: 48 83 c3 01 add $0x1,%rbx 0.00 : 5640c: 4e 8d 1c 33 lea (%rbx,%r14,1),%r11 0.00 : 56410: 45 85 e4 test %r12d,%r12d 0.00 : 56413: 74 98 je 563ad <_IO_vfscanf+0x1a1d> 0.00 : 56415: e9 71 ff ff ff jmpq 5638b <_IO_vfscanf+0x19fb> 0.00 : 5641a: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 56420: 83 e3 01 and $0x1,%ebx 0.00 : 56423: 0f 84 3a 11 00 00 je 57563 <_IO_vfscanf+0x2bd3> 0.00 : 56429: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 56430: 0f 85 79 0d 00 00 jne 571af <_IO_vfscanf+0x281f> 0.00 : 56436: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 5643d: 21 00 00 0.00 : 56440: 0f 84 6c 27 00 00 je 58bb2 <_IO_vfscanf+0x4222> 0.00 : 56446: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5644c: 85 c0 test %eax,%eax 0.00 : 5644e: 0f 85 ab 37 00 00 jne 59bff <_IO_vfscanf+0x526f> 0.00 : 56454: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5645a: 83 f8 30 cmp $0x30,%eax 0.00 : 5645d: 0f 83 85 37 00 00 jae 59be8 <_IO_vfscanf+0x5258> 0.00 : 56463: 89 c2 mov %eax,%edx 0.00 : 56465: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5646c: 83 c0 08 add $0x8,%eax 0.00 : 5646f: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 56475: 48 8b 12 mov (%rdx),%rdx 0.00 : 56478: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 5647f: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 56486: 00 0.00 : 56487: 0f 84 4b ea ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5648d: bf 90 01 00 00 mov $0x190,%edi 0.00 : 56492: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56499: e8 b2 83 fc ff callq 1e850 0.00 : 5649e: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 564a5: 48 85 c0 test %rax,%rax 0.00 : 564a8: 48 89 07 mov %rax,(%rdi) 0.00 : 564ab: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 564b2: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 564b9: 0f 84 2a 29 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 564bf: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 564c6: 00 0.00 : 564c7: 0f 84 43 34 00 00 je 59910 <_IO_vfscanf+0x4f80> 0.00 : 564cd: 48 8b 85 38 fd ff ff mov -0x2c8(%rbp),%rax 0.00 : 564d4: 48 8b 10 mov (%rax),%rdx 0.00 : 564d7: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 564db: 0f 84 2f 34 00 00 je 59910 <_IO_vfscanf+0x4f80> 0.00 : 564e1: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 564e8: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 564ef: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 564f3: 41 bc 64 00 00 00 mov $0x64,%r12d 0.00 : 564f9: 48 89 74 d1 10 mov %rsi,0x10(%rcx,%rdx,8) 0.00 : 564fe: 48 89 01 mov %rax,(%rcx) 0.00 : 56501: c6 85 23 fd ff ff 00 movb $0x0,-0x2dd(%rbp) 0.00 : 56508: 41 80 3e 5e cmpb $0x5e,(%r14) 0.00 : 5650c: 75 12 jne 56520 <_IO_vfscanf+0x1b90> 0.00 : 5650e: 49 83 c6 01 add $0x1,%r14 0.00 : 56512: c6 85 23 fd ff ff 01 movb $0x1,-0x2dd(%rbp) 0.00 : 56519: 4c 89 b5 c8 fd ff ff mov %r14,-0x238(%rbp) 0.00 : 56520: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56526: bf ff ff ff 7f mov $0x7fffffff,%edi 0.00 : 5652b: 85 c0 test %eax,%eax 0.00 : 5652d: 0f 49 bd dc fd ff ff cmovns -0x224(%rbp),%edi 0.00 : 56534: 48 81 bd 50 fd ff ff cmpq $0xff,-0x2b0(%rbp) 0.00 : 5653b: ff 00 00 00 0.00 : 5653f: 89 bd dc fd ff ff mov %edi,-0x224(%rbp) 0.00 : 56545: 77 22 ja 56569 <_IO_vfscanf+0x1bd9> 0.00 : 56547: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5654e: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 56555: 00 01 00 00 9.09 : 56559: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5655e: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56562: 48 89 85 f0 fd ff ff mov %rax,-0x210(%rbp) 0.00 : 56569: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 56570: 31 c0 xor %eax,%eax 0.00 : 56572: b9 20 00 00 00 mov $0x20,%ecx 0.00 : 56577: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 5657a: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 56581: 0f b6 02 movzbl (%rdx),%eax 0.00 : 56584: 3c 5d cmp $0x5d,%al 0.00 : 56586: 0f 84 2d 11 00 00 je 576b9 <_IO_vfscanf+0x2d29> 0.00 : 5658c: 3c 2d cmp $0x2d,%al 0.00 : 5658e: 0f 84 25 11 00 00 je 576b9 <_IO_vfscanf+0x2d29> 0.00 : 56594: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 56598: 84 c0 test %al,%al 0.00 : 5659a: 0f 84 38 e9 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 565a0: 48 83 85 c8 fd ff ff addq $0x1,-0x238(%rbp) 0.00 : 565a7: 01 0.00 : 565a8: 3c 5d cmp $0x5d,%al 0.00 : 565aa: 0f 84 69 11 00 00 je 57719 <_IO_vfscanf+0x2d89> 0.00 : 565b0: 3c 2d cmp $0x2d,%al 0.00 : 565b2: 0f 84 4b 04 00 00 je 56a03 <_IO_vfscanf+0x2073> 0.00 : 565b8: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 565bf: 0f b6 c0 movzbl %al,%eax 0.00 : 565c2: c6 04 07 01 movb $0x1,(%rdi,%rax,1) 0.00 : 565c6: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 565cd: 0f b6 08 movzbl (%rax),%ecx 9.09 : 565d0: 89 c8 mov %ecx,%eax 0.00 : 565d2: eb c4 jmp 56598 <_IO_vfscanf+0x1c08> 0.00 : 565d4: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 565d8: 0f 85 62 10 00 00 jne 57640 <_IO_vfscanf+0x2cb0> 0.00 : 565de: 48 8b 1d 53 b8 31 00 mov 0x31b853(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 565e5: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 565eb: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 565f2: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 565f5: 31 c0 xor %eax,%eax 0.00 : 565f7: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 565fe: 0f 9f c0 setg %al 0.00 : 56601: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 56607: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5660b: 0f 84 02 e6 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 56611: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 56615: 0f 84 19 16 00 00 je 57c34 <_IO_vfscanf+0x32a4> 0.00 : 5661b: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 5661f: c6 85 22 fd ff ff 00 movb $0x0,-0x2de(%rbp) 0.00 : 56626: 0f 84 08 16 00 00 je 57c34 <_IO_vfscanf+0x32a4> 0.00 : 5662c: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56633: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 56637: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 5663b: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 5663e: 83 f8 6e cmp $0x6e,%eax 0.00 : 56641: 0f 84 81 15 00 00 je 57bc8 <_IO_vfscanf+0x3238> 0.00 : 56647: 83 f8 69 cmp $0x69,%eax 0.00 : 5664a: 0f 84 ed 19 00 00 je 5803d <_IO_vfscanf+0x36ad> 0.00 : 56650: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56656: 85 c0 test %eax,%eax 0.00 : 56658: 74 0a je 56664 <_IO_vfscanf+0x1cd4> 0.00 : 5665a: 41 83 ff 30 cmp $0x30,%r15d 0.00 : 5665e: 0f 84 9d 1a 00 00 je 58101 <_IO_vfscanf+0x3771> 0.00 : 56664: 4c 8b 8d f0 fd ff ff mov -0x210(%rbp),%r9 0.00 : 5666b: c6 85 1f fe ff ff 65 movb $0x65,-0x1e1(%rbp) 0.00 : 56672: 45 31 f6 xor %r14d,%r14d 0.00 : 56675: 0f b6 95 04 fd ff ff movzbl -0x2fc(%rbp),%edx 0.00 : 5667c: 48 8b 8d 28 fd ff ff mov -0x2d8(%rbp),%rcx 0.00 : 56683: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 56689: c6 85 20 fd ff ff 00 movb $0x0,-0x2e0(%rbp) 0.00 : 56690: c6 85 21 fd ff ff 00 movb $0x0,-0x2df(%rbp) 0.00 : 56697: 48 83 c1 01 add $0x1,%rcx 0.00 : 5669b: 83 e2 80 and $0xffffff80,%edx 0.00 : 5669e: 81 e3 00 08 00 00 and $0x800,%ebx 0.00 : 566a4: 48 89 8d b0 fc ff ff mov %rcx,-0x350(%rbp) 0.00 : 566ab: 88 95 bf fc ff ff mov %dl,-0x341(%rbp) 0.00 : 566b1: 89 9d ac fc ff ff mov %ebx,-0x354(%rbp) 0.00 : 566b7: eb 73 jmp 5672c <_IO_vfscanf+0x1d9c> 0.00 : 566b9: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 566c0: 4d 89 cc mov %r9,%r12 0.00 : 566c3: 0f 84 7d 0d 00 00 je 57446 <_IO_vfscanf+0x2ab6> 0.00 : 566c9: 47 88 3c 34 mov %r15b,(%r12,%r14,1) 0.00 : 566cd: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 566d4: 49 83 c6 01 add $0x1,%r14 0.00 : 566d8: 44 8b ad dc fd ff ff mov -0x224(%rbp),%r13d 0.00 : 566df: 45 85 ed test %r13d,%r13d 0.00 : 566e2: 0f 84 bc 1d 00 00 je 584a4 <_IO_vfscanf+0x3b14> 0.00 : 566e8: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 566ec: 0f 84 a6 1a 00 00 je 58198 <_IO_vfscanf+0x3808> 0.00 : 566f2: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 566f6: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 566fa: 0f 83 f4 28 00 00 jae 58ff4 <_IO_vfscanf+0x4664> 0.00 : 56700: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56704: 49 83 c3 01 add $0x1,%r11 0.00 : 56708: 48 83 c0 01 add $0x1,%rax 0.00 : 5670c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56710: 4c 89 9d d0 fd ff ff mov %r11,-0x230(%rbp) 0.00 : 56717: 31 c0 xor %eax,%eax 0.00 : 56719: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 56720: 4d 89 e1 mov %r12,%r9 0.00 : 56723: 0f 9f c0 setg %al 0.00 : 56726: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5672c: 41 8d 47 d0 lea -0x30(%r15),%eax 0.00 : 56730: 83 f8 09 cmp $0x9,%eax 0.00 : 56733: 76 84 jbe 566b9 <_IO_vfscanf+0x1d29> 0.00 : 56735: 80 bd 21 fd ff ff 00 cmpb $0x0,-0x2df(%rbp) 0.00 : 5673c: 0f 84 f3 03 00 00 je 56b35 <_IO_vfscanf+0x21a5> 0.00 : 56742: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 56749: 43 38 44 31 ff cmp %al,-0x1(%r9,%r14,1) 0.00 : 5674e: 0f 84 8a 0f 00 00 je 576de <_IO_vfscanf+0x2d4e> 0.00 : 56754: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5675a: 41 b8 ff ff ff 7f mov $0x7fffffff,%r8d 0.00 : 56760: 85 c0 test %eax,%eax 0.00 : 56762: 44 0f 4f 85 dc fd ff cmovg -0x224(%rbp),%r8d 0.00 : 56769: ff 0.00 : 5676a: 80 bd 20 fd ff ff 00 cmpb $0x0,-0x2e0(%rbp) 0.00 : 56771: 0f 84 36 05 00 00 je 56cad <_IO_vfscanf+0x231d> 0.00 : 56777: 48 8b 8d 28 fd ff ff mov -0x2d8(%rbp),%rcx 0.00 : 5677e: 0f b6 11 movzbl (%rcx),%edx 0.00 : 56781: 49 89 cc mov %rcx,%r12 0.00 : 56784: 44 89 f9 mov %r15d,%ecx 0.00 : 56787: 84 d2 test %dl,%dl 0.00 : 56789: 0f 85 c4 05 00 00 jne 56d53 <_IO_vfscanf+0x23c3> 0.00 : 5678f: 48 8b 85 28 fd ff ff mov -0x2d8(%rbp),%rax 0.00 : 56796: 41 89 cf mov %ecx,%r15d 0.00 : 56799: 0f b6 10 movzbl (%rax),%edx 0.00 : 5679c: 84 d2 test %dl,%dl 0.00 : 5679e: 0f 84 98 06 00 00 je 56e3c <_IO_vfscanf+0x24ac> 0.00 : 567a4: 4f 8d 24 36 lea (%r14,%r14,1),%r12 0.00 : 567a8: 48 8b 9d 28 fd ff ff mov -0x2d8(%rbp),%rbx 0.00 : 567af: eb 23 jmp 567d4 <_IO_vfscanf+0x1e44> 0.00 : 567b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 567b8: 0f b6 03 movzbl (%rbx),%eax 0.00 : 567bb: 48 83 c3 01 add $0x1,%rbx 0.00 : 567bf: 49 83 c4 02 add $0x2,%r12 0.00 : 567c3: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 567c7: 49 83 c6 01 add $0x1,%r14 0.00 : 567cb: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 567ce: 0f 84 68 06 00 00 je 56e3c <_IO_vfscanf+0x24ac> 0.00 : 567d4: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 567db: 75 db jne 567b8 <_IO_vfscanf+0x1e28> 0.00 : 567dd: 49 81 fc 00 01 00 00 cmp $0x100,%r12 0.00 : 567e4: ba 00 01 00 00 mov $0x100,%edx 0.00 : 567e9: 49 0f 43 d4 cmovae %r12,%rdx 0.00 : 567ed: 48 89 d0 mov %rdx,%rax 0.00 : 567f0: 48 89 95 50 fd ff ff mov %rdx,-0x2b0(%rbp) 0.00 : 567f7: 48 83 c0 1e add $0x1e,%rax 0.00 : 567fb: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 567ff: 48 29 c4 sub %rax,%rsp 0.00 : 56802: 4c 8d 6c 24 0f lea 0xf(%rsp),%r13 0.00 : 56807: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 5680b: 4d 85 c9 test %r9,%r9 0.00 : 5680e: 0f 84 b3 0c 00 00 je 574c7 <_IO_vfscanf+0x2b37> 0.00 : 56814: 4c 89 ce mov %r9,%rsi 0.00 : 56817: 4c 89 f2 mov %r14,%rdx 0.00 : 5681a: 4c 89 ef mov %r13,%rdi 0.00 : 5681d: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 56824: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5682b: e8 20 df 02 00 callq 84750 0.00 : 56830: 4d 89 e9 mov %r13,%r9 0.00 : 56833: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5683a: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 56841: e9 72 ff ff ff jmpq 567b8 <_IO_vfscanf+0x1e28> 0.00 : 56846: 41 83 c7 01 add $0x1,%r15d 0.00 : 5684a: 0f 84 b0 e4 ff ff je 54d00 <_IO_vfscanf+0x370> 0.00 : 56850: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56854: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56858: 0f 83 a3 47 00 00 jae 5b001 <_IO_vfscanf+0x6671> 0.00 : 5685e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56862: 48 83 c0 01 add $0x1,%rax 0.00 : 56866: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5686a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56871: 49 83 c3 01 add $0x1,%r11 0.00 : 56875: 41 83 ff 25 cmp $0x25,%r15d 0.00 : 56879: 0f 84 6e e4 ff ff je 54ced <_IO_vfscanf+0x35d> 0.00 : 5687f: e9 fa f4 ff ff jmpq 55d7e <_IO_vfscanf+0x13ee> 0.00 : 56884: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 56888: 48 8b 05 a9 b5 31 00 mov 0x31b5a9(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5688f: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 56896: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 5689d: ff ff ff 0.00 : 568a0: c7 04 07 09 00 00 00 movl $0x9,(%rdi,%rax,1) 0.00 : 568a7: e9 a7 e3 ff ff jmpq 54c53 <_IO_vfscanf+0x2c3> 0.00 : 568ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 568b0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 568b4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 568b8: 0f 83 68 11 00 00 jae 57a26 <_IO_vfscanf+0x3096> 0.00 : 568be: 0f b6 18 movzbl (%rax),%ebx 0.00 : 568c1: 48 83 c0 01 add $0x1,%rax 0.00 : 568c5: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 568c9: 49 83 c3 01 add $0x1,%r11 0.00 : 568cd: 88 9d f0 fe ff ff mov %bl,-0x110(%rbp) 0.00 : 568d3: e9 08 ee ff ff jmpq 556e0 <_IO_vfscanf+0xd50> 0.00 : 568d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 568df: 00 0.00 : 568e0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 568e4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 568e8: 0f 83 bc 11 00 00 jae 57aaa <_IO_vfscanf+0x311a> 0.00 : 568ee: 0f b6 18 movzbl (%rax),%ebx 0.00 : 568f1: 48 83 c0 01 add $0x1,%rax 0.00 : 568f5: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 568f9: 49 83 c3 01 add $0x1,%r11 0.00 : 568fd: 88 9d f0 fe ff ff mov %bl,-0x110(%rbp) 0.00 : 56903: e9 58 ec ff ff jmpq 55560 <_IO_vfscanf+0xbd0> 0.00 : 56908: 48 83 e8 01 sub $0x1,%rax 0.00 : 5690c: 41 89 df mov %ebx,%r15d 0.00 : 5690f: 0f 85 b1 2d 00 00 jne 596c6 <_IO_vfscanf+0x4d36> 0.00 : 56915: 8b 85 9c fc ff ff mov -0x364(%rbp),%eax 0.00 : 5691b: 2b 85 a8 fd ff ff sub -0x258(%rbp),%eax 0.00 : 56921: 48 83 85 e0 fd ff ff addq $0x4,-0x220(%rbp) 0.00 : 56928: 04 0.00 : 56929: 85 c0 test %eax,%eax 0.00 : 5692b: 0f 8e d1 08 00 00 jle 57202 <_IO_vfscanf+0x2872> 0.00 : 56931: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 56934: 0f 84 ab 2d 00 00 je 596e5 <_IO_vfscanf+0x4d55> 0.00 : 5693a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5693e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56942: 0f 83 73 08 00 00 jae 571bb <_IO_vfscanf+0x282b> 0.00 : 56948: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5694c: 48 83 c0 01 add $0x1,%rax 0.00 : 56950: 49 83 c3 01 add $0x1,%r11 0.00 : 56954: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56958: 48 83 85 a8 fd ff ff addq $0x1,-0x258(%rbp) 0.00 : 5695f: 01 0.00 : 56960: 4c 89 a5 e8 fd ff ff mov %r12,-0x218(%rbp) 0.00 : 56967: e9 24 ed ff ff jmpq 55690 <_IO_vfscanf+0xd00> 0.00 : 5696c: 48 83 e8 01 sub $0x1,%rax 0.00 : 56970: 41 89 df mov %ebx,%r15d 0.00 : 56973: 0f 85 af 27 00 00 jne 59128 <_IO_vfscanf+0x4798> 0.00 : 56979: 48 83 85 e0 fd ff ff addq $0x4,-0x220(%rbp) 0.00 : 56980: 04 0.00 : 56981: 45 85 f6 test %r14d,%r14d 0.00 : 56984: 75 34 jne 569ba <_IO_vfscanf+0x202a> 0.00 : 56986: 8b 85 8c fc ff ff mov -0x374(%rbp),%eax 0.00 : 5698c: 85 c0 test %eax,%eax 0.00 : 5698e: 74 2a je 569ba <_IO_vfscanf+0x202a> 0.00 : 56990: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 56997: 4a 8d 04 a5 00 00 00 lea 0x0(,%r12,4),%rax 0.00 : 5699e: 00 0.00 : 5699f: 48 8b 3e mov (%rsi),%rdi 0.00 : 569a2: 48 89 85 f8 fd ff ff mov %rax,-0x208(%rbp) 0.00 : 569a9: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 569ad: 48 39 85 e0 fd ff ff cmp %rax,-0x220(%rbp) 0.00 : 569b4: 0f 84 f6 2f 00 00 je 599b0 <_IO_vfscanf+0x5020> 0.00 : 569ba: 4d 89 e0 mov %r12,%r8 0.00 : 569bd: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 569c3: 85 c0 test %eax,%eax 0.00 : 569c5: 7e 0d jle 569d4 <_IO_vfscanf+0x2044> 0.00 : 569c7: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 569ce: 0f 84 73 27 00 00 je 59147 <_IO_vfscanf+0x47b7> 0.00 : 569d4: 83 c3 01 add $0x1,%ebx 0.00 : 569d7: 0f 84 80 33 00 00 je 59d5d <_IO_vfscanf+0x53cd> 0.00 : 569dd: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 569e1: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 569e5: 0f 83 15 33 00 00 jae 59d00 <_IO_vfscanf+0x5370> 0.00 : 569eb: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 569ef: 48 83 c0 01 add $0x1,%rax 0.00 : 569f3: 49 83 c3 01 add $0x1,%r11 0.00 : 569f7: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 569fb: 4d 89 c4 mov %r8,%r12 0.00 : 569fe: e9 3a eb ff ff jmpq 5553d <_IO_vfscanf+0xbad> 0.00 : 56a03: 48 8b bd c8 fd ff ff mov -0x238(%rbp),%rdi 0.00 : 56a0a: 0f b6 0f movzbl (%rdi),%ecx 0.00 : 56a0d: 84 c9 test %cl,%cl 0.00 : 56a0f: 0f 84 a3 fb ff ff je 565b8 <_IO_vfscanf+0x1c28> 0.00 : 56a15: 80 f9 5d cmp $0x5d,%cl 0.00 : 56a18: 0f 84 9a fb ff ff je 565b8 <_IO_vfscanf+0x1c28> 0.00 : 56a1e: 0f b6 57 fe movzbl -0x2(%rdi),%edx 0.00 : 56a22: 38 ca cmp %cl,%dl 0.00 : 56a24: 0f 87 8e fb ff ff ja 565b8 <_IO_vfscanf+0x1c28> 0.00 : 56a2a: 0f 83 a0 fb ff ff jae 565d0 <_IO_vfscanf+0x1c40> 0.00 : 56a30: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 56a37: 0f b6 c2 movzbl %dl,%eax 0.00 : 56a3a: 83 c2 01 add $0x1,%edx 0.00 : 56a3d: c6 04 01 01 movb $0x1,(%rcx,%rax,1) 0.00 : 56a41: 48 8b b5 c8 fd ff ff mov -0x238(%rbp),%rsi 0.00 : 56a48: 38 16 cmp %dl,(%rsi) 0.00 : 56a4a: 77 e4 ja 56a30 <_IO_vfscanf+0x20a0> 0.00 : 56a4c: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 56a4f: 89 c8 mov %ecx,%eax 0.00 : 56a51: e9 42 fb ff ff jmpq 56598 <_IO_vfscanf+0x1c08> 0.00 : 56a56: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56a5a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56a5e: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56a65: 4c 8b 61 70 mov 0x70(%rcx),%r12 0.00 : 56a69: 0f 83 a7 36 00 00 jae 5a116 <_IO_vfscanf+0x5786> 0.00 : 56a6f: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56a73: 48 83 c0 01 add $0x1,%rax 0.00 : 56a77: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56a7b: 41 0f b6 c7 movzbl %r15b,%eax 0.00 : 56a7f: 49 83 c3 01 add $0x1,%r11 0.00 : 56a83: 48 c1 e0 02 shl $0x2,%rax 0.00 : 56a87: 41 83 3c 04 6e cmpl $0x6e,(%r12,%rax,1) 0.00 : 56a8c: 0f 85 e2 f2 ff ff jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56a92: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 56a99: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56a9d: 4c 8b 67 70 mov 0x70(%rdi),%r12 0.00 : 56aa1: 0f 85 49 09 00 00 jne 573f0 <_IO_vfscanf+0x2a60> 0.00 : 56aa7: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 56aae: 48 8b 1d 83 b3 31 00 mov 0x31b383(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56ab5: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 56abb: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 56abe: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 56ac3: 41 83 3c 04 69 cmpl $0x69,(%r12,%rax,1) 0.00 : 56ac8: 0f 85 a6 f2 ff ff jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56ace: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 56ad5: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56ad9: 4c 8b 63 70 mov 0x70(%rbx),%r12 0.00 : 56add: 0f 85 38 09 00 00 jne 5741b <_IO_vfscanf+0x2a8b> 0.00 : 56ae3: 48 8b 1d 4e b3 31 00 mov 0x31b34e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56aea: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 56af0: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 56af5: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 56afc: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 56aff: 41 83 3c 04 6c cmpl $0x6c,(%r12,%rax,1) 0.00 : 56b04: 0f 85 6a f2 ff ff jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56b0a: 41 83 c7 01 add $0x1,%r15d 0.00 : 56b0e: 0f 85 53 03 00 00 jne 56e67 <_IO_vfscanf+0x24d7> 0.00 : 56b14: 48 8b 05 1d b3 31 00 mov 0x31b31d(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56b1b: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 56b21: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 56b26: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 56b2d: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 56b30: e9 ab e3 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 56b35: 8b 85 ac fc ff ff mov -0x354(%rbp),%eax 0.00 : 56b3b: 85 c0 test %eax,%eax 0.00 : 56b3d: 0f 84 81 00 00 00 je 56bc4 <_IO_vfscanf+0x2234> 0.00 : 56b43: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56b4a: 49 63 d7 movslq %r15d,%rdx 0.00 : 56b4d: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 56b51: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 56b56: 74 6c je 56bc4 <_IO_vfscanf+0x2234> 0.00 : 56b58: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 56b5f: 4d 89 cc mov %r9,%r12 0.00 : 56b62: 0f 85 61 fb ff ff jne 566c9 <_IO_vfscanf+0x1d39> 0.00 : 56b68: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 56b6c: be 00 01 00 00 mov $0x100,%esi 0.00 : 56b71: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 56b78: 48 0f 43 f3 cmovae %rbx,%rsi 0.00 : 56b7c: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 56b83: 48 89 f0 mov %rsi,%rax 0.00 : 56b86: 48 83 c0 1e add $0x1e,%rax 0.00 : 56b8a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56b8e: 48 29 c4 sub %rax,%rsp 0.00 : 56b91: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 56b96: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 56b9a: 4d 85 c9 test %r9,%r9 0.00 : 56b9d: 0f 84 26 fb ff ff je 566c9 <_IO_vfscanf+0x1d39> 0.00 : 56ba3: 4c 89 f2 mov %r14,%rdx 0.00 : 56ba6: 4c 89 ce mov %r9,%rsi 0.00 : 56ba9: 4c 89 e7 mov %r12,%rdi 0.00 : 56bac: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56bb3: e8 98 db 02 00 callq 84750 0.00 : 56bb8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56bbf: e9 05 fb ff ff jmpq 566c9 <_IO_vfscanf+0x1d39> 0.00 : 56bc4: 4d 85 f6 test %r14,%r14 0.00 : 56bc7: 0f 84 87 fb ff ff je 56754 <_IO_vfscanf+0x1dc4> 0.00 : 56bcd: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 56bd4: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 56bd8: 0f b6 8d 1f fe ff ff movzbl -0x1e1(%rbp),%ecx 0.00 : 56bdf: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 56be3: 3a 0c 90 cmp (%rax,%rdx,4),%cl 0.00 : 56be6: 0f 85 68 fb ff ff jne 56754 <_IO_vfscanf+0x1dc4> 0.00 : 56bec: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 56bf3: 4d 89 cc mov %r9,%r12 0.00 : 56bf6: 0f 84 40 23 00 00 je 58f3c <_IO_vfscanf+0x45ac> 0.00 : 56bfc: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 56c03: 43 88 04 34 mov %al,(%r12,%r14,1) 0.00 : 56c07: 49 83 c6 01 add $0x1,%r14 0.00 : 56c0b: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56c12: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 56c19: c6 85 21 fd ff ff 01 movb $0x1,-0x2df(%rbp) 0.00 : 56c20: e9 b3 fa ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56c25: 45 85 ed test %r13d,%r13d 0.00 : 56c28: 75 3b jne 56c65 <_IO_vfscanf+0x22d5> 0.00 : 56c2a: 31 db xor %ebx,%ebx 0.00 : 56c2c: e9 af e2 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 56c31: 48 8b 05 00 b2 31 00 mov 0x31b200(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56c38: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 56c3e: 48 c7 c2 fe ff ff ff mov $0xfffffffffffffffe,%rdx 0.00 : 56c45: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 56c4c: 89 3c 06 mov %edi,(%rsi,%rax,1) 0.00 : 56c4f: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56c56: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 56c5a: f6 44 10 01 20 testb $0x20,0x1(%rax,%rdx,1) 0.00 : 56c5f: 0f 84 66 06 00 00 je 572cb <_IO_vfscanf+0x293b> 0.00 : 56c65: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56c69: 74 c6 je 56c31 <_IO_vfscanf+0x22a1> 0.00 : 56c6b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56c6f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56c73: 0f 83 e0 47 00 00 jae 5b459 <_IO_vfscanf+0x6ac9> 0.00 : 56c79: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56c7d: 48 83 c0 01 add $0x1,%rax 0.00 : 56c81: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56c85: 49 63 c7 movslq %r15d,%rax 0.00 : 56c88: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : 56c8c: eb c1 jmp 56c4f <_IO_vfscanf+0x22bf> 0.00 : 56c8e: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 56c95: 0f b6 02 movzbl (%rdx),%eax 0.00 : 56c98: 3c 2b cmp $0x2b,%al 0.00 : 56c9a: 0f 84 d4 f0 ff ff je 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56ca0: 3c 2d cmp $0x2d,%al 0.00 : 56ca2: 0f 85 28 e6 ff ff jne 552d0 <_IO_vfscanf+0x940> 0.00 : 56ca8: e9 c7 f0 ff ff jmpq 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56cad: 48 8b 9d 28 fd ff ff mov -0x2d8(%rbp),%rbx 0.00 : 56cb4: 44 89 f9 mov %r15d,%ecx 0.00 : 56cb7: 0f b6 13 movzbl (%rbx),%edx 0.00 : 56cba: 49 89 dc mov %rbx,%r12 0.00 : 56cbd: 0f b6 c2 movzbl %dl,%eax 0.00 : 56cc0: 41 39 c7 cmp %eax,%r15d 0.00 : 56cc3: 0f 85 be fa ff ff jne 56787 <_IO_vfscanf+0x1df7> 0.00 : 56cc9: 4c 8b a5 b0 fc ff ff mov -0x350(%rbp),%r12 0.00 : 56cd0: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 56cd5: 0f 84 c1 fa ff ff je 5679c <_IO_vfscanf+0x1e0c> 0.00 : 56cdb: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 56ce2: 01 0.00 : 56ce3: eb 1a jmp 56cff <_IO_vfscanf+0x236f> 0.00 : 56ce5: 0f 1f 00 nopl (%rax) 0.00 : 56ce8: 48 8b 85 d0 fd ff ff mov -0x230(%rbp),%rax 0.00 : 56cef: 48 83 c0 01 add $0x1,%rax 0.00 : 56cf3: 45 85 c0 test %r8d,%r8d 0.00 : 56cf6: 74 5e je 56d56 <_IO_vfscanf+0x23c6> 0.00 : 56cf8: 48 89 85 d0 fd ff ff mov %rax,-0x230(%rbp) 0.00 : 56cff: 4c 8b ad d0 fd ff ff mov -0x230(%rbp),%r13 0.00 : 56d06: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56d0a: 49 83 ed 01 sub $0x1,%r13 0.00 : 56d0e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56d12: 0f 83 70 1a 00 00 jae 58788 <_IO_vfscanf+0x3df8> 0.00 : 56d18: 0f b6 08 movzbl (%rax),%ecx 0.00 : 56d1b: 48 83 c0 01 add $0x1,%rax 0.00 : 56d1f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56d23: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 56d28: 41 83 e8 01 sub $0x1,%r8d 0.00 : 56d2c: 44 0f b6 fa movzbl %dl,%r15d 0.00 : 56d30: 41 39 cf cmp %ecx,%r15d 0.00 : 56d33: 0f 85 4e fa ff ff jne 56787 <_IO_vfscanf+0x1df7> 0.00 : 56d39: 49 83 c4 01 add $0x1,%r12 0.00 : 56d3d: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 56d42: 75 a4 jne 56ce8 <_IO_vfscanf+0x2358> 0.00 : 56d44: 48 8b b5 28 fd ff ff mov -0x2d8(%rbp),%rsi 0.00 : 56d4b: 0f b6 16 movzbl (%rsi),%edx 0.00 : 56d4e: e9 49 fa ff ff jmpq 5679c <_IO_vfscanf+0x1e0c> 0.00 : 56d53: 41 89 cf mov %ecx,%r15d 0.00 : 56d56: 80 bd bf fc ff ff 00 cmpb $0x0,-0x341(%rbp) 0.00 : 56d5d: 0f 85 93 05 00 00 jne 572f6 <_IO_vfscanf+0x2966> 0.00 : 56d63: 4c 8b a5 30 fd ff ff mov -0x2d0(%rbp),%r12 0.00 : 56d6a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56d71: 4d 85 e4 test %r12,%r12 0.00 : 56d74: 0f 84 d6 25 00 00 je 59350 <_IO_vfscanf+0x49c0> 0.00 : 56d7a: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 56d7f: 0f 85 cb 25 00 00 jne 59350 <_IO_vfscanf+0x49c0> 0.00 : 56d85: 48 8b 95 30 fd ff ff mov -0x2d0(%rbp),%rdx 0.00 : 56d8c: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 56d8f: 0f 84 1c 01 00 00 je 56eb1 <_IO_vfscanf+0x2521> 0.00 : 56d95: 4f 8d 24 36 lea (%r14,%r14,1),%r12 0.00 : 56d99: 48 89 d3 mov %rdx,%rbx 0.00 : 56d9c: eb 1e jmp 56dbc <_IO_vfscanf+0x242c> 0.00 : 56d9e: 66 90 xchg %ax,%ax 0.00 : 56da0: 0f b6 03 movzbl (%rbx),%eax 0.00 : 56da3: 48 83 c3 01 add $0x1,%rbx 0.00 : 56da7: 49 83 c4 02 add $0x2,%r12 0.00 : 56dab: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 56daf: 49 83 c6 01 add $0x1,%r14 0.00 : 56db3: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 56db6: 0f 84 f5 00 00 00 je 56eb1 <_IO_vfscanf+0x2521> 0.00 : 56dbc: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 56dc3: 75 db jne 56da0 <_IO_vfscanf+0x2410> 0.00 : 56dc5: 49 81 fc 00 01 00 00 cmp $0x100,%r12 0.00 : 56dcc: b9 00 01 00 00 mov $0x100,%ecx 0.00 : 56dd1: 49 0f 43 cc cmovae %r12,%rcx 0.00 : 56dd5: 48 89 c8 mov %rcx,%rax 0.00 : 56dd8: 48 89 8d 50 fd ff ff mov %rcx,-0x2b0(%rbp) 0.00 : 56ddf: 48 83 c0 1e add $0x1e,%rax 0.00 : 56de3: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56de7: 48 29 c4 sub %rax,%rsp 0.00 : 56dea: 4c 8d 6c 24 0f lea 0xf(%rsp),%r13 0.00 : 56def: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 56df3: 4d 85 c9 test %r9,%r9 0.00 : 56df6: 0f 84 ea 06 00 00 je 574e6 <_IO_vfscanf+0x2b56> 0.00 : 56dfc: 4c 89 ce mov %r9,%rsi 0.00 : 56dff: 4c 89 f2 mov %r14,%rdx 0.00 : 56e02: 4c 89 ef mov %r13,%rdi 0.00 : 56e05: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 56e0c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56e13: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56e1a: e8 31 d9 02 00 callq 84750 0.00 : 56e1f: 4d 89 e9 mov %r13,%r9 0.00 : 56e22: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56e29: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56e30: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 56e37: e9 64 ff ff ff jmpq 56da0 <_IO_vfscanf+0x2410> 0.00 : 56e3c: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56e42: 85 c0 test %eax,%eax 0.00 : 56e44: 0f 8e c6 0b 00 00 jle 57a10 <_IO_vfscanf+0x3080> 0.00 : 56e4a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56e51: 44 89 85 dc fd ff ff mov %r8d,-0x224(%rbp) 0.00 : 56e58: 4d 89 cc mov %r9,%r12 0.00 : 56e5b: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 56e62: e9 71 f8 ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56e67: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56e6b: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56e6f: 0f 83 27 4a 00 00 jae 5b89c <_IO_vfscanf+0x6f0c> 0.00 : 56e75: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56e79: 48 83 c0 01 add $0x1,%rax 0.00 : 56e7d: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56e81: 41 83 ff 29 cmp $0x29,%r15d 0.00 : 56e85: 0f 85 f3 ee ff ff jne 55d7e <_IO_vfscanf+0x13ee> 0.00 : 56e8b: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 56e92: 00 0.00 : 56e93: 0f 84 03 0b 00 00 je 5799c <_IO_vfscanf+0x300c> 0.00 : 56e99: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 56ea0: 49 83 c3 01 add $0x1,%r11 0.00 : 56ea4: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 56ea9: c6 06 30 movb $0x30,(%rsi) 0.00 : 56eac: e9 51 e4 ff ff jmpq 55302 <_IO_vfscanf+0x972> 0.00 : 56eb1: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56eb7: 4d 89 cc mov %r9,%r12 0.00 : 56eba: 85 c0 test %eax,%eax 0.00 : 56ebc: 0f 8e 16 f8 ff ff jle 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56ec2: 44 89 85 dc fd ff ff mov %r8d,-0x224(%rbp) 0.00 : 56ec9: 4d 89 cc mov %r9,%r12 0.00 : 56ecc: e9 07 f8 ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56ed1: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 56ed8: 08 0.00 : 56ed9: e9 f5 e4 ff ff jmpq 553d3 <_IO_vfscanf+0xa43> 0.00 : 56ede: 4c 8b a5 30 fd ff ff mov -0x2d0(%rbp),%r12 0.00 : 56ee5: e9 f0 ea ff ff jmpq 559da <_IO_vfscanf+0x104a> 0.00 : 56eea: 4c 89 d7 mov %r10,%rdi 0.00 : 56eed: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56ef4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56efb: e8 00 e3 01 00 callq 75200 <__uflow> 0.00 : 56f00: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 56f03: 41 89 c7 mov %eax,%r15d 0.00 : 56f06: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56f0d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56f14: 0f 84 f9 dc ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 56f1a: e9 b6 dd ff ff jmpq 54cd5 <_IO_vfscanf+0x345> 0.00 : 56f1f: 90 nop 0.00 : 56f20: 48 8d 3c 1b lea (%rbx,%rbx,1),%rdi 0.00 : 56f24: b8 00 01 00 00 mov $0x100,%eax 0.00 : 56f29: 48 81 ff 00 01 00 00 cmp $0x100,%rdi 0.00 : 56f30: 48 0f 43 c7 cmovae %rdi,%rax 0.00 : 56f34: 48 89 85 50 fd ff ff mov %rax,-0x2b0(%rbp) 0.00 : 56f3b: 48 83 c0 1e add $0x1e,%rax 0.00 : 56f3f: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56f43: 48 29 c4 sub %rax,%rsp 0.00 : 56f46: 4c 8d 6c 24 0f lea 0xf(%rsp),%r13 0.00 : 56f4b: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 56f4f: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 56f56: 00 0.00 : 56f57: 0f 84 b9 e3 ff ff je 55316 <_IO_vfscanf+0x986> 0.00 : 56f5d: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 56f64: 48 89 da mov %rbx,%rdx 0.00 : 56f67: 4c 89 ef mov %r13,%rdi 0.00 : 56f6a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56f71: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56f78: e8 d3 d7 02 00 callq 84750 0.00 : 56f7d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56f84: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56f8b: e9 86 e3 ff ff jmpq 55316 <_IO_vfscanf+0x986> 0.00 : 56f90: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 56f94: c7 85 dc fd ff ff ff movl $0xffffffff,-0x224(%rbp) 0.00 : 56f9b: ff ff ff 0.00 : 56f9e: e9 2c de ff ff jmpq 54dcf <_IO_vfscanf+0x43f> 0.00 : 56fa3: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 56faa: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 56fb1: 00 01 00 00 0.00 : 56fb5: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 56fba: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 56fbe: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 56fc5: e9 4f ed ff ff jmpq 55d19 <_IO_vfscanf+0x1389> 0.00 : 56fca: 4c 89 d7 mov %r10,%rdi 0.00 : 56fcd: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56fd4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56fdb: e8 20 e2 01 00 callq 75200 <__uflow> 0.00 : 56fe0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 56fe3: 41 89 c7 mov %eax,%r15d 0.00 : 56fe6: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56fed: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56ff4: 0f 85 66 f1 ff ff jne 56160 <_IO_vfscanf+0x17d0> 0.00 : 56ffa: 48 8b 1d 37 ae 31 00 mov 0x31ae37(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57001: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 57008: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5700b: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57011: 4d 89 ec mov %r13,%r12 0.00 : 57014: 45 85 f6 test %r14d,%r14d 0.00 : 57017: 0f 85 d7 dc ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 5701d: 48 8b 9d 40 fd ff ff mov -0x2c0(%rbp),%rbx 0.00 : 57024: c6 03 00 movb $0x0,(%rbx) 0.00 : 57027: 48 83 c3 01 add $0x1,%rbx 0.00 : 5702b: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57032: 21 00 00 0.00 : 57035: 48 89 9d 40 fd ff ff mov %rbx,-0x2c0(%rbp) 0.00 : 5703c: 74 45 je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5703e: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 57045: 48 8b 3e mov (%rsi),%rdi 0.00 : 57048: 48 89 de mov %rbx,%rsi 0.00 : 5704b: 48 29 fe sub %rdi,%rsi 0.00 : 5704e: 4c 39 e6 cmp %r12,%rsi 0.00 : 57051: 74 30 je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57053: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5705a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57061: e8 da 77 fc ff callq 1e840 0.00 : 57066: 48 85 c0 test %rax,%rax 0.00 : 57069: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57070: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57077: 74 0a je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57079: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 57080: 48 89 07 mov %rax,(%rdi) 0.00 : 57083: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 5708a: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 57091: 00 00 00 00 0.00 : 57095: 45 31 ed xor %r13d,%r13d 0.00 : 57098: e9 fe da ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 5709d: f6 85 04 fd ff ff 04 testb $0x4,-0x2fc(%rbp) 0.00 : 570a4: 0f 84 3b 0a 00 00 je 57ae5 <_IO_vfscanf+0x3155> 0.00 : 570aa: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 570b0: 85 c0 test %eax,%eax 0.00 : 570b2: 0f 85 a2 1a 00 00 jne 58b5a <_IO_vfscanf+0x41ca> 0.00 : 570b8: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 570be: 83 f8 30 cmp $0x30,%eax 0.00 : 570c1: 0f 83 ba 10 00 00 jae 58181 <_IO_vfscanf+0x37f1> 0.00 : 570c7: 89 c2 mov %eax,%edx 0.00 : 570c9: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 570d0: 83 c0 08 add $0x8,%eax 0.00 : 570d3: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 570d9: 48 8b 02 mov (%rdx),%rax 0.00 : 570dc: 66 89 08 mov %cx,(%rax) 0.00 : 570df: e9 17 eb ff ff jmpq 55bfb <_IO_vfscanf+0x126b> 0.00 : 570e4: f6 85 04 fd ff ff 04 testb $0x4,-0x2fc(%rbp) 0.00 : 570eb: 0f 84 70 09 00 00 je 57a61 <_IO_vfscanf+0x30d1> 0.00 : 570f1: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 570f7: 85 d2 test %edx,%edx 0.00 : 570f9: 74 bd je 570b8 <_IO_vfscanf+0x2728> 0.00 : 570fb: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 57102: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 57109: 48 8b 07 mov (%rdi),%rax 0.00 : 5710c: 48 89 02 mov %rax,(%rdx) 0.00 : 5710f: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 57113: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5711a: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 5711e: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 57122: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 57126: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5712c: 83 ea 01 sub $0x1,%edx 0.00 : 5712f: 74 17 je 57148 <_IO_vfscanf+0x27b8> 0.00 : 57131: 83 f8 30 cmp $0x30,%eax 0.00 : 57134: 0f 83 2f 03 00 00 jae 57469 <_IO_vfscanf+0x2ad9> 0.00 : 5713a: 83 c0 08 add $0x8,%eax 0.00 : 5713d: 83 ea 01 sub $0x1,%edx 0.00 : 57140: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57146: 75 e9 jne 57131 <_IO_vfscanf+0x27a1> 0.00 : 57148: 83 f8 30 cmp $0x30,%eax 0.00 : 5714b: 0f 83 af 1a 00 00 jae 58c00 <_IO_vfscanf+0x4270> 0.00 : 57151: 89 c2 mov %eax,%edx 0.00 : 57153: 83 c0 08 add $0x8,%eax 0.00 : 57156: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5715d: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57163: e9 71 ff ff ff jmpq 570d9 <_IO_vfscanf+0x2749> 0.00 : 57168: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5716e: 85 c0 test %eax,%eax 0.00 : 57170: 0f 85 11 2b 00 00 jne 59c87 <_IO_vfscanf+0x52f7> 0.00 : 57176: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5717c: 83 f8 30 cmp $0x30,%eax 0.00 : 5717f: 0f 83 eb 2a 00 00 jae 59c70 <_IO_vfscanf+0x52e0> 0.00 : 57185: 89 c2 mov %eax,%edx 0.00 : 57187: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5718e: 83 c0 08 add $0x8,%eax 0.00 : 57191: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57197: 48 8b 12 mov (%rdx),%rdx 0.00 : 5719a: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 571a1: 48 83 bd 40 fd ff ff cmpq $0x0,-0x2c0(%rbp) 0.00 : 571a8: 00 0.00 : 571a9: 0f 84 29 dd ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 571af: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 571b6: e9 46 f3 ff ff jmpq 56501 <_IO_vfscanf+0x1b71> 0.00 : 571bb: 4c 89 d7 mov %r10,%rdi 0.00 : 571be: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 571c5: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 571cc: e8 2f e0 01 00 callq 75200 <__uflow> 0.00 : 571d1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 571d4: 41 89 c7 mov %eax,%r15d 0.00 : 571d7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 571de: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 571e5: 0f 85 d8 30 00 00 jne 5a2c3 <_IO_vfscanf+0x5933> 0.00 : 571eb: 48 8b 1d 46 ac 31 00 mov 0x31ac46(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 571f2: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 571f9: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 571fc: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57202: 45 85 ed test %r13d,%r13d 0.00 : 57205: 0f 85 e9 da ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 5720b: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57212: 21 00 00 0.00 : 57215: 0f 84 68 fe ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5721b: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57222: 48 8b 38 mov (%rax),%rdi 0.00 : 57225: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 5722c: 48 29 f8 sub %rdi,%rax 0.00 : 5722f: 48 c1 f8 02 sar $0x2,%rax 0.00 : 57233: 4c 39 e0 cmp %r12,%rax 0.00 : 57236: 0f 84 47 fe ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5723c: 48 8d 34 85 00 00 00 lea 0x0(,%rax,4),%rsi 0.00 : 57243: 00 0.00 : 57244: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5724b: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57252: e8 e9 75 fc ff callq 1e840 0.00 : 57257: 48 85 c0 test %rax,%rax 0.00 : 5725a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57261: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57268: 0f 84 15 fe ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5726e: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 57275: 48 89 02 mov %rax,(%rdx) 0.00 : 57278: e9 06 fe ff ff jmpq 57083 <_IO_vfscanf+0x26f3> 0.00 : 5727d: 4c 89 d7 mov %r10,%rdi 0.00 : 57280: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57287: e8 74 df 01 00 callq 75200 <__uflow> 0.00 : 5728c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5728f: 41 89 c7 mov %eax,%r15d 0.00 : 57292: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57299: 0f 85 d5 db ff ff jne 54e74 <_IO_vfscanf+0x4e4> 0.00 : 5729f: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 572a6: 8b 3c 1f mov (%rdi,%rbx,1),%edi 0.00 : 572a9: 89 bd 1c fd ff ff mov %edi,-0x2e4(%rbp) 0.00 : 572af: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 572b6: 83 3c 18 04 cmpl $0x4,(%rax,%rbx,1) 0.00 : 572ba: 0f 84 53 d9 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 572c0: 41 bf ff ff ff ff mov $0xffffffff,%r15d 0.00 : 572c6: e9 b1 db ff ff jmpq 54e7c <_IO_vfscanf+0x4ec> 0.00 : 572cb: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 572cf: 0f 84 55 f9 ff ff je 56c2a <_IO_vfscanf+0x229a> 0.00 : 572d5: 4c 89 d7 mov %r10,%rdi 0.00 : 572d8: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 572dc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 572e3: 31 db xor %ebx,%ebx 0.00 : 572e5: e8 66 ce 01 00 callq 74150 <_IO_sputbackc> 0.00 : 572ea: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 572f1: e9 ea db ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 572f6: 80 bd 20 fd ff ff 00 cmpb $0x0,-0x2e0(%rbp) 0.00 : 572fd: 0f 85 60 fa ff ff jne 56d63 <_IO_vfscanf+0x23d3> 0.00 : 57303: 4c 89 e1 mov %r12,%rcx 0.00 : 57306: 48 2b 8d 28 fd ff ff sub -0x2d8(%rbp),%rcx 0.00 : 5730d: 48 85 c9 test %rcx,%rcx 0.00 : 57310: 0f 8e 82 21 00 00 jle 59498 <_IO_vfscanf+0x4b08> 0.00 : 57316: 48 8b 9d 30 fd ff ff mov -0x2d0(%rbp),%rbx 0.00 : 5731d: 48 8b b5 28 fd ff ff mov -0x2d8(%rbp),%rsi 0.00 : 57324: 0f b6 03 movzbl (%rbx),%eax 0.00 : 57327: 3a 06 cmp (%rsi),%al 0.00 : 57329: 0f 85 34 fa ff ff jne 56d63 <_IO_vfscanf+0x23d3> 0.00 : 5732f: 49 89 dc mov %rbx,%r12 0.00 : 57332: ba 01 00 00 00 mov $0x1,%edx 0.00 : 57337: eb 20 jmp 57359 <_IO_vfscanf+0x29c9> 0.00 : 57339: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 57340: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 57347: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 0.00 : 5734b: 48 83 c2 01 add $0x1,%rdx 0.00 : 5734f: 41 38 04 24 cmp %al,(%r12) 0.00 : 57353: 0f 85 13 08 00 00 jne 57b6c <_IO_vfscanf+0x31dc> 0.00 : 57359: 49 83 c4 01 add $0x1,%r12 0.00 : 5735d: 48 39 ca cmp %rcx,%rdx 0.00 : 57360: 48 89 d0 mov %rdx,%rax 0.00 : 57363: 7c db jl 57340 <_IO_vfscanf+0x29b0> 0.00 : 57365: 48 39 c8 cmp %rcx,%rax 0.00 : 57368: 0f 85 fe 07 00 00 jne 57b6c <_IO_vfscanf+0x31dc> 0.00 : 5736e: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 57373: 41 39 c7 cmp %eax,%r15d 0.00 : 57376: 0f 85 f0 07 00 00 jne 57b6c <_IO_vfscanf+0x31dc> 0.00 : 5737c: 49 83 c4 01 add $0x1,%r12 0.00 : 57380: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 57385: 0f 84 e1 07 00 00 je 57b6c <_IO_vfscanf+0x31dc> 0.00 : 5738b: 45 85 c0 test %r8d,%r8d 0.00 : 5738e: 0f 84 d8 07 00 00 je 57b6c <_IO_vfscanf+0x31dc> 0.00 : 57394: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5739b: 49 83 c3 01 add $0x1,%r11 0.00 : 5739f: eb 0c jmp 573ad <_IO_vfscanf+0x2a1d> 0.00 : 573a1: 45 85 c0 test %r8d,%r8d 0.00 : 573a4: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 573a8: 74 3e je 573e8 <_IO_vfscanf+0x2a58> 0.00 : 573aa: 49 89 c3 mov %rax,%r11 0.00 : 573ad: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 573b1: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 573b5: 4d 8d 6b ff lea -0x1(%r11),%r13 0.00 : 573b9: 0f 83 6e 2b 00 00 jae 59f2d <_IO_vfscanf+0x559d> 0.00 : 573bf: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 573c3: 48 83 c0 01 add $0x1,%rax 0.00 : 573c7: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 573cb: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 573d0: 41 83 e8 01 sub $0x1,%r8d 0.00 : 573d4: 44 39 fa cmp %r15d,%edx 0.00 : 573d7: 0f 85 94 f9 ff ff jne 56d71 <_IO_vfscanf+0x23e1> 0.00 : 573dd: 49 83 c4 01 add $0x1,%r12 0.00 : 573e1: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 573e6: 75 b9 jne 573a1 <_IO_vfscanf+0x2a11> 0.00 : 573e8: 41 89 d7 mov %edx,%r15d 0.00 : 573eb: e9 81 f9 ff ff jmpq 56d71 <_IO_vfscanf+0x23e1> 0.00 : 573f0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 573f4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 573f8: 0f 83 a6 3c 00 00 jae 5b0a4 <_IO_vfscanf+0x6714> 0.00 : 573fe: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57402: 48 83 c0 01 add $0x1,%rax 0.00 : 57406: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5740a: 41 0f b6 c7 movzbl %r15b,%eax 0.00 : 5740e: 49 83 c3 01 add $0x1,%r11 0.00 : 57412: 48 c1 e0 02 shl $0x2,%rax 0.00 : 57416: e9 a8 f6 ff ff jmpq 56ac3 <_IO_vfscanf+0x2133> 0.00 : 5741b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5741f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57423: 0f 83 4c 49 00 00 jae 5bd75 <_IO_vfscanf+0x73e5> 0.00 : 57429: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5742d: 48 83 c0 01 add $0x1,%rax 0.00 : 57431: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57435: 41 0f b6 c7 movzbl %r15b,%eax 0.00 : 57439: 49 83 c3 01 add $0x1,%r11 0.00 : 5743d: 48 c1 e0 02 shl $0x2,%rax 0.00 : 57441: e9 b9 f6 ff ff jmpq 56aff <_IO_vfscanf+0x216f> 0.00 : 57446: 4b 8d 34 36 lea (%r14,%r14,1),%rsi 0.00 : 5744a: bf 00 01 00 00 mov $0x100,%edi 0.00 : 5744f: 48 81 fe 00 01 00 00 cmp $0x100,%rsi 0.00 : 57456: 48 0f 43 fe cmovae %rsi,%rdi 0.00 : 5745a: 48 89 bd 50 fd ff ff mov %rdi,-0x2b0(%rbp) 0.00 : 57461: 48 89 f8 mov %rdi,%rax 0.00 : 57464: e9 1d f7 ff ff jmpq 56b86 <_IO_vfscanf+0x21f6> 0.00 : 57469: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 57470: 08 0.00 : 57471: e9 b6 fc ff ff jmpq 5712c <_IO_vfscanf+0x279c> 0.00 : 57476: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5747c: 85 c0 test %eax,%eax 0.00 : 5747e: 0f 85 2b 2b 00 00 jne 59faf <_IO_vfscanf+0x561f> 0.00 : 57484: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5748a: 83 f8 30 cmp $0x30,%eax 0.00 : 5748d: 0f 83 05 2b 00 00 jae 59f98 <_IO_vfscanf+0x5608> 0.00 : 57493: 89 c2 mov %eax,%edx 0.00 : 57495: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5749c: 83 c0 08 add $0x8,%eax 0.00 : 5749f: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 574a5: 48 8b 02 mov (%rdx),%rax 0.00 : 574a8: 0f b6 95 d0 fd ff ff movzbl -0x230(%rbp),%edx 0.00 : 574af: 88 10 mov %dl,(%rax) 0.00 : 574b1: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 574b8: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 574bf: 45 31 ed xor %r13d,%r13d 0.00 : 574c2: e9 d4 d6 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 574c7: 4d 89 e9 mov %r13,%r9 0.00 : 574ca: e9 e9 f2 ff ff jmpq 567b8 <_IO_vfscanf+0x1e28> 0.00 : 574cf: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 574d6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 574da: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 574e1: e9 0f e7 ff ff jmpq 55bf5 <_IO_vfscanf+0x1265> 0.00 : 574e6: 4d 89 e9 mov %r13,%r9 0.00 : 574e9: e9 b2 f8 ff ff jmpq 56da0 <_IO_vfscanf+0x2410> 0.00 : 574ee: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 574f5: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 574fc: 00 01 00 00 0.00 : 57500: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 57505: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 57509: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 57510: 00 0.00 : 57511: 0f 84 1f df ff ff je 55436 <_IO_vfscanf+0xaa6> 0.00 : 57517: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5751e: 4c 89 ca mov %r9,%rdx 0.00 : 57521: 4c 89 e7 mov %r12,%rdi 0.00 : 57524: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5752b: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57532: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57539: e8 12 d2 02 00 callq 84750 0.00 : 5753e: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 57545: 00 01 00 00 0.00 : 57549: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57550: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57557: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5755e: e9 d3 de ff ff jmpq 55436 <_IO_vfscanf+0xaa6> 0.00 : 57563: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 5756a: 0f 85 3f fc ff ff jne 571af <_IO_vfscanf+0x281f> 0.00 : 57570: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57577: 21 00 00 0.00 : 5757a: 0f 84 e8 fb ff ff je 57168 <_IO_vfscanf+0x27d8> 0.00 : 57580: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57586: 85 c0 test %eax,%eax 0.00 : 57588: 0f 85 b2 23 00 00 jne 59940 <_IO_vfscanf+0x4fb0> 0.00 : 5758e: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57594: 83 f8 30 cmp $0x30,%eax 0.00 : 57597: 0f 83 d3 24 00 00 jae 59a70 <_IO_vfscanf+0x50e0> 0.00 : 5759d: 89 c2 mov %eax,%edx 0.00 : 5759f: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 575a6: 83 c0 08 add $0x8,%eax 0.00 : 575a9: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 575af: 48 8b 12 mov (%rdx),%rdx 0.00 : 575b2: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 575b9: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 575c0: 00 0.00 : 575c1: 0f 84 11 d9 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 575c7: bf 64 00 00 00 mov $0x64,%edi 0.00 : 575cc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 575d3: e8 78 72 fc ff callq 1e850 0.00 : 575d8: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 575df: 48 85 c0 test %rax,%rax 0.00 : 575e2: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 575e9: 48 89 02 mov %rax,(%rdx) 0.00 : 575ec: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 575f3: 0f 84 f0 17 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 575f9: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 57600: 00 0.00 : 57601: 0f 84 39 24 00 00 je 59a40 <_IO_vfscanf+0x50b0> 0.00 : 57607: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 5760e: 48 8b 11 mov (%rcx),%rdx 0.00 : 57611: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 57615: 0f 84 25 24 00 00 je 59a40 <_IO_vfscanf+0x50b0> 0.00 : 5761b: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57622: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 57629: 41 bc 64 00 00 00 mov $0x64,%r12d 0.00 : 5762f: 48 89 44 d7 10 mov %rax,0x10(%rdi,%rdx,8) 0.00 : 57634: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 57638: 48 89 07 mov %rax,(%rdi) 0.00 : 5763b: e9 c1 ee ff ff jmpq 56501 <_IO_vfscanf+0x1b71> 0.00 : 57640: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57644: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57648: 0f 83 16 2a 00 00 jae 5a064 <_IO_vfscanf+0x56d4> 0.00 : 5764e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57652: 48 83 c0 01 add $0x1,%rax 0.00 : 57656: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5765a: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 57661: 01 0.00 : 57662: e9 8e ef ff ff jmpq 565f5 <_IO_vfscanf+0x1c65> 0.00 : 57667: 44 8b 85 24 fd ff ff mov -0x2dc(%rbp),%r8d 0.00 : 5766e: 45 85 c0 test %r8d,%r8d 0.00 : 57671: 0f 85 ad 08 00 00 jne 57f24 <_IO_vfscanf+0x3594> 0.00 : 57677: c7 85 24 fd ff ff 10 movl $0x10,-0x2dc(%rbp) 0.00 : 5767e: 00 00 00 0.00 : 57681: 31 c0 xor %eax,%eax 0.00 : 57683: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5768a: 0f 9f c0 setg %al 0.00 : 5768d: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 57693: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 57697: 0f 85 c3 1f 00 00 jne 59660 <_IO_vfscanf+0x4cd0> 0.00 : 5769d: 48 8b 1d 94 a7 31 00 mov 0x31a794(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 576a4: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 576aa: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 576b1: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 576b4: e9 dd dd ff ff jmpq 55496 <_IO_vfscanf+0xb06> 0.00 : 576b9: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 576c0: 0f b6 c0 movzbl %al,%eax 0.00 : 576c3: c6 04 01 01 movb $0x1,(%rcx,%rax,1) 0.00 : 576c7: 48 83 85 c8 fd ff ff addq $0x1,-0x238(%rbp) 0.00 : 576ce: 01 0.00 : 576cf: 48 8b b5 c8 fd ff ff mov -0x238(%rbp),%rsi 0.00 : 576d6: 0f b6 06 movzbl (%rsi),%eax 0.00 : 576d9: e9 ba ee ff ff jmpq 56598 <_IO_vfscanf+0x1c08> 0.00 : 576de: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 576e2: 74 0a je 576ee <_IO_vfscanf+0x2d5e> 0.00 : 576e4: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 576e8: 0f 85 66 f0 ff ff jne 56754 <_IO_vfscanf+0x1dc4> 0.00 : 576ee: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 576f5: 4d 89 cc mov %r9,%r12 0.00 : 576f8: 0f 84 9a 18 00 00 je 58f98 <_IO_vfscanf+0x4608> 0.00 : 576fe: 47 88 3c 34 mov %r15b,(%r12,%r14,1) 0.00 : 57702: 49 83 c6 01 add $0x1,%r14 0.00 : 57706: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5770d: c6 85 21 fd ff ff 01 movb $0x1,-0x2df(%rbp) 0.00 : 57714: e9 bf ef ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 57719: 85 db test %ebx,%ebx 0.00 : 5771b: 0f 84 fb 01 00 00 je 5791c <_IO_vfscanf+0x2f8c> 0.00 : 57721: 41 83 c7 01 add $0x1,%r15d 0.00 : 57725: 0f 84 ed e4 ff ff je 55c18 <_IO_vfscanf+0x1288> 0.00 : 5772b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5772f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57733: 0f 83 1d 39 00 00 jae 5b056 <_IO_vfscanf+0x66c6> 0.00 : 57739: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5773d: 48 83 c0 01 add $0x1,%rax 0.00 : 57741: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57745: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 5774b: 8b 85 04 fd ff ff mov -0x2fc(%rbp),%eax 0.00 : 57751: 48 8d 5d 90 lea -0x70(%rbp),%rbx 0.00 : 57755: 4c 8b b5 d0 fd ff ff mov -0x230(%rbp),%r14 0.00 : 5775c: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 57760: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 57767: 00 0.00 : 57768: 48 89 9d e0 fc ff ff mov %rbx,-0x320(%rbp) 0.00 : 5776f: 45 31 ed xor %r13d,%r13d 0.00 : 57772: 83 e6 08 and $0x8,%esi 0.00 : 57775: 25 00 21 00 00 and $0x2100,%eax 0.00 : 5777a: 48 89 bd 78 fc ff ff mov %rdi,-0x388(%rbp) 0.00 : 57781: 49 83 c6 02 add $0x2,%r14 0.00 : 57785: 89 b5 84 fc ff ff mov %esi,-0x37c(%rbp) 0.00 : 5778b: 89 85 74 fc ff ff mov %eax,-0x38c(%rbp) 0.00 : 57791: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 57798: 49 63 c7 movslq %r15d,%rax 0.00 : 5779b: 0f b6 95 23 fd ff ff movzbl -0x2dd(%rbp),%edx 0.00 : 577a2: 4d 8d 5e ff lea -0x1(%r14),%r11 0.00 : 577a6: 38 14 01 cmp %dl,(%rcx,%rax,1) 0.00 : 577a9: 0f 84 c0 23 00 00 je 59b6f <_IO_vfscanf+0x51df> 0.00 : 577af: 8b 85 84 fc ff ff mov -0x37c(%rbp),%eax 0.00 : 577b5: 4c 89 e3 mov %r12,%rbx 0.00 : 577b8: 85 c0 test %eax,%eax 0.00 : 577ba: 0f 84 d3 00 00 00 je 57893 <_IO_vfscanf+0x2f03> 0.00 : 577c0: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 577c7: 44 8b 8d dc fd ff ff mov -0x224(%rbp),%r9d 0.00 : 577ce: 45 85 c9 test %r9d,%r9d 0.00 : 577d1: 0f 8e 5d 17 00 00 jle 58f34 <_IO_vfscanf+0x45a4> 0.00 : 577d7: 49 89 dc mov %rbx,%r12 0.00 : 577da: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 577de: 0f 85 8c 00 00 00 jne 57870 <_IO_vfscanf+0x2ee0> 0.00 : 577e4: 48 8b 1d 4d a6 31 00 mov 0x31a64d(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 577eb: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 577f1: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 577f8: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 577fb: 4d 85 ed test %r13,%r13 0.00 : 577fe: 0f 85 9a 3c 00 00 jne 5b49e <_IO_vfscanf+0x6b0e> 0.00 : 57804: 4c 39 9d d0 fd ff ff cmp %r11,-0x230(%rbp) 0.00 : 5780b: 0f 84 c7 d6 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57811: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 57818: 0f 85 d6 d4 ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 5781e: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 57825: c7 06 00 00 00 00 movl $0x0,(%rsi) 0.00 : 5782b: 48 83 c6 04 add $0x4,%rsi 0.00 : 5782f: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57836: 21 00 00 0.00 : 57839: 48 89 b5 e0 fd ff ff mov %rsi,-0x220(%rbp) 0.00 : 57840: 0f 84 3d f8 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57846: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 5784d: 48 8b 38 mov (%rax),%rdi 0.00 : 57850: 48 89 f0 mov %rsi,%rax 0.00 : 57853: 48 29 f8 sub %rdi,%rax 0.00 : 57856: 48 c1 f8 02 sar $0x2,%rax 0.00 : 5785a: 4c 39 e0 cmp %r12,%rax 0.00 : 5785d: 0f 84 20 f8 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57863: e9 d4 f9 ff ff jmpq 5723c <_IO_vfscanf+0x28ac> 0.00 : 57868: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5786f: 00 0.00 : 57870: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57874: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57878: 0f 83 9a 27 00 00 jae 5a018 <_IO_vfscanf+0x5688> 0.00 : 5787e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57882: 48 83 c0 01 add $0x1,%rax 0.00 : 57886: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5788a: 49 83 c6 01 add $0x1,%r14 0.00 : 5788e: e9 fe fe ff ff jmpq 57791 <_IO_vfscanf+0x2e01> 0.00 : 57893: 48 8b 8d e0 fc ff ff mov -0x320(%rbp),%rcx 0.00 : 5789a: 48 8b b5 78 fc ff ff mov -0x388(%rbp),%rsi 0.00 : 578a1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 578a6: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 578ad: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 578b4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 578bb: 44 88 7d 80 mov %r15b,-0x80(%rbp) 0.00 : 578bf: e8 cc 54 03 00 callq 8cd90 <__mbrtowc> 0.00 : 578c4: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 578c8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 578cf: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 578d6: 0f 84 0c 07 00 00 je 57fe8 <_IO_vfscanf+0x3658> 0.00 : 578dc: 8b 9d 74 fc ff ff mov -0x38c(%rbp),%ebx 0.00 : 578e2: 48 83 85 e0 fd ff ff addq $0x4,-0x220(%rbp) 0.00 : 578e9: 04 0.00 : 578ea: 85 db test %ebx,%ebx 0.00 : 578ec: 74 23 je 57911 <_IO_vfscanf+0x2f81> 0.00 : 578ee: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 578f5: 4e 8d 2c a5 00 00 00 lea 0x0(,%r12,4),%r13 0.00 : 578fc: 00 0.00 : 578fd: 48 8b 38 mov (%rax),%rdi 0.00 : 57900: 4a 8d 04 2f lea (%rdi,%r13,1),%rax 0.00 : 57904: 48 39 85 e0 fd ff ff cmp %rax,-0x220(%rbp) 0.00 : 5790b: 0f 84 c0 3f 00 00 je 5b8d1 <_IO_vfscanf+0x6f41> 0.00 : 57911: 4c 89 e3 mov %r12,%rbx 0.00 : 57914: 45 31 ed xor %r13d,%r13d 0.00 : 57917: e9 a4 fe ff ff jmpq 577c0 <_IO_vfscanf+0x2e30> 0.00 : 5791c: 41 83 c7 01 add $0x1,%r15d 0.00 : 57920: 0f 85 62 03 00 00 jne 57c88 <_IO_vfscanf+0x32f8> 0.00 : 57926: 48 8b 05 0b a5 31 00 mov 0x31a50b(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5792d: 8b 9d 1c fd ff ff mov -0x2e4(%rbp),%ebx 0.00 : 57933: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5793a: 89 1c 01 mov %ebx,(%rcx,%rax,1) 0.00 : 5793d: e9 d1 d2 ff ff jmpq 54c13 <_IO_vfscanf+0x283> 0.00 : 57942: 4c 89 d7 mov %r10,%rdi 0.00 : 57945: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 5794c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 57953: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5795a: e8 a1 d8 01 00 callq 75200 <__uflow> 0.00 : 5795f: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57962: 41 89 c5 mov %eax,%r13d 0.00 : 57965: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 5796c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 57973: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5797a: 0f 85 aa e0 ff ff jne 55a2a <_IO_vfscanf+0x109a> 0.00 : 57980: 48 8b 1d b1 a4 31 00 mov 0x31a4b1(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57987: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5798e: 8b 1c 18 mov (%rax,%rbx,1),%ebx 9.09 : 57991: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57997: e9 c3 df ff ff jmpq 5595f <_IO_vfscanf+0xfcf> 0.00 : 5799c: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 579a3: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 579aa: 00 01 00 00 0.00 : 579ae: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 579b3: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 579b7: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 579be: e9 d6 f4 ff ff jmpq 56e99 <_IO_vfscanf+0x2509> 0.00 : 579c3: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 579c9: 85 c0 test %eax,%eax 0.00 : 579cb: 0f 85 17 0f 00 00 jne 588e8 <_IO_vfscanf+0x3f58> 0.00 : 579d1: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 579d7: 83 f8 30 cmp $0x30,%eax 0.00 : 579da: 0f 83 f1 0e 00 00 jae 588d1 <_IO_vfscanf+0x3f41> 0.00 : 579e0: 89 c2 mov %eax,%edx 0.00 : 579e2: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 579e9: 83 c0 08 add $0x8,%eax 0.00 : 579ec: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 579f2: 48 8b 12 mov (%rdx),%rdx 0.00 : 579f5: 48 89 95 e0 fd ff ff mov %rdx,-0x220(%rbp) 0.00 : 579fc: 48 83 bd e0 fd ff ff cmpq $0x0,-0x220(%rbp) 0.00 : 57a03: 00 0.00 : 57a04: 0f 85 df da ff ff jne 554e9 <_IO_vfscanf+0xb59> 0.00 : 57a0a: e9 c9 d4 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 57a0f: 90 nop 0.00 : 57a10: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 57a17: 4d 89 cc mov %r9,%r12 0.00 : 57a1a: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 57a21: e9 b2 ec ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 57a26: 4c 89 d7 mov %r10,%rdi 0.00 : 57a29: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57a30: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57a37: e8 c4 d7 01 00 callq 75200 <__uflow> 0.00 : 57a3c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57a3f: 89 c3 mov %eax,%ebx 0.00 : 57a41: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57a48: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57a4f: 0f 85 74 ee ff ff jne 568c9 <_IO_vfscanf+0x1f39> 0.00 : 57a55: 48 8b 1d dc a3 31 00 mov 0x31a3dc(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57a5c: e9 eb dc ff ff jmpq 5574c <_IO_vfscanf+0xdbc> 0.00 : 57a61: f7 85 04 fd ff ff 00 testl $0x200,-0x2fc(%rbp) 0.00 : 57a68: 02 00 00 0.00 : 57a6b: 0f 85 f5 0a 00 00 jne 58566 <_IO_vfscanf+0x3bd6> 0.00 : 57a71: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57a77: 85 c0 test %eax,%eax 0.00 : 57a79: 0f 85 a9 1c 00 00 jne 59728 <_IO_vfscanf+0x4d98> 0.00 : 57a7f: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57a85: 83 f8 30 cmp $0x30,%eax 0.00 : 57a88: 0f 83 22 0c 00 00 jae 586b0 <_IO_vfscanf+0x3d20> 0.00 : 57a8e: 89 c2 mov %eax,%edx 0.00 : 57a90: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 57a97: 83 c0 08 add $0x8,%eax 0.00 : 57a9a: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57aa0: 48 8b 02 mov (%rdx),%rax 0.00 : 57aa3: 89 08 mov %ecx,(%rax) 0.00 : 57aa5: e9 51 e1 ff ff jmpq 55bfb <_IO_vfscanf+0x126b> 0.00 : 57aaa: 4c 89 d7 mov %r10,%rdi 0.00 : 57aad: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57ab4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57abb: e8 40 d7 01 00 callq 75200 <__uflow> 0.00 : 57ac0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57ac3: 89 c3 mov %eax,%ebx 0.00 : 57ac5: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57acc: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57ad3: 0f 85 20 ee ff ff jne 568f9 <_IO_vfscanf+0x1f69> 0.00 : 57ad9: 48 8b 1d 58 a3 31 00 mov 0x31a358(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57ae0: e9 e5 da ff ff jmpq 555ca <_IO_vfscanf+0xc3a> 0.00 : 57ae5: f7 85 04 fd ff ff 00 testl $0x200,-0x2fc(%rbp) 0.00 : 57aec: 02 00 00 0.00 : 57aef: 0f 85 b7 09 00 00 jne 584ac <_IO_vfscanf+0x3b1c> 0.00 : 57af5: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57afb: 85 c0 test %eax,%eax 0.00 : 57afd: 74 80 je 57a7f <_IO_vfscanf+0x30ef> 0.00 : 57aff: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 57b06: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 57b0d: 48 8b 02 mov (%rdx),%rax 0.00 : 57b10: 48 89 03 mov %rax,(%rbx) 0.00 : 57b13: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 57b1a: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 57b1e: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 57b22: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 57b26: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 57b2a: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 57b30: 83 ea 01 sub $0x1,%edx 0.00 : 57b33: 74 17 je 57b4c <_IO_vfscanf+0x31bc> 0.00 : 57b35: 83 f8 30 cmp $0x30,%eax 0.00 : 57b38: 0f 83 f2 04 00 00 jae 58030 <_IO_vfscanf+0x36a0> 0.00 : 57b3e: 83 c0 08 add $0x8,%eax 0.00 : 57b41: 83 ea 01 sub $0x1,%edx 0.00 : 57b44: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57b4a: 75 e9 jne 57b35 <_IO_vfscanf+0x31a5> 0.00 : 57b4c: 83 f8 30 cmp $0x30,%eax 0.00 : 57b4f: 0f 83 72 0b 00 00 jae 586c7 <_IO_vfscanf+0x3d37> 0.00 : 57b55: 89 c2 mov %eax,%edx 0.00 : 57b57: 83 c0 08 add $0x8,%eax 0.00 : 57b5a: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 57b61: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57b67: e9 34 ff ff ff jmpq 57aa0 <_IO_vfscanf+0x3110> 0.00 : 57b6c: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 57b73: e9 f9 f1 ff ff jmpq 56d71 <_IO_vfscanf+0x23e1> 0.00 : 57b78: 8b bd 5c fd ff ff mov -0x2a4(%rbp),%edi 0.00 : 57b7e: 85 ff test %edi,%edi 0.00 : 57b80: 0f 85 c5 0c 00 00 jne 5884b <_IO_vfscanf+0x3ebb> 0.00 : 57b86: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57b8c: 83 f8 30 cmp $0x30,%eax 0.00 : 57b8f: 0f 83 9f 0c 00 00 jae 58834 <_IO_vfscanf+0x3ea4> 0.00 : 57b95: 89 c2 mov %eax,%edx 0.00 : 57b97: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 57b9e: 83 c0 08 add $0x8,%eax 0.00 : 57ba1: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57ba7: 48 8b 12 mov (%rdx),%rdx 0.00 : 57baa: 48 89 95 e0 fd ff ff mov %rdx,-0x220(%rbp) 0.00 : 57bb1: 48 83 bd e0 fd ff ff cmpq $0x0,-0x220(%rbp) 0.00 : 57bb8: 00 0.00 : 57bb9: 0f 85 4d da ff ff jne 5560c <_IO_vfscanf+0xc7c> 0.00 : 57bbf: e9 14 d3 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 57bc4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 57bc8: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 57bcf: 00 0.00 : 57bd0: 75 22 jne 57bf4 <_IO_vfscanf+0x3264> 0.00 : 57bd2: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 57bd9: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 57be0: 00 01 00 00 0.00 : 57be4: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 57be9: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 57bed: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 57bf4: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 57bfb: 44 88 3e mov %r15b,(%rsi) 0.00 : 57bfe: 44 8b ad dc fd ff ff mov -0x224(%rbp),%r13d 0.00 : 57c05: 45 85 ed test %r13d,%r13d 0.00 : 57c08: 0f 84 ca d2 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57c0e: 41 83 c7 01 add $0x1,%r15d 0.00 : 57c12: 0f 85 cf 09 00 00 jne 585e7 <_IO_vfscanf+0x3c57> 0.00 : 57c18: 48 8b 05 19 a2 31 00 mov 0x31a219(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57c1f: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 57c25: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 57c2c: 89 14 07 mov %edx,(%rdi,%rax,1) 0.00 : 57c2f: e9 a4 d2 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 57c34: 44 8b b5 dc fd ff ff mov -0x224(%rbp),%r14d 0.00 : 57c3b: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 57c3f: 0f 94 85 22 fd ff ff sete -0x2de(%rbp) 0.00 : 57c46: 45 85 f6 test %r14d,%r14d 0.00 : 57c49: 0f 84 89 d2 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57c4f: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57c53: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57c57: 0f 83 3f 25 00 00 jae 5a19c <_IO_vfscanf+0x580c> 0.00 : 57c5d: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57c61: 48 83 c0 01 add $0x1,%rax 0.00 : 57c65: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57c69: 31 c0 xor %eax,%eax 0.00 : 57c6b: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 57c72: 01 0.00 : 57c73: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 57c7a: 0f 9f c0 setg %al 0.00 : 57c7d: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 57c83: e9 a4 e9 ff ff jmpq 5662c <_IO_vfscanf+0x1c9c> 0.00 : 57c88: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57c8c: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57c90: 0f 83 fb 32 00 00 jae 5af91 <_IO_vfscanf+0x6601> 0.00 : 57c96: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57c9a: 48 83 c0 01 add $0x1,%rax 0.00 : 57c9e: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57ca2: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 57ca8: 8b bd 04 fd ff ff mov -0x2fc(%rbp),%edi 0.00 : 57cae: 4c 8b ad d0 fd ff ff mov -0x230(%rbp),%r13 0.00 : 57cb5: 83 e6 08 and $0x8,%esi 0.00 : 57cb8: 81 e7 00 21 00 00 and $0x2100,%edi 0.00 : 57cbe: 49 83 c5 02 add $0x2,%r13 0.00 : 57cc2: 89 b5 70 fc ff ff mov %esi,-0x390(%rbp) 0.00 : 57cc8: 89 bd 6c fc ff ff mov %edi,-0x394(%rbp) 0.00 : 57cce: eb 3d jmp 57d0d <_IO_vfscanf+0x337d> 0.00 : 57cd0: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 57cd7: 8b 8d dc fd ff ff mov -0x224(%rbp),%ecx 0.00 : 57cdd: 85 c9 test %ecx,%ecx 0.00 : 57cdf: 0f 8e 37 01 00 00 jle 57e1c <_IO_vfscanf+0x348c> 0.00 : 57ce5: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 57ce9: 0f 84 6b 13 00 00 je 5905a <_IO_vfscanf+0x46ca> 0.00 : 57cef: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57cf3: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57cf7: 0f 83 d8 00 00 00 jae 57dd5 <_IO_vfscanf+0x3445> 0.00 : 57cfd: 44 0f b6 38 movzbl (%rax),%r15d 9.09 : 57d01: 48 83 c0 01 add $0x1,%rax 0.00 : 57d05: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57d09: 49 83 c5 01 add $0x1,%r13 0.00 : 57d0d: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 57d14: 49 63 c7 movslq %r15d,%rax 0.00 : 57d17: 0f b6 95 23 fd ff ff movzbl -0x2dd(%rbp),%edx 0.00 : 57d1e: 4d 8d 5d ff lea -0x1(%r13),%r11 0.00 : 57d22: 38 14 01 cmp %dl,(%rcx,%rax,1) 0.00 : 57d25: 0f 84 75 1e 00 00 je 59ba0 <_IO_vfscanf+0x5210> 0.00 : 57d2b: 8b bd 70 fc ff ff mov -0x390(%rbp),%edi 0.00 : 57d31: 85 ff test %edi,%edi 0.00 : 57d33: 75 9b jne 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57d35: 48 8b 9d 40 fd ff ff mov -0x2c0(%rbp),%rbx 0.00 : 57d3c: 44 88 3b mov %r15b,(%rbx) 0.00 : 57d3f: 8b b5 6c fc ff ff mov -0x394(%rbp),%esi 0.00 : 57d45: 48 83 c3 01 add $0x1,%rbx 0.00 : 57d49: 48 89 9d 40 fd ff ff mov %rbx,-0x2c0(%rbp) 0.00 : 57d50: 85 f6 test %esi,%esi 0.00 : 57d52: 0f 84 78 ff ff ff je 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57d58: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 57d5f: 48 8b 3e mov (%rsi),%rdi 0.00 : 57d62: 4a 8d 04 27 lea (%rdi,%r12,1),%rax 0.00 : 57d66: 48 39 c3 cmp %rax,%rbx 0.00 : 57d69: 0f 85 61 ff ff ff jne 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57d6f: 4b 8d 1c 24 lea (%r12,%r12,1),%rbx 0.00 : 57d73: 4d 8d 74 24 01 lea 0x1(%r12),%r14 0.00 : 57d78: eb 16 jmp 57d90 <_IO_vfscanf+0x3400> 0.00 : 57d7a: 4c 39 f3 cmp %r14,%rbx 0.00 : 57d7d: 0f 86 80 1c 00 00 jbe 59a03 <_IO_vfscanf+0x5073> 0.00 : 57d83: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57d8a: 4c 89 f3 mov %r14,%rbx 0.00 : 57d8d: 48 8b 38 mov (%rax),%rdi 0.00 : 57d90: 48 89 de mov %rbx,%rsi 0.00 : 57d93: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57d9a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57da1: e8 9a 6a fc ff callq 1e840 0.00 : 57da6: 48 85 c0 test %rax,%rax 0.00 : 57da9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57db0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57db7: 74 c1 je 57d7a <_IO_vfscanf+0x33ea> 0.00 : 57db9: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 57dc0: 48 89 01 mov %rax,(%rcx) 0.00 : 57dc3: 4c 01 e0 add %r12,%rax 0.00 : 57dc6: 49 89 dc mov %rbx,%r12 0.00 : 57dc9: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 57dd0: e9 fb fe ff ff jmpq 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57dd5: 4c 89 d7 mov %r10,%rdi 0.00 : 57dd8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57ddf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57de6: e8 15 d4 01 00 callq 75200 <__uflow> 0.00 : 57deb: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57dee: 41 89 c7 mov %eax,%r15d 0.00 : 57df1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57df8: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57dff: 0f 85 04 ff ff ff jne 57d09 <_IO_vfscanf+0x3379> 0.00 : 57e05: 48 8b 1d 2c a0 31 00 mov 0x31a02c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57e0c: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 57e13: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 57e16: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57e1c: 4c 39 9d d0 fd ff ff cmp %r11,-0x230(%rbp) 0.00 : 57e23: 0f 84 af d0 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57e29: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 57e30: 0f 85 be ce ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 57e36: 48 8b 95 40 fd ff ff mov -0x2c0(%rbp),%rdx 0.00 : 57e3d: c6 02 00 movb $0x0,(%rdx) 0.00 : 57e40: 48 83 c2 01 add $0x1,%rdx 0.00 : 57e44: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57e4b: 21 00 00 0.00 : 57e4e: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 57e55: 0f 84 28 f2 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57e5b: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 57e62: 48 89 d6 mov %rdx,%rsi 0.00 : 57e65: 48 8b 39 mov (%rcx),%rdi 0.00 : 57e68: 48 29 fe sub %rdi,%rsi 0.00 : 57e6b: 4c 39 e6 cmp %r12,%rsi 0.00 : 57e6e: 0f 84 0f f2 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57e74: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57e7b: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57e82: e8 b9 69 fc ff callq 1e840 0.00 : 57e87: 48 85 c0 test %rax,%rax 0.00 : 57e8a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57e91: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57e98: 0f 84 e5 f1 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57e9e: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 57ea5: 48 89 03 mov %rax,(%rbx) 0.00 : 57ea8: e9 d6 f1 ff ff jmpq 57083 <_IO_vfscanf+0x26f3> 0.00 : 57ead: 4c 89 d7 mov %r10,%rdi 0.00 : 57eb0: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57eb7: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57ebe: e8 3d d3 01 00 callq 75200 <__uflow> 0.00 : 57ec3: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57ec6: 41 89 c7 mov %eax,%r15d 0.00 : 57ec9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57ed0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57ed7: 0f 85 1d e5 ff ff jne 563fa <_IO_vfscanf+0x1a6a> 0.00 : 57edd: 48 8b 1d 54 9f 31 00 mov 0x319f54(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57ee4: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 57eeb: 8b 1c 1a mov (%rdx,%rbx,1),%ebx 0.00 : 57eee: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57ef4: 8b 85 9c fd ff ff mov -0x264(%rbp),%eax 0.00 : 57efa: 85 c0 test %eax,%eax 0.00 : 57efc: 0f 84 81 f1 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57f02: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57f09: 48 8b b5 40 fd ff ff mov -0x2c0(%rbp),%rsi 0.00 : 57f10: 48 8b 38 mov (%rax),%rdi 0.00 : 57f13: 48 29 fe sub %rdi,%rsi 0.00 : 57f16: 49 39 f4 cmp %rsi,%r12 0.00 : 57f19: 0f 84 64 f1 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57f1f: e9 20 f3 ff ff jmpq 57244 <_IO_vfscanf+0x28b4> 0.00 : 57f24: 83 bd 24 fd ff ff 10 cmpl $0x10,-0x2dc(%rbp) 0.00 : 57f2b: 0f 85 65 d5 ff ff jne 55496 <_IO_vfscanf+0xb06> 0.00 : 57f31: e9 4b f7 ff ff jmpq 57681 <_IO_vfscanf+0x2cf1> 0.00 : 57f36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 57f3d: 00 00 00 0.00 : 57f40: 49 8d 5e 01 lea 0x1(%r14),%rbx 0.00 : 57f44: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 57f4b: 4c 8d 5b ff lea -0x1(%rbx),%r11 0.00 : 57f4f: 44 8b 8d dc fd ff ff mov -0x224(%rbp),%r9d 0.00 : 57f56: 45 85 c9 test %r9d,%r9d 0.00 : 57f59: 0f 8e 8e cd ff ff jle 54ced <_IO_vfscanf+0x35d> 0.00 : 57f5f: 41 83 c7 01 add $0x1,%r15d 0.00 : 57f63: 0f 84 1a 17 00 00 je 59683 <_IO_vfscanf+0x4cf3> 0.00 : 57f69: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57f6d: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57f71: 0f 83 4c 22 00 00 jae 5a1c3 <_IO_vfscanf+0x5833> 0.00 : 57f77: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57f7b: 48 83 c0 01 add $0x1,%rax 0.00 : 57f7f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57f83: 48 83 c3 01 add $0x1,%rbx 0.00 : 57f87: eb bb jmp 57f44 <_IO_vfscanf+0x35b4> 0.00 : 57f89: f6 85 04 fd ff ff 04 testb $0x4,-0x2fc(%rbp) 0.00 : 57f90: 0f 84 8a 0d 00 00 je 58d20 <_IO_vfscanf+0x4390> 0.00 : 57f96: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57f9c: 85 c0 test %eax,%eax 0.00 : 57f9e: 0f 85 02 15 00 00 jne 594a6 <_IO_vfscanf+0x4b16> 0.00 : 57fa4: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57faa: 83 f8 30 cmp $0x30,%eax 0.00 : 57fad: 0f 83 cf 17 00 00 jae 59782 <_IO_vfscanf+0x4df2> 0.00 : 57fb3: 89 c2 mov %eax,%edx 0.00 : 57fb5: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 57fbc: 83 c0 08 add $0x8,%eax 0.00 : 57fbf: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57fc5: 0f b7 9d d0 fd ff ff movzwl -0x230(%rbp),%ebx 0.00 : 57fcc: 48 8b 02 mov (%rdx),%rax 0.00 : 57fcf: 45 31 ed xor %r13d,%r13d 0.00 : 57fd2: 66 89 18 mov %bx,(%rax) 0.00 : 57fd5: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 57fdc: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 57fe3: e9 b3 cb ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 57fe8: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 57fef: 48 8b 1d 92 9d 31 00 mov 0x319d92(%rip),%rbx # 371d88 <_DYNAMIC+0x228> 0.00 : 57ff6: 49 83 c5 01 add $0x1,%r13 0.00 : 57ffa: 48 8b 04 1e mov (%rsi,%rbx,1),%rax 0.00 : 57ffe: 48 8b 00 mov (%rax),%rax 0.00 : 58001: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 58007: 49 39 c5 cmp %rax,%r13 0.00 : 5800a: 0f 82 ca f7 ff ff jb 577da <_IO_vfscanf+0x2e4a> 0.00 : 58010: 48 8d 0d 39 a9 0e 00 lea 0xea939(%rip),%rcx # 142950 <__PRETTY_FUNCTION__.14803> 0.00 : 58017: 48 8d 35 51 2d 0e 00 lea 0xe2d51(%rip),%rsi # 13ad6f <__PRETTY_FUNCTION__.14584+0x19> 0.00 : 5801e: 48 8d 3d 3b 69 0e 00 lea 0xe693b(%rip),%rdi # 13e960 <__PRETTY_FUNCTION__.11129+0xf87> 0.00 : 58025: ba bf 09 00 00 mov $0x9bf,%edx 0.00 : 5802a: e8 f1 38 fd ff callq 2b920 <__assert_fail> 0.00 : 5802f: 90 nop 0.00 : 58030: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58037: 08 0.00 : 58038: e9 f3 fa ff ff jmpq 57b30 <_IO_vfscanf+0x31a0> 0.00 : 5803d: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 58044: 00 0.00 : 58045: 0f 84 1e 11 00 00 je 59169 <_IO_vfscanf+0x47d9> 0.00 : 5804b: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 58052: 44 88 3a mov %r15b,(%rdx) 0.00 : 58055: 44 8b 9d dc fd ff ff mov -0x224(%rbp),%r11d 0.00 : 5805c: 45 85 db test %r11d,%r11d 0.00 : 5805f: 0f 84 73 ce ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58065: 41 83 c7 01 add $0x1,%r15d 0.00 : 58069: 0f 85 eb 08 00 00 jne 5895a <_IO_vfscanf+0x3fca> 0.00 : 5806f: 48 8b 05 c2 9d 31 00 mov 0x319dc2(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 58076: 8b 9d 1c fd ff ff mov -0x2e4(%rbp),%ebx 0.00 : 5807c: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 58083: 89 1c 01 mov %ebx,(%rcx,%rax,1) 0.00 : 58086: e9 4d ce ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5808b: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 58092: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 58099: 48 8b 07 mov (%rdi),%rax 0.00 : 5809c: 48 89 02 mov %rax,(%rdx) 0.00 : 5809f: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 580a3: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 580aa: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 580ae: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 580b2: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 580b6: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 580bc: 83 ea 01 sub $0x1,%edx 0.00 : 580bf: 0f 84 2a d3 ff ff je 553ef <_IO_vfscanf+0xa5f> 0.00 : 580c5: 83 f8 30 cmp $0x30,%eax 0.00 : 580c8: 73 16 jae 580e0 <_IO_vfscanf+0x3750> 0.00 : 580ca: 83 c0 08 add $0x8,%eax 0.00 : 580cd: 83 ea 01 sub $0x1,%edx 0.00 : 580d0: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 580d6: 75 ed jne 580c5 <_IO_vfscanf+0x3735> 0.00 : 580d8: e9 12 d3 ff ff jmpq 553ef <_IO_vfscanf+0xa5f> 0.00 : 580dd: 0f 1f 00 nopl (%rax) 0.00 : 580e0: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 580e7: 08 0.00 : 580e8: eb d2 jmp 580bc <_IO_vfscanf+0x372c> 0.00 : 580ea: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 580f1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 580f5: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 580fc: e9 f4 da ff ff jmpq 55bf5 <_IO_vfscanf+0x1265> 0.00 : 58101: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 58108: 00 0.00 : 58109: 0f 84 f2 15 00 00 je 59701 <_IO_vfscanf+0x4d71> 0.00 : 5810f: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 58116: c6 06 30 movb $0x30,(%rsi) 0.00 : 58119: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5811d: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 58121: 0f 83 d0 30 00 00 jae 5b1f7 <_IO_vfscanf+0x6867> 0.00 : 58127: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5812b: 48 83 c0 01 add $0x1,%rax 0.00 : 5812f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58133: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 5813a: 01 0.00 : 5813b: 31 c0 xor %eax,%eax 0.00 : 5813d: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58144: 0f 9f c0 setg %al 0.00 : 58147: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5814d: 74 19 je 58168 <_IO_vfscanf+0x37d8> 0.00 : 5814f: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 58156: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5815a: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 5815e: 83 3c 90 78 cmpl $0x78,(%rax,%rdx,4) 0.00 : 58162: 0f 84 a8 12 00 00 je 59410 <_IO_vfscanf+0x4a80> 0.00 : 58168: 4c 8b 8d f0 fd ff ff mov -0x210(%rbp),%r9 0.00 : 5816f: c6 85 1f fe ff ff 65 movb $0x65,-0x1e1(%rbp) 0.00 : 58176: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 5817c: e9 f4 e4 ff ff jmpq 56675 <_IO_vfscanf+0x1ce5> 0.00 : 58181: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58188: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5818c: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58193: e9 41 ef ff ff jmpq 570d9 <_IO_vfscanf+0x2749> 0.00 : 58198: 48 8b 1d 99 9c 31 00 mov 0x319c99(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5819f: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 581a5: 4d 89 e1 mov %r12,%r9 0.00 : 581a8: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 581af: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 581b2: f7 85 04 fd ff ff 00 testl $0x400,-0x2fc(%rbp) 0.00 : 581b9: 04 00 00 0.00 : 581bc: 0f 85 61 37 00 00 jne 5b923 <_IO_vfscanf+0x6f93> 0.00 : 581c2: 4d 85 f6 test %r14,%r14 0.00 : 581c5: 0f 84 0d cd ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 581cb: f7 85 04 fd ff ff 00 testl $0x800,-0x2fc(%rbp) 0.00 : 581d2: 08 00 00 0.00 : 581d5: 74 0a je 581e1 <_IO_vfscanf+0x3851> 0.00 : 581d7: 49 83 fe 02 cmp $0x2,%r14 0.00 : 581db: 0f 84 f7 cc ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 581e1: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 581e8: 4c 89 8d f0 fd ff ff mov %r9,-0x210(%rbp) 0.00 : 581ef: 0f 84 3d 02 00 00 je 58432 <_IO_vfscanf+0x3aa2> 0.00 : 581f5: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 581fc: 42 c6 04 37 00 movb $0x0,(%rdi,%r14,1) 0.00 : 58201: f6 85 04 fd ff ff 02 testb $0x2,-0x2fc(%rbp) 0.00 : 58208: 0f 85 8a 01 00 00 jne 58398 <_IO_vfscanf+0x3a08> 0.00 : 5820e: f6 85 04 fd ff ff 03 testb $0x3,-0x2fc(%rbp) 0.00 : 58215: 0f 84 d9 00 00 00 je 582f4 <_IO_vfscanf+0x3964> 0.00 : 5821b: 8b 95 04 fd ff ff mov -0x2fc(%rbp),%edx 0.00 : 58221: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 58228: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 5822c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58233: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5823a: 81 e2 80 00 00 00 and $0x80,%edx 0.00 : 58240: e8 9b f2 fd ff callq 374e0 <__strtod_internal> 0.00 : 58245: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 5824c: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 58250: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58257: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5825e: 75 60 jne 582c0 <_IO_vfscanf+0x3930> 0.00 : 58260: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 58267: 48 39 75 b8 cmp %rsi,-0x48(%rbp) 0.00 : 5826b: 0f 84 67 cc ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58271: 8b 8d 5c fd ff ff mov -0x2a4(%rbp),%ecx 0.00 : 58277: 85 c9 test %ecx,%ecx 0.00 : 58279: 0f 85 21 11 00 00 jne 593a0 <_IO_vfscanf+0x4a10> 0.00 : 5827f: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58285: 83 f8 30 cmp $0x30,%eax 0.00 : 58288: 0f 83 b5 0d 00 00 jae 59043 <_IO_vfscanf+0x46b3> 0.00 : 5828e: 89 c2 mov %eax,%edx 0.00 : 58290: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58297: 83 c0 08 add $0x8,%eax 0.00 : 5829a: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 582a0: 80 bd 22 fd ff ff 00 cmpb $0x0,-0x2de(%rbp) 0.00 : 582a7: 48 8b 02 mov (%rdx),%rax 0.00 : 582aa: 74 0c je 582b8 <_IO_vfscanf+0x3928> 0.00 : 582ac: f2 0f 10 05 dc b7 0e movsd 0xeb7dc(%rip),%xmm0 # 143a90 0.00 : 582b3: 00 0.00 : 582b4: 66 0f 57 c8 xorpd %xmm0,%xmm1 0.00 : 582b8: f2 0f 11 08 movsd %xmm1,(%rax) 0.00 : 582bc: eb 02 jmp 582c0 <_IO_vfscanf+0x3930> 0.00 : 582be: dd d8 fstp %st(0) 0.00 : 582c0: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 582c7: 48 39 45 b8 cmp %rax,-0x48(%rbp) 0.00 : 582cb: 0f 84 07 cc ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 582d1: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 582d8: 0f 85 0f ca ff ff jne 54ced <_IO_vfscanf+0x35d> 0.00 : 582de: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 582e5: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 582ec: 45 31 ed xor %r13d,%r13d 0.00 : 582ef: e9 a7 c8 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 582f4: 8b 95 04 fd ff ff mov -0x2fc(%rbp),%edx 0.00 : 582fa: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 58301: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 58305: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5830c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58313: 81 e2 80 00 00 00 and $0x80,%edx 0.00 : 58319: e8 82 f1 fd ff callq 374a0 <__strtof_internal> 0.00 : 5831e: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 58325: 0f 28 c8 movaps %xmm0,%xmm1 0.00 : 58328: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5832f: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58336: 75 88 jne 582c0 <_IO_vfscanf+0x3930> 0.00 : 58338: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5833f: 48 39 5d b8 cmp %rbx,-0x48(%rbp) 0.00 : 58343: 0f 84 8f cb ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58349: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5834f: 85 d2 test %edx,%edx 0.00 : 58351: 0f 85 90 0f 00 00 jne 592e7 <_IO_vfscanf+0x4957> 0.00 : 58357: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5835d: 83 f8 30 cmp $0x30,%eax 0.00 : 58360: 0f 83 6a 0f 00 00 jae 592d0 <_IO_vfscanf+0x4940> 0.00 : 58366: 89 c2 mov %eax,%edx 0.00 : 58368: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5836f: 83 c0 08 add $0x8,%eax 0.00 : 58372: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58378: 80 bd 22 fd ff ff 00 cmpb $0x0,-0x2de(%rbp) 0.00 : 5837f: 48 8b 02 mov (%rdx),%rax 0.00 : 58382: 74 0b je 5838f <_IO_vfscanf+0x39ff> 0.00 : 58384: f3 0f 10 05 24 b7 0e movss 0xeb724(%rip),%xmm0 # 143ab0 0.00 : 5838b: 00 0.00 : 5838c: 0f 57 c8 xorps %xmm0,%xmm1 0.00 : 5838f: f3 0f 11 08 movss %xmm1,(%rax) 0.00 : 58393: e9 28 ff ff ff jmpq 582c0 <_IO_vfscanf+0x3930> 0.00 : 58398: 8b 95 04 fd ff ff mov -0x2fc(%rbp),%edx 0.00 : 5839e: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 583a5: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 583a9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 583b0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 583b7: 81 e2 80 00 00 00 and $0x80,%edx 0.00 : 583bd: e8 5e f1 fd ff callq 37520 <__strtold_internal> 0.00 : 583c2: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 583c9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 583d0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 583d7: 0f 85 e1 fe ff ff jne 582be <_IO_vfscanf+0x392e> 0.00 : 583dd: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 583e4: 48 39 45 b8 cmp %rax,-0x48(%rbp) 0.00 : 583e8: 0f 84 e5 ca ff ff je 54ed3 <_IO_vfscanf+0x543> 0.00 : 583ee: 8b b5 5c fd ff ff mov -0x2a4(%rbp),%esi 0.00 : 583f4: 85 f6 test %esi,%esi 0.00 : 583f6: 0f 85 5b 0e 00 00 jne 59257 <_IO_vfscanf+0x48c7> 0.00 : 583fc: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58402: 83 f8 30 cmp $0x30,%eax 0.00 : 58405: 0f 83 35 0e 00 00 jae 59240 <_IO_vfscanf+0x48b0> 0.00 : 5840b: 89 c2 mov %eax,%edx 0.00 : 5840d: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58414: 83 c0 08 add $0x8,%eax 0.00 : 58417: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 5841d: 80 bd 22 fd ff ff 00 cmpb $0x0,-0x2de(%rbp) 0.00 : 58424: 48 8b 02 mov (%rdx),%rax 0.00 : 58427: 74 02 je 5842b <_IO_vfscanf+0x3a9b> 0.00 : 58429: d9 e0 fchs 0.00 : 5842b: db 38 fstpt (%rax) 0.00 : 5842d: e9 8e fe ff ff jmpq 582c0 <_IO_vfscanf+0x3930> 0.00 : 58432: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 58436: b8 00 01 00 00 mov $0x100,%eax 0.00 : 5843b: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 58442: 48 0f 43 c3 cmovae %rbx,%rax 0.00 : 58446: 48 89 85 50 fd ff ff mov %rax,-0x2b0(%rbp) 0.00 : 5844d: 48 83 c0 1e add $0x1e,%rax 0.00 : 58451: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58455: 48 29 c4 sub %rax,%rsp 0.00 : 58458: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5845d: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 58461: 4d 85 c9 test %r9,%r9 0.00 : 58464: 48 89 b5 f0 fd ff ff mov %rsi,-0x210(%rbp) 0.00 : 5846b: 0f 84 84 fd ff ff je 581f5 <_IO_vfscanf+0x3865> 0.00 : 58471: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 58478: 4c 89 f2 mov %r14,%rdx 0.00 : 5847b: 4c 89 ce mov %r9,%rsi 0.00 : 5847e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58485: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5848c: e8 bf c2 02 00 callq 84750 0.00 : 58491: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58498: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5849f: e9 51 fd ff ff jmpq 581f5 <_IO_vfscanf+0x3865> 0.00 : 584a4: 4d 89 e1 mov %r12,%r9 0.00 : 584a7: e9 06 fd ff ff jmpq 581b2 <_IO_vfscanf+0x3822> 0.00 : 584ac: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 584b2: 85 c0 test %eax,%eax 0.00 : 584b4: 0f 85 66 13 00 00 jne 59820 <_IO_vfscanf+0x4e90> 0.00 : 584ba: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 584c0: 83 f8 30 cmp $0x30,%eax 0.00 : 584c3: 0f 83 07 06 00 00 jae 58ad0 <_IO_vfscanf+0x4140> 0.00 : 584c9: 89 c2 mov %eax,%edx 0.00 : 584cb: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 584d2: 83 c0 08 add $0x8,%eax 0.00 : 584d5: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 584db: 48 8b 02 mov (%rdx),%rax 0.00 : 584de: 88 08 mov %cl,(%rax) 0.00 : 584e0: e9 16 d7 ff ff jmpq 55bfb <_IO_vfscanf+0x126b> 0.00 : 584e5: 48 8b 85 a0 fc ff ff mov -0x360(%rbp),%rax 0.00 : 584ec: 48 2b 85 a8 fd ff ff sub -0x258(%rbp),%rax 0.00 : 584f3: 48 8b 95 90 fc ff ff mov -0x370(%rbp),%rdx 0.00 : 584fa: 48 2b 95 a8 fd ff ff sub -0x258(%rbp),%rdx 0.00 : 58501: 48 39 85 e8 fd ff ff cmp %rax,-0x218(%rbp) 0.00 : 58508: 48 8b b5 e8 fd ff ff mov -0x218(%rbp),%rsi 0.00 : 5850f: 48 0f 4e 95 e8 fd ff cmovle -0x218(%rbp),%rdx 0.00 : 58516: ff 0.00 : 58517: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5851e: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58525: 4c 8d 24 32 lea (%rdx,%rsi,1),%r12 0.00 : 58529: 4a 8d 34 a5 00 00 00 lea 0x0(,%r12,4),%rsi 0.00 : 58530: 00 0.00 : 58531: e8 0a 63 fc ff callq 1e840 0.00 : 58536: 48 85 c0 test %rax,%rax 0.00 : 58539: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58540: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58547: 0f 84 e8 2c 00 00 je 5b235 <_IO_vfscanf+0x68a5> 0.00 : 5854d: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 58554: 48 89 01 mov %rax,(%rcx) 0.00 : 58557: 48 01 d8 add %rbx,%rax 0.00 : 5855a: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 58561: e9 6d d1 ff ff jmpq 556d3 <_IO_vfscanf+0xd43> 0.00 : 58566: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5856c: 85 c0 test %eax,%eax 0.00 : 5856e: 0f 84 46 ff ff ff je 584ba <_IO_vfscanf+0x3b2a> 0.00 : 58574: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 5857b: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 58582: 48 8b 02 mov (%rdx),%rax 0.00 : 58585: 48 89 03 mov %rax,(%rbx) 0.00 : 58588: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 5858f: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58593: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 58597: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 5859b: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 5859f: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 585a5: 83 ea 01 sub $0x1,%edx 0.00 : 585a8: 74 13 je 585bd <_IO_vfscanf+0x3c2d> 0.00 : 585aa: 83 f8 30 cmp $0x30,%eax 0.00 : 585ad: 73 2e jae 585dd <_IO_vfscanf+0x3c4d> 0.00 : 585af: 83 c0 08 add $0x8,%eax 0.00 : 585b2: 83 ea 01 sub $0x1,%edx 0.00 : 585b5: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 585bb: 75 ed jne 585aa <_IO_vfscanf+0x3c1a> 0.00 : 585bd: 83 f8 30 cmp $0x30,%eax 0.00 : 585c0: 0f 83 8a 08 00 00 jae 58e50 <_IO_vfscanf+0x44c0> 0.00 : 585c6: 89 c2 mov %eax,%edx 0.00 : 585c8: 83 c0 08 add $0x8,%eax 0.00 : 585cb: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 585d2: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 585d8: e9 fe fe ff ff jmpq 584db <_IO_vfscanf+0x3b4b> 0.00 : 585dd: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 585e4: 08 0.00 : 585e5: eb be jmp 585a5 <_IO_vfscanf+0x3c15> 0.00 : 585e7: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 585eb: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 585ef: 0f 83 20 38 00 00 jae 5be15 <_IO_vfscanf+0x7485> 0.00 : 585f5: 0f b6 08 movzbl (%rax),%ecx 0.00 : 585f8: 48 83 c0 01 add $0x1,%rax 0.00 : 585fc: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58600: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 58607: 0f b6 d1 movzbl %cl,%edx 0.00 : 5860a: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 5860e: 83 3c 90 61 cmpl $0x61,(%rax,%rdx,4) 0.00 : 58612: 0f 85 c0 c8 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 58618: 31 c0 xor %eax,%eax 0.00 : 5861a: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58621: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 58628: 0f 9f c0 setg %al 0.00 : 5862b: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 58631: 48 83 bd 50 fd ff ff cmpq $0x1,-0x2b0(%rbp) 0.00 : 58638: 01 0.00 : 58639: 0f 84 d2 0b 00 00 je 59211 <_IO_vfscanf+0x4881> 0.00 : 5863f: 88 4b 01 mov %cl,0x1(%rbx) 0.00 : 58642: 44 8b a5 dc fd ff ff mov -0x224(%rbp),%r12d 0.00 : 58649: 45 85 e4 test %r12d,%r12d 0.00 : 5864c: 0f 84 86 c8 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58652: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 58656: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5865a: 0f 83 8f 1a 00 00 jae 5a0ef <_IO_vfscanf+0x575f> 0.00 : 58660: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 58664: 48 83 c0 01 add $0x1,%rax 0.00 : 58668: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5866c: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 58673: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 58677: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 5867b: 83 3c 90 6e cmpl $0x6e,(%rax,%rdx,4) 0.00 : 5867f: 0f 85 53 c8 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 58685: 48 83 bd 50 fd ff ff cmpq $0x2,-0x2b0(%rbp) 0.00 : 5868c: 02 0.00 : 5868d: 49 89 d9 mov %rbx,%r9 0.00 : 58690: 0f 84 52 0b 00 00 je 591e8 <_IO_vfscanf+0x4858> 0.00 : 58696: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5869d: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 586a3: 45 88 79 02 mov %r15b,0x2(%r9) 0.00 : 586a7: 49 83 c3 02 add $0x2,%r11 0.00 : 586ab: e9 31 fb ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 586b0: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 586b7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 586bb: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 586c2: e9 d9 f3 ff ff jmpq 57aa0 <_IO_vfscanf+0x3110> 0.00 : 586c7: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 586ce: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 586d2: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 586d9: e9 c2 f3 ff ff jmpq 57aa0 <_IO_vfscanf+0x3110> 0.00 : 586de: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 586e5: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 586ec: 48 8b 02 mov (%rdx),%rax 0.00 : 586ef: 48 89 01 mov %rax,(%rcx) 0.00 : 586f2: 48 8b 9d f8 fc ff ff mov -0x308(%rbp),%rbx 0.00 : 586f9: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 586fd: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 58701: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 58705: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 58709: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5870f: 83 ea 01 sub $0x1,%edx 0.00 : 58712: 74 13 je 58727 <_IO_vfscanf+0x3d97> 0.00 : 58714: 83 f8 30 cmp $0x30,%eax 0.00 : 58717: 73 37 jae 58750 <_IO_vfscanf+0x3dc0> 0.00 : 58719: 83 c0 08 add $0x8,%eax 0.00 : 5871c: 83 ea 01 sub $0x1,%edx 0.00 : 5871f: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58725: 75 ed jne 58714 <_IO_vfscanf+0x3d84> 0.00 : 58727: 83 f8 30 cmp $0x30,%eax 0.00 : 5872a: 0f 83 ed 07 00 00 jae 58f1d <_IO_vfscanf+0x458d> 0.00 : 58730: 89 c2 mov %eax,%edx 0.00 : 58732: 83 c0 08 add $0x8,%eax 0.00 : 58735: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5873c: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58742: e9 87 d7 ff ff jmpq 55ece <_IO_vfscanf+0x153e> 0.00 : 58747: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5874e: 00 00 0.00 : 58750: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58757: 08 0.00 : 58758: eb b5 jmp 5870f <_IO_vfscanf+0x3d7f> 0.00 : 5875a: 4c 89 d7 mov %r10,%rdi 0.00 : 5875d: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58764: e8 97 ca 01 00 callq 75200 <__uflow> 0.00 : 58769: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5876c: 41 89 c7 mov %eax,%r15d 0.00 : 5876f: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58776: 0f 84 97 c4 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5877c: e9 0f c5 ff ff jmpq 54c90 <_IO_vfscanf+0x300> 0.00 : 58781: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 58788: 4c 89 d7 mov %r10,%rdi 0.00 : 5878b: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 58792: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 58799: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 587a0: e8 5b ca 01 00 callq 75200 <__uflow> 0.00 : 587a5: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 587a8: 89 c1 mov %eax,%ecx 0.00 : 587aa: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 587b1: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 587b8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 587bf: 0f 85 5e e5 ff ff jne 56d23 <_IO_vfscanf+0x2393> 0.00 : 587c5: 48 8b 1d 6c 96 31 00 mov 0x31966c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 587cc: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 587d3: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 587d6: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 587dc: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 587e1: 4c 89 ad d0 fd ff ff mov %r13,-0x230(%rbp) 0.00 : 587e8: e9 9a df ff ff jmpq 56787 <_IO_vfscanf+0x1df7> 0.00 : 587ed: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 587f4: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 587f9: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 587fd: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 58804: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 5880b: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 5880f: 31 d2 xor %edx,%edx 0.00 : 58811: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 58818: e9 1d d7 ff ff jmpq 55f3a <_IO_vfscanf+0x15aa> 0.00 : 5881d: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58824: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58828: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 5882f: e9 9a d6 ff ff jmpq 55ece <_IO_vfscanf+0x153e> 0.00 : 58834: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5883b: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5883f: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58846: e9 5c f3 ff ff jmpq 57ba7 <_IO_vfscanf+0x3217> 0.00 : 5884b: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 58852: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 58859: 48 8b 06 mov (%rsi),%rax 0.00 : 5885c: 48 89 07 mov %rax,(%rdi) 0.00 : 5885f: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58863: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 58867: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 5886b: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5886f: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58875: 83 ea 01 sub $0x1,%edx 0.00 : 58878: 74 13 je 5888d <_IO_vfscanf+0x3efd> 0.00 : 5887a: 83 f8 30 cmp $0x30,%eax 0.00 : 5887d: 73 31 jae 588b0 <_IO_vfscanf+0x3f20> 0.00 : 5887f: 83 c0 08 add $0x8,%eax 0.00 : 58882: 83 ea 01 sub $0x1,%edx 0.00 : 58885: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5888b: 75 ed jne 5887a <_IO_vfscanf+0x3eea> 0.00 : 5888d: 83 f8 30 cmp $0x30,%eax 0.00 : 58890: 0f 83 fc 07 00 00 jae 59092 <_IO_vfscanf+0x4702> 0.00 : 58896: 89 c2 mov %eax,%edx 0.00 : 58898: 83 c0 08 add $0x8,%eax 0.00 : 5889b: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 588a2: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 588a8: e9 fa f2 ff ff jmpq 57ba7 <_IO_vfscanf+0x3217> 0.00 : 588ad: 0f 1f 00 nopl (%rax) 0.00 : 588b0: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 588b7: 08 0.00 : 588b8: eb bb jmp 58875 <_IO_vfscanf+0x3ee5> 0.00 : 588ba: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 588c1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 588c5: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 588cc: e9 f3 d8 ff ff jmpq 561c4 <_IO_vfscanf+0x1834> 0.00 : 588d1: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 588d8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 588dc: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 588e3: e9 0a f1 ff ff jmpq 579f2 <_IO_vfscanf+0x3062> 0.00 : 588e8: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 588ef: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 588f6: 48 8b 06 mov (%rsi),%rax 0.00 : 588f9: 48 89 07 mov %rax,(%rdi) 0.00 : 588fc: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58900: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 58904: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 58908: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5890c: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58912: 83 ea 01 sub $0x1,%edx 0.00 : 58915: 74 13 je 5892a <_IO_vfscanf+0x3f9a> 0.00 : 58917: 83 f8 30 cmp $0x30,%eax 0.00 : 5891a: 73 34 jae 58950 <_IO_vfscanf+0x3fc0> 0.00 : 5891c: 83 c0 08 add $0x8,%eax 0.00 : 5891f: 83 ea 01 sub $0x1,%edx 0.00 : 58922: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58928: 75 ed jne 58917 <_IO_vfscanf+0x3f87> 0.00 : 5892a: 83 f8 30 cmp $0x30,%eax 0.00 : 5892d: 0f 83 1f 08 00 00 jae 59152 <_IO_vfscanf+0x47c2> 0.00 : 58933: 89 c2 mov %eax,%edx 0.00 : 58935: 83 c0 08 add $0x8,%eax 0.00 : 58938: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5893f: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58945: e9 a8 f0 ff ff jmpq 579f2 <_IO_vfscanf+0x3062> 0.00 : 5894a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 58950: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58957: 08 0.00 : 58958: eb b8 jmp 58912 <_IO_vfscanf+0x3f82> 0.00 : 5895a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5895e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 58962: 0f 83 61 17 00 00 jae 5a0c9 <_IO_vfscanf+0x5739> 0.00 : 58968: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5896b: 48 83 c0 01 add $0x1,%rax 0.00 : 5896f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58973: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 5897a: 0f b6 d1 movzbl %cl,%edx 0.00 : 5897d: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 58981: 83 3c 90 6e cmpl $0x6e,(%rax,%rdx,4) 0.00 : 58985: 0f 85 4d c5 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5898b: 31 c0 xor %eax,%eax 0.00 : 5898d: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58994: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5899b: 0f 9f c0 setg %al 0.00 : 5899e: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 589a4: 48 83 bd 50 fd ff ff cmpq $0x1,-0x2b0(%rbp) 0.00 : 589ab: 01 0.00 : 589ac: 0f 84 07 08 00 00 je 591b9 <_IO_vfscanf+0x4829> 0.00 : 589b2: 88 4b 01 mov %cl,0x1(%rbx) 0.00 : 589b5: 44 8b 8d dc fd ff ff mov -0x224(%rbp),%r9d 0.00 : 589bc: 45 85 c9 test %r9d,%r9d 0.00 : 589bf: 0f 84 13 c5 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 589c5: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 589c9: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 589cd: 0f 83 cf 16 00 00 jae 5a0a2 <_IO_vfscanf+0x5712> 0.00 : 589d3: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 589d7: 48 83 c0 01 add $0x1,%rax 0.00 : 589db: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 589df: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 589e6: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 589ea: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 589ee: 83 3c 90 66 cmpl $0x66,(%rax,%rdx,4) 0.00 : 589f2: 0f 85 e0 c4 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 589f8: 31 c0 xor %eax,%eax 0.00 : 589fa: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58a01: 49 89 d9 mov %rbx,%r9 0.00 : 58a04: 0f 9f c0 setg %al 0.00 : 58a07: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 58a0d: 48 83 bd 50 fd ff ff cmpq $0x2,-0x2b0(%rbp) 0.00 : 58a14: 02 0.00 : 58a15: 0f 84 75 07 00 00 je 59190 <_IO_vfscanf+0x4800> 0.00 : 58a1b: 4c 8b a5 d0 fd ff ff mov -0x230(%rbp),%r12 0.00 : 58a22: 45 88 79 02 mov %r15b,0x2(%r9) 0.00 : 58a26: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 58a2c: 44 8b 85 dc fd ff ff mov -0x224(%rbp),%r8d 0.00 : 58a33: 49 83 c4 02 add $0x2,%r12 0.00 : 58a37: 45 85 c0 test %r8d,%r8d 0.00 : 58a3a: 4d 89 e3 mov %r12,%r11 0.00 : 58a3d: 0f 84 9e f7 ff ff je 581e1 <_IO_vfscanf+0x3851> 0.00 : 58a43: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 58a47: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 58a4b: 0f 83 f1 2a 00 00 jae 5b542 <_IO_vfscanf+0x6bb2> 0.00 : 58a51: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 58a55: 48 83 c0 01 add $0x1,%rax 0.00 : 58a59: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58a5d: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 58a64: 49 83 c3 03 add $0x3,%r11 0.00 : 58a68: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 58a6f: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 58a73: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 58a77: 83 3c 90 69 cmpl $0x69,(%rax,%rdx,4) 0.00 : 58a7b: 0f 84 3c 2a 00 00 je 5b4bd <_IO_vfscanf+0x6b2d> 0.00 : 58a81: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 58a85: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 58a8b: 0f 84 50 f7 ff ff je 581e1 <_IO_vfscanf+0x3851> 0.00 : 58a91: 4c 89 d7 mov %r10,%rdi 0.00 : 58a94: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 58a98: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 58a9f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58aa6: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 58aac: e8 9f b6 01 00 callq 74150 <_IO_sputbackc> 0.00 : 58ab1: 4d 89 e3 mov %r12,%r11 0.00 : 58ab4: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 58abb: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58ac2: e9 1a f7 ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 58ac7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 58ace: 00 00 0.00 : 58ad0: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58ad7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58adb: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58ae2: e9 f4 f9 ff ff jmpq 584db <_IO_vfscanf+0x3b4b> 0.00 : 58ae7: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 58aee: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 58af5: 48 8b 01 mov (%rcx),%rax 0.00 : 58af8: 48 89 03 mov %rax,(%rbx) 0.00 : 58afb: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 58aff: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 58b03: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 58b07: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 58b0b: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58b11: 83 ea 01 sub $0x1,%edx 0.00 : 58b14: 74 13 je 58b29 <_IO_vfscanf+0x4199> 0.00 : 58b16: 83 f8 30 cmp $0x30,%eax 0.00 : 58b19: 73 35 jae 58b50 <_IO_vfscanf+0x41c0> 0.00 : 58b1b: 83 c0 08 add $0x8,%eax 0.00 : 58b1e: 83 ea 01 sub $0x1,%edx 0.00 : 58b21: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58b27: 75 ed jne 58b16 <_IO_vfscanf+0x4186> 0.00 : 58b29: 83 f8 30 cmp $0x30,%eax 0.00 : 58b2c: 0f 83 7d 0b 00 00 jae 596af <_IO_vfscanf+0x4d1f> 0.00 : 58b32: 89 c2 mov %eax,%edx 0.00 : 58b34: 83 c0 08 add $0x8,%eax 0.00 : 58b37: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 58b3e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58b44: e9 9a d2 ff ff jmpq 55de3 <_IO_vfscanf+0x1453> 0.00 : 58b49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 58b50: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58b57: 08 0.00 : 58b58: eb b7 jmp 58b11 <_IO_vfscanf+0x4181> 0.00 : 58b5a: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 58b61: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 58b68: 48 8b 06 mov (%rsi),%rax 0.00 : 58b6b: 48 89 07 mov %rax,(%rdi) 0.00 : 58b6e: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58b72: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 58b76: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 58b7a: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 58b7e: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58b84: 83 ea 01 sub $0x1,%edx 0.00 : 58b87: 0f 84 bb e5 ff ff je 57148 <_IO_vfscanf+0x27b8> 0.00 : 58b8d: 83 f8 30 cmp $0x30,%eax 0.00 : 58b90: 73 16 jae 58ba8 <_IO_vfscanf+0x4218> 0.00 : 58b92: 83 c0 08 add $0x8,%eax 0.00 : 58b95: 83 ea 01 sub $0x1,%edx 0.00 : 58b98: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58b9e: 75 ed jne 58b8d <_IO_vfscanf+0x41fd> 0.00 : 58ba0: e9 a3 e5 ff ff jmpq 57148 <_IO_vfscanf+0x27b8> 0.00 : 58ba5: 0f 1f 00 nopl (%rax) 0.00 : 58ba8: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58baf: 08 0.00 : 58bb0: eb d2 jmp 58b84 <_IO_vfscanf+0x41f4> 0.00 : 58bb2: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 58bb8: 85 c0 test %eax,%eax 0.00 : 58bba: 0f 85 de 0e 00 00 jne 59a9e <_IO_vfscanf+0x510e> 0.00 : 58bc0: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58bc6: 83 f8 30 cmp $0x30,%eax 0.00 : 58bc9: 0f 83 b8 0e 00 00 jae 59a87 <_IO_vfscanf+0x50f7> 0.00 : 58bcf: 89 c2 mov %eax,%edx 0.00 : 58bd1: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58bd8: 83 c0 08 add $0x8,%eax 0.00 : 58bdb: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58be1: 48 8b 12 mov (%rdx),%rdx 0.00 : 58be4: 48 89 95 e0 fd ff ff mov %rdx,-0x220(%rbp) 0.00 : 58beb: 48 83 bd e0 fd ff ff cmpq $0x0,-0x220(%rbp) 0.00 : 58bf2: 00 0.00 : 58bf3: 0f 85 b6 e5 ff ff jne 571af <_IO_vfscanf+0x281f> 0.00 : 58bf9: e9 da c2 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 58bfe: 66 90 xchg %ax,%ax 0.00 : 58c00: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 58c07: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58c0b: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 58c12: e9 c2 e4 ff ff jmpq 570d9 <_IO_vfscanf+0x2749> 0.00 : 58c17: 49 83 eb 01 sub $0x1,%r11 0.00 : 58c1b: 4c 89 d7 mov %r10,%rdi 0.00 : 58c1e: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 58c22: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58c29: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58c30: e8 1b b5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 58c35: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58c3c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58c43: 45 85 f6 test %r14d,%r14d 0.00 : 58c46: 0f 85 a8 c0 ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 58c4c: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 58c53: c7 03 00 00 00 00 movl $0x0,(%rbx) 0.00 : 58c59: 48 83 c3 04 add $0x4,%rbx 0.00 : 58c5d: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 58c64: 21 00 00 0.00 : 58c67: 48 89 9d e0 fd ff ff mov %rbx,-0x220(%rbp) 0.00 : 58c6e: 0f 84 0f e4 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 58c74: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 58c7b: 48 89 d8 mov %rbx,%rax 0.00 : 58c7e: 48 8b 3e mov (%rsi),%rdi 0.00 : 58c81: 48 29 f8 sub %rdi,%rax 0.00 : 58c84: 48 c1 f8 02 sar $0x2,%rax 0.00 : 58c88: 4c 39 e0 cmp %r12,%rax 0.00 : 58c8b: 0f 84 f2 e3 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 58c91: 48 8d 34 85 00 00 00 lea 0x0(,%rax,4),%rsi 0.00 : 58c98: 00 0.00 : 58c99: e9 b5 e3 ff ff jmpq 57053 <_IO_vfscanf+0x26c3> 0.00 : 58c9e: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 58ca5: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 58caa: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58cae: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 58cb5: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 58cbc: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 58cc0: 31 d2 xor %edx,%edx 0.00 : 58cc2: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 58cc9: e9 a2 d1 ff ff jmpq 55e70 <_IO_vfscanf+0x14e0> 0.00 : 58cce: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58cd4: 85 d2 test %edx,%edx 0.00 : 58cd6: 0f 85 d4 0a 00 00 jne 597b0 <_IO_vfscanf+0x4e20> 0.00 : 58cdc: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58ce2: 83 f8 30 cmp $0x30,%eax 0.00 : 58ce5: 0f 83 ae 0a 00 00 jae 59799 <_IO_vfscanf+0x4e09> 0.00 : 58ceb: 89 c2 mov %eax,%edx 0.00 : 58ced: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58cf4: 83 c0 08 add $0x8,%eax 0.00 : 58cf7: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58cfd: 48 8b 12 mov (%rdx),%rdx 0.00 : 58d00: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 58d07: 48 83 bd 40 fd ff ff cmpq $0x0,-0x2c0(%rbp) 0.00 : 58d0e: 00 0.00 : 58d0f: 0f 85 65 d3 ff ff jne 5607a <_IO_vfscanf+0x16ea> 0.00 : 58d15: e9 be c1 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 58d1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 58d20: f7 85 04 fd ff ff 00 testl $0x200,-0x2fc(%rbp) 0.00 : 58d27: 02 00 00 0.00 : 58d2a: 0f 85 46 e7 ff ff jne 57476 <_IO_vfscanf+0x2ae6> 0.00 : 58d30: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 58d36: 85 c0 test %eax,%eax 0.00 : 58d38: 0f 85 4c 11 00 00 jne 59e8a <_IO_vfscanf+0x54fa> 0.00 : 58d3e: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58d44: 83 f8 30 cmp $0x30,%eax 0.00 : 58d47: 0f 83 26 11 00 00 jae 59e73 <_IO_vfscanf+0x54e3> 0.00 : 58d4d: 89 c2 mov %eax,%edx 0.00 : 58d4f: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58d56: 83 c0 08 add $0x8,%eax 0.00 : 58d59: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58d5f: 48 8b 02 mov (%rdx),%rax 0.00 : 58d62: 8b 95 d0 fd ff ff mov -0x230(%rbp),%edx 0.00 : 58d68: 45 31 ed xor %r13d,%r13d 0.00 : 58d6b: 89 10 mov %edx,(%rax) 0.00 : 58d6d: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 58d74: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 58d7b: e9 1b be ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 58d80: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx 0.00 : 58d87: 48 8b 85 58 fc ff ff mov -0x3a8(%rbp),%rax 0.00 : 58d8e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58d95: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58d9c: 48 29 da sub %rbx,%rdx 0.00 : 58d9f: 48 29 d8 sub %rbx,%rax 0.00 : 58da2: 48 39 d1 cmp %rdx,%rcx 0.00 : 58da5: 48 0f 4c c1 cmovl %rcx,%rax 0.00 : 58da9: 4c 8d 24 08 lea (%rax,%rcx,1),%r12 0.00 : 58dad: 4c 89 e6 mov %r12,%rsi 0.00 : 58db0: e8 8b 5a fc ff callq 1e840 0.00 : 58db5: 48 85 c0 test %rax,%rax 0.00 : 58db8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58dbf: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58dc6: 0f 84 40 23 00 00 je 5b10c <_IO_vfscanf+0x677c> 0.00 : 58dcc: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 58dd3: 48 89 01 mov %rax,(%rcx) 0.00 : 58dd6: 48 03 85 e8 fd ff ff add -0x218(%rbp),%rax 0.00 : 58ddd: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 58de4: e9 cb d5 ff ff jmpq 563b4 <_IO_vfscanf+0x1a24> 0.00 : 58de9: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 58df0: 20 00 00 0.00 : 58df3: 0f 84 df c0 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58df9: e9 5d c1 ff ff jmpq 54f5b <_IO_vfscanf+0x5cb> 0.00 : 58dfe: 66 90 xchg %ax,%ax 0.00 : 58e00: 44 8b ad 5c fd ff ff mov -0x2a4(%rbp),%r13d 0.00 : 58e07: 45 85 ed test %r13d,%r13d 0.00 : 58e0a: 0f 85 89 0a 00 00 jne 59899 <_IO_vfscanf+0x4f09> 0.00 : 58e10: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58e16: 83 f8 30 cmp $0x30,%eax 0.00 : 58e19: 0f 83 63 0a 00 00 jae 59882 <_IO_vfscanf+0x4ef2> 0.00 : 58e1f: 89 c2 mov %eax,%edx 0.00 : 58e21: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58e28: 83 c0 08 add $0x8,%eax 0.00 : 58e2b: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58e31: 48 8b 12 mov (%rdx),%rdx 0.00 : 58e34: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 58e3b: 48 83 bd 40 fd ff ff cmpq $0x0,-0x2c0(%rbp) 0.00 : 58e42: 00 0.00 : 58e43: 0f 85 c9 d4 ff ff jne 56312 <_IO_vfscanf+0x1982> 0.00 : 58e49: e9 8a c0 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 58e4e: 66 90 xchg %ax,%ax 0.00 : 58e50: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 58e57: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58e5b: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 58e62: e9 74 f6 ff ff jmpq 584db <_IO_vfscanf+0x3b4b> 0.00 : 58e67: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58e6e: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58e72: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58e79: e9 65 cf ff ff jmpq 55de3 <_IO_vfscanf+0x1453> 0.00 : 58e7e: 4f 8d 2c 24 lea (%r12,%r12,1),%r13 0.00 : 58e82: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58e89: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58e90: 4c 89 ee mov %r13,%rsi 0.00 : 58e93: e8 a8 59 fc ff callq 1e840 0.00 : 58e98: 48 85 c0 test %rax,%rax 0.00 : 58e9b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58ea2: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58ea9: 0f 84 58 24 00 00 je 5b307 <_IO_vfscanf+0x6977> 0.00 : 58eaf: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 58eb6: 48 89 07 mov %rax,(%rdi) 0.00 : 58eb9: 4c 01 e0 add %r12,%rax 0.00 : 58ebc: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 58ec3: e9 5d d2 ff ff jmpq 56125 <_IO_vfscanf+0x1795> 0.00 : 58ec8: 4c 8d 5b fe lea -0x2(%rbx),%r11 0.00 : 58ecc: 4c 89 d7 mov %r10,%rdi 0.00 : 58ecf: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 58ed3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58eda: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58ee1: e8 6a b2 01 00 callq 74150 <_IO_sputbackc> 0.00 : 58ee6: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58eed: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58ef4: e9 1b e1 ff ff jmpq 57014 <_IO_vfscanf+0x2684> 0.00 : 58ef9: 48 8b 05 38 8f 31 00 mov 0x318f38(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 58f00: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 58f07: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 58f0e: ff ff ff 0.00 : 58f11: c7 04 02 16 00 00 00 movl $0x16,(%rdx,%rax,1) 0.00 : 58f18: e9 36 bd ff ff jmpq 54c53 <_IO_vfscanf+0x2c3> 0.00 : 58f1d: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 58f24: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58f28: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 58f2f: e9 9a cf ff ff jmpq 55ece <_IO_vfscanf+0x153e> 0.00 : 58f34: 49 89 dc mov %rbx,%r12 0.00 : 58f37: e9 bf e8 ff ff jmpq 577fb <_IO_vfscanf+0x2e6b> 0.00 : 58f3c: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 58f40: be 00 01 00 00 mov $0x100,%esi 0.00 : 58f45: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 58f4c: 48 0f 43 f3 cmovae %rbx,%rsi 0.00 : 58f50: 48 89 f0 mov %rsi,%rax 0.00 : 58f53: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 58f5a: 48 83 c0 1e add $0x1e,%rax 0.00 : 58f5e: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58f62: 48 29 c4 sub %rax,%rsp 0.00 : 58f65: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 58f6a: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 58f6e: 4d 85 c9 test %r9,%r9 0.00 : 58f71: 0f 84 85 dc ff ff je 56bfc <_IO_vfscanf+0x226c> 0.00 : 58f77: 4c 89 f2 mov %r14,%rdx 0.00 : 58f7a: 4c 89 ce mov %r9,%rsi 0.00 : 58f7d: 4c 89 e7 mov %r12,%rdi 0.00 : 58f80: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58f87: e8 c4 b7 02 00 callq 84750 0.00 : 58f8c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58f93: e9 64 dc ff ff jmpq 56bfc <_IO_vfscanf+0x226c> 0.00 : 58f98: 4b 8d 14 36 lea (%r14,%r14,1),%rdx 0.00 : 58f9c: b9 00 01 00 00 mov $0x100,%ecx 0.00 : 58fa1: 48 81 fa 00 01 00 00 cmp $0x100,%rdx 0.00 : 58fa8: 48 0f 43 ca cmovae %rdx,%rcx 0.00 : 58fac: 48 89 c8 mov %rcx,%rax 0.00 : 58faf: 48 89 8d 50 fd ff ff mov %rcx,-0x2b0(%rbp) 0.00 : 58fb6: 48 83 c0 1e add $0x1e,%rax 0.00 : 58fba: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58fbe: 48 29 c4 sub %rax,%rsp 0.00 : 58fc1: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 58fc6: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 58fca: 4d 85 c9 test %r9,%r9 0.00 : 58fcd: 0f 84 2b e7 ff ff je 576fe <_IO_vfscanf+0x2d6e> 0.00 : 58fd3: 4c 89 f2 mov %r14,%rdx 0.00 : 58fd6: 4c 89 ce mov %r9,%rsi 0.00 : 58fd9: 4c 89 e7 mov %r12,%rdi 0.00 : 58fdc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58fe3: e8 68 b7 02 00 callq 84750 0.00 : 58fe8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58fef: e9 0a e7 ff ff jmpq 576fe <_IO_vfscanf+0x2d6e> 0.00 : 58ff4: 4c 89 d7 mov %r10,%rdi 0.00 : 58ff7: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58ffe: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59005: e8 f6 c1 01 00 callq 75200 <__uflow> 0.00 : 5900a: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5900d: 41 89 c7 mov %eax,%r15d 0.00 : 59010: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59017: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5901e: 0f 85 f9 0e 00 00 jne 59f1d <_IO_vfscanf+0x558d> 0.00 : 59024: 48 8b 1d 0d 8e 31 00 mov 0x318e0d(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5902b: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59032: 4d 89 e1 mov %r12,%r9 0.00 : 59035: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 59038: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5903e: e9 6f f1 ff ff jmpq 581b2 <_IO_vfscanf+0x3822> 0.00 : 59043: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5904a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5904e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59055: e9 46 f2 ff ff jmpq 582a0 <_IO_vfscanf+0x3910> 0.00 : 5905a: 48 8b 1d d7 8d 31 00 mov 0x318dd7(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59061: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 59067: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5906e: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 59071: e9 a6 ed ff ff jmpq 57e1c <_IO_vfscanf+0x348c> 0.00 : 59076: 48 8b 1d bb 8d 31 00 mov 0x318dbb(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5907d: 8b 85 1c fd ff ff mov -0x2e4(%rbp),%eax 0.00 : 59083: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5908a: 89 04 1f mov %eax,(%rdi,%rbx,1) 0.00 : 5908d: e9 62 ee ff ff jmpq 57ef4 <_IO_vfscanf+0x3564> 0.00 : 59092: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59099: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5909d: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 590a4: e9 fe ea ff ff jmpq 57ba7 <_IO_vfscanf+0x3217> 0.00 : 590a9: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 590b0: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 590b7: 48 8b 01 mov (%rcx),%rax 0.00 : 590ba: 48 89 03 mov %rax,(%rbx) 0.00 : 590bd: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 590c1: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 590c5: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 590c9: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 590cd: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 590d3: 83 ea 01 sub $0x1,%edx 0.00 : 590d6: 74 13 je 590eb <_IO_vfscanf+0x475b> 0.00 : 590d8: 83 f8 30 cmp $0x30,%eax 0.00 : 590db: 73 2a jae 59107 <_IO_vfscanf+0x4777> 0.00 : 590dd: 83 c0 08 add $0x8,%eax 0.00 : 590e0: 83 ea 01 sub $0x1,%edx 0.00 : 590e3: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 590e9: 75 ed jne 590d8 <_IO_vfscanf+0x4748> 0.00 : 590eb: 83 f8 30 cmp $0x30,%eax 0.00 : 590ee: 73 21 jae 59111 <_IO_vfscanf+0x4781> 0.00 : 590f0: 89 c2 mov %eax,%edx 0.00 : 590f2: 83 c0 08 add $0x8,%eax 0.00 : 590f5: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 590fc: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59102: e9 bd d0 ff ff jmpq 561c4 <_IO_vfscanf+0x1834> 0.00 : 59107: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5910e: 08 0.00 : 5910f: eb c2 jmp 590d3 <_IO_vfscanf+0x4743> 0.00 : 59111: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59118: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5911c: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59123: e9 9c d0 ff ff jmpq 561c4 <_IO_vfscanf+0x1834> 0.00 : 59128: 48 8b 05 09 8d 31 00 mov 0x318d09(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5912f: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 59136: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 5913b: c7 04 01 54 00 00 00 movl $0x54,(%rcx,%rax,1) 0.00 : 59142: e9 99 bd ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 59147: 41 89 df mov %ebx,%r15d 0.00 : 5914a: 4d 89 c4 mov %r8,%r12 0.00 : 5914d: e9 f1 fa ff ff jmpq 58c43 <_IO_vfscanf+0x42b3> 0.00 : 59152: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59159: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5915d: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59164: e9 89 e8 ff ff jmpq 579f2 <_IO_vfscanf+0x3062> 0.00 : 59169: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 59170: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 59177: 00 01 00 00 0.00 : 5917b: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 59180: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59184: 48 89 85 f0 fd ff ff mov %rax,-0x210(%rbp) 0.00 : 5918b: e9 bb ee ff ff jmpq 5804b <_IO_vfscanf+0x36bb> 0.00 : 59190: 0f b7 03 movzwl (%rbx),%eax 0.00 : 59193: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5919a: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5919f: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 591a3: 66 89 06 mov %ax,(%rsi) 0.00 : 591a6: 49 89 f1 mov %rsi,%r9 0.00 : 591a9: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 591b0: 00 01 00 00 0.00 : 591b4: e9 62 f8 ff ff jmpq 58a1b <_IO_vfscanf+0x408b> 0.00 : 591b9: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 591c0: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 591c7: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 591cc: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 591d0: 48 89 c3 mov %rax,%rbx 0.00 : 591d3: 0f b6 07 movzbl (%rdi),%eax 0.00 : 591d6: 88 03 mov %al,(%rbx) 0.00 : 591d8: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 591df: 00 01 00 00 0.00 : 591e3: e9 ca f7 ff ff jmpq 589b2 <_IO_vfscanf+0x4022> 0.00 : 591e8: 0f b7 03 movzwl (%rbx),%eax 0.00 : 591eb: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 591f2: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 591f7: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 591fb: 66 89 06 mov %ax,(%rsi) 0.00 : 591fe: 49 89 f1 mov %rsi,%r9 0.00 : 59201: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 59208: 00 01 00 00 0.00 : 5920c: e9 85 f4 ff ff jmpq 58696 <_IO_vfscanf+0x3d06> 0.00 : 59211: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 59218: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5921f: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 59224: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59228: 48 89 c3 mov %rax,%rbx 0.00 : 5922b: 0f b6 06 movzbl (%rsi),%eax 0.00 : 5922e: 88 03 mov %al,(%rbx) 0.00 : 59230: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 59237: 00 01 00 00 0.00 : 5923b: e9 ff f3 ff ff jmpq 5863f <_IO_vfscanf+0x3caf> 0.00 : 59240: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59247: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5924b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59252: e9 c6 f1 ff ff jmpq 5841d <_IO_vfscanf+0x3a8d> 0.00 : 59257: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 5925e: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59265: 48 8b 02 mov (%rdx),%rax 0.00 : 59268: 48 89 01 mov %rax,(%rcx) 0.00 : 5926b: 48 8b 9d f8 fc ff ff mov -0x308(%rbp),%rbx 0.00 : 59272: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 59276: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 5927a: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 5927e: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59282: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59288: 83 ea 01 sub $0x1,%edx 0.00 : 5928b: 74 1a je 592a7 <_IO_vfscanf+0x4917> 0.00 : 5928d: 83 f8 30 cmp $0x30,%eax 0.00 : 59290: 73 0b jae 5929d <_IO_vfscanf+0x490d> 0.00 : 59292: 83 c0 08 add $0x8,%eax 0.00 : 59295: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5929b: eb eb jmp 59288 <_IO_vfscanf+0x48f8> 0.00 : 5929d: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 592a4: 08 0.00 : 592a5: eb e1 jmp 59288 <_IO_vfscanf+0x48f8> 0.00 : 592a7: 83 f8 30 cmp $0x30,%eax 0.00 : 592aa: 0f 83 8b 2b 00 00 jae 5be3b <_IO_vfscanf+0x74ab> 0.00 : 592b0: 89 c2 mov %eax,%edx 0.00 : 592b2: 83 c0 08 add $0x8,%eax 0.00 : 592b5: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 592bc: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 592c2: e9 56 f1 ff ff jmpq 5841d <_IO_vfscanf+0x3a8d> 0.00 : 592c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 592ce: 00 00 0.00 : 592d0: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 592d7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 592db: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 592e2: e9 91 f0 ff ff jmpq 58378 <_IO_vfscanf+0x39e8> 0.00 : 592e7: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 592ee: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 592f5: 48 8b 06 mov (%rsi),%rax 0.00 : 592f8: 48 89 07 mov %rax,(%rdi) 0.00 : 592fb: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 592ff: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 59303: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59307: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5930b: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59311: 83 ea 01 sub $0x1,%edx 0.00 : 59314: 74 1a je 59330 <_IO_vfscanf+0x49a0> 0.00 : 59316: 83 f8 30 cmp $0x30,%eax 0.00 : 59319: 73 0b jae 59326 <_IO_vfscanf+0x4996> 0.00 : 5931b: 83 c0 08 add $0x8,%eax 0.00 : 5931e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59324: eb eb jmp 59311 <_IO_vfscanf+0x4981> 0.00 : 59326: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5932d: 08 0.00 : 5932e: eb e1 jmp 59311 <_IO_vfscanf+0x4981> 0.00 : 59330: 83 f8 30 cmp $0x30,%eax 0.00 : 59333: 0f 83 19 2b 00 00 jae 5be52 <_IO_vfscanf+0x74c2> 0.00 : 59339: 89 c2 mov %eax,%edx 0.00 : 5933b: 83 c0 08 add $0x8,%eax 0.00 : 5933e: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59345: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5934b: e9 28 f0 ff ff jmpq 58378 <_IO_vfscanf+0x39e8> 0.00 : 59350: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 59354: 0f 84 58 ee ff ff je 581b2 <_IO_vfscanf+0x3822> 0.00 : 5935a: 49 83 eb 01 sub $0x1,%r11 0.00 : 5935e: 4c 89 d7 mov %r10,%rdi 0.00 : 59361: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 59365: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5936c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59373: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5937a: e8 d1 ad 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5937f: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 59386: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5938d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59394: e9 19 ee ff ff jmpq 581b2 <_IO_vfscanf+0x3822> 0.00 : 59399: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 593a0: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 593a7: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 593ae: 48 8b 07 mov (%rdi),%rax 0.00 : 593b1: 48 89 02 mov %rax,(%rdx) 0.00 : 593b4: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 593b8: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 593bf: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 593c3: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 593c7: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 593cb: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 593d1: 83 ea 01 sub $0x1,%edx 0.00 : 593d4: 74 1a je 593f0 <_IO_vfscanf+0x4a60> 0.00 : 593d6: 83 f8 30 cmp $0x30,%eax 0.00 : 593d9: 73 0b jae 593e6 <_IO_vfscanf+0x4a56> 0.00 : 593db: 83 c0 08 add $0x8,%eax 0.00 : 593de: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 593e4: eb eb jmp 593d1 <_IO_vfscanf+0x4a41> 0.00 : 593e6: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 593ed: 08 0.00 : 593ee: eb e1 jmp 593d1 <_IO_vfscanf+0x4a41> 0.00 : 593f0: 83 f8 30 cmp $0x30,%eax 0.00 : 593f3: 0f 83 70 2a 00 00 jae 5be69 <_IO_vfscanf+0x74d9> 0.00 : 593f9: 89 c2 mov %eax,%edx 0.00 : 593fb: 83 c0 08 add $0x8,%eax 0.00 : 593fe: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59405: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5940b: e9 90 ee ff ff jmpq 582a0 <_IO_vfscanf+0x3910> 0.00 : 59410: 48 83 bd 50 fd ff ff cmpq $0x1,-0x2b0(%rbp) 0.00 : 59417: 01 0.00 : 59418: 4c 8b 8d f0 fd ff ff mov -0x210(%rbp),%r9 0.00 : 5941f: 0f 84 5b 1d 00 00 je 5b180 <_IO_vfscanf+0x67f0> 0.00 : 59425: 45 88 79 01 mov %r15b,0x1(%r9) 0.00 : 59429: 81 8d 04 fd ff ff 00 orl $0x800,-0x2fc(%rbp) 0.00 : 59430: 08 00 00 0.00 : 59433: 81 a5 04 fd ff ff 7f andl $0xffffff7f,-0x2fc(%rbp) 0.00 : 5943a: ff ff ff 0.00 : 5943d: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 59441: 0f 85 16 1d 00 00 jne 5b15d <_IO_vfscanf+0x67cd> 0.00 : 59447: 48 8b 1d ea 89 31 00 mov 0x3189ea(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5944e: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 59454: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5945b: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5945e: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 59464: c6 85 1f fe ff ff 70 movb $0x70,-0x1e1(%rbp) 0.00 : 5946b: 41 be 02 00 00 00 mov $0x2,%r14d 0.00 : 59471: 85 c0 test %eax,%eax 0.00 : 59473: 0f 8e fc d1 ff ff jle 56675 <_IO_vfscanf+0x1ce5> 0.00 : 59479: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 59480: c6 85 1f fe ff ff 70 movb $0x70,-0x1e1(%rbp) 0.00 : 59487: 41 be 02 00 00 00 mov $0x2,%r14d 0.00 : 5948d: e9 e3 d1 ff ff jmpq 56675 <_IO_vfscanf+0x1ce5> 0.00 : 59492: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 59498: 4c 8b a5 30 fd ff ff mov -0x2d0(%rbp),%r12 0.00 : 5949f: 31 c0 xor %eax,%eax 0.00 : 594a1: e9 bf de ff ff jmpq 57365 <_IO_vfscanf+0x29d5> 0.00 : 594a6: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 594ad: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 594b4: 48 8b 07 mov (%rdi),%rax 0.00 : 594b7: 48 89 02 mov %rax,(%rdx) 0.00 : 594ba: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 594be: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 594c5: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 594c9: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 594cd: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 594d1: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 594d7: 83 ea 01 sub $0x1,%edx 0.00 : 594da: 74 1a je 594f6 <_IO_vfscanf+0x4b66> 0.00 : 594dc: 83 f8 30 cmp $0x30,%eax 0.00 : 594df: 73 0b jae 594ec <_IO_vfscanf+0x4b5c> 0.00 : 594e1: 83 c0 08 add $0x8,%eax 0.00 : 594e4: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 594ea: eb eb jmp 594d7 <_IO_vfscanf+0x4b47> 0.00 : 594ec: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 594f3: 08 0.00 : 594f4: eb e1 jmp 594d7 <_IO_vfscanf+0x4b47> 0.00 : 594f6: 83 f8 30 cmp $0x30,%eax 0.00 : 594f9: 0f 83 eb 1a 00 00 jae 5afea <_IO_vfscanf+0x665a> 0.00 : 594ff: 89 c2 mov %eax,%edx 0.00 : 59501: 83 c0 08 add $0x8,%eax 0.00 : 59504: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5950b: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59511: e9 af ea ff ff jmpq 57fc5 <_IO_vfscanf+0x3635> 0.00 : 59516: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5951d: 00 00 00 0.00 : 59520: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 59527: 48 8b b5 48 fc ff ff mov -0x3b8(%rbp),%rsi 0.00 : 5952e: 48 8b 01 mov (%rcx),%rax 0.00 : 59531: 48 89 06 mov %rax,(%rsi) 0.00 : 59534: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 59538: 48 89 56 08 mov %rdx,0x8(%rsi) 0.00 : 5953c: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 59540: 48 89 56 10 mov %rdx,0x10(%rsi) 0.00 : 59544: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5954a: 83 ea 01 sub $0x1,%edx 0.00 : 5954d: 74 1a je 59569 <_IO_vfscanf+0x4bd9> 0.00 : 5954f: 83 f8 30 cmp $0x30,%eax 0.00 : 59552: 73 0b jae 5955f <_IO_vfscanf+0x4bcf> 0.00 : 59554: 83 c0 08 add $0x8,%eax 0.00 : 59557: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5955d: eb eb jmp 5954a <_IO_vfscanf+0x4bba> 0.00 : 5955f: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59566: 08 0.00 : 59567: eb e1 jmp 5954a <_IO_vfscanf+0x4bba> 0.00 : 59569: 83 f8 30 cmp $0x30,%eax 0.00 : 5956c: 0f 83 7d 09 00 00 jae 59eef <_IO_vfscanf+0x555f> 0.00 : 59572: 89 c2 mov %eax,%edx 0.00 : 59574: 83 c0 08 add $0x8,%eax 0.00 : 59577: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5957e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59584: e9 e6 cc ff ff jmpq 5626f <_IO_vfscanf+0x18df> 0.00 : 59589: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59590: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59597: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5959c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 595a0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 595a7: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 595ae: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 595b2: 31 d2 xor %edx,%edx 0.00 : 595b4: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 595bb: e9 38 cd ff ff jmpq 562f8 <_IO_vfscanf+0x1968> 0.00 : 595c0: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 595c7: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 595ce: 48 8b 01 mov (%rcx),%rax 0.00 : 595d1: 48 89 03 mov %rax,(%rbx) 0.00 : 595d4: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 595d8: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 595dc: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 595e0: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 595e4: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 595ea: 83 ea 01 sub $0x1,%edx 0.00 : 595ed: 74 1a je 59609 <_IO_vfscanf+0x4c79> 0.00 : 595ef: 83 f8 30 cmp $0x30,%eax 0.00 : 595f2: 73 0b jae 595ff <_IO_vfscanf+0x4c6f> 0.00 : 595f4: 83 c0 08 add $0x8,%eax 0.00 : 595f7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 595fd: eb eb jmp 595ea <_IO_vfscanf+0x4c5a> 0.00 : 595ff: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59606: 08 0.00 : 59607: eb e1 jmp 595ea <_IO_vfscanf+0x4c5a> 0.00 : 59609: 83 f8 30 cmp $0x30,%eax 0.00 : 5960c: 0f 83 16 1a 00 00 jae 5b028 <_IO_vfscanf+0x6698> 0.00 : 59612: 89 c2 mov %eax,%edx 0.00 : 59614: 83 c0 08 add $0x8,%eax 0.00 : 59617: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5961e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59624: e9 c0 c9 ff ff jmpq 55fe9 <_IO_vfscanf+0x1659> 0.00 : 59629: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59630: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59637: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5963c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59640: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 59647: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 5964e: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 59652: 31 d2 xor %edx,%edx 0.00 : 59654: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 5965b: e9 f5 c9 ff ff jmpq 56055 <_IO_vfscanf+0x16c5> 0.00 : 59660: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 59664: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 59668: 0f 83 a1 0b 00 00 jae 5a20f <_IO_vfscanf+0x587f> 0.00 : 5966e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 59672: 48 83 c0 01 add $0x1,%rax 0.00 : 59676: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5967a: 49 83 c3 01 add $0x1,%r11 0.00 : 5967e: e9 13 be ff ff jmpq 55496 <_IO_vfscanf+0xb06> 0.00 : 59683: 48 8b 1d ae 87 31 00 mov 0x3187ae(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5968a: 8b b5 1c fd ff ff mov -0x2e4(%rbp),%esi 0.00 : 59690: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 59697: 89 34 19 mov %esi,(%rcx,%rbx,1) 0.00 : 5969a: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 596a1: 41 bf ff ff ff ff mov $0xffffffff,%r15d 0.00 : 596a7: 45 31 ed xor %r13d,%r13d 0.00 : 596aa: e9 ec b4 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 596af: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 596b6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 596ba: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 596c1: e9 1d c7 ff ff jmpq 55de3 <_IO_vfscanf+0x1453> 0.00 : 596c6: 48 8b 05 6b 87 31 00 mov 0x31876b(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 596cd: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 596d4: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 596d9: c7 04 02 54 00 00 00 movl $0x54,(%rdx,%rax,1) 0.00 : 596e0: e9 fb b7 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 596e5: 48 8b 1d 4c 87 31 00 mov 0x31874c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 596ec: 8b b5 1c fd ff ff mov -0x2e4(%rbp),%esi 0.00 : 596f2: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 596f9: 89 34 19 mov %esi,(%rcx,%rbx,1) 0.00 : 596fc: e9 01 db ff ff jmpq 57202 <_IO_vfscanf+0x2872> 0.00 : 59701: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 59708: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5970f: 00 01 00 00 0.00 : 59713: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 59718: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5971c: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 59723: e9 e7 e9 ff ff jmpq 5810f <_IO_vfscanf+0x377f> 0.00 : 59728: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 5972f: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 59736: 48 8b 06 mov (%rsi),%rax 0.00 : 59739: 48 89 07 mov %rax,(%rdi) 0.00 : 5973c: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59740: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 59744: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59748: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5974c: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59752: 83 ea 01 sub $0x1,%edx 0.00 : 59755: 0f 84 f1 e3 ff ff je 57b4c <_IO_vfscanf+0x31bc> 0.00 : 5975b: 83 f8 30 cmp $0x30,%eax 0.00 : 5975e: 73 18 jae 59778 <_IO_vfscanf+0x4de8> 0.00 : 59760: 83 c0 08 add $0x8,%eax 0.00 : 59763: 83 ea 01 sub $0x1,%edx 0.00 : 59766: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5976c: 75 ed jne 5975b <_IO_vfscanf+0x4dcb> 0.00 : 5976e: e9 d9 e3 ff ff jmpq 57b4c <_IO_vfscanf+0x31bc> 0.00 : 59773: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 59778: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5977f: 08 0.00 : 59780: eb d0 jmp 59752 <_IO_vfscanf+0x4dc2> 0.00 : 59782: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59789: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5978d: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59794: e9 2c e8 ff ff jmpq 57fc5 <_IO_vfscanf+0x3635> 0.00 : 59799: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 597a0: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 597a4: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 597ab: e9 4d f5 ff ff jmpq 58cfd <_IO_vfscanf+0x436d> 0.00 : 597b0: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 597b7: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 597be: 48 8b 06 mov (%rsi),%rax 0.00 : 597c1: 48 89 07 mov %rax,(%rdi) 0.00 : 597c4: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 597c8: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 597cc: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 597d0: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 597d4: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 597da: 83 ea 01 sub $0x1,%edx 0.00 : 597dd: 74 1a je 597f9 <_IO_vfscanf+0x4e69> 0.00 : 597df: 83 f8 30 cmp $0x30,%eax 0.00 : 597e2: 73 0b jae 597ef <_IO_vfscanf+0x4e5f> 0.00 : 597e4: 83 c0 08 add $0x8,%eax 0.00 : 597e7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 597ed: eb eb jmp 597da <_IO_vfscanf+0x4e4a> 0.00 : 597ef: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 597f6: 08 0.00 : 597f7: eb e1 jmp 597da <_IO_vfscanf+0x4e4a> 0.00 : 597f9: 83 f8 30 cmp $0x30,%eax 0.00 : 597fc: 0f 83 85 1a 00 00 jae 5b287 <_IO_vfscanf+0x68f7> 0.00 : 59802: 89 c2 mov %eax,%edx 0.00 : 59804: 83 c0 08 add $0x8,%eax 0.00 : 59807: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5980e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59814: e9 e4 f4 ff ff jmpq 58cfd <_IO_vfscanf+0x436d> 0.00 : 59819: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59820: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 59827: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 5982e: 48 8b 07 mov (%rdi),%rax 0.00 : 59831: 48 89 02 mov %rax,(%rdx) 0.00 : 59834: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 59838: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5983f: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 59843: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 59847: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 5984b: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59851: 83 ea 01 sub $0x1,%edx 0.00 : 59854: 0f 84 63 ed ff ff je 585bd <_IO_vfscanf+0x3c2d> 0.00 : 5985a: 83 f8 30 cmp $0x30,%eax 0.00 : 5985d: 73 19 jae 59878 <_IO_vfscanf+0x4ee8> 0.00 : 5985f: 83 c0 08 add $0x8,%eax 0.00 : 59862: 83 ea 01 sub $0x1,%edx 0.00 : 59865: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5986b: 75 ed jne 5985a <_IO_vfscanf+0x4eca> 0.00 : 5986d: e9 4b ed ff ff jmpq 585bd <_IO_vfscanf+0x3c2d> 0.00 : 59872: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 59878: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5987f: 08 0.00 : 59880: eb cf jmp 59851 <_IO_vfscanf+0x4ec1> 0.00 : 59882: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59889: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5988d: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59894: e9 98 f5 ff ff jmpq 58e31 <_IO_vfscanf+0x44a1> 0.00 : 59899: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 598a0: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 598a7: 48 8b 07 mov (%rdi),%rax 0.00 : 598aa: 48 89 02 mov %rax,(%rdx) 0.00 : 598ad: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 598b1: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 598b8: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 598bc: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 598c0: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 598c4: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 598ca: 83 ea 01 sub $0x1,%edx 0.00 : 598cd: 74 1a je 598e9 <_IO_vfscanf+0x4f59> 0.00 : 598cf: 83 f8 30 cmp $0x30,%eax 0.00 : 598d2: 73 0b jae 598df <_IO_vfscanf+0x4f4f> 0.00 : 598d4: 83 c0 08 add $0x8,%eax 0.00 : 598d7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 598dd: eb eb jmp 598ca <_IO_vfscanf+0x4f3a> 0.00 : 598df: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 598e6: 08 0.00 : 598e7: eb e1 jmp 598ca <_IO_vfscanf+0x4f3a> 0.00 : 598e9: 83 f8 30 cmp $0x30,%eax 0.00 : 598ec: 0f 83 ac 19 00 00 jae 5b29e <_IO_vfscanf+0x690e> 0.00 : 598f2: 89 c2 mov %eax,%edx 0.00 : 598f4: 83 c0 08 add $0x8,%eax 0.00 : 598f7: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 598fe: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59904: e9 28 f5 ff ff jmpq 58e31 <_IO_vfscanf+0x44a1> 0.00 : 59909: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59910: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59917: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5991c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59920: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 59927: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 5992e: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 59932: 31 d2 xor %edx,%edx 0.00 : 59934: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 5993b: e9 a1 cb ff ff jmpq 564e1 <_IO_vfscanf+0x1b51> 0.00 : 59940: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59947: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5994e: 48 8b 06 mov (%rsi),%rax 0.00 : 59951: 48 89 07 mov %rax,(%rdi) 0.00 : 59954: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59958: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 5995c: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59960: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 59964: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5996a: 83 ea 01 sub $0x1,%edx 0.00 : 5996d: 74 1a je 59989 <_IO_vfscanf+0x4ff9> 0.00 : 5996f: 83 f8 30 cmp $0x30,%eax 0.00 : 59972: 73 0b jae 5997f <_IO_vfscanf+0x4fef> 0.00 : 59974: 83 c0 08 add $0x8,%eax 0.00 : 59977: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5997d: eb eb jmp 5996a <_IO_vfscanf+0x4fda> 0.00 : 5997f: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59986: 08 0.00 : 59987: eb e1 jmp 5996a <_IO_vfscanf+0x4fda> 0.00 : 59989: 83 f8 30 cmp $0x30,%eax 0.00 : 5998c: 0f 83 63 17 00 00 jae 5b0f5 <_IO_vfscanf+0x6765> 0.00 : 59992: 89 c2 mov %eax,%edx 0.00 : 59994: 83 c0 08 add $0x8,%eax 0.00 : 59997: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5999e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 599a4: e9 06 dc ff ff jmpq 575af <_IO_vfscanf+0x2c1f> 0.00 : 599a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 599b0: 4a 8d 34 e5 00 00 00 lea 0x0(,%r12,8),%rsi 0.00 : 599b7: 00 0.00 : 599b8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 599bf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 599c6: e8 75 4e fc ff callq 1e840 0.00 : 599cb: 48 85 c0 test %rax,%rax 0.00 : 599ce: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 599d5: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 599dc: 0f 84 b1 03 00 00 je 59d93 <_IO_vfscanf+0x5403> 0.00 : 599e2: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 599e9: 4f 8d 04 24 lea (%r12,%r12,1),%r8 0.00 : 599ed: 48 89 07 mov %rax,(%rdi) 0.00 : 599f0: 48 03 85 f8 fd ff ff add -0x208(%rbp),%rax 0.00 : 599f7: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 599fe: e9 ba cf ff ff jmpq 569bd <_IO_vfscanf+0x202d> 0.00 : 59a03: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 59a0a: 20 00 00 0.00 : 59a0d: 0f 85 48 b5 ff ff jne 54f5b <_IO_vfscanf+0x5cb> 0.00 : 59a13: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 59a1a: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 59a1f: 48 8b 02 mov (%rdx),%rax 0.00 : 59a22: 42 c6 44 20 ff 00 movb $0x0,-0x1(%rax,%r12,1) 0.00 : 59a28: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 59a2f: 00 00 00 00 0.00 : 59a33: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 59a3a: e9 a1 b4 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 59a3f: 90 nop 0.00 : 59a40: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59a47: 31 d2 xor %edx,%edx 0.00 : 59a49: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 59a4e: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59a52: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 59a59: 48 8b b5 38 fd ff ff mov -0x2c8(%rbp),%rsi 0.00 : 59a60: 48 89 70 08 mov %rsi,0x8(%rax) 0.00 : 59a64: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 59a6b: e9 ab db ff ff jmpq 5761b <_IO_vfscanf+0x2c8b> 0.00 : 59a70: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59a77: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59a7b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59a82: e9 28 db ff ff jmpq 575af <_IO_vfscanf+0x2c1f> 0.00 : 59a87: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59a8e: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59a92: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59a99: e9 43 f1 ff ff jmpq 58be1 <_IO_vfscanf+0x4251> 0.00 : 59a9e: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 59aa5: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 59aac: 48 8b 07 mov (%rdi),%rax 0.00 : 59aaf: 48 89 02 mov %rax,(%rdx) 0.00 : 59ab2: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 59ab6: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59abd: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 59ac1: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 59ac5: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59ac9: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59acf: 83 ea 01 sub $0x1,%edx 0.00 : 59ad2: 74 1a je 59aee <_IO_vfscanf+0x515e> 0.00 : 59ad4: 83 f8 30 cmp $0x30,%eax 0.00 : 59ad7: 73 0b jae 59ae4 <_IO_vfscanf+0x5154> 0.00 : 59ad9: 83 c0 08 add $0x8,%eax 0.00 : 59adc: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59ae2: eb eb jmp 59acf <_IO_vfscanf+0x513f> 0.00 : 59ae4: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59aeb: 08 0.00 : 59aec: eb e1 jmp 59acf <_IO_vfscanf+0x513f> 0.00 : 59aee: 83 f8 30 cmp $0x30,%eax 0.00 : 59af1: 0f 83 48 15 00 00 jae 5b03f <_IO_vfscanf+0x66af> 0.00 : 59af7: 89 c2 mov %eax,%edx 0.00 : 59af9: 83 c0 08 add $0x8,%eax 0.00 : 59afc: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59b03: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59b09: e9 d3 f0 ff ff jmpq 58be1 <_IO_vfscanf+0x4251> 0.00 : 59b0e: 66 90 xchg %ax,%ax 0.00 : 59b10: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59b17: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59b1b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59b22: e9 c2 c4 ff ff jmpq 55fe9 <_IO_vfscanf+0x1659> 0.00 : 59b27: 4c 89 d7 mov %r10,%rdi 0.00 : 59b2a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59b31: e8 ca b6 01 00 callq 75200 <__uflow> 0.00 : 59b36: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59b39: 41 89 c7 mov %eax,%r15d 0.00 : 59b3c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59b43: 0f 84 ca b0 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 59b49: e9 d2 b6 ff ff jmpq 55220 <_IO_vfscanf+0x890> 0.00 : 59b4e: 66 90 xchg %ax,%ax 0.00 : 59b50: 48 8b 1d e1 82 31 00 mov 0x3182e1(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59b57: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 59b5d: 4d 89 ec mov %r13,%r12 0.00 : 59b60: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59b67: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 59b6a: e9 a5 d4 ff ff jmpq 57014 <_IO_vfscanf+0x2684> 0.00 : 59b6f: 4d 8d 5e fe lea -0x2(%r14),%r11 0.00 : 59b73: 4c 89 d7 mov %r10,%rdi 0.00 : 59b76: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 59b7a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59b81: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59b88: e8 c3 a5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 59b8d: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59b94: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59b9b: e9 5b dc ff ff jmpq 577fb <_IO_vfscanf+0x2e6b> 0.00 : 59ba0: 4d 8d 5d fe lea -0x2(%r13),%r11 0.00 : 59ba4: 4c 89 d7 mov %r10,%rdi 0.00 : 59ba7: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 59bab: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59bb2: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59bb9: e8 92 a5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 59bbe: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59bc5: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59bcc: e9 4b e2 ff ff jmpq 57e1c <_IO_vfscanf+0x348c> 0.00 : 59bd1: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59bd8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59bdc: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59be3: e9 87 c6 ff ff jmpq 5626f <_IO_vfscanf+0x18df> 0.00 : 59be8: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59bef: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59bf3: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59bfa: e9 76 c8 ff ff jmpq 56475 <_IO_vfscanf+0x1ae5> 0.00 : 59bff: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 59c06: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59c0d: 48 8b 02 mov (%rdx),%rax 0.00 : 59c10: 48 89 01 mov %rax,(%rcx) 0.00 : 59c13: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59c1a: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59c1e: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 59c22: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59c26: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59c2a: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59c30: 83 ea 01 sub $0x1,%edx 0.00 : 59c33: 74 1a je 59c4f <_IO_vfscanf+0x52bf> 0.00 : 59c35: 83 f8 30 cmp $0x30,%eax 0.00 : 59c38: 73 0b jae 59c45 <_IO_vfscanf+0x52b5> 0.00 : 59c3a: 83 c0 08 add $0x8,%eax 0.00 : 59c3d: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59c43: eb eb jmp 59c30 <_IO_vfscanf+0x52a0> 0.00 : 59c45: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59c4c: 08 0.00 : 59c4d: eb e1 jmp 59c30 <_IO_vfscanf+0x52a0> 0.00 : 59c4f: 83 f8 30 cmp $0x30,%eax 0.00 : 59c52: 0f 83 24 01 00 00 jae 59d7c <_IO_vfscanf+0x53ec> 0.00 : 59c58: 89 c2 mov %eax,%edx 0.00 : 59c5a: 83 c0 08 add $0x8,%eax 0.00 : 59c5d: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59c64: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59c6a: e9 06 c8 ff ff jmpq 56475 <_IO_vfscanf+0x1ae5> 0.00 : 59c6f: 90 nop 0.00 : 59c70: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59c77: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59c7b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59c82: e9 10 d5 ff ff jmpq 57197 <_IO_vfscanf+0x2807> 0.00 : 59c87: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 59c8e: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59c95: 48 8b 02 mov (%rdx),%rax 0.00 : 59c98: 48 89 01 mov %rax,(%rcx) 0.00 : 59c9b: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59ca2: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59ca6: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 59caa: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59cae: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59cb2: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59cb8: 83 ea 01 sub $0x1,%edx 0.00 : 59cbb: 74 1a je 59cd7 <_IO_vfscanf+0x5347> 0.00 : 59cbd: 83 f8 30 cmp $0x30,%eax 0.00 : 59cc0: 73 0b jae 59ccd <_IO_vfscanf+0x533d> 0.00 : 59cc2: 83 c0 08 add $0x8,%eax 0.00 : 59cc5: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59ccb: eb eb jmp 59cb8 <_IO_vfscanf+0x5328> 0.00 : 59ccd: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59cd4: 08 0.00 : 59cd5: eb e1 jmp 59cb8 <_IO_vfscanf+0x5328> 0.00 : 59cd7: 83 f8 30 cmp $0x30,%eax 0.00 : 59cda: 0f 83 0d 01 00 00 jae 59ded <_IO_vfscanf+0x545d> 0.00 : 59ce0: 89 c2 mov %eax,%edx 0.00 : 59ce2: 83 c0 08 add $0x8,%eax 0.00 : 59ce5: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59cec: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59cf2: e9 a0 d4 ff ff jmpq 57197 <_IO_vfscanf+0x2807> 0.00 : 59cf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 59cfe: 00 00 0.00 : 59d00: 4c 89 d7 mov %r10,%rdi 0.00 : 59d03: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 59d0a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59d11: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59d18: e8 e3 b4 01 00 callq 75200 <__uflow> 0.00 : 59d1d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59d20: 41 89 c7 mov %eax,%r15d 0.00 : 59d23: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 59d2a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59d31: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59d38: 0f 85 c6 00 00 00 jne 59e04 <_IO_vfscanf+0x5474> 0.00 : 59d3e: 48 8b 1d f3 80 31 00 mov 0x3180f3(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59d45: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 59d4c: 4d 89 c4 mov %r8,%r12 0.00 : 59d4f: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 59d52: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 59d58: e9 e6 ee ff ff jmpq 58c43 <_IO_vfscanf+0x42b3> 0.00 : 59d5d: 48 8b 1d d4 80 31 00 mov 0x3180d4(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59d64: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 59d6a: 4d 89 c4 mov %r8,%r12 0.00 : 59d6d: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59d74: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 59d77: e9 c7 ee ff ff jmpq 58c43 <_IO_vfscanf+0x42b3> 0.00 : 59d7c: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59d83: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59d87: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59d8e: e9 e2 c6 ff ff jmpq 56475 <_IO_vfscanf+0x1ae5> 0.00 : 59d93: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 59d9a: 4d 8d 44 24 01 lea 0x1(%r12),%r8 0.00 : 59d9f: 4a 8d 34 85 00 00 00 lea 0x0(,%r8,4),%rsi 0.00 : 59da6: 00 0.00 : 59da7: 48 8b 3a mov (%rdx),%rdi 0.00 : 59daa: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 59db1: e8 8a 4a fc ff callq 1e840 0.00 : 59db6: 48 85 c0 test %rax,%rax 0.00 : 59db9: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 59dc0: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59dc7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59dce: 74 3d je 59e0d <_IO_vfscanf+0x547d> 0.00 : 59dd0: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 59dd7: 48 89 06 mov %rax,(%rsi) 0.00 : 59dda: 48 03 85 f8 fd ff ff add -0x208(%rbp),%rax 0.00 : 59de1: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 59de8: e9 d0 cb ff ff jmpq 569bd <_IO_vfscanf+0x202d> 0.00 : 59ded: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59df4: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59df8: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59dff: e9 93 d3 ff ff jmpq 57197 <_IO_vfscanf+0x2807> 0.00 : 59e04: 49 83 c3 01 add $0x1,%r11 0.00 : 59e08: e9 ee cb ff ff jmpq 569fb <_IO_vfscanf+0x206b> 0.00 : 59e0d: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 59e14: 20 00 00 0.00 : 59e17: 0f 85 3e b1 ff ff jne 54f5b <_IO_vfscanf+0x5cb> 0.00 : 59e1d: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 59e24: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 59e29: 48 8b 01 mov (%rcx),%rax 0.00 : 59e2c: 42 c7 44 a0 fc 00 00 movl $0x0,-0x4(%rax,%r12,4) 0.00 : 59e33: 00 00 0.00 : 59e35: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 59e3c: 00 00 00 00 0.00 : 59e40: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 59e47: e9 94 b0 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 59e4c: 4c 89 d7 mov %r10,%rdi 0.00 : 59e4f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59e56: e8 a5 b3 01 00 callq 75200 <__uflow> 0.00 : 59e5b: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59e5e: 41 89 c7 mov %eax,%r15d 0.00 : 59e61: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59e68: 0f 84 a5 ad ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 59e6e: e9 c3 c4 ff ff jmpq 56336 <_IO_vfscanf+0x19a6> 0.00 : 59e73: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59e7a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59e7e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59e85: e9 d5 ee ff ff jmpq 58d5f <_IO_vfscanf+0x43cf> 0.00 : 59e8a: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59e91: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 59e98: 48 8b 06 mov (%rsi),%rax 0.00 : 59e9b: 48 89 07 mov %rax,(%rdi) 0.00 : 59e9e: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59ea2: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 59ea6: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59eaa: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 59eae: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59eb4: 83 ea 01 sub $0x1,%edx 0.00 : 59eb7: 74 1a je 59ed3 <_IO_vfscanf+0x5543> 0.00 : 59eb9: 83 f8 30 cmp $0x30,%eax 0.00 : 59ebc: 73 0b jae 59ec9 <_IO_vfscanf+0x5539> 0.00 : 59ebe: 83 c0 08 add $0x8,%eax 0.00 : 59ec1: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59ec7: eb eb jmp 59eb4 <_IO_vfscanf+0x5524> 0.00 : 59ec9: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59ed0: 08 0.00 : 59ed1: eb e1 jmp 59eb4 <_IO_vfscanf+0x5524> 0.00 : 59ed3: 83 f8 30 cmp $0x30,%eax 0.00 : 59ed6: 73 2e jae 59f06 <_IO_vfscanf+0x5576> 0.00 : 59ed8: 89 c2 mov %eax,%edx 0.00 : 59eda: 83 c0 08 add $0x8,%eax 0.00 : 59edd: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59ee4: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59eea: e9 70 ee ff ff jmpq 58d5f <_IO_vfscanf+0x43cf> 0.00 : 59eef: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59ef6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59efa: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59f01: e9 69 c3 ff ff jmpq 5626f <_IO_vfscanf+0x18df> 0.00 : 59f06: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59f0d: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59f11: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59f18: e9 42 ee ff ff jmpq 58d5f <_IO_vfscanf+0x43cf> 0.00 : 59f1d: 49 83 c3 01 add $0x1,%r11 0.00 : 59f21: 4c 89 9d d0 fd ff ff mov %r11,-0x230(%rbp) 0.00 : 59f28: e9 ea c7 ff ff jmpq 56717 <_IO_vfscanf+0x1d87> 0.00 : 59f2d: 4c 89 d7 mov %r10,%rdi 0.00 : 59f30: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 59f37: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 59f3e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59f45: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59f4c: e8 af b2 01 00 callq 75200 <__uflow> 0.00 : 59f51: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59f54: 41 89 c7 mov %eax,%r15d 0.00 : 59f57: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 59f5e: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 59f65: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59f6c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59f73: 0f 85 52 d4 ff ff jne 573cb <_IO_vfscanf+0x2a3b> 0.00 : 59f79: 48 8b 1d b8 7e 31 00 mov 0x317eb8(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59f80: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59f87: 4d 89 eb mov %r13,%r11 0.00 : 59f8a: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 59f8d: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 59f93: e9 d9 cd ff ff jmpq 56d71 <_IO_vfscanf+0x23e1> 0.00 : 59f98: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59f9f: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59fa3: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59faa: e9 f6 d4 ff ff jmpq 574a5 <_IO_vfscanf+0x2b15> 0.00 : 59faf: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 59fb6: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 59fbd: 48 8b 01 mov (%rcx),%rax 0.00 : 59fc0: 48 89 03 mov %rax,(%rbx) 0.00 : 59fc3: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 59fc7: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 59fcb: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 59fcf: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 59fd3: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59fd9: 83 ea 01 sub $0x1,%edx 0.00 : 59fdc: 74 1a je 59ff8 <_IO_vfscanf+0x5668> 0.00 : 59fde: 83 f8 30 cmp $0x30,%eax 0.00 : 59fe1: 73 0b jae 59fee <_IO_vfscanf+0x565e> 0.00 : 59fe3: 83 c0 08 add $0x8,%eax 0.00 : 59fe6: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59fec: eb eb jmp 59fd9 <_IO_vfscanf+0x5649> 0.00 : 59fee: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59ff5: 08 0.00 : 59ff6: eb e1 jmp 59fd9 <_IO_vfscanf+0x5649> 0.00 : 59ff8: 83 f8 30 cmp $0x30,%eax 0.00 : 59ffb: 0f 83 b7 0f 00 00 jae 5afb8 <_IO_vfscanf+0x6628> 0.00 : 5a001: 89 c2 mov %eax,%edx 0.00 : 5a003: 83 c0 08 add $0x8,%eax 0.00 : 5a006: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5a00d: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5a013: e9 8d d4 ff ff jmpq 574a5 <_IO_vfscanf+0x2b15> 0.00 : 5a018: 4c 89 d7 mov %r10,%rdi 0.00 : 5a01b: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a022: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a029: e8 d2 b1 01 00 callq 75200 <__uflow> 0.00 : 5a02e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a031: 41 89 c7 mov %eax,%r15d 0.00 : 5a034: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a03b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a042: 0f 85 42 d8 ff ff jne 5788a <_IO_vfscanf+0x2efa> 0.00 : 5a048: 48 8b 1d e9 7d 31 00 mov 0x317de9(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a04f: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5a056: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5a059: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a05f: e9 97 d7 ff ff jmpq 577fb <_IO_vfscanf+0x2e6b> 0.00 : 5a064: 4c 89 d7 mov %r10,%rdi 0.00 : 5a067: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a06e: e8 8d b1 01 00 callq 75200 <__uflow> 0.00 : 5a073: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a076: 41 89 c7 mov %eax,%r15d 0.00 : 5a079: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a080: 0f 85 d4 d5 ff ff jne 5765a <_IO_vfscanf+0x2cca> 0.00 : 5a086: 48 8b 1d ab 7d 31 00 mov 0x317dab(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a08d: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5a094: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5a097: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a09d: e9 53 c5 ff ff jmpq 565f5 <_IO_vfscanf+0x1c65> 0.00 : 5a0a2: 4c 89 d7 mov %r10,%rdi 0.00 : 5a0a5: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a0ac: e8 4f b1 01 00 callq 75200 <__uflow> 0.00 : 5a0b1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a0b4: 41 89 c7 mov %eax,%r15d 0.00 : 5a0b7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a0be: 0f 84 14 ae ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a0c4: e9 16 e9 ff ff jmpq 589df <_IO_vfscanf+0x404f> 0.00 : 5a0c9: 4c 89 d7 mov %r10,%rdi 0.00 : 5a0cc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a0d3: e8 28 b1 01 00 callq 75200 <__uflow> 0.00 : 5a0d8: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a0db: 89 c1 mov %eax,%ecx 0.00 : 5a0dd: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a0e4: 0f 84 ee ad ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a0ea: e9 84 e8 ff ff jmpq 58973 <_IO_vfscanf+0x3fe3> 0.00 : 5a0ef: 4c 89 d7 mov %r10,%rdi 0.00 : 5a0f2: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a0f9: e8 02 b1 01 00 callq 75200 <__uflow> 0.00 : 5a0fe: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a101: 41 89 c7 mov %eax,%r15d 0.00 : 5a104: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a10b: 0f 84 c7 ad ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a111: e9 56 e5 ff ff jmpq 5866c <_IO_vfscanf+0x3cdc> 0.00 : 5a116: 4c 89 d7 mov %r10,%rdi 0.00 : 5a119: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a120: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a127: e8 d4 b0 01 00 callq 75200 <__uflow> 0.00 : 5a12c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a12f: 41 89 c7 mov %eax,%r15d 0.00 : 5a132: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a139: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a140: 0f 85 35 c9 ff ff jne 56a7b <_IO_vfscanf+0x20eb> 0.00 : 5a146: 48 8b 1d eb 7c 31 00 mov 0x317ceb(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a14d: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5a154: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 5a159: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5a15c: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a162: e9 20 c9 ff ff jmpq 56a87 <_IO_vfscanf+0x20f7> 0.00 : 5a167: 4c 89 d7 mov %r10,%rdi 0.00 : 5a16a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a171: e8 8a b0 01 00 callq 75200 <__uflow> 0.00 : 5a176: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a179: 41 89 c7 mov %eax,%r15d 0.00 : 5a17c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a183: 0f 84 8a aa ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5a189: e9 a2 b4 ff ff jmpq 55630 <_IO_vfscanf+0xca0> 0.00 : 5a18e: 4d 89 c3 mov %r8,%r11 0.00 : 5a191: 45 89 ef mov %r13d,%r15d 0.00 : 5a194: 4c 89 cb mov %r9,%rbx 0.00 : 5a197: e9 3d b9 ff ff jmpq 55ad9 <_IO_vfscanf+0x1149> 0.00 : 5a19c: 4c 89 d7 mov %r10,%rdi 0.00 : 5a19f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a1a6: e8 55 b0 01 00 callq 75200 <__uflow> 0.00 : 5a1ab: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a1ae: 41 89 c7 mov %eax,%r15d 0.00 : 5a1b1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a1b8: 0f 84 1a ad ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a1be: e9 a6 da ff ff jmpq 57c69 <_IO_vfscanf+0x32d9> 0.00 : 5a1c3: 4c 89 d7 mov %r10,%rdi 0.00 : 5a1c6: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a1cd: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a1d4: e8 27 b0 01 00 callq 75200 <__uflow> 0.00 : 5a1d9: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a1dc: 41 89 c7 mov %eax,%r15d 0.00 : 5a1df: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a1e6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a1ed: 0f 85 90 dd ff ff jne 57f83 <_IO_vfscanf+0x35f3> 0.00 : 5a1f3: 48 8b 1d 3e 7c 31 00 mov 0x317c3e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a1fa: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5a201: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5a204: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a20a: e9 8b f4 ff ff jmpq 5969a <_IO_vfscanf+0x4d0a> 0.00 : 5a20f: 4c 89 d7 mov %r10,%rdi 0.00 : 5a212: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a219: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a220: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a227: e8 d4 af 01 00 callq 75200 <__uflow> 0.00 : 5a22c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a22f: 41 89 c7 mov %eax,%r15d 0.00 : 5a232: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a239: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a240: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a247: 0f 85 2d f4 ff ff jne 5967a <_IO_vfscanf+0x4cea> 0.00 : 5a24d: 48 8b 1d e4 7b 31 00 mov 0x317be4(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a254: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5a25b: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5a25e: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a264: e9 2d b2 ff ff jmpq 55496 <_IO_vfscanf+0xb06> 0.00 : 5a269: 4c 89 d7 mov %r10,%rdi 0.00 : 5a26c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a273: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a27a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a281: e8 7a af 01 00 callq 75200 <__uflow> 0.00 : 5a286: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a289: 41 89 c7 mov %eax,%r15d 0.00 : 5a28c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a293: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a29a: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a2a1: 0f 85 ae b1 ff ff jne 55455 <_IO_vfscanf+0xac5> 0.00 : 5a2a7: 48 8b 1d 8a 7b 31 00 mov 0x317b8a(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a2ae: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5a2b5: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5a2b8: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a2be: e9 96 b1 ff ff jmpq 55459 <_IO_vfscanf+0xac9> 0.00 : 5a2c3: 49 83 c3 01 add $0x1,%r11 0.00 : 5a2c7: e9 8c c6 ff ff jmpq 56958 <_IO_vfscanf+0x1fc8> 0.00 : 5a2cc: 48 8d 3d 91 0a 0e 00 lea 0xe0a91(%rip),%rdi # 13ad64 <__PRETTY_FUNCTION__.14584+0xe> 0.00 : 5a2d3: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a2da: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a2e1: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a2e8: e8 c3 46 08 00 callq de9b0 0.00 : 5a2ed: 48 8b 8d 10 fd ff ff mov -0x2f0(%rbp),%rcx 0.00 : 5a2f4: 48 89 85 70 fd ff ff mov %rax,-0x290(%rbp) 0.00 : 5a2fb: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a302: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a309: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a310: 8b 89 d8 00 00 00 mov 0xd8(%rcx),%ecx 0.00 : 5a316: 89 8d ec fc ff ff mov %ecx,-0x314(%rbp) 0.00 : 5a31c: 83 e9 01 sub $0x1,%ecx 0.00 : 5a31f: 48 85 c0 test %rax,%rax 0.00 : 5a322: 89 8d 6c fd ff ff mov %ecx,-0x294(%rbp) 0.00 : 5a328: 0f 85 d5 0a 00 00 jne 5ae03 <_IO_vfscanf+0x6473> 0.00 : 5a32e: 0f b6 8d 04 fd ff ff movzbl -0x2fc(%rbp),%ecx 0.00 : 5a335: c7 85 68 fd ff ff 00 movl $0x0,-0x298(%rbp) 0.00 : 5a33c: 00 00 00 0.00 : 5a33f: 83 e1 80 and $0xffffff80,%ecx 0.00 : 5a342: 88 8d 8a fc ff ff mov %cl,-0x376(%rbp) 0.00 : 5a348: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5a34c: 74 0a je 5a358 <_IO_vfscanf+0x59c8> 0.00 : 5a34e: 8b 9d dc fd ff ff mov -0x224(%rbp),%ebx 0.00 : 5a354: 85 db test %ebx,%ebx 0.00 : 5a356: 75 08 jne 5a360 <_IO_vfscanf+0x59d0> 0.00 : 5a358: 4c 89 cb mov %r9,%rbx 0.00 : 5a35b: e9 5d af ff ff jmpq 552bd <_IO_vfscanf+0x92d> 0.00 : 5a360: c7 85 7c fd ff ff 00 movl $0x0,-0x284(%rbp) 0.00 : 5a367: 00 00 00 0.00 : 5a36a: 48 c7 85 c0 fd ff ff movq $0x0,-0x240(%rbp) 0.00 : 5a371: 00 00 00 00 0.00 : 5a375: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a37b: 41 be ff ff ff 7f mov $0x7fffffff,%r14d 0.00 : 5a381: 85 c0 test %eax,%eax 0.00 : 5a383: 44 0f 4f b5 dc fd ff cmovg -0x224(%rbp),%r14d 0.00 : 5a38a: ff 0.00 : 5a38b: 48 83 bd 70 fd ff ff cmpq $0x0,-0x290(%rbp) 0.00 : 5a392: 00 0.00 : 5a393: 0f 85 01 09 00 00 jne 5ac9a <_IO_vfscanf+0x630a> 0.00 : 5a399: 48 8b b5 10 fd ff ff mov -0x2f0(%rbp),%rsi 0.00 : 5a3a0: 48 8b 9d c0 fd ff ff mov -0x240(%rbp),%rbx 0.00 : 5a3a7: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5a3ae: 48 8b 84 1e e0 00 00 mov 0xe0(%rsi,%rbx,1),%rax 0.00 : 5a3b5: 00 0.00 : 5a3b6: 48 89 04 1f mov %rax,(%rdi,%rbx,1) 0.00 : 5a3ba: 8b 85 68 fd ff ff mov -0x298(%rbp),%eax 0.00 : 5a3c0: 85 c0 test %eax,%eax 0.00 : 5a3c2: 74 6e je 5a432 <_IO_vfscanf+0x5aa2> 0.00 : 5a3c4: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 5a3cb: 48 8b 85 c0 fd ff ff mov -0x240(%rbp),%rax 0.00 : 5a3d2: 31 db xor %ebx,%ebx 0.00 : 5a3d4: 48 8b 3c 02 mov (%rdx,%rax,1),%rdi 0.00 : 5a3d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a3df: 00 0.00 : 5a3e0: 31 f6 xor %esi,%esi 0.00 : 5a3e2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a3e9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a3f0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a3f7: 83 c3 01 add $0x1,%ebx 0.00 : 5a3fa: e8 b1 b7 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5a3ff: 39 9d 68 fd ff ff cmp %ebx,-0x298(%rbp) 0.00 : 5a405: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 5a409: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a410: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a417: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a41e: 7f c0 jg 5a3e0 <_IO_vfscanf+0x5a50> 0.00 : 5a420: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5a427: 48 8b 8d c0 fd ff ff mov -0x240(%rbp),%rcx 0.00 : 5a42e: 48 89 3c 0b mov %rdi,(%rbx,%rcx,1) 0.00 : 5a432: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5a439: 48 8b b5 c0 fd ff ff mov -0x240(%rbp),%rsi 0.00 : 5a440: 48 8b 34 37 mov (%rdi,%rsi,1),%rsi 0.00 : 5a444: 48 89 b5 00 fe ff ff mov %rsi,-0x200(%rbp) 0.00 : 5a44b: 0f b6 16 movzbl (%rsi),%edx 0.00 : 5a44e: 49 89 f4 mov %rsi,%r12 0.00 : 5a451: 0f b6 c2 movzbl %dl,%eax 0.00 : 5a454: 44 39 f8 cmp %r15d,%eax 0.00 : 5a457: 75 71 jne 5a4ca <_IO_vfscanf+0x5b3a> 0.00 : 5a459: 4c 8b a5 00 fe ff ff mov -0x200(%rbp),%r12 0.00 : 5a460: 48 8b bd 00 fe ff ff mov -0x200(%rbp),%rdi 0.00 : 5a467: 49 83 c4 01 add $0x1,%r12 0.00 : 5a46b: 80 7f 01 00 cmpb $0x0,0x1(%rdi) 0.00 : 5a46f: 0f 84 9c 06 00 00 je 5ab11 <_IO_vfscanf+0x6181> 0.00 : 5a475: 49 83 c3 01 add $0x1,%r11 0.00 : 5a479: eb 20 jmp 5a49b <_IO_vfscanf+0x5b0b> 0.00 : 5a47b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a480: 49 83 c4 01 add $0x1,%r12 0.00 : 5a484: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5a489: 0f 84 82 06 00 00 je 5ab11 <_IO_vfscanf+0x6181> 0.00 : 5a48f: 45 85 f6 test %r14d,%r14d 0.00 : 5a492: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 5a496: 74 3d je 5a4d5 <_IO_vfscanf+0x5b45> 0.00 : 5a498: 49 89 c3 mov %rax,%r11 0.00 : 5a49b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5a49f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5a4a3: 4d 8d 6b ff lea -0x1(%r11),%r13 0.00 : 5a4a7: 0f 83 02 06 00 00 jae 5aaaf <_IO_vfscanf+0x611f> 0.00 : 5a4ad: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5a4b1: 48 83 c0 01 add $0x1,%rax 0.00 : 5a4b5: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5a4b9: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 5a4be: 41 83 ee 01 sub $0x1,%r14d 0.00 : 5a4c2: 0f b6 ca movzbl %dl,%ecx 0.00 : 5a4c5: 44 39 f9 cmp %r15d,%ecx 0.00 : 5a4c8: 74 b6 je 5a480 <_IO_vfscanf+0x5af0> 0.00 : 5a4ca: 84 d2 test %dl,%dl 0.00 : 5a4cc: 0f 84 3f 06 00 00 je 5ab11 <_IO_vfscanf+0x6181> 0.00 : 5a4d2: 44 89 f9 mov %r15d,%ecx 0.00 : 5a4d5: 4c 3b a5 00 fe ff ff cmp -0x200(%rbp),%r12 0.00 : 5a4dc: 41 89 cf mov %ecx,%r15d 0.00 : 5a4df: 0f 86 b3 00 00 00 jbe 5a598 <_IO_vfscanf+0x5c08> 0.00 : 5a4e5: 83 f9 ff cmp $0xffffffff,%ecx 0.00 : 5a4e8: 74 39 je 5a523 <_IO_vfscanf+0x5b93> 0.00 : 5a4ea: 49 83 eb 01 sub $0x1,%r11 0.00 : 5a4ee: 4c 89 d7 mov %r10,%rdi 0.00 : 5a4f1: 0f b6 f1 movzbl %cl,%esi 0.00 : 5a4f4: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a4fb: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a502: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a509: e8 42 9c 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a50e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a515: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a51c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a523: 4d 8d 6c 24 ff lea -0x1(%r12),%r13 0.00 : 5a528: 4c 39 ad 00 fe ff ff cmp %r13,-0x200(%rbp) 0.00 : 5a52f: 73 62 jae 5a593 <_IO_vfscanf+0x5c03> 0.00 : 5a531: 4c 89 eb mov %r13,%rbx 0.00 : 5a534: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5a538: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5a53b: 4c 89 d7 mov %r10,%rdi 0.00 : 5a53e: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a545: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a54c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a553: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5a557: e8 f4 9b 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a55c: 48 39 9d 00 fe ff ff cmp %rbx,-0x200(%rbp) 0.00 : 5a563: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a56a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a571: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a578: 72 be jb 5a538 <_IO_vfscanf+0x5ba8> 0.00 : 5a57a: 48 8b 85 00 fe ff ff mov -0x200(%rbp),%rax 0.00 : 5a581: 49 8d 54 24 fe lea -0x2(%r12),%rdx 0.00 : 5a586: 48 83 e8 01 sub $0x1,%rax 0.00 : 5a58a: 48 29 d0 sub %rdx,%rax 0.00 : 5a58d: 49 01 c3 add %rax,%r11 0.00 : 5a590: 49 01 c5 add %rax,%r13 0.00 : 5a593: 45 0f b6 7d 00 movzbl 0x0(%r13),%r15d 0.00 : 5a598: 48 8b bd 00 fe ff ff mov -0x200(%rbp),%rdi 0.00 : 5a59f: 31 f6 xor %esi,%esi 0.00 : 5a5a1: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a5a8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a5af: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a5b6: e8 f5 b5 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5a5bb: 48 8b 8d c0 fd ff ff mov -0x240(%rbp),%rcx 0.00 : 5a5c2: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5a5c9: 48 83 c0 01 add $0x1,%rax 0.00 : 5a5cd: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 0.00 : 5a5d1: 83 85 7c fd ff ff 01 addl $0x1,-0x284(%rbp) 0.00 : 5a5d8: 48 83 c1 08 add $0x8,%rcx 0.00 : 5a5dc: 83 bd 7c fd ff ff 0a cmpl $0xa,-0x284(%rbp) 0.00 : 5a5e3: 48 89 8d c0 fd ff ff mov %rcx,-0x240(%rbp) 0.00 : 5a5ea: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a5f1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a5f8: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a5ff: 0f 85 70 fd ff ff jne 5a375 <_IO_vfscanf+0x59e5> 0.00 : 5a605: 8b bd 68 fd ff ff mov -0x298(%rbp),%edi 0.00 : 5a60b: 83 c7 01 add $0x1,%edi 0.00 : 5a60e: 39 bd 6c fd ff ff cmp %edi,-0x294(%rbp) 0.00 : 5a614: 89 bd 08 fe ff ff mov %edi,-0x1f8(%rbp) 0.00 : 5a61a: 0f 8c 2a 03 00 00 jl 5a94a <_IO_vfscanf+0x5fba> 0.00 : 5a620: 48 8b 85 48 fc ff ff mov -0x3b8(%rbp),%rax 0.00 : 5a627: c7 85 7c fd ff ff 00 movl $0x0,-0x284(%rbp) 0.00 : 5a62e: 00 00 00 0.00 : 5a631: 48 89 85 b8 fd ff ff mov %rax,-0x248(%rbp) 0.00 : 5a638: 48 8b 95 b8 fd ff ff mov -0x248(%rbp),%rdx 0.00 : 5a63f: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a645: 41 bd ff ff ff 7f mov $0x7fffffff,%r13d 0.00 : 5a64b: 48 8b 12 mov (%rdx),%rdx 0.00 : 5a64e: 85 c0 test %eax,%eax 0.00 : 5a650: 44 0f 4f ad dc fd ff cmovg -0x224(%rbp),%r13d 0.00 : 5a657: ff 0.00 : 5a658: 48 89 95 88 fd ff ff mov %rdx,-0x278(%rbp) 0.00 : 5a65f: 0f b6 02 movzbl (%rdx),%eax 0.00 : 5a662: 4c 8b a5 88 fd ff ff mov -0x278(%rbp),%r12 0.00 : 5a669: 0f b6 d0 movzbl %al,%edx 0.00 : 5a66c: 44 39 fa cmp %r15d,%edx 0.00 : 5a66f: 75 77 jne 5a6e8 <_IO_vfscanf+0x5d58> 0.00 : 5a671: 4c 8b a5 88 fd ff ff mov -0x278(%rbp),%r12 0.00 : 5a678: 48 8b 8d 88 fd ff ff mov -0x278(%rbp),%rcx 0.00 : 5a67f: 49 83 c4 01 add $0x1,%r12 0.00 : 5a683: 80 79 01 00 cmpb $0x0,0x1(%rcx) 0.00 : 5a687: 0f 84 18 02 00 00 je 5a8a5 <_IO_vfscanf+0x5f15> 0.00 : 5a68d: 49 83 c3 01 add $0x1,%r11 0.00 : 5a691: eb 20 jmp 5a6b3 <_IO_vfscanf+0x5d23> 0.00 : 5a693: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a698: 49 83 c4 01 add $0x1,%r12 0.00 : 5a69c: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5a6a1: 0f 84 fe 01 00 00 je 5a8a5 <_IO_vfscanf+0x5f15> 0.00 : 5a6a7: 45 85 ed test %r13d,%r13d 0.00 : 5a6aa: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 5a6ae: 74 43 je 5a6f3 <_IO_vfscanf+0x5d63> 0.00 : 5a6b0: 49 89 c3 mov %rax,%r11 0.00 : 5a6b3: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5a6b7: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5a6bb: 4d 8d 73 ff lea -0x1(%r11),%r14 0.00 : 5a6bf: 0f 83 23 02 00 00 jae 5a8e8 <_IO_vfscanf+0x5f58> 0.00 : 5a6c5: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5a6c9: 48 83 c0 01 add $0x1,%rax 0.00 : 5a6cd: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5a6d1: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5a6d6: 41 83 ed 01 sub $0x1,%r13d 0.00 : 5a6da: 0f b6 d0 movzbl %al,%edx 0.00 : 5a6dd: 44 39 fa cmp %r15d,%edx 0.00 : 5a6e0: 74 b6 je 5a698 <_IO_vfscanf+0x5d08> 0.00 : 5a6e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a6e8: 84 c0 test %al,%al 0.00 : 5a6ea: 0f 84 b8 01 00 00 je 5a8a8 <_IO_vfscanf+0x5f18> 0.00 : 5a6f0: 44 89 fa mov %r15d,%edx 0.00 : 5a6f3: 4c 39 a5 88 fd ff ff cmp %r12,-0x278(%rbp) 0.00 : 5a6fa: 41 89 d7 mov %edx,%r15d 0.00 : 5a6fd: 0f 83 b5 00 00 00 jae 5a7b8 <_IO_vfscanf+0x5e28> 0.00 : 5a703: 83 fa ff cmp $0xffffffff,%edx 0.00 : 5a706: 74 39 je 5a741 <_IO_vfscanf+0x5db1> 0.00 : 5a708: 49 83 eb 01 sub $0x1,%r11 0.00 : 5a70c: 4c 89 d7 mov %r10,%rdi 0.00 : 5a70f: 0f b6 f2 movzbl %dl,%esi 0.00 : 5a712: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a719: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a720: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a727: e8 24 9a 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a72c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a733: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a73a: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a741: 4d 8d 6c 24 ff lea -0x1(%r12),%r13 0.00 : 5a746: 4c 39 ad 88 fd ff ff cmp %r13,-0x278(%rbp) 0.00 : 5a74d: 73 64 jae 5a7b3 <_IO_vfscanf+0x5e23> 0.00 : 5a74f: 4c 89 eb mov %r13,%rbx 0.00 : 5a752: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a758: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5a75b: 4c 89 d7 mov %r10,%rdi 0.00 : 5a75e: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a765: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a76c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a773: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5a777: e8 d4 99 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a77c: 48 39 9d 88 fd ff ff cmp %rbx,-0x278(%rbp) 0.00 : 5a783: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a78a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a791: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a798: 72 be jb 5a758 <_IO_vfscanf+0x5dc8> 0.00 : 5a79a: 48 8b 85 88 fd ff ff mov -0x278(%rbp),%rax 0.00 : 5a7a1: 49 8d 54 24 fe lea -0x2(%r12),%rdx 0.00 : 5a7a6: 48 83 e8 01 sub $0x1,%rax 0.00 : 5a7aa: 48 29 d0 sub %rdx,%rax 0.00 : 5a7ad: 49 01 c3 add %rax,%r11 0.00 : 5a7b0: 49 01 c5 add %rax,%r13 0.00 : 5a7b3: 45 0f b6 7d 00 movzbl 0x0(%r13),%r15d 0.00 : 5a7b8: 48 8b bd 88 fd ff ff mov -0x278(%rbp),%rdi 0.00 : 5a7bf: 31 f6 xor %esi,%esi 0.00 : 5a7c1: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a7c8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a7cf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a7d6: e8 d5 b3 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5a7db: 48 8b bd b8 fd ff ff mov -0x248(%rbp),%rdi 0.00 : 5a7e2: 48 83 c0 01 add $0x1,%rax 0.00 : 5a7e6: 48 89 07 mov %rax,(%rdi) 0.00 : 5a7e9: 83 85 7c fd ff ff 01 addl $0x1,-0x284(%rbp) 0.00 : 5a7f0: 48 83 c7 08 add $0x8,%rdi 0.00 : 5a7f4: 83 bd 7c fd ff ff 0a cmpl $0xa,-0x284(%rbp) 0.00 : 5a7fb: 48 89 bd b8 fd ff ff mov %rdi,-0x248(%rbp) 0.00 : 5a802: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a809: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a810: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a817: 0f 85 1b fe ff ff jne 5a638 <_IO_vfscanf+0x5ca8> 0.00 : 5a81d: 83 85 08 fe ff ff 01 addl $0x1,-0x1f8(%rbp) 0.00 : 5a824: 8b 95 08 fe ff ff mov -0x1f8(%rbp),%edx 0.00 : 5a82a: 39 95 6c fd ff ff cmp %edx,-0x294(%rbp) 0.00 : 5a830: 0f 8d ea fd ff ff jge 5a620 <_IO_vfscanf+0x5c90> 0.00 : 5a836: 83 bd 7c fd ff ff 09 cmpl $0x9,-0x284(%rbp) 0.00 : 5a83d: 0f 8f 07 01 00 00 jg 5a94a <_IO_vfscanf+0x5fba> 0.00 : 5a843: 44 8b bd 7c fd ff ff mov -0x284(%rbp),%r15d 0.00 : 5a84a: 41 83 c7 30 add $0x30,%r15d 0.00 : 5a84e: 45 89 fe mov %r15d,%r14d 0.00 : 5a851: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5a858: 0f 84 1d 03 00 00 je 5ab7b <_IO_vfscanf+0x61eb> 0.00 : 5a85e: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5a865: 31 c0 xor %eax,%eax 0.00 : 5a867: 46 88 34 0b mov %r14b,(%rbx,%r9,1) 0.00 : 5a86b: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5a872: 0f 9f c0 setg %al 0.00 : 5a875: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5a87b: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5a87f: 0f 85 d3 02 00 00 jne 5ab58 <_IO_vfscanf+0x61c8> 0.00 : 5a885: 48 8b 1d ac 75 31 00 mov 0x3175ac(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a88c: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 5a892: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5a899: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5a89c: 49 83 c1 01 add $0x1,%r9 0.00 : 5a8a0: e9 a3 fa ff ff jmpq 5a348 <_IO_vfscanf+0x59b8> 0.00 : 5a8a5: 41 89 d7 mov %edx,%r15d 0.00 : 5a8a8: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a8ae: 85 c0 test %eax,%eax 0.00 : 5a8b0: 44 0f 4e ad dc fd ff cmovle -0x224(%rbp),%r13d 0.00 : 5a8b7: ff 0.00 : 5a8b8: 83 bd 7c fd ff ff 09 cmpl $0x9,-0x284(%rbp) 0.00 : 5a8bf: 44 89 ad dc fd ff ff mov %r13d,-0x224(%rbp) 0.00 : 5a8c6: 0f 8f 51 ff ff ff jg 5a81d <_IO_vfscanf+0x5e8d> 0.00 : 5a8cc: 8b 85 08 fe ff ff mov -0x1f8(%rbp),%eax 0.00 : 5a8d2: 89 85 68 fd ff ff mov %eax,-0x298(%rbp) 0.00 : 5a8d8: 89 85 6c fd ff ff mov %eax,-0x294(%rbp) 0.00 : 5a8de: e9 60 ff ff ff jmpq 5a843 <_IO_vfscanf+0x5eb3> 0.00 : 5a8e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a8e8: 4c 89 d7 mov %r10,%rdi 0.00 : 5a8eb: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a8f2: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a8f9: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a900: e8 fb a8 01 00 callq 75200 <__uflow> 0.00 : 5a905: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a908: 41 89 c7 mov %eax,%r15d 0.00 : 5a90b: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a912: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a919: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a920: 0f 85 ab fd ff ff jne 5a6d1 <_IO_vfscanf+0x5d41> 0.00 : 5a926: 48 8b 1d 0b 75 31 00 mov 0x31750b(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a92d: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5a934: 4d 89 f3 mov %r14,%r11 0.00 : 5a937: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5a93a: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a940: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5a945: e9 9e fd ff ff jmpq 5a6e8 <_IO_vfscanf+0x5d58> 0.00 : 5a94a: 80 bd 8a fc ff ff 00 cmpb $0x0,-0x376(%rbp) 0.00 : 5a951: 0f 84 01 fa ff ff je 5a358 <_IO_vfscanf+0x59c8> 0.00 : 5a957: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a95d: b9 ff ff ff 7f mov $0x7fffffff,%ecx 0.00 : 5a962: 48 8b 9d 30 fd ff ff mov -0x2d0(%rbp),%rbx 0.00 : 5a969: 85 c0 test %eax,%eax 0.00 : 5a96b: 0f 4f 8d dc fd ff ff cmovg -0x224(%rbp),%ecx 0.00 : 5a972: 89 8d 90 fd ff ff mov %ecx,-0x270(%rbp) 0.00 : 5a978: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5a97b: 0f b6 c2 movzbl %dl,%eax 0.00 : 5a97e: 41 39 c7 cmp %eax,%r15d 0.00 : 5a981: 0f 85 df 02 00 00 jne 5ac66 <_IO_vfscanf+0x62d6> 0.00 : 5a987: 4b 8d 34 09 lea (%r9,%r9,1),%rsi 0.00 : 5a98b: 49 8d 5b 01 lea 0x1(%r11),%rbx 0.00 : 5a98f: 4c 8b ad 30 fd ff ff mov -0x2d0(%rbp),%r13 0.00 : 5a996: 48 89 b5 b0 fd ff ff mov %rsi,-0x250(%rbp) 0.00 : 5a99d: eb 73 jmp 5aa12 <_IO_vfscanf+0x6082> 0.00 : 5a99f: 90 nop 0.00 : 5a9a0: 49 83 c5 01 add $0x1,%r13 0.00 : 5a9a4: 47 88 3c 0c mov %r15b,(%r12,%r9,1) 0.00 : 5a9a8: 49 83 c1 01 add $0x1,%r9 0.00 : 5a9ac: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 0.00 : 5a9b1: 45 89 fe mov %r15d,%r14d 0.00 : 5a9b4: 0f 84 24 06 00 00 je 5afde <_IO_vfscanf+0x664e> 0.00 : 5a9ba: 44 8b b5 90 fd ff ff mov -0x270(%rbp),%r14d 0.00 : 5a9c1: 45 85 f6 test %r14d,%r14d 0.00 : 5a9c4: 0f 84 05 06 00 00 je 5afcf <_IO_vfscanf+0x663f> 0.00 : 5a9ca: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5a9ce: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5a9d2: 0f 83 c5 03 00 00 jae 5ad9d <_IO_vfscanf+0x640d> 0.00 : 5a9d8: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5a9dc: 48 83 c0 01 add $0x1,%rax 0.00 : 5a9e0: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5a9e4: 83 ad 90 fd ff ff 01 subl $0x1,-0x270(%rbp) 0.00 : 5a9eb: 48 8d 4b 01 lea 0x1(%rbx),%rcx 0.00 : 5a9ef: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5a9f4: 48 83 85 b0 fd ff ff addq $0x2,-0x250(%rbp) 0.00 : 5a9fb: 02 0.00 : 5a9fc: 0f b6 c2 movzbl %dl,%eax 0.00 : 5a9ff: 44 39 f8 cmp %r15d,%eax 0.00 : 5aa02: 0f 85 86 03 00 00 jne 5ad8e <_IO_vfscanf+0x63fe> 0.00 : 5aa08: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5aa0f: 48 89 cb mov %rcx,%rbx 0.00 : 5aa12: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5aa19: 4c 8d 5b ff lea -0x1(%rbx),%r11 0.00 : 5aa1d: 4c 8b a5 f0 fd ff ff mov -0x210(%rbp),%r12 0.00 : 5aa24: 0f 85 76 ff ff ff jne 5a9a0 <_IO_vfscanf+0x6010> 0.00 : 5aa2a: 48 81 bd b0 fd ff ff cmpq $0x100,-0x250(%rbp) 0.00 : 5aa31: 00 01 00 00 0.00 : 5aa35: bf 00 01 00 00 mov $0x100,%edi 0.00 : 5aa3a: 48 0f 43 bd b0 fd ff cmovae -0x250(%rbp),%rdi 0.00 : 5aa41: ff 0.00 : 5aa42: 48 89 f8 mov %rdi,%rax 0.00 : 5aa45: 48 89 bd 50 fd ff ff mov %rdi,-0x2b0(%rbp) 0.00 : 5aa4c: 48 83 c0 1e add $0x1e,%rax 0.00 : 5aa50: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5aa54: 48 29 c4 sub %rax,%rsp 0.00 : 5aa57: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 5aa5c: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 5aa60: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 5aa67: 00 0.00 : 5aa68: 0f 84 32 ff ff ff je 5a9a0 <_IO_vfscanf+0x6010> 0.00 : 5aa6e: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5aa75: 4c 89 ca mov %r9,%rdx 0.00 : 5aa78: 4c 89 e7 mov %r12,%rdi 0.00 : 5aa7b: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5aa82: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aa89: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5aa90: e8 bb 9c 02 00 callq 84750 0.00 : 5aa95: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aa9c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5aaa3: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5aaaa: e9 f1 fe ff ff jmpq 5a9a0 <_IO_vfscanf+0x6010> 0.00 : 5aaaf: 4c 89 d7 mov %r10,%rdi 0.00 : 5aab2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5aab9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aac0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5aac7: e8 34 a7 01 00 callq 75200 <__uflow> 0.00 : 5aacc: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5aacf: 41 89 c7 mov %eax,%r15d 0.00 : 5aad2: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5aad9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5aae0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aae7: 0f 85 cc f9 ff ff jne 5a4b9 <_IO_vfscanf+0x5b29> 0.00 : 5aaed: 48 8b 1d 44 73 31 00 mov 0x317344(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5aaf4: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5aafb: 4d 89 eb mov %r13,%r11 0.00 : 5aafe: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5ab01: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5ab07: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 5ab0c: e9 b9 f9 ff ff jmpq 5a4ca <_IO_vfscanf+0x5b3a> 0.00 : 5ab11: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5ab17: 8b 95 68 fd ff ff mov -0x298(%rbp),%edx 0.00 : 5ab1d: 85 c0 test %eax,%eax 0.00 : 5ab1f: 44 0f 4e b5 dc fd ff cmovle -0x224(%rbp),%r14d 0.00 : 5ab26: ff 0.00 : 5ab27: 83 bd 7c fd ff ff 0a cmpl $0xa,-0x284(%rbp) 0.00 : 5ab2e: 89 95 6c fd ff ff mov %edx,-0x294(%rbp) 0.00 : 5ab34: 44 89 b5 dc fd ff ff mov %r14d,-0x224(%rbp) 0.00 : 5ab3b: 0f 85 f5 fc ff ff jne 5a836 <_IO_vfscanf+0x5ea6> 0.00 : 5ab41: 8b b5 68 fd ff ff mov -0x298(%rbp),%esi 0.00 : 5ab47: 89 b5 6c fd ff ff mov %esi,-0x294(%rbp) 0.00 : 5ab4d: e9 b3 fa ff ff jmpq 5a605 <_IO_vfscanf+0x5c75> 0.00 : 5ab52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ab58: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5ab5c: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5ab60: 0f 83 9a 00 00 00 jae 5ac00 <_IO_vfscanf+0x6270> 0.00 : 5ab66: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5ab6a: 48 83 c0 01 add $0x1,%rax 0.00 : 5ab6e: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5ab72: 49 83 c3 01 add $0x1,%r11 0.00 : 5ab76: e9 21 fd ff ff jmpq 5a89c <_IO_vfscanf+0x5f0c> 0.00 : 5ab7b: 4b 8d 0c 09 lea (%r9,%r9,1),%rcx 0.00 : 5ab7f: b8 00 01 00 00 mov $0x100,%eax 0.00 : 5ab84: 48 81 f9 00 01 00 00 cmp $0x100,%rcx 0.00 : 5ab8b: 48 0f 43 c1 cmovae %rcx,%rax 0.00 : 5ab8f: 48 89 85 50 fd ff ff mov %rax,-0x2b0(%rbp) 0.00 : 5ab96: 48 83 c0 1e add $0x1e,%rax 0.00 : 5ab9a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5ab9e: 48 29 c4 sub %rax,%rsp 0.00 : 5aba1: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5aba6: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5abaa: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 5abb1: 00 0.00 : 5abb2: 0f 84 a2 00 00 00 je 5ac5a <_IO_vfscanf+0x62ca> 0.00 : 5abb8: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5abbf: 4c 89 ca mov %r9,%rdx 0.00 : 5abc2: 48 89 df mov %rbx,%rdi 0.00 : 5abc5: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5abcc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5abd3: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5abda: e8 71 9b 02 00 callq 84750 0.00 : 5abdf: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 5abe6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5abed: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5abf4: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5abfb: e9 5e fc ff ff jmpq 5a85e <_IO_vfscanf+0x5ece> 0.00 : 5ac00: 4c 89 d7 mov %r10,%rdi 0.00 : 5ac03: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ac0a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ac11: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ac18: e8 e3 a5 01 00 callq 75200 <__uflow> 0.00 : 5ac1d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5ac20: 41 89 c7 mov %eax,%r15d 0.00 : 5ac23: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ac2a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ac31: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ac38: 0f 85 34 ff ff ff jne 5ab72 <_IO_vfscanf+0x61e2> 0.00 : 5ac3e: 48 8b 1d f3 71 31 00 mov 0x3171f3(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5ac45: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5ac4c: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5ac4f: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5ac55: e9 42 fc ff ff jmpq 5a89c <_IO_vfscanf+0x5f0c> 0.00 : 5ac5a: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 5ac61: e9 f8 fb ff ff jmpq 5a85e <_IO_vfscanf+0x5ece> 0.00 : 5ac66: 4c 8b ad 30 fd ff ff mov -0x2d0(%rbp),%r13 0.00 : 5ac6d: 84 d2 test %dl,%dl 0.00 : 5ac6f: 75 4b jne 5acbc <_IO_vfscanf+0x632c> 0.00 : 5ac71: 45 89 fe mov %r15d,%r14d 0.00 : 5ac74: 44 8b a5 dc fd ff ff mov -0x224(%rbp),%r12d 0.00 : 5ac7b: 8b 95 90 fd ff ff mov -0x270(%rbp),%edx 0.00 : 5ac81: 45 85 e4 test %r12d,%r12d 0.00 : 5ac84: 0f 4e 95 dc fd ff ff cmovle -0x224(%rbp),%edx 0.00 : 5ac8b: 49 83 e9 01 sub $0x1,%r9 0.00 : 5ac8f: 89 95 dc fd ff ff mov %edx,-0x224(%rbp) 0.00 : 5ac95: e9 b7 fb ff ff jmpq 5a851 <_IO_vfscanf+0x5ec1> 0.00 : 5ac9a: 48 8b 95 40 fc ff ff mov -0x3c0(%rbp),%rdx 0.00 : 5aca1: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5aca8: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 5acaf: 48 8b 04 3a mov (%rdx,%rdi,1),%rax 0.00 : 5acb3: 48 89 04 39 mov %rax,(%rcx,%rdi,1) 0.00 : 5acb7: e9 fe f6 ff ff jmpq 5a3ba <_IO_vfscanf+0x5a2a> 0.00 : 5acbc: 4c 89 cb mov %r9,%rbx 0.00 : 5acbf: 4c 39 ad 30 fd ff ff cmp %r13,-0x2d0(%rbp) 0.00 : 5acc6: 0f 83 f1 a5 ff ff jae 552bd <_IO_vfscanf+0x92d> 0.00 : 5accc: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5acd0: 74 3a je 5ad0c <_IO_vfscanf+0x637c> 0.00 : 5acd2: 49 83 eb 01 sub $0x1,%r11 0.00 : 5acd6: 4c 89 d7 mov %r10,%rdi 0.00 : 5acd9: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 5acdd: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ace4: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aceb: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5acf2: e8 59 94 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5acf7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5acfe: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ad05: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ad0c: 4d 8d 65 ff lea -0x1(%r13),%r12 0.00 : 5ad10: 4c 39 a5 30 fd ff ff cmp %r12,-0x2d0(%rbp) 0.00 : 5ad17: 73 5d jae 5ad76 <_IO_vfscanf+0x63e6> 0.00 : 5ad19: 4c 89 e3 mov %r12,%rbx 0.00 : 5ad1c: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5ad1f: 4c 89 d7 mov %r10,%rdi 0.00 : 5ad22: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ad29: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ad30: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ad37: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5ad3b: e8 10 94 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5ad40: 48 39 9d 30 fd ff ff cmp %rbx,-0x2d0(%rbp) 0.00 : 5ad47: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ad4e: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ad55: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ad5c: 72 be jb 5ad1c <_IO_vfscanf+0x638c> 0.00 : 5ad5e: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 5ad65: 49 8d 55 fe lea -0x2(%r13),%rdx 0.00 : 5ad69: 48 83 e8 01 sub $0x1,%rax 0.00 : 5ad6d: 48 29 d0 sub %rdx,%rax 0.00 : 5ad70: 49 01 c3 add %rax,%r11 0.00 : 5ad73: 49 01 c4 add %rax,%r12 0.00 : 5ad76: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 5ad7d: 45 0f b6 3c 24 movzbl (%r12),%r15d 0.00 : 5ad82: 4c 29 e8 sub %r13,%rax 0.00 : 5ad85: 4a 8d 1c 08 lea (%rax,%r9,1),%rbx 0.00 : 5ad89: e9 2f a5 ff ff jmpq 552bd <_IO_vfscanf+0x92d> 0.00 : 5ad8e: 49 89 db mov %rbx,%r11 0.00 : 5ad91: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5ad98: e9 d0 fe ff ff jmpq 5ac6d <_IO_vfscanf+0x62dd> 0.00 : 5ad9d: 4c 89 d7 mov %r10,%rdi 0.00 : 5ada0: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ada7: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5adae: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5adb5: e8 46 a4 01 00 callq 75200 <__uflow> 0.00 : 5adba: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5adbd: 41 89 c7 mov %eax,%r15d 0.00 : 5adc0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5adc7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5adce: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5add5: 0f 85 09 fc ff ff jne 5a9e4 <_IO_vfscanf+0x6054> 0.00 : 5addb: 48 8b 1d 56 70 31 00 mov 0x317056(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5ade2: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5ade9: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5adec: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5adf2: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5adf7: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5adfe: e9 6a fe ff ff jmpq 5ac6d <_IO_vfscanf+0x62dd> 0.00 : 5ae03: 8b 9d ec fc ff ff mov -0x314(%rbp),%ebx 0.00 : 5ae09: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 5ae0d: 4c 8d 6d 80 lea -0x80(%rbp),%r13 0.00 : 5ae11: 45 31 e4 xor %r12d,%r12d 0.00 : 5ae14: 48 89 b5 d0 fc ff ff mov %rsi,-0x330(%rbp) 0.00 : 5ae1b: 89 9d 6c fd ff ff mov %ebx,-0x294(%rbp) 0.00 : 5ae21: 48 8b bd 10 fd ff ff mov -0x2f0(%rbp),%rdi 0.00 : 5ae28: 48 8b 85 48 fc ff ff mov -0x3b8(%rbp),%rax 0.00 : 5ae2f: 4e 8b b4 e7 e0 00 00 mov 0xe0(%rdi,%r12,8),%r14 0.00 : 5ae36: 00 0.00 : 5ae37: 41 8d 7c 24 30 lea 0x30(%r12),%edi 0.00 : 5ae3c: 4e 89 34 e0 mov %r14,(%rax,%r12,8) 0.00 : 5ae40: 48 8b b5 70 fd ff ff mov -0x290(%rbp),%rsi 0.00 : 5ae47: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ae4e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ae55: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ae5c: e8 df 3b 08 00 callq dea40 <__towctrans> 0.00 : 5ae61: 48 8b 95 d0 fc ff ff mov -0x330(%rbp),%rdx 0.00 : 5ae68: 89 c6 mov %eax,%esi 0.00 : 5ae6a: 4c 89 ef mov %r13,%rdi 0.00 : 5ae6d: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 5ae74: 48 8b 95 d0 fc ff ff mov -0x330(%rbp),%rdx 0.00 : 5ae7b: e8 60 21 03 00 callq 8cfe0 0.00 : 5ae80: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) 0.00 : 5ae87: 48 83 c0 01 add $0x1,%rax 0.00 : 5ae8b: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ae92: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ae99: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aea0: 0f 84 db 00 00 00 je 5af81 <_IO_vfscanf+0x65f1> 0.00 : 5aea6: 8b 8d ec fc ff ff mov -0x314(%rbp),%ecx 0.00 : 5aeac: 31 db xor %ebx,%ebx 0.00 : 5aeae: 31 d2 xor %edx,%edx 0.00 : 5aeb0: 4c 89 f7 mov %r14,%rdi 0.00 : 5aeb3: 85 c9 test %ecx,%ecx 0.00 : 5aeb5: 7e 46 jle 5aefd <_IO_vfscanf+0x656d> 0.00 : 5aeb7: 31 f6 xor %esi,%esi 0.00 : 5aeb9: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5aec0: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aec7: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5aece: 83 c3 01 add $0x1,%ebx 0.00 : 5aed1: e8 da ac 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5aed6: 39 9d ec fc ff ff cmp %ebx,-0x314(%rbp) 0.00 : 5aedc: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 5aee0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5aee7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5aeee: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aef5: 7f c0 jg 5aeb7 <_IO_vfscanf+0x6527> 0.00 : 5aef7: 48 89 fa mov %rdi,%rdx 0.00 : 5aefa: 4c 29 f2 sub %r14,%rdx 0.00 : 5aefd: 48 8b 9d 80 fd ff ff mov -0x280(%rbp),%rbx 0.00 : 5af04: 4c 89 f6 mov %r14,%rsi 0.00 : 5af07: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5af0e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5af15: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5af1c: 48 8d 44 1a 1f lea 0x1f(%rdx,%rbx,1),%rax 0.00 : 5af21: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5af25: 48 29 c4 sub %rax,%rsp 0.00 : 5af28: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5af2d: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5af31: 48 89 df mov %rbx,%rdi 0.00 : 5af34: e8 57 90 02 00 callq 83f90 <__mempcpy> 0.00 : 5af39: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 5af40: 4c 89 ee mov %r13,%rsi 0.00 : 5af43: 48 89 c7 mov %rax,%rdi 0.00 : 5af46: e8 45 90 02 00 callq 83f90 <__mempcpy> 0.00 : 5af4b: c6 00 00 movb $0x0,(%rax) 0.00 : 5af4e: 48 8b b5 40 fc ff ff mov -0x3c0(%rbp),%rsi 0.00 : 5af55: 4a 89 1c e6 mov %rbx,(%rsi,%r12,8) 0.00 : 5af59: 49 83 c4 01 add $0x1,%r12 0.00 : 5af5d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5af64: 49 83 fc 0a cmp $0xa,%r12 0.00 : 5af68: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5af6f: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5af76: 0f 85 a5 fe ff ff jne 5ae21 <_IO_vfscanf+0x6491> 0.00 : 5af7c: e9 ad f3 ff ff jmpq 5a32e <_IO_vfscanf+0x599e> 0.00 : 5af81: 48 c7 85 70 fd ff ff movq $0x0,-0x290(%rbp) 0.00 : 5af88: 00 00 00 00 0.00 : 5af8c: e9 9d f3 ff ff jmpq 5a32e <_IO_vfscanf+0x599e> 0.00 : 5af91: 4c 89 d7 mov %r10,%rdi 0.00 : 5af94: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5af9b: e8 60 a2 01 00 callq 75200 <__uflow> 0.00 : 5afa0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5afa3: 41 89 c7 mov %eax,%r15d 0.00 : 5afa6: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5afad: 0f 84 60 9c ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5afb3: e9 ea cc ff ff jmpq 57ca2 <_IO_vfscanf+0x3312> 0.00 : 5afb8: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5afbf: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5afc3: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5afca: e9 d6 c4 ff ff jmpq 574a5 <_IO_vfscanf+0x2b15> 0.00 : 5afcf: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5afd6: 4c 89 cb mov %r9,%rbx 0.00 : 5afd9: e9 e1 fc ff ff jmpq 5acbf <_IO_vfscanf+0x632f> 0.00 : 5afde: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5afe5: e9 8a fc ff ff jmpq 5ac74 <_IO_vfscanf+0x62e4> 0.00 : 5afea: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5aff1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5aff5: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5affc: e9 c4 cf ff ff jmpq 57fc5 <_IO_vfscanf+0x3635> 0.00 : 5b001: 4c 89 d7 mov %r10,%rdi 0.00 : 5b004: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b00b: e8 f0 a1 01 00 callq 75200 <__uflow> 0.00 : 5b010: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b013: 41 89 c7 mov %eax,%r15d 0.00 : 5b016: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b01d: 0f 84 f0 9b ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b023: e9 42 b8 ff ff jmpq 5686a <_IO_vfscanf+0x1eda> 0.00 : 5b028: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b02f: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b033: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b03a: e9 aa af ff ff jmpq 55fe9 <_IO_vfscanf+0x1659> 0.00 : 5b03f: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b046: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b04a: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b051: e9 8b db ff ff jmpq 58be1 <_IO_vfscanf+0x4251> 0.00 : 5b056: 4c 89 d7 mov %r10,%rdi 0.00 : 5b059: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b060: e8 9b a1 01 00 callq 75200 <__uflow> 0.00 : 5b065: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b068: 41 89 c7 mov %eax,%r15d 0.00 : 5b06b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b072: 0f 84 9b 9b ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b078: e9 c8 c6 ff ff jmpq 57745 <_IO_vfscanf+0x2db5> 0.00 : 5b07d: 4c 89 d7 mov %r10,%rdi 0.00 : 5b080: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b087: e8 74 a1 01 00 callq 75200 <__uflow> 0.00 : 5b08c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b08f: 41 89 c7 mov %eax,%r15d 0.00 : 5b092: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b099: 0f 84 74 9b ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b09f: e9 70 a4 ff ff jmpq 55514 <_IO_vfscanf+0xb84> 0.00 : 5b0a4: 4c 89 d7 mov %r10,%rdi 0.00 : 5b0a7: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b0ae: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b0b5: e8 46 a1 01 00 callq 75200 <__uflow> 0.00 : 5b0ba: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b0bd: 41 89 c7 mov %eax,%r15d 0.00 : 5b0c0: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b0c7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b0ce: 0f 85 36 c3 ff ff jne 5740a <_IO_vfscanf+0x2a7a> 0.00 : 5b0d4: 48 8b 1d 5d 6d 31 00 mov 0x316d5d(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b0db: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5b0e2: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 5b0e7: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5b0ea: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b0f0: e9 ce b9 ff ff jmpq 56ac3 <_IO_vfscanf+0x2133> 0.00 : 5b0f5: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b0fc: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b100: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b107: e9 a3 c4 ff ff jmpq 575af <_IO_vfscanf+0x2c1f> 0.00 : 5b10c: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 5b113: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 5b11a: 48 8b 38 mov (%rax),%rdi 0.00 : 5b11d: 49 83 c4 01 add $0x1,%r12 0.00 : 5b121: 4c 89 e6 mov %r12,%rsi 0.00 : 5b124: e8 17 37 fc ff callq 1e840 0.00 : 5b129: 48 85 c0 test %rax,%rax 0.00 : 5b12c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b133: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b13a: 0f 84 1b 9e ff ff je 54f5b <_IO_vfscanf+0x5cb> 0.00 : 5b140: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5b147: 48 89 02 mov %rax,(%rdx) 0.00 : 5b14a: 48 03 85 e8 fd ff ff add -0x218(%rbp),%rax 0.00 : 5b151: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 5b158: e9 57 b2 ff ff jmpq 563b4 <_IO_vfscanf+0x1a24> 0.00 : 5b15d: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b161: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b165: 73 48 jae 5b1af <_IO_vfscanf+0x681f> 0.00 : 5b167: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5b16b: 48 83 c0 01 add $0x1,%rax 0.00 : 5b16f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b173: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 5b17a: 01 0.00 : 5b17b: e9 de e2 ff ff jmpq 5945e <_IO_vfscanf+0x4ace> 0.00 : 5b180: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b187: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b18e: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5b193: 0f b6 03 movzbl (%rbx),%eax 0.00 : 5b196: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 5b19a: 49 89 f1 mov %rsi,%r9 0.00 : 5b19d: 88 06 mov %al,(%rsi) 0.00 : 5b19f: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b1a6: 00 01 00 00 0.00 : 5b1aa: e9 76 e2 ff ff jmpq 59425 <_IO_vfscanf+0x4a95> 0.00 : 5b1af: 4c 89 d7 mov %r10,%rdi 0.00 : 5b1b2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b1b9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b1c0: e8 3b a0 01 00 callq 75200 <__uflow> 0.00 : 5b1c5: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b1c8: 41 89 c7 mov %eax,%r15d 0.00 : 5b1cb: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5b1d2: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b1d9: 75 98 jne 5b173 <_IO_vfscanf+0x67e3> 0.00 : 5b1db: 48 8b 1d 56 6c 31 00 mov 0x316c56(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b1e2: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5b1e9: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5b1ec: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b1f2: e9 67 e2 ff ff jmpq 5945e <_IO_vfscanf+0x4ace> 0.00 : 5b1f7: 4c 89 d7 mov %r10,%rdi 0.00 : 5b1fa: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b201: e8 fa 9f 01 00 callq 75200 <__uflow> 0.00 : 5b206: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b209: 41 89 c7 mov %eax,%r15d 0.00 : 5b20c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b213: 0f 85 1a cf ff ff jne 58133 <_IO_vfscanf+0x37a3> 0.00 : 5b219: 48 8b 1d 18 6c 31 00 mov 0x316c18(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b220: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5b227: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5b22a: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b230: e9 06 cf ff ff jmpq 5813b <_IO_vfscanf+0x37ab> 0.00 : 5b235: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 5b23c: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 5b243: 49 83 c4 01 add $0x1,%r12 0.00 : 5b247: 48 8b 38 mov (%rax),%rdi 0.00 : 5b24a: 4a 8d 34 a5 00 00 00 lea 0x0(,%r12,4),%rsi 0.00 : 5b251: 00 0.00 : 5b252: e8 e9 35 fc ff callq 1e840 0.00 : 5b257: 48 85 c0 test %rax,%rax 0.00 : 5b25a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b261: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b268: 0f 84 ed 9c ff ff je 54f5b <_IO_vfscanf+0x5cb> 0.00 : 5b26e: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5b275: 48 89 02 mov %rax,(%rdx) 0.00 : 5b278: 48 01 d8 add %rbx,%rax 0.00 : 5b27b: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 5b282: e9 4c a4 ff ff jmpq 556d3 <_IO_vfscanf+0xd43> 0.00 : 5b287: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b28e: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b292: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b299: e9 5f da ff ff jmpq 58cfd <_IO_vfscanf+0x436d> 0.00 : 5b29e: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b2a5: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b2a9: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b2b0: e9 7c db ff ff jmpq 58e31 <_IO_vfscanf+0x44a1> 0.00 : 5b2b5: 4c 89 d7 mov %r10,%rdi 0.00 : 5b2b8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b2bf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b2c6: e8 35 9f 01 00 callq 75200 <__uflow> 0.00 : 5b2cb: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b2ce: 41 89 c7 mov %eax,%r15d 0.00 : 5b2d1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b2d8: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b2df: 0f 85 6a aa ff ff jne 55d4f <_IO_vfscanf+0x13bf> 0.00 : 5b2e5: 48 8b 1d 4c 6b 31 00 mov 0x316b4c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b2ec: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5b2f3: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 5b2f9: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5b2fc: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b302: e9 51 9f ff ff jmpq 55258 <_IO_vfscanf+0x8c8> 0.00 : 5b307: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 5b30e: 4d 8d 6c 24 01 lea 0x1(%r12),%r13 0.00 : 5b313: 4c 89 ee mov %r13,%rsi 0.00 : 5b316: 48 8b 39 mov (%rcx),%rdi 0.00 : 5b319: e8 22 35 fc ff callq 1e840 0.00 : 5b31e: 48 85 c0 test %rax,%rax 0.00 : 5b321: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b328: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b32f: 0f 84 e8 00 00 00 je 5b41d <_IO_vfscanf+0x6a8d> 0.00 : 5b335: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 5b33c: 48 89 06 mov %rax,(%rsi) 0.00 : 5b33f: 4c 01 e0 add %r12,%rax 0.00 : 5b342: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 5b349: e9 d7 ad ff ff jmpq 56125 <_IO_vfscanf+0x1795> 0.00 : 5b34e: 4c 89 d7 mov %r10,%rdi 0.00 : 5b351: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b358: e8 a3 9e 01 00 callq 75200 <__uflow> 0.00 : 5b35d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b360: 41 89 c7 mov %eax,%r15d 0.00 : 5b363: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b36a: 0f 84 a3 98 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b370: e9 29 ad ff ff jmpq 5609e <_IO_vfscanf+0x170e> 0.00 : 5b375: 48 89 9d c8 fd ff ff mov %rbx,-0x238(%rbp) 0.00 : 5b37c: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5b383: 8b bd c8 fd ff ff mov -0x238(%rbp),%edi 0.00 : 5b389: 49 83 c3 01 add $0x1,%r11 0.00 : 5b38d: 8d 1c 38 lea (%rax,%rdi,1),%ebx 0.00 : 5b390: eb 09 jmp 5b39b <_IO_vfscanf+0x6a0b> 0.00 : 5b392: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b398: 49 89 d3 mov %rdx,%r11 0.00 : 5b39b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b39f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b3a3: 73 47 jae 5b3ec <_IO_vfscanf+0x6a5c> 0.00 : 5b3a5: 0f b6 10 movzbl (%rax),%edx 0.00 : 5b3a8: 48 83 c0 01 add $0x1,%rax 0.00 : 5b3ac: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b3b0: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 5b3b7: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5b3bb: 41 39 d7 cmp %edx,%r15d 0.00 : 5b3be: 75 24 jne 5b3e4 <_IO_vfscanf+0x6a54> 0.00 : 5b3c0: 48 83 85 c8 fd ff ff addq $0x1,-0x238(%rbp) 0.00 : 5b3c7: 01 0.00 : 5b3c8: 89 d8 mov %ebx,%eax 0.00 : 5b3ca: 49 8d 53 01 lea 0x1(%r11),%rdx 0.00 : 5b3ce: 2b 85 c8 fd ff ff sub -0x238(%rbp),%eax 0.00 : 5b3d4: 85 c0 test %eax,%eax 0.00 : 5b3d6: 7f c0 jg 5b398 <_IO_vfscanf+0x6a08> 0.00 : 5b3d8: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 5b3df: e9 b7 97 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 5b3e4: 0f b6 f2 movzbl %dl,%esi 0.00 : 5b3e7: e9 96 a9 ff ff jmpq 55d82 <_IO_vfscanf+0x13f2> 0.00 : 5b3ec: 4c 89 d7 mov %r10,%rdi 0.00 : 5b3ef: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b3f6: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b3fd: e8 fe 9d 01 00 callq 75200 <__uflow> 0.00 : 5b402: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b405: 89 c2 mov %eax,%edx 0.00 : 5b407: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b40e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b415: 0f 84 f8 97 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b41b: eb 93 jmp 5b3b0 <_IO_vfscanf+0x6a20> 0.00 : 5b41d: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 5b424: 20 00 00 0.00 : 5b427: 0f 85 2e 9b ff ff jne 54f5b <_IO_vfscanf+0x5cb> 0.00 : 5b42d: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 5b434: 48 8b 03 mov (%rbx),%rax 0.00 : 5b437: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 5b43c: 42 c6 44 20 ff 00 movb $0x0,-0x1(%rax,%r12,1) 0.00 : 5b442: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 5b449: 00 00 00 00 0.00 : 5b44d: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 5b454: e9 87 9a ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 5b459: 4c 89 d7 mov %r10,%rdi 0.00 : 5b45c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b463: e8 98 9d 01 00 callq 75200 <__uflow> 0.00 : 5b468: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b46b: 41 89 c7 mov %eax,%r15d 0.00 : 5b46e: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b475: 0f 85 0a b8 ff ff jne 56c85 <_IO_vfscanf+0x22f5> 0.00 : 5b47b: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 5b482: 48 8b 05 af 69 31 00 mov 0x3169af(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b489: 8b 04 02 mov (%rdx,%rax,1),%eax 0.00 : 5b48c: 48 c7 c2 fe ff ff ff mov $0xfffffffffffffffe,%rdx 0.00 : 5b493: 89 85 1c fd ff ff mov %eax,-0x2e4(%rbp) 0.00 : 5b499: e9 b1 b7 ff ff jmpq 56c4f <_IO_vfscanf+0x22bf> 0.00 : 5b49e: 48 8b 9d c0 fc ff ff mov -0x340(%rbp),%rbx 0.00 : 5b4a5: 48 8b 05 8c 69 31 00 mov 0x31698c(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b4ac: c7 04 03 54 00 00 00 movl $0x54,(%rbx,%rax,1) 0.00 : 5b4b3: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 5b4b8: e9 23 9a ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 5b4bd: 31 c0 xor %eax,%eax 0.00 : 5b4bf: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b4c6: 4d 89 cc mov %r9,%r12 0.00 : 5b4c9: 0f 9f c0 setg %al 0.00 : 5b4cc: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b4d2: 48 83 bd 50 fd ff ff cmpq $0x3,-0x2b0(%rbp) 0.00 : 5b4d9: 03 0.00 : 5b4da: 75 31 jne 5b50d <_IO_vfscanf+0x6b7d> 0.00 : 5b4dc: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b4e3: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b4e8: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b4ec: 49 89 c4 mov %rax,%r12 0.00 : 5b4ef: 41 0f b7 01 movzwl (%r9),%eax 0.00 : 5b4f3: 66 41 89 04 24 mov %ax,(%r12) 0.00 : 5b4f8: 41 0f b6 41 02 movzbl 0x2(%r9),%eax 0.00 : 5b4fd: 41 88 44 24 02 mov %al,0x2(%r12) 0.00 : 5b502: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b509: 00 01 00 00 0.00 : 5b50d: 45 88 7c 24 03 mov %r15b,0x3(%r12) 0.00 : 5b512: 8b bd dc fd ff ff mov -0x224(%rbp),%edi 0.00 : 5b518: 85 ff test %edi,%edi 0.00 : 5b51a: 0f 84 b8 99 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b520: 41 83 c7 01 add $0x1,%r15d 0.00 : 5b524: 75 71 jne 5b597 <_IO_vfscanf+0x6c07> 0.00 : 5b526: 48 8b 05 0b 69 31 00 mov 0x31690b(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b52d: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 5b533: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 5b53a: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 5b53d: e9 96 99 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b542: 4c 89 d7 mov %r10,%rdi 0.00 : 5b545: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b54c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b553: e8 a8 9c 01 00 callq 75200 <__uflow> 0.00 : 5b558: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b55b: 41 89 c7 mov %eax,%r15d 0.00 : 5b55e: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5b565: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b56c: 0f 85 1a 03 00 00 jne 5b88c <_IO_vfscanf+0x6efc> 0.00 : 5b572: 48 8b 1d bf 68 31 00 mov 0x3168bf(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b579: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5b580: 4d 89 e3 mov %r12,%r11 0.00 : 5b583: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 5b589: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5b58c: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b592: e9 4a cc ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 5b597: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b59b: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b59f: 0f 83 b3 02 00 00 jae 5b858 <_IO_vfscanf+0x6ec8> 0.00 : 5b5a5: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5b5a8: 48 83 c0 01 add $0x1,%rax 0.00 : 5b5ac: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b5b0: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 5b5b7: 0f b6 d1 movzbl %cl,%edx 0.00 : 5b5ba: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 5b5be: 83 3c 90 6e cmpl $0x6e,(%rax,%rdx,4) 0.00 : 5b5c2: 0f 85 10 99 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b5c8: 31 c0 xor %eax,%eax 0.00 : 5b5ca: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b5d1: 4c 89 e3 mov %r12,%rbx 0.00 : 5b5d4: 0f 9f c0 setg %al 0.00 : 5b5d7: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b5dd: 48 83 bd 50 fd ff ff cmpq $0x4,-0x2b0(%rbp) 0.00 : 5b5e4: 04 0.00 : 5b5e5: 75 24 jne 5b60b <_IO_vfscanf+0x6c7b> 0.00 : 5b5e7: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b5ee: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b5f3: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b5f7: 48 89 c3 mov %rax,%rbx 0.00 : 5b5fa: 41 8b 04 24 mov (%r12),%eax 0.00 : 5b5fe: 89 03 mov %eax,(%rbx) 0.00 : 5b600: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b607: 00 01 00 00 0.00 : 5b60b: 88 4b 04 mov %cl,0x4(%rbx) 0.00 : 5b60e: 8b b5 dc fd ff ff mov -0x224(%rbp),%esi 0.00 : 5b614: 85 f6 test %esi,%esi 0.00 : 5b616: 0f 84 bc 98 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b61c: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b620: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b624: 0f 83 fa 01 00 00 jae 5b824 <_IO_vfscanf+0x6e94> 0.00 : 5b62a: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5b62d: 48 83 c0 01 add $0x1,%rax 0.00 : 5b631: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b635: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 5b63c: 0f b6 d1 movzbl %cl,%edx 0.00 : 5b63f: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 5b643: 83 3c 90 69 cmpl $0x69,(%rax,%rdx,4) 0.00 : 5b647: 0f 85 8b 98 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b64d: 31 c0 xor %eax,%eax 0.00 : 5b64f: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b656: 49 89 dc mov %rbx,%r12 0.00 : 5b659: 0f 9f c0 setg %al 0.00 : 5b65c: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b662: 48 83 bd 50 fd ff ff cmpq $0x5,-0x2b0(%rbp) 0.00 : 5b669: 05 0.00 : 5b66a: 75 2d jne 5b699 <_IO_vfscanf+0x6d09> 0.00 : 5b66c: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b673: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b678: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b67c: 49 89 c4 mov %rax,%r12 0.00 : 5b67f: 8b 03 mov (%rbx),%eax 0.00 : 5b681: 41 89 04 24 mov %eax,(%r12) 0.00 : 5b685: 0f b6 43 04 movzbl 0x4(%rbx),%eax 0.00 : 5b689: 41 88 44 24 04 mov %al,0x4(%r12) 0.00 : 5b68e: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b695: 00 01 00 00 0.00 : 5b699: 41 88 4c 24 05 mov %cl,0x5(%r12) 0.00 : 5b69e: 8b 8d dc fd ff ff mov -0x224(%rbp),%ecx 0.00 : 5b6a4: 85 c9 test %ecx,%ecx 0.00 : 5b6a6: 0f 84 2c 98 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b6ac: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b6b0: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b6b4: 0f 83 36 01 00 00 jae 5b7f0 <_IO_vfscanf+0x6e60> 0.00 : 5b6ba: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5b6bd: 48 83 c0 01 add $0x1,%rax 0.00 : 5b6c1: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b6c5: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 5b6cc: 0f b6 d1 movzbl %cl,%edx 0.00 : 5b6cf: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 5b6d3: 83 3c 90 74 cmpl $0x74,(%rax,%rdx,4) 0.00 : 5b6d7: 0f 85 fb 97 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b6dd: 31 c0 xor %eax,%eax 0.00 : 5b6df: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b6e6: 4c 89 e3 mov %r12,%rbx 0.00 : 5b6e9: 0f 9f c0 setg %al 0.00 : 5b6ec: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b6f2: 48 83 bd 50 fd ff ff cmpq $0x6,-0x2b0(%rbp) 0.00 : 5b6f9: 06 0.00 : 5b6fa: 75 2e jne 5b72a <_IO_vfscanf+0x6d9a> 0.00 : 5b6fc: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b703: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b708: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b70c: 48 89 c3 mov %rax,%rbx 0.00 : 5b70f: 41 8b 04 24 mov (%r12),%eax 0.00 : 5b713: 89 03 mov %eax,(%rbx) 0.00 : 5b715: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 5b71b: 66 89 43 04 mov %ax,0x4(%rbx) 0.00 : 5b71f: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b726: 00 01 00 00 0.00 : 5b72a: 88 4b 06 mov %cl,0x6(%rbx) 0.00 : 5b72d: 8b 95 dc fd ff ff mov -0x224(%rbp),%edx 0.00 : 5b733: 85 d2 test %edx,%edx 0.00 : 5b735: 0f 84 9d 97 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b73b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b73f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b743: 73 76 jae 5b7bb <_IO_vfscanf+0x6e2b> 0.00 : 5b745: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5b749: 48 83 c0 01 add $0x1,%rax 0.00 : 5b74d: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b751: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 5b758: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5b75c: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 5b760: 83 3c 90 79 cmpl $0x79,(%rax,%rdx,4) 0.00 : 5b764: 0f 85 6e 97 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b76a: 48 83 bd 50 fd ff ff cmpq $0x7,-0x2b0(%rbp) 0.00 : 5b771: 07 0.00 : 5b772: 49 89 d9 mov %rbx,%r9 0.00 : 5b775: 75 31 jne 5b7a8 <_IO_vfscanf+0x6e18> 0.00 : 5b777: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b77e: 8b 03 mov (%rbx),%eax 0.00 : 5b780: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5b785: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 5b789: 89 06 mov %eax,(%rsi) 0.00 : 5b78b: 0f b7 43 04 movzwl 0x4(%rbx),%eax 0.00 : 5b78f: 49 89 f1 mov %rsi,%r9 0.00 : 5b792: 66 89 46 04 mov %ax,0x4(%rsi) 0.00 : 5b796: 0f b6 43 06 movzbl 0x6(%rbx),%eax 0.00 : 5b79a: 88 46 06 mov %al,0x6(%rsi) 0.00 : 5b79d: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b7a4: 00 01 00 00 0.00 : 5b7a8: 49 83 c3 04 add $0x4,%r11 0.00 : 5b7ac: 45 88 79 07 mov %r15b,0x7(%r9) 0.00 : 5b7b0: 41 be 08 00 00 00 mov $0x8,%r14d 0.00 : 5b7b6: e9 26 ca ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 5b7bb: 4c 89 d7 mov %r10,%rdi 0.00 : 5b7be: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b7c5: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b7cc: e8 2f 9a 01 00 callq 75200 <__uflow> 0.00 : 5b7d1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b7d4: 41 89 c7 mov %eax,%r15d 0.00 : 5b7d7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b7de: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b7e5: 0f 85 66 ff ff ff jne 5b751 <_IO_vfscanf+0x6dc1> 0.00 : 5b7eb: e9 e8 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b7f0: 4c 89 d7 mov %r10,%rdi 0.00 : 5b7f3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b7fa: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b801: e8 fa 99 01 00 callq 75200 <__uflow> 0.00 : 5b806: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b809: 89 c1 mov %eax,%ecx 0.00 : 5b80b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b812: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b819: 0f 85 a6 fe ff ff jne 5b6c5 <_IO_vfscanf+0x6d35> 0.00 : 5b81f: e9 b4 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b824: 4c 89 d7 mov %r10,%rdi 0.00 : 5b827: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b82e: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b835: e8 c6 99 01 00 callq 75200 <__uflow> 0.00 : 5b83a: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b83d: 89 c1 mov %eax,%ecx 0.00 : 5b83f: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b846: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b84d: 0f 85 e2 fd ff ff jne 5b635 <_IO_vfscanf+0x6ca5> 0.00 : 5b853: e9 80 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b858: 4c 89 d7 mov %r10,%rdi 0.00 : 5b85b: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b862: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b869: e8 92 99 01 00 callq 75200 <__uflow> 0.00 : 5b86e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b871: 89 c1 mov %eax,%ecx 0.00 : 5b873: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b87a: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b881: 0f 85 29 fd ff ff jne 5b5b0 <_IO_vfscanf+0x6c20> 0.00 : 5b887: e9 4c 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b88c: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5b893: 49 83 c3 03 add $0x3,%r11 0.00 : 5b897: e9 cc d1 ff ff jmpq 58a68 <_IO_vfscanf+0x40d8> 0.00 : 5b89c: 4c 89 d7 mov %r10,%rdi 0.00 : 5b89f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b8a6: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b8ad: e8 4e 99 01 00 callq 75200 <__uflow> 0.00 : 5b8b2: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b8b5: 41 89 c7 mov %eax,%r15d 0.00 : 5b8b8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b8bf: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b8c6: 0f 84 0c 96 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b8cc: e9 b0 b5 ff ff jmpq 56e81 <_IO_vfscanf+0x24f1> 0.00 : 5b8d1: 4a 8d 34 e5 00 00 00 lea 0x0(,%r12,8),%rsi 0.00 : 5b8d8: 00 0.00 : 5b8d9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b8e0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b8e7: e8 54 2f fc ff callq 1e840 0.00 : 5b8ec: 48 85 c0 test %rax,%rax 0.00 : 5b8ef: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b8f6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b8fd: 0f 84 c3 04 00 00 je 5bdc6 <_IO_vfscanf+0x7436> 0.00 : 5b903: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 5b90a: 4b 8d 1c 24 lea (%r12,%r12,1),%rbx 0.00 : 5b90e: 48 89 07 mov %rax,(%rdi) 0.00 : 5b911: 4c 01 e8 add %r13,%rax 0.00 : 5b914: 45 31 ed xor %r13d,%r13d 0.00 : 5b917: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 5b91e: e9 9d be ff ff jmpq 577c0 <_IO_vfscanf+0x2e30> 0.00 : 5b923: f7 85 04 fd ff ff 00 testl $0x800,-0x2fc(%rbp) 0.00 : 5b92a: 08 00 00 0.00 : 5b92d: 0f 85 8f c8 ff ff jne 581c2 <_IO_vfscanf+0x3832> 0.00 : 5b933: 4d 85 f6 test %r14,%r14 0.00 : 5b936: 41 0f 94 c4 sete %r12b 0.00 : 5b93a: 74 0d je 5b949 <_IO_vfscanf+0x6fb9> 0.00 : 5b93c: 80 bd 20 fd ff ff 00 cmpb $0x0,-0x2e0(%rbp) 0.00 : 5b943: 0f 84 98 c8 ff ff je 581e1 <_IO_vfscanf+0x3851> 0.00 : 5b949: 48 8d 3d 14 f4 0d 00 lea 0xdf414(%rip),%rdi # 13ad64 <__PRETTY_FUNCTION__.14584+0xe> 0.00 : 5b950: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b957: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b95e: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b965: e8 46 30 08 00 callq de9b0 0.00 : 5b96a: 48 85 c0 test %rax,%rax 0.00 : 5b96d: 48 89 85 60 fd ff ff mov %rax,-0x2a0(%rbp) 0.00 : 5b974: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5b97b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b982: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b989: 0f 84 33 c8 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5b98f: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5b993: 0f 85 e7 04 00 00 jne 5be80 <_IO_vfscanf+0x74f0> 0.00 : 5b999: 48 8b 1d 98 64 31 00 mov 0x316498(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b9a0: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 5b9a6: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 5b9ad: 89 0c 1a mov %ecx,(%rdx,%rbx,1) 0.00 : 5b9b0: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi 0.00 : 5b9b7: bf 2e 00 00 00 mov $0x2e,%edi 0.00 : 5b9bc: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b9c3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b9ca: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b9d1: e8 6a 30 08 00 callq dea40 <__towctrans> 0.00 : 5b9d6: 48 8d 7d a0 lea -0x60(%rbp),%rdi 0.00 : 5b9da: 89 c6 mov %eax,%esi 0.00 : 5b9dc: 89 85 1c ff ff ff mov %eax,-0xe4(%rbp) 0.00 : 5b9e2: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5b9e9: 00 0.00 : 5b9ea: 48 89 bd d8 fc ff ff mov %rdi,-0x328(%rbp) 0.00 : 5b9f1: 48 89 fa mov %rdi,%rdx 0.00 : 5b9f4: 48 8b bd 38 fc ff ff mov -0x3c8(%rbp),%rdi 0.00 : 5b9fb: e8 e0 15 03 00 callq 8cfe0 0.00 : 5ba00: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 5ba04: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ba0b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ba12: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ba19: 0f 84 dc 02 00 00 je 5bcfb <_IO_vfscanf+0x736b> 0.00 : 5ba1f: c6 84 05 db fe ff ff movb $0x0,-0x125(%rbp,%rax,1) 0.00 : 5ba26: 00 0.00 : 5ba27: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 5ba2e: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ba35: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ba3c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ba43: e8 68 51 02 00 callq 80bb0 <__GI_strlen> 0.00 : 5ba48: 31 d2 xor %edx,%edx 0.00 : 5ba4a: 4c 39 f0 cmp %r14,%rax 0.00 : 5ba4d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ba54: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ba5b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ba62: 75 44 jne 5baa8 <_IO_vfscanf+0x7118> 0.00 : 5ba64: 48 8b b5 38 fc ff ff mov -0x3c8(%rbp),%rsi 0.00 : 5ba6b: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 5ba72: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ba79: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ba80: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ba87: e8 c4 36 02 00 callq 7f150 <__GI_strcmp> 0.00 : 5ba8c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ba93: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ba9a: 31 d2 xor %edx,%edx 0.00 : 5ba9c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5baa3: 85 c0 test %eax,%eax 0.00 : 5baa5: 0f 94 c2 sete %dl 0.00 : 5baa8: 44 89 e3 mov %r12d,%ebx 0.00 : 5baab: 09 d3 or %edx,%ebx 0.00 : 5baad: 84 db test %bl,%bl 0.00 : 5baaf: 0f 84 0d c7 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5bab5: 8b 85 04 fd ff ff mov -0x2fc(%rbp),%eax 0.00 : 5babb: 4c 8b ad 40 fc ff ff mov -0x3c0(%rbp),%r13 0.00 : 5bac2: 31 db xor %ebx,%ebx 0.00 : 5bac4: c1 e8 07 shr $0x7,%eax 0.00 : 5bac7: 83 e0 01 and $0x1,%eax 0.00 : 5baca: 88 85 0f fe ff ff mov %al,-0x1f1(%rbp) 0.00 : 5bad0: 88 85 97 fd ff ff mov %al,-0x269(%rbp) 0.00 : 5bad6: 83 fb 0a cmp $0xa,%ebx 0.00 : 5bad9: 41 89 dc mov %ebx,%r12d 0.00 : 5badc: 0f 85 d8 09 00 00 jne 5c4ba <_IO_vfscanf+0x7b2a> 0.00 : 5bae2: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi 0.00 : 5bae9: bf 2c 00 00 00 mov $0x2c,%edi 0.00 : 5baee: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5baf5: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bafc: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bb03: e8 38 2f 08 00 callq dea40 <__towctrans> 0.00 : 5bb08: 85 c0 test %eax,%eax 0.00 : 5bb0a: 89 85 18 ff ff ff mov %eax,-0xe8(%rbp) 0.00 : 5bb10: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bb17: 0f 95 c0 setne %al 0.00 : 5bb1a: 20 85 97 fd ff ff and %al,-0x269(%rbp) 0.00 : 5bb20: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bb27: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bb2e: 48 8b 8d d8 fc ff ff mov -0x328(%rbp),%rcx 0.00 : 5bb35: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 5bb3c: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5bb43: 48 89 ca mov %rcx,%rdx 0.00 : 5bb46: 8b 34 9f mov (%rdi,%rbx,4),%esi 0.00 : 5bb49: 4c 89 ef mov %r13,%rdi 0.00 : 5bb4c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bb53: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bb5a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bb61: e8 7a 14 03 00 callq 8cfe0 0.00 : 5bb66: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 5bb6a: 48 89 c1 mov %rax,%rcx 0.00 : 5bb6d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bb74: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bb7b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bb82: 0f 84 04 06 00 00 je 5c18c <_IO_vfscanf+0x77fc> 0.00 : 5bb88: 49 63 c4 movslq %r12d,%rax 0.00 : 5bb8b: 48 89 c2 mov %rax,%rdx 0.00 : 5bb8e: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 5bb92: 48 01 c2 add %rax,%rdx 0.00 : 5bb95: 48 8d 45 d0 lea -0x30(%rbp),%rax 0.00 : 5bb99: 48 01 d0 add %rdx,%rax 0.00 : 5bb9c: c6 84 01 50 fe ff ff movb $0x0,-0x1b0(%rcx,%rax,1) 0.00 : 5bba3: 00 0.00 : 5bba4: 48 83 c3 01 add $0x1,%rbx 0.00 : 5bba8: 49 83 c5 11 add $0x11,%r13 0.00 : 5bbac: 48 83 fb 0b cmp $0xb,%rbx 0.00 : 5bbb0: 0f 85 20 ff ff ff jne 5bad6 <_IO_vfscanf+0x7146> 0.00 : 5bbb6: 80 bd 21 fd ff ff 00 cmpb $0x0,-0x2df(%rbp) 0.00 : 5bbbd: 0f 84 1b 08 00 00 je 5c3de <_IO_vfscanf+0x7a4e> 0.00 : 5bbc3: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 5bbca: 43 38 44 31 ff cmp %al,-0x1(%r9,%r14,1) 0.00 : 5bbcf: 0f 84 1e 05 00 00 je 5c0f3 <_IO_vfscanf+0x7763> 0.00 : 5bbd5: 48 8b 95 40 fc ff ff mov -0x3c0(%rbp),%rdx 0.00 : 5bbdc: c7 85 98 fd ff ff 00 movl $0x0,-0x268(%rbp) 0.00 : 5bbe3: 00 00 00 0.00 : 5bbe6: 48 89 95 a0 fd ff ff mov %rdx,-0x260(%rbp) 0.00 : 5bbed: 48 8b 8d a0 fd ff ff mov -0x260(%rbp),%rcx 0.00 : 5bbf4: 8b 9d dc fd ff ff mov -0x224(%rbp),%ebx 0.00 : 5bbfa: 41 bc ff ff ff 7f mov $0x7fffffff,%r12d 0.00 : 5bc00: 0f b6 11 movzbl (%rcx),%edx 0.00 : 5bc03: 85 db test %ebx,%ebx 0.00 : 5bc05: 44 0f 4f a5 dc fd ff cmovg -0x224(%rbp),%r12d 0.00 : 5bc0c: ff 0.00 : 5bc0d: 49 89 cd mov %rcx,%r13 0.00 : 5bc10: 0f b6 c2 movzbl %dl,%eax 0.00 : 5bc13: 41 39 c7 cmp %eax,%r15d 0.00 : 5bc16: 0f 85 fd 03 00 00 jne 5c019 <_IO_vfscanf+0x7689> 0.00 : 5bc1c: 4c 8b ad a0 fd ff ff mov -0x260(%rbp),%r13 0.00 : 5bc23: 48 8b 9d a0 fd ff ff mov -0x260(%rbp),%rbx 0.00 : 5bc2a: 49 83 c5 01 add $0x1,%r13 0.00 : 5bc2e: 80 7b 01 00 cmpb $0x0,0x1(%rbx) 0.00 : 5bc32: 0f 84 e9 03 00 00 je 5c021 <_IO_vfscanf+0x7691> 0.00 : 5bc38: 49 83 c3 01 add $0x1,%r11 0.00 : 5bc3c: eb 42 jmp 5bc80 <_IO_vfscanf+0x72f0> 0.00 : 5bc3e: 66 90 xchg %ax,%ax 0.00 : 5bc40: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5bc43: 48 83 c0 01 add $0x1,%rax 0.00 : 5bc47: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5bc4b: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5bc50: 41 83 ec 01 sub $0x1,%r12d 0.00 : 5bc54: 44 0f b6 fa movzbl %dl,%r15d 0.00 : 5bc58: 41 39 cf cmp %ecx,%r15d 0.00 : 5bc5b: 0f 85 b5 03 00 00 jne 5c016 <_IO_vfscanf+0x7686> 0.00 : 5bc61: 49 83 c5 01 add $0x1,%r13 0.00 : 5bc65: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 0.00 : 5bc6a: 0f 84 b1 03 00 00 je 5c021 <_IO_vfscanf+0x7691> 0.00 : 5bc70: 45 85 e4 test %r12d,%r12d 0.00 : 5bc73: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 5bc77: 0f 84 78 02 00 00 je 5bef5 <_IO_vfscanf+0x7565> 0.00 : 5bc7d: 49 89 c3 mov %rax,%r11 0.00 : 5bc80: 49 8d 73 ff lea -0x1(%r11),%rsi 0.00 : 5bc84: 48 89 b5 10 fe ff ff mov %rsi,-0x1f0(%rbp) 0.00 : 5bc8b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5bc8f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5bc93: 72 ab jb 5bc40 <_IO_vfscanf+0x72b0> 0.00 : 5bc95: 4c 89 d7 mov %r10,%rdi 0.00 : 5bc98: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bc9f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bca6: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bcad: e8 4e 95 01 00 callq 75200 <__uflow> 0.00 : 5bcb2: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5bcb5: 41 89 c7 mov %eax,%r15d 0.00 : 5bcb8: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bcbf: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bcc6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bccd: 0f 85 4f 05 00 00 jne 5c222 <_IO_vfscanf+0x7892> 0.00 : 5bcd3: 48 8b 1d 5e 61 31 00 mov 0x31615e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5bcda: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5bce1: 4c 8b 9d 10 fe ff ff mov -0x1f0(%rbp),%r11 0.00 : 5bce8: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5bceb: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5bcf1: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5bcf6: e9 1e 03 00 00 jmpq 5c019 <_IO_vfscanf+0x7689> 0.00 : 5bcfb: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 5bd02: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bd09: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bd10: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bd17: e8 94 4e 02 00 callq 80bb0 <__GI_strlen> 0.00 : 5bd1c: 48 83 f8 10 cmp $0x10,%rax 0.00 : 5bd20: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bd27: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bd2e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bd35: 0f 87 87 c4 ff ff ja 581c2 <_IO_vfscanf+0x3832> 0.00 : 5bd3b: 48 8b b5 28 fd ff ff mov -0x2d8(%rbp),%rsi 0.00 : 5bd42: 48 8b bd 38 fc ff ff mov -0x3c8(%rbp),%rdi 0.00 : 5bd49: 49 39 c6 cmp %rax,%r14 0.00 : 5bd4c: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 5bd50: 0f 94 c3 sete %bl 0.00 : 5bd53: 44 09 e3 or %r12d,%ebx 0.00 : 5bd56: e8 f5 89 02 00 callq 84750 0.00 : 5bd5b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bd62: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bd69: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bd70: e9 38 fd ff ff jmpq 5baad <_IO_vfscanf+0x711d> 0.00 : 5bd75: 4c 89 d7 mov %r10,%rdi 0.00 : 5bd78: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bd7f: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bd86: e8 75 94 01 00 callq 75200 <__uflow> 0.00 : 5bd8b: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5bd8e: 41 89 c7 mov %eax,%r15d 0.00 : 5bd91: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bd98: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bd9f: 0f 85 90 b6 ff ff jne 57435 <_IO_vfscanf+0x2aa5> 0.00 : 5bda5: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5bdac: 48 8b 1d 85 60 31 00 mov 0x316085(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5bdb3: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5bdb6: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 5bdbb: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5bdc1: e9 39 ad ff ff jmpq 56aff <_IO_vfscanf+0x216f> 0.00 : 5bdc6: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5bdcd: 49 8d 5c 24 01 lea 0x1(%r12),%rbx 0.00 : 5bdd2: 48 8d 34 9d 00 00 00 lea 0x0(,%rbx,4),%rsi 0.00 : 5bdd9: 00 0.00 : 5bdda: 48 8b 3a mov (%rdx),%rdi 0.00 : 5bddd: e8 5e 2a fc ff callq 1e840 0.00 : 5bde2: 48 85 c0 test %rax,%rax 0.00 : 5bde5: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bdec: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bdf3: 0f 84 14 e0 ff ff je 59e0d <_IO_vfscanf+0x547d> 0.00 : 5bdf9: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 5be00: 48 89 06 mov %rax,(%rsi) 0.00 : 5be03: 4c 01 e8 add %r13,%rax 0.00 : 5be06: 45 31 ed xor %r13d,%r13d 0.00 : 5be09: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 5be10: e9 ab b9 ff ff jmpq 577c0 <_IO_vfscanf+0x2e30> 0.00 : 5be15: 4c 89 d7 mov %r10,%rdi 0.00 : 5be18: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5be1f: e8 dc 93 01 00 callq 75200 <__uflow> 0.00 : 5be24: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5be27: 89 c1 mov %eax,%ecx 0.00 : 5be29: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5be30: 0f 84 a2 90 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5be36: e9 c5 c7 ff ff jmpq 58600 <_IO_vfscanf+0x3c70> 0.00 : 5be3b: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5be42: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5be46: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5be4d: e9 cb c5 ff ff jmpq 5841d <_IO_vfscanf+0x3a8d> 0.00 : 5be52: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5be59: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5be5d: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5be64: e9 0f c5 ff ff jmpq 58378 <_IO_vfscanf+0x39e8> 0.00 : 5be69: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5be70: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5be74: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5be7b: e9 20 c4 ff ff jmpq 582a0 <_IO_vfscanf+0x3910> 0.00 : 5be80: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5be84: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5be88: 73 15 jae 5be9f <_IO_vfscanf+0x750f> 0.00 : 5be8a: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5be8e: 48 83 c0 01 add $0x1,%rax 0.00 : 5be92: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5be96: 49 83 c3 01 add $0x1,%r11 0.00 : 5be9a: e9 11 fb ff ff jmpq 5b9b0 <_IO_vfscanf+0x7020> 0.00 : 5be9f: 4c 89 d7 mov %r10,%rdi 0.00 : 5bea2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bea9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5beb0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5beb7: e8 44 93 01 00 callq 75200 <__uflow> 0.00 : 5bebc: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5bebf: 41 89 c7 mov %eax,%r15d 0.00 : 5bec2: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bec9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bed0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bed7: 75 bd jne 5be96 <_IO_vfscanf+0x7506> 0.00 : 5bed9: 48 8b 1d 58 5f 31 00 mov 0x315f58(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5bee0: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5bee7: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5beea: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5bef0: e9 bb fa ff ff jmpq 5b9b0 <_IO_vfscanf+0x7020> 0.00 : 5bef5: 4c 39 ad a0 fd ff ff cmp %r13,-0x260(%rbp) 0.00 : 5befc: 0f 83 af 00 00 00 jae 5bfb1 <_IO_vfscanf+0x7621> 0.00 : 5bf02: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5bf06: 74 3a je 5bf42 <_IO_vfscanf+0x75b2> 0.00 : 5bf08: 49 83 eb 01 sub $0x1,%r11 0.00 : 5bf0c: 4c 89 d7 mov %r10,%rdi 0.00 : 5bf0f: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 5bf13: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bf1a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bf21: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bf28: e8 23 82 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5bf2d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bf34: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bf3b: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bf42: 4d 8d 65 ff lea -0x1(%r13),%r12 0.00 : 5bf46: 4c 39 a5 a0 fd ff ff cmp %r12,-0x260(%rbp) 0.00 : 5bf4d: 73 5d jae 5bfac <_IO_vfscanf+0x761c> 0.00 : 5bf4f: 4c 89 e3 mov %r12,%rbx 0.00 : 5bf52: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5bf55: 4c 89 d7 mov %r10,%rdi 0.00 : 5bf58: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bf5f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bf66: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bf6d: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5bf71: e8 da 81 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5bf76: 48 39 9d a0 fd ff ff cmp %rbx,-0x260(%rbp) 0.00 : 5bf7d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bf84: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bf8b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bf92: 72 be jb 5bf52 <_IO_vfscanf+0x75c2> 0.00 : 5bf94: 48 8b 85 a0 fd ff ff mov -0x260(%rbp),%rax 0.00 : 5bf9b: 49 8d 55 fe lea -0x2(%r13),%rdx 0.00 : 5bf9f: 48 83 e8 01 sub $0x1,%rax 0.00 : 5bfa3: 48 29 d0 sub %rdx,%rax 0.00 : 5bfa6: 49 01 c3 add %rax,%r11 0.00 : 5bfa9: 49 01 c4 add %rax,%r12 0.00 : 5bfac: 45 0f b6 3c 24 movzbl (%r12),%r15d 0.00 : 5bfb1: 83 85 98 fd ff ff 01 addl $0x1,-0x268(%rbp) 0.00 : 5bfb8: 48 83 85 a0 fd ff ff addq $0x11,-0x260(%rbp) 0.00 : 5bfbf: 11 0.00 : 5bfc0: 83 bd 98 fd ff ff 0c cmpl $0xc,-0x268(%rbp) 0.00 : 5bfc7: 0f 85 20 fc ff ff jne 5bbed <_IO_vfscanf+0x725d> 0.00 : 5bfcd: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5bfd1: 0f 84 eb c1 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5bfd7: 49 83 eb 01 sub $0x1,%r11 0.00 : 5bfdb: 4c 89 d7 mov %r10,%rdi 0.00 : 5bfde: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 5bfe2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bfe9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bff0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bff7: e8 54 81 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5bffc: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c003: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c00a: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c011: e9 ac c1 ff ff jmpq 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c016: 41 89 cf mov %ecx,%r15d 0.00 : 5c019: 84 d2 test %dl,%dl 0.00 : 5c01b: 0f 85 d4 fe ff ff jne 5bef5 <_IO_vfscanf+0x7565> 0.00 : 5c021: 44 8b 85 dc fd ff ff mov -0x224(%rbp),%r8d 0.00 : 5c028: 45 85 c0 test %r8d,%r8d 0.00 : 5c02b: 44 0f 4e a5 dc fd ff cmovle -0x224(%rbp),%r12d 0.00 : 5c032: ff 0.00 : 5c033: 83 bd 98 fd ff ff 09 cmpl $0x9,-0x268(%rbp) 0.00 : 5c03a: 44 89 a5 dc fd ff ff mov %r12d,-0x224(%rbp) 0.00 : 5c041: 0f 8f e2 01 00 00 jg 5c229 <_IO_vfscanf+0x7899> 0.00 : 5c047: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c04e: 0f 84 cc 00 00 00 je 5c120 <_IO_vfscanf+0x7790> 0.00 : 5c054: 0f b6 85 98 fd ff ff movzbl -0x268(%rbp),%eax 0.00 : 5c05b: 83 c0 30 add $0x30,%eax 0.00 : 5c05e: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c062: 49 83 c6 01 add $0x1,%r14 0.00 : 5c066: 8b bd dc fd ff ff mov -0x224(%rbp),%edi 0.00 : 5c06c: 85 ff test %edi,%edi 0.00 : 5c06e: 0f 84 4e c1 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c074: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5c078: 0f 84 88 01 00 00 je 5c206 <_IO_vfscanf+0x7876> 0.00 : 5c07e: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5c082: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5c086: 73 27 jae 5c0af <_IO_vfscanf+0x771f> 0.00 : 5c088: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5c08c: 48 83 c0 01 add $0x1,%rax 0.00 : 5c090: 49 83 c3 01 add $0x1,%r11 0.00 : 5c094: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5c098: 31 c0 xor %eax,%eax 0.00 : 5c09a: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5c0a1: 0f 9f c0 setg %al 0.00 : 5c0a4: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5c0aa: e9 07 fb ff ff jmpq 5bbb6 <_IO_vfscanf+0x7226> 0.00 : 5c0af: 4c 89 d7 mov %r10,%rdi 0.00 : 5c0b2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5c0b9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c0c0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c0c7: e8 34 91 01 00 callq 75200 <__uflow> 0.00 : 5c0cc: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5c0cf: 41 89 c7 mov %eax,%r15d 0.00 : 5c0d2: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c0d9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c0e0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c0e7: 0f 84 44 03 00 00 je 5c431 <_IO_vfscanf+0x7aa1> 0.00 : 5c0ed: 49 83 c3 01 add $0x1,%r11 0.00 : 5c0f1: eb a5 jmp 5c098 <_IO_vfscanf+0x7708> 0.00 : 5c0f3: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 5c0f7: 74 0d je 5c106 <_IO_vfscanf+0x7776> 0.00 : 5c0f9: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 5c0fd: 0f 1f 00 nopl (%rax) 0.00 : 5c100: 0f 85 cf fa ff ff jne 5bbd5 <_IO_vfscanf+0x7245> 0.00 : 5c106: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c10d: 0f 84 97 01 00 00 je 5c2aa <_IO_vfscanf+0x791a> 0.00 : 5c113: 47 88 3c 31 mov %r15b,(%r9,%r14,1) 0.00 : 5c117: 49 83 c6 01 add $0x1,%r14 0.00 : 5c11b: e9 46 ff ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c120: 4b 8d 04 36 lea (%r14,%r14,1),%rax 0.00 : 5c124: ba 00 01 00 00 mov $0x100,%edx 0.00 : 5c129: 48 3d 00 01 00 00 cmp $0x100,%rax 0.00 : 5c12f: 48 0f 43 d0 cmovae %rax,%rdx 0.00 : 5c133: 48 89 d0 mov %rdx,%rax 0.00 : 5c136: 48 89 95 50 fd ff ff mov %rdx,-0x2b0(%rbp) 0.00 : 5c13d: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c141: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c145: 48 29 c4 sub %rax,%rsp 0.00 : 5c148: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c14d: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c151: 4d 85 c9 test %r9,%r9 0.00 : 5c154: 0f 84 15 04 00 00 je 5c56f <_IO_vfscanf+0x7bdf> 0.00 : 5c15a: 4c 89 ce mov %r9,%rsi 0.00 : 5c15d: 4c 89 f2 mov %r14,%rdx 0.00 : 5c160: 48 89 df mov %rbx,%rdi 0.00 : 5c163: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c16a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c171: e8 da 85 02 00 callq 84750 0.00 : 5c176: 49 89 d9 mov %rbx,%r9 0.00 : 5c179: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c180: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c187: e9 c8 fe ff ff jmpq 5c054 <_IO_vfscanf+0x76c4> 0.00 : 5c18c: 41 83 fc 0a cmp $0xa,%r12d 0.00 : 5c190: 0f 85 2c c0 ff ff jne 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c196: 80 bd 97 fd ff ff 00 cmpb $0x0,-0x269(%rbp) 0.00 : 5c19d: 0f 84 01 fa ff ff je 5bba4 <_IO_vfscanf+0x7214> 0.00 : 5c1a3: 48 8b bd 30 fd ff ff mov -0x2d0(%rbp),%rdi 0.00 : 5c1aa: e8 01 4a 02 00 callq 80bb0 <__GI_strlen> 0.00 : 5c1af: 48 83 f8 10 cmp $0x10,%rax 0.00 : 5c1b3: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c1ba: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c1c1: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c1c8: 0f 87 e8 f9 ff ff ja 5bbb6 <_IO_vfscanf+0x7226> 0.00 : 5c1ce: 48 8b bd 40 fc ff ff mov -0x3c0(%rbp),%rdi 0.00 : 5c1d5: 48 8b b5 30 fd ff ff mov -0x2d0(%rbp),%rsi 0.00 : 5c1dc: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 5c1e0: 48 81 c7 aa 00 00 00 add $0xaa,%rdi 0.00 : 5c1e7: e8 64 85 02 00 callq 84750 0.00 : 5c1ec: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c1f3: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c1fa: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c201: e9 b0 f9 ff ff jmpq 5bbb6 <_IO_vfscanf+0x7226> 0.00 : 5c206: 48 8b 1d 2b 5c 31 00 mov 0x315c2b(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5c20d: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 5c213: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5c21a: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 5c21d: e9 a0 bf ff ff jmpq 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c222: 89 c1 mov %eax,%ecx 0.00 : 5c224: e9 22 fa ff ff jmpq 5bc4b <_IO_vfscanf+0x72bb> 0.00 : 5c229: 0f b6 85 20 fd ff ff movzbl -0x2e0(%rbp),%eax 0.00 : 5c230: 83 f0 01 xor $0x1,%eax 0.00 : 5c233: 83 bd 98 fd ff ff 0b cmpl $0xb,-0x268(%rbp) 0.00 : 5c23a: 0f 84 4c 01 00 00 je 5c38c <_IO_vfscanf+0x79fc> 0.00 : 5c240: 83 bd 98 fd ff ff 0a cmpl $0xa,-0x268(%rbp) 0.00 : 5c247: 0f 85 80 fd ff ff jne 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c24d: 80 bd 0f fe ff ff 00 cmpb $0x0,-0x1f1(%rbp) 0.00 : 5c254: 0f 84 73 fd ff ff je 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c25a: 84 c0 test %al,%al 0.00 : 5c25c: 0f 84 6b fd ff ff je 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c262: 48 8b b5 30 fd ff ff mov -0x2d0(%rbp),%rsi 0.00 : 5c269: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : 5c26c: 74 30 je 5c29e <_IO_vfscanf+0x790e> 0.00 : 5c26e: 4f 8d 2c 36 lea (%r14,%r14,1),%r13 0.00 : 5c272: 49 89 f4 mov %rsi,%r12 0.00 : 5c275: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c27c: 0f 84 95 00 00 00 je 5c317 <_IO_vfscanf+0x7987> 0.00 : 5c282: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5c287: 49 83 c4 01 add $0x1,%r12 0.00 : 5c28b: 49 83 c5 02 add $0x2,%r13 0.00 : 5c28f: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c293: 49 83 c6 01 add $0x1,%r14 0.00 : 5c297: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5c29c: 75 d7 jne 5c275 <_IO_vfscanf+0x78e5> 0.00 : 5c29e: c6 85 20 fd ff ff 00 movb $0x0,-0x2e0(%rbp) 0.00 : 5c2a5: e9 bc fd ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c2aa: 4b 8d 0c 36 lea (%r14,%r14,1),%rcx 0.00 : 5c2ae: bb 00 01 00 00 mov $0x100,%ebx 0.00 : 5c2b3: 48 81 f9 00 01 00 00 cmp $0x100,%rcx 0.00 : 5c2ba: 48 0f 43 d9 cmovae %rcx,%rbx 0.00 : 5c2be: 48 89 d8 mov %rbx,%rax 0.00 : 5c2c1: 48 89 9d 50 fd ff ff mov %rbx,-0x2b0(%rbp) 0.00 : 5c2c8: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c2cc: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c2d0: 48 29 c4 sub %rax,%rsp 0.00 : 5c2d3: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c2d8: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c2dc: 4d 85 c9 test %r9,%r9 0.00 : 5c2df: 0f 84 97 00 00 00 je 5c37c <_IO_vfscanf+0x79ec> 0.00 : 5c2e5: 4c 89 ce mov %r9,%rsi 0.00 : 5c2e8: 4c 89 f2 mov %r14,%rdx 0.00 : 5c2eb: 48 89 df mov %rbx,%rdi 0.00 : 5c2ee: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c2f5: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c2fc: e8 4f 84 02 00 callq 84750 0.00 : 5c301: 49 89 d9 mov %rbx,%r9 0.00 : 5c304: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c30b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c312: e9 fc fd ff ff jmpq 5c113 <_IO_vfscanf+0x7783> 0.00 : 5c317: 49 81 fd 00 01 00 00 cmp $0x100,%r13 0.00 : 5c31e: bf 00 01 00 00 mov $0x100,%edi 0.00 : 5c323: 49 0f 43 fd cmovae %r13,%rdi 0.00 : 5c327: 48 89 f8 mov %rdi,%rax 0.00 : 5c32a: 48 89 bd 50 fd ff ff mov %rdi,-0x2b0(%rbp) 0.00 : 5c331: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c335: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c339: 48 29 c4 sub %rax,%rsp 0.00 : 5c33c: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c341: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c345: 4d 85 c9 test %r9,%r9 0.00 : 5c348: 74 3a je 5c384 <_IO_vfscanf+0x79f4> 0.00 : 5c34a: 4c 89 ce mov %r9,%rsi 0.00 : 5c34d: 4c 89 f2 mov %r14,%rdx 0.00 : 5c350: 48 89 df mov %rbx,%rdi 0.00 : 5c353: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c35a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c361: e8 ea 83 02 00 callq 84750 0.00 : 5c366: 49 89 d9 mov %rbx,%r9 0.00 : 5c369: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c370: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c377: e9 06 ff ff ff jmpq 5c282 <_IO_vfscanf+0x78f2> 0.00 : 5c37c: 49 89 d9 mov %rbx,%r9 0.00 : 5c37f: e9 8f fd ff ff jmpq 5c113 <_IO_vfscanf+0x7783> 0.00 : 5c384: 49 89 d9 mov %rbx,%r9 0.00 : 5c387: e9 f6 fe ff ff jmpq 5c282 <_IO_vfscanf+0x78f2> 0.00 : 5c38c: 84 c0 test %al,%al 0.00 : 5c38e: 66 90 xchg %ax,%ax 0.00 : 5c390: 0f 84 37 fc ff ff je 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c396: 48 8b 8d 28 fd ff ff mov -0x2d8(%rbp),%rcx 0.00 : 5c39d: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 5c3a0: 74 30 je 5c3d2 <_IO_vfscanf+0x7a42> 0.00 : 5c3a2: 4f 8d 2c 36 lea (%r14,%r14,1),%r13 0.00 : 5c3a6: 49 89 cc mov %rcx,%r12 0.00 : 5c3a9: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c3b0: 0f 84 4c 01 00 00 je 5c502 <_IO_vfscanf+0x7b72> 0.00 : 5c3b6: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5c3bb: 49 83 c4 01 add $0x1,%r12 0.00 : 5c3bf: 49 83 c5 02 add $0x2,%r13 0.00 : 5c3c3: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c3c7: 49 83 c6 01 add $0x1,%r14 0.00 : 5c3cb: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5c3d0: 75 d7 jne 5c3a9 <_IO_vfscanf+0x7a19> 0.00 : 5c3d2: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 5c3d9: e9 88 fc ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c3de: 4d 85 f6 test %r14,%r14 0.00 : 5c3e1: 0f 84 ee f7 ff ff je 5bbd5 <_IO_vfscanf+0x7245> 0.00 : 5c3e7: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 5c3ee: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5c3f2: 0f b6 8d 1f fe ff ff movzbl -0x1e1(%rbp),%ecx 0.00 : 5c3f9: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 5c3fd: 3a 0c 90 cmp (%rax,%rdx,4),%cl 0.00 : 5c400: 0f 85 cf f7 ff ff jne 5bbd5 <_IO_vfscanf+0x7245> 0.00 : 5c406: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c40d: 74 3e je 5c44d <_IO_vfscanf+0x7abd> 0.00 : 5c40f: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 5c416: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c41a: 49 83 c6 01 add $0x1,%r14 0.00 : 5c41e: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 5c425: c6 85 21 fd ff ff 01 movb $0x1,-0x2df(%rbp) 0.00 : 5c42c: e9 35 fc ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c431: 48 8b 1d 00 5a 31 00 mov 0x315a00(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5c438: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5c43f: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5c442: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5c448: e9 75 bd ff ff jmpq 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c44d: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 5c451: be 00 01 00 00 mov $0x100,%esi 0.00 : 5c456: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 5c45d: 48 0f 43 f3 cmovae %rbx,%rsi 0.00 : 5c461: 48 89 f0 mov %rsi,%rax 0.00 : 5c464: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 5c46b: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c46f: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c473: 48 29 c4 sub %rax,%rsp 0.00 : 5c476: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c47b: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c47f: 4d 85 c9 test %r9,%r9 0.00 : 5c482: 0f 84 ef 00 00 00 je 5c577 <_IO_vfscanf+0x7be7> 0.00 : 5c488: 4c 89 ce mov %r9,%rsi 0.00 : 5c48b: 4c 89 f2 mov %r14,%rdx 0.00 : 5c48e: 48 89 df mov %rbx,%rdi 0.00 : 5c491: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c498: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c49f: e8 ac 82 02 00 callq 84750 0.00 : 5c4a4: 49 89 d9 mov %rbx,%r9 0.00 : 5c4a7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c4ae: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c4b5: e9 55 ff ff ff jmpq 5c40f <_IO_vfscanf+0x7a7f> 0.00 : 5c4ba: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi 0.00 : 5c4c1: 8d 7b 30 lea 0x30(%rbx),%edi 0.00 : 5c4c4: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5c4cb: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c4d2: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c4d9: e8 62 25 08 00 callq dea40 <__towctrans> 0.00 : 5c4de: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 5c4e5: 89 04 9a mov %eax,(%rdx,%rbx,4) 0.00 : 5c4e8: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c4ef: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c4f6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c4fd: e9 2c f6 ff ff jmpq 5bb2e <_IO_vfscanf+0x719e> 0.00 : 5c502: 49 81 fd 00 01 00 00 cmp $0x100,%r13 0.00 : 5c509: bb 00 01 00 00 mov $0x100,%ebx 0.00 : 5c50e: 49 0f 43 dd cmovae %r13,%rbx 0.00 : 5c512: 48 89 d8 mov %rbx,%rax 0.00 : 5c515: 48 89 9d 50 fd ff ff mov %rbx,-0x2b0(%rbp) 0.00 : 5c51c: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c520: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c524: 48 29 c4 sub %rax,%rsp 0.00 : 5c527: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c52c: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c530: 4d 85 c9 test %r9,%r9 0.00 : 5c533: 74 32 je 5c567 <_IO_vfscanf+0x7bd7> 0.00 : 5c535: 4c 89 ce mov %r9,%rsi 0.00 : 5c538: 4c 89 f2 mov %r14,%rdx 0.00 : 5c53b: 48 89 df mov %rbx,%rdi 0.00 : 5c53e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c545: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c54c: e8 ff 81 02 00 callq 84750 0.00 : 5c551: 49 89 d9 mov %rbx,%r9 0.00 : 5c554: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c55b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c562: e9 4f fe ff ff jmpq 5c3b6 <_IO_vfscanf+0x7a26> 0.00 : 5c567: 49 89 d9 mov %rbx,%r9 0.00 : 5c56a: e9 47 fe ff ff jmpq 5c3b6 <_IO_vfscanf+0x7a26> 0.00 : 5c56f: 49 89 d9 mov %rbx,%r9 0.00 : 5c572: e9 dd fa ff ff jmpq 5c054 <_IO_vfscanf+0x76c4> 0.00 : 5c577: 49 89 d9 mov %rbx,%r9 0.00 : 5c57a: e9 90 fe ff ff jmpq 5c40f <_IO_vfscanf+0x7a7f> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074bd0 <_IO_iter_begin>: ??:0 100.00 : 74bd0: 48 8b 05 a9 dd 2f 00 mov 0x2fdda9(%rip),%rax # 372980 <_IO_list_all> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 22.22 ??:0 16.67 ??:0 16.67 ??:0 11.11 ??:0 11.11 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 5.56 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000085c00 : ??:0 22.22 : 85c00: 66 0f 6e ce movd %esi,%xmm1 0.00 : 85c04: 48 89 f9 mov %rdi,%rcx 5.56 : 85c07: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 5.56 : 85c0b: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 85c0f: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 85c13: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 85c17: 83 ce ff or $0xffffffff,%esi 0.00 : 85c1a: 66 0f 6f 07 movdqa (%rdi),%xmm0 0.00 : 85c1e: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 85c23: 48 29 f9 sub %rdi,%rcx 0.00 : 85c26: 66 0f 6f d8 movdqa %xmm0,%xmm3 5.56 : 85c2a: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 85c2e: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 85c32: 66 0f 74 da pcmpeqb %xmm2,%xmm3 5.56 : 85c36: d3 e6 shl %cl,%esi 0.00 : 85c38: 66 0f d7 d0 pmovmskb %xmm0,%edx 16.67 : 85c3c: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 85c40: 09 d1 or %edx,%ecx 11.11 : 85c42: 21 f1 and %esi,%ecx 0.00 : 85c44: 75 20 jne 85c66 0.00 : 85c46: 66 0f 6f 07 movdqa (%rdi),%xmm0 0.00 : 85c4a: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 85c4e: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 85c52: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 85c56: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 85c5a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 85c5e: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 85c62: 09 d1 or %edx,%ecx 0.00 : 85c64: 74 e0 je 85c46 0.00 : 85c66: 0f bc d1 bsf %ecx,%edx 27.78 : 85c69: 48 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 70.59 ??:0 11.76 ??:0 5.88 ??:0 5.88 ??:0 5.88 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000113db0 <__strchr_sse42>: ??:0 11.76 : 113db0: 40 84 f6 test %sil,%sil 0.00 : 113db3: 0f 84 47 2f 00 00 je 116d00 <__strend_sse4> 0.00 : 113db9: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 113dbd: 66 0f 6e ce movd %esi,%xmm1 0.00 : 113dc1: 89 f9 mov %edi,%ecx 0.00 : 113dc3: 66 0f 38 00 ca pshufb %xmm2,%xmm1 0.00 : 113dc8: 83 e1 0f and $0xf,%ecx 0.00 : 113dcb: 49 89 f8 mov %rdi,%r8 0.00 : 113dce: 74 48 je 113e18 <__strchr_sse42+0x68> 5.88 : 113dd0: 49 83 e0 f0 and $0xfffffffffffffff0,%r8 0.00 : 113dd4: 66 41 0f 6f 00 movdqa (%r8),%xmm0 0.00 : 113dd9: 66 0f 74 d0 pcmpeqb %xmm0,%xmm2 0.00 : 113ddd: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 113de1: 66 0f d7 d2 pmovmskb %xmm2,%edx 0.00 : 113de5: 66 0f d7 f0 pmovmskb %xmm0,%esi 0.00 : 113de9: d3 fa sar %cl,%edx 0.00 : 113deb: d3 fe sar %cl,%esi 0.00 : 113ded: 85 f6 test %esi,%esi 0.00 : 113def: 74 1f je 113e10 <__strchr_sse42+0x60> 0.00 : 113df1: 0f bc c6 bsf %esi,%eax 0.00 : 113df4: 85 d2 test %edx,%edx 0.00 : 113df6: 74 07 je 113dff <__strchr_sse42+0x4f> 0.00 : 113df8: 0f bc f2 bsf %edx,%esi 0.00 : 113dfb: 39 f0 cmp %esi,%eax 0.00 : 113dfd: 77 4d ja 113e4c <__strchr_sse42+0x9c> 0.00 : 113dff: 48 01 f8 add %rdi,%rax 0.00 : 113e02: c3 retq 0.00 : 113e03: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 113e0a: 84 00 00 00 00 00 0.00 : 113e10: 85 d2 test %edx,%edx 0.00 : 113e12: 75 38 jne 113e4c <__strchr_sse42+0x9c> 0.00 : 113e14: 49 83 c0 10 add $0x10,%r8 0.00 : 113e18: 66 41 0f 3a 63 08 02 pcmpistri $0x2,(%r8),%xmm1 70.59 : 113e1f: 76 29 jbe 113e4a <__strchr_sse42+0x9a> 0.00 : 113e21: 49 83 c0 10 add $0x10,%r8 0.00 : 113e25: 66 41 0f 3a 63 08 02 pcmpistri $0x2,(%r8),%xmm1 0.00 : 113e2c: 76 1c jbe 113e4a <__strchr_sse42+0x9a> 0.00 : 113e2e: 49 83 c0 10 add $0x10,%r8 5.88 : 113e32: 66 41 0f 3a 63 08 02 pcmpistri $0x2,(%r8),%xmm1 0.00 : 113e39: 76 0f jbe 113e4a <__strchr_sse42+0x9a> 5.88 : 113e3b: 49 83 c0 10 add $0x10,%r8 0.00 : 113e3f: 66 41 0f 3a 63 08 02 pcmpistri $0x2,(%r8),%xmm1 0.00 : 113e46: 76 02 jbe 113e4a <__strchr_sse42+0x9a> 0.00 : 113e48: eb ca jmp 113e14 <__strchr_sse42+0x64> 0.00 : 113e4a: 72 04 jb 113e50 <__strchr_sse42+0xa0> 0.00 : 113e4c: 31 c0 xor %eax,%eax 0.00 : 113e4e: c3 retq 0.00 : 113e4f: 90 nop 0.00 : 113e50: 49 8d 04 08 lea (%r8,%rcx,1),%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:129 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:129 15.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:128 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:128 5.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:129 5.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:131 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000673d50 : : * : * Caller must hold exclusive lock on BufMappingLock for tag's partition : */ : void : BufTableDelete(BufferTag *tagPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:128 15.00 : 673d50: 55 push %rbp : if (!CHashDelete(SharedBufHash, tagPtr)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:129 25.00 : 673d51: 48 89 fe mov %rdi,%rsi 0.00 : 673d54: 48 8b 3d fd 92 50 00 mov 0x5092fd(%rip),%rdi # b7d058 : * : * Caller must hold exclusive lock on BufMappingLock for tag's partition : */ : void : BufTableDelete(BufferTag *tagPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:128 10.00 : 673d5b: 48 89 e5 mov %rsp,%rbp : if (!CHashDelete(SharedBufHash, tagPtr)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:129 5.00 : 673d5e: e8 7d f0 10 00 callq 782de0 40.00 : 673d63: 84 c0 test %al,%al 0.00 : 673d65: 74 02 je 673d69 : elog(ERROR, "shared buffer hash table corrupted"); : } 0.00 : 673d67: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:131 5.00 : 673d68: c3 retq : */ : void : BufTableDelete(BufferTag *tagPtr) : { : if (!CHashDelete(SharedBufHash, tagPtr)) : elog(ERROR, "shared buffer hash table corrupted"); 0.00 : 673d69: ba 23 9d 8a 00 mov $0x8a9d23,%edx 0.00 : 673d6e: be 82 00 00 00 mov $0x82,%esi 0.00 : 673d73: bf db 9c 8a 00 mov $0x8a9cdb,%edi 0.00 : 673d78: e8 a3 76 10 00 callq 77b420 0.00 : 673d7d: be 00 9d 8a 00 mov $0x8a9d00,%esi 0.00 : 673d82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 673d87: 31 c0 xor %eax,%eax 0.00 : 673d89: e8 a2 74 10 00 callq 77b230 0.00 : 673d8e: e8 3d 57 df ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ---------------------------------------------- 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000700 : 0.00 : 700: 53 push %rbx 0.00 : 731: 48 89 fb 48 83 mov $0x2b8,%edi 0.00 : 736: ec 10 66 xor %r10d,%r10d 0.00 : 739: 83 bf f8 xor %r9d,%r9d 0.00 : 73c: 03 00 test %edi,%edi 0.00 : 73e: 00 00 jle 78c 0.00 : 740: 48 8b 87 mov %rbx,%r8 0.00 : 743: a0 04 xor %edi,%edi 0.00 : 745: 00 00 74 xor %r10d,%r10d 0.00 : 748: 09 83 b8 xor %r9d,%r9d 0.00 : 74b: 88 00 00 00 01 mov $0xc030,%ecx 0.00 : 750: 74 0e 48 mov %rcx,%rax 0.00 : 753: 83 c4 10 5b c3 0f 1f add 0x570(%rbx),%rax 0.00 : 75a: 84 00 mov (%rax),%eax 0.00 : 75c: 00 00 test %eax,%eax 0.00 : 75e: 00 00 8b bf b8 02 00 mov 0x2c0(%r8),%rdx 0.00 : 765: 00 45 je 771 0.00 : 767: 31 d2 mov %eax,%eax 0.00 : 769: 45 31 c9 85 add %rax,0x68(%rdx) 0.00 : 76d: ff 7e 4c 49 add %rax,0x70(%rsi) 0.00 : 771: 89 d8 31 ff add 0x60(%rdx),%r10 0.00 : 775: 45 31 d2 45 add 0x58(%rdx),%r9 0.00 : 779: 31 c9 b9 add $0x1,%edi 0.00 : 77c: 30 c0 00 00 add $0x40,%rcx 0.00 : 780: 48 89 c8 48 add $0x8,%r8 0.00 : 784: 03 83 70 05 00 00 cmp %edi,0x2b8(%rbx) 0.00 : 78a: 8b 00 jg 750 0.00 : 78c: 85 c0 49 8b mov %r10,0x10(%rsi) 0.00 : 790: 90 c0 02 mov %r9,(%rsi) 0.00 : 793: 00 00 xor %edi,%edi 0.00 : 795: 74 0a 89 c0 48 01 42 mov 0x234(%rbx),%r8d 0.00 : 79c: 68 48 xor %ecx,%ecx 0.00 : 79e: 01 46 70 test %r8d,%r8d 0.00 : 7a1: 4c 03 jle 7c9 0.00 : 7a3: 52 60 xor %edi,%edi 0.00 : 7a5: 4c 03 xor %ecx,%ecx 0.00 : 7a7: 4a 58 xor %edx,%edx 0.00 : 7a9: 83 c7 01 48 83 c1 40 nopl 0x0(%rax) 0.00 : 7b0: 49 83 c0 08 39 bb b8 mov 0x238(%rbx,%rdx,8),%rax 0.00 : 7b7: 02 0.00 : 7b8: 00 00 7f c4 add $0x1,%rdx 0.00 : 7bc: 4c 89 56 10 add 0x58(%rax),%rdi 0.00 : 7c0: 4c 89 0e 31 add 0x50(%rax),%rcx 0.00 : 7c4: ff 44 8b cmp %edx,%r8d 0.00 : 7c7: 83 34 jg 7b0 0.00 : 7c9: 02 00 00 31 mov %rdi,0x18(%rsi) 0.00 : 7cd: c9 45 85 c0 mov %rcx,0x8(%rsi) 0.00 : 7d1: 7e 26 31 ff 31 c9 31 mov 0x570(%rbx),%rax 0.00 : 7d8: d2 0f 1f 80 00 00 00 mov 0x9c8(%rbx),%rdx 0.00 : 7df: 00 48 8b 84 d3 38 add $0x4000,%rax 0.00 : 7e5: 02 00 mov (%rax),%eax 0.00 : 7e7: 00 48 mov %eax,%eax 0.00 : 7e9: 83 c2 01 add %rdx,%rax 0.00 : 7ec: 48 03 78 58 48 03 48 mov 0xa98(%rbx),%rdx 0.00 : 7f3: 50 41 39 d0 7f e7 48 mov %rax,0x9c8(%rbx) 0.00 : 7fa: 89 7e 18 48 89 4e 08 mov 0x570(%rbx),%rax 0.00 : 801: 48 8b 83 70 05 00 add $0x4074,%rax 0.00 : 807: 00 48 mov (%rax),%eax 0.00 : 809: 8b 93 mov %eax,%eax 0.00 : 80b: c8 09 00 add %rdx,%rax 0.00 : 80e: 00 48 05 00 40 00 00 mov 0xab8(%rbx),%rdx 0.00 : 815: 8b 00 89 c0 48 01 d0 mov %rax,0xa98(%rbx) 0.00 : 81c: 48 8b 93 98 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 823: 48 89 83 c8 09 00 add $0x4088,%rax 0.00 : 829: 00 48 mov (%rax),%eax 0.00 : 82b: 8b 83 mov %eax,%eax 0.00 : 82d: 70 05 00 add %rdx,%rax 0.00 : 830: 00 48 05 74 40 00 00 mov %rax,0xab8(%rbx) 0.00 : 837: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : 83e: 48 8b 93 b8 0a 00 add $0x408c,%rax 0.00 : 844: 00 48 mov (%rax),%eax 0.00 : 846: 89 83 98 0a 00 00 48 mov 0x570(%rbx),%rax 0.00 : 84d: 8b 83 70 05 00 00 48 mov 0xaa0(%rbx),%rdx 0.00 : 854: 05 88 40 00 00 8b add $0x4078,%rax 0.00 : 85a: 00 89 mov (%rax),%eax 0.00 : 85c: c0 48 mov %eax,%eax 0.00 : 85e: 01 d0 48 add %rdx,%rax 0.00 : 861: 89 83 b8 0a 00 00 48 mov 0xaa8(%rbx),%rdx 0.00 : 868: 8b 83 70 05 00 00 48 mov %rax,0xaa0(%rbx) 0.00 : 86f: 05 8c 40 00 00 8b 00 mov 0x570(%rbx),%rax 0.00 : 876: 48 8b 83 70 05 00 add $0x407c,%rax 0.00 : 87c: 00 48 mov (%rax),%eax 0.00 : 87e: 8b 93 mov %eax,%eax 0.00 : 880: a0 0a 00 add %rdx,%rax 0.00 : 883: 00 48 05 78 40 00 00 mov 0xae0(%rbx),%rdx 0.00 : 88a: 8b 00 89 c0 48 01 d0 mov %rax,0xaa8(%rbx) 0.00 : 891: 48 8b 93 a8 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 898: 48 89 83 a0 0a 00 add $0x40ac,%rax 0.00 : 89e: 00 48 mov (%rax),%eax 0.00 : 8a0: 8b 83 mov %eax,%eax 0.00 : 8a2: 70 05 00 add %rdx,%rax 0.00 : 8a5: 00 48 05 7c 40 00 00 mov 0xa68(%rbx),%rdx 0.00 : 8ac: 8b 00 89 c0 48 01 d0 mov %rax,0xae0(%rbx) 0.00 : 8b3: 48 8b 93 e0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 8ba: 48 89 83 a8 0a 00 add $0x405c,%rax 0.00 : 8c0: 00 48 mov (%rax),%eax 0.00 : 8c2: 8b 83 mov %eax,%eax 0.00 : 8c4: 70 05 00 add %rdx,%rax 0.00 : 8c7: 00 48 05 ac 40 00 00 mov 0xa70(%rbx),%rdx 0.00 : 8ce: 8b 00 89 c0 48 01 d0 mov %rax,0xa68(%rbx) 0.00 : 8d5: 48 8b 93 68 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 8dc: 48 89 83 e0 0a 00 add $0x4060,%rax 0.00 : 8e2: 00 48 mov (%rax),%eax 0.00 : 8e4: 8b 83 mov %eax,%eax 0.00 : 8e6: 70 05 00 add %rdx,%rax 0.00 : 8e9: 00 48 05 5c 40 00 00 mov 0xa78(%rbx),%rdx 0.00 : 8f0: 8b 00 89 c0 48 01 d0 mov %rax,0xa70(%rbx) 0.00 : 8f7: 48 8b 93 70 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 8fe: 48 89 83 68 0a 00 add $0x4064,%rax 0.00 : 904: 00 48 mov (%rax),%eax 0.00 : 906: 8b 83 mov %eax,%eax 0.00 : 908: 70 05 00 add %rdx,%rax 0.00 : 90b: 00 48 05 60 40 00 00 mov 0xa80(%rbx),%rdx 0.00 : 912: 8b 00 89 c0 48 01 d0 mov %rax,0xa78(%rbx) 0.00 : 919: 48 8b 93 78 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 920: 48 89 83 70 0a 00 add $0x4068,%rax 0.00 : 926: 00 48 mov (%rax),%eax 0.00 : 928: 8b 83 mov %eax,%eax 0.00 : 92a: 70 05 00 add %rdx,%rax 0.00 : 92d: 00 48 05 64 40 00 00 mov 0xa88(%rbx),%rdx 0.00 : 934: 8b 00 89 c0 48 01 d0 mov %rax,0xa80(%rbx) 0.00 : 93b: 48 8b 93 80 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 942: 48 89 83 78 0a 00 add $0x406c,%rax 0.00 : 948: 00 48 mov (%rax),%eax 0.00 : 94a: 8b 83 mov %eax,%eax 0.00 : 94c: 70 05 00 add %rdx,%rax 0.00 : 94f: 00 48 05 68 40 00 00 mov 0xa90(%rbx),%rdx 0.00 : 956: 8b 00 89 c0 48 01 d0 mov %rax,0xa88(%rbx) 0.00 : 95d: 48 8b 93 88 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 964: 48 89 83 80 0a 00 add $0x4070,%rax 0.00 : 96a: 00 48 mov (%rax),%eax 0.00 : 96c: 8b 83 mov %eax,%eax 0.00 : 96e: 70 05 00 add %rdx,%rax 0.00 : 971: 00 48 05 6c 40 00 00 mov 0x9d8(%rbx),%rdx 0.00 : 978: 8b 00 89 c0 48 01 d0 mov %rax,0xa90(%rbx) 0.00 : 97f: 48 8b 93 90 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 986: 48 89 83 88 0a 00 add $0x4008,%rax 0.00 : 98c: 00 48 mov (%rax),%eax ??:0 25.00 : 98e: 8b 83 mov %eax,%eax 0.00 : 990: 70 05 00 add %rdx,%rax 0.00 : 993: 00 48 05 70 40 00 00 mov 0xa28(%rbx),%rdx 0.00 : 99a: 8b 00 89 c0 48 01 d0 mov %rax,0x9d8(%rbx) 0.00 : 9a1: 48 8b 93 d8 09 00 00 mov 0x570(%rbx),%rax 0.00 : 9a8: 48 89 83 90 0a 00 add $0x4038,%rax 0.00 : 9ae: 00 48 mov (%rax),%eax 0.00 : 9b0: 8b 83 mov %eax,%eax 0.00 : 9b2: 70 05 00 add %rdx,%rax 0.00 : 9b5: 00 48 05 08 40 00 00 mov %rax,0xa28(%rbx) 0.00 : 9bc: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : 9c3: 48 8b 93 28 0a 00 add $0x4010,%rax 0.00 : 9c9: 00 48 mov (%rax),%eax 0.00 : 9cb: 89 83 mov %eax,%eax 0.00 : 9cd: d8 09 00 00 48 8b 83 add %rax,0x9e8(%rbx) 0.00 : 9d4: 70 05 00 00 add %rax,0x70(%rsi) 0.00 : 9d8: 48 05 38 40 00 00 8b mov 0x570(%rbx),%rax 0.00 : 9df: 00 89 c0 48 01 d0 48 mov 0x9f0(%rbx),%rdx 0.00 : 9e6: 89 83 28 0a 00 00 add $0x4014,%rax 0.00 : 9ec: 48 8b mov (%rax),%eax 0.00 : 9ee: 83 70 mov %eax,%eax 0.00 : 9f0: 05 00 00 add %rdx,%rax 0.00 : 9f3: 48 05 10 40 00 00 8b mov 0x9f8(%rbx),%rdx 0.00 : 9fa: 00 89 c0 48 01 83 e8 mov %rax,0x9f0(%rbx) 0.00 : a01: 09 00 00 48 01 46 70 mov 0x570(%rbx),%rax 0.00 : a08: 48 8b 83 70 05 00 add $0x4018,%rax 0.00 : a0e: 00 48 mov (%rax),%eax 0.00 : a10: 8b 93 mov %eax,%eax 0.00 : a12: f0 09 00 add %rdx,%rax 0.00 : a15: 00 48 05 14 40 00 00 mov 0xa00(%rbx),%rdx 0.00 : a1c: 8b 00 89 c0 48 01 d0 mov %rax,0x9f8(%rbx) 0.00 : a23: 48 8b 93 f8 09 00 00 mov 0x570(%rbx),%rax 0.00 : a2a: 48 89 83 f0 09 00 add $0x401c,%rax 0.00 : a30: 00 48 mov (%rax),%eax 0.00 : a32: 8b 83 mov %eax,%eax 0.00 : a34: 70 05 00 add %rdx,%rax 0.00 : a37: 00 48 05 18 40 00 00 mov 0xa08(%rbx),%rdx 0.00 : a3e: 8b 00 89 c0 48 01 d0 mov %rax,0xa00(%rbx) 0.00 : a45: 48 8b 93 00 0a 00 00 mov 0x570(%rbx),%rax 0.00 : a4c: 48 89 83 f8 09 00 add $0x4020,%rax 0.00 : a52: 00 48 mov (%rax),%eax 0.00 : a54: 8b 83 mov %eax,%eax 0.00 : a56: 70 05 00 add %rdx,%rax 0.00 : a59: 00 48 05 1c 40 00 00 mov 0xa18(%rbx),%rdx 0.00 : a60: 8b 00 89 c0 48 01 d0 mov %rax,0xa08(%rbx) 0.00 : a67: 48 8b 93 08 0a 00 00 mov 0x570(%rbx),%rax 0.00 : a6e: 48 89 83 00 0a 00 add $0x4030,%rax 0.00 : a74: 00 48 mov (%rax),%eax 12.50 : a76: 8b 83 mov %eax,%eax 0.00 : a78: 70 05 00 add %rdx,%rax 0.00 : a7b: 00 48 05 20 40 00 00 mov 0xa38(%rbx),%rdx 0.00 : a82: 8b 00 89 c0 48 01 d0 mov %rax,0xa18(%rbx) 0.00 : a89: 48 8b 93 18 0a 00 00 mov 0x570(%rbx),%rax 0.00 : a90: 48 89 83 08 0a 00 add $0x4040,%rax 0.00 : a96: 00 48 mov (%rax),%eax 0.00 : a98: 8b 83 mov %eax,%eax 0.00 : a9a: 70 05 00 add %rdx,%rax 0.00 : a9d: 00 48 05 30 40 00 00 mov 0xa40(%rbx),%rdx 0.00 : aa4: 8b 00 89 c0 48 01 d0 mov %rax,0xa38(%rbx) 0.00 : aab: 48 8b 93 38 0a 00 00 mov 0x570(%rbx),%rax 0.00 : ab2: 48 89 83 18 0a 00 add $0x4048,%rax 0.00 : ab8: 00 48 mov (%rax),%eax 0.00 : aba: 8b 83 mov %eax,%eax 0.00 : abc: 70 05 00 add %rdx,%rax 0.00 : abf: 00 48 05 40 40 00 00 mov 0xa48(%rbx),%rdx 0.00 : ac6: 8b 00 89 c0 48 01 d0 mov %rax,0xa40(%rbx) 0.00 : acd: 48 8b 93 40 0a 00 00 mov 0x570(%rbx),%rax 0.00 : ad4: 48 89 83 38 0a 00 add $0x404c,%rax 0.00 : ada: 00 48 mov (%rax),%eax 0.00 : adc: 8b 83 mov %eax,%eax 0.00 : ade: 70 05 00 add %rdx,%rax 0.00 : ae1: 00 48 05 48 40 00 00 mov 0xa50(%rbx),%rdx 0.00 : ae8: 8b 00 89 c0 48 01 d0 mov %rax,0xa48(%rbx) 0.00 : aef: 48 8b 93 48 0a 00 00 mov 0x570(%rbx),%rax 0.00 : af6: 48 89 83 40 0a 00 add $0x4050,%rax 0.00 : afc: 00 48 mov (%rax),%eax 0.00 : afe: 8b 83 mov %eax,%eax 0.00 : b00: 70 05 00 add %rdx,%rax 0.00 : b03: 00 48 05 4c 40 00 00 mov 0xa58(%rbx),%rdx 0.00 : b0a: 8b 00 89 c0 48 01 d0 mov %rax,0xa50(%rbx) 0.00 : b11: 48 8b 93 50 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b18: 48 89 83 48 0a 00 add $0x4054,%rax 0.00 : b1e: 00 48 mov (%rax),%eax 0.00 : b20: 8b 83 mov %eax,%eax 0.00 : b22: 70 05 00 add %rdx,%rax 0.00 : b25: 00 48 05 50 40 00 00 mov 0xa60(%rbx),%rdx 0.00 : b2c: 8b 00 89 c0 48 01 d0 mov %rax,0xa58(%rbx) 0.00 : b33: 48 8b 93 58 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b3a: 48 89 83 50 0a 00 add $0x4058,%rax 0.00 : b40: 00 48 mov (%rax),%eax 0.00 : b42: 8b 83 mov %eax,%eax 0.00 : b44: 70 05 00 add %rdx,%rax 0.00 : b47: 00 48 05 54 40 00 00 mov 0xab0(%rbx),%rdx 0.00 : b4e: 8b 00 89 c0 48 01 d0 mov %rax,0xa60(%rbx) 0.00 : b55: 48 8b 93 60 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b5c: 48 89 83 58 0a 00 add $0x4080,%rax 0.00 : b62: 00 48 mov (%rax),%eax 12.50 : b64: 8b 83 mov %eax,%eax 0.00 : b66: 70 05 00 add %rdx,%rax 0.00 : b69: 00 48 05 58 40 00 00 mov 0xac0(%rbx),%rdx 0.00 : b70: 8b 00 89 c0 48 01 d0 mov %rax,0xab0(%rbx) 0.00 : b77: 48 8b 93 b0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b7e: 48 89 83 60 0a 00 add $0x4090,%rax 0.00 : b84: 00 48 mov (%rax),%eax 0.00 : b86: 8b 83 mov %eax,%eax 0.00 : b88: 70 05 00 add %rdx,%rax 0.00 : b8b: 00 48 05 80 40 00 00 mov %rax,0xac0(%rbx) 0.00 : b92: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : b99: 48 8b 93 c0 0a 00 add $0x4094,%rax 0.00 : b9f: 00 48 mov (%rax),%eax 0.00 : ba1: 89 83 b0 0a 00 00 48 mov 0x570(%rbx),%rax 0.00 : ba8: 8b 83 70 05 00 00 48 mov 0xac8(%rbx),%rdx 0.00 : baf: 05 90 40 00 00 8b add $0x40a0,%rax 0.00 : bb5: 00 89 mov (%rax),%eax 0.00 : bb7: c0 48 mov %eax,%eax 0.00 : bb9: 01 d0 48 add %rdx,%rax 0.00 : bbc: 89 83 c0 0a 00 00 48 mov 0xad0(%rbx),%rdx 0.00 : bc3: 8b 83 70 05 00 00 48 mov %rax,0xac8(%rbx) 0.00 : bca: 05 94 40 00 00 8b 00 mov 0x570(%rbx),%rax 0.00 : bd1: 48 8b 83 70 05 00 add $0x40a4,%rax 0.00 : bd7: 00 48 mov (%rax),%eax 0.00 : bd9: 8b 93 mov %eax,%eax 0.00 : bdb: c8 0a 00 add %rdx,%rax 0.00 : bde: 00 48 05 a0 40 00 00 mov 0xad8(%rbx),%rdx 0.00 : be5: 8b 00 89 c0 48 01 d0 mov %rax,0xad0(%rbx) 0.00 : bec: 48 8b 93 d0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : bf3: 48 89 83 c8 0a 00 add $0x40a8,%rax 0.00 : bf9: 00 48 mov (%rax),%eax 0.00 : bfb: 8b 83 mov %eax,%eax 0.00 : bfd: 70 05 00 add %rdx,%rax 0.00 : c00: 00 48 05 a4 40 00 00 mov 0xae8(%rbx),%rdx 0.00 : c07: 8b 00 89 c0 48 01 d0 mov %rax,0xad8(%rbx) 0.00 : c0e: 48 8b 93 d8 0a 00 00 mov 0x570(%rbx),%rax 0.00 : c15: 48 89 83 d0 0a 00 add $0x40b0,%rax 0.00 : c1b: 00 48 mov (%rax),%eax 12.50 : c1d: 8b 83 mov %eax,%eax 0.00 : c1f: 70 05 00 add %rdx,%rax 0.00 : c22: 00 48 05 a8 40 00 00 mov 0xb08(%rbx),%rdx 0.00 : c29: 8b 00 89 c0 48 01 d0 mov %rax,0xae8(%rbx) 0.00 : c30: 48 8b 93 e8 0a 00 00 mov 0x570(%rbx),%rax 0.00 : c37: 48 89 83 d8 0a 00 add $0x40c4,%rax 0.00 : c3d: 00 48 mov (%rax),%eax 0.00 : c3f: 8b 83 mov %eax,%eax 0.00 : c41: 70 05 00 add %rdx,%rax 0.00 : c44: 00 48 05 b0 40 00 00 mov 0xb10(%rbx),%rdx 0.00 : c4b: 8b 00 89 c0 48 01 d0 mov %rax,0xb08(%rbx) 0.00 : c52: 48 8b 93 08 0b 00 00 mov 0x570(%rbx),%rax 0.00 : c59: 48 89 83 e8 0a 00 add $0x40cc,%rax 0.00 : c5f: 00 48 mov (%rax),%eax 0.00 : c61: 8b 83 mov %eax,%eax 0.00 : c63: 70 05 00 add %rdx,%rax 0.00 : c66: 00 48 05 c4 40 00 00 mov 0xb18(%rbx),%rdx 0.00 : c6d: 8b 00 89 c0 48 01 d0 mov %rax,0xb10(%rbx) 0.00 : c74: 48 8b 93 10 0b 00 00 mov 0x570(%rbx),%rax 0.00 : c7b: 48 89 83 08 0b 00 add $0x40d0,%rax 0.00 : c81: 00 48 mov (%rax),%eax 0.00 : c83: 8b 83 mov %eax,%eax 0.00 : c85: 70 05 00 add %rdx,%rax 0.00 : c88: 00 48 05 cc 40 00 00 mov 0xb28(%rbx),%rdx 0.00 : c8f: 8b 00 89 c0 48 01 d0 mov %rax,0xb18(%rbx) 0.00 : c96: 48 8b 93 18 0b 00 00 mov 0x570(%rbx),%rax 0.00 : c9d: 48 89 83 10 0b 00 add $0x40d8,%rax 0.00 : ca3: 00 48 mov (%rax),%eax 12.50 : ca5: 8b 83 mov %eax,%eax 0.00 : ca7: 70 05 00 add %rdx,%rax 0.00 : caa: 00 48 05 d0 40 00 00 mov 0xb30(%rbx),%rdx 0.00 : cb1: 8b 00 89 c0 48 01 d0 mov %rax,0xb28(%rbx) 0.00 : cb8: 48 8b 93 28 0b 00 00 mov 0x570(%rbx),%rax 0.00 : cbf: 48 89 83 18 0b 00 add $0x40dc,%rax 0.00 : cc5: 00 48 mov (%rax),%eax 0.00 : cc7: 8b 83 mov %eax,%eax 0.00 : cc9: 70 05 00 add %rdx,%rax 0.00 : ccc: 00 48 05 d8 40 00 00 mov 0xb38(%rbx),%rdx 0.00 : cd3: 8b 00 89 c0 48 01 d0 mov %rax,0xb30(%rbx) 0.00 : cda: 48 8b 93 30 0b 00 00 mov 0x570(%rbx),%rax 0.00 : ce1: 48 89 83 28 0b 00 add $0x40e0,%rax 0.00 : ce7: 00 48 mov (%rax),%eax 0.00 : ce9: 8b 83 mov %eax,%eax 0.00 : ceb: 70 05 00 add %rdx,%rax 0.00 : cee: 00 48 05 dc 40 00 00 mov 0xb40(%rbx),%rdx 0.00 : cf5: 8b 00 89 c0 48 01 d0 mov %rax,0xb38(%rbx) 0.00 : cfc: 48 8b 93 38 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d03: 48 89 83 30 0b 00 add $0x40e4,%rax 0.00 : d09: 00 48 mov (%rax),%eax 0.00 : d0b: 8b 83 mov %eax,%eax 0.00 : d0d: 70 05 00 add %rdx,%rax 0.00 : d10: 00 48 05 e0 40 00 00 mov 0xb48(%rbx),%rdx 0.00 : d17: 8b 00 89 c0 48 01 d0 mov %rax,0xb40(%rbx) 0.00 : d1e: 48 8b 93 40 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d25: 48 89 83 38 0b 00 add $0x40e8,%rax 0.00 : d2b: 00 48 mov (%rax),%eax 12.50 : d2d: 8b 83 mov %eax,%eax 0.00 : d2f: 70 05 00 add %rdx,%rax 0.00 : d32: 00 48 05 e4 40 00 00 mov 0xb50(%rbx),%rdx 0.00 : d39: 8b 00 89 c0 48 01 d0 mov %rax,0xb48(%rbx) 0.00 : d40: 48 8b 93 48 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d47: 48 89 83 40 0b 00 add $0x40ec,%rax 0.00 : d4d: 00 48 mov (%rax),%eax 0.00 : d4f: 8b 83 mov %eax,%eax 0.00 : d51: 70 05 00 add %rdx,%rax 0.00 : d54: 00 48 05 e8 40 00 00 mov 0xb58(%rbx),%rdx 0.00 : d5b: 8b 00 89 c0 48 01 d0 mov %rax,0xb50(%rbx) 0.00 : d62: 48 8b 93 50 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d69: 48 89 83 48 0b 00 add $0x40f0,%rax 0.00 : d6f: 00 48 mov (%rax),%eax 0.00 : d71: 8b 83 mov %eax,%eax 0.00 : d73: 70 05 00 add %rdx,%rax 0.00 : d76: 00 48 05 ec 40 00 00 mov 0xb60(%rbx),%rdx 0.00 : d7d: 8b 00 89 c0 48 01 d0 mov %rax,0xb58(%rbx) 0.00 : d84: 48 8b 93 58 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d8b: 48 89 83 50 0b 00 add $0x40f4,%rax 0.00 : d91: 00 48 mov (%rax),%eax 0.00 : d93: 8b 83 mov %eax,%eax 0.00 : d95: 70 05 00 add %rdx,%rax 0.00 : d98: 00 48 05 f0 40 00 00 mov 0xb20(%rbx),%rdx 0.00 : d9f: 8b 00 89 c0 48 01 d0 mov %rax,0xb60(%rbx) 0.00 : da6: 48 8b 93 60 0b 00 00 mov 0x570(%rbx),%rax 0.00 : dad: 48 89 83 58 0b 00 add $0x40d4,%rax 0.00 : db3: 00 48 mov (%rax),%eax 0.00 : db5: 8b 83 mov %eax,%eax 0.00 : db7: 70 05 00 add %rdx,%rax 0.00 : dba: 00 48 05 f4 40 00 00 mov 0xa10(%rbx),%rdx 0.00 : dc1: 8b 00 89 c0 48 01 d0 mov %rax,0xb20(%rbx) 0.00 : dc8: 48 8b 93 20 0b 00 00 mov 0x570(%rbx),%rax 0.00 : dcf: 48 89 83 60 0b 00 add $0x4028,%rax 0.00 : dd5: 00 48 mov (%rax),%eax 0.00 : dd7: 8b 83 mov %eax,%eax 0.00 : dd9: 70 05 00 add %rdx,%rax 0.00 : ddc: 00 48 05 d4 40 00 00 mov 0x9d0(%rbx),%rdx 0.00 : de3: 8b 00 89 c0 48 01 d0 mov %rax,0xa10(%rbx) 0.00 : dea: 48 8b 93 10 0a 00 00 mov 0x570(%rbx),%rax 0.00 : df1: 48 89 83 20 0b 00 add $0x4004,%rax 0.00 : df7: 00 48 mov (%rax),%eax 0.00 : df9: 8b 83 mov %eax,%eax 0.00 : dfb: 70 05 00 add %rdx,%rax 0.00 : dfe: 00 48 05 28 40 00 00 mov %rax,0x9d0(%rbx) 0.00 : e05: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : e0c: 48 8b 93 d0 add $0x18,%rax 0.00 : e10: 09 00 mov (%rax),%eax 12.50 : e12: 00 48 89 83 10 test $0xc00000,%eax 0.00 : e17: 0a 00 jne e6c 0.00 : e19: 00 48 8b 83 70 05 00 mov 0x570(%rbx),%rax 0.00 : e20: 00 48 05 04 40 00 00 mov 0x9e0(%rbx),%rdx 0.00 : e27: 8b 00 89 c0 48 01 add $0x400c,%rax 0.00 : e2d: d0 48 mov (%rax),%eax 0.00 : e2f: 89 83 mov %eax,%eax 0.00 : e31: d0 09 00 add %rdx,%rax 0.00 : e34: 00 48 8b 83 70 05 00 mov %rax,0x9e0(%rbx) 0.00 : e3b: 00 48 83 c0 18 8b mov 0x5e4(%rbx),%eax 0.00 : e41: 00 a9 00 sub $0x5,%eax 0.00 : e44: 00 c0 00 cmp $0x1,%eax 0.00 : e47: 75 53 jbe e6c 0.00 : e49: 48 8b 83 70 05 00 00 mov 0x570(%rbx),%rdx 0.00 : e50: 48 8b 93 e0 09 00 00 mov 0xa20(%rbx),%rax 0.00 : e57: 48 05 0c 40 00 00 8b add $0x4034,%rdx 0.00 : e5e: 00 89 mov (%rdx),%edx 0.00 : e60: c0 48 mov %edx,%edx 0.00 : e62: 01 d0 48 add %rax,%rdx 0.00 : e65: 89 83 e0 09 00 00 8b mov %rdx,0xa20(%rbx) 0.00 : e6c: 83 e4 05 00 00 83 e8 mov 0x570(%rbx),%rax 0.00 : e73: 05 83 f8 01 76 23 48 mov 0xb68(%rbx),%rdx 0.00 : e7a: 8b 93 70 05 00 00 add $0x40f8,%rax 0.00 : e80: 48 8b mov (%rax),%eax 0.00 : e82: 83 20 mov %eax,%eax 0.00 : e84: 0a 00 00 add %rdx,%rax 0.00 : e87: 48 81 c2 34 40 00 00 mov 0xb70(%rbx),%rdx 0.00 : e8e: 8b 12 89 d2 48 01 c2 mov %rax,0xb68(%rbx) 0.00 : e95: 48 89 93 20 0a 00 00 mov 0x570(%rbx),%rax 0.00 : e9c: 48 8b 83 70 05 00 add $0x40fc,%rax 0.00 : ea2: 00 48 mov (%rax),%eax 0.00 : ea4: 8b 93 mov %eax,%eax 0.00 : ea6: 68 0b 00 add %rdx,%rax 0.00 : ea9: 00 48 05 f8 40 00 00 mov 0xb78(%rbx),%rdx 0.00 : eb0: 8b 00 89 c0 48 01 d0 mov %rax,0xb70(%rbx) 0.00 : eb7: 48 8b 93 70 0b 00 00 mov 0x570(%rbx),%rax 0.00 : ebe: 48 89 83 68 0b 00 add $0x4100,%rax 0.00 : ec4: 00 48 mov (%rax),%eax 0.00 : ec6: 8b 83 mov %eax,%eax 0.00 : ec8: 70 05 00 add %rdx,%rax 0.00 : ecb: 00 48 05 fc 40 00 00 mov 0xbb8(%rbx),%rdx 0.00 : ed2: 8b 00 89 c0 48 01 d0 mov %rax,0xb78(%rbx) 0.00 : ed9: 48 8b 93 78 0b 00 00 mov 0x570(%rbx),%rax 0.00 : ee0: 48 89 83 70 0b 00 add $0x4124,%rax 0.00 : ee6: 00 48 mov (%rax),%eax 0.00 : ee8: 8b 83 mov %eax,%eax 0.00 : eea: 70 05 00 add %rdx,%rax 0.00 : eed: 00 48 05 00 41 00 00 mov 0xb80(%rbx),%rdx 0.00 : ef4: 8b 00 89 c0 48 01 d0 mov %rax,0xbb8(%rbx) 0.00 : efb: 48 8b 93 b8 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f02: 48 89 83 78 0b 00 add $0x4104,%rax 0.00 : f08: 00 48 mov (%rax),%eax 0.00 : f0a: 8b 83 mov %eax,%eax 0.00 : f0c: 70 05 00 add %rdx,%rax 0.00 : f0f: 00 48 05 24 41 00 00 mov 0xb88(%rbx),%rdx 0.00 : f16: 8b 00 89 c0 48 01 d0 mov %rax,0xb80(%rbx) 0.00 : f1d: 48 8b 93 80 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f24: 48 89 83 b8 0b 00 add $0x4108,%rax 0.00 : f2a: 00 48 mov (%rax),%eax 0.00 : f2c: 8b 83 mov %eax,%eax 0.00 : f2e: 70 05 00 add %rdx,%rax 0.00 : f31: 00 48 05 04 41 00 00 mov 0xb90(%rbx),%rdx 0.00 : f38: 8b 00 89 c0 48 01 d0 mov %rax,0xb88(%rbx) 0.00 : f3f: 48 8b 93 88 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f46: 48 89 83 80 0b 00 add $0x410c,%rax 0.00 : f4c: 00 48 mov (%rax),%eax 0.00 : f4e: 8b 83 mov %eax,%eax 0.00 : f50: 70 05 00 add %rdx,%rax 0.00 : f53: 00 48 05 08 41 00 00 mov 0xb98(%rbx),%rdx 0.00 : f5a: 8b 00 89 c0 48 01 d0 mov %rax,0xb90(%rbx) 0.00 : f61: 48 8b 93 90 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f68: 48 89 83 88 0b 00 add $0x4110,%rax 0.00 : f6e: 00 48 mov (%rax),%eax 0.00 : f70: 8b 83 mov %eax,%eax 0.00 : f72: 70 05 00 add %rdx,%rax 0.00 : f75: 00 48 05 0c 41 00 00 mov 0xba0(%rbx),%rdx 0.00 : f7c: 8b 00 89 c0 48 01 d0 mov %rax,0xb98(%rbx) 0.00 : f83: 48 8b 93 98 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f8a: 48 89 83 90 0b 00 add $0x4118,%rax 0.00 : f90: 00 48 mov (%rax),%eax 0.00 : f92: 8b 83 mov %eax,%eax 0.00 : f94: 70 05 00 add %rdx,%rax 0.00 : f97: 00 48 05 10 41 00 00 mov 0xba8(%rbx),%rdx 0.00 : f9e: 8b 00 89 c0 48 01 d0 mov %rax,0xba0(%rbx) 0.00 : fa5: 48 8b 93 a0 0b 00 00 mov 0x570(%rbx),%rax 0.00 : fac: 48 89 83 98 0b 00 add $0x411c,%rax 0.00 : fb2: 00 48 mov (%rax),%eax 0.00 : fb4: 8b 83 mov %eax,%eax 0.00 : fb6: 70 05 00 add %rdx,%rax 0.00 : fb9: 00 48 05 18 41 00 00 mov 0xbb0(%rbx),%rdx 0.00 : fc0: 8b 00 89 c0 48 01 d0 mov %rax,0xba8(%rbx) 0.00 : fc7: 48 8b 93 a8 0b 00 00 mov 0x570(%rbx),%rax 0.00 : fce: 48 89 83 a0 0b 00 add $0x4120,%rax 0.00 : fd4: 00 48 mov (%rax),%eax 0.00 : fd6: 8b 83 mov %eax,%eax 0.00 : fd8: 70 05 00 add %rdx,%rax 0.00 : fdb: 00 48 05 1c 41 00 00 mov %rax,0xbb0(%rbx) 0.00 : fe2: 8b 00 89 c0 48 01 d0 mov 0xaa8(%rbx),%rax 0.00 : fe9: 48 8b 93 b0 mov %rax,0x40(%rsi) 0.00 : fed: 0b 00 00 48 89 83 a8 mov 0xa10(%rbx),%rax 0.00 : ff4: 0b 00 00 48 mov %rax,0x48(%rsi) 0.00 : ff8: 8b 83 70 05 00 00 48 mov 0x9c8(%rbx),%rax 0.00 : fff: 05 20 41 00 00 8b 00 add 0x9e0(%rbx),%rax 0.00 : 1006: 89 c0 48 01 d0 48 89 add 0x9d0(%rbx),%rax 0.00 : 100d: 83 b0 0b 00 00 48 8b add 0xad0(%rbx),%rax 0.00 : 1014: 83 a8 0a 00 00 48 89 add 0xae0(%rbx),%rax 0.00 : 101b: 46 40 48 8b 83 10 0a add 0xa30(%rbx),%rax 0.00 : 1022: 00 00 48 89 mov %rax,0x20(%rsi) 0.00 : 1026: 46 48 48 8b 83 c8 09 mov 0xae0(%rbx),%rax 0.00 : 102d: 00 00 48 03 83 e0 09 add 0xad0(%rbx),%rax 0.00 : 1034: 00 00 48 03 mov %rax,0x50(%rsi) 0.00 : 1038: 83 d0 09 00 00 48 03 mov 0x9c8(%rbx),%rax 0.00 : 103f: 83 d0 0a 00 mov %rax,0x60(%rsi) 0.00 : 1043: 00 48 03 83 e0 0a 00 mov 0x9d0(%rbx),%rax 0.00 : 104a: 00 48 03 83 mov %rax,0x68(%rsi) 0.00 : 104e: 30 0a 00 00 48 89 46 mov 0x9e8(%rbx),%rax 0.00 : 1055: 20 48 8b 83 mov %rax,0x78(%rsi) 0.00 : 1059: e0 0a 00 00 48 03 83 mov 0xa08(%rbx),%rax 0.00 : 1060: d0 0a 00 00 48 89 46 add 0x9f8(%rbx),%rax 0.00 : 1067: 50 48 8b 83 mov %rax,0x28(%rsi) 0.00 : 106b: c8 09 00 00 48 89 46 mov 0x9f8(%rbx),%rax 0.00 : 1072: 60 48 8b 83 d0 09 00 mov %rax,0x80(%rsi) 0.00 : 1079: 00 48 89 46 68 48 8b mov 0xa08(%rbx),%rax 0.00 : 1080: 83 e8 09 00 00 48 89 mov %rax,0xa0(%rsi) 0.00 : 1087: 46 78 48 8b 83 08 0a mov 0xa20(%rbx),%rax 0.00 : 108e: 00 00 48 03 83 f8 09 mov %rax,0x88(%rsi) 0.00 : 1095: 00 00 48 89 46 28 48 cmpl $0x1,0x8bc(%rbx) 0.00 : 109c: 8b 83 f8 09 00 00 je 11b0 0.00 : 10a2: 48 89 86 80 00 00 00 mov 0x570(%rbx),%rax 0.00 : 10a9: 48 8b 83 08 0a 00 00 mov 0xb00(%rbx),%rdx 0.00 : 10b0: 48 89 86 a0 00 00 add $0x40bc,%rax 0.00 : 10b6: 00 48 mov (%rax),%eax 0.00 : 10b8: 8b 83 mov %eax,%eax 0.00 : 10ba: 20 0a 00 add %rdx,%rax 0.00 : 10bd: 00 48 89 86 88 00 00 mov 0xaf0(%rbx),%rdx 0.00 : 10c4: 00 83 bb bc 08 00 00 mov %rax,0xb00(%rbx) 0.00 : 10cb: 01 0f 84 0e 01 00 00 mov 0x570(%rbx),%rax 0.00 : 10d2: 48 8b 83 70 05 00 add $0x40b4,%rax 0.00 : 10d8: 00 48 mov (%rax),%eax 0.00 : 10da: 8b 93 mov %eax,%eax 0.00 : 10dc: 00 0b 00 add %rdx,%rax 0.00 : 10df: 00 48 05 bc 40 00 00 mov 0xaf8(%rbx),%rdx 0.00 : 10e6: 8b 00 89 c0 48 01 d0 mov %rax,0xaf0(%rbx) 0.00 : 10ed: 48 8b 93 f0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 10f4: 48 89 83 00 0b 00 add $0x40b8,%rax 0.00 : 10fa: 00 48 mov (%rax),%eax 0.00 : 10fc: 8b 83 mov %eax,%eax 0.00 : 10fe: 70 05 00 add %rdx,%rax 0.00 : 1101: 00 48 05 b4 40 00 00 mov %rax,0xaf8(%rbx) 0.00 : 1108: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : 110f: 48 8b 93 f8 0a 00 add $0x5820,%rax 0.00 : 1115: 00 48 mov (%rax),%eax 0.00 : 1117: 89 83 f0 0a 00 test $0x10000000,%eax 0.00 : 111c: 00 48 8b 83 70 05 je 722 0.00 : 1122: 00 00 48 05 b8 40 00 mov 0x570(%rbx),%rax 0.00 : 1129: 00 8b 00 89 c0 48 01 mov 0xc28(%rbx),%rdx 0.00 : 1130: d0 48 89 83 f8 0a add $0x8fe4,%rax 0.00 : 1136: 00 00 mov (%rax),%eax 0.00 : 1138: 48 8b mov %eax,%eax 0.00 : 113a: 83 70 05 add %rdx,%rax 0.00 : 113d: 00 00 48 05 20 58 00 mov 0xc30(%rbx),%rdx 0.00 : 1144: 00 8b 00 a9 00 00 00 mov %rax,0xc28(%rbx) 0.00 : 114b: 10 0f 84 00 f6 ff ff mov 0x570(%rbx),%rax 0.00 : 1152: 48 8b 83 70 05 00 add $0x415c,%rax 0.00 : 1158: 00 48 mov (%rax),%eax 0.00 : 115a: 8b 93 mov %eax,%eax 0.00 : 115c: 28 0c 00 add %rdx,%rax 0.00 : 115f: 00 48 05 e4 8f 00 00 mov 0xc38(%rbx),%rdx 0.00 : 1166: 8b 00 89 c0 48 01 d0 mov %rax,0xc30(%rbx) 0.00 : 116d: 48 8b 93 30 0c 00 00 mov 0x570(%rbx),%rax 0.00 : 1174: 48 89 83 28 0c 00 add $0x8fe0,%rax 0.00 : 117a: 00 48 mov (%rax),%eax 0.00 : 117c: 8b 83 mov %eax,%eax 0.00 : 117e: 70 05 00 add %rdx,%rax 0.00 : 1181: 00 48 05 5c 41 00 00 mov 0xc40(%rbx),%rdx 0.00 : 1188: 8b 00 89 c0 48 01 d0 mov %rax,0xc38(%rbx) 0.00 : 118f: 48 8b 93 38 0c 00 00 mov 0x570(%rbx),%rax 0.00 : 1196: 48 89 83 30 0c 00 add $0x4158,%rax 0.00 : 119c: 00 48 mov (%rax),%eax 0.00 : 119e: 8b 83 mov %eax,%eax 0.00 : 11a0: 70 05 00 add %rdx,%rax 0.00 : 11a3: 00 48 05 e0 8f 00 00 mov %rax,0xc40(%rbx) 0.00 : 11aa: 8b 00 89 c0 add $0x10,%rsp 0.00 : 11ae: 48 pop %rbx 0.00 : 11af: 01 retq 0.00 : 11b0: d0 48 8b 93 40 0c 00 cmpw $0x3e8,0x3f8(%rbx) 0.00 : 11b7: 00 48 0.00 : 11b9: 89 83 38 0c 00 00 jne 10a2 0.00 : 11bf: 48 8b 83 70 05 00 00 mov 0x860(%rbx),%rax 0.00 : 11c6: 48 05 58 test %rax,%rax 0.00 : 11c9: 41 00 je 11e6 0.00 : 11cb: 00 8b 00 89 c0 lea 0xe(%rsp),%rdx 0.00 : 11d0: 48 01 d0 48 89 83 40 lea 0x568(%rbx),%rdi 0.00 : 11d7: 0c 00 00 48 83 mov $0xa,%esi 0.00 : 11dc: c4 10 callq *%rax 0.00 : 11de: 5b c3 test %eax,%eax 0.00 : 11e0: 66 81 bb f8 03 00 jne 10a2 0.00 : 11e6: 00 e8 03 0f 85 movzbl 0xe(%rsp),%eax 0.00 : 11eb: e3 fe ff ff 48 mov %ax,0xe(%rsp) 0.00 : 11f0: 8b 83 60 movzwl %ax,%eax 0.00 : 11f3: 08 00 00 48 85 c0 add %eax,0xcf8(%rbx) 0.00 : 11f9: 74 1b 48 8d 54 jmpq 10a2 : 11fe: 24 0e xchg %ax,%ax : 1200: 48 8d bb 68 sub $0x18,%rsp : 1204: 05 00 00 be mov %rbx,(%rsp) : 1208: 0a 00 00 00 ff mov %rbp,0x8(%rsp) : 120d: d0 85 c0 mov %rdi,%rbx : 1210: 0f 85 bc fe ff mov %r12,0x10(%rsp) : 1215: ff 0f b6 44 mov 0x20(%rdi),%rsi : 1219: 24 0e 66 mov (%rdi),%rbp : 121c: 89 44 24 test %rsi,%rsi : 121f: 0e 0f b7 c0 01 83 je 13b0 : 1225: f8 0c 00 00 e9 a4 fe testb $0x3,0x220(%rbp) : 122c: ff ff je 127b Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001800 : : /** : * ixgbe_update_stats - Update the board statistics counters. : * @adapter: board private structure : **/ : void ixgbe_update_stats(struct ixgbe_adapter *adapter) : { 0.00 : 1800: 41 57 push %r15 0.00 : 1802: 41 56 push %r14 0.00 : 1804: 41 55 push %r13 0.00 : 1806: 41 54 push %r12 0.00 : 1808: 55 push %rbp 0.00 : 1809: 53 push %rbx 0.00 : 180a: 48 89 fb mov %rdi,%rbx 0.00 : 180d: 48 83 ec 28 sub $0x28,%rsp : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 1811: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax : #ifdef HAVE_NETDEV_STATS_IN_NETDEV : struct net_device_stats *net_stats = &adapter->netdev->stats; 0.00 : 1818: 4c 8b bf 00 02 00 00 mov 0x200(%rdi),%r15 : u64 bytes = 0, packets = 0, hw_csum_rx_error = 0; : #ifndef IXGBE_NO_LRO : u32 flushed = 0, coal = 0; : #endif : : if (test_bit(__IXGBE_DOWN, &adapter->state) || 0.00 : 181f: a8 04 test $0x4,%al 0.00 : 1821: 0f 85 b9 09 00 00 jne 21e0 0.00 : 1827: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax 0.00 : 182e: a8 02 test $0x2,%al 0.00 : 1830: 0f 85 aa 09 00 00 jne 21e0 : test_bit(__IXGBE_RESETTING, &adapter->state)) : return; : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { 0.00 : 1836: f6 87 1c 02 00 00 02 testb $0x2,0x21c(%rdi) 0.00 : 183d: 0f 85 ac 09 00 00 jne 21ef 0.00 : 1843: 44 8b 9f 28 02 00 00 mov 0x228(%rdi),%r11d : adapter->rsc_total_count = rsc_count; : adapter->rsc_total_flush = rsc_flush; : } : : #ifndef IXGBE_NO_LRO : for (i = 0; i < adapter->num_q_vectors; i++) { 0.00 : 184a: 8b 83 c0 0b 00 00 mov 0xbc0(%rbx),%eax 0.00 : 1850: 31 f6 xor %esi,%esi 0.00 : 1852: 31 c9 xor %ecx,%ecx 0.00 : 1854: 85 c0 test %eax,%eax 0.00 : 1856: 74 3a je 1892 0.00 : 1858: 83 e8 01 sub $0x1,%eax 0.00 : 185b: 31 f6 xor %esi,%esi 0.00 : 185d: 31 c9 xor %ecx,%ecx 0.00 : 185f: 48 8d 3c c5 08 00 00 lea 0x8(,%rax,8),%rdi 0.00 : 1866: 00 0.00 : 1867: 31 d2 xor %edx,%edx 0.00 : 1869: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : struct ixgbe_q_vector *q_vector = adapter->q_vector[i]; 0.00 : 1870: 48 8b 84 13 50 07 00 mov 0x750(%rbx,%rdx,1),%rax 0.00 : 1877: 00 : if (!q_vector) 0.00 : 1878: 48 85 c0 test %rax,%rax 0.00 : 187b: 74 0c je 1889 : continue; : flushed += q_vector->lrolist.stats.flushed; 0.00 : 187d: 03 b0 b8 02 00 00 add 0x2b8(%rax),%esi : coal += q_vector->lrolist.stats.coal; 0.00 : 1883: 03 88 bc 02 00 00 add 0x2bc(%rax),%ecx 0.00 : 1889: 48 83 c2 08 add $0x8,%rdx : adapter->rsc_total_count = rsc_count; : adapter->rsc_total_flush = rsc_flush; : } : : #ifndef IXGBE_NO_LRO : for (i = 0; i < adapter->num_q_vectors; i++) { 0.00 : 188d: 48 39 fa cmp %rdi,%rdx 0.00 : 1890: 75 de jne 1870 : } : adapter->lro_stats.flushed = flushed; : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 1892: 45 85 db test %r11d,%r11d : if (!q_vector) : continue; : flushed += q_vector->lrolist.stats.flushed; : coal += q_vector->lrolist.stats.coal; : } : adapter->lro_stats.flushed = flushed; 0.00 : 1895: 89 b3 f8 0b 00 00 mov %esi,0xbf8(%rbx) : adapter->lro_stats.coal = coal; 0.00 : 189b: 89 8b fc 0b 00 00 mov %ecx,0xbfc(%rbx) : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 18a1: 0f 84 6b 0f 00 00 je 2812 0.00 : 18a7: 41 8d 43 ff lea -0x1(%r11),%eax 0.00 : 18ab: 45 31 d2 xor %r10d,%r10d 0.00 : 18ae: 31 f6 xor %esi,%esi 0.00 : 18b0: 31 c9 xor %ecx,%ecx 0.00 : 18b2: 45 31 c9 xor %r9d,%r9d 0.00 : 18b5: 45 31 c0 xor %r8d,%r8d 0.00 : 18b8: 4c 8d 1c c5 08 00 00 lea 0x8(,%rax,8),%r11 0.00 : 18bf: 00 0.00 : 18c0: 31 ff xor %edi,%edi 0.00 : 18c2: 31 d2 xor %edx,%edx 0.00 : 18c4: 0f 1f 40 00 nopl 0x0(%rax) : struct ixgbe_ring *rx_ring = adapter->rx_ring[i]; 0.00 : 18c8: 48 8b 84 13 d8 04 00 mov 0x4d8(%rbx,%rdx,1),%rax 0.00 : 18cf: 00 : non_eop_descs += rx_ring->rx_stats.non_eop_descs; : alloc_rx_page_failed += rx_ring->rx_stats.alloc_rx_page_failed; : alloc_rx_buff_failed += rx_ring->rx_stats.alloc_rx_buff_failed; : hw_csum_rx_error += rx_ring->rx_stats.csum_err; : bytes += rx_ring->stats.bytes; : packets += rx_ring->stats.packets; 0.00 : 18d0: 48 83 c2 08 add $0x8,%rdx : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { : struct ixgbe_ring *rx_ring = adapter->rx_ring[i]; : non_eop_descs += rx_ring->rx_stats.non_eop_descs; 0.00 : 18d4: 4c 03 50 78 add 0x78(%rax),%r10 : alloc_rx_page_failed += rx_ring->rx_stats.alloc_rx_page_failed; 0.00 : 18d8: 48 03 b0 80 00 00 00 add 0x80(%rax),%rsi : alloc_rx_buff_failed += rx_ring->rx_stats.alloc_rx_buff_failed; 0.00 : 18df: 48 03 88 88 00 00 00 add 0x88(%rax),%rcx : hw_csum_rx_error += rx_ring->rx_stats.csum_err; 0.00 : 18e6: 48 03 b8 90 00 00 00 add 0x90(%rax),%rdi : bytes += rx_ring->stats.bytes; 0.00 : 18ed: 4c 03 48 60 add 0x60(%rax),%r9 : packets += rx_ring->stats.packets; 0.00 : 18f1: 4c 03 40 58 add 0x58(%rax),%r8 : } : adapter->lro_stats.flushed = flushed; : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 18f5: 4c 39 da cmp %r11,%rdx 0.00 : 18f8: 75 ce jne 18c8 0.00 : 18fa: 89 f2 mov %esi,%edx 0.00 : 18fc: 89 c8 mov %ecx,%eax : packets += rx_ring->stats.packets; : : } : adapter->non_eop_descs = non_eop_descs; : adapter->alloc_rx_page_failed = alloc_rx_page_failed; : adapter->alloc_rx_buff_failed = alloc_rx_buff_failed; 0.00 : 18fe: 89 83 4c 07 00 00 mov %eax,0x74c(%rbx) : hw_csum_rx_error += rx_ring->rx_stats.csum_err; : bytes += rx_ring->stats.bytes; : packets += rx_ring->stats.packets; : : } : adapter->non_eop_descs = non_eop_descs; 0.00 : 1904: 4c 89 93 40 07 00 00 mov %r10,0x740(%rbx) : adapter->alloc_rx_page_failed = alloc_rx_page_failed; 0.00 : 190b: 89 93 48 07 00 00 mov %edx,0x748(%rbx) : adapter->alloc_rx_buff_failed = alloc_rx_buff_failed; : adapter->hw_csum_rx_error = hw_csum_rx_error; 0.00 : 1911: 48 89 bb 20 07 00 00 mov %rdi,0x720(%rbx) : net_stats->rx_bytes = bytes; 0.00 : 1918: 4d 89 8f d8 00 00 00 mov %r9,0xd8(%r15) : net_stats->rx_packets = packets; 0.00 : 191f: 4d 89 87 c8 00 00 00 mov %r8,0xc8(%r15) : : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 1926: 8b 83 20 02 00 00 mov 0x220(%rbx),%eax 0.00 : 192c: 85 c0 test %eax,%eax 0.00 : 192e: 0f 84 f2 0e 00 00 je 2826 0.00 : 1934: 83 e8 01 sub $0x1,%eax 0.00 : 1937: 45 31 c0 xor %r8d,%r8d 0.00 : 193a: 31 ff xor %edi,%edi 0.00 : 193c: 4c 8d 0c c5 08 00 00 lea 0x8(,%rax,8),%r9 0.00 : 1943: 00 0.00 : 1944: 31 f6 xor %esi,%esi 0.00 : 1946: 31 c9 xor %ecx,%ecx 0.00 : 1948: 31 d2 xor %edx,%edx 0.00 : 194a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; 0.00 : 1950: 48 8b 84 13 80 02 00 mov 0x280(%rbx,%rdx,1),%rax 0.00 : 1957: 00 : restart_queue += tx_ring->tx_stats.restart_queue; : tx_busy += tx_ring->tx_stats.tx_busy; : bytes += tx_ring->stats.bytes; : packets += tx_ring->stats.packets; 0.00 : 1958: 48 83 c2 08 add $0x8,%rdx : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; : restart_queue += tx_ring->tx_stats.restart_queue; 0.00 : 195c: 4c 03 40 68 add 0x68(%rax),%r8 : tx_busy += tx_ring->tx_stats.tx_busy; 0.00 : 1960: 48 03 78 70 add 0x70(%rax),%rdi : bytes += tx_ring->stats.bytes; 0.00 : 1964: 48 03 70 60 add 0x60(%rax),%rsi : packets += tx_ring->stats.packets; 0.00 : 1968: 48 03 48 58 add 0x58(%rax),%rcx : net_stats->rx_packets = packets; : : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 196c: 4c 39 ca cmp %r9,%rdx 0.00 : 196f: 75 df jne 1950 : restart_queue += tx_ring->tx_stats.restart_queue; : tx_busy += tx_ring->tx_stats.tx_busy; : bytes += tx_ring->stats.bytes; : packets += tx_ring->stats.packets; : } : adapter->restart_queue = restart_queue; 0.00 : 1971: 4c 89 83 c0 04 00 00 mov %r8,0x4c0(%rbx) : adapter->tx_busy = tx_busy; 0.00 : 1978: 48 89 bb 08 1b 00 00 mov %rdi,0x1b08(%rbx) : net_stats->tx_bytes = bytes; 0.00 : 197f: 49 89 b7 e0 00 00 00 mov %rsi,0xe0(%r15) : net_stats->tx_packets = packets; 0.00 : 1986: 49 89 8f d0 00 00 00 mov %rcx,0xd0(%r15) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 198d: 48 8b 93 80 0e 00 00 mov 0xe80(%rbx),%rdx : : hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); 0.00 : 1994: 48 8b 83 b0 14 00 00 mov 0x14b0(%rbx),%rax 0.00 : 199b: 48 81 c2 00 40 00 00 add $0x4000,%rdx 0.00 : 19a2: 8b 12 mov (%rdx),%edx 0.00 : 19a4: 89 d2 mov %edx,%edx 0.00 : 19a6: 48 89 df mov %rbx,%rdi 0.00 : 19a9: 48 89 d9 mov %rbx,%rcx 0.00 : 19ac: 48 01 c2 add %rax,%rdx 0.00 : 19af: 45 31 f6 xor %r14d,%r14d 0.00 : 19b2: 45 31 c9 xor %r9d,%r9d 0.00 : 19b5: 48 89 93 b0 14 00 00 mov %rdx,0x14b0(%rbx) 0.00 : 19bc: be a0 3f 00 00 mov $0x3fa0,%esi 0.00 : 19c1: 41 b8 34 60 00 00 mov $0x6034,%r8d 0.00 : 19c7: eb 4a jmp 1a13 0.00 : 19c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : missed_rx += mpc; : hwstats->mpc[i] += mpc; : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { 0.00 : 19d0: 72 28 jb 19fa 0.00 : 19d2: 83 f8 03 cmp $0x3,%eax 0.00 : 19d5: 77 23 ja 19fa 0.00 : 19d7: 48 8d 96 a0 01 00 00 lea 0x1a0(%rsi),%rdx : hwstats->pxonrxc[i] += : IXGBE_READ_REG(hw, IXGBE_PXONRXC(i)); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : hwstats->pxonrxc[i] += 0.00 : 19de: 48 8b 81 90 15 00 00 mov 0x1590(%rcx),%rax 0.00 : 19e5: 48 03 93 80 0e 00 00 add 0xe80(%rbx),%rdx 0.00 : 19ec: 8b 12 mov (%rdx),%edx 0.00 : 19ee: 89 d2 mov %edx,%edx 0.00 : 19f0: 48 01 c2 add %rax,%rdx 0.00 : 19f3: 48 89 91 90 15 00 00 mov %rdx,0x1590(%rcx) 0.00 : 19fa: 48 83 c6 04 add $0x4,%rsi 0.00 : 19fe: 48 83 c1 08 add $0x8,%rcx 0.00 : 1a02: 49 83 c0 40 add $0x40,%r8 : net_stats->tx_packets = packets; : : hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); : : /* 8 register reads */ : for (i = 0; i < 8; i++) { 0.00 : 1a06: 48 81 fe c0 3f 00 00 cmp $0x3fc0,%rsi 0.00 : 1a0d: 0f 84 35 08 00 00 je 2248 0.00 : 1a13: 48 89 f0 mov %rsi,%rax 0.00 : 1a16: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a1d: 8b 00 mov (%rax),%eax : /* for packet buffers not used, the register should read 0 */ : mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); : missed_rx += mpc; ??:0 12.50 : 1a1f: 41 01 c1 add %eax,%r9d : hwstats->mpc[i] += mpc; 0.00 : 1a22: 89 c0 mov %eax,%eax 0.00 : 1a24: 48 03 81 d8 14 00 00 add 0x14d8(%rcx),%rax : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); 0.00 : 1a2b: 48 8b 91 50 15 00 00 mov 0x1550(%rcx),%rdx : /* 8 register reads */ : for (i = 0; i < 8; i++) { : /* for packet buffers not used, the register should read 0 */ : mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); : missed_rx += mpc; : hwstats->mpc[i] += mpc; 0.00 : 1a32: 48 89 81 d8 14 00 00 mov %rax,0x14d8(%rcx) : total_mpc += hwstats->mpc[i]; 0.00 : 1a39: 49 01 c6 add %rax,%r14 0.00 : 1a3c: 48 8d 86 60 ff ff ff lea -0xa0(%rsi),%rax 0.00 : 1a43: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a4a: 8b 00 mov (%rax),%eax : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); 12.50 : 1a4c: 89 c0 mov %eax,%eax 0.00 : 1a4e: 48 01 d0 add %rdx,%rax : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); 0.00 : 1a51: 48 8b 91 d0 15 00 00 mov 0x15d0(%rcx),%rdx : /* for packet buffers not used, the register should read 0 */ : mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); : missed_rx += mpc; : hwstats->mpc[i] += mpc; : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); 0.00 : 1a58: 48 89 81 50 15 00 00 mov %rax,0x1550(%rcx) 0.00 : 1a5f: 48 8d 46 80 lea -0x80(%rsi),%rax 0.00 : 1a63: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a6a: 8b 00 mov (%rax),%eax : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); 0.00 : 1a6c: 89 c0 mov %eax,%eax 0.00 : 1a6e: 48 01 d0 add %rdx,%rax 0.00 : 1a71: 48 89 81 d0 15 00 00 mov %rax,0x15d0(%rcx) : switch (hw->mac.type) { 0.00 : 1a78: 8b 83 50 10 00 00 mov 0x1050(%rbx),%eax 0.00 : 1a7e: 83 f8 01 cmp $0x1,%eax 0.00 : 1a81: 0f 85 49 ff ff ff jne 19d0 0.00 : 1a87: 48 8d 46 20 lea 0x20(%rsi),%rax : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); 0.00 : 1a8b: 48 8b 91 b0 16 00 00 mov 0x16b0(%rcx),%rdx 0.00 : 1a92: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a99: 8b 00 mov (%rax),%eax 0.00 : 1a9b: 89 c0 mov %eax,%eax 0.00 : 1a9d: 48 01 d0 add %rdx,%rax : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); 0.00 : 1aa0: 48 8b 91 08 19 00 00 mov 0x1908(%rcx),%rdx : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); 0.00 : 1aa7: 48 89 81 b0 16 00 00 mov %rax,0x16b0(%rcx) 0.00 : 1aae: 4c 89 c0 mov %r8,%rax 0.00 : 1ab1: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1ab8: 8b 00 mov (%rax),%eax : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); 0.00 : 1aba: 89 c0 mov %eax,%eax 0.00 : 1abc: 48 01 d0 add %rdx,%rax : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); 0.00 : 1abf: 48 8b 91 88 18 00 00 mov 0x1888(%rcx),%rdx : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); 0.00 : 1ac6: 48 89 81 08 19 00 00 mov %rax,0x1908(%rcx) 0.00 : 1acd: 49 8d 80 00 b0 ff ff lea -0x5000(%r8),%rax 0.00 : 1ad4: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1adb: 8b 00 mov (%rax),%eax : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); 0.00 : 1add: 89 c0 mov %eax,%eax 0.00 : 1adf: 48 01 d0 add %rdx,%rax : hwstats->pxonrxc[i] += 0.00 : 1ae2: 48 8b 91 90 15 00 00 mov 0x1590(%rcx),%rdx : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); 0.00 : 1ae9: 48 89 81 88 18 00 00 mov %rax,0x1888(%rcx) 0.00 : 1af0: 48 8d 86 60 8f 00 00 lea 0x8f60(%rsi),%rax 0.00 : 1af7: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1afe: 8b 00 mov (%rax),%eax : hwstats->pxonrxc[i] += 0.00 : 1b00: 89 c0 mov %eax,%eax 0.00 : 1b02: 48 01 d0 add %rdx,%rax 0.00 : 1b05: 48 89 81 90 15 00 00 mov %rax,0x1590(%rcx) : IXGBE_READ_REG(hw, IXGBE_PXONRXC(i)); : break; 0.00 : 1b0c: e9 e9 fe ff ff jmpq 19fa 0.00 : 1b11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : struct ixgbe_hw *hw = &adapter->hw; : struct ixgbe_hw_stats *hwstats = &adapter->stats; : int i; : u32 data; : : if ((hw->fc.current_mode != ixgbe_fc_full) && 0.00 : 1b18: 8b 83 0c 13 00 00 mov 0x130c(%rbx),%eax 0.00 : 1b1e: 83 f8 03 cmp $0x3,%eax 0.00 : 1b21: 0f 84 1c 0c 00 00 je 2743 0.00 : 1b27: 83 e8 01 sub $0x1,%eax 0.00 : 1b2a: 0f 84 13 0c 00 00 je 2743 : hwstats->gprc -= missed_rx; : : ixgbe_update_xoff_received(adapter); : : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { 0.00 : 1b30: 8b 83 50 10 00 00 mov 0x1050(%rbx),%eax 0.00 : 1b36: 83 f8 02 cmp $0x2,%eax 0.00 : 1b39: 0f 84 7a 09 00 00 je 24b9 0.00 : 1b3f: 83 f8 03 cmp $0x3,%eax 0.00 : 1b42: 0f 84 e9 08 00 00 je 2431 0.00 : 1b48: 83 e8 01 sub $0x1,%eax 0.00 : 1b4b: 0f 85 88 00 00 00 jne 1bd9 0.00 : 1b51: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); 0.00 : 1b58: 48 8b 93 38 15 00 00 mov 0x1538(%rbx),%rdx 0.00 : 1b5f: 48 05 60 cf 00 00 add $0xcf60,%rax 0.00 : 1b65: 8b 00 mov (%rax),%eax 0.00 : 1b67: 89 c0 mov %eax,%eax 0.00 : 1b69: 48 01 d0 add %rdx,%rax : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); 0.00 : 1b6c: 48 8b 93 a0 16 00 00 mov 0x16a0(%rbx),%rdx : ixgbe_update_xoff_received(adapter); : : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); 0.00 : 1b73: 48 89 83 38 15 00 00 mov %rax,0x1538(%rbx) 0.00 : 1b7a: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1b81: 48 05 8c 40 00 00 add $0x408c,%rax 0.00 : 1b87: 8b 00 mov (%rax),%eax : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); 0.00 : 1b89: 89 c0 mov %eax,%eax 0.00 : 1b8b: 48 01 d0 add %rdx,%rax : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); 0.00 : 1b8e: 48 8b 93 a8 16 00 00 mov 0x16a8(%rbx),%rdx : : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); 0.00 : 1b95: 48 89 83 a0 16 00 00 mov %rax,0x16a0(%rbx) 0.00 : 1b9c: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1ba3: 48 05 94 40 00 00 add $0x4094,%rax 0.00 : 1ba9: 8b 00 mov (%rax),%eax : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); 0.00 : 1bab: 89 c0 mov %eax,%eax 0.00 : 1bad: 48 01 d0 add %rdx,%rax : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); 0.00 : 1bb0: 48 8b 93 28 17 00 00 mov 0x1728(%rbx),%rdx : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); 0.00 : 1bb7: 48 89 83 a8 16 00 00 mov %rax,0x16a8(%rbx) 0.00 : 1bbe: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1bc5: 48 05 c4 40 00 00 add $0x40c4,%rax 0.00 : 1bcb: 8b 00 mov (%rax),%eax : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); 0.00 : 1bcd: 89 c0 mov %eax,%eax 0.00 : 1bcf: 48 01 d0 add %rdx,%rax 0.00 : 1bd2: 48 89 83 28 17 00 00 mov %rax,0x1728(%rbx) 0.00 : 1bd9: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1be0: 48 05 78 40 00 00 add $0x4078,%rax 0.00 : 1be6: 8b 00 mov (%rax),%eax : break; : default: : break; : } : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; 0.00 : 1be8: 89 c1 mov %eax,%ecx 0.00 : 1bea: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1bf1: 48 01 8b 88 16 00 00 add %rcx,0x1688(%rbx) : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); 0.00 : 1bf8: 48 8b 93 90 16 00 00 mov 0x1690(%rbx),%rdx 0.00 : 1bff: 48 05 7c 40 00 00 add $0x407c,%rax 0.00 : 1c05: 8b 00 mov (%rax),%eax 0.00 : 1c07: 89 c0 mov %eax,%eax 0.00 : 1c09: 48 01 d0 add %rdx,%rax : if (hw->mac.type == ixgbe_mac_82598EB) 0.00 : 1c0c: 83 bb 50 10 00 00 01 cmpl $0x1,0x1050(%rbx) : default: : break; : } : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); 0.00 : 1c13: 48 89 83 90 16 00 00 mov %rax,0x1690(%rbx) : if (hw->mac.type == ixgbe_mac_82598EB) 0.00 : 1c1a: 0f 84 84 0b 00 00 je 27a4 0.00 : 1c20: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); 0.00 : 1c27: 48 8b 93 00 17 00 00 mov 0x1700(%rbx),%rdx 0.00 : 1c2e: 48 05 ac 40 00 00 add $0x40ac,%rax 0.00 : 1c34: 8b 00 mov (%rax),%eax 0.00 : 1c36: 89 c0 mov %eax,%eax 0.00 : 1c38: 48 01 d0 add %rdx,%rax : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); 0.00 : 1c3b: 48 8b 93 50 16 00 00 mov 0x1650(%rbx),%rdx : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); 0.00 : 1c42: 48 89 83 00 17 00 00 mov %rax,0x1700(%rbx) 0.00 : 1c49: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1c50: 48 05 5c 40 00 00 add $0x405c,%rax 0.00 : 1c56: 8b 00 mov (%rax),%eax : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); 0.00 : 1c58: 89 c0 mov %eax,%eax 0.00 : 1c5a: 48 01 d0 add %rdx,%rax : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); 0.00 : 1c5d: 48 8b 93 58 16 00 00 mov 0x1658(%rbx),%rdx : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); 0.00 : 1c64: 48 89 83 50 16 00 00 mov %rax,0x1650(%rbx) 0.00 : 1c6b: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1c72: 48 05 60 40 00 00 add $0x4060,%rax 0.00 : 1c78: 8b 00 mov (%rax),%eax : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); 0.00 : 1c7a: 89 c0 mov %eax,%eax 0.00 : 1c7c: 48 01 d0 add %rdx,%rax : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); 0.00 : 1c7f: 48 8b 93 60 16 00 00 mov 0x1660(%rbx),%rdx : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); 0.00 : 1c86: 48 89 83 58 16 00 00 mov %rax,0x1658(%rbx) 0.00 : 1c8d: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1c94: 48 05 64 40 00 00 add $0x4064,%rax 0.00 : 1c9a: 8b 00 mov (%rax),%eax : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); 0.00 : 1c9c: 89 c0 mov %eax,%eax 0.00 : 1c9e: 48 01 d0 add %rdx,%rax : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); 0.00 : 1ca1: 48 8b 93 68 16 00 00 mov 0x1668(%rbx),%rdx : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); 0.00 : 1ca8: 48 89 83 60 16 00 00 mov %rax,0x1660(%rbx) 0.00 : 1caf: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1cb6: 48 05 68 40 00 00 add $0x4068,%rax 0.00 : 1cbc: 8b 00 mov (%rax),%eax : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); 0.00 : 1cbe: 89 c0 mov %eax,%eax 0.00 : 1cc0: 48 01 d0 add %rdx,%rax : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); 0.00 : 1cc3: 48 8b 93 70 16 00 00 mov 0x1670(%rbx),%rdx : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); 0.00 : 1cca: 48 89 83 68 16 00 00 mov %rax,0x1668(%rbx) 0.00 : 1cd1: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1cd8: 48 05 6c 40 00 00 add $0x406c,%rax 0.00 : 1cde: 8b 00 mov (%rax),%eax : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); 0.00 : 1ce0: 89 c0 mov %eax,%eax 0.00 : 1ce2: 48 01 d0 add %rdx,%rax : hwstats->prc1522 += IXGBE_READ_REG(hw, IXGBE_PRC1522); 0.00 : 1ce5: 48 8b 93 78 16 00 00 mov 0x1678(%rbx),%rdx : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); 0.00 : 1cec: 48 89 83 70 16 00 00 mov %rax,0x1670(%rbx) 0.00 : 1cf3: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1cfa: 48 05 70 40 00 00 add $0x4070,%rax 0.00 : 1d00: 8b 00 mov (%rax),%eax : hwstats->prc1522 += IXGBE_READ_REG(hw, IXGBE_PRC1522); 0.00 : 1d02: 89 c0 mov %eax,%eax 0.00 : 1d04: 48 01 d0 add %rdx,%rax : hwstats->rlec += IXGBE_READ_REG(hw, IXGBE_RLEC); 0.00 : 1d07: 48 8b 93 28 15 00 00 mov 0x1528(%rbx),%rdx : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); : hwstats->prc1522 += IXGBE_READ_REG(hw, IXGBE_PRC1522); 0.00 : 1d0e: 48 89 83 78 16 00 00 mov %rax,0x1678(%rbx) 0.00 : 1d15: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d1c: 48 05 40 40 00 00 add $0x4040,%rax 0.00 : 1d22: 8b 00 mov (%rax),%eax : hwstats->rlec += IXGBE_READ_REG(hw, IXGBE_RLEC); 0.00 : 1d24: 89 c0 mov %eax,%eax 0.00 : 1d26: 48 01 d0 add %rdx,%rax 0.00 : 1d29: 48 89 83 28 15 00 00 mov %rax,0x1528(%rbx) 0.00 : 1d30: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d37: 48 05 60 3f 00 00 add $0x3f60,%rax 0.00 : 1d3d: 8b 30 mov (%rax),%esi : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; 0.00 : 1d3f: 89 f0 mov %esi,%eax 0.00 : 1d41: 48 01 83 30 15 00 00 add %rax,0x1530(%rbx) 0.00 : 1d48: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d4f: 48 05 68 3f 00 00 add $0x3f68,%rax 0.00 : 1d55: 8b 10 mov (%rax),%edx : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; 0.00 : 1d57: 89 d0 mov %edx,%eax 0.00 : 1d59: 48 01 83 40 15 00 00 add %rax,0x1540(%rbx) 0.00 : 1d60: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); 0.00 : 1d67: 48 8b 8b 98 16 00 00 mov 0x1698(%rbx),%rcx 0.00 : 1d6e: 48 05 80 40 00 00 add $0x4080,%rax 0.00 : 1d74: 8b 00 mov (%rax),%eax 0.00 : 1d76: 89 c0 mov %eax,%eax 0.00 : 1d78: 48 01 c8 add %rcx,%rax : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1d7b: 48 8b 8b 70 17 00 00 mov 0x1770(%rbx),%rcx : hwstats->rlec += IXGBE_READ_REG(hw, IXGBE_RLEC); : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); 0.00 : 1d82: 48 89 83 98 16 00 00 mov %rax,0x1698(%rbx) 0.00 : 1d89: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d90: 48 05 f0 40 00 00 add $0x40f0,%rax 0.00 : 1d96: 8b 00 mov (%rax),%eax : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1d98: 89 c0 mov %eax,%eax : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; 0.00 : 1d9a: 01 f2 add %esi,%edx : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1d9c: 48 01 c8 add %rcx,%rax : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; 0.00 : 1d9f: 89 d1 mov %edx,%ecx : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); 0.00 : 1da1: c1 e2 06 shl $0x6,%edx : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1da4: 48 89 83 70 17 00 00 mov %rax,0x1770(%rbx) 0.00 : 1dab: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); 0.00 : 1db2: 89 d2 mov %edx,%edx : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; 0.00 : 1db4: 48 29 8b 98 16 00 00 sub %rcx,0x1698(%rbx) : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); 0.00 : 1dbb: 48 29 93 a8 16 00 00 sub %rdx,0x16a8(%rbx) : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; 0.00 : 1dc2: 48 29 8b 70 17 00 00 sub %rcx,0x1770(%rbx) : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); 0.00 : 1dc9: 48 8b 93 f0 16 00 00 mov 0x16f0(%rbx),%rdx 0.00 : 1dd0: 48 05 a4 40 00 00 add $0x40a4,%rax 0.00 : 1dd6: 8b 00 mov (%rax),%eax 0.00 : 1dd8: 89 c0 mov %eax,%eax 0.00 : 1dda: 48 01 d0 add %rdx,%rax : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); 0.00 : 1ddd: 48 8b 93 f8 16 00 00 mov 0x16f8(%rbx),%rdx : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); 0.00 : 1de4: 48 89 83 f0 16 00 00 mov %rax,0x16f0(%rbx) 0.00 : 1deb: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1df2: 48 05 a8 40 00 00 add $0x40a8,%rax 0.00 : 1df8: 8b 00 mov (%rax),%eax : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); 0.00 : 1dfa: 89 c0 mov %eax,%eax 0.00 : 1dfc: 48 01 d0 add %rdx,%rax : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); 0.00 : 1dff: 48 8b 93 08 17 00 00 mov 0x1708(%rbx),%rdx : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); 0.00 : 1e06: 48 89 83 f8 16 00 00 mov %rax,0x16f8(%rbx) 0.00 : 1e0d: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e14: 48 05 b0 40 00 00 add $0x40b0,%rax 0.00 : 1e1a: 8b 00 mov (%rax),%eax : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); 0.00 : 1e1c: 89 c0 mov %eax,%eax 0.00 : 1e1e: 48 01 d0 add %rdx,%rax : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); 0.00 : 1e21: 48 8b 93 30 17 00 00 mov 0x1730(%rbx),%rdx : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); 0.00 : 1e28: 48 89 83 08 17 00 00 mov %rax,0x1708(%rbx) 0.00 : 1e2f: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e36: 48 05 d0 40 00 00 add $0x40d0,%rax 0.00 : 1e3c: 8b 00 mov (%rax),%eax : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); 0.00 : 1e3e: 89 c0 mov %eax,%eax 0.00 : 1e40: 48 01 d0 add %rdx,%rax : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); 0.00 : 1e43: 48 8b 93 40 17 00 00 mov 0x1740(%rbx),%rdx : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); 0.00 : 1e4a: 48 89 83 30 17 00 00 mov %rax,0x1730(%rbx) 0.00 : 1e51: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e58: 48 05 d8 40 00 00 add $0x40d8,%rax 0.00 : 1e5e: 8b 00 mov (%rax),%eax : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; 0.00 : 1e60: 89 c0 mov %eax,%eax 0.00 : 1e62: 48 01 d0 add %rdx,%rax : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); 0.00 : 1e65: 48 8b 93 48 17 00 00 mov 0x1748(%rbx),%rdx : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; 0.00 : 1e6c: 48 29 c8 sub %rcx,%rax 0.00 : 1e6f: 48 89 83 40 17 00 00 mov %rax,0x1740(%rbx) 0.00 : 1e76: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e7d: 48 05 dc 40 00 00 add $0x40dc,%rax 0.00 : 1e83: 8b 00 mov (%rax),%eax : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); 0.00 : 1e85: 89 c0 mov %eax,%eax 0.00 : 1e87: 48 01 d0 add %rdx,%rax : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); 0.00 : 1e8a: 48 8b 93 50 17 00 00 mov 0x1750(%rbx),%rdx : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); 0.00 : 1e91: 48 89 83 48 17 00 00 mov %rax,0x1748(%rbx) 0.00 : 1e98: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e9f: 48 05 e0 40 00 00 add $0x40e0,%rax 0.00 : 1ea5: 8b 00 mov (%rax),%eax : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); 0.00 : 1ea7: 89 c0 mov %eax,%eax 0.00 : 1ea9: 48 01 d0 add %rdx,%rax : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); 0.00 : 1eac: 48 8b 93 58 17 00 00 mov 0x1758(%rbx),%rdx : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); 0.00 : 1eb3: 48 89 83 50 17 00 00 mov %rax,0x1750(%rbx) 0.00 : 1eba: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1ec1: 48 05 e4 40 00 00 add $0x40e4,%rax 0.00 : 1ec7: 8b 00 mov (%rax),%eax : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); 0.00 : 1ec9: 89 c0 mov %eax,%eax 0.00 : 1ecb: 48 01 d0 add %rdx,%rax : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); 0.00 : 1ece: 48 8b 93 60 17 00 00 mov 0x1760(%rbx),%rdx : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); 0.00 : 1ed5: 48 89 83 58 17 00 00 mov %rax,0x1758(%rbx) 0.00 : 1edc: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1ee3: 48 05 e8 40 00 00 add $0x40e8,%rax 0.00 : 1ee9: 8b 00 mov (%rax),%eax : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); 12.50 : 1eeb: 89 c0 mov %eax,%eax 0.00 : 1eed: 48 01 d0 add %rdx,%rax : hwstats->ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522); 0.00 : 1ef0: 48 8b 93 68 17 00 00 mov 0x1768(%rbx),%rdx : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); 0.00 : 1ef7: 48 89 83 60 17 00 00 mov %rax,0x1760(%rbx) 0.00 : 1efe: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1f05: 48 05 ec 40 00 00 add $0x40ec,%rax 0.00 : 1f0b: 8b 00 mov (%rax),%eax : hwstats->ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522); 0.00 : 1f0d: 89 c0 mov %eax,%eax 0.00 : 1f0f: 48 01 d0 add %rdx,%rax : hwstats->bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); 0.00 : 1f12: 48 8b 93 78 17 00 00 mov 0x1778(%rbx),%rdx : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); : hwstats->ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522); 0.00 : 1f19: 48 89 83 68 17 00 00 mov %rax,0x1768(%rbx) 0.00 : 1f20: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1f27: 48 05 f4 40 00 00 add $0x40f4,%rax 0.00 : 1f2d: 8b 00 mov (%rax),%eax : hwstats->bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); 0.00 : 1f2f: 89 c0 mov %eax,%eax 0.00 : 1f31: 48 01 d0 add %rdx,%rax 0.00 : 1f34: 48 89 83 78 17 00 00 mov %rax,0x1778(%rbx) : /* Fill out the OS statistics structure */ : net_stats->multicast = hwstats->mprc; 0.00 : 1f3b: 48 8b 83 90 16 00 00 mov 0x1690(%rbx),%rax 0.00 : 1f42: 49 89 87 08 01 00 00 mov %rax,0x108(%r15) : : /* Rx Errors */ : net_stats->rx_errors = hwstats->crcerrs + 0.00 : 1f49: 48 8b 83 28 15 00 00 mov 0x1528(%rbx),%rax 0.00 : 1f50: 48 03 83 b0 14 00 00 add 0x14b0(%rbx),%rax : hwstats->rlec; : net_stats->rx_dropped = 0; 0.00 : 1f57: 49 c7 87 f8 00 00 00 movq $0x0,0xf8(%r15) 0.00 : 1f5e: 00 00 00 00 : hwstats->bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); : /* Fill out the OS statistics structure */ : net_stats->multicast = hwstats->mprc; : : /* Rx Errors */ : net_stats->rx_errors = hwstats->crcerrs + 0.00 : 1f62: 49 89 87 e8 00 00 00 mov %rax,0xe8(%r15) : hwstats->rlec; : net_stats->rx_dropped = 0; : net_stats->rx_length_errors = hwstats->rlec; 0.00 : 1f69: 48 8b 83 28 15 00 00 mov 0x1528(%rbx),%rax 0.00 : 1f70: 49 89 87 18 01 00 00 mov %rax,0x118(%r15) : net_stats->rx_crc_errors = hwstats->crcerrs; 0.00 : 1f77: 48 8b 83 b0 14 00 00 mov 0x14b0(%rbx),%rax : net_stats->rx_missed_errors = total_mpc; 0.00 : 1f7e: 4d 89 b7 40 01 00 00 mov %r14,0x140(%r15) : /* Rx Errors */ : net_stats->rx_errors = hwstats->crcerrs + : hwstats->rlec; : net_stats->rx_dropped = 0; : net_stats->rx_length_errors = hwstats->rlec; : net_stats->rx_crc_errors = hwstats->crcerrs; 0.00 : 1f85: 49 89 87 28 01 00 00 mov %rax,0x128(%r15) 0.00 : 1f8c: 48 8b 83 10 02 00 00 mov 0x210(%rbx),%rax : /* : * VF Stats Collection - skip while resetting because these : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { 0.00 : 1f93: a8 02 test $0x2,%al 0.00 : 1f95: 0f 85 45 02 00 00 jne 21e0 : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 1f9b: 8b 83 58 7c 00 00 mov 0x7c58(%rbx),%eax 0.00 : 1fa1: 85 c0 test %eax,%eax 0.00 : 1fa3: 0f 84 37 02 00 00 je 21e0 0.00 : 1fa9: 45 31 c9 xor %r9d,%r9d 0.00 : 1fac: bf 1c 10 00 00 mov $0x101c,%edi 0.00 : 1fb1: 41 b8 00 84 00 00 mov $0x8400,%r8d 0.00 : 1fb7: 41 ba 00 83 00 00 mov $0x8300,%r10d : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPRC(i), \ 0.00 : 1fbd: 48 bd 00 00 00 00 01 movabs $0x100000000,%rbp 0.00 : 1fc4: 00 00 00 0.00 : 1fc7: 49 bb 00 00 00 00 ff movabs $0xffffffff00000000,%r11 0.00 : 1fce: ff ff ff : adapter->vfinfo[i].last_vfstats.gprc, \ : adapter->vfinfo[i].vfstats.gprc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPTC(i), \ : adapter->vfinfo[i].last_vfstats.gptc, \ : adapter->vfinfo[i].vfstats.gptc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGORC_LSB(i), \ 0.00 : 1fd1: 49 bd 00 00 00 00 10 movabs $0x1000000000,%r13 0.00 : 1fd8: 00 00 00 0.00 : 1fdb: 49 bc 00 00 00 00 f0 movabs $0xfffffff000000000,%r12 0.00 : 1fe2: ff ff ff 0.00 : 1fe5: 0f 1f 00 nopl (%rax) 0.00 : 1fe8: 89 f8 mov %edi,%eax 0.00 : 1fea: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1ff1: 8b 00 mov (%rax),%eax : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { : for (i = 0; i < adapter->num_vfs; i++) { : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPRC(i), \ 0.00 : 1ff3: 89 c2 mov %eax,%edx 0.00 : 1ff5: 44 89 c8 mov %r9d,%eax 0.00 : 1ff8: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 1ffc: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 2000: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 2007: 00 0.00 : 2008: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 200f: 48 01 c8 add %rcx,%rax 0.00 : 2012: 48 3b 50 78 cmp 0x78(%rax),%rdx 0.00 : 2016: 73 0e jae 2026 0.00 : 2018: 48 01 68 50 add %rbp,0x50(%rax) 0.00 : 201c: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2023: 48 01 c8 add %rcx,%rax 0.00 : 2026: 48 89 50 78 mov %rdx,0x78(%rax) 0.00 : 202a: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2031: 48 01 c8 add %rcx,%rax 0.00 : 2034: 4c 21 58 50 and %r11,0x50(%rax) 0.00 : 2038: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 203f: 48 01 c8 add %rcx,%rax 0.00 : 2042: 48 09 50 50 or %rdx,0x50(%rax) 0.00 : 2046: 44 89 d0 mov %r10d,%eax 0.00 : 2049: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2050: 8b 00 mov (%rax),%eax : adapter->vfinfo[i].last_vfstats.gprc, \ : adapter->vfinfo[i].vfstats.gprc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPTC(i), \ 0.00 : 2052: 89 c2 mov %eax,%edx 0.00 : 2054: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 205b: 48 01 c8 add %rcx,%rax 0.00 : 205e: 48 3b 90 88 00 00 00 cmp 0x88(%rax),%rdx 0.00 : 2065: 73 0e jae 2075 0.00 : 2067: 48 01 68 60 add %rbp,0x60(%rax) 0.00 : 206b: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2072: 48 01 c8 add %rcx,%rax 0.00 : 2075: 48 89 90 88 00 00 00 mov %rdx,0x88(%rax) 0.00 : 207c: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2083: 48 01 c8 add %rcx,%rax 0.00 : 2086: 4c 21 58 60 and %r11,0x60(%rax) 0.00 : 208a: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2091: 48 01 c8 add %rcx,%rax 0.00 : 2094: 48 09 50 60 or %rdx,0x60(%rax) 0.00 : 2098: 8d 47 04 lea 0x4(%rdi),%eax 0.00 : 209b: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 20a2: 8b 10 mov (%rax),%edx 0.00 : 20a4: 8d 87 04 c0 00 00 lea 0xc004(%rdi),%eax 0.00 : 20aa: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 20b1: 8b 00 mov (%rax),%eax : adapter->vfinfo[i].last_vfstats.gptc, \ : adapter->vfinfo[i].vfstats.gptc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGORC_LSB(i), \ 0.00 : 20b3: 48 89 c6 mov %rax,%rsi 0.00 : 20b6: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20bd: 89 d2 mov %edx,%edx 0.00 : 20bf: 48 c1 e6 20 shl $0x20,%rsi 0.00 : 20c3: 48 09 d6 or %rdx,%rsi 0.00 : 20c6: 48 01 c8 add %rcx,%rax 0.00 : 20c9: 48 3b b0 80 00 00 00 cmp 0x80(%rax),%rsi 0.00 : 20d0: 73 0e jae 20e0 0.00 : 20d2: 4c 01 68 58 add %r13,0x58(%rax) 0.00 : 20d6: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20dd: 48 01 c8 add %rcx,%rax 0.00 : 20e0: 48 89 b0 80 00 00 00 mov %rsi,0x80(%rax) 0.00 : 20e7: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20ee: 48 01 c8 add %rcx,%rax 0.00 : 20f1: 4c 21 60 58 and %r12,0x58(%rax) 0.00 : 20f5: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20fc: 48 01 c8 add %rcx,%rax 0.00 : 20ff: 48 09 70 58 or %rsi,0x58(%rax) 0.00 : 2103: 44 89 c0 mov %r8d,%eax 0.00 : 2106: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 210d: 8b 10 mov (%rax),%edx 0.00 : 210f: 41 8d 40 04 lea 0x4(%r8),%eax 0.00 : 2113: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 211a: 8b 00 mov (%rax),%eax : IXGBE_PVFGORC_MSB(i), \ : adapter->vfinfo[i].last_vfstats.gorc, \ : adapter->vfinfo[i].vfstats.gorc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGOTC_LSB(i), \ 0.00 : 211c: 48 89 c6 mov %rax,%rsi 0.00 : 211f: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2126: 89 d2 mov %edx,%edx 0.00 : 2128: 48 c1 e6 20 shl $0x20,%rsi 0.00 : 212c: 48 09 d6 or %rdx,%rsi 0.00 : 212f: 48 01 c8 add %rcx,%rax 0.00 : 2132: 48 3b b0 90 00 00 00 cmp 0x90(%rax),%rsi 0.00 : 2139: 73 0e jae 2149 0.00 : 213b: 4c 01 68 68 add %r13,0x68(%rax) 0.00 : 213f: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2146: 48 01 c8 add %rcx,%rax 0.00 : 2149: 48 89 b0 90 00 00 00 mov %rsi,0x90(%rax) 0.00 : 2150: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2157: 48 01 c8 add %rcx,%rax 0.00 : 215a: 4c 21 60 68 and %r12,0x68(%rax) 0.00 : 215e: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2165: 48 01 c8 add %rcx,%rax 0.00 : 2168: 48 09 70 68 or %rsi,0x68(%rax) 0.00 : 216c: 8d 87 00 c0 00 00 lea 0xc000(%rdi),%eax 0.00 : 2172: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2179: 8b 00 mov (%rax),%eax : IXGBE_PVFGOTC_MSB(i), \ : adapter->vfinfo[i].last_vfstats.gotc, \ : adapter->vfinfo[i].vfstats.gotc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFMPRC(i), \ 0.00 : 217b: 89 c2 mov %eax,%edx 0.00 : 217d: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2184: 48 01 c8 add %rcx,%rax 0.00 : 2187: 48 3b 90 98 00 00 00 cmp 0x98(%rax),%rdx 0.00 : 218e: 73 0e jae 219e 0.00 : 2190: 48 01 68 70 add %rbp,0x70(%rax) 0.00 : 2194: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 219b: 48 01 c8 add %rcx,%rax 0.00 : 219e: 48 89 90 98 00 00 00 mov %rdx,0x98(%rax) 0.00 : 21a5: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax : * VF Stats Collection - skip while resetting because these : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 21ac: 41 83 c1 01 add $0x1,%r9d 0.00 : 21b0: 83 c7 40 add $0x40,%edi 0.00 : 21b3: 41 83 c0 08 add $0x8,%r8d 0.00 : 21b7: 41 83 c2 04 add $0x4,%r10d : adapter->vfinfo[i].vfstats.gorc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGOTC_LSB(i), \ : IXGBE_PVFGOTC_MSB(i), \ : adapter->vfinfo[i].last_vfstats.gotc, \ : adapter->vfinfo[i].vfstats.gotc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFMPRC(i), \ 0.00 : 21bb: 48 01 c8 add %rcx,%rax 0.00 : 21be: 4c 21 58 70 and %r11,0x70(%rax) 0.00 : 21c2: 48 89 c8 mov %rcx,%rax 0.00 : 21c5: 48 03 83 60 7c 00 00 add 0x7c60(%rbx),%rax 0.00 : 21cc: 48 09 50 70 or %rdx,0x70(%rax) : * VF Stats Collection - skip while resetting because these : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 21d0: 44 39 8b 58 7c 00 00 cmp %r9d,0x7c58(%rbx) 0.00 : 21d7: 0f 87 0b fe ff ff ja 1fe8 0.00 : 21dd: 0f 1f 00 nopl (%rax) : UPDATE_VF_COUNTER_32bit(IXGBE_PVFMPRC(i), \ : adapter->vfinfo[i].last_vfstats.mprc, \ : adapter->vfinfo[i].vfstats.mprc); : } : } : } 0.00 : 21e0: 48 83 c4 28 add $0x28,%rsp 0.00 : 21e4: 5b pop %rbx 0.00 : 21e5: 5d pop %rbp 0.00 : 21e6: 41 5c pop %r12 0.00 : 21e8: 41 5d pop %r13 0.00 : 21ea: 41 5e pop %r14 0.00 : 21ec: 41 5f pop %r15 0.00 : 21ee: c3 retq : return; : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { : u64 rsc_count = 0; : u64 rsc_flush = 0; : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 21ef: 44 8b 9f 28 02 00 00 mov 0x228(%rdi),%r11d 0.00 : 21f6: 31 f6 xor %esi,%esi 0.00 : 21f8: 31 c9 xor %ecx,%ecx 0.00 : 21fa: 45 85 db test %r11d,%r11d 0.00 : 21fd: 74 32 je 2231 0.00 : 21ff: 41 8d 43 ff lea -0x1(%r11),%eax 0.00 : 2203: 31 f6 xor %esi,%esi 0.00 : 2205: 31 c9 xor %ecx,%ecx 0.00 : 2207: 31 d2 xor %edx,%edx 0.00 : 2209: 48 8d 3c c5 08 00 00 lea 0x8(,%rax,8),%rdi 0.00 : 2210: 00 0.00 : 2211: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : rsc_count += adapter->rx_ring[i]->rx_stats.rsc_count; 0.00 : 2218: 48 8b 84 13 d8 04 00 mov 0x4d8(%rbx,%rdx,1),%rax 0.00 : 221f: 00 : rsc_flush += adapter->rx_ring[i]->rx_stats.rsc_flush; 0.00 : 2220: 48 83 c2 08 add $0x8,%rdx : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { : u64 rsc_count = 0; : u64 rsc_flush = 0; : for (i = 0; i < adapter->num_rx_queues; i++) { : rsc_count += adapter->rx_ring[i]->rx_stats.rsc_count; 0.00 : 2224: 48 03 70 68 add 0x68(%rax),%rsi : rsc_flush += adapter->rx_ring[i]->rx_stats.rsc_flush; 0.00 : 2228: 48 03 48 70 add 0x70(%rax),%rcx : return; : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { : u64 rsc_count = 0; : u64 rsc_flush = 0; : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 222c: 48 39 fa cmp %rdi,%rdx 0.00 : 222f: 75 e7 jne 2218 : rsc_count += adapter->rx_ring[i]->rx_stats.rsc_count; : rsc_flush += adapter->rx_ring[i]->rx_stats.rsc_flush; : } : adapter->rsc_total_count = rsc_count; 0.00 : 2231: 48 89 b3 30 07 00 00 mov %rsi,0x730(%rbx) : adapter->rsc_total_flush = rsc_flush; 0.00 : 2238: 48 89 8b 38 07 00 00 mov %rcx,0x738(%rbx) 0.00 : 223f: e9 06 f6 ff ff jmpq 184a 0.00 : 2244: 0f 1f 40 00 nopl 0x0(%rax) : net_stats->tx_packets = packets; : : hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); : : /* 8 register reads */ : for (i = 0; i < 8; i++) { 0.00 : 2248: 66 be 30 60 mov $0x6030,%si 0.00 : 224c: b9 00 87 00 00 mov $0x8700,%ecx 0.00 : 2251: eb 1a jmp 226d 0.00 : 2253: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2258: 48 83 c6 40 add $0x40,%rsi 0.00 : 225c: 48 83 c1 08 add $0x8,%rcx : break; : } : } : : /*16 register reads */ : for (i = 0; i < 16; i++) { 0.00 : 2260: 48 81 fe 30 64 00 00 cmp $0x6430,%rsi 0.00 : 2267: 0f 84 c3 00 00 00 je 2330 0.00 : 226d: 48 89 f0 mov %rsi,%rax : hwstats->qptc[i] += IXGBE_READ_REG(hw, IXGBE_QPTC(i)); 0.00 : 2270: 48 8b 94 0b 08 91 ff mov -0x6ef8(%rbx,%rcx,1),%rdx 0.00 : 2277: ff 0.00 : 2278: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 227f: 8b 00 mov (%rax),%eax 0.00 : 2281: 89 c0 mov %eax,%eax 0.00 : 2283: 48 01 d0 add %rdx,%rax : hwstats->qprc[i] += IXGBE_READ_REG(hw, IXGBE_QPRC(i)); 0.00 : 2286: 48 8b 94 0b 88 90 ff mov -0x6f78(%rbx,%rcx,1),%rdx 0.00 : 228d: ff : } : } : : /*16 register reads */ : for (i = 0; i < 16; i++) { : hwstats->qptc[i] += IXGBE_READ_REG(hw, IXGBE_QPTC(i)); 0.00 : 228e: 48 89 84 0b 08 91 ff mov %rax,-0x6ef8(%rbx,%rcx,1) 0.00 : 2295: ff 0.00 : 2296: 48 8d 86 00 b0 ff ff lea -0x5000(%rsi),%rax 0.00 : 229d: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 22a4: 8b 00 mov (%rax),%eax : hwstats->qprc[i] += IXGBE_READ_REG(hw, IXGBE_QPRC(i)); 12.50 : 22a6: 89 c0 mov %eax,%eax 0.00 : 22a8: 48 01 d0 add %rdx,%rax 0.00 : 22ab: 48 89 84 0b 88 90 ff mov %rax,-0x6f78(%rbx,%rcx,1) 0.00 : 22b2: ff : if ((hw->mac.type == ixgbe_mac_82599EB) || 0.00 : 22b3: 8b 83 50 10 00 00 mov 0x1050(%rbx),%eax 0.00 : 22b9: 83 e8 02 sub $0x2,%eax 0.00 : 22bc: 83 f8 01 cmp $0x1,%eax 0.00 : 22bf: 77 97 ja 2258 0.00 : 22c1: 48 89 c8 mov %rcx,%rax : (hw->mac.type == ixgbe_mac_X540)) { : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC_L(i)); 0.00 : 22c4: 48 8b 94 0b 08 92 ff mov -0x6df8(%rbx,%rcx,1),%rdx 0.00 : 22cb: ff 0.00 : 22cc: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 22d3: 8b 00 mov (%rax),%eax 12.50 : 22d5: 89 c0 mov %eax,%eax 0.00 : 22d7: 48 01 d0 add %rdx,%rax 0.00 : 22da: 48 89 84 0b 08 92 ff mov %rax,-0x6df8(%rbx,%rcx,1) 0.00 : 22e1: ff 0.00 : 22e2: 48 8d 41 04 lea 0x4(%rcx),%rax 0.00 : 22e6: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 22ed: 8b 00 mov (%rax),%eax 25.00 : 22ef: 48 8d 86 04 b0 ff ff lea -0x4ffc(%rsi),%rax : IXGBE_READ_REG(hw, IXGBE_QBTC_H(i)); /* to clear */ : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC_L(i)); 0.00 : 22f6: 48 8b 94 0b 88 91 ff mov -0x6e78(%rbx,%rcx,1),%rdx 0.00 : 22fd: ff 0.00 : 22fe: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2305: 8b 00 mov (%rax),%eax 12.50 : 2307: 89 c0 mov %eax,%eax 0.00 : 2309: 48 01 d0 add %rdx,%rax 0.00 : 230c: 48 89 84 0b 88 91 ff mov %rax,-0x6e78(%rbx,%rcx,1) 0.00 : 2313: ff 0.00 : 2314: 48 8d 86 08 b0 ff ff lea -0x4ff8(%rsi),%rax 0.00 : 231b: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2322: 8b 00 mov (%rax),%eax 0.00 : 2324: e9 2f ff ff ff jmpq 2258 0.00 : 2329: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2330: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_QBRC_H(i)); /* to clear */ : } : } : : hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); 0.00 : 2337: 48 8b 8b 80 16 00 00 mov 0x1680(%rbx),%rcx 0.00 : 233e: 48 05 74 40 00 00 add $0x4074,%rax 0.00 : 2344: 8b 00 mov (%rax),%eax : /* work around hardware counting issue */ : hwstats->gprc -= missed_rx; 0.00 : 2346: 44 89 ca mov %r9d,%edx 0.00 : 2349: 89 c0 mov %eax,%eax 0.00 : 234b: 48 29 d1 sub %rdx,%rcx : { : struct ixgbe_hw *hw = &adapter->hw; : struct ixgbe_hw_stats *hwstats = &adapter->stats; : u32 xoff[8] = {0}; : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; 0.00 : 234e: 0f b6 93 7a 0a 00 00 movzbl 0xa7a(%rbx),%edx : } : } : : hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); : /* work around hardware counting issue */ : hwstats->gprc -= missed_rx; 0.00 : 2355: 48 01 c1 add %rax,%rcx : u32 xoff[8] = {0}; : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 2358: 48 8b 83 50 09 00 00 mov 0x950(%rbx),%rax : } : } : : hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); : /* work around hardware counting issue */ : hwstats->gprc -= missed_rx; 0.00 : 235f: 48 89 8b 80 16 00 00 mov %rcx,0x1680(%rbx) : u32 xoff[8] = {0}; : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 2366: 48 85 c0 test %rax,%rax 0.00 : 2369: 74 12 je 237d : pfc_en |= !!(adapter->ixgbe_ieee_pfc->pfc_en); 0.00 : 236b: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 236f: 0f b6 d2 movzbl %dl,%edx 0.00 : 2372: 0f 95 c0 setne %al 0.00 : 2375: 0f b6 c0 movzbl %al,%eax 0.00 : 2378: 09 d0 or %edx,%eax 0.00 : 237a: 0f 95 c2 setne %dl : : #endif : if (!(adapter->flags & IXGBE_FLAG_DCB_ENABLED) || !pfc_en) { 0.00 : 237d: f6 83 19 02 00 00 04 testb $0x4,0x219(%rbx) 0.00 : 2384: 0f 84 8e f7 ff ff je 1b18 0.00 : 238a: 84 d2 test %dl,%dl 0.00 : 238c: 0f 84 86 f7 ff ff je 1b18 : : static void ixgbe_update_xoff_received(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : struct ixgbe_hw_stats *hwstats = &adapter->stats; : u32 xoff[8] = {0}; 0.00 : 2392: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 2399: 00 0.00 : 239a: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 23a1: 00 00 0.00 : 23a3: 31 c9 xor %ecx,%ecx 0.00 : 23a5: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 23ac: 00 00 0.00 : 23ae: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 23b5: 00 00 0.00 : 23b7: ba 20 cf 00 00 mov $0xcf20,%edx 0.00 : 23bc: 48 89 e6 mov %rsp,%rsi 0.00 : 23bf: eb 52 jmp 2413 0.00 : 23c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 23c8: 48 8d 82 40 72 ff ff lea -0x8dc0(%rdx),%rax 0.00 : 23cf: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 23d6: 8b 00 mov (%rax),%eax : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i)); : break; : default: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i)); 0.00 : 23d8: 89 84 16 e0 30 ff ff mov %eax,-0xcf20(%rsi,%rdx,1) : } : hwstats->pxoffrxc[i] += xoff[i]; 0.00 : 23df: 8b 84 16 e0 30 ff ff mov -0xcf20(%rsi,%rdx,1),%eax : ixgbe_update_xoff_rx_lfc(adapter); : return; : } : : /* update stats for each tc, only valid with PFC enabled */ : for (i = 0; i < MAX_TX_PACKET_BUFFERS; i++) { 0.00 : 23e6: 83 c1 01 add $0x1,%ecx : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i)); : break; : default: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i)); : } : hwstats->pxoffrxc[i] += xoff[i]; 0.00 : 23e9: 48 01 84 53 d0 77 fe add %rax,-0x18830(%rbx,%rdx,2) 0.00 : 23f0: ff : ixgbe_update_xoff_rx_lfc(adapter); : return; : } : : /* update stats for each tc, only valid with PFC enabled */ : for (i = 0; i < MAX_TX_PACKET_BUFFERS; i++) { 0.00 : 23f1: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 23f7: 25 00 04 00 00 and $0x400,%eax 0.00 : 23fc: 83 f8 01 cmp $0x1,%eax 0.00 : 23ff: 19 c0 sbb %eax,%eax 0.00 : 2401: 48 83 c2 04 add $0x4,%rdx 0.00 : 2405: 83 e0 f9 and $0xfffffff9,%eax 0.00 : 2408: 83 c0 08 add $0x8,%eax 0.00 : 240b: 39 c8 cmp %ecx,%eax 0.00 : 240d: 0f 8e a0 03 00 00 jle 27b3 : switch (hw->mac.type) { 0.00 : 2413: 83 bb 50 10 00 00 01 cmpl $0x1,0x1050(%rbx) 0.00 : 241a: 75 ac jne 23c8 0.00 : 241c: 48 89 d0 mov %rdx,%rax 0.00 : 241f: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2426: 8b 00 mov (%rax),%eax : case ixgbe_mac_82598EB: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i)); 0.00 : 2428: 89 84 16 e0 30 ff ff mov %eax,-0xcf20(%rsi,%rdx,1) 0.00 : 242f: eb ae jmp 23df 0.00 : 2431: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); 0.00 : 2438: 48 8b 93 e0 1a 00 00 mov 0x1ae0(%rbx),%rdx 0.00 : 243f: 48 05 c4 41 00 00 add $0x41c4,%rax 0.00 : 2445: 8b 00 mov (%rax),%eax 0.00 : 2447: 89 c0 mov %eax,%eax 0.00 : 2449: 48 01 d0 add %rdx,%rax : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); 0.00 : 244c: 48 8b 93 e8 1a 00 00 mov 0x1ae8(%rbx),%rdx : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); 0.00 : 2453: 48 89 83 e0 1a 00 00 mov %rax,0x1ae0(%rbx) 0.00 : 245a: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2461: 48 05 b0 87 00 00 add $0x87b0,%rax 0.00 : 2467: 8b 00 mov (%rax),%eax : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); 0.00 : 2469: 89 c0 mov %eax,%eax 0.00 : 246b: 48 01 d0 add %rdx,%rax : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); 0.00 : 246e: 48 8b 93 d0 1a 00 00 mov 0x1ad0(%rbx),%rdx : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); 0.00 : 2475: 48 89 83 e8 1a 00 00 mov %rax,0x1ae8(%rbx) 0.00 : 247c: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2483: 48 05 c0 41 00 00 add $0x41c0,%rax 0.00 : 2489: 8b 00 mov (%rax),%eax : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); 0.00 : 248b: 89 c0 mov %eax,%eax 0.00 : 248d: 48 01 d0 add %rdx,%rax : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); 0.00 : 2490: 48 8b 93 d8 1a 00 00 mov 0x1ad8(%rbx),%rdx : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); 0.00 : 2497: 48 89 83 d0 1a 00 00 mov %rax,0x1ad0(%rbx) 0.00 : 249e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 24a5: 48 05 90 2f 00 00 add $0x2f90,%rax 0.00 : 24ab: 8b 00 mov (%rax),%eax : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); 0.00 : 24ad: 89 c0 mov %eax,%eax 0.00 : 24af: 48 01 d0 add %rdx,%rax 0.00 : 24b2: 48 89 83 d8 1a 00 00 mov %rax,0x1ad8(%rbx) 0.00 : 24b9: b9 30 14 00 00 mov $0x1430,%ecx 0.00 : 24be: 66 90 xchg %ax,%ax 0.00 : 24c0: 48 89 c8 mov %rcx,%rax : case ixgbe_mac_82599EB: : for (i = 0; i < 16; i++) : adapter->hw_rx_no_dma_resources += 0.00 : 24c3: 48 8b 93 28 07 00 00 mov 0x728(%rbx),%rdx 0.00 : 24ca: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 24d1: 8b 00 mov (%rax),%eax 0.00 : 24d3: 89 c0 mov %eax,%eax 0.00 : 24d5: 48 83 c1 40 add $0x40,%rcx 0.00 : 24d9: 48 01 d0 add %rdx,%rax : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); : case ixgbe_mac_82599EB: : for (i = 0; i < 16; i++) 0.00 : 24dc: 48 81 f9 30 18 00 00 cmp $0x1830,%rcx : adapter->hw_rx_no_dma_resources += 0.00 : 24e3: 48 89 83 28 07 00 00 mov %rax,0x728(%rbx) : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); : case ixgbe_mac_82599EB: : for (i = 0; i < 16; i++) 0.00 : 24ea: 75 d4 jne 24c0 0.00 : 24ec: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : adapter->hw_rx_no_dma_resources += : IXGBE_READ_REG(hw, IXGBE_QPRDC(i)); : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCL); 0.00 : 24f3: 48 8b 93 a0 16 00 00 mov 0x16a0(%rbx),%rdx 0.00 : 24fa: 48 05 88 40 00 00 add $0x4088,%rax 0.00 : 2500: 8b 00 mov (%rax),%eax 0.00 : 2502: 89 c0 mov %eax,%eax 0.00 : 2504: 48 01 d0 add %rdx,%rax 0.00 : 2507: 48 89 83 a0 16 00 00 mov %rax,0x16a0(%rbx) 0.00 : 250e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2515: 48 05 8c 40 00 00 add $0x408c,%rax 0.00 : 251b: 8b 00 mov (%rax),%eax 0.00 : 251d: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_GORCH); /* to clear */ : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCL); 0.00 : 2524: 48 8b 93 a8 16 00 00 mov 0x16a8(%rbx),%rdx 0.00 : 252b: 48 05 90 40 00 00 add $0x4090,%rax 0.00 : 2531: 8b 00 mov (%rax),%eax 0.00 : 2533: 89 c0 mov %eax,%eax 0.00 : 2535: 48 01 d0 add %rdx,%rax 0.00 : 2538: 48 89 83 a8 16 00 00 mov %rax,0x16a8(%rbx) 0.00 : 253f: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2546: 48 05 94 40 00 00 add $0x4094,%rax 0.00 : 254c: 8b 00 mov (%rax),%eax 0.00 : 254e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_GOTCH); /* to clear */ : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); 0.00 : 2555: 48 8b 93 28 17 00 00 mov 0x1728(%rbx),%rdx 0.00 : 255c: 48 05 c0 40 00 00 add $0x40c0,%rax 0.00 : 2562: 8b 00 mov (%rax),%eax 0.00 : 2564: 89 c0 mov %eax,%eax 0.00 : 2566: 48 01 d0 add %rdx,%rax 0.00 : 2569: 48 89 83 28 17 00 00 mov %rax,0x1728(%rbx) 0.00 : 2570: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2577: 48 05 c4 40 00 00 add $0x40c4,%rax 0.00 : 257d: 8b 00 mov (%rax),%eax 0.00 : 257f: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); 0.00 : 2586: 48 8b 93 38 15 00 00 mov 0x1538(%rbx),%rdx 0.00 : 258d: 48 05 a4 41 00 00 add $0x41a4,%rax 0.00 : 2593: 8b 00 mov (%rax),%eax 0.00 : 2595: 89 c0 mov %eax,%eax 0.00 : 2597: 48 01 d0 add %rdx,%rax : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); 0.00 : 259a: 48 8b 93 68 1a 00 00 mov 0x1a68(%rbx),%rdx : IXGBE_READ_REG(hw, IXGBE_GORCH); /* to clear */ : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCL); : IXGBE_READ_REG(hw, IXGBE_GOTCH); /* to clear */ : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); 0.00 : 25a1: 48 89 83 38 15 00 00 mov %rax,0x1538(%rbx) 0.00 : 25a8: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 25af: 48 05 58 ee 00 00 add $0xee58,%rax 0.00 : 25b5: 8b 00 mov (%rax),%eax : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); 0.00 : 25b7: 89 c0 mov %eax,%eax 0.00 : 25b9: 48 01 d0 add %rdx,%rax : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); 0.00 : 25bc: 48 8b 93 70 1a 00 00 mov 0x1a70(%rbx),%rdx : IXGBE_READ_REG(hw, IXGBE_GOTCH); /* to clear */ : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); 0.00 : 25c3: 48 89 83 68 1a 00 00 mov %rax,0x1a68(%rbx) 0.00 : 25ca: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 25d1: 48 05 5c ee 00 00 add $0xee5c,%rax 0.00 : 25d7: 8b 00 mov (%rax),%eax : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); 0.00 : 25d9: 89 c0 mov %eax,%eax 0.00 : 25db: 48 01 d0 add %rdx,%rax : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); 0.00 : 25de: 48 8b 93 78 1a 00 00 mov 0x1a78(%rbx),%rdx : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); 0.00 : 25e5: 48 89 83 70 1a 00 00 mov %rax,0x1a70(%rbx) 0.00 : 25ec: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 25f3: 48 05 18 51 00 00 add $0x5118,%rax 0.00 : 25f9: 8b 00 mov (%rax),%eax : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); 0.00 : 25fb: 89 c0 mov %eax,%eax 0.00 : 25fd: 48 01 d0 add %rdx,%rax : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); 0.00 : 2600: 48 8b 93 80 1a 00 00 mov 0x1a80(%rbx),%rdx : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); 0.00 : 2607: 48 89 83 78 1a 00 00 mov %rax,0x1a78(%rbx) 0.00 : 260e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2615: 48 05 24 24 00 00 add $0x2424,%rax 0.00 : 261b: 8b 00 mov (%rax),%eax : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); 0.00 : 261d: 89 c0 mov %eax,%eax 0.00 : 261f: 48 01 d0 add %rdx,%rax : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); 0.00 : 2622: 48 8b 93 88 1a 00 00 mov 0x1a88(%rbx),%rdx : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); 0.00 : 2629: 48 89 83 80 1a 00 00 mov %rax,0x1a80(%rbx) 0.00 : 2630: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2637: 48 05 1c 24 00 00 add $0x241c,%rax 0.00 : 263d: 8b 00 mov (%rax),%eax : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); 0.00 : 263f: 89 c0 mov %eax,%eax 0.00 : 2641: 48 01 d0 add %rdx,%rax : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); 0.00 : 2644: 48 8b 93 90 1a 00 00 mov 0x1a90(%rbx),%rdx : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); 0.00 : 264b: 48 89 83 88 1a 00 00 mov %rax,0x1a88(%rbx) 0.00 : 2652: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2659: 48 05 28 24 00 00 add $0x2428,%rax 0.00 : 265f: 8b 00 mov (%rax),%eax : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); 0.00 : 2661: 89 c0 mov %eax,%eax 0.00 : 2663: 48 01 d0 add %rdx,%rax : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); 0.00 : 2666: 48 8b 93 98 1a 00 00 mov 0x1a98(%rbx),%rdx : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); 0.00 : 266d: 48 89 83 90 1a 00 00 mov %rax,0x1a90(%rbx) 0.00 : 2674: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 267b: 48 05 84 87 00 00 add $0x8784,%rax 0.00 : 2681: 8b 00 mov (%rax),%eax : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); 0.00 : 2683: 89 c0 mov %eax,%eax 0.00 : 2685: 48 01 d0 add %rdx,%rax : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); 0.00 : 2688: 48 8b 93 a0 1a 00 00 mov 0x1aa0(%rbx),%rdx : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); 0.00 : 268f: 48 89 83 98 1a 00 00 mov %rax,0x1a98(%rbx) 0.00 : 2696: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 269d: 48 05 2c 24 00 00 add $0x242c,%rax 0.00 : 26a3: 8b 00 mov (%rax),%eax : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); 0.00 : 26a5: 89 c0 mov %eax,%eax 0.00 : 26a7: 48 01 d0 add %rdx,%rax : hwstats->fcoedwtc += IXGBE_READ_REG(hw, IXGBE_FCOEDWTC); 0.00 : 26aa: 48 8b 93 a8 1a 00 00 mov 0x1aa8(%rbx),%rdx : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); 0.00 : 26b1: 48 89 83 a0 1a 00 00 mov %rax,0x1aa0(%rbx) 0.00 : 26b8: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 26bf: 48 05 88 87 00 00 add $0x8788,%rax 0.00 : 26c5: 8b 00 mov (%rax),%eax : hwstats->fcoedwtc += IXGBE_READ_REG(hw, IXGBE_FCOEDWTC); 0.00 : 26c7: 89 c0 mov %eax,%eax 0.00 : 26c9: 48 01 d0 add %rdx,%rax : /* Add up per cpu counters for total ddp alloc fail */ : if (adapter->fcoe.ddp_pool) { 0.00 : 26cc: 48 83 bb e8 1b 00 00 cmpq $0x0,0x1be8(%rbx) 0.00 : 26d3: 00 : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); : hwstats->fcoedwtc += IXGBE_READ_REG(hw, IXGBE_FCOEDWTC); 0.00 : 26d4: 48 89 83 a8 1a 00 00 mov %rax,0x1aa8(%rbx) : /* Add up per cpu counters for total ddp alloc fail */ : if (adapter->fcoe.ddp_pool) { 0.00 : 26db: 0f 84 f8 f4 ff ff je 1bd9 : static inline unsigned int cpumask_next(int n, const struct cpumask *srcp) : { : /* -1 is a legal arg here. */ : if (n != -1) : cpumask_check(n); : return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1); 0.00 : 26e1: 4c 8b 2d 00 00 00 00 mov 0x0(%rip),%r13 # 26e8 0.00 : 26e8: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 26ed: 45 31 e4 xor %r12d,%r12d 0.00 : 26f0: 31 ed xor %ebp,%ebp 0.00 : 26f2: eb 1d jmp 2711 0.00 : 26f4: 0f 1f 40 00 nopl 0x0(%rax) : struct ixgbe_fcoe *fcoe = &adapter->fcoe; : struct ixgbe_fcoe_ddp_pool *ddp_pool; : unsigned int cpu; : u64 noddp = 0, noddp_ext_buff = 0; : for_each_possible_cpu(cpu) { : ddp_pool = per_cpu_ptr(fcoe->ddp_pool, cpu); 0.00 : 26f8: 89 ca mov %ecx,%edx 0.00 : 26fa: 48 8b 83 e8 1b 00 00 mov 0x1be8(%rbx),%rax 0.00 : 2701: 48 03 04 d5 00 00 00 add 0x0(,%rdx,8),%rax 0.00 : 2708: 00 : noddp += ddp_pool->noddp; 0.00 : 2709: 4c 03 60 08 add 0x8(%rax),%r12 : noddp_ext_buff += ddp_pool->noddp_ext_buff; 0.00 : 270d: 48 03 68 10 add 0x10(%rax),%rbp 0.00 : 2711: 48 63 35 00 00 00 00 movslq 0x0(%rip),%rsi # 2718 0.00 : 2718: 8d 51 01 lea 0x1(%rcx),%edx 0.00 : 271b: 4c 89 ef mov %r13,%rdi 0.00 : 271e: 48 63 d2 movslq %edx,%rdx 0.00 : 2721: e8 00 00 00 00 callq 2726 : if (adapter->fcoe.ddp_pool) { : struct ixgbe_fcoe *fcoe = &adapter->fcoe; : struct ixgbe_fcoe_ddp_pool *ddp_pool; : unsigned int cpu; : u64 noddp = 0, noddp_ext_buff = 0; : for_each_possible_cpu(cpu) { 0.00 : 2726: 39 05 00 00 00 00 cmp %eax,0x0(%rip) # 272c 0.00 : 272c: 89 c1 mov %eax,%ecx 0.00 : 272e: 77 c8 ja 26f8 : ddp_pool = per_cpu_ptr(fcoe->ddp_pool, cpu); : noddp += ddp_pool->noddp; : noddp_ext_buff += ddp_pool->noddp_ext_buff; : } : hwstats->fcoe_noddp = noddp; 0.00 : 2730: 4c 89 a3 b0 1a 00 00 mov %r12,0x1ab0(%rbx) : hwstats->fcoe_noddp_ext_buff = noddp_ext_buff; 0.00 : 2737: 48 89 ab b8 1a 00 00 mov %rbp,0x1ab8(%rbx) 0.00 : 273e: e9 96 f4 ff ff jmpq 1bd9 : : if ((hw->fc.current_mode != ixgbe_fc_full) && : (hw->fc.current_mode != ixgbe_fc_rx_pause)) : return; : : switch (hw->mac.type) { 0.00 : 2743: 83 bb 50 10 00 00 01 cmpl $0x1,0x1050(%rbx) 0.00 : 274a: 0f 84 ae 00 00 00 je 27fe 0.00 : 2750: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2757: 48 05 a8 41 00 00 add $0x41a8,%rax 0.00 : 275d: 8b 10 mov (%rax),%edx : data = IXGBE_READ_REG(hw, IXGBE_LXOFFRXC); : break; : default: : data = IXGBE_READ_REG(hw, IXGBE_LXOFFRXCNT); : } : hwstats->lxoffrxc += data; 0.00 : 275f: 89 d0 mov %edx,%eax 0.00 : 2761: 48 01 83 48 15 00 00 add %rax,0x1548(%rbx) : : /* refill credits (no tx hang) if we received xoff */ : if (!data) 0.00 : 2768: 85 d2 test %edx,%edx 0.00 : 276a: 0f 84 c0 f3 ff ff je 1b30 : return; : : for (i = 0; i < adapter->num_tx_queues; i++) 0.00 : 2770: 8b 93 20 02 00 00 mov 0x220(%rbx),%edx 0.00 : 2776: 85 d2 test %edx,%edx 0.00 : 2778: 0f 8e b2 f3 ff ff jle 1b30 0.00 : 277e: 31 c9 xor %ecx,%ecx : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 2780: 48 8b 97 80 02 00 00 mov 0x280(%rdi),%rdx 0.00 : 2787: 48 8d 42 30 lea 0x30(%rdx),%rax 0.00 : 278b: f0 80 62 30 fb lock andb $0xfb,0x30(%rdx) 0.00 : 2790: 83 c1 01 add $0x1,%ecx 0.00 : 2793: 48 83 c7 08 add $0x8,%rdi 0.00 : 2797: 3b 8b 20 02 00 00 cmp 0x220(%rbx),%ecx 0.00 : 279d: 7c e1 jl 2780 0.00 : 279f: e9 8c f3 ff ff jmpq 1b30 : } : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; 0.00 : 27a4: 48 29 c8 sub %rcx,%rax 0.00 : 27a7: 48 89 83 90 16 00 00 mov %rax,0x1690(%rbx) 0.00 : 27ae: e9 6d f4 ff ff jmpq 1c20 : } : hwstats->pxoffrxc[i] += xoff[i]; : } : : /* disarm tx queues that have received xoff frames */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 27b3: 8b 83 20 02 00 00 mov 0x220(%rbx),%eax 0.00 : 27b9: 85 c0 test %eax,%eax 0.00 : 27bb: 0f 8e 6f f3 ff ff jle 1b30 0.00 : 27c1: 31 c9 xor %ecx,%ecx 0.00 : 27c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; 0.00 : 27c8: 48 8b 97 80 02 00 00 mov 0x280(%rdi),%rdx : u8 tc = tx_ring->dcb_tc; 0.00 : 27cf: 0f b6 42 56 movzbl 0x56(%rdx),%eax : : if ((tc <= 7) && (xoff[tc])) 0.00 : 27d3: 3c 07 cmp $0x7,%al 0.00 : 27d5: 77 13 ja 27ea 0.00 : 27d7: 0f b6 c0 movzbl %al,%eax 0.00 : 27da: 8b 04 84 mov (%rsp,%rax,4),%eax 0.00 : 27dd: 85 c0 test %eax,%eax 0.00 : 27df: 74 09 je 27ea 0.00 : 27e1: 48 8d 42 30 lea 0x30(%rdx),%rax 0.00 : 27e5: f0 80 62 30 fb lock andb $0xfb,0x30(%rdx) : } : hwstats->pxoffrxc[i] += xoff[i]; : } : : /* disarm tx queues that have received xoff frames */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 27ea: 83 c1 01 add $0x1,%ecx 0.00 : 27ed: 48 83 c7 08 add $0x8,%rdi 0.00 : 27f1: 3b 8b 20 02 00 00 cmp 0x220(%rbx),%ecx 0.00 : 27f7: 7c cf jl 27c8 0.00 : 27f9: e9 32 f3 ff ff jmpq 1b30 0.00 : 27fe: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2805: 48 05 68 cf 00 00 add $0xcf68,%rax 0.00 : 280b: 8b 10 mov (%rax),%edx 0.00 : 280d: e9 4d ff ff ff jmpq 275f : } : adapter->lro_stats.flushed = flushed; : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 2812: 45 31 d2 xor %r10d,%r10d 0.00 : 2815: 45 31 c9 xor %r9d,%r9d 0.00 : 2818: 45 31 c0 xor %r8d,%r8d 0.00 : 281b: 31 ff xor %edi,%edi 0.00 : 281d: 31 d2 xor %edx,%edx 0.00 : 281f: 31 c0 xor %eax,%eax 0.00 : 2821: e9 d8 f0 ff ff jmpq 18fe : net_stats->rx_packets = packets; : : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 2826: 45 31 c0 xor %r8d,%r8d 0.00 : 2829: 31 ff xor %edi,%edi 0.00 : 282b: 31 f6 xor %esi,%esi 0.00 : 282d: 31 c9 xor %ecx,%ecx 0.00 : 282f: e9 3d f1 ff ff jmpq 1971 : : Disassembly of section .devinit.text: : : 0000000000001800 : : struct ixgbe_option opt = { : .type = enable_option, : .name = "Enabled/Disable FCoE offload", : .err = "defaulting to Enabled", : .def = OPTION_ENABLED : }; 0.00 : 1800: 48 c7 44 24 70 00 00 movq $0x0,0x70(%rsp) 0.00 : 1807: 00 00 0.00 : 1809: c7 44 24 78 01 00 00 movl $0x1,0x78(%rsp) 0.00 : 1810: 00 : #ifdef module_param_array : if (num_FCoE > bd) { 0.00 : 1811: 0f 82 f7 05 00 00 jb 1e0e : if (fcoe) : *aflags |= IXGBE_FLAG_FCOE_CAPABLE; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_FCOE_CAPABLE; 0.00 : 1817: 81 8b 18 02 00 00 00 orl $0x20000,0x218(%rbx) 0.00 : 181e: 00 02 00 : } : #endif : DPRINTK(PROBE, INFO, "FCoE Offload feature %sabled\n", 0.00 : 1821: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1828: 0f 85 a6 05 00 00 jne 1dd4 : struct ixgbe_option opt = { : .type = enable_option, : .name = "LRO - Large Receive Offload", : .err = "defaulting to Enabled", : .def = OPTION_ENABLED : }; 0.00 : 182e: 48 8d 54 24 30 lea 0x30(%rsp),%rdx 0.00 : 1833: 31 c0 xor %eax,%eax 0.00 : 1835: b9 06 00 00 00 mov $0x6,%ecx : if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE)) : opt.def = OPTION_DISABLED; : : #endif : #ifdef module_param_array : if (num_LRO > bd) { 0.00 : 183a: 44 3b 25 00 00 00 00 cmp 0x0(%rip),%r12d # 1841 : struct ixgbe_option opt = { : .type = enable_option, : .name = "LRO - Large Receive Offload", : .err = "defaulting to Enabled", : .def = OPTION_ENABLED : }; 0.00 : 1841: 48 89 d7 mov %rdx,%rdi 0.00 : 1844: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 1847: 48 c7 44 24 38 00 00 movq $0x0,0x38(%rsp) 0.00 : 184e: 00 00 0.00 : 1850: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : 1857: 00 00 0.00 : 1859: c7 44 24 48 01 00 00 movl $0x1,0x48(%rsp) 0.00 : 1860: 00 : struct net_device *netdev = adapter->netdev; 0.00 : 1861: 48 8b ab 00 02 00 00 mov 0x200(%rbx),%rbp : if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE)) : opt.def = OPTION_DISABLED; : : #endif : #ifdef module_param_array : if (num_LRO > bd) { 0.00 : 1868: 0f 82 e0 00 00 00 jb 194e : netdev->features |= NETIF_F_LRO; : else : netdev->features &= ~NETIF_F_LRO; : #ifdef module_param_array : } else if (opt.def == OPTION_ENABLED) { : netdev->features |= NETIF_F_LRO; 0.00 : 186e: 81 8d b0 00 00 00 00 orl $0x8000,0xb0(%rbp) 0.00 : 1875: 80 00 00 : struct ixgbe_option opt = { : .type = enable_option, : .name = "allow_unsupported_sfp", : .err = "defaulting to Disabled", : .def = OPTION_DISABLED : }; 0.00 : 1878: 31 c0 xor %eax,%eax : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { 0.00 : 187a: 44 3b 25 00 00 00 00 cmp 0x0(%rip),%r12d # 1881 : struct ixgbe_option opt = { : .type = enable_option, : .name = "allow_unsupported_sfp", : .err = "defaulting to Disabled", : .def = OPTION_DISABLED : }; 0.00 : 1881: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 1886: 48 89 e7 mov %rsp,%rdi 0.00 : 1889: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 188c: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 1893: 00 00 0.00 : 1895: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 189c: 00 00 : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { 0.00 : 189e: 72 7a jb 191a : } else { : adapter->hw.allow_unsupported_sfp = false; : } : #ifdef module_param_array : } else if (opt.def == OPTION_ENABLED) { : adapter->hw.allow_unsupported_sfp = true; 0.00 : 18a0: 83 7c 24 18 01 cmpl $0x1,0x18(%rsp) 0.00 : 18a5: 0f 94 83 a1 14 00 00 sete 0x14a1(%rbx) : } else { : adapter->hw.allow_unsupported_sfp = false; : } : #endif : } : } 0.00 : 18ac: 48 81 c4 a8 00 00 00 add $0xa8,%rsp 0.00 : 18b3: 5b pop %rbx 0.00 : 18b4: 5d pop %rbp 0.00 : 18b5: 41 5c pop %r12 0.00 : 18b7: 41 5d pop %r13 0.00 : 18b9: c3 retq : adapter->atr_sample_rate = IXGBE_ATR_SAMPLE_RATE_OFF; : } else if (num_AtrSampleRate > bd) { : adapter->atr_sample_rate = AtrSampleRate[bd]; : : if (adapter->atr_sample_rate) { : ixgbe_validate_option(&adapter->atr_sample_rate, 0.00 : 18ba: 48 8d bb dc 1b 00 00 lea 0x1bdc(%rbx),%rdi 0.00 : 18c1: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 18c8: e8 23 fa ff ff callq 12f0 : &opt); : DPRINTK(PROBE, INFO, "%s %d\n", atr_string, 0.00 : 18cd: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 18d4: 0f 84 ec fe ff ff je 17c6 0.00 : 18da: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 18e1: 44 8b 83 dc 1b 00 00 mov 0x1bdc(%rbx),%r8d 0.00 : 18e8: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : 18ef: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 18f6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 18fd: 31 c0 xor %eax,%eax 0.00 : 18ff: e8 00 00 00 00 callq 1904 0.00 : 1904: e9 bd fe ff ff jmpq 17c6 : adapter->atr_sample_rate); : } : } else { : adapter->atr_sample_rate = opt.def; 0.00 : 1909: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 190f 0.00 : 190f: 89 83 dc 1b 00 00 mov %eax,0x1bdc(%rbx) 0.00 : 1915: e9 ac fe ff ff jmpq 17c6 : }; : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { : #endif : unsigned int enable_unsupported_sfp = : allow_unsupported_sfp[bd]; 0.00 : 191a: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1921: 00 : ixgbe_validate_option(&enable_unsupported_sfp, &opt); 0.00 : 1922: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1929: 00 0.00 : 192a: 48 89 e6 mov %rsp,%rsi : }; : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { : #endif : unsigned int enable_unsupported_sfp = : allow_unsupported_sfp[bd]; 0.00 : 192d: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&enable_unsupported_sfp, &opt); 0.00 : 1934: e8 b7 f9 ff ff callq 12f0 : if (enable_unsupported_sfp) { : adapter->hw.allow_unsupported_sfp = true; 0.00 : 1939: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 1940: 85 c0 test %eax,%eax 0.00 : 1942: 0f 95 83 a1 14 00 00 setne 0x14a1(%rbx) 0.00 : 1949: e9 5e ff ff ff jmpq 18ac : : #endif : #ifdef module_param_array : if (num_LRO > bd) { : #endif : unsigned int lro = LRO[bd]; 0.00 : 194e: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1955: 00 : ixgbe_validate_option(&lro, &opt); 0.00 : 1956: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 195d: 00 0.00 : 195e: 48 89 d6 mov %rdx,%rsi : : #endif : #ifdef module_param_array : if (num_LRO > bd) { : #endif : unsigned int lro = LRO[bd]; 0.00 : 1961: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&lro, &opt); 0.00 : 1968: e8 83 f9 ff ff callq 12f0 : if (lro) 0.00 : 196d: 8b 94 24 9c 00 00 00 mov 0x9c(%rsp),%edx 0.00 : 1974: 85 d2 test %edx,%edx 0.00 : 1976: 0f 85 f2 fe ff ff jne 186e : netdev->features |= NETIF_F_LRO; : else : netdev->features &= ~NETIF_F_LRO; 0.00 : 197c: 81 a5 b0 00 00 00 ff andl $0xffff7fff,0xb0(%rbp) 0.00 : 1983: 7f ff ff 0.00 : 1986: e9 ed fe ff ff jmpq 1878 : }; : static const char atr_string[] = : "ATR Tx Packet sample rate set to"; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->atr_sample_rate = IXGBE_ATR_SAMPLE_RATE_OFF; 0.00 : 198b: c7 83 dc 1b 00 00 00 movl $0x0,0x1bdc(%rbx) 0.00 : 1992: 00 00 00 0.00 : 1995: e9 2c fe ff ff jmpq 17c6 : char pstring[10]; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_NONE; : } else if (num_FdirPballoc > bd) { : fdir_pballoc_mode = FdirPballoc[bd]; 0.00 : 199a: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 19a1: 00 : ixgbe_validate_option(&fdir_pballoc_mode, &opt); 0.00 : 19a2: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 19a9: 00 0.00 : 19aa: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : char pstring[10]; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_NONE; : } else if (num_FdirPballoc > bd) { : fdir_pballoc_mode = FdirPballoc[bd]; 0.00 : 19b1: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&fdir_pballoc_mode, &opt); 0.00 : 19b8: e8 33 f9 ff ff callq 12f0 : switch (fdir_pballoc_mode) { 0.00 : 19bd: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 19c4: 83 f8 02 cmp $0x2,%eax 0.00 : 19c7: 0f 84 bf 00 00 00 je 1a8c 0.00 : 19cd: 83 f8 03 cmp $0x3,%eax 0.00 : 19d0: 0f 84 8a 00 00 00 je 1a60 : sprintf(pstring, "128kB"); : break; : case IXGBE_FDIR_PBALLOC_64K: : default: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K; : sprintf(pstring, "64kB"); 0.00 : 19d6: 48 8d 8c 24 90 00 00 lea 0x90(%rsp),%rcx 0.00 : 19dd: 00 : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_128K; : sprintf(pstring, "128kB"); : break; : case IXGBE_FDIR_PBALLOC_64K: : default: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K; 0.00 : 19de: c7 83 d8 1b 00 00 01 movl $0x1,0x1bd8(%rbx) 0.00 : 19e5: 00 00 00 : sprintf(pstring, "64kB"); 0.00 : 19e8: c7 84 24 90 00 00 00 movl $0x426b3436,0x90(%rsp) 0.00 : 19ef: 36 34 6b 42 0.00 : 19f3: c6 84 24 94 00 00 00 movb $0x0,0x94(%rsp) 0.00 : 19fa: 00 : break; : } : DPRINTK(PROBE, INFO, "Flow Director will be allocated " 0.00 : 19fb: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1a02: 0f 84 8e fd ff ff je 1796 0.00 : 1a08: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1a0f: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1a16: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1a1d: 31 c0 xor %eax,%eax 12.50 : 1a1f: e8 00 00 00 00 callq 1a24 0.00 : 1a24: e9 6d fd ff ff jmpq 1796 : .max = IXGBE_FDIR_PBALLOC_256K} } : }; : char pstring[10]; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_NONE; 0.00 : 1a29: c7 83 d8 1b 00 00 00 movl $0x0,0x1bd8(%rbx) 0.00 : 1a30: 00 00 00 0.00 : 1a33: e9 5e fd ff ff jmpq 1796 : adapter->lli_vlan_pri = LLIVLANP[bd]; : if (adapter->lli_vlan_pri) { : ixgbe_validate_option(&adapter->lli_vlan_pri, : &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1a38: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1a3f: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1a46 12.50 : 1a46: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1a4d: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1a54: 31 c0 xor %eax,%eax 0.00 : 1a56: e8 00 00 00 00 callq 1a5b 0.00 : 1a5b: e9 10 fd ff ff jmpq 1770 : } else if (num_FdirPballoc > bd) { : fdir_pballoc_mode = FdirPballoc[bd]; : ixgbe_validate_option(&fdir_pballoc_mode, &opt); : switch (fdir_pballoc_mode) { : case IXGBE_FDIR_PBALLOC_256K: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_256K; 0.00 : 1a60: c7 83 d8 1b 00 00 03 movl $0x3,0x1bd8(%rbx) 0.00 : 1a67: 00 00 00 : sprintf(pstring, "256kB"); 0.00 : 1a6a: 48 8d 8c 24 90 00 00 lea 0x90(%rsp),%rcx 0.00 : 1a71: 00 0.00 : 1a72: c7 84 24 90 00 00 00 movl $0x6b363532,0x90(%rsp) 0.00 : 1a79: 32 35 36 6b 0.00 : 1a7d: 66 c7 84 24 94 00 00 movw $0x42,0x94(%rsp) 0.00 : 1a84: 00 42 00 : break; 0.00 : 1a87: e9 6f ff ff ff jmpq 19fb : case IXGBE_FDIR_PBALLOC_128K: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_128K; 0.00 : 1a8c: c7 83 d8 1b 00 00 02 movl $0x2,0x1bd8(%rbx) 0.00 : 1a93: 00 00 00 : sprintf(pstring, "128kB"); 0.00 : 1a96: 48 8d 8c 24 90 00 00 lea 0x90(%rsp),%rcx 0.00 : 1a9d: 00 0.00 : 1a9e: c7 84 24 90 00 00 00 movl $0x6b383231,0x90(%rsp) 0.00 : 1aa5: 31 32 38 6b 0.00 : 1aa9: 66 c7 84 24 94 00 00 movw $0x42,0x94(%rsp) 0.00 : 1ab0: 00 42 00 : break; 0.00 : 1ab3: e9 43 ff ff ff jmpq 19fb : #ifdef module_param_array : if (num_LLIVLANP > bd) { : #endif : adapter->lli_vlan_pri = LLIVLANP[bd]; : if (adapter->lli_vlan_pri) { : ixgbe_validate_option(&adapter->lli_vlan_pri, 0.00 : 1ab8: 48 8d bb fc 1a 00 00 lea 0x1afc(%rbx),%rdi 0.00 : 1abf: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1ac6: e8 25 f8 ff ff callq 12f0 0.00 : 1acb: e9 a0 fc ff ff jmpq 1770 : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_vlan_pri = opt.def; 0.00 : 1ad0: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1ad6 0.00 : 1ad6: 89 83 fc 1a 00 00 mov %eax,0x1afc(%rbx) 0.00 : 1adc: e9 8f fc ff ff jmpq 1770 : adapter->lli_etype = LLIEType[bd]; : if (adapter->lli_etype) { : ixgbe_validate_option(&adapter->lli_etype, : &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1ae1: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1ae8: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1aef 0.00 : 1aef: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1af6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1afd: 31 c0 xor %eax,%eax 0.00 : 1aff: e8 00 00 00 00 callq 1b04 0.00 : 1b04: e9 37 fc ff ff jmpq 1740 : #ifdef module_param_array : if (num_LLIEType > bd) { : #endif : adapter->lli_etype = LLIEType[bd]; : if (adapter->lli_etype) { : ixgbe_validate_option(&adapter->lli_etype, 0.00 : 1b09: 48 8d bb f8 1a 00 00 lea 0x1af8(%rbx),%rdi 0.00 : 1b10: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1b17: e8 d4 f7 ff ff callq 12f0 0.00 : 1b1c: e9 1f fc ff ff jmpq 1740 : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_etype = opt.def; 0.00 : 1b21: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1b27 0.00 : 1b27: 89 83 f8 1a 00 00 mov %eax,0x1af8(%rbx) 0.00 : 1b2d: e9 0e fc ff ff jmpq 1740 : }; : : #ifdef module_param_array : if (num_LLIPush > bd) { : #endif : unsigned int lli_push = LLIPush[bd]; 0.00 : 1b32: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1b39: 00 : ixgbe_validate_option(&lli_push, &opt); 0.00 : 1b3a: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1b41: 00 0.00 : 1b42: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_LLIPush > bd) { : #endif : unsigned int lli_push = LLIPush[bd]; 0.00 : 1b49: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&lli_push, &opt); 0.00 : 1b50: e8 9b f7 ff ff callq 12f0 : if (lli_push) 0.00 : 1b55: 8b b4 24 9c 00 00 00 mov 0x9c(%rsp),%esi 0.00 : 1b5c: 85 f6 test %esi,%esi 0.00 : 1b5e: 0f 84 a5 fb ff ff je 1709 : else : *aflags &= ~IXGBE_FLAG_LLI_PUSH; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_LLI_PUSH; 0.00 : 1b64: 83 8b 18 02 00 00 10 orl $0x10,0x218(%rbx) 0.00 : 1b6b: e9 a0 fb ff ff jmpq 1710 : #endif : adapter->lli_size = LLISize[bd]; : if (adapter->lli_size) { : ixgbe_validate_option(&adapter->lli_size, &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1b70: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1b77: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1b7e 0.00 : 1b7e: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1b85: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1b8c: 31 c0 xor %eax,%eax 0.00 : 1b8e: e8 00 00 00 00 callq 1b93 0.00 : 1b93: e9 57 fb ff ff jmpq 16ef : #ifdef module_param_array : if (num_LLISize > bd) { : #endif : adapter->lli_size = LLISize[bd]; : if (adapter->lli_size) { : ixgbe_validate_option(&adapter->lli_size, &opt); 0.00 : 1b98: 48 8d bb f4 1a 00 00 lea 0x1af4(%rbx),%rdi 0.00 : 1b9f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1ba6: e8 45 f7 ff ff callq 12f0 0.00 : 1bab: e9 3f fb ff ff jmpq 16ef : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_size = opt.def; 0.00 : 1bb0: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1bb6 0.00 : 1bb6: 89 83 f4 1a 00 00 mov %eax,0x1af4(%rbx) 0.00 : 1bbc: e9 2e fb ff ff jmpq 16ef : #endif : adapter->lli_port = LLIPort[bd]; : if (adapter->lli_port) { : ixgbe_validate_option(&adapter->lli_port, &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1bc1: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1bc8: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1bcf 0.00 : 1bcf: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1bd6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1bdd: 31 c0 xor %eax,%eax 0.00 : 1bdf: e8 00 00 00 00 callq 1be4 0.00 : 1be4: e9 d6 fa ff ff jmpq 16bf : #ifdef module_param_array : if (num_LLIPort > bd) { : #endif : adapter->lli_port = LLIPort[bd]; : if (adapter->lli_port) { : ixgbe_validate_option(&adapter->lli_port, &opt); 0.00 : 1be9: 48 8d bb f0 1a 00 00 lea 0x1af0(%rbx),%rdi 0.00 : 1bf0: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1bf7: e8 f4 f6 ff ff callq 12f0 0.00 : 1bfc: e9 be fa ff ff jmpq 16bf : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_port = opt.def; 0.00 : 1c01: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1c07 0.00 : 1c07: 89 83 f0 1a 00 00 mov %eax,0x1af0(%rbx) 0.00 : 1c0d: e9 ad fa ff ff jmpq 16bf : if (num_InterruptThrottleRate > bd) { : #endif : u32 itr = InterruptThrottleRate[bd]; : switch (itr) { : case 0: : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1c12: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1c19: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1c20 0.00 : 1c20: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1c27: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1c2e: 31 c0 xor %eax,%eax 0.00 : 1c30: e8 00 00 00 00 callq 1c35 0.00 : 1c35: e9 3e fa ff ff jmpq 1678 : : #ifdef module_param_array : if (num_InterruptThrottleRate > bd) { : #endif : u32 itr = InterruptThrottleRate[bd]; : switch (itr) { 0.00 : 1c3a: 83 e8 01 sub $0x1,%eax 0.00 : 1c3d: 74 50 je 1c8f : DPRINTK(PROBE, INFO, "dynamic interrupt " : "throttling enabled\n"); : adapter->rx_itr_setting = 1; : break; : default: : ixgbe_validate_option(&itr, &opt); 0.00 : 1c3f: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1c46: 00 0.00 : 1c47: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1c4e: e8 9d f6 ff ff callq 12f0 : /* the first bit is used as control */ : adapter->rx_itr_setting = (1000000/itr) << 2; 0.00 : 1c53: b8 40 42 0f 00 mov $0xf4240,%eax 0.00 : 1c58: 31 d2 xor %edx,%edx 0.00 : 1c5a: f7 b4 24 9c 00 00 00 divl 0x9c(%rsp) 0.00 : 1c61: c1 e0 02 shl $0x2,%eax 0.00 : 1c64: 66 89 83 2c 02 00 00 mov %ax,0x22c(%rbx) 0.00 : 1c6b: e9 11 fa ff ff jmpq 1681 : break; : } : adapter->tx_itr_setting = adapter->rx_itr_setting; : #ifdef module_param_array : } else { : adapter->rx_itr_setting = opt.def; 0.00 : 1c70: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1c76 0.00 : 1c76: 66 89 83 2c 02 00 00 mov %ax,0x22c(%rbx) : adapter->tx_itr_setting = opt.def; 0.00 : 1c7d: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1c83 0.00 : 1c83: 66 89 83 24 02 00 00 mov %ax,0x224(%rbx) 0.00 : 1c8a: e9 00 fa ff ff jmpq 168f : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : adapter->rx_itr_setting = 0; : break; : case 1: : DPRINTK(PROBE, INFO, "dynamic interrupt " 0.00 : 1c8f: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1c96: 0f 85 a5 01 00 00 jne 1e41 : "throttling enabled\n"); : adapter->rx_itr_setting = 1; 0.00 : 1c9c: 66 c7 83 2c 02 00 00 movw $0x1,0x22c(%rbx) 0.00 : 1ca3: 01 00 : break; 0.00 : 1ca5: e9 d7 f9 ff ff jmpq 1681 : }; : : #ifdef module_param_array : if (num_L2LBen > bd) { : #endif : unsigned int l2LBen = L2LBen[bd]; 0.00 : 1caa: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1cb1: 00 : ixgbe_validate_option(&l2LBen, &opt); 0.00 : 1cb2: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1cb9: 00 0.00 : 1cba: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_L2LBen > bd) { : #endif : unsigned int l2LBen = L2LBen[bd]; 0.00 : 1cc1: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&l2LBen, &opt); 0.00 : 1cc8: e8 23 f6 ff ff callq 12f0 : if (l2LBen) 0.00 : 1ccd: 8b bc 24 9c 00 00 00 mov 0x9c(%rsp),%edi 0.00 : 1cd4: 85 ff test %edi,%edi 0.00 : 1cd6: 0f 84 6b f9 ff ff je 1647 : adapter->flags |= : IXGBE_FLAG_SRIOV_L2LOOPBACK_ENABLE; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : adapter->flags |= 0.00 : 1cdc: 81 8b 18 02 00 00 00 orl $0x800000,0x218(%rbx) 0.00 : 1ce3: 00 80 00 0.00 : 1ce6: e9 5c f9 ff ff jmpq 1647 : } else { : if (opt.def == OPTION_DISABLED) { : adapter->num_vfs = 0; : *aflags &= ~IXGBE_FLAG_SRIOV_ENABLED; : } else { : adapter->num_vfs = opt.def; 0.00 : 1ceb: 89 83 58 7c 00 00 mov %eax,0x7c58(%rbx) : *aflags |= IXGBE_FLAG_SRIOV_ENABLED; 0.00 : 1cf1: 81 8b 18 02 00 00 00 orl $0x100000,0x218(%rbx) 0.00 : 1cf8: 00 10 00 0.00 : 1cfb: e9 f3 f8 ff ff jmpq 15f3 : }; : : #ifdef module_param_array : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; 0.00 : 1d00: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1d07: 00 : if (ixgbe_validate_option(&vfs, &opt)) { 0.00 : 1d08: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1d0f: 00 0.00 : 1d10: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; 0.00 : 1d17: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : if (ixgbe_validate_option(&vfs, &opt)) { 0.00 : 1d1e: e8 cd f5 ff ff callq 12f0 0.00 : 1d23: 85 c0 test %eax,%eax 0.00 : 1d25: 74 14 je 1d3b : vfs = 0; : DPRINTK(PROBE, INFO, 0.00 : 1d27: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) : #ifdef module_param_array : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; : if (ixgbe_validate_option(&vfs, &opt)) { : vfs = 0; 0.00 : 1d2e: c7 84 24 9c 00 00 00 movl $0x0,0x9c(%rsp) 0.00 : 1d35: 00 00 00 00 : DPRINTK(PROBE, INFO, 0.00 : 1d39: 75 17 jne 1d52 : "max_vfs out of range " : "Disabling SR-IOV.\n"); : } : : adapter->num_vfs = vfs; 0.00 : 1d3b: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax : : if (vfs) 0.00 : 1d42: 85 c0 test %eax,%eax : DPRINTK(PROBE, INFO, : "max_vfs out of range " : "Disabling SR-IOV.\n"); : } : : adapter->num_vfs = vfs; 0.00 : 1d44: 89 83 58 7c 00 00 mov %eax,0x7c58(%rbx) : : if (vfs) 0.00 : 1d4a: 0f 84 99 f8 ff ff je 15e9 0.00 : 1d50: eb 9f jmp 1cf1 : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; : if (ixgbe_validate_option(&vfs, &opt)) { : vfs = 0; : DPRINTK(PROBE, INFO, 0.00 : 1d52: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1d59: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1d60: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1d67: 31 c0 xor %eax,%eax 0.00 : 1d69: e8 00 00 00 00 callq 1d6e 0.00 : 1d6e: eb cb jmp 1d3b : #endif : : /* Check Interoperability */ : if (*aflags & IXGBE_FLAG_SRIOV_ENABLED) { : if (!(*aflags & IXGBE_FLAG_SRIOV_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 1d70: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1d77: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1d7e: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1d85: 31 c0 xor %eax,%eax 0.00 : 1d87: e8 00 00 00 00 callq 1d8c 0.00 : 1d8c: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1d92: e9 81 f8 ff ff jmpq 1618 : "IOV is not supported on this " : "hardware. Disabling IOV.\n"); : *aflags &= ~IXGBE_FLAG_SRIOV_ENABLED; : adapter->num_vfs = 0; : } else if (!(*aflags & IXGBE_FLAG_MQ_CAPABLE)) { 0.00 : 1d97: f6 c4 02 test $0x2,%ah 0.00 : 1d9a: 0f 85 8d f8 ff ff jne 162d : DPRINTK(PROBE, INFO, 0.00 : 1da0: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1da7: 0f 84 6b f8 ff ff je 1618 0.00 : 1dad: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1db4: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1dbb: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1dc2: 31 c0 xor %eax,%eax 0.00 : 1dc4: e8 00 00 00 00 callq 1dc9 0.00 : 1dc9: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1dcf: e9 44 f8 ff ff jmpq 1618 : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_FCOE_CAPABLE; : } : #endif : DPRINTK(PROBE, INFO, "FCoE Offload feature %sabled\n", 0.00 : 1dd4: f6 83 1a 02 00 00 02 testb $0x2,0x21a(%rbx) 0.00 : 1ddb: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1de2: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : 1de9: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : 1df0: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1df7: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1dfe: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 1e02: 31 c0 xor %eax,%eax 0.00 : 1e04: e8 00 00 00 00 callq 1e09 0.00 : 1e09: e9 20 fa ff ff jmpq 182e : .def = OPTION_ENABLED : }; : #ifdef module_param_array : if (num_FCoE > bd) { : #endif : unsigned int fcoe = FCoE[bd]; 0.00 : 1e0e: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1e15: 00 : : ixgbe_validate_option(&fcoe, &opt); 0.00 : 1e16: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1e1d: 00 0.00 : 1e1e: 48 89 d6 mov %rdx,%rsi : .def = OPTION_ENABLED : }; : #ifdef module_param_array : if (num_FCoE > bd) { : #endif : unsigned int fcoe = FCoE[bd]; 0.00 : 1e21: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : : ixgbe_validate_option(&fcoe, &opt); 0.00 : 1e28: e8 c3 f4 ff ff callq 12f0 : if (fcoe) 0.00 : 1e2d: 8b 8c 24 9c 00 00 00 mov 0x9c(%rsp),%ecx 0.00 : 1e34: 85 c9 test %ecx,%ecx 0.00 : 1e36: 0f 84 e5 f9 ff ff je 1821 0.00 : 1e3c: e9 d6 f9 ff ff jmpq 1817 : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : adapter->rx_itr_setting = 0; : break; : case 1: : DPRINTK(PROBE, INFO, "dynamic interrupt " 0.00 : 1e41: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1e48: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1e4f: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1e56: 31 c0 xor %eax,%eax 0.00 : 1e58: e8 00 00 00 00 callq 1e5d 0.00 : 1e5d: e9 3a fe ff ff jmpq 1c9c : #ifdef module_param_array : } else { : if (opt.def == OPTION_DISABLED) : *aflags &= ~IXGBE_FLAG_VMDQ_ENABLED; : else : *aflags |= IXGBE_FLAG_VMDQ_ENABLED; 0.00 : 1e62: 81 8b 18 02 00 00 00 orl $0x800,0x218(%rbx) 0.00 : 1e69: 08 00 00 0.00 : 1e6c: e9 17 f7 ff ff jmpq 1588 : } : : #ifdef module_param_array : if (num_VMDQ > bd) { : #endif : unsigned int vmdq = VMDQ[bd]; 0.00 : 1e71: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1e78: 00 : : ixgbe_validate_option(&vmdq, &opt); 0.00 : 1e79: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1e80: 00 0.00 : 1e81: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : } : : #ifdef module_param_array : if (num_VMDQ > bd) { : #endif : unsigned int vmdq = VMDQ[bd]; 0.00 : 1e88: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : : ixgbe_validate_option(&vmdq, &opt); 0.00 : 1e8f: e8 5c f4 ff ff callq 12f0 : : /* zero or one both mean disabled from our driver's : * perspective */ : if (vmdq > 1) 0.00 : 1e94: 83 bc 24 9c 00 00 00 cmpl $0x1,0x9c(%rsp) 0.00 : 1e9b: 01 0.00 : 1e9c: 76 6e jbe 1f0c : *aflags |= IXGBE_FLAG_VMDQ_ENABLED; 0.00 : 1e9e: 81 8b 18 02 00 00 00 orl $0x800,0x218(%rbx) 0.00 : 1ea5: 08 00 00 : else : *aflags &= ~IXGBE_FLAG_VMDQ_ENABLED; : : feature[RING_F_VMDQ].limit = vmdq; 0.00 : 1ea8: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 1eaf: 66 89 83 d0 0b 00 00 mov %ax,0xbd0(%rbx) 0.00 : 1eb6: e9 da f6 ff ff jmpq 1595 : feature[RING_F_FDIR].limit = rss; : : feature[RING_F_RSS].limit = rss; : #ifdef module_param_array : } else if (opt.def == 0) { : rss = min_t(int, IXGBE_MAX_RSS_INDICES, 0.00 : 1ebb: 48 8b 3d 00 00 00 00 mov 0x0(%rip),%rdi # 1ec2 0.00 : 1ec2: e8 00 00 00 00 callq 1ec7 0.00 : 1ec7: ba 10 00 00 00 mov $0x10,%edx 0.00 : 1ecc: 83 f8 10 cmp $0x10,%eax 0.00 : 1ecf: 0f 4e d0 cmovle %eax,%edx 0.00 : 1ed2: 89 94 24 9c 00 00 00 mov %edx,0x9c(%rsp) : num_online_cpus()); : feature[RING_F_RSS].limit = rss; 0.00 : 1ed9: 66 89 93 d8 0b 00 00 mov %dx,0xbd8(%rbx) 0.00 : 1ee0: e9 3a f6 ff ff jmpq 151f : } : #endif : /* Check Interoperability */ : if (*aflags & IXGBE_FLAG_VMDQ_ENABLED) { : if (!(*aflags & IXGBE_FLAG_MQ_CAPABLE)) { : DPRINTK(PROBE, INFO, 12.50 : 1ee5: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1eec: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1ef3: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1efa: 31 c0 xor %eax,%eax 0.00 : 1efc: e8 00 00 00 00 callq 1f01 0.00 : 1f01: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1f07: e9 a6 f6 ff ff jmpq 15b2 : /* zero or one both mean disabled from our driver's : * perspective */ : if (vmdq > 1) : *aflags |= IXGBE_FLAG_VMDQ_ENABLED; : else : *aflags &= ~IXGBE_FLAG_VMDQ_ENABLED; 0.00 : 1f0c: 81 a3 18 02 00 00 ff andl $0xfffff7ff,0x218(%rbx) 0.00 : 1f13: f7 ff ff 0.00 : 1f16: eb 90 jmp 1ea8 : unsigned int rss = RSS[bd]; : : #ifdef module_param_array : if (num_RSS > bd) { : #endif : ixgbe_validate_option(&rss, &opt); 0.00 : 1f18: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1f1f: 00 0.00 : 1f20: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1f27: e8 c4 f3 ff ff callq 12f0 : /* base it off num_online_cpus() with hardware limit */ : if (!rss) 0.00 : 1f2c: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 1f33: 85 c0 test %eax,%eax 0.00 : 1f35: 74 22 je 1f59 : rss = min_t(int, IXGBE_MAX_RSS_INDICES, : num_online_cpus()); : else : feature[RING_F_FDIR].limit = rss; 0.00 : 1f37: 66 89 83 e0 0b 00 00 mov %ax,0xbe0(%rbx) : : feature[RING_F_RSS].limit = rss; 0.00 : 1f3e: 66 89 83 d8 0b 00 00 mov %ax,0xbd8(%rbx) 0.00 : 1f45: e9 d5 f5 ff ff jmpq 151f : if (opt.def == OPTION_DISABLED) : *aflags &= ~IXGBE_FLAG_DCA_CAPABLE; : } : #endif : if (dca == IXGBE_MAX_DCA) : adapter->flags |= IXGBE_FLAG_DCA_ENABLED_DATA; 0.00 : 1f4a: 81 8b 18 02 00 00 00 orl $0x100,0x218(%rbx) 0.00 : 1f51: 01 00 00 0.00 : 1f54: e9 9a f5 ff ff jmpq 14f3 : if (num_RSS > bd) { : #endif : ixgbe_validate_option(&rss, &opt); : /* base it off num_online_cpus() with hardware limit */ : if (!rss) : rss = min_t(int, IXGBE_MAX_RSS_INDICES, 0.00 : 1f59: 48 8b 3d 00 00 00 00 mov 0x0(%rip),%rdi # 1f60 0.00 : 1f60: e8 00 00 00 00 callq 1f65 0.00 : 1f65: ba 10 00 00 00 mov $0x10,%edx 0.00 : 1f6a: 83 f8 10 cmp $0x10,%eax 0.00 : 1f6d: 0f 4e d0 cmovle %eax,%edx 0.00 : 1f70: 89 94 24 9c 00 00 00 mov %edx,0x9c(%rsp) 0.00 : 1f77: 89 d0 mov %edx,%eax 0.00 : 1f79: eb c3 jmp 1f3e : unsigned int dca = opt.def; : : #ifdef module_param_array : if (num_DCA > bd) { : #endif : dca = DCA[bd]; 0.00 : 1f7b: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1f82: 00 : ixgbe_validate_option(&dca, &opt); 0.00 : 1f83: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1f8a: 00 0.00 : 1f8b: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : unsigned int dca = opt.def; : : #ifdef module_param_array : if (num_DCA > bd) { : #endif : dca = DCA[bd]; 0.00 : 1f92: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&dca, &opt); 0.00 : 1f99: e8 52 f3 ff ff callq 12f0 : if (!dca) 0.00 : 1f9e: 44 8b 9c 24 9c 00 00 mov 0x9c(%rsp),%r11d 0.00 : 1fa5: 00 0.00 : 1fa6: 45 85 db test %r11d,%r11d 0.00 : 1fa9: 75 0a jne 1fb5 : *aflags &= ~IXGBE_FLAG_DCA_CAPABLE; 0.00 : 1fab: 81 a3 18 02 00 00 7f andl $0xffffff7f,0x218(%rbx) 0.00 : 1fb2: ff ff ff : : /* Check Interoperability */ : if (!(*aflags & IXGBE_FLAG_DCA_CAPABLE)) { 0.00 : 1fb5: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1fbb: 84 c0 test %al,%al 0.00 : 1fbd: 78 12 js 1fd1 : DPRINTK(PROBE, INFO, "DCA is disabled\n"); 0.00 : 1fbf: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1fc6: 75 50 jne 2018 : *aflags &= ~IXGBE_FLAG_DCA_ENABLED; 0.00 : 1fc8: 83 e0 bf and $0xffffffbf,%eax 0.00 : 1fcb: 89 83 18 02 00 00 mov %eax,0x218(%rbx) : } : : if (dca == IXGBE_MAX_DCA) { 0.00 : 1fd1: 83 bc 24 9c 00 00 00 cmpl $0x2,0x9c(%rsp) 0.00 : 1fd8: 02 0.00 : 1fd9: 0f 85 14 f5 ff ff jne 14f3 : DPRINTK(PROBE, INFO, 0.00 : 1fdf: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1fe6: 75 54 jne 203c : "DCA enabled for rx data\n"); : adapter->flags |= IXGBE_FLAG_DCA_ENABLED_DATA; 0.00 : 1fe8: 81 8b 18 02 00 00 00 orl $0x100,0x218(%rbx) 0.00 : 1fef: 01 00 00 0.00 : 1ff2: e9 ee f4 ff ff jmpq 14e5 : } : #endif : /* Check Interoperability */ : if (rss > 1) { : if (!(*aflags & IXGBE_FLAG_MQ_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 1ff7: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1ffe: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 2005: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 200c: 31 c0 xor %eax,%eax 0.00 : 200e: e8 00 00 00 00 callq 2013 0.00 : 2013: e9 27 f5 ff ff jmpq 153f : if (!dca) : *aflags &= ~IXGBE_FLAG_DCA_CAPABLE; : : /* Check Interoperability */ : if (!(*aflags & IXGBE_FLAG_DCA_CAPABLE)) { : DPRINTK(PROBE, INFO, "DCA is disabled\n"); 0.00 : 2018: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 201f: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 2026: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 202d: 31 c0 xor %eax,%eax 0.00 : 202f: e8 00 00 00 00 callq 2034 0.00 : 2034: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 203a: eb 8c jmp 1fc8 : *aflags &= ~IXGBE_FLAG_DCA_ENABLED; : } : : if (dca == IXGBE_MAX_DCA) { : DPRINTK(PROBE, INFO, 0.00 : 203c: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 2043: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 204a: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 2051: 31 c0 xor %eax,%eax 0.00 : 2053: e8 00 00 00 00 callq 2058 0.00 : 2058: eb 8e jmp 1fe8 : } : #endif : /* Check Interoperability */ : if ((*aflags & IXGBE_FLAG_MQ_CAPABLE) && : !(*aflags & IXGBE_FLAG_MSIX_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 205a: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 2061: 75 4f jne 20b2 : "Multiple queues are not supported while MSI-X " : "is disabled. Disabling Multiple Queues.\n"); : *aflags &= ~IXGBE_FLAG_MQ_CAPABLE; 0.00 : 2063: 80 e6 fd and $0xfd,%dh 0.00 : 2066: 89 93 18 02 00 00 mov %edx,0x218(%rbx) 0.00 : 206c: e9 44 f4 ff ff jmpq 14b5 : }; : : #ifdef module_param_array : if (num_MQ > bd) { : #endif : unsigned int mq = MQ[bd]; 0.00 : 2071: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 2078: 00 : ixgbe_validate_option(&mq, &opt); 0.00 : 2079: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 2080: 00 0.00 : 2081: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_MQ > bd) { : #endif : unsigned int mq = MQ[bd]; 0.00 : 2088: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&mq, &opt); 0.00 : 208f: e8 5c f2 ff ff callq 12f0 : if (mq) 0.00 : 2094: 8b ac 24 9c 00 00 00 mov 0x9c(%rsp),%ebp 0.00 : 209b: 85 ed test %ebp,%ebp 0.00 : 209d: 0f 84 f0 f3 ff ff je 1493 : else : *aflags &= ~IXGBE_FLAG_MQ_CAPABLE; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_MQ_CAPABLE; 0.00 : 20a3: 81 8b 18 02 00 00 00 orl $0x200,0x218(%rbx) 0.00 : 20aa: 02 00 00 0.00 : 20ad: e9 eb f3 ff ff jmpq 149d : } : #endif : /* Check Interoperability */ : if ((*aflags & IXGBE_FLAG_MQ_CAPABLE) && : !(*aflags & IXGBE_FLAG_MSIX_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 20b2: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 20b9: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 20c0: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 20c7: 31 c0 xor %eax,%eax 0.00 : 20c9: e8 00 00 00 00 callq 20ce 0.00 : 20ce: 8b 93 18 02 00 00 mov 0x218(%rbx),%edx 0.00 : 20d4: eb 8d jmp 2063 : if (int_mode == OPTION_UNSET) : int_mode = InterruptType[bd]; : ixgbe_validate_option(&int_mode, &opt); : switch (int_mode) { : case IXGBE_INT_MSIX: : if (!(*aflags & IXGBE_FLAG_MSIX_CAPABLE)) 0.00 : 20d6: f6 83 18 02 00 00 04 testb $0x4,0x218(%rbx) 0.00 : 20dd: 0f 85 96 f3 ff ff jne 1479 : printk(KERN_INFO 0.00 : 20e3: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 20ea: 31 c0 xor %eax,%eax 0.00 : 20ec: e8 00 00 00 00 callq 20f1 0.00 : 20f1: e9 83 f3 ff ff jmpq 1479 : "Ignoring MSI-X setting; " : "support unavailable\n"); : break; : case IXGBE_INT_MSI: : if (!(*aflags & IXGBE_FLAG_MSI_CAPABLE)) { 0.00 : 20f6: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 20fc: a8 01 test $0x1,%al 0.00 : 20fe: 74 22 je 2122 : printk(KERN_INFO : "Ignoring MSI setting; " : "support unavailable\n"); : } else { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; 0.00 : 2100: 83 e0 fb and $0xfffffffb,%eax 0.00 : 2103: 89 83 18 02 00 00 mov %eax,0x218(%rbx) 0.00 : 2109: e9 6b f3 ff ff jmpq 1479 : #ifdef module_param_array : if (num_IntMode > bd || num_InterruptType > bd) { : #endif : int_mode = IntMode[bd]; : if (int_mode == OPTION_UNSET) : int_mode = InterruptType[bd]; 0.00 : 210e: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 2115: 00 0.00 : 2116: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) 0.00 : 211d: e9 23 f3 ff ff jmpq 1445 : "Ignoring MSI-X setting; " : "support unavailable\n"); : break; : case IXGBE_INT_MSI: : if (!(*aflags & IXGBE_FLAG_MSI_CAPABLE)) { : printk(KERN_INFO 0.00 : 2122: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 2129: 31 c0 xor %eax,%eax 0.00 : 212b: e8 00 00 00 00 callq 2130 0.00 : 2130: e9 44 f3 ff ff jmpq 1479 : int bd = adapter->bd_number; : u32 *aflags = &adapter->flags; : struct ixgbe_ring_feature *feature = adapter->ring_feature; : : if (bd >= IXGBE_MAX_NIC) { : printk(KERN_NOTICE 0.00 : 2135: 44 89 e6 mov %r12d,%esi 0.00 : 2138: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 213f: 31 c0 xor %eax,%eax 0.00 : 2141: e8 00 00 00 00 callq 2146 : "Warning: no configuration for board #%d\n", bd); : printk(KERN_NOTICE "Using defaults for all values\n"); 0.00 : 2146: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 214d: 31 c0 xor %eax,%eax 0.00 : 214f: e8 00 00 00 00 callq 2154 0.00 : 2154: e9 bb f2 ff ff jmpq 1414 : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2159: 8b 15 00 00 00 00 mov 0x0(%rip),%edx # 215f 0.00 : 215f: 83 fa 02 cmp $0x2,%edx 0.00 : 2162: 74 1c je 2180 : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 0.00 : 2164: 83 ea 01 sub $0x1,%edx : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2167: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 0.00 : 216d: 74 2c je 219b : *aflags & IXGBE_FLAG_MSI_CAPABLE) { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; : *aflags &= ~IXGBE_FLAG_MSI_CAPABLE; 0.00 : 216f: 83 e0 fa and $0xfffffffa,%eax 0.00 : 2172: 4d 63 ec movslq %r12d,%r13 0.00 : 2175: 89 83 18 02 00 00 mov %eax,0x218(%rbx) 0.00 : 217b: e9 f9 f2 ff ff jmpq 1479 : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2180: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 2186: a8 04 test $0x4,%al 0.00 : 2188: 74 e5 je 216f : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; 0.00 : 218a: 83 c8 05 or $0x5,%eax 0.00 : 218d: 4d 63 ec movslq %r12d,%r13 0.00 : 2190: 89 83 18 02 00 00 mov %eax,0x218(%rbx) : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2196: e9 de f2 ff ff jmpq 1479 : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 0.00 : 219b: a8 01 test $0x1,%al 0.00 : 219d: 74 d0 je 216f : *aflags & IXGBE_FLAG_MSI_CAPABLE) { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; 0.00 : 219f: 83 e0 fb and $0xfffffffb,%eax 0.00 : 21a2: 4d 63 ec movslq %r12d,%r13 0.00 : 21a5: 83 c8 01 or $0x1,%eax 0.00 : 21a8: 89 83 18 02 00 00 mov %eax,0x218(%rbx) : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 62.50 : 21ae: e9 c6 f2 ff ff jmpq 1479 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.41 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2750 23.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2722 11.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2745 11.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2747 5.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2727 5.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2745 5.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2750 5.88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2755 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005aca90 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalOr(BoolExprState *orExpr, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { 23.53 : 5aca90: 55 push %rbp : List *clauses = orExpr->args; : ListCell *clause; : bool AnyNull; : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2727 5.88 : 5aca91: 48 85 c9 test %rcx,%rcx : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalOr(BoolExprState *orExpr, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { 0.00 : 5aca94: 48 89 e5 mov %rsp,%rbp 0.00 : 5aca97: 41 56 push %r14 0.00 : 5aca99: 49 89 f6 mov %rsi,%r14 0.00 : 5aca9c: 41 55 push %r13 0.00 : 5aca9e: 41 54 push %r12 0.00 : 5acaa0: 49 89 d4 mov %rdx,%r12 0.00 : 5acaa3: 53 push %rbx : List *clauses = orExpr->args; 0.00 : 5acaa4: 48 8b 47 18 mov 0x18(%rdi),%rax : ListCell *clause; : bool AnyNull; : : if (isDone) 0.00 : 5acaa8: 74 06 je 5acab0 : *isDone = ExprSingleResult; 0.00 : 5acaaa: c7 01 00 00 00 00 movl $0x0,(%rcx) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5acab0: 48 85 c0 test %rax,%rax 0.00 : 5acab3: 74 4b je 5acb00 0.00 : 5acab5: 48 8b 58 08 mov 0x8(%rax),%rbx : * that we "don't know" what the OR's result should be --- perhaps one of : * the "don't knows" would have been TRUE if we'd known its value. Only : * when all the inputs are known to be FALSE can we state confidently that : * the OR's result is FALSE. : */ : foreach(clause, clauses) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2745 11.76 : 5acab9: 48 85 db test %rbx,%rbx 0.00 : 5acabc: 74 42 je 5acb00 0.00 : 5acabe: 45 31 ed xor %r13d,%r13d 0.00 : 5acac1: eb 14 jmp 5acad7 0.00 : 5acac3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : clause_value = ExecEvalExpr(clausestate, econtext, isNull, NULL); : : /* : * if we have a non-null true result, then return it. : */ : if (*isNull) 0.00 : 5acac8: 41 bd 01 00 00 00 mov $0x1,%r13d : * that we "don't know" what the OR's result should be --- perhaps one of : * the "don't knows" would have been TRUE if we'd known its value. Only : * when all the inputs are known to be FALSE can we state confidently that : * the OR's result is FALSE. : */ : foreach(clause, clauses) 5.88 : 5acace: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5acad2: 48 85 db test %rbx,%rbx 0.00 : 5acad5: 74 31 je 5acb08 : { : ExprState *clausestate = (ExprState *) lfirst(clause); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2747 11.76 : 5acad7: 48 8b 03 mov (%rbx),%rax : Datum clause_value; : : clause_value = ExecEvalExpr(clausestate, econtext, isNull, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2750 29.41 : 5acada: 31 c9 xor %ecx,%ecx 0.00 : 5acadc: 4c 89 e2 mov %r12,%rdx 0.00 : 5acadf: 4c 89 f6 mov %r14,%rsi 0.00 : 5acae2: 48 89 c7 mov %rax,%rdi 5.88 : 5acae5: ff 50 10 callq *0x10(%rax) : : /* : * if we have a non-null true result, then return it. : */ : if (*isNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2755 5.88 : 5acae8: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5acaed: 75 d9 jne 5acac8 : AnyNull = true; /* remember we got a null */ : else if (DatumGetBool(clause_value)) 0.00 : 5acaef: 84 c0 test %al,%al 0.00 : 5acaf1: 74 db je 5acace : } : : /* AnyNull is true if at least one clause evaluated to NULL */ : *isNull = AnyNull; : return BoolGetDatum(false); : } 0.00 : 5acaf3: 5b pop %rbx 0.00 : 5acaf4: 41 5c pop %r12 0.00 : 5acaf6: 41 5d pop %r13 0.00 : 5acaf8: 41 5e pop %r14 0.00 : 5acafa: c9 leaveq 0.00 : 5acafb: c3 retq 0.00 : 5acafc: 0f 1f 40 00 nopl 0x0(%rax) : * that we "don't know" what the OR's result should be --- perhaps one of : * the "don't knows" would have been TRUE if we'd known its value. Only : * when all the inputs are known to be FALSE can we state confidently that : * the OR's result is FALSE. : */ : foreach(clause, clauses) 0.00 : 5acb00: 45 31 ed xor %r13d,%r13d 0.00 : 5acb03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : else if (DatumGetBool(clause_value)) : return clause_value; : } : : /* AnyNull is true if at least one clause evaluated to NULL */ : *isNull = AnyNull; 0.00 : 5acb08: 45 88 2c 24 mov %r13b,(%r12) 0.00 : 5acb0c: 31 c0 xor %eax,%eax : return BoolGetDatum(false); : } 0.00 : 5acb0e: 5b pop %rbx 0.00 : 5acb0f: 41 5c pop %r12 0.00 : 5acb11: 41 5d pop %r13 0.00 : 5acb13: 41 5e pop %r14 0.00 : 5acb15: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1018 13.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1016 13.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1016 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1016 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1017 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1020 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1021 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1021 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3160 : : } : } : : Datum : float8eq(PG_FUNCTION_ARGS) : { 13.64 : 6d3160: 55 push %rbp 13.64 : 6d3161: 48 89 e5 mov %rsp,%rbp 9.09 : 6d3164: 53 push %rbx 0.00 : 6d3165: 48 89 fb mov %rdi,%rbx 0.00 : 6d3168: 48 83 ec 08 sub $0x8,%rsp : float8 arg1 = PG_GETARG_FLOAT8(0); 0.00 : 6d316c: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d3170: e8 5b a8 0a 00 callq 77d9d0 : float8 arg2 = PG_GETARG_FLOAT8(1); 0.00 : 6d3175: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float8eq(PG_FUNCTION_ARGS) : { : float8 arg1 = PG_GETARG_FLOAT8(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1017 9.09 : 6d3179: f2 0f 11 45 f0 movsd %xmm0,-0x10(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1018 27.27 : 6d317e: e8 4d a8 0a 00 callq 77d9d0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) == 0); 0.00 : 6d3183: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 6d3187: f2 0f 10 45 f0 movsd -0x10(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1020 9.09 : 6d318c: e8 8f fd ff ff callq 6d2f20 0.00 : 6d3191: 85 c0 test %eax,%eax 0.00 : 6d3193: 0f 94 c0 sete %al : } 0.00 : 6d3196: 48 83 c4 08 add $0x8,%rsp : float8eq(PG_FUNCTION_ARGS) : { : float8 arg1 = PG_GETARG_FLOAT8(0); : float8 arg2 = PG_GETARG_FLOAT8(1); : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) == 0); 0.00 : 6d319a: 0f b6 c0 movzbl %al,%eax : } 0.00 : 6d319d: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1021 18.18 : 6d319e: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 46.15 ??:0 23.08 ??:0 15.38 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000032200 <__isnanf>: 23.08 : 32200: 66 0f 7e c2 movd %xmm0,%edx 46.15 : 32204: b8 00 00 80 7f mov $0x7f800000,%eax 7.69 : 32209: 81 e2 ff ff ff 7f and $0x7fffffff,%edx 7.69 : 3220f: 29 d0 sub %edx,%eax 15.38 : 32211: c1 e8 1f shr $0x1f,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 44.44 ??:0 33.33 ??:0 22.22 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000033540 : 33.33 : 33540: 48 85 ff test %rdi,%rdi 0.00 : 33543: 74 0b je 33550 22.22 : 33545: 31 c0 xor %eax,%eax 0.00 : 33547: b9 10 00 00 00 mov $0x10,%ecx 44.44 : 3354c: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 3354f: c3 retq 0.00 : 33550: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 33557: 00 00 0.00 : 33559: 48 8b 15 d8 e8 33 00 mov 0x33e8d8(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 33560: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 33567: b8 ff ff ff ff mov $0xffffffff,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cd560 <__close>: 60.00 : cd560: 83 3d 4d a1 2a 00 00 cmpl $0x0,0x2aa14d(%rip) # 3776b4 <__libc_multiple_threads> 20.00 : cd567: 75 10 jne cd579 <__close_nocancel+0x10> : : 00000000000cd569 <__close_nocancel>: 0.00 : cd569: b8 03 00 00 00 mov $0x3,%eax 0.00 : cd56e: 0f 05 syscall 20.00 : cd570: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd576: 73 31 jae cd5a9 <__close_nocancel+0x40> 0.00 : cd578: c3 retq 0.00 : cd579: 48 83 ec 08 sub $0x8,%rsp 0.00 : cd57d: e8 ae ac 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : cd582: 48 89 04 24 mov %rax,(%rsp) 0.00 : cd586: b8 03 00 00 00 mov $0x3,%eax 0.00 : cd58b: 0f 05 syscall 0.00 : cd58d: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : cd591: 48 89 c2 mov %rax,%rdx 0.00 : cd594: e8 f7 ac 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : cd599: 48 89 d0 mov %rdx,%rax 0.00 : cd59c: 48 83 c4 08 add $0x8,%rsp 0.00 : cd5a0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd5a6: 73 01 jae cd5a9 <__close_nocancel+0x40> 0.00 : cd5a8: c3 retq 0.00 : cd5a9: 48 8b 0d 88 48 2a 00 mov 0x2a4888(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cd5b0: 31 d2 xor %edx,%edx 0.00 : cd5b2: 48 29 c2 sub %rax,%rdx 0.00 : cd5b5: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cd5b8: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cd5bc: eb ea jmp cd5a8 <__close_nocancel+0x3f> Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 25.00 /home/Computational/mark/src/dbt3/src/dbgen/build.c:227 12.50 /home/Computational/mark/src/dbt3/src/dbgen/build.c:150 12.50 /home/Computational/mark/src/dbt3/src/dbgen/build.c:224 12.50 /home/Computational/mark/src/dbt3/src/dbgen/build.c:224 12.50 /home/Computational/mark/src/dbt3/src/dbgen/build.c:242 12.50 /home/Computational/mark/src/dbt3/src/dbgen/build.c:243 12.50 /home/Computational/mark/src/dbt3/src/dbgen/build.c:211 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000401a50 : : return; : } : : long : mk_order(DSS_HUGE index, order_t * o, long upd_num) : { 0.00 : 401a50: 41 57 push %r15 /home/Computational/mark/src/dbt3/src/dbgen/build.c:150 12.50 : 401a52: 41 56 push %r14 0.00 : 401a54: 41 55 push %r13 0.00 : 401a56: 49 89 f5 mov %rsi,%r13 0.00 : 401a59: 41 54 push %r12 0.00 : 401a5b: 55 push %rbp 0.00 : 401a5c: 48 89 fd mov %rdi,%rbp 0.00 : 401a5f: 53 push %rbx 0.00 : 401a60: 48 89 d3 mov %rdx,%rbx 0.00 : 401a63: 48 83 ec 58 sub $0x58,%rsp : char **mk_ascdate PROTO((void)); : int delta = 1; : static int bInit = 0; : static char szFormat[100]; : : if (!bInit) 0.00 : 401a67: 44 8b 1d b6 92 20 00 mov 0x2092b6(%rip),%r11d # 60ad24 0.00 : 401a6e: 45 85 db test %r11d,%r11d 0.00 : 401a71: 0f 84 c9 05 00 00 je 402040 : { : sprintf(szFormat, O_CLRK_FMT, 9, HUGE_FORMAT + 1); : bInit = 1; : } : if (asc_date == NULL) 0.00 : 401a77: 48 83 3d a9 92 20 00 cmpq $0x0,0x2092a9(%rip) # 60ad28 0.00 : 401a7e: 00 0.00 : 401a7f: 0f 84 e5 05 00 00 je 40206a : asc_date = mk_ascdate(); : mk_sparse(index, &o->okey, 0.00 : 401a85: 31 d2 xor %edx,%edx 0.00 : 401a87: 48 85 db test %rbx,%rbx 0.00 : 401a8a: 74 1f je 401aab 0.00 : 401a8c: 48 89 d8 mov %rbx,%rax 0.00 : 401a8f: 48 ba cf f7 53 e3 a5 movabs $0x20c49ba5e353f7cf,%rdx 0.00 : 401a96: 9b c4 20 0.00 : 401a99: 48 c1 fb 3f sar $0x3f,%rbx 0.00 : 401a9d: 48 f7 ea imul %rdx 0.00 : 401aa0: 48 c1 fa 07 sar $0x7,%rdx 0.00 : 401aa4: 48 29 da sub %rbx,%rdx 0.00 : 401aa7: 48 83 c2 01 add $0x1,%rdx : low_bits = (long) (i & ((1 << SPARSE_KEEP) - 1)); : *ok = *ok >> SPARSE_KEEP; : *ok = *ok << SPARSE_BITS; : *ok += seq; : *ok = *ok << SPARSE_KEEP; : *ok += low_bits; 0.00 : 401aab: 48 89 e8 mov %rbp,%rax 0.00 : 401aae: 83 e5 07 and $0x7,%ebp 0.00 : 401ab1: 48 c1 f8 03 sar $0x3,%rax 0.00 : 401ab5: 48 8d 04 82 lea (%rdx,%rax,4),%rax : } : if (asc_date == NULL) : asc_date = mk_ascdate(); : mk_sparse(index, &o->okey, : (upd_num == 0) ? 0 : 1 + upd_num / (10000 / UPD_PCT)); : if (scale >= 30000) 0.00 : 401ab9: 48 8b 15 d8 9c e0 12 mov 0x12e09cd8(%rip),%rdx # 1320b798 : low_bits = (long) (i & ((1 << SPARSE_KEEP) - 1)); : *ok = *ok >> SPARSE_KEEP; : *ok = *ok << SPARSE_BITS; : *ok += seq; : *ok = *ok << SPARSE_KEEP; : *ok += low_bits; 0.00 : 401ac0: 48 8d 44 c5 00 lea 0x0(%rbp,%rax,8),%rax : } : if (asc_date == NULL) : asc_date = mk_ascdate(); : mk_sparse(index, &o->okey, : (upd_num == 0) ? 0 : 1 + upd_num / (10000 / UPD_PCT)); : if (scale >= 30000) 0.00 : 401ac5: 48 81 fa 2f 75 00 00 cmp $0x752f,%rdx : low_bits = (long) (i & ((1 << SPARSE_KEEP) - 1)); : *ok = *ok >> SPARSE_KEEP; : *ok = *ok << SPARSE_BITS; : *ok += seq; : *ok = *ok << SPARSE_KEEP; : *ok += low_bits; 0.00 : 401acc: 49 89 45 00 mov %rax,0x0(%r13) : } : if (asc_date == NULL) : asc_date = mk_ascdate(); : mk_sparse(index, &o->okey, : (upd_num == 0) ? 0 : 1 + upd_num / (10000 / UPD_PCT)); : if (scale >= 30000) 0.00 : 401ad0: 0f 8e 4a 05 00 00 jle 402020 : RANDOM64(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); 0.00 : 401ad6: 48 0f af 15 5a 88 20 imul 0x20885a(%rip),%rdx # 60a338 0.00 : 401add: 00 0.00 : 401ade: 49 8d 7d 08 lea 0x8(%r13),%rdi 0.00 : 401ae2: b9 28 00 00 00 mov $0x28,%ecx 0.00 : 401ae7: be 01 00 00 00 mov $0x1,%esi 0.00 : 401aec: e8 3f 53 00 00 callq 406e30 : else : RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : while (o->custkey % CUST_MORTALITY == 0) 0.00 : 401af1: 49 8b 4d 08 mov 0x8(%r13),%rcx 0.00 : 401af5: 49 b8 56 55 55 55 55 movabs $0x5555555555555556,%r8 0.00 : 401afc: 55 55 55 0.00 : 401aff: 48 89 c8 mov %rcx,%rax 0.00 : 401b02: 49 f7 e8 imul %r8 0.00 : 401b05: 48 89 c8 mov %rcx,%rax 0.00 : 401b08: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 401b0c: 48 29 c2 sub %rax,%rdx 0.00 : 401b0f: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 401b13: 48 39 d1 cmp %rdx,%rcx 0.00 : 401b16: 75 4a jne 401b62 0.00 : 401b18: 48 8b 3d 79 9c e0 12 mov 0x12e09c79(%rip),%rdi # 1320b798 : mk_sparse(index, &o->okey, : (upd_num == 0) ? 0 : 1 + upd_num / (10000 / UPD_PCT)); : if (scale >= 30000) : RANDOM64(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : else : RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); 0.00 : 401b1f: be 01 00 00 00 mov $0x1,%esi 0.00 : 401b24: 0f 1f 40 00 nopl 0x0(%rax) : while (o->custkey % CUST_MORTALITY == 0) : { : o->custkey += delta; : o->custkey = MIN(o->custkey, O_CKEY_MAX); 0.00 : 401b28: 48 89 fa mov %rdi,%rdx : RANDOM64(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : else : RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : while (o->custkey % CUST_MORTALITY == 0) : { : o->custkey += delta; 0.00 : 401b2b: 48 63 c6 movslq %esi,%rax : o->custkey = MIN(o->custkey, O_CKEY_MAX); 0.00 : 401b2e: 48 0f af 15 02 88 20 imul 0x208802(%rip),%rdx # 60a338 0.00 : 401b35: 00 : RANDOM64(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : else : RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : while (o->custkey % CUST_MORTALITY == 0) : { : o->custkey += delta; 0.00 : 401b36: 48 01 c8 add %rcx,%rax : o->custkey = MIN(o->custkey, O_CKEY_MAX); 0.00 : 401b39: 48 39 d0 cmp %rdx,%rax 0.00 : 401b3c: 48 89 d1 mov %rdx,%rcx 0.00 : 401b3f: 48 0f 4e c8 cmovle %rax,%rcx : delta *= -1; 0.00 : 401b43: f7 de neg %esi : (upd_num == 0) ? 0 : 1 + upd_num / (10000 / UPD_PCT)); : if (scale >= 30000) : RANDOM64(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : else : RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : while (o->custkey % CUST_MORTALITY == 0) 0.00 : 401b45: 48 89 c8 mov %rcx,%rax 0.00 : 401b48: 49 f7 e8 imul %r8 0.00 : 401b4b: 48 89 c8 mov %rcx,%rax 0.00 : 401b4e: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 401b52: 48 29 c2 sub %rax,%rdx 0.00 : 401b55: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 401b59: 48 39 d1 cmp %rdx,%rcx 0.00 : 401b5c: 74 ca je 401b28 0.00 : 401b5e: 49 89 4d 08 mov %rcx,0x8(%r13) : o->custkey = MIN(o->custkey, O_CKEY_MAX); : delta *= -1; : } : : : RANDOM(tmp_date, O_ODATE_MIN, O_ODATE_MAX, O_ODATE_SD); 0.00 : 401b62: 48 8d 7c 24 38 lea 0x38(%rsp),%rdi 0.00 : 401b67: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 401b6c: ba c6 70 01 00 mov $0x170c6,%edx 0.00 : 401b71: be 61 67 01 00 mov $0x16761,%esi : strcpy(o->odate, asc_date[tmp_date - STARTDATE]); : : pick_str(&o_priority_set, O_PRIO_SD, o->opriority); : RANDOM(clk_num, 1, MAX((scale * O_CLRK_SCL), O_CLRK_SCL), O_CLRK_SD); : sprintf(o->clerk, szFormat, O_CLRK_TAG, clk_num); : TEXT(O_CMNT_LEN, O_CMNT_SD, o->comment); 0.00 : 401b76: 49 8d 5d 68 lea 0x68(%r13),%rbx : : o->totalprice = 0; : o->orderstatus = 'O'; : ocnt = 0; : : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); 0.00 : 401b7a: 4d 89 ec mov %r13,%r12 : o->custkey = MIN(o->custkey, O_CKEY_MAX); : delta *= -1; : } : : : RANDOM(tmp_date, O_ODATE_MIN, O_ODATE_MAX, O_ODATE_SD); 0.00 : 401b7d: e8 ae 29 00 00 callq 404530 : strcpy(o->odate, asc_date[tmp_date - STARTDATE]); 0.00 : 401b82: 48 8b 15 9f 91 20 00 mov 0x20919f(%rip),%rdx # 60ad28 0.00 : 401b89: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 401b8e: 49 8d 7d 20 lea 0x20(%r13),%rdi 0.00 : 401b92: 48 8b b4 c2 f8 c4 f4 mov -0xb3b08(%rdx,%rax,8),%rsi 0.00 : 401b99: ff 0.00 : 401b9a: e8 01 f2 ff ff callq 400da0 : : pick_str(&o_priority_set, O_PRIO_SD, o->opriority); 0.00 : 401b9f: 49 8d 55 2d lea 0x2d(%r13),%rdx 0.00 : 401ba3: be 26 00 00 00 mov $0x26,%esi 0.00 : 401ba8: bf 80 b7 20 13 mov $0x1320b780,%edi 0.00 : 401bad: e8 de 20 00 00 callq 403c90 : RANDOM(clk_num, 1, MAX((scale * O_CLRK_SCL), O_CLRK_SCL), O_CLRK_SD); 0.00 : 401bb2: 4c 8b 15 df 9b e0 12 mov 0x12e09bdf(%rip),%r10 # 1320b798 0.00 : 401bb9: b8 e8 03 00 00 mov $0x3e8,%eax 0.00 : 401bbe: 48 8d 7c 24 18 lea 0x18(%rsp),%rdi 0.00 : 401bc3: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 401bc8: be 01 00 00 00 mov $0x1,%esi 0.00 : 401bcd: 49 69 d2 e8 03 00 00 imul $0x3e8,%r10,%rdx 0.00 : 401bd4: 48 81 fa e8 03 00 00 cmp $0x3e8,%rdx 0.00 : 401bdb: 48 0f 4c d0 cmovl %rax,%rdx : : o->totalprice = 0; : o->orderstatus = 'O'; : ocnt = 0; : : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); 0.00 : 401bdf: 45 31 f6 xor %r14d,%r14d : : RANDOM(tmp_date, O_ODATE_MIN, O_ODATE_MAX, O_ODATE_SD); : strcpy(o->odate, asc_date[tmp_date - STARTDATE]); : : pick_str(&o_priority_set, O_PRIO_SD, o->opriority); : RANDOM(clk_num, 1, MAX((scale * O_CLRK_SCL), O_CLRK_SCL), O_CLRK_SD); 0.00 : 401be2: e8 49 29 00 00 callq 404530 : sprintf(o->clerk, szFormat, O_CLRK_TAG, clk_num); 0.00 : 401be7: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx 0.00 : 401bec: 49 8d 7d 42 lea 0x42(%r13),%rdi 0.00 : 401bf0: ba bb 70 40 00 mov $0x4070bb,%edx 0.00 : 401bf5: be c0 ac 60 00 mov $0x60acc0,%esi 0.00 : 401bfa: 31 c0 xor %eax,%eax 0.00 : 401bfc: e8 1f f3 ff ff callq 400f20 : TEXT(O_CMNT_LEN, O_CMNT_SD, o->comment); 0.00 : 401c01: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 401c06: ba 4e 00 00 00 mov $0x4e,%edx 0.00 : 401c0b: be 13 00 00 00 mov $0x13,%esi 0.00 : 401c10: 48 89 df mov %rbx,%rdi 0.00 : 401c13: e8 a8 4c 00 00 callq 4068c0 : o->clen = (int)strlen(o->comment); 0.00 : 401c18: 48 89 df mov %rbx,%rdi 0.00 : 401c1b: e8 c0 f1 ff ff callq 400de0 : : o->totalprice = 0; : o->orderstatus = 'O'; : ocnt = 0; : : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); 0.00 : 401c20: 49 8d 7d 60 lea 0x60(%r13),%rdi : : pick_str(&o_priority_set, O_PRIO_SD, o->opriority); : RANDOM(clk_num, 1, MAX((scale * O_CLRK_SCL), O_CLRK_SCL), O_CLRK_SD); : sprintf(o->clerk, szFormat, O_CLRK_TAG, clk_num); : TEXT(O_CMNT_LEN, O_CMNT_SD, o->comment); : o->clen = (int)strlen(o->comment); 0.00 : 401c24: 41 89 85 b8 00 00 00 mov %eax,0xb8(%r13) : #ifdef DEBUG : if (o->clen > O_CMNT_MAX) : fprintf(stderr, "comment error: O%d\n", index); : #endif /* DEBUG */ : o->spriority = 0; 0.00 : 401c2b: 49 c7 45 58 00 00 00 movq $0x0,0x58(%r13) 0.00 : 401c32: 00 : : o->totalprice = 0; 0.00 : 401c33: 49 c7 45 18 00 00 00 movq $0x0,0x18(%r13) 0.00 : 401c3a: 00 : o->orderstatus = 'O'; 0.00 : 401c3b: 41 c6 45 10 4f movb $0x4f,0x10(%r13) : ocnt = 0; : : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); 0.00 : 401c40: b9 2b 00 00 00 mov $0x2b,%ecx 0.00 : 401c45: ba 07 00 00 00 mov $0x7,%edx 0.00 : 401c4a: be 01 00 00 00 mov $0x1,%esi 0.00 : 401c4f: e8 dc 28 00 00 callq 404530 0.00 : 401c54: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 401c5b: 00 00 : for (lcnt = 0; lcnt < o->lines; lcnt++) 0.00 : 401c5d: e9 37 02 00 00 jmpq 401e99 0.00 : 401c62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : pick_str(&l_instruct_set, L_SHIP_SD, o->l[lcnt].shipinstruct); : pick_str(&l_smode_set, L_SMODE_SD, o->l[lcnt].shipmode); : TEXT(L_CMNT_LEN, L_CMNT_SD, o->l[lcnt].comment); : o->l[lcnt].clen = (int)strlen(o->l[lcnt].comment); : if (scale >= 30000) : RANDOM64(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); 0.00 : 401c68: 48 0f af 15 20 86 20 imul 0x208620(%rip),%rdx # 60a290 0.00 : 401c6f: 00 0.00 : 401c70: 49 8d bc 2d c8 00 00 lea 0xc8(%r13,%rbp,1),%rdi 0.00 : 401c77: 00 0.00 : 401c78: b9 13 00 00 00 mov $0x13,%ecx 0.00 : 401c7d: be 01 00 00 00 mov $0x1,%esi 0.00 : 401c82: e8 a9 51 00 00 callq 406e30 : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : rprice = rpb_routine(o->l[lcnt].partkey); 0.00 : 401c87: 49 8b bc 24 c8 00 00 mov 0xc8(%r12),%rdi 0.00 : 401c8e: 00 0.00 : 401c8f: e8 bc f3 ff ff callq 401050 : RANDOM(supp_num, 0, 3, L_SKEY_SD); 0.00 : 401c94: 48 8d 7c 24 10 lea 0x10(%rsp),%rdi 0.00 : 401c99: 31 f6 xor %esi,%esi 0.00 : 401c9b: b9 14 00 00 00 mov $0x14,%ecx 0.00 : 401ca0: ba 03 00 00 00 mov $0x3,%edx : o->l[lcnt].clen = (int)strlen(o->l[lcnt].comment); : if (scale >= 30000) : RANDOM64(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : rprice = rpb_routine(o->l[lcnt].partkey); 0.00 : 401ca5: 48 89 c3 mov %rax,%rbx : RANDOM(supp_num, 0, 3, L_SKEY_SD); 0.00 : 401ca8: e8 83 28 00 00 callq 404530 : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); 0.00 : 401cad: 48 8b 0d e4 9a e0 12 mov 0x12e09ae4(%rip),%rcx # 1320b798 0.00 : 401cb4: 49 8b bc 24 c8 00 00 mov 0xc8(%r12),%rdi 0.00 : 401cbb: 00 0.00 : 401cbc: 48 0f af 0d 3c 86 20 imul 0x20863c(%rip),%rcx # 60a300 0.00 : 401cc3: 00 0.00 : 401cc4: 48 8d 57 ff lea -0x1(%rdi),%rdx 0.00 : 401cc8: 48 89 d0 mov %rdx,%rax 0.00 : 401ccb: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 401ccf: 48 f7 f9 idiv %rcx /home/Computational/mark/src/dbt3/src/dbgen/build.c:224 12.50 : 401cd2: 48 85 c9 test %rcx,%rcx 0.00 : 401cd5: 48 89 c6 mov %rax,%rsi 0.00 : 401cd8: 48 8d 41 03 lea 0x3(%rcx),%rax 0.00 : 401cdc: 48 0f 49 c1 cmovns %rcx,%rax 0.00 : 401ce0: 48 c1 f8 02 sar $0x2,%rax 0.00 : 401ce4: 48 8d 04 06 lea (%rsi,%rax,1),%rax : o->l[lcnt].eprice = rprice * o->l[lcnt].quantity; : : o->totalprice += 0.00 : 401ce8: be 64 00 00 00 mov $0x64,%esi 0.00 : 401ced: 49 2b b4 24 f0 00 00 sub 0xf0(%r12),%rsi 0.00 : 401cf4: 00 : RANDOM64(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : rprice = rpb_routine(o->l[lcnt].partkey); : RANDOM(supp_num, 0, 3, L_SKEY_SD); : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); 0.00 : 401cf5: 48 0f af 44 24 10 imul 0x10(%rsp),%rax 0.00 : 401cfb: 48 8d 14 38 lea (%rax,%rdi,1),%rdx : ((o->l[lcnt].eprice * : ((long) 100 - o->l[lcnt].discount)) / (long) PENNIES) * : ((long) 100 + o->l[lcnt].tax) : / (long) PENNIES; : : RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD); 0.00 : 401cff: 48 8d 7c 24 30 lea 0x30(%rsp),%rdi : RANDOM64(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : rprice = rpb_routine(o->l[lcnt].partkey); : RANDOM(supp_num, 0, 3, L_SKEY_SD); : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); 0.00 : 401d04: 48 89 d0 mov %rdx,%rax 0.00 : 401d07: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 401d0b: 48 f7 f9 idiv %rcx : o->l[lcnt].eprice = rprice * o->l[lcnt].quantity; : : o->totalprice += /home/Computational/mark/src/dbt3/src/dbgen/build.c:227 25.00 : 401d0e: 48 b8 0b d7 a3 70 3d movabs $0xa3d70a3d70a3d70b,%rax 0.00 : 401d15: 0a d7 a3 : RANDOM64(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : rprice = rpb_routine(o->l[lcnt].partkey); : RANDOM(supp_num, 0, 3, L_SKEY_SD); : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); /home/Computational/mark/src/dbt3/src/dbgen/build.c:224 12.50 : 401d18: 48 83 c2 01 add $0x1,%rdx 0.00 : 401d1c: 49 89 94 24 d0 00 00 mov %rdx,0xd0(%r12) 0.00 : 401d23: 00 : o->l[lcnt].eprice = rprice * o->l[lcnt].quantity; 0.00 : 401d24: 48 89 da mov %rbx,%rdx : c_date += tmp_date; : RANDOM(r_date, L_RDTE_MIN, L_RDTE_MAX, L_RDTE_SD); : r_date += s_date; : : : strcpy(o->l[lcnt].sdate, asc_date[s_date - STARTDATE]); 0.00 : 401d27: 4b 8d 1c b6 lea (%r14,%r14,4),%rbx : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : rprice = rpb_routine(o->l[lcnt].partkey); : RANDOM(supp_num, 0, 3, L_SKEY_SD); : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); : o->l[lcnt].eprice = rprice * o->l[lcnt].quantity; 0.00 : 401d2b: 49 0f af 94 24 e0 00 imul 0xe0(%r12),%rdx 0.00 : 401d32: 00 00 : c_date += tmp_date; : RANDOM(r_date, L_RDTE_MIN, L_RDTE_MAX, L_RDTE_SD); : r_date += s_date; : : : strcpy(o->l[lcnt].sdate, asc_date[s_date - STARTDATE]); 0.00 : 401d34: 48 8d 1c 9b lea (%rbx,%rbx,4),%rbx 0.00 : 401d38: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 401d3c: 49 8d ac 1d 00 01 00 lea 0x100(%r13,%rbx,1),%rbp 0.00 : 401d43: 00 : rprice = rpb_routine(o->l[lcnt].partkey); : RANDOM(supp_num, 0, 3, L_SKEY_SD); : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); : o->l[lcnt].eprice = rprice * o->l[lcnt].quantity; : : o->totalprice += 0.00 : 401d44: 48 0f af f2 imul %rdx,%rsi : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : rprice = rpb_routine(o->l[lcnt].partkey); : RANDOM(supp_num, 0, 3, L_SKEY_SD); : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); : o->l[lcnt].eprice = rprice * o->l[lcnt].quantity; 0.00 : 401d48: 49 89 94 24 e8 00 00 mov %rdx,0xe8(%r12) 0.00 : 401d4f: 00 : : o->totalprice += 0.00 : 401d50: 48 f7 ee imul %rsi 0.00 : 401d53: 49 8b 84 24 f8 00 00 mov 0xf8(%r12),%rax 0.00 : 401d5a: 00 0.00 : 401d5b: 48 83 c0 64 add $0x64,%rax 0.00 : 401d5f: 48 8d 0c 32 lea (%rdx,%rsi,1),%rcx 0.00 : 401d63: 48 c1 fe 3f sar $0x3f,%rsi 0.00 : 401d67: 48 c1 f9 06 sar $0x6,%rcx 0.00 : 401d6b: 48 29 f1 sub %rsi,%rcx : ((o->l[lcnt].eprice * : ((long) 100 - o->l[lcnt].discount)) / (long) PENNIES) * : ((long) 100 + o->l[lcnt].tax) : / (long) PENNIES; : : RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD); 0.00 : 401d6e: be 01 00 00 00 mov $0x1,%esi : rprice = rpb_routine(o->l[lcnt].partkey); : RANDOM(supp_num, 0, 3, L_SKEY_SD); : PART_SUPP_BRIDGE(o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num); : o->l[lcnt].eprice = rprice * o->l[lcnt].quantity; : : o->totalprice += 0.00 : 401d73: 48 0f af c8 imul %rax,%rcx 0.00 : 401d77: 48 b8 0b d7 a3 70 3d movabs $0xa3d70a3d70a3d70b,%rax 0.00 : 401d7e: 0a d7 a3 0.00 : 401d81: 48 f7 e9 imul %rcx 0.00 : 401d84: 48 01 ca add %rcx,%rdx 0.00 : 401d87: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 401d8b: 48 c1 fa 06 sar $0x6,%rdx 0.00 : 401d8f: 48 29 ca sub %rcx,%rdx 0.00 : 401d92: 49 01 55 18 add %rdx,0x18(%r13) : ((o->l[lcnt].eprice * : ((long) 100 - o->l[lcnt].discount)) / (long) PENNIES) * : ((long) 100 + o->l[lcnt].tax) : / (long) PENNIES; : : RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD); 0.00 : 401d96: b9 15 00 00 00 mov $0x15,%ecx 0.00 : 401d9b: ba 79 00 00 00 mov $0x79,%edx 0.00 : 401da0: e8 8b 27 00 00 callq 404530 : s_date += tmp_date; : RANDOM(c_date, L_CDTE_MIN, L_CDTE_MAX, L_CDTE_SD); 0.00 : 401da5: 48 8d 7c 24 20 lea 0x20(%rsp),%rdi 0.00 : 401daa: b9 16 00 00 00 mov $0x16,%ecx 0.00 : 401daf: ba 5a 00 00 00 mov $0x5a,%edx 0.00 : 401db4: be 1e 00 00 00 mov $0x1e,%esi : ((long) 100 - o->l[lcnt].discount)) / (long) PENNIES) * : ((long) 100 + o->l[lcnt].tax) : / (long) PENNIES; : : RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD); : s_date += tmp_date; 0.00 : 401db9: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 401dbe: 48 01 44 24 30 add %rax,0x30(%rsp) : RANDOM(c_date, L_CDTE_MIN, L_CDTE_MAX, L_CDTE_SD); 0.00 : 401dc3: e8 68 27 00 00 callq 404530 : c_date += tmp_date; : RANDOM(r_date, L_RDTE_MIN, L_RDTE_MAX, L_RDTE_SD); 0.00 : 401dc8: 48 8d 7c 24 28 lea 0x28(%rsp),%rdi 0.00 : 401dcd: b9 17 00 00 00 mov $0x17,%ecx 0.00 : 401dd2: ba 1e 00 00 00 mov $0x1e,%edx 0.00 : 401dd7: be 01 00 00 00 mov $0x1,%esi : / (long) PENNIES; : : RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD); : s_date += tmp_date; : RANDOM(c_date, L_CDTE_MIN, L_CDTE_MAX, L_CDTE_SD); : c_date += tmp_date; 0.00 : 401ddc: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 401de1: 48 01 44 24 20 add %rax,0x20(%rsp) : RANDOM(r_date, L_RDTE_MIN, L_RDTE_MAX, L_RDTE_SD); 0.00 : 401de6: e8 45 27 00 00 callq 404530 : r_date += s_date; 0.00 : 401deb: 48 8b 54 24 30 mov 0x30(%rsp),%rdx : : : strcpy(o->l[lcnt].sdate, asc_date[s_date - STARTDATE]); 0.00 : 401df0: 48 8b 05 31 8f 20 00 mov 0x208f31(%rip),%rax # 60ad28 0.00 : 401df7: 48 8d 7d 0f lea 0xf(%rbp),%rdi : RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD); : s_date += tmp_date; : RANDOM(c_date, L_CDTE_MIN, L_CDTE_MAX, L_CDTE_SD); : c_date += tmp_date; : RANDOM(r_date, L_RDTE_MIN, L_RDTE_MAX, L_RDTE_SD); : r_date += s_date; 0.00 : 401dfb: 48 01 54 24 28 add %rdx,0x28(%rsp) : : : strcpy(o->l[lcnt].sdate, asc_date[s_date - STARTDATE]); 0.00 : 401e00: 48 8b b4 d0 f8 c4 f4 mov -0xb3b08(%rax,%rdx,8),%rsi 0.00 : 401e07: ff 0.00 : 401e08: e8 93 ef ff ff callq 400da0 : strcpy(o->l[lcnt].cdate, asc_date[c_date - STARTDATE]); 0.00 : 401e0d: 48 8b 15 14 8f 20 00 mov 0x208f14(%rip),%rdx # 60ad28 0.00 : 401e14: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 401e19: 48 8d 7d 02 lea 0x2(%rbp),%rdi 0.00 : 401e1d: 48 8b b4 c2 f8 c4 f4 mov -0xb3b08(%rdx,%rax,8),%rsi 0.00 : 401e24: ff /home/Computational/mark/src/dbt3/src/dbgen/build.c:242 12.50 : 401e25: e8 76 ef ff ff callq 400da0 : strcpy(o->l[lcnt].rdate, asc_date[r_date - STARTDATE]); 0.00 : 401e2a: 48 8b 15 f7 8e 20 00 mov 0x208ef7(%rip),%rdx # 60ad28 /home/Computational/mark/src/dbt3/src/dbgen/build.c:243 12.50 : 401e31: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 401e36: 49 8d bc 1d 1c 01 00 lea 0x11c(%r13,%rbx,1),%rdi 0.00 : 401e3d: 00 0.00 : 401e3e: 48 8b b4 c2 f8 c4 f4 mov -0xb3b08(%rdx,%rax,8),%rsi 0.00 : 401e45: ff 0.00 : 401e46: e8 55 ef ff ff callq 400da0 : : : if (julian(r_date) <= CURRENTDATE) 0.00 : 401e4b: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 401e50: e8 4b 1a 00 00 callq 4038a0 0.00 : 401e55: 48 3d c0 73 01 00 cmp $0x173c0,%rax 0.00 : 401e5b: 0f 8e 5f 01 00 00 jle 401fc0 : { : pick_str(&l_rflag_set, L_RFLG_SD, tmp_str); : o->l[lcnt].rflag[0] = *tmp_str; : } : else : o->l[lcnt].rflag[0] = 'N'; 0.00 : 401e61: 41 c6 84 24 00 01 00 movb $0x4e,0x100(%r12) 0.00 : 401e68: 00 4e : : if (julian(s_date) <= CURRENTDATE) 0.00 : 401e6a: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 401e6f: e8 2c 1a 00 00 callq 4038a0 0.00 : 401e74: 48 3d c0 73 01 00 cmp $0x173c0,%rax 0.00 : 401e7a: 0f 8f 30 01 00 00 jg 401fb0 : { : ocnt++; 0.00 : 401e80: 48 83 44 24 08 01 addq $0x1,0x8(%rsp) : o->l[lcnt].lstatus[0] = 'F'; 0.00 : 401e86: 41 c6 84 24 01 01 00 movb $0x46,0x101(%r12) 0.00 : 401e8d: 00 46 : } : else : o->l[lcnt].lstatus[0] = 'O'; 0.00 : 401e8f: 49 81 c4 c8 00 00 00 add $0xc8,%r12 0.00 : 401e96: 4d 89 fe mov %r15,%r14 : o->totalprice = 0; : o->orderstatus = 'O'; : ocnt = 0; : : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); : for (lcnt = 0; lcnt < o->lines; lcnt++) 0.00 : 401e99: 49 8b 45 60 mov 0x60(%r13),%rax 0.00 : 401e9d: 49 39 c6 cmp %rax,%r14 0.00 : 401ea0: 0f 8d 4a 01 00 00 jge 401ff0 : { : o->l[lcnt].okey = o->okey;; 0.00 : 401ea6: 49 8b 45 00 mov 0x0(%r13),%rax : o->l[lcnt].lcnt = lcnt + 1; 0.00 : 401eaa: 4d 8d 7e 01 lea 0x1(%r14),%r15 : RANDOM(o->l[lcnt].quantity, L_QTY_MIN, L_QTY_MAX, L_QTY_SD); 0.00 : 401eae: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : 401eb3: ba 32 00 00 00 mov $0x32,%edx /home/Computational/mark/src/dbt3/src/dbgen/build.c:211 12.50 : 401eb8: be 01 00 00 00 mov $0x1,%esi : : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); : for (lcnt = 0; lcnt < o->lines; lcnt++) : { : o->l[lcnt].okey = o->okey;; : o->l[lcnt].lcnt = lcnt + 1; 0.00 : 401ebd: 4d 89 bc 24 d8 00 00 mov %r15,0xd8(%r12) 0.00 : 401ec4: 00 : ocnt = 0; : : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); : for (lcnt = 0; lcnt < o->lines; lcnt++) : { : o->l[lcnt].okey = o->okey;; 0.00 : 401ec5: 49 89 84 24 c0 00 00 mov %rax,0xc0(%r12) 0.00 : 401ecc: 00 : o->l[lcnt].lcnt = lcnt + 1; : RANDOM(o->l[lcnt].quantity, L_QTY_MIN, L_QTY_MAX, L_QTY_SD); 0.00 : 401ecd: 4b 8d 04 b6 lea (%r14,%r14,4),%rax 0.00 : 401ed1: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 401ed5: 48 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%rbp 0.00 : 401edc: 00 : RANDOM(o->l[lcnt].discount, L_DCNT_MIN, L_DCNT_MAX, L_DCNT_SD); 0.00 : 401edd: 49 8d 9c 2d f0 00 00 lea 0xf0(%r13,%rbp,1),%rbx 0.00 : 401ee4: 00 : RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD); : for (lcnt = 0; lcnt < o->lines; lcnt++) : { : o->l[lcnt].okey = o->okey;; : o->l[lcnt].lcnt = lcnt + 1; : RANDOM(o->l[lcnt].quantity, L_QTY_MIN, L_QTY_MAX, L_QTY_SD); 0.00 : 401ee5: 49 8d bc 2d e0 00 00 lea 0xe0(%r13,%rbp,1),%rdi 0.00 : 401eec: 00 0.00 : 401eed: e8 3e 26 00 00 callq 404530 : RANDOM(o->l[lcnt].discount, L_DCNT_MIN, L_DCNT_MAX, L_DCNT_SD); 0.00 : 401ef2: 31 f6 xor %esi,%esi 0.00 : 401ef4: 48 89 df mov %rbx,%rdi 0.00 : 401ef7: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 401efc: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 401f01: e8 2a 26 00 00 callq 404530 : RANDOM(o->l[lcnt].tax, L_TAX_MIN, L_TAX_MAX, L_TAX_SD); 0.00 : 401f06: 48 8d 7b 08 lea 0x8(%rbx),%rdi 0.00 : 401f0a: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 401f0f: 31 f6 xor %esi,%esi 0.00 : 401f11: ba 08 00 00 00 mov $0x8,%edx : pick_str(&l_instruct_set, L_SHIP_SD, o->l[lcnt].shipinstruct); : pick_str(&l_smode_set, L_SMODE_SD, o->l[lcnt].shipmode); : TEXT(L_CMNT_LEN, L_CMNT_SD, o->l[lcnt].comment); 0.00 : 401f16: 49 8d 9c 2d 53 01 00 lea 0x153(%r13,%rbp,1),%rbx 0.00 : 401f1d: 00 : { : o->l[lcnt].okey = o->okey;; : o->l[lcnt].lcnt = lcnt + 1; : RANDOM(o->l[lcnt].quantity, L_QTY_MIN, L_QTY_MAX, L_QTY_SD); : RANDOM(o->l[lcnt].discount, L_DCNT_MIN, L_DCNT_MAX, L_DCNT_SD); : RANDOM(o->l[lcnt].tax, L_TAX_MIN, L_TAX_MAX, L_TAX_SD); 0.00 : 401f1e: e8 0d 26 00 00 callq 404530 : pick_str(&l_instruct_set, L_SHIP_SD, o->l[lcnt].shipinstruct); 0.00 : 401f23: 49 8d 94 2d 29 01 00 lea 0x129(%r13,%rbp,1),%rdx 0.00 : 401f2a: 00 0.00 : 401f2b: be 11 00 00 00 mov $0x11,%esi 0.00 : 401f30: bf 60 b6 20 13 mov $0x1320b660,%edi 0.00 : 401f35: e8 56 1d 00 00 callq 403c90 : pick_str(&l_smode_set, L_SMODE_SD, o->l[lcnt].shipmode); 0.00 : 401f3a: 49 8d 94 2d 3e 01 00 lea 0x13e(%r13,%rbp,1),%rdx 0.00 : 401f41: 00 0.00 : 401f42: be 12 00 00 00 mov $0x12,%esi 0.00 : 401f47: bf 80 b5 20 13 mov $0x1320b580,%edi 0.00 : 401f4c: e8 3f 1d 00 00 callq 403c90 : TEXT(L_CMNT_LEN, L_CMNT_SD, o->l[lcnt].comment); 0.00 : 401f51: ba 2b 00 00 00 mov $0x2b,%edx 0.00 : 401f56: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 401f5b: be 0a 00 00 00 mov $0xa,%esi 0.00 : 401f60: 48 89 df mov %rbx,%rdi 0.00 : 401f63: e8 58 49 00 00 callq 4068c0 : o->l[lcnt].clen = (int)strlen(o->l[lcnt].comment); 0.00 : 401f68: 48 89 df mov %rbx,%rdi 0.00 : 401f6b: e8 70 ee ff ff callq 400de0 : if (scale >= 30000) 0.00 : 401f70: 48 8b 15 21 98 e0 12 mov 0x12e09821(%rip),%rdx # 1320b798 : RANDOM(o->l[lcnt].discount, L_DCNT_MIN, L_DCNT_MAX, L_DCNT_SD); : RANDOM(o->l[lcnt].tax, L_TAX_MIN, L_TAX_MAX, L_TAX_SD); : pick_str(&l_instruct_set, L_SHIP_SD, o->l[lcnt].shipinstruct); : pick_str(&l_smode_set, L_SMODE_SD, o->l[lcnt].shipmode); : TEXT(L_CMNT_LEN, L_CMNT_SD, o->l[lcnt].comment); : o->l[lcnt].clen = (int)strlen(o->l[lcnt].comment); 0.00 : 401f77: 41 89 84 24 80 01 00 mov %eax,0x180(%r12) 0.00 : 401f7e: 00 : if (scale >= 30000) 0.00 : 401f7f: 48 81 fa 2f 75 00 00 cmp $0x752f,%rdx 0.00 : 401f86: 0f 8f dc fc ff ff jg 401c68 : RANDOM64(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); : else : RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD); 0.00 : 401f8c: 48 0f af 15 fc 82 20 imul 0x2082fc(%rip),%rdx # 60a290 0.00 : 401f93: 00 0.00 : 401f94: 49 8d bc 2d c8 00 00 lea 0xc8(%r13,%rbp,1),%rdi 0.00 : 401f9b: 00 0.00 : 401f9c: b9 13 00 00 00 mov $0x13,%ecx 0.00 : 401fa1: be 01 00 00 00 mov $0x1,%esi 0.00 : 401fa6: e8 85 25 00 00 callq 404530 0.00 : 401fab: e9 d7 fc ff ff jmpq 401c87 : { : ocnt++; : o->l[lcnt].lstatus[0] = 'F'; : } : else : o->l[lcnt].lstatus[0] = 'O'; 0.00 : 401fb0: 41 c6 84 24 01 01 00 movb $0x4f,0x101(%r12) 0.00 : 401fb7: 00 4f 0.00 : 401fb9: e9 d1 fe ff ff jmpq 401e8f 0.00 : 401fbe: 66 90 xchg %ax,%ax : strcpy(o->l[lcnt].rdate, asc_date[r_date - STARTDATE]); : : : if (julian(r_date) <= CURRENTDATE) : { : pick_str(&l_rflag_set, L_RFLG_SD, tmp_str); 0.00 : 401fc0: 48 8d 54 24 40 lea 0x40(%rsp),%rdx 0.00 : 401fc5: be 18 00 00 00 mov $0x18,%esi 0.00 : 401fca: bf 80 b6 20 13 mov $0x1320b680,%edi 0.00 : 401fcf: e8 bc 1c 00 00 callq 403c90 : o->l[lcnt].rflag[0] = *tmp_str; 0.00 : 401fd4: 0f b6 44 24 40 movzbl 0x40(%rsp),%eax 0.00 : 401fd9: 41 88 84 24 00 01 00 mov %al,0x100(%r12) 0.00 : 401fe0: 00 0.00 : 401fe1: e9 84 fe ff ff jmpq 401e6a 0.00 : 401fe6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 401fed: 00 00 00 : } : else : o->l[lcnt].lstatus[0] = 'O'; : } : : if (ocnt > 0) 0.00 : 401ff0: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 401ff6: 74 05 je 401ffd : o->orderstatus = 'P'; 0.00 : 401ff8: 41 c6 45 10 50 movb $0x50,0x10(%r13) : if (ocnt == o->lines) 0.00 : 401ffd: 48 39 44 24 08 cmp %rax,0x8(%rsp) 0.00 : 402002: 75 05 jne 402009 : o->orderstatus = 'F'; 0.00 : 402004: 41 c6 45 10 46 movb $0x46,0x10(%r13) : : return (0); : } 0.00 : 402009: 48 83 c4 58 add $0x58,%rsp 0.00 : 40200d: 31 c0 xor %eax,%eax 0.00 : 40200f: 5b pop %rbx 0.00 : 402010: 5d pop %rbp 0.00 : 402011: 41 5c pop %r12 0.00 : 402013: 41 5d pop %r13 0.00 : 402015: 41 5e pop %r14 0.00 : 402017: 41 5f pop %r15 0.00 : 402019: c3 retq 0.00 : 40201a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : mk_sparse(index, &o->okey, : (upd_num == 0) ? 0 : 1 + upd_num / (10000 / UPD_PCT)); : if (scale >= 30000) : RANDOM64(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); : else : RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD); 0.00 : 402020: 48 0f af 15 10 83 20 imul 0x208310(%rip),%rdx # 60a338 0.00 : 402027: 00 0.00 : 402028: 49 8d 7d 08 lea 0x8(%r13),%rdi 0.00 : 40202c: b9 28 00 00 00 mov $0x28,%ecx 0.00 : 402031: be 01 00 00 00 mov $0x1,%esi 0.00 : 402036: e8 f5 24 00 00 callq 404530 0.00 : 40203b: e9 b1 fa ff ff jmpq 401af1 : static int bInit = 0; : static char szFormat[100]; : : if (!bInit) : { : sprintf(szFormat, O_CLRK_FMT, 9, HUGE_FORMAT + 1); 0.00 : 402040: b9 83 70 40 00 mov $0x407083,%ecx 0.00 : 402045: ba 09 00 00 00 mov $0x9,%edx 0.00 : 40204a: be 87 70 40 00 mov $0x407087,%esi 0.00 : 40204f: bf c0 ac 60 00 mov $0x60acc0,%edi 0.00 : 402054: 31 c0 xor %eax,%eax 0.00 : 402056: e8 c5 ee ff ff callq 400f20 : bInit = 1; 0.00 : 40205b: c7 05 bf 8c 20 00 01 movl $0x1,0x208cbf(%rip) # 60ad24 0.00 : 402062: 00 00 00 0.00 : 402065: e9 0d fa ff ff jmpq 401a77 : } : if (asc_date == NULL) : asc_date = mk_ascdate(); 0.00 : 40206a: e8 31 1a 00 00 callq 403aa0 0.00 : 40206f: 48 89 05 b2 8c 20 00 mov %rax,0x208cb2(%rip) # 60ad28 0.00 : 402076: e9 0a fa ff ff jmpq 401a85 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 60.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:902 13.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:902 13.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:902 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:907 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:907 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d80e0 : : } : } : : Datum : float4eq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:902 13.33 : 6d80e0: 55 push %rbp 60.00 : 6d80e1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d80e4: 53 push %rbx 13.33 : 6d80e5: 48 89 fb mov %rdi,%rbx 0.00 : 6d80e8: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d80ec: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d80f0: e8 bb 58 0a 00 callq 77d9b0 : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d80f5: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float4eq(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d80f9: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d80fe: e8 ad 58 0a 00 callq 77d9b0 : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) == 0); 0.00 : 6d8103: 0f 28 c8 movaps %xmm0,%xmm1 0.00 : 6d8106: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 0.00 : 6d810b: e8 a0 fd ff ff callq 6d7eb0 0.00 : 6d8110: 85 c0 test %eax,%eax 0.00 : 6d8112: 0f 94 c0 sete %al : } 0.00 : 6d8115: 48 83 c4 08 add $0x8,%rsp : float4eq(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float4 arg2 = PG_GETARG_FLOAT4(1); : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) == 0); 0.00 : 6d8119: 0f b6 c0 movzbl %al,%eax : } 0.00 : 6d811c: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:907 13.33 : 6d811d: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 13.33 ??:0 13.33 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000805e0 <__GI_strcpy>: ??:0 20.00 : 805e0: 48 89 f1 mov %rsi,%rcx 0.00 : 805e3: 83 e1 07 and $0x7,%ecx 0.00 : 805e6: 48 89 fa mov %rdi,%rdx 0.00 : 805e9: 74 1b je 80606 <__GI_strcpy+0x26> 0.00 : 805eb: f7 d9 neg %ecx 0.00 : 805ed: 83 c1 08 add $0x8,%ecx 0.00 : 805f0: 8a 06 mov (%rsi),%al 13.33 : 805f2: 84 c0 test %al,%al 6.67 : 805f4: 88 02 mov %al,(%rdx) 0.00 : 805f6: 0f 84 bc 00 00 00 je 806b8 <__GI_strcpy+0xd8> 6.67 : 805fc: 48 ff c6 inc %rsi 0.00 : 805ff: 48 ff c2 inc %rdx 0.00 : 80602: ff c9 dec %ecx 0.00 : 80604: 75 ea jne 805f0 <__GI_strcpy+0x10> 13.33 : 80606: 49 b8 ff fe fe fe fe movabs $0xfefefefefefefeff,%r8 0.00 : 8060d: fe fe fe 0.00 : 80610: 48 8b 06 mov (%rsi),%rax 6.67 : 80613: 48 83 c6 08 add $0x8,%rsi 0.00 : 80617: 49 89 c1 mov %rax,%r9 0.00 : 8061a: 4d 01 c1 add %r8,%r9 0.00 : 8061d: 0f 83 7d 00 00 00 jae 806a0 <__GI_strcpy+0xc0> 0.00 : 80623: 49 31 c1 xor %rax,%r9 0.00 : 80626: 4d 09 c1 or %r8,%r9 0.00 : 80629: 49 ff c1 inc %r9 0.00 : 8062c: 75 72 jne 806a0 <__GI_strcpy+0xc0> 6.67 : 8062e: 48 89 02 mov %rax,(%rdx) 0.00 : 80631: 48 83 c2 08 add $0x8,%rdx 0.00 : 80635: 48 8b 06 mov (%rsi),%rax 0.00 : 80638: 48 83 c6 08 add $0x8,%rsi 0.00 : 8063c: 49 89 c1 mov %rax,%r9 0.00 : 8063f: 4d 01 c1 add %r8,%r9 0.00 : 80642: 73 5c jae 806a0 <__GI_strcpy+0xc0> 6.67 : 80644: 49 31 c1 xor %rax,%r9 0.00 : 80647: 4d 09 c1 or %r8,%r9 0.00 : 8064a: 49 ff c1 inc %r9 0.00 : 8064d: 75 51 jne 806a0 <__GI_strcpy+0xc0> 0.00 : 8064f: 48 89 02 mov %rax,(%rdx) 0.00 : 80652: 48 83 c2 08 add $0x8,%rdx 0.00 : 80656: 48 8b 06 mov (%rsi),%rax 0.00 : 80659: 48 83 c6 08 add $0x8,%rsi 0.00 : 8065d: 49 89 c1 mov %rax,%r9 0.00 : 80660: 4d 01 c1 add %r8,%r9 0.00 : 80663: 73 3b jae 806a0 <__GI_strcpy+0xc0> 0.00 : 80665: 49 31 c1 xor %rax,%r9 0.00 : 80668: 4d 09 c1 or %r8,%r9 0.00 : 8066b: 49 ff c1 inc %r9 0.00 : 8066e: 75 30 jne 806a0 <__GI_strcpy+0xc0> 0.00 : 80670: 48 89 02 mov %rax,(%rdx) 0.00 : 80673: 48 83 c2 08 add $0x8,%rdx 0.00 : 80677: 48 8b 06 mov (%rsi),%rax 0.00 : 8067a: 48 83 c6 08 add $0x8,%rsi 0.00 : 8067e: 49 89 c1 mov %rax,%r9 0.00 : 80681: 4d 01 c1 add %r8,%r9 0.00 : 80684: 73 1a jae 806a0 <__GI_strcpy+0xc0> 0.00 : 80686: 49 31 c1 xor %rax,%r9 0.00 : 80689: 4d 09 c1 or %r8,%r9 0.00 : 8068c: 49 ff c1 inc %r9 0.00 : 8068f: 75 0f jne 806a0 <__GI_strcpy+0xc0> 0.00 : 80691: 48 89 02 mov %rax,(%rdx) 0.00 : 80694: 48 83 c2 08 add $0x8,%rdx 0.00 : 80698: e9 73 ff ff ff jmpq 80610 <__GI_strcpy+0x30> 0.00 : 8069d: 0f 1f 00 nopl (%rax) 6.67 : 806a0: 88 02 mov %al,(%rdx) 6.67 : 806a2: 84 c0 test %al,%al 0.00 : 806a4: 74 12 je 806b8 <__GI_strcpy+0xd8> 0.00 : 806a6: 48 ff c2 inc %rdx 0.00 : 806a9: 88 22 mov %ah,(%rdx) 0.00 : 806ab: 84 e4 test %ah,%ah 0.00 : 806ad: 74 09 je 806b8 <__GI_strcpy+0xd8> 0.00 : 806af: 48 ff c2 inc %rdx 0.00 : 806b2: 48 c1 e8 10 shr $0x10,%rax 0.00 : 806b6: eb e8 jmp 806a0 <__GI_strcpy+0xc0> 6.67 : 806b8: 48 89 f8 mov %rdi,%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 20.00 ??:0 20.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005d00 : : * ixgbe_alloc_rx_buffers - Replace used receive buffers : * @rx_ring: ring to place buffers on : * @cleaned_count: number of buffers to replace : **/ : void ixgbe_alloc_rx_buffers(struct ixgbe_ring *rx_ring, u16 cleaned_count) : { ??:0 10.00 : 5d00: 48 83 ec 28 sub $0x28,%rsp : union ixgbe_adv_rx_desc *rx_desc; : struct ixgbe_rx_buffer *bi; : u16 i = rx_ring->next_to_use; : : /* nothing to do */ : if (!cleaned_count) 20.00 : 5d04: 66 85 f6 test %si,%si : * ixgbe_alloc_rx_buffers - Replace used receive buffers : * @rx_ring: ring to place buffers on : * @cleaned_count: number of buffers to replace : **/ : void ixgbe_alloc_rx_buffers(struct ixgbe_ring *rx_ring, u16 cleaned_count) : { 0.00 : 5d07: 4c 89 6c 24 18 mov %r13,0x18(%rsp) 10.00 : 5d0c: 4c 89 74 24 20 mov %r14,0x20(%rsp) 0.00 : 5d11: 41 89 f5 mov %esi,%r13d 0.00 : 5d14: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 5d18: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 0.00 : 5d1d: 49 89 fe mov %rdi,%r14 0.00 : 5d20: 4c 89 64 24 10 mov %r12,0x10(%rsp) : union ixgbe_adv_rx_desc *rx_desc; : struct ixgbe_rx_buffer *bi; : u16 i = rx_ring->next_to_use; 0.00 : 5d25: 0f b7 57 50 movzwl 0x50(%rdi),%edx : : /* nothing to do */ : if (!cleaned_count) 0.00 : 5d29: 0f 84 7d 00 00 00 je 5dac : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); 0.00 : 5d2f: 0f b7 c2 movzwl %dx,%eax 0.00 : 5d32: 4c 8b 67 20 mov 0x20(%rdi),%r12 : bi = &rx_ring->rx_buffer_info[i]; : i -= rx_ring->count; 0.00 : 5d36: 89 d5 mov %edx,%ebp : : /* nothing to do */ : if (!cleaned_count) : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); 0.00 : 5d38: 48 c1 e0 04 shl $0x4,%rax : bi = &rx_ring->rx_buffer_info[i]; : i -= rx_ring->count; 0.00 : 5d3c: 66 2b 6f 4c sub 0x4c(%rdi),%bp : /* nothing to do */ : if (!cleaned_count) : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); : bi = &rx_ring->rx_buffer_info[i]; 0.00 : 5d40: 48 8d 1c 00 lea (%rax,%rax,1),%rbx 0.00 : 5d44: 48 03 5f 28 add 0x28(%rdi),%rbx : : /* nothing to do */ : if (!cleaned_count) : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); 0.00 : 5d48: 49 01 c4 add %rax,%r12 0.00 : 5d4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : do { : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : if (!ixgbe_alloc_mapped_skb(rx_ring, bi)) : #else : if (!ixgbe_alloc_mapped_page(rx_ring, bi)) 0.00 : 5d50: 48 89 de mov %rbx,%rsi 0.00 : 5d53: 4c 89 f7 mov %r14,%rdi 0.00 : 5d56: e8 55 fe ff ff callq 5bb0 0.00 : 5d5b: 84 c0 test %al,%al 0.00 : 5d5d: 74 29 je 5d88 : * because each write-back erases this info. : */ : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma); : #else : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset); 10.00 : 5d5f: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5d62: 48 03 43 08 add 0x8(%rbx),%rax : #endif : : rx_desc++; : bi++; : i++; : if (unlikely(!i)) { 10.00 : 5d66: 66 83 c5 01 add $0x1,%bp : * because each write-back erases this info. : */ : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma); : #else : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset); 0.00 : 5d6a: 49 89 04 24 mov %rax,(%r12) : #endif : : rx_desc++; : bi++; : i++; : if (unlikely(!i)) { 0.00 : 5d6e: 74 59 je 5dc9 : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma); : #else : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset); : #endif : : rx_desc++; 0.00 : 5d70: 49 83 c4 10 add $0x10,%r12 : bi++; 0.00 : 5d74: 48 83 c3 20 add $0x20,%rbx : : /* clear the hdr_addr for the next_to_use descriptor */ : rx_desc->read.hdr_addr = 0; : : cleaned_count--; : } while (cleaned_count); 0.00 : 5d78: 66 41 83 ed 01 sub $0x1,%r13w : bi = rx_ring->rx_buffer_info; : i -= rx_ring->count; : } : : /* clear the hdr_addr for the next_to_use descriptor */ : rx_desc->read.hdr_addr = 0; 10.00 : 5d7d: 49 c7 44 24 08 00 00 movq $0x0,0x8(%r12) 0.00 : 5d84: 00 00 : : cleaned_count--; : } while (cleaned_count); 0.00 : 5d86: 75 c8 jne 5d50 : : i += rx_ring->count; 0.00 : 5d88: 89 e8 mov %ebp,%eax 0.00 : 5d8a: 66 41 03 46 4c add 0x4c(%r14),%ax : : if (rx_ring->next_to_use != i) 0.00 : 5d8f: 66 41 39 46 50 cmp %ax,0x50(%r14) 0.00 : 5d94: 74 16 je 5dac 0.00 : 5d96: 0f b7 d0 movzwl %ax,%edx : skb->ip_summed = CHECKSUM_UNNECESSARY; : } : : static inline void ixgbe_release_rx_desc(struct ixgbe_ring *rx_ring, u32 val) : { : rx_ring->next_to_use = val; 0.00 : 5d99: 66 41 89 56 50 mov %dx,0x50(%r14) : #ifndef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : : /* update next to alloc since we have filled the ring */ : rx_ring->next_to_alloc = val; 20.00 : 5d9e: 66 41 89 56 54 mov %dx,0x54(%r14) : * Force memory writes to complete before letting h/w : * know there are new descriptors to fetch. (Only : * applicable for weak-ordered memory model archs, : * such as IA-64). : */ : wmb(); 0.00 : 5da3: 0f ae f8 sfence : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 5da6: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 5daa: 89 10 mov %edx,(%rax) : : i += rx_ring->count; : : if (rx_ring->next_to_use != i) : ixgbe_release_rx_desc(rx_ring, i); : } 10.00 : 5dac: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5db0: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 5db5: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 5dba: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 5dbf: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 5dc4: 48 83 c4 28 add $0x28,%rsp 0.00 : 5dc8: c3 retq : bi++; : i++; : if (unlikely(!i)) { : rx_desc = IXGBE_RX_DESC(rx_ring, 0); : bi = rx_ring->rx_buffer_info; : i -= rx_ring->count; 0.00 : 5dc9: 41 0f b7 6e 4c movzwl 0x4c(%r14),%ebp : : rx_desc++; : bi++; : i++; : if (unlikely(!i)) { : rx_desc = IXGBE_RX_DESC(rx_ring, 0); 0.00 : 5dce: 4d 8b 66 20 mov 0x20(%r14),%r12 : bi = rx_ring->rx_buffer_info; 0.00 : 5dd2: 49 8b 5e 28 mov 0x28(%r14),%rbx : i -= rx_ring->count; 0.00 : 5dd6: f7 dd neg %ebp 0.00 : 5dd8: eb 9e jmp 5d78 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 37.50 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000001e0 : 100.00 : 1e0: 55 push %rbp 0.00 : 211: 83 c6 adc $0x48,%al 0.00 : 213: 0c 53 48 add $0x18,%esp 0.00 : 216: 89 d3 48 83 ec mov $0x1,%eax 0.00 : 21b: 18 pop %rbx 0.00 : 21c: 8b pop %rbp 0.00 : 21d: 47 retq 0.00 : 21e: 68 2b xchg %ax,%ax 0.00 : 220: 47 6c 29 f0 83 mov $0x8,%ecx 0.00 : 225: f8 07 7e mov %rsp,%rdx 0.00 : 228: 27 48 63 d6 48 callq 22d 0.00 : 22d: 03 97 test %eax,%eax 0.00 : 22f: e0 00 js 240 0.00 : 231: 00 00 48 mov %rsp,%rdx 0.00 : 234: 85 d2 jmp 203 0.00 : 236: 74 38 8b 02 89 03 8b nopw %cs:0x0(%rax,%rax,1) 0.00 : 23d: 42 04 89 0.00 : 240: 43 14 48 83 add $0x18,%rsp 0.00 : 244: c4 18 xor %eax,%eax 0.00 : 246: b8 pop %rbx 0.00 : 247: 01 pop %rbp 0.00 : 248: 00 retq : 249: 00 00 5b 5d c3 66 90 nopl 0x0(%rax) : 250: b9 08 00 00 lea 0x14(%rsi),%rcx : 254: 00 48 89 mov %rsi,%rdx : 257: e2 e8 xor %eax,%eax : 259: 00 00 00 00 85 c0 78 mov $0x0,%rsi : 260: 0f 48 89 e2 eb jmpq 265 : 265: cd 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) : 26c: 00 00 00 00 : 270: 48 83 push %r12 : 272: c4 18 31 mov %rdx,%r12 : 275: c0 push %rbp : 276: 5b push %rbx : 277: 5d c3 0f 1f sub $0x40,%rsp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1343 22.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1362 22.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1380 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1375 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1380 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ee40 : : * Detect whether an attribute of the slot is null, without : * actually fetching it. : */ : bool : slot_attisnull(TupleTableSlot *slot, int attnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1343 33.33 : 46ee40: 55 push %rbp : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : : /* : * system attributes are handled by heap_attisnull : */ : if (attnum <= 0) 0.00 : 46ee41: 85 f6 test %esi,%esi : * actually fetching it. : */ : bool : slot_attisnull(TupleTableSlot *slot, int attnum) : { : HeapTuple tuple = slot->tts_tuple; 0.00 : 46ee43: 48 8b 57 08 mov 0x8(%rdi),%rdx : TupleDesc tupleDesc = slot->tts_tupleDescriptor; 0.00 : 46ee47: 48 8b 4f 10 mov 0x10(%rdi),%rcx : * Detect whether an attribute of the slot is null, without : * actually fetching it. : */ : bool : slot_attisnull(TupleTableSlot *slot, int attnum) : { 0.00 : 46ee4b: 48 89 e5 mov %rsp,%rbp : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : : /* : * system attributes are handled by heap_attisnull : */ : if (attnum <= 0) 0.00 : 46ee4e: 7e 30 jle 46ee80 : } : : /* : * fast path if desired attribute already cached : */ : if (attnum <= slot->tts_nvalid) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1362 22.22 : 46ee50: 3b 77 24 cmp 0x24(%rdi),%esi 0.00 : 46ee53: 7e 1b jle 46ee70 : return slot->tts_isnull[attnum - 1]; : : /* : * return NULL if attnum is out of range according to the tupdesc : */ : if (attnum > tupleDesc->natts) 0.00 : 46ee55: 3b 31 cmp (%rcx),%esi 0.00 : 46ee57: b8 01 00 00 00 mov $0x1,%eax 0.00 : 46ee5c: 7f 1e jg 46ee7c : : /* : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : if (tuple == NULL) /* internal error */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1375 11.11 : 46ee5e: 48 85 d2 test %rdx,%rdx 0.00 : 46ee61: 74 7f je 46eee2 : elog(ERROR, "cannot extract attribute from empty tuple slot"); : : /* and let the tuple tell it */ : return heap_attisnull(tuple, attnum); : } 0.00 : 46ee63: c9 leaveq : */ : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract attribute from empty tuple slot"); : : /* and let the tuple tell it */ : return heap_attisnull(tuple, attnum); 0.00 : 46ee64: 48 89 d7 mov %rdx,%rdi 0.00 : 46ee67: e9 34 ff ff ff jmpq 46eda0 0.00 : 46ee6c: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * fast path if desired attribute already cached : */ : if (attnum <= slot->tts_nvalid) : return slot->tts_isnull[attnum - 1]; 0.00 : 46ee70: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 46ee74: 48 63 d6 movslq %esi,%rdx 0.00 : 46ee77: 0f b6 44 10 ff movzbl -0x1(%rax,%rdx,1),%eax : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract attribute from empty tuple slot"); : : /* and let the tuple tell it */ : return heap_attisnull(tuple, attnum); : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1380 22.22 : 46ee7c: c9 leaveq 11.11 : 46ee7d: c3 retq 0.00 : 46ee7e: 66 90 xchg %ax,%ax : /* : * system attributes are handled by heap_attisnull : */ : if (attnum <= 0) : { : if (tuple == NULL) /* internal error */ 0.00 : 46ee80: 48 85 d2 test %rdx,%rdx 0.00 : 46ee83: 74 33 je 46eeb8 : elog(ERROR, "cannot extract system attribute from virtual tuple"); : if (tuple == &(slot->tts_minhdr)) /* internal error */ 0.00 : 46ee85: 48 8d 47 40 lea 0x40(%rdi),%rax 0.00 : 46ee89: 48 39 c2 cmp %rax,%rdx 0.00 : 46ee8c: 75 d5 jne 46ee63 : elog(ERROR, "cannot extract system attribute from minimal tuple"); 0.00 : 46ee8e: ba a8 f6 7a 00 mov $0x7af6a8,%edx 0.00 : 46ee93: be 4b 05 00 00 mov $0x54b,%esi 0.00 : 46ee98: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46ee9d: e8 7e c5 30 00 callq 77b420 0.00 : 46eea2: be 78 f7 7a 00 mov $0x7af778,%esi 0.00 : 46eea7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46eeac: 31 c0 xor %eax,%eax 0.00 : 46eeae: e8 7d c3 30 00 callq 77b230 0.00 : 46eeb3: e8 18 a6 ff ff callq 4694d0 : * system attributes are handled by heap_attisnull : */ : if (attnum <= 0) : { : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract system attribute from virtual tuple"); 0.00 : 46eeb8: ba a8 f6 7a 00 mov $0x7af6a8,%edx 0.00 : 46eebd: be 49 05 00 00 mov $0x549,%esi 0.00 : 46eec2: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46eec7: e8 54 c5 30 00 callq 77b420 0.00 : 46eecc: be 40 f7 7a 00 mov $0x7af740,%esi 0.00 : 46eed1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46eed6: 31 c0 xor %eax,%eax 0.00 : 46eed8: e8 53 c3 30 00 callq 77b230 0.00 : 46eedd: e8 ee a5 ff ff callq 4694d0 : /* : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract attribute from empty tuple slot"); 0.00 : 46eee2: ba a8 f6 7a 00 mov $0x7af6a8,%edx 0.00 : 46eee7: be 60 05 00 00 mov $0x560,%esi 0.00 : 46eeec: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46eef1: e8 2a c5 30 00 callq 77b420 0.00 : 46eef6: be b0 f7 7a 00 mov $0x7af7b0,%esi 0.00 : 46eefb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46ef00: 31 c0 xor %eax,%eax 0.00 : 46ef02: e8 29 c3 30 00 callq 77b230 0.00 : 46ef07: e8 c4 a5 ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21835 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21619 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21808 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21809 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21878 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:40889 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.y:12709 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21818 9.09 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21838 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005116b0 : : int : yyparse (yyscanner) : core_yyscan_t yyscanner; : #endif : #endif : { /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21619 9.09 : 5116b0: 55 push %rbp 0.00 : 5116b1: 48 89 e5 mov %rsp,%rbp 0.00 : 5116b4: 41 57 push %r15 0.00 : 5116b6: 45 31 ff xor %r15d,%r15d 0.00 : 5116b9: 48 8d 85 d0 f4 ff ff lea -0xb30(%rbp),%rax 0.00 : 5116c0: 48 8d 95 10 fb ff ff lea -0x4f0(%rbp),%rdx 0.00 : 5116c7: 41 56 push %r14 0.00 : 5116c9: 41 55 push %r13 0.00 : 5116cb: 41 54 push %r12 0.00 : 5116cd: 4c 8d a5 30 fe ff ff lea -0x1d0(%rbp),%r12 0.00 : 5116d4: 53 push %rbx 0.00 : 5116d5: 4d 89 e2 mov %r12,%r10 0.00 : 5116d8: 48 81 ec a8 0b 00 00 sub $0xba8,%rsp 0.00 : 5116df: 48 89 bd 70 f4 ff ff mov %rdi,-0xb90(%rbp) 0.00 : 5116e6: c7 85 7c f4 ff ff fe movl $0xfffffffe,-0xb84(%rbp) 0.00 : 5116ed: ff ff ff 0.00 : 5116f0: 4c 89 a5 48 f4 ff ff mov %r12,-0xbb8(%rbp) 0.00 : 5116f7: 48 89 85 80 f4 ff ff mov %rax,-0xb80(%rbp) 0.00 : 5116fe: 48 89 85 88 f4 ff ff mov %rax,-0xb78(%rbp) 0.00 : 511705: 48 89 95 90 f4 ff ff mov %rdx,-0xb70(%rbp) 0.00 : 51170c: 48 89 95 98 f4 ff ff mov %rdx,-0xb68(%rbp) 0.00 : 511713: 48 c7 85 a0 f4 ff ff movq $0xc8,-0xb60(%rbp) 0.00 : 51171a: c8 00 00 00 0.00 : 51171e: 48 c7 85 68 f4 ff ff movq $0xc7,-0xb98(%rbp) 0.00 : 511725: c7 00 00 00 0.00 : 511729: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* In all cases, when you get here, the value and location stacks : have just been pushed. So pushing a state here evens the stacks. */ : yyssp++; : : yysetstate: : *yyssp = yystate; 0.00 : 511730: 66 45 89 3a mov %r15w,(%r10) : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 511734: 48 8b b5 68 f4 ff ff mov -0xb98(%rbp),%rsi 0.00 : 51173b: 49 8d 04 74 lea (%r12,%rsi,2),%rax 0.00 : 51173f: 49 39 c2 cmp %rax,%r10 0.00 : 511742: 0f 83 f8 76 01 00 jae 528e40 0.00 : 511748: 48 8b 85 80 f4 ff ff mov -0xb80(%rbp),%rax 0.00 : 51174f: 48 8b 95 90 f4 ff ff mov -0xb70(%rbp),%rdx : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 511756: 41 81 ff e3 02 00 00 cmp $0x2e3,%r15d : yyssp++; : : yysetstate: : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 51175d: 4c 89 a5 b0 f4 ff ff mov %r12,-0xb50(%rbp) 0.00 : 511764: 48 89 85 b8 f4 ff ff mov %rax,-0xb48(%rbp) 0.00 : 51176b: 48 89 95 c0 f4 ff ff mov %rdx,-0xb40(%rbp) : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 511772: 0f 84 00 78 01 00 je 528f78 : : /* Do appropriate processing given the current state. Read a : lookahead token if we need one and don't already have one. */ : : /* First try to decide what to do without reference to lookahead token. */ : yyn = yypact[yystate]; 0.00 : 511778: 4d 63 e7 movslq %r15d,%r12 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21808 9.09 : 51177b: 42 8b 1c a5 00 ea 7c mov 0x7cea00(,%r12,4),%ebx 0.00 : 511782: 00 : if (yypact_value_is_default (yyn)) /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21809 9.09 : 511783: 81 fb 0e f0 ff ff cmp $0xfffff00e,%ebx 0.00 : 511789: 74 5a je 5117e5 : goto yydefault; : : /* Not known => get a lookahead token if don't already have one. */ : : /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ : if (yychar == YYEMPTY) 0.00 : 51178b: 83 bd 7c f4 ff ff fe cmpl $0xfffffffe,-0xb84(%rbp) 0.00 : 511792: 0f 84 48 78 01 00 je 528fe0 : { : YYDPRINTF ((stderr, "Reading a token: ")); : yychar = YYLEX; : } : : if (yychar <= YYEOF) 0.00 : 511798: 44 8b 9d 7c f4 ff ff mov -0xb84(%rbp),%r11d 0.00 : 51179f: 45 85 db test %r11d,%r11d 0.00 : 5117a2: 0f 8e 08 78 01 00 jle 528fb0 : yychar = yytoken = YYEOF; : YYDPRINTF ((stderr, "Now at end of input.\n")); : } : else : { : yytoken = YYTRANSLATE (yychar); 0.00 : 5117a8: 81 bd 7c f4 ff ff aa cmpl $0x2aa,-0xb84(%rbp) 0.00 : 5117af: 02 00 00 0.00 : 5117b2: ba 02 00 00 00 mov $0x2,%edx 0.00 : 5117b7: 77 0f ja 5117c8 0.00 : 5117b9: 48 63 85 7c f4 ff ff movslq -0xb84(%rbp),%rax 0.00 : 5117c0: 0f b7 94 00 c0 32 7d movzwl 0x7d32c0(%rax,%rax,1),%edx 0.00 : 5117c7: 00 : YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); : } : : /* If the proper action on seeing token YYTOKEN is to reduce or to : detect an error, take that action. */ : yyn += yytoken; 0.00 : 5117c8: 8d 04 1a lea (%rdx,%rbx,1),%eax : if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 0.00 : 5117cb: 3d 93 3c 01 00 cmp $0x13c93,%eax 0.00 : 5117d0: 77 13 ja 5117e5 0.00 : 5117d2: 48 63 c8 movslq %eax,%rcx 0.00 : 5117d5: 0f bf 84 09 20 38 7d movswl 0x7d3820(%rcx,%rcx,1),%eax 0.00 : 5117dc: 00 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21835 27.27 : 5117dd: 39 d0 cmp %edx,%eax 0.00 : 5117df: 0f 84 2b 78 01 00 je 529010 : : /*-----------------------------------------------------------. : | yydefault -- do the default action for the current state. | : `-----------------------------------------------------------*/ : yydefault: : yyn = yydefact[yystate]; 0.00 : 5117e5: 43 0f b7 8c 24 a0 2a movzwl 0x822aa0(%r12,%r12,1),%ecx 0.00 : 5117ec: 82 00 : if (yyn == 0) 0.00 : 5117ee: 85 c9 test %ecx,%ecx 0.00 : 5117f0: 0f 84 82 78 01 00 je 529078 : /*-----------------------------. : | yyreduce -- Do a reduction. | : `-----------------------------*/ : yyreduce: : /* yyn is the number of a rule to reduce with. */ : yylen = yyr2[yyn]; 0.00 : 5117f6: 48 63 d9 movslq %ecx,%rbx : Otherwise, the following line sets YYVAL to garbage. : This behavior is undocumented and Bison : users should not rely upon it. Assigning to YYVAL : unconditionally makes the parser a bit smaller, and it avoids a : GCC warning that YYVAL may be used uninitialized. */ : yyval = yyvsp[1-yylen]; 0.00 : 5117f9: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5117fe: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : /*-----------------------------. : | yyreduce -- Do a reduction. | : `-----------------------------*/ : yyreduce: : /* yyn is the number of a rule to reduce with. */ : yylen = yyr2[yyn]; 0.00 : 511805: 44 0f b6 bb 00 4f 82 movzbl 0x824f00(%rbx),%r15d 0.00 : 51180c: 00 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21878 9.09 : 51180d: 48 89 9d 60 f4 ff ff mov %rbx,-0xba0(%rbp) : Otherwise, the following line sets YYVAL to garbage. : This behavior is undocumented and Bison : users should not rely upon it. Assigning to YYVAL : unconditionally makes the parser a bit smaller, and it avoids a : GCC warning that YYVAL may be used uninitialized. */ : yyval = yyvsp[1-yylen]; 0.00 : 511814: 44 29 f8 sub %r15d,%eax : : /* Default location. */ : YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 0.00 : 511817: 45 85 ff test %r15d,%r15d : Otherwise, the following line sets YYVAL to garbage. : This behavior is undocumented and Bison : users should not rely upon it. Assigning to YYVAL : unconditionally makes the parser a bit smaller, and it avoids a : GCC warning that YYVAL may be used uninitialized. */ : yyval = yyvsp[1-yylen]; 0.00 : 51181a: 48 98 cltq 0.00 : 51181c: 4c 8b 34 c6 mov (%rsi,%rax,8),%r14 : : /* Default location. */ : YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 0.00 : 511820: c7 85 a8 f4 ff ff ff movl $0xffffffff,-0xb58(%rbp) 0.00 : 511827: ff ff ff 0.00 : 51182a: 74 1b je 511847 0.00 : 51182c: 49 63 d7 movslq %r15d,%rdx 0.00 : 51182f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 511834: 48 29 d0 sub %rdx,%rax 0.00 : 511837: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51183e: 8b 04 82 mov (%rdx,%rax,4),%eax 0.00 : 511841: 89 85 a8 f4 ff ff mov %eax,-0xb58(%rbp) : YY_REDUCE_PRINT (yyn); : switch (yyn) 0.00 : 511847: 81 f9 c9 07 00 00 cmp $0x7c9,%ecx 0.00 : 51184d: 0f 87 2d 01 00 00 ja 511980 0.00 : 511853: 89 c8 mov %ecx,%eax 0.00 : 511855: ff 24 c5 20 aa 7c 00 jmpq *0x7caa20(,%rax,8) : *****************************************************************************/ : : CopyStmt: COPY opt_binary qualified_name opt_column_list opt_oids : copy_from opt_program copy_file_name copy_delimiter opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 51185c: 48 8b 3d fd 8f 6a 00 mov 0x6a8ffd(%rip),%rdi # bba860 0.00 : 511863: be 38 00 00 00 mov $0x38,%esi 0.00 : 511868: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51186f: e8 9c 75 28 00 callq 798e10 0.00 : 511874: c7 00 cb 02 00 00 movl $0x2cb,(%rax) : n->relation = $3; 0.00 : 51187a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : *****************************************************************************/ : : CopyStmt: COPY opt_binary qualified_name opt_column_list opt_oids : copy_from opt_program copy_file_name copy_delimiter opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 511881: 48 89 c3 mov %rax,%rbx : n->relation = $3; 0.00 : 511884: 48 8b 46 c0 mov -0x40(%rsi),%rax : n->query = NULL; 0.00 : 511888: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51188f: 00 : : CopyStmt: COPY opt_binary qualified_name opt_column_list opt_oids : copy_from opt_program copy_file_name copy_delimiter opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); : n->relation = $3; 0.00 : 511890: 48 89 43 08 mov %rax,0x8(%rbx) : n->query = NULL; : n->attlist = $4; 0.00 : 511894: 48 8b 46 c8 mov -0x38(%rsi),%rax 0.00 : 511898: 48 89 43 18 mov %rax,0x18(%rbx) : n->is_from = $6; 0.00 : 51189c: 0f b6 46 d8 movzbl -0x28(%rsi),%eax 0.00 : 5118a0: 88 43 20 mov %al,0x20(%rbx) : n->is_program = $7; 0.00 : 5118a3: 0f b6 46 e0 movzbl -0x20(%rsi),%eax 0.00 : 5118a7: 88 43 21 mov %al,0x21(%rbx) : n->filename = $8; : : if (n->is_program && n->filename == NULL) 0.00 : 5118aa: 80 7b 21 00 cmpb $0x0,0x21(%rbx) : n->relation = $3; : n->query = NULL; : n->attlist = $4; : n->is_from = $6; : n->is_program = $7; : n->filename = $8; 0.00 : 5118ae: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5118b2: 48 89 43 28 mov %rax,0x28(%rbx) : : if (n->is_program && n->filename == NULL) 0.00 : 5118b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5118bd: 74 09 je 5118c8 0.00 : 5118bf: 48 85 c0 test %rax,%rax 0.00 : 5118c2: 0f 84 4c 80 01 00 je 529914 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("STDIN/STDOUT not allowed with PROGRAM"), : parser_errposition(@8))); : : n->options = NIL; 0.00 : 5118c8: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 5118cf: 00 : /* Concatenate user-supplied flags */ : if ($2) 0.00 : 5118d0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5118d7: 48 8b 72 b8 mov -0x48(%rdx),%rsi 0.00 : 5118db: 48 85 f6 test %rsi,%rsi 0.00 : 5118de: 74 19 je 5118f9 : n->options = lappend(n->options, $2); 0.00 : 5118e0: 31 ff xor %edi,%edi 0.00 : 5118e2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5118e9: e8 92 05 0d 00 callq 5e1e80 0.00 : 5118ee: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5118f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if ($5) 0.00 : 5118f9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511900: 48 8b 71 d0 mov -0x30(%rcx),%rsi 0.00 : 511904: 48 85 f6 test %rsi,%rsi 0.00 : 511907: 74 1b je 511924 : n->options = lappend(n->options, $5); 0.00 : 511909: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 51190d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511914: e8 67 05 0d 00 callq 5e1e80 0.00 : 511919: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 51191d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if ($9) 0.00 : 511924: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51192b: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 51192f: 48 85 f6 test %rsi,%rsi 0.00 : 511932: 74 1b je 51194f : n->options = lappend(n->options, $9); 0.00 : 511934: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 511938: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51193f: e8 3c 05 0d 00 callq 5e1e80 0.00 : 511944: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 511948: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if ($11) 0.00 : 51194f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511956: 48 8b 32 mov (%rdx),%rsi 0.00 : 511959: 48 85 f6 test %rsi,%rsi 0.00 : 51195c: 74 1b je 511979 : n->options = list_concat(n->options, $11); 0.00 : 51195e: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 511962: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511969: e8 52 0c 0d 00 callq 5e25c0 0.00 : 51196e: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 511972: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; 0.00 : 511979: 49 89 de mov %rbx,%r14 0.00 : 51197c: 0f 1f 40 00 nopl 0x0(%rax) : case of YYERROR or YYBACKUP, subsequent parser actions might lead : to an incorrect destructor call or verbose syntax error message : before the lookahead is translated. */ : YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); : : YYPOPSTACK (yylen); 0.00 : 511980: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511987: 49 63 c7 movslq %r15d,%rax 0.00 : 51198a: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 511991: 00 0.00 : 511992: 48 29 d1 sub %rdx,%rcx 0.00 : 511995: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : 511999: 48 c1 e0 02 shl $0x2,%rax : yylen = 0; : YY_STACK_PRINT (yyss, yyssp); : : *++yyvsp = yyval; 0.00 : 51199d: 48 8d 59 08 lea 0x8(%rcx),%rbx : case of YYERROR or YYBACKUP, subsequent parser actions might lead : to an incorrect destructor call or verbose syntax error message : before the lookahead is translated. */ : YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); : : YYPOPSTACK (yylen); 0.00 : 5119a1: 49 29 d2 sub %rdx,%r10 0.00 : 5119a4: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : yylen = 0; : YY_STACK_PRINT (yyss, yyssp); : : *++yyvsp = yyval; 0.00 : 5119ab: 48 89 9d 88 f4 ff ff mov %rbx,-0xb78(%rbp) 0.00 : 5119b2: 4c 89 71 08 mov %r14,0x8(%rcx) : case of YYERROR or YYBACKUP, subsequent parser actions might lead : to an incorrect destructor call or verbose syntax error message : before the lookahead is translated. */ : YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); : : YYPOPSTACK (yylen); 0.00 : 5119b6: 48 29 c2 sub %rax,%rdx 0.00 : 5119b9: 48 89 d0 mov %rdx,%rax : yylen = 0; : YY_STACK_PRINT (yyss, yyssp); : : *++yyvsp = yyval; : *++yylsp = yyloc; 0.00 : 5119bc: 48 8d 72 04 lea 0x4(%rdx),%rsi 0.00 : 5119c0: 8b 95 a8 f4 ff ff mov -0xb58(%rbp),%edx 0.00 : 5119c6: 48 89 b5 98 f4 ff ff mov %rsi,-0xb68(%rbp) 0.00 : 5119cd: 89 50 04 mov %edx,0x4(%rax) : that goes to, based on the state we popped back to and the rule : number reduced by. */ : : yyn = yyr1[yyn]; : : yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 0.00 : 5119d0: 48 8b 8d 60 f4 ff ff mov -0xba0(%rbp),%rcx 0.00 : 5119d7: 41 0f b7 32 movzwl (%r10),%esi 0.00 : 5119db: 0f b7 84 09 80 58 82 movzwl 0x825880(%rcx,%rcx,1),%eax 0.00 : 5119e2: 00 0.00 : 5119e3: 0f bf d6 movswl %si,%edx 0.00 : 5119e6: 2d bd 01 00 00 sub $0x1bd,%eax 0.00 : 5119eb: 48 63 c8 movslq %eax,%rcx 0.00 : 5119ee: 0f bf 84 09 60 6b 82 movswl 0x826b60(%rcx,%rcx,1),%eax 0.00 : 5119f5: 00 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:40889 9.09 : 5119f6: 8d 04 02 lea (%rdx,%rax,1),%eax : if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 0.00 : 5119f9: 3d 93 3c 01 00 cmp $0x13c93,%eax 0.00 : 5119fe: 77 10 ja 511a10 0.00 : 511a00: 48 98 cltq 0.00 : 511a02: 66 3b b4 00 20 38 7d cmp 0x7d3820(%rax,%rax,1),%si 0.00 : 511a09: 00 0.00 : 511a0a: 0f 84 b8 75 01 00 je 528fc8 : yystate = yytable[yystate]; : else : yystate = yydefgoto[yyn - YYNTOKENS]; 0.00 : 511a10: 44 0f bf bc 09 00 70 movswl 0x827000(%rcx,%rcx,1),%r15d 0.00 : 511a17: 82 00 : | yynewstate -- Push a new state, which is found in yystate. | : `------------------------------------------------------------*/ : yynewstate: : /* In all cases, when you get here, the value and location stacks : have just been pushed. So pushing a state here evens the stacks. */ : yyssp++; 0.00 : 511a19: 48 8b 8d b8 f4 ff ff mov -0xb48(%rbp),%rcx 0.00 : 511a20: 48 8b 9d c0 f4 ff ff mov -0xb40(%rbp),%rbx 0.00 : 511a27: 49 83 c2 02 add $0x2,%r10 0.00 : 511a2b: 4c 8b a5 b0 f4 ff ff mov -0xb50(%rbp),%r12 0.00 : 511a32: 48 89 8d 80 f4 ff ff mov %rcx,-0xb80(%rbp) 0.00 : 511a39: 48 89 9d 90 f4 ff ff mov %rbx,-0xb70(%rbp) 0.00 : 511a40: e9 eb fc ff ff jmpq 511730 : { : $$ = makeBoolAConst(TRUE, @1); : } : | FALSE_P : { : $$ = makeBoolAConst(FALSE, @1); 0.00 : 511a45: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 511a4c: 31 ff xor %edi,%edi 0.00 : 511a4e: 8b 33 mov (%rbx),%esi 0.00 : 511a50: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511a57: e8 94 f2 ff ff callq 510cf0 : } : | NULL_P 0.00 : 511a5c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeBoolAConst(TRUE, @1); : } : | FALSE_P : { : $$ = makeBoolAConst(FALSE, @1); 0.00 : 511a63: 49 89 c6 mov %rax,%r14 : } : | NULL_P 0.00 : 511a66: e9 15 ff ff ff jmpq 511980 : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | TRUE_P : { : $$ = makeBoolAConst(TRUE, @1); 0.00 : 511a6b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511a72: bf 01 00 00 00 mov $0x1,%edi 0.00 : 511a77: 8b 31 mov (%rcx),%esi 0.00 : 511a79: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511a80: e8 6b f2 ff ff callq 510cf0 : } : | FALSE_P 0.00 : 511a85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | TRUE_P : { : $$ = makeBoolAConst(TRUE, @1); 0.00 : 511a8c: 49 89 c6 mov %rax,%r14 : } : | FALSE_P 0.00 : 511a8f: e9 ec fe ff ff jmpq 511980 : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511a94: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : if ($6 != NIL) 0.00 : 511a9b: 48 8b 02 mov (%rdx),%rax : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511a9e: 4c 8b 62 d8 mov -0x28(%rdx),%r12 : if ($6 != NIL) 0.00 : 511aa2: 48 85 c0 test %rax,%rax 0.00 : 511aa5: 0f 84 c8 7c 01 00 je 529773 : { : if (list_length($6) != 1) 0.00 : 511aab: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 511aaf: 0f 85 69 7c 01 00 jne 52971e : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); 0.00 : 511ab5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 511abc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511ac3: 8b 73 f4 mov -0xc(%rbx),%esi 0.00 : 511ac6: 8b 78 e8 mov -0x18(%rax),%edi 0.00 : 511ac9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ad0: e8 3b f1 ff ff callq 510c10 0.00 : 511ad5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511adc: 48 89 c6 mov %rax,%rsi 0.00 : 511adf: 48 8b 3a mov (%rdx),%rdi 0.00 : 511ae2: e8 99 03 0d 00 callq 5e1e80 0.00 : 511ae7: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 511aec: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 511af3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511afa: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511b01: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 511b05: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 511b08: 4c 89 e2 mov %r12,%rdx 0.00 : 511b0b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511b12: e8 a9 f0 ff ff callq 510bc0 : } : | TRUE_P 0.00 : 511b17: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 511b1e: 49 89 c6 mov %rax,%r14 : } : | TRUE_P 0.00 : 511b21: e9 5a fe ff ff jmpq 511980 : { : $$ = makeStringConstCast($2, @2, $1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511b26: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : t->typmods = $3; 0.00 : 511b2d: 48 8b 03 mov (%rbx),%rax : { : $$ = makeStringConstCast($2, @2, $1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511b30: 48 8b 53 f0 mov -0x10(%rbx),%rdx : t->typmods = $3; 0.00 : 511b34: 48 89 42 18 mov %rax,0x18(%rdx) : $$ = makeStringConstCast($2, @2, t); 0.00 : 511b38: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511b3f: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 511b43: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 511b46: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511b4d: e8 6e f0 ff ff callq 510bc0 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 511b52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); 0.00 : 511b59: 49 89 c6 mov %rax,%r14 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 511b5c: e9 1f fe ff ff jmpq 511980 : t->location = @1; : $$ = makeStringConstCast($6, @6, t); : } : | ConstTypename Sconst : { : $$ = makeStringConstCast($2, @2, $1); 0.00 : 511b61: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511b68: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511b6f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511b76: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 511b7a: 8b 30 mov (%rax),%esi 0.00 : 511b7c: 48 8b 39 mov (%rcx),%rdi 0.00 : 511b7f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511b86: e8 35 f0 ff ff callq 510bc0 : } : | ConstInterval Sconst opt_interval 0.00 : 511b8b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : t->location = @1; : $$ = makeStringConstCast($6, @6, t); : } : | ConstTypename Sconst : { : $$ = makeStringConstCast($2, @2, $1); 0.00 : 511b92: 49 89 c6 mov %rax,%r14 : } : | ConstInterval Sconst opt_interval 0.00 : 511b95: e9 e6 fd ff ff jmpq 511980 : $$ = makeStringConstCast($2, @2, t); : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst : { : /* generic syntax with a type modifier */ : TypeName *t = makeTypeNameFromNameList($1); 0.00 : 511b9a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511ba1: 48 8b 7a d8 mov -0x28(%rdx),%rdi 0.00 : 511ba5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511bac: e8 7f fa 0d 00 callq 5f1630 : * We must use func_arg_list and opt_sort_clause in the : * production to avoid reduce/reduce conflicts, but we : * don't actually wish to allow NamedArgExpr in this : * context, nor ORDER BY. : */ : foreach(lc, $3) 0.00 : 511bb1: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = makeStringConstCast($2, @2, t); : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst : { : /* generic syntax with a type modifier */ : TypeName *t = makeTypeNameFromNameList($1); 0.00 : 511bb8: 48 89 c2 mov %rax,%rdx : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 511bbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * We must use func_arg_list and opt_sort_clause in the : * production to avoid reduce/reduce conflicts, but we : * don't actually wish to allow NamedArgExpr in this : * context, nor ORDER BY. : */ : foreach(lc, $3) 0.00 : 511bc2: 48 8b 4b e8 mov -0x18(%rbx),%rcx 0.00 : 511bc6: 48 85 c9 test %rcx,%rcx 0.00 : 511bc9: 74 21 je 511bec 0.00 : 511bcb: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 511bcf: 48 85 c0 test %rax,%rax 0.00 : 511bd2: 74 18 je 511bec : { : NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); 0.00 : 511bd4: 48 8b 18 mov (%rax),%rbx : : if (IsA(arg, NamedArgExpr)) 0.00 : 511bd7: 81 3b 36 01 00 00 cmpl $0x136,(%rbx) 0.00 : 511bdd: 0f 84 0b 79 01 00 je 5294ee : * We must use func_arg_list and opt_sort_clause in the : * production to avoid reduce/reduce conflicts, but we : * don't actually wish to allow NamedArgExpr in this : * context, nor ORDER BY. : */ : foreach(lc, $3) 0.00 : 511be3: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 511be7: 48 85 c0 test %rax,%rax 0.00 : 511bea: 75 e8 jne 511bd4 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("type modifier cannot have parameter name"), : parser_errposition(arg->location))); : } : if ($4 != NIL) 0.00 : 511bec: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511bf3: 48 83 7e f0 00 cmpq $0x0,-0x10(%rsi) 0.00 : 511bf8: 0f 85 6f 84 01 00 jne 52a06d : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("type modifier cannot have ORDER BY"), : parser_errposition(@4))); : : t->typmods = $3; 0.00 : 511bfe: 48 89 4a 18 mov %rcx,0x18(%rdx) : t->location = @1; 0.00 : 511c02: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511c09: 8b 41 ec mov -0x14(%rcx),%eax 0.00 : 511c0c: 89 42 30 mov %eax,0x30(%rdx) : $$ = makeStringConstCast($6, @6, t); 0.00 : 511c0f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511c16: 8b 31 mov (%rcx),%esi 0.00 : 511c18: 48 8b 3b mov (%rbx),%rdi 0.00 : 511c1b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511c22: e8 99 ef ff ff callq 510bc0 : } : | ConstTypename Sconst 0.00 : 511c27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("type modifier cannot have ORDER BY"), : parser_errposition(@4))); : : t->typmods = $3; : t->location = @1; : $$ = makeStringConstCast($6, @6, t); 0.00 : 511c2e: 49 89 c6 mov %rax,%r14 : } : | ConstTypename Sconst 0.00 : 511c31: e9 4a fd ff ff jmpq 511980 : $$ = makeBitStringConst($1, @1); : } : | func_name Sconst : { : /* generic type 'literal' syntax */ : TypeName *t = makeTypeNameFromNameList($1); 0.00 : 511c36: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511c3d: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 511c41: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511c48: e8 e3 f9 0d 00 callq 5f1630 : t->location = @1; 0.00 : 511c4d: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511c54: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 511c57: 89 50 30 mov %edx,0x30(%rax) : $$ = makeStringConstCast($2, @2, t); 0.00 : 511c5a: 48 89 c2 mov %rax,%rdx 0.00 : 511c5d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511c64: 48 8b 3b mov (%rbx),%rdi 0.00 : 511c67: 8b 30 mov (%rax),%esi 0.00 : 511c69: e8 52 ef ff ff callq 510bc0 : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst 0.00 : 511c6e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | func_name Sconst : { : /* generic type 'literal' syntax */ : TypeName *t = makeTypeNameFromNameList($1); : t->location = @1; : $$ = makeStringConstCast($2, @2, t); 0.00 : 511c75: 49 89 c6 mov %rax,%r14 : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst 0.00 : 511c78: e9 03 fd ff ff jmpq 511980 : : attr_name: ColLabel { $$ = $1; }; : : index_name: ColId { $$ = $1; }; : : file_name: Sconst { $$ = $1; }; 0.00 : 511c7d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511c84: 4c 8b 36 mov (%rsi),%r14 : 0.00 : 511c87: e9 f4 fc ff ff jmpq 511980 : access_method: : ColId { $$ = $1; }; : : attr_name: ColLabel { $$ = $1; }; : : index_name: ColId { $$ = $1; }; 0.00 : 511c8c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511c93: 4c 8b 33 mov (%rbx),%r14 : 0.00 : 511c96: e9 e5 fc ff ff jmpq 511980 : ColId { $$ = $1; }; : : access_method: : ColId { $$ = $1; }; : : attr_name: ColLabel { $$ = $1; }; 0.00 : 511c9b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511ca2: 4c 8b 31 mov (%rcx),%r14 : 0.00 : 511ca5: e9 d6 fc ff ff jmpq 511980 : : database_name: : ColId { $$ = $1; }; : : access_method: : ColId { $$ = $1; }; 0.00 : 511caa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511cb1: 4c 8b 32 mov (%rdx),%r14 : 0.00 : 511cb4: e9 c7 fc ff ff jmpq 511980 : : : name: ColId { $$ = $1; }; : : database_name: : ColId { $$ = $1; }; 0.00 : 511cb9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511cc0: 4c 8b 30 mov (%rax),%r14 : 0.00 : 511cc3: e9 b8 fc ff ff jmpq 511980 : | name_list ',' name : { $$ = lappend($1, makeString($3)); } : ; : : : name: ColId { $$ = $1; }; 0.00 : 511cc8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511ccf: 4c 8b 36 mov (%rsi),%r14 : 0.00 : 511cd2: e9 a9 fc ff ff jmpq 511980 : ; : : name_list: name : { $$ = list_make1(makeString($1)); } : | name_list ',' name : { $$ = lappend($1, makeString($3)); } 0.00 : 511cd7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511cde: 48 8b 3b mov (%rbx),%rdi 0.00 : 511ce1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ce8: e8 03 da 0e 00 callq 5ff6f0 0.00 : 511ced: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 511cf1: 48 89 c6 mov %rax,%rsi 0.00 : 511cf4: e8 87 01 0d 00 callq 5e1e80 : ; 0.00 : 511cf9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : name_list: name : { $$ = list_make1(makeString($1)); } : | name_list ',' name : { $$ = lappend($1, makeString($3)); } 0.00 : 511d00: 49 89 c6 mov %rax,%r14 : ; 0.00 : 511d03: e9 78 fc ff ff jmpq 511980 : } : } : ; : : name_list: name : { $$ = list_make1(makeString($1)); } 0.00 : 511d08: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511d0f: 48 8b 39 mov (%rcx),%rdi 0.00 : 511d12: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511d19: e8 d2 d9 0e 00 callq 5ff6f0 0.00 : 511d1e: 31 f6 xor %esi,%esi 0.00 : 511d20: 48 89 c7 mov %rax,%rdi 0.00 : 511d23: e8 28 fb 0c 00 callq 5e1850 : | name_list ',' name 0.00 : 511d28: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : } : ; : : name_list: name : { $$ = list_make1(makeString($1)); } 0.00 : 511d2f: 49 89 c6 mov %rax,%r14 : | name_list ',' name 0.00 : 511d32: e9 49 fc ff ff jmpq 511980 : { : $$ = makeIntConst($1, @1); : } : | FCONST : { : $$ = makeFloatConst($1, @1); 0.00 : 511d37: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511d3e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : } : : static Node * : makeFloatConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511d45: 48 8b 3d 14 8b 6a 00 mov 0x6a8b14(%rip),%rdi # bba860 : { : $$ = makeIntConst($1, @1); : } : | FCONST : { : $$ = makeFloatConst($1, @1); 0.00 : 511d4c: 8b 1e mov (%rsi),%ebx 0.00 : 511d4e: 4c 8b 20 mov (%rax),%r12 : } : : static Node * : makeFloatConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511d51: be 20 00 00 00 mov $0x20,%esi 0.00 : 511d56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511d5d: e8 ae 70 28 00 callq 798e10 0.00 : 511d62: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Float; 0.00 : 511d68: c7 40 08 8c 02 00 00 movl $0x28c,0x8(%rax) : { : $$ = makeIntConst($1, @1); : } : | FCONST : { : $$ = makeFloatConst($1, @1); 0.00 : 511d6f: 49 89 c6 mov %rax,%r14 : makeFloatConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Float; : n->val.val.str = str; 0.00 : 511d72: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 511d76: 89 58 18 mov %ebx,0x18(%rax) : } : | FCONST : { : $$ = makeFloatConst($1, @1); : } : | Sconst 0.00 : 511d79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511d80: e9 fb fb ff ff jmpq 511980 : /* : * Constants : */ : AexprConst: Iconst : { : $$ = makeIntConst($1, @1); 0.00 : 511d85: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511d8c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511d93: 8b 31 mov (%rcx),%esi 0.00 : 511d95: 8b 3b mov (%rbx),%edi 0.00 : 511d97: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511d9e: e8 6d ee ff ff callq 510c10 : } : | FCONST 0.00 : 511da3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* : * Constants : */ : AexprConst: Iconst : { : $$ = makeIntConst($1, @1); 0.00 : 511daa: 49 89 c6 mov %rax,%r14 : } : | FCONST 0.00 : 511dad: e9 ce fb ff ff jmpq 511980 : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } : | ColId indirection : { : $$ = check_func_name(lcons(makeString($1), $2), 0.00 : 511db2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511db9: 48 8b 1a mov (%rdx),%rbx 0.00 : 511dbc: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 511dc0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511dc7: e8 24 d9 0e 00 callq 5ff6f0 0.00 : 511dcc: 48 89 de mov %rbx,%rsi 0.00 : 511dcf: 48 89 c7 mov %rax,%rdi 0.00 : 511dd2: e8 79 fa 0c 00 callq 5e1850 0.00 : 511dd7: 48 85 c0 test %rax,%rax 0.00 : 511dda: 48 89 c1 mov %rax,%rcx 0.00 : 511ddd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511de4: 74 21 je 511e07 0.00 : 511de6: 48 8b 50 08 mov 0x8(%rax),%rdx : static List * : check_func_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511dea: 48 85 d2 test %rdx,%rdx 0.00 : 511ded: 74 18 je 511e07 : { : if (!IsA(lfirst(i), String)) 0.00 : 511def: 48 8b 02 mov (%rdx),%rax 0.00 : 511df2: 81 38 8d 02 00 00 cmpl $0x28d,(%rax) 0.00 : 511df8: 0f 85 7a 72 01 00 jne 529078 : static List * : check_func_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511dfe: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 511e02: 48 85 d2 test %rdx,%rdx 0.00 : 511e05: 75 e8 jne 511def : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } : | ColId indirection : { : $$ = check_func_name(lcons(makeString($1), $2), 0.00 : 511e07: 49 89 ce mov %rcx,%r14 : yyscanner); : } : ; 0.00 : 511e0a: e9 71 fb ff ff jmpq 511980 : * anything else for a columnref). Therefore we allow 'indirection' which : * may contain subscripts, and reject that case in the C code. (If we : * ever implement SQL99-like methods, such syntax may actually become legal!) : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } 0.00 : 511e0f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511e16: 48 8b 38 mov (%rax),%rdi 0.00 : 511e19: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511e20: e8 cb d8 0e 00 callq 5ff6f0 0.00 : 511e25: 31 f6 xor %esi,%esi 0.00 : 511e27: 48 89 c7 mov %rax,%rdi 0.00 : 511e2a: e8 21 fa 0c 00 callq 5e1850 : | ColId indirection 0.00 : 511e2f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * anything else for a columnref). Therefore we allow 'indirection' which : * may contain subscripts, and reject that case in the C code. (If we : * ever implement SQL99-like methods, such syntax may actually become legal!) : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } 0.00 : 511e36: 49 89 c6 mov %rax,%r14 : | ColId indirection 0.00 : 511e39: e9 42 fb ff ff jmpq 511980 : { : $$ = makeStringConst($1, @1); : } : | BCONST : { : $$ = makeBitStringConst($1, @1); 0.00 : 511e3e: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511e45: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511e4c: 48 8b 3d 0d 8a 6a 00 mov 0x6a8a0d(%rip),%rdi # bba860 : { : $$ = makeStringConst($1, @1); : } : | BCONST : { : $$ = makeBitStringConst($1, @1); 0.00 : 511e53: 8b 1e mov (%rsi),%ebx 0.00 : 511e55: 4c 8b 20 mov (%rax),%r12 : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511e58: be 20 00 00 00 mov $0x20,%esi 0.00 : 511e5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511e64: e8 a7 6f 28 00 callq 798e10 0.00 : 511e69: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_BitString; 0.00 : 511e6f: c7 40 08 8e 02 00 00 movl $0x28e,0x8(%rax) : { : $$ = makeStringConst($1, @1); : } : | BCONST : { : $$ = makeBitStringConst($1, @1); 0.00 : 511e76: 49 89 c6 mov %rax,%r14 : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_BitString; : n->val.val.str = str; 0.00 : 511e79: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 511e7d: 89 58 18 mov %ebx,0x18(%rax) : } : | BCONST : { : $$ = makeBitStringConst($1, @1); : } : | XCONST 0.00 : 511e80: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511e87: e9 f4 fa ff ff jmpq 511980 : { : $$ = makeFloatConst($1, @1); : } : | Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 511e8c: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 511e93: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511e9a: 8b 32 mov (%rdx),%esi 0.00 : 511e9c: 48 8b 39 mov (%rcx),%rdi 0.00 : 511e9f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ea6: e8 c5 ec ff ff callq 510b70 : } : | BCONST 0.00 : 511eab: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeFloatConst($1, @1); : } : | Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 511eb2: 49 89 c6 mov %rax,%r14 : } : | BCONST 0.00 : 511eb5: e9 c6 fa ff ff jmpq 511980 : /* This is a bit constant per SQL99: : * Without Feature F511, "BIT data type", : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); 0.00 : 511eba: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 511ec1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511ec8: be 20 00 00 00 mov $0x20,%esi 0.00 : 511ecd: 48 8b 3d 8c 89 6a 00 mov 0x6a898c(%rip),%rdi # bba860 : /* This is a bit constant per SQL99: : * Without Feature F511, "BIT data type", : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); 0.00 : 511ed4: 8b 1a mov (%rdx),%ebx 0.00 : 511ed6: 4c 8b 21 mov (%rcx),%r12 : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511ed9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ee0: e8 2b 6f 28 00 callq 798e10 0.00 : 511ee5: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_BitString; 0.00 : 511eeb: c7 40 08 8e 02 00 00 movl $0x28e,0x8(%rax) : /* This is a bit constant per SQL99: : * Without Feature F511, "BIT data type", : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); 0.00 : 511ef2: 49 89 c6 mov %rax,%r14 : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_BitString; : n->val.val.str = str; 0.00 : 511ef5: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 511ef9: 89 58 18 mov %ebx,0x18(%rax) : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); : } : | func_name Sconst 0.00 : 511efc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511f03: e9 78 fa ff ff jmpq 511980 : { : $$ = makeRangeVar(NULL, $1, @1); : } : | ColId indirection : { : check_qualified_name($2, yyscanner); 0.00 : 511f08: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511f0f: 48 8b 02 mov (%rdx),%rax 0.00 : 511f12: 48 85 c0 test %rax,%rax 0.00 : 511f15: 74 21 je 511f38 0.00 : 511f17: 48 8b 50 08 mov 0x8(%rax),%rdx : static void : check_qualified_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511f1b: 48 85 d2 test %rdx,%rdx 0.00 : 511f1e: 74 18 je 511f38 : { : if (!IsA(lfirst(i), String)) 0.00 : 511f20: 48 8b 02 mov (%rdx),%rax 0.00 : 511f23: 81 38 8d 02 00 00 cmpl $0x28d,(%rax) 0.00 : 511f29: 0f 85 49 71 01 00 jne 529078 : static void : check_qualified_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511f2f: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 511f33: 48 85 d2 test %rdx,%rdx 0.00 : 511f36: 75 e8 jne 511f20 : $$ = makeRangeVar(NULL, $1, @1); : } : | ColId indirection : { : check_qualified_name($2, yyscanner); : $$ = makeRangeVar(NULL, NULL, @1); 0.00 : 511f38: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511f3f: 31 f6 xor %esi,%esi 0.00 : 511f41: 31 ff xor %edi,%edi 0.00 : 511f43: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 511f46: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511f4d: e8 2e f7 0d 00 callq 5f1680 : switch (list_length($2)) 0.00 : 511f52: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = makeRangeVar(NULL, $1, @1); : } : | ColId indirection : { : check_qualified_name($2, yyscanner); : $$ = makeRangeVar(NULL, NULL, @1); 0.00 : 511f59: 48 89 c1 mov %rax,%rcx 0.00 : 511f5c: 49 89 c6 mov %rax,%r14 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 511f5f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : switch (list_length($2)) 0.00 : 511f66: 48 8b 03 mov (%rbx),%rax 0.00 : 511f69: 48 85 c0 test %rax,%rax 0.00 : 511f6c: 74 15 je 511f83 0.00 : 511f6e: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 511f71: 83 f8 01 cmp $0x1,%eax 0.00 : 511f74: 0f 84 c6 76 01 00 je 529640 0.00 : 511f7a: 83 f8 02 cmp $0x2,%eax 0.00 : 511f7d: 0f 84 2d 76 01 00 je 5295b0 : $$->catalogname = $1; : $$->schemaname = strVal(linitial($2)); : $$->relname = strVal(lsecond($2)); : break; : default: : ereport(ERROR, 0.00 : 511f83: 45 31 c0 xor %r8d,%r8d 0.00 : 511f86: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 511f8b: ba 04 32 00 00 mov $0x3204,%edx 0.00 : 511f90: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 511f95: bf 14 00 00 00 mov $0x14,%edi 0.00 : 511f9a: e8 21 8b 26 00 callq 77aac0 0.00 : 511f9f: 84 c0 test %al,%al 0.00 : 511fa1: 0f 85 c0 82 01 00 jne 52a267 : { : TypeName *t = $1; : if ($6 != NIL) : { : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 511fa7: e8 24 75 f5 ff callq 4694d0 : * which may contain subscripts, and reject that case in the C code. : */ : qualified_name: : ColId : { : $$ = makeRangeVar(NULL, $1, @1); 0.00 : 511fac: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511fb3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511fba: 31 ff xor %edi,%edi 0.00 : 511fbc: 8b 16 mov (%rsi),%edx 0.00 : 511fbe: 48 8b 30 mov (%rax),%rsi 0.00 : 511fc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511fc8: e8 b3 f6 0d 00 callq 5f1680 : } : | ColId indirection 0.00 : 511fcd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * which may contain subscripts, and reject that case in the C code. : */ : qualified_name: : ColId : { : $$ = makeRangeVar(NULL, $1, @1); 0.00 : 511fd4: 49 89 c6 mov %rax,%r14 : } : | ColId indirection 0.00 : 511fd7: e9 a4 f9 ff ff jmpq 511980 : /* : * Aggregate decoration clauses : */ : within_group_clause: : WITHIN GROUP_P '(' sort_clause ')' { $$ = $4; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 511fdc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 511fdf: e9 9c f9 ff ff jmpq 511980 : : /* : * Aggregate decoration clauses : */ : within_group_clause: : WITHIN GROUP_P '(' sort_clause ')' { $$ = $4; } 0.00 : 511fe4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511feb: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 511fef: e9 8c f9 ff ff jmpq 511980 : { : $$ = $4; : } : | PASSING BY REF c_expr BY REF : { : $$ = $4; 0.00 : 511ff4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511ffb: 4c 8b 73 f0 mov -0x10(%rbx),%r14 : } : ; 0.00 : 511fff: e9 7c f9 ff ff jmpq 511980 : { : $$ = $2; : } : | PASSING BY REF c_expr : { : $$ = $4; 0.00 : 512004: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51200b: 4c 8b 31 mov (%rcx),%r14 : } : | PASSING BY REF c_expr BY REF 0.00 : 51200e: e9 6d f9 ff ff jmpq 511980 : { : $$ = $2; : } : | PASSING c_expr BY REF : { : $$ = $2; 0.00 : 512013: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51201a: 4c 8b 72 f0 mov -0x10(%rdx),%r14 : } : | PASSING BY REF c_expr 0.00 : 51201e: e9 5d f9 ff ff jmpq 511980 : : /* We allow several variants for SQL and other compatibility. */ : xmlexists_argument: : PASSING c_expr : { : $$ = $2; 0.00 : 512023: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51202a: 4c 8b 30 mov (%rax),%r14 : } : | PASSING c_expr BY REF 0.00 : 51202d: e9 4e f9 ff ff jmpq 511980 : | CONTENT_P { $$ = XMLOPTION_CONTENT; } : ; : : xml_whitespace_option: PRESERVE WHITESPACE_P { $$ = TRUE; } : | STRIP_P WHITESPACE_P { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 512032: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 512035: e9 46 f9 ff ff jmpq 511980 : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } : | CONTENT_P { $$ = XMLOPTION_CONTENT; } : ; : : xml_whitespace_option: PRESERVE WHITESPACE_P { $$ = TRUE; } : | STRIP_P WHITESPACE_P { $$ = FALSE; } 0.00 : 51203a: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51203d: e9 3e f9 ff ff jmpq 511980 : : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } : | CONTENT_P { $$ = XMLOPTION_CONTENT; } : ; : : xml_whitespace_option: PRESERVE WHITESPACE_P { $$ = TRUE; } 0.00 : 512042: 41 b6 01 mov $0x1,%r14b : | STRIP_P WHITESPACE_P { $$ = FALSE; } 0.00 : 512045: e9 36 f9 ff ff jmpq 511980 : $$->location = @1; : } : ; : : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } : | CONTENT_P { $$ = XMLOPTION_CONTENT; } 0.00 : 51204a: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 512051: ff ff ff 0.00 : 512054: 49 21 f6 and %rsi,%r14 0.00 : 512057: 49 83 ce 01 or $0x1,%r14 : ; 0.00 : 51205b: e9 20 f9 ff ff jmpq 511980 : $$->val = (Node *) $1; : $$->location = @1; : } : ; : : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } 0.00 : 512060: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 512067: ff ff ff 0.00 : 51206a: 49 21 de and %rbx,%r14 : | CONTENT_P { $$ = XMLOPTION_CONTENT; } 0.00 : 51206d: e9 0e f9 ff ff jmpq 511980 : $$->val = (Node *) $1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 512072: 48 8b 3d e7 87 6a 00 mov 0x6a87e7(%rip),%rdi # bba860 0.00 : 512079: be 28 00 00 00 mov $0x28,%esi 0.00 : 51207e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512085: e8 86 6d 28 00 callq 798e10 0.00 : 51208a: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = NULL; 0.00 : 512090: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 512097: 00 : $$->val = (Node *) $1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 512098: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->indirection = NIL; 0.00 : 51209b: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5120a2: 00 : $$->val = (Node *) $1; 0.00 : 5120a3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5120aa: 48 8b 02 mov (%rdx),%rax 0.00 : 5120ad: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5120b1: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5120b8: 8b 01 mov (%rcx),%eax 0.00 : 5120ba: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 5120be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5120c5: e9 b6 f8 ff ff jmpq 511980 : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } : ; : : xml_attribute_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 5120ca: 48 8b 3d 8f 87 6a 00 mov 0x6a878f(%rip),%rdi # bba860 0.00 : 5120d1: be 28 00 00 00 mov $0x28,%esi 0.00 : 5120d6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5120dd: e8 2e 6d 28 00 callq 798e10 0.00 : 5120e2: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $3; 0.00 : 5120e8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } : ; : : xml_attribute_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 5120ef: 49 89 c6 mov %rax,%r14 : $$->name = $3; 0.00 : 5120f2: 48 8b 03 mov (%rbx),%rax : $$->indirection = NIL; 0.00 : 5120f5: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 5120fc: 00 : ; : : xml_attribute_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); : $$->name = $3; 0.00 : 5120fd: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = NIL; : $$->val = (Node *) $1; 0.00 : 512101: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 512105: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 512109: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512110: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 512113: 41 89 46 20 mov %eax,0x20(%r14) : } : | a_expr 0.00 : 512117: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51211e: e9 5d f8 ff ff jmpq 511980 : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 512123: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51212a: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51212e: 48 8b 31 mov (%rcx),%rsi 0.00 : 512131: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512138: e8 43 fd 0c 00 callq 5e1e80 : ; 0.00 : 51213d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 512144: 49 89 c6 mov %rax,%r14 : ; 0.00 : 512147: e9 34 f8 ff ff jmpq 511980 : ; : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } 0.00 : 51214c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 512153: 31 f6 xor %esi,%esi 0.00 : 512155: 48 8b 3a mov (%rdx),%rdi 0.00 : 512158: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51215f: e8 ec f6 0c 00 callq 5e1850 : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 512164: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } 0.00 : 51216b: 49 89 c6 mov %rax,%r14 : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 51216e: e9 0d f8 ff ff jmpq 511980 : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } : | /*EMPTY*/ : { $$ = makeIntConst(XML_STANDALONE_OMITTED, -1); } : ; : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } 0.00 : 512173: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51217a: 4c 8b 70 f8 mov -0x8(%rax),%r14 : ; 0.00 : 51217e: e9 fd f7 ff ff jmpq 511980 : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } : | /*EMPTY*/ : { $$ = makeIntConst(XML_STANDALONE_OMITTED, -1); } 0.00 : 512183: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512188: bf 03 00 00 00 mov $0x3,%edi 0.00 : 51218d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512194: e8 77 ea ff ff callq 510c10 : ; 0.00 : 512199: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } : | /*EMPTY*/ : { $$ = makeIntConst(XML_STANDALONE_OMITTED, -1); } 0.00 : 5121a0: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5121a3: e9 d8 f7 ff ff jmpq 511980 : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } 0.00 : 5121a8: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5121ad: bf 02 00 00 00 mov $0x2,%edi 0.00 : 5121b2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5121b9: e8 52 ea ff ff callq 510c10 : | /*EMPTY*/ 0.00 : 5121be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } 0.00 : 5121c5: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ 0.00 : 5121c8: e9 b3 f7 ff ff jmpq 511980 : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } 0.00 : 5121cd: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5121d2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5121d7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5121de: e8 2d ea ff ff callq 510c10 : | ',' STANDALONE_P NO VALUE_P 0.00 : 5121e3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } 0.00 : 5121ea: 49 89 c6 mov %rax,%r14 : | ',' STANDALONE_P NO VALUE_P 0.00 : 5121ed: e9 8e f7 ff ff jmpq 511980 : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } 0.00 : 5121f2: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5121f7: 31 ff xor %edi,%edi 0.00 : 5121f9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512200: e8 0b ea ff ff callq 510c10 : | ',' STANDALONE_P NO 0.00 : 512205: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } 0.00 : 51220c: 49 89 c6 mov %rax,%r14 : | ',' STANDALONE_P NO 0.00 : 51220f: e9 6c f7 ff ff jmpq 511980 : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 512214: 48 8b 3d 45 86 6a 00 mov 0x6a8645(%rip),%rdi # bba860 0.00 : 51221b: be 20 00 00 00 mov $0x20,%esi 0.00 : 512220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512227: e8 e4 6b 28 00 callq 798e10 0.00 : 51222c: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 512232: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : * SQL/XML support : */ : xml_root_version: VERSION_P a_expr : { $$ = $2; } : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } 0.00 : 512239: 49 89 c6 mov %rax,%r14 : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Null; : n->location = location; 0.00 : 51223c: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : */ : xml_root_version: VERSION_P a_expr : { $$ = $2; } : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } : ; 0.00 : 512243: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51224a: e9 31 f7 ff ff jmpq 511980 : : /* : * SQL/XML support : */ : xml_root_version: VERSION_P a_expr : { $$ = $2; } 0.00 : 51224f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512256: 4c 8b 36 mov (%rsi),%r14 : | VERSION_P NO VALUE_P 0.00 : 512259: e9 22 f7 ff ff jmpq 511980 : $$ = makeXmlExpr(IS_XMLROOT, NULL, NIL, : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' : { : XmlSerialize *n = makeNode(XmlSerialize); 0.00 : 51225e: 48 8b 3d fb 85 6a 00 mov 0x6a85fb(%rip),%rdi # bba860 0.00 : 512265: be 20 00 00 00 mov $0x20,%esi 0.00 : 51226a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512271: e8 9a 6b 28 00 callq 798e10 0.00 : 512276: c7 00 a7 03 00 00 movl $0x3a7,(%rax) : n->xmloption = $3; 0.00 : 51227c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->expr = $4; : n->typeName = $6; : n->location = @1; : $$ = (Node *)n; 0.00 : 512283: 49 89 c6 mov %rax,%r14 : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' : { : XmlSerialize *n = makeNode(XmlSerialize); : n->xmloption = $3; 0.00 : 512286: 8b 51 e0 mov -0x20(%rcx),%edx 0.00 : 512289: 89 50 04 mov %edx,0x4(%rax) : n->expr = $4; 0.00 : 51228c: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 512290: 48 89 50 08 mov %rdx,0x8(%rax) : n->typeName = $6; 0.00 : 512294: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 512298: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @1; 0.00 : 51229c: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5122a3: 8b 53 e8 mov -0x18(%rbx),%edx 0.00 : 5122a6: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5122a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5122b0: e9 cb f6 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' : { : $$ = makeXmlExpr(IS_XMLROOT, NULL, NIL, 0.00 : 5122b5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5122bc: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5122c3: 31 f6 xor %esi,%esi 0.00 : 5122c5: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 5122c9: 8b 5a e8 mov -0x18(%rdx),%ebx 0.00 : 5122cc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5122d3: e8 78 f5 0c 00 callq 5e1850 0.00 : 5122d8: 48 89 c6 mov %rax,%rsi 0.00 : 5122db: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5122e2: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 5122e6: e8 65 f5 0c 00 callq 5e1850 0.00 : 5122eb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5122f2: 48 89 c6 mov %rax,%rsi 0.00 : 5122f5: 48 8b 7a e0 mov -0x20(%rdx),%rdi 0.00 : 5122f9: e8 52 f5 0c 00 callq 5e1850 0.00 : 5122fe: 41 89 d8 mov %ebx,%r8d 0.00 : 512301: 48 89 c1 mov %rax,%rcx 0.00 : 512304: 31 d2 xor %edx,%edx 0.00 : 512306: 31 f6 xor %esi,%esi 0.00 : 512308: bf 05 00 00 00 mov $0x5,%edi 0.00 : 51230d: e8 de e7 ff ff callq 510af0 : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' 0.00 : 512312: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' : { : $$ = makeXmlExpr(IS_XMLROOT, NULL, NIL, 0.00 : 512319: 49 89 c6 mov %rax,%r14 : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' 0.00 : 51231c: e9 5f f6 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); 0.00 : 512321: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512328: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51232f: 31 f6 xor %esi,%esi 0.00 : 512331: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 512335: 8b 5a e8 mov -0x18(%rdx),%ebx 0.00 : 512338: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51233f: e8 0c f5 0c 00 callq 5e1850 0.00 : 512344: 48 89 c1 mov %rax,%rcx 0.00 : 512347: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51234e: 41 89 d8 mov %ebx,%r8d 0.00 : 512351: 31 d2 xor %edx,%edx 0.00 : 512353: bf 04 00 00 00 mov $0x4,%edi 0.00 : 512358: 48 8b 70 e8 mov -0x18(%rax),%rsi 0.00 : 51235c: e8 8f e7 ff ff callq 510af0 : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' 0.00 : 512361: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); 0.00 : 512368: 49 89 c6 mov %rax,%r14 : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' 0.00 : 51236b: e9 10 f6 ff ff jmpq 511980 : x->xmloption = $3; : $$ = (Node *)x; : } : | XMLPI '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); 0.00 : 512370: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512377: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51237e: 31 c9 xor %ecx,%ecx 0.00 : 512380: 31 d2 xor %edx,%edx 0.00 : 512382: bf 04 00 00 00 mov $0x4,%edi 0.00 : 512387: 48 8b 73 f8 mov -0x8(%rbx),%rsi 0.00 : 51238b: 44 8b 40 f0 mov -0x10(%rax),%r8d 0.00 : 51238f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512396: e8 55 e7 ff ff callq 510af0 : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' 0.00 : 51239b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : x->xmloption = $3; : $$ = (Node *)x; : } : | XMLPI '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); 0.00 : 5123a2: 49 89 c6 mov %rax,%r14 : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' 0.00 : 5123a5: e9 d6 f5 ff ff jmpq 511980 : | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' : { : XmlExpr *x = (XmlExpr *) : makeXmlExpr(IS_XMLPARSE, NULL, NIL, : list_make2($4, makeBoolAConst($5, -1)), : @1); 0.00 : 5123aa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5123b1: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5123b8: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5123bd: 0f be 79 f8 movsbl -0x8(%rcx),%edi 0.00 : 5123c1: 8b 5a ec mov -0x14(%rdx),%ebx 0.00 : 5123c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5123cb: e8 20 e9 ff ff callq 510cf0 0.00 : 5123d0: 31 f6 xor %esi,%esi 0.00 : 5123d2: 48 89 c7 mov %rax,%rdi 0.00 : 5123d5: e8 76 f4 0c 00 callq 5e1850 0.00 : 5123da: 48 89 c6 mov %rax,%rsi 0.00 : 5123dd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5123e4: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 5123e8: e8 63 f4 0c 00 callq 5e1850 0.00 : 5123ed: 31 d2 xor %edx,%edx 0.00 : 5123ef: 48 89 c1 mov %rax,%rcx 0.00 : 5123f2: 41 89 d8 mov %ebx,%r8d 0.00 : 5123f5: 31 f6 xor %esi,%esi 0.00 : 5123f7: bf 03 00 00 00 mov $0x3,%edi 0.00 : 5123fc: e8 ef e6 ff ff callq 510af0 : x->xmloption = $3; 0.00 : 512401: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)x; 0.00 : 512408: 49 89 c6 mov %rax,%r14 : { : XmlExpr *x = (XmlExpr *) : makeXmlExpr(IS_XMLPARSE, NULL, NIL, : list_make2($4, makeBoolAConst($5, -1)), : @1); : x->xmloption = $3; 0.00 : 51240b: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 51240e: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)x; : } : | XMLPI '(' NAME_P ColLabel ')' 0.00 : 512411: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512418: e9 63 f5 ff ff jmpq 511980 : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); : } : | XMLFOREST '(' xml_attribute_list ')' : { : $$ = makeXmlExpr(IS_XMLFOREST, NULL, $3, NIL, @1); 0.00 : 51241d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512424: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51242b: 31 c9 xor %ecx,%ecx 0.00 : 51242d: bf 02 00 00 00 mov $0x2,%edi 0.00 : 512432: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 512436: 44 8b 40 f4 mov -0xc(%rax),%r8d 0.00 : 51243a: 31 f6 xor %esi,%esi 0.00 : 51243c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512443: e8 a8 e6 ff ff callq 510af0 : } : | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' 0.00 : 512448: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); : } : | XMLFOREST '(' xml_attribute_list ')' : { : $$ = makeXmlExpr(IS_XMLFOREST, NULL, $3, NIL, @1); 0.00 : 51244f: 49 89 c6 mov %rax,%r14 : } : | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' 0.00 : 512452: e9 29 f5 ff ff jmpq 511980 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' : { : /* xmlexists(A PASSING [BY REF] B [BY REF]) is : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); 0.00 : 512457: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51245e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512465: 31 f6 xor %esi,%esi 0.00 : 512467: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51246b: 44 8b 62 f0 mov -0x10(%rdx),%r12d 0.00 : 51246f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512476: e8 d5 f3 0c 00 callq 5e1850 0.00 : 51247b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512482: 48 89 c6 mov %rax,%rsi 0.00 : 512485: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 512489: e8 c2 f3 0c 00 callq 5e1850 0.00 : 51248e: bf ab 97 7c 00 mov $0x7c97ab,%edi 0.00 : 512493: 48 89 c3 mov %rax,%rbx 0.00 : 512496: e8 55 e5 ff ff callq 5109f0 0.00 : 51249b: 44 89 e2 mov %r12d,%edx 0.00 : 51249e: 48 89 c7 mov %rax,%rdi 0.00 : 5124a1: 48 89 de mov %rbx,%rsi 0.00 : 5124a4: e8 77 ef 0d 00 callq 5f1420 : } : | XMLFOREST '(' xml_attribute_list ')' 0.00 : 5124a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' : { : /* xmlexists(A PASSING [BY REF] B [BY REF]) is : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); 0.00 : 5124b0: 49 89 c6 mov %rax,%r14 : } : | XMLFOREST '(' xml_attribute_list ')' 0.00 : 5124b3: e9 c8 f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, $8, @1); 0.00 : 5124b8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5124bf: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5124c6: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5124cb: 48 89 d3 mov %rdx,%rbx 0.00 : 5124ce: 48 8b 4a f8 mov -0x8(%rdx),%rcx 0.00 : 5124d2: 44 8b 40 e0 mov -0x20(%rax),%r8d 0.00 : 5124d6: 48 8b 52 e8 mov -0x18(%rdx),%rdx 0.00 : 5124da: 48 8b 73 d8 mov -0x28(%rbx),%rsi 0.00 : 5124de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5124e5: e8 06 e6 ff ff callq 510af0 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' 0.00 : 5124ea: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, $8, @1); 0.00 : 5124f1: 49 89 c6 mov %rax,%r14 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' 0.00 : 5124f4: e9 87 f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); 0.00 : 5124f9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512500: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512507: 31 d2 xor %edx,%edx 0.00 : 512509: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51250e: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 512512: 48 8b 73 e8 mov -0x18(%rbx),%rsi 0.00 : 512516: 44 8b 40 e8 mov -0x18(%rax),%r8d 0.00 : 51251a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512521: e8 ca e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' 0.00 : 512526: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); 0.00 : 51252d: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' 0.00 : 512530: e9 4b f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); 0.00 : 512535: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51253c: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512543: bf 01 00 00 00 mov $0x1,%edi 0.00 : 512548: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51254c: 44 8b 41 e8 mov -0x18(%rcx),%r8d 0.00 : 512550: 31 c9 xor %ecx,%ecx 0.00 : 512552: 48 8b 76 e8 mov -0x18(%rsi),%rsi 0.00 : 512556: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51255d: e8 8e e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' 0.00 : 512562: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); 0.00 : 512569: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' 0.00 : 51256c: e9 0f f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); 0.00 : 512571: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512578: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51257f: 31 d2 xor %edx,%edx 0.00 : 512581: bf 01 00 00 00 mov $0x1,%edi 0.00 : 512586: 48 8b 71 f8 mov -0x8(%rcx),%rsi 0.00 : 51258a: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 51258e: 31 c9 xor %ecx,%ecx 0.00 : 512590: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512597: e8 54 e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' 0.00 : 51259c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); 0.00 : 5125a3: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' 0.00 : 5125a6: e9 d5 f3 ff ff jmpq 511980 : v->location = @1; : $$ = (Node *)v; : } : | XMLCONCAT '(' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); 0.00 : 5125ab: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5125b2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5125b9: 31 f6 xor %esi,%esi 0.00 : 5125bb: 31 ff xor %edi,%edi 0.00 : 5125bd: 44 8b 42 f4 mov -0xc(%rdx),%r8d 0.00 : 5125c1: 48 8b 48 f8 mov -0x8(%rax),%rcx 0.00 : 5125c5: 31 d2 xor %edx,%edx 0.00 : 5125c7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5125ce: e8 1d e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ')' 0.00 : 5125d3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : v->location = @1; : $$ = (Node *)v; : } : | XMLCONCAT '(' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); 0.00 : 5125da: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ')' 0.00 : 5125dd: e9 9e f3 ff ff jmpq 511980 : v->location = @1; : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); 0.00 : 5125e2: 48 8b 3d 77 82 6a 00 mov 0x6a8277(%rip),%rdi # bba860 0.00 : 5125e9: be 28 00 00 00 mov $0x28,%esi 0.00 : 5125ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5125f5: e8 16 68 28 00 callq 798e10 0.00 : 5125fa: c7 00 4d 01 00 00 movl $0x14d,(%rax) : v->args = $3; 0.00 : 512600: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : v->op = IS_LEAST; : v->location = @1; : $$ = (Node *)v; 0.00 : 512607: 49 89 c6 mov %rax,%r14 : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 51260a: 48 8b 53 f8 mov -0x8(%rbx),%rdx : v->op = IS_LEAST; 0.00 : 51260e: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 512615: 48 89 50 18 mov %rdx,0x18(%rax) : v->op = IS_LEAST; : v->location = @1; 0.00 : 512619: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512620: 8b 56 f4 mov -0xc(%rsi),%edx 0.00 : 512623: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *)v; : } : | XMLCONCAT '(' expr_list ')' 0.00 : 512626: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51262d: e9 4e f3 ff ff jmpq 511980 : c->location = @1; : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); 0.00 : 512632: 48 8b 3d 27 82 6a 00 mov 0x6a8227(%rip),%rdi # bba860 0.00 : 512639: be 28 00 00 00 mov $0x28,%esi 0.00 : 51263e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512645: e8 c6 67 28 00 callq 798e10 0.00 : 51264a: c7 00 4d 01 00 00 movl $0x14d,(%rax) : v->args = $3; 0.00 : 512650: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : v->op = IS_GREATEST; : v->location = @1; : $$ = (Node *)v; 0.00 : 512657: 49 89 c6 mov %rax,%r14 : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 51265a: 48 8b 56 f8 mov -0x8(%rsi),%rdx : v->op = IS_GREATEST; 0.00 : 51265e: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 512665: 48 89 50 18 mov %rdx,0x18(%rax) : v->op = IS_GREATEST; : v->location = @1; 0.00 : 512669: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512670: 8b 51 f4 mov -0xc(%rcx),%edx 0.00 : 512673: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' 0.00 : 512676: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51267d: e9 fe f2 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); : } : | COALESCE '(' expr_list ')' : { : CoalesceExpr *c = makeNode(CoalesceExpr); 0.00 : 512682: 48 8b 3d d7 81 6a 00 mov 0x6a81d7(%rip),%rdi # bba860 0.00 : 512689: be 20 00 00 00 mov $0x20,%esi 0.00 : 51268e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512695: e8 76 67 28 00 callq 798e10 0.00 : 51269a: c7 00 4c 01 00 00 movl $0x14c,(%rax) : c->args = $3; 0.00 : 5126a0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : c->location = @1; : $$ = (Node *)c; 0.00 : 5126a7: 49 89 c6 mov %rax,%r14 : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); : } : | COALESCE '(' expr_list ')' : { : CoalesceExpr *c = makeNode(CoalesceExpr); : c->args = $3; 0.00 : 5126aa: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5126ae: 48 89 50 10 mov %rdx,0x10(%rax) : c->location = @1; 0.00 : 5126b2: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5126b9: 8b 53 f4 mov -0xc(%rbx),%edx 0.00 : 5126bc: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' 0.00 : 5126bf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5126c6: e9 b5 f2 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); : } : | NULLIF '(' a_expr ',' a_expr ')' : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); 0.00 : 5126cb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5126d2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5126d9: bf 04 00 00 00 mov $0x4,%edi 0.00 : 5126de: 44 8b 46 ec mov -0x14(%rsi),%r8d 0.00 : 5126e2: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 5126e6: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 5126eb: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 5126ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5126f6: e8 75 f3 0d 00 callq 5f1a70 : } : | COALESCE '(' expr_list ')' 0.00 : 5126fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); : } : | NULLIF '(' a_expr ',' a_expr ')' : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); 0.00 : 512702: 49 89 c6 mov %rax,%r14 : } : | COALESCE '(' expr_list ')' 0.00 : 512705: e9 76 f2 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); : } : | TRIM '(' trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); 0.00 : 51270a: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512711: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512718: bf 99 97 7c 00 mov $0x7c9799,%edi 0.00 : 51271d: 4c 8b 61 f8 mov -0x8(%rcx),%r12 0.00 : 512721: 8b 5a f4 mov -0xc(%rdx),%ebx 0.00 : 512724: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51272b: e8 c0 e2 ff ff callq 5109f0 0.00 : 512730: 89 da mov %ebx,%edx 0.00 : 512732: 48 89 c7 mov %rax,%rdi 0.00 : 512735: 4c 89 e6 mov %r12,%rsi 0.00 : 512738: e8 e3 ec 0d 00 callq 5f1420 : } : | NULLIF '(' a_expr ',' a_expr ')' 0.00 : 51273d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); : } : | TRIM '(' trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); 0.00 : 512744: 49 89 c6 mov %rax,%r14 : } : | NULLIF '(' a_expr ',' a_expr ')' 0.00 : 512747: e9 34 f2 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); : } : | TRIM '(' TRAILING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); 0.00 : 51274c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512753: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51275a: bf a5 97 7c 00 mov $0x7c97a5,%edi 0.00 : 51275f: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 512762: 4c 8b 60 f8 mov -0x8(%rax),%r12 0.00 : 512766: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51276d: e8 7e e2 ff ff callq 5109f0 0.00 : 512772: 89 da mov %ebx,%edx 0.00 : 512774: 48 89 c7 mov %rax,%rdi 0.00 : 512777: 4c 89 e6 mov %r12,%rsi 0.00 : 51277a: e8 a1 ec 0d 00 callq 5f1420 : } : | TRIM '(' trim_list ')' 0.00 : 51277f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); : } : | TRIM '(' TRAILING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); 0.00 : 512786: 49 89 c6 mov %rax,%r14 : } : | TRIM '(' trim_list ')' 0.00 : 512789: e9 f2 f1 ff ff jmpq 511980 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); : } : | TRIM '(' LEADING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); 0.00 : 51278e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512795: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51279c: bf 9f 97 7c 00 mov $0x7c979f,%edi 0.00 : 5127a1: 4c 8b 61 f8 mov -0x8(%rcx),%r12 0.00 : 5127a5: 8b 5a f0 mov -0x10(%rdx),%ebx 0.00 : 5127a8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5127af: e8 3c e2 ff ff callq 5109f0 0.00 : 5127b4: 89 da mov %ebx,%edx 0.00 : 5127b6: 48 89 c7 mov %rax,%rdi 0.00 : 5127b9: 4c 89 e6 mov %r12,%rsi 0.00 : 5127bc: e8 5f ec 0d 00 callq 5f1420 : } : | TRIM '(' TRAILING trim_list ')' 0.00 : 5127c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); : } : | TRIM '(' LEADING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); 0.00 : 5127c8: 49 89 c6 mov %rax,%r14 : } : | TRIM '(' TRAILING trim_list ')' 0.00 : 5127cb: e9 b0 f1 ff ff jmpq 511980 : | TRIM '(' BOTH trim_list ')' : { : /* various trim expressions are defined in SQL : * - thomas 1997-07-19 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); 0.00 : 5127d0: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5127d7: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5127de: bf 99 97 7c 00 mov $0x7c9799,%edi 0.00 : 5127e3: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 5127e6: 4c 8b 60 f8 mov -0x8(%rax),%r12 0.00 : 5127ea: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5127f1: e8 fa e1 ff ff callq 5109f0 0.00 : 5127f6: 89 da mov %ebx,%edx 0.00 : 5127f8: 48 89 c7 mov %rax,%rdi 0.00 : 5127fb: 4c 89 e6 mov %r12,%rsi 0.00 : 5127fe: e8 1d ec 0d 00 callq 5f1420 : } : | TRIM '(' LEADING trim_list ')' 0.00 : 512803: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | TRIM '(' BOTH trim_list ')' : { : /* various trim expressions are defined in SQL : * - thomas 1997-07-19 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); 0.00 : 51280a: 49 89 c6 mov %rax,%r14 : } : | TRIM '(' LEADING trim_list ')' 0.00 : 51280d: e9 6e f1 ff ff jmpq 511980 : * coercions than are handled by implicit casting. : * : * Convert SystemTypeName() to SystemFuncName() even though : * at the moment they result in the same thing. : */ : $$ = (Node *) makeFuncCall(SystemFuncName(((Value *)llast($5->names))->val.str), 0.00 : 512812: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 512819: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512820: 31 f6 xor %esi,%esi 0.00 : 512822: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 512826: 8b 58 ec mov -0x14(%rax),%ebx 0.00 : 512829: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512830: e8 1b f0 0c 00 callq 5e1850 0.00 : 512835: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51283c: 49 89 c4 mov %rax,%r12 : } : : STATIC_IF_INLINE ListCell * : list_tail(List *l) : { : return l ? l->tail : NULL; 0.00 : 51283f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512846: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51284a: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 51284e: 31 c0 xor %eax,%eax 0.00 : 512850: 48 85 d2 test %rdx,%rdx 0.00 : 512853: 74 04 je 512859 0.00 : 512855: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 512859: 48 8b 00 mov (%rax),%rax 0.00 : 51285c: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 512860: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512867: e8 84 e1 ff ff callq 5109f0 0.00 : 51286c: 89 da mov %ebx,%edx 0.00 : 51286e: 48 89 c7 mov %rax,%rdi 0.00 : 512871: 4c 89 e6 mov %r12,%rsi 0.00 : 512874: e8 a7 eb 0d 00 callq 5f1420 : list_make1($3), : @1); : } : | TRIM '(' BOTH trim_list ')' 0.00 : 512879: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * coercions than are handled by implicit casting. : * : * Convert SystemTypeName() to SystemFuncName() even though : * at the moment they result in the same thing. : */ : $$ = (Node *) makeFuncCall(SystemFuncName(((Value *)llast($5->names))->val.str), 0.00 : 512880: 49 89 c6 mov %rax,%r14 : list_make1($3), : @1); : } : | TRIM '(' BOTH trim_list ')' 0.00 : 512883: e9 f8 f0 ff ff jmpq 511980 : | SUBSTRING '(' substr_list ')' : { : /* substring(A from B for C) is converted to : * substring(A, B, C) - thomas 2000-11-28 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("substring"), $3, @1); 0.00 : 512888: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51288f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512896: bf 8f 97 7c 00 mov $0x7c978f,%edi 0.00 : 51289b: 8b 59 f4 mov -0xc(%rcx),%ebx 0.00 : 51289e: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 5128a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5128a9: e8 42 e1 ff ff callq 5109f0 0.00 : 5128ae: 89 da mov %ebx,%edx 0.00 : 5128b0: 48 89 c7 mov %rax,%rdi 0.00 : 5128b3: 4c 89 e6 mov %r12,%rsi 0.00 : 5128b6: e8 65 eb 0d 00 callq 5f1420 : } : | TREAT '(' a_expr AS Typename ')' 0.00 : 5128bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | SUBSTRING '(' substr_list ')' : { : /* substring(A from B for C) is converted to : * substring(A, B, C) - thomas 2000-11-28 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("substring"), $3, @1); 0.00 : 5128c2: 49 89 c6 mov %rax,%r14 : } : | TREAT '(' a_expr AS Typename ')' 0.00 : 5128c5: e9 b6 f0 ff ff jmpq 511980 : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); : } : | POSITION '(' position_list ')' : { : /* position(A in B) is converted to position(B, A) */ : $$ = (Node *) makeFuncCall(SystemFuncName("position"), $3, @1); 0.00 : 5128ca: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5128d1: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5128d8: bf 98 5d 8c 00 mov $0x8c5d98,%edi 0.00 : 5128dd: 4c 8b 62 f8 mov -0x8(%rdx),%r12 0.00 : 5128e1: 8b 58 f4 mov -0xc(%rax),%ebx 0.00 : 5128e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5128eb: e8 00 e1 ff ff callq 5109f0 0.00 : 5128f0: 89 da mov %ebx,%edx 0.00 : 5128f2: 48 89 c7 mov %rax,%rdi 0.00 : 5128f5: 4c 89 e6 mov %r12,%rsi 0.00 : 5128f8: e8 23 eb 0d 00 callq 5f1420 : } : | SUBSTRING '(' substr_list ')' 0.00 : 5128fd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); : } : | POSITION '(' position_list ')' : { : /* position(A in B) is converted to position(B, A) */ : $$ = (Node *) makeFuncCall(SystemFuncName("position"), $3, @1); 0.00 : 512904: 49 89 c6 mov %rax,%r14 : } : | SUBSTRING '(' substr_list ')' 0.00 : 512907: e9 74 f0 ff ff jmpq 511980 : /* overlay(A PLACING B FROM C FOR D) is converted to : * overlay(A, B, C, D) : * overlay(A PLACING B FROM C) is converted to : * overlay(A, B, C) : */ : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); 0.00 : 51290c: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512913: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51291a: bf 70 47 8e 00 mov $0x8e4770,%edi 0.00 : 51291f: 8b 59 f4 mov -0xc(%rcx),%ebx 0.00 : 512922: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 512926: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51292d: e8 be e0 ff ff callq 5109f0 0.00 : 512932: 89 da mov %ebx,%edx 0.00 : 512934: 48 89 c7 mov %rax,%rdi 0.00 : 512937: 4c 89 e6 mov %r12,%rsi 0.00 : 51293a: e8 e1 ea 0d 00 callq 5f1420 : } : | POSITION '(' position_list ')' 0.00 : 51293f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* overlay(A PLACING B FROM C FOR D) is converted to : * overlay(A, B, C, D) : * overlay(A PLACING B FROM C) is converted to : * overlay(A, B, C) : */ : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); 0.00 : 512946: 49 89 c6 mov %rax,%r14 : } : | POSITION '(' position_list ')' 0.00 : 512949: e9 32 f0 ff ff jmpq 511980 : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } : | EXTRACT '(' extract_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("date_part"), $3, @1); 0.00 : 51294e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 512955: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51295c: bf 85 97 7c 00 mov $0x7c9785,%edi 0.00 : 512961: 4c 8b 62 f8 mov -0x8(%rdx),%r12 0.00 : 512965: 8b 58 f4 mov -0xc(%rax),%ebx 0.00 : 512968: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51296f: e8 7c e0 ff ff callq 5109f0 0.00 : 512974: 89 da mov %ebx,%edx 0.00 : 512976: 48 89 c7 mov %rax,%rdi 0.00 : 512979: 4c 89 e6 mov %r12,%rsi 0.00 : 51297c: e8 9f ea 0d 00 callq 5f1420 : } : | OVERLAY '(' overlay_list ')' 0.00 : 512981: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } : | EXTRACT '(' extract_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("date_part"), $3, @1); 0.00 : 512988: 49 89 c6 mov %rax,%r14 : } : | OVERLAY '(' overlay_list ')' 0.00 : 51298b: e9 f0 ef ff ff jmpq 511980 : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 512990: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512997: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 51299e: 48 8b 3d bb 7e 6a 00 mov 0x6a7ebb(%rip),%rdi # bba860 : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 5129a5: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 5129a9: 4c 8b 6e e8 mov -0x18(%rsi),%r13 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5129ad: be 20 00 00 00 mov $0x20,%esi : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 5129b2: 8b 59 ec mov -0x14(%rcx),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5129b5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5129bc: e8 4f 64 28 00 callq 798e10 0.00 : 5129c1: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 5129c7: 4c 89 68 08 mov %r13,0x8(%rax) : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 5129cb: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 5129ce: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 5129d2: 89 58 18 mov %ebx,0x18(%rax) : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } : | EXTRACT '(' extract_list ')' 0.00 : 5129d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5129dc: e9 9f ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); : } : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); 0.00 : 5129e1: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5129e8: bf 76 97 7c 00 mov $0x7c9776,%edi 0.00 : 5129ed: 8b 1a mov (%rdx),%ebx 0.00 : 5129ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5129f6: e8 f5 df ff ff callq 5109f0 0.00 : 5129fb: 31 f6 xor %esi,%esi 0.00 : 5129fd: 48 89 c7 mov %rax,%rdi 0.00 : 512a00: 89 da mov %ebx,%edx 0.00 : 512a02: e8 19 ea 0d 00 callq 5f1420 : } : | CAST '(' a_expr AS Typename ')' 0.00 : 512a07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); : } : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); 0.00 : 512a0e: 49 89 c6 mov %rax,%r14 : } : | CAST '(' a_expr AS Typename ')' 0.00 : 512a11: e9 6a ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_CATALOG : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); 0.00 : 512a16: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512a1d: bf 65 97 7c 00 mov $0x7c9765,%edi 0.00 : 512a22: 8b 18 mov (%rax),%ebx 0.00 : 512a24: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512a2b: e8 c0 df ff ff callq 5109f0 0.00 : 512a30: 31 f6 xor %esi,%esi 0.00 : 512a32: 48 89 c7 mov %rax,%rdi 0.00 : 512a35: 89 da mov %ebx,%edx 0.00 : 512a37: e8 e4 e9 0d 00 callq 5f1420 : } : | CURRENT_SCHEMA 0.00 : 512a3c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_CATALOG : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); 0.00 : 512a43: 49 89 c6 mov %rax,%r14 : } : | CURRENT_SCHEMA 0.00 : 512a46: e9 35 ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); : } : | USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512a4b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512a52: bf 3b 96 7c 00 mov $0x7c963b,%edi 0.00 : 512a57: 8b 1e mov (%rsi),%ebx 0.00 : 512a59: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512a60: e8 8b df ff ff callq 5109f0 0.00 : 512a65: 31 f6 xor %esi,%esi 0.00 : 512a67: 48 89 c7 mov %rax,%rdi 0.00 : 512a6a: 89 da mov %ebx,%edx 0.00 : 512a6c: e8 af e9 0d 00 callq 5f1420 : } : | CURRENT_CATALOG 0.00 : 512a71: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); : } : | USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512a78: 49 89 c6 mov %rax,%r14 : } : | CURRENT_CATALOG 0.00 : 512a7b: e9 00 ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | SESSION_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); 0.00 : 512a80: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512a87: bf 58 97 7c 00 mov $0x7c9758,%edi 0.00 : 512a8c: 8b 19 mov (%rcx),%ebx 0.00 : 512a8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512a95: e8 56 df ff ff callq 5109f0 0.00 : 512a9a: 31 f6 xor %esi,%esi 0.00 : 512a9c: 48 89 c7 mov %rax,%rdi 0.00 : 512a9f: 89 da mov %ebx,%edx 0.00 : 512aa1: e8 7a e9 0d 00 callq 5f1420 : } : | USER 0.00 : 512aa6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | SESSION_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); 0.00 : 512aad: 49 89 c6 mov %rax,%r14 : } : | USER 0.00 : 512ab0: e9 cb ee ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512ab5: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512abc: bf 3b 96 7c 00 mov $0x7c963b,%edi 0.00 : 512ac1: 8b 1a mov (%rdx),%ebx 0.00 : 512ac3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512aca: e8 21 df ff ff callq 5109f0 0.00 : 512acf: 31 f6 xor %esi,%esi 0.00 : 512ad1: 48 89 c7 mov %rax,%rdi 0.00 : 512ad4: 89 da mov %ebx,%edx 0.00 : 512ad6: e8 45 e9 0d 00 callq 5f1420 : } : | SESSION_USER 0.00 : 512adb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512ae2: 49 89 c6 mov %rax,%r14 : } : | SESSION_USER 0.00 : 512ae5: e9 96 ee ff ff jmpq 511980 : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_ROLE : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512aea: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512af1: bf 3b 96 7c 00 mov $0x7c963b,%edi 0.00 : 512af6: 8b 18 mov (%rax),%ebx 0.00 : 512af8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512aff: e8 ec de ff ff callq 5109f0 0.00 : 512b04: 31 f6 xor %esi,%esi 0.00 : 512b06: 48 89 c7 mov %rax,%rdi 0.00 : 512b09: 89 da mov %ebx,%edx 0.00 : 512b0b: e8 10 e9 0d 00 callq 5f1420 : } : | CURRENT_USER 0.00 : 512b10: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_ROLE : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512b17: 49 89 c6 mov %rax,%r14 : } : | CURRENT_USER 0.00 : 512b1a: e9 61 ee ff ff jmpq 511980 : * Translate as "'now'::text::timestamp(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512b1f: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512b24: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512b2b: e8 00 df ff ff callq 510a30 0.00 : 512b30: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512b35: 48 89 c2 mov %rax,%rdx 0.00 : 512b38: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512b3d: e8 7e e0 ff ff callq 510bc0 : d = SystemTypeName("timestamp"); 0.00 : 512b42: bf ff 70 8e 00 mov $0x8e70ff,%edi : * Translate as "'now'::text::timestamp(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512b47: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("timestamp"); 0.00 : 512b4a: e8 e1 de ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512b4f: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512b56: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); 0.00 : 512b5d: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512b60: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512b63: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512b66: e8 a5 e0 ff ff callq 510c10 0.00 : 512b6b: 31 f6 xor %esi,%esi 0.00 : 512b6d: 48 89 c7 mov %rax,%rdi 0.00 : 512b70: e8 db ec 0c 00 callq 5e1850 0.00 : 512b75: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast(n, d, @1); 0.00 : 512b79: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512b80: 48 8b 3d d9 7c 6a 00 mov 0x6a7cd9(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512b87: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512b8a: be 20 00 00 00 mov $0x20,%esi 0.00 : 512b8f: e8 7c 62 28 00 callq 798e10 0.00 : 512b94: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512b9a: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512b9e: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512ba1: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512ba5: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_ROLE 0.00 : 512ba8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512baf: e9 cc ed ff ff jmpq 511980 : /* : * Translate as "'now'::text::timestamp". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512bb4: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512bb9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512bc0: e8 6b de ff ff callq 510a30 0.00 : 512bc5: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512bca: 48 89 c2 mov %rax,%rdx 0.00 : 512bcd: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512bd2: e8 e9 df ff ff callq 510bc0 0.00 : 512bd7: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); 0.00 : 512bda: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512be1: bf ff 70 8e 00 mov $0x8e70ff,%edi 0.00 : 512be6: 44 8b 28 mov (%rax),%r13d 0.00 : 512be9: e8 42 de ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512bee: 48 8b 3d 6b 7c 6a 00 mov 0x6a7c6b(%rip),%rdi # bba860 : * Translate as "'now'::text::timestamp". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); 0.00 : 512bf5: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512bf8: be 20 00 00 00 mov $0x20,%esi 0.00 : 512bfd: e8 0e 62 28 00 callq 798e10 0.00 : 512c02: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512c08: 48 89 58 08 mov %rbx,0x8(%rax) : * Translate as "'now'::text::timestamp". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); 0.00 : 512c0c: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512c0f: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512c13: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); : } : | LOCALTIMESTAMP '(' Iconst ')' 0.00 : 512c17: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512c1e: e9 5d ed ff ff jmpq 511980 : * Translate as "'now'::text::time(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512c23: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512c28: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512c2f: e8 fc dd ff ff callq 510a30 0.00 : 512c34: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512c39: 48 89 c2 mov %rax,%rdx 0.00 : 512c3c: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512c41: e8 7a df ff ff callq 510bc0 : d = SystemTypeName("time"); 0.00 : 512c46: bf bc 95 7b 00 mov $0x7b95bc,%edi : * Translate as "'now'::text::time(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512c4b: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("time"); 0.00 : 512c4e: e8 dd dd ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512c53: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512c5a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); 0.00 : 512c61: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512c64: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512c67: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512c6a: e8 a1 df ff ff callq 510c10 0.00 : 512c6f: 31 f6 xor %esi,%esi 0.00 : 512c71: 48 89 c7 mov %rax,%rdi 0.00 : 512c74: e8 d7 eb 0c 00 callq 5e1850 0.00 : 512c79: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast((Node *)n, d, @1); 0.00 : 512c7d: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512c84: 48 8b 3d d5 7b 6a 00 mov 0x6a7bd5(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast((Node *)n, d, @1); 0.00 : 512c8b: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512c8e: be 20 00 00 00 mov $0x20,%esi 0.00 : 512c93: e8 78 61 28 00 callq 798e10 0.00 : 512c98: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512c9e: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast((Node *)n, d, @1); 0.00 : 512ca2: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512ca5: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512ca9: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast((Node *)n, d, @1); : } : | LOCALTIMESTAMP 0.00 : 512cac: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512cb3: e9 c8 ec ff ff jmpq 511980 : /* : * Translate as "'now'::text::time". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512cb8: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512cbd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512cc4: e8 67 dd ff ff callq 510a30 0.00 : 512cc9: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512cce: 48 89 c2 mov %rax,%rdx 0.00 : 512cd1: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512cd6: e8 e5 de ff ff callq 510bc0 0.00 : 512cdb: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); 0.00 : 512cde: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512ce5: bf bc 95 7b 00 mov $0x7b95bc,%edi 0.00 : 512cea: 44 8b 28 mov (%rax),%r13d 0.00 : 512ced: e8 3e dd ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512cf2: 48 8b 3d 67 7b 6a 00 mov 0x6a7b67(%rip),%rdi # bba860 : * Translate as "'now'::text::time". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); 0.00 : 512cf9: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512cfc: be 20 00 00 00 mov $0x20,%esi 0.00 : 512d01: e8 0a 61 28 00 callq 798e10 0.00 : 512d06: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512d0c: 48 89 58 08 mov %rbx,0x8(%rax) : * Translate as "'now'::text::time". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); 0.00 : 512d10: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512d13: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512d17: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); : } : | LOCALTIME '(' Iconst ')' 0.00 : 512d1b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512d22: e9 59 ec ff ff jmpq 511980 : * Translate as "'now'::text::timestamptz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512d27: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512d2c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512d33: e8 f8 dc ff ff callq 510a30 0.00 : 512d38: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512d3d: 48 89 c2 mov %rax,%rdx 0.00 : 512d40: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512d45: e8 76 de ff ff callq 510bc0 : d = SystemTypeName("timestamptz"); 0.00 : 512d4a: bf 86 71 8e 00 mov $0x8e7186,%edi : * Translate as "'now'::text::timestamptz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512d4f: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("timestamptz"); 0.00 : 512d52: e8 d9 dc ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512d57: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512d5e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); 0.00 : 512d65: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512d68: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512d6b: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512d6e: e8 9d de ff ff callq 510c10 0.00 : 512d73: 31 f6 xor %esi,%esi 0.00 : 512d75: 48 89 c7 mov %rax,%rdi 0.00 : 512d78: e8 d3 ea 0c 00 callq 5e1850 0.00 : 512d7d: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast(n, d, @1); 0.00 : 512d81: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512d88: 48 8b 3d d1 7a 6a 00 mov 0x6a7ad1(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512d8f: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512d92: be 20 00 00 00 mov $0x20,%esi 0.00 : 512d97: e8 74 60 28 00 callq 798e10 0.00 : 512d9c: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512da2: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512da6: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512da9: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512dad: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | LOCALTIME 0.00 : 512db0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512db7: e9 c4 eb ff ff jmpq 511980 : { : /* : * Translate as "now()", since we have a function that : * does exactly what is needed. : */ : $$ = (Node *) makeFuncCall(SystemFuncName("now"), NIL, @1); 0.00 : 512dbc: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512dc3: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512dc8: 8b 18 mov (%rax),%ebx 0.00 : 512dca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512dd1: e8 1a dc ff ff callq 5109f0 0.00 : 512dd6: 31 f6 xor %esi,%esi 0.00 : 512dd8: 48 89 c7 mov %rax,%rdi 0.00 : 512ddb: 89 da mov %ebx,%edx 0.00 : 512ddd: e8 3e e6 0d 00 callq 5f1420 : } : | CURRENT_TIMESTAMP '(' Iconst ')' 0.00 : 512de2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : /* : * Translate as "now()", since we have a function that : * does exactly what is needed. : */ : $$ = (Node *) makeFuncCall(SystemFuncName("now"), NIL, @1); 0.00 : 512de9: 49 89 c6 mov %rax,%r14 : } : | CURRENT_TIMESTAMP '(' Iconst ')' 0.00 : 512dec: e9 8f eb ff ff jmpq 511980 : * Translate as "'now'::text::timetz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512df1: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512df6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512dfd: e8 2e dc ff ff callq 510a30 0.00 : 512e02: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512e07: 48 89 c2 mov %rax,%rdx 0.00 : 512e0a: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512e0f: e8 ac dd ff ff callq 510bc0 : d = SystemTypeName("timetz"); 0.00 : 512e14: bf 4b 68 8e 00 mov $0x8e684b,%edi : * Translate as "'now'::text::timetz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512e19: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("timetz"); 0.00 : 512e1c: e8 0f dc ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512e21: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512e28: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); 0.00 : 512e2f: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512e32: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512e35: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512e38: e8 d3 dd ff ff callq 510c10 0.00 : 512e3d: 31 f6 xor %esi,%esi 0.00 : 512e3f: 48 89 c7 mov %rax,%rdi 0.00 : 512e42: e8 09 ea 0c 00 callq 5e1850 0.00 : 512e47: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast(n, d, @1); 0.00 : 512e4b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512e52: 48 8b 3d 07 7a 6a 00 mov 0x6a7a07(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512e59: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512e5c: be 20 00 00 00 mov $0x20,%esi 0.00 : 512e61: e8 aa 5f 28 00 callq 798e10 0.00 : 512e66: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512e6c: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512e70: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512e73: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512e77: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_TIMESTAMP 0.00 : 512e7a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512e81: e9 fa ea ff ff jmpq 511980 : /* : * Translate as "'now'::text::timetz". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512e86: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512e8b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512e92: e8 99 db ff ff callq 510a30 0.00 : 512e97: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512e9c: 48 89 c2 mov %rax,%rdx 0.00 : 512e9f: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512ea4: e8 17 dd ff ff callq 510bc0 0.00 : 512ea9: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); 0.00 : 512eac: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512eb3: bf 4b 68 8e 00 mov $0x8e684b,%edi 0.00 : 512eb8: 44 8b 28 mov (%rax),%r13d 0.00 : 512ebb: e8 70 db ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512ec0: 48 8b 3d 99 79 6a 00 mov 0x6a7999(%rip),%rdi # bba860 : * Translate as "'now'::text::timetz". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); 0.00 : 512ec7: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512eca: be 20 00 00 00 mov $0x20,%esi 0.00 : 512ecf: e8 3c 5f 28 00 callq 798e10 0.00 : 512ed4: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512eda: 48 89 58 08 mov %rbx,0x8(%rax) : * Translate as "'now'::text::timetz". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); 0.00 : 512ede: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512ee1: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512ee5: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); : } : | CURRENT_TIME '(' Iconst ')' 0.00 : 512ee9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512ef0: e9 8b ea ff ff jmpq 511980 : * typecast, not to the Const, for the convenience of : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512ef5: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512efa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512f01: e8 2a db ff ff callq 510a30 0.00 : 512f06: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512f0b: 48 89 c2 mov %rax,%rdx 0.00 : 512f0e: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512f13: e8 a8 dc ff ff callq 510bc0 : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f18: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512f1f: bf 10 72 8e 00 mov $0x8e7210,%edi : * typecast, not to the Const, for the convenience of : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512f24: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f27: 44 8b 2e mov (%rsi),%r13d 0.00 : 512f2a: e8 01 db ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512f2f: 48 8b 3d 2a 79 6a 00 mov 0x6a792a(%rip),%rdi # bba860 : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f36: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512f39: be 20 00 00 00 mov $0x20,%esi 0.00 : 512f3e: e8 cd 5e 28 00 callq 798e10 0.00 : 512f43: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512f49: 48 89 58 08 mov %rbx,0x8(%rax) : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f4d: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512f50: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512f54: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("date"), @1); : } : | CURRENT_TIME 0.00 : 512f58: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512f5f: e9 1c ea ff ff jmpq 511980 : * Special expressions that are considered to be functions. : */ : func_expr_common_subexpr: : COLLATION FOR '(' a_expr ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), 0.00 : 512f64: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512f6b: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512f72: 31 f6 xor %esi,%esi 0.00 : 512f74: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 512f78: 44 8b 62 f0 mov -0x10(%rdx),%r12d 0.00 : 512f7c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512f83: e8 c8 e8 0c 00 callq 5e1850 0.00 : 512f88: bf 47 97 7c 00 mov $0x7c9747,%edi 0.00 : 512f8d: 48 89 c3 mov %rax,%rbx 0.00 : 512f90: e8 5b da ff ff callq 5109f0 0.00 : 512f95: 44 89 e2 mov %r12d,%edx 0.00 : 512f98: 48 89 c7 mov %rax,%rdi 0.00 : 512f9b: 48 89 de mov %rbx,%rsi 0.00 : 512f9e: e8 7d e4 0d 00 callq 5f1420 : list_make1($4), : @1); : } : | CURRENT_DATE 0.00 : 512fa3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Special expressions that are considered to be functions. : */ : func_expr_common_subexpr: : COLLATION FOR '(' a_expr ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), 0.00 : 512faa: 49 89 c6 mov %rax,%r14 : list_make1($4), : @1); : } : | CURRENT_DATE 0.00 : 512fad: e9 ce e9 ff ff jmpq 511980 : * Use this when window expressions are not allowed, where needed to : * disambiguate the grammar (e.g. in CREATE INDEX). : */ : func_expr_windowless: : func_application { $$ = $1; } : | func_expr_common_subexpr { $$ = $1; } 0.00 : 512fb2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 512fb9: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 512fbc: e9 bf e9 ff ff jmpq 511980 : * (but they can still be contained in arguments for functions etc). : * Use this when window expressions are not allowed, where needed to : * disambiguate the grammar (e.g. in CREATE INDEX). : */ : func_expr_windowless: : func_application { $$ = $1; } 0.00 : 512fc1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512fc8: 4c 8b 36 mov (%rsi),%r14 : | func_expr_common_subexpr { $$ = $1; } 0.00 : 512fcb: e9 b0 e9 ff ff jmpq 511980 : n->agg_filter = $3; : n->over = $4; : $$ = (Node *) n; : } : | func_expr_common_subexpr : { $$ = $1; } 0.00 : 512fd0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512fd7: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 512fda: e9 a1 e9 ff ff jmpq 511980 : * (Note that many of the special SQL functions wouldn't actually make any : * sense as functional index entries, but we ignore that consideration here.) : */ : func_expr: func_application within_group_clause filter_clause over_clause : { : FuncCall *n = (FuncCall *) $1; 0.00 : 512fdf: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 512fe6: 48 8b 50 e8 mov -0x18(%rax),%rdx : * check here that at most one is present. We also check : * for DISTINCT and VARIADIC here to give a better error : * location. Other consistency checks are deferred to : * parse analysis. : */ : if ($2 != NIL) 0.00 : 512fea: 48 8b 40 f0 mov -0x10(%rax),%rax 0.00 : 512fee: 48 85 c0 test %rax,%rax 0.00 : 512ff1: 74 2b je 51301e : { : if (n->agg_order != NIL) 0.00 : 512ff3: 48 83 7a 18 00 cmpq $0x0,0x18(%rdx) 0.00 : 512ff8: 0f 85 63 6b 01 00 jne 529b61 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), : parser_errposition(@2))); : if (n->agg_distinct) 0.00 : 512ffe: 80 7a 2a 00 cmpb $0x0,0x2a(%rdx) 0.00 : 513002: 0f 85 04 6b 01 00 jne 529b0c : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use DISTINCT with WITHIN GROUP"), : parser_errposition(@2))); : if (n->func_variadic) 0.00 : 513008: 80 7a 2b 00 cmpb $0x0,0x2b(%rdx) 0.00 : 51300c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 513010: 0f 85 a1 6a 01 00 jne 529ab7 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use VARIADIC with WITHIN GROUP"), : parser_errposition(@2))); : n->agg_order = $2; 0.00 : 513016: 48 89 42 18 mov %rax,0x18(%rdx) : n->agg_within_group = TRUE; 0.00 : 51301a: c6 42 28 01 movb $0x1,0x28(%rdx) : } : n->agg_filter = $3; 0.00 : 51301e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->over = $4; : $$ = (Node *) n; 0.00 : 513025: 49 89 d6 mov %rdx,%r14 : errmsg("cannot use VARIADIC with WITHIN GROUP"), : parser_errposition(@2))); : n->agg_order = $2; : n->agg_within_group = TRUE; : } : n->agg_filter = $3; 0.00 : 513028: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51302c: 48 89 42 20 mov %rax,0x20(%rdx) : n->over = $4; 0.00 : 513030: 48 8b 01 mov (%rcx),%rax 0.00 : 513033: 48 89 42 30 mov %rax,0x30(%rdx) : $$ = (Node *) n; : } : | func_expr_common_subexpr 0.00 : 513037: e9 44 e9 ff ff jmpq 511980 : * : * The FuncCall node is also marked agg_star = true, : * so that later processing can detect what the argument : * really was. : */ : FuncCall *n = makeFuncCall($1, NIL, @1); 0.00 : 51303c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513043: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51304a: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51304e: 8b 53 f4 mov -0xc(%rbx),%edx 0.00 : 513051: 31 f6 xor %esi,%esi 0.00 : 513053: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51305a: e8 c1 e3 0d 00 callq 5f1420 : n->agg_star = TRUE; 0.00 : 51305f: c6 40 29 01 movb $0x1,0x29(%rax) : $$ = (Node *)n; 0.00 : 513063: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 513066: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51306d: e9 0e e9 ff ff jmpq 511980 : */ : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); 0.00 : 513072: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513079: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513080: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 513084: 8b 53 ec mov -0x14(%rbx),%edx 0.00 : 513087: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 51308b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513092: e8 89 e3 0d 00 callq 5f1420 : n->agg_order = $5; 0.00 : 513097: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->agg_distinct = TRUE; : $$ = (Node *)n; 0.00 : 51309e: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); : n->agg_order = $5; 0.00 : 5130a1: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->agg_distinct = TRUE; 0.00 : 5130a5: c6 40 2a 01 movb $0x1,0x2a(%rax) : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); : n->agg_order = $5; 0.00 : 5130a9: 48 89 50 18 mov %rdx,0x18(%rax) : n->agg_distinct = TRUE; : $$ = (Node *)n; : } : | func_name '(' '*' ')' 0.00 : 5130ad: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5130b4: e9 c7 e8 ff ff jmpq 511980 : n->agg_order = $7; : $$ = (Node *)n; : } : | func_name '(' ALL func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); 0.00 : 5130b9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5130c0: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5130c7: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 5130cb: 8b 53 ec mov -0x14(%rbx),%edx 0.00 : 5130ce: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 5130d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5130d9: e8 42 e3 0d 00 callq 5f1420 : n->agg_order = $5; 0.00 : 5130de: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : /* Ideally we'd mark the FuncCall node to indicate : * "must be an aggregate", but there's no provision : * for that in FuncCall at the moment. : */ : $$ = (Node *)n; 0.00 : 5130e5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | func_name '(' ALL func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); : n->agg_order = $5; 0.00 : 5130e8: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5130ec: 48 89 50 18 mov %rdx,0x18(%rax) : * "must be an aggregate", but there's no provision : * for that in FuncCall at the moment. : */ : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' 0.00 : 5130f0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5130f7: e9 84 e8 ff ff jmpq 511980 : n->agg_order = $5; : $$ = (Node *)n; : } : | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, lappend($3, $6), @1); 0.00 : 5130fc: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513103: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51310a: 8b 5e e4 mov -0x1c(%rsi),%ebx 0.00 : 51310d: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 513111: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 513115: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51311c: e8 5f ed 0c 00 callq 5e1e80 0.00 : 513121: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513128: 48 89 c6 mov %rax,%rsi 0.00 : 51312b: 48 8b 7a c8 mov -0x38(%rdx),%rdi 0.00 : 51312f: 89 da mov %ebx,%edx 0.00 : 513131: e8 ea e2 0d 00 callq 5f1420 : n->func_variadic = TRUE; 0.00 : 513136: c6 40 2b 01 movb $0x1,0x2b(%rax) : n->agg_order = $7; 0.00 : 51313a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 513141: 49 89 c6 mov %rax,%r14 : } : | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, lappend($3, $6), @1); : n->func_variadic = TRUE; : n->agg_order = $7; 0.00 : 513144: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 513148: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | func_name '(' ALL func_arg_list opt_sort_clause ')' 0.00 : 51314c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513153: e9 28 e8 ff ff jmpq 511980 : n->agg_order = $4; : $$ = (Node *)n; : } : | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, list_make1($4), @1); 0.00 : 513158: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51315f: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513166: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51316a: 8b 5e ec mov -0x14(%rsi),%ebx 0.00 : 51316d: 31 f6 xor %esi,%esi 0.00 : 51316f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513176: e8 d5 e6 0c 00 callq 5e1850 0.00 : 51317b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513182: 48 89 c6 mov %rax,%rsi 0.00 : 513185: 48 8b 7a d8 mov -0x28(%rdx),%rdi 0.00 : 513189: 89 da mov %ebx,%edx 0.00 : 51318b: e8 90 e2 0d 00 callq 5f1420 : n->func_variadic = TRUE; 0.00 : 513190: c6 40 2b 01 movb $0x1,0x2b(%rax) : n->agg_order = $5; 0.00 : 513194: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51319b: 49 89 c6 mov %rax,%r14 : } : | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, list_make1($4), @1); : n->func_variadic = TRUE; : n->agg_order = $5; 0.00 : 51319e: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5131a2: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' 0.00 : 5131a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5131ad: e9 ce e7 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall($1, NIL, @1); : } : | func_name '(' func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $3, @1); 0.00 : 5131b2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5131b9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5131c0: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 5131c4: 8b 53 f0 mov -0x10(%rbx),%edx 0.00 : 5131c7: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 5131cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5131d2: e8 49 e2 0d 00 callq 5f1420 : n->agg_order = $4; 0.00 : 5131d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 5131de: 49 89 c6 mov %rax,%r14 : $$ = (Node *) makeFuncCall($1, NIL, @1); : } : | func_name '(' func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $3, @1); : n->agg_order = $4; 0.00 : 5131e1: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5131e5: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' 0.00 : 5131e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5131f0: e9 8b e7 ff ff jmpq 511980 : } : ; : : func_application: func_name '(' ')' : { : $$ = (Node *) makeFuncCall($1, NIL, @1); 0.00 : 5131f5: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5131fc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513203: 31 f6 xor %esi,%esi 0.00 : 513205: 8b 50 f8 mov -0x8(%rax),%edx 0.00 : 513208: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51320c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513213: e8 08 e2 0d 00 callq 5f1420 : } : | func_name '(' func_arg_list opt_sort_clause ')' 0.00 : 513218: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : func_application: func_name '(' ')' : { : $$ = (Node *) makeFuncCall($1, NIL, @1); 0.00 : 51321f: 49 89 c6 mov %rax,%r14 : } : | func_name '(' func_arg_list opt_sort_clause ')' 0.00 : 513222: e9 59 e7 ff ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | row : { : RowExpr *r = makeNode(RowExpr); 0.00 : 513227: 48 8b 3d 32 76 6a 00 mov 0x6a7632(%rip),%rdi # bba860 0.00 : 51322e: be 28 00 00 00 mov $0x28,%esi 0.00 : 513233: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51323a: e8 d1 5b 28 00 callq 798e10 0.00 : 51323f: c7 00 4a 01 00 00 movl $0x14a,(%rax) : r->args = $1; 0.00 : 513245: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : r->row_typeid = InvalidOid; /* not analyzed yet */ : r->colnames = NIL; /* to be filled in during analysis */ : r->location = @1; : $$ = (Node *)r; 0.00 : 51324c: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | row : { : RowExpr *r = makeNode(RowExpr); : r->args = $1; 0.00 : 51324f: 48 8b 13 mov (%rbx),%rdx : r->row_typeid = InvalidOid; /* not analyzed yet */ 0.00 : 513252: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : r->colnames = NIL; /* to be filled in during analysis */ 0.00 : 513259: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 513260: 00 : $$ = (Node *)n; : } : | row : { : RowExpr *r = makeNode(RowExpr); : r->args = $1; 0.00 : 513261: 48 89 50 08 mov %rdx,0x8(%rax) : r->row_typeid = InvalidOid; /* not analyzed yet */ : r->colnames = NIL; /* to be filled in during analysis */ : r->location = @1; 0.00 : 513265: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51326c: 8b 16 mov (%rsi),%edx 0.00 : 51326e: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *)r; : } : ; 0.00 : 513271: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513278: e9 03 e7 ff ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | ARRAY array_expr : { : A_ArrayExpr *n = (A_ArrayExpr *) $2; 0.00 : 51327d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : Assert(IsA(n, A_ArrayExpr)); : /* point outermost A_ArrayExpr to the ARRAY keyword */ : n->location = @1; 0.00 : 513284: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : n->location = @1; : $$ = (Node *)n; : } : | ARRAY array_expr : { : A_ArrayExpr *n = (A_ArrayExpr *) $2; 0.00 : 51328b: 48 8b 16 mov (%rsi),%rdx : Assert(IsA(n, A_ArrayExpr)); : /* point outermost A_ArrayExpr to the ARRAY keyword */ : n->location = @1; 0.00 : 51328e: 8b 41 fc mov -0x4(%rcx),%eax : $$ = (Node *)n; 0.00 : 513291: 49 89 d6 mov %rdx,%r14 : | ARRAY array_expr : { : A_ArrayExpr *n = (A_ArrayExpr *) $2; : Assert(IsA(n, A_ArrayExpr)); : /* point outermost A_ArrayExpr to the ARRAY keyword */ : n->location = @1; 0.00 : 513294: 89 42 10 mov %eax,0x10(%rdx) : $$ = (Node *)n; : } : | row 0.00 : 513297: e9 e4 e6 ff ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | ARRAY select_with_parens : { : SubLink *n = makeNode(SubLink); 0.00 : 51329c: 48 8b 3d bd 75 6a 00 mov 0x6a75bd(%rip),%rdi # bba860 0.00 : 5132a3: be 30 00 00 00 mov $0x30,%esi 0.00 : 5132a8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5132af: e8 5c 5b 28 00 callq 798e10 0.00 : 5132b4: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = ARRAY_SUBLINK; 0.00 : 5132ba: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; : n->subselect = $2; : n->location = @1; : $$ = (Node *)n; 0.00 : 5132c1: 49 89 c6 mov %rax,%r14 : } : | ARRAY select_with_parens : { : SubLink *n = makeNode(SubLink); : n->subLinkType = ARRAY_SUBLINK; : n->subLinkId = 0; 0.00 : 5132c4: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : n->testexpr = NULL; 0.00 : 5132cb: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5132d2: 00 : n->operName = NIL; 0.00 : 5132d3: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5132da: 00 : n->subselect = $2; 0.00 : 5132db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5132e2: 48 8b 11 mov (%rcx),%rdx 0.00 : 5132e5: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @1; 0.00 : 5132e9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5132f0: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 5132f3: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | ARRAY array_expr 0.00 : 5132f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5132fd: e9 7e e6 ff ff jmpq 511980 : a->indirection = check_indirection($2, yyscanner); : $$ = (Node *)a; : } : | EXISTS select_with_parens : { : SubLink *n = makeNode(SubLink); 0.00 : 513302: 48 8b 3d 57 75 6a 00 mov 0x6a7557(%rip),%rdi # bba860 0.00 : 513309: be 30 00 00 00 mov $0x30,%esi 0.00 : 51330e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513315: e8 f6 5a 28 00 callq 798e10 0.00 : 51331a: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = EXISTS_SUBLINK; 0.00 : 513320: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; : n->subselect = $2; : n->location = @1; : $$ = (Node *)n; 0.00 : 513327: 49 89 c6 mov %rax,%r14 : } : | EXISTS select_with_parens : { : SubLink *n = makeNode(SubLink); : n->subLinkType = EXISTS_SUBLINK; : n->subLinkId = 0; 0.00 : 51332a: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : n->testexpr = NULL; 0.00 : 513331: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 513338: 00 : n->operName = NIL; 0.00 : 513339: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 513340: 00 : n->subselect = $2; 0.00 : 513341: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513348: 48 8b 13 mov (%rbx),%rdx 0.00 : 51334b: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @1; 0.00 : 51334f: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513356: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 513359: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | ARRAY select_with_parens 0.00 : 51335c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513363: e9 18 e6 ff ff jmpq 511980 : * the sub-SELECT won't be regarded as an a_expr as long : * as there are parens around it. To support applying : * subscripting or field selection to a sub-SELECT result, : * we need this redundant-looking production. : */ : SubLink *n = makeNode(SubLink); 0.00 : 513368: 48 8b 3d f1 74 6a 00 mov 0x6a74f1(%rip),%rdi # bba860 0.00 : 51336f: be 30 00 00 00 mov $0x30,%esi 0.00 : 513374: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51337b: e8 90 5a 28 00 callq 798e10 0.00 : 513380: c7 00 3c 01 00 00 movl $0x13c,(%rax) : A_Indirection *a = makeNode(A_Indirection); 0.00 : 513386: 48 8b 3d d3 74 6a 00 mov 0x6a74d3(%rip),%rdi # bba860 : * the sub-SELECT won't be regarded as an a_expr as long : * as there are parens around it. To support applying : * subscripting or field selection to a sub-SELECT result, : * we need this redundant-looking production. : */ : SubLink *n = makeNode(SubLink); 0.00 : 51338d: 48 89 c3 mov %rax,%rbx : A_Indirection *a = makeNode(A_Indirection); 0.00 : 513390: be 18 00 00 00 mov $0x18,%esi 0.00 : 513395: e8 76 5a 28 00 callq 798e10 0.00 : 51339a: c7 00 8b 03 00 00 movl $0x38b,(%rax) : n->subLinkType = EXPR_SUBLINK; 0.00 : 5133a0: c7 43 04 04 00 00 00 movl $0x4,0x4(%rbx) : * as there are parens around it. To support applying : * subscripting or field selection to a sub-SELECT result, : * we need this redundant-looking production. : */ : SubLink *n = makeNode(SubLink); : A_Indirection *a = makeNode(A_Indirection); 0.00 : 5133a7: 49 89 c4 mov %rax,%r12 : n->subLinkType = EXPR_SUBLINK; : n->subLinkId = 0; 0.00 : 5133aa: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : n->testexpr = NULL; 0.00 : 5133b1: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5133b8: 00 : n->operName = NIL; : n->subselect = $1; : n->location = @1; : a->arg = (Node *)n; : a->indirection = check_indirection($2, yyscanner); : $$ = (Node *)a; 0.00 : 5133b9: 4d 89 e6 mov %r12,%r14 : SubLink *n = makeNode(SubLink); : A_Indirection *a = makeNode(A_Indirection); : n->subLinkType = EXPR_SUBLINK; : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; 0.00 : 5133bc: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 5133c3: 00 : n->subselect = $1; 0.00 : 5133c4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5133cb: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 5133cf: 48 89 43 20 mov %rax,0x20(%rbx) : n->location = @1; 0.00 : 5133d3: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5133da: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 5133dd: 89 43 28 mov %eax,0x28(%rbx) : a->arg = (Node *)n; 0.00 : 5133e0: 49 89 5c 24 08 mov %rbx,0x8(%r12) : a->indirection = check_indirection($2, yyscanner); 0.00 : 5133e5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5133ec: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5133f3: 48 8b 39 mov (%rcx),%rdi 0.00 : 5133f6: e8 c5 a9 ff ff callq 50ddc0 0.00 : 5133fb: 49 89 44 24 10 mov %rax,0x10(%r12) : $$ = (Node *)a; : } : | EXISTS select_with_parens 0.00 : 513400: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513407: e9 74 e5 ff ff jmpq 511980 : { $$ = $1; } : | func_expr : { $$ = $1; } : | select_with_parens %prec UMINUS : { : SubLink *n = makeNode(SubLink); 0.00 : 51340c: 48 8b 3d 4d 74 6a 00 mov 0x6a744d(%rip),%rdi # bba860 0.00 : 513413: be 30 00 00 00 mov $0x30,%esi 0.00 : 513418: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51341f: e8 ec 59 28 00 callq 798e10 0.00 : 513424: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = EXPR_SUBLINK; 0.00 : 51342a: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; : n->subselect = $1; : n->location = @1; : $$ = (Node *)n; 0.00 : 513431: 49 89 c6 mov %rax,%r14 : { $$ = $1; } : | select_with_parens %prec UMINUS : { : SubLink *n = makeNode(SubLink); : n->subLinkType = EXPR_SUBLINK; : n->subLinkId = 0; 0.00 : 513434: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : n->testexpr = NULL; 0.00 : 51343b: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 513442: 00 : n->operName = NIL; 0.00 : 513443: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51344a: 00 : n->subselect = $1; 0.00 : 51344b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513452: 48 8b 11 mov (%rcx),%rdx 0.00 : 513455: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @1; 0.00 : 513459: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513460: 8b 13 mov (%rbx),%edx 0.00 : 513462: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | select_with_parens indirection 0.00 : 513465: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51346c: e9 0f e5 ff ff jmpq 511980 : $$ = $2; : } : | case_expr : { $$ = $1; } : | func_expr : { $$ = $1; } 0.00 : 513471: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513478: 4c 8b 30 mov (%rax),%r14 : | select_with_parens %prec UMINUS 0.00 : 51347b: e9 00 e5 ff ff jmpq 511980 : } : else : $$ = $2; : } : | case_expr : { $$ = $1; } 0.00 : 513480: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513487: 4c 8b 36 mov (%rsi),%r14 : | func_expr 0.00 : 51348a: e9 f1 e4 ff ff jmpq 511980 : else : $$ = (Node *) p; : } : | '(' a_expr ')' opt_indirection : { : if ($4) 0.00 : 51348f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513496: 48 83 3a 00 cmpq $0x0,(%rdx) 0.00 : 51349a: 0f 84 9b 5f 01 00 je 52943b : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 5134a0: 48 8b 3d b9 73 6a 00 mov 0x6a73b9(%rip),%rdi # bba860 0.00 : 5134a7: be 18 00 00 00 mov $0x18,%esi 0.00 : 5134ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5134b3: e8 58 59 28 00 callq 798e10 0.00 : 5134b8: c7 00 8b 03 00 00 movl $0x38b,(%rax) : n->arg = $2; 0.00 : 5134be: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : | '(' a_expr ')' opt_indirection : { : if ($4) : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 5134c5: 48 89 c3 mov %rax,%rbx : n->arg = $2; : n->indirection = check_indirection($4, yyscanner); : $$ = (Node *)n; 0.00 : 5134c8: 49 89 de mov %rbx,%r14 : | '(' a_expr ')' opt_indirection : { : if ($4) : { : A_Indirection *n = makeNode(A_Indirection); : n->arg = $2; 0.00 : 5134cb: 48 8b 41 f0 mov -0x10(%rcx),%rax 0.00 : 5134cf: 48 89 43 08 mov %rax,0x8(%rbx) : n->indirection = check_indirection($4, yyscanner); 0.00 : 5134d3: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5134da: 48 8b 39 mov (%rcx),%rdi 0.00 : 5134dd: e8 de a8 ff ff callq 50ddc0 0.00 : 5134e2: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5134e6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5134ed: e9 8e e4 ff ff jmpq 511980 : */ : c_expr: columnref { $$ = $1; } : | AexprConst { $$ = $1; } : | PARAM opt_indirection : { : ParamRef *p = makeNode(ParamRef); 0.00 : 5134f2: 48 8b 3d 67 73 6a 00 mov 0x6a7367(%rip),%rdi # bba860 0.00 : 5134f9: be 0c 00 00 00 mov $0xc,%esi 0.00 : 5134fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513505: e8 16 5b 28 00 callq 799020 0.00 : 51350a: c7 00 86 03 00 00 movl $0x386,(%rax) : p->number = $1; 0.00 : 513510: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->arg = (Node *) p; : n->indirection = check_indirection($2, yyscanner); : $$ = (Node *) n; : } : else : $$ = (Node *) p; 0.00 : 513517: 49 89 c6 mov %rax,%r14 : c_expr: columnref { $$ = $1; } : | AexprConst { $$ = $1; } : | PARAM opt_indirection : { : ParamRef *p = makeNode(ParamRef); : p->number = $1; 0.00 : 51351a: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 51351d: 89 50 04 mov %edx,0x4(%rax) : p->location = @1; 0.00 : 513520: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513527: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 51352a: 89 50 08 mov %edx,0x8(%rax) : if ($2) 0.00 : 51352d: 48 83 3b 00 cmpq $0x0,(%rbx) 0.00 : 513531: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513538: 0f 84 42 e4 ff ff je 511980 : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 51353e: 48 8b 3d 1b 73 6a 00 mov 0x6a731b(%rip),%rdi # bba860 0.00 : 513545: be 18 00 00 00 mov $0x18,%esi 0.00 : 51354a: e8 c1 58 28 00 callq 798e10 0.00 : 51354f: c7 00 8b 03 00 00 movl $0x38b,(%rax) : n->arg = (Node *) p; 0.00 : 513555: 4c 89 70 08 mov %r14,0x8(%rax) : ParamRef *p = makeNode(ParamRef); : p->number = $1; : p->location = @1; : if ($2) : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 513559: 48 89 c3 mov %rax,%rbx : n->arg = (Node *) p; : n->indirection = check_indirection($2, yyscanner); 0.00 : 51355c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513563: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi : $$ = (Node *) n; 0.00 : 51356a: 49 89 de mov %rbx,%r14 : p->location = @1; : if ($2) : { : A_Indirection *n = makeNode(A_Indirection); : n->arg = (Node *) p; : n->indirection = check_indirection($2, yyscanner); 0.00 : 51356d: 48 8b 38 mov (%rax),%rdi 0.00 : 513570: e8 4b a8 ff ff callq 50ddc0 0.00 : 513575: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 513579: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513580: e9 fb e3 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); : } : | b_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513585: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51358c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513593: 31 f6 xor %esi,%esi 0.00 : 513595: 8b 5a fc mov -0x4(%rdx),%ebx 0.00 : 513598: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51359c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5135a3: e8 a8 e2 0c 00 callq 5e1850 0.00 : 5135a8: 41 89 d8 mov %ebx,%r8d 0.00 : 5135ab: 48 89 c1 mov %rax,%rcx 0.00 : 5135ae: 31 d2 xor %edx,%edx 0.00 : 5135b0: 31 f6 xor %esi,%esi 0.00 : 5135b2: bf 07 00 00 00 mov $0x7,%edi 0.00 : 5135b7: e8 34 d5 ff ff callq 510af0 : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS 0.00 : 5135bc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); : } : | b_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 5135c3: 49 89 c6 mov %rax,%r14 : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS 0.00 : 5135c6: e9 b5 e3 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | b_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 5135cb: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5135d2: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5135d9: bf 05 00 00 00 mov $0x5,%edi 0.00 : 5135de: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 5135e2: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 5135e6: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 5135eb: 44 8b 40 ec mov -0x14(%rax),%r8d 0.00 : 5135ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5135f6: e8 75 e4 0d 00 callq 5f1a70 : } : | b_expr IS DOCUMENT_P %prec IS 0.00 : 5135fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | b_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 513602: 49 89 c6 mov %rax,%r14 : } : | b_expr IS DOCUMENT_P %prec IS 0.00 : 513605: e9 76 e3 ff ff jmpq 511980 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 51360a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513611: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513618: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51361d: bf 05 00 00 00 mov $0x5,%edi 0.00 : 513622: 48 8b 48 f8 mov -0x8(%rax),%rcx 0.00 : 513626: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 51362a: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 51362e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513635: e8 36 e4 0d 00 callq 5f1a70 : } : | b_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 51363a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 513641: 49 89 c6 mov %rax,%r14 : } : | b_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 513644: e9 37 e3 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 513649: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513650: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513657: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51365c: bf 03 00 00 00 mov $0x3,%edi 0.00 : 513661: 8b 58 f0 mov -0x10(%rax),%ebx 0.00 : 513664: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 513668: 48 8b 09 mov (%rcx),%rcx 0.00 : 51366b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513672: 41 89 d8 mov %ebx,%r8d 0.00 : 513675: e8 f6 e3 0d 00 callq 5f1a70 0.00 : 51367a: 89 de mov %ebx,%esi 0.00 : 51367c: 48 89 c7 mov %rax,%rdi 0.00 : 51367f: e8 1c dd ff ff callq 5113a0 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS 0.00 : 513684: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 51368b: 49 89 c6 mov %rax,%r14 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS 0.00 : 51368e: e9 ed e2 ff ff jmpq 511980 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : | b_expr IS DISTINCT FROM b_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 513693: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51369a: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5136a1: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 5136a6: bf 03 00 00 00 mov $0x3,%edi 0.00 : 5136ab: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 5136af: 44 8b 43 f4 mov -0xc(%rbx),%r8d 0.00 : 5136b3: 48 8b 09 mov (%rcx),%rcx 0.00 : 5136b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5136bd: e8 ae e3 0d 00 callq 5f1a70 : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS 0.00 : 5136c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : | b_expr IS DISTINCT FROM b_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 5136c9: 49 89 c6 mov %rax,%r14 : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS 0.00 : 5136cc: e9 af e2 ff ff jmpq 511980 : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 5136d1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5136d8: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5136df: 31 ff xor %edi,%edi 0.00 : 5136e1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5136e8: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5136ec: 44 8b 03 mov (%rbx),%r8d 0.00 : 5136ef: 31 c9 xor %ecx,%ecx 0.00 : 5136f1: 48 8b 30 mov (%rax),%rsi 0.00 : 5136f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5136fb: e8 e0 e2 0d 00 callq 5f19e0 : | b_expr IS DISTINCT FROM b_expr %prec IS 0.00 : 513700: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 513707: 49 89 c6 mov %rax,%r14 : | b_expr IS DISTINCT FROM b_expr %prec IS 0.00 : 51370a: e9 71 e2 ff ff jmpq 511980 : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 51370f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513716: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51371d: 31 d2 xor %edx,%edx 0.00 : 51371f: 31 ff xor %edi,%edi 0.00 : 513721: 48 8b 73 f8 mov -0x8(%rbx),%rsi 0.00 : 513725: 44 8b 40 fc mov -0x4(%rax),%r8d 0.00 : 513729: 48 8b 0b mov (%rbx),%rcx 0.00 : 51372c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513733: e8 a8 e2 0d 00 callq 5f19e0 : | b_expr qual_Op %prec POSTFIXOP 0.00 : 513738: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 51373f: 49 89 c6 mov %rax,%r14 : | b_expr qual_Op %prec POSTFIXOP 0.00 : 513742: e9 39 e2 ff ff jmpq 511980 : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 513747: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51374e: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513755: 31 ff xor %edi,%edi 0.00 : 513757: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 51375b: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 51375f: 48 8b 70 f8 mov -0x8(%rax),%rsi 0.00 : 513763: 48 8b 08 mov (%rax),%rcx 0.00 : 513766: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51376d: e8 6e e2 0d 00 callq 5f19e0 : | qual_Op b_expr %prec Op 0.00 : 513772: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 513779: 49 89 c6 mov %rax,%r14 : | qual_Op b_expr %prec Op 0.00 : 51377c: e9 ff e1 ff ff jmpq 511980 : * Note: productions that refer recursively to a_expr or b_expr mostly : * cannot appear here. However, it's OK to refer to a_exprs that occur : * inside parentheses, such as function arguments; that cannot introduce : * ambiguity to the b_expr syntax. : */ : c_expr: columnref { $$ = $1; } 0.00 : 513781: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513788: 4c 8b 32 mov (%rdx),%r14 : | AexprConst { $$ = $1; } 0.00 : 51378b: e9 f0 e1 ff ff jmpq 511980 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513790: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513797: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51379e: 8b 5e f8 mov -0x8(%rsi),%ebx 0.00 : 5137a1: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 5137a5: 31 f6 xor %esi,%esi 0.00 : 5137a7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5137ae: e8 9d e0 0c 00 callq 5e1850 0.00 : 5137b3: 41 89 d8 mov %ebx,%r8d 0.00 : 5137b6: 48 89 c1 mov %rax,%rcx 0.00 : 5137b9: 31 d2 xor %edx,%edx 0.00 : 5137bb: 31 f6 xor %esi,%esi 0.00 : 5137bd: bf 07 00 00 00 mov $0x7,%edi 0.00 : 5137c2: e8 29 d3 ff ff callq 510af0 0.00 : 5137c7: 89 de mov %ebx,%esi 0.00 : 5137c9: 48 89 c7 mov %rax,%rdi 0.00 : 5137cc: e8 cf db ff ff callq 5113a0 : list_make1($1), @2), : @2); : } : ; 0.00 : 5137d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 5137d8: 49 89 c6 mov %rax,%r14 : list_make1($1), @2), : @2); : } : ; 0.00 : 5137db: e9 a0 e1 ff ff jmpq 511980 : * cannot appear here. However, it's OK to refer to a_exprs that occur : * inside parentheses, such as function arguments; that cannot introduce : * ambiguity to the b_expr syntax. : */ : c_expr: columnref { $$ = $1; } : | AexprConst { $$ = $1; } 0.00 : 5137e0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5137e7: 4c 8b 31 mov (%rcx),%r14 : | PARAM opt_indirection 0.00 : 5137ea: e9 91 e1 ff ff jmpq 511980 : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 5137ef: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5137f6: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5137fd: 31 ff xor %edi,%edi 0.00 : 5137ff: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 513803: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 513807: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51380c: 48 8b 0b mov (%rbx),%rcx 0.00 : 51380f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513816: e8 55 e2 0d 00 callq 5f1a70 : | b_expr qual_Op b_expr %prec Op 0.00 : 51381b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 513822: 49 89 c6 mov %rax,%r14 : | b_expr qual_Op b_expr %prec Op 0.00 : 513825: e9 56 e1 ff ff jmpq 511980 : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 51382a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513831: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513838: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 51383d: 31 ff xor %edi,%edi 0.00 : 51383f: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 513843: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 513847: 48 8b 08 mov (%rax),%rcx 0.00 : 51384a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513851: e8 1a e2 0d 00 callq 5f1a70 : | b_expr '=' b_expr 0.00 : 513856: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 51385d: 49 89 c6 mov %rax,%r14 : | b_expr '=' b_expr 0.00 : 513860: e9 1b e1 ff ff jmpq 511980 : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 513865: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51386c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513873: 31 ff xor %edi,%edi 0.00 : 513875: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 513879: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51387d: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513882: 48 8b 0b mov (%rbx),%rcx 0.00 : 513885: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51388c: e8 df e1 0d 00 callq 5f1a70 : | b_expr '>' b_expr 0.00 : 513891: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 513898: 49 89 c6 mov %rax,%r14 : | b_expr '>' b_expr 0.00 : 51389b: e9 e0 e0 ff ff jmpq 511980 : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 5138a0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5138a7: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5138ae: be 70 3d 8c 00 mov $0x8c3d70,%esi 0.00 : 5138b3: 31 ff xor %edi,%edi 0.00 : 5138b5: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 5138b9: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 5138bd: 48 8b 08 mov (%rax),%rcx 0.00 : 5138c0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5138c7: e8 a4 e1 0d 00 callq 5f1a70 : | b_expr '<' b_expr 0.00 : 5138cc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 5138d3: 49 89 c6 mov %rax,%r14 : | b_expr '<' b_expr 0.00 : 5138d6: e9 a5 e0 ff ff jmpq 511980 : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 5138db: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5138e2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5138e9: 31 ff xor %edi,%edi 0.00 : 5138eb: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 5138ef: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5138f3: be ce 6e 8c 00 mov $0x8c6ece,%esi 0.00 : 5138f8: 48 8b 0b mov (%rbx),%rcx 0.00 : 5138fb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513902: e8 69 e1 0d 00 callq 5f1a70 : | b_expr '^' b_expr 0.00 : 513907: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 51390e: 49 89 c6 mov %rax,%r14 : | b_expr '^' b_expr 0.00 : 513911: e9 6a e0 ff ff jmpq 511980 : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 513916: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51391d: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513924: be 8a e7 87 00 mov $0x87e78a,%esi 0.00 : 513929: 31 ff xor %edi,%edi 0.00 : 51392b: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 51392f: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 513933: 48 8b 08 mov (%rax),%rcx 0.00 : 513936: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51393d: e8 2e e1 0d 00 callq 5f1a70 : | b_expr '%' b_expr 0.00 : 513942: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 513949: 49 89 c6 mov %rax,%r14 : | b_expr '%' b_expr 0.00 : 51394c: e9 2f e0 ff ff jmpq 511980 : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 513951: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513958: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51395f: 31 ff xor %edi,%edi 0.00 : 513961: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 513965: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 513969: be a3 76 7c 00 mov $0x7c76a3,%esi 0.00 : 51396e: 48 8b 0b mov (%rbx),%rcx 0.00 : 513971: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513978: e8 f3 e0 0d 00 callq 5f1a70 : | b_expr '/' b_expr 0.00 : 51397d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 513984: 49 89 c6 mov %rax,%r14 : | b_expr '/' b_expr 0.00 : 513987: e9 f4 df ff ff jmpq 511980 : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 51398c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513993: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51399a: be ca 6e 8c 00 mov $0x8c6eca,%esi 0.00 : 51399f: 31 ff xor %edi,%edi 0.00 : 5139a1: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 5139a5: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 5139a9: 48 8b 08 mov (%rax),%rcx 0.00 : 5139ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5139b3: e8 b8 e0 0d 00 callq 5f1a70 : | b_expr '*' b_expr 0.00 : 5139b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 5139bf: 49 89 c6 mov %rax,%r14 : | b_expr '*' b_expr 0.00 : 5139c2: e9 b9 df ff ff jmpq 511980 : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 5139c7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5139ce: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5139d5: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 5139da: 31 ff xor %edi,%edi 0.00 : 5139dc: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5139e0: 44 8b 43 fc mov -0x4(%rbx),%r8d 0.00 : 5139e4: 48 8b 09 mov (%rcx),%rcx 0.00 : 5139e7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5139ee: e8 7d e0 0d 00 callq 5f1a70 : | b_expr '-' b_expr 0.00 : 5139f3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 5139fa: 49 89 c6 mov %rax,%r14 : | b_expr '-' b_expr 0.00 : 5139fd: e9 7e df ff ff jmpq 511980 : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 513a02: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513a09: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513a10: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 513a13: 48 8b 3a mov (%rdx),%rdi 0.00 : 513a16: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513a1d: e8 6e d3 ff ff callq 510d90 : | b_expr '+' b_expr 0.00 : 513a22: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 513a29: 49 89 c6 mov %rax,%r14 : | b_expr '+' b_expr 0.00 : 513a2c: e9 4f df ff ff jmpq 511980 : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 513a31: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513a38: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513a3f: 31 d2 xor %edx,%edx 0.00 : 513a41: 31 ff xor %edi,%edi 0.00 : 513a43: 48 8b 0e mov (%rsi),%rcx 0.00 : 513a46: 44 8b 43 fc mov -0x4(%rbx),%r8d 0.00 : 513a4a: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 513a4f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513a56: e8 15 e0 0d 00 callq 5f1a70 : | '-' b_expr %prec UMINUS 0.00 : 513a5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 513a62: 49 89 c6 mov %rax,%r14 : | '-' b_expr %prec UMINUS 0.00 : 513a65: e9 16 df ff ff jmpq 511980 : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 513a6a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513a71: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 513a78: be 20 00 00 00 mov $0x20,%esi 0.00 : 513a7d: 48 8b 3d dc 6d 6a 00 mov 0x6a6ddc(%rip),%rdi # bba860 : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 513a84: 8b 5a fc mov -0x4(%rdx),%ebx 0.00 : 513a87: 4c 8b 21 mov (%rcx),%r12 0.00 : 513a8a: 4c 8b 69 f0 mov -0x10(%rcx),%r13 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 513a8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513a95: e8 76 53 28 00 callq 798e10 0.00 : 513a9a: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; : n->typeName = typename; 0.00 : 513aa0: 4c 89 60 10 mov %r12,0x10(%rax) : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 513aa4: 49 89 c6 mov %rax,%r14 : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; 0.00 : 513aa7: 4c 89 68 08 mov %r13,0x8(%rax) : n->typeName = typename; : n->location = location; 0.00 : 513aab: 89 58 18 mov %ebx,0x18(%rax) : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS 0.00 : 513aae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513ab5: e9 c6 de ff ff jmpq 511980 : * Presently, AND, NOT, IS, and IN are the a_expr keywords that would : * cause trouble in the places where b_expr is used. For simplicity, we : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } 0.00 : 513aba: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513ac1: 4c 8b 30 mov (%rax),%r14 : | b_expr TYPECAST Typename 0.00 : 513ac4: e9 b7 de ff ff jmpq 511980 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513ac9: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513ad0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513ad7: 8b 59 f8 mov -0x8(%rcx),%ebx 0.00 : 513ada: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 513ade: 31 f6 xor %esi,%esi 0.00 : 513ae0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513ae7: e8 64 dd 0c 00 callq 5e1850 0.00 : 513aec: 41 89 d8 mov %ebx,%r8d 0.00 : 513aef: 48 89 c1 mov %rax,%rcx 0.00 : 513af2: 31 d2 xor %edx,%edx 0.00 : 513af4: 31 f6 xor %esi,%esi 0.00 : 513af6: bf 07 00 00 00 mov $0x7,%edi 0.00 : 513afb: e8 f0 cf ff ff callq 510af0 0.00 : 513b00: 89 de mov %ebx,%esi 0.00 : 513b02: 48 89 c7 mov %rax,%rdi 0.00 : 513b05: e8 96 d8 ff ff callq 5113a0 : list_make1($1), @2), : @2); : } : ; 0.00 : 513b0a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513b11: 49 89 c6 mov %rax,%r14 : list_make1($1), @2), : @2); : } : ; 0.00 : 513b14: e9 67 de ff ff jmpq 511980 : errmsg("UNIQUE predicate is not yet implemented"), : parser_errposition(@1))); : } : | a_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513b19: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513b20: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513b27: 31 f6 xor %esi,%esi 0.00 : 513b29: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 513b2d: 8b 58 fc mov -0x4(%rax),%ebx 0.00 : 513b30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513b37: e8 14 dd 0c 00 callq 5e1850 0.00 : 513b3c: 41 89 d8 mov %ebx,%r8d 0.00 : 513b3f: 48 89 c1 mov %rax,%rcx 0.00 : 513b42: 31 d2 xor %edx,%edx 0.00 : 513b44: 31 f6 xor %esi,%esi 0.00 : 513b46: bf 07 00 00 00 mov $0x7,%edi 0.00 : 513b4b: e8 a0 cf ff ff callq 510af0 : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS 0.00 : 513b50: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("UNIQUE predicate is not yet implemented"), : parser_errposition(@1))); : } : | a_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513b57: 49 89 c6 mov %rax,%r14 : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS 0.00 : 513b5a: e9 21 de ff ff jmpq 511980 : * select into a node, then transforming the target expressions : * from whatever they are into count(*), and testing the : * entire result equal to one. : * But, will probably implement a separate node in the executor. : */ : ereport(ERROR, 0.00 : 513b5f: 45 31 c0 xor %r8d,%r8d 0.00 : 513b62: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 513b67: ba 79 2c 00 00 mov $0x2c79,%edx 0.00 : 513b6c: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 513b71: bf 14 00 00 00 mov $0x14,%edi 0.00 : 513b76: e8 45 6f 26 00 callq 77aac0 0.00 : 513b7b: 84 c0 test %al,%al 0.00 : 513b7d: 0f 84 24 e4 ff ff je 511fa7 0.00 : 513b83: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513b8a: 8b 7e fc mov -0x4(%rsi),%edi 0.00 : 513b8d: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 513b94: e8 07 a1 ff ff callq 50dca0 0.00 : 513b99: bf 18 a4 7c 00 mov $0x7ca418,%edi 0.00 : 513b9e: 41 89 c4 mov %eax,%r12d 0.00 : 513ba1: 31 c0 xor %eax,%eax 0.00 : 513ba3: e8 f8 8c 26 00 callq 77c8a0 0.00 : 513ba8: bf 40 04 00 00 mov $0x440,%edi 0.00 : 513bad: 89 c3 mov %eax,%ebx 0.00 : 513baf: e9 ac 0c 01 00 jmpq 524860 : n->location = @2; : $$ = (Node *)n; : } : | a_expr subquery_Op sub_type '(' a_expr ')' %prec Op : { : if ($3 == ANY_SUBLINK) 0.00 : 513bb4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513bbb: 83 7e e8 02 cmpl $0x2,-0x18(%rsi) 0.00 : 513bbf: 0f 84 3f 58 01 00 je 529404 : $$ = (Node *) makeA_Expr(AEXPR_OP_ANY, $2, $1, $5, @2); : else : $$ = (Node *) makeA_Expr(AEXPR_OP_ALL, $2, $1, $5, @2); 0.00 : 513bc5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513bcc: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513bd3: bf 02 00 00 00 mov $0x2,%edi 0.00 : 513bd8: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 513bdc: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 513be0: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 513be4: 48 8b 76 e0 mov -0x20(%rsi),%rsi 0.00 : 513be8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513bef: e8 ec dd 0d 00 callq 5f19e0 0.00 : 513bf4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513bfb: 49 89 c6 mov %rax,%r14 0.00 : 513bfe: e9 7d dd ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | a_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 513c03: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513c0a: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513c11: bf 05 00 00 00 mov $0x5,%edi 0.00 : 513c16: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 513c1a: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 513c1e: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 513c23: 44 8b 40 ec mov -0x14(%rax),%r8d 0.00 : 513c27: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513c2e: e8 3d de 0d 00 callq 5f1a70 : } : /* 0.00 : 513c33: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | a_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 513c3a: 49 89 c6 mov %rax,%r14 : } : /* 0.00 : 513c3d: e9 3e dd ff ff jmpq 511980 : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513c42: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513c49: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513c50: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 513c55: 31 ff xor %edi,%edi 0.00 : 513c57: 44 8b 42 ec mov -0x14(%rdx),%r8d 0.00 : 513c5b: 48 8b 4b f0 mov -0x10(%rbx),%rcx 0.00 : 513c5f: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 513c63: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513c6a: e8 01 de 0d 00 callq 5f1a70 0.00 : 513c6f: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513c76: 48 89 c3 mov %rax,%rbx 0.00 : 513c79: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513c80: 31 ff xor %edi,%edi 0.00 : 513c82: 44 8b 66 ec mov -0x14(%rsi),%r12d 0.00 : 513c86: 48 8b 08 mov (%rax),%rcx 0.00 : 513c89: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513c8e: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 513c92: 45 89 e0 mov %r12d,%r8d 0.00 : 513c95: e8 d6 dd 0d 00 callq 5f1a70 0.00 : 513c9a: 44 89 e2 mov %r12d,%edx 0.00 : 513c9d: 48 89 de mov %rbx,%rsi 0.00 : 513ca0: 48 89 c7 mov %rax,%rdi 0.00 : 513ca3: e8 f8 d5 ff ff callq 5112a0 0.00 : 513ca8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513caf: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513cb6: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 513cbb: 31 ff xor %edi,%edi 0.00 : 513cbd: 49 89 c5 mov %rax,%r13 0.00 : 513cc0: 44 8b 42 ec mov -0x14(%rdx),%r8d 0.00 : 513cc4: 48 8b 0b mov (%rbx),%rcx 0.00 : 513cc7: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 513ccb: e8 a0 dd 0d 00 callq 5f1a70 0.00 : 513cd0: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513cd7: 49 89 c4 mov %rax,%r12 0.00 : 513cda: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513ce1: 31 ff xor %edi,%edi 0.00 : 513ce3: 8b 5e ec mov -0x14(%rsi),%ebx 0.00 : 513ce6: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513cea: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513cef: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 513cf3: 41 89 d8 mov %ebx,%r8d 0.00 : 513cf6: e8 75 dd 0d 00 callq 5f1a70 0.00 : 513cfb: 89 da mov %ebx,%edx 0.00 : 513cfd: 48 89 c7 mov %rax,%rdi 0.00 : 513d00: 4c 89 e6 mov %r12,%rsi 0.00 : 513d03: e8 98 d5 ff ff callq 5112a0 0.00 : 513d08: 89 da mov %ebx,%edx 0.00 : 513d0a: 48 89 c7 mov %rax,%rdi 0.00 : 513d0d: 4c 89 ee mov %r13,%rsi 0.00 : 513d10: e8 0b d6 ff ff callq 511320 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $7, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $5, @2), : @2), : @2); : } : | a_expr IN_P in_expr 0.00 : 513d15: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513d1c: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $7, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $5, @2), : @2), : @2); : } : | a_expr IN_P in_expr 0.00 : 513d1f: e9 5c dc ff ff jmpq 511980 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513d24: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513d2b: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513d32: be 44 97 7c 00 mov $0x7c9744,%esi 0.00 : 513d37: 31 ff xor %edi,%edi 0.00 : 513d39: 44 8b 42 f0 mov -0x10(%rdx),%r8d 0.00 : 513d3d: 48 8b 4b f0 mov -0x10(%rbx),%rcx 0.00 : 513d41: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 513d45: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513d4c: e8 1f dd 0d 00 callq 5f1a70 0.00 : 513d51: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513d58: 48 89 c3 mov %rax,%rbx 0.00 : 513d5b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513d62: 31 ff xor %edi,%edi 0.00 : 513d64: 44 8b 66 f0 mov -0x10(%rsi),%r12d 0.00 : 513d68: 48 8b 08 mov (%rax),%rcx 0.00 : 513d6b: be 9f 76 7c 00 mov $0x7c769f,%esi 0.00 : 513d70: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 513d74: 45 89 e0 mov %r12d,%r8d 0.00 : 513d77: e8 f4 dc 0d 00 callq 5f1a70 0.00 : 513d7c: 44 89 e2 mov %r12d,%edx 0.00 : 513d7f: 48 89 de mov %rbx,%rsi 0.00 : 513d82: 48 89 c7 mov %rax,%rdi 0.00 : 513d85: e8 96 d5 ff ff callq 511320 0.00 : 513d8a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513d91: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513d98: be 44 97 7c 00 mov $0x7c9744,%esi 0.00 : 513d9d: 31 ff xor %edi,%edi 0.00 : 513d9f: 49 89 c5 mov %rax,%r13 0.00 : 513da2: 44 8b 42 f0 mov -0x10(%rdx),%r8d 0.00 : 513da6: 48 8b 0b mov (%rbx),%rcx 0.00 : 513da9: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 513dad: e8 be dc 0d 00 callq 5f1a70 0.00 : 513db2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513db9: 49 89 c4 mov %rax,%r12 0.00 : 513dbc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513dc3: 31 ff xor %edi,%edi 0.00 : 513dc5: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 513dc8: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513dcc: be 9f 76 7c 00 mov $0x7c769f,%esi 0.00 : 513dd1: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 513dd5: 41 89 d8 mov %ebx,%r8d 0.00 : 513dd8: e8 93 dc 0d 00 callq 5f1a70 0.00 : 513ddd: 89 da mov %ebx,%edx 0.00 : 513ddf: 48 89 c7 mov %rax,%rdi 0.00 : 513de2: 4c 89 e6 mov %r12,%rsi 0.00 : 513de5: e8 36 d5 ff ff callq 511320 0.00 : 513dea: 89 da mov %ebx,%edx 0.00 : 513dec: 48 89 c7 mov %rax,%rdi 0.00 : 513def: 4c 89 ee mov %r13,%rsi 0.00 : 513df2: e8 a9 d4 ff ff callq 5112a0 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $6, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $4, @2), : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513df7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513dfe: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $6, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $4, @2), : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513e01: e9 7a db ff ff jmpq 511980 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513e06: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513e0d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513e14: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 513e19: 31 ff xor %edi,%edi 0.00 : 513e1b: 44 8b 42 ec mov -0x14(%rdx),%r8d 0.00 : 513e1f: 48 8b 0b mov (%rbx),%rcx 0.00 : 513e22: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 513e26: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513e2d: e8 3e dc 0d 00 callq 5f1a70 0.00 : 513e32: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513e39: 49 89 c4 mov %rax,%r12 0.00 : 513e3c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513e43: 31 ff xor %edi,%edi 0.00 : 513e45: 8b 5e ec mov -0x14(%rsi),%ebx 0.00 : 513e48: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513e4c: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513e51: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 513e55: 41 89 d8 mov %ebx,%r8d 0.00 : 513e58: e8 13 dc 0d 00 callq 5f1a70 0.00 : 513e5d: 89 da mov %ebx,%edx 0.00 : 513e5f: 48 89 c7 mov %rax,%rdi 0.00 : 513e62: 4c 89 e6 mov %r12,%rsi 0.00 : 513e65: e8 36 d4 ff ff callq 5112a0 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513e6a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513e71: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513e74: e9 07 db ff ff jmpq 511980 : * issues make this difficult: : * http://archives.postgresql.org/pgsql-hackers/2008-08/msg01142.php : */ : | a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513e79: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513e80: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513e87: be 44 97 7c 00 mov $0x7c9744,%esi 0.00 : 513e8c: 31 ff xor %edi,%edi 0.00 : 513e8e: 44 8b 42 f0 mov -0x10(%rdx),%r8d 0.00 : 513e92: 48 8b 0b mov (%rbx),%rcx 0.00 : 513e95: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 513e99: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513ea0: e8 cb db 0d 00 callq 5f1a70 0.00 : 513ea5: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513eac: 49 89 c4 mov %rax,%r12 0.00 : 513eaf: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513eb6: 31 ff xor %edi,%edi 0.00 : 513eb8: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 513ebb: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513ebf: be 9f 76 7c 00 mov $0x7c769f,%esi 0.00 : 513ec4: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 513ec8: 41 89 d8 mov %ebx,%r8d 0.00 : 513ecb: e8 a0 db 0d 00 callq 5f1a70 0.00 : 513ed0: 89 da mov %ebx,%edx 0.00 : 513ed2: 48 89 c7 mov %rax,%rdi 0.00 : 513ed5: 4c 89 e6 mov %r12,%rsi 0.00 : 513ed8: e8 43 d4 ff ff callq 511320 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN 0.00 : 513edd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * issues make this difficult: : * http://archives.postgresql.org/pgsql-hackers/2008-08/msg01142.php : */ : | a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513ee4: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN 0.00 : 513ee7: e9 94 da ff ff jmpq 511980 : } : } : | a_expr NOT IN_P in_expr : { : /* in_expr returns a SubLink or a list of a_exprs */ : if (IsA($4, SubLink)) 0.00 : 513eec: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513ef3: 48 8b 1a mov (%rdx),%rbx 0.00 : 513ef6: 81 3b 3c 01 00 00 cmpl $0x13c,(%rbx) 0.00 : 513efc: 0f 84 a6 54 01 00 je 5293a8 : $$ = makeNotExpr((Node *) n, @2); : } : else : { : /* generate scalar NOT IN expression */ : $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", $1, $4, @2); 0.00 : 513f02: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513f09: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513f10: 48 89 d9 mov %rbx,%rcx 0.00 : 513f13: bf 06 00 00 00 mov $0x6,%edi 0.00 : 513f18: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 513f1c: 44 8b 40 f8 mov -0x8(%rax),%r8d 0.00 : 513f20: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 513f25: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513f2c: e8 3f db 0d 00 callq 5f1a70 0.00 : 513f31: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513f38: 49 89 c6 mov %rax,%r14 0.00 : 513f3b: e9 40 da ff ff jmpq 511980 : @2); : } : | a_expr IN_P in_expr : { : /* in_expr returns a SubLink or a list of a_exprs */ : if (IsA($3, SubLink)) 0.00 : 513f40: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513f47: 48 8b 1a mov (%rdx),%rbx 0.00 : 513f4a: 81 3b 3c 01 00 00 cmpl $0x13c,(%rbx) 0.00 : 513f50: 0f 84 66 53 01 00 je 5292bc : $$ = (Node *)n; : } : else : { : /* generate scalar IN expression */ : $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, "=", $1, $3, @2); 0.00 : 513f56: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513f5d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513f64: 48 89 d9 mov %rbx,%rcx 0.00 : 513f67: bf 06 00 00 00 mov $0x6,%edi 0.00 : 513f6c: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 513f70: 44 8b 40 fc mov -0x4(%rax),%r8d 0.00 : 513f74: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 513f79: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513f80: e8 eb da 0d 00 callq 5f1a70 0.00 : 513f85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513f8c: 49 89 c6 mov %rax,%r14 0.00 : 513f8f: e9 ec d9 ff ff jmpq 511980 : $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", $1, $4, @2); : } : } : | a_expr subquery_Op sub_type select_with_parens %prec Op : { : SubLink *n = makeNode(SubLink); 0.00 : 513f94: 48 8b 3d c5 68 6a 00 mov 0x6a68c5(%rip),%rdi # bba860 0.00 : 513f9b: be 30 00 00 00 mov $0x30,%esi 0.00 : 513fa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513fa7: e8 64 4e 28 00 callq 798e10 0.00 : 513fac: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = $3; 0.00 : 513fb2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->subLinkId = 0; : n->testexpr = $1; : n->operName = $2; : n->subselect = $4; : n->location = @2; : $$ = (Node *)n; 0.00 : 513fb9: 49 89 c6 mov %rax,%r14 : } : } : | a_expr subquery_Op sub_type select_with_parens %prec Op : { : SubLink *n = makeNode(SubLink); : n->subLinkType = $3; 0.00 : 513fbc: 8b 51 f8 mov -0x8(%rcx),%edx : n->subLinkId = 0; 0.00 : 513fbf: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : } : } : | a_expr subquery_Op sub_type select_with_parens %prec Op : { : SubLink *n = makeNode(SubLink); : n->subLinkType = $3; 0.00 : 513fc6: 89 50 04 mov %edx,0x4(%rax) : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 513fc9: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 513fcd: 48 89 50 10 mov %rdx,0x10(%rax) : n->operName = $2; 0.00 : 513fd1: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 513fd5: 48 89 50 18 mov %rdx,0x18(%rax) : n->subselect = $4; 0.00 : 513fd9: 48 8b 11 mov (%rcx),%rdx 0.00 : 513fdc: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @2; 0.00 : 513fe0: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513fe7: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 513fea: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | a_expr subquery_Op sub_type '(' a_expr ')' %prec Op 0.00 : 513fed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513ff4: e9 87 d9 ff ff jmpq 511980 : b->booltesttype = IS_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 513ff9: 48 8b 3d 60 68 6a 00 mov 0x6a6860(%rip),%rdi # bba860 0.00 : 514000: be 18 00 00 00 mov $0x18,%esi 0.00 : 514005: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51400c: e8 ff 4d 28 00 callq 798e10 0.00 : 514011: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 514017: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; 0.00 : 51401e: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 514021: 48 8b 51 e8 mov -0x18(%rcx),%rdx : b->booltesttype = IS_NOT_UNKNOWN; 0.00 : 514025: c7 40 10 05 00 00 00 movl $0x5,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 51402c: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS DISTINCT FROM a_expr %prec IS 0.00 : 514030: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514037: e9 44 d9 ff ff jmpq 511980 : b->booltesttype = IS_NOT_FALSE; : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 51403c: 48 8b 3d 1d 68 6a 00 mov 0x6a681d(%rip),%rdi # bba860 0.00 : 514043: be 18 00 00 00 mov $0x18,%esi 0.00 : 514048: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51404f: e8 bc 4d 28 00 callq 798e10 0.00 : 514054: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 51405a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : b->booltesttype = IS_UNKNOWN; : $$ = (Node *)b; 0.00 : 514061: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 514064: 48 8b 56 f0 mov -0x10(%rsi),%rdx : b->booltesttype = IS_UNKNOWN; 0.00 : 514068: c7 40 10 04 00 00 00 movl $0x4,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 51406f: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS 0.00 : 514073: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51407a: e9 01 d9 ff ff jmpq 511980 : b->booltesttype = IS_FALSE; : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 51407f: 48 8b 3d da 67 6a 00 mov 0x6a67da(%rip),%rdi # bba860 0.00 : 514086: be 18 00 00 00 mov $0x18,%esi 0.00 : 51408b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514092: e8 79 4d 28 00 callq 798e10 0.00 : 514097: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 51409d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : b->booltesttype = IS_NOT_FALSE; : $$ = (Node *)b; 0.00 : 5140a4: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140a7: 48 8b 53 e8 mov -0x18(%rbx),%rdx : b->booltesttype = IS_NOT_FALSE; 0.00 : 5140ab: c7 40 10 03 00 00 00 movl $0x3,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140b2: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_NOT_FALSE; : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS 0.00 : 5140b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5140bd: e9 be d8 ff ff jmpq 511980 : b->booltesttype = IS_NOT_TRUE; : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 5140c2: 48 8b 3d 97 67 6a 00 mov 0x6a6797(%rip),%rdi # bba860 0.00 : 5140c9: be 18 00 00 00 mov $0x18,%esi 0.00 : 5140ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5140d5: e8 36 4d 28 00 callq 798e10 0.00 : 5140da: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 5140e0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : b->booltesttype = IS_FALSE; : $$ = (Node *)b; 0.00 : 5140e7: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140ea: 48 8b 51 f0 mov -0x10(%rcx),%rdx : b->booltesttype = IS_FALSE; 0.00 : 5140ee: c7 40 10 02 00 00 00 movl $0x2,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140f5: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_FALSE; : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS 0.00 : 5140f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514100: e9 7b d8 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 514105: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51410c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514113: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 514118: bf 03 00 00 00 mov $0x3,%edi 0.00 : 51411d: 8b 58 f0 mov -0x10(%rax),%ebx 0.00 : 514120: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 514124: 48 8b 09 mov (%rcx),%rcx 0.00 : 514127: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51412e: 41 89 d8 mov %ebx,%r8d 0.00 : 514131: e8 3a d9 0d 00 callq 5f1a70 0.00 : 514136: 89 de mov %ebx,%esi 0.00 : 514138: 48 89 c7 mov %rax,%rdi 0.00 : 51413b: e8 60 d2 ff ff callq 5113a0 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS 0.00 : 514140: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 514147: 49 89 c6 mov %rax,%r14 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS 0.00 : 51414a: e9 31 d8 ff ff jmpq 511980 : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS DISTINCT FROM a_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 51414f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514156: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51415d: bf 03 00 00 00 mov $0x3,%edi 0.00 : 514162: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 514166: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51416a: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51416f: 48 8b 0b mov (%rbx),%rcx 0.00 : 514172: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514179: e8 f2 d8 0d 00 callq 5f1a70 : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS 0.00 : 51417e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS DISTINCT FROM a_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 514185: 49 89 c6 mov %rax,%r14 : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS 0.00 : 514188: e9 f3 d7 ff ff jmpq 511980 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 51418d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514194: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51419b: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 5141a0: bf 05 00 00 00 mov $0x5,%edi 0.00 : 5141a5: 48 8b 48 f8 mov -0x8(%rax),%rcx 0.00 : 5141a9: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 5141ad: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 5141b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5141b8: e8 b3 d8 0d 00 callq 5f1a70 : } : | a_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 5141bd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 5141c4: 49 89 c6 mov %rax,%r14 : } : | a_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 5141c7: e9 b4 d7 ff ff jmpq 511980 : { : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } 0.00 : 5141cc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5141d3: 31 f6 xor %esi,%esi 0.00 : 5141d5: 48 8b 3b mov (%rbx),%rdi 0.00 : 5141d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5141df: e8 6c d6 0c 00 callq 5e1850 : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 5141e4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } 0.00 : 5141eb: 49 89 c6 mov %rax,%r14 : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 5141ee: e9 8d d7 ff ff jmpq 511980 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); 0.00 : 5141f3: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 5141fa: 48 8b 3d 5f 66 6a 00 mov 0x6a665f(%rip),%rdi # bba860 0.00 : 514201: be 18 00 00 00 mov $0x18,%esi : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); 0.00 : 514206: 8b 59 fc mov -0x4(%rcx),%ebx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 514209: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514210: e8 fb 4b 28 00 callq 798e10 0.00 : 514215: c7 00 8c 03 00 00 movl $0x38c,(%rax) : : n->elements = elements; 0.00 : 51421b: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 514222: 00 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); 0.00 : 514223: 49 89 c6 mov %rax,%r14 : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); : : n->elements = elements; : n->location = location; 0.00 : 514226: 89 58 10 mov %ebx,0x10(%rax) : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); : } : ; 0.00 : 514229: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514230: e9 4b d7 ff ff jmpq 511980 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 514235: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51423c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 514243: be 18 00 00 00 mov $0x18,%esi 0.00 : 514248: 48 8b 3d 11 66 6a 00 mov 0x6a6611(%rip),%rdi # bba860 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 51424f: 8b 58 f8 mov -0x8(%rax),%ebx 0.00 : 514252: 4c 8b 62 f8 mov -0x8(%rdx),%r12 : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 514256: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51425d: e8 ae 4b 28 00 callq 798e10 0.00 : 514262: c7 00 8c 03 00 00 movl $0x38c,(%rax) : : n->elements = elements; 0.00 : 514268: 4c 89 60 08 mov %r12,0x8(%rax) : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 51426c: 49 89 c6 mov %rax,%r14 : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); : : n->elements = elements; : n->location = location; 0.00 : 51426f: 89 58 10 mov %ebx,0x10(%rax) : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' 0.00 : 514272: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514279: e9 02 d7 ff ff jmpq 511980 : | type_list ',' Typename { $$ = lappend($1, $3); } : ; : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 51427e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514285: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 51428c: 48 8b 3d cd 65 6a 00 mov 0x6a65cd(%rip),%rdi # bba860 : | type_list ',' Typename { $$ = lappend($1, $3); } : ; : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 514293: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 514297: 8b 59 f8 mov -0x8(%rcx),%ebx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 51429a: be 18 00 00 00 mov $0x18,%esi 0.00 : 51429f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5142a6: e8 65 4b 28 00 callq 798e10 0.00 : 5142ab: c7 00 8c 03 00 00 movl $0x38c,(%rax) : : n->elements = elements; 0.00 : 5142b1: 4c 89 60 08 mov %r12,0x8(%rax) : | type_list ',' Typename { $$ = lappend($1, $3); } : ; : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 5142b5: 49 89 c6 mov %rax,%r14 : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); : : n->elements = elements; : n->location = location; 0.00 : 5142b8: 89 58 10 mov %ebx,0x10(%rax) : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' 0.00 : 5142bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5142c2: e9 b9 d6 ff ff jmpq 511980 : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 5142c7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5142ce: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5142d2: 48 8b 32 mov (%rdx),%rsi 0.00 : 5142d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5142dc: e8 9f db 0c 00 callq 5e1e80 : ; 0.00 : 5142e1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 5142e8: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5142eb: e9 90 d6 ff ff jmpq 511980 : na->location = @1; : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } 0.00 : 5142f0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5142f7: 31 f6 xor %esi,%esi 0.00 : 5142f9: 48 8b 38 mov (%rax),%rdi 0.00 : 5142fc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514303: e8 48 d5 0c 00 callq 5e1850 : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 514308: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : na->location = @1; : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } 0.00 : 51430f: 49 89 c6 mov %rax,%r14 : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 514312: e9 69 d6 ff ff jmpq 511980 : { : $$ = $1; : } : | param_name COLON_EQUALS a_expr : { : NamedArgExpr *na = makeNode(NamedArgExpr); 0.00 : 514317: 48 8b 3d 42 65 6a 00 mov 0x6a6542(%rip),%rdi # bba860 0.00 : 51431e: be 20 00 00 00 mov $0x20,%esi 0.00 : 514323: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51432a: e8 e1 4a 28 00 callq 798e10 0.00 : 51432f: c7 00 36 01 00 00 movl $0x136,(%rax) : na->name = $1; 0.00 : 514335: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : na->arg = (Expr *) $3; : na->argnumber = -1; /* until determined */ : na->location = @1; : $$ = (Node *) na; 0.00 : 51433c: 49 89 c6 mov %rax,%r14 : $$ = $1; : } : | param_name COLON_EQUALS a_expr : { : NamedArgExpr *na = makeNode(NamedArgExpr); : na->name = $1; 0.00 : 51433f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 514343: 48 89 50 10 mov %rdx,0x10(%rax) : na->arg = (Expr *) $3; 0.00 : 514347: 48 8b 13 mov (%rbx),%rdx : na->argnumber = -1; /* until determined */ 0.00 : 51434a: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : } : | param_name COLON_EQUALS a_expr : { : NamedArgExpr *na = makeNode(NamedArgExpr); : na->name = $1; : na->arg = (Expr *) $3; 0.00 : 514351: 48 89 50 08 mov %rdx,0x8(%rax) : na->argnumber = -1; /* until determined */ : na->location = @1; 0.00 : 514355: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51435c: 8b 56 f8 mov -0x8(%rsi),%edx 0.00 : 51435f: 89 50 1c mov %edx,0x1c(%rax) : $$ = (Node *) na; : } : ; 0.00 : 514362: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514369: e9 12 d6 ff ff jmpq 511980 : } : ; : : func_arg_expr: a_expr : { : $$ = $1; 0.00 : 51436e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514375: 4c 8b 31 mov (%rcx),%r14 : } : | param_name COLON_EQUALS a_expr 0.00 : 514378: e9 03 d6 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | func_arg_list ',' func_arg_expr : { : $$ = lappend($1, $3); 0.00 : 51437d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514384: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 514388: 48 8b 32 mov (%rdx),%rsi 0.00 : 51438b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514392: e8 e9 da 0c 00 callq 5e1e80 : } : ; 0.00 : 514397: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | func_arg_list ',' func_arg_expr : { : $$ = lappend($1, $3); 0.00 : 51439e: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5143a1: e9 da d5 ff ff jmpq 511980 : ; : : /* function arguments can have names */ : func_arg_list: func_arg_expr : { : $$ = list_make1($1); 0.00 : 5143a6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5143ad: 31 f6 xor %esi,%esi 0.00 : 5143af: 48 8b 38 mov (%rax),%rdi 0.00 : 5143b2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5143b9: e8 92 d4 0c 00 callq 5e1850 : } : | func_arg_list ',' func_arg_expr 0.00 : 5143be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* function arguments can have names */ : func_arg_list: func_arg_expr : { : $$ = list_make1($1); 0.00 : 5143c5: 49 89 c6 mov %rax,%r14 : } : | func_arg_list ',' func_arg_expr 0.00 : 5143c8: e9 b3 d5 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | expr_list ',' a_expr : { : $$ = lappend($1, $3); 0.00 : 5143cd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5143d4: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 5143d8: 48 8b 33 mov (%rbx),%rsi 0.00 : 5143db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5143e2: e8 99 da 0c 00 callq 5e1e80 : } : ; 0.00 : 5143e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | expr_list ',' a_expr : { : $$ = lappend($1, $3); 0.00 : 5143ee: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5143f1: e9 8a d5 ff ff jmpq 511980 : */ : ; : : expr_list: a_expr : { : $$ = list_make1($1); 0.00 : 5143f6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5143fd: 31 f6 xor %esi,%esi 0.00 : 5143ff: 48 8b 39 mov (%rcx),%rdi 0.00 : 514402: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514409: e8 42 d4 0c 00 callq 5e1850 : } : | expr_list ',' a_expr 0.00 : 51440e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : ; : : expr_list: a_expr : { : $$ = list_make1($1); 0.00 : 514415: 49 89 c6 mov %rax,%r14 : } : | expr_list ',' a_expr 0.00 : 514418: e9 63 d5 ff ff jmpq 511980 : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } : | NOT ILIKE : { $$ = list_make1(makeString("!~~*")); } 0.00 : 51441d: bf 2d 97 7c 00 mov $0x7c972d,%edi 0.00 : 514422: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514429: e8 c2 b2 0e 00 callq 5ff6f0 0.00 : 51442e: 31 f6 xor %esi,%esi 0.00 : 514430: 48 89 c7 mov %rax,%rdi 0.00 : 514433: e8 18 d4 0c 00 callq 5e1850 : /* cannot put SIMILAR TO here, because SIMILAR TO is a hack. 0.00 : 514438: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } : | NOT ILIKE : { $$ = list_make1(makeString("!~~*")); } 0.00 : 51443f: 49 89 c6 mov %rax,%r14 : /* cannot put SIMILAR TO here, because SIMILAR TO is a hack. 0.00 : 514442: e9 39 d5 ff ff jmpq 511980 : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } 0.00 : 514447: bf 2e 97 7c 00 mov $0x7c972e,%edi 0.00 : 51444c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514453: e8 98 b2 0e 00 callq 5ff6f0 0.00 : 514458: 31 f6 xor %esi,%esi 0.00 : 51445a: 48 89 c7 mov %rax,%rdi 0.00 : 51445d: e8 ee d3 0c 00 callq 5e1850 : | NOT ILIKE 0.00 : 514462: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } 0.00 : 514469: 49 89 c6 mov %rax,%r14 : | NOT ILIKE 0.00 : 51446c: e9 0f d5 ff ff jmpq 511980 : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } 0.00 : 514471: bf 29 97 7c 00 mov $0x7c9729,%edi 0.00 : 514476: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51447d: e8 6e b2 0e 00 callq 5ff6f0 0.00 : 514482: 31 f6 xor %esi,%esi 0.00 : 514484: 48 89 c7 mov %rax,%rdi 0.00 : 514487: e8 c4 d3 0c 00 callq 5e1850 : | ILIKE 0.00 : 51448c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } 0.00 : 514493: 49 89 c6 mov %rax,%r14 : | ILIKE 0.00 : 514496: e9 e5 d4 ff ff jmpq 511980 : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } 0.00 : 51449b: bf 2a 97 7c 00 mov $0x7c972a,%edi 0.00 : 5144a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5144a7: e8 44 b2 0e 00 callq 5ff6f0 0.00 : 5144ac: 31 f6 xor %esi,%esi 0.00 : 5144ae: 48 89 c7 mov %rax,%rdi 0.00 : 5144b1: e8 9a d3 0c 00 callq 5e1850 : | NOT LIKE 0.00 : 5144b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } 0.00 : 5144bd: 49 89 c6 mov %rax,%r14 : | NOT LIKE 0.00 : 5144c0: e9 bb d4 ff ff jmpq 511980 : : subquery_Op: : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } 0.00 : 5144c5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5144cc: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | LIKE 0.00 : 5144d0: e9 ab d4 ff ff jmpq 511980 : { $$ = $3; } : ; : : subquery_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 5144d5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5144dc: 48 8b 38 mov (%rax),%rdi 0.00 : 5144df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5144e6: e8 05 b2 0e 00 callq 5ff6f0 0.00 : 5144eb: 31 f6 xor %esi,%esi 0.00 : 5144ed: 48 89 c7 mov %rax,%rdi 0.00 : 5144f0: e8 5b d3 0c 00 callq 5e1850 : | OPERATOR '(' any_operator ')' 0.00 : 5144f5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = $3; } : ; : : subquery_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 5144fc: 49 89 c6 mov %rax,%r14 : | OPERATOR '(' any_operator ')' 0.00 : 5144ff: e9 7c d4 ff ff jmpq 511980 : : qual_all_Op: : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } 0.00 : 514504: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51450b: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 51450f: e9 6c d4 ff ff jmpq 511980 : { $$ = $3; } : ; : : qual_all_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 514514: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51451b: 48 8b 3b mov (%rbx),%rdi 0.00 : 51451e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514525: e8 c6 b1 0e 00 callq 5ff6f0 0.00 : 51452a: 31 f6 xor %esi,%esi 0.00 : 51452c: 48 89 c7 mov %rax,%rdi 0.00 : 51452f: e8 1c d3 0c 00 callq 5e1850 : | OPERATOR '(' any_operator ')' 0.00 : 514534: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = $3; } : ; : : qual_all_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 51453b: 49 89 c6 mov %rax,%r14 : | OPERATOR '(' any_operator ')' 0.00 : 51453e: e9 3d d4 ff ff jmpq 511980 : ; : : qual_Op: Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } 0.00 : 514543: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51454a: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 51454e: e9 2d d4 ff ff jmpq 511980 : | '>' { $$ = ">"; } : | '=' { $$ = "="; } : ; : : qual_Op: Op : { $$ = list_make1(makeString($1)); } 0.00 : 514553: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51455a: 48 8b 3a mov (%rdx),%rdi 0.00 : 51455d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514564: e8 87 b1 0e 00 callq 5ff6f0 0.00 : 514569: 31 f6 xor %esi,%esi 0.00 : 51456b: 48 89 c7 mov %rax,%rdi 0.00 : 51456e: e8 dd d2 0c 00 callq 5e1850 : | OPERATOR '(' any_operator ')' 0.00 : 514573: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '>' { $$ = ">"; } : | '=' { $$ = "="; } : ; : : qual_Op: Op : { $$ = list_make1(makeString($1)); } 0.00 : 51457a: 49 89 c6 mov %rax,%r14 : | OPERATOR '(' any_operator ')' 0.00 : 51457d: e9 fe d3 ff ff jmpq 511980 : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } : | '<' { $$ = "<"; } : | '>' { $$ = ">"; } : | '=' { $$ = "="; } 0.00 : 514582: 41 be 45 97 7c 00 mov $0x7c9745,%r14d : ; 0.00 : 514588: e9 f3 d3 ff ff jmpq 511980 : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } : | '<' { $$ = "<"; } : | '>' { $$ = ">"; } 0.00 : 51458d: 41 be d4 78 89 00 mov $0x8978d4,%r14d : | '=' { $$ = "="; } 0.00 : 514593: e9 e8 d3 ff ff jmpq 511980 : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } : | '<' { $$ = "<"; } 0.00 : 514598: 41 be 1b 97 7c 00 mov $0x7c971b,%r14d : | '>' { $$ = ">"; } 0.00 : 51459e: e9 dd d3 ff ff jmpq 511980 : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } 0.00 : 5145a3: 41 be 70 3d 8c 00 mov $0x8c3d70,%r14d : | '<' { $$ = "<"; } 0.00 : 5145a9: e9 d2 d3 ff ff jmpq 511980 : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } 0.00 : 5145ae: 41 be ce 6e 8c 00 mov $0x8c6ece,%r14d : | '^' { $$ = "^"; } 0.00 : 5145b4: e9 c7 d3 ff ff jmpq 511980 : ; : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } 0.00 : 5145b9: 41 be 8a e7 87 00 mov $0x87e78a,%r14d : | '%' { $$ = "%"; } 0.00 : 5145bf: e9 bc d3 ff ff jmpq 511980 : | MathOp { $$ = $1; } : ; : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } 0.00 : 5145c4: 41 be a3 76 7c 00 mov $0x7c76a3,%r14d : | '/' { $$ = "/"; } 0.00 : 5145ca: e9 b1 d3 ff ff jmpq 511980 : all_Op: Op { $$ = $1; } : | MathOp { $$ = $1; } : ; : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } 0.00 : 5145cf: 41 be ca 6e 8c 00 mov $0x8c6eca,%r14d : | '*' { $$ = "*"; } 0.00 : 5145d5: e9 a6 d3 ff ff jmpq 511980 : : all_Op: Op { $$ = $1; } : | MathOp { $$ = $1; } : ; : : MathOp: '+' { $$ = "+"; } 0.00 : 5145da: 41 be 19 97 7c 00 mov $0x7c9719,%r14d : | '-' { $$ = "-"; } 0.00 : 5145e0: e9 9b d3 ff ff jmpq 511980 : | SOME { $$ = ANY_SUBLINK; } : | ALL { $$ = ALL_SUBLINK; } : ; : : all_Op: Op { $$ = $1; } : | MathOp { $$ = $1; } 0.00 : 5145e5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5145ec: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 5145ef: e9 8c d3 ff ff jmpq 511980 : sub_type: ANY { $$ = ANY_SUBLINK; } : | SOME { $$ = ANY_SUBLINK; } : | ALL { $$ = ALL_SUBLINK; } : ; : : all_Op: Op { $$ = $1; } 0.00 : 5145f4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5145fb: 4c 8b 36 mov (%rsi),%r14 : | MathOp { $$ = $1; } 0.00 : 5145fe: e9 7d d3 ff ff jmpq 511980 : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } : ; : : sub_type: ANY { $$ = ANY_SUBLINK; } : | SOME { $$ = ANY_SUBLINK; } : | ALL { $$ = ALL_SUBLINK; } 0.00 : 514603: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51460a: ff ff ff 0.00 : 51460d: 49 21 de and %rbx,%r14 0.00 : 514610: 49 83 ce 01 or $0x1,%r14 : ; 0.00 : 514614: e9 67 d3 ff ff jmpq 511980 : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } : ; : : sub_type: ANY { $$ = ANY_SUBLINK; } : | SOME { $$ = ANY_SUBLINK; } 0.00 : 514619: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 514620: ff ff ff 0.00 : 514623: 49 21 ce and %rcx,%r14 0.00 : 514626: 49 83 ce 02 or $0x2,%r14 : | ALL { $$ = ALL_SUBLINK; } 0.00 : 51462a: e9 51 d3 ff ff jmpq 511980 : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } : ; : : sub_type: ANY { $$ = ANY_SUBLINK; } 0.00 : 51462f: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 514636: ff ff ff 0.00 : 514639: 49 21 d6 and %rdx,%r14 0.00 : 51463c: 49 83 ce 02 or $0x2,%r14 : | SOME { $$ = ANY_SUBLINK; } 0.00 : 514640: e9 3b d3 ff ff jmpq 511980 : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } 0.00 : 514645: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51464c: 48 8b 70 f8 mov -0x8(%rax),%rsi 0.00 : 514650: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 514654: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51465b: e8 20 d8 0c 00 callq 5e1e80 : ; 0.00 : 514660: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } 0.00 : 514667: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51466a: e9 11 d3 ff ff jmpq 511980 : * SQL99 allows an optional ROW keyword, so we can now do single-element rows : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } 0.00 : 51466f: 45 31 f6 xor %r14d,%r14d : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } 0.00 : 514672: e9 09 d3 ff ff jmpq 511980 : * : * SQL99 allows an optional ROW keyword, so we can now do single-element rows : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } 0.00 : 514677: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51467e: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | ROW '(' ')' { $$ = NIL; } 0.00 : 514682: e9 f9 d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | a_expr FOLLOWING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514687: 48 8b 3d d2 61 6a 00 mov 0x6a61d2(%rip),%rdi # bba860 0.00 : 51468e: be 48 00 00 00 mov $0x48,%esi 0.00 : 514693: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51469a: e8 71 47 28 00 callq 798e10 0.00 : 51469f: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; 0.00 : 5146a5: c7 40 28 00 10 00 00 movl $0x1000,0x28(%rax) : n->startOffset = $1; : n->endOffset = NULL; : $$ = n; 0.00 : 5146ac: 49 89 c6 mov %rax,%r14 : } : | a_expr FOLLOWING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; : n->startOffset = $1; 0.00 : 5146af: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5146b6: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->endOffset = NULL; 0.00 : 5146ba: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 5146c1: 00 : } : | a_expr FOLLOWING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; : n->startOffset = $1; 0.00 : 5146c2: 48 89 50 30 mov %rdx,0x30(%rax) : n->endOffset = NULL; : $$ = n; : } : ; 0.00 : 5146c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5146cd: e9 ae d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | a_expr PRECEDING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 5146d2: 48 8b 3d 87 61 6a 00 mov 0x6a6187(%rip),%rdi # bba860 0.00 : 5146d9: be 48 00 00 00 mov $0x48,%esi 0.00 : 5146de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5146e5: e8 26 47 28 00 callq 798e10 0.00 : 5146ea: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; 0.00 : 5146f0: c7 40 28 00 04 00 00 movl $0x400,0x28(%rax) : n->startOffset = $1; : n->endOffset = NULL; : $$ = n; 0.00 : 5146f7: 49 89 c6 mov %rax,%r14 : } : | a_expr PRECEDING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; : n->startOffset = $1; 0.00 : 5146fa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514701: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->endOffset = NULL; 0.00 : 514705: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 51470c: 00 : } : | a_expr PRECEDING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; : n->startOffset = $1; 0.00 : 51470d: 48 89 50 30 mov %rdx,0x30(%rax) : n->endOffset = NULL; : $$ = n; : } : | a_expr FOLLOWING 0.00 : 514711: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514718: e9 63 d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | CURRENT_P ROW : { : WindowDef *n = makeNode(WindowDef); 0.00 : 51471d: 48 8b 3d 3c 61 6a 00 mov 0x6a613c(%rip),%rdi # bba860 0.00 : 514724: be 48 00 00 00 mov $0x48,%esi 0.00 : 514729: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514730: e8 db 46 28 00 callq 798e10 0.00 : 514735: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; 0.00 : 51473b: c7 40 28 00 01 00 00 movl $0x100,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 514742: 49 89 c6 mov %rax,%r14 : } : | CURRENT_P ROW : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; : n->startOffset = NULL; 0.00 : 514745: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 51474c: 00 : n->endOffset = NULL; 0.00 : 51474d: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514754: 00 : $$ = n; : } : | a_expr PRECEDING 0.00 : 514755: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51475c: e9 1f d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | UNBOUNDED FOLLOWING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514761: 48 8b 3d f8 60 6a 00 mov 0x6a60f8(%rip),%rdi # bba860 0.00 : 514768: be 48 00 00 00 mov $0x48,%esi 0.00 : 51476d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514774: e8 97 46 28 00 callq 798e10 0.00 : 514779: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; 0.00 : 51477f: c7 40 28 40 00 00 00 movl $0x40,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 514786: 49 89 c6 mov %rax,%r14 : } : | UNBOUNDED FOLLOWING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; : n->startOffset = NULL; 0.00 : 514789: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 514790: 00 : n->endOffset = NULL; 0.00 : 514791: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514798: 00 : $$ = n; : } : | CURRENT_P ROW 0.00 : 514799: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5147a0: e9 db d1 ff ff jmpq 511980 : * invalid cases. : */ : frame_bound: : UNBOUNDED PRECEDING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 5147a5: 48 8b 3d b4 60 6a 00 mov 0x6a60b4(%rip),%rdi # bba860 0.00 : 5147ac: be 48 00 00 00 mov $0x48,%esi 0.00 : 5147b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5147b8: e8 53 46 28 00 callq 798e10 0.00 : 5147bd: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; 0.00 : 5147c3: c7 40 28 10 00 00 00 movl $0x10,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 5147ca: 49 89 c6 mov %rax,%r14 : frame_bound: : UNBOUNDED PRECEDING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; : n->startOffset = NULL; 0.00 : 5147cd: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 5147d4: 00 : n->endOffset = NULL; 0.00 : 5147d5: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 5147dc: 00 : $$ = n; : } : | UNBOUNDED FOLLOWING 0.00 : 5147dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5147e4: e9 97 d1 ff ff jmpq 511980 : n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; : $$ = n; : } : | BETWEEN frame_bound AND frame_bound : { : WindowDef *n1 = $2; 0.00 : 5147e9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5147f0: 48 8b 4e f0 mov -0x10(%rsi),%rcx : WindowDef *n2 = $4; 0.00 : 5147f4: 48 8b 36 mov (%rsi),%rsi : /* form merged options */ : int frameOptions = n1->frameOptions; 0.00 : 5147f7: 8b 51 28 mov 0x28(%rcx),%edx : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; : frameOptions |= FRAMEOPTION_BETWEEN; 0.00 : 5147fa: 8b 46 28 mov 0x28(%rsi),%eax : WindowDef *n1 = $2; : WindowDef *n2 = $4; : /* form merged options */ : int frameOptions = n1->frameOptions; : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; 0.00 : 5147fd: 83 ca 08 or $0x8,%edx : frameOptions |= FRAMEOPTION_BETWEEN; 0.00 : 514800: 01 c0 add %eax,%eax 0.00 : 514802: 09 c2 or %eax,%edx : /* reject invalid cases */ : if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) 0.00 : 514804: f6 c2 40 test $0x40,%dl 0.00 : 514807: 0f 85 9b 5c 01 00 jne 52a4a8 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@2))); : if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) 0.00 : 51480d: f6 c2 20 test $0x20,%dl 0.00 : 514810: 0f 85 ac 58 01 00 jne 52a0c2 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame end cannot be UNBOUNDED PRECEDING"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && 0.00 : 514816: 89 d0 mov %edx,%eax 0.00 : 514818: 25 00 09 00 00 and $0x900,%eax 0.00 : 51481d: 3d 00 09 00 00 cmp $0x900,%eax 0.00 : 514822: 0f 84 48 57 01 00 je 529f70 : (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from current row cannot have preceding rows"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && 0.00 : 514828: f6 c6 10 test $0x10,%dh 0.00 : 51482b: 74 09 je 514836 0.00 : 51482d: f6 c6 0a test $0xa,%dh 0.00 : 514830: 0f 85 0c 5c 01 00 jne 52a442 : FRAMEOPTION_END_CURRENT_ROW))) : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot have preceding rows"), : parser_errposition(@4))); : n1->frameOptions = frameOptions; 0.00 : 514836: 89 51 28 mov %edx,0x28(%rcx) : n1->endOffset = n2->startOffset; 0.00 : 514839: 48 8b 46 30 mov 0x30(%rsi),%rax : $$ = n1; 0.00 : 51483d: 49 89 ce mov %rcx,%r14 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot have preceding rows"), : parser_errposition(@4))); : n1->frameOptions = frameOptions; : n1->endOffset = n2->startOffset; 0.00 : 514840: 48 89 41 38 mov %rax,0x38(%rcx) : $$ = n1; : } : ; 0.00 : 514844: e9 37 d1 ff ff jmpq 511980 : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; : $$ = n; : } : | /*EMPTY*/ : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514849: 48 8b 3d 10 60 6a 00 mov 0x6a6010(%rip),%rdi # bba860 0.00 : 514850: be 48 00 00 00 mov $0x48,%esi 0.00 : 514855: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51485c: e8 af 45 28 00 callq 798e10 0.00 : 514861: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_DEFAULTS; 0.00 : 514867: c7 40 28 12 02 00 00 movl $0x212,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 51486e: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_DEFAULTS; : n->startOffset = NULL; 0.00 : 514871: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 514878: 00 : n->endOffset = NULL; 0.00 : 514879: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514880: 00 : $$ = n; : } : ; 0.00 : 514881: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514888: e9 f3 d0 ff ff jmpq 511980 : parser_errposition(@1))); : $$ = n; : } : | ROWS frame_extent : { : WindowDef *n = $2; 0.00 : 51488d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514894: 48 8b 06 mov (%rsi),%rax : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; 0.00 : 514897: 83 48 28 05 orl $0x5,0x28(%rax) : $$ = n; 0.00 : 51489b: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ 0.00 : 51489e: e9 dd d0 ff ff jmpq 511980 : } : ; : : frame_extent: frame_bound : { : WindowDef *n = $1; 0.00 : 5148a3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5148aa: 48 8b 02 mov (%rdx),%rax : /* reject invalid cases */ : if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) 0.00 : 5148ad: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 5148b0: f6 c2 40 test $0x40,%dl 0.00 : 5148b3: 0f 85 9c 5a 01 00 jne 52a355 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@1))); : if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) 0.00 : 5148b9: f6 c6 10 test $0x10,%dh 0.00 : 5148bc: 0f 85 54 58 01 00 jne 52a116 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot end with current row"), : parser_errposition(@1))); : n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; 0.00 : 5148c2: 80 ce 02 or $0x2,%dh : $$ = n; 0.00 : 5148c5: 49 89 c6 mov %rax,%r14 : if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot end with current row"), : parser_errposition(@1))); : n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; 0.00 : 5148c8: 89 50 28 mov %edx,0x28(%rax) : $$ = n; : } : | BETWEEN frame_bound AND frame_bound 0.00 : 5148cb: e9 b0 d0 ff ff jmpq 511980 : * We don't support yet. : */ : opt_frame_clause: : RANGE frame_extent : { : WindowDef *n = $2; 0.00 : 5148d0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5148d7: 48 8b 02 mov (%rdx),%rax : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; 0.00 : 5148da: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 5148dd: 83 ca 03 or $0x3,%edx : if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | 0.00 : 5148e0: f6 c6 0c test $0xc,%dh : */ : opt_frame_clause: : RANGE frame_extent : { : WindowDef *n = $2; : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; 0.00 : 5148e3: 89 50 28 mov %edx,0x28(%rax) : if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | 0.00 : 5148e6: 0f 85 14 5a 01 00 jne 52a300 : FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RANGE PRECEDING is only supported with UNBOUNDED"), : parser_errposition(@1))); : if (n->frameOptions & (FRAMEOPTION_START_VALUE_FOLLOWING | 0.00 : 5148ec: 80 e6 30 and $0x30,%dh 0.00 : 5148ef: 0f 85 cf 56 01 00 jne 529fc4 : FRAMEOPTION_END_VALUE_FOLLOWING)) : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RANGE FOLLOWING is only supported with UNBOUNDED"), : parser_errposition(@1))); : $$ = n; 0.00 : 5148f5: 49 89 c6 mov %rax,%r14 : } : | ROWS frame_extent 0.00 : 5148f8: e9 83 d0 ff ff jmpq 511980 : opt_existing_window_name: ColId { $$ = $1; } : | /*EMPTY*/ %prec Op { $$ = NULL; } : ; : : opt_partition_clause: PARTITION BY expr_list { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5148fd: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514900: e9 7b d0 ff ff jmpq 511980 : $$ = n; : } : ; : : over_clause: OVER window_specification : { $$ = $2; } 0.00 : 514905: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51490c: 4c 8b 30 mov (%rax),%r14 : | OVER ColId 0.00 : 51490f: e9 6c d0 ff ff jmpq 511980 : ; : : window_definition: : ColId AS window_specification : { : WindowDef *n = $3; 0.00 : 514914: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51491b: 48 8b 16 mov (%rsi),%rdx : n->name = $1; 0.00 : 51491e: 48 8b 46 f0 mov -0x10(%rsi),%rax : $$ = n; 0.00 : 514922: 49 89 d6 mov %rdx,%r14 : : window_definition: : ColId AS window_specification : { : WindowDef *n = $3; : n->name = $1; 0.00 : 514925: 48 89 42 08 mov %rax,0x8(%rdx) : $$ = n; : } : ; 0.00 : 514929: e9 52 d0 ff ff jmpq 511980 : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } : | window_definition_list ',' window_definition : { $$ = lappend($1, $3); } 0.00 : 51492e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514935: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 514939: 48 8b 33 mov (%rbx),%rsi 0.00 : 51493c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514943: e8 38 d5 0c 00 callq 5e1e80 : ; 0.00 : 514948: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } : | window_definition_list ',' window_definition : { $$ = lappend($1, $3); } 0.00 : 51494f: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514952: e9 29 d0 ff ff jmpq 511980 : WINDOW window_definition_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } 0.00 : 514957: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51495e: 31 f6 xor %esi,%esi 0.00 : 514960: 48 8b 39 mov (%rcx),%rdi 0.00 : 514963: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51496a: e8 e1 ce 0c 00 callq 5e1850 : | window_definition_list ',' window_definition 0.00 : 51496f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : WINDOW window_definition_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } 0.00 : 514976: 49 89 c6 mov %rax,%r14 : | window_definition_list ',' window_definition 0.00 : 514979: e9 02 d0 ff ff jmpq 511980 : /* : * Window Definitions : */ : window_clause: : WINDOW window_definition_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51497e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514981: e9 fa cf ff ff jmpq 511980 : : /* : * Window Definitions : */ : window_clause: : WINDOW window_definition_list { $$ = $2; } 0.00 : 514986: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51498d: 4c 8b 32 mov (%rdx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514990: e9 eb cf ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : filter_clause: : FILTER '(' WHERE a_expr ')' { $$ = $4; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 514995: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514998: e9 e3 cf ff ff jmpq 511980 : WITHIN GROUP_P '(' sort_clause ')' { $$ = $4; } : | /*EMPTY*/ { $$ = NIL; } : ; : : filter_clause: : FILTER '(' WHERE a_expr ')' { $$ = $4; } 0.00 : 51499d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5149a4: 4c 8b 70 f8 mov -0x8(%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5149a8: e9 d3 cf ff ff jmpq 511980 : * and giving the empty production here a slightly higher precedence, so : * that the shift/reduce conflict is resolved in favor of reducing the rule. : * These keywords are thus precluded from being an existing_window_name but : * are not reserved for any other purpose. : */ : opt_existing_window_name: ColId { $$ = $1; } 0.00 : 5149ad: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5149b4: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ %prec Op { $$ = NULL; } 0.00 : 5149b7: e9 c4 cf ff ff jmpq 511980 : ; : : window_specification: '(' opt_existing_window_name opt_partition_clause : opt_sort_clause opt_frame_clause ')' : { : WindowDef *n = makeNode(WindowDef); 0.00 : 5149bc: 48 8b 3d 9d 5e 6a 00 mov 0x6a5e9d(%rip),%rdi # bba860 0.00 : 5149c3: be 48 00 00 00 mov $0x48,%esi 0.00 : 5149c8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5149cf: e8 3c 44 28 00 callq 798e10 0.00 : 5149d4: c7 00 92 03 00 00 movl $0x392,(%rax) : n->name = NULL; 0.00 : 5149da: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5149e1: 00 : /* copy relevant fields of opt_frame_clause */ : n->frameOptions = $5->frameOptions; : n->startOffset = $5->startOffset; : n->endOffset = $5->endOffset; : n->location = @1; : $$ = n; 0.00 : 5149e2: 49 89 c6 mov %rax,%r14 : window_specification: '(' opt_existing_window_name opt_partition_clause : opt_sort_clause opt_frame_clause ')' : { : WindowDef *n = makeNode(WindowDef); : n->name = NULL; : n->refname = $2; 0.00 : 5149e5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5149ec: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 5149f0: 48 89 50 10 mov %rdx,0x10(%rax) : n->partitionClause = $3; 0.00 : 5149f4: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5149f8: 48 89 50 18 mov %rdx,0x18(%rax) : n->orderClause = $4; 0.00 : 5149fc: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 514a00: 48 89 50 20 mov %rdx,0x20(%rax) : /* copy relevant fields of opt_frame_clause */ : n->frameOptions = $5->frameOptions; 0.00 : 514a04: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 514a08: 8b 52 28 mov 0x28(%rdx),%edx 0.00 : 514a0b: 89 50 28 mov %edx,0x28(%rax) : n->startOffset = $5->startOffset; 0.00 : 514a0e: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 514a12: 48 8b 52 30 mov 0x30(%rdx),%rdx 0.00 : 514a16: 48 89 50 30 mov %rdx,0x30(%rax) : n->endOffset = $5->endOffset; 0.00 : 514a1a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 514a1e: 48 8b 52 38 mov 0x38(%rdx),%rdx 0.00 : 514a22: 48 89 50 38 mov %rdx,0x38(%rax) : n->location = @1; 0.00 : 514a26: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 514a2d: 8b 51 ec mov -0x14(%rcx),%edx 0.00 : 514a30: 89 50 40 mov %edx,0x40(%rax) : $$ = n; : } : ; 0.00 : 514a33: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514a3a: e9 41 cf ff ff jmpq 511980 : n->endOffset = NULL; : n->location = @2; : $$ = n; : } : | /*EMPTY*/ : { $$ = NULL; } 0.00 : 514a3f: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514a42: e9 39 cf ff ff jmpq 511980 : : over_clause: OVER window_specification : { $$ = $2; } : | OVER ColId : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514a47: 48 8b 3d 12 5e 6a 00 mov 0x6a5e12(%rip),%rdi # bba860 0.00 : 514a4e: be 48 00 00 00 mov $0x48,%esi 0.00 : 514a53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514a5a: e8 b1 43 28 00 callq 798e10 0.00 : 514a5f: c7 00 92 03 00 00 movl $0x392,(%rax) : n->name = $2; 0.00 : 514a65: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->orderClause = NIL; : n->frameOptions = FRAMEOPTION_DEFAULTS; : n->startOffset = NULL; : n->endOffset = NULL; : n->location = @2; : $$ = n; 0.00 : 514a6c: 49 89 c6 mov %rax,%r14 : over_clause: OVER window_specification : { $$ = $2; } : | OVER ColId : { : WindowDef *n = makeNode(WindowDef); : n->name = $2; 0.00 : 514a6f: 48 8b 11 mov (%rcx),%rdx : n->refname = NULL; 0.00 : 514a72: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 514a79: 00 : n->partitionClause = NIL; 0.00 : 514a7a: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 514a81: 00 : n->orderClause = NIL; 0.00 : 514a82: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 514a89: 00 : n->frameOptions = FRAMEOPTION_DEFAULTS; 0.00 : 514a8a: c7 40 28 12 02 00 00 movl $0x212,0x28(%rax) : n->startOffset = NULL; 0.00 : 514a91: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 514a98: 00 : over_clause: OVER window_specification : { $$ = $2; } : | OVER ColId : { : WindowDef *n = makeNode(WindowDef); : n->name = $2; 0.00 : 514a99: 48 89 50 08 mov %rdx,0x8(%rax) : n->refname = NULL; : n->partitionClause = NIL; : n->orderClause = NIL; : n->frameOptions = FRAMEOPTION_DEFAULTS; : n->startOffset = NULL; : n->endOffset = NULL; 0.00 : 514a9d: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514aa4: 00 : n->location = @2; 0.00 : 514aa5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 514aac: 8b 13 mov (%rbx),%edx 0.00 : 514aae: 89 50 40 mov %edx,0x40(%rax) : $$ = n; : } : | /*EMPTY*/ 0.00 : 514ab1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514ab8: e9 c3 ce ff ff jmpq 511980 : */ : opt_existing_window_name: ColId { $$ = $1; } : | /*EMPTY*/ %prec Op { $$ = NULL; } : ; : : opt_partition_clause: PARTITION BY expr_list { $$ = $3; } 0.00 : 514abd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514ac4: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514ac7: e9 b4 ce ff ff jmpq 511980 : * that the shift/reduce conflict is resolved in favor of reducing the rule. : * These keywords are thus precluded from being an existing_window_name but : * are not reserved for any other purpose. : */ : opt_existing_window_name: ColId { $$ = $1; } : | /*EMPTY*/ %prec Op { $$ = NULL; } 0.00 : 514acc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514acf: e9 ac ce ff ff jmpq 511980 : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514ad4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514adb: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 514adf: 48 8b 32 mov (%rdx),%rsi 0.00 : 514ae2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ae9: e8 92 d3 0c 00 callq 5e1e80 : ; 0.00 : 514aee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514af5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514af8: e9 83 ce ff ff jmpq 511980 : } : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } 0.00 : 514afd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514b04: 31 f6 xor %esi,%esi 0.00 : 514b06: 48 8b 38 mov (%rax),%rdi 0.00 : 514b09: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514b10: e8 3b cd 0c 00 callq 5e1850 : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514b15: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } 0.00 : 514b1c: 49 89 c6 mov %rax,%r14 : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514b1f: e9 5c ce ff ff jmpq 511980 : * - Implicit argument : * CASE a WHEN b THEN c ... ELSE d END : */ : case_expr: CASE case_arg when_clause_list case_default END_P : { : CaseExpr *c = makeNode(CaseExpr); 0.00 : 514b24: 48 8b 3d 35 5d 6a 00 mov 0x6a5d35(%rip),%rdi # bba860 0.00 : 514b2b: be 30 00 00 00 mov $0x30,%esi 0.00 : 514b30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514b37: e8 d4 42 28 00 callq 798e10 0.00 : 514b3c: c7 00 46 01 00 00 movl $0x146,(%rax) : c->casetype = InvalidOid; /* not analyzed yet */ 0.00 : 514b42: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : c->arg = (Expr *) $2; : c->args = $3; : c->defresult = (Expr *) $4; : c->location = @1; : $$ = (Node *)c; 0.00 : 514b49: 49 89 c6 mov %rax,%r14 : */ : case_expr: CASE case_arg when_clause_list case_default END_P : { : CaseExpr *c = makeNode(CaseExpr); : c->casetype = InvalidOid; /* not analyzed yet */ : c->arg = (Expr *) $2; 0.00 : 514b4c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514b53: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 514b57: 48 89 50 10 mov %rdx,0x10(%rax) : c->args = $3; 0.00 : 514b5b: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 514b5f: 48 89 50 18 mov %rdx,0x18(%rax) : c->defresult = (Expr *) $4; 0.00 : 514b63: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 514b67: 48 89 50 20 mov %rdx,0x20(%rax) : c->location = @1; 0.00 : 514b6b: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 514b72: 8b 53 f0 mov -0x10(%rbx),%edx 0.00 : 514b75: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)c; : } : ; 0.00 : 514b78: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514b7f: e9 fc cd ff ff jmpq 511980 : SubLink *n = makeNode(SubLink); : n->subselect = $1; : /* other fields will be filled later */ : $$ = (Node *)n; : } : | '(' expr_list ')' { $$ = (Node *)$2; } 0.00 : 514b84: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514b8b: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 514b8f: e9 ec cd ff ff jmpq 511980 : | expr_list { $$ = $1; } : ; : : in_expr: select_with_parens : { : SubLink *n = makeNode(SubLink); 0.00 : 514b94: 48 8b 3d c5 5c 6a 00 mov 0x6a5cc5(%rip),%rdi # bba860 0.00 : 514b9b: be 30 00 00 00 mov $0x30,%esi 0.00 : 514ba0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ba7: e8 64 42 28 00 callq 798e10 0.00 : 514bac: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subselect = $1; 0.00 : 514bb2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : /* other fields will be filled later */ : $$ = (Node *)n; 0.00 : 514bb9: 49 89 c6 mov %rax,%r14 : ; : : in_expr: select_with_parens : { : SubLink *n = makeNode(SubLink); : n->subselect = $1; 0.00 : 514bbc: 48 8b 13 mov (%rbx),%rdx 0.00 : 514bbf: 48 89 50 20 mov %rdx,0x20(%rax) : /* other fields will be filled later */ : $$ = (Node *)n; : } : | '(' expr_list ')' { $$ = (Node *)$2; } 0.00 : 514bc3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514bca: e9 b1 cd ff ff jmpq 511980 : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } : | FROM expr_list { $$ = $2; } : | expr_list { $$ = $1; } 0.00 : 514bcf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514bd6: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 514bd9: e9 a2 cd ff ff jmpq 511980 : : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } : | FROM expr_list { $$ = $2; } 0.00 : 514bde: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514be5: 4c 8b 32 mov (%rdx),%r14 : | expr_list { $$ = $1; } 0.00 : 514be8: e9 93 cd ff ff jmpq 511980 : ; : : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } 0.00 : 514bed: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514bf4: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 514bf8: 48 8b 38 mov (%rax),%rdi 0.00 : 514bfb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514c02: e8 79 d2 0c 00 callq 5e1e80 : | FROM expr_list { $$ = $2; } 0.00 : 514c07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } 0.00 : 514c0e: 49 89 c6 mov %rax,%r14 : | FROM expr_list { $$ = $2; } 0.00 : 514c11: e9 6a cd ff ff jmpq 511980 : : substr_from: : FROM a_expr { $$ = $2; } : ; : : substr_for: FOR a_expr { $$ = $2; } 0.00 : 514c16: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514c1d: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 514c20: e9 5b cd ff ff jmpq 511980 : | /*EMPTY*/ : { $$ = NIL; } : ; : : substr_from: : FROM a_expr { $$ = $2; } 0.00 : 514c25: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514c2c: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 514c2f: e9 4c cd ff ff jmpq 511980 : | expr_list : { : $$ = $1; : } : | /*EMPTY*/ : { $$ = NIL; } 0.00 : 514c34: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514c37: e9 44 cd ff ff jmpq 511980 : makeTypeCast($2, : SystemTypeName("int4"), -1)); : } : | expr_list : { : $$ = $1; 0.00 : 514c3c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514c43: 4c 8b 32 mov (%rdx),%r14 : } : | /*EMPTY*/ 0.00 : 514c46: e9 35 cd ff ff jmpq 511980 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c4b: bf d2 69 88 00 mov $0x8869d2,%edi 0.00 : 514c50: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514c57: e8 d4 bd ff ff callq 510a30 0.00 : 514c5c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c63: 48 8b 3d f6 5b 6a 00 mov 0x6a5bf6(%rip),%rdi # bba860 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c6a: 48 89 c3 mov %rax,%rbx 0.00 : 514c6d: 4c 8b 26 mov (%rsi),%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c70: be 20 00 00 00 mov $0x20,%esi 0.00 : 514c75: e8 96 41 28 00 callq 798e10 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c7a: 31 f6 xor %esi,%esi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c7c: 48 89 c7 mov %rax,%rdi : n->arg = arg; : n->typeName = typename; 0.00 : 514c7f: 48 89 58 10 mov %rbx,0x10(%rax) : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c83: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 514c89: 4c 89 60 08 mov %r12,0x8(%rax) : n->typeName = typename; : n->location = location; 0.00 : 514c8d: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c94: e8 b7 cb 0c 00 callq 5e1850 0.00 : 514c99: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 514c9e: 48 89 c3 mov %rax,%rbx 0.00 : 514ca1: bf 01 00 00 00 mov $0x1,%edi 0.00 : 514ca6: e8 65 bf ff ff callq 510c10 0.00 : 514cab: 48 89 de mov %rbx,%rsi 0.00 : 514cae: 48 89 c7 mov %rax,%rdi 0.00 : 514cb1: e8 9a cb 0c 00 callq 5e1850 0.00 : 514cb6: 48 89 c6 mov %rax,%rsi 0.00 : 514cb9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514cc0: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 514cc4: e8 87 cb 0c 00 callq 5e1850 : makeTypeCast($2, : SystemTypeName("int4"), -1)); : } : | expr_list 0.00 : 514cc9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514cd0: 49 89 c6 mov %rax,%r14 : makeTypeCast($2, : SystemTypeName("int4"), -1)); : } : | expr_list 0.00 : 514cd3: e9 a8 cc ff ff jmpq 511980 : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); : } : | a_expr substr_from : { : $$ = list_make2($1, $2); 0.00 : 514cd8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514cdf: 31 f6 xor %esi,%esi 0.00 : 514ce1: 48 8b 39 mov (%rcx),%rdi 0.00 : 514ce4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ceb: e8 60 cb 0c 00 callq 5e1850 0.00 : 514cf0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514cf7: 48 89 c6 mov %rax,%rsi 0.00 : 514cfa: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 514cfe: e8 4d cb 0c 00 callq 5e1850 : } : | a_expr substr_for 0.00 : 514d03: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); : } : | a_expr substr_from : { : $$ = list_make2($1, $2); 0.00 : 514d0a: 49 89 c6 mov %rax,%r14 : } : | a_expr substr_for 0.00 : 514d0d: e9 6e cc ff ff jmpq 511980 : $$ = list_make3($1, $2, $3); : } : | a_expr substr_for substr_from : { : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); 0.00 : 514d12: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514d19: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 514d1d: 31 f6 xor %esi,%esi 0.00 : 514d1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514d26: e8 25 cb 0c 00 callq 5e1850 0.00 : 514d2b: 48 89 c6 mov %rax,%rsi 0.00 : 514d2e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514d35: 48 8b 38 mov (%rax),%rdi 0.00 : 514d38: e8 13 cb 0c 00 callq 5e1850 0.00 : 514d3d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514d44: 48 89 c6 mov %rax,%rsi 0.00 : 514d47: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 514d4b: e8 00 cb 0c 00 callq 5e1850 : } : | a_expr substr_from 0.00 : 514d50: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make3($1, $2, $3); : } : | a_expr substr_for substr_from : { : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); 0.00 : 514d57: 49 89 c6 mov %rax,%r14 : } : | a_expr substr_from 0.00 : 514d5a: e9 21 cc ff ff jmpq 511980 : * processing. - thomas 2000-11-28 : */ : substr_list: : a_expr substr_from substr_for : { : $$ = list_make3($1, $2, $3); 0.00 : 514d5f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514d66: 31 f6 xor %esi,%esi 0.00 : 514d68: 48 8b 3a mov (%rdx),%rdi 0.00 : 514d6b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514d72: e8 d9 ca 0c 00 callq 5e1850 0.00 : 514d77: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514d7e: 48 89 c6 mov %rax,%rsi 0.00 : 514d81: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 514d85: e8 c6 ca 0c 00 callq 5e1850 0.00 : 514d8a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514d91: 48 89 c6 mov %rax,%rsi 0.00 : 514d94: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 514d98: e8 b3 ca 0c 00 callq 5e1850 : } : | a_expr substr_for substr_from 0.00 : 514d9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * processing. - thomas 2000-11-28 : */ : substr_list: : a_expr substr_from substr_for : { : $$ = list_make3($1, $2, $3); 0.00 : 514da4: 49 89 c6 mov %rax,%r14 : } : | a_expr substr_for substr_from 0.00 : 514da7: e9 d4 cb ff ff jmpq 511980 : : /* position_list uses b_expr not a_expr to avoid conflict with general IN */ : : position_list: : b_expr IN_P b_expr { $$ = list_make2($3, $1); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514dac: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514daf: e9 cc cb ff ff jmpq 511980 : ; : : /* position_list uses b_expr not a_expr to avoid conflict with general IN */ : : position_list: : b_expr IN_P b_expr { $$ = list_make2($3, $1); } 0.00 : 514db4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514dbb: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 514dbf: 31 f6 xor %esi,%esi 0.00 : 514dc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514dc8: e8 83 ca 0c 00 callq 5e1850 0.00 : 514dcd: 48 89 c6 mov %rax,%rsi 0.00 : 514dd0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514dd7: 48 8b 38 mov (%rax),%rdi 0.00 : 514dda: e8 71 ca 0c 00 callq 5e1850 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514ddf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* position_list uses b_expr not a_expr to avoid conflict with general IN */ : : position_list: : b_expr IN_P b_expr { $$ = list_make2($3, $1); } 0.00 : 514de6: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514de9: e9 92 cb ff ff jmpq 511980 : } : ; : : overlay_placing: : PLACING a_expr : { $$ = $2; } 0.00 : 514dee: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514df5: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 514df8: e9 83 cb ff ff jmpq 511980 : { : $$ = list_make4($1, $2, $3, $4); : } : | a_expr overlay_placing substr_from : { : $$ = list_make3($1, $2, $3); 0.00 : 514dfd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514e04: 31 f6 xor %esi,%esi 0.00 : 514e06: 48 8b 38 mov (%rax),%rdi 0.00 : 514e09: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514e10: e8 3b ca 0c 00 callq 5e1850 0.00 : 514e15: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514e1c: 48 89 c6 mov %rax,%rsi 0.00 : 514e1f: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 514e23: e8 28 ca 0c 00 callq 5e1850 0.00 : 514e28: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514e2f: 48 89 c6 mov %rax,%rsi 0.00 : 514e32: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 514e36: e8 15 ca 0c 00 callq 5e1850 : } : ; 0.00 : 514e3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make4($1, $2, $3, $4); : } : | a_expr overlay_placing substr_from : { : $$ = list_make3($1, $2, $3); 0.00 : 514e42: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 514e45: e9 36 cb ff ff jmpq 511980 : * and similarly for binary strings : */ : overlay_list: : a_expr overlay_placing substr_from substr_for : { : $$ = list_make4($1, $2, $3, $4); 0.00 : 514e4a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514e51: 31 f6 xor %esi,%esi 0.00 : 514e53: 48 8b 3b mov (%rbx),%rdi 0.00 : 514e56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514e5d: e8 ee c9 0c 00 callq 5e1850 0.00 : 514e62: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 514e66: 48 89 c6 mov %rax,%rsi 0.00 : 514e69: e8 e2 c9 0c 00 callq 5e1850 0.00 : 514e6e: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 514e72: 48 89 c6 mov %rax,%rsi 0.00 : 514e75: e8 d6 c9 0c 00 callq 5e1850 0.00 : 514e7a: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 514e7e: 48 89 c6 mov %rax,%rsi 0.00 : 514e81: e8 ca c9 0c 00 callq 5e1850 : } : | a_expr overlay_placing substr_from 0.00 : 514e86: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * and similarly for binary strings : */ : overlay_list: : a_expr overlay_placing substr_from substr_for : { : $$ = list_make4($1, $2, $3, $4); 0.00 : 514e8d: 49 89 c6 mov %rax,%r14 : } : | a_expr overlay_placing substr_from 0.00 : 514e90: e9 eb ca ff ff jmpq 511980 : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } : | MINUTE_P { $$ = "minute"; } : | SECOND_P { $$ = "second"; } : | Sconst { $$ = $1; } 0.00 : 514e95: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514e9c: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 514e9f: e9 dc ca ff ff jmpq 511980 : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } : | MINUTE_P { $$ = "minute"; } : | SECOND_P { $$ = "second"; } 0.00 : 514ea4: 41 be bc 94 8c 00 mov $0x8c94bc,%r14d : | Sconst { $$ = $1; } 0.00 : 514eaa: e9 d1 ca ff ff jmpq 511980 : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } : | MINUTE_P { $$ = "minute"; } 0.00 : 514eaf: 41 be 9a 94 8c 00 mov $0x8c949a,%r14d : | SECOND_P { $$ = "second"; } 0.00 : 514eb5: e9 c6 ca ff ff jmpq 511980 : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } 0.00 : 514eba: 41 be 6e 94 8c 00 mov $0x8c946e,%r14d : | MINUTE_P { $$ = "minute"; } 0.00 : 514ec0: e9 bb ca ff ff jmpq 511980 : */ : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } 0.00 : 514ec5: 41 be 53 94 8c 00 mov $0x8c9453,%r14d : | HOUR_P { $$ = "hour"; } 0.00 : 514ecb: e9 b0 ca ff ff jmpq 511980 : * - thomas 2001-04-12 : */ : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } 0.00 : 514ed0: 41 be 60 94 8c 00 mov $0x8c9460,%r14d : | DAY_P { $$ = "day"; } 0.00 : 514ed6: e9 a5 ca ff ff jmpq 511980 : /* Allow delimited string Sconst in extract_arg as an SQL extension. : * - thomas 2001-04-12 : */ : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } 0.00 : 514edb: 41 be e2 94 8c 00 mov $0x8c94e2,%r14d : | MONTH_P { $$ = "month"; } 0.00 : 514ee1: e9 9a ca ff ff jmpq 511980 : : /* Allow delimited string Sconst in extract_arg as an SQL extension. : * - thomas 2001-04-12 : */ : extract_arg: : IDENT { $$ = $1; } 0.00 : 514ee6: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514eed: 4c 8b 32 mov (%rdx),%r14 : | YEAR_P { $$ = "year"; } 0.00 : 514ef0: e9 8b ca ff ff jmpq 511980 : extract_list: : extract_arg FROM a_expr : { : $$ = list_make2(makeStringConst($1, @1), $3); : } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514ef5: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514ef8: e9 83 ca ff ff jmpq 511980 : : : extract_list: : extract_arg FROM a_expr : { : $$ = list_make2(makeStringConst($1, @1), $3); 0.00 : 514efd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514f04: 31 f6 xor %esi,%esi 0.00 : 514f06: 48 8b 3a mov (%rdx),%rdi 0.00 : 514f09: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514f10: e8 3b c9 0c 00 callq 5e1850 0.00 : 514f15: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 514f1c: 48 89 c3 mov %rax,%rbx 0.00 : 514f1f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514f26: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 514f29: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 514f2d: e8 3e bc ff ff callq 510b70 0.00 : 514f32: 48 89 de mov %rbx,%rsi 0.00 : 514f35: 48 89 c7 mov %rax,%rdi 0.00 : 514f38: e8 13 c9 0c 00 callq 5e1850 : } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514f3d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : : extract_list: : extract_arg FROM a_expr : { : $$ = list_make2(makeStringConst($1, @1), $3); 0.00 : 514f44: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514f47: e9 34 ca ff ff jmpq 511980 : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 514f4c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514f53: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 514f57: 48 8b 36 mov (%rsi),%rsi 0.00 : 514f5a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514f61: e8 1a cf 0c 00 callq 5e1e80 : ; 0.00 : 514f66: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 514f6d: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514f70: e9 0b ca ff ff jmpq 511980 : * are the same as "a_expr" and "row" except that DEFAULT can appear at : * the top level. : */ : : ctext_expr: : a_expr { $$ = (Node *) $1; } 0.00 : 514f75: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514f7c: 4c 8b 33 mov (%rbx),%r14 : | DEFAULT 0.00 : 514f7f: e9 fc c9 ff ff jmpq 511980 : | indirection indirection_el { $$ = lappend($1, $2); } : ; : : opt_indirection: : /*EMPTY*/ { $$ = NIL; } : | opt_indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514f84: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514f8b: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 514f8f: 48 8b 31 mov (%rcx),%rsi 0.00 : 514f92: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514f99: e8 e2 ce 0c 00 callq 5e1e80 : ; 0.00 : 514f9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | indirection indirection_el { $$ = lappend($1, $2); } : ; : : opt_indirection: : /*EMPTY*/ { $$ = NIL; } : | opt_indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fa5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514fa8: e9 d3 c9 ff ff jmpq 511980 : indirection_el { $$ = list_make1($1); } : | indirection indirection_el { $$ = lappend($1, $2); } : ; : : opt_indirection: : /*EMPTY*/ { $$ = NIL; } 0.00 : 514fad: 45 31 f6 xor %r14d,%r14d : | opt_indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fb0: e9 cb c9 ff ff jmpq 511980 : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fb5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514fbc: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 514fc0: 48 8b 32 mov (%rdx),%rsi 0.00 : 514fc3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514fca: e8 b1 ce 0c 00 callq 5e1e80 : ; 0.00 : 514fcf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fd6: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514fd9: e9 a2 c9 ff ff jmpq 511980 : $$ = (Node *) ai; : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } 0.00 : 514fde: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514fe5: 31 f6 xor %esi,%esi 0.00 : 514fe7: 48 8b 38 mov (%rax),%rdi 0.00 : 514fea: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ff1: e8 5a c8 0c 00 callq 5e1850 : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514ff6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) ai; : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } 0.00 : 514ffd: 49 89 c6 mov %rax,%r14 : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 515000: e9 7b c9 ff ff jmpq 511980 : ai->uidx = $2; : $$ = (Node *) ai; : } : | '[' a_expr ':' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); 0.00 : 515005: 48 8b 3d 54 58 6a 00 mov 0x6a5854(%rip),%rdi # bba860 0.00 : 51500c: be 18 00 00 00 mov $0x18,%esi 0.00 : 515011: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515018: e8 f3 3d 28 00 callq 798e10 0.00 : 51501d: c7 00 8a 03 00 00 movl $0x38a,(%rax) : ai->lidx = $2; 0.00 : 515023: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : ai->uidx = $4; : $$ = (Node *) ai; 0.00 : 51502a: 49 89 c6 mov %rax,%r14 : $$ = (Node *) ai; : } : | '[' a_expr ':' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); : ai->lidx = $2; 0.00 : 51502d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 515031: 48 89 50 08 mov %rdx,0x8(%rax) : ai->uidx = $4; 0.00 : 515035: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 515039: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) ai; : } : ; 0.00 : 51503d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515044: e9 37 c9 ff ff jmpq 511980 : { : $$ = (Node *) makeNode(A_Star); : } : | '[' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); 0.00 : 515049: 48 8b 3d 10 58 6a 00 mov 0x6a5810(%rip),%rdi # bba860 0.00 : 515050: be 18 00 00 00 mov $0x18,%esi 0.00 : 515055: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51505c: e8 af 3d 28 00 callq 798e10 0.00 : 515061: c7 00 8a 03 00 00 movl $0x38a,(%rax) : ai->lidx = NULL; 0.00 : 515067: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51506e: 00 : ai->uidx = $2; : $$ = (Node *) ai; 0.00 : 51506f: 49 89 c6 mov %rax,%r14 : } : | '[' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); : ai->lidx = NULL; : ai->uidx = $2; 0.00 : 515072: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515079: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51507d: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) ai; : } : | '[' a_expr ':' a_expr ']' 0.00 : 515081: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515088: e9 f3 c8 ff ff jmpq 511980 : { : $$ = (Node *) makeString($2); : } : | '.' '*' : { : $$ = (Node *) makeNode(A_Star); 0.00 : 51508d: 48 8b 3d cc 57 6a 00 mov 0x6a57cc(%rip),%rdi # bba860 0.00 : 515094: be 04 00 00 00 mov $0x4,%esi 0.00 : 515099: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5150a0: e8 7b 3f 28 00 callq 799020 0.00 : 5150a5: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 5150ab: 49 89 c6 mov %rax,%r14 : } : | '[' a_expr ']' 0.00 : 5150ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5150b5: e9 c6 c8 ff ff jmpq 511980 : ; : : indirection_el: : '.' attr_name : { : $$ = (Node *) makeString($2); 0.00 : 5150ba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5150c1: 48 8b 3e mov (%rsi),%rdi 0.00 : 5150c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5150cb: e8 20 a6 0e 00 callq 5ff6f0 : } : | '.' '*' 0.00 : 5150d0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : indirection_el: : '.' attr_name : { : $$ = (Node *) makeString($2); 0.00 : 5150d7: 49 89 c6 mov %rax,%r14 : } : | '.' '*' 0.00 : 5150da: e9 a1 c8 ff ff jmpq 511980 : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); : } : | ColId indirection : { : $$ = makeColumnRef($1, $2, @1, yyscanner); 0.00 : 5150df: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5150e6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5150ed: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 5150f0: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 5150f4: 48 8b 33 mov (%rbx),%rsi 0.00 : 5150f7: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 5150fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515105: e8 c6 c2 ff ff callq 5113d0 : } : ; 0.00 : 51510a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); : } : | ColId indirection : { : $$ = makeColumnRef($1, $2, @1, yyscanner); 0.00 : 515111: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 515114: e9 67 c8 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : columnref: ColId : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); 0.00 : 515119: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515120: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515127: 31 f6 xor %esi,%esi 0.00 : 515129: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 515130: 8b 13 mov (%rbx),%edx 0.00 : 515132: 48 8b 38 mov (%rax),%rdi 0.00 : 515135: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51513c: e8 8f c2 ff ff callq 5113d0 : } : | ColId indirection 0.00 : 515141: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NULL; } : ; : : columnref: ColId : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); 0.00 : 515148: 49 89 c6 mov %rax,%r14 : } : | ColId indirection 0.00 : 51514b: e9 30 c8 ff ff jmpq 511980 : ELSE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : case_arg: a_expr { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515150: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 515153: e9 28 c8 ff ff jmpq 511980 : case_default: : ELSE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : case_arg: a_expr { $$ = $1; } 0.00 : 515158: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51515f: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515162: e9 19 c8 ff ff jmpq 511980 : } : ; : : case_default: : ELSE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515167: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51516a: e9 11 c8 ff ff jmpq 511980 : $$ = (Node *)w; : } : ; : : case_default: : ELSE a_expr { $$ = $2; } 0.00 : 51516f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 515176: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515179: e9 02 c8 ff ff jmpq 511980 : ; : : when_clause: : WHEN a_expr THEN a_expr : { : CaseWhen *w = makeNode(CaseWhen); 0.00 : 51517e: 48 8b 3d db 56 6a 00 mov 0x6a56db(%rip),%rdi # bba860 0.00 : 515185: be 20 00 00 00 mov $0x20,%esi 0.00 : 51518a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515191: e8 7a 3c 28 00 callq 798e10 0.00 : 515196: c7 00 47 01 00 00 movl $0x147,(%rax) : w->expr = (Expr *) $2; 0.00 : 51519c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : w->result = (Expr *) $4; : w->location = @1; : $$ = (Node *)w; 0.00 : 5151a3: 49 89 c6 mov %rax,%r14 : : when_clause: : WHEN a_expr THEN a_expr : { : CaseWhen *w = makeNode(CaseWhen); : w->expr = (Expr *) $2; 0.00 : 5151a6: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5151aa: 48 89 50 08 mov %rdx,0x8(%rax) : w->result = (Expr *) $4; 0.00 : 5151ae: 48 8b 11 mov (%rcx),%rdx 0.00 : 5151b1: 48 89 50 10 mov %rdx,0x10(%rax) : w->location = @1; 0.00 : 5151b5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5151bc: 8b 53 f4 mov -0xc(%rbx),%edx 0.00 : 5151bf: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)w; : } : ; 0.00 : 5151c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5151c9: e9 b2 c7 ff ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 5151ce: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5151d5: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5151d9: 48 8b 32 mov (%rdx),%rsi 0.00 : 5151dc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5151e3: e8 98 cc 0c 00 callq 5e1e80 : ; 0.00 : 5151e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 5151ef: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5151f2: e9 89 c7 ff ff jmpq 511980 : opt_target_list: target_list { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } 0.00 : 5151f7: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5151fe: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.y:12709 9.09 : 515200: 48 8b 38 mov (%rax),%rdi 0.00 : 515203: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51520a: e8 41 c6 0c 00 callq 5e1850 : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 51520f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_target_list: target_list { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } 0.00 : 515216: 49 89 c6 mov %rax,%r14 : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 515219: e9 62 c7 ff ff jmpq 511980 : * target list for SELECT : * : *****************************************************************************/ : : opt_target_list: target_list { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51521e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 515221: e9 5a c7 ff ff jmpq 511980 : * : * target list for SELECT : * : *****************************************************************************/ : : opt_target_list: target_list { $$ = $1; } 0.00 : 515226: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51522d: 4c 8b 33 mov (%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 515230: e9 4b c7 ff ff jmpq 511980 : /* : * We should allow ROW '(' ctext_expr_list ')' too, but that seems to require : * making VALUES a fully reserved word, which will probably break more apps : * than allowing the noise-word is worth. : */ : ctext_row: '(' ctext_expr_list ')' { $$ = $2; } 0.00 : 515235: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51523c: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 515240: e9 3b c7 ff ff jmpq 511980 : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515245: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51524c: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 515250: 48 8b 32 mov (%rdx),%rsi 0.00 : 515253: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51525a: e8 21 cc 0c 00 callq 5e1e80 : ; 0.00 : 51525f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515266: 49 89 c6 mov %rax,%r14 : ; 0.00 : 515269: e9 12 c7 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } 0.00 : 51526e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515275: 31 f6 xor %esi,%esi 0.00 : 515277: 48 8b 38 mov (%rax),%rdi 0.00 : 51527a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515281: e8 ca c5 0c 00 callq 5e1850 : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515286: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } 0.00 : 51528d: 49 89 c6 mov %rax,%r14 : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515290: e9 eb c6 ff ff jmpq 511980 : : ctext_expr: : a_expr { $$ = (Node *) $1; } : | DEFAULT : { : SetToDefault *n = makeNode(SetToDefault); 0.00 : 515295: 48 8b 3d c4 55 6a 00 mov 0x6a55c4(%rip),%rdi # bba860 0.00 : 51529c: be 14 00 00 00 mov $0x14,%esi 0.00 : 5152a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5152a8: e8 73 3d 28 00 callq 799020 0.00 : 5152ad: c7 00 53 01 00 00 movl $0x153,(%rax) : n->location = @1; 0.00 : 5152b3: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : $$ = (Node *) n; 0.00 : 5152ba: 49 89 c6 mov %rax,%r14 : ctext_expr: : a_expr { $$ = (Node *) $1; } : | DEFAULT : { : SetToDefault *n = makeNode(SetToDefault); : n->location = @1; 0.00 : 5152bd: 8b 16 mov (%rsi),%edx 0.00 : 5152bf: 89 50 10 mov %edx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5152c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5152c9: e9 b2 c6 ff ff jmpq 511980 : $$->val = (Node *)$1; : $$->location = @1; : } : | '*' : { : ColumnRef *n = makeNode(ColumnRef); 0.00 : 5152ce: 48 8b 3d 8b 55 6a 00 mov 0x6a558b(%rip),%rdi # bba860 0.00 : 5152d5: be 18 00 00 00 mov $0x18,%esi 0.00 : 5152da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5152e1: e8 2a 3b 28 00 callq 798e10 0.00 : 5152e6: c7 00 85 03 00 00 movl $0x385,(%rax) : n->fields = list_make1(makeNode(A_Star)); 0.00 : 5152ec: 48 8b 3d 6d 55 6a 00 mov 0x6a556d(%rip),%rdi # bba860 0.00 : 5152f3: be 04 00 00 00 mov $0x4,%esi : $$->val = (Node *)$1; : $$->location = @1; : } : | '*' : { : ColumnRef *n = makeNode(ColumnRef); 0.00 : 5152f8: 48 89 c3 mov %rax,%rbx : n->fields = list_make1(makeNode(A_Star)); 0.00 : 5152fb: e8 20 3d 28 00 callq 799020 0.00 : 515300: 31 f6 xor %esi,%esi 0.00 : 515302: 48 89 c7 mov %rax,%rdi 0.00 : 515305: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 51530b: e8 40 c5 0c 00 callq 5e1850 0.00 : 515310: 48 89 43 08 mov %rax,0x8(%rbx) : n->location = @1; 0.00 : 515314: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51531b: 8b 06 mov (%rsi),%eax : : $$ = makeNode(ResTarget); 0.00 : 51531d: be 28 00 00 00 mov $0x28,%esi : } : | '*' : { : ColumnRef *n = makeNode(ColumnRef); : n->fields = list_make1(makeNode(A_Star)); : n->location = @1; 0.00 : 515322: 89 43 10 mov %eax,0x10(%rbx) : : $$ = makeNode(ResTarget); 0.00 : 515325: 48 8b 3d 34 55 6a 00 mov 0x6a5534(%rip),%rdi # bba860 0.00 : 51532c: e8 df 3a 28 00 callq 798e10 0.00 : 515331: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = NULL; 0.00 : 515337: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51533e: 00 : { : ColumnRef *n = makeNode(ColumnRef); : n->fields = list_make1(makeNode(A_Star)); : n->location = @1; : : $$ = makeNode(ResTarget); 0.00 : 51533f: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->indirection = NIL; 0.00 : 515342: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 515349: 00 : $$->val = (Node *)n; 0.00 : 51534a: 48 89 58 18 mov %rbx,0x18(%rax) : $$->location = @1; 0.00 : 51534e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 515355: 8b 02 mov (%rdx),%eax 0.00 : 515357: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 51535b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515362: e9 19 c6 ff ff jmpq 511980 : $$->val = (Node *)$1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 515367: 48 8b 3d f2 54 6a 00 mov 0x6a54f2(%rip),%rdi # bba860 0.00 : 51536e: be 28 00 00 00 mov $0x28,%esi 0.00 : 515373: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51537a: e8 91 3a 28 00 callq 798e10 0.00 : 51537f: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = NULL; 0.00 : 515385: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51538c: 00 : $$->val = (Node *)$1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 51538d: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->indirection = NIL; 0.00 : 515390: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 515397: 00 : $$->val = (Node *)$1; 0.00 : 515398: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51539f: 48 8b 01 mov (%rcx),%rax 0.00 : 5153a2: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5153a6: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5153ad: 8b 03 mov (%rbx),%eax 0.00 : 5153af: 41 89 46 20 mov %eax,0x20(%r14) : } : | '*' 0.00 : 5153b3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5153ba: e9 c1 c5 ff ff jmpq 511980 : * as an infix expression, which we accomplish by assigning : * IDENT a precedence higher than POSTFIXOP. : */ : | a_expr IDENT : { : $$ = makeNode(ResTarget); 0.00 : 5153bf: 48 8b 3d 9a 54 6a 00 mov 0x6a549a(%rip),%rdi # bba860 0.00 : 5153c6: be 28 00 00 00 mov $0x28,%esi 0.00 : 5153cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5153d2: e8 39 3a 28 00 callq 798e10 0.00 : 5153d7: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $2; 0.00 : 5153dd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : * as an infix expression, which we accomplish by assigning : * IDENT a precedence higher than POSTFIXOP. : */ : | a_expr IDENT : { : $$ = makeNode(ResTarget); 0.00 : 5153e4: 49 89 c6 mov %rax,%r14 : $$->name = $2; 0.00 : 5153e7: 48 8b 06 mov (%rsi),%rax : $$->indirection = NIL; 0.00 : 5153ea: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 5153f1: 00 : * IDENT a precedence higher than POSTFIXOP. : */ : | a_expr IDENT : { : $$ = makeNode(ResTarget); : $$->name = $2; 0.00 : 5153f2: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = NIL; : $$->val = (Node *)$1; 0.00 : 5153f6: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 5153fa: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5153fe: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 515405: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 515408: 41 89 46 20 mov %eax,0x20(%r14) : } : | a_expr 0.00 : 51540c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515413: e9 68 c5 ff ff jmpq 511980 : | target_list ',' target_el { $$ = lappend($1, $3); } : ; : : target_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 515418: 48 8b 3d 41 54 6a 00 mov 0x6a5441(%rip),%rdi # bba860 0.00 : 51541f: be 28 00 00 00 mov $0x28,%esi 0.00 : 515424: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51542b: e8 e0 39 28 00 callq 798e10 0.00 : 515430: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $3; 0.00 : 515436: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : | target_list ',' target_el { $$ = lappend($1, $3); } : ; : : target_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 51543d: 49 89 c6 mov %rax,%r14 : $$->name = $3; 0.00 : 515440: 48 8b 01 mov (%rcx),%rax : $$->indirection = NIL; 0.00 : 515443: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 51544a: 00 : ; : : target_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); : $$->name = $3; 0.00 : 51544b: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = NIL; : $$->val = (Node *)$1; 0.00 : 51544f: 48 8b 41 f0 mov -0x10(%rcx),%rax 0.00 : 515453: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 515457: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51545e: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 515461: 41 89 46 20 mov %eax,0x20(%r14) : } : /* 0.00 : 515465: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51546c: e9 0f c5 ff ff jmpq 511980 : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 515471: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515478: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51547c: 48 8b 33 mov (%rbx),%rsi 0.00 : 51547f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515486: e8 f5 c9 0c 00 callq 5e1e80 : ; 0.00 : 51548b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 515492: 49 89 c6 mov %rax,%r14 : ; 0.00 : 515495: e9 e6 c4 ff ff jmpq 511980 : * Names and constants : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } 0.00 : 51549a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5154a1: 31 f6 xor %esi,%esi 0.00 : 5154a3: 48 8b 39 mov (%rcx),%rdi 0.00 : 5154a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5154ad: e8 9e c3 0c 00 callq 5e1850 : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 5154b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Names and constants : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } 0.00 : 5154b9: 49 89 c6 mov %rax,%r14 : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 5154bc: e9 bf c4 ff ff jmpq 511980 : b->booltesttype = IS_TRUE; : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 5154c1: 48 8b 3d 98 53 6a 00 mov 0x6a5398(%rip),%rdi # bba860 0.00 : 5154c8: be 18 00 00 00 mov $0x18,%esi 0.00 : 5154cd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5154d4: e8 37 39 28 00 callq 798e10 0.00 : 5154d9: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 5154df: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : b->booltesttype = IS_NOT_TRUE; : $$ = (Node *)b; 0.00 : 5154e6: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5154e9: 48 8b 56 e8 mov -0x18(%rsi),%rdx : b->booltesttype = IS_NOT_TRUE; 0.00 : 5154ed: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5154f4: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_NOT_TRUE; : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS 0.00 : 5154f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5154ff: e9 7c c4 ff ff jmpq 511980 : list_concat($1, $3), : @2); : } : | a_expr IS TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 515504: 48 8b 3d 55 53 6a 00 mov 0x6a5355(%rip),%rdi # bba860 0.00 : 51550b: be 18 00 00 00 mov $0x18,%esi 0.00 : 515510: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515517: e8 f4 38 28 00 callq 798e10 0.00 : 51551c: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 515522: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : b->booltesttype = IS_TRUE; : $$ = (Node *)b; 0.00 : 515529: 49 89 c6 mov %rax,%r14 : @2); : } : | a_expr IS TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 51552c: 48 8b 53 f0 mov -0x10(%rbx),%rdx : b->booltesttype = IS_TRUE; 0.00 : 515530: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : @2); : } : | a_expr IS TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 515537: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_TRUE; : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS 0.00 : 51553b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515542: e9 39 c4 ff ff jmpq 511980 : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | row OVERLAPS row : { : if (list_length($1) != 2) 0.00 : 515547: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51554e: 48 8b 7b f0 mov -0x10(%rbx),%rdi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 515552: 48 85 ff test %rdi,%rdi 0.00 : 515555: 0f 84 3a 4c 01 00 je 52a195 0.00 : 51555b: 83 7f 04 02 cmpl $0x2,0x4(%rdi) 0.00 : 51555f: 0f 85 30 4c 01 00 jne 52a195 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on left side of OVERLAPS expression"), : parser_errposition(@1))); : if (list_length($3) != 2) 0.00 : 515565: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51556c: 48 8b 30 mov (%rax),%rsi 0.00 : 51556f: 48 85 f6 test %rsi,%rsi 0.00 : 515572: 0f 84 a4 49 01 00 je 529f1c 0.00 : 515578: 83 7e 04 02 cmpl $0x2,0x4(%rsi) 0.00 : 51557c: 0f 85 9a 49 01 00 jne 529f1c : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on right side of OVERLAPS expression"), : parser_errposition(@3))); : $$ = (Node *) makeFuncCall(SystemFuncName("overlaps"), 0.00 : 515582: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515589: 44 8b 61 fc mov -0x4(%rcx),%r12d 0.00 : 51558d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515594: e8 27 d0 0c 00 callq 5e25c0 0.00 : 515599: bf 6e a0 8e 00 mov $0x8ea06e,%edi 0.00 : 51559e: 48 89 c3 mov %rax,%rbx 0.00 : 5155a1: e8 4a b4 ff ff callq 5109f0 0.00 : 5155a6: 44 89 e2 mov %r12d,%edx 0.00 : 5155a9: 48 89 c7 mov %rax,%rdi 0.00 : 5155ac: 48 89 de mov %rbx,%rsi 0.00 : 5155af: e8 6c be 0d 00 callq 5f1420 : list_concat($1, $3), : @2); : } : | a_expr IS TRUE_P %prec IS 0.00 : 5155b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if (list_length($3) != 2) : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on right side of OVERLAPS expression"), : parser_errposition(@3))); : $$ = (Node *) makeFuncCall(SystemFuncName("overlaps"), 0.00 : 5155bb: 49 89 c6 mov %rax,%r14 : list_concat($1, $3), : @2); : } : | a_expr IS TRUE_P %prec IS 0.00 : 5155be: e9 bd c3 ff ff jmpq 511980 : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | a_expr NOTNULL : { : NullTest *n = makeNode(NullTest); 0.00 : 5155c3: 48 8b 3d 96 52 6a 00 mov 0x6a5296(%rip),%rdi # bba860 0.00 : 5155ca: be 18 00 00 00 mov $0x18,%esi 0.00 : 5155cf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5155d6: e8 35 38 28 00 callq 798e10 0.00 : 5155db: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 5155e1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; 0.00 : 5155e8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | a_expr NOTNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5155eb: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->nulltesttype = IS_NOT_NULL; 0.00 : 5155ef: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)n; : } : | a_expr NOTNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5155f6: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | row OVERLAPS row 0.00 : 5155fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515601: e9 7a c3 ff ff jmpq 511980 : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); 0.00 : 515606: 48 8b 3d 53 52 6a 00 mov 0x6a5253(%rip),%rdi # bba860 0.00 : 51560d: be 18 00 00 00 mov $0x18,%esi 0.00 : 515612: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515619: e8 f2 37 28 00 callq 798e10 0.00 : 51561e: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 515624: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; 0.00 : 51562b: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 51562e: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->nulltesttype = IS_NOT_NULL; 0.00 : 515632: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 515639: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | a_expr NOTNULL 0.00 : 51563d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515644: e9 37 c3 ff ff jmpq 511980 : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr ISNULL : { : NullTest *n = makeNode(NullTest); 0.00 : 515649: 48 8b 3d 10 52 6a 00 mov 0x6a5210(%rip),%rdi # bba860 0.00 : 515650: be 18 00 00 00 mov $0x18,%esi 0.00 : 515655: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51565c: e8 af 37 28 00 callq 798e10 0.00 : 515661: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 515667: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->nulltesttype = IS_NULL; : $$ = (Node *)n; 0.00 : 51566e: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | a_expr ISNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 515671: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->nulltesttype = IS_NULL; 0.00 : 515675: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : $$ = (Node *)n; : } : | a_expr ISNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 51567c: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS 0.00 : 515680: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515687: e9 f4 c2 ff ff jmpq 511980 : * a ISNULL : * a NOTNULL : */ : | a_expr IS NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); 0.00 : 51568c: 48 8b 3d cd 51 6a 00 mov 0x6a51cd(%rip),%rdi # bba860 0.00 : 515693: be 18 00 00 00 mov $0x18,%esi 0.00 : 515698: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51569f: e8 6c 37 28 00 callq 798e10 0.00 : 5156a4: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 5156aa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->nulltesttype = IS_NULL; : $$ = (Node *)n; 0.00 : 5156b1: 49 89 c6 mov %rax,%r14 : * a NOTNULL : */ : | a_expr IS NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5156b4: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->nulltesttype = IS_NULL; 0.00 : 5156b8: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : * a NOTNULL : */ : | a_expr IS NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5156bf: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr ISNULL 0.00 : 5156c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5156ca: e9 b1 c2 ff ff jmpq 511980 : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, $7), : @2); 0.00 : 5156cf: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5156d6: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5156dd: 31 f6 xor %esi,%esi 0.00 : 5156df: 48 8b 3a mov (%rdx),%rdi 0.00 : 5156e2: 44 8b 60 ec mov -0x14(%rax),%r12d 0.00 : 5156e6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5156ed: e8 5e c1 0c 00 callq 5e1850 0.00 : 5156f2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5156f9: 48 89 c6 mov %rax,%rsi 0.00 : 5156fc: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 515700: e8 4b c1 0c 00 callq 5e1850 0.00 : 515705: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 51570a: 48 89 c3 mov %rax,%rbx 0.00 : 51570d: e8 de b2 ff ff callq 5109f0 0.00 : 515712: 48 89 de mov %rbx,%rsi 0.00 : 515715: 48 89 c7 mov %rax,%rdi 0.00 : 515718: 44 89 e2 mov %r12d,%edx 0.00 : 51571b: e8 00 bd 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 515720: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515727: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, $7), : @2); 0.00 : 51572e: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 515731: 31 ff xor %edi,%edi 0.00 : 515733: 44 8b 46 ec mov -0x14(%rsi),%r8d 0.00 : 515737: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 51573b: be 41 97 7c 00 mov $0x7c9741,%esi 0.00 : 515740: e8 2b c3 0d 00 callq 5f1a70 : } : 0.00 : 515745: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, $7), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 51574c: 49 89 c6 mov %rax,%r14 : } : 0.00 : 51574f: e9 2c c2 ff ff jmpq 511980 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515754: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 51575b: 48 8b 3d fe 50 6a 00 mov 0x6a50fe(%rip),%rdi # bba860 0.00 : 515762: be 20 00 00 00 mov $0x20,%esi : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515767: 44 8b 60 f4 mov -0xc(%rax),%r12d : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 51576b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515772: e8 99 36 28 00 callq 798e10 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515777: 31 f6 xor %esi,%esi : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 515779: 48 89 c7 mov %rax,%rdi 0.00 : 51577c: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 515782: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : n->location = location; 0.00 : 515789: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515790: e8 bb c0 0c 00 callq 5e1850 0.00 : 515795: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51579c: 48 89 c6 mov %rax,%rsi 0.00 : 51579f: 48 8b 3a mov (%rdx),%rdi 0.00 : 5157a2: e8 a9 c0 0c 00 callq 5e1850 0.00 : 5157a7: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 5157ac: 48 89 c3 mov %rax,%rbx 0.00 : 5157af: e8 3c b2 ff ff callq 5109f0 0.00 : 5157b4: 48 89 de mov %rbx,%rsi 0.00 : 5157b7: 48 89 c7 mov %rax,%rdi 0.00 : 5157ba: 44 89 e2 mov %r12d,%edx 0.00 : 5157bd: e8 5e bc 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 5157c2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5157c9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 5157d0: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 5157d3: 31 ff xor %edi,%edi 0.00 : 5157d5: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 5157d9: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 5157dd: be 41 97 7c 00 mov $0x7c9741,%esi 0.00 : 5157e2: e8 89 c2 0d 00 callq 5f1a70 : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr 0.00 : 5157e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 5157ee: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr 0.00 : 5157f1: e9 8a c1 ff ff jmpq 511980 : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, $6), : @2); 0.00 : 5157f6: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5157fd: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515804: 31 f6 xor %esi,%esi 0.00 : 515806: 48 8b 3a mov (%rdx),%rdi 0.00 : 515809: 44 8b 60 f0 mov -0x10(%rax),%r12d 0.00 : 51580d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515814: e8 37 c0 0c 00 callq 5e1850 0.00 : 515819: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515820: 48 89 c6 mov %rax,%rsi 0.00 : 515823: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 515827: e8 24 c0 0c 00 callq 5e1850 0.00 : 51582c: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 515831: 48 89 c3 mov %rax,%rbx 0.00 : 515834: e8 b7 b1 ff ff callq 5109f0 0.00 : 515839: 48 89 de mov %rbx,%rsi 0.00 : 51583c: 48 89 c7 mov %rax,%rdi 0.00 : 51583f: 44 89 e2 mov %r12d,%edx 0.00 : 515842: e8 d9 bb 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515847: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51584e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, $6), : @2); 0.00 : 515855: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515858: 31 ff xor %edi,%edi 0.00 : 51585a: 44 8b 46 f0 mov -0x10(%rsi),%r8d 0.00 : 51585e: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 515862: be 42 97 7c 00 mov $0x7c9742,%esi 0.00 : 515867: e8 04 c2 0d 00 callq 5f1a70 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR 0.00 : 51586c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515873: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR 0.00 : 515876: e9 05 c1 ff ff jmpq 511980 : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 51587b: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 515882: 48 8b 3d d7 4f 6a 00 mov 0x6a4fd7(%rip),%rdi # bba860 0.00 : 515889: be 20 00 00 00 mov $0x20,%esi : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 51588e: 44 8b 60 f8 mov -0x8(%rax),%r12d : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 515892: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515899: e8 72 35 28 00 callq 798e10 : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 51589e: 31 f6 xor %esi,%esi : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 5158a0: 48 89 c7 mov %rax,%rdi 0.00 : 5158a3: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 5158a9: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : n->location = location; 0.00 : 5158b0: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 5158b7: e8 94 bf 0c 00 callq 5e1850 0.00 : 5158bc: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5158c3: 48 89 c6 mov %rax,%rsi 0.00 : 5158c6: 48 8b 3a mov (%rdx),%rdi 0.00 : 5158c9: e8 82 bf 0c 00 callq 5e1850 0.00 : 5158ce: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 5158d3: 48 89 c3 mov %rax,%rbx 0.00 : 5158d6: e8 15 b1 ff ff callq 5109f0 0.00 : 5158db: 48 89 de mov %rbx,%rsi 0.00 : 5158de: 48 89 c7 mov %rax,%rdi 0.00 : 5158e1: 44 89 e2 mov %r12d,%edx 0.00 : 5158e4: e8 37 bb 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 5158e9: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5158f0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 5158f7: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 5158fa: 31 ff xor %edi,%edi 0.00 : 5158fc: 44 8b 46 f8 mov -0x8(%rsi),%r8d 0.00 : 515900: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 515904: be 42 97 7c 00 mov $0x7c9742,%esi 0.00 : 515909: e8 62 c1 0d 00 callq 5f1a70 : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr 0.00 : 51590e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515915: 49 89 c6 mov %rax,%r14 : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr 0.00 : 515918: e9 63 c0 ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } : | a_expr NOT ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 51591d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515924: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51592b: 31 f6 xor %esi,%esi 0.00 : 51592d: 48 8b 38 mov (%rax),%rdi 0.00 : 515930: 44 8b 63 f0 mov -0x10(%rbx),%r12d 0.00 : 515934: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51593b: e8 10 bf 0c 00 callq 5e1850 0.00 : 515940: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515947: 48 89 c6 mov %rax,%rsi 0.00 : 51594a: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51594e: e8 fd be 0c 00 callq 5e1850 0.00 : 515953: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515958: 48 89 c3 mov %rax,%rbx 0.00 : 51595b: e8 90 b0 ff ff callq 5109f0 0.00 : 515960: 48 89 de mov %rbx,%rsi 0.00 : 515963: 48 89 c7 mov %rax,%rdi 0.00 : 515966: 44 89 e2 mov %r12d,%edx 0.00 : 515969: e8 b2 ba 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n, @2); 0.00 : 51596e: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515975: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } : | a_expr NOT ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 51597c: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n, @2); 0.00 : 51597f: 31 ff xor %edi,%edi 0.00 : 515981: 44 8b 46 f0 mov -0x10(%rsi),%r8d 0.00 : 515985: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 515989: be 2d 97 7c 00 mov $0x7c972d,%esi 0.00 : 51598e: e8 dd c0 0d 00 callq 5f1a70 : } : 0.00 : 515993: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n, @2); 0.00 : 51599a: 49 89 c6 mov %rax,%r14 : } : 0.00 : 51599d: e9 de bf ff ff jmpq 511980 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); : } : | a_expr NOT ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } 0.00 : 5159a2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5159a9: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5159b0: be 2d 97 7c 00 mov $0x7c972d,%esi 0.00 : 5159b5: 31 ff xor %edi,%edi 0.00 : 5159b7: 44 8b 41 f8 mov -0x8(%rcx),%r8d 0.00 : 5159bb: 48 8b 50 e8 mov -0x18(%rax),%rdx 0.00 : 5159bf: 48 8b 08 mov (%rax),%rcx 0.00 : 5159c2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5159c9: e8 a2 c0 0d 00 callq 5f1a70 : | a_expr NOT ILIKE a_expr ESCAPE a_expr 0.00 : 5159ce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); : } : | a_expr NOT ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } 0.00 : 5159d5: 49 89 c6 mov %rax,%r14 : | a_expr NOT ILIKE a_expr ESCAPE a_expr 0.00 : 5159d8: e9 a3 bf ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } : | a_expr ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 5159dd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5159e4: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5159eb: 31 f6 xor %esi,%esi 0.00 : 5159ed: 48 8b 38 mov (%rax),%rdi 0.00 : 5159f0: 44 8b 63 f4 mov -0xc(%rbx),%r12d 0.00 : 5159f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5159fb: e8 50 be 0c 00 callq 5e1850 0.00 : 515a00: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515a07: 48 89 c6 mov %rax,%rsi 0.00 : 515a0a: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 515a0e: e8 3d be 0c 00 callq 5e1850 0.00 : 515a13: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515a18: 48 89 c3 mov %rax,%rbx 0.00 : 515a1b: e8 d0 af ff ff callq 5109f0 0.00 : 515a20: 48 89 de mov %rbx,%rsi 0.00 : 515a23: 48 89 c7 mov %rax,%rdi 0.00 : 515a26: 44 89 e2 mov %r12d,%edx 0.00 : 515a29: e8 f2 b9 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); 0.00 : 515a2e: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515a35: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } : | a_expr ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 515a3c: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); 0.00 : 515a3f: 31 ff xor %edi,%edi 0.00 : 515a41: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 515a45: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 515a49: be 2e 97 7c 00 mov $0x7c972e,%esi 0.00 : 515a4e: e8 1d c0 0d 00 callq 5f1a70 : } : | a_expr NOT ILIKE a_expr 0.00 : 515a53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); 0.00 : 515a5a: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT ILIKE a_expr 0.00 : 515a5d: e9 1e bf ff ff jmpq 511980 : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); : } : | a_expr ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } 0.00 : 515a62: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515a69: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515a70: be 2e 97 7c 00 mov $0x7c972e,%esi 0.00 : 515a75: 31 ff xor %edi,%edi 0.00 : 515a77: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515a7b: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515a7f: 48 8b 08 mov (%rax),%rcx 0.00 : 515a82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515a89: e8 e2 bf 0d 00 callq 5f1a70 : | a_expr ILIKE a_expr ESCAPE a_expr 0.00 : 515a8e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); : } : | a_expr ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } 0.00 : 515a95: 49 89 c6 mov %rax,%r14 : | a_expr ILIKE a_expr ESCAPE a_expr 0.00 : 515a98: e9 e3 be ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } : | a_expr NOT LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 515a9d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515aa4: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515aab: 31 f6 xor %esi,%esi 0.00 : 515aad: 48 8b 38 mov (%rax),%rdi 0.00 : 515ab0: 44 8b 63 f0 mov -0x10(%rbx),%r12d 0.00 : 515ab4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515abb: e8 90 bd 0c 00 callq 5e1850 0.00 : 515ac0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515ac7: 48 89 c6 mov %rax,%rsi 0.00 : 515aca: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 515ace: e8 7d bd 0c 00 callq 5e1850 0.00 : 515ad3: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515ad8: 48 89 c3 mov %rax,%rbx 0.00 : 515adb: e8 10 af ff ff callq 5109f0 0.00 : 515ae0: 48 89 de mov %rbx,%rsi 0.00 : 515ae3: 48 89 c7 mov %rax,%rdi 0.00 : 515ae6: 44 89 e2 mov %r12d,%edx 0.00 : 515ae9: e8 32 b9 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); 0.00 : 515aee: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515af5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } : | a_expr NOT LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 515afc: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); 0.00 : 515aff: 31 ff xor %edi,%edi 0.00 : 515b01: 44 8b 46 f0 mov -0x10(%rsi),%r8d 0.00 : 515b05: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 515b09: be 29 97 7c 00 mov $0x7c9729,%esi 0.00 : 515b0e: e8 5d bf 0d 00 callq 5f1a70 : } : | a_expr ILIKE a_expr 0.00 : 515b13: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); 0.00 : 515b1a: 49 89 c6 mov %rax,%r14 : } : | a_expr ILIKE a_expr 0.00 : 515b1d: e9 5e be ff ff jmpq 511980 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); : } : | a_expr NOT LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } 0.00 : 515b22: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515b29: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515b30: be 29 97 7c 00 mov $0x7c9729,%esi 0.00 : 515b35: 31 ff xor %edi,%edi 0.00 : 515b37: 44 8b 41 f8 mov -0x8(%rcx),%r8d 0.00 : 515b3b: 48 8b 50 e8 mov -0x18(%rax),%rdx 0.00 : 515b3f: 48 8b 08 mov (%rax),%rcx 0.00 : 515b42: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515b49: e8 22 bf 0d 00 callq 5f1a70 : | a_expr NOT LIKE a_expr ESCAPE a_expr 0.00 : 515b4e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); : } : | a_expr NOT LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } 0.00 : 515b55: 49 89 c6 mov %rax,%r14 : | a_expr NOT LIKE a_expr ESCAPE a_expr 0.00 : 515b58: e9 23 be ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } : | a_expr LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 515b5d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515b64: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515b6b: 31 f6 xor %esi,%esi 0.00 : 515b6d: 48 8b 3a mov (%rdx),%rdi 0.00 : 515b70: 44 8b 60 f4 mov -0xc(%rax),%r12d 0.00 : 515b74: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515b7b: e8 d0 bc 0c 00 callq 5e1850 0.00 : 515b80: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515b87: 48 89 c6 mov %rax,%rsi 0.00 : 515b8a: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 515b8e: e8 bd bc 0c 00 callq 5e1850 0.00 : 515b93: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515b98: 48 89 c3 mov %rax,%rbx 0.00 : 515b9b: e8 50 ae ff ff callq 5109f0 0.00 : 515ba0: 48 89 de mov %rbx,%rsi 0.00 : 515ba3: 48 89 c7 mov %rax,%rdi 0.00 : 515ba6: 44 89 e2 mov %r12d,%edx 0.00 : 515ba9: e8 72 b8 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); 0.00 : 515bae: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515bb5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } : | a_expr LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 515bbc: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); 0.00 : 515bbf: 31 ff xor %edi,%edi 0.00 : 515bc1: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 515bc5: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 515bc9: be 2a 97 7c 00 mov $0x7c972a,%esi 0.00 : 515bce: e8 9d be 0d 00 callq 5f1a70 : } : | a_expr NOT LIKE a_expr 0.00 : 515bd3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); 0.00 : 515bda: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT LIKE a_expr 0.00 : 515bdd: e9 9e bd ff ff jmpq 511980 : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } : : | a_expr LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } 0.00 : 515be2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515be9: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515bf0: 31 ff xor %edi,%edi 0.00 : 515bf2: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515bf6: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515bfa: be 2a 97 7c 00 mov $0x7c972a,%esi 0.00 : 515bff: 48 8b 0b mov (%rbx),%rcx 0.00 : 515c02: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c09: e8 62 be 0d 00 callq 5f1a70 : | a_expr LIKE a_expr ESCAPE a_expr 0.00 : 515c0e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } : : | a_expr LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } 0.00 : 515c15: 49 89 c6 mov %rax,%r14 : | a_expr LIKE a_expr ESCAPE a_expr 0.00 : 515c18: e9 63 bd ff ff jmpq 511980 : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } 0.00 : 515c1d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 515c24: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515c2b: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 515c2e: 48 8b 39 mov (%rcx),%rdi 0.00 : 515c31: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c38: e8 63 b7 ff ff callq 5113a0 : 0.00 : 515c3d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } 0.00 : 515c44: 49 89 c6 mov %rax,%r14 : 0.00 : 515c47: e9 34 bd ff ff jmpq 511980 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } 0.00 : 515c4c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515c53: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515c5a: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 515c5d: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 515c61: 48 8b 30 mov (%rax),%rsi 0.00 : 515c64: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c6b: e8 30 b6 ff ff callq 5112a0 : | NOT a_expr 0.00 : 515c70: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } 0.00 : 515c77: 49 89 c6 mov %rax,%r14 : | NOT a_expr 0.00 : 515c7a: e9 01 bd ff ff jmpq 511980 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } 0.00 : 515c7f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515c86: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515c8d: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 515c91: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 515c94: 48 8b 33 mov (%rbx),%rsi 0.00 : 515c97: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c9e: e8 7d b6 ff ff callq 511320 : | a_expr OR a_expr 0.00 : 515ca3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } 0.00 : 515caa: 49 89 c6 mov %rax,%r14 : | a_expr OR a_expr 0.00 : 515cad: e9 ce bc ff ff jmpq 511980 : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 515cb2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515cb9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515cc0: 31 ff xor %edi,%edi 0.00 : 515cc2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515cc9: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 515ccd: 44 8b 03 mov (%rbx),%r8d 0.00 : 515cd0: 31 c9 xor %ecx,%ecx 0.00 : 515cd2: 48 8b 30 mov (%rax),%rsi 0.00 : 515cd5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515cdc: e8 ff bc 0d 00 callq 5f19e0 : 0.00 : 515ce1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 515ce8: 49 89 c6 mov %rax,%r14 : 0.00 : 515ceb: e9 90 bc ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 515cf0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515cf7: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515cfe: 31 d2 xor %edx,%edx 0.00 : 515d00: 31 ff xor %edi,%edi 0.00 : 515d02: 48 8b 73 f8 mov -0x8(%rbx),%rsi 0.00 : 515d06: 44 8b 40 fc mov -0x4(%rax),%r8d 0.00 : 515d0a: 48 8b 0b mov (%rbx),%rcx 0.00 : 515d0d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515d14: e8 c7 bc 0d 00 callq 5f19e0 : | a_expr qual_Op %prec POSTFIXOP 0.00 : 515d19: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 515d20: 49 89 c6 mov %rax,%r14 : | a_expr qual_Op %prec POSTFIXOP 0.00 : 515d23: e9 58 bc ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 515d28: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515d2f: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515d36: 31 ff xor %edi,%edi 0.00 : 515d38: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515d3c: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515d40: 48 8b 70 f8 mov -0x8(%rax),%rsi 0.00 : 515d44: 48 8b 08 mov (%rax),%rcx 0.00 : 515d47: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515d4e: e8 8d bc 0d 00 callq 5f19e0 : | qual_Op a_expr %prec Op 0.00 : 515d53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 515d5a: 49 89 c6 mov %rax,%r14 : | qual_Op a_expr %prec Op 0.00 : 515d5d: e9 1e bc ff ff jmpq 511980 : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 515d62: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515d69: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515d70: 31 ff xor %edi,%edi 0.00 : 515d72: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515d76: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515d7a: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 515d7f: 48 8b 0b mov (%rbx),%rcx 0.00 : 515d82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515d89: e8 e2 bc 0d 00 callq 5f1a70 : 0.00 : 515d8e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 515d95: 49 89 c6 mov %rax,%r14 : 0.00 : 515d98: e9 e3 bb ff ff jmpq 511980 : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 515d9d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515da4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515dab: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 515db0: 31 ff xor %edi,%edi 0.00 : 515db2: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515db6: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515dba: 48 8b 08 mov (%rax),%rcx 0.00 : 515dbd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515dc4: e8 a7 bc 0d 00 callq 5f1a70 : | a_expr '=' a_expr 0.00 : 515dc9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 515dd0: 49 89 c6 mov %rax,%r14 : | a_expr '=' a_expr 0.00 : 515dd3: e9 a8 bb ff ff jmpq 511980 : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 515dd8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515ddf: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515de6: 31 ff xor %edi,%edi 0.00 : 515de8: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515dec: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515df0: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 515df5: 48 8b 0b mov (%rbx),%rcx 0.00 : 515df8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515dff: e8 6c bc 0d 00 callq 5f1a70 : | a_expr '>' a_expr 0.00 : 515e04: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 515e0b: 49 89 c6 mov %rax,%r14 : | a_expr '>' a_expr 0.00 : 515e0e: e9 6d bb ff ff jmpq 511980 : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 515e13: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515e1a: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515e21: be 70 3d 8c 00 mov $0x8c3d70,%esi 0.00 : 515e26: 31 ff xor %edi,%edi 0.00 : 515e28: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515e2c: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515e30: 48 8b 08 mov (%rax),%rcx 0.00 : 515e33: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515e3a: e8 31 bc 0d 00 callq 5f1a70 : | a_expr '<' a_expr 0.00 : 515e3f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 515e46: 49 89 c6 mov %rax,%r14 : | a_expr '<' a_expr 0.00 : 515e49: e9 32 bb ff ff jmpq 511980 : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 515e4e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515e55: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515e5c: 31 ff xor %edi,%edi 0.00 : 515e5e: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515e62: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515e66: be ce 6e 8c 00 mov $0x8c6ece,%esi 0.00 : 515e6b: 48 8b 0b mov (%rbx),%rcx 0.00 : 515e6e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515e75: e8 f6 bb 0d 00 callq 5f1a70 : | a_expr '^' a_expr 0.00 : 515e7a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 515e81: 49 89 c6 mov %rax,%r14 : | a_expr '^' a_expr 0.00 : 515e84: e9 f7 ba ff ff jmpq 511980 : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 515e89: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515e90: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515e97: be 8a e7 87 00 mov $0x87e78a,%esi 0.00 : 515e9c: 31 ff xor %edi,%edi 0.00 : 515e9e: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515ea2: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515ea6: 48 8b 08 mov (%rax),%rcx 0.00 : 515ea9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515eb0: e8 bb bb 0d 00 callq 5f1a70 : | a_expr '%' a_expr 0.00 : 515eb5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 515ebc: 49 89 c6 mov %rax,%r14 : | a_expr '%' a_expr 0.00 : 515ebf: e9 bc ba ff ff jmpq 511980 : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 515ec4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515ecb: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515ed2: 31 ff xor %edi,%edi 0.00 : 515ed4: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515ed8: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515edc: be a3 76 7c 00 mov $0x7c76a3,%esi 0.00 : 515ee1: 48 8b 0b mov (%rbx),%rcx 0.00 : 515ee4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515eeb: e8 80 bb 0d 00 callq 5f1a70 : | a_expr '/' a_expr 0.00 : 515ef0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 515ef7: 49 89 c6 mov %rax,%r14 : | a_expr '/' a_expr 0.00 : 515efa: e9 81 ba ff ff jmpq 511980 : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 515eff: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515f06: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515f0d: be ca 6e 8c 00 mov $0x8c6eca,%esi 0.00 : 515f12: 31 ff xor %edi,%edi 0.00 : 515f14: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515f18: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515f1c: 48 8b 08 mov (%rax),%rcx 0.00 : 515f1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515f26: e8 45 bb 0d 00 callq 5f1a70 : | a_expr '*' a_expr 0.00 : 515f2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 515f32: 49 89 c6 mov %rax,%r14 : | a_expr '*' a_expr 0.00 : 515f35: e9 46 ba ff ff jmpq 511980 : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 515f3a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515f41: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515f48: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 515f4d: 31 ff xor %edi,%edi 0.00 : 515f4f: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 515f53: 44 8b 43 fc mov -0x4(%rbx),%r8d 0.00 : 515f57: 48 8b 09 mov (%rcx),%rcx 0.00 : 515f5a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515f61: e8 0a bb 0d 00 callq 5f1a70 : | a_expr '-' a_expr 0.00 : 515f66: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 515f6d: 49 89 c6 mov %rax,%r14 : | a_expr '-' a_expr 0.00 : 515f70: e9 0b ba ff ff jmpq 511980 : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 515f75: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515f7c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515f83: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 515f86: 48 8b 3a mov (%rdx),%rdi 0.00 : 515f89: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515f90: e8 fb ad ff ff callq 510d90 : | a_expr '+' a_expr 0.00 : 515f95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 515f9c: 49 89 c6 mov %rax,%r14 : | a_expr '+' a_expr 0.00 : 515f9f: e9 dc b9 ff ff jmpq 511980 : * : * If you add more explicitly-known operators, be sure to add them : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 515fa4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515fab: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515fb2: 31 d2 xor %edx,%edx 0.00 : 515fb4: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 515fb9: 31 ff xor %edi,%edi 0.00 : 515fbb: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515fbf: 48 8b 0b mov (%rbx),%rcx 0.00 : 515fc2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515fc9: e8 a2 ba 0d 00 callq 5f1a70 : | '-' a_expr %prec UMINUS 0.00 : 515fce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * : * If you add more explicitly-known operators, be sure to add them : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 515fd5: 49 89 c6 mov %rax,%r14 : | '-' a_expr %prec UMINUS 0.00 : 515fd8: e9 a3 b9 ff ff jmpq 511980 : n->location = @2; : $$ = (Node *) n; : } : | a_expr AT TIME ZONE a_expr %prec AT : { : $$ = (Node *) makeFuncCall(SystemFuncName("timezone"), 0.00 : 515fdd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515fe4: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515feb: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 515fef: 44 8b 66 f4 mov -0xc(%rsi),%r12d 0.00 : 515ff3: 31 f6 xor %esi,%esi 0.00 : 515ff5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515ffc: e8 4f b8 0c 00 callq 5e1850 0.00 : 516001: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516008: 48 89 c6 mov %rax,%rsi 0.00 : 51600b: 48 8b 3a mov (%rdx),%rdi 0.00 : 51600e: e8 3d b8 0c 00 callq 5e1850 0.00 : 516013: bf 60 fc 8f 00 mov $0x8ffc60,%edi 0.00 : 516018: 48 89 c3 mov %rax,%rbx 0.00 : 51601b: e8 d0 a9 ff ff callq 5109f0 0.00 : 516020: 44 89 e2 mov %r12d,%edx 0.00 : 516023: 48 89 c7 mov %rax,%rdi 0.00 : 516026: 48 89 de mov %rbx,%rsi 0.00 : 516029: e8 f2 b3 0d 00 callq 5f1420 : list_make2($5, $1), : @2); : } : /* 0.00 : 51602e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : n->location = @2; : $$ = (Node *) n; : } : | a_expr AT TIME ZONE a_expr %prec AT : { : $$ = (Node *) makeFuncCall(SystemFuncName("timezone"), 0.00 : 516035: 49 89 c6 mov %rax,%r14 : list_make2($5, $1), : @2); : } : /* 0.00 : 516038: e9 43 b9 ff ff jmpq 511980 : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | a_expr COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); 0.00 : 51603d: 48 8b 3d 1c 48 6a 00 mov 0x6a481c(%rip),%rdi # bba860 0.00 : 516044: be 20 00 00 00 mov $0x20,%esi 0.00 : 516049: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516050: e8 bb 2d 28 00 callq 798e10 0.00 : 516055: c7 00 90 03 00 00 movl $0x390,(%rax) : n->arg = $1; 0.00 : 51605b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->collname = $3; : n->location = @2; : $$ = (Node *) n; 0.00 : 516062: 49 89 c6 mov %rax,%r14 : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | a_expr COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); : n->arg = $1; 0.00 : 516065: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 516069: 48 89 50 08 mov %rdx,0x8(%rax) : n->collname = $3; 0.00 : 51606d: 48 8b 11 mov (%rcx),%rdx 0.00 : 516070: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @2; 0.00 : 516074: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51607b: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 51607e: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *) n; : } : | a_expr AT TIME ZONE a_expr %prec AT 0.00 : 516081: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516088: e9 f3 b8 ff ff jmpq 511980 : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 51608d: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516094: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 51609b: 48 8b 3d be 47 6a 00 mov 0x6a47be(%rip),%rdi # bba860 : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 5160a2: 8b 5e fc mov -0x4(%rsi),%ebx 0.00 : 5160a5: 4c 8b 20 mov (%rax),%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5160a8: be 20 00 00 00 mov $0x20,%esi : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 5160ad: 4c 8b 68 f0 mov -0x10(%rax),%r13 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5160b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5160b8: e8 53 2d 28 00 callq 798e10 0.00 : 5160bd: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; : n->typeName = typename; 0.00 : 5160c3: 4c 89 60 10 mov %r12,0x10(%rax) : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 5160c7: 49 89 c6 mov %rax,%r14 : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; 0.00 : 5160ca: 4c 89 68 08 mov %r13,0x8(%rax) : n->typeName = typename; : n->location = location; 0.00 : 5160ce: 89 58 18 mov %ebx,0x18(%rax) : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | a_expr COLLATE any_name 0.00 : 5160d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5160d8: e9 a3 b8 ff ff jmpq 511980 : * always be used by surrounding it with parens. : * : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } 0.00 : 5160dd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5160e4: 4c 8b 33 mov (%rbx),%r14 : | a_expr TYPECAST Typename 0.00 : 5160e7: e9 94 b8 ff ff jmpq 511980 : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); : } : | SECOND_P '(' Iconst ')' : { : $$ = list_make2(makeIntConst(INTERVAL_MASK(SECOND), @1), 0.00 : 5160ec: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5160f3: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5160fa: 8b 7a f8 mov -0x8(%rdx),%edi 0.00 : 5160fd: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 516100: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516107: e8 04 ab ff ff callq 510c10 0.00 : 51610c: 31 f6 xor %esi,%esi 0.00 : 51610e: 48 89 c7 mov %rax,%rdi 0.00 : 516111: e8 3a b7 0c 00 callq 5e1850 0.00 : 516116: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51611d: 48 89 c3 mov %rax,%rbx 0.00 : 516120: bf 00 10 00 00 mov $0x1000,%edi 0.00 : 516125: 8b 71 f4 mov -0xc(%rcx),%esi 0.00 : 516128: e8 e3 aa ff ff callq 510c10 0.00 : 51612d: 48 89 de mov %rbx,%rsi 0.00 : 516130: 48 89 c7 mov %rax,%rdi 0.00 : 516133: e8 18 b7 0c 00 callq 5e1850 : makeIntConst($3, @3)); : } : ; 0.00 : 516138: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); : } : | SECOND_P '(' Iconst ')' : { : $$ = list_make2(makeIntConst(INTERVAL_MASK(SECOND), @1), 0.00 : 51613f: 49 89 c6 mov %rax,%r14 : makeIntConst($3, @3)); : } : ; 0.00 : 516142: e9 39 b8 ff ff jmpq 511980 : ; : : interval_second: : SECOND_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); 0.00 : 516147: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51614e: bf 00 10 00 00 mov $0x1000,%edi 0.00 : 516153: 8b 33 mov (%rbx),%esi 0.00 : 516155: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51615c: e8 af aa ff ff callq 510c10 0.00 : 516161: 31 f6 xor %esi,%esi 0.00 : 516163: 48 89 c7 mov %rax,%rdi 0.00 : 516166: e8 e5 b6 0c 00 callq 5e1850 : } : | SECOND_P '(' Iconst ')' 0.00 : 51616b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : interval_second: : SECOND_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); 0.00 : 516172: 49 89 c6 mov %rax,%r14 : } : | SECOND_P '(' Iconst ')' 0.00 : 516175: e9 06 b8 ff ff jmpq 511980 : $$ = $3; : linitial($$) = makeIntConst(INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | /*EMPTY*/ : { $$ = NIL; } 0.00 : 51617a: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51617d: e9 fe b7 ff ff jmpq 511980 : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | MINUTE_P TO interval_second : { : $$ = $3; 0.00 : 516182: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 516189: 31 db xor %ebx,%ebx 0.00 : 51618b: 48 8b 02 mov (%rdx),%rax 0.00 : 51618e: 48 85 c0 test %rax,%rax 0.00 : 516191: 74 04 je 516197 0.00 : 516193: 48 8b 58 08 mov 0x8(%rax),%rbx : linitial($$) = makeIntConst(INTERVAL_MASK(MINUTE) | 0.00 : 516197: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51619e: bf 00 18 00 00 mov $0x1800,%edi : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | MINUTE_P TO interval_second : { : $$ = $3; 0.00 : 5161a3: 49 89 c6 mov %rax,%r14 : linitial($$) = makeIntConst(INTERVAL_MASK(MINUTE) | 0.00 : 5161a6: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 5161a9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5161b0: e8 5b aa ff ff callq 510c10 0.00 : 5161b5: 48 89 03 mov %rax,(%rbx) : INTERVAL_MASK(SECOND), @1); : } : | /*EMPTY*/ 0.00 : 5161b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5161bf: e9 bc b7 ff ff jmpq 511980 : $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | HOUR_P TO interval_second : { : $$ = $3; 0.00 : 5161c4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5161cb: 31 db xor %ebx,%ebx 0.00 : 5161cd: 48 8b 01 mov (%rcx),%rax 0.00 : 5161d0: 48 85 c0 test %rax,%rax 0.00 : 5161d3: 74 04 je 5161d9 0.00 : 5161d5: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5161d9: 49 89 c6 mov %rax,%r14 : linitial($$) = makeIntConst(INTERVAL_MASK(HOUR) | 0.00 : 5161dc: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5161e3: bf 00 1c 00 00 mov $0x1c00,%edi 0.00 : 5161e8: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 5161eb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5161f2: e8 19 aa ff ff callq 510c10 0.00 : 5161f7: 48 89 03 mov %rax,(%rbx) : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | MINUTE_P TO interval_second 0.00 : 5161fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516201: e9 7a b7 ff ff jmpq 511980 : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | HOUR_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | 0.00 : 516206: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51620d: bf 00 0c 00 00 mov $0xc00,%edi 0.00 : 516212: 8b 72 f8 mov -0x8(%rdx),%esi 0.00 : 516215: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51621c: e8 ef a9 ff ff callq 510c10 0.00 : 516221: 31 f6 xor %esi,%esi 0.00 : 516223: 48 89 c7 mov %rax,%rdi 0.00 : 516226: e8 25 b6 0c 00 callq 5e1850 : INTERVAL_MASK(MINUTE), @1)); : } : | HOUR_P TO interval_second 0.00 : 51622b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | HOUR_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | 0.00 : 516232: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(MINUTE), @1)); : } : | HOUR_P TO interval_second 0.00 : 516235: e9 46 b7 ff ff jmpq 511980 : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | DAY_P TO interval_second : { : $$ = $3; 0.00 : 51623a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516241: 48 8b 03 mov (%rbx),%rax 0.00 : 516244: 31 db xor %ebx,%ebx 0.00 : 516246: 48 85 c0 test %rax,%rax 0.00 : 516249: 74 04 je 51624f 0.00 : 51624b: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 51624f: 49 89 c6 mov %rax,%r14 : linitial($$) = makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 516252: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 516259: bf 08 1c 00 00 mov $0x1c08,%edi 0.00 : 51625e: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 516261: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516268: e8 a3 a9 ff ff callq 510c10 0.00 : 51626d: 48 89 03 mov %rax,(%rbx) : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | HOUR_P TO MINUTE_P 0.00 : 516270: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516277: e9 04 b7 ff ff jmpq 511980 : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 51627c: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516283: bf 08 0c 00 00 mov $0xc08,%edi 0.00 : 516288: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 51628b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516292: e8 79 a9 ff ff callq 510c10 0.00 : 516297: 31 f6 xor %esi,%esi 0.00 : 516299: 48 89 c7 mov %rax,%rdi 0.00 : 51629c: e8 af b5 0c 00 callq 5e1850 : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | DAY_P TO interval_second 0.00 : 5162a1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 5162a8: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | DAY_P TO interval_second 0.00 : 5162ab: e9 d0 b6 ff ff jmpq 511980 : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 5162b0: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5162b7: bf 08 04 00 00 mov $0x408,%edi 0.00 : 5162bc: 8b 72 f8 mov -0x8(%rdx),%esi 0.00 : 5162bf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5162c6: e8 45 a9 ff ff callq 510c10 0.00 : 5162cb: 31 f6 xor %esi,%esi 0.00 : 5162cd: 48 89 c7 mov %rax,%rdi 0.00 : 5162d0: e8 7b b5 0c 00 callq 5e1850 : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P 0.00 : 5162d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 5162dc: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P 0.00 : 5162df: e9 9c b6 ff ff jmpq 511980 : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } : | interval_second : { $$ = $1; } : | YEAR_P TO MONTH_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | 0.00 : 5162e4: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5162eb: bf 06 00 00 00 mov $0x6,%edi 0.00 : 5162f0: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 5162f3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5162fa: e8 11 a9 ff ff callq 510c10 0.00 : 5162ff: 31 f6 xor %esi,%esi 0.00 : 516301: 48 89 c7 mov %rax,%rdi 0.00 : 516304: e8 47 b5 0c 00 callq 5e1850 : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P 0.00 : 516309: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } : | interval_second : { $$ = $1; } : | YEAR_P TO MONTH_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | 0.00 : 516310: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P 0.00 : 516313: e9 68 b6 ff ff jmpq 511980 : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } : | MINUTE_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } : | interval_second : { $$ = $1; } 0.00 : 516318: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51631f: 4c 8b 36 mov (%rsi),%r14 : | YEAR_P TO MONTH_P 0.00 : 516322: e9 59 b6 ff ff jmpq 511980 : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } : | MINUTE_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } 0.00 : 516327: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51632e: bf 00 08 00 00 mov $0x800,%edi 0.00 : 516333: 8b 33 mov (%rbx),%esi 0.00 : 516335: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51633c: e8 cf a8 ff ff callq 510c10 0.00 : 516341: 31 f6 xor %esi,%esi 0.00 : 516343: 48 89 c7 mov %rax,%rdi 0.00 : 516346: e8 05 b5 0c 00 callq 5e1850 : | interval_second 0.00 : 51634b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } : | MINUTE_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } 0.00 : 516352: 49 89 c6 mov %rax,%r14 : | interval_second 0.00 : 516355: e9 26 b6 ff ff jmpq 511980 : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } 0.00 : 51635a: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516361: bf 00 04 00 00 mov $0x400,%edi 0.00 : 516366: 8b 31 mov (%rcx),%esi 0.00 : 516368: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51636f: e8 9c a8 ff ff callq 510c10 0.00 : 516374: 31 f6 xor %esi,%esi 0.00 : 516376: 48 89 c7 mov %rax,%rdi 0.00 : 516379: e8 d2 b4 0c 00 callq 5e1850 : | MINUTE_P 0.00 : 51637e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } 0.00 : 516385: 49 89 c6 mov %rax,%r14 : | MINUTE_P 0.00 : 516388: e9 f3 b5 ff ff jmpq 511980 : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } 0.00 : 51638d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 516394: bf 08 00 00 00 mov $0x8,%edi 0.00 : 516399: 8b 32 mov (%rdx),%esi 0.00 : 51639b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5163a2: e8 69 a8 ff ff callq 510c10 0.00 : 5163a7: 31 f6 xor %esi,%esi 0.00 : 5163a9: 48 89 c7 mov %rax,%rdi 0.00 : 5163ac: e8 9f b4 0c 00 callq 5e1850 : | HOUR_P 0.00 : 5163b1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } 0.00 : 5163b8: 49 89 c6 mov %rax,%r14 : | HOUR_P 0.00 : 5163bb: e9 c0 b5 ff ff jmpq 511980 : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } 0.00 : 5163c0: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5163c7: bf 02 00 00 00 mov $0x2,%edi 0.00 : 5163cc: 8b 30 mov (%rax),%esi 0.00 : 5163ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5163d5: e8 36 a8 ff ff callq 510c10 0.00 : 5163da: 31 f6 xor %esi,%esi 0.00 : 5163dc: 48 89 c7 mov %rax,%rdi 0.00 : 5163df: e8 6c b4 0c 00 callq 5e1850 : | DAY_P 0.00 : 5163e4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } 0.00 : 5163eb: 49 89 c6 mov %rax,%r14 : | DAY_P 0.00 : 5163ee: e9 8d b5 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } 0.00 : 5163f3: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5163fa: bf 04 00 00 00 mov $0x4,%edi 0.00 : 5163ff: 8b 33 mov (%rbx),%esi 0.00 : 516401: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516408: e8 03 a8 ff ff callq 510c10 0.00 : 51640d: 31 f6 xor %esi,%esi 0.00 : 51640f: 48 89 c7 mov %rax,%rdi 0.00 : 516412: e8 39 b4 0c 00 callq 5e1850 : | MONTH_P 0.00 : 516417: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } 0.00 : 51641e: 49 89 c6 mov %rax,%r14 : | MONTH_P 0.00 : 516421: e9 5a b5 ff ff jmpq 511980 : ; : : opt_timezone: : WITH_TIME ZONE { $$ = TRUE; } : | WITHOUT TIME ZONE { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516426: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 516429: e9 52 b5 ff ff jmpq 511980 : } : ; : : opt_timezone: : WITH_TIME ZONE { $$ = TRUE; } : | WITHOUT TIME ZONE { $$ = FALSE; } 0.00 : 51642e: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516431: e9 4a b5 ff ff jmpq 511980 : $$->location = @1; : } : ; : : opt_timezone: : WITH_TIME ZONE { $$ = TRUE; } 0.00 : 516436: 41 b6 01 mov $0x1,%r14b : | WITHOUT TIME ZONE { $$ = FALSE; } 0.00 : 516439: e9 42 b5 ff ff jmpq 511980 : ; : : ConstInterval: : INTERVAL : { : $$ = SystemTypeName("interval"); 0.00 : 51643e: bf 21 5c 8e 00 mov $0x8e5c21,%edi 0.00 : 516443: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51644a: e8 e1 a5 ff ff callq 510a30 : $$->location = @1; 0.00 : 51644f: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : ; : : ConstInterval: : INTERVAL : { : $$ = SystemTypeName("interval"); 0.00 : 516456: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516459: 8b 01 mov (%rcx),%eax 0.00 : 51645b: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 51645f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516466: e9 15 b5 ff ff jmpq 511980 : $$->typmods = list_make1(makeIntConst($3, @3)); : $$->location = @1; : } : | TIME opt_timezone : { : if ($2) 0.00 : 51646b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516472: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : 516475: 0f 84 c0 2c 01 00 je 52913b : $$ = SystemTypeName("timetz"); 0.00 : 51647b: bf 4b 68 8e 00 mov $0x8e684b,%edi 0.00 : 516480: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516487: e8 a4 a5 ff ff callq 510a30 0.00 : 51648c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516493: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("time"); : $$->location = @1; 0.00 : 516496: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51649d: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 5164a0: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 5164a4: e9 d7 b4 ff ff jmpq 511980 : $$ = SystemTypeName("timestamp"); : $$->location = @1; : } : | TIME '(' Iconst ')' opt_timezone : { : if ($5) 0.00 : 5164a9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5164b0: 80 38 00 cmpb $0x0,(%rax) 0.00 : 5164b3: 0f 84 ff 2c 01 00 je 5291b8 : $$ = SystemTypeName("timetz"); 0.00 : 5164b9: bf 4b 68 8e 00 mov $0x8e684b,%edi 0.00 : 5164be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5164c5: e8 66 a5 ff ff callq 510a30 0.00 : 5164ca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5164d1: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("time"); : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 5164d4: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5164db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5164e2: 8b 72 f8 mov -0x8(%rdx),%esi 0.00 : 5164e5: 8b 79 f0 mov -0x10(%rcx),%edi 0.00 : 5164e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5164ef: e8 1c a7 ff ff callq 510c10 0.00 : 5164f4: 31 f6 xor %esi,%esi 0.00 : 5164f6: 48 89 c7 mov %rax,%rdi 0.00 : 5164f9: e8 52 b3 0c 00 callq 5e1850 0.00 : 5164fe: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516502: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 516509: 8b 43 f0 mov -0x10(%rbx),%eax 0.00 : 51650c: 41 89 46 30 mov %eax,0x30(%r14) : } : | TIME opt_timezone 0.00 : 516510: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516517: e9 64 b4 ff ff jmpq 511980 : $$->typmods = list_make1(makeIntConst($3, @3)); : $$->location = @1; : } : | TIMESTAMP opt_timezone : { : if ($2) 0.00 : 51651c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516523: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516526: 0f 84 ac 2c 01 00 je 5291d8 : $$ = SystemTypeName("timestamptz"); 0.00 : 51652c: bf 86 71 8e 00 mov $0x8e7186,%edi 0.00 : 516531: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516538: e8 f3 a4 ff ff callq 510a30 0.00 : 51653d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516544: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("timestamp"); : $$->location = @1; 0.00 : 516547: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51654e: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516551: 41 89 46 30 mov %eax,0x30(%r14) : } : | TIME '(' Iconst ')' opt_timezone 0.00 : 516555: e9 26 b4 ff ff jmpq 511980 : * SQL date/time types : */ : ConstDatetime: : TIMESTAMP '(' Iconst ')' opt_timezone : { : if ($5) 0.00 : 51655a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516561: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516564: 0f 84 2e 2c 01 00 je 529198 : $$ = SystemTypeName("timestamptz"); 0.00 : 51656a: bf 86 71 8e 00 mov $0x8e7186,%edi 0.00 : 51656f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516576: e8 b5 a4 ff ff callq 510a30 0.00 : 51657b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516582: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("timestamp"); : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 516585: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51658c: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 516593: 8b 7a f0 mov -0x10(%rdx),%edi 0.00 : 516596: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 516599: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5165a0: e8 6b a6 ff ff callq 510c10 0.00 : 5165a5: 31 f6 xor %esi,%esi 0.00 : 5165a7: 48 89 c7 mov %rax,%rdi 0.00 : 5165aa: e8 a1 b2 0c 00 callq 5e1850 0.00 : 5165af: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5165b3: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5165ba: 8b 41 f0 mov -0x10(%rcx),%eax 0.00 : 5165bd: 41 89 46 30 mov %eax,0x30(%r14) : } : | TIMESTAMP opt_timezone 0.00 : 5165c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5165c8: e9 b3 b3 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_charset: : CHARACTER SET ColId { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5165cd: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5165d0: e9 ab b3 ff ff jmpq 511980 : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | SMALLINT : { : $$ = SystemTypeName("int2"); 0.00 : 5165d5: bf e2 69 88 00 mov $0x8869e2,%edi 0.00 : 5165da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5165e1: e8 4a a4 ff ff callq 510a30 : $$->location = @1; 0.00 : 5165e6: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | SMALLINT : { : $$ = SystemTypeName("int2"); 0.00 : 5165ed: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 5165f0: 8b 01 mov (%rcx),%eax 0.00 : 5165f2: 41 89 46 30 mov %eax,0x30(%r14) : } : | BIGINT 0.00 : 5165f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5165fd: e9 7e b3 ff ff jmpq 511980 : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | INTEGER : { : $$ = SystemTypeName("int4"); 0.00 : 516602: bf d2 69 88 00 mov $0x8869d2,%edi 0.00 : 516607: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51660e: e8 1d a4 ff ff callq 510a30 : $$->location = @1; 0.00 : 516613: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | INTEGER : { : $$ = SystemTypeName("int4"); 0.00 : 51661a: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 51661d: 8b 02 mov (%rdx),%eax 0.00 : 51661f: 41 89 46 30 mov %eax,0x30(%r14) : } : | SMALLINT 0.00 : 516623: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51662a: e9 51 b3 ff ff jmpq 511980 : /* : * SQL numeric data types : */ : Numeric: INT_P : { : $$ = SystemTypeName("int4"); 0.00 : 51662f: bf d2 69 88 00 mov $0x8869d2,%edi 0.00 : 516634: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51663b: e8 f0 a3 ff ff callq 510a30 : $$->location = @1; 0.00 : 516640: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : /* : * SQL numeric data types : */ : Numeric: INT_P : { : $$ = SystemTypeName("int4"); 0.00 : 516647: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 51664a: 8b 06 mov (%rsi),%eax 0.00 : 51664c: 41 89 46 30 mov %eax,0x30(%r14) : } : | INTEGER 0.00 : 516650: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516657: e9 24 b3 ff ff jmpq 511980 : $$->location = @1; : } : ; : : opt_type_modifiers: '(' expr_list ')' { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51665c: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51665f: e9 1c b3 ff ff jmpq 511980 : $$->typmods = $3; : $$->location = @1; : } : ; : : opt_type_modifiers: '(' expr_list ')' { $$ = $2; } 0.00 : 516664: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51666b: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51666f: e9 0c b3 ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | type_function_name attrs opt_type_modifiers : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 516674: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51667b: 48 8b 58 f8 mov -0x8(%rax),%rbx 0.00 : 51667f: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 516683: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51668a: e8 61 90 0e 00 callq 5ff6f0 0.00 : 51668f: 48 89 de mov %rbx,%rsi 0.00 : 516692: 48 89 c7 mov %rax,%rdi 0.00 : 516695: e8 b6 b1 0c 00 callq 5e1850 0.00 : 51669a: 48 89 c7 mov %rax,%rdi 0.00 : 51669d: e8 8e af 0d 00 callq 5f1630 : $$->typmods = $3; 0.00 : 5166a2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->typmods = $2; : $$->location = @1; : } : | type_function_name attrs opt_type_modifiers : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 5166a9: 49 89 c6 mov %rax,%r14 : $$->typmods = $3; 0.00 : 5166ac: 48 8b 02 mov (%rdx),%rax 0.00 : 5166af: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5166b3: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5166ba: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 5166bd: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 5166c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5166c8: e9 b3 b2 ff ff jmpq 511980 : * constants for them. : */ : GenericType: : type_function_name opt_type_modifiers : { : $$ = makeTypeName($1); 0.00 : 5166cd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5166d4: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 5166d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5166df: e8 6c b3 0d 00 callq 5f1a50 0.00 : 5166e4: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 5166e7: 48 8b 03 mov (%rbx),%rax 0.00 : 5166ea: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5166ee: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5166f5: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 5166f8: 41 89 46 30 mov %eax,0x30(%r14) : } : | type_function_name attrs opt_type_modifiers 0.00 : 5166fc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516703: e9 78 b2 ff ff jmpq 511980 : */ : ConstTypename: : Numeric { $$ = $1; } : | ConstBit { $$ = $1; } : | ConstCharacter { $$ = $1; } : | ConstDatetime { $$ = $1; } 0.00 : 516708: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51670f: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 516712: e9 69 b2 ff ff jmpq 511980 : * reduce/reduce conflicts against function names. : */ : ConstTypename: : Numeric { $$ = $1; } : | ConstBit { $$ = $1; } : | ConstCharacter { $$ = $1; } 0.00 : 516717: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51671e: 4c 8b 32 mov (%rdx),%r14 : | ConstDatetime { $$ = $1; } 0.00 : 516721: e9 5a b2 ff ff jmpq 511980 : * the generic-type-name case in AExprConst to avoid premature : * reduce/reduce conflicts against function names. : */ : ConstTypename: : Numeric { $$ = $1; } : | ConstBit { $$ = $1; } 0.00 : 516726: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51672d: 4c 8b 30 mov (%rax),%r14 : | ConstCharacter { $$ = $1; } 0.00 : 516730: e9 4b b2 ff ff jmpq 511980 : * options (e.g. INTERVAL '1' YEAR). Likewise, we have to handle : * the generic-type-name case in AExprConst to avoid premature : * reduce/reduce conflicts against function names. : */ : ConstTypename: : Numeric { $$ = $1; } 0.00 : 516735: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51673c: 4c 8b 36 mov (%rsi),%r14 : | ConstBit { $$ = $1; } 0.00 : 51673f: e9 3c b2 ff ff jmpq 511980 : $$ = $1; : $$->typmods = $2; : } : | ConstInterval '(' Iconst ')' opt_interval : { : $$ = $1; 0.00 : 516744: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51674b: 4c 8b 70 e0 mov -0x20(%rax),%r14 : if ($5 != NIL) 0.00 : 51674f: 48 8b 00 mov (%rax),%rax 0.00 : 516752: 48 85 c0 test %rax,%rax 0.00 : 516755: 0f 84 e5 30 01 00 je 529840 : { : if (list_length($5) != 1) 0.00 : 51675b: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 51675f: 0f 85 a8 30 01 00 jne 52980d : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("interval precision specified twice"), : parser_errposition(@1))); : $$->typmods = lappend($5, makeIntConst($3, @3)); 0.00 : 516765: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51676c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516773: 8b 73 f8 mov -0x8(%rbx),%esi 0.00 : 516776: 8b 78 f0 mov -0x10(%rax),%edi 0.00 : 516779: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516780: e8 8b a4 ff ff callq 510c10 0.00 : 516785: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51678c: 48 89 c6 mov %rax,%rsi 0.00 : 51678f: 48 8b 3a mov (%rdx),%rdi 0.00 : 516792: e8 e9 b6 0c 00 callq 5e1e80 0.00 : 516797: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 51679b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5167a2: e9 d9 b1 ff ff jmpq 511980 : | Bit { $$ = $1; } : | Character { $$ = $1; } : | ConstDatetime { $$ = $1; } : | ConstInterval opt_interval : { : $$ = $1; 0.00 : 5167a7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5167ae: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->typmods = $2; 0.00 : 5167b2: 48 8b 06 mov (%rsi),%rax 0.00 : 5167b5: 49 89 46 18 mov %rax,0x18(%r14) : } : | ConstInterval '(' Iconst ')' opt_interval 0.00 : 5167b9: e9 c2 b1 ff ff jmpq 511980 : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } : | Bit { $$ = $1; } : | Character { $$ = $1; } : | ConstDatetime { $$ = $1; } 0.00 : 5167be: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5167c5: 4c 8b 33 mov (%rbx),%r14 : | ConstInterval opt_interval 0.00 : 5167c8: e9 b3 b1 ff ff jmpq 511980 : : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } : | Bit { $$ = $1; } : | Character { $$ = $1; } 0.00 : 5167cd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5167d4: 4c 8b 31 mov (%rcx),%r14 : | ConstDatetime { $$ = $1; } 0.00 : 5167d7: e9 a4 b1 ff ff jmpq 511980 : ; : : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } : | Bit { $$ = $1; } 0.00 : 5167dc: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5167e3: 4c 8b 32 mov (%rdx),%r14 : | Character { $$ = $1; } 0.00 : 5167e6: e9 95 b1 ff ff jmpq 511980 : { $$ = NIL; } : ; : : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } 0.00 : 5167eb: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5167f2: 4c 8b 30 mov (%rax),%r14 : | Bit { $$ = $1; } 0.00 : 5167f5: e9 86 b1 ff ff jmpq 511980 : | /*EMPTY*/ : { $$ = NIL; } : ; : : SimpleTypename: : GenericType { $$ = $1; } 0.00 : 5167fa: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516801: 4c 8b 36 mov (%rsi),%r14 : | Numeric { $$ = $1; } 0.00 : 516804: e9 77 b1 ff ff jmpq 511980 : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } : | opt_array_bounds '[' Iconst ']' : { $$ = lappend($1, makeInteger($3)); } : | /*EMPTY*/ : { $$ = NIL; } 0.00 : 516809: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51680c: e9 6f b1 ff ff jmpq 511980 : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } : | opt_array_bounds '[' Iconst ']' : { $$ = lappend($1, makeInteger($3)); } 0.00 : 516811: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516818: 48 63 79 f8 movslq -0x8(%rcx),%rdi 0.00 : 51681c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516823: e8 28 8f 0e 00 callq 5ff750 0.00 : 516828: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51682f: 48 89 c6 mov %rax,%rsi 0.00 : 516832: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 516836: e8 45 b6 0c 00 callq 5e1e80 : | /*EMPTY*/ 0.00 : 51683b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } : | opt_array_bounds '[' Iconst ']' : { $$ = lappend($1, makeInteger($3)); } 0.00 : 516842: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ 0.00 : 516845: e9 36 b1 ff ff jmpq 511980 : } : ; : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } 0.00 : 51684a: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi 0.00 : 516851: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516858: e8 f3 8e 0e 00 callq 5ff750 0.00 : 51685d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516864: 48 89 c6 mov %rax,%rsi 0.00 : 516867: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51686b: e8 10 b6 0c 00 callq 5e1e80 : | opt_array_bounds '[' Iconst ']' 0.00 : 516870: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } 0.00 : 516877: 49 89 c6 mov %rax,%r14 : | opt_array_bounds '[' Iconst ']' 0.00 : 51687a: e9 01 b1 ff ff jmpq 511980 : $$ = $1; : $$->arrayBounds = list_make1(makeInteger(-1)); : } : | SETOF SimpleTypename ARRAY : { : $$ = $2; 0.00 : 51687f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 516886: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi : $$ = $1; : $$->arrayBounds = list_make1(makeInteger(-1)); : } : | SETOF SimpleTypename ARRAY : { : $$ = $2; 0.00 : 51688d: 4c 8b 70 f8 mov -0x8(%rax),%r14 : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 516891: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516898: e8 b3 8e 0e 00 callq 5ff750 0.00 : 51689d: 31 f6 xor %esi,%esi 0.00 : 51689f: 48 89 c7 mov %rax,%rdi 0.00 : 5168a2: e8 a9 af 0c 00 callq 5e1850 : $$->setof = TRUE; 0.00 : 5168a7: 41 c6 46 14 01 movb $0x1,0x14(%r14) : $$->arrayBounds = list_make1(makeInteger(-1)); : } : | SETOF SimpleTypename ARRAY : { : $$ = $2; : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 5168ac: 49 89 46 28 mov %rax,0x28(%r14) : $$->setof = TRUE; : } : ; 0.00 : 5168b0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5168b7: e9 c4 b0 ff ff jmpq 511980 : $$->arrayBounds = list_make1(makeInteger($5)); : $$->setof = TRUE; : } : | SimpleTypename ARRAY : { : $$ = $1; 0.00 : 5168bc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 5168c3: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi : $$->arrayBounds = list_make1(makeInteger($5)); : $$->setof = TRUE; : } : | SimpleTypename ARRAY : { : $$ = $1; 0.00 : 5168ca: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 5168ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5168d5: e8 76 8e 0e 00 callq 5ff750 0.00 : 5168da: 31 f6 xor %esi,%esi 0.00 : 5168dc: 48 89 c7 mov %rax,%rdi 0.00 : 5168df: e8 6c af 0c 00 callq 5e1850 0.00 : 5168e4: 49 89 46 28 mov %rax,0x28(%r14) : } : | SETOF SimpleTypename ARRAY 0.00 : 5168e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5168ef: e9 8c b0 ff ff jmpq 511980 : $$ = $1; : $$->arrayBounds = list_make1(makeInteger($4)); : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $2; 0.00 : 5168f4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$->arrayBounds = list_make1(makeInteger($5)); 0.00 : 5168fb: 48 63 7b f8 movslq -0x8(%rbx),%rdi : $$ = $1; : $$->arrayBounds = list_make1(makeInteger($4)); : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $2; 0.00 : 5168ff: 4c 8b 73 e0 mov -0x20(%rbx),%r14 : $$->arrayBounds = list_make1(makeInteger($5)); 0.00 : 516903: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51690a: e8 41 8e 0e 00 callq 5ff750 0.00 : 51690f: 31 f6 xor %esi,%esi 0.00 : 516911: 48 89 c7 mov %rax,%rdi 0.00 : 516914: e8 37 af 0c 00 callq 5e1850 : $$->setof = TRUE; 0.00 : 516919: 41 c6 46 14 01 movb $0x1,0x14(%r14) : $$->arrayBounds = list_make1(makeInteger($4)); : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $2; : $$->arrayBounds = list_make1(makeInteger($5)); 0.00 : 51691e: 49 89 46 28 mov %rax,0x28(%r14) : $$->setof = TRUE; : } : | SimpleTypename ARRAY 0.00 : 516922: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516929: e9 52 b0 ff ff jmpq 511980 : $$->setof = TRUE; : } : /* SQL standard syntax, currently only one-dimensional */ : | SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $1; 0.00 : 51692e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$->arrayBounds = list_make1(makeInteger($4)); 0.00 : 516935: 48 63 79 f8 movslq -0x8(%rcx),%rdi : $$->setof = TRUE; : } : /* SQL standard syntax, currently only one-dimensional */ : | SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $1; 0.00 : 516939: 4c 8b 71 e0 mov -0x20(%rcx),%r14 : $$->arrayBounds = list_make1(makeInteger($4)); 0.00 : 51693d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516944: e8 07 8e 0e 00 callq 5ff750 0.00 : 516949: 31 f6 xor %esi,%esi 0.00 : 51694b: 48 89 c7 mov %rax,%rdi 0.00 : 51694e: e8 fd ae 0c 00 callq 5e1850 0.00 : 516953: 49 89 46 28 mov %rax,0x28(%r14) : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' 0.00 : 516957: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51695e: e9 1d b0 ff ff jmpq 511980 : $$ = $1; : $$->arrayBounds = $2; : } : | SETOF SimpleTypename opt_array_bounds : { : $$ = $2; 0.00 : 516963: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51696a: 4c 8b 70 f8 mov -0x8(%rax),%r14 : $$->arrayBounds = $3; 0.00 : 51696e: 48 8b 00 mov (%rax),%rax : $$->setof = TRUE; 0.00 : 516971: 41 c6 46 14 01 movb $0x1,0x14(%r14) : $$->arrayBounds = $2; : } : | SETOF SimpleTypename opt_array_bounds : { : $$ = $2; : $$->arrayBounds = $3; 0.00 : 516976: 49 89 46 28 mov %rax,0x28(%r14) : $$->setof = TRUE; : } : /* SQL standard syntax, currently only one-dimensional */ 0.00 : 51697a: e9 01 b0 ff ff jmpq 511980 : * : *****************************************************************************/ : : Typename: SimpleTypename opt_array_bounds : { : $$ = $1; 0.00 : 51697f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516986: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->arrayBounds = $2; 0.00 : 51698a: 48 8b 06 mov (%rsi),%rax 0.00 : 51698d: 49 89 46 28 mov %rax,0x28(%r14) : } : | SETOF SimpleTypename opt_array_bounds 0.00 : 516991: e9 ea af ff ff jmpq 511980 : } : ; : : TableFuncElement: ColId Typename opt_collate_clause : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 516996: 48 8b 3d c3 3e 6a 00 mov 0x6a3ec3(%rip),%rdi # bba860 0.00 : 51699d: be 58 00 00 00 mov $0x58,%esi 0.00 : 5169a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5169a9: e8 62 24 28 00 callq 798e10 0.00 : 5169ae: c7 00 96 03 00 00 movl $0x396,(%rax) : n->colname = $1; 0.00 : 5169b4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cooked_default = NULL; : n->collClause = (CollateClause *) $3; : n->collOid = InvalidOid; : n->constraints = NIL; : n->location = @1; : $$ = (Node *)n; 0.00 : 5169bb: 49 89 c6 mov %rax,%r14 : ; : : TableFuncElement: ColId Typename opt_collate_clause : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 5169be: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5169c2: 48 89 50 08 mov %rdx,0x8(%rax) : n->typeName = $2; 0.00 : 5169c6: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->inhcount = 0; 0.00 : 5169ca: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->is_local = true; 0.00 : 5169d1: c6 40 1c 01 movb $0x1,0x1c(%rax) : n->is_not_null = false; 0.00 : 5169d5: c6 40 1d 00 movb $0x0,0x1d(%rax) : n->is_from_type = false; 0.00 : 5169d9: c6 40 1e 00 movb $0x0,0x1e(%rax) : : TableFuncElement: ColId Typename opt_collate_clause : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; : n->typeName = $2; 0.00 : 5169dd: 48 89 50 10 mov %rdx,0x10(%rax) : n->inhcount = 0; : n->is_local = true; : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; 0.00 : 5169e1: c6 40 1f 00 movb $0x0,0x1f(%rax) : n->raw_default = NULL; 0.00 : 5169e5: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5169ec: 00 : n->cooked_default = NULL; 0.00 : 5169ed: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5169f4: 00 : n->collClause = (CollateClause *) $3; 0.00 : 5169f5: 48 8b 11 mov (%rcx),%rdx : n->collOid = InvalidOid; 0.00 : 5169f8: c7 40 38 00 00 00 00 movl $0x0,0x38(%rax) : n->constraints = NIL; 0.00 : 5169ff: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 516a06: 00 : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collClause = (CollateClause *) $3; 0.00 : 516a07: 48 89 50 30 mov %rdx,0x30(%rax) : n->collOid = InvalidOid; : n->constraints = NIL; : n->location = @1; 0.00 : 516a0b: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 516a12: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 516a15: 89 50 50 mov %edx,0x50(%rax) : $$ = (Node *)n; : } : ; 0.00 : 516a18: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516a1f: e9 5c af ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | TableFuncElementList ',' TableFuncElement : { : $$ = lappend($1, $3); 0.00 : 516a24: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516a2b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 516a2f: 48 8b 32 mov (%rdx),%rsi 0.00 : 516a32: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516a39: e8 42 b4 0c 00 callq 5e1e80 : } : ; 0.00 : 516a3e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | TableFuncElementList ',' TableFuncElement : { : $$ = lappend($1, $3); 0.00 : 516a45: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 516a48: e9 33 af ff ff jmpq 511980 : ; : : TableFuncElementList: : TableFuncElement : { : $$ = list_make1($1); 0.00 : 516a4d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516a54: 31 f6 xor %esi,%esi 0.00 : 516a56: 48 8b 38 mov (%rax),%rdi 0.00 : 516a59: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516a60: e8 eb ad 0c 00 callq 5e1850 : } : | TableFuncElementList ',' TableFuncElement 0.00 : 516a65: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TableFuncElementList: : TableFuncElement : { : $$ = list_make1($1); 0.00 : 516a6c: 49 89 c6 mov %rax,%r14 : } : | TableFuncElementList ',' TableFuncElement 0.00 : 516a6f: e9 0c af ff ff jmpq 511980 : ; : : : OptTableFuncElementList: : TableFuncElementList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516a74: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516a77: e9 04 af ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : : OptTableFuncElementList: : TableFuncElementList { $$ = $1; } 0.00 : 516a7c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516a83: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516a86: e9 f5 ae ff ff jmpq 511980 : : BitWithoutLength: : BIT opt_varying : { : /* bit defaults to bit(1), varbit to no limit */ : if ($2) 0.00 : 516a8b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516a92: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516a95: 0f 84 c0 26 01 00 je 52915b : { : $$ = SystemTypeName("varbit"); 0.00 : 516a9b: bf fb 96 7c 00 mov $0x7c96fb,%edi 0.00 : 516aa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516aa7: e8 84 9f ff ff callq 510a30 0.00 : 516aac: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516ab3: 49 89 c6 mov %rax,%r14 : else : { : $$ = SystemTypeName("bit"); : $$->typmods = list_make1(makeIntConst(1, -1)); : } : $$->location = @1; 0.00 : 516ab6: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516abd: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516ac0: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516ac4: e9 b7 ae ff ff jmpq 511980 : BitWithLength: : BIT opt_varying '(' expr_list ')' : { : char *typname; : : typname = $2 ? "varbit" : "bit"; 0.00 : 516ac9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516ad0: b8 fb 96 7c 00 mov $0x7c96fb,%eax 0.00 : 516ad5: bf fe 96 7c 00 mov $0x7c96fe,%edi 0.00 : 516ada: 80 7e e8 00 cmpb $0x0,-0x18(%rsi) : $$ = SystemTypeName(typname); 0.00 : 516ade: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) : BitWithLength: : BIT opt_varying '(' expr_list ')' : { : char *typname; : : typname = $2 ? "varbit" : "bit"; 0.00 : 516ae5: 48 0f 45 f8 cmovne %rax,%rdi : $$ = SystemTypeName(typname); 0.00 : 516ae9: e8 42 9f ff ff callq 510a30 : $$->typmods = $4; 0.00 : 516aee: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : BIT opt_varying '(' expr_list ')' : { : char *typname; : : typname = $2 ? "varbit" : "bit"; : $$ = SystemTypeName(typname); 0.00 : 516af5: 49 89 c6 mov %rax,%r14 : $$->typmods = $4; 0.00 : 516af8: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 516afc: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516b00: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516b07: 8b 41 f0 mov -0x10(%rcx),%eax 0.00 : 516b0a: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516b0e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516b15: e9 66 ae ff ff jmpq 511980 : ; : : character: CHARACTER opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | CHAR_P opt_varying : { $$ = $2 ? "varchar": "bpchar"; } 0.00 : 516b1a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516b21: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516b27: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516b2c: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516b2f: 4c 0f 45 f0 cmovne %rax,%r14 : | VARCHAR 0.00 : 516b33: e9 48 ae ff ff jmpq 511980 : $$->location = @1; : } : ; : : character: CHARACTER opt_varying : { $$ = $2 ? "varchar": "bpchar"; } 0.00 : 516b38: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516b3f: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516b45: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516b4a: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 516b4d: 4c 0f 45 f0 cmovne %rax,%r14 : | CHAR_P opt_varying 0.00 : 516b51: e9 2a ae ff ff jmpq 511980 : } : ; : : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) 0.00 : 516b56: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516b5d: 4c 8b 02 mov (%rdx),%r8 0.00 : 516b60: 48 8d 5a f8 lea -0x8(%rdx),%rbx 0.00 : 516b64: 4d 85 c0 test %r8,%r8 0.00 : 516b67: 74 15 je 516b7e 0.00 : 516b69: bf 02 97 7c 00 mov $0x7c9702,%edi 0.00 : 516b6e: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 516b73: 4c 89 c6 mov %r8,%rsi 0.00 : 516b76: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 516b78: 0f 85 c2 29 01 00 jne 529540 : $1 = psprintf("%s_%s", $1, $2); : : $$ = SystemTypeName($1); 0.00 : 516b7e: 48 8b 3b mov (%rbx),%rdi 0.00 : 516b81: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516b88: e8 a3 9e ff ff callq 510a30 : : /* char defaults to char(1), varchar to no limit */ : if (strcmp($1, "bpchar") == 0) 0.00 : 516b8d: 48 8b 33 mov (%rbx),%rsi 0.00 : 516b90: bf f2 69 88 00 mov $0x8869f2,%edi 0.00 : 516b95: b9 07 00 00 00 mov $0x7,%ecx : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $2); : : $$ = SystemTypeName($1); 0.00 : 516b9a: 49 89 c4 mov %rax,%r12 : : /* char defaults to char(1), varchar to no limit */ : if (strcmp($1, "bpchar") == 0) 0.00 : 516b9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516ba4: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 516ba6: 75 25 jne 516bcd : $$->typmods = list_make1(makeIntConst(1, -1)); 0.00 : 516ba8: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 516bad: bf 01 00 00 00 mov $0x1,%edi 0.00 : 516bb2: e8 59 a0 ff ff callq 510c10 0.00 : 516bb7: 31 f6 xor %esi,%esi 0.00 : 516bb9: 48 89 c7 mov %rax,%rdi 0.00 : 516bbc: e8 8f ac 0c 00 callq 5e1850 0.00 : 516bc1: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 516bc6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : $$->location = @1; 0.00 : 516bcd: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $2); : : $$ = SystemTypeName($1); 0.00 : 516bd4: 4d 89 e6 mov %r12,%r14 : : /* char defaults to char(1), varchar to no limit */ : if (strcmp($1, "bpchar") == 0) : $$->typmods = list_make1(makeIntConst(1, -1)); : : $$->location = @1; 0.00 : 516bd7: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 516bda: 41 89 44 24 30 mov %eax,0x30(%r12) : } : ; 0.00 : 516bdf: e9 9c ad ff ff jmpq 511980 : } : ; : : CharacterWithLength: character '(' Iconst ')' opt_charset : { : if (($5 != NULL) && (strcmp($5, "sql_text") != 0)) 0.00 : 516be4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516beb: 4c 8b 06 mov (%rsi),%r8 0.00 : 516bee: 4d 85 c0 test %r8,%r8 0.00 : 516bf1: 74 15 je 516c08 0.00 : 516bf3: bf 02 97 7c 00 mov $0x7c9702,%edi 0.00 : 516bf8: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 516bfd: 4c 89 c6 mov %r8,%rsi 0.00 : 516c00: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 516c02: 0f 85 00 2a 01 00 jne 529608 : $1 = psprintf("%s_%s", $1, $5); : : $$ = SystemTypeName($1); 0.00 : 516c08: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516c0f: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 516c13: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516c1a: e8 11 9e ff ff callq 510a30 : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 516c1f: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx : CharacterWithLength: character '(' Iconst ')' opt_charset : { : if (($5 != NULL) && (strcmp($5, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $5); : : $$ = SystemTypeName($1); 0.00 : 516c26: 49 89 c6 mov %rax,%r14 : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 516c29: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516c30: 8b 73 f8 mov -0x8(%rbx),%esi 0.00 : 516c33: 8b 78 f0 mov -0x10(%rax),%edi 0.00 : 516c36: e8 d5 9f ff ff callq 510c10 0.00 : 516c3b: 31 f6 xor %esi,%esi 0.00 : 516c3d: 48 89 c7 mov %rax,%rdi 0.00 : 516c40: e8 0b ac 0c 00 callq 5e1850 0.00 : 516c45: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516c49: 8b 43 f0 mov -0x10(%rbx),%eax 0.00 : 516c4c: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516c50: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516c57: e9 24 ad ff ff jmpq 511980 : * This handles problems with fixed-length (bpchar) strings : * which in column definitions must default to a length : * of one, but should not be constrained if the length : * was not specified. : */ : $$ = $1; 0.00 : 516c5c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516c63: 4c 8b 33 mov (%rbx),%r14 : $$->typmods = NIL; 0.00 : 516c66: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 516c6d: 00 : } : ; 0.00 : 516c6e: e9 0d ad ff ff jmpq 511980 : } : ; : : ConstCharacter: CharacterWithLength : { : $$ = $1; 0.00 : 516c73: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516c7a: 4c 8b 31 mov (%rcx),%r14 : } : | CharacterWithoutLength 0.00 : 516c7d: e9 fe ac ff ff jmpq 511980 : { : $$ = $1; : } : | CharacterWithoutLength : { : $$ = $1; 0.00 : 516c82: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516c89: 4c 8b 32 mov (%rdx),%r14 : } : ; 0.00 : 516c8c: e9 ef ac ff ff jmpq 511980 : * SQL character data types : * The following implements CHAR() and VARCHAR(). : */ : Character: CharacterWithLength : { : $$ = $1; 0.00 : 516c91: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516c98: 4c 8b 30 mov (%rax),%r14 : } : | CharacterWithoutLength 0.00 : 516c9b: e9 e0 ac ff ff jmpq 511980 : | NATIONAL CHARACTER opt_varying : { $$ = $3 ? "varchar": "bpchar"; } : | NATIONAL CHAR_P opt_varying : { $$ = $3 ? "varchar": "bpchar"; } : | NCHAR opt_varying : { $$ = $2 ? "varchar": "bpchar"; } 0.00 : 516ca0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516ca7: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516cad: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516cb2: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 516cb5: 4c 0f 45 f0 cmovne %rax,%r14 : ; 0.00 : 516cb9: e9 c2 ac ff ff jmpq 511980 : | VARCHAR : { $$ = "varchar"; } : | NATIONAL CHARACTER opt_varying : { $$ = $3 ? "varchar": "bpchar"; } : | NATIONAL CHAR_P opt_varying : { $$ = $3 ? "varchar": "bpchar"; } 0.00 : 516cbe: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516cc5: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516ccb: 80 38 00 cmpb $0x0,(%rax) 0.00 : 516cce: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516cd3: 4c 0f 45 f0 cmovne %rax,%r14 : | NCHAR opt_varying 0.00 : 516cd7: e9 a4 ac ff ff jmpq 511980 : | CHAR_P opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | VARCHAR : { $$ = "varchar"; } : | NATIONAL CHARACTER opt_varying : { $$ = $3 ? "varchar": "bpchar"; } 0.00 : 516cdc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516ce3: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516ce9: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516cee: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : 516cf1: 4c 0f 45 f0 cmovne %rax,%r14 : | NATIONAL CHAR_P opt_varying 0.00 : 516cf5: e9 86 ac ff ff jmpq 511980 : character: CHARACTER opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | CHAR_P opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | VARCHAR : { $$ = "varchar"; } 0.00 : 516cfa: 41 be 11 97 7c 00 mov $0x7c9711,%r14d : | NATIONAL CHARACTER opt_varying 0.00 : 516d00: e9 7b ac ff ff jmpq 511980 : { $$ = $2 ? "varchar": "bpchar"; } : ; : : opt_varying: : VARYING { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516d05: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 516d08: e9 73 ac ff ff jmpq 511980 : | NCHAR opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : ; : : opt_varying: : VARYING { $$ = TRUE; } 0.00 : 516d0d: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516d10: e9 6b ac ff ff jmpq 511980 : ; : : opt_charset: : CHARACTER SET ColId { $$ = $3; } 0.00 : 516d15: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516d1c: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516d1f: e9 5c ac ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | BOOLEAN_P : { : $$ = SystemTypeName("bool"); 0.00 : 516d24: bf bd 79 8e 00 mov $0x8e79bd,%edi 0.00 : 516d29: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516d30: e8 fb 9c ff ff callq 510a30 : $$->location = @1; 0.00 : 516d35: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : $$->typmods = $2; : $$->location = @1; : } : | BOOLEAN_P : { : $$ = SystemTypeName("bool"); 0.00 : 516d3c: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516d3f: 8b 02 mov (%rdx),%eax 0.00 : 516d41: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516d45: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516d4c: e9 2f ac ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | NUMERIC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516d51: bf d9 60 8e 00 mov $0x8e60d9,%edi 0.00 : 516d56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516d5d: e8 ce 9c ff ff callq 510a30 : $$->typmods = $2; 0.00 : 516d62: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$->typmods = $2; : $$->location = @1; : } : | NUMERIC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516d69: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 516d6c: 48 8b 03 mov (%rbx),%rax 0.00 : 516d6f: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516d73: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516d7a: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516d7d: 41 89 46 30 mov %eax,0x30(%r14) : } : | BOOLEAN_P 0.00 : 516d81: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516d88: e9 f3 ab ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | DEC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516d8d: bf d9 60 8e 00 mov $0x8e60d9,%edi 0.00 : 516d92: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516d99: e8 92 9c ff ff callq 510a30 : $$->typmods = $2; 0.00 : 516d9e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->typmods = $2; : $$->location = @1; : } : | DEC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516da5: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 516da8: 48 8b 02 mov (%rdx),%rax 0.00 : 516dab: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516daf: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516db6: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 516db9: 41 89 46 30 mov %eax,0x30(%r14) : } : | NUMERIC opt_type_modifiers 0.00 : 516dbd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516dc4: e9 b7 ab ff ff jmpq 511980 : $$ = SystemTypeName("float8"); : $$->location = @1; : } : | DECIMAL_P opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516dc9: bf d9 60 8e 00 mov $0x8e60d9,%edi 0.00 : 516dce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516dd5: e8 56 9c ff ff callq 510a30 : $$->typmods = $2; 0.00 : 516dda: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = SystemTypeName("float8"); : $$->location = @1; : } : | DECIMAL_P opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516de1: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 516de4: 48 8b 03 mov (%rbx),%rax 0.00 : 516de7: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516deb: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516df2: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516df5: 41 89 46 30 mov %eax,0x30(%r14) : } : | DEC opt_type_modifiers 0.00 : 516df9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516e00: e9 7b ab ff ff jmpq 511980 : $$ = $2; : $$->location = @1; : } : | DOUBLE_P PRECISION : { : $$ = SystemTypeName("float8"); 0.00 : 516e05: bf c0 69 88 00 mov $0x8869c0,%edi 0.00 : 516e0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516e11: e8 1a 9c ff ff callq 510a30 : $$->location = @1; 0.00 : 516e16: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = $2; : $$->location = @1; : } : | DOUBLE_P PRECISION : { : $$ = SystemTypeName("float8"); 0.00 : 516e1d: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516e20: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 516e23: 41 89 46 30 mov %eax,0x30(%r14) : } : | DECIMAL_P opt_type_modifiers 0.00 : 516e27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516e2e: e9 4d ab ff ff jmpq 511980 : $$ = SystemTypeName("float4"); : $$->location = @1; : } : | FLOAT_P opt_float : { : $$ = $2; 0.00 : 516e33: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : $$->location = @1; 0.00 : 516e3a: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : $$ = SystemTypeName("float4"); : $$->location = @1; : } : | FLOAT_P opt_float : { : $$ = $2; 0.00 : 516e41: 4c 8b 30 mov (%rax),%r14 : $$->location = @1; 0.00 : 516e44: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 516e47: 41 89 46 30 mov %eax,0x30(%r14) : } : | DOUBLE_P PRECISION 0.00 : 516e4b: e9 30 ab ff ff jmpq 511980 : $$ = SystemTypeName("int8"); : $$->location = @1; : } : | REAL : { : $$ = SystemTypeName("float4"); 0.00 : 516e50: bf 76 5f 8e 00 mov $0x8e5f76,%edi 0.00 : 516e55: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516e5c: e8 cf 9b ff ff callq 510a30 : $$->location = @1; 0.00 : 516e61: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : $$ = SystemTypeName("int8"); : $$->location = @1; : } : | REAL : { : $$ = SystemTypeName("float4"); 0.00 : 516e68: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516e6b: 8b 06 mov (%rsi),%eax 0.00 : 516e6d: 41 89 46 30 mov %eax,0x30(%r14) : } : | FLOAT_P opt_float 0.00 : 516e71: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516e78: e9 03 ab ff ff jmpq 511980 : $$ = SystemTypeName("int2"); : $$->location = @1; : } : | BIGINT : { : $$ = SystemTypeName("int8"); 0.00 : 516e7d: bf ba 60 8e 00 mov $0x8e60ba,%edi 0.00 : 516e82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516e89: e8 a2 9b ff ff callq 510a30 : $$->location = @1; 0.00 : 516e8e: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx : $$ = SystemTypeName("int2"); : $$->location = @1; : } : | BIGINT : { : $$ = SystemTypeName("int8"); 0.00 : 516e95: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516e98: 8b 03 mov (%rbx),%eax 0.00 : 516e9a: 41 89 46 30 mov %eax,0x30(%r14) : } : | REAL 0.00 : 516e9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516ea5: e9 d6 aa ff ff jmpq 511980 : { : $$ = $1; : } : | BitWithoutLength : { : $$ = $1; 0.00 : 516eaa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516eb1: 4c 8b 32 mov (%rdx),%r14 : } : ; 0.00 : 516eb4: e9 c7 aa ff ff jmpq 511980 : * SQL bit-field data types : * The following implements BIT() and BIT VARYING(). : */ : Bit: BitWithLength : { : $$ = $1; 0.00 : 516eb9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516ec0: 4c 8b 30 mov (%rax),%r14 : } : | BitWithoutLength 0.00 : 516ec3: e9 b8 aa ff ff jmpq 511980 : errmsg("precision for type float must be less than 54 bits"), : parser_errposition(@2))); : } : | /*EMPTY*/ : { : $$ = SystemTypeName("float8"); 0.00 : 516ec8: bf c0 69 88 00 mov $0x8869c0,%edi 0.00 : 516ecd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516ed4: e8 57 9b ff ff callq 510a30 : } : ; 0.00 : 516ed9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("precision for type float must be less than 54 bits"), : parser_errposition(@2))); : } : | /*EMPTY*/ : { : $$ = SystemTypeName("float8"); 0.00 : 516ee0: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 516ee3: e9 98 aa ff ff jmpq 511980 : { : /* : * Check FLOAT() precision limits assuming IEEE floating : * types - thomas 1997-09-18 : */ : if ($2 < 1) 0.00 : 516ee8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516eef: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 516ef2: 85 c0 test %eax,%eax 0.00 : 516ef4: 0f 8e cf 27 01 00 jle 5296c9 : ereport(ERROR, : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("precision for type float must be at least 1 bit"), : parser_errposition(@2))); : else if ($2 <= 24) 0.00 : 516efa: 83 f8 18 cmp $0x18,%eax 0.00 : 516efd: 0f 8e 99 23 01 00 jle 52929c : $$ = SystemTypeName("float4"); : else if ($2 <= 53) 0.00 : 516f03: 83 f8 35 cmp $0x35,%eax 0.00 : 516f06: 0f 8f c0 2e 01 00 jg 529dcc : $$ = SystemTypeName("float8"); 0.00 : 516f0c: bf c0 69 88 00 mov $0x8869c0,%edi 0.00 : 516f11: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516f18: e8 13 9b ff ff callq 510a30 0.00 : 516f1d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516f24: 49 89 c6 mov %rax,%r14 0.00 : 516f27: e9 54 aa ff ff jmpq 511980 : { : $$ = $1; : } : | BitWithoutLength : { : $$ = $1; 0.00 : 516f2c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516f33: 4c 8b 33 mov (%rbx),%r14 : $$->typmods = NIL; 0.00 : 516f36: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 516f3d: 00 : } : ; 0.00 : 516f3e: e9 3d aa ff ff jmpq 511980 : : /* ConstBit is like Bit except "BIT" defaults to unspecified length */ : /* See notes for ConstCharacter, which addresses same issue for "CHAR" */ : ConstBit: BitWithLength : { : $$ = $1; 0.00 : 516f43: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516f4a: 4c 8b 31 mov (%rcx),%r14 : } : | BitWithoutLength 0.00 : 516f4d: e9 2e aa ff ff jmpq 511980 : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; : n->cursor_param = 0; : $$ = (Node *) n; : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516f52: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516f55: e9 26 aa ff ff jmpq 511980 : /* variant for UPDATE and DELETE */ : where_or_current_clause: : WHERE a_expr { $$ = $2; } : | WHERE CURRENT_P OF cursor_name : { : CurrentOfExpr *n = makeNode(CurrentOfExpr); 0.00 : 516f5a: 48 8b 3d ff 38 6a 00 mov 0x6a38ff(%rip),%rdi # bba860 0.00 : 516f61: be 18 00 00 00 mov $0x18,%esi 0.00 : 516f66: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516f6d: e8 9e 1e 28 00 callq 798e10 0.00 : 516f72: c7 00 54 01 00 00 movl $0x154,(%rax) : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; 0.00 : 516f78: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cursor_param = 0; : $$ = (Node *) n; 0.00 : 516f7f: 49 89 c6 mov %rax,%r14 : WHERE a_expr { $$ = $2; } : | WHERE CURRENT_P OF cursor_name : { : CurrentOfExpr *n = makeNode(CurrentOfExpr); : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; 0.00 : 516f82: 48 8b 11 mov (%rcx),%rdx : n->cursor_param = 0; 0.00 : 516f85: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : WHERE a_expr { $$ = $2; } : | WHERE CURRENT_P OF cursor_name : { : CurrentOfExpr *n = makeNode(CurrentOfExpr); : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; 0.00 : 516f8c: 48 89 50 08 mov %rdx,0x8(%rax) : n->cursor_param = 0; : $$ = (Node *) n; : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516f90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516f97: e9 e4 a9 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : /* variant for UPDATE and DELETE */ : where_or_current_clause: : WHERE a_expr { $$ = $2; } 0.00 : 516f9c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516fa3: 4c 8b 32 mov (%rdx),%r14 : | WHERE CURRENT_P OF cursor_name 0.00 : 516fa6: e9 d5 a9 ff ff jmpq 511980 : ; : : : where_clause: : WHERE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516fab: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516fae: e9 cd a9 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = false; } : ; : : : where_clause: : WHERE a_expr { $$ = $2; } 0.00 : 516fb3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516fba: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516fbd: e9 be a9 ff ff jmpq 511980 : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_ordinality: WITH_ORDINALITY { $$ = true; } : | /*EMPTY*/ { $$ = false; } 0.00 : 516fc2: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 516fc5: e9 b6 a9 ff ff jmpq 511980 : : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_ordinality: WITH_ORDINALITY { $$ = true; } 0.00 : 516fca: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = false; } 0.00 : 516fcd: e9 ae a9 ff ff jmpq 511980 : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } : ; : : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516fd2: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516fd5: e9 a6 a9 ff ff jmpq 511980 : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } : ; : : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } 0.00 : 516fda: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516fe1: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516fe5: e9 96 a9 ff ff jmpq 511980 : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 516fea: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516ff1: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 516ff5: 48 8b 33 mov (%rbx),%rsi 0.00 : 516ff8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516fff: e8 7c ae 0c 00 callq 5e1e80 : ; 0.00 : 517004: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 51700b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51700e: e9 6d a9 ff ff jmpq 511980 : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } 0.00 : 517013: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51701a: 31 f6 xor %esi,%esi 0.00 : 51701c: 48 8b 39 mov (%rcx),%rdi 0.00 : 51701f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517026: e8 25 a8 0c 00 callq 5e1850 : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 51702b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } 0.00 : 517032: 49 89 c6 mov %rax,%r14 : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 517035: e9 46 a9 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } 0.00 : 51703a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517041: 31 f6 xor %esi,%esi 0.00 : 517043: 48 8b 38 mov (%rax),%rdi 0.00 : 517046: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51704d: e8 fe a7 0c 00 callq 5e1850 0.00 : 517052: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517059: 48 89 c6 mov %rax,%rsi 0.00 : 51705c: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 517060: e8 eb a7 0c 00 callq 5e1850 : ; 0.00 : 517065: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } 0.00 : 51706c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51706f: e9 0c a9 ff ff jmpq 511980 : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); 0.00 : 517074: 48 8b 3d e5 37 6a 00 mov 0x6a37e5(%rip),%rdi # bba860 0.00 : 51707b: be 20 00 00 00 mov $0x20,%esi 0.00 : 517080: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517087: e8 84 1d 28 00 callq 798e10 0.00 : 51708c: c7 00 94 03 00 00 movl $0x394,(%rax) : n->lateral = false; 0.00 : 517092: c6 40 04 00 movb $0x0,0x4(%rax) : n->ordinality = $6; : n->is_rowsfrom = true; : n->functions = $4; : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; 0.00 : 517096: 49 89 c6 mov %rax,%r14 : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $6; 0.00 : 517099: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5170a0: 0f b6 13 movzbl (%rbx),%edx : n->is_rowsfrom = true; 0.00 : 5170a3: c6 40 06 01 movb $0x1,0x6(%rax) : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $6; 0.00 : 5170a7: 88 50 05 mov %dl,0x5(%rax) : n->is_rowsfrom = true; : n->functions = $4; 0.00 : 5170aa: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5170ae: 48 89 50 08 mov %rdx,0x8(%rax) : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; : } : ; 0.00 : 5170b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5170b9: e9 c2 a8 ff ff jmpq 511980 : * It's also possible to attach a column definition list to the RangeFunction : * as a whole, but that's handled by the table_ref production. : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); 0.00 : 5170be: 48 8b 3d 9b 37 6a 00 mov 0x6a379b(%rip),%rdi # bba860 0.00 : 5170c5: be 20 00 00 00 mov $0x20,%esi 0.00 : 5170ca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5170d1: e8 3a 1d 28 00 callq 798e10 0.00 : 5170d6: c7 00 94 03 00 00 movl $0x394,(%rax) : n->lateral = false; 0.00 : 5170dc: c6 40 04 00 movb $0x0,0x4(%rax) : * It's also possible to attach a column definition list to the RangeFunction : * as a whole, but that's handled by the table_ref production. : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); 0.00 : 5170e0: 48 89 c3 mov %rax,%rbx : n->lateral = false; : n->ordinality = $2; 0.00 : 5170e3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->is_rowsfrom = false; : n->functions = list_make1(list_make2($1, NIL)); 0.00 : 5170ea: 31 f6 xor %esi,%esi 0.00 : 5170ec: 31 ff xor %edi,%edi : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; 0.00 : 5170ee: 49 89 de mov %rbx,%r14 : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $2; 0.00 : 5170f1: 0f b6 02 movzbl (%rdx),%eax : n->is_rowsfrom = false; 0.00 : 5170f4: c6 43 06 00 movb $0x0,0x6(%rbx) : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $2; 0.00 : 5170f8: 88 43 05 mov %al,0x5(%rbx) : n->is_rowsfrom = false; : n->functions = list_make1(list_make2($1, NIL)); 0.00 : 5170fb: e8 50 a7 0c 00 callq 5e1850 0.00 : 517100: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517107: 48 89 c6 mov %rax,%rsi 0.00 : 51710a: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51710e: e8 3d a7 0c 00 callq 5e1850 0.00 : 517113: 31 f6 xor %esi,%esi 0.00 : 517115: 48 89 c7 mov %rax,%rdi 0.00 : 517118: e8 33 a7 0c 00 callq 5e1850 0.00 : 51711d: 48 89 43 08 mov %rax,0x8(%rbx) : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality 0.00 : 517121: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517128: e9 53 a8 ff ff jmpq 511980 : $1->alias = alias; : $$ = $1; : } : | relation_expr AS ColId : { : Alias *alias = makeNode(Alias); 0.00 : 51712d: 48 8b 3d 2c 37 6a 00 mov 0x6a372c(%rip),%rdi # bba860 0.00 : 517134: be 18 00 00 00 mov $0x18,%esi 0.00 : 517139: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517140: e8 cb 1c 28 00 callq 798e10 0.00 : 517145: c7 00 2c 01 00 00 movl $0x12c,(%rax) : alias->aliasname = $3; 0.00 : 51714b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517152: 48 8b 16 mov (%rsi),%rdx 0.00 : 517155: 48 89 50 08 mov %rdx,0x8(%rax) : $1->alias = alias; 0.00 : 517159: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51715d: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = $1; 0.00 : 517161: 4c 8b 76 f0 mov -0x10(%rsi),%r14 : } : ; 0.00 : 517165: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51716c: e9 0f a8 ff ff jmpq 511980 : { : $$ = $1; : } : | relation_expr ColId : { : Alias *alias = makeNode(Alias); 0.00 : 517171: 48 8b 3d e8 36 6a 00 mov 0x6a36e8(%rip),%rdi # bba860 0.00 : 517178: be 18 00 00 00 mov $0x18,%esi 0.00 : 51717d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517184: e8 87 1c 28 00 callq 798e10 0.00 : 517189: c7 00 2c 01 00 00 movl $0x12c,(%rax) : alias->aliasname = $2; 0.00 : 51718f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517196: 48 8b 13 mov (%rbx),%rdx 0.00 : 517199: 48 89 50 08 mov %rdx,0x8(%rax) : $1->alias = alias; 0.00 : 51719d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5171a1: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = $1; 0.00 : 5171a5: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : | relation_expr AS ColId 0.00 : 5171a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5171b0: e9 cb a7 ff ff jmpq 511980 : * has, causing the parser to prefer to reduce, in effect assuming that the : * SET is not an alias. : */ : relation_expr_opt_alias: relation_expr %prec UMINUS : { : $$ = $1; 0.00 : 5171b5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5171bc: 4c 8b 31 mov (%rcx),%r14 : } : | relation_expr ColId 0.00 : 5171bf: e9 bc a7 ff ff jmpq 511980 : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 5171c4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5171cb: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5171cf: 48 8b 32 mov (%rdx),%rsi 0.00 : 5171d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5171d9: e8 a2 ac 0c 00 callq 5e1e80 : ; 0.00 : 5171de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 5171e5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5171e8: e9 93 a7 ff ff jmpq 511980 : } : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } 0.00 : 5171ed: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5171f4: 31 f6 xor %esi,%esi 0.00 : 5171f6: 48 8b 38 mov (%rax),%rdi 0.00 : 5171f9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517200: e8 4b a6 0c 00 callq 5e1850 : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 517205: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } 0.00 : 51720c: 49 89 c6 mov %rax,%r14 : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 51720f: e9 6c a7 ff ff jmpq 511980 : $$->alias = NULL; : } : | ONLY '(' qualified_name ')' : { : /* no inheritance, SQL99-style syntax */ : $$ = $3; 0.00 : 517214: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51721b: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->inhOpt = INH_NO; 0.00 : 51721f: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 517226: 00 : $$->alias = NULL; 0.00 : 517227: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51722e: 00 : } : ; 0.00 : 51722f: e9 4c a7 ff ff jmpq 511980 : $$->alias = NULL; : } : | ONLY qualified_name : { : /* no inheritance */ : $$ = $2; 0.00 : 517234: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51723b: 4c 8b 33 mov (%rbx),%r14 : $$->inhOpt = INH_NO; 0.00 : 51723e: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 517245: 00 : $$->alias = NULL; 0.00 : 517246: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51724d: 00 : } : | ONLY '(' qualified_name ')' 0.00 : 51724e: e9 2d a7 ff ff jmpq 511980 : $$->alias = NULL; : } : | qualified_name '*' : { : /* inheritance query */ : $$ = $1; 0.00 : 517253: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51725a: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : $$->inhOpt = INH_YES; 0.00 : 51725e: 41 c7 46 20 01 00 00 movl $0x1,0x20(%r14) 0.00 : 517265: 00 : $$->alias = NULL; 0.00 : 517266: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51726d: 00 : } : | ONLY qualified_name 0.00 : 51726e: e9 0d a7 ff ff jmpq 511980 : : relation_expr: : qualified_name : { : /* default inheritance */ : $$ = $1; 0.00 : 517273: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51727a: 4c 8b 32 mov (%rdx),%r14 : $$->inhOpt = INH_DEFAULT; 0.00 : 51727d: 41 c7 46 20 02 00 00 movl $0x2,0x20(%r14) 0.00 : 517284: 00 : $$->alias = NULL; 0.00 : 517285: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51728c: 00 : } : | qualified_name '*' 0.00 : 51728d: e9 ee a6 ff ff jmpq 511980 : * : * We return USING as a List node, while an ON-expr will not be a List. : */ : : join_qual: USING '(' name_list ')' { $$ = (Node *) $3; } : | ON a_expr { $$ = $2; } 0.00 : 517292: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517299: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 51729c: e9 df a6 ff ff jmpq 511980 : * ON expr allows more general qualifications. : * : * We return USING as a List node, while an ON-expr will not be a List. : */ : : join_qual: USING '(' name_list ')' { $$ = (Node *) $3; } 0.00 : 5172a1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5172a8: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | ON a_expr { $$ = $2; } 0.00 : 5172ac: e9 cf a6 ff ff jmpq 511980 : | INNER_P { $$ = JOIN_INNER; } : ; : : /* OUTER is just noise... */ : join_outer: OUTER_P { $$ = NULL; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5172b1: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5172b4: e9 c7 a6 ff ff jmpq 511980 : | RIGHT join_outer { $$ = JOIN_RIGHT; } : | INNER_P { $$ = JOIN_INNER; } : ; : : /* OUTER is just noise... */ : join_outer: OUTER_P { $$ = NULL; } 0.00 : 5172b9: 45 31 f6 xor %r14d,%r14d : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5172bc: e9 bf a6 ff ff jmpq 511980 : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } : | LEFT join_outer { $$ = JOIN_LEFT; } : | RIGHT join_outer { $$ = JOIN_RIGHT; } : | INNER_P { $$ = JOIN_INNER; } 0.00 : 5172c1: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5172c8: ff ff ff 0.00 : 5172cb: 49 21 de and %rbx,%r14 0.00 : 5172ce: 66 90 xchg %ax,%ax : ; 0.00 : 5172d0: e9 ab a6 ff ff jmpq 511980 : } : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } : | LEFT join_outer { $$ = JOIN_LEFT; } : | RIGHT join_outer { $$ = JOIN_RIGHT; } 0.00 : 5172d5: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5172dc: ff ff ff 0.00 : 5172df: 49 21 ce and %rcx,%r14 0.00 : 5172e2: 49 83 ce 03 or $0x3,%r14 : | INNER_P { $$ = JOIN_INNER; } 0.00 : 5172e6: e9 95 a6 ff ff jmpq 511980 : $$ = list_make2(NULL, NIL); : } : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } : | LEFT join_outer { $$ = JOIN_LEFT; } 0.00 : 5172eb: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5172f2: ff ff ff 0.00 : 5172f5: 49 21 d6 and %rdx,%r14 0.00 : 5172f8: 49 83 ce 01 or $0x1,%r14 : | RIGHT join_outer { $$ = JOIN_RIGHT; } 0.00 : 5172fc: e9 7f a6 ff ff jmpq 511980 : { : $$ = list_make2(NULL, NIL); : } : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } 0.00 : 517301: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 517308: ff ff ff 0.00 : 51730b: 49 21 c6 and %rax,%r14 0.00 : 51730e: 49 83 ce 02 or $0x2,%r14 : | LEFT join_outer { $$ = JOIN_LEFT; } 0.00 : 517312: e9 69 a6 ff ff jmpq 511980 : a->aliasname = $1; : $$ = list_make2(a, $3); : } : | /*EMPTY*/ : { : $$ = list_make2(NULL, NIL); 0.00 : 517317: 31 f6 xor %esi,%esi 0.00 : 517319: 31 ff xor %edi,%edi 0.00 : 51731b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517322: e8 29 a5 0c 00 callq 5e1850 0.00 : 517327: 31 ff xor %edi,%edi 0.00 : 517329: 48 89 c6 mov %rax,%rsi 0.00 : 51732c: e8 1f a5 0c 00 callq 5e1850 : } : ; 0.00 : 517331: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : a->aliasname = $1; : $$ = list_make2(a, $3); : } : | /*EMPTY*/ : { : $$ = list_make2(NULL, NIL); 0.00 : 517338: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51733b: e9 40 a6 ff ff jmpq 511980 : a->aliasname = $2; : $$ = list_make2(a, $4); : } : | ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 517340: 48 8b 3d 19 35 6a 00 mov 0x6a3519(%rip),%rdi # bba860 0.00 : 517347: be 18 00 00 00 mov $0x18,%esi 0.00 : 51734c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517353: e8 b8 1a 28 00 callq 798e10 0.00 : 517358: c7 00 2c 01 00 00 movl $0x12c,(%rax) : a->aliasname = $1; 0.00 : 51735e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : a->aliasname = $2; : $$ = list_make2(a, $4); : } : | ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 517365: 48 89 c3 mov %rax,%rbx : a->aliasname = $1; 0.00 : 517368: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51736c: 48 89 43 08 mov %rax,0x8(%rbx) : $$ = list_make2(a, $3); 0.00 : 517370: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 517374: 31 f6 xor %esi,%esi 0.00 : 517376: e8 d5 a4 0c 00 callq 5e1850 0.00 : 51737b: 48 89 df mov %rbx,%rdi 0.00 : 51737e: 48 89 c6 mov %rax,%rsi 0.00 : 517381: e8 ca a4 0c 00 callq 5e1850 : } : | /*EMPTY*/ 0.00 : 517386: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); : a->aliasname = $1; : $$ = list_make2(a, $3); 0.00 : 51738d: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ 0.00 : 517390: e9 eb a5 ff ff jmpq 511980 : { : $$ = list_make2(NULL, $3); : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 517395: 48 8b 3d c4 34 6a 00 mov 0x6a34c4(%rip),%rdi # bba860 0.00 : 51739c: be 18 00 00 00 mov $0x18,%esi 0.00 : 5173a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5173a8: e8 63 1a 28 00 callq 798e10 0.00 : 5173ad: c7 00 2c 01 00 00 movl $0x12c,(%rax) : a->aliasname = $2; 0.00 : 5173b3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : { : $$ = list_make2(NULL, $3); : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 5173ba: 48 89 c3 mov %rax,%rbx : a->aliasname = $2; : $$ = list_make2(a, $4); 0.00 : 5173bd: 31 f6 xor %esi,%esi : $$ = list_make2(NULL, $3); : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); : a->aliasname = $2; 0.00 : 5173bf: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 5173c3: 48 89 43 08 mov %rax,0x8(%rbx) : $$ = list_make2(a, $4); 0.00 : 5173c7: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 5173cb: e8 80 a4 0c 00 callq 5e1850 0.00 : 5173d0: 48 89 df mov %rbx,%rdi 0.00 : 5173d3: 48 89 c6 mov %rax,%rsi 0.00 : 5173d6: e8 75 a4 0c 00 callq 5e1850 : } : | ColId '(' TableFuncElementList ')' 0.00 : 5173db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); : a->aliasname = $2; : $$ = list_make2(a, $4); 0.00 : 5173e2: 49 89 c6 mov %rax,%r14 : } : | ColId '(' TableFuncElementList ')' 0.00 : 5173e5: e9 96 a5 ff ff jmpq 511980 : { : $$ = list_make2($1, NIL); : } : | AS '(' TableFuncElementList ')' : { : $$ = list_make2(NULL, $3); 0.00 : 5173ea: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5173f1: 31 f6 xor %esi,%esi 0.00 : 5173f3: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5173f7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5173fe: e8 4d a4 0c 00 callq 5e1850 0.00 : 517403: 31 ff xor %edi,%edi 0.00 : 517405: 48 89 c6 mov %rax,%rsi 0.00 : 517408: e8 43 a4 0c 00 callq 5e1850 : } : | AS ColId '(' TableFuncElementList ')' 0.00 : 51740d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make2($1, NIL); : } : | AS '(' TableFuncElementList ')' : { : $$ = list_make2(NULL, $3); 0.00 : 517414: 49 89 c6 mov %rax,%r14 : } : | AS ColId '(' TableFuncElementList ')' 0.00 : 517417: e9 64 a5 ff ff jmpq 511980 : * return a 2-element list that gets disassembled by calling production. : */ : func_alias_clause: : alias_clause : { : $$ = list_make2($1, NIL); 0.00 : 51741c: 31 f6 xor %esi,%esi 0.00 : 51741e: 31 ff xor %edi,%edi 0.00 : 517420: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517427: e8 24 a4 0c 00 callq 5e1850 0.00 : 51742c: 48 89 c6 mov %rax,%rsi 0.00 : 51742f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517436: 48 8b 38 mov (%rax),%rdi 0.00 : 517439: e8 12 a4 0c 00 callq 5e1850 : } : | AS '(' TableFuncElementList ')' 0.00 : 51743e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * return a 2-element list that gets disassembled by calling production. : */ : func_alias_clause: : alias_clause : { : $$ = list_make2($1, NIL); 0.00 : 517445: 49 89 c6 mov %rax,%r14 : } : | AS '(' TableFuncElementList ')' 0.00 : 517448: e9 33 a5 ff ff jmpq 511980 : $$->aliasname = $1; : } : ; : : opt_alias_clause: alias_clause { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51744d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517450: e9 2b a5 ff ff jmpq 511980 : $$ = makeNode(Alias); : $$->aliasname = $1; : } : ; : : opt_alias_clause: alias_clause { $$ = $1; } 0.00 : 517455: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51745c: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51745f: e9 1c a5 ff ff jmpq 511980 : $$->aliasname = $1; : $$->colnames = $3; : } : | ColId : { : $$ = makeNode(Alias); 0.00 : 517464: 48 8b 3d f5 33 6a 00 mov 0x6a33f5(%rip),%rdi # bba860 0.00 : 51746b: be 18 00 00 00 mov $0x18,%esi 0.00 : 517470: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517477: e8 94 19 28 00 callq 798e10 0.00 : 51747c: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $1; 0.00 : 517482: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$->aliasname = $1; : $$->colnames = $3; : } : | ColId : { : $$ = makeNode(Alias); 0.00 : 517489: 49 89 c6 mov %rax,%r14 : $$->aliasname = $1; 0.00 : 51748c: 48 8b 01 mov (%rcx),%rax 0.00 : 51748f: 49 89 46 08 mov %rax,0x8(%r14) : } : ; 0.00 : 517493: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51749a: e9 e1 a4 ff ff jmpq 511980 : $$ = makeNode(Alias); : $$->aliasname = $2; : } : | ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 51749f: 48 8b 3d ba 33 6a 00 mov 0x6a33ba(%rip),%rdi # bba860 0.00 : 5174a6: be 18 00 00 00 mov $0x18,%esi 0.00 : 5174ab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5174b2: e8 59 19 28 00 callq 798e10 0.00 : 5174b7: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $1; 0.00 : 5174bd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = makeNode(Alias); : $$->aliasname = $2; : } : | ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 5174c4: 49 89 c6 mov %rax,%r14 : $$->aliasname = $1; 0.00 : 5174c7: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 5174cb: 49 89 46 08 mov %rax,0x8(%r14) : $$->colnames = $3; 0.00 : 5174cf: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 5174d3: 49 89 46 10 mov %rax,0x10(%r14) : } : | ColId 0.00 : 5174d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5174de: e9 9d a4 ff ff jmpq 511980 : $$->aliasname = $2; : $$->colnames = $4; : } : | AS ColId : { : $$ = makeNode(Alias); 0.00 : 5174e3: 48 8b 3d 76 33 6a 00 mov 0x6a3376(%rip),%rdi # bba860 0.00 : 5174ea: be 18 00 00 00 mov $0x18,%esi 0.00 : 5174ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5174f6: e8 15 19 28 00 callq 798e10 0.00 : 5174fb: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $2; 0.00 : 517501: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$->aliasname = $2; : $$->colnames = $4; : } : | AS ColId : { : $$ = makeNode(Alias); 0.00 : 517508: 49 89 c6 mov %rax,%r14 : $$->aliasname = $2; 0.00 : 51750b: 48 8b 06 mov (%rsi),%rax 0.00 : 51750e: 49 89 46 08 mov %rax,0x8(%r14) : } : | ColId '(' name_list ')' 0.00 : 517512: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517519: e9 62 a4 ff ff jmpq 511980 : ; : : alias_clause: : AS ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 51751e: 48 8b 3d 3b 33 6a 00 mov 0x6a333b(%rip),%rdi # bba860 0.00 : 517525: be 18 00 00 00 mov $0x18,%esi 0.00 : 51752a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517531: e8 da 18 28 00 callq 798e10 0.00 : 517536: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $2; 0.00 : 51753c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : ; : : alias_clause: : AS ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 517543: 49 89 c6 mov %rax,%r14 : $$->aliasname = $2; 0.00 : 517546: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 51754a: 49 89 46 08 mov %rax,0x8(%r14) : $$->colnames = $4; 0.00 : 51754e: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 517552: 49 89 46 10 mov %rax,0x10(%r14) : } : | AS ColId 0.00 : 517556: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51755d: e9 1e a4 ff ff jmpq 511980 : $$ = n; : } : | table_ref NATURAL JOIN table_ref : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 517562: 48 8b 3d f7 32 6a 00 mov 0x6a32f7(%rip),%rdi # bba860 0.00 : 517569: be 40 00 00 00 mov $0x40,%esi 0.00 : 51756e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517575: e8 96 18 28 00 callq 798e10 0.00 : 51757a: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = JOIN_INNER; 0.00 : 517580: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $4; : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; 0.00 : 517587: 49 89 c6 mov %rax,%r14 : | table_ref NATURAL JOIN table_ref : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = TRUE; 0.00 : 51758a: c6 40 08 01 movb $0x1,0x8(%rax) : n->larg = $1; 0.00 : 51758e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517595: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 517599: 48 89 50 10 mov %rdx,0x10(%rax) : n->rarg = $4; 0.00 : 51759d: 48 8b 11 mov (%rcx),%rdx : n->usingClause = NIL; /* figure out which columns later... */ 0.00 : 5175a0: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5175a7: 00 : n->quals = NULL; /* fill later */ 0.00 : 5175a8: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5175af: 00 : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $4; 0.00 : 5175b0: 48 89 50 18 mov %rdx,0x18(%rax) : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; : } : ; 0.00 : 5175b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5175bb: e9 c0 a3 ff ff jmpq 511980 : n->quals = $4; /* ON clause */ : $$ = n; : } : | table_ref NATURAL join_type JOIN table_ref : { : JoinExpr *n = makeNode(JoinExpr); 0.00 : 5175c0: 48 8b 3d 99 32 6a 00 mov 0x6a3299(%rip),%rdi # bba860 0.00 : 5175c7: be 40 00 00 00 mov $0x40,%esi 0.00 : 5175cc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5175d3: e8 38 18 28 00 callq 798e10 0.00 : 5175d8: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = $3; 0.00 : 5175de: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $5; : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; 0.00 : 5175e5: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | table_ref NATURAL join_type JOIN table_ref : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $3; 0.00 : 5175e8: 8b 56 f0 mov -0x10(%rsi),%edx : n->isNatural = TRUE; 0.00 : 5175eb: c6 40 08 01 movb $0x1,0x8(%rax) : $$ = n; : } : | table_ref NATURAL join_type JOIN table_ref : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $3; 0.00 : 5175ef: 89 50 04 mov %edx,0x4(%rax) : n->isNatural = TRUE; : n->larg = $1; 0.00 : 5175f2: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 5175f6: 48 89 50 10 mov %rdx,0x10(%rax) : n->rarg = $5; 0.00 : 5175fa: 48 8b 16 mov (%rsi),%rdx : n->usingClause = NIL; /* figure out which columns later... */ 0.00 : 5175fd: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 517604: 00 : n->quals = NULL; /* fill later */ 0.00 : 517605: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51760c: 00 : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $3; : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $5; 0.00 : 51760d: 48 89 50 18 mov %rdx,0x18(%rax) : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; : } : | table_ref NATURAL JOIN table_ref 0.00 : 517611: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517618: e9 63 a3 ff ff jmpq 511980 : $$ = n; : } : | table_ref JOIN table_ref join_qual : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 51761d: 48 8b 3d 3c 32 6a 00 mov 0x6a323c(%rip),%rdi # bba860 0.00 : 517624: be 40 00 00 00 mov $0x40,%esi 0.00 : 517629: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517630: e8 db 17 28 00 callq 798e10 0.00 : 517635: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = JOIN_INNER; 0.00 : 51763b: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = n; : } : | table_ref JOIN table_ref join_qual : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 517642: 48 89 c2 mov %rax,%rdx : n->jointype = JOIN_INNER; : n->isNatural = FALSE; 0.00 : 517645: c6 40 08 00 movb $0x0,0x8(%rax) : n->larg = $1; 0.00 : 517649: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517650: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 517654: 48 89 42 10 mov %rax,0x10(%rdx) : n->rarg = $3; 0.00 : 517658: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 51765c: 48 89 42 18 mov %rax,0x18(%rdx) : if ($4 != NULL && IsA($4, List)) 0.00 : 517660: 48 8b 03 mov (%rbx),%rax 0.00 : 517663: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51766a: 48 85 c0 test %rax,%rax 0.00 : 51766d: 74 0c je 51767b 0.00 : 51766f: 81 38 90 02 00 00 cmpl $0x290,(%rax) 0.00 : 517675: 0f 84 e0 1d 01 00 je 52945b : n->usingClause = (List *) $4; /* USING clause */ : else : n->quals = $4; /* ON clause */ 0.00 : 51767b: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = n; 0.00 : 51767f: 49 89 d6 mov %rdx,%r14 : } : | table_ref NATURAL join_type JOIN table_ref 0.00 : 517682: e9 f9 a2 ff ff jmpq 511980 : ; : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } : | FOR SHARE { $$ = LCS_FORSHARE; } 0.00 : 517687: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51768e: ff ff ff 0.00 : 517691: 49 21 d6 and %rdx,%r14 0.00 : 517694: 49 83 ce 01 or $0x1,%r14 : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } 0.00 : 517698: e9 e3 a2 ff ff jmpq 511980 : } : ; : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } 0.00 : 51769d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5176a4: ff ff ff 0.00 : 5176a7: 49 21 c6 and %rax,%r14 0.00 : 5176aa: 49 83 ce 02 or $0x2,%r14 : | FOR SHARE { $$ = LCS_FORSHARE; } 0.00 : 5176ae: e9 cd a2 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } 0.00 : 5176b3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5176ba: ff ff ff 0.00 : 5176bd: 49 21 f6 and %rsi,%r14 0.00 : 5176c0: 49 83 ce 03 or $0x3,%r14 : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } 0.00 : 5176c4: e9 b7 a2 ff ff jmpq 511980 : ; : : for_locking_item: : for_locking_strength locked_rels_list opt_nowait_or_skip : { : LockingClause *n = makeNode(LockingClause); 0.00 : 5176c9: 48 8b 3d 90 31 6a 00 mov 0x6a3190(%rip),%rdi # bba860 0.00 : 5176d0: be 18 00 00 00 mov $0x18,%esi 0.00 : 5176d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5176dc: e8 2f 17 28 00 callq 798e10 0.00 : 5176e1: c7 00 a5 03 00 00 movl $0x3a5,(%rax) : n->lockedRels = $2; 0.00 : 5176e7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->strength = $1; : n->waitPolicy = $3; : $$ = (Node *) n; 0.00 : 5176ee: 49 89 c6 mov %rax,%r14 : : for_locking_item: : for_locking_strength locked_rels_list opt_nowait_or_skip : { : LockingClause *n = makeNode(LockingClause); : n->lockedRels = $2; 0.00 : 5176f1: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5176f5: 48 89 50 08 mov %rdx,0x8(%rax) : n->strength = $1; 0.00 : 5176f9: 8b 53 f0 mov -0x10(%rbx),%edx 0.00 : 5176fc: 89 50 10 mov %edx,0x10(%rax) : n->waitPolicy = $3; 0.00 : 5176ff: 8b 13 mov (%rbx),%edx 0.00 : 517701: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *) n; : } : ; 0.00 : 517704: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51770b: e9 70 a2 ff ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 517710: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517717: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51771b: 48 8b 31 mov (%rcx),%rsi 0.00 : 51771e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517725: e8 56 a7 0c 00 callq 5e1e80 : ; 0.00 : 51772a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 517731: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517734: e9 47 a2 ff ff jmpq 511980 : for_locking_clause { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } 0.00 : 517739: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517740: 31 f6 xor %esi,%esi 0.00 : 517742: 48 8b 3a mov (%rdx),%rdi 0.00 : 517745: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51774c: e8 ff a0 0c 00 callq 5e1850 : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 517751: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : for_locking_clause { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } 0.00 : 517758: 49 89 c6 mov %rax,%r14 : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 51775b: e9 20 a2 ff ff jmpq 511980 : | FOR READ ONLY { $$ = NIL; } : ; : : opt_for_locking_clause: : for_locking_clause { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 517760: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517763: e9 18 a2 ff ff jmpq 511980 : for_locking_items { $$ = $1; } : | FOR READ ONLY { $$ = NIL; } : ; : : opt_for_locking_clause: : for_locking_clause { $$ = $1; } 0.00 : 517768: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51776f: 4c 8b 30 mov (%rax),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 517772: e9 09 a2 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : for_locking_clause: : for_locking_items { $$ = $1; } : | FOR READ ONLY { $$ = NIL; } 0.00 : 517777: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51777a: e9 01 a2 ff ff jmpq 511980 : HAVING a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : for_locking_clause: : for_locking_items { $$ = $1; } 0.00 : 51777f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517786: 4c 8b 36 mov (%rsi),%r14 : | FOR READ ONLY { $$ = NIL; } 0.00 : 517789: e9 f2 a1 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : having_clause: : HAVING a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51778e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517791: e9 ea a1 ff ff jmpq 511980 : GROUP_P BY expr_list { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } : ; : : having_clause: : HAVING a_expr { $$ = $2; } 0.00 : 517796: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51779d: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5177a0: e9 db a1 ff ff jmpq 511980 : ; : : : group_clause: : GROUP_P BY expr_list { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5177a5: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5177a8: e9 d3 a1 ff ff jmpq 511980 : | NEXT { $$ = 0; } : ; : : : group_clause: : GROUP_P BY expr_list { $$ = $3; } 0.00 : 5177ad: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5177b4: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5177b7: e9 c4 a1 ff ff jmpq 511980 : row_or_rows: ROW { $$ = 0; } : | ROWS { $$ = 0; } : ; : : first_or_next: FIRST_P { $$ = 0; } : | NEXT { $$ = 0; } 0.00 : 5177bc: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5177c3: ff ff ff 0.00 : 5177c6: 49 21 d6 and %rdx,%r14 : ; 0.00 : 5177c9: e9 b2 a1 ff ff jmpq 511980 : /* noise words */ : row_or_rows: ROW { $$ = 0; } : | ROWS { $$ = 0; } : ; : : first_or_next: FIRST_P { $$ = 0; } 0.00 : 5177ce: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5177d5: ff ff ff 0.00 : 5177d8: 49 21 c6 and %rax,%r14 : | NEXT { $$ = 0; } 0.00 : 5177db: e9 a0 a1 ff ff jmpq 511980 : c_expr { $$ = $1; } : ; : : /* noise words */ : row_or_rows: ROW { $$ = 0; } : | ROWS { $$ = 0; } 0.00 : 5177e0: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5177e7: ff ff ff 0.00 : 5177ea: 49 21 f6 and %rsi,%r14 : ; 0.00 : 5177ed: e9 8e a1 ff ff jmpq 511980 : select_offset_value2: : c_expr { $$ = $1; } : ; : : /* noise words */ : row_or_rows: ROW { $$ = 0; } 0.00 : 5177f2: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5177f9: ff ff ff 0.00 : 5177fc: 49 21 de and %rbx,%r14 : | ROWS { $$ = 0; } 0.00 : 5177ff: e9 7c a1 ff ff jmpq 511980 : /* : * Again, the trailing ROW/ROWS in this case prevent the full expression : * syntax. c_expr is the best we can do. : */ : select_offset_value2: : c_expr { $$ = $1; } 0.00 : 517804: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51780b: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 51780e: e9 6d a1 ff ff jmpq 511980 : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } : | '(' a_expr ')' { $$ = $2; } : | /*EMPTY*/ { $$ = makeIntConst(1, -1); } 0.00 : 517813: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 517818: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51781d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517824: e8 e7 93 ff ff callq 510c10 : ; 0.00 : 517829: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } : | '(' a_expr ')' { $$ = $2; } : | /*EMPTY*/ { $$ = makeIntConst(1, -1); } 0.00 : 517830: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517833: e9 48 a1 ff ff jmpq 511980 : * constants, so we allow the rest only with parentheses. If omitted, : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } : | '(' a_expr ')' { $$ = $2; } 0.00 : 517838: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51783f: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | /*EMPTY*/ { $$ = makeIntConst(1, -1); } 0.00 : 517843: e9 38 a1 ff ff jmpq 511980 : * problems with the trailing ROW/ROWS key words. SQL only calls for : * constants, so we allow the rest only with parentheses. If omitted, : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } 0.00 : 517848: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51784f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517856: 8b 33 mov (%rbx),%esi 0.00 : 517858: 8b 38 mov (%rax),%edi 0.00 : 51785a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517861: e8 aa 93 ff ff callq 510c10 : | '(' a_expr ')' { $$ = $2; } 0.00 : 517866: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * problems with the trailing ROW/ROWS key words. SQL only calls for : * constants, so we allow the rest only with parentheses. If omitted, : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } 0.00 : 51786d: 49 89 c6 mov %rax,%r14 : | '(' a_expr ')' { $$ = $2; } 0.00 : 517870: e9 0b a1 ff ff jmpq 511980 : $$ = makeNullAConst(@1); : } : ; : : select_offset_value: : a_expr { $$ = $1; } 0.00 : 517875: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51787c: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 51787f: e9 fc a0 ff ff jmpq 511980 : select_limit_value: : a_expr { $$ = $1; } : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); 0.00 : 517884: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 51788b: 48 8b 3d ce 2f 6a 00 mov 0x6a2fce(%rip),%rdi # bba860 0.00 : 517892: be 20 00 00 00 mov $0x20,%esi : select_limit_value: : a_expr { $$ = $1; } : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); 0.00 : 517897: 8b 1a mov (%rdx),%ebx : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 517899: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5178a0: e8 6b 15 28 00 callq 798e10 0.00 : 5178a5: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 5178ab: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : select_limit_value: : a_expr { $$ = $1; } : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); 0.00 : 5178b2: 49 89 c6 mov %rax,%r14 : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Null; : n->location = location; 0.00 : 5178b5: 89 58 18 mov %ebx,0x18(%rax) : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); : } : ; 0.00 : 5178b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5178bf: e9 bc a0 ff ff jmpq 511980 : | OFFSET select_offset_value2 row_or_rows : { $$ = $2; } : ; : : select_limit_value: : a_expr { $$ = $1; } 0.00 : 5178c4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5178cb: 4c 8b 30 mov (%rax),%r14 : | ALL 0.00 : 5178ce: e9 ad a0 ff ff jmpq 511980 : offset_clause: : OFFSET select_offset_value : { $$ = $2; } : /* SQL:2008 syntax */ : | OFFSET select_offset_value2 row_or_rows : { $$ = $2; } 0.00 : 5178d3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5178da: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 5178de: e9 9d a0 ff ff jmpq 511980 : { $$ = $3; } : ; : : offset_clause: : OFFSET select_offset_value : { $$ = $2; } 0.00 : 5178e3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5178ea: 4c 8b 33 mov (%rbx),%r14 : /* SQL:2008 syntax */ 0.00 : 5178ed: e9 8e a0 ff ff jmpq 511980 : errhint("Use separate LIMIT and OFFSET clauses."), : parser_errposition(@1))); : } : /* SQL:2008 syntax */ : | FETCH first_or_next opt_select_fetch_first_value row_or_rows ONLY : { $$ = $3; } 0.00 : 5178f2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5178f9: 4c 8b 71 f0 mov -0x10(%rcx),%r14 : ; 0.00 : 5178fd: e9 7e a0 ff ff jmpq 511980 : LIMIT select_limit_value : { $$ = $2; } : | LIMIT select_limit_value ',' select_offset_value : { : /* Disabled because it was too confusing, bjm 2002-02-18 */ : ereport(ERROR, 0.00 : 517902: 45 31 c0 xor %r8d,%r8d 0.00 : 517905: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 51790a: ba d1 26 00 00 mov $0x26d1,%edx 0.00 : 51790f: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 517914: bf 14 00 00 00 mov $0x14,%edi 0.00 : 517919: e8 a2 31 26 00 callq 77aac0 0.00 : 51791e: 84 c0 test %al,%al 0.00 : 517920: 0f 84 81 a6 ff ff je 511fa7 0.00 : 517926: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51792d: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 517934: 8b 7a f4 mov -0xc(%rdx),%edi 0.00 : 517937: e8 64 63 ff ff callq 50dca0 0.00 : 51793c: bf 30 a2 7c 00 mov $0x7ca230,%edi 0.00 : 517941: 41 89 c5 mov %eax,%r13d 0.00 : 517944: 31 c0 xor %eax,%eax 0.00 : 517946: e8 55 43 26 00 callq 77bca0 0.00 : 51794b: bf 58 a2 7c 00 mov $0x7ca258,%edi 0.00 : 517950: 89 c3 mov %eax,%ebx 0.00 : 517952: e9 b9 5b 00 00 jmpq 51d510 : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } : ; : : limit_clause: : LIMIT select_limit_value : { $$ = $2; } 0.00 : 517957: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51795e: 4c 8b 30 mov (%rax),%r14 : | LIMIT select_limit_value ',' select_offset_value 0.00 : 517961: e9 1a a0 ff ff jmpq 511980 : | offset_clause { $$ = list_make2($1, NULL); } : ; : : opt_select_limit: : select_limit { $$ = $1; } : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } 0.00 : 517966: 31 f6 xor %esi,%esi 0.00 : 517968: 31 ff xor %edi,%edi 0.00 : 51796a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517971: e8 da 9e 0c 00 callq 5e1850 0.00 : 517976: 31 ff xor %edi,%edi 0.00 : 517978: 48 89 c6 mov %rax,%rsi 0.00 : 51797b: e8 d0 9e 0c 00 callq 5e1850 : ; 0.00 : 517980: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | offset_clause { $$ = list_make2($1, NULL); } : ; : : opt_select_limit: : select_limit { $$ = $1; } : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } 0.00 : 517987: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51798a: e9 f1 9f ff ff jmpq 511980 : | limit_clause { $$ = list_make2(NULL, $1); } : | offset_clause { $$ = list_make2($1, NULL); } : ; : : opt_select_limit: : select_limit { $$ = $1; } 0.00 : 51798f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517996: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } 0.00 : 517999: e9 e2 9f ff ff jmpq 511980 : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 51799e: 31 f6 xor %esi,%esi 0.00 : 5179a0: 31 ff xor %edi,%edi 0.00 : 5179a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5179a9: e8 a2 9e 0c 00 callq 5e1850 0.00 : 5179ae: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5179b5: 48 89 c6 mov %rax,%rsi 0.00 : 5179b8: 48 8b 3b mov (%rbx),%rdi 0.00 : 5179bb: e8 90 9e 0c 00 callq 5e1850 : ; 0.00 : 5179c0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 5179c7: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5179ca: e9 b1 9f ff ff jmpq 511980 : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 5179cf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5179d6: 31 f6 xor %esi,%esi 0.00 : 5179d8: 48 8b 39 mov (%rcx),%rdi 0.00 : 5179db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5179e2: e8 69 9e 0c 00 callq 5e1850 0.00 : 5179e7: 31 ff xor %edi,%edi 0.00 : 5179e9: 48 89 c6 mov %rax,%rsi 0.00 : 5179ec: e8 5f 9e 0c 00 callq 5e1850 : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 5179f1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 5179f8: 49 89 c6 mov %rax,%r14 : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 5179fb: e9 80 9f ff ff jmpq 511980 : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a00: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517a07: 31 f6 xor %esi,%esi 0.00 : 517a09: 48 8b 38 mov (%rax),%rdi 0.00 : 517a0c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517a13: e8 38 9e 0c 00 callq 5e1850 0.00 : 517a18: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517a1f: 48 89 c6 mov %rax,%rsi 0.00 : 517a22: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 517a26: e8 25 9e 0c 00 callq 5e1850 : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 517a2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a32: 49 89 c6 mov %rax,%r14 : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 517a35: e9 46 9f ff ff jmpq 511980 : } : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } 0.00 : 517a3a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517a41: 31 f6 xor %esi,%esi 0.00 : 517a43: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 517a47: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517a4e: e8 fd 9d 0c 00 callq 5e1850 0.00 : 517a53: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517a5a: 48 89 c6 mov %rax,%rsi 0.00 : 517a5d: 48 8b 3b mov (%rbx),%rdi 0.00 : 517a60: e8 eb 9d 0c 00 callq 5e1850 : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a65: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } 0.00 : 517a6c: 49 89 c6 mov %rax,%r14 : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a6f: e9 0c 9f ff ff jmpq 511980 : $$->useOp = $3; : $$->location = @3; : } : | a_expr opt_asc_desc opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517a74: 48 8b 3d e5 2d 6a 00 mov 0x6a2de5(%rip),%rdi # bba860 0.00 : 517a7b: be 28 00 00 00 mov $0x28,%esi 0.00 : 517a80: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517a87: e8 84 13 28 00 callq 798e10 0.00 : 517a8c: c7 00 91 03 00 00 movl $0x391,(%rax) : $$->node = $1; 0.00 : 517a92: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->useOp = $3; : $$->location = @3; : } : | a_expr opt_asc_desc opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517a99: 49 89 c6 mov %rax,%r14 : $$->node = $1; 0.00 : 517a9c: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 517aa0: 49 89 46 08 mov %rax,0x8(%r14) : $$->sortby_dir = $2; 0.00 : 517aa4: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 517aa7: 41 89 46 10 mov %eax,0x10(%r14) : $$->sortby_nulls = $3; 0.00 : 517aab: 8b 02 mov (%rdx),%eax : $$->useOp = NIL; 0.00 : 517aad: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 517ab4: 00 : $$->location = -1; /* no operator */ 0.00 : 517ab5: 41 c7 46 20 ff ff ff movl $0xffffffff,0x20(%r14) 0.00 : 517abc: ff : | a_expr opt_asc_desc opt_nulls_order : { : $$ = makeNode(SortBy); : $$->node = $1; : $$->sortby_dir = $2; : $$->sortby_nulls = $3; 0.00 : 517abd: 41 89 46 14 mov %eax,0x14(%r14) : $$->useOp = NIL; : $$->location = -1; /* no operator */ : } : ; 0.00 : 517ac1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517ac8: e9 b3 9e ff ff jmpq 511980 : | sortby_list ',' sortby { $$ = lappend($1, $3); } : ; : : sortby: a_expr USING qual_all_Op opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517acd: 48 8b 3d 8c 2d 6a 00 mov 0x6a2d8c(%rip),%rdi # bba860 0.00 : 517ad4: be 28 00 00 00 mov $0x28,%esi 0.00 : 517ad9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517ae0: e8 2b 13 28 00 callq 798e10 0.00 : 517ae5: c7 00 91 03 00 00 movl $0x391,(%rax) : $$->node = $1; 0.00 : 517aeb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : | sortby_list ',' sortby { $$ = lappend($1, $3); } : ; : : sortby: a_expr USING qual_all_Op opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517af2: 49 89 c6 mov %rax,%r14 : $$->node = $1; 0.00 : 517af5: 48 8b 43 e8 mov -0x18(%rbx),%rax : $$->sortby_dir = SORTBY_USING; 0.00 : 517af9: 41 c7 46 10 03 00 00 movl $0x3,0x10(%r14) 0.00 : 517b00: 00 : ; : : sortby: a_expr USING qual_all_Op opt_nulls_order : { : $$ = makeNode(SortBy); : $$->node = $1; 0.00 : 517b01: 49 89 46 08 mov %rax,0x8(%r14) : $$->sortby_dir = SORTBY_USING; : $$->sortby_nulls = $4; 0.00 : 517b05: 8b 03 mov (%rbx),%eax 0.00 : 517b07: 41 89 46 14 mov %eax,0x14(%r14) : $$->useOp = $3; 0.00 : 517b0b: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 517b0f: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @3; 0.00 : 517b13: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 517b1a: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 517b1d: 41 89 46 20 mov %eax,0x20(%r14) : } : | a_expr opt_asc_desc opt_nulls_order 0.00 : 517b21: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517b28: e9 53 9e ff ff jmpq 511980 : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b2d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517b34: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 517b38: 48 8b 31 mov (%rcx),%rsi 0.00 : 517b3b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517b42: e8 39 a3 0c 00 callq 5e1e80 : ; 0.00 : 517b47: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b4e: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517b51: e9 2a 9e ff ff jmpq 511980 : sort_clause: : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } 0.00 : 517b56: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517b5d: 31 f6 xor %esi,%esi 0.00 : 517b5f: 48 8b 3a mov (%rdx),%rdi 0.00 : 517b62: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517b69: e8 e2 9c 0c 00 callq 5e1850 : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b6e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : sort_clause: : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } 0.00 : 517b75: 49 89 c6 mov %rax,%r14 : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b78: e9 03 9e ff ff jmpq 511980 : sort_clause { $$ = $1;} : | /*EMPTY*/ { $$ = NIL; } : ; : : sort_clause: : ORDER BY sortby_list { $$ = $3; } 0.00 : 517b7d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517b84: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 517b87: e9 f4 9d ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_sort_clause: : sort_clause { $$ = $1;} : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517b8c: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517b8f: e9 ec 9d ff ff jmpq 511980 : | ALL { $$ = NIL; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_sort_clause: : sort_clause { $$ = $1;} 0.00 : 517b94: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517b9b: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517b9e: e9 dd 9d ff ff jmpq 511980 : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } : | DISTINCT ON '(' expr_list ')' { $$ = $4; } : | ALL { $$ = NIL; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517ba3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517ba6: e9 d5 9d ff ff jmpq 511980 : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } : | DISTINCT ON '(' expr_list ')' { $$ = $4; } : | ALL { $$ = NIL; } 0.00 : 517bab: 45 31 f6 xor %r14d,%r14d : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517bae: e9 cd 9d ff ff jmpq 511980 : /* We use (NIL) as a placeholder to indicate that all target expressions : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } : | DISTINCT ON '(' expr_list ')' { $$ = $4; } 0.00 : 517bb3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517bba: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | ALL { $$ = NIL; } 0.00 : 517bbe: e9 bd 9d ff ff jmpq 511980 : : /* We use (NIL) as a placeholder to indicate that all target expressions : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } 0.00 : 517bc3: 31 f6 xor %esi,%esi 0.00 : 517bc5: 31 ff xor %edi,%edi 0.00 : 517bc7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517bce: e8 7d 9c 0c 00 callq 5e1850 : | DISTINCT ON '(' expr_list ')' { $$ = $4; } 0.00 : 517bd3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* We use (NIL) as a placeholder to indicate that all target expressions : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } 0.00 : 517bda: 49 89 c6 mov %rax,%r14 : | DISTINCT ON '(' expr_list ')' { $$ = $4; } 0.00 : 517bdd: e9 9e 9d ff ff jmpq 511980 : | /*EMPTY*/ {} : ; : : opt_all: ALL { $$ = TRUE; } : | DISTINCT { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 517be2: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 517be5: e9 96 9d ff ff jmpq 511980 : opt_table: TABLE {} : | /*EMPTY*/ {} : ; : : opt_all: ALL { $$ = TRUE; } : | DISTINCT { $$ = FALSE; } 0.00 : 517bea: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 517bed: e9 8e 9d ff ff jmpq 511980 : : opt_table: TABLE {} : | /*EMPTY*/ {} : ; : : opt_all: ALL { $$ = TRUE; } 0.00 : 517bf2: 41 b6 01 mov $0x1,%r14b : | DISTINCT { $$ = FALSE; } 0.00 : 517bf5: e9 86 9d ff ff jmpq 511980 : { : $$ = makeBoolAConst(FALSE, @1); : } : | NULL_P : { : $$ = makeNullAConst(@1); 0.00 : 517bfa: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 517c01: 48 8b 3d 58 2c 6a 00 mov 0x6a2c58(%rip),%rdi # bba860 : { : $$ = makeBoolAConst(FALSE, @1); : } : | NULL_P : { : $$ = makeNullAConst(@1); 0.00 : 517c08: 8b 1e mov (%rsi),%ebx : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 517c0a: be 20 00 00 00 mov $0x20,%esi 0.00 : 517c0f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517c16: e8 f5 11 28 00 callq 798e10 0.00 : 517c1b: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 517c21: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : { : $$ = makeBoolAConst(FALSE, @1); : } : | NULL_P : { : $$ = makeNullAConst(@1); 0.00 : 517c28: 49 89 c6 mov %rax,%r14 : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Null; : n->location = location; 0.00 : 517c2b: 89 58 18 mov %ebx,0x18(%rax) : } : | NULL_P : { : $$ = makeNullAConst(@1); : } : ; 0.00 : 517c2e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517c35: e9 46 9d ff ff jmpq 511980 : : Iconst: ICONST { $$ = $1; }; 0.00 : 517c3a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517c41: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 517c48: ff ff ff 0.00 : 517c4b: 49 21 ce and %rcx,%r14 0.00 : 517c4e: 8b 02 mov (%rdx),%eax 0.00 : 517c50: 49 09 c6 or %rax,%r14 : Sconst: SCONST { $$ = $1; }; 0.00 : 517c53: e9 28 9d ff ff jmpq 511980 : $$ = $2; : $$->relpersistence = RELPERSISTENCE_PERMANENT; : } : | qualified_name : { : $$ = $1; 0.00 : 517c58: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517c5f: 4c 8b 31 mov (%rcx),%r14 : $$->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 517c62: 41 c6 46 24 70 movb $0x70,0x24(%r14) : } : ; 0.00 : 517c67: e9 14 9d ff ff jmpq 511980 : $$ = $3; : $$->relpersistence = RELPERSISTENCE_UNLOGGED; : } : | TABLE qualified_name : { : $$ = $2; 0.00 : 517c6c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517c73: 4c 8b 32 mov (%rdx),%r14 : $$->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 517c76: 41 c6 46 24 70 movb $0x70,0x24(%r14) : } : | qualified_name 0.00 : 517c7b: e9 00 9d ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | UNLOGGED opt_table qualified_name : { : $$ = $3; 0.00 : 517c80: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517c87: 4c 8b 30 mov (%rax),%r14 : $$->relpersistence = RELPERSISTENCE_UNLOGGED; 0.00 : 517c8a: 41 c6 46 24 75 movb $0x75,0x24(%r14) : } : | TABLE qualified_name 0.00 : 517c8f: e9 ec 9c ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | GLOBAL TEMP opt_table qualified_name : { : ereport(WARNING, 0.00 : 517c94: 45 31 c0 xor %r8d,%r8d 0.00 : 517c97: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 517c9c: ba 70 26 00 00 mov $0x2670,%edx 0.00 : 517ca1: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 517ca6: bf 13 00 00 00 mov $0x13,%edi 0.00 : 517cab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517cb2: e8 09 2e 26 00 callq 77aac0 0.00 : 517cb7: 84 c0 test %al,%al 0.00 : 517cb9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517cc0: 74 36 je 517cf8 0.00 : 517cc2: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 517cc9: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 517cd0: 8b 7b f4 mov -0xc(%rbx),%edi 0.00 : 517cd3: e8 c8 5f ff ff callq 50dca0 0.00 : 517cd8: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 517cdd: 89 c3 mov %eax,%ebx 0.00 : 517cdf: 31 c0 xor %eax,%eax 0.00 : 517ce1: e8 ba 4b 26 00 callq 77c8a0 0.00 : 517ce6: 89 de mov %ebx,%esi 0.00 : 517ce8: 89 c7 mov %eax,%edi 0.00 : 517cea: 31 c0 xor %eax,%eax 0.00 : 517cec: e8 ef 28 26 00 callq 77a5e0 0.00 : 517cf1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = $4; 0.00 : 517cf8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517cff: 4c 8b 36 mov (%rsi),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517d02: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | UNLOGGED opt_table qualified_name 0.00 : 517d07: e9 74 9c ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | GLOBAL TEMPORARY opt_table qualified_name : { : ereport(WARNING, 0.00 : 517d0c: 45 31 c0 xor %r8d,%r8d 0.00 : 517d0f: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 517d14: ba 68 26 00 00 mov $0x2668,%edx 0.00 : 517d19: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 517d1e: bf 13 00 00 00 mov $0x13,%edi 0.00 : 517d23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517d2a: e8 91 2d 26 00 callq 77aac0 0.00 : 517d2f: 84 c0 test %al,%al 0.00 : 517d31: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517d38: 74 36 je 517d70 0.00 : 517d3a: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 517d41: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 517d48: 8b 7a f4 mov -0xc(%rdx),%edi 0.00 : 517d4b: e8 50 5f ff ff callq 50dca0 0.00 : 517d50: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 517d55: 89 c3 mov %eax,%ebx 0.00 : 517d57: 31 c0 xor %eax,%eax 0.00 : 517d59: e8 42 4b 26 00 callq 77c8a0 0.00 : 517d5e: 89 de mov %ebx,%esi 0.00 : 517d60: 89 c7 mov %eax,%edi 0.00 : 517d62: 31 c0 xor %eax,%eax 0.00 : 517d64: e8 77 28 26 00 callq 77a5e0 0.00 : 517d69: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = $4; 0.00 : 517d70: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517d77: 4c 8b 31 mov (%rcx),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517d7a: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | GLOBAL TEMP opt_table qualified_name 0.00 : 517d7f: e9 fc 9b ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | LOCAL TEMP opt_table qualified_name : { : $$ = $4; 0.00 : 517d84: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517d8b: 4c 8b 30 mov (%rax),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517d8e: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | GLOBAL TEMPORARY opt_table qualified_name 0.00 : 517d93: e9 e8 9b ff ff jmpq 511980 : $$ = $3; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | LOCAL TEMPORARY opt_table qualified_name : { : $$ = $4; 0.00 : 517d98: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517d9f: 4c 8b 36 mov (%rsi),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517da2: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | LOCAL TEMP opt_table qualified_name 0.00 : 517da7: e9 d4 9b ff ff jmpq 511980 : $$ = $3; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | TEMP opt_table qualified_name : { : $$ = $3; 0.00 : 517dac: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517db3: 4c 8b 33 mov (%rbx),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517db6: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | LOCAL TEMPORARY opt_table qualified_name 0.00 : 517dbb: e9 c0 9b ff ff jmpq 511980 : * since TEMP is not a reserved word. See also OptTemp. : */ : OptTempTableName: : TEMPORARY opt_table qualified_name : { : $$ = $3; 0.00 : 517dc0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517dc7: 4c 8b 31 mov (%rcx),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517dca: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | TEMP opt_table qualified_name 0.00 : 517dcf: e9 ac 9b ff ff jmpq 511980 : $$->tableSpaceName = NULL; : $$->viewQuery = NULL; : $$->skipData = false; : } : | /*EMPTY*/ : { $$ = NULL; } 0.00 : 517dd4: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517dd7: e9 a4 9b ff ff jmpq 511980 : ; : : into_clause: : INTO OptTempTableName : { : $$ = makeNode(IntoClause); 0.00 : 517ddc: 48 8b 3d 7d 2a 6a 00 mov 0x6a2a7d(%rip),%rdi # bba860 0.00 : 517de3: be 40 00 00 00 mov $0x40,%esi 0.00 : 517de8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517def: e8 1c 10 28 00 callq 798e10 0.00 : 517df4: c7 00 59 01 00 00 movl $0x159,(%rax) : $$->rel = $2; 0.00 : 517dfa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : ; : : into_clause: : INTO OptTempTableName : { : $$ = makeNode(IntoClause); 0.00 : 517e01: 49 89 c6 mov %rax,%r14 : $$->rel = $2; 0.00 : 517e04: 48 8b 02 mov (%rdx),%rax : $$->colNames = NIL; 0.00 : 517e07: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 517e0e: 00 : $$->options = NIL; 0.00 : 517e0f: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 517e16: 00 : $$->onCommit = ONCOMMIT_NOOP; 0.00 : 517e17: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 517e1e: 00 : $$->tableSpaceName = NULL; 0.00 : 517e1f: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 517e26: 00 : $$->viewQuery = NULL; 0.00 : 517e27: 49 c7 46 30 00 00 00 movq $0x0,0x30(%r14) 0.00 : 517e2e: 00 : : into_clause: : INTO OptTempTableName : { : $$ = makeNode(IntoClause); : $$->rel = $2; 0.00 : 517e2f: 49 89 46 08 mov %rax,0x8(%r14) : $$->colNames = NIL; : $$->options = NIL; : $$->onCommit = ONCOMMIT_NOOP; : $$->tableSpaceName = NULL; : $$->viewQuery = NULL; : $$->skipData = false; 0.00 : 517e33: 41 c6 46 38 00 movb $0x0,0x38(%r14) : } : | /*EMPTY*/ 0.00 : 517e38: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517e3f: e9 3c 9b ff ff jmpq 511980 : } : ; : : opt_with_clause: : with_clause { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 517e44: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517e47: e9 34 9b ff ff jmpq 511980 : { : $$ = (Node *) $1; : } : | '(' joined_table ')' alias_clause : { : $2->alias = $4; 0.00 : 517e4c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517e53: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 517e57: 48 8b 01 mov (%rcx),%rax 0.00 : 517e5a: 48 89 42 30 mov %rax,0x30(%rdx) : $$ = (Node *) $2; 0.00 : 517e5e: 4c 8b 71 f0 mov -0x10(%rcx),%r14 : } : ; 0.00 : 517e62: e9 19 9b ff ff jmpq 511980 : } : $$ = (Node *) n; : } : | joined_table : { : $$ = (Node *) $1; 0.00 : 517e67: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517e6e: 4c 8b 30 mov (%rax),%r14 : } : | '(' joined_table ')' alias_clause 0.00 : 517e71: e9 0a 9b ff ff jmpq 511980 : } : $$ = (Node *) n; : } : | LATERAL_P select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517e76: 48 8b 3d e3 29 6a 00 mov 0x6a29e3(%rip),%rdi # bba860 0.00 : 517e7d: be 18 00 00 00 mov $0x18,%esi 0.00 : 517e82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517e89: e8 82 0f 28 00 callq 798e10 0.00 : 517e8e: c7 00 93 03 00 00 movl $0x393,(%rax) : n->lateral = true; 0.00 : 517e94: c6 40 04 01 movb $0x1,0x4(%rax) : } : $$ = (Node *) n; : } : | LATERAL_P select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517e98: 48 89 c2 mov %rax,%rdx : n->lateral = true; : n->subquery = $2; 0.00 : 517e9b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517ea2: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 517ea6: 48 89 42 08 mov %rax,0x8(%rdx) : n->alias = $3; 0.00 : 517eaa: 48 8b 01 mov (%rcx),%rax 0.00 : 517ead: 48 89 42 10 mov %rax,0x10(%rdx) : /* same coment as above */ : if ($3 == NULL) 0.00 : 517eb1: 48 83 39 00 cmpq $0x0,(%rcx) 0.00 : 517eb5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517ebc: 0f 84 7b 1d 01 00 je 529c3d : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("subquery in FROM must have an alias"), : errhint("For example, FROM (SELECT ...) [AS] foo."), : parser_errposition(@2))); : } : $$ = (Node *) n; 0.00 : 517ec2: 49 89 d6 mov %rdx,%r14 : } : | joined_table 0.00 : 517ec5: e9 b6 9a ff ff jmpq 511980 : n->coldeflist = lsecond($3); : $$ = (Node *) n; : } : | select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517eca: 48 8b 3d 8f 29 6a 00 mov 0x6a298f(%rip),%rdi # bba860 0.00 : 517ed1: be 18 00 00 00 mov $0x18,%esi 0.00 : 517ed6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517edd: e8 2e 0f 28 00 callq 798e10 0.00 : 517ee2: c7 00 93 03 00 00 movl $0x393,(%rax) : n->lateral = false; 0.00 : 517ee8: c6 40 04 00 movb $0x0,0x4(%rax) : n->coldeflist = lsecond($3); : $$ = (Node *) n; : } : | select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517eec: 48 89 c2 mov %rax,%rdx : n->lateral = false; : n->subquery = $1; 0.00 : 517eef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517ef6: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 517efa: 48 89 42 08 mov %rax,0x8(%rdx) : n->alias = $2; 0.00 : 517efe: 48 8b 01 mov (%rcx),%rax 0.00 : 517f01: 48 89 42 10 mov %rax,0x10(%rdx) : * popular demand, but for now let's just implement : * the spec and see if anyone complains. : * However, it does seem like a good idea to emit : * an error message that's better than "syntax error". : */ : if ($2 == NULL) 0.00 : 517f05: 48 83 39 00 cmpq $0x0,(%rcx) 0.00 : 517f09: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517f10: 0f 84 93 1d 01 00 je 529ca9 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("subquery in FROM must have an alias"), : errhint("For example, FROM (SELECT ...) [AS] foo."), : parser_errposition(@1))); : } : $$ = (Node *) n; 0.00 : 517f16: 49 89 d6 mov %rdx,%r14 : } : | LATERAL_P select_with_parens opt_alias_clause 0.00 : 517f19: e9 62 9a ff ff jmpq 511980 : n->coldeflist = lsecond($2); : $$ = (Node *) n; : } : | LATERAL_P func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $2; 0.00 : 517f1e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517f25: 48 8b 48 f8 mov -0x8(%rax),%rcx : n->lateral = true; 0.00 : 517f29: c6 41 04 01 movb $0x1,0x4(%rcx) : n->alias = linitial($3); 0.00 : 517f2d: 48 8b 10 mov (%rax),%rdx 0.00 : 517f30: 31 c0 xor %eax,%eax 0.00 : 517f32: 48 85 d2 test %rdx,%rdx 0.00 : 517f35: 74 04 je 517f3b 0.00 : 517f37: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 517f3b: 48 8b 00 mov (%rax),%rax 0.00 : 517f3e: 48 89 41 10 mov %rax,0x10(%rcx) : n->coldeflist = lsecond($3); 0.00 : 517f42: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517f49: 48 8b 02 mov (%rdx),%rax 0.00 : 517f4c: 31 d2 xor %edx,%edx 0.00 : 517f4e: 48 85 c0 test %rax,%rax 0.00 : 517f51: 74 04 je 517f57 0.00 : 517f53: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 517f57: 48 8b 42 08 mov 0x8(%rdx),%rax : $$ = (Node *) n; 0.00 : 517f5b: 49 89 ce mov %rcx,%r14 : | LATERAL_P func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $2; : n->lateral = true; : n->alias = linitial($3); : n->coldeflist = lsecond($3); 0.00 : 517f5e: 48 8b 00 mov (%rax),%rax 0.00 : 517f61: 48 89 41 18 mov %rax,0x18(%rcx) : $$ = (Node *) n; : } : | select_with_parens opt_alias_clause 0.00 : 517f65: e9 16 9a ff ff jmpq 511980 : /* : * table_ref is where an alias clause can be attached. : */ : table_ref: relation_expr opt_alias_clause : { : $1->alias = $2; 0.00 : 517f6a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517f71: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 517f75: 48 8b 01 mov (%rcx),%rax 0.00 : 517f78: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = (Node *) $1; 0.00 : 517f7c: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : } : | func_table func_alias_clause 0.00 : 517f80: e9 fb 99 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 517f85: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517f8c: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 517f90: 48 8b 36 mov (%rsi),%rsi 0.00 : 517f93: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517f9a: e8 e1 9e 0c 00 callq 5e1e80 : ; 0.00 : 517f9f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 517fa6: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517fa9: e9 d2 99 ff ff jmpq 511980 : $1->alias = $2; : $$ = (Node *) $1; : } : | func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $1; 0.00 : 517fae: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517fb5: 31 c0 xor %eax,%eax : n->alias = linitial($2); 0.00 : 517fb7: 48 8b 13 mov (%rbx),%rdx : $1->alias = $2; : $$ = (Node *) $1; : } : | func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $1; 0.00 : 517fba: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 517fbe: 48 85 d2 test %rdx,%rdx 0.00 : 517fc1: 74 04 je 517fc7 0.00 : 517fc3: 48 8b 42 08 mov 0x8(%rdx),%rax : n->alias = linitial($2); 0.00 : 517fc7: 48 8b 00 mov (%rax),%rax 0.00 : 517fca: 31 d2 xor %edx,%edx 0.00 : 517fcc: 48 89 41 10 mov %rax,0x10(%rcx) : n->coldeflist = lsecond($2); 0.00 : 517fd0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517fd7: 48 8b 06 mov (%rsi),%rax 0.00 : 517fda: 48 85 c0 test %rax,%rax 0.00 : 517fdd: 74 04 je 517fe3 0.00 : 517fdf: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 517fe3: 48 8b 42 08 mov 0x8(%rdx),%rax : $$ = (Node *) n; 0.00 : 517fe7: 49 89 ce mov %rcx,%r14 : } : | func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $1; : n->alias = linitial($2); : n->coldeflist = lsecond($2); 0.00 : 517fea: 48 8b 00 mov (%rax),%rax 0.00 : 517fed: 48 89 41 18 mov %rax,0x18(%rcx) : $$ = (Node *) n; : } : | LATERAL_P func_table func_alias_clause 0.00 : 517ff1: e9 8a 99 ff ff jmpq 511980 : FROM from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } 0.00 : 517ff6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517ffd: 31 f6 xor %esi,%esi 0.00 : 517fff: 48 8b 3b mov (%rbx),%rdi 0.00 : 518002: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518009: e8 42 98 0c 00 callq 5e1850 : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 51800e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : FROM from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } 0.00 : 518015: 49 89 c6 mov %rax,%r14 : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 518018: e9 63 99 ff ff jmpq 511980 : * : *****************************************************************************/ : : from_clause: : FROM from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51801d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 518020: e9 5b 99 ff ff jmpq 511980 : * where_clause - qualifications for joins or restrictions : * : *****************************************************************************/ : : from_clause: : FROM from_list { $$ = $2; } 0.00 : 518025: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51802c: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51802f: e9 4c 99 ff ff jmpq 511980 : n->valuesLists = list_make1($2); : $$ = (Node *) n; : } : | values_clause ',' ctext_row : { : SelectStmt *n = (SelectStmt *) $1; 0.00 : 518034: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51803b: 48 8b 5a f0 mov -0x10(%rdx),%rbx : n->valuesLists = lappend(n->valuesLists, $3); 0.00 : 51803f: 48 8b 32 mov (%rdx),%rsi 0.00 : 518042: 48 8b 7b 48 mov 0x48(%rbx),%rdi : $$ = (Node *) n; 0.00 : 518046: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | values_clause ',' ctext_row : { : SelectStmt *n = (SelectStmt *) $1; : n->valuesLists = lappend(n->valuesLists, $3); 0.00 : 518049: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518050: e8 2b 9e 0c 00 callq 5e1e80 0.00 : 518055: 48 89 43 48 mov %rax,0x48(%rbx) : $$ = (Node *) n; : } : ; 0.00 : 518059: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518060: e9 1b 99 ff ff jmpq 511980 : : : values_clause: : VALUES ctext_row : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518065: 48 8b 3d f4 27 6a 00 mov 0x6a27f4(%rip),%rdi # bba860 0.00 : 51806c: be 90 00 00 00 mov $0x90,%esi 0.00 : 518071: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518078: e8 93 0d 28 00 callq 798e10 0.00 : 51807d: 48 89 c3 mov %rax,%rbx 0.00 : 518080: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : n->valuesLists = list_make1($2); 0.00 : 518086: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51808d: 31 f6 xor %esi,%esi : $$ = (Node *) n; 0.00 : 51808f: 49 89 de mov %rbx,%r14 : : values_clause: : VALUES ctext_row : { : SelectStmt *n = makeNode(SelectStmt); : n->valuesLists = list_make1($2); 0.00 : 518092: 48 8b 38 mov (%rax),%rdi 0.00 : 518095: e8 b6 97 0c 00 callq 5e1850 0.00 : 51809a: 48 89 43 48 mov %rax,0x48(%rbx) : $$ = (Node *) n; : } : | values_clause ',' ctext_row 0.00 : 51809e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5180a5: e9 d6 98 ff ff jmpq 511980 : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } : ; : : locked_rels_list: : OF qualified_name_list { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 5180aa: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5180ad: e9 ce 98 ff ff jmpq 511980 : | FOR SHARE { $$ = LCS_FORSHARE; } : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } : ; : : locked_rels_list: : OF qualified_name_list { $$ = $2; } 0.00 : 5180b2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5180b9: 4c 8b 33 mov (%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 5180bc: e9 bf 98 ff ff jmpq 511980 : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } : | FOR SHARE { $$ = LCS_FORSHARE; } : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } 0.00 : 5180c1: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5180c8: ff ff ff 0.00 : 5180cb: 49 21 ce and %rcx,%r14 : ; 0.00 : 5180ce: e9 ad 98 ff ff jmpq 511980 : $$ = $2; : } : | table_ref CROSS JOIN table_ref : { : /* CROSS JOIN is same as unqualified inner join */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 5180d3: 48 8b 3d 86 27 6a 00 mov 0x6a2786(%rip),%rdi # bba860 0.00 : 5180da: be 40 00 00 00 mov $0x40,%esi 0.00 : 5180df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5180e6: e8 25 0d 28 00 callq 798e10 0.00 : 5180eb: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = JOIN_INNER; 0.00 : 5180f1: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; : n->usingClause = NIL; : n->quals = NULL; : $$ = n; 0.00 : 5180f8: 49 89 c6 mov %rax,%r14 : | table_ref CROSS JOIN table_ref : { : /* CROSS JOIN is same as unqualified inner join */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = FALSE; 0.00 : 5180fb: c6 40 08 00 movb $0x0,0x8(%rax) : n->larg = $1; 0.00 : 5180ff: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518106: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51810a: 48 89 50 10 mov %rdx,0x10(%rax) : n->rarg = $4; 0.00 : 51810e: 48 8b 16 mov (%rsi),%rdx : n->usingClause = NIL; 0.00 : 518111: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 518118: 00 : n->quals = NULL; 0.00 : 518119: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 518120: 00 : /* CROSS JOIN is same as unqualified inner join */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; 0.00 : 518121: 48 89 50 18 mov %rdx,0x18(%rax) : n->usingClause = NIL; : n->quals = NULL; : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual 0.00 : 518125: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51812c: e9 4f 98 ff ff jmpq 511980 : */ : : joined_table: : '(' joined_table ')' : { : $$ = $2; 0.00 : 518131: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518138: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : | table_ref CROSS JOIN table_ref 0.00 : 51813c: e9 3f 98 ff ff jmpq 511980 : n->quals = NULL; : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual : { : JoinExpr *n = makeNode(JoinExpr); 0.00 : 518141: 48 8b 3d 18 27 6a 00 mov 0x6a2718(%rip),%rdi # bba860 0.00 : 518148: be 40 00 00 00 mov $0x40,%esi 0.00 : 51814d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518154: e8 b7 0c 28 00 callq 798e10 0.00 : 518159: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = $2; 0.00 : 51815f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->quals = NULL; : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual : { : JoinExpr *n = makeNode(JoinExpr); 0.00 : 518166: 48 89 c2 mov %rax,%rdx : n->jointype = $2; 0.00 : 518169: 8b 41 e8 mov -0x18(%rcx),%eax : n->isNatural = FALSE; 0.00 : 51816c: c6 42 08 00 movb $0x0,0x8(%rdx) : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $2; 0.00 : 518170: 89 42 04 mov %eax,0x4(%rdx) : n->isNatural = FALSE; : n->larg = $1; 0.00 : 518173: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 518177: 48 89 42 10 mov %rax,0x10(%rdx) : n->rarg = $4; 0.00 : 51817b: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51817f: 48 89 42 18 mov %rax,0x18(%rdx) : if ($5 != NULL && IsA($5, List)) 0.00 : 518183: 48 8b 01 mov (%rcx),%rax 0.00 : 518186: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51818d: 48 85 c0 test %rax,%rax 0.00 : 518190: 74 0c je 51819e 0.00 : 518192: 81 38 90 02 00 00 cmpl $0x290,(%rax) 0.00 : 518198: 0f 84 ca 13 01 00 je 529568 : n->usingClause = (List *) $5; /* USING clause */ : else : n->quals = $5; /* ON clause */ 0.00 : 51819e: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = n; 0.00 : 5181a2: 49 89 d6 mov %rdx,%r14 : } : | table_ref JOIN table_ref join_qual 0.00 : 5181a5: e9 d6 97 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_with_clause: : with_clause { $$ = $1; } 0.00 : 5181aa: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5181b1: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5181b4: e9 c7 97 ff ff jmpq 511980 : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } : ; : : common_table_expr: name opt_name_list AS '(' PreparableStmt ')' : { : CommonTableExpr *n = makeNode(CommonTableExpr); 0.00 : 5181b9: 48 8b 3d a0 26 6a 00 mov 0x6a26a0(%rip),%rdi # bba860 0.00 : 5181c0: be 50 00 00 00 mov $0x50,%esi 0.00 : 5181c5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5181cc: e8 3f 0c 28 00 callq 798e10 0.00 : 5181d1: c7 00 a9 03 00 00 movl $0x3a9,(%rax) : n->ctename = $1; 0.00 : 5181d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->aliascolnames = $2; : n->ctequery = $5; : n->location = @1; : $$ = (Node *) n; 0.00 : 5181de: 49 89 c6 mov %rax,%r14 : ; : : common_table_expr: name opt_name_list AS '(' PreparableStmt ')' : { : CommonTableExpr *n = makeNode(CommonTableExpr); : n->ctename = $1; 0.00 : 5181e1: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 5181e5: 48 89 50 08 mov %rdx,0x8(%rax) : n->aliascolnames = $2; 0.00 : 5181e9: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 5181ed: 48 89 50 10 mov %rdx,0x10(%rax) : n->ctequery = $5; 0.00 : 5181f1: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5181f5: 48 89 50 18 mov %rdx,0x18(%rax) : n->location = @1; 0.00 : 5181f9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 518200: 8b 53 ec mov -0x14(%rbx),%edx 0.00 : 518203: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 518206: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51820d: e9 6e 97 ff ff jmpq 511980 : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 518212: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518219: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51821d: 48 8b 32 mov (%rdx),%rsi 0.00 : 518220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518227: e8 54 9c 0c 00 callq 5e1e80 : ; 0.00 : 51822c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 518233: 49 89 c6 mov %rax,%r14 : ; 0.00 : 518236: e9 45 97 ff ff jmpq 511980 : $$->location = @1; : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } 0.00 : 51823b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518242: 31 f6 xor %esi,%esi 0.00 : 518244: 48 8b 38 mov (%rax),%rdi 0.00 : 518247: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51824e: e8 fd 95 0c 00 callq 5e1850 : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 518253: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$->location = @1; : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } 0.00 : 51825a: 49 89 c6 mov %rax,%r14 : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 51825d: e9 1e 97 ff ff jmpq 511980 : $$->recursive = false; : $$->location = @1; : } : | WITH RECURSIVE cte_list : { : $$ = makeNode(WithClause); 0.00 : 518262: 48 8b 3d f7 25 6a 00 mov 0x6a25f7(%rip),%rdi # bba860 0.00 : 518269: be 18 00 00 00 mov $0x18,%esi 0.00 : 51826e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518275: e8 96 0b 28 00 callq 798e10 0.00 : 51827a: c7 00 a8 03 00 00 movl $0x3a8,(%rax) : $$->ctes = $3; 0.00 : 518280: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$->recursive = false; : $$->location = @1; : } : | WITH RECURSIVE cte_list : { : $$ = makeNode(WithClause); 0.00 : 518287: 49 89 c6 mov %rax,%r14 : $$->ctes = $3; 0.00 : 51828a: 48 8b 03 mov (%rbx),%rax : $$->recursive = true; 0.00 : 51828d: 41 c6 46 10 01 movb $0x1,0x10(%r14) : $$->location = @1; : } : | WITH RECURSIVE cte_list : { : $$ = makeNode(WithClause); : $$->ctes = $3; 0.00 : 518292: 49 89 46 08 mov %rax,0x8(%r14) : $$->recursive = true; : $$->location = @1; 0.00 : 518296: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51829d: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 5182a0: 41 89 46 14 mov %eax,0x14(%r14) : } : ; 0.00 : 5182a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5182ab: e9 d0 96 ff ff jmpq 511980 : * We don't currently support the SEARCH or CYCLE clause. : */ : with_clause: : WITH cte_list : { : $$ = makeNode(WithClause); 0.00 : 5182b0: 48 8b 3d a9 25 6a 00 mov 0x6a25a9(%rip),%rdi # bba860 0.00 : 5182b7: be 18 00 00 00 mov $0x18,%esi 0.00 : 5182bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5182c3: e8 48 0b 28 00 callq 798e10 0.00 : 5182c8: c7 00 a8 03 00 00 movl $0x3a8,(%rax) : $$->ctes = $2; 0.00 : 5182ce: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : * We don't currently support the SEARCH or CYCLE clause. : */ : with_clause: : WITH cte_list : { : $$ = makeNode(WithClause); 0.00 : 5182d5: 49 89 c6 mov %rax,%r14 : $$->ctes = $2; 0.00 : 5182d8: 48 8b 02 mov (%rdx),%rax : $$->recursive = false; 0.00 : 5182db: 41 c6 46 10 00 movb $0x0,0x10(%r14) : */ : with_clause: : WITH cte_list : { : $$ = makeNode(WithClause); : $$->ctes = $2; 0.00 : 5182e0: 49 89 46 08 mov %rax,0x8(%r14) : $$->recursive = false; : $$->location = @1; 0.00 : 5182e4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5182eb: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 5182ee: 41 89 46 14 mov %eax,0x14(%r14) : } : | WITH RECURSIVE cte_list 0.00 : 5182f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5182f9: e9 82 96 ff ff jmpq 511980 : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); 0.00 : 5182fe: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518305: 48 8b 3d 54 25 6a 00 mov 0x6a2554(%rip),%rdi # bba860 : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); 0.00 : 51830c: 48 89 de mov %rbx,%rsi 0.00 : 51830f: 4c 8b 2b mov (%rbx),%r13 0.00 : 518312: 48 8b 5b e8 mov -0x18(%rbx),%rbx 0.00 : 518316: 44 0f be 66 f8 movsbl -0x8(%rsi),%r12d : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 51831b: be 90 00 00 00 mov $0x90,%esi 0.00 : 518320: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518327: e8 e4 0a 28 00 callq 798e10 0.00 : 51832c: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : n->op = op; 0.00 : 518332: c7 40 78 03 00 00 00 movl $0x3,0x78(%rax) : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); 0.00 : 518339: 49 89 c6 mov %rax,%r14 : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; : n->larg = (SelectStmt *) larg; 0.00 : 51833c: 48 89 98 80 00 00 00 mov %rbx,0x80(%rax) : n->rarg = (SelectStmt *) rarg; 0.00 : 518343: 4c 89 a8 88 00 00 00 mov %r13,0x88(%rax) : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; 0.00 : 51834a: 44 88 60 7c mov %r12b,0x7c(%rax) : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); : } : ; 0.00 : 51834e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518355: e9 26 96 ff ff jmpq 511980 : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); 0.00 : 51835a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518361: 48 8b 3d f8 24 6a 00 mov 0x6a24f8(%rip),%rdi # bba860 0.00 : 518368: be 90 00 00 00 mov $0x90,%esi : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); 0.00 : 51836d: 44 0f be 61 f8 movsbl -0x8(%rcx),%r12d 0.00 : 518372: 4c 8b 29 mov (%rcx),%r13 0.00 : 518375: 48 8b 59 e8 mov -0x18(%rcx),%rbx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518379: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518380: e8 8b 0a 28 00 callq 798e10 0.00 : 518385: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : n->op = op; 0.00 : 51838b: c7 40 78 02 00 00 00 movl $0x2,0x78(%rax) : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); 0.00 : 518392: 49 89 c6 mov %rax,%r14 : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; 0.00 : 518395: 44 88 60 7c mov %r12b,0x7c(%rax) : n->larg = (SelectStmt *) larg; 0.00 : 518399: 48 89 98 80 00 00 00 mov %rbx,0x80(%rax) : n->rarg = (SelectStmt *) rarg; 0.00 : 5183a0: 4c 89 a8 88 00 00 00 mov %r13,0x88(%rax) : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause 0.00 : 5183a7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5183ae: e9 cd 95 ff ff jmpq 511980 : n->fromClause = list_make1($2); : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); 0.00 : 5183b3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 5183ba: 48 8b 3d 9f 24 6a 00 mov 0x6a249f(%rip),%rdi # bba860 0.00 : 5183c1: be 90 00 00 00 mov $0x90,%esi : n->fromClause = list_make1($2); : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); 0.00 : 5183c6: 44 0f be 62 f8 movsbl -0x8(%rdx),%r12d 0.00 : 5183cb: 4c 8b 2a mov (%rdx),%r13 0.00 : 5183ce: 48 8b 5a e8 mov -0x18(%rdx),%rbx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 5183d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5183d9: e8 32 0a 28 00 callq 798e10 0.00 : 5183de: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : n->op = op; 0.00 : 5183e4: c7 40 78 01 00 00 00 movl $0x1,0x78(%rax) : n->fromClause = list_make1($2); : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); 0.00 : 5183eb: 49 89 c6 mov %rax,%r14 : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; 0.00 : 5183ee: 44 88 60 7c mov %r12b,0x7c(%rax) : n->larg = (SelectStmt *) larg; 0.00 : 5183f2: 48 89 98 80 00 00 00 mov %rbx,0x80(%rax) : n->rarg = (SelectStmt *) rarg; 0.00 : 5183f9: 4c 89 a8 88 00 00 00 mov %r13,0x88(%rax) : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause 0.00 : 518400: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518407: e9 74 95 ff ff jmpq 511980 : } : | values_clause { $$ = $1; } : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); 0.00 : 51840c: 48 8b 3d 4d 24 6a 00 mov 0x6a244d(%rip),%rdi # bba860 0.00 : 518413: be 18 00 00 00 mov $0x18,%esi 0.00 : 518418: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51841f: e8 ec 09 28 00 callq 798e10 0.00 : 518424: c7 00 85 03 00 00 movl $0x385,(%rax) : ResTarget *rt = makeNode(ResTarget); 0.00 : 51842a: 48 8b 3d 2f 24 6a 00 mov 0x6a242f(%rip),%rdi # bba860 0.00 : 518431: be 28 00 00 00 mov $0x28,%esi : } : | values_clause { $$ = $1; } : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); 0.00 : 518436: 49 89 c4 mov %rax,%r12 : ResTarget *rt = makeNode(ResTarget); 0.00 : 518439: e8 d2 09 28 00 callq 798e10 0.00 : 51843e: c7 00 8d 03 00 00 movl $0x38d,(%rax) : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518444: 48 8b 3d 15 24 6a 00 mov 0x6a2415(%rip),%rdi # bba860 0.00 : 51844b: be 90 00 00 00 mov $0x90,%esi : | values_clause { $$ = $1; } : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); 0.00 : 518450: 48 89 c3 mov %rax,%rbx : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518453: e8 b8 09 28 00 callq 798e10 0.00 : 518458: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 51845e: 48 8b 3d fb 23 6a 00 mov 0x6a23fb(%rip),%rdi # bba860 0.00 : 518465: be 04 00 00 00 mov $0x4,%esi : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); : SelectStmt *n = makeNode(SelectStmt); 0.00 : 51846a: 49 89 c5 mov %rax,%r13 : rt->val = (Node *)cr; : rt->location = -1; : : n->targetList = list_make1(rt); : n->fromClause = list_make1($2); : $$ = (Node *)n; 0.00 : 51846d: 4d 89 ee mov %r13,%r14 : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); : SelectStmt *n = makeNode(SelectStmt); : : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 518470: e8 ab 0b 28 00 callq 799020 0.00 : 518475: 31 f6 xor %esi,%esi 0.00 : 518477: 48 89 c7 mov %rax,%rdi 0.00 : 51847a: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 518480: e8 cb 93 0c 00 callq 5e1850 : cr->location = -1; 0.00 : 518485: 41 c7 44 24 10 ff ff movl $0xffffffff,0x10(%r12) 0.00 : 51848c: ff ff : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); : SelectStmt *n = makeNode(SelectStmt); : : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 51848e: 49 89 44 24 08 mov %rax,0x8(%r12) : rt->name = NULL; : rt->indirection = NIL; : rt->val = (Node *)cr; : rt->location = -1; : : n->targetList = list_make1(rt); 0.00 : 518493: 31 f6 xor %esi,%esi 0.00 : 518495: 48 89 df mov %rbx,%rdi : SelectStmt *n = makeNode(SelectStmt); : : cr->fields = list_make1(makeNode(A_Star)); : cr->location = -1; : : rt->name = NULL; 0.00 : 518498: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 51849f: 00 : rt->indirection = NIL; 0.00 : 5184a0: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5184a7: 00 : rt->val = (Node *)cr; 0.00 : 5184a8: 4c 89 63 18 mov %r12,0x18(%rbx) : rt->location = -1; 0.00 : 5184ac: c7 43 20 ff ff ff ff movl $0xffffffff,0x20(%rbx) : : n->targetList = list_make1(rt); 0.00 : 5184b3: e8 98 93 0c 00 callq 5e1850 0.00 : 5184b8: 49 89 45 18 mov %rax,0x18(%r13) : n->fromClause = list_make1($2); 0.00 : 5184bc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5184c3: 31 f6 xor %esi,%esi 0.00 : 5184c5: 48 8b 38 mov (%rax),%rdi 0.00 : 5184c8: e8 83 93 0c 00 callq 5e1850 0.00 : 5184cd: 49 89 45 20 mov %rax,0x20(%r13) : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause 0.00 : 5184d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5184d8: e9 a3 94 ff ff jmpq 511980 : n->groupClause = $7; : n->havingClause = $8; : n->windowClause = $9; : $$ = (Node *)n; : } : | values_clause { $$ = $1; } 0.00 : 5184dd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5184e4: 4c 8b 33 mov (%rbx),%r14 : | TABLE relation_expr 0.00 : 5184e7: e9 94 94 ff ff jmpq 511980 : simple_select: : SELECT opt_distinct opt_target_list : into_clause from_clause where_clause : group_clause having_clause window_clause : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 5184ec: 48 8b 3d 6d 23 6a 00 mov 0x6a236d(%rip),%rdi # bba860 0.00 : 5184f3: be 90 00 00 00 mov $0x90,%esi 0.00 : 5184f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5184ff: e8 0c 09 28 00 callq 798e10 0.00 : 518504: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : n->distinctClause = $2; 0.00 : 51850a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->fromClause = $5; : n->whereClause = $6; : n->groupClause = $7; : n->havingClause = $8; : n->windowClause = $9; : $$ = (Node *)n; 0.00 : 518511: 49 89 c6 mov %rax,%r14 : SELECT opt_distinct opt_target_list : into_clause from_clause where_clause : group_clause having_clause window_clause : { : SelectStmt *n = makeNode(SelectStmt); : n->distinctClause = $2; 0.00 : 518514: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 518518: 48 89 50 08 mov %rdx,0x8(%rax) : n->targetList = $3; 0.00 : 51851c: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 518520: 48 89 50 18 mov %rdx,0x18(%rax) : n->intoClause = $4; 0.00 : 518524: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 518528: 48 89 50 10 mov %rdx,0x10(%rax) : n->fromClause = $5; 0.00 : 51852c: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 518530: 48 89 50 20 mov %rdx,0x20(%rax) : n->whereClause = $6; 0.00 : 518534: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 518538: 48 89 50 28 mov %rdx,0x28(%rax) : n->groupClause = $7; 0.00 : 51853c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 518540: 48 89 50 30 mov %rdx,0x30(%rax) : n->havingClause = $8; 0.00 : 518544: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 518548: 48 89 50 38 mov %rdx,0x38(%rax) : n->windowClause = $9; 0.00 : 51854c: 48 8b 11 mov (%rcx),%rdx 0.00 : 51854f: 48 89 50 40 mov %rdx,0x40(%rax) : $$ = (Node *)n; : } : | values_clause { $$ = $1; } 0.00 : 518553: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51855a: e9 21 94 ff ff jmpq 511980 : } : ; : : select_clause: : simple_select { $$ = $1; } : | select_with_parens { $$ = $1; } 0.00 : 51855f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518566: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 518569: e9 12 94 ff ff jmpq 511980 : $$ = $2; : } : ; : : select_clause: : simple_select { $$ = $1; } 0.00 : 51856e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518575: 4c 8b 33 mov (%rbx),%r14 : | select_with_parens { $$ = $1; } 0.00 : 518578: e9 03 94 ff ff jmpq 511980 : yyscanner); : $$ = $2; : } : | with_clause select_clause opt_sort_clause select_limit opt_for_locking_clause : { : insertSelectOptions((SelectStmt *) $2, $3, $5, 0.00 : 51857d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518584: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51858b: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51858f: 4c 8b 66 e0 mov -0x20(%rsi),%r12 0.00 : 518593: be 01 00 00 00 mov $0x1,%esi 0.00 : 518598: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51859f: e8 bc 8e 0c 00 callq 5e1460 0.00 : 5185a4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5185ab: 31 f6 xor %esi,%esi 0.00 : 5185ad: 48 89 c3 mov %rax,%rbx 0.00 : 5185b0: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5185b4: e8 a7 8e 0c 00 callq 5e1460 0.00 : 5185b9: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 5185c0: 48 89 c1 mov %rax,%rcx 0.00 : 5185c3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5185ca: 4d 89 e1 mov %r12,%r9 0.00 : 5185cd: 49 89 d8 mov %rbx,%r8 0.00 : 5185d0: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 5185d4: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 5185d8: 48 8b 10 mov (%rax),%rdx 0.00 : 5185db: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 5185df: e8 dc 89 ff ff callq 510fc0 : list_nth($4, 0), list_nth($4, 1), : $1, : yyscanner); : $$ = $2; 0.00 : 5185e4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : ; 0.00 : 5185eb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : insertSelectOptions((SelectStmt *) $2, $3, $5, : list_nth($4, 0), list_nth($4, 1), : $1, : yyscanner); : $$ = $2; 0.00 : 5185f2: 4c 8b 71 e8 mov -0x18(%rcx),%r14 : } : ; 0.00 : 5185f6: e9 85 93 ff ff jmpq 511980 : yyscanner); : $$ = $2; : } : | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit : { : insertSelectOptions((SelectStmt *) $2, $3, $4, 0.00 : 5185fb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518602: be 01 00 00 00 mov $0x1,%esi 0.00 : 518607: 48 8b 3b mov (%rbx),%rdi 0.00 : 51860a: 4c 8b 63 e0 mov -0x20(%rbx),%r12 0.00 : 51860e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518615: e8 46 8e 0c 00 callq 5e1460 0.00 : 51861a: 48 89 c3 mov %rax,%rbx 0.00 : 51861d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518624: 31 f6 xor %esi,%esi 0.00 : 518626: 48 8b 38 mov (%rax),%rdi 0.00 : 518629: e8 32 8e 0c 00 callq 5e1460 0.00 : 51862e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518635: 48 89 c1 mov %rax,%rcx 0.00 : 518638: 49 89 d8 mov %rbx,%r8 0.00 : 51863b: 48 8b 85 70 f4 ff ff mov -0xb90(%rbp),%rax 0.00 : 518642: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518649: 4d 89 e1 mov %r12,%r9 0.00 : 51864c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 518650: 48 8b 76 f0 mov -0x10(%rsi),%rsi 0.00 : 518654: 48 89 04 24 mov %rax,(%rsp) 0.00 : 518658: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 51865c: e8 5f 89 ff ff callq 510fc0 : list_nth($5, 0), list_nth($5, 1), : $1, : yyscanner); : $$ = $2; 0.00 : 518661: 4c 8b 73 e8 mov -0x18(%rbx),%r14 : } : | with_clause select_clause opt_sort_clause select_limit opt_for_locking_clause 0.00 : 518665: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51866c: e9 0f 93 ff ff jmpq 511980 : yyscanner); : $$ = $2; : } : | with_clause select_clause sort_clause : { : insertSelectOptions((SelectStmt *) $2, $3, NIL, 0.00 : 518671: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518678: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 51867f: 31 c9 xor %ecx,%ecx 0.00 : 518681: 45 31 c0 xor %r8d,%r8d 0.00 : 518684: 4c 8b 48 f0 mov -0x10(%rax),%r9 0.00 : 518688: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 51868c: 31 d2 xor %edx,%edx 0.00 : 51868e: 48 8b 30 mov (%rax),%rsi 0.00 : 518691: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 518695: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51869c: e8 1f 89 ff ff callq 510fc0 : NULL, NULL, : $1, : yyscanner); : $$ = $2; 0.00 : 5186a1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit 0.00 : 5186a8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : insertSelectOptions((SelectStmt *) $2, $3, NIL, : NULL, NULL, : $1, : yyscanner); : $$ = $2; 0.00 : 5186af: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : } : | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit 0.00 : 5186b3: e9 c8 92 ff ff jmpq 511980 : yyscanner); : $$ = $1; : } : | with_clause select_clause : { : insertSelectOptions((SelectStmt *) $2, NULL, NIL, 0.00 : 5186b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5186bf: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5186c6: 45 31 c0 xor %r8d,%r8d 0.00 : 5186c9: 31 c9 xor %ecx,%ecx 0.00 : 5186cb: 31 d2 xor %edx,%edx 0.00 : 5186cd: 4c 8b 4b f8 mov -0x8(%rbx),%r9 0.00 : 5186d1: 48 89 34 24 mov %rsi,(%rsp) 0.00 : 5186d5: 31 f6 xor %esi,%esi 0.00 : 5186d7: 48 8b 3b mov (%rbx),%rdi 0.00 : 5186da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5186e1: e8 da 88 ff ff callq 510fc0 : NULL, NULL, : $1, : yyscanner); : $$ = $2; 0.00 : 5186e6: 4c 8b 33 mov (%rbx),%r14 : } : | with_clause select_clause sort_clause 0.00 : 5186e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5186f0: e9 8b 92 ff ff jmpq 511980 : yyscanner); : $$ = $1; : } : | select_clause opt_sort_clause select_limit opt_for_locking_clause : { : insertSelectOptions((SelectStmt *) $1, $2, $4, 0.00 : 5186f5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5186fc: be 01 00 00 00 mov $0x1,%esi 0.00 : 518701: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 518705: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51870c: e8 4f 8d 0c 00 callq 5e1460 0.00 : 518711: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518718: 31 f6 xor %esi,%esi 0.00 : 51871a: 48 89 c3 mov %rax,%rbx 0.00 : 51871d: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 518721: e8 3a 8d 0c 00 callq 5e1460 0.00 : 518726: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 51872d: 48 89 c1 mov %rax,%rcx 0.00 : 518730: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518737: 45 31 c9 xor %r9d,%r9d 0.00 : 51873a: 49 89 d8 mov %rbx,%r8 0.00 : 51873d: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 518741: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 518745: 48 8b 10 mov (%rax),%rdx 0.00 : 518748: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51874c: e8 6f 88 ff ff callq 510fc0 : list_nth($3, 0), list_nth($3, 1), : NULL, : yyscanner); : $$ = $1; 0.00 : 518751: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : | with_clause select_clause 0.00 : 518758: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : insertSelectOptions((SelectStmt *) $1, $2, $4, : list_nth($3, 0), list_nth($3, 1), : NULL, : yyscanner); : $$ = $1; 0.00 : 51875f: 4c 8b 71 e8 mov -0x18(%rcx),%r14 : } : | with_clause select_clause 0.00 : 518763: e9 18 92 ff ff jmpq 511980 : yyscanner); : $$ = $1; : } : | select_clause opt_sort_clause for_locking_clause opt_select_limit : { : insertSelectOptions((SelectStmt *) $1, $2, $3, 0.00 : 518768: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51876f: be 01 00 00 00 mov $0x1,%esi 0.00 : 518774: 48 8b 38 mov (%rax),%rdi 0.00 : 518777: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51877e: e8 dd 8c 0c 00 callq 5e1460 0.00 : 518783: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51878a: 48 89 c3 mov %rax,%rbx 0.00 : 51878d: 31 f6 xor %esi,%esi 0.00 : 51878f: 48 8b 3a mov (%rdx),%rdi 0.00 : 518792: e8 c9 8c 0c 00 callq 5e1460 0.00 : 518797: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51879e: 48 89 c1 mov %rax,%rcx 0.00 : 5187a1: 49 89 d8 mov %rbx,%r8 0.00 : 5187a4: 48 8b 85 70 f4 ff ff mov -0xb90(%rbp),%rax 0.00 : 5187ab: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5187b2: 45 31 c9 xor %r9d,%r9d 0.00 : 5187b5: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5187b9: 48 8b 76 f0 mov -0x10(%rsi),%rsi 0.00 : 5187bd: 48 89 04 24 mov %rax,(%rsp) 0.00 : 5187c1: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 5187c5: e8 f6 87 ff ff callq 510fc0 : list_nth($4, 0), list_nth($4, 1), : NULL, : yyscanner); : $$ = $1; 0.00 : 5187ca: 4c 8b 73 e8 mov -0x18(%rbx),%r14 : } : | select_clause opt_sort_clause select_limit opt_for_locking_clause 0.00 : 5187ce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5187d5: e9 a6 91 ff ff jmpq 511980 : */ : select_no_parens: : simple_select { $$ = $1; } : | select_clause sort_clause : { : insertSelectOptions((SelectStmt *) $1, $2, NIL, 0.00 : 5187da: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5187e1: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 5187e8: 45 31 c9 xor %r9d,%r9d 0.00 : 5187eb: 45 31 c0 xor %r8d,%r8d 0.00 : 5187ee: 31 c9 xor %ecx,%ecx 0.00 : 5187f0: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 5187f4: 48 8b 33 mov (%rbx),%rsi 0.00 : 5187f7: 31 d2 xor %edx,%edx 0.00 : 5187f9: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 5187fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518804: e8 b7 87 ff ff callq 510fc0 : NULL, NULL, NULL, : yyscanner); : $$ = $1; 0.00 : 518809: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : | select_clause opt_sort_clause for_locking_clause opt_select_limit 0.00 : 51880d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518814: e9 67 91 ff ff jmpq 511980 : * We now support both orderings, but prefer LIMIT/OFFSET before the locking : * clause. : * 2002-08-28 bjm : */ : select_no_parens: : simple_select { $$ = $1; } 0.00 : 518819: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518820: 4c 8b 30 mov (%rax),%r14 : | select_clause sort_clause 0.00 : 518823: e9 58 91 ff ff jmpq 511980 : | select_with_parens %prec UMINUS : ; : : select_with_parens: : '(' select_no_parens ')' { $$ = $2; } : | '(' select_with_parens ')' { $$ = $2; } 0.00 : 518828: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51882f: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 518833: e9 48 91 ff ff jmpq 511980 : SelectStmt: select_no_parens %prec UMINUS : | select_with_parens %prec UMINUS : ; : : select_with_parens: : '(' select_no_parens ')' { $$ = $2; } 0.00 : 518838: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51883f: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | '(' select_with_parens ')' { $$ = $2; } 0.00 : 518843: e9 38 91 ff ff jmpq 511980 : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } : ; : : opt_hold: /* EMPTY */ { $$ = 0; } : | WITH HOLD { $$ = CURSOR_OPT_HOLD; } : | WITHOUT HOLD { $$ = 0; } 0.00 : 518848: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51884f: ff ff ff 0.00 : 518852: 49 21 ce and %rcx,%r14 : ; 0.00 : 518855: e9 26 91 ff ff jmpq 511980 : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } : ; : : opt_hold: /* EMPTY */ { $$ = 0; } : | WITH HOLD { $$ = CURSOR_OPT_HOLD; } 0.00 : 51885a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518861: ff ff ff 0.00 : 518864: 49 21 d6 and %rdx,%r14 0.00 : 518867: 49 83 ce 10 or $0x10,%r14 : | WITHOUT HOLD { $$ = 0; } 0.00 : 51886b: e9 10 91 ff ff jmpq 511980 : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } : ; : : opt_hold: /* EMPTY */ { $$ = 0; } 0.00 : 518870: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518877: ff ff ff 0.00 : 51887a: 49 21 c6 and %rax,%r14 : | WITH HOLD { $$ = CURSOR_OPT_HOLD; } 0.00 : 51887d: e9 fe 90 ff ff jmpq 511980 : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } 0.00 : 518882: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518889: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518890: ff ff ff 0.00 : 518893: 49 21 f6 and %rsi,%r14 0.00 : 518896: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 518899: 83 c8 08 or $0x8,%eax 0.00 : 51889c: 49 09 c6 or %rax,%r14 : ; 0.00 : 51889f: e9 dc 90 ff ff jmpq 511980 : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } 0.00 : 5188a4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5188ab: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5188b2: ff ff ff 0.00 : 5188b5: 49 21 ce and %rcx,%r14 0.00 : 5188b8: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 5188bb: 83 c8 01 or $0x1,%eax 0.00 : 5188be: 49 09 c6 or %rax,%r14 : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } 0.00 : 5188c1: e9 ba 90 ff ff jmpq 511980 : cursor_name: name { $$ = $1; } : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } 0.00 : 5188c6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5188cd: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5188d4: ff ff ff 0.00 : 5188d7: 49 21 f6 and %rsi,%r14 0.00 : 5188da: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 5188dd: 83 c8 02 or $0x2,%eax 0.00 : 5188e0: 49 09 c6 or %rax,%r14 : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } 0.00 : 5188e3: e9 98 90 ff ff jmpq 511980 : : cursor_name: name { $$ = $1; } : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } 0.00 : 5188e8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5188ef: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5188f6: ff ff ff 0.00 : 5188f9: 49 21 ce and %rcx,%r14 0.00 : 5188fc: 8b 42 f0 mov -0x10(%rdx),%eax 0.00 : 5188ff: 83 c8 04 or $0x4,%eax 0.00 : 518902: 49 09 c6 or %rax,%r14 : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } 0.00 : 518905: e9 76 90 ff ff jmpq 511980 : ; : : cursor_name: name { $$ = $1; } : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } 0.00 : 51890a: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518911: ff ff ff 0.00 : 518914: 49 21 f6 and %rsi,%r14 : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } 0.00 : 518917: e9 64 90 ff ff jmpq 511980 : n->query = $7; : $$ = (Node *)n; : } : ; : : cursor_name: name { $$ = $1; } 0.00 : 51891c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518923: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 518926: e9 55 90 ff ff jmpq 511980 : * CURSOR STATEMENTS : * : *****************************************************************************/ : DeclareCursorStmt: DECLARE cursor_name cursor_options CURSOR opt_hold FOR SelectStmt : { : DeclareCursorStmt *n = makeNode(DeclareCursorStmt); 0.00 : 51892b: 48 8b 3d 2e 1f 6a 00 mov 0x6a1f2e(%rip),%rdi # bba860 0.00 : 518932: be 20 00 00 00 mov $0x20,%esi 0.00 : 518937: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51893e: e8 cd 04 28 00 callq 798e10 0.00 : 518943: c7 00 fe 02 00 00 movl $0x2fe,(%rax) : n->portalname = $2; 0.00 : 518949: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : /* currently we always set FAST_PLAN option */ : n->options = $3 | $5 | CURSOR_OPT_FAST_PLAN; : n->query = $7; : $$ = (Node *)n; 0.00 : 518950: 49 89 c6 mov %rax,%r14 : * : *****************************************************************************/ : DeclareCursorStmt: DECLARE cursor_name cursor_options CURSOR opt_hold FOR SelectStmt : { : DeclareCursorStmt *n = makeNode(DeclareCursorStmt); : n->portalname = $2; 0.00 : 518953: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 518957: 48 89 50 08 mov %rdx,0x8(%rax) : /* currently we always set FAST_PLAN option */ : n->options = $3 | $5 | CURSOR_OPT_FAST_PLAN; 0.00 : 51895b: 8b 51 e0 mov -0x20(%rcx),%edx 0.00 : 51895e: 0b 51 f0 or -0x10(%rcx),%edx 0.00 : 518961: 83 ca 20 or $0x20,%edx 0.00 : 518964: 89 50 10 mov %edx,0x10(%rax) : n->query = $7; 0.00 : 518967: 48 8b 11 mov (%rcx),%rdx 0.00 : 51896a: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51896e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518975: e9 06 90 ff ff jmpq 511980 : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 51897a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518981: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 518985: 48 8b 32 mov (%rdx),%rsi 0.00 : 518988: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51898f: e8 ec 94 0c 00 callq 5e1e80 : ; 0.00 : 518994: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 51899b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51899e: e9 dd 8f ff ff jmpq 511980 : $$->location = @1; : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } 0.00 : 5189a3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5189aa: 31 f6 xor %esi,%esi 0.00 : 5189ac: 48 8b 38 mov (%rax),%rdi 0.00 : 5189af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5189b6: e8 95 8e 0c 00 callq 5e1850 : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 5189bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$->location = @1; : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } 0.00 : 5189c2: 49 89 c6 mov %rax,%r14 : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 5189c5: e9 b6 8f ff ff jmpq 511980 : ; : : set_target: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 5189ca: 48 8b 3d 8f 1e 6a 00 mov 0x6a1e8f(%rip),%rdi # bba860 0.00 : 5189d1: be 28 00 00 00 mov $0x28,%esi 0.00 : 5189d6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5189dd: e8 2e 04 28 00 callq 798e10 0.00 : 5189e2: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $1; 0.00 : 5189e8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : ; : : set_target: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 5189ef: 49 89 c6 mov %rax,%r14 : $$->name = $1; 0.00 : 5189f2: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 5189f6: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = check_indirection($2, yyscanner); 0.00 : 5189fa: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 518a01: 48 8b 3b mov (%rbx),%rdi 0.00 : 518a04: e8 b7 53 ff ff callq 50ddc0 : $$->val = NULL; /* upper production sets this */ 0.00 : 518a09: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 518a10: 00 : set_target: : ColId opt_indirection : { : $$ = makeNode(ResTarget); : $$->name = $1; : $$->indirection = check_indirection($2, yyscanner); 0.00 : 518a11: 49 89 46 10 mov %rax,0x10(%r14) : $$->val = NULL; /* upper production sets this */ : $$->location = @1; 0.00 : 518a15: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 518a1c: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 518a1f: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 518a23: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518a2a: e9 51 8f ff ff jmpq 511980 : : $$ = $2; : } : | '(' set_target_list ')' '=' select_with_parens : { : SubLink *sl = makeNode(SubLink); 0.00 : 518a2f: 48 8b 3d 2a 1e 6a 00 mov 0x6a1e2a(%rip),%rdi # bba860 0.00 : 518a36: be 30 00 00 00 mov $0x30,%esi 0.00 : 518a3b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518a42: e8 c9 03 28 00 callq 798e10 0.00 : 518a47: c7 00 3c 01 00 00 movl $0x13c,(%rax) : int ncolumns = list_length($2); 0.00 : 518a4d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : : $$ = $2; : } : | '(' set_target_list ')' '=' select_with_parens : { : SubLink *sl = makeNode(SubLink); 0.00 : 518a54: 49 89 c6 mov %rax,%r14 : int ncolumns = list_length($2); 0.00 : 518a57: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 518a5e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518a65: 48 83 ee 18 sub $0x18,%rsi 0.00 : 518a69: 48 89 b5 c8 f4 ff ff mov %rsi,-0xb38(%rbp) 0.00 : 518a70: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 518a74: c7 85 ac f4 ff ff 00 movl $0x0,-0xb54(%rbp) 0.00 : 518a7b: 00 00 00 0.00 : 518a7e: 48 85 c0 test %rax,%rax 0.00 : 518a81: 74 09 je 518a8c 0.00 : 518a83: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 518a86: 89 85 ac f4 ff ff mov %eax,-0xb54(%rbp) : int i = 1; : ListCell *col_cell; : : /* First, convert bare SelectStmt into a SubLink */ : sl->subLinkType = MULTIEXPR_SUBLINK; 0.00 : 518a8c: 41 c7 46 04 05 00 00 movl $0x5,0x4(%r14) 0.00 : 518a93: 00 : sl->subLinkId = 0; /* will be assigned later */ 0.00 : 518a94: 41 c7 46 08 00 00 00 movl $0x0,0x8(%r14) 0.00 : 518a9b: 00 : sl->testexpr = NULL; 0.00 : 518a9c: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 518aa3: 00 : sl->operName = NIL; 0.00 : 518aa4: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 518aab: 00 : sl->subselect = $5; 0.00 : 518aac: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518ab3: 48 8b 01 mov (%rcx),%rax 0.00 : 518ab6: 49 89 46 20 mov %rax,0x20(%r14) : sl->location = @5; 0.00 : 518aba: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 518ac1: 8b 03 mov (%rbx),%eax 0.00 : 518ac3: 41 89 46 28 mov %eax,0x28(%r14) : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) 0.00 : 518ac7: 48 8b b5 c8 f4 ff ff mov -0xb38(%rbp),%rsi 0.00 : 518ace: 48 8b 06 mov (%rsi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 518ad1: 48 85 c0 test %rax,%rax 0.00 : 518ad4: 74 65 je 518b3b 0.00 : 518ad6: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 518ada: 4d 85 e4 test %r12,%r12 0.00 : 518add: 74 5c je 518b3b 0.00 : 518adf: 41 bd 01 00 00 00 mov $0x1,%r13d : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : MultiAssignRef *r = makeNode(MultiAssignRef); 0.00 : 518ae5: 48 8b 3d 74 1d 6a 00 mov 0x6a1d74(%rip),%rdi # bba860 0.00 : 518aec: be 18 00 00 00 mov $0x18,%esi : sl->location = @5; : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); 0.00 : 518af1: 49 8b 1c 24 mov (%r12),%rbx : MultiAssignRef *r = makeNode(MultiAssignRef); 0.00 : 518af5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518afc: e8 0f 03 28 00 callq 798e10 : : r->source = (Node *) sl; : r->colno = i; 0.00 : 518b01: 44 89 68 10 mov %r13d,0x10(%rax) : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : MultiAssignRef *r = makeNode(MultiAssignRef); 0.00 : 518b05: c7 00 8e 03 00 00 movl $0x38e,(%rax) : : r->source = (Node *) sl; : r->colno = i; : r->ncolumns = ncolumns; : res_col->val = (Node *) r; : i++; 0.00 : 518b0b: 41 83 c5 01 add $0x1,%r13d : foreach(col_cell, $2) : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : MultiAssignRef *r = makeNode(MultiAssignRef); : : r->source = (Node *) sl; 0.00 : 518b0f: 4c 89 70 08 mov %r14,0x8(%rax) : r->colno = i; : r->ncolumns = ncolumns; 0.00 : 518b13: 8b 95 ac f4 ff ff mov -0xb54(%rbp),%edx 0.00 : 518b19: 89 50 14 mov %edx,0x14(%rax) : res_col->val = (Node *) r; 0.00 : 518b1c: 48 89 43 18 mov %rax,0x18(%rbx) : sl->operName = NIL; : sl->subselect = $5; : sl->location = @5; : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) 0.00 : 518b20: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 518b25: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518b2c: 4d 85 e4 test %r12,%r12 0.00 : 518b2f: 75 b4 jne 518ae5 0.00 : 518b31: 48 8b 8d c8 f4 ff ff mov -0xb38(%rbp),%rcx 0.00 : 518b38: 48 8b 01 mov (%rcx),%rax : r->ncolumns = ncolumns; : res_col->val = (Node *) r; : i++; : } : : $$ = $2; 0.00 : 518b3b: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 518b3e: e9 3d 8e ff ff jmpq 511980 : * Break the ctext_row apart, merge individual expressions : * into the destination ResTargets. This is semantically : * equivalent to, and much cheaper to process than, the : * general case. : */ : if (list_length($2) != list_length($5)) 0.00 : 518b43: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518b4a: 48 8b bd 88 f4 ff ff mov -0xb78(%rbp),%rdi 0.00 : 518b51: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 518b55: 48 83 ef 18 sub $0x18,%rdi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 518b59: 31 f6 xor %esi,%esi 0.00 : 518b5b: 48 85 c0 test %rax,%rax 0.00 : 518b5e: 74 03 je 518b63 0.00 : 518b60: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 518b63: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518b6a: 48 8b 11 mov (%rcx),%rdx 0.00 : 518b6d: 31 c9 xor %ecx,%ecx 0.00 : 518b6f: 48 85 d2 test %rdx,%rdx 0.00 : 518b72: 74 03 je 518b77 0.00 : 518b74: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 518b77: 39 ce cmp %ecx,%esi 0.00 : 518b79: 0f 85 f6 0a 01 00 jne 529675 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 518b7f: 31 f6 xor %esi,%esi 0.00 : 518b81: 48 85 c0 test %rax,%rax 0.00 : 518b84: 74 04 je 518b8a 0.00 : 518b86: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 518b8a: 48 85 d2 test %rdx,%rdx 0.00 : 518b8d: 74 2d je 518bbc : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("number of columns does not match number of values"), : parser_errposition(@5))); : forboth(col_cell, $2, val_cell, $5) 0.00 : 518b8f: 48 85 f6 test %rsi,%rsi 0.00 : 518b92: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 518b96: 74 24 je 518bbc 0.00 : 518b98: 48 85 c9 test %rcx,%rcx 0.00 : 518b9b: 74 1f je 518bbc : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : Node *res_val = (Node *) lfirst(val_cell); : : res_col->val = res_val; 0.00 : 518b9d: 48 8b 16 mov (%rsi),%rdx 0.00 : 518ba0: 48 8b 01 mov (%rcx),%rax 0.00 : 518ba3: 48 89 42 18 mov %rax,0x18(%rdx) : if (list_length($2) != list_length($5)) : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("number of columns does not match number of values"), : parser_errposition(@5))); : forboth(col_cell, $2, val_cell, $5) 0.00 : 518ba7: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 518bab: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 518baf: 48 85 f6 test %rsi,%rsi 0.00 : 518bb2: 74 05 je 518bb9 0.00 : 518bb4: 48 85 c9 test %rcx,%rcx 0.00 : 518bb7: 75 e4 jne 518b9d 0.00 : 518bb9: 48 8b 07 mov (%rdi),%rax : Node *res_val = (Node *) lfirst(val_cell); : : res_col->val = res_val; : } : : $$ = $2; 0.00 : 518bbc: 49 89 c6 mov %rax,%r14 : } : | '(' set_target_list ')' '=' select_with_parens 0.00 : 518bbf: e9 bc 8d ff ff jmpq 511980 : ; : : single_set_clause: : set_target '=' ctext_expr : { : $$ = $1; 0.00 : 518bc4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518bcb: 4c 8b 73 f0 mov -0x10(%rbx),%r14 : $$->val = (Node *) $3; 0.00 : 518bcf: 48 8b 03 mov (%rbx),%rax 0.00 : 518bd2: 49 89 46 18 mov %rax,0x18(%r14) : } : ; 0.00 : 518bd6: e9 a5 8d ff ff jmpq 511980 : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } : ; : : set_clause: : single_set_clause { $$ = list_make1($1); } : | multiple_set_clause { $$ = $1; } 0.00 : 518bdb: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518be2: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 518be5: e9 96 8d ff ff jmpq 511980 : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } : ; : : set_clause: : single_set_clause { $$ = list_make1($1); } 0.00 : 518bea: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518bf1: 31 f6 xor %esi,%esi 0.00 : 518bf3: 48 8b 3a mov (%rdx),%rdi 0.00 : 518bf6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518bfd: e8 4e 8c 0c 00 callq 5e1850 : | multiple_set_clause { $$ = $1; } 0.00 : 518c02: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } : ; : : set_clause: : single_set_clause { $$ = list_make1($1); } 0.00 : 518c09: 49 89 c6 mov %rax,%r14 : | multiple_set_clause { $$ = $1; } 0.00 : 518c0c: e9 6f 8d ff ff jmpq 511980 : } : ; : : set_clause_list: : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } 0.00 : 518c11: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518c18: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 518c1c: 48 8b 36 mov (%rsi),%rsi 0.00 : 518c1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518c26: e8 95 99 0c 00 callq 5e25c0 : ; 0.00 : 518c2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : set_clause_list: : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } 0.00 : 518c32: 49 89 c6 mov %rax,%r14 : ; 0.00 : 518c35: e9 46 8d ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : set_clause_list: : set_clause { $$ = $1; } 0.00 : 518c3a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518c41: 4c 8b 33 mov (%rbx),%r14 : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } 0.00 : 518c44: e9 37 8d ff ff jmpq 511980 : SET set_clause_list : from_clause : where_or_current_clause : returning_clause : { : UpdateStmt *n = makeNode(UpdateStmt); 0.00 : 518c49: 48 8b 3d 10 1c 6a 00 mov 0x6a1c10(%rip),%rdi # bba860 0.00 : 518c50: be 38 00 00 00 mov $0x38,%esi 0.00 : 518c55: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518c5c: e8 af 01 28 00 callq 798e10 0.00 : 518c61: c7 00 c0 02 00 00 movl $0x2c0,(%rax) : n->relation = $3; 0.00 : 518c67: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->targetList = $5; : n->fromClause = $6; : n->whereClause = $7; : n->returningList = $8; : n->withClause = $1; : $$ = (Node *)n; 0.00 : 518c6e: 49 89 c6 mov %rax,%r14 : from_clause : where_or_current_clause : returning_clause : { : UpdateStmt *n = makeNode(UpdateStmt); : n->relation = $3; 0.00 : 518c71: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 518c75: 48 89 50 08 mov %rdx,0x8(%rax) : n->targetList = $5; 0.00 : 518c79: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 518c7d: 48 89 50 10 mov %rdx,0x10(%rax) : n->fromClause = $6; 0.00 : 518c81: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 518c85: 48 89 50 20 mov %rdx,0x20(%rax) : n->whereClause = $7; 0.00 : 518c89: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 518c8d: 48 89 50 18 mov %rdx,0x18(%rax) : n->returningList = $8; 0.00 : 518c91: 48 8b 11 mov (%rcx),%rdx 0.00 : 518c94: 48 89 50 28 mov %rdx,0x28(%rax) : n->withClause = $1; 0.00 : 518c98: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 518c9c: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *)n; : } : ; 0.00 : 518ca0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518ca7: e9 d4 8c ff ff jmpq 511980 : ; : : opt_nowait_or_skip: : NOWAIT { $$ = LockWaitError; } : | SKIP LOCKED { $$ = LockWaitSkip; } : | /*EMPTY*/ { $$ = LockWaitBlock; } 0.00 : 518cac: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518cb3: ff ff ff 0.00 : 518cb6: 49 21 d6 and %rdx,%r14 : ; 0.00 : 518cb9: e9 c2 8c ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_nowait_or_skip: : NOWAIT { $$ = LockWaitError; } : | SKIP LOCKED { $$ = LockWaitSkip; } 0.00 : 518cbe: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518cc5: ff ff ff 0.00 : 518cc8: 49 21 c6 and %rax,%r14 0.00 : 518ccb: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = LockWaitBlock; } 0.00 : 518ccf: e9 ac 8c ff ff jmpq 511980 : opt_nowait: NOWAIT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_nowait_or_skip: : NOWAIT { $$ = LockWaitError; } 0.00 : 518cd4: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518cdb: ff ff ff 0.00 : 518cde: 49 21 f6 and %rsi,%r14 0.00 : 518ce1: 49 83 ce 02 or $0x2,%r14 : | SKIP LOCKED { $$ = LockWaitSkip; } 0.00 : 518ce5: e9 96 8c ff ff jmpq 511980 : | EXCLUSIVE { $$ = ExclusiveLock; } : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } : ; : : opt_nowait: NOWAIT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 518cea: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 518ced: e9 8e 8c ff ff jmpq 511980 : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } : | EXCLUSIVE { $$ = ExclusiveLock; } : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } : ; : : opt_nowait: NOWAIT { $$ = TRUE; } 0.00 : 518cf2: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 518cf5: e9 86 8c ff ff jmpq 511980 : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } : | EXCLUSIVE { $$ = ExclusiveLock; } : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } 0.00 : 518cfa: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 518d01: ff ff ff 0.00 : 518d04: 49 21 de and %rbx,%r14 0.00 : 518d07: 49 83 ce 08 or $0x8,%r14 : ; 0.00 : 518d0b: e9 70 8c ff ff jmpq 511980 : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } : | EXCLUSIVE { $$ = ExclusiveLock; } 0.00 : 518d10: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 518d17: ff ff ff 0.00 : 518d1a: 49 21 ce and %rcx,%r14 0.00 : 518d1d: 49 83 ce 07 or $0x7,%r14 : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } 0.00 : 518d21: e9 5a 8c ff ff jmpq 511980 : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } 0.00 : 518d26: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518d2d: ff ff ff 0.00 : 518d30: 49 21 d6 and %rdx,%r14 0.00 : 518d33: 49 83 ce 06 or $0x6,%r14 : | EXCLUSIVE { $$ = ExclusiveLock; } 0.00 : 518d37: e9 44 8c ff ff jmpq 511980 : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } 0.00 : 518d3c: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518d43: ff ff ff 0.00 : 518d46: 49 21 c6 and %rax,%r14 0.00 : 518d49: 49 83 ce 05 or $0x5,%r14 : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } 0.00 : 518d4d: e9 2e 8c ff ff jmpq 511980 : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } 0.00 : 518d52: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518d59: ff ff ff 0.00 : 518d5c: 49 21 f6 and %rsi,%r14 0.00 : 518d5f: 49 83 ce 04 or $0x4,%r14 : | SHARE { $$ = ShareLock; } 0.00 : 518d63: e9 18 8c ff ff jmpq 511980 : | /*EMPTY*/ { $$ = AccessExclusiveLock; } : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } 0.00 : 518d68: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 518d6f: ff ff ff 0.00 : 518d72: 49 21 de and %rbx,%r14 0.00 : 518d75: 49 83 ce 03 or $0x3,%r14 : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } 0.00 : 518d79: e9 02 8c ff ff jmpq 511980 : opt_lock: IN_P lock_type MODE { $$ = $2; } : | /*EMPTY*/ { $$ = AccessExclusiveLock; } : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } 0.00 : 518d7e: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 518d85: ff ff ff 0.00 : 518d88: 49 21 ce and %rcx,%r14 0.00 : 518d8b: 49 83 ce 02 or $0x2,%r14 : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } 0.00 : 518d8f: e9 ec 8b ff ff jmpq 511980 : : opt_lock: IN_P lock_type MODE { $$ = $2; } : | /*EMPTY*/ { $$ = AccessExclusiveLock; } : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } 0.00 : 518d94: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518d9b: ff ff ff 0.00 : 518d9e: 49 21 d6 and %rdx,%r14 0.00 : 518da1: 49 83 ce 01 or $0x1,%r14 : | ROW SHARE { $$ = RowShareLock; } 0.00 : 518da5: e9 d6 8b ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_lock: IN_P lock_type MODE { $$ = $2; } : | /*EMPTY*/ { $$ = AccessExclusiveLock; } 0.00 : 518daa: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518db1: ff ff ff 0.00 : 518db4: 49 21 c6 and %rax,%r14 0.00 : 518db7: 49 83 ce 08 or $0x8,%r14 : ; 0.00 : 518dbb: e9 c0 8b ff ff jmpq 511980 : n->nowait = $5; : $$ = (Node *)n; : } : ; : : opt_lock: IN_P lock_type MODE { $$ = $2; } 0.00 : 518dc0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518dc7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518dce: ff ff ff 0.00 : 518dd1: 49 21 f6 and %rsi,%r14 0.00 : 518dd4: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 518dd7: 49 09 c6 or %rax,%r14 : | /*EMPTY*/ { $$ = AccessExclusiveLock; } 0.00 : 518dda: e9 a1 8b ff ff jmpq 511980 : * : *****************************************************************************/ : : LockStmt: LOCK_P opt_table relation_expr_list opt_lock opt_nowait : { : LockStmt *n = makeNode(LockStmt); 0.00 : 518ddf: 48 8b 3d 7a 1a 6a 00 mov 0x6a1a7a(%rip),%rdi # bba860 0.00 : 518de6: be 18 00 00 00 mov $0x18,%esi 0.00 : 518deb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518df2: e8 19 00 28 00 callq 798e10 0.00 : 518df7: c7 00 ee 02 00 00 movl $0x2ee,(%rax) : : n->relations = $3; 0.00 : 518dfd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->mode = $4; : n->nowait = $5; : $$ = (Node *)n; 0.00 : 518e04: 49 89 c6 mov %rax,%r14 : : LockStmt: LOCK_P opt_table relation_expr_list opt_lock opt_nowait : { : LockStmt *n = makeNode(LockStmt); : : n->relations = $3; 0.00 : 518e07: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 518e0b: 48 89 50 08 mov %rdx,0x8(%rax) : n->mode = $4; 0.00 : 518e0f: 8b 51 f8 mov -0x8(%rcx),%edx 0.00 : 518e12: 89 50 10 mov %edx,0x10(%rax) : n->nowait = $5; 0.00 : 518e15: 0f b6 11 movzbl (%rcx),%edx 0.00 : 518e18: 88 50 14 mov %dl,0x14(%rax) : $$ = (Node *)n; : } : ; 0.00 : 518e1b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518e22: e9 59 8b ff ff jmpq 511980 : } : ; : : using_clause: : USING from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 518e27: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 518e2a: e9 51 8b ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : using_clause: : USING from_list { $$ = $2; } 0.00 : 518e2f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518e36: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 518e39: e9 42 8b ff ff jmpq 511980 : *****************************************************************************/ : : DeleteStmt: opt_with_clause DELETE_P FROM relation_expr_opt_alias : using_clause where_or_current_clause returning_clause : { : DeleteStmt *n = makeNode(DeleteStmt); 0.00 : 518e3e: 48 8b 3d 1b 1a 6a 00 mov 0x6a1a1b(%rip),%rdi # bba860 0.00 : 518e45: be 30 00 00 00 mov $0x30,%esi 0.00 : 518e4a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518e51: e8 ba ff 27 00 callq 798e10 0.00 : 518e56: c7 00 bf 02 00 00 movl $0x2bf,(%rax) : n->relation = $4; 0.00 : 518e5c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->usingClause = $5; : n->whereClause = $6; : n->returningList = $7; : n->withClause = $1; : $$ = (Node *)n; 0.00 : 518e63: 49 89 c6 mov %rax,%r14 : : DeleteStmt: opt_with_clause DELETE_P FROM relation_expr_opt_alias : using_clause where_or_current_clause returning_clause : { : DeleteStmt *n = makeNode(DeleteStmt); : n->relation = $4; 0.00 : 518e66: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 518e6a: 48 89 50 08 mov %rdx,0x8(%rax) : n->usingClause = $5; 0.00 : 518e6e: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 518e72: 48 89 50 10 mov %rdx,0x10(%rax) : n->whereClause = $6; 0.00 : 518e76: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 518e7a: 48 89 50 18 mov %rdx,0x18(%rax) : n->returningList = $7; 0.00 : 518e7e: 48 8b 13 mov (%rbx),%rdx 0.00 : 518e81: 48 89 50 20 mov %rdx,0x20(%rax) : n->withClause = $1; 0.00 : 518e85: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 518e89: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 518e8d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518e94: e9 e7 8a ff ff jmpq 511980 : } : ; : : returning_clause: : RETURNING target_list { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 518e99: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 518e9c: e9 df 8a ff ff jmpq 511980 : $$->location = @1; : } : ; : : returning_clause: : RETURNING target_list { $$ = $2; } 0.00 : 518ea1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518ea8: 4c 8b 31 mov (%rcx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 518eab: e9 d0 8a ff ff jmpq 511980 : ; : : insert_column_item: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 518eb0: 48 8b 3d a9 19 6a 00 mov 0x6a19a9(%rip),%rdi # bba860 0.00 : 518eb7: be 28 00 00 00 mov $0x28,%esi 0.00 : 518ebc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518ec3: e8 48 ff 27 00 callq 798e10 0.00 : 518ec8: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $1; 0.00 : 518ece: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : ; : : insert_column_item: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 518ed5: 49 89 c6 mov %rax,%r14 : $$->name = $1; 0.00 : 518ed8: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 518edc: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = check_indirection($2, yyscanner); 0.00 : 518ee0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518ee7: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 518eee: 48 8b 38 mov (%rax),%rdi 0.00 : 518ef1: e8 ca 4e ff ff callq 50ddc0 : $$->val = NULL; 0.00 : 518ef6: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 518efd: 00 : insert_column_item: : ColId opt_indirection : { : $$ = makeNode(ResTarget); : $$->name = $1; : $$->indirection = check_indirection($2, yyscanner); 0.00 : 518efe: 49 89 46 10 mov %rax,0x10(%r14) : $$->val = NULL; : $$->location = @1; 0.00 : 518f02: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 518f09: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 518f0c: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 518f10: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518f17: e9 64 8a ff ff jmpq 511980 : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } : | insert_column_list ',' insert_column_item : { $$ = lappend($1, $3); } 0.00 : 518f1c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518f23: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 518f27: 48 8b 33 mov (%rbx),%rsi 0.00 : 518f2a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518f31: e8 4a 8f 0c 00 callq 5e1e80 : ; 0.00 : 518f36: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } : | insert_column_list ',' insert_column_item : { $$ = lappend($1, $3); } 0.00 : 518f3d: 49 89 c6 mov %rax,%r14 : ; 0.00 : 518f40: e9 3b 8a ff ff jmpq 511980 : } : ; : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } 0.00 : 518f45: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518f4c: 31 f6 xor %esi,%esi 0.00 : 518f4e: 48 8b 39 mov (%rcx),%rdi 0.00 : 518f51: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518f58: e8 f3 88 0c 00 callq 5e1850 : | insert_column_list ',' insert_column_item 0.00 : 518f5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } 0.00 : 518f64: 49 89 c6 mov %rax,%r14 : | insert_column_list ',' insert_column_item 0.00 : 518f67: e9 14 8a ff ff jmpq 511980 : $$->cols = $2; : $$->selectStmt = $4; : } : | DEFAULT VALUES : { : $$ = makeNode(InsertStmt); 0.00 : 518f6c: 48 8b 3d ed 18 6a 00 mov 0x6a18ed(%rip),%rdi # bba860 0.00 : 518f73: be 30 00 00 00 mov $0x30,%esi 0.00 : 518f78: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518f7f: e8 8c fe 27 00 callq 798e10 0.00 : 518f84: c7 00 be 02 00 00 movl $0x2be,(%rax) : $$->cols = NIL; 0.00 : 518f8a: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 518f91: 00 : $$->cols = $2; : $$->selectStmt = $4; : } : | DEFAULT VALUES : { : $$ = makeNode(InsertStmt); 0.00 : 518f92: 49 89 c6 mov %rax,%r14 : $$->cols = NIL; : $$->selectStmt = NULL; 0.00 : 518f95: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 518f9c: 00 : } : ; 0.00 : 518f9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518fa4: e9 d7 89 ff ff jmpq 511980 : $$->cols = NIL; : $$->selectStmt = $1; : } : | '(' insert_column_list ')' SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 518fa9: 48 8b 3d b0 18 6a 00 mov 0x6a18b0(%rip),%rdi # bba860 0.00 : 518fb0: be 30 00 00 00 mov $0x30,%esi 0.00 : 518fb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518fbc: e8 4f fe 27 00 callq 798e10 0.00 : 518fc1: c7 00 be 02 00 00 movl $0x2be,(%rax) : $$->cols = $2; 0.00 : 518fc7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->cols = NIL; : $$->selectStmt = $1; : } : | '(' insert_column_list ')' SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 518fce: 49 89 c6 mov %rax,%r14 : $$->cols = $2; 0.00 : 518fd1: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 518fd5: 49 89 46 10 mov %rax,0x10(%r14) : $$->selectStmt = $4; 0.00 : 518fd9: 48 8b 02 mov (%rdx),%rax 0.00 : 518fdc: 49 89 46 18 mov %rax,0x18(%r14) : } : | DEFAULT VALUES 0.00 : 518fe0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518fe7: e9 94 89 ff ff jmpq 511980 : ; : : insert_rest: : SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 518fec: 48 8b 3d 6d 18 6a 00 mov 0x6a186d(%rip),%rdi # bba860 0.00 : 518ff3: be 30 00 00 00 mov $0x30,%esi 0.00 : 518ff8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518fff: e8 0c fe 27 00 callq 798e10 0.00 : 519004: c7 00 be 02 00 00 movl $0x2be,(%rax) : $$->cols = NIL; 0.00 : 51900a: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 519011: 00 : ; : : insert_rest: : SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 519012: 49 89 c6 mov %rax,%r14 : $$->cols = NIL; : $$->selectStmt = $1; 0.00 : 519015: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51901c: 48 8b 06 mov (%rsi),%rax 0.00 : 51901f: 49 89 46 18 mov %rax,0x18(%r14) : } : | '(' insert_column_list ')' SelectStmt 0.00 : 519023: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51902a: e9 51 89 ff ff jmpq 511980 : *****************************************************************************/ : : InsertStmt: : opt_with_clause INSERT INTO qualified_name insert_rest returning_clause : { : $5->relation = $4; 0.00 : 51902f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519036: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51903a: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 51903e: 48 89 42 08 mov %rax,0x8(%rdx) : $5->returningList = $6; 0.00 : 519042: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519046: 48 8b 03 mov (%rbx),%rax 0.00 : 519049: 48 89 42 20 mov %rax,0x20(%rdx) : $5->withClause = $1; 0.00 : 51904d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519051: 48 8b 43 d8 mov -0x28(%rbx),%rax 0.00 : 519055: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = (Node *) $5; 0.00 : 519059: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : ; 0.00 : 51905d: e9 1e 89 ff ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | DEALLOCATE PREPARE ALL : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 519062: 48 8b 3d f7 17 6a 00 mov 0x6a17f7(%rip),%rdi # bba860 0.00 : 519069: be 10 00 00 00 mov $0x10,%esi 0.00 : 51906e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519075: e8 96 fd 27 00 callq 798e10 0.00 : 51907a: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = NULL; 0.00 : 519080: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 519087: 00 : $$ = (Node *) n; 0.00 : 519088: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51908b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519092: e9 e9 88 ff ff jmpq 511980 : n->name = $3; : $$ = (Node *) n; : } : | DEALLOCATE ALL : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 519097: 48 8b 3d c2 17 6a 00 mov 0x6a17c2(%rip),%rdi # bba860 0.00 : 51909e: be 10 00 00 00 mov $0x10,%esi 0.00 : 5190a3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5190aa: e8 61 fd 27 00 callq 798e10 0.00 : 5190af: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = NULL; 0.00 : 5190b5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5190bc: 00 : $$ = (Node *) n; 0.00 : 5190bd: 49 89 c6 mov %rax,%r14 : } : | DEALLOCATE PREPARE ALL 0.00 : 5190c0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5190c7: e9 b4 88 ff ff jmpq 511980 : n->name = $2; : $$ = (Node *) n; : } : | DEALLOCATE PREPARE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 5190cc: 48 8b 3d 8d 17 6a 00 mov 0x6a178d(%rip),%rdi # bba860 0.00 : 5190d3: be 10 00 00 00 mov $0x10,%esi 0.00 : 5190d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5190df: e8 2c fd 27 00 callq 798e10 0.00 : 5190e4: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = $3; 0.00 : 5190ea: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; 0.00 : 5190f1: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | DEALLOCATE PREPARE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); : n->name = $3; 0.00 : 5190f4: 48 8b 11 mov (%rcx),%rdx 0.00 : 5190f7: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : | DEALLOCATE ALL 0.00 : 5190fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519102: e9 79 88 ff ff jmpq 511980 : * : *****************************************************************************/ : : DeallocateStmt: DEALLOCATE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 519107: 48 8b 3d 52 17 6a 00 mov 0x6a1752(%rip),%rdi # bba860 0.00 : 51910e: be 10 00 00 00 mov $0x10,%esi 0.00 : 519113: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51911a: e8 f1 fc 27 00 callq 798e10 0.00 : 51911f: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = $2; 0.00 : 519125: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *) n; 0.00 : 51912c: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DeallocateStmt: DEALLOCATE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); : n->name = $2; 0.00 : 51912f: 48 8b 16 mov (%rsi),%rdx 0.00 : 519132: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : | DEALLOCATE PREPARE name 0.00 : 519136: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51913d: e9 3e 88 ff ff jmpq 511980 : $$ = (Node *) ctas; : } : ; : : execute_param_clause: '(' expr_list ')' { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 519142: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 519145: e9 36 88 ff ff jmpq 511980 : $4->skipData = !($9); : $$ = (Node *) ctas; : } : ; : : execute_param_clause: '(' expr_list ')' { $$ = $2; } 0.00 : 51914a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519151: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 519155: e9 26 88 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OptTemp TABLE create_as_target AS : EXECUTE name execute_param_clause opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 51915a: 48 8b 3d ff 16 6a 00 mov 0x6a16ff(%rip),%rdi # bba860 0.00 : 519161: be 20 00 00 00 mov $0x20,%esi 0.00 : 519166: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51916d: e8 9e fc 27 00 callq 798e10 0.00 : 519172: c7 00 e3 02 00 00 movl $0x2e3,(%rax) : ExecuteStmt *n = makeNode(ExecuteStmt); 0.00 : 519178: 48 8b 3d e1 16 6a 00 mov 0x6a16e1(%rip),%rdi # bba860 0.00 : 51917f: be 18 00 00 00 mov $0x18,%esi : $$ = (Node *) n; : } : | CREATE OptTemp TABLE create_as_target AS : EXECUTE name execute_param_clause opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 519184: 48 89 c3 mov %rax,%rbx : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; : $4->skipData = !($9); : $$ = (Node *) ctas; 0.00 : 519187: 49 89 de mov %rbx,%r14 : } : | CREATE OptTemp TABLE create_as_target AS : EXECUTE name execute_param_clause opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ExecuteStmt *n = makeNode(ExecuteStmt); 0.00 : 51918a: e8 81 fc 27 00 callq 798e10 0.00 : 51918f: c7 00 fc 02 00 00 movl $0x2fc,(%rax) : n->name = $7; 0.00 : 519195: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51919c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5191a0: 48 89 50 08 mov %rdx,0x8(%rax) : n->params = $8; 0.00 : 5191a4: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5191a8: 48 89 50 10 mov %rdx,0x10(%rax) : ctas->query = (Node *) n; 0.00 : 5191ac: 48 89 43 08 mov %rax,0x8(%rbx) : ctas->into = $4; 0.00 : 5191b0: 48 8b 41 d8 mov -0x28(%rcx),%rax : ctas->relkind = OBJECT_TABLE; 0.00 : 5191b4: c7 43 18 1b 00 00 00 movl $0x1b,0x18(%rbx) : ctas->is_select_into = false; 0.00 : 5191bb: c6 43 1c 00 movb $0x0,0x1c(%rbx) : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ExecuteStmt *n = makeNode(ExecuteStmt); : n->name = $7; : n->params = $8; : ctas->query = (Node *) n; : ctas->into = $4; 0.00 : 5191bf: 48 89 43 10 mov %rax,0x10(%rbx) : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; 0.00 : 5191c3: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 5191c7: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 5191cb: 8b 41 c8 mov -0x38(%rcx),%eax 0.00 : 5191ce: 88 42 24 mov %al,0x24(%rdx) : $4->skipData = !($9); 0.00 : 5191d1: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 5191d4: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 5191d8: 0f 94 40 38 sete 0x38(%rax) : $$ = (Node *) ctas; : } : ; 0.00 : 5191dc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5191e3: e9 98 87 ff ff jmpq 511980 : * : *****************************************************************************/ : : ExecuteStmt: EXECUTE name execute_param_clause : { : ExecuteStmt *n = makeNode(ExecuteStmt); 0.00 : 5191e8: 48 8b 3d 71 16 6a 00 mov 0x6a1671(%rip),%rdi # bba860 0.00 : 5191ef: be 18 00 00 00 mov $0x18,%esi 0.00 : 5191f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5191fb: e8 10 fc 27 00 callq 798e10 0.00 : 519200: c7 00 fc 02 00 00 movl $0x2fc,(%rax) : n->name = $2; 0.00 : 519206: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->params = $3; : $$ = (Node *) n; 0.00 : 51920d: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : ExecuteStmt: EXECUTE name execute_param_clause : { : ExecuteStmt *n = makeNode(ExecuteStmt); : n->name = $2; 0.00 : 519210: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 519214: 48 89 50 08 mov %rdx,0x8(%rax) : n->params = $3; 0.00 : 519218: 48 8b 16 mov (%rsi),%rdx 0.00 : 51921b: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : | CREATE OptTemp TABLE create_as_target AS 0.00 : 51921f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519226: e9 55 87 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : prep_type_clause: '(' type_list ')' { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51922b: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51922e: e9 4d 87 ff ff jmpq 511980 : n->query = $5; : $$ = (Node *) n; : } : ; : : prep_type_clause: '(' type_list ')' { $$ = $2; } 0.00 : 519233: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51923a: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51923e: e9 3d 87 ff ff jmpq 511980 : * : *****************************************************************************/ : : PrepareStmt: PREPARE name prep_type_clause AS PreparableStmt : { : PrepareStmt *n = makeNode(PrepareStmt); 0.00 : 519243: 48 8b 3d 16 16 6a 00 mov 0x6a1616(%rip),%rdi # bba860 0.00 : 51924a: be 20 00 00 00 mov $0x20,%esi 0.00 : 51924f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519256: e8 b5 fb 27 00 callq 798e10 0.00 : 51925b: c7 00 fb 02 00 00 movl $0x2fb,(%rax) : n->name = $2; 0.00 : 519261: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->argtypes = $3; : n->query = $5; : $$ = (Node *) n; 0.00 : 519268: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : PrepareStmt: PREPARE name prep_type_clause AS PreparableStmt : { : PrepareStmt *n = makeNode(PrepareStmt); : n->name = $2; 0.00 : 51926b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51926f: 48 89 50 08 mov %rdx,0x8(%rax) : n->argtypes = $3; 0.00 : 519273: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519277: 48 89 50 10 mov %rdx,0x10(%rax) : n->query = $5; 0.00 : 51927b: 48 8b 11 mov (%rcx),%rdx 0.00 : 51927e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 519282: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519289: e9 f2 86 ff ff jmpq 511980 : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 51928e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 519291: e9 ea 86 ff ff jmpq 511980 : | analyze_keyword { $$ = "analyze"; } : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } 0.00 : 519296: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51929d: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 5192a0: e9 db 86 ff ff jmpq 511980 : NonReservedWord { $$ = $1; } : | analyze_keyword { $$ = "analyze"; } : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 5192a5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5192ac: 48 8b 3b mov (%rbx),%rdi 0.00 : 5192af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5192b6: e8 35 64 0e 00 callq 5ff6f0 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 5192bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : NonReservedWord { $$ = $1; } : | analyze_keyword { $$ = "analyze"; } : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 5192c2: 49 89 c6 mov %rax,%r14 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 5192c5: e9 b6 86 ff ff jmpq 511980 : } : ; : : explain_option_name: : NonReservedWord { $$ = $1; } : | analyze_keyword { $$ = "analyze"; } 0.00 : 5192ca: 41 be 47 8e 8e 00 mov $0x8e8e47,%r14d : ; 0.00 : 5192d0: e9 ab 86 ff ff jmpq 511980 : $$ = makeDefElem($1, $2); : } : ; : : explain_option_name: : NonReservedWord { $$ = $1; } 0.00 : 5192d5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5192dc: 4c 8b 31 mov (%rcx),%r14 : | analyze_keyword { $$ = "analyze"; } 0.00 : 5192df: e9 9c 86 ff ff jmpq 511980 : ; : : explain_option_elem: : explain_option_name explain_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 5192e4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5192eb: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5192ef: 48 8b 32 mov (%rdx),%rsi 0.00 : 5192f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5192f9: e8 02 82 0d 00 callq 5f1500 : } : ; 0.00 : 5192fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : explain_option_elem: : explain_option_name explain_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 519305: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 519308: e9 73 86 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | explain_option_list ',' explain_option_elem : { : $$ = lappend($1, $3); 0.00 : 51930d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519314: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 519318: 48 8b 36 mov (%rsi),%rsi 0.00 : 51931b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519322: e8 59 8b 0c 00 callq 5e1e80 : } : ; 0.00 : 519327: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | explain_option_list ',' explain_option_elem : { : $$ = lappend($1, $3); 0.00 : 51932e: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 519331: e9 4a 86 ff ff jmpq 511980 : ; : : explain_option_list: : explain_option_elem : { : $$ = list_make1($1); 0.00 : 519336: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51933d: 31 f6 xor %esi,%esi 0.00 : 51933f: 48 8b 3b mov (%rbx),%rdi 0.00 : 519342: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519349: e8 02 85 0c 00 callq 5e1850 : } : | explain_option_list ',' explain_option_elem 0.00 : 51934e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : explain_option_list: : explain_option_elem : { : $$ = list_make1($1); 0.00 : 519355: 49 89 c6 mov %rax,%r14 : } : | explain_option_list ',' explain_option_elem 0.00 : 519358: e9 23 86 ff ff jmpq 511980 : n->options = list_make1(makeDefElem("verbose", NULL)); : $$ = (Node *) n; : } : | EXPLAIN '(' explain_option_list ')' ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 51935d: 48 8b 3d fc 14 6a 00 mov 0x6a14fc(%rip),%rdi # bba860 0.00 : 519364: be 18 00 00 00 mov $0x18,%esi 0.00 : 519369: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519370: e8 9b fa 27 00 callq 798e10 0.00 : 519375: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $5; 0.00 : 51937b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $3; : $$ = (Node *) n; 0.00 : 519382: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | EXPLAIN '(' explain_option_list ')' ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $5; 0.00 : 519385: 48 8b 11 mov (%rcx),%rdx 0.00 : 519388: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $3; 0.00 : 51938c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519390: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 519394: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51939b: e9 e0 85 ff ff jmpq 511980 : makeDefElem("verbose", NULL)); : $$ = (Node *) n; : } : | EXPLAIN VERBOSE ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 5193a0: 48 8b 3d b9 14 6a 00 mov 0x6a14b9(%rip),%rdi # bba860 0.00 : 5193a7: be 18 00 00 00 mov $0x18,%esi 0.00 : 5193ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5193b3: e8 58 fa 27 00 callq 798e10 0.00 : 5193b8: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $3; 0.00 : 5193be: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : makeDefElem("verbose", NULL)); : $$ = (Node *) n; : } : | EXPLAIN VERBOSE ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 5193c5: 48 89 c3 mov %rax,%rbx : n->query = $3; : n->options = list_make1(makeDefElem("verbose", NULL)); 0.00 : 5193c8: 31 f6 xor %esi,%esi 0.00 : 5193ca: bf ba b4 8d 00 mov $0x8db4ba,%edi : $$ = (Node *) n; 0.00 : 5193cf: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | EXPLAIN VERBOSE ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $3; 0.00 : 5193d2: 48 8b 02 mov (%rdx),%rax 0.00 : 5193d5: 48 89 43 08 mov %rax,0x8(%rbx) : n->options = list_make1(makeDefElem("verbose", NULL)); 0.00 : 5193d9: e8 22 81 0d 00 callq 5f1500 0.00 : 5193de: 31 f6 xor %esi,%esi 0.00 : 5193e0: 48 89 c7 mov %rax,%rdi 0.00 : 5193e3: e8 68 84 0c 00 callq 5e1850 0.00 : 5193e8: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *) n; : } : | EXPLAIN '(' explain_option_list ')' ExplainableStmt 0.00 : 5193ec: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5193f3: e9 88 85 ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 5193f8: 48 8b 3d 61 14 6a 00 mov 0x6a1461(%rip),%rdi # bba860 0.00 : 5193ff: be 18 00 00 00 mov $0x18,%esi 0.00 : 519404: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51940b: e8 00 fa 27 00 callq 798e10 0.00 : 519410: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $4; 0.00 : 519416: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = NIL; : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 51941d: 48 89 c3 mov %rax,%rbx : n->query = $4; : n->options = list_make1(makeDefElem("analyze", NULL)); 0.00 : 519420: bf 47 8e 8e 00 mov $0x8e8e47,%edi : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $4; 0.00 : 519425: 48 8b 06 mov (%rsi),%rax : n->options = list_make1(makeDefElem("analyze", NULL)); 0.00 : 519428: 31 f6 xor %esi,%esi : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $4; 0.00 : 51942a: 48 89 43 08 mov %rax,0x8(%rbx) : n->options = list_make1(makeDefElem("analyze", NULL)); 0.00 : 51942e: e8 cd 80 0d 00 callq 5f1500 0.00 : 519433: 31 f6 xor %esi,%esi 0.00 : 519435: 48 89 c7 mov %rax,%rdi 0.00 : 519438: e8 13 84 0c 00 callq 5e1850 0.00 : 51943d: 48 89 43 10 mov %rax,0x10(%rbx) : if ($3) 0.00 : 519441: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519448: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51944f: 80 78 f8 00 cmpb $0x0,-0x8(%rax) 0.00 : 519453: 74 23 je 519478 : n->options = lappend(n->options, 0.00 : 519455: 31 f6 xor %esi,%esi 0.00 : 519457: bf ba b4 8d 00 mov $0x8db4ba,%edi 0.00 : 51945c: e8 9f 80 0d 00 callq 5f1500 0.00 : 519461: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 519465: 48 89 c6 mov %rax,%rsi 0.00 : 519468: e8 13 8a 0c 00 callq 5e1e80 0.00 : 51946d: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 519471: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeDefElem("verbose", NULL)); : $$ = (Node *) n; 0.00 : 519478: 49 89 de mov %rbx,%r14 : } : | EXPLAIN VERBOSE ExplainableStmt 0.00 : 51947b: e9 00 85 ff ff jmpq 511980 : *****************************************************************************/ : : ExplainStmt: : EXPLAIN ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 519480: 48 8b 3d d9 13 6a 00 mov 0x6a13d9(%rip),%rdi # bba860 0.00 : 519487: be 18 00 00 00 mov $0x18,%esi 0.00 : 51948c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519493: e8 78 f9 27 00 callq 798e10 0.00 : 519498: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $2; 0.00 : 51949e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = NIL; : $$ = (Node *) n; 0.00 : 5194a5: 49 89 c6 mov %rax,%r14 : : ExplainStmt: : EXPLAIN ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $2; 0.00 : 5194a8: 48 8b 11 mov (%rcx),%rdx : n->options = NIL; 0.00 : 5194ab: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5194b2: 00 : : ExplainStmt: : EXPLAIN ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $2; 0.00 : 5194b3: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = NIL; : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt 0.00 : 5194b7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5194be: e9 bd 84 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_name_list: : '(' name_list ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5194c3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5194c6: e9 b5 84 ff ff jmpq 511980 : opt_freeze: FREEZE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_name_list: : '(' name_list ')' { $$ = $2; } 0.00 : 5194cb: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5194d2: 4c 8b 70 f8 mov -0x8(%rax),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5194d6: e9 a5 84 ff ff jmpq 511980 : opt_full: FULL { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_freeze: FREEZE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194db: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 5194de: e9 9d 84 ff ff jmpq 511980 : : opt_full: FULL { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_freeze: FREEZE { $$ = TRUE; } 0.00 : 5194e3: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194e6: e9 95 84 ff ff jmpq 511980 : VERBOSE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_full: FULL { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194eb: 45 30 f6 xor %r14b,%r14b 0.00 : 5194ee: 66 90 xchg %ax,%ax : ; 0.00 : 5194f0: e9 8b 84 ff ff jmpq 511980 : opt_verbose: : VERBOSE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_full: FULL { $$ = TRUE; } 0.00 : 5194f5: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194f8: e9 83 84 ff ff jmpq 511980 : | ANALYSE /* British */ {} : ; : : opt_verbose: : VERBOSE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194fd: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 519500: e9 7b 84 ff ff jmpq 511980 : ANALYZE {} : | ANALYSE /* British */ {} : ; : : opt_verbose: : VERBOSE { $$ = TRUE; } 0.00 : 519505: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 519508: e9 73 84 ff ff jmpq 511980 : $$ = makeNullAConst(@1); : } : ; : : Iconst: ICONST { $$ = $1; }; : Sconst: SCONST { $$ = $1; }; 0.00 : 51950d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519514: 4c 8b 33 mov (%rbx),%r14 : RoleId: NonReservedWord { $$ = $1; }; 0.00 : 519517: e9 64 84 ff ff jmpq 511980 0.00 : 51951c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519523: 4c 8b 36 mov (%rsi),%r14 : 0.00 : 519526: e9 55 84 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *)n; : } : | analyze_keyword opt_verbose qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 51952b: 48 8b 3d 2e 13 6a 00 mov 0x6a132e(%rip),%rdi # bba860 0.00 : 519532: be 28 00 00 00 mov $0x28,%esi 0.00 : 519537: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51953e: e8 cd f8 27 00 callq 798e10 0.00 : 519543: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_ANALYZE; 0.00 : 519549: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->va_cols = NIL; : $$ = (Node *)n; : } : | analyze_keyword opt_verbose qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 519550: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_ANALYZE; : if ($2) 0.00 : 519553: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51955a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519561: 80 7b f0 00 cmpb $0x0,-0x10(%rbx) 0.00 : 519565: 74 07 je 51956e : n->options |= VACOPT_VERBOSE; 0.00 : 519567: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->freeze_min_age = -1; 0.00 : 51956e: c7 42 08 ff ff ff ff movl $0xffffffff,0x8(%rdx) : n->freeze_table_age = -1; 0.00 : 519575: c7 42 0c ff ff ff ff movl $0xffffffff,0xc(%rdx) : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : n->relation = $3; : n->va_cols = $4; : $$ = (Node *)n; 0.00 : 51957c: 49 89 d6 mov %rdx,%r14 : n->options = VACOPT_ANALYZE; : if ($2) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = -1; : n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; 0.00 : 51957f: c7 42 10 ff ff ff ff movl $0xffffffff,0x10(%rdx) : n->multixact_freeze_table_age = -1; 0.00 : 519586: c7 42 14 ff ff ff ff movl $0xffffffff,0x14(%rdx) : n->relation = $3; 0.00 : 51958d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519594: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 519598: 48 89 42 18 mov %rax,0x18(%rdx) : n->va_cols = $4; 0.00 : 51959c: 48 8b 06 mov (%rsi),%rax 0.00 : 51959f: 48 89 42 20 mov %rax,0x20(%rdx) : $$ = (Node *)n; : } : ; 0.00 : 5195a3: e9 d8 83 ff ff jmpq 511980 : ; : : AnalyzeStmt: : analyze_keyword opt_verbose : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5195a8: 48 8b 3d b1 12 6a 00 mov 0x6a12b1(%rip),%rdi # bba860 0.00 : 5195af: be 28 00 00 00 mov $0x28,%esi 0.00 : 5195b4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5195bb: e8 50 f8 27 00 callq 798e10 0.00 : 5195c0: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_ANALYZE; 0.00 : 5195c6: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : if ($2) 0.00 : 5195cd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5195d4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5195db: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 5195de: 74 07 je 5195e7 : n->options |= VACOPT_VERBOSE; 0.00 : 5195e0: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->freeze_min_age = -1; 0.00 : 5195e7: c7 40 08 ff ff ff ff movl $0xffffffff,0x8(%rax) : n->freeze_table_age = -1; 0.00 : 5195ee: c7 40 0c ff ff ff ff movl $0xffffffff,0xc(%rax) : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : n->relation = NULL; : n->va_cols = NIL; : $$ = (Node *)n; 0.00 : 5195f5: 49 89 c6 mov %rax,%r14 : n->options = VACOPT_ANALYZE; : if ($2) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = -1; : n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; 0.00 : 5195f8: c7 40 10 ff ff ff ff movl $0xffffffff,0x10(%rax) : n->multixact_freeze_table_age = -1; 0.00 : 5195ff: c7 40 14 ff ff ff ff movl $0xffffffff,0x14(%rax) : n->relation = NULL; 0.00 : 519606: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51960d: 00 : n->va_cols = NIL; 0.00 : 51960e: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 519615: 00 : $$ = (Node *)n; : } : | analyze_keyword opt_verbose qualified_name opt_name_list 0.00 : 519616: e9 65 83 ff ff jmpq 511980 : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } : | VERBOSE { $$ = VACOPT_VERBOSE; } : | FREEZE { $$ = VACOPT_FREEZE; } : | FULL { $$ = VACOPT_FULL; } 0.00 : 51961b: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 519622: ff ff ff 0.00 : 519625: 49 21 d6 and %rdx,%r14 0.00 : 519628: 49 83 ce 10 or $0x10,%r14 : ; 0.00 : 51962c: e9 4f 83 ff ff jmpq 511980 : ; : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } : | VERBOSE { $$ = VACOPT_VERBOSE; } : | FREEZE { $$ = VACOPT_FREEZE; } 0.00 : 519631: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 519638: ff ff ff 0.00 : 51963b: 49 21 c6 and %rax,%r14 0.00 : 51963e: 49 83 ce 08 or $0x8,%r14 : | FULL { $$ = VACOPT_FULL; } 0.00 : 519642: e9 39 83 ff ff jmpq 511980 : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } : ; : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } : | VERBOSE { $$ = VACOPT_VERBOSE; } 0.00 : 519647: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51964e: ff ff ff 0.00 : 519651: 49 21 f6 and %rsi,%r14 0.00 : 519654: 49 83 ce 04 or $0x4,%r14 : | FREEZE { $$ = VACOPT_FREEZE; } 0.00 : 519658: e9 23 83 ff ff jmpq 511980 : vacuum_option_elem { $$ = $1; } : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } : ; : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } 0.00 : 51965d: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 519664: ff ff ff 0.00 : 519667: 49 21 de and %rbx,%r14 0.00 : 51966a: 49 83 ce 02 or $0x2,%r14 : | VERBOSE { $$ = VACOPT_VERBOSE; } 0.00 : 51966e: e9 0d 83 ff ff jmpq 511980 : } : ; : : vacuum_option_list: : vacuum_option_elem { $$ = $1; } : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } 0.00 : 519673: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51967a: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 519681: ff ff ff 0.00 : 519684: 49 21 ce and %rcx,%r14 0.00 : 519687: 8b 02 mov (%rdx),%eax 0.00 : 519689: 0b 42 f0 or -0x10(%rdx),%eax 0.00 : 51968c: 49 09 c6 or %rax,%r14 : ; 0.00 : 51968f: e9 ec 82 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : vacuum_option_list: : vacuum_option_elem { $$ = $1; } 0.00 : 519694: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51969b: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5196a2: ff ff ff 0.00 : 5196a5: 49 21 f6 and %rsi,%r14 0.00 : 5196a8: 8b 03 mov (%rbx),%eax 0.00 : 5196aa: 49 09 c6 or %rax,%r14 : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } 0.00 : 5196ad: e9 ce 82 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *) n; : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5196b2: 48 8b 3d a7 11 6a 00 mov 0x6a11a7(%rip),%rdi # bba860 0.00 : 5196b9: be 28 00 00 00 mov $0x28,%esi 0.00 : 5196be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5196c5: e8 46 f7 27 00 callq 798e10 0.00 : 5196ca: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM | $3; 0.00 : 5196d0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->va_cols = NIL; : $$ = (Node *) n; : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5196d7: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM | $3; 0.00 : 5196da: 8b 46 e8 mov -0x18(%rsi),%eax 0.00 : 5196dd: 83 c8 01 or $0x1,%eax : if (n->options & VACOPT_FREEZE) 0.00 : 5196e0: a8 08 test $0x8,%al : $$ = (Node *) n; : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); : n->options = VACOPT_VACUUM | $3; 0.00 : 5196e2: 89 42 04 mov %eax,0x4(%rdx) : if (n->options & VACOPT_FREEZE) 0.00 : 5196e5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5196ec: 0f 84 68 fb 00 00 je 52925a : { : n->freeze_min_age = n->freeze_table_age = 0; 0.00 : 5196f2: c7 42 0c 00 00 00 00 movl $0x0,0xc(%rdx) 0.00 : 5196f9: c7 42 08 00 00 00 00 movl $0x0,0x8(%rdx) : n->multixact_freeze_min_age = 0; 0.00 : 519700: c7 42 10 00 00 00 00 movl $0x0,0x10(%rdx) : n->multixact_freeze_table_age = 0; 0.00 : 519707: c7 42 14 00 00 00 00 movl $0x0,0x14(%rdx) : { : n->freeze_min_age = n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : } : n->relation = $5; 0.00 : 51970e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519715: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 519719: 48 89 42 18 mov %rax,0x18(%rdx) : n->va_cols = $6; 0.00 : 51971d: 48 8b 01 mov (%rcx),%rax : if (n->va_cols != NIL) /* implies analyze */ 0.00 : 519720: 48 85 c0 test %rax,%rax : n->freeze_min_age = n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : } : n->relation = $5; : n->va_cols = $6; 0.00 : 519723: 48 89 42 20 mov %rax,0x20(%rdx) : if (n->va_cols != NIL) /* implies analyze */ 0.00 : 519727: 74 04 je 51972d : n->options |= VACOPT_ANALYZE; 0.00 : 519729: 83 4a 04 02 orl $0x2,0x4(%rdx) : $$ = (Node *) n; 0.00 : 51972d: 49 89 d6 mov %rdx,%r14 : } : ; 0.00 : 519730: e9 4b 82 ff ff jmpq 511980 : n->multixact_freeze_table_age = $3 ? 0 : -1; : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 519735: 48 8b 3d 24 11 6a 00 mov 0x6a1124(%rip),%rdi # bba860 0.00 : 51973c: be 28 00 00 00 mov $0x28,%esi 0.00 : 519741: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519748: e8 c3 f6 27 00 callq 798e10 0.00 : 51974d: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM | $3; 0.00 : 519753: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->multixact_freeze_table_age = $3 ? 0 : -1; : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 51975a: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM | $3; 0.00 : 51975d: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 519760: 83 c8 01 or $0x1,%eax : if (n->options & VACOPT_FREEZE) 0.00 : 519763: a8 08 test $0x8,%al : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' : { : VacuumStmt *n = makeNode(VacuumStmt); : n->options = VACOPT_VACUUM | $3; 0.00 : 519765: 89 42 04 mov %eax,0x4(%rdx) : if (n->options & VACOPT_FREEZE) 0.00 : 519768: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51976f: 0f 84 06 fb 00 00 je 52927b : { : n->freeze_min_age = n->freeze_table_age = 0; 0.00 : 519775: c7 42 0c 00 00 00 00 movl $0x0,0xc(%rdx) 0.00 : 51977c: c7 42 08 00 00 00 00 movl $0x0,0x8(%rdx) : n->multixact_freeze_min_age = 0; 0.00 : 519783: c7 42 10 00 00 00 00 movl $0x0,0x10(%rdx) : n->multixact_freeze_table_age = 0; 0.00 : 51978a: c7 42 14 00 00 00 00 movl $0x0,0x14(%rdx) : { : n->freeze_min_age = n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : } : n->relation = NULL; 0.00 : 519791: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 519798: 00 : n->va_cols = NIL; 0.00 : 519799: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 5197a0: 00 : $$ = (Node *) n; 0.00 : 5197a1: 49 89 d6 mov %rdx,%r14 : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list 0.00 : 5197a4: e9 d7 81 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose AnalyzeStmt : { : VacuumStmt *n = (VacuumStmt *) $5; 0.00 : 5197a9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5197b0: 48 8b 16 mov (%rsi),%rdx : n->options |= VACOPT_VACUUM; 0.00 : 5197b3: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 5197b6: 89 c8 mov %ecx,%eax 0.00 : 5197b8: 83 c8 01 or $0x1,%eax 0.00 : 5197bb: 89 42 04 mov %eax,0x4(%rdx) : if ($2) 0.00 : 5197be: 80 7e e8 00 cmpb $0x0,-0x18(%rsi) 0.00 : 5197c2: 74 06 je 5197ca : n->options |= VACOPT_FULL; 0.00 : 5197c4: 83 c9 11 or $0x11,%ecx 0.00 : 5197c7: 89 4a 04 mov %ecx,0x4(%rdx) : if ($4) 0.00 : 5197ca: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5197d1: 80 78 f8 00 cmpb $0x0,-0x8(%rax) 0.00 : 5197d5: 74 04 je 5197db : n->options |= VACOPT_VERBOSE; 0.00 : 5197d7: 83 4a 04 04 orl $0x4,0x4(%rdx) : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 5197db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : $$ = (Node *)n; 0.00 : 5197e2: 49 89 d6 mov %rdx,%r14 : n->options |= VACOPT_VACUUM; : if ($2) : n->options |= VACOPT_FULL; : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 5197e5: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 5197e9: 19 c0 sbb %eax,%eax 0.00 : 5197eb: 89 42 08 mov %eax,0x8(%rdx) : n->freeze_table_age = $3 ? 0 : -1; 0.00 : 5197ee: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 5197f2: 19 c0 sbb %eax,%eax 0.00 : 5197f4: 89 42 0c mov %eax,0xc(%rdx) : n->multixact_freeze_min_age = $3 ? 0 : -1; 0.00 : 5197f7: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 5197fb: 19 c0 sbb %eax,%eax 0.00 : 5197fd: 89 42 10 mov %eax,0x10(%rdx) : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 519800: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 519804: 19 c0 sbb %eax,%eax 0.00 : 519806: 89 42 14 mov %eax,0x14(%rdx) : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' 0.00 : 519809: e9 72 81 ff ff jmpq 511980 : * : *****************************************************************************/ : : VacuumStmt: VACUUM opt_full opt_freeze opt_verbose : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 51980e: 48 8b 3d 4b 10 6a 00 mov 0x6a104b(%rip),%rdi # bba860 0.00 : 519815: be 28 00 00 00 mov $0x28,%esi 0.00 : 51981a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519821: e8 ea f5 27 00 callq 798e10 0.00 : 519826: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM; 0.00 : 51982c: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : * : *****************************************************************************/ : : VacuumStmt: VACUUM opt_full opt_freeze opt_verbose : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 519833: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM; : if ($2) 0.00 : 519836: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51983d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519844: 80 79 f0 00 cmpb $0x0,-0x10(%rcx) 0.00 : 519848: 74 07 je 519851 : n->options |= VACOPT_FULL; 0.00 : 51984a: c7 40 04 11 00 00 00 movl $0x11,0x4(%rax) : if ($4) 0.00 : 519851: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519858: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 51985b: 74 04 je 519861 : n->options |= VACOPT_VERBOSE; 0.00 : 51985d: 83 4a 04 04 orl $0x4,0x4(%rdx) : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 519861: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : n->relation = NULL; : n->va_cols = NIL; : $$ = (Node *)n; 0.00 : 519868: 49 89 d6 mov %rdx,%r14 : n->options = VACOPT_VACUUM; : if ($2) : n->options |= VACOPT_FULL; : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 51986b: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) 0.00 : 51986f: 19 c0 sbb %eax,%eax 0.00 : 519871: 89 42 08 mov %eax,0x8(%rdx) : n->freeze_table_age = $3 ? 0 : -1; 0.00 : 519874: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) 0.00 : 519878: 19 c0 sbb %eax,%eax 0.00 : 51987a: 89 42 0c mov %eax,0xc(%rdx) : n->multixact_freeze_min_age = $3 ? 0 : -1; 0.00 : 51987d: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) 0.00 : 519881: 19 c0 sbb %eax,%eax 0.00 : 519883: 89 42 10 mov %eax,0x10(%rdx) : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 519886: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) : n->relation = NULL; 0.00 : 51988a: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 519891: 00 : n->va_cols = NIL; 0.00 : 519892: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 519899: 00 : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 51989a: 19 c0 sbb %eax,%eax 0.00 : 51989c: 89 42 14 mov %eax,0x14(%rdx) : n->relation = NULL; : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose qualified_name 0.00 : 51989f: e9 dc 80 ff ff jmpq 511980 : } : ; : : cluster_index_specification: : USING index_name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5198a4: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5198a7: e9 d4 80 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose qualified_name : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5198ac: 48 8b 3d ad 0f 6a 00 mov 0x6a0fad(%rip),%rdi # bba860 0.00 : 5198b3: be 28 00 00 00 mov $0x28,%esi 0.00 : 5198b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5198bf: e8 4c f5 27 00 callq 798e10 0.00 : 5198c4: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM; 0.00 : 5198ca: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose qualified_name : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5198d1: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM; : if ($2) 0.00 : 5198d4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5198db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5198e2: 80 78 e8 00 cmpb $0x0,-0x18(%rax) 0.00 : 5198e6: 74 07 je 5198ef : n->options |= VACOPT_FULL; 0.00 : 5198e8: c7 42 04 11 00 00 00 movl $0x11,0x4(%rdx) : if ($4) 0.00 : 5198ef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5198f6: 80 79 f8 00 cmpb $0x0,-0x8(%rcx) 0.00 : 5198fa: 74 04 je 519900 : n->options |= VACOPT_VERBOSE; 0.00 : 5198fc: 83 4a 04 04 orl $0x4,0x4(%rdx) : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 519900: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : n->relation = $5; : n->va_cols = NIL; : $$ = (Node *)n; 0.00 : 519907: 49 89 d6 mov %rdx,%r14 : n->options = VACOPT_VACUUM; : if ($2) : n->options |= VACOPT_FULL; : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 51990a: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 51990e: 19 c0 sbb %eax,%eax 0.00 : 519910: 89 42 08 mov %eax,0x8(%rdx) : n->freeze_table_age = $3 ? 0 : -1; 0.00 : 519913: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 519917: 19 c0 sbb %eax,%eax 0.00 : 519919: 89 42 0c mov %eax,0xc(%rdx) : n->multixact_freeze_min_age = $3 ? 0 : -1; 0.00 : 51991c: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 519920: 19 c0 sbb %eax,%eax 0.00 : 519922: 89 42 10 mov %eax,0x10(%rdx) : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 519925: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 519929: 19 c0 sbb %eax,%eax 0.00 : 51992b: 89 42 14 mov %eax,0x14(%rdx) : n->relation = $5; 0.00 : 51992e: 48 8b 03 mov (%rbx),%rax : n->va_cols = NIL; 0.00 : 519931: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 519938: 00 : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : n->relation = $5; 0.00 : 519939: 48 89 42 18 mov %rax,0x18(%rdx) : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose AnalyzeStmt 0.00 : 51993d: e9 3e 80 ff ff jmpq 511980 : $$ = (Node*)n; : } : ; : : cluster_index_specification: : USING index_name { $$ = $2; } 0.00 : 519942: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519949: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51994c: e9 2f 80 ff ff jmpq 511980 : $$ = (Node*)n; : } : /* kept for pre-8.3 compatibility */ : | CLUSTER opt_verbose index_name ON qualified_name : { : ClusterStmt *n = makeNode(ClusterStmt); 0.00 : 519951: 48 8b 3d 08 0f 6a 00 mov 0x6a0f08(%rip),%rdi # bba860 0.00 : 519958: be 20 00 00 00 mov $0x20,%esi 0.00 : 51995d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519964: e8 a7 f4 27 00 callq 798e10 0.00 : 519969: c7 00 ca 02 00 00 movl $0x2ca,(%rax) : n->relation = $5; 0.00 : 51996f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->indexname = $3; : n->verbose = $2; : $$ = (Node*)n; 0.00 : 519976: 49 89 c6 mov %rax,%r14 : } : /* kept for pre-8.3 compatibility */ : | CLUSTER opt_verbose index_name ON qualified_name : { : ClusterStmt *n = makeNode(ClusterStmt); : n->relation = $5; 0.00 : 519979: 48 8b 16 mov (%rsi),%rdx 0.00 : 51997c: 48 89 50 08 mov %rdx,0x8(%rax) : n->indexname = $3; 0.00 : 519980: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 519984: 48 89 50 10 mov %rdx,0x10(%rax) : n->verbose = $2; 0.00 : 519988: 0f b6 56 e8 movzbl -0x18(%rsi),%edx 0.00 : 51998c: 88 50 18 mov %dl,0x18(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51998f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519996: e9 e5 7f ff ff jmpq 511980 : n->verbose = $2; : $$ = (Node*)n; : } : | CLUSTER opt_verbose : { : ClusterStmt *n = makeNode(ClusterStmt); 0.00 : 51999b: 48 8b 3d be 0e 6a 00 mov 0x6a0ebe(%rip),%rdi # bba860 0.00 : 5199a2: be 20 00 00 00 mov $0x20,%esi 0.00 : 5199a7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5199ae: e8 5d f4 27 00 callq 798e10 0.00 : 5199b3: c7 00 ca 02 00 00 movl $0x2ca,(%rax) : n->relation = NULL; 0.00 : 5199b9: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5199c0: 00 : n->indexname = NULL; : n->verbose = $2; : $$ = (Node*)n; 0.00 : 5199c1: 49 89 c6 mov %rax,%r14 : } : | CLUSTER opt_verbose : { : ClusterStmt *n = makeNode(ClusterStmt); : n->relation = NULL; : n->indexname = NULL; 0.00 : 5199c4: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5199cb: 00 : n->verbose = $2; 0.00 : 5199cc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5199d3: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5199d6: 88 50 18 mov %dl,0x18(%rax) : $$ = (Node*)n; : } : /* kept for pre-8.3 compatibility */ 0.00 : 5199d9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5199e0: e9 9b 7f ff ff jmpq 511980 : *****************************************************************************/ : : ClusterStmt: : CLUSTER opt_verbose qualified_name cluster_index_specification : { : ClusterStmt *n = makeNode(ClusterStmt); 0.00 : 5199e5: 48 8b 3d 74 0e 6a 00 mov 0x6a0e74(%rip),%rdi # bba860 0.00 : 5199ec: be 20 00 00 00 mov $0x20,%esi 0.00 : 5199f1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5199f8: e8 13 f4 27 00 callq 798e10 0.00 : 5199fd: c7 00 ca 02 00 00 movl $0x2ca,(%rax) : n->relation = $3; 0.00 : 519a03: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->indexname = $4; : n->verbose = $2; : $$ = (Node*)n; 0.00 : 519a0a: 49 89 c6 mov %rax,%r14 : : ClusterStmt: : CLUSTER opt_verbose qualified_name cluster_index_specification : { : ClusterStmt *n = makeNode(ClusterStmt); : n->relation = $3; 0.00 : 519a0d: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 519a11: 48 89 50 08 mov %rdx,0x8(%rax) : n->indexname = $4; 0.00 : 519a15: 48 8b 11 mov (%rcx),%rdx 0.00 : 519a18: 48 89 50 10 mov %rdx,0x10(%rax) : n->verbose = $2; 0.00 : 519a1c: 0f b6 51 f0 movzbl -0x10(%rcx),%edx 0.00 : 519a20: 88 50 18 mov %dl,0x18(%rax) : $$ = (Node*)n; : } : | CLUSTER opt_verbose 0.00 : 519a23: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519a2a: e9 51 7f ff ff jmpq 511980 : : CreateConversionStmt: : CREATE opt_default CONVERSION_P any_name FOR Sconst : TO Sconst FROM any_name : { : CreateConversionStmt *n = makeNode(CreateConversionStmt); 0.00 : 519a2f: 48 8b 3d 2a 0e 6a 00 mov 0x6a0e2a(%rip),%rdi # bba860 0.00 : 519a36: be 30 00 00 00 mov $0x30,%esi 0.00 : 519a3b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519a42: e8 c9 f3 27 00 callq 798e10 0.00 : 519a47: c7 00 f6 02 00 00 movl $0x2f6,(%rax) : n->conversion_name = $4; 0.00 : 519a4d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->for_encoding_name = $6; : n->to_encoding_name = $8; : n->func_name = $10; : n->def = $2; : $$ = (Node *)n; 0.00 : 519a54: 49 89 c6 mov %rax,%r14 : CreateConversionStmt: : CREATE opt_default CONVERSION_P any_name FOR Sconst : TO Sconst FROM any_name : { : CreateConversionStmt *n = makeNode(CreateConversionStmt); : n->conversion_name = $4; 0.00 : 519a57: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 519a5b: 48 89 50 08 mov %rdx,0x8(%rax) : n->for_encoding_name = $6; 0.00 : 519a5f: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 519a63: 48 89 50 10 mov %rdx,0x10(%rax) : n->to_encoding_name = $8; 0.00 : 519a67: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 519a6b: 48 89 50 18 mov %rdx,0x18(%rax) : n->func_name = $10; 0.00 : 519a6f: 48 8b 16 mov (%rsi),%rdx 0.00 : 519a72: 48 89 50 20 mov %rdx,0x20(%rax) : n->def = $2; 0.00 : 519a76: 0f b6 56 c0 movzbl -0x40(%rsi),%edx 0.00 : 519a7a: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519a7d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519a84: e9 f7 7e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519a89: 48 8b 3d d0 0d 6a 00 mov 0x6a0dd0(%rip),%rdi # bba860 0.00 : 519a90: be 28 00 00 00 mov $0x28,%esi 0.00 : 519a95: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519a9c: e8 6f f3 27 00 callq 798e10 0.00 : 519aa1: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519aa7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->tokentype = $11; : n->missing_ok = true; : $$ = (Node*)n; 0.00 : 519aae: 49 89 c6 mov %rax,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519ab1: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 519ab5: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $11; 0.00 : 519ab9: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 519abc: c6 40 22 01 movb $0x1,0x22(%rax) : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $11; 0.00 : 519ac0: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = true; : $$ = (Node*)n; : } : ; 0.00 : 519ac4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519acb: e9 b0 7e ff ff jmpq 511980 : n->replace = true; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519ad0: 48 8b 3d 89 0d 6a 00 mov 0x6a0d89(%rip),%rdi # bba860 0.00 : 519ad7: be 28 00 00 00 mov $0x28,%esi 0.00 : 519adc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519ae3: e8 28 f3 27 00 callq 798e10 0.00 : 519ae8: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519aee: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->tokentype = $9; : n->missing_ok = false; : $$ = (Node*)n; 0.00 : 519af5: 49 89 c6 mov %rax,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519af8: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 519afc: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $9; 0.00 : 519b00: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 519b03: c6 40 22 00 movb $0x0,0x22(%rax) : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; 0.00 : 519b07: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list 0.00 : 519b0b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519b12: e9 69 7e ff ff jmpq 511980 : n->replace = true; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519b17: 48 8b 3d 42 0d 6a 00 mov 0x6a0d42(%rip),%rdi # bba860 0.00 : 519b1e: be 28 00 00 00 mov $0x28,%esi 0.00 : 519b23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519b2a: e8 e1 f2 27 00 callq 798e10 0.00 : 519b2f: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519b35: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->replace = true; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519b3c: 48 89 c3 mov %rax,%rbx : n->cfgname = $5; : n->tokentype = $9; : n->dicts = list_make2($11,$13); 0.00 : 519b3f: 31 f6 xor %esi,%esi : n->override = false; : n->replace = true; : $$ = (Node*)n; 0.00 : 519b41: 49 89 de mov %rbx,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519b44: 48 8b 41 c0 mov -0x40(%rcx),%rax 0.00 : 519b48: 48 89 43 08 mov %rax,0x8(%rbx) : n->tokentype = $9; 0.00 : 519b4c: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 519b50: 48 89 43 10 mov %rax,0x10(%rbx) : n->dicts = list_make2($11,$13); 0.00 : 519b54: 48 8b 39 mov (%rcx),%rdi 0.00 : 519b57: e8 f4 7c 0c 00 callq 5e1850 0.00 : 519b5c: 48 89 c6 mov %rax,%rsi 0.00 : 519b5f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519b66: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 519b6a: e8 e1 7c 0c 00 callq 5e1850 : n->override = false; 0.00 : 519b6f: c6 43 20 00 movb $0x0,0x20(%rbx) : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; : n->dicts = list_make2($11,$13); 0.00 : 519b73: 48 89 43 18 mov %rax,0x18(%rbx) : n->override = false; : n->replace = true; 0.00 : 519b77: c6 43 21 01 movb $0x1,0x21(%rbx) : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list 0.00 : 519b7b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519b82: e9 f9 7d ff ff jmpq 511980 : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519b87: 48 8b 3d d2 0c 6a 00 mov 0x6a0cd2(%rip),%rdi # bba860 0.00 : 519b8e: be 28 00 00 00 mov $0x28,%esi 0.00 : 519b93: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519b9a: e8 71 f2 27 00 callq 798e10 0.00 : 519b9f: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519ba5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519bac: 48 89 c3 mov %rax,%rbx : n->cfgname = $5; : n->tokentype = NIL; : n->dicts = list_make2($9,$11); : n->override = false; : n->replace = true; : $$ = (Node*)n; 0.00 : 519baf: 49 89 de mov %rbx,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519bb2: 48 8b 46 d0 mov -0x30(%rsi),%rax : n->tokentype = NIL; 0.00 : 519bb6: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 519bbd: 00 : n->dicts = list_make2($9,$11); 0.00 : 519bbe: 31 f6 xor %esi,%esi : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519bc0: 48 89 43 08 mov %rax,0x8(%rbx) : n->tokentype = NIL; : n->dicts = list_make2($9,$11); 0.00 : 519bc4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519bcb: 48 8b 38 mov (%rax),%rdi 0.00 : 519bce: e8 7d 7c 0c 00 callq 5e1850 0.00 : 519bd3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 519bda: 48 89 c6 mov %rax,%rsi 0.00 : 519bdd: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 519be1: e8 6a 7c 0c 00 callq 5e1850 : n->override = false; 0.00 : 519be6: c6 43 20 00 movb $0x0,0x20(%rbx) : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = NIL; : n->dicts = list_make2($9,$11); 0.00 : 519bea: 48 89 43 18 mov %rax,0x18(%rbx) : n->override = false; : n->replace = true; 0.00 : 519bee: c6 43 21 01 movb $0x1,0x21(%rbx) : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name 0.00 : 519bf2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519bf9: e9 82 7d ff ff jmpq 511980 : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519bfe: 48 8b 3d 5b 0c 6a 00 mov 0x6a0c5b(%rip),%rdi # bba860 0.00 : 519c05: be 28 00 00 00 mov $0x28,%esi 0.00 : 519c0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519c11: e8 fa f1 27 00 callq 798e10 0.00 : 519c16: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519c1c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->tokentype = $9; : n->dicts = $11; : n->override = true; : n->replace = false; : $$ = (Node*)n; 0.00 : 519c23: 49 89 c6 mov %rax,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519c26: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 519c2a: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $9; 0.00 : 519c2e: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519c32: 48 89 50 10 mov %rdx,0x10(%rax) : n->dicts = $11; 0.00 : 519c36: 48 8b 11 mov (%rcx),%rdx : n->override = true; 0.00 : 519c39: c6 40 20 01 movb $0x1,0x20(%rax) : n->replace = false; 0.00 : 519c3d: c6 40 21 00 movb $0x0,0x21(%rax) : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; : n->dicts = $11; 0.00 : 519c41: 48 89 50 18 mov %rdx,0x18(%rax) : n->override = true; : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name 0.00 : 519c45: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519c4c: e9 2f 7d ff ff jmpq 511980 : ; : : AlterTSConfigurationStmt: : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519c51: 48 8b 3d 08 0c 6a 00 mov 0x6a0c08(%rip),%rdi # bba860 0.00 : 519c58: be 28 00 00 00 mov $0x28,%esi 0.00 : 519c5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519c64: e8 a7 f1 27 00 callq 798e10 0.00 : 519c69: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519c6f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->tokentype = $9; : n->dicts = $11; : n->override = false; : n->replace = false; : $$ = (Node*)n; 0.00 : 519c76: 49 89 c6 mov %rax,%r14 : : AlterTSConfigurationStmt: : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519c79: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 519c7d: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $9; 0.00 : 519c81: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 519c85: 48 89 50 10 mov %rdx,0x10(%rax) : n->dicts = $11; 0.00 : 519c89: 48 8b 16 mov (%rsi),%rdx : n->override = false; 0.00 : 519c8c: c6 40 20 00 movb $0x0,0x20(%rax) : n->replace = false; 0.00 : 519c90: c6 40 21 00 movb $0x0,0x21(%rax) : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; : n->dicts = $11; 0.00 : 519c94: 48 89 50 18 mov %rdx,0x18(%rax) : n->override = false; : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list 0.00 : 519c98: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519c9f: e9 dc 7c ff ff jmpq 511980 : *****************************************************************************/ : : AlterTSDictionaryStmt: : ALTER TEXT_P SEARCH DICTIONARY any_name definition : { : AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); 0.00 : 519ca4: 48 8b 3d b5 0b 6a 00 mov 0x6a0bb5(%rip),%rdi # bba860 0.00 : 519cab: be 18 00 00 00 mov $0x18,%esi 0.00 : 519cb0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519cb7: e8 54 f1 27 00 callq 798e10 0.00 : 519cbc: c7 00 09 03 00 00 movl $0x309,(%rax) : n->dictname = $5; 0.00 : 519cc2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $6; : $$ = (Node *)n; 0.00 : 519cc9: 49 89 c6 mov %rax,%r14 : : AlterTSDictionaryStmt: : ALTER TEXT_P SEARCH DICTIONARY any_name definition : { : AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); : n->dictname = $5; 0.00 : 519ccc: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519cd0: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $6; 0.00 : 519cd4: 48 8b 13 mov (%rbx),%rdx 0.00 : 519cd7: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519cdb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519ce2: e9 99 7c ff ff jmpq 511980 : Iconst: ICONST { $$ = $1; }; : Sconst: SCONST { $$ = $1; }; : RoleId: NonReservedWord { $$ = $1; }; : : role_list: RoleId : { $$ = list_make1(makeString($1)); } 0.00 : 519ce7: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519cee: 48 8b 38 mov (%rax),%rdi 0.00 : 519cf1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519cf8: e8 f3 59 0e 00 callq 5ff6f0 0.00 : 519cfd: 31 f6 xor %esi,%esi 0.00 : 519cff: 48 89 c7 mov %rax,%rdi 0.00 : 519d02: e8 49 7b 0c 00 callq 5e1850 : | role_list ',' RoleId 0.00 : 519d07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : Iconst: ICONST { $$ = $1; }; : Sconst: SCONST { $$ = $1; }; : RoleId: NonReservedWord { $$ = $1; }; : : role_list: RoleId : { $$ = list_make1(makeString($1)); } 0.00 : 519d0e: 49 89 c6 mov %rax,%r14 : | role_list ',' RoleId 0.00 : 519d11: e9 6a 7c ff ff jmpq 511980 : { $$ = lappend($1, makeString($3)); } 0.00 : 519d16: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 519d1d: 48 8b 3a mov (%rdx),%rdi 0.00 : 519d20: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519d27: e8 c4 59 0e 00 callq 5ff6f0 0.00 : 519d2c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519d33: 48 89 c6 mov %rax,%rsi 0.00 : 519d36: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 519d3a: e8 41 81 0c 00 callq 5e1e80 : ; 0.00 : 519d3f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : RoleId: NonReservedWord { $$ = $1; }; : : role_list: RoleId : { $$ = list_make1(makeString($1)); } : | role_list ',' RoleId : { $$ = lappend($1, makeString($3)); } 0.00 : 519d46: 49 89 c6 mov %rax,%r14 : ; 0.00 : 519d49: e9 32 7c ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN VALIDATE CONSTRAINT */ : | ALTER DOMAIN_P any_name VALIDATE CONSTRAINT name : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519d4e: 48 8b 3d 0b 0b 6a 00 mov 0x6a0b0b(%rip),%rdi # bba860 0.00 : 519d55: be 28 00 00 00 mov $0x28,%esi 0.00 : 519d5a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519d61: e8 aa f0 27 00 callq 798e10 0.00 : 519d66: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'V'; 0.00 : 519d6c: c6 40 04 56 movb $0x56,0x4(%rax) : n->typeName = $3; : n->name = $6; : $$ = (Node *)n; 0.00 : 519d70: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN VALIDATE CONSTRAINT */ : | ALTER DOMAIN_P any_name VALIDATE CONSTRAINT name : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'V'; : n->typeName = $3; 0.00 : 519d73: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519d7a: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 519d7e: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = $6; 0.00 : 519d82: 48 8b 11 mov (%rcx),%rdx 0.00 : 519d85: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519d89: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519d90: e9 eb 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519d95: 48 8b 3d c4 0a 6a 00 mov 0x6a0ac4(%rip),%rdi # bba860 0.00 : 519d9c: be 28 00 00 00 mov $0x28,%esi 0.00 : 519da1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519da8: e8 63 f0 27 00 callq 798e10 0.00 : 519dad: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'X'; 0.00 : 519db3: c6 40 04 58 movb $0x58,0x4(%rax) : n->typeName = $3; : n->name = $8; : n->behavior = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 519db7: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; 0.00 : 519dba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519dc1: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 519dc5: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = $8; 0.00 : 519dc9: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 519dcd: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $9; 0.00 : 519dd1: 8b 16 mov (%rsi),%edx : n->missing_ok = true; 0.00 : 519dd3: c6 40 24 01 movb $0x1,0x24(%rax) : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; : n->name = $8; : n->behavior = $9; 0.00 : 519dd7: 89 50 20 mov %edx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : /* ALTER DOMAIN VALIDATE CONSTRAINT */ 0.00 : 519dda: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519de1: e9 9a 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519de6: 48 8b 3d 73 0a 6a 00 mov 0x6a0a73(%rip),%rdi # bba860 0.00 : 519ded: be 28 00 00 00 mov $0x28,%esi 0.00 : 519df2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519df9: e8 12 f0 27 00 callq 798e10 0.00 : 519dfe: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'X'; 0.00 : 519e04: c6 40 04 58 movb $0x58,0x4(%rax) : n->typeName = $3; : n->name = $6; : n->behavior = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 519e08: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN DROP CONSTRAINT [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; 0.00 : 519e0b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519e12: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 519e16: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = $6; 0.00 : 519e1a: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519e1e: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $7; 0.00 : 519e22: 8b 13 mov (%rbx),%edx : n->missing_ok = false; 0.00 : 519e24: c6 40 24 00 movb $0x0,0x24(%rax) : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; : n->name = $6; : n->behavior = $7; 0.00 : 519e28: 89 50 20 mov %edx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 519e2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519e32: e9 49 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN ADD CONSTRAINT ... */ : | ALTER DOMAIN_P any_name ADD_P TableConstraint : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519e37: 48 8b 3d 22 0a 6a 00 mov 0x6a0a22(%rip),%rdi # bba860 0.00 : 519e3e: be 28 00 00 00 mov $0x28,%esi 0.00 : 519e43: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519e4a: e8 c1 ef 27 00 callq 798e10 0.00 : 519e4f: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'C'; 0.00 : 519e55: c6 40 04 43 movb $0x43,0x4(%rax) : n->typeName = $3; : n->def = $5; : $$ = (Node *)n; 0.00 : 519e59: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN ADD CONSTRAINT ... */ : | ALTER DOMAIN_P any_name ADD_P TableConstraint : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'C'; : n->typeName = $3; 0.00 : 519e5c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519e63: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519e67: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = $5; 0.00 : 519e6b: 48 8b 11 mov (%rcx),%rdx 0.00 : 519e6e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT [RESTRICT|CASCADE] */ 0.00 : 519e72: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519e79: e9 02 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN SET NOT NULL */ : | ALTER DOMAIN_P any_name SET NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519e7e: 48 8b 3d db 09 6a 00 mov 0x6a09db(%rip),%rdi # bba860 0.00 : 519e85: be 28 00 00 00 mov $0x28,%esi 0.00 : 519e8a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519e91: e8 7a ef 27 00 callq 798e10 0.00 : 519e96: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'O'; 0.00 : 519e9c: c6 40 04 4f movb $0x4f,0x4(%rax) : n->typeName = $3; : $$ = (Node *)n; 0.00 : 519ea0: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN SET NOT NULL */ : | ALTER DOMAIN_P any_name SET NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'O'; : n->typeName = $3; 0.00 : 519ea3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519eaa: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 519eae: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN ADD CONSTRAINT ... */ 0.00 : 519eb2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519eb9: e9 c2 7a ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP NOT NULL */ : | ALTER DOMAIN_P any_name DROP NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519ebe: 48 8b 3d 9b 09 6a 00 mov 0x6a099b(%rip),%rdi # bba860 0.00 : 519ec5: be 28 00 00 00 mov $0x28,%esi 0.00 : 519eca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519ed1: e8 3a ef 27 00 callq 798e10 0.00 : 519ed6: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'N'; 0.00 : 519edc: c6 40 04 4e movb $0x4e,0x4(%rax) : n->typeName = $3; : $$ = (Node *)n; 0.00 : 519ee0: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN DROP NOT NULL */ : | ALTER DOMAIN_P any_name DROP NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'N'; : n->typeName = $3; 0.00 : 519ee3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519eea: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 519eee: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN SET NOT NULL */ 0.00 : 519ef2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519ef9: e9 82 7a ff ff jmpq 511980 : : AlterDomainStmt: : /* ALTER DOMAIN {SET DEFAULT |DROP DEFAULT} */ : ALTER DOMAIN_P any_name alter_column_default : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519efe: 48 8b 3d 5b 09 6a 00 mov 0x6a095b(%rip),%rdi # bba860 0.00 : 519f05: be 28 00 00 00 mov $0x28,%esi 0.00 : 519f0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519f11: e8 fa ee 27 00 callq 798e10 0.00 : 519f16: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'T'; 0.00 : 519f1c: c6 40 04 54 movb $0x54,0x4(%rax) : n->typeName = $3; : n->def = $4; : $$ = (Node *)n; 0.00 : 519f20: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN {SET DEFAULT |DROP DEFAULT} */ : ALTER DOMAIN_P any_name alter_column_default : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'T'; : n->typeName = $3; 0.00 : 519f23: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519f2a: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 519f2e: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = $4; 0.00 : 519f32: 48 8b 11 mov (%rcx),%rdx 0.00 : 519f35: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP NOT NULL */ 0.00 : 519f39: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519f40: e9 3b 7a ff ff jmpq 511980 : *****************************************************************************/ : : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); 0.00 : 519f45: 48 8b 3d 14 09 6a 00 mov 0x6a0914(%rip),%rdi # bba860 0.00 : 519f4c: be 28 00 00 00 mov $0x28,%esi 0.00 : 519f51: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519f58: e8 b3 ee 27 00 callq 798e10 0.00 : 519f5d: c7 00 de 02 00 00 movl $0x2de,(%rax) : n->domainname = $3; 0.00 : 519f63: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : *****************************************************************************/ : : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); 0.00 : 519f6a: 48 89 c3 mov %rax,%rbx : n->domainname = $3; : n->typeName = $5; : SplitColQualList($6, &n->constraints, &n->collClause, 0.00 : 519f6d: 48 8d 53 18 lea 0x18(%rbx),%rdx : yyscanner); : $$ = (Node *)n; 0.00 : 519f71: 49 89 de mov %rbx,%r14 : : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); : n->domainname = $3; 0.00 : 519f74: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 519f78: 48 89 43 08 mov %rax,0x8(%rbx) : n->typeName = $5; 0.00 : 519f7c: 48 8b 46 f8 mov -0x8(%rsi),%rax : SplitColQualList($6, &n->constraints, &n->collClause, 0.00 : 519f80: 48 8d 73 20 lea 0x20(%rbx),%rsi : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); : n->domainname = $3; : n->typeName = $5; 0.00 : 519f84: 48 89 43 10 mov %rax,0x10(%rbx) : SplitColQualList($6, &n->constraints, &n->collClause, 0.00 : 519f88: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519f8f: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 519f96: 48 8b 38 mov (%rax),%rdi 0.00 : 519f99: e8 f2 71 ff ff callq 511190 : yyscanner); : $$ = (Node *)n; : } : ; 0.00 : 519f9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519fa5: e9 d6 79 ff ff jmpq 511980 : n->setstmt = $4; : $$ = (Node *)n; : } : | ALTER SYSTEM_P RESET generic_reset : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); 0.00 : 519faa: 48 8b 3d af 08 6a 00 mov 0x6a08af(%rip),%rdi # bba860 0.00 : 519fb1: be 10 00 00 00 mov $0x10,%esi 0.00 : 519fb6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519fbd: e8 4e ee 27 00 callq 798e10 0.00 : 519fc2: c7 00 1e 03 00 00 movl $0x31e,(%rax) : n->setstmt = $4; 0.00 : 519fc8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = (Node *)n; 0.00 : 519fcf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SYSTEM_P RESET generic_reset : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); : n->setstmt = $4; 0.00 : 519fd2: 48 8b 13 mov (%rbx),%rdx 0.00 : 519fd5: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519fd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519fe0: e9 9b 79 ff ff jmpq 511980 : *****************************************************************************/ : : AlterSystemStmt: : ALTER SYSTEM_P SET generic_set : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); 0.00 : 519fe5: 48 8b 3d 74 08 6a 00 mov 0x6a0874(%rip),%rdi # bba860 0.00 : 519fec: be 10 00 00 00 mov $0x10,%esi 0.00 : 519ff1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519ff8: e8 13 ee 27 00 callq 798e10 0.00 : 519ffd: c7 00 1e 03 00 00 movl $0x31e,(%rax) : n->setstmt = $4; 0.00 : 51a003: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51a00a: 49 89 c6 mov %rax,%r14 : : AlterSystemStmt: : ALTER SYSTEM_P SET generic_set : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); : n->setstmt = $4; 0.00 : 51a00d: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a010: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | ALTER SYSTEM_P RESET generic_reset 0.00 : 51a014: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a01b: e9 60 79 ff ff jmpq 511980 : n->missing_ok = FALSE; : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name : { : DropdbStmt *n = makeNode(DropdbStmt); 0.00 : 51a020: 48 8b 3d 39 08 6a 00 mov 0x6a0839(%rip),%rdi # bba860 0.00 : 51a027: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a02c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a033: e8 d8 ed 27 00 callq 798e10 0.00 : 51a038: c7 00 e0 02 00 00 movl $0x2e0,(%rax) : n->dbname = $5; 0.00 : 51a03e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 51a045: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $5; 0.00 : 51a048: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = TRUE; 0.00 : 51a04b: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $5; 0.00 : 51a04f: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : ; 0.00 : 51a053: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a05a: e9 21 79 ff ff jmpq 511980 : * This is implicitly CASCADE, no need for drop behavior : *****************************************************************************/ : : DropdbStmt: DROP DATABASE database_name : { : DropdbStmt *n = makeNode(DropdbStmt); 0.00 : 51a05f: 48 8b 3d fa 07 6a 00 mov 0x6a07fa(%rip),%rdi # bba860 0.00 : 51a066: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a06b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a072: e8 99 ed 27 00 callq 798e10 0.00 : 51a077: c7 00 e0 02 00 00 movl $0x2e0,(%rax) : n->dbname = $3; 0.00 : 51a07d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 51a084: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DropdbStmt: DROP DATABASE database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $3; 0.00 : 51a087: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = FALSE; 0.00 : 51a08a: c6 40 10 00 movb $0x0,0x10(%rax) : *****************************************************************************/ : : DropdbStmt: DROP DATABASE database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $3; 0.00 : 51a08e: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name 0.00 : 51a092: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a099: e9 e2 78 ff ff jmpq 511980 : ; : : AlterDatabaseSetStmt: : ALTER DATABASE database_name SetResetClause : { : AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); 0.00 : 51a09e: 48 8b 3d bb 07 6a 00 mov 0x6a07bb(%rip),%rdi # bba860 0.00 : 51a0a5: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a0aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a0b1: e8 5a ed 27 00 callq 798e10 0.00 : 51a0b6: c7 00 f4 02 00 00 movl $0x2f4,(%rax) : n->dbname = $3; 0.00 : 51a0bc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->setstmt = $4; : $$ = (Node *)n; 0.00 : 51a0c3: 49 89 c6 mov %rax,%r14 : : AlterDatabaseSetStmt: : ALTER DATABASE database_name SetResetClause : { : AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); : n->dbname = $3; 0.00 : 51a0c6: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51a0ca: 48 89 50 08 mov %rdx,0x8(%rax) : n->setstmt = $4; 0.00 : 51a0ce: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a0d1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a0d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a0dc: e9 9f 78 ff ff jmpq 511980 : n->options = $4; : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a0e1: 48 8b 3d 78 07 6a 00 mov 0x6a0778(%rip),%rdi # bba860 0.00 : 51a0e8: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a0ed: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a0f4: e8 17 ed 27 00 callq 798e10 0.00 : 51a0f9: c7 00 f3 02 00 00 movl $0x2f3,(%rax) : n->dbname = $3; 0.00 : 51a0ff: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->options = $4; : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a106: 48 89 c3 mov %rax,%rbx : n->dbname = $3; : n->options = list_make1(makeDefElem("tablespace", : (Node *)makeString($6))); : $$ = (Node *)n; 0.00 : 51a109: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); : n->dbname = $3; 0.00 : 51a10c: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 51a110: 48 89 43 08 mov %rax,0x8(%rbx) : n->options = list_make1(makeDefElem("tablespace", 0.00 : 51a114: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a117: e8 d4 55 0e 00 callq 5ff6f0 0.00 : 51a11c: bf f0 b0 8d 00 mov $0x8db0f0,%edi 0.00 : 51a121: 48 89 c6 mov %rax,%rsi 0.00 : 51a124: e8 d7 73 0d 00 callq 5f1500 0.00 : 51a129: 31 f6 xor %esi,%esi 0.00 : 51a12b: 48 89 c7 mov %rax,%rdi 0.00 : 51a12e: e8 1d 77 0c 00 callq 5e1850 0.00 : 51a133: 48 89 43 10 mov %rax,0x10(%rbx) : (Node *)makeString($6))); : $$ = (Node *)n; : } : ; 0.00 : 51a137: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a13e: e9 3d 78 ff ff jmpq 511980 : n->options = $5; : $$ = (Node *)n; : } : | ALTER DATABASE database_name createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a143: 48 8b 3d 16 07 6a 00 mov 0x6a0716(%rip),%rdi # bba860 0.00 : 51a14a: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a14f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a156: e8 b5 ec 27 00 callq 798e10 0.00 : 51a15b: c7 00 f3 02 00 00 movl $0x2f3,(%rax) : n->dbname = $3; 0.00 : 51a161: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = $4; : $$ = (Node *)n; 0.00 : 51a168: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER DATABASE database_name createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); : n->dbname = $3; 0.00 : 51a16b: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51a16f: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $4; 0.00 : 51a173: 48 8b 16 mov (%rsi),%rdx 0.00 : 51a176: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name 0.00 : 51a17a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a181: e9 fa 77 ff ff jmpq 511980 : *****************************************************************************/ : : AlterDatabaseStmt: : ALTER DATABASE database_name WITH createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a186: 48 8b 3d d3 06 6a 00 mov 0x6a06d3(%rip),%rdi # bba860 0.00 : 51a18d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a192: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a199: e8 72 ec 27 00 callq 798e10 0.00 : 51a19e: c7 00 f3 02 00 00 movl $0x2f3,(%rax) : n->dbname = $3; 0.00 : 51a1a4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $5; : $$ = (Node *)n; 0.00 : 51a1ab: 49 89 c6 mov %rax,%r14 : : AlterDatabaseStmt: : ALTER DATABASE database_name WITH createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); : n->dbname = $3; 0.00 : 51a1ae: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51a1b2: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51a1b6: 48 8b 13 mov (%rbx),%rdx 0.00 : 51a1b9: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | ALTER DATABASE database_name createdb_opt_list 0.00 : 51a1bd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a1c4: e9 b7 77 ff ff jmpq 511980 : { $$ = list_make1(makeString($1)); } : | role_list ',' RoleId : { $$ = lappend($1, makeString($3)); } : ; : : SignedIconst: Iconst { $$ = $1; } 0.00 : 51a1c9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a1d0: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51a1d7: ff ff ff 0.00 : 51a1da: 49 21 f6 and %rsi,%r14 0.00 : 51a1dd: 8b 03 mov (%rbx),%eax 0.00 : 51a1df: 49 09 c6 or %rax,%r14 : | '+' Iconst { $$ = + $2; } 0.00 : 51a1e2: e9 99 77 ff ff jmpq 511980 0.00 : 51a1e7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a1ee: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51a1f5: ff ff ff 0.00 : 51a1f8: 49 21 ce and %rcx,%r14 0.00 : 51a1fb: 8b 02 mov (%rdx),%eax 0.00 : 51a1fd: 49 09 c6 or %rax,%r14 : | '-' Iconst { $$ = - $2; } 0.00 : 51a200: e9 7b 77 ff ff jmpq 511980 : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a205: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a20c: 48 8b 39 mov (%rcx),%rdi 0.00 : 51a20f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a216: e8 35 ed 27 00 callq 798f50 : ; 0.00 : 51a21b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a222: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51a225: e9 56 77 ff ff jmpq 511980 : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a22a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a231: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a234: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a23b: e8 10 ed 27 00 callq 798f50 : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a240: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a247: 49 89 c6 mov %rax,%r14 : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a24a: e9 31 77 ff ff jmpq 511980 : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } 0.00 : 51a24f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a256: 48 8b 38 mov (%rax),%rdi 0.00 : 51a259: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a260: e8 eb ec 27 00 callq 798f50 : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a265: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } 0.00 : 51a26c: 49 89 c6 mov %rax,%r14 : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a26f: e9 0c 77 ff ff jmpq 511980 : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a274: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a27b: 48 8b 3e mov (%rsi),%rdi 0.00 : 51a27e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a285: e8 c6 ec 27 00 callq 798f50 : | OWNER { $$ = pstrdup($1); } 0.00 : 51a28a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a291: 49 89 c6 mov %rax,%r14 : | OWNER { $$ = pstrdup($1); } 0.00 : 51a294: e9 e7 76 ff ff jmpq 511980 : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a299: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a2a0: 48 8b 3b mov (%rbx),%rdi 0.00 : 51a2a3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a2aa: e8 a1 ec 27 00 callq 798f50 : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a2af: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a2b6: 49 89 c6 mov %rax,%r14 : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a2b9: e9 c2 76 ff ff jmpq 511980 : * option will silently break. Best defense is to provide a regression test : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } 0.00 : 51a2be: bf ea 96 7c 00 mov $0x7c96ea,%edi 0.00 : 51a2c3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a2ca: e8 81 ec 27 00 callq 798f50 : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a2cf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * option will silently break. Best defense is to provide a regression test : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } 0.00 : 51a2d6: 49 89 c6 mov %rax,%r14 : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a2d9: e9 a2 76 ff ff jmpq 511980 : * non-keyword option name into a keyword and forgets to add it here, the : * option will silently break. Best defense is to provide a regression test : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } 0.00 : 51a2de: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a2e5: 4c 8b 31 mov (%rcx),%r14 : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } 0.00 : 51a2e8: e9 93 76 ff ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *)makeString($3)); : } : | createdb_opt_name opt_equal DEFAULT : { : $$ = makeDefElem($1, NULL); 0.00 : 51a2ed: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a2f4: 31 f6 xor %esi,%esi 0.00 : 51a2f6: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51a2fa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a301: e8 fa 71 0d 00 callq 5f1500 : } : ; 0.00 : 51a306: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *)makeString($3)); : } : | createdb_opt_name opt_equal DEFAULT : { : $$ = makeDefElem($1, NULL); 0.00 : 51a30d: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51a310: e9 6b 76 ff ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); : } : | createdb_opt_name opt_equal opt_boolean_or_string : { : $$ = makeDefElem($1, (Node *)makeString($3)); 0.00 : 51a315: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a31c: 48 8b 3e mov (%rsi),%rdi 0.00 : 51a31f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a326: e8 c5 53 0e 00 callq 5ff6f0 0.00 : 51a32b: 48 89 c6 mov %rax,%rsi 0.00 : 51a32e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a335: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51a339: e8 c2 71 0d 00 callq 5f1500 : } : | createdb_opt_name opt_equal DEFAULT 0.00 : 51a33e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); : } : | createdb_opt_name opt_equal opt_boolean_or_string : { : $$ = makeDefElem($1, (Node *)makeString($3)); 0.00 : 51a345: 49 89 c6 mov %rax,%r14 : } : | createdb_opt_name opt_equal DEFAULT 0.00 : 51a348: e9 33 76 ff ff jmpq 511980 : ; : : createdb_opt_item: : createdb_opt_name opt_equal SignedIconst : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); 0.00 : 51a34d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a354: 48 63 39 movslq (%rcx),%rdi 0.00 : 51a357: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a35e: e8 ed 53 0e 00 callq 5ff750 0.00 : 51a363: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a36a: 48 89 c6 mov %rax,%rsi 0.00 : 51a36d: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51a371: e8 8a 71 0d 00 callq 5f1500 : } : | createdb_opt_name opt_equal opt_boolean_or_string 0.00 : 51a376: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : createdb_opt_item: : createdb_opt_name opt_equal SignedIconst : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); 0.00 : 51a37d: 49 89 c6 mov %rax,%r14 : } : | createdb_opt_name opt_equal opt_boolean_or_string 0.00 : 51a380: e9 fb 75 ff ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a385: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a38c: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51a390: 48 8b 32 mov (%rdx),%rsi 0.00 : 51a393: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a39a: e8 e1 7a 0c 00 callq 5e1e80 : ; 0.00 : 51a39f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a3a6: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51a3a9: e9 d2 75 ff ff jmpq 511980 : createdb_opt_items { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } 0.00 : 51a3ae: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a3b5: 31 f6 xor %esi,%esi 0.00 : 51a3b7: 48 8b 38 mov (%rax),%rdi 0.00 : 51a3ba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a3c1: e8 8a 74 0c 00 callq 5e1850 : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a3c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : createdb_opt_items { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } 0.00 : 51a3cd: 49 89 c6 mov %rax,%r14 : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a3d0: e9 ab 75 ff ff jmpq 511980 : } : ; : : createdb_opt_list: : createdb_opt_items { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51a3d5: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51a3d8: e9 a3 75 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : createdb_opt_list: : createdb_opt_items { $$ = $1; } 0.00 : 51a3dd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a3e4: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51a3e7: e9 94 75 ff ff jmpq 511980 : *****************************************************************************/ : : CreatedbStmt: : CREATE DATABASE database_name opt_with createdb_opt_list : { : CreatedbStmt *n = makeNode(CreatedbStmt); 0.00 : 51a3ec: 48 8b 3d 6d 04 6a 00 mov 0x6a046d(%rip),%rdi # bba860 0.00 : 51a3f3: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a3f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a3ff: e8 0c ea 27 00 callq 798e10 0.00 : 51a404: c7 00 df 02 00 00 movl $0x2df,(%rax) : n->dbname = $3; 0.00 : 51a40a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $5; : $$ = (Node *)n; 0.00 : 51a411: 49 89 c6 mov %rax,%r14 : : CreatedbStmt: : CREATE DATABASE database_name opt_with createdb_opt_list : { : CreatedbStmt *n = makeNode(CreatedbStmt); : n->dbname = $3; 0.00 : 51a414: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51a418: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51a41c: 48 8b 13 mov (%rbx),%rdx 0.00 : 51a41f: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a423: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a42a: e9 51 75 ff ff jmpq 511980 : * : *****************************************************************************/ : : LoadStmt: LOAD file_name : { : LoadStmt *n = makeNode(LoadStmt); 0.00 : 51a42f: 48 8b 3d 2a 04 6a 00 mov 0x6a042a(%rip),%rdi # bba860 0.00 : 51a436: be 10 00 00 00 mov $0x10,%esi 0.00 : 51a43b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a442: e8 c9 e9 27 00 callq 798e10 0.00 : 51a447: c7 00 dd 02 00 00 movl $0x2dd,(%rax) : n->filename = $2; 0.00 : 51a44d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51a454: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : LoadStmt: LOAD file_name : { : LoadStmt *n = makeNode(LoadStmt); : n->filename = $2; 0.00 : 51a457: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a45a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a45e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a465: e9 16 75 ff ff jmpq 511980 : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH LOCAL CHECK OPTION { $$ = LOCAL_CHECK_OPTION; } : | /* EMPTY */ { $$ = NO_CHECK_OPTION; } 0.00 : 51a46a: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51a471: ff ff ff 0.00 : 51a474: 49 21 f6 and %rsi,%r14 : ; 0.00 : 51a477: e9 04 75 ff ff jmpq 511980 : ; : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH LOCAL CHECK OPTION { $$ = LOCAL_CHECK_OPTION; } 0.00 : 51a47c: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51a483: ff ff ff 0.00 : 51a486: 49 21 de and %rbx,%r14 0.00 : 51a489: 49 83 ce 01 or $0x1,%r14 : | /* EMPTY */ { $$ = NO_CHECK_OPTION; } 0.00 : 51a48d: e9 ee 74 ff ff jmpq 511980 : } : ; : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } 0.00 : 51a492: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51a499: ff ff ff 0.00 : 51a49c: 49 21 ce and %rcx,%r14 0.00 : 51a49f: 49 83 ce 02 or $0x2,%r14 : | WITH LOCAL CHECK OPTION { $$ = LOCAL_CHECK_OPTION; } 0.00 : 51a4a3: e9 d8 74 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } 0.00 : 51a4a8: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51a4af: ff ff ff 0.00 : 51a4b2: 49 21 d6 and %rdx,%r14 0.00 : 51a4b5: 49 83 ce 02 or $0x2,%r14 : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } 0.00 : 51a4b9: e9 c2 74 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a4be: 48 8b 3d 9b 03 6a 00 mov 0x6a039b(%rip),%rdi # bba860 0.00 : 51a4c5: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a4ca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a4d1: e8 3a e9 27 00 callq 798e10 0.00 : 51a4d6: c7 00 dc 02 00 00 movl $0x2dc,(%rax) : n->view = $7; 0.00 : 51a4dc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a4e3: 48 89 c3 mov %rax,%rbx : n->view = $7; 0.00 : 51a4e6: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 51a4ea: 48 89 50 08 mov %rdx,0x8(%rax) : n->view->relpersistence = $4; 0.00 : 51a4ee: 8b 41 b0 mov -0x50(%rcx),%eax 0.00 : 51a4f1: 88 42 24 mov %al,0x24(%rdx) : n->aliases = $9; 0.00 : 51a4f4: 48 8b 71 d8 mov -0x28(%rcx),%rsi : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); 0.00 : 51a4f8: 48 8b 43 08 mov 0x8(%rbx),%rax : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $7; : n->view->relpersistence = $4; : n->aliases = $9; 0.00 : 51a4fc: 48 89 73 10 mov %rsi,0x10(%rbx) : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); 0.00 : 51a500: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51a504: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 51a508: e8 43 70 ff ff callq 511550 : n->replace = true; 0.00 : 51a50d: c6 43 20 01 movb $0x1,0x20(%rbx) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $7; : n->view->relpersistence = $4; : n->aliases = $9; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); 0.00 : 51a511: 48 89 43 18 mov %rax,0x18(%rbx) : n->replace = true; : n->options = $11; 0.00 : 51a515: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a51c: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51a520: 48 89 43 28 mov %rax,0x28(%rbx) : n->withCheckOption = $14; 0.00 : 51a524: 8b 06 mov (%rsi),%eax : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a526: 85 c0 test %eax,%eax : n->view->relpersistence = $4; : n->aliases = $9; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); : n->replace = true; : n->options = $11; : n->withCheckOption = $14; 0.00 : 51a528: 89 43 30 mov %eax,0x30(%rbx) : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a52b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a532: 0f 85 e1 fa 00 00 jne 52a019 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("WITH CHECK OPTION not supported on recursive views"), : parser_errposition(@14))); : $$ = (Node *) n; 0.00 : 51a538: 49 89 de mov %rbx,%r14 : } : ; 0.00 : 51a53b: e9 40 74 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a540: 48 8b 3d 19 03 6a 00 mov 0x6a0319(%rip),%rdi # bba860 0.00 : 51a547: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a54c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a553: e8 b8 e8 27 00 callq 798e10 0.00 : 51a558: c7 00 dc 02 00 00 movl $0x2dc,(%rax) 0.00 : 51a55e: 48 89 c3 mov %rax,%rbx : n->view = $5; 0.00 : 51a561: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a568: 48 8b 50 c8 mov -0x38(%rax),%rdx 0.00 : 51a56c: 48 89 53 08 mov %rdx,0x8(%rbx) : n->view->relpersistence = $2; 0.00 : 51a570: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a577: 8b 41 b0 mov -0x50(%rcx),%eax 0.00 : 51a57a: 88 42 24 mov %al,0x24(%rdx) : n->aliases = $7; 0.00 : 51a57d: 48 8b 71 d8 mov -0x28(%rcx),%rsi : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); 0.00 : 51a581: 48 8b 43 08 mov 0x8(%rbx),%rax : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $5; : n->view->relpersistence = $2; : n->aliases = $7; 0.00 : 51a585: 48 89 73 10 mov %rsi,0x10(%rbx) : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); 0.00 : 51a589: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51a58d: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 51a591: e8 ba 6f ff ff callq 511550 : n->replace = false; 0.00 : 51a596: c6 43 20 00 movb $0x0,0x20(%rbx) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $5; : n->view->relpersistence = $2; : n->aliases = $7; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); 0.00 : 51a59a: 48 89 43 18 mov %rax,0x18(%rbx) : n->replace = false; : n->options = $9; 0.00 : 51a59e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a5a5: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51a5a9: 48 89 43 28 mov %rax,0x28(%rbx) : n->withCheckOption = $12; 0.00 : 51a5ad: 8b 06 mov (%rsi),%eax : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a5af: 85 c0 test %eax,%eax : n->view->relpersistence = $2; : n->aliases = $7; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); : n->replace = false; : n->options = $9; : n->withCheckOption = $12; 0.00 : 51a5b1: 89 43 30 mov %eax,0x30(%rbx) : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a5b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a5bb: 0f 85 d5 fe 00 00 jne 52a496 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("WITH CHECK OPTION not supported on recursive views"), : parser_errposition(@12))); : $$ = (Node *) n; 0.00 : 51a5c1: 49 89 de mov %rbx,%r14 : } : | CREATE OR REPLACE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions 0.00 : 51a5c4: e9 b7 73 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a5c9: 48 8b 3d 90 02 6a 00 mov 0x6a0290(%rip),%rdi # bba860 0.00 : 51a5d0: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a5d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a5dc: e8 2f e8 27 00 callq 798e10 0.00 : 51a5e1: c7 00 dc 02 00 00 movl $0x2dc,(%rax) : n->view = $6; 0.00 : 51a5e7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->aliases = $7; : n->query = $10; : n->replace = true; : n->options = $8; : n->withCheckOption = $11; : $$ = (Node *) n; 0.00 : 51a5ee: 49 89 c6 mov %rax,%r14 : } : | CREATE OR REPLACE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $6; 0.00 : 51a5f1: 48 8b 4e d8 mov -0x28(%rsi),%rcx 0.00 : 51a5f5: 48 89 48 08 mov %rcx,0x8(%rax) : n->view->relpersistence = $4; 0.00 : 51a5f9: 8b 56 c8 mov -0x38(%rsi),%edx 0.00 : 51a5fc: 88 51 24 mov %dl,0x24(%rcx) : n->aliases = $7; 0.00 : 51a5ff: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 51a603: 48 89 50 10 mov %rdx,0x10(%rax) : n->query = $10; 0.00 : 51a607: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->replace = true; 0.00 : 51a60b: c6 40 20 01 movb $0x1,0x20(%rax) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $6; : n->view->relpersistence = $4; : n->aliases = $7; : n->query = $10; 0.00 : 51a60f: 48 89 50 18 mov %rdx,0x18(%rax) : n->replace = true; : n->options = $8; 0.00 : 51a613: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51a617: 48 89 50 28 mov %rdx,0x28(%rax) : n->withCheckOption = $11; 0.00 : 51a61b: 8b 16 mov (%rsi),%edx 0.00 : 51a61d: 89 50 30 mov %edx,0x30(%rax) : $$ = (Node *) n; : } : | CREATE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions 0.00 : 51a620: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a627: e9 54 73 ff ff jmpq 511980 : *****************************************************************************/ : : ViewStmt: CREATE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a62c: 48 8b 3d 2d 02 6a 00 mov 0x6a022d(%rip),%rdi # bba860 0.00 : 51a633: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a638: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a63f: e8 cc e7 27 00 callq 798e10 0.00 : 51a644: c7 00 dc 02 00 00 movl $0x2dc,(%rax) : n->view = $4; 0.00 : 51a64a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->aliases = $5; : n->query = $8; : n->replace = false; : n->options = $6; : n->withCheckOption = $9; : $$ = (Node *) n; 0.00 : 51a651: 49 89 c6 mov %rax,%r14 : : ViewStmt: CREATE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $4; 0.00 : 51a654: 48 8b 4a d8 mov -0x28(%rdx),%rcx 0.00 : 51a658: 48 89 48 08 mov %rcx,0x8(%rax) : n->view->relpersistence = $2; 0.00 : 51a65c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a663: 8b 53 c8 mov -0x38(%rbx),%edx 0.00 : 51a666: 88 51 24 mov %dl,0x24(%rcx) : n->aliases = $5; 0.00 : 51a669: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51a66d: 48 89 50 10 mov %rdx,0x10(%rax) : n->query = $8; 0.00 : 51a671: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->replace = false; 0.00 : 51a675: c6 40 20 00 movb $0x0,0x20(%rax) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $4; : n->view->relpersistence = $2; : n->aliases = $5; : n->query = $8; 0.00 : 51a679: 48 89 50 18 mov %rdx,0x18(%rax) : n->replace = false; : n->options = $6; 0.00 : 51a67d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51a681: 48 89 50 28 mov %rdx,0x28(%rax) : n->withCheckOption = $9; 0.00 : 51a685: 8b 13 mov (%rbx),%edx 0.00 : 51a687: 89 50 30 mov %edx,0x30(%rax) : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp VIEW qualified_name opt_column_list opt_reloptions 0.00 : 51a68a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a691: e9 ea 72 ff ff jmpq 511980 : ; : : transaction_mode_list_or_empty: : transaction_mode_list : | /* EMPTY */ : { $$ = NIL; } 0.00 : 51a696: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51a699: e9 e2 72 ff ff jmpq 511980 : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } : | transaction_mode_list transaction_mode_item : { $$ = lappend($1, $2); } 0.00 : 51a69e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a6a5: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51a6a9: 48 8b 36 mov (%rsi),%rsi 0.00 : 51a6ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a6b3: e8 c8 77 0c 00 callq 5e1e80 : ; 0.00 : 51a6b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } : | transaction_mode_list transaction_mode_item : { $$ = lappend($1, $2); } 0.00 : 51a6bf: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51a6c2: e9 b9 72 ff ff jmpq 511980 : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } 0.00 : 51a6c7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a6ce: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51a6d2: 48 8b 33 mov (%rbx),%rsi 0.00 : 51a6d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a6dc: e8 9f 77 0c 00 callq 5e1e80 : | transaction_mode_list transaction_mode_item 0.00 : 51a6e1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } 0.00 : 51a6e8: 49 89 c6 mov %rax,%r14 : | transaction_mode_list transaction_mode_item 0.00 : 51a6eb: e9 90 72 ff ff jmpq 511980 : ; : : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } 0.00 : 51a6f0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a6f7: 31 f6 xor %esi,%esi 0.00 : 51a6f9: 48 8b 39 mov (%rcx),%rdi 0.00 : 51a6fc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a703: e8 48 71 0c 00 callq 5e1850 : | transaction_mode_list ',' transaction_mode_item 0.00 : 51a708: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } 0.00 : 51a70f: 49 89 c6 mov %rax,%r14 : | transaction_mode_list ',' transaction_mode_item 0.00 : 51a712: e9 69 72 ff ff jmpq 511980 : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a717: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51a71e: 31 ff xor %edi,%edi 0.00 : 51a720: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 51a723: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a72a: e8 e1 64 ff ff callq 510c10 0.00 : 51a72f: bf d3 96 7c 00 mov $0x7c96d3,%edi 0.00 : 51a734: 48 89 c6 mov %rax,%rsi 0.00 : 51a737: e8 c4 6d 0d 00 callq 5f1500 : makeIntConst(FALSE, @1)); } : ; 0.00 : 51a73c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a743: 49 89 c6 mov %rax,%r14 : makeIntConst(FALSE, @1)); } : ; 0.00 : 51a746: e9 35 72 ff ff jmpq 511980 : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a74b: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51a752: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51a757: 8b 30 mov (%rax),%esi 0.00 : 51a759: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a760: e8 ab 64 ff ff callq 510c10 0.00 : 51a765: bf d3 96 7c 00 mov $0x7c96d3,%edi 0.00 : 51a76a: 48 89 c6 mov %rax,%rsi 0.00 : 51a76d: e8 8e 6d 0d 00 callq 5f1500 : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE 0.00 : 51a772: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a779: 49 89 c6 mov %rax,%r14 : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE 0.00 : 51a77c: e9 ff 71 ff ff jmpq 511980 : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a781: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51a788: 31 ff xor %edi,%edi 0.00 : 51a78a: 8b 73 fc mov -0x4(%rbx),%esi 0.00 : 51a78d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a794: e8 77 64 ff ff callq 510c10 0.00 : 51a799: bf 55 a4 8d 00 mov $0x8da455,%edi 0.00 : 51a79e: 48 89 c6 mov %rax,%rsi 0.00 : 51a7a1: e8 5a 6d 0d 00 callq 5f1500 : makeIntConst(FALSE, @1)); } : | DEFERRABLE 0.00 : 51a7a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a7ad: 49 89 c6 mov %rax,%r14 : makeIntConst(FALSE, @1)); } : | DEFERRABLE 0.00 : 51a7b0: e9 cb 71 ff ff jmpq 511980 : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a7b5: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51a7bc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51a7c1: 8b 71 fc mov -0x4(%rcx),%esi 0.00 : 51a7c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a7cb: e8 40 64 ff ff callq 510c10 0.00 : 51a7d0: bf 55 a4 8d 00 mov $0x8da455,%edi 0.00 : 51a7d5: 48 89 c6 mov %rax,%rsi 0.00 : 51a7d8: e8 23 6d 0d 00 callq 5f1500 : makeIntConst(TRUE, @1)); } : | READ WRITE 0.00 : 51a7dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a7e4: 49 89 c6 mov %rax,%r14 : makeIntConst(TRUE, @1)); } : | READ WRITE 0.00 : 51a7e7: e9 94 71 ff ff jmpq 511980 : | /*EMPTY*/ {} : ; : : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", 0.00 : 51a7ec: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a7f3: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51a7fa: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a7fd: 8b 30 mov (%rax),%esi 0.00 : 51a7ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a806: e8 65 63 ff ff callq 510b70 0.00 : 51a80b: bf 2a df 89 00 mov $0x89df2a,%edi 0.00 : 51a810: 48 89 c6 mov %rax,%rsi 0.00 : 51a813: e8 e8 6c 0d 00 callq 5f1500 : makeStringConst($3, @3)); } : | READ ONLY 0.00 : 51a818: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ {} : ; : : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", 0.00 : 51a81f: 49 89 c6 mov %rax,%r14 : makeStringConst($3, @3)); } : | READ ONLY 0.00 : 51a822: e9 59 71 ff ff jmpq 511980 : { $$ = lappend($1, makeString($3)); } : ; : : SignedIconst: Iconst { $$ = $1; } : | '+' Iconst { $$ = + $2; } : | '-' Iconst { $$ = - $2; } 0.00 : 51a827: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a82e: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51a835: ff ff ff 0.00 : 51a838: 49 21 f6 and %rsi,%r14 0.00 : 51a83b: 8b 03 mov (%rbx),%eax 0.00 : 51a83d: f7 d8 neg %eax 0.00 : 51a83f: 89 c0 mov %eax,%eax 0.00 : 51a841: 49 09 c6 or %rax,%r14 : ; 0.00 : 51a844: e9 37 71 ff ff jmpq 511980 : * is chosen in part to make keywords acceptable as names wherever possible. : */ : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } 0.00 : 51a849: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a850: 4c 8b 30 mov (%rax),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51a853: e9 28 71 ff ff jmpq 511980 0.00 : 51a858: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a85f: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a862: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a869: e8 e2 e6 27 00 callq 798f50 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51a86e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51a875: 49 89 c6 mov %rax,%r14 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51a878: e9 03 71 ff ff jmpq 511980 : n->gid = $3; : $$ = (Node *)n; : } : | ROLLBACK PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a87d: 48 8b 3d dc ff 69 00 mov 0x69ffdc(%rip),%rdi # bba860 0.00 : 51a884: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a889: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a890: e8 7b e5 27 00 callq 798e10 0.00 : 51a895: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK_PREPARED; 0.00 : 51a89b: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->gid = $3; : $$ = (Node *)n; 0.00 : 51a8a2: 49 89 c6 mov %rax,%r14 : } : | ROLLBACK PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK_PREPARED; : n->gid = $3; 0.00 : 51a8a5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a8ac: 48 8b 16 mov (%rsi),%rdx 0.00 : 51a8af: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a8b3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a8ba: e9 c1 70 ff ff jmpq 511980 : n->gid = $3; : $$ = (Node *)n; : } : | COMMIT PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a8bf: 48 8b 3d 9a ff 69 00 mov 0x69ff9a(%rip),%rdi # bba860 0.00 : 51a8c6: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a8cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a8d2: e8 39 e5 27 00 callq 798e10 0.00 : 51a8d7: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_COMMIT_PREPARED; 0.00 : 51a8dd: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->gid = $3; : $$ = (Node *)n; 0.00 : 51a8e4: 49 89 c6 mov %rax,%r14 : } : | COMMIT PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_COMMIT_PREPARED; : n->gid = $3; 0.00 : 51a8e7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a8ee: 48 8b 13 mov (%rbx),%rdx 0.00 : 51a8f1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | ROLLBACK PREPARED Sconst 0.00 : 51a8f5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a8fc: e9 7f 70 ff ff jmpq 511980 : (Node *)makeString($4))); : $$ = (Node *)n; : } : | PREPARE TRANSACTION Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a901: 48 8b 3d 58 ff 69 00 mov 0x69ff58(%rip),%rdi # bba860 0.00 : 51a908: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a90d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a914: e8 f7 e4 27 00 callq 798e10 0.00 : 51a919: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_PREPARE; 0.00 : 51a91f: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->gid = $3; : $$ = (Node *)n; 0.00 : 51a926: 49 89 c6 mov %rax,%r14 : } : | PREPARE TRANSACTION Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_PREPARE; : n->gid = $3; 0.00 : 51a929: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a930: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a933: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | COMMIT PREPARED Sconst 0.00 : 51a937: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a93e: e9 3d 70 ff ff jmpq 511980 : (Node *)makeString($5))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a943: 48 8b 3d 16 ff 69 00 mov 0x69ff16(%rip),%rdi # bba860 0.00 : 51a94a: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a94f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a956: e8 b5 e4 27 00 callq 798e10 0.00 : 51a95b: 48 89 c3 mov %rax,%rbx 0.00 : 51a95e: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK_TO; 0.00 : 51a964: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a96b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : (Node *)makeString($4))); : $$ = (Node *)n; 0.00 : 51a972: 49 89 de mov %rbx,%r14 : } : | ROLLBACK opt_transaction TO ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK_TO; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a975: 48 8b 38 mov (%rax),%rdi 0.00 : 51a978: e8 73 4d 0e 00 callq 5ff6f0 0.00 : 51a97d: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51a982: 48 89 c6 mov %rax,%rsi 0.00 : 51a985: e8 76 6b 0d 00 callq 5f1500 0.00 : 51a98a: 31 f6 xor %esi,%esi 0.00 : 51a98c: 48 89 c7 mov %rax,%rdi 0.00 : 51a98f: e8 bc 6e 0c 00 callq 5e1850 0.00 : 51a994: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($4))); : $$ = (Node *)n; : } : | PREPARE TRANSACTION Sconst 0.00 : 51a998: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a99f: e9 dc 6f ff ff jmpq 511980 : (Node *)makeString($2))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a9a4: 48 8b 3d b5 fe 69 00 mov 0x69feb5(%rip),%rdi # bba860 0.00 : 51a9ab: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a9b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a9b7: e8 54 e4 27 00 callq 798e10 0.00 : 51a9bc: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK_TO; 0.00 : 51a9c2: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a9c9: 48 89 c3 mov %rax,%rbx : n->kind = TRANS_STMT_ROLLBACK_TO; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a9cc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : (Node *)makeString($5))); : $$ = (Node *)n; 0.00 : 51a9d3: 49 89 de mov %rbx,%r14 : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK_TO; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a9d6: 48 8b 3e mov (%rsi),%rdi 0.00 : 51a9d9: e8 12 4d 0e 00 callq 5ff6f0 0.00 : 51a9de: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51a9e3: 48 89 c6 mov %rax,%rsi 0.00 : 51a9e6: e8 15 6b 0d 00 callq 5f1500 0.00 : 51a9eb: 31 f6 xor %esi,%esi 0.00 : 51a9ed: 48 89 c7 mov %rax,%rdi 0.00 : 51a9f0: e8 5b 6e 0c 00 callq 5e1850 0.00 : 51a9f5: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($5))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO ColId 0.00 : 51a9f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aa00: e9 7b 6f ff ff jmpq 511980 : (Node *)makeString($3))); : $$ = (Node *)n; : } : | RELEASE ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa05: 48 8b 3d 54 fe 69 00 mov 0x69fe54(%rip),%rdi # bba860 0.00 : 51aa0c: be 18 00 00 00 mov $0x18,%esi 0.00 : 51aa11: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51aa18: e8 f3 e3 27 00 callq 798e10 0.00 : 51aa1d: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_RELEASE; 0.00 : 51aa23: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : (Node *)makeString($3))); : $$ = (Node *)n; : } : | RELEASE ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa2a: 48 89 c3 mov %rax,%rbx : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa2d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : (Node *)makeString($2))); : $$ = (Node *)n; 0.00 : 51aa34: 49 89 de mov %rbx,%r14 : } : | RELEASE ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa37: 48 8b 39 mov (%rcx),%rdi 0.00 : 51aa3a: e8 b1 4c 0e 00 callq 5ff6f0 0.00 : 51aa3f: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51aa44: 48 89 c6 mov %rax,%rsi 0.00 : 51aa47: e8 b4 6a 0d 00 callq 5f1500 0.00 : 51aa4c: 31 f6 xor %esi,%esi 0.00 : 51aa4e: 48 89 c7 mov %rax,%rdi 0.00 : 51aa51: e8 fa 6d 0c 00 callq 5e1850 0.00 : 51aa56: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId 0.00 : 51aa5a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aa61: e9 1a 6f ff ff jmpq 511980 : (Node *)makeString($2))); : $$ = (Node *)n; : } : | RELEASE SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa66: 48 8b 3d f3 fd 69 00 mov 0x69fdf3(%rip),%rdi # bba860 0.00 : 51aa6d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51aa72: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51aa79: e8 92 e3 27 00 callq 798e10 0.00 : 51aa7e: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_RELEASE; 0.00 : 51aa84: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | RELEASE SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa8b: 48 89 c3 mov %rax,%rbx : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa8e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : (Node *)makeString($3))); : $$ = (Node *)n; 0.00 : 51aa95: 49 89 de mov %rbx,%r14 : } : | RELEASE SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa98: 48 8b 3a mov (%rdx),%rdi 0.00 : 51aa9b: e8 50 4c 0e 00 callq 5ff6f0 0.00 : 51aaa0: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51aaa5: 48 89 c6 mov %rax,%rsi 0.00 : 51aaa8: e8 53 6a 0d 00 callq 5f1500 0.00 : 51aaad: 31 f6 xor %esi,%esi 0.00 : 51aaaf: 48 89 c7 mov %rax,%rdi 0.00 : 51aab2: e8 99 6d 0c 00 callq 5e1850 0.00 : 51aab7: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($3))); : $$ = (Node *)n; : } : | RELEASE ColId 0.00 : 51aabb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aac2: e9 b9 6e ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aac7: 48 8b 3d 92 fd 69 00 mov 0x69fd92(%rip),%rdi # bba860 0.00 : 51aace: be 18 00 00 00 mov $0x18,%esi 0.00 : 51aad3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51aada: e8 31 e3 27 00 callq 798e10 0.00 : 51aadf: 48 89 c3 mov %rax,%rbx 0.00 : 51aae2: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_SAVEPOINT; 0.00 : 51aae8: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aaef: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : (Node *)makeString($2))); : $$ = (Node *)n; 0.00 : 51aaf6: 49 89 de mov %rbx,%r14 : } : | SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_SAVEPOINT; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aaf9: 48 8b 38 mov (%rax),%rdi 0.00 : 51aafc: e8 ef 4b 0e 00 callq 5ff6f0 0.00 : 51ab01: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51ab06: 48 89 c6 mov %rax,%rsi 0.00 : 51ab09: e8 f2 69 0d 00 callq 5f1500 0.00 : 51ab0e: 31 f6 xor %esi,%esi 0.00 : 51ab10: 48 89 c7 mov %rax,%rdi 0.00 : 51ab13: e8 38 6d 0c 00 callq 5e1850 0.00 : 51ab18: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | RELEASE SAVEPOINT ColId 0.00 : 51ab1c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ab23: e9 58 6e ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | ROLLBACK opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ab28: 48 8b 3d 31 fd 69 00 mov 0x69fd31(%rip),%rdi # bba860 0.00 : 51ab2f: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ab34: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ab3b: e8 d0 e2 27 00 callq 798e10 0.00 : 51ab40: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK; 0.00 : 51ab46: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51ab4d: 49 89 c6 mov %rax,%r14 : } : | ROLLBACK opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK; : n->options = NIL; 0.00 : 51ab50: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ab57: 00 : $$ = (Node *)n; : } : | SAVEPOINT ColId 0.00 : 51ab58: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ab5f: e9 1c 6e ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | END_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ab64: 48 8b 3d f5 fc 69 00 mov 0x69fcf5(%rip),%rdi # bba860 0.00 : 51ab6b: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ab70: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ab77: e8 94 e2 27 00 callq 798e10 0.00 : 51ab7c: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_COMMIT; 0.00 : 51ab82: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51ab89: 49 89 c6 mov %rax,%r14 : } : | END_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_COMMIT; : n->options = NIL; 0.00 : 51ab8c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ab93: 00 : $$ = (Node *)n; : } : | ROLLBACK opt_transaction 0.00 : 51ab94: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ab9b: e9 e0 6d ff ff jmpq 511980 : n->options = $3; : $$ = (Node *)n; : } : | COMMIT opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aba0: 48 8b 3d b9 fc 69 00 mov 0x69fcb9(%rip),%rdi # bba860 0.00 : 51aba7: be 18 00 00 00 mov $0x18,%esi 0.00 : 51abac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51abb3: e8 58 e2 27 00 callq 798e10 0.00 : 51abb8: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_COMMIT; 0.00 : 51abbe: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51abc5: 49 89 c6 mov %rax,%r14 : } : | COMMIT opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_COMMIT; : n->options = NIL; 0.00 : 51abc8: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51abcf: 00 : $$ = (Node *)n; : } : | END_P opt_transaction 0.00 : 51abd0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51abd7: e9 a4 6d ff ff jmpq 511980 : n->options = $3; : $$ = (Node *)n; : } : | START TRANSACTION transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51abdc: 48 8b 3d 7d fc 69 00 mov 0x69fc7d(%rip),%rdi # bba860 0.00 : 51abe3: be 18 00 00 00 mov $0x18,%esi 0.00 : 51abe8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51abef: e8 1c e2 27 00 callq 798e10 0.00 : 51abf4: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_START; 0.00 : 51abfa: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->options = $3; : $$ = (Node *)n; 0.00 : 51ac01: 49 89 c6 mov %rax,%r14 : } : | START TRANSACTION transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_START; : n->options = $3; 0.00 : 51ac04: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ac0b: 48 8b 16 mov (%rsi),%rdx 0.00 : 51ac0e: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | COMMIT opt_transaction 0.00 : 51ac12: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ac19: e9 62 6d ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | BEGIN_P opt_transaction transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ac1e: 48 8b 3d 3b fc 69 00 mov 0x69fc3b(%rip),%rdi # bba860 0.00 : 51ac25: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ac2a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ac31: e8 da e1 27 00 callq 798e10 0.00 : 51ac36: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_BEGIN; 0.00 : 51ac3c: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->options = $3; : $$ = (Node *)n; 0.00 : 51ac43: 49 89 c6 mov %rax,%r14 : } : | BEGIN_P opt_transaction transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_BEGIN; : n->options = $3; 0.00 : 51ac46: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ac4d: 48 8b 13 mov (%rbx),%rdx 0.00 : 51ac50: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | START TRANSACTION transaction_mode_list_or_empty 0.00 : 51ac54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ac5b: e9 20 6d ff ff jmpq 511980 : *****************************************************************************/ : : TransactionStmt: : ABORT_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ac60: 48 8b 3d f9 fb 69 00 mov 0x69fbf9(%rip),%rdi # bba860 0.00 : 51ac67: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ac6c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ac73: e8 98 e1 27 00 callq 798e10 0.00 : 51ac78: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK; 0.00 : 51ac7e: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51ac85: 49 89 c6 mov %rax,%r14 : TransactionStmt: : ABORT_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK; : n->options = NIL; 0.00 : 51ac88: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ac8f: 00 : $$ = (Node *)n; : } : | BEGIN_P opt_transaction transaction_mode_list_or_empty 0.00 : 51ac90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ac97: e9 e4 6c ff ff jmpq 511980 : n->conditionname = $2; : $$ = (Node *)n; : } : | UNLISTEN '*' : { : UnlistenStmt *n = makeNode(UnlistenStmt); 0.00 : 51ac9c: 48 8b 3d bd fb 69 00 mov 0x69fbbd(%rip),%rdi # bba860 0.00 : 51aca3: be 10 00 00 00 mov $0x10,%esi 0.00 : 51aca8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51acaf: e8 5c e1 27 00 callq 798e10 0.00 : 51acb4: c7 00 da 02 00 00 movl $0x2da,(%rax) : n->conditionname = NULL; 0.00 : 51acba: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51acc1: 00 : $$ = (Node *)n; 0.00 : 51acc2: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51acc5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51accc: e9 af 6c ff ff jmpq 511980 : ; : : UnlistenStmt: : UNLISTEN ColId : { : UnlistenStmt *n = makeNode(UnlistenStmt); 0.00 : 51acd1: 48 8b 3d 88 fb 69 00 mov 0x69fb88(%rip),%rdi # bba860 0.00 : 51acd8: be 10 00 00 00 mov $0x10,%esi 0.00 : 51acdd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ace4: e8 27 e1 27 00 callq 798e10 0.00 : 51ace9: c7 00 da 02 00 00 movl $0x2da,(%rax) : n->conditionname = $2; 0.00 : 51acef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51acf6: 49 89 c6 mov %rax,%r14 : : UnlistenStmt: : UNLISTEN ColId : { : UnlistenStmt *n = makeNode(UnlistenStmt); : n->conditionname = $2; 0.00 : 51acf9: 48 8b 11 mov (%rcx),%rdx 0.00 : 51acfc: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | UNLISTEN '*' 0.00 : 51ad00: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ad07: e9 74 6c ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : ListenStmt: LISTEN ColId : { : ListenStmt *n = makeNode(ListenStmt); 0.00 : 51ad0c: 48 8b 3d 4d fb 69 00 mov 0x69fb4d(%rip),%rdi # bba860 0.00 : 51ad13: be 10 00 00 00 mov $0x10,%esi 0.00 : 51ad18: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ad1f: e8 ec e0 27 00 callq 798e10 0.00 : 51ad24: c7 00 d9 02 00 00 movl $0x2d9,(%rax) : n->conditionname = $2; 0.00 : 51ad2a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *)n; 0.00 : 51ad31: 49 89 c6 mov %rax,%r14 : ; : : ListenStmt: LISTEN ColId : { : ListenStmt *n = makeNode(ListenStmt); : n->conditionname = $2; 0.00 : 51ad34: 48 8b 16 mov (%rsi),%rdx 0.00 : 51ad37: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51ad3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ad42: e9 39 6c ff ff jmpq 511980 : } : ; : : notify_payload: : ',' Sconst { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51ad47: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51ad4a: e9 31 6c ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : notify_payload: : ',' Sconst { $$ = $2; } 0.00 : 51ad4f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ad56: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51ad59: e9 22 6c ff ff jmpq 511980 : * : *****************************************************************************/ : : NotifyStmt: NOTIFY ColId notify_payload : { : NotifyStmt *n = makeNode(NotifyStmt); 0.00 : 51ad5e: 48 8b 3d fb fa 69 00 mov 0x69fafb(%rip),%rdi # bba860 0.00 : 51ad65: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ad6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ad71: e8 9a e0 27 00 callq 798e10 0.00 : 51ad76: c7 00 d8 02 00 00 movl $0x2d8,(%rax) : n->conditionname = $2; 0.00 : 51ad7c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->payload = $3; : $$ = (Node *)n; 0.00 : 51ad83: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : NotifyStmt: NOTIFY ColId notify_payload : { : NotifyStmt *n = makeNode(NotifyStmt); : n->conditionname = $2; 0.00 : 51ad86: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51ad8a: 48 89 50 08 mov %rdx,0x8(%rax) : n->payload = $3; 0.00 : 51ad8e: 48 8b 11 mov (%rcx),%rdx 0.00 : 51ad91: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51ad95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ad9c: e9 df 6b ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51ada1: 48 8b 3d b8 fa 69 00 mov 0x69fab8(%rip),%rdi # bba860 0.00 : 51ada8: be 28 00 00 00 mov $0x28,%esi 0.00 : 51adad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51adb4: e8 57 e0 27 00 callq 798e10 0.00 : 51adb9: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_RULE; 0.00 : 51adbf: c7 40 18 18 00 00 00 movl $0x18,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51adc6: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 51adc9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->behavior = $8; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 51add0: 49 89 de mov %rbx,%r14 : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 51add3: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51add7: e8 14 49 0e 00 callq 5ff6f0 0.00 : 51addc: 48 89 c6 mov %rax,%rsi 0.00 : 51addf: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51ade6: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51adea: e8 91 70 0c 00 callq 5e1e80 0.00 : 51adef: 31 f6 xor %esi,%esi 0.00 : 51adf1: 48 89 c7 mov %rax,%rdi 0.00 : 51adf4: e8 57 6a 0c 00 callq 5e1850 : n->arguments = NIL; 0.00 : 51adf9: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51ae00: 00 : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 51ae01: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $8; 0.00 : 51ae05: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ae0c: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 51ae0e: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51ae12: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); : n->arguments = NIL; : n->behavior = $8; 0.00 : 51ae16: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 51ae19: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ae20: e9 5b 6b ff ff jmpq 511980 : : : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51ae25: 48 8b 3d 34 fa 69 00 mov 0x69fa34(%rip),%rdi # bba860 0.00 : 51ae2c: be 28 00 00 00 mov $0x28,%esi 0.00 : 51ae31: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ae38: e8 d3 df 27 00 callq 798e10 0.00 : 51ae3d: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_RULE; 0.00 : 51ae43: c7 40 18 18 00 00 00 movl $0x18,0x18(%rax) : : : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51ae4a: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 51ae4d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $6; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 51ae54: 49 89 de mov %rbx,%r14 : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 51ae57: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51ae5b: e8 90 48 0e 00 callq 5ff6f0 0.00 : 51ae60: 48 89 c6 mov %rax,%rsi 0.00 : 51ae63: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51ae6a: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51ae6e: e8 0d 70 0c 00 callq 5e1e80 0.00 : 51ae73: 31 f6 xor %esi,%esi 0.00 : 51ae75: 48 89 c7 mov %rax,%rdi 0.00 : 51ae78: e8 d3 69 0c 00 callq 5e1850 : n->arguments = NIL; 0.00 : 51ae7d: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51ae84: 00 : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 51ae85: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $6; 0.00 : 51ae89: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ae90: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 51ae92: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51ae96: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); : n->arguments = NIL; : n->behavior = $6; 0.00 : 51ae9a: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior 0.00 : 51ae9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aea4: e9 d7 6a ff ff jmpq 511980 : ; : : opt_instead: : INSTEAD { $$ = TRUE; } : | ALSO { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51aea9: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51aeac: e9 cf 6a ff ff jmpq 511980 : | INSERT { $$ = CMD_INSERT; } : ; : : opt_instead: : INSTEAD { $$ = TRUE; } : | ALSO { $$ = FALSE; } 0.00 : 51aeb1: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51aeb4: e9 c7 6a ff ff jmpq 511980 : | DELETE_P { $$ = CMD_DELETE; } : | INSERT { $$ = CMD_INSERT; } : ; : : opt_instead: : INSTEAD { $$ = TRUE; } 0.00 : 51aeb9: 41 b6 01 mov $0x1,%r14b 0.00 : 51aebc: 0f 1f 40 00 nopl 0x0(%rax) : | ALSO { $$ = FALSE; } 0.00 : 51aec0: e9 bb 6a ff ff jmpq 511980 : ; : : event: SELECT { $$ = CMD_SELECT; } : | UPDATE { $$ = CMD_UPDATE; } : | DELETE_P { $$ = CMD_DELETE; } : | INSERT { $$ = CMD_INSERT; } 0.00 : 51aec5: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51aecc: ff ff ff 0.00 : 51aecf: 49 21 ce and %rcx,%r14 0.00 : 51aed2: 49 83 ce 03 or $0x3,%r14 : ; 0.00 : 51aed6: e9 a5 6a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : event: SELECT { $$ = CMD_SELECT; } : | UPDATE { $$ = CMD_UPDATE; } : | DELETE_P { $$ = CMD_DELETE; } 0.00 : 51aedb: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51aee2: ff ff ff 0.00 : 51aee5: 49 21 d6 and %rdx,%r14 0.00 : 51aee8: 49 83 ce 04 or $0x4,%r14 : | INSERT { $$ = CMD_INSERT; } 0.00 : 51aeec: e9 8f 6a ff ff jmpq 511980 : RuleActionStmt { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } : ; : : event: SELECT { $$ = CMD_SELECT; } : | UPDATE { $$ = CMD_UPDATE; } 0.00 : 51aef1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51aef8: ff ff ff 0.00 : 51aefb: 49 21 c6 and %rax,%r14 0.00 : 51aefe: 49 83 ce 02 or $0x2,%r14 : | DELETE_P { $$ = CMD_DELETE; } 0.00 : 51af02: e9 79 6a ff ff jmpq 511980 : RuleActionStmtOrEmpty: : RuleActionStmt { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } : ; : : event: SELECT { $$ = CMD_SELECT; } 0.00 : 51af07: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51af0e: ff ff ff 0.00 : 51af11: 49 21 f6 and %rsi,%r14 0.00 : 51af14: 49 83 ce 01 or $0x1,%r14 : | UPDATE { $$ = CMD_UPDATE; } 0.00 : 51af18: e9 63 6a ff ff jmpq 511980 : | NotifyStmt : ; : : RuleActionStmtOrEmpty: : RuleActionStmt { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51af1d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51af20: e9 5b 6a ff ff jmpq 511980 : | DeleteStmt : | NotifyStmt : ; : : RuleActionStmtOrEmpty: : RuleActionStmt { $$ = $1; } 0.00 : 51af25: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51af2c: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51af2f: e9 4c 6a ff ff jmpq 511980 : $$ = lappend($1, $3); : else : $$ = $1; : } : | RuleActionStmtOrEmpty : { if ($1 != NULL) 0.00 : 51af34: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = list_make1($1); : else : $$ = NIL; 0.00 : 51af3b: 45 31 f6 xor %r14d,%r14d : $$ = lappend($1, $3); : else : $$ = $1; : } : | RuleActionStmtOrEmpty : { if ($1 != NULL) 0.00 : 51af3e: 48 8b 39 mov (%rcx),%rdi 0.00 : 51af41: 48 85 ff test %rdi,%rdi 0.00 : 51af44: 0f 84 36 6a ff ff je 511980 : $$ = list_make1($1); 0.00 : 51af4a: 31 f6 xor %esi,%esi 0.00 : 51af4c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51af53: e8 f8 68 0c 00 callq 5e1850 0.00 : 51af58: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51af5f: 49 89 c6 mov %rax,%r14 0.00 : 51af62: e9 19 6a ff ff jmpq 511980 : ; : : /* the thrashing around here is to discard "empty" statements... */ : RuleActionMulti: : RuleActionMulti ';' RuleActionStmtOrEmpty : { if ($3 != NULL) 0.00 : 51af67: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51af6e: 48 8b 30 mov (%rax),%rsi 0.00 : 51af71: 48 85 f6 test %rsi,%rsi 0.00 : 51af74: 0f 84 d1 e4 00 00 je 52944b : $$ = lappend($1, $3); 0.00 : 51af7a: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51af7e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51af85: e8 f6 6e 0c 00 callq 5e1e80 0.00 : 51af8a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51af91: 49 89 c6 mov %rax,%r14 0.00 : 51af94: e9 e7 69 ff ff jmpq 511980 : ; : : RuleActionList: : NOTHING { $$ = NIL; } : | RuleActionStmt { $$ = list_make1($1); } : | '(' RuleActionMulti ')' { $$ = $2; } 0.00 : 51af99: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51afa0: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 51afa4: e9 d7 69 ff ff jmpq 511980 : } : ; : : RuleActionList: : NOTHING { $$ = NIL; } : | RuleActionStmt { $$ = list_make1($1); } 0.00 : 51afa9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51afb0: 31 f6 xor %esi,%esi 0.00 : 51afb2: 48 8b 3b mov (%rbx),%rdi 0.00 : 51afb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51afbc: e8 8f 68 0c 00 callq 5e1850 : | '(' RuleActionMulti ')' { $$ = $2; } 0.00 : 51afc1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : RuleActionList: : NOTHING { $$ = NIL; } : | RuleActionStmt { $$ = list_make1($1); } 0.00 : 51afc8: 49 89 c6 mov %rax,%r14 : | '(' RuleActionMulti ')' { $$ = $2; } 0.00 : 51afcb: e9 b0 69 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : RuleActionList: : NOTHING { $$ = NIL; } 0.00 : 51afd0: 45 31 f6 xor %r14d,%r14d : | RuleActionStmt { $$ = list_make1($1); } 0.00 : 51afd3: e9 a8 69 ff ff jmpq 511980 : : RuleStmt: CREATE opt_or_replace RULE name AS : ON event TO qualified_name where_clause : DO opt_instead RuleActionList : { : RuleStmt *n = makeNode(RuleStmt); 0.00 : 51afd8: 48 8b 3d 81 f8 69 00 mov 0x69f881(%rip),%rdi # bba860 0.00 : 51afdf: be 38 00 00 00 mov $0x38,%esi 0.00 : 51afe4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51afeb: e8 20 de 27 00 callq 798e10 0.00 : 51aff0: c7 00 d7 02 00 00 movl $0x2d7,(%rax) : n->replace = $2; 0.00 : 51aff6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->rulename = $4; : n->whereClause = $10; : n->event = $7; : n->instead = $12; : n->actions = $13; : $$ = (Node *)n; 0.00 : 51affd: 49 89 c6 mov %rax,%r14 : RuleStmt: CREATE opt_or_replace RULE name AS : ON event TO qualified_name where_clause : DO opt_instead RuleActionList : { : RuleStmt *n = makeNode(RuleStmt); : n->replace = $2; 0.00 : 51b000: 0f b6 51 a8 movzbl -0x58(%rcx),%edx 0.00 : 51b004: 88 50 30 mov %dl,0x30(%rax) : n->relation = $9; 0.00 : 51b007: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51b00b: 48 89 50 08 mov %rdx,0x8(%rax) : n->rulename = $4; 0.00 : 51b00f: 48 8b 51 b8 mov -0x48(%rcx),%rdx 0.00 : 51b013: 48 89 50 10 mov %rdx,0x10(%rax) : n->whereClause = $10; 0.00 : 51b017: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b01b: 48 89 50 18 mov %rdx,0x18(%rax) : n->event = $7; 0.00 : 51b01f: 8b 51 d0 mov -0x30(%rcx),%edx 0.00 : 51b022: 89 50 20 mov %edx,0x20(%rax) : n->instead = $12; 0.00 : 51b025: 0f b6 51 f8 movzbl -0x8(%rcx),%edx 0.00 : 51b029: 88 50 24 mov %dl,0x24(%rax) : n->actions = $13; 0.00 : 51b02c: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b02f: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51b033: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b03a: e9 41 69 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b03f: 48 8b 3d 1a f8 69 00 mov 0x69f81a(%rip),%rdi # bba860 0.00 : 51b046: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b04b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b052: e8 b9 dd 27 00 callq 798e10 0.00 : 51b057: 48 89 c3 mov %rax,%rbx 0.00 : 51b05a: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_EVENT_TRIGGER; 0.00 : 51b060: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->object = list_make1(makeString($4)); 0.00 : 51b067: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b06e: 49 89 de mov %rbx,%r14 : } : | ALTER EVENT TRIGGER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_EVENT_TRIGGER; : n->object = list_make1(makeString($4)); 0.00 : 51b071: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51b075: e8 76 46 0e 00 callq 5ff6f0 0.00 : 51b07a: 31 f6 xor %esi,%esi 0.00 : 51b07c: 48 89 c7 mov %rax,%rdi 0.00 : 51b07f: e8 cc 67 0c 00 callq 5e1850 0.00 : 51b084: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $7; 0.00 : 51b088: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b08f: 48 8b 02 mov (%rdx),%rax 0.00 : 51b092: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 51b096: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b09d: e9 de 68 ff ff jmpq 511980 : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER SERVER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b0a2: 48 8b 3d b7 f7 69 00 mov 0x69f7b7(%rip),%rdi # bba860 0.00 : 51b0a9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b0ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b0b5: e8 56 dd 27 00 callq 798e10 0.00 : 51b0ba: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_FOREIGN_SERVER; 0.00 : 51b0c0: c7 40 04 0c 00 00 00 movl $0xc,0x4(%rax) : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER SERVER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b0c7: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51b0ca: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b0d1: 49 89 de mov %rbx,%r14 : } : | ALTER SERVER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51b0d4: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51b0d8: e8 13 46 0e 00 callq 5ff6f0 0.00 : 51b0dd: 31 f6 xor %esi,%esi 0.00 : 51b0df: 48 89 c7 mov %rax,%rdi 0.00 : 51b0e2: e8 69 67 0c 00 callq 5e1850 0.00 : 51b0e7: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b0eb: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b0f2: 48 8b 06 mov (%rsi),%rax 0.00 : 51b0f5: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name OWNER TO RoleId 0.00 : 51b0f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b100: e9 7b 68 ff ff jmpq 511980 : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b105: 48 8b 3d 54 f7 69 00 mov 0x69f754(%rip),%rdi # bba860 0.00 : 51b10c: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b111: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b118: e8 f3 dc 27 00 callq 798e10 0.00 : 51b11d: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_FDW; 0.00 : 51b123: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b12a: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51b12d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newowner = $8; : $$ = (Node *)n; 0.00 : 51b134: 49 89 de mov %rbx,%r14 : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51b137: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b13b: e8 b0 45 0e 00 callq 5ff6f0 0.00 : 51b140: 31 f6 xor %esi,%esi 0.00 : 51b142: 48 89 c7 mov %rax,%rdi 0.00 : 51b145: e8 06 67 0c 00 callq 5e1850 0.00 : 51b14a: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $8; 0.00 : 51b14e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b155: 48 8b 02 mov (%rdx),%rax 0.00 : 51b158: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER SERVER name OWNER TO RoleId 0.00 : 51b15c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b163: e9 18 68 ff ff jmpq 511980 : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b168: 48 8b 3d f1 f6 69 00 mov 0x69f6f1(%rip),%rdi # bba860 0.00 : 51b16f: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b174: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b17b: e8 90 dc 27 00 callq 798e10 0.00 : 51b180: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TSCONFIGURATION; 0.00 : 51b186: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->object = $5; : n->newowner = $8; : $$ = (Node *)n; 0.00 : 51b18d: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TSCONFIGURATION; : n->object = $5; 0.00 : 51b190: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b197: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b19b: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $8; 0.00 : 51b19f: 48 8b 13 mov (%rbx),%rdx 0.00 : 51b1a2: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId 0.00 : 51b1a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b1ad: e9 ce 67 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b1b2: 48 8b 3d a7 f6 69 00 mov 0x69f6a7(%rip),%rdi # bba860 0.00 : 51b1b9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b1be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b1c5: e8 46 dc 27 00 callq 798e10 0.00 : 51b1ca: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TSDICTIONARY; 0.00 : 51b1d0: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->object = $5; : n->newowner = $8; : $$ = (Node *)n; 0.00 : 51b1d7: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TSDICTIONARY; : n->object = $5; 0.00 : 51b1da: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b1e1: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b1e5: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $8; 0.00 : 51b1e9: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b1ec: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO RoleId 0.00 : 51b1f0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b1f7: e9 84 67 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TABLESPACE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b1fc: 48 8b 3d 5d f6 69 00 mov 0x69f65d(%rip),%rdi # bba860 0.00 : 51b203: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b208: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b20f: e8 fc db 27 00 callq 798e10 0.00 : 51b214: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TABLESPACE; 0.00 : 51b21a: c7 40 04 1c 00 00 00 movl $0x1c,0x4(%rax) : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TABLESPACE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b221: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_TABLESPACE; : n->object = list_make1(makeString($3)); 0.00 : 51b224: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b22b: 49 89 de mov %rbx,%r14 : } : | ALTER TABLESPACE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TABLESPACE; : n->object = list_make1(makeString($3)); 0.00 : 51b22e: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b232: e8 b9 44 0e 00 callq 5ff6f0 0.00 : 51b237: 31 f6 xor %esi,%esi 0.00 : 51b239: 48 89 c7 mov %rax,%rdi 0.00 : 51b23c: e8 0f 66 0c 00 callq 5e1850 0.00 : 51b241: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b245: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b24c: 48 8b 02 mov (%rdx),%rax 0.00 : 51b24f: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO RoleId 0.00 : 51b253: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b25a: e9 21 67 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b25f: 48 8b 3d fa f5 69 00 mov 0x69f5fa(%rip),%rdi # bba860 0.00 : 51b266: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b26b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b272: e8 99 db 27 00 callq 798e10 0.00 : 51b277: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TYPE; 0.00 : 51b27d: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b284: 49 89 c6 mov %rax,%r14 : } : | ALTER TYPE_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TYPE; : n->object = $3; 0.00 : 51b287: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b28e: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b292: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b296: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b299: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER TABLESPACE name OWNER TO RoleId 0.00 : 51b29d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b2a4: e9 d7 66 ff ff jmpq 511980 : n->newowner = $9; : $$ = (Node *)n; : } : | ALTER SCHEMA name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b2a9: 48 8b 3d b0 f5 69 00 mov 0x69f5b0(%rip),%rdi # bba860 0.00 : 51b2b0: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b2b5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b2bc: e8 4f db 27 00 callq 798e10 0.00 : 51b2c1: 48 89 c3 mov %rax,%rbx 0.00 : 51b2c4: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_SCHEMA; 0.00 : 51b2ca: c7 40 04 19 00 00 00 movl $0x19,0x4(%rax) : n->object = list_make1(makeString($3)); 0.00 : 51b2d1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b2d8: 49 89 de mov %rbx,%r14 : } : | ALTER SCHEMA name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_SCHEMA; : n->object = list_make1(makeString($3)); 0.00 : 51b2db: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51b2df: e8 0c 44 0e 00 callq 5ff6f0 0.00 : 51b2e4: 31 f6 xor %esi,%esi 0.00 : 51b2e6: 48 89 c7 mov %rax,%rdi 0.00 : 51b2e9: e8 62 65 0c 00 callq 5e1850 0.00 : 51b2ee: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b2f2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b2f9: 48 8b 02 mov (%rdx),%rax 0.00 : 51b2fc: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER TYPE_P any_name OWNER TO RoleId 0.00 : 51b300: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b307: e9 74 66 ff ff jmpq 511980 : n->newowner = $9; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b30c: 48 8b 3d 4d f5 69 00 mov 0x69f54d(%rip),%rdi # bba860 0.00 : 51b313: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b318: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b31f: e8 ec da 27 00 callq 798e10 0.00 : 51b324: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_OPFAMILY; 0.00 : 51b32a: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->newowner = $9; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b331: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51b334: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objarg = list_make1(makeString($6)); : n->newowner = $9; : $$ = (Node *)n; 0.00 : 51b33b: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51b33e: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 51b342: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51b346: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51b34a: e8 a1 43 0e 00 callq 5ff6f0 0.00 : 51b34f: 31 f6 xor %esi,%esi 0.00 : 51b351: 48 89 c7 mov %rax,%rdi 0.00 : 51b354: e8 f7 64 0c 00 callq 5e1850 0.00 : 51b359: 48 89 43 18 mov %rax,0x18(%rbx) : n->newowner = $9; 0.00 : 51b35d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b364: 48 8b 06 mov (%rsi),%rax 0.00 : 51b367: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER SCHEMA name OWNER TO RoleId 0.00 : 51b36b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b372: e9 09 66 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b377: 48 8b 3d e2 f4 69 00 mov 0x69f4e2(%rip),%rdi # bba860 0.00 : 51b37e: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b383: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b38a: e8 81 da 27 00 callq 798e10 0.00 : 51b38f: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_OPCLASS; 0.00 : 51b395: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b39c: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51b39f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objarg = list_make1(makeString($6)); : n->newowner = $9; : $$ = (Node *)n; 0.00 : 51b3a6: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51b3a9: 48 8b 46 d8 mov -0x28(%rsi),%rax 0.00 : 51b3ad: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51b3b1: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b3b5: e8 36 43 0e 00 callq 5ff6f0 0.00 : 51b3ba: 31 f6 xor %esi,%esi 0.00 : 51b3bc: 48 89 c7 mov %rax,%rdi 0.00 : 51b3bf: e8 8c 64 0c 00 callq 5e1850 0.00 : 51b3c4: 48 89 43 18 mov %rax,0x18(%rbx) : n->newowner = $9; 0.00 : 51b3c8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b3cf: 48 8b 02 mov (%rdx),%rax 0.00 : 51b3d2: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId 0.00 : 51b3d6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b3dd: e9 9e 65 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b3e2: 48 8b 3d 77 f4 69 00 mov 0x69f477(%rip),%rdi # bba860 0.00 : 51b3e9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b3ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b3f5: e8 16 da 27 00 callq 798e10 0.00 : 51b3fa: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_OPERATOR; 0.00 : 51b400: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->object = $3; : n->objarg = $4; : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b407: 49 89 c6 mov %rax,%r14 : } : | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_OPERATOR; : n->object = $3; 0.00 : 51b40a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b411: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51b415: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $4; 0.00 : 51b419: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b41d: 48 89 50 18 mov %rdx,0x18(%rax) : n->newowner = $7; 0.00 : 51b421: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b424: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId 0.00 : 51b428: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b42f: e9 4c 65 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b434: 48 8b 3d 25 f4 69 00 mov 0x69f425(%rip),%rdi # bba860 0.00 : 51b43b: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b440: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b447: e8 c4 d9 27 00 callq 798e10 0.00 : 51b44c: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_LARGEOBJECT; 0.00 : 51b452: c7 40 04 11 00 00 00 movl $0x11,0x4(%rax) : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b459: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_LARGEOBJECT; : n->object = list_make1($4); 0.00 : 51b45c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b463: 31 f6 xor %esi,%esi : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b465: 49 89 de mov %rbx,%r14 : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_LARGEOBJECT; : n->object = list_make1($4); 0.00 : 51b468: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51b46c: e8 df 63 0c 00 callq 5e1850 0.00 : 51b471: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $7; 0.00 : 51b475: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b47c: 48 8b 06 mov (%rsi),%rax 0.00 : 51b47f: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleId 0.00 : 51b483: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b48a: e9 f1 64 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b48f: 48 8b 3d ca f3 69 00 mov 0x69f3ca(%rip),%rdi # bba860 0.00 : 51b496: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b49b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b4a2: e8 69 d9 27 00 callq 798e10 0.00 : 51b4a7: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_LANGUAGE; 0.00 : 51b4ad: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b4b4: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51b4b7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b4be: 49 89 de mov %rbx,%r14 : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51b4c1: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b4c5: e8 26 42 0e 00 callq 5ff6f0 0.00 : 51b4ca: 31 f6 xor %esi,%esi 0.00 : 51b4cc: 48 89 c7 mov %rax,%rdi 0.00 : 51b4cf: e8 7c 63 0c 00 callq 5e1850 0.00 : 51b4d4: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $7; 0.00 : 51b4d8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b4df: 48 8b 02 mov (%rdx),%rax 0.00 : 51b4e2: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId 0.00 : 51b4e6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b4ed: e9 8e 64 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b4f2: 48 8b 3d 67 f3 69 00 mov 0x69f367(%rip),%rdi # bba860 0.00 : 51b4f9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b4fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b505: e8 06 d9 27 00 callq 798e10 0.00 : 51b50a: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_FUNCTION; 0.00 : 51b510: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b517: 49 89 c6 mov %rax,%r14 : } : | ALTER FUNCTION function_with_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_FUNCTION; : n->object = $3->funcname; 0.00 : 51b51a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b521: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b525: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51b529: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $3->funcargs; 0.00 : 51b52d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b531: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 51b535: 48 89 50 18 mov %rdx,0x18(%rax) : n->newowner = $6; 0.00 : 51b539: 48 8b 13 mov (%rbx),%rdx 0.00 : 51b53c: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId 0.00 : 51b540: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b547: e9 34 64 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b54c: 48 8b 3d 0d f3 69 00 mov 0x69f30d(%rip),%rdi # bba860 0.00 : 51b553: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b558: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b55f: e8 ac d8 27 00 callq 798e10 0.00 : 51b564: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_DOMAIN; 0.00 : 51b56a: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b571: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_DOMAIN; : n->object = $3; 0.00 : 51b574: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b57b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b57f: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b583: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b586: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes OWNER TO RoleId 0.00 : 51b58a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b591: e9 ea 63 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER DATABASE database_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b596: 48 8b 3d c3 f2 69 00 mov 0x69f2c3(%rip),%rdi # bba860 0.00 : 51b59d: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b5a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b5a9: e8 62 d8 27 00 callq 798e10 0.00 : 51b5ae: 48 89 c3 mov %rax,%rbx 0.00 : 51b5b1: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_DATABASE; 0.00 : 51b5b7: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->object = list_make1(makeString($3)); 0.00 : 51b5be: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b5c5: 49 89 de mov %rbx,%r14 : } : | ALTER DATABASE database_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_DATABASE; : n->object = list_make1(makeString($3)); 0.00 : 51b5c8: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51b5cc: e8 1f 41 0e 00 callq 5ff6f0 0.00 : 51b5d1: 31 f6 xor %esi,%esi 0.00 : 51b5d3: 48 89 c7 mov %rax,%rdi 0.00 : 51b5d6: e8 75 62 0c 00 callq 5e1850 0.00 : 51b5db: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b5df: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b5e6: 48 8b 02 mov (%rdx),%rax 0.00 : 51b5e9: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name OWNER TO RoleId 0.00 : 51b5ed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b5f4: e9 87 63 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b5f9: 48 8b 3d 60 f2 69 00 mov 0x69f260(%rip),%rdi # bba860 0.00 : 51b600: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b605: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b60c: e8 ff d7 27 00 callq 798e10 0.00 : 51b611: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_CONVERSION; 0.00 : 51b617: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b61e: 49 89 c6 mov %rax,%r14 : } : | ALTER CONVERSION_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_CONVERSION; : n->object = $3; 0.00 : 51b621: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b628: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b62c: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b630: 48 8b 16 mov (%rsi),%rdx 0.00 : 51b633: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER DATABASE database_name OWNER TO RoleId 0.00 : 51b637: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b63e: e9 3d 63 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER COLLATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b643: 48 8b 3d 16 f2 69 00 mov 0x69f216(%rip),%rdi # bba860 0.00 : 51b64a: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b64f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b656: e8 b5 d7 27 00 callq 798e10 0.00 : 51b65b: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_COLLATION; 0.00 : 51b661: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b668: 49 89 c6 mov %rax,%r14 : } : | ALTER COLLATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_COLLATION; : n->object = $3; 0.00 : 51b66b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b672: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b676: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b67a: 48 8b 13 mov (%rbx),%rdx 0.00 : 51b67d: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name OWNER TO RoleId 0.00 : 51b681: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b688: e9 f3 62 ff ff jmpq 511980 : * : *****************************************************************************/ : : AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b68d: 48 8b 3d cc f1 69 00 mov 0x69f1cc(%rip),%rdi # bba860 0.00 : 51b694: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b699: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b6a0: e8 6b d7 27 00 callq 798e10 0.00 : 51b6a5: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_AGGREGATE; 0.00 : 51b6ab: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : * : *****************************************************************************/ : : AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b6b2: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51b6b5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objarg = extractAggrArgTypes($4); : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b6bc: 49 89 de mov %rbx,%r14 : : AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51b6bf: 48 8b 42 e0 mov -0x20(%rdx),%rax 0.00 : 51b6c3: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = extractAggrArgTypes($4); 0.00 : 51b6c7: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51b6cb: e8 00 54 ff ff callq 510ad0 0.00 : 51b6d0: 48 89 43 18 mov %rax,0x18(%rbx) : n->newowner = $7; 0.00 : 51b6d4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b6db: 48 8b 01 mov (%rcx),%rax 0.00 : 51b6de: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER COLLATION any_name OWNER TO RoleId 0.00 : 51b6e2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b6e9: e9 92 62 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b6ee: 48 8b 3d 6b f1 69 00 mov 0x69f16b(%rip),%rdi # bba860 0.00 : 51b6f5: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b6fa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b701: e8 0a d7 27 00 callq 798e10 0.00 : 51b706: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TYPE; 0.00 : 51b70c: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b713: 49 89 c6 mov %rax,%r14 : } : | ALTER TYPE_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TYPE; : n->object = $3; 0.00 : 51b716: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b71d: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b721: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51b725: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51b728: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TYPE_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TYPE; : n->object = $3; : n->newschema = $6; 0.00 : 51b72c: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : ; 0.00 : 51b730: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b737: e9 44 62 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b73c: 48 8b 3d 1d f1 69 00 mov 0x69f11d(%rip),%rdi # bba860 0.00 : 51b743: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b748: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b74f: e8 bc d6 27 00 callq 798e10 0.00 : 51b754: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_FOREIGN_TABLE; 0.00 : 51b75a: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $6; : n->newschema = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b761: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $6; 0.00 : 51b764: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b76b: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b76f: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $9; 0.00 : 51b773: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51b776: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->newschema = $9; 0.00 : 51b77a: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name SET SCHEMA name 0.00 : 51b77e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b785: e9 f6 61 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b78a: 48 8b 3d cf f0 69 00 mov 0x69f0cf(%rip),%rdi # bba860 0.00 : 51b791: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b796: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b79d: e8 6e d6 27 00 callq 798e10 0.00 : 51b7a2: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_FOREIGN_TABLE; 0.00 : 51b7a8: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $4; : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b7af: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $4; 0.00 : 51b7b2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b7b9: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b7bd: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $7; 0.00 : 51b7c1: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51b7c4: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->newschema = $7; 0.00 : 51b7c8: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name 0.00 : 51b7cc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b7d3: e9 a8 61 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b7d8: 48 8b 3d 81 f0 69 00 mov 0x69f081(%rip),%rdi # bba860 0.00 : 51b7df: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b7e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b7eb: e8 20 d6 27 00 callq 798e10 0.00 : 51b7f0: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_MATVIEW; 0.00 : 51b7f6: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $6; : n->newschema = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b7fd: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $6; 0.00 : 51b800: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b807: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b80b: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $9; 0.00 : 51b80f: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51b812: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $6; : n->newschema = $9; 0.00 : 51b816: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name 0.00 : 51b81a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b821: e9 5a 61 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b826: 48 8b 3d 33 f0 69 00 mov 0x69f033(%rip),%rdi # bba860 0.00 : 51b82d: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b832: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b839: e8 d2 d5 27 00 callq 798e10 0.00 : 51b83e: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_MATVIEW; 0.00 : 51b844: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $4; : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b84b: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $4; 0.00 : 51b84e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b855: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b859: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $7; 0.00 : 51b85d: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51b860: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $4; : n->newschema = $7; 0.00 : 51b864: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name 0.00 : 51b868: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b86f: e9 0c 61 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b874: 48 8b 3d e5 ef 69 00 mov 0x69efe5(%rip),%rdi # bba860 0.00 : 51b87b: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b880: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b887: e8 84 d5 27 00 callq 798e10 0.00 : 51b88c: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_VIEW; 0.00 : 51b892: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $5; : n->newschema = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b899: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $5; 0.00 : 51b89c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b8a3: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b8a7: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $8; 0.00 : 51b8ab: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51b8ae: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $5; : n->newschema = $8; 0.00 : 51b8b2: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name 0.00 : 51b8b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b8bd: e9 be 60 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b8c2: 48 8b 3d 97 ef 69 00 mov 0x69ef97(%rip),%rdi # bba860 0.00 : 51b8c9: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b8ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b8d5: e8 36 d5 27 00 callq 798e10 0.00 : 51b8da: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_VIEW; 0.00 : 51b8e0: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b8e7: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $3; 0.00 : 51b8ea: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b8f1: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b8f5: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $6; 0.00 : 51b8f9: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51b8fc: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $3; : n->newschema = $6; 0.00 : 51b900: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name 0.00 : 51b904: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b90b: e9 70 60 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b910: 48 8b 3d 49 ef 69 00 mov 0x69ef49(%rip),%rdi # bba860 0.00 : 51b917: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b91c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b923: e8 e8 d4 27 00 callq 798e10 0.00 : 51b928: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_SEQUENCE; 0.00 : 51b92e: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $5; : n->newschema = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b935: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $5; 0.00 : 51b938: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b93f: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b943: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $8; 0.00 : 51b947: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51b94a: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $5; : n->newschema = $8; 0.00 : 51b94e: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name SET SCHEMA name 0.00 : 51b952: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b959: e9 22 60 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b95e: 48 8b 3d fb ee 69 00 mov 0x69eefb(%rip),%rdi # bba860 0.00 : 51b965: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b96a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b971: e8 9a d4 27 00 callq 798e10 0.00 : 51b976: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_SEQUENCE; 0.00 : 51b97c: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b983: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $3; 0.00 : 51b986: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b98d: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b991: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $6; 0.00 : 51b995: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51b998: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER SEQUENCE qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $3; : n->newschema = $6; 0.00 : 51b99c: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name 0.00 : 51b9a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b9a7: e9 d4 5f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b9ac: 48 8b 3d ad ee 69 00 mov 0x69eead(%rip),%rdi # bba860 0.00 : 51b9b3: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b9b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b9bf: e8 4c d4 27 00 callq 798e10 0.00 : 51b9c4: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSCONFIGURATION; 0.00 : 51b9ca: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b9d1: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSCONFIGURATION; : n->object = $5; 0.00 : 51b9d4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b9db: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b9df: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51b9e3: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51b9e6: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSCONFIGURATION; : n->object = $5; : n->newschema = $8; 0.00 : 51b9ea: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name SET SCHEMA name 0.00 : 51b9ee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b9f5: e9 86 5f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b9fa: 48 8b 3d 5f ee 69 00 mov 0x69ee5f(%rip),%rdi # bba860 0.00 : 51ba01: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ba06: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ba0d: e8 fe d3 27 00 callq 798e10 0.00 : 51ba12: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSTEMPLATE; 0.00 : 51ba18: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ba1f: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSTEMPLATE; : n->object = $5; 0.00 : 51ba22: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ba29: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ba2d: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51ba31: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51ba34: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSTEMPLATE; : n->object = $5; : n->newschema = $8; 0.00 : 51ba38: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name 0.00 : 51ba3c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ba43: e9 38 5f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51ba48: 48 8b 3d 11 ee 69 00 mov 0x69ee11(%rip),%rdi # bba860 0.00 : 51ba4f: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ba54: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ba5b: e8 b0 d3 27 00 callq 798e10 0.00 : 51ba60: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSDICTIONARY; 0.00 : 51ba66: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ba6d: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSDICTIONARY; : n->object = $5; 0.00 : 51ba70: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ba77: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ba7b: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51ba7f: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51ba82: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSDICTIONARY; : n->object = $5; : n->newschema = $8; 0.00 : 51ba86: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name 0.00 : 51ba8a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ba91: e9 ea 5e ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51ba96: 48 8b 3d c3 ed 69 00 mov 0x69edc3(%rip),%rdi # bba860 0.00 : 51ba9d: be 30 00 00 00 mov $0x30,%esi 0.00 : 51baa2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51baa9: e8 62 d3 27 00 callq 798e10 0.00 : 51baae: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSPARSER; 0.00 : 51bab4: c7 40 04 20 00 00 00 movl $0x20,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51babb: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSPARSER; : n->object = $5; 0.00 : 51babe: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51bac5: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51bac9: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51bacd: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51bad0: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSPARSER; : n->object = $5; : n->newschema = $8; 0.00 : 51bad4: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name 0.00 : 51bad8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51badf: e9 9c 5e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bae4: 48 8b 3d 75 ed 69 00 mov 0x69ed75(%rip),%rdi # bba860 0.00 : 51baeb: be 30 00 00 00 mov $0x30,%esi 0.00 : 51baf0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51baf7: e8 14 d3 27 00 callq 798e10 0.00 : 51bafc: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TABLE; 0.00 : 51bb02: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $5; : n->newschema = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51bb09: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $5; 0.00 : 51bb0c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bb13: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bb17: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $8; 0.00 : 51bb1b: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51bb1e: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $5; : n->newschema = $8; 0.00 : 51bb22: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name 0.00 : 51bb26: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bb2d: e9 4e 5e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bb32: 48 8b 3d 27 ed 69 00 mov 0x69ed27(%rip),%rdi # bba860 0.00 : 51bb39: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bb3e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bb45: e8 c6 d2 27 00 callq 798e10 0.00 : 51bb4a: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TABLE; 0.00 : 51bb50: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bb57: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $3; 0.00 : 51bb5a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bb61: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51bb65: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $6; 0.00 : 51bb69: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51bb6c: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $3; : n->newschema = $6; 0.00 : 51bb70: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name 0.00 : 51bb74: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bb7b: e9 00 5e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bb80: 48 8b 3d d9 ec 69 00 mov 0x69ecd9(%rip),%rdi # bba860 0.00 : 51bb87: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bb8c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bb93: e8 78 d2 27 00 callq 798e10 0.00 : 51bb98: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_OPFAMILY; 0.00 : 51bb9e: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bba5: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51bba8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objarg = list_make1(makeString($6)); : n->newschema = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bbaf: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51bbb2: 48 8b 46 d8 mov -0x28(%rsi),%rax 0.00 : 51bbb6: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51bbba: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51bbbe: e8 2d 3b 0e 00 callq 5ff6f0 0.00 : 51bbc3: 31 f6 xor %esi,%esi 0.00 : 51bbc5: 48 89 c7 mov %rax,%rdi 0.00 : 51bbc8: e8 83 5c 0c 00 callq 5e1850 0.00 : 51bbcd: 48 89 43 18 mov %rax,0x18(%rbx) : n->newschema = $9; 0.00 : 51bbd1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51bbd8: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51bbdb: c6 43 28 00 movb $0x0,0x28(%rbx) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPFAMILY; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newschema = $9; 0.00 : 51bbdf: 48 89 43 20 mov %rax,0x20(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr SET SCHEMA name 0.00 : 51bbe3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bbea: e9 91 5d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bbef: 48 8b 3d 6a ec 69 00 mov 0x69ec6a(%rip),%rdi # bba860 0.00 : 51bbf6: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bbfb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bc02: e8 09 d2 27 00 callq 798e10 0.00 : 51bc07: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_OPCLASS; 0.00 : 51bc0d: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bc14: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51bc17: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objarg = list_make1(makeString($6)); : n->newschema = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bc1e: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51bc21: 48 8b 42 d8 mov -0x28(%rdx),%rax 0.00 : 51bc25: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51bc29: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51bc2d: e8 be 3a 0e 00 callq 5ff6f0 0.00 : 51bc32: 31 f6 xor %esi,%esi 0.00 : 51bc34: 48 89 c7 mov %rax,%rdi 0.00 : 51bc37: e8 14 5c 0c 00 callq 5e1850 0.00 : 51bc3c: 48 89 43 18 mov %rax,0x18(%rbx) : n->newschema = $9; 0.00 : 51bc40: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bc47: 48 8b 01 mov (%rcx),%rax : n->missing_ok = false; 0.00 : 51bc4a: c6 43 28 00 movb $0x0,0x28(%rbx) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPCLASS; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newschema = $9; 0.00 : 51bc4e: 48 89 43 20 mov %rax,0x20(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name 0.00 : 51bc52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bc59: e9 22 5d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bc5e: 48 8b 3d fb eb 69 00 mov 0x69ebfb(%rip),%rdi # bba860 0.00 : 51bc65: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bc6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bc71: e8 9a d1 27 00 callq 798e10 0.00 : 51bc76: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_OPERATOR; 0.00 : 51bc7c: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->object = $3; : n->objarg = $4; : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bc83: 49 89 c6 mov %rax,%r14 : } : | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPERATOR; : n->object = $3; 0.00 : 51bc86: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51bc8d: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 51bc91: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $4; 0.00 : 51bc95: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51bc99: 48 89 50 18 mov %rdx,0x18(%rax) : n->newschema = $7; 0.00 : 51bc9d: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51bca0: c6 40 28 00 movb $0x0,0x28(%rax) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPERATOR; : n->object = $3; : n->objarg = $4; : n->newschema = $7; 0.00 : 51bca4: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name 0.00 : 51bca8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bcaf: e9 cc 5c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bcb4: 48 8b 3d a5 eb 69 00 mov 0x69eba5(%rip),%rdi # bba860 0.00 : 51bcbb: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bcc0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bcc7: e8 44 d1 27 00 callq 798e10 0.00 : 51bccc: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_FUNCTION; 0.00 : 51bcd2: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bcd9: 49 89 c6 mov %rax,%r14 : } : | ALTER FUNCTION function_with_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FUNCTION; : n->object = $3->funcname; 0.00 : 51bcdc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bce3: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bce7: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51bceb: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $3->funcargs; 0.00 : 51bcef: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bcf3: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 51bcf7: 48 89 50 18 mov %rdx,0x18(%rax) : n->newschema = $6; 0.00 : 51bcfb: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51bcfe: c6 40 28 00 movb $0x0,0x28(%rax) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FUNCTION; : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newschema = $6; 0.00 : 51bd02: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name 0.00 : 51bd06: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bd0d: e9 6e 5c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EXTENSION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bd12: 48 8b 3d 47 eb 69 00 mov 0x69eb47(%rip),%rdi # bba860 0.00 : 51bd19: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bd1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bd25: e8 e6 d0 27 00 callq 798e10 0.00 : 51bd2a: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_EXTENSION; 0.00 : 51bd30: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bd37: 49 89 c6 mov %rax,%r14 : } : | ALTER EXTENSION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_EXTENSION; : n->object = $3; 0.00 : 51bd3a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bd41: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51bd45: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51bd49: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51bd4c: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER EXTENSION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_EXTENSION; : n->object = $3; : n->newschema = $6; 0.00 : 51bd50: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes SET SCHEMA name 0.00 : 51bd54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bd5b: e9 20 5c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bd60: 48 8b 3d f9 ea 69 00 mov 0x69eaf9(%rip),%rdi # bba860 0.00 : 51bd67: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bd6c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bd73: e8 98 d0 27 00 callq 798e10 0.00 : 51bd78: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_DOMAIN; 0.00 : 51bd7e: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bd85: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_DOMAIN; : n->object = $3; 0.00 : 51bd88: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51bd8f: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51bd93: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51bd97: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51bd9a: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER DOMAIN_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_DOMAIN; : n->object = $3; : n->newschema = $6; 0.00 : 51bd9e: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EXTENSION any_name SET SCHEMA name 0.00 : 51bda2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bda9: e9 d2 5b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bdae: 48 8b 3d ab ea 69 00 mov 0x69eaab(%rip),%rdi # bba860 0.00 : 51bdb5: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bdba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bdc1: e8 4a d0 27 00 callq 798e10 0.00 : 51bdc6: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_CONVERSION; 0.00 : 51bdcc: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bdd3: 49 89 c6 mov %rax,%r14 : } : | ALTER CONVERSION_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_CONVERSION; : n->object = $3; 0.00 : 51bdd6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bddd: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bde1: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51bde5: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51bde8: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER CONVERSION_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_CONVERSION; : n->object = $3; : n->newschema = $6; 0.00 : 51bdec: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name SET SCHEMA name 0.00 : 51bdf0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bdf7: e9 84 5b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bdfc: 48 8b 3d 5d ea 69 00 mov 0x69ea5d(%rip),%rdi # bba860 0.00 : 51be03: be 30 00 00 00 mov $0x30,%esi 0.00 : 51be08: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51be0f: e8 fc cf 27 00 callq 798e10 0.00 : 51be14: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_COLLATION; 0.00 : 51be1a: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51be21: 49 89 c6 mov %rax,%r14 : } : | ALTER COLLATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_COLLATION; : n->object = $3; 0.00 : 51be24: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51be2b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51be2f: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51be33: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51be36: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER COLLATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_COLLATION; : n->object = $3; : n->newschema = $6; 0.00 : 51be3a: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name SET SCHEMA name 0.00 : 51be3e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51be45: e9 36 5b ff ff jmpq 511980 : *****************************************************************************/ : : AlterObjectSchemaStmt: : ALTER AGGREGATE func_name aggr_args SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51be4a: 48 8b 3d 0f ea 69 00 mov 0x69ea0f(%rip),%rdi # bba860 0.00 : 51be51: be 30 00 00 00 mov $0x30,%esi 0.00 : 51be56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51be5d: e8 ae cf 27 00 callq 798e10 0.00 : 51be62: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_AGGREGATE; 0.00 : 51be68: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : *****************************************************************************/ : : AlterObjectSchemaStmt: : ALTER AGGREGATE func_name aggr_args SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51be6f: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51be72: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objarg = extractAggrArgTypes($4); : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51be79: 49 89 de mov %rbx,%r14 : AlterObjectSchemaStmt: : ALTER AGGREGATE func_name aggr_args SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51be7c: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 51be80: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = extractAggrArgTypes($4); 0.00 : 51be84: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51be88: e8 43 4c ff ff callq 510ad0 0.00 : 51be8d: 48 89 43 18 mov %rax,0x18(%rbx) : n->newschema = $7; 0.00 : 51be91: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51be98: 48 8b 06 mov (%rsi),%rax : n->missing_ok = false; 0.00 : 51be9b: c6 43 28 00 movb $0x0,0x28(%rbx) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_AGGREGATE; : n->object = $3; : n->objarg = extractAggrArgTypes($4); : n->newschema = $7; 0.00 : 51be9f: 48 89 43 20 mov %rax,0x20(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name SET SCHEMA name 0.00 : 51bea3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51beaa: e9 d1 5a ff ff jmpq 511980 : opt_column: COLUMN { $$ = COLUMN; } : | /*EMPTY*/ { $$ = 0; } : ; : : opt_set_data: SET DATA_P { $$ = 1; } : | /*EMPTY*/ { $$ = 0; } 0.00 : 51beaf: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51beb6: ff ff ff 0.00 : 51beb9: 49 21 d6 and %rdx,%r14 : ; 0.00 : 51bebc: e9 bf 5a ff ff jmpq 511980 : : opt_column: COLUMN { $$ = COLUMN; } : | /*EMPTY*/ { $$ = 0; } : ; : : opt_set_data: SET DATA_P { $$ = 1; } 0.00 : 51bec1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51bec8: ff ff ff 0.00 : 51becb: 49 21 c6 and %rax,%r14 0.00 : 51bece: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = 0; } 0.00 : 51bed2: e9 a9 5a ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_column: COLUMN { $$ = COLUMN; } : | /*EMPTY*/ { $$ = 0; } 0.00 : 51bed7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51bede: ff ff ff 0.00 : 51bee1: 49 21 f6 and %rsi,%r14 : ; 0.00 : 51bee4: e9 97 5a ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : ; : : opt_column: COLUMN { $$ = COLUMN; } 0.00 : 51bee9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51bef0: ff ff ff 0.00 : 51bef3: 49 21 de and %rbx,%r14 0.00 : 51bef6: 49 81 ce 43 01 00 00 or $0x143,%r14 : | /*EMPTY*/ { $$ = 0; } 0.00 : 51befd: e9 7e 5a ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51bf02: 48 8b 3d 57 e9 69 00 mov 0x69e957(%rip),%rdi # bba860 0.00 : 51bf09: be 40 00 00 00 mov $0x40,%esi 0.00 : 51bf0e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bf15: e8 f6 ce 27 00 callq 798e10 0.00 : 51bf1a: 48 89 c3 mov %rax,%rbx 0.00 : 51bf1d: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ATTRIBUTE; 0.00 : 51bf23: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->relationType = OBJECT_TYPE; 0.00 : 51bf2a: c7 40 08 22 00 00 00 movl $0x22,0x8(%rax) : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 51bf31: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->subname = $6; : n->newname = $8; : n->behavior = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bf38: 49 89 de mov %rbx,%r14 : | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ATTRIBUTE; : n->relationType = OBJECT_TYPE; : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 51bf3b: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51bf42: 48 8b 7a d0 mov -0x30(%rdx),%rdi 0.00 : 51bf46: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 51bf4d: 8b 70 e8 mov -0x18(%rax),%esi 0.00 : 51bf50: e8 eb 4e ff ff callq 510e40 0.00 : 51bf55: 48 89 43 10 mov %rax,0x10(%rbx) : n->subname = $6; 0.00 : 51bf59: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bf60: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 51bf64: 48 89 43 28 mov %rax,0x28(%rbx) : n->newname = $8; 0.00 : 51bf68: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51bf6c: 48 89 43 30 mov %rax,0x30(%rbx) : n->behavior = $9; 0.00 : 51bf70: 8b 01 mov (%rcx),%eax : n->missing_ok = false; 0.00 : 51bf72: c6 43 3c 00 movb $0x0,0x3c(%rbx) : n->renameType = OBJECT_ATTRIBUTE; : n->relationType = OBJECT_TYPE; : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); : n->subname = $6; : n->newname = $8; : n->behavior = $9; 0.00 : 51bf76: 89 43 38 mov %eax,0x38(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : ; 0.00 : 51bf79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bf80: e9 fb 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51bf85: 48 8b 3d d4 e8 69 00 mov 0x69e8d4(%rip),%rdi # bba860 0.00 : 51bf8c: be 40 00 00 00 mov $0x40,%esi 0.00 : 51bf91: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bf98: e8 73 ce 27 00 callq 798e10 0.00 : 51bf9d: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TYPE; 0.00 : 51bfa3: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bfaa: 49 89 c6 mov %rax,%r14 : } : | ALTER TYPE_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TYPE; : n->object = $3; 0.00 : 51bfad: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bfb4: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bfb8: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51bfbc: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51bfbf: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TYPE_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TYPE; : n->object = $3; : n->newname = $6; 0.00 : 51bfc3: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior 0.00 : 51bfc7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bfce: e9 ad 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51bfd3: 48 8b 3d 86 e8 69 00 mov 0x69e886(%rip),%rdi # bba860 0.00 : 51bfda: be 40 00 00 00 mov $0x40,%esi 0.00 : 51bfdf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bfe6: e8 25 ce 27 00 callq 798e10 0.00 : 51bfeb: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSCONFIGURATION; 0.00 : 51bff1: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bff8: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSCONFIGURATION; : n->object = $5; 0.00 : 51bffb: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c002: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51c006: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c00a: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c00d: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSCONFIGURATION; : n->object = $5; : n->newname = $8; 0.00 : 51c011: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME TO name 0.00 : 51c015: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c01c: e9 5f 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c021: 48 8b 3d 38 e8 69 00 mov 0x69e838(%rip),%rdi # bba860 0.00 : 51c028: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c02d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c034: e8 d7 cd 27 00 callq 798e10 0.00 : 51c039: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSTEMPLATE; 0.00 : 51c03f: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c046: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSTEMPLATE; : n->object = $5; 0.00 : 51c049: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c050: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51c054: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c058: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c05b: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSTEMPLATE; : n->object = $5; : n->newname = $8; 0.00 : 51c05f: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name 0.00 : 51c063: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c06a: e9 11 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c06f: 48 8b 3d ea e7 69 00 mov 0x69e7ea(%rip),%rdi # bba860 0.00 : 51c076: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c07b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c082: e8 89 cd 27 00 callq 798e10 0.00 : 51c087: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSDICTIONARY; 0.00 : 51c08d: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c094: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSDICTIONARY; : n->object = $5; 0.00 : 51c097: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c09e: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51c0a2: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c0a6: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c0a9: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSDICTIONARY; : n->object = $5; : n->newname = $8; 0.00 : 51c0ad: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name 0.00 : 51c0b1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c0b8: e9 c3 58 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c0bd: 48 8b 3d 9c e7 69 00 mov 0x69e79c(%rip),%rdi # bba860 0.00 : 51c0c4: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c0c9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c0d0: e8 3b cd 27 00 callq 798e10 0.00 : 51c0d5: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSPARSER; 0.00 : 51c0db: c7 40 04 20 00 00 00 movl $0x20,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c0e2: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSPARSER; : n->object = $5; 0.00 : 51c0e5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c0ec: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51c0f0: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c0f4: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c0f7: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSPARSER; : n->object = $5; : n->newname = $8; 0.00 : 51c0fb: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name 0.00 : 51c0ff: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c106: e9 75 58 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLESPACE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c10b: 48 8b 3d 4e e7 69 00 mov 0x69e74e(%rip),%rdi # bba860 0.00 : 51c112: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c117: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c11e: e8 ed cc 27 00 callq 798e10 0.00 : 51c123: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TABLESPACE; 0.00 : 51c129: c7 40 04 1c 00 00 00 movl $0x1c,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c130: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLESPACE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLESPACE; : n->subname = $3; 0.00 : 51c133: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c13a: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51c13e: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51c142: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c145: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TABLESPACE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLESPACE; : n->subname = $3; : n->newname = $6; 0.00 : 51c149: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name 0.00 : 51c14d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c154: e9 27 58 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER USER RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c159: 48 8b 3d 00 e7 69 00 mov 0x69e700(%rip),%rdi # bba860 0.00 : 51c160: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c165: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c16c: e8 9f cc 27 00 callq 798e10 0.00 : 51c171: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ROLE; 0.00 : 51c177: c7 40 04 17 00 00 00 movl $0x17,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c17e: 49 89 c6 mov %rax,%r14 : } : | ALTER USER RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; 0.00 : 51c181: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c188: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51c18c: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51c190: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c193: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER USER RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; : n->newname = $6; 0.00 : 51c197: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLESPACE name RENAME TO name 0.00 : 51c19b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c1a2: e9 d9 57 ff ff jmpq 511980 : n->newname = $7; : $$ = (Node *)n; : } : | ALTER ROLE RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c1a7: 48 8b 3d b2 e6 69 00 mov 0x69e6b2(%rip),%rdi # bba860 0.00 : 51c1ae: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c1b3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c1ba: e8 51 cc 27 00 callq 798e10 0.00 : 51c1bf: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ROLE; 0.00 : 51c1c5: c7 40 04 17 00 00 00 movl $0x17,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c1cc: 49 89 c6 mov %rax,%r14 : } : | ALTER ROLE RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; 0.00 : 51c1cf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c1d6: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51c1da: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51c1de: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c1e1: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER ROLE RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; : n->newname = $6; 0.00 : 51c1e5: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER USER RoleId RENAME TO RoleId 0.00 : 51c1e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c1f0: e9 8b 57 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c1f5: 48 8b 3d 64 e6 69 00 mov 0x69e664(%rip),%rdi # bba860 0.00 : 51c1fc: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c201: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c208: e8 03 cc 27 00 callq 798e10 0.00 : 51c20d: 48 89 c3 mov %rax,%rbx 0.00 : 51c210: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_EVENT_TRIGGER; 0.00 : 51c216: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->object = list_make1(makeString($4)); 0.00 : 51c21d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newname = $7; : $$ = (Node *)n; 0.00 : 51c224: 49 89 de mov %rbx,%r14 : } : | ALTER EVENT TRIGGER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_EVENT_TRIGGER; : n->object = list_make1(makeString($4)); 0.00 : 51c227: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51c22b: e8 c0 34 0e 00 callq 5ff6f0 0.00 : 51c230: 31 f6 xor %esi,%esi 0.00 : 51c232: 48 89 c7 mov %rax,%rdi 0.00 : 51c235: e8 16 56 0c 00 callq 5e1850 0.00 : 51c23a: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $7; 0.00 : 51c23e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51c245: 48 8b 02 mov (%rdx),%rax 0.00 : 51c248: 48 89 43 30 mov %rax,0x30(%rbx) : $$ = (Node *)n; : } : | ALTER ROLE RoleId RENAME TO RoleId 0.00 : 51c24c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c253: e9 28 57 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TRIGGER name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c258: 48 8b 3d 01 e6 69 00 mov 0x69e601(%rip),%rdi # bba860 0.00 : 51c25f: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c264: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c26b: e8 a0 cb 27 00 callq 798e10 0.00 : 51c270: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TRIGGER; 0.00 : 51c276: c7 40 04 1d 00 00 00 movl $0x1d,0x4(%rax) : n->relation = $5; : n->subname = $3; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c27d: 49 89 c6 mov %rax,%r14 : } : | ALTER TRIGGER name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TRIGGER; : n->relation = $5; 0.00 : 51c280: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c287: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51c28b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $3; 0.00 : 51c28f: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51c293: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c297: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c29a: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TRIGGER; : n->relation = $5; : n->subname = $3; : n->newname = $8; 0.00 : 51c29e: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name RENAME TO name 0.00 : 51c2a2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c2a9: e9 d2 56 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER RULE name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c2ae: 48 8b 3d ab e5 69 00 mov 0x69e5ab(%rip),%rdi # bba860 0.00 : 51c2b5: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c2ba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c2c1: e8 4a cb 27 00 callq 798e10 0.00 : 51c2c6: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_RULE; 0.00 : 51c2cc: c7 40 04 18 00 00 00 movl $0x18,0x4(%rax) : n->relation = $5; : n->subname = $3; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c2d3: 49 89 c6 mov %rax,%r14 : } : | ALTER RULE name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_RULE; : n->relation = $5; 0.00 : 51c2d6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c2dd: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51c2e1: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $3; 0.00 : 51c2e5: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51c2e9: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c2ed: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c2f0: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_RULE; : n->relation = $5; : n->subname = $3; : n->newname = $8; 0.00 : 51c2f4: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TRIGGER name ON qualified_name RENAME TO name 0.00 : 51c2f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c2ff: e9 7c 56 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c304: 48 8b 3d 55 e5 69 00 mov 0x69e555(%rip),%rdi # bba860 0.00 : 51c30b: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c310: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c317: e8 f4 ca 27 00 callq 798e10 0.00 : 51c31c: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c322: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->subname = $9; : n->newname = $11; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c329: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; 0.00 : 51c32c: c7 40 08 0d 00 00 00 movl $0xd,0x8(%rax) : n->relation = $6; 0.00 : 51c333: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c33a: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51c33e: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $9; 0.00 : 51c342: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51c346: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $11; 0.00 : 51c34a: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c34d: c6 40 3c 01 movb $0x1,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->subname = $9; : n->newname = $11; 0.00 : 51c351: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER RULE name ON qualified_name RENAME TO name 0.00 : 51c355: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c35c: e9 1f 56 ff ff jmpq 511980 : n->newname = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c361: 48 8b 3d f8 e4 69 00 mov 0x69e4f8(%rip),%rdi # bba860 0.00 : 51c368: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c36d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c374: e8 97 ca 27 00 callq 798e10 0.00 : 51c379: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c37f: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->subname = $7; : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c386: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; 0.00 : 51c389: c7 40 08 0d 00 00 00 movl $0xd,0x8(%rax) : n->relation = $4; 0.00 : 51c390: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c397: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51c39b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $7; 0.00 : 51c39f: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51c3a3: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $9; 0.00 : 51c3a7: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c3aa: c6 40 3c 00 movb $0x0,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->subname = $7; : n->newname = $9; 0.00 : 51c3ae: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name 0.00 : 51c3b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c3b9: e9 c2 55 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c3be: 48 8b 3d 9b e4 69 00 mov 0x69e49b(%rip),%rdi # bba860 0.00 : 51c3c5: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c3ca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c3d1: e8 3a ca 27 00 callq 798e10 0.00 : 51c3d6: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_CONSTRAINT; 0.00 : 51c3dc: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->relationType = OBJECT_TABLE; : n->relation = $3; : n->subname = $6; : n->newname = $8; : $$ = (Node *)n; 0.00 : 51c3e3: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONSTRAINT; : n->relationType = OBJECT_TABLE; 0.00 : 51c3e6: c7 40 08 1b 00 00 00 movl $0x1b,0x8(%rax) : n->relation = $3; 0.00 : 51c3ed: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c3f4: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51c3f8: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $6; 0.00 : 51c3fc: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51c400: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c404: 48 8b 13 mov (%rbx),%rdx 0.00 : 51c407: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name 0.00 : 51c40b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c412: e9 69 55 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c417: 48 8b 3d 42 e4 69 00 mov 0x69e442(%rip),%rdi # bba860 0.00 : 51c41e: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c423: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c42a: e8 e1 c9 27 00 callq 798e10 0.00 : 51c42f: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c435: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_MATVIEW; : n->relation = $6; : n->subname = $9; : n->newname = $11; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c43c: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; 0.00 : 51c43f: c7 40 08 12 00 00 00 movl $0x12,0x8(%rax) : n->relation = $6; 0.00 : 51c446: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c44d: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51c451: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $9; 0.00 : 51c455: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51c459: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $11; 0.00 : 51c45d: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c460: c6 40 3c 01 movb $0x1,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; : n->relation = $6; : n->subname = $9; : n->newname = $11; 0.00 : 51c464: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name 0.00 : 51c468: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c46f: e9 0c 55 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c474: 48 8b 3d e5 e3 69 00 mov 0x69e3e5(%rip),%rdi # bba860 0.00 : 51c47b: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c480: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c487: e8 84 c9 27 00 callq 798e10 0.00 : 51c48c: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c492: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_MATVIEW; : n->relation = $4; : n->subname = $7; : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c499: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; 0.00 : 51c49c: c7 40 08 12 00 00 00 movl $0x12,0x8(%rax) : n->relation = $4; 0.00 : 51c4a3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c4aa: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51c4ae: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $7; 0.00 : 51c4b2: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51c4b6: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $9; 0.00 : 51c4ba: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c4bd: c6 40 3c 00 movb $0x0,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; : n->relation = $4; : n->subname = $7; : n->newname = $9; 0.00 : 51c4c1: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name 0.00 : 51c4c5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c4cc: e9 af 54 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c4d1: 48 8b 3d 88 e3 69 00 mov 0x69e388(%rip),%rdi # bba860 0.00 : 51c4d8: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c4dd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c4e4: e8 27 c9 27 00 callq 798e10 0.00 : 51c4e9: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c4ef: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_TABLE; : n->relation = $5; : n->subname = $8; : n->newname = $10; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c4f6: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; 0.00 : 51c4f9: c7 40 08 1b 00 00 00 movl $0x1b,0x8(%rax) : n->relation = $5; 0.00 : 51c500: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c507: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51c50b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $8; 0.00 : 51c50f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51c513: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $10; 0.00 : 51c517: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51c51a: c6 40 3c 01 movb $0x1,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; : n->relation = $5; : n->subname = $8; : n->newname = $10; 0.00 : 51c51e: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name 0.00 : 51c522: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c529: e9 52 54 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c52e: 48 8b 3d 2b e3 69 00 mov 0x69e32b(%rip),%rdi # bba860 0.00 : 51c535: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c53a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c541: e8 ca c8 27 00 callq 798e10 0.00 : 51c546: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c54c: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_TABLE; : n->relation = $3; : n->subname = $6; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c553: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; 0.00 : 51c556: c7 40 08 1b 00 00 00 movl $0x1b,0x8(%rax) : n->relation = $3; 0.00 : 51c55d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c564: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51c568: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $6; 0.00 : 51c56c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51c570: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c574: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c577: c6 40 3c 00 movb $0x0,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; : n->relation = $3; : n->subname = $6; : n->newname = $8; 0.00 : 51c57b: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name 0.00 : 51c57f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c586: e9 f5 53 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c58b: 48 8b 3d ce e2 69 00 mov 0x69e2ce(%rip),%rdi # bba860 0.00 : 51c592: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c597: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c59e: e8 6d c8 27 00 callq 798e10 0.00 : 51c5a3: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FOREIGN_TABLE; 0.00 : 51c5a9: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $6; : n->subname = NULL; : n->newname = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c5b0: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $6; 0.00 : 51c5b3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c5ba: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c5be: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c5c5: 00 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $6; 0.00 : 51c5c6: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $9; 0.00 : 51c5ca: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51c5cd: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->subname = NULL; : n->newname = $9; 0.00 : 51c5d1: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME opt_column name TO name 0.00 : 51c5d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c5dc: e9 9f 53 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c5e1: 48 8b 3d 78 e2 69 00 mov 0x69e278(%rip),%rdi # bba860 0.00 : 51c5e8: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c5ed: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c5f4: e8 17 c8 27 00 callq 798e10 0.00 : 51c5f9: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FOREIGN_TABLE; 0.00 : 51c5ff: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $4; : n->subname = NULL; : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c606: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $4; 0.00 : 51c609: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c610: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c614: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c61b: 00 : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $4; 0.00 : 51c61c: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $7; 0.00 : 51c620: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c623: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->subname = NULL; : n->newname = $7; 0.00 : 51c627: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name 0.00 : 51c62b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c632: e9 49 53 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c637: 48 8b 3d 22 e2 69 00 mov 0x69e222(%rip),%rdi # bba860 0.00 : 51c63e: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c643: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c64a: e8 c1 c7 27 00 callq 798e10 0.00 : 51c64f: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_INDEX; 0.00 : 51c655: c7 40 04 0f 00 00 00 movl $0xf,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c65c: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $5; 0.00 : 51c65f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c666: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c66a: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c671: 00 : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $5; 0.00 : 51c672: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c676: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c679: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c67d: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name 0.00 : 51c681: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c688: e9 f3 52 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER INDEX qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c68d: 48 8b 3d cc e1 69 00 mov 0x69e1cc(%rip),%rdi # bba860 0.00 : 51c694: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c699: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c6a0: e8 6b c7 27 00 callq 798e10 0.00 : 51c6a5: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_INDEX; 0.00 : 51c6ab: c7 40 04 0f 00 00 00 movl $0xf,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c6b2: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $3; 0.00 : 51c6b5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c6bc: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c6c0: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c6c7: 00 : } : | ALTER INDEX qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $3; 0.00 : 51c6c8: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c6cc: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c6cf: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c6d3: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c6d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c6de: e9 9d 52 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c6e3: 48 8b 3d 76 e1 69 00 mov 0x69e176(%rip),%rdi # bba860 0.00 : 51c6ea: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c6ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c6f6: e8 15 c7 27 00 callq 798e10 0.00 : 51c6fb: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_MATVIEW; 0.00 : 51c701: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $6; : n->subname = NULL; : n->newname = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c708: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $6; 0.00 : 51c70b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c712: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c716: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c71d: 00 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $6; 0.00 : 51c71e: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $9; 0.00 : 51c722: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51c725: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $6; : n->subname = NULL; : n->newname = $9; 0.00 : 51c729: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER INDEX qualified_name RENAME TO name 0.00 : 51c72d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c734: e9 47 52 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c739: 48 8b 3d 20 e1 69 00 mov 0x69e120(%rip),%rdi # bba860 0.00 : 51c740: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c745: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c74c: e8 bf c6 27 00 callq 798e10 0.00 : 51c751: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_MATVIEW; 0.00 : 51c757: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $4; : n->subname = NULL; : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c75e: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $4; 0.00 : 51c761: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c768: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c76c: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c773: 00 : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $4; 0.00 : 51c774: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $7; 0.00 : 51c778: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c77b: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $4; : n->subname = NULL; : n->newname = $7; 0.00 : 51c77f: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c783: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c78a: e9 f1 51 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c78f: 48 8b 3d ca e0 69 00 mov 0x69e0ca(%rip),%rdi # bba860 0.00 : 51c796: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c79b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c7a2: e8 69 c6 27 00 callq 798e10 0.00 : 51c7a7: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_VIEW; 0.00 : 51c7ad: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c7b4: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $5; 0.00 : 51c7b7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c7be: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c7c2: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c7c9: 00 : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $5; 0.00 : 51c7ca: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c7ce: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51c7d1: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c7d5: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name 0.00 : 51c7d9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c7e0: e9 9b 51 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c7e5: 48 8b 3d 74 e0 69 00 mov 0x69e074(%rip),%rdi # bba860 0.00 : 51c7ec: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c7f1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c7f8: e8 13 c6 27 00 callq 798e10 0.00 : 51c7fd: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_VIEW; 0.00 : 51c803: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c80a: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $3; 0.00 : 51c80d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c814: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c818: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c81f: 00 : } : | ALTER VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $3; 0.00 : 51c820: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c824: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c827: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c82b: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c82f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c836: e9 45 51 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c83b: 48 8b 3d 1e e0 69 00 mov 0x69e01e(%rip),%rdi # bba860 0.00 : 51c842: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c847: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c84e: e8 bd c5 27 00 callq 798e10 0.00 : 51c853: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_SEQUENCE; 0.00 : 51c859: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c860: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $5; 0.00 : 51c863: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c86a: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c86e: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c875: 00 : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $5; 0.00 : 51c876: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c87a: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c87d: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c881: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name RENAME TO name 0.00 : 51c885: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c88c: e9 ef 50 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c891: 48 8b 3d c8 df 69 00 mov 0x69dfc8(%rip),%rdi # bba860 0.00 : 51c898: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c89d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c8a4: e8 67 c5 27 00 callq 798e10 0.00 : 51c8a9: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_SEQUENCE; 0.00 : 51c8af: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c8b6: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $3; 0.00 : 51c8b9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c8c0: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c8c4: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c8cb: 00 : } : | ALTER SEQUENCE qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $3; 0.00 : 51c8cc: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c8d0: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c8d3: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c8d7: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c8db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c8e2: e9 99 50 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c8e7: 48 8b 3d 72 df 69 00 mov 0x69df72(%rip),%rdi # bba860 0.00 : 51c8ee: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c8f3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c8fa: e8 11 c5 27 00 callq 798e10 0.00 : 51c8ff: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TABLE; 0.00 : 51c905: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c90c: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $5; 0.00 : 51c90f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c916: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c91a: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c921: 00 : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $5; 0.00 : 51c922: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c926: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51c929: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c92d: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name RENAME TO name 0.00 : 51c931: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c938: e9 43 50 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c93d: 48 8b 3d 1c df 69 00 mov 0x69df1c(%rip),%rdi # bba860 0.00 : 51c944: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c949: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c950: e8 bb c4 27 00 callq 798e10 0.00 : 51c955: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TABLE; 0.00 : 51c95b: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c962: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $3; 0.00 : 51c965: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c96c: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c970: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c977: 00 : } : | ALTER TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $3; 0.00 : 51c978: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c97c: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c97f: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c983: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name 0.00 : 51c987: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c98e: e9 ed 4f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c993: 48 8b 3d c6 de 69 00 mov 0x69dec6(%rip),%rdi # bba860 0.00 : 51c99a: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c99f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c9a6: e8 65 c4 27 00 callq 798e10 0.00 : 51c9ab: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FOREIGN_SERVER; 0.00 : 51c9b1: c7 40 04 0c 00 00 00 movl $0xc,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c9b8: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51c9bb: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c9c2: 49 89 de mov %rbx,%r14 : } : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51c9c5: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51c9c9: e8 22 2d 0e 00 callq 5ff6f0 0.00 : 51c9ce: 31 f6 xor %esi,%esi 0.00 : 51c9d0: 48 89 c7 mov %rax,%rdi 0.00 : 51c9d3: e8 78 4e 0c 00 callq 5e1850 0.00 : 51c9d8: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $6; 0.00 : 51c9dc: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51c9e3: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51c9e6: c6 43 3c 00 movb $0x0,0x3c(%rbx) : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); : n->newname = $6; 0.00 : 51c9ea: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME TO name 0.00 : 51c9ee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c9f5: e9 86 4f ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SCHEMA name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c9fa: 48 8b 3d 5f de 69 00 mov 0x69de5f(%rip),%rdi # bba860 0.00 : 51ca01: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ca06: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ca0d: e8 fe c3 27 00 callq 798e10 0.00 : 51ca12: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_SCHEMA; 0.00 : 51ca18: c7 40 04 19 00 00 00 movl $0x19,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ca1f: 49 89 c6 mov %rax,%r14 : } : | ALTER SCHEMA name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SCHEMA; : n->subname = $3; 0.00 : 51ca22: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ca29: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ca2d: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51ca31: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51ca34: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER SCHEMA name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SCHEMA; : n->subname = $3; : n->newname = $6; 0.00 : 51ca38: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SERVER name RENAME TO name 0.00 : 51ca3c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ca43: e9 38 4f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ca48: 48 8b 3d 11 de 69 00 mov 0x69de11(%rip),%rdi # bba860 0.00 : 51ca4f: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ca54: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ca5b: e8 b0 c3 27 00 callq 798e10 0.00 : 51ca60: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_POLICY; 0.00 : 51ca66: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->relation = $7; : n->subname = $5; : n->newname = $10; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51ca6d: 49 89 c6 mov %rax,%r14 : } : | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $7; 0.00 : 51ca70: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ca77: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51ca7b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $5; 0.00 : 51ca7f: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51ca83: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $10; 0.00 : 51ca87: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51ca8a: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $7; : n->subname = $5; : n->newname = $10; 0.00 : 51ca8e: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SCHEMA name RENAME TO name 0.00 : 51ca92: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ca99: e9 e2 4e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ca9e: 48 8b 3d bb dd 69 00 mov 0x69ddbb(%rip),%rdi # bba860 0.00 : 51caa5: be 40 00 00 00 mov $0x40,%esi 0.00 : 51caaa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cab1: e8 5a c3 27 00 callq 798e10 0.00 : 51cab6: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_POLICY; 0.00 : 51cabc: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->relation = $5; : n->subname = $3; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cac3: 49 89 c6 mov %rax,%r14 : } : | ALTER POLICY name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $5; 0.00 : 51cac6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51cacd: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51cad1: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $3; 0.00 : 51cad5: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51cad9: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51cadd: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51cae0: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $5; : n->subname = $3; : n->newname = $8; 0.00 : 51cae4: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name 0.00 : 51cae8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51caef: e9 8c 4e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51caf4: 48 8b 3d 65 dd 69 00 mov 0x69dd65(%rip),%rdi # bba860 0.00 : 51cafb: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cb00: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cb07: e8 04 c3 27 00 callq 798e10 0.00 : 51cb0c: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_OPFAMILY; 0.00 : 51cb12: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cb19: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51cb1c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objarg = list_make1(makeString($6)); : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cb23: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51cb26: 48 8b 42 d8 mov -0x28(%rdx),%rax 0.00 : 51cb2a: 48 89 43 18 mov %rax,0x18(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51cb2e: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51cb32: e8 b9 2b 0e 00 callq 5ff6f0 0.00 : 51cb37: 31 f6 xor %esi,%esi 0.00 : 51cb39: 48 89 c7 mov %rax,%rdi 0.00 : 51cb3c: e8 0f 4d 0c 00 callq 5e1850 0.00 : 51cb41: 48 89 43 20 mov %rax,0x20(%rbx) : n->newname = $9; 0.00 : 51cb45: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51cb4c: 48 8b 01 mov (%rcx),%rax : n->missing_ok = false; 0.00 : 51cb4f: c6 43 3c 00 movb $0x0,0x3c(%rbx) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPFAMILY; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newname = $9; 0.00 : 51cb53: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY name ON qualified_name RENAME TO name 0.00 : 51cb57: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cb5e: e9 1d 4e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cb63: 48 8b 3d f6 dc 69 00 mov 0x69dcf6(%rip),%rdi # bba860 0.00 : 51cb6a: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cb6f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cb76: e8 95 c2 27 00 callq 798e10 0.00 : 51cb7b: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_OPCLASS; 0.00 : 51cb81: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cb88: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51cb8b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objarg = list_make1(makeString($6)); : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cb92: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51cb95: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 51cb99: 48 89 43 18 mov %rax,0x18(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51cb9d: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51cba1: e8 4a 2b 0e 00 callq 5ff6f0 0.00 : 51cba6: 31 f6 xor %esi,%esi 0.00 : 51cba8: 48 89 c7 mov %rax,%rdi 0.00 : 51cbab: e8 a0 4c 0c 00 callq 5e1850 0.00 : 51cbb0: 48 89 43 20 mov %rax,0x20(%rbx) : n->newname = $9; 0.00 : 51cbb4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51cbbb: 48 8b 06 mov (%rsi),%rax : n->missing_ok = false; 0.00 : 51cbbe: c6 43 3c 00 movb $0x0,0x3c(%rbx) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPCLASS; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newname = $9; 0.00 : 51cbc2: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name 0.00 : 51cbc6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cbcd: e9 ae 4d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cbd2: 48 8b 3d 87 dc 69 00 mov 0x69dc87(%rip),%rdi # bba860 0.00 : 51cbd9: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cbde: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cbe5: e8 26 c2 27 00 callq 798e10 0.00 : 51cbea: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_LANGUAGE; 0.00 : 51cbf0: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cbf7: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51cbfa: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cc01: 49 89 de mov %rbx,%r14 : } : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51cc04: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51cc08: e8 e3 2a 0e 00 callq 5ff6f0 0.00 : 51cc0d: 31 f6 xor %esi,%esi 0.00 : 51cc0f: 48 89 c7 mov %rax,%rdi 0.00 : 51cc12: e8 39 4c 0c 00 callq 5e1850 0.00 : 51cc17: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $7; 0.00 : 51cc1b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51cc22: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51cc25: c6 43 3c 00 movb $0x0,0x3c(%rbx) : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); : n->newname = $7; 0.00 : 51cc29: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name 0.00 : 51cc2d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cc34: e9 47 4d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER GROUP_P RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cc39: 48 8b 3d 20 dc 69 00 mov 0x69dc20(%rip),%rdi # bba860 0.00 : 51cc40: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cc45: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cc4c: e8 bf c1 27 00 callq 798e10 0.00 : 51cc51: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ROLE; 0.00 : 51cc57: c7 40 04 17 00 00 00 movl $0x17,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cc5e: 49 89 c6 mov %rax,%r14 : } : | ALTER GROUP_P RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; 0.00 : 51cc61: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51cc68: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51cc6c: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51cc70: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51cc73: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER GROUP_P RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; : n->newname = $6; 0.00 : 51cc77: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name RENAME TO name 0.00 : 51cc7b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cc82: e9 f9 4c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cc87: 48 8b 3d d2 db 69 00 mov 0x69dbd2(%rip),%rdi # bba860 0.00 : 51cc8e: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cc93: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cc9a: e8 71 c1 27 00 callq 798e10 0.00 : 51cc9f: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FUNCTION; 0.00 : 51cca5: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ccac: 49 89 c6 mov %rax,%r14 : } : | ALTER FUNCTION function_with_argtypes RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FUNCTION; : n->object = $3->funcname; 0.00 : 51ccaf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ccb6: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ccba: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51ccbe: 48 89 50 18 mov %rdx,0x18(%rax) : n->objarg = $3->funcargs; 0.00 : 51ccc2: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ccc6: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 51ccca: 48 89 50 20 mov %rdx,0x20(%rax) : n->newname = $6; 0.00 : 51ccce: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51ccd1: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FUNCTION; : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newname = $6; 0.00 : 51ccd5: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER GROUP_P RoleId RENAME TO RoleId 0.00 : 51ccd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cce0: e9 9b 4c ff ff jmpq 511980 : n->newname = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cce5: 48 8b 3d 74 db 69 00 mov 0x69db74(%rip),%rdi # bba860 0.00 : 51ccec: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ccf1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ccf8: e8 13 c1 27 00 callq 798e10 0.00 : 51ccfd: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FDW; 0.00 : 51cd03: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->newname = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cd0a: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51cd0d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cd14: 49 89 de mov %rbx,%r14 : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51cd17: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51cd1b: e8 d0 29 0e 00 callq 5ff6f0 0.00 : 51cd20: 31 f6 xor %esi,%esi 0.00 : 51cd22: 48 89 c7 mov %rax,%rdi 0.00 : 51cd25: e8 26 4b 0c 00 callq 5e1850 0.00 : 51cd2a: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $8; 0.00 : 51cd2e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51cd35: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51cd38: c6 43 3c 00 movb $0x0,0x3c(%rbx) : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FDW; : n->object = list_make1(makeString($5)); : n->newname = $8; 0.00 : 51cd3c: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes RENAME TO name 0.00 : 51cd40: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cd47: e9 34 4c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cd4c: 48 8b 3d 0d db 69 00 mov 0x69db0d(%rip),%rdi # bba860 0.00 : 51cd53: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cd58: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cd5f: e8 ac c0 27 00 callq 798e10 0.00 : 51cd64: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_CONSTRAINT; 0.00 : 51cd6a: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->relationType = OBJECT_DOMAIN; : n->object = $3; : n->subname = $6; : n->newname = $8; : $$ = (Node *)n; 0.00 : 51cd71: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONSTRAINT; : n->relationType = OBJECT_DOMAIN; 0.00 : 51cd74: c7 40 08 08 00 00 00 movl $0x8,0x8(%rax) : n->object = $3; 0.00 : 51cd7b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51cd82: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51cd86: 48 89 50 18 mov %rdx,0x18(%rax) : n->subname = $6; 0.00 : 51cd8a: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51cd8e: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51cd92: 48 8b 13 mov (%rbx),%rdx 0.00 : 51cd95: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name 0.00 : 51cd99: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cda0: e9 db 4b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cda5: 48 8b 3d b4 da 69 00 mov 0x69dab4(%rip),%rdi # bba860 0.00 : 51cdac: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cdb1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cdb8: e8 53 c0 27 00 callq 798e10 0.00 : 51cdbd: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_DOMAIN; 0.00 : 51cdc3: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cdca: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DOMAIN; : n->object = $3; 0.00 : 51cdcd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51cdd4: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51cdd8: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51cddc: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51cddf: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER DOMAIN_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DOMAIN; : n->object = $3; : n->newname = $6; 0.00 : 51cde3: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name 0.00 : 51cde7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cdee: e9 8d 4b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DATABASE database_name RENAME TO database_name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cdf3: 48 8b 3d 66 da 69 00 mov 0x69da66(%rip),%rdi # bba860 0.00 : 51cdfa: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cdff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ce06: e8 05 c0 27 00 callq 798e10 0.00 : 51ce0b: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_DATABASE; 0.00 : 51ce11: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ce18: 49 89 c6 mov %rax,%r14 : } : | ALTER DATABASE database_name RENAME TO database_name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DATABASE; : n->subname = $3; 0.00 : 51ce1b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ce22: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51ce26: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51ce2a: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51ce2d: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER DATABASE database_name RENAME TO database_name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DATABASE; : n->subname = $3; : n->newname = $6; 0.00 : 51ce31: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME TO name 0.00 : 51ce35: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ce3c: e9 3f 4b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ce41: 48 8b 3d 18 da 69 00 mov 0x69da18(%rip),%rdi # bba860 0.00 : 51ce48: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ce4d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ce54: e8 b7 bf 27 00 callq 798e10 0.00 : 51ce59: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_CONVERSION; 0.00 : 51ce5f: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ce66: 49 89 c6 mov %rax,%r14 : } : | ALTER CONVERSION_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONVERSION; : n->object = $3; 0.00 : 51ce69: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ce70: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ce74: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51ce78: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51ce7b: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER CONVERSION_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONVERSION; : n->object = $3; : n->newname = $6; 0.00 : 51ce7f: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DATABASE database_name RENAME TO database_name 0.00 : 51ce83: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ce8a: e9 f1 4a ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ce8f: 48 8b 3d ca d9 69 00 mov 0x69d9ca(%rip),%rdi # bba860 0.00 : 51ce96: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ce9b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cea2: e8 69 bf 27 00 callq 798e10 0.00 : 51cea7: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLLATION; 0.00 : 51cead: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ceb4: 49 89 c6 mov %rax,%r14 : } : | ALTER COLLATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLLATION; : n->object = $3; 0.00 : 51ceb7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51cebe: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51cec2: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51cec6: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51cec9: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER COLLATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLLATION; : n->object = $3; : n->newname = $6; 0.00 : 51cecd: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name RENAME TO name 0.00 : 51ced1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ced8: e9 a3 4a ff ff jmpq 511980 : * : *****************************************************************************/ : : RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cedd: 48 8b 3d 7c d9 69 00 mov 0x69d97c(%rip),%rdi # bba860 0.00 : 51cee4: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cee9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cef0: e8 1b bf 27 00 callq 798e10 0.00 : 51cef5: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_AGGREGATE; 0.00 : 51cefb: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : * : *****************************************************************************/ : : RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cf02: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51cf05: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objarg = extractAggrArgTypes($4); : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cf0c: 49 89 de mov %rbx,%r14 : : RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51cf0f: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 51cf13: 48 89 43 18 mov %rax,0x18(%rbx) : n->objarg = extractAggrArgTypes($4); 0.00 : 51cf17: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51cf1b: e8 b0 3b ff ff callq 510ad0 0.00 : 51cf20: 48 89 43 20 mov %rax,0x20(%rbx) : n->newname = $7; 0.00 : 51cf24: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51cf2b: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51cf2e: c6 43 3c 00 movb $0x0,0x3c(%rbx) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_AGGREGATE; : n->object = $3; : n->objarg = extractAggrArgTypes($4); : n->newname = $7; 0.00 : 51cf32: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name RENAME TO name 0.00 : 51cf36: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cf3d: e9 3e 4a ff ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER TABLESPACE name RESET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); 0.00 : 51cf42: 48 8b 3d 17 d9 69 00 mov 0x69d917(%rip),%rdi # bba860 0.00 : 51cf49: be 20 00 00 00 mov $0x20,%esi 0.00 : 51cf4e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cf55: e8 b6 be 27 00 callq 798e10 0.00 : 51cf5a: c7 00 12 03 00 00 movl $0x312,(%rax) : n->tablespacename = $3; 0.00 : 51cf60: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $5; : n->isReset = TRUE; : $$ = (Node *)n; 0.00 : 51cf67: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLESPACE name RESET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; 0.00 : 51cf6a: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51cf6e: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51cf72: 48 8b 13 mov (%rbx),%rdx : n->isReset = TRUE; 0.00 : 51cf75: c6 40 18 01 movb $0x1,0x18(%rax) : | ALTER TABLESPACE name RESET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; : n->options = $5; 0.00 : 51cf79: 48 89 50 10 mov %rdx,0x10(%rax) : n->isReset = TRUE; : $$ = (Node *)n; : } : ; 0.00 : 51cf7d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cf84: e9 f7 49 ff ff jmpq 511980 : : AlterTblSpcStmt: : ALTER TABLESPACE name SET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); 0.00 : 51cf89: 48 8b 3d d0 d8 69 00 mov 0x69d8d0(%rip),%rdi # bba860 0.00 : 51cf90: be 20 00 00 00 mov $0x20,%esi 0.00 : 51cf95: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cf9c: e8 6f be 27 00 callq 798e10 0.00 : 51cfa1: c7 00 12 03 00 00 movl $0x312,(%rax) : n->tablespacename = $3; 0.00 : 51cfa7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $5; : n->isReset = FALSE; : $$ = (Node *)n; 0.00 : 51cfae: 49 89 c6 mov %rax,%r14 : AlterTblSpcStmt: : ALTER TABLESPACE name SET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; 0.00 : 51cfb1: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51cfb5: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51cfb9: 48 8b 11 mov (%rcx),%rdx : n->isReset = FALSE; 0.00 : 51cfbc: c6 40 18 00 movb $0x0,0x18(%rax) : ALTER TABLESPACE name SET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; : n->options = $5; 0.00 : 51cfc0: 48 89 50 10 mov %rdx,0x10(%rax) : n->isReset = FALSE; : $$ = (Node *)n; : } : | ALTER TABLESPACE name RESET reloptions 0.00 : 51cfc4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cfcb: e9 b0 49 ff ff jmpq 511980 : INDEX { $$ = OBJECT_INDEX; } : | TABLE { $$ = OBJECT_TABLE; } : ; : : opt_force: FORCE { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } 0.00 : 51cfd0: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51cfd3: e9 a8 49 ff ff jmpq 511980 : reindex_type: : INDEX { $$ = OBJECT_INDEX; } : | TABLE { $$ = OBJECT_TABLE; } : ; : : opt_force: FORCE { $$ = TRUE; } 0.00 : 51cfd8: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = FALSE; } 0.00 : 51cfdb: e9 a0 49 ff ff jmpq 511980 : } : ; : : reindex_type: : INDEX { $$ = OBJECT_INDEX; } : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51cfe0: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51cfe7: ff ff ff 0.00 : 51cfea: 49 21 d6 and %rdx,%r14 0.00 : 51cfed: 49 83 ce 1b or $0x1b,%r14 : ; 0.00 : 51cff1: e9 8a 49 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : reindex_type: : INDEX { $$ = OBJECT_INDEX; } 0.00 : 51cff6: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51cffd: ff ff ff 0.00 : 51d000: 49 21 c6 and %rax,%r14 0.00 : 51d003: 49 83 ce 0f or $0xf,%r14 : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51d007: e9 74 49 ff ff jmpq 511980 : n->do_user = false; : $$ = (Node *)n; : } : | REINDEX DATABASE name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); 0.00 : 51d00c: 48 8b 3d 4d d8 69 00 mov 0x69d84d(%rip),%rdi # bba860 0.00 : 51d013: be 20 00 00 00 mov $0x20,%esi 0.00 : 51d018: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d01f: e8 ec bd 27 00 callq 798e10 0.00 : 51d024: c7 00 f0 02 00 00 movl $0x2f0,(%rax) : n->kind = OBJECT_DATABASE; 0.00 : 51d02a: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->name = $3; : n->relation = NULL; : n->do_system = true; : n->do_user = true; : $$ = (Node *)n; 0.00 : 51d031: 49 89 c6 mov %rax,%r14 : } : | REINDEX DATABASE name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d034: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d03b: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->relation = NULL; 0.00 : 51d03f: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51d046: 00 : n->do_system = true; 0.00 : 51d047: c6 40 18 01 movb $0x1,0x18(%rax) : n->do_user = true; 0.00 : 51d04b: c6 40 19 01 movb $0x1,0x19(%rax) : } : | REINDEX DATABASE name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d04f: 48 89 50 10 mov %rdx,0x10(%rax) : n->relation = NULL; : n->do_system = true; : n->do_user = true; : $$ = (Node *)n; : } : ; 0.00 : 51d053: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d05a: e9 21 49 ff ff jmpq 511980 : n->name = NULL; : $$ = (Node *)n; : } : | REINDEX SYSTEM_P name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); 0.00 : 51d05f: 48 8b 3d fa d7 69 00 mov 0x69d7fa(%rip),%rdi # bba860 0.00 : 51d066: be 20 00 00 00 mov $0x20,%esi 0.00 : 51d06b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d072: e8 99 bd 27 00 callq 798e10 0.00 : 51d077: c7 00 f0 02 00 00 movl $0x2f0,(%rax) : n->kind = OBJECT_DATABASE; 0.00 : 51d07d: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->name = $3; : n->relation = NULL; : n->do_system = true; : n->do_user = false; : $$ = (Node *)n; 0.00 : 51d084: 49 89 c6 mov %rax,%r14 : } : | REINDEX SYSTEM_P name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d087: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d08e: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->relation = NULL; 0.00 : 51d092: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51d099: 00 : n->do_system = true; 0.00 : 51d09a: c6 40 18 01 movb $0x1,0x18(%rax) : n->do_user = false; 0.00 : 51d09e: c6 40 19 00 movb $0x0,0x19(%rax) : } : | REINDEX SYSTEM_P name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d0a2: 48 89 50 10 mov %rdx,0x10(%rax) : n->relation = NULL; : n->do_system = true; : n->do_user = false; : $$ = (Node *)n; : } : | REINDEX DATABASE name opt_force 0.00 : 51d0a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d0ad: e9 ce 48 ff ff jmpq 511980 : *****************************************************************************/ : : ReindexStmt: : REINDEX reindex_type qualified_name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); 0.00 : 51d0b2: 48 8b 3d a7 d7 69 00 mov 0x69d7a7(%rip),%rdi # bba860 0.00 : 51d0b9: be 20 00 00 00 mov $0x20,%esi 0.00 : 51d0be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d0c5: e8 46 bd 27 00 callq 798e10 0.00 : 51d0ca: c7 00 f0 02 00 00 movl $0x2f0,(%rax) : n->kind = $2; 0.00 : 51d0d0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->relation = $3; : n->name = NULL; : $$ = (Node *)n; 0.00 : 51d0d7: 49 89 c6 mov %rax,%r14 : : ReindexStmt: : REINDEX reindex_type qualified_name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = $2; 0.00 : 51d0da: 8b 51 f0 mov -0x10(%rcx),%edx 0.00 : 51d0dd: 89 50 04 mov %edx,0x4(%rax) : n->relation = $3; 0.00 : 51d0e0: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->name = NULL; 0.00 : 51d0e4: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51d0eb: 00 : ReindexStmt: : REINDEX reindex_type qualified_name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = $2; : n->relation = $3; 0.00 : 51d0ec: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = NULL; : $$ = (Node *)n; : } : | REINDEX SYSTEM_P name opt_force 0.00 : 51d0f0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d0f7: e9 84 48 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_if_exists: IF_P EXISTS { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51d0fc: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51d0ff: e9 7c 48 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : ; : : opt_if_exists: IF_P EXISTS { $$ = TRUE; } 0.00 : 51d104: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51d107: e9 74 48 ff ff jmpq 511980 : ; : : : DropCastStmt: DROP CAST opt_if_exists '(' Typename AS Typename ')' opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d10c: 48 8b 3d 4d d7 69 00 mov 0x69d74d(%rip),%rdi # bba860 0.00 : 51d113: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d118: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d11f: e8 ec bc 27 00 callq 798e10 0.00 : 51d124: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_CAST; 0.00 : 51d12a: c7 40 18 02 00 00 00 movl $0x2,0x18(%rax) : n->objects = list_make1(list_make1($5)); 0.00 : 51d131: 31 f6 xor %esi,%esi 0.00 : 51d133: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ; : : : DropCastStmt: DROP CAST opt_if_exists '(' Typename AS Typename ')' opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d13a: 48 89 c3 mov %rax,%rbx : n->objects = list_make1(list_make1($5)); : n->arguments = list_make1(list_make1($7)); : n->behavior = $9; : n->missing_ok = $3; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d13d: 49 89 de mov %rbx,%r14 : : DropCastStmt: DROP CAST opt_if_exists '(' Typename AS Typename ')' opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_CAST; : n->objects = list_make1(list_make1($5)); 0.00 : 51d140: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 51d144: e8 07 47 0c 00 callq 5e1850 0.00 : 51d149: 31 f6 xor %esi,%esi 0.00 : 51d14b: 48 89 c7 mov %rax,%rdi 0.00 : 51d14e: e8 fd 46 0c 00 callq 5e1850 0.00 : 51d153: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1($7)); 0.00 : 51d157: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d15e: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51d162: 31 f6 xor %esi,%esi 0.00 : 51d164: e8 e7 46 0c 00 callq 5e1850 0.00 : 51d169: 31 f6 xor %esi,%esi 0.00 : 51d16b: 48 89 c7 mov %rax,%rdi 0.00 : 51d16e: e8 dd 46 0c 00 callq 5e1850 0.00 : 51d173: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $9; 0.00 : 51d177: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d17e: 8b 02 mov (%rdx),%eax 0.00 : 51d180: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = $3; 0.00 : 51d183: 0f b6 42 d0 movzbl -0x30(%rdx),%eax : n->concurrent = false; 0.00 : 51d187: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_CAST; : n->objects = list_make1(list_make1($5)); : n->arguments = list_make1(list_make1($7)); : n->behavior = $9; : n->missing_ok = $3; 0.00 : 51d18b: 88 43 20 mov %al,0x20(%rbx) : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d18e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d195: e9 e6 47 ff ff jmpq 511980 : } : ; : : cast_context: AS IMPLICIT_P { $$ = COERCION_IMPLICIT; } : | AS ASSIGNMENT { $$ = COERCION_ASSIGNMENT; } : | /*EMPTY*/ { $$ = COERCION_EXPLICIT; } 0.00 : 51d19a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51d1a1: ff ff ff 0.00 : 51d1a4: 49 21 d6 and %rdx,%r14 0.00 : 51d1a7: 49 83 ce 02 or $0x2,%r14 : ; 0.00 : 51d1ab: e9 d0 47 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : cast_context: AS IMPLICIT_P { $$ = COERCION_IMPLICIT; } : | AS ASSIGNMENT { $$ = COERCION_ASSIGNMENT; } 0.00 : 51d1b0: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51d1b7: ff ff ff 0.00 : 51d1ba: 49 21 c6 and %rax,%r14 0.00 : 51d1bd: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = COERCION_EXPLICIT; } 0.00 : 51d1c1: e9 ba 47 ff ff jmpq 511980 : n->inout = true; : $$ = (Node *)n; : } : ; : : cast_context: AS IMPLICIT_P { $$ = COERCION_IMPLICIT; } 0.00 : 51d1c6: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51d1cd: ff ff ff 0.00 : 51d1d0: 49 21 f6 and %rsi,%r14 : | AS ASSIGNMENT { $$ = COERCION_ASSIGNMENT; } 0.00 : 51d1d3: e9 a8 47 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' : WITH INOUT cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); 0.00 : 51d1d8: 48 8b 3d 81 d6 69 00 mov 0x69d681(%rip),%rdi # bba860 0.00 : 51d1df: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d1e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d1eb: e8 20 bc 27 00 callq 798e10 0.00 : 51d1f0: c7 00 f7 02 00 00 movl $0x2f7,(%rax) : n->sourcetype = $4; 0.00 : 51d1f6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; : n->inout = true; : $$ = (Node *)n; 0.00 : 51d1fd: 49 89 c6 mov %rax,%r14 : } : | CREATE CAST '(' Typename AS Typename ')' : WITH INOUT cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; 0.00 : 51d200: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 51d204: 48 89 50 08 mov %rdx,0x8(%rax) : n->targettype = $6; 0.00 : 51d208: 48 8b 53 e0 mov -0x20(%rbx),%rdx : n->func = NULL; 0.00 : 51d20c: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51d213: 00 : | CREATE CAST '(' Typename AS Typename ')' : WITH INOUT cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; 0.00 : 51d214: 48 89 50 10 mov %rdx,0x10(%rax) : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d218: 8b 13 mov (%rbx),%edx : n->inout = true; 0.00 : 51d21a: c6 40 24 01 movb $0x1,0x24(%rax) : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d21e: 89 50 20 mov %edx,0x20(%rax) : n->inout = true; : $$ = (Node *)n; : } : ; 0.00 : 51d221: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d228: e9 53 47 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' : WITHOUT FUNCTION cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); 0.00 : 51d22d: 48 8b 3d 2c d6 69 00 mov 0x69d62c(%rip),%rdi # bba860 0.00 : 51d234: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d239: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d240: e8 cb bb 27 00 callq 798e10 0.00 : 51d245: c7 00 f7 02 00 00 movl $0x2f7,(%rax) : n->sourcetype = $4; 0.00 : 51d24b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; : n->inout = false; : $$ = (Node *)n; 0.00 : 51d252: 49 89 c6 mov %rax,%r14 : } : | CREATE CAST '(' Typename AS Typename ')' : WITHOUT FUNCTION cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; 0.00 : 51d255: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 51d259: 48 89 50 08 mov %rdx,0x8(%rax) : n->targettype = $6; 0.00 : 51d25d: 48 8b 51 e0 mov -0x20(%rcx),%rdx : n->func = NULL; 0.00 : 51d261: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51d268: 00 : | CREATE CAST '(' Typename AS Typename ')' : WITHOUT FUNCTION cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; 0.00 : 51d269: 48 89 50 10 mov %rdx,0x10(%rax) : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d26d: 8b 11 mov (%rcx),%edx : n->inout = false; 0.00 : 51d26f: c6 40 24 00 movb $0x0,0x24(%rax) : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d273: 89 50 20 mov %edx,0x20(%rax) : n->inout = false; : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' 0.00 : 51d276: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d27d: e9 fe 46 ff ff jmpq 511980 : *****************************************************************************/ : : CreateCastStmt: CREATE CAST '(' Typename AS Typename ')' : WITH FUNCTION function_with_argtypes cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); 0.00 : 51d282: 48 8b 3d d7 d5 69 00 mov 0x69d5d7(%rip),%rdi # bba860 0.00 : 51d289: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d28e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d295: e8 76 bb 27 00 callq 798e10 0.00 : 51d29a: c7 00 f7 02 00 00 movl $0x2f7,(%rax) : n->sourcetype = $4; 0.00 : 51d2a0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->targettype = $6; : n->func = $10; : n->context = (CoercionContext) $11; : n->inout = false; : $$ = (Node *)n; 0.00 : 51d2a7: 49 89 c6 mov %rax,%r14 : : CreateCastStmt: CREATE CAST '(' Typename AS Typename ')' : WITH FUNCTION function_with_argtypes cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; 0.00 : 51d2aa: 48 8b 56 c8 mov -0x38(%rsi),%rdx 0.00 : 51d2ae: 48 89 50 08 mov %rdx,0x8(%rax) : n->targettype = $6; 0.00 : 51d2b2: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51d2b6: 48 89 50 10 mov %rdx,0x10(%rax) : n->func = $10; 0.00 : 51d2ba: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51d2be: 48 89 50 18 mov %rdx,0x18(%rax) : n->context = (CoercionContext) $11; 0.00 : 51d2c2: 8b 16 mov (%rsi),%edx : n->inout = false; 0.00 : 51d2c4: c6 40 24 00 movb $0x0,0x24(%rax) : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; : n->func = $10; : n->context = (CoercionContext) $11; 0.00 : 51d2c8: 89 50 20 mov %edx,0x20(%rax) : n->inout = false; : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' 0.00 : 51d2cb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d2d2: e9 a9 46 ff ff jmpq 511980 : { : $$ = makeDefElem("as", (Node *)makeString($1)); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51d2d7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d2de: 48 8b 3b mov (%rbx),%rdi 0.00 : 51d2e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d2e8: e8 03 24 0e 00 callq 5ff6f0 0.00 : 51d2ed: bf 5e 52 7c 00 mov $0x7c525e,%edi 0.00 : 51d2f2: 48 89 c6 mov %rax,%rsi 0.00 : 51d2f5: e8 06 42 0d 00 callq 5f1500 : } : ; 0.00 : 51d2fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("as", (Node *)makeString($1)); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51d301: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51d304: e9 77 46 ff ff jmpq 511980 : ; : : dostmt_opt_item: : Sconst : { : $$ = makeDefElem("as", (Node *)makeString($1)); 0.00 : 51d309: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d310: 48 8b 39 mov (%rcx),%rdi 0.00 : 51d313: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d31a: e8 d1 23 0e 00 callq 5ff6f0 0.00 : 51d31f: bf 4f b0 8d 00 mov $0x8db04f,%edi 0.00 : 51d324: 48 89 c6 mov %rax,%rsi 0.00 : 51d327: e8 d4 41 0d 00 callq 5f1500 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51d32c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : dostmt_opt_item: : Sconst : { : $$ = makeDefElem("as", (Node *)makeString($1)); 0.00 : 51d333: 49 89 c6 mov %rax,%r14 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51d336: e9 45 46 ff ff jmpq 511980 : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d33b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d342: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51d346: 48 8b 32 mov (%rdx),%rsi 0.00 : 51d349: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d350: e8 2b 4b 0c 00 callq 5e1e80 : ; 0.00 : 51d355: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d35c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d35f: e9 1c 46 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } 0.00 : 51d364: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d36b: 31 f6 xor %esi,%esi 0.00 : 51d36d: 48 8b 38 mov (%rax),%rdi 0.00 : 51d370: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d377: e8 d4 44 0c 00 callq 5e1850 : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d37c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } 0.00 : 51d383: 49 89 c6 mov %rax,%r14 : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d386: e9 f5 45 ff ff jmpq 511980 : * : *****************************************************************************/ : : DoStmt: DO dostmt_opt_list : { : DoStmt *n = makeNode(DoStmt); 0.00 : 51d38b: 48 8b 3d ce d4 69 00 mov 0x69d4ce(%rip),%rdi # bba860 0.00 : 51d392: be 10 00 00 00 mov $0x10,%esi 0.00 : 51d397: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d39e: e8 6d ba 27 00 callq 798e10 0.00 : 51d3a3: c7 00 d5 02 00 00 movl $0x2d5,(%rax) : n->args = $2; 0.00 : 51d3a9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = (Node *)n; 0.00 : 51d3b0: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DoStmt: DO dostmt_opt_list : { : DoStmt *n = makeNode(DoStmt); : n->args = $2; 0.00 : 51d3b3: 48 8b 13 mov (%rbx),%rdx 0.00 : 51d3b6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51d3ba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d3c1: e9 ba 45 ff ff jmpq 511980 : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } : | ColId '.' any_operator : { $$ = lcons(makeString($1), $3); } 0.00 : 51d3c6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d3cd: 48 8b 19 mov (%rcx),%rbx 0.00 : 51d3d0: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d3d4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d3db: e8 10 23 0e 00 callq 5ff6f0 0.00 : 51d3e0: 48 89 de mov %rbx,%rsi 0.00 : 51d3e3: 48 89 c7 mov %rax,%rdi 0.00 : 51d3e6: e8 65 44 0c 00 callq 5e1850 : ; 0.00 : 51d3eb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } : | ColId '.' any_operator : { $$ = lcons(makeString($1), $3); } 0.00 : 51d3f2: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d3f5: e9 86 45 ff ff jmpq 511980 : { $$ = list_make2($2, NULL); } : ; : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 51d3fa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d401: 48 8b 3a mov (%rdx),%rdi 0.00 : 51d404: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d40b: e8 e0 22 0e 00 callq 5ff6f0 0.00 : 51d410: 31 f6 xor %esi,%esi 0.00 : 51d412: 48 89 c7 mov %rax,%rdi 0.00 : 51d415: e8 36 44 0c 00 callq 5e1850 : | ColId '.' any_operator 0.00 : 51d41a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = list_make2($2, NULL); } : ; : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 51d421: 49 89 c6 mov %rax,%r14 : | ColId '.' any_operator 0.00 : 51d424: e9 57 45 ff ff jmpq 511980 : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } : | '(' Typename ',' NONE ')' /* right unary */ : { $$ = list_make2($2, NULL); } 0.00 : 51d429: 31 f6 xor %esi,%esi 0.00 : 51d42b: 31 ff xor %edi,%edi 0.00 : 51d42d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d434: e8 17 44 0c 00 callq 5e1850 0.00 : 51d439: 48 89 c6 mov %rax,%rsi 0.00 : 51d43c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d443: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51d447: e8 04 44 0c 00 callq 5e1850 : ; 0.00 : 51d44c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } : | '(' Typename ',' NONE ')' /* right unary */ : { $$ = list_make2($2, NULL); } 0.00 : 51d453: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d456: e9 25 45 ff ff jmpq 511980 : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } 0.00 : 51d45b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d462: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d466: 31 f6 xor %esi,%esi 0.00 : 51d468: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d46f: e8 dc 43 0c 00 callq 5e1850 0.00 : 51d474: 31 ff xor %edi,%edi 0.00 : 51d476: 48 89 c6 mov %rax,%rsi 0.00 : 51d479: e8 d2 43 0c 00 callq 5e1850 : | '(' Typename ',' NONE ')' /* right unary */ 0.00 : 51d47e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } 0.00 : 51d485: 49 89 c6 mov %rax,%r14 : | '(' Typename ',' NONE ')' /* right unary */ 0.00 : 51d488: e9 f3 44 ff ff jmpq 511980 : errmsg("missing argument"), : errhint("Use NONE to denote the missing argument of a unary operator."), : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } 0.00 : 51d48d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d494: 31 f6 xor %esi,%esi 0.00 : 51d496: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 51d49a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d4a1: e8 aa 43 0c 00 callq 5e1850 0.00 : 51d4a6: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 51d4aa: 48 89 c6 mov %rax,%rsi 0.00 : 51d4ad: e8 9e 43 0c 00 callq 5e1850 : | '(' NONE ',' Typename ')' /* left unary */ 0.00 : 51d4b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("missing argument"), : errhint("Use NONE to denote the missing argument of a unary operator."), : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } 0.00 : 51d4b9: 49 89 c6 mov %rax,%r14 : | '(' NONE ',' Typename ')' /* left unary */ 0.00 : 51d4bc: e9 bf 44 ff ff jmpq 511980 : ; : : oper_argtypes: : '(' Typename ')' : { : ereport(ERROR, 0.00 : 51d4c1: 45 31 c0 xor %r8d,%r8d 0.00 : 51d4c4: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 51d4c9: ba 91 1b 00 00 mov $0x1b91,%edx 0.00 : 51d4ce: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 51d4d3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 51d4d8: e8 e3 d5 25 00 callq 77aac0 0.00 : 51d4dd: 84 c0 test %al,%al 0.00 : 51d4df: 0f 84 c2 4a ff ff je 511fa7 0.00 : 51d4e5: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51d4ec: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 51d4f3: 8b 39 mov (%rcx),%edi 0.00 : 51d4f5: e8 a6 07 ff ff callq 50dca0 0.00 : 51d4fa: bf 80 a1 7c 00 mov $0x7ca180,%edi 0.00 : 51d4ff: 41 89 c5 mov %eax,%r13d 0.00 : 51d502: 31 c0 xor %eax,%eax 0.00 : 51d504: e8 97 e7 25 00 callq 77bca0 0.00 : 51d509: bf c2 96 7c 00 mov $0x7c96c2,%edi 0.00 : 51d50e: 89 c3 mov %eax,%ebx : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("VALUES in FROM must have an alias"), : errhint("For example, FROM (VALUES ...) [AS] foo."), : parser_errposition(@2))); : else : ereport(ERROR, 0.00 : 51d510: 31 c0 xor %eax,%eax 0.00 : 51d512: e8 89 f3 25 00 callq 77c8a0 0.00 : 51d517: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 51d51c: 41 89 c4 mov %eax,%r12d 0.00 : 51d51f: e8 2c f8 25 00 callq 77cd50 0.00 : 51d524: 44 89 e9 mov %r13d,%ecx 0.00 : 51d527: 89 c7 mov %eax,%edi 0.00 : 51d529: 89 da mov %ebx,%edx 0.00 : 51d52b: 44 89 e6 mov %r12d,%esi 0.00 : 51d52e: 31 c0 xor %eax,%eax 0.00 : 51d530: e8 ab d0 25 00 callq 77a5e0 0.00 : 51d535: e9 6d 4a ff ff jmpq 511fa7 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d53a: 48 8b 3d 1f d3 69 00 mov 0x69d31f(%rip),%rdi # bba860 0.00 : 51d541: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d546: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d54d: e8 be b8 27 00 callq 798e10 0.00 : 51d552: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_OPERATOR; 0.00 : 51d558: c7 40 18 14 00 00 00 movl $0x14,0x18(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d55f: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($5); 0.00 : 51d562: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d569: 31 f6 xor %esi,%esi : n->arguments = list_make1($6); : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d56b: 49 89 de mov %rbx,%r14 : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($5); 0.00 : 51d56e: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d572: e8 d9 42 0c 00 callq 5e1850 0.00 : 51d577: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1($6); 0.00 : 51d57b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d582: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d586: 31 f6 xor %esi,%esi 0.00 : 51d588: e8 c3 42 0c 00 callq 5e1850 0.00 : 51d58d: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $7; 0.00 : 51d591: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d598: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 51d59a: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51d59e: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($5); : n->arguments = list_make1($6); : n->behavior = $7; 0.00 : 51d5a2: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d5a5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d5ac: e9 cf 43 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d5b1: 48 8b 3d a8 d2 69 00 mov 0x69d2a8(%rip),%rdi # bba860 0.00 : 51d5b8: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d5bd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d5c4: e8 47 b8 27 00 callq 798e10 0.00 : 51d5c9: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_AGGREGATE; 0.00 : 51d5cf: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d5d6: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($5); 0.00 : 51d5d9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d5e0: 31 f6 xor %esi,%esi : n->arguments = list_make1(extractAggrArgTypes($6)); : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d5e2: 49 89 de mov %rbx,%r14 : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($5); 0.00 : 51d5e5: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d5e9: e8 62 42 0c 00 callq 5e1850 0.00 : 51d5ee: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractAggrArgTypes($6)); 0.00 : 51d5f2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d5f9: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d5fd: e8 ce 34 ff ff callq 510ad0 0.00 : 51d602: 31 f6 xor %esi,%esi 0.00 : 51d604: 48 89 c7 mov %rax,%rdi 0.00 : 51d607: e8 44 42 0c 00 callq 5e1850 0.00 : 51d60c: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $7; 0.00 : 51d610: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d617: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 51d619: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51d61d: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($5); : n->arguments = list_make1(extractAggrArgTypes($6)); : n->behavior = $7; 0.00 : 51d621: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d624: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d62b: e9 50 43 ff ff jmpq 511980 : ; : : RemoveAggrStmt: : DROP AGGREGATE func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d630: 48 8b 3d 29 d2 69 00 mov 0x69d229(%rip),%rdi # bba860 0.00 : 51d637: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d63c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d643: e8 c8 b7 27 00 callq 798e10 0.00 : 51d648: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_AGGREGATE; 0.00 : 51d64e: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : ; : : RemoveAggrStmt: : DROP AGGREGATE func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d655: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($3); 0.00 : 51d658: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = list_make1(extractAggrArgTypes($4)); : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d65f: 49 89 de mov %rbx,%r14 : RemoveAggrStmt: : DROP AGGREGATE func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($3); 0.00 : 51d662: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51d666: 31 f6 xor %esi,%esi 0.00 : 51d668: e8 e3 41 0c 00 callq 5e1850 0.00 : 51d66d: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractAggrArgTypes($4)); 0.00 : 51d671: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d678: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51d67c: e8 4f 34 ff ff callq 510ad0 0.00 : 51d681: 31 f6 xor %esi,%esi 0.00 : 51d683: 48 89 c7 mov %rax,%rdi 0.00 : 51d686: e8 c5 41 0c 00 callq 5e1850 0.00 : 51d68b: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $5; 0.00 : 51d68f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d696: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 51d698: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51d69c: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($3); : n->arguments = list_make1(extractAggrArgTypes($4)); : n->behavior = $5; 0.00 : 51d6a0: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior 0.00 : 51d6a3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d6aa: e9 d1 42 ff ff jmpq 511980 : ; : : RemoveOperStmt: : DROP OPERATOR any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d6af: 48 8b 3d aa d1 69 00 mov 0x69d1aa(%rip),%rdi # bba860 0.00 : 51d6b6: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d6bb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d6c2: e8 49 b7 27 00 callq 798e10 0.00 : 51d6c7: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_OPERATOR; 0.00 : 51d6cd: c7 40 18 14 00 00 00 movl $0x14,0x18(%rax) : ; : : RemoveOperStmt: : DROP OPERATOR any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d6d4: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($3); 0.00 : 51d6d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d6de: 31 f6 xor %esi,%esi : n->arguments = list_make1($4); : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d6e0: 49 89 de mov %rbx,%r14 : RemoveOperStmt: : DROP OPERATOR any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($3); 0.00 : 51d6e3: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d6e7: e8 64 41 0c 00 callq 5e1850 0.00 : 51d6ec: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1($4); 0.00 : 51d6f0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d6f7: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d6fb: 31 f6 xor %esi,%esi 0.00 : 51d6fd: e8 4e 41 0c 00 callq 5e1850 0.00 : 51d702: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $5; 0.00 : 51d706: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d70d: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 51d70f: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51d713: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($3); : n->arguments = list_make1($4); : n->behavior = $5; 0.00 : 51d717: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior 0.00 : 51d71a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d721: e9 5a 42 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP FUNCTION IF_P EXISTS func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d726: 48 8b 3d 33 d1 69 00 mov 0x69d133(%rip),%rdi # bba860 0.00 : 51d72d: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d732: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d739: e8 d2 b6 27 00 callq 798e10 0.00 : 51d73e: 48 89 c3 mov %rax,%rbx 0.00 : 51d741: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FUNCTION; 0.00 : 51d747: c7 40 18 0e 00 00 00 movl $0xe,0x18(%rax) : n->objects = list_make1($5); 0.00 : 51d74e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d755: 31 f6 xor %esi,%esi : n->arguments = list_make1(extractArgTypes($6)); : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d757: 49 89 de mov %rbx,%r14 : } : | DROP FUNCTION IF_P EXISTS func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($5); 0.00 : 51d75a: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51d75e: e8 ed 40 0c 00 callq 5e1850 0.00 : 51d763: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractArgTypes($6)); 0.00 : 51d767: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d76e: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51d772: e8 f9 32 ff ff callq 510a70 0.00 : 51d777: 31 f6 xor %esi,%esi 0.00 : 51d779: 48 89 c7 mov %rax,%rdi 0.00 : 51d77c: e8 cf 40 0c 00 callq 5e1850 0.00 : 51d781: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $7; 0.00 : 51d785: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d78c: 8b 01 mov (%rcx),%eax : n->missing_ok = true; 0.00 : 51d78e: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51d792: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($5); : n->arguments = list_make1(extractArgTypes($6)); : n->behavior = $7; 0.00 : 51d796: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d799: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d7a0: e9 db 41 ff ff jmpq 511980 : *****************************************************************************/ : : RemoveFuncStmt: : DROP FUNCTION func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d7a5: 48 8b 3d b4 d0 69 00 mov 0x69d0b4(%rip),%rdi # bba860 0.00 : 51d7ac: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d7b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d7b8: e8 53 b6 27 00 callq 798e10 0.00 : 51d7bd: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FUNCTION; 0.00 : 51d7c3: c7 40 18 0e 00 00 00 movl $0xe,0x18(%rax) : *****************************************************************************/ : : RemoveFuncStmt: : DROP FUNCTION func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d7ca: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($3); 0.00 : 51d7cd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d7d4: 31 f6 xor %esi,%esi : n->arguments = list_make1(extractArgTypes($4)); : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d7d6: 49 89 de mov %rbx,%r14 : RemoveFuncStmt: : DROP FUNCTION func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($3); 0.00 : 51d7d9: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51d7dd: e8 6e 40 0c 00 callq 5e1850 0.00 : 51d7e2: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractArgTypes($4)); 0.00 : 51d7e6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d7ed: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51d7f1: e8 7a 32 ff ff callq 510a70 0.00 : 51d7f6: 31 f6 xor %esi,%esi 0.00 : 51d7f8: 48 89 c7 mov %rax,%rdi 0.00 : 51d7fb: e8 50 40 0c 00 callq 5e1850 0.00 : 51d800: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $5; 0.00 : 51d804: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d80b: 8b 06 mov (%rsi),%eax : n->missing_ok = false; 0.00 : 51d80d: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51d811: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($3); : n->arguments = list_make1(extractArgTypes($4)); : n->behavior = $5; 0.00 : 51d815: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP FUNCTION IF_P EXISTS func_name func_args opt_drop_behavior 0.00 : 51d818: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d81f: e9 5c 41 ff ff jmpq 511980 : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d824: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d82b: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d82f: 48 8b 36 mov (%rsi),%rsi 0.00 : 51d832: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d839: e8 42 46 0c 00 callq 5e1e80 : ; 0.00 : 51d83e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d845: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d848: e9 33 41 ff ff jmpq 511980 : } : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } 0.00 : 51d84d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d854: 31 f6 xor %esi,%esi 0.00 : 51d856: 48 8b 3b mov (%rbx),%rdi 0.00 : 51d859: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d860: e8 eb 3f 0c 00 callq 5e1850 : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d865: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } 0.00 : 51d86c: 49 89 c6 mov %rax,%r14 : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d86f: e9 0c 41 ff ff jmpq 511980 : * : *****************************************************************************/ : AlterFunctionStmt: : ALTER FUNCTION function_with_argtypes alterfunc_opt_list opt_restrict : { : AlterFunctionStmt *n = makeNode(AlterFunctionStmt); 0.00 : 51d874: 48 8b 3d e5 cf 69 00 mov 0x69cfe5(%rip),%rdi # bba860 0.00 : 51d87b: be 18 00 00 00 mov $0x18,%esi 0.00 : 51d880: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d887: e8 84 b5 27 00 callq 798e10 0.00 : 51d88c: c7 00 d4 02 00 00 movl $0x2d4,(%rax) : n->func = $3; 0.00 : 51d892: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->actions = $4; : $$ = (Node *) n; 0.00 : 51d899: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : AlterFunctionStmt: : ALTER FUNCTION function_with_argtypes alterfunc_opt_list opt_restrict : { : AlterFunctionStmt *n = makeNode(AlterFunctionStmt); : n->func = $3; 0.00 : 51d89c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51d8a0: 48 89 50 08 mov %rdx,0x8(%rax) : n->actions = $4; 0.00 : 51d8a4: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51d8a8: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 51d8ac: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d8b3: e9 c8 40 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | table_func_column_list ',' table_func_column : { : $$ = lappend($1, $3); 0.00 : 51d8b8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d8bf: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51d8c3: 48 8b 32 mov (%rdx),%rsi 0.00 : 51d8c6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d8cd: e8 ae 45 0c 00 callq 5e1e80 : } : ; 0.00 : 51d8d2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | table_func_column_list ',' table_func_column : { : $$ = lappend($1, $3); 0.00 : 51d8d9: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51d8dc: e9 9f 40 ff ff jmpq 511980 : ; : : table_func_column_list: : table_func_column : { : $$ = list_make1($1); 0.00 : 51d8e1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d8e8: 31 f6 xor %esi,%esi 0.00 : 51d8ea: 48 8b 38 mov (%rax),%rdi 0.00 : 51d8ed: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d8f4: e8 57 3f 0c 00 callq 5e1850 : } : | table_func_column_list ',' table_func_column 0.00 : 51d8f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : table_func_column_list: : table_func_column : { : $$ = list_make1($1); 0.00 : 51d900: 49 89 c6 mov %rax,%r14 : } : | table_func_column_list ',' table_func_column 0.00 : 51d903: e9 78 40 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : table_func_column: param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51d908: 48 8b 3d 51 cf 69 00 mov 0x69cf51(%rip),%rdi # bba860 0.00 : 51d90f: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d914: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d91b: e8 f0 b4 27 00 callq 798e10 0.00 : 51d920: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $1; 0.00 : 51d926: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->argType = $2; : n->mode = FUNC_PARAM_TABLE; : n->defexpr = NULL; : $$ = n; 0.00 : 51d92d: 49 89 c6 mov %rax,%r14 : ; : : table_func_column: param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; 0.00 : 51d930: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51d934: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $2; 0.00 : 51d938: 48 8b 13 mov (%rbx),%rdx : n->mode = FUNC_PARAM_TABLE; 0.00 : 51d93b: c7 40 18 74 00 00 00 movl $0x74,0x18(%rax) : n->defexpr = NULL; 0.00 : 51d942: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51d949: 00 : : table_func_column: param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; : n->argType = $2; 0.00 : 51d94a: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = FUNC_PARAM_TABLE; : n->defexpr = NULL; : $$ = n; : } : ; 0.00 : 51d94e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d955: e9 26 40 ff ff jmpq 511980 : } : ; : : opt_definition: : WITH definition { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51d95a: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51d95d: e9 1e 40 ff ff jmpq 511980 : $$ = list_make2(makeString($1), makeString($3)); : } : ; : : opt_definition: : WITH definition { $$ = $2; } 0.00 : 51d962: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d969: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51d96c: e9 0f 40 ff ff jmpq 511980 : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } : | Sconst ',' Sconst : { : $$ = list_make2(makeString($1), makeString($3)); 0.00 : 51d971: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d978: 48 8b 38 mov (%rax),%rdi 0.00 : 51d97b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d982: e8 69 1d 0e 00 callq 5ff6f0 0.00 : 51d987: 31 f6 xor %esi,%esi 0.00 : 51d989: 48 89 c7 mov %rax,%rdi 0.00 : 51d98c: e8 bf 3e 0c 00 callq 5e1850 0.00 : 51d991: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d998: 48 89 c3 mov %rax,%rbx 0.00 : 51d99b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51d99f: e8 4c 1d 0e 00 callq 5ff6f0 0.00 : 51d9a4: 48 89 de mov %rbx,%rsi 0.00 : 51d9a7: 48 89 c7 mov %rax,%rdi 0.00 : 51d9aa: e8 a1 3e 0c 00 callq 5e1850 : } : ; 0.00 : 51d9af: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } : | Sconst ',' Sconst : { : $$ = list_make2(makeString($1), makeString($3)); 0.00 : 51d9b6: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51d9b9: e9 c2 3f ff ff jmpq 511980 : { : $$ = $1; : } : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } 0.00 : 51d9be: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d9c5: 48 8b 3e mov (%rsi),%rdi 0.00 : 51d9c8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d9cf: e8 1c 1d 0e 00 callq 5ff6f0 0.00 : 51d9d4: 31 f6 xor %esi,%esi 0.00 : 51d9d6: 48 89 c7 mov %rax,%rdi 0.00 : 51d9d9: e8 72 3e 0c 00 callq 5e1850 : | Sconst ',' Sconst 0.00 : 51d9de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = $1; : } : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } 0.00 : 51d9e5: 49 89 c6 mov %rax,%r14 : | Sconst ',' Sconst 0.00 : 51d9e8: e9 93 3f ff ff jmpq 511980 : { : $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); : } : | common_func_opt_item : { : $$ = $1; 0.00 : 51d9ed: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d9f4: 4c 8b 33 mov (%rbx),%r14 : } : ; 0.00 : 51d9f7: e9 84 3f ff ff jmpq 511980 : { : $$ = makeDefElem("language", (Node *)makeString($2)); : } : | WINDOW : { : $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); 0.00 : 51d9fc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51da01: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da08: e8 43 1d 0e 00 callq 5ff750 0.00 : 51da0d: bf bb 96 7c 00 mov $0x7c96bb,%edi 0.00 : 51da12: 48 89 c6 mov %rax,%rsi 0.00 : 51da15: e8 e6 3a 0d 00 callq 5f1500 : } : | common_func_opt_item 0.00 : 51da1a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("language", (Node *)makeString($2)); : } : | WINDOW : { : $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); 0.00 : 51da21: 49 89 c6 mov %rax,%r14 : } : | common_func_opt_item 0.00 : 51da24: e9 57 3f ff ff jmpq 511980 : { : $$ = makeDefElem("as", (Node *)$2); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51da29: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51da30: 48 8b 39 mov (%rcx),%rdi 0.00 : 51da33: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da3a: e8 b1 1c 0e 00 callq 5ff6f0 0.00 : 51da3f: bf 5e 52 7c 00 mov $0x7c525e,%edi 0.00 : 51da44: 48 89 c6 mov %rax,%rsi 0.00 : 51da47: e8 b4 3a 0d 00 callq 5f1500 : } : | WINDOW 0.00 : 51da4c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("as", (Node *)$2); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51da53: 49 89 c6 mov %rax,%r14 : } : | WINDOW 0.00 : 51da56: e9 25 3f ff ff jmpq 511980 : ; : : createfunc_opt_item: : AS func_as : { : $$ = makeDefElem("as", (Node *)$2); 0.00 : 51da5b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51da62: bf 4f b0 8d 00 mov $0x8db04f,%edi 0.00 : 51da67: 48 8b 32 mov (%rdx),%rsi 0.00 : 51da6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da71: e8 8a 3a 0d 00 callq 5f1500 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51da76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : createfunc_opt_item: : AS func_as : { : $$ = makeDefElem("as", (Node *)$2); 0.00 : 51da7d: 49 89 c6 mov %rax,%r14 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51da80: e9 fb 3e ff ff jmpq 511980 : $$ = makeDefElem("rows", (Node *)$2); : } : | FunctionSetResetClause : { : /* we abuse the normal content of a DefElem here */ : $$ = makeDefElem("set", (Node *)$1); 0.00 : 51da85: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51da8c: bf f8 69 7c 00 mov $0x7c69f8,%edi 0.00 : 51da91: 48 8b 30 mov (%rax),%rsi 0.00 : 51da94: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da9b: e8 60 3a 0d 00 callq 5f1500 : } : ; 0.00 : 51daa0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("rows", (Node *)$2); : } : | FunctionSetResetClause : { : /* we abuse the normal content of a DefElem here */ : $$ = makeDefElem("set", (Node *)$1); 0.00 : 51daa7: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51daaa: e9 d1 3e ff ff jmpq 511980 : { : $$ = makeDefElem("cost", (Node *)$2); : } : | ROWS NumericOnly : { : $$ = makeDefElem("rows", (Node *)$2); 0.00 : 51daaf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51dab6: bf b6 96 7c 00 mov $0x7c96b6,%edi 0.00 : 51dabb: 48 8b 33 mov (%rbx),%rsi 0.00 : 51dabe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dac5: e8 36 3a 0d 00 callq 5f1500 : } : | FunctionSetResetClause 0.00 : 51daca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cost", (Node *)$2); : } : | ROWS NumericOnly : { : $$ = makeDefElem("rows", (Node *)$2); 0.00 : 51dad1: 49 89 c6 mov %rax,%r14 : } : | FunctionSetResetClause 0.00 : 51dad4: e9 a7 3e ff ff jmpq 511980 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); : } : | COST NumericOnly : { : $$ = makeDefElem("cost", (Node *)$2); 0.00 : 51dad9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51dae0: bf a7 f9 7a 00 mov $0x7af9a7,%edi 0.00 : 51dae5: 48 8b 31 mov (%rcx),%rsi 0.00 : 51dae8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51daef: e8 0c 3a 0d 00 callq 5f1500 : } : | ROWS NumericOnly 0.00 : 51daf4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); : } : | COST NumericOnly : { : $$ = makeDefElem("cost", (Node *)$2); 0.00 : 51dafb: 49 89 c6 mov %rax,%r14 : } : | ROWS NumericOnly 0.00 : 51dafe: e9 7d 3e ff ff jmpq 511980 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); : } : | NOT LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); 0.00 : 51db03: 31 ff xor %edi,%edi 0.00 : 51db05: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db0c: e8 3f 1c 0e 00 callq 5ff750 0.00 : 51db11: bf ac 96 7c 00 mov $0x7c96ac,%edi 0.00 : 51db16: 48 89 c6 mov %rax,%rsi 0.00 : 51db19: e8 e2 39 0d 00 callq 5f1500 : } : | COST NumericOnly 0.00 : 51db1e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); : } : | NOT LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); 0.00 : 51db25: 49 89 c6 mov %rax,%r14 : } : | COST NumericOnly 0.00 : 51db28: e9 53 3e ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); 0.00 : 51db2d: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51db32: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db39: e8 12 1c 0e 00 callq 5ff750 0.00 : 51db3e: bf ac 96 7c 00 mov $0x7c96ac,%edi 0.00 : 51db43: 48 89 c6 mov %rax,%rsi 0.00 : 51db46: e8 b5 39 0d 00 callq 5f1500 : } : | NOT LEAKPROOF 0.00 : 51db4b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); 0.00 : 51db52: 49 89 c6 mov %rax,%r14 : } : | NOT LEAKPROOF 0.00 : 51db55: e9 26 3e ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51db5a: 31 ff xor %edi,%edi 0.00 : 51db5c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db63: e8 e8 1b 0e 00 callq 5ff750 0.00 : 51db68: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51db6d: 48 89 c6 mov %rax,%rsi 0.00 : 51db70: e8 8b 39 0d 00 callq 5f1500 : } : | LEAKPROOF 0.00 : 51db75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51db7c: 49 89 c6 mov %rax,%r14 : } : | LEAKPROOF 0.00 : 51db7f: e9 fc 3d ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51db84: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51db89: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db90: e8 bb 1b 0e 00 callq 5ff750 0.00 : 51db95: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51db9a: 48 89 c6 mov %rax,%rsi 0.00 : 51db9d: e8 5e 39 0d 00 callq 5f1500 : } : | SECURITY INVOKER 0.00 : 51dba2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51dba9: 49 89 c6 mov %rax,%r14 : } : | SECURITY INVOKER 0.00 : 51dbac: e9 cf 3d ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | EXTERNAL SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51dbb1: 31 ff xor %edi,%edi 0.00 : 51dbb3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dbba: e8 91 1b 0e 00 callq 5ff750 0.00 : 51dbbf: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51dbc4: 48 89 c6 mov %rax,%rsi 0.00 : 51dbc7: e8 34 39 0d 00 callq 5f1500 : } : | SECURITY DEFINER 0.00 : 51dbcc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | EXTERNAL SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51dbd3: 49 89 c6 mov %rax,%r14 : } : | SECURITY DEFINER 0.00 : 51dbd6: e9 a5 3d ff ff jmpq 511980 : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); : } : | EXTERNAL SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51dbdb: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51dbe0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dbe7: e8 64 1b 0e 00 callq 5ff750 0.00 : 51dbec: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51dbf1: 48 89 c6 mov %rax,%rsi 0.00 : 51dbf4: e8 07 39 0d 00 callq 5f1500 : } : | EXTERNAL SECURITY INVOKER 0.00 : 51dbf9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); : } : | EXTERNAL SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51dc00: 49 89 c6 mov %rax,%r14 : } : | EXTERNAL SECURITY INVOKER 0.00 : 51dc03: e9 78 3d ff ff jmpq 511980 : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); : } : | VOLATILE : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); 0.00 : 51dc08: bf a3 96 7c 00 mov $0x7c96a3,%edi 0.00 : 51dc0d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc14: e8 d7 1a 0e 00 callq 5ff6f0 0.00 : 51dc19: bf 91 96 7c 00 mov $0x7c9691,%edi 0.00 : 51dc1e: 48 89 c6 mov %rax,%rsi 0.00 : 51dc21: e8 da 38 0d 00 callq 5f1500 : } : | EXTERNAL SECURITY DEFINER 0.00 : 51dc26: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); : } : | VOLATILE : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); 0.00 : 51dc2d: 49 89 c6 mov %rax,%r14 : } : | EXTERNAL SECURITY DEFINER 0.00 : 51dc30: e9 4b 3d ff ff jmpq 511980 : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); : } : | STABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); 0.00 : 51dc35: bf 9c 96 7c 00 mov $0x7c969c,%edi 0.00 : 51dc3a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc41: e8 aa 1a 0e 00 callq 5ff6f0 0.00 : 51dc46: bf 91 96 7c 00 mov $0x7c9691,%edi 0.00 : 51dc4b: 48 89 c6 mov %rax,%rsi 0.00 : 51dc4e: e8 ad 38 0d 00 callq 5f1500 : } : | VOLATILE 0.00 : 51dc53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); : } : | STABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); 0.00 : 51dc5a: 49 89 c6 mov %rax,%r14 : } : | VOLATILE 0.00 : 51dc5d: e9 1e 3d ff ff jmpq 511980 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | IMMUTABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); 0.00 : 51dc62: bf 87 96 7c 00 mov $0x7c9687,%edi 0.00 : 51dc67: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc6e: e8 7d 1a 0e 00 callq 5ff6f0 0.00 : 51dc73: bf 91 96 7c 00 mov $0x7c9691,%edi 0.00 : 51dc78: 48 89 c6 mov %rax,%rsi 0.00 : 51dc7b: e8 80 38 0d 00 callq 5f1500 : } : | STABLE 0.00 : 51dc80: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | IMMUTABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); 0.00 : 51dc87: 49 89 c6 mov %rax,%r14 : } : | STABLE 0.00 : 51dc8a: e9 f1 3c ff ff jmpq 511980 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | STRICT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dc8f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51dc94: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc9b: e8 b0 1a 0e 00 callq 5ff750 0.00 : 51dca0: bf 84 f0 86 00 mov $0x86f084,%edi 0.00 : 51dca5: 48 89 c6 mov %rax,%rsi 0.00 : 51dca8: e8 53 38 0d 00 callq 5f1500 : } : | IMMUTABLE 0.00 : 51dcad: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | STRICT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dcb4: 49 89 c6 mov %rax,%r14 : } : | IMMUTABLE 0.00 : 51dcb7: e9 c4 3c ff ff jmpq 511980 : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); : } : | RETURNS NULL_P ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dcbc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51dcc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dcc8: e8 83 1a 0e 00 callq 5ff750 0.00 : 51dccd: bf 84 f0 86 00 mov $0x86f084,%edi 0.00 : 51dcd2: 48 89 c6 mov %rax,%rsi 0.00 : 51dcd5: e8 26 38 0d 00 callq 5f1500 : } : | STRICT_P 0.00 : 51dcda: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); : } : | RETURNS NULL_P ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dce1: 49 89 c6 mov %rax,%r14 : } : | STRICT_P 0.00 : 51dce4: e9 97 3c ff ff jmpq 511980 : * Options common to both CREATE FUNCTION and ALTER FUNCTION : */ : common_func_opt_item: : CALLED ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); 0.00 : 51dce9: 31 ff xor %edi,%edi 0.00 : 51dceb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dcf2: e8 59 1a 0e 00 callq 5ff750 0.00 : 51dcf7: bf 84 f0 86 00 mov $0x86f084,%edi 0.00 : 51dcfc: 48 89 c6 mov %rax,%rsi 0.00 : 51dcff: e8 fc 37 0d 00 callq 5f1500 : } : | RETURNS NULL_P ON NULL_P INPUT_P 0.00 : 51dd04: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Options common to both CREATE FUNCTION and ALTER FUNCTION : */ : common_func_opt_item: : CALLED ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); 0.00 : 51dd0b: 49 89 c6 mov %rax,%r14 : } : | RETURNS NULL_P ON NULL_P INPUT_P 0.00 : 51dd0e: e9 6d 3c ff ff jmpq 511980 : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd13: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51dd1a: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51dd1e: 48 8b 32 mov (%rdx),%rsi 0.00 : 51dd21: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd28: e8 53 41 0c 00 callq 5e1e80 : ; 0.00 : 51dd2d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd34: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51dd37: e9 44 3c ff ff jmpq 511980 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } 0.00 : 51dd3c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51dd43: 31 f6 xor %esi,%esi 0.00 : 51dd45: 48 8b 38 mov (%rax),%rdi 0.00 : 51dd48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd4f: e8 fc 3a 0c 00 callq 5e1850 : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } 0.00 : 51dd5b: 49 89 c6 mov %rax,%r14 : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd5e: e9 1d 3c ff ff jmpq 511980 : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51dd63: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51dd6a: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51dd6e: 48 8b 33 mov (%rbx),%rsi 0.00 : 51dd71: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd78: e8 03 41 0c 00 callq 5e1e80 : ; 0.00 : 51dd7d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51dd84: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51dd87: e9 f4 3b ff ff jmpq 511980 : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } 0.00 : 51dd8c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51dd93: 31 f6 xor %esi,%esi 0.00 : 51dd95: 48 8b 39 mov (%rcx),%rdi 0.00 : 51dd98: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd9f: e8 ac 3a 0c 00 callq 5e1850 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51dda4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } 0.00 : 51ddab: 49 89 c6 mov %rax,%r14 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51ddae: e9 cd 3b ff ff jmpq 511980 : $$ = list_make2($4, makeInteger(0)); : } : | '(' aggr_args_list ORDER BY aggr_args_list ')' : { : /* this is the only case requiring consistency checking */ : $$ = makeOrderedSetArgs($2, $5, yyscanner); 0.00 : 51ddb3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : STATIC_IF_INLINE ListCell * : list_tail(List *l) : { : return l ? l->tail : NULL; 0.00 : 51ddba: 31 c0 xor %eax,%eax 0.00 : 51ddbc: 4c 8b 6a e0 mov -0x20(%rdx),%r13 0.00 : 51ddc0: 4c 8b 62 f8 mov -0x8(%rdx),%r12 0.00 : 51ddc4: 4d 85 ed test %r13,%r13 0.00 : 51ddc7: 74 04 je 51ddcd 0.00 : 51ddc9: 49 8b 45 10 mov 0x10(%r13),%rax : */ : static List * : makeOrderedSetArgs(List *directargs, List *orderedargs, : core_yyscan_t yyscanner) : { : FunctionParameter *lastd = (FunctionParameter *) llast(directargs); 0.00 : 51ddcd: 48 8b 10 mov (%rax),%rdx : int ndirectargs; : : /* No restriction unless last direct arg is VARIADIC */ : if (lastd->mode == FUNC_PARAM_VARIADIC) 0.00 : 51ddd0: 83 7a 18 76 cmpl $0x76,0x18(%rdx) 0.00 : 51ddd4: 0f 84 33 b5 00 00 je 52930d : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 51ddda: 31 c0 xor %eax,%eax 0.00 : 51dddc: 4d 85 ed test %r13,%r13 0.00 : 51dddf: 74 04 je 51dde5 0.00 : 51dde1: 41 8b 45 04 mov 0x4(%r13),%eax : } : : /* don't merge into the next line, as list_concat changes directargs */ : ndirectargs = list_length(directargs); : : return list_make2(list_concat(directargs, orderedargs), 0.00 : 51dde5: 48 63 f8 movslq %eax,%rdi 0.00 : 51dde8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ddef: e8 5c 19 0e 00 callq 5ff750 0.00 : 51ddf4: 31 f6 xor %esi,%esi 0.00 : 51ddf6: 48 89 c7 mov %rax,%rdi 0.00 : 51ddf9: e8 52 3a 0c 00 callq 5e1850 0.00 : 51ddfe: 4c 89 e6 mov %r12,%rsi 0.00 : 51de01: 48 89 c3 mov %rax,%rbx 0.00 : 51de04: 4c 89 ef mov %r13,%rdi 0.00 : 51de07: e8 b4 47 0c 00 callq 5e25c0 0.00 : 51de0c: 48 89 de mov %rbx,%rsi 0.00 : 51de0f: 48 89 c7 mov %rax,%rdi 0.00 : 51de12: e8 39 3a 0c 00 callq 5e1850 : | '(' aggr_args_list ORDER BY aggr_args_list ')' : { : /* this is the only case requiring consistency checking */ : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; 0.00 : 51de17: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : : /* don't merge into the next line, as list_concat changes directargs */ : ndirectargs = list_length(directargs); : : return list_make2(list_concat(directargs, orderedargs), 0.00 : 51de1e: 49 89 c6 mov %rax,%r14 : | '(' aggr_args_list ORDER BY aggr_args_list ')' : { : /* this is the only case requiring consistency checking */ : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; 0.00 : 51de21: e9 5a 3b ff ff jmpq 511980 : { : $$ = list_make2($2, makeInteger(-1)); : } : | '(' ORDER BY aggr_args_list ')' : { : $$ = list_make2($4, makeInteger(0)); 0.00 : 51de26: 31 ff xor %edi,%edi 0.00 : 51de28: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51de2f: e8 1c 19 0e 00 callq 5ff750 0.00 : 51de34: 31 f6 xor %esi,%esi 0.00 : 51de36: 48 89 c7 mov %rax,%rdi 0.00 : 51de39: e8 12 3a 0c 00 callq 5e1850 0.00 : 51de3e: 48 89 c6 mov %rax,%rsi 0.00 : 51de41: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51de48: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51de4c: e8 ff 39 0c 00 callq 5e1850 : } : | '(' aggr_args_list ORDER BY aggr_args_list ')' 0.00 : 51de51: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make2($2, makeInteger(-1)); : } : | '(' ORDER BY aggr_args_list ')' : { : $$ = list_make2($4, makeInteger(0)); 0.00 : 51de58: 49 89 c6 mov %rax,%r14 : } : | '(' aggr_args_list ORDER BY aggr_args_list ')' 0.00 : 51de5b: e9 20 3b ff ff jmpq 511980 : { : $$ = list_make2(NIL, makeInteger(-1)); : } : | '(' aggr_args_list ')' : { : $$ = list_make2($2, makeInteger(-1)); 0.00 : 51de60: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi 0.00 : 51de67: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51de6e: e8 dd 18 0e 00 callq 5ff750 0.00 : 51de73: 31 f6 xor %esi,%esi 0.00 : 51de75: 48 89 c7 mov %rax,%rdi 0.00 : 51de78: e8 d3 39 0c 00 callq 5e1850 0.00 : 51de7d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51de84: 48 89 c6 mov %rax,%rsi 0.00 : 51de87: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 51de8b: e8 c0 39 0c 00 callq 5e1850 : } : | '(' ORDER BY aggr_args_list ')' 0.00 : 51de90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make2(NIL, makeInteger(-1)); : } : | '(' aggr_args_list ')' : { : $$ = list_make2($2, makeInteger(-1)); 0.00 : 51de97: 49 89 c6 mov %rax,%r14 : } : | '(' ORDER BY aggr_args_list ')' 0.00 : 51de9a: e9 e1 3a ff ff jmpq 511980 : * on existing aggregates, we can just apply extractArgTypes to the first : * sublist. : */ : aggr_args: '(' '*' ')' : { : $$ = list_make2(NIL, makeInteger(-1)); 0.00 : 51de9f: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi 0.00 : 51dea6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dead: e8 9e 18 0e 00 callq 5ff750 0.00 : 51deb2: 31 f6 xor %esi,%esi 0.00 : 51deb4: 48 89 c7 mov %rax,%rdi 0.00 : 51deb7: e8 94 39 0c 00 callq 5e1850 0.00 : 51debc: 31 ff xor %edi,%edi 0.00 : 51debe: 48 89 c6 mov %rax,%rsi 0.00 : 51dec1: e8 8a 39 0c 00 callq 5e1850 : } : | '(' aggr_args_list ')' 0.00 : 51dec6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * on existing aggregates, we can just apply extractArgTypes to the first : * sublist. : */ : aggr_args: '(' '*' ')' : { : $$ = list_make2(NIL, makeInteger(-1)); 0.00 : 51decd: 49 89 c6 mov %rax,%r14 : } : | '(' aggr_args_list ')' 0.00 : 51ded0: e9 ab 3a ff ff jmpq 511980 : ; : : /* Aggregate args can be most things that function args can be */ : aggr_arg: func_arg : { : if (!($1->mode == FUNC_PARAM_IN || 0.00 : 51ded5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51dedc: 48 8b 02 mov (%rdx),%rax 0.00 : 51dedf: 8b 50 18 mov 0x18(%rax),%edx 0.00 : 51dee2: 83 fa 69 cmp $0x69,%edx 0.00 : 51dee5: 0f 84 48 b2 00 00 je 529133 0.00 : 51deeb: 83 fa 76 cmp $0x76,%edx 0.00 : 51deee: 0f 84 3f b2 00 00 je 529133 : $1->mode == FUNC_PARAM_VARIADIC)) : ereport(ERROR, 0.00 : 51def4: 45 31 c0 xor %r8d,%r8d 0.00 : 51def7: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 51defc: ba 5e 1a 00 00 mov $0x1a5e,%edx 0.00 : 51df01: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 51df06: bf 14 00 00 00 mov $0x14,%edi 0.00 : 51df0b: e8 b0 cb 25 00 callq 77aac0 0.00 : 51df10: 84 c0 test %al,%al 0.00 : 51df12: 0f 84 8f 40 ff ff je 511fa7 0.00 : 51df18: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51df1f: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 51df26: 8b 39 mov (%rcx),%edi 0.00 : 51df28: e8 73 fd fe ff callq 50dca0 0.00 : 51df2d: bf d8 a0 7c 00 mov $0x7ca0d8,%edi 0.00 : 51df32: 41 89 c4 mov %eax,%r12d 0.00 : 51df35: 31 c0 xor %eax,%eax 0.00 : 51df37: e8 64 e9 25 00 callq 77c8a0 0.00 : 51df3c: bf 40 04 00 00 mov $0x440,%edi 0.00 : 51df41: 89 c3 mov %eax,%ebx 0.00 : 51df43: e9 18 69 00 00 jmpq 524860 0.00 : 51df48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 51df4f: 00 : $$ = $1; : $$->defexpr = $3; : } : | func_arg '=' a_expr : { : $$ = $1; 0.00 : 51df50: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51df57: 4c 8b 76 f0 mov -0x10(%rsi),%r14 : $$->defexpr = $3; 0.00 : 51df5b: 48 8b 06 mov (%rsi),%rax 0.00 : 51df5e: 49 89 46 20 mov %rax,0x20(%r14) : } : ; 0.00 : 51df62: e9 19 3a ff ff jmpq 511980 : { : $$ = $1; : } : | func_arg DEFAULT a_expr : { : $$ = $1; 0.00 : 51df67: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51df6e: 4c 8b 73 f0 mov -0x10(%rbx),%r14 : $$->defexpr = $3; 0.00 : 51df72: 48 8b 03 mov (%rbx),%rax 0.00 : 51df75: 49 89 46 20 mov %rax,0x20(%r14) : } : | func_arg '=' a_expr 0.00 : 51df79: e9 02 3a ff ff jmpq 511980 : ; : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } : | SEQUENCES { $$ = ACL_OBJECT_SEQUENCE; } 0.00 : 51df7e: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51df85: ff ff ff 0.00 : 51df88: 49 21 d6 and %rdx,%r14 0.00 : 51df8b: 49 83 ce 02 or $0x2,%r14 : | TYPES_P { $$ = ACL_OBJECT_TYPE; } 0.00 : 51df8f: e9 ec 39 ff ff jmpq 511980 : } : ; : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } 0.00 : 51df94: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51df9b: ff ff ff 0.00 : 51df9e: 49 21 c6 and %rax,%r14 0.00 : 51dfa1: 49 83 ce 07 or $0x7,%r14 : | SEQUENCES { $$ = ACL_OBJECT_SEQUENCE; } 0.00 : 51dfa5: e9 d6 39 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } 0.00 : 51dfaa: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51dfb1: ff ff ff 0.00 : 51dfb4: 49 21 f6 and %rsi,%r14 0.00 : 51dfb7: 49 83 ce 01 or $0x1,%r14 : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } 0.00 : 51dfbb: e9 c0 39 ff ff jmpq 511980 : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51dfc0: 48 8b 3d 99 c8 69 00 mov 0x69c899(%rip),%rdi # bba860 0.00 : 51dfc7: be 30 00 00 00 mov $0x30,%esi 0.00 : 51dfcc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dfd3: e8 38 ae 27 00 callq 798e10 0.00 : 51dfd8: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51dfde: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $7; : n->objects = NIL; : n->grantees = $9; : n->behavior = $10; : $$ = (Node *)n; 0.00 : 51dfe2: 49 89 c6 mov %rax,%r14 : | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; 0.00 : 51dfe5: c6 40 28 01 movb $0x1,0x28(%rax) : n->privileges = $5; 0.00 : 51dfe9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51dff0: 48 8b 53 d8 mov -0x28(%rbx),%rdx : n->targtype = ACL_TARGET_DEFAULTS; 0.00 : 51dff4: c7 40 08 02 00 00 00 movl $0x2,0x8(%rax) : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; : n->privileges = $5; 0.00 : 51dffb: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $7; 0.00 : 51dfff: 8b 53 e8 mov -0x18(%rbx),%edx : n->objects = NIL; 0.00 : 51e002: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51e009: 00 : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; : n->privileges = $5; : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $7; 0.00 : 51e00a: 89 50 0c mov %edx,0xc(%rax) : n->objects = NIL; : n->grantees = $9; 0.00 : 51e00d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51e011: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $10; 0.00 : 51e015: 8b 13 mov (%rbx),%edx 0.00 : 51e017: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51e01a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e021: e9 5a 39 ff ff jmpq 511980 : $$ = (Node*)n; : } : | REVOKE privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51e026: 48 8b 3d 33 c8 69 00 mov 0x69c833(%rip),%rdi # bba860 0.00 : 51e02d: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e032: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e039: e8 d2 ad 27 00 callq 798e10 0.00 : 51e03e: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51e044: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; : n->objects = NIL; : n->grantees = $6; : n->behavior = $7; : $$ = (Node *)n; 0.00 : 51e048: 49 89 c6 mov %rax,%r14 : | REVOKE privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; 0.00 : 51e04b: c6 40 28 00 movb $0x0,0x28(%rax) : n->privileges = $2; 0.00 : 51e04f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e056: 48 8b 51 d8 mov -0x28(%rcx),%rdx : n->targtype = ACL_TARGET_DEFAULTS; 0.00 : 51e05a: c7 40 08 02 00 00 00 movl $0x2,0x8(%rax) : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; : n->privileges = $2; 0.00 : 51e061: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e065: 8b 51 e8 mov -0x18(%rcx),%edx : n->objects = NIL; 0.00 : 51e068: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51e06f: 00 : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; : n->privileges = $2; : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e070: 89 50 0c mov %edx,0xc(%rax) : n->objects = NIL; : n->grantees = $6; 0.00 : 51e073: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51e077: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $7; 0.00 : 51e07b: 8b 11 mov (%rcx),%edx 0.00 : 51e07d: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target 0.00 : 51e080: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e087: e9 f4 38 ff ff jmpq 511980 : */ : DefACLAction: : GRANT privileges ON defacl_privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51e08c: 48 8b 3d cd c7 69 00 mov 0x69c7cd(%rip),%rdi # bba860 0.00 : 51e093: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e098: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e09f: e8 6c ad 27 00 callq 798e10 0.00 : 51e0a4: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = true; 0.00 : 51e0aa: c6 40 04 01 movb $0x1,0x4(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; : n->objects = NIL; : n->grantees = $6; : n->grant_option = $7; : $$ = (Node*)n; 0.00 : 51e0ae: 49 89 c6 mov %rax,%r14 : GRANT privileges ON defacl_privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; 0.00 : 51e0b1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e0b8: 48 8b 56 d8 mov -0x28(%rsi),%rdx : n->targtype = ACL_TARGET_DEFAULTS; 0.00 : 51e0bc: c7 40 08 02 00 00 00 movl $0x2,0x8(%rax) : GRANT privileges ON defacl_privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; 0.00 : 51e0c3: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e0c7: 8b 56 e8 mov -0x18(%rsi),%edx : n->objects = NIL; 0.00 : 51e0ca: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51e0d1: 00 : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e0d2: 89 50 0c mov %edx,0xc(%rax) : n->objects = NIL; : n->grantees = $6; 0.00 : 51e0d5: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51e0d9: 48 89 50 20 mov %rdx,0x20(%rax) : n->grant_option = $7; 0.00 : 51e0dd: 0f b6 16 movzbl (%rsi),%edx 0.00 : 51e0e0: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node*)n; : } : | REVOKE privileges ON defacl_privilege_target 0.00 : 51e0e3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e0ea: e9 91 38 ff ff jmpq 511980 : { : $$ = makeDefElem("roles", (Node *)$3); : } : | FOR USER role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e0ef: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e0f6: bf 36 32 7c 00 mov $0x7c3236,%edi 0.00 : 51e0fb: 48 8b 33 mov (%rbx),%rsi 0.00 : 51e0fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e105: e8 f6 33 0d 00 callq 5f1500 : } : ; 0.00 : 51e10a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("roles", (Node *)$3); : } : | FOR USER role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e111: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51e114: e9 67 38 ff ff jmpq 511980 : { : $$ = makeDefElem("schemas", (Node *)$3); : } : | FOR ROLE role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e119: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e120: bf 36 32 7c 00 mov $0x7c3236,%edi 0.00 : 51e125: 48 8b 31 mov (%rcx),%rsi 0.00 : 51e128: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e12f: e8 cc 33 0d 00 callq 5f1500 : } : | FOR USER role_list 0.00 : 51e134: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("schemas", (Node *)$3); : } : | FOR ROLE role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e13b: 49 89 c6 mov %rax,%r14 : } : | FOR USER role_list 0.00 : 51e13e: e9 3d 38 ff ff jmpq 511980 : ; : : DefACLOption: : IN_P SCHEMA name_list : { : $$ = makeDefElem("schemas", (Node *)$3); 0.00 : 51e143: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e14a: bf 64 57 8e 00 mov $0x8e5764,%edi 0.00 : 51e14f: 48 8b 32 mov (%rdx),%rsi 0.00 : 51e152: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e159: e8 a2 33 0d 00 callq 5f1500 : } : | FOR ROLE role_list 0.00 : 51e15e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : DefACLOption: : IN_P SCHEMA name_list : { : $$ = makeDefElem("schemas", (Node *)$3); 0.00 : 51e165: 49 89 c6 mov %rax,%r14 : } : | FOR ROLE role_list 0.00 : 51e168: e9 13 38 ff ff jmpq 511980 : } : ; : : DefACLOptionList: : DefACLOptionList DefACLOption { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51e16d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51e170: e9 0b 38 ff ff jmpq 511980 : $$ = (Node*)n; : } : ; : : DefACLOptionList: : DefACLOptionList DefACLOption { $$ = lappend($1, $2); } 0.00 : 51e175: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51e17c: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51e180: 48 8b 30 mov (%rax),%rsi 0.00 : 51e183: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e18a: e8 f1 3c 0c 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51e18f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node*)n; : } : ; : : DefACLOptionList: : DefACLOptionList DefACLOption { $$ = lappend($1, $2); } 0.00 : 51e196: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51e199: e9 e2 37 ff ff jmpq 511980 : *****************************************************************************/ : : AlterDefaultPrivilegesStmt: : ALTER DEFAULT PRIVILEGES DefACLOptionList DefACLAction : { : AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); 0.00 : 51e19e: 48 8b 3d bb c6 69 00 mov 0x69c6bb(%rip),%rdi # bba860 0.00 : 51e1a5: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e1aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e1b1: e8 5a ac 27 00 callq 798e10 0.00 : 51e1b6: c7 00 c8 02 00 00 movl $0x2c8,(%rax) : n->options = $4; 0.00 : 51e1bc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = (GrantStmt *) $5; : $$ = (Node*)n; 0.00 : 51e1c3: 49 89 c6 mov %rax,%r14 : : AlterDefaultPrivilegesStmt: : ALTER DEFAULT PRIVILEGES DefACLOptionList DefACLAction : { : AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); : n->options = $4; 0.00 : 51e1c6: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51e1ca: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = (GrantStmt *) $5; 0.00 : 51e1ce: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e1d1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51e1d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e1dc: e9 9f 37 ff ff jmpq 511980 : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_granted_by: GRANTED BY RoleId { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51e1e1: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51e1e4: e9 97 37 ff ff jmpq 511980 : : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_granted_by: GRANTED BY RoleId { $$ = $3; } 0.00 : 51e1e9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e1f0: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51e1f3: e9 88 37 ff ff jmpq 511980 : $$ = (Node*)n; : } : ; : : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e1f8: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51e1fb: e9 80 37 ff ff jmpq 511980 : n->behavior = $9; : $$ = (Node*)n; : } : ; : : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } 0.00 : 51e200: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e203: e9 78 37 ff ff jmpq 511980 : n->behavior = $6; : $$ = (Node*)n; : } : | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); 0.00 : 51e208: 48 8b 3d 51 c6 69 00 mov 0x69c651(%rip),%rdi # bba860 0.00 : 51e20f: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e214: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e21b: e8 f0 ab 27 00 callq 798e10 0.00 : 51e220: c7 00 c7 02 00 00 movl $0x2c7,(%rax) : n->is_grant = false; 0.00 : 51e226: c6 40 18 00 movb $0x0,0x18(%rax) : n->admin_opt = true; : n->granted_roles = $5; : n->grantee_roles = $7; : n->behavior = $9; : $$ = (Node*)n; 0.00 : 51e22a: 49 89 c6 mov %rax,%r14 : } : | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); : n->is_grant = false; : n->admin_opt = true; 0.00 : 51e22d: c6 40 19 01 movb $0x1,0x19(%rax) : n->granted_roles = $5; 0.00 : 51e231: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e238: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51e23c: 48 89 50 08 mov %rdx,0x8(%rax) : n->grantee_roles = $7; 0.00 : 51e240: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51e244: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $9; 0.00 : 51e248: 8b 11 mov (%rcx),%edx 0.00 : 51e24a: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51e24d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e254: e9 27 37 ff ff jmpq 511980 : ; : : RevokeRoleStmt: : REVOKE privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); 0.00 : 51e259: 48 8b 3d 00 c6 69 00 mov 0x69c600(%rip),%rdi # bba860 0.00 : 51e260: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e265: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e26c: e8 9f ab 27 00 callq 798e10 0.00 : 51e271: c7 00 c7 02 00 00 movl $0x2c7,(%rax) : n->is_grant = false; 0.00 : 51e277: c6 40 18 00 movb $0x0,0x18(%rax) : n->admin_opt = false; : n->granted_roles = $2; : n->grantee_roles = $4; : n->behavior = $6; : $$ = (Node*)n; 0.00 : 51e27b: 49 89 c6 mov %rax,%r14 : RevokeRoleStmt: : REVOKE privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); : n->is_grant = false; : n->admin_opt = false; 0.00 : 51e27e: c6 40 19 00 movb $0x0,0x19(%rax) : n->granted_roles = $2; 0.00 : 51e282: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e289: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 51e28d: 48 89 50 08 mov %rdx,0x8(%rax) : n->grantee_roles = $4; 0.00 : 51e291: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51e295: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $6; 0.00 : 51e299: 8b 16 mov (%rsi),%edx 0.00 : 51e29b: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node*)n; : } : | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior 0.00 : 51e29e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e2a5: e9 d6 36 ff ff jmpq 511980 : *****************************************************************************/ : : GrantRoleStmt: : GRANT privilege_list TO role_list opt_grant_admin_option opt_granted_by : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); 0.00 : 51e2aa: 48 8b 3d af c5 69 00 mov 0x69c5af(%rip),%rdi # bba860 0.00 : 51e2b1: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e2b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e2bd: e8 4e ab 27 00 callq 798e10 0.00 : 51e2c2: c7 00 c7 02 00 00 movl $0x2c7,(%rax) : n->is_grant = true; 0.00 : 51e2c8: c6 40 18 01 movb $0x1,0x18(%rax) : n->granted_roles = $2; : n->grantee_roles = $4; : n->admin_opt = $5; : n->grantor = $6; : $$ = (Node*)n; 0.00 : 51e2cc: 49 89 c6 mov %rax,%r14 : GrantRoleStmt: : GRANT privilege_list TO role_list opt_grant_admin_option opt_granted_by : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); : n->is_grant = true; : n->granted_roles = $2; 0.00 : 51e2cf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e2d6: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51e2da: 48 89 50 08 mov %rdx,0x8(%rax) : n->grantee_roles = $4; 0.00 : 51e2de: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51e2e2: 48 89 50 10 mov %rdx,0x10(%rax) : n->admin_opt = $5; 0.00 : 51e2e6: 0f b6 53 f8 movzbl -0x8(%rbx),%edx 0.00 : 51e2ea: 88 50 19 mov %dl,0x19(%rax) : n->grantor = $6; 0.00 : 51e2ed: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e2f0: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51e2f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e2fb: e9 80 36 ff ff jmpq 511980 : ; : : function_with_argtypes: : func_name func_args : { : FuncWithArgs *n = makeNode(FuncWithArgs); 0.00 : 51e300: 48 8b 3d 59 c5 69 00 mov 0x69c559(%rip),%rdi # bba860 0.00 : 51e307: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e30c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e313: e8 f8 aa 27 00 callq 798e10 0.00 : 51e318: c7 00 a0 03 00 00 movl $0x3a0,(%rax) : n->funcname = $1; 0.00 : 51e31e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ; : : function_with_argtypes: : func_name func_args : { : FuncWithArgs *n = makeNode(FuncWithArgs); 0.00 : 51e325: 48 89 c3 mov %rax,%rbx : n->funcname = $1; : n->funcargs = extractArgTypes($2); : $$ = n; 0.00 : 51e328: 49 89 de mov %rbx,%r14 : : function_with_argtypes: : func_name func_args : { : FuncWithArgs *n = makeNode(FuncWithArgs); : n->funcname = $1; 0.00 : 51e32b: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51e32f: 48 89 43 08 mov %rax,0x8(%rbx) : n->funcargs = extractArgTypes($2); 0.00 : 51e333: 48 8b 39 mov (%rcx),%rdi 0.00 : 51e336: e8 35 27 ff ff callq 510a70 0.00 : 51e33b: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : ; 0.00 : 51e33f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e346: e9 35 36 ff ff jmpq 511980 : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } : | function_with_argtypes_list ',' function_with_argtypes : { $$ = lappend($1, $3); } 0.00 : 51e34b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e352: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51e356: 48 8b 32 mov (%rdx),%rsi 0.00 : 51e359: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e360: e8 1b 3b 0c 00 callq 5e1e80 : ; 0.00 : 51e365: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } : | function_with_argtypes_list ',' function_with_argtypes : { $$ = lappend($1, $3); } 0.00 : 51e36c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51e36f: e9 0c 36 ff ff jmpq 511980 : WITH GRANT OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } 0.00 : 51e374: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51e37b: 31 f6 xor %esi,%esi 0.00 : 51e37d: 48 8b 38 mov (%rax),%rdi 0.00 : 51e380: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e387: e8 c4 34 0c 00 callq 5e1850 : | function_with_argtypes_list ',' function_with_argtypes 0.00 : 51e38c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : WITH GRANT OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } 0.00 : 51e393: 49 89 c6 mov %rax,%r14 : | function_with_argtypes_list ',' function_with_argtypes 0.00 : 51e396: e9 e5 35 ff ff jmpq 511980 : ; : : : opt_grant_grant_option: : WITH GRANT OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e39b: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51e39e: e9 dd 35 ff ff jmpq 511980 : } : ; : : : opt_grant_grant_option: : WITH GRANT OPTION { $$ = TRUE; } 0.00 : 51e3a3: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e3a6: e9 d5 35 ff ff jmpq 511980 : n->rolname = $1; : $$ = (Node *)n; : } : | GROUP_P RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); 0.00 : 51e3ab: 48 8b 3d ae c4 69 00 mov 0x69c4ae(%rip),%rdi # bba860 0.00 : 51e3b2: be 10 00 00 00 mov $0x10,%esi 0.00 : 51e3b7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e3be: e8 4d aa 27 00 callq 798e10 0.00 : 51e3c3: c7 00 9f 03 00 00 movl $0x39f,(%rax) : /* Treat GROUP PUBLIC as a synonym for PUBLIC */ : if (strcmp($2, "public") == 0) 0.00 : 51e3c9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e3d0: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 51e3d5: bf 75 b1 8d 00 mov $0x8db175,%edi : n->rolname = NULL; : else : n->rolname = $2; : $$ = (Node *)n; 0.00 : 51e3da: 49 89 c6 mov %rax,%r14 : } : | GROUP_P RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); : /* Treat GROUP PUBLIC as a synonym for PUBLIC */ : if (strcmp($2, "public") == 0) 0.00 : 51e3dd: 4c 8b 03 mov (%rbx),%r8 0.00 : 51e3e0: 4c 89 c6 mov %r8,%rsi 0.00 : 51e3e3: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 51e3e5: 40 0f 97 c6 seta %sil 0.00 : 51e3e9: 0f 92 c1 setb %cl : n->rolname = NULL; 0.00 : 51e3ec: 31 d2 xor %edx,%edx 0.00 : 51e3ee: 40 38 ce cmp %cl,%sil 0.00 : 51e3f1: 49 0f 45 d0 cmovne %r8,%rdx 0.00 : 51e3f5: 48 89 50 08 mov %rdx,0x8(%rax) : else : n->rolname = $2; : $$ = (Node *)n; : } : ; 0.00 : 51e3f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e400: e9 7b 35 ff ff jmpq 511980 : | grantee_list ',' grantee { $$ = lappend($1, $3); } : ; : : grantee: RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); 0.00 : 51e405: 48 8b 3d 54 c4 69 00 mov 0x69c454(%rip),%rdi # bba860 0.00 : 51e40c: be 10 00 00 00 mov $0x10,%esi 0.00 : 51e411: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e418: e8 f3 a9 27 00 callq 798e10 0.00 : 51e41d: c7 00 9f 03 00 00 movl $0x39f,(%rax) : /* This hack lets us avoid reserving PUBLIC as a keyword*/ : if (strcmp($1, "public") == 0) 0.00 : 51e423: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e42a: bf 75 b1 8d 00 mov $0x8db175,%edi : n->rolname = NULL; : else : n->rolname = $1; : $$ = (Node *)n; 0.00 : 51e42f: 49 89 c6 mov %rax,%r14 : : grantee: RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); : /* This hack lets us avoid reserving PUBLIC as a keyword*/ : if (strcmp($1, "public") == 0) 0.00 : 51e432: 4c 8b 01 mov (%rcx),%r8 0.00 : 51e435: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 51e43a: 4c 89 c6 mov %r8,%rsi 0.00 : 51e43d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 51e43f: 40 0f 97 c6 seta %sil 0.00 : 51e443: 0f 92 c1 setb %cl : n->rolname = NULL; 0.00 : 51e446: 31 d2 xor %edx,%edx 0.00 : 51e448: 40 38 ce cmp %cl,%sil 0.00 : 51e44b: 49 0f 45 d0 cmovne %r8,%rdx 0.00 : 51e44f: 48 89 50 08 mov %rdx,0x8(%rax) : else : n->rolname = $1; : $$ = (Node *)n; : } : | GROUP_P RoleId 0.00 : 51e453: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e45a: e9 21 35 ff ff jmpq 511980 : ; : : : grantee_list: : grantee { $$ = list_make1($1); } : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e45f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e466: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51e46a: 48 8b 32 mov (%rdx),%rsi 0.00 : 51e46d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e474: e8 07 3a 0c 00 callq 5e1e80 : ; 0.00 : 51e479: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : : grantee_list: : grantee { $$ = list_make1($1); } : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e480: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51e483: e9 f8 34 ff ff jmpq 511980 : } : ; : : : grantee_list: : grantee { $$ = list_make1($1); } 0.00 : 51e488: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51e48f: 31 f6 xor %esi,%esi 0.00 : 51e491: 48 8b 38 mov (%rax),%rdi 0.00 : 51e494: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e49b: e8 b0 33 0c 00 callq 5e1850 : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e4a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : : grantee_list: : grantee { $$ = list_make1($1); } 0.00 : 51e4a7: 49 89 c6 mov %rax,%r14 : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e4aa: e9 d1 34 ff ff jmpq 511980 : n->objs = $5; : $$ = n; : } : | ALL FUNCTIONS IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e4af: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e4b4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e4bb: e8 90 a8 27 00 callq 798d50 : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; 0.00 : 51e4c0: c7 00 01 00 00 00 movl $0x1,(%rax) : n->objtype = ACL_OBJECT_FUNCTION; 0.00 : 51e4c6: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->objs = $5; : $$ = n; 0.00 : 51e4cd: 49 89 c6 mov %rax,%r14 : | ALL FUNCTIONS IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; : n->objtype = ACL_OBJECT_FUNCTION; : n->objs = $5; 0.00 : 51e4d0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e4d7: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e4da: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : ; 0.00 : 51e4de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e4e5: e9 96 34 ff ff jmpq 511980 : n->objs = $5; : $$ = n; : } : | ALL SEQUENCES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e4ea: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e4ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e4f6: e8 55 a8 27 00 callq 798d50 : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; 0.00 : 51e4fb: c7 00 01 00 00 00 movl $0x1,(%rax) : n->objtype = ACL_OBJECT_SEQUENCE; 0.00 : 51e501: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->objs = $5; : $$ = n; 0.00 : 51e508: 49 89 c6 mov %rax,%r14 : | ALL SEQUENCES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; : n->objtype = ACL_OBJECT_SEQUENCE; : n->objs = $5; 0.00 : 51e50b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e512: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e515: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL FUNCTIONS IN_P SCHEMA name_list 0.00 : 51e519: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e520: e9 5b 34 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | ALL TABLES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e525: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e52a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e531: e8 1a a8 27 00 callq 798d50 : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; 0.00 : 51e536: c7 00 01 00 00 00 movl $0x1,(%rax) : n->objtype = ACL_OBJECT_RELATION; 0.00 : 51e53c: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->objs = $5; : $$ = n; 0.00 : 51e543: 49 89 c6 mov %rax,%r14 : | ALL TABLES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; : n->objtype = ACL_OBJECT_RELATION; : n->objs = $5; 0.00 : 51e546: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e54d: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e550: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL SEQUENCES IN_P SCHEMA name_list 0.00 : 51e554: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e55b: e9 20 34 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | TYPE_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e560: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e565: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e56c: e8 df a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e571: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_TYPE; 0.00 : 51e577: c7 40 04 0c 00 00 00 movl $0xc,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e57e: 49 89 c6 mov %rax,%r14 : | TYPE_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_TYPE; : n->objs = $2; 0.00 : 51e581: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e588: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e58b: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL TABLES IN_P SCHEMA name_list 0.00 : 51e58f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e596: e9 e5 33 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | TABLESPACE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e59b: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e5a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e5a7: e8 a4 a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e5ac: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_TABLESPACE; 0.00 : 51e5b2: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e5b9: 49 89 c6 mov %rax,%r14 : | TABLESPACE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_TABLESPACE; : n->objs = $2; 0.00 : 51e5bc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e5c3: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e5c6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | TYPE_P any_name_list 0.00 : 51e5ca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e5d1: e9 aa 33 ff ff jmpq 511980 : n->objs = $3; : $$ = n; : } : | SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e5d6: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e5db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e5e2: e8 69 a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e5e7: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_NAMESPACE; 0.00 : 51e5ed: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e5f4: 49 89 c6 mov %rax,%r14 : | SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_NAMESPACE; : n->objs = $2; 0.00 : 51e5f7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e5fe: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e601: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | TABLESPACE name_list 0.00 : 51e605: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e60c: e9 6f 33 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | LARGE_P OBJECT_P NumericOnly_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e611: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e616: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e61d: e8 2e a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e622: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_LARGEOBJECT; 0.00 : 51e628: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->objs = $3; : $$ = n; 0.00 : 51e62f: 49 89 c6 mov %rax,%r14 : | LARGE_P OBJECT_P NumericOnly_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_LARGEOBJECT; : n->objs = $3; 0.00 : 51e632: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e639: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e63c: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | SCHEMA name_list 0.00 : 51e640: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e647: e9 34 33 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | LANGUAGE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e64c: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e651: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e658: e8 f3 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e65d: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_LANGUAGE; 0.00 : 51e663: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e66a: 49 89 c6 mov %rax,%r14 : | LANGUAGE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_LANGUAGE; : n->objs = $2; 0.00 : 51e66d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e674: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e677: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | LARGE_P OBJECT_P NumericOnly_list 0.00 : 51e67b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e682: e9 f9 32 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | DOMAIN_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e687: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e68c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e693: e8 b8 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e698: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_DOMAIN; 0.00 : 51e69e: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e6a5: 49 89 c6 mov %rax,%r14 : | DOMAIN_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_DOMAIN; : n->objs = $2; 0.00 : 51e6a8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e6af: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e6b2: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | LANGUAGE name_list 0.00 : 51e6b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e6bd: e9 be 32 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | DATABASE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e6c2: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e6c7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e6ce: e8 7d a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e6d3: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_DATABASE; 0.00 : 51e6d9: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e6e0: 49 89 c6 mov %rax,%r14 : | DATABASE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_DATABASE; : n->objs = $2; 0.00 : 51e6e3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e6ea: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e6ed: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | DOMAIN_P any_name_list 0.00 : 51e6f1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e6f8: e9 83 32 ff ff jmpq 511980 : n->objs = $3; : $$ = n; : } : | FUNCTION function_with_argtypes_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e6fd: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e702: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e709: e8 42 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e70e: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_FUNCTION; 0.00 : 51e714: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e71b: 49 89 c6 mov %rax,%r14 : | FUNCTION function_with_argtypes_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_FUNCTION; : n->objs = $2; 0.00 : 51e71e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e725: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e728: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | DATABASE name_list 0.00 : 51e72c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e733: e9 48 32 ff ff jmpq 511980 : n->objs = $4; : $$ = n; : } : | FOREIGN SERVER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e738: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e73d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e744: e8 07 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e749: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_FOREIGN_SERVER; 0.00 : 51e74f: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->objs = $3; : $$ = n; 0.00 : 51e756: 49 89 c6 mov %rax,%r14 : | FOREIGN SERVER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_FOREIGN_SERVER; : n->objs = $3; 0.00 : 51e759: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e760: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e763: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | FUNCTION function_with_argtypes_list 0.00 : 51e767: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e76e: e9 0d 32 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | FOREIGN DATA_P WRAPPER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e773: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e778: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e77f: e8 cc a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e784: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_FDW; 0.00 : 51e78a: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->objs = $4; : $$ = n; 0.00 : 51e791: 49 89 c6 mov %rax,%r14 : | FOREIGN DATA_P WRAPPER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_FDW; : n->objs = $4; 0.00 : 51e794: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e79b: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e79e: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | FOREIGN SERVER name_list 0.00 : 51e7a2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e7a9: e9 d2 31 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | SEQUENCE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e7ae: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e7b3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e7ba: e8 91 a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e7bf: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_SEQUENCE; 0.00 : 51e7c5: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e7cc: 49 89 c6 mov %rax,%r14 : | SEQUENCE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_SEQUENCE; : n->objs = $2; 0.00 : 51e7cf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e7d6: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e7d9: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | FOREIGN DATA_P WRAPPER name_list 0.00 : 51e7dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e7e4: e9 97 31 ff ff jmpq 511980 : n->objs = $1; : $$ = n; : } : | TABLE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e7e9: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e7ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e7f5: e8 56 a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e7fa: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_RELATION; 0.00 : 51e800: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e807: 49 89 c6 mov %rax,%r14 : | TABLE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_RELATION; : n->objs = $2; 0.00 : 51e80a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e811: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e814: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | SEQUENCE qualified_name_list 0.00 : 51e818: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e81f: e9 5c 31 ff ff jmpq 511980 : * opt_table. You're going to get conflicts. : */ : privilege_target: : qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e824: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e829: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e830: e8 1b a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e835: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_RELATION; 0.00 : 51e83b: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->objs = $1; : $$ = n; 0.00 : 51e842: 49 89 c6 mov %rax,%r14 : qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_RELATION; : n->objs = $1; 0.00 : 51e845: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e84c: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e84f: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | TABLE qualified_name_list 0.00 : 51e853: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e85a: e9 21 31 ff ff jmpq 511980 : n->cols = $2; : $$ = n; : } : | ColId opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e85f: 48 8b 3d fa bf 69 00 mov 0x69bffa(%rip),%rdi # bba860 0.00 : 51e866: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e86b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e872: e8 99 a5 27 00 callq 798e10 0.00 : 51e877: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = $1; 0.00 : 51e87d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cols = $2; : $$ = n; 0.00 : 51e884: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | ColId opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = $1; 0.00 : 51e887: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51e88b: 48 89 50 08 mov %rdx,0x8(%rax) : n->cols = $2; 0.00 : 51e88f: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e892: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : ; 0.00 : 51e896: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e89d: e9 de 30 ff ff jmpq 511980 : n->cols = $2; : $$ = n; : } : | CREATE opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e8a2: 48 8b 3d b7 bf 69 00 mov 0x69bfb7(%rip),%rdi # bba860 0.00 : 51e8a9: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e8ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e8b5: e8 56 a5 27 00 callq 798e10 0.00 : 51e8ba: 48 89 c3 mov %rax,%rbx 0.00 : 51e8bd: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = pstrdup($1); 0.00 : 51e8c3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->cols = $2; : $$ = n; 0.00 : 51e8ca: 49 89 de mov %rbx,%r14 : $$ = n; : } : | CREATE opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = pstrdup($1); 0.00 : 51e8cd: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51e8d1: e8 7a a6 27 00 callq 798f50 0.00 : 51e8d6: 48 89 43 08 mov %rax,0x8(%rbx) : n->cols = $2; 0.00 : 51e8da: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e8e1: 48 8b 02 mov (%rdx),%rax 0.00 : 51e8e4: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | ColId opt_column_list 0.00 : 51e8e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e8ef: e9 8c 30 ff ff jmpq 511980 : n->cols = $2; : $$ = n; : } : | REFERENCES opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e8f4: 48 8b 3d 65 bf 69 00 mov 0x69bf65(%rip),%rdi # bba860 0.00 : 51e8fb: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e900: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e907: e8 04 a5 27 00 callq 798e10 0.00 : 51e90c: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = pstrdup($1); 0.00 : 51e912: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cols = $2; : $$ = n; : } : | REFERENCES opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e919: 48 89 c3 mov %rax,%rbx : n->priv_name = pstrdup($1); : n->cols = $2; : $$ = n; 0.00 : 51e91c: 49 89 de mov %rbx,%r14 : $$ = n; : } : | REFERENCES opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = pstrdup($1); 0.00 : 51e91f: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51e923: e8 28 a6 27 00 callq 798f50 0.00 : 51e928: 48 89 43 08 mov %rax,0x8(%rbx) : n->cols = $2; 0.00 : 51e92c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e933: 48 8b 06 mov (%rsi),%rax 0.00 : 51e936: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | CREATE opt_column_list 0.00 : 51e93a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e941: e9 3a 30 ff ff jmpq 511980 : | privilege_list ',' privilege { $$ = lappend($1, $3); } : ; : : privilege: SELECT opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e946: 48 8b 3d 13 bf 69 00 mov 0x69bf13(%rip),%rdi # bba860 0.00 : 51e94d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e952: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e959: e8 b2 a4 27 00 callq 798e10 0.00 : 51e95e: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = pstrdup($1); 0.00 : 51e964: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : | privilege_list ',' privilege { $$ = lappend($1, $3); } : ; : : privilege: SELECT opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e96b: 48 89 c3 mov %rax,%rbx : n->priv_name = pstrdup($1); : n->cols = $2; : $$ = n; 0.00 : 51e96e: 49 89 de mov %rbx,%r14 : ; : : privilege: SELECT opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = pstrdup($1); 0.00 : 51e971: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51e975: e8 d6 a5 27 00 callq 798f50 0.00 : 51e97a: 48 89 43 08 mov %rax,0x8(%rbx) : n->cols = $2; 0.00 : 51e97e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e985: 48 8b 02 mov (%rdx),%rax 0.00 : 51e988: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | REFERENCES opt_column_list 0.00 : 51e98c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e993: e9 e8 2f ff ff jmpq 511980 : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e998: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e99f: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51e9a3: 48 8b 33 mov (%rbx),%rsi 0.00 : 51e9a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e9ad: e8 ce 34 0c 00 callq 5e1e80 : ; 0.00 : 51e9b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e9b9: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51e9bc: e9 bf 2f ff ff jmpq 511980 : n->cols = $4; : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } 0.00 : 51e9c1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e9c8: 31 f6 xor %esi,%esi 0.00 : 51e9ca: 48 8b 39 mov (%rcx),%rdi 0.00 : 51e9cd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e9d4: e8 77 2e 0c 00 callq 5e1850 : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e9d9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : n->cols = $4; : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } 0.00 : 51e9e0: 49 89 c6 mov %rax,%r14 : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e9e3: e9 98 2f ff ff jmpq 511980 : n->cols = $3; : $$ = list_make1(n); : } : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e9e8: 48 8b 3d 71 be 69 00 mov 0x69be71(%rip),%rdi # bba860 0.00 : 51e9ef: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e9f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e9fb: e8 10 a4 27 00 callq 798e10 0.00 : 51ea00: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = NULL; 0.00 : 51ea06: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ea0d: 00 : n->cols = $3; : $$ = list_make1(n); : } : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51ea0e: 48 89 c7 mov %rax,%rdi : n->priv_name = NULL; : n->cols = $4; 0.00 : 51ea11: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = list_make1(n); 0.00 : 51ea18: 31 f6 xor %esi,%esi : } : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $4; 0.00 : 51ea1a: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 51ea1e: 48 89 47 10 mov %rax,0x10(%rdi) : $$ = list_make1(n); 0.00 : 51ea22: e8 29 2e 0c 00 callq 5e1850 : } : ; 0.00 : 51ea27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $4; : $$ = list_make1(n); 0.00 : 51ea2e: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51ea31: e9 4a 2f ff ff jmpq 511980 : { $$ = NIL; } : | ALL PRIVILEGES : { $$ = NIL; } : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51ea36: 48 8b 3d 23 be 69 00 mov 0x69be23(%rip),%rdi # bba860 0.00 : 51ea3d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ea42: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ea49: e8 c2 a3 27 00 callq 798e10 0.00 : 51ea4e: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = NULL; 0.00 : 51ea54: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ea5b: 00 : { $$ = NIL; } : | ALL PRIVILEGES : { $$ = NIL; } : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51ea5c: 48 89 c7 mov %rax,%rdi : n->priv_name = NULL; : n->cols = $3; 0.00 : 51ea5f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ea66: 48 8b 46 f8 mov -0x8(%rsi),%rax : $$ = list_make1(n); 0.00 : 51ea6a: 31 f6 xor %esi,%esi : { $$ = NIL; } : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $3; 0.00 : 51ea6c: 48 89 47 10 mov %rax,0x10(%rdi) : $$ = list_make1(n); 0.00 : 51ea70: e8 db 2d 0c 00 callq 5e1850 : } : | ALL PRIVILEGES '(' columnList ')' 0.00 : 51ea75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $3; : $$ = list_make1(n); 0.00 : 51ea7c: 49 89 c6 mov %rax,%r14 : } : | ALL PRIVILEGES '(' columnList ')' 0.00 : 51ea7f: e9 fc 2e ff ff jmpq 511980 : privileges: privilege_list : { $$ = $1; } : | ALL : { $$ = NIL; } : | ALL PRIVILEGES : { $$ = NIL; } 0.00 : 51ea84: 45 31 f6 xor %r14d,%r14d : | ALL '(' columnList ')' 0.00 : 51ea87: e9 f4 2e ff ff jmpq 511980 : : /* either ALL [PRIVILEGES] or a list of individual privileges */ : privileges: privilege_list : { $$ = $1; } : | ALL : { $$ = NIL; } 0.00 : 51ea8c: 45 31 f6 xor %r14d,%r14d : | ALL PRIVILEGES 0.00 : 51ea8f: e9 ec 2e ff ff jmpq 511980 : * production any reserved keywords that need to be usable as privilege names. : */ : : /* either ALL [PRIVILEGES] or a list of individual privileges */ : privileges: privilege_list : { $$ = $1; } 0.00 : 51ea94: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ea9b: 4c 8b 33 mov (%rbx),%r14 : | ALL 0.00 : 51ea9e: e9 dd 2e ff ff jmpq 511980 : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51eaa3: 48 8b 3d b6 bd 69 00 mov 0x69bdb6(%rip),%rdi # bba860 0.00 : 51eaaa: be 30 00 00 00 mov $0x30,%esi 0.00 : 51eaaf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51eab6: e8 55 a3 27 00 callq 798e10 0.00 : 51eabb: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51eac1: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ($7)->targtype; : n->objtype = ($7)->objtype; : n->objects = ($7)->objs; : n->grantees = $9; : n->behavior = $10; : $$ = (Node *)n; 0.00 : 51eac5: 49 89 c6 mov %rax,%r14 : | REVOKE GRANT OPTION FOR privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; 0.00 : 51eac8: c6 40 28 01 movb $0x1,0x28(%rax) : n->privileges = $5; 0.00 : 51eacc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ead3: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51ead7: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ($7)->targtype; 0.00 : 51eadb: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51eadf: 8b 12 mov (%rdx),%edx 0.00 : 51eae1: 89 50 08 mov %edx,0x8(%rax) : n->objtype = ($7)->objtype; 0.00 : 51eae4: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51eae8: 8b 52 04 mov 0x4(%rdx),%edx 0.00 : 51eaeb: 89 50 0c mov %edx,0xc(%rax) : n->objects = ($7)->objs; 0.00 : 51eaee: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51eaf2: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51eaf6: 48 89 50 10 mov %rdx,0x10(%rax) : n->grantees = $9; 0.00 : 51eafa: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51eafe: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $10; 0.00 : 51eb02: 8b 11 mov (%rcx),%edx 0.00 : 51eb04: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51eb07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51eb0e: e9 6d 2e ff ff jmpq 511980 : : RevokeStmt: : REVOKE privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51eb13: 48 8b 3d 46 bd 69 00 mov 0x69bd46(%rip),%rdi # bba860 0.00 : 51eb1a: be 30 00 00 00 mov $0x30,%esi 0.00 : 51eb1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51eb26: e8 e5 a2 27 00 callq 798e10 0.00 : 51eb2b: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51eb31: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ($4)->targtype; : n->objtype = ($4)->objtype; : n->objects = ($4)->objs; : n->grantees = $6; : n->behavior = $7; : $$ = (Node *)n; 0.00 : 51eb35: 49 89 c6 mov %rax,%r14 : REVOKE privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; 0.00 : 51eb38: c6 40 28 00 movb $0x0,0x28(%rax) : n->privileges = $2; 0.00 : 51eb3c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51eb43: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51eb47: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ($4)->targtype; 0.00 : 51eb4b: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51eb4f: 8b 12 mov (%rdx),%edx 0.00 : 51eb51: 89 50 08 mov %edx,0x8(%rax) : n->objtype = ($4)->objtype; 0.00 : 51eb54: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51eb58: 8b 52 04 mov 0x4(%rdx),%edx 0.00 : 51eb5b: 89 50 0c mov %edx,0xc(%rax) : n->objects = ($4)->objs; 0.00 : 51eb5e: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51eb62: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51eb66: 48 89 50 10 mov %rdx,0x10(%rax) : n->grantees = $6; 0.00 : 51eb6a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51eb6e: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $7; 0.00 : 51eb72: 8b 16 mov (%rsi),%edx 0.00 : 51eb74: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON privilege_target 0.00 : 51eb77: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51eb7e: e9 fd 2d ff ff jmpq 511980 : *****************************************************************************/ : : GrantStmt: GRANT privileges ON privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51eb83: 48 8b 3d d6 bc 69 00 mov 0x69bcd6(%rip),%rdi # bba860 0.00 : 51eb8a: be 30 00 00 00 mov $0x30,%esi 0.00 : 51eb8f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51eb96: e8 75 a2 27 00 callq 798e10 0.00 : 51eb9b: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = true; 0.00 : 51eba1: c6 40 04 01 movb $0x1,0x4(%rax) : n->targtype = ($4)->targtype; : n->objtype = ($4)->objtype; : n->objects = ($4)->objs; : n->grantees = $6; : n->grant_option = $7; : $$ = (Node*)n; 0.00 : 51eba5: 49 89 c6 mov %rax,%r14 : GrantStmt: GRANT privileges ON privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; 0.00 : 51eba8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ebaf: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51ebb3: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ($4)->targtype; 0.00 : 51ebb7: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ebbb: 8b 12 mov (%rdx),%edx 0.00 : 51ebbd: 89 50 08 mov %edx,0x8(%rax) : n->objtype = ($4)->objtype; 0.00 : 51ebc0: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ebc4: 8b 52 04 mov 0x4(%rdx),%edx 0.00 : 51ebc7: 89 50 0c mov %edx,0xc(%rax) : n->objects = ($4)->objs; 0.00 : 51ebca: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ebce: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51ebd2: 48 89 50 10 mov %rdx,0x10(%rax) : n->grantees = $6; 0.00 : 51ebd6: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51ebda: 48 89 50 20 mov %rdx,0x20(%rax) : n->grant_option = $7; 0.00 : 51ebde: 0f b6 13 movzbl (%rbx),%edx 0.00 : 51ebe1: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51ebe4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ebeb: e9 90 2d ff ff jmpq 511980 : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51ebf0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ebf7: 48 8b 39 mov (%rcx),%rdi 0.00 : 51ebfa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec01: e8 4a a3 27 00 callq 798f50 : ; 0.00 : 51ec06: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec0d: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51ec10: e9 6b 2d ff ff jmpq 511980 : : /* Type/function identifier --- names that can be type or function names. : */ : type_function_name: IDENT { $$ = $1; } 0.00 : 51ec15: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ec1c: 4c 8b 33 mov (%rbx),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51ec1f: e9 5c 2d ff ff jmpq 511980 0.00 : 51ec24: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ec2b: 48 8b 3e mov (%rsi),%rdi 0.00 : 51ec2e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec35: e8 16 a3 27 00 callq 798f50 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec3a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* Type/function identifier --- names that can be type or function names. : */ : type_function_name: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51ec41: 49 89 c6 mov %rax,%r14 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec44: e9 37 2d ff ff jmpq 511980 0.00 : 51ec49: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51ec50: 48 8b 38 mov (%rax),%rdi 0.00 : 51ec53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec5a: e8 f1 a2 27 00 callq 798f50 : ; 0.00 : 51ec5f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Type/function identifier --- names that can be type or function names. : */ : type_function_name: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec66: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51ec69: e9 12 2d ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51ec6e: 48 8b 3d eb bb 69 00 mov 0x69bbeb(%rip),%rdi # bba860 0.00 : 51ec75: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ec7a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec81: e8 8a a1 27 00 callq 798e10 0.00 : 51ec86: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51ec8c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_BACKWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; 0.00 : 51ec93: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ec96: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_BACKWARD; : n->howMany = FETCH_ALL; 0.00 : 51ec99: 48 b9 ff ff ff ff ff movabs $0x7fffffffffffffff,%rcx 0.00 : 51eca0: ff ff 7f : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; : n->direction = FETCH_BACKWARD; 0.00 : 51eca3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->howMany = FETCH_ALL; 0.00 : 51ecaa: 48 89 48 08 mov %rcx,0x8(%rax) : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ecae: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : ; 0.00 : 51ecb2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ecb9: e9 c2 2c ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51ecbe: 48 8b 3d 9b bb 69 00 mov 0x69bb9b(%rip),%rdi # bba860 0.00 : 51ecc5: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ecca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ecd1: e8 3a a1 27 00 callq 798e10 0.00 : 51ecd6: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51ecdc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_BACKWARD; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51ece3: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ece6: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_BACKWARD; 0.00 : 51ece9: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ecf0: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = $2; 0.00 : 51ecf4: 48 63 56 f0 movslq -0x10(%rsi),%rdx 0.00 : 51ecf8: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name 0.00 : 51ecfc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ed03: e9 78 2c ff ff jmpq 511980 : opt_or_replace: : OR REPLACE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : func_args: '(' func_args_list ')' { $$ = $2; } 0.00 : 51ed08: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ed0f: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | '(' ')' { $$ = NIL; } 0.00 : 51ed13: e9 68 2c ff ff jmpq 511980 : } : ; : : opt_or_replace: : OR REPLACE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51ed18: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51ed1b: e9 60 2c ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_or_replace: : OR REPLACE { $$ = TRUE; } 0.00 : 51ed20: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51ed23: e9 58 2c ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51ed28: 48 8b 3d 31 bb 69 00 mov 0x69bb31(%rip),%rdi # bba860 0.00 : 51ed2f: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ed34: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ed3b: e8 d0 a0 27 00 callq 798e10 0.00 : 51ed40: c7 00 d3 02 00 00 movl $0x2d3,(%rax) : n->replace = $2; 0.00 : 51ed46: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->funcname = $4; : n->parameters = $5; : n->returnType = NULL; : n->options = $6; : n->withClause = $7; : $$ = (Node *)n; 0.00 : 51ed4d: 49 89 c6 mov %rax,%r14 : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; 0.00 : 51ed50: 0f b6 51 d8 movzbl -0x28(%rcx),%edx 0.00 : 51ed54: 88 50 04 mov %dl,0x4(%rax) : n->funcname = $4; 0.00 : 51ed57: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ed5b: 48 89 50 08 mov %rdx,0x8(%rax) : n->parameters = $5; 0.00 : 51ed5f: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->returnType = NULL; 0.00 : 51ed63: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51ed6a: 00 : createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = $5; 0.00 : 51ed6b: 48 89 50 10 mov %rdx,0x10(%rax) : n->returnType = NULL; : n->options = $6; 0.00 : 51ed6f: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51ed73: 48 89 50 20 mov %rdx,0x20(%rax) : n->withClause = $7; 0.00 : 51ed77: 48 8b 11 mov (%rcx),%rdx 0.00 : 51ed7a: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51ed7e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ed85: e9 f6 2b ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51ed8a: 48 8b 3d cf ba 69 00 mov 0x69bacf(%rip),%rdi # bba860 0.00 : 51ed91: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ed96: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ed9d: e8 6e a0 27 00 callq 798e10 0.00 : 51eda2: c7 00 d3 02 00 00 movl $0x2d3,(%rax) : n->replace = $2; 0.00 : 51eda8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51edaf: 48 89 c3 mov %rax,%rbx : n->replace = $2; 0.00 : 51edb2: 0f b6 46 b0 movzbl -0x50(%rsi),%eax : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); 0.00 : 51edb6: 49 89 f4 mov %rsi,%r12 0.00 : 51edb9: 49 83 ec 18 sub $0x18,%r12 : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; 0.00 : 51edbd: 88 43 04 mov %al,0x4(%rbx) : n->funcname = $4; 0.00 : 51edc0: 48 8b 46 c0 mov -0x40(%rsi),%rax 0.00 : 51edc4: 48 89 43 08 mov %rax,0x8(%rbx) : n->parameters = mergeTableFuncParameters($5, $9); 0.00 : 51edc8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 51edcf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51edd6: 48 8b 78 c8 mov -0x38(%rax),%rdi 0.00 : 51edda: 48 8b 70 e8 mov -0x18(%rax),%rsi 0.00 : 51edde: 48 85 ff test %rdi,%rdi 0.00 : 51ede1: 0f 84 d1 a2 00 00 je 5290b8 0.00 : 51ede7: 48 8b 57 08 mov 0x8(%rdi),%rdx : mergeTableFuncParameters(List *func_args, List *columns) : { : ListCell *lc; : : /* Explicit OUT and INOUT parameters shouldn't be used in this syntax */ : foreach(lc, func_args) 0.00 : 51edeb: 48 85 d2 test %rdx,%rdx 0.00 : 51edee: 0f 84 c4 a2 00 00 je 5290b8 : { : FunctionParameter *p = (FunctionParameter *) lfirst(lc); : : if (p->mode != FUNC_PARAM_IN && p->mode != FUNC_PARAM_VARIADIC) 0.00 : 51edf4: 48 8b 02 mov (%rdx),%rax 0.00 : 51edf7: 8b 40 18 mov 0x18(%rax),%eax 0.00 : 51edfa: 83 f8 69 cmp $0x69,%eax 0.00 : 51edfd: 0f 84 a8 a2 00 00 je 5290ab 0.00 : 51ee03: 83 f8 76 cmp $0x76,%eax 0.00 : 51ee06: 0f 84 9f a2 00 00 je 5290ab : ereport(ERROR, 0.00 : 51ee0c: 45 31 c0 xor %r8d,%r8d 0.00 : 51ee0f: b9 c0 74 82 00 mov $0x8274c0,%ecx 0.00 : 51ee14: ba c2 36 00 00 mov $0x36c2,%edx 0.00 : 51ee19: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 51ee1e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 51ee23: e8 98 bc 25 00 callq 77aac0 0.00 : 51ee28: 84 c0 test %al,%al 0.00 : 51ee2a: 0f 84 77 31 ff ff je 511fa7 0.00 : 51ee30: bf 98 a0 7c 00 mov $0x7ca098,%edi 0.00 : 51ee35: 31 c0 xor %eax,%eax 0.00 : 51ee37: e8 64 da 25 00 callq 77c8a0 0.00 : 51ee3c: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 51ee41: 89 c3 mov %eax,%ebx 0.00 : 51ee43: e9 65 2a 00 00 jmpq 5218ad 0.00 : 51ee48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 51ee4f: 00 : : CreateFunctionStmt: : CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS func_return createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51ee50: 48 8b 3d 09 ba 69 00 mov 0x69ba09(%rip),%rdi # bba860 0.00 : 51ee57: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ee5c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ee63: e8 a8 9f 27 00 callq 798e10 0.00 : 51ee68: c7 00 d3 02 00 00 movl $0x2d3,(%rax) : n->replace = $2; 0.00 : 51ee6e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->funcname = $4; : n->parameters = $5; : n->returnType = $7; : n->options = $8; : n->withClause = $9; : $$ = (Node *)n; 0.00 : 51ee75: 49 89 c6 mov %rax,%r14 : CreateFunctionStmt: : CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS func_return createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; 0.00 : 51ee78: 0f b6 51 c8 movzbl -0x38(%rcx),%edx 0.00 : 51ee7c: 88 50 04 mov %dl,0x4(%rax) : n->funcname = $4; 0.00 : 51ee7f: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51ee83: 48 89 50 08 mov %rdx,0x8(%rax) : n->parameters = $5; 0.00 : 51ee87: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51ee8b: 48 89 50 10 mov %rdx,0x10(%rax) : n->returnType = $7; 0.00 : 51ee8f: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51ee93: 48 89 50 18 mov %rdx,0x18(%rax) : n->options = $8; 0.00 : 51ee97: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51ee9b: 48 89 50 20 mov %rdx,0x20(%rax) : n->withClause = $9; 0.00 : 51ee9f: 48 8b 11 mov (%rcx),%rdx 0.00 : 51eea2: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults 0.00 : 51eea6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51eead: e9 ce 2a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } : ; : : opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } : | NULLS_LAST { $$ = SORTBY_NULLS_LAST; } : | /*EMPTY*/ { $$ = SORTBY_NULLS_DEFAULT; } 0.00 : 51eeb2: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51eeb9: ff ff ff 0.00 : 51eebc: 49 21 c6 and %rax,%r14 : ; 0.00 : 51eebf: e9 bc 2a ff ff jmpq 511980 : | DESC { $$ = SORTBY_DESC; } : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } : ; : : opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } : | NULLS_LAST { $$ = SORTBY_NULLS_LAST; } 0.00 : 51eec4: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51eecb: ff ff ff 0.00 : 51eece: 49 21 f6 and %rsi,%r14 0.00 : 51eed1: 49 83 ce 02 or $0x2,%r14 : | /*EMPTY*/ { $$ = SORTBY_NULLS_DEFAULT; } 0.00 : 51eed5: e9 a6 2a ff ff jmpq 511980 : opt_asc_desc: ASC { $$ = SORTBY_ASC; } : | DESC { $$ = SORTBY_DESC; } : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } : ; : : opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } 0.00 : 51eeda: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51eee1: ff ff ff 0.00 : 51eee4: 49 21 de and %rbx,%r14 0.00 : 51eee7: 49 83 ce 01 or $0x1,%r14 : | NULLS_LAST { $$ = SORTBY_NULLS_LAST; } 0.00 : 51eeeb: e9 90 2a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_asc_desc: ASC { $$ = SORTBY_ASC; } : | DESC { $$ = SORTBY_DESC; } : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } 0.00 : 51eef0: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51eef7: ff ff ff 0.00 : 51eefa: 49 21 ce and %rcx,%r14 : ; 0.00 : 51eefd: e9 7e 2a ff ff jmpq 511980 : | USING any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_asc_desc: ASC { $$ = SORTBY_ASC; } : | DESC { $$ = SORTBY_DESC; } 0.00 : 51ef02: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51ef09: ff ff ff 0.00 : 51ef0c: 49 21 d6 and %rdx,%r14 0.00 : 51ef0f: 49 83 ce 02 or $0x2,%r14 : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } 0.00 : 51ef13: e9 68 2a ff ff jmpq 511980 : opt_class: any_name { $$ = $1; } : | USING any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_asc_desc: ASC { $$ = SORTBY_ASC; } 0.00 : 51ef18: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51ef1f: ff ff ff 0.00 : 51ef22: 49 21 c6 and %rax,%r14 0.00 : 51ef25: 49 83 ce 01 or $0x1,%r14 : | DESC { $$ = SORTBY_DESC; } 0.00 : 51ef29: e9 52 2a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_class: any_name { $$ = $1; } : | USING any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef2e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51ef31: e9 4a 2a ff ff jmpq 511980 : opt_collate: COLLATE any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_class: any_name { $$ = $1; } : | USING any_name { $$ = $2; } 0.00 : 51ef36: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ef3d: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef40: e9 3b 2a ff ff jmpq 511980 : : opt_collate: COLLATE any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_class: any_name { $$ = $1; } 0.00 : 51ef45: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ef4c: 4c 8b 33 mov (%rbx),%r14 : | USING any_name { $$ = $2; } 0.00 : 51ef4f: e9 2c 2a ff ff jmpq 511980 : $$->nulls_ordering = $7; : } : ; : : opt_collate: COLLATE any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef54: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51ef57: e9 24 2a ff ff jmpq 511980 : $$->ordering = $6; : $$->nulls_ordering = $7; : } : ; : : opt_collate: COLLATE any_name { $$ = $2; } 0.00 : 51ef5c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ef63: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef66: e9 15 2a ff ff jmpq 511980 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51ef6b: 48 8b 3d ee b8 69 00 mov 0x69b8ee(%rip),%rdi # bba860 0.00 : 51ef72: be 38 00 00 00 mov $0x38,%esi 0.00 : 51ef77: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ef7e: e8 8d 9e 27 00 callq 798e10 0.00 : 51ef83: c7 00 97 03 00 00 movl $0x397,(%rax) : $$->name = NULL; 0.00 : 51ef89: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ef90: 00 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51ef91: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->expr = $2; 0.00 : 51ef94: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ef9b: 48 8b 42 d8 mov -0x28(%rdx),%rax : $$->indexcolname = NULL; 0.00 : 51ef9f: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 51efa6: 00 : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); : $$->name = NULL; : $$->expr = $2; 0.00 : 51efa7: 49 89 46 10 mov %rax,0x10(%r14) : $$->indexcolname = NULL; : $$->collation = $4; 0.00 : 51efab: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 51efaf: 49 89 46 20 mov %rax,0x20(%r14) : $$->opclass = $5; 0.00 : 51efb3: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 51efb7: 49 89 46 28 mov %rax,0x28(%r14) : $$->ordering = $6; 0.00 : 51efbb: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 51efbe: 41 89 46 30 mov %eax,0x30(%r14) : $$->nulls_ordering = $7; 0.00 : 51efc2: 8b 02 mov (%rdx),%eax 0.00 : 51efc4: 41 89 46 34 mov %eax,0x34(%r14) : } : ; 0.00 : 51efc8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51efcf: e9 ac 29 ff ff jmpq 511980 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51efd4: 48 8b 3d 85 b8 69 00 mov 0x69b885(%rip),%rdi # bba860 0.00 : 51efdb: be 38 00 00 00 mov $0x38,%esi 0.00 : 51efe0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51efe7: e8 24 9e 27 00 callq 798e10 0.00 : 51efec: c7 00 97 03 00 00 movl $0x397,(%rax) : $$->name = NULL; 0.00 : 51eff2: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51eff9: 00 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51effa: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->expr = $1; 0.00 : 51effd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f004: 48 8b 46 e0 mov -0x20(%rsi),%rax : $$->indexcolname = NULL; 0.00 : 51f008: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 51f00f: 00 : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); : $$->name = NULL; : $$->expr = $1; 0.00 : 51f010: 49 89 46 10 mov %rax,0x10(%r14) : $$->indexcolname = NULL; : $$->collation = $2; 0.00 : 51f014: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51f018: 49 89 46 20 mov %rax,0x20(%r14) : $$->opclass = $3; 0.00 : 51f01c: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 51f020: 49 89 46 28 mov %rax,0x28(%r14) : $$->ordering = $4; 0.00 : 51f024: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 51f027: 41 89 46 30 mov %eax,0x30(%r14) : $$->nulls_ordering = $5; 0.00 : 51f02b: 8b 06 mov (%rsi),%eax 0.00 : 51f02d: 41 89 46 34 mov %eax,0x34(%r14) : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order 0.00 : 51f031: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f038: e9 43 29 ff ff jmpq 511980 : * expressions in parens. For backwards-compatibility reasons, we allow : * an expression that's just a function call to be written without parens. : */ : index_elem: ColId opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51f03d: 48 8b 3d 1c b8 69 00 mov 0x69b81c(%rip),%rdi # bba860 0.00 : 51f044: be 38 00 00 00 mov $0x38,%esi 0.00 : 51f049: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f050: e8 bb 9d 27 00 callq 798e10 0.00 : 51f055: c7 00 97 03 00 00 movl $0x397,(%rax) : $$->name = $1; 0.00 : 51f05b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : * expressions in parens. For backwards-compatibility reasons, we allow : * an expression that's just a function call to be written without parens. : */ : index_elem: ColId opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51f062: 49 89 c6 mov %rax,%r14 : $$->name = $1; 0.00 : 51f065: 48 8b 43 e0 mov -0x20(%rbx),%rax : $$->expr = NULL; 0.00 : 51f069: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 51f070: 00 : $$->indexcolname = NULL; 0.00 : 51f071: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 51f078: 00 : * an expression that's just a function call to be written without parens. : */ : index_elem: ColId opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); : $$->name = $1; 0.00 : 51f079: 49 89 46 08 mov %rax,0x8(%r14) : $$->expr = NULL; : $$->indexcolname = NULL; : $$->collation = $2; 0.00 : 51f07d: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 51f081: 49 89 46 20 mov %rax,0x20(%r14) : $$->opclass = $3; 0.00 : 51f085: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 51f089: 49 89 46 28 mov %rax,0x28(%r14) : $$->ordering = $4; 0.00 : 51f08d: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 51f090: 41 89 46 30 mov %eax,0x30(%r14) : $$->nulls_ordering = $5; 0.00 : 51f094: 8b 03 mov (%rbx),%eax 0.00 : 51f096: 41 89 46 34 mov %eax,0x34(%r14) : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order 0.00 : 51f09a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f0a1: e9 da 28 ff ff jmpq 511980 : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0a6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f0ad: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51f0b1: 48 8b 31 mov (%rcx),%rsi 0.00 : 51f0b4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f0bb: e8 c0 2d 0c 00 callq 5e1e80 : ; 0.00 : 51f0c0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0c7: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51f0ca: e9 b1 28 ff ff jmpq 511980 : access_method_clause: : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } 0.00 : 51f0cf: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f0d6: 31 f6 xor %esi,%esi 0.00 : 51f0d8: 48 8b 3a mov (%rdx),%rdi 0.00 : 51f0db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f0e2: e8 69 27 0c 00 callq 5e1850 : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : access_method_clause: : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } 0.00 : 51f0ee: 49 89 c6 mov %rax,%r14 : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0f1: e9 8a 28 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : access_method_clause: : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } 0.00 : 51f0f6: 41 be 5e 43 7b 00 mov $0x7b435e,%r14d : ; 0.00 : 51f0fc: e9 7f 28 ff ff jmpq 511980 : index_name { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } : ; : : access_method_clause: : USING access_method { $$ = $2; } 0.00 : 51f101: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51f108: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } 0.00 : 51f10b: e9 70 28 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_index_name: : index_name { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51f110: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f113: e9 68 28 ff ff jmpq 511980 : CONCURRENTLY { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_index_name: : index_name { $$ = $1; } 0.00 : 51f118: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f11f: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51f122: e9 59 28 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_concurrently: : CONCURRENTLY { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f127: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51f12a: e9 51 28 ff ff jmpq 511980 : UNIQUE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_concurrently: : CONCURRENTLY { $$ = TRUE; } 0.00 : 51f12f: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f132: e9 49 28 ff ff jmpq 511980 : } : ; : : opt_unique: : UNIQUE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f137: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51f13a: e9 41 28 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_unique: : UNIQUE { $$ = TRUE; } 0.00 : 51f13f: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f142: e9 39 28 ff ff jmpq 511980 : : IndexStmt: CREATE opt_unique INDEX opt_concurrently opt_index_name : ON qualified_name access_method_clause '(' index_params ')' : opt_reloptions OptTableSpace where_clause : { : IndexStmt *n = makeNode(IndexStmt); 0.00 : 51f147: 48 8b 3d 12 b7 69 00 mov 0x69b712(%rip),%rdi # bba860 0.00 : 51f14e: be 60 00 00 00 mov $0x60,%esi 0.00 : 51f153: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f15a: e8 b1 9c 27 00 callq 798e10 0.00 : 51f15f: c7 00 d2 02 00 00 movl $0x2d2,(%rax) : n->unique = $2; 0.00 : 51f165: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->oldNode = InvalidOid; : n->primary = false; : n->isconstraint = false; : n->deferrable = false; : n->initdeferred = false; : $$ = (Node *)n; 0.00 : 51f16c: 49 89 c6 mov %rax,%r14 : IndexStmt: CREATE opt_unique INDEX opt_concurrently opt_index_name : ON qualified_name access_method_clause '(' index_params ')' : opt_reloptions OptTableSpace where_clause : { : IndexStmt *n = makeNode(IndexStmt); : n->unique = $2; 0.00 : 51f16f: 0f b6 53 a0 movzbl -0x60(%rbx),%edx 0.00 : 51f173: 88 50 58 mov %dl,0x58(%rax) : n->concurrent = $4; 0.00 : 51f176: 0f b6 53 b0 movzbl -0x50(%rbx),%edx 0.00 : 51f17a: 88 50 5d mov %dl,0x5d(%rax) : n->idxname = $5; 0.00 : 51f17d: 48 8b 53 b8 mov -0x48(%rbx),%rdx 0.00 : 51f181: 48 89 50 08 mov %rdx,0x8(%rax) : n->relation = $7; 0.00 : 51f185: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 51f189: 48 89 50 10 mov %rdx,0x10(%rax) : n->accessMethod = $8; 0.00 : 51f18d: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 51f191: 48 89 50 18 mov %rdx,0x18(%rax) : n->indexParams = $10; 0.00 : 51f195: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51f199: 48 89 50 28 mov %rdx,0x28(%rax) : n->options = $12; 0.00 : 51f19d: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51f1a1: 48 89 50 30 mov %rdx,0x30(%rax) : n->tableSpace = $13; 0.00 : 51f1a5: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51f1a9: 48 89 50 20 mov %rdx,0x20(%rax) : n->whereClause = $14; 0.00 : 51f1ad: 48 8b 13 mov (%rbx),%rdx : n->excludeOpNames = NIL; 0.00 : 51f1b0: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 51f1b7: 00 : n->idxcomment = NULL; 0.00 : 51f1b8: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 51f1bf: 00 : n->indexOid = InvalidOid; 0.00 : 51f1c0: c7 40 50 00 00 00 00 movl $0x0,0x50(%rax) : n->oldNode = InvalidOid; 0.00 : 51f1c7: c7 40 54 00 00 00 00 movl $0x0,0x54(%rax) : n->relation = $7; : n->accessMethod = $8; : n->indexParams = $10; : n->options = $12; : n->tableSpace = $13; : n->whereClause = $14; 0.00 : 51f1ce: 48 89 50 38 mov %rdx,0x38(%rax) : n->excludeOpNames = NIL; : n->idxcomment = NULL; : n->indexOid = InvalidOid; : n->oldNode = InvalidOid; : n->primary = false; 0.00 : 51f1d2: c6 40 59 00 movb $0x0,0x59(%rax) : n->isconstraint = false; 0.00 : 51f1d6: c6 40 5a 00 movb $0x0,0x5a(%rax) : n->deferrable = false; 0.00 : 51f1da: c6 40 5b 00 movb $0x0,0x5b(%rax) : n->initdeferred = false; 0.00 : 51f1de: c6 40 5c 00 movb $0x0,0x5c(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51f1e2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f1e9: e9 92 27 ff ff jmpq 511980 : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } : | SEQUENCES { $$ = ACL_OBJECT_SEQUENCE; } : | TYPES_P { $$ = ACL_OBJECT_TYPE; } 0.00 : 51f1ee: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51f1f5: ff ff ff 0.00 : 51f1f8: 49 21 ce and %rcx,%r14 0.00 : 51f1fb: 49 83 ce 0c or $0xc,%r14 : ; 0.00 : 51f1ff: e9 7c 27 ff ff jmpq 511980 : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } : | INOUT { $$ = FUNC_PARAM_INOUT; } : | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f204: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51f20b: ff ff ff 0.00 : 51f20e: 49 21 ce and %rcx,%r14 0.00 : 51f211: 49 83 ce 62 or $0x62,%r14 : | VARIADIC { $$ = FUNC_PARAM_VARIADIC; } 0.00 : 51f215: e9 66 27 ff ff jmpq 511980 : ; : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } : | INOUT { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f21a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51f221: ff ff ff 0.00 : 51f224: 49 21 d6 and %rdx,%r14 0.00 : 51f227: 49 83 ce 62 or $0x62,%r14 : | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f22b: e9 50 27 ff ff jmpq 511980 : } : ; : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } 0.00 : 51f230: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51f237: ff ff ff 0.00 : 51f23a: 49 21 c6 and %rax,%r14 0.00 : 51f23d: 49 83 ce 6f or $0x6f,%r14 : | INOUT { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f241: e9 3a 27 ff ff jmpq 511980 : $$ = n; : } : ; : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } 0.00 : 51f246: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51f24d: ff ff ff 0.00 : 51f250: 49 21 f6 and %rsi,%r14 0.00 : 51f253: 49 83 ce 69 or $0x69,%r14 : | OUT_P { $$ = FUNC_PARAM_OUT; } 0.00 : 51f257: e9 24 27 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f25c: 48 8b 3d fd b5 69 00 mov 0x69b5fd(%rip),%rdi # bba860 0.00 : 51f263: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f268: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f26f: e8 9c 9b 27 00 callq 798e10 0.00 : 51f274: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = NULL; 0.00 : 51f27a: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51f281: 00 : n->argType = $1; : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; 0.00 : 51f282: 49 89 c6 mov %rax,%r14 : } : | func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $1; 0.00 : 51f285: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51f28c: 48 8b 13 mov (%rbx),%rdx : n->mode = FUNC_PARAM_IN; 0.00 : 51f28f: c7 40 18 69 00 00 00 movl $0x69,0x18(%rax) : n->defexpr = NULL; 0.00 : 51f296: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f29d: 00 : } : | func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $1; 0.00 : 51f29e: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; : } : ; 0.00 : 51f2a2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f2a9: e9 d2 26 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f2ae: 48 8b 3d ab b5 69 00 mov 0x69b5ab(%rip),%rdi # bba860 0.00 : 51f2b5: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f2ba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f2c1: e8 4a 9b 27 00 callq 798e10 0.00 : 51f2c6: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = NULL; 0.00 : 51f2cc: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51f2d3: 00 : n->argType = $2; : n->mode = $1; : n->defexpr = NULL; : $$ = n; 0.00 : 51f2d4: 49 89 c6 mov %rax,%r14 : } : | arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $2; 0.00 : 51f2d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f2de: 48 8b 11 mov (%rcx),%rdx 0.00 : 51f2e1: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = $1; 0.00 : 51f2e5: 8b 51 f8 mov -0x8(%rcx),%edx : n->defexpr = NULL; 0.00 : 51f2e8: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f2ef: 00 : | arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $2; : n->mode = $1; 0.00 : 51f2f0: 89 50 18 mov %edx,0x18(%rax) : n->defexpr = NULL; : $$ = n; : } : | func_type 0.00 : 51f2f3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f2fa: e9 81 26 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f2ff: 48 8b 3d 5a b5 69 00 mov 0x69b55a(%rip),%rdi # bba860 0.00 : 51f306: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f30b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f312: e8 f9 9a 27 00 callq 798e10 0.00 : 51f317: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $1; 0.00 : 51f31d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->argType = $2; : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; 0.00 : 51f324: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; 0.00 : 51f327: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51f32b: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $2; 0.00 : 51f32f: 48 8b 16 mov (%rsi),%rdx : n->mode = FUNC_PARAM_IN; 0.00 : 51f332: c7 40 18 69 00 00 00 movl $0x69,0x18(%rax) : n->defexpr = NULL; 0.00 : 51f339: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f340: 00 : } : | param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; : n->argType = $2; 0.00 : 51f341: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; : } : | arg_class func_type 0.00 : 51f345: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f34c: e9 2f 26 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | param_name arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f351: 48 8b 3d 08 b5 69 00 mov 0x69b508(%rip),%rdi # bba860 0.00 : 51f358: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f35d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f364: e8 a7 9a 27 00 callq 798e10 0.00 : 51f369: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $1; 0.00 : 51f36f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->argType = $3; : n->mode = $2; : n->defexpr = NULL; : $$ = n; 0.00 : 51f376: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | param_name arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; 0.00 : 51f379: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51f37d: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $3; 0.00 : 51f381: 48 8b 13 mov (%rbx),%rdx 0.00 : 51f384: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = $2; 0.00 : 51f388: 8b 53 f8 mov -0x8(%rbx),%edx : n->defexpr = NULL; 0.00 : 51f38b: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f392: 00 : | param_name arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; : n->argType = $3; : n->mode = $2; 0.00 : 51f393: 89 50 18 mov %edx,0x18(%rax) : n->defexpr = NULL; : $$ = n; : } : | param_name func_type 0.00 : 51f396: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f39d: e9 de 25 ff ff jmpq 511980 : * - thomas 2000-03-22 : */ : func_arg: : arg_class param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f3a2: 48 8b 3d b7 b4 69 00 mov 0x69b4b7(%rip),%rdi # bba860 0.00 : 51f3a9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f3ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f3b5: e8 56 9a 27 00 callq 798e10 0.00 : 51f3ba: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $2; 0.00 : 51f3c0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->argType = $3; : n->mode = $1; : n->defexpr = NULL; : $$ = n; 0.00 : 51f3c7: 49 89 c6 mov %rax,%r14 : */ : func_arg: : arg_class param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $2; 0.00 : 51f3ca: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51f3ce: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $3; 0.00 : 51f3d2: 48 8b 11 mov (%rcx),%rdx 0.00 : 51f3d5: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = $1; 0.00 : 51f3d9: 8b 51 f0 mov -0x10(%rcx),%edx : n->defexpr = NULL; 0.00 : 51f3dc: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f3e3: 00 : arg_class param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $2; : n->argType = $3; : n->mode = $1; 0.00 : 51f3e4: 89 50 18 mov %edx,0x18(%rax) : n->defexpr = NULL; : $$ = n; : } : | param_name arg_class func_type 0.00 : 51f3e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f3ee: e9 8d 25 ff ff jmpq 511980 : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } : | func_args_with_defaults_list ',' func_arg_with_default : { $$ = lappend($1, $3); } 0.00 : 51f3f3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f3fa: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51f3fe: 48 8b 36 mov (%rsi),%rsi 0.00 : 51f401: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f408: e8 73 2a 0c 00 callq 5e1e80 : ; 0.00 : 51f40d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } : | func_args_with_defaults_list ',' func_arg_with_default : { $$ = lappend($1, $3); } 0.00 : 51f414: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51f417: e9 64 25 ff ff jmpq 511980 : '(' func_args_with_defaults_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } 0.00 : 51f41c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51f423: 31 f6 xor %esi,%esi 0.00 : 51f425: 48 8b 3b mov (%rbx),%rdi 0.00 : 51f428: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f42f: e8 1c 24 0c 00 callq 5e1850 : | func_args_with_defaults_list ',' func_arg_with_default 0.00 : 51f434: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : '(' func_args_with_defaults_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } 0.00 : 51f43b: 49 89 c6 mov %rax,%r14 : | func_args_with_defaults_list ',' func_arg_with_default 0.00 : 51f43e: e9 3d 25 ff ff jmpq 511980 : * func_args_with_defaults is separate because we only want to accept : * defaults in CREATE FUNCTION, not in ALTER etc. : */ : func_args_with_defaults: : '(' func_args_with_defaults_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } 0.00 : 51f443: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f446: e9 35 25 ff ff jmpq 511980 : /* : * func_args_with_defaults is separate because we only want to accept : * defaults in CREATE FUNCTION, not in ALTER etc. : */ : func_args_with_defaults: : '(' func_args_with_defaults_list ')' { $$ = $2; } 0.00 : 51f44b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f452: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | '(' ')' { $$ = NIL; } 0.00 : 51f456: e9 25 25 ff ff jmpq 511980 : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f45b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f462: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51f466: 48 8b 32 mov (%rdx),%rsi 0.00 : 51f469: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f470: e8 0b 2a 0c 00 callq 5e1e80 : ; 0.00 : 51f475: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f47c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51f47f: e9 fc 24 ff ff jmpq 511980 : func_args: '(' func_args_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } 0.00 : 51f484: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51f48b: 31 f6 xor %esi,%esi 0.00 : 51f48d: 48 8b 38 mov (%rax),%rdi 0.00 : 51f490: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f497: e8 b4 23 0c 00 callq 5e1850 : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f49c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : func_args: '(' func_args_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } 0.00 : 51f4a3: 49 89 c6 mov %rax,%r14 : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f4a6: e9 d5 24 ff ff jmpq 511980 : OR REPLACE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : func_args: '(' func_args_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } 0.00 : 51f4ab: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f4ae: e9 cd 24 ff ff jmpq 511980 : * is next best choice. : */ : func_type: Typename { $$ = $1; } : | type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 51f4b3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f4ba: 48 8b 5a f0 mov -0x10(%rdx),%rbx 0.00 : 51f4be: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51f4c2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f4c9: e8 22 02 0e 00 callq 5ff6f0 0.00 : 51f4ce: 48 89 de mov %rbx,%rsi 0.00 : 51f4d1: 48 89 c7 mov %rax,%rdi 0.00 : 51f4d4: e8 77 23 0c 00 callq 5e1850 0.00 : 51f4d9: 48 89 c7 mov %rax,%rdi 0.00 : 51f4dc: e8 4f 21 0d 00 callq 5f1630 : $$->pct_type = true; 0.00 : 51f4e1: c6 40 15 01 movb $0x1,0x15(%rax) : $$->location = @1; 0.00 : 51f4e5: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : * is next best choice. : */ : func_type: Typename { $$ = $1; } : | type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 51f4ec: 49 89 c6 mov %rax,%r14 : $$->pct_type = true; : $$->location = @1; 0.00 : 51f4ef: 8b 41 f4 mov -0xc(%rcx),%eax 0.00 : 51f4f2: 41 89 46 30 mov %eax,0x30(%r14) : } : | SETOF type_function_name attrs '%' TYPE_P 0.00 : 51f4f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f4fd: e9 7e 24 ff ff jmpq 511980 : /* : * We would like to make the %TYPE productions here be ColId attrs etc, : * but that causes reduce/reduce conflicts. type_function_name : * is next best choice. : */ : func_type: Typename { $$ = $1; } 0.00 : 51f502: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51f509: 4c 8b 30 mov (%rax),%r14 : | type_function_name attrs '%' TYPE_P 0.00 : 51f50c: e9 6f 24 ff ff jmpq 511980 : { : /* We can catch over-specified results here if we want to, : * but for now better to silently swallow typmod, etc. : * - thomas 2000-03-22 : */ : $$ = $1; 0.00 : 51f511: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f518: 4c 8b 36 mov (%rsi),%r14 : } : ; 0.00 : 51f51b: e9 60 24 ff ff jmpq 511980 : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } : | INOUT { $$ = FUNC_PARAM_INOUT; } : | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } : | VARIADIC { $$ = FUNC_PARAM_VARIADIC; } 0.00 : 51f520: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51f527: ff ff ff 0.00 : 51f52a: 49 21 de and %rbx,%r14 0.00 : 51f52d: 49 83 ce 76 or $0x76,%r14 : ; 0.00 : 51f531: e9 4a 24 ff ff jmpq 511980 : ; : : func_arg_with_default: : func_arg : { : $$ = $1; 0.00 : 51f536: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f53d: 4c 8b 31 mov (%rcx),%r14 : } : | func_arg DEFAULT a_expr 0.00 : 51f540: e9 3b 24 ff ff jmpq 511980 : $$->pct_type = true; : $$->location = @1; : } : | SETOF type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($2), $3)); 0.00 : 51f545: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f54c: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51f550: 48 8b 5e f0 mov -0x10(%rsi),%rbx 0.00 : 51f554: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f55b: e8 90 01 0e 00 callq 5ff6f0 0.00 : 51f560: 48 89 de mov %rbx,%rsi 0.00 : 51f563: 48 89 c7 mov %rax,%rdi 0.00 : 51f566: e8 e5 22 0c 00 callq 5e1850 0.00 : 51f56b: 48 89 c7 mov %rax,%rdi 0.00 : 51f56e: e8 bd 20 0d 00 callq 5f1630 : $$->pct_type = true; 0.00 : 51f573: c6 40 15 01 movb $0x1,0x15(%rax) : $$->setof = TRUE; 0.00 : 51f577: c6 40 14 01 movb $0x1,0x14(%rax) : $$->pct_type = true; : $$->location = @1; : } : | SETOF type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($2), $3)); 0.00 : 51f57b: 49 89 c6 mov %rax,%r14 : $$->pct_type = true; : $$->setof = TRUE; : $$->location = @2; 0.00 : 51f57e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51f585: 8b 42 f4 mov -0xc(%rdx),%eax 0.00 : 51f588: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 51f58c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f593: e9 e8 23 ff ff jmpq 511980 : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f598: 48 8b 3d c1 b2 69 00 mov 0x69b2c1(%rip),%rdi # bba860 0.00 : 51f59f: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f5a4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f5ab: e8 60 98 27 00 callq 798e10 0.00 : 51f5b0: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f5b6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f5bd: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f5c0: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_BACKWARD; 0.00 : 51f5c3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->howMany = 1; 0.00 : 51f5ca: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f5d1: 00 : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f5d2: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name 0.00 : 51f5d6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f5dd: e9 9e 23 ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f5e2: 48 8b 3d 77 b2 69 00 mov 0x69b277(%rip),%rdi # bba860 0.00 : 51f5e9: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f5ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f5f5: e8 16 98 27 00 callq 798e10 0.00 : 51f5fa: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f600: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; 0.00 : 51f607: 48 be ff ff ff ff ff movabs $0x7fffffffffffffff,%rsi 0.00 : 51f60e: ff ff 7f : $$ = (Node *)n; 0.00 : 51f611: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f614: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f617: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = FETCH_ALL; 0.00 : 51f61e: 48 89 70 08 mov %rsi,0x8(%rax) : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f622: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name 0.00 : 51f626: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f62d: e9 4e 23 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f632: 48 8b 3d 27 b2 69 00 mov 0x69b227(%rip),%rdi # bba860 0.00 : 51f639: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f63e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f645: e8 c6 97 27 00 callq 798e10 0.00 : 51f64a: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f650: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_FORWARD; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51f657: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f65a: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f65d: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f664: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = $2; 0.00 : 51f668: 48 63 56 f0 movslq -0x10(%rsi),%rdx 0.00 : 51f66c: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name 0.00 : 51f670: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f677: e9 04 23 ff ff jmpq 511980 : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f67c: 48 8b 3d dd b1 69 00 mov 0x69b1dd(%rip),%rdi # bba860 0.00 : 51f683: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f688: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f68f: e8 7c 97 27 00 callq 798e10 0.00 : 51f694: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f69a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f6a1: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f6a4: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f6a7: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f6ae: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f6b5: 00 : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f6b6: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name 0.00 : 51f6ba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f6c1: e9 ba 22 ff ff jmpq 511980 : n->howMany = $1; : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f6c6: 48 8b 3d 93 b1 69 00 mov 0x69b193(%rip),%rdi # bba860 0.00 : 51f6cd: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f6d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f6d9: e8 32 97 27 00 callq 798e10 0.00 : 51f6de: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f6e4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; 0.00 : 51f6eb: 48 bf ff ff ff ff ff movabs $0x7fffffffffffffff,%rdi 0.00 : 51f6f2: ff ff 7f : $$ = (Node *)n; 0.00 : 51f6f5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f6f8: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f6fb: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = FETCH_ALL; 0.00 : 51f702: 48 89 78 08 mov %rdi,0x8(%rax) : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f706: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name 0.00 : 51f70a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f711: e9 6a 22 ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f716: 48 8b 3d 43 b1 69 00 mov 0x69b143(%rip),%rdi # bba860 0.00 : 51f71d: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f722: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f729: e8 e2 96 27 00 callq 798e10 0.00 : 51f72e: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f734: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_FORWARD; : n->howMany = $1; : $$ = (Node *)n; 0.00 : 51f73b: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f73e: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f741: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f748: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = $1; 0.00 : 51f74c: 48 63 56 f0 movslq -0x10(%rsi),%rdx 0.00 : 51f750: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name 0.00 : 51f754: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f75b: e9 20 22 ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f760: 48 8b 3d f9 b0 69 00 mov 0x69b0f9(%rip),%rdi # bba860 0.00 : 51f767: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f76c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f773: e8 98 96 27 00 callq 798e10 0.00 : 51f778: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f77e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_RELATIVE; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51f785: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f788: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_RELATIVE; 0.00 : 51f78b: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f792: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_RELATIVE; : n->howMany = $2; 0.00 : 51f796: 48 63 53 f0 movslq -0x10(%rbx),%rdx 0.00 : 51f79a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name 0.00 : 51f79e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f7a5: e9 d6 21 ff ff jmpq 511980 : n->howMany = -1; : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f7aa: 48 8b 3d af b0 69 00 mov 0x69b0af(%rip),%rdi # bba860 0.00 : 51f7b1: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f7b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f7bd: e8 4e 96 27 00 callq 798e10 0.00 : 51f7c2: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f7c8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_ABSOLUTE; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51f7cf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f7d2: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_ABSOLUTE; 0.00 : 51f7d5: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f7dc: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_ABSOLUTE; : n->howMany = $2; 0.00 : 51f7e0: 48 63 51 f0 movslq -0x10(%rcx),%rdx 0.00 : 51f7e4: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name 0.00 : 51f7e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f7ef: e9 8c 21 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f7f4: 48 8b 3d 65 b0 69 00 mov 0x69b065(%rip),%rdi # bba860 0.00 : 51f7fb: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f800: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f807: e8 04 96 27 00 callq 798e10 0.00 : 51f80c: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f812: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_ABSOLUTE; : n->howMany = -1; : $$ = (Node *)n; 0.00 : 51f819: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f81c: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_ABSOLUTE; 0.00 : 51f81f: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->howMany = -1; 0.00 : 51f826: 48 c7 40 08 ff ff ff movq $0xffffffffffffffff,0x8(%rax) 0.00 : 51f82d: ff : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f82e: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_ABSOLUTE; : n->howMany = -1; : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name 0.00 : 51f832: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f839: e9 42 21 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f83e: 48 8b 3d 1b b0 69 00 mov 0x69b01b(%rip),%rdi # bba860 0.00 : 51f845: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f84a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f851: e8 ba 95 27 00 callq 798e10 0.00 : 51f856: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f85c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_ABSOLUTE; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f863: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f866: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_ABSOLUTE; 0.00 : 51f869: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->howMany = 1; 0.00 : 51f870: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f877: 00 : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f878: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_ABSOLUTE; : n->howMany = 1; : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name 0.00 : 51f87c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f883: e9 f8 20 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f888: 48 8b 3d d1 af 69 00 mov 0x69afd1(%rip),%rdi # bba860 0.00 : 51f88f: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f894: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f89b: e8 70 95 27 00 callq 798e10 0.00 : 51f8a0: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f8a6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f8ad: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f8b0: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_BACKWARD; 0.00 : 51f8b3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->howMany = 1; 0.00 : 51f8ba: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f8c1: 00 : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f8c2: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name 0.00 : 51f8c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f8cd: e9 ae 20 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f8d2: 48 8b 3d 87 af 69 00 mov 0x69af87(%rip),%rdi # bba860 0.00 : 51f8d9: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f8de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f8e5: e8 26 95 27 00 callq 798e10 0.00 : 51f8ea: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f8f0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f8f7: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f8fa: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f8fd: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f904: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f90b: 00 : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f90c: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name 0.00 : 51f910: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f917: e9 64 20 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f91c: 48 8b 3d 3d af 69 00 mov 0x69af3d(%rip),%rdi # bba860 0.00 : 51f923: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f928: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f92f: e8 dc 94 27 00 callq 798e10 0.00 : 51f934: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $2; 0.00 : 51f93a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f941: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $2; 0.00 : 51f944: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f947: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f94e: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f955: 00 : $$ = (Node *)n; : } : | from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $2; 0.00 : 51f956: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name 0.00 : 51f95a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f961: e9 1a 20 ff ff jmpq 511980 : } : ; : : fetch_args: cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f966: 48 8b 3d f3 ae 69 00 mov 0x69aef3(%rip),%rdi # bba860 0.00 : 51f96d: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f972: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f979: e8 92 94 27 00 callq 798e10 0.00 : 51f97e: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $1; 0.00 : 51f984: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f98b: 49 89 c6 mov %rax,%r14 : ; : : fetch_args: cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $1; 0.00 : 51f98e: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f991: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f998: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f99f: 00 : ; : : fetch_args: cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $1; 0.00 : 51f9a0: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | from_in cursor_name 0.00 : 51f9a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f9ab: e9 d0 1f ff ff jmpq 511980 : n->ismove = FALSE; : $$ = (Node *)n; : } : | MOVE fetch_args : { : FetchStmt *n = (FetchStmt *) $2; 0.00 : 51f9b0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f9b7: 48 8b 02 mov (%rdx),%rax : n->ismove = TRUE; 0.00 : 51f9ba: c6 40 18 01 movb $0x1,0x18(%rax) : $$ = (Node *)n; 0.00 : 51f9be: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51f9c1: e9 ba 1f ff ff jmpq 511980 : * : *****************************************************************************/ : : FetchStmt: FETCH fetch_args : { : FetchStmt *n = (FetchStmt *) $2; 0.00 : 51f9c6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f9cd: 48 8b 06 mov (%rsi),%rax : n->ismove = FALSE; 0.00 : 51f9d0: c6 40 18 00 movb $0x0,0x18(%rax) : $$ = (Node *)n; 0.00 : 51f9d4: 49 89 c6 mov %rax,%r14 : } : | MOVE fetch_args 0.00 : 51f9d7: e9 a4 1f ff ff jmpq 511980 : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : ; : : security_label: Sconst { $$ = $1; } : | NULL_P { $$ = NULL; } 0.00 : 51f9dc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f9df: e9 9c 1f ff ff jmpq 511980 : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : ; : : security_label: Sconst { $$ = $1; } 0.00 : 51f9e4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51f9eb: 4c 8b 33 mov (%rbx),%r14 : | NULL_P { $$ = NULL; } 0.00 : 51f9ee: e9 8d 1f ff ff jmpq 511980 : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51f9f3: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51f9fa: ff ff ff 0.00 : 51f9fd: 49 21 ce and %rcx,%r14 0.00 : 51fa00: 49 83 ce 12 or $0x12,%r14 : ; 0.00 : 51fa04: e9 77 1f ff ff jmpq 511980 : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fa09: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fa10: ff ff ff 0.00 : 51fa13: 49 21 d6 and %rdx,%r14 0.00 : 51fa16: 49 83 ce 23 or $0x23,%r14 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51fa1a: e9 61 1f ff ff jmpq 511980 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fa1f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fa26: ff ff ff 0.00 : 51fa29: 49 21 c6 and %rax,%r14 0.00 : 51fa2c: 49 83 ce 22 or $0x22,%r14 : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fa30: e9 4b 1f ff ff jmpq 511980 : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fa35: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fa3c: ff ff ff 0.00 : 51fa3f: 49 21 f6 and %rsi,%r14 0.00 : 51fa42: 49 83 ce 1c or $0x1c,%r14 : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fa46: e9 35 1f ff ff jmpq 511980 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fa4b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fa52: ff ff ff 0.00 : 51fa55: 49 21 de and %rbx,%r14 0.00 : 51fa58: 49 83 ce 17 or $0x17,%r14 : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fa5c: e9 1f 1f ff ff jmpq 511980 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } 0.00 : 51fa61: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fa68: ff ff ff 0.00 : 51fa6b: 49 21 ce and %rcx,%r14 0.00 : 51fa6e: 49 83 ce 22 or $0x22,%r14 : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fa72: e9 09 1f ff ff jmpq 511980 : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fa77: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fa7e: ff ff ff 0.00 : 51fa81: 49 21 d6 and %rdx,%r14 0.00 : 51fa84: 49 83 ce 1b or $0x1b,%r14 : | DOMAIN_P { $$ = OBJECT_TYPE; } 0.00 : 51fa88: e9 f3 1e ff ff jmpq 511980 : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51fa8d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fa94: ff ff ff 0.00 : 51fa97: 49 21 c6 and %rax,%r14 0.00 : 51fa9a: 49 83 ce 1a or $0x1a,%r14 : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fa9e: e9 dd 1e ff ff jmpq 511980 : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51faa3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51faaa: ff ff ff 0.00 : 51faad: 49 21 f6 and %rsi,%r14 0.00 : 51fab0: 49 83 ce 19 or $0x19,%r14 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51fab4: e9 c7 1e ff ff jmpq 511980 : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fab9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fac0: ff ff ff 0.00 : 51fac3: 49 21 de and %rbx,%r14 0.00 : 51fac6: 49 83 ce 0d or $0xd,%r14 : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51faca: e9 b1 1e ff ff jmpq 511980 : ; : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51facf: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fad6: ff ff ff 0.00 : 51fad9: 49 21 ce and %rcx,%r14 0.00 : 51fadc: 49 83 ce 09 or $0x9,%r14 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fae0: e9 9b 1e ff ff jmpq 511980 : | /* empty */ { $$ = NULL; } : ; : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51fae5: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51faec: ff ff ff 0.00 : 51faef: 49 21 d6 and %rdx,%r14 0.00 : 51faf2: 49 83 ce 07 or $0x7,%r14 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51faf6: e9 85 1e ff ff jmpq 511980 : opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } : | /* empty */ { $$ = NULL; } : ; : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } 0.00 : 51fafb: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fb02: ff ff ff 0.00 : 51fb05: 49 21 c6 and %rax,%r14 0.00 : 51fb08: 49 83 ce 03 or $0x3,%r14 : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51fb0c: e9 6f 1e ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } : | /* empty */ { $$ = NULL; } 0.00 : 51fb11: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51fb14: e9 67 1e ff ff jmpq 511980 : n->label = $9; : $$ = (Node *) n; : } : ; : : opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } 0.00 : 51fb19: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51fb20: 4c 8b 36 mov (%rsi),%r14 : | /* empty */ { $$ = NULL; } 0.00 : 51fb23: e9 58 1e ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fb28: 48 8b 3d 31 ad 69 00 mov 0x69ad31(%rip),%rdi # bba860 0.00 : 51fb2f: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fb34: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fb3b: e8 d0 92 27 00 callq 798e10 0.00 : 51fb40: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fb46: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->objtype = OBJECT_LANGUAGE; : n->objname = $7; : n->objargs = NIL; : n->label = $9; : $$ = (Node *) n; 0.00 : 51fb4d: 49 89 c6 mov %rax,%r14 : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fb50: 48 8b 53 d0 mov -0x30(%rbx),%rdx : n->objtype = OBJECT_LANGUAGE; 0.00 : 51fb54: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fb5b: 48 89 50 18 mov %rdx,0x18(%rax) : n->objtype = OBJECT_LANGUAGE; : n->objname = $7; 0.00 : 51fb5f: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->objargs = NIL; 0.00 : 51fb63: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51fb6a: 00 : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; : n->objtype = OBJECT_LANGUAGE; : n->objname = $7; 0.00 : 51fb6b: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->label = $9; 0.00 : 51fb6f: 48 8b 13 mov (%rbx),%rdx 0.00 : 51fb72: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 51fb76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fb7d: e9 fe 1d ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fb82: 48 8b 3d d7 ac 69 00 mov 0x69acd7(%rip),%rdi # bba860 0.00 : 51fb89: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fb8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fb95: e8 76 92 27 00 callq 798e10 0.00 : 51fb9a: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fba0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fba7: 48 89 c3 mov %rax,%rbx : n->provider = $3; : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($7); 0.00 : 51fbaa: 31 f6 xor %esi,%esi : n->objargs = NIL; : n->label = $9; : $$ = (Node *) n; 0.00 : 51fbac: 49 89 de mov %rbx,%r14 : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fbaf: 48 8b 42 d0 mov -0x30(%rdx),%rax : n->objtype = OBJECT_LARGEOBJECT; 0.00 : 51fbb3: c7 43 04 11 00 00 00 movl $0x11,0x4(%rbx) : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fbba: 48 89 43 18 mov %rax,0x18(%rbx) : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($7); 0.00 : 51fbbe: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51fbc2: e8 89 1c 0c 00 callq 5e1850 : n->objargs = NIL; 0.00 : 51fbc7: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51fbce: 00 : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($7); 0.00 : 51fbcf: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->label = $9; 0.00 : 51fbd3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51fbda: 48 8b 01 mov (%rcx),%rax 0.00 : 51fbdd: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name 0.00 : 51fbe1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fbe8: e9 93 1d ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fbed: 48 8b 3d 6c ac 69 00 mov 0x69ac6c(%rip),%rdi # bba860 0.00 : 51fbf4: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fbf9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fc00: e8 0b 92 27 00 callq 798e10 0.00 : 51fc05: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fc0b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fc12: 48 89 c3 mov %rax,%rbx : n->provider = $3; : n->objtype = OBJECT_FUNCTION; : n->objname = $6; : n->objargs = extractArgTypes($7); : n->label = $9; : $$ = (Node *) n; 0.00 : 51fc15: 49 89 de mov %rbx,%r14 : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc18: 48 8b 41 d0 mov -0x30(%rcx),%rax : n->objtype = OBJECT_FUNCTION; 0.00 : 51fc1c: c7 43 04 0e 00 00 00 movl $0xe,0x4(%rbx) : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc23: 48 89 43 18 mov %rax,0x18(%rbx) : n->objtype = OBJECT_FUNCTION; : n->objname = $6; 0.00 : 51fc27: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 51fc2b: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractArgTypes($7); 0.00 : 51fc2f: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51fc33: e8 38 0e ff ff callq 510a70 0.00 : 51fc38: 48 89 43 10 mov %rax,0x10(%rbx) : n->label = $9; 0.00 : 51fc3c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51fc43: 48 8b 06 mov (%rsi),%rax 0.00 : 51fc46: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly 0.00 : 51fc4a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fc51: e9 2a 1d ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fc56: 48 8b 3d 03 ac 69 00 mov 0x69ac03(%rip),%rdi # bba860 0.00 : 51fc5d: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fc62: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fc69: e8 a2 91 27 00 callq 798e10 0.00 : 51fc6e: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fc74: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fc7b: 48 89 c3 mov %rax,%rbx : n->provider = $3; : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; : n->objargs = extractAggrArgTypes($7); : n->label = $9; : $$ = (Node *) n; 0.00 : 51fc7e: 49 89 de mov %rbx,%r14 : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc81: 48 8b 46 d0 mov -0x30(%rsi),%rax : n->objtype = OBJECT_AGGREGATE; 0.00 : 51fc85: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc8c: 48 89 43 18 mov %rax,0x18(%rbx) : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; 0.00 : 51fc90: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51fc94: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractAggrArgTypes($7); 0.00 : 51fc98: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51fc9c: e8 2f 0e ff ff callq 510ad0 0.00 : 51fca1: 48 89 43 10 mov %rax,0x10(%rbx) : n->label = $9; 0.00 : 51fca5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51fcac: 48 8b 02 mov (%rdx),%rax 0.00 : 51fcaf: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args 0.00 : 51fcb3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fcba: e9 c1 1c ff ff jmpq 511980 : : SecLabelStmt: : SECURITY LABEL opt_provider ON security_label_type any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fcbf: 48 8b 3d 9a ab 69 00 mov 0x69ab9a(%rip),%rdi # bba860 0.00 : 51fcc6: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fccb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fcd2: e8 39 91 27 00 callq 798e10 0.00 : 51fcd7: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fcdd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = $5; : n->objname = $6; : n->objargs = NIL; : n->label = $8; : $$ = (Node *) n; 0.00 : 51fce4: 49 89 c6 mov %rax,%r14 : SecLabelStmt: : SECURITY LABEL opt_provider ON security_label_type any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fce7: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51fceb: 48 89 50 18 mov %rdx,0x18(%rax) : n->objtype = $5; 0.00 : 51fcef: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 51fcf2: 89 50 04 mov %edx,0x4(%rax) : n->objname = $6; 0.00 : 51fcf5: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->objargs = NIL; 0.00 : 51fcf9: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51fd00: 00 : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; : n->objtype = $5; : n->objname = $6; 0.00 : 51fd01: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->label = $8; 0.00 : 51fd05: 48 8b 11 mov (%rcx),%rdx 0.00 : 51fd08: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args 0.00 : 51fd0c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fd13: e9 68 1c ff ff jmpq 511980 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : ; : : comment_text: : Sconst { $$ = $1; } : | NULL_P { $$ = NULL; } 0.00 : 51fd18: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51fd1b: e9 60 1c ff ff jmpq 511980 : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : ; : : comment_text: : Sconst { $$ = $1; } 0.00 : 51fd20: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51fd27: 4c 8b 32 mov (%rdx),%r14 : | NULL_P { $$ = NULL; } 0.00 : 51fd2a: e9 51 1c ff ff jmpq 511980 : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 51fd2f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fd36: ff ff ff 0.00 : 51fd39: 49 21 c6 and %rax,%r14 0.00 : 51fd3c: 49 83 ce 21 or $0x21,%r14 : ; 0.00 : 51fd40: e9 3b 1c ff ff jmpq 511980 : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 51fd45: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fd4c: ff ff ff 0.00 : 51fd4f: 49 21 f6 and %rsi,%r14 0.00 : 51fd52: 49 83 ce 20 or $0x20,%r14 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 51fd56: e9 25 1c ff ff jmpq 511980 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 51fd5b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fd62: ff ff ff 0.00 : 51fd65: 49 21 de and %rbx,%r14 0.00 : 51fd68: 49 83 ce 1f or $0x1f,%r14 : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 51fd6c: e9 0f 1c ff ff jmpq 511980 : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 51fd71: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fd78: ff ff ff 0.00 : 51fd7b: 49 21 ce and %rcx,%r14 0.00 : 51fd7e: 49 83 ce 1e or $0x1e,%r14 : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 51fd82: e9 f9 1b ff ff jmpq 511980 : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51fd87: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fd8e: ff ff ff 0.00 : 51fd91: 49 21 d6 and %rdx,%r14 0.00 : 51fd94: 49 83 ce 09 or $0x9,%r14 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 51fd98: e9 e3 1b ff ff jmpq 511980 : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } 0.00 : 51fd9d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fda4: ff ff ff 0.00 : 51fda7: 49 21 c6 and %rax,%r14 0.00 : 51fdaa: 49 83 ce 0b or $0xb,%r14 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51fdae: e9 cd 1b ff ff jmpq 511980 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } 0.00 : 51fdb3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fdba: ff ff ff 0.00 : 51fdbd: 49 21 f6 and %rsi,%r14 0.00 : 51fdc0: 49 83 ce 0c or $0xc,%r14 : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } 0.00 : 51fdc4: e9 b7 1b ff ff jmpq 511980 : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fdc9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fdd0: ff ff ff 0.00 : 51fdd3: 49 21 de and %rbx,%r14 0.00 : 51fdd6: 49 83 ce 0d or $0xd,%r14 : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } 0.00 : 51fdda: e9 a1 1b ff ff jmpq 511980 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fddf: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fde6: ff ff ff 0.00 : 51fde9: 49 21 ce and %rcx,%r14 0.00 : 51fdec: 49 83 ce 17 or $0x17,%r14 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fdf0: e9 8b 1b ff ff jmpq 511980 : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 51fdf5: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fdfc: ff ff ff 0.00 : 51fdff: 49 21 d6 and %rdx,%r14 0.00 : 51fe02: 49 83 ce 0a or $0xa,%r14 : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fe06: e9 75 1b ff ff jmpq 511980 : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fe0b: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fe12: ff ff ff 0.00 : 51fe15: 49 21 c6 and %rax,%r14 0.00 : 51fe18: 49 83 ce 1c or $0x1c,%r14 : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 51fe1c: e9 5f 1b ff ff jmpq 511980 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 51fe21: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fe28: ff ff ff 0.00 : 51fe2b: 49 21 f6 and %rsi,%r14 0.00 : 51fe2e: 49 83 ce 06 or $0x6,%r14 : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fe32: e9 49 1b ff ff jmpq 511980 : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 51fe37: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fe3e: ff ff ff 0.00 : 51fe41: 49 21 de and %rbx,%r14 0.00 : 51fe44: 49 83 ce 05 or $0x5,%r14 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 51fe48: e9 33 1b ff ff jmpq 511980 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51fe4d: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fe54: ff ff ff 0.00 : 51fe57: 49 21 ce and %rcx,%r14 0.00 : 51fe5a: 49 83 ce 12 or $0x12,%r14 : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 51fe5e: e9 1d 1b ff ff jmpq 511980 : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fe63: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fe6a: ff ff ff 0.00 : 51fe6d: 49 21 d6 and %rdx,%r14 0.00 : 51fe70: 49 83 ce 23 or $0x23,%r14 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51fe74: e9 07 1b ff ff jmpq 511980 : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fe79: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fe80: ff ff ff 0.00 : 51fe83: 49 21 c6 and %rax,%r14 0.00 : 51fe86: 49 83 ce 22 or $0x22,%r14 : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fe8a: e9 f1 1a ff ff jmpq 511980 : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 51fe8f: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fe96: ff ff ff 0.00 : 51fe99: 49 21 f6 and %rsi,%r14 0.00 : 51fe9c: 49 83 ce 08 or $0x8,%r14 : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fea0: e9 db 1a ff ff jmpq 511980 : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fea5: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51feac: ff ff ff 0.00 : 51feaf: 49 21 de and %rbx,%r14 0.00 : 51feb2: 49 83 ce 1b or $0x1b,%r14 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 51feb6: e9 c5 1a ff ff jmpq 511980 : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51febb: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fec2: ff ff ff 0.00 : 51fec5: 49 21 ce and %rcx,%r14 0.00 : 51fec8: 49 83 ce 1a or $0x1a,%r14 : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fecc: e9 af 1a ff ff jmpq 511980 : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 51fed1: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fed8: ff ff ff 0.00 : 51fedb: 49 21 d6 and %rdx,%r14 0.00 : 51fede: 49 83 ce 0f or $0xf,%r14 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51fee2: e9 99 1a ff ff jmpq 511980 : ; : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51fee7: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51feee: ff ff ff 0.00 : 51fef1: 49 21 c6 and %rax,%r14 0.00 : 51fef4: 49 83 ce 19 or $0x19,%r14 : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 51fef8: e9 83 1a ff ff jmpq 511980 : } : ; : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51fefd: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51ff04: ff ff ff 0.00 : 51ff07: 49 21 f6 and %rsi,%r14 0.00 : 51ff0a: 49 83 ce 07 or $0x7,%r14 : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51ff0e: e9 6d 1a ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } 0.00 : 51ff13: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51ff1a: ff ff ff 0.00 : 51ff1d: 49 21 de and %rbx,%r14 0.00 : 51ff20: 49 83 ce 03 or $0x3,%r14 : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51ff24: e9 57 1a ff ff jmpq 511980 : n->comment = $10; : $$ = (Node *) n; : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ff29: 48 8b 3d 30 a9 69 00 mov 0x69a930(%rip),%rdi # bba860 0.00 : 51ff30: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ff35: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ff3c: e8 cf 8e 27 00 callq 798e10 0.00 : 51ff41: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_LANGUAGE; 0.00 : 51ff47: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : n->objname = $5; : n->objargs = NIL; : n->comment = $7; : $$ = (Node *) n; 0.00 : 51ff4e: 49 89 c6 mov %rax,%r14 : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LANGUAGE; : n->objname = $5; 0.00 : 51ff51: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ff58: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->objargs = NIL; 0.00 : 51ff5c: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51ff63: 00 : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LANGUAGE; : n->objname = $5; 0.00 : 51ff64: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->comment = $7; 0.00 : 51ff68: 48 8b 11 mov (%rcx),%rdx 0.00 : 51ff6b: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 51ff6f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ff76: e9 05 1a ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ff7b: 48 8b 3d de a8 69 00 mov 0x69a8de(%rip),%rdi # bba860 0.00 : 51ff82: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ff87: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ff8e: e8 7d 8e 27 00 callq 798e10 0.00 : 51ff93: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_CAST; 0.00 : 51ff99: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ffa0: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_CAST; : n->objname = list_make1($5); 0.00 : 51ffa3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ffaa: 31 f6 xor %esi,%esi : n->objargs = list_make1($7); : n->comment = $10; : $$ = (Node *) n; 0.00 : 51ffac: 49 89 de mov %rbx,%r14 : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_CAST; : n->objname = list_make1($5); 0.00 : 51ffaf: 48 8b 79 d8 mov -0x28(%rcx),%rdi 0.00 : 51ffb3: e8 98 18 0c 00 callq 5e1850 0.00 : 51ffb8: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = list_make1($7); 0.00 : 51ffbc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ffc3: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51ffc7: 31 f6 xor %esi,%esi 0.00 : 51ffc9: e8 82 18 0c 00 callq 5e1850 0.00 : 51ffce: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $10; 0.00 : 51ffd2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ffd9: 48 8b 02 mov (%rdx),%rax 0.00 : 51ffdc: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text 0.00 : 51ffe0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ffe7: e9 94 19 ff ff jmpq 511980 : n->comment = $9; : $$ = (Node *) n; : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ffec: 48 8b 3d 6d a8 69 00 mov 0x69a86d(%rip),%rdi # bba860 0.00 : 51fff3: be 20 00 00 00 mov $0x20,%esi 0.00 : 51fff8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ffff: e8 0c 8e 27 00 callq 798e10 0.00 : 520004: 48 89 c3 mov %rax,%rbx 0.00 : 520007: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_LARGEOBJECT; 0.00 : 52000d: c7 40 04 11 00 00 00 movl $0x11,0x4(%rax) : n->objname = list_make1($5); 0.00 : 520014: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52001b: 31 f6 xor %esi,%esi : n->objargs = NIL; : n->comment = $7; : $$ = (Node *) n; 0.00 : 52001d: 49 89 de mov %rbx,%r14 : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($5); 0.00 : 520020: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 520024: e8 27 18 0c 00 callq 5e1850 : n->objargs = NIL; 0.00 : 520029: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 520030: 00 : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($5); 0.00 : 520031: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $7; 0.00 : 520035: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52003c: 48 8b 02 mov (%rdx),%rax 0.00 : 52003f: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text 0.00 : 520043: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52004a: e9 31 19 ff ff jmpq 511980 : n->comment = $9; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52004f: 48 8b 3d 0a a8 69 00 mov 0x69a80a(%rip),%rdi # bba860 0.00 : 520056: be 20 00 00 00 mov $0x20,%esi 0.00 : 52005b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520062: e8 a9 8d 27 00 callq 798e10 0.00 : 520067: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_OPFAMILY; 0.00 : 52006d: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->comment = $9; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520074: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_OPFAMILY; : n->objname = $5; 0.00 : 520077: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = list_make1(makeString($7)); : n->comment = $9; : $$ = (Node *) n; 0.00 : 52007e: 49 89 de mov %rbx,%r14 : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_OPFAMILY; : n->objname = $5; 0.00 : 520081: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 520085: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = list_make1(makeString($7)); 0.00 : 520089: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 52008d: e8 5e f6 0d 00 callq 5ff6f0 0.00 : 520092: 31 f6 xor %esi,%esi 0.00 : 520094: 48 89 c7 mov %rax,%rdi 0.00 : 520097: e8 b4 17 0c 00 callq 5e1850 0.00 : 52009c: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $9; 0.00 : 5200a0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5200a7: 48 8b 06 mov (%rsi),%rax 0.00 : 5200aa: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text 0.00 : 5200ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5200b5: e9 c6 18 ff ff jmpq 511980 : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5200ba: 48 8b 3d 9f a7 69 00 mov 0x69a79f(%rip),%rdi # bba860 0.00 : 5200c1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5200c6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5200cd: e8 3e 8d 27 00 callq 798e10 0.00 : 5200d2: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_OPCLASS; 0.00 : 5200d8: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5200df: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_OPCLASS; : n->objname = $5; 0.00 : 5200e2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = list_make1(makeString($7)); : n->comment = $9; : $$ = (Node *) n; 0.00 : 5200e9: 49 89 de mov %rbx,%r14 : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_OPCLASS; : n->objname = $5; 0.00 : 5200ec: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5200f0: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = list_make1(makeString($7)); 0.00 : 5200f4: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5200f8: e8 f3 f5 0d 00 callq 5ff6f0 0.00 : 5200fd: 31 f6 xor %esi,%esi 0.00 : 5200ff: 48 89 c7 mov %rax,%rdi 0.00 : 520102: e8 49 17 0c 00 callq 5e1850 0.00 : 520107: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $9; 0.00 : 52010b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520112: 48 8b 02 mov (%rdx),%rax 0.00 : 520115: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text 0.00 : 520119: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520120: e9 5b 18 ff ff jmpq 511980 : n->comment = $6; : $$ = (Node *) n; : } : | COMMENT ON TRIGGER name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520125: 48 8b 3d 34 a7 69 00 mov 0x69a734(%rip),%rdi # bba860 0.00 : 52012c: be 20 00 00 00 mov $0x20,%esi 0.00 : 520131: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520138: e8 d3 8c 27 00 callq 798e10 0.00 : 52013d: 48 89 c3 mov %rax,%rbx 0.00 : 520140: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_TRIGGER; 0.00 : 520146: c7 40 04 1d 00 00 00 movl $0x1d,0x4(%rax) : n->objname = lappend($6, makeString($4)); 0.00 : 52014d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->objargs = NIL; : n->comment = $8; : $$ = (Node *) n; 0.00 : 520154: 49 89 de mov %rbx,%r14 : } : | COMMENT ON TRIGGER name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_TRIGGER; : n->objname = lappend($6, makeString($4)); 0.00 : 520157: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 52015b: e8 90 f5 0d 00 callq 5ff6f0 0.00 : 520160: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520167: 48 89 c6 mov %rax,%rsi 0.00 : 52016a: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 52016e: e8 0d 1d 0c 00 callq 5e1e80 : n->objargs = NIL; 0.00 : 520173: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 52017a: 00 : } : | COMMENT ON TRIGGER name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_TRIGGER; : n->objname = lappend($6, makeString($4)); 0.00 : 52017b: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $8; 0.00 : 52017f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520186: 48 8b 01 mov (%rcx),%rax 0.00 : 520189: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text 0.00 : 52018d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520194: e9 e7 17 ff ff jmpq 511980 : $$ = (Node *) n; : } : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520199: 48 8b 3d c0 a6 69 00 mov 0x69a6c0(%rip),%rdi # bba860 0.00 : 5201a0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5201a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5201ac: e8 5f 8c 27 00 callq 798e10 0.00 : 5201b1: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_RULE; 0.00 : 5201b7: c7 40 04 18 00 00 00 movl $0x18,0x4(%rax) : $$ = (Node *) n; : } : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5201be: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_RULE; : n->objname = list_make1(makeString($4)); 0.00 : 5201c1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = NIL; : n->comment = $6; : $$ = (Node *) n; 0.00 : 5201c8: 49 89 de mov %rbx,%r14 : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = list_make1(makeString($4)); 0.00 : 5201cb: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 5201cf: e8 1c f5 0d 00 callq 5ff6f0 0.00 : 5201d4: 31 f6 xor %esi,%esi 0.00 : 5201d6: 48 89 c7 mov %rax,%rdi 0.00 : 5201d9: e8 72 16 0c 00 callq 5e1850 : n->objargs = NIL; 0.00 : 5201de: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5201e5: 00 : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = list_make1(makeString($4)); 0.00 : 5201e6: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $6; 0.00 : 5201ea: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5201f1: 48 8b 06 mov (%rsi),%rax 0.00 : 5201f4: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON TRIGGER name ON any_name IS comment_text 0.00 : 5201f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5201ff: e9 7c 17 ff ff jmpq 511980 : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520204: 48 8b 3d 55 a6 69 00 mov 0x69a655(%rip),%rdi # bba860 0.00 : 52020b: be 20 00 00 00 mov $0x20,%esi 0.00 : 520210: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520217: e8 f4 8b 27 00 callq 798e10 0.00 : 52021c: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_RULE; 0.00 : 520222: c7 40 04 18 00 00 00 movl $0x18,0x4(%rax) : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520229: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_RULE; : n->objname = lappend($6, makeString($4)); 0.00 : 52022c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = NIL; : n->comment = $8; : $$ = (Node *) n; 0.00 : 520233: 49 89 de mov %rbx,%r14 : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = lappend($6, makeString($4)); 0.00 : 520236: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 52023a: e8 b1 f4 0d 00 callq 5ff6f0 0.00 : 52023f: 48 89 c6 mov %rax,%rsi 0.00 : 520242: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 520249: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 52024d: e8 2e 1c 0c 00 callq 5e1e80 : n->objargs = NIL; 0.00 : 520252: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 520259: 00 : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = lappend($6, makeString($4)); 0.00 : 52025a: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $8; 0.00 : 52025e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520265: 48 8b 02 mov (%rdx),%rax 0.00 : 520268: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON RULE name IS comment_text 0.00 : 52026c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520273: e9 08 17 ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520278: 48 8b 3d e1 a5 69 00 mov 0x69a5e1(%rip),%rdi # bba860 0.00 : 52027f: be 20 00 00 00 mov $0x20,%esi 0.00 : 520284: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52028b: e8 80 8b 27 00 callq 798e10 0.00 : 520290: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_CONSTRAINT; 0.00 : 520296: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52029d: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_CONSTRAINT; : n->objname = lappend($6, makeString($4)); 0.00 : 5202a0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = NIL; : n->comment = $8; : $$ = (Node *) n; 0.00 : 5202a7: 49 89 de mov %rbx,%r14 : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_CONSTRAINT; : n->objname = lappend($6, makeString($4)); 0.00 : 5202aa: 48 8b 7e e0 mov -0x20(%rsi),%rdi 0.00 : 5202ae: e8 3d f4 0d 00 callq 5ff6f0 0.00 : 5202b3: 48 89 c6 mov %rax,%rsi 0.00 : 5202b6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5202bd: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 5202c1: e8 ba 1b 0c 00 callq 5e1e80 : n->objargs = NIL; 0.00 : 5202c6: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5202cd: 00 : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_CONSTRAINT; : n->objname = lappend($6, makeString($4)); 0.00 : 5202ce: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $8; 0.00 : 5202d2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5202d9: 48 8b 02 mov (%rdx),%rax 0.00 : 5202dc: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON RULE name ON any_name IS comment_text 0.00 : 5202e0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5202e7: e9 94 16 ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5202ec: 48 8b 3d 6d a5 69 00 mov 0x69a56d(%rip),%rdi # bba860 0.00 : 5202f3: be 20 00 00 00 mov $0x20,%esi 0.00 : 5202f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5202ff: e8 0c 8b 27 00 callq 798e10 0.00 : 520304: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_OPERATOR; 0.00 : 52030a: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->objname = $4; : n->objargs = $5; : n->comment = $7; : $$ = (Node *) n; 0.00 : 520311: 49 89 c6 mov %rax,%r14 : } : | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_OPERATOR; : n->objname = $4; 0.00 : 520314: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52031b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52031f: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = $5; 0.00 : 520323: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 520327: 48 89 50 10 mov %rdx,0x10(%rax) : n->comment = $7; 0.00 : 52032b: 48 8b 11 mov (%rcx),%rdx 0.00 : 52032e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text 0.00 : 520332: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520339: e9 42 16 ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON FUNCTION func_name func_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52033e: 48 8b 3d 1b a5 69 00 mov 0x69a51b(%rip),%rdi # bba860 0.00 : 520345: be 20 00 00 00 mov $0x20,%esi 0.00 : 52034a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520351: e8 ba 8a 27 00 callq 798e10 0.00 : 520356: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_FUNCTION; 0.00 : 52035c: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON FUNCTION func_name func_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520363: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_FUNCTION; : n->objname = $4; 0.00 : 520366: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = extractArgTypes($5); : n->comment = $7; : $$ = (Node *) n; 0.00 : 52036d: 49 89 de mov %rbx,%r14 : } : | COMMENT ON FUNCTION func_name func_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_FUNCTION; : n->objname = $4; 0.00 : 520370: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 520374: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractArgTypes($5); 0.00 : 520378: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 52037c: e8 ef 06 ff ff callq 510a70 0.00 : 520381: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $7; 0.00 : 520385: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52038c: 48 8b 06 mov (%rsi),%rax 0.00 : 52038f: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text 0.00 : 520393: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52039a: e9 e1 15 ff ff jmpq 511980 : n->comment = $6; : $$ = (Node *) n; : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52039f: 48 8b 3d ba a4 69 00 mov 0x69a4ba(%rip),%rdi # bba860 0.00 : 5203a6: be 20 00 00 00 mov $0x20,%esi 0.00 : 5203ab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5203b2: e8 59 8a 27 00 callq 798e10 0.00 : 5203b7: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_AGGREGATE; 0.00 : 5203bd: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->comment = $6; : $$ = (Node *) n; : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5203c4: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_AGGREGATE; : n->objname = $4; 0.00 : 5203c7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = extractAggrArgTypes($5); : n->comment = $7; : $$ = (Node *) n; 0.00 : 5203ce: 49 89 de mov %rbx,%r14 : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_AGGREGATE; : n->objname = $4; 0.00 : 5203d1: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5203d5: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractAggrArgTypes($5); 0.00 : 5203d9: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5203dd: e8 ee 06 ff ff callq 510ad0 0.00 : 5203e2: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $7; 0.00 : 5203e6: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5203ed: 48 8b 02 mov (%rdx),%rax 0.00 : 5203f0: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON FUNCTION func_name func_args IS comment_text 0.00 : 5203f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5203fb: e9 80 15 ff ff jmpq 511980 : *****************************************************************************/ : : CommentStmt: : COMMENT ON comment_type any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520400: 48 8b 3d 59 a4 69 00 mov 0x69a459(%rip),%rdi # bba860 0.00 : 520407: be 20 00 00 00 mov $0x20,%esi 0.00 : 52040c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520413: e8 f8 89 27 00 callq 798e10 0.00 : 520418: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = $3; 0.00 : 52041e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objname = $4; : n->objargs = NIL; : n->comment = $6; : $$ = (Node *) n; 0.00 : 520425: 49 89 c6 mov %rax,%r14 : : CommentStmt: : COMMENT ON comment_type any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = $3; 0.00 : 520428: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 52042b: 89 50 04 mov %edx,0x4(%rax) : n->objname = $4; 0.00 : 52042e: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->objargs = NIL; 0.00 : 520432: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 520439: 00 : CommentStmt: : COMMENT ON comment_type any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = $3; : n->objname = $4; 0.00 : 52043a: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->comment = $6; 0.00 : 52043e: 48 8b 11 mov (%rcx),%rdx 0.00 : 520441: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text 0.00 : 520445: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52044c: e9 2f 15 ff ff jmpq 511980 : ; : : opt_restart_seqs: : CONTINUE_P IDENTITY_P { $$ = false; } : | RESTART IDENTITY_P { $$ = true; } : | /* EMPTY */ { $$ = false; } 0.00 : 520451: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 520454: e9 27 15 ff ff jmpq 511980 : } : ; : : opt_restart_seqs: : CONTINUE_P IDENTITY_P { $$ = false; } : | RESTART IDENTITY_P { $$ = true; } 0.00 : 520459: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = false; } 0.00 : 52045c: e9 1f 15 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_restart_seqs: : CONTINUE_P IDENTITY_P { $$ = false; } 0.00 : 520461: 45 30 f6 xor %r14b,%r14b : | RESTART IDENTITY_P { $$ = true; } 0.00 : 520464: e9 17 15 ff ff jmpq 511980 : *****************************************************************************/ : : TruncateStmt: : TRUNCATE opt_table relation_expr_list opt_restart_seqs opt_drop_behavior : { : TruncateStmt *n = makeNode(TruncateStmt); 0.00 : 520469: 48 8b 3d f0 a3 69 00 mov 0x69a3f0(%rip),%rdi # bba860 0.00 : 520470: be 18 00 00 00 mov $0x18,%esi 0.00 : 520475: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52047c: e8 8f 89 27 00 callq 798e10 0.00 : 520481: c7 00 cf 02 00 00 movl $0x2cf,(%rax) : n->relations = $3; 0.00 : 520487: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->restart_seqs = $4; : n->behavior = $5; : $$ = (Node *)n; 0.00 : 52048e: 49 89 c6 mov %rax,%r14 : : TruncateStmt: : TRUNCATE opt_table relation_expr_list opt_restart_seqs opt_drop_behavior : { : TruncateStmt *n = makeNode(TruncateStmt); : n->relations = $3; 0.00 : 520491: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 520495: 48 89 50 08 mov %rdx,0x8(%rax) : n->restart_seqs = $4; 0.00 : 520499: 0f b6 56 f8 movzbl -0x8(%rsi),%edx 0.00 : 52049d: 88 50 10 mov %dl,0x10(%rax) : n->behavior = $5; 0.00 : 5204a0: 8b 16 mov (%rsi),%edx 0.00 : 5204a2: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5204a5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5204ac: e9 cf 14 ff ff jmpq 511980 : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } : | attrs '.' attr_name : { $$ = lappend($1, makeString($3)); } 0.00 : 5204b1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5204b8: 48 8b 39 mov (%rcx),%rdi 0.00 : 5204bb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5204c2: e8 29 f2 0d 00 callq 5ff6f0 0.00 : 5204c7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5204ce: 48 89 c6 mov %rax,%rsi 0.00 : 5204d1: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 5204d5: e8 a6 19 0c 00 callq 5e1e80 : ; 0.00 : 5204da: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } : | attrs '.' attr_name : { $$ = lappend($1, makeString($3)); } 0.00 : 5204e1: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5204e4: e9 97 14 ff ff jmpq 511980 : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } 0.00 : 5204e9: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5204f0: 48 8b 3a mov (%rdx),%rdi 0.00 : 5204f3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5204fa: e8 f1 f1 0d 00 callq 5ff6f0 0.00 : 5204ff: 31 f6 xor %esi,%esi 0.00 : 520501: 48 89 c7 mov %rax,%rdi 0.00 : 520504: e8 47 13 0c 00 callq 5e1850 : | attrs '.' attr_name 0.00 : 520509: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } 0.00 : 520510: 49 89 c6 mov %rax,%r14 : | attrs '.' attr_name 0.00 : 520513: e9 68 14 ff ff jmpq 511980 : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 520518: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52051f: 48 8b 18 mov (%rax),%rbx 0.00 : 520522: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 520526: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52052d: e8 be f1 0d 00 callq 5ff6f0 0.00 : 520532: 48 89 de mov %rbx,%rsi 0.00 : 520535: 48 89 c7 mov %rax,%rdi 0.00 : 520538: e8 13 13 0c 00 callq 5e1850 : ; 0.00 : 52053d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 520544: 49 89 c6 mov %rax,%r14 : ; 0.00 : 520547: e9 34 14 ff ff jmpq 511980 : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } 0.00 : 52054c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520553: 48 8b 3e mov (%rsi),%rdi 0.00 : 520556: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52055d: e8 8e f1 0d 00 callq 5ff6f0 0.00 : 520562: 31 f6 xor %esi,%esi 0.00 : 520564: 48 89 c7 mov %rax,%rdi 0.00 : 520567: e8 e4 12 0c 00 callq 5e1850 : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 52056c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } 0.00 : 520573: 49 89 c6 mov %rax,%r14 : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 520576: e9 05 14 ff ff jmpq 511980 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 52057b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520582: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 520586: 48 8b 33 mov (%rbx),%rsi 0.00 : 520589: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520590: e8 eb 18 0c 00 callq 5e1e80 : ; 0.00 : 520595: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 52059c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52059f: e9 dc 13 ff ff jmpq 511980 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } 0.00 : 5205a4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5205ab: 31 f6 xor %esi,%esi 0.00 : 5205ad: 48 8b 39 mov (%rcx),%rdi 0.00 : 5205b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5205b7: e8 94 12 0c 00 callq 5e1850 : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 5205bc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } 0.00 : 5205c3: 49 89 c6 mov %rax,%r14 : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 5205c6: e9 b5 13 ff ff jmpq 511980 : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 5205cb: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5205d2: ff ff ff 0.00 : 5205d5: 49 21 d6 and %rdx,%r14 0.00 : 5205d8: 49 83 ce 1e or $0x1e,%r14 : ; 0.00 : 5205dc: e9 9f 13 ff ff jmpq 511980 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 5205e1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5205e8: ff ff ff 0.00 : 5205eb: 49 21 c6 and %rax,%r14 0.00 : 5205ee: 49 83 ce 21 or $0x21,%r14 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 5205f2: e9 89 13 ff ff jmpq 511980 : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 5205f7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5205fe: ff ff ff 0.00 : 520601: 49 21 f6 and %rsi,%r14 0.00 : 520604: 49 83 ce 1f or $0x1f,%r14 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 520608: e9 73 13 ff ff jmpq 511980 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 52060d: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 520614: ff ff ff 0.00 : 520617: 49 21 de and %rbx,%r14 0.00 : 52061a: 49 83 ce 20 or $0x20,%r14 : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 52061e: e9 5d 13 ff ff jmpq 511980 : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 520623: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 52062a: ff ff ff 0.00 : 52062d: 49 21 ce and %rcx,%r14 0.00 : 520630: 49 83 ce 0a or $0xa,%r14 : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 520634: e9 47 13 ff ff jmpq 511980 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 520639: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 520640: ff ff ff 0.00 : 520643: 49 21 d6 and %rdx,%r14 0.00 : 520646: 49 83 ce 19 or $0x19,%r14 : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 52064a: e9 31 13 ff ff jmpq 511980 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 52064f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 520656: ff ff ff 0.00 : 520659: 49 21 c6 and %rax,%r14 0.00 : 52065c: 49 83 ce 06 or $0x6,%r14 : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 520660: e9 1b 13 ff ff jmpq 511980 : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 520665: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 52066c: ff ff ff 0.00 : 52066f: 49 21 f6 and %rsi,%r14 0.00 : 520672: 49 83 ce 05 or $0x5,%r14 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 520676: e9 05 13 ff ff jmpq 511980 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 52067b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 520682: ff ff ff 0.00 : 520685: 49 21 de and %rbx,%r14 0.00 : 520688: 49 83 ce 08 or $0x8,%r14 : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 52068c: e9 ef 12 ff ff jmpq 511980 : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 520691: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 520698: ff ff ff 0.00 : 52069b: 49 21 ce and %rcx,%r14 0.00 : 52069e: 49 83 ce 22 or $0x22,%r14 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 5206a2: e9 d9 12 ff ff jmpq 511980 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 5206a7: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5206ae: ff ff ff 0.00 : 5206b1: 49 21 d6 and %rdx,%r14 0.00 : 5206b4: 49 83 ce 09 or $0x9,%r14 : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 5206b8: e9 c3 12 ff ff jmpq 511980 : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 5206bd: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5206c4: ff ff ff 0.00 : 5206c7: 49 21 c6 and %rax,%r14 0.00 : 5206ca: 49 83 ce 0d or $0xd,%r14 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 5206ce: e9 ad 12 ff ff jmpq 511980 : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 5206d3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5206da: ff ff ff 0.00 : 5206dd: 49 21 f6 and %rsi,%r14 0.00 : 5206e0: 49 83 ce 0f or $0xf,%r14 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 5206e4: e9 97 12 ff ff jmpq 511980 : : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 5206e9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5206f0: ff ff ff 0.00 : 5206f3: 49 21 de and %rbx,%r14 0.00 : 5206f6: 49 83 ce 12 or $0x12,%r14 : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 5206fa: e9 81 12 ff ff jmpq 511980 : ; : : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 5206ff: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 520706: ff ff ff 0.00 : 520709: 49 21 ce and %rcx,%r14 0.00 : 52070c: 49 83 ce 23 or $0x23,%r14 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 520710: e9 6b 12 ff ff jmpq 511980 : } : ; : : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 520715: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 52071c: ff ff ff 0.00 : 52071f: 49 21 d6 and %rdx,%r14 0.00 : 520722: 49 83 ce 1a or $0x1a,%r14 : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 520726: e9 55 12 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : : drop_type: TABLE { $$ = OBJECT_TABLE; } 0.00 : 52072b: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 520732: ff ff ff 0.00 : 520735: 49 21 c6 and %rax,%r14 0.00 : 520738: 49 83 ce 1b or $0x1b,%r14 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 52073c: e9 3f 12 ff ff jmpq 511980 : n->concurrent = true; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520741: 48 8b 3d 18 a1 69 00 mov 0x69a118(%rip),%rdi # bba860 0.00 : 520748: be 28 00 00 00 mov $0x28,%esi 0.00 : 52074d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520754: e8 b7 86 27 00 callq 798e10 0.00 : 520759: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_INDEX; 0.00 : 52075f: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = TRUE; : n->objects = $6; : n->arguments = NIL; : n->behavior = $7; : n->concurrent = true; : $$ = (Node *)n; 0.00 : 520766: 49 89 c6 mov %rax,%r14 : } : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = TRUE; 0.00 : 520769: c6 40 20 01 movb $0x1,0x20(%rax) : n->objects = $6; 0.00 : 52076d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520774: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->arguments = NIL; 0.00 : 520778: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 52077f: 00 : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = TRUE; : n->objects = $6; 0.00 : 520780: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $7; 0.00 : 520784: 8b 16 mov (%rsi),%edx : n->concurrent = true; 0.00 : 520786: c6 40 21 01 movb $0x1,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = TRUE; : n->objects = $6; : n->arguments = NIL; : n->behavior = $7; 0.00 : 52078a: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = true; : $$ = (Node *)n; : } : ; 0.00 : 52078d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520794: e9 e7 11 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520799: 48 8b 3d c0 a0 69 00 mov 0x69a0c0(%rip),%rdi # bba860 0.00 : 5207a0: be 28 00 00 00 mov $0x28,%esi 0.00 : 5207a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5207ac: e8 5f 86 27 00 callq 798e10 0.00 : 5207b1: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_INDEX; 0.00 : 5207b7: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = FALSE; : n->objects = $4; : n->arguments = NIL; : n->behavior = $5; : n->concurrent = true; : $$ = (Node *)n; 0.00 : 5207be: 49 89 c6 mov %rax,%r14 : } : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = FALSE; 0.00 : 5207c1: c6 40 20 00 movb $0x0,0x20(%rax) : n->objects = $4; 0.00 : 5207c5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5207cc: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->arguments = NIL; 0.00 : 5207d0: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5207d7: 00 : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = FALSE; : n->objects = $4; 0.00 : 5207d8: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $5; 0.00 : 5207dc: 8b 13 mov (%rbx),%edx : n->concurrent = true; 0.00 : 5207de: c6 40 21 01 movb $0x1,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = FALSE; : n->objects = $4; : n->arguments = NIL; : n->behavior = $5; 0.00 : 5207e2: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = true; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior 0.00 : 5207e5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5207ec: e9 8f 11 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5207f1: 48 8b 3d 68 a0 69 00 mov 0x69a068(%rip),%rdi # bba860 0.00 : 5207f8: be 28 00 00 00 mov $0x28,%esi 0.00 : 5207fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520804: e8 07 86 27 00 callq 798e10 0.00 : 520809: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = $2; 0.00 : 52080f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->missing_ok = FALSE; : n->objects = $3; : n->arguments = NIL; : n->behavior = $4; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 520816: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520819: 8b 51 f0 mov -0x10(%rcx),%edx : n->missing_ok = FALSE; 0.00 : 52081c: c6 40 20 00 movb $0x0,0x20(%rax) : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520820: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : n->objects = $3; 0.00 : 520823: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->arguments = NIL; 0.00 : 520827: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 52082e: 00 : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = FALSE; : n->objects = $3; 0.00 : 52082f: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $4; 0.00 : 520833: 8b 11 mov (%rcx),%edx : n->concurrent = false; 0.00 : 520835: c6 40 21 00 movb $0x0,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = FALSE; : n->objects = $3; : n->arguments = NIL; : n->behavior = $4; 0.00 : 520839: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior 0.00 : 52083c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520843: e9 38 11 ff ff jmpq 511980 : * : *****************************************************************************/ : : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520848: 48 8b 3d 11 a0 69 00 mov 0x69a011(%rip),%rdi # bba860 0.00 : 52084f: be 28 00 00 00 mov $0x28,%esi 0.00 : 520854: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52085b: e8 b0 85 27 00 callq 798e10 0.00 : 520860: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = $2; 0.00 : 520866: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->missing_ok = TRUE; : n->objects = $5; : n->arguments = NIL; : n->behavior = $6; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 52086d: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520870: 8b 56 e0 mov -0x20(%rsi),%edx : n->missing_ok = TRUE; 0.00 : 520873: c6 40 20 01 movb $0x1,0x20(%rax) : *****************************************************************************/ : : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520877: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : n->objects = $5; 0.00 : 52087a: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->arguments = NIL; 0.00 : 52087e: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 520885: 00 : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = TRUE; : n->objects = $5; 0.00 : 520886: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $6; 0.00 : 52088a: 8b 16 mov (%rsi),%edx : n->concurrent = false; 0.00 : 52088c: c6 40 21 00 movb $0x0,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = TRUE; : n->objects = $5; : n->arguments = NIL; : n->behavior = $6; 0.00 : 520890: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior 0.00 : 520893: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52089a: e9 e1 10 ff ff jmpq 511980 : ; : : ReassignOwnedStmt: : REASSIGN OWNED BY role_list TO name : { : ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); 0.00 : 52089f: 48 8b 3d ba 9f 69 00 mov 0x699fba(%rip),%rdi # bba860 0.00 : 5208a6: be 18 00 00 00 mov $0x18,%esi 0.00 : 5208ab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5208b2: e8 59 85 27 00 callq 798e10 0.00 : 5208b7: c7 00 04 03 00 00 movl $0x304,(%rax) : n->roles = $4; 0.00 : 5208bd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->newrole = $6; : $$ = (Node *)n; 0.00 : 5208c4: 49 89 c6 mov %rax,%r14 : : ReassignOwnedStmt: : REASSIGN OWNED BY role_list TO name : { : ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); : n->roles = $4; 0.00 : 5208c7: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5208cb: 48 89 50 08 mov %rdx,0x8(%rax) : n->newrole = $6; 0.00 : 5208cf: 48 8b 13 mov (%rbx),%rdx 0.00 : 5208d2: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5208d6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5208dd: e9 9e 10 ff ff jmpq 511980 : * : *****************************************************************************/ : DropOwnedStmt: : DROP OWNED BY role_list opt_drop_behavior : { : DropOwnedStmt *n = makeNode(DropOwnedStmt); 0.00 : 5208e2: 48 8b 3d 77 9f 69 00 mov 0x699f77(%rip),%rdi # bba860 0.00 : 5208e9: be 18 00 00 00 mov $0x18,%esi 0.00 : 5208ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5208f5: e8 16 85 27 00 callq 798e10 0.00 : 5208fa: c7 00 03 03 00 00 movl $0x303,(%rax) : n->roles = $4; 0.00 : 520900: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->behavior = $5; : $$ = (Node *)n; 0.00 : 520907: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : DropOwnedStmt: : DROP OWNED BY role_list opt_drop_behavior : { : DropOwnedStmt *n = makeNode(DropOwnedStmt); : n->roles = $4; 0.00 : 52090a: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52090e: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $5; 0.00 : 520912: 8b 11 mov (%rcx),%edx 0.00 : 520914: 89 50 10 mov %edx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 520917: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52091e: e9 5d 10 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520923: 48 8b 3d 36 9f 69 00 mov 0x699f36(%rip),%rdi # bba860 0.00 : 52092a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52092f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520936: e8 d5 84 27 00 callq 798e10 0.00 : 52093b: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($6); 0.00 : 520941: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520948: 48 89 c3 mov %rax,%rbx : n->objects = list_make1($6); 0.00 : 52094b: 31 f6 xor %esi,%esi : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $9; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 52094d: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); 0.00 : 520950: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 520954: e8 f7 0e 0c 00 callq 5e1850 0.00 : 520959: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 52095d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520964: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 520968: e8 83 ed 0d 00 callq 5ff6f0 0.00 : 52096d: 31 f6 xor %esi,%esi 0.00 : 52096f: 48 89 c7 mov %rax,%rdi 0.00 : 520972: e8 d9 0e 0c 00 callq 5e1850 0.00 : 520977: 31 f6 xor %esi,%esi 0.00 : 520979: 48 89 c7 mov %rax,%rdi 0.00 : 52097c: e8 cf 0e 0c 00 callq 5e1850 : n->removeType = OBJECT_OPFAMILY; 0.00 : 520981: c7 43 18 15 00 00 00 movl $0x15,0x18(%rbx) : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 520988: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPFAMILY; : n->behavior = $9; 0.00 : 52098c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520993: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 520995: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 520999: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $9; 0.00 : 52099d: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 5209a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5209a7: e9 d4 0f ff ff jmpq 511980 : ; : : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5209ac: 48 8b 3d ad 9e 69 00 mov 0x699ead(%rip),%rdi # bba860 0.00 : 5209b3: be 28 00 00 00 mov $0x28,%esi 0.00 : 5209b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5209bf: e8 4c 84 27 00 callq 798e10 0.00 : 5209c4: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($4); 0.00 : 5209ca: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ; : : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5209d1: 48 89 c3 mov %rax,%rbx : n->objects = list_make1($4); 0.00 : 5209d4: 31 f6 xor %esi,%esi : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $7; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 5209d6: 49 89 de mov %rbx,%r14 : : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); 0.00 : 5209d9: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 5209dd: e8 6e 0e 0c 00 callq 5e1850 0.00 : 5209e2: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 5209e6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5209ed: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 5209f1: e8 fa ec 0d 00 callq 5ff6f0 0.00 : 5209f6: 31 f6 xor %esi,%esi 0.00 : 5209f8: 48 89 c7 mov %rax,%rdi 0.00 : 5209fb: e8 50 0e 0c 00 callq 5e1850 0.00 : 520a00: 31 f6 xor %esi,%esi 0.00 : 520a02: 48 89 c7 mov %rax,%rdi 0.00 : 520a05: e8 46 0e 0c 00 callq 5e1850 : n->removeType = OBJECT_OPFAMILY; 0.00 : 520a0a: c7 43 18 15 00 00 00 movl $0x15,0x18(%rbx) : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 520a11: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPFAMILY; : n->behavior = $7; 0.00 : 520a15: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520a1c: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 520a1e: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 520a22: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $7; 0.00 : 520a26: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior 0.00 : 520a29: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520a30: e9 4b 0f ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520a35: 48 8b 3d 24 9e 69 00 mov 0x699e24(%rip),%rdi # bba860 0.00 : 520a3c: be 28 00 00 00 mov $0x28,%esi 0.00 : 520a41: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520a48: e8 c3 83 27 00 callq 798e10 0.00 : 520a4d: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($6); 0.00 : 520a53: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520a5a: 48 89 c3 mov %rax,%rbx : n->objects = list_make1($6); 0.00 : 520a5d: 31 f6 xor %esi,%esi : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $9; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 520a5f: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); 0.00 : 520a62: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 520a66: e8 e5 0d 0c 00 callq 5e1850 0.00 : 520a6b: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 520a6f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520a76: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 520a7a: e8 71 ec 0d 00 callq 5ff6f0 0.00 : 520a7f: 31 f6 xor %esi,%esi 0.00 : 520a81: 48 89 c7 mov %rax,%rdi 0.00 : 520a84: e8 c7 0d 0c 00 callq 5e1850 0.00 : 520a89: 31 f6 xor %esi,%esi 0.00 : 520a8b: 48 89 c7 mov %rax,%rdi 0.00 : 520a8e: e8 bd 0d 0c 00 callq 5e1850 : n->removeType = OBJECT_OPCLASS; 0.00 : 520a93: c7 43 18 13 00 00 00 movl $0x13,0x18(%rbx) : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 520a9a: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPCLASS; : n->behavior = $9; 0.00 : 520a9e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520aa5: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 520aa7: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 520aab: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $9; 0.00 : 520aaf: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 520ab2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520ab9: e9 c2 0e ff ff jmpq 511980 : : : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520abe: 48 8b 3d 9b 9d 69 00 mov 0x699d9b(%rip),%rdi # bba860 0.00 : 520ac5: be 28 00 00 00 mov $0x28,%esi 0.00 : 520aca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520ad1: e8 3a 83 27 00 callq 798e10 0.00 : 520ad6: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($4); 0.00 : 520adc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : : : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520ae3: 48 89 c3 mov %rax,%rbx : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $7; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 520ae6: 49 89 de mov %rbx,%r14 : : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); 0.00 : 520ae9: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 520aed: 31 f6 xor %esi,%esi 0.00 : 520aef: e8 5c 0d 0c 00 callq 5e1850 0.00 : 520af4: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 520af8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 520aff: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 520b03: e8 e8 eb 0d 00 callq 5ff6f0 0.00 : 520b08: 31 f6 xor %esi,%esi 0.00 : 520b0a: 48 89 c7 mov %rax,%rdi 0.00 : 520b0d: e8 3e 0d 0c 00 callq 5e1850 0.00 : 520b12: 31 f6 xor %esi,%esi 0.00 : 520b14: 48 89 c7 mov %rax,%rdi 0.00 : 520b17: e8 34 0d 0c 00 callq 5e1850 : n->removeType = OBJECT_OPCLASS; 0.00 : 520b1c: c7 43 18 13 00 00 00 movl $0x13,0x18(%rbx) : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 520b23: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPCLASS; : n->behavior = $7; 0.00 : 520b27: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520b2e: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 520b30: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 520b34: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $7; 0.00 : 520b38: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior 0.00 : 520b3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520b42: e9 39 0e ff ff jmpq 511980 : n->args = $4; : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520b47: 48 8b 3d 12 9d 69 00 mov 0x699d12(%rip),%rdi # bba860 0.00 : 520b4e: be 38 00 00 00 mov $0x38,%esi 0.00 : 520b53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520b5a: e8 b1 82 27 00 callq 798e10 0.00 : 520b5f: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_FUNCTION; 0.00 : 520b65: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->number = $2; : n->args = $4; : $$ = (Node *) n; 0.00 : 520b6c: 49 89 c6 mov %rax,%r14 : } : | FUNCTION Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->number = $2; 0.00 : 520b6f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520b76: 8b 53 e8 mov -0x18(%rbx),%edx 0.00 : 520b79: 89 50 18 mov %edx,0x18(%rax) : n->args = $4; 0.00 : 520b7c: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 520b80: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520b84: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520b8b: e9 f0 0d ff ff jmpq 511980 : ; : : opclass_drop: : OPERATOR Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520b90: 48 8b 3d c9 9c 69 00 mov 0x699cc9(%rip),%rdi # bba860 0.00 : 520b97: be 38 00 00 00 mov $0x38,%esi 0.00 : 520b9c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520ba3: e8 68 82 27 00 callq 798e10 0.00 : 520ba8: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_OPERATOR; 0.00 : 520bae: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->number = $2; : n->args = $4; : $$ = (Node *) n; 0.00 : 520bb5: 49 89 c6 mov %rax,%r14 : opclass_drop: : OPERATOR Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->number = $2; 0.00 : 520bb8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520bbf: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 520bc2: 89 50 18 mov %edx,0x18(%rax) : n->args = $4; 0.00 : 520bc5: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 520bc9: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' 0.00 : 520bcd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520bd4: e9 a7 0d ff ff jmpq 511980 : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520bd9: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520be0: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 520be4: 48 8b 32 mov (%rdx),%rsi 0.00 : 520be7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520bee: e8 8d 12 0c 00 callq 5e1e80 : ; 0.00 : 520bf3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520bfa: 49 89 c6 mov %rax,%r14 : ; 0.00 : 520bfd: e9 7e 0d ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } 0.00 : 520c02: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 520c09: 31 f6 xor %esi,%esi 0.00 : 520c0b: 48 8b 38 mov (%rax),%rdi 0.00 : 520c0e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520c15: e8 36 0c 0c 00 callq 5e1850 : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520c1a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } 0.00 : 520c21: 49 89 c6 mov %rax,%r14 : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520c24: e9 57 0d ff ff jmpq 511980 : n->items = $8; : $$ = (Node *) n; : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); 0.00 : 520c29: 48 8b 3d 30 9c 69 00 mov 0x699c30(%rip),%rdi # bba860 0.00 : 520c30: be 28 00 00 00 mov $0x28,%esi 0.00 : 520c35: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520c3c: e8 cf 81 27 00 callq 798e10 0.00 : 520c41: c7 00 fa 02 00 00 movl $0x2fa,(%rax) : n->opfamilyname = $4; 0.00 : 520c47: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->amname = $6; : n->isDrop = true; : n->items = $8; : $$ = (Node *) n; 0.00 : 520c4e: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; 0.00 : 520c51: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 520c55: 48 89 50 08 mov %rdx,0x8(%rax) : n->amname = $6; 0.00 : 520c59: 48 8b 56 f0 mov -0x10(%rsi),%rdx : n->isDrop = true; 0.00 : 520c5d: c6 40 18 01 movb $0x1,0x18(%rax) : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; : n->amname = $6; 0.00 : 520c61: 48 89 50 10 mov %rdx,0x10(%rax) : n->isDrop = true; : n->items = $8; 0.00 : 520c65: 48 8b 16 mov (%rsi),%rdx 0.00 : 520c68: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520c6c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520c73: e9 08 0d ff ff jmpq 511980 : ; : : AlterOpFamilyStmt: : ALTER OPERATOR FAMILY any_name USING access_method ADD_P opclass_item_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); 0.00 : 520c78: 48 8b 3d e1 9b 69 00 mov 0x699be1(%rip),%rdi # bba860 0.00 : 520c7f: be 28 00 00 00 mov $0x28,%esi 0.00 : 520c84: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520c8b: e8 80 81 27 00 callq 798e10 0.00 : 520c90: c7 00 fa 02 00 00 movl $0x2fa,(%rax) : n->opfamilyname = $4; 0.00 : 520c96: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->amname = $6; : n->isDrop = false; : n->items = $8; : $$ = (Node *) n; 0.00 : 520c9d: 49 89 c6 mov %rax,%r14 : : AlterOpFamilyStmt: : ALTER OPERATOR FAMILY any_name USING access_method ADD_P opclass_item_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; 0.00 : 520ca0: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 520ca4: 48 89 50 08 mov %rdx,0x8(%rax) : n->amname = $6; 0.00 : 520ca8: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->isDrop = false; 0.00 : 520cac: c6 40 18 00 movb $0x0,0x18(%rax) : AlterOpFamilyStmt: : ALTER OPERATOR FAMILY any_name USING access_method ADD_P opclass_item_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; : n->amname = $6; 0.00 : 520cb0: 48 89 50 10 mov %rdx,0x10(%rax) : n->isDrop = false; : n->items = $8; 0.00 : 520cb4: 48 8b 13 mov (%rbx),%rdx 0.00 : 520cb7: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list 0.00 : 520cbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520cc2: e9 b9 0c ff ff jmpq 511980 : : : CreateOpFamilyStmt: : CREATE OPERATOR FAMILY any_name USING access_method : { : CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); 0.00 : 520cc7: 48 8b 3d 92 9b 69 00 mov 0x699b92(%rip),%rdi # bba860 0.00 : 520cce: be 18 00 00 00 mov $0x18,%esi 0.00 : 520cd3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520cda: e8 31 81 27 00 callq 798e10 0.00 : 520cdf: c7 00 f9 02 00 00 movl $0x2f9,(%rax) : n->opfamilyname = $4; 0.00 : 520ce5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->amname = $6; : $$ = (Node *) n; 0.00 : 520cec: 49 89 c6 mov %rax,%r14 : : CreateOpFamilyStmt: : CREATE OPERATOR FAMILY any_name USING access_method : { : CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); : n->opfamilyname = $4; 0.00 : 520cef: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 520cf3: 48 89 50 08 mov %rdx,0x8(%rax) : n->amname = $6; 0.00 : 520cf7: 48 8b 11 mov (%rcx),%rdx 0.00 : 520cfa: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520cfe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520d05: e9 76 0c ff ff jmpq 511980 : errmsg("RECHECK is no longer required"), : errhint("Update your data type."), : parser_errposition(@1))); : $$ = TRUE; : } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520d0a: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 520d0d: e9 6e 0c ff ff jmpq 511980 : /* : * RECHECK no longer does anything in opclass definitions, : * but we still accept it to ease porting of old database : * dumps. : */ : ereport(NOTICE, 0.00 : 520d12: 45 31 c0 xor %r8d,%r8d 0.00 : 520d15: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 520d1a: ba a9 14 00 00 mov $0x14a9,%edx 0.00 : 520d1f: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 520d24: bf 12 00 00 00 mov $0x12,%edi 0.00 : 520d29: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520d30: e8 8b 9d 25 00 callq 77aac0 0.00 : 520d35: 84 c0 test %al,%al 0.00 : 520d37: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520d3e: 74 57 je 520d97 0.00 : 520d40: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 520d47: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 520d4e: 8b 38 mov (%rax),%edi 0.00 : 520d50: e8 4b cf fe ff callq 50dca0 0.00 : 520d55: bf 52 96 7c 00 mov $0x7c9652,%edi 0.00 : 520d5a: 41 89 c5 mov %eax,%r13d 0.00 : 520d5d: 31 c0 xor %eax,%eax 0.00 : 520d5f: e8 3c af 25 00 callq 77bca0 0.00 : 520d64: bf 69 96 7c 00 mov $0x7c9669,%edi 0.00 : 520d69: 89 c3 mov %eax,%ebx 0.00 : 520d6b: 31 c0 xor %eax,%eax 0.00 : 520d6d: e8 2e bb 25 00 callq 77c8a0 0.00 : 520d72: bf 40 04 00 00 mov $0x440,%edi 0.00 : 520d77: 41 89 c4 mov %eax,%r12d 0.00 : 520d7a: e8 d1 bf 25 00 callq 77cd50 0.00 : 520d7f: 44 89 e9 mov %r13d,%ecx 0.00 : 520d82: 89 c7 mov %eax,%edi 0.00 : 520d84: 89 da mov %ebx,%edx 0.00 : 520d86: 44 89 e6 mov %r12d,%esi 0.00 : 520d89: 31 c0 xor %eax,%eax 0.00 : 520d8b: e8 50 98 25 00 callq 77a5e0 0.00 : 520d90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RECHECK is no longer required"), : errhint("Update your data type."), : parser_errposition(@1))); : $$ = TRUE; 0.00 : 520d97: 41 b6 01 mov $0x1,%r14b : } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520d9a: e9 e1 0b ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opclass_purpose: FOR SEARCH { $$ = NIL; } : | FOR ORDER BY any_name { $$ = $4; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520d9f: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 520da2: e9 d9 0b ff ff jmpq 511980 : opt_opfamily: FAMILY any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opclass_purpose: FOR SEARCH { $$ = NIL; } : | FOR ORDER BY any_name { $$ = $4; } 0.00 : 520da7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520dae: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520db1: e9 ca 0b ff ff jmpq 511980 : : opt_opfamily: FAMILY any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opclass_purpose: FOR SEARCH { $$ = NIL; } 0.00 : 520db6: 45 31 f6 xor %r14d,%r14d : | FOR ORDER BY any_name { $$ = $4; } 0.00 : 520db9: e9 c2 0b ff ff jmpq 511980 : opt_default: DEFAULT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_opfamily: FAMILY any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520dbe: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 520dc1: e9 ba 0b ff ff jmpq 511980 : : opt_default: DEFAULT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_opfamily: FAMILY any_name { $$ = $2; } 0.00 : 520dc6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520dcd: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520dd0: e9 ab 0b ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_default: DEFAULT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520dd5: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 520dd8: e9 a3 0b ff ff jmpq 511980 : n->storedtype = $2; : $$ = (Node *) n; : } : ; : : opt_default: DEFAULT { $$ = TRUE; } 0.00 : 520ddd: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520de0: e9 9b 0b ff ff jmpq 511980 : n->class_args = $4; : $$ = (Node *) n; : } : | STORAGE Typename : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520de5: 48 8b 3d 74 9a 69 00 mov 0x699a74(%rip),%rdi # bba860 0.00 : 520dec: be 38 00 00 00 mov $0x38,%esi 0.00 : 520df1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520df8: e8 13 80 27 00 callq 798e10 0.00 : 520dfd: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_STORAGETYPE; 0.00 : 520e03: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->storedtype = $2; : $$ = (Node *) n; 0.00 : 520e0a: 49 89 c6 mov %rax,%r14 : } : | STORAGE Typename : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_STORAGETYPE; : n->storedtype = $2; 0.00 : 520e0d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520e14: 48 8b 11 mov (%rcx),%rdx 0.00 : 520e17: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520e1b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520e22: e9 59 0b ff ff jmpq 511980 : n->number = $2; : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520e27: 48 8b 3d 32 9a 69 00 mov 0x699a32(%rip),%rdi # bba860 0.00 : 520e2e: be 38 00 00 00 mov $0x38,%esi 0.00 : 520e33: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520e3a: e8 d1 7f 27 00 callq 798e10 0.00 : 520e3f: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_FUNCTION; 0.00 : 520e45: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->number = $2; : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520e4c: 48 89 c3 mov %rax,%rbx : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $6; 0.00 : 520e4f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->args = extractArgTypes($7); : n->number = $2; : n->class_args = $4; : $$ = (Node *) n; 0.00 : 520e56: 49 89 de mov %rbx,%r14 : } : | FUNCTION Iconst '(' type_list ')' func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $6; 0.00 : 520e59: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 520e5d: 48 89 43 08 mov %rax,0x8(%rbx) : n->args = extractArgTypes($7); 0.00 : 520e61: 48 8b 39 mov (%rcx),%rdi 0.00 : 520e64: e8 07 fc fe ff callq 510a70 0.00 : 520e69: 48 89 43 10 mov %rax,0x10(%rbx) : n->number = $2; 0.00 : 520e6d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520e74: 8b 46 d8 mov -0x28(%rsi),%eax 0.00 : 520e77: 89 43 18 mov %eax,0x18(%rbx) : n->class_args = $4; 0.00 : 520e7a: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 520e7e: 48 89 43 28 mov %rax,0x28(%rbx) : $$ = (Node *) n; : } : | STORAGE Typename 0.00 : 520e82: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520e89: e9 f2 0a ff ff jmpq 511980 : n->order_family = $5; : $$ = (Node *) n; : } : | FUNCTION Iconst func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520e8e: 48 8b 3d cb 99 69 00 mov 0x6999cb(%rip),%rdi # bba860 0.00 : 520e95: be 38 00 00 00 mov $0x38,%esi 0.00 : 520e9a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520ea1: e8 6a 7f 27 00 callq 798e10 0.00 : 520ea6: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_FUNCTION; 0.00 : 520eac: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->order_family = $5; : $$ = (Node *) n; : } : | FUNCTION Iconst func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520eb3: 48 89 c3 mov %rax,%rbx : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $3; 0.00 : 520eb6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->args = extractArgTypes($4); : n->number = $2; : $$ = (Node *) n; 0.00 : 520ebd: 49 89 de mov %rbx,%r14 : } : | FUNCTION Iconst func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $3; 0.00 : 520ec0: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 520ec4: 48 89 43 08 mov %rax,0x8(%rbx) : n->args = extractArgTypes($4); 0.00 : 520ec8: 48 8b 3e mov (%rsi),%rdi 0.00 : 520ecb: e8 a0 fb fe ff callq 510a70 0.00 : 520ed0: 48 89 43 10 mov %rax,0x10(%rbx) : n->number = $2; 0.00 : 520ed4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520edb: 8b 42 f0 mov -0x10(%rdx),%eax 0.00 : 520ede: 89 43 18 mov %eax,0x18(%rbx) : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' func_name func_args 0.00 : 520ee1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520ee8: e9 93 0a ff ff jmpq 511980 : $$ = (Node *) n; : } : | OPERATOR Iconst any_operator oper_argtypes opclass_purpose : opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520eed: 48 8b 3d 6c 99 69 00 mov 0x69996c(%rip),%rdi # bba860 0.00 : 520ef4: be 38 00 00 00 mov $0x38,%esi 0.00 : 520ef9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520f00: e8 0b 7f 27 00 callq 798e10 0.00 : 520f05: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_OPERATOR; 0.00 : 520f0b: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $3; : n->args = $4; : n->number = $2; : n->order_family = $5; : $$ = (Node *) n; 0.00 : 520f12: 49 89 c6 mov %rax,%r14 : | OPERATOR Iconst any_operator oper_argtypes opclass_purpose : opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->name = $3; 0.00 : 520f15: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520f1c: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 520f20: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = $4; 0.00 : 520f24: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 520f28: 48 89 50 10 mov %rdx,0x10(%rax) : n->number = $2; 0.00 : 520f2c: 8b 53 e0 mov -0x20(%rbx),%edx 0.00 : 520f2f: 89 50 18 mov %edx,0x18(%rax) : n->order_family = $5; 0.00 : 520f32: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 520f36: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | FUNCTION Iconst func_name func_args 0.00 : 520f3a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520f41: e9 3a 0a ff ff jmpq 511980 : ; : : opclass_item: : OPERATOR Iconst any_operator opclass_purpose opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520f46: 48 8b 3d 13 99 69 00 mov 0x699913(%rip),%rdi # bba860 0.00 : 520f4d: be 38 00 00 00 mov $0x38,%esi 0.00 : 520f52: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520f59: e8 b2 7e 27 00 callq 798e10 0.00 : 520f5e: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_OPERATOR; 0.00 : 520f64: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $3; : n->args = NIL; : n->number = $2; : n->order_family = $4; : $$ = (Node *) n; 0.00 : 520f6b: 49 89 c6 mov %rax,%r14 : opclass_item: : OPERATOR Iconst any_operator opclass_purpose opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->name = $3; 0.00 : 520f6e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520f75: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->args = NIL; 0.00 : 520f79: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 520f80: 00 : opclass_item: : OPERATOR Iconst any_operator opclass_purpose opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->name = $3; 0.00 : 520f81: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = NIL; : n->number = $2; 0.00 : 520f85: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 520f88: 89 50 18 mov %edx,0x18(%rax) : n->order_family = $4; 0.00 : 520f8b: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 520f8f: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | OPERATOR Iconst any_operator oper_argtypes opclass_purpose 0.00 : 520f93: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520f9a: e9 e1 09 ff ff jmpq 511980 : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520f9f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520fa6: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 520faa: 48 8b 36 mov (%rsi),%rsi 0.00 : 520fad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520fb4: e8 c7 0e 0c 00 callq 5e1e80 : ; 0.00 : 520fb9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520fc0: 49 89 c6 mov %rax,%r14 : ; 0.00 : 520fc3: e9 b8 09 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } 0.00 : 520fc8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520fcf: 31 f6 xor %esi,%esi 0.00 : 520fd1: 48 8b 3b mov (%rbx),%rdi 0.00 : 520fd4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520fdb: e8 70 08 0c 00 callq 5e1850 : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520fe0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } 0.00 : 520fe7: 49 89 c6 mov %rax,%r14 : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520fea: e9 91 09 ff ff jmpq 511980 : : CreateOpClassStmt: : CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename : USING access_method opt_opfamily AS opclass_item_list : { : CreateOpClassStmt *n = makeNode(CreateOpClassStmt); 0.00 : 520fef: 48 8b 3d 6a 98 69 00 mov 0x69986a(%rip),%rdi # bba860 0.00 : 520ff6: be 38 00 00 00 mov $0x38,%esi 0.00 : 520ffb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521002: e8 09 7e 27 00 callq 798e10 0.00 : 521007: c7 00 f8 02 00 00 movl $0x2f8,(%rax) : n->opclassname = $4; 0.00 : 52100d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->isDefault = $5; : n->datatype = $8; : n->amname = $10; : n->opfamilyname = $11; : n->items = $13; : $$ = (Node *) n; 0.00 : 521014: 49 89 c6 mov %rax,%r14 : CreateOpClassStmt: : CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename : USING access_method opt_opfamily AS opclass_item_list : { : CreateOpClassStmt *n = makeNode(CreateOpClassStmt); : n->opclassname = $4; 0.00 : 521017: 48 8b 51 b8 mov -0x48(%rcx),%rdx 0.00 : 52101b: 48 89 50 08 mov %rdx,0x8(%rax) : n->isDefault = $5; 0.00 : 52101f: 0f b6 51 c0 movzbl -0x40(%rcx),%edx 0.00 : 521023: 88 50 30 mov %dl,0x30(%rax) : n->datatype = $8; 0.00 : 521026: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 52102a: 48 89 50 20 mov %rdx,0x20(%rax) : n->amname = $10; 0.00 : 52102e: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 521032: 48 89 50 18 mov %rdx,0x18(%rax) : n->opfamilyname = $11; 0.00 : 521036: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 52103a: 48 89 50 10 mov %rdx,0x10(%rax) : n->items = $13; 0.00 : 52103e: 48 8b 11 mov (%rcx),%rdx 0.00 : 521041: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *) n; : } : ; 0.00 : 521045: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52104c: e9 2f 09 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_if_not_exists: IF_P NOT EXISTS { $$ = true; } : | /* empty */ { $$ = false; } 0.00 : 521051: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 521054: e9 27 09 ff ff jmpq 511980 : n->skipIfExists = $6; : $$ = (Node *) n; : } : ; : : opt_if_not_exists: IF_P NOT EXISTS { $$ = true; } 0.00 : 521059: 41 b6 01 mov $0x1,%r14b : | /* empty */ { $$ = false; } 0.00 : 52105c: e9 1f 09 ff ff jmpq 511980 : n->skipIfExists = $6; : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); 0.00 : 521061: 48 8b 3d f8 97 69 00 mov 0x6997f8(%rip),%rdi # bba860 0.00 : 521068: be 28 00 00 00 mov $0x28,%esi 0.00 : 52106d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521074: e8 97 7d 27 00 callq 798e10 0.00 : 521079: c7 00 08 03 00 00 movl $0x308,(%rax) : n->typeName = $3; 0.00 : 52107f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newVal = $7; : n->newValNeighbor = $9; : n->newValIsAfter = true; : n->skipIfExists = $6; : $$ = (Node *) n; 0.00 : 521086: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; 0.00 : 521089: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 52108d: 48 89 50 08 mov %rdx,0x8(%rax) : n->newVal = $7; 0.00 : 521091: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 521095: 48 89 50 10 mov %rdx,0x10(%rax) : n->newValNeighbor = $9; 0.00 : 521099: 48 8b 16 mov (%rsi),%rdx : n->newValIsAfter = true; 0.00 : 52109c: c6 40 20 01 movb $0x1,0x20(%rax) : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; : n->newVal = $7; : n->newValNeighbor = $9; 0.00 : 5210a0: 48 89 50 18 mov %rdx,0x18(%rax) : n->newValIsAfter = true; : n->skipIfExists = $6; 0.00 : 5210a4: 0f b6 56 e8 movzbl -0x18(%rsi),%edx 0.00 : 5210a8: 88 50 21 mov %dl,0x21(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5210ab: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5210b2: e9 c9 08 ff ff jmpq 511980 : n->skipIfExists = $6; : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); 0.00 : 5210b7: 48 8b 3d a2 97 69 00 mov 0x6997a2(%rip),%rdi # bba860 0.00 : 5210be: be 28 00 00 00 mov $0x28,%esi 0.00 : 5210c3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5210ca: e8 41 7d 27 00 callq 798e10 0.00 : 5210cf: c7 00 08 03 00 00 movl $0x308,(%rax) : n->typeName = $3; 0.00 : 5210d5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->newVal = $7; : n->newValNeighbor = $9; : n->newValIsAfter = false; : n->skipIfExists = $6; : $$ = (Node *) n; 0.00 : 5210dc: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; 0.00 : 5210df: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 5210e3: 48 89 50 08 mov %rdx,0x8(%rax) : n->newVal = $7; 0.00 : 5210e7: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5210eb: 48 89 50 10 mov %rdx,0x10(%rax) : n->newValNeighbor = $9; 0.00 : 5210ef: 48 8b 13 mov (%rbx),%rdx : n->newValIsAfter = false; 0.00 : 5210f2: c6 40 20 00 movb $0x0,0x20(%rax) : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; : n->newVal = $7; : n->newValNeighbor = $9; 0.00 : 5210f6: 48 89 50 18 mov %rdx,0x18(%rax) : n->newValIsAfter = false; : n->skipIfExists = $6; 0.00 : 5210fa: 0f b6 53 e8 movzbl -0x18(%rbx),%edx 0.00 : 5210fe: 88 50 21 mov %dl,0x21(%rax) : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst 0.00 : 521101: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521108: e9 73 08 ff ff jmpq 511980 : *****************************************************************************/ : : AlterEnumStmt: : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); 0.00 : 52110d: 48 8b 3d 4c 97 69 00 mov 0x69974c(%rip),%rdi # bba860 0.00 : 521114: be 28 00 00 00 mov $0x28,%esi 0.00 : 521119: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521120: e8 eb 7c 27 00 callq 798e10 0.00 : 521125: c7 00 08 03 00 00 movl $0x308,(%rax) : n->typeName = $3; 0.00 : 52112b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->newVal = $7; : n->newValNeighbor = NULL; : n->newValIsAfter = true; : n->skipIfExists = $6; : $$ = (Node *) n; 0.00 : 521132: 49 89 c6 mov %rax,%r14 : : AlterEnumStmt: : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; 0.00 : 521135: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 521139: 48 89 50 08 mov %rdx,0x8(%rax) : n->newVal = $7; 0.00 : 52113d: 48 8b 11 mov (%rcx),%rdx : n->newValNeighbor = NULL; 0.00 : 521140: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521147: 00 : n->newValIsAfter = true; 0.00 : 521148: c6 40 20 01 movb $0x1,0x20(%rax) : AlterEnumStmt: : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; : n->newVal = $7; 0.00 : 52114c: 48 89 50 10 mov %rdx,0x10(%rax) : n->newValNeighbor = NULL; : n->newValIsAfter = true; : n->skipIfExists = $6; 0.00 : 521150: 0f b6 51 f8 movzbl -0x8(%rcx),%edx 0.00 : 521154: 88 50 21 mov %dl,0x21(%rax) : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst 0.00 : 521157: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52115e: e9 1d 08 ff ff jmpq 511980 : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } : | enum_val_list ',' Sconst : { $$ = lappend($1, makeString($3)); } 0.00 : 521163: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52116a: 48 8b 3e mov (%rsi),%rdi 0.00 : 52116d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521174: e8 77 e5 0d 00 callq 5ff6f0 0.00 : 521179: 48 89 c6 mov %rax,%rsi 0.00 : 52117c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521183: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 521187: e8 f4 0c 0c 00 callq 5e1e80 : ; 0.00 : 52118c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } : | enum_val_list ',' Sconst : { $$ = lappend($1, makeString($3)); } 0.00 : 521193: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521196: e9 e5 07 ff ff jmpq 511980 : enum_val_list { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } 0.00 : 52119b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5211a2: 48 8b 3b mov (%rbx),%rdi 0.00 : 5211a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5211ac: e8 3f e5 0d 00 callq 5ff6f0 0.00 : 5211b1: 31 f6 xor %esi,%esi 0.00 : 5211b3: 48 89 c7 mov %rax,%rdi 0.00 : 5211b6: e8 95 06 0c 00 callq 5e1850 : | enum_val_list ',' Sconst 0.00 : 5211bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : enum_val_list { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } 0.00 : 5211c2: 49 89 c6 mov %rax,%r14 : | enum_val_list ',' Sconst 0.00 : 5211c5: e9 b6 07 ff ff jmpq 511980 : } : ; : : opt_enum_val_list: : enum_val_list { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5211ca: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5211cd: e9 ae 07 ff ff jmpq 511980 : $$ = makeDefElem($1, (Node *)$3); : } : ; : : opt_enum_val_list: : enum_val_list { $$ = $1; } 0.00 : 5211d2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5211d9: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5211dc: e9 9f 07 ff ff jmpq 511980 : * the item names needed in old aggregate definitions are likely to become : * SQL keywords. : */ : old_aggr_elem: IDENT '=' def_arg : { : $$ = makeDefElem($1, (Node *)$3); 0.00 : 5211e1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5211e8: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5211ec: 48 8b 32 mov (%rdx),%rsi 0.00 : 5211ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5211f6: e8 05 03 0d 00 callq 5f1500 : } : ; 0.00 : 5211fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * the item names needed in old aggregate definitions are likely to become : * SQL keywords. : */ : old_aggr_elem: IDENT '=' def_arg : { : $$ = makeDefElem($1, (Node *)$3); 0.00 : 521202: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 521205: e9 76 07 ff ff jmpq 511980 : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 52120a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521211: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 521215: 48 8b 36 mov (%rsi),%rsi 0.00 : 521218: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52121f: e8 5c 0c 0c 00 callq 5e1e80 : ; 0.00 : 521224: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 52122b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52122e: e9 4d 07 ff ff jmpq 511980 : ; : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } 0.00 : 521233: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52123a: 31 f6 xor %esi,%esi 0.00 : 52123c: 48 8b 3b mov (%rbx),%rdi 0.00 : 52123f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521246: e8 05 06 0c 00 callq 5e1850 : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 52124b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } 0.00 : 521252: 49 89 c6 mov %rax,%r14 : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 521255: e9 26 07 ff ff jmpq 511980 : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } : | Sconst { $$ = (Node *)makeString($1); } : ; : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } 0.00 : 52125a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521261: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 521265: e9 16 07 ff ff jmpq 511980 : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } : | Sconst { $$ = (Node *)makeString($1); } 0.00 : 52126a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521271: 48 8b 3a mov (%rdx),%rdi 0.00 : 521274: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52127b: e8 70 e4 0d 00 callq 5ff6f0 : ; 0.00 : 521280: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } : | Sconst { $$ = (Node *)makeString($1); } 0.00 : 521287: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52128a: e9 f1 06 ff ff jmpq 511980 : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } 0.00 : 52128f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521296: 4c 8b 30 mov (%rax),%r14 : | Sconst { $$ = (Node *)makeString($1); } 0.00 : 521299: e9 e2 06 ff ff jmpq 511980 : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } 0.00 : 52129e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5212a5: 4c 8b 36 mov (%rsi),%r14 : | NumericOnly { $$ = (Node *)$1; } 0.00 : 5212a8: e9 d3 06 ff ff jmpq 511980 : } : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } 0.00 : 5212ad: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5212b4: 48 8b 3b mov (%rbx),%rdi 0.00 : 5212b7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5212be: e8 8d 7c 27 00 callq 798f50 0.00 : 5212c3: 48 89 c7 mov %rax,%rdi 0.00 : 5212c6: e8 25 e4 0d 00 callq 5ff6f0 : | qual_all_Op { $$ = (Node *)$1; } 0.00 : 5212cb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } 0.00 : 5212d2: 49 89 c6 mov %rax,%r14 : | qual_all_Op { $$ = (Node *)$1; } 0.00 : 5212d5: e9 a6 06 ff ff jmpq 511980 : $$ = makeDefElem($1, NULL); : } : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } 0.00 : 5212da: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5212e1: 4c 8b 31 mov (%rcx),%r14 : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } 0.00 : 5212e4: e9 97 06 ff ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 5212e9: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5212f0: 31 f6 xor %esi,%esi 0.00 : 5212f2: 48 8b 3a mov (%rdx),%rdi 0.00 : 5212f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5212fc: e8 ff 01 0d 00 callq 5f1500 : } : ; 0.00 : 521301: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 521308: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52130b: e9 70 06 ff ff jmpq 511980 : | def_list ',' def_elem { $$ = lappend($1, $3); } : ; : : def_elem: ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 521310: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521317: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 52131b: 48 8b 36 mov (%rsi),%rsi 0.00 : 52131e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521325: e8 d6 01 0d 00 callq 5f1500 : } : | ColLabel 0.00 : 52132a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | def_list ',' def_elem { $$ = lappend($1, $3); } : ; : : def_elem: ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 521331: 49 89 c6 mov %rax,%r14 : } : | ColLabel 0.00 : 521334: e9 47 06 ff ff jmpq 511980 : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 521339: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521340: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 521344: 48 8b 33 mov (%rbx),%rsi 0.00 : 521347: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52134e: e8 2d 0b 0c 00 callq 5e1e80 : ; 0.00 : 521353: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 52135a: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52135d: e9 1e 06 ff ff jmpq 511980 : ; : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } 0.00 : 521362: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521369: 31 f6 xor %esi,%esi 0.00 : 52136b: 48 8b 39 mov (%rcx),%rdi 0.00 : 52136e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521375: e8 d6 04 0c 00 callq 5e1850 : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 52137a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } 0.00 : 521381: 49 89 c6 mov %rax,%r14 : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 521384: e9 f7 05 ff ff jmpq 511980 : n->definition = list_make1(makeDefElem("from", (Node *) $5)); : $$ = (Node *)n; : } : ; : : definition: '(' def_list ')' { $$ = $2; } 0.00 : 521389: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521390: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : ; 0.00 : 521394: e9 e7 05 ff ff jmpq 511980 : n->definition = $4; : $$ = (Node *)n; : } : | CREATE COLLATION any_name FROM any_name : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521399: 48 8b 3d c0 94 69 00 mov 0x6994c0(%rip),%rdi # bba860 0.00 : 5213a0: be 28 00 00 00 mov $0x28,%esi 0.00 : 5213a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5213ac: e8 5f 7a 27 00 callq 798e10 0.00 : 5213b1: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_COLLATION; 0.00 : 5213b7: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->definition = $4; : $$ = (Node *)n; : } : | CREATE COLLATION any_name FROM any_name : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5213be: 48 89 c3 mov %rax,%rbx : n->kind = OBJECT_COLLATION; : n->args = NIL; 0.00 : 5213c1: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5213c8: 00 : n->defnames = $3; 0.00 : 5213c9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->definition = list_make1(makeDefElem("from", (Node *) $5)); 0.00 : 5213d0: bf 2a ec 8a 00 mov $0x8aec2a,%edi : $$ = (Node *)n; 0.00 : 5213d5: 49 89 de mov %rbx,%r14 : | CREATE COLLATION any_name FROM any_name : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_COLLATION; : n->args = NIL; : n->defnames = $3; 0.00 : 5213d8: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 5213dc: 48 89 43 10 mov %rax,0x10(%rbx) : n->definition = list_make1(makeDefElem("from", (Node *) $5)); 0.00 : 5213e0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5213e7: 48 8b 30 mov (%rax),%rsi 0.00 : 5213ea: e8 11 01 0d 00 callq 5f1500 0.00 : 5213ef: 31 f6 xor %esi,%esi 0.00 : 5213f1: 48 89 c7 mov %rax,%rdi 0.00 : 5213f4: e8 57 04 0c 00 callq 5e1850 0.00 : 5213f9: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 5213fd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521404: e9 77 05 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE COLLATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521409: 48 8b 3d 50 94 69 00 mov 0x699450(%rip),%rdi # bba860 0.00 : 521410: be 28 00 00 00 mov $0x28,%esi 0.00 : 521415: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52141c: e8 ef 79 27 00 callq 798e10 0.00 : 521421: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_COLLATION; 0.00 : 521427: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->args = NIL; : n->defnames = $3; : n->definition = $4; : $$ = (Node *)n; 0.00 : 52142e: 49 89 c6 mov %rax,%r14 : } : | CREATE COLLATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_COLLATION; : n->args = NIL; 0.00 : 521431: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521438: 00 : n->defnames = $3; 0.00 : 521439: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521440: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 521444: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $4; 0.00 : 521448: 48 8b 13 mov (%rbx),%rdx 0.00 : 52144b: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE COLLATION any_name FROM any_name 0.00 : 52144f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521456: e9 25 05 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH CONFIGURATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 52145b: 48 8b 3d fe 93 69 00 mov 0x6993fe(%rip),%rdi # bba860 0.00 : 521462: be 28 00 00 00 mov $0x28,%esi 0.00 : 521467: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52146e: e8 9d 79 27 00 callq 798e10 0.00 : 521473: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSCONFIGURATION; 0.00 : 521479: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 521480: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH CONFIGURATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSCONFIGURATION; : n->args = NIL; 0.00 : 521483: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52148a: 00 : n->defnames = $5; 0.00 : 52148b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521492: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 521496: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 52149a: 48 8b 11 mov (%rcx),%rdx 0.00 : 52149d: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE COLLATION any_name definition 0.00 : 5214a1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5214a8: e9 d3 04 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH TEMPLATE any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5214ad: 48 8b 3d ac 93 69 00 mov 0x6993ac(%rip),%rdi # bba860 0.00 : 5214b4: be 28 00 00 00 mov $0x28,%esi 0.00 : 5214b9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5214c0: e8 4b 79 27 00 callq 798e10 0.00 : 5214c5: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSTEMPLATE; 0.00 : 5214cb: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 5214d2: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH TEMPLATE any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSTEMPLATE; : n->args = NIL; 0.00 : 5214d5: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5214dc: 00 : n->defnames = $5; 0.00 : 5214dd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5214e4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5214e8: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 5214ec: 48 8b 16 mov (%rsi),%rdx 0.00 : 5214ef: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH CONFIGURATION any_name definition 0.00 : 5214f3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5214fa: e9 81 04 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH DICTIONARY any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5214ff: 48 8b 3d 5a 93 69 00 mov 0x69935a(%rip),%rdi # bba860 0.00 : 521506: be 28 00 00 00 mov $0x28,%esi 0.00 : 52150b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521512: e8 f9 78 27 00 callq 798e10 0.00 : 521517: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSDICTIONARY; 0.00 : 52151d: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 521524: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH DICTIONARY any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSDICTIONARY; : n->args = NIL; 0.00 : 521527: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52152e: 00 : n->defnames = $5; 0.00 : 52152f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521536: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52153a: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 52153e: 48 8b 13 mov (%rbx),%rdx 0.00 : 521541: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH TEMPLATE any_name definition 0.00 : 521545: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52154c: e9 2f 04 ff ff jmpq 511980 : n->params = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH PARSER any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521551: 48 8b 3d 08 93 69 00 mov 0x699308(%rip),%rdi # bba860 0.00 : 521558: be 28 00 00 00 mov $0x28,%esi 0.00 : 52155d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521564: e8 a7 78 27 00 callq 798e10 0.00 : 521569: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSPARSER; 0.00 : 52156f: c7 40 04 20 00 00 00 movl $0x20,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 521576: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH PARSER any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSPARSER; : n->args = NIL; 0.00 : 521579: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521580: 00 : n->defnames = $5; 0.00 : 521581: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521588: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52158c: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 521590: 48 8b 11 mov (%rcx),%rdx 0.00 : 521593: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH DICTIONARY any_name definition 0.00 : 521597: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52159e: e9 dd 03 ff ff jmpq 511980 : n->vals = $7; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS RANGE definition : { : CreateRangeStmt *n = makeNode(CreateRangeStmt); 0.00 : 5215a3: 48 8b 3d b6 92 69 00 mov 0x6992b6(%rip),%rdi # bba860 0.00 : 5215aa: be 18 00 00 00 mov $0x18,%esi 0.00 : 5215af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5215b6: e8 55 78 27 00 callq 798e10 0.00 : 5215bb: c7 00 07 03 00 00 movl $0x307,(%rax) : n->typeName = $3; 0.00 : 5215c1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->params = $6; : $$ = (Node *)n; 0.00 : 5215c8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS RANGE definition : { : CreateRangeStmt *n = makeNode(CreateRangeStmt); : n->typeName = $3; 0.00 : 5215cb: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5215cf: 48 89 50 08 mov %rdx,0x8(%rax) : n->params = $6; 0.00 : 5215d3: 48 8b 16 mov (%rsi),%rdx 0.00 : 5215d6: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH PARSER any_name definition 0.00 : 5215da: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5215e1: e9 9a 03 ff ff jmpq 511980 : n->coldeflist = $6; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS ENUM_P '(' opt_enum_val_list ')' : { : CreateEnumStmt *n = makeNode(CreateEnumStmt); 0.00 : 5215e6: 48 8b 3d 73 92 69 00 mov 0x699273(%rip),%rdi # bba860 0.00 : 5215ed: be 18 00 00 00 mov $0x18,%esi 0.00 : 5215f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5215f9: e8 12 78 27 00 callq 798e10 0.00 : 5215fe: c7 00 06 03 00 00 movl $0x306,(%rax) : n->typeName = $3; 0.00 : 521604: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->vals = $7; : $$ = (Node *)n; 0.00 : 52160b: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS ENUM_P '(' opt_enum_val_list ')' : { : CreateEnumStmt *n = makeNode(CreateEnumStmt); : n->typeName = $3; 0.00 : 52160e: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 521612: 48 89 50 08 mov %rdx,0x8(%rax) : n->vals = $7; 0.00 : 521616: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52161a: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS RANGE definition 0.00 : 52161e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521625: e9 56 03 ff ff jmpq 511980 : n->definition = NIL; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS '(' OptTableFuncElementList ')' : { : CompositeTypeStmt *n = makeNode(CompositeTypeStmt); 0.00 : 52162a: 48 8b 3d 2f 92 69 00 mov 0x69922f(%rip),%rdi # bba860 0.00 : 521631: be 18 00 00 00 mov $0x18,%esi 0.00 : 521636: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52163d: e8 ce 77 27 00 callq 798e10 0.00 : 521642: c7 00 05 03 00 00 movl $0x305,(%rax) 0.00 : 521648: 48 89 c3 mov %rax,%rbx : : /* can't use qualified_name, sigh */ : n->typevar = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 52164b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521652: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : n->coldeflist = $6; : $$ = (Node *)n; 0.00 : 521659: 49 89 de mov %rbx,%r14 : | CREATE TYPE_P any_name AS '(' OptTableFuncElementList ')' : { : CompositeTypeStmt *n = makeNode(CompositeTypeStmt); : : /* can't use qualified_name, sigh */ : n->typevar = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 52165c: 48 8b 7a e0 mov -0x20(%rdx),%rdi 0.00 : 521660: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 521667: 8b 70 f0 mov -0x10(%rax),%esi 0.00 : 52166a: e8 d1 f7 fe ff callq 510e40 0.00 : 52166f: 48 89 43 08 mov %rax,0x8(%rbx) : n->coldeflist = $6; 0.00 : 521673: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52167a: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 52167e: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS ENUM_P '(' opt_enum_val_list ')' 0.00 : 521682: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521689: e9 f2 02 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE TYPE_P any_name : { : /* Shell type (identified by lack of definition) */ : DefineStmt *n = makeNode(DefineStmt); 0.00 : 52168e: 48 8b 3d cb 91 69 00 mov 0x6991cb(%rip),%rdi # bba860 0.00 : 521695: be 28 00 00 00 mov $0x28,%esi 0.00 : 52169a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5216a1: e8 6a 77 27 00 callq 798e10 0.00 : 5216a6: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TYPE; 0.00 : 5216ac: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = NIL; : n->definition = NIL; : $$ = (Node *)n; 0.00 : 5216b3: 49 89 c6 mov %rax,%r14 : | CREATE TYPE_P any_name : { : /* Shell type (identified by lack of definition) */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; 0.00 : 5216b6: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 5216ba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5216c1: 48 8b 16 mov (%rsi),%rdx : n->args = NIL; 0.00 : 5216c4: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5216cb: 00 : n->definition = NIL; 0.00 : 5216cc: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5216d3: 00 : { : /* Shell type (identified by lack of definition) */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; : n->defnames = $3; 0.00 : 5216d4: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = NIL; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS '(' OptTableFuncElementList ')' 0.00 : 5216d8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5216df: e9 9c 02 ff ff jmpq 511980 : n->definition = $4; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5216e4: 48 8b 3d 75 91 69 00 mov 0x699175(%rip),%rdi # bba860 0.00 : 5216eb: be 28 00 00 00 mov $0x28,%esi 0.00 : 5216f0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5216f7: e8 14 77 27 00 callq 798e10 0.00 : 5216fc: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TYPE; 0.00 : 521702: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = NIL; : n->definition = $4; : $$ = (Node *)n; 0.00 : 521709: 49 89 c6 mov %rax,%r14 : } : | CREATE TYPE_P any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; 0.00 : 52170c: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 521710: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521717: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->args = NIL; 0.00 : 52171b: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521722: 00 : | CREATE TYPE_P any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; : n->defnames = $3; 0.00 : 521723: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = $4; 0.00 : 521727: 48 8b 13 mov (%rbx),%rdx 0.00 : 52172a: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name 0.00 : 52172e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521735: e9 46 02 ff ff jmpq 511980 : n->definition = $4; : $$ = (Node *)n; : } : | CREATE OPERATOR any_operator definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 52173a: 48 8b 3d 1f 91 69 00 mov 0x69911f(%rip),%rdi # bba860 0.00 : 521741: be 28 00 00 00 mov $0x28,%esi 0.00 : 521746: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52174d: e8 be 76 27 00 callq 798e10 0.00 : 521752: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_OPERATOR; 0.00 : 521758: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = NIL; : n->definition = $4; : $$ = (Node *)n; 0.00 : 52175f: 49 89 c6 mov %rax,%r14 : } : | CREATE OPERATOR any_operator definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_OPERATOR; : n->oldstyle = false; 0.00 : 521762: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 521766: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52176d: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->args = NIL; 0.00 : 521771: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521778: 00 : | CREATE OPERATOR any_operator definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_OPERATOR; : n->oldstyle = false; : n->defnames = $3; 0.00 : 521779: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = $4; 0.00 : 52177d: 48 8b 11 mov (%rcx),%rdx 0.00 : 521780: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name definition 0.00 : 521784: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52178b: e9 f0 01 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE AGGREGATE func_name old_aggr_definition : { : /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521790: 48 8b 3d c9 90 69 00 mov 0x6990c9(%rip),%rdi # bba860 0.00 : 521797: be 28 00 00 00 mov $0x28,%esi 0.00 : 52179c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5217a3: e8 68 76 27 00 callq 798e10 0.00 : 5217a8: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_AGGREGATE; 0.00 : 5217ae: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->oldstyle = true; : n->defnames = $3; : n->args = NIL; : n->definition = $4; : $$ = (Node *)n; 0.00 : 5217b5: 49 89 c6 mov %rax,%r14 : | CREATE AGGREGATE func_name old_aggr_definition : { : /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_AGGREGATE; : n->oldstyle = true; 0.00 : 5217b8: c6 40 08 01 movb $0x1,0x8(%rax) : n->defnames = $3; 0.00 : 5217bc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5217c3: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->args = NIL; 0.00 : 5217c7: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5217ce: 00 : { : /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_AGGREGATE; : n->oldstyle = true; : n->defnames = $3; 0.00 : 5217cf: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = $4; 0.00 : 5217d3: 48 8b 16 mov (%rsi),%rdx 0.00 : 5217d6: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE OPERATOR any_operator definition 0.00 : 5217da: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5217e1: e9 9a 01 ff ff jmpq 511980 : *****************************************************************************/ : : DefineStmt: : CREATE AGGREGATE func_name aggr_args definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5217e6: 48 8b 3d 73 90 69 00 mov 0x699073(%rip),%rdi # bba860 0.00 : 5217ed: be 28 00 00 00 mov $0x28,%esi 0.00 : 5217f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5217f9: e8 12 76 27 00 callq 798e10 0.00 : 5217fe: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_AGGREGATE; 0.00 : 521804: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = $4; : n->definition = $5; : $$ = (Node *)n; 0.00 : 52180b: 49 89 c6 mov %rax,%r14 : DefineStmt: : CREATE AGGREGATE func_name aggr_args definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_AGGREGATE; : n->oldstyle = false; 0.00 : 52180e: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 521812: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521819: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 52181d: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = $4; 0.00 : 521821: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 521825: 48 89 50 18 mov %rdx,0x18(%rax) : n->definition = $5; 0.00 : 521829: 48 8b 13 mov (%rbx),%rdx 0.00 : 52182c: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE AGGREGATE func_name old_aggr_definition 0.00 : 521830: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521837: e9 44 01 ff ff jmpq 511980 : ; : : DropAssertStmt: : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 52183c: 48 8b 3d 1d 90 69 00 mov 0x69901d(%rip),%rdi # bba860 0.00 : 521843: be 28 00 00 00 mov $0x28,%esi 0.00 : 521848: e8 c3 75 27 00 callq 798e10 0.00 : 52184d: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = NIL; 0.00 : 521853: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 52185a: 00 : n->arguments = NIL; : n->behavior = $4; : n->removeType = OBJECT_TRIGGER; /* XXX */ : ereport(ERROR, 0.00 : 52185b: 45 31 c0 xor %r8d,%r8d : DropAssertStmt: : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = NIL; : n->arguments = NIL; 0.00 : 52185e: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 521865: 00 : n->behavior = $4; 0.00 : 521866: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->removeType = OBJECT_TRIGGER; /* XXX */ : ereport(ERROR, 0.00 : 52186d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 521872: bf 14 00 00 00 mov $0x14,%edi : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = NIL; : n->arguments = NIL; : n->behavior = $4; 0.00 : 521877: 8b 11 mov (%rcx),%edx : n->removeType = OBJECT_TRIGGER; /* XXX */ 0.00 : 521879: c7 40 18 1d 00 00 00 movl $0x1d,0x18(%rax) : ereport(ERROR, 0.00 : 521880: b9 9a 74 82 00 mov $0x82749a,%ecx : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = NIL; : n->arguments = NIL; : n->behavior = $4; 0.00 : 521885: 89 50 1c mov %edx,0x1c(%rax) : n->removeType = OBJECT_TRIGGER; /* XXX */ : ereport(ERROR, 0.00 : 521888: ba 4d 13 00 00 mov $0x134d,%edx 0.00 : 52188d: e8 2e 92 25 00 callq 77aac0 0.00 : 521892: 84 c0 test %al,%al 0.00 : 521894: 0f 84 0d 07 ff ff je 511fa7 0.00 : 52189a: bf 70 a0 7c 00 mov $0x7ca070,%edi 0.00 : 52189f: 31 c0 xor %eax,%eax 0.00 : 5218a1: e8 fa af 25 00 callq 77c8a0 0.00 : 5218a6: bf 40 04 00 00 mov $0x440,%edi 0.00 : 5218ab: 89 c3 mov %eax,%ebx : foreach(lc, func_args) : { : FunctionParameter *p = (FunctionParameter *) lfirst(lc); : : if (p->mode != FUNC_PARAM_IN && p->mode != FUNC_PARAM_VARIADIC) : ereport(ERROR, 0.00 : 5218ad: e8 9e b4 25 00 callq 77cd50 0.00 : 5218b2: 89 de mov %ebx,%esi 0.00 : 5218b4: 89 c7 mov %eax,%edi 0.00 : 5218b6: 31 c0 xor %eax,%eax 0.00 : 5218b8: e8 23 8d 25 00 callq 77a5e0 0.00 : 5218bd: e9 e5 06 ff ff jmpq 511fa7 : : CreateAssertStmt: : CREATE ASSERTION name CHECK '(' a_expr ')' : ConstraintAttributeSpec : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 5218c2: 48 8b 3d 97 8f 69 00 mov 0x698f97(%rip),%rdi # bba860 0.00 : 5218c9: be 50 00 00 00 mov $0x50,%esi 0.00 : 5218ce: e8 3d 75 27 00 callq 798e10 0.00 : 5218d3: c7 00 e9 02 00 00 movl $0x2e9,(%rax) : n->trigname = $3; 0.00 : 5218d9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : : CreateAssertStmt: : CREATE ASSERTION name CHECK '(' a_expr ')' : ConstraintAttributeSpec : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 5218e0: 48 89 c3 mov %rax,%rbx : n->trigname = $3; 0.00 : 5218e3: 48 8b 46 d8 mov -0x28(%rsi),%rax 0.00 : 5218e7: 48 89 43 08 mov %rax,0x8(%rbx) : n->args = list_make1($6); 0.00 : 5218eb: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5218ef: 31 f6 xor %esi,%esi 0.00 : 5218f1: e8 5a ff 0b 00 callq 5e1850 : n->isconstraint = TRUE; 0.00 : 5218f6: c6 43 40 01 movb $0x1,0x40(%rbx) : CREATE ASSERTION name CHECK '(' a_expr ')' : ConstraintAttributeSpec : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $3; : n->args = list_make1($6); 0.00 : 5218fa: 48 89 43 20 mov %rax,0x20(%rbx) : n->isconstraint = TRUE; : processCASbits($8, @8, "ASSERTION", 0.00 : 5218fe: 48 8d 4b 41 lea 0x41(%rbx),%rcx 0.00 : 521902: 48 8b 85 70 f4 ff ff mov -0xb90(%rbp),%rax 0.00 : 521909: 4c 8d 43 42 lea 0x42(%rbx),%r8 0.00 : 52190d: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 521914: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 52191b: 00 0.00 : 52191c: 45 31 c9 xor %r9d,%r9d 0.00 : 52191f: ba 48 96 7c 00 mov $0x7c9648,%edx 0.00 : 521924: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 521929: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521930: 8b 33 mov (%rbx),%esi 0.00 : 521932: 8b 38 mov (%rax),%edi 0.00 : 521934: e8 d7 c4 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : : ereport(ERROR, 0.00 : 521939: 45 31 c0 xor %r8d,%r8d 0.00 : 52193c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 521941: ba 3d 13 00 00 mov $0x133d,%edx 0.00 : 521946: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52194b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 521950: e8 6b 91 25 00 callq 77aac0 0.00 : 521955: 84 c0 test %al,%al 0.00 : 521957: 0f 84 4a 06 ff ff je 511fa7 0.00 : 52195d: bf 48 a0 7c 00 mov $0x7ca048,%edi 0.00 : 521962: 31 c0 xor %eax,%eax 0.00 : 521964: e8 37 af 25 00 callq 77c8a0 0.00 : 521969: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52196e: 89 c3 mov %eax,%ebx 0.00 : 521970: e9 38 ff ff ff jmpq 5218ad : : enable_trigger: : ENABLE_P { $$ = TRIGGER_FIRES_ON_ORIGIN; } : | ENABLE_P REPLICA { $$ = TRIGGER_FIRES_ON_REPLICA; } : | ENABLE_P ALWAYS { $$ = TRIGGER_FIRES_ALWAYS; } : | DISABLE_P { $$ = TRIGGER_DISABLED; } 0.00 : 521975: 41 b6 44 mov $0x44,%r14b : ; 0.00 : 521978: e9 03 00 ff ff jmpq 511980 : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } 0.00 : 52197d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 521984: ff ff ff 0.00 : 521987: 49 21 c6 and %rax,%r14 0.00 : 52198a: 49 83 ce 08 or $0x8,%r14 : | NOT VALID { $$ = CAS_NOT_VALID; } 0.00 : 52198e: e9 ed ff fe ff jmpq 511980 : ; : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } 0.00 : 521993: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 52199a: ff ff ff 0.00 : 52199d: 49 21 f6 and %rsi,%r14 0.00 : 5219a0: 49 83 ce 04 or $0x4,%r14 : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } 0.00 : 5219a4: e9 d7 ff fe ff jmpq 511980 : } : ; : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } 0.00 : 5219a9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5219b0: ff ff ff 0.00 : 5219b3: 49 21 de and %rbx,%r14 0.00 : 5219b6: 49 83 ce 02 or $0x2,%r14 : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } 0.00 : 5219ba: e9 c1 ff fe ff jmpq 511980 : $$ = newspec; : } : ; : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } 0.00 : 5219bf: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5219c6: ff ff ff 0.00 : 5219c9: 49 21 ce and %rcx,%r14 0.00 : 5219cc: 49 83 ce 01 or $0x1,%r14 : | DEFERRABLE { $$ = CAS_DEFERRABLE; } 0.00 : 5219d0: e9 ab ff fe ff jmpq 511980 : /* : * We must complain about conflicting options. : * We could, but choose not to, complain about redundant : * options (ie, where $2's bit is already set in $1). : */ : int newspec = $1 | $2; 0.00 : 5219d5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5219dc: 8b 11 mov (%rcx),%edx 0.00 : 5219de: 0b 51 f8 or -0x8(%rcx),%edx : : /* special message for this case */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) 0.00 : 5219e1: 89 d0 mov %edx,%eax 0.00 : 5219e3: 83 e0 09 and $0x9,%eax 0.00 : 5219e6: 83 f8 09 cmp $0x9,%eax 0.00 : 5219e9: 0f 84 86 84 00 00 je 529e75 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), : parser_errposition(@2))); : /* generic message for other conflicts */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || 0.00 : 5219ef: 89 d0 mov %edx,%eax 0.00 : 5219f1: 83 e0 03 and $0x3,%eax 0.00 : 5219f4: 83 f8 03 cmp $0x3,%eax 0.00 : 5219f7: 0f 84 24 84 00 00 je 529e21 0.00 : 5219fd: 89 d0 mov %edx,%eax 0.00 : 5219ff: 83 e0 0c and $0xc,%eax 0.00 : 521a02: 83 f8 0c cmp $0xc,%eax 0.00 : 521a05: 0f 84 16 84 00 00 je 529e21 : (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("conflicting constraint properties"), : parser_errposition(@2))); : $$ = newspec; 0.00 : 521a0b: 89 d0 mov %edx,%eax 0.00 : 521a0d: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 521a14: ff ff ff 0.00 : 521a17: 49 21 d6 and %rdx,%r14 0.00 : 521a1a: 49 09 c6 or %rax,%r14 : } : ; 0.00 : 521a1d: e9 5e ff fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : ConstraintAttributeSpec: : /*EMPTY*/ : { $$ = 0; } 0.00 : 521a22: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 521a29: ff ff ff 0.00 : 521a2c: 49 21 d6 and %rdx,%r14 : | ConstraintAttributeSpec ConstraintAttributeElem 0.00 : 521a2f: e9 4c ff fe ff jmpq 511980 : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } : | event_trigger_when_list AND event_trigger_when_item : { $$ = lappend($1, $3); } 0.00 : 521a34: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521a3b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 521a3f: 48 8b 32 mov (%rdx),%rsi 0.00 : 521a42: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521a49: e8 32 04 0c 00 callq 5e1e80 : ; 0.00 : 521a4e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } : | event_trigger_when_list AND event_trigger_when_item : { $$ = lappend($1, $3); } 0.00 : 521a55: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521a58: e9 23 ff fe ff jmpq 511980 : } : ; : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } 0.00 : 521a5d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521a64: 31 f6 xor %esi,%esi 0.00 : 521a66: 48 8b 38 mov (%rax),%rdi 0.00 : 521a69: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521a70: e8 db fd 0b 00 callq 5e1850 : | event_trigger_when_list AND event_trigger_when_item 0.00 : 521a75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } 0.00 : 521a7c: 49 89 c6 mov %rax,%r14 : | event_trigger_when_list AND event_trigger_when_item 0.00 : 521a7f: e9 fc fe fe ff jmpq 511980 : } : | CREATE EVENT TRIGGER name ON ColLabel : WHEN event_trigger_when_list : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); 0.00 : 521a84: 48 8b 3d d5 8d 69 00 mov 0x698dd5(%rip),%rdi # bba860 0.00 : 521a8b: be 28 00 00 00 mov $0x28,%esi 0.00 : 521a90: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521a97: e8 74 73 27 00 callq 798e10 0.00 : 521a9c: c7 00 1a 03 00 00 movl $0x31a,(%rax) : n->trigname = $4; 0.00 : 521aa2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->eventname = $6; : n->whenclause = $8; : n->funcname = $11; : $$ = (Node *)n; 0.00 : 521aa9: 49 89 c6 mov %rax,%r14 : | CREATE EVENT TRIGGER name ON ColLabel : WHEN event_trigger_when_list : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); : n->trigname = $4; 0.00 : 521aac: 48 8b 53 b8 mov -0x48(%rbx),%rdx 0.00 : 521ab0: 48 89 50 08 mov %rdx,0x8(%rax) : n->eventname = $6; 0.00 : 521ab4: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 521ab8: 48 89 50 10 mov %rdx,0x10(%rax) : n->whenclause = $8; 0.00 : 521abc: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 521ac0: 48 89 50 18 mov %rdx,0x18(%rax) : n->funcname = $11; 0.00 : 521ac4: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 521ac8: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : ; 0.00 : 521acc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521ad3: e9 a8 fe fe ff jmpq 511980 : : CreateEventTrigStmt: : CREATE EVENT TRIGGER name ON ColLabel : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); 0.00 : 521ad8: 48 8b 3d 81 8d 69 00 mov 0x698d81(%rip),%rdi # bba860 0.00 : 521adf: be 28 00 00 00 mov $0x28,%esi 0.00 : 521ae4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521aeb: e8 20 73 27 00 callq 798e10 0.00 : 521af0: c7 00 1a 03 00 00 movl $0x31a,(%rax) : n->trigname = $4; 0.00 : 521af6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->eventname = $6; : n->whenclause = NULL; : n->funcname = $9; : $$ = (Node *)n; 0.00 : 521afd: 49 89 c6 mov %rax,%r14 : CreateEventTrigStmt: : CREATE EVENT TRIGGER name ON ColLabel : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); : n->trigname = $4; 0.00 : 521b00: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 521b04: 48 89 50 08 mov %rdx,0x8(%rax) : n->eventname = $6; 0.00 : 521b08: 48 8b 51 d8 mov -0x28(%rcx),%rdx : n->whenclause = NULL; 0.00 : 521b0c: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521b13: 00 : CREATE EVENT TRIGGER name ON ColLabel : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); : n->trigname = $4; : n->eventname = $6; 0.00 : 521b14: 48 89 50 10 mov %rdx,0x10(%rax) : n->whenclause = NULL; : n->funcname = $9; 0.00 : 521b18: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 521b1c: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE EVENT TRIGGER name ON ColLabel 0.00 : 521b20: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521b27: e9 54 fe fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521b2c: 48 8b 3d 2d 8d 69 00 mov 0x698d2d(%rip),%rdi # bba860 0.00 : 521b33: be 28 00 00 00 mov $0x28,%esi 0.00 : 521b38: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521b3f: e8 cc 72 27 00 callq 798e10 0.00 : 521b44: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_TRIGGER; 0.00 : 521b4a: c7 40 18 1d 00 00 00 movl $0x1d,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521b51: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 521b54: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->behavior = $8; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 521b5b: 49 89 de mov %rbx,%r14 : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 521b5e: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 521b62: e8 89 db 0d 00 callq 5ff6f0 0.00 : 521b67: 48 89 c6 mov %rax,%rsi 0.00 : 521b6a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521b71: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 521b75: e8 06 03 0c 00 callq 5e1e80 0.00 : 521b7a: 31 f6 xor %esi,%esi 0.00 : 521b7c: 48 89 c7 mov %rax,%rdi 0.00 : 521b7f: e8 cc fc 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 521b84: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 521b8b: 00 : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 521b8c: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $8; 0.00 : 521b90: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521b97: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 521b99: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 521b9d: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); : n->arguments = NIL; : n->behavior = $8; 0.00 : 521ba1: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 521ba4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521bab: e9 d0 fd fe ff jmpq 511980 : : : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521bb0: 48 8b 3d a9 8c 69 00 mov 0x698ca9(%rip),%rdi # bba860 0.00 : 521bb7: be 28 00 00 00 mov $0x28,%esi 0.00 : 521bbc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521bc3: e8 48 72 27 00 callq 798e10 0.00 : 521bc8: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_TRIGGER; 0.00 : 521bce: c7 40 18 1d 00 00 00 movl $0x1d,0x18(%rax) : : : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521bd5: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 521bd8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $6; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 521bdf: 49 89 de mov %rbx,%r14 : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 521be2: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 521be6: e8 05 db 0d 00 callq 5ff6f0 0.00 : 521beb: 48 89 c6 mov %rax,%rsi 0.00 : 521bee: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521bf5: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 521bf9: e8 82 02 0c 00 callq 5e1e80 0.00 : 521bfe: 31 f6 xor %esi,%esi 0.00 : 521c00: 48 89 c7 mov %rax,%rdi 0.00 : 521c03: e8 48 fc 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 521c08: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 521c0f: 00 : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 521c10: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $6; 0.00 : 521c14: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521c1b: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 521c1d: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 521c21: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); : n->arguments = NIL; : n->behavior = $6; 0.00 : 521c25: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior 0.00 : 521c28: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521c2f: e9 4c fd fe ff jmpq 511980 : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } : | NOT VALID { $$ = CAS_NOT_VALID; } : | NO INHERIT { $$ = CAS_NO_INHERIT; } 0.00 : 521c34: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 521c3b: ff ff ff 0.00 : 521c3e: 49 21 ce and %rcx,%r14 0.00 : 521c41: 49 83 ce 20 or $0x20,%r14 : ; 0.00 : 521c45: e9 36 fd fe ff jmpq 511980 : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } : | NOT VALID { $$ = CAS_NOT_VALID; } 0.00 : 521c4a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 521c51: ff ff ff 0.00 : 521c54: 49 21 d6 and %rdx,%r14 0.00 : 521c57: 49 83 ce 10 or $0x10,%r14 : | NO INHERIT { $$ = CAS_NO_INHERIT; } 0.00 : 521c5b: e9 20 fd fe ff jmpq 511980 : ; : : AlterEventTrigStmt: : ALTER EVENT TRIGGER name enable_trigger : { : AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); 0.00 : 521c60: 48 8b 3d f9 8b 69 00 mov 0x698bf9(%rip),%rdi # bba860 0.00 : 521c67: be 18 00 00 00 mov $0x18,%esi 0.00 : 521c6c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521c73: e8 98 71 27 00 callq 798e10 0.00 : 521c78: c7 00 1b 03 00 00 movl $0x31b,(%rax) : n->trigname = $4; 0.00 : 521c7e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->tgenabled = $5; : $$ = (Node *) n; 0.00 : 521c85: 49 89 c6 mov %rax,%r14 : : AlterEventTrigStmt: : ALTER EVENT TRIGGER name enable_trigger : { : AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); : n->trigname = $4; 0.00 : 521c88: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 521c8c: 48 89 50 08 mov %rdx,0x8(%rax) : n->tgenabled = $5; 0.00 : 521c90: 0f b6 11 movzbl (%rcx),%edx 0.00 : 521c93: 88 50 10 mov %dl,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 521c96: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521c9d: e9 de fc fe ff jmpq 511980 : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } : | event_trigger_value_list ',' SCONST : { $$ = lappend($1, makeString($3)); } 0.00 : 521ca2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521ca9: 48 8b 3e mov (%rsi),%rdi 0.00 : 521cac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521cb3: e8 38 da 0d 00 callq 5ff6f0 0.00 : 521cb8: 48 89 c6 mov %rax,%rsi 0.00 : 521cbb: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521cc2: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 521cc6: e8 b5 01 0c 00 callq 5e1e80 : ; 0.00 : 521ccb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } : | event_trigger_value_list ',' SCONST : { $$ = lappend($1, makeString($3)); } 0.00 : 521cd2: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521cd5: e9 a6 fc fe ff jmpq 511980 : { $$ = makeDefElem($1, (Node *) $4); } : ; : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } 0.00 : 521cda: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521ce1: 48 8b 3b mov (%rbx),%rdi 0.00 : 521ce4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521ceb: e8 00 da 0d 00 callq 5ff6f0 0.00 : 521cf0: 31 f6 xor %esi,%esi 0.00 : 521cf2: 48 89 c7 mov %rax,%rdi 0.00 : 521cf5: e8 56 fb 0b 00 callq 5e1850 : | event_trigger_value_list ',' SCONST 0.00 : 521cfa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = makeDefElem($1, (Node *) $4); } : ; : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } 0.00 : 521d01: 49 89 c6 mov %rax,%r14 : | event_trigger_value_list ',' SCONST 0.00 : 521d04: e9 77 fc fe ff jmpq 511980 : { $$ = lappend($1, $3); } : ; : : event_trigger_when_item: : ColId IN_P '(' event_trigger_value_list ')' : { $$ = makeDefElem($1, (Node *) $4); } 0.00 : 521d09: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521d10: 48 8b 71 f8 mov -0x8(%rcx),%rsi 0.00 : 521d14: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 521d18: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521d1f: e8 dc f7 0c 00 callq 5f1500 : ; 0.00 : 521d24: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = lappend($1, $3); } : ; : : event_trigger_when_item: : ColId IN_P '(' event_trigger_value_list ')' : { $$ = makeDefElem($1, (Node *) $4); } 0.00 : 521d2b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521d2e: e9 4d fc fe ff jmpq 511980 : } : ; : : enable_trigger: : ENABLE_P { $$ = TRIGGER_FIRES_ON_ORIGIN; } : | ENABLE_P REPLICA { $$ = TRIGGER_FIRES_ON_REPLICA; } 0.00 : 521d33: 41 b6 52 mov $0x52,%r14b : | ENABLE_P ALWAYS { $$ = TRIGGER_FIRES_ALWAYS; } 0.00 : 521d36: e9 45 fc fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : enable_trigger: : ENABLE_P { $$ = TRIGGER_FIRES_ON_ORIGIN; } 0.00 : 521d3b: 41 b6 4f mov $0x4f,%r14b : | ENABLE_P REPLICA { $$ = TRIGGER_FIRES_ON_REPLICA; } 0.00 : 521d3e: e9 3d fc fe ff jmpq 511980 : | ENABLE_P ALWAYS { $$ = TRIGGER_FIRES_ALWAYS; } 0.00 : 521d43: 41 b6 41 mov $0x41,%r14b : | DISABLE_P { $$ = TRIGGER_DISABLED; } 0.00 : 521d46: e9 35 fc fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : TriggerActionTime: : BEFORE { $$ = TRIGGER_TYPE_BEFORE; } 0.00 : 521d4b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 521d52: ff ff ff 0.00 : 521d55: 49 21 de and %rbx,%r14 0.00 : 521d58: 49 83 ce 02 or $0x2,%r14 : | AFTER { $$ = TRIGGER_TYPE_AFTER; } 0.00 : 521d5c: e9 1f fc fe ff jmpq 511980 : | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON : qualified_name OptConstrFromTable ConstraintAttributeSpec : FOR EACH ROW TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521d61: 48 8b 3d f8 8a 69 00 mov 0x698af8(%rip),%rdi # bba860 0.00 : 521d68: be 50 00 00 00 mov $0x50,%esi 0.00 : 521d6d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521d74: e8 97 70 27 00 callq 798e10 0.00 : 521d79: c7 00 e9 02 00 00 movl $0x2e9,(%rax) : n->trigname = $4; 0.00 : 521d7f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON : qualified_name OptConstrFromTable ConstraintAttributeSpec : FOR EACH ROW TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521d86: 48 89 c3 mov %rax,%rbx : n->trigname = $4; 0.00 : 521d89: 48 8b 42 80 mov -0x80(%rdx),%rax : n->relation = $8; : n->funcname = $17; : n->args = $19; : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); 0.00 : 521d8d: 48 89 d1 mov %rdx,%rcx 0.00 : 521d90: 48 83 e9 70 sub $0x70,%rcx : qualified_name OptConstrFromTable ConstraintAttributeSpec : FOR EACH ROW TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $4; 0.00 : 521d94: 48 89 43 08 mov %rax,0x8(%rbx) : n->relation = $8; 0.00 : 521d98: 48 8b 42 a0 mov -0x60(%rdx),%rax 0.00 : 521d9c: 48 89 43 10 mov %rax,0x10(%rbx) : n->funcname = $17; 0.00 : 521da0: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 521da4: 48 89 43 18 mov %rax,0x18(%rbx) : n->args = $19; 0.00 : 521da8: 48 8b 42 f8 mov -0x8(%rdx),%rax : n->row = TRUE; 0.00 : 521dac: c6 43 28 01 movb $0x1,0x28(%rbx) : n->timing = TRIGGER_TYPE_AFTER; 0.00 : 521db0: 66 c7 43 2a 00 00 movw $0x0,0x2a(%rbx) : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $4; : n->relation = $8; : n->funcname = $17; : n->args = $19; 0.00 : 521db6: 48 89 43 20 mov %rax,0x20(%rbx) : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); 0.00 : 521dba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521dc1: 31 c0 xor %eax,%eax 0.00 : 521dc3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521dca: 48 8b 56 90 mov -0x70(%rsi),%rdx 0.00 : 521dce: 48 85 d2 test %rdx,%rdx 0.00 : 521dd1: 74 04 je 521dd7 0.00 : 521dd3: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 521dd7: 48 8b 00 mov (%rax),%rax 0.00 : 521dda: 31 d2 xor %edx,%edx 0.00 : 521ddc: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 521de0: 66 89 43 2c mov %ax,0x2c(%rbx) : n->columns = (List *) lsecond($6); 0.00 : 521de4: 48 8b 01 mov (%rcx),%rax 0.00 : 521de7: 48 85 c0 test %rax,%rax 0.00 : 521dea: 74 04 je 521df0 0.00 : 521dec: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 521df0: 48 8b 42 08 mov 0x8(%rdx),%rax : n->whenClause = $14; : n->isconstraint = TRUE; : processCASbits($10, @10, "TRIGGER", 0.00 : 521df4: 48 8d 4b 41 lea 0x41(%rbx),%rcx 0.00 : 521df8: 4c 8d 43 42 lea 0x42(%rbx),%r8 0.00 : 521dfc: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : n->constrrel = $9; : $$ = (Node *)n; 0.00 : 521dff: 49 89 de mov %rbx,%r14 : n->funcname = $17; : n->args = $19; : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); : n->columns = (List *) lsecond($6); 0.00 : 521e02: 48 8b 00 mov (%rax),%rax 0.00 : 521e05: 48 89 43 30 mov %rax,0x30(%rbx) : n->whenClause = $14; 0.00 : 521e09: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521e10: 48 8b 42 d0 mov -0x30(%rdx),%rax : n->isconstraint = TRUE; 0.00 : 521e14: c6 43 40 01 movb $0x1,0x40(%rbx) : n->args = $19; : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); : n->columns = (List *) lsecond($6); : n->whenClause = $14; 0.00 : 521e18: 48 89 43 38 mov %rax,0x38(%rbx) : n->isconstraint = TRUE; : processCASbits($10, @10, "TRIGGER", 0.00 : 521e1c: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 521e23: 8b 7a b0 mov -0x50(%rdx),%edi 0.00 : 521e26: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 521e2d: 8b 70 d8 mov -0x28(%rax),%esi 0.00 : 521e30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521e37: 48 89 54 24 08 mov %rdx,0x8(%rsp) 0.00 : 521e3c: ba 15 0a 8b 00 mov $0x8b0a15,%edx 0.00 : 521e41: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 521e48: 00 0.00 : 521e49: e8 c2 bf fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : n->constrrel = $9; 0.00 : 521e4e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521e55: 48 8b 41 a8 mov -0x58(%rcx),%rax 0.00 : 521e59: 48 89 43 48 mov %rax,0x48(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 521e5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521e64: e9 17 fb fe ff jmpq 511980 : CreateTrigStmt: : CREATE TRIGGER name TriggerActionTime TriggerEvents ON : qualified_name TriggerForSpec TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521e69: 48 8b 3d f0 89 69 00 mov 0x6989f0(%rip),%rdi # bba860 0.00 : 521e70: be 50 00 00 00 mov $0x50,%esi 0.00 : 521e75: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521e7c: e8 8f 6f 27 00 callq 798e10 0.00 : 521e81: c7 00 e9 02 00 00 movl $0x2e9,(%rax) : n->trigname = $3; 0.00 : 521e87: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : CreateTrigStmt: : CREATE TRIGGER name TriggerActionTime TriggerEvents ON : qualified_name TriggerForSpec TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521e8e: 48 89 c2 mov %rax,%rdx : n->trigname = $3; 0.00 : 521e91: 48 8b 41 a0 mov -0x60(%rcx),%rax : n->relation = $7; : n->funcname = $12; : n->args = $14; : n->row = $8; : n->timing = $4; : n->events = intVal(linitial($5)); 0.00 : 521e95: 48 89 ce mov %rcx,%rsi 0.00 : 521e98: 48 83 ee 50 sub $0x50,%rsi : CREATE TRIGGER name TriggerActionTime TriggerEvents ON : qualified_name TriggerForSpec TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $3; 0.00 : 521e9c: 48 89 42 08 mov %rax,0x8(%rdx) : n->relation = $7; 0.00 : 521ea0: 48 8b 41 c0 mov -0x40(%rcx),%rax 0.00 : 521ea4: 48 89 42 10 mov %rax,0x10(%rdx) : n->funcname = $12; 0.00 : 521ea8: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 521eac: 48 89 42 18 mov %rax,0x18(%rdx) : n->args = $14; 0.00 : 521eb0: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 521eb4: 48 89 42 20 mov %rax,0x20(%rdx) : n->row = $8; 0.00 : 521eb8: 0f b6 41 c8 movzbl -0x38(%rcx),%eax 0.00 : 521ebc: 88 42 28 mov %al,0x28(%rdx) : n->timing = $4; 0.00 : 521ebf: 8b 41 a8 mov -0x58(%rcx),%eax 0.00 : 521ec2: 66 89 42 2a mov %ax,0x2a(%rdx) : n->events = intVal(linitial($5)); 0.00 : 521ec6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521ecd: 31 c0 xor %eax,%eax 0.00 : 521ecf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521ed6: 48 8b 4b b0 mov -0x50(%rbx),%rcx 0.00 : 521eda: 48 85 c9 test %rcx,%rcx 0.00 : 521edd: 74 04 je 521ee3 0.00 : 521edf: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 521ee3: 48 8b 00 mov (%rax),%rax 0.00 : 521ee6: 31 c9 xor %ecx,%ecx 0.00 : 521ee8: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 521eec: 66 89 42 2c mov %ax,0x2c(%rdx) : n->columns = (List *) lsecond($5); 0.00 : 521ef0: 48 8b 06 mov (%rsi),%rax 0.00 : 521ef3: 48 85 c0 test %rax,%rax 0.00 : 521ef6: 74 04 je 521efc 0.00 : 521ef8: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 521efc: 48 8b 41 08 mov 0x8(%rcx),%rax : n->whenClause = $9; : n->isconstraint = FALSE; : n->deferrable = FALSE; : n->initdeferred = FALSE; : n->constrrel = NULL; : $$ = (Node *)n; 0.00 : 521f00: 49 89 d6 mov %rdx,%r14 : n->funcname = $12; : n->args = $14; : n->row = $8; : n->timing = $4; : n->events = intVal(linitial($5)); : n->columns = (List *) lsecond($5); 0.00 : 521f03: 48 8b 00 mov (%rax),%rax 0.00 : 521f06: 48 89 42 30 mov %rax,0x30(%rdx) : n->whenClause = $9; 0.00 : 521f0a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521f11: 48 8b 46 d0 mov -0x30(%rsi),%rax : n->isconstraint = FALSE; 0.00 : 521f15: c6 42 40 00 movb $0x0,0x40(%rdx) : n->deferrable = FALSE; 0.00 : 521f19: c6 42 41 00 movb $0x0,0x41(%rdx) : n->initdeferred = FALSE; 0.00 : 521f1d: c6 42 42 00 movb $0x0,0x42(%rdx) : n->constrrel = NULL; 0.00 : 521f21: 48 c7 42 48 00 00 00 movq $0x0,0x48(%rdx) 0.00 : 521f28: 00 : n->args = $14; : n->row = $8; : n->timing = $4; : n->events = intVal(linitial($5)); : n->columns = (List *) lsecond($5); : n->whenClause = $9; 0.00 : 521f29: 48 89 42 38 mov %rax,0x38(%rdx) : n->deferrable = FALSE; : n->initdeferred = FALSE; : n->constrrel = NULL; : $$ = (Node *)n; : } : | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON 0.00 : 521f2d: e9 4e fa fe ff jmpq 511980 : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } : | INSERT { $$ = "insert"; } : | UPDATE { $$ = "update"; } : | DELETE_P { $$ = "delete"; } 0.00 : 521f32: 41 be 51 a5 8e 00 mov $0x8ea551,%r14d : ; 0.00 : 521f38: e9 43 fa fe ff jmpq 511980 : : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } : | INSERT { $$ = "insert"; } : | UPDATE { $$ = "update"; } 0.00 : 521f3d: 41 be f0 fa 7a 00 mov $0x7afaf0,%r14d : | DELETE_P { $$ = "delete"; } 0.00 : 521f43: e9 38 fa fe ff jmpq 511980 : ; : : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } : | INSERT { $$ = "insert"; } 0.00 : 521f48: 41 be f3 a4 8e 00 mov $0x8ea4f3,%r14d : | UPDATE { $$ = "update"; } 0.00 : 521f4e: e9 2d fa fe ff jmpq 511980 : | /* EMPTY */ { $$ = "all"; } : ; : : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } 0.00 : 521f53: 41 be 70 31 7c 00 mov $0x7c3170,%r14d : | INSERT { $$ = "insert"; } 0.00 : 521f59: e9 22 fa fe ff jmpq 511980 : FOR row_security_cmd { $$ = $2; } : | /* EMPTY */ { $$ = "all"; } : ; : : row_security_cmd: : ALL { $$ = "all"; } 0.00 : 521f5e: 41 be c4 bb 87 00 mov $0x87bbc4,%r14d : | SELECT { $$ = "select"; } 0.00 : 521f64: e9 17 fa fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultForCmd: : FOR row_security_cmd { $$ = $2; } : | /* EMPTY */ { $$ = "all"; } 0.00 : 521f69: 41 be c4 bb 87 00 mov $0x87bbc4,%r14d : ; 0.00 : 521f6f: e9 0c fa fe ff jmpq 511980 : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultForCmd: : FOR row_security_cmd { $$ = $2; } 0.00 : 521f74: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521f7b: 4c 8b 32 mov (%rdx),%r14 : | /* EMPTY */ { $$ = "all"; } 0.00 : 521f7e: e9 fd f9 fe ff jmpq 511980 : | /* EMPTY */ { $$ = list_make1(makeString("public")); } : ; : : RowSecurityOptionalToRole: : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 521f83: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 521f86: e9 f5 f9 fe ff jmpq 511980 : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = list_make1(makeString("public")); } : ; : : RowSecurityOptionalToRole: : TO role_list { $$ = $2; } 0.00 : 521f8b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521f92: 4c 8b 30 mov (%rax),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 521f95: e9 e6 f9 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultToRole: : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = list_make1(makeString("public")); } 0.00 : 521f9a: bf 75 b1 8d 00 mov $0x8db175,%edi 0.00 : 521f9f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521fa6: e8 45 d7 0d 00 callq 5ff6f0 0.00 : 521fab: 31 f6 xor %esi,%esi 0.00 : 521fad: 48 89 c7 mov %rax,%rdi 0.00 : 521fb0: e8 9b f8 0b 00 callq 5e1850 : ; 0.00 : 521fb5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultToRole: : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = list_make1(makeString("public")); } 0.00 : 521fbc: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521fbf: e9 bc f9 fe ff jmpq 511980 : WITH CHECK '(' a_expr ')' { $$ = $4; } : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultToRole: : TO role_list { $$ = $2; } 0.00 : 521fc4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521fcb: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = list_make1(makeString("public")); } 0.00 : 521fce: e9 ad f9 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityOptionalWithCheck: : WITH CHECK '(' a_expr ')' { $$ = $4; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 521fd3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 521fd6: e9 a5 f9 fe ff jmpq 511980 : USING '(' a_expr ')' { $$ = $3; } : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityOptionalWithCheck: : WITH CHECK '(' a_expr ')' { $$ = $4; } 0.00 : 521fdb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521fe2: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 521fe6: e9 95 f9 fe ff jmpq 511980 : } : ; : : RowSecurityOptionalExpr: : USING '(' a_expr ')' { $$ = $3; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 521feb: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 521fee: e9 8d f9 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : RowSecurityOptionalExpr: : USING '(' a_expr ')' { $$ = $3; } 0.00 : 521ff3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521ffa: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 521ffe: e9 7d f9 fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522003: 48 8b 3d 56 88 69 00 mov 0x698856(%rip),%rdi # bba860 0.00 : 52200a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52200f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522016: e8 f5 6d 27 00 callq 798e10 0.00 : 52201b: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_POLICY; 0.00 : 522021: c7 40 18 16 00 00 00 movl $0x16,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522028: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 52202b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->behavior = $8; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522032: 49 89 de mov %rbx,%r14 : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 522035: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 522039: e8 b2 d6 0d 00 callq 5ff6f0 0.00 : 52203e: 48 89 c6 mov %rax,%rsi 0.00 : 522041: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522048: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 52204c: e8 2f fe 0b 00 callq 5e1e80 0.00 : 522051: 31 f6 xor %esi,%esi 0.00 : 522053: 48 89 c7 mov %rax,%rdi 0.00 : 522056: e8 f5 f7 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 52205b: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522062: 00 : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 522063: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $8; 0.00 : 522067: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52206e: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 522070: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 522074: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); : n->arguments = NIL; : n->behavior = $8; 0.00 : 522078: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 52207b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522082: e9 f9 f8 fe ff jmpq 511980 : ; : : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522087: 48 8b 3d d2 87 69 00 mov 0x6987d2(%rip),%rdi # bba860 0.00 : 52208e: be 28 00 00 00 mov $0x28,%esi 0.00 : 522093: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52209a: e8 71 6d 27 00 callq 798e10 0.00 : 52209f: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_POLICY; 0.00 : 5220a5: c7 40 18 16 00 00 00 movl $0x16,0x18(%rax) : ; : : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5220ac: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 5220af: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $6; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 5220b6: 49 89 de mov %rbx,%r14 : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 5220b9: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 5220bd: e8 2e d6 0d 00 callq 5ff6f0 0.00 : 5220c2: 48 89 c6 mov %rax,%rsi 0.00 : 5220c5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5220cc: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 5220d0: e8 ab fd 0b 00 callq 5e1e80 0.00 : 5220d5: 31 f6 xor %esi,%esi 0.00 : 5220d7: 48 89 c7 mov %rax,%rdi 0.00 : 5220da: e8 71 f7 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 5220df: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5220e6: 00 : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 5220e7: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $6; 0.00 : 5220eb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5220f2: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 5220f4: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 5220f8: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); : n->arguments = NIL; : n->behavior = $6; 0.00 : 5220fc: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior 0.00 : 5220ff: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522106: e9 75 f8 fe ff jmpq 511980 : : AlterPolicyStmt: : ALTER POLICY name ON qualified_name RowSecurityOptionalToRole : RowSecurityOptionalExpr RowSecurityOptionalWithCheck : { : AlterPolicyStmt *n = makeNode(AlterPolicyStmt); 0.00 : 52210b: 48 8b 3d 4e 87 69 00 mov 0x69874e(%rip),%rdi # bba860 0.00 : 522112: be 30 00 00 00 mov $0x30,%esi 0.00 : 522117: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52211e: e8 ed 6c 27 00 callq 798e10 0.00 : 522123: c7 00 20 03 00 00 movl $0x320,(%rax) : n->policy_name = $3; 0.00 : 522129: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->table = $5; : n->roles = $6; : n->qual = $7; : n->with_check = $8; : $$ = (Node *) n; 0.00 : 522130: 49 89 c6 mov %rax,%r14 : AlterPolicyStmt: : ALTER POLICY name ON qualified_name RowSecurityOptionalToRole : RowSecurityOptionalExpr RowSecurityOptionalWithCheck : { : AlterPolicyStmt *n = makeNode(AlterPolicyStmt); : n->policy_name = $3; 0.00 : 522133: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 522137: 48 89 50 08 mov %rdx,0x8(%rax) : n->table = $5; 0.00 : 52213b: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52213f: 48 89 50 10 mov %rdx,0x10(%rax) : n->roles = $6; 0.00 : 522143: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 522147: 48 89 50 18 mov %rdx,0x18(%rax) : n->qual = $7; 0.00 : 52214b: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52214f: 48 89 50 20 mov %rdx,0x20(%rax) : n->with_check = $8; 0.00 : 522153: 48 8b 13 mov (%rbx),%rdx 0.00 : 522156: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *) n; : } : ; 0.00 : 52215a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522161: e9 1a f8 fe ff jmpq 511980 : CreatePolicyStmt: : CREATE POLICY name ON qualified_name RowSecurityDefaultForCmd : RowSecurityDefaultToRole RowSecurityOptionalExpr : RowSecurityOptionalWithCheck : { : CreatePolicyStmt *n = makeNode(CreatePolicyStmt); 0.00 : 522166: 48 8b 3d f3 86 69 00 mov 0x6986f3(%rip),%rdi # bba860 0.00 : 52216d: be 38 00 00 00 mov $0x38,%esi 0.00 : 522172: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522179: e8 92 6c 27 00 callq 798e10 0.00 : 52217e: c7 00 1f 03 00 00 movl $0x31f,(%rax) : n->policy_name = $3; 0.00 : 522184: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->table = $5; : n->cmd = $6; : n->roles = $7; : n->qual = $8; : n->with_check = $9; : $$ = (Node *) n; 0.00 : 52218b: 49 89 c6 mov %rax,%r14 : CREATE POLICY name ON qualified_name RowSecurityDefaultForCmd : RowSecurityDefaultToRole RowSecurityOptionalExpr : RowSecurityOptionalWithCheck : { : CreatePolicyStmt *n = makeNode(CreatePolicyStmt); : n->policy_name = $3; 0.00 : 52218e: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 522192: 48 89 50 08 mov %rdx,0x8(%rax) : n->table = $5; 0.00 : 522196: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 52219a: 48 89 50 10 mov %rdx,0x10(%rax) : n->cmd = $6; 0.00 : 52219e: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 5221a2: 48 89 50 18 mov %rdx,0x18(%rax) : n->roles = $7; 0.00 : 5221a6: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5221aa: 48 89 50 20 mov %rdx,0x20(%rax) : n->qual = $8; 0.00 : 5221ae: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5221b2: 48 89 50 28 mov %rdx,0x28(%rax) : n->with_check = $9; 0.00 : 5221b6: 48 8b 11 mov (%rcx),%rdx 0.00 : 5221b9: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5221bd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5221c4: e9 b7 f7 fe ff jmpq 511980 : * : ****************************************************************************/ : : AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name alter_generic_options : { : AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); 0.00 : 5221c9: 48 8b 3d 90 86 69 00 mov 0x698690(%rip),%rdi # bba860 0.00 : 5221d0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5221d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5221dc: e8 2f 6c 27 00 callq 798e10 0.00 : 5221e1: c7 00 10 03 00 00 movl $0x310,(%rax) : n->username = $5; 0.00 : 5221e7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->servername = $7; : n->options = $8; : $$ = (Node *) n; 0.00 : 5221ee: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name alter_generic_options : { : AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); : n->username = $5; 0.00 : 5221f1: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5221f5: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $7; 0.00 : 5221f9: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5221fd: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $8; 0.00 : 522201: 48 8b 16 mov (%rsi),%rdx 0.00 : 522204: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522208: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52220f: e9 6c f7 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); 0.00 : 522214: 48 8b 3d 45 86 69 00 mov 0x698645(%rip),%rdi # bba860 0.00 : 52221b: be 20 00 00 00 mov $0x20,%esi 0.00 : 522220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522227: e8 e4 6b 27 00 callq 798e10 0.00 : 52222c: c7 00 11 03 00 00 movl $0x311,(%rax) : n->username = $7; 0.00 : 522232: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->servername = $9; : n->missing_ok = true; : $$ = (Node *) n; 0.00 : 522239: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $7; 0.00 : 52223c: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 522240: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $9; 0.00 : 522244: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 522247: c6 40 18 01 movb $0x1,0x18(%rax) : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $7; : n->servername = $9; 0.00 : 52224b: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = true; : $$ = (Node *) n; : } : ; 0.00 : 52224f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522256: e9 25 f7 fe ff jmpq 511980 : * : ****************************************************************************/ : : DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); 0.00 : 52225b: 48 8b 3d fe 85 69 00 mov 0x6985fe(%rip),%rdi # bba860 0.00 : 522262: be 20 00 00 00 mov $0x20,%esi 0.00 : 522267: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52226e: e8 9d 6b 27 00 callq 798e10 0.00 : 522273: c7 00 11 03 00 00 movl $0x311,(%rax) : n->username = $5; 0.00 : 522279: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->servername = $7; : n->missing_ok = false; : $$ = (Node *) n; 0.00 : 522280: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $5; 0.00 : 522283: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 522287: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $7; 0.00 : 52228b: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 52228e: c6 40 18 00 movb $0x0,0x18(%rax) : : DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $5; : n->servername = $7; 0.00 : 522292: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name 0.00 : 522296: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52229d: e9 de f6 fe ff jmpq 511980 : : /* User mapping authorization identifier */ : auth_ident: : CURRENT_USER { $$ = "current_user"; } : | USER { $$ = "current_user"; } : | RoleId { $$ = (strcmp($1, "public") == 0) ? NULL : $1; } 0.00 : 5222a2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5222a9: bf 75 b1 8d 00 mov $0x8db175,%edi 0.00 : 5222ae: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 5222b3: 4c 8b 06 mov (%rsi),%r8 0.00 : 5222b6: 4c 89 c6 mov %r8,%rsi 0.00 : 5222b9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5222bb: 0f 97 c2 seta %dl 0.00 : 5222be: 0f 92 c0 setb %al 0.00 : 5222c1: 45 31 f6 xor %r14d,%r14d 0.00 : 5222c4: 38 c2 cmp %al,%dl 0.00 : 5222c6: 4d 0f 45 f0 cmovne %r8,%r14 : ; 0.00 : 5222ca: e9 b1 f6 fe ff jmpq 511980 : ; : : /* User mapping authorization identifier */ : auth_ident: : CURRENT_USER { $$ = "current_user"; } : | USER { $$ = "current_user"; } 0.00 : 5222cf: 41 be 3b 96 7c 00 mov $0x7c963b,%r14d : | RoleId { $$ = (strcmp($1, "public") == 0) ? NULL : $1; } 0.00 : 5222d5: e9 a6 f6 fe ff jmpq 511980 : } : ; : : /* User mapping authorization identifier */ : auth_ident: : CURRENT_USER { $$ = "current_user"; } 0.00 : 5222da: 41 be 3b 96 7c 00 mov $0x7c963b,%r14d : | USER { $$ = "current_user"; } 0.00 : 5222e0: e9 9b f6 fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateUserMappingStmt: CREATE USER MAPPING FOR auth_ident SERVER name create_generic_options : { : CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); 0.00 : 5222e5: 48 8b 3d 74 85 69 00 mov 0x698574(%rip),%rdi # bba860 0.00 : 5222ec: be 20 00 00 00 mov $0x20,%esi 0.00 : 5222f1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5222f8: e8 13 6b 27 00 callq 798e10 0.00 : 5222fd: c7 00 0f 03 00 00 movl $0x30f,(%rax) : n->username = $5; 0.00 : 522303: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->servername = $7; : n->options = $8; : $$ = (Node *) n; 0.00 : 52230a: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateUserMappingStmt: CREATE USER MAPPING FOR auth_ident SERVER name create_generic_options : { : CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); : n->username = $5; 0.00 : 52230d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 522311: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $7; 0.00 : 522315: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522319: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $8; 0.00 : 52231d: 48 8b 13 mov (%rbx),%rdx 0.00 : 522320: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522324: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52232b: e9 50 f6 fe ff jmpq 511980 : n->table_names = $3; : $$ = n; : } : | /*EMPTY*/ : { : ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); 0.00 : 522330: bf 10 00 00 00 mov $0x10,%edi 0.00 : 522335: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52233c: e8 0f 6a 27 00 callq 798d50 : n->type = FDW_IMPORT_SCHEMA_ALL; 0.00 : 522341: c7 00 00 00 00 00 movl $0x0,(%rax) : n->table_names = NIL; 0.00 : 522347: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 52234e: 00 : $$ = n; 0.00 : 52234f: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522352: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522359: e9 22 f6 fe ff jmpq 511980 : ; : : import_qualification: : import_qualification_type '(' relation_expr_list ')' : { : ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); 0.00 : 52235e: bf 10 00 00 00 mov $0x10,%edi 0.00 : 522363: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52236a: e8 e1 69 27 00 callq 798d50 : n->type = $1; 0.00 : 52236f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->table_names = $3; : $$ = n; 0.00 : 522376: 49 89 c6 mov %rax,%r14 : : import_qualification: : import_qualification_type '(' relation_expr_list ')' : { : ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); : n->type = $1; 0.00 : 522379: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 52237c: 89 10 mov %edx,(%rax) : n->table_names = $3; 0.00 : 52237e: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 522382: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | /*EMPTY*/ 0.00 : 522386: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52238d: e9 ee f5 fe ff jmpq 511980 : } : ; : : import_qualification_type: : LIMIT TO { $$ = FDW_IMPORT_SCHEMA_LIMIT_TO; } : | EXCEPT { $$ = FDW_IMPORT_SCHEMA_EXCEPT; } 0.00 : 522392: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 522399: ff ff ff 0.00 : 52239c: 49 21 c6 and %rax,%r14 0.00 : 52239f: 49 83 ce 02 or $0x2,%r14 : ; 0.00 : 5223a3: e9 d8 f5 fe ff jmpq 511980 : ROW { $$ = TRUE; } : | STATEMENT { $$ = FALSE; } : ; : : TriggerWhen: : WHEN '(' a_expr ')' { $$ = $3; } 0.00 : 5223a8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5223af: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5223b3: e9 c8 f5 fe ff jmpq 511980 : | /*EMPTY*/ {} : ; : : TriggerForType: : ROW { $$ = TRUE; } : | STATEMENT { $$ = FALSE; } 0.00 : 5223b8: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 5223bb: e9 c0 f5 fe ff jmpq 511980 : EACH {} : | /*EMPTY*/ {} : ; : : TriggerForType: : ROW { $$ = TRUE; } 0.00 : 5223c0: 41 b6 01 mov $0x1,%r14b : | STATEMENT { $$ = FALSE; } 0.00 : 5223c3: e9 b8 f5 fe ff jmpq 511980 : | type_func_name_keyword { $$ = pstrdup($1); } : ; : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } 0.00 : 5223c8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5223cf: 4c 8b 32 mov (%rdx),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 5223d2: e9 a9 f5 fe ff jmpq 511980 0.00 : 5223d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5223de: 48 8b 39 mov (%rcx),%rdi 0.00 : 5223e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5223e8: e8 63 6b 27 00 callq 798f50 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 5223ed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 5223f4: 49 89 c6 mov %rax,%r14 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 5223f7: e9 84 f5 fe ff jmpq 511980 : { : /* : * If ROW/STATEMENT not specified, default to : * STATEMENT, per SQL : */ : $$ = FALSE; 0.00 : 5223fc: 45 30 f6 xor %r14b,%r14b : } : ; 0.00 : 5223ff: e9 7c f5 fe ff jmpq 511980 : ; : : TriggerForSpec: : FOR TriggerForOptEach TriggerForType : { : $$ = $3; 0.00 : 522404: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52240b: 44 8a 32 mov (%rdx),%r14b : } : | /* EMPTY */ 0.00 : 52240e: e9 6d f5 fe ff jmpq 511980 : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } : | TRUNCATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); } 0.00 : 522413: 31 f6 xor %esi,%esi 0.00 : 522415: 31 ff xor %edi,%edi 0.00 : 522417: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52241e: e8 2d f4 0b 00 callq 5e1850 0.00 : 522423: bf 20 00 00 00 mov $0x20,%edi 0.00 : 522428: 48 89 c3 mov %rax,%rbx 0.00 : 52242b: e8 20 d3 0d 00 callq 5ff750 0.00 : 522430: 48 89 de mov %rbx,%rsi 0.00 : 522433: 48 89 c7 mov %rax,%rdi 0.00 : 522436: e8 15 f4 0b 00 callq 5e1850 : ; 0.00 : 52243b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } : | TRUNCATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); } 0.00 : 522442: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522445: e9 36 f5 fe ff jmpq 511980 : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } 0.00 : 52244a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522451: 31 f6 xor %esi,%esi 0.00 : 522453: 48 8b 38 mov (%rax),%rdi 0.00 : 522456: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52245d: e8 ee f3 0b 00 callq 5e1850 0.00 : 522462: bf 10 00 00 00 mov $0x10,%edi 0.00 : 522467: 48 89 c3 mov %rax,%rbx 0.00 : 52246a: e8 e1 d2 0d 00 callq 5ff750 0.00 : 52246f: 48 89 de mov %rbx,%rsi 0.00 : 522472: 48 89 c7 mov %rax,%rdi 0.00 : 522475: e8 d6 f3 0b 00 callq 5e1850 : | TRUNCATE 0.00 : 52247a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } 0.00 : 522481: 49 89 c6 mov %rax,%r14 : | TRUNCATE 0.00 : 522484: e9 f7 f4 fe ff jmpq 511980 : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } 0.00 : 522489: 31 f6 xor %esi,%esi 0.00 : 52248b: 31 ff xor %edi,%edi 0.00 : 52248d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522494: e8 b7 f3 0b 00 callq 5e1850 0.00 : 522499: bf 10 00 00 00 mov $0x10,%edi 0.00 : 52249e: 48 89 c3 mov %rax,%rbx 0.00 : 5224a1: e8 aa d2 0d 00 callq 5ff750 0.00 : 5224a6: 48 89 de mov %rbx,%rsi 0.00 : 5224a9: 48 89 c7 mov %rax,%rdi 0.00 : 5224ac: e8 9f f3 0b 00 callq 5e1850 : | UPDATE OF columnList 0.00 : 5224b1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } 0.00 : 5224b8: 49 89 c6 mov %rax,%r14 : | UPDATE OF columnList 0.00 : 5224bb: e9 c0 f4 fe ff jmpq 511980 : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } 0.00 : 5224c0: 31 f6 xor %esi,%esi 0.00 : 5224c2: 31 ff xor %edi,%edi 0.00 : 5224c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5224cb: e8 80 f3 0b 00 callq 5e1850 0.00 : 5224d0: bf 08 00 00 00 mov $0x8,%edi 0.00 : 5224d5: 48 89 c3 mov %rax,%rbx 0.00 : 5224d8: e8 73 d2 0d 00 callq 5ff750 0.00 : 5224dd: 48 89 de mov %rbx,%rsi 0.00 : 5224e0: 48 89 c7 mov %rax,%rdi 0.00 : 5224e3: e8 68 f3 0b 00 callq 5e1850 : | UPDATE 0.00 : 5224e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } 0.00 : 5224ef: 49 89 c6 mov %rax,%r14 : | UPDATE 0.00 : 5224f2: e9 89 f4 fe ff jmpq 511980 : } : ; : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } 0.00 : 5224f7: 31 f6 xor %esi,%esi 0.00 : 5224f9: 31 ff xor %edi,%edi 0.00 : 5224fb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522502: e8 49 f3 0b 00 callq 5e1850 0.00 : 522507: bf 04 00 00 00 mov $0x4,%edi 0.00 : 52250c: 48 89 c3 mov %rax,%rbx 0.00 : 52250f: e8 3c d2 0d 00 callq 5ff750 0.00 : 522514: 48 89 de mov %rbx,%rsi 0.00 : 522517: 48 89 c7 mov %rax,%rdi 0.00 : 52251a: e8 31 f3 0b 00 callq 5e1850 : | DELETE_P 0.00 : 52251f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } 0.00 : 522526: 49 89 c6 mov %rax,%r14 : | DELETE_P 0.00 : 522529: e9 52 f4 fe ff jmpq 511980 : TriggerEvents: : TriggerOneEvent : { $$ = $1; } : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); 0.00 : 52252e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522535: 31 c0 xor %eax,%eax 0.00 : 522537: 48 8b 4b f0 mov -0x10(%rbx),%rcx 0.00 : 52253b: 48 85 c9 test %rcx,%rcx 0.00 : 52253e: 74 04 je 522544 0.00 : 522540: 48 8b 41 08 mov 0x8(%rcx),%rax : int events2 = intVal(linitial($3)); 0.00 : 522544: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : TriggerEvents: : TriggerOneEvent : { $$ = $1; } : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); 0.00 : 52254b: 48 8b 00 mov (%rax),%rax : int events2 = intVal(linitial($3)); 0.00 : 52254e: 48 8b 16 mov (%rsi),%rdx : TriggerEvents: : TriggerOneEvent : { $$ = $1; } : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); 0.00 : 522551: 44 8b 68 08 mov 0x8(%rax),%r13d 0.00 : 522555: 31 c0 xor %eax,%eax 0.00 : 522557: 48 85 d2 test %rdx,%rdx 0.00 : 52255a: 74 04 je 522560 0.00 : 52255c: 48 8b 42 08 mov 0x8(%rdx),%rax : int events2 = intVal(linitial($3)); 0.00 : 522560: 48 8b 00 mov (%rax),%rax 0.00 : 522563: 44 8b 60 08 mov 0x8(%rax),%r12d 0.00 : 522567: 31 c0 xor %eax,%eax 0.00 : 522569: 48 85 c9 test %rcx,%rcx 0.00 : 52256c: 74 04 je 522572 0.00 : 52256e: 48 8b 41 08 mov 0x8(%rcx),%rax : List *columns1 = (List *) lsecond($1); 0.00 : 522572: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 522576: 48 8b 38 mov (%rax),%rdi 0.00 : 522579: 31 c0 xor %eax,%eax 0.00 : 52257b: 48 85 d2 test %rdx,%rdx 0.00 : 52257e: 74 04 je 522584 0.00 : 522580: 48 8b 42 08 mov 0x8(%rdx),%rax : List *columns2 = (List *) lsecond($3); 0.00 : 522584: 48 8b 40 08 mov 0x8(%rax),%rax : : if (events1 & events2) 0.00 : 522588: 45 85 ec test %r13d,%r12d : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); : int events2 = intVal(linitial($3)); : List *columns1 = (List *) lsecond($1); : List *columns2 = (List *) lsecond($3); 0.00 : 52258b: 48 8b 30 mov (%rax),%rsi : : if (events1 & events2) 0.00 : 52258e: 0f 85 35 79 00 00 jne 529ec9 : * which columns went with which event, but so long as : * only UPDATE carries columns and we disallow multiple : * UPDATE items, it doesn't matter. Command execution : * should just ignore the columns for non-UPDATE events. : */ : $$ = list_make2(makeInteger(events1 | events2), 0.00 : 522594: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52259b: 45 09 ec or %r13d,%r12d 0.00 : 52259e: e8 1d 00 0c 00 callq 5e25c0 0.00 : 5225a3: 31 f6 xor %esi,%esi 0.00 : 5225a5: 48 89 c7 mov %rax,%rdi 0.00 : 5225a8: e8 a3 f2 0b 00 callq 5e1850 0.00 : 5225ad: 49 63 fc movslq %r12d,%rdi 0.00 : 5225b0: 48 89 c3 mov %rax,%rbx 0.00 : 5225b3: e8 98 d1 0d 00 callq 5ff750 0.00 : 5225b8: 48 89 de mov %rbx,%rsi 0.00 : 5225bb: 48 89 c7 mov %rax,%rdi 0.00 : 5225be: e8 8d f2 0b 00 callq 5e1850 : list_concat(columns1, columns2)); : } : ; 0.00 : 5225c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * which columns went with which event, but so long as : * only UPDATE carries columns and we disallow multiple : * UPDATE items, it doesn't matter. Command execution : * should just ignore the columns for non-UPDATE events. : */ : $$ = list_make2(makeInteger(events1 | events2), 0.00 : 5225ca: 49 89 c6 mov %rax,%r14 : list_concat(columns1, columns2)); : } : ; 0.00 : 5225cd: e9 ae f3 fe ff jmpq 511980 : | INSTEAD OF { $$ = TRIGGER_TYPE_INSTEAD; } : ; : : TriggerEvents: : TriggerOneEvent : { $$ = $1; } 0.00 : 5225d2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5225d9: 4c 8b 32 mov (%rdx),%r14 : | TriggerEvents OR TriggerOneEvent 0.00 : 5225dc: e9 9f f3 fe ff jmpq 511980 : ; : : TriggerActionTime: : BEFORE { $$ = TRIGGER_TYPE_BEFORE; } : | AFTER { $$ = TRIGGER_TYPE_AFTER; } : | INSTEAD OF { $$ = TRIGGER_TYPE_INSTEAD; } 0.00 : 5225e1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5225e8: ff ff ff 0.00 : 5225eb: 49 21 c6 and %rax,%r14 0.00 : 5225ee: 49 83 ce 40 or $0x40,%r14 : ; 0.00 : 5225f2: e9 89 f3 fe ff jmpq 511980 : } : ; : : TriggerActionTime: : BEFORE { $$ = TRIGGER_TYPE_BEFORE; } : | AFTER { $$ = TRIGGER_TYPE_AFTER; } 0.00 : 5225f7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5225fe: ff ff ff 0.00 : 522601: 49 21 f6 and %rsi,%r14 : | INSTEAD OF { $$ = TRIGGER_TYPE_INSTEAD; } 0.00 : 522604: e9 77 f3 fe ff jmpq 511980 : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } : | ColLabel { $$ = makeString($1); } 0.00 : 522609: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522610: 48 8b 3e mov (%rsi),%rdi 0.00 : 522613: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52261a: e8 d1 d0 0d 00 callq 5ff6f0 : ; 0.00 : 52261f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } : | ColLabel { $$ = makeString($1); } 0.00 : 522626: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522629: e9 52 f3 fe ff jmpq 511980 : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } 0.00 : 52262e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522635: 48 8b 3b mov (%rbx),%rdi 0.00 : 522638: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52263f: e8 ac d0 0d 00 callq 5ff6f0 : | ColLabel { $$ = makeString($1); } 0.00 : 522644: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } 0.00 : 52264b: 49 89 c6 mov %rax,%r14 : | ColLabel { $$ = makeString($1); } 0.00 : 52264e: e9 2d f3 fe ff jmpq 511980 : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } 0.00 : 522653: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52265a: 48 8b 39 mov (%rcx),%rdi 0.00 : 52265d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522664: e8 87 d0 0d 00 callq 5ff6f0 : | Sconst { $$ = makeString($1); } 0.00 : 522669: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } 0.00 : 522670: 49 89 c6 mov %rax,%r14 : | Sconst { $$ = makeString($1); } 0.00 : 522673: e9 08 f3 fe ff jmpq 511980 : ; : : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); 0.00 : 522678: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52267f: bf 42 86 7c 00 mov $0x7c8642,%edi 0.00 : 522684: 31 c0 xor %eax,%eax 0.00 : 522686: 8b 32 mov (%rdx),%esi 0.00 : 522688: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52268f: e8 4c be 28 00 callq 7ae4e0 0.00 : 522694: 48 89 c7 mov %rax,%rdi 0.00 : 522697: e8 54 d0 0d 00 callq 5ff6f0 : } : | FCONST { $$ = makeString($1); } 0.00 : 52269c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); 0.00 : 5226a3: 49 89 c6 mov %rax,%r14 : } : | FCONST { $$ = makeString($1); } 0.00 : 5226a6: e9 d5 f2 fe ff jmpq 511980 : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5226ab: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5226ae: e9 cd f2 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226b3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5226ba: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5226be: 48 8b 36 mov (%rsi),%rsi 0.00 : 5226c1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5226c8: e8 b3 f7 0b 00 callq 5e1e80 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5226cd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226d4: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5226d7: e9 a4 f2 fe ff jmpq 511980 : WHEN '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } 0.00 : 5226dc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5226e3: 31 f6 xor %esi,%esi 0.00 : 5226e5: 48 8b 3b mov (%rbx),%rdi 0.00 : 5226e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5226ef: e8 5c f1 0b 00 callq 5e1850 : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : WHEN '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } 0.00 : 5226fb: 49 89 c6 mov %rax,%r14 : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226fe: e9 7d f2 fe ff jmpq 511980 : | STATEMENT { $$ = FALSE; } : ; : : TriggerWhen: : WHEN '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522703: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522706: e9 75 f2 fe ff jmpq 511980 : | ColLabel { $$ = makeString($1); } : ; : : OptConstrFromTable: : FROM qualified_name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 52270b: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52270e: e9 6d f2 fe ff jmpq 511980 : | Sconst { $$ = makeString($1); } : | ColLabel { $$ = makeString($1); } : ; : : OptConstrFromTable: : FROM qualified_name { $$ = $2; } 0.00 : 522713: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52271a: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 52271d: e9 5e f2 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : import_qualification_type: : LIMIT TO { $$ = FDW_IMPORT_SCHEMA_LIMIT_TO; } 0.00 : 522722: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 522729: ff ff ff 0.00 : 52272c: 49 21 f6 and %rsi,%r14 0.00 : 52272f: 49 83 ce 01 or $0x1,%r14 : | EXCEPT { $$ = FDW_IMPORT_SCHEMA_EXCEPT; } 0.00 : 522733: e9 48 f2 fe ff jmpq 511980 : : ImportForeignSchemaStmt: : IMPORT_P FOREIGN SCHEMA name import_qualification : FROM SERVER name INTO name create_generic_options : { : ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); 0.00 : 522738: 48 8b 3d 21 81 69 00 mov 0x698121(%rip),%rdi # bba860 0.00 : 52273f: be 38 00 00 00 mov $0x38,%esi 0.00 : 522744: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52274b: e8 c0 66 27 00 callq 798e10 0.00 : 522750: c7 00 16 03 00 00 movl $0x316,(%rax) : n->server_name = $8; 0.00 : 522756: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->remote_schema = $4; : n->local_schema = $10; : n->list_type = $5->type; : n->table_list = $5->table_names; : n->options = $11; : $$ = (Node *) n; 0.00 : 52275d: 49 89 c6 mov %rax,%r14 : ImportForeignSchemaStmt: : IMPORT_P FOREIGN SCHEMA name import_qualification : FROM SERVER name INTO name create_generic_options : { : ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); : n->server_name = $8; 0.00 : 522760: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 522764: 48 89 50 08 mov %rdx,0x8(%rax) : n->remote_schema = $4; 0.00 : 522768: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 52276c: 48 89 50 10 mov %rdx,0x10(%rax) : n->local_schema = $10; 0.00 : 522770: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522774: 48 89 50 18 mov %rdx,0x18(%rax) : n->list_type = $5->type; 0.00 : 522778: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 52277c: 8b 12 mov (%rdx),%edx 0.00 : 52277e: 89 50 20 mov %edx,0x20(%rax) : n->table_list = $5->table_names; 0.00 : 522781: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 522785: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 522789: 48 89 50 28 mov %rdx,0x28(%rax) : n->options = $11; 0.00 : 52278d: 48 8b 13 mov (%rbx),%rdx 0.00 : 522790: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522794: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52279b: e9 e0 f1 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5227a0: 48 8b 3d b9 80 69 00 mov 0x6980b9(%rip),%rdi # bba860 0.00 : 5227a7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5227ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5227b3: e8 58 66 27 00 callq 798e10 0.00 : 5227b8: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $6; 0.00 : 5227be: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $7; : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 5227c5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; 0.00 : 5227c8: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5227cc: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $7; 0.00 : 5227d0: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_FOREIGN_TABLE; 0.00 : 5227d3: c7 40 18 0d 00 00 00 movl $0xd,0x18(%rax) : n->missing_ok = true; 0.00 : 5227da: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; : n->cmds = $7; 0.00 : 5227de: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = true; : $$ = (Node *)n; : } : ; 0.00 : 5227e2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5227e9: e9 92 f1 fe ff jmpq 511980 : *****************************************************************************/ : : AlterForeignTableStmt: : ALTER FOREIGN TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5227ee: 48 8b 3d 6b 80 69 00 mov 0x69806b(%rip),%rdi # bba860 0.00 : 5227f5: be 20 00 00 00 mov $0x20,%esi 0.00 : 5227fa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522801: e8 0a 66 27 00 callq 798e10 0.00 : 522806: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $4; 0.00 : 52280c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $5; : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 522813: 49 89 c6 mov %rax,%r14 : : AlterForeignTableStmt: : ALTER FOREIGN TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; 0.00 : 522816: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 52281a: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $5; 0.00 : 52281e: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_FOREIGN_TABLE; 0.00 : 522821: c7 40 18 0d 00 00 00 movl $0xd,0x18(%rax) : n->missing_ok = false; 0.00 : 522828: c6 40 1c 00 movb $0x0,0x1c(%rax) : AlterForeignTableStmt: : ALTER FOREIGN TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; : n->cmds = $5; 0.00 : 52282c: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds 0.00 : 522830: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522837: e9 44 f1 fe ff jmpq 511980 : } : | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); 0.00 : 52283c: 48 8b 3d 1d 80 69 00 mov 0x69801d(%rip),%rdi # bba860 0.00 : 522843: be 60 00 00 00 mov $0x60,%esi 0.00 : 522848: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52284f: e8 bc 65 27 00 callq 798e10 0.00 : 522854: c7 00 15 03 00 00 movl $0x315,(%rax) : $7->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 52285a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->base.inhRelations = NIL; : n->base.if_not_exists = true; : /* FDW-specific data */ : n->servername = $12; : n->options = $13; : $$ = (Node *) n; 0.00 : 522861: 49 89 c6 mov %rax,%r14 : | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $7->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 522864: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 522868: c6 42 24 70 movb $0x70,0x24(%rdx) : n->base.relation = $7; 0.00 : 52286c: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 522870: 48 89 50 08 mov %rdx,0x8(%rax) : n->base.tableElts = $9; 0.00 : 522874: 48 8b 53 e0 mov -0x20(%rbx),%rdx : n->base.inhRelations = NIL; 0.00 : 522878: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52287f: 00 : n->base.if_not_exists = true; 0.00 : 522880: c6 40 48 01 movb $0x1,0x48(%rax) : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $7->relpersistence = RELPERSISTENCE_PERMANENT; : n->base.relation = $7; : n->base.tableElts = $9; 0.00 : 522884: 48 89 50 10 mov %rdx,0x10(%rax) : n->base.inhRelations = NIL; : n->base.if_not_exists = true; : /* FDW-specific data */ : n->servername = $12; 0.00 : 522888: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52288c: 48 89 50 50 mov %rdx,0x50(%rax) : n->options = $13; 0.00 : 522890: 48 8b 13 mov (%rbx),%rdx 0.00 : 522893: 48 89 50 58 mov %rdx,0x58(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522897: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52289e: e9 dd f0 fe ff jmpq 511980 : CreateForeignTableStmt: : CREATE FOREIGN TABLE qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); 0.00 : 5228a3: 48 8b 3d b6 7f 69 00 mov 0x697fb6(%rip),%rdi # bba860 0.00 : 5228aa: be 60 00 00 00 mov $0x60,%esi 0.00 : 5228af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5228b6: e8 55 65 27 00 callq 798e10 0.00 : 5228bb: c7 00 15 03 00 00 movl $0x315,(%rax) : $4->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 5228c1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->base.inhRelations = NIL; : n->base.if_not_exists = false; : /* FDW-specific data */ : n->servername = $9; : n->options = $10; : $$ = (Node *) n; 0.00 : 5228c8: 49 89 c6 mov %rax,%r14 : CREATE FOREIGN TABLE qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $4->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 5228cb: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 5228cf: c6 42 24 70 movb $0x70,0x24(%rdx) : n->base.relation = $4; 0.00 : 5228d3: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 5228d7: 48 89 50 08 mov %rdx,0x8(%rax) : n->base.tableElts = $6; 0.00 : 5228db: 48 8b 51 e0 mov -0x20(%rcx),%rdx : n->base.inhRelations = NIL; 0.00 : 5228df: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5228e6: 00 : n->base.if_not_exists = false; 0.00 : 5228e7: c6 40 48 00 movb $0x0,0x48(%rax) : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $4->relpersistence = RELPERSISTENCE_PERMANENT; : n->base.relation = $4; : n->base.tableElts = $6; 0.00 : 5228eb: 48 89 50 10 mov %rdx,0x10(%rax) : n->base.inhRelations = NIL; : n->base.if_not_exists = false; : /* FDW-specific data */ : n->servername = $9; 0.00 : 5228ef: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5228f3: 48 89 50 50 mov %rdx,0x50(%rax) : n->options = $10; 0.00 : 5228f7: 48 8b 11 mov (%rcx),%rdx 0.00 : 5228fa: 48 89 50 58 mov %rdx,0x58(%rax) : $$ = (Node *) n; : } : | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name 0.00 : 5228fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522905: e9 76 f0 fe ff jmpq 511980 : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); 0.00 : 52290a: 48 8b 3d 4f 7f 69 00 mov 0x697f4f(%rip),%rdi # bba860 0.00 : 522911: be 28 00 00 00 mov $0x28,%esi 0.00 : 522916: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52291d: e8 ee 64 27 00 callq 798e10 0.00 : 522922: c7 00 0e 03 00 00 movl $0x30e,(%rax) : n->servername = $3; 0.00 : 522928: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = $4; : $$ = (Node *) n; 0.00 : 52292f: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER SERVER name alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; 0.00 : 522932: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 522936: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $4; 0.00 : 52293a: 48 8b 16 mov (%rsi),%rdx 0.00 : 52293d: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522941: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522948: e9 33 f0 fe ff jmpq 511980 : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name foreign_server_version : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); 0.00 : 52294d: 48 8b 3d 0c 7f 69 00 mov 0x697f0c(%rip),%rdi # bba860 0.00 : 522954: be 28 00 00 00 mov $0x28,%esi 0.00 : 522959: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522960: e8 ab 64 27 00 callq 798e10 0.00 : 522965: c7 00 0e 03 00 00 movl $0x30e,(%rax) : n->servername = $3; 0.00 : 52296b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->version = $4; : n->has_version = true; : $$ = (Node *) n; 0.00 : 522972: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER SERVER name foreign_server_version : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; 0.00 : 522975: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522979: 48 89 50 08 mov %rdx,0x8(%rax) : n->version = $4; 0.00 : 52297d: 48 8b 13 mov (%rbx),%rdx : n->has_version = true; 0.00 : 522980: c6 40 20 01 movb $0x1,0x20(%rax) : } : | ALTER SERVER name foreign_server_version : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; : n->version = $4; 0.00 : 522984: 48 89 50 10 mov %rdx,0x10(%rax) : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name alter_generic_options 0.00 : 522988: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52298f: e9 ec ef fe ff jmpq 511980 : * : ****************************************************************************/ : : AlterForeignServerStmt: ALTER SERVER name foreign_server_version alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); 0.00 : 522994: 48 8b 3d c5 7e 69 00 mov 0x697ec5(%rip),%rdi # bba860 0.00 : 52299b: be 28 00 00 00 mov $0x28,%esi 0.00 : 5229a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5229a7: e8 64 64 27 00 callq 798e10 0.00 : 5229ac: c7 00 0e 03 00 00 movl $0x30e,(%rax) : n->servername = $3; 0.00 : 5229b2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->version = $4; : n->options = $5; : n->has_version = true; : $$ = (Node *) n; 0.00 : 5229b9: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : AlterForeignServerStmt: ALTER SERVER name foreign_server_version alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; 0.00 : 5229bc: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5229c0: 48 89 50 08 mov %rdx,0x8(%rax) : n->version = $4; 0.00 : 5229c4: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5229c8: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $5; 0.00 : 5229cc: 48 8b 11 mov (%rcx),%rdx : n->has_version = true; 0.00 : 5229cf: c6 40 20 01 movb $0x1,0x20(%rax) : AlterForeignServerStmt: ALTER SERVER name foreign_server_version alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; : n->version = $4; : n->options = $5; 0.00 : 5229d3: 48 89 50 18 mov %rdx,0x18(%rax) : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name foreign_server_version 0.00 : 5229d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5229de: e9 9d ef fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5229e3: 48 8b 3d 76 7e 69 00 mov 0x697e76(%rip),%rdi # bba860 0.00 : 5229ea: be 28 00 00 00 mov $0x28,%esi 0.00 : 5229ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5229f6: e8 15 64 27 00 callq 798e10 0.00 : 5229fb: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FOREIGN_SERVER; 0.00 : 522a01: c7 40 18 0c 00 00 00 movl $0xc,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522a08: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522a0b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $6; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522a12: 49 89 de mov %rbx,%r14 : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522a15: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 522a19: e8 d2 cc 0d 00 callq 5ff6f0 0.00 : 522a1e: 31 f6 xor %esi,%esi 0.00 : 522a20: 48 89 c7 mov %rax,%rdi 0.00 : 522a23: e8 28 ee 0b 00 callq 5e1850 0.00 : 522a28: 31 f6 xor %esi,%esi 0.00 : 522a2a: 48 89 c7 mov %rax,%rdi 0.00 : 522a2d: e8 1e ee 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522a32: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522a39: 00 : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522a3a: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = true; 0.00 : 522a3e: c6 43 20 01 movb $0x1,0x20(%rbx) : n->behavior = $6; 0.00 : 522a42: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522a49: 8b 06 mov (%rsi),%eax : n->concurrent = false; 0.00 : 522a4b: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $6; 0.00 : 522a4f: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 522a52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522a59: e9 22 ef fe ff jmpq 511980 : * : ****************************************************************************/ : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522a5e: 48 8b 3d fb 7d 69 00 mov 0x697dfb(%rip),%rdi # bba860 0.00 : 522a65: be 28 00 00 00 mov $0x28,%esi 0.00 : 522a6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522a71: e8 9a 63 27 00 callq 798e10 0.00 : 522a76: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FOREIGN_SERVER; 0.00 : 522a7c: c7 40 18 0c 00 00 00 movl $0xc,0x18(%rax) : * : ****************************************************************************/ : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522a83: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); 0.00 : 522a86: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $4; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522a8d: 49 89 de mov %rbx,%r14 : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); 0.00 : 522a90: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 522a94: e8 57 cc 0d 00 callq 5ff6f0 0.00 : 522a99: 31 f6 xor %esi,%esi 0.00 : 522a9b: 48 89 c7 mov %rax,%rdi 0.00 : 522a9e: e8 ad ed 0b 00 callq 5e1850 0.00 : 522aa3: 31 f6 xor %esi,%esi 0.00 : 522aa5: 48 89 c7 mov %rax,%rdi 0.00 : 522aa8: e8 a3 ed 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522aad: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522ab4: 00 : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); 0.00 : 522ab5: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = false; 0.00 : 522ab9: c6 43 20 00 movb $0x0,0x20(%rbx) : n->behavior = $4; 0.00 : 522abd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522ac4: 8b 02 mov (%rdx),%eax : n->concurrent = false; 0.00 : 522ac6: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $4; 0.00 : 522aca: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior 0.00 : 522acd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522ad4: e9 a7 ee fe ff jmpq 511980 : | VERSION_P NULL_P { $$ = NULL; } : ; : : opt_foreign_server_version: : foreign_server_version { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522ad9: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522adc: e9 9f ee fe ff jmpq 511980 : VERSION_P Sconst { $$ = $2; } : | VERSION_P NULL_P { $$ = NULL; } : ; : : opt_foreign_server_version: : foreign_server_version { $$ = $1; } 0.00 : 522ae1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522ae8: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522aeb: e9 90 ee fe ff jmpq 511980 : ; : : : foreign_server_version: : VERSION_P Sconst { $$ = $2; } : | VERSION_P NULL_P { $$ = NULL; } 0.00 : 522af0: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522af3: e9 88 ee fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : : foreign_server_version: : VERSION_P Sconst { $$ = $2; } 0.00 : 522af8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522aff: 4c 8b 32 mov (%rdx),%r14 : | VERSION_P NULL_P { $$ = NULL; } 0.00 : 522b02: e9 79 ee fe ff jmpq 511980 : } : ; : : opt_type: : TYPE_P Sconst { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522b07: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522b0a: e9 71 ee fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_type: : TYPE_P Sconst { $$ = $2; } 0.00 : 522b0f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522b16: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522b19: e9 62 ee fe ff jmpq 511980 : *****************************************************************************/ : : CreateForeignServerStmt: CREATE SERVER name opt_type opt_foreign_server_version : FOREIGN DATA_P WRAPPER name create_generic_options : { : CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); 0.00 : 522b1e: 48 8b 3d 3b 7d 69 00 mov 0x697d3b(%rip),%rdi # bba860 0.00 : 522b25: be 30 00 00 00 mov $0x30,%esi 0.00 : 522b2a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522b31: e8 da 62 27 00 callq 798e10 0.00 : 522b36: c7 00 0d 03 00 00 movl $0x30d,(%rax) : n->servername = $3; 0.00 : 522b3c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->servertype = $4; : n->version = $5; : n->fdwname = $9; : n->options = $10; : $$ = (Node *) n; 0.00 : 522b43: 49 89 c6 mov %rax,%r14 : : CreateForeignServerStmt: CREATE SERVER name opt_type opt_foreign_server_version : FOREIGN DATA_P WRAPPER name create_generic_options : { : CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); : n->servername = $3; 0.00 : 522b46: 48 8b 56 c8 mov -0x38(%rsi),%rdx 0.00 : 522b4a: 48 89 50 08 mov %rdx,0x8(%rax) : n->servertype = $4; 0.00 : 522b4e: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 522b52: 48 89 50 10 mov %rdx,0x10(%rax) : n->version = $5; 0.00 : 522b56: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 522b5a: 48 89 50 18 mov %rdx,0x18(%rax) : n->fdwname = $9; 0.00 : 522b5e: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 522b62: 48 89 50 20 mov %rdx,0x20(%rax) : n->options = $10; 0.00 : 522b66: 48 8b 16 mov (%rsi),%rdx 0.00 : 522b69: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522b6d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522b74: e9 07 ee fe ff jmpq 511980 : ColLabel { $$ = $1; } : ; : : /* We could use def_arg here, but the spec only requires string literals */ : generic_option_arg: : Sconst { $$ = (Node *) makeString($1); } 0.00 : 522b79: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522b80: 48 8b 3b mov (%rbx),%rdi 0.00 : 522b83: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522b8a: e8 61 cb 0d 00 callq 5ff6f0 : ; 0.00 : 522b8f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ColLabel { $$ = $1; } : ; : : /* We could use def_arg here, but the spec only requires string literals */ : generic_option_arg: : Sconst { $$ = (Node *) makeString($1); } 0.00 : 522b96: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522b99: e9 e2 ed fe ff jmpq 511980 : $$ = makeDefElem($1, $2); : } : ; : : generic_option_name: : ColLabel { $$ = $1; } 0.00 : 522b9e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522ba5: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 522ba8: e9 d3 ed fe ff jmpq 511980 : ; : : generic_option_elem: : generic_option_name generic_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 522bad: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522bb4: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 522bb8: 48 8b 32 mov (%rdx),%rsi 0.00 : 522bbb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522bc2: e8 39 e9 0c 00 callq 5f1500 : } : ; 0.00 : 522bc7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : generic_option_elem: : generic_option_name generic_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 522bce: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522bd1: e9 aa ed fe ff jmpq 511980 : $$ = $2; : $$->defaction = DEFELEM_ADD; : } : | DROP generic_option_name : { : $$ = makeDefElemExtended(NULL, $2, NULL, DEFELEM_DROP); 0.00 : 522bd6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522bdd: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 522be2: 31 d2 xor %edx,%edx 0.00 : 522be4: 31 ff xor %edi,%edi 0.00 : 522be6: 48 8b 30 mov (%rax),%rsi 0.00 : 522be9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522bf0: e8 ab e8 0c 00 callq 5f14a0 : } : ; 0.00 : 522bf5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = $2; : $$->defaction = DEFELEM_ADD; : } : | DROP generic_option_name : { : $$ = makeDefElemExtended(NULL, $2, NULL, DEFELEM_DROP); 0.00 : 522bfc: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522bff: e9 7c ed fe ff jmpq 511980 : $$ = $2; : $$->defaction = DEFELEM_SET; : } : | ADD_P generic_option_elem : { : $$ = $2; 0.00 : 522c04: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522c0b: 4c 8b 33 mov (%rbx),%r14 : $$->defaction = DEFELEM_ADD; 0.00 : 522c0e: 41 c7 46 20 02 00 00 movl $0x2,0x20(%r14) 0.00 : 522c15: 00 : } : | DROP generic_option_name 0.00 : 522c16: e9 65 ed fe ff jmpq 511980 : { : $$ = $1; : } : | SET generic_option_elem : { : $$ = $2; 0.00 : 522c1b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522c22: 4c 8b 31 mov (%rcx),%r14 : $$->defaction = DEFELEM_SET; 0.00 : 522c25: 41 c7 46 20 01 00 00 movl $0x1,0x20(%r14) 0.00 : 522c2c: 00 : } : | ADD_P generic_option_elem 0.00 : 522c2d: e9 4e ed fe ff jmpq 511980 : ; : : alter_generic_option_elem: : generic_option_elem : { : $$ = $1; 0.00 : 522c32: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522c39: 4c 8b 32 mov (%rdx),%r14 : } : | SET generic_option_elem 0.00 : 522c3c: e9 3f ed fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | alter_generic_option_list ',' alter_generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522c41: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522c48: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 522c4c: 48 8b 36 mov (%rsi),%rsi 0.00 : 522c4f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522c56: e8 25 f2 0b 00 callq 5e1e80 : } : ; 0.00 : 522c5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | alter_generic_option_list ',' alter_generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522c62: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522c65: e9 16 ed fe ff jmpq 511980 : ; : : alter_generic_option_list: : alter_generic_option_elem : { : $$ = list_make1($1); 0.00 : 522c6a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522c71: 31 f6 xor %esi,%esi 0.00 : 522c73: 48 8b 3b mov (%rbx),%rdi 0.00 : 522c76: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522c7d: e8 ce eb 0b 00 callq 5e1850 : } : | alter_generic_option_list ',' alter_generic_option_elem 0.00 : 522c82: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : alter_generic_option_list: : alter_generic_option_elem : { : $$ = list_make1($1); 0.00 : 522c89: 49 89 c6 mov %rax,%r14 : } : | alter_generic_option_list ',' alter_generic_option_elem 0.00 : 522c8c: e9 ef ec fe ff jmpq 511980 : } : ; : : /* Options definition for ALTER FDW, SERVER and USER MAPPING */ : alter_generic_options: : OPTIONS '(' alter_generic_option_list ')' { $$ = $3; } 0.00 : 522c91: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522c98: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 522c9c: e9 df ec fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | generic_option_list ',' generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522ca1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522ca8: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 522cac: 48 8b 32 mov (%rdx),%rsi 0.00 : 522caf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522cb6: e8 c5 f1 0b 00 callq 5e1e80 : } : ; 0.00 : 522cbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | generic_option_list ',' generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522cc2: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522cc5: e9 b6 ec fe ff jmpq 511980 : ; : : generic_option_list: : generic_option_elem : { : $$ = list_make1($1); 0.00 : 522cca: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522cd1: 31 f6 xor %esi,%esi 0.00 : 522cd3: 48 8b 38 mov (%rax),%rdi 0.00 : 522cd6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522cdd: e8 6e eb 0b 00 callq 5e1850 : } : | generic_option_list ',' generic_option_elem 0.00 : 522ce2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : generic_option_list: : generic_option_elem : { : $$ = list_make1($1); 0.00 : 522ce9: 49 89 c6 mov %rax,%r14 : } : | generic_option_list ',' generic_option_elem 0.00 : 522cec: e9 8f ec fe ff jmpq 511980 : ; : : /* Options definition for CREATE FDW, SERVER and USER MAPPING */ : create_generic_options: : OPTIONS '(' generic_option_list ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522cf1: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522cf4: e9 87 ec fe ff jmpq 511980 : } : ; : : /* Options definition for CREATE FDW, SERVER and USER MAPPING */ : create_generic_options: : OPTIONS '(' generic_option_list ')' { $$ = $3; } 0.00 : 522cf9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522d00: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522d04: e9 77 ec fe ff jmpq 511980 : n->options = $7; : $$ = (Node *) n; : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); 0.00 : 522d09: 48 8b 3d 50 7b 69 00 mov 0x697b50(%rip),%rdi # bba860 0.00 : 522d10: be 20 00 00 00 mov $0x20,%esi 0.00 : 522d15: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522d1c: e8 ef 60 27 00 callq 798e10 0.00 : 522d21: c7 00 0c 03 00 00 movl $0x30c,(%rax) : n->fdwname = $5; 0.00 : 522d27: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->func_options = $6; : n->options = NIL; : $$ = (Node *) n; 0.00 : 522d2e: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); : n->fdwname = $5; 0.00 : 522d31: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522d35: 48 89 50 08 mov %rdx,0x8(%rax) : n->func_options = $6; 0.00 : 522d39: 48 8b 13 mov (%rbx),%rdx : n->options = NIL; 0.00 : 522d3c: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 522d43: 00 : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); : n->fdwname = $5; : n->func_options = $6; 0.00 : 522d44: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = NIL; : $$ = (Node *) n; : } : ; 0.00 : 522d48: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522d4f: e9 2c ec fe ff jmpq 511980 : * : ****************************************************************************/ : : AlterFdwStmt: ALTER FOREIGN DATA_P WRAPPER name opt_fdw_options alter_generic_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); 0.00 : 522d54: 48 8b 3d 05 7b 69 00 mov 0x697b05(%rip),%rdi # bba860 0.00 : 522d5b: be 20 00 00 00 mov $0x20,%esi 0.00 : 522d60: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522d67: e8 a4 60 27 00 callq 798e10 0.00 : 522d6c: c7 00 0c 03 00 00 movl $0x30c,(%rax) : n->fdwname = $5; 0.00 : 522d72: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->func_options = $6; : n->options = $7; : $$ = (Node *) n; 0.00 : 522d79: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : AlterFdwStmt: ALTER FOREIGN DATA_P WRAPPER name opt_fdw_options alter_generic_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); : n->fdwname = $5; 0.00 : 522d7c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 522d80: 48 89 50 08 mov %rdx,0x8(%rax) : n->func_options = $6; 0.00 : 522d84: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 522d88: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $7; 0.00 : 522d8c: 48 8b 11 mov (%rcx),%rdx 0.00 : 522d8f: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options 0.00 : 522d93: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522d9a: e9 e1 eb fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522d9f: 48 8b 3d ba 7a 69 00 mov 0x697aba(%rip),%rdi # bba860 0.00 : 522da6: be 28 00 00 00 mov $0x28,%esi 0.00 : 522dab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522db2: e8 59 60 27 00 callq 798e10 0.00 : 522db7: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FDW; 0.00 : 522dbd: c7 40 18 0b 00 00 00 movl $0xb,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522dc4: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); 0.00 : 522dc7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $8; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522dce: 49 89 de mov %rbx,%r14 : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); 0.00 : 522dd1: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 522dd5: e8 16 c9 0d 00 callq 5ff6f0 0.00 : 522dda: 31 f6 xor %esi,%esi 0.00 : 522ddc: 48 89 c7 mov %rax,%rdi 0.00 : 522ddf: e8 6c ea 0b 00 callq 5e1850 0.00 : 522de4: 31 f6 xor %esi,%esi 0.00 : 522de6: 48 89 c7 mov %rax,%rdi 0.00 : 522de9: e8 62 ea 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522dee: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522df5: 00 : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); 0.00 : 522df6: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = true; 0.00 : 522dfa: c6 43 20 01 movb $0x1,0x20(%rbx) : n->behavior = $8; 0.00 : 522dfe: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522e05: 8b 06 mov (%rsi),%eax : n->concurrent = false; 0.00 : 522e07: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $8; 0.00 : 522e0b: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 522e0e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522e15: e9 66 eb fe ff jmpq 511980 : * : ****************************************************************************/ : : DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522e1a: 48 8b 3d 3f 7a 69 00 mov 0x697a3f(%rip),%rdi # bba860 0.00 : 522e21: be 28 00 00 00 mov $0x28,%esi 0.00 : 522e26: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522e2d: e8 de 5f 27 00 callq 798e10 0.00 : 522e32: 48 89 c3 mov %rax,%rbx 0.00 : 522e35: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FDW; 0.00 : 522e3b: c7 40 18 0b 00 00 00 movl $0xb,0x18(%rax) : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522e42: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $6; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522e49: 49 89 de mov %rbx,%r14 : : DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522e4c: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 522e50: e8 9b c8 0d 00 callq 5ff6f0 0.00 : 522e55: 31 f6 xor %esi,%esi 0.00 : 522e57: 48 89 c7 mov %rax,%rdi 0.00 : 522e5a: e8 f1 e9 0b 00 callq 5e1850 0.00 : 522e5f: 31 f6 xor %esi,%esi 0.00 : 522e61: 48 89 c7 mov %rax,%rdi 0.00 : 522e64: e8 e7 e9 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522e69: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522e70: 00 : : DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522e71: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = false; 0.00 : 522e75: c6 43 20 00 movb $0x0,0x20(%rbx) : n->behavior = $6; 0.00 : 522e79: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522e80: 8b 02 mov (%rdx),%eax : n->concurrent = false; 0.00 : 522e82: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($5))); : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $6; 0.00 : 522e86: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior 0.00 : 522e89: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522e90: e9 eb ea fe ff jmpq 511980 : | fdw_options fdw_option { $$ = lappend($1, $2); } : ; : : opt_fdw_options: : fdw_options { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522e95: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522e98: e9 e3 ea fe ff jmpq 511980 : fdw_option { $$ = list_make1($1); } : | fdw_options fdw_option { $$ = lappend($1, $2); } : ; : : opt_fdw_options: : fdw_options { $$ = $1; } 0.00 : 522e9d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522ea4: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522ea7: e9 d4 ea fe ff jmpq 511980 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522eac: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522eb3: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 522eb7: 48 8b 33 mov (%rbx),%rsi 0.00 : 522eba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522ec1: e8 ba ef 0b 00 callq 5e1e80 : ; 0.00 : 522ec6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522ecd: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522ed0: e9 ab ea fe ff jmpq 511980 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } 0.00 : 522ed5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522edc: 31 f6 xor %esi,%esi 0.00 : 522ede: 48 8b 39 mov (%rcx),%rdi 0.00 : 522ee1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522ee8: e8 63 e9 0b 00 callq 5e1850 : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522eed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } 0.00 : 522ef4: 49 89 c6 mov %rax,%r14 : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522ef7: e9 84 ea fe ff jmpq 511980 : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522efc: 31 f6 xor %esi,%esi 0.00 : 522efe: bf e9 6c 8e 00 mov $0x8e6ce9,%edi 0.00 : 522f03: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f0a: e8 f1 e5 0c 00 callq 5f1500 : ; 0.00 : 522f0f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522f16: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522f19: e9 62 ea fe ff jmpq 511980 : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f1e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522f25: bf e9 6c 8e 00 mov $0x8e6ce9,%edi 0.00 : 522f2a: 48 8b 32 mov (%rdx),%rsi 0.00 : 522f2d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f34: e8 c7 e5 0c 00 callq 5f1500 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522f39: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f40: 49 89 c6 mov %rax,%r14 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522f43: e9 38 ea fe ff jmpq 511980 : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f48: 31 f6 xor %esi,%esi 0.00 : 522f4a: bf 33 96 7c 00 mov $0x7c9633,%edi 0.00 : 522f4f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f56: e8 a5 e5 0c 00 callq 5f1500 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f62: 49 89 c6 mov %rax,%r14 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f65: e9 16 ea fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } 0.00 : 522f6a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522f71: bf 33 96 7c 00 mov $0x7c9633,%edi 0.00 : 522f76: 48 8b 30 mov (%rax),%rsi 0.00 : 522f79: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f80: e8 7b e5 0c 00 callq 5f1500 : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } 0.00 : 522f8c: 49 89 c6 mov %rax,%r14 : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f8f: e9 ec e9 fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateFdwStmt: CREATE FOREIGN DATA_P WRAPPER name opt_fdw_options create_generic_options : { : CreateFdwStmt *n = makeNode(CreateFdwStmt); 0.00 : 522f94: 48 8b 3d c5 78 69 00 mov 0x6978c5(%rip),%rdi # bba860 0.00 : 522f9b: be 20 00 00 00 mov $0x20,%esi 0.00 : 522fa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522fa7: e8 64 5e 27 00 callq 798e10 0.00 : 522fac: c7 00 0b 03 00 00 movl $0x30b,(%rax) : n->fdwname = $5; 0.00 : 522fb2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->func_options = $6; : n->options = $7; : $$ = (Node *) n; 0.00 : 522fb9: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateFdwStmt: CREATE FOREIGN DATA_P WRAPPER name opt_fdw_options create_generic_options : { : CreateFdwStmt *n = makeNode(CreateFdwStmt); : n->fdwname = $5; 0.00 : 522fbc: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 522fc0: 48 89 50 08 mov %rdx,0x8(%rax) : n->func_options = $6; 0.00 : 522fc4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 522fc8: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $7; 0.00 : 522fcc: 48 8b 16 mov (%rsi),%rdx 0.00 : 522fcf: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522fd3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522fda: e9 a1 e9 fe ff jmpq 511980 : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TYPE_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 522fdf: 48 8b 3d 7a 78 69 00 mov 0x69787a(%rip),%rdi # bba860 0.00 : 522fe6: be 28 00 00 00 mov $0x28,%esi 0.00 : 522feb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522ff2: e8 19 5e 27 00 callq 798e10 0.00 : 522ff7: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 522ffd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_TYPE; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523004: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TYPE_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523007: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52300b: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 52300f: 8b 53 f0 mov -0x10(%rbx),%edx : n->objtype = OBJECT_TYPE; 0.00 : 523012: c7 40 14 22 00 00 00 movl $0x22,0x14(%rax) : } : | ALTER EXTENSION name add_drop TYPE_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523019: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TYPE; : n->objname = $6; 0.00 : 52301c: 48 8b 13 mov (%rbx),%rdx 0.00 : 52301f: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 523023: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52302a: e9 51 e9 fe ff jmpq 511980 : n->objname = list_make1(makeString($8)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 52302f: 48 8b 3d 2a 78 69 00 mov 0x69782a(%rip),%rdi # bba860 0.00 : 523036: be 28 00 00 00 mov $0x28,%esi 0.00 : 52303b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523042: e8 c9 5d 27 00 callq 798e10 0.00 : 523047: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 52304d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objname = list_make1(makeString($8)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523054: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_FOREIGN_SERVER; : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; 0.00 : 523057: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52305a: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 52305e: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523062: 8b 41 f0 mov -0x10(%rcx),%eax : n->objtype = OBJECT_FOREIGN_SERVER; 0.00 : 523065: c7 43 14 0c 00 00 00 movl $0xc,0x14(%rbx) : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52306c: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_FOREIGN_SERVER; : n->objname = list_make1(makeString($6)); 0.00 : 52306f: 48 8b 39 mov (%rcx),%rdi 0.00 : 523072: e8 79 c6 0d 00 callq 5ff6f0 0.00 : 523077: 31 f6 xor %esi,%esi 0.00 : 523079: 48 89 c7 mov %rax,%rdi 0.00 : 52307c: e8 cf e7 0b 00 callq 5e1850 0.00 : 523081: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TYPE_P any_name 0.00 : 523085: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52308c: e9 ef e8 fe ff jmpq 511980 : n->objname = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523091: 48 8b 3d c8 77 69 00 mov 0x6977c8(%rip),%rdi # bba860 0.00 : 523098: be 28 00 00 00 mov $0x28,%esi 0.00 : 52309d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5230a4: e8 67 5d 27 00 callq 798e10 0.00 : 5230a9: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5230af: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objname = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5230b6: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_FDW; : n->objname = list_make1(makeString($8)); : $$ = (Node *)n; 0.00 : 5230b9: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5230bc: 48 8b 42 d8 mov -0x28(%rdx),%rax 0.00 : 5230c0: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5230c4: 8b 42 e0 mov -0x20(%rdx),%eax : n->objtype = OBJECT_FDW; 0.00 : 5230c7: c7 43 14 0b 00 00 00 movl $0xb,0x14(%rbx) : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5230ce: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_FDW; : n->objname = list_make1(makeString($8)); 0.00 : 5230d1: 48 8b 3a mov (%rdx),%rdi 0.00 : 5230d4: e8 17 c6 0d 00 callq 5ff6f0 0.00 : 5230d9: 31 f6 xor %esi,%esi 0.00 : 5230db: 48 89 c7 mov %rax,%rdi 0.00 : 5230de: e8 6d e7 0b 00 callq 5e1850 0.00 : 5230e3: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name 0.00 : 5230e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5230ee: e9 8d e8 fe ff jmpq 511980 : n->objname = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5230f3: 48 8b 3d 66 77 69 00 mov 0x697766(%rip),%rdi # bba860 0.00 : 5230fa: be 28 00 00 00 mov $0x28,%esi 0.00 : 5230ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523106: e8 05 5d 27 00 callq 798e10 0.00 : 52310b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523111: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_FOREIGN_TABLE; : n->objname = $7; : $$ = (Node *)n; 0.00 : 523118: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52311b: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 52311f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523123: 8b 56 e8 mov -0x18(%rsi),%edx : n->objtype = OBJECT_FOREIGN_TABLE; 0.00 : 523126: c7 40 14 0d 00 00 00 movl $0xd,0x14(%rax) : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52312d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_FOREIGN_TABLE; : n->objname = $7; 0.00 : 523130: 48 8b 16 mov (%rsi),%rdx 0.00 : 523133: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name 0.00 : 523137: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52313e: e9 3d e8 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523143: 48 8b 3d 16 77 69 00 mov 0x697716(%rip),%rdi # bba860 0.00 : 52314a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52314f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523156: e8 b5 5c 27 00 callq 798e10 0.00 : 52315b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523161: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_MATVIEW; : n->objname = $7; : $$ = (Node *)n; 0.00 : 523168: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52316b: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 52316f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523173: 8b 53 e8 mov -0x18(%rbx),%edx : n->objtype = OBJECT_MATVIEW; 0.00 : 523176: c7 40 14 12 00 00 00 movl $0x12,0x14(%rax) : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52317d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_MATVIEW; : n->objname = $7; 0.00 : 523180: 48 8b 13 mov (%rbx),%rdx 0.00 : 523183: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name 0.00 : 523187: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52318e: e9 ed e7 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523193: 48 8b 3d c6 76 69 00 mov 0x6976c6(%rip),%rdi # bba860 0.00 : 52319a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52319f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5231a6: e8 65 5c 27 00 callq 798e10 0.00 : 5231ab: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5231b1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_VIEW; : n->objname = $6; : $$ = (Node *)n; 0.00 : 5231b8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5231bb: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 5231bf: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5231c3: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_VIEW; 0.00 : 5231c6: c7 40 14 23 00 00 00 movl $0x23,0x14(%rax) : } : | ALTER EXTENSION name add_drop VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5231cd: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_VIEW; : n->objname = $6; 0.00 : 5231d0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5231d3: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name 0.00 : 5231d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5231de: e9 9d e7 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SEQUENCE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5231e3: 48 8b 3d 76 76 69 00 mov 0x697676(%rip),%rdi # bba860 0.00 : 5231ea: be 28 00 00 00 mov $0x28,%esi 0.00 : 5231ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5231f6: e8 15 5c 27 00 callq 798e10 0.00 : 5231fb: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523201: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_SEQUENCE; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523208: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SEQUENCE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52320b: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 52320f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523213: 8b 56 f0 mov -0x10(%rsi),%edx : n->objtype = OBJECT_SEQUENCE; 0.00 : 523216: c7 40 14 1a 00 00 00 movl $0x1a,0x14(%rax) : } : | ALTER EXTENSION name add_drop SEQUENCE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52321d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_SEQUENCE; : n->objname = $6; 0.00 : 523220: 48 8b 16 mov (%rsi),%rdx 0.00 : 523223: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop VIEW any_name 0.00 : 523227: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52322e: e9 4d e7 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523233: 48 8b 3d 26 76 69 00 mov 0x697626(%rip),%rdi # bba860 0.00 : 52323a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52323f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523246: e8 c5 5b 27 00 callq 798e10 0.00 : 52324b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523251: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_TSCONFIGURATION; : n->objname = $8; : $$ = (Node *)n; 0.00 : 523258: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52325b: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 52325f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523263: 8b 53 e0 mov -0x20(%rbx),%edx : n->objtype = OBJECT_TSCONFIGURATION; 0.00 : 523266: c7 40 14 1e 00 00 00 movl $0x1e,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52326d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSCONFIGURATION; : n->objname = $8; 0.00 : 523270: 48 8b 13 mov (%rbx),%rdx 0.00 : 523273: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SEQUENCE any_name 0.00 : 523277: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52327e: e9 fd e6 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523283: 48 8b 3d d6 75 69 00 mov 0x6975d6(%rip),%rdi # bba860 0.00 : 52328a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52328f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523296: e8 75 5b 27 00 callq 798e10 0.00 : 52329b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5232a1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_TSTEMPLATE; : n->objname = $8; : $$ = (Node *)n; 0.00 : 5232a8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5232ab: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 5232af: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5232b3: 8b 51 e0 mov -0x20(%rcx),%edx : n->objtype = OBJECT_TSTEMPLATE; 0.00 : 5232b6: c7 40 14 21 00 00 00 movl $0x21,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5232bd: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSTEMPLATE; : n->objname = $8; 0.00 : 5232c0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5232c3: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name 0.00 : 5232c7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5232ce: e9 ad e6 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5232d3: 48 8b 3d 86 75 69 00 mov 0x697586(%rip),%rdi # bba860 0.00 : 5232da: be 28 00 00 00 mov $0x28,%esi 0.00 : 5232df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5232e6: e8 25 5b 27 00 callq 798e10 0.00 : 5232eb: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5232f1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_TSDICTIONARY; : n->objname = $8; : $$ = (Node *)n; 0.00 : 5232f8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5232fb: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 5232ff: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523303: 8b 56 e0 mov -0x20(%rsi),%edx : n->objtype = OBJECT_TSDICTIONARY; 0.00 : 523306: c7 40 14 1f 00 00 00 movl $0x1f,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52330d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSDICTIONARY; : n->objname = $8; 0.00 : 523310: 48 8b 16 mov (%rsi),%rdx 0.00 : 523313: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name 0.00 : 523317: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52331e: e9 5d e6 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523323: 48 8b 3d 36 75 69 00 mov 0x697536(%rip),%rdi # bba860 0.00 : 52332a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52332f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523336: e8 d5 5a 27 00 callq 798e10 0.00 : 52333b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523341: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_TSPARSER; : n->objname = $8; : $$ = (Node *)n; 0.00 : 523348: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52334b: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 52334f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523353: 8b 53 e0 mov -0x20(%rbx),%edx : n->objtype = OBJECT_TSPARSER; 0.00 : 523356: c7 40 14 20 00 00 00 movl $0x20,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52335d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSPARSER; : n->objname = $8; 0.00 : 523360: 48 8b 13 mov (%rbx),%rdx 0.00 : 523363: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name 0.00 : 523367: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52336e: e9 0d e6 fe ff jmpq 511980 : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523373: 48 8b 3d e6 74 69 00 mov 0x6974e6(%rip),%rdi # bba860 0.00 : 52337a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52337f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523386: e8 85 5a 27 00 callq 798e10 0.00 : 52338b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523391: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_TABLE; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523398: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52339b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52339f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5233a3: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_TABLE; 0.00 : 5233a6: c7 40 14 1b 00 00 00 movl $0x1b,0x14(%rax) : } : | ALTER EXTENSION name add_drop TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5233ad: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TABLE; : n->objname = $6; 0.00 : 5233b0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5233b3: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name 0.00 : 5233b7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5233be: e9 bd e5 fe ff jmpq 511980 : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5233c3: 48 8b 3d 96 74 69 00 mov 0x697496(%rip),%rdi # bba860 0.00 : 5233ca: be 28 00 00 00 mov $0x28,%esi 0.00 : 5233cf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5233d6: e8 35 5a 27 00 callq 798e10 0.00 : 5233db: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5233e1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5233e8: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_EVENT_TRIGGER; : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; 0.00 : 5233eb: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5233ee: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5233f2: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5233f6: 8b 46 e8 mov -0x18(%rsi),%eax : n->objtype = OBJECT_EVENT_TRIGGER; 0.00 : 5233f9: c7 43 14 09 00 00 00 movl $0x9,0x14(%rbx) : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523400: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_EVENT_TRIGGER; : n->objname = list_make1(makeString($7)); 0.00 : 523403: 48 8b 3e mov (%rsi),%rdi 0.00 : 523406: e8 e5 c2 0d 00 callq 5ff6f0 0.00 : 52340b: 31 f6 xor %esi,%esi 0.00 : 52340d: 48 89 c7 mov %rax,%rdi 0.00 : 523410: e8 3b e4 0b 00 callq 5e1850 0.00 : 523415: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TABLE any_name 0.00 : 523419: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523420: e9 5b e5 fe ff jmpq 511980 : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523425: 48 8b 3d 34 74 69 00 mov 0x697434(%rip),%rdi # bba860 0.00 : 52342c: be 28 00 00 00 mov $0x28,%esi 0.00 : 523431: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523438: e8 d3 59 27 00 callq 798e10 0.00 : 52343d: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523443: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 52344a: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_SCHEMA; : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; 0.00 : 52344d: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523450: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 523454: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523458: 8b 41 f0 mov -0x10(%rcx),%eax : n->objtype = OBJECT_SCHEMA; 0.00 : 52345b: c7 43 14 19 00 00 00 movl $0x19,0x14(%rbx) : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523462: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_SCHEMA; : n->objname = list_make1(makeString($6)); 0.00 : 523465: 48 8b 39 mov (%rcx),%rdi 0.00 : 523468: e8 83 c2 0d 00 callq 5ff6f0 0.00 : 52346d: 31 f6 xor %esi,%esi 0.00 : 52346f: 48 89 c7 mov %rax,%rdi 0.00 : 523472: e8 d9 e3 0b 00 callq 5e1850 0.00 : 523477: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name 0.00 : 52347b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523482: e9 f9 e4 fe ff jmpq 511980 : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523487: 48 8b 3d d2 73 69 00 mov 0x6973d2(%rip),%rdi # bba860 0.00 : 52348e: be 28 00 00 00 mov $0x28,%esi 0.00 : 523493: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52349a: e8 71 59 27 00 callq 798e10 0.00 : 52349f: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5234a5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5234ac: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_OPFAMILY; : n->objname = $7; : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; 0.00 : 5234af: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5234b2: 48 8b 42 d0 mov -0x30(%rdx),%rax 0.00 : 5234b6: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5234ba: 8b 42 d8 mov -0x28(%rdx),%eax : n->objtype = OBJECT_OPFAMILY; 0.00 : 5234bd: c7 43 14 15 00 00 00 movl $0x15,0x14(%rbx) : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5234c4: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_OPFAMILY; : n->objname = $7; 0.00 : 5234c7: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 5234cb: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = list_make1(makeString($9)); 0.00 : 5234cf: 48 8b 3a mov (%rdx),%rdi 0.00 : 5234d2: e8 19 c2 0d 00 callq 5ff6f0 0.00 : 5234d7: 31 f6 xor %esi,%esi 0.00 : 5234d9: 48 89 c7 mov %rax,%rdi 0.00 : 5234dc: e8 6f e3 0b 00 callq 5e1850 0.00 : 5234e1: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name 0.00 : 5234e5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5234ec: e9 8f e4 fe ff jmpq 511980 : n->objargs = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5234f1: 48 8b 3d 68 73 69 00 mov 0x697368(%rip),%rdi # bba860 0.00 : 5234f8: be 28 00 00 00 mov $0x28,%esi 0.00 : 5234fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523504: e8 07 59 27 00 callq 798e10 0.00 : 523509: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 52350f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523516: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_OPCLASS; : n->objname = $7; : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; 0.00 : 523519: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52351c: 48 8b 46 d0 mov -0x30(%rsi),%rax 0.00 : 523520: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523524: 8b 46 d8 mov -0x28(%rsi),%eax : n->objtype = OBJECT_OPCLASS; 0.00 : 523527: c7 43 14 13 00 00 00 movl $0x13,0x14(%rbx) : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52352e: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_OPCLASS; : n->objname = $7; 0.00 : 523531: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 523535: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = list_make1(makeString($9)); 0.00 : 523539: 48 8b 3e mov (%rsi),%rdi 0.00 : 52353c: e8 af c1 0d 00 callq 5ff6f0 0.00 : 523541: 31 f6 xor %esi,%esi 0.00 : 523543: 48 89 c7 mov %rax,%rdi 0.00 : 523546: e8 05 e3 0b 00 callq 5e1850 0.00 : 52354b: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method 0.00 : 52354f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523556: e9 25 e4 fe ff jmpq 511980 : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 52355b: 48 8b 3d fe 72 69 00 mov 0x6972fe(%rip),%rdi # bba860 0.00 : 523562: be 28 00 00 00 mov $0x28,%esi 0.00 : 523567: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52356e: e8 9d 58 27 00 callq 798e10 0.00 : 523573: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523579: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_OPERATOR; : n->objname = $6; : n->objargs = $7; : $$ = (Node *)n; 0.00 : 523580: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523583: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 523587: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 52358b: 8b 51 e8 mov -0x18(%rcx),%edx : n->objtype = OBJECT_OPERATOR; 0.00 : 52358e: c7 40 14 14 00 00 00 movl $0x14,0x14(%rax) : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523595: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_OPERATOR; : n->objname = $6; 0.00 : 523598: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52359c: 48 89 50 18 mov %rdx,0x18(%rax) : n->objargs = $7; 0.00 : 5235a0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5235a3: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method 0.00 : 5235a7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5235ae: e9 cd e3 fe ff jmpq 511980 : n->objargs = $6->funcargs; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5235b3: 48 8b 3d a6 72 69 00 mov 0x6972a6(%rip),%rdi # bba860 0.00 : 5235ba: be 28 00 00 00 mov $0x28,%esi 0.00 : 5235bf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5235c6: e8 45 58 27 00 callq 798e10 0.00 : 5235cb: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5235d1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = $6->funcargs; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5235d8: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_LANGUAGE; : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; 0.00 : 5235db: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5235de: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5235e2: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5235e6: 8b 46 e8 mov -0x18(%rsi),%eax : n->objtype = OBJECT_LANGUAGE; 0.00 : 5235e9: c7 43 14 10 00 00 00 movl $0x10,0x14(%rbx) : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5235f0: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_LANGUAGE; : n->objname = list_make1(makeString($7)); 0.00 : 5235f3: 48 8b 3e mov (%rsi),%rdi 0.00 : 5235f6: e8 f5 c0 0d 00 callq 5ff6f0 0.00 : 5235fb: 31 f6 xor %esi,%esi 0.00 : 5235fd: 48 89 c7 mov %rax,%rdi 0.00 : 523600: e8 4b e2 0b 00 callq 5e1850 0.00 : 523605: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes 0.00 : 523609: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523610: e9 6b e3 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523615: 48 8b 3d 44 72 69 00 mov 0x697244(%rip),%rdi # bba860 0.00 : 52361c: be 28 00 00 00 mov $0x28,%esi 0.00 : 523621: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523628: e8 e3 57 27 00 callq 798e10 0.00 : 52362d: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523633: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_FUNCTION; : n->objname = $6->funcname; : n->objargs = $6->funcargs; : $$ = (Node *)n; 0.00 : 52363a: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52363d: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 523641: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523645: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_FUNCTION; 0.00 : 523648: c7 40 14 0e 00 00 00 movl $0xe,0x14(%rax) : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52364f: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_FUNCTION; : n->objname = $6->funcname; 0.00 : 523652: 48 8b 11 mov (%rcx),%rdx 0.00 : 523655: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 523659: 48 89 50 18 mov %rdx,0x18(%rax) : n->objargs = $6->funcargs; 0.00 : 52365d: 48 8b 11 mov (%rcx),%rdx 0.00 : 523660: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 523664: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name 0.00 : 523668: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52366f: e9 0c e3 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523674: 48 8b 3d e5 71 69 00 mov 0x6971e5(%rip),%rdi # bba860 0.00 : 52367b: be 28 00 00 00 mov $0x28,%esi 0.00 : 523680: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523687: e8 84 57 27 00 callq 798e10 0.00 : 52368c: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523692: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_DOMAIN; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523699: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52369c: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5236a0: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5236a4: 8b 56 f0 mov -0x10(%rsi),%edx : n->objtype = OBJECT_DOMAIN; 0.00 : 5236a7: c7 40 14 08 00 00 00 movl $0x8,0x14(%rax) : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5236ae: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_DOMAIN; : n->objname = $6; 0.00 : 5236b1: 48 8b 16 mov (%rsi),%rdx 0.00 : 5236b4: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes 0.00 : 5236b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5236bf: e9 bc e2 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5236c4: 48 8b 3d 95 71 69 00 mov 0x697195(%rip),%rdi # bba860 0.00 : 5236cb: be 28 00 00 00 mov $0x28,%esi 0.00 : 5236d0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5236d7: e8 34 57 27 00 callq 798e10 0.00 : 5236dc: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5236e2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_CONVERSION; : n->objname = $6; : $$ = (Node *)n; 0.00 : 5236e9: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5236ec: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 5236f0: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5236f4: 8b 53 f0 mov -0x10(%rbx),%edx : n->objtype = OBJECT_CONVERSION; 0.00 : 5236f7: c7 40 14 06 00 00 00 movl $0x6,0x14(%rax) : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5236fe: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_CONVERSION; : n->objname = $6; 0.00 : 523701: 48 8b 13 mov (%rbx),%rdx 0.00 : 523704: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name 0.00 : 523708: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52370f: e9 6c e2 fe ff jmpq 511980 : n->objargs = list_make1($9); : $$ = (Node *) n; : } : | ALTER EXTENSION name add_drop COLLATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523714: 48 8b 3d 45 71 69 00 mov 0x697145(%rip),%rdi # bba860 0.00 : 52371b: be 28 00 00 00 mov $0x28,%esi 0.00 : 523720: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523727: e8 e4 56 27 00 callq 798e10 0.00 : 52372c: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523732: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_COLLATION; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523739: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER EXTENSION name add_drop COLLATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52373c: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 523740: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523744: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_COLLATION; 0.00 : 523747: c7 40 14 05 00 00 00 movl $0x5,0x14(%rax) : } : | ALTER EXTENSION name add_drop COLLATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52374e: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_COLLATION; : n->objname = $6; 0.00 : 523751: 48 8b 11 mov (%rcx),%rdx 0.00 : 523754: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name 0.00 : 523758: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52375f: e9 1c e2 fe ff jmpq 511980 : n->objargs = extractAggrArgTypes($7); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523764: 48 8b 3d f5 70 69 00 mov 0x6970f5(%rip),%rdi # bba860 0.00 : 52376b: be 28 00 00 00 mov $0x28,%esi 0.00 : 523770: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523777: e8 94 56 27 00 callq 798e10 0.00 : 52377c: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523782: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = extractAggrArgTypes($7); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523789: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_CAST; : n->objname = list_make1($7); : n->objargs = list_make1($9); : $$ = (Node *) n; 0.00 : 52378c: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52378f: 48 8b 46 c8 mov -0x38(%rsi),%rax 0.00 : 523793: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523797: 8b 46 d0 mov -0x30(%rsi),%eax : n->objtype = OBJECT_CAST; 0.00 : 52379a: c7 43 14 02 00 00 00 movl $0x2,0x14(%rbx) : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5237a1: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_CAST; : n->objname = list_make1($7); 0.00 : 5237a4: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 5237a8: 31 f6 xor %esi,%esi 0.00 : 5237aa: e8 a1 e0 0b 00 callq 5e1850 0.00 : 5237af: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = list_make1($9); 0.00 : 5237b3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5237ba: 31 f6 xor %esi,%esi 0.00 : 5237bc: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 5237c0: e8 8b e0 0b 00 callq 5e1850 0.00 : 5237c5: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | ALTER EXTENSION name add_drop COLLATION any_name 0.00 : 5237c9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5237d0: e9 ab e1 fe ff jmpq 511980 : *****************************************************************************/ : : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5237d5: 48 8b 3d 84 70 69 00 mov 0x697084(%rip),%rdi # bba860 0.00 : 5237dc: be 28 00 00 00 mov $0x28,%esi 0.00 : 5237e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5237e8: e8 23 56 27 00 callq 798e10 0.00 : 5237ed: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5237f3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : *****************************************************************************/ : : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5237fa: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; : n->objargs = extractAggrArgTypes($7); : $$ = (Node *)n; 0.00 : 5237fd: 49 89 de mov %rbx,%r14 : : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523800: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 523804: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523808: 8b 41 e8 mov -0x18(%rcx),%eax : n->objtype = OBJECT_AGGREGATE; 0.00 : 52380b: c7 43 14 00 00 00 00 movl $0x0,0x14(%rbx) : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523812: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; 0.00 : 523815: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 523819: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = extractAggrArgTypes($7); 0.00 : 52381d: 48 8b 39 mov (%rcx),%rdi 0.00 : 523820: e8 ab d2 fe ff callq 510ad0 0.00 : 523825: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' 0.00 : 523829: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523830: e9 4b e1 fe ff jmpq 511980 : ; : : alter_extension_opt_item: : TO NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 523835: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52383c: 48 8b 3a mov (%rdx),%rdi 0.00 : 52383f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523846: e8 a5 be 0d 00 callq 5ff6f0 0.00 : 52384b: bf 1b 96 7c 00 mov $0x7c961b,%edi 0.00 : 523850: 48 89 c6 mov %rax,%rsi 0.00 : 523853: e8 a8 dc 0c 00 callq 5f1500 : } : ; 0.00 : 523858: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : alter_extension_opt_item: : TO NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 52385f: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 523862: e9 19 e1 fe ff jmpq 511980 : : alter_extension_opt_list: : alter_extension_opt_list alter_extension_opt_item : { $$ = lappend($1, $2); } : | /* EMPTY */ : { $$ = NIL; } 0.00 : 523867: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52386a: e9 11 e1 fe ff jmpq 511980 : } : ; : : alter_extension_opt_list: : alter_extension_opt_list alter_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 52386f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523876: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 52387a: 48 8b 30 mov (%rax),%rsi 0.00 : 52387d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523884: e8 f7 e5 0b 00 callq 5e1e80 : | /* EMPTY */ 0.00 : 523889: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alter_extension_opt_list: : alter_extension_opt_list alter_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 523890: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ 0.00 : 523893: e9 e8 e0 fe ff jmpq 511980 : * : *****************************************************************************/ : : AlterExtensionStmt: ALTER EXTENSION name UPDATE alter_extension_opt_list : { : AlterExtensionStmt *n = makeNode(AlterExtensionStmt); 0.00 : 523898: 48 8b 3d c1 6f 69 00 mov 0x696fc1(%rip),%rdi # bba860 0.00 : 52389f: be 18 00 00 00 mov $0x18,%esi 0.00 : 5238a4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5238ab: e8 60 55 27 00 callq 798e10 0.00 : 5238b0: c7 00 18 03 00 00 movl $0x318,(%rax) : n->extname = $3; 0.00 : 5238b6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = $5; : $$ = (Node *) n; 0.00 : 5238bd: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : AlterExtensionStmt: ALTER EXTENSION name UPDATE alter_extension_opt_list : { : AlterExtensionStmt *n = makeNode(AlterExtensionStmt); : n->extname = $3; 0.00 : 5238c0: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 5238c4: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 5238c8: 48 8b 16 mov (%rsi),%rdx 0.00 : 5238cb: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5238cf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5238d6: e9 a5 e0 fe ff jmpq 511980 : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); : } : | FROM NonReservedWord_or_Sconst : { : $$ = makeDefElem("old_version", (Node *)makeString($2)); 0.00 : 5238db: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5238e2: 48 8b 3b mov (%rbx),%rdi 0.00 : 5238e5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5238ec: e8 ff bd 0d 00 callq 5ff6f0 0.00 : 5238f1: bf 27 96 7c 00 mov $0x7c9627,%edi 0.00 : 5238f6: 48 89 c6 mov %rax,%rsi 0.00 : 5238f9: e8 02 dc 0c 00 callq 5f1500 : } : ; 0.00 : 5238fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); : } : | FROM NonReservedWord_or_Sconst : { : $$ = makeDefElem("old_version", (Node *)makeString($2)); 0.00 : 523905: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 523908: e9 73 e0 fe ff jmpq 511980 : { : $$ = makeDefElem("schema", (Node *)makeString($2)); : } : | VERSION_P NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 52390d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523914: 48 8b 39 mov (%rcx),%rdi 0.00 : 523917: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52391e: e8 cd bd 0d 00 callq 5ff6f0 0.00 : 523923: bf 1b 96 7c 00 mov $0x7c961b,%edi 0.00 : 523928: 48 89 c6 mov %rax,%rsi 0.00 : 52392b: e8 d0 db 0c 00 callq 5f1500 : } : | FROM NonReservedWord_or_Sconst 0.00 : 523930: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("schema", (Node *)makeString($2)); : } : | VERSION_P NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 523937: 49 89 c6 mov %rax,%r14 : } : | FROM NonReservedWord_or_Sconst 0.00 : 52393a: e9 41 e0 fe ff jmpq 511980 : ; : : create_extension_opt_item: : SCHEMA name : { : $$ = makeDefElem("schema", (Node *)makeString($2)); 0.00 : 52393f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523946: 48 8b 3a mov (%rdx),%rdi 0.00 : 523949: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523950: e8 9b bd 0d 00 callq 5ff6f0 0.00 : 523955: bf 33 80 8e 00 mov $0x8e8033,%edi 0.00 : 52395a: 48 89 c6 mov %rax,%rsi 0.00 : 52395d: e8 9e db 0c 00 callq 5f1500 : } : | VERSION_P NonReservedWord_or_Sconst 0.00 : 523962: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : create_extension_opt_item: : SCHEMA name : { : $$ = makeDefElem("schema", (Node *)makeString($2)); 0.00 : 523969: 49 89 c6 mov %rax,%r14 : } : | VERSION_P NonReservedWord_or_Sconst 0.00 : 52396c: e9 0f e0 fe ff jmpq 511980 : : create_extension_opt_list: : create_extension_opt_list create_extension_opt_item : { $$ = lappend($1, $2); } : | /* EMPTY */ : { $$ = NIL; } 0.00 : 523971: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523974: e9 07 e0 fe ff jmpq 511980 : } : ; : : create_extension_opt_list: : create_extension_opt_list create_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 523979: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523980: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 523984: 48 8b 30 mov (%rax),%rsi 0.00 : 523987: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52398e: e8 ed e4 0b 00 callq 5e1e80 : | /* EMPTY */ 0.00 : 523993: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : create_extension_opt_list: : create_extension_opt_list create_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 52399a: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ 0.00 : 52399d: e9 de df fe ff jmpq 511980 : n->options = $5; : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); 0.00 : 5239a2: 48 8b 3d b7 6e 69 00 mov 0x696eb7(%rip),%rdi # bba860 0.00 : 5239a9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5239ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5239b5: e8 56 54 27 00 callq 798e10 0.00 : 5239ba: c7 00 17 03 00 00 movl $0x317,(%rax) : n->extname = $6; 0.00 : 5239c0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->if_not_exists = true; : n->options = $8; : $$ = (Node *) n; 0.00 : 5239c7: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $6; 0.00 : 5239ca: 48 8b 56 f0 mov -0x10(%rsi),%rdx : n->if_not_exists = true; 0.00 : 5239ce: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $6; 0.00 : 5239d2: 48 89 50 08 mov %rdx,0x8(%rax) : n->if_not_exists = true; : n->options = $8; 0.00 : 5239d6: 48 8b 16 mov (%rsi),%rdx 0.00 : 5239d9: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5239dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5239e4: e9 97 df fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateExtensionStmt: CREATE EXTENSION name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); 0.00 : 5239e9: 48 8b 3d 70 6e 69 00 mov 0x696e70(%rip),%rdi # bba860 0.00 : 5239f0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5239f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5239fc: e8 0f 54 27 00 callq 798e10 0.00 : 523a01: c7 00 17 03 00 00 movl $0x317,(%rax) : n->extname = $3; 0.00 : 523a07: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->if_not_exists = false; : n->options = $5; : $$ = (Node *) n; 0.00 : 523a0e: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateExtensionStmt: CREATE EXTENSION name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $3; 0.00 : 523a11: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->if_not_exists = false; 0.00 : 523a15: c6 40 10 00 movb $0x0,0x10(%rax) : *****************************************************************************/ : : CreateExtensionStmt: CREATE EXTENSION name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $3; 0.00 : 523a19: 48 89 50 08 mov %rdx,0x8(%rax) : n->if_not_exists = false; : n->options = $5; 0.00 : 523a1d: 48 8b 13 mov (%rbx),%rdx 0.00 : 523a20: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list 0.00 : 523a24: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523a2b: e9 50 df fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); 0.00 : 523a30: 48 8b 3d 29 6e 69 00 mov 0x696e29(%rip),%rdi # bba860 0.00 : 523a37: be 18 00 00 00 mov $0x18,%esi 0.00 : 523a3c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523a43: e8 c8 53 27 00 callq 798e10 0.00 : 523a48: c7 00 00 03 00 00 movl $0x300,(%rax) : n->tablespacename = $5; 0.00 : 523a4e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->missing_ok = true; : $$ = (Node *) n; 0.00 : 523a55: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $5; 0.00 : 523a58: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 523a5b: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $5; 0.00 : 523a5f: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = true; : $$ = (Node *) n; : } : ; 0.00 : 523a63: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523a6a: e9 11 df fe ff jmpq 511980 : * : ****************************************************************************/ : : DropTableSpaceStmt: DROP TABLESPACE name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); 0.00 : 523a6f: 48 8b 3d ea 6d 69 00 mov 0x696dea(%rip),%rdi # bba860 0.00 : 523a76: be 18 00 00 00 mov $0x18,%esi 0.00 : 523a7b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523a82: e8 89 53 27 00 callq 798e10 0.00 : 523a87: c7 00 00 03 00 00 movl $0x300,(%rax) : n->tablespacename = $3; 0.00 : 523a8d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->missing_ok = false; : $$ = (Node *) n; 0.00 : 523a94: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : DropTableSpaceStmt: DROP TABLESPACE name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $3; 0.00 : 523a97: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 523a9a: c6 40 10 00 movb $0x0,0x10(%rax) : ****************************************************************************/ : : DropTableSpaceStmt: DROP TABLESPACE name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $3; 0.00 : 523a9e: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name 0.00 : 523aa2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523aa9: e9 d2 de fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : OptTableSpaceOwner: OWNER name { $$ = $2; } : | /*EMPTY */ { $$ = NULL; } 0.00 : 523aae: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523ab1: e9 ca de fe ff jmpq 511980 : n->options = $7; : $$ = (Node *) n; : } : ; : : OptTableSpaceOwner: OWNER name { $$ = $2; } 0.00 : 523ab6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523abd: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY */ { $$ = NULL; } 0.00 : 523ac0: e9 bb de fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateTableSpaceStmt: CREATE TABLESPACE name OptTableSpaceOwner LOCATION Sconst opt_reloptions : { : CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); 0.00 : 523ac5: 48 8b 3d 94 6d 69 00 mov 0x696d94(%rip),%rdi # bba860 0.00 : 523acc: be 28 00 00 00 mov $0x28,%esi 0.00 : 523ad1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ad8: e8 33 53 27 00 callq 798e10 0.00 : 523add: c7 00 ff 02 00 00 movl $0x2ff,(%rax) : n->tablespacename = $3; 0.00 : 523ae3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->owner = $4; : n->location = $6; : n->options = $7; : $$ = (Node *) n; 0.00 : 523aea: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateTableSpaceStmt: CREATE TABLESPACE name OptTableSpaceOwner LOCATION Sconst opt_reloptions : { : CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); : n->tablespacename = $3; 0.00 : 523aed: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 523af1: 48 89 50 08 mov %rdx,0x8(%rax) : n->owner = $4; 0.00 : 523af5: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 523af9: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = $6; 0.00 : 523afd: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 523b01: 48 89 50 18 mov %rdx,0x18(%rax) : n->options = $7; 0.00 : 523b05: 48 8b 11 mov (%rcx),%rdx 0.00 : 523b08: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 523b0c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523b13: e9 68 de fe ff jmpq 511980 : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523b18: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523b1f: 48 8b 3b mov (%rbx),%rdi 0.00 : 523b22: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523b29: e8 22 54 27 00 callq 798f50 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 523b2e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523b35: 49 89 c6 mov %rax,%r14 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 523b38: e9 43 de fe ff jmpq 511980 0.00 : 523b3d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 523b44: 48 8b 3e mov (%rsi),%rdi 0.00 : 523b47: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523b4e: e8 fd 53 27 00 callq 798f50 : ; 0.00 : 523b53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 523b5a: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523b5d: e9 1e de fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523b62: 48 8b 3d f7 6c 69 00 mov 0x696cf7(%rip),%rdi # bba860 0.00 : 523b69: be 28 00 00 00 mov $0x28,%esi 0.00 : 523b6e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523b75: e8 96 52 27 00 callq 798e10 0.00 : 523b7a: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_LANGUAGE; 0.00 : 523b80: c7 40 18 10 00 00 00 movl $0x10,0x18(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523b87: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($6))); 0.00 : 523b8a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 523b91: 49 89 de mov %rbx,%r14 : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($6))); 0.00 : 523b94: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 523b98: e8 53 bb 0d 00 callq 5ff6f0 0.00 : 523b9d: 31 f6 xor %esi,%esi 0.00 : 523b9f: 48 89 c7 mov %rax,%rdi 0.00 : 523ba2: e8 a9 dc 0b 00 callq 5e1850 0.00 : 523ba7: 31 f6 xor %esi,%esi 0.00 : 523ba9: 48 89 c7 mov %rax,%rdi 0.00 : 523bac: e8 9f dc 0b 00 callq 5e1850 0.00 : 523bb1: 48 89 43 08 mov %rax,0x8(%rbx) : n->behavior = $7; 0.00 : 523bb5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 523bbc: 8b 06 mov (%rsi),%eax : n->missing_ok = true; 0.00 : 523bbe: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 523bc2: c6 43 21 00 movb $0x0,0x21(%rbx) : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($6))); : n->behavior = $7; 0.00 : 523bc6: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 523bc9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523bd0: e9 ab dd fe ff jmpq 511980 : ; : : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523bd5: 48 8b 3d 84 6c 69 00 mov 0x696c84(%rip),%rdi # bba860 0.00 : 523bdc: be 28 00 00 00 mov $0x28,%esi 0.00 : 523be1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523be8: e8 23 52 27 00 callq 798e10 0.00 : 523bed: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_LANGUAGE; 0.00 : 523bf3: c7 40 18 10 00 00 00 movl $0x10,0x18(%rax) : ; : : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523bfa: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); 0.00 : 523bfd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 523c04: 49 89 de mov %rbx,%r14 : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); 0.00 : 523c07: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 523c0b: e8 e0 ba 0d 00 callq 5ff6f0 0.00 : 523c10: 31 f6 xor %esi,%esi 0.00 : 523c12: 48 89 c7 mov %rax,%rdi 0.00 : 523c15: e8 36 dc 0b 00 callq 5e1850 0.00 : 523c1a: 31 f6 xor %esi,%esi 0.00 : 523c1c: 48 89 c7 mov %rax,%rdi 0.00 : 523c1f: e8 2c dc 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 523c24: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 523c2b: 00 : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); 0.00 : 523c2c: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $5; 0.00 : 523c30: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523c37: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 523c39: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 523c3d: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); : n->arguments = NIL; : n->behavior = $5; 0.00 : 523c41: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior 0.00 : 523c44: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523c4b: e9 30 dd fe ff jmpq 511980 : | NO VALIDATOR { $$ = NIL; } : ; : : opt_validator: : validator_clause { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c50: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523c53: e9 28 dd fe ff jmpq 511980 : VALIDATOR handler_name { $$ = $2; } : | NO VALIDATOR { $$ = NIL; } : ; : : opt_validator: : validator_clause { $$ = $1; } 0.00 : 523c58: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523c5f: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c62: e9 19 dd fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : validator_clause: : VALIDATOR handler_name { $$ = $2; } : | NO VALIDATOR { $$ = NIL; } 0.00 : 523c67: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523c6a: e9 11 dd fe ff jmpq 511980 : INLINE_P handler_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : validator_clause: : VALIDATOR handler_name { $$ = $2; } 0.00 : 523c6f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523c76: 4c 8b 31 mov (%rcx),%r14 : | NO VALIDATOR { $$ = NIL; } 0.00 : 523c79: e9 02 dd fe ff jmpq 511980 : | name attrs { $$ = lcons(makeString($1), $2); } : ; : : opt_inline_handler: : INLINE_P handler_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c7e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523c81: e9 fa dc fe ff jmpq 511980 : name { $$ = list_make1(makeString($1)); } : | name attrs { $$ = lcons(makeString($1), $2); } : ; : : opt_inline_handler: : INLINE_P handler_name { $$ = $2; } 0.00 : 523c86: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523c8d: 4c 8b 32 mov (%rdx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c90: e9 eb dc fe ff jmpq 511980 : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523c95: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523c9c: 48 8b 18 mov (%rax),%rbx 0.00 : 523c9f: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 523ca3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523caa: e8 41 ba 0d 00 callq 5ff6f0 0.00 : 523caf: 48 89 de mov %rbx,%rsi 0.00 : 523cb2: 48 89 c7 mov %rax,%rdi 0.00 : 523cb5: e8 96 db 0b 00 callq 5e1850 : ; 0.00 : 523cba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523cc1: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523cc4: e9 b7 dc fe ff jmpq 511980 : /* This ought to be just func_name, but that causes reduce/reduce conflicts : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } 0.00 : 523cc9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 523cd0: 48 8b 3e mov (%rsi),%rdi 0.00 : 523cd3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523cda: e8 11 ba 0d 00 callq 5ff6f0 0.00 : 523cdf: 31 f6 xor %esi,%esi 0.00 : 523ce1: 48 89 c7 mov %rax,%rdi 0.00 : 523ce4: e8 67 db 0b 00 callq 5e1850 : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523ce9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* This ought to be just func_name, but that causes reduce/reduce conflicts : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } 0.00 : 523cf0: 49 89 c6 mov %rax,%r14 : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523cf3: e9 88 dc fe ff jmpq 511980 : } : ; : : opt_trusted: : TRUSTED { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 523cf8: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 523cfb: e9 80 dc fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_trusted: : TRUSTED { $$ = TRUE; } 0.00 : 523d00: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 523d03: e9 78 dc fe ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : HANDLER handler_name opt_inline_handler opt_validator : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); 0.00 : 523d08: 48 8b 3d 51 6b 69 00 mov 0x696b51(%rip),%rdi # bba860 0.00 : 523d0f: be 30 00 00 00 mov $0x30,%esi 0.00 : 523d14: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523d1b: e8 f0 50 27 00 callq 798e10 0.00 : 523d20: c7 00 ea 02 00 00 movl $0x2ea,(%rax) : n->replace = $2; 0.00 : 523d26: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->plname = $6; : n->plhandler = $8; : n->plinline = $9; : n->plvalidator = $10; : n->pltrusted = $3; : $$ = (Node *)n; 0.00 : 523d2d: 49 89 c6 mov %rax,%r14 : } : | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : HANDLER handler_name opt_inline_handler opt_validator : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); : n->replace = $2; 0.00 : 523d30: 0f b6 53 c0 movzbl -0x40(%rbx),%edx 0.00 : 523d34: 88 50 04 mov %dl,0x4(%rax) : n->plname = $6; 0.00 : 523d37: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 523d3b: 48 89 50 08 mov %rdx,0x8(%rax) : n->plhandler = $8; 0.00 : 523d3f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 523d43: 48 89 50 10 mov %rdx,0x10(%rax) : n->plinline = $9; 0.00 : 523d47: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 523d4b: 48 89 50 18 mov %rdx,0x18(%rax) : n->plvalidator = $10; 0.00 : 523d4f: 48 8b 13 mov (%rbx),%rdx 0.00 : 523d52: 48 89 50 20 mov %rdx,0x20(%rax) : n->pltrusted = $3; 0.00 : 523d56: 0f b6 53 c8 movzbl -0x38(%rbx),%edx 0.00 : 523d5a: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 523d5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523d64: e9 17 dc fe ff jmpq 511980 : *****************************************************************************/ : : CreatePLangStmt: : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); 0.00 : 523d69: 48 8b 3d f0 6a 69 00 mov 0x696af0(%rip),%rdi # bba860 0.00 : 523d70: be 30 00 00 00 mov $0x30,%esi 0.00 : 523d75: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523d7c: e8 8f 50 27 00 callq 798e10 0.00 : 523d81: c7 00 ea 02 00 00 movl $0x2ea,(%rax) : n->replace = $2; 0.00 : 523d87: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : /* parameters are all to be supplied by system */ : n->plhandler = NIL; : n->plinline = NIL; : n->plvalidator = NIL; : n->pltrusted = false; : $$ = (Node *)n; 0.00 : 523d8e: 49 89 c6 mov %rax,%r14 : : CreatePLangStmt: : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); : n->replace = $2; 0.00 : 523d91: 0f b6 51 e0 movzbl -0x20(%rcx),%edx 0.00 : 523d95: 88 50 04 mov %dl,0x4(%rax) : n->plname = $6; 0.00 : 523d98: 48 8b 11 mov (%rcx),%rdx : /* parameters are all to be supplied by system */ : n->plhandler = NIL; 0.00 : 523d9b: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 523da2: 00 : n->plinline = NIL; 0.00 : 523da3: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 523daa: 00 : n->plvalidator = NIL; 0.00 : 523dab: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 523db2: 00 : n->pltrusted = false; 0.00 : 523db3: c6 40 28 00 movb $0x0,0x28(%rax) : CreatePLangStmt: : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); : n->replace = $2; : n->plname = $6; 0.00 : 523db7: 48 89 50 08 mov %rdx,0x8(%rax) : n->plinline = NIL; : n->plvalidator = NIL; : n->pltrusted = false; : $$ = (Node *)n; : } : | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst 0.00 : 523dbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523dc2: e9 b9 db fe ff jmpq 511980 : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523dc7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523dce: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 523dd2: 48 8b 32 mov (%rdx),%rsi 0.00 : 523dd5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ddc: e8 9f e0 0b 00 callq 5e1e80 : ; 0.00 : 523de1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523de8: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523deb: e9 90 db fe ff jmpq 511980 : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } 0.00 : 523df0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523df7: 31 f6 xor %esi,%esi 0.00 : 523df9: 48 8b 38 mov (%rax),%rdi 0.00 : 523dfc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e03: e8 48 da 0b 00 callq 5e1850 : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523e08: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } 0.00 : 523e0f: 49 89 c6 mov %rax,%r14 : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523e12: e9 69 db fe ff jmpq 511980 : | '-' FCONST : { : $$ = makeFloat($2); : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } 0.00 : 523e17: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523e1e: 48 63 3b movslq (%rbx),%rdi 0.00 : 523e21: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e28: e8 23 b9 0d 00 callq 5ff750 : ; 0.00 : 523e2d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '-' FCONST : { : $$ = makeFloat($2); : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } 0.00 : 523e34: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523e37: e9 44 db fe ff jmpq 511980 : : NumericOnly: : FCONST { $$ = makeFloat($1); } : | '-' FCONST : { : $$ = makeFloat($2); 0.00 : 523e3c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523e43: 48 8b 39 mov (%rcx),%rdi 0.00 : 523e46: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e4d: e8 ce b8 0d 00 callq 5ff720 : } : : static void : doNegateFloat(Value *v) : { : char *oldval = v->val.str; 0.00 : 523e52: 48 8b 70 08 mov 0x8(%rax),%rsi : : NumericOnly: : FCONST { $$ = makeFloat($1); } : | '-' FCONST : { : $$ = makeFloat($2); 0.00 : 523e56: 49 89 c6 mov %rax,%r14 : { : char *oldval = v->val.str; : : Assert(IsA(v, Float)); : if (*oldval == '+') : oldval++; 0.00 : 523e59: 31 c0 xor %eax,%eax : if (*oldval == '-') 0.00 : 523e5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : char *oldval = v->val.str; : : Assert(IsA(v, Float)); : if (*oldval == '+') : oldval++; 0.00 : 523e62: 80 3e 2b cmpb $0x2b,(%rsi) 0.00 : 523e65: 0f 94 c0 sete %al 0.00 : 523e68: 48 01 c6 add %rax,%rsi : if (*oldval == '-') 0.00 : 523e6b: 80 3e 2d cmpb $0x2d,(%rsi) 0.00 : 523e6e: 0f 85 c3 53 00 00 jne 529237 : v->val.str = oldval+1; /* just strip the '-' */ 0.00 : 523e74: 48 8d 46 01 lea 0x1(%rsi),%rax 0.00 : 523e78: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 523e7c: e9 ff da fe ff jmpq 511980 : opt_by: BY {} : | /* empty */ {} : ; : : NumericOnly: : FCONST { $$ = makeFloat($1); } 0.00 : 523e81: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523e88: 48 8b 3a mov (%rdx),%rdi 0.00 : 523e8b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e92: e8 89 b8 0d 00 callq 5ff720 : | '-' FCONST 0.00 : 523e97: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_by: BY {} : | /* empty */ {} : ; : : NumericOnly: : FCONST { $$ = makeFloat($1); } 0.00 : 523e9e: 49 89 c6 mov %rax,%r14 : | '-' FCONST 0.00 : 523ea1: e9 da da fe ff jmpq 511980 : { : $$ = makeDefElem("restart", NULL); : } : | RESTART opt_with NumericOnly : { : $$ = makeDefElem("restart", (Node *)$3); 0.00 : 523ea6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523ead: bf 13 96 7c 00 mov $0x7c9613,%edi 0.00 : 523eb2: 48 8b 30 mov (%rax),%rsi 0.00 : 523eb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ebc: e8 3f d6 0c 00 callq 5f1500 : } : ; 0.00 : 523ec1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("restart", NULL); : } : | RESTART opt_with NumericOnly : { : $$ = makeDefElem("restart", (Node *)$3); 0.00 : 523ec8: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 523ecb: e9 b0 da fe ff jmpq 511980 : { : $$ = makeDefElem("start", (Node *)$3); : } : | RESTART : { : $$ = makeDefElem("restart", NULL); 0.00 : 523ed0: 31 f6 xor %esi,%esi 0.00 : 523ed2: bf 13 96 7c 00 mov $0x7c9613,%edi 0.00 : 523ed7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ede: e8 1d d6 0c 00 callq 5f1500 : } : | RESTART opt_with NumericOnly 0.00 : 523ee3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("start", (Node *)$3); : } : | RESTART : { : $$ = makeDefElem("restart", NULL); 0.00 : 523eea: 49 89 c6 mov %rax,%r14 : } : | RESTART opt_with NumericOnly 0.00 : 523eed: e9 8e da fe ff jmpq 511980 : { : $$ = makeDefElem("owned_by", (Node *)$3); : } : | START opt_with NumericOnly : { : $$ = makeDefElem("start", (Node *)$3); 0.00 : 523ef2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523ef9: bf e7 b1 87 00 mov $0x87b1e7,%edi 0.00 : 523efe: 48 8b 33 mov (%rbx),%rsi 0.00 : 523f01: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f08: e8 f3 d5 0c 00 callq 5f1500 : } : | RESTART 0.00 : 523f0d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("owned_by", (Node *)$3); : } : | START opt_with NumericOnly : { : $$ = makeDefElem("start", (Node *)$3); 0.00 : 523f14: 49 89 c6 mov %rax,%r14 : } : | RESTART 0.00 : 523f17: e9 64 da fe ff jmpq 511980 : { : $$ = makeDefElem("minvalue", NULL); : } : | OWNED BY any_name : { : $$ = makeDefElem("owned_by", (Node *)$3); 0.00 : 523f1c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523f23: bf 0a 96 7c 00 mov $0x7c960a,%edi 0.00 : 523f28: 48 8b 31 mov (%rcx),%rsi 0.00 : 523f2b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f32: e8 c9 d5 0c 00 callq 5f1500 : } : | START opt_with NumericOnly 0.00 : 523f37: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("minvalue", NULL); : } : | OWNED BY any_name : { : $$ = makeDefElem("owned_by", (Node *)$3); 0.00 : 523f3e: 49 89 c6 mov %rax,%r14 : } : | START opt_with NumericOnly 0.00 : 523f41: e9 3a da fe ff jmpq 511980 : ; : : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } 0.00 : 523f46: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523f4d: 4c 8b 30 mov (%rax),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 523f50: e9 2b da fe ff jmpq 511980 0.00 : 523f55: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523f5c: 48 8b 3a mov (%rdx),%rdi 0.00 : 523f5f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f66: e8 e5 4f 27 00 callq 798f50 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523f6b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 523f72: 49 89 c6 mov %rax,%r14 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523f75: e9 06 da fe ff jmpq 511980 : { : $$ = makeDefElem("maxvalue", NULL); : } : | NO MINVALUE : { : $$ = makeDefElem("minvalue", NULL); 0.00 : 523f7a: 31 f6 xor %esi,%esi 0.00 : 523f7c: bf 01 96 7c 00 mov $0x7c9601,%edi 0.00 : 523f81: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f88: e8 73 d5 0c 00 callq 5f1500 : } : | OWNED BY any_name 0.00 : 523f8d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("maxvalue", NULL); : } : | NO MINVALUE : { : $$ = makeDefElem("minvalue", NULL); 0.00 : 523f94: 49 89 c6 mov %rax,%r14 : } : | OWNED BY any_name 0.00 : 523f97: e9 e4 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("minvalue", (Node *)$2); : } : | NO MAXVALUE : { : $$ = makeDefElem("maxvalue", NULL); 0.00 : 523f9c: 31 f6 xor %esi,%esi 0.00 : 523f9e: bf f8 95 7c 00 mov $0x7c95f8,%edi 0.00 : 523fa3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523faa: e8 51 d5 0c 00 callq 5f1500 : } : | NO MINVALUE 0.00 : 523faf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("minvalue", (Node *)$2); : } : | NO MAXVALUE : { : $$ = makeDefElem("maxvalue", NULL); 0.00 : 523fb6: 49 89 c6 mov %rax,%r14 : } : | NO MINVALUE 0.00 : 523fb9: e9 c2 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("maxvalue", (Node *)$2); : } : | MINVALUE NumericOnly : { : $$ = makeDefElem("minvalue", (Node *)$2); 0.00 : 523fbe: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523fc5: bf 01 96 7c 00 mov $0x7c9601,%edi 0.00 : 523fca: 48 8b 32 mov (%rdx),%rsi 0.00 : 523fcd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523fd4: e8 27 d5 0c 00 callq 5f1500 : } : | NO MAXVALUE 0.00 : 523fd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("maxvalue", (Node *)$2); : } : | MINVALUE NumericOnly : { : $$ = makeDefElem("minvalue", (Node *)$2); 0.00 : 523fe0: 49 89 c6 mov %rax,%r14 : } : | NO MAXVALUE 0.00 : 523fe3: e9 98 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("increment", (Node *)$3); : } : | MAXVALUE NumericOnly : { : $$ = makeDefElem("maxvalue", (Node *)$2); 0.00 : 523fe8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523fef: bf f8 95 7c 00 mov $0x7c95f8,%edi 0.00 : 523ff4: 48 8b 30 mov (%rax),%rsi 0.00 : 523ff7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ffe: e8 fd d4 0c 00 callq 5f1500 : } : | MINVALUE NumericOnly 0.00 : 524003: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("increment", (Node *)$3); : } : | MAXVALUE NumericOnly : { : $$ = makeDefElem("maxvalue", (Node *)$2); 0.00 : 52400a: 49 89 c6 mov %rax,%r14 : } : | MINVALUE NumericOnly 0.00 : 52400d: e9 6e d9 fe ff jmpq 511980 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); : } : | INCREMENT opt_by NumericOnly : { : $$ = makeDefElem("increment", (Node *)$3); 0.00 : 524012: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524019: bf ee 95 7c 00 mov $0x7c95ee,%edi 0.00 : 52401e: 48 8b 33 mov (%rbx),%rsi 0.00 : 524021: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524028: e8 d3 d4 0c 00 callq 5f1500 : } : | MAXVALUE NumericOnly 0.00 : 52402d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); : } : | INCREMENT opt_by NumericOnly : { : $$ = makeDefElem("increment", (Node *)$3); 0.00 : 524034: 49 89 c6 mov %rax,%r14 : } : | MAXVALUE NumericOnly 0.00 : 524037: e9 44 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); : } : | NO CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); 0.00 : 52403c: 31 ff xor %edi,%edi 0.00 : 52403e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524045: e8 06 b7 0d 00 callq 5ff750 0.00 : 52404a: bf e8 95 7c 00 mov $0x7c95e8,%edi 0.00 : 52404f: 48 89 c6 mov %rax,%rsi 0.00 : 524052: e8 a9 d4 0c 00 callq 5f1500 : } : | INCREMENT opt_by NumericOnly 0.00 : 524057: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); : } : | NO CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); 0.00 : 52405e: 49 89 c6 mov %rax,%r14 : } : | INCREMENT opt_by NumericOnly 0.00 : 524061: e9 1a d9 fe ff jmpq 511980 : { : $$ = makeDefElem("cache", (Node *)$2); : } : | CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); 0.00 : 524066: bf 01 00 00 00 mov $0x1,%edi 0.00 : 52406b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524072: e8 d9 b6 0d 00 callq 5ff750 0.00 : 524077: bf e8 95 7c 00 mov $0x7c95e8,%edi 0.00 : 52407c: 48 89 c6 mov %rax,%rsi 0.00 : 52407f: e8 7c d4 0c 00 callq 5f1500 : } : | NO CYCLE 0.00 : 524084: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cache", (Node *)$2); : } : | CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); 0.00 : 52408b: 49 89 c6 mov %rax,%r14 : } : | NO CYCLE 0.00 : 52408e: e9 ed d8 fe ff jmpq 511980 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } : ; : : SeqOptElem: CACHE NumericOnly : { : $$ = makeDefElem("cache", (Node *)$2); 0.00 : 524093: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52409a: bf 6c 28 8d 00 mov $0x8d286c,%edi 0.00 : 52409f: 48 8b 31 mov (%rcx),%rsi 0.00 : 5240a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5240a9: e8 52 d4 0c 00 callq 5f1500 : } : | CYCLE 0.00 : 5240ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } : ; : : SeqOptElem: CACHE NumericOnly : { : $$ = makeDefElem("cache", (Node *)$2); 0.00 : 5240b5: 49 89 c6 mov %rax,%r14 : } : | CYCLE 0.00 : 5240b8: e9 c3 d8 fe ff jmpq 511980 : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 5240bd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5240c4: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5240c8: 48 8b 32 mov (%rdx),%rsi 0.00 : 5240cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5240d2: e8 a9 dd 0b 00 callq 5e1e80 : ; 0.00 : 5240d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 5240de: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5240e1: e9 9a d8 fe ff jmpq 511980 : : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } 0.00 : 5240e6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5240ed: 31 f6 xor %esi,%esi 0.00 : 5240ef: 48 8b 38 mov (%rax),%rdi 0.00 : 5240f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5240f9: e8 52 d7 0b 00 callq 5e1850 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 5240fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } 0.00 : 524105: 49 89 c6 mov %rax,%r14 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 524108: e9 73 d8 fe ff jmpq 511980 : } : : ; : : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52410d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524110: e9 6b d8 fe ff jmpq 511980 : $$ = (Node *)n; : } : : ; : : OptSeqOptList: SeqOptList { $$ = $1; } 0.00 : 524115: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52411c: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52411f: e9 5c d8 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); 0.00 : 524124: 48 8b 3d 35 67 69 00 mov 0x696735(%rip),%rdi # bba860 0.00 : 52412b: be 20 00 00 00 mov $0x20,%esi 0.00 : 524130: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524137: e8 d4 4c 27 00 callq 798e10 0.00 : 52413c: c7 00 e5 02 00 00 movl $0x2e5,(%rax) : n->sequence = $5; 0.00 : 524142: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $6; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 524149: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $5; 0.00 : 52414c: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 524150: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $6; 0.00 : 524154: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 524157: c6 40 18 01 movb $0x1,0x18(%rax) : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $5; : n->options = $6; 0.00 : 52415b: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : 0.00 : 52415f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524166: e9 15 d8 fe ff jmpq 511980 : ; : : AlterSeqStmt: : ALTER SEQUENCE qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); 0.00 : 52416b: 48 8b 3d ee 66 69 00 mov 0x6966ee(%rip),%rdi # bba860 0.00 : 524172: be 20 00 00 00 mov $0x20,%esi 0.00 : 524177: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52417e: e8 8d 4c 27 00 callq 798e10 0.00 : 524183: c7 00 e5 02 00 00 movl $0x2e5,(%rax) : n->sequence = $3; 0.00 : 524189: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $4; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 524190: 49 89 c6 mov %rax,%r14 : : AlterSeqStmt: : ALTER SEQUENCE qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $3; 0.00 : 524193: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 524197: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $4; 0.00 : 52419b: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 52419e: c6 40 18 00 movb $0x0,0x18(%rax) : AlterSeqStmt: : ALTER SEQUENCE qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $3; : n->options = $4; 0.00 : 5241a2: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList 0.00 : 5241a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5241ad: e9 ce d7 fe ff jmpq 511980 : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); 0.00 : 5241b2: 48 8b 3d a7 66 69 00 mov 0x6966a7(%rip),%rdi # bba860 0.00 : 5241b9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5241be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5241c5: e8 46 4c 27 00 callq 798e10 0.00 : 5241ca: c7 00 e4 02 00 00 movl $0x2e4,(%rax) : $7->relpersistence = $2; 0.00 : 5241d0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->sequence = $7; : n->options = $8; : n->ownerId = InvalidOid; : n->if_not_exists = true; : $$ = (Node *)n; 0.00 : 5241d7: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $7->relpersistence = $2; 0.00 : 5241da: 8b 56 d0 mov -0x30(%rsi),%edx 0.00 : 5241dd: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 5241e1: 88 51 24 mov %dl,0x24(%rcx) : n->sequence = $7; 0.00 : 5241e4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5241e8: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $8; 0.00 : 5241ec: 48 8b 16 mov (%rsi),%rdx : n->ownerId = InvalidOid; 0.00 : 5241ef: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->if_not_exists = true; 0.00 : 5241f6: c6 40 1c 01 movb $0x1,0x1c(%rax) : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $7->relpersistence = $2; : n->sequence = $7; : n->options = $8; 0.00 : 5241fa: 48 89 50 10 mov %rdx,0x10(%rax) : n->ownerId = InvalidOid; : n->if_not_exists = true; : $$ = (Node *)n; : } : ; 0.00 : 5241fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524205: e9 76 d7 fe ff jmpq 511980 : *****************************************************************************/ : : CreateSeqStmt: : CREATE OptTemp SEQUENCE qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); 0.00 : 52420a: 48 8b 3d 4f 66 69 00 mov 0x69664f(%rip),%rdi # bba860 0.00 : 524211: be 20 00 00 00 mov $0x20,%esi 0.00 : 524216: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52421d: e8 ee 4b 27 00 callq 798e10 0.00 : 524222: c7 00 e4 02 00 00 movl $0x2e4,(%rax) : $4->relpersistence = $2; 0.00 : 524228: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->sequence = $4; : n->options = $5; : n->ownerId = InvalidOid; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 52422f: 49 89 c6 mov %rax,%r14 : : CreateSeqStmt: : CREATE OptTemp SEQUENCE qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $4->relpersistence = $2; 0.00 : 524232: 8b 53 e8 mov -0x18(%rbx),%edx 0.00 : 524235: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 524239: 88 51 24 mov %dl,0x24(%rcx) : n->sequence = $4; 0.00 : 52423c: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 524240: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 524244: 48 8b 13 mov (%rbx),%rdx : n->ownerId = InvalidOid; 0.00 : 524247: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->if_not_exists = false; 0.00 : 52424e: c6 40 1c 00 movb $0x0,0x1c(%rax) : CREATE OptTemp SEQUENCE qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $4->relpersistence = $2; : n->sequence = $4; : n->options = $5; 0.00 : 524252: 48 89 50 10 mov %rdx,0x10(%rax) : n->ownerId = InvalidOid; : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList 0.00 : 524256: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52425d: e9 1e d7 fe ff jmpq 511980 : *****************************************************************************/ : : RefreshMatViewStmt: : REFRESH MATERIALIZED VIEW opt_concurrently qualified_name opt_with_data : { : RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); 0.00 : 524262: 48 8b 3d f7 65 69 00 mov 0x6965f7(%rip),%rdi # bba860 0.00 : 524269: be 10 00 00 00 mov $0x10,%esi 0.00 : 52426e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524275: e8 96 4b 27 00 callq 798e10 0.00 : 52427a: c7 00 1c 03 00 00 movl $0x31c,(%rax) : n->concurrent = $4; 0.00 : 524280: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->relation = $5; : n->skipData = !($6); : $$ = (Node *) n; 0.00 : 524287: 49 89 c6 mov %rax,%r14 : : RefreshMatViewStmt: : REFRESH MATERIALIZED VIEW opt_concurrently qualified_name opt_with_data : { : RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); : n->concurrent = $4; 0.00 : 52428a: 0f b6 51 f0 movzbl -0x10(%rcx),%edx 0.00 : 52428e: 88 50 04 mov %dl,0x4(%rax) : n->relation = $5; 0.00 : 524291: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 524295: 48 89 50 08 mov %rdx,0x8(%rax) : n->skipData = !($6); 0.00 : 524299: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 52429c: 0f 94 40 05 sete 0x5(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5242a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5242a7: e9 d4 d6 fe ff jmpq 511980 : $$->skipData = false; /* might get changed later */ : } : ; : : OptNoLog: UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 5242ac: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5242b3: ff ff ff 0.00 : 5242b6: 49 21 d6 and %rdx,%r14 0.00 : 5242b9: 49 83 ce 70 or $0x70,%r14 : ; 0.00 : 5242bd: e9 be d6 fe ff jmpq 511980 : $$->viewQuery = NULL; /* filled at analysis time */ : $$->skipData = false; /* might get changed later */ : } : ; : : OptNoLog: UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } 0.00 : 5242c2: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5242c9: ff ff ff 0.00 : 5242cc: 49 21 c6 and %rax,%r14 0.00 : 5242cf: 49 83 ce 75 or $0x75,%r14 : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 5242d3: e9 a8 d6 fe ff jmpq 511980 : ; : : create_mv_target: : qualified_name opt_column_list opt_reloptions OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5242d8: 48 8b 3d 81 65 69 00 mov 0x696581(%rip),%rdi # bba860 0.00 : 5242df: be 40 00 00 00 mov $0x40,%esi 0.00 : 5242e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5242eb: e8 20 4b 27 00 callq 798e10 0.00 : 5242f0: c7 00 59 01 00 00 movl $0x159,(%rax) : $$->rel = $1; 0.00 : 5242f6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : ; : : create_mv_target: : qualified_name opt_column_list opt_reloptions OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5242fd: 49 89 c6 mov %rax,%r14 : $$->rel = $1; 0.00 : 524300: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 524304: 49 89 46 08 mov %rax,0x8(%r14) : $$->colNames = $2; 0.00 : 524308: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 52430c: 49 89 46 10 mov %rax,0x10(%r14) : $$->options = $3; 0.00 : 524310: 48 8b 46 f8 mov -0x8(%rsi),%rax : $$->onCommit = ONCOMMIT_NOOP; 0.00 : 524314: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 52431b: 00 : qualified_name opt_column_list opt_reloptions OptTableSpace : { : $$ = makeNode(IntoClause); : $$->rel = $1; : $$->colNames = $2; : $$->options = $3; 0.00 : 52431c: 49 89 46 18 mov %rax,0x18(%r14) : $$->onCommit = ONCOMMIT_NOOP; : $$->tableSpaceName = $4; 0.00 : 524320: 48 8b 06 mov (%rsi),%rax : $$->viewQuery = NULL; /* filled at analysis time */ 0.00 : 524323: 49 c7 46 30 00 00 00 movq $0x0,0x30(%r14) 0.00 : 52432a: 00 : $$->skipData = false; /* might get changed later */ 0.00 : 52432b: 41 c6 46 38 00 movb $0x0,0x38(%r14) : $$ = makeNode(IntoClause); : $$->rel = $1; : $$->colNames = $2; : $$->options = $3; : $$->onCommit = ONCOMMIT_NOOP; : $$->tableSpaceName = $4; 0.00 : 524330: 49 89 46 28 mov %rax,0x28(%r14) : $$->viewQuery = NULL; /* filled at analysis time */ : $$->skipData = false; /* might get changed later */ : } : ; 0.00 : 524334: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52433b: e9 40 d6 fe ff jmpq 511980 : *****************************************************************************/ : : CreateMatViewStmt: : CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 524340: 48 8b 3d 19 65 69 00 mov 0x696519(%rip),%rdi # bba860 0.00 : 524347: be 20 00 00 00 mov $0x20,%esi 0.00 : 52434c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524353: e8 b8 4a 27 00 callq 798e10 0.00 : 524358: c7 00 e3 02 00 00 movl $0x2e3,(%rax) : ctas->query = $7; 0.00 : 52435e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ctas->relkind = OBJECT_MATVIEW; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $5->rel->relpersistence = $2; : $5->skipData = !($8); : $$ = (Node *) ctas; 0.00 : 524365: 49 89 c6 mov %rax,%r14 : : CreateMatViewStmt: : CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $7; 0.00 : 524368: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52436c: 48 89 50 08 mov %rdx,0x8(%rax) : ctas->into = $5; 0.00 : 524370: 48 8b 51 e8 mov -0x18(%rcx),%rdx : ctas->relkind = OBJECT_MATVIEW; 0.00 : 524374: c7 40 18 12 00 00 00 movl $0x12,0x18(%rax) : ctas->is_select_into = false; 0.00 : 52437b: c6 40 1c 00 movb $0x0,0x1c(%rax) : CreateMatViewStmt: : CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $7; : ctas->into = $5; 0.00 : 52437f: 48 89 50 10 mov %rdx,0x10(%rax) : ctas->relkind = OBJECT_MATVIEW; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $5->rel->relpersistence = $2; 0.00 : 524383: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52438a: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52438e: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 524392: 8b 53 d0 mov -0x30(%rbx),%edx 0.00 : 524395: 88 51 24 mov %dl,0x24(%rcx) : $5->skipData = !($8); 0.00 : 524398: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 52439b: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52439f: 0f 94 42 38 sete 0x38(%rdx) : $$ = (Node *) ctas; : } : ; 0.00 : 5243a3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5243aa: e9 d1 d5 fe ff jmpq 511980 : ; : : opt_with_data: : WITH DATA_P { $$ = TRUE; } : | WITH NO DATA_P { $$ = FALSE; } : | /*EMPTY*/ { $$ = TRUE; } 0.00 : 5243af: 41 b6 01 mov $0x1,%r14b : ; 0.00 : 5243b2: e9 c9 d5 fe ff jmpq 511980 : } : ; : : opt_with_data: : WITH DATA_P { $$ = TRUE; } : | WITH NO DATA_P { $$ = FALSE; } 0.00 : 5243b7: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = TRUE; } 0.00 : 5243ba: e9 c1 d5 fe ff jmpq 511980 : $$->skipData = false; /* might get changed later */ : } : ; : : opt_with_data: : WITH DATA_P { $$ = TRUE; } 0.00 : 5243bf: 41 b6 01 mov $0x1,%r14b : | WITH NO DATA_P { $$ = FALSE; } 0.00 : 5243c2: e9 b9 d5 fe ff jmpq 511980 : ; : : create_as_target: : qualified_name opt_column_list OptWith OnCommitOption OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5243c7: 48 8b 3d 92 64 69 00 mov 0x696492(%rip),%rdi # bba860 0.00 : 5243ce: be 40 00 00 00 mov $0x40,%esi 0.00 : 5243d3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5243da: e8 31 4a 27 00 callq 798e10 0.00 : 5243df: c7 00 59 01 00 00 movl $0x159,(%rax) : $$->rel = $1; 0.00 : 5243e5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : ; : : create_as_target: : qualified_name opt_column_list OptWith OnCommitOption OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5243ec: 49 89 c6 mov %rax,%r14 : $$->rel = $1; 0.00 : 5243ef: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5243f3: 49 89 46 08 mov %rax,0x8(%r14) : $$->colNames = $2; 0.00 : 5243f7: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5243fb: 49 89 46 10 mov %rax,0x10(%r14) : $$->options = $3; 0.00 : 5243ff: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 524403: 49 89 46 18 mov %rax,0x18(%r14) : $$->onCommit = $4; 0.00 : 524407: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 52440a: 41 89 46 20 mov %eax,0x20(%r14) : $$->tableSpaceName = $5; 0.00 : 52440e: 48 8b 06 mov (%rsi),%rax : $$->viewQuery = NULL; 0.00 : 524411: 49 c7 46 30 00 00 00 movq $0x0,0x30(%r14) 0.00 : 524418: 00 : $$->skipData = false; /* might get changed later */ 0.00 : 524419: 41 c6 46 38 00 movb $0x0,0x38(%r14) : $$ = makeNode(IntoClause); : $$->rel = $1; : $$->colNames = $2; : $$->options = $3; : $$->onCommit = $4; : $$->tableSpaceName = $5; 0.00 : 52441e: 49 89 46 28 mov %rax,0x28(%r14) : $$->viewQuery = NULL; : $$->skipData = false; /* might get changed later */ : } : ; 0.00 : 524422: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524429: e9 52 d5 fe ff jmpq 511980 : *****************************************************************************/ : : CreateAsStmt: : CREATE OptTemp TABLE create_as_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 52442e: 48 8b 3d 2b 64 69 00 mov 0x69642b(%rip),%rdi # bba860 0.00 : 524435: be 20 00 00 00 mov $0x20,%esi 0.00 : 52443a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524441: e8 ca 49 27 00 callq 798e10 0.00 : 524446: c7 00 e3 02 00 00 movl $0x2e3,(%rax) : ctas->query = $6; 0.00 : 52444c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; : $4->skipData = !($7); : $$ = (Node *) ctas; 0.00 : 524453: 49 89 c6 mov %rax,%r14 : : CreateAsStmt: : CREATE OptTemp TABLE create_as_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $6; 0.00 : 524456: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52445a: 48 89 50 08 mov %rdx,0x8(%rax) : ctas->into = $4; 0.00 : 52445e: 48 8b 51 e8 mov -0x18(%rcx),%rdx : ctas->relkind = OBJECT_TABLE; 0.00 : 524462: c7 40 18 1b 00 00 00 movl $0x1b,0x18(%rax) : ctas->is_select_into = false; 0.00 : 524469: c6 40 1c 00 movb $0x0,0x1c(%rax) : CreateAsStmt: : CREATE OptTemp TABLE create_as_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $6; : ctas->into = $4; 0.00 : 52446d: 48 89 50 10 mov %rdx,0x10(%rax) : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; 0.00 : 524471: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524478: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52447c: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 524480: 8b 53 d8 mov -0x28(%rbx),%edx 0.00 : 524483: 88 51 24 mov %dl,0x24(%rcx) : $4->skipData = !($7); 0.00 : 524486: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 524489: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52448d: 0f 94 42 38 sete 0x38(%rdx) : $$ = (Node *) ctas; : } : ; 0.00 : 524491: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524498: e9 e3 d4 fe ff jmpq 511980 : : OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } : | /*EMPTY*/ { $$ = NULL; } : ; : : ExistingIndex: USING INDEX index_name { $$ = $3; } 0.00 : 52449d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5244a4: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 5244a7: e9 d4 d4 fe ff jmpq 511980 : OptTableSpace: TABLESPACE name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244ac: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5244af: e9 cc d4 fe ff jmpq 511980 : : OptTableSpace: TABLESPACE name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } 0.00 : 5244b4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5244bb: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244be: e9 bd d4 fe ff jmpq 511980 : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } : ; : : OptTableSpace: TABLESPACE name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244c3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5244c6: e9 b5 d4 fe ff jmpq 511980 : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } : ; : : OptTableSpace: TABLESPACE name { $$ = $2; } 0.00 : 5244cb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5244d2: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244d5: e9 a6 d4 fe ff jmpq 511980 : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } 0.00 : 5244da: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5244e1: ff ff ff 0.00 : 5244e4: 49 21 ce and %rcx,%r14 : ; 0.00 : 5244e7: e9 94 d4 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } 0.00 : 5244ec: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5244f3: ff ff ff 0.00 : 5244f6: 49 21 d6 and %rdx,%r14 0.00 : 5244f9: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } 0.00 : 5244fd: e9 7e d4 fe ff jmpq 511980 : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } : | /*EMPTY*/ { $$ = NIL; } : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } 0.00 : 524502: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 524509: ff ff ff 0.00 : 52450c: 49 21 c6 and %rax,%r14 0.00 : 52450f: 49 83 ce 02 or $0x2,%r14 : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } 0.00 : 524513: e9 68 d4 fe ff jmpq 511980 : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } : | /*EMPTY*/ { $$ = NIL; } : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } 0.00 : 524518: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 52451f: ff ff ff 0.00 : 524522: 49 21 f6 and %rsi,%r14 0.00 : 524525: 49 83 ce 03 or $0x3,%r14 : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } 0.00 : 524529: e9 52 d4 fe ff jmpq 511980 : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52452e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524531: e9 4a d4 fe ff jmpq 511980 : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524536: 31 ff xor %edi,%edi 0.00 : 524538: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52453f: e8 dc 9a 03 00 callq 55e020 0.00 : 524544: 31 f6 xor %esi,%esi 0.00 : 524546: 48 89 c7 mov %rax,%rdi 0.00 : 524549: e8 02 d3 0b 00 callq 5e1850 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52454e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524555: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524558: e9 23 d4 fe ff jmpq 511980 : ; : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } 0.00 : 52455d: bf 01 00 00 00 mov $0x1,%edi 0.00 : 524562: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524569: e8 b2 9a 03 00 callq 55e020 0.00 : 52456e: 31 f6 xor %esi,%esi 0.00 : 524570: 48 89 c7 mov %rax,%rdi 0.00 : 524573: e8 d8 d2 0b 00 callq 5e1850 : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524578: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } 0.00 : 52457f: 49 89 c6 mov %rax,%r14 : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524582: e9 f9 d3 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } 0.00 : 524587: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52458e: 4c 8b 33 mov (%rbx),%r14 : | WITH OIDS { $$ = list_make1(defWithOids(true)); } 0.00 : 524591: e9 ea d3 fe ff jmpq 511980 : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } : ; : : OptInherit: INHERITS '(' qualified_name_list ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524596: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524599: e9 e2 d3 fe ff jmpq 511980 : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } : ; : : OptInherit: INHERITS '(' qualified_name_list ')' { $$ = $3; } 0.00 : 52459e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5245a5: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5245a9: e9 d2 d3 fe ff jmpq 511980 : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } 0.00 : 5245ae: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5245b5: ff ff ff 0.00 : 5245b8: 49 21 d6 and %rdx,%r14 0.00 : 5245bb: 49 83 ce 64 or $0x64,%r14 : ; 0.00 : 5245bf: e9 bc d3 fe ff jmpq 511980 : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } 0.00 : 5245c4: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5245cb: ff ff ff 0.00 : 5245ce: 49 21 c6 and %rax,%r14 0.00 : 5245d1: 49 83 ce 6e or $0x6e,%r14 : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } 0.00 : 5245d5: e9 a6 d3 fe ff jmpq 511980 : ; : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } 0.00 : 5245da: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5245e1: ff ff ff 0.00 : 5245e4: 49 21 f6 and %rsi,%r14 0.00 : 5245e7: 49 83 ce 63 or $0x63,%r14 : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } 0.00 : 5245eb: e9 90 d3 fe ff jmpq 511980 : key_delete: ON DELETE_P key_action { $$ = $3; } : ; : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } 0.00 : 5245f0: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5245f7: ff ff ff 0.00 : 5245fa: 49 21 de and %rbx,%r14 0.00 : 5245fd: 49 83 ce 72 or $0x72,%r14 : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } 0.00 : 524601: e9 7a d3 fe ff jmpq 511980 : : key_delete: ON DELETE_P key_action { $$ = $3; } : ; : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } 0.00 : 524606: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 52460d: ff ff ff 0.00 : 524610: 49 21 ce and %rcx,%r14 0.00 : 524613: 49 83 ce 61 or $0x61,%r14 : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } 0.00 : 524617: e9 64 d3 fe ff jmpq 511980 : ; : : key_update: ON UPDATE key_action { $$ = $3; } : ; : : key_delete: ON DELETE_P key_action { $$ = $3; } 0.00 : 52461c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524623: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 52462a: ff ff ff 0.00 : 52462d: 49 21 d6 and %rdx,%r14 0.00 : 524630: 8b 06 mov (%rsi),%eax 0.00 : 524632: 49 09 c6 or %rax,%r14 : ; 0.00 : 524635: e9 46 d3 fe ff jmpq 511980 : { $$ = ($2 << 8) | ($1 & 0xFF); } : | /*EMPTY*/ : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } : ; : : key_update: ON UPDATE key_action { $$ = $3; } 0.00 : 52463a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524641: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 524648: ff ff ff 0.00 : 52464b: 49 21 de and %rbx,%r14 0.00 : 52464e: 8b 01 mov (%rcx),%eax 0.00 : 524650: 49 09 c6 or %rax,%r14 : ; 0.00 : 524653: e9 28 d3 fe ff jmpq 511980 : | key_update key_delete : { $$ = ($1 << 8) | ($2 & 0xFF); } : | key_delete key_update : { $$ = ($2 << 8) | ($1 & 0xFF); } : | /*EMPTY*/ : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } 0.00 : 524658: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 52465f: ff ff ff 0.00 : 524662: 49 21 d6 and %rdx,%r14 0.00 : 524665: 49 81 ce 61 61 00 00 or $0x6161,%r14 : ; 0.00 : 52466c: e9 0f d3 fe ff jmpq 511980 : | key_delete : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | ($1 & 0xFF); } : | key_update key_delete : { $$ = ($1 << 8) | ($2 & 0xFF); } : | key_delete key_update : { $$ = ($2 << 8) | ($1 & 0xFF); } 0.00 : 524671: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524678: 0f b6 56 f8 movzbl -0x8(%rsi),%edx 0.00 : 52467c: 8b 06 mov (%rsi),%eax 0.00 : 52467e: c1 e0 08 shl $0x8,%eax 0.00 : 524681: 09 c2 or %eax,%edx 0.00 : 524683: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 52468a: ff ff ff 0.00 : 52468d: 49 21 c6 and %rax,%r14 0.00 : 524690: 49 09 d6 or %rdx,%r14 : | /*EMPTY*/ 0.00 : 524693: e9 e8 d2 fe ff jmpq 511980 : key_update : { $$ = ($1 << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } : | key_delete : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | ($1 & 0xFF); } : | key_update key_delete : { $$ = ($1 << 8) | ($2 & 0xFF); } 0.00 : 524698: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52469f: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5246a6: ff ff ff 0.00 : 5246a9: 49 21 de and %rbx,%r14 0.00 : 5246ac: 0f b6 11 movzbl (%rcx),%edx 0.00 : 5246af: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 5246b2: c1 e0 08 shl $0x8,%eax 0.00 : 5246b5: 09 c2 or %eax,%edx 0.00 : 5246b7: 49 09 d6 or %rdx,%r14 : | key_delete key_update 0.00 : 5246ba: e9 c1 d2 fe ff jmpq 511980 : */ : key_actions: : key_update : { $$ = ($1 << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } : | key_delete : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | ($1 & 0xFF); } 0.00 : 5246bf: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5246c6: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5246cd: ff ff ff 0.00 : 5246d0: 49 21 d6 and %rdx,%r14 0.00 : 5246d3: 0f b6 06 movzbl (%rsi),%eax 0.00 : 5246d6: 80 cc 61 or $0x61,%ah 0.00 : 5246d9: 49 09 c6 or %rax,%r14 : | key_update key_delete 0.00 : 5246dc: e9 9f d2 fe ff jmpq 511980 : * calling production. update is in the left 8 bits, delete in the right. : * Note that NOACTION is the default. : */ : key_actions: : key_update : { $$ = ($1 << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } 0.00 : 5246e1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5246e8: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5246ef: ff ff ff 0.00 : 5246f2: 49 21 de and %rbx,%r14 0.00 : 5246f5: 8b 01 mov (%rcx),%eax 0.00 : 5246f7: c1 e0 08 shl $0x8,%eax 0.00 : 5246fa: 83 c8 61 or $0x61,%eax 0.00 : 5246fd: 89 c0 mov %eax,%eax 0.00 : 5246ff: 49 09 c6 or %rax,%r14 : | key_delete 0.00 : 524702: e9 79 d2 fe ff jmpq 511980 : } : ; : : ExclusionWhereClause: : WHERE '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 524707: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52470a: e9 71 d2 fe ff jmpq 511980 : $$ = list_make2($1, $5); : } : ; : : ExclusionWhereClause: : WHERE '(' a_expr ')' { $$ = $3; } 0.00 : 52470f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524716: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 52471a: e9 61 d2 fe ff jmpq 511980 : $$ = list_make2($1, $3); : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ : | index_elem WITH OPERATOR '(' any_operator ')' : { : $$ = list_make2($1, $5); 0.00 : 52471f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524726: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 52472a: 31 f6 xor %esi,%esi 0.00 : 52472c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524733: e8 18 d1 0b 00 callq 5e1850 0.00 : 524738: 48 89 c6 mov %rax,%rsi 0.00 : 52473b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524742: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 524746: e8 05 d1 0b 00 callq 5e1850 : } : ; 0.00 : 52474b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make2($1, $3); : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ : | index_elem WITH OPERATOR '(' any_operator ')' : { : $$ = list_make2($1, $5); 0.00 : 524752: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 524755: e9 26 d2 fe ff jmpq 511980 : { $$ = lappend($1, $3); } : ; : : ExclusionConstraintElem: index_elem WITH any_operator : { : $$ = list_make2($1, $3); 0.00 : 52475a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524761: 31 f6 xor %esi,%esi 0.00 : 524763: 48 8b 39 mov (%rcx),%rdi 0.00 : 524766: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52476d: e8 de d0 0b 00 callq 5e1850 0.00 : 524772: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524779: 48 89 c6 mov %rax,%rsi 0.00 : 52477c: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 524780: e8 cb d0 0b 00 callq 5e1850 : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ 0.00 : 524785: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = lappend($1, $3); } : ; : : ExclusionConstraintElem: index_elem WITH any_operator : { : $$ = list_make2($1, $3); 0.00 : 52478c: 49 89 c6 mov %rax,%r14 : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ 0.00 : 52478f: e9 ec d1 fe ff jmpq 511980 : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } : | ExclusionConstraintList ',' ExclusionConstraintElem : { $$ = lappend($1, $3); } 0.00 : 524794: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52479b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 52479f: 48 8b 32 mov (%rdx),%rsi 0.00 : 5247a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5247a9: e8 d2 d6 0b 00 callq 5e1e80 : ; 0.00 : 5247ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } : | ExclusionConstraintList ',' ExclusionConstraintElem : { $$ = lappend($1, $3); } 0.00 : 5247b5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5247b8: e9 c3 d1 fe ff jmpq 511980 : $$ = FKCONSTR_MATCH_SIMPLE; : } : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } 0.00 : 5247bd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5247c4: 31 f6 xor %esi,%esi 0.00 : 5247c6: 48 8b 38 mov (%rax),%rdi 0.00 : 5247c9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5247d0: e8 7b d0 0b 00 callq 5e1850 : | ExclusionConstraintList ',' ExclusionConstraintElem 0.00 : 5247d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = FKCONSTR_MATCH_SIMPLE; : } : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } 0.00 : 5247dc: 49 89 c6 mov %rax,%r14 : | ExclusionConstraintList ',' ExclusionConstraintElem 0.00 : 5247df: e9 9c d1 fe ff jmpq 511980 : { : $$ = FKCONSTR_MATCH_SIMPLE; : } : | /*EMPTY*/ : { : $$ = FKCONSTR_MATCH_SIMPLE; 0.00 : 5247e4: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5247eb: ff ff ff 0.00 : 5247ee: 49 21 de and %rbx,%r14 0.00 : 5247f1: 49 83 ce 73 or $0x73,%r14 : } : ; 0.00 : 5247f5: e9 86 d1 fe ff jmpq 511980 : parser_errposition(@1))); : $$ = FKCONSTR_MATCH_PARTIAL; : } : | MATCH SIMPLE : { : $$ = FKCONSTR_MATCH_SIMPLE; 0.00 : 5247fa: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 524801: ff ff ff 0.00 : 524804: 49 21 ce and %rcx,%r14 0.00 : 524807: 49 83 ce 73 or $0x73,%r14 : } : | /*EMPTY*/ 0.00 : 52480b: e9 70 d1 fe ff jmpq 511980 : { : $$ = FKCONSTR_MATCH_FULL; : } : | MATCH PARTIAL : { : ereport(ERROR, 0.00 : 524810: 45 31 c0 xor %r8d,%r8d 0.00 : 524813: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 524818: ba e8 0c 00 00 mov $0xce8,%edx 0.00 : 52481d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 524822: bf 14 00 00 00 mov $0x14,%edi 0.00 : 524827: e8 94 62 25 00 callq 77aac0 0.00 : 52482c: 84 c0 test %al,%al 0.00 : 52482e: 0f 84 73 d7 fe ff je 511fa7 0.00 : 524834: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 52483b: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524842: 8b 7a fc mov -0x4(%rdx),%edi 0.00 : 524845: e8 56 94 fe ff callq 50dca0 0.00 : 52484a: bf 90 9f 7c 00 mov $0x7c9f90,%edi 0.00 : 52484f: 41 89 c4 mov %eax,%r12d 0.00 : 524852: 31 c0 xor %eax,%eax 0.00 : 524854: e8 47 80 25 00 callq 77c8a0 0.00 : 524859: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52485e: 89 c3 mov %eax,%ebx : { : TypeName *t = $1; : if ($6 != NIL) : { : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 524860: e8 eb 84 25 00 callq 77cd50 0.00 : 524865: 44 89 e2 mov %r12d,%edx 0.00 : 524868: 89 c7 mov %eax,%edi 0.00 : 52486a: 89 de mov %ebx,%esi 0.00 : 52486c: 31 c0 xor %eax,%eax 0.00 : 52486e: e8 6d 5d 25 00 callq 77a5e0 0.00 : 524873: e9 2f d7 fe ff jmpq 511fa7 : } : ; : : key_match: MATCH FULL : { : $$ = FKCONSTR_MATCH_FULL; 0.00 : 524878: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 52487f: ff ff ff 0.00 : 524882: 49 21 c6 and %rax,%r14 0.00 : 524885: 49 83 ce 66 or $0x66,%r14 : } : | MATCH PARTIAL 0.00 : 524889: e9 f2 d0 fe ff jmpq 511980 : | columnList ',' columnElem { $$ = lappend($1, $3); } : ; : : columnElem: ColId : { : $$ = (Node *) makeString($1); 0.00 : 52488e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524895: 48 8b 3e mov (%rsi),%rdi 0.00 : 524898: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52489f: e8 4c ae 0d 00 callq 5ff6f0 : } : ; 0.00 : 5248a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | columnList ',' columnElem { $$ = lappend($1, $3); } : ; : : columnElem: ColId : { : $$ = (Node *) makeString($1); 0.00 : 5248ab: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5248ae: e9 cd d0 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248b3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5248ba: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 5248be: 48 8b 33 mov (%rbx),%rsi 0.00 : 5248c1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5248c8: e8 b3 d5 0b 00 callq 5e1e80 : ; 0.00 : 5248cd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248d4: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5248d7: e9 a4 d0 fe ff jmpq 511980 : '(' columnList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } 0.00 : 5248dc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5248e3: 31 f6 xor %esi,%esi 0.00 : 5248e5: 48 8b 39 mov (%rcx),%rdi 0.00 : 5248e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5248ef: e8 5c cf 0b 00 callq 5e1850 : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : '(' columnList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } 0.00 : 5248fb: 49 89 c6 mov %rax,%r14 : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248fe: e9 7d d0 fe ff jmpq 511980 : | /* EMPTY */ { $$ = FALSE; } : ; : : opt_column_list: : '(' columnList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524903: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524906: e9 75 d0 fe ff jmpq 511980 : opt_no_inherit: NO INHERIT { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } : ; : : opt_column_list: : '(' columnList ')' { $$ = $2; } 0.00 : 52490b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524912: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524916: e9 65 d0 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_no_inherit: NO INHERIT { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } 0.00 : 52491b: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 52491e: e9 5d d0 fe ff jmpq 511980 : n->initially_valid = !n->skip_validation; : $$ = (Node *)n; : } : ; : : opt_no_inherit: NO INHERIT { $$ = TRUE; } 0.00 : 524923: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = FALSE; } 0.00 : 524926: e9 55 d0 fe ff jmpq 511980 : $$ = (Node *)n; : } : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 52492b: 48 8b 3d 2e 5f 69 00 mov 0x695f2e(%rip),%rdi # bba860 0.00 : 524932: be 98 00 00 00 mov $0x98,%esi 0.00 : 524937: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52493e: e8 cd 44 27 00 callq 798e10 0.00 : 524943: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_FOREIGN; 0.00 : 524949: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : $$ = (Node *)n; : } : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524950: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 524953: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->fk_attrs = $4; : n->pk_attrs = $8; : n->fk_matchtype = $9; : n->fk_upd_action = (char) ($10 >> 8); : n->fk_del_action = (char) ($10 & 0xFF); : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 52495a: 4c 8d 8b 94 00 00 00 lea 0x94(%rbx),%r9 0.00 : 524961: 4c 8d 43 11 lea 0x11(%rbx),%r8 : &n->deferrable, &n->initdeferred, : &n->skip_validation, NULL, : yyscanner); : n->initially_valid = !n->skip_validation; : $$ = (Node *)n; 0.00 : 524965: 49 89 de mov %rbx,%r14 : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 524968: 8b 42 d8 mov -0x28(%rdx),%eax : n->fk_attrs = $4; : n->pk_attrs = $8; : n->fk_matchtype = $9; : n->fk_upd_action = (char) ($10 >> 8); : n->fk_del_action = (char) ($10 & 0xFF); : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 52496b: ba dc 95 7c 00 mov $0x7c95dc,%edx : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 524970: 89 43 14 mov %eax,0x14(%rbx) : n->pktable = $7; 0.00 : 524973: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52497a: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 52497e: 48 89 43 68 mov %rax,0x68(%rbx) : n->fk_attrs = $4; 0.00 : 524982: 48 8b 41 c8 mov -0x38(%rcx),%rax 0.00 : 524986: 48 89 43 70 mov %rax,0x70(%rbx) : n->pk_attrs = $8; 0.00 : 52498a: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 52498e: 48 89 43 78 mov %rax,0x78(%rbx) : n->fk_matchtype = $9; 0.00 : 524992: 8b 41 f0 mov -0x10(%rcx),%eax 0.00 : 524995: 88 83 80 00 00 00 mov %al,0x80(%rbx) : n->fk_upd_action = (char) ($10 >> 8); 0.00 : 52499b: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 52499e: c1 f8 08 sar $0x8,%eax 0.00 : 5249a1: 88 83 81 00 00 00 mov %al,0x81(%rbx) : n->fk_del_action = (char) ($10 & 0xFF); 0.00 : 5249a7: 8b 41 f8 mov -0x8(%rcx),%eax : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 5249aa: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->pktable = $7; : n->fk_attrs = $4; : n->pk_attrs = $8; : n->fk_matchtype = $9; : n->fk_upd_action = (char) ($10 >> 8); : n->fk_del_action = (char) ($10 & 0xFF); 0.00 : 5249ae: 88 83 82 00 00 00 mov %al,0x82(%rbx) : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 5249b4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5249bb: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5249c2: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 5249c9: 00 0.00 : 5249ca: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 5249cf: 8b 30 mov (%rax),%esi 0.00 : 5249d1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5249d8: 8b 38 mov (%rax),%edi 0.00 : 5249da: e8 31 94 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, : &n->skip_validation, NULL, : yyscanner); : n->initially_valid = !n->skip_validation; 0.00 : 5249df: 80 bb 94 00 00 00 00 cmpb $0x0,0x94(%rbx) 0.00 : 5249e6: 0f 94 83 95 00 00 00 sete 0x95(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 5249ed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5249f4: e9 87 cf fe ff jmpq 511980 : } : | EXCLUDE access_method_clause '(' ExclusionConstraintList ')' : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 5249f9: 48 8b 3d 60 5e 69 00 mov 0x695e60(%rip),%rdi # bba860 0.00 : 524a00: be 98 00 00 00 mov $0x98,%esi 0.00 : 524a05: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524a0c: e8 ff 43 27 00 callq 798e10 0.00 : 524a11: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_EXCLUSION; 0.00 : 524a17: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : } : | EXCLUDE access_method_clause '(' ExclusionConstraintList ')' : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524a1e: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_EXCLUSION; : n->location = @1; 0.00 : 524a21: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->exclusions = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : n->where_clause = $8; : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a28: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524a2c: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524a2f: 49 89 de mov %rbx,%r14 : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_EXCLUSION; : n->location = @1; 0.00 : 524a32: 8b 42 e0 mov -0x20(%rdx),%eax : n->exclusions = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : n->where_clause = $8; : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a35: ba d4 95 7c 00 mov $0x7c95d4,%edx : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_EXCLUSION; : n->location = @1; 0.00 : 524a3a: 89 43 14 mov %eax,0x14(%rbx) : n->access_method = $2; 0.00 : 524a3d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524a44: 48 8b 41 c8 mov -0x38(%rcx),%rax 0.00 : 524a48: 48 89 43 58 mov %rax,0x58(%rbx) : n->exclusions = $4; 0.00 : 524a4c: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 524a50: 48 89 43 38 mov %rax,0x38(%rbx) : n->options = $6; 0.00 : 524a54: 48 8b 41 e8 mov -0x18(%rcx),%rax : n->indexname = NULL; 0.00 : 524a58: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 524a5f: 00 : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_EXCLUSION; : n->location = @1; : n->access_method = $2; : n->exclusions = $4; : n->options = $6; 0.00 : 524a60: 48 89 43 40 mov %rax,0x40(%rbx) : n->indexname = NULL; : n->indexspace = $7; 0.00 : 524a64: 48 8b 41 f0 mov -0x10(%rcx),%rax 0.00 : 524a68: 48 89 43 50 mov %rax,0x50(%rbx) : n->where_clause = $8; 0.00 : 524a6c: 48 8b 41 f8 mov -0x8(%rcx),%rax : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a70: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->access_method = $2; : n->exclusions = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : n->where_clause = $8; 0.00 : 524a74: 48 89 43 60 mov %rax,0x60(%rbx) : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a78: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524a7f: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524a86: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524a8d: 00 0.00 : 524a8e: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524a93: 8b 30 mov (%rax),%esi 0.00 : 524a95: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524a9c: 8b 38 mov (%rax),%edi 0.00 : 524a9e: e8 6d 93 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name 0.00 : 524aa3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524aaa: e9 d1 ce fe ff jmpq 511980 : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524aaf: 48 8b 3d aa 5d 69 00 mov 0x695daa(%rip),%rdi # bba860 0.00 : 524ab6: be 98 00 00 00 mov $0x98,%esi 0.00 : 524abb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524ac2: e8 49 43 27 00 callq 798e10 0.00 : 524ac7: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_PRIMARY; 0.00 : 524acd: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524ad4: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524ad7: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = NIL; : n->options = NIL; : n->indexname = $3; : n->indexspace = NULL; : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524ade: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524ae2: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524ae5: 49 89 de mov %rbx,%r14 : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524ae8: 8b 42 f4 mov -0xc(%rdx),%eax : n->keys = NIL; 0.00 : 524aeb: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 524af2: 00 : n->options = NIL; : n->indexname = $3; : n->indexspace = NULL; : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524af3: ba c8 95 7c 00 mov $0x7c95c8,%edx : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = NIL; : n->options = NIL; 0.00 : 524af8: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 524aff: 00 : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b00: 89 43 14 mov %eax,0x14(%rbx) : n->keys = NIL; : n->options = NIL; : n->indexname = $3; 0.00 : 524b03: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524b0a: 48 8b 41 f8 mov -0x8(%rcx),%rax : n->indexspace = NULL; 0.00 : 524b0e: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 524b15: 00 : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524b16: 48 8d 4b 10 lea 0x10(%rbx),%rcx : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = NIL; : n->options = NIL; : n->indexname = $3; 0.00 : 524b1a: 48 89 43 48 mov %rax,0x48(%rbx) : n->indexspace = NULL; : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524b1e: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524b25: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524b2c: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524b33: 00 0.00 : 524b34: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524b39: 8b 30 mov (%rax),%esi 0.00 : 524b3b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524b42: 8b 38 mov (%rax),%edi 0.00 : 524b44: e8 c7 92 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | EXCLUDE access_method_clause '(' ExclusionConstraintList ')' 0.00 : 524b49: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524b50: e9 2b ce fe ff jmpq 511980 : $$ = (Node *)n; : } : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524b55: 48 8b 3d 04 5d 69 00 mov 0x695d04(%rip),%rdi # bba860 0.00 : 524b5c: be 98 00 00 00 mov $0x98,%esi 0.00 : 524b61: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524b68: e8 a3 42 27 00 callq 798e10 0.00 : 524b6d: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_PRIMARY; 0.00 : 524b73: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : $$ = (Node *)n; : } : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524b7a: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b7d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524b84: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524b88: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524b8b: 49 89 de mov %rbx,%r14 : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b8e: 8b 42 e4 mov -0x1c(%rdx),%eax : n->keys = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524b91: ba c8 95 7c 00 mov $0x7c95c8,%edx : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b96: 89 43 14 mov %eax,0x14(%rbx) : n->keys = $4; 0.00 : 524b99: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524ba0: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 524ba4: 48 89 43 30 mov %rax,0x30(%rbx) : n->options = $6; 0.00 : 524ba8: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->indexname = NULL; 0.00 : 524bac: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 524bb3: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = $4; : n->options = $6; 0.00 : 524bb4: 48 89 43 40 mov %rax,0x40(%rbx) : n->indexname = NULL; : n->indexspace = $7; 0.00 : 524bb8: 48 8b 41 f8 mov -0x8(%rcx),%rax : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524bbc: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; 0.00 : 524bc0: 48 89 43 50 mov %rax,0x50(%rbx) : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524bc4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524bcb: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524bd2: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524bd9: 00 0.00 : 524bda: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524bdf: 8b 30 mov (%rax),%esi 0.00 : 524be1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524be8: 8b 38 mov (%rax),%edi 0.00 : 524bea: e8 21 92 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec 0.00 : 524bef: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524bf6: e9 85 cd fe ff jmpq 511980 : NULL, yyscanner); : $$ = (Node *)n; : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524bfb: 48 8b 3d 5e 5c 69 00 mov 0x695c5e(%rip),%rdi # bba860 0.00 : 524c02: be 98 00 00 00 mov $0x98,%esi 0.00 : 524c07: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524c0e: e8 fd 41 27 00 callq 798e10 0.00 : 524c13: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_UNIQUE; 0.00 : 524c19: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : NULL, yyscanner); : $$ = (Node *)n; : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524c20: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524c23: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = NIL; : n->options = NIL; : n->indexname = $2; : n->indexspace = NULL; : processCASbits($3, @3, "UNIQUE", 0.00 : 524c2a: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524c2e: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524c31: 49 89 de mov %rbx,%r14 : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524c34: 8b 42 f8 mov -0x8(%rdx),%eax : n->keys = NIL; 0.00 : 524c37: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 524c3e: 00 : n->options = NIL; : n->indexname = $2; : n->indexspace = NULL; : processCASbits($3, @3, "UNIQUE", 0.00 : 524c3f: ba c1 95 7c 00 mov $0x7c95c1,%edx : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = NIL; : n->options = NIL; 0.00 : 524c44: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 524c4b: 00 : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524c4c: 89 43 14 mov %eax,0x14(%rbx) : n->keys = NIL; : n->options = NIL; : n->indexname = $2; 0.00 : 524c4f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524c56: 48 8b 41 f8 mov -0x8(%rcx),%rax : n->indexspace = NULL; 0.00 : 524c5a: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 524c61: 00 : processCASbits($3, @3, "UNIQUE", 0.00 : 524c62: 48 8d 4b 10 lea 0x10(%rbx),%rcx : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = NIL; : n->options = NIL; : n->indexname = $2; 0.00 : 524c66: 48 89 43 48 mov %rax,0x48(%rbx) : n->indexspace = NULL; : processCASbits($3, @3, "UNIQUE", 0.00 : 524c6a: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524c71: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524c78: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524c7f: 00 0.00 : 524c80: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524c85: 8b 30 mov (%rax),%esi 0.00 : 524c87: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524c8e: 8b 38 mov (%rax),%edi 0.00 : 524c90: e8 7b 91 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace 0.00 : 524c95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524c9c: e9 df cc fe ff jmpq 511980 : $$ = (Node *)n; : } : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524ca1: 48 8b 3d b8 5b 69 00 mov 0x695bb8(%rip),%rdi # bba860 0.00 : 524ca8: be 98 00 00 00 mov $0x98,%esi 0.00 : 524cad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524cb4: e8 57 41 27 00 callq 798e10 0.00 : 524cb9: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_UNIQUE; 0.00 : 524cbf: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : $$ = (Node *)n; : } : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524cc6: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524cc9: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = $3; : n->options = $5; : n->indexname = NULL; : n->indexspace = $6; : processCASbits($7, @7, "UNIQUE", 0.00 : 524cd0: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524cd4: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524cd7: 49 89 de mov %rbx,%r14 : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524cda: 8b 42 e8 mov -0x18(%rdx),%eax : n->keys = $3; : n->options = $5; : n->indexname = NULL; : n->indexspace = $6; : processCASbits($7, @7, "UNIQUE", 0.00 : 524cdd: ba c1 95 7c 00 mov $0x7c95c1,%edx : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524ce2: 89 43 14 mov %eax,0x14(%rbx) : n->keys = $3; 0.00 : 524ce5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524cec: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 524cf0: 48 89 43 30 mov %rax,0x30(%rbx) : n->options = $5; 0.00 : 524cf4: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->indexname = NULL; 0.00 : 524cf8: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 524cff: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = $3; : n->options = $5; 0.00 : 524d00: 48 89 43 40 mov %rax,0x40(%rbx) : n->indexname = NULL; : n->indexspace = $6; 0.00 : 524d04: 48 8b 41 f8 mov -0x8(%rcx),%rax : processCASbits($7, @7, "UNIQUE", 0.00 : 524d08: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = $3; : n->options = $5; : n->indexname = NULL; : n->indexspace = $6; 0.00 : 524d0c: 48 89 43 50 mov %rax,0x50(%rbx) : processCASbits($7, @7, "UNIQUE", 0.00 : 524d10: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524d17: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524d1e: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524d25: 00 0.00 : 524d26: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524d2b: 8b 30 mov (%rax),%esi 0.00 : 524d2d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524d34: 8b 38 mov (%rax),%edi 0.00 : 524d36: e8 d5 90 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | UNIQUE ExistingIndex ConstraintAttributeSpec 0.00 : 524d3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524d42: e9 39 cc fe ff jmpq 511980 : ; : : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524d47: 48 8b 3d 12 5b 69 00 mov 0x695b12(%rip),%rdi # bba860 0.00 : 524d4e: be 98 00 00 00 mov $0x98,%esi 0.00 : 524d53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524d5a: e8 b1 40 27 00 callq 798e10 0.00 : 524d5f: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_CHECK; 0.00 : 524d65: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : ; : : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524d6c: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 524d6f: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->raw_expr = $3; : n->cooked_expr = NULL; : processCASbits($5, @5, "CHECK", 0.00 : 524d76: 4c 8d 8b 94 00 00 00 lea 0x94(%rbx),%r9 0.00 : 524d7d: 45 31 c0 xor %r8d,%r8d : NULL, NULL, &n->skip_validation, : &n->is_no_inherit, yyscanner); : n->initially_valid = !n->skip_validation; : $$ = (Node *)n; 0.00 : 524d80: 49 89 de mov %rbx,%r14 : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 524d83: 8b 42 f0 mov -0x10(%rdx),%eax : n->raw_expr = $3; : n->cooked_expr = NULL; : processCASbits($5, @5, "CHECK", 0.00 : 524d86: ba 9e 13 7c 00 mov $0x7c139e,%edx : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 524d8b: 89 43 14 mov %eax,0x14(%rbx) : n->raw_expr = $3; 0.00 : 524d8e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524d95: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->cooked_expr = NULL; 0.00 : 524d99: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 524da0: 00 : processCASbits($5, @5, "CHECK", 0.00 : 524da1: 31 c9 xor %ecx,%ecx : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; : n->raw_expr = $3; 0.00 : 524da3: 48 89 43 20 mov %rax,0x20(%rbx) : n->cooked_expr = NULL; : processCASbits($5, @5, "CHECK", 0.00 : 524da7: 48 8d 43 18 lea 0x18(%rbx),%rax 0.00 : 524dab: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524db2: 48 89 04 24 mov %rax,(%rsp) 0.00 : 524db6: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524dbd: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524dc2: 8b 30 mov (%rax),%esi 0.00 : 524dc4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524dcb: 8b 38 mov (%rax),%edi 0.00 : 524dcd: e8 3e 90 fe ff callq 50de10 : NULL, NULL, &n->skip_validation, : &n->is_no_inherit, yyscanner); : n->initially_valid = !n->skip_validation; 0.00 : 524dd2: 80 bb 94 00 00 00 00 cmpb $0x0,0x94(%rbx) 0.00 : 524dd9: 0f 94 83 95 00 00 00 sete 0x95(%rbx) : $$ = (Node *)n; : } : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace 0.00 : 524de0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524de7: e9 94 cb fe ff jmpq 511980 : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; : $$ = (Node *) n; : } : | ConstraintElem { $$ = $1; } 0.00 : 524dec: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524df3: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 524df6: e9 85 cb fe ff jmpq 511980 : * - thomas 1997-12-03 : */ : TableConstraint: : CONSTRAINT name ConstraintElem : { : Constraint *n = (Constraint *) $3; 0.00 : 524dfb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524e02: 48 8b 02 mov (%rdx),%rax : Assert(IsA(n, Constraint)); : n->conname = $2; 0.00 : 524e05: 48 8b 52 f8 mov -0x8(%rdx),%rdx 0.00 : 524e09: 48 89 50 08 mov %rdx,0x8(%rax) : n->location = @1; 0.00 : 524e0d: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx : $$ = (Node *) n; 0.00 : 524e14: 49 89 c6 mov %rax,%r14 : CONSTRAINT name ConstraintElem : { : Constraint *n = (Constraint *) $3; : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; 0.00 : 524e17: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 524e1a: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *) n; : } : | ConstraintElem { $$ = $1; } 0.00 : 524e1d: e9 5e cb fe ff jmpq 511980 : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } : | COMMENTS { $$ = CREATE_TABLE_LIKE_COMMENTS; } : | ALL { $$ = CREATE_TABLE_LIKE_ALL; } 0.00 : 524e22: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 524e29: ff ff ff 0.00 : 524e2c: 49 21 f6 and %rsi,%r14 0.00 : 524e2f: 49 81 ce ff ff ff 7f or $0x7fffffff,%r14 : ; 0.00 : 524e36: e9 45 cb fe ff jmpq 511980 : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } : | COMMENTS { $$ = CREATE_TABLE_LIKE_COMMENTS; } 0.00 : 524e3b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 524e42: ff ff ff 0.00 : 524e45: 49 21 de and %rbx,%r14 0.00 : 524e48: 49 83 ce 10 or $0x10,%r14 : | ALL { $$ = CREATE_TABLE_LIKE_ALL; } 0.00 : 524e4c: e9 2f cb fe ff jmpq 511980 : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } 0.00 : 524e51: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 524e58: ff ff ff 0.00 : 524e5b: 49 21 ce and %rcx,%r14 0.00 : 524e5e: 49 83 ce 08 or $0x8,%r14 : | COMMENTS { $$ = CREATE_TABLE_LIKE_COMMENTS; } 0.00 : 524e62: e9 19 cb fe ff jmpq 511980 : ; : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } 0.00 : 524e67: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 524e6e: ff ff ff 0.00 : 524e71: 49 21 d6 and %rdx,%r14 0.00 : 524e74: 49 83 ce 04 or $0x4,%r14 : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } 0.00 : 524e78: e9 03 cb fe ff jmpq 511980 : | /* EMPTY */ { $$ = 0; } : ; : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } 0.00 : 524e7d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 524e84: ff ff ff 0.00 : 524e87: 49 21 c6 and %rax,%r14 0.00 : 524e8a: 49 83 ce 02 or $0x2,%r14 : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } 0.00 : 524e8e: e9 ed ca fe ff jmpq 511980 : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } : | /* EMPTY */ { $$ = 0; } : ; : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } 0.00 : 524e93: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 524e9a: ff ff ff 0.00 : 524e9d: 49 21 f6 and %rsi,%r14 0.00 : 524ea0: 49 83 ce 01 or $0x1,%r14 : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } 0.00 : 524ea4: e9 d7 ca fe ff jmpq 511980 : ; : : TableLikeOptionList: : TableLikeOptionList INCLUDING TableLikeOption { $$ = $1 | $3; } : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } : | /* EMPTY */ { $$ = 0; } 0.00 : 524ea9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 524eb0: ff ff ff 0.00 : 524eb3: 49 21 de and %rbx,%r14 : ; 0.00 : 524eb6: e9 c5 ca fe ff jmpq 511980 : } : ; : : TableLikeOptionList: : TableLikeOptionList INCLUDING TableLikeOption { $$ = $1 | $3; } : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } 0.00 : 524ebb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524ec2: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 524ec9: ff ff ff 0.00 : 524ecc: 49 21 ce and %rcx,%r14 0.00 : 524ecf: 8b 02 mov (%rdx),%eax 0.00 : 524ed1: f7 d0 not %eax 0.00 : 524ed3: 23 42 f0 and -0x10(%rdx),%eax 0.00 : 524ed6: 49 09 c6 or %rax,%r14 : | /* EMPTY */ { $$ = 0; } 0.00 : 524ed9: e9 a2 ca fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : TableLikeOptionList: : TableLikeOptionList INCLUDING TableLikeOption { $$ = $1 | $3; } 0.00 : 524ede: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524ee5: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 524eec: ff ff ff 0.00 : 524eef: 49 21 f6 and %rsi,%r14 0.00 : 524ef2: 8b 03 mov (%rbx),%eax 0.00 : 524ef4: 0b 43 f0 or -0x10(%rbx),%eax 0.00 : 524ef7: 49 09 c6 or %rax,%r14 : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } 0.00 : 524efa: e9 81 ca fe ff jmpq 511980 : : : TableLikeClause: : LIKE qualified_name TableLikeOptionList : { : TableLikeClause *n = makeNode(TableLikeClause); 0.00 : 524eff: 48 8b 3d 5a 59 69 00 mov 0x69595a(%rip),%rdi # bba860 0.00 : 524f06: be 18 00 00 00 mov $0x18,%esi 0.00 : 524f0b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524f12: e8 f9 3e 27 00 callq 798e10 0.00 : 524f17: c7 00 a3 03 00 00 movl $0x3a3,(%rax) : n->relation = $2; 0.00 : 524f1d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $3; : $$ = (Node *)n; 0.00 : 524f24: 49 89 c6 mov %rax,%r14 : : TableLikeClause: : LIKE qualified_name TableLikeOptionList : { : TableLikeClause *n = makeNode(TableLikeClause); : n->relation = $2; 0.00 : 524f27: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 524f2b: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $3; 0.00 : 524f2f: 8b 11 mov (%rcx),%edx 0.00 : 524f31: 89 50 10 mov %edx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 524f34: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524f3b: e9 40 ca fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | INITIALLY IMMEDIATE : { : Constraint *n = makeNode(Constraint); 0.00 : 524f40: 48 8b 3d 19 59 69 00 mov 0x695919(%rip),%rdi # bba860 0.00 : 524f47: be 98 00 00 00 mov $0x98,%esi 0.00 : 524f4c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524f53: e8 b8 3e 27 00 callq 798e10 0.00 : 524f58: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_IMMEDIATE; 0.00 : 524f5e: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 524f65: 49 89 c6 mov %rax,%r14 : } : | INITIALLY IMMEDIATE : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_IMMEDIATE; : n->location = @1; 0.00 : 524f68: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 524f6f: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 524f72: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : ; 0.00 : 524f75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524f7c: e9 ff c9 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | INITIALLY DEFERRED : { : Constraint *n = makeNode(Constraint); 0.00 : 524f81: 48 8b 3d d8 58 69 00 mov 0x6958d8(%rip),%rdi # bba860 0.00 : 524f88: be 98 00 00 00 mov $0x98,%esi 0.00 : 524f8d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524f94: e8 77 3e 27 00 callq 798e10 0.00 : 524f99: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_DEFERRED; 0.00 : 524f9f: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 524fa6: 49 89 c6 mov %rax,%r14 : } : | INITIALLY DEFERRED : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_DEFERRED; : n->location = @1; 0.00 : 524fa9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 524fb0: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 524fb3: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | INITIALLY IMMEDIATE 0.00 : 524fb6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524fbd: e9 be c9 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | NOT DEFERRABLE : { : Constraint *n = makeNode(Constraint); 0.00 : 524fc2: 48 8b 3d 97 58 69 00 mov 0x695897(%rip),%rdi # bba860 0.00 : 524fc9: be 98 00 00 00 mov $0x98,%esi 0.00 : 524fce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524fd5: e8 36 3e 27 00 callq 798e10 0.00 : 524fda: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_NOT_DEFERRABLE; 0.00 : 524fe0: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 524fe7: 49 89 c6 mov %rax,%r14 : } : | NOT DEFERRABLE : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_NOT_DEFERRABLE; : n->location = @1; 0.00 : 524fea: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 524ff1: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 524ff4: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | INITIALLY DEFERRED 0.00 : 524ff7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524ffe: e9 7d c9 fe ff jmpq 511980 : * useful in the statements that use ConstraintAttr.) : */ : ConstraintAttr: : DEFERRABLE : { : Constraint *n = makeNode(Constraint); 0.00 : 525003: 48 8b 3d 56 58 69 00 mov 0x695856(%rip),%rdi # bba860 0.00 : 52500a: be 98 00 00 00 mov $0x98,%esi 0.00 : 52500f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525016: e8 f5 3d 27 00 callq 798e10 0.00 : 52501b: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_DEFERRABLE; 0.00 : 525021: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 525028: 49 89 c6 mov %rax,%r14 : ConstraintAttr: : DEFERRABLE : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_DEFERRABLE; : n->location = @1; 0.00 : 52502b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 525032: 8b 16 mov (%rsi),%edx 0.00 : 525034: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | NOT DEFERRABLE 0.00 : 525037: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52503e: e9 3d c9 fe ff jmpq 511980 : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | REFERENCES qualified_name opt_column_list key_match key_actions : { : Constraint *n = makeNode(Constraint); 0.00 : 525043: 48 8b 3d 16 58 69 00 mov 0x695816(%rip),%rdi # bba860 0.00 : 52504a: be 98 00 00 00 mov $0x98,%esi 0.00 : 52504f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525056: e8 b5 3d 27 00 callq 798e10 0.00 : 52505b: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_FOREIGN; 0.00 : 525061: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->fk_matchtype = $4; : n->fk_upd_action = (char) ($5 >> 8); : n->fk_del_action = (char) ($5 & 0xFF); : n->skip_validation = false; : n->initially_valid = true; : $$ = (Node *)n; 0.00 : 525068: 49 89 c6 mov %rax,%r14 : } : | REFERENCES qualified_name opt_column_list key_match key_actions : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 52506b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 525072: 8b 51 f0 mov -0x10(%rcx),%edx 0.00 : 525075: 89 50 14 mov %edx,0x14(%rax) : n->pktable = $2; 0.00 : 525078: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52507f: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->fk_attrs = NIL; 0.00 : 525083: 48 c7 40 70 00 00 00 movq $0x0,0x70(%rax) 0.00 : 52508a: 00 : | REFERENCES qualified_name opt_column_list key_match key_actions : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; : n->pktable = $2; 0.00 : 52508b: 48 89 50 68 mov %rdx,0x68(%rax) : n->fk_attrs = NIL; : n->pk_attrs = $3; 0.00 : 52508f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 525093: 48 89 50 78 mov %rdx,0x78(%rax) : n->fk_matchtype = $4; 0.00 : 525097: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 52509a: 88 90 80 00 00 00 mov %dl,0x80(%rax) : n->fk_upd_action = (char) ($5 >> 8); 0.00 : 5250a0: 8b 13 mov (%rbx),%edx 0.00 : 5250a2: c1 fa 08 sar $0x8,%edx 0.00 : 5250a5: 88 90 81 00 00 00 mov %dl,0x81(%rax) : n->fk_del_action = (char) ($5 & 0xFF); 0.00 : 5250ab: 8b 13 mov (%rbx),%edx : n->skip_validation = false; 0.00 : 5250ad: c6 80 94 00 00 00 00 movb $0x0,0x94(%rax) : n->initially_valid = true; 0.00 : 5250b4: c6 80 95 00 00 00 01 movb $0x1,0x95(%rax) : n->pktable = $2; : n->fk_attrs = NIL; : n->pk_attrs = $3; : n->fk_matchtype = $4; : n->fk_upd_action = (char) ($5 >> 8); : n->fk_del_action = (char) ($5 & 0xFF); 0.00 : 5250bb: 88 90 82 00 00 00 mov %dl,0x82(%rax) : n->skip_validation = false; : n->initially_valid = true; : $$ = (Node *)n; : } : ; 0.00 : 5250c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5250c8: e9 b3 c8 fe ff jmpq 511980 : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | DEFAULT b_expr : { : Constraint *n = makeNode(Constraint); 0.00 : 5250cd: 48 8b 3d 8c 57 69 00 mov 0x69578c(%rip),%rdi # bba860 0.00 : 5250d4: be 98 00 00 00 mov $0x98,%esi 0.00 : 5250d9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5250e0: e8 2b 3d 27 00 callq 798e10 0.00 : 5250e5: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_DEFAULT; 0.00 : 5250eb: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->location = @1; : n->raw_expr = $2; : n->cooked_expr = NULL; : $$ = (Node *)n; 0.00 : 5250f2: 49 89 c6 mov %rax,%r14 : } : | DEFAULT b_expr : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_DEFAULT; : n->location = @1; 0.00 : 5250f5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5250fc: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 5250ff: 89 50 14 mov %edx,0x14(%rax) : n->raw_expr = $2; 0.00 : 525102: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525109: 48 8b 16 mov (%rsi),%rdx : n->cooked_expr = NULL; 0.00 : 52510c: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 525113: 00 : | DEFAULT b_expr : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_DEFAULT; : n->location = @1; : n->raw_expr = $2; 0.00 : 525114: 48 89 50 20 mov %rdx,0x20(%rax) : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | REFERENCES qualified_name opt_column_list key_match key_actions 0.00 : 525118: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52511f: e9 5c c8 fe ff jmpq 511980 : n->indexspace = $4; : $$ = (Node *)n; : } : | CHECK '(' a_expr ')' opt_no_inherit : { : Constraint *n = makeNode(Constraint); 0.00 : 525124: 48 8b 3d 35 57 69 00 mov 0x695735(%rip),%rdi # bba860 0.00 : 52512b: be 98 00 00 00 mov $0x98,%esi 0.00 : 525130: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525137: e8 d4 3c 27 00 callq 798e10 0.00 : 52513c: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_CHECK; 0.00 : 525142: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->location = @1; : n->is_no_inherit = $5; : n->raw_expr = $3; : n->cooked_expr = NULL; : $$ = (Node *)n; 0.00 : 525149: 49 89 c6 mov %rax,%r14 : } : | CHECK '(' a_expr ')' opt_no_inherit : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 52514c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 525153: 8b 56 f0 mov -0x10(%rsi),%edx 0.00 : 525156: 89 50 14 mov %edx,0x14(%rax) : n->is_no_inherit = $5; 0.00 : 525159: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525160: 0f b6 11 movzbl (%rcx),%edx 0.00 : 525163: 88 50 18 mov %dl,0x18(%rax) : n->raw_expr = $3; 0.00 : 525166: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->cooked_expr = NULL; 0.00 : 52516a: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 525171: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; : n->is_no_inherit = $5; : n->raw_expr = $3; 0.00 : 525172: 48 89 50 20 mov %rdx,0x20(%rax) : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | DEFAULT b_expr 0.00 : 525176: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52517d: e9 fe c7 fe ff jmpq 511980 : n->indexspace = $3; : $$ = (Node *)n; : } : | PRIMARY KEY opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); 0.00 : 525182: 48 8b 3d d7 56 69 00 mov 0x6956d7(%rip),%rdi # bba860 0.00 : 525189: be 98 00 00 00 mov $0x98,%esi 0.00 : 52518e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525195: e8 76 3c 27 00 callq 798e10 0.00 : 52519a: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_PRIMARY; 0.00 : 5251a0: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->location = @1; : n->keys = NULL; : n->options = $3; : n->indexname = NULL; : n->indexspace = $4; : $$ = (Node *)n; 0.00 : 5251a7: 49 89 c6 mov %rax,%r14 : } : | PRIMARY KEY opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 5251aa: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5251b1: 8b 51 f4 mov -0xc(%rcx),%edx : n->keys = NULL; 0.00 : 5251b4: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 5251bb: 00 : } : | PRIMARY KEY opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 5251bc: 89 50 14 mov %edx,0x14(%rax) : n->keys = NULL; : n->options = $3; 0.00 : 5251bf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5251c6: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->indexname = NULL; 0.00 : 5251ca: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 5251d1: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = NULL; : n->options = $3; 0.00 : 5251d2: 48 89 50 40 mov %rdx,0x40(%rax) : n->indexname = NULL; : n->indexspace = $4; 0.00 : 5251d6: 48 8b 13 mov (%rbx),%rdx 0.00 : 5251d9: 48 89 50 50 mov %rdx,0x50(%rax) : $$ = (Node *)n; : } : | CHECK '(' a_expr ')' opt_no_inherit 0.00 : 5251dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5251e4: e9 97 c7 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | UNIQUE opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); 0.00 : 5251e9: 48 8b 3d 70 56 69 00 mov 0x695670(%rip),%rdi # bba860 0.00 : 5251f0: be 98 00 00 00 mov $0x98,%esi 0.00 : 5251f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5251fc: e8 0f 3c 27 00 callq 798e10 0.00 : 525201: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_UNIQUE; 0.00 : 525207: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->location = @1; : n->keys = NULL; : n->options = $2; : n->indexname = NULL; : n->indexspace = $3; : $$ = (Node *)n; 0.00 : 52520e: 49 89 c6 mov %rax,%r14 : } : | UNIQUE opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 525211: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 525218: 8b 53 f8 mov -0x8(%rbx),%edx : n->keys = NULL; 0.00 : 52521b: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 525222: 00 : } : | UNIQUE opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 525223: 89 50 14 mov %edx,0x14(%rax) : n->keys = NULL; : n->options = $2; 0.00 : 525226: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52522d: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->indexname = NULL; 0.00 : 525231: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 525238: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = NULL; : n->options = $2; 0.00 : 525239: 48 89 50 40 mov %rdx,0x40(%rax) : n->indexname = NULL; : n->indexspace = $3; 0.00 : 52523d: 48 8b 16 mov (%rsi),%rdx 0.00 : 525240: 48 89 50 50 mov %rdx,0x50(%rax) : $$ = (Node *)n; : } : | PRIMARY KEY opt_definition OptConsTableSpace 0.00 : 525244: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52524b: e9 30 c7 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | NULL_P : { : Constraint *n = makeNode(Constraint); 0.00 : 525250: 48 8b 3d 09 56 69 00 mov 0x695609(%rip),%rdi # bba860 0.00 : 525257: be 98 00 00 00 mov $0x98,%esi 0.00 : 52525c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525263: e8 a8 3b 27 00 callq 798e10 0.00 : 525268: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_NULL; 0.00 : 52526e: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 525275: 49 89 c6 mov %rax,%r14 : } : | NULL_P : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_NULL; : n->location = @1; 0.00 : 525278: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52527f: 8b 11 mov (%rcx),%edx 0.00 : 525281: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | UNIQUE opt_definition OptConsTableSpace 0.00 : 525284: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52528b: e9 f0 c6 fe ff jmpq 511980 : * or be part of a_expr NOT LIKE or similar constructs). : */ : ColConstraintElem: : NOT NULL_P : { : Constraint *n = makeNode(Constraint); 0.00 : 525290: 48 8b 3d c9 55 69 00 mov 0x6955c9(%rip),%rdi # bba860 0.00 : 525297: be 98 00 00 00 mov $0x98,%esi 0.00 : 52529c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5252a3: e8 68 3b 27 00 callq 798e10 0.00 : 5252a8: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_NOTNULL; 0.00 : 5252ae: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 5252b5: 49 89 c6 mov %rax,%r14 : ColConstraintElem: : NOT NULL_P : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_NOTNULL; : n->location = @1; 0.00 : 5252b8: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5252bf: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 5252c2: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | NULL_P 0.00 : 5252c5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5252cc: e9 af c6 fe ff jmpq 511980 : /* : * Note: the CollateClause is momentarily included in : * the list built by ColQualList, but we split it out : * again in SplitColQualList. : */ : CollateClause *n = makeNode(CollateClause); 0.00 : 5252d1: 48 8b 3d 88 55 69 00 mov 0x695588(%rip),%rdi # bba860 0.00 : 5252d8: be 20 00 00 00 mov $0x20,%esi 0.00 : 5252dd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5252e4: e8 27 3b 27 00 callq 798e10 0.00 : 5252e9: c7 00 90 03 00 00 movl $0x390,(%rax) : n->arg = NULL; 0.00 : 5252ef: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5252f6: 00 : n->collname = $2; : n->location = @1; : $$ = (Node *) n; 0.00 : 5252f7: 49 89 c6 mov %rax,%r14 : * the list built by ColQualList, but we split it out : * again in SplitColQualList. : */ : CollateClause *n = makeNode(CollateClause); : n->arg = NULL; : n->collname = $2; 0.00 : 5252fa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525301: 48 8b 11 mov (%rcx),%rdx 0.00 : 525304: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @1; 0.00 : 525308: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52530f: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 525312: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 525315: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52531c: e9 5f c6 fe ff jmpq 511980 : n->conname = $2; : n->location = @1; : $$ = (Node *) n; : } : | ColConstraintElem { $$ = $1; } : | ConstraintAttr { $$ = $1; } 0.00 : 525321: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525328: 4c 8b 32 mov (%rdx),%r14 : | COLLATE any_name 0.00 : 52532b: e9 50 c6 fe ff jmpq 511980 : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; : $$ = (Node *) n; : } : | ColConstraintElem { $$ = $1; } 0.00 : 525330: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525337: 4c 8b 30 mov (%rax),%r14 : | ConstraintAttr { $$ = $1; } 0.00 : 52533a: e9 41 c6 fe ff jmpq 511980 : ; : : ColConstraint: : CONSTRAINT name ColConstraintElem : { : Constraint *n = (Constraint *) $3; 0.00 : 52533f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525346: 48 8b 03 mov (%rbx),%rax : Assert(IsA(n, Constraint)); : n->conname = $2; 0.00 : 525349: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52534d: 48 89 50 08 mov %rdx,0x8(%rax) : n->location = @1; 0.00 : 525351: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : $$ = (Node *) n; 0.00 : 525358: 49 89 c6 mov %rax,%r14 : CONSTRAINT name ColConstraintElem : { : Constraint *n = (Constraint *) $3; : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; 0.00 : 52535b: 8b 56 f8 mov -0x8(%rsi),%edx 0.00 : 52535e: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *) n; : } : | ColConstraintElem { $$ = $1; } 0.00 : 525361: e9 1a c6 fe ff jmpq 511980 : } : ; : : ColQualList: : ColQualList ColConstraint { $$ = lappend($1, $2); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 525366: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525369: e9 12 c6 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : ColQualList: : ColQualList ColConstraint { $$ = lappend($1, $2); } 0.00 : 52536e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525375: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 525379: 48 8b 31 mov (%rcx),%rsi 0.00 : 52537c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525383: e8 f8 ca 0b 00 callq 5e1e80 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 525388: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : ColQualList: : ColQualList ColConstraint { $$ = lappend($1, $2); } 0.00 : 52538f: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 525392: e9 e9 c5 fe ff jmpq 511980 : } : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 525397: 48 8b 3d c2 54 69 00 mov 0x6954c2(%rip),%rdi # bba860 0.00 : 52539e: be 58 00 00 00 mov $0x58,%esi 0.00 : 5253a3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5253aa: e8 61 3a 27 00 callq 798e10 0.00 : 5253af: c7 00 96 03 00 00 movl $0x396,(%rax) : n->colname = $1; 0.00 : 5253b5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 5253bc: 48 89 c3 mov %rax,%rbx : n->is_from_type = false; : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collOid = InvalidOid; : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 5253bf: 48 8d 53 30 lea 0x30(%rbx),%rdx 0.00 : 5253c3: 48 8d 73 40 lea 0x40(%rbx),%rsi : yyscanner); : n->location = @1; : $$ = (Node *)n; 0.00 : 5253c7: 49 89 de mov %rbx,%r14 : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 5253ca: 48 8b 41 e8 mov -0x18(%rcx),%rax : n->typeName = NULL; 0.00 : 5253ce: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5253d5: 00 : n->inhcount = 0; 0.00 : 5253d6: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) : n->is_local = true; 0.00 : 5253dd: c6 43 1c 01 movb $0x1,0x1c(%rbx) : n->is_not_null = false; 0.00 : 5253e1: c6 43 1d 00 movb $0x0,0x1d(%rbx) : n->is_from_type = false; 0.00 : 5253e5: c6 43 1e 00 movb $0x0,0x1e(%rbx) : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 5253e9: 48 89 43 08 mov %rax,0x8(%rbx) : n->typeName = NULL; : n->inhcount = 0; : n->is_local = true; : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; 0.00 : 5253ed: c6 43 1f 00 movb $0x0,0x1f(%rbx) : n->raw_default = NULL; 0.00 : 5253f1: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 5253f8: 00 : n->cooked_default = NULL; 0.00 : 5253f9: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 525400: 00 : n->collOid = InvalidOid; 0.00 : 525401: c7 43 38 00 00 00 00 movl $0x0,0x38(%rbx) : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 525408: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52540f: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 525416: 48 8b 38 mov (%rax),%rdi 0.00 : 525419: e8 72 bd fe ff callq 511190 : yyscanner); : n->location = @1; 0.00 : 52541e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 525425: 8b 42 f4 mov -0xc(%rdx),%eax 0.00 : 525428: 89 43 50 mov %eax,0x50(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 52542b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525432: e9 49 c5 fe ff jmpq 511980 : | TableConstraint { $$ = $1; } : ; : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 525437: 48 8b 3d 22 54 69 00 mov 0x695422(%rip),%rdi # bba860 0.00 : 52543e: be 58 00 00 00 mov $0x58,%esi 0.00 : 525443: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52544a: e8 c1 39 27 00 callq 798e10 0.00 : 52544f: c7 00 96 03 00 00 movl $0x396,(%rax) : n->colname = $1; 0.00 : 525455: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : | TableConstraint { $$ = $1; } : ; : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 52545c: 48 89 c3 mov %rax,%rbx : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collOid = InvalidOid; : n->fdwoptions = $3; : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 52545f: 48 8d 53 30 lea 0x30(%rbx),%rdx : yyscanner); : n->location = @1; : $$ = (Node *)n; 0.00 : 525463: 49 89 de mov %rbx,%r14 : ; : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 525466: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 52546a: 48 89 43 08 mov %rax,0x8(%rbx) : n->typeName = $2; 0.00 : 52546e: 48 8b 46 f0 mov -0x10(%rsi),%rax : n->inhcount = 0; 0.00 : 525472: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) : n->is_local = true; 0.00 : 525479: c6 43 1c 01 movb $0x1,0x1c(%rbx) : n->is_not_null = false; 0.00 : 52547d: c6 43 1d 00 movb $0x0,0x1d(%rbx) : n->is_from_type = false; 0.00 : 525481: c6 43 1e 00 movb $0x0,0x1e(%rbx) : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; : n->typeName = $2; 0.00 : 525485: 48 89 43 10 mov %rax,0x10(%rbx) : n->inhcount = 0; : n->is_local = true; : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; 0.00 : 525489: c6 43 1f 00 movb $0x0,0x1f(%rbx) : n->raw_default = NULL; 0.00 : 52548d: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 525494: 00 : n->cooked_default = NULL; 0.00 : 525495: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 52549c: 00 : n->collOid = InvalidOid; 0.00 : 52549d: c7 43 38 00 00 00 00 movl $0x0,0x38(%rbx) : n->fdwoptions = $3; 0.00 : 5254a4: 48 8b 46 f8 mov -0x8(%rsi),%rax : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 5254a8: 48 8d 73 40 lea 0x40(%rbx),%rsi : n->is_from_type = false; : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collOid = InvalidOid; : n->fdwoptions = $3; 0.00 : 5254ac: 48 89 43 48 mov %rax,0x48(%rbx) : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 5254b0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5254b7: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 5254be: 48 8b 38 mov (%rax),%rdi 0.00 : 5254c1: e8 ca bc fe ff callq 511190 : yyscanner); : n->location = @1; 0.00 : 5254c6: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5254cd: 8b 42 f4 mov -0xc(%rdx),%eax 0.00 : 5254d0: 89 43 50 mov %eax,0x50(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 5254d3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5254da: e9 a1 c4 fe ff jmpq 511980 : | TableConstraint { $$ = $1; } : ; : : TypedTableElement: : columnOptions { $$ = $1; } : | TableConstraint { $$ = $1; } 0.00 : 5254df: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5254e6: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 5254e9: e9 92 c4 fe ff jmpq 511980 : | TableLikeClause { $$ = $1; } : | TableConstraint { $$ = $1; } : ; : : TypedTableElement: : columnOptions { $$ = $1; } 0.00 : 5254ee: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5254f5: 4c 8b 31 mov (%rcx),%r14 : | TableConstraint { $$ = $1; } 0.00 : 5254f8: e9 83 c4 fe ff jmpq 511980 : ; : : TableElement: : columnDef { $$ = $1; } : | TableLikeClause { $$ = $1; } : | TableConstraint { $$ = $1; } 0.00 : 5254fd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525504: 4c 8b 32 mov (%rdx),%r14 : ; 0.00 : 525507: e9 74 c4 fe ff jmpq 511980 : } : ; : : TableElement: : columnDef { $$ = $1; } : | TableLikeClause { $$ = $1; } 0.00 : 52550c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525513: 4c 8b 30 mov (%rax),%r14 : | TableConstraint { $$ = $1; } 0.00 : 525516: e9 65 c4 fe ff jmpq 511980 : $$ = lappend($1, $3); : } : ; : : TableElement: : columnDef { $$ = $1; } 0.00 : 52551b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525522: 4c 8b 36 mov (%rsi),%r14 : | TableLikeClause { $$ = $1; } 0.00 : 525525: e9 56 c4 fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | TypedTableElementList ',' TypedTableElement : { : $$ = lappend($1, $3); 0.00 : 52552a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525531: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 525535: 48 8b 33 mov (%rbx),%rsi 0.00 : 525538: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52553f: e8 3c c9 0b 00 callq 5e1e80 : } : ; 0.00 : 525544: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | TypedTableElementList ',' TypedTableElement : { : $$ = lappend($1, $3); 0.00 : 52554b: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52554e: e9 2d c4 fe ff jmpq 511980 : ; : : TypedTableElementList: : TypedTableElement : { : $$ = list_make1($1); 0.00 : 525553: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52555a: 31 f6 xor %esi,%esi 0.00 : 52555c: 48 8b 39 mov (%rcx),%rdi 0.00 : 52555f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525566: e8 e5 c2 0b 00 callq 5e1850 : } : | TypedTableElementList ',' TypedTableElement 0.00 : 52556b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TypedTableElementList: : TypedTableElement : { : $$ = list_make1($1); 0.00 : 525572: 49 89 c6 mov %rax,%r14 : } : | TypedTableElementList ',' TypedTableElement 0.00 : 525575: e9 06 c4 fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | TableElementList ',' TableElement : { : $$ = lappend($1, $3); 0.00 : 52557a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525581: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 525585: 48 8b 32 mov (%rdx),%rsi 0.00 : 525588: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52558f: e8 ec c8 0b 00 callq 5e1e80 : } : ; 0.00 : 525594: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | TableElementList ',' TableElement : { : $$ = lappend($1, $3); 0.00 : 52559b: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52559e: e9 dd c3 fe ff jmpq 511980 : ; : : TableElementList: : TableElement : { : $$ = list_make1($1); 0.00 : 5255a3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5255aa: 31 f6 xor %esi,%esi 0.00 : 5255ac: 48 8b 38 mov (%rax),%rdi 0.00 : 5255af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5255b6: e8 95 c2 0b 00 callq 5e1850 : } : | TableElementList ',' TableElement 0.00 : 5255bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TableElementList: : TableElement : { : $$ = list_make1($1); 0.00 : 5255c2: 49 89 c6 mov %rax,%r14 : } : | TableElementList ',' TableElement 0.00 : 5255c5: e9 b6 c3 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : OptTypedTableElementList: : '(' TypedTableElementList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255ca: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5255cd: e9 ae c3 fe ff jmpq 511980 : TableElementList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : OptTypedTableElementList: : '(' TypedTableElementList ')' { $$ = $2; } 0.00 : 5255d2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5255d9: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255dd: e9 9e c3 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } : ; : : OptTableElementList: : TableElementList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255e2: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5255e5: e9 96 c3 fe ff jmpq 511980 : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } : ; : : OptTableElementList: : TableElementList { $$ = $1; } 0.00 : 5255ea: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5255f1: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255f4: e9 87 c3 fe ff jmpq 511980 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; : } : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 5255f9: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 525600: ff ff ff 0.00 : 525603: 49 21 d6 and %rdx,%r14 0.00 : 525606: 49 83 ce 70 or $0x70,%r14 : ; 0.00 : 52560a: e9 71 c3 fe ff jmpq 511980 : ereport(WARNING, : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; : } : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } 0.00 : 52560f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 525616: ff ff ff 0.00 : 525619: 49 21 c6 and %rax,%r14 0.00 : 52561c: 49 83 ce 75 or $0x75,%r14 : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 525620: e9 5b c3 fe ff jmpq 511980 : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; : } : | GLOBAL TEMP : { : ereport(WARNING, 0.00 : 525625: 45 31 c0 xor %r8d,%r8d 0.00 : 525628: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52562d: ba 31 0b 00 00 mov $0xb31,%edx 0.00 : 525632: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 525637: bf 13 00 00 00 mov $0x13,%edi 0.00 : 52563c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525643: e8 78 54 25 00 callq 77aac0 0.00 : 525648: 84 c0 test %al,%al 0.00 : 52564a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525651: 74 36 je 525689 0.00 : 525653: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52565a: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 525661: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 525664: e8 37 86 fe ff callq 50dca0 0.00 : 525669: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 52566e: 89 c3 mov %eax,%ebx 0.00 : 525670: 31 c0 xor %eax,%eax 0.00 : 525672: e8 29 72 25 00 callq 77c8a0 0.00 : 525677: 89 de mov %ebx,%esi 0.00 : 525679: 89 c7 mov %eax,%edi 0.00 : 52567b: 31 c0 xor %eax,%eax 0.00 : 52567d: e8 5e 4f 25 00 callq 77a5e0 0.00 : 525682: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; 0.00 : 525689: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 525690: ff ff ff 0.00 : 525693: 49 21 f6 and %rsi,%r14 0.00 : 525696: 49 83 ce 74 or $0x74,%r14 : } : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } 0.00 : 52569a: e9 e1 c2 fe ff jmpq 511980 : | TEMP { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMP { $$ = RELPERSISTENCE_TEMP; } : | GLOBAL TEMPORARY : { : ereport(WARNING, 0.00 : 52569f: 45 31 c0 xor %r8d,%r8d 0.00 : 5256a2: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 5256a7: ba 2a 0b 00 00 mov $0xb2a,%edx 0.00 : 5256ac: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 5256b1: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5256b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5256bd: e8 fe 53 25 00 callq 77aac0 0.00 : 5256c2: 84 c0 test %al,%al 0.00 : 5256c4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5256cb: 74 36 je 525703 0.00 : 5256cd: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5256d4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5256db: 8b 7a fc mov -0x4(%rdx),%edi 0.00 : 5256de: e8 bd 85 fe ff callq 50dca0 0.00 : 5256e3: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 5256e8: 89 c3 mov %eax,%ebx 0.00 : 5256ea: 31 c0 xor %eax,%eax 0.00 : 5256ec: e8 af 71 25 00 callq 77c8a0 0.00 : 5256f1: 89 de mov %ebx,%esi 0.00 : 5256f3: 89 c7 mov %eax,%edi 0.00 : 5256f5: 31 c0 xor %eax,%eax 0.00 : 5256f7: e8 e4 4e 25 00 callq 77a5e0 0.00 : 5256fc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; 0.00 : 525703: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 52570a: ff ff ff 0.00 : 52570d: 49 21 ce and %rcx,%r14 0.00 : 525710: 49 83 ce 74 or $0x74,%r14 : } : | GLOBAL TEMP 0.00 : 525714: e9 67 c2 fe ff jmpq 511980 : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | TEMP { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525719: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 525720: ff ff ff 0.00 : 525723: 49 21 c6 and %rax,%r14 0.00 : 525726: 49 83 ce 74 or $0x74,%r14 : | GLOBAL TEMPORARY 0.00 : 52572a: e9 51 c2 fe ff jmpq 511980 : * implement LOCAL as meaning the same as our default temp table behavior, : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | TEMP { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } 0.00 : 52572f: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 525736: ff ff ff 0.00 : 525739: 49 21 f6 and %rsi,%r14 0.00 : 52573c: 49 83 ce 74 or $0x74,%r14 : | LOCAL TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525740: e9 3b c2 fe ff jmpq 511980 : * LOCAL keyword is really meaningless; furthermore, some other products : * implement LOCAL as meaning the same as our default temp table behavior, : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525745: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 52574c: ff ff ff 0.00 : 52574f: 49 21 de and %rbx,%r14 0.00 : 525752: 49 83 ce 74 or $0x74,%r14 : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525756: e9 25 c2 fe ff jmpq 511980 : * temp table behavior, so warn about that. Since we have no modules the : * LOCAL keyword is really meaningless; furthermore, some other products : * implement LOCAL as meaning the same as our default temp table behavior, : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } 0.00 : 52575b: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 525762: ff ff ff 0.00 : 525765: 49 21 ce and %rcx,%r14 0.00 : 525768: 49 83 ce 74 or $0x74,%r14 : | TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 52576c: e9 0f c2 fe ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525771: 48 8b 3d e8 50 69 00 mov 0x6950e8(%rip),%rdi # bba860 0.00 : 525778: be 50 00 00 00 mov $0x50,%esi 0.00 : 52577d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525784: e8 87 36 27 00 callq 798e10 0.00 : 525789: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $7->relpersistence = $2; 0.00 : 52578f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525796: 48 89 c3 mov %rax,%rbx : n->constraints = NIL; : n->options = $11; : n->oncommit = $12; : n->tablespacename = $13; : n->if_not_exists = true; : $$ = (Node *)n; 0.00 : 525799: 49 89 de mov %rbx,%r14 : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $7->relpersistence = $2; 0.00 : 52579c: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 5257a0: 8b 41 a8 mov -0x58(%rcx),%eax 0.00 : 5257a3: 88 42 24 mov %al,0x24(%rdx) : n->relation = $7; 0.00 : 5257a6: 48 8b 41 d0 mov -0x30(%rcx),%rax 0.00 : 5257aa: 48 89 43 08 mov %rax,0x8(%rbx) : n->tableElts = $10; 0.00 : 5257ae: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 5257b2: 48 89 43 10 mov %rax,0x10(%rbx) : n->ofTypename = makeTypeNameFromNameList($9); 0.00 : 5257b6: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 5257ba: e8 71 be 0c 00 callq 5f1630 0.00 : 5257bf: 48 89 43 20 mov %rax,0x20(%rbx) : n->ofTypename->location = @9; 0.00 : 5257c3: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5257ca: 8b 56 f0 mov -0x10(%rsi),%edx 0.00 : 5257cd: 89 50 30 mov %edx,0x30(%rax) : n->constraints = NIL; 0.00 : 5257d0: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 5257d7: 00 : n->options = $11; 0.00 : 5257d8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5257df: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 5257e3: 48 89 43 30 mov %rax,0x30(%rbx) : n->oncommit = $12; 0.00 : 5257e7: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 5257ea: 89 43 38 mov %eax,0x38(%rbx) : n->tablespacename = $13; 0.00 : 5257ed: 48 8b 02 mov (%rdx),%rax : n->if_not_exists = true; 0.00 : 5257f0: c6 43 48 01 movb $0x1,0x48(%rbx) : n->ofTypename = makeTypeNameFromNameList($9); : n->ofTypename->location = @9; : n->constraints = NIL; : n->options = $11; : n->oncommit = $12; : n->tablespacename = $13; 0.00 : 5257f4: 48 89 43 40 mov %rax,0x40(%rbx) : n->if_not_exists = true; : $$ = (Node *)n; : } : ; 0.00 : 5257f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5257ff: e9 7c c1 fe ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE OptTemp TABLE qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525804: 48 8b 3d 55 50 69 00 mov 0x695055(%rip),%rdi # bba860 0.00 : 52580b: be 50 00 00 00 mov $0x50,%esi 0.00 : 525810: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525817: e8 f4 35 27 00 callq 798e10 0.00 : 52581c: 48 89 c3 mov %rax,%rbx 0.00 : 52581f: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $4->relpersistence = $2; 0.00 : 525825: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->constraints = NIL; : n->options = $8; : n->oncommit = $9; : n->tablespacename = $10; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 52582c: 49 89 de mov %rbx,%r14 : } : | CREATE OptTemp TABLE qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $4->relpersistence = $2; 0.00 : 52582f: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 525833: 48 89 c1 mov %rax,%rcx 0.00 : 525836: 8b 40 c0 mov -0x40(%rax),%eax 0.00 : 525839: 88 42 24 mov %al,0x24(%rdx) : n->relation = $4; 0.00 : 52583c: 48 8b 41 d0 mov -0x30(%rcx),%rax 0.00 : 525840: 48 89 43 08 mov %rax,0x8(%rbx) : n->tableElts = $7; 0.00 : 525844: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 525848: 48 89 43 10 mov %rax,0x10(%rbx) : n->ofTypename = makeTypeNameFromNameList($6); 0.00 : 52584c: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 525850: e8 db bd 0c 00 callq 5f1630 0.00 : 525855: 48 89 43 20 mov %rax,0x20(%rbx) : n->ofTypename->location = @6; 0.00 : 525859: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 525860: 8b 56 f0 mov -0x10(%rsi),%edx 0.00 : 525863: 89 50 30 mov %edx,0x30(%rax) : n->constraints = NIL; 0.00 : 525866: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 52586d: 00 : n->options = $8; 0.00 : 52586e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525875: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 525879: 48 89 43 30 mov %rax,0x30(%rbx) : n->oncommit = $9; 0.00 : 52587d: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 525880: 89 43 38 mov %eax,0x38(%rbx) : n->tablespacename = $10; 0.00 : 525883: 48 8b 02 mov (%rdx),%rax : n->if_not_exists = false; 0.00 : 525886: c6 43 48 00 movb $0x0,0x48(%rbx) : n->ofTypename = makeTypeNameFromNameList($6); : n->ofTypename->location = @6; : n->constraints = NIL; : n->options = $8; : n->oncommit = $9; : n->tablespacename = $10; 0.00 : 52588a: 48 89 43 40 mov %rax,0x40(%rbx) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name 0.00 : 52588e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525895: e9 e6 c0 fe ff jmpq 511980 : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name '(' : OptTableElementList ')' OptInherit OptWith OnCommitOption : OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 52589a: 48 8b 3d bf 4f 69 00 mov 0x694fbf(%rip),%rdi # bba860 0.00 : 5258a1: be 50 00 00 00 mov $0x50,%esi 0.00 : 5258a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5258ad: e8 5e 35 27 00 callq 798e10 0.00 : 5258b2: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $7->relpersistence = $2; 0.00 : 5258b8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->constraints = NIL; : n->options = $12; : n->oncommit = $13; : n->tablespacename = $14; : n->if_not_exists = true; : $$ = (Node *)n; 0.00 : 5258bf: 49 89 c6 mov %rax,%r14 : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name '(' : OptTableElementList ')' OptInherit OptWith OnCommitOption : OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $7->relpersistence = $2; 0.00 : 5258c2: 8b 56 a0 mov -0x60(%rsi),%edx 0.00 : 5258c5: 48 8b 4e c8 mov -0x38(%rsi),%rcx 0.00 : 5258c9: 88 51 24 mov %dl,0x24(%rcx) : n->relation = $7; 0.00 : 5258cc: 48 8b 56 c8 mov -0x38(%rsi),%rdx 0.00 : 5258d0: 48 89 50 08 mov %rdx,0x8(%rax) : n->tableElts = $9; 0.00 : 5258d4: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 5258d8: 48 89 50 10 mov %rdx,0x10(%rax) : n->inhRelations = $11; 0.00 : 5258dc: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->constraints = NIL; 0.00 : 5258e0: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5258e7: 00 : { : CreateStmt *n = makeNode(CreateStmt); : $7->relpersistence = $2; : n->relation = $7; : n->tableElts = $9; : n->inhRelations = $11; 0.00 : 5258e8: 48 89 50 18 mov %rdx,0x18(%rax) : n->constraints = NIL; : n->options = $12; 0.00 : 5258ec: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 5258f0: 48 89 50 30 mov %rdx,0x30(%rax) : n->oncommit = $13; 0.00 : 5258f4: 8b 56 f8 mov -0x8(%rsi),%edx 0.00 : 5258f7: 89 50 38 mov %edx,0x38(%rax) : n->tablespacename = $14; 0.00 : 5258fa: 48 8b 16 mov (%rsi),%rdx : n->if_not_exists = true; 0.00 : 5258fd: c6 40 48 01 movb $0x1,0x48(%rax) : n->tableElts = $9; : n->inhRelations = $11; : n->constraints = NIL; : n->options = $12; : n->oncommit = $13; : n->tablespacename = $14; 0.00 : 525901: 48 89 50 40 mov %rdx,0x40(%rax) : n->if_not_exists = true; : $$ = (Node *)n; : } : | CREATE OptTemp TABLE qualified_name OF any_name 0.00 : 525905: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52590c: e9 6f c0 fe ff jmpq 511980 : *****************************************************************************/ : : CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')' : OptInherit OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525911: 48 8b 3d 48 4f 69 00 mov 0x694f48(%rip),%rdi # bba860 0.00 : 525918: be 50 00 00 00 mov $0x50,%esi 0.00 : 52591d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525924: e8 e7 34 27 00 callq 798e10 0.00 : 525929: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $4->relpersistence = $2; 0.00 : 52592f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->constraints = NIL; : n->options = $9; : n->oncommit = $10; : n->tablespacename = $11; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 525936: 49 89 c6 mov %rax,%r14 : : CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')' : OptInherit OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $4->relpersistence = $2; 0.00 : 525939: 8b 53 b8 mov -0x48(%rbx),%edx 0.00 : 52593c: 48 8b 4b c8 mov -0x38(%rbx),%rcx 0.00 : 525940: 88 51 24 mov %dl,0x24(%rcx) : n->relation = $4; 0.00 : 525943: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 525947: 48 89 50 08 mov %rdx,0x8(%rax) : n->tableElts = $6; 0.00 : 52594b: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 52594f: 48 89 50 10 mov %rdx,0x10(%rax) : n->inhRelations = $8; 0.00 : 525953: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->constraints = NIL; 0.00 : 525957: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 52595e: 00 : { : CreateStmt *n = makeNode(CreateStmt); : $4->relpersistence = $2; : n->relation = $4; : n->tableElts = $6; : n->inhRelations = $8; 0.00 : 52595f: 48 89 50 18 mov %rdx,0x18(%rax) : n->constraints = NIL; : n->options = $9; 0.00 : 525963: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 525967: 48 89 50 30 mov %rdx,0x30(%rax) : n->oncommit = $10; 0.00 : 52596b: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 52596e: 89 50 38 mov %edx,0x38(%rax) : n->tablespacename = $11; 0.00 : 525971: 48 8b 13 mov (%rbx),%rdx : n->if_not_exists = false; 0.00 : 525974: c6 40 48 00 movb $0x0,0x48(%rax) : n->tableElts = $6; : n->inhRelations = $8; : n->constraints = NIL; : n->options = $9; : n->oncommit = $10; : n->tablespacename = $11; 0.00 : 525978: 48 89 50 40 mov %rdx,0x40(%rax) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name '(' 0.00 : 52597c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525983: e9 f8 bf fe ff jmpq 511980 : } : ; : : /* beware of emitting non-string list elements here; see commands/define.c */ : copy_generic_opt_arg_list_item: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 525988: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52598f: 48 8b 39 mov (%rcx),%rdi 0.00 : 525992: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525999: e8 52 9d 0d 00 callq 5ff6f0 : ; 0.00 : 52599e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : /* beware of emitting non-string list elements here; see commands/define.c */ : copy_generic_opt_arg_list_item: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 5259a5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5259a8: e9 d3 bf fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item : { : $$ = lappend($1, $3); 0.00 : 5259ad: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5259b4: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5259b8: 48 8b 32 mov (%rdx),%rsi 0.00 : 5259bb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5259c2: e8 b9 c4 0b 00 callq 5e1e80 : } : ; 0.00 : 5259c7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item : { : $$ = lappend($1, $3); 0.00 : 5259ce: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5259d1: e9 aa bf fe ff jmpq 511980 : ; : : copy_generic_opt_arg_list: : copy_generic_opt_arg_list_item : { : $$ = list_make1($1); 0.00 : 5259d6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5259dd: 31 f6 xor %esi,%esi 0.00 : 5259df: 48 8b 38 mov (%rax),%rdi 0.00 : 5259e2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5259e9: e8 62 be 0b 00 callq 5e1850 : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item 0.00 : 5259ee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_generic_opt_arg_list: : copy_generic_opt_arg_list_item : { : $$ = list_make1($1); 0.00 : 5259f5: 49 89 c6 mov %rax,%r14 : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item 0.00 : 5259f8: e9 83 bf fe ff jmpq 511980 : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | '*' { $$ = (Node *) makeNode(A_Star); } : | '(' copy_generic_opt_arg_list ')' { $$ = (Node *) $2; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 5259fd: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525a00: e9 7b bf fe ff jmpq 511980 : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | '*' { $$ = (Node *) makeNode(A_Star); } : | '(' copy_generic_opt_arg_list ')' { $$ = (Node *) $2; } 0.00 : 525a05: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525a0c: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 525a10: e9 6b bf fe ff jmpq 511980 : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | '*' { $$ = (Node *) makeNode(A_Star); } 0.00 : 525a15: 48 8b 3d 44 4e 69 00 mov 0x694e44(%rip),%rdi # bba860 0.00 : 525a1c: be 04 00 00 00 mov $0x4,%esi 0.00 : 525a21: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525a28: e8 f3 35 27 00 callq 799020 0.00 : 525a2d: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 525a33: 49 89 c6 mov %rax,%r14 : | '(' copy_generic_opt_arg_list ')' { $$ = (Node *) $2; } 0.00 : 525a36: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525a3d: e9 3e bf fe ff jmpq 511980 : } : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } 0.00 : 525a42: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525a49: 4c 8b 33 mov (%rbx),%r14 : | '*' { $$ = (Node *) makeNode(A_Star); } 0.00 : 525a4c: e9 2f bf fe ff jmpq 511980 : $$ = makeDefElem($1, $2); : } : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 525a51: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525a58: 48 8b 39 mov (%rcx),%rdi 0.00 : 525a5b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525a62: e8 89 9c 0d 00 callq 5ff6f0 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 525a67: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem($1, $2); : } : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 525a6e: 49 89 c6 mov %rax,%r14 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 525a71: e9 0a bf fe ff jmpq 511980 : ; : : copy_generic_opt_elem: : ColLabel copy_generic_opt_arg : { : $$ = makeDefElem($1, $2); 0.00 : 525a76: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525a7d: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 525a81: 48 8b 32 mov (%rdx),%rsi 0.00 : 525a84: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525a8b: e8 70 ba 0c 00 callq 5f1500 : } : ; 0.00 : 525a90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_generic_opt_elem: : ColLabel copy_generic_opt_arg : { : $$ = makeDefElem($1, $2); 0.00 : 525a97: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525a9a: e9 e1 be fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | copy_generic_opt_list ',' copy_generic_opt_elem : { : $$ = lappend($1, $3); 0.00 : 525a9f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525aa6: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 525aaa: 48 8b 36 mov (%rsi),%rsi 0.00 : 525aad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525ab4: e8 c7 c3 0b 00 callq 5e1e80 : } : ; 0.00 : 525ab9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | copy_generic_opt_list ',' copy_generic_opt_elem : { : $$ = lappend($1, $3); 0.00 : 525ac0: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525ac3: e9 b8 be fe ff jmpq 511980 : : /* new COPY option syntax */ : copy_generic_opt_list: : copy_generic_opt_elem : { : $$ = list_make1($1); 0.00 : 525ac8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525acf: 31 f6 xor %esi,%esi 0.00 : 525ad1: 48 8b 3b mov (%rbx),%rdi 0.00 : 525ad4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525adb: e8 70 bd 0b 00 callq 5e1850 : } : | copy_generic_opt_list ',' copy_generic_opt_elem 0.00 : 525ae0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* new COPY option syntax */ : copy_generic_opt_list: : copy_generic_opt_elem : { : $$ = list_make1($1); 0.00 : 525ae7: 49 89 c6 mov %rax,%r14 : } : | copy_generic_opt_list ',' copy_generic_opt_elem 0.00 : 525aea: e9 91 be fe ff jmpq 511980 : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 525aef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525af6: 48 8b 39 mov (%rcx),%rdi 0.00 : 525af9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b00: e8 4b 34 27 00 callq 798f50 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 525b05: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 525b0c: 49 89 c6 mov %rax,%r14 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 525b0f: e9 6c be fe ff jmpq 511980 0.00 : 525b14: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525b1b: 48 8b 3b mov (%rbx),%rdi 0.00 : 525b1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b25: e8 26 34 27 00 callq 798f50 : | reserved_keyword { $$ = pstrdup($1); } 0.00 : 525b2a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 525b31: 49 89 c6 mov %rax,%r14 : | reserved_keyword { $$ = pstrdup($1); } 0.00 : 525b34: e9 47 be fe ff jmpq 511980 : copy_delimiter: : opt_using DELIMITERS Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b39: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525b3c: e9 3f be fe ff jmpq 511980 : ; : : copy_delimiter: : opt_using DELIMITERS Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525b41: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525b48: 48 8b 39 mov (%rcx),%rdi 0.00 : 525b4b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b52: e8 99 9b 0d 00 callq 5ff6f0 0.00 : 525b57: bf 7d 65 8b 00 mov $0x8b657d,%edi 0.00 : 525b5c: 48 89 c6 mov %rax,%rsi 0.00 : 525b5f: e8 9c b9 0c 00 callq 5f1500 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b64: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_delimiter: : opt_using DELIMITERS Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525b6b: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b6e: e9 0d be fe ff jmpq 511980 : opt_oids: : WITH OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b73: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525b76: e9 05 be fe ff jmpq 511980 : ; : : opt_oids: : WITH OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525b7b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525b80: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b87: e8 c4 9b 0d 00 callq 5ff750 0.00 : 525b8c: bf 3b aa 8d 00 mov $0x8daa3b,%edi 0.00 : 525b91: 48 89 c6 mov %rax,%rsi 0.00 : 525b94: e8 67 b9 0c 00 callq 5f1500 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b99: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : opt_oids: : WITH OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525ba0: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525ba3: e9 d8 bd fe ff jmpq 511980 : opt_binary: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525ba8: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525bab: e9 d0 bd fe ff jmpq 511980 : /* The following exist for backward compatibility with very old versions */ : : opt_binary: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525bb0: bf 8e 20 8e 00 mov $0x8e208e,%edi 0.00 : 525bb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525bbc: e8 2f 9b 0d 00 callq 5ff6f0 0.00 : 525bc1: bf 3f 89 87 00 mov $0x87893f,%edi 0.00 : 525bc6: 48 89 c6 mov %rax,%rsi 0.00 : 525bc9: e8 32 b9 0c 00 callq 5f1500 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525bce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* The following exist for backward compatibility with very old versions */ : : opt_binary: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525bd5: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525bd8: e9 a3 bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_null", (Node *)$3); : } : | ENCODING Sconst : { : $$ = makeDefElem("encoding", (Node *)makeString($2)); 0.00 : 525bdd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525be4: 48 8b 3a mov (%rdx),%rdi 0.00 : 525be7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525bee: e8 fd 9a 0d 00 callq 5ff6f0 0.00 : 525bf3: bf 73 b4 8d 00 mov $0x8db473,%edi 0.00 : 525bf8: 48 89 c6 mov %rax,%rsi 0.00 : 525bfb: e8 00 b9 0c 00 callq 5f1500 : } : ; 0.00 : 525c00: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_null", (Node *)$3); : } : | ENCODING Sconst : { : $$ = makeDefElem("encoding", (Node *)makeString($2)); 0.00 : 525c07: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525c0a: e9 71 bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_not_null", (Node *)$4); : } : | FORCE NULL_P columnList : { : $$ = makeDefElem("force_null", (Node *)$3); 0.00 : 525c0f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525c16: bf b6 95 7c 00 mov $0x7c95b6,%edi 0.00 : 525c1b: 48 8b 30 mov (%rax),%rsi 0.00 : 525c1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525c25: e8 d6 b8 0c 00 callq 5f1500 : } : | ENCODING Sconst 0.00 : 525c2a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_not_null", (Node *)$4); : } : | FORCE NULL_P columnList : { : $$ = makeDefElem("force_null", (Node *)$3); 0.00 : 525c31: 49 89 c6 mov %rax,%r14 : } : | ENCODING Sconst 0.00 : 525c34: e9 47 bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); : } : | FORCE NOT NULL_P columnList : { : $$ = makeDefElem("force_not_null", (Node *)$4); 0.00 : 525c39: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525c40: bf a7 95 7c 00 mov $0x7c95a7,%edi 0.00 : 525c45: 48 8b 33 mov (%rbx),%rsi 0.00 : 525c48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525c4f: e8 ac b8 0c 00 callq 5f1500 : } : | FORCE NULL_P columnList 0.00 : 525c54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); : } : | FORCE NOT NULL_P columnList : { : $$ = makeDefElem("force_not_null", (Node *)$4); 0.00 : 525c5b: 49 89 c6 mov %rax,%r14 : } : | FORCE NULL_P columnList 0.00 : 525c5e: e9 1d bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_quote", (Node *)$3); : } : | FORCE QUOTE '*' : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); 0.00 : 525c63: 48 8b 3d f6 4b 69 00 mov 0x694bf6(%rip),%rdi # bba860 0.00 : 525c6a: be 04 00 00 00 mov $0x4,%esi 0.00 : 525c6f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525c76: e8 a5 33 27 00 callq 799020 0.00 : 525c7b: bf 9b 95 7c 00 mov $0x7c959b,%edi 0.00 : 525c80: 48 89 c6 mov %rax,%rsi 0.00 : 525c83: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 525c89: e8 72 b8 0c 00 callq 5f1500 : } : | FORCE NOT NULL_P columnList 0.00 : 525c8e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_quote", (Node *)$3); : } : | FORCE QUOTE '*' : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); 0.00 : 525c95: 49 89 c6 mov %rax,%r14 : } : | FORCE NOT NULL_P columnList 0.00 : 525c98: e9 e3 bc fe ff jmpq 511980 : { : $$ = makeDefElem("escape", (Node *)makeString($3)); : } : | FORCE QUOTE columnList : { : $$ = makeDefElem("force_quote", (Node *)$3); 0.00 : 525c9d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525ca4: bf 9b 95 7c 00 mov $0x7c959b,%edi 0.00 : 525ca9: 48 8b 31 mov (%rcx),%rsi 0.00 : 525cac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525cb3: e8 48 b8 0c 00 callq 5f1500 : } : | FORCE QUOTE '*' 0.00 : 525cb8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("escape", (Node *)makeString($3)); : } : | FORCE QUOTE columnList : { : $$ = makeDefElem("force_quote", (Node *)$3); 0.00 : 525cbf: 49 89 c6 mov %rax,%r14 : } : | FORCE QUOTE '*' 0.00 : 525cc2: e9 b9 bc fe ff jmpq 511980 : { : $$ = makeDefElem("quote", (Node *)makeString($3)); : } : | ESCAPE opt_as Sconst : { : $$ = makeDefElem("escape", (Node *)makeString($3)); 0.00 : 525cc7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525cce: 48 8b 3a mov (%rdx),%rdi 0.00 : 525cd1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525cd8: e8 13 9a 0d 00 callq 5ff6f0 0.00 : 525cdd: bf 7e 93 7c 00 mov $0x7c937e,%edi 0.00 : 525ce2: 48 89 c6 mov %rax,%rsi 0.00 : 525ce5: e8 16 b8 0c 00 callq 5f1500 : } : | FORCE QUOTE columnList 0.00 : 525cea: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("quote", (Node *)makeString($3)); : } : | ESCAPE opt_as Sconst : { : $$ = makeDefElem("escape", (Node *)makeString($3)); 0.00 : 525cf1: 49 89 c6 mov %rax,%r14 : } : | FORCE QUOTE columnList 0.00 : 525cf4: e9 87 bc fe ff jmpq 511980 : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); : } : | QUOTE opt_as Sconst : { : $$ = makeDefElem("quote", (Node *)makeString($3)); 0.00 : 525cf9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525d00: 48 8b 38 mov (%rax),%rdi 0.00 : 525d03: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d0a: e8 e1 99 0d 00 callq 5ff6f0 0.00 : 525d0f: bf a1 95 7c 00 mov $0x7c95a1,%edi 0.00 : 525d14: 48 89 c6 mov %rax,%rsi 0.00 : 525d17: e8 e4 b7 0c 00 callq 5f1500 : } : | ESCAPE opt_as Sconst 0.00 : 525d1c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); : } : | QUOTE opt_as Sconst : { : $$ = makeDefElem("quote", (Node *)makeString($3)); 0.00 : 525d23: 49 89 c6 mov %rax,%r14 : } : | ESCAPE opt_as Sconst 0.00 : 525d26: e9 55 bc fe ff jmpq 511980 : { : $$ = makeDefElem("format", (Node *)makeString("csv")); : } : | HEADER_P : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); 0.00 : 525d2b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525d30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d37: e8 14 9a 0d 00 callq 5ff750 0.00 : 525d3c: bf 94 95 7c 00 mov $0x7c9594,%edi 0.00 : 525d41: 48 89 c6 mov %rax,%rsi 0.00 : 525d44: e8 b7 b7 0c 00 callq 5f1500 : } : | QUOTE opt_as Sconst 0.00 : 525d49: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("format", (Node *)makeString("csv")); : } : | HEADER_P : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); 0.00 : 525d50: 49 89 c6 mov %rax,%r14 : } : | QUOTE opt_as Sconst 0.00 : 525d53: e9 28 bc fe ff jmpq 511980 : { : $$ = makeDefElem("null", (Node *)makeString($3)); : } : | CSV : { : $$ = makeDefElem("format", (Node *)makeString("csv")); 0.00 : 525d58: bf 69 11 8a 00 mov $0x8a1169,%edi 0.00 : 525d5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d64: e8 87 99 0d 00 callq 5ff6f0 0.00 : 525d69: bf 3f 89 87 00 mov $0x87893f,%edi 0.00 : 525d6e: 48 89 c6 mov %rax,%rsi 0.00 : 525d71: e8 8a b7 0c 00 callq 5f1500 : } : | HEADER_P 0.00 : 525d76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("null", (Node *)makeString($3)); : } : | CSV : { : $$ = makeDefElem("format", (Node *)makeString("csv")); 0.00 : 525d7d: 49 89 c6 mov %rax,%r14 : } : | HEADER_P 0.00 : 525d80: e9 fb bb fe ff jmpq 511980 : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); : } : | NULL_P opt_as Sconst : { : $$ = makeDefElem("null", (Node *)makeString($3)); 0.00 : 525d85: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525d8c: 48 8b 3e mov (%rsi),%rdi 0.00 : 525d8f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d96: e8 55 99 0d 00 callq 5ff6f0 0.00 : 525d9b: bf 97 ef 8b 00 mov $0x8bef97,%edi 0.00 : 525da0: 48 89 c6 mov %rax,%rsi 0.00 : 525da3: e8 58 b7 0c 00 callq 5f1500 : } : | CSV 0.00 : 525da8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); : } : | NULL_P opt_as Sconst : { : $$ = makeDefElem("null", (Node *)makeString($3)); 0.00 : 525daf: 49 89 c6 mov %rax,%r14 : } : | CSV 0.00 : 525db2: e9 c9 bb fe ff jmpq 511980 : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); : } : | DELIMITER opt_as Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525db7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525dbe: 48 8b 3b mov (%rbx),%rdi 0.00 : 525dc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525dc8: e8 23 99 0d 00 callq 5ff6f0 0.00 : 525dcd: bf 7d 65 8b 00 mov $0x8b657d,%edi 0.00 : 525dd2: 48 89 c6 mov %rax,%rsi 0.00 : 525dd5: e8 26 b7 0c 00 callq 5f1500 : } : | NULL_P opt_as Sconst 0.00 : 525dda: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); : } : | DELIMITER opt_as Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525de1: 49 89 c6 mov %rax,%r14 : } : | NULL_P opt_as Sconst 0.00 : 525de4: e9 97 bb fe ff jmpq 511980 : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); : } : | FREEZE : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); 0.00 : 525de9: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525dee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525df5: e8 56 99 0d 00 callq 5ff750 0.00 : 525dfa: bf 8d 95 7c 00 mov $0x7c958d,%edi 0.00 : 525dff: 48 89 c6 mov %rax,%rsi 0.00 : 525e02: e8 f9 b6 0c 00 callq 5f1500 : } : | DELIMITER opt_as Sconst 0.00 : 525e07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); : } : | FREEZE : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); 0.00 : 525e0e: 49 89 c6 mov %rax,%r14 : } : | DELIMITER opt_as Sconst 0.00 : 525e11: e9 6a bb fe ff jmpq 511980 : { : $$ = makeDefElem("format", (Node *)makeString("binary")); : } : | OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525e16: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525e1b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525e22: e8 29 99 0d 00 callq 5ff750 0.00 : 525e27: bf 3b aa 8d 00 mov $0x8daa3b,%edi 0.00 : 525e2c: 48 89 c6 mov %rax,%rsi 0.00 : 525e2f: e8 cc b6 0c 00 callq 5f1500 : } : | FREEZE 0.00 : 525e34: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("format", (Node *)makeString("binary")); : } : | OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525e3b: 49 89 c6 mov %rax,%r14 : } : | FREEZE 0.00 : 525e3e: e9 3d bb fe ff jmpq 511980 : ; : : copy_opt_item: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525e43: bf 8e 20 8e 00 mov $0x8e208e,%edi 0.00 : 525e48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525e4f: e8 9c 98 0d 00 callq 5ff6f0 0.00 : 525e54: bf 3f 89 87 00 mov $0x87893f,%edi 0.00 : 525e59: 48 89 c6 mov %rax,%rsi 0.00 : 525e5c: e8 9f b6 0c 00 callq 5f1500 : } : | OIDS 0.00 : 525e61: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_opt_item: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525e68: 49 89 c6 mov %rax,%r14 : } : | OIDS 0.00 : 525e6b: e9 10 bb fe ff jmpq 511980 : ; : : /* old COPY option syntax */ : copy_opt_list: : copy_opt_list copy_opt_item { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 525e70: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525e73: e9 08 bb fe ff jmpq 511980 : | '(' copy_generic_opt_list ')' { $$ = $2; } : ; : : /* old COPY option syntax */ : copy_opt_list: : copy_opt_list copy_opt_item { $$ = lappend($1, $2); } 0.00 : 525e78: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525e7f: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 525e83: 48 8b 31 mov (%rcx),%rsi 0.00 : 525e86: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525e8d: e8 ee bf 0b 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 525e92: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '(' copy_generic_opt_list ')' { $$ = $2; } : ; : : /* old COPY option syntax */ : copy_opt_list: : copy_opt_list copy_opt_item { $$ = lappend($1, $2); } 0.00 : 525e99: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 525e9c: e9 df ba fe ff jmpq 511980 : | STDIN { $$ = NULL; } : | STDOUT { $$ = NULL; } : ; : : copy_options: copy_opt_list { $$ = $1; } : | '(' copy_generic_opt_list ')' { $$ = $2; } 0.00 : 525ea1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525ea8: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : ; 0.00 : 525eac: e9 cf ba fe ff jmpq 511980 : Sconst { $$ = $1; } : | STDIN { $$ = NULL; } : | STDOUT { $$ = NULL; } : ; : : copy_options: copy_opt_list { $$ = $1; } 0.00 : 525eb1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525eb8: 4c 8b 30 mov (%rax),%r14 : | '(' copy_generic_opt_list ')' { $$ = $2; } 0.00 : 525ebb: e9 c0 ba fe ff jmpq 511980 : * stdout. We silently correct the "typo".) - AY 9/94 : */ : copy_file_name: : Sconst { $$ = $1; } : | STDIN { $$ = NULL; } : | STDOUT { $$ = NULL; } 0.00 : 525ec0: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525ec3: e9 b8 ba fe ff jmpq 511980 : * used depends on the direction. (It really doesn't make sense to copy from : * stdout. We silently correct the "typo".) - AY 9/94 : */ : copy_file_name: : Sconst { $$ = $1; } : | STDIN { $$ = NULL; } 0.00 : 525ec8: 45 31 f6 xor %r14d,%r14d : | STDOUT { $$ = NULL; } 0.00 : 525ecb: e9 b0 ba fe ff jmpq 511980 : * copy_file_name NULL indicates stdio is used. Whether stdin or stdout is : * used depends on the direction. (It really doesn't make sense to copy from : * stdout. We silently correct the "typo".) - AY 9/94 : */ : copy_file_name: : Sconst { $$ = $1; } 0.00 : 525ed0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525ed7: 4c 8b 36 mov (%rsi),%r14 : | STDIN { $$ = NULL; } 0.00 : 525eda: e9 a1 ba fe ff jmpq 511980 : | TO { $$ = FALSE; } : ; : : opt_program: : PROGRAM { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } 0.00 : 525edf: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 525ee2: e9 99 ba fe ff jmpq 511980 : FROM { $$ = TRUE; } : | TO { $$ = FALSE; } : ; : : opt_program: : PROGRAM { $$ = TRUE; } 0.00 : 525ee7: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = FALSE; } 0.00 : 525eea: e9 91 ba fe ff jmpq 511980 : } : ; : : copy_from: : FROM { $$ = TRUE; } : | TO { $$ = FALSE; } 0.00 : 525eef: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 525ef2: e9 89 ba fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : copy_from: : FROM { $$ = TRUE; } 0.00 : 525ef7: 41 b6 01 mov $0x1,%r14b : | TO { $$ = FALSE; } 0.00 : 525efa: e9 81 ba fe ff jmpq 511980 : n->options = list_concat(n->options, $11); : $$ = (Node *)n; : } : | COPY select_with_parens TO opt_program copy_file_name opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 525eff: 48 8b 3d 5a 49 69 00 mov 0x69495a(%rip),%rdi # bba860 0.00 : 525f06: be 38 00 00 00 mov $0x38,%esi 0.00 : 525f0b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525f12: e8 f9 2e 27 00 callq 798e10 0.00 : 525f17: c7 00 cb 02 00 00 movl $0x2cb,(%rax) : n->relation = NULL; 0.00 : 525f1d: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 525f24: 00 : n->options = list_concat(n->options, $11); : $$ = (Node *)n; : } : | COPY select_with_parens TO opt_program copy_file_name opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 525f25: 48 89 c2 mov %rax,%rdx : n->relation = NULL; : n->query = $2; 0.00 : 525f28: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525f2f: 48 8b 41 d8 mov -0x28(%rcx),%rax : n->attlist = NIL; 0.00 : 525f33: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 525f3a: 00 : n->is_from = false; 0.00 : 525f3b: c6 42 20 00 movb $0x0,0x20(%rdx) : } : | COPY select_with_parens TO opt_program copy_file_name opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); : n->relation = NULL; : n->query = $2; 0.00 : 525f3f: 48 89 42 10 mov %rax,0x10(%rdx) : n->attlist = NIL; : n->is_from = false; : n->is_program = $4; 0.00 : 525f43: 0f b6 41 e8 movzbl -0x18(%rcx),%eax 0.00 : 525f47: 88 42 21 mov %al,0x21(%rdx) : n->filename = $5; 0.00 : 525f4a: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->options = $7; : : if (n->is_program && n->filename == NULL) 0.00 : 525f4e: 80 7a 21 00 cmpb $0x0,0x21(%rdx) : n->relation = NULL; : n->query = $2; : n->attlist = NIL; : n->is_from = false; : n->is_program = $4; : n->filename = $5; 0.00 : 525f52: 48 89 42 28 mov %rax,0x28(%rdx) : n->options = $7; 0.00 : 525f56: 48 8b 01 mov (%rcx),%rax 0.00 : 525f59: 48 89 42 30 mov %rax,0x30(%rdx) : : if (n->is_program && n->filename == NULL) 0.00 : 525f5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525f64: 74 0b je 525f71 0.00 : 525f66: 48 83 7a 28 00 cmpq $0x0,0x28(%rdx) 0.00 : 525f6b: 0f 84 45 3c 00 00 je 529bb6 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("STDIN/STDOUT not allowed with PROGRAM"), : parser_errposition(@5))); : : $$ = (Node *)n; 0.00 : 525f71: 49 89 d6 mov %rdx,%r14 : } : ; 0.00 : 525f74: e9 07 ba fe ff jmpq 511980 : n->portalname = $2; : $$ = (Node *)n; : } : | CLOSE ALL : { : ClosePortalStmt *n = makeNode(ClosePortalStmt); 0.00 : 525f79: 48 8b 3d e0 48 69 00 mov 0x6948e0(%rip),%rdi # bba860 0.00 : 525f80: be 10 00 00 00 mov $0x10,%esi 0.00 : 525f85: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525f8c: e8 7f 2e 27 00 callq 798e10 0.00 : 525f91: c7 00 c9 02 00 00 movl $0x2c9,(%rax) : n->portalname = NULL; 0.00 : 525f97: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 525f9e: 00 : $$ = (Node *)n; 0.00 : 525f9f: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525fa2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525fa9: e9 d2 b9 fe ff jmpq 511980 : *****************************************************************************/ : : ClosePortalStmt: : CLOSE cursor_name : { : ClosePortalStmt *n = makeNode(ClosePortalStmt); 0.00 : 525fae: 48 8b 3d ab 48 69 00 mov 0x6948ab(%rip),%rdi # bba860 0.00 : 525fb5: be 10 00 00 00 mov $0x10,%esi 0.00 : 525fba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525fc1: e8 4a 2e 27 00 callq 798e10 0.00 : 525fc6: c7 00 c9 02 00 00 movl $0x2c9,(%rax) : n->portalname = $2; 0.00 : 525fcc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 525fd3: 49 89 c6 mov %rax,%r14 : : ClosePortalStmt: : CLOSE cursor_name : { : ClosePortalStmt *n = makeNode(ClosePortalStmt); : n->portalname = $2; 0.00 : 525fd6: 48 8b 11 mov (%rcx),%rdx 0.00 : 525fd9: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | CLOSE ALL 0.00 : 525fdd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525fe4: e9 97 b9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 525fe9: 48 8b 3d 70 48 69 00 mov 0x694870(%rip),%rdi # bba860 0.00 : 525ff0: be 20 00 00 00 mov $0x20,%esi 0.00 : 525ff5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525ffc: e8 0f 2e 27 00 callq 798e10 0.00 : 526001: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526007: 48 8b 3d 52 48 69 00 mov 0x694852(%rip),%rdi # bba860 : $$ = (Node *)n; : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52600e: 48 89 c3 mov %rax,%rbx : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526011: be 58 00 00 00 mov $0x58,%esi : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; : def->collClause = (CollateClause *) $7; : def->raw_default = NULL; : def->location = @3; : $$ = (Node *)n; 0.00 : 526016: 49 89 de mov %rbx,%r14 : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526019: e8 f2 2d 27 00 callq 798e10 0.00 : 52601e: c7 00 96 03 00 00 movl $0x396,(%rax) : n->subtype = AT_AlterColumnType; 0.00 : 526024: c7 43 04 18 00 00 00 movl $0x18,0x4(%rbx) : n->name = $3; 0.00 : 52602b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526032: 48 8b 51 d8 mov -0x28(%rcx),%rdx : n->def = (Node *) def; 0.00 : 526036: 48 89 43 10 mov %rax,0x10(%rbx) : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); : n->subtype = AT_AlterColumnType; : n->name = $3; 0.00 : 52603a: 48 89 53 08 mov %rdx,0x8(%rbx) : n->def = (Node *) def; : n->behavior = $8; 0.00 : 52603e: 8b 11 mov (%rcx),%edx 0.00 : 526040: 89 53 18 mov %edx,0x18(%rbx) : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; 0.00 : 526043: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 526047: 48 89 50 10 mov %rdx,0x10(%rax) : def->collClause = (CollateClause *) $7; 0.00 : 52604b: 48 8b 51 f8 mov -0x8(%rcx),%rdx : def->raw_default = NULL; 0.00 : 52604f: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 526056: 00 : n->name = $3; : n->def = (Node *) def; : n->behavior = $8; : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; : def->collClause = (CollateClause *) $7; 0.00 : 526057: 48 89 50 30 mov %rdx,0x30(%rax) : def->raw_default = NULL; : def->location = @3; 0.00 : 52605b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 526062: 8b 56 ec mov -0x14(%rsi),%edx 0.00 : 526065: 89 50 50 mov %edx,0x50(%rax) : $$ = (Node *)n; : } : ; 0.00 : 526068: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52606f: e9 0c b9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526074: 48 8b 3d e5 47 69 00 mov 0x6947e5(%rip),%rdi # bba860 0.00 : 52607b: be 20 00 00 00 mov $0x20,%esi 0.00 : 526080: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526087: e8 84 2d 27 00 callq 798e10 0.00 : 52608c: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 526092: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $3; : n->behavior = $4; : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 526099: 49 89 c6 mov %rax,%r14 : /* ALTER TYPE DROP ATTRIBUTE [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; 0.00 : 52609c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5260a3: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5260a7: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $4; 0.00 : 5260ab: 8b 16 mov (%rsi),%edx : n->missing_ok = FALSE; 0.00 : 5260ad: c6 40 1c 00 movb $0x0,0x1c(%rax) : | DROP ATTRIBUTE ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; : n->behavior = $4; 0.00 : 5260b1: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ 0.00 : 5260b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5260bb: e9 c0 b8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE IF EXISTS [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5260c0: 48 8b 3d 99 47 69 00 mov 0x694799(%rip),%rdi # bba860 0.00 : 5260c7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5260cc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5260d3: e8 38 2d 27 00 callq 798e10 0.00 : 5260d8: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 5260de: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $5; : n->behavior = $6; : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 5260e5: 49 89 c6 mov %rax,%r14 : /* ALTER TYPE DROP ATTRIBUTE IF EXISTS [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; 0.00 : 5260e8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5260ef: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5260f3: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $6; 0.00 : 5260f7: 8b 13 mov (%rbx),%edx : n->missing_ok = TRUE; 0.00 : 5260f9: c6 40 1c 01 movb $0x1,0x1c(%rax) : | DROP ATTRIBUTE IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; : n->behavior = $6; 0.00 : 5260fd: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE [RESTRICT|CASCADE] */ 0.00 : 526100: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526107: e9 74 b8 fe ff jmpq 511980 : : alter_type_cmd: : /* ALTER TYPE ADD ATTRIBUTE [RESTRICT|CASCADE] */ : ADD_P ATTRIBUTE TableFuncElement opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52610c: 48 8b 3d 4d 47 69 00 mov 0x69474d(%rip),%rdi # bba860 0.00 : 526113: be 20 00 00 00 mov $0x20,%esi 0.00 : 526118: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52611f: e8 ec 2c 27 00 callq 798e10 0.00 : 526124: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddColumn; 0.00 : 52612a: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->def = $3; : n->behavior = $4; : $$ = (Node *)n; 0.00 : 526131: 49 89 c6 mov %rax,%r14 : /* ALTER TYPE ADD ATTRIBUTE [RESTRICT|CASCADE] */ : ADD_P ATTRIBUTE TableFuncElement opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddColumn; : n->def = $3; 0.00 : 526134: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52613b: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52613f: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $4; 0.00 : 526143: 8b 11 mov (%rcx),%edx 0.00 : 526145: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 526148: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52614f: e9 2c b8 fe ff jmpq 511980 : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 526154: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52615b: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 52615f: 48 8b 36 mov (%rsi),%rsi 0.00 : 526162: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526169: e8 12 bd 0b 00 callq 5e1e80 : ; 0.00 : 52616e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 526175: 49 89 c6 mov %rax,%r14 : ; 0.00 : 526178: e9 03 b8 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } 0.00 : 52617d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526184: 31 f6 xor %esi,%esi 0.00 : 526186: 48 8b 3b mov (%rbx),%rdi 0.00 : 526189: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526190: e8 bb b6 0b 00 callq 5e1850 : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 526195: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } 0.00 : 52619c: 49 89 c6 mov %rax,%r14 : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 52619f: e9 dc b7 fe ff jmpq 511980 : *****************************************************************************/ : : AlterCompositeTypeStmt: : ALTER TYPE_P any_name alter_type_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5261a4: 48 8b 3d b5 46 69 00 mov 0x6946b5(%rip),%rdi # bba860 0.00 : 5261ab: be 20 00 00 00 mov $0x20,%esi 0.00 : 5261b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5261b7: e8 54 2c 27 00 callq 798e10 0.00 : 5261bc: 48 89 c3 mov %rax,%rbx 0.00 : 5261bf: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : : /* can't use qualified_name, sigh */ : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 5261c5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5261cc: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : n->cmds = $4; : n->relkind = OBJECT_TYPE; : $$ = (Node *)n; 0.00 : 5261d3: 49 89 de mov %rbx,%r14 : ALTER TYPE_P any_name alter_type_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : : /* can't use qualified_name, sigh */ : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 5261d6: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5261da: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 5261e1: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 5261e4: e8 57 ac fe ff callq 510e40 0.00 : 5261e9: 48 89 43 08 mov %rax,0x8(%rbx) : n->cmds = $4; 0.00 : 5261ed: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5261f4: 48 8b 01 mov (%rcx),%rax : n->relkind = OBJECT_TYPE; 0.00 : 5261f7: c7 43 18 22 00 00 00 movl $0x22,0x18(%rbx) : { : AlterTableStmt *n = makeNode(AlterTableStmt); : : /* can't use qualified_name, sigh */ : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); : n->cmds = $4; 0.00 : 5261fe: 48 89 43 10 mov %rax,0x10(%rbx) : n->relkind = OBJECT_TYPE; : $$ = (Node *)n; : } : ; 0.00 : 526202: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526209: e9 72 b7 fe ff jmpq 511980 : $$ = makeDefElemExtended($1, $3, (Node *) $5, : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel : { : $$ = makeDefElemExtended($1, $3, NULL, DEFELEM_UNSPEC); 0.00 : 52620e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 526215: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52621c: 31 c9 xor %ecx,%ecx 0.00 : 52621e: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 526222: 48 8b 33 mov (%rbx),%rsi 0.00 : 526225: 31 d2 xor %edx,%edx 0.00 : 526227: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52622e: e8 6d b2 0c 00 callq 5f14a0 : } : ; 0.00 : 526233: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElemExtended($1, $3, (Node *) $5, : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel : { : $$ = makeDefElemExtended($1, $3, NULL, DEFELEM_UNSPEC); 0.00 : 52623a: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52623d: e9 3e b7 fe ff jmpq 511980 : { : $$ = makeDefElem($1, NULL); : } : | ColLabel '.' ColLabel '=' def_arg : { : $$ = makeDefElemExtended($1, $3, (Node *) $5, 0.00 : 526242: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 526249: 31 c9 xor %ecx,%ecx 0.00 : 52624b: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 52624f: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 526253: 48 8b 10 mov (%rax),%rdx 0.00 : 526256: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52625d: e8 3e b2 0c 00 callq 5f14a0 : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel 0.00 : 526262: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, NULL); : } : | ColLabel '.' ColLabel '=' def_arg : { : $$ = makeDefElemExtended($1, $3, (Node *) $5, 0.00 : 526269: 49 89 c6 mov %rax,%r14 : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel 0.00 : 52626c: e9 0f b7 fe ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 526271: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526278: 31 f6 xor %esi,%esi 0.00 : 52627a: 48 8b 3b mov (%rbx),%rdi 0.00 : 52627d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526284: e8 77 b2 0c 00 callq 5f1500 : } : | ColLabel '.' ColLabel '=' def_arg 0.00 : 526289: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 526290: 49 89 c6 mov %rax,%r14 : } : | ColLabel '.' ColLabel '=' def_arg 0.00 : 526293: e9 e8 b6 fe ff jmpq 511980 : : /* This should match def_elem and also allow qualified names */ : reloption_elem: : ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 526298: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52629f: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 5262a3: 48 8b 31 mov (%rcx),%rsi 0.00 : 5262a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5262ad: e8 4e b2 0c 00 callq 5f1500 : } : | ColLabel 0.00 : 5262b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* This should match def_elem and also allow qualified names */ : reloption_elem: : ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 5262b9: 49 89 c6 mov %rax,%r14 : } : | ColLabel 0.00 : 5262bc: e9 bf b6 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 5262c1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5262c8: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5262cc: 48 8b 32 mov (%rdx),%rsi 0.00 : 5262cf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5262d6: e8 a5 bb 0b 00 callq 5e1e80 : ; 0.00 : 5262db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 5262e2: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5262e5: e9 96 b6 fe ff jmpq 511980 : opt_reloptions: WITH reloptions { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } 0.00 : 5262ea: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5262f1: 31 f6 xor %esi,%esi 0.00 : 5262f3: 48 8b 38 mov (%rax),%rdi 0.00 : 5262f6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5262fd: e8 4e b5 0b 00 callq 5e1850 : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 526302: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_reloptions: WITH reloptions { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } 0.00 : 526309: 49 89 c6 mov %rax,%r14 : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 52630c: e9 6f b6 fe ff jmpq 511980 : reloptions: : '(' reloption_list ')' { $$ = $2; } : ; : : opt_reloptions: WITH reloptions { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 526311: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 526314: e9 67 b6 fe ff jmpq 511980 : : reloptions: : '(' reloption_list ')' { $$ = $2; } : ; : : opt_reloptions: WITH reloptions { $$ = $2; } 0.00 : 526319: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526320: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 526323: e9 58 b6 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : reloptions: : '(' reloption_list ')' { $$ = $2; } 0.00 : 526328: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52632f: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : ; 0.00 : 526333: e9 48 b6 fe ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | USING INDEX name : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 526338: 48 8b 3d 21 45 69 00 mov 0x694521(%rip),%rdi # bba860 0.00 : 52633f: be 10 00 00 00 mov $0x10,%esi 0.00 : 526344: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52634b: e8 c0 2a 27 00 callq 798e10 0.00 : 526350: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_INDEX; 0.00 : 526356: c6 40 04 69 movb $0x69,0x4(%rax) : n->name = $3; : $$ = (Node *) n; 0.00 : 52635a: 49 89 c6 mov %rax,%r14 : } : | USING INDEX name : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_INDEX; : n->name = $3; 0.00 : 52635d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526364: 48 8b 11 mov (%rcx),%rdx 0.00 : 526367: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : ; 0.00 : 52636b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526372: e9 09 b6 fe ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | DEFAULT : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 526377: 48 8b 3d e2 44 69 00 mov 0x6944e2(%rip),%rdi # bba860 0.00 : 52637e: be 10 00 00 00 mov $0x10,%esi 0.00 : 526383: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52638a: e8 81 2a 27 00 callq 798e10 0.00 : 52638f: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_DEFAULT; 0.00 : 526395: c6 40 04 64 movb $0x64,0x4(%rax) : n->name = NULL; : $$ = (Node *) n; 0.00 : 526399: 49 89 c6 mov %rax,%r14 : } : | DEFAULT : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_DEFAULT; : n->name = NULL; 0.00 : 52639c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5263a3: 00 : $$ = (Node *) n; : } : | USING INDEX name 0.00 : 5263a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5263ab: e9 d0 b5 fe ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | FULL : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 5263b0: 48 8b 3d a9 44 69 00 mov 0x6944a9(%rip),%rdi # bba860 0.00 : 5263b7: be 10 00 00 00 mov $0x10,%esi 0.00 : 5263bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5263c3: e8 48 2a 27 00 callq 798e10 0.00 : 5263c8: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_FULL; 0.00 : 5263ce: c6 40 04 66 movb $0x66,0x4(%rax) : n->name = NULL; : $$ = (Node *) n; 0.00 : 5263d2: 49 89 c6 mov %rax,%r14 : } : | FULL : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_FULL; : n->name = NULL; 0.00 : 5263d5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5263dc: 00 : $$ = (Node *) n; : } : | DEFAULT 0.00 : 5263dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5263e4: e9 97 b5 fe ff jmpq 511980 : ; : : replica_identity: : NOTHING : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 5263e9: 48 8b 3d 70 44 69 00 mov 0x694470(%rip),%rdi # bba860 0.00 : 5263f0: be 10 00 00 00 mov $0x10,%esi 0.00 : 5263f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5263fc: e8 0f 2a 27 00 callq 798e10 0.00 : 526401: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_NOTHING; 0.00 : 526407: c6 40 04 6e movb $0x6e,0x4(%rax) : n->name = NULL; : $$ = (Node *) n; 0.00 : 52640b: 49 89 c6 mov %rax,%r14 : replica_identity: : NOTHING : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_NOTHING; : n->name = NULL; 0.00 : 52640e: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 526415: 00 : $$ = (Node *) n; : } : | FULL 0.00 : 526416: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52641d: e9 5e b5 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : alter_using: : USING a_expr { $$ = $2; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 526422: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 526425: e9 56 b5 fe ff jmpq 511980 : } : | /* EMPTY */ { $$ = NULL; } : ; : : alter_using: : USING a_expr { $$ = $2; } 0.00 : 52642a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526431: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 526434: e9 47 b5 fe ff jmpq 511980 : n->arg = NULL; : n->collname = $2; : n->location = @1; : $$ = (Node *) n; : } : | /* EMPTY */ { $$ = NULL; } 0.00 : 526439: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52643c: e9 3f b5 fe ff jmpq 511980 : ; : : opt_collate_clause: : COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); 0.00 : 526441: 48 8b 3d 18 44 69 00 mov 0x694418(%rip),%rdi # bba860 0.00 : 526448: be 20 00 00 00 mov $0x20,%esi 0.00 : 52644d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526454: e8 b7 29 27 00 callq 798e10 0.00 : 526459: c7 00 90 03 00 00 movl $0x390,(%rax) : n->arg = NULL; 0.00 : 52645f: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 526466: 00 : n->collname = $2; : n->location = @1; : $$ = (Node *) n; 0.00 : 526467: 49 89 c6 mov %rax,%r14 : opt_collate_clause: : COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); : n->arg = NULL; : n->collname = $2; 0.00 : 52646a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526471: 48 8b 11 mov (%rcx),%rdx 0.00 : 526474: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @1; 0.00 : 526478: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52647f: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 526482: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *) n; : } : | /* EMPTY */ { $$ = NULL; } 0.00 : 526485: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52648c: e9 ef b4 fe ff jmpq 511980 : ; : : opt_drop_behavior: : CASCADE { $$ = DROP_CASCADE; } : | RESTRICT { $$ = DROP_RESTRICT; } : | /* EMPTY */ { $$ = DROP_RESTRICT; /* default */ } 0.00 : 526491: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 526498: ff ff ff 0.00 : 52649b: 49 21 d6 and %rdx,%r14 : ; 0.00 : 52649e: e9 dd b4 fe ff jmpq 511980 : | DROP DEFAULT { $$ = NULL; } : ; : : opt_drop_behavior: : CASCADE { $$ = DROP_CASCADE; } : | RESTRICT { $$ = DROP_RESTRICT; } 0.00 : 5264a3: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5264aa: ff ff ff 0.00 : 5264ad: 49 21 c6 and %rax,%r14 : | /* EMPTY */ { $$ = DROP_RESTRICT; /* default */ } 0.00 : 5264b0: e9 cb b4 fe ff jmpq 511980 : SET DEFAULT a_expr { $$ = $3; } : | DROP DEFAULT { $$ = NULL; } : ; : : opt_drop_behavior: : CASCADE { $$ = DROP_CASCADE; } 0.00 : 5264b5: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5264bc: ff ff ff 0.00 : 5264bf: 49 21 f6 and %rsi,%r14 0.00 : 5264c2: 49 83 ce 01 or $0x1,%r14 : | RESTRICT { $$ = DROP_RESTRICT; } 0.00 : 5264c6: e9 b5 b4 fe ff jmpq 511980 : } : ; : : alter_column_default: : SET DEFAULT a_expr { $$ = $3; } : | DROP DEFAULT { $$ = NULL; } 0.00 : 5264cb: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5264ce: e9 ad b4 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : alter_column_default: : SET DEFAULT a_expr { $$ = $3; } 0.00 : 5264d3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5264da: 4c 8b 33 mov (%rbx),%r14 : | DROP DEFAULT { $$ = NULL; } 0.00 : 5264dd: e9 9e b4 fe ff jmpq 511980 : n->subtype = AT_DisableRowSecurity; : $$ = (Node *)n; : } : | alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5264e2: 48 8b 3d 77 43 69 00 mov 0x694377(%rip),%rdi # bba860 0.00 : 5264e9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5264ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5264f5: e8 16 29 27 00 callq 798e10 0.00 : 5264fa: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_GenericOptions; 0.00 : 526500: c7 40 04 39 00 00 00 movl $0x39,0x4(%rax) : n->def = (Node *)$1; : $$ = (Node *) n; 0.00 : 526507: 49 89 c6 mov %rax,%r14 : } : | alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_GenericOptions; : n->def = (Node *)$1; 0.00 : 52650a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526511: 48 8b 11 mov (%rcx),%rdx 0.00 : 526514: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 526518: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52651f: e9 5c b4 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE ROW LEVEL SECURITY */ : | DISABLE_P ROW LEVEL SECURITY : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526524: 48 8b 3d 35 43 69 00 mov 0x694335(%rip),%rdi # bba860 0.00 : 52652b: be 20 00 00 00 mov $0x20,%esi 0.00 : 526530: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526537: e8 d4 28 27 00 callq 798e10 0.00 : 52653c: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableRowSecurity; 0.00 : 526542: c7 40 04 38 00 00 00 movl $0x38,0x4(%rax) : $$ = (Node *)n; 0.00 : 526549: 49 89 c6 mov %rax,%r14 : } : | alter_generic_options 0.00 : 52654c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526553: e9 28 b4 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ROW LEVEL SECURITY */ : | ENABLE_P ROW LEVEL SECURITY : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526558: 48 8b 3d 01 43 69 00 mov 0x694301(%rip),%rdi # bba860 0.00 : 52655f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526564: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52656b: e8 a0 28 27 00 callq 798e10 0.00 : 526570: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableRowSecurity; 0.00 : 526576: c7 40 04 37 00 00 00 movl $0x37,0x4(%rax) : $$ = (Node *)n; 0.00 : 52657d: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE DISABLE ROW LEVEL SECURITY */ 0.00 : 526580: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526587: e9 f4 b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE REPLICA IDENTITY */ : | REPLICA IDENTITY_P replica_identity : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52658c: 48 8b 3d cd 42 69 00 mov 0x6942cd(%rip),%rdi # bba860 0.00 : 526593: be 20 00 00 00 mov $0x20,%esi 0.00 : 526598: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52659f: e8 6c 28 27 00 callq 798e10 0.00 : 5265a4: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ReplicaIdentity; 0.00 : 5265aa: c7 40 04 36 00 00 00 movl $0x36,0x4(%rax) : n->def = $3; : $$ = (Node *)n; 0.00 : 5265b1: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE REPLICA IDENTITY */ : | REPLICA IDENTITY_P replica_identity : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ReplicaIdentity; : n->def = $3; 0.00 : 5265b4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5265bb: 48 8b 16 mov (%rsi),%rdx 0.00 : 5265be: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ROW LEVEL SECURITY */ 0.00 : 5265c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5265c9: e9 b2 b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE RESET (...) */ : | RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5265ce: 48 8b 3d 8b 42 69 00 mov 0x69428b(%rip),%rdi # bba860 0.00 : 5265d5: be 20 00 00 00 mov $0x20,%esi 0.00 : 5265da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5265e1: e8 2a 28 27 00 callq 798e10 0.00 : 5265e6: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ResetRelOptions; 0.00 : 5265ec: c7 40 04 24 00 00 00 movl $0x24,0x4(%rax) : n->def = (Node *)$2; : $$ = (Node *)n; 0.00 : 5265f3: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE RESET (...) */ : | RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ResetRelOptions; : n->def = (Node *)$2; 0.00 : 5265f6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5265fd: 48 8b 13 mov (%rbx),%rdx 0.00 : 526600: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE REPLICA IDENTITY */ 0.00 : 526604: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52660b: e9 70 b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET (...) */ : | SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526610: 48 8b 3d 49 42 69 00 mov 0x694249(%rip),%rdi # bba860 0.00 : 526617: be 20 00 00 00 mov $0x20,%esi 0.00 : 52661c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526623: e8 e8 27 27 00 callq 798e10 0.00 : 526628: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetRelOptions; 0.00 : 52662e: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->def = (Node *)$2; : $$ = (Node *)n; 0.00 : 526635: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE SET (...) */ : | SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetRelOptions; : n->def = (Node *)$2; 0.00 : 526638: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52663f: 48 8b 11 mov (%rcx),%rdx 0.00 : 526642: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE RESET (...) */ 0.00 : 526646: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52664d: e9 2e b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET TABLESPACE */ : | SET TABLESPACE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526652: 48 8b 3d 07 42 69 00 mov 0x694207(%rip),%rdi # bba860 0.00 : 526659: be 20 00 00 00 mov $0x20,%esi 0.00 : 52665e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526665: e8 a6 27 27 00 callq 798e10 0.00 : 52666a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetTableSpace; 0.00 : 526670: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526677: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE SET TABLESPACE */ : | SET TABLESPACE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetTableSpace; : n->name = $3; 0.00 : 52667a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526681: 48 8b 16 mov (%rsi),%rdx 0.00 : 526684: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE SET (...) */ 0.00 : 526688: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52668f: e9 ec b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE OWNER TO RoleId */ : | OWNER TO RoleId : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526694: 48 8b 3d c5 41 69 00 mov 0x6941c5(%rip),%rdi # bba860 0.00 : 52669b: be 20 00 00 00 mov $0x20,%esi 0.00 : 5266a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5266a7: e8 64 27 27 00 callq 798e10 0.00 : 5266ac: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ChangeOwner; 0.00 : 5266b2: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 5266b9: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE OWNER TO RoleId */ : | OWNER TO RoleId : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ChangeOwner; : n->name = $3; 0.00 : 5266bc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5266c3: 48 8b 13 mov (%rbx),%rdx 0.00 : 5266c6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE SET TABLESPACE */ 0.00 : 5266ca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5266d1: e9 aa b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE NOT OF */ : | NOT OF : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5266d6: 48 8b 3d 83 41 69 00 mov 0x694183(%rip),%rdi # bba860 0.00 : 5266dd: be 20 00 00 00 mov $0x20,%esi 0.00 : 5266e2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5266e9: e8 22 27 27 00 callq 798e10 0.00 : 5266ee: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropOf; 0.00 : 5266f4: c7 40 04 35 00 00 00 movl $0x35,0x4(%rax) : $$ = (Node *)n; 0.00 : 5266fb: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE OWNER TO RoleId */ 0.00 : 5266fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526705: e9 76 b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE OF */ : | OF any_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52670a: 48 8b 3d 4f 41 69 00 mov 0x69414f(%rip),%rdi # bba860 0.00 : 526711: be 20 00 00 00 mov $0x20,%esi 0.00 : 526716: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52671d: e8 ee 26 27 00 callq 798e10 0.00 : 526722: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : TypeName *def = makeTypeNameFromNameList($2); 0.00 : 526728: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *)n; : } : /* ALTER TABLE OF */ : | OF any_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52672f: 48 89 c3 mov %rax,%rbx : TypeName *def = makeTypeNameFromNameList($2); : def->location = @2; : n->subtype = AT_AddOf; : n->def = (Node *) def; : $$ = (Node *)n; 0.00 : 526732: 49 89 de mov %rbx,%r14 : } : /* ALTER TABLE OF */ : | OF any_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : TypeName *def = makeTypeNameFromNameList($2); 0.00 : 526735: 48 8b 3e mov (%rsi),%rdi 0.00 : 526738: e8 f3 ae 0c 00 callq 5f1630 : def->location = @2; 0.00 : 52673d: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 526744: 8b 11 mov (%rcx),%edx 0.00 : 526746: 89 50 30 mov %edx,0x30(%rax) : n->subtype = AT_AddOf; 0.00 : 526749: c7 43 04 34 00 00 00 movl $0x34,0x4(%rbx) : n->def = (Node *) def; 0.00 : 526750: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : /* ALTER TABLE NOT OF */ 0.00 : 526754: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52675b: e9 20 b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE NO INHERIT */ : | NO INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526760: 48 8b 3d f9 40 69 00 mov 0x6940f9(%rip),%rdi # bba860 0.00 : 526767: be 20 00 00 00 mov $0x20,%esi 0.00 : 52676c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526773: e8 98 26 27 00 callq 798e10 0.00 : 526778: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropInherit; 0.00 : 52677e: c7 40 04 33 00 00 00 movl $0x33,0x4(%rax) : n->def = (Node *) $3; : $$ = (Node *)n; 0.00 : 526785: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE NO INHERIT */ : | NO INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropInherit; : n->def = (Node *) $3; 0.00 : 526788: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52678f: 48 8b 13 mov (%rbx),%rdx 0.00 : 526792: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE OF */ 0.00 : 526796: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52679d: e9 de b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE INHERIT */ : | INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5267a2: 48 8b 3d b7 40 69 00 mov 0x6940b7(%rip),%rdi # bba860 0.00 : 5267a9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5267ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5267b5: e8 56 26 27 00 callq 798e10 0.00 : 5267ba: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddInherit; 0.00 : 5267c0: c7 40 04 32 00 00 00 movl $0x32,0x4(%rax) : n->def = (Node *) $2; : $$ = (Node *)n; 0.00 : 5267c7: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE INHERIT */ : | INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddInherit; : n->def = (Node *) $2; 0.00 : 5267ca: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5267d1: 48 8b 11 mov (%rcx),%rdx 0.00 : 5267d4: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE NO INHERIT */ 0.00 : 5267d8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5267df: e9 9c b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE RULE */ : | DISABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5267e4: 48 8b 3d 75 40 69 00 mov 0x694075(%rip),%rdi # bba860 0.00 : 5267eb: be 20 00 00 00 mov $0x20,%esi 0.00 : 5267f0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5267f7: e8 14 26 27 00 callq 798e10 0.00 : 5267fc: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableRule; 0.00 : 526802: c7 40 04 31 00 00 00 movl $0x31,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526809: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DISABLE RULE */ : | DISABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DisableRule; : n->name = $3; 0.00 : 52680c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526813: 48 8b 16 mov (%rsi),%rdx 0.00 : 526816: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE INHERIT */ 0.00 : 52681a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526821: e9 5a b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA RULE */ : | ENABLE_P REPLICA RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526826: 48 8b 3d 33 40 69 00 mov 0x694033(%rip),%rdi # bba860 0.00 : 52682d: be 20 00 00 00 mov $0x20,%esi 0.00 : 526832: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526839: e8 d2 25 27 00 callq 798e10 0.00 : 52683e: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableReplicaRule; 0.00 : 526844: c7 40 04 30 00 00 00 movl $0x30,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 52684b: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE REPLICA RULE */ : | ENABLE_P REPLICA RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableReplicaRule; : n->name = $4; 0.00 : 52684e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526855: 48 8b 13 mov (%rbx),%rdx 0.00 : 526858: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE RULE */ 0.00 : 52685c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526863: e9 18 b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS RULE */ : | ENABLE_P ALWAYS RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526868: 48 8b 3d f1 3f 69 00 mov 0x693ff1(%rip),%rdi # bba860 0.00 : 52686f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526874: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52687b: e8 90 25 27 00 callq 798e10 0.00 : 526880: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableAlwaysRule; 0.00 : 526886: c7 40 04 2f 00 00 00 movl $0x2f,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 52688d: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE ALWAYS RULE */ : | ENABLE_P ALWAYS RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableAlwaysRule; : n->name = $4; 0.00 : 526890: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526897: 48 8b 11 mov (%rcx),%rdx 0.00 : 52689a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA RULE */ 0.00 : 52689e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5268a5: e9 d6 b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE RULE */ : | ENABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5268aa: 48 8b 3d af 3f 69 00 mov 0x693faf(%rip),%rdi # bba860 0.00 : 5268b1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5268b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5268bd: e8 4e 25 27 00 callq 798e10 0.00 : 5268c2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableRule; 0.00 : 5268c8: c7 40 04 2e 00 00 00 movl $0x2e,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 5268cf: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE RULE */ : | ENABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableRule; : n->name = $3; 0.00 : 5268d2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5268d9: 48 8b 16 mov (%rsi),%rdx 0.00 : 5268dc: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS RULE */ 0.00 : 5268e0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5268e7: e9 94 b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER USER */ : | DISABLE_P TRIGGER USER : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5268ec: 48 8b 3d 6d 3f 69 00 mov 0x693f6d(%rip),%rdi # bba860 0.00 : 5268f3: be 20 00 00 00 mov $0x20,%esi 0.00 : 5268f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5268ff: e8 0c 25 27 00 callq 798e10 0.00 : 526904: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableTrigUser; 0.00 : 52690a: c7 40 04 2d 00 00 00 movl $0x2d,0x4(%rax) : $$ = (Node *)n; 0.00 : 526911: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE ENABLE RULE */ 0.00 : 526914: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52691b: e9 60 b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER ALL */ : | DISABLE_P TRIGGER ALL : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526920: 48 8b 3d 39 3f 69 00 mov 0x693f39(%rip),%rdi # bba860 0.00 : 526927: be 20 00 00 00 mov $0x20,%esi 0.00 : 52692c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526933: e8 d8 24 27 00 callq 798e10 0.00 : 526938: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableTrigAll; 0.00 : 52693e: c7 40 04 2b 00 00 00 movl $0x2b,0x4(%rax) : $$ = (Node *)n; 0.00 : 526945: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE DISABLE TRIGGER USER */ 0.00 : 526948: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52694f: e9 2c b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER */ : | DISABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526954: 48 8b 3d 05 3f 69 00 mov 0x693f05(%rip),%rdi # bba860 0.00 : 52695b: be 20 00 00 00 mov $0x20,%esi 0.00 : 526960: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526967: e8 a4 24 27 00 callq 798e10 0.00 : 52696c: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableTrig; 0.00 : 526972: c7 40 04 29 00 00 00 movl $0x29,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526979: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DISABLE TRIGGER */ : | DISABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DisableTrig; : n->name = $3; 0.00 : 52697c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526983: 48 8b 13 mov (%rbx),%rdx 0.00 : 526986: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER ALL */ 0.00 : 52698a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526991: e9 ea af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER USER */ : | ENABLE_P TRIGGER USER : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526996: 48 8b 3d c3 3e 69 00 mov 0x693ec3(%rip),%rdi # bba860 0.00 : 52699d: be 20 00 00 00 mov $0x20,%esi 0.00 : 5269a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5269a9: e8 62 24 27 00 callq 798e10 0.00 : 5269ae: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableTrigUser; 0.00 : 5269b4: c7 40 04 2c 00 00 00 movl $0x2c,0x4(%rax) : $$ = (Node *)n; 0.00 : 5269bb: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE DISABLE TRIGGER */ 0.00 : 5269be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5269c5: e9 b6 af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER ALL */ : | ENABLE_P TRIGGER ALL : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5269ca: 48 8b 3d 8f 3e 69 00 mov 0x693e8f(%rip),%rdi # bba860 0.00 : 5269d1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5269d6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5269dd: e8 2e 24 27 00 callq 798e10 0.00 : 5269e2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableTrigAll; 0.00 : 5269e8: c7 40 04 2a 00 00 00 movl $0x2a,0x4(%rax) : $$ = (Node *)n; 0.00 : 5269ef: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE ENABLE TRIGGER USER */ 0.00 : 5269f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5269f9: e9 82 af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA TRIGGER */ : | ENABLE_P REPLICA TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5269fe: 48 8b 3d 5b 3e 69 00 mov 0x693e5b(%rip),%rdi # bba860 0.00 : 526a05: be 20 00 00 00 mov $0x20,%esi 0.00 : 526a0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526a11: e8 fa 23 27 00 callq 798e10 0.00 : 526a16: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableReplicaTrig; 0.00 : 526a1c: c7 40 04 28 00 00 00 movl $0x28,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 526a23: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE REPLICA TRIGGER */ : | ENABLE_P REPLICA TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableReplicaTrig; : n->name = $4; 0.00 : 526a26: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526a2d: 48 8b 11 mov (%rcx),%rdx 0.00 : 526a30: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER ALL */ 0.00 : 526a34: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526a3b: e9 40 af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS TRIGGER */ : | ENABLE_P ALWAYS TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526a40: 48 8b 3d 19 3e 69 00 mov 0x693e19(%rip),%rdi # bba860 0.00 : 526a47: be 20 00 00 00 mov $0x20,%esi 0.00 : 526a4c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526a53: e8 b8 23 27 00 callq 798e10 0.00 : 526a58: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableAlwaysTrig; 0.00 : 526a5e: c7 40 04 27 00 00 00 movl $0x27,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 526a65: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE ALWAYS TRIGGER */ : | ENABLE_P ALWAYS TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableAlwaysTrig; : n->name = $4; 0.00 : 526a68: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526a6f: 48 8b 16 mov (%rsi),%rdx 0.00 : 526a72: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA TRIGGER */ 0.00 : 526a76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526a7d: e9 fe ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER */ : | ENABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526a82: 48 8b 3d d7 3d 69 00 mov 0x693dd7(%rip),%rdi # bba860 0.00 : 526a89: be 20 00 00 00 mov $0x20,%esi 0.00 : 526a8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526a95: e8 76 23 27 00 callq 798e10 0.00 : 526a9a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableTrig; 0.00 : 526aa0: c7 40 04 26 00 00 00 movl $0x26,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526aa7: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE TRIGGER */ : | ENABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableTrig; : n->name = $3; 0.00 : 526aaa: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526ab1: 48 8b 13 mov (%rbx),%rdx 0.00 : 526ab4: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS TRIGGER */ 0.00 : 526ab8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526abf: e9 bc ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET UNLOGGED */ : | SET UNLOGGED : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526ac4: 48 8b 3d 95 3d 69 00 mov 0x693d95(%rip),%rdi # bba860 0.00 : 526acb: be 20 00 00 00 mov $0x20,%esi 0.00 : 526ad0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526ad7: e8 34 23 27 00 callq 798e10 0.00 : 526adc: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetUnLogged; 0.00 : 526ae2: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : $$ = (Node *)n; 0.00 : 526ae9: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE ENABLE TRIGGER */ 0.00 : 526aec: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526af3: e9 88 ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET LOGGED */ : | SET LOGGED : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526af8: 48 8b 3d 61 3d 69 00 mov 0x693d61(%rip),%rdi # bba860 0.00 : 526aff: be 20 00 00 00 mov $0x20,%esi 0.00 : 526b04: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526b0b: e8 00 23 27 00 callq 798e10 0.00 : 526b10: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetLogged; 0.00 : 526b16: c7 40 04 1d 00 00 00 movl $0x1d,0x4(%rax) : $$ = (Node *)n; 0.00 : 526b1d: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE SET UNLOGGED */ 0.00 : 526b20: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526b27: e9 54 ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET WITHOUT CLUSTER */ : | SET WITHOUT CLUSTER : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526b2c: 48 8b 3d 2d 3d 69 00 mov 0x693d2d(%rip),%rdi # bba860 0.00 : 526b33: be 20 00 00 00 mov $0x20,%esi 0.00 : 526b38: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526b3f: e8 cc 22 27 00 callq 798e10 0.00 : 526b44: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropCluster; 0.00 : 526b4a: c7 40 04 1c 00 00 00 movl $0x1c,0x4(%rax) : n->name = NULL; : $$ = (Node *)n; 0.00 : 526b51: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE SET WITHOUT CLUSTER */ : | SET WITHOUT CLUSTER : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropCluster; : n->name = NULL; 0.00 : 526b54: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 526b5b: 00 : $$ = (Node *)n; : } : /* ALTER TABLE SET LOGGED */ 0.00 : 526b5c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526b63: e9 18 ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE CLUSTER ON */ : | CLUSTER ON name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526b68: 48 8b 3d f1 3c 69 00 mov 0x693cf1(%rip),%rdi # bba860 0.00 : 526b6f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526b74: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526b7b: e8 90 22 27 00 callq 798e10 0.00 : 526b80: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ClusterOn; 0.00 : 526b86: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526b8d: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE CLUSTER ON */ : | CLUSTER ON name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ClusterOn; : n->name = $3; 0.00 : 526b90: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526b97: 48 8b 11 mov (%rcx),%rdx 0.00 : 526b9a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE SET WITHOUT CLUSTER */ 0.00 : 526b9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ba5: e9 d6 ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET WITHOUT OIDS */ : | SET WITHOUT OIDS : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526baa: 48 8b 3d af 3c 69 00 mov 0x693caf(%rip),%rdi # bba860 0.00 : 526bb1: be 20 00 00 00 mov $0x20,%esi 0.00 : 526bb6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526bbd: e8 4e 22 27 00 callq 798e10 0.00 : 526bc2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropOids; 0.00 : 526bc8: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : $$ = (Node *)n; 0.00 : 526bcf: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE CLUSTER ON */ 0.00 : 526bd2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526bd9: e9 a2 ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET WITH OIDS */ : | SET WITH OIDS : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526bde: 48 8b 3d 7b 3c 69 00 mov 0x693c7b(%rip),%rdi # bba860 0.00 : 526be5: be 20 00 00 00 mov $0x20,%esi 0.00 : 526bea: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526bf1: e8 1a 22 27 00 callq 798e10 0.00 : 526bf6: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddOids; 0.00 : 526bfc: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : $$ = (Node *)n; 0.00 : 526c03: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE SET WITHOUT OIDS */ 0.00 : 526c06: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526c0d: e9 6e ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT [RESTRICT|CASCADE] */ : | DROP CONSTRAINT name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526c12: 48 8b 3d 47 3c 69 00 mov 0x693c47(%rip),%rdi # bba860 0.00 : 526c19: be 20 00 00 00 mov $0x20,%esi 0.00 : 526c1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526c25: e8 e6 21 27 00 callq 798e10 0.00 : 526c2a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropConstraint; 0.00 : 526c30: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->name = $3; : n->behavior = $4; : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 526c37: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP CONSTRAINT [RESTRICT|CASCADE] */ : | DROP CONSTRAINT name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $3; 0.00 : 526c3a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526c41: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 526c45: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $4; 0.00 : 526c49: 8b 16 mov (%rsi),%edx : n->missing_ok = FALSE; 0.00 : 526c4b: c6 40 1c 00 movb $0x0,0x1c(%rax) : | DROP CONSTRAINT name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $3; : n->behavior = $4; 0.00 : 526c4f: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : /* ALTER TABLE SET WITH OIDS */ 0.00 : 526c52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526c59: e9 22 ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526c5e: 48 8b 3d fb 3b 69 00 mov 0x693bfb(%rip),%rdi # bba860 0.00 : 526c65: be 20 00 00 00 mov $0x20,%esi 0.00 : 526c6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526c71: e8 9a 21 27 00 callq 798e10 0.00 : 526c76: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropConstraint; 0.00 : 526c7c: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->name = $5; : n->behavior = $6; : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 526c83: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $5; 0.00 : 526c86: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526c8d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 526c91: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $6; 0.00 : 526c95: 8b 13 mov (%rbx),%edx : n->missing_ok = TRUE; 0.00 : 526c97: c6 40 1c 01 movb $0x1,0x1c(%rax) : | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $5; : n->behavior = $6; 0.00 : 526c9b: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT [RESTRICT|CASCADE] */ 0.00 : 526c9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ca5: e9 d6 ac fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE VALIDATE CONSTRAINT ... */ : | VALIDATE CONSTRAINT name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526caa: 48 8b 3d af 3b 69 00 mov 0x693baf(%rip),%rdi # bba860 0.00 : 526cb1: be 20 00 00 00 mov $0x20,%esi 0.00 : 526cb6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526cbd: e8 4e 21 27 00 callq 798e10 0.00 : 526cc2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ValidateConstraint; 0.00 : 526cc8: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526ccf: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE VALIDATE CONSTRAINT ... */ : | VALIDATE CONSTRAINT name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ValidateConstraint; : n->name = $3; 0.00 : 526cd2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526cd9: 48 8b 11 mov (%rcx),%rdx 0.00 : 526cdc: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 526ce0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ce7: e9 94 ac fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER CONSTRAINT ... */ : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526cec: 48 8b 3d 6d 3b 69 00 mov 0x693b6d(%rip),%rdi # bba860 0.00 : 526cf3: be 20 00 00 00 mov $0x20,%esi 0.00 : 526cf8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526cff: e8 0c 21 27 00 callq 798e10 0.00 : 526d04: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : Constraint *c = makeNode(Constraint); 0.00 : 526d0a: 48 8b 3d 4f 3b 69 00 mov 0x693b4f(%rip),%rdi # bba860 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER CONSTRAINT ... */ : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526d11: 48 89 c3 mov %rax,%rbx : Constraint *c = makeNode(Constraint); 0.00 : 526d14: be 98 00 00 00 mov $0x98,%esi : c->conname = $3; : processCASbits($4, @4, "ALTER CONSTRAINT statement", : &c->deferrable, : &c->initdeferred, : NULL, NULL, yyscanner); : $$ = (Node *)n; 0.00 : 526d19: 49 89 de mov %rbx,%r14 : } : /* ALTER TABLE ALTER CONSTRAINT ... */ : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); 0.00 : 526d1c: e8 ef 20 27 00 callq 798e10 0.00 : 526d21: c7 00 98 03 00 00 movl $0x398,(%rax) : n->subtype = AT_AlterConstraint; 0.00 : 526d27: c7 43 04 11 00 00 00 movl $0x11,0x4(%rbx) : n->def = (Node *) c; : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ : c->conname = $3; : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d2e: 4c 8d 40 11 lea 0x11(%rax),%r8 : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); : n->subtype = AT_AlterConstraint; : n->def = (Node *) c; 0.00 : 526d32: 48 89 43 10 mov %rax,0x10(%rbx) : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ 0.00 : 526d36: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : c->conname = $3; : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d3d: 45 31 c9 xor %r9d,%r9d : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); : n->subtype = AT_AlterConstraint; : n->def = (Node *) c; : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ : c->conname = $3; 0.00 : 526d40: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526d47: 48 8b 51 f8 mov -0x8(%rcx),%rdx : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d4b: 48 8d 48 10 lea 0x10(%rax),%rcx : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); : n->subtype = AT_AlterConstraint; : n->def = (Node *) c; : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ : c->conname = $3; 0.00 : 526d4f: 48 89 50 08 mov %rdx,0x8(%rax) : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d53: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 526d5a: ba 72 95 7c 00 mov $0x7c9572,%edx 0.00 : 526d5f: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 526d66: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 526d6d: 00 0.00 : 526d6e: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 526d73: 8b 30 mov (%rax),%esi 0.00 : 526d75: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 526d7c: 8b 38 mov (%rax),%edi 0.00 : 526d7e: e8 8d 70 fe ff callq 50de10 : &c->deferrable, : &c->initdeferred, : NULL, NULL, yyscanner); : $$ = (Node *)n; : } : /* ALTER TABLE VALIDATE CONSTRAINT ... */ 0.00 : 526d83: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526d8a: e9 f1 ab fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ADD CONSTRAINT ... */ : | ADD_P TableConstraint : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526d8f: 48 8b 3d ca 3a 69 00 mov 0x693aca(%rip),%rdi # bba860 0.00 : 526d96: be 20 00 00 00 mov $0x20,%esi 0.00 : 526d9b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526da2: e8 69 20 27 00 callq 798e10 0.00 : 526da7: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddConstraint; 0.00 : 526dad: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->def = $2; : $$ = (Node *)n; 0.00 : 526db4: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ADD CONSTRAINT ... */ : | ADD_P TableConstraint : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddConstraint; : n->def = $2; 0.00 : 526db7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526dbe: 48 8b 16 mov (%rsi),%rdx 0.00 : 526dc1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER CONSTRAINT ... */ 0.00 : 526dc5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526dcc: e9 af ab fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER FOREIGN TABLE ALTER [COLUMN] OPTIONS */ : | ALTER opt_column ColId alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526dd1: 48 8b 3d 88 3a 69 00 mov 0x693a88(%rip),%rdi # bba860 0.00 : 526dd8: be 20 00 00 00 mov $0x20,%esi 0.00 : 526ddd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526de4: e8 27 20 27 00 callq 798e10 0.00 : 526de9: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AlterColumnGenericOptions; 0.00 : 526def: c7 40 04 19 00 00 00 movl $0x19,0x4(%rax) : n->name = $3; : n->def = (Node *) $4; : $$ = (Node *)n; 0.00 : 526df6: 49 89 c6 mov %rax,%r14 : /* ALTER FOREIGN TABLE ALTER [COLUMN] OPTIONS */ : | ALTER opt_column ColId alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AlterColumnGenericOptions; : n->name = $3; 0.00 : 526df9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526e00: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 526e04: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = (Node *) $4; 0.00 : 526e08: 48 8b 13 mov (%rbx),%rdx 0.00 : 526e0b: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ADD CONSTRAINT ... */ 0.00 : 526e0f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526e16: e9 65 ab fe ff jmpq 511980 : * ALTER TABLE ALTER [COLUMN] [SET DATA] TYPE : * [ USING ] : */ : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526e1b: 48 8b 3d 3e 3a 69 00 mov 0x693a3e(%rip),%rdi # bba860 0.00 : 526e22: be 20 00 00 00 mov $0x20,%esi 0.00 : 526e27: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526e2e: e8 dd 1f 27 00 callq 798e10 0.00 : 526e33: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526e39: 48 8b 3d 20 3a 69 00 mov 0x693a20(%rip),%rdi # bba860 : * ALTER TABLE ALTER [COLUMN] [SET DATA] TYPE : * [ USING ] : */ : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526e40: 48 89 c3 mov %rax,%rbx : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526e43: be 58 00 00 00 mov $0x58,%esi : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; : def->collClause = (CollateClause *) $7; : def->raw_default = $8; : def->location = @3; : $$ = (Node *)n; 0.00 : 526e48: 49 89 de mov %rbx,%r14 : * [ USING ] : */ : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526e4b: e8 c0 1f 27 00 callq 798e10 0.00 : 526e50: c7 00 96 03 00 00 movl $0x396,(%rax) : n->subtype = AT_AlterColumnType; 0.00 : 526e56: c7 43 04 18 00 00 00 movl $0x18,0x4(%rbx) : n->name = $3; 0.00 : 526e5d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526e64: 48 8b 56 d8 mov -0x28(%rsi),%rdx : n->def = (Node *) def; 0.00 : 526e68: 48 89 43 10 mov %rax,0x10(%rbx) : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); : n->subtype = AT_AlterColumnType; : n->name = $3; 0.00 : 526e6c: 48 89 53 08 mov %rdx,0x8(%rbx) : n->def = (Node *) def; : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; 0.00 : 526e70: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 526e74: 48 89 50 10 mov %rdx,0x10(%rax) : def->collClause = (CollateClause *) $7; 0.00 : 526e78: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 526e7c: 48 89 50 30 mov %rdx,0x30(%rax) : def->raw_default = $8; 0.00 : 526e80: 48 8b 16 mov (%rsi),%rdx 0.00 : 526e83: 48 89 50 20 mov %rdx,0x20(%rax) : def->location = @3; 0.00 : 526e87: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 526e8e: 8b 51 ec mov -0x14(%rcx),%edx 0.00 : 526e91: 89 50 50 mov %edx,0x50(%rax) : $$ = (Node *)n; : } : /* ALTER FOREIGN TABLE ALTER [COLUMN] OPTIONS */ 0.00 : 526e94: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526e9b: e9 e0 aa fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] [RESTRICT|CASCADE] */ : | DROP opt_column ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526ea0: 48 8b 3d b9 39 69 00 mov 0x6939b9(%rip),%rdi # bba860 0.00 : 526ea7: be 20 00 00 00 mov $0x20,%esi 0.00 : 526eac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526eb3: e8 58 1f 27 00 callq 798e10 0.00 : 526eb8: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 526ebe: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $3; : n->behavior = $4; : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 526ec5: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP [COLUMN] [RESTRICT|CASCADE] */ : | DROP opt_column ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; 0.00 : 526ec8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526ecf: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 526ed3: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $4; 0.00 : 526ed7: 8b 13 mov (%rbx),%edx : n->missing_ok = FALSE; 0.00 : 526ed9: c6 40 1c 00 movb $0x0,0x1c(%rax) : | DROP opt_column ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; : n->behavior = $4; 0.00 : 526edd: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : /* 0.00 : 526ee0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ee7: e9 94 aa fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] IF EXISTS [RESTRICT|CASCADE] */ : | DROP opt_column IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526eec: 48 8b 3d 6d 39 69 00 mov 0x69396d(%rip),%rdi # bba860 0.00 : 526ef3: be 20 00 00 00 mov $0x20,%esi 0.00 : 526ef8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526eff: e8 0c 1f 27 00 callq 798e10 0.00 : 526f04: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 526f0a: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $5; : n->behavior = $6; : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 526f11: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP [COLUMN] IF EXISTS [RESTRICT|CASCADE] */ : | DROP opt_column IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; 0.00 : 526f14: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526f1b: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 526f1f: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $6; 0.00 : 526f23: 8b 11 mov (%rcx),%edx : n->missing_ok = TRUE; 0.00 : 526f25: c6 40 1c 01 movb $0x1,0x1c(%rax) : | DROP opt_column IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; : n->behavior = $6; 0.00 : 526f29: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] [RESTRICT|CASCADE] */ 0.00 : 526f2c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526f33: e9 48 aa fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : | ALTER opt_column ColId SET STORAGE ColId : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526f38: 48 8b 3d 21 39 69 00 mov 0x693921(%rip),%rdi # bba860 0.00 : 526f3f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526f44: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526f4b: e8 c0 1e 27 00 callq 798e10 0.00 : 526f50: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetStorage; 0.00 : 526f56: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : | ALTER opt_column ColId SET STORAGE ColId : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526f5d: 48 89 c3 mov %rax,%rbx : n->subtype = AT_SetStorage; : n->name = $3; 0.00 : 526f60: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->def = (Node *) makeString($6); : $$ = (Node *)n; 0.00 : 526f67: 49 89 de mov %rbx,%r14 : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : | ALTER opt_column ColId SET STORAGE ColId : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetStorage; : n->name = $3; 0.00 : 526f6a: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 526f6e: 48 89 43 08 mov %rax,0x8(%rbx) : n->def = (Node *) makeString($6); 0.00 : 526f72: 48 8b 3e mov (%rsi),%rdi 0.00 : 526f75: e8 76 87 0d 00 callq 5ff6f0 0.00 : 526f7a: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 526f7e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526f85: e9 f6 a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526f8a: 48 8b 3d cf 38 69 00 mov 0x6938cf(%rip),%rdi # bba860 0.00 : 526f91: be 20 00 00 00 mov $0x20,%esi 0.00 : 526f96: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526f9d: e8 6e 1e 27 00 callq 798e10 0.00 : 526fa2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ResetOptions; 0.00 : 526fa8: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->name = $3; : n->def = (Node *) $5; : $$ = (Node *)n; 0.00 : 526faf: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ResetOptions; : n->name = $3; 0.00 : 526fb2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526fb9: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 526fbd: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = (Node *) $5; 0.00 : 526fc1: 48 8b 13 mov (%rbx),%rdx 0.00 : 526fc4: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ 0.00 : 526fc8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526fcf: e9 ac a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526fd4: 48 8b 3d 85 38 69 00 mov 0x693885(%rip),%rdi # bba860 0.00 : 526fdb: be 20 00 00 00 mov $0x20,%esi 0.00 : 526fe0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526fe7: e8 24 1e 27 00 callq 798e10 0.00 : 526fec: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetOptions; 0.00 : 526ff2: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->name = $3; : n->def = (Node *) $5; : $$ = (Node *)n; 0.00 : 526ff9: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetOptions; : n->name = $3; 0.00 : 526ffc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527003: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 527007: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = (Node *) $5; 0.00 : 52700b: 48 8b 11 mov (%rcx),%rdx 0.00 : 52700e: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ 0.00 : 527012: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527019: e9 62 a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ : | ALTER opt_column ColId SET STATISTICS SignedIconst : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52701e: 48 8b 3d 3b 38 69 00 mov 0x69383b(%rip),%rdi # bba860 0.00 : 527025: be 20 00 00 00 mov $0x20,%esi 0.00 : 52702a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527031: e8 da 1d 27 00 callq 798e10 0.00 : 527036: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetStatistics; 0.00 : 52703c: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ : | ALTER opt_column ColId SET STATISTICS SignedIconst : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527043: 48 89 c3 mov %rax,%rbx : n->subtype = AT_SetStatistics; : n->name = $3; 0.00 : 527046: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->def = (Node *) makeInteger($6); : $$ = (Node *)n; 0.00 : 52704d: 49 89 de mov %rbx,%r14 : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ : | ALTER opt_column ColId SET STATISTICS SignedIconst : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetStatistics; : n->name = $3; 0.00 : 527050: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 527054: 48 89 43 08 mov %rax,0x8(%rbx) : n->def = (Node *) makeInteger($6); 0.00 : 527058: 48 63 3e movslq (%rsi),%rdi 0.00 : 52705b: e8 f0 86 0d 00 callq 5ff750 0.00 : 527060: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ 0.00 : 527064: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52706b: e9 10 a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET NOT NULL */ : | ALTER opt_column ColId SET NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527070: 48 8b 3d e9 37 69 00 mov 0x6937e9(%rip),%rdi # bba860 0.00 : 527077: be 20 00 00 00 mov $0x20,%esi 0.00 : 52707c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527083: e8 88 1d 27 00 callq 798e10 0.00 : 527088: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetNotNull; 0.00 : 52708e: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 527095: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] SET NOT NULL */ : | ALTER opt_column ColId SET NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetNotNull; : n->name = $3; 0.00 : 527098: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52709f: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 5270a3: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ 0.00 : 5270a7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5270ae: e9 cd a8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] DROP NOT NULL */ : | ALTER opt_column ColId DROP NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5270b3: 48 8b 3d a6 37 69 00 mov 0x6937a6(%rip),%rdi # bba860 0.00 : 5270ba: be 20 00 00 00 mov $0x20,%esi 0.00 : 5270bf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5270c6: e8 45 1d 27 00 callq 798e10 0.00 : 5270cb: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropNotNull; 0.00 : 5270d1: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 5270d8: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] DROP NOT NULL */ : | ALTER opt_column ColId DROP NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropNotNull; : n->name = $3; 0.00 : 5270db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5270e2: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 5270e6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET NOT NULL */ 0.00 : 5270ea: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5270f1: e9 8a a8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] {SET DEFAULT |DROP DEFAULT} */ : | ALTER opt_column ColId alter_column_default : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5270f6: 48 8b 3d 63 37 69 00 mov 0x693763(%rip),%rdi # bba860 0.00 : 5270fd: be 20 00 00 00 mov $0x20,%esi 0.00 : 527102: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527109: e8 02 1d 27 00 callq 798e10 0.00 : 52710e: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ColumnDefault; 0.00 : 527114: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->name = $3; : n->def = $4; : $$ = (Node *)n; 0.00 : 52711b: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] {SET DEFAULT |DROP DEFAULT} */ : | ALTER opt_column ColId alter_column_default : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ColumnDefault; : n->name = $3; 0.00 : 52711e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 527125: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527129: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = $4; 0.00 : 52712d: 48 8b 16 mov (%rsi),%rdx 0.00 : 527130: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] DROP NOT NULL */ 0.00 : 527134: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52713b: e9 40 a8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ADD COLUMN */ : | ADD_P COLUMN columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527140: 48 8b 3d 19 37 69 00 mov 0x693719(%rip),%rdi # bba860 0.00 : 527147: be 20 00 00 00 mov $0x20,%esi 0.00 : 52714c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527153: e8 b8 1c 27 00 callq 798e10 0.00 : 527158: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddColumn; 0.00 : 52715e: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->def = $3; : $$ = (Node *)n; 0.00 : 527165: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ADD COLUMN */ : | ADD_P COLUMN columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddColumn; : n->def = $3; 0.00 : 527168: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52716f: 48 8b 13 mov (%rbx),%rdx 0.00 : 527172: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] {SET DEFAULT |DROP DEFAULT} */ 0.00 : 527176: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52717d: e9 fe a7 fe ff jmpq 511980 : : alter_table_cmd: : /* ALTER TABLE ADD */ : ADD_P columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527182: 48 8b 3d d7 36 69 00 mov 0x6936d7(%rip),%rdi # bba860 0.00 : 527189: be 20 00 00 00 mov $0x20,%esi 0.00 : 52718e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527195: e8 76 1c 27 00 callq 798e10 0.00 : 52719a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddColumn; 0.00 : 5271a0: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->def = $2; : $$ = (Node *)n; 0.00 : 5271a7: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ADD */ : ADD_P columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddColumn; : n->def = $2; 0.00 : 5271aa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5271b1: 48 8b 11 mov (%rcx),%rdx 0.00 : 5271b4: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ADD COLUMN */ 0.00 : 5271b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5271bf: e9 bc a7 fe ff jmpq 511980 : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 5271c4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5271cb: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5271cf: 48 8b 36 mov (%rsi),%rsi 0.00 : 5271d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5271d9: e8 a2 ac 0b 00 callq 5e1e80 : ; 0.00 : 5271de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 5271e5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5271e8: e9 93 a7 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } 0.00 : 5271ed: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5271f4: 31 f6 xor %esi,%esi 0.00 : 5271f6: 48 8b 3b mov (%rbx),%rdi 0.00 : 5271f9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527200: e8 4b a6 0b 00 callq 5e1850 : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 527205: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } 0.00 : 52720c: 49 89 c6 mov %rax,%r14 : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 52720f: e9 6c a7 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 527214: 48 8b 3d 45 36 69 00 mov 0x693645(%rip),%rdi # bba860 0.00 : 52721b: be 30 00 00 00 mov $0x30,%esi 0.00 : 527220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527227: e8 e4 1b 27 00 callq 798e10 0.00 : 52722c: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $7; 0.00 : 527232: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = OBJECT_MATVIEW; : n->roles = $10; : n->new_tablespacename = $13; : n->nowait = $14; : $$ = (Node *)n; 0.00 : 527239: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 52723c: 48 8b 51 c8 mov -0x38(%rcx),%rdx : n->objtype = OBJECT_MATVIEW; 0.00 : 527240: c7 40 10 12 00 00 00 movl $0x12,0x10(%rax) : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 527247: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_MATVIEW; : n->roles = $10; 0.00 : 52724b: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 52724f: 48 89 50 18 mov %rdx,0x18(%rax) : n->new_tablespacename = $13; 0.00 : 527253: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527257: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $14; 0.00 : 52725b: 0f b6 11 movzbl (%rcx),%edx 0.00 : 52725e: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 527261: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527268: e9 13 a7 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 52726d: 48 8b 3d ec 35 69 00 mov 0x6935ec(%rip),%rdi # bba860 0.00 : 527274: be 30 00 00 00 mov $0x30,%esi 0.00 : 527279: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527280: e8 8b 1b 27 00 callq 798e10 0.00 : 527285: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $7; 0.00 : 52728b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objtype = OBJECT_MATVIEW; : n->roles = NIL; : n->new_tablespacename = $10; : n->nowait = $11; : $$ = (Node *)n; 0.00 : 527292: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 527295: 48 8b 56 e0 mov -0x20(%rsi),%rdx : n->objtype = OBJECT_MATVIEW; 0.00 : 527299: c7 40 10 12 00 00 00 movl $0x12,0x10(%rax) : n->roles = NIL; 0.00 : 5272a0: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5272a7: 00 : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 5272a8: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_MATVIEW; : n->roles = NIL; : n->new_tablespacename = $10; 0.00 : 5272ac: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5272b0: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $11; 0.00 : 5272b4: 0f b6 16 movzbl (%rsi),%edx 0.00 : 5272b7: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait 0.00 : 5272ba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5272c1: e9 ba a6 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5272c6: 48 8b 3d 93 35 69 00 mov 0x693593(%rip),%rdi # bba860 0.00 : 5272cd: be 20 00 00 00 mov $0x20,%esi 0.00 : 5272d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5272d9: e8 32 1b 27 00 callq 798e10 0.00 : 5272de: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $6; 0.00 : 5272e4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $7; : n->relkind = OBJECT_MATVIEW; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 5272eb: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; 0.00 : 5272ee: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5272f2: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $7; 0.00 : 5272f6: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_MATVIEW; 0.00 : 5272f9: c7 40 18 12 00 00 00 movl $0x12,0x18(%rax) : n->missing_ok = true; 0.00 : 527300: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; : n->cmds = $7; 0.00 : 527304: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_MATVIEW; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait 0.00 : 527308: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52730f: e9 6c a6 fe ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 527314: 48 8b 3d 45 35 69 00 mov 0x693545(%rip),%rdi # bba860 0.00 : 52731b: be 20 00 00 00 mov $0x20,%esi 0.00 : 527320: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527327: e8 e4 1a 27 00 callq 798e10 0.00 : 52732c: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $4; 0.00 : 527332: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $5; : n->relkind = OBJECT_MATVIEW; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 527339: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; 0.00 : 52733c: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527340: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $5; 0.00 : 527344: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_MATVIEW; 0.00 : 527347: c7 40 18 12 00 00 00 movl $0x12,0x18(%rax) : n->missing_ok = false; 0.00 : 52734e: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; : n->cmds = $5; 0.00 : 527352: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_MATVIEW; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds 0.00 : 527356: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52735d: e9 1e a6 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 527362: 48 8b 3d f7 34 69 00 mov 0x6934f7(%rip),%rdi # bba860 0.00 : 527369: be 20 00 00 00 mov $0x20,%esi 0.00 : 52736e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527375: e8 96 1a 27 00 callq 798e10 0.00 : 52737a: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 527380: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $6; : n->relkind = OBJECT_VIEW; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 527387: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 52738a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 52738e: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 527392: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_VIEW; 0.00 : 527395: c7 40 18 23 00 00 00 movl $0x23,0x18(%rax) : n->missing_ok = true; 0.00 : 52739c: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 5273a0: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_VIEW; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds 0.00 : 5273a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5273ab: e9 d0 a5 fe ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5273b0: 48 8b 3d a9 34 69 00 mov 0x6934a9(%rip),%rdi # bba860 0.00 : 5273b7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5273bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5273c3: e8 48 1a 27 00 callq 798e10 0.00 : 5273c8: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 5273ce: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $4; : n->relkind = OBJECT_VIEW; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 5273d5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 5273d8: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5273dc: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 5273e0: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_VIEW; 0.00 : 5273e3: c7 40 18 23 00 00 00 movl $0x23,0x18(%rax) : n->missing_ok = false; 0.00 : 5273ea: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 5273ee: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_VIEW; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds 0.00 : 5273f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5273f9: e9 82 a5 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5273fe: 48 8b 3d 5b 34 69 00 mov 0x69345b(%rip),%rdi # bba860 0.00 : 527405: be 20 00 00 00 mov $0x20,%esi 0.00 : 52740a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527411: e8 fa 19 27 00 callq 798e10 0.00 : 527416: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 52741c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $6; : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 527423: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 527426: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52742a: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 52742e: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_SEQUENCE; 0.00 : 527431: c7 40 18 1a 00 00 00 movl $0x1a,0x18(%rax) : n->missing_ok = true; 0.00 : 527438: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 52743c: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name alter_table_cmds 0.00 : 527440: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527447: e9 34 a5 fe ff jmpq 511980 : n->nowait = $13; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52744c: 48 8b 3d 0d 34 69 00 mov 0x69340d(%rip),%rdi # bba860 0.00 : 527453: be 20 00 00 00 mov $0x20,%esi 0.00 : 527458: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52745f: e8 ac 19 27 00 callq 798e10 0.00 : 527464: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 52746a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $4; : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 527471: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 527474: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527478: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 52747c: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_SEQUENCE; 0.00 : 52747f: c7 40 18 1a 00 00 00 movl $0x1a,0x18(%rax) : n->missing_ok = false; 0.00 : 527486: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER SEQUENCE qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 52748a: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds 0.00 : 52748e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527495: e9 e6 a4 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 52749a: 48 8b 3d bf 33 69 00 mov 0x6933bf(%rip),%rdi # bba860 0.00 : 5274a1: be 30 00 00 00 mov $0x30,%esi 0.00 : 5274a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5274ad: e8 5e 19 27 00 callq 798e10 0.00 : 5274b2: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 5274b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->objtype = OBJECT_INDEX; : n->roles = $9; : n->new_tablespacename = $12; : n->nowait = $13; : $$ = (Node *)n; 0.00 : 5274bf: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 5274c2: 48 8b 53 c8 mov -0x38(%rbx),%rdx : n->objtype = OBJECT_INDEX; 0.00 : 5274c6: c7 40 10 0f 00 00 00 movl $0xf,0x10(%rax) : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 5274cd: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_INDEX; : n->roles = $9; 0.00 : 5274d1: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 5274d5: 48 89 50 18 mov %rdx,0x18(%rax) : n->new_tablespacename = $12; 0.00 : 5274d9: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5274dd: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $13; 0.00 : 5274e1: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5274e4: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name alter_table_cmds 0.00 : 5274e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5274ee: e9 8d a4 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 5274f3: 48 8b 3d 66 33 69 00 mov 0x693366(%rip),%rdi # bba860 0.00 : 5274fa: be 30 00 00 00 mov $0x30,%esi 0.00 : 5274ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527506: e8 05 19 27 00 callq 798e10 0.00 : 52750b: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 527511: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = OBJECT_INDEX; : n->roles = NIL; : n->new_tablespacename = $9; : n->nowait = $10; : $$ = (Node *)n; 0.00 : 527518: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52751b: 48 8b 51 e0 mov -0x20(%rcx),%rdx : n->objtype = OBJECT_INDEX; 0.00 : 52751f: c7 40 10 0f 00 00 00 movl $0xf,0x10(%rax) : n->roles = NIL; 0.00 : 527526: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52752d: 00 : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52752e: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_INDEX; : n->roles = NIL; : n->new_tablespacename = $9; 0.00 : 527532: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527536: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $10; 0.00 : 52753a: 0f b6 11 movzbl (%rcx),%edx 0.00 : 52753d: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait 0.00 : 527540: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527547: e9 34 a4 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52754c: 48 8b 3d 0d 33 69 00 mov 0x69330d(%rip),%rdi # bba860 0.00 : 527553: be 20 00 00 00 mov $0x20,%esi 0.00 : 527558: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52755f: e8 ac 18 27 00 callq 798e10 0.00 : 527564: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 52756a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $6; : n->relkind = OBJECT_INDEX; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 527571: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 527574: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527578: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 52757c: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_INDEX; 0.00 : 52757f: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = true; 0.00 : 527586: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 52758a: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_INDEX; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait 0.00 : 52758e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527595: e9 e6 a3 fe ff jmpq 511980 : n->nowait = $13; : $$ = (Node *)n; : } : | ALTER INDEX qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52759a: 48 8b 3d bf 32 69 00 mov 0x6932bf(%rip),%rdi # bba860 0.00 : 5275a1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5275a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5275ad: e8 5e 18 27 00 callq 798e10 0.00 : 5275b2: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 5275b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $4; : n->relkind = OBJECT_INDEX; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 5275bf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER INDEX qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 5275c2: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5275c6: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 5275ca: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_INDEX; 0.00 : 5275cd: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = false; 0.00 : 5275d4: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER INDEX qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 5275d8: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_INDEX; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds 0.00 : 5275dc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5275e3: e9 98 a3 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 5275e8: 48 8b 3d 71 32 69 00 mov 0x693271(%rip),%rdi # bba860 0.00 : 5275ef: be 30 00 00 00 mov $0x30,%esi 0.00 : 5275f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5275fb: e8 10 18 27 00 callq 798e10 0.00 : 527600: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 527606: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = OBJECT_TABLE; : n->roles = $9; : n->new_tablespacename = $12; : n->nowait = $13; : $$ = (Node *)n; 0.00 : 52760d: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 527610: 48 8b 51 c8 mov -0x38(%rcx),%rdx : n->objtype = OBJECT_TABLE; 0.00 : 527614: c7 40 10 1b 00 00 00 movl $0x1b,0x10(%rax) : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52761b: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_TABLE; : n->roles = $9; 0.00 : 52761f: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 527623: 48 89 50 18 mov %rdx,0x18(%rax) : n->new_tablespacename = $12; 0.00 : 527627: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52762b: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $13; 0.00 : 52762f: 0f b6 11 movzbl (%rcx),%edx 0.00 : 527632: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER INDEX qualified_name alter_table_cmds 0.00 : 527635: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52763c: e9 3f a3 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 527641: 48 8b 3d 18 32 69 00 mov 0x693218(%rip),%rdi # bba860 0.00 : 527648: be 30 00 00 00 mov $0x30,%esi 0.00 : 52764d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527654: e8 b7 17 27 00 callq 798e10 0.00 : 527659: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 52765f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objtype = OBJECT_TABLE; : n->roles = NIL; : n->new_tablespacename = $9; : n->nowait = $10; : $$ = (Node *)n; 0.00 : 527666: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 527669: 48 8b 56 e0 mov -0x20(%rsi),%rdx : n->objtype = OBJECT_TABLE; 0.00 : 52766d: c7 40 10 1b 00 00 00 movl $0x1b,0x10(%rax) : n->roles = NIL; 0.00 : 527674: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52767b: 00 : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52767c: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_TABLE; : n->roles = NIL; : n->new_tablespacename = $9; 0.00 : 527680: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527684: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $10; 0.00 : 527688: 0f b6 16 movzbl (%rsi),%edx 0.00 : 52768b: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait 0.00 : 52768e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527695: e9 e6 a2 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52769a: 48 8b 3d bf 31 69 00 mov 0x6931bf(%rip),%rdi # bba860 0.00 : 5276a1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5276a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5276ad: e8 5e 17 27 00 callq 798e10 0.00 : 5276b2: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 5276b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $6; : n->relkind = OBJECT_TABLE; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 5276bf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 5276c2: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5276c6: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 5276ca: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_TABLE; 0.00 : 5276cd: c7 40 18 1b 00 00 00 movl $0x1b,0x18(%rax) : n->missing_ok = true; 0.00 : 5276d4: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 5276d8: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_TABLE; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait 0.00 : 5276dc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5276e3: e9 98 a2 fe ff jmpq 511980 : *****************************************************************************/ : : AlterTableStmt: : ALTER TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5276e8: 48 8b 3d 71 31 69 00 mov 0x693171(%rip),%rdi # bba860 0.00 : 5276ef: be 20 00 00 00 mov $0x20,%esi 0.00 : 5276f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5276fb: e8 10 17 27 00 callq 798e10 0.00 : 527700: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 527706: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $4; : n->relkind = OBJECT_TABLE; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 52770d: 49 89 c6 mov %rax,%r14 : : AlterTableStmt: : ALTER TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 527710: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527714: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 527718: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_TABLE; 0.00 : 52771b: c7 40 18 1b 00 00 00 movl $0x1b,0x18(%rax) : n->missing_ok = false; 0.00 : 527722: c6 40 1c 00 movb $0x0,0x1c(%rax) : AlterTableStmt: : ALTER TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 527726: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_TABLE; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds 0.00 : 52772a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527731: e9 4a a2 fe ff jmpq 511980 : n->target = DISCARD_PLANS; : $$ = (Node *) n; : } : | DISCARD SEQUENCES : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 527736: 48 8b 3d 23 31 69 00 mov 0x693123(%rip),%rdi # bba860 0.00 : 52773d: be 08 00 00 00 mov $0x8,%esi 0.00 : 527742: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527749: e8 c2 16 27 00 callq 798e10 0.00 : 52774e: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_SEQUENCES; 0.00 : 527754: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : $$ = (Node *) n; 0.00 : 52775b: 49 89 c6 mov %rax,%r14 : } : 0.00 : 52775e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527765: e9 16 a2 fe ff jmpq 511980 : n->target = DISCARD_TEMP; : $$ = (Node *) n; : } : | DISCARD PLANS : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 52776a: 48 8b 3d ef 30 69 00 mov 0x6930ef(%rip),%rdi # bba860 0.00 : 527771: be 08 00 00 00 mov $0x8,%esi 0.00 : 527776: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52777d: e8 8e 16 27 00 callq 798e10 0.00 : 527782: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_PLANS; 0.00 : 527788: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : $$ = (Node *) n; 0.00 : 52778f: 49 89 c6 mov %rax,%r14 : } : | DISCARD SEQUENCES 0.00 : 527792: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527799: e9 e2 a1 fe ff jmpq 511980 : n->target = DISCARD_TEMP; : $$ = (Node *) n; : } : | DISCARD TEMPORARY : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 52779e: 48 8b 3d bb 30 69 00 mov 0x6930bb(%rip),%rdi # bba860 0.00 : 5277a5: be 08 00 00 00 mov $0x8,%esi 0.00 : 5277aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5277b1: e8 5a 16 27 00 callq 798e10 0.00 : 5277b6: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_TEMP; 0.00 : 5277bc: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = (Node *) n; 0.00 : 5277c3: 49 89 c6 mov %rax,%r14 : } : | DISCARD PLANS 0.00 : 5277c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5277cd: e9 ae a1 fe ff jmpq 511980 : n->target = DISCARD_ALL; : $$ = (Node *) n; : } : | DISCARD TEMP : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 5277d2: 48 8b 3d 87 30 69 00 mov 0x693087(%rip),%rdi # bba860 0.00 : 5277d9: be 08 00 00 00 mov $0x8,%esi 0.00 : 5277de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5277e5: e8 26 16 27 00 callq 798e10 0.00 : 5277ea: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_TEMP; 0.00 : 5277f0: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = (Node *) n; 0.00 : 5277f7: 49 89 c6 mov %rax,%r14 : } : | DISCARD TEMPORARY 0.00 : 5277fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527801: e9 7a a1 fe ff jmpq 511980 : *****************************************************************************/ : : DiscardStmt: : DISCARD ALL : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 527806: 48 8b 3d 53 30 69 00 mov 0x693053(%rip),%rdi # bba860 0.00 : 52780d: be 08 00 00 00 mov $0x8,%esi 0.00 : 527812: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527819: e8 f2 15 27 00 callq 798e10 0.00 : 52781e: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_ALL; 0.00 : 527824: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = (Node *) n; 0.00 : 52782b: 49 89 c6 mov %rax,%r14 : } : | DISCARD TEMP 0.00 : 52782e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527835: e9 46 a1 fe ff jmpq 511980 : * Checkpoint statement : */ : CheckPointStmt: : CHECKPOINT : { : CheckPointStmt *n = makeNode(CheckPointStmt); 0.00 : 52783a: 48 8b 3d 1f 30 69 00 mov 0x69301f(%rip),%rdi # bba860 0.00 : 527841: be 04 00 00 00 mov $0x4,%esi 0.00 : 527846: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52784d: e8 ce 17 27 00 callq 799020 0.00 : 527852: c7 00 f1 02 00 00 movl $0x2f1,(%rax) : $$ = (Node *)n; 0.00 : 527858: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52785b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527862: e9 19 a1 fe ff jmpq 511980 : | qualified_name_list { $$ = $1; } : ; : : constraints_set_mode: : DEFERRED { $$ = TRUE; } : | IMMEDIATE { $$ = FALSE; } 0.00 : 527867: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 52786a: e9 11 a1 fe ff jmpq 511980 : ALL { $$ = NIL; } : | qualified_name_list { $$ = $1; } : ; : : constraints_set_mode: : DEFERRED { $$ = TRUE; } 0.00 : 52786f: 41 b6 01 mov $0x1,%r14b : | IMMEDIATE { $$ = FALSE; } 0.00 : 527872: e9 09 a1 fe ff jmpq 511980 : } : ; : : constraints_set_list: : ALL { $$ = NIL; } : | qualified_name_list { $$ = $1; } 0.00 : 527877: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52787e: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 527881: e9 fa a0 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : constraints_set_list: : ALL { $$ = NIL; } 0.00 : 527886: 45 31 f6 xor %r14d,%r14d : | qualified_name_list { $$ = $1; } 0.00 : 527889: e9 f2 a0 fe ff jmpq 511980 : : : ConstraintsSetStmt: : SET CONSTRAINTS constraints_set_list constraints_set_mode : { : ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); 0.00 : 52788e: 48 8b 3d cb 2f 69 00 mov 0x692fcb(%rip),%rdi # bba860 0.00 : 527895: be 18 00 00 00 mov $0x18,%esi 0.00 : 52789a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5278a1: e8 6a 15 27 00 callq 798e10 0.00 : 5278a6: c7 00 ef 02 00 00 movl $0x2ef,(%rax) : n->constraints = $3; 0.00 : 5278ac: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->deferred = $4; : $$ = (Node *) n; 0.00 : 5278b3: 49 89 c6 mov %rax,%r14 : : ConstraintsSetStmt: : SET CONSTRAINTS constraints_set_list constraints_set_mode : { : ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); : n->constraints = $3; 0.00 : 5278b6: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5278ba: 48 89 50 08 mov %rdx,0x8(%rax) : n->deferred = $4; 0.00 : 5278be: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5278c1: 88 50 10 mov %dl,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5278c4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5278cb: e9 b0 a0 fe ff jmpq 511980 : n->name = "session_authorization"; : $$ = (Node *) n; : } : | SHOW ALL : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 5278d0: 48 8b 3d 89 2f 69 00 mov 0x692f89(%rip),%rdi # bba860 0.00 : 5278d7: be 10 00 00 00 mov $0x10,%esi 0.00 : 5278dc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5278e3: e8 28 15 27 00 callq 798e10 0.00 : 5278e8: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "all"; 0.00 : 5278ee: 48 c7 40 08 c4 bb 87 movq $0x87bbc4,0x8(%rax) 0.00 : 5278f5: 00 : $$ = (Node *) n; 0.00 : 5278f6: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5278f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527900: e9 7b a0 fe ff jmpq 511980 : n->name = "transaction_isolation"; : $$ = (Node *) n; : } : | SHOW SESSION AUTHORIZATION : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 527905: 48 8b 3d 54 2f 69 00 mov 0x692f54(%rip),%rdi # bba860 0.00 : 52790c: be 10 00 00 00 mov $0x10,%esi 0.00 : 527911: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527918: e8 f3 14 27 00 callq 798e10 0.00 : 52791d: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "session_authorization"; 0.00 : 527923: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 52792a: 00 : $$ = (Node *) n; 0.00 : 52792b: 49 89 c6 mov %rax,%r14 : } : | SHOW ALL 0.00 : 52792e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527935: e9 46 a0 fe ff jmpq 511980 : n->name = "timezone"; : $$ = (Node *) n; : } : | SHOW TRANSACTION ISOLATION LEVEL : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 52793a: 48 8b 3d 1f 2f 69 00 mov 0x692f1f(%rip),%rdi # bba860 0.00 : 527941: be 10 00 00 00 mov $0x10,%esi 0.00 : 527946: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52794d: e8 be 14 27 00 callq 798e10 0.00 : 527952: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "transaction_isolation"; 0.00 : 527958: 48 c7 40 08 2a df 89 movq $0x89df2a,0x8(%rax) 0.00 : 52795f: 00 : $$ = (Node *) n; 0.00 : 527960: 49 89 c6 mov %rax,%r14 : } : | SHOW SESSION AUTHORIZATION 0.00 : 527963: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52796a: e9 11 a0 fe ff jmpq 511980 : n->name = $2; : $$ = (Node *) n; : } : | SHOW TIME ZONE : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 52796f: 48 8b 3d ea 2e 69 00 mov 0x692eea(%rip),%rdi # bba860 0.00 : 527976: be 10 00 00 00 mov $0x10,%esi 0.00 : 52797b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527982: e8 89 14 27 00 callq 798e10 0.00 : 527987: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "timezone"; 0.00 : 52798d: 48 c7 40 08 60 fc 8f movq $0x8ffc60,0x8(%rax) 0.00 : 527994: 00 : $$ = (Node *) n; 0.00 : 527995: 49 89 c6 mov %rax,%r14 : } : | SHOW TRANSACTION ISOLATION LEVEL 0.00 : 527998: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52799f: e9 dc 9f fe ff jmpq 511980 : : : VariableShowStmt: : SHOW var_name : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 5279a4: 48 8b 3d b5 2e 69 00 mov 0x692eb5(%rip),%rdi # bba860 0.00 : 5279ab: be 10 00 00 00 mov $0x10,%esi 0.00 : 5279b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5279b7: e8 54 14 27 00 callq 798e10 0.00 : 5279bc: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = $2; 0.00 : 5279c2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; 0.00 : 5279c9: 49 89 c6 mov %rax,%r14 : : VariableShowStmt: : SHOW var_name : { : VariableShowStmt *n = makeNode(VariableShowStmt); : n->name = $2; 0.00 : 5279cc: 48 8b 11 mov (%rcx),%rdx 0.00 : 5279cf: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : | SHOW TIME ZONE 0.00 : 5279d3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5279da: e9 a1 9f fe ff jmpq 511980 : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : FunctionSetResetClause: : SET set_rest_more { $$ = $2; } : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 5279df: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5279e6: 4c 8b 32 mov (%rdx),%r14 : ; 0.00 : 5279e9: e9 92 9f fe ff jmpq 511980 : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : FunctionSetResetClause: : SET set_rest_more { $$ = $2; } 0.00 : 5279ee: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5279f5: 4c 8b 30 mov (%rax),%r14 : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 5279f8: e9 83 9f fe ff jmpq 511980 : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : SetResetClause: : SET set_rest { $$ = $2; } : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 5279fd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 527a04: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 527a07: e9 74 9f fe ff jmpq 511980 : } : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : SetResetClause: : SET set_rest { $$ = $2; } 0.00 : 527a0c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527a13: 4c 8b 33 mov (%rbx),%r14 : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 527a16: e9 65 9f fe ff jmpq 511980 : n->name = $1; : $$ = n; : } : | ALL : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527a1b: 48 8b 3d 3e 2e 69 00 mov 0x692e3e(%rip),%rdi # bba860 0.00 : 527a22: be 20 00 00 00 mov $0x20,%esi 0.00 : 527a27: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527a2e: e8 dd 13 27 00 callq 798e10 0.00 : 527a33: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET_ALL; 0.00 : 527a39: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : $$ = n; 0.00 : 527a40: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 527a43: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527a4a: e9 31 9f fe ff jmpq 511980 : ; : : generic_reset: : var_name : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527a4f: 48 8b 3d 0a 2e 69 00 mov 0x692e0a(%rip),%rdi # bba860 0.00 : 527a56: be 20 00 00 00 mov $0x20,%esi 0.00 : 527a5b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527a62: e8 a9 13 27 00 callq 798e10 0.00 : 527a67: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527a6d: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 527a74: 49 89 c6 mov %rax,%r14 : generic_reset: : var_name : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = $1; 0.00 : 527a77: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527a7e: 48 8b 11 mov (%rcx),%rdx 0.00 : 527a81: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL 0.00 : 527a85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527a8c: e9 ef 9e fe ff jmpq 511980 : n->name = "transaction_isolation"; : $$ = n; : } : | SESSION AUTHORIZATION : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527a91: 48 8b 3d c8 2d 69 00 mov 0x692dc8(%rip),%rdi # bba860 0.00 : 527a98: be 20 00 00 00 mov $0x20,%esi 0.00 : 527a9d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527aa4: e8 67 13 27 00 callq 798e10 0.00 : 527aa9: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527aaf: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = "session_authorization"; : $$ = n; 0.00 : 527ab6: 49 89 c6 mov %rax,%r14 : } : | SESSION AUTHORIZATION : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = "session_authorization"; 0.00 : 527ab9: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 527ac0: 00 : $$ = n; : } : ; 0.00 : 527ac1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527ac8: e9 b3 9e fe ff jmpq 511980 : n->name = "timezone"; : $$ = n; : } : | TRANSACTION ISOLATION LEVEL : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527acd: 48 8b 3d 8c 2d 69 00 mov 0x692d8c(%rip),%rdi # bba860 0.00 : 527ad4: be 20 00 00 00 mov $0x20,%esi 0.00 : 527ad9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527ae0: e8 2b 13 27 00 callq 798e10 0.00 : 527ae5: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527aeb: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = "transaction_isolation"; : $$ = n; 0.00 : 527af2: 49 89 c6 mov %rax,%r14 : } : | TRANSACTION ISOLATION LEVEL : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = "transaction_isolation"; 0.00 : 527af5: 48 c7 40 08 2a df 89 movq $0x89df2a,0x8(%rax) 0.00 : 527afc: 00 : $$ = n; : } : | SESSION AUTHORIZATION 0.00 : 527afd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527b04: e9 77 9e fe ff jmpq 511980 : : reset_rest: : generic_reset { $$ = $1; } : | TIME ZONE : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527b09: 48 8b 3d 50 2d 69 00 mov 0x692d50(%rip),%rdi # bba860 0.00 : 527b10: be 20 00 00 00 mov $0x20,%esi 0.00 : 527b15: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527b1c: e8 ef 12 27 00 callq 798e10 0.00 : 527b21: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527b27: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = "timezone"; : $$ = n; 0.00 : 527b2e: 49 89 c6 mov %rax,%r14 : generic_reset { $$ = $1; } : | TIME ZONE : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = "timezone"; 0.00 : 527b31: 48 c7 40 08 60 fc 8f movq $0x8ffc60,0x8(%rax) 0.00 : 527b38: 00 : $$ = n; : } : | TRANSACTION ISOLATION LEVEL 0.00 : 527b39: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527b40: e9 3b 9e fe ff jmpq 511980 : VariableResetStmt: : RESET reset_rest { $$ = (Node *) $2; } : ; : : reset_rest: : generic_reset { $$ = $1; } 0.00 : 527b45: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527b4c: 4c 8b 32 mov (%rdx),%r14 : | TIME ZONE 0.00 : 527b4f: e9 2c 9e fe ff jmpq 511980 : NonReservedWord { $$ = $1; } : | Sconst { $$ = $1; } : ; : : VariableResetStmt: : RESET reset_rest { $$ = (Node *) $2; } 0.00 : 527b54: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527b5b: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 527b5e: e9 1d 9e fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : NonReservedWord_or_Sconst: : NonReservedWord { $$ = $1; } : | Sconst { $$ = $1; } 0.00 : 527b63: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 527b6a: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 527b6d: e9 0e 9e fe ff jmpq 511980 : | DEFAULT { $$ = NULL; } : | /*EMPTY*/ { $$ = NULL; } : ; : : NonReservedWord_or_Sconst: : NonReservedWord { $$ = $1; } 0.00 : 527b72: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527b79: 4c 8b 33 mov (%rbx),%r14 : | Sconst { $$ = $1; } 0.00 : 527b7c: e9 ff 9d fe ff jmpq 511980 : ; : : opt_encoding: : Sconst { $$ = $1; } : | DEFAULT { $$ = NULL; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 527b81: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 527b84: e9 f7 9d fe ff jmpq 511980 : | LOCAL { $$ = NULL; } : ; : : opt_encoding: : Sconst { $$ = $1; } : | DEFAULT { $$ = NULL; } 0.00 : 527b89: 45 31 f6 xor %r14d,%r14d : | /*EMPTY*/ { $$ = NULL; } 0.00 : 527b8c: e9 ef 9d fe ff jmpq 511980 : | DEFAULT { $$ = NULL; } : | LOCAL { $$ = NULL; } : ; : : opt_encoding: : Sconst { $$ = $1; } 0.00 : 527b91: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527b98: 4c 8b 31 mov (%rcx),%r14 : | DEFAULT { $$ = NULL; } 0.00 : 527b9b: e9 e0 9d fe ff jmpq 511980 : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } : | DEFAULT { $$ = NULL; } : | LOCAL { $$ = NULL; } 0.00 : 527ba0: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 527ba3: e9 d8 9d fe ff jmpq 511980 : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } : | DEFAULT { $$ = NULL; } 0.00 : 527ba8: 45 31 f6 xor %r14d,%r14d : | LOCAL { $$ = NULL; } 0.00 : 527bab: e9 d0 9d fe ff jmpq 511980 : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527bb0: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 527bb7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527bbe: 8b 30 mov (%rax),%esi 0.00 : 527bc0: 48 8b 3a mov (%rdx),%rdi 0.00 : 527bc3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527bca: e8 91 90 fe ff callq 510c60 : | DEFAULT { $$ = NULL; } 0.00 : 527bcf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527bd6: 49 89 c6 mov %rax,%r14 : | DEFAULT { $$ = NULL; } 0.00 : 527bd9: e9 a2 9d fe ff jmpq 511980 : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527bde: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : if ($6 != NIL) 0.00 : 527be5: 48 8b 16 mov (%rsi),%rdx : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527be8: 4c 8b 66 d8 mov -0x28(%rsi),%r12 : if ($6 != NIL) 0.00 : 527bec: 48 85 d2 test %rdx,%rdx 0.00 : 527bef: 0f 84 4c 21 00 00 je 529d41 : { : A_Const *n = (A_Const *) linitial($6); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) 0.00 : 527bf5: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 527bf9: 48 8b 00 mov (%rax),%rax 0.00 : 527bfc: 48 f7 40 10 ff f3 ff testq $0xfffffffffffff3ff,0x10(%rax) 0.00 : 527c03: ff 0.00 : 527c04: 0f 85 25 21 00 00 jne 529d2f : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@6))); : if (list_length($6) != 1) 0.00 : 527c0a: 83 7a 04 01 cmpl $0x1,0x4(%rdx) 0.00 : 527c0e: 0f 85 85 21 00 00 jne 529d99 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); 0.00 : 527c14: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527c1b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527c22: 8b 71 f4 mov -0xc(%rcx),%esi 0.00 : 527c25: 8b 7b e8 mov -0x18(%rbx),%edi 0.00 : 527c28: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527c2f: e8 dc 8f fe ff callq 510c10 0.00 : 527c34: 48 8b 3b mov (%rbx),%rdi 0.00 : 527c37: 48 89 c6 mov %rax,%rsi 0.00 : 527c3a: e8 41 a2 0b 00 callq 5e1e80 0.00 : 527c3f: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 527c44: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 527c4b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527c52: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527c59: 4c 89 e2 mov %r12,%rdx 0.00 : 527c5c: 8b 71 fc mov -0x4(%rcx),%esi 0.00 : 527c5f: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 527c63: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527c6a: e8 51 8f fe ff callq 510bc0 : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527c6f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 527c76: 49 89 c6 mov %rax,%r14 : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527c79: e9 02 9d fe ff jmpq 511980 : { : $$ = makeStringConst($1, @1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527c7e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : if ($3 != NIL) 0.00 : 527c85: 48 8b 0b mov (%rbx),%rcx : { : $$ = makeStringConst($1, @1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527c88: 48 8b 53 f0 mov -0x10(%rbx),%rdx : if ($3 != NIL) 0.00 : 527c8c: 48 85 c9 test %rcx,%rcx 0.00 : 527c8f: 74 15 je 527ca6 : { : A_Const *n = (A_Const *) linitial($3); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) 0.00 : 527c91: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 527c95: 48 8b 00 mov (%rax),%rax 0.00 : 527c98: 48 f7 40 10 ff f3 ff testq $0xfffffffffffff3ff,0x10(%rax) 0.00 : 527c9f: ff 0.00 : 527ca0: 0f 85 c3 1c 00 00 jne 529969 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@3))); : } : t->typmods = $3; 0.00 : 527ca6: 48 89 4a 18 mov %rcx,0x18(%rdx) : $$ = makeStringConstCast($2, @2, t); 0.00 : 527caa: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527cb1: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527cb8: 8b 71 fc mov -0x4(%rcx),%esi 0.00 : 527cbb: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 527cbf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527cc6: e8 f5 8e fe ff callq 510bc0 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 527ccb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@3))); : } : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); 0.00 : 527cd2: 49 89 c6 mov %rax,%r14 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 527cd5: e9 a6 9c fe ff jmpq 511980 : * so use IDENT (meaning we reject anything that is a key word). : */ : zone_value: : Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 527cda: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 527ce1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527ce8: 8b 33 mov (%rbx),%esi 0.00 : 527cea: 48 8b 38 mov (%rax),%rdi 0.00 : 527ced: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527cf4: e8 77 8e fe ff callq 510b70 : } : | IDENT 0.00 : 527cf9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * so use IDENT (meaning we reject anything that is a key word). : */ : zone_value: : Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 527d00: 49 89 c6 mov %rax,%r14 : } : | IDENT 0.00 : 527d03: e9 78 9c fe ff jmpq 511980 : /* : * OFF is also accepted as a boolean value, but is handled by : * the NonReservedWord rule. The action for booleans and strings : * is the same, so we don't need to distinguish them here. : */ : | NonReservedWord_or_Sconst { $$ = $1; } 0.00 : 527d08: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527d0f: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 527d12: e9 69 9c fe ff jmpq 511980 : ; : : opt_boolean_or_string: : TRUE_P { $$ = "true"; } : | FALSE_P { $$ = "false"; } : | ON { $$ = "on"; } 0.00 : 527d17: 41 be e0 b7 87 00 mov $0x87b7e0,%r14d : /* 0.00 : 527d1d: e9 5e 9c fe ff jmpq 511980 : | SERIALIZABLE { $$ = "serializable"; } : ; : : opt_boolean_or_string: : TRUE_P { $$ = "true"; } : | FALSE_P { $$ = "false"; } 0.00 : 527d22: 41 be c2 27 7b 00 mov $0x7b27c2,%r14d : | ON { $$ = "on"; } 0.00 : 527d28: e9 53 9c fe ff jmpq 511980 : | REPEATABLE READ { $$ = "repeatable read"; } : | SERIALIZABLE { $$ = "serializable"; } : ; : : opt_boolean_or_string: : TRUE_P { $$ = "true"; } 0.00 : 527d2d: 41 be 1e 93 8e 00 mov $0x8e931e,%r14d : | FALSE_P { $$ = "false"; } 0.00 : 527d33: e9 48 9c fe ff jmpq 511980 : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } : | READ COMMITTED { $$ = "read committed"; } : | REPEATABLE READ { $$ = "repeatable read"; } : | SERIALIZABLE { $$ = "serializable"; } 0.00 : 527d38: 41 be 65 95 7c 00 mov $0x7c9565,%r14d : ; 0.00 : 527d3e: e9 3d 9c fe ff jmpq 511980 : { : $$ = makeStringConst($1, @1); : } : | IDENT : { : $$ = makeStringConst($1, @1); 0.00 : 527d43: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 527d4a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527d51: 8b 32 mov (%rdx),%esi 0.00 : 527d53: 48 8b 39 mov (%rcx),%rdi 0.00 : 527d56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527d5d: e8 0e 8e fe ff callq 510b70 : } : | ConstInterval Sconst opt_interval 0.00 : 527d62: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeStringConst($1, @1); : } : | IDENT : { : $$ = makeStringConst($1, @1); 0.00 : 527d69: 49 89 c6 mov %rax,%r14 : } : | ConstInterval Sconst opt_interval 0.00 : 527d6c: e9 0f 9c fe ff jmpq 511980 : { $$ = makeAConst($1, @1); } : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } : | READ COMMITTED { $$ = "read committed"; } : | REPEATABLE READ { $$ = "repeatable read"; } 0.00 : 527d71: 41 be 55 95 7c 00 mov $0x7c9555,%r14d : | SERIALIZABLE { $$ = "serializable"; } 0.00 : 527d77: e9 04 9c fe ff jmpq 511980 : | NumericOnly : { $$ = makeAConst($1, @1); } : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } : | READ COMMITTED { $$ = "read committed"; } 0.00 : 527d7c: 41 be 46 95 7c 00 mov $0x7c9546,%r14d : | REPEATABLE READ { $$ = "repeatable read"; } 0.00 : 527d82: e9 f9 9b fe ff jmpq 511980 : { $$ = makeStringConst($1, @1); } : | NumericOnly : { $$ = makeAConst($1, @1); } : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } 0.00 : 527d87: 41 be 35 95 7c 00 mov $0x7c9535,%r14d : | READ COMMITTED { $$ = "read committed"; } 0.00 : 527d8d: e9 ee 9b fe ff jmpq 511980 : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } : | NumericOnly : { $$ = makeAConst($1, @1); } 0.00 : 527d92: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 527d99: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527da0: 8b 30 mov (%rax),%esi 0.00 : 527da2: 48 8b 3a mov (%rdx),%rdi 0.00 : 527da5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527dac: e8 af 8e fe ff callq 510c60 : ; 0.00 : 527db1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } : | NumericOnly : { $$ = makeAConst($1, @1); } 0.00 : 527db8: 49 89 c6 mov %rax,%r14 : ; 0.00 : 527dbb: e9 c0 9b fe ff jmpq 511980 : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } 0.00 : 527dc0: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527dc7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527dce: 8b 31 mov (%rcx),%esi 0.00 : 527dd0: 48 8b 3b mov (%rbx),%rdi 0.00 : 527dd3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527dda: e8 91 8d fe ff callq 510b70 : | NumericOnly 0.00 : 527ddf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } 0.00 : 527de6: 49 89 c6 mov %rax,%r14 : | NumericOnly 0.00 : 527de9: e9 92 9b fe ff jmpq 511980 : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527dee: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527df5: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 527df9: 48 8b 32 mov (%rdx),%rsi 0.00 : 527dfc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e03: e8 78 a0 0b 00 callq 5e1e80 : ; 0.00 : 527e08: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527e0f: 49 89 c6 mov %rax,%r14 : ; 0.00 : 527e12: e9 69 9b fe ff jmpq 511980 : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } 0.00 : 527e17: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527e1e: 31 f6 xor %esi,%esi 0.00 : 527e20: 48 8b 38 mov (%rax),%rdi 0.00 : 527e23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e2a: e8 21 9a 0b 00 callq 5e1850 : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527e2f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } 0.00 : 527e36: 49 89 c6 mov %rax,%r14 : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527e39: e9 42 9b fe ff jmpq 511980 : } : ; : : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } 0.00 : 527e3e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527e45: bf e4 b7 87 00 mov $0x87b7e4,%edi 0.00 : 527e4a: 31 c0 xor %eax,%eax 0.00 : 527e4c: 48 8b 73 f0 mov -0x10(%rbx),%rsi 0.00 : 527e50: 48 8b 13 mov (%rbx),%rdx 0.00 : 527e53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e5a: e8 81 66 28 00 callq 7ae4e0 : ; 0.00 : 527e5f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } 0.00 : 527e66: 49 89 c6 mov %rax,%r14 : ; 0.00 : 527e69: e9 12 9b fe ff jmpq 511980 : n->args = list_make1(makeStringConst($3, @3)); : $$ = n; : } : ; : : var_name: ColId { $$ = $1; } 0.00 : 527e6e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527e75: 4c 8b 31 mov (%rcx),%r14 : | var_name '.' ColId 0.00 : 527e78: e9 03 9b fe ff jmpq 511980 : $$ = n; : } : /* Special syntaxes invented by PostgreSQL: */ : | TRANSACTION SNAPSHOT Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527e7d: 48 8b 3d dc 29 69 00 mov 0x6929dc(%rip),%rdi # bba860 0.00 : 527e84: be 20 00 00 00 mov $0x20,%esi 0.00 : 527e89: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e90: e8 7b 0f 27 00 callq 798e10 0.00 : 527e95: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_MULTI; 0.00 : 527e9b: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = n; : } : /* Special syntaxes invented by PostgreSQL: */ : | TRANSACTION SNAPSHOT Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527ea2: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_MULTI; : n->name = "TRANSACTION SNAPSHOT"; 0.00 : 527ea5: 48 c7 40 08 20 95 7c movq $0x7c9520,0x8(%rax) 0.00 : 527eac: 00 : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527ead: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = n; 0.00 : 527eb4: 49 89 de mov %rbx,%r14 : | TRANSACTION SNAPSHOT Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_MULTI; : n->name = "TRANSACTION SNAPSHOT"; : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527eb7: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 527ebe: 48 8b 3a mov (%rdx),%rdi 0.00 : 527ec1: 8b 30 mov (%rax),%esi 0.00 : 527ec3: e8 a8 8c fe ff callq 510b70 0.00 : 527ec8: 31 f6 xor %esi,%esi 0.00 : 527eca: 48 89 c7 mov %rax,%rdi 0.00 : 527ecd: e8 7e 99 0b 00 callq 5e1850 0.00 : 527ed2: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : ; 0.00 : 527ed6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527edd: e9 9e 9a fe ff jmpq 511980 : n->name = "session_authorization"; : $$ = n; : } : | XML_P OPTION document_or_content : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527ee2: 48 8b 3d 77 29 69 00 mov 0x692977(%rip),%rdi # bba860 0.00 : 527ee9: be 20 00 00 00 mov $0x20,%esi 0.00 : 527eee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527ef5: e8 16 0f 27 00 callq 798e10 0.00 : 527efa: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 527f00: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->name = "session_authorization"; : $$ = n; : } : | XML_P OPTION document_or_content : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527f07: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "xmloption"; 0.00 : 527f0a: 48 c7 40 08 0e 95 7c movq $0x7c950e,0x8(%rax) 0.00 : 527f11: 00 : n->args = list_make1(makeStringConst($3 == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", @3)); 0.00 : 527f12: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527f19: b8 50 6e 8c 00 mov $0x8c6e50,%eax 0.00 : 527f1e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 527f25: bf 18 95 7c 00 mov $0x7c9518,%edi : $$ = n; 0.00 : 527f2a: 49 89 de mov %rbx,%r14 : | XML_P OPTION document_or_content : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "xmloption"; : n->args = list_make1(makeStringConst($3 == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", @3)); 0.00 : 527f2d: 44 8b 01 mov (%rcx),%r8d 0.00 : 527f30: 8b 32 mov (%rdx),%esi 0.00 : 527f32: 45 85 c0 test %r8d,%r8d 0.00 : 527f35: 48 0f 44 f8 cmove %rax,%rdi 0.00 : 527f39: e8 32 8c fe ff callq 510b70 0.00 : 527f3e: 31 f6 xor %esi,%esi 0.00 : 527f40: 48 89 c7 mov %rax,%rdi 0.00 : 527f43: e8 08 99 0b 00 callq 5e1850 0.00 : 527f48: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : /* Special syntaxes invented by PostgreSQL: */ 0.00 : 527f4c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527f53: e9 28 9a fe ff jmpq 511980 : n->args = list_make1(makeStringConst($3, @3)); : $$ = n; : } : | SESSION AUTHORIZATION DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527f58: 48 8b 3d 01 29 69 00 mov 0x692901(%rip),%rdi # bba860 0.00 : 527f5f: be 20 00 00 00 mov $0x20,%esi 0.00 : 527f64: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527f6b: e8 a0 0e 27 00 callq 798e10 0.00 : 527f70: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_DEFAULT; 0.00 : 527f76: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = "session_authorization"; : $$ = n; 0.00 : 527f7d: 49 89 c6 mov %rax,%r14 : } : | SESSION AUTHORIZATION DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_DEFAULT; : n->name = "session_authorization"; 0.00 : 527f80: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 527f87: 00 : $$ = n; : } : | XML_P OPTION document_or_content 0.00 : 527f88: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527f8f: e9 ec 99 fe ff jmpq 511980 : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | SESSION AUTHORIZATION NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527f94: 48 8b 3d c5 28 69 00 mov 0x6928c5(%rip),%rdi # bba860 0.00 : 527f9b: be 20 00 00 00 mov $0x20,%esi 0.00 : 527fa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527fa7: e8 64 0e 27 00 callq 798e10 0.00 : 527fac: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 527fb2: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | SESSION AUTHORIZATION NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527fb9: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "session_authorization"; 0.00 : 527fbc: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 527fc3: 00 : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527fc4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = n; 0.00 : 527fcb: 49 89 de mov %rbx,%r14 : | SESSION AUTHORIZATION NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "session_authorization"; : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527fce: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527fd5: 8b 31 mov (%rcx),%esi 0.00 : 527fd7: 48 8b 38 mov (%rax),%rdi 0.00 : 527fda: e8 91 8b fe ff callq 510b70 0.00 : 527fdf: 31 f6 xor %esi,%esi 0.00 : 527fe1: 48 89 c7 mov %rax,%rdi 0.00 : 527fe4: e8 67 98 0b 00 callq 5e1850 0.00 : 527fe9: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | SESSION AUTHORIZATION DEFAULT 0.00 : 527fed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527ff4: e9 87 99 fe ff jmpq 511980 : n->kind = VAR_SET_DEFAULT; : $$ = n; : } : | ROLE NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527ff9: 48 8b 3d 60 28 69 00 mov 0x692860(%rip),%rdi # bba860 0.00 : 528000: be 20 00 00 00 mov $0x20,%esi 0.00 : 528005: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52800c: e8 ff 0d 27 00 callq 798e10 0.00 : 528011: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 528017: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->kind = VAR_SET_DEFAULT; : $$ = n; : } : | ROLE NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52801e: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "role"; 0.00 : 528021: 48 c7 40 08 ba b3 8d movq $0x8db3ba,0x8(%rax) 0.00 : 528028: 00 : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 528029: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = n; 0.00 : 528030: 49 89 de mov %rbx,%r14 : | ROLE NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "role"; : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 528033: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52803a: 48 8b 3a mov (%rdx),%rdi 0.00 : 52803d: 8b 30 mov (%rax),%esi 0.00 : 52803f: e8 2c 8b fe ff callq 510b70 0.00 : 528044: 31 f6 xor %esi,%esi 0.00 : 528046: 48 89 c7 mov %rax,%rdi 0.00 : 528049: e8 02 98 0b 00 callq 5e1850 0.00 : 52804e: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | SESSION AUTHORIZATION NonReservedWord_or_Sconst 0.00 : 528052: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528059: e9 22 99 fe ff jmpq 511980 : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | NAMES opt_encoding : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52805e: 48 8b 3d fb 27 69 00 mov 0x6927fb(%rip),%rdi # bba860 0.00 : 528065: be 20 00 00 00 mov $0x20,%esi 0.00 : 52806a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528071: e8 9a 0d 27 00 callq 798e10 0.00 : 528076: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 52807c: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | NAMES opt_encoding : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528083: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "client_encoding"; 0.00 : 528086: 48 c7 40 08 e5 48 8e movq $0x8e48e5,0x8(%rax) 0.00 : 52808d: 00 : if ($2 != NULL) 0.00 : 52808e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528095: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52809c: 48 8b 3a mov (%rdx),%rdi 0.00 : 52809f: 48 85 ff test %rdi,%rdi 0.00 : 5280a2: 0f 84 d8 13 00 00 je 529480 : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 5280a8: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5280af: 8b 31 mov (%rcx),%esi 0.00 : 5280b1: e8 ba 8a fe ff callq 510b70 0.00 : 5280b6: 31 f6 xor %esi,%esi 0.00 : 5280b8: 48 89 c7 mov %rax,%rdi 0.00 : 5280bb: e8 90 97 0b 00 callq 5e1850 0.00 : 5280c0: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5280c4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : else : n->kind = VAR_SET_DEFAULT; : $$ = n; 0.00 : 5280cb: 49 89 de mov %rbx,%r14 : } : | ROLE NonReservedWord_or_Sconst 0.00 : 5280ce: e9 ad 98 fe ff jmpq 511980 : parser_errposition(@2))); : $$ = NULL; /*not reached*/ : } : | SCHEMA Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5280d3: 48 8b 3d 86 27 69 00 mov 0x692786(%rip),%rdi # bba860 0.00 : 5280da: be 20 00 00 00 mov $0x20,%esi 0.00 : 5280df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5280e6: e8 25 0d 27 00 callq 798e10 0.00 : 5280eb: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 5280f1: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : parser_errposition(@2))); : $$ = NULL; /*not reached*/ : } : | SCHEMA Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5280f8: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "search_path"; 0.00 : 5280fb: 48 c7 40 08 ec 94 7c movq $0x7c94ec,0x8(%rax) 0.00 : 528102: 00 : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 528103: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = n; 0.00 : 52810a: 49 89 de mov %rbx,%r14 : | SCHEMA Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "search_path"; : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 52810d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528114: 8b 31 mov (%rcx),%esi 0.00 : 528116: 48 8b 38 mov (%rax),%rdi 0.00 : 528119: e8 52 8a fe ff callq 510b70 0.00 : 52811e: 31 f6 xor %esi,%esi 0.00 : 528120: 48 89 c7 mov %rax,%rdi 0.00 : 528123: e8 28 97 0b 00 callq 5e1850 0.00 : 528128: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | NAMES opt_encoding 0.00 : 52812c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528133: e9 48 98 fe ff jmpq 511980 : n->kind = VAR_SET_DEFAULT; : $$ = n; : } : | CATALOG_P Sconst : { : ereport(ERROR, 0.00 : 528138: 45 31 c0 xor %r8d,%r8d 0.00 : 52813b: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 528140: ba 92 05 00 00 mov $0x592,%edx 0.00 : 528145: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52814a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52814f: e8 6c 29 25 00 callq 77aac0 0.00 : 528154: 84 c0 test %al,%al 0.00 : 528156: 0f 84 4b 9e fe ff je 511fa7 0.00 : 52815c: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 528163: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52816a: 8b 3a mov (%rdx),%edi 0.00 : 52816c: e8 2f 5b fe ff callq 50dca0 0.00 : 528171: bf a8 9e 7c 00 mov $0x7c9ea8,%edi 0.00 : 528176: 41 89 c4 mov %eax,%r12d 0.00 : 528179: 31 c0 xor %eax,%eax 0.00 : 52817b: e8 20 47 25 00 callq 77c8a0 0.00 : 528180: bf 40 04 00 00 mov $0x440,%edi 0.00 : 528185: 89 c3 mov %eax,%ebx 0.00 : 528187: e9 d4 c6 ff ff jmpq 524860 : $$ = n; : } : /* Special syntaxes mandated by SQL standard: */ : | TIME ZONE zone_value : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52818c: 48 8b 3d cd 26 69 00 mov 0x6926cd(%rip),%rdi # bba860 0.00 : 528193: be 20 00 00 00 mov $0x20,%esi 0.00 : 528198: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52819f: e8 6c 0c 27 00 callq 798e10 0.00 : 5281a4: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 5281aa: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = n; : } : /* Special syntaxes mandated by SQL standard: */ : | TIME ZONE zone_value : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5281b1: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "timezone"; 0.00 : 5281b4: 48 c7 40 08 60 fc 8f movq $0x8ffc60,0x8(%rax) 0.00 : 5281bb: 00 : if ($3 != NULL) 0.00 : 5281bc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5281c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5281ca: 48 8b 38 mov (%rax),%rdi 0.00 : 5281cd: 48 85 ff test %rdi,%rdi 0.00 : 5281d0: 0f 84 8e 12 00 00 je 529464 : n->args = list_make1($3); 0.00 : 5281d6: 31 f6 xor %esi,%esi 0.00 : 5281d8: e8 73 96 0b 00 callq 5e1850 0.00 : 5281dd: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5281e1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : else : n->kind = VAR_SET_DEFAULT; : $$ = n; 0.00 : 5281e8: 49 89 de mov %rbx,%r14 : } : | CATALOG_P Sconst 0.00 : 5281eb: e9 90 97 fe ff jmpq 511980 : : set_rest_more: /* Generic SET syntaxes: */ : generic_set {$$ = $1;} : | var_name FROM CURRENT_P : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5281f0: 48 8b 3d 69 26 69 00 mov 0x692669(%rip),%rdi # bba860 0.00 : 5281f7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5281fc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528203: e8 08 0c 27 00 callq 798e10 0.00 : 528208: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_CURRENT; 0.00 : 52820e: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 528215: 49 89 c6 mov %rax,%r14 : generic_set {$$ = $1;} : | var_name FROM CURRENT_P : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_CURRENT; : n->name = $1; 0.00 : 528218: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52821f: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 528223: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : /* Special syntaxes mandated by SQL standard: */ 0.00 : 528227: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52822e: e9 4d 97 fe ff jmpq 511980 : n->name = $1; : $$ = n; : } : : set_rest_more: /* Generic SET syntaxes: */ : generic_set {$$ = $1;} 0.00 : 528233: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52823a: 4c 8b 33 mov (%rbx),%r14 : | var_name FROM CURRENT_P 0.00 : 52823d: e9 3e 97 fe ff jmpq 511980 : n->name = $1; : $$ = n; : } : | var_name '=' DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528242: 48 8b 3d 17 26 69 00 mov 0x692617(%rip),%rdi # bba860 0.00 : 528249: be 20 00 00 00 mov $0x20,%esi 0.00 : 52824e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528255: e8 b6 0b 27 00 callq 798e10 0.00 : 52825a: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_DEFAULT; 0.00 : 528260: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 528267: 49 89 c6 mov %rax,%r14 : } : | var_name '=' DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_DEFAULT; : n->name = $1; 0.00 : 52826a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528271: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 528275: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : 0.00 : 528279: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528280: e9 fb 96 fe ff jmpq 511980 : n->args = $3; : $$ = n; : } : | var_name TO DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528285: 48 8b 3d d4 25 69 00 mov 0x6925d4(%rip),%rdi # bba860 0.00 : 52828c: be 20 00 00 00 mov $0x20,%esi 0.00 : 528291: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528298: e8 73 0b 27 00 callq 798e10 0.00 : 52829d: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_DEFAULT; 0.00 : 5282a3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 5282aa: 49 89 c6 mov %rax,%r14 : } : | var_name TO DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_DEFAULT; : n->name = $1; 0.00 : 5282ad: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5282b4: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 5282b8: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | var_name '=' DEFAULT 0.00 : 5282bc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5282c3: e9 b8 96 fe ff jmpq 511980 : n->args = $3; : $$ = n; : } : | var_name '=' var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5282c8: 48 8b 3d 91 25 69 00 mov 0x692591(%rip),%rdi # bba860 0.00 : 5282cf: be 20 00 00 00 mov $0x20,%esi 0.00 : 5282d4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5282db: e8 30 0b 27 00 callq 798e10 0.00 : 5282e0: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 5282e6: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->name = $1; : n->args = $3; : $$ = n; 0.00 : 5282ed: 49 89 c6 mov %rax,%r14 : } : | var_name '=' var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = $1; 0.00 : 5282f0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5282f7: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5282fb: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = $3; 0.00 : 5282ff: 48 8b 13 mov (%rbx),%rdx 0.00 : 528302: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | var_name TO DEFAULT 0.00 : 528306: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52830d: e9 6e 96 fe ff jmpq 511980 : ; : : generic_set: : var_name TO var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528312: 48 8b 3d 47 25 69 00 mov 0x692547(%rip),%rdi # bba860 0.00 : 528319: be 20 00 00 00 mov $0x20,%esi 0.00 : 52831e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528325: e8 e6 0a 27 00 callq 798e10 0.00 : 52832a: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 528330: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->name = $1; : n->args = $3; : $$ = n; 0.00 : 528337: 49 89 c6 mov %rax,%r14 : generic_set: : var_name TO var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = $1; 0.00 : 52833a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528341: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 528345: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = $3; 0.00 : 528349: 48 8b 11 mov (%rcx),%rdx 0.00 : 52834c: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | var_name '=' var_list 0.00 : 528350: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528357: e9 24 96 fe ff jmpq 511980 : n->args = $2; : $$ = n; : } : | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52835c: 48 8b 3d fd 24 69 00 mov 0x6924fd(%rip),%rdi # bba860 0.00 : 528363: be 20 00 00 00 mov $0x20,%esi 0.00 : 528368: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52836f: e8 9c 0a 27 00 callq 798e10 0.00 : 528374: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_MULTI; 0.00 : 52837a: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->name = "SESSION CHARACTERISTICS"; : n->args = $5; : $$ = n; 0.00 : 528381: 49 89 c6 mov %rax,%r14 : } : | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_MULTI; : n->name = "SESSION CHARACTERISTICS"; 0.00 : 528384: 48 c7 40 08 d4 94 7c movq $0x7c94d4,0x8(%rax) 0.00 : 52838b: 00 : n->args = $5; 0.00 : 52838c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528393: 48 8b 16 mov (%rsi),%rdx 0.00 : 528396: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | set_rest_more 0.00 : 52839a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5283a1: e9 da 95 fe ff jmpq 511980 : ; : : set_rest: : TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5283a6: 48 8b 3d b3 24 69 00 mov 0x6924b3(%rip),%rdi # bba860 0.00 : 5283ad: be 20 00 00 00 mov $0x20,%esi 0.00 : 5283b2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5283b9: e8 52 0a 27 00 callq 798e10 0.00 : 5283be: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_MULTI; 0.00 : 5283c4: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->name = "TRANSACTION"; : n->args = $2; : $$ = n; 0.00 : 5283cb: 49 89 c6 mov %rax,%r14 : set_rest: : TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_MULTI; : n->name = "TRANSACTION"; 0.00 : 5283ce: 48 c7 40 08 b8 05 8b movq $0x8b05b8,0x8(%rax) 0.00 : 5283d5: 00 : n->args = $2; 0.00 : 5283d6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5283dd: 48 8b 13 mov (%rbx),%rdx 0.00 : 5283e0: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list 0.00 : 5283e4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5283eb: e9 90 95 fe ff jmpq 511980 : n->is_local = true; : $$ = (Node *) n; : } : | SET SESSION set_rest : { : VariableSetStmt *n = $3; 0.00 : 5283f0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5283f7: 48 8b 01 mov (%rcx),%rax : n->is_local = false; 0.00 : 5283fa: c6 40 18 00 movb $0x0,0x18(%rax) : $$ = (Node *) n; 0.00 : 5283fe: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 528401: e9 7a 95 fe ff jmpq 511980 : n->is_local = false; : $$ = (Node *) n; : } : | SET LOCAL set_rest : { : VariableSetStmt *n = $3; 0.00 : 528406: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52840d: 48 8b 02 mov (%rdx),%rax : n->is_local = true; 0.00 : 528410: c6 40 18 01 movb $0x1,0x18(%rax) : $$ = (Node *) n; 0.00 : 528414: 49 89 c6 mov %rax,%r14 : } : | SET SESSION set_rest 0.00 : 528417: e9 64 95 fe ff jmpq 511980 : *****************************************************************************/ : : VariableSetStmt: : SET set_rest : { : VariableSetStmt *n = $2; 0.00 : 52841c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528423: 48 8b 06 mov (%rsi),%rax : n->is_local = false; 0.00 : 528426: c6 40 18 00 movb $0x0,0x18(%rax) : $$ = (Node *) n; 0.00 : 52842a: 49 89 c6 mov %rax,%r14 : } : | SET LOCAL set_rest 0.00 : 52842d: e9 4e 95 fe ff jmpq 511980 : if (@$ < 0) /* see comments for YYLLOC_DEFAULT */ : @$ = @2; : $$ = lappend($1, $2); : } : | /* EMPTY */ : { $$ = NIL; } 0.00 : 528432: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528435: e9 46 95 fe ff jmpq 511980 : ; : : OptSchemaEltList: : OptSchemaEltList schema_stmt : { : if (@$ < 0) /* see comments for YYLLOC_DEFAULT */ 0.00 : 52843a: 44 8b 8d a8 f4 ff ff mov -0xb58(%rbp),%r9d 0.00 : 528441: 45 85 c9 test %r9d,%r9d 0.00 : 528444: 79 0f jns 528455 : @$ = @2; 0.00 : 528446: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52844d: 8b 09 mov (%rcx),%ecx 0.00 : 52844f: 89 8d a8 f4 ff ff mov %ecx,-0xb58(%rbp) : $$ = lappend($1, $2); 0.00 : 528455: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52845c: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 528460: 48 8b 33 mov (%rbx),%rsi 0.00 : 528463: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52846a: e8 11 9a 0b 00 callq 5e1e80 : } : | /* EMPTY */ 0.00 : 52846f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : OptSchemaEltList: : OptSchemaEltList schema_stmt : { : if (@$ < 0) /* see comments for YYLLOC_DEFAULT */ : @$ = @2; : $$ = lappend($1, $2); 0.00 : 528476: 49 89 c6 mov %rax,%r14 : } : | /* EMPTY */ 0.00 : 528479: e9 02 95 fe ff jmpq 511980 : } : ; : : OptSchemaName: : ColId { $$ = $1; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 52847e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528481: e9 fa 94 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : OptSchemaName: : ColId { $$ = $1; } 0.00 : 528486: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52848d: 4c 8b 32 mov (%rdx),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 528490: e9 eb 94 fe ff jmpq 511980 : n->if_not_exists = true; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 528495: 48 8b 3d c4 23 69 00 mov 0x6923c4(%rip),%rdi # bba860 0.00 : 52849c: be 28 00 00 00 mov $0x28,%esi 0.00 : 5284a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5284a8: e8 63 09 27 00 callq 798e10 0.00 : 5284ad: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* ...but not both */ : n->schemaname = $6; 0.00 : 5284b3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->if_not_exists = true; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5284ba: 48 89 c2 mov %rax,%rdx : /* ...but not both */ : n->schemaname = $6; 0.00 : 5284bd: 48 8b 46 f8 mov -0x8(%rsi),%rax : n->authid = NULL; 0.00 : 5284c1: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : 5284c8: 00 : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $6; 0.00 : 5284c9: 48 89 42 08 mov %rax,0x8(%rdx) : n->authid = NULL; : if ($7 != NIL) 0.00 : 5284cd: 48 83 3e 00 cmpq $0x0,(%rsi) 0.00 : 5284d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5284d8: 0f 85 0b 17 00 00 jne 529be9 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), : parser_errposition(@7))); : n->schemaElts = $7; 0.00 : 5284de: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 5284e5: 00 : n->if_not_exists = true; 0.00 : 5284e6: c6 42 20 01 movb $0x1,0x20(%rdx) : $$ = (Node *)n; 0.00 : 5284ea: 49 89 d6 mov %rdx,%r14 : } : ; 0.00 : 5284ed: e9 8e 94 fe ff jmpq 511980 : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5284f2: 48 8b 3d 67 23 69 00 mov 0x692367(%rip),%rdi # bba860 0.00 : 5284f9: be 28 00 00 00 mov $0x28,%esi 0.00 : 5284fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528505: e8 06 09 27 00 callq 798e10 0.00 : 52850a: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* One can omit the schema name or the authorization id. */ : if ($6 != NULL) 0.00 : 528510: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 528517: 48 89 c2 mov %rax,%rdx : /* One can omit the schema name or the authorization id. */ : if ($6 != NULL) 0.00 : 52851a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528521: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 528525: 48 85 c0 test %rax,%rax 0.00 : 528528: 0f 84 6e 0f 00 00 je 52949c : n->schemaname = $6; : else : n->schemaname = $8; 0.00 : 52852e: 48 89 42 08 mov %rax,0x8(%rdx) : n->authid = $8; 0.00 : 528532: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528539: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 52853d: 48 89 42 10 mov %rax,0x10(%rdx) : if ($9 != NIL) 0.00 : 528541: 48 83 39 00 cmpq $0x0,(%rcx) 0.00 : 528545: 0f 85 2a 15 00 00 jne 529a75 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), : parser_errposition(@9))); : n->schemaElts = $9; 0.00 : 52854b: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 528552: 00 : n->if_not_exists = true; 0.00 : 528553: c6 42 20 01 movb $0x1,0x20(%rdx) : $$ = (Node *)n; 0.00 : 528557: 49 89 d6 mov %rdx,%r14 : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList 0.00 : 52855a: e9 21 94 fe ff jmpq 511980 : (Node *)$6)); : $$ = (Node *)n; : } : ; : : add_drop: ADD_P { $$ = +1; } 0.00 : 52855f: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 528566: ff ff ff 0.00 : 528569: 49 21 d6 and %rdx,%r14 0.00 : 52856c: 49 83 ce 01 or $0x1,%r14 : | DROP { $$ = -1; } 0.00 : 528570: e9 0b 94 fe ff jmpq 511980 : *****************************************************************************/ : : AlterGroupStmt: : ALTER GROUP_P RoleId add_drop USER role_list : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 528575: 48 8b 3d e4 22 69 00 mov 0x6922e4(%rip),%rdi # bba860 0.00 : 52857c: be 20 00 00 00 mov $0x20,%esi 0.00 : 528581: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528588: e8 83 08 27 00 callq 798e10 0.00 : 52858d: c7 00 ec 02 00 00 movl $0x2ec,(%rax) : n->role = $3; 0.00 : 528593: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : *****************************************************************************/ : : AlterGroupStmt: : ALTER GROUP_P RoleId add_drop USER role_list : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 52859a: 48 89 c3 mov %rax,%rbx : n->role = $3; : n->action = $4; : n->options = list_make1(makeDefElem("rolemembers", 0.00 : 52859d: bf 1f 94 7c 00 mov $0x7c941f,%edi : (Node *)$6)); : $$ = (Node *)n; 0.00 : 5285a2: 49 89 de mov %rbx,%r14 : : AlterGroupStmt: : ALTER GROUP_P RoleId add_drop USER role_list : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5285a5: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5285a9: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5285ad: 8b 46 f0 mov -0x10(%rsi),%eax 0.00 : 5285b0: 89 43 18 mov %eax,0x18(%rbx) : n->options = list_make1(makeDefElem("rolemembers", 0.00 : 5285b3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5285ba: 48 8b 30 mov (%rax),%rsi 0.00 : 5285bd: e8 3e 8f 0c 00 callq 5f1500 0.00 : 5285c2: 31 f6 xor %esi,%esi 0.00 : 5285c4: 48 89 c7 mov %rax,%rdi 0.00 : 5285c7: e8 84 92 0b 00 callq 5e1850 0.00 : 5285cc: 48 89 43 10 mov %rax,0x10(%rbx) : (Node *)$6)); : $$ = (Node *)n; : } : ; 0.00 : 5285d0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5285d7: e9 a4 93 fe ff jmpq 511980 : *****************************************************************************/ : : CreateSchemaStmt: : CREATE SCHEMA OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5285dc: 48 8b 3d 7d 22 69 00 mov 0x69227d(%rip),%rdi # bba860 0.00 : 5285e3: be 28 00 00 00 mov $0x28,%esi 0.00 : 5285e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5285ef: e8 1c 08 27 00 callq 798e10 0.00 : 5285f4: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) 0.00 : 5285fa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : *****************************************************************************/ : : CreateSchemaStmt: : CREATE SCHEMA OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 528601: 48 89 c2 mov %rax,%rdx : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) 0.00 : 528604: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52860b: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 52860f: 48 85 c0 test %rax,%rax 0.00 : 528612: 0f 84 58 0e 00 00 je 529470 : n->schemaname = $3; : else : n->schemaname = $5; 0.00 : 528618: 48 89 42 08 mov %rax,0x8(%rdx) : n->authid = $5; 0.00 : 52861c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->schemaElts = $6; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 528623: 49 89 d6 mov %rdx,%r14 : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) : n->schemaname = $3; : else : n->schemaname = $5; : n->authid = $5; 0.00 : 528626: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 52862a: 48 89 42 10 mov %rax,0x10(%rdx) : n->schemaElts = $6; 0.00 : 52862e: 48 8b 06 mov (%rsi),%rax : n->if_not_exists = false; 0.00 : 528631: c6 42 20 00 movb $0x0,0x20(%rdx) : if ($3 != NULL) : n->schemaname = $3; : else : n->schemaname = $5; : n->authid = $5; : n->schemaElts = $6; 0.00 : 528635: 48 89 42 18 mov %rax,0x18(%rdx) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA ColId OptSchemaEltList 0.00 : 528639: e9 42 93 fe ff jmpq 511980 : n->roles = $3; : $$ = (Node *)n; : } : | DROP GROUP_P IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 52863e: 48 8b 3d 1b 22 69 00 mov 0x69221b(%rip),%rdi # bba860 0.00 : 528645: be 18 00 00 00 mov $0x18,%esi 0.00 : 52864a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528651: e8 ba 07 27 00 callq 798e10 0.00 : 528656: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = TRUE; 0.00 : 52865c: c6 40 10 01 movb $0x1,0x10(%rax) : n->roles = $5; : $$ = (Node *)n; 0.00 : 528660: 49 89 c6 mov %rax,%r14 : } : | DROP GROUP_P IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = TRUE; : n->roles = $5; 0.00 : 528663: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52866a: 48 8b 16 mov (%rsi),%rdx 0.00 : 52866d: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528671: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528678: e9 03 93 fe ff jmpq 511980 : *****************************************************************************/ : : DropGroupStmt: : DROP GROUP_P role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 52867d: 48 8b 3d dc 21 69 00 mov 0x6921dc(%rip),%rdi # bba860 0.00 : 528684: be 18 00 00 00 mov $0x18,%esi 0.00 : 528689: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528690: e8 7b 07 27 00 callq 798e10 0.00 : 528695: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = FALSE; 0.00 : 52869b: c6 40 10 00 movb $0x0,0x10(%rax) : n->roles = $3; : $$ = (Node *)n; 0.00 : 52869f: 49 89 c6 mov %rax,%r14 : DropGroupStmt: : DROP GROUP_P role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = FALSE; : n->roles = $3; 0.00 : 5286a2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5286a9: 48 8b 13 mov (%rbx),%rdx 0.00 : 5286ac: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | DROP GROUP_P IF_P EXISTS role_list 0.00 : 5286b0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5286b7: e9 c4 92 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : add_drop: ADD_P { $$ = +1; } : | DROP { $$ = -1; } 0.00 : 5286bc: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 5286c1: 49 09 ce or %rcx,%r14 : ; 0.00 : 5286c4: e9 b7 92 fe ff jmpq 511980 : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5286c9: 48 8b 3d 90 21 69 00 mov 0x692190(%rip),%rdi # bba860 0.00 : 5286d0: be 28 00 00 00 mov $0x28,%esi 0.00 : 5286d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5286dc: e8 2f 07 27 00 callq 798e10 0.00 : 5286e1: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* ...but not both */ : n->schemaname = $3; 0.00 : 5286e7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->authid = NULL; : n->schemaElts = $4; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 5286ee: 49 89 c6 mov %rax,%r14 : } : | CREATE SCHEMA ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $3; 0.00 : 5286f1: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->authid = NULL; 0.00 : 5286f5: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5286fc: 00 : } : | CREATE SCHEMA ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $3; 0.00 : 5286fd: 48 89 50 08 mov %rdx,0x8(%rax) : n->authid = NULL; : n->schemaElts = $4; 0.00 : 528701: 48 8b 11 mov (%rcx),%rdx : n->if_not_exists = false; 0.00 : 528704: c6 40 20 00 movb $0x0,0x20(%rax) : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $3; : n->authid = NULL; : n->schemaElts = $4; 0.00 : 528708: 48 89 50 18 mov %rdx,0x18(%rax) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS OptSchemaName AUTHORIZATION RoleId OptSchemaEltList 0.00 : 52870c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528713: e9 68 92 fe ff jmpq 511980 : *****************************************************************************/ : : DropUserStmt: : DROP USER role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 528718: 48 8b 3d 41 21 69 00 mov 0x692141(%rip),%rdi # bba860 0.00 : 52871f: be 18 00 00 00 mov $0x18,%esi 0.00 : 528724: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52872b: e8 e0 06 27 00 callq 798e10 0.00 : 528730: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = FALSE; 0.00 : 528736: c6 40 10 00 movb $0x0,0x10(%rax) : n->roles = $3; : $$ = (Node *)n; 0.00 : 52873a: 49 89 c6 mov %rax,%r14 : DropUserStmt: : DROP USER role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = FALSE; : n->roles = $3; 0.00 : 52873d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528744: 48 8b 16 mov (%rsi),%rdx 0.00 : 528747: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list 0.00 : 52874b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528752: e9 29 92 fe ff jmpq 511980 : n->roles = $3; : $$ = (Node *)n; : } : | DROP ROLE IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 528757: 48 8b 3d 02 21 69 00 mov 0x692102(%rip),%rdi # bba860 0.00 : 52875e: be 18 00 00 00 mov $0x18,%esi 0.00 : 528763: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52876a: e8 a1 06 27 00 callq 798e10 0.00 : 52876f: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = TRUE; 0.00 : 528775: c6 40 10 01 movb $0x1,0x10(%rax) : n->roles = $5; : $$ = (Node *)n; 0.00 : 528779: 49 89 c6 mov %rax,%r14 : } : | DROP ROLE IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = TRUE; : n->roles = $5; 0.00 : 52877c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528783: 48 8b 13 mov (%rbx),%rdx 0.00 : 528786: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 52878a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528791: e9 ea 91 fe ff jmpq 511980 : *****************************************************************************/ : : DropRoleStmt: : DROP ROLE role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 528796: 48 8b 3d c3 20 69 00 mov 0x6920c3(%rip),%rdi # bba860 0.00 : 52879d: be 18 00 00 00 mov $0x18,%esi 0.00 : 5287a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5287a9: e8 62 06 27 00 callq 798e10 0.00 : 5287ae: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = FALSE; 0.00 : 5287b4: c6 40 10 00 movb $0x0,0x10(%rax) : n->roles = $3; : $$ = (Node *)n; 0.00 : 5287b8: 49 89 c6 mov %rax,%r14 : DropRoleStmt: : DROP ROLE role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = FALSE; : n->roles = $3; 0.00 : 5287bb: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5287c2: 48 8b 11 mov (%rcx),%rdx 0.00 : 5287c5: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | DROP ROLE IF_P EXISTS role_list 0.00 : 5287c9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5287d0: e9 ab 91 fe ff jmpq 511980 : : : AlterUserSetStmt: : ALTER USER RoleId SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); 0.00 : 5287d5: 48 8b 3d 84 20 69 00 mov 0x692084(%rip),%rdi # bba860 0.00 : 5287dc: be 20 00 00 00 mov $0x20,%esi 0.00 : 5287e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5287e8: e8 23 06 27 00 callq 798e10 0.00 : 5287ed: c7 00 f5 02 00 00 movl $0x2f5,(%rax) : n->role = $3; 0.00 : 5287f3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->database = NULL; : n->setstmt = $4; : $$ = (Node *)n; 0.00 : 5287fa: 49 89 c6 mov %rax,%r14 : : AlterUserSetStmt: : ALTER USER RoleId SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = $3; 0.00 : 5287fd: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->database = NULL; 0.00 : 528801: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 528808: 00 : : AlterUserSetStmt: : ALTER USER RoleId SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = $3; 0.00 : 528809: 48 89 50 08 mov %rdx,0x8(%rax) : n->database = NULL; : n->setstmt = $4; 0.00 : 52880d: 48 8b 16 mov (%rsi),%rdx 0.00 : 528810: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528814: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52881b: e9 60 91 fe ff jmpq 511980 : *****************************************************************************/ : : CreateGroupStmt: : CREATE GROUP_P RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); 0.00 : 528820: 48 8b 3d 39 20 69 00 mov 0x692039(%rip),%rdi # bba860 0.00 : 528827: be 18 00 00 00 mov $0x18,%esi 0.00 : 52882c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528833: e8 d8 05 27 00 callq 798e10 0.00 : 528838: c7 00 eb 02 00 00 movl $0x2eb,(%rax) : n->stmt_type = ROLESTMT_GROUP; 0.00 : 52883e: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->role = $3; : n->options = $5; : $$ = (Node *)n; 0.00 : 528845: 49 89 c6 mov %rax,%r14 : CreateGroupStmt: : CREATE GROUP_P RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); : n->stmt_type = ROLESTMT_GROUP; : n->role = $3; 0.00 : 528848: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52884f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 528853: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 528857: 48 8b 13 mov (%rbx),%rdx 0.00 : 52885a: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 52885e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528865: e9 16 91 fe ff jmpq 511980 : n->roles = $3; : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 52886a: 48 8b 3d ef 1f 69 00 mov 0x691fef(%rip),%rdi # bba860 0.00 : 528871: be 18 00 00 00 mov $0x18,%esi 0.00 : 528876: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52887d: e8 8e 05 27 00 callq 798e10 0.00 : 528882: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->roles = $5; 0.00 : 528888: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 52888f: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->roles = $5; 0.00 : 528892: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = TRUE; 0.00 : 528895: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->roles = $5; 0.00 : 528899: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : ; 0.00 : 52889d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5288a4: e9 d7 90 fe ff jmpq 511980 : *****************************************************************************/ : : AlterUserStmt: : ALTER USER RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 5288a9: 48 8b 3d b0 1f 69 00 mov 0x691fb0(%rip),%rdi # bba860 0.00 : 5288b0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5288b5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5288bc: e8 4f 05 27 00 callq 798e10 0.00 : 5288c1: c7 00 ec 02 00 00 movl $0x2ec,(%rax) : n->role = $3; 0.00 : 5288c7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = +1; /* add, if there are members */ : n->options = $5; : $$ = (Node *)n; 0.00 : 5288ce: 49 89 c6 mov %rax,%r14 : : AlterUserStmt: : ALTER USER RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5288d1: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->action = +1; /* add, if there are members */ 0.00 : 5288d5: c7 40 18 01 00 00 00 movl $0x1,0x18(%rax) : : AlterUserStmt: : ALTER USER RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5288dc: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = +1; /* add, if there are members */ : n->options = $5; 0.00 : 5288e0: 48 8b 13 mov (%rbx),%rdx 0.00 : 5288e3: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5288e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5288ee: e9 8d 90 fe ff jmpq 511980 : n->setstmt = $5; : $$ = (Node *)n; : } : | ALTER ROLE ALL opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); 0.00 : 5288f3: 48 8b 3d 66 1f 69 00 mov 0x691f66(%rip),%rdi # bba860 0.00 : 5288fa: be 20 00 00 00 mov $0x20,%esi 0.00 : 5288ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528906: e8 05 05 27 00 callq 798e10 0.00 : 52890b: c7 00 f5 02 00 00 movl $0x2f5,(%rax) : n->role = NULL; 0.00 : 528911: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 528918: 00 : n->database = $4; : n->setstmt = $5; : $$ = (Node *)n; 0.00 : 528919: 49 89 c6 mov %rax,%r14 : } : | ALTER ROLE ALL opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = NULL; : n->database = $4; 0.00 : 52891c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528923: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 528927: 48 89 50 10 mov %rdx,0x10(%rax) : n->setstmt = $5; 0.00 : 52892b: 48 8b 11 mov (%rcx),%rdx 0.00 : 52892e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528932: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528939: e9 42 90 fe ff jmpq 511980 : ; : : AlterRoleSetStmt: : ALTER ROLE RoleId opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); 0.00 : 52893e: 48 8b 3d 1b 1f 69 00 mov 0x691f1b(%rip),%rdi # bba860 0.00 : 528945: be 20 00 00 00 mov $0x20,%esi 0.00 : 52894a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528951: e8 ba 04 27 00 callq 798e10 0.00 : 528956: c7 00 f5 02 00 00 movl $0x2f5,(%rax) : n->role = $3; 0.00 : 52895c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->database = $4; : n->setstmt = $5; : $$ = (Node *)n; 0.00 : 528963: 49 89 c6 mov %rax,%r14 : : AlterRoleSetStmt: : ALTER ROLE RoleId opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = $3; 0.00 : 528966: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 52896a: 48 89 50 08 mov %rdx,0x8(%rax) : n->database = $4; 0.00 : 52896e: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 528972: 48 89 50 10 mov %rdx,0x10(%rax) : n->setstmt = $5; 0.00 : 528976: 48 8b 16 mov (%rsi),%rdx 0.00 : 528979: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER ROLE ALL opt_in_database SetResetClause 0.00 : 52897d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528984: e9 f7 8f fe ff jmpq 511980 : } : ; : : opt_in_database: : /* EMPTY */ { $$ = NULL; } : | IN_P DATABASE database_name { $$ = $3; } 0.00 : 528989: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528990: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 528993: e9 e8 8f fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_in_database: : /* EMPTY */ { $$ = NULL; } 0.00 : 528998: 45 31 f6 xor %r14d,%r14d : | IN_P DATABASE database_name { $$ = $3; } 0.00 : 52899b: e9 e0 8f fe ff jmpq 511980 : *****************************************************************************/ : : AlterRoleStmt: : ALTER ROLE RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 5289a0: 48 8b 3d b9 1e 69 00 mov 0x691eb9(%rip),%rdi # bba860 0.00 : 5289a7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5289ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5289b3: e8 58 04 27 00 callq 798e10 0.00 : 5289b8: c7 00 ec 02 00 00 movl $0x2ec,(%rax) : n->role = $3; 0.00 : 5289be: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = +1; /* add, if there are members */ : n->options = $5; : $$ = (Node *)n; 0.00 : 5289c5: 49 89 c6 mov %rax,%r14 : : AlterRoleStmt: : ALTER ROLE RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5289c8: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->action = +1; /* add, if there are members */ 0.00 : 5289cc: c7 40 18 01 00 00 00 movl $0x1,0x18(%rax) : : AlterRoleStmt: : ALTER ROLE RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5289d3: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = +1; /* add, if there are members */ : n->options = $5; 0.00 : 5289d7: 48 8b 11 mov (%rcx),%rdx 0.00 : 5289da: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5289de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5289e5: e9 96 8f fe ff jmpq 511980 : *****************************************************************************/ : : CreateUserStmt: : CREATE USER RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); 0.00 : 5289ea: 48 8b 3d 6f 1e 69 00 mov 0x691e6f(%rip),%rdi # bba860 0.00 : 5289f1: be 18 00 00 00 mov $0x18,%esi 0.00 : 5289f6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5289fd: e8 0e 04 27 00 callq 798e10 0.00 : 528a02: c7 00 eb 02 00 00 movl $0x2eb,(%rax) : n->stmt_type = ROLESTMT_USER; 0.00 : 528a08: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->role = $3; : n->options = $5; : $$ = (Node *)n; 0.00 : 528a0f: 49 89 c6 mov %rax,%r14 : CreateUserStmt: : CREATE USER RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); : n->stmt_type = ROLESTMT_USER; : n->role = $3; 0.00 : 528a12: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528a19: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 528a1d: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 528a21: 48 8b 16 mov (%rsi),%rdx 0.00 : 528a24: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528a28: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528a2f: e9 4c 8f fe ff jmpq 511980 : { : $$ = makeDefElem("addroleto", (Node *)$3); : } : | IN_P GROUP_P role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a34: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528a3b: bf ca 94 7c 00 mov $0x7c94ca,%edi 0.00 : 528a40: 48 8b 33 mov (%rbx),%rsi 0.00 : 528a43: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528a4a: e8 b1 8a 0c 00 callq 5f1500 : } : ; 0.00 : 528a4f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("addroleto", (Node *)$3); : } : | IN_P GROUP_P role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a56: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 528a59: e9 22 8f fe ff jmpq 511980 : { : $$ = makeDefElem("rolemembers", (Node *)$2); : } : | IN_P ROLE role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a5e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528a65: bf ca 94 7c 00 mov $0x7c94ca,%edi 0.00 : 528a6a: 48 8b 31 mov (%rcx),%rsi 0.00 : 528a6d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528a74: e8 87 8a 0c 00 callq 5f1500 : } : | IN_P GROUP_P role_list 0.00 : 528a79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("rolemembers", (Node *)$2); : } : | IN_P ROLE role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a80: 49 89 c6 mov %rax,%r14 : } : | IN_P GROUP_P role_list 0.00 : 528a83: e9 f8 8e fe ff jmpq 511980 : { : $$ = makeDefElem("adminmembers", (Node *)$2); : } : | ROLE role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528a88: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528a8f: bf 1f 94 7c 00 mov $0x7c941f,%edi 0.00 : 528a94: 48 8b 32 mov (%rdx),%rsi 0.00 : 528a97: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528a9e: e8 5d 8a 0c 00 callq 5f1500 : } : | IN_P ROLE role_list 0.00 : 528aa3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("adminmembers", (Node *)$2); : } : | ROLE role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528aaa: 49 89 c6 mov %rax,%r14 : } : | IN_P ROLE role_list 0.00 : 528aad: e9 ce 8e fe ff jmpq 511980 : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); : } : | ADMIN role_list : { : $$ = makeDefElem("adminmembers", (Node *)$2); 0.00 : 528ab2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528ab9: bf bd 94 7c 00 mov $0x7c94bd,%edi 0.00 : 528abe: 48 8b 30 mov (%rax),%rsi 0.00 : 528ac1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528ac8: e8 33 8a 0c 00 callq 5f1500 : } : | ROLE role_list 0.00 : 528acd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); : } : | ADMIN role_list : { : $$ = makeDefElem("adminmembers", (Node *)$2); 0.00 : 528ad4: 49 89 c6 mov %rax,%r14 : } : | ROLE role_list 0.00 : 528ad7: e9 a4 8e fe ff jmpq 511980 : CreateOptRoleElem: : AlterOptRoleElem { $$ = $1; } : /* The following are not supported by ALTER ROLE/USER/GROUP */ : | SYSID Iconst : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); 0.00 : 528adc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528ae3: 48 63 3b movslq (%rbx),%rdi 0.00 : 528ae6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528aed: e8 5e 6c 0d 00 callq 5ff750 0.00 : 528af2: bf c4 4c 8c 00 mov $0x8c4cc4,%edi 0.00 : 528af7: 48 89 c6 mov %rax,%rsi 0.00 : 528afa: e8 01 8a 0c 00 callq 5f1500 : } : | ADMIN role_list 0.00 : 528aff: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : CreateOptRoleElem: : AlterOptRoleElem { $$ = $1; } : /* The following are not supported by ALTER ROLE/USER/GROUP */ : | SYSID Iconst : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); 0.00 : 528b06: 49 89 c6 mov %rax,%r14 : } : | ADMIN role_list 0.00 : 528b09: e9 72 8e fe ff jmpq 511980 : parser_errposition(@1))); : } : ; : : CreateOptRoleElem: : AlterOptRoleElem { $$ = $1; } 0.00 : 528b0e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528b15: 4c 8b 31 mov (%rcx),%r14 : /* The following are not supported by ALTER ROLE/USER/GROUP */ 0.00 : 528b18: e9 63 8e fe ff jmpq 511980 : /* : * We handle identifiers that aren't parser keywords with : * the following special-case codes, to avoid bloating the : * size of the main parser. : */ : if (strcmp($1, "superuser") == 0) 0.00 : 528b1d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528b24: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 528b29: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 528b2e: 4c 8b 03 mov (%rbx),%r8 0.00 : 528b31: 4c 89 c6 mov %r8,%rsi 0.00 : 528b34: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 528b36: 0f 85 bc 06 00 00 jne 5291f8 : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); 0.00 : 528b3c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 528b41: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528b48: e8 03 6c 0d 00 callq 5ff750 0.00 : 528b4d: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 528b52: 48 89 c6 mov %rax,%rsi 0.00 : 528b55: e8 a6 89 0c 00 callq 5f1500 0.00 : 528b5a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528b61: 49 89 c6 mov %rax,%r14 0.00 : 528b64: e9 17 8e fe ff jmpq 511980 : $$ = makeDefElem("validUntil", (Node *)makeString($3)); : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ : | USER role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528b69: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528b70: bf 1f 94 7c 00 mov $0x7c941f,%edi 0.00 : 528b75: 48 8b 31 mov (%rcx),%rsi 0.00 : 528b78: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528b7f: e8 7c 89 0c 00 callq 5f1500 : } : | IDENT 0.00 : 528b84: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("validUntil", (Node *)makeString($3)); : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ : | USER role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528b8b: 49 89 c6 mov %rax,%r14 : } : | IDENT 0.00 : 528b8e: e9 ed 8d fe ff jmpq 511980 : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); : } : | VALID UNTIL Sconst : { : $$ = makeDefElem("validUntil", (Node *)makeString($3)); 0.00 : 528b93: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528b9a: 48 8b 3a mov (%rdx),%rdi 0.00 : 528b9d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528ba4: e8 47 6b 0d 00 callq 5ff6f0 0.00 : 528ba9: bf 14 94 7c 00 mov $0x7c9414,%edi 0.00 : 528bae: 48 89 c6 mov %rax,%rsi 0.00 : 528bb1: e8 4a 89 0c 00 callq 5f1500 : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ 0.00 : 528bb6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); : } : | VALID UNTIL Sconst : { : $$ = makeDefElem("validUntil", (Node *)makeString($3)); 0.00 : 528bbd: 49 89 c6 mov %rax,%r14 : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ 0.00 : 528bc0: e9 bb 8d fe ff jmpq 511980 : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); : } : | CONNECTION LIMIT SignedIconst : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); 0.00 : 528bc5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528bcc: 48 63 38 movslq (%rax),%rdi 0.00 : 528bcf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528bd6: e8 75 6b 0d 00 callq 5ff750 0.00 : 528bdb: bf 04 94 7c 00 mov $0x7c9404,%edi 0.00 : 528be0: 48 89 c6 mov %rax,%rsi 0.00 : 528be3: e8 18 89 0c 00 callq 5f1500 : } : | VALID UNTIL Sconst 0.00 : 528be8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); : } : | CONNECTION LIMIT SignedIconst : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); 0.00 : 528bef: 49 89 c6 mov %rax,%r14 : } : | VALID UNTIL Sconst 0.00 : 528bf2: e9 89 8d fe ff jmpq 511980 : $$ = makeDefElem("unencryptedPassword", : (Node *)makeString($3)); : } : | INHERIT : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); 0.00 : 528bf7: bf 01 00 00 00 mov $0x1,%edi 0.00 : 528bfc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c03: e8 48 6b 0d 00 callq 5ff750 0.00 : 528c08: bf 1a 15 88 00 mov $0x88151a,%edi 0.00 : 528c0d: 48 89 c6 mov %rax,%rsi 0.00 : 528c10: e8 eb 88 0c 00 callq 5f1500 : } : | CONNECTION LIMIT SignedIconst 0.00 : 528c15: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("unencryptedPassword", : (Node *)makeString($3)); : } : | INHERIT : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); 0.00 : 528c1c: 49 89 c6 mov %rax,%r14 : } : | CONNECTION LIMIT SignedIconst 0.00 : 528c1f: e9 5c 8d fe ff jmpq 511980 : $$ = makeDefElem("encryptedPassword", : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("unencryptedPassword", 0.00 : 528c24: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528c2b: 48 8b 3e mov (%rsi),%rdi 0.00 : 528c2e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c35: e8 b6 6a 0d 00 callq 5ff6f0 0.00 : 528c3a: bf f0 93 7c 00 mov $0x7c93f0,%edi 0.00 : 528c3f: 48 89 c6 mov %rax,%rsi 0.00 : 528c42: e8 b9 88 0c 00 callq 5f1500 : (Node *)makeString($3)); : } : | INHERIT 0.00 : 528c47: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("encryptedPassword", : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("unencryptedPassword", 0.00 : 528c4e: 49 89 c6 mov %rax,%r14 : (Node *)makeString($3)); : } : | INHERIT 0.00 : 528c51: e9 2a 8d fe ff jmpq 511980 : { : $$ = makeDefElem("password", NULL); : } : | ENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("encryptedPassword", 0.00 : 528c56: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528c5d: 48 8b 3b mov (%rbx),%rdi 0.00 : 528c60: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c67: e8 84 6a 0d 00 callq 5ff6f0 0.00 : 528c6c: bf f2 93 7c 00 mov $0x7c93f2,%edi 0.00 : 528c71: 48 89 c6 mov %rax,%rsi 0.00 : 528c74: e8 87 88 0c 00 callq 5f1500 : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst 0.00 : 528c79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("password", NULL); : } : | ENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("encryptedPassword", 0.00 : 528c80: 49 89 c6 mov %rax,%r14 : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst 0.00 : 528c83: e9 f8 8c fe ff jmpq 511980 : $$ = makeDefElem("password", : (Node *)makeString($2)); : } : | PASSWORD NULL_P : { : $$ = makeDefElem("password", NULL); 0.00 : 528c88: 31 f6 xor %esi,%esi 0.00 : 528c8a: bf e7 93 7c 00 mov $0x7c93e7,%edi 0.00 : 528c8f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c96: e8 65 88 0c 00 callq 5f1500 : } : | ENCRYPTED PASSWORD Sconst 0.00 : 528c9b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("password", : (Node *)makeString($2)); : } : | PASSWORD NULL_P : { : $$ = makeDefElem("password", NULL); 0.00 : 528ca2: 49 89 c6 mov %rax,%r14 : } : | ENCRYPTED PASSWORD Sconst 0.00 : 528ca5: e9 d6 8c fe ff jmpq 511980 : ; : : AlterOptRoleElem: : PASSWORD Sconst : { : $$ = makeDefElem("password", 0.00 : 528caa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528cb1: 48 8b 39 mov (%rcx),%rdi 0.00 : 528cb4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528cbb: e8 30 6a 0d 00 callq 5ff6f0 0.00 : 528cc0: bf e7 93 7c 00 mov $0x7c93e7,%edi 0.00 : 528cc5: 48 89 c6 mov %rax,%rsi 0.00 : 528cc8: e8 33 88 0c 00 callq 5f1500 : (Node *)makeString($2)); : } : | PASSWORD NULL_P 0.00 : 528ccd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : AlterOptRoleElem: : PASSWORD Sconst : { : $$ = makeDefElem("password", 0.00 : 528cd4: 49 89 c6 mov %rax,%r14 : (Node *)makeString($2)); : } : | PASSWORD NULL_P 0.00 : 528cd7: e9 a4 8c fe ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : AlterOptRoleList: : AlterOptRoleList AlterOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 528cdc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528cdf: e9 9c 8c fe ff jmpq 511980 : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } : ; : : AlterOptRoleList: : AlterOptRoleList AlterOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528ce4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528ceb: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 528cef: 48 8b 32 mov (%rdx),%rsi 0.00 : 528cf2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528cf9: e8 82 91 0b 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528cfe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } : ; : : AlterOptRoleList: : AlterOptRoleList AlterOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528d05: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d08: e9 73 8c fe ff jmpq 511980 : * for backwards compatibility). Note: the only option required by SQL99 : * is "WITH ADMIN name". : */ : OptRoleList: : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d0d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528d10: e9 6b 8c fe ff jmpq 511980 : * Options for CREATE ROLE and ALTER ROLE (also used by CREATE/ALTER USER : * for backwards compatibility). Note: the only option required by SQL99 : * is "WITH ADMIN name". : */ : OptRoleList: : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528d15: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528d1c: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 528d20: 48 8b 36 mov (%rsi),%rsi 0.00 : 528d23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528d2a: e8 51 91 0b 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d2f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Options for CREATE ROLE and ALTER ROLE (also used by CREATE/ALTER USER : * for backwards compatibility). Note: the only option required by SQL99 : * is "WITH ADMIN name". : */ : OptRoleList: : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528d36: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d39: e9 42 8c fe ff jmpq 511980 : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } : | reserved_keyword { $$ = pstrdup($1); } 0.00 : 528d3e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528d45: 48 8b 3e mov (%rsi),%rdi 0.00 : 528d48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528d4f: e8 fc 01 27 00 callq 798f50 0.00 : 528d54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528d5b: 49 89 c6 mov %rax,%r14 0.00 : 528d5e: e9 1d 8c fe ff jmpq 511980 : *****************************************************************************/ : : CreateRoleStmt: : CREATE ROLE RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); 0.00 : 528d63: 48 8b 3d f6 1a 69 00 mov 0x691af6(%rip),%rdi # bba860 0.00 : 528d6a: be 18 00 00 00 mov $0x18,%esi 0.00 : 528d6f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528d76: e8 95 00 27 00 callq 798e10 0.00 : 528d7b: c7 00 eb 02 00 00 movl $0x2eb,(%rax) : n->stmt_type = ROLESTMT_ROLE; 0.00 : 528d81: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->role = $3; : n->options = $5; : $$ = (Node *)n; 0.00 : 528d88: 49 89 c6 mov %rax,%r14 : CreateRoleStmt: : CREATE ROLE RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); : n->stmt_type = ROLESTMT_ROLE; : n->role = $3; 0.00 : 528d8b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528d92: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 528d96: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 528d9a: 48 8b 13 mov (%rbx),%rdx 0.00 : 528d9d: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528da1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528da8: e9 d3 8b fe ff jmpq 511980 : | VariableResetStmt : | VariableSetStmt : | VariableShowStmt : | ViewStmt : | /*EMPTY*/ : { $$ = NULL; } 0.00 : 528dad: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528db0: e9 cb 8b fe ff jmpq 511980 : else : $$ = $1; : } : | stmt : { : if ($1 != NULL) 0.00 : 528db5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = list_make1($1); : else : $$ = NIL; 0.00 : 528dbc: 45 31 f6 xor %r14d,%r14d : else : $$ = $1; : } : | stmt : { : if ($1 != NULL) 0.00 : 528dbf: 48 8b 39 mov (%rcx),%rdi 0.00 : 528dc2: 48 85 ff test %rdi,%rdi 0.00 : 528dc5: 0f 84 b5 8b fe ff je 511980 : $$ = list_make1($1); 0.00 : 528dcb: 31 f6 xor %esi,%esi 0.00 : 528dcd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528dd4: e8 77 8a 0b 00 callq 5e1850 0.00 : 528dd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528de0: 49 89 c6 mov %rax,%r14 0.00 : 528de3: e9 98 8b fe ff jmpq 511980 : ; : : /* the thrashing around here is to discard "empty" statements... */ : stmtmulti: stmtmulti ';' stmt : { : if ($3 != NULL) 0.00 : 528de8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528def: 48 8b 30 mov (%rax),%rsi 0.00 : 528df2: 48 85 f6 test %rsi,%rsi 0.00 : 528df5: 0f 84 91 06 00 00 je 52948c : $$ = lappend($1, $3); 0.00 : 528dfb: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 528dff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528e06: e8 75 90 0b 00 callq 5e1e80 0.00 : 528e0b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528e12: 49 89 c6 mov %rax,%r14 0.00 : 528e15: e9 66 8b fe ff jmpq 511980 : /* : * The target production for the whole parse. : */ : stmtblock: stmtmulti : { : pg_yyget_extra(yyscanner)->parsetree = $1; 0.00 : 528e1a: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 528e21: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528e28: 48 8b 11 mov (%rcx),%rdx 0.00 : 528e2b: 48 8b 03 mov (%rbx),%rax 0.00 : 528e2e: 48 89 42 60 mov %rax,0x60(%rdx) : } : ; 0.00 : 528e32: e9 49 8b fe ff jmpq 511980 0.00 : 528e37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 528e3e: 00 00 : #else /* no yyoverflow */ : # ifndef YYSTACK_RELOCATE : goto yyexhaustedlab; : # else : /* Extend the stack our own way. */ : if (YYMAXDEPTH <= yystacksize) 0.00 : 528e40: 48 81 bd a0 f4 ff ff cmpq $0x270f,-0xb60(%rbp) 0.00 : 528e47: 0f 27 00 00 0.00 : 528e4b: 0f 87 3f 02 00 00 ja 529090 : goto yyexhaustedlab; : yystacksize *= 2; 0.00 : 528e51: 48 8b 85 a0 f4 ff ff mov -0xb60(%rbp),%rax 0.00 : 528e58: b9 10 27 00 00 mov $0x2710,%ecx : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) : goto yyexhaustedlab; : # else : /* Extend the stack our own way. */ : if (YYMAXDEPTH <= yystacksize) : goto yyexhaustedlab; : yystacksize *= 2; 0.00 : 528e64: 48 01 c0 add %rax,%rax 0.00 : 528e67: 48 3d 10 27 00 00 cmp $0x2710,%rax 0.00 : 528e6d: 48 0f 46 c8 cmovbe %rax,%rcx : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e71: 48 89 cf mov %rcx,%rdi : goto yyexhaustedlab; : # else : /* Extend the stack our own way. */ : if (YYMAXDEPTH <= yystacksize) : goto yyexhaustedlab; : yystacksize *= 2; 0.00 : 528e74: 48 89 8d a0 f4 ff ff mov %rcx,-0xb60(%rbp) : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e7b: 48 83 c7 01 add $0x1,%rdi 0.00 : 528e7f: 48 8d 04 3f lea (%rdi,%rdi,1),%rax 0.00 : 528e83: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 528e87: 48 29 c7 sub %rax,%rdi 0.00 : 528e8a: e8 c1 fe 26 00 callq 798d50 : if (! yyptr) 0.00 : 528e8f: 48 85 c0 test %rax,%rax : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e92: 48 89 c3 mov %rax,%rbx : if (! yyptr) 0.00 : 528e95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528e9c: 0f 84 ee 01 00 00 je 529090 : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) : { : /* Get the current used size of the three stacks, in elements. */ : YYSIZE_T yysize = yyssp - yyss + 1; 0.00 : 528ea2: 4d 29 e2 sub %r12,%r10 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528ea5: 4c 89 e6 mov %r12,%rsi 0.00 : 528ea8: 48 89 c7 mov %rax,%rdi : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) : { : /* Get the current used size of the three stacks, in elements. */ : YYSIZE_T yysize = yyssp - yyss + 1; 0.00 : 528eab: 49 d1 fa sar %r10 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528eae: 48 89 85 b0 f4 ff ff mov %rax,-0xb50(%rbp) : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) : { : /* Get the current used size of the three stacks, in elements. */ : YYSIZE_T yysize = yyssp - yyss + 1; 0.00 : 528eb5: 4d 8d 72 01 lea 0x1(%r10),%r14 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528eb9: 4b 8d 14 36 lea (%r14,%r14,1),%rdx 0.00 : 528ebd: e8 2e 0d f4 ff callq 469bf0 0.00 : 528ec2: 48 8b b5 a0 f4 ff ff mov -0xb60(%rbp),%rsi : YYSTACK_RELOCATE (yyvs_alloc, yyvs); 0.00 : 528ec9: 4a 8d 14 f5 00 00 00 lea 0x0(,%r14,8),%rdx 0.00 : 528ed0: 00 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528ed1: 4c 8d 2c 73 lea (%rbx,%rsi,2),%r13 : YYSTACK_RELOCATE (yyvs_alloc, yyvs); 0.00 : 528ed5: 48 8b b5 80 f4 ff ff mov -0xb80(%rbp),%rsi 0.00 : 528edc: 4c 89 ef mov %r13,%rdi 0.00 : 528edf: 4c 89 ad b8 f4 ff ff mov %r13,-0xb48(%rbp) 0.00 : 528ee6: e8 05 0d f4 ff callq 469bf0 : YYSTACK_RELOCATE (yyls_alloc, yyls); 0.00 : 528eeb: 48 8b 85 a0 f4 ff ff mov -0xb60(%rbp),%rax 0.00 : 528ef2: 48 8b b5 90 f4 ff ff mov -0xb70(%rbp),%rsi 0.00 : 528ef9: 4a 8d 14 b5 00 00 00 lea 0x0(,%r14,4),%rdx 0.00 : 528f00: 00 0.00 : 528f01: 49 8d 44 c5 00 lea 0x0(%r13,%rax,8),%rax 0.00 : 528f06: 48 89 c7 mov %rax,%rdi 0.00 : 528f09: 48 89 85 c0 f4 ff ff mov %rax,-0xb40(%rbp) 0.00 : 528f10: e8 db 0c f4 ff callq 469bf0 : # undef YYSTACK_RELOCATE : if (yyss1 != yyssa) 0.00 : 528f15: 4c 3b a5 48 f4 ff ff cmp -0xbb8(%rbp),%r12 0.00 : 528f1c: 74 08 je 528f26 : YYSTACK_FREE (yyss1); 0.00 : 528f1e: 4c 89 e7 mov %r12,%rdi 0.00 : 528f21: e8 5a fc 26 00 callq 798b80 : yylsp = yyls + yysize - 1; : : YYDPRINTF ((stderr, "Stack size increased to %lu\n", : (unsigned long int) yystacksize)); : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 528f26: 48 8b 8d a0 f4 ff ff mov -0xb60(%rbp),%rcx : YYSTACK_FREE (yyss1); : } : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; 0.00 : 528f2d: 49 8d 56 ff lea -0x1(%r14),%rdx 0.00 : 528f31: 4c 8d 14 53 lea (%rbx,%rdx,2),%r10 : yylsp = yyls + yysize - 1; : : YYDPRINTF ((stderr, "Stack size increased to %lu\n", : (unsigned long int) yystacksize)); : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 528f35: 48 83 e9 01 sub $0x1,%rcx 0.00 : 528f39: 48 8d 04 4b lea (%rbx,%rcx,2),%rax 0.00 : 528f3d: 48 89 8d 68 f4 ff ff mov %rcx,-0xb98(%rbp) 0.00 : 528f44: 49 39 c2 cmp %rax,%r10 0.00 : 528f47: 0f 83 54 01 00 00 jae 5290a1 : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; : yyvsp = yyvs + yysize - 1; : yylsp = yyls + yysize - 1; 0.00 : 528f4d: 48 8b 9d c0 f4 ff ff mov -0xb40(%rbp),%rbx : } : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; : yyvsp = yyvs + yysize - 1; 0.00 : 528f54: 4d 8d 6c d5 00 lea 0x0(%r13,%rdx,8),%r13 : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 528f59: 41 81 ff e3 02 00 00 cmp $0x2e3,%r15d : } : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; : yyvsp = yyvs + yysize - 1; 0.00 : 528f60: 4c 89 ad 88 f4 ff ff mov %r13,-0xb78(%rbp) : yylsp = yyls + yysize - 1; 0.00 : 528f67: 48 8d 14 93 lea (%rbx,%rdx,4),%rdx 0.00 : 528f6b: 48 89 95 98 f4 ff ff mov %rdx,-0xb68(%rbp) : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 528f72: 0f 85 00 88 fe ff jne 511778 : * available from the scanner. : */ : static void : base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg) : { : parser_yyerror(msg); 0.00 : 528f78: 31 db xor %ebx,%ebx : yydestruct ("Cleanup: popping", : yystos[*yyssp], yyvsp, yylsp, yyscanner); : YYPOPSTACK (1); : } : #ifndef yyoverflow : if (yyss != yyssa) 0.00 : 528f7a: 48 8b b5 48 f4 ff ff mov -0xbb8(%rbp),%rsi 0.00 : 528f81: 48 39 b5 b0 f4 ff ff cmp %rsi,-0xb50(%rbp) 0.00 : 528f88: 74 0c je 528f96 : YYSTACK_FREE (yyss); 0.00 : 528f8a: 48 8b bd b0 f4 ff ff mov -0xb50(%rbp),%rdi 0.00 : 528f91: e8 ea fb 26 00 callq 798b80 : if (yymsg != yymsgbuf) : YYSTACK_FREE (yymsg); : #endif : /* Make sure YYID is used. */ : return YYID (yyresult); : } 0.00 : 528f96: 48 81 c4 a8 0b 00 00 add $0xba8,%rsp 0.00 : 528f9d: 89 d8 mov %ebx,%eax 0.00 : 528f9f: 5b pop %rbx 0.00 : 528fa0: 41 5c pop %r12 0.00 : 528fa2: 41 5d pop %r13 0.00 : 528fa4: 41 5e pop %r14 0.00 : 528fa6: 41 5f pop %r15 0.00 : 528fa8: c9 leaveq 0.00 : 528fa9: c3 retq 0.00 : 528faa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : YYDPRINTF ((stderr, "Reading a token: ")); : yychar = YYLEX; : } : : if (yychar <= YYEOF) 0.00 : 528fb0: c7 85 7c f4 ff ff 00 movl $0x0,-0xb84(%rbp) 0.00 : 528fb7: 00 00 00 0.00 : 528fba: 31 d2 xor %edx,%edx 0.00 : 528fbc: e9 07 88 fe ff jmpq 5117c8 0.00 : 528fc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : yyn = yyr1[yyn]; : : yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; : if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) : yystate = yytable[yystate]; 0.00 : 528fc8: 44 0f bf bc 00 60 b1 movswl 0x7fb160(%rax,%rax,1),%r15d 0.00 : 528fcf: 7f 00 : number reduced by. */ : : yyn = yyr1[yyn]; : : yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; : if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 0.00 : 528fd1: e9 43 8a fe ff jmpq 511a19 0.00 : 528fd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 528fdd: 00 00 00 : : /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ : if (yychar == YYEMPTY) : { : YYDPRINTF ((stderr, "Reading a token: ")); : yychar = YYLEX; 0.00 : 528fe0: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21818 9.09 : 528fe7: 48 8d 75 cc lea -0x34(%rbp),%rsi 0.00 : 528feb: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 528fef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528ff6: e8 e5 15 00 00 callq 52a5e0 0.00 : 528ffb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529002: 89 85 7c f4 ff ff mov %eax,-0xb84(%rbp) 0.00 : 529008: e9 8b 87 fe ff jmpq 511798 0.00 : 52900d: 0f 1f 00 nopl (%rax) : /* If the proper action on seeing token YYTOKEN is to reduce or to : detect an error, take that action. */ : yyn += yytoken; : if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) : goto yydefault; : yyn = yytable[yyn]; 0.00 : 529010: 0f bf 94 09 60 b1 7f movswl 0x7fb160(%rcx,%rcx,1),%edx 0.00 : 529017: 00 : if (yyn <= 0) /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21838 9.09 : 529018: 85 d2 test %edx,%edx 0.00 : 52901a: 7e 44 jle 529060 : : /* Discard the shifted token. */ : yychar = YYEMPTY; : : yystate = yyn; : *++yyvsp = yylval; 0.00 : 52901c: 48 83 85 88 f4 ff ff addq $0x8,-0xb78(%rbp) 0.00 : 529023: 08 0.00 : 529024: 48 8b 45 c0 mov -0x40(%rbp),%rax : *++yylsp = yylloc; 0.00 : 529028: 41 89 d7 mov %edx,%r15d : : /* Discard the shifted token. */ : yychar = YYEMPTY; : : yystate = yyn; : *++yyvsp = yylval; 0.00 : 52902b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 529032: 48 89 06 mov %rax,(%rsi) : *++yylsp = yylloc; 0.00 : 529035: 48 83 85 98 f4 ff ff addq $0x4,-0xb68(%rbp) 0.00 : 52903c: 04 0.00 : 52903d: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 529040: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529047: 89 01 mov %eax,(%rcx) 0.00 : 529049: c7 85 7c f4 ff ff fe movl $0xfffffffe,-0xb84(%rbp) 0.00 : 529050: ff ff ff : goto yynewstate; 0.00 : 529053: e9 c1 89 fe ff jmpq 511a19 0.00 : 529058: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 52905f: 00 : if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) : goto yydefault; : yyn = yytable[yyn]; : if (yyn <= 0) : { : if (yytable_value_is_error (yyn)) 0.00 : 529060: 81 fa fb f6 ff ff cmp $0xfffff6fb,%edx 0.00 : 529066: 74 10 je 529078 : goto yyerrlab; : yyn = -yyn; 0.00 : 529068: 89 d1 mov %edx,%ecx 0.00 : 52906a: f7 d9 neg %ecx : goto yyreduce; 0.00 : 52906c: e9 85 87 fe ff jmpq 5117f6 0.00 : 529071: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 529078: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52907f: bf 51 e3 7b 00 mov $0x7be351,%edi 0.00 : 529084: e8 47 4c fe ff callq 50dcd0 0.00 : 529089: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 529090: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529097: bf 5e e3 7b 00 mov $0x7be35e,%edi 0.00 : 52909c: e8 2f 4c fe ff callq 50dcd0 : : YYDPRINTF ((stderr, "Stack size increased to %lu\n", : (unsigned long int) yystacksize)); : : if (yyss + yystacksize - 1 <= yyssp) : YYABORT; 0.00 : 5290a1: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5290a6: e9 cf fe ff ff jmpq 528f7a : mergeTableFuncParameters(List *func_args, List *columns) : { : ListCell *lc; : : /* Explicit OUT and INOUT parameters shouldn't be used in this syntax */ : foreach(lc, func_args) 0.00 : 5290ab: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 5290af: 48 85 d2 test %rdx,%rdx 0.00 : 5290b2: 0f 85 3c 5d ff ff jne 51edf4 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("OUT and INOUT arguments aren't allowed in TABLE functions"))); : } : : return list_concat(func_args, columns); 0.00 : 5290b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5290bf: e8 fc 94 0b 00 callq 5e25c0 : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); 0.00 : 5290c4: 48 89 43 10 mov %rax,0x10(%rbx) : n->returnType = TableFuncTypeName($9); 0.00 : 5290c8: 49 8b 04 24 mov (%r12),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5290cc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5290d3: 48 85 c0 test %rax,%rax 0.00 : 5290d6: 0f 84 ac 02 00 00 je 529388 : static TypeName * : TableFuncTypeName(List *columns) : { : TypeName *result; : : if (list_length(columns) == 1) 0.00 : 5290dc: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 5290e0: 0f 85 a2 02 00 00 jne 529388 : { : FunctionParameter *p = (FunctionParameter *) linitial(columns); : : result = (TypeName *) copyObject(p->argType); 0.00 : 5290e6: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5290ea: 48 8b 00 mov (%rax),%rax 0.00 : 5290ed: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 5290f1: e8 9a b0 0b 00 callq 5e4190 0.00 : 5290f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5290fd: 48 89 c2 mov %rax,%rdx : } : else : result = SystemTypeName("record"); : : result->setof = true; 0.00 : 529100: c6 42 14 01 movb $0x1,0x14(%rdx) : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); : n->returnType = TableFuncTypeName($9); 0.00 : 529104: 48 89 53 18 mov %rdx,0x18(%rbx) : n->returnType->location = @7; : n->options = $11; : n->withClause = $12; : $$ = (Node *)n; 0.00 : 529108: 49 89 de mov %rbx,%r14 : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); : n->returnType = TableFuncTypeName($9); : n->returnType->location = @7; 0.00 : 52910b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529112: 8b 41 ec mov -0x14(%rcx),%eax 0.00 : 529115: 89 42 30 mov %eax,0x30(%rdx) : n->options = $11; 0.00 : 529118: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52911f: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 529123: 48 89 43 20 mov %rax,0x20(%rbx) : n->withClause = $12; 0.00 : 529127: 48 8b 06 mov (%rsi),%rax 0.00 : 52912a: 48 89 43 28 mov %rax,0x28(%rbx) : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults 0.00 : 52912e: e9 4d 88 fe ff jmpq 511980 : $1->mode == FUNC_PARAM_VARIADIC)) : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("aggregates cannot have output arguments"), : parser_errposition(@1))); : $$ = $1; 0.00 : 529133: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 529136: e9 45 88 fe ff jmpq 511980 : | TIME opt_timezone : { : if ($2) : $$ = SystemTypeName("timetz"); : else : $$ = SystemTypeName("time"); 0.00 : 52913b: bf bc 95 7b 00 mov $0x7b95bc,%edi 0.00 : 529140: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529147: e8 e4 78 fe ff callq 510a30 0.00 : 52914c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529153: 49 89 c6 mov %rax,%r14 0.00 : 529156: e9 3b d3 fe ff jmpq 516496 : { : $$ = SystemTypeName("varbit"); : } : else : { : $$ = SystemTypeName("bit"); 0.00 : 52915b: bf fe 96 7c 00 mov $0x7c96fe,%edi 0.00 : 529160: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529167: e8 c4 78 fe ff callq 510a30 : $$->typmods = list_make1(makeIntConst(1, -1)); 0.00 : 52916c: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 529171: bf 01 00 00 00 mov $0x1,%edi : { : $$ = SystemTypeName("varbit"); : } : else : { : $$ = SystemTypeName("bit"); 0.00 : 529176: 49 89 c6 mov %rax,%r14 : $$->typmods = list_make1(makeIntConst(1, -1)); 0.00 : 529179: e8 92 7a fe ff callq 510c10 0.00 : 52917e: 31 f6 xor %esi,%esi 0.00 : 529180: 48 89 c7 mov %rax,%rdi 0.00 : 529183: e8 c8 86 0b 00 callq 5e1850 0.00 : 529188: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 52918c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529193: e9 1e d9 fe ff jmpq 516ab6 : TIMESTAMP '(' Iconst ')' opt_timezone : { : if ($5) : $$ = SystemTypeName("timestamptz"); : else : $$ = SystemTypeName("timestamp"); 0.00 : 529198: bf ff 70 8e 00 mov $0x8e70ff,%edi 0.00 : 52919d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5291a4: e8 87 78 fe ff callq 510a30 0.00 : 5291a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5291b0: 49 89 c6 mov %rax,%r14 0.00 : 5291b3: e9 cd d3 fe ff jmpq 516585 : | TIME '(' Iconst ')' opt_timezone : { : if ($5) : $$ = SystemTypeName("timetz"); : else : $$ = SystemTypeName("time"); 0.00 : 5291b8: bf bc 95 7b 00 mov $0x7b95bc,%edi 0.00 : 5291bd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5291c4: e8 67 78 fe ff callq 510a30 0.00 : 5291c9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5291d0: 49 89 c6 mov %rax,%r14 0.00 : 5291d3: e9 fc d2 fe ff jmpq 5164d4 : | TIMESTAMP opt_timezone : { : if ($2) : $$ = SystemTypeName("timestamptz"); : else : $$ = SystemTypeName("timestamp"); 0.00 : 5291d8: bf ff 70 8e 00 mov $0x8e70ff,%edi 0.00 : 5291dd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5291e4: e8 47 78 fe ff callq 510a30 0.00 : 5291e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5291f0: 49 89 c6 mov %rax,%r14 0.00 : 5291f3: e9 4f d3 fe ff jmpq 516547 : * the following special-case codes, to avoid bloating the : * size of the main parser. : */ : if (strcmp($1, "superuser") == 0) : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nosuperuser") == 0) 0.00 : 5291f8: bf 2b 94 7c 00 mov $0x7c942b,%edi 0.00 : 5291fd: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 529202: 4c 89 c6 mov %r8,%rsi 0.00 : 529205: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529207: 0f 85 9f 02 00 00 jne 5294ac : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); 0.00 : 52920d: 31 ff xor %edi,%edi 0.00 : 52920f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529216: e8 35 65 0d 00 callq 5ff750 0.00 : 52921b: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 529220: 48 89 c6 mov %rax,%rsi 0.00 : 529223: e8 d8 82 0c 00 callq 5f1500 0.00 : 529228: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52922f: 49 89 c6 mov %rax,%r14 0.00 : 529232: e9 49 87 fe ff jmpq 511980 : if (*oldval == '+') : oldval++; : if (*oldval == '-') : v->val.str = oldval+1; /* just strip the '-' */ : else : v->val.str = psprintf("-%s", oldval); 0.00 : 529237: bf 81 fc 8f 00 mov $0x8ffc81,%edi 0.00 : 52923c: 31 c0 xor %eax,%eax 0.00 : 52923e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529245: e8 96 52 28 00 callq 7ae4e0 0.00 : 52924a: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 52924e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529255: e9 26 87 fe ff jmpq 511980 : n->multixact_freeze_min_age = 0; : n->multixact_freeze_table_age = 0; : } : else : { : n->freeze_min_age = n->freeze_table_age = -1; 0.00 : 52925a: c7 42 0c ff ff ff ff movl $0xffffffff,0xc(%rdx) 0.00 : 529261: c7 42 08 ff ff ff ff movl $0xffffffff,0x8(%rdx) : n->multixact_freeze_min_age = -1; 0.00 : 529268: c7 42 10 ff ff ff ff movl $0xffffffff,0x10(%rdx) : n->multixact_freeze_table_age = -1; 0.00 : 52926f: c7 42 14 ff ff ff ff movl $0xffffffff,0x14(%rdx) 0.00 : 529276: e9 93 04 ff ff jmpq 51970e : n->multixact_freeze_min_age = 0; : n->multixact_freeze_table_age = 0; : } : else : { : n->freeze_min_age = n->freeze_table_age = -1; 0.00 : 52927b: c7 42 0c ff ff ff ff movl $0xffffffff,0xc(%rdx) 0.00 : 529282: c7 42 08 ff ff ff ff movl $0xffffffff,0x8(%rdx) : n->multixact_freeze_min_age = -1; 0.00 : 529289: c7 42 10 ff ff ff ff movl $0xffffffff,0x10(%rdx) : n->multixact_freeze_table_age = -1; 0.00 : 529290: c7 42 14 ff ff ff ff movl $0xffffffff,0x14(%rdx) 0.00 : 529297: e9 f5 04 ff ff jmpq 519791 : ereport(ERROR, : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("precision for type float must be at least 1 bit"), : parser_errposition(@2))); : else if ($2 <= 24) : $$ = SystemTypeName("float4"); 0.00 : 52929c: bf 76 5f 8e 00 mov $0x8e5f76,%edi 0.00 : 5292a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5292a8: e8 83 77 fe ff callq 510a30 0.00 : 5292ad: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5292b4: 49 89 c6 mov %rax,%r14 0.00 : 5292b7: e9 c4 86 fe ff jmpq 511980 : /* in_expr returns a SubLink or a list of a_exprs */ : if (IsA($3, SubLink)) : { : /* generate foo = ANY (subquery) */ : SubLink *n = (SubLink *) $3; : n->subLinkType = ANY_SUBLINK; 0.00 : 5292bc: c7 43 04 02 00 00 00 movl $0x2,0x4(%rbx) : n->subLinkId = 0; 0.00 : 5292c3: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : n->testexpr = $1; : n->operName = list_make1(makeString("=")); 0.00 : 5292ca: bf 45 97 7c 00 mov $0x7c9745,%edi : { : /* generate foo = ANY (subquery) */ : SubLink *n = (SubLink *) $3; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 5292cf: 48 8b 42 f0 mov -0x10(%rdx),%rax : n->operName = list_make1(makeString("=")); : n->location = @2; : $$ = (Node *)n; 0.00 : 5292d3: 49 89 de mov %rbx,%r14 : { : /* generate foo = ANY (subquery) */ : SubLink *n = (SubLink *) $3; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 5292d6: 48 89 43 10 mov %rax,0x10(%rbx) : n->operName = list_make1(makeString("=")); 0.00 : 5292da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5292e1: e8 0a 64 0d 00 callq 5ff6f0 0.00 : 5292e6: 31 f6 xor %esi,%esi 0.00 : 5292e8: 48 89 c7 mov %rax,%rdi 0.00 : 5292eb: e8 60 85 0b 00 callq 5e1850 0.00 : 5292f0: 48 89 43 18 mov %rax,0x18(%rbx) : n->location = @2; 0.00 : 5292f4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5292fb: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 5292fe: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 529301: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529308: e9 73 86 fe ff jmpq 511980 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 52930d: 4d 85 e4 test %r12,%r12 0.00 : 529310: 0f 84 98 07 00 00 je 529aae : : /* : * We ignore the names, though the aggr_arg production allows them; : * it doesn't allow default values, so those need not be checked. : */ : if (list_length(orderedargs) != 1 || 0.00 : 529316: 41 83 7c 24 04 01 cmpl $0x1,0x4(%r12) : int ndirectargs; : : /* No restriction unless last direct arg is VARIADIC */ : if (lastd->mode == FUNC_PARAM_VARIADIC) : { : FunctionParameter *firsto = (FunctionParameter *) linitial(orderedargs); 0.00 : 52931c: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 529321: 48 8b 18 mov (%rax),%rbx : : /* : * We ignore the names, though the aggr_arg production allows them; : * it doesn't allow default values, so those need not be checked. : */ : if (list_length(orderedargs) != 1 || 0.00 : 529324: 75 0a jne 529330 0.00 : 529326: 83 7b 18 76 cmpl $0x76,0x18(%rbx) 0.00 : 52932a: 0f 84 3a 0e 00 00 je 52a16a : firsto->mode != FUNC_PARAM_VARIADIC || : !equal(lastd->argType, firsto->argType)) : ereport(ERROR, 0.00 : 529330: 45 31 c0 xor %r8d,%r8d 0.00 : 529333: b9 e0 74 82 00 mov $0x8274e0,%ecx 0.00 : 529338: ba cd 35 00 00 mov $0x35cd,%edx 0.00 : 52933d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529342: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529347: e8 74 17 25 00 callq 77aac0 0.00 : 52934c: 84 c0 test %al,%al 0.00 : 52934e: 0f 84 53 8c fe ff je 511fa7 0.00 : 529354: 48 89 df mov %rbx,%rdi 0.00 : 529357: e8 b4 4d 0b 00 callq 5de110 0.00 : 52935c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529363: 89 c7 mov %eax,%edi 0.00 : 529365: e8 36 49 fe ff callq 50dca0 0.00 : 52936a: bf 00 a1 7c 00 mov $0x7ca100,%edi 0.00 : 52936f: 41 89 c4 mov %eax,%r12d 0.00 : 529372: 31 c0 xor %eax,%eax 0.00 : 529374: e8 27 35 25 00 callq 77c8a0 0.00 : 529379: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52937e: 89 c3 mov %eax,%ebx 0.00 : 529380: e9 db b4 ff ff jmpq 524860 0.00 : 529385: 0f 1f 00 nopl (%rax) : FunctionParameter *p = (FunctionParameter *) linitial(columns); : : result = (TypeName *) copyObject(p->argType); : } : else : result = SystemTypeName("record"); 0.00 : 529388: bf 9d 96 7b 00 mov $0x7b969d,%edi 0.00 : 52938d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529394: e8 97 76 fe ff callq 510a30 0.00 : 529399: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5293a0: 48 89 c2 mov %rax,%rdx 0.00 : 5293a3: e9 58 fd ff ff jmpq 529100 : if (IsA($4, SubLink)) : { : /* generate NOT (foo = ANY (subquery)) */ : /* Make an = ANY node */ : SubLink *n = (SubLink *) $4; : n->subLinkType = ANY_SUBLINK; 0.00 : 5293a8: c7 43 04 02 00 00 00 movl $0x2,0x4(%rbx) : n->subLinkId = 0; 0.00 : 5293af: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : n->testexpr = $1; : n->operName = list_make1(makeString("=")); 0.00 : 5293b6: bf 45 97 7c 00 mov $0x7c9745,%edi : /* generate NOT (foo = ANY (subquery)) */ : /* Make an = ANY node */ : SubLink *n = (SubLink *) $4; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 5293bb: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 5293bf: 48 89 43 10 mov %rax,0x10(%rbx) : n->operName = list_make1(makeString("=")); 0.00 : 5293c3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5293ca: e8 21 63 0d 00 callq 5ff6f0 0.00 : 5293cf: 31 f6 xor %esi,%esi 0.00 : 5293d1: 48 89 c7 mov %rax,%rdi 0.00 : 5293d4: e8 77 84 0b 00 callq 5e1850 0.00 : 5293d9: 48 89 43 18 mov %rax,0x18(%rbx) : n->location = @3; 0.00 : 5293dd: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : /* Stick a NOT on top */ : $$ = makeNotExpr((Node *) n, @2); 0.00 : 5293e4: 48 89 df mov %rbx,%rdi : SubLink *n = (SubLink *) $4; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; : n->operName = list_make1(makeString("=")); : n->location = @3; 0.00 : 5293e7: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 5293ea: 89 43 28 mov %eax,0x28(%rbx) : /* Stick a NOT on top */ : $$ = makeNotExpr((Node *) n, @2); 0.00 : 5293ed: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 5293f0: e8 ab 7f fe ff callq 5113a0 0.00 : 5293f5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5293fc: 49 89 c6 mov %rax,%r14 0.00 : 5293ff: e9 7c 85 fe ff jmpq 511980 : $$ = (Node *)n; : } : | a_expr subquery_Op sub_type '(' a_expr ')' %prec Op : { : if ($3 == ANY_SUBLINK) : $$ = (Node *) makeA_Expr(AEXPR_OP_ANY, $2, $1, $5, @2); 0.00 : 529404: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52940b: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 52940f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 529414: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 529418: 48 8b 76 e0 mov -0x20(%rsi),%rsi 0.00 : 52941c: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 529420: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529427: e8 b4 85 0c 00 callq 5f19e0 0.00 : 52942c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529433: 49 89 c6 mov %rax,%r14 0.00 : 529436: e9 45 85 fe ff jmpq 511980 : n->arg = $2; : n->indirection = check_indirection($4, yyscanner); : $$ = (Node *)n; : } : else : $$ = $2; 0.00 : 52943b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 529442: 4c 8b 73 f0 mov -0x10(%rbx),%r14 0.00 : 529446: e9 35 85 fe ff jmpq 511980 : RuleActionMulti: : RuleActionMulti ';' RuleActionStmtOrEmpty : { if ($3 != NULL) : $$ = lappend($1, $3); : else : $$ = $1; 0.00 : 52944b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529452: 4c 8b 72 f0 mov -0x10(%rdx),%r14 0.00 : 529456: e9 25 85 fe ff jmpq 511980 : n->jointype = JOIN_INNER; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $3; : if ($4 != NULL && IsA($4, List)) : n->usingClause = (List *) $4; /* USING clause */ 0.00 : 52945b: 48 89 42 20 mov %rax,0x20(%rdx) : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $3; : if ($4 != NULL && IsA($4, List)) 0.00 : 52945f: e9 1b e2 fe ff jmpq 51767f : n->kind = VAR_SET_VALUE; : n->name = "timezone"; : if ($3 != NULL) : n->args = list_make1($3); : else : n->kind = VAR_SET_DEFAULT; 0.00 : 529464: c7 43 04 01 00 00 00 movl $0x1,0x4(%rbx) 0.00 : 52946b: e9 78 ed ff ff jmpq 5281e8 : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) : n->schemaname = $3; : else : n->schemaname = $5; 0.00 : 529470: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 529477: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 52947b: e9 98 f1 ff ff jmpq 528618 : n->kind = VAR_SET_VALUE; : n->name = "client_encoding"; : if ($2 != NULL) : n->args = list_make1(makeStringConst($2, @2)); : else : n->kind = VAR_SET_DEFAULT; 0.00 : 529480: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) 0.00 : 529487: e9 3f ec ff ff jmpq 5280cb : stmtmulti: stmtmulti ';' stmt : { : if ($3 != NULL) : $$ = lappend($1, $3); : else : $$ = $1; 0.00 : 52948c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529493: 4c 8b 72 f0 mov -0x10(%rdx),%r14 0.00 : 529497: e9 e4 84 fe ff jmpq 511980 : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* One can omit the schema name or the authorization id. */ : if ($6 != NULL) : n->schemaname = $6; : else : n->schemaname = $8; 0.00 : 52949c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5294a3: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 5294a7: e9 82 f0 ff ff jmpq 52852e : */ : if (strcmp($1, "superuser") == 0) : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nosuperuser") == 0) : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "createuser") == 0) 0.00 : 5294ac: bf 39 94 7c 00 mov $0x7c9439,%edi 0.00 : 5294b1: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5294b6: 4c 89 c6 mov %r8,%rsi 0.00 : 5294b9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5294bb: 0f 85 b0 00 00 00 jne 529571 : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); 0.00 : 5294c1: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5294c6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5294cd: e8 7e 62 0d 00 callq 5ff750 0.00 : 5294d2: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 5294d7: 48 89 c6 mov %rax,%rsi 0.00 : 5294da: e8 21 80 0c 00 callq 5f1500 0.00 : 5294df: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5294e6: 49 89 c6 mov %rax,%r14 0.00 : 5294e9: e9 92 84 fe ff jmpq 511980 : foreach(lc, $3) : { : NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); : : if (IsA(arg, NamedArgExpr)) : ereport(ERROR, 0.00 : 5294ee: 45 31 c0 xor %r8d,%r8d 0.00 : 5294f1: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 5294f6: ba 68 32 00 00 mov $0x3268,%edx 0.00 : 5294fb: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529500: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529505: e8 b6 15 25 00 callq 77aac0 0.00 : 52950a: 84 c0 test %al,%al 0.00 : 52950c: 0f 84 95 8a fe ff je 511fa7 0.00 : 529512: 8b 7b 1c mov 0x1c(%rbx),%edi 0.00 : 529515: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52951c: e8 7f 47 fe ff callq 50dca0 0.00 : 529521: bf 50 a6 7c 00 mov $0x7ca650,%edi 0.00 : 529526: 41 89 c4 mov %eax,%r12d 0.00 : 529529: 31 c0 xor %eax,%eax 0.00 : 52952b: e8 70 33 25 00 callq 77c8a0 0.00 : 529530: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529535: 89 c3 mov %eax,%ebx 0.00 : 529537: e9 24 b3 ff ff jmpq 524860 0.00 : 52953c: 0f 1f 40 00 nopl 0x0(%rax) : ; : : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $2); 0.00 : 529540: 48 8b 33 mov (%rbx),%rsi 0.00 : 529543: 4c 89 c2 mov %r8,%rdx 0.00 : 529546: bf 0b 97 7c 00 mov $0x7c970b,%edi 0.00 : 52954b: 31 c0 xor %eax,%eax 0.00 : 52954d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529554: e8 87 4f 28 00 callq 7ae4e0 0.00 : 529559: 48 89 03 mov %rax,(%rbx) 0.00 : 52955c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529563: e9 16 d6 fe ff jmpq 516b7e : n->jointype = $2; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; : if ($5 != NULL && IsA($5, List)) : n->usingClause = (List *) $5; /* USING clause */ 0.00 : 529568: 48 89 42 20 mov %rax,0x20(%rdx) : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $2; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; : if ($5 != NULL && IsA($5, List)) 0.00 : 52956c: e9 31 ec fe ff jmpq 5181a2 : else if (strcmp($1, "createuser") == 0) : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); : } : else if (strcmp($1, "nocreateuser") == 0) 0.00 : 529571: bf 37 94 7c 00 mov $0x7c9437,%edi 0.00 : 529576: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 52957b: 4c 89 c6 mov %r8,%rsi 0.00 : 52957e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529580: 0f 85 45 02 00 00 jne 5297cb : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); 0.00 : 529586: 31 ff xor %edi,%edi 0.00 : 529588: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52958f: e8 bc 61 0d 00 callq 5ff750 0.00 : 529594: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 529599: 48 89 c6 mov %rax,%rsi 0.00 : 52959c: e8 5f 7f 0c 00 callq 5f1500 0.00 : 5295a1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5295a8: 49 89 c6 mov %rax,%r14 0.00 : 5295ab: e9 d0 83 fe ff jmpq 511980 : $$->catalogname = NULL; : $$->schemaname = $1; : $$->relname = strVal(linitial($2)); : break; : case 2: : $$->catalogname = $1; 0.00 : 5295b0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5295b7: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 5295bb: 48 89 41 08 mov %rax,0x8(%rcx) : $$->schemaname = strVal(linitial($2)); 0.00 : 5295bf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5295c6: 31 c0 xor %eax,%eax 0.00 : 5295c8: 48 8b 13 mov (%rbx),%rdx 0.00 : 5295cb: 48 85 d2 test %rdx,%rdx 0.00 : 5295ce: 74 04 je 5295d4 0.00 : 5295d0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5295d4: 48 8b 00 mov (%rax),%rax 0.00 : 5295d7: 31 d2 xor %edx,%edx 0.00 : 5295d9: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5295dd: 48 89 41 10 mov %rax,0x10(%rcx) : $$->relname = strVal(lsecond($2)); 0.00 : 5295e1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5295e8: 48 8b 06 mov (%rsi),%rax 0.00 : 5295eb: 48 85 c0 test %rax,%rax 0.00 : 5295ee: 74 04 je 5295f4 0.00 : 5295f0: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 5295f4: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5295f8: 48 8b 00 mov (%rax),%rax 0.00 : 5295fb: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5295ff: 48 89 41 18 mov %rax,0x18(%rcx) : break; 0.00 : 529603: e9 78 83 fe ff jmpq 511980 : ; : : CharacterWithLength: character '(' Iconst ')' opt_charset : { : if (($5 != NULL) && (strcmp($5, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $5); 0.00 : 529608: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52960f: 4c 89 c2 mov %r8,%rdx 0.00 : 529612: bf 0b 97 7c 00 mov $0x7c970b,%edi 0.00 : 529617: 48 8b 70 e0 mov -0x20(%rax),%rsi 0.00 : 52961b: 31 c0 xor %eax,%eax 0.00 : 52961d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529624: e8 b7 4e 28 00 callq 7ae4e0 0.00 : 529629: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529630: 48 89 42 e0 mov %rax,-0x20(%rdx) 0.00 : 529634: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52963b: e9 c8 d5 fe ff jmpq 516c08 : check_qualified_name($2, yyscanner); : $$ = makeRangeVar(NULL, NULL, @1); : switch (list_length($2)) : { : case 1: : $$->catalogname = NULL; 0.00 : 529640: 48 c7 41 08 00 00 00 movq $0x0,0x8(%rcx) 0.00 : 529647: 00 : $$->schemaname = $1; 0.00 : 529648: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52964f: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 529653: 48 89 41 10 mov %rax,0x10(%rcx) : $$->relname = strVal(linitial($2)); 0.00 : 529657: 48 8b 16 mov (%rsi),%rdx 0.00 : 52965a: 31 c0 xor %eax,%eax 0.00 : 52965c: 48 85 d2 test %rdx,%rdx 0.00 : 52965f: 74 04 je 529665 0.00 : 529661: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 529665: 48 8b 00 mov (%rax),%rax 0.00 : 529668: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 52966c: 48 89 41 18 mov %rax,0x18(%rcx) : break; 0.00 : 529670: e9 0b 83 fe ff jmpq 511980 : * into the destination ResTargets. This is semantically : * equivalent to, and much cheaper to process than, the : * general case. : */ : if (list_length($2) != list_length($5)) : ereport(ERROR, 0.00 : 529675: 45 31 c0 xor %r8d,%r8d 0.00 : 529678: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52967d: ba e7 24 00 00 mov $0x24e7,%edx 0.00 : 529682: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529687: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52968c: e8 2f 14 25 00 callq 77aac0 0.00 : 529691: 84 c0 test %al,%al 0.00 : 529693: 0f 84 0e 89 fe ff je 511fa7 0.00 : 529699: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5296a0: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5296a7: 8b 3b mov (%rbx),%edi 0.00 : 5296a9: e8 f2 45 fe ff callq 50dca0 0.00 : 5296ae: bf f8 a1 7c 00 mov $0x7ca1f8,%edi 0.00 : 5296b3: 41 89 c4 mov %eax,%r12d 0.00 : 5296b6: 31 c0 xor %eax,%eax 0.00 : 5296b8: e8 e3 31 25 00 callq 77c8a0 0.00 : 5296bd: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 5296c2: 89 c3 mov %eax,%ebx 0.00 : 5296c4: e9 97 b1 ff ff jmpq 524860 : /* : * Check FLOAT() precision limits assuming IEEE floating : * types - thomas 1997-09-18 : */ : if ($2 < 1) : ereport(ERROR, 0.00 : 5296c9: 45 31 c0 xor %r8d,%r8d 0.00 : 5296cc: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 5296d1: ba e0 29 00 00 mov $0x29e0,%edx 0.00 : 5296d6: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 5296db: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5296e0: e8 db 13 25 00 callq 77aac0 0.00 : 5296e5: 84 c0 test %al,%al 0.00 : 5296e7: 0f 84 ba 88 fe ff je 511fa7 0.00 : 5296ed: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5296f4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5296fb: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 5296fe: e8 9d 45 fe ff callq 50dca0 0.00 : 529703: bf 30 a3 7c 00 mov $0x7ca330,%edi 0.00 : 529708: 41 89 c4 mov %eax,%r12d 0.00 : 52970b: 31 c0 xor %eax,%eax 0.00 : 52970d: e8 8e 31 25 00 callq 77c8a0 0.00 : 529712: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 529717: 89 c3 mov %eax,%ebx 0.00 : 529719: e9 42 b1 ff ff jmpq 524860 : { : TypeName *t = $1; : if ($6 != NIL) : { : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 52971e: 45 31 c0 xor %r8d,%r8d 0.00 : 529721: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529726: ba 87 32 00 00 mov $0x3287,%edx 0.00 : 52972b: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529730: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529735: e8 86 13 25 00 callq 77aac0 0.00 : 52973a: 84 c0 test %al,%al 0.00 : 52973c: 0f 84 65 88 fe ff je 511fa7 0.00 : 529742: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529749: 8b 79 ec mov -0x14(%rcx),%edi 0.00 : 52974c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529753: e8 48 45 fe ff callq 50dca0 0.00 : 529758: bf 08 9f 7c 00 mov $0x7c9f08,%edi 0.00 : 52975d: 41 89 c4 mov %eax,%r12d 0.00 : 529760: 31 c0 xor %eax,%eax 0.00 : 529762: e8 39 31 25 00 callq 77c8a0 0.00 : 529767: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52976c: 89 c3 mov %eax,%ebx 0.00 : 52976e: e9 ed b0 ff ff jmpq 524860 : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), 0.00 : 529773: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52977a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 529781: 8b 71 f4 mov -0xc(%rcx),%esi 0.00 : 529784: 8b 7b e8 mov -0x18(%rbx),%edi 0.00 : 529787: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52978e: e8 7d 74 fe ff callq 510c10 0.00 : 529793: 31 f6 xor %esi,%esi 0.00 : 529795: 48 89 c7 mov %rax,%rdi 0.00 : 529798: e8 b3 80 0b 00 callq 5e1850 0.00 : 52979d: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5297a2: 48 89 c3 mov %rax,%rbx 0.00 : 5297a5: bf ff 7f 00 00 mov $0x7fff,%edi 0.00 : 5297aa: e8 61 74 fe ff callq 510c10 0.00 : 5297af: 48 89 de mov %rbx,%rsi 0.00 : 5297b2: 48 89 c7 mov %rax,%rdi 0.00 : 5297b5: e8 96 80 0b 00 callq 5e1850 0.00 : 5297ba: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 5297bf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5297c6: e9 28 83 fe ff jmpq 511af3 : else if (strcmp($1, "nocreateuser") == 0) : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); : } : else if (strcmp($1, "createrole") == 0) 0.00 : 5297cb: bf 46 94 7c 00 mov $0x7c9446,%edi 0.00 : 5297d0: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5297d5: 4c 89 c6 mov %r8,%rsi 0.00 : 5297d8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5297da: 0f 85 b7 00 00 00 jne 529897 : $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE)); 0.00 : 5297e0: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5297e5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5297ec: e8 5f 5f 0d 00 callq 5ff750 0.00 : 5297f1: bf 46 94 7c 00 mov $0x7c9446,%edi 0.00 : 5297f6: 48 89 c6 mov %rax,%rsi 0.00 : 5297f9: e8 02 7d 0c 00 callq 5f1500 0.00 : 5297fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529805: 49 89 c6 mov %rax,%r14 0.00 : 529808: e9 73 81 fe ff jmpq 511980 : { : $$ = $1; : if ($5 != NIL) : { : if (list_length($5) != 1) : ereport(ERROR, 0.00 : 52980d: 45 31 c0 xor %r8d,%r8d 0.00 : 529810: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529815: ba 62 29 00 00 mov $0x2962,%edx 0.00 : 52981a: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52981f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529824: e8 97 12 25 00 callq 77aac0 0.00 : 529829: 84 c0 test %al,%al 0.00 : 52982b: 0f 84 76 87 fe ff je 511fa7 0.00 : 529831: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529838: 8b 79 f0 mov -0x10(%rcx),%edi 0.00 : 52983b: e9 0c ff ff ff jmpq 52974c : errmsg("interval precision specified twice"), : parser_errposition(@1))); : $$->typmods = lappend($5, makeIntConst($3, @3)); : } : else : $$->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), 0.00 : 529840: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529847: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52984e: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 529851: 8b 7b f0 mov -0x10(%rbx),%edi 0.00 : 529854: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52985b: e8 b0 73 fe ff callq 510c10 0.00 : 529860: 31 f6 xor %esi,%esi 0.00 : 529862: 48 89 c7 mov %rax,%rdi 0.00 : 529865: e8 e6 7f 0b 00 callq 5e1850 0.00 : 52986a: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 52986f: 48 89 c3 mov %rax,%rbx 0.00 : 529872: bf ff 7f 00 00 mov $0x7fff,%edi 0.00 : 529877: e8 94 73 fe ff callq 510c10 0.00 : 52987c: 48 89 de mov %rbx,%rsi 0.00 : 52987f: 48 89 c7 mov %rax,%rdi 0.00 : 529882: e8 c9 7f 0b 00 callq 5e1850 0.00 : 529887: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 52988b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529892: e9 e9 80 fe ff jmpq 511980 : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); : } : else if (strcmp($1, "createrole") == 0) : $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreaterole") == 0) 0.00 : 529897: bf 44 94 7c 00 mov $0x7c9444,%edi 0.00 : 52989c: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 5298a1: 4c 89 c6 mov %r8,%rsi 0.00 : 5298a4: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5298a6: 75 2a jne 5298d2 : $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE)); 0.00 : 5298a8: 31 ff xor %edi,%edi 0.00 : 5298aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5298b1: e8 9a 5e 0d 00 callq 5ff750 0.00 : 5298b6: bf 46 94 7c 00 mov $0x7c9446,%edi 0.00 : 5298bb: 48 89 c6 mov %rax,%rsi 0.00 : 5298be: e8 3d 7c 0c 00 callq 5f1500 0.00 : 5298c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5298ca: 49 89 c6 mov %rax,%r14 0.00 : 5298cd: e9 ae 80 fe ff jmpq 511980 : else if (strcmp($1, "replication") == 0) 0.00 : 5298d2: bf 61 94 7c 00 mov $0x7c9461,%edi 0.00 : 5298d7: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 5298dc: 4c 89 c6 mov %r8,%rsi 0.00 : 5298df: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5298e1: 0f 85 d6 00 00 00 jne 5299bd : $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE)); 0.00 : 5298e7: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5298ec: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5298f3: e8 58 5e 0d 00 callq 5ff750 0.00 : 5298f8: bf 51 94 7c 00 mov $0x7c9451,%edi 0.00 : 5298fd: 48 89 c6 mov %rax,%rsi 0.00 : 529900: e8 fb 7b 0c 00 callq 5f1500 0.00 : 529905: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52990c: 49 89 c6 mov %rax,%r14 0.00 : 52990f: e9 6c 80 fe ff jmpq 511980 : n->is_from = $6; : n->is_program = $7; : n->filename = $8; : : if (n->is_program && n->filename == NULL) : ereport(ERROR, 0.00 : 529914: 45 31 c0 xor %r8d,%r8d 0.00 : 529917: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52991c: ba 07 0a 00 00 mov $0xa07,%edx 0.00 : 529921: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529926: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52992b: e8 90 11 25 00 callq 77aac0 0.00 : 529930: 84 c0 test %al,%al 0.00 : 529932: 0f 84 6f 86 fe ff je 511fa7 0.00 : 529938: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52993f: 8b 78 f4 mov -0xc(%rax),%edi : n->is_program = $4; : n->filename = $5; : n->options = $7; : : if (n->is_program && n->filename == NULL) : ereport(ERROR, 0.00 : 529942: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529949: e8 52 43 fe ff callq 50dca0 0.00 : 52994e: bf 30 9f 7c 00 mov $0x7c9f30,%edi 0.00 : 529953: 41 89 c4 mov %eax,%r12d 0.00 : 529956: 31 c0 xor %eax,%eax 0.00 : 529958: e8 43 2f 25 00 callq 77c8a0 0.00 : 52995d: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529962: 89 c3 mov %eax,%ebx 0.00 : 529964: e9 f7 ae ff ff jmpq 524860 : TypeName *t = $1; : if ($3 != NIL) : { : A_Const *n = (A_Const *) linitial($3); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) : ereport(ERROR, 0.00 : 529969: 45 31 c0 xor %r8d,%r8d 0.00 : 52996c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529971: ba 0e 06 00 00 mov $0x60e,%edx : TypeName *t = $1; : if ($6 != NIL) : { : A_Const *n = (A_Const *) linitial($6); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) : ereport(ERROR, 0.00 : 529976: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52997b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529980: e8 3b 11 25 00 callq 77aac0 0.00 : 529985: 84 c0 test %al,%al 0.00 : 529987: 0f 84 1a 86 fe ff je 511fa7 0.00 : 52998d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529994: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52999b: 8b 38 mov (%rax),%edi 0.00 : 52999d: e8 fe 42 fe ff callq 50dca0 0.00 : 5299a2: bf d0 9e 7c 00 mov $0x7c9ed0,%edi 0.00 : 5299a7: 41 89 c4 mov %eax,%r12d 0.00 : 5299aa: 31 c0 xor %eax,%eax 0.00 : 5299ac: e8 ef 2e 25 00 callq 77c8a0 0.00 : 5299b1: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 5299b6: 89 c3 mov %eax,%ebx 0.00 : 5299b8: e9 a3 ae ff ff jmpq 524860 : $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreaterole") == 0) : $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "replication") == 0) : $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "noreplication") == 0) 0.00 : 5299bd: bf 5f 94 7c 00 mov $0x7c945f,%edi 0.00 : 5299c2: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : 5299c7: 4c 89 c6 mov %r8,%rsi 0.00 : 5299ca: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5299cc: 75 2a jne 5299f8 : $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE)); 0.00 : 5299ce: 31 ff xor %edi,%edi 0.00 : 5299d0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5299d7: e8 74 5d 0d 00 callq 5ff750 0.00 : 5299dc: bf 51 94 7c 00 mov $0x7c9451,%edi 0.00 : 5299e1: 48 89 c6 mov %rax,%rsi 0.00 : 5299e4: e8 17 7b 0c 00 callq 5f1500 0.00 : 5299e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5299f0: 49 89 c6 mov %rax,%r14 0.00 : 5299f3: e9 88 7f fe ff jmpq 511980 : else if (strcmp($1, "createdb") == 0) 0.00 : 5299f8: bf 6f 94 7c 00 mov $0x7c946f,%edi 0.00 : 5299fd: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 529a02: 4c 89 c6 mov %r8,%rsi 0.00 : 529a05: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529a07: 75 2d jne 529a36 : $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE)); 0.00 : 529a09: bf 01 00 00 00 mov $0x1,%edi 0.00 : 529a0e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529a15: e8 36 5d 0d 00 callq 5ff750 0.00 : 529a1a: bf 6f 94 7c 00 mov $0x7c946f,%edi 0.00 : 529a1f: 48 89 c6 mov %rax,%rsi 0.00 : 529a22: e8 d9 7a 0c 00 callq 5f1500 0.00 : 529a27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529a2e: 49 89 c6 mov %rax,%r14 0.00 : 529a31: e9 4a 7f fe ff jmpq 511980 : else if (strcmp($1, "nocreatedb") == 0) 0.00 : 529a36: bf 6d 94 7c 00 mov $0x7c946d,%edi 0.00 : 529a3b: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 529a40: 4c 89 c6 mov %r8,%rsi 0.00 : 529a43: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529a45: 0f 85 8f 04 00 00 jne 529eda : $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE)); 0.00 : 529a4b: 31 ff xor %edi,%edi 0.00 : 529a4d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529a54: e8 f7 5c 0d 00 callq 5ff750 0.00 : 529a59: bf 6f 94 7c 00 mov $0x7c946f,%edi 0.00 : 529a5e: 48 89 c6 mov %rax,%rsi 0.00 : 529a61: e8 9a 7a 0c 00 callq 5f1500 0.00 : 529a66: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529a6d: 49 89 c6 mov %rax,%r14 0.00 : 529a70: e9 0b 7f fe ff jmpq 511980 : n->schemaname = $6; : else : n->schemaname = $8; : n->authid = $8; : if ($9 != NIL) : ereport(ERROR, 0.00 : 529a75: 45 31 c0 xor %r8d,%r8d 0.00 : 529a78: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529a7d: ba f2 04 00 00 mov $0x4f2,%edx 0.00 : 529a82: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529a87: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529a8c: e8 2f 10 25 00 callq 77aac0 0.00 : 529a91: 84 c0 test %al,%al 0.00 : 529a93: 0f 84 0e 85 fe ff je 511fa7 0.00 : 529a99: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529aa0: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529aa7: 8b 3b mov (%rbx),%edi 0.00 : 529aa9: e9 6f 01 00 00 jmpq 529c1d : int ndirectargs; : : /* No restriction unless last direct arg is VARIADIC */ : if (lastd->mode == FUNC_PARAM_VARIADIC) : { : FunctionParameter *firsto = (FunctionParameter *) linitial(orderedargs); 0.00 : 529aae: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 529ab2: e9 79 f8 ff ff jmpq 529330 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use DISTINCT with WITHIN GROUP"), : parser_errposition(@2))); : if (n->func_variadic) : ereport(ERROR, 0.00 : 529ab7: 45 31 c0 xor %r8d,%r8d 0.00 : 529aba: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529abf: ba a5 2d 00 00 mov $0x2da5,%edx 0.00 : 529ac4: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529ac9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529ace: e8 ed 0f 25 00 callq 77aac0 0.00 : 529ad3: 84 c0 test %al,%al 0.00 : 529ad5: 0f 84 cc 84 fe ff je 511fa7 0.00 : 529adb: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529ae2: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ae9: 8b 78 f8 mov -0x8(%rax),%edi 0.00 : 529aec: e8 af 41 fe ff callq 50dca0 0.00 : 529af1: bf a0 a4 7c 00 mov $0x7ca4a0,%edi 0.00 : 529af6: 41 89 c4 mov %eax,%r12d 0.00 : 529af9: 31 c0 xor %eax,%eax 0.00 : 529afb: e8 a0 2d 25 00 callq 77c8a0 0.00 : 529b00: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529b05: 89 c3 mov %eax,%ebx 0.00 : 529b07: e9 54 ad ff ff jmpq 524860 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), : parser_errposition(@2))); : if (n->agg_distinct) : ereport(ERROR, 0.00 : 529b0c: 45 31 c0 xor %r8d,%r8d 0.00 : 529b0f: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529b14: ba a0 2d 00 00 mov $0x2da0,%edx 0.00 : 529b19: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529b1e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529b23: e8 98 0f 25 00 callq 77aac0 0.00 : 529b28: 84 c0 test %al,%al 0.00 : 529b2a: 0f 84 77 84 fe ff je 511fa7 0.00 : 529b30: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 529b37: 8b 7e f8 mov -0x8(%rsi),%edi 0.00 : 529b3a: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529b41: e8 5a 41 fe ff callq 50dca0 0.00 : 529b46: bf 78 a4 7c 00 mov $0x7ca478,%edi 0.00 : 529b4b: 41 89 c4 mov %eax,%r12d 0.00 : 529b4e: 31 c0 xor %eax,%eax 0.00 : 529b50: e8 4b 2d 25 00 callq 77c8a0 0.00 : 529b55: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529b5a: 89 c3 mov %eax,%ebx 0.00 : 529b5c: e9 ff ac ff ff jmpq 524860 : * parse analysis. : */ : if ($2 != NIL) : { : if (n->agg_order != NIL) : ereport(ERROR, 0.00 : 529b61: 45 31 c0 xor %r8d,%r8d 0.00 : 529b64: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529b69: ba 9b 2d 00 00 mov $0x2d9b,%edx 0.00 : 529b6e: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529b73: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529b78: e8 43 0f 25 00 callq 77aac0 0.00 : 529b7d: 84 c0 test %al,%al 0.00 : 529b7f: 0f 84 22 84 fe ff je 511fa7 0.00 : 529b85: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529b8c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529b93: 8b 7b f8 mov -0x8(%rbx),%edi 0.00 : 529b96: e8 05 41 fe ff callq 50dca0 0.00 : 529b9b: bf 40 a4 7c 00 mov $0x7ca440,%edi 0.00 : 529ba0: 41 89 c4 mov %eax,%r12d 0.00 : 529ba3: 31 c0 xor %eax,%eax 0.00 : 529ba5: e8 f6 2c 25 00 callq 77c8a0 0.00 : 529baa: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529baf: 89 c3 mov %eax,%ebx 0.00 : 529bb1: e9 aa ac ff ff jmpq 524860 : n->is_program = $4; : n->filename = $5; : n->options = $7; : : if (n->is_program && n->filename == NULL) : ereport(ERROR, 0.00 : 529bb6: 45 31 c0 xor %r8d,%r8d 0.00 : 529bb9: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529bbe: ba 24 0a 00 00 mov $0xa24,%edx 0.00 : 529bc3: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529bc8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529bcd: e8 ee 0e 25 00 callq 77aac0 0.00 : 529bd2: 84 c0 test %al,%al 0.00 : 529bd4: 0f 84 cd 83 fe ff je 511fa7 0.00 : 529bda: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529be1: 8b 7b f8 mov -0x8(%rbx),%edi 0.00 : 529be4: e9 59 fd ff ff jmpq 529942 : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $6; : n->authid = NULL; : if ($7 != NIL) : ereport(ERROR, 0.00 : 529be9: 45 31 c0 xor %r8d,%r8d 0.00 : 529bec: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529bf1: ba 01 05 00 00 mov $0x501,%edx 0.00 : 529bf6: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529bfb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529c00: e8 bb 0e 25 00 callq 77aac0 0.00 : 529c05: 84 c0 test %al,%al 0.00 : 529c07: 0f 84 9a 83 fe ff je 511fa7 0.00 : 529c0d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529c14: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529c1b: 8b 38 mov (%rax),%edi 0.00 : 529c1d: e8 7e 40 fe ff callq 50dca0 0.00 : 529c22: bf 68 9e 7c 00 mov $0x7c9e68,%edi 0.00 : 529c27: 41 89 c4 mov %eax,%r12d 0.00 : 529c2a: 31 c0 xor %eax,%eax 0.00 : 529c2c: e8 6f 2c 25 00 callq 77c8a0 0.00 : 529c31: bf 40 04 00 00 mov $0x440,%edi 0.00 : 529c36: 89 c3 mov %eax,%ebx 0.00 : 529c38: e9 23 ac ff ff jmpq 524860 : n->subquery = $2; : n->alias = $3; : /* same coment as above */ : if ($3 == NULL) : { : if (IsA($2, SelectStmt) && 0.00 : 529c3d: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 529c41: 81 38 c1 02 00 00 cmpl $0x2c1,(%rax) 0.00 : 529c47: 75 0b jne 529c54 0.00 : 529c49: 48 83 78 48 00 cmpq $0x0,0x48(%rax) 0.00 : 529c4e: 0f 85 cc 00 00 00 jne 529d20 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("VALUES in FROM must have an alias"), : errhint("For example, FROM (VALUES ...) [AS] foo."), : parser_errposition(@2))); : else : ereport(ERROR, 0.00 : 529c54: 45 31 c0 xor %r8d,%r8d 0.00 : 529c57: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529c5c: ba ad 27 00 00 mov $0x27ad,%edx 0.00 : 529c61: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529c66: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529c6b: e8 50 0e 25 00 callq 77aac0 0.00 : 529c70: 84 c0 test %al,%al 0.00 : 529c72: 0f 84 2f 83 fe ff je 511fa7 0.00 : 529c78: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 529c7f: 8b 7e fc mov -0x4(%rsi),%edi 0.00 : 529c82: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529c89: e8 12 40 fe ff callq 50dca0 0.00 : 529c8e: bf d8 a2 7c 00 mov $0x7ca2d8,%edi 0.00 : 529c93: 41 89 c5 mov %eax,%r13d 0.00 : 529c96: 31 c0 xor %eax,%eax 0.00 : 529c98: e8 03 20 25 00 callq 77bca0 0.00 : 529c9d: bf 08 a3 7c 00 mov $0x7ca308,%edi 0.00 : 529ca2: 89 c3 mov %eax,%ebx 0.00 : 529ca4: e9 67 38 ff ff jmpq 51d510 : * However, it does seem like a good idea to emit : * an error message that's better than "syntax error". : */ : if ($2 == NULL) : { : if (IsA($1, SelectStmt) && 0.00 : 529ca9: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 529cad: 81 38 c1 02 00 00 cmpl $0x2c1,(%rax) 0.00 : 529cb3: 75 07 jne 529cbc 0.00 : 529cb5: 48 83 78 48 00 cmpq $0x0,0x48(%rax) 0.00 : 529cba: 75 0f jne 529ccb : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("VALUES in FROM must have an alias"), : errhint("For example, FROM (VALUES ...) [AS] foo."), : parser_errposition(@1))); : else : ereport(ERROR, 0.00 : 529cbc: 45 31 c0 xor %r8d,%r8d 0.00 : 529cbf: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529cc4: ba 94 27 00 00 mov $0x2794,%edx 0.00 : 529cc9: eb 96 jmp 529c61 : */ : if ($2 == NULL) : { : if (IsA($1, SelectStmt) && : ((SelectStmt *) $1)->valuesLists) : ereport(ERROR, 0.00 : 529ccb: 45 31 c0 xor %r8d,%r8d 0.00 : 529cce: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529cd3: ba 8e 27 00 00 mov $0x278e,%edx : /* same coment as above */ : if ($3 == NULL) : { : if (IsA($2, SelectStmt) && : ((SelectStmt *) $2)->valuesLists) : ereport(ERROR, 0.00 : 529cd8: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529cdd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529ce2: e8 d9 0d 25 00 callq 77aac0 0.00 : 529ce7: 84 c0 test %al,%al 0.00 : 529ce9: 0f 84 b8 82 fe ff je 511fa7 0.00 : 529cef: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529cf6: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529cfd: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 529d00: e8 9b 3f fe ff callq 50dca0 0.00 : 529d05: bf 80 a2 7c 00 mov $0x7ca280,%edi 0.00 : 529d0a: 41 89 c5 mov %eax,%r13d 0.00 : 529d0d: 31 c0 xor %eax,%eax 0.00 : 529d0f: e8 8c 1f 25 00 callq 77bca0 0.00 : 529d14: bf b0 a2 7c 00 mov $0x7ca2b0,%edi 0.00 : 529d19: 89 c3 mov %eax,%ebx 0.00 : 529d1b: e9 f0 37 ff ff jmpq 51d510 0.00 : 529d20: 45 31 c0 xor %r8d,%r8d 0.00 : 529d23: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529d28: ba a7 27 00 00 mov $0x27a7,%edx 0.00 : 529d2d: eb a9 jmp 529cd8 : TypeName *t = $1; : if ($6 != NIL) : { : A_Const *n = (A_Const *) linitial($6); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) : ereport(ERROR, 0.00 : 529d2f: 45 31 c0 xor %r8d,%r8d 0.00 : 529d32: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529d37: ba 1d 06 00 00 mov $0x61d,%edx 0.00 : 529d3c: e9 35 fc ff ff jmpq 529976 : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), 0.00 : 529d41: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529d48: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529d4f: 8b 7a e8 mov -0x18(%rdx),%edi 0.00 : 529d52: 8b 70 f4 mov -0xc(%rax),%esi 0.00 : 529d55: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529d5c: e8 af 6e fe ff callq 510c10 0.00 : 529d61: 31 f6 xor %esi,%esi 0.00 : 529d63: 48 89 c7 mov %rax,%rdi 0.00 : 529d66: e8 e5 7a 0b 00 callq 5e1850 0.00 : 529d6b: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 529d70: 48 89 c3 mov %rax,%rbx 0.00 : 529d73: bf ff 7f 00 00 mov $0x7fff,%edi 0.00 : 529d78: e8 93 6e fe ff callq 510c10 0.00 : 529d7d: 48 89 de mov %rbx,%rsi 0.00 : 529d80: 48 89 c7 mov %rax,%rdi 0.00 : 529d83: e8 c8 7a 0b 00 callq 5e1850 0.00 : 529d88: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 529d8d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529d94: e9 b2 de ff ff jmpq 527c4b : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@6))); : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 529d99: 45 31 c0 xor %r8d,%r8d 0.00 : 529d9c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529da1: ba 22 06 00 00 mov $0x622,%edx 0.00 : 529da6: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529dab: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529db0: e8 0b 0d 25 00 callq 77aac0 0.00 : 529db5: 84 c0 test %al,%al 0.00 : 529db7: 0f 84 ea 81 fe ff je 511fa7 0.00 : 529dbd: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 529dc4: 8b 7a ec mov -0x14(%rdx),%edi 0.00 : 529dc7: e9 80 f9 ff ff jmpq 52974c : else if ($2 <= 24) : $$ = SystemTypeName("float4"); : else if ($2 <= 53) : $$ = SystemTypeName("float8"); : else : ereport(ERROR, 0.00 : 529dcc: 45 31 c0 xor %r8d,%r8d 0.00 : 529dcf: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529dd4: ba e9 29 00 00 mov $0x29e9,%edx 0.00 : 529dd9: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529dde: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529de3: e8 d8 0c 25 00 callq 77aac0 0.00 : 529de8: 84 c0 test %al,%al 0.00 : 529dea: 0f 84 b7 81 fe ff je 511fa7 0.00 : 529df0: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 529df7: 8b 7e fc mov -0x4(%rsi),%edi 0.00 : 529dfa: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529e01: e8 9a 3e fe ff callq 50dca0 0.00 : 529e06: bf 60 a3 7c 00 mov $0x7ca360,%edi 0.00 : 529e0b: 41 89 c4 mov %eax,%r12d 0.00 : 529e0e: 31 c0 xor %eax,%eax 0.00 : 529e10: e8 8b 2a 25 00 callq 77c8a0 0.00 : 529e15: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 529e1a: 89 c3 mov %eax,%ebx 0.00 : 529e1c: e9 3f aa ff ff jmpq 524860 : errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), : parser_errposition(@2))); : /* generic message for other conflicts */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || : (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) : ereport(ERROR, 0.00 : 529e21: 45 31 c0 xor %r8d,%r8d 0.00 : 529e24: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529e29: ba ba 12 00 00 mov $0x12ba,%edx 0.00 : 529e2e: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529e33: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529e38: e8 83 0c 25 00 callq 77aac0 0.00 : 529e3d: 84 c0 test %al,%al 0.00 : 529e3f: 0f 84 62 81 fe ff je 511fa7 0.00 : 529e45: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529e4c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529e53: 8b 38 mov (%rax),%edi 0.00 : 529e55: e8 46 3e fe ff callq 50dca0 0.00 : 529e5a: bf 20 a0 7c 00 mov $0x7ca020,%edi 0.00 : 529e5f: 41 89 c4 mov %eax,%r12d 0.00 : 529e62: 31 c0 xor %eax,%eax 0.00 : 529e64: e8 37 2a 25 00 callq 77c8a0 0.00 : 529e69: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529e6e: 89 c3 mov %eax,%ebx 0.00 : 529e70: e9 eb a9 ff ff jmpq 524860 : */ : int newspec = $1 | $2; : : /* special message for this case */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) : ereport(ERROR, 0.00 : 529e75: 45 31 c0 xor %r8d,%r8d 0.00 : 529e78: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529e7d: ba b3 12 00 00 mov $0x12b3,%edx 0.00 : 529e82: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529e87: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529e8c: e8 2f 0c 25 00 callq 77aac0 0.00 : 529e91: 84 c0 test %al,%al 0.00 : 529e93: 0f 84 0e 81 fe ff je 511fa7 0.00 : 529e99: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529ea0: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ea7: 8b 3b mov (%rbx),%edi 0.00 : 529ea9: e8 f2 3d fe ff callq 50dca0 0.00 : 529eae: bf e0 9f 7c 00 mov $0x7c9fe0,%edi 0.00 : 529eb3: 41 89 c4 mov %eax,%r12d 0.00 : 529eb6: 31 c0 xor %eax,%eax 0.00 : 529eb8: e8 e3 29 25 00 callq 77c8a0 0.00 : 529ebd: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529ec2: 89 c3 mov %eax,%ebx 0.00 : 529ec4: e9 97 a9 ff ff jmpq 524860 : int events2 = intVal(linitial($3)); : List *columns1 = (List *) lsecond($1); : List *columns2 = (List *) lsecond($3); : : if (events1 & events2) : parser_yyerror("duplicate trigger events specified"); 0.00 : 529ec9: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ed0: bf b8 9f 7c 00 mov $0x7c9fb8,%edi 0.00 : 529ed5: e8 f6 3d fe ff callq 50dcd0 : $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "createdb") == 0) : $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreatedb") == 0) : $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "login") == 0) 0.00 : 529eda: bf 7b 94 7c 00 mov $0x7c947b,%edi 0.00 : 529edf: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 529ee4: 4c 89 c6 mov %r8,%rsi 0.00 : 529ee7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529ee9: 0f 85 fb 02 00 00 jne 52a1ea : $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); 0.00 : 529eef: bf 01 00 00 00 mov $0x1,%edi 0.00 : 529ef4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529efb: e8 50 58 0d 00 callq 5ff750 0.00 : 529f00: bf 78 94 7c 00 mov $0x7c9478,%edi 0.00 : 529f05: 48 89 c6 mov %rax,%rsi 0.00 : 529f08: e8 f3 75 0c 00 callq 5f1500 0.00 : 529f0d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529f14: 49 89 c6 mov %rax,%r14 0.00 : 529f17: e9 64 7a fe ff jmpq 511980 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on left side of OVERLAPS expression"), : parser_errposition(@1))); : if (list_length($3) != 2) : ereport(ERROR, 0.00 : 529f1c: 45 31 c0 xor %r8d,%r8d 0.00 : 529f1f: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529f24: ba c0 2b 00 00 mov $0x2bc0,%edx 0.00 : 529f29: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529f2e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529f33: e8 88 0b 25 00 callq 77aac0 0.00 : 529f38: 84 c0 test %al,%al 0.00 : 529f3a: 0f 84 67 80 fe ff je 511fa7 0.00 : 529f40: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 529f47: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529f4e: 8b 3a mov (%rdx),%edi 0.00 : 529f50: e8 4b 3d fe ff callq 50dca0 0.00 : 529f55: bf d8 a3 7c 00 mov $0x7ca3d8,%edi 0.00 : 529f5a: 41 89 c4 mov %eax,%r12d 0.00 : 529f5d: 31 c0 xor %eax,%eax 0.00 : 529f5f: e8 3c 29 25 00 callq 77c8a0 0.00 : 529f64: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529f69: 89 c3 mov %eax,%ebx 0.00 : 529f6b: e9 f0 a8 ff ff jmpq 524860 : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame end cannot be UNBOUNDED PRECEDING"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && : (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, 0.00 : 529f70: 45 31 c0 xor %r8d,%r8d 0.00 : 529f73: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529f78: ba e2 2f 00 00 mov $0x2fe2,%edx 0.00 : 529f7d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529f82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529f87: e8 34 0b 25 00 callq 77aac0 0.00 : 529f8c: 84 c0 test %al,%al 0.00 : 529f8e: 0f 84 13 80 fe ff je 511fa7 0.00 : 529f94: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529f9b: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529fa2: 8b 3b mov (%rbx),%edi 0.00 : 529fa4: e8 f7 3c fe ff callq 50dca0 0.00 : 529fa9: bf d0 a5 7c 00 mov $0x7ca5d0,%edi 0.00 : 529fae: 41 89 c4 mov %eax,%r12d 0.00 : 529fb1: 31 c0 xor %eax,%eax 0.00 : 529fb3: e8 e8 28 25 00 callq 77c8a0 0.00 : 529fb8: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 529fbd: 89 c3 mov %eax,%ebx 0.00 : 529fbf: e9 9c a8 ff ff jmpq 524860 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RANGE PRECEDING is only supported with UNBOUNDED"), : parser_errposition(@1))); : if (n->frameOptions & (FRAMEOPTION_START_VALUE_FOLLOWING | : FRAMEOPTION_END_VALUE_FOLLOWING)) : ereport(ERROR, 0.00 : 529fc4: 45 31 c0 xor %r8d,%r8d 0.00 : 529fc7: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529fcc: ba a5 2f 00 00 mov $0x2fa5,%edx 0.00 : 529fd1: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529fd6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529fdb: e8 e0 0a 25 00 callq 77aac0 0.00 : 529fe0: 84 c0 test %al,%al 0.00 : 529fe2: 0f 84 bf 7f fe ff je 511fa7 0.00 : 529fe8: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529fef: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ff6: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 529ff9: e8 a2 3c fe ff callq 50dca0 0.00 : 529ffe: bf 00 a5 7c 00 mov $0x7ca500,%edi 0.00 : 52a003: 41 89 c4 mov %eax,%r12d 0.00 : 52a006: 31 c0 xor %eax,%eax 0.00 : 52a008: e8 93 28 25 00 callq 77c8a0 0.00 : 52a00d: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52a012: 89 c3 mov %eax,%ebx 0.00 : 52a014: e9 47 a8 ff ff jmpq 524860 : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); : n->replace = true; : n->options = $11; : n->withCheckOption = $14; : if (n->withCheckOption != NO_CHECK_OPTION) : ereport(ERROR, 0.00 : 52a019: 45 31 c0 xor %r8d,%r8d 0.00 : 52a01c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a021: ba 24 21 00 00 mov $0x2124,%edx 0.00 : 52a026: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a02b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a030: e8 8b 0a 25 00 callq 77aac0 0.00 : 52a035: 84 c0 test %al,%al 0.00 : 52a037: 0f 84 6a 7f fe ff je 511fa7 0.00 : 52a03d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a044: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a04b: 8b 38 mov (%rax),%edi 0.00 : 52a04d: e8 4e 3c fe ff callq 50dca0 0.00 : 52a052: bf c0 a1 7c 00 mov $0x7ca1c0,%edi 0.00 : 52a057: 41 89 c4 mov %eax,%r12d 0.00 : 52a05a: 31 c0 xor %eax,%eax 0.00 : 52a05c: e8 3f 28 25 00 callq 77c8a0 0.00 : 52a061: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52a066: 89 c3 mov %eax,%ebx 0.00 : 52a068: e9 f3 a7 ff ff jmpq 524860 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("type modifier cannot have parameter name"), : parser_errposition(arg->location))); : } : if ($4 != NIL) : ereport(ERROR, 0.00 : 52a06d: 45 31 c0 xor %r8d,%r8d 0.00 : 52a070: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a075: ba 6e 32 00 00 mov $0x326e,%edx 0.00 : 52a07a: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a07f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a084: e8 37 0a 25 00 callq 77aac0 0.00 : 52a089: 84 c0 test %al,%al 0.00 : 52a08b: 0f 84 16 7f fe ff je 511fa7 0.00 : 52a091: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a098: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a09f: 8b 78 f8 mov -0x8(%rax),%edi 0.00 : 52a0a2: e8 f9 3b fe ff callq 50dca0 0.00 : 52a0a7: bf 80 a6 7c 00 mov $0x7ca680,%edi 0.00 : 52a0ac: 41 89 c4 mov %eax,%r12d 0.00 : 52a0af: 31 c0 xor %eax,%eax 0.00 : 52a0b1: e8 ea 27 25 00 callq 77c8a0 0.00 : 52a0b6: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a0bb: 89 c3 mov %eax,%ebx 0.00 : 52a0bd: e9 9e a7 ff ff jmpq 524860 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@2))); : if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) : ereport(ERROR, 0.00 : 52a0c2: 45 31 c0 xor %r8d,%r8d 0.00 : 52a0c5: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a0ca: ba dc 2f 00 00 mov $0x2fdc,%edx 0.00 : 52a0cf: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a0d4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a0d9: e8 e2 09 25 00 callq 77aac0 0.00 : 52a0de: 84 c0 test %al,%al 0.00 : 52a0e0: 0f 84 c1 7e fe ff je 511fa7 0.00 : 52a0e6: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52a0ed: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a0f4: 8b 39 mov (%rcx),%edi 0.00 : 52a0f6: e8 a5 3b fe ff callq 50dca0 0.00 : 52a0fb: bf a8 a5 7c 00 mov $0x7ca5a8,%edi 0.00 : 52a100: 41 89 c4 mov %eax,%r12d 0.00 : 52a103: 31 c0 xor %eax,%eax 0.00 : 52a105: e8 96 27 25 00 callq 77c8a0 0.00 : 52a10a: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a10f: 89 c3 mov %eax,%ebx 0.00 : 52a111: e9 4a a7 ff ff jmpq 524860 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@1))); : if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) : ereport(ERROR, 0.00 : 52a116: 45 31 c0 xor %r8d,%r8d 0.00 : 52a119: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a11e: ba c5 2f 00 00 mov $0x2fc5,%edx 0.00 : 52a123: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a128: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a12d: e8 8e 09 25 00 callq 77aac0 0.00 : 52a132: 84 c0 test %al,%al 0.00 : 52a134: 0f 84 6d 7e fe ff je 511fa7 0.00 : 52a13a: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52a141: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a148: 8b 3b mov (%rbx),%edi 0.00 : 52a14a: e8 51 3b fe ff callq 50dca0 0.00 : 52a14f: bf 68 a5 7c 00 mov $0x7ca568,%edi 0.00 : 52a154: 41 89 c4 mov %eax,%r12d 0.00 : 52a157: 31 c0 xor %eax,%eax 0.00 : 52a159: e8 42 27 25 00 callq 77c8a0 0.00 : 52a15e: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a163: 89 c3 mov %eax,%ebx 0.00 : 52a165: e9 f6 a6 ff ff jmpq 524860 : : /* : * We ignore the names, though the aggr_arg production allows them; : * it doesn't allow default values, so those need not be checked. : */ : if (list_length(orderedargs) != 1 || 0.00 : 52a16a: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 52a16e: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 52a172: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a179: e8 52 0f 0c 00 callq 5eb0d0 0.00 : 52a17e: 84 c0 test %al,%al 0.00 : 52a180: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a187: 0f 84 a3 f1 ff ff je 529330 : firsto->mode != FUNC_PARAM_VARIADIC || : !equal(lastd->argType, firsto->argType)) : ereport(ERROR, 0.00 : 52a18d: 45 31 e4 xor %r12d,%r12d 0.00 : 52a190: e9 45 3c ff ff jmpq 51ddda : $$ = (Node *)n; : } : | row OVERLAPS row : { : if (list_length($1) != 2) : ereport(ERROR, 0.00 : 52a195: 45 31 c0 xor %r8d,%r8d 0.00 : 52a198: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a19d: ba bb 2b 00 00 mov $0x2bbb,%edx 0.00 : 52a1a2: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a1a7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a1ac: e8 0f 09 25 00 callq 77aac0 0.00 : 52a1b1: 84 c0 test %al,%al 0.00 : 52a1b3: 0f 84 ee 7d fe ff je 511fa7 0.00 : 52a1b9: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 52a1c0: 8b 7e f8 mov -0x8(%rsi),%edi 0.00 : 52a1c3: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a1ca: e8 d1 3a fe ff callq 50dca0 0.00 : 52a1cf: bf 98 a3 7c 00 mov $0x7ca398,%edi 0.00 : 52a1d4: 41 89 c4 mov %eax,%r12d 0.00 : 52a1d7: 31 c0 xor %eax,%eax 0.00 : 52a1d9: e8 c2 26 25 00 callq 77c8a0 0.00 : 52a1de: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a1e3: 89 c3 mov %eax,%ebx 0.00 : 52a1e5: e9 76 a6 ff ff jmpq 524860 : $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreatedb") == 0) : $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "login") == 0) : $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nologin") == 0) 0.00 : 52a1ea: bf 81 94 7c 00 mov $0x7c9481,%edi 0.00 : 52a1ef: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 52a1f4: 4c 89 c6 mov %r8,%rsi 0.00 : 52a1f7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a1f9: 75 2a jne 52a225 : $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); 0.00 : 52a1fb: 31 ff xor %edi,%edi 0.00 : 52a1fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a204: e8 47 55 0d 00 callq 5ff750 0.00 : 52a209: bf 78 94 7c 00 mov $0x7c9478,%edi 0.00 : 52a20e: 48 89 c6 mov %rax,%rsi 0.00 : 52a211: e8 ea 72 0c 00 callq 5f1500 0.00 : 52a216: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a21d: 49 89 c6 mov %rax,%r14 0.00 : 52a220: e9 5b 77 fe ff jmpq 511980 : else if (strcmp($1, "bypassrls") == 0) 0.00 : 52a225: bf 8b 94 7c 00 mov $0x7c948b,%edi 0.00 : 52a22a: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 52a22f: 4c 89 c6 mov %r8,%rsi 0.00 : 52a232: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a234: 0f 85 87 00 00 00 jne 52a2c1 : $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); 0.00 : 52a23a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 52a23f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a246: e8 05 55 0d 00 callq 5ff750 0.00 : 52a24b: bf 8b 94 7c 00 mov $0x7c948b,%edi 0.00 : 52a250: 48 89 c6 mov %rax,%rsi 0.00 : 52a253: e8 a8 72 0c 00 callq 5f1500 0.00 : 52a258: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a25f: 49 89 c6 mov %rax,%r14 0.00 : 52a262: e9 19 77 fe ff jmpq 511980 : $$->catalogname = $1; : $$->schemaname = strVal(linitial($2)); : $$->relname = strVal(lsecond($2)); : break; : default: : ereport(ERROR, 0.00 : 52a267: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a26e: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a275: 8b 78 fc mov -0x4(%rax),%edi 0.00 : 52a278: e8 23 3a fe ff callq 50dca0 0.00 : 52a27d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52a284: 41 89 c4 mov %eax,%r12d 0.00 : 52a287: 48 8b 1a mov (%rdx),%rbx 0.00 : 52a28a: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 52a28e: e8 5d 54 0d 00 callq 5ff6f0 0.00 : 52a293: 48 89 de mov %rbx,%rsi 0.00 : 52a296: 48 89 c7 mov %rax,%rdi 0.00 : 52a299: e8 b2 75 0b 00 callq 5e1850 0.00 : 52a29e: 48 89 c7 mov %rax,%rdi 0.00 : 52a2a1: e8 7a 48 fc ff callq 4eeb20 0.00 : 52a2a6: bf b0 29 7c 00 mov $0x7c29b0,%edi 0.00 : 52a2ab: 48 89 c6 mov %rax,%rsi 0.00 : 52a2ae: 31 c0 xor %eax,%eax 0.00 : 52a2b0: e8 eb 25 25 00 callq 77c8a0 0.00 : 52a2b5: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a2ba: 89 c3 mov %eax,%ebx 0.00 : 52a2bc: e9 9f a5 ff ff jmpq 524860 : $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nologin") == 0) : $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "bypassrls") == 0) : $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nobypassrls") == 0) 0.00 : 52a2c1: bf 89 94 7c 00 mov $0x7c9489,%edi 0.00 : 52a2c6: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 52a2cb: 4c 89 c6 mov %r8,%rsi 0.00 : 52a2ce: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a2d0: 0f 85 d3 00 00 00 jne 52a3a9 : $$ = makeDefElem("bypassrls", (Node *)makeInteger(FALSE)); 0.00 : 52a2d6: 31 ff xor %edi,%edi 0.00 : 52a2d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a2df: e8 6c 54 0d 00 callq 5ff750 0.00 : 52a2e4: bf 8b 94 7c 00 mov $0x7c948b,%edi 0.00 : 52a2e9: 48 89 c6 mov %rax,%rsi 0.00 : 52a2ec: e8 0f 72 0c 00 callq 5f1500 0.00 : 52a2f1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a2f8: 49 89 c6 mov %rax,%r14 0.00 : 52a2fb: e9 80 76 fe ff jmpq 511980 : { : WindowDef *n = $2; : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; : if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | : FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, 0.00 : 52a300: 45 31 c0 xor %r8d,%r8d 0.00 : 52a303: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a308: ba 9f 2f 00 00 mov $0x2f9f,%edx 0.00 : 52a30d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a312: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a317: e8 a4 07 25 00 callq 77aac0 0.00 : 52a31c: 84 c0 test %al,%al 0.00 : 52a31e: 0f 84 83 7c fe ff je 511fa7 0.00 : 52a324: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52a32b: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a332: 8b 79 fc mov -0x4(%rcx),%edi 0.00 : 52a335: e8 66 39 fe ff callq 50dca0 0.00 : 52a33a: bf c8 a4 7c 00 mov $0x7ca4c8,%edi 0.00 : 52a33f: 41 89 c4 mov %eax,%r12d 0.00 : 52a342: 31 c0 xor %eax,%eax 0.00 : 52a344: e8 57 25 25 00 callq 77c8a0 0.00 : 52a349: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52a34e: 89 c3 mov %eax,%ebx 0.00 : 52a350: e9 0b a5 ff ff jmpq 524860 : frame_extent: frame_bound : { : WindowDef *n = $1; : /* reject invalid cases */ : if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) : ereport(ERROR, 0.00 : 52a355: 45 31 c0 xor %r8d,%r8d 0.00 : 52a358: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a35d: ba c0 2f 00 00 mov $0x2fc0,%edx 0.00 : 52a362: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a367: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a36c: e8 4f 07 25 00 callq 77aac0 0.00 : 52a371: 84 c0 test %al,%al 0.00 : 52a373: 0f 84 2e 7c fe ff je 511fa7 0.00 : 52a379: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52a380: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a387: 8b 39 mov (%rcx),%edi : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; : frameOptions |= FRAMEOPTION_BETWEEN; : /* reject invalid cases */ : if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) : ereport(ERROR, 0.00 : 52a389: e8 12 39 fe ff callq 50dca0 0.00 : 52a38e: bf 38 a5 7c 00 mov $0x7ca538,%edi 0.00 : 52a393: 41 89 c4 mov %eax,%r12d 0.00 : 52a396: 31 c0 xor %eax,%eax 0.00 : 52a398: e8 03 25 25 00 callq 77c8a0 0.00 : 52a39d: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a3a2: 89 c3 mov %eax,%ebx 0.00 : 52a3a4: e9 b7 a4 ff ff jmpq 524860 : $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "bypassrls") == 0) : $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nobypassrls") == 0) : $$ = makeDefElem("bypassrls", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "noinherit") == 0) 0.00 : 52a3a9: bf 95 94 7c 00 mov $0x7c9495,%edi 0.00 : 52a3ae: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 52a3b3: 4c 89 c6 mov %r8,%rsi 0.00 : 52a3b6: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a3b8: 75 2a jne 52a3e4 : { : /* : * Note that INHERIT is a keyword, so it's handled by main parser, but : * NOINHERIT is handled here. : */ : $$ = makeDefElem("inherit", (Node *)makeInteger(FALSE)); 0.00 : 52a3ba: 31 ff xor %edi,%edi 0.00 : 52a3bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a3c3: e8 88 53 0d 00 callq 5ff750 0.00 : 52a3c8: bf 1a 15 88 00 mov $0x88151a,%edi 0.00 : 52a3cd: 48 89 c6 mov %rax,%rsi 0.00 : 52a3d0: e8 2b 71 0c 00 callq 5f1500 0.00 : 52a3d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a3dc: 49 89 c6 mov %rax,%r14 0.00 : 52a3df: e9 9c 75 fe ff jmpq 511980 : } : else : ereport(ERROR, 0.00 : 52a3e4: 45 31 c0 xor %r8d,%r8d 0.00 : 52a3e7: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a3ec: ba d8 03 00 00 mov $0x3d8,%edx 0.00 : 52a3f1: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a3f6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a3fb: e8 c0 06 25 00 callq 77aac0 0.00 : 52a400: 84 c0 test %al,%al 0.00 : 52a402: 0f 84 9f 7b fe ff je 511fa7 0.00 : 52a408: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a40f: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a416: 8b 38 mov (%rax),%edi 0.00 : 52a418: e8 83 38 fe ff callq 50dca0 0.00 : 52a41d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52a424: bf 9f 94 7c 00 mov $0x7c949f,%edi 0.00 : 52a429: 41 89 c4 mov %eax,%r12d 0.00 : 52a42c: 31 c0 xor %eax,%eax 0.00 : 52a42e: 48 8b 32 mov (%rdx),%rsi 0.00 : 52a431: e8 6a 24 25 00 callq 77c8a0 0.00 : 52a436: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a43b: 89 c3 mov %eax,%ebx 0.00 : 52a43d: e9 1e a4 ff ff jmpq 524860 : errmsg("frame starting from current row cannot have preceding rows"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && : (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | : FRAMEOPTION_END_CURRENT_ROW))) : ereport(ERROR, 0.00 : 52a442: 45 31 c0 xor %r8d,%r8d 0.00 : 52a445: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a44a: ba e9 2f 00 00 mov $0x2fe9,%edx 0.00 : 52a44f: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a454: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a459: e8 62 06 25 00 callq 77aac0 0.00 : 52a45e: 84 c0 test %al,%al 0.00 : 52a460: 0f 84 41 7b fe ff je 511fa7 0.00 : 52a466: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a46d: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a474: 8b 38 mov (%rax),%edi 0.00 : 52a476: e8 25 38 fe ff callq 50dca0 0.00 : 52a47b: bf 10 a6 7c 00 mov $0x7ca610,%edi 0.00 : 52a480: 41 89 c4 mov %eax,%r12d 0.00 : 52a483: 31 c0 xor %eax,%eax 0.00 : 52a485: e8 16 24 25 00 callq 77c8a0 0.00 : 52a48a: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a48f: 89 c3 mov %eax,%ebx 0.00 : 52a491: e9 ca a3 ff ff jmpq 524860 : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); : n->replace = false; : n->options = $9; : n->withCheckOption = $12; : if (n->withCheckOption != NO_CHECK_OPTION) : ereport(ERROR, 0.00 : 52a496: 45 31 c0 xor %r8d,%r8d 0.00 : 52a499: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a49e: ba 12 21 00 00 mov $0x2112,%edx 0.00 : 52a4a3: e9 7e fb ff ff jmpq 52a026 : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; : frameOptions |= FRAMEOPTION_BETWEEN; : /* reject invalid cases */ : if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) : ereport(ERROR, 0.00 : 52a4a8: 45 31 c0 xor %r8d,%r8d 0.00 : 52a4ab: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a4b0: ba d7 2f 00 00 mov $0x2fd7,%edx 0.00 : 52a4b5: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a4ba: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a4bf: e8 fc 05 25 00 callq 77aac0 0.00 : 52a4c4: 84 c0 test %al,%al 0.00 : 52a4c6: 0f 84 db 7a fe ff je 511fa7 0.00 : 52a4cc: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 52a4d3: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a4da: 8b 7a f8 mov -0x8(%rdx),%edi 0.00 : 52a4dd: e9 a7 fe ff ff jmpq 52a389 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:266 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:226 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:206 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:278 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:285 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:300 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:226 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:296 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000695e80 : : Item item, : Size size, : OffsetNumber offsetNumber, : bool overwrite, : bool is_heap) : { 0.00 : 695e80: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 8.33 : 695e81: 48 89 e5 mov %rsp,%rbp 8.33 : 695e84: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 695e88: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 695e8c: 48 89 fb mov %rdi,%rbx 0.00 : 695e8f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 695e93: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 695e97: 49 89 d5 mov %rdx,%r13 0.00 : 695e9a: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 695e9e: 48 83 ec 40 sub $0x40,%rsp : bool needshuffle = false; : : /* : * Be wary about corrupted page pointers : */ : if (phdr->pd_lower < SizeOfPageHeaderData || 0.00 : 695ea2: 0f b7 47 0c movzwl 0xc(%rdi),%eax : Item item, : Size size, : OffsetNumber offsetNumber, : bool overwrite, : bool is_heap) : { 0.00 : 695ea6: 49 89 f7 mov %rsi,%r15 0.00 : 695ea9: 41 89 cc mov %ecx,%r12d : bool needshuffle = false; : : /* : * Be wary about corrupted page pointers : */ : if (phdr->pd_lower < SizeOfPageHeaderData || 0.00 : 695eac: 66 83 f8 17 cmp $0x17,%ax 0.00 : 695eb0: 76 09 jbe 695ebb 0.00 : 695eb2: 0f b7 57 0e movzwl 0xe(%rdi),%edx 0.00 : 695eb6: 66 39 d0 cmp %dx,%ax 0.00 : 695eb9: 76 2d jbe 695ee8 : phdr->pd_lower > phdr->pd_upper || : phdr->pd_upper > phdr->pd_special || : phdr->pd_special > BLCKSZ) : ereport(PANIC, 0.00 : 695ebb: 45 31 c0 xor %r8d,%r8d 0.00 : 695ebe: b9 d8 de 8a 00 mov $0x8aded8,%ecx 0.00 : 695ec3: ba c9 00 00 00 mov $0xc9,%edx 0.00 : 695ec8: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 695ecd: bf 16 00 00 00 mov $0x16,%edi 0.00 : 695ed2: e8 e9 4b 0e 00 callq 77aac0 0.00 : 695ed7: 84 c0 test %al,%al 0.00 : 695ed9: 0f 85 a1 00 00 00 jne 695f80 0.00 : 695edf: e8 ec 35 dd ff callq 4694d0 0.00 : 695ee4: 0f 1f 40 00 nopl 0x0(%rax) : bool needshuffle = false; : : /* : * Be wary about corrupted page pointers : */ : if (phdr->pd_lower < SizeOfPageHeaderData || 0.00 : 695ee8: 0f b7 4f 10 movzwl 0x10(%rdi),%ecx 0.00 : 695eec: 66 39 ca cmp %cx,%dx 0.00 : 695eef: 90 nop 0.00 : 695ef0: 77 c9 ja 695ebb 0.00 : 695ef2: 66 81 f9 00 20 cmp $0x2000,%cx 0.00 : 695ef7: 77 c2 ja 695ebb : phdr->pd_lower, phdr->pd_upper, phdr->pd_special))); : : /* : * Select offsetNumber to place the new item at : */ : limit = OffsetNumberNext(PageGetMaxOffsetNumber(page)); 0.00 : 695ef9: 66 83 f8 18 cmp $0x18,%ax /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:206 8.33 : 695efd: ba 01 00 00 00 mov $0x1,%edx 0.00 : 695f02: 76 0e jbe 695f12 0.00 : 695f04: 0f b7 c0 movzwl %ax,%eax 0.00 : 695f07: 48 83 e8 18 sub $0x18,%rax 0.00 : 695f0b: 48 c1 e8 02 shr $0x2,%rax 0.00 : 695f0f: 8d 50 01 lea 0x1(%rax),%edx : : /* was offsetNumber passed in? */ : if (OffsetNumberIsValid(offsetNumber)) 0.00 : 695f12: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 695f17: 66 3d ff 07 cmp $0x7ff,%ax 0.00 : 695f1b: 0f 87 97 00 00 00 ja 695fb8 : { : /* yes, check it */ : if (overwrite) 0.00 : 695f21: 45 84 c0 test %r8b,%r8b 0.00 : 695f24: 0f 84 d6 01 00 00 je 696100 : { : if (offsetNumber < limit) 0.00 : 695f2a: 66 44 39 e2 cmp %r12w,%dx 0.00 : 695f2e: 76 12 jbe 695f42 : { : itemId = PageGetItemId(phdr, offsetNumber); : if (ItemIdIsUsed(itemId) || ItemIdHasStorage(itemId)) 0.00 : 695f30: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 695f34: f7 44 83 14 00 80 ff testl $0xffff8000,0x14(%rbx,%rax,4) 0.00 : 695f3b: ff 0.00 : 695f3c: 0f 85 d4 01 00 00 jne 696116 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 695f42: 31 c0 xor %eax,%eax : /* don't bother searching if hint says there's no free slot */ : offsetNumber = limit; : } : } : : if (offsetNumber > limit) 0.00 : 695f44: 66 41 39 d4 cmp %dx,%r12w 0.00 : 695f48: 0f 86 d2 00 00 00 jbe 696020 : { : elog(WARNING, "specified item offset is too large"); 0.00 : 695f4e: ba d8 de 8a 00 mov $0x8aded8,%edx 0.00 : 695f53: be 06 01 00 00 mov $0x106,%esi 0.00 : 695f58: bf 33 dc 8a 00 mov $0x8adc33,%edi 0.00 : 695f5d: e8 be 54 0e 00 callq 77b420 0.00 : 695f62: be f0 dd 8a 00 mov $0x8addf0,%esi 0.00 : 695f67: bf 13 00 00 00 mov $0x13,%edi 0.00 : 695f6c: 31 c0 xor %eax,%eax 0.00 : 695f6e: e8 bd 52 0e 00 callq 77b230 0.00 : 695f73: 45 31 e4 xor %r12d,%r12d : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } 0.00 : 695f76: e9 62 01 00 00 jmpq 6960dd 0.00 : 695f7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : if (phdr->pd_lower < SizeOfPageHeaderData || : phdr->pd_lower > phdr->pd_upper || : phdr->pd_upper > phdr->pd_special || : phdr->pd_special > BLCKSZ) : ereport(PANIC, 0.00 : 695f80: 0f b7 4b 10 movzwl 0x10(%rbx),%ecx 0.00 : 695f84: 0f b7 53 0e movzwl 0xe(%rbx),%edx 0.00 : 695f88: bf c0 dc 8a 00 mov $0x8adcc0,%edi 0.00 : 695f8d: 0f b7 73 0c movzwl 0xc(%rbx),%esi 0.00 : 695f91: 31 c0 xor %eax,%eax 0.00 : 695f93: e8 08 69 0e 00 callq 77c8a0 0.00 : 695f98: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 695f9d: 89 c3 mov %eax,%ebx 0.00 : 695f9f: e8 ac 6d 0e 00 callq 77cd50 0.00 : 695fa4: 89 de mov %ebx,%esi 0.00 : 695fa6: 89 c7 mov %eax,%edi 0.00 : 695fa8: 31 c0 xor %eax,%eax 0.00 : 695faa: e8 31 46 0e 00 callq 77a5e0 0.00 : 695faf: e9 2b ff ff ff jmpq 695edf 0.00 : 695fb4: 0f 1f 40 00 nopl 0x0(%rax) : } : else : { : /* offsetNumber was not passed in, so find a free slot */ : /* if no free slot, we'll put it at limit (1st open slot) */ : if (PageHasFreeLinePointers(phdr)) 0.00 : 695fb8: 0f b7 73 0a movzwl 0xa(%rbx),%esi : } : } : : if (offsetNumber > limit) : { : elog(WARNING, "specified item offset is too large"); 0.00 : 695fbc: 31 c0 xor %eax,%eax 0.00 : 695fbe: 41 89 d4 mov %edx,%r12d : } : else : { : /* offsetNumber was not passed in, so find a free slot */ : /* if no free slot, we'll put it at limit (1st open slot) */ : if (PageHasFreeLinePointers(phdr)) 0.00 : 695fc1: 40 f6 c6 01 test $0x1,%sil 0.00 : 695fc5: 74 59 je 696020 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 695fc7: 66 83 fa 01 cmp $0x1,%dx 0.00 : 695fcb: 0f 86 b6 01 00 00 jbe 696187 : { : itemId = PageGetItemId(phdr, offsetNumber); : if (!ItemIdIsUsed(itemId) && !ItemIdHasStorage(itemId)) 0.00 : 695fd1: f7 43 18 00 80 ff ff testl $0xffff8000,0x18(%rbx) 0.00 : 695fd8: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 695fde: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 695fe3: 75 1e jne 696003 0.00 : 695fe5: eb 73 jmp 69605a 0.00 : 695fe7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 695fee: 00 00 0.00 : 695ff0: 8b 44 8b 18 mov 0x18(%rbx,%rcx,4),%eax 0.00 : 695ff4: 48 83 c1 01 add $0x1,%rcx 0.00 : 695ff8: a9 00 80 ff ff test $0xffff8000,%eax 0.00 : 695ffd: 0f 84 3f ff ff ff je 695f42 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 696003: 41 83 c4 01 add $0x1,%r12d 0.00 : 696007: 66 44 39 e2 cmp %r12w,%dx 0.00 : 69600b: 77 e3 ja 695ff0 : break; : } : if (offsetNumber >= limit) : { : /* the hint is wrong, so reset it */ : PageClearHasFreeLinePointers(phdr); 0.00 : 69600d: 83 e6 fe and $0xfffffffe,%esi 0.00 : 696010: 31 c0 xor %eax,%eax 0.00 : 696012: 66 89 73 0a mov %si,0xa(%rbx) 0.00 : 696016: e9 29 ff ff ff jmpq 695f44 0.00 : 69601b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : elog(WARNING, "specified item offset is too large"); : return InvalidOffsetNumber; : } : : if (is_heap && offsetNumber > MaxHeapTuplesPerPage) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:266 16.67 : 696020: 45 84 c9 test %r9b,%r9b 0.00 : 696023: 74 3b je 696060 0.00 : 696025: 66 41 81 fc 23 01 cmp $0x123,%r12w 0.00 : 69602b: 76 33 jbe 696060 : { : elog(WARNING, "can't put more than MaxHeapTuplesPerPage items in a heap page"); 0.00 : 69602d: ba d8 de 8a 00 mov $0x8aded8,%edx 0.00 : 696032: be 0c 01 00 00 mov $0x10c,%esi 0.00 : 696037: bf 33 dc 8a 00 mov $0x8adc33,%edi 0.00 : 69603c: e8 df 53 0e 00 callq 77b420 0.00 : 696041: be 18 de 8a 00 mov $0x8ade18,%esi 0.00 : 696046: bf 13 00 00 00 mov $0x13,%edi 0.00 : 69604b: 31 c0 xor %eax,%eax 0.00 : 69604d: e8 de 51 0e 00 callq 77b230 0.00 : 696052: 45 31 e4 xor %r12d,%r12d : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } 0.00 : 696055: e9 83 00 00 00 jmpq 6960dd : return InvalidOffsetNumber; : } : : if (is_heap && offsetNumber > MaxHeapTuplesPerPage) : { : elog(WARNING, "can't put more than MaxHeapTuplesPerPage items in a heap page"); 0.00 : 69605a: 41 bc 01 00 00 00 mov $0x1,%r12d : * Compute new lower and upper pointers for page, see if it'll fit. : * : * Note: do arithmetic as signed ints, to avoid mistakes if, say, : * alignedSize > pd_upper. : */ : if (offsetNumber == limit || needshuffle) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:278 8.33 : 696060: 66 41 39 d4 cmp %dx,%r12w 0.00 : 696064: 89 c1 mov %eax,%ecx 0.00 : 696066: 74 08 je 696070 0.00 : 696068: 84 c0 test %al,%al 0.00 : 69606a: 0f 84 d0 00 00 00 je 696140 : lower = phdr->pd_lower + sizeof(ItemIdData); 0.00 : 696070: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 696074: 83 c0 04 add $0x4,%eax 0.00 : 696077: 89 45 d4 mov %eax,-0x2c(%rbp) : else : lower = phdr->pd_lower; : : alignedSize = MAXALIGN(size); : : upper = (int) phdr->pd_upper - (int) alignedSize; 0.00 : 69607a: 44 0f b7 73 0e movzwl 0xe(%rbx),%r14d 0.00 : 69607f: 49 8d 45 07 lea 0x7(%r13),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:285 8.33 : 696083: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 696087: 41 29 c6 sub %eax,%r14d : : if (lower > upper) 0.00 : 69608a: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 0.00 : 69608e: 0f 8f bc 00 00 00 jg 696150 : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); 0.00 : 696094: 41 0f b7 c4 movzwl %r12w,%eax : : if (needshuffle) 0.00 : 696098: 84 c9 test %cl,%cl : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); 0.00 : 69609a: 4c 8d 40 ff lea -0x1(%rax),%r8 : : if (needshuffle) 0.00 : 69609e: 0f 85 b4 00 00 00 jne 696158 : memmove(itemId + 1, itemId, : (limit - offsetNumber) * sizeof(ItemIdData)); : : /* set the item pointer */ : ItemIdSetNormal(itemId, upper, size); 0.00 : 6960a4: 49 8d 50 04 lea 0x4(%r8),%rdx 0.00 : 6960a8: 44 89 f0 mov %r14d,%eax : * this as an error, but it is safe to ignore. : */ : VALGRIND_CHECK_MEM_IS_DEFINED(item, size); : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); 0.00 : 6960ab: 49 63 fe movslq %r14d,%rdi : if (needshuffle) : memmove(itemId + 1, itemId, : (limit - offsetNumber) * sizeof(ItemIdData)); : : /* set the item pointer */ : ItemIdSetNormal(itemId, upper, size); 0.00 : 6960ae: 66 0d 00 80 or $0x8000,%ax : * this as an error, but it is safe to ignore. : */ : VALGRIND_CHECK_MEM_IS_DEFINED(item, size); : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); 0.00 : 6960b2: 48 8d 3c 3b lea (%rbx,%rdi,1),%rdi 0.00 : 6960b6: 4c 89 fe mov %r15,%rsi : if (needshuffle) : memmove(itemId + 1, itemId, : (limit - offsetNumber) * sizeof(ItemIdData)); : : /* set the item pointer */ : ItemIdSetNormal(itemId, upper, size); 0.00 : 6960b9: 66 89 44 93 08 mov %ax,0x8(%rbx,%rdx,4) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:300 8.33 : 6960be: 43 8d 44 2d 00 lea 0x0(%r13,%r13,1),%eax 0.00 : 6960c3: 66 89 44 93 0a mov %ax,0xa(%rbx,%rdx,4) : * this as an error, but it is safe to ignore. : */ : VALGRIND_CHECK_MEM_IS_DEFINED(item, size); : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); 0.00 : 6960c8: 4c 89 ea mov %r13,%rdx 0.00 : 6960cb: e8 20 3b dd ff callq 469bf0 : : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; 0.00 : 6960d0: 0f b7 45 d4 movzwl -0x2c(%rbp),%eax : phdr->pd_upper = (LocationIndex) upper; 0.00 : 6960d4: 66 44 89 73 0e mov %r14w,0xe(%rbx) : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); : : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; 0.00 : 6960d9: 66 89 43 0c mov %ax,0xc(%rbx) : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } 0.00 : 6960dd: 44 89 e0 mov %r12d,%eax 0.00 : 6960e0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 6960e4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 6960e8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 6960ec: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 6960f0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 6960f4: c9 leaveq 0.00 : 6960f5: c3 retq 0.00 : 6960f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6960fd: 00 00 00 : } : } : } : else : { : if (offsetNumber < limit) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:226 8.33 : 696100: 66 44 39 e2 cmp %r12w,%dx 16.67 : 696104: b8 01 00 00 00 mov $0x1,%eax 0.00 : 696109: 0f 87 35 fe ff ff ja 695f44 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 69610f: 31 c0 xor %eax,%eax 0.00 : 696111: e9 2e fe ff ff jmpq 695f44 : if (offsetNumber < limit) : { : itemId = PageGetItemId(phdr, offsetNumber); : if (ItemIdIsUsed(itemId) || ItemIdHasStorage(itemId)) : { : elog(WARNING, "will not overwrite a used ItemId"); 0.00 : 696116: ba d8 de 8a 00 mov $0x8aded8,%edx 0.00 : 69611b: be db 00 00 00 mov $0xdb,%esi 0.00 : 696120: bf 33 dc 8a 00 mov $0x8adc33,%edi 0.00 : 696125: e8 f6 52 0e 00 callq 77b420 0.00 : 69612a: be c8 dd 8a 00 mov $0x8addc8,%esi 0.00 : 69612f: bf 13 00 00 00 mov $0x13,%edi 0.00 : 696134: 31 c0 xor %eax,%eax 0.00 : 696136: e8 f5 50 0e 00 callq 77b230 0.00 : 69613b: 45 31 e4 xor %r12d,%r12d : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } 0.00 : 69613e: eb 9d jmp 6960dd : * alignedSize > pd_upper. : */ : if (offsetNumber == limit || needshuffle) : lower = phdr->pd_lower + sizeof(ItemIdData); : else : lower = phdr->pd_lower; 0.00 : 696140: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 696144: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 696147: e9 2e ff ff ff jmpq 69607a 0.00 : 69614c: 0f 1f 40 00 nopl 0x0(%rax) : : alignedSize = MAXALIGN(size); : : upper = (int) phdr->pd_upper - (int) alignedSize; : : if (lower > upper) 0.00 : 696150: 45 31 e4 xor %r12d,%r12d 0.00 : 696153: eb 88 jmp 6960dd 0.00 : 696155: 0f 1f 00 nopl (%rax) : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); 0.00 : 696158: 48 8d 7c 83 0c lea 0xc(%rbx,%rax,4),%rdi : : if (needshuffle) : memmove(itemId + 1, itemId, /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:296 8.33 : 69615d: 0f b7 d2 movzwl %dx,%edx 0.00 : 696160: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 696164: 29 c2 sub %eax,%edx 0.00 : 696166: 4c 89 45 c8 mov %r8,-0x38(%rbp) : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); 0.00 : 69616a: 48 8d 77 08 lea 0x8(%rdi),%rsi : : if (needshuffle) : memmove(itemId + 1, itemId, 0.00 : 69616e: 48 63 d2 movslq %edx,%rdx 0.00 : 696171: 48 83 c7 0c add $0xc,%rdi 0.00 : 696175: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 696179: e8 b2 3a dd ff callq 469c30 0.00 : 69617e: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.00 : 696182: e9 1d ff ff ff jmpq 6960a4 : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); : : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; 0.00 : 696187: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 69618d: e9 7b fe ff ff jmpq 69600d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3092 30.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3088 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3086 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3086 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3086 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006b8c60 : : void : deconstruct_array(ArrayType *array, : Oid elmtype, : int elmlen, bool elmbyval, char elmalign, : Datum **elemsp, bool **nullsp, int *nelemsp) : { 0.00 : 6b8c60: 55 push %rbp : int bitmask; : int i; : : Assert(ARR_ELEMTYPE(array) == elmtype); : : nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array)); 0.00 : 6b8c61: 48 8d 77 10 lea 0x10(%rdi),%rsi : void : deconstruct_array(ArrayType *array, : Oid elmtype, : int elmlen, bool elmbyval, char elmalign, : Datum **elemsp, bool **nullsp, int *nelemsp) : { 0.00 : 6b8c65: 48 89 e5 mov %rsp,%rbp 0.00 : 6b8c68: 41 57 push %r15 0.00 : 6b8c6a: 45 89 c7 mov %r8d,%r15d 0.00 : 6b8c6d: 41 56 push %r14 0.00 : 6b8c6f: 41 55 push %r13 0.00 : 6b8c71: 41 54 push %r12 0.00 : 6b8c73: 49 89 fc mov %rdi,%r12 0.00 : 6b8c76: 53 push %rbx 0.00 : 6b8c77: 4c 89 cb mov %r9,%rbx 0.00 : 6b8c7a: 48 83 ec 38 sub $0x38,%rsp 0.00 : 6b8c7e: 88 4d d7 mov %cl,-0x29(%rbp) : int bitmask; : int i; : : Assert(ARR_ELEMTYPE(array) == elmtype); : : nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array)); 0.00 : 6b8c81: 8b 7f 04 mov 0x4(%rdi),%edi : void : deconstruct_array(ArrayType *array, : Oid elmtype, : int elmlen, bool elmbyval, char elmalign, : Datum **elemsp, bool **nullsp, int *nelemsp) : { 0.00 : 6b8c84: 4c 8b 75 10 mov 0x10(%rbp),%r14 : int bitmask; : int i; : : Assert(ARR_ELEMTYPE(array) == elmtype); : : nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array)); 0.00 : 6b8c88: 89 55 b0 mov %edx,-0x50(%rbp) 0.00 : 6b8c8b: e8 c0 b6 00 00 callq 6c4350 : *elemsp = elems = (Datum *) palloc(nelems * sizeof(Datum)); 0.00 : 6b8c90: 4c 63 e8 movslq %eax,%r13 0.00 : 6b8c93: 89 45 c0 mov %eax,-0x40(%rbp) 0.00 : 6b8c96: 4a 8d 3c ed 00 00 00 lea 0x0(,%r13,8),%rdi 0.00 : 6b8c9d: 00 0.00 : 6b8c9e: e8 ad 00 0e 00 callq 798d50 : if (nullsp) 0.00 : 6b8ca3: 45 31 db xor %r11d,%r11d 0.00 : 6b8ca6: 4d 85 f6 test %r14,%r14 : int i; : : Assert(ARR_ELEMTYPE(array) == elmtype); : : nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array)); : *elemsp = elems = (Datum *) palloc(nelems * sizeof(Datum)); 0.00 : 6b8ca9: 48 89 03 mov %rax,(%rbx) 0.00 : 6b8cac: 49 89 c1 mov %rax,%r9 : if (nullsp) 0.00 : 6b8caf: 44 8b 45 c0 mov -0x40(%rbp),%r8d 0.00 : 6b8cb3: 44 8b 55 b0 mov -0x50(%rbp),%r10d 0.00 : 6b8cb7: 74 26 je 6b8cdf : *nullsp = nulls = (bool *) palloc0(nelems * sizeof(bool)); 0.00 : 6b8cb9: 4c 89 ef mov %r13,%rdi 0.00 : 6b8cbc: 44 89 45 c0 mov %r8d,-0x40(%rbp) 0.00 : 6b8cc0: 44 89 55 b0 mov %r10d,-0x50(%rbp) 0.00 : 6b8cc4: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 6b8cc8: e8 a3 02 0e 00 callq 798f70 0.00 : 6b8ccd: 49 89 06 mov %rax,(%r14) 0.00 : 6b8cd0: 44 8b 55 b0 mov -0x50(%rbp),%r10d 0.00 : 6b8cd4: 49 89 c3 mov %rax,%r11 0.00 : 6b8cd7: 4c 8b 4d b8 mov -0x48(%rbp),%r9 0.00 : 6b8cdb: 44 8b 45 c0 mov -0x40(%rbp),%r8d : else : nulls = NULL; : *nelemsp = nelems; 0.00 : 6b8cdf: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6b8ce3: 44 89 00 mov %r8d,(%rax) : : p = ARR_DATA_PTR(array); 0.00 : 6b8ce6: 41 8b 44 24 08 mov 0x8(%r12),%eax 0.00 : 6b8ceb: 85 c0 test %eax,%eax 0.00 : 6b8ced: 0f 84 dd 01 00 00 je 6b8ed0 0.00 : 6b8cf3: 48 98 cltq 0.00 : 6b8cf5: 49 8d 1c 04 lea (%r12,%rax,1),%rbx : bitmap = ARR_NULLBITMAP(array); 0.00 : 6b8cf9: 49 63 44 24 04 movslq 0x4(%r12),%rax 0.00 : 6b8cfe: 4d 8d 74 c4 10 lea 0x10(%r12,%rax,8),%r14 : bitmask = 1; : : for (i = 0; i < nelems; i++) 0.00 : 6b8d03: 45 85 c0 test %r8d,%r8d 0.00 : 6b8d06: 0f 8e d5 00 00 00 jle 6b8de1 : errmsg("null array element not allowed in this context"))); : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); : p = att_addlength_pointer(p, elmlen, p); 0.00 : 6b8d0c: 49 63 c2 movslq %r10d,%rax : : p = ARR_DATA_PTR(array); : bitmap = ARR_NULLBITMAP(array); : bitmask = 1; : : for (i = 0; i < nelems; i++) 0.00 : 6b8d0f: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 6b8d15: 45 31 e4 xor %r12d,%r12d : errmsg("null array element not allowed in this context"))); : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); : p = att_addlength_pointer(p, elmlen, p); 0.00 : 6b8d18: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 6b8d1c: eb 35 jmp 6b8d53 0.00 : 6b8d1e: 66 90 xchg %ax,%ax : { : /* Get source element, checking for NULL */ : if (bitmap && (*bitmap & bitmask) == 0) : { : elems[i] = (Datum) 0; : if (nulls) 0.00 : 6b8d20: 4d 85 db test %r11,%r11 : for (i = 0; i < nelems; i++) : { : /* Get source element, checking for NULL */ : if (bitmap && (*bitmap & bitmask) == 0) : { : elems[i] = (Datum) 0; 0.00 : 6b8d23: 4b c7 04 e1 00 00 00 movq $0x0,(%r9,%r12,8) 0.00 : 6b8d2a: 00 : if (nulls) 0.00 : 6b8d2b: 0f 84 b1 01 00 00 je 6b8ee2 : } : : /* advance bitmap pointer if any */ : if (bitmap) : { : bitmask <<= 1; 0.00 : 6b8d31: 45 01 ed add %r13d,%r13d : /* Get source element, checking for NULL */ : if (bitmap && (*bitmap & bitmask) == 0) : { : elems[i] = (Datum) 0; : if (nulls) : nulls[i] = true; 0.00 : 6b8d34: 43 c6 04 23 01 movb $0x1,(%r11,%r12,1) : : /* advance bitmap pointer if any */ : if (bitmap) : { : bitmask <<= 1; : if (bitmask == 0x100) 0.00 : 6b8d39: 41 81 fd 00 01 00 00 cmp $0x100,%r13d 0.00 : 6b8d40: 0f 84 85 00 00 00 je 6b8dcb : { : bitmap++; 0.00 : 6b8d46: 49 83 c4 01 add $0x1,%r12 : : p = ARR_DATA_PTR(array); : bitmap = ARR_NULLBITMAP(array); : bitmask = 1; : : for (i = 0; i < nelems; i++) 0.00 : 6b8d4a: 45 39 e0 cmp %r12d,%r8d 0.00 : 6b8d4d: 0f 8e 8e 00 00 00 jle 6b8de1 : { : /* Get source element, checking for NULL */ : if (bitmap && (*bitmap & bitmask) == 0) 0.00 : 6b8d53: 4d 85 f6 test %r14,%r14 0.00 : 6b8d56: 74 09 je 6b8d61 0.00 : 6b8d58: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 6b8d5c: 44 85 e8 test %r13d,%eax 0.00 : 6b8d5f: 74 bf je 6b8d20 : (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), : errmsg("null array element not allowed in this context"))); : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); 0.00 : 6b8d61: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 6b8d65: 48 89 d8 mov %rbx,%rax 0.00 : 6b8d68: 74 21 je 6b8d8b /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3086 20.00 : 6b8d6a: 41 83 fa 08 cmp $0x8,%r10d 0.00 : 6b8d6e: 0f 84 b4 00 00 00 je 6b8e28 0.00 : 6b8d74: 41 83 fa 04 cmp $0x4,%r10d 0.00 : 6b8d78: 0f 84 02 01 00 00 je 6b8e80 0.00 : 6b8d7e: 41 83 fa 02 cmp $0x2,%r10d 0.00 : 6b8d82: 0f 84 00 01 00 00 je 6b8e88 0.00 : 6b8d88: 0f b6 03 movzbl (%rbx),%eax : p = att_addlength_pointer(p, elmlen, p); 0.00 : 6b8d8b: 45 85 d2 test %r10d,%r10d : (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), : errmsg("null array element not allowed in this context"))); : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); 0.00 : 6b8d8e: 4b 89 04 e1 mov %rax,(%r9,%r12,8) : p = att_addlength_pointer(p, elmlen, p); 0.00 : 6b8d92: 7e 6c jle 6b8e00 0.00 : 6b8d94: 48 03 5d c8 add -0x38(%rbp),%rbx : p = (char *) att_align_nominal(p, elmalign); 0.00 : 6b8d98: 41 80 ff 69 cmp $0x69,%r15b 0.00 : 6b8d9c: 74 52 je 6b8df0 0.00 : 6b8d9e: 41 80 ff 63 cmp $0x63,%r15b 0.00 : 6b8da2: 74 12 je 6b8db6 0.00 : 6b8da4: 41 80 ff 64 cmp $0x64,%r15b 0.00 : 6b8da8: 0f 84 c2 00 00 00 je 6b8e70 0.00 : 6b8dae: 48 83 c3 01 add $0x1,%rbx 0.00 : 6b8db2: 48 83 e3 fe and $0xfffffffffffffffe,%rbx : } : : /* advance bitmap pointer if any */ : if (bitmap) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3092 30.00 : 6b8db6: 4d 85 f6 test %r14,%r14 0.00 : 6b8db9: 74 8b je 6b8d46 : { : bitmask <<= 1; 0.00 : 6b8dbb: 45 01 ed add %r13d,%r13d : if (bitmask == 0x100) 0.00 : 6b8dbe: 41 81 fd 00 01 00 00 cmp $0x100,%r13d 0.00 : 6b8dc5: 0f 85 7b ff ff ff jne 6b8d46 : { : bitmap++; 0.00 : 6b8dcb: 49 83 c4 01 add $0x1,%r12 0.00 : 6b8dcf: 49 83 c6 01 add $0x1,%r14 0.00 : 6b8dd3: 66 41 bd 01 00 mov $0x1,%r13w : : p = ARR_DATA_PTR(array); : bitmap = ARR_NULLBITMAP(array); : bitmask = 1; : : for (i = 0; i < nelems; i++) 0.00 : 6b8dd8: 45 39 e0 cmp %r12d,%r8d 0.00 : 6b8ddb: 0f 8f 72 ff ff ff jg 6b8d53 : bitmap++; : bitmask = 1; : } : } : } : } 0.00 : 6b8de1: 48 83 c4 38 add $0x38,%rsp 0.00 : 6b8de5: 5b pop %rbx 0.00 : 6b8de6: 41 5c pop %r12 0.00 : 6b8de8: 41 5d pop %r13 0.00 : 6b8dea: 41 5e pop %r14 0.00 : 6b8dec: 41 5f pop %r15 0.00 : 6b8dee: c9 leaveq 0.00 : 6b8def: c3 retq : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); : p = att_addlength_pointer(p, elmlen, p); : p = (char *) att_align_nominal(p, elmalign); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3088 30.00 : 6b8df0: 48 83 c3 03 add $0x3,%rbx 0.00 : 6b8df4: 48 83 e3 fc and $0xfffffffffffffffc,%rbx 0.00 : 6b8df8: eb bc jmp 6b8db6 0.00 : 6b8dfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : errmsg("null array element not allowed in this context"))); : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); : p = att_addlength_pointer(p, elmlen, p); 0.00 : 6b8e00: 41 83 fa ff cmp $0xffffffff,%r10d 0.00 : 6b8e04: 75 32 jne 6b8e38 0.00 : 6b8e06: 0f b6 03 movzbl (%rbx),%eax 0.00 : 6b8e09: 3c 01 cmp $0x1,%al 0.00 : 6b8e0b: 0f 84 8f 00 00 00 je 6b8ea0 0.00 : 6b8e11: a8 01 test $0x1,%al 0.00 : 6b8e13: 74 7b je 6b8e90 0.00 : 6b8e15: d0 e8 shr %al 0.00 : 6b8e17: 0f b6 c0 movzbl %al,%eax 0.00 : 6b8e1a: 48 01 c3 add %rax,%rbx 0.00 : 6b8e1d: e9 76 ff ff ff jmpq 6b8d98 0.00 : 6b8e22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), : errmsg("null array element not allowed in this context"))); : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); 0.00 : 6b8e28: 48 8b 03 mov (%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/arrayfuncs.c:3086 10.00 : 6b8e2b: 4b 89 04 e1 mov %rax,(%r9,%r12,8) 0.00 : 6b8e2f: e9 60 ff ff ff jmpq 6b8d94 0.00 : 6b8e34: 0f 1f 40 00 nopl 0x0(%rax) : p = att_addlength_pointer(p, elmlen, p); 0.00 : 6b8e38: 48 89 df mov %rbx,%rdi 0.00 : 6b8e3b: 44 89 45 c0 mov %r8d,-0x40(%rbp) 0.00 : 6b8e3f: 4c 89 4d b8 mov %r9,-0x48(%rbp) 0.00 : 6b8e43: 44 89 55 b0 mov %r10d,-0x50(%rbp) 0.00 : 6b8e47: 4c 89 5d a8 mov %r11,-0x58(%rbp) 0.00 : 6b8e4b: e8 00 0a db ff callq 469850 0.00 : 6b8e50: 4c 8b 5d a8 mov -0x58(%rbp),%r11 0.00 : 6b8e54: 48 8d 5c 03 01 lea 0x1(%rbx,%rax,1),%rbx 0.00 : 6b8e59: 44 8b 55 b0 mov -0x50(%rbp),%r10d 0.00 : 6b8e5d: 4c 8b 4d b8 mov -0x48(%rbp),%r9 0.00 : 6b8e61: 44 8b 45 c0 mov -0x40(%rbp),%r8d 0.00 : 6b8e65: e9 2e ff ff ff jmpq 6b8d98 0.00 : 6b8e6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : p = (char *) att_align_nominal(p, elmalign); 0.00 : 6b8e70: 48 83 c3 07 add $0x7,%rbx 0.00 : 6b8e74: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 6b8e78: e9 39 ff ff ff jmpq 6b8db6 0.00 : 6b8e7d: 0f 1f 00 nopl (%rax) : (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), : errmsg("null array element not allowed in this context"))); : } : else : { : elems[i] = fetch_att(p, elmbyval, elmlen); 0.00 : 6b8e80: 8b 03 mov (%rbx),%eax 10.00 : 6b8e82: eb a7 jmp 6b8e2b 0.00 : 6b8e84: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6b8e88: 0f b7 03 movzwl (%rbx),%eax 0.00 : 6b8e8b: eb 9e jmp 6b8e2b 0.00 : 6b8e8d: 0f 1f 00 nopl (%rax) : p = att_addlength_pointer(p, elmlen, p); 0.00 : 6b8e90: 8b 03 mov (%rbx),%eax 0.00 : 6b8e92: c1 e8 02 shr $0x2,%eax 0.00 : 6b8e95: 89 c0 mov %eax,%eax 0.00 : 6b8e97: eb 81 jmp 6b8e1a 0.00 : 6b8e99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6b8ea0: 0f b6 53 01 movzbl 0x1(%rbx),%edx 0.00 : 6b8ea4: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 6b8ea9: 80 fa 01 cmp $0x1,%dl 0.00 : 6b8eac: 0f 84 68 ff ff ff je 6b8e1a 0.00 : 6b8eb2: 80 fa 12 cmp $0x12,%dl 0.00 : 6b8eb5: b8 03 00 00 00 mov $0x3,%eax 0.00 : 6b8eba: ba 12 00 00 00 mov $0x12,%edx 0.00 : 6b8ebf: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 6b8ec3: e9 52 ff ff ff jmpq 6b8e1a 0.00 : 6b8ec8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6b8ecf: 00 : *nullsp = nulls = (bool *) palloc0(nelems * sizeof(bool)); : else : nulls = NULL; : *nelemsp = nelems; : : p = ARR_DATA_PTR(array); 0.00 : 6b8ed0: 49 63 44 24 04 movslq 0x4(%r12),%rax 0.00 : 6b8ed5: 45 31 f6 xor %r14d,%r14d 0.00 : 6b8ed8: 49 8d 5c c4 10 lea 0x10(%r12,%rax,8),%rbx 0.00 : 6b8edd: e9 21 fe ff ff jmpq 6b8d03 : { : elems[i] = (Datum) 0; : if (nulls) : nulls[i] = true; : else : ereport(ERROR, 0.00 : 6b8ee2: 45 31 c0 xor %r8d,%r8d 0.00 : 6b8ee5: b9 b0 87 8b 00 mov $0x8b87b0,%ecx 0.00 : 6b8eea: ba 0a 0c 00 00 mov $0xc0a,%edx 0.00 : 6b8eef: be 34 80 8b 00 mov $0x8b8034,%esi 0.00 : 6b8ef4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6b8ef9: e8 c2 1b 0c 00 callq 77aac0 0.00 : 6b8efe: 84 c0 test %al,%al 0.00 : 6b8f00: 75 05 jne 6b8f07 0.00 : 6b8f02: e8 c9 05 db ff callq 4694d0 0.00 : 6b8f07: bf 08 82 8b 00 mov $0x8b8208,%edi 0.00 : 6b8f0c: 31 c0 xor %eax,%eax 0.00 : 6b8f0e: e8 8d 39 0c 00 callq 77c8a0 0.00 : 6b8f13: bf 82 00 00 04 mov $0x4000082,%edi 0.00 : 6b8f18: 89 c3 mov %eax,%ebx 0.00 : 6b8f1a: e8 31 3e 0c 00 callq 77cd50 0.00 : 6b8f1f: 89 de mov %ebx,%esi 0.00 : 6b8f21: 89 c7 mov %eax,%edi 0.00 : 6b8f23: 31 c0 xor %eax,%eax 0.00 : 6b8f25: e8 b6 16 0c 00 callq 77a5e0 0.00 : 6b8f2a: eb d6 jmp 6b8f02 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 43.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 18.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:878 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:891 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7eb0 : : /* : * float4{eq,ne,lt,le,gt,ge} - float4/float4 comparison operations : */ : static int : float4_cmp_internal(float4 a, float4 b) : { 0.00 : 6d7eb0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 43.75 : 6d7eb1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d7eb4: 48 83 ec 10 sub $0x10,%rsp 0.00 : 6d7eb8: f3 0f 11 45 fc movss %xmm0,-0x4(%rbp) 0.00 : 6d7ebd: f3 0f 11 4d f8 movss %xmm1,-0x8(%rbp) : /* : * We consider all NANs to be equal and larger than any non-NAN. This is : * somewhat arbitrary; the important thing is to have a consistent sort : * order. : */ : if (isnan(a)) 0.00 : 6d7ec2: e8 99 14 d9 ff callq 469360 <__isnanf@plt> /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:878 6.25 : 6d7ec7: 85 c0 test %eax,%eax 0.00 : 6d7ec9: 74 15 je 6d7ee0 : { : if (isnan(b)) 0.00 : 6d7ecb: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0 0.00 : 6d7ed0: e8 8b 14 d9 ff callq 469360 <__isnanf@plt> 0.00 : 6d7ed5: 85 c0 test %eax,%eax 0.00 : 6d7ed7: 0f 94 c0 sete %al 0.00 : 6d7eda: 0f b6 c0 movzbl %al,%eax : else if (a < b) : return -1; : else : return 0; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 6.25 : 6d7edd: c9 leaveq 0.00 : 6d7ede: c3 retq 0.00 : 6d7edf: 90 nop : if (isnan(b)) : return 0; /* NAN = NAN */ : else : return 1; /* NAN > non-NAN */ : } : else if (isnan(b)) 0.00 : 6d7ee0: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0 0.00 : 6d7ee5: e8 76 14 d9 ff callq 469360 <__isnanf@plt> 0.00 : 6d7eea: 85 c0 test %eax,%eax 0.00 : 6d7eec: 75 22 jne 6d7f10 : { : return -1; /* non-NAN < NAN */ : } : else : { : if (a > b) 0.00 : 6d7eee: f3 0f 10 45 fc movss -0x4(%rbp),%xmm0 0.00 : 6d7ef3: b0 01 mov $0x1,%al 0.00 : 6d7ef5: 0f 2e 45 f8 ucomiss -0x8(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:891 6.25 : 6d7ef9: 77 e2 ja 6d7edd : return 1; : else if (a < b) 0.00 : 6d7efb: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 12.50 : 6d7f00: 30 c0 xor %al,%al 18.75 : 6d7f02: 0f 2e 45 fc ucomiss -0x4(%rbp),%xmm0 6.25 : 6d7f06: 76 d5 jbe 6d7edd 0.00 : 6d7f08: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6d7f0f: 00 0.00 : 6d7f10: b8 ff ff ff ff mov $0xffffffff,%eax : return -1; : else : return 0; : } : } 0.00 : 6d7f15: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.44 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 11.11 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 11.11 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 11.11 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 11.11 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1442 11.11 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a8620 : : int *before_isdst, : pg_time_t *boundary, : long int *after_gmtoff, : int *after_isdst, : const pg_tz *tz) : { 0.00 : 7a8620: 55 push %rbp 0.00 : 7a8621: 49 89 d2 mov %rdx,%r10 : int i; : int j; : const pg_time_t t = *timep; : : sp = &tz->state; : if (sp->timecnt == 0) 0.00 : 7a8624: 31 d2 xor %edx,%edx : int *before_isdst, : pg_time_t *boundary, : long int *after_gmtoff, : int *after_isdst, : const pg_tz *tz) : { 0.00 : 7a8626: 48 89 e5 mov %rsp,%rbp 0.00 : 7a8629: 41 56 push %r14 0.00 : 7a862b: 49 89 ce mov %rcx,%r14 0.00 : 7a862e: 41 55 push %r13 0.00 : 7a8630: 41 54 push %r12 0.00 : 7a8632: 53 push %rbx 0.00 : 7a8633: 48 83 ec 20 sub $0x20,%rsp 0.00 : 7a8637: 48 8b 5d 10 mov 0x10(%rbp),%rbx : const struct state *sp; : const struct ttinfo *ttisp; : int i; : int j; : const pg_time_t t = *timep; 0.00 : 7a863b: 4c 8b 27 mov (%rdi),%r12 : : sp = &tz->state; : if (sp->timecnt == 0) 0.00 : 7a863e: 8b 8b 04 01 00 00 mov 0x104(%rbx),%ecx 0.00 : 7a8644: 48 89 d8 mov %rbx,%rax 0.00 : 7a8647: 85 c9 test %ecx,%ecx 0.00 : 7a8649: 0f 84 91 00 00 00 je 7a86e0 : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : return 0; : } : if ((sp->goback && t < sp->ats[0]) || 0.00 : 7a864f: 8b 83 10 01 00 00 mov 0x110(%rbx),%eax 0.00 : 7a8655: 85 c0 test %eax,%eax 0.00 : 7a8657: 0f 85 d3 00 00 00 jne 7a8730 0.00 : 7a865d: 44 8b ab 14 01 00 00 mov 0x114(%rbx),%r13d 0.00 : 7a8664: 45 85 ed test %r13d,%r13d 0.00 : 7a8667: 0f 84 db 01 00 00 je 7a8848 0.00 : 7a866d: 8d 79 ff lea -0x1(%rcx),%edi 0.00 : 7a8670: 48 63 d7 movslq %edi,%rdx 0.00 : 7a8673: 48 8b 84 d3 18 01 00 mov 0x118(%rbx,%rdx,8),%rax 0.00 : 7a867a: 00 0.00 : 7a867b: 49 39 c4 cmp %rax,%r12 0.00 : 7a867e: 0f 8f b9 00 00 00 jg 7a873d : else : *boundary += seconds; : return result; : } : : if (t >= sp->ats[sp->timecnt - 1]) 0.00 : 7a8684: 49 39 c4 cmp %rax,%r12 0.00 : 7a8687: 0f 8d d2 01 00 00 jge 7a885f : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : return 0; : } : if (t < sp->ats[0]) 0.00 : 7a868d: 31 c0 xor %eax,%eax 0.00 : 7a868f: 4c 3b a3 18 01 00 00 cmp 0x118(%rbx),%r12 0.00 : 7a8696: 48 89 da mov %rbx,%rdx 0.00 : 7a8699: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 7a869e: 0f 8c 24 01 00 00 jl 7a87c8 : /* Else search to find the boundary following t */ : { : int lo = 1; : int hi = sp->timecnt - 1; : : while (lo < hi) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 11.11 : 7a86a4: 39 f9 cmp %edi,%ecx 0.00 : 7a86a6: 0f 8d 14 02 00 00 jge 7a88c0 : { : int mid = (lo + hi) >> 1; 0.00 : 7a86ac: 8d 14 0f lea (%rdi,%rcx,1),%edx 0.00 : 7a86af: d1 fa sar %edx : : if (t < sp->ats[mid]) 0.00 : 7a86b1: 48 63 c2 movslq %edx,%rax 0.00 : 7a86b4: 4c 3b a4 c3 18 01 00 cmp 0x118(%rbx,%rax,8),%r12 0.00 : 7a86bb: 00 0.00 : 7a86bc: 7d 1d jge 7a86db /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 11.11 : 7a86be: 66 90 xchg %ax,%ax : /* Else search to find the boundary following t */ : { : int lo = 1; : int hi = sp->timecnt - 1; : : while (lo < hi) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 44.44 : 7a86c0: 39 d1 cmp %edx,%ecx : { : int mid = (lo + hi) >> 1; : : if (t < sp->ats[mid]) 0.00 : 7a86c2: 89 d7 mov %edx,%edi : /* Else search to find the boundary following t */ : { : int lo = 1; : int hi = sp->timecnt - 1; : : while (lo < hi) 0.00 : 7a86c4: 0f 8d f6 01 00 00 jge 7a88c0 : { : int mid = (lo + hi) >> 1; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 11.11 : 7a86ca: 01 ca add %ecx,%edx 0.00 : 7a86cc: d1 fa sar %edx : : if (t < sp->ats[mid]) 0.00 : 7a86ce: 48 63 c2 movslq %edx,%rax 0.00 : 7a86d1: 4c 3b a4 c3 18 01 00 cmp 0x118(%rbx,%rax,8),%r12 0.00 : 7a86d8: 00 0.00 : 7a86d9: 7c e5 jl 7a86c0 : hi = mid; : else : lo = mid + 1; 0.00 : 7a86db: 8d 4a 01 lea 0x1(%rdx),%ecx 0.00 : 7a86de: eb c4 jmp 7a86a4 : sp = &tz->state; : if (sp->timecnt == 0) : { : /* non-DST zone, use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a86e0: 8b 88 50 2b 00 00 mov 0x2b50(%rax),%ecx 0.00 : 7a86e6: 85 c9 test %ecx,%ecx 0.00 : 7a86e8: 0f 84 ca 01 00 00 je 7a88b8 : if (++i >= sp->typecnt) 0.00 : 7a86ee: 83 c2 01 add $0x1,%edx 0.00 : 7a86f1: 48 83 c0 18 add $0x18,%rax 0.00 : 7a86f5: 3b 93 08 01 00 00 cmp 0x108(%rbx),%edx 0.00 : 7a86fb: 7c e3 jl 7a86e0 0.00 : 7a86fd: 31 c0 xor %eax,%eax : if (t >= sp->ats[sp->timecnt - 1]) : { : /* No known transition > t, so use last known segment's type */ : i = sp->types[sp->timecnt - 1]; : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; 0.00 : 7a86ff: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a8703: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.00 : 7a8707: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx 0.00 : 7a870e: 48 89 16 mov %rdx,(%rsi) : *before_isdst = ttisp->tt_isdst; 0.00 : 7a8711: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax 0.00 : 7a8717: 41 89 02 mov %eax,(%r10) 0.00 : 7a871a: 31 c0 xor %eax,%eax : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; : return 1; : } 0.00 : 7a871c: 48 83 c4 20 add $0x20,%rsp 0.00 : 7a8720: 5b pop %rbx 0.00 : 7a8721: 41 5c pop %r12 0.00 : 7a8723: 41 5d pop %r13 0.00 : 7a8725: 41 5e pop %r14 0.00 : 7a8727: c9 leaveq 0.00 : 7a8728: c3 retq 0.00 : 7a8729: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : return 0; : } : if ((sp->goback && t < sp->ats[0]) || 0.00 : 7a8730: 4c 3b a3 18 01 00 00 cmp 0x118(%rbx),%r12 0.00 : 7a8737: 0f 8d 20 ff ff ff jge 7a865d : (sp->goahead && t > sp->ats[sp->timecnt - 1])) : { : /* For values outside the transition table, extrapolate */ : pg_time_t newt = t; 0.00 : 7a873d: 4c 89 65 d8 mov %r12,-0x28(%rbp) : pg_time_t seconds; : pg_time_t tcycles; : int64 icycles; : int result; : : if (t < sp->ats[0]) 0.00 : 7a8741: 48 8b 83 18 01 00 00 mov 0x118(%rbx),%rax 0.00 : 7a8748: 49 39 c4 cmp %rax,%r12 0.00 : 7a874b: 0f 8c 1f 01 00 00 jl 7a8870 : seconds = sp->ats[0] - t; : else : seconds = t - sp->ats[sp->timecnt - 1]; 0.00 : 7a8751: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 7a8754: 4c 89 e2 mov %r12,%rdx 0.00 : 7a8757: 48 98 cltq 0.00 : 7a8759: 48 2b 94 c3 18 01 00 sub 0x118(%rbx,%rax,8),%rdx 0.00 : 7a8760: 00 : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a8761: 48 8d 7a ff lea -0x1(%rdx),%rdi 0.00 : 7a8765: 48 ba e7 58 ef 44 46 movabs $0xae35ef4644ef58e7,%rdx 0.00 : 7a876c: ef 35 ae 0.00 : 7a876f: 48 89 f8 mov %rdi,%rax 0.00 : 7a8772: 48 f7 ea imul %rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a8775: 48 b8 80 59 60 f0 02 movabs $0x2f0605980,%rax 0.00 : 7a877c: 00 00 00 : if (t < sp->ats[0]) : seconds = sp->ats[0] - t; : else : seconds = t - sp->ats[sp->timecnt - 1]; : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a877f: 48 01 fa add %rdi,%rdx 0.00 : 7a8782: 48 c1 ff 3f sar $0x3f,%rdi 0.00 : 7a8786: 48 c1 fa 21 sar $0x21,%rdx 0.00 : 7a878a: 48 29 fa sub %rdi,%rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a878d: 4c 8d 6a 01 lea 0x1(%rdx),%r13 0.00 : 7a8791: 4c 0f af e8 imul %rax,%r13 : if (t < sp->ats[0]) : newt += seconds; : else : newt -= seconds; 0.00 : 7a8795: 4c 89 e0 mov %r12,%rax 0.00 : 7a8798: 4c 29 e8 sub %r13,%rax 0.00 : 7a879b: 48 89 45 d8 mov %rax,-0x28(%rbp) : if (newt < sp->ats[0] || 0.00 : 7a879f: 48 8b 55 d8 mov -0x28(%rbp),%rdx 0.00 : 7a87a3: 48 39 93 18 01 00 00 cmp %rdx,0x118(%rbx) 0.00 : 7a87aa: 0f 8e 5a 01 00 00 jle 7a890a : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; : return 1; : } 0.00 : 7a87b0: 48 83 c4 20 add $0x20,%rsp : *before_isdst = ttisp->tt_isdst; : *boundary = sp->ats[i]; : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; 0.00 : 7a87b4: b8 ff ff ff ff mov $0xffffffff,%eax : return 1; : } 0.00 : 7a87b9: 5b pop %rbx 0.00 : 7a87ba: 41 5c pop %r12 0.00 : 7a87bc: 41 5d pop %r13 0.00 : 7a87be: 41 5e pop %r14 0.00 : 7a87c0: c9 leaveq 0.00 : 7a87c1: c3 retq 0.00 : 7a87c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : if (t < sp->ats[0]) : { : /* For "before", use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a87c8: 44 8b 9a 50 2b 00 00 mov 0x2b50(%rdx),%r11d 0.00 : 7a87cf: 45 85 db test %r11d,%r11d 0.00 : 7a87d2: 0f 84 2b 01 00 00 je 7a8903 : if (++i >= sp->typecnt) 0.00 : 7a87d8: 83 c0 01 add $0x1,%eax 0.00 : 7a87db: 48 83 c2 18 add $0x18,%rdx 0.00 : 7a87df: 3b 83 08 01 00 00 cmp 0x108(%rbx),%eax 0.00 : 7a87e5: 7c e1 jl 7a87c8 0.00 : 7a87e7: 31 c0 xor %eax,%eax : { : i = 0; : break; : } : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; 0.00 : 7a87e9: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a87ed: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.00 : 7a87f1: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx 0.00 : 7a87f8: 48 89 16 mov %rdx,(%rsi) : *before_isdst = ttisp->tt_isdst; 0.00 : 7a87fb: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax 0.00 : 7a8801: 41 89 02 mov %eax,(%r10) : *boundary = sp->ats[0]; 0.00 : 7a8804: 48 8b 83 18 01 00 00 mov 0x118(%rbx),%rax 0.00 : 7a880b: 49 89 06 mov %rax,(%r14) : /* And for "after", use the first segment's type */ : i = sp->types[0]; : ttisp = &sp->ttis[i]; 0.00 : 7a880e: 0f b6 83 98 26 00 00 movzbl 0x2698(%rbx),%eax : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : *boundary = sp->ats[i]; : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1442 11.11 : 7a8815: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a8819: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.00 : 7a881d: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx 0.00 : 7a8824: 49 89 10 mov %rdx,(%r8) : *after_isdst = ttisp->tt_isdst; 0.00 : 7a8827: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax 0.00 : 7a882d: 41 89 01 mov %eax,(%r9) : return 1; : } 0.00 : 7a8830: 48 83 c4 20 add $0x20,%rsp : *before_isdst = ttisp->tt_isdst; : *boundary = sp->ats[i]; : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; 0.00 : 7a8834: b8 01 00 00 00 mov $0x1,%eax : return 1; : } 0.00 : 7a8839: 5b pop %rbx 0.00 : 7a883a: 41 5c pop %r12 0.00 : 7a883c: 41 5d pop %r13 0.00 : 7a883e: 41 5e pop %r14 0.00 : 7a8840: c9 leaveq 0.00 : 7a8841: c3 retq 0.00 : 7a8842: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : after_isdst, : tz); : if (t < sp->ats[0]) : *boundary -= seconds; : else : *boundary += seconds; 0.00 : 7a8848: 8d 79 ff lea -0x1(%rcx),%edi 0.00 : 7a884b: 48 63 d7 movslq %edi,%rdx 0.00 : 7a884e: 48 8b 84 d3 18 01 00 mov 0x118(%rbx,%rdx,8),%rax 0.00 : 7a8855: 00 : return result; : } : : if (t >= sp->ats[sp->timecnt - 1]) 0.00 : 7a8856: 49 39 c4 cmp %rax,%r12 0.00 : 7a8859: 0f 8c 2e fe ff ff jl 7a868d : { : /* No known transition > t, so use last known segment's type */ : i = sp->types[sp->timecnt - 1]; : ttisp = &sp->ttis[i]; 0.00 : 7a885f: 0f b6 84 13 98 26 00 movzbl 0x2698(%rbx,%rdx,1),%eax 0.00 : 7a8866: 00 0.00 : 7a8867: e9 93 fe ff ff jmpq 7a86ff 0.00 : 7a886c: 0f 1f 40 00 nopl 0x0(%rax) : pg_time_t tcycles; : int64 icycles; : int result; : : if (t < sp->ats[0]) : seconds = sp->ats[0] - t; 0.00 : 7a8870: 48 8d 78 ff lea -0x1(%rax),%rdi : else : seconds = t - sp->ats[sp->timecnt - 1]; : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a8874: 48 ba e7 58 ef 44 46 movabs $0xae35ef4644ef58e7,%rdx 0.00 : 7a887b: ef 35 ae 0.00 : 7a887e: 4c 29 e7 sub %r12,%rdi 0.00 : 7a8881: 48 89 f8 mov %rdi,%rax 0.00 : 7a8884: 48 f7 ea imul %rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a8887: 48 b8 80 59 60 f0 02 movabs $0x2f0605980,%rax 0.00 : 7a888e: 00 00 00 : if (t < sp->ats[0]) : seconds = sp->ats[0] - t; : else : seconds = t - sp->ats[sp->timecnt - 1]; : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a8891: 48 01 fa add %rdi,%rdx 0.00 : 7a8894: 48 c1 ff 3f sar $0x3f,%rdi 0.00 : 7a8898: 48 c1 fa 21 sar $0x21,%rdx 0.00 : 7a889c: 48 29 fa sub %rdi,%rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a889f: 4c 8d 6a 01 lea 0x1(%rdx),%r13 0.00 : 7a88a3: 4c 0f af e8 imul %rax,%r13 : if (t < sp->ats[0]) : newt += seconds; 0.00 : 7a88a7: 4b 8d 44 25 00 lea 0x0(%r13,%r12,1),%rax 0.00 : 7a88ac: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 7a88b0: e9 ea fe ff ff jmpq 7a879f 0.00 : 7a88b5: 0f 1f 00 nopl (%rax) : sp = &tz->state; : if (sp->timecnt == 0) : { : /* non-DST zone, use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a88b8: 48 63 c2 movslq %edx,%rax 0.00 : 7a88bb: e9 3f fe ff ff jmpq 7a86ff : lo = mid + 1; : } : i = lo; : } : j = sp->types[i - 1]; : ttisp = &sp->ttis[j]; 0.00 : 7a88c0: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 7a88c3: 48 98 cltq 0.00 : 7a88c5: 0f b6 84 03 98 26 00 movzbl 0x2698(%rbx,%rax,1),%eax 0.00 : 7a88cc: 00 : *before_gmtoff = ttisp->tt_gmtoff; 0.00 : 7a88cd: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a88d1: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.00 : 7a88d5: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 11.11 : 7a88dc: 48 89 16 mov %rdx,(%rsi) : *before_isdst = ttisp->tt_isdst; 0.00 : 7a88df: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax : *boundary = sp->ats[i]; 0.00 : 7a88e5: 48 63 d1 movslq %ecx,%rdx : i = lo; : } : j = sp->types[i - 1]; : ttisp = &sp->ttis[j]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; 0.00 : 7a88e8: 41 89 02 mov %eax,(%r10) : *boundary = sp->ats[i]; 0.00 : 7a88eb: 48 8b 84 d3 18 01 00 mov 0x118(%rbx,%rdx,8),%rax 0.00 : 7a88f2: 00 0.00 : 7a88f3: 49 89 06 mov %rax,(%r14) : j = sp->types[i]; : ttisp = &sp->ttis[j]; 0.00 : 7a88f6: 0f b6 84 13 98 26 00 movzbl 0x2698(%rbx,%rdx,1),%eax 0.00 : 7a88fd: 00 0.00 : 7a88fe: e9 12 ff ff ff jmpq 7a8815 : } : if (t < sp->ats[0]) : { : /* For "before", use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a8903: 48 98 cltq 0.00 : 7a8905: e9 df fe ff ff jmpq 7a87e9 : seconds *= AVGSECSPERYEAR; : if (t < sp->ats[0]) : newt += seconds; : else : newt -= seconds; : if (newt < sp->ats[0] || 0.00 : 7a890a: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 7a890d: 48 98 cltq 0.00 : 7a890f: 48 3b 94 c3 18 01 00 cmp 0x118(%rbx,%rax,8),%rdx 0.00 : 7a8916: 00 0.00 : 7a8917: 0f 8f 93 fe ff ff jg 7a87b0 : newt > sp->ats[sp->timecnt - 1]) : return -1; /* "cannot happen" */ : : result = pg_next_dst_boundary(&newt, before_gmtoff, 0.00 : 7a891d: 48 8d 7d d8 lea -0x28(%rbp),%rdi 0.00 : 7a8921: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 7a8925: 4c 89 f1 mov %r14,%rcx 0.00 : 7a8928: 4c 89 d2 mov %r10,%rdx 0.00 : 7a892b: e8 f0 fc ff ff callq 7a8620 : before_isdst, : boundary, : after_gmtoff, : after_isdst, : tz); : if (t < sp->ats[0]) 0.00 : 7a8930: 4c 3b a3 18 01 00 00 cmp 0x118(%rbx),%r12 0.00 : 7a8937: 7d 08 jge 7a8941 : *boundary -= seconds; 0.00 : 7a8939: 4d 29 2e sub %r13,(%r14) 0.00 : 7a893c: e9 db fd ff ff jmpq 7a871c : else : *boundary += seconds; 0.00 : 7a8941: 4d 01 2e add %r13,(%r14) 0.00 : 7a8944: e9 d3 fd ff ff jmpq 7a871c Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 22.22 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000067120 <_IO_fputs>: ??:0 22.22 : 67120: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 67125: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 11.11 : 6712a: 48 89 f3 mov %rsi,%rbx 0.00 : 6712d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 67132: 48 83 ec 18 sub $0x18,%rsp 0.00 : 67136: 48 89 fd mov %rdi,%rbp 0.00 : 67139: e8 72 9a 01 00 callq 80bb0 <__GI_strlen> 0.00 : 6713e: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 67142: 49 89 c4 mov %rax,%r12 0.00 : 67145: 78 56 js 6719d <_IO_fputs+0x7d> 0.00 : 67147: 4c 8b 8b 88 00 00 00 mov 0x88(%rbx),%r9 0.00 : 6714e: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 67155: 00 00 0.00 : 67157: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 6715b: 74 3b je 67198 <_IO_fputs+0x78> 0.00 : 6715d: 31 d2 xor %edx,%edx 0.00 : 6715f: be 01 00 00 00 mov $0x1,%esi 0.00 : 67164: 89 d0 mov %edx,%eax 0.00 : 67166: 83 3d 47 05 31 00 00 cmpl $0x0,0x310547(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6716d: 74 0d je 6717c <_IO_fputs+0x5c> 0.00 : 6716f: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 67174: 0f 85 27 01 00 00 jne 672a1 <_L_lock_40> 0.00 : 6717a: eb 0a jmp 67186 <_IO_fputs+0x66> 0.00 : 6717c: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 67180: 0f 85 1b 01 00 00 jne 672a1 <_L_lock_40> 0.00 : 67186: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6718d: 4c 89 50 08 mov %r10,0x8(%rax) 11.11 : 67191: 4c 8b 8b 88 00 00 00 mov 0x88(%rbx),%r9 0.00 : 67198: 41 83 41 04 01 addl $0x1,0x4(%r9) 11.11 : 6719d: 8b 83 c0 00 00 00 mov 0xc0(%rbx),%eax 0.00 : 671a3: 85 c0 test %eax,%eax 0.00 : 671a5: 0f 85 9d 00 00 00 jne 67248 <_IO_fputs+0x128> 0.00 : 671ab: c7 83 c0 00 00 00 ff movl $0xffffffff,0xc0(%rbx) 0.00 : 671b2: ff ff ff 0.00 : 671b5: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 11.11 : 671bc: 4c 89 e2 mov %r12,%rdx 11.11 : 671bf: 48 89 ee mov %rbp,%rsi 0.00 : 671c2: 48 89 df mov %rbx,%rdi 0.00 : 671c5: ff 50 38 callq *0x38(%rax) 11.11 : 671c8: 4c 39 e0 cmp %r12,%rax 0.00 : 671cb: be 01 00 00 00 mov $0x1,%esi 0.00 : 671d0: 74 0b je 671dd <_IO_fputs+0xbd> 0.00 : 671d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 671d8: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 671dd: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 671e1: 78 4d js 67230 <_IO_fputs+0x110> 0.00 : 671e3: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 671ea: 8b 42 04 mov 0x4(%rdx),%eax 11.11 : 671ed: 83 e8 01 sub $0x1,%eax 0.00 : 671f0: 85 c0 test %eax,%eax 0.00 : 671f2: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 671f5: 75 39 jne 67230 <_IO_fputs+0x110> 0.00 : 671f7: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 671fe: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 67205: 00 0.00 : 67206: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6720d: 83 3d a0 04 31 00 00 cmpl $0x0,0x3104a0(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 67214: 74 0b je 67221 <_IO_fputs+0x101> 0.00 : 67216: f0 ff 0a lock decl (%rdx) 0.00 : 67219: 0f 85 9d 00 00 00 jne 672bc <_L_unlock_110> 0.00 : 6721f: eb 08 jmp 67229 <_IO_fputs+0x109> 0.00 : 67221: ff 0a decl (%rdx) 0.00 : 67223: 0f 85 93 00 00 00 jne 672bc <_L_unlock_110> 0.00 : 67229: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 67230: 89 f0 mov %esi,%eax 0.00 : 67232: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 67236: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 6723b: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 67240: 48 83 c4 18 add $0x18,%rsp 0.00 : 67244: c3 retq 0.00 : 67245: 0f 1f 00 nopl (%rax) 0.00 : 67248: 83 c0 01 add $0x1,%eax 0.00 : 6724b: 75 8b jne 671d8 <_IO_fputs+0xb8> 0.00 : 6724d: e9 63 ff ff ff jmpq 671b5 <_IO_fputs+0x95> 0.00 : 67252: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 67256: 49 89 c0 mov %rax,%r8 0.00 : 67259: 78 3e js 67299 <_IO_fputs+0x179> 0.00 : 6725b: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 67262: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 67265: 83 e8 01 sub $0x1,%eax 0.00 : 67268: 85 c0 test %eax,%eax 0.00 : 6726a: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6726d: 75 2a jne 67299 <_IO_fputs+0x179> 0.00 : 6726f: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 67276: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6727d: 00 0.00 : 6727e: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 67285: 83 3d 28 04 31 00 00 cmpl $0x0,0x310428(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6728c: 74 07 je 67295 <_IO_fputs+0x175> 0.00 : 6728e: f0 ff 0a lock decl (%rdx) 0.00 : 67291: 75 44 jne 672d7 <_L_unlock_169> 0.00 : 67293: eb 04 jmp 67299 <_IO_fputs+0x179> 0.00 : 67295: ff 0a decl (%rdx) 0.00 : 67297: 75 3e jne 672d7 <_L_unlock_169> 0.00 : 67299: 4c 89 c7 mov %r8,%rdi 0.00 : 6729c: e8 bf 7c fb ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 44.44 ??:0 22.22 ??:0 22.22 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000076010 : 0.00 : 76010: 8b 0d ee c0 2f 00 mov 0x2fc0ee(%rip),%ecx # 372104 <__libc_malloc_initialized> 22.22 : 76016: 85 c9 test %ecx,%ecx 0.00 : 76018: 7e 74 jle 7608e 0.00 : 7601a: 48 8b 15 1f bd 2f 00 mov 0x2fbd1f(%rip),%rdx # 371d40 <_DYNAMIC+0x1e0> 0.00 : 76021: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 76028: 00 00 0.00 : 7602a: 48 8b 0d 77 e7 2f 00 mov 0x2fe777(%rip),%rcx # 3747a8 0.00 : 76031: 48 89 0c 10 mov %rcx,(%rax,%rdx,1) 0.00 : 76035: 48 8b 15 5c e7 2f 00 mov 0x2fe75c(%rip),%rdx # 374798 0.00 : 7603c: 48 8b 05 6d be 2f 00 mov 0x2fbe6d(%rip),%rax # 371eb0 <_DYNAMIC+0x350> 22.22 : 76043: 48 89 10 mov %rdx,(%rax) 0.00 : 76046: 48 8b 15 53 e7 2f 00 mov 0x2fe753(%rip),%rdx # 3747a0 0.00 : 7604d: 48 8b 05 64 be 2f 00 mov 0x2fbe64(%rip),%rax # 371eb8 <_DYNAMIC+0x358> 0.00 : 76054: 48 89 10 mov %rdx,(%rax) 0.00 : 76057: 48 8d 15 42 de 2f 00 lea 0x2fde42(%rip),%rdx # 373ea0 0.00 : 7605e: 48 89 d0 mov %rdx,%rax 0.00 : 76061: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 76068: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : 7606e: 48 8b 80 68 08 00 00 mov 0x868(%rax),%rax 0.00 : 76075: 48 39 d0 cmp %rdx,%rax 0.00 : 76078: 75 ee jne 76068 44.44 : 7607a: c7 05 00 e7 2f 00 00 movl $0x0,0x2fe700(%rip) # 374784 0.00 : 76081: 00 00 00 11.11 : 76084: c7 05 62 e7 2f 00 00 movl $0x0,0x2fe762(%rip) # 3747f0 0.00 : 7608b: 00 00 00 0.00 : 7608e: f3 c3 repz retq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cd620 <__write>: 33.33 : cd620: 83 3d 8d a0 2a 00 00 cmpl $0x0,0x2aa08d(%rip) # 3776b4 <__libc_multiple_threads> 11.11 : cd627: 75 10 jne cd639 <__write_nocancel+0x10> : : 00000000000cd629 <__write_nocancel>: 11.11 : cd629: b8 01 00 00 00 mov $0x1,%eax 0.00 : cd62e: 0f 05 syscall 33.33 : cd630: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd636: 73 31 jae cd669 <__write_nocancel+0x40> 11.11 : cd638: c3 retq 0.00 : cd639: 48 83 ec 08 sub $0x8,%rsp 0.00 : cd63d: e8 ee ab 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : cd642: 48 89 04 24 mov %rax,(%rsp) 0.00 : cd646: b8 01 00 00 00 mov $0x1,%eax 0.00 : cd64b: 0f 05 syscall 0.00 : cd64d: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : cd651: 48 89 c2 mov %rax,%rdx 0.00 : cd654: e8 37 ac 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : cd659: 48 89 d0 mov %rdx,%rax 0.00 : cd65c: 48 83 c4 08 add $0x8,%rsp 0.00 : cd660: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd666: 73 01 jae cd669 <__write_nocancel+0x40> 0.00 : cd668: c3 retq 0.00 : cd669: 48 8b 0d c8 47 2a 00 mov 0x2a47c8(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cd670: 31 d2 xor %edx,%edx 0.00 : cd672: 48 29 c2 sub %rax,%rdx 0.00 : cd675: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cd678: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cd67c: eb ea jmp cd668 <__write_nocancel+0x3f> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000112d10 <_dl_mcount_wrapper_check>: 11.11 : 112d10: 48 8b 05 a1 f0 25 00 mov 0x25f0a1(%rip),%rax # 371db8 <_DYNAMIC+0x258> 11.11 : 112d17: 48 89 fa mov %rdi,%rdx 0.00 : 112d1a: 48 83 b8 48 09 00 00 cmpq $0x0,0x948(%rax) 0.00 : 112d21: 00 11.11 : 112d22: 74 1c je 112d40 <_dl_mcount_wrapper_check+0x30> 0.00 : 112d24: 48 8b 05 05 f1 25 00 mov 0x25f105(%rip),%rax # 371e30 <_DYNAMIC+0x2d0> 0.00 : 112d2b: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 112d2f: 48 89 d6 mov %rdx,%rsi 0.00 : 112d32: 4c 8b 98 d8 00 00 00 mov 0xd8(%rax),%r11 0.00 : 112d39: 41 ff e3 jmpq *%r11 0.00 : 112d3c: 0f 1f 40 00 nopl 0x0(%rax) 66.67 : 112d40: f3 c3 repz retq Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 16.67 /home/Computational/mark/src/dbt3/src/dbgen/print.c:104 16.67 /home/Computational/mark/src/dbt3/src/dbgen/print.c:148 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:104 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:108 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:138 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:151 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:151 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:124 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:141 8.33 /home/Computational/mark/src/dbt3/src/dbgen/print.c:112 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004046c0 : : return(res); : } : : int : dbg_print(int format, FILE *target, void *data, int len, int sep) : { 0.00 : 4046c0: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) /home/Computational/mark/src/dbt3/src/dbgen/print.c:104 8.33 : 4046c5: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 16.67 : 4046ca: 48 83 ec 18 sub $0x18,%rsp : int dollars, : cents; : : switch(format) 0.00 : 4046ce: 83 ff 06 cmp $0x6,%edi : return(res); : } : : int : dbg_print(int format, FILE *target, void *data, int len, int sep) : { 0.00 : 4046d1: 48 89 f5 mov %rsi,%rbp : int dollars, : cents; : : switch(format) /home/Computational/mark/src/dbt3/src/dbgen/print.c:108 8.33 : 4046d4: 77 4a ja 404720 0.00 : 4046d6: 89 f8 mov %edi,%eax 0.00 : 4046d8: ff 24 c5 10 81 40 00 jmpq *0x408110(,%rax,8) 0.00 : 4046df: 90 nop : break; : case DT_KEY: : fprintf(target, "%ld", (long)data); : break; : case DT_MONEY: : cents = (int)*(DSS_HUGE *)data; 0.00 : 4046e0: 8b 1a mov (%rdx),%ebx : if (cents < 0) 0.00 : 4046e2: 85 db test %ebx,%ebx 0.00 : 4046e4: 0f 88 a6 00 00 00 js 404790 : fprintf(target, "-"); : cents = -cents; : } : dollars = cents / 100; : cents %= 100; : fprintf(target, "%d.%02d", dollars, cents); 0.00 : 4046ea: 89 d8 mov %ebx,%eax 0.00 : 4046ec: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 4046f1: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 4046f6: f7 ea imul %edx 0.00 : 4046f8: 89 d8 mov %ebx,%eax 0.00 : 4046fa: be c0 80 40 00 mov $0x4080c0,%esi 0.00 : 4046ff: c1 f8 1f sar $0x1f,%eax 0.00 : 404702: 48 89 ef mov %rbp,%rdi 0.00 : 404705: c1 fa 05 sar $0x5,%edx 0.00 : 404708: 29 c2 sub %eax,%edx 0.00 : 40470a: 89 d0 mov %edx,%eax 0.00 : 40470c: 0f af c1 imul %ecx,%eax 0.00 : 40470f: 29 c3 sub %eax,%ebx 0.00 : 404711: 31 c0 xor %eax,%eax 0.00 : 404713: 89 d9 mov %ebx,%ecx 0.00 : 404715: e8 46 c7 ff ff callq 400e60 /home/Computational/mark/src/dbt3/src/dbgen/print.c:138 8.33 : 40471a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : #ifdef EOL_HANDLING : if (sep) : #endif /* EOL_HANDLING */ : fprintf(target, "%c", (char) SEPARATOR); /home/Computational/mark/src/dbt3/src/dbgen/print.c:148 16.67 : 404720: 48 89 ee mov %rbp,%rsi 0.00 : 404723: bf 7c 00 00 00 mov $0x7c,%edi 0.00 : 404728: e8 f3 c6 ff ff callq 400e20 : : return(0); : } /home/Computational/mark/src/dbt3/src/dbgen/print.c:151 8.33 : 40472d: 31 c0 xor %eax,%eax 0.00 : 40472f: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 404734: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 8.33 : 404739: 48 83 c4 18 add $0x18,%rsp 0.00 : 40473d: c3 retq 0.00 : 40473e: 66 90 xchg %ax,%ax : break; : case DT_HUGE: : fprintf(target, HUGE_FORMAT, *(DSS_HUGE *)data); : break; : case DT_KEY: : fprintf(target, "%ld", (long)data); 0.00 : 404740: be 07 80 40 00 mov $0x408007,%esi 0.00 : 404745: 48 89 ef mov %rbp,%rdi 0.00 : 404748: 31 c0 xor %eax,%eax 0.00 : 40474a: e8 11 c7 ff ff callq 400e60 : break; 0.00 : 40474f: eb cf jmp 404720 0.00 : 404751: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif /* MVS */ : case DT_INT: : fprintf(target, "%ld", (long)data); : break; : case DT_HUGE: : fprintf(target, HUGE_FORMAT, *(DSS_HUGE *)data); 0.00 : 404758: 48 8b 12 mov (%rdx),%rdx /home/Computational/mark/src/dbt3/src/dbgen/print.c:124 8.33 : 40475b: be 82 70 40 00 mov $0x407082,%esi 0.00 : 404760: 48 89 ef mov %rbp,%rdi 0.00 : 404763: 31 c0 xor %eax,%eax 0.00 : 404765: e8 f6 c6 ff ff callq 400e60 : break; 0.00 : 40476a: eb b4 jmp 404720 0.00 : 40476c: 0f 1f 40 00 nopl 0x0(%rax) : dollars = cents / 100; : cents %= 100; : fprintf(target, "%d.%02d", dollars, cents); : break; : case DT_CHR: : fprintf(target, "%c", *(char *)data); /home/Computational/mark/src/dbt3/src/dbgen/print.c:141 8.33 : 404770: 0f be 3a movsbl (%rdx),%edi 0.00 : 404773: e8 a8 c6 ff ff callq 400e20 0.00 : 404778: eb a6 jmp 404720 0.00 : 40477a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : cents; : : switch(format) : { : case DT_STR: : fprintf(target, "%s", (char *)data); 0.00 : 404780: 48 89 d7 mov %rdx,%rdi 0.00 : 404783: e8 88 c6 ff ff callq 400e10 : break; /home/Computational/mark/src/dbt3/src/dbgen/print.c:112 8.33 : 404788: eb 96 jmp 404720 0.00 : 40478a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : case DT_MONEY: : cents = (int)*(DSS_HUGE *)data; : if (cents < 0) : { : fprintf(target, "-"); 0.00 : 404790: bf 2d 00 00 00 mov $0x2d,%edi : cents = -cents; 0.00 : 404795: f7 db neg %ebx : break; : case DT_MONEY: : cents = (int)*(DSS_HUGE *)data; : if (cents < 0) : { : fprintf(target, "-"); 0.00 : 404797: e8 84 c6 ff ff callq 400e20 0.00 : 40479c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4047a0: e9 45 ff ff ff jmpq 4046ea Sorted summary for file /bin/bash ---------------------------------------------- 55.56 ??:0 33.33 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004582c0 : ??:0 33.33 : 4582c0: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 55.56 : 4582c5: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 11.11 : 4582ca: 49 89 fc mov %rdi,%r12 0.00 : 4582cd: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 4582d2: 48 83 ec 18 sub $0x18,%rsp 0.00 : 4582d6: e8 45 de fb ff callq 416120 0.00 : 4582db: 48 85 c0 test %rax,%rax 0.00 : 4582de: 48 89 c5 mov %rax,%rbp 0.00 : 4582e1: 74 1d je 458300 0.00 : 4582e3: 48 89 e8 mov %rbp,%rax 0.00 : 4582e6: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4582ea: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 4582ef: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 4582f4: 48 83 c4 18 add $0x18,%rsp 0.00 : 4582f8: c3 retq 0.00 : 4582f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 458300: 31 c0 xor %eax,%eax 0.00 : 458302: e8 e9 fe ff ff callq 4581f0 0.00 : 458307: 31 ff xor %edi,%edi 0.00 : 458309: 48 89 c3 mov %rax,%rbx 0.00 : 45830c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 458311: be e8 74 47 00 mov $0x4774e8,%esi 0.00 : 458316: 48 89 05 13 e0 23 00 mov %rax,0x23e013(%rip) # 696330 0.00 : 45831d: e8 5e e5 fb ff callq 416880 0.00 : 458322: 48 89 da mov %rbx,%rdx 0.00 : 458325: 48 89 c7 mov %rax,%rdi 0.00 : 458328: 4c 89 e6 mov %r12,%rsi 0.00 : 45832b: 31 c0 xor %eax,%eax 0.00 : 45832d: e8 5e 89 fd ff callq 430c90 0.00 : 458332: eb af jmp 4582e3 Sorted summary for file /bin/bash ---------------------------------------------- 28.57 ??:0 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004697a0 : 0.00 : 4697a0: 41 55 push %r13 28.57 : 4697a2: 41 89 fd mov %edi,%r13d 0.00 : 4697a5: 41 54 push %r12 0.00 : 4697a7: 49 89 f4 mov %rsi,%r12 0.00 : 4697aa: 55 push %rbp 0.00 : 4697ab: 48 89 d5 mov %rdx,%rbp 0.00 : 4697ae: 53 push %rbx 0.00 : 4697af: 48 83 ec 08 sub $0x8,%rsp 0.00 : 4697b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4697b8: 48 89 ea mov %rbp,%rdx 0.00 : 4697bb: 4c 89 e6 mov %r12,%rsi 0.00 : 4697be: 44 89 ef mov %r13d,%edi 0.00 : 4697c1: e8 3a c9 fa ff callq 416100 14.29 : 4697c6: 48 85 c0 test %rax,%rax 28.57 : 4697c9: 48 89 c3 mov %rax,%rbx 0.00 : 4697cc: 79 0a jns 4697d8 0.00 : 4697ce: e8 6d d0 fa ff callq 416840 <__errno_location@plt> 0.00 : 4697d3: 83 38 04 cmpl $0x4,(%rax) 0.00 : 4697d6: 74 e0 je 4697b8 0.00 : 4697d8: 48 83 c4 08 add $0x8,%rsp 0.00 : 4697dc: 48 89 d8 mov %rbx,%rax 0.00 : 4697df: 5b pop %rbx 0.00 : 4697e0: 5d pop %rbp 14.29 : 4697e1: 41 5c pop %r12 14.29 : 4697e3: 41 5d pop %r13 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000029a10 <_nl_find_locale>: 0.00 : 29a10: 55 push %rbp 0.00 : 29a11: 48 89 e5 mov %rsp,%rbp 0.00 : 29a14: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 29a18: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 29a1c: 49 89 cc mov %rcx,%r12 0.00 : 29a1f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 29a23: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 29a27: 41 89 d6 mov %edx,%r14d 0.00 : 29a2a: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 29a2e: 48 81 ec a0 00 00 00 sub $0xa0,%rsp 0.00 : 29a35: 48 8b 11 mov (%rcx),%rdx 0.00 : 29a38: 49 89 fd mov %rdi,%r13 0.00 : 29a3b: 49 89 f7 mov %rsi,%r15 0.00 : 29a3e: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 29a41: 74 7d je 29ac0 <_nl_find_locale+0xb0> 0.00 : 29a43: 48 85 d2 test %rdx,%rdx 0.00 : 29a46: 74 09 je 29a51 <_nl_find_locale+0x41> 0.00 : 29a48: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 29a4b: 0f 85 cf 00 00 00 jne 29b20 <_nl_find_locale+0x110> 0.00 : 29a51: 48 8d 05 ee 26 11 00 lea 0x1126ee(%rip),%rax # 13c146 <_nl_C_name> 0.00 : 29a58: 49 89 04 24 mov %rax,(%r12) 0.00 : 29a5c: 48 89 c3 mov %rax,%rbx 0.00 : 29a5f: 48 8d 35 e0 26 11 00 lea 0x1126e0(%rip),%rsi # 13c146 <_nl_C_name> 0.00 : 29a66: 48 89 df mov %rbx,%rdi 0.00 : 29a69: e8 e2 56 05 00 callq 7f150 <__GI_strcmp> 0.00 : 29a6e: 85 c0 test %eax,%eax 0.00 : 29a70: 0f 84 da 00 00 00 je 29b50 <_nl_find_locale+0x140> 0.00 : 29a76: 48 8d 35 63 10 11 00 lea 0x111063(%rip),%rsi # 13aae0 <_nl_POSIX_name> 0.00 : 29a7d: 48 89 df mov %rbx,%rdi 0.00 : 29a80: e8 cb 56 05 00 callq 7f150 <__GI_strcmp> 0.00 : 29a85: 85 c0 test %eax,%eax 0.00 : 29a87: 0f 84 c3 00 00 00 je 29b50 <_nl_find_locale+0x140> 0.00 : 29a8d: 4d 85 ed test %r13,%r13 0.00 : 29a90: 0f 85 e9 00 00 00 jne 29b7f <_nl_find_locale+0x16f> 0.00 : 29a96: 4c 89 e6 mov %r12,%rsi 0.00 : 29a99: 44 89 f7 mov %r14d,%edi 0.00 : 29a9c: e8 2f 0b 00 00 callq 2a5d0 <_nl_load_locale_from_archive> 0.00 : 29aa1: 48 85 c0 test %rax,%rax 0.00 : 29aa4: 0f 84 c4 00 00 00 je 29b6e <_nl_find_locale+0x15e> 0.00 : 29aaa: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 29aae: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 29ab2: 4c 8b 6d e8 mov -0x18(%rbp),%r13 11.11 : 29ab6: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 29aba: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 29abe: c9 leaveq 0.00 : 29abf: c3 retq 0.00 : 29ac0: 48 8d 3d d4 0d 11 00 lea 0x110dd4(%rip),%rdi # 13a89b 0.00 : 29ac7: e8 84 b3 00 00 callq 34e50 11.11 : 29acc: 48 85 c0 test %rax,%rax 0.00 : 29acf: 49 89 04 24 mov %rax,(%r12) 0.00 : 29ad3: 74 05 je 29ada <_nl_find_locale+0xca> 0.00 : 29ad5: 80 38 00 cmpb $0x0,(%rax) 0.00 : 29ad8: 75 66 jne 29b40 <_nl_find_locale+0x130> 0.00 : 29ada: 48 8d 05 a8 cf 0f 00 lea 0xfcfa8(%rip),%rax # 126a89 <_nl_category_name_idxs> 0.00 : 29ae1: 49 63 d6 movslq %r14d,%rdx 0.00 : 29ae4: 0f b6 3c 10 movzbl (%rax,%rdx,1),%edi 0.00 : 29ae8: 48 8d 05 11 cf 0f 00 lea 0xfcf11(%rip),%rax # 126a00 <_nl_category_names> 0.00 : 29aef: 48 01 c7 add %rax,%rdi 0.00 : 29af2: e8 59 b3 00 00 callq 34e50 0.00 : 29af7: 48 85 c0 test %rax,%rax 0.00 : 29afa: 49 89 04 24 mov %rax,(%r12) 0.00 : 29afe: 74 05 je 29b05 <_nl_find_locale+0xf5> 0.00 : 29b00: 80 38 00 cmpb $0x0,(%rax) 0.00 : 29b03: 75 3b jne 29b40 <_nl_find_locale+0x130> 0.00 : 29b05: 48 8d 3d 96 0d 11 00 lea 0x110d96(%rip),%rdi # 13a8a2 0.00 : 29b0c: e8 3f b3 00 00 callq 34e50 0.00 : 29b11: 49 89 04 24 mov %rax,(%r12) 0.00 : 29b15: 48 89 c2 mov %rax,%rdx 0.00 : 29b18: e9 26 ff ff ff jmpq 29a43 <_nl_find_locale+0x33> 0.00 : 29b1d: 0f 1f 00 nopl (%rax) 0.00 : 29b20: 48 8b 05 c9 82 34 00 mov 0x3482c9(%rip),%rax # 371df0 <_DYNAMIC+0x290> 11.11 : 29b27: 8b 08 mov (%rax),%ecx 0.00 : 29b29: 85 c9 test %ecx,%ecx 0.00 : 29b2b: 0f 85 de 02 00 00 jne 29e0f <_nl_find_locale+0x3ff> 0.00 : 29b31: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 29b35: e9 25 ff ff ff jmpq 29a5f <_nl_find_locale+0x4f> 0.00 : 29b3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 29b40: 48 89 c2 mov %rax,%rdx 0.00 : 29b43: e9 00 ff ff ff jmpq 29a48 <_nl_find_locale+0x38> 0.00 : 29b48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 29b4f: 00 0.00 : 29b50: 48 8d 05 ef 25 11 00 lea 0x1125ef(%rip),%rax # 13c146 <_nl_C_name> 0.00 : 29b57: 49 63 d6 movslq %r14d,%rdx 0.00 : 29b5a: 49 89 04 24 mov %rax,(%r12) 0.00 : 29b5e: 48 8d 05 7b 6f 34 00 lea 0x346f7b(%rip),%rax # 370ae0 <_nl_C_locobj> 0.00 : 29b65: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 29b69: e9 3c ff ff ff jmpq 29aaa <_nl_find_locale+0x9a> 0.00 : 29b6e: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 29b72: 4c 8d 2d 57 8c 11 00 lea 0x118c57(%rip),%r13 # 1427d0 <_nl_default_locale_path> 0.00 : 29b79: 41 bf 10 00 00 00 mov $0x10,%r15d 0.00 : 29b7f: 48 89 df mov %rbx,%rdi 0.00 : 29b82: e8 99 5f 00 00 callq 2fb20 <_nl_expand_alias> 0.00 : 29b87: 48 85 c0 test %rax,%rax 0.00 : 29b8a: 48 89 c3 mov %rax,%rbx 0.00 : 29b8d: 0f 84 73 02 00 00 je 29e06 <_nl_find_locale+0x3f6> 0.00 : 29b93: 48 89 df mov %rbx,%rdi 0.00 : 29b96: 4d 63 e6 movslq %r14d,%r12 0.00 : 29b99: e8 12 70 05 00 callq 80bb0 <__GI_strlen> 0.00 : 29b9e: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 29ba2: 48 83 c0 1f add $0x1f,%rax 0.00 : 29ba6: 48 89 de mov %rbx,%rsi 0.00 : 29ba9: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 29bad: 48 29 c4 sub %rax,%rsp 0.00 : 29bb0: 48 8d 7c 24 37 lea 0x37(%rsp),%rdi 0.00 : 29bb5: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 29bb9: e8 92 ab 05 00 callq 84750 0.00 : 29bbe: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 29bc2: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 29bc6: 48 8d 75 d0 lea -0x30(%rbp),%rsi 0.00 : 29bca: 4c 8d 4d b0 lea -0x50(%rbp),%r9 0.00 : 29bce: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : 29bd2: 48 89 c7 mov %rax,%rdi 0.00 : 29bd5: e8 86 68 00 00 callq 30460 <_nl_explode_name> 0.00 : 29bda: 89 c3 mov %eax,%ebx 0.00 : 29bdc: 48 8d 05 a6 ce 0f 00 lea 0xfcea6(%rip),%rax # 126a89 <_nl_category_name_idxs> 0.00 : 29be3: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 29be7: 4c 8b 45 d0 mov -0x30(%rbp),%r8 0.00 : 29beb: 89 d9 mov %ebx,%ecx 0.00 : 29bed: 4c 89 ee mov %r13,%rsi 0.00 : 29bf0: 42 0f b6 14 20 movzbl (%rax,%r12,1),%edx 0.00 : 29bf5: 48 8d 05 04 ce 0f 00 lea 0xfce04(%rip),%rax # 126a00 <_nl_category_names> 0.00 : 29bfc: c7 44 24 20 00 00 00 movl $0x0,0x20(%rsp) 0.00 : 29c03: 00 0.00 : 29c04: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 29c08: 4c 89 fa mov %r15,%rdx 0.00 : 29c0b: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 29c0f: 48 8d 05 aa d6 34 00 lea 0x34d6aa(%rip),%rax # 3772c0 <_nl_locale_file_list> 0.00 : 29c16: 4a 8d 04 e0 lea (%rax,%r12,8),%rax 0.00 : 29c1a: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 29c1e: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 29c22: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 29c26: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 29c2b: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 29c2f: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 29c34: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 29c38: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 29c3d: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 29c41: 48 89 04 24 mov %rax,(%rsp) 0.00 : 29c45: e8 46 63 00 00 callq 2ff90 <_nl_make_l10nflist> 0.00 : 29c4a: 48 85 c0 test %rax,%rax 0.00 : 29c4d: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 29c51: 0f 84 39 01 00 00 je 29d90 <_nl_find_locale+0x380> 0.00 : 29c57: 83 e3 01 and $0x1,%ebx 0.00 : 29c5a: 0f 85 98 01 00 00 jne 29df8 <_nl_find_locale+0x3e8> 0.00 : 29c60: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29c64: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 29c67: 85 d2 test %edx,%edx 0.00 : 29c69: 0f 84 79 01 00 00 je 29de8 <_nl_find_locale+0x3d8> 0.00 : 29c6f: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29c73: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 29c77: 48 85 db test %rbx,%rbx 0.00 : 29c7a: 0f 84 08 02 00 00 je 29e88 <_nl_find_locale+0x478> 0.00 : 29c80: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) 0.00 : 29c85: 0f 84 b9 00 00 00 je 29d44 <_nl_find_locale+0x334> 0.00 : 29c8b: 48 8d 05 2e ce 0f 00 lea 0xfce2e(%rip),%rax # 126ac0 0.00 : 29c92: 4a 63 04 a0 movslq (%rax,%r12,4),%rax 0.00 : 29c96: 48 8b 5c c3 40 mov 0x40(%rbx,%rax,8),%rbx 0.00 : 29c9b: 48 85 db test %rbx,%rbx 0.00 : 29c9e: 0f 84 c5 01 00 00 je 29e69 <_nl_find_locale+0x459> 0.00 : 29ca4: 48 89 df mov %rbx,%rdi 0.00 : 29ca7: e8 04 6f 05 00 callq 80bb0 <__GI_strlen> 0.00 : 29cac: 48 83 c0 21 add $0x21,%rax 0.00 : 29cb0: 48 89 de mov %rbx,%rsi 0.00 : 29cb3: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 29cb7: 48 29 c4 sub %rax,%rsp 0.00 : 29cba: 4c 8d 6c 24 37 lea 0x37(%rsp),%r13 0.00 : 29cbf: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 29cc3: 4c 89 ef mov %r13,%rdi 0.00 : 29cc6: e8 35 fc ff ff callq 29900 0.00 : 29ccb: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 29ccf: 48 89 df mov %rbx,%rdi 0.00 : 29cd2: e8 d9 6e 05 00 callq 80bb0 <__GI_strlen> 0.00 : 29cd7: 48 83 c0 21 add $0x21,%rax 0.00 : 29cdb: 48 89 de mov %rbx,%rsi 0.00 : 29cde: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 29ce2: 48 29 c4 sub %rax,%rsp 0.00 : 29ce5: 4c 8d 64 24 37 lea 0x37(%rsp),%r12 0.00 : 29cea: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 29cee: 4c 89 e7 mov %r12,%rdi 0.00 : 29cf1: e8 0a fc ff ff callq 29900 0.00 : 29cf6: 48 8b 0d 5b 6e 34 00 mov 0x346e5b(%rip),%rcx # 370b58 <_nl_C_locobj+0x78> 0.00 : 29cfd: 4c 89 ea mov %r13,%rdx 11.11 : 29d00: 48 0f be 02 movsbq (%rdx),%rax 0.00 : 29d04: 8b 04 81 mov (%rcx,%rax,4),%eax 0.00 : 29d07: 88 02 mov %al,(%rdx) 0.00 : 29d09: 48 83 c2 01 add $0x1,%rdx 0.00 : 29d0d: 84 c0 test %al,%al 0.00 : 29d0f: 75 ef jne 29d00 <_nl_find_locale+0x2f0> 0.00 : 29d11: 4c 89 e2 mov %r12,%rdx 0.00 : 29d14: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 29d18: 48 0f be 02 movsbq (%rdx),%rax 0.00 : 29d1c: 8b 04 81 mov (%rcx,%rax,4),%eax 11.11 : 29d1f: 88 02 mov %al,(%rdx) 0.00 : 29d21: 48 83 c2 01 add $0x1,%rdx 0.00 : 29d25: 84 c0 test %al,%al 0.00 : 29d27: 75 ef jne 29d18 <_nl_find_locale+0x308> 0.00 : 29d29: 4c 89 ee mov %r13,%rsi 0.00 : 29d2c: 4c 89 e7 mov %r12,%rdi 0.00 : 29d2f: e8 7c 64 ff ff callq 201b0 <__gconv_compare_alias> 11.11 : 29d34: 85 c0 test %eax,%eax 0.00 : 29d36: 0f 85 a5 00 00 00 jne 29de1 <_nl_find_locale+0x3d1> 0.00 : 29d3c: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29d40: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 29d44: 48 83 3b 00 cmpq $0x0,(%rbx) 0.00 : 29d48: 0f 84 dc 00 00 00 je 29e2a <_nl_find_locale+0x41a> 0.00 : 29d4e: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 29d52: 48 85 ff test %rdi,%rdi 0.00 : 29d55: 74 1f je 29d76 <_nl_find_locale+0x366> 0.00 : 29d57: 48 8d 35 74 23 11 00 lea 0x112374(%rip),%rsi # 13c0d2 <__PRETTY_FUNCTION__.9753+0x1c> 0.00 : 29d5e: e8 4d a8 05 00 callq 845b0 <__strcasecmp> 0.00 : 29d63: 85 c0 test %eax,%eax 0.00 : 29d65: 75 0f jne 29d76 <_nl_find_locale+0x366> 0.00 : 29d67: c7 43 34 01 00 00 00 movl $0x1,0x34(%rbx) 0.00 : 29d6e: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29d72: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 29d76: 83 7b 30 fd cmpl $0xfffffffd,0x30(%rbx) 0.00 : 29d7a: 77 0c ja 29d88 <_nl_find_locale+0x378> 0.00 : 29d7c: 83 43 30 01 addl $0x1,0x30(%rbx) 0.00 : 29d80: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29d84: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 29d88: 48 89 d8 mov %rbx,%rax 0.00 : 29d8b: e9 1a fd ff ff jmpq 29aaa <_nl_find_locale+0x9a> 0.00 : 29d90: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 29d94: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 29d98: 89 d9 mov %ebx,%ecx 0.00 : 29d9a: 4c 8b 45 d0 mov -0x30(%rbp),%r8 0.00 : 29d9e: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 29da2: 4c 89 fa mov %r15,%rdx 0.00 : 29da5: 4c 89 ee mov %r13,%rsi 0.00 : 29da8: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 29daf: 00 0.00 : 29db0: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 29db5: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 29db9: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 29dbe: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 29dc2: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 29dc7: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 29dcb: 48 89 04 24 mov %rax,(%rsp) 0.00 : 29dcf: e8 bc 61 00 00 callq 2ff90 <_nl_make_l10nflist> 0.00 : 29dd4: 48 85 c0 test %rax,%rax 0.00 : 29dd7: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 29ddb: 0f 85 76 fe ff ff jne 29c57 <_nl_find_locale+0x247> 0.00 : 29de1: 31 c0 xor %eax,%eax 0.00 : 29de3: e9 c2 fc ff ff jmpq 29aaa <_nl_find_locale+0x9a> 0.00 : 29de8: 44 89 f6 mov %r14d,%esi 0.00 : 29deb: 48 89 c7 mov %rax,%rdi 0.00 : 29dee: e8 fd 04 00 00 callq 2a2f0 <_nl_load_locale> 0.00 : 29df3: e9 77 fe ff ff jmpq 29c6f <_nl_find_locale+0x25f> 0.00 : 29df8: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 29dfc: e8 9f 4a ff ff callq 1e8a0 0.00 : 29e01: e9 5a fe ff ff jmpq 29c60 <_nl_find_locale+0x250> 0.00 : 29e06: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 29e0a: e9 84 fd ff ff jmpq 29b93 <_nl_find_locale+0x183> 0.00 : 29e0f: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 29e14: 48 89 d7 mov %rdx,%rdi 0.00 : 29e17: e8 74 52 05 00 callq 7f090 <__GI_strchr> 0.00 : 29e1c: 48 85 c0 test %rax,%rax 0.00 : 29e1f: 0f 85 2c fc ff ff jne 29a51 <_nl_find_locale+0x41> 0.00 : 29e25: e9 07 fd ff ff jmpq 29b31 <_nl_find_locale+0x121> 0.00 : 29e2a: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29e2e: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 29e33: 48 8b 38 mov (%rax),%rdi 0.00 : 29e36: e8 65 88 05 00 callq 826a0 <__GI_strrchr> 0.00 : 29e3b: 48 89 c6 mov %rax,%rsi 0.00 : 29e3e: 48 8d 78 ff lea -0x1(%rax),%rdi 0.00 : 29e42: eb 03 jmp 29e47 <_nl_find_locale+0x437> 0.00 : 29e44: 48 89 c7 mov %rax,%rdi 0.00 : 29e47: 80 7f ff 2f cmpb $0x2f,-0x1(%rdi) 11.11 : 29e4b: 48 8d 47 ff lea -0x1(%rdi),%rax 0.00 : 29e4f: 75 f3 jne 29e44 <_nl_find_locale+0x434> 0.00 : 29e51: 48 29 fe sub %rdi,%rsi 0.00 : 29e54: e8 b7 6a 05 00 callq 80910 <__strndup> 0.00 : 29e59: 48 89 03 mov %rax,(%rbx) 0.00 : 29e5c: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29e60: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 29e64: e9 e5 fe ff ff jmpq 29d4e <_nl_find_locale+0x33e> 0.00 : 29e69: 48 8d 0d 70 89 11 00 lea 0x118970(%rip),%rcx # 1427e0 <__PRETTY_FUNCTION__.11057> 0.00 : 29e70: 48 8d 35 30 0a 11 00 lea 0x110a30(%rip),%rsi # 13a8a7 0.00 : 29e77: 48 8d 3d 36 0a 11 00 lea 0x110a36(%rip),%rdi # 13a8b4 0.00 : 29e7e: ba e1 00 00 00 mov $0xe1,%edx 0.00 : 29e83: e8 98 1a 00 00 callq 2b920 <__assert_fail> 0.00 : 29e88: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 29e8c: 45 31 ed xor %r13d,%r13d 0.00 : 29e8f: 48 85 ff test %rdi,%rdi 0.00 : 29e92: 75 1d jne 29eb1 <_nl_find_locale+0x4a1> 0.00 : 29e94: eb 5d jmp 29ef3 <_nl_find_locale+0x4e3> 0.00 : 29e96: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 29e9d: 00 00 00 0.00 : 29ea0: 41 83 c5 01 add $0x1,%r13d 0.00 : 29ea4: 49 63 dd movslq %r13d,%rbx 0.00 : 29ea7: 48 8b 7c d8 20 mov 0x20(%rax,%rbx,8),%rdi 0.00 : 29eac: 48 85 ff test %rdi,%rdi 0.00 : 29eaf: 74 1f je 29ed0 <_nl_find_locale+0x4c0> 0.00 : 29eb1: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 29eb4: 85 c0 test %eax,%eax 0.00 : 29eb6: 75 08 jne 29ec0 <_nl_find_locale+0x4b0> 0.00 : 29eb8: 44 89 f6 mov %r14d,%esi 0.00 : 29ebb: e8 30 04 00 00 callq 2a2f0 <_nl_load_locale> 0.00 : 29ec0: 48 8b 45 98 mov -0x68(%rbp),%rax 11.11 : 29ec4: 48 8b 7c d8 20 mov 0x20(%rax,%rbx,8),%rdi 11.11 : 29ec9: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) 0.00 : 29ece: 74 d0 je 29ea0 <_nl_find_locale+0x490> 0.00 : 29ed0: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 29ed4: 48 89 78 20 mov %rdi,0x20(%rax) 0.00 : 29ed8: 48 8b 5c d8 20 mov 0x20(%rax,%rbx,8),%rbx 0.00 : 29edd: 48 85 db test %rbx,%rbx 0.00 : 29ee0: 48 89 5d 98 mov %rbx,-0x68(%rbp) 0.00 : 29ee4: 0f 84 f7 fe ff ff je 29de1 <_nl_find_locale+0x3d1> 0.00 : 29eea: 48 8b 5b 10 mov 0x10(%rbx),%rbx 0.00 : 29eee: e9 8d fd ff ff jmpq 29c80 <_nl_find_locale+0x270> 0.00 : 29ef3: 48 89 fb mov %rdi,%rbx 0.00 : 29ef6: eb d8 jmp 29ed0 <_nl_find_locale+0x4c0> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000034790 : 0.00 : 34790: 41 57 push %r15 10.00 : 34792: 41 56 push %r14 0.00 : 34794: 41 55 push %r13 0.00 : 34796: 41 54 push %r12 0.00 : 34798: 55 push %rbp 0.00 : 34799: 53 push %rbx 0.00 : 3479a: 48 83 ec 48 sub $0x48,%rsp 0.00 : 3479e: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 347a2: 48 89 7c 24 20 mov %rdi,0x20(%rsp) 0.00 : 347a7: 48 89 74 24 18 mov %rsi,0x18(%rsp) 0.00 : 347ac: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 347b1: 0f 86 c9 00 00 00 jbe 34880 0.00 : 347b7: 49 89 d5 mov %rdx,%r13 0.00 : 347ba: 48 89 f3 mov %rsi,%rbx 0.00 : 347bd: 49 89 d4 mov %rdx,%r12 0.00 : 347c0: 49 d1 ed shr %r13 0.00 : 347c3: 49 89 f6 mov %rsi,%r14 0.00 : 347c6: 4c 89 e8 mov %r13,%rax 0.00 : 347c9: 4c 89 ea mov %r13,%rdx 0.00 : 347cc: 4d 29 ec sub %r13,%r12 0.00 : 347cf: 48 0f af 07 imul (%rdi),%rax 0.00 : 347d3: 48 01 c3 add %rax,%rbx 0.00 : 347d6: e8 b5 ff ff ff callq 34790 10.00 : 347db: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 347e0: 4c 89 e2 mov %r12,%rdx 0.00 : 347e3: 48 89 de mov %rbx,%rsi 0.00 : 347e6: e8 a5 ff ff ff callq 34790 0.00 : 347eb: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 347f0: 48 8b 10 mov (%rax),%rdx 0.00 : 347f3: 48 8b 68 20 mov 0x20(%rax),%rbp 0.00 : 347f7: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : 347fc: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 34801: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 34805: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 3480a: 48 8b 52 18 mov 0x18(%rdx),%rdx 0.00 : 3480e: 48 89 54 24 38 mov %rdx,0x38(%rsp) 10.00 : 34813: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 34818: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 3481c: 48 83 f8 01 cmp $0x1,%rax 0.00 : 34820: 0f 84 ca 00 00 00 je 348f0 0.00 : 34826: 73 68 jae 34890 0.00 : 34828: 4d 85 e4 test %r12,%r12 0.00 : 3482b: 74 3b je 34868 0.00 : 3482d: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 34832: 48 89 de mov %rbx,%rsi 0.00 : 34835: 4c 89 f7 mov %r14,%rdi 0.00 : 34838: ff 54 24 30 callq *0x30(%rsp) 0.00 : 3483c: 85 c0 test %eax,%eax 0.00 : 3483e: 0f 8e 74 01 00 00 jle 349b8 0.00 : 34844: 8b 03 mov (%rbx),%eax 0.00 : 34846: 49 83 ec 01 sub $0x1,%r12 0.00 : 3484a: 48 83 c3 04 add $0x4,%rbx 0.00 : 3484e: 89 45 00 mov %eax,0x0(%rbp) 0.00 : 34851: 48 83 c5 04 add $0x4,%rbp 0.00 : 34855: 4d 85 ed test %r13,%r13 0.00 : 34858: 74 5e je 348b8 0.00 : 3485a: 4d 85 e4 test %r12,%r12 0.00 : 3485d: 75 ce jne 3482d 0.00 : 3485f: 4d 85 ed test %r13,%r13 0.00 : 34862: 74 54 je 348b8 0.00 : 34864: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 34868: 4c 0f af 6c 24 28 imul 0x28(%rsp),%r13 0.00 : 3486e: 4c 89 f6 mov %r14,%rsi 0.00 : 34871: 48 89 ef mov %rbp,%rdi 0.00 : 34874: 4c 89 ea mov %r13,%rdx 0.00 : 34877: e8 d4 fe 04 00 callq 84750 0.00 : 3487c: eb 3a jmp 348b8 0.00 : 3487e: 66 90 xchg %ax,%ax 0.00 : 34880: 48 83 c4 48 add $0x48,%rsp 0.00 : 34884: 5b pop %rbx 0.00 : 34885: 5d pop %rbp 0.00 : 34886: 41 5c pop %r12 0.00 : 34888: 41 5d pop %r13 0.00 : 3488a: 41 5e pop %r14 0.00 : 3488c: 41 5f pop %r15 0.00 : 3488e: c3 retq 0.00 : 3488f: 90 nop 0.00 : 34890: 48 83 f8 02 cmp $0x2,%rax 0.00 : 34894: 0f 84 96 01 00 00 je 34a30 0.00 : 3489a: 48 83 f8 03 cmp $0x3,%rax 0.00 : 3489e: 0f 84 2c 01 00 00 je 349d0 0.00 : 348a4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 348a8: 4d 85 ed test %r13,%r13 0.00 : 348ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 348b0: 75 7e jne 34930 0.00 : 348b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 348b8: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 348bd: 4c 29 64 24 10 sub %r12,0x10(%rsp) 10.00 : 348c2: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 348c7: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 348cc: 48 0f af 44 24 28 imul 0x28(%rsp),%rax 0.00 : 348d2: 48 8b 72 20 mov 0x20(%rdx),%rsi 0.00 : 348d6: 48 83 c4 48 add $0x48,%rsp 0.00 : 348da: 5b pop %rbx 0.00 : 348db: 5d pop %rbp 0.00 : 348dc: 41 5c pop %r12 0.00 : 348de: 41 5d pop %r13 0.00 : 348e0: 41 5e pop %r14 0.00 : 348e2: 41 5f pop %r15 0.00 : 348e4: 48 89 c2 mov %rax,%rdx 0.00 : 348e7: e9 64 fe 04 00 jmpq 84750 0.00 : 348ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 348f0: 4d 85 e4 test %r12,%r12 0.00 : 348f3: 0f 84 6f ff ff ff je 34868 0.00 : 348f9: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 348fe: 48 89 de mov %rbx,%rsi 0.00 : 34901: 4c 89 f7 mov %r14,%rdi 0.00 : 34904: ff 54 24 30 callq *0x30(%rsp) 0.00 : 34908: 85 c0 test %eax,%eax 0.00 : 3490a: 7e 6c jle 34978 0.00 : 3490c: 48 8b 03 mov (%rbx),%rax 0.00 : 3490f: 49 83 ec 01 sub $0x1,%r12 0.00 : 34913: 48 83 c3 08 add $0x8,%rbx 0.00 : 34917: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 3491b: 48 83 c5 08 add $0x8,%rbp 0.00 : 3491f: 4d 85 ed test %r13,%r13 0.00 : 34922: 74 94 je 348b8 0.00 : 34924: 4d 85 e4 test %r12,%r12 0.00 : 34927: 75 d0 jne 348f9 0.00 : 34929: e9 31 ff ff ff jmpq 3485f 0.00 : 3492e: 66 90 xchg %ax,%ax 0.00 : 34930: 4d 85 e4 test %r12,%r12 0.00 : 34933: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 34938: 0f 84 21 ff ff ff je 3485f 0.00 : 3493e: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 34943: 48 89 de mov %rbx,%rsi 0.00 : 34946: 4c 89 f7 mov %r14,%rdi 0.00 : 34949: ff 54 24 30 callq *0x30(%rsp) 0.00 : 3494d: 85 c0 test %eax,%eax 0.00 : 3494f: 7e 3f jle 34990 0.00 : 34951: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 34956: 48 89 de mov %rbx,%rsi 0.00 : 34959: 48 89 ef mov %rbp,%rdi 0.00 : 3495c: 49 83 ec 01 sub $0x1,%r12 0.00 : 34960: e8 2b f6 04 00 callq 83f90 <__mempcpy> 0.00 : 34965: 48 03 5c 24 28 add 0x28(%rsp),%rbx 0.00 : 3496a: 48 89 c5 mov %rax,%rbp 0.00 : 3496d: e9 36 ff ff ff jmpq 348a8 0.00 : 34972: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 34978: 49 8b 06 mov (%r14),%rax 0.00 : 3497b: 49 83 ed 01 sub $0x1,%r13 0.00 : 3497f: 49 83 c6 08 add $0x8,%r14 0.00 : 34983: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 34987: eb 92 jmp 3491b 0.00 : 34989: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 34990: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 34995: 4c 89 f6 mov %r14,%rsi 0.00 : 34998: 48 89 ef mov %rbp,%rdi 0.00 : 3499b: 49 83 ed 01 sub $0x1,%r13 0.00 : 3499f: e8 ec f5 04 00 callq 83f90 <__mempcpy> 0.00 : 349a4: 4c 03 74 24 28 add 0x28(%rsp),%r14 0.00 : 349a9: 48 89 c5 mov %rax,%rbp 0.00 : 349ac: e9 f7 fe ff ff jmpq 348a8 0.00 : 349b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 349b8: 41 8b 06 mov (%r14),%eax 0.00 : 349bb: 49 83 ed 01 sub $0x1,%r13 0.00 : 349bf: 49 83 c6 04 add $0x4,%r14 0.00 : 349c3: 89 45 00 mov %eax,0x0(%rbp) 0.00 : 349c6: e9 86 fe ff ff jmpq 34851 0.00 : 349cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 349d0: 4d 85 e4 test %r12,%r12 0.00 : 349d3: 0f 84 8f fe ff ff je 34868 0.00 : 349d9: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 349de: 48 8b 33 mov (%rbx),%rsi 0.00 : 349e1: 49 8b 3e mov (%r14),%rdi 0.00 : 349e4: ff 54 24 30 callq *0x30(%rsp) 0.00 : 349e8: 85 c0 test %eax,%eax 0.00 : 349ea: 7e 2c jle 34a18 10.00 : 349ec: 48 8b 03 mov (%rbx),%rax 0.00 : 349ef: 49 83 ec 01 sub $0x1,%r12 0.00 : 349f3: 48 83 c3 08 add $0x8,%rbx 0.00 : 349f7: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 349fb: 48 83 c5 08 add $0x8,%rbp 0.00 : 349ff: 4d 85 ed test %r13,%r13 0.00 : 34a02: 0f 84 b0 fe ff ff je 348b8 0.00 : 34a08: 4d 85 e4 test %r12,%r12 0.00 : 34a0b: 75 cc jne 349d9 0.00 : 34a0d: e9 4d fe ff ff jmpq 3485f 0.00 : 34a12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 34a18: 49 8b 06 mov (%r14),%rax 0.00 : 34a1b: 49 83 ed 01 sub $0x1,%r13 0.00 : 34a1f: 49 83 c6 08 add $0x8,%r14 0.00 : 34a23: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 34a27: eb d2 jmp 349fb 0.00 : 34a29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 10.00 : 34a30: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 34a35: 48 c7 44 24 08 08 00 movq $0x8,0x8(%rsp) 0.00 : 34a3c: 00 00 0.00 : 34a3e: 48 29 44 24 08 sub %rax,0x8(%rsp) 0.00 : 34a43: 4c 8d 7c 05 00 lea 0x0(%rbp,%rax,1),%r15 0.00 : 34a48: eb 21 jmp 34a6b 0.00 : 34a4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 34a50: 48 89 de mov %rbx,%rsi 0.00 : 34a53: 49 83 ec 01 sub $0x1,%r12 0.00 : 34a57: 48 03 5c 24 28 add 0x28(%rsp),%rbx 0.00 : 34a5c: 4c 39 fd cmp %r15,%rbp 0.00 : 34a5f: 72 4d jb 34aae 0.00 : 34a61: 4c 03 7c 24 28 add 0x28(%rsp),%r15 0.00 : 34a66: 48 8b 6c 24 40 mov 0x40(%rsp),%rbp 0.00 : 34a6b: 4d 85 ed test %r13,%r13 0.00 : 34a6e: 0f 84 44 fe ff ff je 348b8 0.00 : 34a74: 4d 85 e4 test %r12,%r12 0.00 : 34a77: 0f 84 e2 fd ff ff je 3485f 20.00 : 34a7d: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 34a82: 48 89 de mov %rbx,%rsi 0.00 : 34a85: 4c 89 f7 mov %r14,%rdi 0.00 : 34a88: 48 01 ea add %rbp,%rdx 0.00 : 34a8b: 48 89 54 24 40 mov %rdx,0x40(%rsp) 0.00 : 34a90: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 34a95: ff 54 24 30 callq *0x30(%rsp) 0.00 : 34a99: 85 c0 test %eax,%eax 0.00 : 34a9b: 7f b3 jg 34a50 0.00 : 34a9d: 4c 89 f6 mov %r14,%rsi 0.00 : 34aa0: 49 83 ed 01 sub $0x1,%r13 0.00 : 34aa4: 4c 03 74 24 28 add 0x28(%rsp),%r14 0.00 : 34aa9: 4c 39 fd cmp %r15,%rbp 0.00 : 34aac: 73 b3 jae 34a61 0.00 : 34aae: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : 34ab3: 48 03 54 24 08 add 0x8(%rsp),%rdx 0.00 : 34ab8: 49 8d 47 07 lea 0x7(%r15),%rax 0.00 : 34abc: 31 c9 xor %ecx,%ecx 0.00 : 34abe: 48 29 d0 sub %rdx,%rax 0.00 : 34ac1: 48 c1 e8 03 shr $0x3,%rax 0.00 : 34ac5: 48 8d 50 01 lea 0x1(%rax),%rdx 10.00 : 34ac9: 48 8b 04 ce mov (%rsi,%rcx,8),%rax 0.00 : 34acd: 48 89 44 cd 00 mov %rax,0x0(%rbp,%rcx,8) 0.00 : 34ad2: 48 83 c1 01 add $0x1,%rcx 0.00 : 34ad6: 48 39 d1 cmp %rdx,%rcx 0.00 : 34ad9: 74 86 je 34a61 10.00 : 34adb: eb ec jmp 34ac9 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 50.00 ??:0 33.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000006d0 : 100.00 : 6d0: 89 f8 mov %edi,%eax : 702: 48 8b je 730 : 704: ba 60 04 00 movzwl 0x10(%rsi),%eax : 708: 00 48 89 f1 mov %ax,0x10(%rdi) : 70c: 89 c2 be 02 movzbl 0x24(%rsi),%eax : 710: 00 00 00 e9 00 00 00 movzbl 0x0(%rax),%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:339 16.67 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:303 16.67 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:310 16.67 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:318 16.67 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:464 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000639150 : : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 639150: 55 push %rbp : int hifd; : #endif : : /* Ignore WL_SOCKET_* events if no valid socket is given */ : if (sock == PGINVALID_SOCKET) : wakeEvents &= ~(WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE); 0.00 : 639151: 89 f0 mov %esi,%eax 0.00 : 639153: 83 e0 f9 and $0xfffffff9,%eax : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 639156: 48 89 e5 mov %rsp,%rbp 0.00 : 639159: 41 57 push %r15 0.00 : 63915b: 49 89 cf mov %rcx,%r15 0.00 : 63915e: 41 56 push %r14 0.00 : 639160: 41 55 push %r13 0.00 : 639162: 41 54 push %r12 0.00 : 639164: 53 push %rbx 0.00 : 639165: 89 f3 mov %esi,%ebx 0.00 : 639167: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 63916e: 89 95 6c ff ff ff mov %edx,-0x94(%rbp) : int hifd; : #endif : : /* Ignore WL_SOCKET_* events if no valid socket is given */ : if (sock == PGINVALID_SOCKET) : wakeEvents &= ~(WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE); 0.00 : 639174: 83 c2 01 add $0x1,%edx 0.00 : 639177: 0f 44 d8 cmove %eax,%ebx : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 63917a: 48 89 bd 70 ff ff ff mov %rdi,-0x90(%rbp) : : Assert(wakeEvents != 0); /* must have at least one wake event */ : /* Cannot specify WL_SOCKET_WRITEABLE without WL_SOCKET_READABLE */ : Assert((wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) != WL_SOCKET_WRITEABLE); : : if ((wakeEvents & WL_LATCH_SET) && latch->owner_pid != MyProcPid) 0.00 : 639181: 89 d8 mov %ebx,%eax 0.00 : 639183: 83 e0 01 and $0x1,%eax 0.00 : 639186: 89 85 78 ff ff ff mov %eax,-0x88(%rbp) 0.00 : 63918c: 74 0f je 63919d 0.00 : 63918e: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 639191: 3b 05 4d 6b 58 00 cmp 0x586b4d(%rip),%eax # bbfce4 0.00 : 639197: 0f 85 6b 03 00 00 jne 639508 : * Initialize timeout if requested. We must record the current time so : * that we can determine the remaining timeout if the poll() or select() : * is interrupted. (On some platforms, select() will update the contents : * of "tv" for us, but unfortunately we can't rely on that.) : */ : if (wakeEvents & WL_TIMEOUT) 0.00 : 63919d: 89 da mov %ebx,%edx 0.00 : 63919f: 83 e2 08 and $0x8,%edx 0.00 : 6391a2: 89 95 7c ff ff ff mov %edx,-0x84(%rbp) 0.00 : 6391a8: 0f 85 e2 02 00 00 jne 639490 0.00 : 6391ae: 49 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%r14 : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 6391b5: 89 d8 mov %ebx,%eax : pfds[nfds].fd = selfpipe_readfd; : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6391b7: 89 da mov %ebx,%edx : #ifndef HAVE_POLL : tvp = NULL; : #endif : } : : waiting = true; 0.00 : 6391b9: c7 05 b5 28 54 00 01 movl $0x1,0x5428b5(%rip) # b7ba78 0.00 : 6391c0: 00 00 00 : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 6391c3: 83 e0 06 and $0x6,%eax : pfds[nfds].fd = selfpipe_readfd; : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6391c6: 83 e2 10 and $0x10,%edx : #ifndef HAVE_POLL : tvp = NULL; : #endif : } : : waiting = true; 0.00 : 6391c9: 45 31 ed xor %r13d,%r13d : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 6391cc: 89 85 68 ff ff ff mov %eax,-0x98(%rbp) : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6391d2: 89 d8 mov %ebx,%eax : (pfds[0].revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL))) : { : /* data available in socket, or EOF/error condition */ : result |= WL_SOCKET_READABLE; : } : if ((wakeEvents & WL_SOCKET_WRITEABLE) && 0.00 : 6391d4: 83 e3 04 and $0x4,%ebx : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6391d7: 83 e0 02 and $0x2,%eax 0.00 : 6391da: 4c 8d 65 a0 lea -0x60(%rbp),%r12 : pfds[nfds].fd = selfpipe_readfd; : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6391de: 89 95 64 ff ff ff mov %edx,-0x9c(%rbp) : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6391e4: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : (pfds[0].revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL))) : { : /* data available in socket, or EOF/error condition */ : result |= WL_SOCKET_READABLE; : } : if ((wakeEvents & WL_SOCKET_WRITEABLE) && 0.00 : 6391ea: 89 9d 5c ff ff ff mov %ebx,-0xa4(%rbp) 0.00 : 6391f0: eb 11 jmp 639203 0.00 : 6391f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : waiting = false; : elog(ERROR, "read() on self-pipe failed: %m"); : } : } : else if (rc == 0) 0.00 : 6391f8: 0f 84 54 02 00 00 je 639452 : { : waiting = false; : elog(ERROR, "unexpected EOF on self-pipe"); : } : else if (rc < sizeof(buf)) 0.00 : 6391fe: 83 f8 0f cmp $0xf,%eax 0.00 : 639201: 76 5d jbe 639260 : char buf[16]; : int rc; : : for (;;) : { : rc = read(selfpipe_readfd, buf, sizeof(buf)); 0.00 : 639203: 8b 3d bf f3 52 00 mov 0x52f3bf(%rip),%edi # b685c8 0.00 : 639209: ba 10 00 00 00 mov $0x10,%edx 0.00 : 63920e: 4c 89 e6 mov %r12,%rsi 0.00 : 639211: e8 fa 03 e3 ff callq 469610 : if (rc < 0) 0.00 : 639216: 83 f8 00 cmp $0x0,%eax 0.00 : 639219: 7d dd jge 6391f8 : { : if (errno == EAGAIN || errno == EWOULDBLOCK) 0.00 : 63921b: e8 a0 0a e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 639220: 8b 00 mov (%rax),%eax 0.00 : 639222: 83 f8 0b cmp $0xb,%eax 0.00 : 639225: 74 39 je 639260 : break; /* the pipe is empty */ : else if (errno == EINTR) 0.00 : 639227: 83 f8 04 cmp $0x4,%eax 0.00 : 63922a: 74 d7 je 639203 : continue; /* retry */ : else : { : waiting = false; : elog(ERROR, "read() on self-pipe failed: %m"); 0.00 : 63922c: ba 12 de 89 00 mov $0x89de12,%edx 0.00 : 639231: be 87 02 00 00 mov $0x287,%esi 0.00 : 639236: bf f0 dc 89 00 mov $0x89dcf0,%edi : break; /* the pipe is empty */ : else if (errno == EINTR) : continue; /* retry */ : else : { : waiting = false; 0.00 : 63923b: c7 05 33 28 54 00 00 movl $0x0,0x542833(%rip) # b7ba78 0.00 : 639242: 00 00 00 : elog(ERROR, "read() on self-pipe failed: %m"); 0.00 : 639245: e8 d6 21 14 00 callq 77b420 0.00 : 63924a: be 80 dd 89 00 mov $0x89dd80,%esi 0.00 : 63924f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 639254: 31 c0 xor %eax,%eax 0.00 : 639256: e8 d5 1f 14 00 callq 77b230 0.00 : 63925b: e8 70 02 e3 ff callq 4694d0 : * with weak memory ordering, so that we cannot miss seeing is_set if : * the signal byte is already in the pipe when we drain it. : */ : drainSelfPipe(); : : if ((wakeEvents & WL_LATCH_SET) && latch->is_set) 0.00 : 639260: 44 8b 95 78 ff ff ff mov -0x88(%rbp),%r10d 0.00 : 639267: 45 85 d2 test %r10d,%r10d 0.00 : 63926a: 74 11 je 63927d 0.00 : 63926c: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 639273: 8b 02 mov (%rdx),%eax 0.00 : 639275: 85 c0 test %eax,%eax 0.00 : 639277: 0f 85 b5 02 00 00 jne 639532 : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 63927d: 44 8b 8d 68 ff ff ff mov -0x98(%rbp),%r9d 0.00 : 639284: 31 c0 xor %eax,%eax 0.00 : 639286: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 63928b: 45 85 c9 test %r9d,%r9d 0.00 : 63928e: 74 45 je 6392d5 : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:303 16.67 : 639290: 44 8b 85 60 ff ff ff mov -0xa0(%rbp),%r8d : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; 0.00 : 639297: 66 c7 45 84 00 00 movw $0x0,-0x7c(%rbp) : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; 0.00 : 63929d: b8 01 00 00 00 mov $0x1,%eax : if (wakeEvents & WL_SOCKET_WRITEABLE) 0.00 : 6392a2: 8b bd 5c ff ff ff mov -0xa4(%rbp),%edi : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; 0.00 : 6392a8: 45 85 c0 test %r8d,%r8d 0.00 : 6392ab: 66 0f 44 45 84 cmove -0x7c(%rbp),%ax : if (wakeEvents & WL_SOCKET_WRITEABLE) 0.00 : 6392b0: 85 ff test %edi,%edi : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; 0.00 : 6392b2: 66 89 45 84 mov %ax,-0x7c(%rbp) : if (wakeEvents & WL_SOCKET_WRITEABLE) 0.00 : 6392b6: 0f 85 ca 01 00 00 jne 639486 : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; 0.00 : 6392bc: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; : if (wakeEvents & WL_SOCKET_WRITEABLE) : pfds[0].events |= POLLOUT; : pfds[0].revents = 0; 0.00 : 6392c2: 66 c7 45 86 00 00 movw $0x0,-0x7a(%rbp) 0.00 : 6392c8: bb 02 00 00 00 mov $0x2,%ebx : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; 0.00 : 6392cd: 89 45 80 mov %eax,-0x80(%rbp) : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; : if (wakeEvents & WL_SOCKET_WRITEABLE) : pfds[0].events |= POLLOUT; : pfds[0].revents = 0; 0.00 : 6392d0: b8 01 00 00 00 mov $0x1,%eax : nfds++; : } : : pfds[nfds].fd = selfpipe_readfd; /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:310 16.67 : 6392d5: 8b 15 ed f2 52 00 mov 0x52f2ed(%rip),%edx # b685c8 0.00 : 6392db: 48 98 cltq : pfds[nfds].events = POLLIN; 0.00 : 6392dd: 66 c7 44 c5 84 01 00 movw $0x1,-0x7c(%rbp,%rax,8) : pfds[nfds].revents = 0; 0.00 : 6392e4: 66 c7 44 c5 86 00 00 movw $0x0,-0x7a(%rbp,%rax,8) : pfds[0].events |= POLLOUT; : pfds[0].revents = 0; : nfds++; : } : : pfds[nfds].fd = selfpipe_readfd; 0.00 : 6392eb: 89 54 c5 80 mov %edx,-0x80(%rbp,%rax,8) : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6392ef: 8b b5 64 ff ff ff mov -0x9c(%rbp),%esi 0.00 : 6392f5: 85 f6 test %esi,%esi 0.00 : 6392f7: 74 1e je 639317 : { : /* postmaster fd, if used, is always in pfds[nfds - 1] */ : pfds[nfds].fd = postmaster_alive_fds[POSTMASTER_FD_WATCH]; 0.00 : 6392f9: 8b 15 29 f3 52 00 mov 0x52f329(%rip),%edx # b68628 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:318 16.67 : 6392ff: 48 63 c3 movslq %ebx,%rax : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; 0.00 : 639302: 83 c3 01 add $0x1,%ebx : : if (wakeEvents & WL_POSTMASTER_DEATH) : { : /* postmaster fd, if used, is always in pfds[nfds - 1] */ : pfds[nfds].fd = postmaster_alive_fds[POSTMASTER_FD_WATCH]; : pfds[nfds].events = POLLIN; 0.00 : 639305: 66 c7 44 c5 84 01 00 movw $0x1,-0x7c(%rbp,%rax,8) : pfds[nfds].revents = 0; 0.00 : 63930c: 66 c7 44 c5 86 00 00 movw $0x0,-0x7a(%rbp,%rax,8) : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) : { : /* postmaster fd, if used, is always in pfds[nfds - 1] */ : pfds[nfds].fd = postmaster_alive_fds[POSTMASTER_FD_WATCH]; 0.00 : 639313: 89 54 c5 80 mov %edx,-0x80(%rbp,%rax,8) : pfds[nfds].revents = 0; : nfds++; : } : : /* Sleep */ : rc = poll(pfds, nfds, (int) cur_timeout); 0.00 : 639317: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 63931b: 48 63 f3 movslq %ebx,%rsi 0.00 : 63931e: 44 89 f2 mov %r14d,%edx 0.00 : 639321: e8 2a 07 e3 ff callq 469a50 : : /* Check return code */ : if (rc < 0) 0.00 : 639326: 83 f8 00 cmp $0x0,%eax 0.00 : 639329: 0f 8c 74 01 00 00 jl 6394a3 : ereport(ERROR, : (errcode_for_socket_access(), : errmsg("poll() failed: %m"))); : } : } : else if (rc == 0) /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:339 33.33 : 63932f: 0f 85 b5 00 00 00 jne 6393ea : { : /* timeout exceeded */ : if (wakeEvents & WL_TIMEOUT) : result |= WL_TIMEOUT; 0.00 : 639335: 44 0b ad 7c ff ff ff or -0x84(%rbp),%r13d : } : } : #endif /* HAVE_POLL */ : : /* If we're not done, update cur_timeout for next iteration */ : if (result == 0 && cur_timeout >= 0) 0.00 : 63933c: 45 85 ed test %r13d,%r13d /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:464 16.67 : 63933f: 90 nop 0.00 : 639340: 74 26 je 639368 : tv.tv_sec = cur_timeout / 1000L; : tv.tv_usec = (cur_timeout % 1000L) * 1000L; : #endif : } : } while (result == 0); : waiting = false; 0.00 : 639342: c7 05 2c 27 54 00 00 movl $0x0,0x54272c(%rip) # b7ba78 0.00 : 639349: 00 00 00 : : return result; : } 0.00 : 63934c: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 639353: 44 89 e8 mov %r13d,%eax 0.00 : 639356: 5b pop %rbx 0.00 : 639357: 41 5c pop %r12 0.00 : 639359: 41 5d pop %r13 0.00 : 63935b: 41 5e pop %r14 0.00 : 63935d: 41 5f pop %r15 0.00 : 63935f: c9 leaveq 0.00 : 639360: c3 retq 0.00 : 639361: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : } : #endif /* HAVE_POLL */ : : /* If we're not done, update cur_timeout for next iteration */ : if (result == 0 && cur_timeout >= 0) 0.00 : 639368: 4d 85 f6 test %r14,%r14 0.00 : 63936b: 0f 88 92 fe ff ff js 639203 : { : INSTR_TIME_SET_CURRENT(cur_time); 0.00 : 639371: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 639375: 31 f6 xor %esi,%esi 0.00 : 639377: e8 44 02 e3 ff callq 4695c0 : INSTR_TIME_SUBTRACT(cur_time, start_time); 0.00 : 63937c: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 639380: 48 2b 45 c8 sub -0x38(%rbp),%rax 0.00 : 639384: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 639388: 48 2b 55 c0 sub -0x40(%rbp),%rdx 0.00 : 63938c: 48 85 c0 test %rax,%rax 0.00 : 63938f: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 639393: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : 639397: 79 1b jns 6393b4 0.00 : 639399: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 6393a0: 48 83 ea 01 sub $0x1,%rdx : : /* If we're not done, update cur_timeout for next iteration */ : if (result == 0 && cur_timeout >= 0) : { : INSTR_TIME_SET_CURRENT(cur_time); : INSTR_TIME_SUBTRACT(cur_time, start_time); 0.00 : 6393a4: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 6393aa: 78 f4 js 6393a0 0.00 : 6393ac: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : 6393b0: 48 89 45 b8 mov %rax,-0x48(%rbp) : cur_timeout = timeout - (long) INSTR_TIME_GET_MILLISEC(cur_time); 0.00 : 6393b4: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 6393b9: f2 48 0f 2a 4d b0 cvtsi2sdq -0x50(%rbp),%xmm1 0.00 : 6393bf: f2 0f 59 0d 11 32 24 mulsd 0x243211(%rip),%xmm1 # 87c5d8 <__func__.18742+0x13> 0.00 : 6393c6: 00 0.00 : 6393c7: 4c 89 fa mov %r15,%rdx 0.00 : 6393ca: 45 31 f6 xor %r14d,%r14d 0.00 : 6393cd: f2 0f 5e 05 03 32 24 divsd 0x243203(%rip),%xmm0 # 87c5d8 <__func__.18742+0x13> 0.00 : 6393d4: 00 0.00 : 6393d5: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 6393d9: f2 48 0f 2c c1 cvttsd2si %xmm1,%rax 0.00 : 6393de: 48 29 c2 sub %rax,%rdx 0.00 : 6393e1: 4c 0f 49 f2 cmovns %rdx,%r14 0.00 : 6393e5: e9 19 fe ff ff jmpq 639203 : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6393ea: 8b 8d 60 ff ff ff mov -0xa0(%rbp),%ecx 0.00 : 6393f0: 85 c9 test %ecx,%ecx 0.00 : 6393f2: 74 10 je 639404 0.00 : 6393f4: 0f bf 45 86 movswl -0x7a(%rbp),%eax : (pfds[0].revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL))) : { : /* data available in socket, or EOF/error condition */ : result |= WL_SOCKET_READABLE; 0.00 : 6393f8: 44 89 ea mov %r13d,%edx 0.00 : 6393fb: 83 ca 02 or $0x2,%edx 0.00 : 6393fe: a8 39 test $0x39,%al 0.00 : 639400: 44 0f 45 ea cmovne %edx,%r13d : } : if ((wakeEvents & WL_SOCKET_WRITEABLE) && 0.00 : 639404: 8b 95 5c ff ff ff mov -0xa4(%rbp),%edx 0.00 : 63940a: 85 d2 test %edx,%edx 0.00 : 63940c: 74 0e je 63941c : (pfds[0].revents & POLLOUT)) : { : result |= WL_SOCKET_WRITEABLE; 0.00 : 63940e: 44 89 e8 mov %r13d,%eax 0.00 : 639411: 83 c8 04 or $0x4,%eax 0.00 : 639414: f6 45 86 04 testb $0x4,-0x7a(%rbp) 0.00 : 639418: 44 0f 45 e8 cmovne %eax,%r13d : /* : * We expect a POLLHUP when the remote end is closed, but because : * we don't expect the pipe to become readable or to have any : * errors either, treat those cases as postmaster death, too. : */ : if ((wakeEvents & WL_POSTMASTER_DEATH) && 0.00 : 63941c: 8b 85 64 ff ff ff mov -0x9c(%rbp),%eax 0.00 : 639422: 85 c0 test %eax,%eax 0.00 : 639424: 0f 84 12 ff ff ff je 63933c 0.00 : 63942a: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 63942d: 48 98 cltq 0.00 : 63942f: 0f bf 44 c5 86 movswl -0x7a(%rbp,%rax,8),%eax 0.00 : 639434: a8 39 test $0x39,%al 0.00 : 639436: 0f 84 00 ff ff ff je 63933c : * postmaster pipe, but since the consequences of falsely : * returning WL_POSTMASTER_DEATH could be pretty unpleasant, : * we take the trouble to positively verify EOF with : * PostmasterIsAlive(). : */ : if (!PostmasterIsAlive()) 0.00 : 63943c: e8 4f 5e 04 00 callq 67f290 : result |= WL_POSTMASTER_DEATH; 0.00 : 639441: 44 89 ea mov %r13d,%edx 0.00 : 639444: 83 ca 10 or $0x10,%edx 0.00 : 639447: 84 c0 test %al,%al 0.00 : 639449: 44 0f 44 ea cmove %edx,%r13d 0.00 : 63944d: e9 ea fe ff ff jmpq 63933c : } : } : else if (rc == 0) : { : waiting = false; : elog(ERROR, "unexpected EOF on self-pipe"); 0.00 : 639452: ba 12 de 89 00 mov $0x89de12,%edx 0.00 : 639457: be 8d 02 00 00 mov $0x28d,%esi 0.00 : 63945c: bf f0 dc 89 00 mov $0x89dcf0,%edi : elog(ERROR, "read() on self-pipe failed: %m"); : } : } : else if (rc == 0) : { : waiting = false; 0.00 : 639461: c7 05 0d 26 54 00 00 movl $0x0,0x54260d(%rip) # b7ba78 0.00 : 639468: 00 00 00 : elog(ERROR, "unexpected EOF on self-pipe"); 0.00 : 63946b: e8 b0 1f 14 00 callq 77b420 0.00 : 639470: be 0f dd 89 00 mov $0x89dd0f,%esi 0.00 : 639475: bf 14 00 00 00 mov $0x14,%edi 0.00 : 63947a: 31 c0 xor %eax,%eax 0.00 : 63947c: e8 af 1d 14 00 callq 77b230 0.00 : 639481: e8 4a 00 e3 ff callq 4694d0 : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; : if (wakeEvents & WL_SOCKET_WRITEABLE) : pfds[0].events |= POLLOUT; 0.00 : 639486: 66 83 4d 84 04 orw $0x4,-0x7c(%rbp) 0.00 : 63948b: e9 2c fe ff ff jmpq 6392bc : * is interrupted. (On some platforms, select() will update the contents : * of "tv" for us, but unfortunately we can't rely on that.) : */ : if (wakeEvents & WL_TIMEOUT) : { : INSTR_TIME_SET_CURRENT(start_time); 0.00 : 639490: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 639494: 31 f6 xor %esi,%esi 0.00 : 639496: 4d 89 fe mov %r15,%r14 0.00 : 639499: e8 22 01 e3 ff callq 4695c0 0.00 : 63949e: e9 12 fd ff ff jmpq 6391b5 : : /* Check return code */ : if (rc < 0) : { : /* EINTR is okay, otherwise complain */ : if (errno != EINTR) 0.00 : 6394a3: e8 18 08 e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 6394a8: 83 38 04 cmpl $0x4,(%rax) 0.00 : 6394ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6394b0: 0f 84 86 fe ff ff je 63933c : { : waiting = false; : ereport(ERROR, 0.00 : 6394b6: 45 31 c0 xor %r8d,%r8d 0.00 : 6394b9: b9 00 de 89 00 mov $0x89de00,%ecx 0.00 : 6394be: ba 50 01 00 00 mov $0x150,%edx 0.00 : 6394c3: be f0 dc 89 00 mov $0x89dcf0,%esi 0.00 : 6394c8: bf 14 00 00 00 mov $0x14,%edi : if (rc < 0) : { : /* EINTR is okay, otherwise complain */ : if (errno != EINTR) : { : waiting = false; 0.00 : 6394cd: c7 05 a1 25 54 00 00 movl $0x0,0x5425a1(%rip) # b7ba78 0.00 : 6394d4: 00 00 00 : ereport(ERROR, 0.00 : 6394d7: e8 e4 15 14 00 callq 77aac0 0.00 : 6394dc: 84 c0 test %al,%al 0.00 : 6394de: 74 1e je 6394fe 0.00 : 6394e0: bf 2b dd 89 00 mov $0x89dd2b,%edi 0.00 : 6394e5: 31 c0 xor %eax,%eax 0.00 : 6394e7: e8 b4 33 14 00 callq 77c8a0 0.00 : 6394ec: 89 c3 mov %eax,%ebx 0.00 : 6394ee: e8 5d 35 14 00 callq 77ca50 0.00 : 6394f3: 89 de mov %ebx,%esi 0.00 : 6394f5: 89 c7 mov %eax,%edi 0.00 : 6394f7: 31 c0 xor %eax,%eax 0.00 : 6394f9: e8 e2 10 14 00 callq 77a5e0 0.00 : 6394fe: e8 cd ff e2 ff callq 4694d0 0.00 : 639503: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Assert(wakeEvents != 0); /* must have at least one wake event */ : /* Cannot specify WL_SOCKET_WRITEABLE without WL_SOCKET_READABLE */ : Assert((wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) != WL_SOCKET_WRITEABLE); : : if ((wakeEvents & WL_LATCH_SET) && latch->owner_pid != MyProcPid) : elog(ERROR, "cannot wait on a latch owned by another process"); 0.00 : 639508: ba 00 de 89 00 mov $0x89de00,%edx 0.00 : 63950d: be ed 00 00 00 mov $0xed,%esi 0.00 : 639512: bf f0 dc 89 00 mov $0x89dcf0,%edi 0.00 : 639517: e8 04 1f 14 00 callq 77b420 0.00 : 63951c: be 50 dd 89 00 mov $0x89dd50,%esi 0.00 : 639521: bf 14 00 00 00 mov $0x14,%edi 0.00 : 639526: 31 c0 xor %eax,%eax 0.00 : 639528: e8 03 1d 14 00 callq 77b230 0.00 : 63952d: e8 9e ff e2 ff callq 4694d0 : */ : drainSelfPipe(); : : if ((wakeEvents & WL_LATCH_SET) && latch->is_set) : { : result |= WL_LATCH_SET; 0.00 : 639532: 41 83 cd 01 or $0x1,%r13d : : /* : * Leave loop immediately, avoid blocking again. We don't attempt : * to report any other events that might also be satisfied. : */ : break; 0.00 : 639536: e9 07 fe ff ff jmpq 639342 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469610 : ??:0 100.00 : 469610: ff 25 5a db 6f 00 jmpq *0x6fdb5a(%rip) # b67170 <_GLOBAL_OFFSET_TABLE_+0x170> 0.00 : 469616: 68 2b 00 00 00 pushq $0x2b 0.00 : 46961b: e9 30 fd ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2058 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2050 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2050 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2084 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2086 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2086 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2102 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2132 9.09 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2124 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b84b0 : : ExecEndNode(outerPlan); : } : : void : ExecReScanAgg(AggState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2050 9.09 : 5b84b0: 55 push %rbp 0.00 : 5b84b1: 48 89 e5 mov %rsp,%rbp 0.00 : 5b84b4: 41 56 push %r14 9.09 : 5b84b6: 41 55 push %r13 0.00 : 5b84b8: 49 89 fd mov %rdi,%r13 0.00 : 5b84bb: 41 54 push %r12 0.00 : 5b84bd: 53 push %rbx 0.00 : 5b84be: 48 83 ec 10 sub $0x10,%rsp : : node->agg_done = false; : : node->ss.ps.ps_TupFromTlist = false; : : if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED) 0.00 : 5b84c2: 48 8b 47 08 mov 0x8(%rdi),%rax : ExecReScanAgg(AggState *node) : { : ExprContext *econtext = node->ss.ps.ps_ExprContext; : int aggno; : : node->agg_done = false; 0.00 : 5b84c6: c6 87 d0 00 00 00 00 movb $0x0,0xd0(%rdi) : : node->ss.ps.ps_TupFromTlist = false; 0.00 : 5b84cd: c6 47 70 00 movb $0x0,0x70(%rdi) : } : : void : ExecReScanAgg(AggState *node) : { : ExprContext *econtext = node->ss.ps.ps_ExprContext; 0.00 : 5b84d1: 4c 8b 77 60 mov 0x60(%rdi),%r14 : : node->agg_done = false; : : node->ss.ps.ps_TupFromTlist = false; : : if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED) 0.00 : 5b84d5: 83 78 60 02 cmpl $0x2,0x60(%rax) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2058 27.27 : 5b84d9: 0f 84 b9 01 00 00 je 5b8698 : return; : } : } : : /* Make sure we have closed any open tuplesorts */ : for (aggno = 0; aggno < node->numaggs; aggno++) 0.00 : 5b84df: 41 8b 85 98 00 00 00 mov 0x98(%r13),%eax : * parameter changes, then we can just rescan the existing hash table; : * no need to build it again. : */ : if (node->ss.ps.lefttree->chgParam == NULL) : { : ResetTupleHashIterator(node->hashtable, &node->hashiter); 0.00 : 5b84e6: 45 31 e4 xor %r12d,%r12d : return; : } : } : : /* Make sure we have closed any open tuplesorts */ : for (aggno = 0; aggno < node->numaggs; aggno++) 0.00 : 5b84e9: 85 c0 test %eax,%eax 0.00 : 5b84eb: 7e 3d jle 5b852a 0.00 : 5b84ed: 0f 1f 00 nopl (%rax) : { : AggStatePerAgg peraggstate = &node->peragg[aggno]; 0.00 : 5b84f0: 49 63 c4 movslq %r12d,%rax 0.00 : 5b84f3: 48 69 d8 a8 04 00 00 imul $0x4a8,%rax,%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2084 9.09 : 5b84fa: 49 03 9d b0 00 00 00 add 0xb0(%r13),%rbx : : if (peraggstate->sortstate) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2086 9.09 : 5b8501: 48 8b bb f8 00 00 00 mov 0xf8(%rbx),%rdi 9.09 : 5b8508: 48 85 ff test %rdi,%rdi 0.00 : 5b850b: 74 05 je 5b8512 : tuplesort_end(peraggstate->sortstate); 0.00 : 5b850d: e8 ce 6c 1e 00 callq 79f1e0 : peraggstate->sortstate = NULL; 0.00 : 5b8512: 48 c7 83 f8 00 00 00 movq $0x0,0xf8(%rbx) 0.00 : 5b8519: 00 00 00 00 : return; : } : } : : /* Make sure we have closed any open tuplesorts */ : for (aggno = 0; aggno < node->numaggs; aggno++) 0.00 : 5b851d: 41 83 c4 01 add $0x1,%r12d 0.00 : 5b8521: 45 39 a5 98 00 00 00 cmp %r12d,0x98(%r13) 0.00 : 5b8528: 7f c6 jg 5b84f0 : } : : /* We don't need to ReScanExprContext here; ExecReScan already did it */ : : /* Release first tuple of group, if we have made a copy */ : if (node->grp_firstTuple != NULL) 0.00 : 5b852a: 49 8b bd e0 00 00 00 mov 0xe0(%r13),%rdi 0.00 : 5b8531: 48 85 ff test %rdi,%rdi 0.00 : 5b8534: 74 10 je 5b8546 : { : heap_freetuple(node->grp_firstTuple); 0.00 : 5b8536: e8 85 67 eb ff callq 46ecc0 : node->grp_firstTuple = NULL; 0.00 : 5b853b: 49 c7 85 e0 00 00 00 movq $0x0,0xe0(%r13) 0.00 : 5b8542: 00 00 00 00 : } : : /* Forget current agg values */ : MemSet(econtext->ecxt_aggvalues, 0, sizeof(Datum) * node->numaggs); 0.00 : 5b8546: 49 8b 7e 40 mov 0x40(%r14),%rdi 0.00 : 5b854a: 49 63 95 98 00 00 00 movslq 0x98(%r13),%rdx 0.00 : 5b8551: 40 f6 c7 07 test $0x7,%dil 0.00 : 5b8555: 48 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%rax 0.00 : 5b855c: 00 0.00 : 5b855d: 0f 84 b5 00 00 00 je 5b8618 0.00 : 5b8563: 48 89 c2 mov %rax,%rdx 0.00 : 5b8566: 31 f6 xor %esi,%esi 0.00 : 5b8568: e8 b3 0e eb ff callq 469420 0.00 : 5b856d: 49 63 95 98 00 00 00 movslq 0x98(%r13),%rdx : MemSet(econtext->ecxt_aggnulls, 0, sizeof(bool) * node->numaggs); 0.00 : 5b8574: 49 8b 7e 48 mov 0x48(%r14),%rdi 0.00 : 5b8578: 48 89 f8 mov %rdi,%rax 0.00 : 5b857b: 48 09 d0 or %rdx,%rax 0.00 : 5b857e: a8 07 test $0x7,%al 0.00 : 5b8580: 74 66 je 5b85e8 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2102 9.09 : 5b8582: 31 f6 xor %esi,%esi 0.00 : 5b8584: e8 97 0e eb ff callq 469420 : * allocated in a sub-context of the aggcontext. We're going to rebuild : * the hash table from scratch, so we need to use : * MemoryContextResetAndDeleteChildren() to avoid leaking the old hash : * table's memory context header. : */ : MemoryContextResetAndDeleteChildren(node->aggcontext); 0.00 : 5b8589: 49 8b bd b8 00 00 00 mov 0xb8(%r13),%rdi 0.00 : 5b8590: e8 7b 06 1e 00 callq 798c10 : : if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED) 0.00 : 5b8595: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 5b8599: 83 78 60 02 cmpl $0x2,0x60(%rax) 0.00 : 5b859d: 0f 84 4d 01 00 00 je 5b86f0 : else : { : /* : * Reset the per-group state (in particular, mark transvalues null) : */ : MemSet(node->pergroup, 0, 0.00 : 5b85a3: 49 63 95 98 00 00 00 movslq 0x98(%r13),%rdx 0.00 : 5b85aa: 49 8b bd d8 00 00 00 mov 0xd8(%r13),%rdi 0.00 : 5b85b1: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 5b85b5: 40 f6 c7 07 test $0x7,%dil 0.00 : 5b85b9: 0f 84 99 00 00 00 je 5b8658 0.00 : 5b85bf: 31 f6 xor %esi,%esi 0.00 : 5b85c1: e8 5a 0e eb ff callq 469420 : : /* : * if chgParam of subnode is not null then plan will be re-scanned by : * first ExecProcNode. : */ : if (node->ss.ps.lefttree->chgParam == NULL) 0.00 : 5b85c6: 49 8b 7d 30 mov 0x30(%r13),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2132 9.09 : 5b85ca: 48 83 7f 50 00 cmpq $0x0,0x50(%rdi) 0.00 : 5b85cf: 0f 84 7e 01 00 00 je 5b8753 : ExecReScan(node->ss.ps.lefttree); : } 0.00 : 5b85d5: 48 83 c4 10 add $0x10,%rsp 0.00 : 5b85d9: 5b pop %rbx 0.00 : 5b85da: 41 5c pop %r12 0.00 : 5b85dc: 41 5d pop %r13 0.00 : 5b85de: 41 5e pop %r14 0.00 : 5b85e0: c9 leaveq 0.00 : 5b85e1: c3 retq 0.00 : 5b85e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : node->grp_firstTuple = NULL; : } : : /* Forget current agg values */ : MemSet(econtext->ecxt_aggvalues, 0, sizeof(Datum) * node->numaggs); : MemSet(econtext->ecxt_aggnulls, 0, sizeof(bool) * node->numaggs); 0.00 : 5b85e8: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 5b85ef: 77 91 ja 5b8582 0.00 : 5b85f1: 48 8d 04 17 lea (%rdi,%rdx,1),%rax 0.00 : 5b85f5: 48 39 c7 cmp %rax,%rdi 0.00 : 5b85f8: 73 8f jae 5b8589 0.00 : 5b85fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b8600: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 5b8607: 48 83 c7 08 add $0x8,%rdi 0.00 : 5b860b: 48 39 f8 cmp %rdi,%rax 0.00 : 5b860e: 77 f0 ja 5b8600 0.00 : 5b8610: e9 74 ff ff ff jmpq 5b8589 0.00 : 5b8615: 0f 1f 00 nopl (%rax) : heap_freetuple(node->grp_firstTuple); : node->grp_firstTuple = NULL; : } : : /* Forget current agg values */ : MemSet(econtext->ecxt_aggvalues, 0, sizeof(Datum) * node->numaggs); 0.00 : 5b8618: 48 3d 00 04 00 00 cmp $0x400,%rax 0.00 : 5b861e: 66 90 xchg %ax,%ax 0.00 : 5b8620: 0f 87 3d ff ff ff ja 5b8563 0.00 : 5b8626: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 5b862a: 48 39 c7 cmp %rax,%rdi 0.00 : 5b862d: 0f 1f 00 nopl (%rax) 0.00 : 5b8630: 0f 83 3e ff ff ff jae 5b8574 0.00 : 5b8636: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5b863d: 00 00 00 0.00 : 5b8640: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 5b8647: 48 83 c7 08 add $0x8,%rdi 0.00 : 5b864b: 48 39 f8 cmp %rdi,%rax 0.00 : 5b864e: 77 f0 ja 5b8640 0.00 : 5b8650: e9 18 ff ff ff jmpq 5b856d 0.00 : 5b8655: 0f 1f 00 nopl (%rax) : else : { : /* : * Reset the per-group state (in particular, mark transvalues null) : */ : MemSet(node->pergroup, 0, 0.00 : 5b8658: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 5b865f: 90 nop 0.00 : 5b8660: 0f 87 59 ff ff ff ja 5b85bf 0.00 : 5b8666: 48 8d 04 17 lea (%rdi,%rdx,1),%rax 0.00 : 5b866a: 48 39 c7 cmp %rax,%rdi 0.00 : 5b866d: 0f 1f 00 nopl (%rax) 0.00 : 5b8670: 0f 83 50 ff ff ff jae 5b85c6 0.00 : 5b8676: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5b867d: 00 00 00 0.00 : 5b8680: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:2124 9.09 : 5b8687: 48 83 c7 08 add $0x8,%rdi 0.00 : 5b868b: 48 39 f8 cmp %rdi,%rax 0.00 : 5b868e: 77 f0 ja 5b8680 0.00 : 5b8690: e9 31 ff ff ff jmpq 5b85c6 0.00 : 5b8695: 0f 1f 00 nopl (%rax) : * In the hashed case, if we haven't yet built the hash table then we : * can just return; nothing done yet, so nothing to undo. If subnode's : * chgParam is not NULL then it will be re-scanned by ExecProcNode, : * else no reason to re-scan it at all. : */ : if (!node->table_filled) 0.00 : 5b8698: 80 bf 00 01 00 00 00 cmpb $0x0,0x100(%rdi) 0.00 : 5b869f: 0f 84 30 ff ff ff je 5b85d5 : /* : * If we do have the hash table and the subplan does not have any : * parameter changes, then we can just rescan the existing hash table; : * no need to build it again. : */ : if (node->ss.ps.lefttree->chgParam == NULL) 0.00 : 5b86a5: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 5b86a9: 48 83 78 50 00 cmpq $0x0,0x50(%rax) 0.00 : 5b86ae: 66 90 xchg %ax,%ax 0.00 : 5b86b0: 0f 85 29 fe ff ff jne 5b84df : { : ResetTupleHashIterator(node->hashtable, &node->hashiter); 0.00 : 5b86b6: 48 8b 87 e8 00 00 00 mov 0xe8(%rdi),%rax 0.00 : 5b86bd: 48 8b 38 mov (%rax),%rdi 0.00 : 5b86c0: e8 9b b2 1c 00 callq 783960 0.00 : 5b86c5: 49 8b 85 e8 00 00 00 mov 0xe8(%r13),%rax 0.00 : 5b86cc: 49 8d bd 08 01 00 00 lea 0x108(%r13),%rdi 0.00 : 5b86d3: 48 8b 30 mov (%rax),%rsi : * if chgParam of subnode is not null then plan will be re-scanned by : * first ExecProcNode. : */ : if (node->ss.ps.lefttree->chgParam == NULL) : ExecReScan(node->ss.ps.lefttree); : } 0.00 : 5b86d6: 48 83 c4 10 add $0x10,%rsp 0.00 : 5b86da: 5b pop %rbx 0.00 : 5b86db: 41 5c pop %r12 0.00 : 5b86dd: 41 5d pop %r13 0.00 : 5b86df: 41 5e pop %r14 0.00 : 5b86e1: c9 leaveq : * parameter changes, then we can just rescan the existing hash table; : * no need to build it again. : */ : if (node->ss.ps.lefttree->chgParam == NULL) : { : ResetTupleHashIterator(node->hashtable, &node->hashiter); 0.00 : 5b86e2: e9 49 b7 1c 00 jmpq 783e30 0.00 : 5b86e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b86ee: 00 00 : Assert(node->numGroups > 0); : : entrysize = sizeof(AggHashEntryData) + : (aggstate->numaggs - 1) * sizeof(AggStatePerGroupData); : : aggstate->hashtable = BuildTupleHashTable(node->numCols, 0.00 : 5b86f0: 4c 8b 40 78 mov 0x78(%rax),%r8 0.00 : 5b86f4: 48 8b 70 68 mov 0x68(%rax),%rsi 0.00 : 5b86f8: 8b 78 64 mov 0x64(%rax),%edi 0.00 : 5b86fb: 49 8b 85 c0 00 00 00 mov 0xc0(%r13),%rax 0.00 : 5b8702: 45 8b 8d 98 00 00 00 mov 0x98(%r13),%r9d 0.00 : 5b8709: 49 8b 8d a8 00 00 00 mov 0xa8(%r13),%rcx 0.00 : 5b8710: 49 8b 95 a0 00 00 00 mov 0xa0(%r13),%rdx 0.00 : 5b8717: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 5b871b: 41 83 e9 01 sub $0x1,%r9d 0.00 : 5b871f: 4d 63 c9 movslq %r9d,%r9 0.00 : 5b8722: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 5b8727: 49 8b 85 b8 00 00 00 mov 0xb8(%r13),%rax 0.00 : 5b872e: 49 c1 e1 04 shl $0x4,%r9 0.00 : 5b8732: 49 83 c1 18 add $0x18,%r9 0.00 : 5b8736: 48 89 04 24 mov %rax,(%rsp) 0.00 : 5b873a: e8 a1 08 ff ff callq 5a8fe0 : : if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED) : { : /* Rebuild an empty hash table */ : build_hash_table(node); : node->table_filled = false; 0.00 : 5b873f: 41 c6 85 00 01 00 00 movb $0x0,0x100(%r13) 0.00 : 5b8746: 00 : Assert(node->numGroups > 0); : : entrysize = sizeof(AggHashEntryData) + : (aggstate->numaggs - 1) * sizeof(AggStatePerGroupData); : : aggstate->hashtable = BuildTupleHashTable(node->numCols, 0.00 : 5b8747: 49 89 85 e8 00 00 00 mov %rax,0xe8(%r13) 0.00 : 5b874e: e9 73 fe ff ff jmpq 5b85c6 : * if chgParam of subnode is not null then plan will be re-scanned by : * first ExecProcNode. : */ : if (node->ss.ps.lefttree->chgParam == NULL) : ExecReScan(node->ss.ps.lefttree); : } 0.00 : 5b8753: 48 83 c4 10 add $0x10,%rsp 0.00 : 5b8757: 5b pop %rbx 0.00 : 5b8758: 41 5c pop %r12 0.00 : 5b875a: 41 5d pop %r13 0.00 : 5b875c: 41 5e pop %r14 0.00 : 5b875e: c9 leaveq : /* : * if chgParam of subnode is not null then plan will be re-scanned by : * first ExecProcNode. : */ : if (node->ss.ps.lefttree->chgParam == NULL) : ExecReScan(node->ss.ps.lefttree); 0.00 : 5b875f: e9 3c fd fe ff jmpq 5a84a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 36.36 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 27.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 18.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1130 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068efa0 : : * : * If successful, cancel/die interrupts are held off until lock release. : */ : bool : LWLockConditionalAcquire(LWLock *lock, LWLockMode mode) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 36.36 : 68efa0: 55 push %rbp 27.27 : 68efa1: 48 89 e5 mov %rsp,%rbp 0.00 : 68efa4: 41 55 push %r13 18.18 : 68efa6: 41 54 push %r12 0.00 : 68efa8: 41 89 f4 mov %esi,%r12d 0.00 : 68efab: 53 push %rbx 0.00 : 68efac: 48 89 fb mov %rdi,%rbx 9.09 : 68efaf: 48 83 ec 18 sub $0x18,%rsp : AssertArg(mode == LW_SHARED || mode == LW_EXCLUSIVE); : : PRINT_LWDEBUG("LWLockConditionalAcquire", lock, mode); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) 0.00 : 68efb3: 81 3d 4b ea 4e 00 c7 cmpl $0xc7,0x4eea4b(%rip) # b7da08 0.00 : 68efba: 00 00 00 0.00 : 68efbd: 0f 8f 89 00 00 00 jg 68f04c : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); 0.00 : 68efc3: 8b 05 cf b0 52 00 mov 0x52b0cf(%rip),%eax # bba098 0.00 : 68efc9: 4c 8d 6d e7 lea -0x19(%rbp),%r13 0.00 : 68efcd: 83 c0 01 add $0x1,%eax 0.00 : 68efd0: 89 05 c2 b0 52 00 mov %eax,0x52b0c2(%rip) # bba098 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1130 9.09 : 68efd6: eb 10 jmp 68efe8 0.00 : 68efd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68efdf: 00 : * somebody else certainly has the lock) or till we got it. : * : * We cannot rely on the two-step lock-acquisition protocol as in : * LWLockAcquire because we're not using it. : */ : if (potentially_spurious) 0.00 : 68efe0: 80 7d e7 00 cmpb $0x0,-0x19(%rbp) 0.00 : 68efe4: 74 4a je 68f030 : { : /* : * Adding a PAUSE in the spin delay loop is demonstrably a no-op on : * Opteron, but it may be of some use on EM64T, so we keep it. : */ : __asm__ __volatile__( 0.00 : 68efe6: f3 90 pause : /* : * We need to check whether it's possible that we prevented somebody else : * from acquiring the lock. If so, potentially_spurious will be set, and : * we'll retry. : */ : mustwait = LWLockAttemptLock(lock, mode, &potentially_spurious); 0.00 : 68efe8: 4c 89 ea mov %r13,%rdx 0.00 : 68efeb: 44 89 e6 mov %r12d,%esi 0.00 : 68efee: 48 89 df mov %rbx,%rdi 0.00 : 68eff1: e8 ca fe ff ff callq 68eec0 : : if (mustwait) 0.00 : 68eff6: 84 c0 test %al,%al 0.00 : 68eff8: 75 e6 jne 68efe0 : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(T_NAME(lock), T_ID(lock), mode); : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68effa: 8b 15 08 ea 4e 00 mov 0x4eea08(%rip),%edx # b7da08 0.00 : 68f000: 48 63 c2 movslq %edx,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68f003: 83 c2 01 add $0x1,%edx : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(T_NAME(lock), T_ID(lock), mode); : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68f006: 48 c1 e0 04 shl $0x4,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68f00a: 89 15 f8 e9 4e 00 mov %edx,0x4ee9f8(%rip) # b7da08 : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(T_NAME(lock), T_ID(lock), mode); : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68f010: 48 89 98 40 da b7 00 mov %rbx,0xb7da40(%rax) : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68f017: 44 89 a0 48 da b7 00 mov %r12d,0xb7da48(%rax) : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f01e: 48 83 c4 18 add $0x18,%rsp 0.00 : 68f022: 5b pop %rbx 0.00 : 68f023: 41 5c pop %r12 : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68f025: b8 01 00 00 00 mov $0x1,%eax : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f02a: 41 5d pop %r13 0.00 : 68f02c: c9 leaveq 0.00 : 68f02d: c3 retq 0.00 : 68f02e: 66 90 xchg %ax,%ax : SPIN_DELAY(); : goto retry; : } : : /* Failed to get lock, so release interrupt holdoff */ : RESUME_INTERRUPTS(); 0.00 : 68f030: 8b 05 62 b0 52 00 mov 0x52b062(%rip),%eax # bba098 0.00 : 68f036: 83 e8 01 sub $0x1,%eax 0.00 : 68f039: 89 05 59 b0 52 00 mov %eax,0x52b059(%rip) # bba098 : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f03f: 48 83 c4 18 add $0x18,%rsp : SPIN_DELAY(); : goto retry; : } : : /* Failed to get lock, so release interrupt holdoff */ : RESUME_INTERRUPTS(); 0.00 : 68f043: 31 c0 xor %eax,%eax : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f045: 5b pop %rbx 0.00 : 68f046: 41 5c pop %r12 0.00 : 68f048: 41 5d pop %r13 0.00 : 68f04a: c9 leaveq 0.00 : 68f04b: c3 retq : : PRINT_LWDEBUG("LWLockConditionalAcquire", lock, mode); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) : elog(ERROR, "too many LWLocks taken"); 0.00 : 68f04c: ba 50 d1 8a 00 mov $0x8ad150,%edx 0.00 : 68f051: be 63 04 00 00 mov $0x463,%esi 0.00 : 68f056: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f05b: e8 c0 c3 0e 00 callq 77b420 0.00 : 68f060: be 8e d0 8a 00 mov $0x8ad08e,%esi 0.00 : 68f065: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68f06a: 31 c0 xor %eax,%eax 0.00 : 68f06c: e8 bf c1 0e 00 callq 77b230 0.00 : 68f071: e8 5a a4 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2501 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2582 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2554 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2610 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2574 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cd6a0 : : * Return 0 if okay, a DTERR code if not. : */ : static int : DecodeNumber(int flen, char *str, bool haveTextMonth, int fmask, : int *tmask, struct pg_tm * tm, fsec_t *fsec, bool *is2digits) : { 0.00 : 6cd6a0: 55 push %rbp 0.00 : 6cd6a1: 48 89 e5 mov %rsp,%rbp 0.00 : 6cd6a4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 6cd6a8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 6cd6ac: 49 89 f4 mov %rsi,%r12 0.00 : 6cd6af: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 6cd6b3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 6cd6b7: 4d 89 c5 mov %r8,%r13 0.00 : 6cd6ba: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 6cd6be: 48 83 ec 50 sub $0x50,%rsp 0.00 : 6cd6c2: 89 7d c4 mov %edi,-0x3c(%rbp) 0.00 : 6cd6c5: 89 4d bc mov %ecx,-0x44(%rbp) 0.00 : 6cd6c8: 88 55 c3 mov %dl,-0x3d(%rbp) 0.00 : 6cd6cb: 4d 89 cf mov %r9,%r15 : int val; : char *cp; : int dterr; : : *tmask = 0; 0.00 : 6cd6ce: 41 c7 00 00 00 00 00 movl $0x0,(%r8) : : errno = 0; 0.00 : 6cd6d5: e8 e6 c5 d9 ff callq 469cc0 <__errno_location@plt> : val = strtoi(str, &cp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 16.67 : 6cd6da: 48 8d 75 d0 lea -0x30(%rbp),%rsi : char *cp; : int dterr; : : *tmask = 0; : : errno = 0; 0.00 : 6cd6de: 48 89 c3 mov %rax,%rbx : val = strtoi(str, &cp, 10); 0.00 : 6cd6e1: ba 0a 00 00 00 mov $0xa,%edx : char *cp; : int dterr; : : *tmask = 0; : : errno = 0; 0.00 : 6cd6e6: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtoi(str, &cp, 10); 8.33 : 6cd6ec: 4c 89 e7 mov %r12,%rdi 0.00 : 6cd6ef: e8 dc f0 ff ff callq 6cc7d0 : if (errno == ERANGE) 0.00 : 6cd6f4: 83 3b 22 cmpl $0x22,(%rbx) : int dterr; : : *tmask = 0; : : errno = 0; : val = strtoi(str, &cp, 10); 0.00 : 6cd6f7: 41 89 c6 mov %eax,%r14d : if (errno == ERANGE) 0.00 : 6cd6fa: ba fe ff ff ff mov $0xfffffffe,%edx 0.00 : 6cd6ff: 75 1f jne 6cd720 : */ : if (*tmask == DTK_M(YEAR)) : *is2digits = (flen <= 2); : : return 0; : } 0.00 : 6cd701: 89 d0 mov %edx,%eax 0.00 : 6cd703: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 6cd707: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 6cd70b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 8.33 : 6cd70f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 6cd713: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 6cd717: c9 leaveq 0.00 : 6cd718: c3 retq 0.00 : 6cd719: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : errno = 0; : val = strtoi(str, &cp, 10); : if (errno == ERANGE) : return DTERR_FIELD_OVERFLOW; : if (cp == str) 0.00 : 6cd720: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 6cd724: 4c 39 e7 cmp %r12,%rdi 0.00 : 6cd727: 0f 84 cb 00 00 00 je 6cd7f8 : return DTERR_BAD_FORMAT; : : if (*cp == '.') 0.00 : 6cd72d: 0f b6 07 movzbl (%rdi),%eax 0.00 : 6cd730: 3c 2e cmp $0x2e,%al 0.00 : 6cd732: 0f 85 b4 00 00 00 jne 6cd7ec : { : /* : * More than two digits before decimal point? Then could be a date or : * a run-together time: 2001.360 20011225 040506.789 : */ : if (cp - str > 2) 0.00 : 6cd738: 48 89 f8 mov %rdi,%rax 0.00 : 6cd73b: 4c 29 e0 sub %r12,%rax 0.00 : 6cd73e: 48 83 f8 02 cmp $0x2,%rax 0.00 : 6cd742: 7f 34 jg 6cd778 : if (dterr < 0) : return dterr; : return 0; : } : : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cd744: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6cd748: e8 03 f0 ff ff callq 6cc750 : if (dterr) 0.00 : 6cd74d: 85 c0 test %eax,%eax : if (dterr < 0) : return dterr; : return 0; : } : : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cd74f: 89 c2 mov %eax,%edx : if (dterr) 0.00 : 6cd751: 75 ae jne 6cd701 : } : else if (*cp != '\0') : return DTERR_BAD_FORMAT; : : /* Special case for day of year */ : if (flen == 3 && (fmask & DTK_DATE_M) == DTK_M(YEAR) && val >= 1 && 0.00 : 6cd753: 83 7d c4 03 cmpl $0x3,-0x3c(%rbp) 0.00 : 6cd757: 0f 85 3c 01 00 00 jne 6cd899 0.00 : 6cd75d: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 6cd760: 83 e0 0e and $0xe,%eax 0.00 : 6cd763: 83 f8 04 cmp $0x4,%eax 0.00 : 6cd766: 0f 84 01 01 00 00 je 6cd86d : /* tm_mon and tm_mday can't actually be set yet ... */ : return 0; : } : : /* Switch based on what we have so far */ : switch (fmask & DTK_DATE_M) 0.00 : 6cd76c: 89 c0 mov %eax,%eax 0.00 : 6cd76e: ff 24 c5 e0 9f 8b 00 jmpq *0x8b9fe0(,%rax,8) 0.00 : 6cd775: 0f 1f 00 nopl (%rax) : * More than two digits before decimal point? Then could be a date or : * a run-together time: 2001.360 20011225 040506.789 : */ : if (cp - str > 2) : { : dterr = DecodeNumberField(flen, str, 0.00 : 6cd778: 83 4d bc 0e orl $0xe,-0x44(%rbp) : tm->tm_year = val; : break; : : case (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY)): : /* we have all the date, so it must be a time field */ : dterr = DecodeNumberField(flen, str, fmask, 0.00 : 6cd77c: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6cd780: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 6cd783: 4d 89 f8 mov %r15,%r8 0.00 : 6cd786: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 6cd78a: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 6cd78d: 4c 89 e9 mov %r13,%rcx 0.00 : 6cd790: 4c 89 e6 mov %r12,%rsi 0.00 : 6cd793: 48 89 04 24 mov %rax,(%rsp) 0.00 : 6cd797: e8 14 fd ff ff callq 6cd4b0 0.00 : 6cd79c: 31 d2 xor %edx,%edx 0.00 : 6cd79e: 85 c0 test %eax,%eax 0.00 : 6cd7a0: 0f 4e d0 cmovle %eax,%edx 0.00 : 6cd7a3: e9 59 ff ff ff jmpq 6cd701 : * is. There used to be lots of heuristics here, but the : * consensus now is to be paranoid. It *must* be either : * YYYY-MM-DD (with a more-than-two-digit year field), or the : * field order defined by DateOrder. : */ : if (flen >= 3 || DateOrder == DATEORDER_YMD) 0.00 : 6cd7a8: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2501 16.67 : 6cd7ac: 7f 54 jg 6cd802 0.00 : 6cd7ae: 8b 05 5c b3 49 00 mov 0x49b35c(%rip),%eax # b68b10 0.00 : 6cd7b4: 85 c0 test %eax,%eax 0.00 : 6cd7b6: 74 4a je 6cd802 : { : *tmask = DTK_M(YEAR); : tm->tm_year = val; : } : else if (DateOrder == DATEORDER_DMY) 0.00 : 6cd7b8: 83 e8 01 sub $0x1,%eax 0.00 : 6cd7bb: 0f 84 9b 00 00 00 je 6cd85c : } : break; : : case (DTK_M(DAY)): : /* Must be at second field of DD-MM-YY */ : *tmask = DTK_M(MONTH); 0.00 : 6cd7c1: 41 c7 45 00 02 00 00 movl $0x2,0x0(%r13) 0.00 : 6cd7c8: 00 : tm->tm_mon = val; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2582 16.67 : 6cd7c9: 45 89 77 10 mov %r14d,0x10(%r15) : : /* : * When processing a year field, mark it for adjustment if it's only one : * or two digits. : */ : if (*tmask == DTK_M(YEAR)) 0.00 : 6cd7cd: 31 d2 xor %edx,%edx 0.00 : 6cd7cf: 41 83 7d 00 04 cmpl $0x4,0x0(%r13) 0.00 : 6cd7d4: 0f 85 27 ff ff ff jne 6cd701 : *is2digits = (flen <= 2); 0.00 : 6cd7da: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2610 8.33 : 6cd7de: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6cd7e2: 0f 9e 00 setle (%rax) 0.00 : 6cd7e5: 31 d2 xor %edx,%edx 0.00 : 6cd7e7: e9 15 ff ff ff jmpq 6cd701 : : dterr = ParseFractionalSecond(cp, fsec); : if (dterr) : return dterr; : } : else if (*cp != '\0') 0.00 : 6cd7ec: 84 c0 test %al,%al 0.00 : 6cd7ee: 0f 84 5f ff ff ff je 6cd753 0.00 : 6cd7f4: 0f 1f 40 00 nopl 0x0(%rax) : /* : * When processing a year field, mark it for adjustment if it's only one : * or two digits. : */ : if (*tmask == DTK_M(YEAR)) : *is2digits = (flen <= 2); 0.00 : 6cd7f8: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 6cd7fd: e9 ff fe ff ff jmpq 6cd701 : tm->tm_mon = val; : break; : : case (DTK_M(MONTH) | DTK_M(DAY)): : /* Must be at third field of DD-MM-YY or MM-DD-YY */ : *tmask = DTK_M(YEAR); 0.00 : 6cd802: 41 c7 45 00 04 00 00 movl $0x4,0x0(%r13) 0.00 : 6cd809: 00 : tm->tm_year = val; 0.00 : 6cd80a: 45 89 77 14 mov %r14d,0x14(%r15) 0.00 : 6cd80e: 66 90 xchg %ax,%ax : break; 0.00 : 6cd810: eb bb jmp 6cd7cd : tm->tm_mday = val; : } : break; : : case (DTK_M(YEAR) | DTK_M(MONTH)): : if (haveTextMonth) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2554 16.67 : 6cd812: 80 7d c3 00 cmpb $0x0,-0x3d(%rbp) 0.00 : 6cd816: 74 44 je 6cd85c : { : /* Need to accept DD-MON-YYYY even in YMD mode */ : if (flen >= 3 && *is2digits) 0.00 : 6cd818: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 0.00 : 6cd81c: 7e 3e jle 6cd85c 0.00 : 6cd81e: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6cd822: 80 38 00 cmpb $0x0,(%rax) 0.00 : 6cd825: 74 35 je 6cd85c : { : /* Guess that first numeric field is day was wrong */ : *tmask = DTK_M(DAY); /* YEAR is already set */ 0.00 : 6cd827: 41 c7 45 00 08 00 00 movl $0x8,0x0(%r13) 0.00 : 6cd82e: 00 : tm->tm_mday = tm->tm_year; 0.00 : 6cd82f: 41 8b 47 14 mov 0x14(%r15),%eax : tm->tm_year = val; 0.00 : 6cd833: 45 89 77 14 mov %r14d,0x14(%r15) : /* Need to accept DD-MON-YYYY even in YMD mode */ : if (flen >= 3 && *is2digits) : { : /* Guess that first numeric field is day was wrong */ : *tmask = DTK_M(DAY); /* YEAR is already set */ : tm->tm_mday = tm->tm_year; 0.00 : 6cd837: 41 89 47 0c mov %eax,0xc(%r15) : tm->tm_year = val; : *is2digits = FALSE; 0.00 : 6cd83b: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6cd83f: c6 00 00 movb $0x0,(%rax) : : case (DTK_M(YEAR) | DTK_M(MONTH)): : if (haveTextMonth) : { : /* Need to accept DD-MON-YYYY even in YMD mode */ : if (flen >= 3 && *is2digits) 0.00 : 6cd842: eb 89 jmp 6cd7cd : *tmask = DTK_M(MONTH); : tm->tm_mon = val; : break; : : case (DTK_M(MONTH)): : if (haveTextMonth) 0.00 : 6cd844: 80 7d c3 00 cmpb $0x0,-0x3d(%rbp) 0.00 : 6cd848: 74 12 je 6cd85c : * textual month name. We want to support the variants : * MON-DD-YYYY, DD-MON-YYYY, and YYYY-MON-DD as unambiguous : * inputs. We will also accept MON-DD-YY or DD-MON-YY in : * either DMY or MDY modes, as well as YY-MON-DD in YMD mode. : */ : if (flen >= 3 || DateOrder == DATEORDER_YMD) 0.00 : 6cd84a: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 0.00 : 6cd84e: 7f b2 jg 6cd802 0.00 : 6cd850: 44 8b 05 b9 b2 49 00 mov 0x49b2b9(%rip),%r8d # b68b10 0.00 : 6cd857: 45 85 c0 test %r8d,%r8d 0.00 : 6cd85a: 74 a6 je 6cd802 : } : } : else : { : /* Must be at third field of YY-MM-DD */ : *tmask = DTK_M(DAY); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2574 8.33 : 6cd85c: 41 c7 45 00 08 00 00 movl $0x8,0x0(%r13) 0.00 : 6cd863: 00 : tm->tm_mday = val; 0.00 : 6cd864: 45 89 77 0c mov %r14d,0xc(%r15) 0.00 : 6cd868: e9 60 ff ff ff jmpq 6cd7cd : } : else if (*cp != '\0') : return DTERR_BAD_FORMAT; : : /* Special case for day of year */ : if (flen == 3 && (fmask & DTK_DATE_M) == DTK_M(YEAR) && val >= 1 && 0.00 : 6cd86d: 45 85 f6 test %r14d,%r14d 0.00 : 6cd870: 0f 8e f6 fe ff ff jle 6cd76c 0.00 : 6cd876: 41 81 fe 6e 01 00 00 cmp $0x16e,%r14d 0.00 : 6cd87d: 0f 1f 00 nopl (%rax) 0.00 : 6cd880: 0f 8f 3b ff ff ff jg 6cd7c1 : val <= 366) : { : *tmask = (DTK_M(DOY) | DTK_M(MONTH) | DTK_M(DAY)); 0.00 : 6cd886: 41 c7 45 00 0a 80 00 movl $0x800a,0x0(%r13) 0.00 : 6cd88d: 00 : tm->tm_yday = val; 0.00 : 6cd88e: 31 d2 xor %edx,%edx 0.00 : 6cd890: 45 89 77 1c mov %r14d,0x1c(%r15) : */ : if (*tmask == DTK_M(YEAR)) : *is2digits = (flen <= 2); : : return 0; : } 0.00 : 6cd894: e9 68 fe ff ff jmpq 6cd701 : /* Special case for day of year */ : if (flen == 3 && (fmask & DTK_DATE_M) == DTK_M(YEAR) && val >= 1 && : val <= 366) : { : *tmask = (DTK_M(DOY) | DTK_M(MONTH) | DTK_M(DAY)); : tm->tm_yday = val; 0.00 : 6cd899: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 6cd89c: 83 e0 0e and $0xe,%eax 0.00 : 6cd89f: e9 c8 fe ff ff jmpq 6cd76c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:748 22.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:748 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:686 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:747 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:745 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000711cb0 : : * Decompresses source into dest. : * ---------- : */ : void : pglz_decompress(const PGLZ_Header *source, char *dest) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:686 11.11 : 711cb0: 55 push %rbp : const unsigned char *sp; : const unsigned char *srcend; : unsigned char *dp; : unsigned char *destend; : : sp = ((const unsigned char *) source) + sizeof(PGLZ_Header); 0.00 : 711cb1: 4c 8d 47 08 lea 0x8(%rdi),%r8 : * Decompresses source into dest. : * ---------- : */ : void : pglz_decompress(const PGLZ_Header *source, char *dest) : { 0.00 : 711cb5: 48 89 e5 mov %rsp,%rbp 0.00 : 711cb8: 41 55 push %r13 0.00 : 711cba: 41 54 push %r12 0.00 : 711cbc: 53 push %rbx 0.00 : 711cbd: 48 83 ec 08 sub $0x8,%rsp : const unsigned char *srcend; : unsigned char *dp; : unsigned char *destend; : : sp = ((const unsigned char *) source) + sizeof(PGLZ_Header); : srcend = ((const unsigned char *) source) + VARSIZE(source); 0.00 : 711cc1: 8b 07 mov (%rdi),%eax 0.00 : 711cc3: c1 e8 02 shr $0x2,%eax 0.00 : 711cc6: 89 c0 mov %eax,%eax 0.00 : 711cc8: 4c 8d 2c 07 lea (%rdi,%rax,1),%r13 : dp = (unsigned char *) dest; : destend = dp + source->rawsize; 0.00 : 711ccc: 48 63 47 04 movslq 0x4(%rdi),%rax 0.00 : 711cd0: 4c 8d 24 06 lea (%rsi,%rax,1),%r12 : : while (sp < srcend && dp < destend) 0.00 : 711cd4: 4d 39 e8 cmp %r13,%r8 0.00 : 711cd7: 73 07 jae 711ce0 0.00 : 711cd9: 4c 39 e6 cmp %r12,%rsi 0.00 : 711cdc: 72 3a jb 711d18 0.00 : 711cde: 66 90 xchg %ax,%ax : } : : /* : * Check we decompressed the right amount. : */ : if (dp != destend || sp != srcend) 0.00 : 711ce0: 4c 39 e6 cmp %r12,%rsi 0.00 : 711ce3: 0f 84 17 01 00 00 je 711e00 : elog(ERROR, "compressed data is corrupt"); 0.00 : 711ce9: ba 90 48 8c 00 mov $0x8c4890,%edx 0.00 : 711cee: be 06 03 00 00 mov $0x306,%esi 0.00 : 711cf3: bf 34 48 8c 00 mov $0x8c4834,%edi 0.00 : 711cf8: e8 23 97 06 00 callq 77b420 0.00 : 711cfd: be 44 48 8c 00 mov $0x8c4844,%esi 0.00 : 711d02: bf 14 00 00 00 mov $0x14,%edi 0.00 : 711d07: 31 c0 xor %eax,%eax 0.00 : 711d09: e8 22 95 06 00 callq 77b230 0.00 : 711d0e: e8 bd 77 d5 ff callq 4694d0 0.00 : 711d13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * Read one control byte and process the next 8 items (or as many as : * remain in the compressed input). : */ : unsigned char ctrl = *sp++; 0.00 : 711d18: 45 0f b6 10 movzbl (%r8),%r10d 0.00 : 711d1c: 49 83 c0 01 add $0x1,%r8 : int ctrlc; : : for (ctrlc = 0; ctrlc < 8 && sp < srcend; ctrlc++) 0.00 : 711d20: 4d 39 c5 cmp %r8,%r13 0.00 : 711d23: 76 af jbe 711cd4 0.00 : 711d25: 45 31 c9 xor %r9d,%r9d : { : if (ctrl & 1) 0.00 : 711d28: 41 f6 c2 01 test $0x1,%r10b : * remain in the compressed input). : */ : unsigned char ctrl = *sp++; : int ctrlc; : : for (ctrlc = 0; ctrlc < 8 && sp < srcend; ctrlc++) 0.00 : 711d2c: 48 89 f7 mov %rsi,%rdi : { : if (ctrl & 1) 0.00 : 711d2f: 0f 84 9c 00 00 00 je 711dd1 0.00 : 711d35: 0f 1f 00 nopl (%rax) : * longer the match really was (0-255). : */ : int32 len; : int32 off; : : len = (sp[0] & 0x0f) + 3; 0.00 : 711d38: 41 0f b6 10 movzbl (%r8),%edx : off = ((sp[0] & 0xf0) << 4) | sp[1]; 0.00 : 711d3c: 41 0f b6 58 01 movzbl 0x1(%r8),%ebx : sp += 2; 0.00 : 711d41: 49 83 c0 02 add $0x2,%r8 : * longer the match really was (0-255). : */ : int32 len; : int32 off; : : len = (sp[0] & 0x0f) + 3; 0.00 : 711d45: 89 d0 mov %edx,%eax 0.00 : 711d47: 83 e0 0f and $0xf,%eax 0.00 : 711d4a: 8d 48 03 lea 0x3(%rax),%ecx : off = ((sp[0] & 0xf0) << 4) | sp[1]; : sp += 2; : if (len == 18) 0.00 : 711d4d: 83 f9 12 cmp $0x12,%ecx 0.00 : 711d50: 0f 84 9a 00 00 00 je 711df0 : * memory in case of corrupt input. Note: we must advance dp : * here to ensure the error is detected below the loop. We : * don't simply put the elog inside the loop since that will : * probably interfere with optimization. : */ : if (dp + len > destend) 0.00 : 711d56: 48 63 c1 movslq %ecx,%rax 0.00 : 711d59: 48 01 c6 add %rax,%rsi 0.00 : 711d5c: 49 39 f4 cmp %rsi,%r12 0.00 : 711d5f: 0f 82 6f ff ff ff jb 711cd4 : * Now we copy the bytes specified by the tag from OUTPUT to : * OUTPUT. It is dangerous and platform dependent to use : * memcpy() here, because the copied areas could overlap : * extremely! : */ : while (len--) 0.00 : 711d65: 81 e2 f0 00 00 00 and $0xf0,%edx 0.00 : 711d6b: 0f b6 c3 movzbl %bl,%eax 0.00 : 711d6e: 44 8d 59 ff lea -0x1(%rcx),%r11d 0.00 : 711d72: c1 e2 04 shl $0x4,%edx 0.00 : 711d75: 09 c2 or %eax,%edx 0.00 : 711d77: f7 da neg %edx 0.00 : 711d79: 48 63 c2 movslq %edx,%rax 0.00 : 711d7c: 48 89 fa mov %rdi,%rdx 0.00 : 711d7f: 48 8d 0c 07 lea (%rdi,%rax,1),%rcx 0.00 : 711d83: 44 89 d8 mov %r11d,%eax 0.00 : 711d86: 48 8d 74 07 01 lea 0x1(%rdi,%rax,1),%rsi 0.00 : 711d8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : *dp = dp[-off]; 0.00 : 711d90: 0f b6 01 movzbl (%rcx),%eax : dp++; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:748 22.22 : 711d93: 48 83 c1 01 add $0x1,%rcx : * memcpy() here, because the copied areas could overlap : * extremely! : */ : while (len--) : { : *dp = dp[-off]; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:747 11.11 : 711d97: 88 02 mov %al,(%rdx) : dp++; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:748 44.44 : 711d99: 48 83 c2 01 add $0x1,%rdx : * Now we copy the bytes specified by the tag from OUTPUT to : * OUTPUT. It is dangerous and platform dependent to use : * memcpy() here, because the copied areas could overlap : * extremely! : */ : while (len--) 0.00 : 711d9d: 48 39 f2 cmp %rsi,%rdx 0.00 : 711da0: 75 ee jne 711d90 0.00 : 711da2: 44 89 d8 mov %r11d,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:745 11.11 : 711da5: 48 8d 74 07 01 lea 0x1(%rdi,%rax,1),%rsi : * remain in the compressed input). : */ : unsigned char ctrl = *sp++; : int ctrlc; : : for (ctrlc = 0; ctrlc < 8 && sp < srcend; ctrlc++) 0.00 : 711daa: 41 83 c1 01 add $0x1,%r9d 0.00 : 711dae: 41 83 f9 07 cmp $0x7,%r9d 0.00 : 711db2: 0f 8f 1c ff ff ff jg 711cd4 0.00 : 711db8: 4d 39 e8 cmp %r13,%r8 0.00 : 711dbb: 0f 83 1f ff ff ff jae 711ce0 : } : : /* : * Advance the control bit : */ : ctrl >>= 1; 0.00 : 711dc1: 41 d0 ea shr %r10b 0.00 : 711dc4: 48 89 f7 mov %rsi,%rdi : unsigned char ctrl = *sp++; : int ctrlc; : : for (ctrlc = 0; ctrlc < 8 && sp < srcend; ctrlc++) : { : if (ctrl & 1) 0.00 : 711dc7: 41 f6 c2 01 test $0x1,%r10b 0.00 : 711dcb: 0f 85 67 ff ff ff jne 711d38 : { : /* : * An unset control bit means LITERAL BYTE. So we just copy : * one from INPUT to OUTPUT. : */ : if (dp >= destend) /* check for buffer overrun */ 0.00 : 711dd1: 49 39 f4 cmp %rsi,%r12 0.00 : 711dd4: 0f 86 fa fe ff ff jbe 711cd4 : break; /* do not clobber memory */ : : *dp++ = *sp++; 0.00 : 711dda: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 711dde: 49 83 c0 01 add $0x1,%r8 0.00 : 711de2: 88 06 mov %al,(%rsi) 0.00 : 711de4: 48 83 c6 01 add $0x1,%rsi 0.00 : 711de8: eb c0 jmp 711daa 0.00 : 711dea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : len = (sp[0] & 0x0f) + 3; : off = ((sp[0] & 0xf0) << 4) | sp[1]; : sp += 2; : if (len == 18) : len += *sp++; 0.00 : 711df0: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 711df4: 49 83 c0 01 add $0x1,%r8 0.00 : 711df8: 8d 48 12 lea 0x12(%rax),%ecx 0.00 : 711dfb: e9 56 ff ff ff jmpq 711d56 : } : : /* : * Check we decompressed the right amount. : */ : if (dp != destend || sp != srcend) 0.00 : 711e00: 4d 39 e8 cmp %r13,%r8 0.00 : 711e03: 0f 85 e0 fe ff ff jne 711ce9 : elog(ERROR, "compressed data is corrupt"); : : /* : * That's it. : */ : } 0.00 : 711e09: 48 83 c4 08 add $0x8,%rsp 0.00 : 711e0d: 5b pop %rbx 0.00 : 711e0e: 41 5c pop %r12 0.00 : 711e10: 41 5d pop %r13 0.00 : 711e12: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1140 21.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1165 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1130 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1113 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1150 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1159 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1250 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000766190 : : SearchCatCache(CatCache *cache, : Datum v1, : Datum v2, : Datum v3, : Datum v4) : { 0.00 : 766190: 55 push %rbp 0.00 : 766191: 48 89 e5 mov %rsp,%rbp 0.00 : 766194: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1113 7.14 : 766196: 41 56 push %r14 0.00 : 766198: 4d 89 c6 mov %r8,%r14 0.00 : 76619b: 41 55 push %r13 0.00 : 76619d: 49 89 cd mov %rcx,%r13 0.00 : 7661a0: 41 54 push %r12 0.00 : 7661a2: 49 89 d4 mov %rdx,%r12 0.00 : 7661a5: 53 push %rbx 0.00 : 7661a6: 48 89 f3 mov %rsi,%rbx 0.00 : 7661a9: 48 81 ec 68 01 00 00 sub $0x168,%rsp 0.00 : 7661b0: 48 89 bd 88 fe ff ff mov %rdi,-0x178(%rbp) : Assert(IsTransactionState()); : : /* : * one-time startup overhead for each cache : */ : if (cache->cc_tupdesc == NULL) 0.00 : 7661b7: 48 83 7f 28 00 cmpq $0x0,0x28(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1130 14.29 : 7661bc: 0f 84 af 04 00 00 je 766671 : #endif : : /* : * initialize the search key information : */ : memcpy(cur_skey, cache->cc_skey, sizeof(cur_skey)); 0.00 : 7661c2: 48 8b b5 88 fe ff ff mov -0x178(%rbp),%rsi 0.00 : 7661c9: 48 8d 85 a0 fe ff ff lea -0x160(%rbp),%rax 0.00 : 7661d0: b9 24 00 00 00 mov $0x24,%ecx 0.00 : 7661d5: 48 89 85 78 fe ff ff mov %rax,-0x188(%rbp) 0.00 : 7661dc: 48 89 c7 mov %rax,%rdi 0.00 : 7661df: 48 83 c6 70 add $0x70,%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1140 35.71 : 7661e3: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : cur_skey[0].sk_argument = v1; : cur_skey[1].sk_argument = v2; : cur_skey[2].sk_argument = v3; 0.00 : 7661e6: 4c 89 ad 70 ff ff ff mov %r13,-0x90(%rbp) : : /* : * initialize the search key information : */ : memcpy(cur_skey, cache->cc_skey, sizeof(cur_skey)); : cur_skey[0].sk_argument = v1; 0.00 : 7661ed: 48 89 9d e0 fe ff ff mov %rbx,-0x120(%rbp) : cur_skey[1].sk_argument = v2; 0.00 : 7661f4: 4c 89 a5 28 ff ff ff mov %r12,-0xd8(%rbp) : cur_skey[2].sk_argument = v3; : cur_skey[3].sk_argument = v4; 0.00 : 7661fb: 4c 89 75 b8 mov %r14,-0x48(%rbp) : : /* : * find the hash bucket in which to look for the tuple : */ : hashValue = CatalogCacheComputeHashValue(cache, cache->cc_nkeys, cur_skey); 0.00 : 7661ff: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 766206: 48 8b bd 88 fe ff ff mov -0x178(%rbp),%rdi 0.00 : 76620d: 8b 72 38 mov 0x38(%rdx),%esi 0.00 : 766210: 48 89 c2 mov %rax,%rdx 0.00 : 766213: e8 d8 e6 ff ff callq 7648f0 : hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); 0.00 : 766218: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx : cur_skey[3].sk_argument = v4; : : /* : * find the hash bucket in which to look for the tuple : */ : hashValue = CatalogCacheComputeHashValue(cache, cache->cc_nkeys, cur_skey); 0.00 : 76621f: 89 85 98 fe ff ff mov %eax,-0x168(%rbp) : hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); 0.00 : 766225: 8b 95 98 fe ff ff mov -0x168(%rbp),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1150 7.14 : 76622b: 8b 41 34 mov 0x34(%rcx),%eax 0.00 : 76622e: 83 e8 01 sub $0x1,%eax 0.00 : 766231: 21 d0 and %edx,%eax : * scan the hash bucket until we find a match or exhaust our tuples : * : * Note: it's okay to use dlist_foreach here, even though we modify the : * dlist within the loop, because we don't continue the loop afterwards. : */ : bucket = &cache->cc_bucket[hashIndex]; 0.00 : 766233: 41 89 c7 mov %eax,%r15d : : /* : * find the hash bucket in which to look for the tuple : */ : hashValue = CatalogCacheComputeHashValue(cache, cache->cc_nkeys, cur_skey); : hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); 0.00 : 766236: 89 85 9c fe ff ff mov %eax,-0x164(%rbp) : * scan the hash bucket until we find a match or exhaust our tuples : * : * Note: it's okay to use dlist_foreach here, even though we modify the : * dlist within the loop, because we don't continue the loop afterwards. : */ : bucket = &cache->cc_bucket[hashIndex]; 0.00 : 76623c: 49 c1 e7 04 shl $0x4,%r15 0.00 : 766240: 4c 03 b9 a8 01 00 00 add 0x1a8(%rcx),%r15 : dlist_foreach(iter, bucket) 0.00 : 766247: 4d 8b 6f 08 mov 0x8(%r15),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1159 7.14 : 76624b: 4d 85 ed test %r13,%r13 0.00 : 76624e: 75 0c jne 76625c 0.00 : 766250: e9 db 01 00 00 jmpq 766430 0.00 : 766255: 0f 1f 00 nopl (%rax) 0.00 : 766258: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 76625c: 4d 39 ef cmp %r13,%r15 0.00 : 76625f: 0f 84 cb 01 00 00 je 766430 : { : bool res; : : ct = dlist_container(CatCTup, cache_elem, iter.cur); 0.00 : 766265: 4d 8d 65 f0 lea -0x10(%r13),%r12 : : if (ct->dead) 0.00 : 766269: 41 80 7c 24 2c 00 cmpb $0x0,0x2c(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1165 21.43 : 76626f: 90 nop 0.00 : 766270: 75 e6 jne 766258 : continue; /* ignore dead entries */ : : if (ct->hash_value != hashValue) 0.00 : 766272: 8b 8d 98 fe ff ff mov -0x168(%rbp),%ecx 0.00 : 766278: 41 3b 4c 24 30 cmp 0x30(%r12),%ecx 0.00 : 76627d: 75 d9 jne 766258 : continue; /* quickly skip entry if wrong hash val */ : : /* : * see if the cached tuple matches our key. : */ : HeapKeyTest(&ct->tuple, 0.00 : 76627f: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 766286: 8b 42 38 mov 0x38(%rdx),%eax 0.00 : 766289: 85 c0 test %eax,%eax 0.00 : 76628b: 0f 84 87 02 00 00 je 766518 0.00 : 766291: f6 85 a0 fe ff ff 01 testb $0x1,-0x160(%rbp) 0.00 : 766298: 75 be jne 766258 0.00 : 76629a: 49 8d 4d 28 lea 0x28(%r13),%rcx 0.00 : 76629e: 44 8d 70 ff lea -0x1(%rax),%r14d 0.00 : 7662a2: 48 8d 9d a0 fe ff ff lea -0x160(%rbp),%rbx 0.00 : 7662a9: 48 89 8d 90 fe ff ff mov %rcx,-0x170(%rbp) 0.00 : 7662b0: e9 ad 00 00 00 jmpq 766362 0.00 : 7662b5: 0f 1f 00 nopl (%rax) 0.00 : 7662b8: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 7662bc: 49 8b 7c 24 48 mov 0x48(%r12),%rdi 0.00 : 7662c1: f6 47 14 01 testb $0x1,0x14(%rdi) 0.00 : 7662c5: 0f 85 c5 00 00 00 jne 766390 0.00 : 7662cb: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax 0.00 : 7662d2: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.00 : 7662d6: 4c 8b 40 28 mov 0x28(%rax),%r8 0.00 : 7662da: 48 0f bf d1 movswq %cx,%rdx 0.00 : 7662de: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : 7662e2: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 7662e7: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 7662ea: 85 c0 test %eax,%eax 0.00 : 7662ec: 0f 88 26 01 00 00 js 766418 0.00 : 7662f2: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 7662f6: 0f 84 04 01 00 00 je 766400 0.00 : 7662fc: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 766300: 66 83 fa 08 cmp $0x8,%dx 0.00 : 766304: 0f 84 f6 01 00 00 je 766500 0.00 : 76630a: 66 83 fa 04 cmp $0x4,%dx 0.00 : 76630e: 66 90 xchg %ax,%ax 0.00 : 766310: 0f 84 5a 02 00 00 je 766570 0.00 : 766316: 66 83 fa 02 cmp $0x2,%dx 0.00 : 76631a: 0f 84 a8 02 00 00 je 7665c8 0.00 : 766320: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 766324: 48 98 cltq 0.00 : 766326: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76632a: 0f b6 14 10 movzbl (%rax,%rdx,1),%edx 0.00 : 76632e: 66 90 xchg %ax,%ax 0.00 : 766330: 48 8b 4b 40 mov 0x40(%rbx),%rcx 0.00 : 766334: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 766337: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 76633b: e8 f0 7c 01 00 callq 77e030 0.00 : 766340: 84 c0 test %al,%al 0.00 : 766342: 0f 84 10 ff ff ff je 766258 0.00 : 766348: 45 85 f6 test %r14d,%r14d 0.00 : 76634b: 0f 84 c7 01 00 00 je 766518 0.00 : 766351: 48 83 c3 48 add $0x48,%rbx 0.00 : 766355: f6 03 01 testb $0x1,(%rbx) 0.00 : 766358: 0f 85 fa fe ff ff jne 766258 0.00 : 76635e: 41 83 ee 01 sub $0x1,%r14d 0.00 : 766362: 0f b7 43 04 movzwl 0x4(%rbx),%eax 0.00 : 766366: 66 85 c0 test %ax,%ax 0.00 : 766369: 7e 6d jle 7663d8 0.00 : 76636b: 0f bf d0 movswl %ax,%edx 0.00 : 76636e: 49 8b 44 24 48 mov 0x48(%r12),%rax 0.00 : 766373: 0f b7 40 12 movzwl 0x12(%rax),%eax 0.00 : 766377: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 76637c: 39 c2 cmp %eax,%edx 0.00 : 76637e: 0f 8e 34 ff ff ff jle 7662b8 0.00 : 766384: c6 45 cf 01 movb $0x1,-0x31(%rbp) 0.00 : 766388: e9 cb fe ff ff jmpq 766258 0.00 : 76638d: 0f 1f 00 nopl (%rax) 0.00 : 766390: 0f bf 73 04 movswl 0x4(%rbx),%esi 0.00 : 766394: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 766397: 89 c8 mov %ecx,%eax 0.00 : 766399: 83 e1 07 and $0x7,%ecx 0.00 : 76639c: c1 f8 03 sar $0x3,%eax 0.00 : 76639f: 48 98 cltq 0.00 : 7663a1: 0f b6 44 07 17 movzbl 0x17(%rdi,%rax,1),%eax 0.00 : 7663a6: d3 f8 sar %cl,%eax 0.00 : 7663a8: a8 01 test $0x1,%al 0.00 : 7663aa: 74 d8 je 766384 0.00 : 7663ac: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 7663b3: 48 8b bd 90 fe ff ff mov -0x170(%rbp),%rdi 0.00 : 7663ba: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 7663be: e8 cd 95 d0 ff callq 46f990 0.00 : 7663c3: 48 89 c2 mov %rax,%rdx 0.00 : 7663c6: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 7663ca: 0f 84 60 ff ff ff je 766330 0.00 : 7663d0: e9 83 fe ff ff jmpq 766258 0.00 : 7663d5: 0f 1f 00 nopl (%rax) 0.00 : 7663d8: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 7663df: 48 8b bd 90 fe ff ff mov -0x170(%rbp),%rdi 0.00 : 7663e6: 0f bf f0 movswl %ax,%esi 0.00 : 7663e9: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 7663ed: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 7663f1: e8 da 88 d0 ff callq 46ecd0 0.00 : 7663f6: 48 89 c2 mov %rax,%rdx 0.00 : 7663f9: eb cb jmp 7663c6 0.00 : 7663fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 766400: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 766404: 48 98 cltq 0.00 : 766406: 48 01 d0 add %rdx,%rax 0.00 : 766409: 48 8d 14 07 lea (%rdi,%rax,1),%rdx 0.00 : 76640d: e9 1e ff ff ff jmpq 766330 0.00 : 766412: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 766418: 48 8b bd 90 fe ff ff mov -0x170(%rbp),%rdi 0.00 : 76641f: 4c 89 c2 mov %r8,%rdx 0.00 : 766422: 0f bf f1 movswl %cx,%esi 0.00 : 766425: e8 66 95 d0 ff callq 46f990 0.00 : 76642a: 48 89 c2 mov %rax,%rdx 0.00 : 76642d: eb 97 jmp 7663c6 0.00 : 76642f: 90 nop : * into the cache. The first copy will never be referenced again, and : * will eventually age out of the cache, so there's no functional problem. : * This case is rare enough that it's not worth expending extra cycles to : * detect. : */ : relation = heap_open(cache->cc_reloid, AccessShareLock); 0.00 : 766430: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax 0.00 : 766437: be 01 00 00 00 mov $0x1,%esi 0.00 : 76643c: 8b 78 18 mov 0x18(%rax),%edi 0.00 : 76643f: e8 1c 77 d3 ff callq 49db60 : : scandesc = systable_beginscan(relation, 0.00 : 766444: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx : * into the cache. The first copy will never be referenced again, and : * will eventually age out of the cache, so there's no functional problem. : * This case is rare enough that it's not worth expending extra cycles to : * detect. : */ : relation = heap_open(cache->cc_reloid, AccessShareLock); 0.00 : 76644b: 49 89 c5 mov %rax,%r13 : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 76644e: 83 3a 20 cmpl $0x20,(%rdx) : * This case is rare enough that it's not worth expending extra cycles to : * detect. : */ : relation = heap_open(cache->cc_reloid, AccessShareLock); : : scandesc = systable_beginscan(relation, 0.00 : 766451: 44 8b 42 38 mov 0x38(%rdx),%r8d : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 766455: 0f 86 2d 01 00 00 jbe 766588 0.00 : 76645b: ba 01 00 00 00 mov $0x1,%edx : * This case is rare enough that it's not worth expending extra cycles to : * detect. : */ : relation = heap_open(cache->cc_reloid, AccessShareLock); : : scandesc = systable_beginscan(relation, 0.00 : 766460: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 766467: 4c 8d 8d a0 fe ff ff lea -0x160(%rbp),%r9 0.00 : 76646e: 4c 89 ef mov %r13,%rdi 0.00 : 766471: 8b 71 1c mov 0x1c(%rcx),%esi 0.00 : 766474: 31 c9 xor %ecx,%ecx 0.00 : 766476: e8 25 e8 d3 ff callq 4a4ca0 : cache->cc_nkeys, : cur_skey); : : ct = NULL; : : while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) 0.00 : 76647b: 48 89 c7 mov %rax,%rdi : * This case is rare enough that it's not worth expending extra cycles to : * detect. : */ : relation = heap_open(cache->cc_reloid, AccessShareLock); : : scandesc = systable_beginscan(relation, 0.00 : 76647e: 49 89 c4 mov %rax,%r12 : cache->cc_nkeys, : cur_skey); : : ct = NULL; : : while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) 0.00 : 766481: e8 9a e7 d3 ff callq 4a4c20 0.00 : 766486: 48 85 c0 test %rax,%rax 0.00 : 766489: 0f 84 4c 01 00 00 je 7665db : { : ct = CatalogCacheCreateEntry(cache, ntp, /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1250 7.14 : 76648f: 8b 8d 9c fe ff ff mov -0x164(%rbp),%ecx 0.00 : 766495: 8b 95 98 fe ff ff mov -0x168(%rbp),%edx 0.00 : 76649b: 45 31 c0 xor %r8d,%r8d 0.00 : 76649e: 48 8b bd 88 fe ff ff mov -0x178(%rbp),%rdi 0.00 : 7664a5: 48 89 c6 mov %rax,%rsi 0.00 : 7664a8: e8 33 f0 ff ff callq 7654e0 : hashValue, hashIndex, : false); : /* immediately set the refcount to 1 */ : ResourceOwnerEnlargeCatCacheRefs(CurrentResourceOwner); 0.00 : 7664ad: 48 8b 3d 0c 44 45 00 mov 0x45440c(%rip),%rdi # bba8c0 : : ct = NULL; : : while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) : { : ct = CatalogCacheCreateEntry(cache, ntp, 0.00 : 7664b4: 48 89 c3 mov %rax,%rbx : hashValue, hashIndex, : false); : /* immediately set the refcount to 1 */ : ResourceOwnerEnlargeCatCacheRefs(CurrentResourceOwner); 0.00 : 7664b7: e8 24 49 03 00 callq 79ade0 : ct->refcount++; 0.00 : 7664bc: 83 43 28 01 addl $0x1,0x28(%rbx) : ResourceOwnerRememberCatCacheRef(CurrentResourceOwner, &ct->tuple); 0.00 : 7664c0: 48 83 c3 38 add $0x38,%rbx 0.00 : 7664c4: 48 8b 3d f5 43 45 00 mov 0x4543f5(%rip),%rdi # bba8c0 0.00 : 7664cb: 48 89 de mov %rbx,%rsi 0.00 : 7664ce: e8 1d 3d 03 00 callq 79a1f0 : break; /* assume only one match */ : } : : systable_endscan(scandesc); 0.00 : 7664d3: 4c 89 e7 mov %r12,%rdi 0.00 : 7664d6: e8 45 e6 d3 ff callq 4a4b20 : : heap_close(relation, AccessShareLock); 0.00 : 7664db: be 01 00 00 00 mov $0x1,%esi 0.00 : 7664e0: 4c 89 ef mov %r13,%rdi 0.00 : 7664e3: e8 d8 74 d3 ff callq 49d9c0 : #ifdef CATCACHE_STATS : cache->cc_newloads++; : #endif : : return &ct->tuple; : } 0.00 : 7664e8: 48 81 c4 68 01 00 00 add $0x168,%rsp 0.00 : 7664ef: 48 89 d8 mov %rbx,%rax 0.00 : 7664f2: 5b pop %rbx 0.00 : 7664f3: 41 5c pop %r12 0.00 : 7664f5: 41 5d pop %r13 0.00 : 7664f7: 41 5e pop %r14 0.00 : 7664f9: 41 5f pop %r15 0.00 : 7664fb: c9 leaveq 0.00 : 7664fc: c3 retq 0.00 : 7664fd: 0f 1f 00 nopl (%rax) : continue; /* quickly skip entry if wrong hash val */ : : /* : * see if the cached tuple matches our key. : */ : HeapKeyTest(&ct->tuple, 0.00 : 766500: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 766504: 48 98 cltq 0.00 : 766506: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76650a: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 76650e: e9 1d fe ff ff jmpq 766330 0.00 : 766513: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * We found a match in the cache. Move it to the front of the list : * for its hashbucket, in order to speed subsequent searches. (The : * most frequently accessed elements in any hashbucket will tend to be : * near the front of the hashbucket's list.) : */ : dlist_move_head(bucket, &ct->cache_elem); 0.00 : 766518: 49 8d 4c 24 10 lea 0x10(%r12),%rcx : */ : STATIC_IF_INLINE void : dlist_move_head(dlist_head *head, dlist_node *node) : { : /* fast path if it's already at the head */ : if (head->head.next == node) 0.00 : 76651d: 49 3b 4f 08 cmp 0x8(%r15),%rcx 0.00 : 766521: 74 39 je 76655c : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 766523: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 766528: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 76652d: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.00 : 766531: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 766536: 49 8b 54 24 18 mov 0x18(%r12),%rdx 0.00 : 76653b: 48 89 02 mov %rax,(%rdx) : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 76653e: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 766542: 48 85 c0 test %rax,%rax 0.00 : 766545: 0f 84 65 01 00 00 je 7666b0 : dlist_init(head); : : node->next = head->head.next; 0.00 : 76654b: 49 89 44 24 18 mov %rax,0x18(%r12) : node->prev = &head->head; 0.00 : 766550: 4d 89 7c 24 10 mov %r15,0x10(%r12) : node->next->prev = node; 0.00 : 766555: 48 89 08 mov %rcx,(%rax) : head->head.next = node; 0.00 : 766558: 49 89 4f 08 mov %rcx,0x8(%r15) : : /* : * If it's a positive entry, bump its refcount and return it. If it's : * negative, we can report failure to the caller. : */ : if (!ct->negative) 0.00 : 76655c: 41 80 7c 24 2d 00 cmpb $0x0,0x2d(%r12) 0.00 : 766562: 0f 84 1d 01 00 00 je 766685 : : ntp = build_dummy_tuple(cache, cache->cc_nkeys, cur_skey); : ct = CatalogCacheCreateEntry(cache, ntp, : hashValue, hashIndex, : true); : heap_freetuple(ntp); 0.00 : 766568: 31 db xor %ebx,%ebx 0.00 : 76656a: e9 79 ff ff ff jmpq 7664e8 0.00 : 76656f: 90 nop : continue; /* quickly skip entry if wrong hash val */ : : /* : * see if the cached tuple matches our key. : */ : HeapKeyTest(&ct->tuple, 0.00 : 766570: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 766574: 48 98 cltq 0.00 : 766576: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76657a: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 76657d: e9 ae fd ff ff jmpq 766330 0.00 : 766582: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 766588: 48 63 0a movslq (%rdx),%rcx 0.00 : 76658b: be 01 00 00 00 mov $0x1,%esi 0.00 : 766590: 48 d3 e6 shl %cl,%rsi 0.00 : 766593: f7 c6 00 0d 00 00 test $0xd00,%esi 0.00 : 766599: 0f 85 b1 00 00 00 jne 766650 0.00 : 76659f: 48 b8 00 00 00 00 01 movabs $0x100000000,%rax 0.00 : 7665a6: 00 00 00 0.00 : 7665a9: 48 85 c6 test %rax,%rsi 0.00 : 7665ac: 0f 84 af 00 00 00 je 766661 0.00 : 7665b2: 31 d2 xor %edx,%edx 0.00 : 7665b4: 80 3d 25 1f 45 00 00 cmpb $0x0,0x451f25(%rip) # bb84e0 0.00 : 7665bb: 0f 95 c2 setne %dl 0.00 : 7665be: e9 9d fe ff ff jmpq 766460 0.00 : 7665c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : continue; /* quickly skip entry if wrong hash val */ : : /* : * see if the cached tuple matches our key. : */ : HeapKeyTest(&ct->tuple, 0.00 : 7665c8: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 7665cc: 48 98 cltq 0.00 : 7665ce: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 7665d2: 0f b7 14 10 movzwl (%rax,%rdx,1),%edx 0.00 : 7665d6: e9 55 fd ff ff jmpq 766330 : ct->refcount++; : ResourceOwnerRememberCatCacheRef(CurrentResourceOwner, &ct->tuple); : break; /* assume only one match */ : } : : systable_endscan(scandesc); 0.00 : 7665db: 4c 89 e7 mov %r12,%rdi 0.00 : 7665de: e8 3d e5 d3 ff callq 4a4b20 : : heap_close(relation, AccessShareLock); 0.00 : 7665e3: 4c 89 ef mov %r13,%rdi 0.00 : 7665e6: be 01 00 00 00 mov $0x1,%esi 0.00 : 7665eb: e8 d0 73 d3 ff callq 49d9c0 : * gets created later. (Bootstrap doesn't do UPDATEs, so it doesn't need : * cache inval for that.) : */ : if (ct == NULL) : { : if (IsBootstrapProcessingMode()) 0.00 : 7665f0: 8b 3d 46 25 40 00 mov 0x402546(%rip),%edi # b68b3c 0.00 : 7665f6: 85 ff test %edi,%edi 0.00 : 7665f8: 0f 84 6a ff ff ff je 766568 : return NULL; : : ntp = build_dummy_tuple(cache, cache->cc_nkeys, cur_skey); 0.00 : 7665fe: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax 0.00 : 766605: 48 8d 95 a0 fe ff ff lea -0x160(%rbp),%rdx 0.00 : 76660c: 8b 70 38 mov 0x38(%rax),%esi 0.00 : 76660f: 48 89 c7 mov %rax,%rdi 0.00 : 766612: e8 59 f1 ff ff callq 765770 : ct = CatalogCacheCreateEntry(cache, ntp, 0.00 : 766617: 8b 8d 9c fe ff ff mov -0x164(%rbp),%ecx 0.00 : 76661d: 8b 95 98 fe ff ff mov -0x168(%rbp),%edx : if (ct == NULL) : { : if (IsBootstrapProcessingMode()) : return NULL; : : ntp = build_dummy_tuple(cache, cache->cc_nkeys, cur_skey); 0.00 : 766623: 48 89 c3 mov %rax,%rbx : ct = CatalogCacheCreateEntry(cache, ntp, 0.00 : 766626: 48 8b bd 88 fe ff ff mov -0x178(%rbp),%rdi 0.00 : 76662d: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 766633: 48 89 c6 mov %rax,%rsi 0.00 : 766636: e8 a5 ee ff ff callq 7654e0 : hashValue, hashIndex, : true); : heap_freetuple(ntp); 0.00 : 76663b: 48 89 df mov %rbx,%rdi 0.00 : 76663e: 31 db xor %ebx,%ebx 0.00 : 766640: e8 7b 86 d0 ff callq 46ecc0 : #ifdef CATCACHE_STATS : cache->cc_newloads++; : #endif : : return &ct->tuple; : } 0.00 : 766645: e9 9e fe ff ff jmpq 7664e8 0.00 : 76664a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 766650: 31 d2 xor %edx,%edx 0.00 : 766652: 80 3d 88 1e 45 00 00 cmpb $0x0,0x451e88(%rip) # bb84e1 0.00 : 766659: 0f 95 c2 setne %dl 0.00 : 76665c: e9 ff fd ff ff jmpq 766460 0.00 : 766661: 31 d2 xor %edx,%edx 0.00 : 766663: 83 e6 06 and $0x6,%esi 0.00 : 766666: 0f 85 f4 fd ff ff jne 766460 0.00 : 76666c: e9 ea fd ff ff jmpq 76645b 0.00 : 766671: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * one-time startup overhead for each cache : */ : if (cache->cc_tupdesc == NULL) : CatalogCacheInitializeCache(cache); 0.00 : 766678: e8 83 df ff ff callq 764600 0.00 : 76667d: 0f 1f 00 nopl (%rax) 0.00 : 766680: e9 3d fb ff ff jmpq 7661c2 : * If it's a positive entry, bump its refcount and return it. If it's : * negative, we can report failure to the caller. : */ : if (!ct->negative) : { : ResourceOwnerEnlargeCatCacheRefs(CurrentResourceOwner); 0.00 : 766685: 48 8b 3d 34 42 45 00 mov 0x454234(%rip),%rdi # bba8c0 : ct->refcount++; : ResourceOwnerRememberCatCacheRef(CurrentResourceOwner, &ct->tuple); 0.00 : 76668c: 49 8d 5c 24 38 lea 0x38(%r12),%rbx : * If it's a positive entry, bump its refcount and return it. If it's : * negative, we can report failure to the caller. : */ : if (!ct->negative) : { : ResourceOwnerEnlargeCatCacheRefs(CurrentResourceOwner); 0.00 : 766691: e8 4a 47 03 00 callq 79ade0 : ct->refcount++; 0.00 : 766696: 41 83 44 24 28 01 addl $0x1,0x28(%r12) : ResourceOwnerRememberCatCacheRef(CurrentResourceOwner, &ct->tuple); 0.00 : 76669c: 48 89 de mov %rbx,%rsi 0.00 : 76669f: 48 8b 3d 1a 42 45 00 mov 0x45421a(%rip),%rdi # bba8c0 0.00 : 7666a6: e8 45 3b 03 00 callq 79a1f0 : #ifdef CATCACHE_STATS : cache->cc_newloads++; : #endif : : return &ct->tuple; : } 0.00 : 7666ab: e9 38 fe ff ff jmpq 7664e8 : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 7666b0: 4d 89 3f mov %r15,(%r15) 0.00 : 7666b3: 4d 89 7f 08 mov %r15,0x8(%r15) 0.00 : 7666b7: 4c 89 f8 mov %r15,%rax 0.00 : 7666ba: e9 8c fe ff ff jmpq 76654b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1895 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1903 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1900 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1903 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1914 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1925 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1925 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077f490 : : * but the alternative of expecting all SPI functions to do SPI_push/SPI_pop : * around I/O calls seems worse. : */ : Datum : InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod) : { 0.00 : 77f490: 55 push %rbp 0.00 : 77f491: 48 89 e5 mov %rsp,%rbp 0.00 : 77f494: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 77f498: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 77f49c: 48 89 f3 mov %rsi,%rbx 0.00 : 77f49f: 4c 89 75 f0 mov %r14,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1895 18.18 : 77f4a3: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 77f4a7: 49 89 fc mov %rdi,%r12 0.00 : 77f4aa: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 77f4ae: 48 81 ec f0 03 00 00 sub $0x3f0,%rsp : FunctionCallInfoData fcinfo; : Datum result; : bool pushed; : : if (str == NULL && flinfo->fn_strict) 0.00 : 77f4b5: 48 85 f6 test %rsi,%rsi : * but the alternative of expecting all SPI functions to do SPI_push/SPI_pop : * around I/O calls seems worse. : */ : Datum : InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod) : { 0.00 : 77f4b8: 41 89 d6 mov %edx,%r14d 0.00 : 77f4bb: 41 89 cf mov %ecx,%r15d : FunctionCallInfoData fcinfo; : Datum result; : bool pushed; : : if (str == NULL && flinfo->fn_strict) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1900 9.09 : 77f4be: 0f 84 bc 00 00 00 je 77f580 : return (Datum) 0; /* just return null result */ : : pushed = SPI_push_conditional(); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1903 9.09 : 77f4c4: e8 17 de e4 ff callq 5cd2e0 : : InitFunctionCallInfoData(fcinfo, flinfo, 3, InvalidOid, NULL, NULL); : : fcinfo.arg[0] = CStringGetDatum(str); : fcinfo.arg[1] = ObjectIdGetDatum(typioparam); 0.00 : 77f4c9: 45 89 f6 mov %r14d,%r14d : fcinfo.arg[2] = Int32GetDatum(typmod); : fcinfo.argnull[0] = (str == NULL); 0.00 : 77f4cc: 48 85 db test %rbx,%rbx : : InitFunctionCallInfoData(fcinfo, flinfo, 3, InvalidOid, NULL, NULL); : : fcinfo.arg[0] = CStringGetDatum(str); : fcinfo.arg[1] = ObjectIdGetDatum(typioparam); : fcinfo.arg[2] = Int32GetDatum(typmod); 0.00 : 77f4cf: 45 89 ff mov %r15d,%r15d : fcinfo.argnull[0] = (str == NULL); 0.00 : 77f4d2: 0f 94 85 60 ff ff ff sete -0xa0(%rbp) : bool pushed; : : if (str == NULL && flinfo->fn_strict) : return (Datum) 0; /* just return null result */ : : pushed = SPI_push_conditional(); 18.18 : 77f4d9: 88 85 1f fc ff ff mov %al,-0x3e1(%rbp) : fcinfo.arg[2] = Int32GetDatum(typmod); : fcinfo.argnull[0] = (str == NULL); : fcinfo.argnull[1] = false; : fcinfo.argnull[2] = false; : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1914 9.09 : 77f4df: 48 8d bd 20 fc ff ff lea -0x3e0(%rbp),%rdi : if (str == NULL && flinfo->fn_strict) : return (Datum) 0; /* just return null result */ : : pushed = SPI_push_conditional(); : : InitFunctionCallInfoData(fcinfo, flinfo, 3, InvalidOid, NULL, NULL); 0.00 : 77f4e6: 4c 89 a5 20 fc ff ff mov %r12,-0x3e0(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 9.09 : 77f4ed: 48 c7 85 28 fc ff ff movq $0x0,-0x3d8(%rbp) 0.00 : 77f4f4: 00 00 00 00 0.00 : 77f4f8: 48 c7 85 30 fc ff ff movq $0x0,-0x3d0(%rbp) 0.00 : 77f4ff: 00 00 00 00 0.00 : 77f503: c7 85 38 fc ff ff 00 movl $0x0,-0x3c8(%rbp) 0.00 : 77f50a: 00 00 00 0.00 : 77f50d: c6 85 3c fc ff ff 00 movb $0x0,-0x3c4(%rbp) 0.00 : 77f514: 66 c7 85 3e fc ff ff movw $0x3,-0x3c2(%rbp) 0.00 : 77f51b: 03 00 : : fcinfo.arg[0] = CStringGetDatum(str); 0.00 : 77f51d: 48 89 9d 40 fc ff ff mov %rbx,-0x3c0(%rbp) : fcinfo.arg[1] = ObjectIdGetDatum(typioparam); 0.00 : 77f524: 4c 89 b5 48 fc ff ff mov %r14,-0x3b8(%rbp) : fcinfo.arg[2] = Int32GetDatum(typmod); 0.00 : 77f52b: 4c 89 bd 50 fc ff ff mov %r15,-0x3b0(%rbp) : fcinfo.argnull[0] = (str == NULL); : fcinfo.argnull[1] = false; 0.00 : 77f532: c6 85 61 ff ff ff 00 movb $0x0,-0x9f(%rbp) : fcinfo.argnull[2] = false; 0.00 : 77f539: c6 85 62 ff ff ff 00 movb $0x0,-0x9e(%rbp) : : result = FunctionCallInvoke(&fcinfo); 0.00 : 77f540: 41 ff 14 24 callq *(%r12) : : /* Should get null result if and only if str is NULL */ : if (str == NULL) 0.00 : 77f544: 48 85 db test %rbx,%rbx : fcinfo.arg[2] = Int32GetDatum(typmod); : fcinfo.argnull[0] = (str == NULL); : fcinfo.argnull[1] = false; : fcinfo.argnull[2] = false; : : result = FunctionCallInvoke(&fcinfo); 0.00 : 77f547: 49 89 c5 mov %rax,%r13 : : /* Should get null result if and only if str is NULL */ : if (str == NULL) 0.00 : 77f54a: 74 44 je 77f590 : elog(ERROR, "input function %u returned non-NULL", : fcinfo.flinfo->fn_oid); : } : else : { : if (fcinfo.isnull) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1925 9.09 : 77f54c: 80 bd 3c fc ff ff 00 cmpb $0x0,-0x3c4(%rbp) 9.09 : 77f553: 75 78 jne 77f5cd : elog(ERROR, "input function %u returned NULL", : fcinfo.flinfo->fn_oid); : } : : SPI_pop_conditional(pushed); 0.00 : 77f555: 0f be bd 1f fc ff ff movsbl -0x3e1(%rbp),%edi 0.00 : 77f55c: e8 af dd e4 ff callq 5cd310 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 9.09 : 77f561: 4c 89 e8 mov %r13,%rax 0.00 : 77f564: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 77f568: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 77f56c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 77f570: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 77f574: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 77f578: c9 leaveq 0.00 : 77f579: c3 retq 0.00 : 77f57a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : FunctionCallInfoData fcinfo; : Datum result; : bool pushed; : : if (str == NULL && flinfo->fn_strict) 0.00 : 77f580: 45 31 ed xor %r13d,%r13d 0.00 : 77f583: 80 7f 0e 00 cmpb $0x0,0xe(%rdi) 0.00 : 77f587: 0f 84 37 ff ff ff je 77f4c4 0.00 : 77f58d: eb d2 jmp 77f561 0.00 : 77f58f: 90 nop : result = FunctionCallInvoke(&fcinfo); : : /* Should get null result if and only if str is NULL */ : if (str == NULL) : { : if (!fcinfo.isnull) 0.00 : 77f590: 80 bd 3c fc ff ff 00 cmpb $0x0,-0x3c4(%rbp) 0.00 : 77f597: 75 bc jne 77f555 : elog(ERROR, "input function %u returned non-NULL", 0.00 : 77f599: ba 00 50 8d 00 mov $0x8d5000,%edx 0.00 : 77f59e: be 81 07 00 00 mov $0x781,%esi 0.00 : 77f5a3: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77f5a8: e8 73 be ff ff callq 77b420 0.00 : 77f5ad: 48 8b 85 20 fc ff ff mov -0x3e0(%rbp),%rax 0.00 : 77f5b4: be e0 4d 8d 00 mov $0x8d4de0,%esi 0.00 : 77f5b9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77f5be: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77f5c1: 31 c0 xor %eax,%eax 0.00 : 77f5c3: e8 68 bc ff ff callq 77b230 0.00 : 77f5c8: e8 03 9f ce ff callq 4694d0 : fcinfo.flinfo->fn_oid); : } : else : { : if (fcinfo.isnull) : elog(ERROR, "input function %u returned NULL", 0.00 : 77f5cd: ba 00 50 8d 00 mov $0x8d5000,%edx 0.00 : 77f5d2: be 87 07 00 00 mov $0x787,%esi 0.00 : 77f5d7: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77f5dc: e8 3f be ff ff callq 77b420 0.00 : 77f5e1: 48 8b 85 20 fc ff ff mov -0x3e0(%rbp),%rax 0.00 : 77f5e8: be 08 4e 8d 00 mov $0x8d4e08,%esi 0.00 : 77f5ed: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77f5f2: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77f5f5: 31 c0 xor %eax,%eax 0.00 : 77f5f7: e8 34 bc ff ff callq 77b230 0.00 : 77f5fc: e8 cf 9e ce ff callq 4694d0 Sorted summary for file /lib64/libncurses.so.5.6 ---------------------------------------------- 83.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libncurses.so.5.6 ------------------------------------------------ : : : : Disassembly of section .fini: : : 00000000000347b8 <_fini>: ??:0 83.33 : 347b8: 48 83 ec 08 sub $0x8,%rsp 16.67 : 347bc: e8 6f 0e fe ff callq 15630 0.00 : 347c1: 48 83 c4 08 add $0x8,%rsp 0.00 : 347c5: c3 retq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 83.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001e8f0 <__libc_fini>: ??:0 83.33 : 1e8f0: 48 8b 05 99 fe 34 00 mov 0x34fe99(%rip),%rax # 36e790 <__DTOR_END__> 16.67 : 1e8f7: 53 push %rbx 0.00 : 1e8f8: 48 85 c0 test %rax,%rax 0.00 : 1e8fb: 74 19 je 1e916 <__libc_fini+0x26> 0.00 : 1e8fd: 48 8d 1d 8c fe 34 00 lea 0x34fe8c(%rip),%rbx # 36e790 <__DTOR_END__> 0.00 : 1e904: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 1e908: 48 83 c3 08 add $0x8,%rbx 0.00 : 1e90c: ff d0 callq *%rax 0.00 : 1e90e: 48 8b 03 mov (%rbx),%rax 0.00 : 1e911: 48 85 c0 test %rax,%rax 0.00 : 1e914: 75 f2 jne 1e908 <__libc_fini+0x18> 0.00 : 1e916: 5b pop %rbx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072790 <_IO_file_seekoff@@GLIBC_2.2.5>: 0.00 : 72790: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) ??:0 11.11 : 72795: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 7279a: 48 89 fb mov %rdi,%rbx 0.00 : 7279d: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 727a2: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 727a7: 49 89 f4 mov %rsi,%r12 0.00 : 727aa: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 727af: 48 81 ec b8 00 00 00 sub $0xb8,%rsp 0.00 : 727b6: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 727ba: 48 39 47 18 cmp %rax,0x18(%rdi) 0.00 : 727be: 89 d5 mov %edx,%ebp 0.00 : 727c0: 41 89 cd mov %ecx,%r13d 0.00 : 727c3: 0f 84 ef 02 00 00 je 72ab8 <_IO_file_seekoff@@GLIBC_2.2.5+0x328> 0.00 : 727c9: 48 8b 57 20 mov 0x20(%rdi),%rdx 0.00 : 727cd: 48 8b 4b 28 mov 0x28(%rbx),%rcx 0.00 : 727d1: 45 31 f6 xor %r14d,%r14d 0.00 : 727d4: 45 85 ed test %r13d,%r13d 0.00 : 727d7: b8 00 00 00 00 mov $0x0,%eax 0.00 : 727dc: 4c 0f 44 e0 cmove %rax,%r12 0.00 : 727e0: b0 01 mov $0x1,%al 0.00 : 727e2: 0f 44 e8 cmove %eax,%ebp 0.00 : 727e5: 48 39 d1 cmp %rdx,%rcx 0.00 : 727e8: 0f 87 ba 00 00 00 ja 728a8 <_IO_file_seekoff@@GLIBC_2.2.5+0x118> 0.00 : 727ee: 8b 03 mov (%rbx),%eax 0.00 : 727f0: f6 c4 08 test $0x8,%ah 0.00 : 727f3: 0f 85 af 00 00 00 jne 728a8 <_IO_file_seekoff@@GLIBC_2.2.5+0x118> 11.11 : 727f9: 48 83 7b 38 00 cmpq $0x0,0x38(%rbx) 11.11 : 727fe: 0f 84 d4 02 00 00 je 72ad8 <_IO_file_seekoff@@GLIBC_2.2.5+0x348> 0.00 : 72804: 83 fd 01 cmp $0x1,%ebp 0.00 : 72807: 0f 84 5b 01 00 00 je 72968 <_IO_file_seekoff@@GLIBC_2.2.5+0x1d8> 0.00 : 7280d: 83 fd 02 cmp $0x2,%ebp 0.00 : 72810: 0f 84 e2 00 00 00 je 728f8 <_IO_file_seekoff@@GLIBC_2.2.5+0x168> 0.00 : 72816: 45 85 ed test %r13d,%r13d 0.00 : 72819: 0f 84 7a 01 00 00 je 72999 <_IO_file_seekoff@@GLIBC_2.2.5+0x209> 0.00 : 7281f: 48 8b b3 90 00 00 00 mov 0x90(%rbx),%rsi 0.00 : 72826: 48 83 fe ff cmp $0xffffffffffffffff,%rsi 0.00 : 7282a: 0f 84 98 01 00 00 je 729c8 <_IO_file_seekoff@@GLIBC_2.2.5+0x238> 0.00 : 72830: 48 83 7b 18 00 cmpq $0x0,0x18(%rbx) 0.00 : 72835: 0f 84 8d 01 00 00 je 729c8 <_IO_file_seekoff@@GLIBC_2.2.5+0x238> 0.00 : 7283b: 8b 03 mov (%rbx),%eax 0.00 : 7283d: f6 c4 01 test $0x1,%ah 0.00 : 72840: 0f 85 84 01 00 00 jne 729ca <_IO_file_seekoff@@GLIBC_2.2.5+0x23a> 0.00 : 72846: 48 8b 4b 38 mov 0x38(%rbx),%rcx 0.00 : 7284a: 48 8d 14 31 lea (%rcx,%rsi,1),%rdx 0.00 : 7284e: 48 2b 53 10 sub 0x10(%rbx),%rdx 11.11 : 72852: 49 39 d4 cmp %rdx,%r12 0.00 : 72855: 0f 8c 6f 01 00 00 jl 729ca <_IO_file_seekoff@@GLIBC_2.2.5+0x23a> 0.00 : 7285b: 49 39 f4 cmp %rsi,%r12 0.00 : 7285e: 0f 8d 66 01 00 00 jge 729ca <_IO_file_seekoff@@GLIBC_2.2.5+0x23a> 0.00 : 72864: 4c 89 e0 mov %r12,%rax 0.00 : 72867: 83 23 ef andl $0xffffffef,(%rbx) 0.00 : 7286a: 48 89 4b 18 mov %rcx,0x18(%rbx) 0.00 : 7286e: 48 29 d0 sub %rdx,%rax 0.00 : 72871: 48 89 4b 28 mov %rcx,0x28(%rbx) 0.00 : 72875: 48 89 4b 20 mov %rcx,0x20(%rbx) 0.00 : 72879: 48 01 c8 add %rcx,%rax 0.00 : 7287c: 48 85 f6 test %rsi,%rsi 0.00 : 7287f: 48 89 4b 30 mov %rcx,0x30(%rbx) 0.00 : 72883: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 72887: 0f 88 0c 01 00 00 js 72999 <_IO_file_seekoff@@GLIBC_2.2.5+0x209> 0.00 : 7288d: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72894: 31 d2 xor %edx,%edx 0.00 : 72896: 48 89 df mov %rbx,%rdi 0.00 : 72899: ff 90 80 00 00 00 callq *0x80(%rax) 0.00 : 7289f: 4c 89 e2 mov %r12,%rdx 0.00 : 728a2: eb 1b jmp 728bf <_IO_file_seekoff@@GLIBC_2.2.5+0x12f> 0.00 : 728a4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 728a8: 48 89 df mov %rbx,%rdi 0.00 : 728ab: e8 70 14 00 00 callq 73d20 <_IO_switch_to_get_mode> 0.00 : 728b0: 85 c0 test %eax,%eax 0.00 : 728b2: 0f 84 41 ff ff ff je 727f9 <_IO_file_seekoff@@GLIBC_2.2.5+0x69> 0.00 : 728b8: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 728bf: 48 89 d0 mov %rdx,%rax 0.00 : 728c2: 48 8b 9c 24 90 00 00 mov 0x90(%rsp),%rbx 0.00 : 728c9: 00 0.00 : 728ca: 48 8b ac 24 98 00 00 mov 0x98(%rsp),%rbp 0.00 : 728d1: 00 0.00 : 728d2: 4c 8b a4 24 a0 00 00 mov 0xa0(%rsp),%r12 0.00 : 728d9: 00 0.00 : 728da: 4c 8b ac 24 a8 00 00 mov 0xa8(%rsp),%r13 0.00 : 728e1: 00 0.00 : 728e2: 4c 8b b4 24 b0 00 00 mov 0xb0(%rsp),%r14 0.00 : 728e9: 00 0.00 : 728ea: 48 81 c4 b8 00 00 00 add $0xb8,%rsp 0.00 : 728f1: c3 retq 0.00 : 728f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 728f8: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 728ff: 48 89 e6 mov %rsp,%rsi 0.00 : 72902: 48 89 df mov %rbx,%rdi 0.00 : 72905: ff 90 90 00 00 00 callq *0x90(%rax) 0.00 : 7290b: 85 c0 test %eax,%eax 0.00 : 7290d: 0f 84 95 00 00 00 je 729a8 <_IO_file_seekoff@@GLIBC_2.2.5+0x218> 0.00 : 72913: 48 89 df mov %rbx,%rdi 0.00 : 72916: e8 25 22 00 00 callq 74b40 <_IO_unsave_markers> 11.11 : 7291b: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72922: 89 ea mov %ebp,%edx 0.00 : 72924: 4c 89 e6 mov %r12,%rsi 0.00 : 72927: 48 89 df mov %rbx,%rdi 0.00 : 7292a: ff 90 80 00 00 00 callq *0x80(%rax) 0.00 : 72930: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 72934: 48 89 c2 mov %rax,%rdx 0.00 : 72937: 74 86 je 728bf <_IO_file_seekoff@@GLIBC_2.2.5+0x12f> 0.00 : 72939: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) 0.00 : 72940: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 72944: 83 23 ef andl $0xffffffef,(%rbx) 0.00 : 72947: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 7294b: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 7294f: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 72953: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 72957: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 7295b: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 7295f: e9 5b ff ff ff jmpq 728bf <_IO_file_seekoff@@GLIBC_2.2.5+0x12f> 0.00 : 72964: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 72968: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7296c: 48 8b 93 90 00 00 00 mov 0x90(%rbx),%rdx 0.00 : 72973: 48 2b 43 10 sub 0x10(%rbx),%rax 11.11 : 72977: 48 83 fa ff cmp $0xffffffffffffffff,%rdx 0.00 : 7297b: 4e 8d 24 20 lea (%rax,%r12,1),%r12 11.11 : 7297f: 0f 84 f3 00 00 00 je 72a78 <_IO_file_seekoff@@GLIBC_2.2.5+0x2e8> 11.11 : 72985: 49 01 d4 add %rdx,%r12 0.00 : 72988: 0f 88 8e 01 00 00 js 72b1c <_IO_file_seekoff@@GLIBC_2.2.5+0x38c> 11.11 : 7298e: 31 ed xor %ebp,%ebp 0.00 : 72990: 45 85 ed test %r13d,%r13d 0.00 : 72993: 0f 85 86 fe ff ff jne 7281f <_IO_file_seekoff@@GLIBC_2.2.5+0x8f> 0.00 : 72999: 4c 89 e2 mov %r12,%rdx 0.00 : 7299c: e9 1e ff ff ff jmpq 728bf <_IO_file_seekoff@@GLIBC_2.2.5+0x12f> 0.00 : 729a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 729a8: 8b 44 24 18 mov 0x18(%rsp),%eax 0.00 : 729ac: 25 00 f0 00 00 and $0xf000,%eax 0.00 : 729b1: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 729b6: 0f 85 57 ff ff ff jne 72913 <_IO_file_seekoff@@GLIBC_2.2.5+0x183> 0.00 : 729bc: 4c 03 64 24 30 add 0x30(%rsp),%r12 0.00 : 729c1: 31 ed xor %ebp,%ebp 0.00 : 729c3: eb cb jmp 72990 <_IO_file_seekoff@@GLIBC_2.2.5+0x200> 0.00 : 729c5: 0f 1f 00 nopl (%rax) 0.00 : 729c8: 8b 03 mov (%rbx),%eax 0.00 : 729ca: a8 04 test $0x4,%al 0.00 : 729cc: 0f 85 41 ff ff ff jne 72913 <_IO_file_seekoff@@GLIBC_2.2.5+0x183> 0.00 : 729d2: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 729d6: 48 8b 53 40 mov 0x40(%rbx),%rdx 0.00 : 729da: 4c 89 e6 mov %r12,%rsi 0.00 : 729dd: 4d 89 e5 mov %r12,%r13 0.00 : 729e0: 48 89 c1 mov %rax,%rcx 0.00 : 729e3: 48 29 d1 sub %rdx,%rcx 0.00 : 729e6: 48 29 c2 sub %rax,%rdx 0.00 : 729e9: 48 21 ce and %rcx,%rsi 0.00 : 729ec: 49 29 f5 sub %rsi,%r13 0.00 : 729ef: 49 39 d5 cmp %rdx,%r13 0.00 : 729f2: 7e 06 jle 729fa <_IO_file_seekoff@@GLIBC_2.2.5+0x26a> 0.00 : 729f4: 4c 89 e6 mov %r12,%rsi 0.00 : 729f7: 45 31 ed xor %r13d,%r13d 0.00 : 729fa: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72a01: 31 d2 xor %edx,%edx 0.00 : 72a03: 48 89 df mov %rbx,%rdi 0.00 : 72a06: ff 90 80 00 00 00 callq *0x80(%rax) 0.00 : 72a0c: 48 85 c0 test %rax,%rax 0.00 : 72a0f: 48 89 c5 mov %rax,%rbp 0.00 : 72a12: 0f 88 a0 fe ff ff js 728b8 <_IO_file_seekoff@@GLIBC_2.2.5+0x128> 0.00 : 72a18: 4d 85 ed test %r13,%r13 0.00 : 72a1b: 0f 84 1e 01 00 00 je 72b3f <_IO_file_seekoff@@GLIBC_2.2.5+0x3af> 0.00 : 72a21: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72a28: 45 85 f6 test %r14d,%r14d 0.00 : 72a2b: 48 8b 40 70 mov 0x70(%rax),%rax 0.00 : 72a2f: 0f 84 46 01 00 00 je 72b7b <_IO_file_seekoff@@GLIBC_2.2.5+0x3eb> 0.00 : 72a35: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 72a39: 4c 89 ea mov %r13,%rdx 0.00 : 72a3c: 48 89 df mov %rbx,%rdi 0.00 : 72a3f: ff d0 callq *%rax 0.00 : 72a41: 49 39 c5 cmp %rax,%r13 0.00 : 72a44: 48 89 c1 mov %rax,%rcx 0.00 : 72a47: 48 89 c2 mov %rax,%rdx 0.00 : 72a4a: 0f 8e f3 00 00 00 jle 72b43 <_IO_file_seekoff@@GLIBC_2.2.5+0x3b3> 0.00 : 72a50: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 72a54: 4d 89 ec mov %r13,%r12 0.00 : 72a57: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 72a5c: 0f 84 b1 fe ff ff je 72913 <_IO_file_seekoff@@GLIBC_2.2.5+0x183> 0.00 : 72a62: 4d 89 ec mov %r13,%r12 0.00 : 72a65: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 72a6a: 49 29 c4 sub %rax,%r12 0.00 : 72a6d: e9 a1 fe ff ff jmpq 72913 <_IO_file_seekoff@@GLIBC_2.2.5+0x183> 0.00 : 72a72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72a78: 45 85 ed test %r13d,%r13d 0.00 : 72a7b: 0f 85 92 fe ff ff jne 72913 <_IO_file_seekoff@@GLIBC_2.2.5+0x183> 0.00 : 72a81: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72a88: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72a8d: 31 f6 xor %esi,%esi 0.00 : 72a8f: 48 89 df mov %rbx,%rdi 0.00 : 72a92: ff 90 80 00 00 00 callq *0x80(%rax) 0.00 : 72a98: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 72a9c: 48 89 c2 mov %rax,%rdx 0.00 : 72a9f: 0f 84 1a fe ff ff je 728bf <_IO_file_seekoff@@GLIBC_2.2.5+0x12f> 0.00 : 72aa5: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) 0.00 : 72aac: e9 d4 fe ff ff jmpq 72985 <_IO_file_seekoff@@GLIBC_2.2.5+0x1f5> 0.00 : 72ab1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 72ab8: 48 8b 57 20 mov 0x20(%rdi),%rdx 0.00 : 72abc: 48 3b 57 28 cmp 0x28(%rdi),%rdx 0.00 : 72ac0: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 72ac6: 48 89 d1 mov %rdx,%rcx 0.00 : 72ac9: 0f 85 fe fc ff ff jne 727cd <_IO_file_seekoff@@GLIBC_2.2.5+0x3d> 0.00 : 72acf: e9 00 fd ff ff jmpq 727d4 <_IO_file_seekoff@@GLIBC_2.2.5+0x44> 0.00 : 72ad4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 72ad8: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 72adc: 48 85 ff test %rdi,%rdi 0.00 : 72adf: 74 12 je 72af3 <_IO_file_seekoff@@GLIBC_2.2.5+0x363> 0.00 : 72ae1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 72ae8: e8 b3 bd fa ff callq 1e8a0 0.00 : 72aed: 81 23 ff fe ff ff andl $0xfffffeff,(%rbx) 0.00 : 72af3: 48 89 df mov %rbx,%rdi 0.00 : 72af6: e8 d5 12 00 00 callq 73dd0 <_IO_doallocbuf> 0.00 : 72afb: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 72aff: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 72b03: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 72b07: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 72b0b: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 72b0f: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 72b13: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 72b17: e9 e8 fc ff ff jmpq 72804 <_IO_file_seekoff@@GLIBC_2.2.5+0x74> 0.00 : 72b1c: 48 8b 15 15 f3 2f 00 mov 0x2ff315(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 72b23: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 72b2a: 00 00 0.00 : 72b2c: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 72b33: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 72b3a: e9 80 fd ff ff jmpq 728bf <_IO_file_seekoff@@GLIBC_2.2.5+0x12f> 0.00 : 72b3f: 31 c9 xor %ecx,%ecx 0.00 : 72b41: 31 d2 xor %edx,%edx 0.00 : 72b43: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 72b47: 83 23 ef andl $0xffffffef,(%rbx) 0.00 : 72b4a: 48 01 c2 add %rax,%rdx 0.00 : 72b4d: 49 01 c5 add %rax,%r13 0.00 : 72b50: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 72b54: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 72b58: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 72b5c: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 72b60: 48 8d 04 29 lea (%rcx,%rbp,1),%rax 0.00 : 72b64: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 72b68: 4c 89 6b 08 mov %r13,0x8(%rbx) 0.00 : 72b6c: 4c 89 e2 mov %r12,%rdx 0.00 : 72b6f: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) 0.00 : 72b76: e9 44 fd ff ff jmpq 728bf <_IO_file_seekoff@@GLIBC_2.2.5+0x12f> 0.00 : 72b7b: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 72b7f: 48 8b 53 40 mov 0x40(%rbx),%rdx 0.00 : 72b83: 48 29 f2 sub %rsi,%rdx 0.00 : 72b86: e9 b1 fe ff ff jmpq 72a3c <_IO_file_seekoff@@GLIBC_2.2.5+0x2ac> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 30.00 ??:0 20.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074e20 <_IO_default_xsputn>: 0.00 : 74e20: 41 56 push %r14 ??:0 20.00 : 74e22: 31 c0 xor %eax,%eax 0.00 : 74e24: 48 85 d2 test %rdx,%rdx 0.00 : 74e27: 49 89 d6 mov %rdx,%r14 0.00 : 74e2a: 41 55 push %r13 10.00 : 74e2c: 49 89 fd mov %rdi,%r13 0.00 : 74e2f: 41 54 push %r12 0.00 : 74e31: 49 89 d4 mov %rdx,%r12 0.00 : 74e34: 55 push %rbp 0.00 : 74e35: 48 89 f5 mov %rsi,%rbp 0.00 : 74e38: 53 push %rbx 0.00 : 74e39: 0f 84 7f 00 00 00 je 74ebe <_IO_default_xsputn+0x9e> 10.00 : 74e3f: 90 nop 0.00 : 74e40: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 74e44: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : 74e48: 48 39 c7 cmp %rax,%rdi 0.00 : 74e4b: 73 42 jae 74e8f <_IO_default_xsputn+0x6f> 0.00 : 74e4d: 48 29 f8 sub %rdi,%rax 0.00 : 74e50: 49 39 c4 cmp %rax,%r12 0.00 : 74e53: 48 89 c3 mov %rax,%rbx 0.00 : 74e56: 49 0f 46 dc cmovbe %r12,%rbx 0.00 : 74e5a: 48 83 fb 14 cmp $0x14,%rbx 0.00 : 74e5e: 77 70 ja 74ed0 <_IO_default_xsputn+0xb0> 0.00 : 74e60: 48 85 db test %rbx,%rbx 0.00 : 74e63: 74 27 je 74e8c <_IO_default_xsputn+0x6c> 30.00 : 74e65: 31 d2 xor %edx,%edx 0.00 : 74e67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 74e6e: 00 00 0.00 : 74e70: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 74e75: 88 04 17 mov %al,(%rdi,%rdx,1) 10.00 : 74e78: 48 83 c2 01 add $0x1,%rdx 0.00 : 74e7c: 48 39 da cmp %rbx,%rdx 0.00 : 74e7f: 75 ef jne 74e70 <_IO_default_xsputn+0x50> 0.00 : 74e81: 48 8d 04 1f lea (%rdi,%rbx,1),%rax 0.00 : 74e85: 48 01 dd add %rbx,%rbp 0.00 : 74e88: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 74e8c: 49 29 dc sub %rbx,%r12 0.00 : 74e8f: 4d 85 e4 test %r12,%r12 0.00 : 74e92: 74 24 je 74eb8 <_IO_default_xsputn+0x98> 0.00 : 74e94: 49 8b 85 d8 00 00 00 mov 0xd8(%r13),%rax 0.00 : 74e9b: 0f b6 75 00 movzbl 0x0(%rbp),%esi 0.00 : 74e9f: 4c 89 ef mov %r13,%rdi 0.00 : 74ea2: ff 50 18 callq *0x18(%rax) 0.00 : 74ea5: 83 c0 01 add $0x1,%eax 0.00 : 74ea8: 74 0e je 74eb8 <_IO_default_xsputn+0x98> 0.00 : 74eaa: 48 83 c5 01 add $0x1,%rbp 0.00 : 74eae: 49 83 ec 01 sub $0x1,%r12 0.00 : 74eb2: eb 8c jmp 74e40 <_IO_default_xsputn+0x20> 0.00 : 74eb4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 74eb8: 4c 89 f0 mov %r14,%rax 0.00 : 74ebb: 4c 29 e0 sub %r12,%rax 10.00 : 74ebe: 5b pop %rbx 0.00 : 74ebf: 5d pop %rbp 0.00 : 74ec0: 41 5c pop %r12 10.00 : 74ec2: 41 5d pop %r13 0.00 : 74ec4: 41 5e pop %r14 0.00 : 74ec6: c3 retq 0.00 : 74ec7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 74ece: 00 00 0.00 : 74ed0: 48 89 ee mov %rbp,%rsi 0.00 : 74ed3: 48 89 da mov %rbx,%rdx 0.00 : 74ed6: 48 01 dd add %rbx,%rbp 0.00 : 74ed9: e8 b2 f0 00 00 callq 83f90 <__mempcpy> 0.00 : 74ede: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 74ee2: eb a8 jmp 74e8c <_IO_default_xsputn+0x6c> Sorted summary for file /bin/bash ---------------------------------------------- 28.57 ??:0 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004258c0 : 0.00 : 4258c0: 53 push %rbx 0.00 : 4258c1: 48 89 fb mov %rdi,%rbx 0.00 : 4258c4: 48 8b 3f mov (%rdi),%rdi 0.00 : 4258c7: 48 85 ff test %rdi,%rdi 0.00 : 4258ca: 74 05 je 4258d1 0.00 : 4258cc: e8 ef 0a ff ff callq 4163c0 0.00 : 4258d1: 8b 05 65 ef 26 00 mov 0x26ef65(%rip),%eax # 69483c 14.29 : 4258d7: 3b 05 5b ef 26 00 cmp 0x26ef5b(%rip),%eax # 694838 0.00 : 4258dd: 7d 61 jge 425940 14.29 : 4258df: c6 03 df movb $0xdf,(%rbx) 0.00 : 4258e2: c6 43 01 df movb $0xdf,0x1(%rbx) 28.57 : 4258e6: c6 43 02 df movb $0xdf,0x2(%rbx) 0.00 : 4258ea: c6 43 03 df movb $0xdf,0x3(%rbx) 0.00 : 4258ee: c6 43 04 df movb $0xdf,0x4(%rbx) 0.00 : 4258f2: c6 43 05 df movb $0xdf,0x5(%rbx) 0.00 : 4258f6: c6 43 06 df movb $0xdf,0x6(%rbx) 0.00 : 4258fa: c6 43 07 df movb $0xdf,0x7(%rbx) 0.00 : 4258fe: c6 43 08 df movb $0xdf,0x8(%rbx) 0.00 : 425902: c6 43 09 df movb $0xdf,0x9(%rbx) 0.00 : 425906: c6 43 0a df movb $0xdf,0xa(%rbx) 0.00 : 42590a: c6 43 0b df movb $0xdf,0xb(%rbx) 0.00 : 42590e: c6 43 0c df movb $0xdf,0xc(%rbx) 0.00 : 425912: c6 43 0d df movb $0xdf,0xd(%rbx) 0.00 : 425916: c6 43 0e df movb $0xdf,0xe(%rbx) 0.00 : 42591a: c6 43 0f df movb $0xdf,0xf(%rbx) 0.00 : 42591e: 8b 05 18 ef 26 00 mov 0x26ef18(%rip),%eax # 69483c 0.00 : 425924: 48 8b 15 05 ef 26 00 mov 0x26ef05(%rip),%rdx # 694830 0.00 : 42592b: 48 63 c8 movslq %eax,%rcx 0.00 : 42592e: 83 c0 01 add $0x1,%eax 14.29 : 425931: 48 89 1c ca mov %rbx,(%rdx,%rcx,8) 28.57 : 425935: 89 05 01 ef 26 00 mov %eax,0x26ef01(%rip) # 69483c 0.00 : 42593b: 5b pop %rbx 0.00 : 42593c: c3 retq 0.00 : 42593d: 0f 1f 00 nopl (%rax) 0.00 : 425940: 48 89 df mov %rbx,%rdi 0.00 : 425943: 5b pop %rbx 0.00 : 425944: e9 87 28 03 00 jmpq 4581d0 Sorted summary for file /bin/bash ---------------------------------------------- 28.57 ??:0 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000439d50 : 0.00 : 439d50: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 439d55: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 439d5a: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 439d5f: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 439d64: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 439d69: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 439d6e: 48 81 ec 08 01 00 00 sub $0x108,%rsp 0.00 : 439d75: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax 0.00 : 439d7c: 00 00 0.00 : 439d7e: 48 89 84 24 c8 00 00 mov %rax,0xc8(%rsp) 0.00 : 439d85: 00 0.00 : 439d86: 31 c0 xor %eax,%eax 0.00 : 439d88: 48 85 ff test %rdi,%rdi 0.00 : 439d8b: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : 439d90: 89 74 24 0c mov %esi,0xc(%rsp) 0.00 : 439d94: 75 5a jne 439df0 0.00 : 439d96: 45 31 f6 xor %r14d,%r14d 0.00 : 439d99: 48 8b 94 24 c8 00 00 mov 0xc8(%rsp),%rdx 0.00 : 439da0: 00 0.00 : 439da1: 64 48 33 14 25 28 00 xor %fs:0x28,%rdx 0.00 : 439da8: 00 00 0.00 : 439daa: 4c 89 f0 mov %r14,%rax 0.00 : 439dad: 0f 85 57 02 00 00 jne 43a00a 0.00 : 439db3: 48 8b 9c 24 d8 00 00 mov 0xd8(%rsp),%rbx 0.00 : 439dba: 00 ??:0 14.29 : 439dbb: 48 8b ac 24 e0 00 00 mov 0xe0(%rsp),%rbp 0.00 : 439dc2: 00 0.00 : 439dc3: 4c 8b a4 24 e8 00 00 mov 0xe8(%rsp),%r12 0.00 : 439dca: 00 0.00 : 439dcb: 4c 8b ac 24 f0 00 00 mov 0xf0(%rsp),%r13 0.00 : 439dd2: 00 0.00 : 439dd3: 4c 8b b4 24 f8 00 00 mov 0xf8(%rsp),%r14 0.00 : 439dda: 00 0.00 : 439ddb: 4c 8b bc 24 00 01 00 mov 0x100(%rsp),%r15 0.00 : 439de2: 00 0.00 : 439de3: 48 81 c4 08 01 00 00 add $0x108,%rsp 0.00 : 439dea: c3 retq 0.00 : 439deb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 439df0: 0f b6 07 movzbl (%rdi),%eax 0.00 : 439df3: 84 c0 test %al,%al 0.00 : 439df5: 74 9f je 439d96 0.00 : 439df7: 3c 0a cmp $0xa,%al 0.00 : 439df9: 0f 84 d3 03 00 00 je 43a1d2 0.00 : 439dff: 8b 05 fb 95 25 00 mov 0x2595fb(%rip),%eax # 693400 0.00 : 439e05: 85 c0 test %eax,%eax 0.00 : 439e07: 74 0e je 439e17 0.00 : 439e09: 8b 05 fd ac 25 00 mov 0x25acfd(%rip),%eax # 694b0c 0.00 : 439e0f: 85 c0 test %eax,%eax 0.00 : 439e11: 0f 85 ce 03 00 00 jne 43a1e5 0.00 : 439e17: 48 83 3d a1 be 25 00 cmpq $0x0,0x25bea1(%rip) # 695cc0 0.00 : 439e1e: 00 0.00 : 439e1f: 0f 84 db 01 00 00 je 43a000 0.00 : 439e25: 48 83 3d 9b be 25 00 cmpq $0x0,0x25be9b(%rip) # 695cc8 0.00 : 439e2c: 00 0.00 : 439e2d: 0f 84 cd 01 00 00 je 43a000 0.00 : 439e33: 83 3d 9a 95 25 00 01 cmpl $0x1,0x25959a(%rip) # 6933d4 0.00 : 439e3a: 48 8d 7c 24 30 lea 0x30(%rsp),%rdi 0.00 : 439e3f: 19 c0 sbb %eax,%eax 0.00 : 439e41: f7 d0 not %eax 0.00 : 439e43: 83 e0 10 and $0x10,%eax 0.00 : 439e46: 89 44 24 24 mov %eax,0x24(%rsp) 0.00 : 439e4a: e8 f1 c6 fd ff callq 416540 0.00 : 439e4f: 85 c0 test %eax,%eax 0.00 : 439e51: ba 05 00 00 00 mov $0x5,%edx 0.00 : 439e56: be 50 5d 47 00 mov $0x475d50,%esi 0.00 : 439e5b: 0f 88 19 01 00 00 js 439f7a 0.00 : 439e61: f6 05 30 cd 25 00 10 testb $0x10,0x25cd30(%rip) # 696b98 0.00 : 439e68: 8b 15 f2 13 25 00 mov 0x2513f2(%rip),%edx # 68b260 0.00 : 439e6e: 8b 2d 0c ad 25 00 mov 0x25ad0c(%rip),%ebp # 694b80 0.00 : 439e74: 89 54 24 20 mov %edx,0x20(%rsp) 0.00 : 439e78: 75 0c jne 439e86 0.00 : 439e7a: 8b 05 cc 13 25 00 mov 0x2513cc(%rip),%eax # 68b24c 0.00 : 439e80: 89 05 fa ac 25 00 mov %eax,0x25acfa(%rip) # 694b80 0.00 : 439e86: e8 25 ae ff ff callq 434cb0 0.00 : 439e8b: 8b 35 07 cd 25 00 mov 0x25cd07(%rip),%esi # 696b98 0.00 : 439e91: 8b 1d cd 13 25 00 mov 0x2513cd(%rip),%ebx # 68b264 0.00 : 439e97: 31 ff xor %edi,%edi 0.00 : 439e99: 83 e6 01 and $0x1,%esi 0.00 : 439e9c: e8 5f dc ff ff callq 437b00 0.00 : 439ea1: 85 c0 test %eax,%eax 28.57 : 439ea3: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : 439ea7: 89 1d b7 13 25 00 mov %ebx,0x2513b7(%rip) # 68b264 0.00 : 439ead: 0f 84 f5 00 00 00 je 439fa8 0.00 : 439eb3: e8 98 91 ff ff callq 433050 0.00 : 439eb8: e8 33 8f ff ff callq 432df0 0.00 : 439ebd: 44 8b 54 24 1c mov 0x1c(%rsp),%r10d 0.00 : 439ec2: 89 2d b8 ac 25 00 mov %ebp,0x25acb8(%rip) # 694b80 0.00 : 439ec8: 45 85 d2 test %r10d,%r10d 0.00 : 439ecb: 0f 88 9f 00 00 00 js 439f70 0.00 : 439ed1: 31 c0 xor %eax,%eax 0.00 : 439ed3: 45 31 f6 xor %r14d,%r14d 0.00 : 439ed6: e8 65 91 ff ff callq 433040 0.00 : 439edb: 8b 7c 24 34 mov 0x34(%rsp),%edi 0.00 : 439edf: e8 fc bf fd ff callq 415ee0 0.00 : 439ee4: 8b 44 24 30 mov 0x30(%rsp),%eax 0.00 : 439ee8: 85 c0 test %eax,%eax 0.00 : 439eea: 89 44 24 28 mov %eax,0x28(%rsp) 0.00 : 439eee: 0f 89 44 01 00 00 jns 43a038 0.00 : 439ef4: 8b 7c 24 30 mov 0x30(%rsp),%edi 14.29 : 439ef8: e8 e3 bf fd ff callq 415ee0 0.00 : 439efd: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 439f01: 89 c7 mov %eax,%edi 0.00 : 439f03: 89 05 83 13 25 00 mov %eax,0x251383(%rip) # 68b28c 0.00 : 439f09: e8 a2 c3 ff ff callq 4362b0 0.00 : 439f0e: 8b 54 24 1c mov 0x1c(%rsp),%edx 0.00 : 439f12: 3d 82 00 00 00 cmp $0x82,%eax 0.00 : 439f17: 89 05 87 cb 25 00 mov %eax,0x25cb87(%rip) # 696aa4 0.00 : 439f1d: 89 15 65 13 25 00 mov %edx,0x251365(%rip) # 68b288 0.00 : 439f23: 8b 54 24 20 mov 0x20(%rsp),%edx 0.00 : 439f27: 89 15 33 13 25 00 mov %edx,0x251333(%rip) # 68b260 0.00 : 439f2d: 0f 84 e2 00 00 00 je 43a015 0.00 : 439f33: 44 8b 1d 9a 94 25 00 mov 0x25949a(%rip),%r11d # 6933d4 0.00 : 439f3a: 45 85 db test %r11d,%r11d 0.00 : 439f3d: 0f 84 56 fe ff ff je 439d99 0.00 : 439f43: 8b 3d 37 ac 25 00 mov 0x25ac37(%rip),%edi # 694b80 0.00 : 439f49: 85 ff test %edi,%edi 0.00 : 439f4b: 0f 84 48 fe ff ff je 439d99 0.00 : 439f51: f6 05 40 cc 25 00 01 testb $0x1,0x25cc40(%rip) # 696b98 0.00 : 439f58: 0f 85 3b fe ff ff jne 439d99 0.00 : 439f5e: 31 f6 xor %esi,%esi 0.00 : 439f60: e8 cb ad ff ff callq 434d30 0.00 : 439f65: e9 2f fe ff ff jmpq 439d99 0.00 : 439f6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 439f70: ba 05 00 00 00 mov $0x5,%edx 0.00 : 439f75: be 80 5d 47 00 mov $0x475d80,%esi 0.00 : 439f7a: 31 ff xor %edi,%edi 0.00 : 439f7c: 45 31 f6 xor %r14d,%r14d 0.00 : 439f7f: e8 fc c8 fd ff callq 416880 0.00 : 439f84: 48 89 c7 mov %rax,%rdi 0.00 : 439f87: 31 c0 xor %eax,%eax 0.00 : 439f89: e8 52 6b ff ff callq 430ae0 0.00 : 439f8e: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 439f92: e8 49 bf fd ff callq 415ee0 0.00 : 439f97: 8b 7c 24 34 mov 0x34(%rsp),%edi 0.00 : 439f9b: e8 40 bf fd ff callq 415ee0 0.00 : 439fa0: e9 f4 fd ff ff jmpq 439d99 0.00 : 439fa5: 0f 1f 00 nopl (%rax) 0.00 : 439fa8: e8 b3 b6 00 00 callq 445660 0.00 : 439fad: 0f 1f 00 nopl (%rax) 0.00 : 439fb0: e8 9b 90 ff ff callq 433050 0.00 : 439fb5: e8 36 8e ff ff callq 432df0 0.00 : 439fba: e8 71 b3 00 00 callq 445330 0.00 : 439fbf: 90 nop 0.00 : 439fc0: e8 0b fb fd ff callq 419ad0 0.00 : 439fc5: 8b 7c 24 34 mov 0x34(%rsp),%edi 0.00 : 439fc9: be 01 00 00 00 mov $0x1,%esi 0.00 : 439fce: e8 0d be fd ff callq 415de0 0.00 : 439fd3: 85 c0 test %eax,%eax 0.00 : 439fd5: 0f 89 1e 02 00 00 jns 43a1f9 0.00 : 439fdb: ba 05 00 00 00 mov $0x5,%edx 0.00 : 439fe0: be b0 5d 47 00 mov $0x475db0,%esi 0.00 : 439fe5: 31 ff xor %edi,%edi 0.00 : 439fe7: e8 94 c8 fd ff callq 416880 0.00 : 439fec: 48 89 c7 mov %rax,%rdi 0.00 : 439fef: 31 c0 xor %eax,%eax 0.00 : 439ff1: e8 ea 6a ff ff callq 430ae0 0.00 : 439ff6: bf 01 00 00 00 mov $0x1,%edi 0.00 : 439ffb: e8 30 c0 fd ff callq 416030 28.57 : 43a000: e8 1b 5c ff ff callq 42fc20 0.00 : 43a005: e9 29 fe ff ff jmpq 439e33 0.00 : 43a00a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43a010: e8 eb c8 fd ff callq 416900 <__stack_chk_fail@plt> 0.00 : 43a015: 83 3d 84 ca 25 00 02 cmpl $0x2,0x25ca84(%rip) # 696aa0 0.00 : 43a01c: 0f 85 11 ff ff ff jne 439f33 0.00 : 43a022: e8 49 c2 fd ff callq 416270 0.00 : 43a027: be 02 00 00 00 mov $0x2,%esi 0.00 : 43a02c: 89 c7 mov %eax,%edi 0.00 : 43a02e: e8 6d c5 fd ff callq 4165a0 0.00 : 43a033: e9 fb fe ff ff jmpq 439f33 0.00 : 43a038: 8b 54 24 0c mov 0xc(%rsp),%edx 0.00 : 43a03c: 45 31 ed xor %r13d,%r13d 0.00 : 43a03f: 31 ed xor %ebp,%ebp 0.00 : 43a041: c7 44 24 2c 00 00 00 movl $0x0,0x2c(%rsp) 0.00 : 43a048: 00 0.00 : 43a049: 45 31 f6 xor %r14d,%r14d 0.00 : 43a04c: 45 31 e4 xor %r12d,%r12d 0.00 : 43a04f: 83 e2 03 and $0x3,%edx 0.00 : 43a052: 89 54 24 08 mov %edx,0x8(%rsp) 0.00 : 43a056: eb 36 jmp 43a08e 0.00 : 43a058: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43a05f: 00 0.00 : 43a060: 83 fb 01 cmp $0x1,%ebx 0.00 : 43a063: 74 74 je 43a0d9 0.00 : 43a065: 83 fb 7f cmp $0x7f,%ebx 0.00 : 43a068: 74 6f je 43a0d9 0.00 : 43a06a: 83 fb 20 cmp $0x20,%ebx 0.00 : 43a06d: 0f 1f 00 nopl (%rax) 0.00 : 43a070: 0f 84 a2 00 00 00 je 43a118 0.00 : 43a076: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43a07d: 00 00 00 0.00 : 43a080: 48 63 c5 movslq %ebp,%rax 0.00 : 43a083: 83 c5 01 add $0x1,%ebp 0.00 : 43a086: 45 88 3c 06 mov %r15b,(%r14,%rax,1) 0.00 : 43a08a: 49 83 c4 01 add $0x1,%r12 0.00 : 43a08e: 49 83 ed 01 sub $0x1,%r13 0.00 : 43a092: 4d 85 ed test %r13,%r13 0.00 : 43a095: 7e 59 jle 43a0f0 0.00 : 43a097: 45 0f b6 3c 24 movzbl (%r12),%r15d 0.00 : 43a09c: 41 0f be df movsbl %r15b,%ebx 0.00 : 43a0a0: 85 db test %ebx,%ebx 0.00 : 43a0a2: 74 e6 je 43a08a 0.00 : 43a0a4: 8d 45 02 lea 0x2(%rbp),%eax 0.00 : 43a0a7: 3b 44 24 2c cmp 0x2c(%rsp),%eax 0.00 : 43a0ab: 7c 24 jl 43a0d1 0.00 : 43a0ad: 2b 44 24 2c sub 0x2c(%rsp),%eax 0.00 : 43a0b1: 8b 54 24 2c mov 0x2c(%rsp),%edx 0.00 : 43a0b5: 4c 89 f7 mov %r14,%rdi 0.00 : 43a0b8: 83 e0 80 and $0xffffff80,%eax 0.00 : 43a0bb: 8d 94 02 80 00 00 00 lea 0x80(%rdx,%rax,1),%edx 0.00 : 43a0c2: 48 63 f2 movslq %edx,%rsi 0.00 : 43a0c5: 89 54 24 2c mov %edx,0x2c(%rsp) 0.00 : 43a0c9: e8 62 e1 01 00 callq 458230 0.00 : 43a0ce: 49 89 c6 mov %rax,%r14 0.00 : 43a0d1: 8b 44 24 08 mov 0x8(%rsp),%eax 0.00 : 43a0d5: 85 c0 test %eax,%eax 0.00 : 43a0d7: 74 87 je 43a060 0.00 : 43a0d9: 48 63 c5 movslq %ebp,%rax 0.00 : 43a0dc: 83 c5 01 add $0x1,%ebp 0.00 : 43a0df: 41 c6 04 06 01 movb $0x1,(%r14,%rax,1) 0.00 : 43a0e4: eb 9a jmp 43a080 0.00 : 43a0e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43a0ed: 00 00 00 0.00 : 43a0f0: 8b 7c 24 28 mov 0x28(%rsp),%edi 0.00 : 43a0f4: 48 8d 74 24 40 lea 0x40(%rsp),%rsi 0.00 : 43a0f9: ba 80 00 00 00 mov $0x80,%edx 0.00 : 43a0fe: e8 9d f6 02 00 callq 4697a0 0.00 : 43a103: 48 85 c0 test %rax,%rax 0.00 : 43a106: 49 89 c5 mov %rax,%r13 0.00 : 43a109: 7e 28 jle 43a133 0.00 : 43a10b: 4c 8d 64 24 40 lea 0x40(%rsp),%r12 0.00 : 43a110: eb 85 jmp 43a097 0.00 : 43a112: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43a118: 48 8b 05 e1 cc 25 00 mov 0x25cce1(%rip),%rax # 696e00 0.00 : 43a11f: 48 85 c0 test %rax,%rax 0.00 : 43a122: 0f 84 58 ff ff ff je 43a080 0.00 : 43a128: 80 38 00 cmpb $0x0,(%rax) 0.00 : 43a12b: 0f 85 4f ff ff ff jne 43a080 0.00 : 43a131: eb a6 jmp 43a0d9 0.00 : 43a133: 31 ff xor %edi,%edi 0.00 : 43a135: 4d 85 f6 test %r14,%r14 0.00 : 43a138: 89 e8 mov %ebp,%eax 0.00 : 43a13a: 74 0d je 43a149 0.00 : 43a13c: 48 63 c5 movslq %ebp,%rax 0.00 : 43a13f: 4c 89 f7 mov %r14,%rdi 0.00 : 43a142: 41 c6 04 06 00 movb $0x0,(%r14,%rax,1) 0.00 : 43a147: 89 e8 mov %ebp,%eax 0.00 : 43a149: 85 c0 test %eax,%eax 0.00 : 43a14b: 0f 84 f0 01 00 00 je 43a341 0.00 : 43a151: f6 44 24 0c 03 testb $0x3,0xc(%rsp) 0.00 : 43a156: 74 62 je 43a1ba 0.00 : 43a158: 85 ed test %ebp,%ebp 0.00 : 43a15a: 7e 70 jle 43a1cc 0.00 : 43a15c: 48 63 f5 movslq %ebp,%rsi 0.00 : 43a15f: 80 7c 37 ff 0a cmpb $0xa,-0x1(%rdi,%rsi,1) 0.00 : 43a164: 75 4b jne 43a1b1 0.00 : 43a166: 44 8d 45 ff lea -0x1(%rbp),%r8d 0.00 : 43a16a: 49 63 f0 movslq %r8d,%rsi 0.00 : 43a16d: 48 8d 54 37 ff lea -0x1(%rdi,%rsi,1),%rdx 0.00 : 43a172: 80 3a 01 cmpb $0x1,(%rdx) 0.00 : 43a175: 74 32 je 43a1a9 0.00 : 43a177: 8d 45 fe lea -0x2(%rbp),%eax 0.00 : 43a17a: 48 98 cltq 0.00 : 43a17c: 48 8d 4c 07 ff lea -0x1(%rdi,%rax,1),%rcx 0.00 : 43a181: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43a188: 45 85 c0 test %r8d,%r8d 0.00 : 43a18b: 74 22 je 43a1af 0.00 : 43a18d: 80 3a 0a cmpb $0xa,(%rdx) 0.00 : 43a190: 75 1f jne 43a1b1 0.00 : 43a192: 0f b6 01 movzbl (%rcx),%eax 0.00 : 43a195: 41 83 e8 01 sub $0x1,%r8d 0.00 : 43a199: 48 83 e9 01 sub $0x1,%rcx 0.00 : 43a19d: 48 83 ee 01 sub $0x1,%rsi 0.00 : 43a1a1: 48 83 ea 01 sub $0x1,%rdx 0.00 : 43a1a5: 2c 01 sub $0x1,%al 0.00 : 43a1a7: 75 df jne 43a188 0.00 : 43a1a9: 41 8d 68 ff lea -0x1(%r8),%ebp 0.00 : 43a1ad: eb a9 jmp 43a158 0.00 : 43a1af: 31 f6 xor %esi,%esi 0.00 : 43a1b1: c6 04 37 00 movb $0x0,(%rdi,%rsi,1) 0.00 : 43a1b5: e9 3a fd ff ff jmpq 439ef4 0.00 : 43a1ba: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 43a1bd: ba 01 00 00 00 mov $0x1,%edx 0.00 : 43a1c2: e8 89 87 01 00 callq 452950 0.00 : 43a1c7: e9 28 fd ff ff jmpq 439ef4 0.00 : 43a1cc: 48 63 f5 movslq %ebp,%rsi 0.00 : 43a1cf: 90 nop 0.00 : 43a1d0: eb df jmp 43a1b1 0.00 : 43a1d2: 80 7f 01 00 cmpb $0x0,0x1(%rdi) 0.00 : 43a1d6: 66 90 xchg %ax,%ax 0.00 : 43a1d8: 0f 85 21 fc ff ff jne 439dff 0.00 : 43a1de: 66 90 xchg %ax,%ax 0.00 : 43a1e0: e9 b1 fb ff ff jmpq 439d96 0.00 : 43a1e5: bf 03 00 00 00 mov $0x3,%edi 0.00 : 43a1ea: c7 05 b0 c8 25 00 7d movl $0x7d,0x25c8b0(%rip) # 696aa4 0.00 : 43a1f1: 00 00 00 0.00 : 43a1f4: e8 27 db 00 00 callq 447d20 0.00 : 43a1f9: 8b 5c 24 34 mov 0x34(%rsp),%ebx 0.00 : 43a1fd: 48 8b 3d 64 70 25 00 mov 0x257064(%rip),%rdi # 691268 0.00 : 43a204: e8 c7 bb fd ff callq 415dd0 0.00 : 43a209: 39 c3 cmp %eax,%ebx 0.00 : 43a20b: 74 31 je 43a23e 0.00 : 43a20d: 8b 5c 24 34 mov 0x34(%rsp),%ebx 0.00 : 43a211: 48 8b 3d 88 91 25 00 mov 0x259188(%rip),%rdi # 6933a0 0.00 : 43a218: e8 b3 bb fd ff callq 415dd0 0.00 : 43a21d: 39 c3 cmp %eax,%ebx 0.00 : 43a21f: 74 1d je 43a23e 0.00 : 43a221: 8b 5c 24 34 mov 0x34(%rsp),%ebx 0.00 : 43a225: 48 8b 3d 44 91 25 00 mov 0x259144(%rip),%rdi # 693370 0.00 : 43a22c: e8 9f bb fd ff callq 415dd0 0.00 : 43a231: 39 c3 cmp %eax,%ebx 0.00 : 43a233: 74 09 je 43a23e 0.00 : 43a235: 8b 7c 24 34 mov 0x34(%rsp),%edi 0.00 : 43a239: e8 a2 bc fd ff callq 415ee0 0.00 : 43a23e: 8b 5c 24 30 mov 0x30(%rsp),%ebx 0.00 : 43a242: 48 8b 3d 1f 70 25 00 mov 0x25701f(%rip),%rdi # 691268 0.00 : 43a249: e8 82 bb fd ff callq 415dd0 0.00 : 43a24e: 39 c3 cmp %eax,%ebx 0.00 : 43a250: 74 31 je 43a283 0.00 : 43a252: 8b 5c 24 30 mov 0x30(%rsp),%ebx 0.00 : 43a256: 48 8b 3d 43 91 25 00 mov 0x259143(%rip),%rdi # 6933a0 0.00 : 43a25d: e8 6e bb fd ff callq 415dd0 0.00 : 43a262: 39 c3 cmp %eax,%ebx 0.00 : 43a264: 74 1d je 43a283 0.00 : 43a266: 8b 5c 24 30 mov 0x30(%rsp),%ebx 0.00 : 43a26a: 48 8b 3d ff 90 25 00 mov 0x2590ff(%rip),%rdi # 693370 0.00 : 43a271: e8 5a bb fd ff callq 415dd0 14.29 : 43a276: 39 c3 cmp %eax,%ebx 0.00 : 43a278: 74 09 je 43a283 0.00 : 43a27a: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 43a27e: e8 5d bc fd ff callq 415ee0 0.00 : 43a283: 8b 05 7f 91 25 00 mov 0x25917f(%rip),%eax # 693408 0.00 : 43a289: 83 0d 08 c9 25 00 04 orl $0x4,0x25c908(%rip) # 696b98 0.00 : 43a290: c7 05 3a 91 25 00 00 movl $0x0,0x25913a(%rip) # 6933d4 0.00 : 43a297: 00 00 00 0.00 : 43a29a: 85 c0 test %eax,%eax 0.00 : 43a29c: 75 0a jne 43a2a8 0.00 : 43a29e: c7 05 58 a8 25 00 00 movl $0x0,0x25a858(%rip) # 694b00 0.00 : 43a2a5: 00 00 00 0.00 : 43a2a8: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 43a2ad: e8 4e fa ff ff callq 439d00 0.00 : 43a2b2: be 01 00 00 00 mov $0x1,%esi 0.00 : 43a2b7: bf 20 74 69 00 mov $0x697420,%edi 0.00 : 43a2bc: c7 05 1a 91 25 00 02 movl $0x2,0x25911a(%rip) # 6933e0 0.00 : 43a2c3: 00 00 00 0.00 : 43a2c6: e8 e5 c8 fd ff callq 416bb0 <__sigsetjmp@plt> 0.00 : 43a2cb: 85 c0 test %eax,%eax 0.00 : 43a2cd: 89 c2 mov %eax,%edx 0.00 : 43a2cf: 75 0a jne 43a2db 0.00 : 43a2d1: 8b 05 d1 c7 25 00 mov 0x25c7d1(%rip),%eax # 696aa8 0.00 : 43a2d7: 85 c0 test %eax,%eax 0.00 : 43a2d9: 75 7f jne 43a35a 0.00 : 43a2db: 83 fa 04 cmp $0x4,%edx 0.00 : 43a2de: 74 33 je 43a313 0.00 : 43a2e0: 83 fa 03 cmp $0x3,%edx 0.00 : 43a2e3: 74 2e je 43a313 0.00 : 43a2e5: 31 c9 xor %ecx,%ecx 0.00 : 43a2e7: 85 d2 test %edx,%edx 0.00 : 43a2e9: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43a2ee: 75 0a jne 43a2fa 0.00 : 43a2f0: 85 c9 test %ecx,%ecx 0.00 : 43a2f2: 74 27 je 43a31b 0.00 : 43a2f4: 8b 05 36 c9 25 00 mov 0x25c936(%rip),%eax # 696c30 0.00 : 43a2fa: 89 05 a4 c7 25 00 mov %eax,0x25c7a4(%rip) # 696aa4 0.00 : 43a300: e8 1b b9 00 00 callq 445c20 0.00 : 43a305: 89 c3 mov %eax,%ebx 0.00 : 43a307: e8 c4 e0 ff ff callq 4383d0 0.00 : 43a30c: 89 df mov %ebx,%edi 0.00 : 43a30e: e8 1d bd fd ff callq 416030 0.00 : 43a313: 8b 05 8b c7 25 00 mov 0x25c78b(%rip),%eax # 696aa4 0.00 : 43a319: eb df jmp 43a2fa 0.00 : 43a31b: 8b 54 24 24 mov 0x24(%rsp),%edx 0.00 : 43a31f: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 43a324: be a8 5c 47 00 mov $0x475ca8,%esi 0.00 : 43a329: 83 05 f8 a5 25 00 01 addl $0x1,0x25a5f8(%rip) # 694928 0.00 : 43a330: 83 ca 04 or $0x4,%edx 0.00 : 43a333: e8 58 24 02 00 callq 45c790 0.00 : 43a338: 83 2d e9 a5 25 00 01 subl $0x1,0x25a5e9(%rip) # 694928 0.00 : 43a33f: eb b9 jmp 43a2fa 0.00 : 43a341: 4d 85 f6 test %r14,%r14 0.00 : 43a344: 0f 84 aa fb ff ff je 439ef4 0.00 : 43a34a: 4c 89 f7 mov %r14,%rdi 0.00 : 43a34d: 45 31 f6 xor %r14d,%r14d 0.00 : 43a350: e8 6b c0 fd ff callq 4163c0 0.00 : 43a355: e9 9a fb ff ff jmpq 439ef4 0.00 : 43a35a: be 01 00 00 00 mov $0x1,%esi 0.00 : 43a35f: bf c0 6a 69 00 mov $0x696ac0,%edi 0.00 : 43a364: e8 47 c8 fd ff callq 416bb0 <__sigsetjmp@plt> 0.00 : 43a369: 89 c1 mov %eax,%ecx 0.00 : 43a36b: eb 83 jmp 43a2f0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:216 18.18 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:233 18.18 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:233 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:218 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:218 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:226 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:226 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5a40 : : Datum *values, : bool *isnull, : ItemPointer heap_t_ctid, : Relation heapRelation, : IndexUniqueCheck checkUnique) : { 0.00 : 4a5a40: 55 push %rbp 0.00 : 4a5a41: 48 89 e5 mov %rsp,%rbp 0.00 : 4a5a44: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4a5a48: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 4a5a4c: 48 89 fb mov %rdi,%rbx 0.00 : 4a5a4f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 4a5a53: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 4a5a57: 4d 89 c6 mov %r8,%r14 0.00 : 4a5a5a: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 4a5a5e: 48 83 ec 50 sub $0x50,%rsp 0.00 : 4a5a62: 48 89 75 d0 mov %rsi,-0x30(%rbp) 0.00 : 4a5a66: 48 89 55 c8 mov %rdx,-0x38(%rbp) : FmgrInfo *procedure; : : RELATION_CHECKS; : GET_REL_PROCEDURE(aminsert); 0.00 : 4a5a6a: 4c 8b a7 c0 00 00 00 mov 0xc0(%rdi),%r12 : Datum *values, : bool *isnull, : ItemPointer heap_t_ctid, : Relation heapRelation, : IndexUniqueCheck checkUnique) : { 0.00 : 4a5a71: 49 89 cf mov %rcx,%r15 0.00 : 4a5a74: 45 89 cd mov %r9d,%r13d : FmgrInfo *procedure; : : RELATION_CHECKS; : GET_REL_PROCEDURE(aminsert); 0.00 : 4a5a77: 41 8b 44 24 08 mov 0x8(%r12),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:216 27.27 : 4a5a7c: 85 c0 test %eax,%eax 0.00 : 4a5a7e: 75 1d jne 4a5a9d 0.00 : 4a5a80: 48 8b 87 b0 00 00 00 mov 0xb0(%rdi),%rax 0.00 : 4a5a87: 8b 78 54 mov 0x54(%rax),%edi 0.00 : 4a5a8a: 85 ff test %edi,%edi 0.00 : 4a5a8c: 74 67 je 4a5af5 0.00 : 4a5a8e: 48 8b 93 b8 00 00 00 mov 0xb8(%rbx),%rdx 0.00 : 4a5a95: 4c 89 e6 mov %r12,%rsi 0.00 : 4a5a98: e8 b3 a5 2d 00 callq 780050 : : if (!(indexRelation->rd_am->ampredlocks)) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:218 9.09 : 4a5a9d: 48 8b 83 b0 00 00 00 mov 0xb0(%rbx),%rax 0.00 : 4a5aa4: 80 78 4e 00 cmpb $0x0,0x4e(%rax) 9.09 : 4a5aa8: 75 0c jne 4a5ab6 : CheckForSerializableConflictIn(indexRelation, 0.00 : 4a5aaa: 31 d2 xor %edx,%edx 0.00 : 4a5aac: 31 f6 xor %esi,%esi 0.00 : 4a5aae: 48 89 df mov %rbx,%rdi 0.00 : 4a5ab1: e8 da cc 1e 00 callq 692790 : InvalidBuffer); : : /* : * have the am's insert proc do all the work. : */ : return DatumGetBool(FunctionCall6(procedure, 0.00 : 4a5ab6: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.00 : 4a5aba: 48 8b 4d d0 mov -0x30(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:226 9.09 : 4a5abe: 45 89 ed mov %r13d,%r13d 0.00 : 4a5ac1: 4d 89 f9 mov %r15,%r9 0.00 : 4a5ac4: 48 89 da mov %rbx,%rdx 0.00 : 4a5ac7: 31 f6 xor %esi,%esi 0.00 : 4a5ac9: 4c 89 e7 mov %r12,%rdi 0.00 : 4a5acc: 4c 89 6c 24 08 mov %r13,0x8(%rsp) 0.00 : 4a5ad1: 4c 89 34 24 mov %r14,(%rsp) 0.00 : 4a5ad5: e8 36 82 2d 00 callq 77dd10 0.00 : 4a5ada: 84 c0 test %al,%al : PointerGetDatum(values), : PointerGetDatum(isnull), : PointerGetDatum(heap_t_ctid), : PointerGetDatum(heapRelation), : Int32GetDatum((int32) checkUnique))); : } /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:233 18.18 : 4a5adc: 48 8b 5d d8 mov -0x28(%rbp),%rbx 18.18 : 4a5ae0: 4c 8b 65 e0 mov -0x20(%rbp),%r12 : InvalidBuffer); : : /* : * have the am's insert proc do all the work. : */ : return DatumGetBool(FunctionCall6(procedure, /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:226 9.09 : 4a5ae4: 0f 95 c0 setne %al : PointerGetDatum(values), : PointerGetDatum(isnull), : PointerGetDatum(heap_t_ctid), : PointerGetDatum(heapRelation), : Int32GetDatum((int32) checkUnique))); : } 0.00 : 4a5ae7: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4a5aeb: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4a5aef: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4a5af3: c9 leaveq 0.00 : 4a5af4: c3 retq : IndexUniqueCheck checkUnique) : { : FmgrInfo *procedure; : : RELATION_CHECKS; : GET_REL_PROCEDURE(aminsert); 0.00 : 4a5af5: ba b9 3c 7b 00 mov $0x7b3cb9,%edx 0.00 : 4a5afa: be d8 00 00 00 mov $0xd8,%esi 0.00 : 4a5aff: bf 33 3b 7b 00 mov $0x7b3b33,%edi 0.00 : 4a5b04: e8 17 59 2d 00 callq 77b420 0.00 : 4a5b09: ba b8 3b 7b 00 mov $0x7b3bb8,%edx 0.00 : 4a5b0e: be 48 3b 7b 00 mov $0x7b3b48,%esi 0.00 : 4a5b13: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a5b18: 31 c0 xor %eax,%eax 0.00 : 4a5b1a: e8 11 57 2d 00 callq 77b230 0.00 : 4a5b1f: e8 ac 39 fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:354 13.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:350 13.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:354 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:334 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:334 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:334 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:341 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:370 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:354 6.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:354 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c1dc0 : : * to load data from either the true current inner, or the marked inner, : * so caller must tell us which slot to load from. : */ : static MJEvalResult : MJEvalInnerValues(MergeJoinState *mergestate, TupleTableSlot *innerslot) : { 0.00 : 5c1dc0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:334 6.67 : 5c1dc1: 48 89 e5 mov %rsp,%rbp 6.67 : 5c1dc4: 41 57 push %r15 6.67 : 5c1dc6: 41 56 push %r14 0.00 : 5c1dc8: 41 55 push %r13 0.00 : 5c1dca: 49 89 fd mov %rdi,%r13 0.00 : 5c1dcd: 41 54 push %r12 0.00 : 5c1dcf: 53 push %rbx 0.00 : 5c1dd0: 48 89 f3 mov %rsi,%rbx 0.00 : 5c1dd3: 48 83 ec 08 sub $0x8,%rsp : MJEvalResult result = MJEVAL_MATCHABLE; : int i; : MemoryContext oldContext; : : /* Check for end of inner subplan */ : if (TupIsNull(innerslot)) 0.00 : 5c1dd7: 48 85 f6 test %rsi,%rsi : * so caller must tell us which slot to load from. : */ : static MJEvalResult : MJEvalInnerValues(MergeJoinState *mergestate, TupleTableSlot *innerslot) : { : ExprContext *econtext = mergestate->mj_InnerEContext; 0.00 : 5c1dda: 4c 8b bf d8 00 00 00 mov 0xd8(%rdi),%r15 : MJEvalResult result = MJEVAL_MATCHABLE; : int i; : MemoryContext oldContext; : : /* Check for end of inner subplan */ : if (TupIsNull(innerslot)) 0.00 : 5c1de1: 74 06 je 5c1de9 0.00 : 5c1de3: 80 7e 04 00 cmpb $0x0,0x4(%rsi) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:341 6.67 : 5c1de7: 74 1f je 5c1e08 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5c1de9: 41 be 02 00 00 00 mov $0x2,%r14d : } : : MemoryContextSwitchTo(oldContext); : : return result; : } 0.00 : 5c1def: 48 83 c4 08 add $0x8,%rsp 0.00 : 5c1df3: 44 89 f0 mov %r14d,%eax 0.00 : 5c1df6: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:370 6.67 : 5c1df7: 41 5c pop %r12 0.00 : 5c1df9: 41 5d pop %r13 0.00 : 5c1dfb: 41 5e pop %r14 0.00 : 5c1dfd: 41 5f pop %r15 0.00 : 5c1dff: c9 leaveq 0.00 : 5c1e00: c3 retq 0.00 : 5c1e01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* Check for end of inner subplan */ : if (TupIsNull(innerslot)) : return MJEVAL_ENDOFJOIN; : : ResetExprContext(econtext); 0.00 : 5c1e08: 49 8b 7f 28 mov 0x28(%r15),%rdi : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : econtext->ecxt_innertuple = innerslot; : : for (i = 0; i < mergestate->mj_NumClauses; i++) 0.00 : 5c1e0c: 45 31 f6 xor %r14d,%r14d 0.00 : 5c1e0f: 45 31 e4 xor %r12d,%r12d : : /* Check for end of inner subplan */ : if (TupIsNull(innerslot)) : return MJEVAL_ENDOFJOIN; : : ResetExprContext(econtext); 0.00 : 5c1e12: e8 99 6b 1d 00 callq 7989b0 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5c1e17: 48 8b 05 42 8a 5f 00 mov 0x5f8a42(%rip),%rax # bba860 0.00 : 5c1e1e: 48 89 45 d0 mov %rax,-0x30(%rbp) : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 6.67 : 5c1e22: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5c1e26: 48 89 05 33 8a 5f 00 mov %rax,0x5f8a33(%rip) # bba860 : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : econtext->ecxt_innertuple = innerslot; 0.00 : 5c1e2d: 49 89 5f 10 mov %rbx,0x10(%r15) : : for (i = 0; i < mergestate->mj_NumClauses; i++) 0.00 : 5c1e31: 41 8b 8d 88 00 00 00 mov 0x88(%r13),%ecx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:350 13.33 : 5c1e38: 85 c9 test %ecx,%ecx 0.00 : 5c1e3a: 7f 31 jg 5c1e6d 0.00 : 5c1e3c: e9 7d 00 00 00 jmpq 5c1ebe 0.00 : 5c1e41: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : clause->rdatum = ExecEvalExpr(clause->rexpr, econtext, : &clause->risnull, NULL); : if (clause->risnull) : { : /* match is impossible; can we end the join early? */ : if (i == 0 && !clause->ssup.ssup_nulls_first && 0.00 : 5c1e48: 80 7b 35 00 cmpb $0x0,0x35(%rbx) 0.00 : 5c1e4c: 75 57 jne 5c1ea5 0.00 : 5c1e4e: 41 80 bd 9f 00 00 00 cmpb $0x0,0x9f(%r13) 0.00 : 5c1e55: 00 0.00 : 5c1e56: 75 4d jne 5c1ea5 0.00 : 5c1e58: 41 be 02 00 00 00 mov $0x2,%r14d 0.00 : 5c1e5e: 66 90 xchg %ax,%ax : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : econtext->ecxt_innertuple = innerslot; : : for (i = 0; i < mergestate->mj_NumClauses; i++) 0.00 : 5c1e60: 41 83 c4 01 add $0x1,%r12d 0.00 : 5c1e64: 45 39 a5 88 00 00 00 cmp %r12d,0x88(%r13) 0.00 : 5c1e6b: 7e 51 jle 5c1ebe : { : MergeJoinClause clause = &mergestate->mj_Clauses[i]; 0.00 : 5c1e6d: 49 63 c4 movslq %r12d,%rax : : clause->rdatum = ExecEvalExpr(clause->rexpr, econtext, 0.00 : 5c1e70: 31 c9 xor %ecx,%ecx 0.00 : 5c1e72: 4c 89 fe mov %r15,%rsi : : econtext->ecxt_innertuple = innerslot; : : for (i = 0; i < mergestate->mj_NumClauses; i++) : { : MergeJoinClause clause = &mergestate->mj_Clauses[i]; 0.00 : 5c1e75: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 5c1e79: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 5c1e80: 00 0.00 : 5c1e81: 49 03 9d 90 00 00 00 add 0x90(%r13),%rbx : : clause->rdatum = ExecEvalExpr(clause->rexpr, econtext, /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:354 6.67 : 5c1e88: 48 8b 43 08 mov 0x8(%rbx),%rax 13.33 : 5c1e8c: 48 8d 53 21 lea 0x21(%rbx),%rdx 0.00 : 5c1e90: 48 89 c7 mov %rax,%rdi 6.67 : 5c1e93: ff 50 10 callq *0x10(%rax) : &clause->risnull, NULL); : if (clause->risnull) 0.00 : 5c1e96: 80 7b 21 00 cmpb $0x0,0x21(%rbx) : : for (i = 0; i < mergestate->mj_NumClauses; i++) : { : MergeJoinClause clause = &mergestate->mj_Clauses[i]; : : clause->rdatum = ExecEvalExpr(clause->rexpr, econtext, 20.00 : 5c1e9a: 48 89 43 18 mov %rax,0x18(%rbx) : &clause->risnull, NULL); : if (clause->risnull) 0.00 : 5c1e9e: 74 c0 je 5c1e60 : { : /* match is impossible; can we end the join early? */ : if (i == 0 && !clause->ssup.ssup_nulls_first && 0.00 : 5c1ea0: 45 85 e4 test %r12d,%r12d 0.00 : 5c1ea3: 74 a3 je 5c1e48 : !mergestate->mj_FillInner) : result = MJEVAL_ENDOFJOIN; : else if (result == MJEVAL_MATCHABLE) 0.00 : 5c1ea5: 45 85 f6 test %r14d,%r14d 0.00 : 5c1ea8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5c1ead: 44 0f 44 f0 cmove %eax,%r14d : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : econtext->ecxt_innertuple = innerslot; : : for (i = 0; i < mergestate->mj_NumClauses; i++) 0.00 : 5c1eb1: 41 83 c4 01 add $0x1,%r12d 0.00 : 5c1eb5: 45 39 a5 88 00 00 00 cmp %r12d,0x88(%r13) 0.00 : 5c1ebc: 7f af jg 5c1e6d 0.00 : 5c1ebe: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 5c1ec2: 48 89 05 97 89 5f 00 mov %rax,0x5f8997(%rip) # bba860 : } : : MemoryContextSwitchTo(oldContext); : : return result; : } 0.00 : 5c1ec9: e9 21 ff ff ff jmpq 5c1def Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 33.33 ??:0 22.22 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005bb0 : : } : : #else : static bool ixgbe_alloc_mapped_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *bi) : { ??:0 22.22 : 5bb0: 48 83 ec 28 sub $0x28,%rsp : struct page *page = bi->page; : dma_addr_t dma = bi->dma; : : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) 11.11 : 5bb4: b8 01 00 00 00 mov $0x1,%eax : } : : #else : static bool ixgbe_alloc_mapped_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *bi) : { 0.00 : 5bb9: 48 89 1c 24 mov %rbx,(%rsp) 11.11 : 5bbd: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 33.33 : 5bc2: 48 89 f3 mov %rsi,%rbx 0.00 : 5bc5: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 5bca: 4c 89 6c 24 18 mov %r13,0x18(%rsp) 0.00 : 5bcf: 48 89 fd mov %rdi,%rbp 0.00 : 5bd2: 4c 89 74 24 20 mov %r14,0x20(%rsp) : struct page *page = bi->page; : dma_addr_t dma = bi->dma; : : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) 0.00 : 5bd7: 48 83 7e 08 00 cmpq $0x0,0x8(%rsi) : : #else : static bool ixgbe_alloc_mapped_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *bi) : { : struct page *page = bi->page; 11.11 : 5bdc: 4c 8b 66 10 mov 0x10(%rsi),%r12 : dma_addr_t dma = bi->dma; : : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) 0.00 : 5be0: 74 1d je 5bff : : bi->dma = dma; : bi->page_offset = 0; : : return true; : } 0.00 : 5be2: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5be6: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 5beb: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 5bf0: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 5bf5: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 11.11 : 5bfa: 48 83 c4 28 add $0x28,%rsp 0.00 : 5bfe: c3 retq : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) : return true; : : /* alloc new page for storage */ : if (likely(!page)) { 0.00 : 5bff: 4d 85 e4 test %r12,%r12 0.00 : 5c02: 4c 8d 77 30 lea 0x30(%rdi),%r14 0.00 : 5c06: 75 29 jne 5c31 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 5c08: 48 8b 77 30 mov 0x30(%rdi),%rsi : } : : static inline unsigned int ixgbe_rx_pg_order(struct ixgbe_ring *ring) : { : #ifdef IXGBE_FCOE : if (test_bit(__IXGBE_RX_FCOE, &ring->state)) 0.00 : 5c0c: 4c 8d 77 30 lea 0x30(%rdi),%r14 : extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); : : static inline struct page * : alloc_pages(gfp_t gfp_mask, unsigned int order) : { : return alloc_pages_current(gfp_mask, order); 0.00 : 5c10: bf 20 41 00 00 mov $0x4120,%edi 0.00 : 5c15: 48 c1 ee 05 shr $0x5,%rsi 0.00 : 5c19: 83 e6 01 and $0x1,%esi 0.00 : 5c1c: e8 00 00 00 00 callq 5c21 : page = alloc_pages(GFP_ATOMIC | __GFP_COLD | __GFP_COMP, : ixgbe_rx_pg_order(rx_ring)); : if (unlikely(!page)) { 0.00 : 5c21: 48 85 c0 test %rax,%rax 0.00 : 5c24: 49 89 c4 mov %rax,%r12 0.00 : 5c27: 0f 84 8f 00 00 00 je 5cbc : rx_ring->rx_stats.alloc_rx_page_failed++; : return false; : } : bi->page = page; 0.00 : 5c2d: 48 89 43 10 mov %rax,0x10(%rbx) : } : : /* map page for use */ : dma = dma_map_page(rx_ring->dev, page, 0, 0.00 : 5c31: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 5c35: 49 8b 06 mov (%r14),%rax : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 5c38: 48 85 ff test %rdi,%rdi 0.00 : 5c3b: 0f 84 b2 00 00 00 je 5cf3 0.00 : 5c41: 4c 8b 97 00 02 00 00 mov 0x200(%rdi),%r10 0.00 : 5c48: 4d 85 d2 test %r10,%r10 0.00 : 5c4b: 0f 84 a2 00 00 00 je 5cf3 : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(page_address(page) + offset, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, page, offset, size, dir, NULL); 0.00 : 5c51: 48 c1 e8 05 shr $0x5,%rax 0.00 : 5c55: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 5c5a: 45 31 c9 xor %r9d,%r9d 0.00 : 5c5d: 83 e0 01 and $0x1,%eax 0.00 : 5c60: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 5c66: 4c 89 e6 mov %r12,%rsi 0.00 : 5c69: 89 c1 mov %eax,%ecx 0.00 : 5c6b: 48 d3 e2 shl %cl,%rdx 0.00 : 5c6e: 48 89 d1 mov %rdx,%rcx 0.00 : 5c71: 31 d2 xor %edx,%edx 0.00 : 5c73: 41 ff 52 10 callq *0x10(%r10) : : /* : * if mapping failed free memory back to system since : * there isn't much point in holding memory we can't use : */ : if (dma_mapping_error(rx_ring->dev, dma)) { 0.00 : 5c77: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 5c7b: 49 89 c5 mov %rax,%r13 0.00 : 5c7e: 48 85 ff test %rdi,%rdi 0.00 : 5c81: 74 67 je 5cea 0.00 : 5c83: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 5c8a: 48 85 c0 test %rax,%rax 0.00 : 5c8d: 74 5b je 5cea : : /* Make sure we keep the same behaviour */ : static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) : { : struct dma_map_ops *ops = get_dma_ops(dev); : if (ops->mapping_error) 0.00 : 5c8f: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 5c93: 48 85 c0 test %rax,%rax 0.00 : 5c96: 74 48 je 5ce0 : return ops->mapping_error(dev, dma_addr); 0.00 : 5c98: 4c 89 ee mov %r13,%rsi 0.00 : 5c9b: ff d0 callq *%rax 0.00 : 5c9d: 85 c0 test %eax,%eax 0.00 : 5c9f: 90 nop 0.00 : 5ca0: 74 29 je 5ccb 0.00 : 5ca2: 49 8b 36 mov (%r14),%rsi : __free_pages(page, ixgbe_rx_pg_order(rx_ring)); 0.00 : 5ca5: 4c 89 e7 mov %r12,%rdi 0.00 : 5ca8: 48 c1 ee 05 shr $0x5,%rsi 0.00 : 5cac: 83 e6 01 and $0x1,%esi 0.00 : 5caf: e8 00 00 00 00 callq 5cb4 : bi->page = NULL; 0.00 : 5cb4: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5cbb: 00 : : rx_ring->rx_stats.alloc_rx_page_failed++; 0.00 : 5cbc: 48 83 85 80 00 00 00 addq $0x1,0x80(%rbp) 0.00 : 5cc3: 01 0.00 : 5cc4: 31 c0 xor %eax,%eax : : bi->dma = dma; : bi->page_offset = 0; : : return true; : } 0.00 : 5cc6: e9 17 ff ff ff jmpq 5be2 : : rx_ring->rx_stats.alloc_rx_page_failed++; : return false; : } : : bi->dma = dma; 0.00 : 5ccb: 4c 89 6b 08 mov %r13,0x8(%rbx) : bi->page_offset = 0; 0.00 : 5ccf: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) 0.00 : 5cd6: b8 01 00 00 00 mov $0x1,%eax : : return true; : } 0.00 : 5cdb: e9 02 ff ff ff jmpq 5be2 : : return (dma_addr == DMA_ERROR_CODE); 0.00 : 5ce0: 31 c0 xor %eax,%eax 0.00 : 5ce2: 4d 85 ed test %r13,%r13 0.00 : 5ce5: 0f 94 c0 sete %al 0.00 : 5ce8: eb b3 jmp 5c9d : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) : return dma_ops; 0.00 : 5cea: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 5cf1 0.00 : 5cf1: eb 9c jmp 5c8f 0.00 : 5cf3: 4c 8b 15 00 00 00 00 mov 0x0(%rip),%r10 # 5cfa 0.00 : 5cfa: e9 52 ff ff ff jmpq 5c51 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000013c0 : ??:0 12.50 : 13c0: 41 57 push %r15 0.00 : 13f2: 41 56 xor %dh,%dh 0.00 : 13f4: 41 55 add %al,(%rdx) 0.00 : 13f6: 41 54 49 89 f4 55 jne 16c2 <__journal_refile_buffer+0x1372> 0.00 : 13fc: 53 48 81 ec 88 lea 0x40(%rsp),%rdx 0.00 : 1401: 00 00 00 48 89 lea 0x40(%rsp),%r15 0.00 : 1406: 7c 24 28 89 54 24 24 movq $0x0,0x38(%rsp) 0.00 : 140d: f6 47 0.00 : 140f: 14 04 0f 85 db 02 00 mov %gs:0x0,%rax 0.00 : 1416: 00 4c 0.00 : 1418: 8b 2f 49 8b 45 mov %rdx,0x8(%rsp) 0.00 : 141d: 00 48 89 44 add $0x28,%rdx 0.00 : 1421: 24 30 f6 00 02 mov %rax,0x18(%rsp) 0.00 : 1426: 0f 85 c6 02 00 mov %rdx,0x10(%rsp) 0.00 : 142b: 00 48 8d 54 add $0x10,%r15 0.00 : 142f: 24 nop 0.00 : 1430: 40 4c 8d 7c mov (%r12),%rbp 0.00 : 1434: 24 40 48 c7 44 24 lock btsl $0x2,0x0(%rbp) 12.50 : 143a: 38 00 sbb %eax,%eax 0.00 : 143c: 00 00 test %eax,%eax 0.00 : 143e: 00 65 48 8b 04 25 jne 15f8 <__journal_refile_buffer+0x12a8> 0.00 : 1444: 00 00 00 00 48 89 lock btsl $0x14,0x0(%rbp) 12.50 : 144a: 54 24 sbb %eax,%eax 0.00 : 144c: 08 48 test %eax,%eax 0.00 : 144e: 83 c2 je 1469 <__journal_refile_buffer+0x1119> 0.00 : 1450: 28 48 pause 0.00 : 1452: 89 44 24 18 mov 0x0(%rbp),%rax 0.00 : 1456: 48 89 54 24 10 test $0x100000,%eax 0.00 : 145b: 49 83 jne 1450 <__journal_refile_buffer+0x1100> 0.00 : 145d: c7 10 90 49 8b 2c lock btsl $0x14,0x0(%rbp) 0.00 : 1463: 24 f0 sbb %eax,%eax 0.00 : 1465: 0f ba test %eax,%eax 0.00 : 1467: 6d 00 jne 1450 <__journal_refile_buffer+0x1100> 0.00 : 1469: 02 19 c0 85 mov 0x0(%rbp),%rax 12.50 : 146d: c0 0f 85 b4 lea 0x2(%rbp),%r14 0.00 : 1471: 01 00 test $0x2,%al 0.00 : 1473: 00 f0 je 14cf <__journal_refile_buffer+0x117f> 0.00 : 1475: 0f ba 6d 00 14 mov 0x28(%r12),%rax 0.00 : 147a: 19 c0 85 test %rax,%rax 0.00 : 147d: c0 74 je 14c1 <__journal_refile_buffer+0x1171> 0.00 : 147f: 19 f3 90 cmp %r13,%rax 0.00 : 1482: 48 8b 45 00 a9 00 jne 17f0 <__journal_refile_buffer+0x14a0> 0.00 : 1488: 00 10 00 75 f3 mov 0x30(%r12),%rax 0.00 : 148d: f0 0f ba test %rax,%rax 0.00 : 1490: 6d 00 je 149b <__journal_refile_buffer+0x114b> 0.00 : 1492: 14 19 c0 cmp %r13,%rax 0.00 : 1495: 85 c0 75 e7 48 8b jne 1808 <__journal_refile_buffer+0x14b8> 0.00 : 149b: 45 00 4c 8d mov 0x18(%rbp),%rbx 0.00 : 149f: 75 02 a8 02 mov 0x30(%rbp),%rdi 0.00 : 14a3: 74 5a 49 8b 44 lea 0x40(%rsp),%rsi 0.00 : 14a8: 24 28 48 85 c0 callq 14ad <__journal_refile_buffer+0x115d> 0.00 : 14ad: 74 42 4c mov %rbx,%rdx 0.00 : 14b0: 39 e8 0f mov %rax,%rsi 0.00 : 14b3: 85 68 03 00 00 49 8b mov $0x0,%rdi 0.00 : 14ba: 44 24 xor %eax,%eax 0.00 : 14bc: 30 48 85 c0 74 callq 14c1 <__journal_refile_buffer+0x1171> 0.00 : 14c1: 09 4c 39 e8 0f lock andb $0xfd,0x0(%rbp) 0.00 : 14c6: 85 6d 03 00 lea 0x2(%rbp),%r14 0.00 : 14ca: 00 48 8b 5d 18 lock orb $0x8,0x2(%rbp) 0.00 : 14cf: 48 8b 7d mov %rbp,%rdi 12.50 : 14d2: 30 48 8d 74 24 callq 14d7 <__journal_refile_buffer+0x1187> 0.00 : 14d7: 40 e8 00 00 00 mov 0x28(%rsp),%rax 0.00 : 14dc: 00 48 89 da testb $0x4,0x14(%rax) 0.00 : 14e0: 48 89 je 150c <__journal_refile_buffer+0x11bc> 0.00 : 14e2: c6 48 c7 c7 00 lock andb $0xef,(%r14) 0.00 : 14e7: 00 00 00 31 c0 mov $0xffffffe2,%ebx 0.00 : 14ec: e8 00 00 00 00 f0 cmpq $0x0,0x38(%rsp) 0.00 : 14f2: 80 65 00 fd 4c 8d jne 1838 <__journal_refile_buffer+0x14e8> 0.00 : 14f8: 75 02 f0 80 4d 02 08 add $0x88,%rsp 0.00 : 14ff: 48 89 mov %ebx,%eax 0.00 : 1501: ef pop %rbx 0.00 : 1502: e8 pop %rbp 0.00 : 1503: 00 00 pop %r12 0.00 : 1505: 00 00 pop %r13 0.00 : 1507: 48 8b pop %r14 0.00 : 1509: 44 24 pop %r15 0.00 : 150b: 28 retq 0.00 : 150c: f6 40 14 mov (%rax),%rax 0.00 : 150f: 04 74 2a mov (%rax),%rax 0.00 : 1512: f0 41 80 testb $0x2,(%rax) 0.00 : 1515: 26 ef jne 14e2 <__journal_refile_buffer+0x1192> 0.00 : 1517: bb e2 ff ff ff cmp %r13,0x28(%r12) 0.00 : 151c: 48 83 7c 24 38 00 je 16a9 <__journal_refile_buffer+0x1359> 0.00 : 1522: 0f 85 40 03 00 cmp %r13,0x30(%r12) 0.00 : 1527: 00 48 81 c4 88 00 je 16a9 <__journal_refile_buffer+0x1359> 0.00 : 152d: 00 00 89 d8 5b 5d cmpq $0x0,0x18(%r12) 0.00 : 1533: 41 5c 41 5d 41 5e 41 movl $0x0,0x10(%r12) 0.00 : 153a: 5f c3 0.00 : 153c: 48 8b 00 48 8b 00 jne 17a9 <__journal_refile_buffer+0x1459> 0.00 : 1542: f6 00 02 75 cb mov 0x28(%r12),%rdx 0.00 : 1547: 4d 39 6c test %rdx,%rdx 0.00 : 154a: 24 28 0f 84 87 01 je 1755 <__journal_refile_buffer+0x1405> 0.00 : 1550: 00 00 4d cmp %r13,%rdx 0.00 : 1553: 39 6c 24 30 0f 84 je 179e <__journal_refile_buffer+0x144e> 0.00 : 1559: 7c 01 00 00 49 83 cmpq $0x0,0x30(%r12) 0.00 : 155f: 7c nop 0.00 : 1560: 24 18 00 41 c7 44 jne 17df <__journal_refile_buffer+0x148f> 0.00 : 1566: 24 10 00 00 00 mov 0x30(%rsp),%rax 0.00 : 156b: 00 0f 85 67 cmp 0x58(%rax),%rdx 0.00 : 156f: 02 nop 0.00 : 1570: 00 00 49 8b 54 24 jne 17e8 <__journal_refile_buffer+0x1498> 0.00 : 1576: 28 48 85 d2 0f mov 0xc(%r12),%eax 0.00 : 157b: 84 05 02 cmp $0x5,%eax 0.00 : 157e: 00 00 4c 39 ea 0f je 16cc <__journal_refile_buffer+0x137c> 0.00 : 1584: 84 45 02 cmp $0x3,%eax 0.00 : 1587: 00 00 je 1605 <__journal_refile_buffer+0x12b5> 0.00 : 1589: 49 83 7c 24 30 00 cmpq $0x0,0x38(%rsp) 0.00 : 158f: 90 nop 0.00 : 1590: 0f 85 79 02 00 00 jne 17c1 <__journal_refile_buffer+0x1471> 0.00 : 1596: 48 8b 44 24 30 lock andb $0xef,(%r14) 0.00 : 159b: 48 3b 50 58 mov (%r12),%rax 0.00 : 159f: 90 0f 85 72 02 mov $0xffffffff,%esi 0.00 : 15a4: 00 00 41 8b mov 0x20(%rax),%rax 0.00 : 15a8: 44 24 0c 83 sub $0x1,%rax 0.00 : 15ac: f8 05 0f 84 shr $0xb,%rax 0.00 : 15b0: 48 01 00 add $0x1,%esi 0.00 : 15b3: 00 83 f8 shr %rax 0.00 : 15b6: 03 74 jne 15b0 <__journal_refile_buffer+0x1260> 0.00 : 15b8: 7c 48 83 7c 24 mov $0x50,%edi 0.00 : 15bd: 38 00 90 0f 85 callq 15c2 <__journal_refile_buffer+0x1272> 0.00 : 15c2: 2b 02 00 test %rax,%rax 0.00 : 15c5: 00 f0 41 80 26 mov %rax,0x38(%rsp) 0.00 : 15ca: ef 49 8b 04 24 be jne 1430 <__journal_refile_buffer+0x10e0> 0.00 : 15d0: ff ff ff ff 48 8b 40 mov $0x0,%rsi 0.00 : 15d7: 20 48 83 e8 01 48 c1 mov $0x0,%rdi 0.00 : 15de: e8 0b 83 c6 01 mov $0xfffffff4,%ebx 0.00 : 15e3: 48 d1 e8 75 f8 callq 15e8 <__journal_refile_buffer+0x1298> 0.00 : 15e8: bf 50 00 mov %rbp,%rdi 0.00 : 15eb: 00 00 e8 00 00 callq 10 0.00 : 15f0: 00 00 48 85 c0 jmpq 16ab <__journal_refile_buffer+0x135b> 0.00 : 15f5: 48 89 44 nopl (%rax) 0.00 : 15f8: 24 38 0f mov %rbp,%rdi 0.00 : 15fb: 85 60 fe ff ff callq 1600 <__journal_refile_buffer+0x12b0> 0.00 : 1600: 48 c7 c6 00 00 jmpq 1444 <__journal_refile_buffer+0x10f4> 0.00 : 1605: 00 00 48 c7 mov 0x24(%rsp),%eax 0.00 : 1609: c7 00 test %eax,%eax 0.00 : 160b: 00 00 00 bb f4 ff jne 1589 <__journal_refile_buffer+0x1239> 0.00 : 1611: ff ff e8 xor %r15d,%r15d 0.00 : 1614: 00 00 00 00 48 mov %r13,0x30(%r12) 0.00 : 1619: 89 ef e8 mov %rdx,%rax 0.00 : 161c: 20 ea ff test %rax,%rax 0.00 : 161f: ff e9 b6 00 00 00 je 1758 <__journal_refile_buffer+0x1408> 0.00 : 1625: 0f 1f xor %ebx,%ebx 0.00 : 1627: 00 48 89 test %r15d,%r15d 0.00 : 162a: ef e8 je 16ab <__journal_refile_buffer+0x135b> 0.00 : 162c: 00 00 00 00 mov (%r12),%rdx 0.00 : 1630: e9 3f fe mov (%rdx),%rax 0.00 : 1633: ff ff test $0x1,%al 0.00 : 1635: 8b 44 24 24 85 c0 je 180c <__journal_refile_buffer+0x14bc> 0.00 : 163b: 0f 85 78 ff mov 0x10(%rdx),%rsi 0.00 : 163f: ff ff 45 31 mov 0x28(%rdx),%rdx 0.00 : 1643: ff 4d 89 6c 24 30 48 mov %gs:0x0,%rbx 0.00 : 164a: 89 d0 0.00 : 164c: 48 85 c0 0f 84 33 01 sub $0x1fd8,%rbx 0.00 : 1653: 00 00 31 db 45 85 and $0xfff,%edx 0.00 : 1659: ff 74 7f 49 addl $0x1,0x1c(%rbx) 0.00 : 165d: 8b 14 24 48 8b 02 a8 movabs $0x160000000000,%rax 0.00 : 1664: 01 0f 84 0.00 : 1667: d1 01 00 00 mov (%r12),%rcx 0.00 : 166b: 48 8b 72 movslq %edx,%rdx 0.00 : 166e: 10 48 8b add %rax,%rsi 0.00 : 1671: 52 28 65 48 8b 1c 25 movabs $0x6db6db6db6db6db7,%rax 0.00 : 1678: 00 00 00 0.00 : 167b: 00 48 81 eb d8 mov 0x18(%r12),%rdi 0.00 : 1680: 1f 00 00 81 sar $0x3,%rsi 0.00 : 1684: e2 ff 0f 00 imul %rax,%rsi 0.00 : 1688: 00 83 43 1c 01 48 b8 movabs $0xffff880000000000,%rax 0.00 : 168f: 00 00 00 0.00 : 1692: 00 00 16 00 shl $0xc,%rsi 0.00 : 1696: 00 49 8b add %rax,%rsi 0.00 : 1699: 0c 24 48 add %rdx,%rsi 0.00 : 169c: 63 d2 48 01 mov 0x20(%rcx),%rdx 0.00 : 16a0: c6 48 b8 b7 6d callq 16a5 <__journal_refile_buffer+0x1355> 0.00 : 16a5: db b6 6d db subl $0x1,0x1c(%rbx) 12.50 : 16a9: b6 6d xor %ebx,%ebx 0.00 : 16ab: 49 8b 7c 24 18 lock andb $0xef,(%r14) 12.50 : 16b0: 48 c1 fe 03 48 mov 0x28(%rsp),%rdi 0.00 : 16b5: 0f af f0 mov %r12,%rsi 0.00 : 16b8: 48 b8 00 00 00 callq 16bd <__journal_refile_buffer+0x136d> 12.50 : 16bd: 00 00 88 ff ff jmpq 14ec <__journal_refile_buffer+0x119c> 0.00 : 16c2: 48 c1 e6 0c 48 mov $0xffffffe2,%ebx 0.00 : 16c7: 01 c6 48 01 d6 jmpq 14f8 <__journal_refile_buffer+0x11a8> 0.00 : 16cc: 48 8b 51 20 e8 mov 0x8(%rsp),%rdi 0.00 : 16d1: 00 00 xor %eax,%eax 0.00 : 16d3: 00 00 83 6b 1c mov $0x7,%ecx 0.00 : 16d8: 01 31 db f0 41 mov $0x16,%esi 0.00 : 16dd: 80 26 ef rep stos %rax,%es:(%rdi) 0.00 : 16e0: 48 8b 7c mov %rbp,%rdi 0.00 : 16e3: 24 28 4c 89 e6 mov %rbp,0x40(%rsp) 0.00 : 16e8: e8 00 00 00 00 e9 2a movl $0x16,0x48(%rsp) 0.00 : 16ef: fe 0.00 : 16f0: ff ff bb e2 ff ff ff movq $0x0,0x60(%rsp) 0.00 : 16f7: e9 2c 0.00 : 16f9: fe ff ff 48 8b mov 0x10(%rsp),%rax 0.00 : 16fe: 7c 24 08 31 c0 mov 0x18(%rsp),%rdx 0.00 : 1703: b9 07 00 00 00 mov %rax,0x68(%rsp) 0.00 : 1708: be 16 00 00 00 mov %rdx,0x58(%rsp) 0.00 : 170d: f3 48 ab 48 89 mov %rax,0x70(%rsp) 0.00 : 1712: ef 48 89 6c 24 callq 1717 <__journal_refile_buffer+0x13c7> 0.00 : 1717: 40 c7 44 mov %rax,%rbx 0.00 : 171a: 24 48 16 00 00 lock andb $0xef,(%r14) 0.00 : 171f: 00 48 jmp 172d <__journal_refile_buffer+0x13dd> 0.00 : 1721: c7 44 24 60 00 00 00 nopl 0x0(%rax) 0.00 : 1728: 00 48 8b 44 24 callq 172d <__journal_refile_buffer+0x13dd> 0.00 : 172d: 10 48 8b 54 24 mov $0x2,%edx 0.00 : 1732: 18 48 89 mov %r15,%rsi 0.00 : 1735: 44 24 68 mov %rbx,%rdi 0.00 : 1738: 48 89 54 24 58 callq 173d <__journal_refile_buffer+0x13ed> 0.00 : 173d: 48 89 44 24 70 e8 cmpl $0x5,0xc(%r12) 0.00 : 1743: 00 00 je 1728 <__journal_refile_buffer+0x13d8> 0.00 : 1745: 00 00 48 mov %r15,%rsi 0.00 : 1748: 89 c3 f0 mov %rbx,%rdi 0.00 : 174b: 41 80 26 ef eb callq 1750 <__journal_refile_buffer+0x1400> 0.00 : 1750: 0c 0f 1f 80 00 jmpq 1430 <__journal_refile_buffer+0x10e0> 0.00 : 1755: 00 00 00 xor %r15d,%r15d 0.00 : 1758: e8 00 00 00 00 ba cmpq $0x0,0x30(%r12) 0.00 : 175e: 02 00 00 00 4c 89 jne 1864 <__journal_refile_buffer+0x1514> 0.00 : 1764: fe 48 89 df e8 mov 0x30(%rsp),%rbx 0.00 : 1769: 00 00 00 00 41 mov %r13,0x28(%r12) 0.00 : 176e: 83 7c 24 0c 05 74 e3 add $0x14c,%rbx 0.00 : 1775: 4c 89 fe mov %rbx,%rdi 0.00 : 1778: 48 89 df e8 00 callq 177d <__journal_refile_buffer+0x142d> 0.00 : 177d: 00 00 00 e9 db mov $0x7,%edx 0.00 : 1782: fc ff ff mov %r13,%rsi 0.00 : 1785: 45 31 ff mov %r12,%rdi 0.00 : 1788: 49 83 7c 24 30 callq 178d <__journal_refile_buffer+0x143d> 0.00 : 178d: 00 0f 85 00 01 mov 0x30(%rsp),%rdx 0.00 : 1792: 00 00 48 8b 5c 24 30 incw 0x14c(%rdx) 0.00 : 1799: 4d 89 6c 24 28 jmpq 1625 <__journal_refile_buffer+0x12d5> 0.00 : 179e: 48 81 c3 mov %r13,%rax 0.00 : 17a1: 4c 01 00 xor %r15d,%r15d 0.00 : 17a4: 00 48 89 df e8 jmpq 161c <__journal_refile_buffer+0x12cc> 0.00 : 17a9: 00 00 00 00 ba 07 cmpq $0x0,0x30(%r12) 0.00 : 17af: 00 00 00 4c 89 ee jne 1860 <__journal_refile_buffer+0x1510> 0.00 : 17b5: 4c 89 e7 e8 00 mov %r13,0x30(%r12) 0.00 : 17ba: 00 00 xor %ebx,%ebx 0.00 : 17bc: 00 48 8b 54 24 jmpq 16ab <__journal_refile_buffer+0x135b> 0.00 : 17c1: 30 66 ff 82 4c mov 0x38(%rsp),%rax 0.00 : 17c6: 01 00 00 e9 87 fe mov $0x1,%r15d 0.00 : 17cc: ff ff 4c 89 e8 45 31 movq $0x0,0x38(%rsp) 0.00 : 17d3: ff e9 0.00 : 17d5: 73 fe ff ff 49 mov %rax,0x18(%r12) 0.00 : 17da: 83 7c 24 30 00 jmpq 1614 <__journal_refile_buffer+0x12c4> 0.00 : 17df: 0f 85 ud2 0.00 : 17e1: ab 00 jmp 17e1 <__journal_refile_buffer+0x1491> 0.00 : 17e3: 00 00 4d 89 6c nopl 0x0(%rax,%rax,1) 0.00 : 17e8: 24 30 ud2 0.00 : 17ea: 31 db jmp 17ea <__journal_refile_buffer+0x149a> 0.00 : 17ec: e9 ea fe ff nopl 0x0(%rax) 0.00 : 17f0: ff 48 8b 44 24 mov 0x30(%rsp),%rdx 0.00 : 17f5: 38 41 bf 01 cmp 0x58(%rdx),%rax 0.00 : 17f9: 00 00 00 48 c7 44 je 1488 <__journal_refile_buffer+0x1138> 0.00 : 17ff: 24 38 ud2 0.00 : 1801: 00 00 jmp 1801 <__journal_refile_buffer+0x14b1> 0.00 : 1803: 00 00 49 89 44 nopl 0x0(%rax,%rax,1) 0.00 : 1808: 24 18 ud2 0.00 : 180a: e9 35 jmp 180a <__journal_refile_buffer+0x14ba> 0.00 : 180c: fe ff ff 0f 0b eb fe mov $0x0,%rsi 0.00 : 1813: 0f 1f 44 00 00 0f 0b mov $0x0,%rdi 0.00 : 181a: eb fe xor %eax,%eax 0.00 : 181c: 0f 1f 40 00 48 callq 1821 <__journal_refile_buffer+0x14d1> 0.00 : 1821: 8b 54 24 30 48 3b 42 mov $0x0,%rdi 0.00 : 1828: 58 0f xor %eax,%eax 0.00 : 182a: 84 89 fc ff ff callq 182f <__journal_refile_buffer+0x14df> 0.00 : 182f: 0f 0b eb fe mov (%r12),%rdx 0.00 : 1833: 0f 1f 44 00 00 jmpq 163b <__journal_refile_buffer+0x12eb> 0.00 : 1838: 0f 0b eb fe mov 0x20(%rbp),%rax 0.00 : 183c: 48 c7 c6 00 00 mov $0xffffffff,%esi 0.00 : 1841: 00 00 48 c7 sub $0x1,%rax 0.00 : 1845: c7 00 00 00 shr $0xb,%rax 0.00 : 1849: 00 31 c0 add $0x1,%esi 0.00 : 184c: e8 00 00 shr %rax 0.00 : 184f: 00 00 jne 1849 <__journal_refile_buffer+0x14f9> 0.00 : 1851: 48 c7 c7 00 00 mov 0x38(%rsp),%rdi 0.00 : 1856: 00 00 31 c0 e8 callq 185b <__journal_refile_buffer+0x150b> 0.00 : 185b: 00 00 00 00 49 jmpq 14f8 <__journal_refile_buffer+0x11a8> 0.00 : 1860: 8b 14 ud2 0.00 : 1862: 24 e9 jmp 1862 <__journal_refile_buffer+0x1512> 0.00 : 1864: 03 fe ud2 0.00 : 1866: ff ff jmp 1866 <__journal_refile_buffer+0x1516> : 1868: 48 8b 45 20 be ff ff nopl 0x0(%rax,%rax,1) : 186f: ff : 1870: ff 48 83 e8 sub $0x18,%rsp : 1874: 01 48 c1 e8 0b mov %rbx,0x8(%rsp) : 1879: 83 c6 01 mov %rdi,%rbx : 187c: 48 d1 e8 mov %rsi,%rdi : 187f: 75 f8 48 8b 7c mov %r12,0x10(%rsp) : 1884: 24 38 e8 00 00 callq 1889 <__journal_refile_buffer+0x1539> : 1889: 00 00 e9 mov %rbx,%rdi : 188c: 98 fc ff mov %rax,%r12 : 188f: ff 0f xor %edx,%edx : 1891: 0b eb fe mov %rax,%rsi : 1894: 0f 0b eb fe 0f callq 13c0 <__journal_refile_buffer+0x1070> Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 66.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000084b0 : 100.00 : 84b0: 53 push %rbx 0.00 : 84e1: 48 retq 0.00 : 84e2: 8b 1f f0 0f ba 2b nopw 0x0(%rax,%rax,1) 0.00 : 84e8: 15 19 c0 mov %rbx,%rdi 0.00 : 84eb: 85 c0 75 4a 8b callq 68b0 0.00 : 84f0: 47 08 85 mov %rbx,%rdi 0.00 : 84f3: c0 7e 34 83 e8 callq 84f8 0.00 : 84f8: 01 85 jmp 84d7 0.00 : 84fa: c0 89 ud2 0.00 : 84fc: 47 08 jmp 84fc 0.00 : 84fe: 75 07 48 83 7f lock btsl $0x15,(%rbx) 0.00 : 8503: 28 00 sbb %eax,%eax 0.00 : 8505: 74 11 test %eax,%eax 0.00 : 8507: 48 8d je 84bf 0.00 : 8509: 43 02 pause 0.00 : 850b: f0 80 63 mov (%rbx),%rax 0.00 : 850e: 02 df 5b c3 66 test $0x200000,%eax 0.00 : 8513: 0f 1f jne 8509 0.00 : 8515: 44 00 jmp 84fe : 8517: 00 48 89 df e8 c0 e3 nopw 0x0(%rax,%rax,1) : 851e: ff ff : 8520: 48 push %rbx : 8521: 89 df e8 mov %rdi,%rbx : 8524: 00 00 00 00 eb lock btsl $0x15,(%rdi) : 8529: dd 0f sbb %eax,%eax : 852b: 0b eb test %eax,%eax : 852d: fe f0 jne 854d : 852f: 0f ba 2b mov %rbx,%rdi : 8532: 15 19 c0 85 c0 callq 68b0 : 8537: 74 b6 f3 90 lea 0x2(%rbx),%rax : 853b: 48 8b 03 a9 00 lock andb $0xdf,0x2(%rbx) : 8540: 00 pop %rbx : 8541: 20 retq : 8542: 00 75 f4 eb e7 lock btsl $0x15,(%rbx) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000019020 : : **/ : s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw, : union ixgbe_atr_hash_dword input, : union ixgbe_atr_hash_dword common, : u8 queue) : { 0.00 : 19020: 48 83 ec 10 sub $0x10,%rsp 20.00 : 19024: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 0.00 : 19029: 48 89 fd mov %rdi,%rbp 0.00 : 1902c: 89 f7 mov %esi,%edi : : /* : * Get the flow_type in order to program FDIRCMD properly : * lowest 2 bits are FDIRCMD.L4TYPE, third lowest bit is FDIRCMD.IPV6 : */ : switch (input.formatted.flow_type) { 0.00 : 1902e: 89 f8 mov %edi,%eax : **/ : s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw, : union ixgbe_atr_hash_dword input, : union ixgbe_atr_hash_dword common, : u8 queue) : { 0.00 : 19030: 89 ce mov %ecx,%esi 0.00 : 19032: 48 89 1c 24 mov %rbx,(%rsp) : : /* : * Get the flow_type in order to program FDIRCMD properly : * lowest 2 bits are FDIRCMD.L4TYPE, third lowest bit is FDIRCMD.IPV6 : */ : switch (input.formatted.flow_type) { 0.00 : 19036: 0f b6 cc movzbl %ah,%ecx 0.00 : 19039: 80 f9 07 cmp $0x7,%cl 0.00 : 1903c: 77 0c ja 1904a 0.00 : 1903e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 19043: 48 d3 e0 shl %cl,%rax 0.00 : 19046: a8 ee test $0xee,%al 0.00 : 19048: 75 16 jne 19060 0.00 : 1904a: b8 fc ff ff ff mov $0xfffffffc,%eax : IXGBE_WRITE_REG64(hw, IXGBE_FDIRHASH, fdirhashcmd); : : hw_dbg(hw, "Tx Queue=%x hash=%x\n", queue, (u32)fdirhashcmd); : : return 0; : } 0.00 : 1904f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 19053: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 19058: 48 83 c4 10 add $0x10,%rsp 0.00 : 1905c: c3 retq 0.00 : 1905d: 0f 1f 00 nopl (%rax) : } : : /* configure FDIRCMD register */ : fdircmd = IXGBE_FDIRCMD_CMD_ADD_FLOW | IXGBE_FDIRCMD_FILTER_UPDATE | : IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN; : fdircmd |= input.formatted.flow_type << IXGBE_FDIRCMD_FLOW_TYPE_SHIFT; 0.00 : 19060: 0f b6 d9 movzbl %cl,%ebx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 0.00 : 19063: 40 0f b6 c6 movzbl %sil,%eax : fdirhashcmd |= ixgbe_atr_compute_sig_hash_82599(input, common); 0.00 : 19067: 89 d6 mov %edx,%esi : } : : /* configure FDIRCMD register */ : fdircmd = IXGBE_FDIRCMD_CMD_ADD_FLOW | IXGBE_FDIRCMD_FILTER_UPDATE | : IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN; : fdircmd |= input.formatted.flow_type << IXGBE_FDIRCMD_FLOW_TYPE_SHIFT; 0.00 : 19069: c1 e3 05 shl $0x5,%ebx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 0.00 : 1906c: c1 e0 10 shl $0x10,%eax : } : : /* configure FDIRCMD register */ : fdircmd = IXGBE_FDIRCMD_CMD_ADD_FLOW | IXGBE_FDIRCMD_FILTER_UPDATE | : IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN; : fdircmd |= input.formatted.flow_type << IXGBE_FDIRCMD_FLOW_TYPE_SHIFT; 0.00 : 1906f: 81 cb 09 88 00 00 or $0x8809,%ebx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 0.00 : 19075: 09 c3 or %eax,%ebx : fdirhashcmd |= ixgbe_atr_compute_sig_hash_82599(input, common); 0.00 : 19077: e8 00 00 00 00 callq 1907c : #define mmiowb() barrier() : : #ifdef CONFIG_X86_64 : : build_mmio_read(readq, "q", unsigned long, "=r", :"memory") : build_mmio_write(writeq, "q", unsigned long, "r", :"memory") 0.00 : 1907c: 48 8b 55 00 mov 0x0(%rbp),%rdx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 20.00 : 19080: 48 c1 e3 20 shl $0x20,%rbx : fdirhashcmd |= ixgbe_atr_compute_sig_hash_82599(input, common); 0.00 : 19084: 89 c0 mov %eax,%eax 0.00 : 19086: 48 09 d8 or %rbx,%rax 0.00 : 19089: 48 81 c2 28 ee 00 00 add $0xee28,%rdx 0.00 : 19090: 48 89 02 mov %rax,(%rdx) 60.00 : 19093: 31 c0 xor %eax,%eax : IXGBE_WRITE_REG64(hw, IXGBE_FDIRHASH, fdirhashcmd); : : hw_dbg(hw, "Tx Queue=%x hash=%x\n", queue, (u32)fdirhashcmd); : : return 0; : } 0.00 : 19095: eb b8 jmp 1904f Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 33.33 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000660 : 16.67 : 660: 48 83 ec 18 sub $0x18,%rsp 0.00 : 694: 48 89 ja 6b0 0.00 : 696: 5c 24 08 48 89 mov $0x1,%ebp 0.00 : 69b: f3 48 mov %ebp,%eax 16.67 : 69d: 89 6c 24 10 83 mov 0x8(%rsp),%rbx 0.00 : 6a2: 7b 68 13 48 89 mov 0x10(%rsp),%rbp 0.00 : 6a7: d6 76 1c 8b add $0x18,%rsp 0.00 : 6ab: 93 retq 0.00 : 6ac: c4 00 00 00 nopl 0x0(%rax) 0.00 : 6b0: 48 8b 83 mov %rsi,%rdx 0.00 : 6b3: d8 00 00 mov %rbx,%rsi 0.00 : 6b6: 00 0f b6 04 10 callq 320 33.33 : 6bb: 83 e0 test %eax,%eax 0.00 : 6bd: 0f c1 mov %eax,%ebp 0.00 : 6bf: e0 02 je 69b 0.00 : 6c1: 83 f8 13 cmp $0x2,%eax 0.00 : 6c4: 77 1a je 69b 0.00 : 6c6: bd 01 00 00 movzbl 0x7c(%rbx),%eax 0.00 : 6ca: 00 89 e8 48 8b 5c 24 mov 0x88(%rbx),%rsi 0.00 : 6d1: 08 48 8b shr $0x5,%al 0.00 : 6d4: 6c 24 10 test %rsi,%rsi 0.00 : 6d7: 48 83 je 69b 0.00 : 6d9: c4 18 c3 movzbl %al,%eax 0.00 : 6dc: 0f 1f 40 cmp $0x2,%eax 16.67 : 6df: 00 48 89 seta %al 0.00 : 6e2: f2 48 89 movzbl %al,%eax 0.00 : 6e5: de e8 test %eax,%eax 0.00 : 6e7: 65 fc mov %eax,%eax 0.00 : 6e9: ff ff 85 c0 89 c5 74 lea 0x0(,%rax,8),%rcx 0.00 : 6f0: da 0.00 : 6f1: 83 f8 02 sete %dl 0.00 : 6f4: 74 d5 0f b6 shl $0x6,%rax 0.00 : 6f8: 43 7c 48 and $0x1,%edx 0.00 : 6fb: 8b b3 88 sub %rcx,%rax 0.00 : 6fe: 00 00 00 c0 lea (%rsi,%rax,1),%rcx 0.00 : 702: e8 05 48 85 f6 74 c2 lea 0x0(,%rdx,8),%rax 0.00 : 709: 0f 0.00 : 70a: b6 c0 83 f8 shl $0x6,%rdx 0.00 : 70e: 02 0f 97 sub %rax,%rdx 0.00 : 711: c0 0f b6 mov 0x18(%rcx),%eax 0.00 : 714: c0 85 c0 89 lea (%rsi,%rdx,1),%rdx 0.00 : 718: c0 48 8d cmp 0x2c(%rdx),%eax 0.00 : 71b: 0c c5 jne 735 16.67 : 71d: 00 00 00 00 cmpb $0x1,0x3e(%rcx) 0.00 : 721: 0f 94 c2 48 c1 e0 je 69b 0.00 : 727: 06 83 e2 01 movzwl 0x28(%rcx),%eax 0.00 : 72b: 48 29 c8 48 cmp 0x3c(%rdx),%ax 0.00 : 72f: 8d 0c 06 48 8d 04 je 69b 0.00 : 735: d5 00 00 mov %rbx,%rdi 0.00 : 738: 00 00 48 c1 e2 callq 73d 0.00 : 73d: 06 48 test %eax,%eax 0.00 : 73f: 29 c2 8b 41 18 mov $0x0,%eax 0.00 : 744: 48 8d 14 cmovne %eax,%ebp 0.00 : 747: 16 3b 42 2c 75 jmpq 69b : 74c: 18 80 79 3e nopl 0x0(%rax) : 750: 01 0f 84 74 sub $0x18,%rsp : 754: ff ff ff 0f mov %rbx,(%rsp) : 758: b7 41 28 66 3b mov %rbp,0x8(%rsp) : 75d: 42 3c 0f mov %rsi,%rbx : 760: 84 66 ff ff ff mov %r12,0x10(%rsp) : 765: 48 89 df e8 00 00 mov 0xc4(%rsi),%esi : 76b: 00 00 85 c0 b8 00 00 mov 0xd8(%rbx),%rax : 772: 00 00 0f 45 e8 mov 0x10(%rax,%rsi,1),%r12d : 777: e9 4f ff mov %rbx,%rsi : 77a: ff ff 0f 1f 40 callq 320 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469de0 : 100.00 : 469de0: ff 25 72 d7 6f 00 jmpq *0x6fd772(%rip) # b67558 <_GLOBAL_OFFSET_TABLE_+0x558> 0.00 : 469de6: 68 a8 00 00 00 pushq $0xa8 0.00 : 469deb: e9 60 f5 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:685 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:703 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:729 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:731 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:737 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000470660 : : */ : HeapTuple : heap_form_tuple(TupleDesc tupleDescriptor, : Datum *values, : bool *isnull) : { 0.00 : 470660: 55 push %rbp 0.00 : 470661: 48 89 e5 mov %rsp,%rbp 0.00 : 470664: 41 57 push %r15 0.00 : 470666: 49 89 d7 mov %rdx,%r15 0.00 : 470669: 41 56 push %r14 0.00 : 47066b: 49 89 fe mov %rdi,%r14 0.00 : 47066e: 41 55 push %r13 0.00 : 470670: 41 54 push %r12 0.00 : 470672: 53 push %rbx 0.00 : 470673: 48 83 ec 28 sub $0x28,%rsp 0.00 : 470677: 48 89 75 c0 mov %rsi,-0x40(%rbp) : HeapTupleHeader td; /* tuple data */ : Size len, : data_len; : int hoff; : bool hasnull = false; : int numberOfAttributes = tupleDescriptor->natts; 0.00 : 47067b: 44 8b 2f mov (%rdi),%r13d : int i; : : if (numberOfAttributes > MaxTupleAttributeNumber) 0.00 : 47067e: 41 81 fd 80 06 00 00 cmp $0x680,%r13d 0.00 : 470685: 0f 8f 2b 01 00 00 jg 4707b6 : numberOfAttributes, MaxTupleAttributeNumber))); : : /* : * Check for nulls : */ : for (i = 0; i < numberOfAttributes; i++) 0.00 : 47068b: 45 85 ed test %r13d,%r13d 0.00 : 47068e: 7e 28 jle 4706b8 : { : if (isnull[i]) 0.00 : 470690: 48 89 d1 mov %rdx,%rcx 0.00 : 470693: 31 d2 xor %edx,%edx 0.00 : 470695: 41 80 3f 00 cmpb $0x0,(%r15) 0.00 : 470699: 74 15 je 4706b0 0.00 : 47069b: e9 00 01 00 00 jmpq 4707a0 0.00 : 4706a0: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 4706a4: 48 83 c1 01 add $0x1,%rcx 0.00 : 4706a8: 84 c0 test %al,%al 0.00 : 4706aa: 0f 85 f0 00 00 00 jne 4707a0 : numberOfAttributes, MaxTupleAttributeNumber))); : : /* : * Check for nulls : */ : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:685 20.00 : 4706b0: 83 c2 01 add $0x1,%edx 0.00 : 4706b3: 41 39 d5 cmp %edx,%r13d 0.00 : 4706b6: 7f e8 jg 4706a0 : * Determine total space needed : */ : len = offsetof(HeapTupleHeaderData, t_bits); : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); 0.00 : 4706b8: ba 17 00 00 00 mov $0x17,%edx 0.00 : 4706bd: c6 45 d7 00 movb $0x0,-0x29(%rbp) : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:703 20.00 : 4706c1: 41 80 7e 20 00 cmpb $0x0,0x20(%r14) 0.00 : 4706c6: 48 8d 42 04 lea 0x4(%rdx),%rax : : hoff = len = MAXALIGN(len); /* align user data safely */ : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); 0.00 : 4706ca: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 4706ce: 4c 89 f7 mov %r14,%rdi : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); 0.00 : 4706d1: 48 0f 45 d0 cmovne %rax,%rdx : : hoff = len = MAXALIGN(len); /* align user data safely */ 0.00 : 4706d5: 48 8d 5a 07 lea 0x7(%rdx),%rbx : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); 0.00 : 4706d9: 4c 89 fa mov %r15,%rdx : len += BITMAPLEN(numberOfAttributes); : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); : : hoff = len = MAXALIGN(len); /* align user data safely */ 0.00 : 4706dc: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 4706e0: 89 5d d0 mov %ebx,-0x30(%rbp) : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); 0.00 : 4706e3: e8 88 fc ff ff callq 470370 : : len += data_len; 0.00 : 4706e8: 48 01 c3 add %rax,%rbx : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); : : hoff = len = MAXALIGN(len); /* align user data safely */ : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); 0.00 : 4706eb: 48 89 45 c8 mov %rax,-0x38(%rbp) : : /* : * Allocate and zero the space needed. Note that the tuple body and : * HeapTupleData management structure are allocated in one chunk. : */ : tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + len); 0.00 : 4706ef: 48 8d 7b 18 lea 0x18(%rbx),%rdi 0.00 : 4706f3: e8 78 88 32 00 callq 798f70 : tuple->t_data = td = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE); 0.00 : 4706f8: 4c 8d 48 18 lea 0x18(%rax),%r9 : /* : * And fill in the information. Note we fill the Datum fields even though : * this tuple may never become a Datum. This lets HeapTupleHeaderGetDatum : * identify the tuple type if needed. : */ : tuple->t_len = len; 0.00 : 4706fc: 89 18 mov %ebx,(%rax) : ItemPointerSetInvalid(&(tuple->t_self)); : tuple->t_tableOid = InvalidOid; : : HeapTupleHeaderSetDatumLength(td, len); 0.00 : 4706fe: c1 e3 02 shl $0x2,%ebx : * And fill in the information. Note we fill the Datum fields even though : * this tuple may never become a Datum. This lets HeapTupleHeaderGetDatum : * identify the tuple type if needed. : */ : tuple->t_len = len; : ItemPointerSetInvalid(&(tuple->t_self)); 0.00 : 470701: 66 c7 40 04 ff ff movw $0xffff,0x4(%rax) 0.00 : 470707: 66 c7 40 06 ff ff movw $0xffff,0x6(%rax) : : /* : * Allocate and zero the space needed. Note that the tuple body and : * HeapTupleData management structure are allocated in one chunk. : */ : tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + len); 0.00 : 47070d: 49 89 c4 mov %rax,%r12 : tuple->t_data = td = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE); 0.00 : 470710: 4c 89 48 10 mov %r9,0x10(%rax) : * And fill in the information. Note we fill the Datum fields even though : * this tuple may never become a Datum. This lets HeapTupleHeaderGetDatum : * identify the tuple type if needed. : */ : tuple->t_len = len; : ItemPointerSetInvalid(&(tuple->t_self)); 0.00 : 470714: 66 c7 40 08 00 00 movw $0x0,0x8(%rax) : tuple->t_tableOid = InvalidOid; 0.00 : 47071a: c7 40 0c 00 00 00 00 movl $0x0,0xc(%rax) : : HeapTupleHeaderSetDatumLength(td, len); 0.00 : 470721: 89 58 18 mov %ebx,0x18(%rax) : HeapTupleHeaderSetTypeId(td, tupleDescriptor->tdtypeid); 0.00 : 470724: 41 8b 46 18 mov 0x18(%r14),%eax 0.00 : 470728: 41 89 41 08 mov %eax,0x8(%r9) : HeapTupleHeaderSetTypMod(td, tupleDescriptor->tdtypmod); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:729 20.00 : 47072c: 41 8b 46 1c mov 0x1c(%r14),%eax 0.00 : 470730: 41 89 41 04 mov %eax,0x4(%r9) : : HeapTupleHeaderSetNatts(td, numberOfAttributes); 0.00 : 470734: 41 0f b7 41 12 movzwl 0x12(%r9),%eax 0.00 : 470739: 66 25 00 f8 and $0xf800,%ax 0.00 : 47073d: 44 09 e8 or %r13d,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:731 20.00 : 470740: 66 41 89 41 12 mov %ax,0x12(%r9) : td->t_hoff = hoff; 0.00 : 470745: 0f b6 45 d0 movzbl -0x30(%rbp),%eax 0.00 : 470749: 41 88 41 16 mov %al,0x16(%r9) : : if (tupleDescriptor->tdhasoid) /* else leave infomask = 0 */ 0.00 : 47074d: 41 80 7e 20 00 cmpb $0x0,0x20(%r14) 0.00 : 470752: 74 07 je 47075b : td->t_infomask = HEAP_HASOID; 0.00 : 470754: 66 41 c7 41 14 08 00 movw $0x8,0x14(%r9) : : heap_fill_tuple(tupleDescriptor, 0.00 : 47075b: 48 63 4d d0 movslq -0x30(%rbp),%rcx 0.00 : 47075f: 31 d2 xor %edx,%edx 0.00 : 470761: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 470765: 49 8d 41 17 lea 0x17(%r9),%rax 0.00 : 470769: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.00 : 47076d: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 470771: 4c 89 f7 mov %r14,%rdi 0.00 : 470774: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 470778: 49 8d 0c 09 lea (%r9,%rcx,1),%rcx 0.00 : 47077c: 49 83 c1 14 add $0x14,%r9 0.00 : 470780: 48 89 14 24 mov %rdx,(%rsp) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:737 20.00 : 470784: 4c 89 fa mov %r15,%rdx 0.00 : 470787: e8 d4 f7 ff ff callq 46ff60 : data_len, : &td->t_infomask, : (hasnull ? td->t_bits : NULL)); : : return tuple; : } 0.00 : 47078c: 48 83 c4 28 add $0x28,%rsp 0.00 : 470790: 4c 89 e0 mov %r12,%rax 0.00 : 470793: 5b pop %rbx 0.00 : 470794: 41 5c pop %r12 0.00 : 470796: 41 5d pop %r13 0.00 : 470798: 41 5e pop %r14 0.00 : 47079a: 41 5f pop %r15 0.00 : 47079c: c9 leaveq 0.00 : 47079d: c3 retq 0.00 : 47079e: 66 90 xchg %ax,%ax : * Determine total space needed : */ : len = offsetof(HeapTupleHeaderData, t_bits); : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); 0.00 : 4707a0: 41 8d 45 07 lea 0x7(%r13),%eax 0.00 : 4707a4: c6 45 d7 01 movb $0x1,-0x29(%rbp) 0.00 : 4707a8: c1 f8 03 sar $0x3,%eax 0.00 : 4707ab: 48 98 cltq 0.00 : 4707ad: 48 8d 50 17 lea 0x17(%rax),%rdx 0.00 : 4707b1: e9 0b ff ff ff jmpq 4706c1 : bool hasnull = false; : int numberOfAttributes = tupleDescriptor->natts; : int i; : : if (numberOfAttributes > MaxTupleAttributeNumber) : ereport(ERROR, 0.00 : 4707b6: 45 31 c0 xor %r8d,%r8d 0.00 : 4707b9: b9 00 f7 7a 00 mov $0x7af700,%ecx 0.00 : 4707be: ba a8 02 00 00 mov $0x2a8,%edx 0.00 : 4707c3: be f4 f5 7a 00 mov $0x7af5f4,%esi 0.00 : 4707c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4707cd: e8 ee a2 30 00 callq 77aac0 0.00 : 4707d2: 84 c0 test %al,%al 0.00 : 4707d4: 74 2b je 470801 0.00 : 4707d6: 44 89 ee mov %r13d,%esi 0.00 : 4707d9: ba 80 06 00 00 mov $0x680,%edx 0.00 : 4707de: bf e0 f7 7a 00 mov $0x7af7e0,%edi 0.00 : 4707e3: 31 c0 xor %eax,%eax 0.00 : 4707e5: e8 b6 c0 30 00 callq 77c8a0 0.00 : 4707ea: bf 05 01 04 01 mov $0x1040105,%edi 0.00 : 4707ef: 89 c3 mov %eax,%ebx 0.00 : 4707f1: e8 5a c5 30 00 callq 77cd50 0.00 : 4707f6: 89 de mov %ebx,%esi 0.00 : 4707f8: 89 c7 mov %eax,%edi 0.00 : 4707fa: 31 c0 xor %eax,%eax 0.00 : 4707fc: e8 df 9d 30 00 callq 77a5e0 0.00 : 470801: e8 ca 8c ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:174 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:221 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:368 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:377 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:377 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049ebc0 : : * latestRemovedXid. : */ : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { 0.00 : 49ebc0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:174 14.29 : 49ebc1: 48 89 e5 mov %rsp,%rbp 0.00 : 49ebc4: 41 57 push %r15 0.00 : 49ebc6: 41 56 push %r14 0.00 : 49ebc8: 41 55 push %r13 0.00 : 49ebca: 41 54 push %r12 0.00 : 49ebcc: 53 push %rbx 0.00 : 49ebcd: 48 81 ec 98 0d 00 00 sub $0xd98,%rsp : int ndeleted = 0; : Page page = BufferGetPage(buffer); 0.00 : 49ebd4: 85 f6 test %esi,%esi : * latestRemovedXid. : */ : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { 0.00 : 49ebd6: 48 89 bd 98 f2 ff ff mov %rdi,-0xd68(%rbp) 0.00 : 49ebdd: 89 b5 94 f2 ff ff mov %esi,-0xd6c(%rbp) 0.00 : 49ebe3: 89 95 90 f2 ff ff mov %edx,-0xd70(%rbp) 0.00 : 49ebe9: 4c 89 85 80 f2 ff ff mov %r8,-0xd80(%rbp) 0.00 : 49ebf0: 88 8d 8f f2 ff ff mov %cl,-0xd71(%rbp) : int ndeleted = 0; : Page page = BufferGetPage(buffer); 0.00 : 49ebf6: 0f 88 a4 06 00 00 js 49f2a0 0.00 : 49ebfc: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49ec02: 48 8b 15 ef 0e 72 00 mov 0x720eef(%rip),%rdx # bbfaf8 0.00 : 49ec09: 83 e8 01 sub $0x1,%eax 0.00 : 49ec0c: 48 98 cltq 0.00 : 49ec0e: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49ec12: 48 01 d0 add %rdx,%rax 0.00 : 49ec15: 48 89 85 a8 f2 ff ff mov %rax,-0xd58(%rbp) : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; 0.00 : 49ec1c: 48 8b 8d 80 f2 ff ff mov -0xd80(%rbp),%rcx : * First, initialize the new pd_prune_xid value to zero (indicating no : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; 0.00 : 49ec23: c7 85 10 f3 ff ff 00 movl $0x0,-0xcf0(%rbp) 0.00 : 49ec2a: 00 00 00 : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); 0.00 : 49ec2d: 48 8d bd 10 f3 ff ff lea -0xcf0(%rbp),%rdi 0.00 : 49ec34: 48 81 c7 2c 09 00 00 add $0x92c,%rdi : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; 0.00 : 49ec3b: 8b 01 mov (%rcx),%eax : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); 0.00 : 49ec3d: b9 24 00 00 00 mov $0x24,%ecx : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; 0.00 : 49ec42: c7 85 20 f3 ff ff 00 movl $0x0,-0xce0(%rbp) 0.00 : 49ec49: 00 00 00 0.00 : 49ec4c: c7 85 1c f3 ff ff 00 movl $0x0,-0xce4(%rbp) 0.00 : 49ec53: 00 00 00 0.00 : 49ec56: c7 85 18 f3 ff ff 00 movl $0x0,-0xce8(%rbp) 0.00 : 49ec5d: 00 00 00 : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; 0.00 : 49ec60: 89 85 14 f3 ff ff mov %eax,-0xcec(%rbp) : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); 0.00 : 49ec66: 31 c0 xor %eax,%eax 0.00 : 49ec68: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 49ec6b: c7 07 00 00 00 00 movl $0x0,(%rdi) : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 49ec71: 48 8b 9d a8 f2 ff ff mov -0xd58(%rbp),%rbx 0.00 : 49ec78: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 49ec7c: 66 83 f8 18 cmp $0x18,%ax 0.00 : 49ec80: 0f 87 fa 00 00 00 ja 49ed80 : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49ec86: c7 85 a4 f2 ff ff 00 movl $0x0,-0xd5c(%rbp) 0.00 : 49ec8d: 00 00 00 : OldestXmin, : &prstate); : } : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:221 14.29 : 49ec90: 8b 05 06 b4 71 00 mov 0x71b406(%rip),%eax # bba09c : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49ec96: 8b 95 18 f3 ff ff mov -0xce8(%rbp),%edx : OldestXmin, : &prstate); : } : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); 0.00 : 49ec9c: 83 c0 01 add $0x1,%eax : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49ec9f: 85 d2 test %edx,%edx : OldestXmin, : &prstate); : } : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); 0.00 : 49eca1: 89 05 f5 b3 71 00 mov %eax,0x71b3f5(%rip) # bba09c : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49eca7: 0f 8e e3 04 00 00 jle 49f190 0.00 : 49ecad: 8b 8d 1c f3 ff ff mov -0xce4(%rbp),%ecx 0.00 : 49ecb3: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax : { : /* : * Apply the planned item changes, then repair page fragmentation, and : * update the page's hint bit about whether it has free line pointers. : */ : heap_page_prune_execute(buffer, 0.00 : 49ecb9: 48 8d 9d 10 f3 ff ff lea -0xcf0(%rbp),%rbx 0.00 : 49ecc0: 4c 8d a5 10 f3 ff ff lea -0xcf0(%rbp),%r12 0.00 : 49ecc7: 4c 8d ad 10 f3 ff ff lea -0xcf0(%rbp),%r13 0.00 : 49ecce: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49ecd4: 41 89 c8 mov %ecx,%r8d 0.00 : 49ecd7: 89 04 24 mov %eax,(%rsp) 0.00 : 49ecda: 48 81 c3 e6 06 00 00 add $0x6e6,%rbx 0.00 : 49ece1: 49 81 c4 a0 04 00 00 add $0x4a0,%r12 0.00 : 49ece8: 49 83 c5 14 add $0x14,%r13 0.00 : 49ecec: 49 89 d9 mov %rbx,%r9 0.00 : 49ecef: 4c 89 e1 mov %r12,%rcx 0.00 : 49ecf2: 4c 89 ee mov %r13,%rsi 0.00 : 49ecf5: e8 e6 fd ff ff callq 49eae0 : : /* : * Update the page's pd_prune_xid field to either zero, or the lowest : * XID of any soon-prunable tuple. : */ : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49ecfa: 48 8b b5 a8 f2 ff ff mov -0xd58(%rbp),%rsi 0.00 : 49ed01: 8b 85 10 f3 ff ff mov -0xcf0(%rbp),%eax : /* : * Also clear the "page is full" flag, since there's no point in : * repeating the prune/defrag process until something else happens to : * the page. : */ : PageClearFull(page); 0.00 : 49ed07: 66 83 66 0a fd andw $0xfffd,0xa(%rsi) : : /* : * Update the page's pd_prune_xid field to either zero, or the lowest : * XID of any soon-prunable tuple. : */ : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49ed0c: 89 46 14 mov %eax,0x14(%rsi) : * repeating the prune/defrag process until something else happens to : * the page. : */ : PageClearFull(page); : : MarkBufferDirty(buffer); 0.00 : 49ed0f: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49ed15: e8 d6 5a 1d 00 callq 6747f0 : : /* : * Emit a WAL HEAP_CLEAN record showing what we did : */ : if (RelationNeedsWAL(relation)) 0.00 : 49ed1a: 48 8b 95 98 f2 ff ff mov -0xd68(%rbp),%rdx 0.00 : 49ed21: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 49ed25: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49ed29: 0f 84 69 08 00 00 je 49f598 : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); : } : } : : END_CRIT_SECTION(); 0.00 : 49ed2f: 8b 05 67 b3 71 00 mov 0x71b367(%rip),%eax # bba09c 0.00 : 49ed35: 83 e8 01 sub $0x1,%eax : /* : * If requested, report the number of tuples reclaimed to pgstats. This is : * ndeleted minus ndead, because we don't want to count a now-DEAD root : * item as a deletion for this purpose. : */ : if (report_stats && ndeleted > prstate.ndead) 0.00 : 49ed38: 80 bd 8f f2 ff ff 00 cmpb $0x0,-0xd71(%rbp) : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); : } : } : : END_CRIT_SECTION(); 0.00 : 49ed3f: 89 05 57 b3 71 00 mov %eax,0x71b357(%rip) # bba09c : /* : * If requested, report the number of tuples reclaimed to pgstats. This is : * ndeleted minus ndead, because we don't want to count a now-DEAD root : * item as a deletion for this purpose. : */ : if (report_stats && ndeleted > prstate.ndead) 0.00 : 49ed45: 74 12 je 49ed59 0.00 : 49ed47: 8b 85 1c f3 ff ff mov -0xce4(%rbp),%eax 0.00 : 49ed4d: 3b 85 a4 f2 ff ff cmp -0xd5c(%rbp),%eax 0.00 : 49ed53: 0f 8c b7 05 00 00 jl 49f310 : pgstat_update_heap_dead_tuples(relation, ndeleted - prstate.ndead); : : *latestRemovedXid = prstate.latestRemovedXid; 0.00 : 49ed59: 8b 85 14 f3 ff ff mov -0xcec(%rbp),%eax 0.00 : 49ed5f: 48 8b b5 80 f2 ff ff mov -0xd80(%rbp),%rsi 0.00 : 49ed66: 89 06 mov %eax,(%rsi) : * One possibility is to leave "fillfactor" worth of space in this page : * and update FSM with the remaining space. : */ : : return ndeleted; : } 0.00 : 49ed68: 8b 85 a4 f2 ff ff mov -0xd5c(%rbp),%eax 0.00 : 49ed6e: 48 81 c4 98 0d 00 00 add $0xd98,%rsp 0.00 : 49ed75: 5b pop %rbx 0.00 : 49ed76: 41 5c pop %r12 0.00 : 49ed78: 41 5d pop %r13 0.00 : 49ed7a: 41 5e pop %r14 0.00 : 49ed7c: 41 5f pop %r15 0.00 : 49ed7e: c9 leaveq 0.00 : 49ed7f: c3 retq : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 49ed80: 0f b7 c0 movzwl %ax,%eax 0.00 : 49ed83: 48 83 e8 18 sub $0x18,%rax 0.00 : 49ed87: 48 c1 e8 02 shr $0x2,%rax : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49ed8b: 66 85 c0 test %ax,%ax : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 49ed8e: 66 89 85 b0 f2 ff ff mov %ax,-0xd50(%rbp) : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49ed95: 0f 84 eb fe ff ff je 49ec86 : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49ed9b: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49eda1: 48 8d b5 10 f3 ff ff lea -0xcf0(%rbp),%rsi : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49eda8: c7 85 a4 f2 ff ff 00 movl $0x0,-0xd5c(%rbp) 0.00 : 49edaf: 00 00 00 0.00 : 49edb2: 41 be 01 00 00 00 mov $0x1,%r14d : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49edb8: 48 83 c6 04 add $0x4,%rsi : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49edbc: f7 d0 not %eax : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49edbe: 48 89 b5 68 f2 ff ff mov %rsi,-0xd98(%rbp) : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49edc5: 48 98 cltq 0.00 : 49edc7: 48 c1 e0 03 shl $0x3,%rax 0.00 : 49edcb: 48 89 85 00 f3 ff ff mov %rax,-0xd00(%rbp) 0.00 : 49edd2: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49edd8: 83 e8 01 sub $0x1,%eax 0.00 : 49eddb: 48 98 cltq 0.00 : 49eddd: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49ede1: 48 89 85 f8 f2 ff ff mov %rax,-0xd08(%rbp) 0.00 : 49ede8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49edef: 00 : offnum = OffsetNumberNext(offnum)) : { : ItemId itemid; : : /* Ignore items already processed as part of an earlier chain */ : if (prstate.marked[offnum]) 0.00 : 49edf0: 41 0f b7 c6 movzwl %r14w,%eax 0.00 : 49edf4: 48 89 85 78 f2 ff ff mov %rax,-0xd88(%rbp) 0.00 : 49edfb: 80 bc 05 3c fc ff ff cmpb $0x0,-0x3c4(%rbp,%rax,1) 0.00 : 49ee02: 00 0.00 : 49ee03: 0f 85 b7 01 00 00 jne 49efc0 : continue; : : /* Nothing to do if slot is empty or already dead */ : itemid = PageGetItemId(page, offnum); : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) 0.00 : 49ee09: 48 8b 8d a8 f2 ff ff mov -0xd58(%rbp),%rcx : /* Ignore items already processed as part of an earlier chain */ : if (prstate.marked[offnum]) : continue; : : /* Nothing to do if slot is empty or already dead */ : itemid = PageGetItemId(page, offnum); 0.00 : 49ee10: 48 8d 50 ff lea -0x1(%rax),%rdx : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) 0.00 : 49ee14: 8b 44 81 14 mov 0x14(%rcx,%rax,4),%eax 0.00 : 49ee18: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49ee1d: 0f 84 9d 01 00 00 je 49efc0 0.00 : 49ee23: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 49ee28: 0f 84 92 01 00 00 je 49efc0 : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49ee2e: 8b 8d 94 f2 ff ff mov -0xd6c(%rbp),%ecx 0.00 : 49ee34: 85 c9 test %ecx,%ecx 0.00 : 49ee36: 0f 88 84 04 00 00 js 49f2c0 0.00 : 49ee3c: 48 8b b5 f8 f2 ff ff mov -0xd08(%rbp),%rsi 0.00 : 49ee43: 48 03 35 ae 0c 72 00 add 0x720cae(%rip),%rsi # bbfaf8 0.00 : 49ee4a: 48 89 b5 f0 f2 ff ff mov %rsi,-0xd10(%rbp) : TransactionId priorXmax = InvalidTransactionId; : ItemId rootlp; : HeapTupleHeader htup; : OffsetNumber latestdead = InvalidOffsetNumber, : maxoff = PageGetMaxOffsetNumber(dp), 0.00 : 49ee51: 48 8b 8d f0 f2 ff ff mov -0xd10(%rbp),%rcx 0.00 : 49ee58: 0f b7 41 0c movzwl 0xc(%rcx),%eax 0.00 : 49ee5c: 66 c7 85 d0 f2 ff ff movw $0x0,-0xd30(%rbp) 0.00 : 49ee63: 00 00 0.00 : 49ee65: 66 83 f8 18 cmp $0x18,%ax 0.00 : 49ee69: 0f 87 01 03 00 00 ja 49f170 : OffsetNumber chainitems[MaxHeapTuplesPerPage]; : int nchain = 0, : i; : HeapTupleData tup; : : tup.t_tableOid = RelationGetRelid(relation); 0.00 : 49ee6f: 48 8b 9d 98 f2 ff ff mov -0xd68(%rbp),%rbx : rootlp = PageGetItemId(dp, rootoffnum); : : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ee76: 48 8b b5 f0 f2 ff ff mov -0xd10(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:368 14.29 : 49ee7d: 48 83 c2 04 add $0x4,%rdx : OffsetNumber chainitems[MaxHeapTuplesPerPage]; : int nchain = 0, : i; : HeapTupleData tup; : : tup.t_tableOid = RelationGetRelid(relation); 0.00 : 49ee81: 8b 4b 40 mov 0x40(%rbx),%ecx : rootlp = PageGetItemId(dp, rootoffnum); : : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ee84: 48 89 95 70 f2 ff ff mov %rdx,-0xd90(%rbp) : OffsetNumber chainitems[MaxHeapTuplesPerPage]; : int nchain = 0, : i; : HeapTupleData tup; : : tup.t_tableOid = RelationGetRelid(relation); 0.00 : 49ee8b: 89 4d bc mov %ecx,-0x44(%rbp) : rootlp = PageGetItemId(dp, rootoffnum); : : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ee8e: 8b 44 96 08 mov 0x8(%rsi,%rdx,4),%eax 0.00 : 49ee92: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49ee97: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49ee9c: 0f 84 2e 05 00 00 je 49f3d0 0.00 : 49eea2: 45 89 f5 mov %r14d,%r13d 0.00 : 49eea5: 66 c7 85 0e f3 ff ff movw $0x0,-0xcf2(%rbp) 0.00 : 49eeac: 00 00 0.00 : 49eeae: c7 85 ec f2 ff ff 00 movl $0x0,-0xd14(%rbp) 0.00 : 49eeb5: 00 00 00 0.00 : 49eeb8: 45 31 ff xor %r15d,%r15d 0.00 : 49eebb: c7 85 08 f3 ff ff 01 movl $0x1,-0xcf8(%rbp) 0.00 : 49eec2: 00 00 00 : ItemId lp; : bool tupdead, : recent_dead; : : /* Some sanity checks */ : if (offnum < FirstOffsetNumber || offnum > maxoff) 0.00 : 49eec5: 66 45 85 ed test %r13w,%r13w : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49eec9: 44 89 bd cc f2 ff ff mov %r15d,-0xd34(%rbp) : ItemId lp; : bool tupdead, : recent_dead; : : /* Some sanity checks */ : if (offnum < FirstOffsetNumber || offnum > maxoff) 0.00 : 49eed0: 0f 85 0a 01 00 00 jne 49efe0 : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49eed6: 44 0f b7 ad 0e f3 ff movzwl -0xcf2(%rbp),%r13d 0.00 : 49eedd: ff : /* : * If we found a DEAD tuple in the chain, adjust the HOT chain so that all : * the DEAD tuples at the start of the chain are removed and the root line : * pointer is appropriately redirected. : */ : if (OffsetNumberIsValid(latestdead)) 0.00 : 49eede: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 49eee2: 66 3d ff 07 cmp $0x7ff,%ax 0.00 : 49eee6: 0f 87 f4 03 00 00 ja 49f2e0 : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49eeec: 83 bd cc f2 ff ff 01 cmpl $0x1,-0xd34(%rbp) 0.00 : 49eef3: 0f 8e 19 07 00 00 jle 49f612 0.00 : 49eef9: 66 44 3b ad 60 fd ff cmp -0x2a0(%rbp),%r13w 0.00 : 49ef00: ff 0.00 : 49ef01: 0f 84 0b 07 00 00 je 49f612 0.00 : 49ef07: 8b b5 20 f3 ff ff mov -0xce0(%rbp),%esi 0.00 : 49ef0d: 48 8d 8d 62 fd ff ff lea -0x29e(%rbp),%rcx 0.00 : 49ef14: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 49ef1a: eb 11 jmp 49ef2d 0.00 : 49ef1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 49ef20: 48 83 c1 02 add $0x2,%rcx 0.00 : 49ef24: 66 41 39 d5 cmp %dx,%r13w 0.00 : 49ef28: 74 2b je 49ef55 0.00 : 49ef2a: 41 89 f8 mov %edi,%r8d : { : heap_prune_record_unused(prstate, chainitems[i]); 0.00 : 49ef2d: 0f b7 11 movzwl (%rcx),%edx : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49ef30: 48 63 c6 movslq %esi,%rax : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49ef33: 41 8d 78 01 lea 0x1(%r8),%edi : * latestRemovedXid. : */ : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { 0.00 : 49ef37: 83 c6 01 add $0x1,%esi : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49ef3a: 66 89 94 45 f6 f9 ff mov %dx,-0x60a(%rbp,%rax,2) 0.00 : 49ef41: ff : prstate->nunused++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49ef42: 0f b7 c2 movzwl %dx,%eax 0.00 : 49ef45: c6 84 05 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rax,1) 0.00 : 49ef4c: 01 : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49ef4d: 3b bd cc f2 ff ff cmp -0xd34(%rbp),%edi 0.00 : 49ef53: 7c cb jl 49ef20 0.00 : 49ef55: 89 b5 20 f3 ff ff mov %esi,-0xce0(%rbp) 0.00 : 49ef5b: 44 89 c2 mov %r8d,%edx : /* : * If the root entry had been a normal tuple, we are deleting it, so : * count it in the result. But changing a redirect (even to DEAD : * state) doesn't count. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ef5e: 48 8b 8d 70 f2 ff ff mov -0xd90(%rbp),%rcx 0.00 : 49ef65: 48 8b 9d f0 f2 ff ff mov -0xd10(%rbp),%rbx : ndeleted++; 0.00 : 49ef6c: 83 c2 01 add $0x1,%edx : /* : * If the root entry had been a normal tuple, we are deleting it, so : * count it in the result. But changing a redirect (even to DEAD : * state) doesn't count. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ef6f: 8b 44 8b 08 mov 0x8(%rbx,%rcx,4),%eax 0.00 : 49ef73: 25 00 80 01 00 and $0x18000,%eax : ndeleted++; 0.00 : 49ef78: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49ef7d: 44 0f 44 c2 cmove %edx,%r8d : /* : * If the DEAD tuple is at the end of the chain, the entire chain is : * dead and the root line pointer can be marked dead. Otherwise just : * redirect the root to the correct chain member. : */ : if (i >= nchain) 0.00 : 49ef81: 39 bd cc f2 ff ff cmp %edi,-0xd34(%rbp) 0.00 : 49ef87: 0f 8f b3 05 00 00 jg 49f540 : /* Record item pointer to be marked dead */ : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; 0.00 : 49ef8d: 48 63 85 1c f3 ff ff movslq -0xce4(%rbp),%rax 0.00 : 49ef94: 66 44 89 b4 45 b0 f7 mov %r14w,-0x850(%rbp,%rax,2) 0.00 : 49ef9b: ff ff : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49ef9d: 48 8b b5 78 f2 ff ff mov -0xd88(%rbp),%rsi : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; : prstate->ndead++; 0.00 : 49efa4: 83 85 1c f3 ff ff 01 addl $0x1,-0xce4(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49efab: c6 84 35 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rsi,1) 0.00 : 49efb2: 01 : itemid = PageGetItemId(page, offnum); : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) : continue; : : /* Process this item or chain of items */ : ndeleted += heap_prune_chain(relation, buffer, offnum, 0.00 : 49efb3: 44 01 85 a4 f2 ff ff add %r8d,-0xd5c(%rbp) 0.00 : 49efba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49efc0: 41 83 c6 01 add $0x1,%r14d : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49efc4: 66 44 39 b5 b0 f2 ff cmp %r14w,-0xd50(%rbp) 0.00 : 49efcb: ff 0.00 : 49efcc: 0f 83 1e fe ff ff jae 49edf0 0.00 : 49efd2: e9 b9 fc ff ff jmpq 49ec90 0.00 : 49efd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49efde: 00 00 : ItemId lp; : bool tupdead, : recent_dead; : : /* Some sanity checks */ : if (offnum < FirstOffsetNumber || offnum > maxoff) 0.00 : 49efe0: 66 44 3b ad d0 f2 ff cmp -0xd30(%rbp),%r13w 0.00 : 49efe7: ff 0.00 : 49efe8: 0f 87 e8 fe ff ff ja 49eed6 : break; : : /* If item is already processed, stop --- it must not be same chain */ : if (prstate->marked[offnum]) 0.00 : 49efee: 41 0f b7 c5 movzwl %r13w,%eax 0.00 : 49eff2: 80 bc 05 3c fc ff ff cmpb $0x0,-0x3c4(%rbp,%rax,1) 0.00 : 49eff9: 00 0.00 : 49effa: 0f 85 d6 fe ff ff jne 49eed6 : break; : : lp = PageGetItemId(dp, offnum); : : /* Unused item obviously isn't part of the chain */ : if (!ItemIdIsUsed(lp)) 0.00 : 49f000: 48 8b 8d f0 f2 ff ff mov -0xd10(%rbp),%rcx 0.00 : 49f007: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 49f00b: 8b 44 91 08 mov 0x8(%rcx,%rdx,4),%eax 0.00 : 49f00f: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49f014: 0f 84 bc fe ff ff je 49eed6 : /* : * If we are looking at the redirected root line pointer, jump to the : * first normal tuple in the chain. If we find a redirect somewhere : * else, stop --- it must not be same chain. : */ : if (ItemIdIsRedirected(lp)) 0.00 : 49f01a: 3d 00 00 01 00 cmp $0x10000,%eax 0.00 : 49f01f: 0f 84 fb 00 00 00 je 49f120 : /* : * Likewise, a dead item pointer can't be part of the chain. (We : * already eliminated the case of dead root tuple outside this : * function.) : */ : if (ItemIdIsDead(lp)) 0.00 : 49f025: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 49f02a: 0f 84 a6 fe ff ff je 49eed6 : break; : : Assert(ItemIdIsNormal(lp)); : htup = (HeapTupleHeader) PageGetItem(dp, lp); 0.00 : 49f030: 48 8b b5 f0 f2 ff ff mov -0xd10(%rbp),%rsi : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(lp); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49f037: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi : */ : if (ItemIdIsDead(lp)) : break; : : Assert(ItemIdIsNormal(lp)); : htup = (HeapTupleHeader) PageGetItem(dp, lp); 0.00 : 49f03d: 0f b7 44 96 08 movzwl 0x8(%rsi,%rdx,4),%eax 0.00 : 49f042: 48 89 f3 mov %rsi,%rbx 0.00 : 49f045: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 49f04a: 48 01 c3 add %rax,%rbx : : tup.t_data = htup; 0.00 : 49f04d: 48 89 5d c0 mov %rbx,-0x40(%rbp) : tup.t_len = ItemIdGetLength(lp); 0.00 : 49f051: 0f b7 44 96 0a movzwl 0xa(%rsi,%rdx,4),%eax 0.00 : 49f056: 66 d1 e8 shr %ax 0.00 : 49f059: 0f b7 c0 movzwl %ax,%eax 0.00 : 49f05c: 89 45 b0 mov %eax,-0x50(%rbp) : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49f05f: e8 cc 4f 1d 00 callq 674030 0.00 : 49f064: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49f06a: c1 e8 10 shr $0x10,%eax 0.00 : 49f06d: 66 89 45 b4 mov %ax,-0x4c(%rbp) 0.00 : 49f071: e8 ba 4f 1d 00 callq 674030 : : /* : * Check the tuple XMIN against prior XMAX, if any : */ : if (TransactionIdIsValid(priorXmax) && 0.00 : 49f076: 8b 95 ec f2 ff ff mov -0xd14(%rbp),%edx : Assert(ItemIdIsNormal(lp)); : htup = (HeapTupleHeader) PageGetItem(dp, lp); : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(lp); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49f07c: 66 89 45 b6 mov %ax,-0x4a(%rbp) 0.00 : 49f080: 66 44 89 6d b8 mov %r13w,-0x48(%rbp) : : /* : * Check the tuple XMIN against prior XMAX, if any : */ : if (TransactionIdIsValid(priorXmax) && 0.00 : 49f085: 85 d2 test %edx,%edx 0.00 : 49f087: 74 23 je 49f0ac 0.00 : 49f089: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 49f08d: ba 02 00 00 00 mov $0x2,%edx 0.00 : 49f092: 25 00 03 00 00 and $0x300,%eax 0.00 : 49f097: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 49f09c: 74 02 je 49f0a0 0.00 : 49f09e: 8b 13 mov (%rbx),%edx 0.00 : 49f0a0: 39 95 ec f2 ff ff cmp %edx,-0xd14(%rbp) 0.00 : 49f0a6: 0f 85 2a fe ff ff jne 49eed6 : break; : : /* : * OK, this tuple is indeed a member of the chain. : */ : chainitems[nchain++] = offnum; 0.00 : 49f0ac: 49 63 c7 movslq %r15d,%rax : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) 0.00 : 49f0af: 48 8d 7d b0 lea -0x50(%rbp),%rdi : break; : : /* : * OK, this tuple is indeed a member of the chain. : */ : chainitems[nchain++] = offnum; 0.00 : 49f0b3: 66 44 89 ac 45 60 fd mov %r13w,-0x2a0(%rbp,%rax,2) 0.00 : 49f0ba: ff ff 0.00 : 49f0bc: 8b 85 08 f3 ff ff mov -0xcf8(%rbp),%eax : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) 0.00 : 49f0c2: 8b 95 94 f2 ff ff mov -0xd6c(%rbp),%edx 0.00 : 49f0c8: 8b b5 90 f2 ff ff mov -0xd70(%rbp),%esi : break; : : /* : * OK, this tuple is indeed a member of the chain. : */ : chainitems[nchain++] = offnum; 0.00 : 49f0ce: 89 85 cc f2 ff ff mov %eax,-0xd34(%rbp) : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) 0.00 : 49f0d4: e8 47 5a 30 00 callq 7a4b20 0.00 : 49f0d9: 83 f8 04 cmp $0x4,%eax 0.00 : 49f0dc: 76 32 jbe 49f110 : * page prunable in heapam.c. : */ : break; : : default: : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); 0.00 : 49f0de: ba d0 30 7b 00 mov $0x7b30d0,%edx 0.00 : 49f0e3: be 08 02 00 00 mov $0x208,%esi 0.00 : 49f0e8: bf 55 30 7b 00 mov $0x7b3055,%edi 0.00 : 49f0ed: e8 2e c3 2d 00 callq 77b420 0.00 : 49f0f2: be 68 30 7b 00 mov $0x7b3068,%esi 0.00 : 49f0f7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 49f0fc: 31 c0 xor %eax,%eax 0.00 : 49f0fe: e8 2d c1 2d 00 callq 77b230 0.00 : 49f103: e8 c8 a3 fc ff callq 4694d0 0.00 : 49f108: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49f10f: 00 : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) 0.00 : 49f110: 89 c0 mov %eax,%eax 0.00 : 49f112: ff 24 c5 a0 30 7b 00 jmpq *0x7b30a0(,%rax,8) 0.00 : 49f119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * first normal tuple in the chain. If we find a redirect somewhere : * else, stop --- it must not be same chain. : */ : if (ItemIdIsRedirected(lp)) : { : if (nchain > 0) 0.00 : 49f120: 45 85 ff test %r15d,%r15d 0.00 : 49f123: 0f 8f ad fd ff ff jg 49eed6 : break; /* not at start of chain */ : chainitems[nchain++] = offnum; 0.00 : 49f129: 49 63 c7 movslq %r15d,%rax 0.00 : 49f12c: 66 44 89 ac 45 60 fd mov %r13w,-0x2a0(%rbp,%rax,2) 0.00 : 49f133: ff ff : offnum = ItemIdGetRedirect(rootlp); 0.00 : 49f135: 48 8b 9d 70 f2 ff ff mov -0xd90(%rbp),%rbx 0.00 : 49f13c: 44 0f b7 ad 0e f3 ff movzwl -0xcf2(%rbp),%r13d 0.00 : 49f143: ff 0.00 : 49f144: 44 0f b7 64 99 08 movzwl 0x8(%rcx,%rbx,4),%r12d 0.00 : 49f14a: 66 41 81 e4 ff 7f and $0x7fff,%r12w : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f150: 66 44 89 ad 0e f3 ff mov %r13w,-0xcf2(%rbp) 0.00 : 49f157: ff 0.00 : 49f158: 41 83 c7 01 add $0x1,%r15d 0.00 : 49f15c: 83 85 08 f3 ff ff 01 addl $0x1,-0xcf8(%rbp) 0.00 : 49f163: 45 89 e5 mov %r12d,%r13d 0.00 : 49f166: e9 5a fd ff ff jmpq 49eec5 0.00 : 49f16b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Page dp = (Page) BufferGetPage(buffer); : TransactionId priorXmax = InvalidTransactionId; : ItemId rootlp; : HeapTupleHeader htup; : OffsetNumber latestdead = InvalidOffsetNumber, : maxoff = PageGetMaxOffsetNumber(dp), 0.00 : 49f170: 0f b7 c0 movzwl %ax,%eax 0.00 : 49f173: 48 83 e8 18 sub $0x18,%rax 0.00 : 49f177: 48 c1 e8 02 shr $0x2,%rax 0.00 : 49f17b: 66 89 85 d0 f2 ff ff mov %ax,-0xd30(%rbp) 0.00 : 49f182: e9 e8 fc ff ff jmpq 49ee6f 0.00 : 49f187: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49f18e: 00 00 : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49f190: 8b 8d 1c f3 ff ff mov -0xce4(%rbp),%ecx 0.00 : 49f196: 85 c9 test %ecx,%ecx 0.00 : 49f198: 0f 8e 92 01 00 00 jle 49f330 0.00 : 49f19e: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax 0.00 : 49f1a4: e9 10 fb ff ff jmpq 49ecb9 0.00 : 49f1a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f1b0: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 49f1b4: 89 d0 mov %edx,%eax 0.00 : 49f1b6: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49f1bb: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49f1c0: 0f 84 52 03 00 00 je 49f518 0.00 : 49f1c6: 44 8b 63 04 mov 0x4(%rbx),%r12d : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f1ca: 8b b5 10 f3 ff ff mov -0xcf0(%rbp),%esi 0.00 : 49f1d0: 85 f6 test %esi,%esi 0.00 : 49f1d2: 0f 85 28 03 00 00 jne 49f500 : TransactionIdPrecedes(xid, prstate->new_prune_xid)) : prstate->new_prune_xid = xid; 0.00 : 49f1d8: 44 89 a5 10 f3 ff ff mov %r12d,-0xcf0(%rbp) : * find another DEAD tuple is a fairly unusual corner case.) : */ : if (tupdead) : { : latestdead = offnum; : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f1df: 44 0f b7 ad 0e f3 ff movzwl -0xcf2(%rbp),%r13d 0.00 : 49f1e6: ff : : /* : * If the tuple is not HOT-updated, then we are at the end of this : * HOT-update chain. : */ : if (!HeapTupleHeaderIsHotUpdated(htup)) 0.00 : 49f1e7: f6 43 13 40 testb $0x40,0x13(%rbx) 0.00 : 49f1eb: 0f 84 ed fc ff ff je 49eede 0.00 : 49f1f1: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 49f1f5: f6 c6 08 test $0x8,%dh 0.00 : 49f1f8: 0f 85 e0 fc ff ff jne 49eede 0.00 : 49f1fe: 89 d0 mov %edx,%eax 0.00 : 49f200: 25 00 03 00 00 and $0x300,%eax 0.00 : 49f205: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 49f20a: 0f 84 ce fc ff ff je 49eede : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49f210: 89 d0 mov %edx,%eax : /* : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); 0.00 : 49f212: 44 0f b7 63 10 movzwl 0x10(%rbx),%r12d : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49f217: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49f21c: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49f221: 74 65 je 49f288 0.00 : 49f223: 8b 5b 04 mov 0x4(%rbx),%ebx 0.00 : 49f226: 89 9d ec f2 ff ff mov %ebx,-0xd14(%rbp) 0.00 : 49f22c: e9 1f ff ff ff jmpq 49f150 0.00 : 49f231: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * find another DEAD tuple is a fairly unusual corner case.) : */ : if (tupdead) : { : latestdead = offnum; : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f238: 48 8b b5 68 f2 ff ff mov -0xd98(%rbp),%rsi 0.00 : 49f23f: 48 89 df mov %rbx,%rdi 0.00 : 49f242: e8 e9 7e ff ff callq 497130 0.00 : 49f247: eb 9e jmp 49f1e7 0.00 : 49f249: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f250: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 49f254: 89 d0 mov %edx,%eax 0.00 : 49f256: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49f25b: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49f260: 0f 84 72 02 00 00 je 49f4d8 0.00 : 49f266: 8b 5b 04 mov 0x4(%rbx),%ebx : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f269: 8b b5 10 f3 ff ff mov -0xcf0(%rbp),%esi 0.00 : 49f26f: 85 f6 test %esi,%esi 0.00 : 49f271: 0f 85 49 02 00 00 jne 49f4c0 : TransactionIdPrecedes(xid, prstate->new_prune_xid)) : prstate->new_prune_xid = xid; 0.00 : 49f277: 89 9d 10 f3 ff ff mov %ebx,-0xcf0(%rbp) 0.00 : 49f27d: e9 54 fc ff ff jmpq 49eed6 0.00 : 49f282: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49f288: 84 d2 test %dl,%dl 0.00 : 49f28a: 78 97 js 49f223 0.00 : 49f28c: 48 89 df mov %rbx,%rdi 0.00 : 49f28f: e8 8c 7e ff ff callq 497120 0.00 : 49f294: 89 85 ec f2 ff ff mov %eax,-0xd14(%rbp) 0.00 : 49f29a: e9 b1 fe ff ff jmpq 49f150 0.00 : 49f29f: 90 nop : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { : int ndeleted = 0; : Page page = BufferGetPage(buffer); 0.00 : 49f2a0: 89 f0 mov %esi,%eax 0.00 : 49f2a2: 48 8b 15 6f de 6d 00 mov 0x6dde6f(%rip),%rdx # b7d118 0.00 : 49f2a9: f7 d0 not %eax 0.00 : 49f2ab: 48 98 cltq 0.00 : 49f2ad: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 49f2b1: 48 89 95 a8 f2 ff ff mov %rdx,-0xd58(%rbp) 0.00 : 49f2b8: e9 5f f9 ff ff jmpq 49ec1c 0.00 : 49f2bd: 0f 1f 00 nopl (%rax) : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49f2c0: 48 8b 05 51 de 6d 00 mov 0x6dde51(%rip),%rax # b7d118 0.00 : 49f2c7: 48 8b 9d 00 f3 ff ff mov -0xd00(%rbp),%rbx 0.00 : 49f2ce: 48 8b 04 18 mov (%rax,%rbx,1),%rax 0.00 : 49f2d2: 48 89 85 f0 f2 ff ff mov %rax,-0xd10(%rbp) 0.00 : 49f2d9: e9 73 fb ff ff jmpq 49ee51 0.00 : 49f2de: 66 90 xchg %ax,%ax : if (i >= nchain) : heap_prune_record_dead(prstate, rootoffnum); : else : heap_prune_record_redirect(prstate, rootoffnum, chainitems[i]); : } : else if (nchain < 2 && ItemIdIsRedirected(rootlp)) 0.00 : 49f2e0: 83 bd cc f2 ff ff 01 cmpl $0x1,-0xd34(%rbp) 0.00 : 49f2e7: 0f 8e 93 00 00 00 jle 49f380 : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f2ed: 45 31 c0 xor %r8d,%r8d : itemid = PageGetItemId(page, offnum); : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) : continue; : : /* Process this item or chain of items */ : ndeleted += heap_prune_chain(relation, buffer, offnum, 0.00 : 49f2f0: 44 01 85 a4 f2 ff ff add %r8d,-0xd5c(%rbp) 0.00 : 49f2f7: 41 83 c6 01 add $0x1,%r14d : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49f2fb: 66 44 39 b5 b0 f2 ff cmp %r14w,-0xd50(%rbp) 0.00 : 49f302: ff 0.00 : 49f303: 0f 83 e7 fa ff ff jae 49edf0 0.00 : 49f309: e9 82 f9 ff ff jmpq 49ec90 0.00 : 49f30e: 66 90 xchg %ax,%ax : * If requested, report the number of tuples reclaimed to pgstats. This is : * ndeleted minus ndead, because we don't want to count a now-DEAD root : * item as a deletion for this purpose. : */ : if (report_stats && ndeleted > prstate.ndead) : pgstat_update_heap_dead_tuples(relation, ndeleted - prstate.ndead); 0.00 : 49f310: 8b b5 a4 f2 ff ff mov -0xd5c(%rbp),%esi 0.00 : 49f316: 48 8b bd 98 f2 ff ff mov -0xd68(%rbp),%rdi 0.00 : 49f31d: 29 c6 sub %eax,%esi 0.00 : 49f31f: e8 ec 07 1a 00 callq 63fb10 0.00 : 49f324: e9 30 fa ff ff jmpq 49ed59 0.00 : 49f329: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49f330: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax 0.00 : 49f336: 85 c0 test %eax,%eax 0.00 : 49f338: 0f 8f 7b f9 ff ff jg 49ecb9 : * : * Also clear the "page is full" flag if it is set, since there's no : * point in repeating the prune/defrag process until something else : * happens to the page. : */ : if (((PageHeader) page)->pd_prune_xid != prstate.new_prune_xid || 0.00 : 49f33e: 48 8b 8d a8 f2 ff ff mov -0xd58(%rbp),%rcx 0.00 : 49f345: 8b 85 10 f3 ff ff mov -0xcf0(%rbp),%eax 0.00 : 49f34b: 39 41 14 cmp %eax,0x14(%rcx) 0.00 : 49f34e: 75 0a jne 49f35a 0.00 : 49f350: f6 41 0a 02 testb $0x2,0xa(%rcx) 0.00 : 49f354: 0f 84 d5 f9 ff ff je 49ed2f : PageIsFull(page)) : { : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49f35a: 48 8b 9d a8 f2 ff ff mov -0xd58(%rbp),%rbx : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); 0.00 : 49f361: be 01 00 00 00 mov $0x1,%esi : */ : if (((PageHeader) page)->pd_prune_xid != prstate.new_prune_xid || : PageIsFull(page)) : { : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; : PageClearFull(page); 0.00 : 49f366: 66 83 63 0a fd andw $0xfffd,0xa(%rbx) : * happens to the page. : */ : if (((PageHeader) page)->pd_prune_xid != prstate.new_prune_xid || : PageIsFull(page)) : { : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49f36b: 89 43 14 mov %eax,0x14(%rbx) : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); 0.00 : 49f36e: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49f374: e8 17 56 1d 00 callq 674990 0.00 : 49f379: e9 b1 f9 ff ff jmpq 49ed2f 0.00 : 49f37e: 66 90 xchg %ax,%ax : if (i >= nchain) : heap_prune_record_dead(prstate, rootoffnum); : else : heap_prune_record_redirect(prstate, rootoffnum, chainitems[i]); : } : else if (nchain < 2 && ItemIdIsRedirected(rootlp)) 0.00 : 49f380: 48 8b 95 70 f2 ff ff mov -0xd90(%rbp),%rdx 0.00 : 49f387: 48 8b 8d f0 f2 ff ff mov -0xd10(%rbp),%rcx 0.00 : 49f38e: 8b 44 91 08 mov 0x8(%rcx,%rdx,4),%eax 0.00 : 49f392: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49f397: 3d 00 00 01 00 cmp $0x10000,%eax 0.00 : 49f39c: 0f 85 4b ff ff ff jne 49f2ed : /* Record item pointer to be marked dead */ : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; 0.00 : 49f3a2: 48 63 85 1c f3 ff ff movslq -0xce4(%rbp),%rax : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f3a9: 45 31 c0 xor %r8d,%r8d : /* Record item pointer to be marked dead */ : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; 0.00 : 49f3ac: 66 44 89 b4 45 b0 f7 mov %r14w,-0x850(%rbp,%rax,2) 0.00 : 49f3b3: ff ff : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f3b5: 48 8b 9d 78 f2 ff ff mov -0xd88(%rbp),%rbx : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; : prstate->ndead++; 0.00 : 49f3bc: 83 85 1c f3 ff ff 01 addl $0x1,-0xce4(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f3c3: c6 84 1d 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rbx,1) 0.00 : 49f3ca: 01 0.00 : 49f3cb: e9 20 ff ff ff jmpq 49f2f0 : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) : { : htup = (HeapTupleHeader) PageGetItem(dp, rootlp); 0.00 : 49f3d0: 48 8b 95 70 f2 ff ff mov -0xd90(%rbp),%rdx 0.00 : 49f3d7: 48 8b 9d f0 f2 ff ff mov -0xd10(%rbp),%rbx : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(rootlp); 0.00 : 49f3de: 48 8b b5 f0 f2 ff ff mov -0xd10(%rbp),%rsi : tup.t_tableOid = RelationGetRelid(relation); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), rootoffnum); 0.00 : 49f3e5: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) : { : htup = (HeapTupleHeader) PageGetItem(dp, rootlp); 0.00 : 49f3eb: 0f b7 44 93 08 movzwl 0x8(%rbx,%rdx,4),%eax 0.00 : 49f3f0: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 49f3f5: 48 01 c3 add %rax,%rbx : : tup.t_data = htup; 0.00 : 49f3f8: 48 89 5d c0 mov %rbx,-0x40(%rbp) : tup.t_len = ItemIdGetLength(rootlp); 0.00 : 49f3fc: 0f b7 44 96 0a movzwl 0xa(%rsi,%rdx,4),%eax : tup.t_tableOid = RelationGetRelid(relation); 0.00 : 49f401: 89 4d bc mov %ecx,-0x44(%rbp) : if (ItemIdIsNormal(rootlp)) : { : htup = (HeapTupleHeader) PageGetItem(dp, rootlp); : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(rootlp); 0.00 : 49f404: 66 d1 e8 shr %ax 0.00 : 49f407: 0f b7 c0 movzwl %ax,%eax 0.00 : 49f40a: 89 45 b0 mov %eax,-0x50(%rbp) : tup.t_tableOid = RelationGetRelid(relation); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), rootoffnum); 0.00 : 49f40d: e8 1e 4c 1d 00 callq 674030 0.00 : 49f412: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 14.29 : 49f418: c1 e8 10 shr $0x10,%eax 0.00 : 49f41b: 66 89 45 b4 mov %ax,-0x4c(%rbp) 0.00 : 49f41f: e8 0c 4c 1d 00 callq 674030 14.29 : 49f424: 66 44 89 75 b8 mov %r14w,-0x48(%rbp) 0.00 : 49f429: 66 89 45 b6 mov %ax,-0x4a(%rbp) : : if (HeapTupleHeaderIsHeapOnly(htup)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:377 14.29 : 49f42d: 66 83 7b 12 00 cmpw $0x0,0x12(%rbx) 14.29 : 49f432: 0f 89 6a fa ff ff jns 49eea2 : * : * Note that we might first arrive at a dead heap-only tuple : * either here or while following a chain below. Whichever path : * gets there first will mark the tuple unused. : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) 0.00 : 49f438: 8b 95 94 f2 ff ff mov -0xd6c(%rbp),%edx 0.00 : 49f43e: 8b b5 90 f2 ff ff mov -0xd70(%rbp),%esi 0.00 : 49f444: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 49f448: e8 d3 56 30 00 callq 7a4b20 0.00 : 49f44d: 85 c0 test %eax,%eax 0.00 : 49f44f: 0f 85 98 fe ff ff jne 49f2ed 0.00 : 49f455: f6 43 13 40 testb $0x40,0x13(%rbx) 0.00 : 49f459: 74 19 je 49f474 0.00 : 49f45b: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 49f45f: f6 c4 08 test $0x8,%ah 0.00 : 49f462: 75 10 jne 49f474 0.00 : 49f464: 25 00 03 00 00 and $0x300,%eax 0.00 : 49f469: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 49f46e: 0f 85 79 fe ff ff jne 49f2ed : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49f474: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f47a: 48 89 df mov %rbx,%rdi : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49f47d: 48 63 d0 movslq %eax,%rdx : prstate->nunused++; 0.00 : 49f480: 83 c0 01 add $0x1,%eax : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49f483: 66 44 89 b4 55 f6 f9 mov %r14w,-0x60a(%rbp,%rdx,2) 0.00 : 49f48a: ff ff : prstate->nunused++; 0.00 : 49f48c: 89 85 20 f3 ff ff mov %eax,-0xce0(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f492: 48 8b 85 78 f2 ff ff mov -0xd88(%rbp),%rax 0.00 : 49f499: c6 84 05 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rax,1) 0.00 : 49f4a0: 01 : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f4a1: 48 8b b5 68 f2 ff ff mov -0xd98(%rbp),%rsi 0.00 : 49f4a8: e8 83 7c ff ff callq 497130 0.00 : 49f4ad: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 49f4b3: e9 38 fe ff ff jmpq 49f2f0 0.00 : 49f4b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49f4bf: 00 : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f4c0: 89 df mov %ebx,%edi 0.00 : 49f4c2: e8 19 0b 02 00 callq 4bffe0 0.00 : 49f4c7: 84 c0 test %al,%al 0.00 : 49f4c9: 0f 84 07 fa ff ff je 49eed6 0.00 : 49f4cf: 90 nop 0.00 : 49f4d0: e9 a2 fd ff ff jmpq 49f277 0.00 : 49f4d5: 0f 1f 00 nopl (%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f4d8: 84 d2 test %dl,%dl 0.00 : 49f4da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49f4e0: 0f 88 80 fd ff ff js 49f266 0.00 : 49f4e6: 48 89 df mov %rbx,%rdi 0.00 : 49f4e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 49f4f0: e8 2b 7c ff ff callq 497120 0.00 : 49f4f5: 89 c3 mov %eax,%ebx 0.00 : 49f4f7: e9 6d fd ff ff jmpq 49f269 0.00 : 49f4fc: 0f 1f 40 00 nopl 0x0(%rax) : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f500: 44 89 e7 mov %r12d,%edi 0.00 : 49f503: e8 d8 0a 02 00 callq 4bffe0 0.00 : 49f508: 84 c0 test %al,%al 0.00 : 49f50a: 0f 84 cf fc ff ff je 49f1df 0.00 : 49f510: e9 c3 fc ff ff jmpq 49f1d8 0.00 : 49f515: 0f 1f 00 nopl (%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f518: 84 d2 test %dl,%dl 0.00 : 49f51a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49f520: 0f 88 a0 fc ff ff js 49f1c6 0.00 : 49f526: 48 89 df mov %rbx,%rdi 0.00 : 49f529: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 49f530: e8 eb 7b ff ff callq 497120 0.00 : 49f535: 41 89 c4 mov %eax,%r12d 0.00 : 49f538: e9 8d fc ff ff jmpq 49f1ca 0.00 : 49f53d: 0f 1f 00 nopl (%rax) : * redirect the root to the correct chain member. : */ : if (i >= nchain) : heap_prune_record_dead(prstate, rootoffnum); : else : heap_prune_record_redirect(prstate, rootoffnum, chainitems[i]); 0.00 : 49f540: 48 63 c7 movslq %edi,%rax 0.00 : 49f543: 0f b7 94 45 60 fd ff movzwl -0x2a0(%rbp,%rax,2),%edx 0.00 : 49f54a: ff : static void : heap_prune_record_redirect(PruneState *prstate, : OffsetNumber offnum, OffsetNumber rdoffnum) : { : Assert(prstate->nredirected < MaxHeapTuplesPerPage); : prstate->redirected[prstate->nredirected * 2] = offnum; 0.00 : 49f54b: 8b 85 18 f3 ff ff mov -0xce8(%rbp),%eax 0.00 : 49f551: 01 c0 add %eax,%eax 0.00 : 49f553: 48 98 cltq 0.00 : 49f555: 66 44 89 b4 45 24 f3 mov %r14w,-0xcdc(%rbp,%rax,2) 0.00 : 49f55c: ff ff : prstate->redirected[prstate->nredirected * 2 + 1] = rdoffnum; 0.00 : 49f55e: 8b 85 18 f3 ff ff mov -0xce8(%rbp),%eax 0.00 : 49f564: 8d 44 00 01 lea 0x1(%rax,%rax,1),%eax 0.00 : 49f568: 48 98 cltq 0.00 : 49f56a: 66 89 94 45 24 f3 ff mov %dx,-0xcdc(%rbp,%rax,2) 0.00 : 49f571: ff : prstate->nredirected++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f572: 48 8b 85 78 f2 ff ff mov -0xd88(%rbp),%rax : OffsetNumber offnum, OffsetNumber rdoffnum) : { : Assert(prstate->nredirected < MaxHeapTuplesPerPage); : prstate->redirected[prstate->nredirected * 2] = offnum; : prstate->redirected[prstate->nredirected * 2 + 1] = rdoffnum; : prstate->nredirected++; 0.00 : 49f579: 83 85 18 f3 ff ff 01 addl $0x1,-0xce8(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f580: c6 84 05 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rax,1) 0.00 : 49f587: 01 : Assert(!prstate->marked[rdoffnum]); : prstate->marked[rdoffnum] = true; 0.00 : 49f588: c6 84 15 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rdx,1) 0.00 : 49f58f: 01 0.00 : 49f590: e9 5b fd ff ff jmpq 49f2f0 0.00 : 49f595: 0f 1f 00 nopl (%rax) : */ : if (RelationNeedsWAL(relation)) : { : XLogRecPtr recptr; : : recptr = log_heap_clean(relation, buffer, 0.00 : 49f598: 8b 85 14 f3 ff ff mov -0xcec(%rbp),%eax 0.00 : 49f59e: 8b 8d 18 f3 ff ff mov -0xce8(%rbp),%ecx 0.00 : 49f5a4: 4d 89 e0 mov %r12,%r8 0.00 : 49f5a7: 44 8b 8d 1c f3 ff ff mov -0xce4(%rbp),%r9d 0.00 : 49f5ae: 8b b5 94 f2 ff ff mov -0xd6c(%rbp),%esi 0.00 : 49f5b4: 4c 89 ea mov %r13,%rdx 0.00 : 49f5b7: 48 8b bd 98 f2 ff ff mov -0xd68(%rbp),%rdi 0.00 : 49f5be: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 49f5c2: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 49f5c6: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax 0.00 : 49f5cc: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 49f5d0: e8 8b 66 ff ff callq 495c60 0.00 : 49f5d5: 49 89 c0 mov %rax,%r8 : prstate.redirected, prstate.nredirected, : prstate.nowdead, prstate.ndead, : prstate.nowunused, prstate.nunused, : prstate.latestRemovedXid); : : PageSetLSN(BufferGetPage(buffer), recptr); 0.00 : 49f5d8: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49f5de: 85 c0 test %eax,%eax 0.00 : 49f5e0: 78 3f js 49f621 0.00 : 49f5e2: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49f5e8: 48 8b 15 09 05 72 00 mov 0x720509(%rip),%rdx # bbfaf8 0.00 : 49f5ef: 4c 89 c1 mov %r8,%rcx 0.00 : 49f5f2: 48 c1 e9 20 shr $0x20,%rcx 0.00 : 49f5f6: 83 e8 01 sub $0x1,%eax 0.00 : 49f5f9: 48 98 cltq 0.00 : 49f5fb: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49f5ff: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 49f602: 48 03 05 ef 04 72 00 add 0x7204ef(%rip),%rax # bbfaf8 0.00 : 49f609: 44 89 40 04 mov %r8d,0x4(%rax) 0.00 : 49f60d: e9 1d f7 ff ff jmpq 49ed2f : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49f612: bf 01 00 00 00 mov $0x1,%edi 0.00 : 49f617: 31 d2 xor %edx,%edx 0.00 : 49f619: 45 31 c0 xor %r8d,%r8d 0.00 : 49f61c: e9 3d f9 ff ff jmpq 49ef5e : prstate.redirected, prstate.nredirected, : prstate.nowdead, prstate.ndead, : prstate.nowunused, prstate.nunused, : prstate.latestRemovedXid); : : PageSetLSN(BufferGetPage(buffer), recptr); 0.00 : 49f621: f7 95 94 f2 ff ff notl -0xd6c(%rbp) 0.00 : 49f627: 48 8b 05 ea da 6d 00 mov 0x6ddaea(%rip),%rax # b7d118 0.00 : 49f62e: 48 63 8d 94 f2 ff ff movslq -0xd6c(%rbp),%rcx 0.00 : 49f635: 48 8b 14 c8 mov (%rax,%rcx,8),%rdx 0.00 : 49f639: 4c 89 c0 mov %r8,%rax 0.00 : 49f63c: 48 c1 e8 20 shr $0x20,%rax 0.00 : 49f640: 89 02 mov %eax,(%rdx) 0.00 : 49f642: 48 8b 05 cf da 6d 00 mov 0x6ddacf(%rip),%rax # b7d118 0.00 : 49f649: 48 8b 04 c8 mov (%rax,%rcx,8),%rax 0.00 : 49f64d: eb ba jmp 49f609 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:107 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:120 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:530 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:542 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:201 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:191 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:191 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:662 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:659 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a8610 <_bt_doinsert>: : * that's just a coding artifact.) : */ : bool : _bt_doinsert(Relation rel, IndexTuple itup, : IndexUniqueCheck checkUnique, Relation heapRel) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:107 11.11 : 4a8610: 55 push %rbp 0.00 : 4a8611: 48 89 e5 mov %rsp,%rbp 0.00 : 4a8614: 41 57 push %r15 0.00 : 4a8616: 49 89 ff mov %rdi,%r15 0.00 : 4a8619: 41 56 push %r14 : /* we need an insertion scan key to do our search, so build one */ : itup_scankey = _bt_mkscankey(rel, itup); : : top: : /* find the first page containing this key */ : stack = _bt_search(rel, natts, itup_scankey, false, &buf, BT_WRITE); 0.00 : 4a861b: 4c 8d 75 d0 lea -0x30(%rbp),%r14 : * that's just a coding artifact.) : */ : bool : _bt_doinsert(Relation rel, IndexTuple itup, : IndexUniqueCheck checkUnique, Relation heapRel) : { 0.00 : 4a861f: 41 55 push %r13 0.00 : 4a8621: 41 54 push %r12 0.00 : 4a8623: 41 89 d4 mov %edx,%r12d 0.00 : 4a8626: 53 push %rbx 0.00 : 4a8627: 48 83 ec 58 sub $0x58,%rsp 0.00 : 4a862b: 48 89 75 98 mov %rsi,-0x68(%rbp) 0.00 : 4a862f: 48 89 4d 90 mov %rcx,-0x70(%rbp) : bool is_unique = false; 0.00 : 4a8633: c6 45 d7 00 movb $0x0,-0x29(%rbp) : int natts = rel->rd_rel->relnatts; 0.00 : 4a8637: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 4a863b: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 4a863f: 89 45 a4 mov %eax,-0x5c(%rbp) : BTStack stack; : Buffer buf; : OffsetNumber offset; : : /* we need an insertion scan key to do our search, so build one */ : itup_scankey = _bt_mkscankey(rel, itup); 0.00 : 4a8642: e8 29 73 00 00 callq 4af970 <_bt_mkscankey> : : top: : /* find the first page containing this key */ : stack = _bt_search(rel, natts, itup_scankey, false, &buf, BT_WRITE); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:120 11.11 : 4a8647: 8b 75 a4 mov -0x5c(%rbp),%esi 0.00 : 4a864a: 31 c9 xor %ecx,%ecx 0.00 : 4a864c: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 4a8652: 4d 89 f0 mov %r14,%r8 0.00 : 4a8655: 48 89 c2 mov %rax,%rdx 0.00 : 4a8658: 4c 89 ff mov %r15,%rdi : BTStack stack; : Buffer buf; : OffsetNumber offset; : : /* we need an insertion scan key to do our search, so build one */ : itup_scankey = _bt_mkscankey(rel, itup); 0.00 : 4a865b: 48 89 45 a8 mov %rax,-0x58(%rbp) : : top: : /* find the first page containing this key */ : stack = _bt_search(rel, natts, itup_scankey, false, &buf, BT_WRITE); 0.00 : 4a865f: e8 9c 4a 00 00 callq 4ad100 <_bt_search> : : offset = InvalidOffsetNumber; : : /* trade in our read lock for a write lock */ : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 4a8664: 8b 7d d0 mov -0x30(%rbp),%edi 0.00 : 4a8667: 31 f6 xor %esi,%esi : /* we need an insertion scan key to do our search, so build one */ : itup_scankey = _bt_mkscankey(rel, itup); : : top: : /* find the first page containing this key */ : stack = _bt_search(rel, natts, itup_scankey, false, &buf, BT_WRITE); 0.00 : 4a8669: 48 89 45 b0 mov %rax,-0x50(%rbp) : : offset = InvalidOffsetNumber; : : /* trade in our read lock for a write lock */ : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 4a866d: e8 9e c0 1c 00 callq 674710 : LockBuffer(buf, BT_WRITE); 0.00 : 4a8672: 8b 7d d0 mov -0x30(%rbp),%edi 0.00 : 4a8675: be 02 00 00 00 mov $0x2,%esi 0.00 : 4a867a: e8 91 c0 1c 00 callq 674710 : * lock and acquired our write lock, then this page may no longer be the : * right place for the key we want to insert. In this case, we need to : * move right in the tree. See Lehman and Yao for an excruciatingly : * precise description. : */ : buf = _bt_moveright(rel, buf, natts, itup_scankey, false, 0.00 : 4a867f: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 4a8683: 8b 75 d0 mov -0x30(%rbp),%esi 0.00 : 4a8686: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8689: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 4a868d: 8b 55 a4 mov -0x5c(%rbp),%edx 0.00 : 4a8690: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 4a8696: 4c 89 ff mov %r15,%rdi 0.00 : 4a8699: c7 44 24 08 02 00 00 movl $0x2,0x8(%rsp) 0.00 : 4a86a0: 00 0.00 : 4a86a1: 48 89 04 24 mov %rax,(%rsp) 0.00 : 4a86a5: e8 c6 48 00 00 callq 4acf70 <_bt_moveright> : * : * For a partial uniqueness check, we don't wait for the other xact. Just : * let the tuple in and return false for possibly non-unique, or true for : * definitely unique. : */ : if (checkUnique != UNIQUE_CHECK_NO) 0.00 : 4a86aa: 45 85 e4 test %r12d,%r12d : * lock and acquired our write lock, then this page may no longer be the : * right place for the key we want to insert. In this case, we need to : * move right in the tree. See Lehman and Yao for an excruciatingly : * precise description. : */ : buf = _bt_moveright(rel, buf, natts, itup_scankey, false, 0.00 : 4a86ad: 89 45 d0 mov %eax,-0x30(%rbp) : * : * For a partial uniqueness check, we don't wait for the other xact. Just : * let the tuple in and return false for possibly non-unique, or true for : * definitely unique. : */ : if (checkUnique != UNIQUE_CHECK_NO) 0.00 : 4a86b0: 66 c7 45 ba 00 00 movw $0x0,-0x46(%rbp) 0.00 : 4a86b6: 0f 85 cd 01 00 00 jne 4a8889 <_bt_doinsert+0x279> : * an index tuple insert conflicts with an existing lock. Since the : * actual location of the insert is hard to predict because of the : * random search used to prevent O(N^2) performance when there are : * many duplicate entries, we can just use the "first valid" page. : */ : CheckForSerializableConflictIn(rel, NULL, buf); 0.00 : 4a86bc: 8b 55 d0 mov -0x30(%rbp),%edx 0.00 : 4a86bf: 31 f6 xor %esi,%esi 0.00 : 4a86c1: 4c 89 ff mov %r15,%rdi 0.00 : 4a86c4: e8 c7 a0 1e 00 callq 692790 : ScanKey scankey, : IndexTuple newtup, : BTStack stack, : Relation heapRel) : { : Buffer buf = *bufptr; 0.00 : 4a86c9: 8b 45 d0 mov -0x30(%rbp),%eax : Page page = BufferGetPage(buf); 0.00 : 4a86cc: 85 c0 test %eax,%eax : ScanKey scankey, : IndexTuple newtup, : BTStack stack, : Relation heapRel) : { : Buffer buf = *bufptr; 0.00 : 4a86ce: 89 45 bc mov %eax,-0x44(%rbp) : Page page = BufferGetPage(buf); 0.00 : 4a86d1: 0f 88 55 01 00 00 js 4a882c <_bt_doinsert+0x21c> 0.00 : 4a86d7: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 4a86da: 83 e8 01 sub $0x1,%eax 0.00 : 4a86dd: 4c 63 f0 movslq %eax,%r14 0.00 : 4a86e0: 49 c1 e6 0d shl $0xd,%r14 0.00 : 4a86e4: 4c 03 35 0d 74 71 00 add 0x71740d(%rip),%r14 # bbfaf8 : OffsetNumber firstlegaloff = *offsetptr; : : lpageop = (BTPageOpaque) PageGetSpecialPointer(page); : : itemsz = IndexTupleDSize(*newtup); : itemsz = MAXALIGN(itemsz); /* be safe, PageAddItem will do this but we /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:530 11.11 : 4a86eb: 48 8b 55 98 mov -0x68(%rbp),%rdx : bool movedright, : vacuumed; : OffsetNumber newitemoff; : OffsetNumber firstlegaloff = *offsetptr; : : lpageop = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a86ef: 41 0f b7 4e 10 movzwl 0x10(%r14),%ecx : * the per-page available space. Note that at this point, itemsz doesn't : * include the ItemId. : * : * NOTE: if you change this, see also the similar code in _bt_buildadd(). : */ : if (itemsz > BTMaxItemSize(page)) 0.00 : 4a86f4: 48 bb ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rbx 0.00 : 4a86fb: aa aa aa : OffsetNumber firstlegaloff = *offsetptr; : : lpageop = (BTPageOpaque) PageGetSpecialPointer(page); : : itemsz = IndexTupleDSize(*newtup); : itemsz = MAXALIGN(itemsz); /* be safe, PageAddItem will do this but we 0.00 : 4a86fe: 0f b7 42 06 movzwl 0x6(%rdx),%eax 0.00 : 4a8702: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4a8707: 48 83 c0 07 add $0x7,%rax 0.00 : 4a870b: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 4a870f: 48 89 45 c0 mov %rax,-0x40(%rbp) : * the per-page available space. Note that at this point, itemsz doesn't : * include the ItemId. : * : * NOTE: if you change this, see also the similar code in _bt_buildadd(). : */ : if (itemsz > BTMaxItemSize(page)) 0.00 : 4a8713: 41 0f b7 56 12 movzwl 0x12(%r14),%edx 0.00 : 4a8718: 81 e2 00 ff 00 00 and $0xff00,%edx 0.00 : 4a871e: 48 83 ea 38 sub $0x38,%rdx 0.00 : 4a8722: 48 89 d0 mov %rdx,%rax 0.00 : 4a8725: 48 f7 e3 mul %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:542 11.11 : 4a8728: 48 d1 ea shr %rdx 0.00 : 4a872b: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.00 : 4a872f: 48 39 55 c0 cmp %rdx,-0x40(%rbp) 0.00 : 4a8733: 0f 87 00 03 00 00 ja 4a8a39 <_bt_doinsert+0x429> : bool movedright, : vacuumed; : OffsetNumber newitemoff; : OffsetNumber firstlegaloff = *offsetptr; : : lpageop = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a8739: 0f b7 c1 movzwl %cx,%eax 0.00 : 4a873c: 45 31 ed xor %r13d,%r13d 0.00 : 4a873f: 4d 8d 24 06 lea (%r14,%rax,1),%r12 : * excellent job of preventing O(N^2) behavior with many equal keys. : *---------- : */ : movedright = false; : vacuumed = false; : while (PageGetFreeSpace(page) < itemsz) 0.00 : 4a8743: 4c 89 f7 mov %r14,%rdi 0.00 : 4a8746: e8 d5 c5 1e 00 callq 694d20 0.00 : 4a874b: 48 39 45 c0 cmp %rax,-0x40(%rbp) 0.00 : 4a874f: 0f 86 74 02 00 00 jbe 4a89c9 <_bt_doinsert+0x3b9> : : /* : * before considering moving right, see if we can obtain enough space : * by erasing LP_DEAD items : */ : if (P_ISLEAF(lpageop) && P_HAS_GARBAGE(lpageop)) 0.00 : 4a8755: 41 0f b7 44 24 0c movzwl 0xc(%r12),%eax 0.00 : 4a875b: 31 db xor %ebx,%ebx 0.00 : 4a875d: 83 e0 41 and $0x41,%eax 0.00 : 4a8760: 83 f8 41 cmp $0x41,%eax 0.00 : 4a8763: 0f 84 39 02 00 00 je 4a89a2 <_bt_doinsert+0x392> : } : : /* : * nope, so check conditions (b) and (c) enumerated above : */ : if (P_RIGHTMOST(lpageop) || 0.00 : 4a8769: 41 8b 74 24 04 mov 0x4(%r12),%esi 0.00 : 4a876e: 85 f6 test %esi,%esi 0.00 : 4a8770: 0f 84 55 02 00 00 je 4a89cb <_bt_doinsert+0x3bb> 0.00 : 4a8776: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 4a877a: 8b 75 a4 mov -0x5c(%rbp),%esi 0.00 : 4a877d: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4a8783: 4c 89 f1 mov %r14,%rcx 0.00 : 4a8786: 4c 89 ff mov %r15,%rdi 0.00 : 4a8789: e8 c2 44 00 00 callq 4acc50 <_bt_compare> 0.00 : 4a878e: 85 c0 test %eax,%eax 0.00 : 4a8790: 0f 85 35 02 00 00 jne 4a89cb <_bt_doinsert+0x3bb> 0.00 : 4a8796: e8 05 17 fc ff callq 469ea0 0.00 : 4a879b: 48 3d 14 ae 47 01 cmp $0x147ae14,%rax 0.00 : 4a87a1: 0f 8e 24 02 00 00 jle 4a89cb <_bt_doinsert+0x3bb> : * our insertion. write locks on intermediate dead pages won't do : * because we don't know when they will get de-linked from the tree. : */ : rbuf = InvalidBuffer; : : rblkno = lpageop->btpo_next; 0.00 : 4a87a7: 45 8b 6c 24 04 mov 0x4(%r12),%r13d 0.00 : 4a87ac: 31 db xor %ebx,%ebx 0.00 : 4a87ae: 66 90 xchg %ax,%ax : for (;;) : { : rbuf = _bt_relandgetbuf(rel, rbuf, rblkno, BT_WRITE); 0.00 : 4a87b0: 89 de mov %ebx,%esi 0.00 : 4a87b2: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 4a87b7: 44 89 ea mov %r13d,%edx 0.00 : 4a87ba: 4c 89 ff mov %r15,%rdi 0.00 : 4a87bd: e8 1e 08 00 00 callq 4a8fe0 <_bt_relandgetbuf> : page = BufferGetPage(rbuf); 0.00 : 4a87c2: 85 c0 test %eax,%eax : rbuf = InvalidBuffer; : : rblkno = lpageop->btpo_next; : for (;;) : { : rbuf = _bt_relandgetbuf(rel, rbuf, rblkno, BT_WRITE); 0.00 : 4a87c4: 89 c3 mov %eax,%ebx : page = BufferGetPage(rbuf); 0.00 : 4a87c6: 0f 88 8c 00 00 00 js 4a8858 <_bt_doinsert+0x248> 0.00 : 4a87cc: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 4a87cf: 4c 63 f0 movslq %eax,%r14 0.00 : 4a87d2: 49 c1 e6 0d shl $0xd,%r14 0.00 : 4a87d6: 4c 03 35 1b 73 71 00 add 0x71731b(%rip),%r14 # bbfaf8 : lpageop = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a87dd: 41 0f b7 46 10 movzwl 0x10(%r14),%eax 0.00 : 4a87e2: 4d 8d 24 06 lea (%r14,%rax,1),%r12 : * If this page was incompletely split, finish the split now. We : * do this while holding a lock on the left sibling, which is not : * good because finishing the split could be a fairly lengthy : * operation. But this should happen very seldom. : */ : if (P_INCOMPLETE_SPLIT(lpageop)) 0.00 : 4a87e6: 41 0f b7 44 24 0c movzwl 0xc(%r12),%eax 0.00 : 4a87ec: 84 c0 test %al,%al 0.00 : 4a87ee: 78 50 js 4a8840 <_bt_doinsert+0x230> : _bt_finish_split(rel, rbuf, stack); : rbuf = InvalidBuffer; : continue; : } : : if (!P_IGNORE(lpageop)) 0.00 : 4a87f0: a8 14 test $0x14,%al 0.00 : 4a87f2: 74 7c je 4a8870 <_bt_doinsert+0x260> : break; : if (P_RIGHTMOST(lpageop)) 0.00 : 4a87f4: 45 8b 6c 24 04 mov 0x4(%r12),%r13d 0.00 : 4a87f9: 45 85 ed test %r13d,%r13d 0.00 : 4a87fc: 75 b2 jne 4a87b0 <_bt_doinsert+0x1a0> : elog(ERROR, "fell off the end of index \"%s\"", 0.00 : 4a87fe: ba 10 43 7b 00 mov $0x7b4310,%edx 0.00 : 4a8803: be 7f 02 00 00 mov $0x27f,%esi 0.00 : 4a8808: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a880d: e8 0e 2c 2d 00 callq 77b420 0.00 : 4a8812: 49 8b 57 30 mov 0x30(%r15),%rdx 0.00 : 4a8816: be 60 41 7b 00 mov $0x7b4160,%esi 0.00 : 4a881b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a8820: 31 c0 xor %eax,%eax 0.00 : 4a8822: e8 09 2a 2d 00 callq 77b230 0.00 : 4a8827: e8 a4 0c fc ff callq 4694d0 : IndexTuple newtup, : BTStack stack, : Relation heapRel) : { : Buffer buf = *bufptr; : Page page = BufferGetPage(buf); 0.00 : 4a882c: 48 8b 15 e5 48 6d 00 mov 0x6d48e5(%rip),%rdx # b7d118 0.00 : 4a8833: f7 d0 not %eax 0.00 : 4a8835: 48 98 cltq 0.00 : 4a8837: 4c 8b 34 c2 mov (%rdx,%rax,8),%r14 0.00 : 4a883b: e9 ab fe ff ff jmpq 4a86eb <_bt_doinsert+0xdb> : * good because finishing the split could be a fairly lengthy : * operation. But this should happen very seldom. : */ : if (P_INCOMPLETE_SPLIT(lpageop)) : { : _bt_finish_split(rel, rbuf, stack); 0.00 : 4a8840: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 4a8844: 89 de mov %ebx,%esi 0.00 : 4a8846: 4c 89 ff mov %r15,%rdi 0.00 : 4a8849: 31 db xor %ebx,%ebx 0.00 : 4a884b: e8 90 f2 ff ff callq 4a7ae0 <_bt_finish_split> 0.00 : 4a8850: e9 5b ff ff ff jmpq 4a87b0 <_bt_doinsert+0x1a0> 0.00 : 4a8855: 0f 1f 00 nopl (%rax) : : rblkno = lpageop->btpo_next; : for (;;) : { : rbuf = _bt_relandgetbuf(rel, rbuf, rblkno, BT_WRITE); : page = BufferGetPage(rbuf); 0.00 : 4a8858: 48 8b 15 b9 48 6d 00 mov 0x6d48b9(%rip),%rdx # b7d118 0.00 : 4a885f: f7 d0 not %eax 0.00 : 4a8861: 48 98 cltq 0.00 : 4a8863: 4c 8b 34 c2 mov (%rdx,%rax,8),%r14 0.00 : 4a8867: e9 71 ff ff ff jmpq 4a87dd <_bt_doinsert+0x1cd> 0.00 : 4a886c: 0f 1f 40 00 nopl 0x0(%rax) : elog(ERROR, "fell off the end of index \"%s\"", : RelationGetRelationName(rel)); : : rblkno = lpageop->btpo_next; : } : _bt_relbuf(rel, buf); 0.00 : 4a8870: 8b 75 bc mov -0x44(%rbp),%esi 0.00 : 4a8873: 4c 89 ff mov %r15,%rdi 0.00 : 4a8876: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4a887c: e8 4f 07 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a8881: 89 5d bc mov %ebx,-0x44(%rbp) 0.00 : 4a8884: e9 ba fe ff ff jmpq 4a8743 <_bt_doinsert+0x133> 0.00 : 4a8889: 4c 8d 6d d7 lea -0x29(%rbp),%r13 0.00 : 4a888d: e9 90 00 00 00 jmpq 4a8922 <_bt_doinsert+0x312> 0.00 : 4a8892: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : checkUnique, &is_unique); : : if (TransactionIdIsValid(xwait)) : { : /* Have to wait for the other guy ... */ : _bt_relbuf(rel, buf); 0.00 : 4a8898: 8b 75 d0 mov -0x30(%rbp),%esi 0.00 : 4a889b: 4c 89 ff mov %r15,%rdi 0.00 : 4a889e: e8 2d 07 00 00 callq 4a8fd0 <_bt_relbuf> : XactLockTableWait(xwait, rel, &itup->t_tid, XLTW_InsertIndex); 0.00 : 4a88a3: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 4a88a7: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 4a88ac: 4c 89 fe mov %r15,%rsi 0.00 : 4a88af: 89 df mov %ebx,%edi 0.00 : 4a88b1: e8 ea f8 1d 00 callq 6881a0 : /* start over... */ : _bt_freestack(stack); 0.00 : 4a88b6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4a88ba: e8 b1 6f 00 00 callq 4af870 <_bt_freestack> : /* we need an insertion scan key to do our search, so build one */ : itup_scankey = _bt_mkscankey(rel, itup); : : top: : /* find the first page containing this key */ : stack = _bt_search(rel, natts, itup_scankey, false, &buf, BT_WRITE); 0.00 : 4a88bf: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 4a88c3: 8b 75 a4 mov -0x5c(%rbp),%esi 0.00 : 4a88c6: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 4a88cc: 4d 89 f0 mov %r14,%r8 0.00 : 4a88cf: 31 c9 xor %ecx,%ecx 0.00 : 4a88d1: 4c 89 ff mov %r15,%rdi 0.00 : 4a88d4: e8 27 48 00 00 callq 4ad100 <_bt_search> : : offset = InvalidOffsetNumber; : : /* trade in our read lock for a write lock */ : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 4a88d9: 8b 7d d0 mov -0x30(%rbp),%edi 0.00 : 4a88dc: 31 f6 xor %esi,%esi : /* we need an insertion scan key to do our search, so build one */ : itup_scankey = _bt_mkscankey(rel, itup); : : top: : /* find the first page containing this key */ : stack = _bt_search(rel, natts, itup_scankey, false, &buf, BT_WRITE); 0.00 : 4a88de: 48 89 45 b0 mov %rax,-0x50(%rbp) : : offset = InvalidOffsetNumber; : : /* trade in our read lock for a write lock */ : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 4a88e2: e8 29 be 1c 00 callq 674710 : LockBuffer(buf, BT_WRITE); 0.00 : 4a88e7: 8b 7d d0 mov -0x30(%rbp),%edi 0.00 : 4a88ea: be 02 00 00 00 mov $0x2,%esi 0.00 : 4a88ef: e8 1c be 1c 00 callq 674710 : * lock and acquired our write lock, then this page may no longer be the : * right place for the key we want to insert. In this case, we need to : * move right in the tree. See Lehman and Yao for an excruciatingly : * precise description. : */ : buf = _bt_moveright(rel, buf, natts, itup_scankey, false, 0.00 : 4a88f4: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 4a88f8: 8b 75 d0 mov -0x30(%rbp),%esi 0.00 : 4a88fb: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 4a8901: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 4a8905: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8908: 4c 89 ff mov %r15,%rdi 0.00 : 4a890b: c7 44 24 08 02 00 00 movl $0x2,0x8(%rsp) 0.00 : 4a8912: 00 0.00 : 4a8913: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 4a8917: 8b 55 a4 mov -0x5c(%rbp),%edx 0.00 : 4a891a: e8 51 46 00 00 callq 4acf70 <_bt_moveright> 0.00 : 4a891f: 89 45 d0 mov %eax,-0x30(%rbp) : */ : if (checkUnique != UNIQUE_CHECK_NO) : { : TransactionId xwait; : : offset = _bt_binsrch(rel, buf, natts, itup_scankey, false); 0.00 : 4a8922: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 4a8926: 8b 55 a4 mov -0x5c(%rbp),%edx 0.00 : 4a8929: 45 31 c0 xor %r8d,%r8d 0.00 : 4a892c: 89 c6 mov %eax,%esi 0.00 : 4a892e: 4c 89 ff mov %r15,%rdi 0.00 : 4a8931: e8 2a 45 00 00 callq 4ace60 <_bt_binsrch> : xwait = _bt_check_unique(rel, itup, heapRel, buf, offset, itup_scankey, 0.00 : 4a8936: 8b 4d d0 mov -0x30(%rbp),%ecx 0.00 : 4a8939: 4c 8b 4d a8 mov -0x58(%rbp),%r9 0.00 : 4a893d: 44 0f b7 c0 movzwl %ax,%r8d 0.00 : 4a8941: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 4a8945: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 4a8949: 4c 89 ff mov %r15,%rdi : */ : if (checkUnique != UNIQUE_CHECK_NO) : { : TransactionId xwait; : : offset = _bt_binsrch(rel, buf, natts, itup_scankey, false); 0.00 : 4a894c: 66 89 45 ba mov %ax,-0x46(%rbp) : xwait = _bt_check_unique(rel, itup, heapRel, buf, offset, itup_scankey, 0.00 : 4a8950: 4c 89 6c 24 08 mov %r13,0x8(%rsp) 0.00 : 4a8955: 44 89 24 24 mov %r12d,(%rsp) 0.00 : 4a8959: e8 c2 f6 ff ff callq 4a8020 <_bt_check_unique> : checkUnique, &is_unique); : : if (TransactionIdIsValid(xwait)) 0.00 : 4a895e: 85 c0 test %eax,%eax : if (checkUnique != UNIQUE_CHECK_NO) : { : TransactionId xwait; : : offset = _bt_binsrch(rel, buf, natts, itup_scankey, false); : xwait = _bt_check_unique(rel, itup, heapRel, buf, offset, itup_scankey, 0.00 : 4a8960: 89 c3 mov %eax,%ebx : checkUnique, &is_unique); : : if (TransactionIdIsValid(xwait)) 0.00 : 4a8962: 0f 85 30 ff ff ff jne 4a8898 <_bt_doinsert+0x288> : _bt_freestack(stack); : goto top; : } : } : : if (checkUnique != UNIQUE_CHECK_EXISTING) 0.00 : 4a8968: 41 83 fc 03 cmp $0x3,%r12d 0.00 : 4a896c: 0f 85 4a fd ff ff jne 4a86bc <_bt_doinsert+0xac> : _bt_insertonpg(rel, buf, InvalidBuffer, stack, itup, offset, false); : } : else : { : /* just release the buffer */ : _bt_relbuf(rel, buf); 0.00 : 4a8972: 8b 75 d0 mov -0x30(%rbp),%esi 0.00 : 4a8975: 4c 89 ff mov %r15,%rdi 0.00 : 4a8978: e8 53 06 00 00 callq 4a8fd0 <_bt_relbuf> : } : : /* be tidy */ : _bt_freestack(stack); 0.00 : 4a897d: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4a8981: e8 ea 6e 00 00 callq 4af870 <_bt_freestack> : _bt_freeskey(itup_scankey); 0.00 : 4a8986: 48 8b 7d a8 mov -0x58(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:201 11.11 : 4a898a: e8 11 6f 00 00 callq 4af8a0 <_bt_freeskey> 0.00 : 4a898f: 0f b6 45 d7 movzbl -0x29(%rbp),%eax : : return is_unique; : } 0.00 : 4a8993: 48 83 c4 58 add $0x58,%rsp 0.00 : 4a8997: 5b pop %rbx 0.00 : 4a8998: 41 5c pop %r12 0.00 : 4a899a: 41 5d pop %r13 0.00 : 4a899c: 41 5e pop %r14 0.00 : 4a899e: 41 5f pop %r15 0.00 : 4a89a0: c9 leaveq 0.00 : 4a89a1: c3 retq : * before considering moving right, see if we can obtain enough space : * by erasing LP_DEAD items : */ : if (P_ISLEAF(lpageop) && P_HAS_GARBAGE(lpageop)) : { : _bt_vacuum_one_page(rel, buf, heapRel); 0.00 : 4a89a2: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 4a89a6: 8b 75 bc mov -0x44(%rbp),%esi 0.00 : 4a89a9: 4c 89 ff mov %r15,%rdi 0.00 : 4a89ac: e8 8f fb ff ff callq 4a8540 <_bt_vacuum_one_page> : * remember that we vacuumed this page, because that makes the : * hint supplied by the caller invalid : */ : vacuumed = true; : : if (PageGetFreeSpace(page) >= itemsz) 0.00 : 4a89b1: 4c 89 f7 mov %r14,%rdi 0.00 : 4a89b4: e8 67 c3 1e 00 callq 694d20 0.00 : 4a89b9: 48 39 45 c0 cmp %rax,-0x40(%rbp) 0.00 : 4a89bd: 76 73 jbe 4a8a32 <_bt_doinsert+0x422> 0.00 : 4a89bf: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 4a89c4: e9 a0 fd ff ff jmpq 4a8769 <_bt_doinsert+0x159> : * excellent job of preventing O(N^2) behavior with many equal keys. : *---------- : */ : movedright = false; : vacuumed = false; : while (PageGetFreeSpace(page) < itemsz) 0.00 : 4a89c9: 31 db xor %ebx,%ebx : * didn't move right, we can use the firstlegaloff hint if the caller : * supplied one, unless we vacuumed the page which might have moved tuples : * around making the hint invalid. If we didn't move right or can't use : * the hint, find the position by searching. : */ : if (movedright) 0.00 : 4a89cb: 45 84 ed test %r13b,%r13b 0.00 : 4a89ce: 66 90 xchg %ax,%ax 0.00 : 4a89d0: 74 35 je 4a8a07 <_bt_doinsert+0x3f7> : newitemoff = P_FIRSTDATAKEY(lpageop); 0.00 : 4a89d2: 41 83 7c 24 04 01 cmpl $0x1,0x4(%r12) 0.00 : 4a89d8: 19 c0 sbb %eax,%eax 0.00 : 4a89da: 83 c0 02 add $0x2,%eax : else if (firstlegaloff != InvalidOffsetNumber && !vacuumed) : newitemoff = firstlegaloff; : else : newitemoff = _bt_binsrch(rel, buf, keysz, scankey, false); : : *bufptr = buf; 0.00 : 4a89dd: 8b 55 bc mov -0x44(%rbp),%edx : */ : CheckForSerializableConflictIn(rel, NULL, buf); : /* do the insertion */ : _bt_findinsertloc(rel, &buf, &offset, natts, itup_scankey, itup, : stack, heapRel); : _bt_insertonpg(rel, buf, InvalidBuffer, stack, itup, offset, false); 0.00 : 4a89e0: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 4a89e4: 41 89 c1 mov %eax,%r9d /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:191 11.11 : 4a89e7: 48 8b 4d b0 mov -0x50(%rbp),%rcx 11.11 : 4a89eb: 8b 75 bc mov -0x44(%rbp),%esi 0.00 : 4a89ee: 4c 89 ff mov %r15,%rdi 0.00 : 4a89f1: c7 04 24 00 00 00 00 movl $0x0,(%rsp) : else if (firstlegaloff != InvalidOffsetNumber && !vacuumed) : newitemoff = firstlegaloff; : else : newitemoff = _bt_binsrch(rel, buf, keysz, scankey, false); : : *bufptr = buf; 0.00 : 4a89f8: 89 55 d0 mov %edx,-0x30(%rbp) : */ : CheckForSerializableConflictIn(rel, NULL, buf); : /* do the insertion */ : _bt_findinsertloc(rel, &buf, &offset, natts, itup_scankey, itup, : stack, heapRel); : _bt_insertonpg(rel, buf, InvalidBuffer, stack, itup, offset, false); 0.00 : 4a89fb: 31 d2 xor %edx,%edx 0.00 : 4a89fd: e8 ce d6 ff ff callq 4a60d0 <_bt_insertonpg> 0.00 : 4a8a02: e9 76 ff ff ff jmpq 4a897d <_bt_doinsert+0x36d> : * around making the hint invalid. If we didn't move right or can't use : * the hint, find the position by searching. : */ : if (movedright) : newitemoff = P_FIRSTDATAKEY(lpageop); : else if (firstlegaloff != InvalidOffsetNumber && !vacuumed) 0.00 : 4a8a07: 66 83 7d ba 00 cmpw $0x0,-0x46(%rbp) 0.00 : 4a8a0c: 75 1a jne 4a8a28 <_bt_doinsert+0x418> : newitemoff = firstlegaloff; : else : newitemoff = _bt_binsrch(rel, buf, keysz, scankey, false); 0.00 : 4a8a0e: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 4a8a12: 8b 55 a4 mov -0x5c(%rbp),%edx 0.00 : 4a8a15: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8a18: 8b 75 bc mov -0x44(%rbp),%esi 0.00 : 4a8a1b: 4c 89 ff mov %r15,%rdi 0.00 : 4a8a1e: e8 3d 44 00 00 callq 4ace60 <_bt_binsrch> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:662 11.11 : 4a8a23: 0f b7 c0 movzwl %ax,%eax 0.00 : 4a8a26: eb b5 jmp 4a89dd <_bt_doinsert+0x3cd> : * around making the hint invalid. If we didn't move right or can't use : * the hint, find the position by searching. : */ : if (movedright) : newitemoff = P_FIRSTDATAKEY(lpageop); : else if (firstlegaloff != InvalidOffsetNumber && !vacuumed) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:659 11.11 : 4a8a28: 84 db test %bl,%bl 0.00 : 4a8a2a: 0f b7 45 ba movzwl -0x46(%rbp),%eax 0.00 : 4a8a2e: 74 ad je 4a89dd <_bt_doinsert+0x3cd> 0.00 : 4a8a30: eb dc jmp 4a8a0e <_bt_doinsert+0x3fe> : * remember that we vacuumed this page, because that makes the : * hint supplied by the caller invalid : */ : vacuumed = true; : : if (PageGetFreeSpace(page) >= itemsz) 0.00 : 4a8a32: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 4a8a37: eb 92 jmp 4a89cb <_bt_doinsert+0x3bb> : * include the ItemId. : * : * NOTE: if you change this, see also the similar code in _bt_buildadd(). : */ : if (itemsz > BTMaxItemSize(page)) : ereport(ERROR, 0.00 : 4a8a39: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8a3c: b9 10 43 7b 00 mov $0x7b4310,%ecx 0.00 : 4a8a41: ba 28 02 00 00 mov $0x228,%edx 0.00 : 4a8a46: be d1 3c 7b 00 mov $0x7b3cd1,%esi 0.00 : 4a8a4b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a8a50: e8 6b 20 2d 00 callq 77aac0 0.00 : 4a8a55: 84 c0 test %al,%al 0.00 : 4a8a57: 0f 84 ca fd ff ff je 4a8827 <_bt_doinsert+0x217> 0.00 : 4a8a5d: 49 8b 77 30 mov 0x30(%r15),%rsi 0.00 : 4a8a61: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 4a8a65: e8 b6 10 2c 00 callq 769b20 0.00 : 4a8a6a: bf f0 41 7b 00 mov $0x7b41f0,%edi 0.00 : 4a8a6f: 41 89 c4 mov %eax,%r12d 0.00 : 4a8a72: 31 c0 xor %eax,%eax 0.00 : 4a8a74: e8 27 32 2d 00 callq 77bca0 0.00 : 4a8a79: 41 0f b7 56 12 movzwl 0x12(%r14),%edx 0.00 : 4a8a7e: 41 89 c5 mov %eax,%r13d 0.00 : 4a8a81: 49 8b 4f 30 mov 0x30(%r15),%rcx 0.00 : 4a8a85: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 4a8a89: bf 20 0d 7b 00 mov $0x7b0d20,%edi 0.00 : 4a8a8e: 81 e2 00 ff 00 00 and $0xff00,%edx 0.00 : 4a8a94: 48 83 ea 38 sub $0x38,%rdx 0.00 : 4a8a98: 48 89 d0 mov %rdx,%rax 0.00 : 4a8a9b: 48 f7 e3 mul %rbx 0.00 : 4a8a9e: 31 c0 xor %eax,%eax 0.00 : 4a8aa0: 48 d1 ea shr %rdx 0.00 : 4a8aa3: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.00 : 4a8aa7: e8 f4 3d 2d 00 callq 77c8a0 0.00 : 4a8aac: bf 05 01 00 00 mov $0x105,%edi 0.00 : 4a8ab1: 89 c3 mov %eax,%ebx 0.00 : 4a8ab3: e8 98 42 2d 00 callq 77cd50 0.00 : 4a8ab8: 44 89 e1 mov %r12d,%ecx 0.00 : 4a8abb: 89 c7 mov %eax,%edi 0.00 : 4a8abd: 44 89 ea mov %r13d,%edx 0.00 : 4a8ac0: 89 de mov %ebx,%esi 0.00 : 4a8ac2: 31 c0 xor %eax,%eax 0.00 : 4a8ac4: e8 17 1b 2d 00 callq 77a5e0 0.00 : 4a8ac9: e9 59 fd ff ff jmpq 4a8827 <_bt_doinsert+0x217> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:865 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:929 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:930 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:930 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000681cb0 : : * This buys back some concurrency (and we can't retrieve the main Xids from : * PGXACT again anyway; see GetNewTransactionId). : */ : bool : TransactionIdIsInProgress(TransactionId xid) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 14.29 : 681cb0: 55 push %rbp 0.00 : 681cb1: 48 89 e5 mov %rsp,%rbp 0.00 : 681cb4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 681cb8: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 681cbc: 41 89 fc mov %edi,%r12d 14.29 : 681cbf: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 681cc3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 681cc7: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 681ccb: 48 83 ec 50 sub $0x50,%rsp : static TransactionId *xids = NULL; : int nxids = 0; : ProcArrayStruct *arrayP = procArray; 0.00 : 681ccf: 48 8b 05 52 b9 4f 00 mov 0x4fb952(%rip),%rax # b7d628 : * Don't bother checking a transaction older than RecentXmin; it could not : * possibly still be running. (Note: in particular, this guarantees that : * we reject InvalidTransactionId, FrozenTransactionId, etc as not : * running.) : */ : if (TransactionIdPrecedes(xid, RecentXmin)) 0.00 : 681cd6: 8b 35 80 0a 4f 00 mov 0x4f0a80(%rip),%esi # b7275c : bool : TransactionIdIsInProgress(TransactionId xid) : { : static TransactionId *xids = NULL; : int nxids = 0; : ProcArrayStruct *arrayP = procArray; 0.00 : 681cdc: 48 89 45 c0 mov %rax,-0x40(%rbp) : * Don't bother checking a transaction older than RecentXmin; it could not : * possibly still be running. (Note: in particular, this guarantees that : * we reject InvalidTransactionId, FrozenTransactionId, etc as not : * running.) : */ : if (TransactionIdPrecedes(xid, RecentXmin)) /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:865 14.29 : 681ce0: e8 fb e2 e3 ff callq 4bffe0 0.00 : 681ce5: 84 c0 test %al,%al 0.00 : 681ce7: 74 1f je 681d08 : */ : topxid = SubTransGetTopmostTransaction(xid); : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) : { : for (i = 0; i < nxids; i++) 0.00 : 681ce9: 31 c0 xor %eax,%eax : return true; : } : } : : return false; : } 0.00 : 681ceb: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 681cef: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 681cf3: 4c 8b 6d e8 mov -0x18(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 14.29 : 681cf7: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 681cfb: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 681cff: c9 leaveq 0.00 : 681d00: c3 retq 0.00 : 681d01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * We may have just checked the status of this transaction, so if it is : * already known to be completed, we can fall out without any access to : * shared memory. : */ : if (TransactionIdIsKnownCompleted(xid)) 0.00 : 681d08: 44 89 e7 mov %r12d,%edi 0.00 : 681d0b: e8 c0 e2 e3 ff callq 4bffd0 0.00 : 681d10: 84 c0 test %al,%al 0.00 : 681d12: 75 d5 jne 681ce9 : : /* : * Also, we can handle our own transaction (and subtransactions) without : * any access to shared memory. : */ : if (TransactionIdIsCurrentTransactionId(xid)) 0.00 : 681d14: 44 89 e7 mov %r12d,%edi 0.00 : 681d17: e8 84 27 e4 ff callq 4c44a0 0.00 : 681d1c: 84 c0 test %al,%al 0.00 : 681d1e: 66 90 xchg %ax,%ax 0.00 : 681d20: 0f 85 0a 02 00 00 jne 681f30 : : /* : * If first time through, get workspace to remember main XIDs in. We : * malloc it permanently to avoid repeated palloc/pfree overhead. : */ : if (xids == NULL) 0.00 : 681d26: 48 83 3d f2 b8 4f 00 cmpq $0x0,0x4fb8f2(%rip) # b7d620 0.00 : 681d2d: 00 0.00 : 681d2e: 0f 84 06 02 00 00 je 681f3a : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : LWLockAcquire(ProcArrayLock, LW_SHARED); 0.00 : 681d34: 48 8b 3d c5 bc 4f 00 mov 0x4fbcc5(%rip),%rdi # b7da00 0.00 : 681d3b: be 01 00 00 00 mov $0x1,%esi 0.00 : 681d40: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681d44: e8 a7 dd 00 00 callq 68faf0 : : /* : * Now that we have the lock, we can check latestCompletedXid; if the : * target Xid is after that, it's surely still running. : */ : if (TransactionIdPrecedes(ShmemVariableCache->latestCompletedXid, xid)) 0.00 : 681d49: 48 8b 05 38 70 4f 00 mov 0x4f7038(%rip),%rax # b78d88 0.00 : 681d50: 44 89 e6 mov %r12d,%esi 0.00 : 681d53: 8b 78 24 mov 0x24(%rax),%edi 0.00 : 681d56: e8 85 e2 e3 ff callq 4bffe0 0.00 : 681d5b: 84 c0 test %al,%al 0.00 : 681d5d: 0f 85 ad 01 00 00 jne 681f10 : xc_by_latest_xid_inc(); : return true; : } : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) 0.00 : 681d63: 48 8b 45 c0 mov -0x40(%rbp),%rax : * Now that we have the lock, we can check latestCompletedXid; if the : * target Xid is after that, it's surely still running. : */ : if (TransactionIdPrecedes(ShmemVariableCache->latestCompletedXid, xid)) : { : LWLockRelease(ProcArrayLock); 0.00 : 681d67: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) 0.00 : 681d6e: 45 31 f6 xor %r14d,%r14d : xc_by_latest_xid_inc(); : return true; : } : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) 0.00 : 681d71: 8b 00 mov (%rax),%eax 0.00 : 681d73: 85 c0 test %eax,%eax 0.00 : 681d75: 0f 8e de 00 00 00 jle 681e59 0.00 : 681d7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : int pgprocno = arrayP->pgprocnos[i]; : volatile PGPROC *proc = &allProcs[pgprocno]; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:929 14.29 : 681d80: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 681d84: 49 63 c6 movslq %r14d,%rax 0.00 : 681d87: 48 63 44 82 28 movslq 0x28(%rdx,%rax,4),%rax : volatile PGXACT *pgxact = &allPgXact[pgprocno]; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:930 14.29 : 681d8c: 48 8b 15 a5 b8 4f 00 mov 0x4fb8a5(%rip),%rdx # b7d638 : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) : { : int pgprocno = arrayP->pgprocnos[i]; : volatile PGPROC *proc = &allProcs[pgprocno]; 0.00 : 681d93: 48 69 d8 f0 02 00 00 imul $0x2f0,%rax,%rbx 0.00 : 681d9a: 48 03 1d 8f b8 4f 00 add 0x4fb88f(%rip),%rbx # b7d630 : volatile PGXACT *pgxact = &allPgXact[pgprocno]; : TransactionId pxid; : : /* Ignore my own proc --- dealt with it above */ : if (proc == MyProc) 0.00 : 681da1: 48 3b 1d a0 bb 4f 00 cmp 0x4fbba0(%rip),%rbx # b7d948 0.00 : 681da8: 0f 84 9a 00 00 00 je 681e48 : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) : { : int pgprocno = arrayP->pgprocnos[i]; : volatile PGPROC *proc = &allProcs[pgprocno]; : volatile PGXACT *pgxact = &allPgXact[pgprocno]; 14.29 : 681dae: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 681db2: 4c 8d 3c 82 lea (%rdx,%rax,4),%r15 : /* Ignore my own proc --- dealt with it above */ : if (proc == MyProc) : continue; : : /* Fetch xid just once - see GetNewTransactionId */ : pxid = pgxact->xid; 0.00 : 681db6: 45 8b 2f mov (%r15),%r13d : : if (!TransactionIdIsValid(pxid)) 0.00 : 681db9: 45 85 ed test %r13d,%r13d 0.00 : 681dbc: 0f 84 86 00 00 00 je 681e48 : continue; : : /* : * Step 1: check the main Xid : */ : if (TransactionIdEquals(pxid, xid)) 0.00 : 681dc2: 45 39 e5 cmp %r12d,%r13d 0.00 : 681dc5: 0f 84 45 01 00 00 je 681f10 : : /* : * We can ignore main Xids that are younger than the target Xid, since : * the target could not possibly be their child. : */ : if (TransactionIdPrecedes(xid, pxid)) 0.00 : 681dcb: 44 89 ee mov %r13d,%esi 0.00 : 681dce: 44 89 e7 mov %r12d,%edi 0.00 : 681dd1: e8 0a e2 e3 ff callq 4bffe0 0.00 : 681dd6: 84 c0 test %al,%al 0.00 : 681dd8: 75 6e jne 681e48 : continue; : : /* : * Step 2: check the cached child-Xids arrays : */ : for (j = pgxact->nxids - 1; j >= 0; j--) 0.00 : 681dda: 41 0f b6 47 0b movzbl 0xb(%r15),%eax 0.00 : 681ddf: 0f b6 f0 movzbl %al,%esi 0.00 : 681de2: 89 f1 mov %esi,%ecx 0.00 : 681de4: 83 e9 01 sub $0x1,%ecx 0.00 : 681de7: 78 3d js 681e26 : { : /* Fetch xid just once - see GetNewTransactionId */ : TransactionId cxid = proc->subxids.xids[j]; 0.00 : 681de9: 48 63 c1 movslq %ecx,%rax 0.00 : 681dec: 48 83 c0 64 add $0x64,%rax 0.00 : 681df0: 8b 04 83 mov (%rbx,%rax,4),%eax : : if (TransactionIdEquals(cxid, xid)) 0.00 : 681df3: 44 39 e0 cmp %r12d,%eax 0.00 : 681df6: 0f 84 14 01 00 00 je 681f10 : { : LWLockRelease(ProcArrayLock); 0.00 : 681dfc: 31 d2 xor %edx,%edx : continue; : : /* : * Step 2: check the cached child-Xids arrays : */ : for (j = pgxact->nxids - 1; j >= 0; j--) 0.00 : 681dfe: 83 ee 02 sub $0x2,%esi 0.00 : 681e01: eb 1c jmp 681e1f 0.00 : 681e03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* Fetch xid just once - see GetNewTransactionId */ : TransactionId cxid = proc->subxids.xids[j]; 0.00 : 681e08: 48 63 c1 movslq %ecx,%rax 0.00 : 681e0b: 48 83 c2 01 add $0x1,%rdx 0.00 : 681e0f: 48 83 c0 64 add $0x64,%rax 0.00 : 681e13: 8b 04 83 mov (%rbx,%rax,4),%eax : : if (TransactionIdEquals(cxid, xid)) 0.00 : 681e16: 44 39 e0 cmp %r12d,%eax 0.00 : 681e19: 0f 84 f1 00 00 00 je 681f10 : continue; : : /* : * Step 2: check the cached child-Xids arrays : */ : for (j = pgxact->nxids - 1; j >= 0; j--) 0.00 : 681e1f: 83 e9 01 sub $0x1,%ecx 0.00 : 681e22: 39 d6 cmp %edx,%esi 0.00 : 681e24: 79 e2 jns 681e08 : * that have uncached children. (Note: there is no race condition : * here because the overflowed flag cannot be cleared, only set, while : * we hold ProcArrayLock. So we can't miss an Xid that we need to : * worry about.) : */ : if (pgxact->overflowed) 0.00 : 681e26: 41 0f b6 47 09 movzbl 0x9(%r15),%eax 0.00 : 681e2b: 84 c0 test %al,%al 0.00 : 681e2d: 74 19 je 681e48 : xids[nxids++] = pxid; 0.00 : 681e2f: 48 63 55 bc movslq -0x44(%rbp),%rdx 0.00 : 681e33: 48 8b 05 e6 b7 4f 00 mov 0x4fb7e6(%rip),%rax # b7d620 0.00 : 681e3a: 44 89 2c 90 mov %r13d,(%rax,%rdx,4) 0.00 : 681e3e: 83 45 bc 01 addl $0x1,-0x44(%rbp) 0.00 : 681e42: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : xc_by_latest_xid_inc(); : return true; : } : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) 0.00 : 681e48: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 681e4c: 41 83 c6 01 add $0x1,%r14d 0.00 : 681e50: 44 39 30 cmp %r14d,(%rax) 0.00 : 681e53: 0f 8f 27 ff ff ff jg 681d80 : : /* : * Step 3: in hot standby mode, check the known-assigned-xids list. XIDs : * in the list must be treated as running. : */ : if (RecoveryInProgress()) 0.00 : 681e59: e8 62 b6 e4 ff callq 4cd4c0 0.00 : 681e5e: 84 c0 test %al,%al 0.00 : 681e60: 74 2c je 681e8e : static bool : KnownAssignedXidExists(TransactionId xid) : { : Assert(TransactionIdIsValid(xid)); : : return KnownAssignedXidsSearch(xid, false); 0.00 : 681e62: 31 f6 xor %esi,%esi 0.00 : 681e64: 44 89 e7 mov %r12d,%edi 0.00 : 681e67: e8 a4 e3 ff ff callq 680210 : if (RecoveryInProgress()) : { : /* none of the PGXACT entries should have XIDs in hot standby mode */ : Assert(nxids == 0); : : if (KnownAssignedXidExists(xid)) 0.00 : 681e6c: 84 c0 test %al,%al 0.00 : 681e6e: 0f 85 9c 00 00 00 jne 681f10 : * too. Fetch all xids from KnownAssignedXids that are lower than : * xid, since if xid is a subtransaction its parent will always have a : * lower value. Note we will collect both main and subXIDs here, but : * there's no help for it. : */ : if (TransactionIdPrecedesOrEquals(xid, procArray->lastOverflowedXid)) 0.00 : 681e74: 48 8b 05 ad b7 4f 00 mov 0x4fb7ad(%rip),%rax # b7d628 0.00 : 681e7b: 44 89 e7 mov %r12d,%edi 0.00 : 681e7e: 8b 70 1c mov 0x1c(%rax),%esi 0.00 : 681e81: e8 8a e1 e3 ff callq 4c0010 0.00 : 681e86: 84 c0 test %al,%al 0.00 : 681e88: 0f 85 1b 01 00 00 jne 681fa9 : nxids = KnownAssignedXidsGet(xids, xid); : } : : LWLockRelease(ProcArrayLock); 0.00 : 681e8e: 48 8b 3d 6b bb 4f 00 mov 0x4fbb6b(%rip),%rdi # b7da00 0.00 : 681e95: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681e99: e8 02 d5 00 00 callq 68f3a0 : : /* : * If none of the relevant caches overflowed, we know the Xid is not : * running without even looking at pg_subtrans. : */ : if (nxids == 0) 0.00 : 681e9e: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 681ea1: 85 c0 test %eax,%eax 0.00 : 681ea3: 0f 84 40 fe ff ff je 681ce9 : * subtransaction, we want to say "not running" even though its parent may : * still be running. So first, check pg_clog to see if it's been aborted. : */ : xc_slow_answer_inc(); : : if (TransactionIdDidAbort(xid)) 0.00 : 681ea9: 44 89 e7 mov %r12d,%edi 0.00 : 681eac: e8 7f e3 e3 ff callq 4c0230 0.00 : 681eb1: 84 c0 test %al,%al 0.00 : 681eb3: 0f 85 30 fe ff ff jne 681ce9 : /* : * It isn't aborted, so check whether the transaction tree it belongs to : * is still running (or, more precisely, whether it was running when we : * held ProcArrayLock). : */ : topxid = SubTransGetTopmostTransaction(xid); 0.00 : 681eb9: 44 89 e7 mov %r12d,%edi 0.00 : 681ebc: e8 2f 4a e4 ff callq 4c68f0 : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) 0.00 : 681ec1: 41 39 c4 cmp %eax,%r12d : /* : * It isn't aborted, so check whether the transaction tree it belongs to : * is still running (or, more precisely, whether it was running when we : * held ProcArrayLock). : */ : topxid = SubTransGetTopmostTransaction(xid); 0.00 : 681ec4: 89 c6 mov %eax,%esi : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) 0.00 : 681ec6: 0f 84 1d fe ff ff je 681ce9 : { : for (i = 0; i < nxids; i++) 0.00 : 681ecc: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 681ecf: 85 c0 test %eax,%eax 0.00 : 681ed1: 0f 8e 12 fe ff ff jle 681ce9 : { : if (TransactionIdEquals(xids[i], topxid)) 0.00 : 681ed7: 48 8b 0d 42 b7 4f 00 mov 0x4fb742(%rip),%rcx # b7d620 0.00 : 681ede: 31 d2 xor %edx,%edx 0.00 : 681ee0: 3b 31 cmp (%rcx),%esi 0.00 : 681ee2: 75 17 jne 681efb 0.00 : 681ee4: eb 4a jmp 681f30 0.00 : 681ee6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 681eed: 00 00 00 0.00 : 681ef0: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 681ef3: 48 83 c1 04 add $0x4,%rcx 0.00 : 681ef7: 39 c6 cmp %eax,%esi 0.00 : 681ef9: 74 35 je 681f30 : */ : topxid = SubTransGetTopmostTransaction(xid); : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) : { : for (i = 0; i < nxids; i++) 0.00 : 681efb: 83 c2 01 add $0x1,%edx 0.00 : 681efe: 39 55 bc cmp %edx,-0x44(%rbp) 0.00 : 681f01: 7f ed jg 681ef0 0.00 : 681f03: e9 e1 fd ff ff jmpq 681ce9 0.00 : 681f08: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 681f0f: 00 : /* none of the PGXACT entries should have XIDs in hot standby mode */ : Assert(nxids == 0); : : if (KnownAssignedXidExists(xid)) : { : LWLockRelease(ProcArrayLock); 0.00 : 681f10: 48 8b 3d e9 ba 4f 00 mov 0x4fbae9(%rip),%rdi # b7da00 0.00 : 681f17: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681f1b: e8 80 d4 00 00 callq 68f3a0 0.00 : 681f20: b8 01 00 00 00 mov $0x1,%eax : return true; : } : } : : return false; : } 0.00 : 681f25: e9 c1 fd ff ff jmpq 681ceb 0.00 : 681f2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : topxid = SubTransGetTopmostTransaction(xid); : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) : { : for (i = 0; i < nxids; i++) 0.00 : 681f30: b8 01 00 00 00 mov $0x1,%eax 0.00 : 681f35: e9 b1 fd ff ff jmpq 681ceb 0.00 : 681f3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * In hot standby mode, reserve enough space to hold all xids in the : * known-assigned list. If we later finish recovery, we no longer need : * the bigger array, but we don't bother to shrink it. : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; 0.00 : 681f40: e8 7b b5 e4 ff callq 4cd4c0 0.00 : 681f45: 84 c0 test %al,%al 0.00 : 681f47: 74 57 je 681fa0 0.00 : 681f49: 8b 05 a1 71 4f 00 mov 0x4f71a1(%rip),%eax # b790f0 0.00 : 681f4f: 03 05 77 81 53 00 add 0x538177(%rip),%eax # bba0cc 0.00 : 681f55: 89 c2 mov %eax,%edx 0.00 : 681f57: c1 e2 06 shl $0x6,%edx 0.00 : 681f5a: 8d 04 02 lea (%rdx,%rax,1),%eax : : xids = (TransactionId *) malloc(maxxids * sizeof(TransactionId)); 0.00 : 681f5d: 48 63 f8 movslq %eax,%rdi 0.00 : 681f60: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 681f64: e8 c7 76 de ff callq 469630 : if (xids == NULL) 0.00 : 681f69: 48 85 c0 test %rax,%rax : * known-assigned list. If we later finish recovery, we no longer need : * the bigger array, but we don't bother to shrink it. : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; : : xids = (TransactionId *) malloc(maxxids * sizeof(TransactionId)); 0.00 : 681f6c: 48 89 05 ad b6 4f 00 mov %rax,0x4fb6ad(%rip) # b7d620 : if (xids == NULL) 0.00 : 681f73: 0f 85 bb fd ff ff jne 681d34 : ereport(ERROR, 0.00 : 681f79: 45 31 c0 xor %r8d,%r8d 0.00 : 681f7c: b9 20 b9 8a 00 mov $0x8ab920,%ecx 0.00 : 681f81: ba 8d 03 00 00 mov $0x38d,%edx 0.00 : 681f86: be 7a b5 8a 00 mov $0x8ab57a,%esi 0.00 : 681f8b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 681f90: e8 2b 8b 0f 00 callq 77aac0 0.00 : 681f95: 84 c0 test %al,%al 0.00 : 681f97: 75 32 jne 681fcb 0.00 : 681f99: e8 32 75 de ff callq 4694d0 0.00 : 681f9e: 66 90 xchg %ax,%ax : /* : * In hot standby mode, reserve enough space to hold all xids in the : * known-assigned list. If we later finish recovery, we no longer need : * the bigger array, but we don't bother to shrink it. : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; 0.00 : 681fa0: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 681fa4: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 681fa7: eb b4 jmp 681f5d : * xid, since if xid is a subtransaction its parent will always have a : * lower value. Note we will collect both main and subXIDs here, but : * there's no help for it. : */ : if (TransactionIdPrecedesOrEquals(xid, procArray->lastOverflowedXid)) : nxids = KnownAssignedXidsGet(xids, xid); 0.00 : 681fa9: 48 8b 3d 70 b6 4f 00 mov 0x4fb670(%rip),%rdi # b7d620 : static int : KnownAssignedXidsGet(TransactionId *xarray, TransactionId xmax) : { : TransactionId xtmp = InvalidTransactionId; : : return KnownAssignedXidsGetAndSetXmin(xarray, &xtmp, xmax); 0.00 : 681fb0: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 681fb4: 44 89 e2 mov %r12d,%edx : * Caller must hold ProcArrayLock in (at least) shared mode. : */ : static int : KnownAssignedXidsGet(TransactionId *xarray, TransactionId xmax) : { : TransactionId xtmp = InvalidTransactionId; 0.00 : 681fb7: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%rbp) : : return KnownAssignedXidsGetAndSetXmin(xarray, &xtmp, xmax); 0.00 : 681fbe: e8 3d e5 ff ff callq 680500 0.00 : 681fc3: 89 45 bc mov %eax,-0x44(%rbp) 0.00 : 681fc6: e9 c3 fe ff ff jmpq 681e8e : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; : : xids = (TransactionId *) malloc(maxxids * sizeof(TransactionId)); : if (xids == NULL) : ereport(ERROR, 0.00 : 681fcb: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 681fd0: 31 c0 xor %eax,%eax 0.00 : 681fd2: e8 c9 a8 0f 00 callq 77c8a0 0.00 : 681fd7: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 681fdc: 89 c3 mov %eax,%ebx 0.00 : 681fde: e8 6d ad 0f 00 callq 77cd50 0.00 : 681fe3: 89 de mov %ebx,%esi 0.00 : 681fe5: 89 c7 mov %eax,%edi 0.00 : 681fe7: 31 c0 xor %eax,%eax 0.00 : 681fe9: e8 f2 85 0f 00 callq 77a5e0 0.00 : 681fee: eb a9 jmp 681f99 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1741 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1741 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1844 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2464 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2456 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006894f0 : : * the waking process and any new process to : * come along and request the lock.) : */ : bool : LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock) : { 0.00 : 6894f0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1741 20.00 : 6894f1: 49 89 f9 mov %rdi,%r9 0.00 : 6894f4: 48 89 e5 mov %rsp,%rbp 0.00 : 6894f7: 4c 89 65 e0 mov %r12,-0x20(%rbp) 20.00 : 6894fb: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 6894ff: 41 89 d4 mov %edx,%r12d 0.00 : 689502: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 689506: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 68950a: 41 89 f6 mov %esi,%r14d 0.00 : 68950d: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 689511: 48 83 ec 70 sub $0x70,%rsp : LOCKMETHODID lockmethodid = locktag->locktag_lockmethodid; 0.00 : 689515: 0f b6 5f 0f movzbl 0xf(%rdi),%ebx : LOCK *lock; : PROCLOCK *proclock; : LWLock *partitionLock; : bool wakeupNeeded; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) 0.00 : 689519: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 68951c: 66 83 f8 01 cmp $0x1,%ax 0.00 : 689520: 0f 87 d7 03 00 00 ja 6898fd : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 689526: 0f b7 c3 movzwl %bx,%eax : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 689529: 85 f6 test %esi,%esi : LWLock *partitionLock; : bool wakeupNeeded; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68952b: 48 8b 04 c5 e0 c9 8a mov 0x8ac9e0(,%rax,8),%rax 0.00 : 689532: 00 0.00 : 689533: 48 89 45 98 mov %rax,-0x68(%rbp) : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 689537: 0f 8e db 00 00 00 jle 689618 0.00 : 68953d: 3b 30 cmp (%rax),%esi 0.00 : 68953f: 0f 8f d3 00 00 00 jg 689618 : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 689545: 48 8b 07 mov (%rdi),%rax : #endif : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ 0.00 : 689548: 48 8d 75 a0 lea -0x60(%rbp),%rsi : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68954c: 31 c9 xor %ecx,%ecx 0.00 : 68954e: 31 d2 xor %edx,%edx : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 689550: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 689554: 48 8b 47 08 mov 0x8(%rdi),%rax : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 689558: 48 8b 3d b1 43 4f 00 mov 0x4f43b1(%rip),%rdi # b7d910 0.00 : 68955f: 4c 89 4d 90 mov %r9,-0x70(%rbp) : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; 0.00 : 689563: 44 89 75 b0 mov %r14d,-0x50(%rbp) : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 689567: 48 89 45 a8 mov %rax,-0x58(%rbp) : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68956b: e8 30 b1 0f 00 callq 7846a0 : HASH_FIND, NULL); : : /* : * let the caller print its own error message, too. Do not ereport(ERROR). : */ : if (!locallock || locallock->nLocks <= 0) 0.00 : 689570: 48 85 c0 test %rax,%rax : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 689573: 49 89 c7 mov %rax,%r15 : HASH_FIND, NULL); : : /* : * let the caller print its own error message, too. Do not ereport(ERROR). : */ : if (!locallock || locallock->nLocks <= 0) 0.00 : 689576: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 68957a: 0f 84 f0 02 00 00 je 689870 0.00 : 689580: 48 83 78 30 00 cmpq $0x0,0x30(%rax) 0.00 : 689585: 0f 8e e5 02 00 00 jle 689870 : : /* : * Decrease the count for the resource owner. : */ : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; 0.00 : 68958b: 4c 8b 68 48 mov 0x48(%rax),%r13 : if (sessionLock) : owner = NULL; : else : owner = CurrentResourceOwner; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) 0.00 : 68958f: 8b 40 38 mov 0x38(%rax),%eax : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : ResourceOwner owner; : int i; : : /* Identify owner for lock */ : if (sessionLock) 0.00 : 689592: 31 ff xor %edi,%edi 0.00 : 689594: 45 84 e4 test %r12b,%r12b 0.00 : 689597: 48 0f 44 3d 21 13 53 cmove 0x531321(%rip),%rdi # bba8c0 0.00 : 68959e: 00 : owner = NULL; : else : owner = CurrentResourceOwner; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) 0.00 : 68959f: 89 c3 mov %eax,%ebx 0.00 : 6895a1: eb 1b jmp 6895be 0.00 : 6895a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (lockOwners[i].owner == owner) 0.00 : 6895a8: 48 63 c3 movslq %ebx,%rax 0.00 : 6895ab: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6895af: 4d 8d 64 05 00 lea 0x0(%r13,%rax,1),%r12 0.00 : 6895b4: 49 39 3c 24 cmp %rdi,(%r12) 0.00 : 6895b8: 0f 84 8a 00 00 00 je 689648 : if (sessionLock) : owner = NULL; : else : owner = CurrentResourceOwner; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) 0.00 : 6895be: 83 eb 01 sub $0x1,%ebx 0.00 : 6895c1: 79 e5 jns 6895a8 : } : } : if (i < 0) : { : /* don't release a lock belonging to another owner */ : elog(WARNING, "you don't own a lock of type %s", 0.00 : 6895c3: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 6895c8: be 1c 07 00 00 mov $0x71c,%esi 0.00 : 6895cd: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 6895d2: e8 49 1e 0f 00 callq 77b420 0.00 : 6895d7: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 6895db: 49 63 c6 movslq %r14d,%rax 0.00 : 6895de: be 30 c8 8a 00 mov $0x8ac830,%esi 0.00 : 6895e3: bf 13 00 00 00 mov $0x13,%edi 0.00 : 6895e8: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 6895ec: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 6895f0: 31 c0 xor %eax,%eax 0.00 : 6895f2: e8 39 1c 0f 00 callq 77b230 0.00 : 6895f7: 31 d2 xor %edx,%edx : : LWLockRelease(partitionLock); : : RemoveLocalLock(locallock); : return TRUE; : } 0.00 : 6895f9: 89 d0 mov %edx,%eax 0.00 : 6895fb: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 6895ff: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 689603: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 689607: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 68960b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 68960f: c9 leaveq 0.00 : 689610: c3 retq 0.00 : 689611: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) : elog(ERROR, "unrecognized lock mode: %d", lockmode); 0.00 : 689618: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 68961d: be db 06 00 00 mov $0x6db,%esi 0.00 : 689622: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 689627: e8 f4 1d 0f 00 callq 77b420 0.00 : 68962c: 44 89 f2 mov %r14d,%edx 0.00 : 68962f: be 60 c6 8a 00 mov $0x8ac660,%esi 0.00 : 689634: bf 14 00 00 00 mov $0x14,%edi 0.00 : 689639: 31 c0 xor %eax,%eax 0.00 : 68963b: e8 f0 1b 0f 00 callq 77b230 0.00 : 689640: e8 8b fe dd ff callq 4694d0 0.00 : 689645: 0f 1f 00 nopl (%rax) : for (i = locallock->numLockOwners - 1; i >= 0; i--) : { : if (lockOwners[i].owner == owner) : { : Assert(lockOwners[i].nLocks > 0); : if (--lockOwners[i].nLocks == 0) 0.00 : 689648: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 68964d: 48 83 e8 01 sub $0x1,%rax 0.00 : 689651: 48 85 c0 test %rax,%rax 0.00 : 689654: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 689659: 75 28 jne 689683 : { : if (owner != NULL) 0.00 : 68965b: 48 85 ff test %rdi,%rdi 0.00 : 68965e: 74 10 je 689670 : ResourceOwnerForgetLock(owner, locallock); 0.00 : 689660: 4c 89 fe mov %r15,%rsi 0.00 : 689663: 4c 89 4d 90 mov %r9,-0x70(%rbp) 0.00 : 689667: e8 04 12 11 00 callq 79a870 0.00 : 68966c: 4c 8b 4d 90 mov -0x70(%rbp),%r9 : /* compact out unused slot */ : locallock->numLockOwners--; 0.00 : 689670: 41 8b 47 38 mov 0x38(%r15),%eax 0.00 : 689674: 83 e8 01 sub $0x1,%eax : if (i < locallock->numLockOwners) 0.00 : 689677: 39 d8 cmp %ebx,%eax : if (--lockOwners[i].nLocks == 0) : { : if (owner != NULL) : ResourceOwnerForgetLock(owner, locallock); : /* compact out unused slot */ : locallock->numLockOwners--; 0.00 : 689679: 41 89 47 38 mov %eax,0x38(%r15) : if (i < locallock->numLockOwners) 0.00 : 68967d: 0f 8f fd 01 00 00 jg 689880 : : /* : * Decrease the total local count. If we're still holding the lock, we're : * done. : */ : locallock->nLocks--; 0.00 : 689683: 49 8b 47 30 mov 0x30(%r15),%rax : : if (locallock->nLocks > 0) 0.00 : 689687: ba 01 00 00 00 mov $0x1,%edx : : /* : * Decrease the total local count. If we're still holding the lock, we're : * done. : */ : locallock->nLocks--; 0.00 : 68968c: 48 83 e8 01 sub $0x1,%rax : : if (locallock->nLocks > 0) 0.00 : 689690: 48 85 c0 test %rax,%rax : : /* : * Decrease the total local count. If we're still holding the lock, we're : * done. : */ : locallock->nLocks--; 0.00 : 689693: 49 89 47 30 mov %rax,0x30(%r15) : : if (locallock->nLocks > 0) 0.00 : 689697: 0f 8f 5c ff ff ff jg 6895f9 : return TRUE; : : /* Attempt fast release of any lock eligible for the fast path. */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68969d: 66 41 81 79 0e 00 01 cmpw $0x100,0xe(%r9) 0.00 : 6896a4: 0f 85 fe 00 00 00 jne 6897a8 0.00 : 6896aa: 41 8b 01 mov (%r9),%eax 0.00 : 6896ad: 3b 05 f5 09 53 00 cmp 0x5309f5(%rip),%eax # bba0a8 0.00 : 6896b3: 0f 85 ef 00 00 00 jne 6897a8 0.00 : 6896b9: 85 c0 test %eax,%eax 0.00 : 6896bb: 0f 84 e7 00 00 00 je 6897a8 0.00 : 6896c1: 41 83 fe 03 cmp $0x3,%r14d 0.00 : 6896c5: 0f 8f dd 00 00 00 jg 6897a8 0.00 : 6896cb: 8b 3d 1f 42 4f 00 mov 0x4f421f(%rip),%edi # b7d8f0 0.00 : 6896d1: 85 ff test %edi,%edi 0.00 : 6896d3: 0f 8e cf 00 00 00 jle 6897a8 : : /* : * We might not find the lock here, even if we originally entered it : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 6896d9: 48 8b 05 68 42 4f 00 mov 0x4f4268(%rip),%rax # b7d948 0.00 : 6896e0: 31 f6 xor %esi,%esi : FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode) : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; 0.00 : 6896e2: 31 db xor %ebx,%ebx 0.00 : 6896e4: 45 31 e4 xor %r12d,%r12d : : /* : * We might not find the lock here, even if we originally entered it : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 6896e7: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi 0.00 : 6896ee: 4c 89 4d 90 mov %r9,-0x70(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1844 20.00 : 6896f2: e8 f9 63 00 00 callq 68faf0 : released = FastPathUnGrantRelationLock(locktag->locktag_field2, 0.00 : 6896f7: 4c 8b 4d 90 mov -0x70(%rbp),%r9 : FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode) : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; 0.00 : 6896fb: 41 8d 7e ff lea -0x1(%r14),%edi 0.00 : 6896ff: 31 d2 xor %edx,%edx 0.00 : 689701: 48 8b 35 40 42 4f 00 mov 0x4f4240(%rip),%rsi # b7d948 : { : if (MyProc->fpRelId[f] == relid : && FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)) : { : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); 0.00 : 689708: 41 bb 01 00 00 00 mov $0x1,%r11d : /* : * We might not find the lock here, even if we originally entered it : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : released = FastPathUnGrantRelationLock(locktag->locktag_field2, 0.00 : 68970e: 45 8b 51 04 mov 0x4(%r9),%r10d : FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode) : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; 0.00 : 689712: c7 05 d4 41 4f 00 00 movl $0x0,0x4f41d4(%rip) # b7d8f0 0.00 : 689719: 00 00 00 0.00 : 68971c: eb 29 jmp 689747 0.00 : 68971e: 66 90 xchg %ax,%ax : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); : result = true; : /* we continue iterating so as to update FastPathLocalUseCount */ : } : if (FAST_PATH_GET_BITS(MyProc, f) != 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2464 20.00 : 689720: 48 8b 86 98 02 00 00 mov 0x298(%rsi),%rax 0.00 : 689727: 44 89 e1 mov %r12d,%ecx 0.00 : 68972a: 48 d3 e8 shr %cl,%rax 0.00 : 68972d: a8 07 test $0x7,%al 0.00 : 68972f: 74 07 je 689738 : ++FastPathLocalUseCount; 0.00 : 689731: 83 05 b8 41 4f 00 01 addl $0x1,0x4f41b8(%rip) # b7d8f0 : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) 0.00 : 689738: 83 c2 01 add $0x1,%edx 0.00 : 68973b: 41 83 c4 03 add $0x3,%r12d 0.00 : 68973f: 83 c7 03 add $0x3,%edi 0.00 : 689742: 83 fa 10 cmp $0x10,%edx 0.00 : 689745: 74 40 je 689787 : { : if (MyProc->fpRelId[f] == relid 0.00 : 689747: 89 d0 mov %edx,%eax 0.00 : 689749: 44 3b 94 86 a0 02 00 cmp 0x2a0(%rsi,%rax,4),%r10d 0.00 : 689750: 00 0.00 : 689751: 75 cd jne 689720 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2456 20.00 : 689753: 4c 8b 86 98 02 00 00 mov 0x298(%rsi),%r8 0.00 : 68975a: 89 f9 mov %edi,%ecx 0.00 : 68975c: 4c 89 c0 mov %r8,%rax 0.00 : 68975f: 48 d3 e8 shr %cl,%rax 0.00 : 689762: a8 01 test $0x1,%al 0.00 : 689764: 74 ba je 689720 : && FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)) : { : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); 0.00 : 689766: 4c 89 d8 mov %r11,%rax 0.00 : 689769: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 68976e: 48 d3 e0 shl %cl,%rax 0.00 : 689771: 48 f7 d0 not %rax 0.00 : 689774: 4c 21 c0 and %r8,%rax 0.00 : 689777: 48 89 86 98 02 00 00 mov %rax,0x298(%rsi) 0.00 : 68977e: 48 8b 35 c3 41 4f 00 mov 0x4f41c3(%rip),%rsi # b7d948 0.00 : 689785: eb 99 jmp 689720 : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : released = FastPathUnGrantRelationLock(locktag->locktag_field2, : lockmode); : LWLockRelease(MyProc->backendLock); 0.00 : 689787: 48 8b be 90 02 00 00 mov 0x290(%rsi),%rdi 0.00 : 68978e: 4c 89 4d 90 mov %r9,-0x70(%rbp) 0.00 : 689792: e8 09 5c 00 00 callq 68f3a0 : if (released) 0.00 : 689797: 84 db test %bl,%bl 0.00 : 689799: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 68979d: 0f 85 b8 00 00 00 jne 68985b 0.00 : 6897a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* : * Otherwise we've got to mess with the shared lock table. : */ : partitionLock = LockHashPartitionLock(locallock->hashcode); 0.00 : 6897a8: 41 8b 47 28 mov 0x28(%r15),%eax : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 6897ac: 31 f6 xor %esi,%esi 0.00 : 6897ae: 4c 89 4d 90 mov %r9,-0x70(%rbp) : } : : /* : * Otherwise we've got to mess with the shared lock table. : */ : partitionLock = LockHashPartitionLock(locallock->hashcode); 0.00 : 6897b2: 83 e0 0f and $0xf,%eax 0.00 : 6897b5: 4c 8d 60 26 lea 0x26(%rax),%r12 0.00 : 6897b9: 49 c1 e4 05 shl $0x5,%r12 0.00 : 6897bd: 4c 03 25 3c 42 4f 00 add 0x4f423c(%rip),%r12 # b7da00 : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 6897c4: 4c 89 e7 mov %r12,%rdi 0.00 : 6897c7: e8 24 63 00 00 callq 68faf0 : * removed while we were holding a lock on them. But it's possible that : * the lock was taken fast-path and has since been moved to the main hash : * table by another backend, in which case we will need to look up the : * objects here. We assume the lock field is NULL if so. : */ : lock = locallock->lock; 0.00 : 6897cc: 49 8b 5f 18 mov 0x18(%r15),%rbx : if (!lock) 0.00 : 6897d0: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 6897d4: 48 85 db test %rbx,%rbx 0.00 : 6897d7: 0f 84 4d 01 00 00 je 68992a : NULL); : if (!locallock->proclock) : elog(ERROR, "failed to re-find shared proclock object"); : } : LOCK_PRINT("LockRelease: found", lock, lockmode); : proclock = locallock->proclock; 0.00 : 6897dd: 49 8b 77 20 mov 0x20(%r15),%rsi : : /* : * Double-check that we are actually holding a lock of the type we want to : * release. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) 0.00 : 6897e1: 44 89 f1 mov %r14d,%ecx 0.00 : 6897e4: 8b 46 10 mov 0x10(%rsi),%eax 0.00 : 6897e7: d3 f8 sar %cl,%eax 0.00 : 6897e9: a8 01 test $0x1,%al 0.00 : 6897eb: 0f 84 c1 00 00 00 je 6898b2 : Assert(lock->nGranted <= lock->nRequested); : : /* : * fix the general lock stats : */ : lock->nRequested--; 0.00 : 6897f1: 83 6b 68 01 subl $0x1,0x68(%rbx) : lock->requested[lockmode]--; 0.00 : 6897f5: 49 63 fe movslq %r14d,%rdi 0.00 : 6897f8: 83 6c bb 40 01 subl $0x1,0x40(%rbx,%rdi,4) : lock->nGranted--; : lock->granted[lockmode]--; 0.00 : 6897fd: 48 8d 57 18 lea 0x18(%rdi),%rdx : /* : * fix the general lock stats : */ : lock->nRequested--; : lock->requested[lockmode]--; : lock->nGranted--; 0.00 : 689801: 83 ab 94 00 00 00 01 subl $0x1,0x94(%rbx) : lock->granted[lockmode]--; 0.00 : 689808: 8b 44 93 0c mov 0xc(%rbx,%rdx,4),%eax 0.00 : 68980c: 83 e8 01 sub $0x1,%eax : : if (lock->granted[lockmode] == 0) 0.00 : 68980f: 85 c0 test %eax,%eax : * fix the general lock stats : */ : lock->nRequested--; : lock->requested[lockmode]--; : lock->nGranted--; : lock->granted[lockmode]--; 0.00 : 689811: 89 44 93 0c mov %eax,0xc(%rbx,%rdx,4) : : if (lock->granted[lockmode] == 0) 0.00 : 689815: 0f 84 82 00 00 00 je 68989d 0.00 : 68981b: 41 b8 fe ff ff ff mov $0xfffffffe,%r8d 0.00 : 689821: 44 89 f1 mov %r14d,%ecx 0.00 : 689824: 41 d3 c0 rol %cl,%r8d : * skip wakeup if lock->granted[lockmode] was still positive. But that's : * not true anymore, because the remaining granted locks might belong to : * some waiter, who could now be awakened because he doesn't conflict with : * his own locks. : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) 0.00 : 689827: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 68982b: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 68982f: 8b 04 b8 mov (%rax,%rdi,4),%eax 0.00 : 689832: 23 43 14 and 0x14(%rbx),%eax : /* : * Do the releasing. CleanUpLock will waken any now-wakable waiters. : */ : wakeupNeeded = UnGrantLock(lock, lockmode, proclock, lockMethodTable); : : CleanUpLock(lock, proclock, 0.00 : 689835: 48 89 df mov %rbx,%rdi : wakeupNeeded = true; : : /* : * Now fix the per-proclock state. : */ : proclock->holdMask &= LOCKBIT_OFF(lockmode); 0.00 : 689838: 44 21 46 10 and %r8d,0x10(%rsi) : /* : * Do the releasing. CleanUpLock will waken any now-wakable waiters. : */ : wakeupNeeded = UnGrantLock(lock, lockmode, proclock, lockMethodTable); : : CleanUpLock(lock, proclock, 0.00 : 68983c: 41 8b 4f 28 mov 0x28(%r15),%ecx 0.00 : 689840: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 689844: 85 c0 test %eax,%eax 0.00 : 689846: 41 0f 95 c0 setne %r8b 0.00 : 68984a: 41 83 e0 01 and $0x1,%r8d 0.00 : 68984e: e8 6d f1 ff ff callq 6889c0 : lockMethodTable, locallock->hashcode, : wakeupNeeded); : : LWLockRelease(partitionLock); 0.00 : 689853: 4c 89 e7 mov %r12,%rdi 0.00 : 689856: e8 45 5b 00 00 callq 68f3a0 : : RemoveLocalLock(locallock); 0.00 : 68985b: 4c 89 ff mov %r15,%rdi 0.00 : 68985e: e8 dd f8 ff ff callq 689140 0.00 : 689863: ba 01 00 00 00 mov $0x1,%edx : return TRUE; : } 0.00 : 689868: e9 8c fd ff ff jmpq 6895f9 0.00 : 68986d: 0f 1f 00 nopl (%rax) : /* : * let the caller print its own error message, too. Do not ereport(ERROR). : */ : if (!locallock || locallock->nLocks <= 0) : { : elog(WARNING, "you don't own a lock of type %s", 0.00 : 689870: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 689875: be f5 06 00 00 mov $0x6f5,%esi 0.00 : 68987a: e9 4e fd ff ff jmpq 6895cd 0.00 : 68987f: 90 nop : if (owner != NULL) : ResourceOwnerForgetLock(owner, locallock); : /* compact out unused slot */ : locallock->numLockOwners--; : if (i < locallock->numLockOwners) : lockOwners[i] = lockOwners[locallock->numLockOwners]; 0.00 : 689880: 48 98 cltq 0.00 : 689882: 48 c1 e0 04 shl $0x4,%rax 0.00 : 689886: 4a 8b 14 28 mov (%rax,%r13,1),%rdx 0.00 : 68988a: 49 89 14 24 mov %rdx,(%r12) 0.00 : 68988e: 4a 8b 44 28 08 mov 0x8(%rax,%r13,1),%rax 0.00 : 689893: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 689898: e9 e6 fd ff ff jmpq 689683 : lock->granted[lockmode]--; : : if (lock->granted[lockmode] == 0) : { : /* change the conflict mask. No more of this lock type. */ : lock->grantMask &= LOCKBIT_OFF(lockmode); 0.00 : 68989d: 41 b8 fe ff ff ff mov $0xfffffffe,%r8d 0.00 : 6898a3: 44 89 f1 mov %r14d,%ecx 0.00 : 6898a6: 41 d3 c0 rol %cl,%r8d 0.00 : 6898a9: 44 21 43 10 and %r8d,0x10(%rbx) 0.00 : 6898ad: e9 75 ff ff ff jmpq 689827 : * release. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) : { : PROCLOCK_PRINT("LockRelease: WRONGTYPE", proclock); : LWLockRelease(partitionLock); 0.00 : 6898b2: 4c 89 e7 mov %r12,%rdi 0.00 : 6898b5: e8 e6 5a 00 00 callq 68f3a0 : elog(WARNING, "you don't own a lock of type %s", 0.00 : 6898ba: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 6898bf: be 73 07 00 00 mov $0x773,%esi 0.00 : 6898c4: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 6898c9: e8 52 1b 0f 00 callq 77b420 0.00 : 6898ce: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 6898d2: 49 63 c6 movslq %r14d,%rax 0.00 : 6898d5: be 30 c8 8a 00 mov $0x8ac830,%esi 0.00 : 6898da: bf 13 00 00 00 mov $0x13,%edi 0.00 : 6898df: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 6898e3: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 6898e7: 31 c0 xor %eax,%eax 0.00 : 6898e9: e8 42 19 0f 00 callq 77b230 : lockMethodTable->lockModeNames[lockmode]); : RemoveLocalLock(locallock); 0.00 : 6898ee: 4c 89 ff mov %r15,%rdi 0.00 : 6898f1: e8 4a f8 ff ff callq 689140 0.00 : 6898f6: 31 d2 xor %edx,%edx : : LWLockRelease(partitionLock); : : RemoveLocalLock(locallock); : return TRUE; : } 0.00 : 6898f8: e9 fc fc ff ff jmpq 6895f9 : PROCLOCK *proclock; : LWLock *partitionLock; : bool wakeupNeeded; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); 0.00 : 6898fd: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 689902: be d8 06 00 00 mov $0x6d8,%esi 0.00 : 689907: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68990c: e8 0f 1b 0f 00 callq 77b420 0.00 : 689911: 0f b7 d3 movzwl %bx,%edx 0.00 : 689914: be 29 c6 8a 00 mov $0x8ac629,%esi 0.00 : 689919: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68991e: 31 c0 xor %eax,%eax 0.00 : 689920: e8 0b 19 0f 00 callq 77b230 0.00 : 689925: e8 a6 fb dd ff callq 4694d0 : if (!lock) : { : PROCLOCKTAG proclocktag; : : Assert(EligibleForRelationFastPath(locktag, lockmode)); : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 68992a: 41 8b 57 28 mov 0x28(%r15),%edx 0.00 : 68992e: 48 8b 3d cb 3f 4f 00 mov 0x4f3fcb(%rip),%rdi # b7d900 0.00 : 689935: 45 31 c0 xor %r8d,%r8d 0.00 : 689938: 31 c9 xor %ecx,%ecx 0.00 : 68993a: 4c 89 ce mov %r9,%rsi 0.00 : 68993d: e8 0e a7 0f 00 callq 784050 : (const void *) locktag, : locallock->hashcode, : HASH_FIND, : NULL); : if (!lock) 0.00 : 689942: 48 85 c0 test %rax,%rax : if (!lock) : { : PROCLOCKTAG proclocktag; : : Assert(EligibleForRelationFastPath(locktag, lockmode)); : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 689945: 48 89 c3 mov %rax,%rbx : (const void *) locktag, : locallock->hashcode, : HASH_FIND, : NULL); : if (!lock) 0.00 : 689948: 74 5e je 6899a8 : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; 0.00 : 68994a: 49 89 47 18 mov %rax,0x18(%r15) : : proclocktag.myLock = lock; 0.00 : 68994e: 48 89 45 c0 mov %rax,-0x40(%rbp) : proclocktag.myProc = MyProc; : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 689952: 48 8d 75 c0 lea -0x40(%rbp),%rsi : if (!lock) : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; : : proclocktag.myLock = lock; : proclocktag.myProc = MyProc; 0.00 : 689956: 48 8b 05 eb 3f 4f 00 mov 0x4f3feb(%rip),%rax # b7d948 : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 68995d: 48 8b 3d a4 3f 4f 00 mov 0x4f3fa4(%rip),%rdi # b7d908 0.00 : 689964: 31 c9 xor %ecx,%ecx 0.00 : 689966: 31 d2 xor %edx,%edx : if (!lock) : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; : : proclocktag.myLock = lock; : proclocktag.myProc = MyProc; 0.00 : 689968: 48 89 45 c8 mov %rax,-0x38(%rbp) : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 68996c: e8 2f ad 0f 00 callq 7846a0 : (void *) &proclocktag, : HASH_FIND, : NULL); : if (!locallock->proclock) 0.00 : 689971: 48 85 c0 test %rax,%rax : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; : : proclocktag.myLock = lock; : proclocktag.myProc = MyProc; : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 689974: 49 89 47 20 mov %rax,0x20(%r15) : (void *) &proclocktag, : HASH_FIND, : NULL); : if (!locallock->proclock) 0.00 : 689978: 0f 85 5f fe ff ff jne 6897dd : elog(ERROR, "failed to re-find shared proclock object"); 0.00 : 68997e: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 689983: be 64 07 00 00 mov $0x764,%esi 0.00 : 689988: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68998d: e8 8e 1a 0f 00 callq 77b420 0.00 : 689992: be 78 c8 8a 00 mov $0x8ac878,%esi 0.00 : 689997: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68999c: 31 c0 xor %eax,%eax 0.00 : 68999e: e8 8d 18 0f 00 callq 77b230 0.00 : 6899a3: e8 28 fb dd ff callq 4694d0 : (const void *) locktag, : locallock->hashcode, : HASH_FIND, : NULL); : if (!lock) : elog(ERROR, "failed to re-find shared lock object"); 0.00 : 6899a8: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 6899ad: be 5a 07 00 00 mov $0x75a,%esi 0.00 : 6899b2: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 6899b7: e8 64 1a 0f 00 callq 77b420 0.00 : 6899bc: be 50 c8 8a 00 mov $0x8ac850,%esi 0.00 : 6899c1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6899c6: 31 c0 xor %eax,%eax 0.00 : 6899c8: e8 63 18 0f 00 callq 77b230 0.00 : 6899cd: e8 fe fa dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2417 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:745 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:762 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:821 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:834 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068b670 : : LockAcquireExtended(const LOCKTAG *locktag, : LOCKMODE lockmode, : bool sessionLock, : bool dontWait, : bool reportMemoryError) : { 0.00 : 68b670: 55 push %rbp 0.00 : 68b671: 48 89 e5 mov %rsp,%rbp 0.00 : 68b674: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 68b678: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 68b67c: 41 89 d4 mov %edx,%r12d 0.00 : 68b67f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 68b683: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 68b687: 41 89 f6 mov %esi,%r14d 0.00 : 68b68a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 68b68e: 48 81 ec b0 00 00 00 sub $0xb0,%rsp 0.00 : 68b695: 48 89 bd 60 ff ff ff mov %rdi,-0xa0(%rbp) 0.00 : 68b69c: 88 8d 5f ff ff ff mov %cl,-0xa1(%rbp) 0.00 : 68b6a2: 44 88 85 5e ff ff ff mov %r8b,-0xa2(%rbp) : LOCKMETHODID lockmethodid = locktag->locktag_lockmethodid; 0.00 : 68b6a9: 0f b6 5f 0f movzbl 0xf(%rdi),%ebx : uint32 hashcode; : LWLock *partitionLock; : int status; : bool log_lock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) 0.00 : 68b6ad: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 68b6b0: 66 83 f8 01 cmp $0x1,%ax 0.00 : 68b6b4: 0f 87 0a 06 00 00 ja 68bcc4 : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68b6ba: 0f b7 c3 movzwl %bx,%eax : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 68b6bd: 85 f6 test %esi,%esi : int status; : bool log_lock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68b6bf: 48 8b 04 c5 e0 c9 8a mov 0x8ac9e0(,%rax,8),%rax 0.00 : 68b6c6: 00 0.00 : 68b6c7: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 68b6ce: 7e 04 jle 68b6d4 0.00 : 68b6d0: 3b 30 cmp (%rax),%esi 0.00 : 68b6d2: 7e 34 jle 68b708 : elog(ERROR, "unrecognized lock mode: %d", lockmode); 0.00 : 68b6d4: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68b6d9: be c9 02 00 00 mov $0x2c9,%esi 0.00 : 68b6de: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68b6e3: e8 38 fd 0e 00 callq 77b420 0.00 : 68b6e8: 44 89 f2 mov %r14d,%edx 0.00 : 68b6eb: be 60 c6 8a 00 mov $0x8ac660,%esi 0.00 : 68b6f0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68b6f5: 31 c0 xor %eax,%eax 0.00 : 68b6f7: e8 34 fb 0e 00 callq 77b230 0.00 : 68b6fc: e8 cf dd dd ff callq 4694d0 0.00 : 68b701: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (RecoveryInProgress() && !InRecovery && 0.00 : 68b708: e8 b3 1d e4 ff callq 4cd4c0 0.00 : 68b70d: 84 c0 test %al,%al 0.00 : 68b70f: 90 nop 0.00 : 68b710: 74 4e je 68b760 0.00 : 68b712: 80 3d 4f da 4e 00 00 cmpb $0x0,0x4eda4f(%rip) # b79168 0.00 : 68b719: 75 45 jne 68b760 0.00 : 68b71b: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68b722: 0f b6 42 0e movzbl 0xe(%rdx),%eax 0.00 : 68b726: 3c 06 cmp $0x6,%al 0.00 : 68b728: 74 04 je 68b72e 0.00 : 68b72a: 84 c0 test %al,%al 0.00 : 68b72c: 75 32 jne 68b760 0.00 : 68b72e: 41 83 fe 03 cmp $0x3,%r14d 0.00 : 68b732: 7e 2c jle 68b760 : (locktag->locktag_type == LOCKTAG_OBJECT || : locktag->locktag_type == LOCKTAG_RELATION) && : lockmode > RowExclusiveLock) : ereport(ERROR, 0.00 : 68b734: 45 31 c0 xor %r8d,%r8d 0.00 : 68b737: b9 c0 cb 8a 00 mov $0x8acbc0,%ecx 0.00 : 68b73c: ba d3 02 00 00 mov $0x2d3,%edx 0.00 : 68b741: be 93 d1 8a 00 mov $0x8ad193,%esi 0.00 : 68b746: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68b74b: e8 70 f3 0e 00 callq 77aac0 0.00 : 68b750: 84 c0 test %al,%al 0.00 : 68b752: 0f 85 56 08 00 00 jne 68bfae : AbortStrongLockAcquire(); : PROCLOCK_PRINT("LockAcquire: INCONSISTENT", proclock); : LOCK_PRINT("LockAcquire: INCONSISTENT", lock, lockmode); : /* Should we retry ? */ : LWLockRelease(partitionLock); : elog(ERROR, "LockAcquire failed"); 0.00 : 68b758: e8 73 dd dd ff callq 4694d0 0.00 : 68b75d: 0f 1f 00 nopl (%rax) : locktag->locktag_field1, locktag->locktag_field2, : lockMethodTable->lockModeNames[lockmode]); : #endif : : /* Identify owner for lock */ : if (sessionLock) 0.00 : 68b760: 45 84 e4 test %r12b,%r12b 0.00 : 68b763: b8 00 00 00 00 mov $0x0,%eax 0.00 : 68b768: 48 0f 44 05 50 f1 52 cmove 0x52f150(%rip),%rax # bba8c0 0.00 : 68b76f: 00 : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 68b770: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx : owner = CurrentResourceOwner; : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ 0.00 : 68b777: 48 8d 5d b0 lea -0x50(%rbp),%rbx : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b77b: 48 8b 3d 8e 21 4f 00 mov 0x4f218e(%rip),%rdi # b7d910 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:745 16.67 : 68b782: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 68b786: 48 89 de mov %rbx,%rsi : locktag->locktag_field1, locktag->locktag_field2, : lockMethodTable->lockModeNames[lockmode]); : #endif : : /* Identify owner for lock */ : if (sessionLock) 0.00 : 68b789: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 68b790: 48 8b 02 mov (%rdx),%rax 0.00 : 68b793: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 68b797: 48 8b 42 08 mov 0x8(%rdx),%rax : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b79b: ba 01 00 00 00 mov $0x1,%edx : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; 0.00 : 68b7a0: 44 89 75 c0 mov %r14d,-0x40(%rbp) : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 68b7a4: 48 89 45 b8 mov %rax,-0x48(%rbp) : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b7a8: e8 f3 8e 0f 00 callq 7846a0 : HASH_ENTER, &found); : : /* : * if it's a new locallock object, initialize it : */ : if (!found) 0.00 : 68b7ad: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b7b1: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : HASH_ENTER, &found); : : /* : * if it's a new locallock object, initialize it : */ : if (!found) 0.00 : 68b7b8: 0f 84 b2 01 00 00 je 68b970 : locallock->maxLockOwners * sizeof(LOCALLOCKOWNER)); : } : else : { : /* Make sure there will be room to remember the lock */ : if (locallock->numLockOwners >= locallock->maxLockOwners) 0.00 : 68b7be: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 68b7c5: 8b 41 3c mov 0x3c(%rcx),%eax 0.00 : 68b7c8: 39 41 38 cmp %eax,0x38(%rcx) 0.00 : 68b7cb: 7d 4b jge 68b818 : repalloc(locallock->lockOwners, : newsize * sizeof(LOCALLOCKOWNER)); : locallock->maxLockOwners = newsize; : } : } : hashcode = locallock->hashcode; 0.00 : 68b7cd: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : : /* : * If we already hold the lock, we can just increase the count locally. : */ : if (locallock->nLocks > 0) 0.00 : 68b7d4: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax : repalloc(locallock->lockOwners, : newsize * sizeof(LOCALLOCKOWNER)); : locallock->maxLockOwners = newsize; : } : } : hashcode = locallock->hashcode; 0.00 : 68b7db: 8b 49 28 mov 0x28(%rcx),%ecx 0.00 : 68b7de: 89 4d 80 mov %ecx,-0x80(%rbp) : : /* : * If we already hold the lock, we can just increase the count locally. : */ : if (locallock->nLocks > 0) 0.00 : 68b7e1: 48 83 78 30 00 cmpq $0x0,0x30(%rax) 0.00 : 68b7e6: 7e 58 jle 68b840 : { : GrantLockLocal(locallock, owner); 0.00 : 68b7e8: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68b7ef: 48 89 c7 mov %rax,%rdi 0.00 : 68b7f2: e8 f9 ea ff ff callq 68a2f0 0.00 : 68b7f7: b8 02 00 00 00 mov $0x2,%eax : LogAccessExclusiveLock(locktag->locktag_field1, : locktag->locktag_field2); : } : : return LOCKACQUIRE_OK; : } 0.00 : 68b7fc: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 68b800: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 68b804: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 68b808: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 68b80c: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 68b810: c9 leaveq 0.00 : 68b811: c3 retq 0.00 : 68b812: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : { : /* Make sure there will be room to remember the lock */ : if (locallock->numLockOwners >= locallock->maxLockOwners) : { : int newsize = locallock->maxLockOwners * 2; 0.00 : 68b818: 8d 1c 00 lea (%rax,%rax,1),%ebx : : locallock->lockOwners = (LOCALLOCKOWNER *) 0.00 : 68b81b: 48 8b 79 48 mov 0x48(%rcx),%rdi 0.00 : 68b81f: 48 63 f3 movslq %ebx,%rsi 0.00 : 68b822: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 68b826: e8 c5 d4 10 00 callq 798cf0 0.00 : 68b82b: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 68b832: 48 89 42 48 mov %rax,0x48(%rdx) : repalloc(locallock->lockOwners, : newsize * sizeof(LOCALLOCKOWNER)); : locallock->maxLockOwners = newsize; 0.00 : 68b836: 89 5a 3c mov %ebx,0x3c(%rdx) 0.00 : 68b839: eb 92 jmp 68b7cd 0.00 : 68b83b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * : * Only AccessExclusiveLocks can conflict with lock types that read-only : * transactions can acquire in a standby server. Make sure this definition : * matches the one in GetRunningTransactionLocks(). : */ : if (lockmode >= AccessExclusiveLock && 0.00 : 68b840: 41 83 fe 07 cmp $0x7,%r14d 0.00 : 68b844: 0f 8f 96 01 00 00 jg 68b9e0 : locktag->locktag_type == LOCKTAG_RELATION && : !RecoveryInProgress() && : XLogStandbyInfoActive()) : { : LogAccessExclusiveLockPrepare(); 0.00 : 68b84a: c6 45 9f 00 movb $0x0,-0x61(%rbp) : * table, leaving space free, but it's not worth acquiring the LWLock just : * to check. It's also possible that we're acquiring a second or third : * lock type on a relation we have already locked using the fast-path, but : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68b84e: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 68b855: 66 81 79 0e 00 01 cmpw $0x100,0xe(%rcx) 0.00 : 68b85b: 0f 84 34 02 00 00 je 68ba95 : if (!FastPathTransferRelationLocks(lockMethodTable, locktag, : hashcode)) : { : AbortStrongLockAcquire(); : if (reportMemoryError) : ereport(ERROR, 0.00 : 68b861: 8b 45 80 mov -0x80(%rbp),%eax 0.00 : 68b864: 83 e0 0f and $0xf,%eax 0.00 : 68b867: 48 83 c0 26 add $0x26,%rax 0.00 : 68b86b: 48 c1 e0 05 shl $0x5,%rax 0.00 : 68b86f: 48 89 45 a8 mov %rax,-0x58(%rbp) : /* : * We didn't find the lock in our LOCALLOCK table, and we didn't manage to : * take it via the fast-path, either, so we've got to mess with the shared : * lock table. : */ : partitionLock = LockHashPartitionLock(hashcode); 0.00 : 68b873: 4c 8b 7d a8 mov -0x58(%rbp),%r15 0.00 : 68b877: 4c 03 3d 82 21 4f 00 add 0x4f2182(%rip),%r15 # b7da00 : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 68b87e: 31 f6 xor %esi,%esi 0.00 : 68b880: 4c 89 ff mov %r15,%rdi 0.00 : 68b883: e8 68 42 00 00 callq 68faf0 : * to the lock already ... but we should not assume that that pointer is : * valid, since a lock object with zero hold and request counts can go : * away anytime. So we have to use SetupLockInTable() to recompute the : * lock and proclock pointers, even if they're already set. : */ : proclock = SetupLockInTable(lockMethodTable, MyProc, locktag, 0.00 : 68b888: 8b 4d 80 mov -0x80(%rbp),%ecx 0.00 : 68b88b: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68b892: 45 89 f0 mov %r14d,%r8d 0.00 : 68b895: 48 8b 35 ac 20 4f 00 mov 0x4f20ac(%rip),%rsi # b7d948 0.00 : 68b89c: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 68b8a3: e8 c8 cd ff ff callq 688670 : hashcode, lockmode); : if (!proclock) 0.00 : 68b8a8: 48 85 c0 test %rax,%rax : * to the lock already ... but we should not assume that that pointer is : * valid, since a lock object with zero hold and request counts can go : * away anytime. So we have to use SetupLockInTable() to recompute the : * lock and proclock pointers, even if they're already set. : */ : proclock = SetupLockInTable(lockMethodTable, MyProc, locktag, 0.00 : 68b8ab: 48 89 c3 mov %rax,%rbx : hashcode, lockmode); : if (!proclock) 0.00 : 68b8ae: 0f 84 f7 04 00 00 je 68bdab : errmsg("out of shared memory"), : errhint("You might need to increase max_locks_per_transaction."))); : else : return LOCKACQUIRE_NOT_AVAIL; : } : locallock->proclock = proclock; 0.00 : 68b8b4: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax : /* : * If lock requested conflicts with locks requested by waiters, must join : * wait queue. Otherwise, check for conflict with already-held locks. : * (That's last because most complex check.) : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) 0.00 : 68b8bb: 4d 63 ee movslq %r14d,%r13 : errmsg("out of shared memory"), : errhint("You might need to increase max_locks_per_transaction."))); : else : return LOCKACQUIRE_NOT_AVAIL; : } : locallock->proclock = proclock; 0.00 : 68b8be: 48 89 58 20 mov %rbx,0x20(%rax) : lock = proclock->tag.myLock; 0.00 : 68b8c2: 4c 8b 23 mov (%rbx),%r12 : locallock->lock = lock; 0.00 : 68b8c5: 4c 89 60 18 mov %r12,0x18(%rax) : /* : * If lock requested conflicts with locks requested by waiters, must join : * wait queue. Otherwise, check for conflict with already-held locks. : * (That's last because most complex check.) : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) 0.00 : 68b8c9: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 68b8d0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 68b8d4: 42 8b 04 a8 mov (%rax,%r13,4),%eax 0.00 : 68b8d8: 41 85 44 24 14 test %eax,0x14(%r12) 0.00 : 68b8dd: 0f 84 9e 03 00 00 je 68bc81 : /* : * We can't acquire the lock immediately. If caller specified no : * blocking, remove useless table entries and return NOT_AVAIL without : * waiting. : */ : if (dontWait) 0.00 : 68b8e3: 80 bd 5f ff ff ff 00 cmpb $0x0,-0xa1(%rbp) 0.00 : 68b8ea: 0f 84 29 01 00 00 je 68ba19 : { : AbortStrongLockAcquire(); 0.00 : 68b8f0: e8 3b d0 ff ff callq 688930 : if (proclock->holdMask == 0) 0.00 : 68b8f5: 8b 7b 10 mov 0x10(%rbx),%edi 0.00 : 68b8f8: 85 ff test %edi,%edi 0.00 : 68b8fa: 75 3f jne 68b93b : : /* : * This must match proclock_hash()! : */ : procptr = PointerGetDatum(proclocktag->myProc); : lockhash ^= ((uint32) procptr) << LOG2_NUM_LOCK_PARTITIONS; 0.00 : 68b8fc: 48 8b 43 08 mov 0x8(%rbx),%rax : if (proclock->holdMask == 0) : { : uint32 proclock_hashcode; : : proclock_hashcode = ProcLockHashCode(&proclock->tag, hashcode); : SHMQueueDelete(&proclock->lockLink); 0.00 : 68b900: 48 8d 7b 18 lea 0x18(%rbx),%rdi : : /* : * This must match proclock_hash()! : */ : procptr = PointerGetDatum(proclocktag->myProc); : lockhash ^= ((uint32) procptr) << LOG2_NUM_LOCK_PARTITIONS; 0.00 : 68b904: c1 e0 04 shl $0x4,%eax 0.00 : 68b907: 31 45 80 xor %eax,-0x80(%rbp) : if (proclock->holdMask == 0) : { : uint32 proclock_hashcode; : : proclock_hashcode = ProcLockHashCode(&proclock->tag, hashcode); : SHMQueueDelete(&proclock->lockLink); 0.00 : 68b90a: e8 51 7b ff ff callq 683460 : SHMQueueDelete(&proclock->procLink); 0.00 : 68b90f: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 68b913: e8 48 7b ff ff callq 683460 : if (!hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 68b918: 8b 55 80 mov -0x80(%rbp),%edx 0.00 : 68b91b: 48 8b 3d e6 1f 4f 00 mov 0x4f1fe6(%rip),%rdi # b7d908 0.00 : 68b922: 45 31 c0 xor %r8d,%r8d 0.00 : 68b925: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 68b92a: 48 89 de mov %rbx,%rsi 0.00 : 68b92d: e8 1e 87 0f 00 callq 784050 0.00 : 68b932: 48 85 c0 test %rax,%rax 0.00 : 68b935: 0f 84 49 06 00 00 je 68bf84 : NULL)) : elog(PANIC, "proclock table corrupted"); : } : else : PROCLOCK_PRINT("LockAcquire: NOWAIT", proclock); : lock->nRequested--; 0.00 : 68b93b: 41 83 6c 24 68 01 subl $0x1,0x68(%r12) : lock->requested[lockmode]--; : LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode); : Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0)); : Assert(lock->nGranted <= lock->nRequested); : LWLockRelease(partitionLock); 0.00 : 68b941: 4c 89 ff mov %r15,%rdi : elog(PANIC, "proclock table corrupted"); : } : else : PROCLOCK_PRINT("LockAcquire: NOWAIT", proclock); : lock->nRequested--; : lock->requested[lockmode]--; 0.00 : 68b944: 43 83 6c ac 40 01 subl $0x1,0x40(%r12,%r13,4) : LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode); : Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0)); : Assert(lock->nGranted <= lock->nRequested); : LWLockRelease(partitionLock); 0.00 : 68b94a: e8 51 3a 00 00 callq 68f3a0 : if (locallock->nLocks == 0) 0.00 : 68b94f: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 68b956: 48 83 79 30 00 cmpq $0x0,0x30(%rcx) 0.00 : 68b95b: 0f 84 25 01 00 00 je 68ba86 : /* : * Decode the locktag back to the original values, to avoid sending : * lots of empty bytes with every message. See lock.h to check how a : * locktag is defined for LOCKTAG_RELATION : */ : LogAccessExclusiveLock(locktag->locktag_field1, 0.00 : 68b961: 31 c0 xor %eax,%eax 0.00 : 68b963: e9 94 fe ff ff jmpq 68b7fc 0.00 : 68b968: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68b96f: 00 : /* : * if it's a new locallock object, initialize it : */ : if (!found) : { : locallock->lock = NULL; 0.00 : 68b970: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 68b977: 00 : locallock->proclock = NULL; 0.00 : 68b978: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 68b97f: 00 : * the lock partition number from the hashcode. : */ : uint32 : LockTagHashCode(const LOCKTAG *locktag) : { : return get_hash_value(LockMethodLockHash, (const void *) locktag); 0.00 : 68b980: 48 89 de mov %rbx,%rsi 0.00 : 68b983: 48 8b 3d 76 1f 4f 00 mov 0x4f1f76(%rip),%rdi # b7d900 0.00 : 68b98a: e8 41 7e 0f 00 callq 7837d0 : */ : if (!found) : { : locallock->lock = NULL; : locallock->proclock = NULL; : locallock->hashcode = LockTagHashCode(&(localtag.lock)); 0.00 : 68b98f: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : locallock->nLocks = 0; : locallock->numLockOwners = 0; : locallock->maxLockOwners = 8; : locallock->holdsStrongLockCount = FALSE; : locallock->lockOwners = NULL; : locallock->lockOwners = (LOCALLOCKOWNER *) 0.00 : 68b996: be 80 00 00 00 mov $0x80,%esi : */ : if (!found) : { : locallock->lock = NULL; : locallock->proclock = NULL; : locallock->hashcode = LockTagHashCode(&(localtag.lock)); 0.00 : 68b99b: 89 41 28 mov %eax,0x28(%rcx) : locallock->nLocks = 0; 0.00 : 68b99e: 48 c7 41 30 00 00 00 movq $0x0,0x30(%rcx) 0.00 : 68b9a5: 00 : locallock->numLockOwners = 0; 0.00 : 68b9a6: c7 41 38 00 00 00 00 movl $0x0,0x38(%rcx) : locallock->maxLockOwners = 8; 0.00 : 68b9ad: c7 41 3c 08 00 00 00 movl $0x8,0x3c(%rcx) : locallock->holdsStrongLockCount = FALSE; 0.00 : 68b9b4: c6 41 40 00 movb $0x0,0x40(%rcx) : locallock->lockOwners = NULL; 0.00 : 68b9b8: 48 c7 41 48 00 00 00 movq $0x0,0x48(%rcx) 0.00 : 68b9bf: 00 : locallock->lockOwners = (LOCALLOCKOWNER *) 0.00 : 68b9c0: 48 8b 3d a1 ee 52 00 mov 0x52eea1(%rip),%rdi # bba868 0.00 : 68b9c7: e8 c4 d4 10 00 callq 798e90 0.00 : 68b9cc: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:762 16.67 : 68b9d3: 48 89 42 48 mov %rax,0x48(%rdx) 0.00 : 68b9d7: e9 f1 fd ff ff jmpq 68b7cd 0.00 : 68b9dc: 0f 1f 40 00 nopl 0x0(%rax) : * : * Only AccessExclusiveLocks can conflict with lock types that read-only : * transactions can acquire in a standby server. Make sure this definition : * matches the one in GetRunningTransactionLocks(). : */ : if (lockmode >= AccessExclusiveLock && 0.00 : 68b9e0: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68b9e7: 80 7a 0e 00 cmpb $0x0,0xe(%rdx) 0.00 : 68b9eb: 0f 85 59 fe ff ff jne 68b84a 0.00 : 68b9f1: e8 ca 1a e4 ff callq 4cd4c0 0.00 : 68b9f6: 84 c0 test %al,%al 0.00 : 68b9f8: 0f 85 4c fe ff ff jne 68b84a 0.00 : 68b9fe: 83 3d 57 d7 4e 00 01 cmpl $0x1,0x4ed757(%rip) # b7915c 0.00 : 68ba05: 0f 8e 3f fe ff ff jle 68b84a : locktag->locktag_type == LOCKTAG_RELATION && : !RecoveryInProgress() && : XLogStandbyInfoActive()) : { : LogAccessExclusiveLockPrepare(); 0.00 : 68ba0b: e8 c0 9b ff ff callq 6855d0 0.00 : 68ba10: c6 45 9f 01 movb $0x1,-0x61(%rbp) 0.00 : 68ba14: e9 35 fe ff ff jmpq 68b84e : } : : /* : * Set bitmask of locks this process already holds on this object. : */ : MyProc->heldLocks = proclock->holdMask; 0.00 : 68ba19: 48 8b 05 28 1f 4f 00 mov 0x4f1f28(%rip),%rax # b7d948 0.00 : 68ba20: 8b 53 10 mov 0x10(%rbx),%edx 0.00 : 68ba23: 89 50 6c mov %edx,0x6c(%rax) : locktag->locktag_field3, : locktag->locktag_field4, : locktag->locktag_type, : lockmode); : : WaitOnLock(locallock, owner); 0.00 : 68ba26: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68ba2d: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 68ba34: e8 67 e9 ff ff callq 68a3a0 : : /* : * Check the proclock entry status, in case something in the ipc : * communication doesn't work correctly. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) 0.00 : 68ba39: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 68ba3c: 44 89 f1 mov %r14d,%ecx 0.00 : 68ba3f: d3 f8 sar %cl,%eax 0.00 : 68ba41: a8 01 test $0x1,%al 0.00 : 68ba43: 0f 84 04 05 00 00 je 68bf4d : * Lock state is fully up-to-date now; if we error out after this, no : * special error cleanup is required. : */ : FinishStrongLockAcquire(); : : LWLockRelease(partitionLock); 0.00 : 68ba49: 4c 89 ff mov %r15,%rdi : * acquisition once it's no longer needed : */ : static void : FinishStrongLockAcquire(void) : { : StrongLockInProgress = NULL; 0.00 : 68ba4c: 48 c7 05 c1 1e 4f 00 movq $0x0,0x4f1ec1(%rip) # b7d918 0.00 : 68ba53: 00 00 00 00 : * Lock state is fully up-to-date now; if we error out after this, no : * special error cleanup is required. : */ : FinishStrongLockAcquire(); : : LWLockRelease(partitionLock); 0.00 : 68ba57: e8 44 39 00 00 callq 68f3a0 : : /* : * Emit a WAL record if acquisition of this lock needs to be replayed in a : * standby server. : */ : if (log_lock) 0.00 : 68ba5c: 80 7d 9f 00 cmpb $0x0,-0x61(%rbp) 0.00 : 68ba60: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68ba65: 0f 84 91 fd ff ff je 68b7fc : /* : * Decode the locktag back to the original values, to avoid sending : * lots of empty bytes with every message. See lock.h to check how a : * locktag is defined for LOCKTAG_RELATION : */ : LogAccessExclusiveLock(locktag->locktag_field1, 0.00 : 68ba6b: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 68ba72: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 68ba75: 8b 38 mov (%rax),%edi 0.00 : 68ba77: e8 64 9b ff ff callq 6855e0 0.00 : 68ba7c: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68ba81: e9 76 fd ff ff jmpq 68b7fc : LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode); : Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0)); : Assert(lock->nGranted <= lock->nRequested); : LWLockRelease(partitionLock); : if (locallock->nLocks == 0) : RemoveLocalLock(locallock); 0.00 : 68ba86: 48 89 cf mov %rcx,%rdi 0.00 : 68ba89: e8 b2 d6 ff ff callq 689140 0.00 : 68ba8e: 31 c0 xor %eax,%eax 0.00 : 68ba90: e9 67 fd ff ff jmpq 68b7fc : * table, leaving space free, but it's not worth acquiring the LWLock just : * to check. It's also possible that we're acquiring a second or third : * lock type on a relation we have already locked using the fast-path, but : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68ba95: 8b 01 mov (%rcx),%eax 0.00 : 68ba97: 3b 05 0b e6 52 00 cmp 0x52e60b(%rip),%eax # bba0a8 0.00 : 68ba9d: 0f 84 4e 02 00 00 je 68bcf1 0.00 : 68baa3: 85 c0 test %eax,%eax 0.00 : 68baa5: 0f 95 c0 setne %al : * If this lock could potentially have been taken via the fast-path by : * some other backend, we must (temporarily) disable further use of the : * fast-path for this lock tag, and migrate any locks already taken via : * this method to the main lock table. : */ : if (ConflictsWithRelationFastPath(locktag, lockmode)) 0.00 : 68baa8: 41 83 fe 04 cmp $0x4,%r14d 0.00 : 68baac: 0f 8e af fd ff ff jle 68b861 0.00 : 68bab2: 84 c0 test %al,%al 0.00 : 68bab4: 0f 84 a7 fd ff ff je 68b861 : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68baba: 8b 5d 80 mov -0x80(%rbp),%ebx : * : * XXX: It might be worth considering using an atomic fetch-and-add : * instruction here, on architectures where that is supported. : */ : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 68babd: 48 8b 15 34 1e 4f 00 mov 0x4f1e34(%rip),%rdx # b7d8f8 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68bac4: b8 01 00 00 00 mov $0x1,%eax : * fast-path for this lock tag, and migrate any locks already taken via : * this method to the main lock table. : */ : if (ConflictsWithRelationFastPath(locktag, lockmode)) : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68bac9: 81 e3 ff 03 00 00 and $0x3ff,%ebx 0.00 : 68bacf: f0 86 02 lock xchg %al,(%rdx) : * : * XXX: It might be worth considering using an atomic fetch-and-add : * instruction here, on architectures where that is supported. : */ : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 68bad2: 84 c0 test %al,%al 0.00 : 68bad4: 0f 85 b6 02 00 00 jne 68bd90 : FastPathStrongRelationLocks->count[fasthashcode]++; 0.00 : 68bada: 48 8b 0d 17 1e 4f 00 mov 0x4f1e17(%rip),%rcx # b7d8f8 0.00 : 68bae1: 89 da mov %ebx,%edx 0.00 : 68bae3: 8b 44 91 04 mov 0x4(%rcx,%rdx,4),%eax 0.00 : 68bae7: 83 c0 01 add $0x1,%eax 0.00 : 68baea: 89 44 91 04 mov %eax,0x4(%rcx,%rdx,4) : locallock->holdsStrongLockCount = TRUE; 0.00 : 68baee: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 68baf5: c6 40 40 01 movb $0x1,0x40(%rax) : StrongLockInProgress = locallock; 0.00 : 68baf9: 48 89 05 18 1e 4f 00 mov %rax,0x4f1e18(%rip) # b7d918 : SpinLockRelease(&FastPathStrongRelationLocks->mutex); 0.00 : 68bb00: 48 8b 05 f1 1d 4f 00 mov 0x4f1df1(%rip),%rax # b7d8f8 0.00 : 68bb07: c6 00 00 movb $0x0,(%rax) : */ : static bool : FastPathTransferRelationLocks(LockMethod lockMethodTable, const LOCKTAG *locktag, : uint32 hashcode) : { : LWLock *partitionLock = LockHashPartitionLock(hashcode); 0.00 : 68bb0a: 8b 45 80 mov -0x80(%rbp),%eax : Oid relid = locktag->locktag_field2; 0.00 : 68bb0d: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx : */ : static bool : FastPathTransferRelationLocks(LockMethod lockMethodTable, const LOCKTAG *locktag, : uint32 hashcode) : { : LWLock *partitionLock = LockHashPartitionLock(hashcode); 0.00 : 68bb14: 83 e0 0f and $0xf,%eax 0.00 : 68bb17: 48 83 c0 26 add $0x26,%rax 0.00 : 68bb1b: 48 c1 e0 05 shl $0x5,%rax 0.00 : 68bb1f: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 68bb23: 48 03 05 d6 1e 4f 00 add 0x4f1ed6(%rip),%rax # b7da00 0.00 : 68bb2a: 48 89 45 a0 mov %rax,-0x60(%rbp) : Oid relid = locktag->locktag_field2; 0.00 : 68bb2e: 44 8b 7a 04 mov 0x4(%rdx),%r15d : * Every PGPROC that can potentially hold a fast-path lock is present in : * ProcGlobal->allProcs. Prepared transactions are not, but any : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 68bb32: 48 8b 15 1f 1e 4f 00 mov 0x4f1e1f(%rip),%rdx # b7d958 0.00 : 68bb39: 44 8b 42 10 mov 0x10(%rdx),%r8d 0.00 : 68bb3d: 45 85 c0 test %r8d,%r8d 0.00 : 68bb40: 0f 84 2d fd ff ff je 68b873 0.00 : 68bb46: 45 31 ed xor %r13d,%r13d 0.00 : 68bb49: eb 27 jmp 68bb72 0.00 : 68bb4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : LWLockRelease(partitionLock); : : /* No need to examine remaining slots. */ : break; : } : LWLockRelease(proc->backendLock); 0.00 : 68bb50: 49 8b bc 24 90 02 00 mov 0x290(%r12),%rdi 0.00 : 68bb57: 00 : * Every PGPROC that can potentially hold a fast-path lock is present in : * ProcGlobal->allProcs. Prepared transactions are not, but any : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 68bb58: 41 83 c5 01 add $0x1,%r13d : LWLockRelease(partitionLock); : : /* No need to examine remaining slots. */ : break; : } : LWLockRelease(proc->backendLock); 0.00 : 68bb5c: e8 3f 38 00 00 callq 68f3a0 : * Every PGPROC that can potentially hold a fast-path lock is present in : * ProcGlobal->allProcs. Prepared transactions are not, but any : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 68bb61: 48 8b 15 f0 1d 4f 00 mov 0x4f1df0(%rip),%rdx # b7d958 0.00 : 68bb68: 44 3b 6a 10 cmp 0x10(%rdx),%r13d 0.00 : 68bb6c: 0f 83 01 fd ff ff jae 68b873 : { : PGPROC *proc = &ProcGlobal->allProcs[i]; 0.00 : 68bb72: 44 89 e8 mov %r13d,%eax : uint32 f; : : LWLockAcquire(proc->backendLock, LW_EXCLUSIVE); 0.00 : 68bb75: 31 f6 xor %esi,%esi : * fencing operation since the other backend set proc->databaseId. So : * for now, we test it after acquiring the LWLock just to be safe. : */ : if (proc->databaseId != locktag->locktag_field1) : { : LWLockRelease(proc->backendLock); 0.00 : 68bb77: 31 db xor %ebx,%ebx : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) : { : PGPROC *proc = &ProcGlobal->allProcs[i]; 0.00 : 68bb79: 4c 69 e0 f0 02 00 00 imul $0x2f0,%rax,%r12 0.00 : 68bb80: 4c 03 22 add (%rdx),%r12 : uint32 f; : : LWLockAcquire(proc->backendLock, LW_EXCLUSIVE); 0.00 : 68bb83: 49 8b bc 24 90 02 00 mov 0x290(%r12),%rdi 0.00 : 68bb8a: 00 0.00 : 68bb8b: e8 60 3f 00 00 callq 68faf0 : * LWLock acquisition) since setting proc->databaseId. However, it's : * less clear that our backend is certain to have performed a memory : * fencing operation since the other backend set proc->databaseId. So : * for now, we test it after acquiring the LWLock just to be safe. : */ : if (proc->databaseId != locktag->locktag_field1) 0.00 : 68bb90: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 68bb97: 41 8b 44 24 38 mov 0x38(%r12),%eax : { : LWLockRelease(proc->backendLock); 0.00 : 68bb9c: 4c 89 e2 mov %r12,%rdx : * LWLock acquisition) since setting proc->databaseId. However, it's : * less clear that our backend is certain to have performed a memory : * fencing operation since the other backend set proc->databaseId. So : * for now, we test it after acquiring the LWLock just to be safe. : */ : if (proc->databaseId != locktag->locktag_field1) 0.00 : 68bb9f: 3b 01 cmp (%rcx),%eax 0.00 : 68bba1: 75 ad jne 68bb50 : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : uint32 lockmode; : : /* Look for an allocated slot matching the given relid. */ : if (relid != proc->fpRelId[f] || FAST_PATH_GET_BITS(proc, f) == 0) 0.00 : 68bba3: 44 3b ba a0 02 00 00 cmp 0x2a0(%rdx),%r15d 0.00 : 68bbaa: 74 19 je 68bbc5 0.00 : 68bbac: 0f 1f 40 00 nopl 0x0(%rax) : return false; : } : GrantLock(proclock->tag.myLock, proclock, lockmode); : FAST_PATH_CLEAR_LOCKMODE(proc, f, lockmode); : } : LWLockRelease(partitionLock); 0.00 : 68bbb0: 83 c3 03 add $0x3,%ebx 0.00 : 68bbb3: 48 83 c2 04 add $0x4,%rdx : { : LWLockRelease(proc->backendLock); : continue; : } : : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) 0.00 : 68bbb7: 83 fb 30 cmp $0x30,%ebx 0.00 : 68bbba: 74 94 je 68bb50 : { : uint32 lockmode; : : /* Look for an allocated slot matching the given relid. */ : if (relid != proc->fpRelId[f] || FAST_PATH_GET_BITS(proc, f) == 0) 0.00 : 68bbbc: 44 3b ba a0 02 00 00 cmp 0x2a0(%rdx),%r15d 0.00 : 68bbc3: 75 eb jne 68bbb0 0.00 : 68bbc5: 49 8b 84 24 98 02 00 mov 0x298(%r12),%rax 0.00 : 68bbcc: 00 0.00 : 68bbcd: 89 d9 mov %ebx,%ecx 0.00 : 68bbcf: 48 d3 e8 shr %cl,%rax 0.00 : 68bbd2: a8 07 test $0x7,%al 0.00 : 68bbd4: 74 da je 68bbb0 : continue; : : /* Find or create lock object. */ : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 68bbd6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 68bbda: 31 f6 xor %esi,%esi 0.00 : 68bbdc: e8 0f 3f 00 00 callq 68faf0 0.00 : 68bbe1: 41 b9 01 00 00 00 mov $0x1,%r9d : lockmode < FAST_PATH_LOCKNUMBER_OFFSET + FAST_PATH_BITS_PER_SLOT; : ++lockmode) : { : PROCLOCK *proclock; : : if (!FAST_PATH_CHECK_LOCKMODE(proc, f, lockmode)) 0.00 : 68bbe7: 49 8b 84 24 98 02 00 mov 0x298(%r12),%rax 0.00 : 68bbee: 00 0.00 : 68bbef: 89 d9 mov %ebx,%ecx 0.00 : 68bbf1: 48 d3 e8 shr %cl,%rax 0.00 : 68bbf4: a8 01 test $0x1,%al 0.00 : 68bbf6: 75 20 jne 68bc18 : : /* Find or create lock object. */ : LWLockAcquire(partitionLock, LW_EXCLUSIVE); : for (lockmode = FAST_PATH_LOCKNUMBER_OFFSET; : lockmode < FAST_PATH_LOCKNUMBER_OFFSET + FAST_PATH_BITS_PER_SLOT; : ++lockmode) 0.00 : 68bbf8: 41 83 c1 01 add $0x1,%r9d 0.00 : 68bbfc: 83 c3 01 add $0x1,%ebx : continue; : : /* Find or create lock object. */ : LWLockAcquire(partitionLock, LW_EXCLUSIVE); : for (lockmode = FAST_PATH_LOCKNUMBER_OFFSET; : lockmode < FAST_PATH_LOCKNUMBER_OFFSET + FAST_PATH_BITS_PER_SLOT; 0.00 : 68bbff: 41 83 f9 04 cmp $0x4,%r9d 0.00 : 68bc03: 75 e2 jne 68bbe7 : return false; : } : GrantLock(proclock->tag.myLock, proclock, lockmode); : FAST_PATH_CLEAR_LOCKMODE(proc, f, lockmode); : } : LWLockRelease(partitionLock); 0.00 : 68bc05: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 68bc09: e8 92 37 00 00 callq 68f3a0 0.00 : 68bc0e: e9 3d ff ff ff jmpq 68bb50 0.00 : 68bc13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : PROCLOCK *proclock; : : if (!FAST_PATH_CHECK_LOCKMODE(proc, f, lockmode)) : continue; : proclock = SetupLockInTable(lockMethodTable, proc, locktag, 0.00 : 68bc18: 8b 4d 80 mov -0x80(%rbp),%ecx 0.00 : 68bc1b: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68bc22: 45 89 c8 mov %r9d,%r8d 0.00 : 68bc25: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 68bc2c: 4c 89 e6 mov %r12,%rsi 0.00 : 68bc2f: 44 89 8d 50 ff ff ff mov %r9d,-0xb0(%rbp) 0.00 : 68bc36: e8 35 ca ff ff callq 688670 : hashcode, lockmode); : if (!proclock) 0.00 : 68bc3b: 48 85 c0 test %rax,%rax 0.00 : 68bc3e: 44 8b 8d 50 ff ff ff mov -0xb0(%rbp),%r9d 0.00 : 68bc45: 0f 84 dd 01 00 00 je 68be28 : { : LWLockRelease(partitionLock); : LWLockRelease(proc->backendLock); : return false; : } : GrantLock(proclock->tag.myLock, proclock, lockmode); 0.00 : 68bc4b: 48 8b 38 mov (%rax),%rdi 0.00 : 68bc4e: 44 89 ca mov %r9d,%edx 0.00 : 68bc51: 48 89 c6 mov %rax,%rsi 0.00 : 68bc54: 44 89 8d 50 ff ff ff mov %r9d,-0xb0(%rbp) 0.00 : 68bc5b: e8 50 c9 ff ff callq 6885b0 : FAST_PATH_CLEAR_LOCKMODE(proc, f, lockmode); 0.00 : 68bc60: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bc65: 89 d9 mov %ebx,%ecx 0.00 : 68bc67: 48 d3 e0 shl %cl,%rax 0.00 : 68bc6a: 48 f7 d0 not %rax 0.00 : 68bc6d: 49 21 84 24 98 02 00 and %rax,0x298(%r12) 0.00 : 68bc74: 00 0.00 : 68bc75: 44 8b 8d 50 ff ff ff mov -0xb0(%rbp),%r9d 0.00 : 68bc7c: e9 77 ff ff ff jmpq 68bbf8 : * (That's last because most complex check.) : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) : status = STATUS_FOUND; : else : status = LockCheckConflicts(lockMethodTable, lockmode, 0.00 : 68bc81: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 68bc88: 48 89 d9 mov %rbx,%rcx 0.00 : 68bc8b: 4c 89 e2 mov %r12,%rdx 0.00 : 68bc8e: 44 89 f6 mov %r14d,%esi 0.00 : 68bc91: e8 aa c8 ff ff callq 688540 : lock, proclock); : : if (status == STATUS_OK) 0.00 : 68bc96: 85 c0 test %eax,%eax 0.00 : 68bc98: 0f 85 45 fc ff ff jne 68b8e3 : { : /* No conflict with held or previously requested locks */ : GrantLock(lock, proclock, lockmode); 0.00 : 68bc9e: 48 89 de mov %rbx,%rsi 0.00 : 68bca1: 4c 89 e7 mov %r12,%rdi 0.00 : 68bca4: 44 89 f2 mov %r14d,%edx 0.00 : 68bca7: e8 04 c9 ff ff callq 6885b0 : GrantLockLocal(locallock, owner); 0.00 : 68bcac: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68bcb3: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 68bcba: e8 31 e6 ff ff callq 68a2f0 0.00 : 68bcbf: e9 85 fd ff ff jmpq 68ba49 : LWLock *partitionLock; : int status; : bool log_lock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); 0.00 : 68bcc4: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68bcc9: be c6 02 00 00 mov $0x2c6,%esi 0.00 : 68bcce: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68bcd3: e8 48 f7 0e 00 callq 77b420 0.00 : 68bcd8: 0f b7 d3 movzwl %bx,%edx 0.00 : 68bcdb: be 29 c6 8a 00 mov $0x8ac629,%esi 0.00 : 68bce0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68bce5: 31 c0 xor %eax,%eax 0.00 : 68bce7: e8 44 f5 0e 00 callq 77b230 0.00 : 68bcec: e8 df d7 dd ff callq 4694d0 : * table, leaving space free, but it's not worth acquiring the LWLock just : * to check. It's also possible that we're acquiring a second or third : * lock type on a relation we have already locked using the fast-path, but : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68bcf1: 85 c0 test %eax,%eax 0.00 : 68bcf3: 0f 95 c0 setne %al 0.00 : 68bcf6: 0f 84 ac fd ff ff je 68baa8 0.00 : 68bcfc: 41 83 fe 03 cmp $0x3,%r14d 0.00 : 68bd00: 0f 8f a2 fd ff ff jg 68baa8 0.00 : 68bd06: 83 3d e3 1b 4f 00 0f cmpl $0xf,0x4f1be3(%rip) # b7d8f0 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:821 16.67 : 68bd0d: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bd12: 0f 8f 90 fd ff ff jg 68baa8 : * LWLockAcquire acts as a memory sequencing point, so it's safe to : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 68bd18: 48 8b 05 29 1c 4f 00 mov 0x4f1c29(%rip),%rax # b7d948 : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && : FastPathLocalUseCount < FP_LOCK_SLOTS_PER_BACKEND) : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68bd1f: 8b 5d 80 mov -0x80(%rbp),%ebx : * LWLockAcquire acts as a memory sequencing point, so it's safe to : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 68bd22: 31 f6 xor %esi,%esi 0.00 : 68bd24: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && : FastPathLocalUseCount < FP_LOCK_SLOTS_PER_BACKEND) : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68bd2b: 81 e3 ff 03 00 00 and $0x3ff,%ebx : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) 0.00 : 68bd31: 89 db mov %ebx,%ebx : * LWLockAcquire acts as a memory sequencing point, so it's safe to : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 68bd33: e8 b8 3d 00 00 callq 68faf0 : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) 0.00 : 68bd38: 48 8b 05 b9 1b 4f 00 mov 0x4f1bb9(%rip),%rax # b7d8f8 0.00 : 68bd3f: 8b 44 98 04 mov 0x4(%rax,%rbx,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:834 16.67 : 68bd43: 85 c0 test %eax,%eax 0.00 : 68bd45: 0f 84 1d 01 00 00 je 68be68 0.00 : 68bd4b: 4c 8b 0d f6 1b 4f 00 mov 0x4f1bf6(%rip),%r9 # b7d948 : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, : lockmode); : LWLockRelease(MyProc->backendLock); 0.00 : 68bd52: 49 8b b9 90 02 00 00 mov 0x290(%r9),%rdi 0.00 : 68bd59: e8 42 36 00 00 callq 68f3a0 : * If this lock could potentially have been taken via the fast-path by : * some other backend, we must (temporarily) disable further use of the : * fast-path for this lock tag, and migrate any locks already taken via : * this method to the main lock table. : */ : if (ConflictsWithRelationFastPath(locktag, lockmode)) 0.00 : 68bd5e: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68bd65: 66 81 7a 0e 00 01 cmpw $0x100,0xe(%rdx) 0.00 : 68bd6b: 0f 85 f0 fa ff ff jne 68b861 0.00 : 68bd71: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 68bd78: 44 8b 09 mov (%rcx),%r9d 0.00 : 68bd7b: 45 85 c9 test %r9d,%r9d 0.00 : 68bd7e: 0f 95 c0 setne %al 0.00 : 68bd81: e9 22 fd ff ff jmpq 68baa8 0.00 : 68bd86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 68bd8d: 00 00 00 : * : * XXX: It might be worth considering using an atomic fetch-and-add : * instruction here, on architectures where that is supported. : */ : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 68bd90: 48 8b 3d 61 1b 4f 00 mov 0x4f1b61(%rip),%rdi # b7d8f8 0.00 : 68bd97: ba e7 05 00 00 mov $0x5e7,%edx 0.00 : 68bd9c: be 93 d1 8a 00 mov $0x8ad193,%esi 0.00 : 68bda1: e8 9a 42 00 00 callq 690040 0.00 : 68bda6: e9 2f fd ff ff jmpq 68bada : */ : proclock = SetupLockInTable(lockMethodTable, MyProc, locktag, : hashcode, lockmode); : if (!proclock) : { : AbortStrongLockAcquire(); 0.00 : 68bdab: e8 80 cb ff ff callq 688930 : LWLockRelease(partitionLock); 0.00 : 68bdb0: 4c 89 ff mov %r15,%rdi 0.00 : 68bdb3: e8 e8 35 00 00 callq 68f3a0 : if (reportMemoryError) 0.00 : 68bdb8: 80 bd 5e ff ff ff 00 cmpb $0x0,-0xa2(%rbp) 0.00 : 68bdbf: 0f 84 9c fb ff ff je 68b961 : ereport(ERROR, 0.00 : 68bdc5: 45 31 c0 xor %r8d,%r8d 0.00 : 68bdc8: b9 c0 cb 8a 00 mov $0x8acbc0,%ecx 0.00 : 68bdcd: ba 8b 03 00 00 mov $0x38b,%edx 0.00 : 68bdd2: be 93 d1 8a 00 mov $0x8ad193,%esi 0.00 : 68bdd7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68bddc: e8 df ec 0e 00 callq 77aac0 0.00 : 68bde1: 84 c0 test %al,%al 0.00 : 68bde3: 0f 84 6f f9 ff ff je 68b758 0.00 : 68bde9: bf a8 c8 8a 00 mov $0x8ac8a8,%edi 0.00 : 68bdee: 31 c0 xor %eax,%eax 0.00 : 68bdf0: e8 ab fe 0e 00 callq 77bca0 0.00 : 68bdf5: bf 47 ba 8a 00 mov $0x8aba47,%edi 0.00 : 68bdfa: 41 89 c4 mov %eax,%r12d 0.00 : 68bdfd: 31 c0 xor %eax,%eax 0.00 : 68bdff: e8 9c 0a 0f 00 callq 77c8a0 0.00 : 68be04: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 68be09: 89 c3 mov %eax,%ebx 0.00 : 68be0b: e8 40 0f 0f 00 callq 77cd50 0.00 : 68be10: 44 89 e2 mov %r12d,%edx 0.00 : 68be13: 89 c7 mov %eax,%edi 0.00 : 68be15: 89 de mov %ebx,%esi 0.00 : 68be17: 31 c0 xor %eax,%eax 0.00 : 68be19: e8 c2 e7 0e 00 callq 77a5e0 0.00 : 68be1e: e9 35 f9 ff ff jmpq 68b758 0.00 : 68be23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : continue; : proclock = SetupLockInTable(lockMethodTable, proc, locktag, : hashcode, lockmode); : if (!proclock) : { : LWLockRelease(partitionLock); 0.00 : 68be28: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 68be2c: e8 6f 35 00 00 callq 68f3a0 : LWLockRelease(proc->backendLock); 0.00 : 68be31: 49 8b bc 24 90 02 00 mov 0x290(%r12),%rdi 0.00 : 68be38: 00 0.00 : 68be39: e8 62 35 00 00 callq 68f3a0 : : BeginStrongLockAcquire(locallock, fasthashcode); : if (!FastPathTransferRelationLocks(lockMethodTable, locktag, : hashcode)) : { : AbortStrongLockAcquire(); 0.00 : 68be3e: e8 ed ca ff ff callq 688930 : if (reportMemoryError) 0.00 : 68be43: 80 bd 5e ff ff ff 00 cmpb $0x0,-0xa2(%rbp) 0.00 : 68be4a: 0f 84 11 fb ff ff je 68b961 : ereport(ERROR, 0.00 : 68be50: 45 31 c0 xor %r8d,%r8d 0.00 : 68be53: b9 c0 cb 8a 00 mov $0x8acbc0,%ecx 0.00 : 68be58: ba 69 03 00 00 mov $0x369,%edx 0.00 : 68be5d: e9 70 ff ff ff jmpq 68bdd2 0.00 : 68be62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68be68: 4c 8b 0d d9 1a 4f 00 mov 0x4f1ad9(%rip),%r9 # b7d948 : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, 0.00 : 68be6f: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68be76: 31 d2 xor %edx,%edx 0.00 : 68be78: bf 10 00 00 00 mov $0x10,%edi 0.00 : 68be7d: 31 c9 xor %ecx,%ecx : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, 0.00 : 68be7f: 44 8b 50 04 mov 0x4(%rax),%r10d : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68be83: 4d 8b 81 98 02 00 00 mov 0x298(%r9),%r8 0.00 : 68be8a: 4c 89 ce mov %r9,%rsi 0.00 : 68be8d: eb 1c jmp 68beab : unused_slot = f; : else if (MyProc->fpRelId[f] == relid) 0.00 : 68be8f: 44 3b 96 a0 02 00 00 cmp 0x2a0(%rsi),%r10d 0.00 : 68be96: 0f 84 98 00 00 00 je 68bf34 : { : uint32 f; : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2417 33.33 : 68be9c: 83 c2 01 add $0x1,%edx 0.00 : 68be9f: 83 c1 03 add $0x3,%ecx 0.00 : 68bea2: 48 83 c6 04 add $0x4,%rsi 0.00 : 68bea6: 83 fa 10 cmp $0x10,%edx 0.00 : 68bea9: 74 0e je 68beb9 : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68beab: 4c 89 c0 mov %r8,%rax 0.00 : 68beae: 48 d3 e8 shr %cl,%rax 0.00 : 68beb1: a8 07 test $0x7,%al 0.00 : 68beb3: 75 da jne 68be8f : unused_slot = f; : else if (MyProc->fpRelId[f] == relid) : { : Assert(!FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)); : FAST_PATH_SET_LOCKMODE(MyProc, f, lockmode); 0.00 : 68beb5: 89 d7 mov %edx,%edi 0.00 : 68beb7: eb e3 jmp 68be9c : return true; : } : } : : /* If no existing entry, use any empty slot. */ : if (unused_slot < FP_LOCK_SLOTS_PER_BACKEND) 0.00 : 68beb9: 83 ff 10 cmp $0x10,%edi 0.00 : 68bebc: 0f 84 90 fe ff ff je 68bd52 : { : MyProc->fpRelId[unused_slot] = relid; 0.00 : 68bec2: 89 f8 mov %edi,%eax : FAST_PATH_SET_LOCKMODE(MyProc, unused_slot, lockmode); 0.00 : 68bec4: 8d 0c 7f lea (%rdi,%rdi,2),%ecx : } : : /* If no existing entry, use any empty slot. */ : if (unused_slot < FP_LOCK_SLOTS_PER_BACKEND) : { : MyProc->fpRelId[unused_slot] = relid; 0.00 : 68bec7: 45 89 94 81 a0 02 00 mov %r10d,0x2a0(%r9,%rax,4) 0.00 : 68bece: 00 : FAST_PATH_SET_LOCKMODE(MyProc, unused_slot, lockmode); 0.00 : 68becf: 48 8b 15 72 1a 4f 00 mov 0x4f1a72(%rip),%rdx # b7d948 0.00 : 68bed6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bedb: 41 8d 4c 0e ff lea -0x1(%r14,%rcx,1),%ecx 0.00 : 68bee0: 48 d3 e0 shl %cl,%rax 0.00 : 68bee3: 48 09 82 98 02 00 00 or %rax,0x298(%rdx) : ++FastPathLocalUseCount; 0.00 : 68beea: 83 05 ff 19 4f 00 01 addl $0x1,0x4f19ff(%rip) # b7d8f0 : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, : lockmode); : LWLockRelease(MyProc->backendLock); 0.00 : 68bef1: 48 8b 05 50 1a 4f 00 mov 0x4f1a50(%rip),%rax # b7d948 0.00 : 68bef8: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi 0.00 : 68beff: e8 9c 34 00 00 callq 68f3a0 : /* : * The locallock might contain stale pointers to some old shared : * objects; we MUST reset these to null before considering the : * lock to be acquired via fast-path. : */ : locallock->lock = NULL; 0.00 : 68bf04: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 68bf0b: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 68bf12: 00 : locallock->proclock = NULL; 0.00 : 68bf13: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 68bf1a: 00 : GrantLockLocal(locallock, owner); 0.00 : 68bf1b: 48 89 d7 mov %rdx,%rdi 0.00 : 68bf1e: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68bf25: e8 c6 e3 ff ff callq 68a2f0 0.00 : 68bf2a: b8 01 00 00 00 mov $0x1,%eax : LogAccessExclusiveLock(locktag->locktag_field1, : locktag->locktag_field2); : } : : return LOCKACQUIRE_OK; : } 0.00 : 68bf2f: e9 c8 f8 ff ff jmpq 68b7fc : if (FAST_PATH_GET_BITS(MyProc, f) == 0) : unused_slot = f; : else if (MyProc->fpRelId[f] == relid) : { : Assert(!FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)); : FAST_PATH_SET_LOCKMODE(MyProc, f, lockmode); 0.00 : 68bf34: 42 8d 4c 31 ff lea -0x1(%rcx,%r14,1),%ecx 0.00 : 68bf39: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bf3e: 48 d3 e0 shl %cl,%rax 0.00 : 68bf41: 49 09 c0 or %rax,%r8 0.00 : 68bf44: 4d 89 81 98 02 00 00 mov %r8,0x298(%r9) 0.00 : 68bf4b: eb a4 jmp 68bef1 : * Check the proclock entry status, in case something in the ipc : * communication doesn't work correctly. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) : { : AbortStrongLockAcquire(); 0.00 : 68bf4d: e8 de c9 ff ff callq 688930 : PROCLOCK_PRINT("LockAcquire: INCONSISTENT", proclock); : LOCK_PRINT("LockAcquire: INCONSISTENT", lock, lockmode); : /* Should we retry ? */ : LWLockRelease(partitionLock); 0.00 : 68bf52: 4c 89 ff mov %r15,%rdi 0.00 : 68bf55: e8 46 34 00 00 callq 68f3a0 : elog(ERROR, "LockAcquire failed"); 0.00 : 68bf5a: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68bf5f: be f5 03 00 00 mov $0x3f5,%esi 0.00 : 68bf64: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68bf69: e8 b2 f4 0e 00 callq 77b420 0.00 : 68bf6e: be 97 c6 8a 00 mov $0x8ac697,%esi 0.00 : 68bf73: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68bf78: 31 c0 xor %eax,%eax 0.00 : 68bf7a: e8 b1 f2 0e 00 callq 77b230 0.00 : 68bf7f: e9 d4 f7 ff ff jmpq 68b758 : if (!hash_search_with_hash_value(LockMethodProcLockHash, : (void *) &(proclock->tag), : proclock_hashcode, : HASH_REMOVE, : NULL)) : elog(PANIC, "proclock table corrupted"); 0.00 : 68bf84: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68bf89: be bc 03 00 00 mov $0x3bc,%esi 0.00 : 68bf8e: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68bf93: e8 88 f4 0e 00 callq 77b420 0.00 : 68bf98: be 10 c6 8a 00 mov $0x8ac610,%esi 0.00 : 68bf9d: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68bfa2: 31 c0 xor %eax,%eax 0.00 : 68bfa4: e8 87 f2 0e 00 callq 77b230 0.00 : 68bfa9: e8 22 d5 dd ff callq 4694d0 : : if (RecoveryInProgress() && !InRecovery && : (locktag->locktag_type == LOCKTAG_OBJECT || : locktag->locktag_type == LOCKTAG_RELATION) && : lockmode > RowExclusiveLock) : ereport(ERROR, 0.00 : 68bfae: bf 08 c9 8a 00 mov $0x8ac908,%edi 0.00 : 68bfb3: 31 c0 xor %eax,%eax 0.00 : 68bfb5: e8 e6 fc 0e 00 callq 77bca0 0.00 : 68bfba: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 68bfc1: 41 89 c4 mov %eax,%r12d 0.00 : 68bfc4: 49 63 d6 movslq %r14d,%rdx 0.00 : 68bfc7: bf 60 c9 8a 00 mov $0x8ac960,%edi 0.00 : 68bfcc: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 68bfd0: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 68bfd4: 31 c0 xor %eax,%eax 0.00 : 68bfd6: e8 c5 08 0f 00 callq 77c8a0 0.00 : 68bfdb: bf 45 01 00 00 mov $0x145,%edi 0.00 : 68bfe0: 89 c3 mov %eax,%ebx 0.00 : 68bfe2: e9 24 fe ff ff jmpq 68be0b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 80.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:638 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:615 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:631 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007985c0 : : * Unlike AllocSetReset, this *must* free all resources of the set. : * But note we are not responsible for deleting the context node itself. : */ : static void : AllocSetDelete(MemoryContext context) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:615 10.00 : 7985c0: 55 push %rbp 0.00 : 7985c1: 48 89 f9 mov %rdi,%rcx : /* Check for corruption and leaks before freeing */ : AllocSetCheck(context); : #endif : : /* Make it look empty, just in case... */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); 0.00 : 7985c4: 48 8d 41 40 lea 0x40(%rcx),%rax 0.00 : 7985c8: 48 8d 91 98 00 00 00 lea 0x98(%rcx),%rdx : * Unlike AllocSetReset, this *must* free all resources of the set. : * But note we are not responsible for deleting the context node itself. : */ : static void : AllocSetDelete(MemoryContext context) : { 0.00 : 7985cf: 48 89 e5 mov %rsp,%rbp 0.00 : 7985d2: 53 push %rbx 0.00 : 7985d3: 48 83 ec 08 sub $0x8,%rsp : AllocSet set = (AllocSet) context; : AllocBlock block = set->blocks; 0.00 : 7985d7: 48 8b 7f 38 mov 0x38(%rdi),%rdi 0.00 : 7985db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* Check for corruption and leaks before freeing */ : AllocSetCheck(context); : #endif : : /* Make it look empty, just in case... */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); 0.00 : 7985e0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 7985e7: 48 83 c0 08 add $0x8,%rax 0.00 : 7985eb: 48 39 d0 cmp %rdx,%rax 0.00 : 7985ee: 75 f0 jne 7985e0 : set->blocks = NULL; : set->keeper = NULL; : : while (block != NULL) 0.00 : 7985f0: 48 85 ff test %rdi,%rdi : AllocSetCheck(context); : #endif : : /* Make it look empty, just in case... */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); : set->blocks = NULL; 0.00 : 7985f3: 48 c7 41 38 00 00 00 movq $0x0,0x38(%rcx) 0.00 : 7985fa: 00 : set->keeper = NULL; 0.00 : 7985fb: 48 c7 81 b8 00 00 00 movq $0x0,0xb8(%rcx) 0.00 : 798602: 00 00 00 00 : : while (block != NULL) 0.00 : 798606: 74 19 je 798621 0.00 : 798608: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79860f: 00 : { : AllocBlock next = block->next; 0.00 : 798610: 48 8b 5f 08 mov 0x8(%rdi),%rbx : : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:638 80.00 : 798614: e8 07 12 cd ff callq 469820 : /* Make it look empty, just in case... */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); : set->blocks = NULL; : set->keeper = NULL; : : while (block != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:631 10.00 : 798619: 48 85 db test %rbx,%rbx : AllocBlock next = block->next; : : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); 0.00 : 79861c: 48 89 df mov %rbx,%rdi : /* Make it look empty, just in case... */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); : set->blocks = NULL; : set->keeper = NULL; : : while (block != NULL) 0.00 : 79861f: 75 ef jne 798610 : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); : block = next; : } : } 0.00 : 798621: 48 83 c4 08 add $0x8,%rsp 0.00 : 798625: 5b pop %rbx 0.00 : 798626: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1693 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1693 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1693 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1704 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1706 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1721 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1721 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079e1c0 : : * and is now owned by the caller. : */ : bool : tuplesort_getdatum(Tuplesortstate *state, bool forward, : Datum *val, bool *isNull) : { 0.00 : 79e1c0: 55 push %rbp : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : bool should_free; : : if (!tuplesort_gettuple_common(state, forward, &stup, &should_free)) 0.00 : 79e1c1: 40 0f be f6 movsbl %sil,%esi : * and is now owned by the caller. : */ : bool : tuplesort_getdatum(Tuplesortstate *state, bool forward, : Datum *val, bool *isNull) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1693 10.00 : 79e1c5: 48 89 e5 mov %rsp,%rbp 0.00 : 79e1c8: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 79e1cc: 4c 89 65 e8 mov %r12,-0x18(%rbp) 20.00 : 79e1d0: 49 89 d4 mov %rdx,%r12 0.00 : 79e1d3: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 79e1d7: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 79e1db: 48 83 ec 40 sub $0x40,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 79e1df: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 79e1e3: 49 89 ce mov %rcx,%r14 : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : bool should_free; : : if (!tuplesort_gettuple_common(state, forward, &stup, &should_free)) 0.00 : 79e1e6: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 79e1ea: 48 8d 4d df lea -0x21(%rbp),%rcx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 79e1ee: 4c 8b 2d 6b c6 41 00 mov 0x41c66b(%rip),%r13 # bba860 : * and is now owned by the caller. : */ : bool : tuplesort_getdatum(Tuplesortstate *state, bool forward, : Datum *val, bool *isNull) : { 10.00 : 79e1f5: 48 89 fb mov %rdi,%rbx : : CurrentMemoryContext = context; 0.00 : 79e1f8: 48 89 05 61 c6 41 00 mov %rax,0x41c661(%rip) # bba860 : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : bool should_free; : : if (!tuplesort_gettuple_common(state, forward, &stup, &should_free)) 0.00 : 79e1ff: e8 3c f9 ff ff callq 79db40 0.00 : 79e204: 84 c0 test %al,%al 0.00 : 79e206: 74 58 je 79e260 : { : MemoryContextSwitchTo(oldcontext); : return false; : } : : if (stup.isnull1 || state->datumTypeByVal) 0.00 : 79e208: 80 7d d0 00 cmpb $0x0,-0x30(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1704 10.00 : 79e20c: 74 32 je 79e240 : { : *val = stup.datum1; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1706 10.00 : 79e20e: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 79e212: 49 89 04 24 mov %rax,(%r12) : *isNull = stup.isnull1; 0.00 : 79e216: 0f b6 45 d0 movzbl -0x30(%rbp),%eax 0.00 : 79e21a: 41 88 06 mov %al,(%r14) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 20.00 : 79e21d: 4c 89 2d 3c c6 41 00 mov %r13,0x41c63c(%rip) # bba860 0.00 : 79e224: b8 01 00 00 00 mov $0x1,%eax : } : : MemoryContextSwitchTo(oldcontext); : : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1721 10.00 : 79e229: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 79e22d: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 79e231: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 79e235: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 79e239: c9 leaveq 10.00 : 79e23a: c3 retq 0.00 : 79e23b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : MemoryContextSwitchTo(oldcontext); : return false; : } : : if (stup.isnull1 || state->datumTypeByVal) 0.00 : 79e240: 80 bb 40 01 00 00 00 cmpb $0x0,0x140(%rbx) 0.00 : 79e247: 75 c5 jne 79e20e : *val = stup.datum1; : *isNull = stup.isnull1; : } : else : { : if (should_free) 0.00 : 79e249: 80 7d df 00 cmpb $0x0,-0x21(%rbp) 0.00 : 79e24d: 74 21 je 79e270 : *val = stup.datum1; 0.00 : 79e24f: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 79e253: 49 89 04 24 mov %rax,(%r12) : else : *val = datumCopy(stup.datum1, false, state->datumTypeLen); : *isNull = false; 0.00 : 79e257: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 79e25b: eb c0 jmp 79e21d 0.00 : 79e25d: 0f 1f 00 nopl (%rax) 0.00 : 79e260: 4c 89 2d f9 c5 41 00 mov %r13,0x41c5f9(%rip) # bba860 : } : : MemoryContextSwitchTo(oldcontext); : : return true; : } 0.00 : 79e267: eb c0 jmp 79e229 0.00 : 79e269: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else : { : if (should_free) : *val = stup.datum1; : else : *val = datumCopy(stup.datum1, false, state->datumTypeLen); 0.00 : 79e270: 8b 93 3c 01 00 00 mov 0x13c(%rbx),%edx 0.00 : 79e276: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 79e27a: 31 f6 xor %esi,%esi 0.00 : 79e27c: e8 ef 1c f3 ff callq 6cff70 0.00 : 79e281: 49 89 04 24 mov %rax,(%r12) 0.00 : 79e285: eb d0 jmp 79e257 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 22.22 ??:0 22.22 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002c220 <__ctype_b_loc>: ??:0 33.33 : 2c220: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx 0.00 : 2c227: 00 00 22.22 : 2c229: 48 8b 15 a0 5b 34 00 mov 0x345ba0(%rip),%rdx # 371dd0 <_DYNAMIC+0x270> 11.11 : 2c230: 48 83 3c 11 00 cmpq $0x0,(%rcx,%rdx,1) 11.11 : 2c235: 74 05 je 2c23c <__ctype_b_loc+0x1c> 22.22 : 2c237: 48 8d 04 11 lea (%rcx,%rdx,1),%rax 0.00 : 2c23b: c3 retq 0.00 : 2c23c: 48 8b 05 45 5b 34 00 mov 0x345b45(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2c243: 48 8b 04 01 mov (%rcx,%rax,1),%rax 0.00 : 2c247: 48 8b 00 mov (%rax),%rax 0.00 : 2c24a: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2c24e: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2c254: 48 89 04 11 mov %rax,(%rcx,%rdx,1) 0.00 : 2c258: eb dd jmp 2c237 <__ctype_b_loc+0x17> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 33.33 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000e3c0 <_dl_sort_fini>: ??:0 16.67 : e3c0: 41 57 push %r15 0.00 : e3c2: 49 89 d2 mov %rdx,%r10 0.00 : e3c5: 49 89 f7 mov %rsi,%r15 0.00 : e3c8: 4c 89 c0 mov %r8,%rax 0.00 : e3cb: 41 56 push %r14 0.00 : e3cd: 49 89 fe mov %rdi,%r14 0.00 : e3d0: 41 55 push %r13 0.00 : e3d2: 41 54 push %r12 0.00 : e3d4: 55 push %rbp 0.00 : e3d5: 53 push %rbx 0.00 : e3d6: 48 83 ec 68 sub $0x68,%rsp 0.00 : e3da: 4d 85 c0 test %r8,%r8 0.00 : e3dd: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : e3e2: 75 04 jne e3e8 <_dl_sort_fini+0x28> 0.00 : e3e4: 4c 8b 77 18 mov 0x18(%rdi),%r14 0.00 : e3e8: 4d 85 f6 test %r14,%r14 0.00 : e3eb: 0f 84 ea 00 00 00 je e4db <_dl_sort_fini+0x11b> 0.00 : e3f1: 48 85 c0 test %rax,%rax 0.00 : e3f4: 0f 94 c0 sete %al 0.00 : e3f7: 0f b6 c0 movzbl %al,%eax 0.00 : e3fa: 89 44 24 44 mov %eax,0x44(%rsp) 0.00 : e3fe: 89 c0 mov %eax,%eax 0.00 : e400: 49 8d 14 c7 lea (%r15,%rax,8),%rdx 0.00 : e404: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : e409: 48 89 54 24 50 mov %rdx,0x50(%rsp) 0.00 : e40e: eb 0d jmp e41d <_dl_sort_fini+0x5d> 0.00 : e410: 4d 8b 76 18 mov 0x18(%r14),%r14 0.00 : e414: 4d 85 f6 test %r14,%r14 0.00 : e417: 0f 84 be 00 00 00 je e4db <_dl_sort_fini+0x11b> 0.00 : e41d: 49 8b 6e 28 mov 0x28(%r14),%rbp 0.00 : e421: 4c 39 f5 cmp %r14,%rbp 0.00 : e424: 75 ea jne e410 <_dl_sort_fini+0x50> 0.00 : e426: 41 83 be e4 03 00 00 cmpl $0xffffffff,0x3e4(%r14) 0.00 : e42d: ff 0.00 : e42e: 74 e0 je e410 <_dl_sort_fini+0x50> 0.00 : e430: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : e435: 8b 44 24 44 mov 0x44(%rsp),%eax 0.00 : e439: 4c 3b 32 cmp (%rdx),%r14 0.00 : e43c: 41 89 c4 mov %eax,%r12d 0.00 : e43f: 74 30 je e471 <_dl_sort_fini+0xb1> 0.00 : e441: 4c 3b 54 24 48 cmp 0x48(%rsp),%r10 0.00 : e446: 0f 86 fa 01 00 00 jbe e646 <_dl_sort_fini+0x286> 0.00 : e44c: 44 8b 64 24 44 mov 0x44(%rsp),%r12d 0.00 : e451: eb 0e jmp e461 <_dl_sort_fini+0xa1> 0.00 : e453: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 33.33 : e458: 4c 39 d0 cmp %r10,%rax 0.00 : e45b: 0f 83 e5 01 00 00 jae e646 <_dl_sort_fini+0x286> 0.00 : e461: 41 83 c4 01 add $0x1,%r12d 0.00 : e465: 44 89 e0 mov %r12d,%eax 0.00 : e468: 49 3b 2c c7 cmp (%r15,%rax,8),%rbp 0.00 : e46c: 75 ea jne e458 <_dl_sort_fini+0x98> 0.00 : e46e: 44 89 e0 mov %r12d,%eax 0.00 : e471: 44 8d 48 01 lea 0x1(%rax),%r9d 0.00 : e475: 45 89 c8 mov %r9d,%r8d 0.00 : e478: 4d 39 c2 cmp %r8,%r10 0.00 : e47b: 76 93 jbe e410 <_dl_sort_fini+0x50> 0.00 : e47d: 0f 1f 00 nopl (%rax) 0.00 : e480: 4b 8d 04 c7 lea (%r15,%r8,8),%rax 0.00 : e484: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : e489: 48 8b 18 mov (%rax),%rbx 0.00 : e48c: 48 8b 93 b8 03 00 00 mov 0x3b8(%rbx),%rdx 16.67 : e493: 48 85 d2 test %rdx,%rdx 0.00 : e496: 75 11 jne e4a9 <_dl_sort_fini+0xe9> 0.00 : e498: eb 18 jmp e4b2 <_dl_sort_fini+0xf2> 0.00 : e49a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : e4a0: 48 39 c5 cmp %rax,%rbp 0.00 : e4a3: 74 4b je e4f0 <_dl_sort_fini+0x130> 0.00 : e4a5: 48 83 c2 08 add $0x8,%rdx 0.00 : e4a9: 48 8b 02 mov (%rdx),%rax 0.00 : e4ac: 48 85 c0 test %rax,%rax 0.00 : e4af: 90 nop 0.00 : e4b0: 75 ee jne e4a0 <_dl_sort_fini+0xe0> 16.67 : e4b2: 48 8b 93 c8 03 00 00 mov 0x3c8(%rbx),%rdx 0.00 : e4b9: 48 85 d2 test %rdx,%rdx 0.00 : e4bc: 0f 85 d6 00 00 00 jne e598 <_dl_sort_fini+0x1d8> 0.00 : e4c2: 41 83 c1 01 add $0x1,%r9d 0.00 : e4c6: 45 89 c8 mov %r9d,%r8d 0.00 : e4c9: 4d 39 c2 cmp %r8,%r10 0.00 : e4cc: 77 b2 ja e480 <_dl_sort_fini+0xc0> 0.00 : e4ce: 4d 8b 76 18 mov 0x18(%r14),%r14 16.67 : e4d2: 4d 85 f6 test %r14,%r14 0.00 : e4d5: 0f 85 42 ff ff ff jne e41d <_dl_sort_fini+0x5d> 0.00 : e4db: 48 83 c4 68 add $0x68,%rsp 0.00 : e4df: 5b pop %rbx 0.00 : e4e0: 5d pop %rbp 0.00 : e4e1: 41 5c pop %r12 0.00 : e4e3: 41 5d pop %r13 0.00 : e4e5: 41 5e pop %r14 0.00 : e4e7: 41 5f pop %r15 0.00 : e4e9: c3 retq 0.00 : e4ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : e4f0: 45 89 e5 mov %r12d,%r13d 0.00 : e4f3: 44 89 ca mov %r9d,%edx 0.00 : e4f6: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : e4fb: 49 8d 45 01 lea 0x1(%r13),%rax 0.00 : e4ff: 44 29 e2 sub %r12d,%edx 0.00 : e502: 4b 8d 34 ef lea (%r15,%r13,8),%rsi 0.00 : e506: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.00 : e50b: 48 c1 e2 03 shl $0x3,%rdx 0.00 : e50f: 44 89 4c 24 10 mov %r9d,0x10(%rsp) 0.00 : e514: 49 8d 3c c7 lea (%r15,%rax,8),%rdi 0.00 : e518: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : e51d: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : e522: e8 b9 84 00 00 callq 169e0 0.00 : e527: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : e52d: 4b 89 1c ef mov %rbx,(%r15,%r13,8) 0.00 : e531: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : e536: 44 8b 4c 24 10 mov 0x10(%rsp),%r9d 0.00 : e53b: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : e540: 74 3a je e57c <_dl_sort_fini+0x1bc> 0.00 : e542: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : e547: 48 89 d7 mov %rdx,%rdi 0.00 : e54a: 48 03 7c 24 38 add 0x38(%rsp),%rdi 0.00 : e54f: 42 0f b6 1c 02 movzbl (%rdx,%r8,1),%ebx 0.00 : e554: 48 89 d6 mov %rdx,%rsi 0.00 : e557: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : e55c: 4c 01 ee add %r13,%rsi 0.00 : e55f: e8 7c 84 00 00 callq 169e0 0.00 : e564: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : e569: 42 88 1c 28 mov %bl,(%rax,%r13,1) 0.00 : e56d: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : e572: 44 8b 4c 24 10 mov 0x10(%rsp),%r9d 0.00 : e577: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : e57c: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : e581: 41 83 c4 01 add $0x1,%r12d 0.00 : e585: 48 8b 1a mov (%rdx),%rbx 0.00 : e588: 48 8b 93 c8 03 00 00 mov 0x3c8(%rbx),%rdx 0.00 : e58f: 48 85 d2 test %rdx,%rdx 0.00 : e592: 0f 84 2a ff ff ff je e4c2 <_dl_sort_fini+0x102> 0.00 : e598: 8b 0a mov (%rdx),%ecx 0.00 : e59a: 85 c9 test %ecx,%ecx 0.00 : e59c: 0f 84 20 ff ff ff je e4c2 <_dl_sort_fini+0x102> 0.00 : e5a2: 83 e9 01 sub $0x1,%ecx 0.00 : e5a5: 89 c8 mov %ecx,%eax 0.00 : e5a7: 48 3b 6c c2 08 cmp 0x8(%rdx,%rax,8),%rbp 0.00 : e5ac: 75 ec jne e59a <_dl_sort_fini+0x1da> 0.00 : e5ae: 45 89 e5 mov %r12d,%r13d 0.00 : e5b1: 44 89 c8 mov %r9d,%eax 0.00 : e5b4: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : e5b9: 49 8d 55 01 lea 0x1(%r13),%rdx 0.00 : e5bd: 44 29 e0 sub %r12d,%eax 0.00 : e5c0: 4b 8d 34 ef lea (%r15,%r13,8),%rsi 0.00 : e5c4: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : e5c9: 44 89 4c 24 10 mov %r9d,0x10(%rsp) 0.00 : e5ce: 48 89 54 24 60 mov %rdx,0x60(%rsp) 0.00 : e5d3: 48 89 c2 mov %rax,%rdx 0.00 : e5d6: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : e5db: 48 c1 e2 03 shl $0x3,%rdx 0.00 : e5df: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : e5e4: 49 8d 3c c7 lea (%r15,%rax,8),%rdi 0.00 : e5e8: e8 f3 83 00 00 callq 169e0 0.00 : e5ed: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : e5f3: 4b 89 1c ef mov %rbx,(%r15,%r13,8) 0.00 : e5f7: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : e5fc: 44 8b 4c 24 10 mov 0x10(%rsp),%r9d 0.00 : e601: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : e606: 0f 84 b6 fe ff ff je e4c2 <_dl_sort_fini+0x102> 0.00 : e60c: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : e611: 48 89 d7 mov %rdx,%rdi 0.00 : e614: 48 03 7c 24 60 add 0x60(%rsp),%rdi 0.00 : e619: 42 0f b6 1c 02 movzbl (%rdx,%r8,1),%ebx 0.00 : e61e: 48 89 d6 mov %rdx,%rsi 0.00 : e621: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : e626: 4c 01 ee add %r13,%rsi 0.00 : e629: e8 b2 83 00 00 callq 169e0 0.00 : e62e: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : e633: 42 88 1c 28 mov %bl,(%rax,%r13,1) 0.00 : e637: 44 8b 4c 24 10 mov 0x10(%rsp),%r9d 0.00 : e63c: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : e641: e9 7c fe ff ff jmpq e4c2 <_dl_sort_fini+0x102> 0.00 : e646: 48 8d 0d f0 b7 00 00 lea 0xb7f0(%rip),%rcx # 19e3d <__PRETTY_FUNCTION__.10195> 0.00 : e64d: 48 8d 35 8e b7 00 00 lea 0xb78e(%rip),%rsi # 19de2 <_dl_out_of_memory+0x39> 0.00 : e654: 48 8d 3d 91 b7 00 00 lea 0xb791(%rip),%rdi # 19dec <_dl_out_of_memory+0x43> 0.00 : e65b: ba 2f 00 00 00 mov $0x2f,%edx 0.00 : e660: e8 0b 67 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 16.67 /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:131 16.67 /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:131 16.67 /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:131 16.67 /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:129 16.67 /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:129 16.67 /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:126 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000406350 : : to the nth power, and then take mod Modulus. : */ : : /* Nth Element of sequence starting with StartSeed */ : void NthElement (DSS_HUGE N, DSS_HUGE *StartSeed) : { 0.00 : 406350: 55 push %rbp 0.00 : 406351: 48 89 f5 mov %rsi,%rbp 0.00 : 406354: 53 push %rbx 0.00 : 406355: 48 89 fb mov %rdi,%rbx 0.00 : 406358: 48 83 ec 08 sub $0x8,%rsp : DSS_HUGE Z; : DSS_HUGE Mult; : static int ln=-1; : int i; : : if ((verbose > 0) && ++ln % 1000 == 0) 0.00 : 40635c: 48 83 3d 64 54 e0 12 cmpq $0x0,0x12e05464(%rip) # 1320b7c8 0.00 : 406363: 00 0.00 : 406364: 7e 30 jle 406396 0.00 : 406366: 8b 05 74 47 20 00 mov 0x204774(%rip),%eax # 60aae0 0.00 : 40636c: ba d3 4d 62 10 mov $0x10624dd3,%edx 0.00 : 406371: 8d 48 01 lea 0x1(%rax),%ecx 0.00 : 406374: 89 c8 mov %ecx,%eax 0.00 : 406376: 89 0d 64 47 20 00 mov %ecx,0x204764(%rip) # 60aae0 0.00 : 40637c: f7 ea imul %edx 0.00 : 40637e: 89 c8 mov %ecx,%eax 0.00 : 406380: c1 f8 1f sar $0x1f,%eax 0.00 : 406383: c1 fa 06 sar $0x6,%edx 0.00 : 406386: 29 c2 sub %eax,%edx 0.00 : 406388: 69 d2 e8 03 00 00 imul $0x3e8,%edx,%edx 0.00 : 40638e: 39 d1 cmp %edx,%ecx 0.00 : 406390: 0f 84 92 00 00 00 je 406428 : i = ln % LN_CNT; : fprintf(stderr, "%c\b", lnoise[i]); : } : Mult = Multiplier; : Z = (DSS_HUGE) *StartSeed; : while (N > 0 ) 0.00 : 406396: 48 85 db test %rbx,%rbx : { : i = ln % LN_CNT; : fprintf(stderr, "%c\b", lnoise[i]); : } : Mult = Multiplier; : Z = (DSS_HUGE) *StartSeed; 0.00 : 406399: 48 8b 7d 00 mov 0x0(%rbp),%rdi : while (N > 0 ) 0.00 : 40639d: 7e 79 jle 406418 0.00 : 40639f: be a7 41 00 00 mov $0x41a7,%esi : { : if (N % 2 != 0) /* testing for oddness, this seems portable */ : Z = (Mult * Z) % Modulus; 0.00 : 4063a4: 49 b8 03 00 00 00 01 movabs $0x8000000100000003,%r8 0.00 : 4063ab: 00 00 80 0.00 : 4063ae: eb 2f jmp 4063df : N = N / 2; /* integer division, truncates */ : Mult = (Mult * Mult) % Modulus; 0.00 : 4063b0: 48 89 f1 mov %rsi,%rcx 0.00 : 4063b3: 48 0f af ce imul %rsi,%rcx 0.00 : 4063b7: 48 89 c8 mov %rcx,%rax 0.00 : 4063ba: 49 f7 e8 imul %r8 16.67 : 4063bd: 48 89 c8 mov %rcx,%rax 16.67 : 4063c0: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 4063c4: 48 8d 34 0a lea (%rdx,%rcx,1),%rsi 0.00 : 4063c8: 48 c1 fe 1e sar $0x1e,%rsi 0.00 : 4063cc: 48 29 c6 sub %rax,%rsi 0.00 : 4063cf: 48 89 f0 mov %rsi,%rax 16.67 : 4063d2: 48 c1 e0 1f shl $0x1f,%rax 0.00 : 4063d6: 48 29 f0 sub %rsi,%rax 0.00 : 4063d9: 48 89 ce mov %rcx,%rsi 0.00 : 4063dc: 48 29 c6 sub %rax,%rsi : } : Mult = Multiplier; : Z = (DSS_HUGE) *StartSeed; : while (N > 0 ) : { : if (N % 2 != 0) /* testing for oddness, this seems portable */ 0.00 : 4063df: f6 c3 01 test $0x1,%bl 0.00 : 4063e2: 74 2f je 406413 : Z = (Mult * Z) % Modulus; 0.00 : 4063e4: 48 89 f1 mov %rsi,%rcx 0.00 : 4063e7: 48 0f af cf imul %rdi,%rcx 0.00 : 4063eb: 48 89 c8 mov %rcx,%rax /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:129 16.67 : 4063ee: 49 f7 e8 imul %r8 0.00 : 4063f1: 48 89 c8 mov %rcx,%rax 0.00 : 4063f4: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 4063f8: 48 8d 3c 0a lea (%rdx,%rcx,1),%rdi 16.67 : 4063fc: 48 c1 ff 1e sar $0x1e,%rdi 0.00 : 406400: 48 29 c7 sub %rax,%rdi 0.00 : 406403: 48 89 f8 mov %rdi,%rax 0.00 : 406406: 48 c1 e0 1f shl $0x1f,%rax 0.00 : 40640a: 48 29 f8 sub %rdi,%rax 0.00 : 40640d: 48 89 cf mov %rcx,%rdi 0.00 : 406410: 48 29 c7 sub %rax,%rdi : i = ln % LN_CNT; : fprintf(stderr, "%c\b", lnoise[i]); : } : Mult = Multiplier; : Z = (DSS_HUGE) *StartSeed; : while (N > 0 ) /home/Computational/mark/src/dbt3/src/dbgen/speed_seed.c:126 16.67 : 406413: 48 d1 fb sar %rbx 0.00 : 406416: 75 98 jne 4063b0 : if (N % 2 != 0) /* testing for oddness, this seems portable */ : Z = (Mult * Z) % Modulus; : N = N / 2; /* integer division, truncates */ : Mult = (Mult * Mult) % Modulus; : } : *StartSeed = Z; 0.00 : 406418: 48 89 7d 00 mov %rdi,0x0(%rbp) : : return; : } 0.00 : 40641c: 48 83 c4 08 add $0x8,%rsp 0.00 : 406420: 5b pop %rbx 0.00 : 406421: 5d pop %rbp 0.00 : 406422: c3 retq 0.00 : 406423: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int i; : : if ((verbose > 0) && ++ln % 1000 == 0) : { : i = ln % LN_CNT; : fprintf(stderr, "%c\b", lnoise[i]); 0.00 : 406428: c1 e8 1e shr $0x1e,%eax 0.00 : 40642b: 48 8b 3d f6 46 20 00 mov 0x2046f6(%rip),%rdi # 60ab28 0.00 : 406432: be 43 7a 40 00 mov $0x407a43,%esi 0.00 : 406437: 8d 14 01 lea (%rcx,%rax,1),%edx 0.00 : 40643a: 83 e2 03 and $0x3,%edx 0.00 : 40643d: 29 c2 sub %eax,%edx 0.00 : 40643f: 31 c0 xor %eax,%eax 0.00 : 406441: 48 63 d2 movslq %edx,%rdx 0.00 : 406444: 0f be 92 17 84 40 00 movsbl 0x408417(%rdx),%edx 0.00 : 40644b: e8 10 aa ff ff callq 400e60 0.00 : 406450: e9 41 ff ff ff jmpq 406396 Sorted summary for file /bin/bash ---------------------------------------------- 28.57 ??:0 28.57 ??:0 28.57 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000425a00 : ??:0 28.57 : 425a00: 55 push %rbp 0.00 : 425a01: 53 push %rbx 0.00 : 425a02: 48 89 fb mov %rdi,%rbx 0.00 : 425a05: 48 83 ec 08 sub $0x8,%rsp 0.00 : 425a09: 48 85 ff test %rdi,%rdi 0.00 : 425a0c: 75 6e jne 425a7c 0.00 : 425a0e: e9 90 00 00 00 jmpq 425aa3 0.00 : 425a13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 425a18: c6 03 df movb $0xdf,(%rbx) 28.57 : 425a1b: c6 43 01 df movb $0xdf,0x1(%rbx) 0.00 : 425a1f: c6 43 02 df movb $0xdf,0x2(%rbx) 0.00 : 425a23: c6 43 03 df movb $0xdf,0x3(%rbx) 0.00 : 425a27: c6 43 04 df movb $0xdf,0x4(%rbx) 0.00 : 425a2b: c6 43 05 df movb $0xdf,0x5(%rbx) 14.29 : 425a2f: c6 43 06 df movb $0xdf,0x6(%rbx) 0.00 : 425a33: c6 43 07 df movb $0xdf,0x7(%rbx) 0.00 : 425a37: c6 43 08 df movb $0xdf,0x8(%rbx) 0.00 : 425a3b: c6 43 09 df movb $0xdf,0x9(%rbx) 0.00 : 425a3f: c6 43 0a df movb $0xdf,0xa(%rbx) 0.00 : 425a43: c6 43 0b df movb $0xdf,0xb(%rbx) 0.00 : 425a47: c6 43 0c df movb $0xdf,0xc(%rbx) 0.00 : 425a4b: c6 43 0d df movb $0xdf,0xd(%rbx) 0.00 : 425a4f: c6 43 0e df movb $0xdf,0xe(%rbx) 0.00 : 425a53: c6 43 0f df movb $0xdf,0xf(%rbx) 0.00 : 425a57: 8b 05 ef ed 26 00 mov 0x26edef(%rip),%eax # 69484c 0.00 : 425a5d: 48 8b 15 dc ed 26 00 mov 0x26eddc(%rip),%rdx # 694840 0.00 : 425a64: 48 63 c8 movslq %eax,%rcx 0.00 : 425a67: 83 c0 01 add $0x1,%eax 0.00 : 425a6a: 48 85 ed test %rbp,%rbp 0.00 : 425a6d: 48 89 1c ca mov %rbx,(%rdx,%rcx,8) 0.00 : 425a71: 89 05 d5 ed 26 00 mov %eax,0x26edd5(%rip) # 69484c 0.00 : 425a77: 74 2a je 425aa3 0.00 : 425a79: 48 89 eb mov %rbp,%rbx 0.00 : 425a7c: 48 8b 7b 08 mov 0x8(%rbx),%rdi 28.57 : 425a80: 48 8b 2b mov (%rbx),%rbp 0.00 : 425a83: e8 38 fe ff ff callq 4258c0 0.00 : 425a88: 8b 05 be ed 26 00 mov 0x26edbe(%rip),%eax # 69484c 0.00 : 425a8e: 3b 05 b4 ed 26 00 cmp 0x26edb4(%rip),%eax # 694848 0.00 : 425a94: 7c 82 jl 425a18 0.00 : 425a96: 48 89 df mov %rbx,%rdi 0.00 : 425a99: e8 32 27 03 00 callq 4581d0 0.00 : 425a9e: 48 85 ed test %rbp,%rbp 0.00 : 425aa1: 75 d6 jne 425a79 0.00 : 425aa3: 48 83 c4 08 add $0x8,%rsp 0.00 : 425aa7: 5b pop %rbx 0.00 : 425aa8: 5d pop %rbp Sorted summary for file /bin/bash ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004383d0 : 20.00 : 4383d0: 8b 15 4e d9 25 00 mov 0x25d94e(%rip),%edx # 695d24 60.00 : 4383d6: 53 push %rbx 0.00 : 4383d7: 31 db xor %ebx,%ebx 0.00 : 4383d9: 85 d2 test %edx,%edx 0.00 : 4383db: 75 11 jne 4383ee 0.00 : 4383dd: eb 5b jmp 43843a 0.00 : 4383df: 90 nop 0.00 : 4383e0: 8b 05 3e d9 25 00 mov 0x25d93e(%rip),%eax # 695d24 0.00 : 4383e6: 48 83 c3 01 add $0x1,%rbx 0.00 : 4383ea: 85 c0 test %eax,%eax 0.00 : 4383ec: 74 42 je 438430 0.00 : 4383ee: 39 1d 34 d9 25 00 cmp %ebx,0x25d934(%rip) # 695d28 0.00 : 4383f4: 7e 3a jle 438430 0.00 : 4383f6: 48 8b 05 d3 d8 25 00 mov 0x25d8d3(%rip),%rax # 695cd0 0.00 : 4383fd: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 0.00 : 438401: 74 dd je 4383e0 0.00 : 438403: 89 df mov %ebx,%edi 0.00 : 438405: e8 d6 da fd ff callq 415ee0 0.00 : 43840a: 48 8b 05 bf d8 25 00 mov 0x25d8bf(%rip),%rax # 695cd0 0.00 : 438411: c6 04 18 00 movb $0x0,(%rax,%rbx,1) 0.00 : 438415: 83 2d 08 d9 25 00 01 subl $0x1,0x25d908(%rip) # 695d24 0.00 : 43841c: 48 83 c3 01 add $0x1,%rbx 0.00 : 438420: 8b 05 fe d8 25 00 mov 0x25d8fe(%rip),%eax # 695d24 0.00 : 438426: 85 c0 test %eax,%eax 0.00 : 438428: 75 c4 jne 4383ee 0.00 : 43842a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 20.00 : 438430: c7 05 ea d8 25 00 00 movl $0x0,0x25d8ea(%rip) # 695d24 0.00 : 438437: 00 00 00 0.00 : 43843a: 5b pop %rbx Sorted summary for file /bin/bash ---------------------------------------------- 33.33 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043aab0 : 0.00 : 43aab0: 41 57 push %r15 0.00 : 43aab2: 41 56 push %r14 0.00 : 43aab4: 41 55 push %r13 0.00 : 43aab6: 41 54 push %r12 0.00 : 43aab8: 55 push %rbp 0.00 : 43aab9: 48 89 fd mov %rdi,%rbp 0.00 : 43aabc: 53 push %rbx 0.00 : 43aabd: 48 83 ec 18 sub $0x18,%rsp 0.00 : 43aac1: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 43aac4: 0f 84 d6 00 00 00 je 43aba0 0.00 : 43aaca: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 43aad1: 00 0.00 : 43aad2: e8 19 b9 fd ff callq 4163f0 0.00 : 43aad7: 4c 8d 64 05 00 lea 0x0(%rbp,%rax,1),%r12 0.00 : 43aadc: 48 8d 7c 00 01 lea 0x1(%rax,%rax,1),%rdi 0.00 : 43aae1: e8 da d7 01 00 callq 4582c0 0.00 : 43aae6: 4c 39 e5 cmp %r12,%rbp 0.00 : 43aae9: 49 89 c6 mov %rax,%r14 0.00 : 43aaec: 48 89 c3 mov %rax,%rbx 0.00 : 43aaef: 73 6b jae 43ab5c 0.00 : 43aaf1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43aaf8: c6 03 01 movb $0x1,(%rbx) ??:0 33.33 : 43aafb: 48 83 c3 01 add $0x1,%rbx 0.00 : 43aaff: e8 5c b9 fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43ab04: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43ab08: 76 6e jbe 43ab78 0.00 : 43ab0a: 4c 89 e2 mov %r12,%rdx 0.00 : 43ab0d: 48 89 e1 mov %rsp,%rcx 0.00 : 43ab10: 31 ff xor %edi,%edi 0.00 : 43ab12: 48 29 ea sub %rbp,%rdx 0.00 : 43ab15: 48 89 ee mov %rbp,%rsi 0.00 : 43ab18: 4c 8b 2c 24 mov (%rsp),%r13 16.67 : 43ab1c: e8 2f b3 fd ff callq 415e50 0.00 : 43ab21: 48 89 c1 mov %rax,%rcx 0.00 : 43ab24: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 43ab28: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43ab2c: 76 6a jbe 43ab98 16.67 : 43ab2e: 48 85 c9 test %rcx,%rcx 0.00 : 43ab31: 75 05 jne 43ab38 0.00 : 43ab33: b9 01 00 00 00 mov $0x1,%ecx 16.67 : 43ab38: 31 d2 xor %edx,%edx 0.00 : 43ab3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43ab40: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43ab44: 48 83 c2 01 add $0x1,%rdx 0.00 : 43ab48: 48 83 c5 01 add $0x1,%rbp 0.00 : 43ab4c: 88 03 mov %al,(%rbx) 16.67 : 43ab4e: 48 83 c3 01 add $0x1,%rbx 0.00 : 43ab52: 48 39 d1 cmp %rdx,%rcx 0.00 : 43ab55: 77 e9 ja 43ab40 0.00 : 43ab57: 49 39 ec cmp %rbp,%r12 0.00 : 43ab5a: 77 9c ja 43aaf8 0.00 : 43ab5c: c6 03 00 movb $0x0,(%rbx) 0.00 : 43ab5f: 48 83 c4 18 add $0x18,%rsp 0.00 : 43ab63: 4c 89 f0 mov %r14,%rax 0.00 : 43ab66: 5b pop %rbx 0.00 : 43ab67: 5d pop %rbp 0.00 : 43ab68: 41 5c pop %r12 0.00 : 43ab6a: 41 5d pop %r13 0.00 : 43ab6c: 41 5e pop %r14 0.00 : 43ab6e: 41 5f pop %r15 0.00 : 43ab70: c3 retq 0.00 : 43ab71: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43ab78: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43ab7c: 48 83 c5 01 add $0x1,%rbp 0.00 : 43ab80: 88 03 mov %al,(%rbx) 0.00 : 43ab82: 48 83 c3 01 add $0x1,%rbx 0.00 : 43ab86: 49 39 ec cmp %rbp,%r12 0.00 : 43ab89: 0f 87 69 ff ff ff ja 43aaf8 0.00 : 43ab8f: eb cb jmp 43ab5c 0.00 : 43ab91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43ab98: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 43ab9c: eb 95 jmp 43ab33 0.00 : 43ab9e: 66 90 xchg %ax,%ax 0.00 : 43aba0: bf 02 00 00 00 mov $0x2,%edi 0.00 : 43aba5: 0f 1f 00 nopl (%rax) 0.00 : 43aba8: e8 13 d7 01 00 callq 4582c0 0.00 : 43abad: 49 89 c6 mov %rax,%r14 0.00 : 43abb0: c6 00 7f movb $0x7f,(%rax) 0.00 : 43abb3: c6 40 01 00 movb $0x0,0x1(%rax) 0.00 : 43abb7: eb a6 jmp 43ab5f Sorted summary for file /bin/bash ---------------------------------------------- 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043b7c0 : ??:0 28.57 : 43b7c0: 41 57 push %r15 0.00 : 43b7c2: 41 56 push %r14 0.00 : 43b7c4: 41 55 push %r13 0.00 : 43b7c6: 49 89 fd mov %rdi,%r13 0.00 : 43b7c9: 41 54 push %r12 0.00 : 43b7cb: 55 push %rbp 0.00 : 43b7cc: 48 89 f5 mov %rsi,%rbp 0.00 : 43b7cf: 53 push %rbx 0.00 : 43b7d0: 89 d3 mov %edx,%ebx 0.00 : 43b7d2: 48 83 ec 28 sub $0x28,%rsp 0.00 : 43b7d6: 48 85 ff test %rdi,%rdi 0.00 : 43b7d9: 75 15 jne 43b7f0 0.00 : 43b7db: 45 31 f6 xor %r14d,%r14d 0.00 : 43b7de: 48 83 c4 28 add $0x28,%rsp 0.00 : 43b7e2: 4c 89 f0 mov %r14,%rax 0.00 : 43b7e5: 5b pop %rbx 0.00 : 43b7e6: 5d pop %rbp 0.00 : 43b7e7: 41 5c pop %r12 0.00 : 43b7e9: 41 5d pop %r13 0.00 : 43b7eb: 41 5e pop %r14 0.00 : 43b7ed: 41 5f pop %r15 0.00 : 43b7ef: c3 retq 0.00 : 43b7f0: 0f b6 17 movzbl (%rdi),%edx 0.00 : 43b7f3: 84 d2 test %dl,%dl 0.00 : 43b7f5: 74 e4 je 43b7db 0.00 : 43b7f7: 48 85 f6 test %rsi,%rsi 0.00 : 43b7fa: 0f 84 a9 02 00 00 je 43baa9 0.00 : 43b800: 80 3e 20 cmpb $0x20,(%rsi) 14.29 : 43b803: 0f 84 b0 03 00 00 je 43bbb9 0.00 : 43b809: c7 44 24 0c 00 00 00 movl $0x0,0xc(%rsp) 0.00 : 43b810: 00 0.00 : 43b811: 85 db test %ebx,%ebx 0.00 : 43b813: 0f 84 98 02 00 00 je 43bab1 0.00 : 43b819: 48 85 ed test %rbp,%rbp 0.00 : 43b81c: 0f 84 8f 02 00 00 je 43bab1 0.00 : 43b822: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 43b826: 0f 84 85 02 00 00 je 43bab1 0.00 : 43b82c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43b830: e8 2b ac fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43b835: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b839: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 43b83f: 90 nop 0.00 : 43b840: 76 0b jbe 43b84d 0.00 : 43b842: 4c 89 ef mov %r13,%rdi 0.00 : 43b845: e8 a6 ab fd ff callq 4163f0 0.00 : 43b84a: 49 89 c7 mov %rax,%r15 0.00 : 43b84d: 83 e3 03 and $0x3,%ebx 0.00 : 43b850: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 43b857: 00 0.00 : 43b858: 45 31 f6 xor %r14d,%r14d 0.00 : 43b85b: 31 c9 xor %ecx,%ecx 0.00 : 43b85d: 89 5c 24 08 mov %ebx,0x8(%rsp) 0.00 : 43b861: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43b868: 48 63 c1 movslq %ecx,%rax 0.00 : 43b86b: 41 80 7c 05 00 00 cmpb $0x0,0x0(%r13,%rax,1) 0.00 : 43b871: 0f 84 0e 03 00 00 je 43bb85 0.00 : 43b877: 48 8d 54 24 1c lea 0x1c(%rsp),%rdx 0.00 : 43b87c: 48 89 e9 mov %rbp,%rcx 0.00 : 43b87f: 4c 89 fe mov %r15,%rsi 0.00 : 43b882: 4c 89 ef mov %r13,%rdi 0.00 : 43b885: e8 36 f9 ff ff callq 43b1c0 0.00 : 43b88a: 48 85 c0 test %rax,%rax 0.00 : 43b88d: 49 89 c4 mov %rax,%r12 0.00 : 43b890: 0f 84 ef 02 00 00 je 43bb85 0.00 : 43b896: 0f b6 00 movzbl (%rax),%eax 0.00 : 43b899: 3c 7f cmp $0x7f,%al 0.00 : 43b89b: 0f 84 67 02 00 00 je 43bb08 0.00 : 43b8a1: 84 c0 test %al,%al 0.00 : 43b8a3: 0f 85 6d 02 00 00 jne 43bb16 0.00 : 43b8a9: 8b 44 24 0c mov 0xc(%rsp),%eax 0.00 : 43b8ad: 85 c0 test %eax,%eax 0.00 : 43b8af: 75 3f jne 43b8f0 0.00 : 43b8b1: 48 63 44 24 1c movslq 0x1c(%rsp),%rax 0.00 : 43b8b6: 41 0f b6 44 05 00 movzbl 0x0(%r13,%rax,1),%eax 0.00 : 43b8bc: 3c 20 cmp $0x20,%al 0.00 : 43b8be: 74 30 je 43b8f0 0.00 : 43b8c0: 3c 09 cmp $0x9,%al 0.00 : 43b8c2: 74 2c je 43b8f0 0.00 : 43b8c4: 3c 0a cmp $0xa,%al 0.00 : 43b8c6: 74 28 je 43b8f0 0.00 : 43b8c8: e8 23 77 fe ff callq 422ff0 0.00 : 43b8cd: 31 ff xor %edi,%edi 0.00 : 43b8cf: 48 89 c3 mov %rax,%rbx 0.00 : 43b8d2: e8 79 c8 ff ff callq 438150 0.00 : 43b8d7: 81 4b 08 02 00 04 00 orl $0x40002,0x8(%rbx) 0.00 : 43b8de: 4c 89 f6 mov %r14,%rsi 0.00 : 43b8e1: 48 89 03 mov %rax,(%rbx) 0.00 : 43b8e4: 48 89 df mov %rbx,%rdi 0.00 : 43b8e7: e8 04 76 fe ff callq 422ef0 0.00 : 43b8ec: 49 89 c6 mov %rax,%r14 0.00 : 43b8ef: 90 nop 0.00 : 43b8f0: 4c 89 e7 mov %r12,%rdi 0.00 : 43b8f3: e8 c8 aa fd ff callq 4163c0 0.00 : 43b8f8: 8b 4c 24 1c mov 0x1c(%rsp),%ecx 0.00 : 43b8fc: 48 63 c1 movslq %ecx,%rax 0.00 : 43b8ff: 41 0f b6 44 05 00 movzbl 0x0(%r13,%rax,1),%eax 0.00 : 43b905: 84 c0 test %al,%al 0.00 : 43b907: 0f 84 5b ff ff ff je 43b868 0.00 : 43b90d: 3c 20 cmp $0x20,%al 0.00 : 43b90f: 0f 84 4b 02 00 00 je 43bb60 0.00 : 43b915: 3c 09 cmp $0x9,%al 0.00 : 43b917: 0f 84 43 02 00 00 je 43bb60 0.00 : 43b91d: 45 31 e4 xor %r12d,%r12d 0.00 : 43b920: 3c 0a cmp $0xa,%al 0.00 : 43b922: 41 0f 94 c4 sete %r12b 14.29 : 43b926: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 43b92d: 00 00 0.00 : 43b92f: e8 2c ab fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43b934: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b938: 0f 86 32 02 00 00 jbe 43bb70 0.00 : 43b93e: 48 63 74 24 1c movslq 0x1c(%rsp),%rsi 0.00 : 43b943: 4c 89 fa mov %r15,%rdx 0.00 : 43b946: 48 8d 4c 24 10 lea 0x10(%rsp),%rcx 0.00 : 43b94b: 31 ff xor %edi,%edi 0.00 : 43b94d: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 43b952: 48 29 f2 sub %rsi,%rdx 0.00 : 43b955: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 43b95a: e8 f1 a4 fd ff callq 415e50 0.00 : 43b95f: 48 89 c2 mov %rax,%rdx 0.00 : 43b962: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 43b966: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b96a: 0f 86 3a 02 00 00 jbe 43bbaa 0.00 : 43b970: 48 85 d2 test %rdx,%rdx 0.00 : 43b973: 0f 84 f7 01 00 00 je 43bb70 0.00 : 43b979: 01 54 24 1c add %edx,0x1c(%rsp) 0.00 : 43b97d: 0f 1f 00 nopl (%rax) 0.00 : 43b980: 8b 74 24 1c mov 0x1c(%rsp),%esi 0.00 : 43b984: 48 63 c6 movslq %esi,%rax 14.29 : 43b987: 89 f1 mov %esi,%ecx 14.29 : 43b989: 41 0f b6 54 05 00 movzbl 0x0(%r13,%rax,1),%edx 0.00 : 43b98f: 84 d2 test %dl,%dl 0.00 : 43b991: 0f 84 d1 fe ff ff je 43b868 0.00 : 43b997: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 43b99a: 48 98 cltq 0.00 : 43b99c: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 43b9a1: eb 27 jmp 43b9ca 0.00 : 43b9a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43b9a8: 0f b6 c2 movzbl %dl,%eax 0.00 : 43b9ab: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43b9b2: 74 3c je 43b9f0 0.00 : 43b9b4: 83 c6 01 add $0x1,%esi 0.00 : 43b9b7: 89 74 24 1c mov %esi,0x1c(%rsp) 0.00 : 43b9bb: 0f b6 11 movzbl (%rcx),%edx 0.00 : 43b9be: 48 83 c1 01 add $0x1,%rcx 0.00 : 43b9c2: 84 d2 test %dl,%dl 0.00 : 43b9c4: 0f 84 8e 01 00 00 je 43bb58 0.00 : 43b9ca: 80 fa 20 cmp $0x20,%dl 0.00 : 43b9cd: 74 0a je 43b9d9 0.00 : 43b9cf: 80 fa 09 cmp $0x9,%dl 0.00 : 43b9d2: 74 05 je 43b9d9 0.00 : 43b9d4: 80 fa 0a cmp $0xa,%dl 0.00 : 43b9d7: 75 17 jne 43b9f0 0.00 : 43b9d9: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43b9dd: 84 c0 test %al,%al 0.00 : 43b9df: 90 nop 0.00 : 43b9e0: 74 0e je 43b9f0 0.00 : 43b9e2: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 43b9e6: 75 c0 jne 43b9a8 0.00 : 43b9e8: 38 c2 cmp %al,%dl 0.00 : 43b9ea: 74 c8 je 43b9b4 0.00 : 43b9ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43b9f0: 84 d2 test %dl,%dl 0.00 : 43b9f2: 0f 84 a8 00 00 00 je 43baa0 0.00 : 43b9f8: 45 85 e4 test %r12d,%r12d 0.00 : 43b9fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43ba00: 0f 84 9a 00 00 00 je 43baa0 0.00 : 43ba06: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43ba0a: 84 c0 test %al,%al 0.00 : 43ba0c: 0f 84 8e 00 00 00 je 43baa0 0.00 : 43ba12: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 43ba16: 0f 84 5e 01 00 00 je 43bb7a 0.00 : 43ba1c: 0f b6 c2 movzbl %dl,%eax 0.00 : 43ba1f: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43ba26: 0f 95 c0 setne %al 0.00 : 43ba29: 84 c0 test %al,%al 0.00 : 43ba2b: 74 73 je 43baa0 0.00 : 43ba2d: 80 fa 20 cmp $0x20,%dl 0.00 : 43ba30: 74 6e je 43baa0 0.00 : 43ba32: 80 fa 09 cmp $0x9,%dl 0.00 : 43ba35: 74 69 je 43baa0 0.00 : 43ba37: 80 fa 0a cmp $0xa,%dl 0.00 : 43ba3a: 74 64 je 43baa0 0.00 : 43ba3c: 8d 7e 01 lea 0x1(%rsi),%edi 0.00 : 43ba3f: 48 63 c7 movslq %edi,%rax 0.00 : 43ba42: 89 7c 24 1c mov %edi,0x1c(%rsp) 0.00 : 43ba46: 89 f9 mov %edi,%ecx 0.00 : 43ba48: 41 0f b6 54 05 00 movzbl 0x0(%r13,%rax,1),%edx 0.00 : 43ba4e: 84 d2 test %dl,%dl 0.00 : 43ba50: 0f 84 12 fe ff ff je 43b868 0.00 : 43ba56: 8d 46 02 lea 0x2(%rsi),%eax 0.00 : 43ba59: 48 98 cltq 0.00 : 43ba5b: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 43ba60: eb 1c jmp 43ba7e 0.00 : 43ba62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43ba68: 83 c7 01 add $0x1,%edi 0.00 : 43ba6b: 89 7c 24 1c mov %edi,0x1c(%rsp) 0.00 : 43ba6f: 0f b6 11 movzbl (%rcx),%edx 0.00 : 43ba72: 48 83 c1 01 add $0x1,%rcx 0.00 : 43ba76: 84 d2 test %dl,%dl 0.00 : 43ba78: 0f 84 62 01 00 00 je 43bbe0 0.00 : 43ba7e: 80 fa 20 cmp $0x20,%dl 0.00 : 43ba81: 74 0f je 43ba92 0.00 : 43ba83: 80 fa 09 cmp $0x9,%dl 0.00 : 43ba86: 74 0a je 43ba92 0.00 : 43ba88: 80 fa 0a cmp $0xa,%dl 0.00 : 43ba8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43ba90: 75 0e jne 43baa0 0.00 : 43ba92: 0f b6 c2 movzbl %dl,%eax 0.00 : 43ba95: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43ba9c: 75 ca jne 43ba68 0.00 : 43ba9e: 66 90 xchg %ax,%ax 0.00 : 43baa0: 8b 4c 24 1c mov 0x1c(%rsp),%ecx 14.29 : 43baa4: e9 bf fd ff ff jmpq 43b868 0.00 : 43baa9: c7 44 24 0c 00 00 00 movl $0x0,0xc(%rsp) 0.00 : 43bab0: 00 0.00 : 43bab1: 4c 89 ef mov %r13,%rdi 0.00 : 43bab4: eb 25 jmp 43badb 0.00 : 43bab6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43babd: 00 00 00 0.00 : 43bac0: 0f b6 c2 movzbl %dl,%eax 0.00 : 43bac3: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43baca: 74 30 je 43bafc 0.00 : 43bacc: 48 83 c7 01 add $0x1,%rdi 0.00 : 43bad0: 0f b6 17 movzbl (%rdi),%edx 0.00 : 43bad3: 84 d2 test %dl,%dl 0.00 : 43bad5: 0f 84 00 fd ff ff je 43b7db 0.00 : 43badb: 80 fa 20 cmp $0x20,%dl 0.00 : 43bade: 74 0a je 43baea 0.00 : 43bae0: 80 fa 09 cmp $0x9,%dl 0.00 : 43bae3: 74 05 je 43baea 0.00 : 43bae5: 80 fa 0a cmp $0xa,%dl 0.00 : 43bae8: 75 12 jne 43bafc 0.00 : 43baea: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43baee: 84 c0 test %al,%al 0.00 : 43baf0: 74 0a je 43bafc 0.00 : 43baf2: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 43baf6: 75 c8 jne 43bac0 0.00 : 43baf8: 38 c2 cmp %al,%dl 0.00 : 43bafa: 74 d0 je 43bacc 0.00 : 43bafc: 49 89 fd mov %rdi,%r13 0.00 : 43baff: 90 nop 0.00 : 43bb00: e9 27 fd ff ff jmpq 43b82c 0.00 : 43bb05: 0f 1f 00 nopl (%rax) 0.00 : 43bb08: 41 80 7c 24 01 00 cmpb $0x0,0x1(%r12) 0.00 : 43bb0e: 66 90 xchg %ax,%ax 0.00 : 43bb10: 0f 84 b2 fd ff ff je 43b8c8 0.00 : 43bb16: 4c 89 e7 mov %r12,%rdi 0.00 : 43bb19: e8 32 ea ff ff callq 43a550 0.00 : 43bb1e: 4c 89 e7 mov %r12,%rdi 0.00 : 43bb21: e8 aa 7b fe ff callq 4236d0 0.00 : 43bb26: 4c 89 f6 mov %r14,%rsi 0.00 : 43bb29: 48 89 c7 mov %rax,%rdi 0.00 : 43bb2c: e8 bf 73 fe ff callq 422ef0 0.00 : 43bb31: 8b 54 24 08 mov 0x8(%rsp),%edx 0.00 : 43bb35: 49 89 c6 mov %rax,%r14 0.00 : 43bb38: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 43bb3c: 81 60 08 ff ff fb ff andl $0xfffbffff,0x8(%rax) 0.00 : 43bb43: 85 d2 test %edx,%edx 0.00 : 43bb45: 0f 84 a5 fd ff ff je 43b8f0 0.00 : 43bb4b: 83 48 08 02 orl $0x2,0x8(%rax) 0.00 : 43bb4f: e9 9c fd ff ff jmpq 43b8f0 0.00 : 43bb54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43bb58: 89 f1 mov %esi,%ecx 0.00 : 43bb5a: e9 09 fd ff ff jmpq 43b868 0.00 : 43bb5f: 90 nop 0.00 : 43bb60: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 43bb66: e9 bb fd ff ff jmpq 43b926 0.00 : 43bb6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43bb70: 83 44 24 1c 01 addl $0x1,0x1c(%rsp) 0.00 : 43bb75: e9 06 fe ff ff jmpq 43b980 0.00 : 43bb7a: 38 d0 cmp %dl,%al 0.00 : 43bb7c: 0f 94 c0 sete %al 0.00 : 43bb7f: 90 nop 0.00 : 43bb80: e9 a4 fe ff ff jmpq 43ba29 0.00 : 43bb85: 4d 85 f6 test %r14,%r14 0.00 : 43bb88: 0f 84 50 fc ff ff je 43b7de 0.00 : 43bb8e: 49 83 3e 00 cmpq $0x0,(%r14) 0.00 : 43bb92: 0f 84 46 fc ff ff je 43b7de 0.00 : 43bb98: 4c 89 f7 mov %r14,%rdi 0.00 : 43bb9b: 31 c0 xor %eax,%eax 0.00 : 43bb9d: e8 2e 6d 01 00 callq 4528d0 0.00 : 43bba2: 49 89 c6 mov %rax,%r14 0.00 : 43bba5: e9 34 fc ff ff jmpq 43b7de 0.00 : 43bbaa: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 43bbaf: 83 44 24 1c 01 addl $0x1,0x1c(%rsp) 0.00 : 43bbb4: e9 c7 fd ff ff jmpq 43b980 0.00 : 43bbb9: 80 7e 01 09 cmpb $0x9,0x1(%rsi) 0.00 : 43bbbd: 0f 85 46 fc ff ff jne 43b809 0.00 : 43bbc3: 80 7e 02 0a cmpb $0xa,0x2(%rsi) 0.00 : 43bbc7: 0f 85 3c fc ff ff jne 43b809 0.00 : 43bbcd: 31 c0 xor %eax,%eax 0.00 : 43bbcf: 80 7e 03 00 cmpb $0x0,0x3(%rsi) 0.00 : 43bbd3: 0f 94 c0 sete %al 0.00 : 43bbd6: 89 44 24 0c mov %eax,0xc(%rsp) 0.00 : 43bbda: e9 32 fc ff ff jmpq 43b811 0.00 : 43bbdf: 90 nop 0.00 : 43bbe0: 89 f9 mov %edi,%ecx 0.00 : 43bbe2: e9 81 fc ff ff jmpq 43b868 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000446720 : 0.00 : 446720: 48 85 ff test %rdi,%rdi 0.00 : 446723: 53 push %rbx 0.00 : 446724: 74 12 je 446738 0.00 : 446726: 8b 1f mov (%rdi),%ebx ??:0 100.00 : 446728: e8 a3 ff ff ff callq 4466d0 0.00 : 44672d: 89 df mov %ebx,%edi 0.00 : 44672f: 5b pop %rbx 0.00 : 446730: e9 ab f7 fc ff jmpq 415ee0 0.00 : 446735: 0f 1f 00 nopl (%rax) 0.00 : 446738: 31 c0 xor %eax,%eax 0.00 : 44673a: 5b pop %rbx Sorted summary for file /bin/bash ---------------------------------------------- 40.00 ??:0 40.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000446740 : 0.00 : 446740: 48 83 ec 08 sub $0x8,%rsp 0.00 : 446744: 85 ff test %edi,%edi 0.00 : 446746: 78 39 js 446781 0.00 : 446748: 3b 3d d2 f7 24 00 cmp 0x24f7d2(%rip),%edi # 695f20 ??:0 20.00 : 44674e: 7d 28 jge 446778 0.00 : 446750: 48 8b 15 29 f7 24 00 mov 0x24f729(%rip),%rdx # 695e80 40.00 : 446757: 48 85 d2 test %rdx,%rdx 0.00 : 44675a: 74 1c je 446778 0.00 : 44675c: 48 63 c7 movslq %edi,%rax 0.00 : 44675f: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 40.00 : 446763: 48 85 c0 test %rax,%rax 0.00 : 446766: 74 10 je 446778 0.00 : 446768: 48 89 c7 mov %rax,%rdi 0.00 : 44676b: 48 83 c4 08 add $0x8,%rsp 0.00 : 44676f: e9 ac ff ff ff jmpq 446720 0.00 : 446774: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 446778: 48 83 c4 08 add $0x8,%rsp 0.00 : 44677c: e9 5f f7 fc ff jmpq 415ee0 0.00 : 446781: e8 ba 00 fd ff callq 416840 <__errno_location@plt> 0.00 : 446786: c7 00 09 00 00 00 movl $0x9,(%rax) 0.00 : 44678c: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 446791: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004478d0 : 0.00 : 4478d0: 41 56 push %r14 0.00 : 4478d2: 41 55 push %r13 0.00 : 4478d4: 41 54 push %r12 0.00 : 4478d6: 55 push %rbp 0.00 : 4478d7: 31 ed xor %ebp,%ebp 0.00 : 4478d9: 53 push %rbx 0.00 : 4478da: 48 89 fb mov %rdi,%rbx 0.00 : 4478dd: 48 83 ec 10 sub $0x10,%rsp 0.00 : 4478e1: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 4478e8: 00 0.00 : 4478e9: e8 02 eb fc ff callq 4163f0 0.00 : 4478ee: 4c 8d 2c 03 lea (%rbx,%rax,1),%r13 0.00 : 4478f2: 0f b6 03 movzbl (%rbx),%eax 0.00 : 4478f5: 84 c0 test %al,%al 0.00 : 4478f7: 0f 84 8d 00 00 00 je 44798a 0.00 : 4478fd: 48 83 c3 01 add $0x1,%rbx 0.00 : 447901: 3c 3f cmp $0x3f,%al 0.00 : 447903: 0f 84 d7 00 00 00 je 4479e0 0.00 : 447909: 0f 8f a9 00 00 00 jg 4479b8 0.00 : 44790f: 3c 21 cmp $0x21,%al 0.00 : 447911: 0f 84 b7 00 00 00 je 4479ce 0.00 : 447917: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44791e: 00 00 0.00 : 447920: 0f 8f da 00 00 00 jg 447a00 0.00 : 447926: 2c 01 sub $0x1,%al 0.00 : 447928: 74 7a je 4479a4 0.00 : 44792a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 447930: 48 83 eb 01 sub $0x1,%rbx ??:0 50.00 : 447934: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 447938: e8 23 eb fc ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 44793d: 48 83 f8 01 cmp $0x1,%rax 0.00 : 447941: 76 38 jbe 44797b 16.67 : 447943: 4c 89 ea mov %r13,%rdx 0.00 : 447946: 48 89 e1 mov %rsp,%rcx 0.00 : 447949: 31 ff xor %edi,%edi 16.67 : 44794b: 48 29 da sub %rbx,%rdx 0.00 : 44794e: 48 89 de mov %rbx,%rsi 0.00 : 447951: 4c 8b 24 24 mov (%rsp),%r12 0.00 : 447955: e8 f6 e4 fc ff callq 415e50 0.00 : 44795a: 48 89 c1 mov %rax,%rcx 0.00 : 44795d: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 447961: 48 83 f8 01 cmp $0x1,%rax 0.00 : 447965: 0f 86 d5 00 00 00 jbe 447a40 0.00 : 44796b: 48 8d 51 ff lea -0x1(%rcx),%rdx 0.00 : 44796f: 31 c0 xor %eax,%eax 0.00 : 447971: 48 85 c9 test %rcx,%rcx 0.00 : 447974: 48 0f 45 c2 cmovne %rdx,%rax 0.00 : 447978: 48 01 c3 add %rax,%rbx 0.00 : 44797b: 48 83 c3 01 add $0x1,%rbx 0.00 : 44797f: 0f b6 03 movzbl (%rbx),%eax 0.00 : 447982: 84 c0 test %al,%al 0.00 : 447984: 0f 85 73 ff ff ff jne 4478fd 0.00 : 44798a: 48 83 c4 10 add $0x10,%rsp 0.00 : 44798e: 31 c0 xor %eax,%eax 0.00 : 447990: 5b pop %rbx 0.00 : 447991: 5d pop %rbp 0.00 : 447992: 41 5c pop %r12 0.00 : 447994: 41 5d pop %r13 0.00 : 447996: 41 5e pop %r14 0.00 : 447998: c3 retq 0.00 : 447999: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4479a0: 3c 5c cmp $0x5c,%al 0.00 : 4479a2: 75 7c jne 447a20 0.00 : 4479a4: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 4479a7: 74 e1 je 44798a 0.00 : 4479a9: 48 83 c3 01 add $0x1,%rbx 0.00 : 4479ad: 0f 1f 00 nopl (%rax) 0.00 : 4479b0: e9 7b ff ff ff jmpq 447930 0.00 : 4479b5: 0f 1f 00 nopl (%rax) 0.00 : 4479b8: 3c 5b cmp $0x5b,%al 0.00 : 4479ba: 74 3c je 4479f8 0.00 : 4479bc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4479c0: 7f de jg 4479a0 0.00 : 4479c2: 3c 40 cmp $0x40,%al 0.00 : 4479c4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4479c8: 0f 85 62 ff ff ff jne 447930 0.00 : 4479ce: 80 3b 28 cmpb $0x28,(%rbx) 0.00 : 4479d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4479d8: 0f 85 14 ff ff ff jne 4478f2 0.00 : 4479de: 66 90 xchg %ax,%ax 0.00 : 4479e0: 48 83 c4 10 add $0x10,%rsp 0.00 : 4479e4: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4479e9: 5b pop %rbx 0.00 : 4479ea: 5d pop %rbp 0.00 : 4479eb: 41 5c pop %r12 0.00 : 4479ed: 41 5d pop %r13 0.00 : 4479ef: 41 5e pop %r14 0.00 : 4479f1: c3 retq 0.00 : 4479f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4479f8: 83 c5 01 add $0x1,%ebp 0.00 : 4479fb: e9 f2 fe ff ff jmpq 4478f2 0.00 : 447a00: 3c 2a cmp $0x2a,%al 0.00 : 447a02: 74 dc je 4479e0 0.00 : 447a04: 3c 2b cmp $0x2b,%al 0.00 : 447a06: 0f 85 24 ff ff ff jne 447930 0.00 : 447a0c: 80 3b 28 cmpb $0x28,(%rbx) 0.00 : 447a0f: 90 nop 0.00 : 447a10: 0f 85 dc fe ff ff jne 4478f2 0.00 : 447a16: 66 90 xchg %ax,%ax 0.00 : 447a18: eb c6 jmp 4479e0 0.00 : 447a1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 447a20: 3c 5d cmp $0x5d,%al 0.00 : 447a22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 447a28: 0f 85 02 ff ff ff jne 447930 16.67 : 447a2e: 85 ed test %ebp,%ebp 0.00 : 447a30: 0f 84 bc fe ff ff je 4478f2 0.00 : 447a36: 66 90 xchg %ax,%ax 0.00 : 447a38: eb a6 jmp 4479e0 0.00 : 447a3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 447a40: 4c 89 24 24 mov %r12,(%rsp) 0.00 : 447a44: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 447a48: e9 2e ff ff ff jmpq 44797b Sorted summary for file /bin/bash ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004609a0 : 0.00 : 4609a0: 41 57 push %r15 0.00 : 4609a2: 41 bf a8 9e 47 00 mov $0x479ea8,%r15d 0.00 : 4609a8: 41 56 push %r14 0.00 : 4609aa: 45 31 f6 xor %r14d,%r14d 0.00 : 4609ad: 41 55 push %r13 0.00 : 4609af: 41 54 push %r12 0.00 : 4609b1: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4609b7: 55 push %rbp 0.00 : 4609b8: 53 push %rbx 0.00 : 4609b9: 48 89 fb mov %rdi,%rbx 0.00 : 4609bc: 48 81 ec 28 01 00 00 sub $0x128,%rsp 0.00 : 4609c3: c6 05 46 5b 23 00 0a movb $0xa,0x235b46(%rip) # 696510 0.00 : 4609ca: 4c 8d ac 24 10 01 00 lea 0x110(%rsp),%r13 0.00 : 4609d1: 00 0.00 : 4609d2: e8 69 72 00 00 callq 467c40 0.00 : 4609d7: c7 44 24 20 00 00 00 movl $0x0,0x20(%rsp) 0.00 : 4609de: 00 0.00 : 4609df: c7 44 24 30 00 00 00 movl $0x0,0x30(%rsp) 0.00 : 4609e6: 00 0.00 : 4609e7: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 4609ee: 00 0.00 : 4609ef: c7 44 24 28 00 00 00 movl $0x0,0x28(%rsp) 0.00 : 4609f6: 00 0.00 : 4609f7: c7 44 24 2c 00 00 00 movl $0x0,0x2c(%rsp) 0.00 : 4609fe: 00 0.00 : 4609ff: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 460a06: 00 0.00 : 460a07: 48 c7 44 24 50 00 00 movq $0x0,0x50(%rsp) 0.00 : 460a0e: 00 00 0.00 : 460a10: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : 460a17: 00 00 0.00 : 460a19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 460a20: be 78 9e 47 00 mov $0x479e78,%esi 0.00 : 460a25: 48 89 df mov %rbx,%rdi 0.00 : 460a28: e8 43 72 00 00 callq 467c70 0.00 : 460a2d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 460a30: 0f 84 ca 01 00 00 je 460c00 0.00 : 460a36: 83 e8 61 sub $0x61,%eax 0.00 : 460a39: 83 f8 14 cmp $0x14,%eax 0.00 : 460a3c: 76 22 jbe 460a60 0.00 : 460a3e: 41 bf 02 01 00 00 mov $0x102,%r15d 0.00 : 460a44: e8 07 96 ff ff callq 45a050 0.00 : 460a49: 48 81 c4 28 01 00 00 add $0x128,%rsp 0.00 : 460a50: 44 89 f8 mov %r15d,%eax 0.00 : 460a53: 5b pop %rbx 0.00 : 460a54: 5d pop %rbp 0.00 : 460a55: 41 5c pop %r12 0.00 : 460a57: 41 5d pop %r13 0.00 : 460a59: 41 5e pop %r14 0.00 : 460a5b: 41 5f pop %r15 0.00 : 460a5d: c3 retq 0.00 : 460a5e: 66 90 xchg %ax,%ax 0.00 : 460a60: 89 c0 mov %eax,%eax 0.00 : 460a62: 41 ff 24 c7 jmpq *(%r15,%rax,8) 0.00 : 460a66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 460a6d: 00 00 00 0.00 : 460a70: 48 8b 3d 99 6b 23 00 mov 0x236b99(%rip),%rdi # 697610 0.00 : 460a77: 4c 89 ee mov %r13,%rsi 0.00 : 460a7a: e8 f1 1b fc ff callq 422670 0.00 : 460a7f: 85 c0 test %eax,%eax 0.00 : 460a81: 0f 84 64 08 00 00 je 4612eb 0.00 : 460a87: 48 8b ac 24 10 01 00 mov 0x110(%rsp),%rbp 0.00 : 460a8e: 00 0.00 : 460a8f: 48 85 ed test %rbp,%rbp 0.00 : 460a92: 0f 88 53 08 00 00 js 4612eb 0.00 : 460a98: 48 63 c5 movslq %ebp,%rax 0.00 : 460a9b: 89 6c 24 30 mov %ebp,0x30(%rsp) 0.00 : 460a9f: 48 39 c5 cmp %rax,%rbp 0.00 : 460aa2: 0f 85 43 08 00 00 jne 4612eb 0.00 : 460aa8: 89 ef mov %ebp,%edi 0.00 : 460aaa: e8 b1 17 fc ff callq 422260 0.00 : 460aaf: 85 c0 test %eax,%eax 0.00 : 460ab1: 0f 85 69 ff ff ff jne 460a20 0.00 : 460ab7: e8 84 5d fb ff callq 416840 <__errno_location@plt> 0.00 : 460abc: 8b 38 mov (%rax),%edi 0.00 : 460abe: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 460ac4: e8 e7 5a fb ff callq 4165b0 0.00 : 460ac9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 460ace: 48 89 c3 mov %rax,%rbx 0.00 : 460ad1: be 58 9e 47 00 mov $0x479e58,%esi 0.00 : 460ad6: 31 ff xor %edi,%edi 0.00 : 460ad8: e8 a3 5d fb ff callq 416880 0.00 : 460add: 48 89 da mov %rbx,%rdx 0.00 : 460ae0: 48 89 c7 mov %rax,%rdi 0.00 : 460ae3: 89 ee mov %ebp,%esi 0.00 : 460ae5: 31 c0 xor %eax,%eax 0.00 : 460ae7: e8 f4 95 ff ff callq 45a0e0 0.00 : 460aec: e9 58 ff ff ff jmpq 460a49 0.00 : 460af1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 460af8: 48 8b 3d 11 6b 23 00 mov 0x236b11(%rip),%rdi # 697610 0.00 : 460aff: 4c 89 ee mov %r13,%rsi 0.00 : 460b02: e8 69 1b fc ff callq 422670 0.00 : 460b07: 85 c0 test %eax,%eax 0.00 : 460b09: 0f 84 ac 07 00 00 je 4612bb 0.00 : 460b0f: 48 8b 94 24 10 01 00 mov 0x110(%rsp),%rdx 0.00 : 460b16: 00 0.00 : 460b17: 48 85 d2 test %rdx,%rdx 0.00 : 460b1a: 0f 88 9b 07 00 00 js 4612bb 0.00 : 460b20: 89 d0 mov %edx,%eax 0.00 : 460b22: 89 54 24 34 mov %edx,0x34(%rsp) 0.00 : 460b26: 48 39 c2 cmp %rax,%rdx 0.00 : 460b29: 0f 85 8c 07 00 00 jne 4612bb 0.00 : 460b2f: 45 89 e6 mov %r12d,%r14d 0.00 : 460b32: e9 e9 fe ff ff jmpq 460a20 0.00 : 460b37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 460b3e: 00 00 0.00 : 460b40: 44 89 64 24 2c mov %r12d,0x2c(%rsp) 0.00 : 460b45: e9 d6 fe ff ff jmpq 460a20 0.00 : 460b4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 460b50: 44 89 64 24 20 mov %r12d,0x20(%rsp) 0.00 : 460b55: e9 c6 fe ff ff jmpq 460a20 0.00 : 460b5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 460b60: 48 8b 05 a9 6a 23 00 mov 0x236aa9(%rip),%rax # 697610 0.00 : 460b67: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 460b6c: e9 af fe ff ff jmpq 460a20 0.00 : 460b71: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 460b78: 48 8b 3d 91 6a 23 00 mov 0x236a91(%rip),%rdi # 697610 0.00 : 460b7f: 4c 89 ee mov %r13,%rsi 0.00 : 460b82: e8 e9 1a fc ff callq 422670 0.00 : 460b87: 85 c0 test %eax,%eax 0.00 : 460b89: 74 1d je 460ba8 0.00 : 460b8b: 48 8b 94 24 10 01 00 mov 0x110(%rsp),%rdx 0.00 : 460b92: 00 0.00 : 460b93: 48 85 d2 test %rdx,%rdx 0.00 : 460b96: 78 10 js 460ba8 0.00 : 460b98: 48 63 c2 movslq %edx,%rax 0.00 : 460b9b: 89 54 24 28 mov %edx,0x28(%rsp) 0.00 : 460b9f: 48 39 c2 cmp %rax,%rdx 0.00 : 460ba2: 0f 84 78 fe ff ff je 460a20 0.00 : 460ba8: 48 8b 3d 61 6a 23 00 mov 0x236a61(%rip),%rdi # 697610 0.00 : 460baf: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 460bb5: e8 36 9e ff ff callq 45a9f0 0.00 : 460bba: e9 8a fe ff ff jmpq 460a49 0.00 : 460bbf: 90 nop 0.00 : 460bc0: 44 89 64 24 24 mov %r12d,0x24(%rsp) 0.00 : 460bc5: e9 56 fe ff ff jmpq 460a20 0.00 : 460bca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 460bd0: 48 8b 05 39 6a 23 00 mov 0x236a39(%rip),%rax # 697610 0.00 : 460bd7: 0f b6 00 movzbl (%rax),%eax 0.00 : 460bda: 88 05 30 59 23 00 mov %al,0x235930(%rip) # 696510 0.00 : 460be0: e9 3b fe ff ff jmpq 460a20 0.00 : 460be5: 0f 1f 00 nopl (%rax) 0.00 : 460be8: 48 8b 15 21 6a 23 00 mov 0x236a21(%rip),%rdx # 697610 0.00 : 460bef: 48 89 54 24 40 mov %rdx,0x40(%rsp) 0.00 : 460bf4: e9 27 fe ff ff jmpq 460a20 0.00 : 460bf9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) ??:0 20.00 : 460c00: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 460c04: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 460c09: 45 85 f6 test %r14d,%r14d 0.00 : 460c0c: 44 8b 64 24 2c mov 0x2c(%rsp),%r12d 0.00 : 460c11: 89 44 24 64 mov %eax,0x64(%rsp) 0.00 : 460c15: 89 c3 mov %eax,%ebx 0.00 : 460c17: 48 8b 05 fa 69 23 00 mov 0x2369fa(%rip),%rax # 697618 0.00 : 460c1e: 48 89 54 24 68 mov %rdx,0x68(%rsp) 0.00 : 460c23: 48 89 d5 mov %rdx,%rbp 0.00 : 460c26: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 460c2b: 74 12 je 460c3f 0.00 : 460c2d: 8b 74 24 34 mov 0x34(%rsp),%esi 0.00 : 460c31: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 460c37: 85 f6 test %esi,%esi 0.00 : 460c39: 0f 84 0a fe ff ff je 460a49 0.00 : 460c3f: e8 fc 74 fd ff callq 438140 0.00 : 460c44: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 460c49: 48 85 c0 test %rax,%rax 0.00 : 460c4c: b8 db 98 47 00 mov $0x4798db,%eax 0.00 : 460c51: 48 0f 45 44 24 38 cmovne 0x38(%rsp),%rax 0.00 : 460c57: bf 70 00 00 00 mov $0x70,%edi 0.00 : 460c5c: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 460c61: e8 5a 76 ff ff callq 4582c0 0.00 : 460c66: 45 85 f6 test %r14d,%r14d 0.00 : 460c69: 48 89 84 24 08 01 00 mov %rax,0x108(%rsp) 0.00 : 460c70: 00 0.00 : 460c71: 0f 84 5f 07 00 00 je 4613d6 0.00 : 460c77: bf 88 9e 47 00 mov $0x479e88,%edi 0.00 : 460c7c: e8 3f 62 fe ff callq 446ec0 0.00 : 460c81: 8b 0d 4d 27 23 00 mov 0x23274d(%rip),%ecx # 6933d4 0.00 : 460c87: 85 c9 test %ecx,%ecx 0.00 : 460c89: 75 25 jne 460cb0 0.00 : 460c8b: 8b 15 0f 9e 22 00 mov 0x229e0f(%rip),%edx # 68aaa0 0.00 : 460c91: 85 d2 test %edx,%edx 0.00 : 460c93: 78 1b js 460cb0 0.00 : 460c95: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 460c99: e8 42 58 fe ff callq 4464e0 0.00 : 460c9e: 85 c0 test %eax,%eax 0.00 : 460ca0: 74 0e je 460cb0 0.00 : 460ca2: 8b 3d f8 9d 22 00 mov 0x229df8(%rip),%edi # 68aaa0 0.00 : 460ca8: e8 c3 59 fe ff callq 446670 0.00 : 460cad: 0f 1f 00 nopl (%rax) 0.00 : 460cb0: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 460cb4: e8 f7 52 fb ff callq 415fb0 0.00 : 460cb9: 85 c0 test %eax,%eax 0.00 : 460cbb: 89 44 24 14 mov %eax,0x14(%rsp) 0.00 : 460cbf: 0f 84 69 07 00 00 je 46142e 0.00 : 460cc5: c7 44 24 18 00 00 00 movl $0x0,0x18(%rsp) 0.00 : 460ccc: 00 0.00 : 460ccd: 48 83 7c 24 68 00 cmpq $0x0,0x68(%rsp) 0.00 : 460cd3: 0f 84 4f 0a 00 00 je 461728 0.00 : 460cd9: 8b 44 24 14 mov 0x14(%rsp),%eax 0.00 : 460cdd: 85 c0 test %eax,%eax 0.00 : 460cdf: 0f 84 12 03 00 00 je 460ff7 0.00 : 460ce5: 85 db test %ebx,%ebx 0.00 : 460ce7: 74 0e je 460cf7 0.00 : 460ce9: 31 f6 xor %esi,%esi 0.00 : 460ceb: bf d0 81 45 00 mov $0x4581d0,%edi 0.00 : 460cf0: 31 c0 xor %eax,%eax 0.00 : 460cf2: e8 a9 61 fe ff callq 446ea0 0.00 : 460cf7: 48 85 ed test %rbp,%rbp 0.00 : 460cfa: 74 08 je 460d04 0.00 : 460cfc: 85 db test %ebx,%ebx 0.00 : 460cfe: 0f 84 64 07 00 00 je 461468 0.00 : 460d04: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 460d08: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 460d0d: 89 44 24 64 mov %eax,0x64(%rsp) 0.00 : 460d11: 48 89 54 24 68 mov %rdx,0x68(%rsp) 0.00 : 460d16: 8b 44 24 34 mov 0x34(%rsp),%eax 0.00 : 460d1a: 85 c0 test %eax,%eax 0.00 : 460d1c: 0f 85 2d 06 00 00 jne 46134f 0.00 : 460d22: 8b 44 24 28 mov 0x28(%rsp),%eax 0.00 : 460d26: 85 c0 test %eax,%eax 0.00 : 460d28: 0f 8e 6c 07 00 00 jle 46149a 0.00 : 460d2e: 8b 44 24 64 mov 0x64(%rsp),%eax 0.00 : 460d32: 85 c0 test %eax,%eax 0.00 : 460d34: 0f 84 c4 05 00 00 je 4612fe 0.00 : 460d3a: 44 8b 7c 24 28 mov 0x28(%rsp),%r15d 0.00 : 460d3f: 45 85 ff test %r15d,%r15d 0.00 : 460d42: 7e 19 jle 460d5d 0.00 : 460d44: be 04 00 00 00 mov $0x4,%esi 0.00 : 460d49: bf a0 12 69 00 mov $0x6912a0,%edi 0.00 : 460d4e: e8 1d 62 fe ff callq 446f70 0.00 : 460d53: 8b 44 24 28 mov 0x28(%rsp),%eax 0.00 : 460d57: 89 05 43 05 23 00 mov %eax,0x230543(%rip) # 6912a0 0.00 : 460d5d: 0f b6 1d ac 57 23 00 movzbl 0x2357ac(%rip),%ebx # 696510 0.00 : 460d64: 80 fb 0a cmp $0xa,%bl 0.00 : 460d67: 0f 84 80 00 00 00 je 460ded 0.00 : 460d6d: 44 8b 35 24 53 23 00 mov 0x235324(%rip),%r14d # 696098 0.00 : 460d74: 45 85 f6 test %r14d,%r14d 0.00 : 460d77: 0f 84 10 0a 00 00 je 46178d 0.00 : 460d7d: e8 8e 58 fb ff callq 416610 0.00 : 460d82: 0f be 90 d0 00 00 00 movsbl 0xd0(%rax),%edx 0.00 : 460d89: 48 8d 88 d0 00 00 00 lea 0xd0(%rax),%rcx 0.00 : 460d90: 31 f6 xor %esi,%esi 0.00 : 460d92: bf f0 08 46 00 mov $0x4608f0,%edi 0.00 : 460d97: 89 15 83 57 23 00 mov %edx,0x235783(%rip) # 696520 0.00 : 460d9d: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 460da1: 48 89 15 80 57 23 00 mov %rdx,0x235780(%rip) # 696528 0.00 : 460da8: 0f b6 d3 movzbl %bl,%edx 0.00 : 460dab: c6 80 d0 00 00 00 00 movb $0x0,0xd0(%rax) 0.00 : 460db2: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 460db6: 48 c7 41 08 b0 69 41 movq $0x4169b0,0x8(%rcx) 0.00 : 460dbd: 00 0.00 : 460dbe: 48 01 d0 add %rdx,%rax 0.00 : 460dc1: 0f be 10 movsbl (%rax),%edx 0.00 : 460dc4: 89 15 4a 57 23 00 mov %edx,0x23574a(%rip) # 696514 0.00 : 460dca: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 460dce: 48 89 15 43 57 23 00 mov %rdx,0x235743(%rip) # 696518 0.00 : 460dd5: c6 00 00 movb $0x0,(%rax) 0.00 : 460dd8: 48 c7 40 08 80 62 41 movq $0x416280,0x8(%rax) 0.00 : 460ddf: 00 0.00 : 460de0: 31 c0 xor %eax,%eax 0.00 : 460de2: 88 1d 48 57 23 00 mov %bl,0x235748(%rip) # 696530 0.00 : 460de8: e8 b3 60 fe ff callq 446ea0 0.00 : 460ded: 48 8b b4 24 08 01 00 mov 0x108(%rsp),%rsi 0.00 : 460df4: 00 0.00 : 460df5: 31 c0 xor %eax,%eax 0.00 : 460df7: bf d0 81 45 00 mov $0x4581d0,%edi 0.00 : 460dfc: e8 9f 60 fe ff callq 446ea0 0.00 : 460e01: 8b 05 3d 51 23 00 mov 0x23513d(%rip),%eax # 695f44 0.00 : 460e07: 8b 5c 24 28 mov 0x28(%rsp),%ebx 0.00 : 460e0b: 83 c0 01 add $0x1,%eax 0.00 : 460e0e: 85 db test %ebx,%ebx 0.00 : 460e10: 89 05 2e 51 23 00 mov %eax,0x23512e(%rip) # 695f44 0.00 : 460e16: c7 05 28 51 23 00 01 movl $0x1,0x235128(%rip) # 695f48 0.00 : 460e1d: 00 00 00 0.00 : 460e20: 0f 8e fd 06 00 00 jle 461523 0.00 : 460e26: c7 44 24 1c 01 00 00 movl $0x1,0x1c(%rsp) 0.00 : 460e2d: 00 0.00 : 460e2e: c7 44 24 08 00 00 00 movl $0x0,0x8(%rsp) 0.00 : 460e35: 00 0.00 : 460e36: 41 bf 70 00 00 00 mov $0x70,%r15d 0.00 : 460e3c: 31 ed xor %ebp,%ebp 0.00 : 460e3e: 45 31 f6 xor %r14d,%r14d 0.00 : 460e41: c7 44 24 0c 00 00 00 movl $0x0,0xc(%rsp) 0.00 : 460e48: 00 0.00 : 460e49: c7 44 24 10 00 00 00 movl $0x0,0x10(%rsp) 0.00 : 460e50: 00 0.00 : 460e51: 31 db xor %ebx,%ebx 0.00 : 460e53: 45 31 ed xor %r13d,%r13d 0.00 : 460e56: c7 44 24 4c 00 00 00 movl $0x0,0x4c(%rsp) 0.00 : 460e5d: 00 0.00 : 460e5e: e9 8f 00 00 00 jmpq 460ef2 0.00 : 460e63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 460e68: 4d 85 ed test %r13,%r13 0.00 : 460e6b: 0f 84 37 02 00 00 je 4610a8 0.00 : 460e71: 48 63 44 24 4c movslq 0x4c(%rsp),%rax 0.00 : 460e76: 41 0f b6 44 05 00 movzbl 0x0(%r13,%rax,1),%eax 0.00 : 460e7c: 84 c0 test %al,%al 0.00 : 460e7e: 0f 84 1c 02 00 00 je 4610a0 0.00 : 460e84: 83 44 24 4c 01 addl $0x1,0x4c(%rsp) 0.00 : 460e89: 88 84 24 1f 01 00 00 mov %al,0x11f(%rsp) 0.00 : 460e90: 8d 45 02 lea 0x2(%rbp),%eax 0.00 : 460e93: 49 89 dc mov %rbx,%r12 0.00 : 460e96: 41 39 c7 cmp %eax,%r15d 0.00 : 460e99: 0f 8e d6 00 00 00 jle 460f75 0.00 : 460e9f: 45 85 f6 test %r14d,%r14d 0.00 : 460ea2: 0f 84 0b 01 00 00 je 460fb3 0.00 : 460ea8: 80 bc 24 1f 01 00 00 cmpb $0xa,0x11f(%rsp) 0.00 : 460eaf: 0a 0.00 : 460eb0: 0f 84 7a 01 00 00 je 461030 0.00 : 460eb6: 0f b6 94 24 1f 01 00 movzbl 0x11f(%rsp),%edx 0.00 : 460ebd: 00 0.00 : 460ebe: 48 8b 84 24 08 01 00 mov 0x108(%rsp),%rax 0.00 : 460ec5: 00 0.00 : 460ec6: 48 63 cd movslq %ebp,%rcx 0.00 : 460ec9: 83 c5 01 add $0x1,%ebp 0.00 : 460ecc: 88 14 08 mov %dl,(%rax,%rcx,1) 0.00 : 460ecf: 44 8b 74 24 28 mov 0x28(%rsp),%r14d 0.00 : 460ed4: 83 44 24 08 01 addl $0x1,0x8(%rsp) 0.00 : 460ed9: 45 85 f6 test %r14d,%r14d 0.00 : 460edc: 7e 0e jle 460eec 0.00 : 460ede: 8b 44 24 28 mov 0x28(%rsp),%eax 0.00 : 460ee2: 39 44 24 08 cmp %eax,0x8(%rsp) 0.00 : 460ee6: 0f 8d 99 08 00 00 jge 461785 0.00 : 460eec: 45 31 f6 xor %r14d,%r14d 0.00 : 460eef: 4c 89 e3 mov %r12,%rbx 0.00 : 460ef2: 44 8b 5c 24 64 mov 0x64(%rsp),%r11d 0.00 : 460ef7: 45 85 db test %r11d,%r11d 0.00 : 460efa: 0f 85 68 ff ff ff jne 460e68 0.00 : 460f00: 44 8b 4c 24 10 mov 0x10(%rsp),%r9d 0.00 : 460f05: 49 89 dc mov %rbx,%r12 0.00 : 460f08: 45 85 c9 test %r9d,%r9d 0.00 : 460f0b: 74 27 je 460f34 0.00 : 460f0d: 48 85 db test %rbx,%rbx 0.00 : 460f10: 0f 84 78 03 00 00 je 46128e 0.00 : 460f16: 48 8b 35 53 24 23 00 mov 0x232453(%rip),%rsi # 693370 0.00 : 460f1d: 49 89 dc mov %rbx,%r12 0.00 : 460f20: 48 89 df mov %rbx,%rdi 0.00 : 460f23: e8 f8 56 fb ff callq 416620 0.00 : 460f28: 48 8b 3d 41 24 23 00 mov 0x232441(%rip),%rdi # 693370 0.00 : 460f2f: e8 fc 5d fb ff callq 416d30 0.00 : 460f34: 44 8b 44 24 1c mov 0x1c(%rsp),%r8d 0.00 : 460f39: 45 85 c0 test %r8d,%r8d 0.00 : 460f3c: 0f 84 d6 00 00 00 je 461018 20.00 : 460f42: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 460f46: 48 8d b4 24 1f 01 00 lea 0x11f(%rsp),%rsi 0.00 : 460f4d: 00 0.00 : 460f4e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 460f53: e8 48 88 00 00 callq 4697a0 0.00 : 460f58: 83 f8 00 cmp $0x0,%eax 0.00 : 460f5b: 0f 8e 67 05 00 00 jle 4614c8 0.00 : 460f61: 8d 45 02 lea 0x2(%rbp),%eax 0.00 : 460f64: c7 44 24 10 00 00 00 movl $0x0,0x10(%rsp) 0.00 : 460f6b: 00 0.00 : 460f6c: 41 39 c7 cmp %eax,%r15d 0.00 : 460f6f: 0f 8f 2a ff ff ff jg 460e9f 0.00 : 460f75: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 460f7c: 00 0.00 : 460f7d: 41 83 ef 80 sub $0xffffff80,%r15d 0.00 : 460f81: 49 63 f7 movslq %r15d,%rsi 0.00 : 460f84: e8 a7 72 ff ff callq 458230 0.00 : 460f89: 48 89 84 24 08 01 00 mov %rax,0x108(%rsp) 0.00 : 460f90: 00 0.00 : 460f91: e8 3a 5f fe ff callq 446ed0 0.00 : 460f96: 48 8b b4 24 08 01 00 mov 0x108(%rsp),%rsi 0.00 : 460f9d: 00 0.00 : 460f9e: 31 c0 xor %eax,%eax 0.00 : 460fa0: bf d0 81 45 00 mov $0x4581d0,%edi 0.00 : 460fa5: e8 f6 5e fe ff callq 446ea0 0.00 : 460faa: 45 85 f6 test %r14d,%r14d 0.00 : 460fad: 0f 85 f5 fe ff ff jne 460ea8 20.00 : 460fb3: 0f b6 84 24 1f 01 00 movzbl 0x11f(%rsp),%eax 0.00 : 460fba: 00 0.00 : 460fbb: 3c 5c cmp $0x5c,%al 0.00 : 460fbd: 0f 84 ad 00 00 00 je 461070 0.00 : 460fc3: 3a 05 47 55 23 00 cmp 0x235547(%rip),%al # 696510 0.00 : 460fc9: 0f 84 b6 07 00 00 je 461785 0.00 : 460fcf: 3c 01 cmp $0x1,%al 0.00 : 460fd1: 74 08 je 460fdb 0.00 : 460fd3: 3c 7f cmp $0x7f,%al 0.00 : 460fd5: 0f 85 db fe ff ff jne 460eb6 0.00 : 460fdb: 48 8b 84 24 08 01 00 mov 0x108(%rsp),%rax 0.00 : 460fe2: 00 0.00 : 460fe3: 48 63 d5 movslq %ebp,%rdx 0.00 : 460fe6: 83 44 24 0c 01 addl $0x1,0xc(%rsp) 0.00 : 460feb: 83 c5 01 add $0x1,%ebp 0.00 : 460fee: c6 04 10 01 movb $0x1,(%rax,%rdx,1) 0.00 : 460ff2: e9 bf fe ff ff jmpq 460eb6 0.00 : 460ff7: c7 44 24 2c 00 00 00 movl $0x0,0x2c(%rsp) 0.00 : 460ffe: 00 0.00 : 460fff: c7 44 24 64 00 00 00 movl $0x0,0x64(%rsp) 0.00 : 461006: 00 0.00 : 461007: 48 c7 44 24 68 00 00 movq $0x0,0x68(%rsp) 0.00 : 46100e: 00 00 0.00 : 461010: e9 01 fd ff ff jmpq 460d16 0.00 : 461015: 0f 1f 00 nopl (%rax) 0.00 : 461018: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 46101c: 48 8d b4 24 1f 01 00 lea 0x11f(%rsp),%rsi 0.00 : 461023: 00 0.00 : 461024: e8 c7 87 00 00 callq 4697f0 0.00 : 461029: e9 2a ff ff ff jmpq 460f58 0.00 : 46102e: 66 90 xchg %ax,%ax 0.00 : 461030: 8b 3d 9e 23 23 00 mov 0x23239e(%rip),%edi # 6933d4 0.00 : 461036: 83 ed 01 sub $0x1,%ebp 0.00 : 461039: 85 ff test %edi,%edi 0.00 : 46103b: 0f 84 ab fe ff ff je 460eec 0.00 : 461041: 8b 74 24 14 mov 0x14(%rsp),%esi 0.00 : 461045: 85 f6 test %esi,%esi 0.00 : 461047: 0f 84 9f fe ff ff je 460eec 0.00 : 46104d: 8b 4c 24 20 mov 0x20(%rsp),%ecx 0.00 : 461051: 85 c9 test %ecx,%ecx 0.00 : 461053: 0f 85 93 fe ff ff jne 460eec 0.00 : 461059: 45 31 f6 xor %r14d,%r14d 0.00 : 46105c: c7 44 24 10 01 00 00 movl $0x1,0x10(%rsp) 0.00 : 461063: 00 0.00 : 461064: e9 86 fe ff ff jmpq 460eef 0.00 : 461069: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 461070: 8b 54 24 20 mov 0x20(%rsp),%edx 0.00 : 461074: 85 d2 test %edx,%edx 0.00 : 461076: 0f 85 47 ff ff ff jne 460fc3 0.00 : 46107c: 48 8b 84 24 08 01 00 mov 0x108(%rsp),%rax 0.00 : 461083: 00 0.00 : 461084: 48 63 d5 movslq %ebp,%rdx 0.00 : 461087: 83 44 24 0c 01 addl $0x1,0xc(%rsp) 0.00 : 46108c: 83 c5 01 add $0x1,%ebp 0.00 : 46108f: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 461095: c6 04 10 01 movb $0x1,(%rax,%rdx,1) 0.00 : 461099: e9 51 fe ff ff jmpq 460eef 0.00 : 46109e: 66 90 xchg %ax,%ax 0.00 : 4610a0: 4c 89 ef mov %r13,%rdi 0.00 : 4610a3: e8 28 71 ff ff callq 4581d0 0.00 : 4610a8: 44 8b 15 e9 4f 23 00 mov 0x234fe9(%rip),%r10d # 696098 0.00 : 4610af: 48 83 7c 24 68 00 cmpq $0x0,0x68(%rsp) 0.00 : 4610b5: 41 bc db 98 47 00 mov $0x4798db,%r12d 0.00 : 4610bb: 4c 0f 45 64 24 68 cmovne 0x68(%rsp),%r12 0.00 : 4610c1: 45 85 d2 test %r10d,%r10d 0.00 : 4610c4: 0f 84 93 00 00 00 je 46115d 0.00 : 4610ca: 48 8b 05 b7 01 23 00 mov 0x2301b7(%rip),%rax # 691288 0.00 : 4610d1: 4c 89 e7 mov %r12,%rdi 0.00 : 4610d4: 48 c7 05 a9 01 23 00 movq $0x0,0x2301a9(%rip) # 691288 0.00 : 4610db: 00 00 00 00 0.00 : 4610df: 48 89 05 3a 53 23 00 mov %rax,0x23533a(%rip) # 696420 0.00 : 4610e6: e8 85 57 fb ff callq 416870 0.00 : 4610eb: 49 89 c5 mov %rax,%r13 0.00 : 4610ee: 48 8b 05 2b 53 23 00 mov 0x23532b(%rip),%rax # 696420 0.00 : 4610f5: 48 c7 05 20 53 23 00 movq $0x0,0x235320(%rip) # 696420 0.00 : 4610fc: 00 00 00 00 0.00 : 461100: 4d 85 ed test %r13,%r13 0.00 : 461103: 48 89 05 7e 01 23 00 mov %rax,0x23017e(%rip) # 691288 0.00 : 46110a: 74 5b je 461167 0.00 : 46110c: 4c 89 ef mov %r13,%rdi 0.00 : 46110f: e8 dc 52 fb ff callq 4163f0 0.00 : 461114: 41 89 c4 mov %eax,%r12d 0.00 : 461117: 4c 89 ef mov %r13,%rdi 0.00 : 46111a: 41 8d 74 24 02 lea 0x2(%r12),%esi 0.00 : 46111f: 48 63 f6 movslq %esi,%rsi 0.00 : 461122: e8 09 71 ff ff callq 458230 0.00 : 461127: 49 89 c5 mov %rax,%r13 0.00 : 46112a: 0f b6 05 df 53 23 00 movzbl 0x2353df(%rip),%eax # 696510 0.00 : 461131: 49 63 d4 movslq %r12d,%rdx 0.00 : 461134: 4d 85 ed test %r13,%r13 0.00 : 461137: 41 88 44 15 00 mov %al,0x0(%r13,%rdx,1) 0.00 : 46113c: 41 8d 44 24 01 lea 0x1(%r12),%eax 0.00 : 461141: 48 98 cltq 0.00 : 461143: 41 c6 44 05 00 00 movb $0x0,0x0(%r13,%rax,1) 0.00 : 461149: 74 1c je 461167 0.00 : 46114b: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : 461150: c7 44 24 4c 01 00 00 movl $0x1,0x4c(%rsp) 0.00 : 461157: 00 0.00 : 461158: e9 2c fd ff ff jmpq 460e89 0.00 : 46115d: e8 7e 11 ff ff callq 4522e0 0.00 : 461162: e9 63 ff ff ff jmpq 4610ca 0.00 : 461167: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 46116d: 48 8b 84 24 08 01 00 mov 0x108(%rsp),%rax 0.00 : 461174: 00 0.00 : 461175: 48 63 d5 movslq %ebp,%rdx 0.00 : 461178: c6 04 10 00 movb $0x0,(%rax,%rdx,1) 0.00 : 46117c: 8b 6c 24 34 mov 0x34(%rsp),%ebp 0.00 : 461180: 85 ed test %ebp,%ebp 0.00 : 461182: 0f 85 d7 03 00 00 jne 46155f 0.00 : 461188: 8b 5c 24 28 mov 0x28(%rsp),%ebx 0.00 : 46118c: 85 db test %ebx,%ebx 0.00 : 46118e: 0f 8e e7 03 00 00 jle 46157b 0.00 : 461194: 44 8b 5c 24 64 mov 0x64(%rsp),%r11d 0.00 : 461199: 45 85 db test %r11d,%r11d 0.00 : 46119c: 0f 84 95 01 00 00 je 461337 0.00 : 4611a2: 44 8b 54 24 28 mov 0x28(%rsp),%r10d 0.00 : 4611a7: 45 85 d2 test %r10d,%r10d 0.00 : 4611aa: 7e 0a jle 4611b6 0.00 : 4611ac: c7 05 ea 00 23 00 00 movl $0x0,0x2300ea(%rip) # 6912a0 0.00 : 4611b3: 00 00 00 0.00 : 4611b6: 80 3d 53 53 23 00 0a cmpb $0xa,0x235353(%rip) # 696510 0.00 : 4611bd: 74 07 je 4611c6 0.00 : 4611bf: 31 ff xor %edi,%edi 0.00 : 4611c1: e8 2a f7 ff ff callq 4608f0 0.00 : 4611c6: 8b 7c 24 1c mov 0x1c(%rsp),%edi 0.00 : 4611ca: 85 ff test %edi,%edi 0.00 : 4611cc: 0f 84 9b 03 00 00 je 46156d 0.00 : 4611d2: 8b 05 6c 4d 23 00 mov 0x234d6c(%rip),%eax # 695f44 0.00 : 4611d8: bf 88 9e 47 00 mov $0x479e88,%edi 0.00 : 4611dd: 83 e8 01 sub $0x1,%eax 0.00 : 4611e0: 89 05 5e 4d 23 00 mov %eax,0x234d5e(%rip) # 695f44 0.00 : 4611e6: c7 05 58 4d 23 00 00 movl $0x0,0x234d58(%rip) # 695f48 0.00 : 4611ed: 00 00 00 0.00 : 4611f0: e8 4b 5c fe ff callq 446e40 0.00 : 4611f5: 48 83 7c 24 40 00 cmpq $0x0,0x40(%rsp) 0.00 : 4611fb: 0f 84 9a 03 00 00 je 46159b 0.00 : 461201: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 461206: e8 35 12 fc ff callq 422440 0.00 : 46120b: 85 c0 test %eax,%eax 0.00 : 46120d: 0f 84 2a 03 00 00 je 46153d 0.00 : 461213: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 461218: be 01 00 00 00 mov $0x1,%esi 0.00 : 46121d: e8 1e a5 fe ff callq 44b740 0.00 : 461222: 48 85 c0 test %rax,%rax 0.00 : 461225: 48 89 c5 mov %rax,%rbp 0.00 : 461228: 0f 84 6a 06 00 00 je 461898 0.00 : 46122e: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 461232: e8 e9 8e fe ff callq 44a120 0.00 : 461237: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 46123e: 00 0.00 : 46123f: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 461244: 31 d2 xor %edx,%edx 0.00 : 461246: e8 75 a5 fd ff callq 43b7c0 0.00 : 46124b: 48 85 c0 test %rax,%rax 0.00 : 46124e: 48 89 c3 mov %rax,%rbx 0.00 : 461251: 74 29 je 46127c 0.00 : 461253: 8b 74 24 0c mov 0xc(%rsp),%esi 0.00 : 461257: 85 f6 test %esi,%esi 0.00 : 461259: 0f 84 14 05 00 00 je 461773 0.00 : 46125f: 48 89 c7 mov %rax,%rdi 0.00 : 461262: e8 f9 97 fd ff callq 43aa60 0.00 : 461267: 48 89 ef mov %rbp,%rdi 0.00 : 46126a: 31 d2 xor %edx,%edx 0.00 : 46126c: 48 89 de mov %rbx,%rsi 0.00 : 46126f: e8 dc a0 fe ff callq 44b350 0.00 : 461274: 48 89 df mov %rbx,%rdi 0.00 : 461277: e8 84 47 fc ff callq 425a00 0.00 : 46127c: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 461283: 00 0.00 : 461284: e8 47 6f ff ff callq 4581d0 0.00 : 461289: e9 bb f7 ff ff jmpq 460a49 0.00 : 46128e: bf 39 21 47 00 mov $0x472139,%edi 0.00 : 461293: e8 48 d0 fc ff callq 42e2e0 0.00 : 461298: 48 85 c0 test %rax,%rax 0.00 : 46129b: 48 89 c3 mov %rax,%rbx 0.00 : 46129e: 48 8b 35 cb 20 23 00 mov 0x2320cb(%rip),%rsi # 693370 0.00 : 4612a5: 49 89 c4 mov %rax,%r12 0.00 : 4612a8: 0f 85 72 fc ff ff jne 460f20 0.00 : 4612ae: 45 31 e4 xor %r12d,%r12d 0.00 : 4612b1: bb db 98 47 00 mov $0x4798db,%ebx 0.00 : 4612b6: e9 65 fc ff ff jmpq 460f20 0.00 : 4612bb: 48 8b 1d 4e 63 23 00 mov 0x23634e(%rip),%rbx # 697610 0.00 : 4612c2: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4612c7: be 00 9e 47 00 mov $0x479e00,%esi 0.00 : 4612cc: 31 ff xor %edi,%edi 0.00 : 4612ce: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4612d4: e8 a7 55 fb ff callq 416880 0.00 : 4612d9: 48 89 de mov %rbx,%rsi 0.00 : 4612dc: 48 89 c7 mov %rax,%rdi 0.00 : 4612df: 31 c0 xor %eax,%eax 0.00 : 4612e1: e8 fa 8d ff ff callq 45a0e0 0.00 : 4612e6: e9 5e f7 ff ff jmpq 460a49 0.00 : 4612eb: 48 8b 1d 1e 63 23 00 mov 0x23631e(%rip),%rbx # 697610 0.00 : 4612f2: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4612f7: be 28 9e 47 00 mov $0x479e28,%esi 0.00 : 4612fc: eb ce jmp 4612cc 0.00 : 4612fe: 44 8b 6c 24 14 mov 0x14(%rsp),%r13d 0.00 : 461303: 45 85 ed test %r13d,%r13d 0.00 : 461306: 0f 84 e1 fa ff ff je 460ded 0.00 : 46130c: e8 6f 8a 00 00 callq 469d80 0.00 : 461311: 44 8b 64 24 2c mov 0x2c(%rsp),%r12d 0.00 : 461316: 45 85 e4 test %r12d,%r12d 0.00 : 461319: 0f 84 58 05 00 00 je 461877 0.00 : 46131f: e8 2c 86 00 00 callq 469950 0.00 : 461324: 31 f6 xor %esi,%esi 0.00 : 461326: bf 20 9d 46 00 mov $0x469d20,%edi 0.00 : 46132b: 31 c0 xor %eax,%eax 0.00 : 46132d: e8 6e 5b fe ff callq 446ea0 0.00 : 461332: e9 b6 fa ff ff jmpq 460ded 0.00 : 461337: 44 8b 4c 24 14 mov 0x14(%rsp),%r9d 0.00 : 46133c: 45 85 c9 test %r9d,%r9d 0.00 : 46133f: 0f 84 81 fe ff ff je 4611c6 0.00 : 461345: e8 d6 89 00 00 callq 469d20 0.00 : 46134a: e9 77 fe ff ff jmpq 4611c6 0.00 : 46134f: 8b 74 24 30 mov 0x30(%rsp),%esi 0.00 : 461353: 48 8d 54 24 70 lea 0x70(%rsp),%rdx 0.00 : 461358: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46135d: e8 5e 54 fb ff callq 4167c0 <__fxstat@plt> 0.00 : 461362: 85 c0 test %eax,%eax 0.00 : 461364: 0f 88 26 06 00 00 js 461990 0.00 : 46136a: 8b 84 24 88 00 00 00 mov 0x88(%rsp),%eax 0.00 : 461371: 25 00 f0 00 00 and $0xf000,%eax 0.00 : 461376: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 46137b: 0f 84 0f 06 00 00 je 461990 0.00 : 461381: be 01 00 00 00 mov $0x1,%esi 0.00 : 461386: bf 40 64 69 00 mov $0x696440,%edi 0.00 : 46138b: e8 20 58 fb ff callq 416bb0 <__sigsetjmp@plt> 0.00 : 461390: 85 c0 test %eax,%eax 0.00 : 461392: 0f 85 ad 03 00 00 jne 461745 0.00 : 461398: be a0 19 46 00 mov $0x4619a0,%esi 0.00 : 46139d: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 4613a2: e8 b9 66 fe ff callq 447a60 0.00 : 4613a7: 31 f6 xor %esi,%esi 0.00 : 4613a9: 48 89 05 58 51 23 00 mov %rax,0x235158(%rip) # 696508 0.00 : 4613b0: bf d0 08 46 00 mov $0x4608d0,%edi 0.00 : 4613b5: 31 c0 xor %eax,%eax 0.00 : 4613b7: e8 e4 5a fe ff callq 446ea0 0.00 : 4613bc: 8b 44 24 64 mov 0x64(%rsp),%eax 0.00 : 4613c0: 85 c0 test %eax,%eax 0.00 : 4613c2: 0f 85 bd 04 00 00 jne 461885 0.00 : 4613c8: 8b 7c 24 34 mov 0x34(%rsp),%edi 0.00 : 4613cc: e8 0f 54 fb ff callq 4167e0 0.00 : 4613d1: e9 4c f9 ff ff jmpq 460d22 0.00 : 4613d6: bf 8e 25 47 00 mov $0x47258e,%edi 0.00 : 4613db: e8 00 cf fc ff callq 42e2e0 0.00 : 4613e0: 48 85 c0 test %rax,%rax 0.00 : 4613e3: 48 89 84 24 00 01 00 mov %rax,0x100(%rsp) 0.00 : 4613ea: 00 0.00 : 4613eb: 0f 84 86 f8 ff ff je 460c77 0.00 : 4613f1: 48 8d b4 24 10 01 00 lea 0x110(%rsp),%rsi 0.00 : 4613f8: 00 0.00 : 4613f9: 48 89 c7 mov %rax,%rdi 0.00 : 4613fc: e8 6f 12 fc ff callq 422670 0.00 : 461401: 85 c0 test %eax,%eax 0.00 : 461403: 74 1c je 461421 0.00 : 461405: 48 8b 94 24 10 01 00 mov 0x110(%rsp),%rdx 0.00 : 46140c: 00 0.00 : 46140d: 48 85 d2 test %rdx,%rdx 0.00 : 461410: 78 0f js 461421 0.00 : 461412: 89 d0 mov %edx,%eax 0.00 : 461414: 89 54 24 34 mov %edx,0x34(%rsp) 0.00 : 461418: 48 39 c2 cmp %rax,%rdx 0.00 : 46141b: 0f 84 56 f8 ff ff je 460c77 0.00 : 461421: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 461428: 00 0.00 : 461429: e9 49 f8 ff ff jmpq 460c77 0.00 : 46142e: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 461432: 31 f6 xor %esi,%esi 0.00 : 461434: ba 01 00 00 00 mov $0x1,%edx 0.00 : 461439: e8 f2 51 fb ff callq 416630 0.00 : 46143e: 48 85 c0 test %rax,%rax 0.00 : 461441: 0f 89 7e f8 ff ff jns 460cc5 0.00 : 461447: e8 f4 53 fb ff callq 416840 <__errno_location@plt> 0.00 : 46144c: 83 38 1d cmpl $0x1d,(%rax) 0.00 : 46144f: c7 44 24 18 01 00 00 movl $0x1,0x18(%rsp) 0.00 : 461456: 00 0.00 : 461457: 0f 85 68 f8 ff ff jne 460cc5 0.00 : 46145d: 0f 1f 00 nopl (%rax) 0.00 : 461460: e9 68 f8 ff ff jmpq 460ccd 0.00 : 461465: 0f 1f 00 nopl (%rax) 0.00 : 461468: 48 8b 35 01 1f 23 00 mov 0x231f01(%rip),%rsi # 693370 0.00 : 46146f: 48 89 ef mov %rbp,%rdi 0.00 : 461472: e8 a9 51 fb ff callq 416620 0.00 : 461477: 48 8b 3d f2 1e 23 00 mov 0x231ef2(%rip),%rdi # 693370 0.00 : 46147e: e8 ad 58 fb ff callq 416d30 0.00 : 461483: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 461488: c7 44 24 64 00 00 00 movl $0x0,0x64(%rsp) 0.00 : 46148f: 00 0.00 : 461490: 48 89 54 24 68 mov %rdx,0x68(%rsp) 0.00 : 461495: e9 7c f8 ff ff jmpq 460d16 0.00 : 46149a: 80 3d 6f 50 23 00 0a cmpb $0xa,0x23506f(%rip) # 696510 0.00 : 4614a1: 0f 85 87 f8 ff ff jne 460d2e 0.00 : 4614a7: 8b 6c 24 2c mov 0x2c(%rsp),%ebp 0.00 : 4614ab: 85 ed test %ebp,%ebp 0.00 : 4614ad: 0f 84 3a f9 ff ff je 460ded 0.00 : 4614b3: e8 c8 88 00 00 callq 469d80 0.00 : 4614b8: e8 d3 86 00 00 callq 469b90 0.00 : 4614bd: 0f 1f 00 nopl (%rax) 0.00 : 4614c0: e9 5f fe ff ff jmpq 461324 0.00 : 4614c5: 0f 1f 00 nopl (%rax) 0.00 : 4614c8: 48 8b 84 24 08 01 00 mov 0x108(%rsp),%rax 0.00 : 4614cf: 00 0.00 : 4614d0: 48 63 d5 movslq %ebp,%rdx 0.00 : 4614d3: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4614d9: c6 04 10 00 movb $0x0,(%rax,%rdx,1) 0.00 : 4614dd: 0f 84 99 fc ff ff je 46117c 0.00 : 4614e3: e8 58 53 fb ff callq 416840 <__errno_location@plt> 0.00 : 4614e8: 8b 38 mov (%rax),%edi 0.00 : 4614ea: e8 c1 50 fb ff callq 4165b0 0.00 : 4614ef: 31 ff xor %edi,%edi 0.00 : 4614f1: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4614f6: be 95 9e 47 00 mov $0x479e95,%esi 0.00 : 4614fb: 48 89 c3 mov %rax,%rbx 0.00 : 4614fe: e8 7d 53 fb ff callq 416880 0.00 : 461503: 8b 74 24 30 mov 0x30(%rsp),%esi 0.00 : 461507: 48 89 c7 mov %rax,%rdi 0.00 : 46150a: 48 89 da mov %rbx,%rdx 0.00 : 46150d: 31 c0 xor %eax,%eax 0.00 : 46150f: e8 cc 8b ff ff callq 45a0e0 0.00 : 461514: bf 88 9e 47 00 mov $0x479e88,%edi 0.00 : 461519: e8 52 59 fe ff callq 446e70 0.00 : 46151e: e9 26 f5 ff ff jmpq 460a49 0.00 : 461523: 80 3d e6 4f 23 00 0a cmpb $0xa,0x234fe6(%rip) # 696510 0.00 : 46152a: 8b 54 24 18 mov 0x18(%rsp),%edx 0.00 : 46152e: 89 54 24 1c mov %edx,0x1c(%rsp) 0.00 : 461532: 0f 85 ee f8 ff ff jne 460e26 0.00 : 461538: e9 f1 f8 ff ff jmpq 460e2e 0.00 : 46153d: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 461542: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 461548: e8 d3 94 ff ff callq 45aa20 0.00 : 46154d: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 461554: 00 0.00 : 461555: e8 76 6c ff ff callq 4581d0 0.00 : 46155a: e9 ea f4 ff ff jmpq 460a49 0.00 : 46155f: e8 6c f3 ff ff callq 4608d0 0.00 : 461564: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 461568: e9 1b fc ff ff jmpq 461188 0.00 : 46156d: 8b 7c 24 30 mov 0x30(%rsp),%edi 0.00 : 461571: e8 5a 81 00 00 callq 4696d0 0.00 : 461576: e9 57 fc ff ff jmpq 4611d2 0.00 : 46157b: 80 3d 8e 4f 23 00 0a cmpb $0xa,0x234f8e(%rip) # 696510 0.00 : 461582: 0f 85 0c fc ff ff jne 461194 0.00 : 461588: 44 8b 44 24 2c mov 0x2c(%rsp),%r8d 0.00 : 46158d: 45 85 c0 test %r8d,%r8d 0.00 : 461590: 0f 84 30 fc ff ff je 4611c6 0.00 : 461596: e9 aa fd ff ff jmpq 461345 0.00 : 46159b: 48 83 7c 24 58 00 cmpq $0x0,0x58(%rsp) 0.00 : 4615a1: 0f 84 2a 03 00 00 je 4618d1 0.00 : 4615a7: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 4615ac: 4c 8b b4 24 08 01 00 mov 0x108(%rsp),%r14 0.00 : 4615b3: 00 0.00 : 4615b4: b9 00 6d 69 00 mov $0x696d00,%ecx 0.00 : 4615b9: 80 38 00 cmpb $0x0,(%rax) 0.00 : 4615bc: 4c 89 f2 mov %r14,%rdx 0.00 : 4615bf: 75 0b jne 4615cc 0.00 : 4615c1: eb 21 jmp 4615e4 0.00 : 4615c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4615c8: 48 83 c2 01 add $0x1,%rdx 0.00 : 4615cc: 0f b6 02 movzbl (%rdx),%eax 0.00 : 4615cf: 3c 20 cmp $0x20,%al 0.00 : 4615d1: 74 08 je 4615db 0.00 : 4615d3: 3c 09 cmp $0x9,%al 0.00 : 4615d5: 74 04 je 4615db 0.00 : 4615d7: 3c 0a cmp $0xa,%al 0.00 : 4615d9: 75 09 jne 4615e4 0.00 : 4615db: 0f b6 c0 movzbl %al,%eax 0.00 : 4615de: 80 3c 01 00 cmpb $0x0,(%rcx,%rax,1) 0.00 : 4615e2: 75 e4 jne 4615c8 0.00 : 4615e4: 48 89 94 24 08 01 00 mov %rdx,0x108(%rsp) 0.00 : 4615eb: 00 0.00 : 4615ec: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 4615f1: 48 83 3a 00 cmpq $0x0,(%rdx) 0.00 : 4615f5: 0f 85 87 00 00 00 jne 461682 0.00 : 4615fb: e9 9a 01 00 00 jmpq 46179a 0.00 : 461600: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 461605: 48 8d 94 24 00 01 00 lea 0x100(%rsp),%rdx 0.00 : 46160c: 00 0.00 : 46160d: 48 8d bc 24 08 01 00 lea 0x108(%rsp),%rdi 0.00 : 461614: 00 0.00 : 461615: e8 b6 9e fd ff callq 43b4d0 0.00 : 46161a: 48 85 c0 test %rax,%rax 0.00 : 46161d: 49 89 c5 mov %rax,%r13 0.00 : 461620: 0f 84 f0 00 00 00 je 461716 0.00 : 461626: 48 8b 84 24 00 01 00 mov 0x100(%rsp),%rax 0.00 : 46162d: 00 0.00 : 46162e: c6 00 00 movb $0x0,(%rax) 0.00 : 461631: 8b 54 24 0c mov 0xc(%rsp),%edx 0.00 : 461635: 85 d2 test %edx,%edx 0.00 : 461637: 0f 85 b3 00 00 00 jne 4616f0 0.00 : 46163d: 4c 89 ee mov %r13,%rsi 0.00 : 461640: 4c 89 e7 mov %r12,%rdi 0.00 : 461643: e8 f8 f2 ff ff callq 460940 0.00 : 461648: 48 89 c5 mov %rax,%rbp 0.00 : 46164b: 4c 89 ef mov %r13,%rdi 0.00 : 46164e: e8 6d 4d fb ff callq 4163c0 0.00 : 461653: 48 85 ed test %rbp,%rbp 0.00 : 461656: 0f 84 08 02 00 00 je 461864 0.00 : 46165c: 4c 89 e7 mov %r12,%rdi 0.00 : 46165f: e8 1c 9e fc ff callq 42b480 0.00 : 461664: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 461669: 81 65 28 ff ef ff ff andl $0xffffefff,0x28(%rbp) 0.00 : 461670: 48 8b 00 mov (%rax),%rax 0.00 : 461673: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 461677: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 46167c: 0f 84 18 01 00 00 je 46179a 0.00 : 461682: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 461687: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 46168b: 4c 8b 20 mov (%rax),%r12 0.00 : 46168e: 4c 89 e7 mov %r12,%rdi 0.00 : 461691: e8 aa 0d fc ff callq 422440 0.00 : 461696: 85 c0 test %eax,%eax 0.00 : 461698: 74 26 je 4616c0 0.00 : 46169a: 48 8b 84 24 08 01 00 mov 0x108(%rsp),%rax 0.00 : 4616a1: 00 0.00 : 4616a2: 80 38 00 cmpb $0x0,(%rax) 0.00 : 4616a5: 0f 85 55 ff ff ff jne 461600 0.00 : 4616ab: be db 98 47 00 mov $0x4798db,%esi 0.00 : 4616b0: 4c 89 e7 mov %r12,%rdi 0.00 : 4616b3: e8 88 f2 ff ff callq 460940 0.00 : 4616b8: 48 89 c5 mov %rax,%rbp 0.00 : 4616bb: eb 96 jmp 461653 0.00 : 4616bd: 0f 1f 00 nopl (%rax) 0.00 : 4616c0: 4c 89 e7 mov %r12,%rdi 0.00 : 4616c3: e8 d8 a7 fe ff callq 44bea0 0.00 : 4616c8: 85 c0 test %eax,%eax 0.00 : 4616ca: 75 ce jne 46169a 0.00 : 4616cc: 4c 89 e7 mov %r12,%rdi 0.00 : 4616cf: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4616d5: e8 46 93 ff ff callq 45aa20 0.00 : 4616da: 4c 89 f7 mov %r14,%rdi 0.00 : 4616dd: e8 ee 6a ff ff callq 4581d0 0.00 : 4616e2: e9 62 f3 ff ff jmpq 460a49 0.00 : 4616e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4616ee: 00 00 0.00 : 4616f0: 4c 89 ef mov %r13,%rdi 0.00 : 4616f3: e8 38 90 fd ff callq 43a730 0.00 : 4616f8: 4c 89 e7 mov %r12,%rdi 0.00 : 4616fb: 48 89 c3 mov %rax,%rbx 0.00 : 4616fe: 48 89 c6 mov %rax,%rsi 0.00 : 461701: e8 3a f2 ff ff callq 460940 0.00 : 461706: 48 89 df mov %rbx,%rdi 0.00 : 461709: 48 89 c5 mov %rax,%rbp 0.00 : 46170c: e8 bf 6a ff ff callq 4581d0 0.00 : 461711: e9 35 ff ff ff jmpq 46164b 0.00 : 461716: 31 f6 xor %esi,%esi 0.00 : 461718: 4c 89 e7 mov %r12,%rdi 0.00 : 46171b: e8 20 f2 ff ff callq 460940 0.00 : 461720: 48 89 c5 mov %rax,%rbp 0.00 : 461723: e9 2b ff ff ff jmpq 461653 0.00 : 461728: 8b 44 24 64 mov 0x64(%rsp),%eax 0.00 : 46172c: 85 c0 test %eax,%eax 0.00 : 46172e: 0f 85 a5 f5 ff ff jne 460cd9 0.00 : 461734: 45 85 e4 test %r12d,%r12d 0.00 : 461737: 0f 84 d9 f5 ff ff je 460d16 0.00 : 46173d: 0f 1f 00 nopl (%rax) 0.00 : 461740: e9 94 f5 ff ff jmpq 460cd9 0.00 : 461745: 8b 05 f9 47 23 00 mov 0x2347f9(%rip),%eax # 695f44 0.00 : 46174b: bf 88 9e 47 00 mov $0x479e88,%edi 0.00 : 461750: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 461756: 83 e8 01 sub $0x1,%eax 0.00 : 461759: 89 05 e5 47 23 00 mov %eax,0x2347e5(%rip) # 695f44 0.00 : 46175f: c7 05 df 47 23 00 00 movl $0x0,0x2347df(%rip) # 695f48 0.00 : 461766: 00 00 00 0.00 : 461769: e8 02 57 fe ff callq 446e70 0.00 : 46176e: e9 d6 f2 ff ff jmpq 460a49 0.00 : 461773: 48 89 c7 mov %rax,%rdi 0.00 : 461776: e8 05 8f fd ff callq 43a680 0.00 : 46177b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 461780: e9 e2 fa ff ff jmpq 461267 0.00 : 461785: 45 31 ff xor %r15d,%r15d 0.00 : 461788: e9 e0 f9 ff ff jmpq 46116d 0.00 : 46178d: 0f 1f 00 nopl (%rax) 0.00 : 461790: e8 4b 0b ff ff callq 4522e0 0.00 : 461795: e9 e3 f5 ff ff jmpq 460d7d 20.00 : 46179a: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 46179f: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4617a3: 48 8b 38 mov (%rax),%rdi 20.00 : 4617a6: e8 95 0c fc ff callq 422440 0.00 : 4617ab: 85 c0 test %eax,%eax 0.00 : 4617ad: 0f 84 87 00 00 00 je 46183a 0.00 : 4617b3: 48 8b ac 24 08 01 00 mov 0x108(%rsp),%rbp 0.00 : 4617ba: 00 0.00 : 4617bb: 45 31 e4 xor %r12d,%r12d 0.00 : 4617be: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 4617c2: 0f 85 54 01 00 00 jne 46191c 0.00 : 4617c8: 8b 44 24 0c mov 0xc(%rsp),%eax 0.00 : 4617cc: 85 c0 test %eax,%eax 0.00 : 4617ce: 0f 84 dc 00 00 00 je 4618b0 0.00 : 4617d4: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 4617db: 00 0.00 : 4617dc: e8 4f 8f fd ff callq 43a730 0.00 : 4617e1: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 4617e6: 48 89 c3 mov %rax,%rbx 0.00 : 4617e9: 48 89 de mov %rbx,%rsi 0.00 : 4617ec: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4617f0: 48 8b 38 mov (%rax),%rdi 0.00 : 4617f3: e8 48 f1 ff ff callq 460940 0.00 : 4617f8: 48 89 df mov %rbx,%rdi 0.00 : 4617fb: 48 89 c5 mov %rax,%rbp 0.00 : 4617fe: e8 cd 69 ff ff callq 4581d0 0.00 : 461803: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 461808: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 46180c: 48 8b 38 mov (%rax),%rdi 0.00 : 46180f: e8 6c 9c fc ff callq 42b480 0.00 : 461814: 4d 85 e4 test %r12,%r12 0.00 : 461817: 74 08 je 461821 0.00 : 461819: 4c 89 e7 mov %r12,%rdi 0.00 : 46181c: e8 9f 4b fb ff callq 4163c0 0.00 : 461821: 48 85 ed test %rbp,%rbp 0.00 : 461824: 74 07 je 46182d 0.00 : 461826: 81 65 28 ff ef ff ff andl $0xffffefff,0x28(%rbp) 0.00 : 46182d: 4c 89 f7 mov %r14,%rdi 0.00 : 461830: e8 9b 69 ff ff callq 4581d0 0.00 : 461835: e9 0f f2 ff ff jmpq 460a49 0.00 : 46183a: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 46183f: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 461843: 48 8b 38 mov (%rax),%rdi 0.00 : 461846: e8 55 a6 fe ff callq 44bea0 0.00 : 46184b: 85 c0 test %eax,%eax 0.00 : 46184d: 0f 85 60 ff ff ff jne 4617b3 0.00 : 461853: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 461858: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 46185c: 48 8b 38 mov (%rax),%rdi 0.00 : 46185f: e8 bc 91 ff ff callq 45aa20 0.00 : 461864: 4c 89 f7 mov %r14,%rdi 0.00 : 461867: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 46186d: e8 5e 69 ff ff callq 4581d0 0.00 : 461872: e9 d2 f1 ff ff jmpq 460a49 0.00 : 461877: e8 d4 83 00 00 callq 469c50 0.00 : 46187c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 461880: e9 9f fa ff ff jmpq 461324 0.00 : 461885: 31 f6 xor %esi,%esi 0.00 : 461887: bf a0 08 46 00 mov $0x4608a0,%edi 0.00 : 46188c: 31 c0 xor %eax,%eax 0.00 : 46188e: e8 0d 56 fe ff callq 446ea0 0.00 : 461893: e9 30 fb ff ff jmpq 4613c8 0.00 : 461898: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 46189f: 00 0.00 : 4618a0: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4618a6: e8 25 69 ff ff callq 4581d0 0.00 : 4618ab: e9 99 f1 ff ff jmpq 460a49 0.00 : 4618b0: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 4618b5: 48 8b b4 24 08 01 00 mov 0x108(%rsp),%rsi 0.00 : 4618bc: 00 0.00 : 4618bd: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4618c1: 48 8b 38 mov (%rax),%rdi 0.00 : 4618c4: e8 77 f0 ff ff callq 460940 0.00 : 4618c9: 48 89 c5 mov %rax,%rbp 0.00 : 4618cc: e9 32 ff ff ff jmpq 461803 0.00 : 4618d1: 8b 4c 24 0c mov 0xc(%rsp),%ecx 0.00 : 4618d5: 85 c9 test %ecx,%ecx 0.00 : 4618d7: 74 7d je 461956 0.00 : 4618d9: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 4618e0: 00 0.00 : 4618e1: e8 4a 8e fd ff callq 43a730 0.00 : 4618e6: bf 52 74 47 00 mov $0x477452,%edi 0.00 : 4618eb: 48 89 c3 mov %rax,%rbx 0.00 : 4618ee: 31 d2 xor %edx,%edx 0.00 : 4618f0: 48 89 c6 mov %rax,%rsi 0.00 : 4618f3: e8 48 c3 fc ff callq 42dc40 0.00 : 4618f8: 48 89 df mov %rbx,%rdi 0.00 : 4618fb: 48 89 c5 mov %rax,%rbp 0.00 : 4618fe: e8 bd 4a fb ff callq 4163c0 0.00 : 461903: 81 65 28 ff ef ff ff andl $0xffffefff,0x28(%rbp) 0.00 : 46190a: 48 8b bc 24 08 01 00 mov 0x108(%rsp),%rdi 0.00 : 461911: 00 0.00 : 461912: e8 a9 4a fb ff callq 4163c0 0.00 : 461917: e9 2d f1 ff ff jmpq 460a49 0.00 : 46191c: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 461921: 48 8d 94 24 00 01 00 lea 0x100(%rsp),%rdx 0.00 : 461928: 00 0.00 : 461929: 48 8d bc 24 08 01 00 lea 0x108(%rsp),%rdi 0.00 : 461930: 00 0.00 : 461931: e8 9a 9b fd ff callq 43b4d0 0.00 : 461936: 48 89 c3 mov %rax,%rbx 0.00 : 461939: 48 8b 84 24 08 01 00 mov 0x108(%rsp),%rax 0.00 : 461940: 00 0.00 : 461941: 80 38 00 cmpb $0x0,(%rax) 0.00 : 461944: 75 29 jne 46196f 0.00 : 461946: 48 89 9c 24 08 01 00 mov %rbx,0x108(%rsp) 0.00 : 46194d: 00 0.00 : 46194e: 49 89 dc mov %rbx,%r12 0.00 : 461951: e9 72 fe ff ff jmpq 4617c8 0.00 : 461956: 48 8b b4 24 08 01 00 mov 0x108(%rsp),%rsi 0.00 : 46195d: 00 0.00 : 46195e: 31 d2 xor %edx,%edx 0.00 : 461960: bf 52 74 47 00 mov $0x477452,%edi 0.00 : 461965: e8 d6 c2 fc ff callq 42dc40 0.00 : 46196a: 48 89 c5 mov %rax,%rbp 0.00 : 46196d: eb 94 jmp 461903 0.00 : 46196f: 8b 54 24 0c mov 0xc(%rsp),%edx 0.00 : 461973: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 461978: 48 89 ef mov %rbp,%rdi 0.00 : 46197b: 49 89 dc mov %rbx,%r12 0.00 : 46197e: e8 5d 68 fd ff callq 4381e0 0.00 : 461983: 48 89 84 24 08 01 00 mov %rax,0x108(%rsp) 0.00 : 46198a: 00 0.00 : 46198b: e9 38 fe ff ff jmpq 4617c8 0.00 : 461990: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 461997: 00 0.00 : 461998: e9 85 f3 ff ff jmpq 460d22 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000034250 : ??:0 11.11 : 34250: 41 57 push %r15 11.11 : 34252: 49 89 cf mov %rcx,%r15 0.00 : 34255: 41 56 push %r14 0.00 : 34257: 4d 89 c6 mov %r8,%r14 0.00 : 3425a: 41 55 push %r13 0.00 : 3425c: 45 31 ed xor %r13d,%r13d 0.00 : 3425f: 41 54 push %r12 0.00 : 34261: 49 89 d4 mov %rdx,%r12 0.00 : 34264: 55 push %rbp 0.00 : 34265: 53 push %rbx 0.00 : 34266: 48 83 ec 18 sub $0x18,%rsp 0.00 : 3426a: 4d 39 e5 cmp %r12,%r13 0.00 : 3426d: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : 34272: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 34277: 72 0f jb 34288 0.00 : 34279: eb 45 jmp 342c0 0.00 : 3427b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 11.11 : 34280: 4c 39 eb cmp %r13,%rbx 0.00 : 34283: 49 89 dc mov %rbx,%r12 0.00 : 34286: 76 38 jbe 342c0 0.00 : 34288: 4b 8d 1c 2c lea (%r12,%r13,1),%rbx 11.11 : 3428c: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 11.11 : 34291: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 34296: 48 d1 eb shr %rbx 0.00 : 34299: 48 89 d8 mov %rbx,%rax 0.00 : 3429c: 49 0f af c7 imul %r15,%rax 11.11 : 342a0: 48 01 c5 add %rax,%rbp 0.00 : 342a3: 48 89 ee mov %rbp,%rsi 11.11 : 342a6: 41 ff d6 callq *%r14 0.00 : 342a9: 83 f8 00 cmp $0x0,%eax 0.00 : 342ac: 7c d2 jl 34280 0.00 : 342ae: 74 12 je 342c2 0.00 : 342b0: 4c 8d 6b 01 lea 0x1(%rbx),%r13 0.00 : 342b4: 4d 39 e5 cmp %r12,%r13 0.00 : 342b7: 72 cf jb 34288 11.11 : 342b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 342c0: 31 ed xor %ebp,%ebp 0.00 : 342c2: 48 83 c4 18 add $0x18,%rsp 0.00 : 342c6: 48 89 e8 mov %rbp,%rax 0.00 : 342c9: 5b pop %rbx 0.00 : 342ca: 5d pop %rbp 11.11 : 342cb: 41 5c pop %r12 0.00 : 342cd: 41 5d pop %r13 0.00 : 342cf: 41 5e pop %r14 0.00 : 342d1: 41 5f pop %r15 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000845b0 <__strcasecmp>: 0.00 : 845b0: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 845b7: 00 00 0.00 : 845b9: 48 8b 15 c8 d7 2e 00 mov 0x2ed7c8(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : 845c0: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 845c4: 31 c0 xor %eax,%eax 0.00 : 845c6: 48 39 f7 cmp %rsi,%rdi 0.00 : 845c9: 74 2d je 845f8 <__strcasecmp+0x48> 0.00 : 845cb: 4c 8b 42 70 mov 0x70(%rdx),%r8 12.50 : 845cf: 31 c9 xor %ecx,%ecx 0.00 : 845d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 845d8: 44 0f b6 0c 0f movzbl (%rdi,%rcx,1),%r9d 25.00 : 845dd: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 12.50 : 845e1: 41 0f b6 c1 movzbl %r9b,%eax 0.00 : 845e5: 41 8b 04 80 mov (%r8,%rax,4),%eax 12.50 : 845e9: 41 2b 04 90 sub (%r8,%rdx,4),%eax 0.00 : 845ed: 75 09 jne 845f8 <__strcasecmp+0x48> 12.50 : 845ef: 48 83 c1 01 add $0x1,%rcx 0.00 : 845f3: 45 84 c9 test %r9b,%r9b 0.00 : 845f6: 75 e0 jne 845d8 <__strcasecmp+0x28> 25.00 : 845f8: f3 c3 repz retq Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000172f0 : ??:0 12.50 : 172f0: 48 83 fa 20 cmp $0x20,%rdx 25.00 : 172f4: 48 89 f8 mov %rdi,%rax 0.00 : 172f7: 73 77 jae 17370 0.00 : 172f9: f6 c2 01 test $0x1,%dl 0.00 : 172fc: 74 0b je 17309 0.00 : 172fe: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 17301: 88 0f mov %cl,(%rdi) 12.50 : 17303: 48 ff c6 inc %rsi 0.00 : 17306: 48 ff c7 inc %rdi 0.00 : 17309: f6 c2 02 test $0x2,%dl 0.00 : 1730c: 74 12 je 17320 0.00 : 1730e: 0f b7 0e movzwl (%rsi),%ecx 0.00 : 17311: 66 89 0f mov %cx,(%rdi) 0.00 : 17314: 48 83 c6 02 add $0x2,%rsi 0.00 : 17318: 48 83 c7 02 add $0x2,%rdi 0.00 : 1731c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 17320: f6 c2 04 test $0x4,%dl 0.00 : 17323: 74 0c je 17331 12.50 : 17325: 8b 0e mov (%rsi),%ecx 12.50 : 17327: 89 0f mov %ecx,(%rdi) 0.00 : 17329: 48 83 c6 04 add $0x4,%rsi 0.00 : 1732d: 48 83 c7 04 add $0x4,%rdi 0.00 : 17331: f6 c2 08 test $0x8,%dl 0.00 : 17334: 74 0e je 17344 0.00 : 17336: 48 8b 0e mov (%rsi),%rcx 0.00 : 17339: 48 89 0f mov %rcx,(%rdi) 0.00 : 1733c: 48 83 c6 08 add $0x8,%rsi 0.00 : 17340: 48 83 c7 08 add $0x8,%rdi 12.50 : 17344: 81 e2 f0 00 00 00 and $0xf0,%edx 0.00 : 1734a: 74 1f je 1736b 0.00 : 1734c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 17350: 48 8b 0e mov (%rsi),%rcx 0.00 : 17353: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 17357: 48 89 0f mov %rcx,(%rdi) 0.00 : 1735a: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 1735e: 83 ea 10 sub $0x10,%edx 0.00 : 17361: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.00 : 17365: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 17369: 75 e5 jne 17350 0.00 : 1736b: f3 c3 repz retq 0.00 : 1736d: 0f 1f 00 nopl (%rax) 0.00 : 17370: 48 89 44 24 f8 mov %rax,-0x8(%rsp) 0.00 : 17375: 89 f1 mov %esi,%ecx 0.00 : 17377: 83 e1 07 and $0x7,%ecx 0.00 : 1737a: 74 34 je 173b0 0.00 : 1737c: 48 8d 54 11 f8 lea -0x8(%rcx,%rdx,1),%rdx 0.00 : 17381: 83 e9 08 sub $0x8,%ecx 0.00 : 17384: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1738b: 00 00 00 00 00 0.00 : 17390: 0f b6 06 movzbl (%rsi),%eax 0.00 : 17393: 88 07 mov %al,(%rdi) 0.00 : 17395: ff c1 inc %ecx 0.00 : 17397: 48 8d 76 01 lea 0x1(%rsi),%rsi 0.00 : 1739b: 48 8d 7f 01 lea 0x1(%rdi),%rdi 0.00 : 1739f: 75 ef jne 17390 0.00 : 173a1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 173a8: 0f 1f 84 00 00 00 00 0.00 : 173af: 00 0.00 : 173b0: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 173b7: 77 77 ja 17430 0.00 : 173b9: 89 d1 mov %edx,%ecx 0.00 : 173bb: c1 e9 05 shr $0x5,%ecx 0.00 : 173be: 74 60 je 17420 0.00 : 173c0: ff c9 dec %ecx 0.00 : 173c2: 48 8b 06 mov (%rsi),%rax 0.00 : 173c5: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 173c9: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 173cd: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 173d1: 48 89 07 mov %rax,(%rdi) 0.00 : 173d4: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 173d8: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 173dc: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 173e0: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 173e4: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 173e8: 74 36 je 17420 0.00 : 173ea: ff c9 dec %ecx 0.00 : 173ec: 48 8b 06 mov (%rsi),%rax 0.00 : 173ef: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 173f3: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 173f7: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 173fb: 48 89 07 mov %rax,(%rdi) 0.00 : 173fe: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 17402: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 17406: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 1740a: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 1740e: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 17412: 75 ac jne 173c0 0.00 : 17414: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1741b: 00 00 00 00 00 0.00 : 17420: 83 e2 1f and $0x1f,%edx 0.00 : 17423: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 17428: 0f 85 cb fe ff ff jne 172f9 0.00 : 1742e: f3 c3 repz retq 0.00 : 17430: 48 89 d1 mov %rdx,%rcx 0.00 : 17433: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 17437: 74 07 je 17440 12.50 : 17439: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 1743c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 17440: 83 e2 07 and $0x7,%edx 0.00 : 17443: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 17448: 0f 85 ab fe ff ff jne 172f9 0.00 : 1744e: f3 c3 repz retq Sorted summary for file /bin/bash ---------------------------------------------- 60.00 ??:0 20.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000422ff0 : 0.00 : 422ff0: 48 83 ec 08 sub $0x8,%rsp 10.00 : 422ff4: 8b 05 42 18 27 00 mov 0x271842(%rip),%eax # 69483c 10.00 : 422ffa: 85 c0 test %eax,%eax 0.00 : 422ffc: 7e 32 jle 423030 0.00 : 422ffe: 48 8b 15 2b 18 27 00 mov 0x27182b(%rip),%rdx # 694830 0.00 : 423005: 83 e8 01 sub $0x1,%eax 0.00 : 423008: 89 05 2e 18 27 00 mov %eax,0x27182e(%rip) # 69483c 0.00 : 42300e: 48 98 cltq 0.00 : 423010: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 60.00 : 423014: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) 20.00 : 42301b: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 423022: 48 83 c4 08 add $0x8,%rsp 0.00 : 423026: c3 retq 0.00 : 423027: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42302e: 00 00 0.00 : 423030: bf 10 00 00 00 mov $0x10,%edi 0.00 : 423035: e8 86 52 03 00 callq 4582c0 0.00 : 42303a: eb d8 jmp 423014 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:384 23.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:406 15.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:384 15.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:384 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:401 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/sortsupport.h:134 7.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:436 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c1b90 : : * MJEvalOuterValues and MJEvalInnerValues must already have been called : * for the current outer and inner tuples, respectively. : */ : static int : MJCompare(MergeJoinState *mergestate) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:384 15.38 : 5c1b90: 55 push %rbp 0.00 : 5c1b91: 48 89 e5 mov %rsp,%rbp 0.00 : 5c1b94: 41 57 push %r15 15.38 : 5c1b96: 41 56 push %r14 0.00 : 5c1b98: 41 55 push %r13 0.00 : 5c1b9a: 49 89 fd mov %rdi,%r13 0.00 : 5c1b9d: 41 54 push %r12 23.08 : 5c1b9f: 53 push %rbx 0.00 : 5c1ba0: 48 83 ec 08 sub $0x8,%rsp : int result = 0; : bool nulleqnull = false; : ExprContext *econtext = mergestate->js.ps.ps_ExprContext; 0.00 : 5c1ba4: 48 8b 5f 60 mov 0x60(%rdi),%rbx : : /* : * Call the comparison functions in short-lived context, in case they leak : * memory. : */ : ResetExprContext(econtext); 0.00 : 5c1ba8: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5c1bac: e8 ff 6d 1d 00 callq 7989b0 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5c1bb1: 48 8b 43 28 mov 0x28(%rbx),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5c1bb5: 4c 8b 3d a4 8c 5f 00 mov 0x5f8ca4(%rip),%r15 # bba860 : : CurrentMemoryContext = context; 0.00 : 5c1bbc: 48 89 05 9d 8c 5f 00 mov %rax,0x5f8c9d(%rip) # bba860 : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (i = 0; i < mergestate->mj_NumClauses; i++) 0.00 : 5c1bc3: 41 8b 85 88 00 00 00 mov 0x88(%r13),%eax 0.00 : 5c1bca: 85 c0 test %eax,%eax 0.00 : 5c1bcc: 0f 8e 87 00 00 00 jle 5c1c59 0.00 : 5c1bd2: 31 d2 xor %edx,%edx 0.00 : 5c1bd4: 45 31 f6 xor %r14d,%r14d 0.00 : 5c1bd7: 45 31 e4 xor %r12d,%r12d 0.00 : 5c1bda: eb 21 jmp 5c1bfd 0.00 : 5c1bdc: 0f 1f 40 00 nopl 0x0(%rax) : MergeJoinClause clause = &mergestate->mj_Clauses[i]; : : /* : * Special case for NULL-vs-NULL, else use standard comparison. : */ : if (clause->lisnull && clause->risnull) 0.00 : 5c1be0: 80 7b 21 00 cmpb $0x0,0x21(%rbx) 0.00 : 5c1be4: 0f 84 86 00 00 00 je 5c1c70 0.00 : 5c1bea: 41 be 01 00 00 00 mov $0x1,%r14d : */ : ResetExprContext(econtext); : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : for (i = 0; i < mergestate->mj_NumClauses; i++) 0.00 : 5c1bf0: 41 83 c4 01 add $0x1,%r12d 0.00 : 5c1bf4: 45 39 a5 88 00 00 00 cmp %r12d,0x88(%r13) 0.00 : 5c1bfb: 7e 53 jle 5c1c50 : { : MergeJoinClause clause = &mergestate->mj_Clauses[i]; 0.00 : 5c1bfd: 49 63 c4 movslq %r12d,%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:401 7.69 : 5c1c00: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 5c1c04: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 5c1c0b: 00 0.00 : 5c1c0c: 49 03 9d 90 00 00 00 add 0x90(%r13),%rbx : : /* : * Special case for NULL-vs-NULL, else use standard comparison. : */ : if (clause->lisnull && clause->risnull) 0.00 : 5c1c13: 80 7b 20 00 cmpb $0x0,0x20(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:406 23.08 : 5c1c17: 75 c7 jne 5c1be0 : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/sortsupport.h:134 7.69 : 5c1c19: 80 7b 21 00 cmpb $0x0,0x21(%rbx) : { : nulleqnull = true; /* NULL "=" NULL */ : continue; : } : : result = ApplySortComparator(clause->ldatum, clause->lisnull, 0.00 : 5c1c1d: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 5c1c21: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5c1c25: 74 61 je 5c1c88 : { : if (ssup->ssup_nulls_first) 0.00 : 5c1c27: 80 7b 35 00 cmpb $0x0,0x35(%rbx) 0.00 : 5c1c2b: 75 3b jne 5c1c68 : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 5c1c2d: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 5c1c32: 4c 89 3d 27 8c 5f 00 mov %r15,0x5f8c27(%rip) # bba860 : result = 1; : : MemoryContextSwitchTo(oldContext); : : return result; : } 0.00 : 5c1c39: 48 83 c4 08 add $0x8,%rsp 0.00 : 5c1c3d: 89 d0 mov %edx,%eax 0.00 : 5c1c3f: 5b pop %rbx 0.00 : 5c1c40: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeMergejoin.c:436 7.69 : 5c1c42: 41 5d pop %r13 0.00 : 5c1c44: 41 5e pop %r14 0.00 : 5c1c46: 41 5f pop %r15 0.00 : 5c1c48: c9 leaveq 0.00 : 5c1c49: c3 retq 0.00 : 5c1c4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * Likewise, if there was a constant-false joinqual, do not report : * equality. We have to check this as part of the mergequals, else the : * rescan logic will do the wrong thing. : */ : if (result == 0 && 0.00 : 5c1c50: 85 d2 test %edx,%edx 0.00 : 5c1c52: 75 de jne 5c1c32 0.00 : 5c1c54: 45 84 f6 test %r14b,%r14b 0.00 : 5c1c57: 75 0f jne 5c1c68 0.00 : 5c1c59: 31 d2 xor %edx,%edx 0.00 : 5c1c5b: 41 80 bd 9d 00 00 00 cmpb $0x0,0x9d(%r13) 0.00 : 5c1c62: 00 0.00 : 5c1c63: 74 cd je 5c1c32 0.00 : 5c1c65: 0f 1f 00 nopl (%rax) 0.00 : 5c1c68: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5c1c6d: eb c3 jmp 5c1c32 0.00 : 5c1c6f: 90 nop 0.00 : 5c1c70: 80 7b 35 00 cmpb $0x0,0x35(%rbx) 0.00 : 5c1c74: 75 b7 jne 5c1c2d 0.00 : 5c1c76: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5c1c7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5c1c80: eb b0 jmp 5c1c32 0.00 : 5c1c82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 5c1c88: 48 8d 53 28 lea 0x28(%rbx),%rdx 0.00 : 5c1c8c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5c1c90: ff 53 40 callq *0x40(%rbx) 0.00 : 5c1c93: 89 c2 mov %eax,%edx : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 5c1c95: f7 d8 neg %eax 0.00 : 5c1c97: 80 7b 34 00 cmpb $0x0,0x34(%rbx) 0.00 : 5c1c9b: 0f 45 d0 cmovne %eax,%edx : : result = ApplySortComparator(clause->ldatum, clause->lisnull, : clause->rdatum, clause->risnull, : &clause->ssup); : : if (result != 0) 0.00 : 5c1c9e: 85 d2 test %edx,%edx 0.00 : 5c1ca0: 0f 84 4a ff ff ff je 5c1bf0 0.00 : 5c1ca6: eb 8a jmp 5c1c32 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 75.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001d50 : ??:0 75.00 : 1d50: 41 56 push %r14 0.00 : 1d82: 41 55 41 mov (%rsi),%rax 0.00 : 1d85: 54 49 89 fc 55 test $0x100000,%eax 0.00 : 1d8a: 53 f6 jne 1d80 0.00 : 1d8c: 47 14 04 48 8b lock btsl $0x14,(%rsi) 0.00 : 1d91: 17 48 sbb %eax,%eax 0.00 : 1d93: 8b 6e test %eax,%eax 0.00 : 1d95: 40 4c jne 1d80 0.00 : 1d97: 8b 32 75 mov 0x10(%rbp),%eax 0.00 : 1d9a: 5d 41 test %eax,%eax 0.00 : 1d9c: f6 06 je 1dd3 0.00 : 1d9e: 02 75 57 f0 cmp %rdx,0x28(%rbp) 0.00 : 1da2: 0f ba je 1e1e 0.00 : 1da4: 2e 14 19 c0 lea 0x2(%rsi),%r13 0.00 : 1da8: 85 c0 74 1b 0f lock orb $0x8,0x2(%rsi) 0.00 : 1dad: 1f 40 00 f3 mov 0x28(%rbp),%rax 0.00 : 1db1: 90 48 8b cmp %rdx,%rax 0.00 : 1db4: 06 a9 je 1ded 0.00 : 1db6: 00 00 10 00 cmp 0x58(%r14),%rax 0.00 : 1dba: 75 f4 jne 1e38 0.00 : 1dbc: f0 0f ba 2e cmp %rdx,0x30(%rbp) 0.00 : 1dc0: 14 19 jne 1e40 0.00 : 1dc2: c0 85 c0 75 e9 8b lock andb $0xef,0x0(%r13) 0.00 : 1dc8: 45 pop %rbx 0.00 : 1dc9: 10 pop %rbp 0.00 : 1dca: 85 c0 pop %r12 0.00 : 1dcc: 74 35 pop %r13 0.00 : 1dce: 48 39 xor %eax,%eax 0.00 : 1dd0: 55 28 pop %r14 0.00 : 1dd2: 74 retq 0.00 : 1dd3: 7a 4c 8d 6e 02 f0 80 movl $0x1,0x10(%rbp) 0.00 : 1dda: 4e 02 08 48 8b mov 0x8(%r12),%eax 0.00 : 1ddf: 45 28 test %eax,%eax 0.00 : 1de1: 48 39 jle 1e48 0.00 : 1de3: d0 74 37 sub $0x1,%eax 0.00 : 1de6: 49 3b 46 58 75 mov %eax,0x8(%r12) 0.00 : 1deb: 7c 48 jmp 1d9e 0.00 : 1ded: 39 55 30 75 7e cmpq $0x0,0x18(%rbp) 0.00 : 1df2: f0 41 jne 1e44 0.00 : 1df4: 80 65 00 ef 5b 5d 41 lea 0x14c(%r14),%rbx 0.00 : 1dfb: 5c 41 5d mov %rbx,%rdi 0.00 : 1dfe: 31 c0 41 5e c3 callq 1e03 0.00 : 1e03: c7 45 10 01 mov (%r12),%rsi 0.00 : 1e07: 00 00 00 41 8b mov $0x2,%edx 0.00 : 1e0c: 44 24 08 mov %rbp,%rdi 0.00 : 1e0f: 85 c0 7e 65 83 callq 1e14 0.00 : 1e14: e8 01 41 89 44 24 08 incw 0x14c(%r14) 0.00 : 1e1b: eb 0.00 : 1e1c: b1 48 jmp 1dc2 25.00 : 1e1e: 83 7d 18 00 cmpl $0x2,0xc(%rbp) 0.00 : 1e22: 75 50 jne 1da4 0.00 : 1e24: 49 8d 9e 4c cmp 0x50(%r14),%rdx 0.00 : 1e28: 01 00 00 48 lea 0x2(%rsi),%r13 0.00 : 1e2c: 89 df je 1dc2 0.00 : 1e2e: e8 00 ud2 0.00 : 1e30: 00 00 jmp 1e30 0.00 : 1e32: 00 49 8b 34 24 ba nopw 0x0(%rax,%rax,1) 0.00 : 1e38: 02 00 ud2 0.00 : 1e3a: 00 00 jmp 1e3a 0.00 : 1e3c: 48 89 ef e8 nopl 0x0(%rax) 0.00 : 1e40: 00 00 ud2 0.00 : 1e42: 00 00 jmp 1e42 0.00 : 1e44: 66 41 ud2 0.00 : 1e46: ff 86 jmp 1e46 0.00 : 1e48: 4c 01 ud2 0.00 : 1e4a: 00 00 jmp 1e4a : 1e4c: eb a4 83 7d nopl 0x0(%rax) : 1e50: 0c 02 push %r15 : 1e52: 75 80 push %r14 : 1e54: 49 3b push %r13 : 1e56: 56 50 push %r12 : 1e58: 4c 8d 6e mov %rdi,%r12 : 1e5b: 02 push %rbp : 1e5c: 74 push %rbx : 1e5d: 94 0f 0b mov %rsi,%rbx : 1e60: eb fe 66 0f sub $0x18,%rsp : 1e64: 1f 44 00 00 testb $0x4,0x14(%rdi) : 1e68: 0f 0b eb mov (%rdi),%rax : 1e6b: fe 0f 1f mov (%rax),%r14 : 1e6e: 40 00 0f 0b eb fe jne 1f40 : 1e74: 0f 0b eb fe testb $0x2,(%r14) : 1e78: 0f 0b eb fe 0f 1f jne 1f40 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000082a0 : 0.00 : 82a0: 41 56 push %r14 ??:0 20.00 : 82d2: 45 31 f6 test $0x40,%ah 0.00 : 82d5: 41 55 jne 8320 0.00 : 82d7: 41 bd 0e 00 mov (%r12),%eax 0.00 : 82db: 00 00 test %eax,%eax 0.00 : 82dd: 41 54 4c 8d 67 60 jle 83d6 0.00 : 82e3: 55 48 8d test %rdx,%rdx 0.00 : 82e6: 6f 02 jne 8350 0.00 : 82e8: 53 48 89 fb eb lock andb $0xdf,0x0(%rbp) 0.00 : 82ed: 2f 66 90 mov (%rbx),%rax 0.00 : 82f0: f0 0f xor %edx,%edx 0.00 : 82f2: ba 2b 15 test $0x40,%ah 0.00 : 82f5: 19 c0 jne 82c0 0.00 : 82f7: 85 c0 0f 85 f3 00 00 mov 0x0(%rip),%rdi # 82fe 0.00 : 82fe: 00 48 8b 03 f6 mov $0x50,%esi 0.00 : 8303: c4 40 75 49 41 callq 8308 0.00 : 8308: 8b 04 24 test %rax,%rax 0.00 : 830b: 85 c0 0f mov %rax,%rdx 0.00 : 830e: 8e f3 je 8370 0.00 : 8310: 00 00 00 mov %rdx,%rdi 0.00 : 8313: 48 85 d2 mov %r13,%rcx 0.00 : 8316: 75 68 f0 mov %r14,%rax 0.00 : 8319: 80 65 00 rep stos %rax,%es:(%rdi) 0.00 : 831c: df 48 jmp 82c0 0.00 : 831e: 8b 03 xchg %ax,%ax 0.00 : 8320: 31 d2 f6 c4 mov 0x40(%rbx),%rdi 0.00 : 8324: 40 75 c9 48 addl $0x1,0x8(%rdi) 60.00 : 8328: 8b 3d 00 00 00 lock andb $0xdf,0x2(%rbx) 20.00 : 832d: 00 be 50 test %rdx,%rdx 0.00 : 8330: 00 00 je 8341 0.00 : 8332: 00 e8 00 00 00 00 48 mov 0x0(%rip),%rdi # 8339 0.00 : 8339: 85 c0 48 mov %rdx,%rsi 0.00 : 833c: 89 c2 74 60 48 callq 8341 0.00 : 8341: 89 d7 4c 89 mov 0x40(%rbx),%rax 0.00 : 8345: e9 pop %rbx 0.00 : 8346: 4c pop %rbp 0.00 : 8347: 89 f0 pop %r12 0.00 : 8349: f3 48 pop %r13 0.00 : 834b: ab eb pop %r14 0.00 : 834d: a2 retq 0.00 : 834e: 66 90 xchg %ax,%ax 0.00 : 8350: 48 8b 7b 40 lea 0x1(%rbx),%rax 0.00 : 8354: 83 47 08 01 f0 lock orb $0x40,0x1(%rbx) 0.00 : 8359: 80 63 02 df mov %rdx,0x40(%rbx) 0.00 : 835d: 48 85 d2 mov %rbx,(%rdx) 0.00 : 8360: 74 0f 48 8b lock incl 0x60(%rbx) 0.00 : 8364: 3d 00 00 mov %rdx,%rdi 0.00 : 8367: 00 00 xor %edx,%edx 0.00 : 8369: 48 89 jmp 8324 0.00 : 836b: d6 e8 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8370: 00 48 8b 43 40 5b 5d mov $0x0,%rsi 0.00 : 8377: 41 5c 41 5d 41 5e c3 mov $0x0,%rdi 0.00 : 837e: 66 90 48 8d 43 callq 8383 0.00 : 8383: 01 f0 test %eax,%eax 0.00 : 8385: 80 4b jne 83f0 0.00 : 8387: 01 40 48 89 53 40 48 nopw 0x0(%rax,%rax,1) 0.00 : 838e: 89 1a 0.00 : 8390: f0 ff 43 60 48 callq 8395 0.00 : 8395: 89 d7 31 d2 eb b9 0f mov 0x0(%rip),%rdi # 839c 0.00 : 839c: 1f 44 00 00 48 mov $0x50,%esi 0.00 : 83a1: c7 c6 00 00 00 callq 83a6 0.00 : 83a6: 00 48 c7 test %rax,%rax 0.00 : 83a9: c7 00 00 mov %rax,%rdx 0.00 : 83ac: 00 00 je 8390 0.00 : 83ae: e8 00 00 00 00 jmpq 8310 0.00 : 83b3: 85 c0 75 69 66 lock btsl $0x15,(%rbx) 0.00 : 83b8: 0f 1f sbb %eax,%eax 0.00 : 83ba: 84 00 test %eax,%eax 0.00 : 83bc: 00 00 00 00 e8 00 je 82cf 0.00 : 83c2: 00 00 00 48 8b 3d nopw 0x0(%rax,%rax,1) 0.00 : 83c8: 00 00 pause 0.00 : 83ca: 00 00 be mov (%rbx),%rax 0.00 : 83cd: 50 00 00 00 e8 test $0x200000,%eax 0.00 : 83d2: 00 00 jne 83c8 0.00 : 83d4: 00 00 jmp 83b3 0.00 : 83d6: 48 85 c0 48 mov 0x10(%rbx),%rax 0.00 : 83da: 89 c2 74 test %rax,%rax 0.00 : 83dd: e2 e9 je 83ea 0.00 : 83df: 5d ff ff ff f0 cmpq $0x0,0x18(%rax) 0.00 : 83e4: 0f ba 2b 15 19 c0 jne 82e3 0.00 : 83ea: 85 c0 ud2 0.00 : 83ec: 0f 84 jmp 83ec 0.00 : 83ee: 0d ff xchg %ax,%ax 0.00 : 83f0: ff ff 66 0f 1f 44 00 mov $0x0,%rsi 0.00 : 83f7: 00 f3 90 48 8b 03 a9 mov $0x0,%rdi 0.00 : 83fe: 00 00 xor %eax,%eax 0.00 : 8400: 20 00 75 f4 eb callq 8405 0.00 : 8405: dd 48 jmp 8390 : 8407: 8b 43 10 48 85 c0 74 nopw 0x0(%rax,%rax,1) : 840e: 0b 48 : 8410: 83 78 18 00 sub $0x28,%rsp : 8414: 0f 85 f9 fe ff lea 0x14(%rsp),%rsi : 8419: ff 0f 0b eb fe mov %rbx,0x18(%rsp) : 841e: 66 90 48 c7 c6 mov %rbp,0x20(%rsp) : 8423: 00 00 00 mov %rdi,%rbx : 8426: 00 48 c7 c7 00 callq 842b : 842b: 00 00 test %eax,%eax : 842d: 00 31 je 8440 : 842f: c0 e8 xor %eax,%eax : 8431: 00 00 00 00 eb mov 0x18(%rsp),%rbx Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000018f50 : : : "=q" (val) : : "0" (val)); : # endif : : #else /* __i386__ */ : asm("bswapl %0" 0.00 : 18f50: 0f cf bswap %edi : : /* low dword is word swapped version of common */ : lo_hash_dword = (hi_hash_dword >> 16) | (hi_hash_dword << 16); : : /* apply flow ID/VM pool/VLAN ID bits to hash words */ : hi_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan >> 16); ??:0 25.00 : 18f52: 89 f9 mov %edi,%ecx : /* : * apply flow ID/VM pool/VLAN ID bits to lo hash dword, we had to : * delay this because bit 0 of the stream should not be processed : * so we do not add the vlan until after bit 0 was processed : */ : lo_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan << 16); 0.00 : 18f54: 41 89 f8 mov %edi,%r8d : : /* low dword is word swapped version of common */ : lo_hash_dword = (hi_hash_dword >> 16) | (hi_hash_dword << 16); : : /* apply flow ID/VM pool/VLAN ID bits to hash words */ : hi_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan >> 16); 0.00 : 18f57: c1 e9 10 shr $0x10,%ecx : /* : * apply flow ID/VM pool/VLAN ID bits to lo hash dword, we had to : * delay this because bit 0 of the stream should not be processed : * so we do not add the vlan until after bit 0 was processed : */ : lo_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan << 16); 0.00 : 18f5a: 41 c1 e0 10 shl $0x10,%r8d 0.00 : 18f5e: 0f ce bswap %esi : : /* low dword is word swapped version of common */ : lo_hash_dword = (hi_hash_dword >> 16) | (hi_hash_dword << 16); : : /* apply flow ID/VM pool/VLAN ID bits to hash words */ : hi_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan >> 16); 0.00 : 18f60: 31 f9 xor %edi,%ecx : : /* generate common hash dword */ : hi_hash_dword = IXGBE_NTOHL(common.dword); : : /* low dword is word swapped version of common */ : lo_hash_dword = (hi_hash_dword >> 16) | (hi_hash_dword << 16); 0.00 : 18f62: 89 f0 mov %esi,%eax : /* : * apply flow ID/VM pool/VLAN ID bits to lo hash dword, we had to : * delay this because bit 0 of the stream should not be processed : * so we do not add the vlan until after bit 0 was processed : */ : lo_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan << 16); 0.00 : 18f64: 41 31 f8 xor %edi,%r8d : : /* low dword is word swapped version of common */ : lo_hash_dword = (hi_hash_dword >> 16) | (hi_hash_dword << 16); : : /* apply flow ID/VM pool/VLAN ID bits to hash words */ : hi_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan >> 16); 0.00 : 18f67: 31 f1 xor %esi,%ecx : : /* generate common hash dword */ : hi_hash_dword = IXGBE_NTOHL(common.dword); : : /* low dword is word swapped version of common */ : lo_hash_dword = (hi_hash_dword >> 16) | (hi_hash_dword << 16); 0.00 : 18f69: c1 c8 10 ror $0x10,%eax : /* : * apply flow ID/VM pool/VLAN ID bits to lo hash dword, we had to : * delay this because bit 0 of the stream should not be processed : * so we do not add the vlan until after bit 0 was processed : */ : lo_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan << 16); 0.00 : 18f6c: 41 31 c0 xor %eax,%r8d : : /* Process remaining 30 bit of the key */ : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); 0.00 : 18f6f: 89 ce mov %ecx,%esi 0.00 : 18f71: 89 c8 mov %ecx,%eax 0.00 : 18f73: c1 e8 03 shr $0x3,%eax 0.00 : 18f76: c1 ee 02 shr $0x2,%esi : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); 0.00 : 18f79: 89 ca mov %ecx,%edx : */ : lo_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan << 16); : : /* Process remaining 30 bit of the key */ : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); 0.00 : 18f7b: 31 c6 xor %eax,%esi : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); : IXGBE_COMPUTE_SIG_HASH_ITERATION(6); : IXGBE_COMPUTE_SIG_HASH_ITERATION(7); : IXGBE_COMPUTE_SIG_HASH_ITERATION(8); 0.00 : 18f7d: 89 c8 mov %ecx,%eax : /* Process remaining 30 bit of the key */ : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); 25.00 : 18f7f: c1 ea 07 shr $0x7,%edx : lo_hash_dword ^= flow_vm_vlan ^ (flow_vm_vlan << 16); : : /* Process remaining 30 bit of the key */ : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); 0.00 : 18f82: 31 ce xor %ecx,%esi : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); : IXGBE_COMPUTE_SIG_HASH_ITERATION(6); : IXGBE_COMPUTE_SIG_HASH_ITERATION(7); : IXGBE_COMPUTE_SIG_HASH_ITERATION(8); 0.00 : 18f84: c1 e8 08 shr $0x8,%eax 0.00 : 18f87: 31 c6 xor %eax,%esi : IXGBE_COMPUTE_SIG_HASH_ITERATION(9); : IXGBE_COMPUTE_SIG_HASH_ITERATION(10); 0.00 : 18f89: 89 c8 mov %ecx,%eax 0.00 : 18f8b: c1 e8 0a shr $0xa,%eax 0.00 : 18f8e: 31 c6 xor %eax,%esi 0.00 : 18f90: 89 c8 mov %ecx,%eax 0.00 : 18f92: c1 e8 0c shr $0xc,%eax 0.00 : 18f95: 31 c6 xor %eax,%esi : IXGBE_COMPUTE_SIG_HASH_ITERATION(11); : IXGBE_COMPUTE_SIG_HASH_ITERATION(12); 0.00 : 18f97: 44 89 c0 mov %r8d,%eax 0.00 : 18f9a: c1 e8 0a shr $0xa,%eax 0.00 : 18f9d: 31 c6 xor %eax,%esi 0.00 : 18f9f: 44 89 c0 mov %r8d,%eax 0.00 : 18fa2: c1 e8 0c shr $0xc,%eax 0.00 : 18fa5: 31 c6 xor %eax,%esi : /* Process remaining 30 bit of the key */ : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); 0.00 : 18fa7: 89 c8 mov %ecx,%eax 0.00 : 18fa9: c1 e8 05 shr $0x5,%eax 0.00 : 18fac: 31 c2 xor %eax,%edx 0.00 : 18fae: 89 c8 mov %ecx,%eax 0.00 : 18fb0: c1 e8 0b shr $0xb,%eax 0.00 : 18fb3: 31 c2 xor %eax,%edx : IXGBE_COMPUTE_SIG_HASH_ITERATION(6); 0.00 : 18fb5: 89 c8 mov %ecx,%eax 0.00 : 18fb7: c1 e8 0d shr $0xd,%eax 0.00 : 18fba: 31 c2 xor %eax,%edx : IXGBE_COMPUTE_SIG_HASH_ITERATION(7); 0.00 : 18fbc: 44 89 c0 mov %r8d,%eax 50.00 : 18fbf: d1 e8 shr %eax 0.00 : 18fc1: 31 c2 xor %eax,%edx 0.00 : 18fc3: 44 89 c0 mov %r8d,%eax 0.00 : 18fc6: c1 e8 05 shr $0x5,%eax 0.00 : 18fc9: 31 c2 xor %eax,%edx : IXGBE_COMPUTE_SIG_HASH_ITERATION(8); : IXGBE_COMPUTE_SIG_HASH_ITERATION(9); : IXGBE_COMPUTE_SIG_HASH_ITERATION(10); : IXGBE_COMPUTE_SIG_HASH_ITERATION(11); 0.00 : 18fcb: 44 89 c0 mov %r8d,%eax 0.00 : 18fce: c1 e8 06 shr $0x6,%eax 0.00 : 18fd1: 31 c2 xor %eax,%edx : IXGBE_COMPUTE_SIG_HASH_ITERATION(12); : IXGBE_COMPUTE_SIG_HASH_ITERATION(13); 0.00 : 18fd3: 44 89 c0 mov %r8d,%eax 0.00 : 18fd6: c1 e8 07 shr $0x7,%eax 0.00 : 18fd9: 31 c2 xor %eax,%edx : : /* Process remaining 30 bit of the key */ : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); 0.00 : 18fdb: 89 c8 mov %ecx,%eax 0.00 : 18fdd: c1 e1 0a shl $0xa,%ecx 0.00 : 18fe0: c1 e0 07 shl $0x7,%eax : IXGBE_COMPUTE_SIG_HASH_ITERATION(13); : IXGBE_COMPUTE_SIG_HASH_ITERATION(14); : IXGBE_COMPUTE_SIG_HASH_ITERATION(15); : : /* combine common_hash result with signature and bucket hashes */ : bucket_hash ^= common_hash; 0.00 : 18fe3: 31 f2 xor %esi,%edx : bucket_hash &= IXGBE_ATR_HASH_MASK; : : sig_hash ^= common_hash << 16; 0.00 : 18fe5: c1 e6 10 shl $0x10,%esi : : /* Process remaining 30 bit of the key */ : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); 0.00 : 18fe8: 31 c8 xor %ecx,%eax : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); : IXGBE_COMPUTE_SIG_HASH_ITERATION(6); 0.00 : 18fea: 44 89 c1 mov %r8d,%ecx : : /* combine common_hash result with signature and bucket hashes */ : bucket_hash ^= common_hash; : bucket_hash &= IXGBE_ATR_HASH_MASK; : : sig_hash ^= common_hash << 16; 0.00 : 18fed: 81 e2 ff 7f 00 00 and $0x7fff,%edx : IXGBE_COMPUTE_SIG_HASH_ITERATION(1); : IXGBE_COMPUTE_SIG_HASH_ITERATION(2); : IXGBE_COMPUTE_SIG_HASH_ITERATION(3); : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); : IXGBE_COMPUTE_SIG_HASH_ITERATION(6); 0.00 : 18ff3: c1 e1 0e shl $0xe,%ecx 0.00 : 18ff6: 31 c8 xor %ecx,%eax : IXGBE_COMPUTE_SIG_HASH_ITERATION(7); : IXGBE_COMPUTE_SIG_HASH_ITERATION(8); : IXGBE_COMPUTE_SIG_HASH_ITERATION(9); 0.00 : 18ff8: 44 89 c1 mov %r8d,%ecx 0.00 : 18ffb: c1 e1 0c shl $0xc,%ecx 0.00 : 18ffe: 31 c8 xor %ecx,%eax 0.00 : 19000: 44 89 c1 mov %r8d,%ecx : IXGBE_COMPUTE_SIG_HASH_ITERATION(10); : IXGBE_COMPUTE_SIG_HASH_ITERATION(11); : IXGBE_COMPUTE_SIG_HASH_ITERATION(12); : IXGBE_COMPUTE_SIG_HASH_ITERATION(13); 0.00 : 19003: 41 c1 e0 03 shl $0x3,%r8d : IXGBE_COMPUTE_SIG_HASH_ITERATION(4); : IXGBE_COMPUTE_SIG_HASH_ITERATION(5); : IXGBE_COMPUTE_SIG_HASH_ITERATION(6); : IXGBE_COMPUTE_SIG_HASH_ITERATION(7); : IXGBE_COMPUTE_SIG_HASH_ITERATION(8); : IXGBE_COMPUTE_SIG_HASH_ITERATION(9); 0.00 : 19007: c1 e1 07 shl $0x7,%ecx 0.00 : 1900a: 31 c8 xor %ecx,%eax : IXGBE_COMPUTE_SIG_HASH_ITERATION(10); : IXGBE_COMPUTE_SIG_HASH_ITERATION(11); : IXGBE_COMPUTE_SIG_HASH_ITERATION(12); : IXGBE_COMPUTE_SIG_HASH_ITERATION(13); 0.00 : 1900c: 44 31 c0 xor %r8d,%eax : : /* combine common_hash result with signature and bucket hashes */ : bucket_hash ^= common_hash; : bucket_hash &= IXGBE_ATR_HASH_MASK; : : sig_hash ^= common_hash << 16; 0.00 : 1900f: 31 f0 xor %esi,%eax 0.00 : 19011: 25 00 00 ff 7f and $0x7fff0000,%eax 0.00 : 19016: 31 d0 xor %edx,%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/cpufreq/mperf.ko ---------------------------------------------- 46.15 ??:0 38.46 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/cpufreq/mperf.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000000 : ??:0 46.15 : 0: 55 push %rbp 0.00 : 31: b9 01 00 00 mov 0x8(%rsp),%eax 0.00 : 35: 00 48 89 fd 53 89 f3 mov 0x0(,%rax,8),%rsi 0.00 : 3c: 48 0.00 : 3d: c7 c6 00 mov %rdi,%rdx 0.00 : 40: 00 00 00 89 mov (%rsp),%rcx 0.00 : 44: df 48 83 add %rsi,%rdx 0.00 : 47: ec 18 48 89 sub 0x8(%rdx),%r8 46.15 : 4b: e2 e8 00 sub (%rdx),%rcx 7.69 : 4e: 00 00 00 31 shr $0xa,%r8 0.00 : 52: d2 85 c0 test %r8,%r8 0.00 : 55: 75 53 jne 88 0.00 : 57: 89 d8 48 c7 mov (%rsp),%rdx 0.00 : 5b: c7 00 00 mov %rdi,%rax 0.00 : 5e: 00 00 4c 8b mov %rdx,(%rax,%rsi,1) 0.00 : 62: 44 24 08 48 8b mov 0x8(%rsp),%rdx 0.00 : 67: 34 c5 00 00 00 mov %rdx,0x8(%rax,%rsi,1) 0.00 : 6c: 00 48 89 mov 0x18(%rbp),%eax 0.00 : 6f: fa 48 8b 0c imul %rax,%rcx 0.00 : 73: 24 48 01 mov %rcx,%rdx 0.00 : 76: f2 4c 2b 42 shr $0xa,%rdx 0.00 : 7a: 08 48 2b 0a add $0x18,%rsp 0.00 : 7e: 49 c1 mov %edx,%eax 0.00 : 80: e8 pop %rbx 0.00 : 81: 0a pop %rbp 0.00 : 82: 4d retq 0.00 : 83: 85 c0 75 31 48 nopl 0x0(%rax,%rax,1) 0.00 : 88: 8b 14 24 mov %rcx,%rax 0.00 : 8b: 48 89 xor %edx,%edx 0.00 : 8d: f8 48 89 div %r8 0.00 : 90: 14 30 48 mov %rax,%rcx 0.00 : 93: 8b 54 jmp 57 : 95: 24 08 48 89 54 30 08 data32 nopw %cs:0x0(%rax,%rax,1) : 9c: 8b 45 18 48 : a0: 0f af c8 48 sub $0x38,%rsp : a4: 89 ca 48 c1 ea 0a 48 mov 0x0(%rip),%rdx # ab : ab: 83 c4 18 89 d0 5b 5d movabs $0x1000000000000000,%rax : b2: c3 0f 1f : b5: 44 00 00 48 89 mov %rbx,0x18(%rsp) : ba: c8 31 d2 49 f7 mov %rbp,0x20(%rsp) : bf: f0 48 89 mov %rdi,%rbx : c2: c1 eb c2 66 66 mov %r12,0x28(%rsp) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/src/dbt3/src/dbgen/qgen ---------------------------------------------- 50.00 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:464 25.00 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:464 25.00 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:468 Percent | Source code & Disassembly of /home/Computational/mark/src/dbt3/src/dbgen/qgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000402490 : : return (0); : } : : long : dsscasecmp(char *s1, char *s2) : { 0.00 : 402490: 55 push %rbp 0.00 : 402491: 48 89 fd mov %rdi,%rbp 0.00 : 402494: 53 push %rbx 0.00 : 402495: 48 89 f3 mov %rsi,%rbx 0.00 : 402498: 48 83 ec 08 sub $0x8,%rsp 0.00 : 40249c: e8 7f eb ff ff callq 401020 <__ctype_tolower_loc@plt> 0.00 : 4024a1: 31 c9 xor %ecx,%ecx 0.00 : 4024a3: 48 8b 38 mov (%rax),%rdi : for (; tolower(*s1) == tolower(*s2); ++s1, ++s2) /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:464 25.00 : 4024a6: eb 11 jmp 4024b9 0.00 : 4024a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4024af: 00 0.00 : 4024b0: 48 83 c1 01 add $0x1,%rcx : if (*s1 == '\0') 0.00 : 4024b4: 40 84 f6 test %sil,%sil 0.00 : 4024b7: 74 2f je 4024e8 : } : : long : dsscasecmp(char *s1, char *s2) : { : for (; tolower(*s1) == tolower(*s2); ++s1, ++s2) 0.00 : 4024b9: 0f b6 74 0d 00 movzbl 0x0(%rbp,%rcx,1),%esi 0.00 : 4024be: 48 0f be 14 0b movsbq (%rbx,%rcx,1),%rdx 0.00 : 4024c3: 48 0f be c6 movsbq %sil,%rax 0.00 : 4024c7: 8b 14 97 mov (%rdi,%rdx,4),%edx 50.00 : 4024ca: 39 14 87 cmp %edx,(%rdi,%rax,4) 0.00 : 4024cd: 74 e1 je 4024b0 : if (*s1 == '\0') : return (0); : return ((tolower(*s1) < tolower(*s2)) ? -1 : 1); 0.00 : 4024cf: 0f 9d c0 setge %al : } 0.00 : 4024d2: 48 83 c4 08 add $0x8,%rsp : dsscasecmp(char *s1, char *s2) : { : for (; tolower(*s1) == tolower(*s2); ++s1, ++s2) : if (*s1 == '\0') : return (0); : return ((tolower(*s1) < tolower(*s2)) ? -1 : 1); 0.00 : 4024d6: 0f b6 c0 movzbl %al,%eax : } 0.00 : 4024d9: 5b pop %rbx : dsscasecmp(char *s1, char *s2) : { : for (; tolower(*s1) == tolower(*s2); ++s1, ++s2) : if (*s1 == '\0') : return (0); : return ((tolower(*s1) < tolower(*s2)) ? -1 : 1); 0.00 : 4024da: 48 8d 44 00 ff lea -0x1(%rax,%rax,1),%rax : } /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:468 25.00 : 4024df: 5d pop %rbp 0.00 : 4024e0: c3 retq 0.00 : 4024e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4024e8: 48 83 c4 08 add $0x8,%rsp : : long : dsscasecmp(char *s1, char *s2) : { : for (; tolower(*s1) == tolower(*s2); ++s1, ++s2) : if (*s1 == '\0') 0.00 : 4024ec: 31 c0 xor %eax,%eax : return (0); : return ((tolower(*s1) < tolower(*s2)) ? -1 : 1); : } 0.00 : 4024ee: 5b pop %rbx 0.00 : 4024ef: 5d pop %rbp Sorted summary for file /home/Computational/mark/src/dbt3/src/dbgen/qgen ---------------------------------------------- 28.57 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:319 14.29 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:319 14.29 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:321 14.29 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:326 14.29 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:335 14.29 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:360 Percent | Source code & Disassembly of /home/Computational/mark/src/dbt3/src/dbgen/qgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000402a30 : : * load a distribution from a flat file into the target structure; : * should be rewritten to allow multiple dists in a file : */ : void : read_dist(char *path, char *name, distribution *target) : { 0.00 : 402a30: 41 57 push %r15 0.00 : 402a32: 41 56 push %r14 0.00 : 402a34: 41 55 push %r13 0.00 : 402a36: 49 89 d5 mov %rdx,%r13 0.00 : 402a39: 41 54 push %r12 0.00 : 402a3b: 55 push %rbp 0.00 : 402a3c: 48 89 fd mov %rdi,%rbp 0.00 : 402a3f: 53 push %rbx 0.00 : 402a40: 48 81 ec 38 02 00 00 sub $0x238,%rsp : *c; : long weight, : count = 0, : name_set = 0; : : if (d_path == NULL) 0.00 : 402a47: 48 8b 3d 2a 9e e0 12 mov 0x12e09e2a(%rip),%rdi # 1320c878 : * load a distribution from a flat file into the target structure; : * should be rewritten to allow multiple dists in a file : */ : void : read_dist(char *path, char *name, distribution *target) : { 0.00 : 402a4e: 48 89 74 24 08 mov %rsi,0x8(%rsp) : *c; : long weight, : count = 0, : name_set = 0; : : if (d_path == NULL) 0.00 : 402a53: 48 85 ff test %rdi,%rdi 0.00 : 402a56: 0f 84 32 02 00 00 je 402c8e : fp = fopen(line, "r"); : OPEN_CHECK(fp, line); : } : else : { : fp = fopen(d_path, "r"); 0.00 : 402a5c: be 52 63 40 00 mov $0x406352,%esi 0.00 : 402a61: 48 8d 9c 24 20 01 00 lea 0x120(%rsp),%rbx 0.00 : 402a68: 00 0.00 : 402a69: e8 42 e5 ff ff callq 400fb0 : OPEN_CHECK(fp, d_path); 0.00 : 402a6e: 48 85 c0 test %rax,%rax : fp = fopen(line, "r"); : OPEN_CHECK(fp, line); : } : else : { : fp = fopen(d_path, "r"); 0.00 : 402a71: 48 89 c5 mov %rax,%rbp : OPEN_CHECK(fp, d_path); 0.00 : 402a74: 0f 84 b3 02 00 00 je 402d2d : fclose(fp); : return; : } : } : : if (sscanf(line, "%[^|]|%ld", token, &weight) != 2) 0.00 : 402a7a: 4c 8d 7c 24 20 lea 0x20(%rsp),%r15 : if (d_path == NULL) : { : sprintf(line, "%s%c%s", : env_config(CONFIG_TAG, CONFIG_DFLT), PATH_SEP, path); : fp = fopen(line, "r"); : OPEN_CHECK(fp, line); 0.00 : 402a7f: 45 31 f6 xor %r14d,%r14d 0.00 : 402a82: 45 31 e4 xor %r12d,%r12d 0.00 : 402a85: 0f 1f 00 nopl (%rax) : else : { : fp = fopen(d_path, "r"); : OPEN_CHECK(fp, d_path); : } : while (fgets(line, sizeof(line), fp) != NULL) 0.00 : 402a88: 48 89 ea mov %rbp,%rdx 0.00 : 402a8b: be 00 01 00 00 mov $0x100,%esi 0.00 : 402a90: 48 89 df mov %rbx,%rdi 0.00 : 402a93: e8 78 e4 ff ff callq 400f10 0.00 : 402a98: 48 85 c0 test %rax,%rax 0.00 : 402a9b: 0f 84 8f 01 00 00 je 402c30 : { : if ((c = strchr(line, '\n')) != NULL) 0.00 : 402aa1: be 0a 00 00 00 mov $0xa,%esi 0.00 : 402aa6: 48 89 df mov %rbx,%rdi 0.00 : 402aa9: e8 02 e4 ff ff callq 400eb0 0.00 : 402aae: 48 85 c0 test %rax,%rax 0.00 : 402ab1: 74 03 je 402ab6 : *c = '\0'; 0.00 : 402ab3: c6 00 00 movb $0x0,(%rax) : if ((c = strchr(line, '#')) != NULL) /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:319 28.57 : 402ab6: be 23 00 00 00 mov $0x23,%esi 0.00 : 402abb: 48 89 df mov %rbx,%rdi 0.00 : 402abe: e8 ed e3 ff ff callq 400eb0 14.29 : 402ac3: 48 85 c0 test %rax,%rax 0.00 : 402ac6: 74 03 je 402acb : *c = '\0'; 0.00 : 402ac8: c6 00 00 movb $0x0,(%rax) : if (*line == '\0') /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:321 14.29 : 402acb: 80 bc 24 20 01 00 00 cmpb $0x0,0x120(%rsp) 0.00 : 402ad2: 00 0.00 : 402ad3: 74 b3 je 402a88 : continue; : : if (!name_set) 0.00 : 402ad5: 4d 85 e4 test %r12,%r12 0.00 : 402ad8: 75 4e jne 402b28 : { : if (dsscasecmp(strtok(line, "\n\t "), "BEGIN")) /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:326 14.29 : 402ada: be 4a 62 40 00 mov $0x40624a,%esi 0.00 : 402adf: 48 89 df mov %rbx,%rdi 0.00 : 402ae2: e8 d9 e4 ff ff callq 400fc0 0.00 : 402ae7: be 4e 62 40 00 mov $0x40624e,%esi 0.00 : 402aec: 48 89 c7 mov %rax,%rdi 0.00 : 402aef: e8 9c f9 ff ff callq 402490 0.00 : 402af4: 48 85 c0 test %rax,%rax 0.00 : 402af7: 75 8f jne 402a88 : continue; : if (dsscasecmp(strtok(NULL, "\n\t "), name)) 0.00 : 402af9: 31 ff xor %edi,%edi 0.00 : 402afb: be 4a 62 40 00 mov $0x40624a,%esi 0.00 : 402b00: e8 bb e4 ff ff callq 400fc0 0.00 : 402b05: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : 402b0a: 48 89 c7 mov %rax,%rdi 0.00 : 402b0d: e8 7e f9 ff ff callq 402490 : continue; 0.00 : 402b12: 48 85 c0 test %rax,%rax 0.00 : 402b15: b8 01 00 00 00 mov $0x1,%eax 0.00 : 402b1a: 4c 0f 44 e0 cmove %rax,%r12 0.00 : 402b1e: e9 65 ff ff ff jmpq 402a88 0.00 : 402b23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : name_set = 1; : continue; : } : else : { : if (!dssncasecmp(line, "END", 3)) 0.00 : 402b28: ba 03 00 00 00 mov $0x3,%edx 0.00 : 402b2d: be 54 62 40 00 mov $0x406254,%esi 0.00 : 402b32: 48 89 df mov %rbx,%rdi 0.00 : 402b35: e8 c6 f9 ff ff callq 402500 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:335 14.29 : 402b3a: 48 85 c0 test %rax,%rax 0.00 : 402b3d: 0f 84 02 01 00 00 je 402c45 : fclose(fp); : return; : } : } : : if (sscanf(line, "%[^|]|%ld", token, &weight) != 2) 0.00 : 402b43: 48 8d 8c 24 28 02 00 lea 0x228(%rsp),%rcx 0.00 : 402b4a: 00 0.00 : 402b4b: 31 c0 xor %eax,%eax 0.00 : 402b4d: 4c 89 fa mov %r15,%rdx 0.00 : 402b50: be 58 62 40 00 mov $0x406258,%esi 0.00 : 402b55: 48 89 df mov %rbx,%rdi 0.00 : 402b58: e8 23 e4 ff ff callq 400f80 <__isoc99_sscanf@plt> 0.00 : 402b5d: 83 f8 02 cmp $0x2,%eax 0.00 : 402b60: 0f 85 22 ff ff ff jne 402a88 : continue; : : if (!dsscasecmp(token, "count")) 0.00 : 402b66: be 62 62 40 00 mov $0x406262,%esi 0.00 : 402b6b: 4c 89 ff mov %r15,%rdi 0.00 : 402b6e: e8 1d f9 ff ff callq 402490 0.00 : 402b73: 48 85 c0 test %rax,%rax 0.00 : 402b76: 0f 84 e3 00 00 00 je 402c5f : malloc((size_t)(weight * sizeof(set_member))); : MALLOC_CHECK(target->list); : target->max = 0; : continue; : } : target->list[count].text = 0.00 : 402b7c: 4c 89 f2 mov %r14,%rdx 0.00 : 402b7f: 4c 89 f9 mov %r15,%rcx 0.00 : 402b82: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 402b86: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 402b8b: 49 03 55 08 add 0x8(%r13),%rdx 0.00 : 402b8f: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 402b94: 8b 01 mov (%rcx),%eax 0.00 : 402b96: 48 83 c1 04 add $0x4,%rcx 0.00 : 402b9a: 8d 90 ff fe fe fe lea -0x1010101(%rax),%edx 0.00 : 402ba0: f7 d0 not %eax 0.00 : 402ba2: 21 c2 and %eax,%edx 0.00 : 402ba4: 81 e2 80 80 80 80 and $0x80808080,%edx 0.00 : 402baa: 74 e8 je 402b94 0.00 : 402bac: 89 d0 mov %edx,%eax 0.00 : 402bae: c1 e8 10 shr $0x10,%eax 0.00 : 402bb1: f7 c2 80 80 00 00 test $0x8080,%edx 0.00 : 402bb7: 0f 44 d0 cmove %eax,%edx 0.00 : 402bba: 48 8d 41 02 lea 0x2(%rcx),%rax 0.00 : 402bbe: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 402bc2: 00 d2 add %dl,%dl 0.00 : 402bc4: 48 83 d9 03 sbb $0x3,%rcx 0.00 : 402bc8: 4c 29 f9 sub %r15,%rcx 0.00 : 402bcb: 8d 79 01 lea 0x1(%rcx),%edi 0.00 : 402bce: 48 63 ff movslq %edi,%rdi 0.00 : 402bd1: e8 8a e3 ff ff callq 400f60 0.00 : 402bd6: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx : (char *) malloc((size_t)((int)strlen(token) + 1)); : MALLOC_CHECK(target->list[count].text); 0.00 : 402bdb: 48 8b 54 24 10 mov 0x10(%rsp),%rdx : malloc((size_t)(weight * sizeof(set_member))); : MALLOC_CHECK(target->list); : target->max = 0; : continue; : } : target->list[count].text = 0.00 : 402be0: 48 89 41 08 mov %rax,0x8(%rcx) : (char *) malloc((size_t)((int)strlen(token) + 1)); : MALLOC_CHECK(target->list[count].text); 0.00 : 402be4: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 402be8: 48 8b 7c 10 08 mov 0x8(%rax,%rdx,1),%rdi 0.00 : 402bed: 48 85 ff test %rdi,%rdi 0.00 : 402bf0: 0f 84 70 01 00 00 je 402d66 : strcpy(target->list[count].text, token); 0.00 : 402bf6: 4c 89 fe mov %r15,%rsi : target->max += weight; : target->list[count].weight = target->max; : : count += 1; 0.00 : 402bf9: 49 83 c6 01 add $0x1,%r14 : continue; : } : target->list[count].text = : (char *) malloc((size_t)((int)strlen(token) + 1)); : MALLOC_CHECK(target->list[count].text); : strcpy(target->list[count].text, token); 0.00 : 402bfd: e8 5e e2 ff ff callq 400e60 : target->max += weight; 0.00 : 402c02: 48 8b 84 24 28 02 00 mov 0x228(%rsp),%rax 0.00 : 402c09: 00 0.00 : 402c0a: 41 03 45 04 add 0x4(%r13),%eax : target->list[count].weight = target->max; 0.00 : 402c0e: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 402c12: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx : } : target->list[count].text = : (char *) malloc((size_t)((int)strlen(token) + 1)); : MALLOC_CHECK(target->list[count].text); : strcpy(target->list[count].text, token); : target->max += weight; 0.00 : 402c17: 41 89 45 04 mov %eax,0x4(%r13) : target->list[count].weight = target->max; 0.00 : 402c1b: 48 98 cltq 0.00 : 402c1d: 48 89 04 0a mov %rax,(%rdx,%rcx,1) /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:360 14.29 : 402c21: e9 62 fe ff ff jmpq 402a88 0.00 : 402c26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 402c2d: 00 00 00 : : count += 1; : } /* while fgets() */ : : if (count != target->count) 0.00 : 402c30: 49 63 45 00 movslq 0x0(%r13),%rax 0.00 : 402c34: 49 39 c6 cmp %rax,%r14 0.00 : 402c37: 0f 85 c6 00 00 00 jne 402d03 : { : fprintf(stderr, "Read error on dist '%s'\n", name); : fclose(fp); : exit(1); : } : target->permute = (long *)NULL; 0.00 : 402c3d: 49 c7 45 10 00 00 00 movq $0x0,0x10(%r13) 0.00 : 402c44: 00 : fclose(fp); 0.00 : 402c45: 48 89 ef mov %rbp,%rdi 0.00 : 402c48: e8 43 e2 ff ff callq 400e90 : return; : } 0.00 : 402c4d: 48 81 c4 38 02 00 00 add $0x238,%rsp 0.00 : 402c54: 5b pop %rbx 0.00 : 402c55: 5d pop %rbp 0.00 : 402c56: 41 5c pop %r12 0.00 : 402c58: 41 5d pop %r13 0.00 : 402c5a: 41 5e pop %r14 0.00 : 402c5c: 41 5f pop %r15 0.00 : 402c5e: c3 retq : if (sscanf(line, "%[^|]|%ld", token, &weight) != 2) : continue; : : if (!dsscasecmp(token, "count")) : { : target->count = weight; 0.00 : 402c5f: 48 8b bc 24 28 02 00 mov 0x228(%rsp),%rdi 0.00 : 402c66: 00 0.00 : 402c67: 41 89 7d 00 mov %edi,0x0(%r13) : target->list = 0.00 : 402c6b: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 402c6f: e8 ec e2 ff ff callq 400f60 : (set_member *) : malloc((size_t)(weight * sizeof(set_member))); : MALLOC_CHECK(target->list); 0.00 : 402c74: 48 85 c0 test %rax,%rax : continue; : : if (!dsscasecmp(token, "count")) : { : target->count = weight; : target->list = 0.00 : 402c77: 49 89 45 08 mov %rax,0x8(%r13) : (set_member *) : malloc((size_t)(weight * sizeof(set_member))); : MALLOC_CHECK(target->list); 0.00 : 402c7b: 0f 84 c0 00 00 00 je 402d41 : target->max = 0; 0.00 : 402c81: 41 c7 45 04 00 00 00 movl $0x0,0x4(%r13) 0.00 : 402c88: 00 : continue; 0.00 : 402c89: e9 fa fd ff ff jmpq 402a88 : count = 0, : name_set = 0; : : if (d_path == NULL) : { : sprintf(line, "%s%c%s", 0.00 : 402c8e: 48 8d 9c 24 20 01 00 lea 0x120(%rsp),%rbx 0.00 : 402c95: 00 0.00 : 402c96: be e0 61 40 00 mov $0x4061e0,%esi 0.00 : 402c9b: bf 3f 62 40 00 mov $0x40623f,%edi 0.00 : 402ca0: e8 cb fb ff ff callq 402870 0.00 : 402ca5: 49 89 e8 mov %rbp,%r8 0.00 : 402ca8: 48 89 c2 mov %rax,%rdx 0.00 : 402cab: b9 2f 00 00 00 mov $0x2f,%ecx 0.00 : 402cb0: be eb 61 40 00 mov $0x4061eb,%esi 0.00 : 402cb5: 48 89 df mov %rbx,%rdi 0.00 : 402cb8: 31 c0 xor %eax,%eax 0.00 : 402cba: e8 31 e3 ff ff callq 400ff0 : env_config(CONFIG_TAG, CONFIG_DFLT), PATH_SEP, path); : fp = fopen(line, "r"); 0.00 : 402cbf: be 52 63 40 00 mov $0x406352,%esi 0.00 : 402cc4: 48 89 df mov %rbx,%rdi 0.00 : 402cc7: e8 e4 e2 ff ff callq 400fb0 : OPEN_CHECK(fp, line); 0.00 : 402ccc: 48 85 c0 test %rax,%rax : : if (d_path == NULL) : { : sprintf(line, "%s%c%s", : env_config(CONFIG_TAG, CONFIG_DFLT), PATH_SEP, path); : fp = fopen(line, "r"); 0.00 : 402ccf: 48 89 c5 mov %rax,%rbp : OPEN_CHECK(fp, line); 0.00 : 402cd2: 0f 85 a2 fd ff ff jne 402a7a 0.00 : 402cd8: 41 b8 34 01 00 00 mov $0x134,%r8d 0.00 : 402cde: b9 97 61 40 00 mov $0x406197,%ecx 0.00 : 402ce3: 48 89 da mov %rbx,%rdx : } : else : { : fp = fopen(d_path, "r"); : OPEN_CHECK(fp, d_path); 0.00 : 402ce6: 48 8b 3d 5b 84 20 00 mov 0x20845b(%rip),%rdi # 60b148 0.00 : 402ced: be 22 62 40 00 mov $0x406222,%esi 0.00 : 402cf2: 31 c0 xor %eax,%eax 0.00 : 402cf4: e8 27 e2 ff ff callq 400f20 0.00 : 402cf9: bf 01 00 00 00 mov $0x1,%edi 0.00 : 402cfe: e8 fd e2 ff ff callq 401000 : count += 1; : } /* while fgets() */ : : if (count != target->count) : { : fprintf(stderr, "Read error on dist '%s'\n", name); 0.00 : 402d03: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : 402d08: 48 8b 3d 39 84 20 00 mov 0x208439(%rip),%rdi # 60b148 0.00 : 402d0f: be 68 62 40 00 mov $0x406268,%esi 0.00 : 402d14: 31 c0 xor %eax,%eax 0.00 : 402d16: e8 05 e2 ff ff callq 400f20 : fclose(fp); 0.00 : 402d1b: 48 89 ef mov %rbp,%rdi 0.00 : 402d1e: e8 6d e1 ff ff callq 400e90 : exit(1); 0.00 : 402d23: bf 01 00 00 00 mov $0x1,%edi 0.00 : 402d28: e8 d3 e2 ff ff callq 401000 : OPEN_CHECK(fp, line); : } : else : { : fp = fopen(d_path, "r"); : OPEN_CHECK(fp, d_path); 0.00 : 402d2d: 41 b8 39 01 00 00 mov $0x139,%r8d 0.00 : 402d33: b9 97 61 40 00 mov $0x406197,%ecx 0.00 : 402d38: 48 8b 15 39 9b e0 12 mov 0x12e09b39(%rip),%rdx # 1320c878 0.00 : 402d3f: eb a5 jmp 402ce6 : { : target->count = weight; : target->list = : (set_member *) : malloc((size_t)(weight * sizeof(set_member))); : MALLOC_CHECK(target->list); 0.00 : 402d41: 48 8b 3d 00 84 20 00 mov 0x208400(%rip),%rdi # 60b148 0.00 : 402d48: b9 5f 01 00 00 mov $0x15f,%ecx 0.00 : 402d4d: ba 97 61 40 00 mov $0x406197,%edx 0.00 : 402d52: be a2 61 40 00 mov $0x4061a2,%esi 0.00 : 402d57: e8 c4 e1 ff ff callq 400f20 0.00 : 402d5c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 402d61: e8 9a e2 ff ff callq 401000 : target->max = 0; : continue; : } : target->list[count].text = : (char *) malloc((size_t)((int)strlen(token) + 1)); : MALLOC_CHECK(target->list[count].text); 0.00 : 402d66: 48 8b 3d db 83 20 00 mov 0x2083db(%rip),%rdi # 60b148 0.00 : 402d6d: b9 65 01 00 00 mov $0x165,%ecx 0.00 : 402d72: ba 97 61 40 00 mov $0x406197,%edx 0.00 : 402d77: be a2 61 40 00 mov $0x4061a2,%esi 0.00 : 402d7c: 31 c0 xor %eax,%eax 0.00 : 402d7e: e8 9d e1 ff ff callq 400f20 0.00 : 402d83: bf 01 00 00 00 mov $0x1,%edi 0.00 : 402d88: e8 73 e2 ff ff callq 401000 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:82 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:94 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:84 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:86 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:111 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:111 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:112 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046a7d0 : : * If the range is not currently summarized (i.e. the revmap returns NULL for : * it), there's nothing to do. : */ : Datum : brininsert(PG_FUNCTION_ARGS) : { 0.00 : 46a7d0: 55 push %rbp 0.00 : 46a7d1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:82 14.29 : 46a7d4: 41 57 push %r15 : BlockNumber pagesPerRange; : BrinDesc *bdesc = NULL; : brinRmAccess *rmAccess; : Buffer buf = InvalidBuffer; : : rmAccess = brinRevmapAccessInit(idxRel, &pagesPerRange); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:94 14.29 : 46a7d6: 48 8d 75 d0 lea -0x30(%rbp),%rsi : * If the range is not currently summarized (i.e. the revmap returns NULL for : * it), there's nothing to do. : */ : Datum : brininsert(PG_FUNCTION_ARGS) : { 0.00 : 46a7da: 41 56 push %r14 : BlockNumber pagesPerRange; : BrinDesc *bdesc = NULL; : brinRmAccess *rmAccess; : Buffer buf = InvalidBuffer; : : rmAccess = brinRevmapAccessInit(idxRel, &pagesPerRange); 0.00 : 46a7dc: 45 31 f6 xor %r14d,%r14d : * If the range is not currently summarized (i.e. the revmap returns NULL for : * it), there's nothing to do. : */ : Datum : brininsert(PG_FUNCTION_ARGS) : { 0.00 : 46a7df: 41 55 push %r13 0.00 : 46a7e1: 41 54 push %r12 0.00 : 46a7e3: 53 push %rbx 0.00 : 46a7e4: 48 81 ec 88 00 00 00 sub $0x88,%rsp : Relation idxRel = (Relation) PG_GETARG_POINTER(0); 0.00 : 46a7eb: 48 8b 47 20 mov 0x20(%rdi),%rax 0.00 : 46a7ef: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : Datum *values = (Datum *) PG_GETARG_POINTER(1); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:84 14.29 : 46a7f6: 48 8b 57 28 mov 0x28(%rdi),%rdx 0.00 : 46a7fa: 48 89 55 80 mov %rdx,-0x80(%rbp) : bool *nulls = (bool *) PG_GETARG_POINTER(2); 0.00 : 46a7fe: 48 8b 4f 30 mov 0x30(%rdi),%rcx 0.00 : 46a802: 48 89 4d 88 mov %rcx,-0x78(%rbp) : ItemPointer heaptid = (ItemPointer) PG_GETARG_POINTER(3); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:86 14.29 : 46a806: 48 8b 7f 38 mov 0x38(%rdi),%rdi : : /* we ignore the rest of our arguments */ : BlockNumber pagesPerRange; : BrinDesc *bdesc = NULL; : brinRmAccess *rmAccess; : Buffer buf = InvalidBuffer; 0.00 : 46a80a: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : brininsert(PG_FUNCTION_ARGS) : { : Relation idxRel = (Relation) PG_GETARG_POINTER(0); : Datum *values = (Datum *) PG_GETARG_POINTER(1); : bool *nulls = (bool *) PG_GETARG_POINTER(2); : ItemPointer heaptid = (ItemPointer) PG_GETARG_POINTER(3); 0.00 : 46a811: 48 89 7d 90 mov %rdi,-0x70(%rbp) : BlockNumber pagesPerRange; : BrinDesc *bdesc = NULL; : brinRmAccess *rmAccess; : Buffer buf = InvalidBuffer; : : rmAccess = brinRevmapAccessInit(idxRel, &pagesPerRange); 0.00 : 46a815: 48 89 c7 mov %rax,%rdi 0.00 : 46a818: e8 f3 26 00 00 callq 46cf10 0.00 : 46a81d: 48 89 45 98 mov %rax,-0x68(%rbp) : BlockNumber heapBlk; : int keyno; : BrTuple *tmptup PG_USED_FOR_ASSERTS_ONLY; : Size tmpsiz PG_USED_FOR_ASSERTS_ONLY; : : CHECK_FOR_INTERRUPTS(); 0.00 : 46a821: 0f b6 05 68 f8 74 00 movzbl 0x74f868(%rip),%eax # bba090 0.00 : 46a828: 84 c0 test %al,%al 0.00 : 46a82a: 0f 85 c8 01 00 00 jne 46a9f8 : : heapBlk = ItemPointerGetBlockNumber(heaptid); : /* normalize the block number to be the first block in the range */ : heapBlk = (heapBlk / pagesPerRange) * pagesPerRange; 0.00 : 46a830: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 46a834: 8b 75 d0 mov -0x30(%rbp),%esi : brtup = brinGetTupleForHeapBlock(rmAccess, heapBlk, &buf, &off, NULL, 0.00 : 46a837: 45 31 c0 xor %r8d,%r8d 0.00 : 46a83a: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 46a83e: 41 b9 01 00 00 00 mov $0x1,%r9d : : CHECK_FOR_INTERRUPTS(); : : heapBlk = ItemPointerGetBlockNumber(heaptid); : /* normalize the block number to be the first block in the range */ : heapBlk = (heapBlk / pagesPerRange) * pagesPerRange; 0.00 : 46a844: 0f b7 13 movzwl (%rbx),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:111 14.29 : 46a847: 0f b7 4b 02 movzwl 0x2(%rbx),%ecx 14.29 : 46a84b: c1 e2 10 shl $0x10,%edx 0.00 : 46a84e: 09 ca or %ecx,%edx : brtup = brinGetTupleForHeapBlock(rmAccess, heapBlk, &buf, &off, NULL, 0.00 : 46a850: 48 8d 4d d6 lea -0x2a(%rbp),%rcx : : CHECK_FOR_INTERRUPTS(); : : heapBlk = ItemPointerGetBlockNumber(heaptid); : /* normalize the block number to be the first block in the range */ : heapBlk = (heapBlk / pagesPerRange) * pagesPerRange; 0.00 : 46a854: 89 d0 mov %edx,%eax 0.00 : 46a856: 31 d2 xor %edx,%edx 0.00 : 46a858: f7 f6 div %esi : brtup = brinGetTupleForHeapBlock(rmAccess, heapBlk, &buf, &off, NULL, /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:112 14.29 : 46a85a: 48 8d 55 cc lea -0x34(%rbp),%rdx : : CHECK_FOR_INTERRUPTS(); : : heapBlk = ItemPointerGetBlockNumber(heaptid); : /* normalize the block number to be the first block in the range */ : heapBlk = (heapBlk / pagesPerRange) * pagesPerRange; 0.00 : 46a85e: 0f af f0 imul %eax,%esi 0.00 : 46a861: 89 75 b4 mov %esi,-0x4c(%rbp) : brtup = brinGetTupleForHeapBlock(rmAccess, heapBlk, &buf, &off, NULL, 0.00 : 46a864: e8 47 1f 00 00 callq 46c7b0 : BUFFER_LOCK_SHARE); : : /* if range is unsummarized, there's nothing to do */ : if (!brtup) 0.00 : 46a869: 48 85 c0 test %rax,%rax : CHECK_FOR_INTERRUPTS(); : : heapBlk = ItemPointerGetBlockNumber(heaptid); : /* normalize the block number to be the first block in the range */ : heapBlk = (heapBlk / pagesPerRange) * pagesPerRange; : brtup = brinGetTupleForHeapBlock(rmAccess, heapBlk, &buf, &off, NULL, 0.00 : 46a86c: 48 89 45 a0 mov %rax,-0x60(%rbp) : BUFFER_LOCK_SHARE); : : /* if range is unsummarized, there's nothing to do */ : if (!brtup) 0.00 : 46a870: 0f 84 bc 01 00 00 je 46aa32 : break; : : if (bdesc == NULL) 0.00 : 46a876: 4d 85 f6 test %r14,%r14 0.00 : 46a879: 0f 84 e4 01 00 00 je 46aa63 : bdesc = brin_build_desc(idxRel); : dtup = brin_deform_tuple(bdesc, brtup); 0.00 : 46a87f: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 46a883: 4c 89 f7 mov %r14,%rdi 0.00 : 46a886: e8 55 2a 00 00 callq 46d2e0 0.00 : 46a88b: 49 89 c7 mov %rax,%r15 : * our deformed tuple will get updated if the new tuple doesn't fit : * the original range (note this means we can't break out of the loop : * early). Make a note of whether this happens, so that we know to : * insert the modified tuple later. : */ : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) 0.00 : 46a88e: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 46a892: 8b 08 mov (%rax),%ecx 0.00 : 46a894: 85 c9 test %ecx,%ecx 0.00 : 46a896: 0f 8e 81 01 00 00 jle 46aa1d 0.00 : 46a89c: 45 31 ed xor %r13d,%r13d 0.00 : 46a89f: 45 31 e4 xor %r12d,%r12d 0.00 : 46a8a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Datum result; : BrinValues *bval; : FmgrInfo *addValue; : : bval = &dtup->dt_columns[keyno]; : addValue = index_getprocinfo(idxRel, keyno + 1, 0.00 : 46a8a8: 41 8d 74 24 01 lea 0x1(%r12),%esi 0.00 : 46a8ad: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 46a8b4: ba 02 00 00 00 mov $0x2,%edx : { : Datum result; : BrinValues *bval; : FmgrInfo *addValue; : : bval = &dtup->dt_columns[keyno]; 0.00 : 46a8b9: 49 63 dc movslq %r12d,%rbx : addValue = index_getprocinfo(idxRel, keyno + 1, 0.00 : 46a8bc: 0f bf f6 movswl %si,%esi 0.00 : 46a8bf: e8 fc a7 03 00 callq 4a50c0 : BRIN_PROCNUM_ADDVALUE); : result = FunctionCall4Coll(addValue, 0.00 : 46a8c4: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx : Datum result; : BrinValues *bval; : FmgrInfo *addValue; : : bval = &dtup->dt_columns[keyno]; : addValue = index_getprocinfo(idxRel, keyno + 1, 0.00 : 46a8cb: 48 89 c7 mov %rax,%rdi : BRIN_PROCNUM_ADDVALUE); : result = FunctionCall4Coll(addValue, 0.00 : 46a8ce: 48 89 d8 mov %rbx,%rax 0.00 : 46a8d1: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46a8d5: 49 8d 4c 07 08 lea 0x8(%r15,%rax,1),%rcx 0.00 : 46a8da: 48 8b 82 20 01 00 00 mov 0x120(%rdx),%rax 0.00 : 46a8e1: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 46a8e5: 8b 34 98 mov (%rax,%rbx,4),%esi 0.00 : 46a8e8: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 46a8ec: 4c 8b 04 da mov (%rdx,%rbx,8),%r8 0.00 : 46a8f0: 4c 89 f2 mov %r14,%rdx 0.00 : 46a8f3: 4c 0f be 0c 18 movsbq (%rax,%rbx,1),%r9 0.00 : 46a8f8: e8 c3 35 31 00 callq 77dec0 : PointerGetDatum(bdesc), : PointerGetDatum(bval), : values[keyno], : nulls[keyno]); : /* if that returned true, we need to insert the updated tuple */ : need_insert |= DatumGetBool(result); 0.00 : 46a8fd: 84 c0 test %al,%al 0.00 : 46a8ff: 0f 95 c0 setne %al : * our deformed tuple will get updated if the new tuple doesn't fit : * the original range (note this means we can't break out of the loop : * early). Make a note of whether this happens, so that we know to : * insert the modified tuple later. : */ : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) 0.00 : 46a902: 41 83 c4 01 add $0x1,%r12d : PointerGetDatum(bdesc), : PointerGetDatum(bval), : values[keyno], : nulls[keyno]); : /* if that returned true, we need to insert the updated tuple */ : need_insert |= DatumGetBool(result); 0.00 : 46a906: 41 09 c5 or %eax,%r13d : * our deformed tuple will get updated if the new tuple doesn't fit : * the original range (note this means we can't break out of the loop : * early). Make a note of whether this happens, so that we know to : * insert the modified tuple later. : */ : for (keyno = 0; keyno < bdesc->bd_tupdesc->natts; keyno++) 0.00 : 46a909: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 46a90d: 44 39 20 cmp %r12d,(%rax) 0.00 : 46a910: 7f 96 jg 46a8a8 : cmptup = brin_form_tuple(bdesc, heapBlk, dtup, &cmpsz); : Assert(brin_tuples_equal(tmptup, tmpsiz, cmptup, cmpsz)); : } : #endif : : if (!need_insert) 0.00 : 46a912: 45 84 ed test %r13b,%r13b 0.00 : 46a915: 0f 84 02 01 00 00 je 46aa1d : LockBuffer(buf, BUFFER_LOCK_UNLOCK); : brin_free_dtuple(bdesc, dtup); : } : else : { : Page page = BufferGetPage(buf); 0.00 : 46a91b: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 46a91e: 85 c0 test %eax,%eax 0.00 : 46a920: 0f 88 e2 00 00 00 js 46aa08 0.00 : 46a926: 83 e8 01 sub $0x1,%eax 0.00 : 46a929: 48 63 d0 movslq %eax,%rdx 0.00 : 46a92c: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 46a930: 48 03 15 c1 51 75 00 add 0x7551c1(%rip),%rdx # bbfaf8 : : /* : * Make a copy of the old tuple, so that we can compare it after : * re-acquiring the lock. : */ : origsz = ItemIdGetLength(lp); 0.00 : 46a937: 0f b7 45 d6 movzwl -0x2a(%rbp),%eax : origtup = brin_copy_tuple(brtup, origsz); 0.00 : 46a93b: 48 8b 7d a0 mov -0x60(%rbp),%rdi : : /* : * Make a copy of the old tuple, so that we can compare it after : * re-acquiring the lock. : */ : origsz = ItemIdGetLength(lp); 0.00 : 46a93f: 0f b7 5c 82 16 movzwl 0x16(%rdx,%rax,4),%ebx 0.00 : 46a944: 66 d1 eb shr %bx 0.00 : 46a947: 0f b7 db movzwl %bx,%ebx : origtup = brin_copy_tuple(brtup, origsz); 0.00 : 46a94a: 48 89 de mov %rbx,%rsi 0.00 : 46a94d: e8 ee 2e 00 00 callq 46d840 : * Before releasing the lock, check if we can attempt a same-page : * update. Another process could insert a tuple concurrently in : * the same page though, so downstream we must be prepared to cope : * if this turns out to not be possible after all. : */ : samepage = brin_can_do_samepage_update(buf, origsz, newsz); 0.00 : 46a952: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 46a956: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 46a959: 48 89 de mov %rbx,%rsi : /* : * Make a copy of the old tuple, so that we can compare it after : * re-acquiring the lock. : */ : origsz = ItemIdGetLength(lp); : origtup = brin_copy_tuple(brtup, origsz); 0.00 : 46a95c: 48 89 45 a8 mov %rax,-0x58(%rbp) : * Before releasing the lock, check if we can attempt a same-page : * update. Another process could insert a tuple concurrently in : * the same page though, so downstream we must be prepared to cope : * if this turns out to not be possible after all. : */ : samepage = brin_can_do_samepage_update(buf, origsz, newsz); 0.00 : 46a960: e8 5b 15 00 00 callq 46bec0 : : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 46a965: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 46a968: 31 f6 xor %esi,%esi : * Before releasing the lock, check if we can attempt a same-page : * update. Another process could insert a tuple concurrently in : * the same page though, so downstream we must be prepared to cope : * if this turns out to not be possible after all. : */ : samepage = brin_can_do_samepage_update(buf, origsz, newsz); 0.00 : 46a96a: 41 89 c5 mov %eax,%r13d : : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 46a96d: e8 9e 9d 20 00 callq 674710 : : newtup = brin_form_tuple(bdesc, heapBlk, dtup, &newsz); 0.00 : 46a972: 8b 75 b4 mov -0x4c(%rbp),%esi 0.00 : 46a975: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 46a979: 4c 89 fa mov %r15,%rdx 0.00 : 46a97c: 4c 89 f7 mov %r14,%rdi 0.00 : 46a97f: e8 0c 2f 00 00 callq 46d890 : brin_free_dtuple(bdesc, dtup); 0.00 : 46a984: 4c 89 fe mov %r15,%rsi 0.00 : 46a987: 4c 89 f7 mov %r14,%rdi : */ : samepage = brin_can_do_samepage_update(buf, origsz, newsz); : : LockBuffer(buf, BUFFER_LOCK_UNLOCK); : : newtup = brin_form_tuple(bdesc, heapBlk, dtup, &newsz); 0.00 : 46a98a: 49 89 c4 mov %rax,%r12 : brin_free_dtuple(bdesc, dtup); 0.00 : 46a98d: e8 4e 26 00 00 callq 46cfe0 : * pointing at a different tuple for this block now, so we need to : * recompute to ensure both our new heap tuple and the other : * inserter's are covered by the combined tuple. It might be that : * we don't need to update at all. : */ : if (!brin_doupdate(idxRel, pagesPerRange, rmAccess, heapBlk, 0.00 : 46a992: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 46a996: 41 0f be c5 movsbl %r13b,%eax 0.00 : 46a99a: 44 0f b7 4d d6 movzwl -0x2a(%rbp),%r9d 0.00 : 46a99f: 89 44 24 20 mov %eax,0x20(%rsp) 0.00 : 46a9a3: 8b 75 d0 mov -0x30(%rbp),%esi 0.00 : 46a9a6: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 46a9aa: 44 8b 45 cc mov -0x34(%rbp),%r8d 0.00 : 46a9ae: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 46a9b2: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 46a9b6: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 46a9b9: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 46a9c0: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 46a9c5: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 46a9ca: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 46a9cf: e8 5c 15 00 00 callq 46bf30 0.00 : 46a9d4: 84 c0 test %al,%al 0.00 : 46a9d6: 75 5a jne 46aa32 : buf, off, origtup, origsz, newtup, newsz, : samepage)) : { : /* start over */ : brin_free_tuple(newtup); 0.00 : 46a9d8: 4c 89 e7 mov %r12,%rdi 0.00 : 46a9db: e8 c0 26 00 00 callq 46d0a0 : brin_free_tuple(origtup); 0.00 : 46a9e0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 46a9e4: e8 b7 26 00 00 callq 46d0a0 : BlockNumber heapBlk; : int keyno; : BrTuple *tmptup PG_USED_FOR_ASSERTS_ONLY; : Size tmpsiz PG_USED_FOR_ASSERTS_ONLY; : : CHECK_FOR_INTERRUPTS(); 0.00 : 46a9e9: 0f b6 05 a0 f6 74 00 movzbl 0x74f6a0(%rip),%eax # bba090 0.00 : 46a9f0: 84 c0 test %al,%al 0.00 : 46a9f2: 0f 84 38 fe ff ff je 46a830 0.00 : 46a9f8: e8 a3 18 23 00 callq 69c2a0 0.00 : 46a9fd: e9 2e fe ff ff jmpq 46a830 0.00 : 46aa02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : LockBuffer(buf, BUFFER_LOCK_UNLOCK); : brin_free_dtuple(bdesc, dtup); : } : else : { : Page page = BufferGetPage(buf); 0.00 : 46aa08: f7 d0 not %eax 0.00 : 46aa0a: 48 63 d0 movslq %eax,%rdx 0.00 : 46aa0d: 48 8b 05 04 27 71 00 mov 0x712704(%rip),%rax # b7d118 0.00 : 46aa14: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 46aa18: e9 1a ff ff ff jmpq 46a937 : { : /* : * The tuple is consistent with the new values, so there's nothing : * to do. : */ : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 46aa1d: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 46aa20: 31 f6 xor %esi,%esi 0.00 : 46aa22: e8 e9 9c 20 00 callq 674710 : brin_free_dtuple(bdesc, dtup); 0.00 : 46aa27: 4c 89 fe mov %r15,%rsi 0.00 : 46aa2a: 4c 89 f7 mov %r14,%rdi 0.00 : 46aa2d: e8 ae 25 00 00 callq 46cfe0 : : /* success! */ : break; : } : : brinRevmapAccessTerminate(rmAccess); 0.00 : 46aa32: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 46aa36: e8 a5 24 00 00 callq 46cee0 : if (BufferIsValid(buf)) 0.00 : 46aa3b: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 46aa3e: 85 ff test %edi,%edi 0.00 : 46aa40: 75 35 jne 46aa77 : ReleaseBuffer(buf); : if (bdesc != NULL) 0.00 : 46aa42: 4d 85 f6 test %r14,%r14 0.00 : 46aa45: 74 08 je 46aa4f : brin_free_desc(BrinDesc *bdesc) : { : /* make sure the tupdesc is still valid */ : Assert(bdesc->bd_tupdesc->tdrefcount >= 1); : /* no need for retail pfree */ : MemoryContextDelete(bdesc->bd_context); 0.00 : 46aa47: 49 8b 3e mov (%r14),%rdi 0.00 : 46aa4a: e8 51 e1 32 00 callq 798ba0 : ReleaseBuffer(buf); : if (bdesc != NULL) : brin_free_desc(bdesc); : : return BoolGetDatum(false); : } 0.00 : 46aa4f: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 46aa56: 31 c0 xor %eax,%eax 0.00 : 46aa58: 5b pop %rbx 0.00 : 46aa59: 41 5c pop %r12 0.00 : 46aa5b: 41 5d pop %r13 0.00 : 46aa5d: 41 5e pop %r14 0.00 : 46aa5f: 41 5f pop %r15 0.00 : 46aa61: c9 leaveq 0.00 : 46aa62: c3 retq : /* if range is unsummarized, there's nothing to do */ : if (!brtup) : break; : : if (bdesc == NULL) : bdesc = brin_build_desc(idxRel); 0.00 : 46aa63: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 46aa6a: e8 81 f8 ff ff callq 46a2f0 0.00 : 46aa6f: 49 89 c6 mov %rax,%r14 0.00 : 46aa72: e9 08 fe ff ff jmpq 46a87f : break; : } : : brinRevmapAccessTerminate(rmAccess); : if (BufferIsValid(buf)) : ReleaseBuffer(buf); 0.00 : 46aa77: e8 e4 a3 20 00 callq 674e60 0.00 : 46aa7c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 46aa80: eb c0 jmp 46aa42 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:722 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:1094 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:783 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:809 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:815 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:921 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:848 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:907 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a60d0 <_bt_insertonpg>: : Buffer cbuf, : BTStack stack, : IndexTuple itup, : OffsetNumber newitemoff, : bool split_only_page) : { 0.00 : 4a60d0: 55 push %rbp 0.00 : 4a60d1: 48 89 e5 mov %rsp,%rbp 0.00 : 4a60d4: 41 57 push %r15 0.00 : 4a60d6: 41 56 push %r14 0.00 : 4a60d8: 41 55 push %r13 0.00 : 4a60da: 41 54 push %r12 0.00 : 4a60dc: 53 push %rbx 0.00 : 4a60dd: 48 81 ec e8 01 00 00 sub $0x1e8,%rsp : Page page; : BTPageOpaque lpageop; : OffsetNumber firstright = InvalidOffsetNumber; : Size itemsz; : : page = BufferGetPage(buf); 0.00 : 4a60e4: 85 f6 test %esi,%esi : Buffer cbuf, : BTStack stack, : IndexTuple itup, : OffsetNumber newitemoff, : bool split_only_page) : { 0.00 : 4a60e6: 48 89 bd 20 fe ff ff mov %rdi,-0x1e0(%rbp) 0.00 : 4a60ed: 89 b5 1c fe ff ff mov %esi,-0x1e4(%rbp) 0.00 : 4a60f3: 89 95 18 fe ff ff mov %edx,-0x1e8(%rbp) 0.00 : 4a60f9: 48 89 8d 10 fe ff ff mov %rcx,-0x1f0(%rbp) 0.00 : 4a6100: 4c 89 85 08 fe ff ff mov %r8,-0x1f8(%rbp) 0.00 : 4a6107: 66 44 89 8d 06 fe ff mov %r9w,-0x1fa(%rbp) 0.00 : 4a610e: ff 0.00 : 4a610f: 44 0f b6 65 10 movzbl 0x10(%rbp),%r12d : Page page; : BTPageOpaque lpageop; : OffsetNumber firstright = InvalidOffsetNumber; : Size itemsz; : : page = BufferGetPage(buf); 0.00 : 4a6114: 0f 88 ae 08 00 00 js 4a69c8 <_bt_insertonpg+0x8f8> 0.00 : 4a611a: 8b 85 1c fe ff ff mov -0x1e4(%rbp),%eax 0.00 : 4a6120: 48 8b 15 d1 99 71 00 mov 0x7199d1(%rip),%rdx # bbfaf8 0.00 : 4a6127: 83 e8 01 sub $0x1,%eax 0.00 : 4a612a: 48 98 cltq 0.00 : 4a612c: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4a6130: 48 01 d0 add %rdx,%rax 0.00 : 4a6133: 48 89 85 28 fe ff ff mov %rax,-0x1d8(%rbp) : lpageop = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a613a: 48 8b 8d 28 fe ff ff mov -0x1d8(%rbp),%rcx 0.00 : 4a6141: 0f b7 41 10 movzwl 0x10(%rcx),%eax 0.00 : 4a6145: 48 89 cb mov %rcx,%rbx 0.00 : 4a6148: 48 01 c3 add %rax,%rbx : : /* child buffer must be given iff inserting on an internal page */ : Assert(P_ISLEAF(lpageop) == !BufferIsValid(cbuf)); : : /* The caller should've finished any incomplete splits already. */ : if (P_INCOMPLETE_SPLIT(lpageop)) 0.00 : 4a614b: 80 7b 0c 00 cmpb $0x0,0xc(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:722 12.50 : 4a614f: 0f 88 00 12 00 00 js 4a7355 <_bt_insertonpg+0x1285> : elog(ERROR, "cannot insert to incompletely split page %u", : BufferGetBlockNumber(buf)); : : itemsz = IndexTupleDSize(*itup); : itemsz = MAXALIGN(itemsz); /* be safe, PageAddItem will do this but we 0.00 : 4a6155: 48 8b b5 08 fe ff ff mov -0x1f8(%rbp),%rsi : * : * Note: PageGetFreeSpace() subtracts sizeof(ItemIdData) from its result, : * so this comparison is correct even though we appear to be accounting : * only for the item and not for its line pointer. : */ : if (PageGetFreeSpace(page) < itemsz) 0.00 : 4a615c: 48 8b bd 28 fe ff ff mov -0x1d8(%rbp),%rdi : if (P_INCOMPLETE_SPLIT(lpageop)) : elog(ERROR, "cannot insert to incompletely split page %u", : BufferGetBlockNumber(buf)); : : itemsz = IndexTupleDSize(*itup); : itemsz = MAXALIGN(itemsz); /* be safe, PageAddItem will do this but we 0.00 : 4a6163: 0f b7 46 06 movzwl 0x6(%rsi),%eax 0.00 : 4a6167: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4a616c: 48 83 c0 07 add $0x7,%rax 0.00 : 4a6170: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 4a6174: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : * : * Note: PageGetFreeSpace() subtracts sizeof(ItemIdData) from its result, : * so this comparison is correct even though we appear to be accounting : * only for the item and not for its line pointer. : */ : if (PageGetFreeSpace(page) < itemsz) 0.00 : 4a617b: e8 a0 eb 1e 00 callq 694d20 0.00 : 4a6180: 48 39 85 90 fe ff ff cmp %rax,-0x170(%rbp) 0.00 : 4a6187: 0f 86 63 07 00 00 jbe 4a68f0 <_bt_insertonpg+0x820> : { : bool is_root = P_ISROOT(lpageop); 0.00 : 4a618d: 0f b7 43 0c movzwl 0xc(%rbx),%eax : bool is_only = P_LEFTMOST(lpageop) && P_RIGHTMOST(lpageop); 0.00 : 4a6191: c6 85 8f fe ff ff 00 movb $0x0,-0x171(%rbp) : * so this comparison is correct even though we appear to be accounting : * only for the item and not for its line pointer. : */ : if (PageGetFreeSpace(page) < itemsz) : { : bool is_root = P_ISROOT(lpageop); 0.00 : 4a6198: 66 89 85 9a fe ff ff mov %ax,-0x166(%rbp) : bool is_only = P_LEFTMOST(lpageop) && P_RIGHTMOST(lpageop); 0.00 : 4a619f: 8b 03 mov (%rbx),%eax 0.00 : 4a61a1: 85 c0 test %eax,%eax 0.00 : 4a61a3: 75 0c jne 4a61b1 <_bt_insertonpg+0xe1> 0.00 : 4a61a5: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 4a61a8: 85 c0 test %eax,%eax 0.00 : 4a61aa: 0f 94 85 8f fe ff ff sete -0x171(%rbp) : goodenough, : olddataitemstotal, : olddataitemstoleft; : bool goodenoughfound; : : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a61b1: 48 8b 95 28 fe ff ff mov -0x1d8(%rbp),%rdx 0.00 : 4a61b8: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4a61bc: 49 89 d5 mov %rdx,%r13 0.00 : 4a61bf: 49 01 c5 add %rax,%r13 : : /* Passed-in newitemsz is MAXALIGNED but does not include line pointer */ : newitemsz += sizeof(ItemIdData); : : /* Total free space available on a btree page, after fixed overhead */ : leftspace = rightspace = 0.00 : 4a61c2: 0f b7 42 12 movzwl 0x12(%rdx),%eax : PageGetPageSize(page) - SizeOfPageHeaderData - : MAXALIGN(sizeof(BTPageOpaqueData)); : : /* The right page will have the same high key as the old page */ : if (!P_RIGHTMOST(opaque)) 0.00 : 4a61c6: 45 8b 7d 04 mov 0x4(%r13),%r15d : : /* Passed-in newitemsz is MAXALIGNED but does not include line pointer */ : newitemsz += sizeof(ItemIdData); : : /* Total free space available on a btree page, after fixed overhead */ : leftspace = rightspace = 0.00 : 4a61ca: 25 00 ff 00 00 and $0xff00,%eax : PageGetPageSize(page) - SizeOfPageHeaderData - : MAXALIGN(sizeof(BTPageOpaqueData)); : : /* The right page will have the same high key as the old page */ : if (!P_RIGHTMOST(opaque)) 0.00 : 4a61cf: 45 85 ff test %r15d,%r15d : : /* Passed-in newitemsz is MAXALIGNED but does not include line pointer */ : newitemsz += sizeof(ItemIdData); : : /* Total free space available on a btree page, after fixed overhead */ : leftspace = rightspace = 0.00 : 4a61d2: 8d 58 d8 lea -0x28(%rax),%ebx : PageGetPageSize(page) - SizeOfPageHeaderData - : MAXALIGN(sizeof(BTPageOpaqueData)); : : /* The right page will have the same high key as the old page */ : if (!P_RIGHTMOST(opaque)) 0.00 : 4a61d5: 41 89 dc mov %ebx,%r12d 0.00 : 4a61d8: 0f 85 9a 01 00 00 jne 4a6378 <_bt_insertonpg+0x2a8> : rightspace -= (int) (MAXALIGN(ItemIdGetLength(itemid)) + : sizeof(ItemIdData)); : } : : /* Count up total space in data items without actually scanning 'em */ : olddataitemstotal = rightspace - (int) PageGetExactFreeSpace(page); 0.00 : 4a61de: 48 8b bd 28 fe ff ff mov -0x1d8(%rbp),%rdi 0.00 : 4a61e5: e8 56 eb 1e 00 callq 694d40 0.00 : 4a61ea: 44 89 e6 mov %r12d,%esi 0.00 : 4a61ed: 29 c6 sub %eax,%esi : : state.newitemsz = newitemsz; 0.00 : 4a61ef: 48 8b 85 90 fe ff ff mov -0x170(%rbp),%rax : rightspace -= (int) (MAXALIGN(ItemIdGetLength(itemid)) + : sizeof(ItemIdData)); : } : : /* Count up total space in data items without actually scanning 'em */ : olddataitemstotal = rightspace - (int) PageGetExactFreeSpace(page); 0.00 : 4a61f6: 89 b5 3c fe ff ff mov %esi,-0x1c4(%rbp) : : state.newitemsz = newitemsz; 0.00 : 4a61fc: 48 83 c0 04 add $0x4,%rax 0.00 : 4a6200: 48 89 45 80 mov %rax,-0x80(%rbp) : state.is_leaf = P_ISLEAF(opaque); 0.00 : 4a6204: 41 0f b7 45 0c movzwl 0xc(%r13),%eax 0.00 : 4a6209: 83 e0 01 and $0x1,%eax 0.00 : 4a620c: 88 45 8c mov %al,-0x74(%rbp) : state.is_rightmost = P_RIGHTMOST(opaque); 0.00 : 4a620f: 45 8b 75 04 mov 0x4(%r13),%r14d : state.have_split = false; 0.00 : 4a6213: c6 45 9c 00 movb $0x0,-0x64(%rbp) : /* Count up total space in data items without actually scanning 'em */ : olddataitemstotal = rightspace - (int) PageGetExactFreeSpace(page); : : state.newitemsz = newitemsz; : state.is_leaf = P_ISLEAF(opaque); : state.is_rightmost = P_RIGHTMOST(opaque); 0.00 : 4a6217: 45 85 f6 test %r14d,%r14d 0.00 : 4a621a: 0f 94 45 8d sete -0x73(%rbp) : state.have_split = false; : if (state.is_leaf) 0.00 : 4a621e: 84 c0 test %al,%al 0.00 : 4a6220: 0f 85 2a 01 00 00 jne 4a6350 <_bt_insertonpg+0x280> : state.fillfactor = RelationGetFillFactor(rel, : BTREE_DEFAULT_FILLFACTOR); : else : state.fillfactor = BTREE_NONLEAF_FILLFACTOR; 0.00 : 4a6226: c7 45 88 46 00 00 00 movl $0x46,-0x78(%rbp) : * find a "good-enough" split, where good-enough is defined as an : * imbalance in free space of no more than pagesize/16 (arbitrary...) This : * should let us stop near the middle on most pages, instead of plowing to : * the end. : */ : goodenough = leftspace / 16; 0.00 : 4a622d: 8d 43 0f lea 0xf(%rbx),%eax 0.00 : 4a6230: 85 db test %ebx,%ebx : else : state.fillfactor = BTREE_NONLEAF_FILLFACTOR; : state.newitemonleft = false; /* these just to keep compiler quiet */ : state.firstright = 0; : state.best_delta = 0; : state.leftspace = leftspace; 0.00 : 4a6232: 89 5d 90 mov %ebx,-0x70(%rbp) : state.rightspace = rightspace; : state.olddataitemstotal = olddataitemstotal; : state.newitemoff = newitemoff; 0.00 : 4a6235: 0f b7 8d 06 fe ff ff movzwl -0x1fa(%rbp),%ecx : state.newitemonleft = false; /* these just to keep compiler quiet */ : state.firstright = 0; : state.best_delta = 0; : state.leftspace = leftspace; : state.rightspace = rightspace; : state.olddataitemstotal = olddataitemstotal; 0.00 : 4a623c: 8b 95 3c fe ff ff mov -0x1c4(%rbp),%edx : * find a "good-enough" split, where good-enough is defined as an : * imbalance in free space of no more than pagesize/16 (arbitrary...) This : * should let us stop near the middle on most pages, instead of plowing to : * the end. : */ : goodenough = leftspace / 16; 0.00 : 4a6242: 0f 48 d8 cmovs %eax,%ebx : if (state.is_leaf) : state.fillfactor = RelationGetFillFactor(rel, : BTREE_DEFAULT_FILLFACTOR); : else : state.fillfactor = BTREE_NONLEAF_FILLFACTOR; : state.newitemonleft = false; /* these just to keep compiler quiet */ 0.00 : 4a6245: c6 45 9d 00 movb $0x0,-0x63(%rbp) : state.firstright = 0; 0.00 : 4a6249: 66 c7 45 9e 00 00 movw $0x0,-0x62(%rbp) : * find a "good-enough" split, where good-enough is defined as an : * imbalance in free space of no more than pagesize/16 (arbitrary...) This : * should let us stop near the middle on most pages, instead of plowing to : * the end. : */ : goodenough = leftspace / 16; 0.00 : 4a624f: c1 fb 04 sar $0x4,%ebx : BTREE_DEFAULT_FILLFACTOR); : else : state.fillfactor = BTREE_NONLEAF_FILLFACTOR; : state.newitemonleft = false; /* these just to keep compiler quiet */ : state.firstright = 0; : state.best_delta = 0; 0.00 : 4a6252: c7 45 a0 00 00 00 00 movl $0x0,-0x60(%rbp) : state.leftspace = leftspace; : state.rightspace = rightspace; 0.00 : 4a6259: 44 89 65 94 mov %r12d,-0x6c(%rbp) : * find a "good-enough" split, where good-enough is defined as an : * imbalance in free space of no more than pagesize/16 (arbitrary...) This : * should let us stop near the middle on most pages, instead of plowing to : * the end. : */ : goodenough = leftspace / 16; 0.00 : 4a625d: 89 9d 00 fe ff ff mov %ebx,-0x200(%rbp) : * Scan through the data items and calculate space usage for a split at : * each possible position. : */ : olddataitemstoleft = 0; : goodenoughfound = false; : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4a6263: 48 8b 9d 28 fe ff ff mov -0x1d8(%rbp),%rbx 0.00 : 4a626a: 45 31 ff xor %r15d,%r15d : state.newitemonleft = false; /* these just to keep compiler quiet */ : state.firstright = 0; : state.best_delta = 0; : state.leftspace = leftspace; : state.rightspace = rightspace; : state.olddataitemstotal = olddataitemstotal; 0.00 : 4a626d: 89 55 98 mov %edx,-0x68(%rbp) : state.newitemoff = newitemoff; 0.00 : 4a6270: 66 89 4d 8e mov %cx,-0x72(%rbp) : * Scan through the data items and calculate space usage for a split at : * each possible position. : */ : olddataitemstoleft = 0; : goodenoughfound = false; : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4a6274: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4a6278: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4a627c: 76 0e jbe 4a628c <_bt_insertonpg+0x1bc> 0.00 : 4a627e: 0f b7 c0 movzwl %ax,%eax 0.00 : 4a6281: 48 83 e8 18 sub $0x18,%rax 0.00 : 4a6285: 49 89 c7 mov %rax,%r15 0.00 : 4a6288: 49 c1 ef 02 shr $0x2,%r15 : : for (offnum = P_FIRSTDATAKEY(opaque); 0.00 : 4a628c: 41 83 7d 04 01 cmpl $0x1,0x4(%r13) 0.00 : 4a6291: 45 19 e4 sbb %r12d,%r12d 0.00 : 4a6294: 41 83 c4 02 add $0x2,%r12d : offnum <= maxoff; 0.00 : 4a6298: 66 45 39 e7 cmp %r12w,%r15w 0.00 : 4a629c: 0f 82 1e 01 00 00 jb 4a63c0 <_bt_insertonpg+0x2f0> 0.00 : 4a62a2: 45 31 f6 xor %r14d,%r14d 0.00 : 4a62a5: eb 44 jmp 4a62eb <_bt_insertonpg+0x21b> 0.00 : 4a62a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a62ae: 00 00 : if (offnum > newitemoff) : _bt_checksplitloc(&state, offnum, true, : olddataitemstoleft, itemsz); : : else if (offnum < newitemoff) : _bt_checksplitloc(&state, offnum, false, 0.00 : 4a62b0: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 4a62b4: 41 0f b7 f4 movzwl %r12w,%esi 0.00 : 4a62b8: 4d 89 e8 mov %r13,%r8 0.00 : 4a62bb: 44 89 f1 mov %r14d,%ecx 0.00 : 4a62be: 31 d2 xor %edx,%edx 0.00 : 4a62c0: e8 db fc ff ff callq 4a5fa0 <_bt_checksplitloc> : _bt_checksplitloc(&state, offnum, false, : olddataitemstoleft, itemsz); : } : : /* Abort scan once we find a good-enough choice */ : if (state.have_split && state.best_delta <= goodenough) 0.00 : 4a62c5: 80 7d 9c 00 cmpb $0x0,-0x64(%rbp) 0.00 : 4a62c9: 74 0f je 4a62da <_bt_insertonpg+0x20a> 0.00 : 4a62cb: 8b 85 00 fe ff ff mov -0x200(%rbp),%eax 0.00 : 4a62d1: 3b 45 a0 cmp -0x60(%rbp),%eax 0.00 : 4a62d4: 0f 8d 15 01 00 00 jge 4a63ef <_bt_insertonpg+0x31f> 0.00 : 4a62da: 41 83 c4 01 add $0x1,%r12d : olddataitemstoleft = 0; : goodenoughfound = false; : maxoff = PageGetMaxOffsetNumber(page); : : for (offnum = P_FIRSTDATAKEY(opaque); : offnum <= maxoff; 0.00 : 4a62de: 66 45 39 e7 cmp %r12w,%r15w 0.00 : 4a62e2: 0f 82 d8 00 00 00 jb 4a63c0 <_bt_insertonpg+0x2f0> : { : goodenoughfound = true; : break; : } : : olddataitemstoleft += itemsz; 0.00 : 4a62e8: 45 01 ee add %r13d,%r14d : offnum = OffsetNumberNext(offnum)) : { : Size itemsz; : : itemid = PageGetItemId(page, offnum); : itemsz = MAXALIGN(ItemIdGetLength(itemid)) + sizeof(ItemIdData); 0.00 : 4a62eb: 48 8b b5 28 fe ff ff mov -0x1d8(%rbp),%rsi 0.00 : 4a62f2: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 4a62f6: 0f b7 44 86 16 movzwl 0x16(%rsi,%rax,4),%eax 0.00 : 4a62fb: 66 d1 e8 shr %ax 0.00 : 4a62fe: 48 83 c0 07 add $0x7,%rax 0.00 : 4a6302: 25 f8 ff 00 00 and $0xfff8,%eax : : /* : * Will the new item go to left or right of split? : */ : if (offnum > newitemoff) 0.00 : 4a6307: 66 44 39 a5 06 fe ff cmp %r12w,-0x1fa(%rbp) 0.00 : 4a630e: ff : offnum = OffsetNumberNext(offnum)) : { : Size itemsz; : : itemid = PageGetItemId(page, offnum); : itemsz = MAXALIGN(ItemIdGetLength(itemid)) + sizeof(ItemIdData); 0.00 : 4a630f: 4c 8d 68 04 lea 0x4(%rax),%r13 : : /* : * Will the new item go to left or right of split? : */ : if (offnum > newitemoff) 0.00 : 4a6313: 0f 82 87 00 00 00 jb 4a63a0 <_bt_insertonpg+0x2d0> : _bt_checksplitloc(&state, offnum, true, : olddataitemstoleft, itemsz); : : else if (offnum < newitemoff) 0.00 : 4a6319: 77 95 ja 4a62b0 <_bt_insertonpg+0x1e0> : _bt_checksplitloc(&state, offnum, false, : olddataitemstoleft, itemsz); : else : { : /* need to try it both ways! */ : _bt_checksplitloc(&state, offnum, true, 0.00 : 4a631b: 41 0f b7 dc movzwl %r12w,%ebx 0.00 : 4a631f: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 4a6323: 4d 89 e8 mov %r13,%r8 0.00 : 4a6326: 44 89 f1 mov %r14d,%ecx 0.00 : 4a6329: 89 de mov %ebx,%esi 0.00 : 4a632b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4a6330: e8 6b fc ff ff callq 4a5fa0 <_bt_checksplitloc> : olddataitemstoleft, itemsz); : : _bt_checksplitloc(&state, offnum, false, 0.00 : 4a6335: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 4a6339: 4d 89 e8 mov %r13,%r8 0.00 : 4a633c: 44 89 f1 mov %r14d,%ecx 0.00 : 4a633f: 31 d2 xor %edx,%edx 0.00 : 4a6341: 89 de mov %ebx,%esi 0.00 : 4a6343: e8 58 fc ff ff callq 4a5fa0 <_bt_checksplitloc> 0.00 : 4a6348: e9 78 ff ff ff jmpq 4a62c5 <_bt_insertonpg+0x1f5> 0.00 : 4a634d: 0f 1f 00 nopl (%rax) : state.newitemsz = newitemsz; : state.is_leaf = P_ISLEAF(opaque); : state.is_rightmost = P_RIGHTMOST(opaque); : state.have_split = false; : if (state.is_leaf) : state.fillfactor = RelationGetFillFactor(rel, 0.00 : 4a6350: 48 8b 85 20 fe ff ff mov -0x1e0(%rbp),%rax 0.00 : 4a6357: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 4a635e: b8 5a 00 00 00 mov $0x5a,%eax 0.00 : 4a6363: 48 85 d2 test %rdx,%rdx 0.00 : 4a6366: 74 03 je 4a636b <_bt_insertonpg+0x29b> 0.00 : 4a6368: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 4a636b: 89 45 88 mov %eax,-0x78(%rbp) 0.00 : 4a636e: e9 ba fe ff ff jmpq 4a622d <_bt_insertonpg+0x15d> 0.00 : 4a6373: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* The right page will have the same high key as the old page */ : if (!P_RIGHTMOST(opaque)) : { : itemid = PageGetItemId(page, P_HIKEY); : rightspace -= (int) (MAXALIGN(ItemIdGetLength(itemid)) + 0.00 : 4a6378: 48 8b 8d 28 fe ff ff mov -0x1d8(%rbp),%rcx 0.00 : 4a637f: 44 8d 60 d4 lea -0x2c(%rax),%r12d 0.00 : 4a6383: 0f b7 41 1a movzwl 0x1a(%rcx),%eax 0.00 : 4a6387: 66 d1 e8 shr %ax 0.00 : 4a638a: 83 c0 07 add $0x7,%eax 0.00 : 4a638d: 25 f8 ff 00 00 and $0xfff8,%eax 0.00 : 4a6392: 41 29 c4 sub %eax,%r12d 0.00 : 4a6395: e9 44 fe ff ff jmpq 4a61de <_bt_insertonpg+0x10e> 0.00 : 4a639a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Will the new item go to left or right of split? : */ : if (offnum > newitemoff) : _bt_checksplitloc(&state, offnum, true, 0.00 : 4a63a0: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 4a63a4: 41 0f b7 f4 movzwl %r12w,%esi 0.00 : 4a63a8: 4d 89 e8 mov %r13,%r8 0.00 : 4a63ab: 44 89 f1 mov %r14d,%ecx 0.00 : 4a63ae: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4a63b3: e8 e8 fb ff ff callq 4a5fa0 <_bt_checksplitloc> 0.00 : 4a63b8: e9 08 ff ff ff jmpq 4a62c5 <_bt_insertonpg+0x1f5> 0.00 : 4a63bd: 0f 1f 00 nopl (%rax) : /* : * If the new item goes as the last item, check for splitting so that all : * the old items go to the left page and the new item goes to the right : * page. : */ : if (newitemoff > maxoff && !goodenoughfound) 0.00 : 4a63c0: 66 44 39 bd 06 fe ff cmp %r15w,-0x1fa(%rbp) 0.00 : 4a63c7: ff 0.00 : 4a63c8: 76 1b jbe 4a63e5 <_bt_insertonpg+0x315> : _bt_checksplitloc(&state, newitemoff, false, olddataitemstotal, 0); 0.00 : 4a63ca: 0f b7 b5 06 fe ff ff movzwl -0x1fa(%rbp),%esi 0.00 : 4a63d1: 8b 8d 3c fe ff ff mov -0x1c4(%rbp),%ecx 0.00 : 4a63d7: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 4a63db: 45 31 c0 xor %r8d,%r8d 0.00 : 4a63de: 31 d2 xor %edx,%edx 0.00 : 4a63e0: e8 bb fb ff ff callq 4a5fa0 <_bt_checksplitloc> : : /* : * I believe it is not possible to fail to find a feasible split, but just : * in case ... : */ : if (!state.have_split) 0.00 : 4a63e5: 80 7d 9c 00 cmpb $0x0,-0x64(%rbp) 0.00 : 4a63e9: 0f 84 fe 0d 00 00 je 4a71ed <_bt_insertonpg+0x111d> : elog(ERROR, "could not find a feasible split point for index \"%s\"", : RelationGetRelationName(rel)); : : *newitemonleft = state.newitemonleft; : return state.firstright; 0.00 : 4a63ef: 0f b7 75 9e movzwl -0x62(%rbp),%esi : */ : if (!state.have_split) : elog(ERROR, "could not find a feasible split point for index \"%s\"", : RelationGetRelationName(rel)); : : *newitemonleft = state.newitemonleft; 0.00 : 4a63f3: 0f b6 5d 9d movzbl -0x63(%rbp),%ebx : OffsetNumber i; : bool isroot; : bool isleaf; : : /* Acquire a new page to split into */ : rbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); 0.00 : 4a63f7: ba 02 00 00 00 mov $0x2,%edx : firstright = _bt_findsplitloc(rel, page, : newitemoff, itemsz, : &newitemonleft); : : /* split the buffer into left and right halves */ : rbuf = _bt_split(rel, buf, cbuf, firstright, 0.00 : 4a63fc: 0f b7 85 06 fe ff ff movzwl -0x1fa(%rbp),%eax : OffsetNumber i; : bool isroot; : bool isleaf; : : /* Acquire a new page to split into */ : rbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); 0.00 : 4a6403: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi : if (!state.have_split) : elog(ERROR, "could not find a feasible split point for index \"%s\"", : RelationGetRelationName(rel)); : : *newitemonleft = state.newitemonleft; : return state.firstright; 0.00 : 4a640a: 66 89 b5 34 fe ff ff mov %si,-0x1cc(%rbp) : OffsetNumber i; : bool isroot; : bool isleaf; : : /* Acquire a new page to split into */ : rbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); 0.00 : 4a6411: be ff ff ff ff mov $0xffffffff,%esi : */ : if (!state.have_split) : elog(ERROR, "could not find a feasible split point for index \"%s\"", : RelationGetRelationName(rel)); : : *newitemonleft = state.newitemonleft; 0.00 : 4a6416: 88 9d 37 fe ff ff mov %bl,-0x1c9(%rbp) : firstright = _bt_findsplitloc(rel, page, : newitemoff, itemsz, : &newitemonleft); : : /* split the buffer into left and right halves */ : rbuf = _bt_split(rel, buf, cbuf, firstright, 0.00 : 4a641c: 66 89 45 cc mov %ax,-0x34(%rbp) : OffsetNumber i; : bool isroot; : bool isleaf; : : /* Acquire a new page to split into */ : rbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); 0.00 : 4a6420: e8 2b 2c 00 00 callq 4a9050 <_bt_getbuf> : * principle we shouldn't need to worry about rightpage either, because it : * hasn't been linked into the btree page structure; but to avoid leaving : * possibly-confusing junk behind, we are careful to rewrite rightpage as : * zeroes before throwing any error. : */ : origpage = BufferGetPage(buf); 0.00 : 4a6425: 44 8b ad 1c fe ff ff mov -0x1e4(%rbp),%r13d : OffsetNumber i; : bool isroot; : bool isleaf; : : /* Acquire a new page to split into */ : rbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); 0.00 : 4a642c: 89 85 38 fe ff ff mov %eax,-0x1c8(%rbp) : * principle we shouldn't need to worry about rightpage either, because it : * hasn't been linked into the btree page structure; but to avoid leaving : * possibly-confusing junk behind, we are careful to rewrite rightpage as : * zeroes before throwing any error. : */ : origpage = BufferGetPage(buf); 0.00 : 4a6432: 45 85 ed test %r13d,%r13d 0.00 : 4a6435: 0f 88 cd 06 00 00 js 4a6b08 <_bt_insertonpg+0xa38> 0.00 : 4a643b: 8b 85 1c fe ff ff mov -0x1e4(%rbp),%eax 0.00 : 4a6441: 48 8b 15 b0 96 71 00 mov 0x7196b0(%rip),%rdx # bbfaf8 0.00 : 4a6448: 83 e8 01 sub $0x1,%eax 0.00 : 4a644b: 48 98 cltq 0.00 : 4a644d: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4a6451: 48 01 d0 add %rdx,%rax 0.00 : 4a6454: 48 89 85 80 fe ff ff mov %rax,-0x180(%rbp) : leftpage = PageGetTempPage(origpage); 0.00 : 4a645b: 48 8b bd 80 fe ff ff mov -0x180(%rbp),%rdi 0.00 : 4a6462: e8 b9 fd 1e 00 callq 696220 : rightpage = BufferGetPage(rbuf); 0.00 : 4a6467: 44 8b a5 38 fe ff ff mov -0x1c8(%rbp),%r12d : * hasn't been linked into the btree page structure; but to avoid leaving : * possibly-confusing junk behind, we are careful to rewrite rightpage as : * zeroes before throwing any error. : */ : origpage = BufferGetPage(buf); : leftpage = PageGetTempPage(origpage); 0.00 : 4a646e: 48 89 85 78 fe ff ff mov %rax,-0x188(%rbp) : rightpage = BufferGetPage(rbuf); 0.00 : 4a6475: 45 85 e4 test %r12d,%r12d 0.00 : 4a6478: 0f 88 fa 05 00 00 js 4a6a78 <_bt_insertonpg+0x9a8> 0.00 : 4a647e: 8b 85 38 fe ff ff mov -0x1c8(%rbp),%eax 0.00 : 4a6484: 48 8b 0d 6d 96 71 00 mov 0x71966d(%rip),%rcx # bbfaf8 0.00 : 4a648b: 83 e8 01 sub $0x1,%eax 0.00 : 4a648e: 48 98 cltq 0.00 : 4a6490: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4a6494: 48 01 c8 add %rcx,%rax 0.00 : 4a6497: 48 89 85 70 fe ff ff mov %rax,-0x190(%rbp) : : origpagenumber = BufferGetBlockNumber(buf); 0.00 : 4a649e: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi : item = (IndexTuple) PageGetItem(origpage, itemid); : if (PageAddItem(rightpage, (Item) item, itemsz, rightoff, : false, false) == InvalidOffsetNumber) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); : elog(ERROR, "failed to add hikey to the right sibling" 0.00 : 4a64a4: 41 bf 01 00 00 00 mov $0x1,%r15d : */ : origpage = BufferGetPage(buf); : leftpage = PageGetTempPage(origpage); : rightpage = BufferGetPage(rbuf); : : origpagenumber = BufferGetBlockNumber(buf); 0.00 : 4a64aa: e8 81 db 1c 00 callq 674030 : rightpagenumber = BufferGetBlockNumber(rbuf); 0.00 : 4a64af: 8b bd 38 fe ff ff mov -0x1c8(%rbp),%edi : */ : origpage = BufferGetPage(buf); : leftpage = PageGetTempPage(origpage); : rightpage = BufferGetPage(rbuf); : : origpagenumber = BufferGetBlockNumber(buf); 0.00 : 4a64b5: 89 85 6c fe ff ff mov %eax,-0x194(%rbp) : rightpagenumber = BufferGetBlockNumber(rbuf); 0.00 : 4a64bb: e8 70 db 1c 00 callq 674030 : : _bt_pageinit(leftpage, BufferGetPageSize(buf)); 0.00 : 4a64c0: 48 8b bd 78 fe ff ff mov -0x188(%rbp),%rdi 0.00 : 4a64c7: be 00 20 00 00 mov $0x2000,%esi : origpage = BufferGetPage(buf); : leftpage = PageGetTempPage(origpage); : rightpage = BufferGetPage(rbuf); : : origpagenumber = BufferGetBlockNumber(buf); : rightpagenumber = BufferGetBlockNumber(rbuf); 0.00 : 4a64cc: 89 85 68 fe ff ff mov %eax,-0x198(%rbp) : : _bt_pageinit(leftpage, BufferGetPageSize(buf)); 0.00 : 4a64d2: e8 79 2a 00 00 callq 4a8f50 <_bt_pageinit> : /* : * Copy the original page's LSN into leftpage, which will become the : * updated version of the page. We need this because XLogInsert will : * examine the LSN and possibly dump it in a page image. : */ : PageSetLSN(leftpage, PageGetLSN(origpage)); 0.00 : 4a64d7: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 4a64de: 48 8b b5 78 fe ff ff mov -0x188(%rbp),%rsi 0.00 : 4a64e5: 8b 03 mov (%rbx),%eax 0.00 : 4a64e7: 89 06 mov %eax,(%rsi) 0.00 : 4a64e9: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 4a64ec: 89 46 04 mov %eax,0x4(%rsi) : : /* init btree private data */ : oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage); 0.00 : 4a64ef: 0f b7 43 10 movzwl 0x10(%rbx),%eax : lopaque = (BTPageOpaque) PageGetSpecialPointer(leftpage); : ropaque = (BTPageOpaque) PageGetSpecialPointer(rightpage); 0.00 : 4a64f3: 48 8b 95 70 fe ff ff mov -0x190(%rbp),%rdx : * examine the LSN and possibly dump it in a page image. : */ : PageSetLSN(leftpage, PageGetLSN(origpage)); : : /* init btree private data */ : oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage); 0.00 : 4a64fa: 48 01 d8 add %rbx,%rax 0.00 : 4a64fd: 48 89 85 58 fe ff ff mov %rax,-0x1a8(%rbp) : lopaque = (BTPageOpaque) PageGetSpecialPointer(leftpage); : ropaque = (BTPageOpaque) PageGetSpecialPointer(rightpage); 0.00 : 4a6504: 0f b7 42 10 movzwl 0x10(%rdx),%eax : : isroot = P_ISROOT(oopaque); 0.00 : 4a6508: 48 8b 8d 58 fe ff ff mov -0x1a8(%rbp),%rcx : */ : PageSetLSN(leftpage, PageGetLSN(origpage)); : : /* init btree private data */ : oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage); : lopaque = (BTPageOpaque) PageGetSpecialPointer(leftpage); 0.00 : 4a650f: 0f b7 5e 10 movzwl 0x10(%rsi),%ebx : ropaque = (BTPageOpaque) PageGetSpecialPointer(rightpage); 0.00 : 4a6513: 48 01 d0 add %rdx,%rax 0.00 : 4a6516: 48 89 85 60 fe ff ff mov %rax,-0x1a0(%rbp) : : isroot = P_ISROOT(oopaque); 0.00 : 4a651d: 0f b7 49 0c movzwl 0xc(%rcx),%ecx : */ : PageSetLSN(leftpage, PageGetLSN(origpage)); : : /* init btree private data */ : oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage); : lopaque = (BTPageOpaque) PageGetSpecialPointer(leftpage); 0.00 : 4a6521: 48 01 f3 add %rsi,%rbx : isleaf = P_ISLEAF(oopaque); : : /* if we're splitting this page, it won't be the root when we're done */ : /* also, clear the SPLIT_END and HAS_GARBAGE flags in both pages */ : lopaque->btpo_flags = oopaque->btpo_flags; : lopaque->btpo_flags &= ~(BTP_ROOT | BTP_SPLIT_END | BTP_HAS_GARBAGE); 0.00 : 4a6524: 89 c8 mov %ecx,%eax : /* init btree private data */ : oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage); : lopaque = (BTPageOpaque) PageGetSpecialPointer(leftpage); : ropaque = (BTPageOpaque) PageGetSpecialPointer(rightpage); : : isroot = P_ISROOT(oopaque); 0.00 : 4a6526: 66 89 8d 8c fe ff ff mov %cx,-0x174(%rbp) : isleaf = P_ISLEAF(oopaque); : : /* if we're splitting this page, it won't be the root when we're done */ : /* also, clear the SPLIT_END and HAS_GARBAGE flags in both pages */ : lopaque->btpo_flags = oopaque->btpo_flags; : lopaque->btpo_flags &= ~(BTP_ROOT | BTP_SPLIT_END | BTP_HAS_GARBAGE); 0.00 : 4a652d: 83 e0 9d and $0xffffff9d,%eax 0.00 : 4a6530: 66 89 43 0c mov %ax,0xc(%rbx) : ropaque->btpo_flags = lopaque->btpo_flags; 0.00 : 4a6534: 48 8b b5 60 fe ff ff mov -0x1a0(%rbp),%rsi 0.00 : 4a653b: 66 89 46 0c mov %ax,0xc(%rsi) : /* set flag in left page indicating that the right page has no downlink */ : lopaque->btpo_flags |= BTP_INCOMPLETE_SPLIT; 0.00 : 4a653f: 66 81 4b 0c 80 00 orw $0x80,0xc(%rbx) : lopaque->btpo_prev = oopaque->btpo_prev; 0.00 : 4a6545: 48 8b 95 58 fe ff ff mov -0x1a8(%rbp),%rdx 0.00 : 4a654c: 8b 02 mov (%rdx),%eax 0.00 : 4a654e: 89 03 mov %eax,(%rbx) : lopaque->btpo_next = rightpagenumber; 0.00 : 4a6550: 8b 8d 68 fe ff ff mov -0x198(%rbp),%ecx 0.00 : 4a6556: 89 4b 04 mov %ecx,0x4(%rbx) : ropaque->btpo_prev = origpagenumber; 0.00 : 4a6559: 8b 85 6c fe ff ff mov -0x194(%rbp),%eax 0.00 : 4a655f: 89 06 mov %eax,(%rsi) : ropaque->btpo_next = oopaque->btpo_next; 0.00 : 4a6561: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 4a6564: 89 46 04 mov %eax,0x4(%rsi) : lopaque->btpo.level = ropaque->btpo.level = oopaque->btpo.level; 0.00 : 4a6567: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 4a656a: 89 46 08 mov %eax,0x8(%rsi) 0.00 : 4a656d: 89 43 08 mov %eax,0x8(%rbx) : /* Since we already have write-lock on both pages, ok to read cycleid */ : lopaque->btpo_cycleid = _bt_vacuum_cycleid(rel); 0.00 : 4a6570: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6577: e8 64 7a 00 00 callq 4adfe0 <_bt_vacuum_cycleid> 0.00 : 4a657c: 66 89 43 0e mov %ax,0xe(%rbx) : ropaque->btpo_cycleid = lopaque->btpo_cycleid; 0.00 : 4a6580: 48 8b 95 60 fe ff ff mov -0x1a0(%rbp),%rdx 0.00 : 4a6587: 66 89 42 0e mov %ax,0xe(%rdx) : * rightmost page case), all the items on the right half will be user : * data. : */ : rightoff = P_HIKEY; : : if (!P_RIGHTMOST(oopaque)) 0.00 : 4a658b: 48 8b 8d 58 fe ff ff mov -0x1a8(%rbp),%rcx 0.00 : 4a6592: 8b 59 04 mov 0x4(%rcx),%ebx 0.00 : 4a6595: 85 db test %ebx,%ebx 0.00 : 4a6597: 0f 85 4b 04 00 00 jne 4a69e8 <_bt_insertonpg+0x918> : * The "high key" for the new left page will be the first key that's going : * to go into the new right page. This might be either the existing data : * item at position firstright, or the incoming tuple. : */ : leftoff = P_HIKEY; : if (!newitemonleft && newitemoff == firstright) 0.00 : 4a659d: 80 bd 37 fe ff ff 00 cmpb $0x0,-0x1c9(%rbp) 0.00 : 4a65a4: 0f 94 85 8b fe ff ff sete -0x175(%rbp) 0.00 : 4a65ab: 75 1b jne 4a65c8 <_bt_insertonpg+0x4f8> 0.00 : 4a65ad: 0f b7 85 34 fe ff ff movzwl -0x1cc(%rbp),%eax 0.00 : 4a65b4: 48 8b b5 08 fe ff ff mov -0x1f8(%rbp),%rsi 0.00 : 4a65bb: 66 3b 45 cc cmp -0x34(%rbp),%ax 0.00 : 4a65bf: 48 8b 95 90 fe ff ff mov -0x170(%rbp),%rdx 0.00 : 4a65c6: 74 2d je 4a65f5 <_bt_insertonpg+0x525> : item = newitem; : } : else : { : /* existing item at firstright will become first on right page */ : itemid = PageGetItemId(origpage, firstright); 0.00 : 4a65c8: 0f b7 85 34 fe ff ff movzwl -0x1cc(%rbp),%eax : itemsz = ItemIdGetLength(itemid); 0.00 : 4a65cf: 48 8b 8d 80 fe ff ff mov -0x180(%rbp),%rcx : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a65d6: 48 89 ce mov %rcx,%rsi : } : else : { : /* existing item at firstright will become first on right page */ : itemid = PageGetItemId(origpage, firstright); : itemsz = ItemIdGetLength(itemid); 0.00 : 4a65d9: 48 83 c0 03 add $0x3,%rax 0.00 : 4a65dd: 0f b7 54 81 0a movzwl 0xa(%rcx,%rax,4),%edx : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a65e2: 0f b7 44 81 08 movzwl 0x8(%rcx,%rax,4),%eax : } : else : { : /* existing item at firstright will become first on right page */ : itemid = PageGetItemId(origpage, firstright); : itemsz = ItemIdGetLength(itemid); 0.00 : 4a65e7: 66 d1 ea shr %dx : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a65ea: 25 ff 7f 00 00 and $0x7fff,%eax : } : else : { : /* existing item at firstright will become first on right page */ : itemid = PageGetItemId(origpage, firstright); : itemsz = ItemIdGetLength(itemid); 0.00 : 4a65ef: 0f b7 d2 movzwl %dx,%edx : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a65f2: 48 01 c6 add %rax,%rsi : } : if (PageAddItem(leftpage, (Item) item, itemsz, leftoff, 0.00 : 4a65f5: 48 8b bd 78 fe ff ff mov -0x188(%rbp),%rdi 0.00 : 4a65fc: 45 31 c9 xor %r9d,%r9d 0.00 : 4a65ff: 45 31 c0 xor %r8d,%r8d 0.00 : 4a6602: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4a6607: e8 74 f8 1e 00 callq 695e80 0.00 : 4a660c: 66 85 c0 test %ax,%ax 0.00 : 4a660f: 0f 84 77 0d 00 00 je 4a738c <_bt_insertonpg+0x12bc> : * Now transfer all the data items to the appropriate page. : * : * Note: we *must* insert at least the right page's items in item-number : * order, for the benefit of _bt_restore_page(). : */ : maxoff = PageGetMaxOffsetNumber(origpage); 0.00 : 4a6615: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 4a661c: 0f b7 46 0c movzwl 0xc(%rsi),%eax 0.00 : 4a6620: 66 c7 85 40 fe ff ff movw $0x0,-0x1c0(%rbp) 0.00 : 4a6627: 00 00 0.00 : 4a6629: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4a662d: 76 12 jbe 4a6641 <_bt_insertonpg+0x571> 0.00 : 4a662f: 0f b7 c0 movzwl %ax,%eax 0.00 : 4a6632: 48 83 e8 18 sub $0x18,%rax 0.00 : 4a6636: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4a663a: 66 89 85 40 fe ff ff mov %ax,-0x1c0(%rbp) : : for (i = P_FIRSTDATAKEY(oopaque); i <= maxoff; i = OffsetNumberNext(i)) 0.00 : 4a6641: 48 8b 85 58 fe ff ff mov -0x1a8(%rbp),%rax 0.00 : 4a6648: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 4a664c: 19 db sbb %ebx,%ebx 0.00 : 4a664e: 83 c3 02 add $0x2,%ebx 0.00 : 4a6651: 66 39 9d 40 fe ff ff cmp %bx,-0x1c0(%rbp) 0.00 : 4a6658: 0f 82 ab 00 00 00 jb 4a6709 <_bt_insertonpg+0x639> 0.00 : 4a665e: 41 be 02 00 00 00 mov $0x2,%r14d 0.00 : 4a6664: eb 32 jmp 4a6698 <_bt_insertonpg+0x5c8> 0.00 : 4a6666: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4a666d: 00 00 00 : } : : /* decide which page to put it on */ : if (i < firstright) : { : if (!_bt_pgaddtup(leftpage, itemsz, item, leftoff)) 0.00 : 4a6670: 48 8b bd 78 fe ff ff mov -0x188(%rbp),%rdi 0.00 : 4a6677: 41 0f b7 ce movzwl %r14w,%ecx 0.00 : 4a667b: e8 e0 f9 ff ff callq 4a6060 <_bt_pgaddtup> 0.00 : 4a6680: 84 c0 test %al,%al 0.00 : 4a6682: 0f 84 58 08 00 00 je 4a6ee0 <_bt_insertonpg+0xe10> : memset(rightpage, 0, BufferGetPageSize(rbuf)); : elog(ERROR, "failed to add old item to the left sibling" : " while splitting block %u of index \"%s\"", : origpagenumber, RelationGetRelationName(rel)); : } : leftoff = OffsetNumberNext(leftoff); 0.00 : 4a6688: 41 83 c6 01 add $0x1,%r14d : memset(rightpage, 0, BufferGetPageSize(rbuf)); : elog(ERROR, "failed to add old item to the right sibling" : " while splitting block %u of index \"%s\"", : origpagenumber, RelationGetRelationName(rel)); : } : rightoff = OffsetNumberNext(rightoff); 0.00 : 4a668c: 83 c3 01 add $0x1,%ebx : * Note: we *must* insert at least the right page's items in item-number : * order, for the benefit of _bt_restore_page(). : */ : maxoff = PageGetMaxOffsetNumber(origpage); : : for (i = P_FIRSTDATAKEY(oopaque); i <= maxoff; i = OffsetNumberNext(i)) 0.00 : 4a668f: 66 3b 9d 40 fe ff ff cmp -0x1c0(%rbp),%bx 0.00 : 4a6696: 77 71 ja 4a6709 <_bt_insertonpg+0x639> : { : itemid = PageGetItemId(origpage, i); : itemsz = ItemIdGetLength(itemid); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:1094 12.50 : 4a6698: 48 8b 95 80 fe ff ff mov -0x180(%rbp),%rdx : */ : maxoff = PageGetMaxOffsetNumber(origpage); : : for (i = P_FIRSTDATAKEY(oopaque); i <= maxoff; i = OffsetNumberNext(i)) : { : itemid = PageGetItemId(origpage, i); 0.00 : 4a669f: 0f b7 c3 movzwl %bx,%eax : itemsz = ItemIdGetLength(itemid); 0.00 : 4a66a2: 48 83 c0 03 add $0x3,%rax 0.00 : 4a66a6: 44 0f b7 6c 82 0a movzwl 0xa(%rdx,%rax,4),%r13d : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a66ac: 44 0f b7 64 82 08 movzwl 0x8(%rdx,%rax,4),%r12d : maxoff = PageGetMaxOffsetNumber(origpage); : : for (i = P_FIRSTDATAKEY(oopaque); i <= maxoff; i = OffsetNumberNext(i)) : { : itemid = PageGetItemId(origpage, i); : itemsz = ItemIdGetLength(itemid); 0.00 : 4a66b2: 66 41 d1 ed shr %r13w : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a66b6: 66 41 81 e4 ff 7f and $0x7fff,%r12w : : /* does new item belong before this one? */ : if (i == newitemoff) 0.00 : 4a66bc: 66 3b 5d cc cmp -0x34(%rbp),%bx 0.00 : 4a66c0: 0f 84 c2 01 00 00 je 4a6888 <_bt_insertonpg+0x7b8> : : for (i = P_FIRSTDATAKEY(oopaque); i <= maxoff; i = OffsetNumberNext(i)) : { : itemid = PageGetItemId(origpage, i); : itemsz = ItemIdGetLength(itemid); : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a66c6: 48 8b 95 80 fe ff ff mov -0x180(%rbp),%rdx 0.00 : 4a66cd: 41 0f b7 c4 movzwl %r12w,%eax : maxoff = PageGetMaxOffsetNumber(origpage); : : for (i = P_FIRSTDATAKEY(oopaque); i <= maxoff; i = OffsetNumberNext(i)) : { : itemid = PageGetItemId(origpage, i); : itemsz = ItemIdGetLength(itemid); 0.00 : 4a66d1: 41 0f b7 f5 movzwl %r13w,%esi : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a66d5: 48 01 c2 add %rax,%rdx : rightoff = OffsetNumberNext(rightoff); : } : } : : /* decide which page to put it on */ : if (i < firstright) 0.00 : 4a66d8: 66 39 9d 34 fe ff ff cmp %bx,-0x1cc(%rbp) 0.00 : 4a66df: 77 8f ja 4a6670 <_bt_insertonpg+0x5a0> : } : leftoff = OffsetNumberNext(leftoff); : } : else : { : if (!_bt_pgaddtup(rightpage, itemsz, item, rightoff)) 0.00 : 4a66e1: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a66e8: 41 0f b7 cf movzwl %r15w,%ecx 0.00 : 4a66ec: e8 6f f9 ff ff callq 4a6060 <_bt_pgaddtup> 0.00 : 4a66f1: 84 c0 test %al,%al 0.00 : 4a66f3: 0f 84 9b 07 00 00 je 4a6e94 <_bt_insertonpg+0xdc4> : memset(rightpage, 0, BufferGetPageSize(rbuf)); : elog(ERROR, "failed to add old item to the right sibling" : " while splitting block %u of index \"%s\"", : origpagenumber, RelationGetRelationName(rel)); : } : rightoff = OffsetNumberNext(rightoff); 0.00 : 4a66f9: 41 83 c7 01 add $0x1,%r15d 0.00 : 4a66fd: 83 c3 01 add $0x1,%ebx : * Note: we *must* insert at least the right page's items in item-number : * order, for the benefit of _bt_restore_page(). : */ : maxoff = PageGetMaxOffsetNumber(origpage); : : for (i = P_FIRSTDATAKEY(oopaque); i <= maxoff; i = OffsetNumberNext(i)) 0.00 : 4a6700: 66 3b 9d 40 fe ff ff cmp -0x1c0(%rbp),%bx 0.00 : 4a6707: 76 8f jbe 4a6698 <_bt_insertonpg+0x5c8> : rightoff = OffsetNumberNext(rightoff); : } : } : : /* cope with possibility that newitem goes at the end */ : if (i <= newitemoff) 0.00 : 4a6709: 66 39 5d cc cmp %bx,-0x34(%rbp) 0.00 : 4a670d: 0f 83 7c 04 00 00 jae 4a6b8f <_bt_insertonpg+0xabf> : * writer will be holding a lock on that page and trying to move left, and : * all readers release locks on a page before trying to fetch its : * neighbors. : */ : : if (!P_RIGHTMOST(oopaque)) 0.00 : 4a6713: 48 8b 85 58 fe ff ff mov -0x1a8(%rbp),%rax 0.00 : 4a671a: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 4a671d: 85 f6 test %esi,%esi 0.00 : 4a671f: 0f 85 7b 03 00 00 jne 4a6aa0 <_bt_insertonpg+0x9d0> 0.00 : 4a6725: 31 db xor %ebx,%ebx 0.00 : 4a6727: 45 31 e4 xor %r12d,%r12d 0.00 : 4a672a: 45 31 f6 xor %r14d,%r14d : * : * NO EREPORT(ERROR) till right sibling is updated. We can get away with : * not starting the critical section till here because we haven't been : * scribbling on the original page yet; see comments above. : */ : START_CRIT_SECTION(); 0.00 : 4a672d: 8b 05 69 39 71 00 mov 0x713969(%rip),%eax # bba09c : * on the original page until we enter the critical section.) : * : * We need to do this before writing the WAL record, so that XLogInsert : * can WAL log an image of the page if necessary. : */ : PageRestoreTempPage(leftpage, origpage); 0.00 : 4a6733: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 4a673a: 48 8b bd 78 fe ff ff mov -0x188(%rbp),%rdi : * : * NO EREPORT(ERROR) till right sibling is updated. We can get away with : * not starting the critical section till here because we haven't been : * scribbling on the original page yet; see comments above. : */ : START_CRIT_SECTION(); 0.00 : 4a6741: 83 c0 01 add $0x1,%eax 0.00 : 4a6744: 89 05 52 39 71 00 mov %eax,0x713952(%rip) # bba09c : * on the original page until we enter the critical section.) : * : * We need to do this before writing the WAL record, so that XLogInsert : * can WAL log an image of the page if necessary. : */ : PageRestoreTempPage(leftpage, origpage); 0.00 : 4a674a: e8 51 fa 1e 00 callq 6961a0 : /* leftpage, lopaque must not be used below here */ : : MarkBufferDirty(buf); 0.00 : 4a674f: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi 0.00 : 4a6755: e8 96 e0 1c 00 callq 6747f0 : MarkBufferDirty(rbuf); 0.00 : 4a675a: 8b bd 38 fe ff ff mov -0x1c8(%rbp),%edi 0.00 : 4a6760: e8 8b e0 1c 00 callq 6747f0 : : if (!P_RIGHTMOST(ropaque)) 0.00 : 4a6765: 48 8b 8d 60 fe ff ff mov -0x1a0(%rbp),%rcx 0.00 : 4a676c: 44 8b 59 04 mov 0x4(%rcx),%r11d 0.00 : 4a6770: 45 85 db test %r11d,%r11d 0.00 : 4a6773: 0f 85 88 04 00 00 jne 4a6c01 <_bt_insertonpg+0xb31> : /* init btree private data */ : oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage); : lopaque = (BTPageOpaque) PageGetSpecialPointer(leftpage); : ropaque = (BTPageOpaque) PageGetSpecialPointer(rightpage); : : isroot = P_ISROOT(oopaque); 0.00 : 4a6779: 44 0f b6 ad 8c fe ff movzbl -0x174(%rbp),%r13d 0.00 : 4a6780: ff : : /* : * Clear INCOMPLETE_SPLIT flag on child if inserting the new item finishes : * a split. : */ : if (!isleaf) 0.00 : 4a6781: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4a6787: 45 20 ef and %r13b,%r15b 0.00 : 4a678a: 75 3d jne 4a67c9 <_bt_insertonpg+0x6f9> : { : Page cpage = BufferGetPage(cbuf); 0.00 : 4a678c: 44 8b 95 18 fe ff ff mov -0x1e8(%rbp),%r10d 0.00 : 4a6793: 45 85 d2 test %r10d,%r10d 0.00 : 4a6796: 0f 88 d9 03 00 00 js 4a6b75 <_bt_insertonpg+0xaa5> 0.00 : 4a679c: 8b 85 18 fe ff ff mov -0x1e8(%rbp),%eax 0.00 : 4a67a2: 83 e8 01 sub $0x1,%eax 0.00 : 4a67a5: 48 63 d0 movslq %eax,%rdx 0.00 : 4a67a8: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4a67ac: 48 03 15 45 93 71 00 add 0x719345(%rip),%rdx # bbfaf8 : BTPageOpaque cpageop = (BTPageOpaque) PageGetSpecialPointer(cpage); 0.00 : 4a67b3: 0f b7 42 10 movzwl 0x10(%rdx),%eax : : cpageop->btpo_flags &= ~BTP_INCOMPLETE_SPLIT; 0.00 : 4a67b7: 66 81 64 02 0c 7f ff andw $0xff7f,0xc(%rdx,%rax,1) : MarkBufferDirty(cbuf); 0.00 : 4a67be: 8b bd 18 fe ff ff mov -0x1e8(%rbp),%edi 0.00 : 4a67c4: e8 27 e0 1c 00 callq 6747f0 : } : : /* XLOG stuff */ : if (RelationNeedsWAL(rel)) 0.00 : 4a67c9: 48 8b 95 20 fe ff ff mov -0x1e0(%rbp),%rdx 0.00 : 4a67d0: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 4a67d4: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4a67d8: 0f 84 4c 04 00 00 je 4a6c2a <_bt_insertonpg+0xb5a> : { : PageSetLSN(BufferGetPage(cbuf), recptr); : } : } : : END_CRIT_SECTION(); 0.00 : 4a67de: 8b 05 b8 38 71 00 mov 0x7138b8(%rip),%eax # bba09c : : /* release the old right sibling */ : if (!P_RIGHTMOST(ropaque)) 0.00 : 4a67e4: 48 8b b5 60 fe ff ff mov -0x1a0(%rbp),%rsi : { : PageSetLSN(BufferGetPage(cbuf), recptr); : } : } : : END_CRIT_SECTION(); 0.00 : 4a67eb: 83 e8 01 sub $0x1,%eax 0.00 : 4a67ee: 89 05 a8 38 71 00 mov %eax,0x7138a8(%rip) # bba09c : : /* release the old right sibling */ : if (!P_RIGHTMOST(ropaque)) 0.00 : 4a67f4: 8b 56 04 mov 0x4(%rsi),%edx 0.00 : 4a67f7: 85 d2 test %edx,%edx 0.00 : 4a67f9: 0f 85 17 04 00 00 jne 4a6c16 <_bt_insertonpg+0xb46> : _bt_relbuf(rel, sbuf); : : /* release the child */ : if (!isleaf) 0.00 : 4a67ff: 45 84 ff test %r15b,%r15b 0.00 : 4a6802: 75 12 jne 4a6816 <_bt_insertonpg+0x746> : _bt_relbuf(rel, cbuf); 0.00 : 4a6804: 8b b5 18 fe ff ff mov -0x1e8(%rbp),%esi 0.00 : 4a680a: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6811: e8 ba 27 00 00 callq 4a8fd0 <_bt_relbuf> : &newitemonleft); : : /* split the buffer into left and right halves */ : rbuf = _bt_split(rel, buf, cbuf, firstright, : newitemoff, itemsz, itup, newitemonleft); : PredicateLockPageSplit(rel, 0.00 : 4a6816: 8b bd 38 fe ff ff mov -0x1c8(%rbp),%edi 0.00 : 4a681c: e8 0f d8 1c 00 callq 674030 0.00 : 4a6821: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi 0.00 : 4a6827: 89 c3 mov %eax,%ebx 0.00 : 4a6829: e8 02 d8 1c 00 callq 674030 0.00 : 4a682e: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6835: 89 c6 mov %eax,%esi 0.00 : 4a6837: 89 da mov %ebx,%edx 0.00 : 4a6839: e8 12 b7 1e 00 callq 691f50 : * locks for the child pages until we locate the parent, but we can : * release them before doing the actual insertion (see Lehman and Yao : * for the reasoning). : *---------- : */ : _bt_insert_parent(rel, buf, rbuf, stack, is_root, is_only); 0.00 : 4a683e: 0f b6 85 9a fe ff ff movzbl -0x166(%rbp),%eax 0.00 : 4a6845: 44 0f be 8d 8f fe ff movsbl -0x171(%rbp),%r9d 0.00 : 4a684c: ff 0.00 : 4a684d: 48 8b 8d 10 fe ff ff mov -0x1f0(%rbp),%rcx 0.00 : 4a6854: 8b 95 38 fe ff ff mov -0x1c8(%rbp),%edx 0.00 : 4a685a: 8b b5 1c fe ff ff mov -0x1e4(%rbp),%esi 0.00 : 4a6860: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6867: 83 e0 02 and $0x2,%eax 0.00 : 4a686a: 44 0f be c0 movsbl %al,%r8d 0.00 : 4a686e: e8 fd 0b 00 00 callq 4a7470 <_bt_insert_parent> : _bt_relbuf(rel, metabuf); : if (BufferIsValid(cbuf)) : _bt_relbuf(rel, cbuf); : _bt_relbuf(rel, buf); : } : } 0.00 : 4a6873: 48 81 c4 e8 01 00 00 add $0x1e8,%rsp 0.00 : 4a687a: 5b pop %rbx 0.00 : 4a687b: 41 5c pop %r12 0.00 : 4a687d: 41 5d pop %r13 0.00 : 4a687f: 41 5e pop %r14 0.00 : 4a6881: 41 5f pop %r15 0.00 : 4a6883: c9 leaveq 0.00 : 4a6884: c3 retq 0.00 : 4a6885: 0f 1f 00 nopl (%rax) : item = (IndexTuple) PageGetItem(origpage, itemid); : : /* does new item belong before this one? */ : if (i == newitemoff) : { : if (newitemonleft) 0.00 : 4a6888: 80 bd 37 fe ff ff 00 cmpb $0x0,-0x1c9(%rbp) 0.00 : 4a688f: 74 2f je 4a68c0 <_bt_insertonpg+0x7f0> : { : if (!_bt_pgaddtup(leftpage, newitemsz, newitem, leftoff)) 0.00 : 4a6891: 48 8b 95 08 fe ff ff mov -0x1f8(%rbp),%rdx 0.00 : 4a6898: 48 8b b5 90 fe ff ff mov -0x170(%rbp),%rsi 0.00 : 4a689f: 41 0f b7 ce movzwl %r14w,%ecx 0.00 : 4a68a3: 48 8b bd 78 fe ff ff mov -0x188(%rbp),%rdi 0.00 : 4a68aa: e8 b1 f7 ff ff callq 4a6060 <_bt_pgaddtup> 0.00 : 4a68af: 84 c0 test %al,%al 0.00 : 4a68b1: 0f 84 85 09 00 00 je 4a723c <_bt_insertonpg+0x116c> : memset(rightpage, 0, BufferGetPageSize(rbuf)); : elog(ERROR, "failed to add new item to the left sibling" : " while splitting block %u of index \"%s\"", : origpagenumber, RelationGetRelationName(rel)); : } : leftoff = OffsetNumberNext(leftoff); 0.00 : 4a68b7: 41 83 c6 01 add $0x1,%r14d 0.00 : 4a68bb: e9 06 fe ff ff jmpq 4a66c6 <_bt_insertonpg+0x5f6> : } : else : { : if (!_bt_pgaddtup(rightpage, newitemsz, newitem, rightoff)) 0.00 : 4a68c0: 48 8b 95 08 fe ff ff mov -0x1f8(%rbp),%rdx 0.00 : 4a68c7: 48 8b b5 90 fe ff ff mov -0x170(%rbp),%rsi 0.00 : 4a68ce: 41 0f b7 cf movzwl %r15w,%ecx 0.00 : 4a68d2: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a68d9: e8 82 f7 ff ff callq 4a6060 <_bt_pgaddtup> 0.00 : 4a68de: 84 c0 test %al,%al 0.00 : 4a68e0: 0f 84 a2 09 00 00 je 4a7288 <_bt_insertonpg+0x11b8> : memset(rightpage, 0, BufferGetPageSize(rbuf)); : elog(ERROR, "failed to add new item to the right sibling" : " while splitting block %u of index \"%s\"", : origpagenumber, RelationGetRelationName(rel)); : } : rightoff = OffsetNumberNext(rightoff); 0.00 : 4a68e6: 41 83 c7 01 add $0x1,%r15d 0.00 : 4a68ea: e9 d7 fd ff ff jmpq 4a66c6 <_bt_insertonpg+0x5f6> 0.00 : 4a68ef: 90 nop : BTMetaPageData *metad = NULL; : OffsetNumber itup_off; : BlockNumber itup_blkno; : : itup_off = newitemoff; : itup_blkno = BufferGetBlockNumber(buf); 0.00 : 4a68f0: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi 0.00 : 4a68f6: e8 35 d7 1c 00 callq 674030 : * only one on its tree level, but was not the root, it may have been : * the "fast root". We need to ensure that the fast root link points : * at or above the current page. We can safely acquire a lock on the : * metapage here --- see comments for _bt_newroot(). : */ : if (split_only_page) 0.00 : 4a68fb: 45 84 e4 test %r12b,%r12b : BTMetaPageData *metad = NULL; : OffsetNumber itup_off; : BlockNumber itup_blkno; : : itup_off = newitemoff; : itup_blkno = BufferGetBlockNumber(buf); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:783 12.50 : 4a68fe: 41 89 c7 mov %eax,%r15d : * only one on its tree level, but was not the root, it may have been : * the "fast root". We need to ensure that the fast root link points : * at or above the current page. We can safely acquire a lock on the : * metapage here --- see comments for _bt_newroot(). : */ : if (split_only_page) 0.00 : 4a6901: 0f 85 25 06 00 00 jne 4a6f2c <_bt_insertonpg+0xe5c> 0.00 : 4a6907: 45 31 ed xor %r13d,%r13d 0.00 : 4a690a: 45 31 f6 xor %r14d,%r14d 0.00 : 4a690d: 45 31 e4 xor %r12d,%r12d : } : : /* Do the update. No ereport(ERROR) until changes are logged */ : START_CRIT_SECTION(); : : if (!_bt_pgaddtup(page, itemsz, itup, newitemoff)) 0.00 : 4a6910: 0f b7 95 06 fe ff ff movzwl -0x1fa(%rbp),%edx : metabuf = InvalidBuffer; : } : } : : /* Do the update. No ereport(ERROR) until changes are logged */ : START_CRIT_SECTION(); 0.00 : 4a6917: 8b 05 7f 37 71 00 mov 0x71377f(%rip),%eax # bba09c : : if (!_bt_pgaddtup(page, itemsz, itup, newitemoff)) 0.00 : 4a691d: 48 8b b5 90 fe ff ff mov -0x170(%rbp),%rsi 0.00 : 4a6924: 48 8b bd 28 fe ff ff mov -0x1d8(%rbp),%rdi : metabuf = InvalidBuffer; : } : } : : /* Do the update. No ereport(ERROR) until changes are logged */ : START_CRIT_SECTION(); 0.00 : 4a692b: 83 c0 01 add $0x1,%eax : : if (!_bt_pgaddtup(page, itemsz, itup, newitemoff)) 0.00 : 4a692e: 89 95 9c fe ff ff mov %edx,-0x164(%rbp) 0.00 : 4a6934: 89 d1 mov %edx,%ecx 0.00 : 4a6936: 48 8b 95 08 fe ff ff mov -0x1f8(%rbp),%rdx : metabuf = InvalidBuffer; : } : } : : /* Do the update. No ereport(ERROR) until changes are logged */ : START_CRIT_SECTION(); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:809 12.50 : 4a693d: 89 05 59 37 71 00 mov %eax,0x713759(%rip) # bba09c : : if (!_bt_pgaddtup(page, itemsz, itup, newitemoff)) 0.00 : 4a6943: e8 18 f7 ff ff callq 4a6060 <_bt_pgaddtup> 0.00 : 4a6948: 84 c0 test %al,%al 0.00 : 4a694a: 0f 84 88 0a 00 00 je 4a73d8 <_bt_insertonpg+0x1308> : elog(PANIC, "failed to add new item to block %u in index \"%s\"", : itup_blkno, RelationGetRelationName(rel)); : : MarkBufferDirty(buf); 0.00 : 4a6950: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:815 12.50 : 4a6956: e8 95 de 1c 00 callq 6747f0 : : if (BufferIsValid(metabuf)) 0.00 : 4a695b: 45 85 ed test %r13d,%r13d 0.00 : 4a695e: 0f 85 21 06 00 00 jne 4a6f85 <_bt_insertonpg+0xeb5> : metad->btm_fastlevel = lpageop->btpo.level; : MarkBufferDirty(metabuf); : } : : /* clear INCOMPLETE_SPLIT flag on child if inserting a downlink */ : if (BufferIsValid(cbuf)) 0.00 : 4a6964: 83 bd 18 fe ff ff 00 cmpl $0x0,-0x1e8(%rbp) 0.00 : 4a696b: 0f 85 b8 01 00 00 jne 4a6b29 <_bt_insertonpg+0xa59> : cpageop->btpo_flags &= ~BTP_INCOMPLETE_SPLIT; : MarkBufferDirty(cbuf); : } : : /* XLOG stuff */ : if (RelationNeedsWAL(rel)) 0.00 : 4a6971: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 4a6978: 48 8b 46 30 mov 0x30(%rsi),%rax 0.00 : 4a697c: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4a6980: 0f 84 44 06 00 00 je 4a6fca <_bt_insertonpg+0xefa> : } : : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 4a6986: 8b 05 10 37 71 00 mov 0x713710(%rip),%eax # bba09c 0.00 : 4a698c: 83 e8 01 sub $0x1,%eax : : /* release buffers */ : if (BufferIsValid(metabuf)) 0.00 : 4a698f: 45 85 ed test %r13d,%r13d : } : : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:921 12.50 : 4a6992: 89 05 04 37 71 00 mov %eax,0x713704(%rip) # bba09c : : /* release buffers */ : if (BufferIsValid(metabuf)) 0.00 : 4a6998: 0f 85 18 06 00 00 jne 4a6fb6 <_bt_insertonpg+0xee6> : _bt_relbuf(rel, metabuf); : if (BufferIsValid(cbuf)) 0.00 : 4a699e: 8b 85 18 fe ff ff mov -0x1e8(%rbp),%eax 0.00 : 4a69a4: 85 c0 test %eax,%eax 0.00 : 4a69a6: 0f 85 f3 05 00 00 jne 4a6f9f <_bt_insertonpg+0xecf> : _bt_relbuf(rel, cbuf); : _bt_relbuf(rel, buf); 0.00 : 4a69ac: 8b b5 1c fe ff ff mov -0x1e4(%rbp),%esi 0.00 : 4a69b2: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a69b9: e8 12 26 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a69be: e9 b0 fe ff ff jmpq 4a6873 <_bt_insertonpg+0x7a3> 0.00 : 4a69c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Page page; : BTPageOpaque lpageop; : OffsetNumber firstright = InvalidOffsetNumber; : Size itemsz; : : page = BufferGetPage(buf); 0.00 : 4a69c8: 89 f0 mov %esi,%eax 0.00 : 4a69ca: 48 8b 15 47 67 6d 00 mov 0x6d6747(%rip),%rdx # b7d118 0.00 : 4a69d1: f7 d0 not %eax 0.00 : 4a69d3: 48 98 cltq 0.00 : 4a69d5: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4a69d9: 48 89 95 28 fe ff ff mov %rdx,-0x1d8(%rbp) 0.00 : 4a69e0: e9 55 f7 ff ff jmpq 4a613a <_bt_insertonpg+0x6a> 0.00 : 4a69e5: 0f 1f 00 nopl (%rax) : if (!P_RIGHTMOST(oopaque)) : { : itemid = PageGetItemId(origpage, P_HIKEY); : itemsz = ItemIdGetLength(itemid); : item = (IndexTuple) PageGetItem(origpage, itemid); : if (PageAddItem(rightpage, (Item) item, itemsz, rightoff, 0.00 : 4a69e8: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 4a69ef: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a69f6: 45 31 c9 xor %r9d,%r9d 0.00 : 4a69f9: 45 31 c0 xor %r8d,%r8d 0.00 : 4a69fc: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4a6a01: 41 b7 02 mov $0x2,%r15b 0.00 : 4a6a04: 0f b7 53 1a movzwl 0x1a(%rbx),%edx 0.00 : 4a6a08: 0f b7 73 18 movzwl 0x18(%rbx),%esi 0.00 : 4a6a0c: 66 d1 ea shr %dx 0.00 : 4a6a0f: 81 e6 ff 7f 00 00 and $0x7fff,%esi 0.00 : 4a6a15: 48 01 de add %rbx,%rsi 0.00 : 4a6a18: 0f b7 d2 movzwl %dx,%edx 0.00 : 4a6a1b: e8 60 f4 1e 00 callq 695e80 0.00 : 4a6a20: 66 85 c0 test %ax,%ax 0.00 : 4a6a23: 0f 85 74 fb ff ff jne 4a659d <_bt_insertonpg+0x4cd> : false, false) == InvalidOffsetNumber) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6a29: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a6a30: 31 c0 xor %eax,%eax 0.00 : 4a6a32: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "failed to add hikey to the right sibling" 0.00 : 4a6a37: ba e1 42 7b 00 mov $0x7b42e1,%edx 0.00 : 4a6a3c: be 19 04 00 00 mov $0x419,%esi : itemsz = ItemIdGetLength(itemid); : item = (IndexTuple) PageGetItem(origpage, itemid); : if (PageAddItem(rightpage, (Item) item, itemsz, rightoff, : false, false) == InvalidOffsetNumber) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6a41: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "failed to add hikey to the right sibling" 0.00 : 4a6a44: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a6a49: e8 d2 49 2d 00 callq 77b420 0.00 : 4a6a4e: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 4a6a55: 8b 95 6c fe ff ff mov -0x194(%rbp),%edx 0.00 : 4a6a5b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a6a60: 31 c0 xor %eax,%eax 0.00 : 4a6a62: 48 8b 4e 30 mov 0x30(%rsi),%rcx 0.00 : 4a6a66: be 78 3d 7b 00 mov $0x7b3d78,%esi 0.00 : 4a6a6b: e8 c0 47 2d 00 callq 77b230 0.00 : 4a6a70: e8 5b 2a fc ff callq 4694d0 0.00 : 4a6a75: 0f 1f 00 nopl (%rax) : * possibly-confusing junk behind, we are careful to rewrite rightpage as : * zeroes before throwing any error. : */ : origpage = BufferGetPage(buf); : leftpage = PageGetTempPage(origpage); : rightpage = BufferGetPage(rbuf); 0.00 : 4a6a78: 8b 85 38 fe ff ff mov -0x1c8(%rbp),%eax 0.00 : 4a6a7e: 48 8b 15 93 66 6d 00 mov 0x6d6693(%rip),%rdx # b7d118 0.00 : 4a6a85: f7 d0 not %eax 0.00 : 4a6a87: 48 98 cltq 0.00 : 4a6a89: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4a6a8d: 48 89 95 70 fe ff ff mov %rdx,-0x190(%rbp) 0.00 : 4a6a94: e9 05 fa ff ff jmpq 4a649e <_bt_insertonpg+0x3ce> 0.00 : 4a6a99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * neighbors. : */ : : if (!P_RIGHTMOST(oopaque)) : { : sbuf = _bt_getbuf(rel, oopaque->btpo_next, BT_WRITE); 0.00 : 4a6aa0: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6aa7: ba 02 00 00 00 mov $0x2,%edx 0.00 : 4a6aac: e8 9f 25 00 00 callq 4a9050 <_bt_getbuf> : spage = BufferGetPage(sbuf); 0.00 : 4a6ab1: 85 c0 test %eax,%eax : * neighbors. : */ : : if (!P_RIGHTMOST(oopaque)) : { : sbuf = _bt_getbuf(rel, oopaque->btpo_next, BT_WRITE); 0.00 : 4a6ab3: 41 89 c6 mov %eax,%r14d : spage = BufferGetPage(sbuf); 0.00 : 4a6ab6: 0f 88 a5 00 00 00 js 4a6b61 <_bt_insertonpg+0xa91> 0.00 : 4a6abc: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 4a6ac0: 4c 63 e0 movslq %eax,%r12 0.00 : 4a6ac3: 49 c1 e4 0d shl $0xd,%r12 0.00 : 4a6ac7: 4c 03 25 2a 90 71 00 add 0x71902a(%rip),%r12 # bbfaf8 : sopaque = (BTPageOpaque) PageGetSpecialPointer(spage); 0.00 : 4a6ace: 41 0f b7 44 24 10 movzwl 0x10(%r12),%eax : if (sopaque->btpo_prev != origpagenumber) 0.00 : 4a6ad4: 8b 95 6c fe ff ff mov -0x194(%rbp),%edx : : if (!P_RIGHTMOST(oopaque)) : { : sbuf = _bt_getbuf(rel, oopaque->btpo_next, BT_WRITE); : spage = BufferGetPage(sbuf); : sopaque = (BTPageOpaque) PageGetSpecialPointer(spage); 0.00 : 4a6ada: 49 8d 1c 04 lea (%r12,%rax,1),%rbx : if (sopaque->btpo_prev != origpagenumber) 0.00 : 4a6ade: 3b 13 cmp (%rbx),%edx 0.00 : 4a6ae0: 0f 85 2a 09 00 00 jne 4a7410 <_bt_insertonpg+0x1340> : * originally in A could now be in either B or C, hence vacuum must : * examine both pages. But if D, our right sibling, has a different : * cycleid then it could not contain any tuples that were in A when : * the vacuum started. : */ : if (sopaque->btpo_cycleid != ropaque->btpo_cycleid) 0.00 : 4a6ae6: 48 8b 95 60 fe ff ff mov -0x1a0(%rbp),%rdx 0.00 : 4a6aed: 0f b7 43 0e movzwl 0xe(%rbx),%eax 0.00 : 4a6af1: 66 3b 42 0e cmp 0xe(%rdx),%ax 0.00 : 4a6af5: 0f 84 32 fc ff ff je 4a672d <_bt_insertonpg+0x65d> : ropaque->btpo_flags |= BTP_SPLIT_END; 0.00 : 4a6afb: 66 83 4a 0c 20 orw $0x20,0xc(%rdx) 0.00 : 4a6b00: e9 28 fc ff ff jmpq 4a672d <_bt_insertonpg+0x65d> 0.00 : 4a6b05: 0f 1f 00 nopl (%rax) : * principle we shouldn't need to worry about rightpage either, because it : * hasn't been linked into the btree page structure; but to avoid leaving : * possibly-confusing junk behind, we are careful to rewrite rightpage as : * zeroes before throwing any error. : */ : origpage = BufferGetPage(buf); 0.00 : 4a6b08: 8b 85 1c fe ff ff mov -0x1e4(%rbp),%eax 0.00 : 4a6b0e: 48 8b 15 03 66 6d 00 mov 0x6d6603(%rip),%rdx # b7d118 0.00 : 4a6b15: f7 d0 not %eax 0.00 : 4a6b17: 48 98 cltq 0.00 : 4a6b19: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4a6b1d: 48 89 95 80 fe ff ff mov %rdx,-0x180(%rbp) 0.00 : 4a6b24: e9 32 f9 ff ff jmpq 4a645b <_bt_insertonpg+0x38b> : } : : /* clear INCOMPLETE_SPLIT flag on child if inserting a downlink */ : if (BufferIsValid(cbuf)) : { : Page cpage = BufferGetPage(cbuf); 0.00 : 4a6b29: 0f 8c f3 06 00 00 jl 4a7222 <_bt_insertonpg+0x1152> 0.00 : 4a6b2f: 8b 85 18 fe ff ff mov -0x1e8(%rbp),%eax 0.00 : 4a6b35: 83 e8 01 sub $0x1,%eax 0.00 : 4a6b38: 48 63 d0 movslq %eax,%rdx 0.00 : 4a6b3b: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4a6b3f: 48 03 15 b2 8f 71 00 add 0x718fb2(%rip),%rdx # bbfaf8 : BTPageOpaque cpageop = (BTPageOpaque) PageGetSpecialPointer(cpage); 0.00 : 4a6b46: 0f b7 42 10 movzwl 0x10(%rdx),%eax : : Assert(P_INCOMPLETE_SPLIT(cpageop)); : cpageop->btpo_flags &= ~BTP_INCOMPLETE_SPLIT; 0.00 : 4a6b4a: 66 81 64 02 0c 7f ff andw $0xff7f,0xc(%rdx,%rax,1) : MarkBufferDirty(cbuf); 0.00 : 4a6b51: 8b bd 18 fe ff ff mov -0x1e8(%rbp),%edi 0.00 : 4a6b57: e8 94 dc 1c 00 callq 6747f0 0.00 : 4a6b5c: e9 10 fe ff ff jmpq 4a6971 <_bt_insertonpg+0x8a1> : */ : : if (!P_RIGHTMOST(oopaque)) : { : sbuf = _bt_getbuf(rel, oopaque->btpo_next, BT_WRITE); : spage = BufferGetPage(sbuf); 0.00 : 4a6b61: 48 8b 15 b0 65 6d 00 mov 0x6d65b0(%rip),%rdx # b7d118 0.00 : 4a6b68: f7 d0 not %eax 0.00 : 4a6b6a: 48 98 cltq 0.00 : 4a6b6c: 4c 8b 24 c2 mov (%rdx,%rax,8),%r12 0.00 : 4a6b70: e9 59 ff ff ff jmpq 4a6ace <_bt_insertonpg+0x9fe> : * Clear INCOMPLETE_SPLIT flag on child if inserting the new item finishes : * a split. : */ : if (!isleaf) : { : Page cpage = BufferGetPage(cbuf); 0.00 : 4a6b75: 8b 85 18 fe ff ff mov -0x1e8(%rbp),%eax 0.00 : 4a6b7b: 48 8b 15 96 65 6d 00 mov 0x6d6596(%rip),%rdx # b7d118 0.00 : 4a6b82: f7 d0 not %eax 0.00 : 4a6b84: 48 98 cltq 0.00 : 4a6b86: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4a6b8a: e9 24 fc ff ff jmpq 4a67b3 <_bt_insertonpg+0x6e3> : * Can't have newitemonleft here; that would imply we were told to put : * *everything* on the left page, which cannot fit (if it could, we'd : * not be splitting the page). : */ : Assert(!newitemonleft); : if (!_bt_pgaddtup(rightpage, newitemsz, newitem, rightoff)) 0.00 : 4a6b8f: 48 8b 95 08 fe ff ff mov -0x1f8(%rbp),%rdx 0.00 : 4a6b96: 48 8b b5 90 fe ff ff mov -0x170(%rbp),%rsi 0.00 : 4a6b9d: 41 0f b7 cf movzwl %r15w,%ecx 0.00 : 4a6ba1: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a6ba8: e8 b3 f4 ff ff callq 4a6060 <_bt_pgaddtup> 0.00 : 4a6bad: 84 c0 test %al,%al 0.00 : 4a6baf: 0f 85 5e fb ff ff jne 4a6713 <_bt_insertonpg+0x643> : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6bb5: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a6bbc: 31 c0 xor %eax,%eax 0.00 : 4a6bbe: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "failed to add new item to the right sibling" 0.00 : 4a6bc3: ba e1 42 7b 00 mov $0x7b42e1,%edx 0.00 : 4a6bc8: be 8b 04 00 00 mov $0x48b,%esi : * not be splitting the page). : */ : Assert(!newitemonleft); : if (!_bt_pgaddtup(rightpage, newitemsz, newitem, rightoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6bcd: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "failed to add new item to the right sibling" 0.00 : 4a6bd0: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a6bd5: e8 46 48 2d 00 callq 77b420 0.00 : 4a6bda: 48 8b 9d 20 fe ff ff mov -0x1e0(%rbp),%rbx 0.00 : 4a6be1: 48 8b 4b 30 mov 0x30(%rbx),%rcx 0.00 : 4a6be5: 8b 95 6c fe ff ff mov -0x194(%rbp),%edx 0.00 : 4a6beb: be 70 3e 7b 00 mov $0x7b3e70,%esi 0.00 : 4a6bf0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a6bf5: 31 c0 xor %eax,%eax 0.00 : 4a6bf7: e8 34 46 2d 00 callq 77b230 0.00 : 4a6bfc: e8 cf 28 fc ff callq 4694d0 : MarkBufferDirty(buf); : MarkBufferDirty(rbuf); : : if (!P_RIGHTMOST(ropaque)) : { : sopaque->btpo_prev = rightpagenumber; 0.00 : 4a6c01: 8b b5 68 fe ff ff mov -0x198(%rbp),%esi : MarkBufferDirty(sbuf); 0.00 : 4a6c07: 44 89 f7 mov %r14d,%edi : MarkBufferDirty(buf); : MarkBufferDirty(rbuf); : : if (!P_RIGHTMOST(ropaque)) : { : sopaque->btpo_prev = rightpagenumber; 0.00 : 4a6c0a: 89 33 mov %esi,(%rbx) : MarkBufferDirty(sbuf); 0.00 : 4a6c0c: e8 df db 1c 00 callq 6747f0 0.00 : 4a6c11: e9 63 fb ff ff jmpq 4a6779 <_bt_insertonpg+0x6a9> : : END_CRIT_SECTION(); : : /* release the old right sibling */ : if (!P_RIGHTMOST(ropaque)) : _bt_relbuf(rel, sbuf); 0.00 : 4a6c16: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6c1d: 44 89 f6 mov %r14d,%esi 0.00 : 4a6c20: e8 ab 23 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a6c25: e9 d5 fb ff ff jmpq 4a67ff <_bt_insertonpg+0x72f> : XLogRecPtr recptr; : XLogRecData rdata[7]; : XLogRecData *lastrdata; : BlockNumber cblkno; : : xlrec.node = rel->rd_node; 0.00 : 4a6c2a: 48 8b 02 mov (%rdx),%rax : xlrec.leftsib = origpagenumber; : xlrec.rightsib = rightpagenumber; 0.00 : 4a6c2d: 8b 9d 68 fe ff ff mov -0x198(%rbp),%ebx : * right page.) Show the new item as belonging to the left page : * buffer, so that it is not stored if XLogInsert decides it needs a : * full-page image of the left page. We store the offset anyway, : * though, to support archive compression of these records. : */ : if (newitemonleft) 0.00 : 4a6c33: 4c 8d 85 a0 fe ff ff lea -0x160(%rbp),%r8 : BlockNumber cblkno; : : xlrec.node = rel->rd_node; : xlrec.leftsib = origpagenumber; : xlrec.rightsib = rightpagenumber; : xlrec.rnext = ropaque->btpo_next; 0.00 : 4a6c3a: 48 8b b5 60 fe ff ff mov -0x1a0(%rbp),%rsi : XLogRecData rdata[7]; : XLogRecData *lastrdata; : BlockNumber cblkno; : : xlrec.node = rel->rd_node; : xlrec.leftsib = origpagenumber; 0.00 : 4a6c41: 8b 8d 6c fe ff ff mov -0x194(%rbp),%ecx : * right page.) Show the new item as belonging to the left page : * buffer, so that it is not stored if XLogInsert decides it needs a : * full-page image of the left page. We store the offset anyway, : * though, to support archive compression of these records. : */ : if (newitemonleft) 0.00 : 4a6c47: 80 bd 37 fe ff ff 00 cmpb $0x0,-0x1c9(%rbp) : XLogRecPtr recptr; : XLogRecData rdata[7]; : XLogRecData *lastrdata; : BlockNumber cblkno; : : xlrec.node = rel->rd_node; 0.00 : 4a6c4e: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 4a6c52: 8b 42 08 mov 0x8(%rdx),%eax : xlrec.leftsib = origpagenumber; : xlrec.rightsib = rightpagenumber; 0.00 : 4a6c55: 89 5d 90 mov %ebx,-0x70(%rbp) : XLogRecData rdata[7]; : XLogRecData *lastrdata; : BlockNumber cblkno; : : xlrec.node = rel->rd_node; : xlrec.leftsib = origpagenumber; 0.00 : 4a6c58: 89 4d 8c mov %ecx,-0x74(%rbp) : * right page.) Show the new item as belonging to the left page : * buffer, so that it is not stored if XLogInsert decides it needs a : * full-page image of the left page. We store the offset anyway, : * though, to support archive compression of these records. : */ : if (newitemonleft) 0.00 : 4a6c5b: 4c 89 c3 mov %r8,%rbx : XLogRecPtr recptr; : XLogRecData rdata[7]; : XLogRecData *lastrdata; : BlockNumber cblkno; : : xlrec.node = rel->rd_node; 0.00 : 4a6c5e: 89 45 88 mov %eax,-0x78(%rbp) : xlrec.leftsib = origpagenumber; : xlrec.rightsib = rightpagenumber; : xlrec.rnext = ropaque->btpo_next; 0.00 : 4a6c61: 8b 46 04 mov 0x4(%rsi),%eax 0.00 : 4a6c64: 89 45 94 mov %eax,-0x6c(%rbp) : xlrec.level = ropaque->btpo.level; 0.00 : 4a6c67: 8b 46 08 mov 0x8(%rsi),%eax : xlrec.firstright = firstright; : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBtreeSplit; 0.00 : 4a6c6a: c7 85 a8 fe ff ff 1e movl $0x1e,-0x158(%rbp) 0.00 : 4a6c71: 00 00 00 : rdata[0].buffer = InvalidBuffer; 0.00 : 4a6c74: c7 85 ac fe ff ff 00 movl $0x0,-0x154(%rbp) 0.00 : 4a6c7b: 00 00 00 : : xlrec.node = rel->rd_node; : xlrec.leftsib = origpagenumber; : xlrec.rightsib = rightpagenumber; : xlrec.rnext = ropaque->btpo_next; : xlrec.level = ropaque->btpo.level; 0.00 : 4a6c7e: 89 45 98 mov %eax,-0x68(%rbp) : xlrec.firstright = firstright; 0.00 : 4a6c81: 0f b7 85 34 fe ff ff movzwl -0x1cc(%rbp),%eax 0.00 : 4a6c88: 66 89 45 9c mov %ax,-0x64(%rbp) : : rdata[0].data = (char *) &xlrec; 0.00 : 4a6c8c: 48 8d 45 80 lea -0x80(%rbp),%rax 0.00 : 4a6c90: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) : * right page.) Show the new item as belonging to the left page : * buffer, so that it is not stored if XLogInsert decides it needs a : * full-page image of the left page. We store the offset anyway, : * though, to support archive compression of these records. : */ : if (newitemonleft) 0.00 : 4a6c97: 74 6c je 4a6d05 <_bt_insertonpg+0xc35> : { : lastrdata->next = lastrdata + 1; 0.00 : 4a6c99: 4c 8d 85 a0 fe ff ff lea -0x160(%rbp),%r8 : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) newitem; : lastrdata->len = MAXALIGN(newitemsz); : lastrdata->buffer = buf; /* backup block 0 */ 0.00 : 4a6ca0: 8b 9d 1c fe ff ff mov -0x1e4(%rbp),%ebx : lastrdata->buffer = InvalidBuffer; : : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) newitem; 0.00 : 4a6ca6: 48 8b 95 08 fe ff ff mov -0x1f8(%rbp),%rdx : lastrdata->len = MAXALIGN(newitemsz); 0.00 : 4a6cad: 8b 8d 90 fe ff ff mov -0x170(%rbp),%ecx : { : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) &newitemoff; : lastrdata->len = sizeof(OffsetNumber); 0.00 : 4a6cb3: c7 85 c8 fe ff ff 02 movl $0x2,-0x138(%rbp) 0.00 : 4a6cba: 00 00 00 : * full-page image of the left page. We store the offset anyway, : * though, to support archive compression of these records. : */ : if (newitemonleft) : { : lastrdata->next = lastrdata + 1; 0.00 : 4a6cbd: 49 8d 40 20 lea 0x20(%r8),%rax : lastrdata++; : : lastrdata->data = (char *) &newitemoff; : lastrdata->len = sizeof(OffsetNumber); : lastrdata->buffer = InvalidBuffer; 0.00 : 4a6cc1: c7 85 cc fe ff ff 00 movl $0x0,-0x134(%rbp) 0.00 : 4a6cc8: 00 00 00 : lastrdata++; : : lastrdata->data = (char *) newitem; : lastrdata->len = MAXALIGN(newitemsz); : lastrdata->buffer = buf; /* backup block 0 */ : lastrdata->buffer_std = true; 0.00 : 4a6ccb: c6 85 f0 fe ff ff 01 movb $0x1,-0x110(%rbp) : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) newitem; : lastrdata->len = MAXALIGN(newitemsz); : lastrdata->buffer = buf; /* backup block 0 */ 0.00 : 4a6cd2: 89 9d ec fe ff ff mov %ebx,-0x114(%rbp) : lastrdata->buffer = InvalidBuffer; : : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) newitem; 0.00 : 4a6cd8: 48 89 95 e0 fe ff ff mov %rdx,-0x120(%rbp) : * full-page image of the left page. We store the offset anyway, : * though, to support archive compression of these records. : */ : if (newitemonleft) : { : lastrdata->next = lastrdata + 1; 0.00 : 4a6cdf: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) : lastrdata++; : : lastrdata->data = (char *) &newitemoff; 0.00 : 4a6ce6: 48 8d 45 cc lea -0x34(%rbp),%rax : : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) newitem; : lastrdata->len = MAXALIGN(newitemsz); 0.00 : 4a6cea: 89 8d e8 fe ff ff mov %ecx,-0x118(%rbp) : if (newitemonleft) : { : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) &newitemoff; 0.00 : 4a6cf0: 48 89 85 c0 fe ff ff mov %rax,-0x140(%rbp) : lastrdata->len = sizeof(OffsetNumber); : lastrdata->buffer = InvalidBuffer; : : lastrdata->next = lastrdata + 1; 0.00 : 4a6cf7: 49 8d 40 40 lea 0x40(%r8),%rax 0.00 : 4a6cfb: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) : lastrdata++; : : lastrdata->data = (char *) newitem; : lastrdata->len = MAXALIGN(newitemsz); : lastrdata->buffer = buf; /* backup block 0 */ : lastrdata->buffer_std = true; 0.00 : 4a6d02: 48 89 c3 mov %rax,%rbx : } : : /* Log left page */ : if (!isleaf) 0.00 : 4a6d05: 45 84 ff test %r15b,%r15b 0.00 : 4a6d08: 0f 85 e4 03 00 00 jne 4a70f2 <_bt_insertonpg+0x1022> : { : lastrdata->next = lastrdata + 1; 0.00 : 4a6d0e: 48 8d 53 20 lea 0x20(%rbx),%rdx 0.00 : 4a6d12: 48 89 53 18 mov %rdx,0x18(%rbx) : * as belonging to the left page buffer, so that it is not stored : * if XLogInsert decides it needs a full-page image of the left : * page. : */ : itemid = PageGetItemId(origpage, P_HIKEY); : item = (IndexTuple) PageGetItem(origpage, itemid); 0.00 : 4a6d16: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 4a6d1d: 0f b7 46 18 movzwl 0x18(%rsi),%eax 0.00 : 4a6d21: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 4a6d26: 48 01 f0 add %rsi,%rax : lastrdata->data = (char *) item; 0.00 : 4a6d29: 48 89 43 20 mov %rax,0x20(%rbx) : lastrdata->len = MAXALIGN(IndexTupleSize(item)); 0.00 : 4a6d2d: 0f b7 40 06 movzwl 0x6(%rax),%eax : * Log block number of left child, whose INCOMPLETE_SPLIT flag this : * insertion clears. : */ : if (!isleaf) : { : lastrdata->next = lastrdata + 1; 0.00 : 4a6d31: 48 83 c3 40 add $0x40,%rbx : * page. : */ : itemid = PageGetItemId(origpage, P_HIKEY); : item = (IndexTuple) PageGetItem(origpage, itemid); : lastrdata->data = (char *) item; : lastrdata->len = MAXALIGN(IndexTupleSize(item)); 0.00 : 4a6d35: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4a6d3a: 83 c0 07 add $0x7,%eax 0.00 : 4a6d3d: 83 e0 f8 and $0xfffffff8,%eax 0.00 : 4a6d40: 89 42 08 mov %eax,0x8(%rdx) : lastrdata->buffer = buf; /* backup block 0 */ 0.00 : 4a6d43: 8b 85 1c fe ff ff mov -0x1e4(%rbp),%eax : lastrdata->buffer_std = true; 0.00 : 4a6d49: c6 42 10 01 movb $0x1,0x10(%rdx) : * Log block number of left child, whose INCOMPLETE_SPLIT flag this : * insertion clears. : */ : if (!isleaf) : { : lastrdata->next = lastrdata + 1; 0.00 : 4a6d4d: 48 89 5a 18 mov %rbx,0x18(%rdx) : */ : itemid = PageGetItemId(origpage, P_HIKEY); : item = (IndexTuple) PageGetItem(origpage, itemid); : lastrdata->data = (char *) item; : lastrdata->len = MAXALIGN(IndexTupleSize(item)); : lastrdata->buffer = buf; /* backup block 0 */ 0.00 : 4a6d51: 89 42 0c mov %eax,0xc(%rdx) : if (!isleaf) : { : lastrdata->next = lastrdata + 1; : lastrdata++; : : cblkno = BufferGetBlockNumber(cbuf); 0.00 : 4a6d54: 8b bd 18 fe ff ff mov -0x1e8(%rbp),%edi 0.00 : 4a6d5a: 4c 89 85 f8 fd ff ff mov %r8,-0x208(%rbp) 0.00 : 4a6d61: e8 ca d2 1c 00 callq 674030 0.00 : 4a6d66: 89 45 c8 mov %eax,-0x38(%rbp) : lastrdata->data = (char *) &cblkno; 0.00 : 4a6d69: 48 8d 45 c8 lea -0x38(%rbp),%rax : lastrdata->len = sizeof(BlockNumber); 0.00 : 4a6d6d: c7 43 08 04 00 00 00 movl $0x4,0x8(%rbx) : { : lastrdata->next = lastrdata + 1; : lastrdata++; : : cblkno = BufferGetBlockNumber(cbuf); : lastrdata->data = (char *) &cblkno; 0.00 : 4a6d74: 48 89 03 mov %rax,(%rbx) : lastrdata->len = sizeof(BlockNumber); : lastrdata->buffer = cbuf; /* backup block 1 */ 0.00 : 4a6d77: 8b 95 18 fe ff ff mov -0x1e8(%rbp),%edx : lastrdata->buffer_std = true; 0.00 : 4a6d7d: c6 43 10 01 movb $0x1,0x10(%rbx) : lastrdata++; : : cblkno = BufferGetBlockNumber(cbuf); : lastrdata->data = (char *) &cblkno; : lastrdata->len = sizeof(BlockNumber); : lastrdata->buffer = cbuf; /* backup block 1 */ 0.00 : 4a6d81: 89 53 0c mov %edx,0xc(%rbx) 0.00 : 4a6d84: 4c 8b 85 f8 fd ff ff mov -0x208(%rbp),%r8 : * some new func in page API. Note we only store the tuples : * themselves, knowing that they were inserted in item-number order : * and so the item pointers can be reconstructed. See comments for : * _bt_restore_page(). : */ : lastrdata->next = lastrdata + 1; 0.00 : 4a6d8b: 48 8d 4b 20 lea 0x20(%rbx),%rcx 0.00 : 4a6d8f: 48 89 4b 18 mov %rcx,0x18(%rbx) : lastrdata++; : : lastrdata->data = (char *) rightpage + 0.00 : 4a6d93: 48 8b b5 70 fe ff ff mov -0x190(%rbp),%rsi 0.00 : 4a6d9a: 0f b7 46 0e movzwl 0xe(%rsi),%eax 0.00 : 4a6d9e: 48 01 f0 add %rsi,%rax 0.00 : 4a6da1: 48 89 43 20 mov %rax,0x20(%rbx) : ((PageHeader) rightpage)->pd_upper; : lastrdata->len = ((PageHeader) rightpage)->pd_special - 0.00 : 4a6da5: 0f b7 56 0e movzwl 0xe(%rsi),%edx 0.00 : 4a6da9: 0f b7 46 10 movzwl 0x10(%rsi),%eax : ((PageHeader) rightpage)->pd_upper; : lastrdata->buffer = InvalidBuffer; 0.00 : 4a6dad: c7 41 0c 00 00 00 00 movl $0x0,0xc(%rcx) : lastrdata->next = lastrdata + 1; : lastrdata++; : : lastrdata->data = (char *) rightpage + : ((PageHeader) rightpage)->pd_upper; : lastrdata->len = ((PageHeader) rightpage)->pd_special - 0.00 : 4a6db4: 29 d0 sub %edx,%eax 0.00 : 4a6db6: 89 41 08 mov %eax,0x8(%rcx) : ((PageHeader) rightpage)->pd_upper; : lastrdata->buffer = InvalidBuffer; : : /* Log the right sibling, because we've changed its' prev-pointer. */ : if (!P_RIGHTMOST(ropaque)) 0.00 : 4a6db9: 48 8b 95 60 fe ff ff mov -0x1a0(%rbp),%rdx 0.00 : 4a6dc0: 48 89 c8 mov %rcx,%rax 0.00 : 4a6dc3: 44 8b 4a 04 mov 0x4(%rdx),%r9d 0.00 : 4a6dc7: 45 85 c9 test %r9d,%r9d 0.00 : 4a6dca: 74 1f je 4a6deb <_bt_insertonpg+0xd1b> : { : lastrdata->next = lastrdata + 1; 0.00 : 4a6dcc: 48 8d 43 40 lea 0x40(%rbx),%rax 0.00 : 4a6dd0: 48 89 41 18 mov %rax,0x18(%rcx) : lastrdata++; : : lastrdata->data = NULL; 0.00 : 4a6dd4: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 4a6ddb: 00 : lastrdata->len = 0; 0.00 : 4a6ddc: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : lastrdata->buffer = sbuf; /* bkp block 1 (leaf) or 2 (non-leaf) */ 0.00 : 4a6de3: 44 89 70 0c mov %r14d,0xc(%rax) : lastrdata->buffer_std = true; 0.00 : 4a6de7: c6 40 10 01 movb $0x1,0x10(%rax) : } : : lastrdata->next = NULL; : : if (isroot) 0.00 : 4a6deb: 41 83 e5 02 and $0x2,%r13d : lastrdata->len = 0; : lastrdata->buffer = sbuf; /* bkp block 1 (leaf) or 2 (non-leaf) */ : lastrdata->buffer_std = true; : } : : lastrdata->next = NULL; 0.00 : 4a6def: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 4a6df6: 00 : : if (isroot) 0.00 : 4a6df7: 0f 84 e1 02 00 00 je 4a70de <_bt_insertonpg+0x100e> : xlinfo = newitemonleft ? XLOG_BTREE_SPLIT_L_ROOT : XLOG_BTREE_SPLIT_R_ROOT; 0.00 : 4a6dfd: 80 bd 37 fe ff ff 01 cmpb $0x1,-0x1c9(%rbp) 0.00 : 4a6e04: 19 f6 sbb %esi,%esi 0.00 : 4a6e06: 83 e6 10 and $0x10,%esi 0.00 : 4a6e09: 83 c6 50 add $0x50,%esi : else : xlinfo = newitemonleft ? XLOG_BTREE_SPLIT_L : XLOG_BTREE_SPLIT_R; : : recptr = XLogInsert(RM_BTREE_ID, xlinfo, rdata); 0.00 : 4a6e0c: 4c 89 c2 mov %r8,%rdx 0.00 : 4a6e0f: bf 0b 00 00 00 mov $0xb,%edi 0.00 : 4a6e14: e8 07 e1 02 00 callq 4d4f20 : : PageSetLSN(origpage, recptr); 0.00 : 4a6e19: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 4a6e20: 48 89 c2 mov %rax,%rdx 0.00 : 4a6e23: 89 c6 mov %eax,%esi 0.00 : 4a6e25: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4a6e29: 89 d1 mov %edx,%ecx 0.00 : 4a6e2b: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 4a6e2e: 89 13 mov %edx,(%rbx) : PageSetLSN(rightpage, recptr); 0.00 : 4a6e30: 48 8b 9d 70 fe ff ff mov -0x190(%rbp),%rbx 0.00 : 4a6e37: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 4a6e3a: 89 13 mov %edx,(%rbx) : if (!P_RIGHTMOST(ropaque)) 0.00 : 4a6e3c: 48 8b 9d 60 fe ff ff mov -0x1a0(%rbp),%rbx 0.00 : 4a6e43: 44 8b 43 04 mov 0x4(%rbx),%r8d 0.00 : 4a6e47: 45 85 c0 test %r8d,%r8d 0.00 : 4a6e4a: 74 09 je 4a6e55 <_bt_insertonpg+0xd85> : { : PageSetLSN(spage, recptr); 0.00 : 4a6e4c: 41 89 14 24 mov %edx,(%r12) 0.00 : 4a6e50: 41 89 44 24 04 mov %eax,0x4(%r12) : } : if (!isleaf) 0.00 : 4a6e55: 45 84 ff test %r15b,%r15b 0.00 : 4a6e58: 0f 85 80 f9 ff ff jne 4a67de <_bt_insertonpg+0x70e> : { : PageSetLSN(BufferGetPage(cbuf), recptr); 0.00 : 4a6e5e: 8b bd 18 fe ff ff mov -0x1e8(%rbp),%edi 0.00 : 4a6e64: 85 ff test %edi,%edi 0.00 : 4a6e66: 0f 88 59 03 00 00 js 4a71c5 <_bt_insertonpg+0x10f5> 0.00 : 4a6e6c: 8b 85 18 fe ff ff mov -0x1e8(%rbp),%eax 0.00 : 4a6e72: 48 8b 15 7f 8c 71 00 mov 0x718c7f(%rip),%rdx # bbfaf8 0.00 : 4a6e79: 83 e8 01 sub $0x1,%eax 0.00 : 4a6e7c: 48 98 cltq 0.00 : 4a6e7e: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4a6e82: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 4a6e85: 48 03 05 6c 8c 71 00 add 0x718c6c(%rip),%rax # bbfaf8 0.00 : 4a6e8c: 89 70 04 mov %esi,0x4(%rax) 0.00 : 4a6e8f: e9 4a f9 ff ff jmpq 4a67de <_bt_insertonpg+0x70e> : } : else : { : if (!_bt_pgaddtup(rightpage, itemsz, item, rightoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6e94: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a6e9b: 31 c0 xor %eax,%eax 0.00 : 4a6e9d: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "failed to add old item to the right sibling" 0.00 : 4a6ea2: ba e1 42 7b 00 mov $0x7b42e1,%edx 0.00 : 4a6ea7: be 77 04 00 00 mov $0x477,%esi : } : else : { : if (!_bt_pgaddtup(rightpage, itemsz, item, rightoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6eac: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "failed to add old item to the right sibling" 0.00 : 4a6eaf: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a6eb4: e8 67 45 2d 00 callq 77b420 0.00 : 4a6eb9: 48 8b 95 20 fe ff ff mov -0x1e0(%rbp),%rdx 0.00 : 4a6ec0: be 20 3f 7b 00 mov $0x7b3f20,%esi 0.00 : 4a6ec5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a6eca: 31 c0 xor %eax,%eax 0.00 : 4a6ecc: 48 8b 4a 30 mov 0x30(%rdx),%rcx 0.00 : 4a6ed0: 8b 95 6c fe ff ff mov -0x194(%rbp),%edx 0.00 : 4a6ed6: e8 55 43 2d 00 callq 77b230 0.00 : 4a6edb: e8 f0 25 fc ff callq 4694d0 : /* decide which page to put it on */ : if (i < firstright) : { : if (!_bt_pgaddtup(leftpage, itemsz, item, leftoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6ee0: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a6ee7: 31 c0 xor %eax,%eax 0.00 : 4a6ee9: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "failed to add old item to the left sibling" 0.00 : 4a6eee: ba e1 42 7b 00 mov $0x7b42e1,%edx 0.00 : 4a6ef3: be 6c 04 00 00 mov $0x46c,%esi : /* decide which page to put it on */ : if (i < firstright) : { : if (!_bt_pgaddtup(leftpage, itemsz, item, leftoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a6ef8: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "failed to add old item to the left sibling" 0.00 : 4a6efb: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a6f00: e8 1b 45 2d 00 callq 77b420 0.00 : 4a6f05: 48 8b 85 20 fe ff ff mov -0x1e0(%rbp),%rax 0.00 : 4a6f0c: 8b 95 6c fe ff ff mov -0x194(%rbp),%edx 0.00 : 4a6f12: be c8 3e 7b 00 mov $0x7b3ec8,%esi 0.00 : 4a6f17: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a6f1c: 48 8b 48 30 mov 0x30(%rax),%rcx 0.00 : 4a6f20: 31 c0 xor %eax,%eax 0.00 : 4a6f22: e8 09 43 2d 00 callq 77b230 0.00 : 4a6f27: e8 a4 25 fc ff callq 4694d0 : */ : if (split_only_page) : { : Assert(!P_ISLEAF(lpageop)); : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_WRITE); 0.00 : 4a6f2c: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6f33: 31 f6 xor %esi,%esi 0.00 : 4a6f35: ba 02 00 00 00 mov $0x2,%edx 0.00 : 4a6f3a: e8 11 21 00 00 callq 4a9050 <_bt_getbuf> : metapg = BufferGetPage(metabuf); 0.00 : 4a6f3f: 85 c0 test %eax,%eax : */ : if (split_only_page) : { : Assert(!P_ISLEAF(lpageop)); : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_WRITE); 0.00 : 4a6f41: 41 89 c5 mov %eax,%r13d : metapg = BufferGetPage(metabuf); 0.00 : 4a6f44: 0f 88 cf 03 00 00 js 4a7319 <_bt_insertonpg+0x1249> 0.00 : 4a6f4a: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 4a6f4e: 4c 63 f0 movslq %eax,%r14 0.00 : 4a6f51: 49 c1 e6 0d shl $0xd,%r14 0.00 : 4a6f55: 4c 03 35 9c 8b 71 00 add 0x718b9c(%rip),%r14 # bbfaf8 : metad = BTPageGetMeta(metapg); 0.00 : 4a6f5c: 4d 8d 66 18 lea 0x18(%r14),%r12 : : if (metad->btm_fastlevel >= lpageop->btpo.level) 0.00 : 4a6f60: 41 8b 44 24 14 mov 0x14(%r12),%eax 0.00 : 4a6f65: 3b 43 08 cmp 0x8(%rbx),%eax 0.00 : 4a6f68: 0f 82 a2 f9 ff ff jb 4a6910 <_bt_insertonpg+0x840> : { : /* no update wanted */ : _bt_relbuf(rel, metabuf); 0.00 : 4a6f6e: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6f75: 44 89 ee mov %r13d,%esi 0.00 : 4a6f78: 45 31 ed xor %r13d,%r13d 0.00 : 4a6f7b: e8 50 20 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a6f80: e9 8b f9 ff ff jmpq 4a6910 <_bt_insertonpg+0x840> : : MarkBufferDirty(buf); : : if (BufferIsValid(metabuf)) : { : metad->btm_fastroot = itup_blkno; 0.00 : 4a6f85: 45 89 7c 24 10 mov %r15d,0x10(%r12) : metad->btm_fastlevel = lpageop->btpo.level; 0.00 : 4a6f8a: 8b 43 08 mov 0x8(%rbx),%eax : MarkBufferDirty(metabuf); 0.00 : 4a6f8d: 44 89 ef mov %r13d,%edi : MarkBufferDirty(buf); : : if (BufferIsValid(metabuf)) : { : metad->btm_fastroot = itup_blkno; : metad->btm_fastlevel = lpageop->btpo.level; 0.00 : 4a6f90: 41 89 44 24 14 mov %eax,0x14(%r12) : MarkBufferDirty(metabuf); 0.00 : 4a6f95: e8 56 d8 1c 00 callq 6747f0 0.00 : 4a6f9a: e9 c5 f9 ff ff jmpq 4a6964 <_bt_insertonpg+0x894> : : /* release buffers */ : if (BufferIsValid(metabuf)) : _bt_relbuf(rel, metabuf); : if (BufferIsValid(cbuf)) : _bt_relbuf(rel, cbuf); 0.00 : 4a6f9f: 8b b5 18 fe ff ff mov -0x1e8(%rbp),%esi 0.00 : 4a6fa5: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6fac: e8 1f 20 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a6fb1: e9 f6 f9 ff ff jmpq 4a69ac <_bt_insertonpg+0x8dc> : : END_CRIT_SECTION(); : : /* release buffers */ : if (BufferIsValid(metabuf)) : _bt_relbuf(rel, metabuf); 0.00 : 4a6fb6: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a6fbd: 44 89 ee mov %r13d,%esi 0.00 : 4a6fc0: e8 0b 20 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a6fc5: e9 d4 f9 ff ff jmpq 4a699e <_bt_insertonpg+0x8ce> : XLogRecPtr recptr; : XLogRecData rdata[4]; : XLogRecData *nextrdata; : IndexTupleData trunctuple; : : xlrec.target.node = rel->rd_node; 0.00 : 4a6fca: 48 8b 06 mov (%rsi),%rax : ItemPointerSet(&(xlrec.target.tid), itup_blkno, itup_off); : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBtreeInsert; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = nextrdata = &(rdata[1]); 0.00 : 4a6fcd: 4c 8d 85 a0 fe ff ff lea -0x160(%rbp),%r8 : : if (P_ISLEAF(lpageop)) 0.00 : 4a6fd4: 31 d2 xor %edx,%edx : XLogRecPtr recptr; : XLogRecData rdata[4]; : XLogRecData *nextrdata; : IndexTupleData trunctuple; : : xlrec.target.node = rel->rd_node; 0.00 : 4a6fd6: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 4a6fda: 8b 46 08 mov 0x8(%rsi),%eax : ItemPointerSet(&(xlrec.target.tid), itup_blkno, itup_off); 0.00 : 4a6fdd: 66 44 89 7d 8e mov %r15w,-0x72(%rbp) : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBtreeInsert; 0.00 : 4a6fe2: c7 85 a8 fe ff ff 12 movl $0x12,-0x158(%rbp) 0.00 : 4a6fe9: 00 00 00 : rdata[0].buffer = InvalidBuffer; 0.00 : 4a6fec: c7 85 ac fe ff ff 00 movl $0x0,-0x154(%rbp) 0.00 : 4a6ff3: 00 00 00 : XLogRecPtr recptr; : XLogRecData rdata[4]; : XLogRecData *nextrdata; : IndexTupleData trunctuple; : : xlrec.target.node = rel->rd_node; 0.00 : 4a6ff6: 89 45 88 mov %eax,-0x78(%rbp) : ItemPointerSet(&(xlrec.target.tid), itup_blkno, itup_off); 0.00 : 4a6ff9: 44 89 f8 mov %r15d,%eax 0.00 : 4a6ffc: c1 e8 10 shr $0x10,%eax 0.00 : 4a6fff: 66 89 45 8c mov %ax,-0x74(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:848 12.50 : 4a7003: 0f b7 85 06 fe ff ff movzwl -0x1fa(%rbp),%eax 0.00 : 4a700a: 66 89 45 90 mov %ax,-0x70(%rbp) : : rdata[0].data = (char *) &xlrec; 0.00 : 4a700e: 48 8d 45 80 lea -0x80(%rbp),%rax 0.00 : 4a7012: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) : rdata[0].len = SizeOfBtreeInsert; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = nextrdata = &(rdata[1]); 0.00 : 4a7019: 49 8d 40 20 lea 0x20(%r8),%rax 0.00 : 4a701d: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) : : if (P_ISLEAF(lpageop)) 0.00 : 4a7024: f6 43 0c 01 testb $0x1,0xc(%rbx) 0.00 : 4a7028: 48 89 c1 mov %rax,%rcx 0.00 : 4a702b: 0f 84 8c 02 00 00 je 4a72bd <_bt_insertonpg+0x11ed> : nextrdata++; : : xlinfo = XLOG_BTREE_INSERT_UPPER; : } : : if (BufferIsValid(metabuf)) 0.00 : 4a7031: 45 85 ed test %r13d,%r13d 0.00 : 4a7034: 0f b6 f2 movzbl %dl,%esi 0.00 : 4a7037: 0f 85 3e 01 00 00 jne 4a717b <_bt_insertonpg+0x10ab> : : xlinfo = XLOG_BTREE_INSERT_META; : } : : /* Read comments in _bt_pgaddtup */ : if (!P_ISLEAF(lpageop) && newitemoff == P_FIRSTDATAKEY(lpageop)) 0.00 : 4a703d: f6 43 0c 01 testb $0x1,0xc(%rbx) 0.00 : 4a7041: 0f 84 f8 00 00 00 je 4a713f <_bt_insertonpg+0x106f> : nextrdata->data = (char *) &trunctuple; : nextrdata->len = sizeof(IndexTupleData); : } : else : { : nextrdata->data = (char *) itup; 0.00 : 4a7047: 48 8b 85 08 fe ff ff mov -0x1f8(%rbp),%rax 0.00 : 4a704e: 48 89 01 mov %rax,(%rcx) : nextrdata->len = IndexTupleDSize(*itup); 0.00 : 4a7051: 48 8b 95 08 fe ff ff mov -0x1f8(%rbp),%rdx 0.00 : 4a7058: 0f b7 42 06 movzwl 0x6(%rdx),%eax 0.00 : 4a705c: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4a7061: 89 41 08 mov %eax,0x8(%rcx) : } : nextrdata->buffer = buf; 0.00 : 4a7064: 8b 9d 1c fe ff ff mov -0x1e4(%rbp),%ebx : nextrdata->buffer_std = true; : nextrdata->next = NULL; : : recptr = XLogInsert(RM_BTREE_ID, xlinfo, rdata); 0.00 : 4a706a: 4c 89 c2 mov %r8,%rdx : { : nextrdata->data = (char *) itup; : nextrdata->len = IndexTupleDSize(*itup); : } : nextrdata->buffer = buf; : nextrdata->buffer_std = true; 0.00 : 4a706d: c6 41 10 01 movb $0x1,0x10(%rcx) : nextrdata->next = NULL; 0.00 : 4a7071: 48 c7 41 18 00 00 00 movq $0x0,0x18(%rcx) 0.00 : 4a7078: 00 : : recptr = XLogInsert(RM_BTREE_ID, xlinfo, rdata); 0.00 : 4a7079: bf 0b 00 00 00 mov $0xb,%edi : else : { : nextrdata->data = (char *) itup; : nextrdata->len = IndexTupleDSize(*itup); : } : nextrdata->buffer = buf; 0.00 : 4a707e: 89 59 0c mov %ebx,0xc(%rcx) : nextrdata->buffer_std = true; : nextrdata->next = NULL; : : recptr = XLogInsert(RM_BTREE_ID, xlinfo, rdata); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:907 12.50 : 4a7081: e8 9a de 02 00 callq 4d4f20 : : if (BufferIsValid(metabuf)) 0.00 : 4a7086: 45 85 ed test %r13d,%r13d : } : nextrdata->buffer = buf; : nextrdata->buffer_std = true; : nextrdata->next = NULL; : : recptr = XLogInsert(RM_BTREE_ID, xlinfo, rdata); 0.00 : 4a7089: 48 89 c2 mov %rax,%rdx : : if (BufferIsValid(metabuf)) 0.00 : 4a708c: 0f 85 99 00 00 00 jne 4a712b <_bt_insertonpg+0x105b> 0.00 : 4a7092: 48 89 c6 mov %rax,%rsi 0.00 : 4a7095: 89 c1 mov %eax,%ecx 0.00 : 4a7097: 48 c1 ee 20 shr $0x20,%rsi : { : PageSetLSN(metapg, recptr); : } : if (BufferIsValid(cbuf)) 0.00 : 4a709b: 83 bd 18 fe ff ff 00 cmpl $0x0,-0x1e8(%rbp) 0.00 : 4a70a2: 74 29 je 4a70cd <_bt_insertonpg+0xffd> : { : PageSetLSN(BufferGetPage(cbuf), recptr); 0.00 : 4a70a4: 0f 8c 83 02 00 00 jl 4a732d <_bt_insertonpg+0x125d> 0.00 : 4a70aa: 8b 85 18 fe ff ff mov -0x1e8(%rbp),%eax 0.00 : 4a70b0: 48 8b 15 41 8a 71 00 mov 0x718a41(%rip),%rdx # bbfaf8 0.00 : 4a70b7: 83 e8 01 sub $0x1,%eax 0.00 : 4a70ba: 48 98 cltq 0.00 : 4a70bc: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4a70c0: 89 34 02 mov %esi,(%rdx,%rax,1) 0.00 : 4a70c3: 48 03 05 2e 8a 71 00 add 0x718a2e(%rip),%rax # bbfaf8 0.00 : 4a70ca: 89 48 04 mov %ecx,0x4(%rax) : } : : PageSetLSN(page, recptr); 0.00 : 4a70cd: 48 8b 85 28 fe ff ff mov -0x1d8(%rbp),%rax 0.00 : 4a70d4: 89 30 mov %esi,(%rax) 0.00 : 4a70d6: 89 48 04 mov %ecx,0x4(%rax) 0.00 : 4a70d9: e9 a8 f8 ff ff jmpq 4a6986 <_bt_insertonpg+0x8b6> : lastrdata->next = NULL; : : if (isroot) : xlinfo = newitemonleft ? XLOG_BTREE_SPLIT_L_ROOT : XLOG_BTREE_SPLIT_R_ROOT; : else : xlinfo = newitemonleft ? XLOG_BTREE_SPLIT_L : XLOG_BTREE_SPLIT_R; 0.00 : 4a70de: 80 bd 37 fe ff ff 01 cmpb $0x1,-0x1c9(%rbp) 0.00 : 4a70e5: 19 f6 sbb %esi,%esi 0.00 : 4a70e7: 83 e6 10 and $0x10,%esi 0.00 : 4a70ea: 83 c6 30 add $0x30,%esi 0.00 : 4a70ed: e9 1a fd ff ff jmpq 4a6e0c <_bt_insertonpg+0xd3c> : lastrdata->len = MAXALIGN(IndexTupleSize(item)); : lastrdata->buffer = buf; /* backup block 0 */ : lastrdata->buffer_std = true; : } : : if (isleaf && !newitemonleft) 0.00 : 4a70f2: 80 bd 8b fe ff ff 00 cmpb $0x0,-0x175(%rbp) 0.00 : 4a70f9: 0f 84 8c fc ff ff je 4a6d8b <_bt_insertonpg+0xcbb> : { : lastrdata->next = lastrdata + 1; 0.00 : 4a70ff: 48 8d 43 20 lea 0x20(%rbx),%rax : * Although we don't need to WAL-log anything on the left page, we : * still need XLogInsert to consider storing a full-page image of : * the left page, so make an empty entry referencing that buffer. : * This also ensures that the left page is always backup block 0. : */ : lastrdata->data = NULL; 0.00 : 4a7103: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 4a710a: 00 : lastrdata->buffer_std = true; : } : : if (isleaf && !newitemonleft) : { : lastrdata->next = lastrdata + 1; 0.00 : 4a710b: 48 89 43 18 mov %rax,0x18(%rbx) : * still need XLogInsert to consider storing a full-page image of : * the left page, so make an empty entry referencing that buffer. : * This also ensures that the left page is always backup block 0. : */ : lastrdata->data = NULL; : lastrdata->len = 0; 0.00 : 4a710f: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : lastrdata->buffer = buf; /* backup block 0 */ : lastrdata->buffer_std = true; 0.00 : 4a7116: 48 89 c3 mov %rax,%rbx : * the left page, so make an empty entry referencing that buffer. : * This also ensures that the left page is always backup block 0. : */ : lastrdata->data = NULL; : lastrdata->len = 0; : lastrdata->buffer = buf; /* backup block 0 */ 0.00 : 4a7119: 8b 8d 1c fe ff ff mov -0x1e4(%rbp),%ecx : lastrdata->buffer_std = true; 0.00 : 4a711f: c6 40 10 01 movb $0x1,0x10(%rax) : * the left page, so make an empty entry referencing that buffer. : * This also ensures that the left page is always backup block 0. : */ : lastrdata->data = NULL; : lastrdata->len = 0; : lastrdata->buffer = buf; /* backup block 0 */ 0.00 : 4a7123: 89 48 0c mov %ecx,0xc(%rax) 0.00 : 4a7126: e9 60 fc ff ff jmpq 4a6d8b <_bt_insertonpg+0xcbb> : : recptr = XLogInsert(RM_BTREE_ID, xlinfo, rdata); : : if (BufferIsValid(metabuf)) : { : PageSetLSN(metapg, recptr); 0.00 : 4a712b: 48 c1 e8 20 shr $0x20,%rax 0.00 : 4a712f: 89 d1 mov %edx,%ecx 0.00 : 4a7131: 41 89 56 04 mov %edx,0x4(%r14) 0.00 : 4a7135: 89 c6 mov %eax,%esi 0.00 : 4a7137: 41 89 06 mov %eax,(%r14) 0.00 : 4a713a: e9 5c ff ff ff jmpq 4a709b <_bt_insertonpg+0xfcb> : : xlinfo = XLOG_BTREE_INSERT_META; : } : : /* Read comments in _bt_pgaddtup */ : if (!P_ISLEAF(lpageop) && newitemoff == P_FIRSTDATAKEY(lpageop)) 0.00 : 4a713f: 83 7b 04 01 cmpl $0x1,0x4(%rbx) 0.00 : 4a7143: 19 c0 sbb %eax,%eax 0.00 : 4a7145: 83 c0 02 add $0x2,%eax 0.00 : 4a7148: 3b 85 9c fe ff ff cmp -0x164(%rbp),%eax 0.00 : 4a714e: 0f 85 f3 fe ff ff jne 4a7047 <_bt_insertonpg+0xf77> : { : trunctuple = *itup; 0.00 : 4a7154: 48 8b 9d 08 fe ff ff mov -0x1f8(%rbp),%rbx 0.00 : 4a715b: 48 8b 03 mov (%rbx),%rax 0.00 : 4a715e: 48 89 45 c0 mov %rax,-0x40(%rbp) : trunctuple.t_info = sizeof(IndexTupleData); : nextrdata->data = (char *) &trunctuple; 0.00 : 4a7162: 48 8d 45 c0 lea -0x40(%rbp),%rax : : /* Read comments in _bt_pgaddtup */ : if (!P_ISLEAF(lpageop) && newitemoff == P_FIRSTDATAKEY(lpageop)) : { : trunctuple = *itup; : trunctuple.t_info = sizeof(IndexTupleData); 0.00 : 4a7166: 66 c7 45 c6 08 00 movw $0x8,-0x3a(%rbp) : nextrdata->data = (char *) &trunctuple; : nextrdata->len = sizeof(IndexTupleData); 0.00 : 4a716c: c7 41 08 08 00 00 00 movl $0x8,0x8(%rcx) : /* Read comments in _bt_pgaddtup */ : if (!P_ISLEAF(lpageop) && newitemoff == P_FIRSTDATAKEY(lpageop)) : { : trunctuple = *itup; : trunctuple.t_info = sizeof(IndexTupleData); : nextrdata->data = (char *) &trunctuple; 0.00 : 4a7173: 48 89 01 mov %rax,(%rcx) : : xlinfo = XLOG_BTREE_INSERT_META; : } : : /* Read comments in _bt_pgaddtup */ : if (!P_ISLEAF(lpageop) && newitemoff == P_FIRSTDATAKEY(lpageop)) 0.00 : 4a7176: e9 e9 fe ff ff jmpq 4a7064 <_bt_insertonpg+0xf94> : xlinfo = XLOG_BTREE_INSERT_UPPER; : } : : if (BufferIsValid(metabuf)) : { : xlmeta.root = metad->btm_root; 0.00 : 4a717b: 41 8b 44 24 08 mov 0x8(%r12),%eax : xlmeta.fastlevel = metad->btm_fastlevel; : : nextrdata->data = (char *) &xlmeta; : nextrdata->len = sizeof(xl_btree_metadata); : nextrdata->buffer = InvalidBuffer; : nextrdata->next = nextrdata + 1; 0.00 : 4a7180: be 20 00 00 00 mov $0x20,%esi : xlinfo = XLOG_BTREE_INSERT_UPPER; : } : : if (BufferIsValid(metabuf)) : { : xlmeta.root = metad->btm_root; 0.00 : 4a7185: 89 45 b0 mov %eax,-0x50(%rbp) : xlmeta.level = metad->btm_level; 0.00 : 4a7188: 41 8b 44 24 0c mov 0xc(%r12),%eax 0.00 : 4a718d: 89 45 b4 mov %eax,-0x4c(%rbp) : xlmeta.fastroot = metad->btm_fastroot; 0.00 : 4a7190: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.00 : 4a7195: 89 45 b8 mov %eax,-0x48(%rbp) : xlmeta.fastlevel = metad->btm_fastlevel; 0.00 : 4a7198: 41 8b 44 24 14 mov 0x14(%r12),%eax 0.00 : 4a719d: 89 45 bc mov %eax,-0x44(%rbp) : : nextrdata->data = (char *) &xlmeta; 0.00 : 4a71a0: 48 8d 45 b0 lea -0x50(%rbp),%rax : nextrdata->len = sizeof(xl_btree_metadata); 0.00 : 4a71a4: c7 41 08 10 00 00 00 movl $0x10,0x8(%rcx) : nextrdata->buffer = InvalidBuffer; 0.00 : 4a71ab: c7 41 0c 00 00 00 00 movl $0x0,0xc(%rcx) : xlmeta.root = metad->btm_root; : xlmeta.level = metad->btm_level; : xlmeta.fastroot = metad->btm_fastroot; : xlmeta.fastlevel = metad->btm_fastlevel; : : nextrdata->data = (char *) &xlmeta; 0.00 : 4a71b2: 48 89 01 mov %rax,(%rcx) : nextrdata->len = sizeof(xl_btree_metadata); : nextrdata->buffer = InvalidBuffer; : nextrdata->next = nextrdata + 1; 0.00 : 4a71b5: 48 8d 41 20 lea 0x20(%rcx),%rax 0.00 : 4a71b9: 48 89 41 18 mov %rax,0x18(%rcx) 0.00 : 4a71bd: 48 89 c1 mov %rax,%rcx 0.00 : 4a71c0: e9 78 fe ff ff jmpq 4a703d <_bt_insertonpg+0xf6d> : { : PageSetLSN(spage, recptr); : } : if (!isleaf) : { : PageSetLSN(BufferGetPage(cbuf), recptr); 0.00 : 4a71c5: 8b 95 18 fe ff ff mov -0x1e8(%rbp),%edx 0.00 : 4a71cb: 48 8b 05 46 5f 6d 00 mov 0x6d5f46(%rip),%rax # b7d118 0.00 : 4a71d2: f7 d2 not %edx 0.00 : 4a71d4: 48 63 d2 movslq %edx,%rdx 0.00 : 4a71d7: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 4a71db: 89 08 mov %ecx,(%rax) 0.00 : 4a71dd: 48 8b 05 34 5f 6d 00 mov 0x6d5f34(%rip),%rax # b7d118 0.00 : 4a71e4: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 4a71e8: e9 9f fc ff ff jmpq 4a6e8c <_bt_insertonpg+0xdbc> : /* : * I believe it is not possible to fail to find a feasible split, but just : * in case ... : */ : if (!state.have_split) : elog(ERROR, "could not find a feasible split point for index \"%s\"", 0.00 : 4a71ed: ba d0 42 7b 00 mov $0x7b42d0,%edx 0.00 : 4a71f2: be 2e 06 00 00 mov $0x62e,%esi 0.00 : 4a71f7: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a71fc: e8 1f 42 2d 00 callq 77b420 0.00 : 4a7201: 48 8b 8d 20 fe ff ff mov -0x1e0(%rbp),%rcx 0.00 : 4a7208: be 40 3d 7b 00 mov $0x7b3d40,%esi 0.00 : 4a720d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a7212: 31 c0 xor %eax,%eax 0.00 : 4a7214: 48 8b 51 30 mov 0x30(%rcx),%rdx 0.00 : 4a7218: e8 13 40 2d 00 callq 77b230 0.00 : 4a721d: e8 ae 22 fc ff callq 4694d0 : } : : /* clear INCOMPLETE_SPLIT flag on child if inserting a downlink */ : if (BufferIsValid(cbuf)) : { : Page cpage = BufferGetPage(cbuf); 0.00 : 4a7222: 8b 85 18 fe ff ff mov -0x1e8(%rbp),%eax 0.00 : 4a7228: 48 8b 15 e9 5e 6d 00 mov 0x6d5ee9(%rip),%rdx # b7d118 0.00 : 4a722f: f7 d0 not %eax 0.00 : 4a7231: 48 98 cltq 0.00 : 4a7233: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4a7237: e9 0a f9 ff ff jmpq 4a6b46 <_bt_insertonpg+0xa76> : { : if (newitemonleft) : { : if (!_bt_pgaddtup(leftpage, newitemsz, newitem, leftoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a723c: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a7243: 31 c0 xor %eax,%eax 0.00 : 4a7245: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "failed to add new item to the left sibling" 0.00 : 4a724a: ba e1 42 7b 00 mov $0x7b42e1,%edx 0.00 : 4a724f: be 53 04 00 00 mov $0x453,%esi : { : if (newitemonleft) : { : if (!_bt_pgaddtup(leftpage, newitemsz, newitem, leftoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a7254: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "failed to add new item to the left sibling" 0.00 : 4a7257: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a725c: e8 bf 41 2d 00 callq 77b420 0.00 : 4a7261: 48 8b 9d 20 fe ff ff mov -0x1e0(%rbp),%rbx 0.00 : 4a7268: 8b 95 6c fe ff ff mov -0x194(%rbp),%edx 0.00 : 4a726e: be 18 3e 7b 00 mov $0x7b3e18,%esi 0.00 : 4a7273: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a7278: 31 c0 xor %eax,%eax 0.00 : 4a727a: 48 8b 4b 30 mov 0x30(%rbx),%rcx 0.00 : 4a727e: e8 ad 3f 2d 00 callq 77b230 0.00 : 4a7283: e8 48 22 fc ff callq 4694d0 : } : else : { : if (!_bt_pgaddtup(rightpage, newitemsz, newitem, rightoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a7288: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a728f: 31 c0 xor %eax,%eax 0.00 : 4a7291: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "failed to add new item to the right sibling" 0.00 : 4a7296: be 5e 04 00 00 mov $0x45e,%esi 0.00 : 4a729b: ba e1 42 7b 00 mov $0x7b42e1,%edx : } : else : { : if (!_bt_pgaddtup(rightpage, newitemsz, newitem, rightoff)) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a72a0: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "failed to add new item to the right sibling" 0.00 : 4a72a3: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a72a8: e8 73 41 2d 00 callq 77b420 0.00 : 4a72ad: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 4a72b4: 48 8b 4e 30 mov 0x30(%rsi),%rcx 0.00 : 4a72b8: e9 28 f9 ff ff jmpq 4a6be5 <_bt_insertonpg+0xb15> : { : /* : * Include the block number of the left child, whose : * INCOMPLETE_SPLIT flag was cleared. : */ : xlleftchild = BufferGetBlockNumber(cbuf); 0.00 : 4a72bd: 8b bd 18 fe ff ff mov -0x1e8(%rbp),%edi 0.00 : 4a72c3: 4c 89 85 f8 fd ff ff mov %r8,-0x208(%rbp) 0.00 : 4a72ca: e8 61 cd 1c 00 callq 674030 : nextrdata->data = (char *) &xlleftchild; : nextrdata->len = sizeof(BlockNumber); : nextrdata->buffer = cbuf; : nextrdata->buffer_std = true; : nextrdata->next = nextrdata + 1; 0.00 : 4a72cf: 4c 8b 85 f8 fd ff ff mov -0x208(%rbp),%r8 : { : /* : * Include the block number of the left child, whose : * INCOMPLETE_SPLIT flag was cleared. : */ : xlleftchild = BufferGetBlockNumber(cbuf); 0.00 : 4a72d6: 89 45 cc mov %eax,-0x34(%rbp) : nextrdata->data = (char *) &xlleftchild; 0.00 : 4a72d9: 48 8d 45 cc lea -0x34(%rbp),%rax : nextrdata->len = sizeof(BlockNumber); : nextrdata->buffer = cbuf; 0.00 : 4a72dd: 8b 95 18 fe ff ff mov -0x1e8(%rbp),%edx : * Include the block number of the left child, whose : * INCOMPLETE_SPLIT flag was cleared. : */ : xlleftchild = BufferGetBlockNumber(cbuf); : nextrdata->data = (char *) &xlleftchild; : nextrdata->len = sizeof(BlockNumber); 0.00 : 4a72e3: c7 85 c8 fe ff ff 04 movl $0x4,-0x138(%rbp) 0.00 : 4a72ea: 00 00 00 : /* : * Include the block number of the left child, whose : * INCOMPLETE_SPLIT flag was cleared. : */ : xlleftchild = BufferGetBlockNumber(cbuf); : nextrdata->data = (char *) &xlleftchild; 0.00 : 4a72ed: 48 89 85 c0 fe ff ff mov %rax,-0x140(%rbp) : nextrdata->len = sizeof(BlockNumber); : nextrdata->buffer = cbuf; : nextrdata->buffer_std = true; 0.00 : 4a72f4: c6 85 d0 fe ff ff 01 movb $0x1,-0x130(%rbp) : nextrdata->next = nextrdata + 1; 0.00 : 4a72fb: 49 8d 40 40 lea 0x40(%r8),%rax : * INCOMPLETE_SPLIT flag was cleared. : */ : xlleftchild = BufferGetBlockNumber(cbuf); : nextrdata->data = (char *) &xlleftchild; : nextrdata->len = sizeof(BlockNumber); : nextrdata->buffer = cbuf; 0.00 : 4a72ff: 89 95 cc fe ff ff mov %edx,-0x134(%rbp) : nextrdata->buffer_std = true; : nextrdata->next = nextrdata + 1; 0.00 : 4a7305: ba 10 00 00 00 mov $0x10,%edx 0.00 : 4a730a: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) 0.00 : 4a7311: 48 89 c1 mov %rax,%rcx 0.00 : 4a7314: e9 18 fd ff ff jmpq 4a7031 <_bt_insertonpg+0xf61> : if (split_only_page) : { : Assert(!P_ISLEAF(lpageop)); : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_WRITE); : metapg = BufferGetPage(metabuf); 0.00 : 4a7319: 48 8b 15 f8 5d 6d 00 mov 0x6d5df8(%rip),%rdx # b7d118 0.00 : 4a7320: f7 d0 not %eax 0.00 : 4a7322: 48 98 cltq 0.00 : 4a7324: 4c 8b 34 c2 mov (%rdx,%rax,8),%r14 0.00 : 4a7328: e9 2f fc ff ff jmpq 4a6f5c <_bt_insertonpg+0xe8c> : { : PageSetLSN(metapg, recptr); : } : if (BufferIsValid(cbuf)) : { : PageSetLSN(BufferGetPage(cbuf), recptr); 0.00 : 4a732d: 8b 95 18 fe ff ff mov -0x1e8(%rbp),%edx 0.00 : 4a7333: 48 8b 05 de 5d 6d 00 mov 0x6d5dde(%rip),%rax # b7d118 0.00 : 4a733a: f7 d2 not %edx 0.00 : 4a733c: 48 63 d2 movslq %edx,%rdx 0.00 : 4a733f: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 4a7343: 89 30 mov %esi,(%rax) 0.00 : 4a7345: 48 8b 05 cc 5d 6d 00 mov 0x6d5dcc(%rip),%rax # b7d118 0.00 : 4a734c: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 4a7350: e9 75 fd ff ff jmpq 4a70ca <_bt_insertonpg+0xffa> : /* child buffer must be given iff inserting on an internal page */ : Assert(P_ISLEAF(lpageop) == !BufferIsValid(cbuf)); : : /* The caller should've finished any incomplete splits already. */ : if (P_INCOMPLETE_SPLIT(lpageop)) : elog(ERROR, "cannot insert to incompletely split page %u", 0.00 : 4a7355: ba be 42 7b 00 mov $0x7b42be,%edx 0.00 : 4a735a: be d4 02 00 00 mov $0x2d4,%esi 0.00 : 4a735f: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a7364: e8 b7 40 2d 00 callq 77b420 0.00 : 4a7369: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi 0.00 : 4a736f: e8 bc cc 1c 00 callq 674030 0.00 : 4a7374: be 10 3d 7b 00 mov $0x7b3d10,%esi 0.00 : 4a7379: 89 c2 mov %eax,%edx 0.00 : 4a737b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a7380: 31 c0 xor %eax,%eax 0.00 : 4a7382: e8 a9 3e 2d 00 callq 77b230 0.00 : 4a7387: e8 44 21 fc ff callq 4694d0 : item = (IndexTuple) PageGetItem(origpage, itemid); : } : if (PageAddItem(leftpage, (Item) item, itemsz, leftoff, : false, false) == InvalidOffsetNumber) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a738c: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a7393: 31 c0 xor %eax,%eax 0.00 : 4a7395: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "failed to add hikey to the left sibling" 0.00 : 4a739a: ba e1 42 7b 00 mov $0x7b42e1,%edx 0.00 : 4a739f: be 37 04 00 00 mov $0x437,%esi : item = (IndexTuple) PageGetItem(origpage, itemid); : } : if (PageAddItem(leftpage, (Item) item, itemsz, leftoff, : false, false) == InvalidOffsetNumber) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a73a4: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "failed to add hikey to the left sibling" 0.00 : 4a73a7: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a73ac: e8 6f 40 2d 00 callq 77b420 0.00 : 4a73b1: 48 8b 9d 20 fe ff ff mov -0x1e0(%rbp),%rbx 0.00 : 4a73b8: 8b 95 6c fe ff ff mov -0x194(%rbp),%edx 0.00 : 4a73be: be c8 3d 7b 00 mov $0x7b3dc8,%esi 0.00 : 4a73c3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a73c8: 31 c0 xor %eax,%eax 0.00 : 4a73ca: 48 8b 4b 30 mov 0x30(%rbx),%rcx 0.00 : 4a73ce: e8 5d 3e 2d 00 callq 77b230 0.00 : 4a73d3: e8 f8 20 fc ff callq 4694d0 : : /* Do the update. No ereport(ERROR) until changes are logged */ : START_CRIT_SECTION(); : : if (!_bt_pgaddtup(page, itemsz, itup, newitemoff)) : elog(PANIC, "failed to add new item to block %u in index \"%s\"", 0.00 : 4a73d8: ba be 42 7b 00 mov $0x7b42be,%edx 0.00 : 4a73dd: be 2d 03 00 00 mov $0x32d,%esi 0.00 : 4a73e2: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a73e7: e8 34 40 2d 00 callq 77b420 0.00 : 4a73ec: 48 8b 9d 20 fe ff ff mov -0x1e0(%rbp),%rbx 0.00 : 4a73f3: 44 89 fa mov %r15d,%edx 0.00 : 4a73f6: be e0 3f 7b 00 mov $0x7b3fe0,%esi 0.00 : 4a73fb: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4a7400: 31 c0 xor %eax,%eax 0.00 : 4a7402: 48 8b 4b 30 mov 0x30(%rbx),%rcx 0.00 : 4a7406: e8 25 3e 2d 00 callq 77b230 0.00 : 4a740b: e8 c0 20 fc ff callq 4694d0 : sbuf = _bt_getbuf(rel, oopaque->btpo_next, BT_WRITE); : spage = BufferGetPage(sbuf); : sopaque = (BTPageOpaque) PageGetSpecialPointer(spage); : if (sopaque->btpo_prev != origpagenumber) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a7410: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 4a7417: 31 c0 xor %eax,%eax 0.00 : 4a7419: b9 00 04 00 00 mov $0x400,%ecx : elog(ERROR, "right sibling's left-link doesn't match: " 0.00 : 4a741e: ba e1 42 7b 00 mov $0x7b42e1,%edx 0.00 : 4a7423: be a3 04 00 00 mov $0x4a3,%esi : sbuf = _bt_getbuf(rel, oopaque->btpo_next, BT_WRITE); : spage = BufferGetPage(sbuf); : sopaque = (BTPageOpaque) PageGetSpecialPointer(spage); : if (sopaque->btpo_prev != origpagenumber) : { : memset(rightpage, 0, BufferGetPageSize(rbuf)); 0.00 : 4a7428: f3 48 ab rep stos %rax,%es:(%rdi) : elog(ERROR, "right sibling's left-link doesn't match: " 0.00 : 4a742b: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a7430: e8 eb 3f 2d 00 callq 77b420 0.00 : 4a7435: 48 8b 8d 58 fe ff ff mov -0x1a8(%rbp),%rcx 0.00 : 4a743c: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 4a7443: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a7448: 44 8b 85 6c fe ff ff mov -0x194(%rbp),%r8d 0.00 : 4a744f: 31 c0 xor %eax,%eax 0.00 : 4a7451: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 4a7454: 4c 8b 4e 30 mov 0x30(%rsi),%r9 0.00 : 4a7458: be 78 3f 7b 00 mov $0x7b3f78,%esi 0.00 : 4a745d: 8b 0b mov (%rbx),%ecx 0.00 : 4a745f: e8 cc 3d 2d 00 callq 77b230 0.00 : 4a7464: e8 67 20 fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:63 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:63 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:88 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:101 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004af970 <_bt_mkscankey>: : * : * The result is intended for use with _bt_compare(). : */ : ScanKey : _bt_mkscankey(Relation rel, IndexTuple itup) : { 0.00 : 4af970: 55 push %rbp 0.00 : 4af971: 48 89 e5 mov %rsp,%rbp 0.00 : 4af974: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:63 25.00 : 4af976: 49 89 f7 mov %rsi,%r15 0.00 : 4af979: 41 56 push %r14 0.00 : 4af97b: 41 55 push %r13 25.00 : 4af97d: 41 54 push %r12 0.00 : 4af97f: 53 push %rbx 0.00 : 4af980: 48 83 ec 48 sub $0x48,%rsp 0.00 : 4af984: 48 89 7d a8 mov %rdi,-0x58(%rbp) : TupleDesc itupdesc; : int natts; : int16 *indoption; : int i; : : itupdesc = RelationGetDescr(rel); 0.00 : 4af988: 48 8b 47 38 mov 0x38(%rdi),%rax 0.00 : 4af98c: 48 89 45 c0 mov %rax,-0x40(%rbp) : natts = RelationGetNumberOfAttributes(rel); 0.00 : 4af990: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 4af994: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 4af998: 89 45 cc mov %eax,-0x34(%rbp) : indoption = rel->rd_indoption; 0.00 : 4af99b: 48 8b 97 e8 00 00 00 mov 0xe8(%rdi),%rdx : : skey = (ScanKey) palloc(natts * sizeof(ScanKeyData)); 0.00 : 4af9a2: 48 63 f8 movslq %eax,%rdi 0.00 : 4af9a5: 48 8d 3c ff lea (%rdi,%rdi,8),%rdi 0.00 : 4af9a9: 48 c1 e7 03 shl $0x3,%rdi : int16 *indoption; : int i; : : itupdesc = RelationGetDescr(rel); : natts = RelationGetNumberOfAttributes(rel); : indoption = rel->rd_indoption; 0.00 : 4af9ad: 48 89 55 d0 mov %rdx,-0x30(%rbp) : : skey = (ScanKey) palloc(natts * sizeof(ScanKeyData)); 0.00 : 4af9b1: e8 9a 93 2e 00 callq 798d50 : : for (i = 0; i < natts; i++) 0.00 : 4af9b6: 44 8b 45 cc mov -0x34(%rbp),%r8d : : itupdesc = RelationGetDescr(rel); : natts = RelationGetNumberOfAttributes(rel); : indoption = rel->rd_indoption; : : skey = (ScanKey) palloc(natts * sizeof(ScanKeyData)); 0.00 : 4af9ba: 48 89 45 b8 mov %rax,-0x48(%rbp) : : for (i = 0; i < natts; i++) 0.00 : 4af9be: 45 85 c0 test %r8d,%r8d 0.00 : 4af9c1: 0f 8e 51 01 00 00 jle 4afb18 <_bt_mkscankey+0x1a8> 0.00 : 4af9c7: 49 89 c6 mov %rax,%r14 0.00 : 4af9ca: 45 31 ed xor %r13d,%r13d 0.00 : 4af9cd: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4af9d3: e9 ab 00 00 00 jmpq 4afa83 <_bt_mkscankey+0x113> 0.00 : 4af9d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4af9df: 00 : /* : * We can use the cached (default) support procs since no cross-type : * comparison can be needed. : */ : procinfo = index_getprocinfo(rel, i + 1, BTORDER_PROC); : arg = index_getattr(itup, i + 1, itupdesc, &null); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:88 25.00 : 4af9e0: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 4af9e4: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4af9e8: 4a 8b 14 e8 mov (%rax,%r13,8),%rdx 0.00 : 4af9ec: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 4af9ef: 85 c0 test %eax,%eax 0.00 : 4af9f1: 0f 88 f9 00 00 00 js 4afaf0 <_bt_mkscankey+0x180> 0.00 : 4af9f7: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 4af9fb: 0f 84 d7 00 00 00 je 4afad8 <_bt_mkscankey+0x168> 0.00 : 4afa01: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 4afa05: 66 83 fa 08 cmp $0x8,%dx 0.00 : 4afa09: 0f 84 21 01 00 00 je 4afb30 <_bt_mkscankey+0x1c0> 0.00 : 4afa0f: 66 83 fa 04 cmp $0x4,%dx 0.00 : 4afa13: 0f 84 2f 01 00 00 je 4afb48 <_bt_mkscankey+0x1d8> 0.00 : 4afa19: 66 83 fa 02 cmp $0x2,%dx 0.00 : 4afa1d: 0f 1f 00 nopl (%rax) 0.00 : 4afa20: 0f 84 3a 01 00 00 je 4afb60 <_bt_mkscankey+0x1f0> 0.00 : 4afa26: 48 98 cltq 0.00 : 4afa28: 44 89 e3 mov %r12d,%ebx 0.00 : 4afa2b: 31 f6 xor %esi,%esi 0.00 : 4afa2d: 41 0f b6 54 07 08 movzbl 0x8(%r15,%rax,1),%edx 0.00 : 4afa33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : flags = (null ? SK_ISNULL : 0) | (indoption[i] << SK_BT_INDOPTION_SHIFT); : ScanKeyEntryInitializeWithInfo(&skey[i], 0.00 : 4afa38: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 4afa3c: 4c 89 f7 mov %r14,%rdi 0.00 : 4afa3f: 41 83 c4 01 add $0x1,%r12d 0.00 : 4afa43: 49 83 c6 48 add $0x48,%r14 0.00 : 4afa47: 48 8b 81 20 01 00 00 mov 0x120(%rcx),%rax 0.00 : 4afa4e: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 4afa52: 46 8b 0c a8 mov (%rax,%r13,4),%r9d 0.00 : 4afa56: 42 0f bf 04 69 movswl (%rcx,%r13,2),%eax 0.00 : 4afa5b: 31 c9 xor %ecx,%ecx 0.00 : 4afa5d: 48 89 54 24 08 mov %rdx,0x8(%rsp) 0.00 : 4afa62: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 4afa65: 49 83 c5 01 add $0x1,%r13 0.00 : 4afa69: 4c 89 04 24 mov %r8,(%rsp) 0.00 : 4afa6d: 45 31 c0 xor %r8d,%r8d 0.00 : 4afa70: c1 e0 18 shl $0x18,%eax 0.00 : 4afa73: 09 c6 or %eax,%esi 0.00 : 4afa75: e8 c6 40 fc ff callq 473b40 : natts = RelationGetNumberOfAttributes(rel); : indoption = rel->rd_indoption; : : skey = (ScanKey) palloc(natts * sizeof(ScanKeyData)); : : for (i = 0; i < natts; i++) 0.00 : 4afa7a: 39 5d cc cmp %ebx,-0x34(%rbp) 0.00 : 4afa7d: 0f 8e 95 00 00 00 jle 4afb18 <_bt_mkscankey+0x1a8> : : /* : * We can use the cached (default) support procs since no cross-type : * comparison can be needed. : */ : procinfo = index_getprocinfo(rel, i + 1, BTORDER_PROC); 0.00 : 4afa83: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4afa87: 41 0f bf cc movswl %r12w,%ecx 0.00 : 4afa8b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4afa90: 89 ce mov %ecx,%esi 0.00 : 4afa92: 89 4d b4 mov %ecx,-0x4c(%rbp) : natts = RelationGetNumberOfAttributes(rel); : indoption = rel->rd_indoption; : : skey = (ScanKey) palloc(natts * sizeof(ScanKeyData)); : : for (i = 0; i < natts; i++) 0.00 : 4afa95: 44 89 eb mov %r13d,%ebx : : /* : * We can use the cached (default) support procs since no cross-type : * comparison can be needed. : */ : procinfo = index_getprocinfo(rel, i + 1, BTORDER_PROC); 0.00 : 4afa98: e8 23 56 ff ff callq 4a50c0 : arg = index_getattr(itup, i + 1, itupdesc, &null); 0.00 : 4afa9d: 66 41 83 7f 06 00 cmpw $0x0,0x6(%r15) : : /* : * We can use the cached (default) support procs since no cross-type : * comparison can be needed. : */ : procinfo = index_getprocinfo(rel, i + 1, BTORDER_PROC); 0.00 : 4afaa3: 49 89 c0 mov %rax,%r8 : arg = index_getattr(itup, i + 1, itupdesc, &null); 0.00 : 4afaa6: 0f 89 34 ff ff ff jns 4af9e0 <_bt_mkscankey+0x70> 0.00 : 4afaac: 44 89 e8 mov %r13d,%eax 0.00 : 4afaaf: 83 e3 07 and $0x7,%ebx 0.00 : 4afab2: c1 f8 03 sar $0x3,%eax 0.00 : 4afab5: 89 d9 mov %ebx,%ecx 0.00 : 4afab7: 48 98 cltq 0.00 : 4afab9: 41 0f be 44 07 08 movsbl 0x8(%r15,%rax,1),%eax 0.00 : 4afabf: d3 f8 sar %cl,%eax 0.00 : 4afac1: a8 01 test $0x1,%al 0.00 : 4afac3: 75 2b jne 4afaf0 <_bt_mkscankey+0x180> 0.00 : 4afac5: 44 89 e3 mov %r12d,%ebx 0.00 : 4afac8: 31 d2 xor %edx,%edx 0.00 : 4afaca: be 01 00 00 00 mov $0x1,%esi 0.00 : 4afacf: e9 64 ff ff ff jmpq 4afa38 <_bt_mkscankey+0xc8> 0.00 : 4afad4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4afad8: 48 98 cltq 0.00 : 4afada: 44 89 e3 mov %r12d,%ebx 0.00 : 4afadd: 31 f6 xor %esi,%esi 0.00 : 4afadf: 49 8d 54 07 08 lea 0x8(%r15,%rax,1),%rdx 0.00 : 4afae4: e9 4f ff ff ff jmpq 4afa38 <_bt_mkscankey+0xc8> 0.00 : 4afae9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4afaf0: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 4afaf4: 44 89 e6 mov %r12d,%esi 0.00 : 4afaf7: 4c 89 ff mov %r15,%rdi 0.00 : 4afafa: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 4afafe: 44 89 e3 mov %r12d,%ebx 0.00 : 4afb01: e8 5a 10 fc ff callq 470b60 0.00 : 4afb06: 31 f6 xor %esi,%esi 0.00 : 4afb08: 48 89 c2 mov %rax,%rdx 0.00 : 4afb0b: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 4afb0f: e9 24 ff ff ff jmpq 4afa38 <_bt_mkscankey+0xc8> 0.00 : 4afb14: 0f 1f 40 00 nopl 0x0(%rax) : procinfo, : arg); : } : : return skey; : } 0.00 : 4afb18: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4afb1c: 48 83 c4 48 add $0x48,%rsp 0.00 : 4afb20: 5b pop %rbx 0.00 : 4afb21: 41 5c pop %r12 0.00 : 4afb23: 41 5d pop %r13 0.00 : 4afb25: 41 5e pop %r14 0.00 : 4afb27: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:101 25.00 : 4afb29: c9 leaveq 0.00 : 4afb2a: c3 retq 0.00 : 4afb2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * We can use the cached (default) support procs since no cross-type : * comparison can be needed. : */ : procinfo = index_getprocinfo(rel, i + 1, BTORDER_PROC); : arg = index_getattr(itup, i + 1, itupdesc, &null); 0.00 : 4afb30: 48 98 cltq 0.00 : 4afb32: 44 89 e3 mov %r12d,%ebx 0.00 : 4afb35: 31 f6 xor %esi,%esi 0.00 : 4afb37: 49 8b 54 07 08 mov 0x8(%r15,%rax,1),%rdx 0.00 : 4afb3c: e9 f7 fe ff ff jmpq 4afa38 <_bt_mkscankey+0xc8> 0.00 : 4afb41: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4afb48: 48 98 cltq 0.00 : 4afb4a: 44 89 e3 mov %r12d,%ebx 0.00 : 4afb4d: 31 f6 xor %esi,%esi 0.00 : 4afb4f: 41 8b 54 07 08 mov 0x8(%r15,%rax,1),%edx 0.00 : 4afb54: e9 df fe ff ff jmpq 4afa38 <_bt_mkscankey+0xc8> 0.00 : 4afb59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4afb60: 48 98 cltq 0.00 : 4afb62: 44 89 e3 mov %r12d,%ebx 0.00 : 4afb65: 31 f6 xor %esi,%esi 0.00 : 4afb67: 41 0f b7 54 07 08 movzwl 0x8(%r15,%rax,1),%edx 0.00 : 4afb6d: e9 c6 fe ff ff jmpq 4afa38 <_bt_mkscankey+0xc8> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 75.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:397 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:395 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0b90 : : * It will return InvalidTransactionId if we are not currently inside a : * transaction, or inside a transaction that hasn't been assigned an XID yet. : */ : TransactionId : GetCurrentTransactionIdIfAny(void) : { 0.00 : 4c0b90: 48 8b 05 91 72 6a 00 mov 0x6a7291(%rip),%rax # b67e28 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:395 25.00 : 4c0b97: 55 push %rbp 0.00 : 4c0b98: 48 89 e5 mov %rsp,%rbp 0.00 : 4c0b9b: 8b 00 mov (%rax),%eax : return CurrentTransactionState->transactionId; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:397 75.00 : 4c0b9d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1194 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006747f0 : : * exclusive lock, then somebody could be in process of writing the buffer, : * leading to risk of bad data written to disk.) : */ : void : MarkBufferDirty(Buffer buffer) : { 0.00 : 6747f0: 55 push %rbp 0.00 : 6747f1: 48 89 e5 mov %rsp,%rbp 0.00 : 6747f4: 53 push %rbx 0.00 : 6747f5: 48 83 ec 08 sub $0x8,%rsp : volatile BufferDesc *bufHdr; : : if (!BufferIsValid(buffer)) 0.00 : 6747f9: 83 ff 00 cmp $0x0,%edi 0.00 : 6747fc: 0f 84 91 00 00 00 je 674893 : elog(ERROR, "bad buffer ID: %d", buffer); : : if (BufferIsLocal(buffer)) 0.00 : 674802: 0f 8c 80 00 00 00 jl 674888 : { : MarkLocalBufferDirty(buffer); : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 674808: 48 63 c7 movslq %edi,%rax 0.00 : 67480b: 48 8d 58 ff lea -0x1(%rax),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 67480f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 674814: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 674818: 48 03 1d e1 b2 54 00 add 0x54b2e1(%rip),%rbx # bbfb00 : : Assert(BufferIsPinned(buffer)); : /* unfortunately we can't check if the lock is held exclusively */ : Assert(LWLockHeldByMe(bufHdr->content_lock)); : : LockBufHdr(bufHdr); 0.00 : 67481f: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.00 : 674823: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1194 100.00 : 674826: 84 c0 test %al,%al 0.00 : 674828: 75 46 jne 674870 : Assert(bufHdr->refcount > 0); : : /* : * If the buffer was not dirty already, do vacuum accounting. : */ : if (!(bufHdr->flags & BM_DIRTY)) 0.00 : 67482a: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 67482e: a8 01 test $0x1,%al 0.00 : 674830: 75 24 jne 674856 : { : VacuumPageDirty++; 0.00 : 674832: 83 05 a3 58 54 00 01 addl $0x1,0x5458a3(%rip) # bba0dc : pgBufferUsage.shared_blks_dirtied++; 0.00 : 674839: 48 83 05 2f af 54 00 addq $0x1,0x54af2f(%rip) # bbf770 0.00 : 674840: 01 : if (VacuumCostActive) 0.00 : 674841: 80 3d 9c 58 54 00 00 cmpb $0x0,0x54589c(%rip) # bba0e4 0.00 : 674848: 74 0c je 674856 : VacuumCostBalance += VacuumCostPageDirty; 0.00 : 67484a: 8b 05 e4 42 4f 00 mov 0x4f42e4(%rip),%eax # b68b34 0.00 : 674850: 01 05 8a 58 54 00 add %eax,0x54588a(%rip) # bba0e0 : } : : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); 0.00 : 674856: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 67485a: 83 c8 21 or $0x21,%eax 0.00 : 67485d: 66 89 43 14 mov %ax,0x14(%rbx) : : UnlockBufHdr(bufHdr); 0.00 : 674861: c6 43 20 00 movb $0x0,0x20(%rbx) : } 0.00 : 674865: 48 83 c4 08 add $0x8,%rsp 0.00 : 674869: 5b pop %rbx 0.00 : 67486a: c9 leaveq 0.00 : 67486b: c3 retq 0.00 : 67486c: 0f 1f 40 00 nopl 0x0(%rax) : : Assert(BufferIsPinned(buffer)); : /* unfortunately we can't check if the lock is held exclusively */ : Assert(LWLockHeldByMe(bufHdr->content_lock)); : : LockBufHdr(bufHdr); 0.00 : 674870: ba aa 04 00 00 mov $0x4aa,%edx 0.00 : 674875: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67487a: e8 c1 b7 01 00 callq 690040 0.00 : 67487f: eb a9 jmp 67482a 0.00 : 674881: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); : : UnlockBufHdr(bufHdr); : } 0.00 : 674888: 48 83 c4 08 add $0x8,%rsp 0.00 : 67488c: 5b pop %rbx 0.00 : 67488d: c9 leaveq : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); : : if (BufferIsLocal(buffer)) : { : MarkLocalBufferDirty(buffer); 0.00 : 67488e: e9 fd 2f 00 00 jmpq 677890 : MarkBufferDirty(Buffer buffer) : { : volatile BufferDesc *bufHdr; : : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); 0.00 : 674893: ba 90 a0 8a 00 mov $0x8aa090,%edx 0.00 : 674898: be 9c 04 00 00 mov $0x49c,%esi 0.00 : 67489d: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 6748a2: e8 79 6b 10 00 callq 77b420 0.00 : 6748a7: 31 d2 xor %edx,%edx 0.00 : 6748a9: be 5c 9d 8a 00 mov $0x8a9d5c,%esi 0.00 : 6748ae: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6748b3: 31 c0 xor %eax,%eax 0.00 : 6748b5: e8 76 69 10 00 callq 77b230 0.00 : 6748ba: e8 11 4c df ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:945 30.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:948 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:941 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:945 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c7730 : : /* date_timestamp() : * Convert date to timestamp data type. : */ : Datum : date_timestamp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:941 10.00 : 6c7730: 55 push %rbp : DateADT dateVal = PG_GETARG_DATEADT(0); : Timestamp result; : : result = date2timestamp(dateVal); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:945 50.00 : 6c7731: 48 8b 7f 20 mov 0x20(%rdi),%rdi : /* date_timestamp() : * Convert date to timestamp data type. : */ : Datum : date_timestamp(PG_FUNCTION_ARGS) : { 0.00 : 6c7735: 48 89 e5 mov %rsp,%rbp : Timestamp result; : : result = date2timestamp(dateVal); : : PG_RETURN_TIMESTAMP(result); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:948 30.00 : 6c7738: c9 leaveq : date_timestamp(PG_FUNCTION_ARGS) : { : DateADT dateVal = PG_GETARG_DATEADT(0); : Timestamp result; : : result = date2timestamp(dateVal); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:945 10.00 : 6c7739: e9 d2 fe ff ff jmpq 6c7610 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:303 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:299 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9d20 : : * of their precision. : */ : : int : date2j(int y, int m, int d) : { 0.00 : 6c9d20: 55 push %rbp : int julian; : int century; : : if (m > 2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:303 16.67 : 6c9d21: 83 fe 02 cmp $0x2,%esi : * of their precision. : */ : : int : date2j(int y, int m, int d) : { 0.00 : 6c9d24: 41 89 d1 mov %edx,%r9d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:299 16.67 : 6c9d27: 48 89 e5 mov %rsp,%rbp : int julian; : int century; : : if (m > 2) 0.00 : 6c9d2a: 7f 6c jg 6c9d98 : y += 4800; : } : else : { : m += 13; : y += 4799; 0.00 : 6c9d2c: 8d 8f bf 12 00 00 lea 0x12bf(%rdi),%ecx : m += 1; : y += 4800; : } : else : { : m += 13; 0.00 : 6c9d32: 83 c6 0d add $0xd,%esi : y += 4799; : } : : century = y / 100; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 16.67 : 6c9d35: b8 1f 85 eb 51 mov $0x51eb851f,%eax : julian = y * 365 - 32167; : julian += y / 4 - century + century / 4; : julian += 7834 * m / 256 + d; : : return julian; : } /* date2j() */ 0.00 : 6c9d3a: c9 leaveq : { : m += 13; : y += 4799; : } : : century = y / 100; 0.00 : 6c9d3b: f7 e9 imul %ecx 16.67 : 6c9d3d: 89 c8 mov %ecx,%eax 0.00 : 6c9d3f: c1 f8 1f sar $0x1f,%eax 0.00 : 6c9d42: 41 89 d0 mov %edx,%r8d : julian = y * 365 - 32167; : julian += y / 4 - century + century / 4; 0.00 : 6c9d45: 8d 51 03 lea 0x3(%rcx),%edx : { : m += 13; : y += 4799; : } : : century = y / 100; 0.00 : 6c9d48: 41 c1 f8 05 sar $0x5,%r8d 0.00 : 6c9d4c: 41 29 c0 sub %eax,%r8d : julian = y * 365 - 32167; 0.00 : 6c9d4f: 69 c1 6d 01 00 00 imul $0x16d,%ecx,%eax : julian += y / 4 - century + century / 4; 0.00 : 6c9d55: 85 c9 test %ecx,%ecx 0.00 : 6c9d57: 0f 48 ca cmovs %edx,%ecx 0.00 : 6c9d5a: 41 8d 50 03 lea 0x3(%r8),%edx 0.00 : 6c9d5e: c1 f9 02 sar $0x2,%ecx : m += 13; : y += 4799; : } : : century = y / 100; : julian = y * 365 - 32167; 0.00 : 6c9d61: 41 8d 84 01 59 82 ff lea -0x7da7(%r9,%rax,1),%eax 0.00 : 6c9d68: ff : julian += y / 4 - century + century / 4; 0.00 : 6c9d69: 01 c8 add %ecx,%eax 0.00 : 6c9d6b: 45 85 c0 test %r8d,%r8d 0.00 : 6c9d6e: 41 0f 49 d0 cmovns %r8d,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 16.67 : 6c9d72: c1 fa 02 sar $0x2,%edx 0.00 : 6c9d75: 01 d0 add %edx,%eax 0.00 : 6c9d77: 69 d6 9a 1e 00 00 imul $0x1e9a,%esi,%edx 0.00 : 6c9d7d: 8d 8a ff 00 00 00 lea 0xff(%rdx),%ecx 0.00 : 6c9d83: 85 d2 test %edx,%edx 0.00 : 6c9d85: 0f 48 d1 cmovs %ecx,%edx 0.00 : 6c9d88: c1 fa 08 sar $0x8,%edx 0.00 : 6c9d8b: 01 d0 add %edx,%eax 16.67 : 6c9d8d: 44 29 c0 sub %r8d,%eax : julian += 7834 * m / 256 + d; : : return julian; : } /* date2j() */ 0.00 : 6c9d90: c3 retq 0.00 : 6c9d91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : int julian; : int century; : : if (m > 2) : { : m += 1; 0.00 : 6c9d98: 83 c6 01 add $0x1,%esi : y += 4800; 0.00 : 6c9d9b: 8d 8f c0 12 00 00 lea 0x12c0(%rdi),%ecx 0.00 : 6c9da1: eb 92 jmp 6c9d35 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2345 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9ef0 : : * Return 0 if okay, a DTERR code if not. : */ : int : ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, : struct pg_tm * tm) : { 0.00 : 6c9ef0: 55 push %rbp : if (fmask & DTK_M(YEAR)) 0.00 : 6c9ef1: 40 f6 c7 04 test $0x4,%dil : * Return 0 if okay, a DTERR code if not. : */ : int : ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, : struct pg_tm * tm) : { 0.00 : 6c9ef5: 48 89 e5 mov %rsp,%rbp 0.00 : 6c9ef8: 41 54 push %r12 0.00 : 6c9efa: 4d 89 c4 mov %r8,%r12 0.00 : 6c9efd: 53 push %rbx 0.00 : 6c9efe: 89 fb mov %edi,%ebx : if (fmask & DTK_M(YEAR)) 0.00 : 6c9f00: 74 05 je 6c9f07 : { : if (isjulian) 0.00 : 6c9f02: 40 84 f6 test %sil,%sil 0.00 : 6c9f05: 74 31 je 6c9f38 : return DTERR_FIELD_OVERFLOW; : } : } : : /* now that we have correct year, decode DOY */ : if (fmask & DTK_M(DOY)) 0.00 : 6c9f07: 66 85 db test %bx,%bx 0.00 : 6c9f0a: 78 5c js 6c9f68 : j2date(date2j(tm->tm_year, 1, 1) + tm->tm_yday - 1, : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : } : : /* check for valid month */ : if (fmask & DTK_M(MONTH)) 0.00 : 6c9f0c: f6 c3 02 test $0x2,%bl 0.00 : 6c9f0f: 90 nop 0.00 : 6c9f10: 0f 85 3a 01 00 00 jne 6ca050 : if (tm->tm_mon < 1 || tm->tm_mon > MONTHS_PER_YEAR) : return DTERR_MD_FIELD_OVERFLOW; : } : : /* minimal check for valid day */ : if (fmask & DTK_M(DAY)) 0.00 : 6c9f16: f6 c3 08 test $0x8,%bl 0.00 : 6c9f19: 0f 85 51 01 00 00 jne 6ca070 : { : if (tm->tm_mday < 1 || tm->tm_mday > 31) : return DTERR_MD_FIELD_OVERFLOW; : } : : if ((fmask & DTK_DATE_M) == DTK_DATE_M) 0.00 : 6c9f1f: 83 e3 0e and $0xe,%ebx 0.00 : 6c9f22: 83 fb 0e cmp $0xe,%ebx 0.00 : 6c9f25: 0f 84 a5 00 00 00 je 6c9fd0 : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 16.67 : 6c9f2b: 31 c0 xor %eax,%eax : return DTERR_FIELD_OVERFLOW; : } : : return 0; : } 0.00 : 6c9f2d: 5b pop %rbx 0.00 : 6c9f2e: 41 5c pop %r12 0.00 : 6c9f30: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2345 16.67 : 6c9f31: c3 retq 0.00 : 6c9f32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (isjulian) : { : /* tm_year is correct and should not be touched */ : } : else if (bc) 0.00 : 6c9f38: 84 c9 test %cl,%cl 0.00 : 6c9f3a: 0f 85 43 01 00 00 jne 6ca083 : if (tm->tm_year <= 0) : return DTERR_FIELD_OVERFLOW; : /* internally, we represent 1 BC as year zero, 2 BC as -1, etc */ : tm->tm_year = -(tm->tm_year - 1); : } : else if (is2digits) 0.00 : 6c9f40: 84 d2 test %dl,%dl 0.00 : 6c9f42: 74 5c je 6c9fa0 : { : /* process 1 or 2-digit input as 1970-2069 AD, allow '0' and '00' */ : if (tm->tm_year < 0) /* just paranoia */ 0.00 : 6c9f44: 41 8b 40 14 mov 0x14(%r8),%eax 0.00 : 6c9f48: 85 c0 test %eax,%eax 0.00 : 6c9f4a: 78 60 js 6c9fac : return DTERR_FIELD_OVERFLOW; : if (tm->tm_year < 70) 0.00 : 6c9f4c: 83 f8 45 cmp $0x45,%eax 0.00 : 6c9f4f: 90 nop 0.00 : 6c9f50: 7e 6e jle 6c9fc0 : tm->tm_year += 2000; : else if (tm->tm_year < 100) 0.00 : 6c9f52: 83 f8 63 cmp $0x63,%eax 0.00 : 6c9f55: 7f b0 jg 6c9f07 : tm->tm_year += 1900; 0.00 : 6c9f57: 05 6c 07 00 00 add $0x76c,%eax 0.00 : 6c9f5c: 41 89 40 14 mov %eax,0x14(%r8) 0.00 : 6c9f60: eb a5 jmp 6c9f07 0.00 : 6c9f62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : /* now that we have correct year, decode DOY */ : if (fmask & DTK_M(DOY)) : { : j2date(date2j(tm->tm_year, 1, 1) + tm->tm_yday - 1, 0.00 : 6c9f68: 41 8b 7c 24 14 mov 0x14(%r12),%edi 0.00 : 6c9f6d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6c9f72: be 01 00 00 00 mov $0x1,%esi 0.00 : 6c9f77: e8 a4 fd ff ff callq 6c9d20 0.00 : 6c9f7c: 41 03 44 24 1c add 0x1c(%r12),%eax 0.00 : 6c9f81: 49 8d 4c 24 0c lea 0xc(%r12),%rcx 0.00 : 6c9f86: 49 8d 54 24 10 lea 0x10(%r12),%rdx 0.00 : 6c9f8b: 49 8d 74 24 14 lea 0x14(%r12),%rsi 0.00 : 6c9f90: 8d 78 ff lea -0x1(%rax),%edi 0.00 : 6c9f93: e8 18 fe ff ff callq 6c9db0 0.00 : 6c9f98: e9 6f ff ff ff jmpq 6c9f0c 0.00 : 6c9f9d: 0f 1f 00 nopl (%rax) : tm->tm_year += 1900; : } : else : { : /* there is no year zero in AD/BC notation */ : if (tm->tm_year <= 0) 0.00 : 6c9fa0: 41 8b 48 14 mov 0x14(%r8),%ecx 0.00 : 6c9fa4: 85 c9 test %ecx,%ecx 0.00 : 6c9fa6: 0f 8f 5b ff ff ff jg 6c9f07 : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) 0.00 : 6c9fac: b8 fe ff ff ff mov $0xfffffffe,%eax 0.00 : 6c9fb1: e9 77 ff ff ff jmpq 6c9f2d 0.00 : 6c9fb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6c9fbd: 00 00 00 : { : /* process 1 or 2-digit input as 1970-2069 AD, allow '0' and '00' */ : if (tm->tm_year < 0) /* just paranoia */ : return DTERR_FIELD_OVERFLOW; : if (tm->tm_year < 70) : tm->tm_year += 2000; 0.00 : 6c9fc0: 05 d0 07 00 00 add $0x7d0,%eax 0.00 : 6c9fc5: 41 89 40 14 mov %eax,0x14(%r8) 0.00 : 6c9fc9: e9 39 ff ff ff jmpq 6c9f07 0.00 : 6c9fce: 66 90 xchg %ax,%ax : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 16.67 : 6c9fd0: 41 8b 4c 24 14 mov 0x14(%r12),%ecx 0.00 : 6c9fd5: 31 d2 xor %edx,%edx 0.00 : 6c9fd7: 45 8b 44 24 0c mov 0xc(%r12),%r8d 0.00 : 6c9fdc: f6 c1 03 test $0x3,%cl 0.00 : 6c9fdf: 75 3b jne 6ca01c 0.00 : 6c9fe1: b8 1f 85 eb 51 mov $0x51eb851f,%eax 16.67 : 6c9fe6: 89 cf mov %ecx,%edi 0.00 : 6c9fe8: f7 e9 imul %ecx 0.00 : 6c9fea: c1 ff 1f sar $0x1f,%edi 0.00 : 6c9fed: 89 d0 mov %edx,%eax 0.00 : 6c9fef: 89 d6 mov %edx,%esi 0.00 : 6c9ff1: ba 64 00 00 00 mov $0x64,%edx 0.00 : 6c9ff6: c1 f8 05 sar $0x5,%eax 0.00 : 6c9ff9: 29 f8 sub %edi,%eax 0.00 : 6c9ffb: 0f af c2 imul %edx,%eax 0.00 : 6c9ffe: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6ca003: 39 c1 cmp %eax,%ecx 0.00 : 6ca005: 75 15 jne 6ca01c 0.00 : 6ca007: 89 f2 mov %esi,%edx 0.00 : 6ca009: c1 fa 07 sar $0x7,%edx 0.00 : 6ca00c: 29 fa sub %edi,%edx 0.00 : 6ca00e: 69 d2 90 01 00 00 imul $0x190,%edx,%edx 0.00 : 6ca014: 39 d1 cmp %edx,%ecx 0.00 : 6ca016: 0f 94 c0 sete %al 0.00 : 6ca019: 0f b6 d0 movzbl %al,%edx 0.00 : 6ca01c: 48 63 d2 movslq %edx,%rdx 0.00 : 6ca01f: 41 8b 4c 24 10 mov 0x10(%r12),%ecx 0.00 : 6ca024: 48 8d 04 12 lea (%rdx,%rdx,1),%rax 0.00 : 6ca028: 48 01 d0 add %rdx,%rax 0.00 : 6ca02b: 83 e9 01 sub $0x1,%ecx 0.00 : 6ca02e: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 6ca032: 48 63 c9 movslq %ecx,%rcx 0.00 : 6ca035: 48 01 c8 add %rcx,%rax 16.67 : 6ca038: 44 3b 04 85 e0 a4 8b cmp 0x8ba4e0(,%rax,4),%r8d 0.00 : 6ca03f: 00 16.67 : 6ca040: 0f 8e e5 fe ff ff jle 6c9f2b 0.00 : 6ca046: e9 61 ff ff ff jmpq 6c9fac 0.00 : 6ca04b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* check for valid month */ : if (fmask & DTK_M(MONTH)) : { : if (tm->tm_mon < 1 || tm->tm_mon > MONTHS_PER_YEAR) 0.00 : 6ca050: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.00 : 6ca055: 83 e8 01 sub $0x1,%eax 0.00 : 6ca058: 83 f8 0b cmp $0xb,%eax 0.00 : 6ca05b: 0f 86 b5 fe ff ff jbe 6c9f16 : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) 0.00 : 6ca061: b8 fd ff ff ff mov $0xfffffffd,%eax 0.00 : 6ca066: e9 c2 fe ff ff jmpq 6c9f2d 0.00 : 6ca06b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* minimal check for valid day */ : if (fmask & DTK_M(DAY)) : { : if (tm->tm_mday < 1 || tm->tm_mday > 31) 0.00 : 6ca070: 41 8b 44 24 0c mov 0xc(%r12),%eax 0.00 : 6ca075: 83 e8 01 sub $0x1,%eax 0.00 : 6ca078: 83 f8 1e cmp $0x1e,%eax 0.00 : 6ca07b: 0f 86 9e fe ff ff jbe 6c9f1f 0.00 : 6ca081: eb de jmp 6ca061 : /* tm_year is correct and should not be touched */ : } : else if (bc) : { : /* there is no year zero in AD/BC notation */ : if (tm->tm_year <= 0) 0.00 : 6ca083: 41 8b 50 14 mov 0x14(%r8),%edx 0.00 : 6ca087: 85 d2 test %edx,%edx 0.00 : 6ca089: 0f 8e 1d ff ff ff jle 6c9fac : return DTERR_FIELD_OVERFLOW; : /* internally, we represent 1 BC as year zero, 2 BC as -1, etc */ : tm->tm_year = -(tm->tm_year - 1); 0.00 : 6ca08f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6ca094: 29 d0 sub %edx,%eax 0.00 : 6ca096: 41 89 40 14 mov %eax,0x14(%r8) 0.00 : 6ca09a: e9 68 fe ff ff jmpq 6c9f07 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1558 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1502 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1531 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cdb70 : : * experience teaches otherwise. This code is much faster than most versions : * of mktime(), anyway. : */ : int : DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp) : { 0.00 : 6cdb70: 55 push %rbp 0.00 : 6cdb71: 48 89 e5 mov %rsp,%rbp 0.00 : 6cdb74: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 6cdb78: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 6cdb7c: 48 89 fb mov %rdi,%rbx 0.00 : 6cdb7f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 6cdb83: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 6cdb87: 48 83 ec 60 sub $0x60,%rsp : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdb8b: 8b 7f 14 mov 0x14(%rdi),%edi : * experience teaches otherwise. This code is much faster than most versions : * of mktime(), anyway. : */ : int : DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp) : { 0.00 : 6cdb8e: 49 89 f4 mov %rsi,%r12 : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdb91: 81 ff 97 ed ff ff cmp $0xffffed97,%edi 0.00 : 6cdb97: 7f 27 jg 6cdbc0 0.00 : 6cdb99: 0f 84 71 01 00 00 je 6cdd10 : tm->tm_isdst = before_isdst; : return -(int) before_gmtoff; : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; 0.00 : 6cdb9f: c7 43 20 00 00 00 00 movl $0x0,0x20(%rbx) 0.00 : 6cdba6: 31 c0 xor %eax,%eax : return 0; : } 0.00 : 6cdba8: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 6cdbac: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 6cdbb0: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 6cdbb4: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 6cdbb8: c9 leaveq 0.00 : 6cdbb9: c3 retq 0.00 : 6cdbba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdbc0: 81 ff d1 a4 59 00 cmp $0x59a4d1,%edi 0.00 : 6cdbc6: 7f d7 jg 6cdb9f 0.00 : 6cdbc8: 8b 73 10 mov 0x10(%rbx),%esi 0.00 : 6cdbcb: 8b 53 0c mov 0xc(%rbx),%edx : goto overflow; : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - UNIX_EPOCH_JDATE; 0.00 : 6cdbce: e8 4d c1 ff ff callq 6c9d20 : : day = ((pg_time_t) date) * SECS_PER_DAY; 0.00 : 6cdbd3: 2d 8c 3d 25 00 sub $0x253d8c,%eax : if (day / SECS_PER_DAY != date) 0.00 : 6cdbd8: 48 ba 57 29 51 ce a0 movabs $0x1845c8a0ce512957,%rdx 0.00 : 6cdbdf: c8 45 18 : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) : goto overflow; : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - UNIX_EPOCH_JDATE; : : day = ((pg_time_t) date) * SECS_PER_DAY; 0.00 : 6cdbe2: 48 63 f8 movslq %eax,%rdi 0.00 : 6cdbe5: 48 69 f7 80 51 01 00 imul $0x15180,%rdi,%rsi : if (day / SECS_PER_DAY != date) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 16.67 : 6cdbec: 48 89 f0 mov %rsi,%rax 0.00 : 6cdbef: 48 89 f1 mov %rsi,%rcx 0.00 : 6cdbf2: 48 f7 ea imul %rdx 0.00 : 6cdbf5: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 6cdbf9: 48 c1 fa 0d sar $0xd,%rdx 0.00 : 6cdbfd: 48 29 ca sub %rcx,%rdx 16.67 : 6cdc00: 48 39 d7 cmp %rdx,%rdi 0.00 : 6cdc03: 75 9a jne 6cdb9f : goto overflow; : sec = tm->tm_sec + (tm->tm_min + tm->tm_hour * MINS_PER_HOUR) * SECS_PER_MINUTE; : mytime = day + sec; 0.00 : 6cdc05: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : 6cdc08: 41 bb 3c 00 00 00 mov $0x3c,%r11d 0.00 : 6cdc0e: 41 ba 3c 00 00 00 mov $0x3c,%r10d 0.00 : 6cdc14: 41 0f af c3 imul %r11d,%eax 0.00 : 6cdc18: 03 43 04 add 0x4(%rbx),%eax 0.00 : 6cdc1b: 41 0f af c2 imul %r10d,%eax 0.00 : 6cdc1f: 03 03 add (%rbx),%eax 0.00 : 6cdc21: 48 98 cltq 0.00 : 6cdc23: 4c 8d 2c 30 lea (%rax,%rsi,1),%r13 : /* since sec >= 0, overflow could only be from +day to -mytime */ : if (mytime < 0 && day > 0) 0.00 : 6cdc27: 4d 89 ee mov %r13,%r14 0.00 : 6cdc2a: 49 c1 ee 3f shr $0x3f,%r14 0.00 : 6cdc2e: 45 84 f6 test %r14b,%r14b 0.00 : 6cdc31: 74 0d je 6cdc40 0.00 : 6cdc33: 48 85 f6 test %rsi,%rsi 0.00 : 6cdc36: 0f 8f 63 ff ff ff jg 6cdb9f 0.00 : 6cdc3c: 0f 1f 40 00 nopl 0x0(%rax) : * Find the DST time boundary just before or following the target time. We : * assume that all zones have GMT offsets less than 24 hours, and that DST : * boundaries can't be closer together than 48 hours, so backing up 24 : * hours and finding the "next" boundary will work. : */ : prevtime = mytime - SECS_PER_DAY; 0.00 : 6cdc40: 49 8d 85 80 ae fe ff lea -0x15180(%r13),%rax : if (mytime < 0 && prevtime > 0) 0.00 : 6cdc47: 45 84 f6 test %r14b,%r14b : * Find the DST time boundary just before or following the target time. We : * assume that all zones have GMT offsets less than 24 hours, and that DST : * boundaries can't be closer together than 48 hours, so backing up 24 : * hours and finding the "next" boundary will work. : */ : prevtime = mytime - SECS_PER_DAY; 0.00 : 6cdc4a: 48 89 45 d0 mov %rax,-0x30(%rbp) : if (mytime < 0 && prevtime > 0) 0.00 : 6cdc4e: 0f 85 e4 00 00 00 jne 6cdd38 : goto overflow; : : res = pg_next_dst_boundary(&prevtime, 0.00 : 6cdc54: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cdc58: 48 8d 55 dc lea -0x24(%rbp),%rdx 0.00 : 6cdc5c: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 6cdc60: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 6cdc64: 4c 8d 4d d8 lea -0x28(%rbp),%r9 0.00 : 6cdc68: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : 6cdc6c: 4c 89 24 24 mov %r12,(%rsp) 0.00 : 6cdc70: e8 ab a9 0d 00 callq 7a8620 : &before_gmtoff, &before_isdst, : &boundary, : &after_gmtoff, &after_isdst, : tzp); : if (res < 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1502 16.67 : 6cdc75: 83 f8 00 cmp $0x0,%eax 0.00 : 6cdc78: 0f 8c 21 ff ff ff jl 6cdb9f : goto overflow; /* failure? */ : : if (res == 0) 0.00 : 6cdc7e: 0f 84 c9 00 00 00 je 6cdd4d : } : : /* : * Form the candidate pg_time_t values with local-time adjustment : */ : beforetime = mytime - before_gmtoff; 0.00 : 6cdc84: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 6cdc88: 4c 89 ef mov %r13,%rdi 0.00 : 6cdc8b: 48 29 f7 sub %rsi,%rdi : if ((before_gmtoff > 0 && 0.00 : 6cdc8e: 45 84 f6 test %r14b,%r14b 0.00 : 6cdc91: 74 0e je 6cdca1 0.00 : 6cdc93: 48 85 f6 test %rsi,%rsi 0.00 : 6cdc96: 7e 09 jle 6cdca1 0.00 : 6cdc98: 48 85 ff test %rdi,%rdi 0.00 : 6cdc9b: 0f 8f fe fe ff ff jg 6cdb9f 0.00 : 6cdca1: 4d 85 ed test %r13,%r13 0.00 : 6cdca4: 0f 9f c2 setg %dl 0.00 : 6cdca7: 48 85 f6 test %rsi,%rsi 0.00 : 6cdcaa: 0f 8e bc 00 00 00 jle 6cdd6c : mytime < 0 && beforetime > 0) || : (before_gmtoff <= 0 && : mytime > 0 && beforetime < 0)) : goto overflow; : aftertime = mytime - after_gmtoff; 0.00 : 6cdcb0: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 6cdcb4: 4c 89 e8 mov %r13,%rax 0.00 : 6cdcb7: 48 29 c8 sub %rcx,%rax : if ((after_gmtoff > 0 && 0.00 : 6cdcba: 45 84 f6 test %r14b,%r14b 0.00 : 6cdcbd: 74 0e je 6cdccd 0.00 : 6cdcbf: 48 85 c9 test %rcx,%rcx 0.00 : 6cdcc2: 7e 09 jle 6cdccd 0.00 : 6cdcc4: 48 85 c0 test %rax,%rax 0.00 : 6cdcc7: 0f 8f d2 fe ff ff jg 6cdb9f 0.00 : 6cdccd: 84 d2 test %dl,%dl 0.00 : 6cdccf: 90 nop 0.00 : 6cdcd0: 74 09 je 6cdcdb 0.00 : 6cdcd2: 48 85 c9 test %rcx,%rcx 0.00 : 6cdcd5: 0f 8e 83 00 00 00 jle 6cdd5e : goto overflow; : : /* : * If both before or both after the boundary time, we know what to do : */ : if (beforetime <= boundary && aftertime < boundary) 0.00 : 6cdcdb: 48 8b 55 c8 mov -0x38(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1531 16.67 : 6cdcdf: 48 39 d7 cmp %rdx,%rdi 0.00 : 6cdce2: 0f 8e a5 00 00 00 jle 6cdd8d : { : tm->tm_isdst = before_isdst; : return -(int) before_gmtoff; : } : if (beforetime > boundary && aftertime >= boundary) 0.00 : 6cdce8: 48 39 d0 cmp %rdx,%rax 0.00 : 6cdceb: 0f 8d b4 00 00 00 jge 6cdda5 : : /* : * It's an invalid or ambiguous time due to timezone transition. Prefer : * the standard-time interpretation. : */ : if (after_isdst == 0) 0.00 : 6cdcf1: 44 8b 4d d8 mov -0x28(%rbp),%r9d 0.00 : 6cdcf5: 45 85 c9 test %r9d,%r9d 0.00 : 6cdcf8: 0f 85 98 00 00 00 jne 6cdd96 : { : tm->tm_isdst = after_isdst; : return -(int) after_gmtoff; 0.00 : 6cdcfe: 89 c8 mov %ecx,%eax : * It's an invalid or ambiguous time due to timezone transition. Prefer : * the standard-time interpretation. : */ : if (after_isdst == 0) : { : tm->tm_isdst = after_isdst; 0.00 : 6cdd00: c7 43 20 00 00 00 00 movl $0x0,0x20(%rbx) : return -(int) after_gmtoff; 0.00 : 6cdd07: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } 0.00 : 6cdd09: e9 9a fe ff ff jmpq 6cdba8 0.00 : 6cdd0e: 66 90 xchg %ax,%ax : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdd10: 8b 73 10 mov 0x10(%rbx),%esi 0.00 : 6cdd13: 83 fe 0b cmp $0xb,%esi 0.00 : 6cdd16: 0f 8f af fe ff ff jg 6cdbcb 0.00 : 6cdd1c: 0f 85 7d fe ff ff jne 6cdb9f 0.00 : 6cdd22: 8b 53 0c mov 0xc(%rbx),%edx 0.00 : 6cdd25: 83 fa 17 cmp $0x17,%edx 0.00 : 6cdd28: 0f 8e 71 fe ff ff jle 6cdb9f 0.00 : 6cdd2e: 66 90 xchg %ax,%ax 0.00 : 6cdd30: e9 99 fe ff ff jmpq 6cdbce 0.00 : 6cdd35: 0f 1f 00 nopl (%rax) : * assume that all zones have GMT offsets less than 24 hours, and that DST : * boundaries can't be closer together than 48 hours, so backing up 24 : * hours and finding the "next" boundary will work. : */ : prevtime = mytime - SECS_PER_DAY; : if (mytime < 0 && prevtime > 0) 0.00 : 6cdd38: 48 85 c0 test %rax,%rax 0.00 : 6cdd3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cdd40: 0f 8f 59 fe ff ff jg 6cdb9f 0.00 : 6cdd46: 66 90 xchg %ax,%ax 0.00 : 6cdd48: e9 07 ff ff ff jmpq 6cdc54 : goto overflow; /* failure? */ : : if (res == 0) : { : /* Non-DST zone, life is simple */ : tm->tm_isdst = before_isdst; 0.00 : 6cdd4d: 8b 45 dc mov -0x24(%rbp),%eax 0.00 : 6cdd50: 89 43 20 mov %eax,0x20(%rbx) : return -(int) before_gmtoff; 0.00 : 6cdd53: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 6cdd57: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } 0.00 : 6cdd59: e9 4a fe ff ff jmpq 6cdba8 : mytime < 0 && beforetime > 0) || : (before_gmtoff <= 0 && : mytime > 0 && beforetime < 0)) : goto overflow; : aftertime = mytime - after_gmtoff; : if ((after_gmtoff > 0 && 0.00 : 6cdd5e: 48 85 c0 test %rax,%rax 0.00 : 6cdd61: 0f 89 74 ff ff ff jns 6cdcdb 0.00 : 6cdd67: e9 33 fe ff ff jmpq 6cdb9f : : /* : * Form the candidate pg_time_t values with local-time adjustment : */ : beforetime = mytime - before_gmtoff; : if ((before_gmtoff > 0 && 0.00 : 6cdd6c: 84 d2 test %dl,%dl 0.00 : 6cdd6e: 66 90 xchg %ax,%ax 0.00 : 6cdd70: 0f 84 3a ff ff ff je 6cdcb0 0.00 : 6cdd76: 48 85 ff test %rdi,%rdi 0.00 : 6cdd79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6cdd80: 0f 89 2a ff ff ff jns 6cdcb0 0.00 : 6cdd86: 66 90 xchg %ax,%ax 0.00 : 6cdd88: e9 12 fe ff ff jmpq 6cdb9f : goto overflow; : : /* : * If both before or both after the boundary time, we know what to do : */ : if (beforetime <= boundary && aftertime < boundary) 0.00 : 6cdd8d: 48 39 d0 cmp %rdx,%rax 0.00 : 6cdd90: 0f 8d 5b ff ff ff jge 6cdcf1 : if (after_isdst == 0) : { : tm->tm_isdst = after_isdst; : return -(int) after_gmtoff; : } : tm->tm_isdst = before_isdst; 0.00 : 6cdd96: 8b 45 dc mov -0x24(%rbp),%eax 0.00 : 6cdd99: 89 43 20 mov %eax,0x20(%rbx) : return -(int) before_gmtoff; 0.00 : 6cdd9c: 89 f0 mov %esi,%eax 0.00 : 6cdd9e: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1558 33.33 : 6cdda0: e9 03 fe ff ff jmpq 6cdba8 : tm->tm_isdst = before_isdst; : return -(int) before_gmtoff; : } : if (beforetime > boundary && aftertime >= boundary) : { : tm->tm_isdst = after_isdst; 0.00 : 6cdda5: 8b 45 d8 mov -0x28(%rbp),%eax 0.00 : 6cdda8: 89 43 20 mov %eax,0x20(%rbx) : return -(int) after_gmtoff; 0.00 : 6cddab: 89 c8 mov %ecx,%eax 0.00 : 6cddad: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } 0.00 : 6cddaf: e9 f4 fd ff ff jmpq 6cdba8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:590 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:604 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:606 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:627 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cf730 : : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 11.11 : 6cf730: 55 push %rbp : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; 0.00 : 6cf731: 48 8d 14 16 lea (%rsi,%rdx,1),%rdx : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { 0.00 : 6cf735: 48 89 e5 mov %rsp,%rbp 0.00 : 6cf738: 41 57 push %r15 : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; 0.00 : 6cf73a: 49 89 f7 mov %rsi,%r15 : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { 0.00 : 6cf73d: 41 56 push %r14 0.00 : 6cf73f: 41 55 push %r13 0.00 : 6cf741: 41 54 push %r12 : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 11.11 : 6cf743: 49 89 fc mov %rdi,%r12 : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { 0.00 : 6cf746: 53 push %rbx 0.00 : 6cf747: 48 83 ec 48 sub $0x48,%rsp 0.00 : 6cf74b: 48 89 4d b8 mov %rcx,-0x48(%rbp) 0.00 : 6cf74f: 4c 89 45 b0 mov %r8,-0x50(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 11.11 : 6cf753: 44 89 4d ac mov %r9d,-0x54(%rbp) : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; 0.00 : 6cf757: 48 89 55 c8 mov %rdx,-0x38(%rbp) 0.00 : 6cf75b: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : return DTERR_BAD_FORMAT; \ : *(bufptr)++ = newchar; \ : } while (0) : : /* outer loop through fields */ : while (*cp != '\0') 0.00 : 6cf762: eb 08 jmp 6cf76c 0.00 : 6cf764: 0f 1f 40 00 nopl 0x0(%rax) : return DTERR_BAD_FORMAT; : } : /* ignore other punctuation but use as delimiter */ : else if (ispunct((unsigned char) *cp)) : { : cp++; 0.00 : 6cf768: 49 83 c4 01 add $0x1,%r12 : return DTERR_BAD_FORMAT; \ : *(bufptr)++ = newchar; \ : } while (0) : : /* outer loop through fields */ : while (*cp != '\0') 0.00 : 6cf76c: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 6cf771: 84 db test %bl,%bl 0.00 : 6cf773: 0f 84 3f 01 00 00 je 6cf8b8 : { : /* Ignore spaces between fields */ : if (isspace((unsigned char) *cp)) 0.00 : 6cf779: e8 42 a1 d9 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 6cf77e: 49 89 c5 mov %rax,%r13 0.00 : 6cf781: 48 8b 00 mov (%rax),%rax 0.00 : 6cf784: 0f b6 d3 movzbl %bl,%edx 0.00 : 6cf787: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:590 11.11 : 6cf78c: 75 da jne 6cf768 : cp++; : continue; : } : : /* Record start of current field */ : if (nf >= maxfields) 0.00 : 6cf78e: 8b 45 ac mov -0x54(%rbp),%eax 0.00 : 6cf791: 39 45 c4 cmp %eax,-0x3c(%rbp) 0.00 : 6cf794: 7d 4c jge 6cf7e2 : return DTERR_BAD_FORMAT; : field[nf] = bufp; 0.00 : 6cf796: 4c 63 4d c4 movslq -0x3c(%rbp),%r9 0.00 : 6cf79a: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 6cf79e: 4e 8d 04 ca lea (%rdx,%r9,8),%r8 0.00 : 6cf7a2: 4d 89 38 mov %r15,(%r8) : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) 0.00 : 6cf7a5: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cf7aa: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cf7ae: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cf7b1: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6cf7b5: f6 c4 08 test $0x8,%ah 0.00 : 6cf7b8: 0f 85 14 01 00 00 jne 6cf8d2 : */ : else : ftype[nf] = DTK_NUMBER; : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') 0.00 : 6cf7be: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cf7c1: 0f 84 61 02 00 00 je 6cfa28 : } : : /* : * text? then date string, month, day of week, special, or timezone : */ : else if (isalpha((unsigned char) *cp)) 0.00 : 6cf7c7: f6 c4 04 test $0x4,%ah 0.00 : 6cf7ca: 0f 85 de 02 00 00 jne 6cfaae : *cp == '.' || *cp == ':' || : isalnum((unsigned char) *cp)); : } : } : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') 0.00 : 6cf7d0: 80 f9 2b cmp $0x2b,%cl 0.00 : 6cf7d3: 74 2b je 6cf800 0.00 : 6cf7d5: 80 f9 2d cmp $0x2d,%cl 0.00 : 6cf7d8: 74 26 je 6cf800 : /* otherwise something wrong... */ : else : return DTERR_BAD_FORMAT; : } : /* ignore other punctuation but use as delimiter */ : else if (ispunct((unsigned char) *cp)) 0.00 : 6cf7da: a8 04 test $0x4,%al 0.00 : 6cf7dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cf7e0: 75 86 jne 6cf768 : /* force in a delimiter after each field */ : *bufp++ = '\0'; : nf++; : } : : *numfields = nf; 0.00 : 6cf7e2: b8 ff ff ff ff mov $0xffffffff,%eax : : return 0; : } 0.00 : 6cf7e7: 48 83 c4 48 add $0x48,%rsp 0.00 : 6cf7eb: 5b pop %rbx 0.00 : 6cf7ec: 41 5c pop %r12 0.00 : 6cf7ee: 41 5d pop %r13 0.00 : 6cf7f0: 41 5e pop %r14 0.00 : 6cf7f2: 41 5f pop %r15 0.00 : 6cf7f4: c9 leaveq 0.00 : 6cf7f5: c3 retq 0.00 : 6cf7f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6cf7fd: 00 00 00 : } : } : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') : { : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf800: 4d 8d 47 01 lea 0x1(%r15),%r8 0.00 : 6cf804: 4c 39 45 c8 cmp %r8,-0x38(%rbp) 0.00 : 6cf808: 76 d8 jbe 6cf7e2 0.00 : 6cf80a: 41 88 0f mov %cl,(%r15) : /* soak up leading whitespace */ : while (isspace((unsigned char) *cp)) 0.00 : 6cf80d: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax : } : } : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') : { : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf813: 49 8d 5c 24 01 lea 0x1(%r12),%rbx : /* soak up leading whitespace */ : while (isspace((unsigned char) *cp)) 0.00 : 6cf818: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 6cf81c: 0f b7 04 42 movzwl (%rdx,%rax,2),%eax 0.00 : 6cf820: f6 c4 20 test $0x20,%ah 0.00 : 6cf823: 74 13 je 6cf838 0.00 : 6cf825: 0f 1f 00 nopl (%rax) : cp++; 0.00 : 6cf828: 48 83 c3 01 add $0x1,%rbx : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') : { : APPEND_CHAR(bufp, bufend, *cp++); : /* soak up leading whitespace */ : while (isspace((unsigned char) *cp)) 0.00 : 6cf82c: 0f b6 03 movzbl (%rbx),%eax 0.00 : 6cf82f: 0f b7 04 42 movzwl (%rdx,%rax,2),%eax 0.00 : 6cf833: f6 c4 20 test $0x20,%ah 0.00 : 6cf836: 75 f0 jne 6cf828 : cp++; : /* numeric timezone? */ : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) 0.00 : 6cf838: f6 c4 08 test $0x8,%ah 0.00 : 6cf83b: 0f 84 48 01 00 00 je 6cf989 : { : ftype[nf] = DTK_TZ; 0.00 : 6cf841: 48 8b 55 b0 mov -0x50(%rbp),%rdx : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf845: 49 8d 40 01 lea 0x1(%r8),%rax : cp++; : /* numeric timezone? */ : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = DTK_TZ; 0.00 : 6cf849: 42 c7 04 8a 04 00 00 movl $0x4,(%rdx,%r9,4) 0.00 : 6cf850: 00 : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf851: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf855: 76 8b jbe 6cf7e2 0.00 : 6cf857: 0f b6 03 movzbl (%rbx),%eax 0.00 : 6cf85a: 4c 8d 63 01 lea 0x1(%rbx),%r12 0.00 : 6cf85e: 49 8d 77 02 lea 0x2(%r15),%rsi 0.00 : 6cf862: 41 88 00 mov %al,(%r8) : while (isdigit((unsigned char) *cp) || 0.00 : 6cf865: eb 10 jmp 6cf877 0.00 : 6cf867: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cf86e: 00 00 : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf870: 88 4e ff mov %cl,-0x1(%rsi) 0.00 : 6cf873: 49 83 c4 01 add $0x1,%r12 : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = DTK_TZ; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cf877: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cf87c: 49 8b 45 00 mov 0x0(%r13),%rax : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf880: 49 89 f6 mov %rsi,%r14 : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = DTK_TZ; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cf883: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cf886: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cf88b: 75 13 jne 6cf8a0 0.00 : 6cf88d: 80 f9 3a cmp $0x3a,%cl 0.00 : 6cf890: 74 0e je 6cf8a0 0.00 : 6cf892: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cf895: 74 09 je 6cf8a0 0.00 : 6cf897: 80 f9 2d cmp $0x2d,%cl 0.00 : 6cf89a: 0f 85 d8 00 00 00 jne 6cf978 0.00 : 6cf8a0: 48 83 c6 01 add $0x1,%rsi : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf8a4: 48 39 75 c8 cmp %rsi,-0x38(%rbp) 0.00 : 6cf8a8: 77 c6 ja 6cf870 : /* force in a delimiter after each field */ : *bufp++ = '\0'; : nf++; : } : : *numfields = nf; 0.00 : 6cf8aa: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 6cf8af: 90 nop 0.00 : 6cf8b0: e9 32 ff ff ff jmpq 6cf7e7 0.00 : 6cf8b5: 0f 1f 00 nopl (%rax) 0.00 : 6cf8b8: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf8bb: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf8bf: 89 02 mov %eax,(%rdx) : : return 0; : } 0.00 : 6cf8c1: 48 83 c4 48 add $0x48,%rsp : /* force in a delimiter after each field */ : *bufp++ = '\0'; : nf++; : } : : *numfields = nf; 0.00 : 6cf8c5: 31 c0 xor %eax,%eax : : return 0; : } 0.00 : 6cf8c7: 5b pop %rbx 0.00 : 6cf8c8: 41 5c pop %r12 0.00 : 6cf8ca: 41 5d pop %r13 0.00 : 6cf8cc: 41 5e pop %r14 0.00 : 6cf8ce: 41 5f pop %r15 0.00 : 6cf8d0: c9 leaveq 0.00 : 6cf8d1: c3 retq : field[nf] = bufp; : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf8d2: 49 8d 47 01 lea 0x1(%r15),%rax 0.00 : 6cf8d6: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf8da: 0f 86 02 ff ff ff jbe 6cf7e2 0.00 : 6cf8e0: 49 83 c4 01 add $0x1,%r12 0.00 : 6cf8e4: 41 88 0f mov %cl,(%r15) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:604 11.11 : 6cf8e7: 49 89 c6 mov %rax,%r14 : while (isdigit((unsigned char) *cp)) 0.00 : 6cf8ea: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 6cf8ef: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cf8f3: 0f b6 d3 movzbl %bl,%edx 0.00 : 6cf8f6: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cf8fb: 74 3e je 6cf93b : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf8fd: 49 8d 47 02 lea 0x2(%r15),%rax 0.00 : 6cf901: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf905: 0f 86 d7 fe ff ff jbe 6cf7e2 0.00 : 6cf90b: 48 89 c1 mov %rax,%rcx 0.00 : 6cf90e: eb 0e jmp 6cf91e 0.00 : 6cf910: 48 83 c1 01 add $0x1,%rcx 0.00 : 6cf914: 48 39 4d c8 cmp %rcx,-0x38(%rbp) 0.00 : 6cf918: 0f 86 c4 fe ff ff jbe 6cf7e2 0.00 : 6cf91e: 49 83 c4 01 add $0x1,%r12 0.00 : 6cf922: 88 59 ff mov %bl,-0x1(%rcx) : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cf925: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cf929: 41 0f b6 1c 24 movzbl (%r12),%ebx : APPEND_CHAR(bufp, bufend, *cp++); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:606 11.11 : 6cf92e: 49 89 ce mov %rcx,%r14 : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cf931: 0f b6 d3 movzbl %bl,%edx 0.00 : 6cf934: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cf939: 75 d5 jne 6cf910 : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') 0.00 : 6cf93b: 80 fb 3a cmp $0x3a,%bl : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cf93e: 4c 89 f1 mov %r14,%rcx : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') 0.00 : 6cf941: 0f 84 0d 04 00 00 je 6cfd54 : while (isdigit((unsigned char) *cp) || : (*cp == ':') || (*cp == '.')) : APPEND_CHAR(bufp, bufend, *cp++); : } : /* date field? allow embedded text month */ : else if (*cp == '-' || *cp == '/' || *cp == '.') 0.00 : 6cf947: 80 fb 2d cmp $0x2d,%bl 0.00 : 6cf94a: 0f 84 b8 02 00 00 je 6cfc08 0.00 : 6cf950: 80 fb 2f cmp $0x2f,%bl 0.00 : 6cf953: 0f 84 af 02 00 00 je 6cfc08 0.00 : 6cf959: 80 fb 2e cmp $0x2e,%bl 0.00 : 6cf95c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cf960: 0f 84 a2 02 00 00 je 6cfc08 : /* : * otherwise, number only and will determine year, month, day, or : * concatenated fields later... : */ : else : ftype[nf] = DTK_NUMBER; 0.00 : 6cf966: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 6cf96a: 42 c7 04 8a 00 00 00 movl $0x0,(%rdx,%r9,4) 0.00 : 6cf971: 00 0.00 : 6cf972: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* otherwise, something is not right... */ : else : return DTERR_BAD_FORMAT; : : /* force in a delimiter after each field */ : *bufp++ = '\0'; 0.00 : 6cf978: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 6cf97c: 4d 8d 7e 01 lea 0x1(%r14),%r15 : nf++; 0.00 : 6cf980: 83 45 c4 01 addl $0x1,-0x3c(%rbp) 0.00 : 6cf984: e9 e3 fd ff ff jmpq 6cf76c : while (isdigit((unsigned char) *cp) || : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); : } : /* special? */ : else if (isalpha((unsigned char) *cp)) 0.00 : 6cf989: f6 c4 04 test $0x4,%ah 0.00 : 6cf98c: 0f 84 50 fe ff ff je 6cf7e2 : { : ftype[nf] = DTK_SPECIAL; 0.00 : 6cf992: 48 8b 45 b0 mov -0x50(%rbp),%rax : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cf996: 4d 8d 70 01 lea 0x1(%r8),%r14 : APPEND_CHAR(bufp, bufend, *cp++); : } : /* special? */ : else if (isalpha((unsigned char) *cp)) : { : ftype[nf] = DTK_SPECIAL; 0.00 : 6cf99a: 42 c7 04 88 06 00 00 movl $0x6,(%rax,%r9,4) 0.00 : 6cf9a1: 00 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cf9a2: 4c 39 75 c8 cmp %r14,-0x38(%rbp) 0.00 : 6cf9a6: 0f 86 36 fe ff ff jbe 6cf7e2 0.00 : 6cf9ac: 0f b6 3b movzbl (%rbx),%edi 0.00 : 6cf9af: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 6cf9b3: 4c 8d 63 01 lea 0x1(%rbx),%r12 0.00 : 6cf9b7: e8 24 ce 0d 00 callq 7ac7e0 0.00 : 6cf9bc: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 6cf9c0: 41 88 00 mov %al,(%r8) : while (isalpha((unsigned char) *cp)) 0.00 : 6cf9c3: 0f b6 4b 01 movzbl 0x1(%rbx),%ecx 0.00 : 6cf9c7: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cf9cb: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cf9ce: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 6cf9d3: 74 a3 je 6cf978 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cf9d5: 49 8d 40 02 lea 0x2(%r8),%rax 0.00 : 6cf9d9: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf9dd: 0f 86 ff fd ff ff jbe 6cf7e2 0.00 : 6cf9e3: 49 8d 5f 03 lea 0x3(%r15),%rbx 0.00 : 6cf9e7: eb 15 jmp 6cf9fe 0.00 : 6cf9e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6cf9f0: 48 83 c3 01 add $0x1,%rbx 0.00 : 6cf9f4: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cf9f8: 0f 86 e4 fd ff ff jbe 6cf7e2 0.00 : 6cf9fe: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfa02: 0f b6 f9 movzbl %cl,%edi 0.00 : 6cfa05: 49 89 de mov %rbx,%r14 0.00 : 6cfa08: e8 d3 cd 0d 00 callq 7ac7e0 0.00 : 6cfa0d: 88 43 ff mov %al,-0x1(%rbx) : /* special? */ : else if (isalpha((unsigned char) *cp)) : { : ftype[nf] = DTK_SPECIAL; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfa10: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cfa15: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfa19: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfa1c: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 6cfa21: 75 cd jne 6cf9f0 0.00 : 6cfa23: e9 50 ff ff ff jmpq 6cf978 : ftype[nf] = DTK_NUMBER; : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') : { : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfa28: 49 8d 47 01 lea 0x1(%r15),%rax 0.00 : 6cfa2c: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfa30: 0f 86 ac fd ff ff jbe 6cf7e2 0.00 : 6cfa36: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfa3a: 41 c6 07 2e movb $0x2e,(%r15) 0.00 : 6cfa3e: 49 89 c6 mov %rax,%r14 : while (isdigit((unsigned char) *cp)) 0.00 : 6cfa41: 41 0f b6 3c 24 movzbl (%r12),%edi 0.00 : 6cfa46: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfa4a: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 6cfa4e: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfa53: 74 48 je 6cfa9d : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfa55: 49 8d 47 02 lea 0x2(%r15),%rax 0.00 : 6cfa59: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfa5d: 0f 86 7f fd ff ff jbe 6cf7e2 0.00 : 6cfa63: 48 89 c1 mov %rax,%rcx 0.00 : 6cfa66: eb 16 jmp 6cfa7e 0.00 : 6cfa68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cfa6f: 00 0.00 : 6cfa70: 48 83 c1 01 add $0x1,%rcx 0.00 : 6cfa74: 48 39 4d c8 cmp %rcx,-0x38(%rbp) 0.00 : 6cfa78: 0f 86 64 fd ff ff jbe 6cf7e2 0.00 : 6cfa7e: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfa82: 40 88 79 ff mov %dil,-0x1(%rcx) : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cfa86: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfa8a: 41 0f b6 3c 24 movzbl (%r12),%edi : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfa8f: 49 89 ce mov %rcx,%r14 : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cfa92: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 6cfa96: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfa9b: 75 d3 jne 6cfa70 : APPEND_CHAR(bufp, bufend, *cp++); : : ftype[nf] = DTK_NUMBER; 0.00 : 6cfa9d: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 6cfaa1: 42 c7 04 88 00 00 00 movl $0x0,(%rax,%r9,4) 0.00 : 6cfaa8: 00 0.00 : 6cfaa9: e9 ca fe ff ff jmpq 6cf978 : */ : else if (isalpha((unsigned char) *cp)) : { : bool is_date; : : ftype[nf] = DTK_STRING; 0.00 : 6cfaae: 48 8b 55 b0 mov -0x50(%rbp),%rdx : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfab2: 49 8d 5f 01 lea 0x1(%r15),%rbx : */ : else if (isalpha((unsigned char) *cp)) : { : bool is_date; : : ftype[nf] = DTK_STRING; 0.00 : 6cfab6: 4e 8d 0c 8a lea (%rdx,%r9,4),%r9 0.00 : 6cfaba: 4c 89 4d d0 mov %r9,-0x30(%rbp) 0.00 : 6cfabe: 41 c7 01 01 00 00 00 movl $0x1,(%r9) : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfac5: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cfac9: 0f 86 13 fd ff ff jbe 6cf7e2 0.00 : 6cfacf: 41 0f b6 3c 24 movzbl (%r12),%edi 0.00 : 6cfad4: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfad8: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 6cfadc: e8 ff cc 0d 00 callq 7ac7e0 0.00 : 6cfae1: 41 88 07 mov %al,(%r15) : while (isalpha((unsigned char) *cp)) 0.00 : 6cfae4: 41 0f b6 0c 24 movzbl (%r12),%ecx : else if (isalpha((unsigned char) *cp)) : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfae9: 49 89 d9 mov %rbx,%r9 : while (isalpha((unsigned char) *cp)) 0.00 : 6cfaec: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfaf0: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 6cfaf4: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfaf7: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6cfafb: f6 c4 04 test $0x4,%ah 0.00 : 6cfafe: 74 55 je 6cfb55 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfb00: 49 8d 47 02 lea 0x2(%r15),%rax 0.00 : 6cfb04: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfb08: 0f 86 d4 fc ff ff jbe 6cf7e2 0.00 : 6cfb0e: 48 89 c3 mov %rax,%rbx 0.00 : 6cfb11: eb 13 jmp 6cfb26 0.00 : 6cfb13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cfb18: 48 83 c3 01 add $0x1,%rbx 0.00 : 6cfb1c: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cfb20: 0f 86 bc fc ff ff jbe 6cf7e2 0.00 : 6cfb26: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfb2a: 0f b6 f9 movzbl %cl,%edi 0.00 : 6cfb2d: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 6cfb31: e8 aa cc 0d 00 callq 7ac7e0 0.00 : 6cfb36: 88 43 ff mov %al,-0x1(%rbx) : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfb39: 41 0f b6 0c 24 movzbl (%r12),%ecx : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfb3e: 49 89 d9 mov %rbx,%r9 : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfb41: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfb45: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 6cfb49: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfb4c: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6cfb50: f6 c4 04 test $0x4,%ah 0.00 : 6cfb53: 75 c3 jne 6cfb18 : * next character is a digit or '+', we need to check whether what : * we have so far is a recognized non-timezone keyword --- if so, : * don't believe that this is the start of a timezone. : */ : is_date = false; : if (*cp == '-' || *cp == '/' || *cp == '.') 0.00 : 6cfb55: 80 f9 2d cmp $0x2d,%cl : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfb58: 4d 89 ce mov %r9,%r14 : * next character is a digit or '+', we need to check whether what : * we have so far is a recognized non-timezone keyword --- if so, : * don't believe that this is the start of a timezone. : */ : is_date = false; : if (*cp == '-' || *cp == '/' || *cp == '.') 0.00 : 6cfb5b: 74 40 je 6cfb9d 0.00 : 6cfb5d: 80 f9 2f cmp $0x2f,%cl 0.00 : 6cfb60: 74 3b je 6cfb9d 0.00 : 6cfb62: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cfb65: 74 36 je 6cfb9d : is_date = true; : else if (*cp == '+' || isdigit((unsigned char) *cp)) 0.00 : 6cfb67: 80 f9 2b cmp $0x2b,%cl 0.00 : 6cfb6a: 74 0a je 6cfb76 0.00 : 6cfb6c: f6 c4 08 test $0x8,%ah 0.00 : 6cfb6f: 90 nop 0.00 : 6cfb70: 0f 84 02 fe ff ff je 6cf978 : { : *bufp = '\0'; /* null-terminate current field value */ 0.00 : 6cfb76: 41 c6 01 00 movb $0x0,(%r9) : /* we need search only the core token table, not TZ names */ : if (datebsearch(field[nf], datetktbl, szdatetktbl) == NULL) 0.00 : 6cfb7a: 49 8b 38 mov (%r8),%rdi 0.00 : 6cfb7d: ba 4a 00 00 00 mov $0x4a,%edx 0.00 : 6cfb82: 4c 89 4d 98 mov %r9,-0x68(%rbp) 0.00 : 6cfb86: be 20 a6 8b 00 mov $0x8ba620,%esi 0.00 : 6cfb8b: e8 40 ac ff ff callq 6ca7d0 0.00 : 6cfb90: 48 85 c0 test %rax,%rax 0.00 : 6cfb93: 4c 8b 4d 98 mov -0x68(%rbp),%r9 0.00 : 6cfb97: 0f 85 db fd ff ff jne 6cf978 : is_date = true; : } : if (is_date) : { : ftype[nf] = DTK_DATE; 0.00 : 6cfb9d: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 6cfba1: 49 8d 59 01 lea 0x1(%r9),%rbx 0.00 : 6cfba5: c7 00 02 00 00 00 movl $0x2,(%rax) 0.00 : 6cfbab: eb 4a jmp 6cfbf7 : do : { : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfbad: 41 0f b6 3c 24 movzbl (%r12),%edi 0.00 : 6cfbb2: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfbb6: 49 89 de mov %rbx,%r14 0.00 : 6cfbb9: e8 22 cc 0d 00 callq 7ac7e0 0.00 : 6cfbbe: 88 43 ff mov %al,-0x1(%rbx) : } while (*cp == '+' || *cp == '-' || : *cp == '/' || *cp == '_' || : *cp == '.' || *cp == ':' || : isalnum((unsigned char) *cp)); 0.00 : 6cfbc1: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 6cfbc6: 3c 2b cmp $0x2b,%al 0.00 : 6cfbc8: 74 29 je 6cfbf3 0.00 : 6cfbca: 3c 2d cmp $0x2d,%al 0.00 : 6cfbcc: 74 25 je 6cfbf3 0.00 : 6cfbce: 3c 2f cmp $0x2f,%al 0.00 : 6cfbd0: 74 21 je 6cfbf3 0.00 : 6cfbd2: 3c 5f cmp $0x5f,%al 0.00 : 6cfbd4: 74 1d je 6cfbf3 0.00 : 6cfbd6: 3c 2e cmp $0x2e,%al 0.00 : 6cfbd8: 74 19 je 6cfbf3 0.00 : 6cfbda: 3c 3a cmp $0x3a,%al 0.00 : 6cfbdc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cfbe0: 74 11 je 6cfbf3 0.00 : 6cfbe2: 0f b6 d0 movzbl %al,%edx 0.00 : 6cfbe5: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfbe9: f6 04 50 08 testb $0x8,(%rax,%rdx,2) 0.00 : 6cfbed: 0f 84 85 fd ff ff je 6cf978 : if (datebsearch(field[nf], datetktbl, szdatetktbl) == NULL) : is_date = true; : } : if (is_date) : { : ftype[nf] = DTK_DATE; 0.00 : 6cfbf3: 48 83 c3 01 add $0x1,%rbx : do : { : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfbf7: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cfbfb: 77 b0 ja 6cfbad 0.00 : 6cfbfd: e9 e0 fb ff ff jmpq 6cf7e2 0.00 : 6cfc02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (*cp == '-' || *cp == '/' || *cp == '.') : { : /* save delimiting character to use later */ : char delim = *cp; : : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfc08: 49 8d 46 01 lea 0x1(%r14),%rax 0.00 : 6cfc0c: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfc10: 0f 86 cc fb ff ff jbe 6cf7e2 0.00 : 6cfc16: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfc1a: 41 88 1e mov %bl,(%r14) 0.00 : 6cfc1d: 49 89 c6 mov %rax,%r14 : /* second field is all digits? then no embedded text month */ : if (isdigit((unsigned char) *cp)) 0.00 : 6cfc20: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 6cfc25: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfc29: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfc2e: 0f 84 cc 00 00 00 je 6cfd00 : { : ftype[nf] = ((delim == '.') ? DTK_NUMBER : DTK_DATE); 0.00 : 6cfc34: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 6cfc38: 31 c0 xor %eax,%eax 0.00 : 6cfc3a: 80 fb 2e cmp $0x2e,%bl 0.00 : 6cfc3d: 0f 95 c0 setne %al /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:627 11.11 : 6cfc40: 01 c0 add %eax,%eax 0.00 : 6cfc42: 4a 8d 34 8a lea (%rdx,%r9,4),%rsi 0.00 : 6cfc46: 89 06 mov %eax,(%rsi) : while (isdigit((unsigned char) *cp)) 0.00 : 6cfc48: 41 0f b6 3c 24 movzbl (%r12),%edi 0.00 : 6cfc4d: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfc51: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 6cfc55: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfc5a: 74 41 je 6cfc9d : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfc5c: 49 8d 46 01 lea 0x1(%r14),%rax 0.00 : 6cfc60: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfc64: 0f 86 78 fb ff ff jbe 6cf7e2 0.00 : 6cfc6a: 48 83 c1 02 add $0x2,%rcx 0.00 : 6cfc6e: eb 0e jmp 6cfc7e 0.00 : 6cfc70: 48 83 c1 01 add $0x1,%rcx 0.00 : 6cfc74: 48 39 4d c8 cmp %rcx,-0x38(%rbp) 0.00 : 6cfc78: 0f 86 64 fb ff ff jbe 6cf7e2 0.00 : 6cfc7e: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfc82: 40 88 79 ff mov %dil,-0x1(%rcx) : APPEND_CHAR(bufp, bufend, *cp++); : /* second field is all digits? then no embedded text month */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = ((delim == '.') ? DTK_NUMBER : DTK_DATE); : while (isdigit((unsigned char) *cp)) 0.00 : 6cfc86: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfc8a: 41 0f b6 3c 24 movzbl (%r12),%edi : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfc8f: 49 89 ce mov %rcx,%r14 : APPEND_CHAR(bufp, bufend, *cp++); : /* second field is all digits? then no embedded text month */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = ((delim == '.') ? DTK_NUMBER : DTK_DATE); : while (isdigit((unsigned char) *cp)) 0.00 : 6cfc92: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 6cfc96: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfc9b: 75 d3 jne 6cfc70 : : /* : * insist that the delimiters match to get a three-field : * date. : */ : if (*cp == delim) 0.00 : 6cfc9d: 40 38 df cmp %bl,%dil 0.00 : 6cfca0: 0f 85 d2 fc ff ff jne 6cf978 : { : ftype[nf] = DTK_DATE; 0.00 : 6cfca6: c7 06 02 00 00 00 movl $0x2,(%rsi) : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfcac: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 6cfcb0: 48 39 55 c8 cmp %rdx,-0x38(%rbp) 0.00 : 6cfcb4: 0f 86 28 fb ff ff jbe 6cf7e2 0.00 : 6cfcba: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 6cfcbf: 48 89 d6 mov %rdx,%rsi 0.00 : 6cfcc2: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfcc6: 41 88 06 mov %al,(%r14) : while (isdigit((unsigned char) *cp) || *cp == delim) 0.00 : 6cfcc9: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cfcce: 49 8b 45 00 mov 0x0(%r13),%rax : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfcd2: 49 89 f6 mov %rsi,%r14 : */ : if (*cp == delim) : { : ftype[nf] = DTK_DATE; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || *cp == delim) 0.00 : 6cfcd5: 0f b6 d1 movzbl %cl,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 11.11 : 6cfcd8: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfcdd: 75 09 jne 6cfce8 0.00 : 6cfcdf: 40 38 f9 cmp %dil,%cl 0.00 : 6cfce2: 0f 85 90 fc ff ff jne 6cf978 11.11 : 6cfce8: 48 83 c6 01 add $0x1,%rsi : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfcec: 48 39 75 c8 cmp %rsi,-0x38(%rbp) 0.00 : 6cfcf0: 0f 86 ec fa ff ff jbe 6cf7e2 0.00 : 6cfcf6: 88 4e ff mov %cl,-0x1(%rsi) 0.00 : 6cfcf9: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfcfd: eb ca jmp 6cfcc9 0.00 : 6cfcff: 90 nop : } : } : else : { : ftype[nf] = DTK_DATE; 0.00 : 6cfd00: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 6cfd04: 4d 89 f7 mov %r14,%r15 0.00 : 6cfd07: 42 c7 04 88 02 00 00 movl $0x2,(%rax,%r9,4) 0.00 : 6cfd0e: 00 : while (isalnum((unsigned char) *cp) || *cp == delim) 0.00 : 6cfd0f: eb 25 jmp 6cfd36 0.00 : 6cfd11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6cfd18: 49 83 c7 01 add $0x1,%r15 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfd1c: 4c 39 7d c8 cmp %r15,-0x38(%rbp) 0.00 : 6cfd20: 0f 86 bc fa ff ff jbe 6cf7e2 0.00 : 6cfd26: 0f b6 f9 movzbl %cl,%edi 0.00 : 6cfd29: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfd2d: e8 ae ca 0d 00 callq 7ac7e0 0.00 : 6cfd32: 41 88 47 ff mov %al,-0x1(%r15) : } : } : else : { : ftype[nf] = DTK_DATE; : while (isalnum((unsigned char) *cp) || *cp == delim) 0.00 : 6cfd36: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cfd3b: 49 8b 45 00 mov 0x0(%r13),%rax : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfd3f: 4d 89 fe mov %r15,%r14 : } : } : else : { : ftype[nf] = DTK_DATE; : while (isalnum((unsigned char) *cp) || *cp == delim) 0.00 : 6cfd42: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfd45: f6 04 50 08 testb $0x8,(%rax,%rdx,2) 0.00 : 6cfd49: 75 cd jne 6cfd18 0.00 : 6cfd4b: 38 d9 cmp %bl,%cl 0.00 : 6cfd4d: 74 c9 je 6cfd18 0.00 : 6cfd4f: e9 24 fc ff ff jmpq 6cf978 : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; 0.00 : 6cfd54: 48 8b 45 b0 mov -0x50(%rbp),%rax : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd58: 49 8d 56 01 lea 0x1(%r14),%rdx : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; 0.00 : 6cfd5c: 42 c7 04 88 03 00 00 movl $0x3,(%rax,%r9,4) 0.00 : 6cfd63: 00 : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd64: 48 39 55 c8 cmp %rdx,-0x38(%rbp) 0.00 : 6cfd68: 0f 86 74 fa ff ff jbe 6cf7e2 0.00 : 6cfd6e: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 6cfd73: 48 89 d6 mov %rdx,%rsi 0.00 : 6cfd76: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfd7a: 41 88 06 mov %al,(%r14) : while (isdigit((unsigned char) *cp) || 0.00 : 6cfd7d: eb 16 jmp 6cfd95 0.00 : 6cfd7f: 90 nop 0.00 : 6cfd80: 48 83 c6 01 add $0x1,%rsi : (*cp == ':') || (*cp == '.')) : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd84: 48 39 75 c8 cmp %rsi,-0x38(%rbp) 0.00 : 6cfd88: 0f 86 54 fa ff ff jbe 6cf7e2 0.00 : 6cfd8e: 88 4e ff mov %cl,-0x1(%rsi) 0.00 : 6cfd91: 49 83 c4 01 add $0x1,%r12 : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cfd95: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cfd9a: 49 8b 45 00 mov 0x0(%r13),%rax : (*cp == ':') || (*cp == '.')) : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd9e: 49 89 f6 mov %rsi,%r14 : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cfda1: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfda4: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfda9: 75 d5 jne 6cfd80 0.00 : 6cfdab: 80 f9 3a cmp $0x3a,%cl 0.00 : 6cfdae: 74 d0 je 6cfd80 0.00 : 6cfdb0: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cfdb3: 74 cb je 6cfd80 0.00 : 6cfdb5: 0f 1f 00 nopl (%rax) 0.00 : 6cfdb8: e9 bb fb ff ff jmpq 6cf978 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 83.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1190 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1193 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1194 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d4410 : : /* : * i4tod - converts an int4 number to a float8 number : */ : Datum : i4tod(PG_FUNCTION_ARGS) : { 0.00 : 6d4410: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1190 83.33 : 6d4411: 48 89 e5 mov %rsp,%rbp : int32 num = PG_GETARG_INT32(0); : : PG_RETURN_FLOAT8((float8) num); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1193 8.33 : 6d4414: f2 0f 2a 47 20 cvtsi2sdl 0x20(%rdi),%xmm0 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:1194 8.33 : 6d4419: c9 leaveq : Datum : i4tod(PG_FUNCTION_ARGS) : { : int32 num = PG_GETARG_INT32(0); : : PG_RETURN_FLOAT8((float8) num); 0.00 : 6d441a: e9 a1 95 0a 00 jmpq 77d9c0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:325 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:326 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d8860 : : /* : * float4in - converts "num" to float4 : */ : Datum : float4in(PG_FUNCTION_ARGS) : { 0.00 : 6d8860: 55 push %rbp 0.00 : 6d8861: 48 89 e5 mov %rsp,%rbp 0.00 : 6d8864: 41 56 push %r14 0.00 : 6d8866: 41 55 push %r13 0.00 : 6d8868: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 25.00 : 6d886a: 53 push %rbx 25.00 : 6d886b: 48 83 ec 20 sub $0x20,%rsp : char *num = PG_GETARG_CSTRING(0); 0.00 : 6d886f: 4c 8b 77 20 mov 0x20(%rdi),%r14 : * string. : */ : orig_num = num; : : /* skip leading whitespace */ : while (*num != '\0' && isspace((unsigned char) *num)) 0.00 : 6d8873: 41 0f b6 1e movzbl (%r14),%ebx 0.00 : 6d8877: 84 db test %bl,%bl 0.00 : 6d8879: 0f 84 d1 00 00 00 je 6d8950 : /* : * float4in - converts "num" to float4 : */ : Datum : float4in(PG_FUNCTION_ARGS) : { 0.00 : 6d887f: e8 3c 10 d9 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 6d8884: 4d 89 f4 mov %r14,%r12 0.00 : 6d8887: 49 89 c5 mov %rax,%r13 0.00 : 6d888a: 48 8b 10 mov (%rax),%rdx 0.00 : 6d888d: eb 12 jmp 6d88a1 0.00 : 6d888f: 90 nop : */ : orig_num = num; : : /* skip leading whitespace */ : while (*num != '\0' && isspace((unsigned char) *num)) : num++; 0.00 : 6d8890: 49 83 c4 01 add $0x1,%r12 : * string. : */ : orig_num = num; : : /* skip leading whitespace */ : while (*num != '\0' && isspace((unsigned char) *num)) 0.00 : 6d8894: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 6d8899: 84 db test %bl,%bl 0.00 : 6d889b: 0f 84 af 00 00 00 je 6d8950 0.00 : 6d88a1: 0f b6 c3 movzbl %bl,%eax 0.00 : 6d88a4: f6 44 42 01 20 testb $0x20,0x1(%rdx,%rax,2) 0.00 : 6d88a9: 75 e5 jne 6d8890 : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; 0.00 : 6d88ab: e8 10 14 d9 ff callq 469cc0 <__errno_location@plt> : val = strtod(num, &endptr); 0.00 : 6d88b0: 48 8d 75 d8 lea -0x28(%rbp),%rsi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; 0.00 : 6d88b4: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtod(num, &endptr); 0.00 : 6d88ba: 4c 89 e7 mov %r12,%rdi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; 0.00 : 6d88bd: 48 89 c3 mov %rax,%rbx : val = strtod(num, &endptr); 0.00 : 6d88c0: e8 bb 18 d9 ff callq 46a180 : : /* did we not see anything that looks like a double? */ : if (endptr == num || errno != 0) 0.00 : 6d88c5: 4c 39 65 d8 cmp %r12,-0x28(%rbp) : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; : val = strtod(num, &endptr); 0.00 : 6d88c9: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) : : /* did we not see anything that looks like a double? */ : if (endptr == num || errno != 0) 0.00 : 6d88ce: 0f 84 9d 01 00 00 je 6d8a71 0.00 : 6d88d4: 8b 1b mov (%rbx),%ebx 0.00 : 6d88d6: 85 db test %ebx,%ebx 0.00 : 6d88d8: 74 30 je 6d890a : * : * Note: C99 also requires hexadecimal input as well as some extended : * forms of NaN, but we consider these forms unportable and don't try : * to support them. You can use 'em if your strtod() takes 'em. : */ : if (pg_strncasecmp(num, "NaN", 3) == 0) 0.00 : 6d88da: ba 03 00 00 00 mov $0x3,%edx 0.00 : 6d88df: be e7 b5 8b 00 mov $0x8bb5e7,%esi 0.00 : 6d88e4: 4c 89 e7 mov %r12,%rdi 0.00 : 6d88e7: e8 54 3f 0d 00 callq 7ac840 0.00 : 6d88ec: 85 c0 test %eax,%eax 0.00 : 6d88ee: 0f 85 4c 01 00 00 jne 6d8a40 : { : val = get_float4_nan(); : endptr = num + 3; 0.00 : 6d88f4: f2 0f 10 05 84 32 1e movsd 0x1e3284(%rip),%xmm0 # 8bbb80 <__func__.11658+0x17> 0.00 : 6d88fb: 00 0.00 : 6d88fc: 49 8d 44 24 03 lea 0x3(%r12),%rax 0.00 : 6d8901: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8906: 48 89 45 d8 mov %rax,-0x28(%rbp) : endptr--; : } : #endif /* HAVE_BUGGY_SOLARIS_STRTOD */ : : /* skip trailing whitespace */ : while (*endptr != '\0' && isspace((unsigned char) *endptr)) 0.00 : 6d890a: 48 8b 4d d8 mov -0x28(%rbp),%rcx 0.00 : 6d890e: 0f b6 01 movzbl (%rcx),%eax 0.00 : 6d8911: 84 c0 test %al,%al 0.00 : 6d8913: 75 1a jne 6d892f 0.00 : 6d8915: eb 69 jmp 6d8980 0.00 : 6d8917: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6d891e: 00 00 : endptr++; 0.00 : 6d8920: 48 83 c1 01 add $0x1,%rcx 0.00 : 6d8924: 48 89 4d d8 mov %rcx,-0x28(%rbp) : endptr--; : } : #endif /* HAVE_BUGGY_SOLARIS_STRTOD */ : : /* skip trailing whitespace */ : while (*endptr != '\0' && isspace((unsigned char) *endptr)) 0.00 : 6d8928: 0f b6 01 movzbl (%rcx),%eax 0.00 : 6d892b: 84 c0 test %al,%al 0.00 : 6d892d: 74 51 je 6d8980 0.00 : 6d892f: 0f b6 d0 movzbl %al,%edx 0.00 : 6d8932: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6d8936: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 6d893b: 75 e3 jne 6d8920 : endptr++; : : /* if there is any junk left at the end of the string, bail out */ : if (*endptr != '\0') : ereport(ERROR, 0.00 : 6d893d: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8940: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8945: ba 3d 01 00 00 mov $0x13d,%edx 0.00 : 6d894a: eb 11 jmp 6d895d 0.00 : 6d894c: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Check for an empty-string input to begin with, to avoid the vagaries of : * strtod() on different platforms. : */ : if (*num == '\0') : ereport(ERROR, 0.00 : 6d8950: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8953: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8958: ba db 00 00 00 mov $0xdb,%edx : while (*endptr != '\0' && isspace((unsigned char) *endptr)) : endptr++; : : /* if there is any junk left at the end of the string, bail out */ : if (*endptr != '\0') : ereport(ERROR, 0.00 : 6d895d: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8962: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8967: e8 54 21 0a 00 callq 77aac0 0.00 : 6d896c: 84 c0 test %al,%al 0.00 : 6d896e: 0f 85 9c 01 00 00 jne 6d8b10 : : /* : * if we get here, we have a legal double, still need to check to see if : * it's a legal float4 : */ : CHECKFLOATVAL((float4) val, isinf(val), val == 0); 0.00 : 6d8974: e8 57 0b d9 ff callq 4694d0 0.00 : 6d8979: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6d8980: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d8985: 66 0f 5a c0 cvtpd2ps %xmm0,%xmm0 0.00 : 6d8989: f3 0f 11 45 c4 movss %xmm0,-0x3c(%rbp) 0.00 : 6d898e: e8 9d 0d d9 ff callq 469730 <__isinff@plt> 0.00 : 6d8993: 85 c0 test %eax,%eax 0.00 : 6d8995: 75 49 jne 6d89e0 0.00 : 6d8997: f3 0f 10 45 c4 movss -0x3c(%rbp),%xmm0 0.00 : 6d899c: 0f 2e 05 3d 99 0d 00 ucomiss 0xd993d(%rip),%xmm0 # 7b22e0 <__func__.14992+0xd7> 0.00 : 6d89a3: 75 1b jne 6d89c0 0.00 : 6d89a5: 7a 19 jp 6d89c0 0.00 : 6d89a7: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d89ac: 66 0f 2e 05 24 99 0d ucomisd 0xd9924(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 6d89b3: 00 0.00 : 6d89b4: 0f 8a 20 01 00 00 jp 6d8ada 0.00 : 6d89ba: 0f 85 1a 01 00 00 jne 6d8ada : : PG_RETURN_FLOAT4((float4) val); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:325 25.00 : 6d89c0: f3 0f 10 45 c4 movss -0x3c(%rbp),%xmm0 0.00 : 6d89c5: e8 d6 4f 0a 00 callq 77d9a0 : } 0.00 : 6d89ca: 48 83 c4 20 add $0x20,%rsp 0.00 : 6d89ce: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:326 25.00 : 6d89cf: 41 5c pop %r12 0.00 : 6d89d1: 41 5d pop %r13 0.00 : 6d89d3: 41 5e pop %r14 0.00 : 6d89d5: c9 leaveq 0.00 : 6d89d6: c3 retq 0.00 : 6d89d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6d89de: 00 00 : : /* : * if we get here, we have a legal double, still need to check to see if : * it's a legal float4 : */ : CHECKFLOATVAL((float4) val, isinf(val), val == 0); 0.00 : 6d89e0: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d89e5: e8 06 11 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d89ea: 85 c0 test %eax,%eax 0.00 : 6d89ec: 75 a9 jne 6d8997 0.00 : 6d89ee: 45 31 c0 xor %r8d,%r8d 0.00 : 6d89f1: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d89f6: ba 43 01 00 00 mov $0x143,%edx 0.00 : 6d89fb: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8a00: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8a05: e8 b6 20 0a 00 callq 77aac0 0.00 : 6d8a0a: 84 c0 test %al,%al 0.00 : 6d8a0c: 0f 84 62 ff ff ff je 6d8974 0.00 : 6d8a12: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d8a17: 31 c0 xor %eax,%eax 0.00 : 6d8a19: e8 82 3e 0a 00 callq 77c8a0 0.00 : 6d8a1e: 89 c3 mov %eax,%ebx 0.00 : 6d8a20: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d8a25: e8 26 43 0a 00 callq 77cd50 0.00 : 6d8a2a: 89 de mov %ebx,%esi 0.00 : 6d8a2c: 89 c7 mov %eax,%edi 0.00 : 6d8a2e: 31 c0 xor %eax,%eax 0.00 : 6d8a30: e8 ab 1b 0a 00 callq 77a5e0 0.00 : 6d8a35: e9 3a ff ff ff jmpq 6d8974 0.00 : 6d8a3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (pg_strncasecmp(num, "NaN", 3) == 0) : { : val = get_float4_nan(); : endptr = num + 3; : } : else if (pg_strncasecmp(num, "Infinity", 8) == 0) 0.00 : 6d8a40: ba 08 00 00 00 mov $0x8,%edx 0.00 : 6d8a45: be ec b5 8b 00 mov $0x8bb5ec,%esi 0.00 : 6d8a4a: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8a4d: e8 ee 3d 0d 00 callq 7ac840 0.00 : 6d8a52: 85 c0 test %eax,%eax 0.00 : 6d8a54: 75 22 jne 6d8a78 : { : val = get_float4_infinity(); : endptr = num + 8; 0.00 : 6d8a56: 49 8d 44 24 08 lea 0x8(%r12),%rax 0.00 : 6d8a5b: f2 0f 10 05 15 31 1e movsd 0x1e3115(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8a62: 00 0.00 : 6d8a63: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8a67: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8a6c: e9 99 fe ff ff jmpq 6d890a : : errno = 0; : val = strtod(num, &endptr); : : /* did we not see anything that looks like a double? */ : if (endptr == num || errno != 0) 0.00 : 6d8a71: 8b 1b mov (%rbx),%ebx 0.00 : 6d8a73: e9 62 fe ff ff jmpq 6d88da : else if (pg_strncasecmp(num, "Infinity", 8) == 0) : { : val = get_float4_infinity(); : endptr = num + 8; : } : else if (pg_strncasecmp(num, "+Infinity", 9) == 0) 0.00 : 6d8a78: ba 09 00 00 00 mov $0x9,%edx 0.00 : 6d8a7d: be eb b5 8b 00 mov $0x8bb5eb,%esi 0.00 : 6d8a82: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8a85: e8 b6 3d 0d 00 callq 7ac840 0.00 : 6d8a8a: 85 c0 test %eax,%eax 0.00 : 6d8a8c: 75 1b jne 6d8aa9 : { : val = get_float4_infinity(); : endptr = num + 9; 0.00 : 6d8a8e: 49 8d 44 24 09 lea 0x9(%r12),%rax 0.00 : 6d8a93: f2 0f 10 05 dd 30 1e movsd 0x1e30dd(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8a9a: 00 0.00 : 6d8a9b: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8a9f: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8aa4: e9 61 fe ff ff jmpq 6d890a : } : else if (pg_strncasecmp(num, "-Infinity", 9) == 0) 0.00 : 6d8aa9: ba 09 00 00 00 mov $0x9,%edx 0.00 : 6d8aae: be f5 b5 8b 00 mov $0x8bb5f5,%esi 0.00 : 6d8ab3: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8ab6: e8 85 3d 0d 00 callq 7ac840 0.00 : 6d8abb: 85 c0 test %eax,%eax 0.00 : 6d8abd: 75 6c jne 6d8b2b : { : val = -get_float4_infinity(); : endptr = num + 9; 0.00 : 6d8abf: 49 8d 44 24 09 lea 0x9(%r12),%rax 0.00 : 6d8ac4: f2 0f 10 05 ec 30 1e movsd 0x1e30ec(%rip),%xmm0 # 8bbbb8 <__func__.11658+0x4f> 0.00 : 6d8acb: 00 0.00 : 6d8acc: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8ad0: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8ad5: e9 30 fe ff ff jmpq 6d890a : : /* : * if we get here, we have a legal double, still need to check to see if : * it's a legal float4 : */ : CHECKFLOATVAL((float4) val, isinf(val), val == 0); 0.00 : 6d8ada: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8add: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8ae2: ba 43 01 00 00 mov $0x143,%edx 0.00 : 6d8ae7: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8aec: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8af1: e8 ca 1f 0a 00 callq 77aac0 0.00 : 6d8af6: 84 c0 test %al,%al 0.00 : 6d8af8: 0f 84 76 fe ff ff je 6d8974 0.00 : 6d8afe: bf 4c b4 8b 00 mov $0x8bb44c,%edi 0.00 : 6d8b03: 31 c0 xor %eax,%eax 0.00 : 6d8b05: e8 96 3d 0a 00 callq 77c8a0 0.00 : 6d8b0a: e9 0f ff ff ff jmpq 6d8a1e 0.00 : 6d8b0f: 90 nop : while (*endptr != '\0' && isspace((unsigned char) *endptr)) : endptr++; : : /* if there is any junk left at the end of the string, bail out */ : if (*endptr != '\0') : ereport(ERROR, 0.00 : 6d8b10: bf 50 b8 8b 00 mov $0x8bb850,%edi 0.00 : 6d8b15: 4c 89 f6 mov %r14,%rsi 0.00 : 6d8b18: 31 c0 xor %eax,%eax 0.00 : 6d8b1a: e8 81 3d 0a 00 callq 77c8a0 0.00 : 6d8b1f: bf 82 00 02 02 mov $0x2020082,%edi 0.00 : 6d8b24: 89 c3 mov %eax,%ebx 0.00 : 6d8b26: e9 fa fe ff ff jmpq 6d8a25 : else if (pg_strncasecmp(num, "-Infinity", 9) == 0) : { : val = -get_float4_infinity(); : endptr = num + 9; : } : else if (pg_strncasecmp(num, "inf", 3) == 0) 0.00 : 6d8b2b: ba 03 00 00 00 mov $0x3,%edx 0.00 : 6d8b30: be 00 b6 8b 00 mov $0x8bb600,%esi 0.00 : 6d8b35: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8b38: e8 03 3d 0d 00 callq 7ac840 0.00 : 6d8b3d: 85 c0 test %eax,%eax 0.00 : 6d8b3f: 75 1b jne 6d8b5c : { : val = get_float4_infinity(); : endptr = num + 3; 0.00 : 6d8b41: 49 8d 44 24 03 lea 0x3(%r12),%rax 0.00 : 6d8b46: f2 0f 10 05 2a 30 1e movsd 0x1e302a(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8b4d: 00 0.00 : 6d8b4e: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8b52: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8b57: e9 ae fd ff ff jmpq 6d890a : } : else if (pg_strncasecmp(num, "+inf", 4) == 0) 0.00 : 6d8b5c: ba 04 00 00 00 mov $0x4,%edx 0.00 : 6d8b61: be ff b5 8b 00 mov $0x8bb5ff,%esi 0.00 : 6d8b66: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8b69: e8 d2 3c 0d 00 callq 7ac840 0.00 : 6d8b6e: 85 c0 test %eax,%eax 0.00 : 6d8b70: 75 1b jne 6d8b8d : { : val = get_float4_infinity(); : endptr = num + 4; 0.00 : 6d8b72: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 6d8b77: f2 0f 10 05 f9 2f 1e movsd 0x1e2ff9(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8b7e: 00 0.00 : 6d8b7f: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8b83: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8b88: e9 7d fd ff ff jmpq 6d890a : } : else if (pg_strncasecmp(num, "-inf", 4) == 0) 0.00 : 6d8b8d: ba 04 00 00 00 mov $0x4,%edx 0.00 : 6d8b92: be 04 b6 8b 00 mov $0x8bb604,%esi 0.00 : 6d8b97: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8b9a: e8 a1 3c 0d 00 callq 7ac840 0.00 : 6d8b9f: 85 c0 test %eax,%eax 0.00 : 6d8ba1: 75 1b jne 6d8bbe : { : val = -get_float4_infinity(); : endptr = num + 4; 0.00 : 6d8ba3: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 6d8ba8: f2 0f 10 05 08 30 1e movsd 0x1e3008(%rip),%xmm0 # 8bbbb8 <__func__.11658+0x4f> 0.00 : 6d8baf: 00 0.00 : 6d8bb0: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8bb4: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8bb9: e9 4c fd ff ff jmpq 6d890a : } : else if (save_errno == ERANGE) 0.00 : 6d8bbe: 83 fb 22 cmp $0x22,%ebx 0.00 : 6d8bc1: 75 67 jne 6d8c2a : * that are not zero, but are too close to zero to have full : * precision). We'd prefer not to throw error for that, so try to : * detect whether it's a "real" out-of-range condition by checking : * to see if the result is zero or huge. : */ : if (val == 0.0 || val >= HUGE_VAL || val <= -HUGE_VAL) 0.00 : 6d8bc3: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d8bc8: 66 0f 2e 05 08 97 0d ucomisd 0xd9708(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 6d8bcf: 00 0.00 : 6d8bd0: 7a 02 jp 6d8bd4 0.00 : 6d8bd2: 74 1e je 6d8bf2 0.00 : 6d8bd4: 66 0f 2e 05 dc 0f 1e ucomisd 0x1e0fdc(%rip),%xmm0 # 8b9bb8 <__func__.15194+0x16> 0.00 : 6d8bdb: 00 0.00 : 6d8bdc: 77 14 ja 6d8bf2 0.00 : 6d8bde: 66 0f 2e 05 ca 0f 1e ucomisd 0x1e0fca(%rip),%xmm0 # 8b9bb0 <__func__.15194+0xe> 0.00 : 6d8be5: 00 0.00 : 6d8be6: 0f 83 1e fd ff ff jae 6d890a 0.00 : 6d8bec: 0f 8a 18 fd ff ff jp 6d890a : ereport(ERROR, 0.00 : 6d8bf2: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8bf5: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8bfa: ba 1f 01 00 00 mov $0x11f,%edx 0.00 : 6d8bff: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8c04: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8c09: e8 b2 1e 0a 00 callq 77aac0 0.00 : 6d8c0e: 84 c0 test %al,%al 0.00 : 6d8c10: 0f 84 5e fd ff ff je 6d8974 0.00 : 6d8c16: 4c 89 f6 mov %r14,%rsi 0.00 : 6d8c19: bf 80 b8 8b 00 mov $0x8bb880,%edi 0.00 : 6d8c1e: 31 c0 xor %eax,%eax 0.00 : 6d8c20: e8 7b 3c 0a 00 callq 77c8a0 0.00 : 6d8c25: e9 f4 fd ff ff jmpq 6d8a1e : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("\"%s\" is out of range for type real", : orig_num))); : } : else : ereport(ERROR, 0.00 : 6d8c2a: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8c2d: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8c32: ba 25 01 00 00 mov $0x125,%edx 0.00 : 6d8c37: e9 21 fd ff ff jmpq 6d895d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4554 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4653 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4656 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4838 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4850 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4750 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4678 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076b450 : : * : * NOTE: we assume we are already switched into CacheMemoryContext. : */ : static bool : load_relcache_init_file(bool shared) : { 0.00 : 76b450: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4554 14.29 : 76b451: 48 89 e5 mov %rsp,%rbp 0.00 : 76b454: 41 57 push %r15 0.00 : 76b456: 41 56 push %r14 0.00 : 76b458: 41 55 push %r13 0.00 : 76b45a: 41 54 push %r12 0.00 : 76b45c: 53 push %rbx 0.00 : 76b45d: 48 81 ec 48 04 00 00 sub $0x448,%rsp : nailed_rels, : nailed_indexes, : magic; : int i; : : if (shared) 0.00 : 76b464: 40 84 ff test %dil,%dil : * : * NOTE: we assume we are already switched into CacheMemoryContext. : */ : static bool : load_relcache_init_file(bool shared) : { 0.00 : 76b467: 40 88 bd 9f fb ff ff mov %dil,-0x461(%rbp) : nailed_rels, : nailed_indexes, : magic; : int i; : : if (shared) 0.00 : 76b46e: 0f 84 8c 00 00 00 je 76b500 : snprintf(initfilename, sizeof(initfilename), "global/%s", 0.00 : 76b474: 48 8d 9d c0 fb ff ff lea -0x440(%rbp),%rbx 0.00 : 76b47b: b9 d3 d7 8c 00 mov $0x8cd7d3,%ecx 0.00 : 76b480: ba e4 d7 8c 00 mov $0x8cd7e4,%edx 0.00 : 76b485: be 00 04 00 00 mov $0x400,%esi 0.00 : 76b48a: 31 c0 xor %eax,%eax 0.00 : 76b48c: 48 89 df mov %rbx,%rdi 0.00 : 76b48f: e8 bc df cf ff callq 469450 : RELCACHE_INIT_FILENAME); : else : snprintf(initfilename, sizeof(initfilename), "%s/%s", : DatabasePath, RELCACHE_INIT_FILENAME); : : fp = AllocateFile(initfilename, PG_BINARY_R); 0.00 : 76b494: be cd 6c 8d 00 mov $0x8d6ccd,%esi 0.00 : 76b499: 48 89 df mov %rbx,%rdi 0.00 : 76b49c: e8 7f dd f0 ff callq 679220 0.00 : 76b4a1: 49 89 c7 mov %rax,%r15 : if (fp == NULL) 0.00 : 76b4a4: 31 c0 xor %eax,%eax 0.00 : 76b4a6: 4d 85 ff test %r15,%r15 0.00 : 76b4a9: 74 43 je 76b4ee : * Read the index relcache entries from the file. Note we will not enter : * any of them into the cache if the read fails partway through; this : * helps to guard against broken init files. : */ : max_rels = 100; : rels = (Relation *) palloc(max_rels * sizeof(Relation)); 0.00 : 76b4ab: bf 20 03 00 00 mov $0x320,%edi 0.00 : 76b4b0: e8 9b d8 02 00 callq 798d50 : num_rels = 0; : nailed_rels = nailed_indexes = 0; : : /* check for correct magic number (compatible version) */ : if (fread(&magic, 1, sizeof(magic), fp) != sizeof(magic)) 0.00 : 76b4b5: 48 8d 7d cc lea -0x34(%rbp),%rdi 0.00 : 76b4b9: 4c 89 f9 mov %r15,%rcx 0.00 : 76b4bc: ba 04 00 00 00 mov $0x4,%edx 0.00 : 76b4c1: be 01 00 00 00 mov $0x1,%esi : * Read the index relcache entries from the file. Note we will not enter : * any of them into the cache if the read fails partway through; this : * helps to guard against broken init files. : */ : max_rels = 100; : rels = (Relation *) palloc(max_rels * sizeof(Relation)); 0.00 : 76b4c6: 48 89 85 a0 fb ff ff mov %rax,-0x460(%rbp) : num_rels = 0; : nailed_rels = nailed_indexes = 0; : : /* check for correct magic number (compatible version) */ : if (fread(&magic, 1, sizeof(magic), fp) != sizeof(magic)) 0.00 : 76b4cd: e8 be e7 cf ff callq 469c90 0.00 : 76b4d2: 48 83 f8 04 cmp $0x4,%rax 0.00 : 76b4d6: 74 58 je 76b530 : * init file is broken, so do it the hard way. We don't bother trying to : * free the clutter we just allocated; it's not in the relcache so it : * won't hurt. : */ : read_failed: : pfree(rels); 0.00 : 76b4d8: 48 8b bd a0 fb ff ff mov -0x460(%rbp),%rdi 0.00 : 76b4df: e8 9c d6 02 00 callq 798b80 : FreeFile(fp); 0.00 : 76b4e4: 4c 89 ff mov %r15,%rdi 0.00 : 76b4e7: e8 64 d1 f0 ff callq 678650 0.00 : 76b4ec: 31 c0 xor %eax,%eax : : return false; : } 0.00 : 76b4ee: 48 81 c4 48 04 00 00 add $0x448,%rsp 0.00 : 76b4f5: 5b pop %rbx 0.00 : 76b4f6: 41 5c pop %r12 0.00 : 76b4f8: 41 5d pop %r13 0.00 : 76b4fa: 41 5e pop %r14 0.00 : 76b4fc: 41 5f pop %r15 0.00 : 76b4fe: c9 leaveq 0.00 : 76b4ff: c3 retq : : if (shared) : snprintf(initfilename, sizeof(initfilename), "global/%s", : RELCACHE_INIT_FILENAME); : else : snprintf(initfilename, sizeof(initfilename), "%s/%s", 0.00 : 76b500: 48 8d 9d c0 fb ff ff lea -0x440(%rbp),%rbx 0.00 : 76b507: 48 8b 0d a2 eb 44 00 mov 0x44eba2(%rip),%rcx # bba0b0 0.00 : 76b50e: 41 b8 d3 d7 8c 00 mov $0x8cd7d3,%r8d 0.00 : 76b514: ba 1b a3 8a 00 mov $0x8aa31b,%edx 0.00 : 76b519: be 00 04 00 00 mov $0x400,%esi 0.00 : 76b51e: 31 c0 xor %eax,%eax 0.00 : 76b520: 48 89 df mov %rbx,%rdi 0.00 : 76b523: e8 28 df cf ff callq 469450 0.00 : 76b528: e9 67 ff ff ff jmpq 76b494 0.00 : 76b52d: 0f 1f 00 nopl (%rax) : nailed_rels = nailed_indexes = 0; : : /* check for correct magic number (compatible version) */ : if (fread(&magic, 1, sizeof(magic), fp) != sizeof(magic)) : goto read_failed; : if (magic != RELCACHE_INIT_FILEMAGIC) 0.00 : 76b530: 81 7d cc 66 32 57 00 cmpl $0x573266,-0x34(%rbp) 0.00 : 76b537: 75 9f jne 76b4d8 : goto read_failed; 0.00 : 76b539: c7 85 b0 fb ff ff 00 movl $0x0,-0x450(%rbp) 0.00 : 76b540: 00 00 00 0.00 : 76b543: c7 85 a8 fb ff ff 00 movl $0x0,-0x458(%rbp) 0.00 : 76b54a: 00 00 00 0.00 : 76b54d: c7 85 ac fb ff ff 64 movl $0x64,-0x454(%rbp) 0.00 : 76b554: 00 00 00 0.00 : 76b557: c7 85 b4 fb ff ff 00 movl $0x0,-0x44c(%rbp) 0.00 : 76b55e: 00 00 00 : Relation rel; : Form_pg_class relform; : bool has_not_null; : : /* first read the relation descriptor length */ : nread = fread(&len, 1, sizeof(len), fp); 0.00 : 76b561: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 76b565: 4c 89 f9 mov %r15,%rcx 0.00 : 76b568: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76b56d: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b572: e8 19 e7 cf ff callq 469c90 : if (nread != sizeof(len)) 0.00 : 76b577: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76b57b: 0f 85 4e 06 00 00 jne 76bbcf : break; /* end of file */ : goto read_failed; : } : : /* safety check for incompatible relcache layout */ : if (len != sizeof(RelationData)) 0.00 : 76b581: 48 81 7d c0 40 01 00 cmpq $0x140,-0x40(%rbp) 0.00 : 76b588: 00 0.00 : 76b589: 0f 85 49 ff ff ff jne 76b4d8 : goto read_failed; : : /* allocate another relcache header */ : if (num_rels >= max_rels) 0.00 : 76b58f: 8b 85 ac fb ff ff mov -0x454(%rbp),%eax 0.00 : 76b595: 39 85 a8 fb ff ff cmp %eax,-0x458(%rbp) 0.00 : 76b59b: 0f 8d 5f 01 00 00 jge 76b700 : { : max_rels *= 2; : rels = (Relation *) repalloc(rels, max_rels * sizeof(Relation)); : } : : rel = rels[num_rels++] = (Relation) palloc(len); 0.00 : 76b5a1: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 76b5a5: e8 a6 d7 02 00 callq 798d50 0.00 : 76b5aa: 49 89 c6 mov %rax,%r14 0.00 : 76b5ad: 48 63 85 a8 fb ff ff movslq -0x458(%rbp),%rax 0.00 : 76b5b4: 48 8b 95 a0 fb ff ff mov -0x460(%rbp),%rdx : : /* then, read the Relation structure */ : if (fread(rel, 1, len, fp) != len) 0.00 : 76b5bb: 4c 89 f9 mov %r15,%rcx 0.00 : 76b5be: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b5c3: 4c 89 f7 mov %r14,%rdi : { : max_rels *= 2; : rels = (Relation *) repalloc(rels, max_rels * sizeof(Relation)); : } : : rel = rels[num_rels++] = (Relation) palloc(len); 0.00 : 76b5c6: 4c 89 34 c2 mov %r14,(%rdx,%rax,8) : : /* then, read the Relation structure */ : if (fread(rel, 1, len, fp) != len) 0.00 : 76b5ca: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76b5ce: e8 bd e6 cf ff callq 469c90 0.00 : 76b5d3: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76b5d7: 0f 85 fb fe ff ff jne 76b4d8 : goto read_failed; : : /* next read the relation tuple form */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b5dd: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 76b5e1: 4c 89 f9 mov %r15,%rcx 0.00 : 76b5e4: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76b5e9: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b5ee: e8 9d e6 cf ff callq 469c90 0.00 : 76b5f3: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76b5f7: 0f 85 db fe ff ff jne 76b4d8 : goto read_failed; : : relform = (Form_pg_class) palloc(len); 0.00 : 76b5fd: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 76b601: e8 4a d7 02 00 callq 798d50 : if (fread(relform, 1, len, fp) != len) 0.00 : 76b606: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76b60a: 4c 89 f9 mov %r15,%rcx 0.00 : 76b60d: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b612: 48 89 c7 mov %rax,%rdi : : /* next read the relation tuple form */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : : relform = (Form_pg_class) palloc(len); 0.00 : 76b615: 48 89 85 b8 fb ff ff mov %rax,-0x448(%rbp) : if (fread(relform, 1, len, fp) != len) 0.00 : 76b61c: e8 6f e6 cf ff callq 469c90 0.00 : 76b621: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76b625: 0f 85 ad fe ff ff jne 76b4d8 : goto read_failed; : : rel->rd_rel = relform; 0.00 : 76b62b: 48 8b 8d b8 fb ff ff mov -0x448(%rbp),%rcx : rel->rd_att->tdtypeid = relform->reltype; : rel->rd_att->tdtypmod = -1; /* unnecessary, but... */ : : /* next read all the attribute tuple form data entries */ : has_not_null = false; : for (i = 0; i < relform->relnatts; i++) 0.00 : 76b632: 31 db xor %ebx,%ebx 0.00 : 76b634: 45 31 ed xor %r13d,%r13d : : relform = (Form_pg_class) palloc(len); : if (fread(relform, 1, len, fp) != len) : goto read_failed; : : rel->rd_rel = relform; 0.00 : 76b637: 49 89 4e 30 mov %rcx,0x30(%r14) : : /* initialize attribute tuple forms */ : rel->rd_att = CreateTemplateTupleDesc(relform->relnatts, 0.00 : 76b63b: 0f be 71 74 movsbl 0x74(%rcx),%esi 0.00 : 76b63f: 0f bf 79 70 movswl 0x70(%rcx),%edi 0.00 : 76b643: e8 a8 94 d0 ff callq 474af0 0.00 : 76b648: 49 89 46 38 mov %rax,0x38(%r14) : relform->relhasoids); : rel->rd_att->tdrefcount = 1; /* mark as refcounted */ 0.00 : 76b64c: c7 40 24 01 00 00 00 movl $0x1,0x24(%rax) : : rel->rd_att->tdtypeid = relform->reltype; 0.00 : 76b653: 48 8b 8d b8 fb ff ff mov -0x448(%rbp),%rcx 0.00 : 76b65a: 49 8b 56 38 mov 0x38(%r14),%rdx 0.00 : 76b65e: 8b 41 44 mov 0x44(%rcx),%eax 0.00 : 76b661: 89 42 18 mov %eax,0x18(%rdx) : rel->rd_att->tdtypmod = -1; /* unnecessary, but... */ 0.00 : 76b664: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76b668: c7 40 1c ff ff ff ff movl $0xffffffff,0x1c(%rax) : : /* next read all the attribute tuple form data entries */ : has_not_null = false; : for (i = 0; i < relform->relnatts; i++) 0.00 : 76b66f: 66 83 79 70 00 cmpw $0x0,0x70(%rcx) 0.00 : 76b674: 7f 62 jg 76b6d8 0.00 : 76b676: e9 b5 00 00 00 jmpq 76b730 0.00 : 76b67b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : if (len != ATTRIBUTE_FIXED_PART_SIZE) 0.00 : 76b680: 48 83 7d c0 6c cmpq $0x6c,-0x40(%rbp) 0.00 : 76b685: 0f 85 4d fe ff ff jne 76b4d8 : goto read_failed; : if (fread(rel->rd_att->attrs[i], 1, len, fp) != len) 0.00 : 76b68b: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76b68f: 4c 63 e3 movslq %ebx,%r12 0.00 : 76b692: 4c 89 f9 mov %r15,%rcx 0.00 : 76b695: ba 6c 00 00 00 mov $0x6c,%edx 0.00 : 76b69a: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b69f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76b6a3: 4a 8b 3c e0 mov (%rax,%r12,8),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4653 14.29 : 76b6a7: e8 e4 e5 cf ff callq 469c90 0.00 : 76b6ac: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76b6b0: 0f 85 22 fe ff ff jne 76b4d8 : goto read_failed; : : has_not_null |= rel->rd_att->attrs[i]->attnotnull; 0.00 : 76b6b6: 49 8b 46 38 mov 0x38(%r14),%rax : rel->rd_att->tdtypeid = relform->reltype; : rel->rd_att->tdtypmod = -1; /* unnecessary, but... */ : : /* next read all the attribute tuple form data entries */ : has_not_null = false; : for (i = 0; i < relform->relnatts; i++) 0.00 : 76b6ba: 48 8b 95 b8 fb ff ff mov -0x448(%rbp),%rdx 0.00 : 76b6c1: 83 c3 01 add $0x1,%ebx : if (len != ATTRIBUTE_FIXED_PART_SIZE) : goto read_failed; : if (fread(rel->rd_att->attrs[i], 1, len, fp) != len) : goto read_failed; : : has_not_null |= rel->rd_att->attrs[i]->attnotnull; 0.00 : 76b6c4: 48 8b 40 08 mov 0x8(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4656 14.29 : 76b6c8: 4a 8b 04 e0 mov (%rax,%r12,8),%rax 0.00 : 76b6cc: 44 0a 68 5f or 0x5f(%rax),%r13b : rel->rd_att->tdtypeid = relform->reltype; : rel->rd_att->tdtypmod = -1; /* unnecessary, but... */ : : /* next read all the attribute tuple form data entries */ : has_not_null = false; : for (i = 0; i < relform->relnatts; i++) 0.00 : 76b6d0: 0f bf 42 70 movswl 0x70(%rdx),%eax 0.00 : 76b6d4: 39 d8 cmp %ebx,%eax 0.00 : 76b6d6: 7e 58 jle 76b730 : { : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b6d8: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 76b6dc: 4c 89 f9 mov %r15,%rcx 0.00 : 76b6df: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76b6e4: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b6e9: e8 a2 e5 cf ff callq 469c90 0.00 : 76b6ee: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76b6f2: 74 8c je 76b680 0.00 : 76b6f4: e9 df fd ff ff jmpq 76b4d8 0.00 : 76b6f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : goto read_failed; : : /* allocate another relcache header */ : if (num_rels >= max_rels) : { : max_rels *= 2; 0.00 : 76b700: 01 c0 add %eax,%eax : rels = (Relation *) repalloc(rels, max_rels * sizeof(Relation)); 0.00 : 76b702: 48 8b bd a0 fb ff ff mov -0x460(%rbp),%rdi 0.00 : 76b709: 48 63 f0 movslq %eax,%rsi : goto read_failed; : : /* allocate another relcache header */ : if (num_rels >= max_rels) : { : max_rels *= 2; 0.00 : 76b70c: 89 85 ac fb ff ff mov %eax,-0x454(%rbp) : rels = (Relation *) repalloc(rels, max_rels * sizeof(Relation)); 0.00 : 76b712: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 76b716: e8 d5 d5 02 00 callq 798cf0 0.00 : 76b71b: 48 89 85 a0 fb ff ff mov %rax,-0x460(%rbp) 0.00 : 76b722: e9 7a fe ff ff jmpq 76b5a1 0.00 : 76b727: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 76b72e: 00 00 : : has_not_null |= rel->rd_att->attrs[i]->attnotnull; : } : : /* next read the access method specific field */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b730: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 76b734: 4c 89 f9 mov %r15,%rcx 0.00 : 76b737: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76b73c: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b741: e8 4a e5 cf ff callq 469c90 0.00 : 76b746: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76b74a: 0f 85 88 fd ff ff jne 76b4d8 : goto read_failed; : if (len > 0) 0.00 : 76b750: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 76b754: 48 85 ff test %rdi,%rdi 0.00 : 76b757: 0f 85 26 01 00 00 jne 76b883 : if (len != VARSIZE(rel->rd_options)) : goto read_failed; /* sanity check */ : } : else : { : rel->rd_options = NULL; 0.00 : 76b75d: 49 c7 86 98 00 00 00 movq $0x0,0x98(%r14) 0.00 : 76b764: 00 00 00 00 : } : : /* mark not-null status */ : if (has_not_null) 0.00 : 76b768: 45 84 ed test %r13b,%r13b 0.00 : 76b76b: 0f 85 43 04 00 00 jne 76bbb4 : constr->has_not_null = true; : rel->rd_att->constr = constr; : } : : /* If it's an index, there's more to do */ : if (rel->rd_rel->relkind == RELKIND_INDEX) 0.00 : 76b771: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76b775: 80 78 6f 69 cmpb $0x69,0x6f(%rax) 0.00 : 76b779: 0f 84 51 01 00 00 je 76b8d0 : } : else : { : /* Count nailed rels to ensure we have 'em all */ : if (rel->rd_isnailed) : nailed_rels++; 0.00 : 76b77f: 41 80 7e 21 01 cmpb $0x1,0x21(%r14) 0.00 : 76b784: 83 9d b0 fb ff ff ff sbbl $0xffffffff,-0x450(%rbp) : /* : * Reset transient-state fields in the relcache entry : */ : rel->rd_smgr = NULL; : if (rel->rd_isnailed) : rel->rd_refcnt = 1; 0.00 : 76b78b: 31 c0 xor %eax,%eax 0.00 : 76b78d: 41 80 7e 21 00 cmpb $0x0,0x21(%r14) : * format is complex and subject to change). They must be rebuilt if : * needed by RelationCacheInitializePhase3. This is not expected to : * be a big performance hit since few system catalogs have such. Ditto : * for index expressions, predicates, exclusion info, and FDW info. : */ : rel->rd_rules = NULL; 0.00 : 76b792: 49 c7 46 50 00 00 00 movq $0x0,0x50(%r14) 0.00 : 76b799: 00 : rel->rd_rulescxt = NULL; 0.00 : 76b79a: 49 c7 46 58 00 00 00 movq $0x0,0x58(%r14) 0.00 : 76b7a1: 00 : rel->trigdesc = NULL; 0.00 : 76b7a2: 49 c7 46 60 00 00 00 movq $0x0,0x60(%r14) 0.00 : 76b7a9: 00 : /* : * Recompute lock and physical addressing info. This is needed in : * case the pg_internal.init file was copied from some other database : * by CREATE DATABASE. : */ : RelationInitLockInfo(rel); 0.00 : 76b7aa: 4c 89 f7 mov %r14,%rdi : * for index expressions, predicates, exclusion info, and FDW info. : */ : rel->rd_rules = NULL; : rel->rd_rulescxt = NULL; : rel->trigdesc = NULL; : rel->rsdesc = NULL; 0.00 : 76b7ad: 49 c7 46 68 00 00 00 movq $0x0,0x68(%r14) 0.00 : 76b7b4: 00 : rel->rd_indexprs = NIL; 0.00 : 76b7b5: 49 c7 86 f0 00 00 00 movq $0x0,0xf0(%r14) 0.00 : 76b7bc: 00 00 00 00 : rel->rd_indpred = NIL; 0.00 : 76b7c0: 49 c7 86 f8 00 00 00 movq $0x0,0xf8(%r14) 0.00 : 76b7c7: 00 00 00 00 : rel->rd_exclops = NULL; 0.00 : 76b7cb: 49 c7 86 00 01 00 00 movq $0x0,0x100(%r14) 0.00 : 76b7d2: 00 00 00 00 : /* : * Reset transient-state fields in the relcache entry : */ : rel->rd_smgr = NULL; : if (rel->rd_isnailed) : rel->rd_refcnt = 1; 0.00 : 76b7d6: 0f 95 c0 setne %al : rel->trigdesc = NULL; : rel->rsdesc = NULL; : rel->rd_indexprs = NIL; : rel->rd_indpred = NIL; : rel->rd_exclops = NULL; : rel->rd_exclprocs = NULL; 0.00 : 76b7d9: 49 c7 86 08 01 00 00 movq $0x0,0x108(%r14) 0.00 : 76b7e0: 00 00 00 00 : rel->rd_exclstrats = NULL; 0.00 : 76b7e4: 49 c7 86 10 01 00 00 movq $0x0,0x110(%r14) 0.00 : 76b7eb: 00 00 00 00 : rel->rd_fdwroutine = NULL; 0.00 : 76b7ef: 49 c7 86 28 01 00 00 movq $0x0,0x128(%r14) 0.00 : 76b7f6: 00 00 00 00 : : /* : * Reset transient-state fields in the relcache entry : */ : rel->rd_smgr = NULL; 0.00 : 76b7fa: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 76b801: 00 : if (rel->rd_isnailed) : rel->rd_refcnt = 1; 0.00 : 76b802: 41 89 46 18 mov %eax,0x18(%r14) : else : rel->rd_refcnt = 0; : rel->rd_indexvalid = 0; 0.00 : 76b806: 41 c6 46 23 00 movb $0x0,0x23(%r14) : rel->rd_indexlist = NIL; 0.00 : 76b80b: 49 c7 46 70 00 00 00 movq $0x0,0x70(%r14) 0.00 : 76b812: 00 : rel->rd_oidindex = InvalidOid; 0.00 : 76b813: 41 c7 46 78 00 00 00 movl $0x0,0x78(%r14) 0.00 : 76b81a: 00 : rel->rd_replidindex = InvalidOid; 0.00 : 76b81b: 41 c7 46 7c 00 00 00 movl $0x0,0x7c(%r14) 0.00 : 76b822: 00 : rel->rd_indexattr = NULL; 0.00 : 76b823: 49 c7 86 80 00 00 00 movq $0x0,0x80(%r14) 0.00 : 76b82a: 00 00 00 00 : rel->rd_keyattr = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4838 14.29 : 76b82e: 49 c7 86 88 00 00 00 movq $0x0,0x88(%r14) 0.00 : 76b835: 00 00 00 00 : rel->rd_idattr = NULL; 0.00 : 76b839: 49 c7 86 90 00 00 00 movq $0x0,0x90(%r14) 0.00 : 76b840: 00 00 00 00 : rel->rd_createSubid = InvalidSubTransactionId; 0.00 : 76b844: 41 c7 46 24 00 00 00 movl $0x0,0x24(%r14) 0.00 : 76b84b: 00 : rel->rd_newRelfilenodeSubid = InvalidSubTransactionId; 0.00 : 76b84c: 41 c7 46 28 00 00 00 movl $0x0,0x28(%r14) 0.00 : 76b853: 00 : rel->rd_amcache = NULL; 0.00 : 76b854: 49 c7 86 18 01 00 00 movq $0x0,0x118(%r14) 0.00 : 76b85b: 00 00 00 00 : MemSet(&rel->pgstat_info, 0, sizeof(rel->pgstat_info)); 0.00 : 76b85f: 49 c7 86 38 01 00 00 movq $0x0,0x138(%r14) 0.00 : 76b866: 00 00 00 00 : { : max_rels *= 2; : rels = (Relation *) repalloc(rels, max_rels * sizeof(Relation)); : } : : rel = rels[num_rels++] = (Relation) palloc(len); 0.00 : 76b86a: 83 85 a8 fb ff ff 01 addl $0x1,-0x458(%rbp) : /* : * Recompute lock and physical addressing info. This is needed in : * case the pg_internal.init file was copied from some other database : * by CREATE DATABASE. : */ : RelationInitLockInfo(rel); /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4850 14.29 : 76b871: e8 4a c0 f1 ff callq 6878c0 : RelationInitPhysicalAddr(rel); 0.00 : 76b876: 4c 89 f7 mov %r14,%rdi 0.00 : 76b879: e8 42 f8 ff ff callq 76b0c0 : } 0.00 : 76b87e: e9 de fc ff ff jmpq 76b561 : /* next read the access method specific field */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : if (len > 0) : { : rel->rd_options = palloc(len); 0.00 : 76b883: e8 c8 d4 02 00 callq 798d50 0.00 : 76b888: 49 89 86 98 00 00 00 mov %rax,0x98(%r14) : if (fread(rel->rd_options, 1, len, fp) != len) 0.00 : 76b88f: 48 8b 55 c0 mov -0x40(%rbp),%rdx : /* next read the access method specific field */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : if (len > 0) : { : rel->rd_options = palloc(len); 0.00 : 76b893: 48 89 c7 mov %rax,%rdi : if (fread(rel->rd_options, 1, len, fp) != len) 0.00 : 76b896: 4c 89 f9 mov %r15,%rcx 0.00 : 76b899: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b89e: e8 ed e3 cf ff callq 469c90 0.00 : 76b8a3: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76b8a7: 48 89 c2 mov %rax,%rdx 0.00 : 76b8aa: 0f 85 28 fc ff ff jne 76b4d8 : goto read_failed; : if (len != VARSIZE(rel->rd_options)) 0.00 : 76b8b0: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 76b8b7: 8b 00 mov (%rax),%eax 0.00 : 76b8b9: c1 e8 02 shr $0x2,%eax 0.00 : 76b8bc: 89 c0 mov %eax,%eax 0.00 : 76b8be: 48 39 c2 cmp %rax,%rdx 0.00 : 76b8c1: 0f 84 a1 fe ff ff je 76b768 0.00 : 76b8c7: e9 0c fc ff ff jmpq 76b4d8 0.00 : 76b8cc: 0f 1f 40 00 nopl 0x0(%rax) : /* Count nailed indexes to ensure we have 'em all */ : if (rel->rd_isnailed) : nailed_indexes++; : : /* next, read the pg_index tuple */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b8d0: 48 8d 7d c0 lea -0x40(%rbp),%rdi : int16 *indoption; : Oid *indcollation; : : /* Count nailed indexes to ensure we have 'em all */ : if (rel->rd_isnailed) : nailed_indexes++; 0.00 : 76b8d4: 41 80 7e 21 01 cmpb $0x1,0x21(%r14) : : /* next, read the pg_index tuple */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b8d9: 4c 89 f9 mov %r15,%rcx 0.00 : 76b8dc: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76b8e1: be 01 00 00 00 mov $0x1,%esi : int16 *indoption; : Oid *indcollation; : : /* Count nailed indexes to ensure we have 'em all */ : if (rel->rd_isnailed) : nailed_indexes++; 0.00 : 76b8e6: 83 9d b4 fb ff ff ff sbbl $0xffffffff,-0x44c(%rbp) : : /* next, read the pg_index tuple */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b8ed: e8 9e e3 cf ff callq 469c90 0.00 : 76b8f2: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76b8f6: 0f 85 dc fb ff ff jne 76b4d8 : goto read_failed; : : rel->rd_indextuple = (HeapTuple) palloc(len); 0.00 : 76b8fc: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 76b900: e8 4b d4 02 00 callq 798d50 0.00 : 76b905: 49 89 86 a8 00 00 00 mov %rax,0xa8(%r14) : if (fread(rel->rd_indextuple, 1, len, fp) != len) 0.00 : 76b90c: 48 8b 55 c0 mov -0x40(%rbp),%rdx : : /* next, read the pg_index tuple */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : : rel->rd_indextuple = (HeapTuple) palloc(len); 0.00 : 76b910: 48 89 c7 mov %rax,%rdi : if (fread(rel->rd_indextuple, 1, len, fp) != len) 0.00 : 76b913: 4c 89 f9 mov %r15,%rcx 0.00 : 76b916: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b91b: e8 70 e3 cf ff callq 469c90 0.00 : 76b920: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76b924: 0f 85 ae fb ff ff jne 76b4d8 : goto read_failed; : : /* Fix up internal pointers in the tuple -- see heap_copytuple */ : rel->rd_indextuple->t_data = (HeapTupleHeader) ((char *) rel->rd_indextuple + HEAPTUPLESIZE); 0.00 : 76b92a: 49 8b 96 a8 00 00 00 mov 0xa8(%r14),%rdx : rel->rd_index = (Form_pg_index) GETSTRUCT(rel->rd_indextuple); : : /* next, read the access method tuple form */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b931: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 76b935: 4c 89 f9 mov %r15,%rcx 0.00 : 76b938: be 01 00 00 00 mov $0x1,%esi : rel->rd_indextuple = (HeapTuple) palloc(len); : if (fread(rel->rd_indextuple, 1, len, fp) != len) : goto read_failed; : : /* Fix up internal pointers in the tuple -- see heap_copytuple */ : rel->rd_indextuple->t_data = (HeapTupleHeader) ((char *) rel->rd_indextuple + HEAPTUPLESIZE); 0.00 : 76b93d: 48 8d 42 18 lea 0x18(%rdx),%rax 0.00 : 76b941: 48 89 42 10 mov %rax,0x10(%rdx) : rel->rd_index = (Form_pg_index) GETSTRUCT(rel->rd_indextuple); 0.00 : 76b945: 49 8b 86 a8 00 00 00 mov 0xa8(%r14),%rax 0.00 : 76b94c: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 76b950: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 76b954: 48 01 d0 add %rdx,%rax : : /* next, read the access method tuple form */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b957: ba 08 00 00 00 mov $0x8,%edx : if (fread(rel->rd_indextuple, 1, len, fp) != len) : goto read_failed; : : /* Fix up internal pointers in the tuple -- see heap_copytuple */ : rel->rd_indextuple->t_data = (HeapTupleHeader) ((char *) rel->rd_indextuple + HEAPTUPLESIZE); : rel->rd_index = (Form_pg_index) GETSTRUCT(rel->rd_indextuple); 0.00 : 76b95c: 49 89 86 a0 00 00 00 mov %rax,0xa0(%r14) : : /* next, read the access method tuple form */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b963: e8 28 e3 cf ff callq 469c90 0.00 : 76b968: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76b96c: 0f 85 66 fb ff ff jne 76b4d8 : goto read_failed; : : am = (Form_pg_am) palloc(len); 0.00 : 76b972: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 76b976: e8 d5 d3 02 00 callq 798d50 : if (fread(am, 1, len, fp) != len) 0.00 : 76b97b: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76b97f: 4c 89 f9 mov %r15,%rcx 0.00 : 76b982: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b987: 48 89 c7 mov %rax,%rdi : : /* next, read the access method tuple form */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : : am = (Form_pg_am) palloc(len); 0.00 : 76b98a: 49 89 c5 mov %rax,%r13 : if (fread(am, 1, len, fp) != len) 0.00 : 76b98d: e8 fe e2 cf ff callq 469c90 0.00 : 76b992: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76b996: 0f 85 3c fb ff ff jne 76b4d8 : goto read_failed; : rel->rd_am = am; 0.00 : 76b99c: 4d 89 ae b0 00 00 00 mov %r13,0xb0(%r14) : : /* : * prepare index info context --- parameters should match : * RelationInitIndexAccessInfo : */ : indexcxt = AllocSetContextCreate(CacheMemoryContext, 0.00 : 76b9a3: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 76b9a7: 31 d2 xor %edx,%edx 0.00 : 76b9a9: 48 8b 3d d0 ee 44 00 mov 0x44eed0(%rip),%rdi # bba880 0.00 : 76b9b0: 41 b8 00 20 00 00 mov $0x2000,%r8d 0.00 : 76b9b6: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 76b9bb: e8 d0 c5 02 00 callq 797f90 : ALLOCSET_SMALL_INITSIZE, : ALLOCSET_SMALL_MAXSIZE); : rel->rd_indexcxt = indexcxt; : : /* next, read the vector of opfamily OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b9c0: 48 8d 7d c0 lea -0x40(%rbp),%rdi : indexcxt = AllocSetContextCreate(CacheMemoryContext, : RelationGetRelationName(rel), : ALLOCSET_SMALL_MINSIZE, : ALLOCSET_SMALL_INITSIZE, : ALLOCSET_SMALL_MAXSIZE); : rel->rd_indexcxt = indexcxt; 0.00 : 76b9c4: 49 89 86 b8 00 00 00 mov %rax,0xb8(%r14) : : /* next, read the vector of opfamily OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b9cb: 4c 89 f9 mov %r15,%rcx 0.00 : 76b9ce: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76b9d3: be 01 00 00 00 mov $0x1,%esi : : /* : * prepare index info context --- parameters should match : * RelationInitIndexAccessInfo : */ : indexcxt = AllocSetContextCreate(CacheMemoryContext, 0.00 : 76b9d8: 49 89 c4 mov %rax,%r12 : ALLOCSET_SMALL_INITSIZE, : ALLOCSET_SMALL_MAXSIZE); : rel->rd_indexcxt = indexcxt; : : /* next, read the vector of opfamily OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76b9db: e8 b0 e2 cf ff callq 469c90 0.00 : 76b9e0: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76b9e4: 0f 85 ee fa ff ff jne 76b4d8 : goto read_failed; : : opfamily = (Oid *) MemoryContextAlloc(indexcxt, len); 0.00 : 76b9ea: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 76b9ee: 4c 89 e7 mov %r12,%rdi 0.00 : 76b9f1: e8 9a d4 02 00 callq 798e90 : if (fread(opfamily, 1, len, fp) != len) 0.00 : 76b9f6: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76b9fa: 4c 89 f9 mov %r15,%rcx 0.00 : 76b9fd: be 01 00 00 00 mov $0x1,%esi 0.00 : 76ba02: 48 89 c7 mov %rax,%rdi : : /* next, read the vector of opfamily OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : : opfamily = (Oid *) MemoryContextAlloc(indexcxt, len); 0.00 : 76ba05: 48 89 c3 mov %rax,%rbx : if (fread(opfamily, 1, len, fp) != len) 0.00 : 76ba08: e8 83 e2 cf ff callq 469c90 0.00 : 76ba0d: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76ba11: 0f 85 c1 fa ff ff jne 76b4d8 : goto read_failed; : : rel->rd_opfamily = opfamily; : : /* next, read the vector of opcintype OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76ba17: 48 8d 7d c0 lea -0x40(%rbp),%rdi : : opfamily = (Oid *) MemoryContextAlloc(indexcxt, len); : if (fread(opfamily, 1, len, fp) != len) : goto read_failed; : : rel->rd_opfamily = opfamily; 0.00 : 76ba1b: 49 89 9e c8 00 00 00 mov %rbx,0xc8(%r14) : : /* next, read the vector of opcintype OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76ba22: 4c 89 f9 mov %r15,%rcx 0.00 : 76ba25: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76ba2a: be 01 00 00 00 mov $0x1,%esi 0.00 : 76ba2f: e8 5c e2 cf ff callq 469c90 0.00 : 76ba34: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76ba38: 0f 85 9a fa ff ff jne 76b4d8 : goto read_failed; : : opcintype = (Oid *) MemoryContextAlloc(indexcxt, len); 0.00 : 76ba3e: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 76ba42: 4c 89 e7 mov %r12,%rdi 0.00 : 76ba45: e8 46 d4 02 00 callq 798e90 : if (fread(opcintype, 1, len, fp) != len) 0.00 : 76ba4a: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76ba4e: 4c 89 f9 mov %r15,%rcx 0.00 : 76ba51: be 01 00 00 00 mov $0x1,%esi 0.00 : 76ba56: 48 89 c7 mov %rax,%rdi : : /* next, read the vector of opcintype OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : : opcintype = (Oid *) MemoryContextAlloc(indexcxt, len); 0.00 : 76ba59: 48 89 c3 mov %rax,%rbx : if (fread(opcintype, 1, len, fp) != len) 0.00 : 76ba5c: e8 2f e2 cf ff callq 469c90 0.00 : 76ba61: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76ba65: 0f 85 6d fa ff ff jne 76b4d8 : goto read_failed; : : rel->rd_opcintype = opcintype; : : /* next, read the vector of support procedure OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76ba6b: 48 8d 7d c0 lea -0x40(%rbp),%rdi : : opcintype = (Oid *) MemoryContextAlloc(indexcxt, len); : if (fread(opcintype, 1, len, fp) != len) : goto read_failed; : : rel->rd_opcintype = opcintype; /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4750 14.29 : 76ba6f: 49 89 9e d0 00 00 00 mov %rbx,0xd0(%r14) : : /* next, read the vector of support procedure OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76ba76: 4c 89 f9 mov %r15,%rcx 0.00 : 76ba79: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76ba7e: be 01 00 00 00 mov $0x1,%esi 0.00 : 76ba83: e8 08 e2 cf ff callq 469c90 0.00 : 76ba88: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76ba8c: 0f 85 46 fa ff ff jne 76b4d8 : goto read_failed; : support = (RegProcedure *) MemoryContextAlloc(indexcxt, len); 0.00 : 76ba92: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 76ba96: 4c 89 e7 mov %r12,%rdi 0.00 : 76ba99: e8 f2 d3 02 00 callq 798e90 : if (fread(support, 1, len, fp) != len) 0.00 : 76ba9e: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76baa2: 4c 89 f9 mov %r15,%rcx 0.00 : 76baa5: be 01 00 00 00 mov $0x1,%esi 0.00 : 76baaa: 48 89 c7 mov %rax,%rdi : rel->rd_opcintype = opcintype; : : /* next, read the vector of support procedure OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : support = (RegProcedure *) MemoryContextAlloc(indexcxt, len); 0.00 : 76baad: 48 89 c3 mov %rax,%rbx : if (fread(support, 1, len, fp) != len) 0.00 : 76bab0: e8 db e1 cf ff callq 469c90 0.00 : 76bab5: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76bab9: 0f 85 19 fa ff ff jne 76b4d8 : goto read_failed; : : rel->rd_support = support; : : /* next, read the vector of collation OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76babf: 48 8d 7d c0 lea -0x40(%rbp),%rdi : goto read_failed; : support = (RegProcedure *) MemoryContextAlloc(indexcxt, len); : if (fread(support, 1, len, fp) != len) : goto read_failed; : : rel->rd_support = support; 0.00 : 76bac3: 49 89 9e d8 00 00 00 mov %rbx,0xd8(%r14) : : /* next, read the vector of collation OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76baca: 4c 89 f9 mov %r15,%rcx 0.00 : 76bacd: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76bad2: be 01 00 00 00 mov $0x1,%esi 0.00 : 76bad7: e8 b4 e1 cf ff callq 469c90 0.00 : 76badc: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76bae0: 0f 85 f2 f9 ff ff jne 76b4d8 : goto read_failed; : : indcollation = (Oid *) MemoryContextAlloc(indexcxt, len); 0.00 : 76bae6: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 76baea: 4c 89 e7 mov %r12,%rdi 0.00 : 76baed: e8 9e d3 02 00 callq 798e90 : if (fread(indcollation, 1, len, fp) != len) 0.00 : 76baf2: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76baf6: 4c 89 f9 mov %r15,%rcx 0.00 : 76baf9: be 01 00 00 00 mov $0x1,%esi 0.00 : 76bafe: 48 89 c7 mov %rax,%rdi : : /* next, read the vector of collation OIDs */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : : indcollation = (Oid *) MemoryContextAlloc(indexcxt, len); 0.00 : 76bb01: 48 89 c3 mov %rax,%rbx : if (fread(indcollation, 1, len, fp) != len) 0.00 : 76bb04: e8 87 e1 cf ff callq 469c90 0.00 : 76bb09: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76bb0d: 0f 85 c5 f9 ff ff jne 76b4d8 : goto read_failed; : : rel->rd_indcollation = indcollation; : : /* finally, read the vector of indoption values */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76bb13: 48 8d 7d c0 lea -0x40(%rbp),%rdi : : indcollation = (Oid *) MemoryContextAlloc(indexcxt, len); : if (fread(indcollation, 1, len, fp) != len) : goto read_failed; : : rel->rd_indcollation = indcollation; 0.00 : 76bb17: 49 89 9e 20 01 00 00 mov %rbx,0x120(%r14) : : /* finally, read the vector of indoption values */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) 0.00 : 76bb1e: 4c 89 f9 mov %r15,%rcx 0.00 : 76bb21: ba 08 00 00 00 mov $0x8,%edx 0.00 : 76bb26: be 01 00 00 00 mov $0x1,%esi 0.00 : 76bb2b: e8 60 e1 cf ff callq 469c90 0.00 : 76bb30: 48 83 f8 08 cmp $0x8,%rax 0.00 : 76bb34: 0f 85 9e f9 ff ff jne 76b4d8 : goto read_failed; : : indoption = (int16 *) MemoryContextAlloc(indexcxt, len); 0.00 : 76bb3a: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 76bb3e: 4c 89 e7 mov %r12,%rdi 0.00 : 76bb41: e8 4a d3 02 00 callq 798e90 : if (fread(indoption, 1, len, fp) != len) 0.00 : 76bb46: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 76bb4a: 4c 89 f9 mov %r15,%rcx 0.00 : 76bb4d: be 01 00 00 00 mov $0x1,%esi 0.00 : 76bb52: 48 89 c7 mov %rax,%rdi : : /* finally, read the vector of indoption values */ : if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) : goto read_failed; : : indoption = (int16 *) MemoryContextAlloc(indexcxt, len); 0.00 : 76bb55: 48 89 c3 mov %rax,%rbx : if (fread(indoption, 1, len, fp) != len) 0.00 : 76bb58: e8 33 e1 cf ff callq 469c90 0.00 : 76bb5d: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 76bb61: 0f 85 71 f9 ff ff jne 76b4d8 : goto read_failed; : : rel->rd_indoption = indoption; : : /* set up zeroed fmgr-info vectors */ : rel->rd_aminfo = (RelationAmInfo *) 0.00 : 76bb67: be b0 01 00 00 mov $0x1b0,%esi 0.00 : 76bb6c: 4c 89 e7 mov %r12,%rdi : : indoption = (int16 *) MemoryContextAlloc(indexcxt, len); : if (fread(indoption, 1, len, fp) != len) : goto read_failed; : : rel->rd_indoption = indoption; 0.00 : 76bb6f: 49 89 9e e8 00 00 00 mov %rbx,0xe8(%r14) : : /* set up zeroed fmgr-info vectors */ : rel->rd_aminfo = (RelationAmInfo *) 0.00 : 76bb76: e8 a5 d4 02 00 callq 799020 0.00 : 76bb7b: 49 89 86 c0 00 00 00 mov %rax,0xc0(%r14) : MemoryContextAllocZero(indexcxt, sizeof(RelationAmInfo)); : nsupport = relform->relnatts * am->amsupport; : rel->rd_supportinfo = (FmgrInfo *) 0.00 : 76bb82: 48 8b 8d b8 fb ff ff mov -0x448(%rbp),%rcx 0.00 : 76bb89: 4c 89 e7 mov %r12,%rdi 0.00 : 76bb8c: 41 0f bf 75 42 movswl 0x42(%r13),%esi 0.00 : 76bb91: 0f bf 41 70 movswl 0x70(%rcx),%eax 0.00 : 76bb95: 0f af f0 imul %eax,%esi 0.00 : 76bb98: 48 63 f6 movslq %esi,%rsi 0.00 : 76bb9b: 48 8d 34 76 lea (%rsi,%rsi,2),%rsi 0.00 : 76bb9f: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 76bba3: e8 78 d4 02 00 callq 799020 0.00 : 76bba8: 49 89 86 e0 00 00 00 mov %rax,0xe0(%r14) 0.00 : 76bbaf: e9 d7 fb ff ff jmpq 76b78b : } : : /* mark not-null status */ : if (has_not_null) : { : TupleConstr *constr = (TupleConstr *) palloc0(sizeof(TupleConstr)); 0.00 : 76bbb4: bf 18 00 00 00 mov $0x18,%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:4678 14.29 : 76bbb9: e8 b2 d3 02 00 callq 798f70 : : constr->has_not_null = true; 0.00 : 76bbbe: c6 40 14 01 movb $0x1,0x14(%rax) : rel->rd_att->constr = constr; 0.00 : 76bbc2: 49 8b 56 38 mov 0x38(%r14),%rdx 0.00 : 76bbc6: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 76bbca: e9 a2 fb ff ff jmpq 76b771 : : /* first read the relation descriptor length */ : nread = fread(&len, 1, sizeof(len), fp); : if (nread != sizeof(len)) : { : if (nread == 0) 0.00 : 76bbcf: 48 85 c0 test %rax,%rax 0.00 : 76bbd2: 0f 85 00 f9 ff ff jne 76b4d8 : /* : * We reached the end of the init file without apparent problem. Did we : * get the right number of nailed items? (This is a useful crosscheck in : * case the set of critical rels or indexes changes.) : */ : if (shared) 0.00 : 76bbd8: 80 bd 9f fb ff ff 00 cmpb $0x0,-0x461(%rbp) 0.00 : 76bbdf: 0f 84 23 01 00 00 je 76bd08 : { : if (nailed_rels != NUM_CRITICAL_SHARED_RELS || 0.00 : 76bbe5: 83 bd b0 fb ff ff 03 cmpl $0x3,-0x450(%rbp) 0.00 : 76bbec: 0f 85 e6 f8 ff ff jne 76b4d8 0.00 : 76bbf2: 83 bd b4 fb ff ff 05 cmpl $0x5,-0x44c(%rbp) 0.00 : 76bbf9: 0f 85 d9 f8 ff ff jne 76b4d8 : /* : * OK, all appears well. : * : * Now insert all the new relcache entries into the cache. : */ : for (relno = 0; relno < num_rels; relno++) 0.00 : 76bbff: 8b 85 a8 fb ff ff mov -0x458(%rbp),%eax 0.00 : 76bc05: 85 c0 test %eax,%eax 0.00 : 76bc07: 0f 8e cd 00 00 00 jle 76bcda 0.00 : 76bc0d: 4c 8b a5 a0 fb ff ff mov -0x460(%rbp),%r12 0.00 : 76bc14: 45 31 ed xor %r13d,%r13d 0.00 : 76bc17: eb 3b jmp 76bc54 : { : RelationCacheInsert(rels[relno], false); 0.00 : 76bc19: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 76bc1d: 49 8b 04 24 mov (%r12),%rax 0.00 : 76bc21: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 76bc25: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 76bc28: 85 c0 test %eax,%eax 0.00 : 76bc2a: 74 74 je 76bca0 0.00 : 76bc2c: 8b 05 0a cf 3f 00 mov 0x3fcf0a(%rip),%eax # b68b3c 0.00 : 76bc32: 85 c0 test %eax,%eax 0.00 : 76bc34: 75 76 jne 76bcac : /* also make a list of their OIDs, for RelationIdIsInInitFile */ : if (!shared) 0.00 : 76bc36: 80 bd 9f fb ff ff 00 cmpb $0x0,-0x461(%rbp) 0.00 : 76bc3d: 74 45 je 76bc84 : /* : * OK, all appears well. : * : * Now insert all the new relcache entries into the cache. : */ : for (relno = 0; relno < num_rels; relno++) 0.00 : 76bc3f: 41 83 c5 01 add $0x1,%r13d 0.00 : 76bc43: 49 83 c4 08 add $0x8,%r12 0.00 : 76bc47: 44 3b ad a8 fb ff ff cmp -0x458(%rbp),%r13d 0.00 : 76bc4e: 0f 8d 86 00 00 00 jge 76bcda : { : RelationCacheInsert(rels[relno], false); 0.00 : 76bc54: 49 8b 34 24 mov (%r12),%rsi 0.00 : 76bc58: 48 8b 3d c1 c8 44 00 mov 0x44c8c1(%rip),%rdi # bb8520 0.00 : 76bc5f: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 76bc63: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76bc68: 48 83 c6 40 add $0x40,%rsi 0.00 : 76bc6c: e8 2f 8a 01 00 callq 7846a0 0.00 : 76bc71: 80 7d c0 00 cmpb $0x0,-0x40(%rbp) 0.00 : 76bc75: 48 89 c2 mov %rax,%rdx 0.00 : 76bc78: 75 9f jne 76bc19 0.00 : 76bc7a: 49 8b 04 24 mov (%r12),%rax 0.00 : 76bc7e: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 76bc82: eb b2 jmp 76bc36 : /* also make a list of their OIDs, for RelationIdIsInInitFile */ : if (!shared) : initFileRelationIds = lcons_oid(RelationGetRelid(rels[relno]), 0.00 : 76bc84: 49 8b 04 24 mov (%r12),%rax 0.00 : 76bc88: 48 8b 35 59 c8 44 00 mov 0x44c859(%rip),%rsi # bb84e8 0.00 : 76bc8f: 8b 78 40 mov 0x40(%rax),%edi 0.00 : 76bc92: e8 f9 5a e7 ff callq 5e1790 0.00 : 76bc97: 48 89 05 4a c8 44 00 mov %rax,0x44c84a(%rip) # bb84e8 0.00 : 76bc9e: eb 9f jmp 76bc3f : * : * Now insert all the new relcache entries into the cache. : */ : for (relno = 0; relno < num_rels; relno++) : { : RelationCacheInsert(rels[relno], false); 0.00 : 76bca0: 31 f6 xor %esi,%esi 0.00 : 76bca2: 48 89 df mov %rbx,%rdi 0.00 : 76bca5: e8 c6 f5 ff ff callq 76b270 0.00 : 76bcaa: eb 8a jmp 76bc36 0.00 : 76bcac: ba 50 15 8d 00 mov $0x8d1550,%edx 0.00 : 76bcb1: be 0f 13 00 00 mov $0x130f,%esi 0.00 : 76bcb6: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76bcbb: e8 60 f7 00 00 callq 77b420 0.00 : 76bcc0: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 76bcc4: be 78 da 8c 00 mov $0x8cda78,%esi 0.00 : 76bcc9: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76bcce: 31 c0 xor %eax,%eax 0.00 : 76bcd0: e8 5b f5 00 00 callq 77b230 0.00 : 76bcd5: e9 5c ff ff ff jmpq 76bc36 : if (!shared) : initFileRelationIds = lcons_oid(RelationGetRelid(rels[relno]), : initFileRelationIds); : } : : pfree(rels); 0.00 : 76bcda: 48 8b bd a0 fb ff ff mov -0x460(%rbp),%rdi 0.00 : 76bce1: e8 9a ce 02 00 callq 798b80 : FreeFile(fp); 0.00 : 76bce6: 4c 89 ff mov %r15,%rdi 0.00 : 76bce9: e8 62 c9 f0 ff callq 678650 : : if (shared) 0.00 : 76bcee: 80 bd 9f fb ff ff 00 cmpb $0x0,-0x461(%rbp) 0.00 : 76bcf5: 74 39 je 76bd30 : criticalSharedRelcachesBuilt = true; 0.00 : 76bcf7: c6 05 e3 c7 44 00 01 movb $0x1,0x44c7e3(%rip) # bb84e1 0.00 : 76bcfe: b8 01 00 00 00 mov $0x1,%eax 0.00 : 76bd03: e9 e6 f7 ff ff jmpq 76b4ee : nailed_indexes != NUM_CRITICAL_SHARED_INDEXES) : goto read_failed; : } : else : { : if (nailed_rels != NUM_CRITICAL_LOCAL_RELS || 0.00 : 76bd08: 83 bd b0 fb ff ff 04 cmpl $0x4,-0x450(%rbp) 0.00 : 76bd0f: 0f 85 c3 f7 ff ff jne 76b4d8 0.00 : 76bd15: 83 bd b4 fb ff ff 07 cmpl $0x7,-0x44c(%rbp) 0.00 : 76bd1c: 0f 85 b6 f7 ff ff jne 76b4d8 0.00 : 76bd22: e9 d8 fe ff ff jmpq 76bbff 0.00 : 76bd27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 76bd2e: 00 00 : FreeFile(fp); : : if (shared) : criticalSharedRelcachesBuilt = true; : else : criticalRelcachesBuilt = true; 0.00 : 76bd30: c6 05 a9 c7 44 00 01 movb $0x1,0x44c7a9(%rip) # bb84e0 0.00 : 76bd37: b8 01 00 00 00 mov $0x1,%eax 0.00 : 76bd3c: e9 ad f7 ff ff jmpq 76b4ee Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:118 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:182 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:121 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:115 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:115 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:118 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:120 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077f940 : : * but is set to true when we need to avoid recursion. : */ : static void : fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, : bool ignore_security) : { 0.00 : 77f940: 55 push %rbp 0.00 : 77f941: 48 89 e5 mov %rsp,%rbp 0.00 : 77f944: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:182 11.11 : 77f946: 41 56 push %r14 0.00 : 77f948: 49 89 f6 mov %rsi,%r14 0.00 : 77f94b: 41 55 push %r13 0.00 : 77f94d: 41 89 fd mov %edi,%r13d 0.00 : 77f950: 41 54 push %r12 0.00 : 77f952: 41 89 cc mov %ecx,%r12d 0.00 : 77f955: 53 push %rbx 0.00 : 77f956: 48 81 ec b8 00 00 00 sub $0xb8,%rsp : : static const FmgrBuiltin * : fmgr_isbuiltin(Oid id) : { : int low = 0; : int high = fmgr_nbuiltins - 1; 0.00 : 77f95d: 44 8b 3d 7c fc 17 00 mov 0x17fc7c(%rip),%r15d # 8ff5e0 : /* : * fn_oid *must* be filled in last. Some code assumes that if fn_oid is : * valid, the whole struct is valid. Some FmgrInfo struct's do survive : * elogs. : */ : finfo->fn_oid = InvalidOid; 0.00 : 77f964: c7 46 08 00 00 00 00 movl $0x0,0x8(%rsi) : finfo->fn_extra = NULL; 0.00 : 77f96b: 48 c7 46 18 00 00 00 movq $0x0,0x18(%rsi) 0.00 : 77f972: 00 : finfo->fn_mcxt = mcxt; 0.00 : 77f973: 48 89 56 20 mov %rdx,0x20(%rsi) : finfo->fn_expr = NULL; /* caller may set this later */ 0.00 : 77f977: 48 c7 46 28 00 00 00 movq $0x0,0x28(%rsi) 0.00 : 77f97e: 00 : : /* : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) 0.00 : 77f97f: 44 89 fe mov %r15d,%esi 0.00 : 77f982: 83 ee 01 sub $0x1,%esi 0.00 : 77f985: 78 66 js 77f9ed : { : int i = (high + low) / 2; 0.00 : 77f987: 89 f2 mov %esi,%edx : const FmgrBuiltin *ptr = &fmgr_builtins[i]; : : if (id == ptr->foid) 0.00 : 77f989: 31 c9 xor %ecx,%ecx : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) : { : int i = (high + low) / 2; 0.00 : 77f98b: d1 fa sar %edx : const FmgrBuiltin *ptr = &fmgr_builtins[i]; 0.00 : 77f98d: 48 63 c2 movslq %edx,%rax 0.00 : 77f990: 48 c1 e0 05 shl $0x5,%rax 0.00 : 77f994: 48 8d b8 c0 b6 8e 00 lea 0x8eb6c0(%rax),%rdi : : if (id == ptr->foid) 0.00 : 77f99b: 8b 80 c0 b6 8e 00 mov 0x8eb6c0(%rax),%eax 0.00 : 77f9a1: 41 39 c5 cmp %eax,%r13d 0.00 : 77f9a4: 75 3b jne 77f9e1 0.00 : 77f9a6: e9 ed 00 00 00 jmpq 77fa98 0.00 : 77f9ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return ptr; : else if (id > ptr->foid) : low = i + 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:121 11.11 : 77f9b0: 8d 4a 01 lea 0x1(%rdx),%ecx : : /* : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) 0.00 : 77f9b3: 39 f1 cmp %esi,%ecx 0.00 : 77f9b5: 7f 36 jg 77f9ed : { : int i = (high + low) / 2; 0.00 : 77f9b7: 8d 14 0e lea (%rsi,%rcx,1),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:115 11.11 : 77f9ba: 89 d0 mov %edx,%eax 11.11 : 77f9bc: c1 e8 1f shr $0x1f,%eax 0.00 : 77f9bf: 8d 14 10 lea (%rax,%rdx,1),%edx 0.00 : 77f9c2: d1 fa sar %edx : const FmgrBuiltin *ptr = &fmgr_builtins[i]; 0.00 : 77f9c4: 48 63 c2 movslq %edx,%rax 0.00 : 77f9c7: 48 c1 e0 05 shl $0x5,%rax 0.00 : 77f9cb: 48 8d b8 c0 b6 8e 00 lea 0x8eb6c0(%rax),%rdi : : if (id == ptr->foid) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:118 11.11 : 77f9d2: 8b 80 c0 b6 8e 00 mov 0x8eb6c0(%rax),%eax 33.33 : 77f9d8: 41 39 c5 cmp %eax,%r13d 0.00 : 77f9db: 0f 84 b7 00 00 00 je 77fa98 : return ptr; : else if (id > ptr->foid) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:120 11.11 : 77f9e1: 41 39 c5 cmp %eax,%r13d 0.00 : 77f9e4: 77 ca ja 77f9b0 : low = i + 1; : else : high = i - 1; 0.00 : 77f9e6: 8d 72 ff lea -0x1(%rdx),%esi : : /* : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) 0.00 : 77f9e9: 39 f1 cmp %esi,%ecx 0.00 : 77f9eb: 7e ca jle 77f9b7 : finfo->fn_oid = functionId; : return; : } : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); 0.00 : 77f9ed: 45 31 c0 xor %r8d,%r8d 0.00 : 77f9f0: 31 c9 xor %ecx,%ecx 0.00 : 77f9f2: 31 d2 xor %edx,%edx 0.00 : 77f9f4: 44 89 ee mov %r13d,%esi 0.00 : 77f9f7: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77f9fc: e8 bf 22 ff ff callq 771cc0 : if ( !HeapTupleIsValid(procedureTuple)) 0.00 : 77fa01: 48 85 c0 test %rax,%rax : finfo->fn_oid = functionId; : return; : } : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); 0.00 : 77fa04: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : if ( !HeapTupleIsValid(procedureTuple)) 0.00 : 77fa0b: 0f 84 54 04 00 00 je 77fe65 : elog(ERROR, "cache lookup failed for function %u", functionId); : procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fa11: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax : * inside fmgr_security_definer. This loses the ability to charge the : * overhead of fmgr_security_definer to the function, but gains the : * ability to set the track_functions GUC as a local GUC parameter of an : * interesting function and have the right things happen. : */ : if (!ignore_security && 0.00 : 77fa18: 45 84 e4 test %r12b,%r12b : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); : if ( !HeapTupleIsValid(procedureTuple)) : elog(ERROR, "cache lookup failed for function %u", functionId); : procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fa1b: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 77fa1f: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 77fa23: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : : finfo->fn_nargs = procedureStruct->pronargs; 0.00 : 77fa27: 0f b7 43 64 movzwl 0x64(%rbx),%eax 0.00 : 77fa2b: 66 41 89 46 0c mov %ax,0xc(%r14) : finfo->fn_strict = procedureStruct->proisstrict; 0.00 : 77fa30: 0f b6 43 60 movzbl 0x60(%rbx),%eax 0.00 : 77fa34: 41 88 46 0e mov %al,0xe(%r14) : finfo->fn_retset = procedureStruct->proretset; 0.00 : 77fa38: 0f b6 43 61 movzbl 0x61(%rbx),%eax 0.00 : 77fa3c: 41 88 46 0f mov %al,0xf(%r14) : * inside fmgr_security_definer. This loses the ability to charge the : * overhead of fmgr_security_definer to the function, but gains the : * ability to set the track_functions GUC as a local GUC parameter of an : * interesting function and have the right things happen. : */ : if (!ignore_security && 0.00 : 77fa40: 0f 85 8d 00 00 00 jne 77fad3 0.00 : 77fa46: 80 7b 5e 00 cmpb $0x0,0x5e(%rbx) 0.00 : 77fa4a: 75 2a jne 77fa76 0.00 : 77fa4c: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi 0.00 : 77fa53: be 1a 00 00 00 mov $0x1a,%esi 0.00 : 77fa58: e8 43 f3 ce ff callq 46eda0 0.00 : 77fa5d: 84 c0 test %al,%al 0.00 : 77fa5f: 74 15 je 77fa76 0.00 : 77fa61: 48 8b 05 20 a1 43 00 mov 0x43a120(%rip),%rax # bb9b88 0.00 : 77fa68: 48 85 c0 test %rax,%rax 0.00 : 77fa6b: 74 66 je 77fad3 0.00 : 77fa6d: 44 89 ef mov %r13d,%edi 0.00 : 77fa70: ff d0 callq *%rax 0.00 : 77fa72: 84 c0 test %al,%al 0.00 : 77fa74: 74 5d je 77fad3 : FmgrHookIsNeeded(functionId))) : { : finfo->fn_addr = fmgr_security_definer; : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); 0.00 : 77fa76: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi : if (!ignore_security && : (procedureStruct->prosecdef || : !heap_attisnull(procedureTuple, Anum_pg_proc_proconfig) || : FmgrHookIsNeeded(functionId))) : { : finfo->fn_addr = fmgr_security_definer; 0.00 : 77fa7d: 49 c7 06 b0 0d 78 00 movq $0x780db0,(%r14) : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ 0.00 : 77fa84: 41 c6 46 10 02 movb $0x2,0x10(%r14) : finfo->fn_oid = functionId; 0.00 : 77fa89: 45 89 6e 08 mov %r13d,0x8(%r14) : ReleaseSysCache(procedureTuple); 0.00 : 77fa8d: e8 1e 22 ff ff callq 771cb0 : break; : } : : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); : } 0.00 : 77fa92: eb 2d jmp 77fac1 0.00 : 77fa94: 0f 1f 40 00 nopl 0x0(%rax) : if ((fbp = fmgr_isbuiltin(functionId)) != NULL) : { : /* : * Fast path for builtin functions: don't bother consulting pg_proc : */ : finfo->fn_nargs = fbp->nargs; 0.00 : 77fa98: 0f b7 47 10 movzwl 0x10(%rdi),%eax 0.00 : 77fa9c: 66 41 89 46 0c mov %ax,0xc(%r14) : finfo->fn_strict = fbp->strict; 0.00 : 77faa1: 0f b6 47 12 movzbl 0x12(%rdi),%eax 0.00 : 77faa5: 41 88 46 0e mov %al,0xe(%r14) : finfo->fn_retset = fbp->retset; 0.00 : 77faa9: 0f b6 47 13 movzbl 0x13(%rdi),%eax : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ 0.00 : 77faad: 41 c6 46 10 02 movb $0x2,0x10(%r14) : /* : * Fast path for builtin functions: don't bother consulting pg_proc : */ : finfo->fn_nargs = fbp->nargs; : finfo->fn_strict = fbp->strict; : finfo->fn_retset = fbp->retset; 0.00 : 77fab2: 41 88 46 0f mov %al,0xf(%r14) : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : finfo->fn_addr = fbp->func; 0.00 : 77fab6: 48 8b 47 18 mov 0x18(%rdi),%rax : finfo->fn_oid = functionId; 0.00 : 77faba: 45 89 6e 08 mov %r13d,0x8(%r14) : */ : finfo->fn_nargs = fbp->nargs; : finfo->fn_strict = fbp->strict; : finfo->fn_retset = fbp->retset; : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : finfo->fn_addr = fbp->func; 0.00 : 77fabe: 49 89 06 mov %rax,(%r14) : break; : } : : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); : } 0.00 : 77fac1: 48 81 c4 b8 00 00 00 add $0xb8,%rsp 0.00 : 77fac8: 5b pop %rbx 0.00 : 77fac9: 41 5c pop %r12 0.00 : 77facb: 41 5d pop %r13 0.00 : 77facd: 41 5e pop %r14 0.00 : 77facf: 41 5f pop %r15 0.00 : 77fad1: c9 leaveq 0.00 : 77fad2: c3 retq : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); : return; : } : : switch (procedureStruct->prolang) 0.00 : 77fad3: 8b 43 48 mov 0x48(%rbx),%eax 0.00 : 77fad6: 83 f8 0d cmp $0xd,%eax 0.00 : 77fad9: 0f 84 a4 00 00 00 je 77fb83 0.00 : 77fadf: 83 f8 0e cmp $0xe,%eax 0.00 : 77fae2: 0f 84 38 03 00 00 je 77fe20 0.00 : 77fae8: 83 f8 0c cmp $0xc,%eax 0.00 : 77faeb: 0f 84 8d 02 00 00 je 77fd7e : * that finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77faf1: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx : Oid language = procedureStruct->prolang; : HeapTuple languageTuple; : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); 0.00 : 77faf8: 45 31 c0 xor %r8d,%r8d 0.00 : 77fafb: 31 c9 xor %ecx,%ecx 0.00 : 77fafd: bf 22 00 00 00 mov $0x22,%edi : * that finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fb02: 48 8b 42 10 mov 0x10(%rdx),%rax : Oid language = procedureStruct->prolang; 0.00 : 77fb06: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 77fb0a: 44 8b 64 10 48 mov 0x48(%rax,%rdx,1),%r12d : HeapTuple languageTuple; : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); 0.00 : 77fb0f: 31 d2 xor %edx,%edx 0.00 : 77fb11: 44 89 e6 mov %r12d,%esi 0.00 : 77fb14: e8 a7 21 ff ff callq 771cc0 : if (!HeapTupleIsValid(languageTuple)) 0.00 : 77fb19: 48 85 c0 test %rax,%rax : Oid language = procedureStruct->prolang; : HeapTuple languageTuple; : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); 0.00 : 77fb1c: 48 89 c3 mov %rax,%rbx : if (!HeapTupleIsValid(languageTuple)) 0.00 : 77fb1f: 0f 84 f1 04 00 00 je 780016 : elog(ERROR, "cache lookup failed for language %u", language); : languageStruct = (Form_pg_language) GETSTRUCT(languageTuple); 0.00 : 77fb25: 48 8b 50 10 mov 0x10(%rax),%rdx : /* : * Look up the language's call handler function, ignoring any attributes : * that would normally cause insertion of fmgr_security_definer. We need : * to get back a bare pointer to the actual C-language function. : */ : fmgr_info_cxt_security(languageStruct->lanplcallfoid, &plfinfo, 0.00 : 77fb29: 48 8d b5 50 ff ff ff lea -0xb0(%rbp),%rsi 0.00 : 77fb30: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 77fb35: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 77fb39: 8b 7c 02 48 mov 0x48(%rdx,%rax,1),%edi 0.00 : 77fb3d: 48 8b 15 1c ad 43 00 mov 0x43ad1c(%rip),%rdx # bba860 0.00 : 77fb44: e8 f7 fd ff ff callq 77f940 : /* : * If lookup of the PL handler function produced nonnull fn_extra, : * complain --- it must be an oldstyle function! We no longer support : * oldstyle PL handlers. : */ : if (plfinfo.fn_extra != NULL) 0.00 : 77fb49: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : 77fb50: 00 : * that would normally cause insertion of fmgr_security_definer. We need : * to get back a bare pointer to the actual C-language function. : */ : fmgr_info_cxt_security(languageStruct->lanplcallfoid, &plfinfo, : CurrentMemoryContext, true); : finfo->fn_addr = plfinfo.fn_addr; 0.00 : 77fb51: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 77fb58: 49 89 06 mov %rax,(%r14) : /* : * If lookup of the PL handler function produced nonnull fn_extra, : * complain --- it must be an oldstyle function! We no longer support : * oldstyle PL handlers. : */ : if (plfinfo.fn_extra != NULL) 0.00 : 77fb5b: 0f 85 88 04 00 00 jne 77ffe9 : elog(ERROR, "language %u has old-style handler", language); : : ReleaseSysCache(languageTuple); 0.00 : 77fb61: 48 89 df mov %rbx,%rdi 0.00 : 77fb64: e8 47 21 ff ff callq 771cb0 : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ : break; : : default: : fmgr_info_other_lang(functionId, finfo, procedureTuple); : finfo->fn_stats = TRACK_FUNC_OFF; /* ie, track if not OFF */ 0.00 : 77fb69: 41 c6 46 10 00 movb $0x0,0x10(%r14) : break; : } : : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); 0.00 : 77fb6e: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi : fmgr_info_other_lang(functionId, finfo, procedureTuple); : finfo->fn_stats = TRACK_FUNC_OFF; /* ie, track if not OFF */ : break; : } : : finfo->fn_oid = functionId; 0.00 : 77fb75: 45 89 6e 08 mov %r13d,0x8(%r14) : ReleaseSysCache(procedureTuple); 0.00 : 77fb79: e8 32 21 ff ff callq 771cb0 0.00 : 77fb7e: e9 3e ff ff ff jmpq 77fac1 : * finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fb83: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx : * If an entry exists and is up to date, return it; else return NULL : */ : static CFuncHashTabEntry * : lookup_C_func(HeapTuple procedureTuple) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fb8a: 31 c0 xor %eax,%eax : * finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fb8c: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 77fb90: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) 0.00 : 77fb97: 0f b6 4a 16 movzbl 0x16(%rdx),%ecx 0.00 : 77fb9b: 48 89 8d 40 ff ff ff mov %rcx,-0xc0(%rbp) : * If an entry exists and is up to date, return it; else return NULL : */ : static CFuncHashTabEntry * : lookup_C_func(HeapTuple procedureTuple) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fba2: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 77fba6: 74 12 je 77fbba 0.00 : 77fba8: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 77fbaf: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 77fbb6: 8b 44 11 fc mov -0x4(%rcx,%rdx,1),%eax : CFuncHashTabEntry *entry; : : if (CFuncHash == NULL) 0.00 : 77fbba: 48 8b 3d d7 9f 43 00 mov 0x439fd7(%rip),%rdi # bb9b98 : * If an entry exists and is up to date, return it; else return NULL : */ : static CFuncHashTabEntry * : lookup_C_func(HeapTuple procedureTuple) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fbc1: 89 45 c8 mov %eax,-0x38(%rbp) : CFuncHashTabEntry *entry; : : if (CFuncHash == NULL) 0.00 : 77fbc4: 48 85 ff test %rdi,%rdi 0.00 : 77fbc7: 74 2b je 77fbf4 : return NULL; /* no table yet */ : entry = (CFuncHashTabEntry *) 0.00 : 77fbc9: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 77fbcd: 31 c9 xor %ecx,%ecx 0.00 : 77fbcf: 31 d2 xor %edx,%edx 0.00 : 77fbd1: e8 ca 4a 00 00 callq 7846a0 : hash_search(CFuncHash, : &fn_oid, : HASH_FIND, : NULL); : if (entry == NULL) 0.00 : 77fbd6: 48 85 c0 test %rax,%rax : Oid fn_oid = HeapTupleGetOid(procedureTuple); : CFuncHashTabEntry *entry; : : if (CFuncHash == NULL) : return NULL; /* no table yet */ : entry = (CFuncHashTabEntry *) 0.00 : 77fbd9: 48 89 c3 mov %rax,%rbx : hash_search(CFuncHash, : &fn_oid, : HASH_FIND, : NULL); : if (entry == NULL) 0.00 : 77fbdc: 74 16 je 77fbf4 : return NULL; /* no such entry */ : if (entry->fn_xmin == HeapTupleHeaderGetRawXmin(procedureTuple->t_data) && 0.00 : 77fbde: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 77fbe5: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 77fbe9: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 77fbec: 3b 02 cmp (%rdx),%eax 0.00 : 77fbee: 0f 84 9e 02 00 00 je 77fe92 : /* : * Get prosrc and probin strings (link symbol and library filename). : * While in general these columns might be null, that's not allowed : * for C-language functions. : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fbf4: 48 8d 5d ce lea -0x32(%rbp),%rbx 0.00 : 77fbf8: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fbff: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77fc04: ba 18 00 00 00 mov $0x18,%edx 0.00 : 77fc09: 48 89 d9 mov %rbx,%rcx 0.00 : 77fc0c: e8 7f 1e ff ff callq 771a90 : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fc11: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) : /* : * Get prosrc and probin strings (link symbol and library filename). : * While in general these columns might be null, that's not allowed : * for C-language functions. : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc15: 48 89 c7 mov %rax,%rdi : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fc18: 0f 85 28 03 00 00 jne 77ff46 : elog(ERROR, "null prosrc for C function %u", functionId); : prosrcstring = TextDatumGetCString(prosrcattr); 0.00 : 77fc1e: e8 8d a5 fd ff callq 75a1b0 : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc23: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fc2a: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77fc2f: 48 89 d9 mov %rbx,%rcx 0.00 : 77fc32: ba 19 00 00 00 mov $0x19,%edx : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc for C function %u", functionId); : prosrcstring = TextDatumGetCString(prosrcattr); 0.00 : 77fc37: 49 89 c7 mov %rax,%r15 : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc3a: e8 51 1e ff ff callq 771a90 : Anum_pg_proc_probin, &isnull); : if (isnull) 0.00 : 77fc3f: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc for C function %u", functionId); : prosrcstring = TextDatumGetCString(prosrcattr); : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc43: 48 89 c7 mov %rax,%rdi : Anum_pg_proc_probin, &isnull); : if (isnull) 0.00 : 77fc46: 0f 85 cd 02 00 00 jne 77ff19 : elog(ERROR, "null probin for C function %u", functionId); : probinstring = TextDatumGetCString(probinattr); 0.00 : 77fc4c: e8 5f a5 fd ff callq 75a1b0 : : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, 0.00 : 77fc51: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 77fc55: ba 01 00 00 00 mov $0x1,%edx 0.00 : 77fc5a: 4c 89 fe mov %r15,%rsi 0.00 : 77fc5d: 48 89 c7 mov %rax,%rdi : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_probin, &isnull); : if (isnull) : elog(ERROR, "null probin for C function %u", functionId); : probinstring = TextDatumGetCString(probinattr); 0.00 : 77fc60: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, 0.00 : 77fc67: e8 64 dc ff ff callq 77d8d0 : &libraryhandle); : : /* Get the function information record (real or default) */ : inforec = fetch_finfo_record(libraryhandle, prosrcstring); 0.00 : 77fc6c: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 77fc70: 4c 89 fe mov %r15,%rsi : if (isnull) : elog(ERROR, "null probin for C function %u", functionId); : probinstring = TextDatumGetCString(probinattr); : : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, 0.00 : 77fc73: 49 89 c4 mov %rax,%r12 : &libraryhandle); : : /* Get the function information record (real or default) */ : inforec = fetch_finfo_record(libraryhandle, prosrcstring); 0.00 : 77fc76: e8 e5 fb ff ff callq 77f860 : */ : static void : record_C_func(HeapTuple procedureTuple, : PGFunction user_fn, const Pg_finfo_record *inforec) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fc7b: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, : &libraryhandle); : : /* Get the function information record (real or default) */ : inforec = fetch_finfo_record(libraryhandle, prosrcstring); 0.00 : 77fc82: 48 89 c3 mov %rax,%rbx : */ : static void : record_C_func(HeapTuple procedureTuple, : PGFunction user_fn, const Pg_finfo_record *inforec) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fc85: 31 c0 xor %eax,%eax 0.00 : 77fc87: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 77fc8b: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 77fc8f: 74 08 je 77fc99 0.00 : 77fc91: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 77fc95: 8b 44 02 fc mov -0x4(%rdx,%rax,1),%eax : CFuncHashTabEntry *entry; : bool found; : : /* Create the hash table if it doesn't exist yet */ : if (CFuncHash == NULL) 0.00 : 77fc99: 48 83 3d f7 9e 43 00 cmpq $0x0,0x439ef7(%rip) # bb9b98 0.00 : 77fca0: 00 : */ : static void : record_C_func(HeapTuple procedureTuple, : PGFunction user_fn, const Pg_finfo_record *inforec) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fca1: 89 45 c8 mov %eax,-0x38(%rbp) : CFuncHashTabEntry *entry; : bool found; : : /* Create the hash table if it doesn't exist yet */ : if (CFuncHash == NULL) 0.00 : 77fca4: 0f 84 11 02 00 00 je 77febb : 100, : &hash_ctl, : HASH_ELEM | HASH_FUNCTION); : } : : entry = (CFuncHashTabEntry *) 0.00 : 77fcaa: 48 8b 3d e7 9e 43 00 mov 0x439ee7(%rip),%rdi # bb9b98 0.00 : 77fcb1: 48 8d 4d cd lea -0x33(%rbp),%rcx 0.00 : 77fcb5: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 77fcb9: ba 01 00 00 00 mov $0x1,%edx 0.00 : 77fcbe: e8 dd 49 00 00 callq 7846a0 : hash_search(CFuncHash, : &fn_oid, : HASH_ENTER, : &found); : /* OID is already filled in */ : entry->fn_xmin = HeapTupleHeaderGetRawXmin(procedureTuple->t_data); 0.00 : 77fcc3: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx : inforec = fetch_finfo_record(libraryhandle, prosrcstring); : : /* Cache the addresses for later calls */ : record_C_func(procedureTuple, user_fn, inforec); : : pfree(prosrcstring); 0.00 : 77fcca: 4c 89 ff mov %r15,%rdi : hash_search(CFuncHash, : &fn_oid, : HASH_ENTER, : &found); : /* OID is already filled in */ : entry->fn_xmin = HeapTupleHeaderGetRawXmin(procedureTuple->t_data); 0.00 : 77fccd: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 77fcd1: 8b 12 mov (%rdx),%edx 0.00 : 77fcd3: 89 50 04 mov %edx,0x4(%rax) : entry->fn_tid = procedureTuple->t_self; 0.00 : 77fcd6: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 77fcd9: 89 50 08 mov %edx,0x8(%rax) 0.00 : 77fcdc: 0f b7 51 08 movzwl 0x8(%rcx),%edx : entry->user_fn = user_fn; 0.00 : 77fce0: 4c 89 60 10 mov %r12,0x10(%rax) : entry->inforec = inforec; 0.00 : 77fce4: 48 89 58 18 mov %rbx,0x18(%rax) : &fn_oid, : HASH_ENTER, : &found); : /* OID is already filled in */ : entry->fn_xmin = HeapTupleHeaderGetRawXmin(procedureTuple->t_data); : entry->fn_tid = procedureTuple->t_self; 0.00 : 77fce8: 66 89 50 0c mov %dx,0xc(%rax) : inforec = fetch_finfo_record(libraryhandle, prosrcstring); : : /* Cache the addresses for later calls */ : record_C_func(procedureTuple, user_fn, inforec); : : pfree(prosrcstring); 0.00 : 77fcec: e8 8f 8e 01 00 callq 798b80 : pfree(probinstring); 0.00 : 77fcf1: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 77fcf8: e8 83 8e 01 00 callq 798b80 : } : : switch (inforec->api_version) 0.00 : 77fcfd: 8b 03 mov (%rbx),%eax 0.00 : 77fcff: 85 c0 test %eax,%eax 0.00 : 77fd01: 0f 85 25 01 00 00 jne 77fe2c : * finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fd07: 4c 8b bd 48 ff ff ff mov -0xb8(%rbp),%r15 0.00 : 77fd0e: 4c 03 bd 40 ff ff ff add -0xc0(%rbp),%r15 : switch (inforec->api_version) : { : case 0: : /* Old style: need to use a handler */ : finfo->fn_addr = fmgr_oldstyle; : fnextra = (Oldstyle_fnextra *) 0.00 : 77fd15: be 70 00 00 00 mov $0x70,%esi 0.00 : 77fd1a: 49 8b 7e 20 mov 0x20(%r14),%rdi : : switch (inforec->api_version) : { : case 0: : /* Old style: need to use a handler */ : finfo->fn_addr = fmgr_oldstyle; 0.00 : 77fd1e: 49 c7 06 30 ed 77 00 movq $0x77ed30,(%r14) : fnextra = (Oldstyle_fnextra *) 0.00 : 77fd25: e8 f6 92 01 00 callq 799020 0.00 : 77fd2a: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) : MemoryContextAllocZero(finfo->fn_mcxt, : sizeof(Oldstyle_fnextra)); : finfo->fn_extra = (void *) fnextra; 0.00 : 77fd31: 49 89 46 18 mov %rax,0x18(%r14) : fnextra->func = (func_ptr) user_fn; 0.00 : 77fd35: 4c 89 20 mov %r12,(%rax) : for (i = 0; i < procedureStruct->pronargs; i++) 0.00 : 77fd38: 66 41 83 7f 64 00 cmpw $0x0,0x64(%r15) 0.00 : 77fd3e: 7e 34 jle 77fd74 0.00 : 77fd40: 45 31 e4 xor %r12d,%r12d 0.00 : 77fd43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : fnextra->arg_toastable[i] = 0.00 : 77fd48: 49 63 dc movslq %r12d,%rbx 0.00 : 77fd4b: 41 8b bc 9f 84 00 00 mov 0x84(%r15,%rbx,4),%edi 0.00 : 77fd52: 00 0.00 : 77fd53: e8 58 26 ff ff callq 7723b0 0.00 : 77fd58: 3c 70 cmp $0x70,%al 0.00 : 77fd5a: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 77fd61: 0f 95 44 18 08 setne 0x8(%rax,%rbx,1) : fnextra = (Oldstyle_fnextra *) : MemoryContextAllocZero(finfo->fn_mcxt, : sizeof(Oldstyle_fnextra)); : finfo->fn_extra = (void *) fnextra; : fnextra->func = (func_ptr) user_fn; : for (i = 0; i < procedureStruct->pronargs; i++) 0.00 : 77fd66: 41 0f bf 47 64 movswl 0x64(%r15),%eax 0.00 : 77fd6b: 41 83 c4 01 add $0x1,%r12d 0.00 : 77fd6f: 41 39 c4 cmp %eax,%r12d 0.00 : 77fd72: 7c d4 jl 77fd48 : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ : break; : : case SQLlanguageId: : finfo->fn_addr = fmgr_sql; : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ 0.00 : 77fd74: 41 c6 46 10 01 movb $0x1,0x10(%r14) : break; 0.00 : 77fd79: e9 f0 fd ff ff jmpq 77fb6e : * alias for a builtin function, we can end up here. In that case : * we have to look up the function by name. The name of the : * internal function is stored in prosrc (it doesn't have to be : * the same as the name of the alias!) : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fd7e: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fd85: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 77fd89: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77fd8e: ba 18 00 00 00 mov $0x18,%edx 0.00 : 77fd93: e8 f8 1c ff ff callq 771a90 : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fd98: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : * alias for a builtin function, we can end up here. In that case : * we have to look up the function by name. The name of the : * internal function is stored in prosrc (it doesn't have to be : * the same as the name of the alias!) : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fd9c: 48 89 c7 mov %rax,%rdi : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fd9f: 0f 85 1a 02 00 00 jne 77ffbf : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); 0.00 : 77fda5: e8 06 a4 fd ff callq 75a1b0 : static const FmgrBuiltin * : fmgr_lookupByName(const char *name) : { : int i; : : for (i = 0; i < fmgr_nbuiltins; i++) 0.00 : 77fdaa: 45 85 ff test %r15d,%r15d : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); 0.00 : 77fdad: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : static const FmgrBuiltin * : fmgr_lookupByName(const char *name) : { : int i; : : for (i = 0; i < fmgr_nbuiltins; i++) 0.00 : 77fdb4: 0f 8e b9 01 00 00 jle 77ff73 0.00 : 77fdba: 41 bc c8 b6 8e 00 mov $0x8eb6c8,%r12d 0.00 : 77fdc0: 31 db xor %ebx,%ebx 0.00 : 77fdc2: eb 14 jmp 77fdd8 0.00 : 77fdc4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77fdc8: 83 c3 01 add $0x1,%ebx 0.00 : 77fdcb: 49 83 c4 20 add $0x20,%r12 0.00 : 77fdcf: 44 39 fb cmp %r15d,%ebx 0.00 : 77fdd2: 0f 8d 9b 01 00 00 jge 77ff73 : { : if (strcmp(name, fmgr_builtins[i].funcName) == 0) 0.00 : 77fdd8: 49 8b 34 24 mov (%r12),%rsi 0.00 : 77fddc: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 77fde3: e8 48 9f ce ff callq 469d30 0.00 : 77fde8: 85 c0 test %eax,%eax 0.00 : 77fdea: 75 dc jne 77fdc8 : return fmgr_builtins + i; 0.00 : 77fdec: 48 63 c3 movslq %ebx,%rax 0.00 : 77fdef: 48 c1 e0 05 shl $0x5,%rax : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); : fbp = fmgr_lookupByName(prosrc); : if (fbp == NULL) 0.00 : 77fdf3: 48 89 c3 mov %rax,%rbx 0.00 : 77fdf6: 48 81 c3 c0 b6 8e 00 add $0x8eb6c0,%rbx 0.00 : 77fdfd: 0f 84 70 01 00 00 je 77ff73 : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_FUNCTION), : errmsg("internal function \"%s\" is not in internal lookup table", : prosrc))); : pfree(prosrc); 0.00 : 77fe03: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 77fe0a: e8 71 8d 01 00 callq 798b80 : /* Should we check that nargs, strict, retset match the table? */ : finfo->fn_addr = fbp->func; 0.00 : 77fe0f: 48 8b 43 18 mov 0x18(%rbx),%rax : /* note this policy is also assumed in fast path above */ : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ 0.00 : 77fe13: 41 c6 46 10 02 movb $0x2,0x10(%r14) : (errcode(ERRCODE_UNDEFINED_FUNCTION), : errmsg("internal function \"%s\" is not in internal lookup table", : prosrc))); : pfree(prosrc); : /* Should we check that nargs, strict, retset match the table? */ : finfo->fn_addr = fbp->func; 0.00 : 77fe18: 49 89 06 mov %rax,(%r14) : /* note this policy is also assumed in fast path above */ : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : break; 0.00 : 77fe1b: e9 4e fd ff ff jmpq 77fb6e : fmgr_info_C_lang(functionId, finfo, procedureTuple); : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ : break; : : case SQLlanguageId: : finfo->fn_addr = fmgr_sql; 0.00 : 77fe20: 49 c7 06 50 6d 5b 00 movq $0x5b6d50,(%r14) 0.00 : 77fe27: e9 48 ff ff ff jmpq 77fd74 : : pfree(prosrcstring); : pfree(probinstring); : } : : switch (inforec->api_version) 0.00 : 77fe2c: 83 e8 01 sub $0x1,%eax 0.00 : 77fe2f: 74 2c je 77fe5d : /* New style: call directly */ : finfo->fn_addr = user_fn; : break; : default: : /* Shouldn't get here if fetch_finfo_record did its job */ : elog(ERROR, "unrecognized function API version: %d", 0.00 : 77fe31: ba f0 53 8d 00 mov $0x8d53f0,%edx 0.00 : 77fe36: be 83 01 00 00 mov $0x183,%esi 0.00 : 77fe3b: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77fe40: e8 db b5 ff ff callq 77b420 0.00 : 77fe45: 8b 13 mov (%rbx),%edx 0.00 : 77fe47: be c8 4e 8d 00 mov $0x8d4ec8,%esi 0.00 : 77fe4c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77fe51: 31 c0 xor %eax,%eax 0.00 : 77fe53: e8 d8 b3 ff ff callq 77b230 0.00 : 77fe58: e8 73 96 ce ff callq 4694d0 : TypeIsToastable(procedureStruct->proargtypes.values[i]); : } : break; : case 1: : /* New style: call directly */ : finfo->fn_addr = user_fn; 0.00 : 77fe5d: 4d 89 26 mov %r12,(%r14) 0.00 : 77fe60: e9 0f ff ff ff jmpq 77fd74 : } : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); : if ( !HeapTupleIsValid(procedureTuple)) : elog(ERROR, "cache lookup failed for function %u", functionId); 0.00 : 77fe65: ba d0 53 8d 00 mov $0x8d53d0,%edx 0.00 : 77fe6a: be d9 00 00 00 mov $0xd9,%esi 0.00 : 77fe6f: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77fe74: e8 a7 b5 ff ff callq 77b420 0.00 : 77fe79: 44 89 ea mov %r13d,%edx 0.00 : 77fe7c: be b8 2b 7c 00 mov $0x7c2bb8,%esi 0.00 : 77fe81: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77fe86: 31 c0 xor %eax,%eax 0.00 : 77fe88: e8 a3 b3 ff ff callq 77b230 0.00 : 77fe8d: e8 3e 96 ce ff callq 4694d0 : &fn_oid, : HASH_FIND, : NULL); : if (entry == NULL) : return NULL; /* no such entry */ : if (entry->fn_xmin == HeapTupleHeaderGetRawXmin(procedureTuple->t_data) && 0.00 : 77fe92: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fe99: 48 8d 7b 08 lea 0x8(%rbx),%rdi 0.00 : 77fe9d: 48 83 c6 04 add $0x4,%rsi 0.00 : 77fea1: e8 ba 73 f1 ff callq 697260 0.00 : 77fea6: 84 c0 test %al,%al 0.00 : 77fea8: 0f 84 46 fd ff ff je 77fbf4 : * See if we have the function address cached already : */ : hashentry = lookup_C_func(procedureTuple); : if (hashentry) : { : user_fn = hashentry->user_fn; 0.00 : 77feae: 4c 8b 63 10 mov 0x10(%rbx),%r12 : inforec = hashentry->inforec; 0.00 : 77feb2: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 77feb6: e9 42 fe ff ff jmpq 77fcfd : /* Create the hash table if it doesn't exist yet */ : if (CFuncHash == NULL) : { : HASHCTL hash_ctl; : : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 77febb: 48 8d 95 50 ff ff ff lea -0xb0(%rbp),%rdx 0.00 : 77fec2: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 77fec6: 48 39 d1 cmp %rdx,%rcx 0.00 : 77fec9: 76 13 jbe 77fede 0.00 : 77fecb: 48 89 d0 mov %rdx,%rax 0.00 : 77fece: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 77fed5: 48 83 c0 08 add $0x8,%rax 0.00 : 77fed9: 48 39 c1 cmp %rax,%rcx 0.00 : 77fedc: 75 f0 jne 77fece : hash_ctl.keysize = sizeof(Oid); : hash_ctl.entrysize = sizeof(CFuncHashTabEntry); : hash_ctl.hash = oid_hash; : CFuncHash = hash_create("CFuncHash", 0.00 : 77fede: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 77fee3: be 64 00 00 00 mov $0x64,%esi 0.00 : 77fee8: bf d7 4c 8d 00 mov $0x8d4cd7,%edi : if (CFuncHash == NULL) : { : HASHCTL hash_ctl; : : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); : hash_ctl.keysize = sizeof(Oid); 0.00 : 77feed: 48 c7 85 78 ff ff ff movq $0x4,-0x88(%rbp) 0.00 : 77fef4: 04 00 00 00 : hash_ctl.entrysize = sizeof(CFuncHashTabEntry); 0.00 : 77fef8: 48 c7 45 80 20 00 00 movq $0x20,-0x80(%rbp) 0.00 : 77feff: 00 : hash_ctl.hash = oid_hash; 0.00 : 77ff00: 48 c7 45 88 50 4f 78 movq $0x784f50,-0x78(%rbp) 0.00 : 77ff07: 00 : CFuncHash = hash_create("CFuncHash", 0.00 : 77ff08: e8 a3 49 00 00 callq 7848b0 0.00 : 77ff0d: 48 89 05 84 9c 43 00 mov %rax,0x439c84(%rip) # bb9b98 0.00 : 77ff14: e9 91 fd ff ff jmpq 77fcaa : prosrcstring = TextDatumGetCString(prosrcattr); : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_probin, &isnull); : if (isnull) : elog(ERROR, "null probin for C function %u", functionId); 0.00 : 77ff19: ba f0 53 8d 00 mov $0x8d53f0,%edx 0.00 : 77ff1e: be 5b 01 00 00 mov $0x15b,%esi 0.00 : 77ff23: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77ff28: e8 f3 b4 ff ff callq 77b420 0.00 : 77ff2d: 44 89 ea mov %r13d,%edx 0.00 : 77ff30: be 58 79 7c 00 mov $0x7c7958,%esi 0.00 : 77ff35: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ff3a: 31 c0 xor %eax,%eax 0.00 : 77ff3c: e8 ef b2 ff ff callq 77b230 0.00 : 77ff41: e8 8a 95 ce ff callq 4694d0 : * for C-language functions. : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc for C function %u", functionId); 0.00 : 77ff46: ba f0 53 8d 00 mov $0x8d53f0,%edx 0.00 : 77ff4b: be 55 01 00 00 mov $0x155,%esi 0.00 : 77ff50: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77ff55: e8 c6 b4 ff ff callq 77b420 0.00 : 77ff5a: 44 89 ea mov %r13d,%edx 0.00 : 77ff5d: be 3a 79 7c 00 mov $0x7c793a,%esi 0.00 : 77ff62: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ff67: 31 c0 xor %eax,%eax 0.00 : 77ff69: e8 c2 b2 ff ff callq 77b230 0.00 : 77ff6e: e8 5d 95 ce ff callq 4694d0 : if (isnull) : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); : fbp = fmgr_lookupByName(prosrc); : if (fbp == NULL) : ereport(ERROR, 0.00 : 77ff73: 45 31 c0 xor %r8d,%r8d 0.00 : 77ff76: b9 d0 53 8d 00 mov $0x8d53d0,%ecx 0.00 : 77ff7b: ba 11 01 00 00 mov $0x111,%edx 0.00 : 77ff80: be b3 47 8d 00 mov $0x8d47b3,%esi 0.00 : 77ff85: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ff8a: e8 31 ab ff ff callq 77aac0 0.00 : 77ff8f: 84 c0 test %al,%al 0.00 : 77ff91: 74 db je 77ff6e 0.00 : 77ff93: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi 0.00 : 77ff9a: bf 90 4e 8d 00 mov $0x8d4e90,%edi 0.00 : 77ff9f: 31 c0 xor %eax,%eax 0.00 : 77ffa1: e8 fa c8 ff ff callq 77c8a0 0.00 : 77ffa6: bf 84 80 20 03 mov $0x3208084,%edi 0.00 : 77ffab: 89 c3 mov %eax,%ebx 0.00 : 77ffad: e8 9e cd ff ff callq 77cd50 0.00 : 77ffb2: 89 de mov %ebx,%esi 0.00 : 77ffb4: 89 c7 mov %eax,%edi 0.00 : 77ffb6: 31 c0 xor %eax,%eax 0.00 : 77ffb8: e8 23 a6 ff ff callq 77a5e0 0.00 : 77ffbd: eb af jmp 77ff6e : * the same as the name of the alias!) : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc"); 0.00 : 77ffbf: ba d0 53 8d 00 mov $0x8d53d0,%edx 0.00 : 77ffc4: be 0a 01 00 00 mov $0x10a,%esi 0.00 : 77ffc9: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77ffce: e8 4d b4 ff ff callq 77b420 0.00 : 77ffd3: be 1c 79 7c 00 mov $0x7c791c,%esi 0.00 : 77ffd8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ffdd: 31 c0 xor %eax,%eax 0.00 : 77ffdf: e8 4c b2 ff ff callq 77b230 0.00 : 77ffe4: e8 e7 94 ce ff callq 4694d0 : * If lookup of the PL handler function produced nonnull fn_extra, : * complain --- it must be an oldstyle function! We no longer support : * oldstyle PL handlers. : */ : if (plfinfo.fn_extra != NULL) : elog(ERROR, "language %u has old-style handler", language); 0.00 : 77ffe9: ba 10 54 8d 00 mov $0x8d5410,%edx 0.00 : 77ffee: be a9 01 00 00 mov $0x1a9,%esi 0.00 : 77fff3: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77fff8: e8 23 b4 ff ff callq 77b420 0.00 : 77fffd: 44 89 e2 mov %r12d,%edx 0.00 : 780000: be f0 4e 8d 00 mov $0x8d4ef0,%esi 0.00 : 780005: bf 14 00 00 00 mov $0x14,%edi 0.00 : 78000a: 31 c0 xor %eax,%eax 0.00 : 78000c: e8 1f b2 ff ff callq 77b230 0.00 : 780011: e8 ba 94 ce ff callq 4694d0 : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); : if (!HeapTupleIsValid(languageTuple)) : elog(ERROR, "cache lookup failed for language %u", language); 0.00 : 780016: ba 10 54 8d 00 mov $0x8d5410,%edx 0.00 : 78001b: be 97 01 00 00 mov $0x197,%esi 0.00 : 780020: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 780025: e8 f6 b3 ff ff callq 77b420 0.00 : 78002a: 44 89 e2 mov %r12d,%edx 0.00 : 78002d: be b0 3b 7c 00 mov $0x7c3bb0,%esi 0.00 : 780032: bf 14 00 00 00 mov $0x14,%edi 0.00 : 780037: 31 c0 xor %eax,%eax 0.00 : 780039: e8 f2 b1 ff ff callq 77b230 0.00 : 78003e: e8 8d 94 ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:623 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:629 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:614 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798e90 : : * This could be turned into a macro, but we'd have to import : * nodes/memnodes.h into postgres.h which seems a bad idea. : */ : void * : MemoryContextAlloc(MemoryContext context, Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:614 16.67 : 798e90: 55 push %rbp 0.00 : 798e91: 48 89 e5 mov %rsp,%rbp 0.00 : 798e94: 53 push %rbx 0.00 : 798e95: 48 89 f3 mov %rsi,%rbx 0.00 : 798e98: 48 83 ec 08 sub $0x8,%rsp : void *ret; : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) 0.00 : 798e9c: 48 81 fe ff ff ff 3f cmp $0x3fffffff,%rsi 0.00 : 798ea3: 77 14 ja 798eb9 : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); 0.00 : 798ea5: 48 8b 47 08 mov 0x8(%rdi),%rax : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:623 50.00 : 798ea9: c6 47 30 00 movb $0x0,0x30(%rdi) : : ret = (*context->methods->alloc) (context, size); 0.00 : 798ead: 4c 8b 18 mov (%rax),%r11 : VALGRIND_MEMPOOL_ALLOC(context, ret, size); : : return ret; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:629 33.33 : 798eb0: 48 83 c4 08 add $0x8,%rsp 0.00 : 798eb4: 5b pop %rbx 0.00 : 798eb5: c9 leaveq : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); 0.00 : 798eb6: 41 ff e3 jmpq *%r11 : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 798eb9: ba 60 20 8e 00 mov $0x8e2060,%edx 0.00 : 798ebe: be 6d 02 00 00 mov $0x26d,%esi 0.00 : 798ec3: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 798ec8: e8 53 25 fe ff callq 77b420 0.00 : 798ecd: 48 89 da mov %rbx,%rdx 0.00 : 798ed0: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 798ed5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798eda: 31 c0 xor %eax,%eax 0.00 : 798edc: e8 4f 23 fe ff callq 77b230 0.00 : 798ee1: e8 ea 05 cd ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000004f030 <_IO_sprintf>: ??:0 25.00 : 4f030: 48 81 ec d8 00 00 00 sub $0xd8,%rsp 25.00 : 4f037: 48 89 54 24 30 mov %rdx,0x30(%rsp) 25.00 : 4f03c: 0f b6 d0 movzbl %al,%edx 0.00 : 4f03f: 48 89 4c 24 38 mov %rcx,0x38(%rsp) 0.00 : 4f044: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : 4f04b: 00 0.00 : 4f04c: 48 8d 15 37 00 00 00 lea 0x37(%rip),%rdx # 4f08a <_IO_sprintf+0x5a> 0.00 : 4f053: 4c 89 44 24 40 mov %r8,0x40(%rsp) 0.00 : 4f058: 4c 89 4c 24 48 mov %r9,0x48(%rsp) 25.00 : 4f05d: 48 29 c2 sub %rax,%rdx 0.00 : 4f060: 48 8d 84 24 cf 00 00 lea 0xcf(%rsp),%rax 0.00 : 4f067: 00 0.00 : 4f068: ff e2 jmpq *%rdx 0.00 : 4f06a: 0f 29 78 f1 movaps %xmm7,-0xf(%rax) 0.00 : 4f06e: 0f 29 70 e1 movaps %xmm6,-0x1f(%rax) 0.00 : 4f072: 0f 29 68 d1 movaps %xmm5,-0x2f(%rax) 0.00 : 4f076: 0f 29 60 c1 movaps %xmm4,-0x3f(%rax) 0.00 : 4f07a: 0f 29 58 b1 movaps %xmm3,-0x4f(%rax) 0.00 : 4f07e: 0f 29 50 a1 movaps %xmm2,-0x5f(%rax) 0.00 : 4f082: 0f 29 48 91 movaps %xmm1,-0x6f(%rax) 0.00 : 4f086: 0f 29 40 81 movaps %xmm0,-0x7f(%rax) 0.00 : 4f08a: 48 8d 84 24 e0 00 00 lea 0xe0(%rsp),%rax 0.00 : 4f091: 00 0.00 : 4f092: 48 89 e2 mov %rsp,%rdx 0.00 : 4f095: c7 04 24 10 00 00 00 movl $0x10,(%rsp) 0.00 : 4f09c: c7 44 24 04 30 00 00 movl $0x30,0x4(%rsp) 0.00 : 4f0a3: 00 0.00 : 4f0a4: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 4f0a9: 48 8d 44 24 20 lea 0x20(%rsp),%rax 0.00 : 4f0ae: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 4f0b3: e8 28 a6 01 00 callq 696e0 <_IO_vsprintf> 0.00 : 4f0b8: 48 81 c4 d8 00 00 00 add $0xd8,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000066750 <_IO_fflush>: 0.00 : 66750: 48 85 ff test %rdi,%rdi ??:0 25.00 : 66753: 53 push %rbx 0.00 : 66754: 48 89 fb mov %rdi,%rbx 0.00 : 66757: 0f 84 c3 00 00 00 je 66820 <_IO_fflush+0xd0> 0.00 : 6675d: 66 83 3f 00 cmpw $0x0,(%rdi) 0.00 : 66761: 78 56 js 667b9 <_IO_fflush+0x69> 0.00 : 66763: 4c 8b 8f 88 00 00 00 mov 0x88(%rdi),%r9 0.00 : 6676a: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 66771: 00 00 0.00 : 66773: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 66777: 74 3b je 667b4 <_IO_fflush+0x64> 0.00 : 66779: 31 d2 xor %edx,%edx 0.00 : 6677b: be 01 00 00 00 mov $0x1,%esi 0.00 : 66780: 89 d0 mov %edx,%eax 0.00 : 66782: 83 3d 2b 0f 31 00 00 cmpl $0x0,0x310f2b(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66789: 74 0d je 66798 <_IO_fflush+0x48> 0.00 : 6678b: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 66790: 0f 85 df 00 00 00 jne 66875 <_L_lock_35> 0.00 : 66796: eb 0a jmp 667a2 <_IO_fflush+0x52> 0.00 : 66798: 41 0f b1 31 cmpxchg %esi,(%r9) 25.00 : 6679c: 0f 85 d3 00 00 00 jne 66875 <_L_lock_35> 0.00 : 667a2: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 667a9: 4c 89 50 08 mov %r10,0x8(%rax) 0.00 : 667ad: 4c 8b 8b 88 00 00 00 mov 0x88(%rbx),%r9 0.00 : 667b4: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 667b9: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 667c0: 48 89 df mov %rbx,%rdi 0.00 : 667c3: ff 50 60 callq *0x60(%rax) 0.00 : 667c6: 83 f8 01 cmp $0x1,%eax 0.00 : 667c9: 19 f6 sbb %esi,%esi 0.00 : 667cb: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 667cf: f7 d6 not %esi 0.00 : 667d1: 78 45 js 66818 <_IO_fflush+0xc8> 0.00 : 667d3: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 50.00 : 667da: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 667dd: 83 e8 01 sub $0x1,%eax 0.00 : 667e0: 85 c0 test %eax,%eax 0.00 : 667e2: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 667e5: 75 31 jne 66818 <_IO_fflush+0xc8> 0.00 : 667e7: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 667ee: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 667f5: 00 0.00 : 667f6: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 667fd: 83 3d b0 0e 31 00 00 cmpl $0x0,0x310eb0(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66804: 74 0b je 66811 <_IO_fflush+0xc1> 0.00 : 66806: f0 ff 0a lock decl (%rdx) 0.00 : 66809: 0f 85 81 00 00 00 jne 66890 <_L_unlock_86> 0.00 : 6680f: eb 04 jmp 66815 <_IO_fflush+0xc5> 0.00 : 66811: ff 0a decl (%rdx) 0.00 : 66813: 75 7b jne 66890 <_L_unlock_86> 0.00 : 66815: 0f 1f 00 nopl (%rax) 0.00 : 66818: 89 f0 mov %esi,%eax 0.00 : 6681a: 5b pop %rbx 0.00 : 6681b: c3 retq 0.00 : 6681c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 66820: 5b pop %rbx 0.00 : 66821: e9 9a dc 00 00 jmpq 744c0 <_IO_flush_all> 0.00 : 66826: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 6682a: 49 89 c0 mov %rax,%r8 0.00 : 6682d: 78 3e js 6686d <_IO_fflush+0x11d> 0.00 : 6682f: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 66836: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 66839: 83 e8 01 sub $0x1,%eax 0.00 : 6683c: 85 c0 test %eax,%eax 0.00 : 6683e: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 66841: 75 2a jne 6686d <_IO_fflush+0x11d> 0.00 : 66843: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6684a: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 66851: 00 0.00 : 66852: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 66859: 83 3d 54 0e 31 00 00 cmpl $0x0,0x310e54(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66860: 74 07 je 66869 <_IO_fflush+0x119> 0.00 : 66862: f0 ff 0a lock decl (%rdx) 0.00 : 66865: 75 44 jne 668ab <_L_unlock_138> 0.00 : 66867: eb 04 jmp 6686d <_IO_fflush+0x11d> 0.00 : 66869: ff 0a decl (%rdx) 0.00 : 6686b: 75 3e jne 668ab <_L_unlock_138> 0.00 : 6686d: 4c 89 c7 mov %r8,%rdi 0.00 : 66870: e8 eb 86 fb ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073d20 <_IO_switch_to_get_mode>: 14.29 : 73d20: 53 push %rbx 0.00 : 73d21: 48 8b 57 28 mov 0x28(%rdi),%rdx 0.00 : 73d25: 48 89 fb mov %rdi,%rbx 0.00 : 73d28: 48 3b 57 20 cmp 0x20(%rdi),%rdx 0.00 : 73d2c: 77 4a ja 73d78 <_IO_switch_to_get_mode+0x58> 0.00 : 73d2e: 8b 03 mov (%rbx),%eax 14.29 : 73d30: f6 c4 01 test $0x1,%ah 0.00 : 73d33: 75 33 jne 73d68 <_IO_switch_to_get_mode+0x48> 0.00 : 73d35: 48 3b 53 10 cmp 0x10(%rbx),%rdx 0.00 : 73d39: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 73d3d: 48 89 43 18 mov %rax,0x18(%rbx) 14.29 : 73d41: 76 04 jbe 73d47 <_IO_switch_to_get_mode+0x27> 0.00 : 73d43: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 73d47: 81 23 ff f7 ff ff andl $0xfffff7ff,(%rbx) 0.00 : 73d4d: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 73d51: 31 c0 xor %eax,%eax 0.00 : 73d53: 48 89 53 30 mov %rdx,0x30(%rbx) 0.00 : 73d57: 48 89 53 28 mov %rdx,0x28(%rbx) 0.00 : 73d5b: 48 89 53 20 mov %rdx,0x20(%rbx) 0.00 : 73d5f: 5b pop %rbx 0.00 : 73d60: c3 retq 0.00 : 73d61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 73d68: 48 8b 43 50 mov 0x50(%rbx),%rax 0.00 : 73d6c: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 73d70: eb d5 jmp 73d47 <_IO_switch_to_get_mode+0x27> 0.00 : 73d72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 14.29 : 73d78: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 73d7f: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 73d84: ff 50 18 callq *0x18(%rax) 14.29 : 73d87: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 73d8a: 74 d3 je 73d5f <_IO_switch_to_get_mode+0x3f> 28.57 : 73d8c: 48 8b 53 28 mov 0x28(%rbx),%rdx 0.00 : 73d90: eb 9c jmp 73d2e <_IO_switch_to_get_mode+0xe> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074220 <_IO_flush_all_lockp>: 0.00 : 74220: 41 57 push %r15 0.00 : 74222: 41 56 push %r14 0.00 : 74224: 41 55 push %r13 0.00 : 74226: 41 54 push %r12 0.00 : 74228: 55 push %rbp 0.00 : 74229: 89 fd mov %edi,%ebp 0.00 : 7422b: 53 push %rbx 0.00 : 7422c: 48 83 ec 28 sub $0x28,%rsp 0.00 : 74230: 44 8b 3d 79 34 30 00 mov 0x303479(%rip),%r15d # 3776b0 <__libc_pthread_functions_init> 0.00 : 74237: 45 85 ff test %r15d,%r15d 0.00 : 7423a: 0f 85 50 02 00 00 jne 74490 <_IO_flush_all_lockp+0x270> 0.00 : 74240: 48 8d 05 29 f5 ff ff lea -0xad7(%rip),%rax # 73770 0.00 : 74247: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 7424e: 00 00 0.00 : 74250: 48 89 04 24 mov %rax,(%rsp) 0.00 : 74254: 85 ed test %ebp,%ebp 0.00 : 74256: 74 4d je 742a5 <_IO_flush_all_lockp+0x85> 0.00 : 74258: 64 48 8b 14 25 10 00 mov %fs:0x10,%rdx 0.00 : 7425f: 00 00 0.00 : 74261: 48 3b 15 b0 fb 2f 00 cmp 0x2ffbb0(%rip),%rdx # 373e18 0.00 : 74268: 74 34 je 7429e <_IO_flush_all_lockp+0x7e> 0.00 : 7426a: be 01 00 00 00 mov $0x1,%esi 0.00 : 7426f: 31 c0 xor %eax,%eax 0.00 : 74271: 83 3d 3c 34 30 00 00 cmpl $0x0,0x30343c(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 74278: 74 10 je 7428a <_IO_flush_all_lockp+0x6a> 0.00 : 7427a: f0 0f b1 35 8e fb 2f lock cmpxchg %esi,0x2ffb8e(%rip) # 373e10 0.00 : 74281: 00 0.00 : 74282: 0f 85 25 13 00 00 jne 755ad <_L_lock_1235> 0.00 : 74288: eb 0d jmp 74297 <_IO_flush_all_lockp+0x77> 0.00 : 7428a: 0f b1 35 7f fb 2f 00 cmpxchg %esi,0x2ffb7f(%rip) # 373e10 0.00 : 74291: 0f 85 16 13 00 00 jne 755ad <_L_lock_1235> 0.00 : 74297: 48 89 15 7a fb 2f 00 mov %rdx,0x2ffb7a(%rip) # 373e18 0.00 : 7429e: 83 05 6f fb 2f 00 01 addl $0x1,0x2ffb6f(%rip) # 373e14 0.00 : 742a5: 48 8b 1d d4 e6 2f 00 mov 0x2fe6d4(%rip),%rbx # 372980 <_IO_list_all> 0.00 : 742ac: 45 31 ed xor %r13d,%r13d 0.00 : 742af: 44 8b 25 6a fb 2f 00 mov 0x2ffb6a(%rip),%r12d # 373e20 <_IO_list_all_stamp> 0.00 : 742b6: 48 85 db test %rbx,%rbx 0.00 : 742b9: 0f 84 38 01 00 00 je 743f7 <_IO_flush_all_lockp+0x1d7> 0.00 : 742bf: 64 4c 8b 34 25 10 00 mov %fs:0x10,%r14 0.00 : 742c6: 00 00 0.00 : 742c8: eb 19 jmp 742e3 <_IO_flush_all_lockp+0xc3> 0.00 : 742ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 742d0: 48 8b 1d a9 e6 2f 00 mov 0x2fe6a9(%rip),%rbx # 372980 <_IO_list_all> 0.00 : 742d7: 48 85 db test %rbx,%rbx 0.00 : 742da: 0f 84 17 01 00 00 je 743f7 <_IO_flush_all_lockp+0x1d7> 16.67 : 742e0: 41 89 c4 mov %eax,%r12d 0.00 : 742e3: 85 ed test %ebp,%ebp 16.67 : 742e5: 48 89 1d 3c fb 2f 00 mov %rbx,0x2ffb3c(%rip) # 373e28 0.00 : 742ec: 74 53 je 74341 <_IO_flush_all_lockp+0x121> 0.00 : 742ee: 66 83 3b 00 cmpw $0x0,(%rbx) 16.67 : 742f2: 78 4d js 74341 <_IO_flush_all_lockp+0x121> 0.00 : 742f4: 4c 8b 83 88 00 00 00 mov 0x88(%rbx),%r8 16.67 : 742fb: 4d 3b 70 08 cmp 0x8(%r8),%r14 0.00 : 742ff: 74 3b je 7433c <_IO_flush_all_lockp+0x11c> 0.00 : 74301: 31 d2 xor %edx,%edx 0.00 : 74303: be 01 00 00 00 mov $0x1,%esi 0.00 : 74308: 89 d0 mov %edx,%eax 0.00 : 7430a: 83 3d a3 33 30 00 00 cmpl $0x0,0x3033a3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 74311: 74 0d je 74320 <_IO_flush_all_lockp+0x100> 0.00 : 74313: f0 41 0f b1 30 lock cmpxchg %esi,(%r8) 0.00 : 74318: 0f 85 ae 12 00 00 jne 755cc <_L_lock_1309> 0.00 : 7431e: eb 0a jmp 7432a <_IO_flush_all_lockp+0x10a> 0.00 : 74320: 41 0f b1 30 cmpxchg %esi,(%r8) 16.67 : 74324: 0f 85 a2 12 00 00 jne 755cc <_L_lock_1309> 0.00 : 7432a: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 74331: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 74335: 4c 8b 83 88 00 00 00 mov 0x88(%rbx),%r8 0.00 : 7433c: 41 83 40 04 01 addl $0x1,0x4(%r8) 0.00 : 74341: 8b 8b c0 00 00 00 mov 0xc0(%rbx),%ecx 0.00 : 74347: 85 c9 test %ecx,%ecx 0.00 : 74349: 0f 8e f1 00 00 00 jle 74440 <_IO_flush_all_lockp+0x220> 0.00 : 7434f: 48 8b 83 a0 00 00 00 mov 0xa0(%rbx),%rax 0.00 : 74356: 48 8b 50 18 mov 0x18(%rax),%rdx 0.00 : 7435a: 48 39 50 20 cmp %rdx,0x20(%rax) 0.00 : 7435e: 76 19 jbe 74379 <_IO_flush_all_lockp+0x159> 0.00 : 74360: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 74367: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 7436c: 48 89 df mov %rbx,%rdi 0.00 : 7436f: ff 50 18 callq *0x18(%rax) 0.00 : 74372: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 74375: 44 0f 44 e8 cmove %eax,%r13d 0.00 : 74379: 85 ed test %ebp,%ebp 0.00 : 7437b: 74 53 je 743d0 <_IO_flush_all_lockp+0x1b0> 0.00 : 7437d: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 74381: 78 4d js 743d0 <_IO_flush_all_lockp+0x1b0> 16.67 : 74383: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 7438a: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 7438d: 83 e8 01 sub $0x1,%eax 0.00 : 74390: 85 c0 test %eax,%eax 0.00 : 74392: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 74395: 75 39 jne 743d0 <_IO_flush_all_lockp+0x1b0> 0.00 : 74397: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 7439e: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 743a5: 00 0.00 : 743a6: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 743ad: 83 3d 00 33 30 00 00 cmpl $0x0,0x303300(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 743b4: 74 0b je 743c1 <_IO_flush_all_lockp+0x1a1> 0.00 : 743b6: f0 ff 0a lock decl (%rdx) 0.00 : 743b9: 0f 85 28 12 00 00 jne 755e7 <_L_unlock_1388> 0.00 : 743bf: eb 08 jmp 743c9 <_IO_flush_all_lockp+0x1a9> 0.00 : 743c1: ff 0a decl (%rdx) 0.00 : 743c3: 0f 85 1e 12 00 00 jne 755e7 <_L_unlock_1388> 0.00 : 743c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 743d0: 8b 05 4a fa 2f 00 mov 0x2ffa4a(%rip),%eax # 373e20 <_IO_list_all_stamp> 0.00 : 743d6: 48 c7 05 47 fa 2f 00 movq $0x0,0x2ffa47(%rip) # 373e28 0.00 : 743dd: 00 00 00 00 0.00 : 743e1: 41 39 c4 cmp %eax,%r12d 0.00 : 743e4: 0f 85 e6 fe ff ff jne 742d0 <_IO_flush_all_lockp+0xb0> 0.00 : 743ea: 48 8b 5b 68 mov 0x68(%rbx),%rbx 0.00 : 743ee: 48 85 db test %rbx,%rbx 0.00 : 743f1: 0f 85 e9 fe ff ff jne 742e0 <_IO_flush_all_lockp+0xc0> 0.00 : 743f7: 85 ed test %ebp,%ebp 0.00 : 743f9: 74 13 je 7440e <_IO_flush_all_lockp+0x1ee> 0.00 : 743fb: 8b 05 13 fa 2f 00 mov 0x2ffa13(%rip),%eax # 373e14 0.00 : 74401: 83 e8 01 sub $0x1,%eax 0.00 : 74404: 85 c0 test %eax,%eax 0.00 : 74406: 89 05 08 fa 2f 00 mov %eax,0x2ffa08(%rip) # 373e14 0.00 : 7440c: 74 4a je 74458 <_IO_flush_all_lockp+0x238> 0.00 : 7440e: 45 85 ff test %r15d,%r15d 0.00 : 74411: 74 1b je 7442e <_IO_flush_all_lockp+0x20e> 0.00 : 74413: 48 8b 05 5e 32 30 00 mov 0x30325e(%rip),%rax # 377678 <__libc_pthread_functions+0x178> 0.00 : 7441a: 48 89 e7 mov %rsp,%rdi 0.00 : 7441d: 31 f6 xor %esi,%esi 0.00 : 7441f: 48 c1 c8 11 ror $0x11,%rax 0.00 : 74423: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 7442a: 00 00 0.00 : 7442c: ff d0 callq *%rax 0.00 : 7442e: 48 83 c4 28 add $0x28,%rsp 0.00 : 74432: 44 89 e8 mov %r13d,%eax 0.00 : 74435: 5b pop %rbx 0.00 : 74436: 5d pop %rbp 0.00 : 74437: 41 5c pop %r12 0.00 : 74439: 41 5d pop %r13 0.00 : 7443b: 41 5e pop %r14 0.00 : 7443d: 41 5f pop %r15 0.00 : 7443f: c3 retq 0.00 : 74440: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 74444: 48 39 53 28 cmp %rdx,0x28(%rbx) 0.00 : 74448: 0f 87 12 ff ff ff ja 74360 <_IO_flush_all_lockp+0x140> 0.00 : 7444e: e9 26 ff ff ff jmpq 74379 <_IO_flush_all_lockp+0x159> 0.00 : 74453: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 74458: 48 c7 05 b5 f9 2f 00 movq $0x0,0x2ff9b5(%rip) # 373e18 0.00 : 7445f: 00 00 00 00 0.00 : 74463: 83 3d 4a 32 30 00 00 cmpl $0x0,0x30324a(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7446a: 74 0f je 7447b <_IO_flush_all_lockp+0x25b> 0.00 : 7446c: f0 ff 0d 9d f9 2f 00 lock decl 0x2ff99d(%rip) # 373e10 0.00 : 74473: 0f 85 89 11 00 00 jne 75602 <_L_unlock_1508> 0.00 : 74479: eb 0c jmp 74487 <_IO_flush_all_lockp+0x267> 0.00 : 7447b: ff 0d 8f f9 2f 00 decl 0x2ff98f(%rip) # 373e10 0.00 : 74481: 0f 85 7b 11 00 00 jne 75602 <_L_unlock_1508> 0.00 : 74487: e9 82 ff ff ff jmpq 7440e <_IO_flush_all_lockp+0x1ee> 0.00 : 7448c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 74490: 48 8b 05 d9 31 30 00 mov 0x3031d9(%rip),%rax # 377670 <__libc_pthread_functions+0x170> 0.00 : 74497: 48 89 e7 mov %rsp,%rdi 0.00 : 7449a: 31 d2 xor %edx,%edx 0.00 : 7449c: 48 c1 c8 11 ror $0x11,%rax 0.00 : 744a0: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 744a7: 00 00 0.00 : 744a9: 48 8d 35 c0 f2 ff ff lea -0xd40(%rip),%rsi # 73770 0.00 : 744b0: ff d0 callq *%rax 0.00 : 744b2: e9 9d fd ff ff jmpq 74254 <_IO_flush_all_lockp+0x34> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 40.00 ??:0 40.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000075f50 : 0.00 : 75f50: 8b 15 ae c1 2f 00 mov 0x2fc1ae(%rip),%edx # 372104 <__libc_malloc_initialized> 0.00 : 75f56: 85 d2 test %edx,%edx 0.00 : 75f58: 0f 8e ae 00 00 00 jle 7600c 0.00 : 75f5e: 8b 05 8c e8 2f 00 mov 0x2fe88c(%rip),%eax # 3747f0 0.00 : 75f64: 83 e8 01 sub $0x1,%eax 0.00 : 75f67: 85 c0 test %eax,%eax 40.00 : 75f69: 89 05 81 e8 2f 00 mov %eax,0x2fe881(%rip) # 3747f0 20.00 : 75f6f: 0f 85 97 00 00 00 jne 7600c 0.00 : 75f75: 48 8b 15 c4 bd 2f 00 mov 0x2fbdc4(%rip),%rdx # 371d40 <_DYNAMIC+0x1e0> 0.00 : 75f7c: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 75f83: 00 00 0.00 : 75f85: 48 8d 35 14 df 2f 00 lea 0x2fdf14(%rip),%rsi # 373ea0 0.00 : 75f8c: 48 8b 0d 15 e8 2f 00 mov 0x2fe815(%rip),%rcx # 3747a8 0.00 : 75f93: 48 89 0c 10 mov %rcx,(%rax,%rdx,1) 0.00 : 75f97: 48 8b 15 fa e7 2f 00 mov 0x2fe7fa(%rip),%rdx # 374798 0.00 : 75f9e: 48 8b 05 0b bf 2f 00 mov 0x2fbf0b(%rip),%rax # 371eb0 <_DYNAMIC+0x350> 40.00 : 75fa5: 48 89 10 mov %rdx,(%rax) 0.00 : 75fa8: 48 8b 15 f1 e7 2f 00 mov 0x2fe7f1(%rip),%rdx # 3747a0 0.00 : 75faf: 48 8b 05 02 bf 2f 00 mov 0x2fbf02(%rip),%rax # 371eb8 <_DYNAMIC+0x358> 0.00 : 75fb6: 48 89 10 mov %rdx,(%rax) 0.00 : 75fb9: 48 89 f2 mov %rsi,%rdx 0.00 : 75fbc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 75fc0: 83 3d ed 16 30 00 00 cmpl $0x0,0x3016ed(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 75fc7: 74 0b je 75fd4 0.00 : 75fc9: f0 ff 0a lock decl (%rdx) 0.00 : 75fcc: 0f 85 e7 6e 00 00 jne 7ceb9 <_L_unlock_141> 0.00 : 75fd2: eb 08 jmp 75fdc 0.00 : 75fd4: ff 0a decl (%rdx) 0.00 : 75fd6: 0f 85 dd 6e 00 00 jne 7ceb9 <_L_unlock_141> 0.00 : 75fdc: 48 8b 92 68 08 00 00 mov 0x868(%rdx),%rdx 0.00 : 75fe3: 48 39 f2 cmp %rsi,%rdx 0.00 : 75fe6: 75 d8 jne 75fc0 0.00 : 75fe8: 83 3d c5 16 30 00 00 cmpl $0x0,0x3016c5(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 75fef: 74 0f je 76000 0.00 : 75ff1: f0 ff 0d 8c e7 2f 00 lock decl 0x2fe78c(%rip) # 374784 0.00 : 75ff8: 0f 85 d6 6e 00 00 jne 7ced4 <_L_unlock_149> 0.00 : 75ffe: eb 0c jmp 7600c 0.00 : 76000: ff 0d 7e e7 2f 00 decl 0x2fe77e(%rip) # 374784 0.00 : 76006: 0f 85 c8 6e 00 00 jne 7ced4 <_L_unlock_149> 0.00 : 7600c: f3 c3 repz retq Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000415e50 : 100.00 : 415e50: ff 25 22 42 27 00 jmpq *0x274222(%rip) # 68a078 0.00 : 415e56: 68 0c 00 00 00 pushq $0xc 0.00 : 415e5b: e9 20 ff ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 33.33 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004224d0 : 16.67 : 4224d0: 41 54 push %r12 0.00 : 4224d2: 41 89 f4 mov %esi,%r12d 0.00 : 4224d5: 55 push %rbp 0.00 : 4224d6: 48 89 fd mov %rdi,%rbp 0.00 : 4224d9: 53 push %rbx 0.00 : 4224da: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 4224dd: e8 ae 3f ff ff callq 416490 <__ctype_b_loc@plt> 0.00 : 4224e2: 48 8b 38 mov (%rax),%rdi 0.00 : 4224e5: 0f b6 c3 movzbl %bl,%eax 33.33 : 4224e8: f6 44 47 01 04 testb $0x4,0x1(%rdi,%rax,2) 16.67 : 4224ed: 75 29 jne 422518 0.00 : 4224ef: 80 fb 5f cmp $0x5f,%bl 0.00 : 4224f2: 74 24 je 422518 16.67 : 4224f4: 45 85 e4 test %r12d,%r12d 0.00 : 4224f7: 75 17 jne 422510 0.00 : 4224f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 422500: 31 f6 xor %esi,%esi 0.00 : 422502: 5b pop %rbx 0.00 : 422503: 5d pop %rbp 0.00 : 422504: 89 f0 mov %esi,%eax 0.00 : 422506: 41 5c pop %r12 0.00 : 422508: c3 retq 0.00 : 422509: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 422510: 80 fb 5b cmp $0x5b,%bl 0.00 : 422513: 75 eb jne 422500 0.00 : 422515: 0f 1f 00 nopl (%rax) 0.00 : 422518: 84 db test %bl,%bl 0.00 : 42251a: 74 e4 je 422500 0.00 : 42251c: 80 fb 3d cmp $0x3d,%bl 0.00 : 42251f: 90 nop 0.00 : 422520: 74 de je 422500 0.00 : 422522: 31 f6 xor %esi,%esi 0.00 : 422524: 80 fb 5b cmp $0x5b,%bl 0.00 : 422527: 74 4f je 422578 0.00 : 422529: 31 f6 xor %esi,%esi 0.00 : 42252b: 31 c9 xor %ecx,%ecx 0.00 : 42252d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 422532: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 16.67 : 422538: 80 fb 2b cmp $0x2b,%bl 0.00 : 42253b: 75 07 jne 422544 0.00 : 42253d: 80 7c 0d 01 3d cmpb $0x3d,0x1(%rbp,%rcx,1) 0.00 : 422542: 74 6b je 4225af 0.00 : 422544: 0f b6 c3 movzbl %bl,%eax 0.00 : 422547: f6 04 47 08 testb $0x8,(%rdi,%rax,2) 0.00 : 42254b: 75 05 jne 422552 0.00 : 42254d: 80 fb 5f cmp $0x5f,%bl 0.00 : 422550: 75 ae jne 422500 0.00 : 422552: 0f b6 5c 15 00 movzbl 0x0(%rbp,%rdx,1),%ebx 0.00 : 422557: 83 c6 01 add $0x1,%esi 0.00 : 42255a: 84 db test %bl,%bl 0.00 : 42255c: 74 a2 je 422500 0.00 : 42255e: 80 fb 3d cmp $0x3d,%bl 0.00 : 422561: 74 9f je 422502 0.00 : 422563: 80 fb 5b cmp $0x5b,%bl 0.00 : 422566: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 42256a: 74 0c je 422578 0.00 : 42256c: 48 89 d1 mov %rdx,%rcx 0.00 : 42256f: 48 89 c2 mov %rax,%rdx 0.00 : 422572: eb c4 jmp 422538 0.00 : 422574: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 422578: 48 89 ef mov %rbp,%rdi 0.00 : 42257b: e8 40 93 02 00 callq 44b8c0 0.00 : 422580: 89 c2 mov %eax,%edx 0.00 : 422582: 48 98 cltq 0.00 : 422584: 80 7c 05 00 5d cmpb $0x5d,0x0(%rbp,%rax,1) 0.00 : 422589: 0f 85 71 ff ff ff jne 422500 0.00 : 42258f: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 422592: 48 63 f0 movslq %eax,%rsi 0.00 : 422595: 0f b6 4c 35 00 movzbl 0x0(%rbp,%rsi,1),%ecx 0.00 : 42259a: 80 f9 2b cmp $0x2b,%cl 0.00 : 42259d: 74 18 je 4225b7 0.00 : 42259f: 80 f9 3d cmp $0x3d,%cl 0.00 : 4225a2: 89 c6 mov %eax,%esi 0.00 : 4225a4: 0f 85 56 ff ff ff jne 422500 0.00 : 4225aa: e9 53 ff ff ff jmpq 422502 0.00 : 4225af: 83 c6 01 add $0x1,%esi 0.00 : 4225b2: e9 4b ff ff ff jmpq 422502 0.00 : 4225b7: 80 7c 35 01 3d cmpb $0x3d,0x1(%rbp,%rsi,1) 0.00 : 4225bc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4225c0: 0f 85 3a ff ff ff jne 422500 0.00 : 4225c6: 8d 72 02 lea 0x2(%rdx),%esi 0.00 : 4225c9: e9 34 ff ff ff jmpq 422502 Sorted summary for file /bin/bash ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000422ef0 : 0.00 : 422ef0: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 20.00 : 422ef5: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 422efa: 48 83 ec 18 sub $0x18,%rsp 0.00 : 422efe: 8b 05 48 19 27 00 mov 0x271948(%rip),%eax # 69484c 20.00 : 422f04: 48 89 fb mov %rdi,%rbx 0.00 : 422f07: 48 89 f5 mov %rsi,%rbp 0.00 : 422f0a: 85 c0 test %eax,%eax 0.00 : 422f0c: 7e 32 jle 422f40 0.00 : 422f0e: 48 8b 15 2b 19 27 00 mov 0x27192b(%rip),%rdx # 694840 0.00 : 422f15: 83 e8 01 sub $0x1,%eax 0.00 : 422f18: 89 05 2e 19 27 00 mov %eax,0x27192e(%rip) # 69484c 0.00 : 422f1e: 48 98 cltq 0.00 : 422f20: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 60.00 : 422f24: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 422f28: 48 89 28 mov %rbp,(%rax) 0.00 : 422f2b: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 422f30: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 422f35: 48 83 c4 18 add $0x18,%rsp 0.00 : 422f39: c3 retq 0.00 : 422f3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 422f40: bf 10 00 00 00 mov $0x10,%edi 0.00 : 422f45: e8 76 53 03 00 callq 4582c0 0.00 : 422f4a: eb d8 jmp 422f24 Sorted summary for file /bin/bash ---------------------------------------------- 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004235d0 : 0.00 : 4235d0: 41 57 push %r15 0.00 : 4235d2: 41 56 push %r14 0.00 : 4235d4: 41 55 push %r13 0.00 : 4235d6: 49 89 fd mov %rdi,%r13 0.00 : 4235d9: 48 89 f7 mov %rsi,%rdi 0.00 : 4235dc: 41 54 push %r12 0.00 : 4235de: 55 push %rbp 0.00 : 4235df: 31 ed xor %ebp,%ebp 0.00 : 4235e1: 53 push %rbx 0.00 : 4235e2: 48 83 ec 28 sub $0x28,%rsp 0.00 : 4235e6: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 4235eb: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 4235f2: 00 00 0.00 : 4235f4: e8 f7 2d ff ff callq 4163f0 0.00 : 4235f9: 49 89 c7 mov %rax,%r15 0.00 : 4235fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 423600: 48 63 dd movslq %ebp,%rbx 0.00 : 423603: 49 39 df cmp %rbx,%r15 0.00 : 423606: 76 69 jbe 423671 25.00 : 423608: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 42360d: 49 01 dc add %rbx,%r12 0.00 : 423610: 41 0f b6 04 24 movzbl (%r12),%eax 12.50 : 423615: 3c 24 cmp $0x24,%al 0.00 : 423617: 0f 84 8b 00 00 00 je 4236a8 12.50 : 42361d: 7f 71 jg 423690 0.00 : 42361f: 3c 22 cmp $0x22,%al 0.00 : 423621: 74 75 je 423698 0.00 : 423623: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 423628: e8 33 2e ff ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 42362d: 48 83 f8 01 cmp $0x1,%rax 0.00 : 423631: 76 55 jbe 423688 12.50 : 423633: 48 8d 4c 24 10 lea 0x10(%rsp),%rcx 0.00 : 423638: 4c 89 fa mov %r15,%rdx 0.00 : 42363b: 31 ff xor %edi,%edi 12.50 : 42363d: 48 29 da sub %rbx,%rdx 0.00 : 423640: 4c 89 e6 mov %r12,%rsi 0.00 : 423643: 4c 8b 74 24 10 mov 0x10(%rsp),%r14 0.00 : 423648: e8 03 28 ff ff callq 415e50 0.00 : 42364d: 48 89 c1 mov %rax,%rcx 0.00 : 423650: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 423654: 48 83 f8 01 cmp $0x1,%rax 0.00 : 423658: 76 5e jbe 4236b8 12.50 : 42365a: 8d 55 01 lea 0x1(%rbp),%edx 0.00 : 42365d: 8d 44 0d 00 lea 0x0(%rbp,%rcx,1),%eax 0.00 : 423661: 48 85 c9 test %rcx,%rcx 0.00 : 423664: 89 d5 mov %edx,%ebp 0.00 : 423666: 0f 45 e8 cmovne %eax,%ebp 12.50 : 423669: 48 63 dd movslq %ebp,%rbx 0.00 : 42366c: 49 39 df cmp %rbx,%r15 0.00 : 42366f: 77 97 ja 423608 0.00 : 423671: 48 83 c4 28 add $0x28,%rsp 0.00 : 423675: 4c 89 e8 mov %r13,%rax 0.00 : 423678: 5b pop %rbx 0.00 : 423679: 5d pop %rbp 0.00 : 42367a: 41 5c pop %r12 0.00 : 42367c: 41 5d pop %r13 0.00 : 42367e: 41 5e pop %r14 0.00 : 423680: 41 5f pop %r15 0.00 : 423682: c3 retq 0.00 : 423683: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 423688: 83 c5 01 add $0x1,%ebp 0.00 : 42368b: e9 70 ff ff ff jmpq 423600 0.00 : 423690: 3c 27 cmp $0x27,%al 0.00 : 423692: 74 04 je 423698 0.00 : 423694: 3c 60 cmp $0x60,%al 0.00 : 423696: 75 8b jne 423623 0.00 : 423698: 41 83 4d 08 02 orl $0x2,0x8(%r13) 0.00 : 42369d: 0f 1f 00 nopl (%rax) 0.00 : 4236a0: e9 7e ff ff ff jmpq 423623 0.00 : 4236a5: 0f 1f 00 nopl (%rax) 0.00 : 4236a8: 41 83 4d 08 01 orl $0x1,0x8(%r13) 0.00 : 4236ad: 0f 1f 00 nopl (%rax) 0.00 : 4236b0: e9 6e ff ff ff jmpq 423623 0.00 : 4236b5: 0f 1f 00 nopl (%rax) 0.00 : 4236b8: 4c 89 74 24 10 mov %r14,0x10(%rsp) 0.00 : 4236bd: 83 c5 01 add $0x1,%ebp 0.00 : 4236c0: e9 3b ff ff ff jmpq 423600 Sorted summary for file /bin/bash ---------------------------------------------- 75.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000433140 : 75.00 : 433140: 48 83 ec 08 sub $0x8,%rsp 25.00 : 433144: 31 f6 xor %esi,%esi 0.00 : 433146: bf 14 00 00 00 mov $0x14,%edi 0.00 : 43314b: e8 10 49 01 00 callq 447a60 0.00 : 433150: 31 f6 xor %esi,%esi 0.00 : 433152: bf 15 00 00 00 mov $0x15,%edi 0.00 : 433157: e8 04 49 01 00 callq 447a60 0.00 : 43315c: 31 f6 xor %esi,%esi 0.00 : 43315e: bf 16 00 00 00 mov $0x16,%edi 0.00 : 433163: 48 83 c4 08 add $0x8,%rsp 0.00 : 433167: e9 f4 48 01 00 jmpq 447a60 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043ad30 : 0.00 : 43ad30: 41 57 push %r15 0.00 : 43ad32: 41 56 push %r14 0.00 : 43ad34: 41 55 push %r13 0.00 : 43ad36: 45 31 ed xor %r13d,%r13d 0.00 : 43ad39: 41 54 push %r12 0.00 : 43ad3b: 55 push %rbp 0.00 : 43ad3c: 53 push %rbx 0.00 : 43ad3d: 48 89 fb mov %rdi,%rbx 0.00 : 43ad40: 48 83 ec 18 sub $0x18,%rsp 0.00 : 43ad44: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 43ad4b: 00 0.00 : 43ad4c: e8 9f b6 fd ff callq 4163f0 25.00 : 43ad51: 48 89 c2 mov %rax,%rdx 0.00 : 43ad54: 4c 8d 34 03 lea (%rbx,%rax,1),%r14 0.00 : 43ad58: 48 8b 05 a1 c0 25 00 mov 0x25c0a1(%rip),%rax # 696e00 0.00 : 43ad5f: 48 85 c0 test %rax,%rax 0.00 : 43ad62: 74 0a je 43ad6e 0.00 : 43ad64: 45 31 ed xor %r13d,%r13d 0.00 : 43ad67: 80 38 00 cmpb $0x0,(%rax) 0.00 : 43ad6a: 41 0f 94 c5 sete %r13b 0.00 : 43ad6e: 48 8d 7c 12 01 lea 0x1(%rdx,%rdx,1),%rdi 0.00 : 43ad73: e8 48 d5 01 00 callq 4582c0 0.00 : 43ad78: 49 89 c7 mov %rax,%r15 0.00 : 43ad7b: 48 89 c5 mov %rax,%rbp 0.00 : 43ad7e: 66 90 xchg %ax,%ax 0.00 : 43ad80: 0f b6 03 movzbl (%rbx),%eax 0.00 : 43ad83: 84 c0 test %al,%al 0.00 : 43ad85: 0f 84 87 00 00 00 je 43ae12 0.00 : 43ad8b: 3c 01 cmp $0x1,%al 0.00 : 43ad8d: 0f 84 9d 00 00 00 je 43ae30 0.00 : 43ad93: 3c 7f cmp $0x7f,%al 0.00 : 43ad95: 0f 84 95 00 00 00 je 43ae30 0.00 : 43ad9b: 45 85 ed test %r13d,%r13d 0.00 : 43ad9e: 66 90 xchg %ax,%ax 0.00 : 43ada0: 74 08 je 43adaa 0.00 : 43ada2: 3c 20 cmp $0x20,%al 0.00 : 43ada4: 0f 84 86 00 00 00 je 43ae30 0.00 : 43adaa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43adb0: e8 ab b6 fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43adb5: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43adb9: 0f 86 88 00 00 00 jbe 43ae47 0.00 : 43adbf: 4c 89 f2 mov %r14,%rdx 0.00 : 43adc2: 48 89 e1 mov %rsp,%rcx 0.00 : 43adc5: 31 ff xor %edi,%edi 50.00 : 43adc7: 48 29 da sub %rbx,%rdx 0.00 : 43adca: 48 89 de mov %rbx,%rsi 0.00 : 43adcd: 4c 8b 24 24 mov (%rsp),%r12 0.00 : 43add1: e8 7a b0 fd ff callq 415e50 0.00 : 43add6: 48 89 c1 mov %rax,%rcx 0.00 : 43add9: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 43addd: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43ade1: 76 7d jbe 43ae60 0.00 : 43ade3: 48 85 c9 test %rcx,%rcx 0.00 : 43ade6: 75 05 jne 43aded 0.00 : 43ade8: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 43aded: 31 d2 xor %edx,%edx 0.00 : 43adef: 90 nop 0.00 : 43adf0: 0f b6 03 movzbl (%rbx),%eax 0.00 : 43adf3: 48 83 c2 01 add $0x1,%rdx 0.00 : 43adf7: 48 83 c3 01 add $0x1,%rbx 0.00 : 43adfb: 88 45 00 mov %al,0x0(%rbp) 0.00 : 43adfe: 48 83 c5 01 add $0x1,%rbp 25.00 : 43ae02: 48 39 d1 cmp %rdx,%rcx 0.00 : 43ae05: 77 e9 ja 43adf0 0.00 : 43ae07: 0f b6 03 movzbl (%rbx),%eax 0.00 : 43ae0a: 84 c0 test %al,%al 0.00 : 43ae0c: 0f 85 79 ff ff ff jne 43ad8b 0.00 : 43ae12: c6 45 00 00 movb $0x0,0x0(%rbp) 0.00 : 43ae16: 48 83 c4 18 add $0x18,%rsp 0.00 : 43ae1a: 4c 89 f8 mov %r15,%rax 0.00 : 43ae1d: 5b pop %rbx 0.00 : 43ae1e: 5d pop %rbp 0.00 : 43ae1f: 41 5c pop %r12 0.00 : 43ae21: 41 5d pop %r13 0.00 : 43ae23: 41 5e pop %r14 0.00 : 43ae25: 41 5f pop %r15 0.00 : 43ae27: c3 retq 0.00 : 43ae28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43ae2f: 00 0.00 : 43ae30: c6 45 00 01 movb $0x1,0x0(%rbp) 0.00 : 43ae34: 48 83 c5 01 add $0x1,%rbp 0.00 : 43ae38: e8 23 b6 fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43ae3d: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43ae41: 0f 87 78 ff ff ff ja 43adbf 0.00 : 43ae47: 0f b6 03 movzbl (%rbx),%eax 0.00 : 43ae4a: 48 83 c3 01 add $0x1,%rbx 0.00 : 43ae4e: 88 45 00 mov %al,0x0(%rbp) 0.00 : 43ae51: 48 83 c5 01 add $0x1,%rbp 0.00 : 43ae55: e9 26 ff ff ff jmpq 43ad80 0.00 : 43ae5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43ae60: 4c 89 24 24 mov %r12,(%rsp) 0.00 : 43ae64: e9 7f ff ff ff jmpq 43ade8 Sorted summary for file /bin/bash ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000447a60 : 40.00 : 447a60: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 447a65: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 447a6a: 89 fd mov %edi,%ebp 0.00 : 447a6c: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 447a71: 48 81 ec 58 01 00 00 sub $0x158,%rsp 0.00 : 447a78: 83 ff 0e cmp $0xe,%edi 0.00 : 447a7b: c7 84 24 28 01 00 00 movl $0x0,0x128(%rsp) 0.00 : 447a82: 00 00 00 00 0.00 : 447a86: 74 14 je 447a9c 0.00 : 447a88: 48 81 fe a0 7c 44 00 cmp $0x447ca0,%rsi 0.00 : 447a8f: 74 0b je 447a9c 20.00 : 447a91: c7 84 24 28 01 00 00 movl $0x10000000,0x128(%rsp) 0.00 : 447a98: 00 00 00 10 0.00 : 447a9c: 48 81 fe 80 61 44 00 cmp $0x446180,%rsi 0.00 : 447aa3: 0f 84 97 00 00 00 je 447b40 0.00 : 447aa9: 48 81 fe a0 7c 44 00 cmp $0x447ca0,%rsi 0.00 : 447ab0: 74 7e je 447b30 0.00 : 447ab2: 83 fd 14 cmp $0x14,%ebp 0.00 : 447ab5: 74 19 je 447ad0 0.00 : 447ab7: 83 fd 16 cmp $0x16,%ebp 0.00 : 447aba: 74 14 je 447ad0 0.00 : 447abc: 83 fd 15 cmp $0x15,%ebp 0.00 : 447abf: 90 nop 0.00 : 447ac0: 74 0e je 447ad0 0.00 : 447ac2: 83 fd 12 cmp $0x12,%ebp 0.00 : 447ac5: 75 14 jne 447adb 0.00 : 447ac7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 447ace: 00 00 20.00 : 447ad0: 81 8c 24 28 01 00 00 orl $0x40000000,0x128(%rsp) 0.00 : 447ad7: 00 00 00 40 0.00 : 447adb: 4c 8d a4 24 a0 00 00 lea 0xa0(%rsp),%r12 0.00 : 447ae2: 00 0.00 : 447ae3: 48 89 b4 24 a0 00 00 mov %rsi,0xa0(%rsp) 0.00 : 447aea: 00 20.00 : 447aeb: 49 8d 7c 24 08 lea 0x8(%r12),%rdi 0.00 : 447af0: e8 4b f0 fc ff callq 416b40 0.00 : 447af5: 48 8d 7c 24 08 lea 0x8(%rsp),%rdi 0.00 : 447afa: e8 41 f0 fc ff callq 416b40 0.00 : 447aff: 48 89 e2 mov %rsp,%rdx 0.00 : 447b02: 4c 89 e6 mov %r12,%rsi 0.00 : 447b05: 89 ef mov %ebp,%edi 0.00 : 447b07: e8 e4 ea fc ff callq 4165f0 0.00 : 447b0c: 48 8b 04 24 mov (%rsp),%rax 0.00 : 447b10: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 447b17: 00 0.00 : 447b18: 48 8b ac 24 48 01 00 mov 0x148(%rsp),%rbp 0.00 : 447b1f: 00 0.00 : 447b20: 4c 8b a4 24 50 01 00 mov 0x150(%rsp),%r12 0.00 : 447b27: 00 0.00 : 447b28: 48 81 c4 58 01 00 00 add $0x158,%rsp 0.00 : 447b2f: c3 retq 0.00 : 447b30: 81 8c 24 28 01 00 00 orl $0x40000000,0x128(%rsp) 0.00 : 447b37: 00 00 00 40 0.00 : 447b3b: e9 72 ff ff ff jmpq 447ab2 0.00 : 447b40: 81 8c 24 28 01 00 00 orl $0x40000000,0x128(%rsp) 0.00 : 447b47: 00 00 00 40 0.00 : 447b4b: e9 59 ff ff ff jmpq 447aa9 Sorted summary for file /bin/bash ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000045c790 : 20.00 : 45c790: 41 56 push %r14 0.00 : 45c792: 49 89 f6 mov %rsi,%r14 0.00 : 45c795: 41 55 push %r13 0.00 : 45c797: 41 54 push %r12 0.00 : 45c799: 49 89 fc mov %rdi,%r12 0.00 : 45c79c: bf 97 96 47 00 mov $0x479697,%edi 0.00 : 45c7a1: 55 push %rbp 0.00 : 45c7a2: 53 push %rbx 0.00 : 45c7a3: 89 d3 mov %edx,%ebx 0.00 : 45c7a5: 41 89 dd mov %ebx,%r13d 0.00 : 45c7a8: 48 83 ec 10 sub $0x10,%rsp 0.00 : 45c7ac: e8 0f a7 fe ff callq 446ec0 0.00 : 45c7b1: be 04 00 00 00 mov $0x4,%esi 0.00 : 45c7b6: bf 74 63 69 00 mov $0x696374,%edi 0.00 : 45c7bb: e8 b0 a7 fe ff callq 446f70 0.00 : 45c7c0: be c8 00 00 00 mov $0xc8,%esi 0.00 : 45c7c5: bf 20 74 69 00 mov $0x697420,%edi 0.00 : 45c7ca: e8 a1 a7 fe ff callq 446f70 0.00 : 45c7cf: be 04 00 00 00 mov $0x4,%esi 0.00 : 45c7d4: bf ec 33 69 00 mov $0x6933ec,%edi 0.00 : 45c7d9: e8 92 a7 fe ff callq 446f70 0.00 : 45c7de: be 04 00 00 00 mov $0x4,%esi 0.00 : 45c7e3: bf 84 34 69 00 mov $0x693484,%edi 0.00 : 45c7e8: e8 83 a7 fe ff callq 446f70 0.00 : 45c7ed: be 04 00 00 00 mov $0x4,%esi 0.00 : 45c7f2: bf 38 63 69 00 mov $0x696338,%edi 0.00 : 45c7f7: e8 74 a7 fe ff callq 446f70 0.00 : 45c7fc: 41 83 e5 03 and $0x3,%r13d 0.00 : 45c800: 0f 85 5a 04 00 00 jne 45cc60 0.00 : 45c806: 8b 05 68 9b 23 00 mov 0x239b68(%rip),%eax # 696374 0.00 : 45c80c: 89 dd mov %ebx,%ebp 0.00 : 45c80e: 83 e5 10 and $0x10,%ebp 0.00 : 45c811: 85 c0 test %eax,%eax 0.00 : 45c813: 0f 85 87 02 00 00 jne 45caa0 0.00 : 45c819: 31 c0 xor %eax,%eax 0.00 : 45c81b: 31 f6 xor %esi,%esi 0.00 : 45c81d: bf 80 c7 45 00 mov $0x45c780,%edi 0.00 : 45c822: e8 79 a6 fe ff callq 446ea0 0.00 : 45c827: 8b 05 ab 6b 23 00 mov 0x236bab(%rip),%eax # 6933d8 0.00 : 45c82d: 85 c0 test %eax,%eax 0.00 : 45c82f: 0f 85 88 02 00 00 jne 45cabd 0.00 : 45c835: 31 f6 xor %esi,%esi 0.00 : 45c837: 31 c0 xor %eax,%eax 0.00 : 45c839: bf b0 a4 41 00 mov $0x41a4b0,%edi 0.00 : 45c83e: e8 5d a6 fe ff callq 446ea0 0.00 : 45c843: 4d 85 e4 test %r12,%r12 0.00 : 45c846: 74 09 je 45c851 0.00 : 45c848: f6 c3 08 test $0x8,%bl 0.00 : 45c84b: 0f 84 4f 04 00 00 je 45cca0 0.00 : 45c851: 89 ef mov %ebp,%edi 0.00 : 45c853: 83 05 1a 9b 23 00 01 addl $0x1,0x239b1a(%rip) # 696374 0.00 : 45c85a: e8 31 dd fb ff callq 41a590 0.00 : 45c85f: 85 ed test %ebp,%ebp 0.00 : 45c861: 75 07 jne 45c86a 0.00 : 45c863: 83 2d 1a 6c 23 00 01 subl $0x1,0x236c1a(%rip) # 693484 0.00 : 45c86a: 83 05 7b 6b 23 00 01 addl $0x1,0x236b7b(%rip) # 6933ec 0.00 : 45c871: 45 85 ed test %r13d,%r13d 0.00 : 45c874: 74 0e je 45c884 0.00 : 45c876: 89 d8 mov %ebx,%eax 0.00 : 45c878: 83 f0 01 xor $0x1,%eax 0.00 : 45c87b: 83 e0 01 and $0x1,%eax 0.00 : 45c87e: 89 05 50 6b 23 00 mov %eax,0x236b50(%rip) # 6933d4 0.00 : 45c884: 83 e3 04 and $0x4,%ebx 0.00 : 45c887: 0f 85 c3 03 00 00 jne 45cc50 20.00 : 45c88d: 4c 89 f6 mov %r14,%rsi 0.00 : 45c890: 4c 89 e7 mov %r12,%rdi 0.00 : 45c893: c7 44 24 0c 00 00 00 movl $0x0,0xc(%rsp) 0.00 : 45c89a: 00 0.00 : 45c89b: 8b 6c 24 0c mov 0xc(%rsp),%ebp 0.00 : 45c89f: c7 44 24 08 00 00 00 movl $0x0,0x8(%rsp) 0.00 : 45c8a6: 00 0.00 : 45c8a7: e8 84 d7 fb ff callq 41a030 0.00 : 45c8ac: 48 8b 05 9d a1 23 00 mov 0x23a19d(%rip),%rax # 696a50 0.00 : 45c8b3: 80 38 00 cmpb $0x0,(%rax) 0.00 : 45c8b6: 0f 84 34 01 00 00 je 45c9f0 0.00 : 45c8bc: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 45c8c3: 00 0.00 : 45c8c4: 8b 05 6e 96 23 00 mov 0x23966e(%rip),%eax # 695f38 0.00 : 45c8ca: 85 c0 test %eax,%eax 0.00 : 45c8cc: 0f 85 fe 03 00 00 jne 45ccd0 0.00 : 45c8d2: be 01 00 00 00 mov $0x1,%esi 0.00 : 45c8d7: bf 20 74 69 00 mov $0x697420,%edi 0.00 : 45c8dc: e8 cf a2 fb ff callq 416bb0 <__sigsetjmp@plt> 0.00 : 45c8e1: 85 c0 test %eax,%eax 0.00 : 45c8e3: 89 c5 mov %eax,%ebp 0.00 : 45c8e5: 74 33 je 45c91a 0.00 : 45c8e7: 83 f8 02 cmp $0x2,%eax 0.00 : 45c8ea: c7 44 24 0c 00 00 00 movl $0x0,0xc(%rsp) 0.00 : 45c8f1: 00 0.00 : 45c8f2: 0f 84 68 01 00 00 je 45ca60 0.00 : 45c8f8: 0f 8f 32 01 00 00 jg 45ca30 0.00 : 45c8fe: 83 f8 01 cmp $0x1,%eax 0.00 : 45c901: 0f 84 32 01 00 00 je 45ca39 0.00 : 45c907: 31 c9 xor %ecx,%ecx 0.00 : 45c909: 89 ea mov %ebp,%edx 0.00 : 45c90b: be 03 00 00 00 mov $0x3,%esi 0.00 : 45c910: bf b8 96 47 00 mov $0x4796b8,%edi 0.00 : 45c915: e8 16 3e fd ff callq 430730 0.00 : 45c91a: e8 b1 c8 fb ff callq 4191d0 20.00 : 45c91f: 85 c0 test %eax,%eax 0.00 : 45c921: 0f 85 a9 03 00 00 jne 45ccd0 0.00 : 45c927: 44 8b 15 aa 6a 23 00 mov 0x236aaa(%rip),%r10d # 6933d8 0.00 : 45c92e: 45 85 d2 test %r10d,%r10d 0.00 : 45c931: 75 10 jne 45c943 0.00 : 45c933: 44 8b 0d d2 81 23 00 mov 0x2381d2(%rip),%r9d # 694b0c 0.00 : 45c93a: 45 85 c9 test %r9d,%r9d 0.00 : 45c93d: 0f 85 35 03 00 00 jne 45cc78 0.00 : 45c943: 48 8b 05 76 6a 23 00 mov 0x236a76(%rip),%rax # 6933c0 0.00 : 45c94a: 48 89 04 24 mov %rax,(%rsp) 0.00 : 45c94e: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45c952: 48 85 c0 test %rax,%rax 0.00 : 45c955: 0f 84 51 ff ff ff je 45c8ac 0.00 : 45c95b: bf 20 00 00 00 mov $0x20,%edi 0.00 : 45c960: e8 0b a4 fc ff callq 426d70 0.00 : 45c965: bf ad 96 47 00 mov $0x4796ad,%edi 0.00 : 45c96a: 49 89 c4 mov %rax,%r12 0.00 : 45c96d: e8 4e a5 fe ff callq 446ec0 0.00 : 45c972: 31 c0 xor %eax,%eax 0.00 : 45c974: 4c 89 e6 mov %r12,%rsi 0.00 : 45c977: bf d0 60 42 00 mov $0x4260d0,%edi 0.00 : 45c97c: e8 1f a5 fe ff callq 446ea0 0.00 : 45c981: 48 8b 34 24 mov (%rsp),%rsi 0.00 : 45c985: 31 c0 xor %eax,%eax 0.00 : 45c987: bf b0 5a 42 00 mov $0x425ab0,%edi 0.00 : 45c98c: e8 0f a5 fe ff callq 446ea0 0.00 : 45c991: 83 3d 48 6a 23 00 02 cmpl $0x2,0x236a48(%rip) # 6933e0 0.00 : 45c998: 48 c7 05 1d 6a 23 00 movq $0x0,0x236a1d(%rip) # 6933c0 0.00 : 45c99f: 00 00 00 00 0.00 : 45c9a3: 0f 84 4f 01 00 00 je 45caf8 0.00 : 45c9a9: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 45c9ad: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 45c9b2: 4d 89 e0 mov %r12,%r8 0.00 : 45c9b5: 89 ca mov %ecx,%edx 0.00 : 45c9b7: 31 f6 xor %esi,%esi 0.00 : 45c9b9: e8 a2 a6 fc ff callq 427060 0.00 : 45c9be: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 45c9c2: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 45c9c6: e8 e5 90 fc ff callq 425ab0 0.00 : 45c9cb: 4c 89 e7 mov %r12,%rdi 0.00 : 45c9ce: e8 fd 96 fc ff callq 4260d0 0.00 : 45c9d3: bf ad 96 47 00 mov $0x4796ad,%edi 0.00 : 45c9d8: e8 63 a4 fe ff callq 446e40 0.00 : 45c9dd: 48 8b 05 6c a0 23 00 mov 0x23a06c(%rip),%rax # 696a50 0.00 : 45c9e4: 80 38 00 cmpb $0x0,(%rax) 0.00 : 45c9e7: 0f 85 cf fe ff ff jne 45c8bc 0.00 : 45c9ed: 0f 1f 00 nopl (%rax) 0.00 : 45c9f0: bf 97 96 47 00 mov $0x479697,%edi 0.00 : 45c9f5: e8 76 a4 fe ff callq 446e70 0.00 : 45c9fa: 8b 05 38 95 23 00 mov 0x239538(%rip),%eax # 695f38 0.00 : 45ca00: 85 c0 test %eax,%eax 0.00 : 45ca02: 74 0e je 45ca12 0.00 : 45ca04: 8b 05 6a 99 23 00 mov 0x23996a(%rip),%eax # 696374 0.00 : 45ca0a: 85 c0 test %eax,%eax 0.00 : 45ca0c: 0f 84 a6 02 00 00 je 45ccb8 0.00 : 45ca12: 8b 44 24 0c mov 0xc(%rsp),%eax 0.00 : 45ca16: 85 c0 test %eax,%eax 0.00 : 45ca18: 0f 85 1a 03 00 00 jne 45cd38 0.00 : 45ca1e: 8b 44 24 08 mov 0x8(%rsp),%eax 0.00 : 45ca22: 48 83 c4 10 add $0x10,%rsp 0.00 : 45ca26: 5b pop %rbx 0.00 : 45ca27: 5d pop %rbp 0.00 : 45ca28: 41 5c pop %r12 0.00 : 45ca2a: 41 5d pop %r13 0.00 : 45ca2c: 41 5e pop %r14 0.00 : 45ca2e: c3 retq 0.00 : 45ca2f: 90 nop 0.00 : 45ca30: 83 f8 04 cmp $0x4,%eax 0.00 : 45ca33: 0f 8f ce fe ff ff jg 45c907 0.00 : 45ca39: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45ca3d: 48 85 c0 test %rax,%rax 0.00 : 45ca40: 74 0a je 45ca4c 0.00 : 45ca42: bf ad 96 47 00 mov $0x4796ad,%edi 0.00 : 45ca47: e8 24 a4 fe ff callq 446e70 0.00 : 45ca4c: c7 44 24 0c 01 00 00 movl $0x1,0xc(%rsp) 0.00 : 45ca53: 00 0.00 : 45ca54: eb 9a jmp 45c9f0 0.00 : 45ca56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 45ca5d: 00 00 00 0.00 : 45ca60: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45ca64: 48 85 c0 test %rax,%rax 0.00 : 45ca67: 74 0a je 45ca73 0.00 : 45ca69: bf ad 96 47 00 mov $0x4796ad,%edi 0.00 : 45ca6e: e8 fd a3 fe ff callq 446e70 0.00 : 45ca73: 44 8b 1d 1e a1 23 00 mov 0x23a11e(%rip),%r11d # 696b98 0.00 : 45ca7a: c7 05 20 a0 23 00 01 movl $0x1,0x23a020(%rip) # 696aa4 0.00 : 45ca81: 00 00 00 0.00 : 45ca84: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 45ca8b: 00 0.00 : 45ca8c: 45 85 db test %r11d,%r11d 0.00 : 45ca8f: 0f 84 17 fe ff ff je 45c8ac 0.00 : 45ca95: eb b5 jmp 45ca4c 0.00 : 45ca97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45ca9e: 00 00 0.00 : 45caa0: be 04 00 00 00 mov $0x4,%esi 0.00 : 45caa5: bf 00 b7 68 00 mov $0x68b700,%edi 0.00 : 45caaa: e8 c1 a4 fe ff callq 446f70 0.00 : 45caaf: 8b 05 23 69 23 00 mov 0x236923(%rip),%eax # 6933d8 0.00 : 45cab5: 85 c0 test %eax,%eax 0.00 : 45cab7: 0f 84 78 fd ff ff je 45c835 0.00 : 45cabd: be 04 00 00 00 mov $0x4,%esi 0.00 : 45cac2: bf f0 74 69 00 mov $0x6974f0,%edi 0.00 : 45cac7: e8 a4 a4 fe ff callq 446f70 0.00 : 45cacc: 8b 05 06 69 23 00 mov 0x236906(%rip),%eax # 6933d8 0.00 : 45cad2: 85 c0 test %eax,%eax 0.00 : 45cad4: 0f 84 5b fd ff ff je 45c835 0.00 : 45cada: e8 31 cf fb ff callq 419a10 0.00 : 45cadf: bf 40 9a 41 00 mov $0x419a40,%edi 0.00 : 45cae4: 89 c6 mov %eax,%esi 0.00 : 45cae6: 31 c0 xor %eax,%eax 0.00 : 45cae8: e8 b3 a3 fe ff callq 446ea0 0.00 : 45caed: e9 43 fd ff ff jmpq 45c835 0.00 : 45caf2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45caf8: 83 3d 75 98 23 00 01 cmpl $0x1,0x239875(%rip) # 696374 0.00 : 45caff: 0f 84 db 01 00 00 je 45cce0 0.00 : 45cb05: f6 05 8c a0 23 00 04 testb $0x4,0x23a08c(%rip) # 696b98 0.00 : 45cb0c: 0f 84 97 fe ff ff je 45c9a9 0.00 : 45cb12: 48 8b 05 37 9f 23 00 mov 0x239f37(%rip),%rax # 696a50 0.00 : 45cb19: 80 38 00 cmpb $0x0,(%rax) 0.00 : 45cb1c: 0f 85 87 fe ff ff jne 45c9a9 0.00 : 45cb22: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cb26: 83 38 04 cmpl $0x4,(%rax) 20.00 : 45cb29: 0f 85 7a fe ff ff jne 45c9a9 0.00 : 45cb2f: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cb33: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 45cb38: 0f 85 6b fe ff ff jne 45c9a9 0.00 : 45cb3e: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cb42: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 45cb46: 0f 88 5d fe ff ff js 45c9a9 0.00 : 45cb4c: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cb50: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 45cb54: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 45cb59: 0f 85 4a fe ff ff jne 45c9a9 0.00 : 45cb5f: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cb63: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 45cb67: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 45cb6c: 0f 84 37 fe ff ff je 45c9a9 0.00 : 45cb72: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cb76: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 45cb7a: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 45cb7e: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 45cb82: 0f 85 21 fe ff ff jne 45c9a9 0.00 : 45cb88: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cb8c: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 45cb90: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 45cb94: 83 78 10 01 cmpl $0x1,0x10(%rax) 0.00 : 45cb98: 0f 85 0b fe ff ff jne 45c9a9 0.00 : 45cb9e: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cba2: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 45cba6: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 45cbaa: b8 01 00 00 00 mov $0x1,%eax 0.00 : 45cbaf: 83 7b 10 01 cmpl $0x1,0x10(%rbx) 0.00 : 45cbb3: 0f 85 05 fe ff ff jne 45c9be 0.00 : 45cbb9: 8b 3d 49 68 23 00 mov 0x236849(%rip),%edi # 693408 0.00 : 45cbbf: 85 ff test %edi,%edi 0.00 : 45cbc1: 74 11 je 45cbd4 0.00 : 45cbc3: 8b 35 0f 68 23 00 mov 0x23680f(%rip),%esi # 6933d8 0.00 : 45cbc9: 85 f6 test %esi,%esi 0.00 : 45cbcb: 75 07 jne 45cbd4 0.00 : 45cbcd: 83 05 30 7f 23 00 01 addl $0x1,0x237f30(%rip) # 694b04 0.00 : 45cbd4: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 45cbd8: e8 23 7b ff ff callq 454700 0.00 : 45cbdd: 8b 0d 25 68 23 00 mov 0x236825(%rip),%ecx # 693408 0.00 : 45cbe3: 49 89 c6 mov %rax,%r14 0.00 : 45cbe6: 85 c9 test %ecx,%ecx 0.00 : 45cbe8: 74 11 je 45cbfb 0.00 : 45cbea: 8b 15 e8 67 23 00 mov 0x2367e8(%rip),%edx # 6933d8 0.00 : 45cbf0: 85 d2 test %edx,%edx 0.00 : 45cbf2: 75 07 jne 45cbfb 0.00 : 45cbf4: 83 2d 09 7f 23 00 01 subl $0x1,0x237f09(%rip) # 694b04 0.00 : 45cbfb: 4d 85 f6 test %r14,%r14 0.00 : 45cbfe: 0f 84 8d 01 00 00 je 45cd91 0.00 : 45cc04: 31 f6 xor %esi,%esi 0.00 : 45cc06: 31 c0 xor %eax,%eax 0.00 : 45cc08: 4c 89 f7 mov %r14,%rdi 0.00 : 45cc0b: e8 d0 a0 fb ff callq 416ce0 0.00 : 45cc10: 85 c0 test %eax,%eax 0.00 : 45cc12: 41 89 c5 mov %eax,%r13d 0.00 : 45cc15: 0f 88 5c 01 00 00 js 45cd77 0.00 : 45cc1b: 4c 89 f2 mov %r14,%rdx 0.00 : 45cc1e: be 01 00 00 00 mov $0x1,%esi 0.00 : 45cc23: 89 c7 mov %eax,%edi 0.00 : 45cc25: e8 e6 11 01 00 callq 46de10 0.00 : 45cc2a: 4c 89 f7 mov %r14,%rdi 0.00 : 45cc2d: 89 c3 mov %eax,%ebx 0.00 : 45cc2f: e8 8c 97 fb ff callq 4163c0 0.00 : 45cc34: 44 89 ef mov %r13d,%edi 0.00 : 45cc37: e8 a4 92 fb ff callq 415ee0 0.00 : 45cc3c: 89 d8 mov %ebx,%eax 0.00 : 45cc3e: c1 e8 1f shr $0x1f,%eax 0.00 : 45cc41: e9 78 fd ff ff jmpq 45c9be 0.00 : 45cc46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 45cc4d: 00 00 00 0.00 : 45cc50: e8 0b 07 ff ff callq 44d360 0.00 : 45cc55: e9 33 fc ff ff jmpq 45c88d 0.00 : 45cc5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45cc60: be 04 00 00 00 mov $0x4,%esi 0.00 : 45cc65: bf d4 33 69 00 mov $0x6933d4,%edi 0.00 : 45cc6a: e8 01 a3 fe ff callq 446f70 0.00 : 45cc6f: e9 92 fb ff ff jmpq 45c806 0.00 : 45cc74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 45cc78: 48 8b 3d 41 67 23 00 mov 0x236741(%rip),%rdi # 6933c0 0.00 : 45cc7f: c7 44 24 08 00 00 00 movl $0x0,0x8(%rsp) 0.00 : 45cc86: 00 0.00 : 45cc87: e8 24 8e fc ff callq 425ab0 0.00 : 45cc8c: 48 c7 05 29 67 23 00 movq $0x0,0x236729(%rip) # 6933c0 0.00 : 45cc93: 00 00 00 00 0.00 : 45cc97: e9 10 fc ff ff jmpq 45c8ac 0.00 : 45cc9c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 45cca0: 4c 89 e6 mov %r12,%rsi 0.00 : 45cca3: bf d0 81 45 00 mov $0x4581d0,%edi 0.00 : 45cca8: 31 c0 xor %eax,%eax 0.00 : 45ccaa: e8 f1 a1 fe ff callq 446ea0 0.00 : 45ccaf: e9 9d fb ff ff jmpq 45c851 0.00 : 45ccb4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 45ccb8: 8b 05 1a 67 23 00 mov 0x23671a(%rip),%eax # 6933d8 0.00 : 45ccbe: 89 05 10 67 23 00 mov %eax,0x236710(%rip) # 6933d4 0.00 : 45ccc4: e8 c7 b0 fe ff callq 447d90 0.00 : 45ccc9: e9 44 fd ff ff jmpq 45ca12 0.00 : 45ccce: 66 90 xchg %ax,%ax 0.00 : 45ccd0: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 45ccd7: 00 0.00 : 45ccd8: e9 13 fd ff ff jmpq 45c9f0 0.00 : 45ccdd: 0f 1f 00 nopl (%rax) 0.00 : 45cce0: 44 8b 05 65 a4 23 00 mov 0x23a465(%rip),%r8d # 69714c 20.00 : 45cce7: 45 85 c0 test %r8d,%r8d 0.00 : 45ccea: 0f 85 15 fe ff ff jne 45cb05 0.00 : 45ccf0: 48 8b 05 59 9d 23 00 mov 0x239d59(%rip),%rax # 696a50 0.00 : 45ccf7: 80 38 00 cmpb $0x0,(%rax) 0.00 : 45ccfa: 0f 85 05 fe ff ff jne 45cb05 0.00 : 45cd00: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cd04: 83 38 04 cmpl $0x4,(%rax) 0.00 : 45cd07: 0f 85 f8 fd ff ff jne 45cb05 0.00 : 45cd0d: 31 ff xor %edi,%edi 0.00 : 45cd0f: e8 9c 85 fe ff callq 4452b0 0.00 : 45cd14: 85 c0 test %eax,%eax 0.00 : 45cd16: 75 0b jne 45cd23 0.00 : 45cd18: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cd1c: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 45cd21: 74 1c je 45cd3f 0.00 : 45cd23: 83 3d b6 66 23 00 02 cmpl $0x2,0x2366b6(%rip) # 6933e0 0.00 : 45cd2a: 0f 84 d5 fd ff ff je 45cb05 0.00 : 45cd30: e9 74 fc ff ff jmpq 45c9a9 0.00 : 45cd35: 0f 1f 00 nopl (%rax) 0.00 : 45cd38: 89 ef mov %ebp,%edi 0.00 : 45cd3a: e8 e1 af fe ff callq 447d20 0.00 : 45cd3f: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cd43: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 45cd47: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 45cd4c: 75 d5 jne 45cd23 0.00 : 45cd4e: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cd52: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 45cd56: 78 cb js 45cd23 0.00 : 45cd58: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cd5c: f6 40 04 04 testb $0x4,0x4(%rax) 0.00 : 45cd60: 75 c1 jne 45cd23 0.00 : 45cd62: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cd66: 83 48 04 40 orl $0x40,0x4(%rax) 0.00 : 45cd6a: 48 8b 04 24 mov (%rsp),%rax 0.00 : 45cd6e: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 45cd72: 83 08 40 orl $0x40,(%rax) 0.00 : 45cd75: eb ac jmp 45cd23 0.00 : 45cd77: 4c 89 f7 mov %r14,%rdi 0.00 : 45cd7a: e8 41 41 fd ff callq 430ec0 0.00 : 45cd7f: 4c 89 f7 mov %r14,%rdi 0.00 : 45cd82: e8 39 96 fb ff callq 4163c0 0.00 : 45cd87: b8 01 00 00 00 mov $0x1,%eax 0.00 : 45cd8c: e9 2d fc ff ff jmpq 45c9be 0.00 : 45cd91: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 45cd96: 48 89 df mov %rbx,%rdi 0.00 : 45cd99: e8 02 8a ff ff callq 4557a0 0.00 : 45cd9e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 45cda3: e9 16 fc ff ff jmpq 45c9be Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 42.86 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:301 28.57 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:323 14.29 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:304 14.29 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:345 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042cb80 : : * This MUST be kept in sync with pg_wcssize! : */ : void : pg_wcsformat(const unsigned char *pwcs, size_t len, int encoding, : struct lineptr * lines, int count) : { 0.00 : 42cb80: 55 push %rbp 0.00 : 42cb81: 48 89 e5 mov %rsp,%rbp 0.00 : 42cb84: 41 57 push %r15 0.00 : 42cb86: 41 56 push %r14 0.00 : 42cb88: 41 55 push %r13 0.00 : 42cb8a: 41 54 push %r12 0.00 : 42cb8c: 49 89 fc mov %rdi,%r12 0.00 : 42cb8f: 53 push %rbx 0.00 : 42cb90: 48 83 ec 28 sub $0x28,%rsp 0.00 : 42cb94: 48 89 75 d0 mov %rsi,-0x30(%rbp) 0.00 : 42cb98: 89 55 cc mov %edx,-0x34(%rbp) 0.00 : 42cb9b: 48 89 4d c0 mov %rcx,-0x40(%rbp) 0.00 : 42cb9f: 44 89 45 bc mov %r8d,-0x44(%rbp) : int w, : chlen = 0; : int linewidth = 0; : unsigned char *ptr = lines->ptr; /* Pointer to data area */ : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42cba3: 80 3f 00 cmpb $0x0,(%rdi) : struct lineptr * lines, int count) : { : int w, : chlen = 0; : int linewidth = 0; : unsigned char *ptr = lines->ptr; /* Pointer to data area */ 0.00 : 42cba6: 4c 8b 29 mov (%rcx),%r13 : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42cba9: 75 38 jne 42cbe3 0.00 : 42cbab: 45 31 f6 xor %r14d,%r14d 0.00 : 42cbae: 66 90 xchg %ax,%ax : *ptr++ = pwcs[i]; : linewidth += w; : } : len -= chlen; : } : lines->width = linewidth; 0.00 : 42cbb0: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 42cbb4: 44 89 70 08 mov %r14d,0x8(%rax) : *ptr++ = '\0'; /* Terminate formatted string */ 0.00 : 42cbb8: 41 c6 45 00 00 movb $0x0,0x0(%r13) : : if (count <= 0) 0.00 : 42cbbd: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 42cbc0: 85 d2 test %edx,%edx 0.00 : 42cbc2: 0f 8e 7b 02 00 00 jle 42ce43 : exit(1); /* Screwup */ : : (lines + 1)->ptr = NULL; /* terminate line array */ 0.00 : 42cbc8: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 42cbcc: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 42cbd3: 00 : } 0.00 : 42cbd4: 48 83 c4 28 add $0x28,%rsp 0.00 : 42cbd8: 5b pop %rbx 0.00 : 42cbd9: 41 5c pop %r12 0.00 : 42cbdb: 41 5d pop %r13 0.00 : 42cbdd: 41 5e pop %r14 0.00 : 42cbdf: 41 5f pop %r15 0.00 : 42cbe1: c9 leaveq 0.00 : 42cbe2: c3 retq : int w, : chlen = 0; : int linewidth = 0; : unsigned char *ptr = lines->ptr; /* Pointer to data area */ : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42cbe3: 45 31 f6 xor %r14d,%r14d 0.00 : 42cbe6: 48 85 f6 test %rsi,%rsi 0.00 : 42cbe9: 74 c0 je 42cbab 0.00 : 42cbeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : chlen = PQmblen((const char *) pwcs, encoding); 0.00 : 42cbf0: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 42cbf3: 4c 89 e7 mov %r12,%rdi 0.00 : 42cbf6: e8 95 6b fd ff callq 403790 : if (len < (size_t) chlen) /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:304 14.29 : 42cbfb: 4c 63 f8 movslq %eax,%r15 0.00 : 42cbfe: 4c 3b 7d d0 cmp -0x30(%rbp),%r15 : int linewidth = 0; : unsigned char *ptr = lines->ptr; /* Pointer to data area */ : : for (; *pwcs && len > 0; pwcs += chlen) : { : chlen = PQmblen((const char *) pwcs, encoding); 0.00 : 42cc02: 89 c3 mov %eax,%ebx : if (len < (size_t) chlen) 0.00 : 42cc04: 77 aa ja 42cbb0 : break; : w = PQdsplen((const char *) pwcs, encoding); 0.00 : 42cc06: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 42cc09: 4c 89 e7 mov %r12,%rdi 0.00 : 42cc0c: e8 8f 6e fd ff callq 403aa0 : : if (chlen == 1) /* single-byte char */ 0.00 : 42cc11: 83 fb 01 cmp $0x1,%ebx : for (; *pwcs && len > 0; pwcs += chlen) : { : chlen = PQmblen((const char *) pwcs, encoding); : if (len < (size_t) chlen) : break; : w = PQdsplen((const char *) pwcs, encoding); 0.00 : 42cc14: 89 c1 mov %eax,%ecx : : if (chlen == 1) /* single-byte char */ 0.00 : 42cc16: 74 58 je 42cc70 : { : linewidth += w; : *ptr++ = *pwcs; : } : } : else if (w < 0) /* Non-ascii control char */ 0.00 : 42cc18: 85 c0 test %eax,%eax 0.00 : 42cc1a: 0f 88 a0 00 00 00 js 42ccc0 : * to support it at some stage : */ : sprintf((char *) ptr, "\\u????"); : } : ptr += 6; : linewidth += 6; 0.00 : 42cc20: 31 d2 xor %edx,%edx : } : else /* All other chars */ : { : int i; : : for (i = 0; i < chlen; i++) 0.00 : 42cc22: 85 db test %ebx,%ebx 0.00 : 42cc24: 7e 24 jle 42cc4a 0.00 : 42cc26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 42cc2d: 00 00 00 : *ptr++ = pwcs[i]; 0.00 : 42cc30: 41 0f b6 04 14 movzbl (%r12,%rdx,1),%eax 0.00 : 42cc35: 41 88 44 15 00 mov %al,0x0(%r13,%rdx,1) 0.00 : 42cc3a: 48 83 c2 01 add $0x1,%rdx : } : else /* All other chars */ : { : int i; : : for (i = 0; i < chlen; i++) 0.00 : 42cc3e: 39 d3 cmp %edx,%ebx 0.00 : 42cc40: 7f ee jg 42cc30 0.00 : 42cc42: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 42cc45: 4d 8d 6c 05 01 lea 0x1(%r13,%rax,1),%r13 : *ptr++ = pwcs[i]; : linewidth += w; 0.00 : 42cc4a: 41 01 ce add %ecx,%r14d : int w, : chlen = 0; : int linewidth = 0; : unsigned char *ptr = lines->ptr; /* Pointer to data area */ : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42cc4d: 4d 01 fc add %r15,%r12 : : for (i = 0; i < chlen; i++) : *ptr++ = pwcs[i]; : linewidth += w; : } : len -= chlen; 0.00 : 42cc50: 4c 29 7d d0 sub %r15,-0x30(%rbp) : int w, : chlen = 0; : int linewidth = 0; : unsigned char *ptr = lines->ptr; /* Pointer to data area */ : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42cc54: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 42cc59: 0f 84 51 ff ff ff je 42cbb0 0.00 : 42cc5f: 48 83 7d d0 00 cmpq $0x0,-0x30(%rbp) /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:301 42.86 : 42cc64: 75 8a jne 42cbf0 0.00 : 42cc66: e9 45 ff ff ff jmpq 42cbb0 0.00 : 42cc6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : break; : w = PQdsplen((const char *) pwcs, encoding); : : if (chlen == 1) /* single-byte char */ : { : if (*pwcs == '\n') /* Newline */ 0.00 : 42cc70: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 42cc75: 3c 0a cmp $0xa,%al 0.00 : 42cc77: 0f 84 a3 00 00 00 je 42cd20 : exit(1); /* Screwup */ : : /* make next line point to remaining memory */ : lines->ptr = ptr; : } : else if (*pwcs == '\r') /* Linefeed */ /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:323 28.57 : 42cc7d: 3c 0d cmp $0xd,%al 0.00 : 42cc7f: 90 nop 0.00 : 42cc80: 0f 84 ce 00 00 00 je 42cd54 : { : strcpy((char *) ptr, "\\r"); : linewidth += 2; : ptr += 2; : } : else if (*pwcs == '\t') /* Tab */ 0.00 : 42cc86: 3c 09 cmp $0x9,%al 0.00 : 42cc88: 74 1e je 42cca8 : { : *ptr++ = ' '; : linewidth++; : } while (linewidth % 8 != 0); : } : else if (w < 0) /* Other control char */ 0.00 : 42cc8a: 85 c9 test %ecx,%ecx 0.00 : 42cc8c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42cc90: 0f 88 54 01 00 00 js 42cdea : ptr += 4; : } : else /* Output it as-is */ : { : linewidth += w; : *ptr++ = *pwcs; 0.00 : 42cc96: 41 88 45 00 mov %al,0x0(%r13) : linewidth += 4; : ptr += 4; : } : else /* Output it as-is */ : { : linewidth += w; /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:345 14.29 : 42cc9a: 41 01 ce add %ecx,%r14d : *ptr++ = *pwcs; 0.00 : 42cc9d: 49 83 c5 01 add $0x1,%r13 0.00 : 42cca1: eb aa jmp 42cc4d 0.00 : 42cca3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : else if (*pwcs == '\t') /* Tab */ : { : do : { : *ptr++ = ' '; : linewidth++; 0.00 : 42cca8: 41 83 c6 01 add $0x1,%r14d : } : else if (*pwcs == '\t') /* Tab */ : { : do : { : *ptr++ = ' '; 0.00 : 42ccac: 41 c6 45 00 20 movb $0x20,0x0(%r13) 0.00 : 42ccb1: 49 83 c5 01 add $0x1,%r13 : linewidth++; : } while (linewidth % 8 != 0); 0.00 : 42ccb5: 41 f6 c6 07 test $0x7,%r14b 0.00 : 42ccb9: 75 ed jne 42cca8 0.00 : 42ccbb: eb 90 jmp 42cc4d 0.00 : 42ccbd: 0f 1f 00 nopl (%rax) : static int : pg_get_utf8_id(void) : { : static int utf8_id = -1; : : if (utf8_id < 0) 0.00 : 42ccc0: 8b 0d 6a dd 23 00 mov 0x23dd6a(%rip),%ecx # 66aa30 0.00 : 42ccc6: 85 c9 test %ecx,%ecx 0.00 : 42ccc8: 0f 88 9f 00 00 00 js 42cd6d : *ptr++ = *pwcs; : } : } : else if (w < 0) /* Non-ascii control char */ : { : if (encoding == PG_UTF8) 0.00 : 42ccce: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 42ccd1: 3b 05 59 dd 23 00 cmp 0x23dd59(%rip),%eax # 66aa30 0.00 : 42ccd7: 75 2f jne 42cd08 : * No error checks here, c must point to a long-enough string. : */ : static pg_wchar : utf8_to_unicode(const unsigned char *c) : { : if ((*c & 0x80) == 0) 0.00 : 42ccd9: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 42ccde: 84 c0 test %al,%al : return (pg_wchar) c[0]; 0.00 : 42cce0: 0f b6 d0 movzbl %al,%edx : * No error checks here, c must point to a long-enough string. : */ : static pg_wchar : utf8_to_unicode(const unsigned char *c) : { : if ((*c & 0x80) == 0) 0.00 : 42cce3: 0f 88 99 00 00 00 js 42cd82 : } : } : else if (w < 0) /* Non-ascii control char */ : { : if (encoding == PG_UTF8) : sprintf((char *) ptr, "\\u%04X", utf8_to_unicode(pwcs)); 0.00 : 42cce9: be 14 7b 45 00 mov $0x457b14,%esi 0.00 : 42ccee: 4c 89 ef mov %r13,%rdi 0.00 : 42ccf1: 31 c0 xor %eax,%eax 0.00 : 42ccf3: e8 78 72 fd ff callq 403f70 : * UTF-8 signals multibyte control characters. But we may need : * to support it at some stage : */ : sprintf((char *) ptr, "\\u????"); : } : ptr += 6; 0.00 : 42ccf8: 49 83 c5 06 add $0x6,%r13 : linewidth += 6; 0.00 : 42ccfc: 41 83 c6 06 add $0x6,%r14d 0.00 : 42cd00: e9 48 ff ff ff jmpq 42cc4d 0.00 : 42cd05: 0f 1f 00 nopl (%rax) : /* : * This case cannot happen in the current code because only : * UTF-8 signals multibyte control characters. But we may need : * to support it at some stage : */ : sprintf((char *) ptr, "\\u????"); 0.00 : 42cd08: 41 c7 45 00 5c 75 3f movl $0x3f3f755c,0x0(%r13) 0.00 : 42cd0f: 3f 0.00 : 42cd10: 66 41 c7 45 04 3f 3f movw $0x3f3f,0x4(%r13) 0.00 : 42cd17: 41 c6 45 06 00 movb $0x0,0x6(%r13) 0.00 : 42cd1c: eb da jmp 42ccf8 0.00 : 42cd1e: 66 90 xchg %ax,%ax : : if (chlen == 1) /* single-byte char */ : { : if (*pwcs == '\n') /* Newline */ : { : *ptr++ = '\0'; 0.00 : 42cd20: 41 c6 45 00 00 movb $0x0,0x0(%r13) : lines->width = linewidth; 0.00 : 42cd25: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 42cd29: 44 89 70 08 mov %r14d,0x8(%rax) : linewidth = 0; : lines++; : count--; 0.00 : 42cd2d: 83 6d bc 01 subl $0x1,-0x44(%rbp) : if (count <= 0) 0.00 : 42cd31: 8b 75 bc mov -0x44(%rbp),%esi 0.00 : 42cd34: 85 f6 test %esi,%esi 0.00 : 42cd36: 0f 8e 07 01 00 00 jle 42ce43 : if (*pwcs == '\n') /* Newline */ : { : *ptr++ = '\0'; : lines->width = linewidth; : linewidth = 0; : lines++; 0.00 : 42cd3c: 48 83 45 c0 10 addq $0x10,-0x40(%rbp) : : if (chlen == 1) /* single-byte char */ : { : if (*pwcs == '\n') /* Newline */ : { : *ptr++ = '\0'; 0.00 : 42cd41: 49 83 c5 01 add $0x1,%r13 : count--; : if (count <= 0) : exit(1); /* Screwup */ : : /* make next line point to remaining memory */ : lines->ptr = ptr; 0.00 : 42cd45: 45 31 f6 xor %r14d,%r14d 0.00 : 42cd48: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 42cd4c: 4c 89 28 mov %r13,(%rax) 0.00 : 42cd4f: e9 f9 fe ff ff jmpq 42cc4d : } : else if (*pwcs == '\r') /* Linefeed */ : { : strcpy((char *) ptr, "\\r"); 0.00 : 42cd54: 66 41 c7 45 00 5c 72 movw $0x725c,0x0(%r13) 0.00 : 42cd5b: 41 c6 45 02 00 movb $0x0,0x2(%r13) : linewidth += 2; 0.00 : 42cd60: 41 83 c6 02 add $0x2,%r14d : ptr += 2; 0.00 : 42cd64: 49 83 c5 02 add $0x2,%r13 0.00 : 42cd68: e9 e0 fe ff ff jmpq 42cc4d : pg_get_utf8_id(void) : { : static int utf8_id = -1; : : if (utf8_id < 0) : utf8_id = pg_char_to_encoding("utf8"); 0.00 : 42cd6d: bf 08 7b 45 00 mov $0x457b08,%edi 0.00 : 42cd72: e8 99 69 fd ff callq 403710 0.00 : 42cd77: 89 05 b3 dc 23 00 mov %eax,0x23dcb3(%rip) # 66aa30 0.00 : 42cd7d: e9 4c ff ff ff jmpq 42ccce : static pg_wchar : utf8_to_unicode(const unsigned char *c) : { : if ((*c & 0x80) == 0) : return (pg_wchar) c[0]; : else if ((*c & 0xe0) == 0xc0) 0.00 : 42cd82: 0f b6 c8 movzbl %al,%ecx 0.00 : 42cd85: 89 c8 mov %ecx,%eax 0.00 : 42cd87: 25 e0 00 00 00 and $0xe0,%eax 0.00 : 42cd8c: 3d c0 00 00 00 cmp $0xc0,%eax 0.00 : 42cd91: 74 76 je 42ce09 : return (pg_wchar) (((c[0] & 0x1f) << 6) | : (c[1] & 0x3f)); : else if ((*c & 0xf0) == 0xe0) 0.00 : 42cd93: 89 c8 mov %ecx,%eax 0.00 : 42cd95: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 42cd9a: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 42cd9f: 74 7e je 42ce1f : return (pg_wchar) (((c[0] & 0x0f) << 12) | : ((c[1] & 0x3f) << 6) | : (c[2] & 0x3f)); : else if ((*c & 0xf8) == 0xf0) 0.00 : 42cda1: 89 c8 mov %ecx,%eax 0.00 : 42cda3: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 42cda8: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 42cdad: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 42cdb2: 0f 85 31 ff ff ff jne 42cce9 : return (pg_wchar) (((c[0] & 0x07) << 18) | 0.00 : 42cdb8: 41 0f b6 54 24 03 movzbl 0x3(%r12),%edx 0.00 : 42cdbe: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax 0.00 : 42cdc4: 83 e1 07 and $0x7,%ecx 0.00 : 42cdc7: c1 e1 12 shl $0x12,%ecx 0.00 : 42cdca: 83 e2 3f and $0x3f,%edx 0.00 : 42cdcd: 83 e0 3f and $0x3f,%eax 0.00 : 42cdd0: c1 e0 0c shl $0xc,%eax 0.00 : 42cdd3: 09 ca or %ecx,%edx 0.00 : 42cdd5: 09 c2 or %eax,%edx 0.00 : 42cdd7: 41 0f b6 44 24 02 movzbl 0x2(%r12),%eax 0.00 : 42cddd: 83 e0 3f and $0x3f,%eax 0.00 : 42cde0: c1 e0 06 shl $0x6,%eax 0.00 : 42cde3: 09 c2 or %eax,%edx 0.00 : 42cde5: e9 ff fe ff ff jmpq 42cce9 : linewidth++; : } while (linewidth % 8 != 0); : } : else if (w < 0) /* Other control char */ : { : sprintf((char *) ptr, "\\x%02X", *pwcs); 0.00 : 42cdea: 0f b6 d0 movzbl %al,%edx 0.00 : 42cded: 4c 89 ef mov %r13,%rdi 0.00 : 42cdf0: be 0d 7b 45 00 mov $0x457b0d,%esi 0.00 : 42cdf5: 31 c0 xor %eax,%eax : linewidth += 4; 0.00 : 42cdf7: 41 83 c6 04 add $0x4,%r14d : ptr += 4; 0.00 : 42cdfb: 49 83 c5 04 add $0x4,%r13 : linewidth++; : } while (linewidth % 8 != 0); : } : else if (w < 0) /* Other control char */ : { : sprintf((char *) ptr, "\\x%02X", *pwcs); 0.00 : 42cdff: e8 6c 71 fd ff callq 403f70 0.00 : 42ce04: e9 44 fe ff ff jmpq 42cc4d : utf8_to_unicode(const unsigned char *c) : { : if ((*c & 0x80) == 0) : return (pg_wchar) c[0]; : else if ((*c & 0xe0) == 0xc0) : return (pg_wchar) (((c[0] & 0x1f) << 6) | 0.00 : 42ce09: 41 0f b6 54 24 01 movzbl 0x1(%r12),%edx 0.00 : 42ce0f: 83 e1 1f and $0x1f,%ecx 0.00 : 42ce12: c1 e1 06 shl $0x6,%ecx 0.00 : 42ce15: 83 e2 3f and $0x3f,%edx 0.00 : 42ce18: 09 ca or %ecx,%edx 0.00 : 42ce1a: e9 ca fe ff ff jmpq 42cce9 : (c[1] & 0x3f)); : else if ((*c & 0xf0) == 0xe0) : return (pg_wchar) (((c[0] & 0x0f) << 12) | 0.00 : 42ce1f: 41 0f b6 54 24 02 movzbl 0x2(%r12),%edx 0.00 : 42ce25: c1 e1 0c shl $0xc,%ecx 0.00 : 42ce28: 0f b7 c1 movzwl %cx,%eax 0.00 : 42ce2b: 83 e2 3f and $0x3f,%edx 0.00 : 42ce2e: 09 c2 or %eax,%edx 0.00 : 42ce30: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax 0.00 : 42ce36: 83 e0 3f and $0x3f,%eax 0.00 : 42ce39: c1 e0 06 shl $0x6,%eax 0.00 : 42ce3c: 09 c2 or %eax,%edx 0.00 : 42ce3e: e9 a6 fe ff ff jmpq 42cce9 : } : lines->width = linewidth; : *ptr++ = '\0'; /* Terminate formatted string */ : : if (count <= 0) : exit(1); /* Screwup */ 0.00 : 42ce43: bf 01 00 00 00 mov $0x1,%edi 0.00 : 42ce48: e8 43 71 fd ff callq 403f90 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 57.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:400 28.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:400 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:400 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ea7c0 : : PG_RETURN_BOOL(arg1 == arg2); : } : : Datum : int4ne(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:400 14.29 : 6ea7c0: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 6ea7c4: 39 47 20 cmp %eax,0x20(%rdi) 0.00 : 6ea7c7: 55 push %rbp 57.14 : 6ea7c8: 48 89 e5 mov %rsp,%rbp : int32 arg1 = PG_GETARG_INT32(0); : int32 arg2 = PG_GETARG_INT32(1); : : PG_RETURN_BOOL(arg1 != arg2); : } 0.00 : 6ea7cb: c9 leaveq : PG_RETURN_BOOL(arg1 == arg2); : } : : Datum : int4ne(PG_FUNCTION_ARGS) : { 28.57 : 6ea7cc: 0f 95 c0 setne %al 0.00 : 6ea7cf: 0f b6 c0 movzbl %al,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000030460 <_nl_explode_name>: 0.00 : 30460: 41 57 push %r15 0.00 : 30462: 49 89 d7 mov %rdx,%r15 0.00 : 30465: 41 56 push %r14 0.00 : 30467: 4d 89 ce mov %r9,%r14 0.00 : 3046a: 41 55 push %r13 0.00 : 3046c: 4d 89 c5 mov %r8,%r13 0.00 : 3046f: 41 54 push %r12 0.00 : 30471: 49 89 cc mov %rcx,%r12 0.00 : 30474: 55 push %rbp 0.00 : 30475: 53 push %rbx 0.00 : 30476: 48 83 ec 08 sub $0x8,%rsp 0.00 : 3047a: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 30481: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 30488: 49 c7 00 00 00 00 00 movq $0x0,(%r8) 0.00 : 3048f: 49 c7 01 00 00 00 00 movq $0x0,(%r9) 0.00 : 30496: 48 89 3e mov %rdi,(%rsi) 0.00 : 30499: 0f b6 07 movzbl (%rdi),%eax 0.00 : 3049c: 84 c0 test %al,%al 0.00 : 3049e: 75 58 jne 304f8 <_nl_explode_name+0x98> 0.00 : 304a0: 31 f6 xor %esi,%esi 0.00 : 304a2: 31 ed xor %ebp,%ebp 0.00 : 304a4: e8 07 57 05 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 304a9: 0f b6 08 movzbl (%rax),%ecx 0.00 : 304ac: 49 89 c0 mov %rax,%r8 0.00 : 304af: 90 nop 0.00 : 304b0: 80 f9 40 cmp $0x40,%cl 0.00 : 304b3: 0f 84 c7 00 00 00 je 30580 <_nl_explode_name+0x120> 33.33 : 304b9: 49 8b 14 24 mov (%r12),%rdx 0.00 : 304bd: 48 85 d2 test %rdx,%rdx 0.00 : 304c0: 74 0b je 304cd <_nl_explode_name+0x6d> 0.00 : 304c2: 89 e8 mov %ebp,%eax 0.00 : 304c4: 83 e0 fb and $0xfffffffb,%eax 0.00 : 304c7: 80 3a 00 cmpb $0x0,(%rdx) 16.67 : 304ca: 0f 44 e8 cmove %eax,%ebp 0.00 : 304cd: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 304d1: 48 85 d2 test %rdx,%rdx 0.00 : 304d4: 74 0b je 304e1 <_nl_explode_name+0x81> 0.00 : 304d6: 89 e8 mov %ebp,%eax 0.00 : 304d8: 83 e0 fd and $0xfffffffd,%eax 0.00 : 304db: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 304de: 0f 44 e8 cmove %eax,%ebp 0.00 : 304e1: 48 83 c4 08 add $0x8,%rsp 0.00 : 304e5: 89 e8 mov %ebp,%eax 0.00 : 304e7: 5b pop %rbx 0.00 : 304e8: 5d pop %rbp 0.00 : 304e9: 41 5c pop %r12 0.00 : 304eb: 41 5d pop %r13 0.00 : 304ed: 41 5e pop %r14 0.00 : 304ef: 41 5f pop %r15 0.00 : 304f1: c3 retq 0.00 : 304f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 304f8: 3c 5f cmp $0x5f,%al 0.00 : 304fa: 74 a4 je 304a0 <_nl_explode_name+0x40> 0.00 : 304fc: 3c 40 cmp $0x40,%al 0.00 : 304fe: 74 a0 je 304a0 <_nl_explode_name+0x40> 0.00 : 30500: 3c 2e cmp $0x2e,%al 0.00 : 30502: 74 9c je 304a0 <_nl_explode_name+0x40> 0.00 : 30504: 48 89 f8 mov %rdi,%rax 0.00 : 30507: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3050e: 00 00 0.00 : 30510: 48 83 c0 01 add $0x1,%rax 0.00 : 30514: 0f b6 10 movzbl (%rax),%edx 0.00 : 30517: 84 d2 test %dl,%dl 0.00 : 30519: 75 45 jne 30560 <_nl_explode_name+0x100> 0.00 : 3051b: 48 39 c7 cmp %rax,%rdi 0.00 : 3051e: 49 89 c0 mov %rax,%r8 0.00 : 30521: 0f 84 79 ff ff ff je 304a0 <_nl_explode_name+0x40> 0.00 : 30527: 31 ed xor %ebp,%ebp 0.00 : 30529: 80 fa 40 cmp $0x40,%dl 0.00 : 3052c: 89 d1 mov %edx,%ecx 0.00 : 3052e: 74 50 je 30580 <_nl_explode_name+0x120> 0.00 : 30530: 31 ed xor %ebp,%ebp 0.00 : 30532: 80 fa 5f cmp $0x5f,%dl 0.00 : 30535: 74 69 je 305a0 <_nl_explode_name+0x140> 0.00 : 30537: 80 f9 2e cmp $0x2e,%cl 0.00 : 3053a: 0f 85 70 ff ff ff jne 304b0 <_nl_explode_name+0x50> 0.00 : 30540: 41 c6 00 00 movb $0x0,(%r8) 0.00 : 30544: 49 83 c0 01 add $0x1,%r8 0.00 : 30548: 4d 89 45 00 mov %r8,0x0(%r13) 0.00 : 3054c: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 30550: 84 c9 test %cl,%cl 0.00 : 30552: 0f 85 9d 00 00 00 jne 305f5 <_nl_explode_name+0x195> 0.00 : 30558: 83 cd 02 or $0x2,%ebp 0.00 : 3055b: e9 50 ff ff ff jmpq 304b0 <_nl_explode_name+0x50> 16.67 : 30560: 80 fa 5f cmp $0x5f,%dl 0.00 : 30563: 74 b6 je 3051b <_nl_explode_name+0xbb> 0.00 : 30565: 80 fa 40 cmp $0x40,%dl 0.00 : 30568: 74 b1 je 3051b <_nl_explode_name+0xbb> 0.00 : 3056a: 80 fa 2e cmp $0x2e,%dl 0.00 : 3056d: 0f 1f 00 nopl (%rax) 0.00 : 30570: 75 9e jne 30510 <_nl_explode_name+0xb0> 0.00 : 30572: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 30578: eb a1 jmp 3051b <_nl_explode_name+0xbb> 0.00 : 3057a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 30580: 49 8d 40 01 lea 0x1(%r8),%rax 0.00 : 30584: 41 c6 00 00 movb $0x0,(%r8) 0.00 : 30588: 49 89 07 mov %rax,(%r15) 0.00 : 3058b: 89 e8 mov %ebp,%eax 0.00 : 3058d: 83 c8 08 or $0x8,%eax 0.00 : 30590: 41 80 78 01 00 cmpb $0x0,0x1(%r8) 0.00 : 30595: 0f 45 e8 cmovne %eax,%ebp 0.00 : 30598: e9 1c ff ff ff jmpq 304b9 <_nl_explode_name+0x59> 0.00 : 3059d: 0f 1f 00 nopl (%rax) 0.00 : 305a0: 49 83 c0 01 add $0x1,%r8 0.00 : 305a4: c6 00 00 movb $0x0,(%rax) 0.00 : 305a7: 4d 89 04 24 mov %r8,(%r12) 0.00 : 305ab: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 305af: 84 c0 test %al,%al 0.00 : 305b1: 89 c1 mov %eax,%ecx 0.00 : 305b3: 75 29 jne 305de <_nl_explode_name+0x17e> 0.00 : 305b5: 0f 1f 00 nopl (%rax) 0.00 : 305b8: 80 f9 2e cmp $0x2e,%cl 0.00 : 305bb: bd 04 00 00 00 mov $0x4,%ebp 0.00 : 305c0: 0f 85 ea fe ff ff jne 304b0 <_nl_explode_name+0x50> 0.00 : 305c6: e9 75 ff ff ff jmpq 30540 <_nl_explode_name+0xe0> 0.00 : 305cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 305d0: 49 83 c0 01 add $0x1,%r8 0.00 : 305d4: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 305d8: 84 c0 test %al,%al 0.00 : 305da: 89 c1 mov %eax,%ecx 0.00 : 305dc: 74 da je 305b8 <_nl_explode_name+0x158> 0.00 : 305de: 3c 2e cmp $0x2e,%al 0.00 : 305e0: 74 d6 je 305b8 <_nl_explode_name+0x158> 0.00 : 305e2: 3c 40 cmp $0x40,%al 0.00 : 305e4: 75 ea jne 305d0 <_nl_explode_name+0x170> 0.00 : 305e6: 89 c1 mov %eax,%ecx 0.00 : 305e8: bd 04 00 00 00 mov $0x4,%ebp 0.00 : 305ed: 0f 1f 00 nopl (%rax) 0.00 : 305f0: e9 bb fe ff ff jmpq 304b0 <_nl_explode_name+0x50> 0.00 : 305f5: 80 f9 40 cmp $0x40,%cl 0.00 : 305f8: 0f 84 5a ff ff ff je 30558 <_nl_explode_name+0xf8> 0.00 : 305fe: 4c 89 c3 mov %r8,%rbx 0.00 : 30601: 48 83 c3 01 add $0x1,%rbx 16.67 : 30605: 0f b6 0b movzbl (%rbx),%ecx 16.67 : 30608: 84 c9 test %cl,%cl 0.00 : 3060a: 75 4c jne 30658 <_nl_explode_name+0x1f8> 0.00 : 3060c: 83 cd 02 or $0x2,%ebp 0.00 : 3060f: 4c 39 c3 cmp %r8,%rbx 0.00 : 30612: 0f 84 98 fe ff ff je 304b0 <_nl_explode_name+0x50> 0.00 : 30618: 48 89 de mov %rbx,%rsi 0.00 : 3061b: 4c 89 c7 mov %r8,%rdi 0.00 : 3061e: 4c 29 c6 sub %r8,%rsi 0.00 : 30621: e8 8a f7 ff ff callq 2fdb0 <_nl_normalize_codeset> 0.00 : 30626: 48 85 c0 test %rax,%rax 0.00 : 30629: 49 89 06 mov %rax,(%r14) 0.00 : 3062c: 74 34 je 30662 <_nl_explode_name+0x202> 0.00 : 3062e: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 30632: 48 89 c6 mov %rax,%rsi 0.00 : 30635: 48 89 04 24 mov %rax,(%rsp) 0.00 : 30639: e8 12 eb 04 00 callq 7f150 <__GI_strcmp> 0.00 : 3063e: 85 c0 test %eax,%eax 0.00 : 30640: 4c 8b 04 24 mov (%rsp),%r8 0.00 : 30644: 74 27 je 3066d <_nl_explode_name+0x20d> 0.00 : 30646: 83 cd 01 or $0x1,%ebp 0.00 : 30649: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 3064c: 49 89 d8 mov %rbx,%r8 0.00 : 3064f: e9 5c fe ff ff jmpq 304b0 <_nl_explode_name+0x50> 0.00 : 30654: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 30658: 80 f9 40 cmp $0x40,%cl 0.00 : 3065b: 75 a4 jne 30601 <_nl_explode_name+0x1a1> 0.00 : 3065d: 0f 1f 00 nopl (%rax) 0.00 : 30660: eb aa jmp 3060c <_nl_explode_name+0x1ac> 0.00 : 30662: bd ff ff ff ff mov $0xffffffff,%ebp 0.00 : 30667: 90 nop 0.00 : 30668: e9 74 fe ff ff jmpq 304e1 <_nl_explode_name+0x81> 0.00 : 3066d: 4c 89 c7 mov %r8,%rdi 0.00 : 30670: e8 2b e2 fe ff callq 1e8a0 0.00 : 30675: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 30678: 49 89 d8 mov %rbx,%r8 0.00 : 3067b: e9 30 fe ff ff jmpq 304b0 <_nl_explode_name+0x50> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 27.27 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000034e50 : 9.09 : 34e50: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 34e55: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 34e5a: 48 89 fb mov %rdi,%rbx 9.09 : 34e5d: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 34e62: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 34e67: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 34e6c: 48 83 ec 28 sub $0x28,%rsp 0.00 : 34e70: e8 3b bd 04 00 callq 80bb0 <__GI_strlen> 9.09 : 34e75: 48 89 c2 mov %rax,%rdx 0.00 : 34e78: 48 8b 05 f9 cf 33 00 mov 0x33cff9(%rip),%rax # 371e78 <_DYNAMIC+0x318> 0.00 : 34e7f: 48 8b 28 mov (%rax),%rbp 9.09 : 34e82: 48 85 ed test %rbp,%rbp 0.00 : 34e85: 75 29 jne 34eb0 0.00 : 34e87: 31 c0 xor %eax,%eax 0.00 : 34e89: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 34e8d: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 34e92: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 34e97: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 34e9c: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 34ea1: 48 83 c4 28 add $0x28,%rsp 0.00 : 34ea5: c3 retq 0.00 : 34ea6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 34ead: 00 00 00 0.00 : 34eb0: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 34eb3: 74 d2 je 34e87 0.00 : 34eb5: 80 7b 01 00 cmpb $0x0,0x1(%rbx) 0.00 : 34eb9: 75 35 jne 34ef0 0.00 : 34ebb: 48 8b 45 00 mov 0x0(%rbp),%rax 0.00 : 34ebf: 0f b6 13 movzbl (%rbx),%edx 0.00 : 34ec2: 48 85 c0 test %rax,%rax 0.00 : 34ec5: 74 c0 je 34e87 0.00 : 34ec7: 0f b6 d2 movzbl %dl,%edx 0.00 : 34eca: 80 ce 3d or $0x3d,%dh 0.00 : 34ecd: 66 3b 10 cmp (%rax),%dx 0.00 : 34ed0: 75 0b jne 34edd 0.00 : 34ed2: eb 7c jmp 34f50 0.00 : 34ed4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 34ed8: 66 3b 10 cmp (%rax),%dx 0.00 : 34edb: 74 73 je 34f50 0.00 : 34edd: 48 83 c5 08 add $0x8,%rbp 0.00 : 34ee1: 48 8b 45 00 mov 0x0(%rbp),%rax 0.00 : 34ee5: 48 85 c0 test %rax,%rax 0.00 : 34ee8: 75 ee jne 34ed8 0.00 : 34eea: eb 9b jmp 34e87 0.00 : 34eec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 34ef0: 44 0f b7 23 movzwl (%rbx),%r12d 9.09 : 34ef4: 4c 8d 73 02 lea 0x2(%rbx),%r14 0.00 : 34ef8: 48 8b 5d 00 mov 0x0(%rbp),%rbx 0.00 : 34efc: 4c 8d 6a fe lea -0x2(%rdx),%r13 0.00 : 34f00: 48 85 db test %rbx,%rbx 0.00 : 34f03: 75 34 jne 34f39 0.00 : 34f05: eb 80 jmp 34e87 9.09 : 34f07: 48 8d 7b 02 lea 0x2(%rbx),%rdi 0.00 : 34f0b: 4c 89 ea mov %r13,%rdx 0.00 : 34f0e: 4c 89 f6 mov %r14,%rsi 0.00 : 34f11: e8 da be 04 00 callq 80df0 <__GI_strncmp> 0.00 : 34f16: 85 c0 test %eax,%eax 0.00 : 34f18: 75 0e jne 34f28 0.00 : 34f1a: 42 80 7c 2b 02 3d cmpb $0x3d,0x2(%rbx,%r13,1) 0.00 : 34f20: 74 20 je 34f42 0.00 : 34f22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 27.27 : 34f28: 48 83 c5 08 add $0x8,%rbp 9.09 : 34f2c: 48 8b 5d 00 mov 0x0(%rbp),%rbx 0.00 : 34f30: 48 85 db test %rbx,%rbx 0.00 : 34f33: 0f 84 4e ff ff ff je 34e87 9.09 : 34f39: 66 44 3b 23 cmp (%rbx),%r12w 0.00 : 34f3d: 75 e9 jne 34f28 0.00 : 34f3f: 90 nop 0.00 : 34f40: eb c5 jmp 34f07 0.00 : 34f42: 4a 8d 44 2b 03 lea 0x3(%rbx,%r13,1),%rax 0.00 : 34f47: e9 3d ff ff ff jmpq 34e89 0.00 : 34f4c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 34f50: 48 83 c0 02 add $0x2,%rax 0.00 : 34f54: e9 30 ff ff ff jmpq 34e89 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 42.86 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007f090 <__GI_strchr>: 14.29 : 7f090: 66 0f 6e ce movd %esi,%xmm1 0.00 : 7f094: 48 89 f9 mov %rdi,%rcx 0.00 : 7f097: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 7f09b: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 7f09f: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 7f0a3: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 7f0a7: 83 ce ff or $0xffffffff,%esi 0.00 : 7f0aa: 66 0f 6f 07 movdqa (%rdi),%xmm0 14.29 : 7f0ae: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 7f0b3: 48 29 f9 sub %rdi,%rcx 0.00 : 7f0b6: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 7f0ba: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 7f0be: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f0c2: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 7f0c6: d3 e6 shl %cl,%esi 0.00 : 7f0c8: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f0cc: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 7f0d0: 21 f2 and %esi,%edx 0.00 : 7f0d2: 21 f1 and %esi,%ecx 0.00 : 7f0d4: 09 d1 or %edx,%ecx 0.00 : 7f0d6: 75 20 jne 7f0f8 <__GI_strchr+0x68> 42.86 : 7f0d8: 66 0f 6f 07 movdqa (%rdi),%xmm0 14.29 : 7f0dc: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 7f0e0: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 7f0e4: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 7f0e8: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 7f0ec: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 7f0f0: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 7f0f4: 09 d1 or %edx,%ecx 14.29 : 7f0f6: 74 e0 je 7f0d8 <__GI_strchr+0x48> 0.00 : 7f0f8: 0f bc d2 bsf %edx,%edx 0.00 : 7f0fb: 74 0c je 7f109 <__GI_strchr+0x79> 0.00 : 7f0fd: 0f bc c9 bsf %ecx,%ecx 0.00 : 7f100: 48 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%rax 0.00 : 7f105: 39 d1 cmp %edx,%ecx 0.00 : 7f107: 74 02 je 7f10b <__GI_strchr+0x7b> 0.00 : 7f109: 31 c0 xor %eax,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000080c00 : 12.50 : 80c00: 31 c0 xor %eax,%eax 0.00 : 80c02: 48 85 f6 test %rsi,%rsi 0.00 : 80c05: 75 09 jne 80c10 0.00 : 80c07: f3 c3 repz retq 0.00 : 80c09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 12.50 : 80c10: 48 89 f9 mov %rdi,%rcx 0.00 : 80c13: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 80c1a: 48 89 fa mov %rdi,%rdx 0.00 : 80c1d: 48 01 f1 add %rsi,%rcx 0.00 : 80c20: 48 0f 42 c8 cmovb %rax,%rcx 0.00 : 80c24: 40 f6 c7 07 test $0x7,%dil 0.00 : 80c28: 48 89 f8 mov %rdi,%rax 0.00 : 80c2b: 74 28 je 80c55 0.00 : 80c2d: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 80c30: 48 89 fa mov %rdi,%rdx 0.00 : 80c33: 48 89 f8 mov %rdi,%rax 0.00 : 80c36: 75 11 jne 80c49 0.00 : 80c38: e9 a6 00 00 00 jmpq 80ce3 0.00 : 80c3d: 0f 1f 00 nopl (%rax) 0.00 : 80c40: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 80c43: 0f 84 97 00 00 00 je 80ce0 0.00 : 80c49: 48 83 c2 01 add $0x1,%rdx 0.00 : 80c4d: f6 c2 07 test $0x7,%dl 0.00 : 80c50: 75 ee jne 80c40 0.00 : 80c52: 48 89 d0 mov %rdx,%rax 12.50 : 80c55: 49 b8 ff fe fe fe fe movabs $0xfefefefefefefeff,%r8 0.00 : 80c5c: fe fe fe 0.00 : 80c5f: 48 be 80 80 80 80 80 movabs $0x8080808080808080,%rsi 0.00 : 80c66: 80 80 80 0.00 : 80c69: eb 62 jmp 80ccd 0.00 : 80c6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 80c70: 4c 89 c0 mov %r8,%rax 0.00 : 80c73: 48 03 02 add (%rdx),%rax 0.00 : 80c76: 48 85 f0 test %rsi,%rax 0.00 : 80c79: 74 4b je 80cc6 0.00 : 80c7b: 80 3a 00 cmpb $0x0,(%rdx) 12.50 : 80c7e: 74 6e je 80cee 0.00 : 80c80: 80 7a 01 00 cmpb $0x0,0x1(%rdx) 0.00 : 80c84: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 80c88: 74 48 je 80cd2 12.50 : 80c8a: 80 7a 02 00 cmpb $0x0,0x2(%rdx) 0.00 : 80c8e: 48 8d 42 02 lea 0x2(%rdx),%rax 0.00 : 80c92: 74 3e je 80cd2 0.00 : 80c94: 80 7a 03 00 cmpb $0x0,0x3(%rdx) 0.00 : 80c98: 48 8d 42 03 lea 0x3(%rdx),%rax 0.00 : 80c9c: 74 34 je 80cd2 0.00 : 80c9e: 80 7a 04 00 cmpb $0x0,0x4(%rdx) 0.00 : 80ca2: 48 8d 42 04 lea 0x4(%rdx),%rax 12.50 : 80ca6: 74 2a je 80cd2 0.00 : 80ca8: 80 7a 05 00 cmpb $0x0,0x5(%rdx) 0.00 : 80cac: 48 8d 42 05 lea 0x5(%rdx),%rax 0.00 : 80cb0: 74 20 je 80cd2 0.00 : 80cb2: 80 7a 06 00 cmpb $0x0,0x6(%rdx) 0.00 : 80cb6: 48 8d 42 06 lea 0x6(%rdx),%rax 0.00 : 80cba: 74 16 je 80cd2 12.50 : 80cbc: 80 7a 07 00 cmpb $0x0,0x7(%rdx) 12.50 : 80cc0: 48 8d 42 07 lea 0x7(%rdx),%rax 0.00 : 80cc4: 74 0c je 80cd2 0.00 : 80cc6: 48 83 c2 08 add $0x8,%rdx 0.00 : 80cca: 48 89 c8 mov %rcx,%rax 0.00 : 80ccd: 48 39 d1 cmp %rdx,%rcx 0.00 : 80cd0: 77 9e ja 80c70 0.00 : 80cd2: 48 39 c8 cmp %rcx,%rax 0.00 : 80cd5: 48 0f 47 c1 cmova %rcx,%rax 0.00 : 80cd9: 48 29 f8 sub %rdi,%rax 0.00 : 80cdc: c3 retq 0.00 : 80cdd: 0f 1f 00 nopl (%rax) 0.00 : 80ce0: 48 89 d0 mov %rdx,%rax 0.00 : 80ce3: 48 39 d1 cmp %rdx,%rcx 0.00 : 80ce6: 48 0f 42 c1 cmovb %rcx,%rax 0.00 : 80cea: 48 29 f8 sub %rdi,%rax 0.00 : 80ced: c3 retq 0.00 : 80cee: 48 89 d0 mov %rdx,%rax 0.00 : 80cf1: eb df jmp 80cd2 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 57.14 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000861d0 <__argz_stringify>: 57.14 : 861d0: 41 54 push %r12 0.00 : 861d2: 48 85 f6 test %rsi,%rsi 0.00 : 861d5: 41 89 d4 mov %edx,%r12d 14.29 : 861d8: 55 push %rbp 0.00 : 861d9: 48 89 fd mov %rdi,%rbp 0.00 : 861dc: 53 push %rbx 0.00 : 861dd: 48 89 f3 mov %rsi,%rbx 0.00 : 861e0: 75 12 jne 861f4 <__argz_stringify+0x24> 0.00 : 861e2: eb 2e jmp 86212 <__argz_stringify+0x42> 0.00 : 861e4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 861e8: 48 8d 44 15 00 lea 0x0(%rbp,%rdx,1),%rax 0.00 : 861ed: 48 8d 68 01 lea 0x1(%rax),%rbp 0.00 : 861f1: 44 88 20 mov %r12b,(%rax) 0.00 : 861f4: 48 89 de mov %rbx,%rsi 0.00 : 861f7: 48 89 ef mov %rbp,%rdi 0.00 : 861fa: e8 01 aa ff ff callq 80c00 14.29 : 861ff: 48 89 c2 mov %rax,%rdx 0.00 : 86202: 48 89 d8 mov %rbx,%rax 0.00 : 86205: 48 29 d0 sub %rdx,%rax 0.00 : 86208: 48 83 f8 01 cmp $0x1,%rax 14.29 : 8620c: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 86210: 77 d6 ja 861e8 <__argz_stringify+0x18> 0.00 : 86212: 5b pop %rbx 0.00 : 86213: 5d pop %rbp 0.00 : 86214: 41 5c pop %r12 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000aa460 <__sysconf>: 12.50 : aa460: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 12.50 : aa465: 89 fb mov %edi,%ebx 0.00 : aa467: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 12.50 : aa46c: 8d 83 47 ff ff ff lea -0xb9(%rbx),%eax 0.00 : aa472: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : aa477: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : aa47c: 48 83 ec 68 sub $0x68,%rsp 0.00 : aa480: 83 f8 0e cmp $0xe,%eax 0.00 : aa483: 76 5b jbe aa4e0 <__sysconf+0x80> 0.00 : aa485: 83 ff 22 cmp $0x22,%edi 0.00 : aa488: 0f 84 c2 00 00 00 je aa550 <__sysconf+0xf0> 12.50 : aa48e: 7f 78 jg aa508 <__sysconf+0xa8> 0.00 : aa490: 85 ff test %edi,%edi 0.00 : aa492: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : aa498: 0f 84 9a 01 00 00 je aa638 <__sysconf+0x1d8> 0.00 : aa49e: 83 ff 03 cmp $0x3,%edi 0.00 : aa4a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : aa4a8: 0f 84 7a 01 00 00 je aa628 <__sysconf+0x1c8> 0.00 : aa4ae: 81 fb f6 00 00 00 cmp $0xf6,%ebx 0.00 : aa4b4: 0f 86 56 01 00 00 jbe aa610 <__sysconf+0x1b0> 0.00 : aa4ba: 48 8b 15 77 79 2c 00 mov 0x2c7977(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : aa4c1: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : aa4c8: 00 00 0.00 : aa4ca: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : aa4d1: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : aa4d8: eb 0e jmp aa4e8 <__sysconf+0x88> 0.00 : aa4da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : aa4e0: e8 5b 1b fe ff callq 8c040 <__cache_sysconf> 0.00 : aa4e5: 48 89 c2 mov %rax,%rdx 0.00 : aa4e8: 48 89 d0 mov %rdx,%rax 0.00 : aa4eb: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : aa4f0: 48 8b 6c 24 50 mov 0x50(%rsp),%rbp 0.00 : aa4f5: 4c 8b 64 24 58 mov 0x58(%rsp),%r12 0.00 : aa4fa: 4c 8b 6c 24 60 mov 0x60(%rsp),%r13 0.00 : aa4ff: 48 83 c4 68 add $0x68,%rsp 12.50 : aa503: c3 retq 0.00 : aa504: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : aa508: 81 ff 8a 00 00 00 cmp $0x8a,%edi 0.00 : aa50e: 7c 9e jl aa4ae <__sysconf+0x4e> 0.00 : aa510: 81 ff 8b 00 00 00 cmp $0x8b,%edi 0.00 : aa516: 7e 27 jle aa53f <__sysconf+0xdf> 0.00 : aa518: 81 ff 95 00 00 00 cmp $0x95,%edi 0.00 : aa51e: 66 90 xchg %ax,%ax 0.00 : aa520: 75 8c jne aa4ae <__sysconf+0x4e> 0.00 : aa522: 48 89 e6 mov %rsp,%rsi 0.00 : aa525: bf 01 00 00 00 mov $0x1,%edi 0.00 : aa52a: b8 e5 00 00 00 mov $0xe5,%eax 0.00 : aa52f: 0f 05 syscall 0.00 : aa531: 3d 00 f0 ff ff cmp $0xfffff000,%eax 0.00 : aa536: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : aa53d: 77 a9 ja aa4e8 <__sysconf+0x88> 0.00 : aa53f: ba 69 10 03 00 mov $0x31069,%edx 0.00 : aa544: eb a2 jmp aa4e8 <__sysconf+0x88> 0.00 : aa546: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : aa54d: 00 00 00 0.00 : aa550: 48 8d 74 24 20 lea 0x20(%rsp),%rsi 0.00 : aa555: bf 0b 00 00 00 mov $0xb,%edi 0.00 : aa55a: e8 51 88 02 00 callq d2db0 0.00 : aa55f: 85 c0 test %eax,%eax 0.00 : aa561: 48 8d 3d d5 1d 09 00 lea 0x91dd5(%rip),%rdi # 13c33d <__PRETTY_FUNCTION__.14012+0x72> 0.00 : aa568: 0f 84 22 01 00 00 je aa690 <__sysconf+0x230> 0.00 : aa56e: 31 f6 xor %esi,%esi 0.00 : aa570: 31 c0 xor %eax,%eax 0.00 : aa572: 49 89 e4 mov %rsp,%r12 0.00 : aa575: e8 5f 2c 02 00 callq cd1d9 <__open_nocancel> 0.00 : aa57a: 83 f8 ff cmp $0xffffffff,%eax 0.00 : aa57d: 89 c5 mov %eax,%ebp 0.00 : aa57f: 64 4c 8b 2c 25 00 00 mov %fs:0x0,%r13 0.00 : aa586: 00 00 0.00 : aa588: 0f 84 20 ff ff ff je aa4ae <__sysconf+0x4e> 0.00 : aa58e: 66 90 xchg %ax,%ax 0.00 : aa590: ba 1f 00 00 00 mov $0x1f,%edx 0.00 : aa595: 48 89 e6 mov %rsp,%rsi 0.00 : aa598: 89 ef mov %ebp,%edi 0.00 : aa59a: e8 2a 30 02 00 callq cd5c9 <__read_nocancel> 0.00 : aa59f: 48 63 d0 movslq %eax,%rdx 0.00 : aa5a2: 48 83 fa ff cmp $0xffffffffffffffff,%rdx 0.00 : aa5a6: 75 0f jne aa5b7 <__sysconf+0x157> 0.00 : aa5a8: 48 8b 05 89 78 2c 00 mov 0x2c7889(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : aa5af: 41 83 7c 05 00 04 cmpl $0x4,0x0(%r13,%rax,1) 0.00 : aa5b5: 74 d9 je aa590 <__sysconf+0x130> 0.00 : aa5b7: 48 63 fd movslq %ebp,%rdi 0.00 : aa5ba: b8 03 00 00 00 mov $0x3,%eax 0.00 : aa5bf: 0f 05 syscall 0.00 : aa5c1: 48 85 d2 test %rdx,%rdx 0.00 : aa5c4: 0f 8e e4 fe ff ff jle aa4ae <__sysconf+0x4e> 0.00 : aa5ca: 48 8d 74 24 38 lea 0x38(%rsp),%rsi 0.00 : aa5cf: c6 04 14 00 movb $0x0,(%rsp,%rdx,1) 0.00 : aa5d3: 48 89 e7 mov %rsp,%rdi 0.00 : aa5d6: ba 0a 00 00 00 mov $0xa,%edx 0.00 : aa5db: e8 c0 c4 f8 ff callq 36aa0 0.00 : aa5e0: 48 89 c2 mov %rax,%rdx 0.00 : aa5e3: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : aa5e8: 4c 39 e0 cmp %r12,%rax 0.00 : aa5eb: 0f 84 bd fe ff ff je aa4ae <__sysconf+0x4e> 0.00 : aa5f1: 0f b6 00 movzbl (%rax),%eax 0.00 : aa5f4: 84 c0 test %al,%al 0.00 : aa5f6: 0f 84 ec fe ff ff je aa4e8 <__sysconf+0x88> 0.00 : aa5fc: 3c 0a cmp $0xa,%al 0.00 : aa5fe: 0f 85 aa fe ff ff jne aa4ae <__sysconf+0x4e> 0.00 : aa604: e9 df fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa609: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : aa610: 48 8d 15 65 cf 08 00 lea 0x8cf65(%rip),%rdx # 13757c <__mon_yday+0x75c> 0.00 : aa617: 89 d8 mov %ebx,%eax 0.00 : aa619: 48 63 04 82 movslq (%rdx,%rax,4),%rax 25.00 : aa61d: 48 01 d0 add %rdx,%rax 0.00 : aa620: ff e0 jmpq *%rax 0.00 : aa622: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : aa628: 48 8d 3d d8 1c 09 00 lea 0x91cd8(%rip),%rdi # 13c307 <__PRETTY_FUNCTION__.14012+0x3c> 0.00 : aa62f: e9 3a ff ff ff jmpq aa56e <__sysconf+0x10e> 0.00 : aa634: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : aa638: 48 8b 05 f1 77 2c 00 mov 0x2c77f1(%rip),%rax # 371e30 <_DYNAMIC+0x2d0> 0.00 : aa63f: ff 90 08 01 00 00 callq *0x108(%rax) 0.00 : aa645: 3d 16 06 02 00 cmp $0x20616,%eax 0.00 : aa64a: 7f 14 jg aa660 <__sysconf+0x200> 0.00 : aa64c: ba 00 00 02 00 mov $0x20000,%edx 0.00 : aa651: e9 92 fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa656: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : aa65d: 00 00 00 0.00 : aa660: 48 8d 74 24 20 lea 0x20(%rsp),%rsi 0.00 : aa665: bf 03 00 00 00 mov $0x3,%edi 0.00 : aa66a: e8 41 87 02 00 callq d2db0 0.00 : aa66f: 85 c0 test %eax,%eax 0.00 : aa671: 75 d9 jne aa64c <__sysconf+0x1ec> 0.00 : aa673: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : aa678: 48 3d ff ff 07 00 cmp $0x7ffff,%rax 0.00 : aa67e: 76 cc jbe aa64c <__sysconf+0x1ec> 0.00 : aa680: 48 89 c2 mov %rax,%rdx 0.00 : aa683: 48 c1 ea 02 shr $0x2,%rdx 0.00 : aa687: e9 5c fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa68c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : aa690: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : aa695: e9 4e fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa69a: 48 8d 3d 83 1c 09 00 lea 0x91c83(%rip),%rdi # 13c324 <__PRETTY_FUNCTION__.14012+0x59> 0.00 : aa6a1: e8 aa fc ff ff callq aa350 <__sysconf_check_spec> 0.00 : aa6a6: 48 89 c2 mov %rax,%rdx 0.00 : aa6a9: e9 3a fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa6ae: 48 8d 3d 7b 1c 09 00 lea 0x91c7b(%rip),%rdi # 13c330 <__PRETTY_FUNCTION__.14012+0x65> 0.00 : aa6b5: e8 96 fc ff ff callq aa350 <__sysconf_check_spec> 0.00 : aa6ba: 48 89 c2 mov %rax,%rdx 0.00 : aa6bd: e9 26 fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa6c2: ba 01 00 00 00 mov $0x1,%edx 0.00 : aa6c7: e9 1c fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa6cc: ba ff ff ff 7f mov $0x7fffffff,%edx 0.00 : aa6d1: e9 12 fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa6d6: ba 00 08 00 00 mov $0x800,%edx 0.00 : aa6db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : aa6e0: e9 03 fe ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa6e5: ba 20 00 00 00 mov $0x20,%edx 0.00 : aa6ea: e9 f9 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa6ef: ba 00 04 00 00 mov $0x400,%edx 0.00 : aa6f4: e9 ef fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa6f9: ba 10 00 00 00 mov $0x10,%edx 0.00 : aa6fe: 66 90 xchg %ax,%ax 0.00 : aa700: e9 e3 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa705: ba ff 7f 00 00 mov $0x7fff,%edx 0.00 : aa70a: e9 d9 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa70f: ba ff 00 00 00 mov $0xff,%edx 0.00 : aa714: e9 cf fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa719: ba 04 00 00 00 mov $0x4,%edx 0.00 : aa71e: 66 90 xchg %ax,%ax 0.00 : aa720: e9 c3 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa725: ba 14 00 00 00 mov $0x14,%edx 0.00 : aa72a: e9 b9 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa72f: ba 7f 00 00 00 mov $0x7f,%edx 0.00 : aa734: e9 af fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa739: ba 63 00 00 00 mov $0x63,%edx 0.00 : aa73e: 66 90 xchg %ax,%ax 0.00 : aa740: e9 a3 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa745: 48 c7 c2 80 ff ff ff mov $0xffffffffffffff80,%rdx 0.00 : aa74c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : aa750: e9 93 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa755: ba 40 00 00 00 mov $0x40,%edx 0.00 : aa75a: e9 89 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa75f: ba 00 20 00 00 mov $0x2000,%edx 0.00 : aa764: e9 7f fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa769: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : aa770: e8 1b 05 03 00 callq dac90 <__getclktck> 0.00 : aa775: 48 63 d0 movslq %eax,%rdx 0.00 : aa778: e9 6b fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa77d: 0f 1f 00 nopl (%rax) 0.00 : aa780: e8 0b 1d 02 00 callq cc490 <__get_child_max> 0.00 : aa785: 48 89 c2 mov %rax,%rdx 0.00 : aa788: e9 5b fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa78d: ba 00 10 00 00 mov $0x1000,%edx 0.00 : aa792: e9 51 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa797: 90 nop 0.00 : aa798: e8 33 00 03 00 callq da7d0 0.00 : aa79d: 48 63 d0 movslq %eax,%rdx 0.00 : aa7a0: e9 43 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa7a5: ba bc 02 00 00 mov $0x2bc,%edx 0.00 : aa7aa: e9 39 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa7af: 90 nop 0.00 : aa7b0: e8 fb fd 02 00 callq da5b0 0.00 : aa7b5: 48 89 c2 mov %rax,%rdx 0.00 : aa7b8: e9 2b fd ff ff jmpq aa4e8 <__sysconf+0x88> 12.50 : aa7bd: 0f 1f 00 nopl (%rax) 0.00 : aa7c0: e8 bb 99 02 00 callq d4180 <__getpagesize> 0.00 : aa7c5: 48 63 d0 movslq %eax,%rdx 0.00 : aa7c8: e9 1b fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa7cd: 48 c7 c2 00 00 00 80 mov $0xffffffff80000000,%rdx 0.00 : aa7d4: e9 0f fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa7d9: ba 00 80 00 00 mov $0x8000,%edx 0.00 : aa7de: 66 90 xchg %ax,%ax 0.00 : aa7e0: e9 03 fd ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa7e5: 31 d2 xor %edx,%edx 0.00 : aa7e7: e9 fc fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa7ec: ba ff ff 00 00 mov $0xffff,%edx 0.00 : aa7f1: e9 f2 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa7f6: ba e8 03 00 00 mov $0x3e8,%edx 0.00 : aa7fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : aa800: e9 e3 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa805: ba 00 40 00 00 mov $0x4000,%edx 0.00 : aa80a: e9 d9 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa80f: ba 08 00 00 00 mov $0x8,%edx 0.00 : aa814: e9 cf fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa819: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : aa820: e8 0b 01 03 00 callq da930 0.00 : aa825: 48 63 d0 movslq %eax,%rdx 0.00 : aa828: e9 bb fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa82d: 0f 1f 00 nopl (%rax) 0.00 : aa830: e8 8b fd 02 00 callq da5c0 0.00 : aa835: 48 89 c2 mov %rax,%rdx 0.00 : aa838: e9 ab fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa83d: ba 00 01 00 00 mov $0x100,%edx 0.00 : aa842: e9 a1 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa847: 48 c7 c2 00 80 ff ff mov $0xffffffffffff8000,%rdx 0.00 : aa84e: 66 90 xchg %ax,%ax 0.00 : aa850: e9 93 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa855: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : aa85a: e9 89 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa85f: 90 nop 0.00 : aa860: e8 2b fd fe ff callq 9a590 <__tzname_max> 0.00 : aa865: 48 83 f8 06 cmp $0x6,%rax 0.00 : aa869: ba 06 00 00 00 mov $0x6,%edx 0.00 : aa86e: 66 90 xchg %ax,%ax 0.00 : aa870: 0f 8e 72 fc ff ff jle aa4e8 <__sysconf+0x88> 0.00 : aa876: e8 15 fd fe ff callq 9a590 <__tzname_max> 0.00 : aa87b: 48 89 c2 mov %rax,%rdx 0.00 : aa87e: 66 90 xchg %ax,%ax 0.00 : aa880: e9 63 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa885: e8 16 99 02 00 callq d41a0 0.00 : aa88a: 48 63 d0 movslq %eax,%rdx 0.00 : aa88d: 0f 1f 00 nopl (%rax) 0.00 : aa890: e9 53 fc ff ff jmpq aa4e8 <__sysconf+0x88> 0.00 : aa895: ba 00 00 01 00 mov $0x10000,%edx 0.00 : aa89a: e9 49 fc ff ff jmpq aa4e8 <__sysconf+0x88> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000089f0 <_dl_load_cache_lookup>: 0.00 : 89f0: 41 57 push %r15 0.00 : 89f2: 41 56 push %r14 0.00 : 89f4: 41 55 push %r13 0.00 : 89f6: 41 54 push %r12 0.00 : 89f8: 55 push %rbp 0.00 : 89f9: 53 push %rbx 0.00 : 89fa: 48 83 ec 18 sub $0x18,%rsp 0.00 : 89fe: f6 05 1b 62 21 00 01 testb $0x1,0x21621b(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 8a05: 48 89 3c 24 mov %rdi,(%rsp) 0.00 : 8a09: 0f 85 65 05 00 00 jne 8f74 <_dl_load_cache_lookup+0x584> 0.00 : 8a0f: 48 83 3d 69 76 21 00 cmpq $0x0,0x217669(%rip) # 220080 0.00 : 8a16: 00 0.00 : 8a17: 0f 85 c5 00 00 00 jne 8ae2 <_dl_load_cache_lookup+0xf2> 0.00 : 8a1d: 48 8d 35 6c 76 21 00 lea 0x21766c(%rip),%rsi # 220090 0.00 : 8a24: 48 8d 3d 45 11 01 00 lea 0x11145(%rip),%rdi # 19b70 <__PRETTY_FUNCTION__.12287+0xf> 0.00 : 8a2b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 8a30: e8 cb 69 00 00 callq f400 <_dl_sysdep_read_whole_file> 0.00 : 8a35: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 8a39: 49 89 c0 mov %rax,%r8 0.00 : 8a3c: 74 18 je 8a56 <_dl_load_cache_lookup+0x66> 0.00 : 8a3e: 4c 8b 0d 4b 76 21 00 mov 0x21764b(%rip),%r9 # 220090 0.00 : 8a45: 49 83 f9 10 cmp $0x10,%r9 0.00 : 8a49: 77 35 ja 8a80 <_dl_load_cache_lookup+0x90> 0.00 : 8a4b: 4c 89 ce mov %r9,%rsi 0.00 : 8a4e: 4c 89 c7 mov %r8,%rdi 0.00 : 8a51: e8 aa d7 00 00 callq 16200 <__munmap> 0.00 : 8a56: 48 c7 05 1f 76 21 00 movq $0xffffffffffffffff,0x21761f(%rip) # 220080 0.00 : 8a5d: ff ff ff ff 0.00 : 8a61: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 8a68: 00 00 0.00 : 8a6a: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 8a6f: 48 83 c4 18 add $0x18,%rsp 0.00 : 8a73: 5b pop %rbx 0.00 : 8a74: 5d pop %rbp 0.00 : 8a75: 41 5c pop %r12 0.00 : 8a77: 41 5d pop %r13 0.00 : 8a79: 41 5e pop %r14 0.00 : 8a7b: 41 5f pop %r15 0.00 : 8a7d: c3 retq 0.00 : 8a7e: 66 90 xchg %ax,%ax 0.00 : 8a80: 48 8d 3d 0c 11 01 00 lea 0x1110c(%rip),%rdi # 19b93 <__PRETTY_FUNCTION__.12287+0x32> 0.00 : 8a87: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 8a8c: 48 89 c6 mov %rax,%rsi 0.00 : 8a8f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 8a91: 0f 85 4a 03 00 00 jne 8de1 <_dl_load_cache_lookup+0x3f1> 0.00 : 8a97: 48 89 05 e2 75 21 00 mov %rax,0x2175e2(%rip) # 220080 0.00 : 8a9e: 8b 40 0c mov 0xc(%rax),%eax 0.00 : 8aa1: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8aa5: 48 8d 04 85 17 00 00 lea 0x17(,%rax,4),%rax 0.00 : 8aac: 00 0.00 : 8aad: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 8ab1: 49 8d 14 00 lea (%r8,%rax,1),%rdx 0.00 : 8ab5: 48 83 c0 30 add $0x30,%rax 0.00 : 8ab9: 49 39 c1 cmp %rax,%r9 0.00 : 8abc: 48 89 15 c5 75 21 00 mov %rdx,0x2175c5(%rip) # 220088 0.00 : 8ac3: 0f 83 79 03 00 00 jae 8e42 <_dl_load_cache_lookup+0x452> 0.00 : 8ac9: 48 c7 05 b4 75 21 00 movq $0xffffffffffffffff,0x2175b4(%rip) # 220088 0.00 : 8ad0: ff ff ff ff 0.00 : 8ad4: 48 83 3d a4 75 21 00 cmpq $0x0,0x2175a4(%rip) # 220080 0.00 : 8adb: 00 0.00 : 8adc: 0f 84 41 03 00 00 je 8e23 <_dl_load_cache_lookup+0x433> 0.00 : 8ae2: 48 8b 0d 97 75 21 00 mov 0x217597(%rip),%rcx # 220080 0.00 : 8ae9: 48 83 f9 ff cmp $0xffffffffffffffff,%rcx 0.00 : 8aed: 0f 84 a5 00 00 00 je 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8af3: 4c 8b 2d 8e 75 21 00 mov 0x21758e(%rip),%r13 # 220088 0.00 : 8afa: 49 83 fd ff cmp $0xffffffffffffffff,%r13 0.00 : 8afe: 0f 84 ac 00 00 00 je 8bb0 <_dl_load_cache_lookup+0x1c0> 0.00 : 8b04: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 8b08: 48 8b 15 81 75 21 00 mov 0x217581(%rip),%rdx # 220090 0.00 : 8b0f: 41 89 c4 mov %eax,%r12d 0.00 : 8b12: 41 83 ec 01 sub $0x1,%r12d 0.00 : 8b16: 0f 88 7c 00 00 00 js 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8b1c: 48 8d 04 11 lea (%rcx,%rdx,1),%rax 0.00 : 8b20: 44 89 e3 mov %r12d,%ebx 0.00 : 8b23: 31 ed xor %ebp,%ebp 0.00 : 8b25: d1 fb sar %ebx 0.00 : 8b27: 41 89 c6 mov %eax,%r14d 0.00 : 8b2a: 48 63 c3 movslq %ebx,%rax 0.00 : 8b2d: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8b31: 45 29 ee sub %r13d,%r14d 0.00 : 8b34: 41 8b 44 c5 34 mov 0x34(%r13,%rax,8),%eax 0.00 : 8b39: 41 39 c6 cmp %eax,%r14d 0.00 : 8b3c: 77 34 ja 8b72 <_dl_load_cache_lookup+0x182> 0.00 : 8b3e: eb 58 jmp 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8b40: 44 8d 63 ff lea -0x1(%rbx),%r12d 0.00 : 8b44: 41 39 ec cmp %ebp,%r12d 0.00 : 8b47: 7c 4f jl 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8b49: 42 8d 54 25 00 lea 0x0(%rbp,%r12,1),%edx 0.00 : 8b4e: 89 d0 mov %edx,%eax 0.00 : 8b50: c1 e8 1f shr $0x1f,%eax 0.00 : 8b53: 8d 1c 10 lea (%rax,%rdx,1),%ebx 0.00 : 8b56: d1 fb sar %ebx 0.00 : 8b58: 48 63 c3 movslq %ebx,%rax 0.00 : 8b5b: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8b5f: 48 c1 e0 03 shl $0x3,%rax 0.00 : 8b63: 48 03 05 1e 75 21 00 add 0x21751e(%rip),%rax # 220088 33.33 : 8b6a: 8b 40 34 mov 0x34(%rax),%eax 33.33 : 8b6d: 41 39 c6 cmp %eax,%r14d 0.00 : 8b70: 76 26 jbe 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8b72: 89 c6 mov %eax,%esi 0.00 : 8b74: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8b78: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 8b7d: e8 3e fd ff ff callq 88c0 <_dl_cache_libcmp> 0.00 : 8b82: 83 f8 00 cmp $0x0,%eax 0.00 : 8b85: 0f 84 c7 00 00 00 je 8c52 <_dl_load_cache_lookup+0x262> 0.00 : 8b8b: 7d b3 jge 8b40 <_dl_load_cache_lookup+0x150> 0.00 : 8b8d: 8d 6b 01 lea 0x1(%rbx),%ebp 0.00 : 8b90: 41 39 ec cmp %ebp,%r12d 0.00 : 8b93: 7d b4 jge 8b49 <_dl_load_cache_lookup+0x159> 0.00 : 8b95: 0f 1f 00 nopl (%rax) 0.00 : 8b98: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 8b9f: 00 00 0.00 : 8ba1: e9 c4 fe ff ff jmpq 8a6a <_dl_load_cache_lookup+0x7a> 0.00 : 8ba6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8bad: 00 00 00 0.00 : 8bb0: 8b 41 0c mov 0xc(%rcx),%eax 0.00 : 8bb3: 48 8b 15 d6 74 21 00 mov 0x2174d6(%rip),%rdx # 220090 0.00 : 8bba: 41 89 c4 mov %eax,%r12d 0.00 : 8bbd: 41 83 ec 01 sub $0x1,%r12d 0.00 : 8bc1: 78 d5 js 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8bc3: 89 c0 mov %eax,%eax 0.00 : 8bc5: 44 89 e3 mov %r12d,%ebx 0.00 : 8bc8: 31 ed xor %ebp,%ebp 0.00 : 8bca: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8bce: d1 fb sar %ebx 0.00 : 8bd0: 4c 8d 7c 81 10 lea 0x10(%rcx,%rax,4),%r15 0.00 : 8bd5: 48 8d 04 11 lea (%rcx,%rdx,1),%rax 0.00 : 8bd9: 41 89 c6 mov %eax,%r14d 0.00 : 8bdc: 48 63 c3 movslq %ebx,%rax 0.00 : 8bdf: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8be3: 45 29 fe sub %r15d,%r14d 0.00 : 8be6: 8b 44 81 14 mov 0x14(%rcx,%rax,4),%eax 0.00 : 8bea: 41 39 c6 cmp %eax,%r14d 0.00 : 8bed: 77 3f ja 8c2e <_dl_load_cache_lookup+0x23e> 0.00 : 8bef: eb a7 jmp 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8bf1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8bf8: 44 8d 63 ff lea -0x1(%rbx),%r12d 0.00 : 8bfc: 41 39 ec cmp %ebp,%r12d 0.00 : 8bff: 7c 97 jl 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8c01: 42 8d 54 25 00 lea 0x0(%rbp,%r12,1),%edx 0.00 : 8c06: 89 d0 mov %edx,%eax 0.00 : 8c08: c1 e8 1f shr $0x1f,%eax 0.00 : 8c0b: 8d 1c 10 lea (%rax,%rdx,1),%ebx 0.00 : 8c0e: d1 fb sar %ebx 0.00 : 8c10: 48 63 c3 movslq %ebx,%rax 0.00 : 8c13: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8c17: 48 c1 e0 02 shl $0x2,%rax 0.00 : 8c1b: 48 03 05 5e 74 21 00 add 0x21745e(%rip),%rax # 220080 0.00 : 8c22: 8b 40 14 mov 0x14(%rax),%eax 0.00 : 8c25: 41 39 c6 cmp %eax,%r14d 0.00 : 8c28: 0f 86 6a ff ff ff jbe 8b98 <_dl_load_cache_lookup+0x1a8> 0.00 : 8c2e: 89 c6 mov %eax,%esi 0.00 : 8c30: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8c34: 49 8d 34 37 lea (%r15,%rsi,1),%rsi 0.00 : 8c38: e8 83 fc ff ff callq 88c0 <_dl_cache_libcmp> 0.00 : 8c3d: 83 f8 00 cmp $0x0,%eax 0.00 : 8c40: 0f 84 18 02 00 00 je 8e5e <_dl_load_cache_lookup+0x46e> 0.00 : 8c46: 7d b0 jge 8bf8 <_dl_load_cache_lookup+0x208> 0.00 : 8c48: 8d 6b 01 lea 0x1(%rbx),%ebp 0.00 : 8c4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8c50: eb aa jmp 8bfc <_dl_load_cache_lookup+0x20c> 0.00 : 8c52: 85 db test %ebx,%ebx 0.00 : 8c54: 89 5c 24 10 mov %ebx,0x10(%rsp) 0.00 : 8c58: 7e 65 jle 8cbf <_dl_load_cache_lookup+0x2cf> 11.11 : 8c5a: 8d 6b ff lea -0x1(%rbx),%ebp 0.00 : 8c5d: 4c 8b 3d 24 74 21 00 mov 0x217424(%rip),%r15 # 220088 0.00 : 8c64: 48 63 c5 movslq %ebp,%rax 0.00 : 8c67: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8c6b: 41 8b 44 c7 34 mov 0x34(%r15,%rax,8),%eax 0.00 : 8c70: 41 39 c6 cmp %eax,%r14d 0.00 : 8c73: 77 36 ja 8cab <_dl_load_cache_lookup+0x2bb> 0.00 : 8c75: eb 4f jmp 8cc6 <_dl_load_cache_lookup+0x2d6> 0.00 : 8c77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8c7e: 00 00 0.00 : 8c80: 85 ed test %ebp,%ebp 0.00 : 8c82: 0f 84 8d 01 00 00 je 8e15 <_dl_load_cache_lookup+0x425> 0.00 : 8c88: 8d 55 ff lea -0x1(%rbp),%edx 0.00 : 8c8b: 4c 8b 3d f6 73 21 00 mov 0x2173f6(%rip),%r15 # 220088 0.00 : 8c92: 48 63 c2 movslq %edx,%rax 0.00 : 8c95: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8c99: 41 8b 44 c7 34 mov 0x34(%r15,%rax,8),%eax 11.11 : 8c9e: 41 39 c6 cmp %eax,%r14d 0.00 : 8ca1: 0f 86 75 01 00 00 jbe 8e1c <_dl_load_cache_lookup+0x42c> 0.00 : 8ca7: 89 eb mov %ebp,%ebx 0.00 : 8ca9: 89 d5 mov %edx,%ebp 0.00 : 8cab: 89 c6 mov %eax,%esi 0.00 : 8cad: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8cb1: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 8cb6: e8 05 fc ff ff callq 88c0 <_dl_cache_libcmp> 0.00 : 8cbb: 85 c0 test %eax,%eax 0.00 : 8cbd: 74 c1 je 8c80 <_dl_load_cache_lookup+0x290> 0.00 : 8cbf: 4c 8b 3d c2 73 21 00 mov 0x2173c2(%rip),%r15 # 220088 0.00 : 8cc6: 48 63 eb movslq %ebx,%rbp 0.00 : 8cc9: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 8cd0: 00 00 0.00 : 8cd2: eb 1b jmp 8cef <_dl_load_cache_lookup+0x2ff> 0.00 : 8cd4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8cd8: 83 c3 01 add $0x1,%ebx 0.00 : 8cdb: 48 83 c5 01 add $0x1,%rbp 0.00 : 8cdf: 44 39 e3 cmp %r12d,%ebx 0.00 : 8ce2: 0f 8f c8 00 00 00 jg 8db0 <_dl_load_cache_lookup+0x3c0> 0.00 : 8ce8: 4c 8b 3d 99 73 21 00 mov 0x217399(%rip),%r15 # 220088 0.00 : 8cef: 3b 5c 24 10 cmp 0x10(%rsp),%ebx 0.00 : 8cf3: 7e 2b jle 8d20 <_dl_load_cache_lookup+0x330> 0.00 : 8cf5: 48 8d 44 6d 00 lea 0x0(%rbp,%rbp,2),%rax 0.00 : 8cfa: 41 8b 44 c7 34 mov 0x34(%r15,%rax,8),%eax 0.00 : 8cff: 41 39 c6 cmp %eax,%r14d 0.00 : 8d02: 0f 86 a8 00 00 00 jbe 8db0 <_dl_load_cache_lookup+0x3c0> 0.00 : 8d08: 89 c6 mov %eax,%esi 0.00 : 8d0a: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8d0e: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 8d13: e8 a8 fb ff ff callq 88c0 <_dl_cache_libcmp> 0.00 : 8d18: 85 c0 test %eax,%eax 0.00 : 8d1a: 0f 85 90 00 00 00 jne 8db0 <_dl_load_cache_lookup+0x3c0> 0.00 : 8d20: 48 8d 44 6d 00 lea 0x0(%rbp,%rbp,2),%rax 0.00 : 8d25: 49 8d 04 c7 lea (%r15,%rax,8),%rax 0.00 : 8d29: 81 78 30 03 03 00 00 cmpl $0x303,0x30(%rax) 0.00 : 8d30: 48 8d 50 30 lea 0x30(%rax),%rdx 0.00 : 8d34: 75 a2 jne 8cd8 <_dl_load_cache_lookup+0x2e8> 0.00 : 8d36: 8b 4a 08 mov 0x8(%rdx),%ecx 0.00 : 8d39: 41 39 ce cmp %ecx,%r14d 0.00 : 8d3c: 76 9a jbe 8cd8 <_dl_load_cache_lookup+0x2e8> 0.00 : 8d3e: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 8d44: 74 0c je 8d52 <_dl_load_cache_lookup+0x362> 0.00 : 8d46: 81 3d 20 5f 21 00 03 cmpl $0x303,0x215f20(%rip) # 21ec70 <_rtld_global_ro+0x50> 0.00 : 8d4d: 03 00 00 0.00 : 8d50: 75 86 jne 8cd8 <_dl_load_cache_lookup+0x2e8> 0.00 : 8d52: 8b 15 cc 5e 21 00 mov 0x215ecc(%rip),%edx # 21ec24 <_rtld_global_ro+0x4> 11.11 : 8d58: 85 d2 test %edx,%edx 0.00 : 8d5a: 74 10 je 8d6c <_dl_load_cache_lookup+0x37c> 0.00 : 8d5c: 48 8d 44 6d 00 lea 0x0(%rbp,%rbp,2),%rax 0.00 : 8d61: 41 3b 54 c7 3c cmp 0x3c(%r15,%rax,8),%edx 0.00 : 8d66: 0f 82 6c ff ff ff jb 8cd8 <_dl_load_cache_lookup+0x2e8> 0.00 : 8d6c: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 8d73: 00 00 80 0.00 : 8d76: 48 0b 05 fb 5e 21 00 or 0x215efb(%rip),%rax # 21ec78 <_rtld_global_ro+0x58> 0.00 : 8d7d: 48 8d 54 6d 00 lea 0x0(%rbp,%rbp,2),%rdx 0.00 : 8d82: 48 f7 d0 not %rax 0.00 : 8d85: 49 85 44 d7 40 test %rax,0x40(%r15,%rdx,8) 0.00 : 8d8a: 0f 85 48 ff ff ff jne 8cd8 <_dl_load_cache_lookup+0x2e8> 0.00 : 8d90: 81 3d d6 5e 21 00 03 cmpl $0x303,0x215ed6(%rip) # 21ec70 <_rtld_global_ro+0x50> 0.00 : 8d97: 03 00 00 0.00 : 8d9a: 89 c8 mov %ecx,%eax 0.00 : 8d9c: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax 0.00 : 8da1: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 8da6: 0f 85 2c ff ff ff jne 8cd8 <_dl_load_cache_lookup+0x2e8> 0.00 : 8dac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8db0: f6 05 69 5e 21 00 01 testb $0x1,0x215e69(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 8db7: 0f 84 ad fc ff ff je 8a6a <_dl_load_cache_lookup+0x7a> 0.00 : 8dbd: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 8dc3: 0f 84 a1 fc ff ff je 8a6a <_dl_load_cache_lookup+0x7a> 0.00 : 8dc9: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : 8dce: 48 8d 3d 30 0c 01 00 lea 0x10c30(%rip),%rdi # 19a05 <__PRETTY_FUNCTION__.12417+0x103> 0.00 : 8dd5: 31 c0 xor %eax,%eax 0.00 : 8dd7: e8 74 65 00 00 callq f350 <_dl_debug_printf> 0.00 : 8ddc: e9 89 fc ff ff jmpq 8a6a <_dl_load_cache_lookup+0x7a> 0.00 : 8de1: 49 83 f9 30 cmp $0x30,%r9 0.00 : 8de5: 0f 86 60 fc ff ff jbe 8a4b <_dl_load_cache_lookup+0x5b> 0.00 : 8deb: 48 8d 3d ad 0d 01 00 lea 0x10dad(%rip),%rdi # 19b9f <__PRETTY_FUNCTION__.12287+0x3e> 0.00 : 8df2: b9 14 00 00 00 mov $0x14,%ecx 0.00 : 8df7: 48 89 c6 mov %rax,%rsi 0.00 : 8dfa: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 8dfc: 0f 85 49 fc ff ff jne 8a4b <_dl_load_cache_lookup+0x5b> 0.00 : 8e02: 48 89 05 7f 72 21 00 mov %rax,0x21727f(%rip) # 220088 0.00 : 8e09: 48 89 05 70 72 21 00 mov %rax,0x217270(%rip) # 220080 0.00 : 8e10: e9 bf fc ff ff jmpq 8ad4 <_dl_load_cache_lookup+0xe4> 0.00 : 8e15: 4c 8b 3d 6c 72 21 00 mov 0x21726c(%rip),%r15 # 220088 0.00 : 8e1c: 89 eb mov %ebp,%ebx 0.00 : 8e1e: e9 a3 fe ff ff jmpq 8cc6 <_dl_load_cache_lookup+0x2d6> 0.00 : 8e23: 48 8d 0d 46 39 01 00 lea 0x13946(%rip),%rcx # 1c770 <__PRETTY_FUNCTION__.11165> 0.00 : 8e2a: 48 8d 35 83 0d 01 00 lea 0x10d83(%rip),%rsi # 19bb4 <__PRETTY_FUNCTION__.12287+0x53> 0.00 : 8e31: 48 8d 3d 87 0d 01 00 lea 0x10d87(%rip),%rdi # 19bbf <__PRETTY_FUNCTION__.12287+0x5e> 0.00 : 8e38: ba eb 00 00 00 mov $0xeb,%edx 0.00 : 8e3d: e8 2e bf 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 8e42: 48 8d 3d 56 0d 01 00 lea 0x10d56(%rip),%rdi # 19b9f <__PRETTY_FUNCTION__.12287+0x3e> 0.00 : 8e49: b9 14 00 00 00 mov $0x14,%ecx 0.00 : 8e4e: 48 89 d6 mov %rdx,%rsi 0.00 : 8e51: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 8e53: 0f 84 7b fc ff ff je 8ad4 <_dl_load_cache_lookup+0xe4> 0.00 : 8e59: e9 6b fc ff ff jmpq 8ac9 <_dl_load_cache_lookup+0xd9> 0.00 : 8e5e: 85 db test %ebx,%ebx 0.00 : 8e60: 89 5c 24 14 mov %ebx,0x14(%rsp) 0.00 : 8e64: 7e 60 jle 8ec6 <_dl_load_cache_lookup+0x4d6> 0.00 : 8e66: 8d 6b ff lea -0x1(%rbx),%ebp 0.00 : 8e69: 4c 8b 2d 10 72 21 00 mov 0x217210(%rip),%r13 # 220080 0.00 : 8e70: 48 63 c5 movslq %ebp,%rax 0.00 : 8e73: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8e77: 41 8b 44 85 14 mov 0x14(%r13,%rax,4),%eax 0.00 : 8e7c: 44 39 f0 cmp %r14d,%eax 0.00 : 8e7f: 72 32 jb 8eb3 <_dl_load_cache_lookup+0x4c3> 0.00 : 8e81: eb 4a jmp 8ecd <_dl_load_cache_lookup+0x4dd> 0.00 : 8e83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8e88: 85 ed test %ebp,%ebp 0.00 : 8e8a: 0f 84 d6 00 00 00 je 8f66 <_dl_load_cache_lookup+0x576> 0.00 : 8e90: 8d 55 ff lea -0x1(%rbp),%edx 0.00 : 8e93: 4c 8b 2d e6 71 21 00 mov 0x2171e6(%rip),%r13 # 220080 0.00 : 8e9a: 48 63 c2 movslq %edx,%rax 0.00 : 8e9d: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8ea1: 41 8b 44 85 14 mov 0x14(%r13,%rax,4),%eax 0.00 : 8ea6: 41 39 c6 cmp %eax,%r14d 0.00 : 8ea9: 0f 86 be 00 00 00 jbe 8f6d <_dl_load_cache_lookup+0x57d> 0.00 : 8eaf: 89 eb mov %ebp,%ebx 0.00 : 8eb1: 89 d5 mov %edx,%ebp 0.00 : 8eb3: 89 c6 mov %eax,%esi 0.00 : 8eb5: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8eb9: 49 8d 34 37 lea (%r15,%rsi,1),%rsi 0.00 : 8ebd: e8 fe f9 ff ff callq 88c0 <_dl_cache_libcmp> 0.00 : 8ec2: 85 c0 test %eax,%eax 0.00 : 8ec4: 74 c2 je 8e88 <_dl_load_cache_lookup+0x498> 0.00 : 8ec6: 4c 8b 2d b3 71 21 00 mov 0x2171b3(%rip),%r13 # 220080 0.00 : 8ecd: 48 63 eb movslq %ebx,%rbp 0.00 : 8ed0: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 8ed7: 00 00 0.00 : 8ed9: eb 1c jmp 8ef7 <_dl_load_cache_lookup+0x507> 0.00 : 8edb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8ee0: 83 c3 01 add $0x1,%ebx 0.00 : 8ee3: 48 83 c5 01 add $0x1,%rbp 0.00 : 8ee7: 44 39 e3 cmp %r12d,%ebx 0.00 : 8eea: 0f 8f c0 fe ff ff jg 8db0 <_dl_load_cache_lookup+0x3c0> 0.00 : 8ef0: 4c 8b 2d 89 71 21 00 mov 0x217189(%rip),%r13 # 220080 0.00 : 8ef7: 3b 5c 24 14 cmp 0x14(%rsp),%ebx 0.00 : 8efb: 7e 2a jle 8f27 <_dl_load_cache_lookup+0x537> 0.00 : 8efd: 48 8d 44 6d 00 lea 0x0(%rbp,%rbp,2),%rax 0.00 : 8f02: 41 8b 44 85 14 mov 0x14(%r13,%rax,4),%eax 0.00 : 8f07: 41 39 c6 cmp %eax,%r14d 0.00 : 8f0a: 0f 86 a0 fe ff ff jbe 8db0 <_dl_load_cache_lookup+0x3c0> 0.00 : 8f10: 89 c6 mov %eax,%esi 0.00 : 8f12: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8f16: 49 8d 34 37 lea (%r15,%rsi,1),%rsi 0.00 : 8f1a: e8 a1 f9 ff ff callq 88c0 <_dl_cache_libcmp> 0.00 : 8f1f: 85 c0 test %eax,%eax 0.00 : 8f21: 0f 85 89 fe ff ff jne 8db0 <_dl_load_cache_lookup+0x3c0> 0.00 : 8f27: 48 8d 44 6d 00 lea 0x0(%rbp,%rbp,2),%rax 0.00 : 8f2c: 49 8d 44 85 00 lea 0x0(%r13,%rax,4),%rax 0.00 : 8f31: 81 78 10 03 03 00 00 cmpl $0x303,0x10(%rax) 0.00 : 8f38: 75 a6 jne 8ee0 <_dl_load_cache_lookup+0x4f0> 0.00 : 8f3a: 8b 40 18 mov 0x18(%rax),%eax 0.00 : 8f3d: 41 39 c6 cmp %eax,%r14d 0.00 : 8f40: 76 9e jbe 8ee0 <_dl_load_cache_lookup+0x4f0> 0.00 : 8f42: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 8f48: 74 44 je 8f8e <_dl_load_cache_lookup+0x59e> 0.00 : 8f4a: 81 3d 1c 5d 21 00 03 cmpl $0x303,0x215d1c(%rip) # 21ec70 <_rtld_global_ro+0x50> 0.00 : 8f51: 03 00 00 0.00 : 8f54: 75 8a jne 8ee0 <_dl_load_cache_lookup+0x4f0> 0.00 : 8f56: 89 c0 mov %eax,%eax 0.00 : 8f58: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : 8f5c: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 8f61: e9 4a fe ff ff jmpq 8db0 <_dl_load_cache_lookup+0x3c0> 0.00 : 8f66: 4c 8b 2d 13 71 21 00 mov 0x217113(%rip),%r13 # 220080 0.00 : 8f6d: 89 eb mov %ebp,%ebx 0.00 : 8f6f: e9 59 ff ff ff jmpq 8ecd <_dl_load_cache_lookup+0x4dd> 0.00 : 8f74: 48 8d 35 f5 0b 01 00 lea 0x10bf5(%rip),%rsi # 19b70 <__PRETTY_FUNCTION__.12287+0xf> 0.00 : 8f7b: 48 8d 3d ff 0b 01 00 lea 0x10bff(%rip),%rdi # 19b81 <__PRETTY_FUNCTION__.12287+0x20> 0.00 : 8f82: 31 c0 xor %eax,%eax 0.00 : 8f84: e8 c7 63 00 00 callq f350 <_dl_debug_printf> 0.00 : 8f89: e9 81 fa ff ff jmpq 8a0f <_dl_load_cache_lookup+0x1f> 0.00 : 8f8e: 81 3d d8 5c 21 00 03 cmpl $0x303,0x215cd8(%rip) # 21ec70 <_rtld_global_ro+0x50> 0.00 : 8f95: 03 00 00 0.00 : 8f98: 89 c0 mov %eax,%eax 0.00 : 8f9a: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : 8f9e: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 8fa3: 0f 85 37 ff ff ff jne 8ee0 <_dl_load_cache_lookup+0x4f0> 0.00 : 8fa9: e9 02 fe ff ff jmpq 8db0 <_dl_load_cache_lookup+0x3c0> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 45.45 ??:0 27.27 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000eb80 <_dl_name_match_p>: 45.45 : eb80: 55 push %rbp 27.27 : eb81: 48 89 fd mov %rdi,%rbp 0.00 : eb84: 53 push %rbx 0.00 : eb85: 48 89 f3 mov %rsi,%rbx 0.00 : eb88: 48 83 ec 08 sub $0x8,%rsp 0.00 : eb8c: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : eb90: e8 cb 7a 00 00 callq 16660 9.09 : eb95: 85 c0 test %eax,%eax 0.00 : eb97: 74 28 je ebc1 <_dl_name_match_p+0x41> 0.00 : eb99: 48 8b 5b 38 mov 0x38(%rbx),%rbx 0.00 : eb9d: 48 85 db test %rbx,%rbx 0.00 : eba0: 75 10 jne ebb2 <_dl_name_match_p+0x32> 0.00 : eba2: eb 2c jmp ebd0 <_dl_name_match_p+0x50> 0.00 : eba4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : eba8: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : ebac: 48 85 db test %rbx,%rbx 0.00 : ebaf: 90 nop 0.00 : ebb0: 74 1e je ebd0 <_dl_name_match_p+0x50> 9.09 : ebb2: 48 8b 33 mov (%rbx),%rsi 9.09 : ebb5: 48 89 ef mov %rbp,%rdi 0.00 : ebb8: e8 a3 7a 00 00 callq 16660 0.00 : ebbd: 85 c0 test %eax,%eax 0.00 : ebbf: 75 e7 jne eba8 <_dl_name_match_p+0x28> 0.00 : ebc1: 48 83 c4 08 add $0x8,%rsp 0.00 : ebc5: b8 01 00 00 00 mov $0x1,%eax 0.00 : ebca: 5b pop %rbx 0.00 : ebcb: 5d pop %rbp 0.00 : ebcc: c3 retq 0.00 : ebcd: 0f 1f 00 nopl (%rax) 0.00 : ebd0: 48 83 c4 08 add $0x8,%rsp 0.00 : ebd4: 31 c0 xor %eax,%eax 0.00 : ebd6: 5b pop %rbx 0.00 : ebd7: 5d pop %rbp Sorted summary for file /bin/bash ---------------------------------------------- 57.14 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000426020 : 57.14 : 426020: 55 push %rbp 0.00 : 426021: 48 89 fd mov %rdi,%rbp 0.00 : 426024: 53 push %rbx 0.00 : 426025: 48 83 ec 08 sub $0x8,%rsp 0.00 : 426029: 48 85 ff test %rdi,%rdi 0.00 : 42602c: 74 43 je 426071 14.29 : 42602e: 8b 3f mov (%rdi),%edi 14.29 : 426030: 85 ff test %edi,%edi 0.00 : 426032: 7e 3d jle 426071 0.00 : 426034: 31 db xor %ebx,%ebx 0.00 : 426036: eb 14 jmp 42604c 0.00 : 426038: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42603f: 00 0.00 : 426040: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 426043: 48 83 c3 01 add $0x1,%rbx 0.00 : 426047: 39 45 00 cmp %eax,0x0(%rbp) 0.00 : 42604a: 7e 25 jle 426071 0.00 : 42604c: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : 426050: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 14.29 : 426054: 74 ea je 426040 0.00 : 426056: 89 df mov %ebx,%edi 0.00 : 426058: e8 83 fe fe ff callq 415ee0 0.00 : 42605d: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : 426061: c6 04 18 00 movb $0x0,(%rax,%rbx,1) 0.00 : 426065: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 426068: 48 83 c3 01 add $0x1,%rbx 0.00 : 42606c: 39 45 00 cmp %eax,0x0(%rbp) 0.00 : 42606f: 7f db jg 42604c 0.00 : 426071: 48 83 c4 08 add $0x8,%rsp 0.00 : 426075: 5b pop %rbx 0.00 : 426076: 5d pop %rbp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 44.44 ??:0 22.22 ??:0 22.22 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008bd40 : 0.00 : 8bd40: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 8bd45: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 8bd4a: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 8bd4f: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 8bd54: 48 83 ec 28 sub $0x28,%rsp 0.00 : 8bd58: 8b 05 02 b5 2e 00 mov 0x2eb502(%rip),%eax # 377260 <__cpu_features> 0.00 : 8bd5e: 85 c0 test %eax,%eax 0.00 : 8bd60: 74 2e je 8bd90 0.00 : 8bd62: 83 f8 01 cmp $0x1,%eax 0.00 : 8bd65: 74 39 je 8bda0 0.00 : 8bd67: 83 f8 02 cmp $0x2,%eax 0.00 : 8bd6a: 0f 84 50 01 00 00 je 8bec0 0.00 : 8bd70: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 8bd75: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 8bd7a: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 8bd7f: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 8bd84: 48 83 c4 28 add $0x28,%rsp 0.00 : 8bd88: c3 retq 0.00 : 8bd89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8bd90: e8 fb 31 f9 ff callq 1ef90 <__init_cpu_features> 0.00 : 8bd95: 8b 05 c5 b4 2e 00 mov 0x2eb4c5(%rip),%eax # 377260 <__cpu_features> 0.00 : 8bd9b: 83 f8 01 cmp $0x1,%eax 0.00 : 8bd9e: 75 c7 jne 8bd67 0.00 : 8bda0: 8b 35 be b4 2e 00 mov 0x2eb4be(%rip),%esi # 377264 <__cpu_features+0x4> 0.00 : 8bda6: bf bc 00 00 00 mov $0xbc,%edi 0.00 : 8bdab: e8 50 fe ff ff callq 8bc00 0.00 : 8bdb0: 8b 35 ae b4 2e 00 mov 0x2eb4ae(%rip),%esi # 377264 <__cpu_features+0x4> 0.00 : 8bdb6: bf c2 00 00 00 mov $0xc2,%edi 0.00 : 8bdbb: 48 89 c5 mov %rax,%rbp 0.00 : 8bdbe: e8 3d fe ff ff callq 8bc00 0.00 : 8bdc3: 48 85 c0 test %rax,%rax 0.00 : 8bdc6: 48 89 c7 mov %rax,%rdi 0.00 : 8bdc9: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 8bdcf: 0f 8e 2b 02 00 00 jle 8c000 0.00 : 8bdd5: 44 8b 1d 88 b4 2e 00 mov 0x2eb488(%rip),%r11d # 377264 <__cpu_features+0x4> 0.00 : 8bddc: 44 8b 05 89 b4 2e 00 mov 0x2eb489(%rip),%r8d # 37726c <__cpu_features+0xc> 0.00 : 8bde3: 41 83 fb 03 cmp $0x3,%r11d 0.00 : 8bde7: 0f 8e 73 01 00 00 jle 8bf60 0.00 : 8bded: 31 f6 xor %esi,%esi 0.00 : 8bdef: 41 ba 04 00 00 00 mov $0x4,%r10d 0.00 : 8bdf5: 0f 1f 00 nopl (%rax) 0.00 : 8bdf8: 89 f1 mov %esi,%ecx 0.00 : 8bdfa: 44 89 d0 mov %r10d,%eax 0.00 : 8bdfd: 83 c6 01 add $0x1,%esi 0.00 : 8be00: 0f a2 cpuid 44.44 : 8be02: a8 1f test $0x1f,%al 0.00 : 8be04: 41 89 c5 mov %eax,%r13d 0.00 : 8be07: 0f 84 53 01 00 00 je 8bf60 0.00 : 8be0d: c1 e8 05 shr $0x5,%eax 0.00 : 8be10: 83 e0 07 and $0x7,%eax 0.00 : 8be13: 44 39 c8 cmp %r9d,%eax 0.00 : 8be16: 75 e0 jne 8bdf8 0.00 : 8be18: 41 c1 ed 0e shr $0xe,%r13d 0.00 : 8be1c: 44 89 ee mov %r13d,%esi 0.00 : 8be1f: 81 e6 ff 03 00 00 and $0x3ff,%esi 0.00 : 8be25: 0f 85 85 01 00 00 jne 8bfb0 0.00 : 8be2b: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 8be2e: 48 85 ff test %rdi,%rdi 0.00 : 8be31: 7e 16 jle 8be49 0.00 : 8be33: 85 c0 test %eax,%eax 0.00 : 8be35: 74 12 je 8be49 0.00 : 8be37: 48 89 fa mov %rdi,%rdx 0.00 : 8be3a: 89 c1 mov %eax,%ecx 0.00 : 8be3c: 48 89 f8 mov %rdi,%rax 0.00 : 8be3f: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 8be43: 48 f7 f9 idiv %rcx 0.00 : 8be46: 48 89 c7 mov %rax,%rdi 0.00 : 8be49: 48 85 ed test %rbp,%rbp 0.00 : 8be4c: 7e 2d jle 8be7b 0.00 : 8be4e: 48 89 e8 mov %rbp,%rax 0.00 : 8be51: 48 89 ea mov %rbp,%rdx 0.00 : 8be54: 48 89 2d cd 62 2e 00 mov %rbp,0x2e62cd(%rip) # 372128 <__x86_64_raw_data_cache_size> 0.00 : 8be5b: 48 d1 f8 sar %rax 0.00 : 8be5e: 30 d2 xor %dl,%dl 0.00 : 8be60: 48 89 05 b9 62 2e 00 mov %rax,0x2e62b9(%rip) # 372120 <__x86_64_raw_data_cache_size_half> 0.00 : 8be67: 48 89 d0 mov %rdx,%rax 0.00 : 8be6a: 48 89 15 a7 62 2e 00 mov %rdx,0x2e62a7(%rip) # 372118 <__x86_64_data_cache_size> 0.00 : 8be71: 48 d1 f8 sar %rax 0.00 : 8be74: 48 89 05 95 62 2e 00 mov %rax,0x2e6295(%rip) # 372110 <__x86_64_data_cache_size_half> 0.00 : 8be7b: 48 85 ff test %rdi,%rdi 0.00 : 8be7e: 0f 8e ec fe ff ff jle 8bd70 0.00 : 8be84: 48 89 f8 mov %rdi,%rax 0.00 : 8be87: 48 89 fa mov %rdi,%rdx 0.00 : 8be8a: 48 89 3d b7 62 2e 00 mov %rdi,0x2e62b7(%rip) # 372148 <__x86_64_raw_shared_cache_size> 0.00 : 8be91: 48 d1 f8 sar %rax 0.00 : 8be94: 30 d2 xor %dl,%dl 0.00 : 8be96: 48 89 05 a3 62 2e 00 mov %rax,0x2e62a3(%rip) # 372140 <__x86_64_raw_shared_cache_size_half> 0.00 : 8be9d: 48 89 d0 mov %rdx,%rax 0.00 : 8bea0: 48 89 15 91 62 2e 00 mov %rdx,0x2e6291(%rip) # 372138 <__x86_64_shared_cache_size> 0.00 : 8bea7: 48 d1 f8 sar %rax 0.00 : 8beaa: 48 89 05 7f 62 2e 00 mov %rax,0x2e627f(%rip) # 372130 <__x86_64_shared_cache_size_half> 0.00 : 8beb1: e9 ba fe ff ff jmpq 8bd70 0.00 : 8beb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8bebd: 00 00 00 0.00 : 8bec0: bf bc 00 00 00 mov $0xbc,%edi 0.00 : 8bec5: e8 06 fa ff ff callq 8b8d0 0.00 : 8beca: bf bf 00 00 00 mov $0xbf,%edi 0.00 : 8becf: 48 89 c5 mov %rax,%rbp 0.00 : 8bed2: e8 f9 f9 ff ff callq 8b8d0 0.00 : 8bed7: bf c2 00 00 00 mov $0xc2,%edi 0.00 : 8bedc: 49 89 c4 mov %rax,%r12 0.00 : 8bedf: e8 ec f9 ff ff callq 8b8d0 0.00 : 8bee4: be 00 00 00 80 mov $0x80000000,%esi 0.00 : 8bee9: 49 89 c0 mov %rax,%r8 0.00 : 8beec: 4c 89 e7 mov %r12,%rdi 0.00 : 8beef: 89 f0 mov %esi,%eax 0.00 : 8bef1: 0f a2 cpuid 0.00 : 8bef3: 4d 85 c0 test %r8,%r8 0.00 : 8bef6: 89 c6 mov %eax,%esi 0.00 : 8bef8: 7e 2a jle 8bf24 0.00 : 8befa: 3d 07 00 00 80 cmp $0x80000007,%eax 0.00 : 8beff: 77 6f ja 8bf70 0.00 : 8bf01: be 01 00 00 00 mov $0x1,%esi 0.00 : 8bf06: 89 f0 mov %esi,%eax 0.00 : 8bf08: 0f a2 cpuid 0.00 : 8bf0a: 81 e2 00 00 00 10 and $0x10000000,%edx 0.00 : 8bf10: 89 c6 mov %eax,%esi 0.00 : 8bf12: 74 0c je 8bf20 0.00 : 8bf14: c1 eb 10 shr $0x10,%ebx 0.00 : 8bf17: 89 d8 mov %ebx,%eax 0.00 : 8bf19: 25 ff 00 00 00 and $0xff,%eax 0.00 : 8bf1e: 75 70 jne 8bf90 0.00 : 8bf20: 4b 8d 3c 20 lea (%r8,%r12,1),%rdi 0.00 : 8bf24: 81 fe 00 00 00 80 cmp $0x80000000,%esi 0.00 : 8bf2a: 0f 86 19 ff ff ff jbe 8be49 0.00 : 8bf30: b8 01 00 00 80 mov $0x80000001,%eax 0.00 : 8bf35: 0f a2 cpuid 0.00 : 8bf37: 80 e5 01 and $0x1,%ch 0.00 : 8bf3a: 75 0c jne 8bf48 0.00 : 8bf3c: 85 d2 test %edx,%edx 0.00 : 8bf3e: 0f 89 05 ff ff ff jns 8be49 0.00 : 8bf44: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8bf48: c7 05 be b4 2e 00 ff movl $0xffffffff,0x2eb4be(%rip) # 377410 <__x86_64_prefetchw> 0.00 : 8bf4f: ff ff ff 0.00 : 8bf52: e9 f2 fe ff ff jmpq 8be49 0.00 : 8bf57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8bf5e: 00 00 0.00 : 8bf60: 41 c1 e8 10 shr $0x10,%r8d 0.00 : 8bf64: 41 0f b6 c0 movzbl %r8b,%eax 0.00 : 8bf68: e9 c1 fe ff ff jmpq 8be2e 0.00 : 8bf6d: 0f 1f 00 nopl (%rax) 0.00 : 8bf70: be 08 00 00 80 mov $0x80000008,%esi 0.00 : 8bf75: 89 f0 mov %esi,%eax 0.00 : 8bf77: 0f a2 cpuid 0.00 : 8bf79: c1 e9 0c shr $0xc,%ecx 0.00 : 8bf7c: 89 c6 mov %eax,%esi 0.00 : 8bf7e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 8bf83: 83 e1 0f and $0xf,%ecx 0.00 : 8bf86: d3 e0 shl %cl,%eax 0.00 : 8bf88: 85 c0 test %eax,%eax 0.00 : 8bf8a: 0f 84 71 ff ff ff je 8bf01 0.00 : 8bf90: 4c 89 c2 mov %r8,%rdx 0.00 : 8bf93: 89 c1 mov %eax,%ecx 0.00 : 8bf95: 4c 89 c0 mov %r8,%rax 0.00 : 8bf98: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 8bf9c: 48 f7 f9 idiv %rcx 0.00 : 8bf9f: 49 89 c0 mov %rax,%r8 0.00 : 8bfa2: e9 79 ff ff ff jmpq 8bf20 0.00 : 8bfa7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8bfae: 00 00 0.00 : 8bfb0: 41 83 fb 0a cmp $0xa,%r11d 0.00 : 8bfb4: 0f 8e 71 fe ff ff jle 8be2b 0.00 : 8bfba: 45 31 d2 xor %r10d,%r10d 0.00 : 8bfbd: 41 b8 0b 00 00 00 mov $0xb,%r8d 0.00 : 8bfc3: eb 10 jmp 8bfd5 0.00 : 8bfc5: 85 c9 test %ecx,%ecx 0.00 : 8bfc7: 0f 84 5e fe ff ff je 8be2b 0.00 : 8bfcd: 81 f9 00 02 00 00 cmp $0x200,%ecx 0.00 : 8bfd3: 74 4b je 8c020 0.00 : 8bfd5: 44 89 d1 mov %r10d,%ecx 0.00 : 8bfd8: 44 89 c0 mov %r8d,%eax 0.00 : 8bfdb: 41 83 c2 01 add $0x1,%r10d 0.00 : 8bfdf: 0f a2 cpuid 22.22 : 8bfe1: 89 d8 mov %ebx,%eax 11.11 : 8bfe3: 81 e1 f0 0f 00 00 and $0xff0,%ecx 0.00 : 8bfe9: 25 ff 00 00 00 and $0xff,%eax 0.00 : 8bfee: 0f 84 37 fe ff ff je 8be2b 0.00 : 8bff4: eb cf jmp 8bfc5 0.00 : 8bff6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8bffd: 00 00 00 22.22 : 8c000: 8b 35 5e b2 2e 00 mov 0x2eb25e(%rip),%esi # 377264 <__cpu_features+0x4> 0.00 : 8c006: bf bf 00 00 00 mov $0xbf,%edi 0.00 : 8c00b: e8 f0 fb ff ff callq 8bc00 0.00 : 8c010: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 8c016: 48 89 c7 mov %rax,%rdi 0.00 : 8c019: e9 b7 fd ff ff jmpq 8bdd5 0.00 : 8c01e: 66 90 xchg %ax,%ax 0.00 : 8c020: 0f bd ce bsr %esi,%ecx 0.00 : 8c023: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 8c028: 83 c1 01 add $0x1,%ecx 0.00 : 8c02b: 83 e8 01 sub $0x1,%eax 0.00 : 8c02e: d3 e6 shl %cl,%esi 0.00 : 8c030: f7 d6 not %esi 0.00 : 8c032: 21 c6 and %eax,%esi 0.00 : 8c034: e9 f2 fd ff ff jmpq 8be2b Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000ba590 : 0.00 : ba590: 41 57 push %r15 0.00 : ba592: 41 56 push %r14 0.00 : ba594: 41 55 push %r13 0.00 : ba596: 41 54 push %r12 0.00 : ba598: 41 89 cc mov %ecx,%r12d 0.00 : ba59b: b9 18 00 00 00 mov $0x18,%ecx 0.00 : ba5a0: 55 push %rbp 0.00 : ba5a1: 44 89 cd mov %r9d,%ebp 0.00 : ba5a4: 53 push %rbx 0.00 : ba5a5: 48 81 ec d8 01 00 00 sub $0x1d8,%rsp 0.00 : ba5ac: 48 89 7c 24 50 mov %rdi,0x50(%rsp) 0.00 : ba5b1: 89 54 24 44 mov %edx,0x44(%rsp) 0.00 : ba5b5: 48 8d 94 24 d0 00 00 lea 0xd0(%rsp),%rdx 0.00 : ba5bc: 00 0.00 : ba5bd: 44 89 44 24 40 mov %r8d,0x40(%rsp) 0.00 : ba5c2: 48 89 74 24 48 mov %rsi,0x48(%rsp) 0.00 : ba5c7: 48 8b 07 mov (%rdi),%rax 0.00 : ba5ca: 48 89 d7 mov %rdx,%rdi 0.00 : ba5cd: 48 89 54 24 38 mov %rdx,0x38(%rsp) 0.00 : ba5d2: 4c 8b 84 24 10 02 00 mov 0x210(%rsp),%r8 0.00 : ba5d9: 00 0.00 : ba5da: 48 89 44 24 60 mov %rax,0x60(%rsp) 0.00 : ba5df: 31 c0 xor %eax,%eax 0.00 : ba5e1: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : ba5e4: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : ba5e9: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : ba5ee: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : ba5f5: 00 0.00 : ba5f6: 48 8b 52 20 mov 0x20(%rdx),%rdx 0.00 : ba5fa: 48 85 d2 test %rdx,%rdx 0.00 : ba5fd: 48 89 94 24 80 00 00 mov %rdx,0x80(%rsp) 0.00 : ba604: 00 0.00 : ba605: 74 1d je ba624 0.00 : ba607: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : ba60c: 0f b6 41 38 movzbl 0x38(%rcx),%eax 0.00 : ba610: a8 08 test $0x8,%al 0.00 : ba612: 0f 85 06 04 00 00 jne baa1e 0.00 : ba618: 48 c7 84 24 80 00 00 movq $0x0,0x80(%rsp) 0.00 : ba61f: 00 00 00 00 00 0.00 : ba624: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : ba629: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : ba62e: 31 f6 xor %esi,%esi 0.00 : ba630: 48 8b 5b 28 mov 0x28(%rbx),%rbx 0.00 : ba634: 48 89 9c 24 88 00 00 mov %rbx,0x88(%rsp) 0.00 : ba63b: 00 0.00 : ba63c: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : ba640: c7 44 24 78 00 00 00 movl $0x0,0x78(%rsp) 0.00 : ba647: 00 0.00 : ba648: 4c 39 c0 cmp %r8,%rax 0.00 : ba64b: 73 0c jae ba659 0.00 : ba64d: f7 d0 not %eax 0.00 : ba64f: 44 01 c0 add %r8d,%eax 0.00 : ba652: 89 44 24 78 mov %eax,0x78(%rsp) 0.00 : ba656: 48 63 f0 movslq %eax,%rsi 0.00 : ba659: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : ba65e: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : ba663: 0f 84 9c 03 00 00 je baa05 0.00 : ba669: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : ba66e: 48 8b 51 48 mov 0x48(%rcx),%rdx 0.00 : ba672: 48 85 d2 test %rdx,%rdx 0.00 : ba675: 0f 84 8a 03 00 00 je baa05 0.00 : ba67b: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : ba680: 48 8b 41 50 mov 0x50(%rcx),%rax 0.00 : ba684: 48 85 c0 test %rax,%rax 0.00 : ba687: 0f 84 78 03 00 00 je baa05 0.00 : ba68d: 48 89 cb mov %rcx,%rbx 0.00 : ba690: 48 8b 49 58 mov 0x58(%rcx),%rcx 0.00 : ba694: 48 85 c9 test %rcx,%rcx 0.00 : ba697: 0f 84 68 03 00 00 je baa05 0.00 : ba69d: 48 83 7b 60 00 cmpq $0x0,0x60(%rbx) 0.00 : ba6a2: 0f 84 5d 03 00 00 je baa05 0.00 : ba6a8: 8b 52 0c mov 0xc(%rdx),%edx 0.00 : ba6ab: 85 d2 test %edx,%edx 0.00 : ba6ad: 75 3a jne ba6e9 0.00 : ba6af: 8b 40 0c mov 0xc(%rax),%eax 0.00 : ba6b2: 85 c0 test %eax,%eax 0.00 : ba6b4: 75 33 jne ba6e9 0.00 : ba6b6: 44 8b 79 0c mov 0xc(%rcx),%r15d 0.00 : ba6ba: 45 85 ff test %r15d,%r15d 0.00 : ba6bd: 74 0b je ba6ca 0.00 : ba6bf: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : ba6c4: 80 7b 38 00 cmpb $0x0,0x38(%rbx) 0.00 : ba6c8: 78 1f js ba6e9 0.00 : ba6ca: 45 85 e4 test %r12d,%r12d 0.00 : ba6cd: 74 12 je ba6e1 0.00 : ba6cf: 8b 44 24 40 mov 0x40(%rsp),%eax 0.00 : ba6d3: 44 01 e0 add %r12d,%eax 0.00 : ba6d6: 85 c0 test %eax,%eax 0.00 : ba6d8: 0f 85 27 03 00 00 jne baa05 0.00 : ba6de: 45 31 e4 xor %r12d,%r12d 0.00 : ba6e1: c7 44 24 40 00 00 00 movl $0x0,0x40(%rsp) 0.00 : ba6e8: 00 0.00 : ba6e9: 49 29 f0 sub %rsi,%r8 0.00 : ba6ec: 4c 89 84 24 b8 00 00 mov %r8,0xb8(%rsp) 0.00 : ba6f3: 00 0.00 : ba6f4: 0f 84 3d 03 00 00 je baa37 0.00 : ba6fa: c7 44 24 74 01 00 00 movl $0x1,0x74(%rsp) 0.00 : ba701: 00 0.00 : ba702: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : ba707: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : ba70c: 8b 74 24 44 mov 0x44(%rsp),%esi 0.00 : ba710: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : ba715: 48 8b 48 18 mov 0x18(%rax),%rcx 0.00 : ba719: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : ba71d: 48 89 d3 mov %rdx,%rbx 0.00 : ba720: 8b 92 a4 00 00 00 mov 0xa4(%rdx),%edx 0.00 : ba726: 83 c6 01 add $0x1,%esi 0.00 : ba729: 48 89 bc 24 d0 00 00 mov %rdi,0xd0(%rsp) 0.00 : ba730: 00 0.00 : ba731: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : ba736: 83 c0 01 add $0x1,%eax 0.00 : ba739: 39 d0 cmp %edx,%eax 0.00 : ba73b: 0f 4c c2 cmovl %edx,%eax 0.00 : ba73e: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : ba745: 00 0.00 : ba746: 39 c6 cmp %eax,%esi 0.00 : ba748: 0f 4f f0 cmovg %eax,%esi 0.00 : ba74b: 8b 44 24 44 mov 0x44(%rsp),%eax 0.00 : ba74f: f7 c1 00 00 40 00 test $0x400000,%ecx 0.00 : ba755: 48 89 94 24 20 01 00 mov %rdx,0x120(%rsp) 0.00 : ba75c: 00 0.00 : ba75d: 8b 4c 24 44 mov 0x44(%rsp),%ecx 0.00 : ba761: 89 84 24 10 01 00 00 mov %eax,0x110(%rsp) 0.00 : ba768: 89 84 24 0c 01 00 00 mov %eax,0x10c(%rsp) 0.00 : ba76f: 0f 95 c0 setne %al 0.00 : ba772: 45 31 ed xor %r13d,%r13d 0.00 : ba775: 48 85 d2 test %rdx,%rdx 0.00 : ba778: 88 84 24 30 01 00 00 mov %al,0x130(%rsp) 0.00 : ba77f: 41 0f 95 c5 setne %r13b 0.00 : ba783: 0f b6 c0 movzbl %al,%eax 0.00 : ba786: 44 09 e8 or %r13d,%eax 0.00 : ba789: 88 84 24 33 01 00 00 mov %al,0x133(%rsp) 0.00 : ba790: 8b 83 a4 00 00 00 mov 0xa4(%rbx),%eax 0.00 : ba796: 89 84 24 38 01 00 00 mov %eax,0x138(%rsp) 0.00 : ba79d: 0f b6 83 a0 00 00 00 movzbl 0xa0(%rbx),%eax 0.00 : ba7a4: c0 e8 02 shr $0x2,%al 0.00 : ba7a7: 83 e0 01 and $0x1,%eax 0.00 : ba7aa: 88 84 24 31 01 00 00 mov %al,0x131(%rsp) 0.00 : ba7b1: 0f b6 83 a0 00 00 00 movzbl 0xa0(%rbx),%eax 0.00 : ba7b8: 89 8c 24 18 01 00 00 mov %ecx,0x118(%rsp) 0.00 : ba7bf: 89 8c 24 14 01 00 00 mov %ecx,0x114(%rsp) 0.00 : ba7c6: c0 e8 03 shr $0x3,%al 0.00 : ba7c9: 83 e0 01 and $0x1,%eax 0.00 : ba7cc: 88 84 24 32 01 00 00 mov %al,0x132(%rsp) 0.00 : ba7d3: e8 d8 7d ff ff callq b25b0 0.00 : ba7d8: 85 c0 test %eax,%eax 0.00 : ba7da: 89 c3 mov %eax,%ebx 0.00 : ba7dc: 0f 85 f7 01 00 00 jne ba9d9 0.00 : ba7e2: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : ba7e7: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : ba7ec: 48 05 a8 00 00 00 add $0xa8,%rax 0.00 : ba7f2: 48 89 84 24 28 01 00 mov %rax,0x128(%rsp) 0.00 : ba7f9: 00 0.00 : ba7fa: 0f b6 83 a0 00 00 00 movzbl 0xa0(%rbx),%eax 0.00 : ba801: c0 e8 04 shr $0x4,%al 0.00 : ba804: 83 e0 01 and $0x1,%eax 0.00 : ba807: 80 bc 24 33 01 00 00 cmpb $0x0,0x133(%rsp) 0.00 : ba80e: 00 0.00 : ba80f: 88 84 24 36 01 00 00 mov %al,0x136(%rsp) 0.00 : ba816: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : ba81b: 74 08 je ba825 0.00 : ba81d: 48 8b 84 24 d8 00 00 mov 0xd8(%rsp),%rax 0.00 : ba824: 00 0.00 : ba825: 80 bc 24 33 01 00 00 cmpb $0x0,0x133(%rsp) 0.00 : ba82c: 00 0.00 : ba82d: 48 89 84 24 d8 00 00 mov %rax,0xd8(%rsp) 0.00 : ba834: 00 0.00 : ba835: 0f 84 16 02 00 00 je baa51 0.00 : ba83b: 31 c0 xor %eax,%eax 0.00 : ba83d: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : ba842: 89 ac 24 18 01 00 00 mov %ebp,0x118(%rsp) 0.00 : ba849: 89 ac 24 14 01 00 00 mov %ebp,0x114(%rsp) 0.00 : ba850: 89 84 24 fc 00 00 00 mov %eax,0xfc(%rsp) 0.00 : ba857: 89 84 24 00 01 00 00 mov %eax,0x100(%rsp) 0.00 : ba85e: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : ba863: 0f b6 42 38 movzbl 0x38(%rdx),%eax 0.00 : ba867: 8b 9c 24 20 02 00 00 mov 0x220(%rsp),%ebx 0.00 : ba86e: c0 e8 07 shr $0x7,%al 0.00 : ba871: 88 84 24 35 01 00 00 mov %al,0x135(%rsp) 0.00 : ba878: 8b 81 8c 00 00 00 mov 0x8c(%rcx),%eax 0.00 : ba87e: 89 9c 24 48 01 00 00 mov %ebx,0x148(%rsp) 0.00 : ba885: c7 84 24 4c 01 00 00 movl $0xffffffff,0x14c(%rsp) 0.00 : ba88c: ff ff ff ff 0.00 : ba890: 8d 2c 00 lea (%rax,%rax,1),%ebp 0.00 : ba893: 85 ed test %ebp,%ebp 0.00 : ba895: 7e 44 jle ba8db 0.00 : ba897: 48 63 dd movslq %ebp,%rbx 0.00 : ba89a: 48 8d 3c 9b lea (%rbx,%rbx,4),%rdi 0.00 : ba89e: 48 c1 e3 03 shl $0x3,%rbx 0.00 : ba8a2: 48 c1 e7 02 shl $0x2,%rdi 0.00 : ba8a6: e8 a5 3f f6 ff callq 1e850 0.00 : ba8ab: 48 89 df mov %rbx,%rdi 0.00 : ba8ae: 48 89 84 24 70 01 00 mov %rax,0x170(%rsp) 0.00 : ba8b5: 00 0.00 : ba8b6: e8 95 3f f6 ff callq 1e850 0.00 : ba8bb: 48 83 bc 24 70 01 00 cmpq $0x0,0x170(%rsp) 0.00 : ba8c2: 00 00 0.00 : ba8c4: 48 89 84 24 88 01 00 mov %rax,0x188(%rsp) 0.00 : ba8cb: 00 0.00 : ba8cc: 0f 84 c1 01 00 00 je baa93 0.00 : ba8d2: 48 85 c0 test %rax,%rax 0.00 : ba8d5: 0f 84 b8 01 00 00 je baa93 0.00 : ba8db: 48 83 bc 24 b8 00 00 cmpq $0x1,0xb8(%rsp) 0.00 : ba8e2: 00 01 0.00 : ba8e4: 89 ac 24 68 01 00 00 mov %ebp,0x168(%rsp) 0.00 : ba8eb: c7 84 24 78 01 00 00 movl $0x1,0x178(%rsp) 0.00 : ba8f2: 01 00 00 00 0.00 : ba8f6: 89 ac 24 80 01 00 00 mov %ebp,0x180(%rsp) 0.00 : ba8fd: 0f 87 69 01 00 00 ja baa6c 0.00 : ba903: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : ba908: f6 87 a0 00 00 00 02 testb $0x2,0xa0(%rdi) 0.00 : ba90f: 0f 85 57 01 00 00 jne baa6c 0.00 : ba915: 48 c7 84 24 58 01 00 movq $0x0,0x158(%rsp) 0.00 : ba91c: 00 00 00 00 00 0.00 : ba921: 8b 84 24 20 02 00 00 mov 0x220(%rsp),%eax 0.00 : ba928: 44 8b 74 24 40 mov 0x40(%rsp),%r14d 0.00 : ba92d: 44 89 a4 24 cc 01 00 mov %r12d,0x1cc(%rsp) 0.00 : ba934: 00 0.00 : ba935: 83 e0 01 and $0x1,%eax 0.00 : ba938: 83 f8 01 cmp $0x1,%eax 0.00 : ba93b: 19 c0 sbb %eax,%eax 0.00 : ba93d: 83 e0 02 and $0x2,%eax 0.00 : ba940: 83 c0 04 add $0x4,%eax 0.00 : ba943: 45 85 f6 test %r14d,%r14d 0.00 : ba946: 89 84 24 1c 01 00 00 mov %eax,0x11c(%rsp) 0.00 : ba94d: 0f 88 a2 0e 00 00 js bb7f5 0.00 : ba953: 8b 7c 24 40 mov 0x40(%rsp),%edi 0.00 : ba957: 44 89 64 24 68 mov %r12d,0x68(%rsp) 0.00 : ba95c: c7 44 24 70 01 00 00 movl $0x1,0x70(%rsp) 0.00 : ba963: 00 0.00 : ba964: 44 01 e7 add %r12d,%edi 0.00 : ba967: 89 7c 24 6c mov %edi,0x6c(%rsp) 0.00 : ba96b: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : ba970: 31 c0 xor %eax,%eax 0.00 : ba972: 83 ba a4 00 00 00 01 cmpl $0x1,0xa4(%rdx) 0.00 : ba979: ba 08 00 00 00 mov $0x8,%edx 0.00 : ba97e: 0f 94 c0 sete %al 0.00 : ba981: 48 83 bc 24 80 00 00 cmpq $0x0,0x80(%rsp) 0.00 : ba988: 00 00 0.00 : ba98a: 89 44 24 7c mov %eax,0x7c(%rsp) 0.00 : ba98e: 74 39 je ba9c9 0.00 : ba990: 8b 6c 24 7c mov 0x7c(%rsp),%ebp 0.00 : ba994: 85 ed test %ebp,%ebp 0.00 : ba996: 0f 85 4c 0e 00 00 jne bb7e8 0.00 : ba99c: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : ba9a1: f6 41 1a 40 testb $0x40,0x1a(%rcx) 0.00 : ba9a5: 75 0f jne ba9b6 0.00 : ba9a7: 48 83 bc 24 88 00 00 cmpq $0x0,0x88(%rsp) 0.00 : ba9ae: 00 00 0.00 : ba9b0: 0f 84 32 0e 00 00 je bb7e8 0.00 : ba9b6: 31 d2 xor %edx,%edx 0.00 : ba9b8: 8b 44 24 40 mov 0x40(%rsp),%eax 0.00 : ba9bc: 44 09 ea or %r13d,%edx 0.00 : ba9bf: c1 f8 1f sar $0x1f,%eax 0.00 : ba9c2: f7 d0 not %eax 0.00 : ba9c4: 83 e0 02 and $0x2,%eax 0.00 : ba9c7: 09 c2 or %eax,%edx 0.00 : ba9c9: 44 3b 64 24 68 cmp 0x68(%rsp),%r12d 0.00 : ba9ce: 0f 8d cc 00 00 00 jge baaa0 0.00 : ba9d4: bb 01 00 00 00 mov $0x1,%ebx 0.00 : ba9d9: 48 8b bc 24 58 01 00 mov 0x158(%rsp),%rdi 0.00 : ba9e0: 00 0.00 : ba9e1: e8 ba 3e f6 ff callq 1e8a0 0.00 : ba9e6: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : ba9eb: 8b a8 8c 00 00 00 mov 0x8c(%rax),%ebp 0.00 : ba9f1: 85 ed test %ebp,%ebp 0.00 : ba9f3: 0f 85 19 0e 00 00 jne bb812 0.00 : ba9f9: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : ba9fe: e8 8d 75 ff ff callq b1f90 0.00 : baa03: eb 05 jmp baa0a 0.00 : baa05: bb 01 00 00 00 mov $0x1,%ebx 0.00 : baa0a: 48 81 c4 d8 01 00 00 add $0x1d8,%rsp 0.00 : baa11: 89 d8 mov %ebx,%eax 0.00 : baa13: 5b pop %rbx 0.00 : baa14: 5d pop %rbp 0.00 : baa15: 41 5c pop %r12 0.00 : baa17: 41 5d pop %r13 0.00 : baa19: 41 5e pop %r14 0.00 : baa1b: 41 5f pop %r15 0.00 : baa1d: c3 retq 0.00 : baa1e: 8b 4c 24 40 mov 0x40(%rsp),%ecx 0.00 : baa22: 85 c9 test %ecx,%ecx 0.00 : baa24: 0f 84 ee fb ff ff je ba618 0.00 : baa2a: a8 01 test $0x1,%al 0.00 : baa2c: 0f 84 f2 fb ff ff je ba624 0.00 : baa32: e9 e1 fb ff ff jmpq ba618 0.00 : baa37: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : baa3c: 31 c0 xor %eax,%eax 0.00 : baa3e: 83 bf 8c 00 00 00 00 cmpl $0x0,0x8c(%rdi) 0.00 : baa45: 0f 95 c0 setne %al 0.00 : baa48: 89 44 24 74 mov %eax,0x74(%rsp) 0.00 : baa4c: e9 b1 fc ff ff jmpq ba702 0.00 : baa51: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : baa56: 8b 44 24 44 mov 0x44(%rsp),%eax 0.00 : baa5a: 83 bf a4 00 00 00 01 cmpl $0x1,0xa4(%rdi) 0.00 : baa61: 0f 8f d4 fd ff ff jg ba83b 0.00 : baa67: e9 d1 fd ff ff jmpq ba83d 0.00 : baa6c: 8b bc 24 04 01 00 00 mov 0x104(%rsp),%edi 0.00 : baa73: 83 c7 01 add $0x1,%edi 0.00 : baa76: 48 63 ff movslq %edi,%rdi 0.00 : baa79: 48 c1 e7 03 shl $0x3,%rdi 0.00 : baa7d: e8 ce 3d f6 ff callq 1e850 0.00 : baa82: 48 85 c0 test %rax,%rax 0.00 : baa85: 48 89 84 24 58 01 00 mov %rax,0x158(%rsp) 0.00 : baa8c: 00 0.00 : baa8d: 0f 85 8e fe ff ff jne ba921 0.00 : baa93: bb 0c 00 00 00 mov $0xc,%ebx 0.00 : baa98: e9 3c ff ff ff jmpq ba9d9 0.00 : baa9d: 0f 1f 00 nopl (%rax) 0.00 : baaa0: 44 39 64 24 6c cmp %r12d,0x6c(%rsp) 0.00 : baaa5: 0f 8c 29 ff ff ff jl ba9d4 0.00 : baaab: 83 ea 04 sub $0x4,%edx 0.00 : baaae: 48 8d bc 24 90 01 00 lea 0x190(%rsp),%rdi 0.00 : baab5: 00 0.00 : baab6: 48 8d 84 24 c4 01 00 lea 0x1c4(%rsp),%rax 0.00 : baabd: 00 0.00 : baabe: 89 d3 mov %edx,%ebx 0.00 : baac0: 89 54 24 34 mov %edx,0x34(%rsp) 0.00 : baac4: 48 8d 94 24 c8 01 00 lea 0x1c8(%rsp),%rdx 0.00 : baacb: 00 0.00 : baacc: 48 89 7c 24 20 mov %rdi,0x20(%rsp) 0.00 : baad1: 48 83 c7 18 add $0x18,%rdi 0.00 : baad5: 48 89 5c 24 28 mov %rbx,0x28(%rsp) 0.00 : baada: 48 89 7c 24 18 mov %rdi,0x18(%rsp) 0.00 : baadf: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : baae4: 48 89 54 24 08 mov %rdx,0x8(%rsp) 0.00 : baae9: 83 7c 24 34 04 cmpl $0x4,0x34(%rsp) 0.00 : baaee: 77 15 ja bab05 0.00 : baaf0: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : baaf5: 48 8d 15 14 d5 07 00 lea 0x7d514(%rip),%rdx # 138010 <__mon_yday+0x11f0> 0.00 : baafc: 48 63 04 8a movslq (%rdx,%rcx,4),%rax 0.00 : bab00: 48 01 d0 add %rdx,%rax 0.00 : bab03: ff e0 jmpq *%rax 0.00 : bab05: 8b b4 24 cc 01 00 00 mov 0x1cc(%rsp),%esi 0.00 : bab0c: 89 f0 mov %esi,%eax 0.00 : bab0e: 2b 84 24 f8 00 00 00 sub 0xf8(%rsp),%eax 0.00 : bab15: 3b 84 24 00 01 00 00 cmp 0x100(%rsp),%eax 0.00 : bab1c: 0f 83 97 0d 00 00 jae bb8b9 0.00 : bab22: 31 d2 xor %edx,%edx 0.00 : bab24: 39 74 24 44 cmp %esi,0x44(%rsp) 0.00 : bab28: 7e 0e jle bab38 0.00 : bab2a: 89 c2 mov %eax,%edx 0.00 : bab2c: 48 8b 84 24 d8 00 00 mov 0xd8(%rsp),%rax 0.00 : bab33: 00 0.00 : bab34: 0f b6 14 10 movzbl (%rax,%rdx,1),%edx 0.00 : bab38: 48 8b 84 24 80 00 00 mov 0x80(%rsp),%rax 0.00 : bab3f: 00 0.00 : bab40: 80 3c 10 00 cmpb $0x0,(%rax,%rdx,1) 0.00 : bab44: 0f 85 9b 00 00 00 jne babe5 0.00 : bab4a: 8b 44 24 70 mov 0x70(%rsp),%eax 0.00 : bab4e: 01 f0 add %esi,%eax 0.00 : bab50: 39 44 24 68 cmp %eax,0x68(%rsp) 0.00 : bab54: 89 84 24 cc 01 00 00 mov %eax,0x1cc(%rsp) 0.00 : bab5b: 0f 8f 73 fe ff ff jg ba9d4 0.00 : bab61: 39 44 24 6c cmp %eax,0x6c(%rsp) 0.00 : bab65: 0f 8c 69 fe ff ff jl ba9d4 0.00 : bab6b: eb 98 jmp bab05 0.00 : bab6d: 8b 94 24 cc 01 00 00 mov 0x1cc(%rsp),%edx 0.00 : bab74: 39 54 24 6c cmp %edx,0x6c(%rsp) 0.00 : bab78: 7e 53 jle babcd 0.00 : bab7a: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : bab7f: 48 63 c2 movslq %edx,%rax 0.00 : bab82: 48 8b bc 24 80 00 00 mov 0x80(%rsp),%rdi 0.00 : bab89: 00 0.00 : bab8a: 0f b6 04 03 movzbl (%rbx,%rax,1),%eax 0.00 : bab8e: 80 3c 07 00 cmpb $0x0,(%rdi,%rax,1) 0.00 : bab92: 75 39 jne babcd 0.00 : bab94: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : bab97: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : bab9c: 48 98 cltq 0.00 : bab9e: 48 01 c1 add %rax,%rcx 0.00 : baba1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 14.29 : baba8: 83 c2 01 add $0x1,%edx 0.00 : babab: 39 54 24 6c cmp %edx,0x6c(%rsp) 0.00 : babaf: 89 94 24 cc 01 00 00 mov %edx,0x1cc(%rsp) 0.00 : babb6: 7e 15 jle babcd 0.00 : babb8: 0f b6 01 movzbl (%rcx),%eax 0.00 : babbb: 48 8b 9c 24 80 00 00 mov 0x80(%rsp),%rbx 0.00 : babc2: 00 0.00 : babc3: 48 83 c1 01 add $0x1,%rcx 0.00 : babc7: 80 3c 03 00 cmpb $0x0,(%rbx,%rax,1) 0.00 : babcb: 74 db je baba8 0.00 : babcd: 8b 7c 24 6c mov 0x6c(%rsp),%edi 0.00 : babd1: 3b bc 24 cc 01 00 00 cmp 0x1cc(%rsp),%edi 0.00 : babd8: 0f 84 89 0f 00 00 je bbb67 0.00 : babde: 8b b4 24 cc 01 00 00 mov 0x1cc(%rsp),%esi 0.00 : babe5: 8b 94 24 20 02 00 00 mov 0x220(%rsp),%edx 0.00 : babec: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : babf1: e8 ea a4 ff ff callq b50e0 0.00 : babf6: 85 c0 test %eax,%eax 0.00 : babf8: 0f 85 62 0f 00 00 jne bbb60 14.29 : babfe: 8b 5c 24 7c mov 0x7c(%rsp),%ebx 14.29 : bac02: 85 db test %ebx,%ebx 0.00 : bac04: 75 1e jne bac24 0.00 : bac06: 44 8b 9c 24 fc 00 00 mov 0xfc(%rsp),%r11d 0.00 : bac0d: 00 0.00 : bac0e: 45 85 db test %r11d,%r11d 0.00 : bac11: 74 11 je bac24 0.00 : bac13: 48 8b 84 24 e0 00 00 mov 0xe0(%rsp),%rax 0.00 : bac1a: 00 0.00 : bac1b: 83 38 ff cmpl $0xffffffff,(%rax) 0.00 : bac1e: 0f 84 b6 07 00 00 je bb3da 0.00 : bac24: 44 8b 54 24 40 mov 0x40(%rsp),%r10d 0.00 : bac29: c7 84 24 78 01 00 00 movl $0x0,0x178(%rsp) 0.00 : bac30: 00 00 00 00 0.00 : bac34: c7 84 24 64 01 00 00 movl $0x0,0x164(%rsp) 0.00 : bac3b: 00 00 00 00 0.00 : bac3f: c7 84 24 60 01 00 00 movl $0x0,0x160(%rsp) 0.00 : bac46: 00 00 00 00 0.00 : bac4a: 48 c7 84 24 90 00 00 movq $0x0,0x90(%rsp) 0.00 : bac51: 00 00 00 00 00 0.00 : bac56: c7 84 24 98 00 00 00 movl $0x0,0x98(%rsp) 0.00 : bac5d: 00 00 00 00 0.00 : bac61: 45 85 d2 test %r10d,%r10d 0.00 : bac64: 78 1b js bac81 0.00 : bac66: 48 8d 94 24 cc 01 00 lea 0x1cc(%rsp),%rdx 0.00 : bac6d: 00 0.00 : bac6e: c7 84 24 98 00 00 00 movl $0x1,0x98(%rsp) 0.00 : bac75: 01 00 00 00 0.00 : bac79: 48 89 94 24 90 00 00 mov %rdx,0x90(%rsp) 0.00 : bac80: 00 0.00 : bac81: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : bac88: 00 0.00 : bac89: 44 8b 84 24 08 01 00 mov 0x108(%rsp),%r8d 0.00 : bac90: 00 0.00 : bac91: c7 84 24 c8 01 00 00 movl $0x0,0x1c8(%rsp) 0.00 : bac98: 00 00 00 00 0.00 : bac9c: 44 89 84 24 c4 00 00 mov %r8d,0xc4(%rsp) 0.00 : baca3: 00 0.00 : baca4: 4c 8b 7b 48 mov 0x48(%rbx),%r15 0.00 : baca8: 41 80 7f 50 00 cmpb $0x0,0x50(%r15) 0.00 : bacad: 0f 88 75 09 00 00 js bb628 0.00 : bacb3: 4d 85 ff test %r15,%r15 0.00 : bacb6: 0f 84 77 0e 00 00 je bbb33 0.00 : bacbc: 48 8b 94 24 58 01 00 mov 0x158(%rsp),%rdx 0.00 : bacc3: 00 0.00 : bacc4: 48 85 d2 test %rdx,%rdx 0.00 : bacc7: 74 17 je bace0 0.00 : bacc9: 49 63 c0 movslq %r8d,%rax 0.00 : baccc: 4c 89 3c c2 mov %r15,(%rdx,%rax,8) 0.00 : bacd0: 44 8b 8b 8c 00 00 00 mov 0x8c(%rbx),%r9d 0.00 : bacd7: 45 85 c9 test %r9d,%r9d 0.00 : bacda: 0f 85 bf 0d 00 00 jne bba9f 0.00 : bace0: 41 0f b6 47 50 movzbl 0x50(%r15),%eax 0.00 : bace5: a8 10 test $0x10,%al 0.00 : bace7: 0f 85 8f 0d 00 00 jne bba7c 0.00 : baced: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : bacf2: c7 84 24 9c 00 00 00 movl $0x0,0x9c(%rsp) 0.00 : bacf9: 00 00 00 00 0.00 : bacfd: 44 89 84 24 cc 00 00 mov %r8d,0xcc(%rsp) 0.00 : bad04: 00 0.00 : bad05: 44 8b 84 24 08 01 00 mov 0x108(%rsp),%r8d 0.00 : bad0c: 00 0.00 : bad0d: 44 39 84 24 18 01 00 cmp %r8d,0x118(%rsp) 0.00 : bad14: 00 0.00 : bad15: 89 94 24 c4 00 00 00 mov %edx,0xc4(%rsp) 0.00 : bad1c: 0f 8e 39 01 00 00 jle bae5b 0.00 : bad22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bad28: 41 8d 48 01 lea 0x1(%r8),%ecx 0.00 : bad2c: 3b 8c 24 04 01 00 00 cmp 0x104(%rsp),%ecx 0.00 : bad33: 89 8c 24 c8 00 00 00 mov %ecx,0xc8(%rsp) 0.00 : bad3a: 0f 8d d2 06 00 00 jge bb412 0.00 : bad40: 8b 84 24 fc 00 00 00 mov 0xfc(%rsp),%eax 0.00 : bad47: 39 c1 cmp %eax,%ecx 0.00 : bad49: 0f 8d b6 06 00 00 jge bb405 0.00 : bad4f: 41 f6 47 50 20 testb $0x20,0x50(%r15) 0.00 : bad54: 0f 85 96 03 00 00 jne bb0f0 0.00 : bad5a: 48 8b 94 24 d8 00 00 mov 0xd8(%rsp),%rdx 0.00 : bad61: 00 0.00 : bad62: 49 63 c0 movslq %r8d,%rax 0.00 : bad65: 0f b6 2c 02 movzbl (%rdx,%rax,1),%ebp 0.00 : bad69: 41 8d 40 01 lea 0x1(%r8),%eax 14.29 : bad6d: 89 84 24 08 01 00 00 mov %eax,0x108(%rsp) 0.00 : bad74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bad78: 49 8b 57 40 mov 0x40(%r15),%rdx 0.00 : bad7c: 48 85 d2 test %rdx,%rdx 0.00 : bad7f: 0f 85 db 05 00 00 jne bb360 0.00 : bad85: 49 8b 5f 48 mov 0x48(%r15),%rbx 0.00 : bad89: 48 85 db test %rbx,%rbx 0.00 : bad8c: 0f 85 de 05 00 00 jne bb370 0.00 : bad92: 48 8b bc 24 40 01 00 mov 0x140(%rsp),%rdi 0.00 : bad99: 00 0.00 : bad9a: 4c 89 fe mov %r15,%rsi 0.00 : bad9d: e8 1e e1 ff ff callq b8ec0 0.00 : bada2: 85 c0 test %eax,%eax 0.00 : bada4: 75 d2 jne bad78 0.00 : bada6: c7 84 24 c8 01 00 00 movl $0xc,0x1c8(%rsp) 0.00 : badad: 0c 00 00 00 0.00 : badb1: 31 db xor %ebx,%ebx 0.00 : badb3: 48 83 bc 24 58 01 00 cmpq $0x0,0x158(%rsp) 0.00 : badba: 00 00 0.00 : badbc: 74 15 je badd3 0.00 : badbe: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : badc3: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : badc8: 48 89 da mov %rbx,%rdx 0.00 : badcb: e8 80 d3 ff ff callq b8150 14.29 : badd0: 48 89 c3 mov %rax,%rbx 0.00 : badd3: 48 85 db test %rbx,%rbx 0.00 : badd6: 0f 84 7c 08 00 00 je bb658 0.00 : baddc: 8b 84 24 98 00 00 00 mov 0x98(%rsp),%eax 0.00 : bade3: 85 c0 test %eax,%eax 0.00 : bade5: 0f 85 12 08 00 00 jne bb5fd 0.00 : badeb: 8b bc 24 cc 00 00 00 mov 0xcc(%rsp),%edi 0.00 : badf2: 89 bc 24 c8 00 00 00 mov %edi,0xc8(%rsp) 0.00 : badf9: 0f b6 43 50 movzbl 0x50(%rbx),%eax 0.00 : badfd: a8 10 test $0x10,%al 0.00 : badff: 0f 84 db 02 00 00 je bb0e0 0.00 : bae05: 84 c0 test %al,%al 0.00 : bae07: 0f 88 b3 02 00 00 js bb0c0 0.00 : bae0d: 8b 44 24 74 mov 0x74(%rsp),%eax 0.00 : bae11: 44 8b 84 24 08 01 00 mov 0x108(%rsp),%r8d 0.00 : bae18: 00 0.00 : bae19: 85 c0 test %eax,%eax 0.00 : bae1b: 44 89 84 24 c4 00 00 mov %r8d,0xc4(%rsp) 0.00 : bae22: 00 0.00 : bae23: 74 52 je bae77 0.00 : bae25: c7 84 24 9c 00 00 00 movl $0x1,0x9c(%rsp) 0.00 : bae2c: 01 00 00 00 0.00 : bae30: 48 c7 84 24 90 00 00 movq $0x0,0x90(%rsp) 0.00 : bae37: 00 00 00 00 00 0.00 : bae3c: 44 39 84 24 18 01 00 cmp %r8d,0x118(%rsp) 0.00 : bae43: 00 0.00 : bae44: 8b 94 24 c8 00 00 00 mov 0xc8(%rsp),%edx 0.00 : bae4b: 49 89 df mov %rbx,%r15 0.00 : bae4e: 89 94 24 cc 00 00 00 mov %edx,0xcc(%rsp) 0.00 : bae55: 0f 8f cd fe ff ff jg bad28 0.00 : bae5b: 48 83 bc 24 90 00 00 cmpq $0x0,0x90(%rsp) 0.00 : bae62: 00 00 0.00 : bae64: 74 11 je bae77 0.00 : bae66: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : bae6d: 00 0.00 : bae6e: 8b 9c 24 cc 00 00 00 mov 0xcc(%rsp),%ebx 0.00 : bae75: 01 19 add %ebx,(%rcx) 0.00 : bae77: 83 bc 24 c4 00 00 00 cmpl $0xffffffff,0xc4(%rsp) 0.00 : bae7e: ff 0.00 : bae7f: 0f 84 4b 05 00 00 je bb3d0 0.00 : bae85: 83 bc 24 c4 00 00 00 cmpl $0xfffffffe,0xc4(%rsp) 0.00 : bae8c: fe 0.00 : bae8d: 0f 84 00 fc ff ff je baa93 0.00 : bae93: 48 83 bc 24 b8 00 00 cmpq $0x1,0xb8(%rsp) 0.00 : bae9a: 00 01 0.00 : bae9c: 8b bc 24 c4 00 00 00 mov 0xc4(%rsp),%edi 0.00 : baea3: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : baea8: 89 bc 24 4c 01 00 00 mov %edi,0x14c(%rsp) 0.00 : baeaf: 0f 97 44 24 5f seta 0x5f(%rsp) 0.00 : baeb4: f6 40 38 10 testb $0x10,0x38(%rax) 0.00 : baeb8: 75 0b jne baec5 0.00 : baeba: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : baebf: 0f 85 7d 05 00 00 jne bb442 0.00 : baec5: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : baeca: 8b 82 8c 00 00 00 mov 0x8c(%rdx),%eax 0.00 : baed0: 85 c0 test %eax,%eax 0.00 : baed2: 0f 85 6a 05 00 00 jne bb442 0.00 : baed8: 48 83 bc 24 b8 00 00 cmpq $0x0,0xb8(%rsp) 0.00 : baedf: 00 00 0.00 : baee1: 0f 84 54 09 00 00 je bb83b 0.00 : baee7: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : baeec: 0f 84 1d 0a 00 00 je bb90f 0.00 : baef2: b8 01 00 00 00 mov $0x1,%eax 0.00 : baef7: ba 02 00 00 00 mov $0x2,%edx 0.00 : baefc: eb 08 jmp baf06 0.00 : baefe: 66 90 xchg %ax,%ax 0.00 : baf00: 48 89 d0 mov %rdx,%rax 0.00 : baf03: 48 89 ca mov %rcx,%rdx 0.00 : baf06: 48 8b 8c 24 18 02 00 mov 0x218(%rsp),%rcx 0.00 : baf0d: 00 0.00 : baf0e: 48 8d 04 c1 lea (%rcx,%rax,8),%rax 0.00 : baf12: 48 8d 4a 01 lea 0x1(%rdx),%rcx 0.00 : baf16: c7 40 04 ff ff ff ff movl $0xffffffff,0x4(%rax) 0.00 : baf1d: c7 00 ff ff ff ff movl $0xffffffff,(%rax) 0.00 : baf23: 48 39 94 24 b8 00 00 cmp %rdx,0xb8(%rsp) 0.00 : baf2a: 00 0.00 : baf2b: 77 d3 ja baf00 0.00 : baf2d: 48 8b 9c 24 18 02 00 mov 0x218(%rsp),%rbx 0.00 : baf34: 00 0.00 : baf35: c7 03 00 00 00 00 movl $0x0,(%rbx) 0.00 : baf3b: 8b 84 24 4c 01 00 00 mov 0x14c(%rsp),%eax 0.00 : baf42: 89 43 04 mov %eax,0x4(%rbx) 0.00 : baf45: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : baf4a: f6 47 38 10 testb $0x10,0x38(%rdi) 0.00 : baf4e: 0f 85 db 09 00 00 jne bb92f 0.00 : baf54: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : baf59: 31 c0 xor %eax,%eax 0.00 : baf5b: f6 82 a0 00 00 00 01 testb $0x1,0xa0(%rdx) 0.00 : baf62: 74 11 je baf75 0.00 : baf64: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : baf69: 31 c0 xor %eax,%eax 0.00 : baf6b: 83 b9 8c 00 00 00 00 cmpl $0x0,0x8c(%rcx) 0.00 : baf72: 0f 9f c0 setg %al 0.00 : baf75: 48 8b 8c 24 18 02 00 mov 0x218(%rsp),%rcx 0.00 : baf7c: 00 0.00 : baf7d: 48 8b 94 24 b8 00 00 mov 0xb8(%rsp),%rdx 0.00 : baf84: 00 0.00 : baf85: 41 89 c0 mov %eax,%r8d 0.00 : baf88: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : baf8d: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : baf92: e8 99 ed ff ff callq b9d30 0.00 : baf97: 85 c0 test %eax,%eax 0.00 : baf99: 89 c3 mov %eax,%ebx 0.00 : baf9b: 0f 84 8e 09 00 00 je bb92f 0.00 : bafa1: e9 33 fa ff ff jmpq ba9d9 0.00 : bafa6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : bafad: 00 00 00 0.00 : bafb0: 8b 94 24 cc 01 00 00 mov 0x1cc(%rsp),%edx 0.00 : bafb7: 39 54 24 6c cmp %edx,0x6c(%rsp) 0.00 : bafbb: 0f 8e 0c fc ff ff jle babcd 0.00 : bafc1: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : bafc6: 48 63 c2 movslq %edx,%rax 0.00 : bafc9: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bafd0: 00 0.00 : bafd1: 48 8b 8c 24 80 00 00 mov 0x80(%rsp),%rcx 0.00 : bafd8: 00 0.00 : bafd9: 0f b6 04 03 movzbl (%rbx,%rax,1),%eax 0.00 : bafdd: 0f b6 04 07 movzbl (%rdi,%rax,1),%eax 0.00 : bafe1: 80 3c 01 00 cmpb $0x0,(%rcx,%rax,1) 0.00 : bafe5: 0f 85 e2 fb ff ff jne babcd 0.00 : bafeb: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : bafee: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : baff3: 48 98 cltq 0.00 : baff5: 48 01 c1 add %rax,%rcx 0.00 : baff8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bafff: 00 0.00 : bb000: 83 c2 01 add $0x1,%edx 0.00 : bb003: 39 54 24 6c cmp %edx,0x6c(%rsp) 0.00 : bb007: 89 94 24 cc 01 00 00 mov %edx,0x1cc(%rsp) 0.00 : bb00e: 0f 8e b9 fb ff ff jle babcd 0.00 : bb014: 0f b6 01 movzbl (%rcx),%eax 0.00 : bb017: 48 8b 9c 24 88 00 00 mov 0x88(%rsp),%rbx 0.00 : bb01e: 00 0.00 : bb01f: 48 83 c1 01 add $0x1,%rcx 0.00 : bb023: 48 8b bc 24 80 00 00 mov 0x80(%rsp),%rdi 0.00 : bb02a: 00 0.00 : bb02b: 0f b6 04 03 movzbl (%rbx,%rax,1),%eax 0.00 : bb02f: 80 3c 07 00 cmpb $0x0,(%rdi,%rax,1) 0.00 : bb033: 74 cb je bb000 0.00 : bb035: 8b 7c 24 6c mov 0x6c(%rsp),%edi 0.00 : bb039: 3b bc 24 cc 01 00 00 cmp 0x1cc(%rsp),%edi 0.00 : bb040: 0f 85 98 fb ff ff jne babde 0.00 : bb046: e9 1c 0b 00 00 jmpq bbb67 0.00 : bb04b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bb050: 8b 94 24 cc 01 00 00 mov 0x1cc(%rsp),%edx 0.00 : bb057: 3b 54 24 68 cmp 0x68(%rsp),%edx 0.00 : bb05b: 0f 8c 73 f9 ff ff jl ba9d4 0.00 : bb061: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : bb066: 48 63 c2 movslq %edx,%rax 0.00 : bb069: 48 01 c1 add %rax,%rcx 0.00 : bb06c: eb 1a jmp bb088 0.00 : bb06e: 66 90 xchg %ax,%ax 0.00 : bb070: 83 ea 01 sub $0x1,%edx 0.00 : bb073: 48 83 e9 01 sub $0x1,%rcx 0.00 : bb077: 3b 54 24 68 cmp 0x68(%rsp),%edx 0.00 : bb07b: 89 94 24 cc 01 00 00 mov %edx,0x1cc(%rsp) 0.00 : bb082: 0f 8c 4c f9 ff ff jl ba9d4 0.00 : bb088: 31 c0 xor %eax,%eax 0.00 : bb08a: 39 54 24 44 cmp %edx,0x44(%rsp) 0.00 : bb08e: 7e 03 jle bb093 0.00 : bb090: 0f b6 01 movzbl (%rcx),%eax 0.00 : bb093: 48 83 bc 24 88 00 00 cmpq $0x0,0x88(%rsp) 0.00 : bb09a: 00 00 0.00 : bb09c: 74 0c je bb0aa 0.00 : bb09e: 48 8b 9c 24 88 00 00 mov 0x88(%rsp),%rbx 0.00 : bb0a5: 00 0.00 : bb0a6: 0f b6 04 03 movzbl (%rbx,%rax,1),%eax 0.00 : bb0aa: 48 8b bc 24 80 00 00 mov 0x80(%rsp),%rdi 0.00 : bb0b1: 00 0.00 : bb0b2: 80 3c 07 00 cmpb $0x0,(%rdi,%rax,1) 0.00 : bb0b6: 74 b8 je bb070 0.00 : bb0b8: e9 21 fb ff ff jmpq babde 0.00 : bb0bd: 0f 1f 00 nopl (%rax) 0.00 : bb0c0: 8b 94 24 08 01 00 00 mov 0x108(%rsp),%edx 0.00 : bb0c7: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb0cc: 48 89 de mov %rbx,%rsi 0.00 : bb0cf: e8 3c 8f ff ff callq b4010 0.00 : bb0d4: 85 c0 test %eax,%eax 0.00 : bb0d6: 0f 85 31 fd ff ff jne bae0d 0.00 : bb0dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bb0e0: 44 8b 84 24 08 01 00 mov 0x108(%rsp),%r8d 0.00 : bb0e7: 00 0.00 : bb0e8: e9 4f fd ff ff jmpq bae3c 0.00 : bb0ed: 0f 1f 00 nopl (%rax) 0.00 : bb0f0: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : bb0f7: 00 0.00 : bb0f8: 48 89 9c 24 a0 00 00 mov %rbx,0xa0(%rsp) 0.00 : bb0ff: 00 0.00 : bb100: 41 8b 77 0c mov 0xc(%r15),%esi 0.00 : bb104: 85 f6 test %esi,%esi 0.00 : bb106: 0f 8e 3c 02 00 00 jle bb348 0.00 : bb10c: 45 31 ed xor %r13d,%r13d 0.00 : bb10f: 45 31 e4 xor %r12d,%r12d 0.00 : bb112: eb 1e jmp bb132 0.00 : bb114: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bb118: 44 8b 84 24 08 01 00 mov 0x108(%rsp),%r8d 0.00 : bb11f: 00 0.00 : bb120: 41 83 c5 01 add $0x1,%r13d 0.00 : bb124: 49 83 c4 04 add $0x4,%r12 0.00 : bb128: 45 3b 6f 0c cmp 0xc(%r15),%r13d 0.00 : bb12c: 0f 8d 16 02 00 00 jge bb348 0.00 : bb132: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : bb136: 48 8b bc 24 a0 00 00 mov 0xa0(%rsp),%rdi 0.00 : bb13d: 00 0.00 : bb13e: 42 8b 2c 20 mov (%rax,%r12,1),%ebp 0.00 : bb142: 4c 63 f5 movslq %ebp,%r14 0.00 : bb145: 4c 89 f0 mov %r14,%rax 14.29 : bb148: 48 c1 e0 04 shl $0x4,%rax 0.00 : bb14c: 48 03 07 add (%rdi),%rax 0.00 : bb14f: f6 40 0a 10 testb $0x10,0xa(%rax) 14.29 : bb153: 74 cb je bb120 0.00 : bb155: 8b 58 08 mov 0x8(%rax),%ebx 0.00 : bb158: f7 c3 00 ff 03 00 test $0x3ff00,%ebx 0.00 : bb15e: 74 60 je bb1c0 0.00 : bb160: 8b 94 24 48 01 00 00 mov 0x148(%rsp),%edx 0.00 : bb167: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb16c: 44 89 c6 mov %r8d,%esi 0.00 : bb16f: 44 89 04 24 mov %r8d,(%rsp) 0.00 : bb173: e8 88 8c ff ff callq b3e00 0.00 : bb178: 89 da mov %ebx,%edx 0.00 : bb17a: 44 8b 04 24 mov (%rsp),%r8d 0.00 : bb17e: c1 ea 08 shr $0x8,%edx 0.00 : bb181: 81 e2 ff 03 00 00 and $0x3ff,%edx 0.00 : bb187: f6 c2 04 test $0x4,%dl 0.00 : bb18a: 74 04 je bb190 0.00 : bb18c: a8 01 test $0x1,%al 0.00 : bb18e: 74 90 je bb120 0.00 : bb190: f6 c2 08 test $0x8,%dl 0.00 : bb193: 74 04 je bb199 0.00 : bb195: a8 01 test $0x1,%al 0.00 : bb197: 75 87 jne bb120 0.00 : bb199: f6 c2 20 test $0x20,%dl 0.00 : bb19c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bb1a0: 74 08 je bb1aa 0.00 : bb1a2: a8 02 test $0x2,%al 0.00 : bb1a4: 0f 84 76 ff ff ff je bb120 0.00 : bb1aa: 84 d2 test %dl,%dl 0.00 : bb1ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bb1b0: 79 0e jns bb1c0 0.00 : bb1b2: a8 08 test $0x8,%al 0.00 : bb1b4: 0f 84 66 ff ff ff je bb120 0.00 : bb1ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bb1c0: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : bb1c5: 48 8b bc 24 a0 00 00 mov 0xa0(%rsp),%rdi 0.00 : bb1cc: 00 0.00 : bb1cd: 44 89 c1 mov %r8d,%ecx 0.00 : bb1d0: 89 ee mov %ebp,%esi 0.00 : bb1d2: e8 59 b2 ff ff callq b6430 0.00 : bb1d7: 85 c0 test %eax,%eax 0.00 : bb1d9: 89 c2 mov %eax,%edx 0.00 : bb1db: 0f 84 37 ff ff ff je bb118 0.00 : bb1e1: 89 c3 mov %eax,%ebx 0.00 : bb1e3: 8b 84 24 78 01 00 00 mov 0x178(%rsp),%eax 0.00 : bb1ea: 03 9c 24 08 01 00 00 add 0x108(%rsp),%ebx 0.00 : bb1f1: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb1f6: 39 c2 cmp %eax,%edx 0.00 : bb1f8: 0f 4d c2 cmovge %edx,%eax 0.00 : bb1fb: 89 de mov %ebx,%esi 0.00 : bb1fd: 89 84 24 78 01 00 00 mov %eax,0x178(%rsp) 0.00 : bb204: e8 37 a7 ff ff callq b5940 0.00 : bb209: 85 c0 test %eax,%eax 0.00 : bb20b: 89 84 24 c4 01 00 00 mov %eax,0x1c4(%rsp) 0.00 : bb212: 0f 85 c1 00 00 00 jne bb2d9 0.00 : bb218: 48 8b 94 24 a0 00 00 mov 0xa0(%rsp),%rdx 0.00 : bb21f: 00 0.00 : bb220: 48 8b 8c 24 a0 00 00 mov 0xa0(%rsp),%rcx 0.00 : bb227: 00 0.00 : bb228: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : bb22c: 4a 63 14 b0 movslq (%rax,%r14,4),%rdx 0.00 : bb230: 48 8b 84 24 58 01 00 mov 0x158(%rsp),%rax 0.00 : bb237: 00 0.00 : bb238: 4c 63 f3 movslq %ebx,%r14 0.00 : bb23b: 4a 8d 2c f5 00 00 00 lea 0x0(,%r14,8),%rbp 0.00 : bb242: 00 0.00 : bb243: 4a 8b 04 f0 mov (%rax,%r14,8),%rax 0.00 : bb247: 48 c1 e2 04 shl $0x4,%rdx 0.00 : bb24b: 48 03 51 30 add 0x30(%rcx),%rdx 0.00 : bb24f: 48 85 c0 test %rax,%rax 0.00 : bb252: 0f 84 98 00 00 00 je bb2f0 0.00 : bb258: 48 8b 70 38 mov 0x38(%rax),%rsi 0.00 : bb25c: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : bb261: e8 1a 7d ff ff callq b2f80 0.00 : bb266: 85 c0 test %eax,%eax 0.00 : bb268: 89 84 24 c4 01 00 00 mov %eax,0x1c4(%rsp) 0.00 : bb26f: 75 68 jne bb2d9 0.00 : bb271: 8b 94 24 48 01 00 00 mov 0x148(%rsp),%edx 0.00 : bb278: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb27d: 8d 73 ff lea -0x1(%rbx),%esi 0.00 : bb280: e8 7b 8b ff ff callq b3e00 0.00 : bb285: 48 03 ac 24 58 01 00 add 0x158(%rsp),%rbp 0.00 : bb28c: 00 0.00 : bb28d: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bb292: 89 c1 mov %eax,%ecx 0.00 : bb294: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : bb299: 48 8b b4 24 a0 00 00 mov 0xa0(%rsp),%rsi 0.00 : bb2a0: 00 0.00 : bb2a1: e8 2a a7 ff ff callq b59d0 0.00 : bb2a6: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : bb2aa: 48 8b bc 24 98 01 00 mov 0x198(%rsp),%rdi 0.00 : bb2b1: 00 0.00 : bb2b2: e8 e9 35 f6 ff callq 1e8a0 0.00 : bb2b7: 48 8b 84 24 58 01 00 mov 0x158(%rsp),%rax 0.00 : bb2be: 00 0.00 : bb2bf: 4a 83 3c f0 00 cmpq $0x0,(%rax,%r14,8) 0.00 : bb2c4: 0f 85 4e fe ff ff jne bb118 0.00 : bb2ca: 8b 84 24 c4 01 00 00 mov 0x1c4(%rsp),%eax 0.00 : bb2d1: 85 c0 test %eax,%eax 0.00 : bb2d3: 0f 84 3f fe ff ff je bb118 0.00 : bb2d9: 89 84 24 c8 01 00 00 mov %eax,0x1c8(%rsp) 0.00 : bb2e0: 31 db xor %ebx,%ebx 0.00 : bb2e2: e9 cc fa ff ff jmpq badb3 0.00 : bb2e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bb2ee: 00 00 0.00 : bb2f0: 48 8b 02 mov (%rdx),%rax 0.00 : bb2f3: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb2f8: 8d 73 ff lea -0x1(%rbx),%esi 0.00 : bb2fb: 48 89 84 24 90 01 00 mov %rax,0x190(%rsp) 0.00 : bb302: 00 0.00 : bb303: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : bb307: 8b 94 24 48 01 00 00 mov 0x148(%rsp),%edx 0.00 : bb30e: 48 89 84 24 98 01 00 mov %rax,0x198(%rsp) 0.00 : bb315: 00 0.00 : bb316: e8 e5 8a ff ff callq b3e00 0.00 : bb31b: 48 03 ac 24 58 01 00 add 0x158(%rsp),%rbp 0.00 : bb322: 00 0.00 : bb323: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : bb328: 89 c1 mov %eax,%ecx 0.00 : bb32a: 48 8b b4 24 a0 00 00 mov 0xa0(%rsp),%rsi 0.00 : bb331: 00 0.00 : bb332: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bb337: e8 94 a6 ff ff callq b59d0 0.00 : bb33c: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : bb340: e9 72 ff ff ff jmpq bb2b7 0.00 : bb345: 0f 1f 00 nopl (%rax) 0.00 : bb348: c7 84 24 c8 01 00 00 movl $0x0,0x1c8(%rsp) 0.00 : bb34f: 00 00 00 00 0.00 : bb353: e9 02 fa ff ff jmpq bad5a 0.00 : bb358: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bb35f: 00 0.00 : bb360: 40 0f b6 c5 movzbl %bpl,%eax 0.00 : bb364: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : bb368: e9 46 fa ff ff jmpq badb3 0.00 : bb36d: 0f 1f 00 nopl (%rax) 0.00 : bb370: 44 8b 84 24 08 01 00 mov 0x108(%rsp),%r8d 0.00 : bb377: 00 0.00 : bb378: 8b 94 24 48 01 00 00 mov 0x148(%rsp),%edx 0.00 : bb37f: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb384: 41 8d 70 ff lea -0x1(%r8),%esi 0.00 : bb388: e8 73 8a ff ff callq b3e00 0.00 : bb38d: a8 01 test $0x1,%al 0.00 : bb38f: 74 11 je bb3a2 0.00 : bb391: 40 0f b6 c5 movzbl %bpl,%eax 0.00 : bb395: 48 8b 9c c3 00 08 00 mov 0x800(%rbx,%rax,8),%rbx 0.00 : bb39c: 00 0.00 : bb39d: e9 11 fa ff ff jmpq badb3 0.00 : bb3a2: 40 0f b6 c5 movzbl %bpl,%eax 0.00 : bb3a6: 48 8b 1c c3 mov (%rbx,%rax,8),%rbx 0.00 : bb3aa: e9 04 fa ff ff jmpq badb3 0.00 : bb3af: 45 31 e4 xor %r12d,%r12d 0.00 : bb3b2: bb 01 00 00 00 mov $0x1,%ebx 0.00 : bb3b7: 4c 89 f7 mov %r14,%rdi 0.00 : bb3ba: e8 e1 34 f6 ff callq 1e8a0 0.00 : bb3bf: 4c 89 e7 mov %r12,%rdi 0.00 : bb3c2: e8 d9 34 f6 ff callq 1e8a0 0.00 : bb3c7: 83 fb 01 cmp $0x1,%ebx 0.00 : bb3ca: 0f 85 09 f6 ff ff jne ba9d9 0.00 : bb3d0: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb3d5: e8 66 6a ff ff callq b1e40 0.00 : bb3da: 8b 44 24 70 mov 0x70(%rsp),%eax 0.00 : bb3de: 03 84 24 cc 01 00 00 add 0x1cc(%rsp),%eax 0.00 : bb3e5: 3b 44 24 68 cmp 0x68(%rsp),%eax 0.00 : bb3e9: 89 84 24 cc 01 00 00 mov %eax,0x1cc(%rsp) 0.00 : bb3f0: 0f 8c de f5 ff ff jl ba9d4 0.00 : bb3f6: 39 44 24 6c cmp %eax,0x6c(%rsp) 0.00 : bb3fa: 0f 8c d4 f5 ff ff jl ba9d4 0.00 : bb400: e9 e4 f6 ff ff jmpq baae9 0.00 : bb405: 3b 84 24 10 01 00 00 cmp 0x110(%rsp),%eax 0.00 : bb40c: 0f 8d 3d f9 ff ff jge bad4f 0.00 : bb412: 8b b4 24 c8 00 00 00 mov 0xc8(%rsp),%esi 0.00 : bb419: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb41e: 83 c6 01 add $0x1,%esi 0.00 : bb421: e8 1a a4 ff ff callq b5840 0.00 : bb426: 85 c0 test %eax,%eax 0.00 : bb428: 89 84 24 c8 01 00 00 mov %eax,0x1c8(%rsp) 0.00 : bb42f: 0f 85 b2 04 00 00 jne bb8e7 0.00 : bb435: 44 8b 84 24 08 01 00 mov 0x108(%rsp),%r8d 0.00 : bb43c: 00 0.00 : bb43d: e9 0d f9 ff ff jmpq bad4f 0.00 : bb442: 48 63 84 24 c4 00 00 movslq 0xc4(%rsp),%rax 0.00 : bb449: 00 0.00 : bb44a: 48 8b 94 24 58 01 00 mov 0x158(%rsp),%rdx 0.00 : bb451: 00 0.00 : bb452: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb457: 48 8b 34 c2 mov (%rdx,%rax,8),%rsi 0.00 : bb45b: 8b 94 24 c4 00 00 00 mov 0xc4(%rsp),%edx 0.00 : bb462: e8 a9 8b ff ff callq b4010 0.00 : bb467: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : bb46c: 89 84 24 ac 00 00 00 mov %eax,0xac(%rsp) 0.00 : bb473: 89 84 24 50 01 00 00 mov %eax,0x150(%rsp) 0.00 : bb47a: 74 0f je bb48b 0.00 : bb47c: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : bb481: f6 41 38 10 testb $0x10,0x38(%rcx) 0.00 : bb485: 0f 84 41 01 00 00 je bb5cc 0.00 : bb48b: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : bb490: 8b 87 8c 00 00 00 mov 0x8c(%rdi),%eax 0.00 : bb496: 85 c0 test %eax,%eax 0.00 : bb498: 0f 84 3a fa ff ff je baed8 0.00 : bb49e: 48 8b 84 24 40 01 00 mov 0x140(%rsp),%rax 0.00 : bb4a5: 00 0.00 : bb4a6: 8b ac 24 4c 01 00 00 mov 0x14c(%rsp),%ebp 0.00 : bb4ad: 45 31 e4 xor %r12d,%r12d 0.00 : bb4b0: bb 0c 00 00 00 mov $0xc,%ebx 0.00 : bb4b5: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) 0.00 : bb4bc: 00 0.00 : bb4bd: 8d 45 01 lea 0x1(%rbp),%eax 0.00 : bb4c0: 48 98 cltq 0.00 : bb4c2: 4c 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%r13 0.00 : bb4c9: 00 0.00 : bb4ca: 4c 89 ef mov %r13,%rdi 0.00 : bb4cd: e8 7e 33 f6 ff callq 1e850 0.00 : bb4d2: 48 85 c0 test %rax,%rax 0.00 : bb4d5: 49 89 c6 mov %rax,%r14 0.00 : bb4d8: 0f 84 d9 fe ff ff je bb3b7 0.00 : bb4de: 48 8b 94 24 b0 00 00 mov 0xb0(%rsp),%rdx 0.00 : bb4e5: 00 0.00 : bb4e6: 44 8b ba 8c 00 00 00 mov 0x8c(%rdx),%r15d 0.00 : bb4ed: 45 85 ff test %r15d,%r15d 0.00 : bb4f0: 0f 84 1f 02 00 00 je bb715 0.00 : bb4f6: 4c 89 ef mov %r13,%rdi 0.00 : bb4f9: bb 0c 00 00 00 mov $0xc,%ebx 0.00 : bb4fe: e8 4d 33 f6 ff callq 1e850 0.00 : bb503: 48 85 c0 test %rax,%rax 0.00 : bb506: 49 89 c4 mov %rax,%r12 0.00 : bb509: 49 89 c5 mov %rax,%r13 0.00 : bb50c: 0f 84 a5 fe ff ff je bb3b7 0.00 : bb512: 44 8d 7d 01 lea 0x1(%rbp),%r15d 0.00 : bb516: 31 f6 xor %esi,%esi 0.00 : bb518: 4c 89 ef mov %r13,%rdi 0.00 : bb51b: 49 63 d7 movslq %r15d,%rdx 0.00 : bb51e: 48 c1 e2 03 shl $0x3,%rdx 0.00 : bb522: e8 49 7f fc ff callq 83470 <__GI_memset> 0.00 : bb527: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 0.00 : bb52c: 8b 8c 24 ac 00 00 00 mov 0xac(%rsp),%ecx 0.00 : bb533: 4c 89 b4 24 90 01 00 mov %r14,0x190(%rsp) 0.00 : bb53a: 00 0.00 : bb53b: 4c 89 ac 24 98 01 00 mov %r13,0x198(%rsp) 0.00 : bb542: 00 0.00 : bb543: 89 ac 24 a4 01 00 00 mov %ebp,0x1a4(%rsp) 0.00 : bb54a: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 0.00 : bb551: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : bb558: 00 0.00 : bb559: 48 8b 74 24 20 mov 0x20(%rsp),%rsi 0.00 : bb55e: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb563: 89 8c 24 a0 01 00 00 mov %ecx,0x1a0(%rsp) 0.00 : bb56a: e8 b1 cd ff ff callq b8320 0.00 : bb56f: 48 8b bc 24 b0 01 00 mov 0x1b0(%rsp),%rdi 0.00 : bb576: 00 0.00 : bb577: 89 c3 mov %eax,%ebx 0.00 : bb579: e8 22 33 f6 ff callq 1e8a0 0.00 : bb57e: 85 db test %ebx,%ebx 0.00 : bb580: 0f 85 31 fe ff ff jne bb3b7 0.00 : bb586: 49 83 3e 00 cmpq $0x0,(%r14) 0.00 : bb58a: 0f 85 b2 02 00 00 jne bb842 0.00 : bb590: 49 83 7d 00 00 cmpq $0x0,0x0(%r13) 0.00 : bb595: 0f 85 a7 02 00 00 jne bb842 0.00 : bb59b: 8d 45 ff lea -0x1(%rbp),%eax 0.00 : bb59e: 48 98 cltq 0.00 : bb5a0: 48 c1 e0 03 shl $0x3,%rax 0.00 : bb5a4: 48 03 84 24 58 01 00 add 0x158(%rsp),%rax 0.00 : bb5ab: 00 0.00 : bb5ac: eb 14 jmp bb5c2 0.00 : bb5ae: 66 90 xchg %ax,%ax 0.00 : bb5b0: 48 8b 30 mov (%rax),%rsi 0.00 : bb5b3: 48 85 f6 test %rsi,%rsi 0.00 : bb5b6: 74 06 je bb5be 0.00 : bb5b8: f6 46 50 10 testb $0x10,0x50(%rsi) 0.00 : bb5bc: 75 27 jne bb5e5 0.00 : bb5be: 48 83 e8 08 sub $0x8,%rax 0.00 : bb5c2: 83 ed 01 sub $0x1,%ebp 0.00 : bb5c5: 79 e9 jns bb5b0 0.00 : bb5c7: e9 e6 fd ff ff jmpq bb3b2 0.00 : bb5cc: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : bb5d1: f6 83 a0 00 00 00 01 testb $0x1,0xa0(%rbx) 0.00 : bb5d8: 0f 85 c0 fe ff ff jne bb49e 0.00 : bb5de: 66 90 xchg %ax,%ax 0.00 : bb5e0: e9 a6 fe ff ff jmpq bb48b 0.00 : bb5e5: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb5ea: 89 ea mov %ebp,%edx 0.00 : bb5ec: e8 1f 8a ff ff callq b4010 0.00 : bb5f1: 89 84 24 ac 00 00 00 mov %eax,0xac(%rsp) 0.00 : bb5f8: e9 15 ff ff ff jmpq bb512 0.00 : bb5fd: 49 39 df cmp %rbx,%r15 0.00 : bb600: 8b 84 24 cc 00 00 00 mov 0xcc(%rsp),%eax 0.00 : bb607: 0f 44 84 24 c8 00 00 cmove 0xc8(%rsp),%eax 0.00 : bb60e: 00 0.00 : bb60f: 89 84 24 c8 00 00 00 mov %eax,0xc8(%rsp) 0.00 : bb616: 0f 94 c0 sete %al 0.00 : bb619: 0f b6 c0 movzbl %al,%eax 0.00 : bb61c: 89 84 24 98 00 00 00 mov %eax,0x98(%rsp) 0.00 : bb623: e9 d1 f7 ff ff jmpq badf9 0.00 : bb628: 8b 94 24 48 01 00 00 mov 0x148(%rsp),%edx 0.00 : bb62f: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb634: 41 8d 70 ff lea -0x1(%r8),%esi 0.00 : bb638: 44 89 04 24 mov %r8d,(%rsp) 0.00 : bb63c: e8 bf 87 ff ff callq b3e00 0.00 : bb641: a8 01 test $0x1,%al 0.00 : bb643: 89 c1 mov %eax,%ecx 0.00 : bb645: 44 8b 04 24 mov (%rsp),%r8d 0.00 : bb649: 0f 84 73 01 00 00 je bb7c2 0.00 : bb64f: 4c 8b 7b 50 mov 0x50(%rbx),%r15 0.00 : bb653: e9 5b f6 ff ff jmpq bacb3 0.00 : bb658: 8b 8c 24 c8 01 00 00 mov 0x1c8(%rsp),%ecx 0.00 : bb65f: 85 c9 test %ecx,%ecx 0.00 : bb661: 0f 85 2c f4 ff ff jne baa93 0.00 : bb667: 48 83 bc 24 58 01 00 cmpq $0x0,0x158(%rsp) 0.00 : bb66e: 00 00 0.00 : bb670: 0f 84 e5 f7 ff ff je bae5b 0.00 : bb676: 8b 94 24 9c 00 00 00 mov 0x9c(%rsp),%edx 0.00 : bb67d: 85 d2 test %edx,%edx 0.00 : bb67f: 74 0c je bb68d 0.00 : bb681: 8b 44 24 74 mov 0x74(%rsp),%eax 0.00 : bb685: 85 c0 test %eax,%eax 0.00 : bb687: 0f 84 ce f7 ff ff je bae5b 0.00 : bb68d: 8b 8c 24 08 01 00 00 mov 0x108(%rsp),%ecx 0.00 : bb694: 8b b4 24 60 01 00 00 mov 0x160(%rsp),%esi 0.00 : bb69b: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : bb69e: 48 98 cltq 0.00 : bb6a0: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : bb6a7: 00 0.00 : bb6a8: 83 c1 01 add $0x1,%ecx 0.00 : bb6ab: 39 ce cmp %ecx,%esi 0.00 : bb6ad: 0f 8c a8 f7 ff ff jl bae5b 0.00 : bb6b3: 48 8b 84 24 58 01 00 mov 0x158(%rsp),%rax 0.00 : bb6ba: 00 0.00 : bb6bb: 83 84 24 08 01 00 00 addl $0x1,0x108(%rsp) 0.00 : bb6c2: 01 0.00 : bb6c3: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : bb6c7: 48 83 c2 08 add $0x8,%rdx 0.00 : bb6cb: 48 85 c0 test %rax,%rax 0.00 : bb6ce: 74 d8 je bb6a8 0.00 : bb6d0: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : bb6d5: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : bb6da: 31 d2 xor %edx,%edx 0.00 : bb6dc: e8 6f ca ff ff callq b8150 0.00 : bb6e1: 48 89 c3 mov %rax,%rbx 0.00 : bb6e4: 8b 84 24 c8 01 00 00 mov 0x1c8(%rsp),%eax 0.00 : bb6eb: 85 c0 test %eax,%eax 0.00 : bb6ed: 74 11 je bb700 0.00 : bb6ef: 48 85 db test %rbx,%rbx 0.00 : bb6f2: 0f 85 e4 f6 ff ff jne baddc 0.00 : bb6f8: e9 5e f7 ff ff jmpq bae5b 0.00 : bb6fd: 0f 1f 00 nopl (%rax) 0.00 : bb700: 48 85 db test %rbx,%rbx 0.00 : bb703: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bb708: 75 e5 jne bb6ef 0.00 : bb70a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bb710: e9 78 ff ff ff jmpq bb68d 0.00 : bb715: 8b bc 24 ac 00 00 00 mov 0xac(%rsp),%edi 0.00 : bb71c: 48 89 84 24 90 01 00 mov %rax,0x190(%rsp) 0.00 : bb723: 00 0.00 : bb724: 45 31 e4 xor %r12d,%r12d 0.00 : bb727: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : bb72c: 48 c7 84 24 98 01 00 movq $0x0,0x198(%rsp) 0.00 : bb733: 00 00 00 00 00 0.00 : bb738: 89 ac 24 a4 01 00 00 mov %ebp,0x1a4(%rsp) 0.00 : bb73f: 89 bc 24 a0 01 00 00 mov %edi,0x1a0(%rsp) 0.00 : bb746: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : bb74d: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : bb754: 00 0.00 : bb755: 48 8b 74 24 20 mov 0x20(%rsp),%rsi 0.00 : bb75a: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb75f: e8 bc cb ff ff callq b8320 0.00 : bb764: 48 8b bc 24 b0 01 00 mov 0x1b0(%rsp),%rdi 0.00 : bb76b: 00 0.00 : bb76c: 89 c3 mov %eax,%ebx 0.00 : bb76e: e8 2d 31 f6 ff callq 1e8a0 0.00 : bb773: 85 db test %ebx,%ebx 0.00 : bb775: 0f 85 3c fc ff ff jne bb3b7 0.00 : bb77b: 49 83 3e 00 cmpq $0x0,(%r14) 0.00 : bb77f: 0f 84 2a fc ff ff je bb3af 0.00 : bb785: 48 8b bc 24 58 01 00 mov 0x158(%rsp),%rdi 0.00 : bb78c: 00 0.00 : bb78d: e8 0e 31 f6 ff callq 1e8a0 0.00 : bb792: 8b 94 24 ac 00 00 00 mov 0xac(%rsp),%edx 0.00 : bb799: 31 ff xor %edi,%edi 0.00 : bb79b: 4c 89 b4 24 58 01 00 mov %r14,0x158(%rsp) 0.00 : bb7a2: 00 0.00 : bb7a3: 89 ac 24 4c 01 00 00 mov %ebp,0x14c(%rsp) 0.00 : bb7aa: 89 94 24 50 01 00 00 mov %edx,0x150(%rsp) 0.00 : bb7b1: e8 ea 30 f6 ff callq 1e8a0 0.00 : bb7b6: 31 ff xor %edi,%edi 0.00 : bb7b8: e8 e3 30 f6 ff callq 1e8a0 0.00 : bb7bd: e9 16 f7 ff ff jmpq baed8 0.00 : bb7c2: 85 c0 test %eax,%eax 0.00 : bb7c4: 0f 84 e9 f4 ff ff je bacb3 0.00 : bb7ca: 83 e0 06 and $0x6,%eax 0.00 : bb7cd: 83 f8 06 cmp $0x6,%eax 0.00 : bb7d0: 0f 84 da 00 00 00 je bb8b0 0.00 : bb7d6: f6 c1 02 test $0x2,%cl 0.00 : bb7d9: 0f 84 99 00 00 00 je bb878 0.00 : bb7df: 4c 8b 7b 58 mov 0x58(%rbx),%r15 0.00 : bb7e3: e9 cb f4 ff ff jmpq bacb3 0.00 : bb7e8: ba 04 00 00 00 mov $0x4,%edx 0.00 : bb7ed: 0f 1f 00 nopl (%rax) 0.00 : bb7f0: e9 c3 f1 ff ff jmpq ba9b8 0.00 : bb7f5: 8b 44 24 40 mov 0x40(%rsp),%eax 0.00 : bb7f9: 44 89 64 24 6c mov %r12d,0x6c(%rsp) 0.00 : bb7fe: c7 44 24 70 ff ff ff movl $0xffffffff,0x70(%rsp) 0.00 : bb805: ff 0.00 : bb806: 44 01 e0 add %r12d,%eax 0.00 : bb809: 89 44 24 68 mov %eax,0x68(%rsp) 0.00 : bb80d: e9 59 f1 ff ff jmpq ba96b 0.00 : bb812: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb817: e8 24 66 ff ff callq b1e40 0.00 : bb81c: 48 8b bc 24 88 01 00 mov 0x188(%rsp),%rdi 0.00 : bb823: 00 0.00 : bb824: e8 77 30 f6 ff callq 1e8a0 0.00 : bb829: 48 8b bc 24 70 01 00 mov 0x170(%rsp),%rdi 0.00 : bb830: 00 0.00 : bb831: e8 6a 30 f6 ff callq 1e8a0 0.00 : bb836: e9 be f1 ff ff jmpq ba9f9 0.00 : bb83b: 31 db xor %ebx,%ebx 0.00 : bb83d: e9 97 f1 ff ff jmpq ba9d9 0.00 : bb842: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : bb849: 00 0.00 : bb84a: 44 89 f9 mov %r15d,%ecx 0.00 : bb84d: 4c 89 ea mov %r13,%rdx 0.00 : bb850: 4c 89 f6 mov %r14,%rsi 0.00 : bb853: e8 08 ab ff ff callq b6360 0.00 : bb858: 4c 89 ef mov %r13,%rdi 0.00 : bb85b: 89 c3 mov %eax,%ebx 0.00 : bb85d: e8 3e 30 f6 ff callq 1e8a0 0.00 : bb862: 85 db test %ebx,%ebx 0.00 : bb864: 0f 84 1b ff ff ff je bb785 0.00 : bb86a: 45 31 e4 xor %r12d,%r12d 0.00 : bb86d: e9 45 fb ff ff jmpq bb3b7 0.00 : bb872: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bb878: f6 c1 04 test $0x4,%cl 0.00 : bb87b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bb880: 0f 84 2d f4 ff ff je bacb3 0.00 : bb886: 49 8b 57 38 mov 0x38(%r15),%rdx 0.00 : bb88a: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : bb88f: 48 89 de mov %rbx,%rsi 0.00 : bb892: 44 89 04 24 mov %r8d,(%rsp) 0.00 : bb896: e8 35 a1 ff ff callq b59d0 0.00 : bb89b: 44 8b 04 24 mov (%rsp),%r8d 0.00 : bb89f: 49 89 c7 mov %rax,%r15 0.00 : bb8a2: e9 0c f4 ff ff jmpq bacb3 0.00 : bb8a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bb8ae: 00 00 0.00 : bb8b0: 4c 8b 7b 60 mov 0x60(%rbx),%r15 0.00 : bb8b4: e9 fa f3 ff ff jmpq bacb3 0.00 : bb8b9: 8b 94 24 20 02 00 00 mov 0x220(%rsp),%edx 0.00 : bb8c0: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bb8c5: e8 16 98 ff ff callq b50e0 0.00 : bb8ca: 85 c0 test %eax,%eax 0.00 : bb8cc: 0f 85 8e 02 00 00 jne bbb60 0.00 : bb8d2: 8b b4 24 cc 01 00 00 mov 0x1cc(%rsp),%esi 0.00 : bb8d9: 89 f0 mov %esi,%eax 0.00 : bb8db: 2b 84 24 f8 00 00 00 sub 0xf8(%rsp),%eax 0.00 : bb8e2: e9 3b f2 ff ff jmpq bab22 0.00 : bb8e7: 83 f8 0c cmp $0xc,%eax 0.00 : bb8ea: 0f 84 a3 f1 ff ff je baa93 0.00 : bb8f0: 48 8d 0d 6f 0c 08 00 lea 0x80c6f(%rip),%rcx # 13c566 <__PRETTY_FUNCTION__.18094> 0.00 : bb8f7: 48 8d 35 31 0b 08 00 lea 0x80b31(%rip),%rsi # 13c42f <__PRETTY_FUNCTION__.10792+0xa> 0.00 : bb8fe: 48 8d 3d b8 0b 08 00 lea 0x80bb8(%rip),%rdi # 13c4bd <__PRETTY_FUNCTION__.10792+0x98> 0.00 : bb905: ba 78 04 00 00 mov $0x478,%edx 0.00 : bb90a: e8 11 00 f7 ff callq 2b920 <__assert_fail> 0.00 : bb90f: 48 8b 84 24 18 02 00 mov 0x218(%rsp),%rax 0.00 : bb916: 00 0.00 : bb917: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : bb91d: 8b 84 24 4c 01 00 00 mov 0x14c(%rsp),%eax 0.00 : bb924: 48 8b 94 24 18 02 00 mov 0x218(%rsp),%rdx 0.00 : bb92b: 00 0.00 : bb92c: 89 42 04 mov %eax,0x4(%rdx) 0.00 : bb92f: 48 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%rbx 0.00 : bb936: 00 0.00 : bb937: 31 d2 xor %edx,%edx 0.00 : bb939: be 01 00 00 00 mov $0x1,%esi 0.00 : bb93e: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : bb942: eb 26 jmp bb96a 0.00 : bb944: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bb948: 03 84 24 cc 01 00 00 add 0x1cc(%rsp),%eax 0.00 : bb94f: 89 01 mov %eax,(%rcx) 0.00 : bb951: 8b 84 24 cc 01 00 00 mov 0x1cc(%rsp),%eax 0.00 : bb958: 01 41 04 add %eax,0x4(%rcx) 0.00 : bb95b: 48 8d 46 01 lea 0x1(%rsi),%rax 0.00 : bb95f: 48 39 f8 cmp %rdi,%rax 0.00 : bb962: 74 68 je bb9cc 0.00 : bb964: 48 89 f2 mov %rsi,%rdx 0.00 : bb967: 48 89 c6 mov %rax,%rsi 0.00 : bb96a: 48 8b 84 24 18 02 00 mov 0x218(%rsp),%rax 0.00 : bb971: 00 0.00 : bb972: 48 8d 0c d0 lea (%rax,%rdx,8),%rcx 0.00 : bb976: 8b 01 mov (%rcx),%eax 0.00 : bb978: 83 f8 ff cmp $0xffffffff,%eax 0.00 : bb97b: 74 de je bb95b 0.00 : bb97d: 80 bc 24 34 01 00 00 cmpb $0x0,0x134(%rsp) 0.00 : bb984: 00 0.00 : bb985: 74 c1 je bb948 0.00 : bb987: 3b 84 24 fc 00 00 00 cmp 0xfc(%rsp),%eax 0.00 : bb98e: 0f 84 1b 02 00 00 je bbbaf 0.00 : bb994: 48 63 d0 movslq %eax,%rdx 0.00 : bb997: 48 8b 84 24 e8 00 00 mov 0xe8(%rsp),%rax 0.00 : bb99e: 00 0.00 : bb99f: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : bb9a2: 89 01 mov %eax,(%rcx) 0.00 : bb9a4: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : bb9a7: 3b 84 24 fc 00 00 00 cmp 0xfc(%rsp),%eax 0.00 : bb9ae: 0f 84 bc 00 00 00 je bba70 0.00 : bb9b4: 48 63 d0 movslq %eax,%rdx 0.00 : bb9b7: 48 8b 84 24 e8 00 00 mov 0xe8(%rsp),%rax 0.00 : bb9be: 00 0.00 : bb9bf: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : bb9c2: 89 41 04 mov %eax,0x4(%rcx) 0.00 : bb9c5: 8b 01 mov (%rcx),%eax 0.00 : bb9c7: e9 7c ff ff ff jmpq bb948 0.00 : bb9cc: 44 8b 64 24 78 mov 0x78(%rsp),%r12d 0.00 : bb9d1: 45 85 e4 test %r12d,%r12d 0.00 : bb9d4: 7e 30 jle bba06 0.00 : bb9d6: 48 8b 94 24 b8 00 00 mov 0xb8(%rsp),%rdx 0.00 : bb9dd: 00 0.00 : bb9de: 48 8b 8c 24 18 02 00 mov 0x218(%rsp),%rcx 0.00 : bb9e5: 00 0.00 : bb9e6: 48 8d 04 d1 lea (%rcx,%rdx,8),%rax 0.00 : bb9ea: 31 d2 xor %edx,%edx 0.00 : bb9ec: c7 00 ff ff ff ff movl $0xffffffff,(%rax) 0.00 : bb9f2: c7 40 04 ff ff ff ff movl $0xffffffff,0x4(%rax) 0.00 : bb9f9: 83 c2 01 add $0x1,%edx 0.00 : bb9fc: 48 83 c0 08 add $0x8,%rax 0.00 : bba00: 39 54 24 78 cmp %edx,0x78(%rsp) 0.00 : bba04: 7f e6 jg bb9ec 0.00 : bba06: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : bba0b: 31 c9 xor %ecx,%ecx 0.00 : bba0d: 48 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%rbx 0.00 : bba14: 00 0.00 : bba15: 48 83 bf d0 00 00 00 cmpq $0x0,0xd0(%rdi) 0.00 : bba1c: 00 0.00 : bba1d: 48 8d 53 ff lea -0x1(%rbx),%rdx 0.00 : bba21: 0f 84 14 fe ff ff je bb83b 0.00 : bba27: 48 39 d1 cmp %rdx,%rcx 0.00 : bba2a: 89 ce mov %ecx,%esi 0.00 : bba2c: 0f 84 09 fe ff ff je bb83b 0.00 : bba32: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : bba37: 48 8b 83 d0 00 00 00 mov 0xd0(%rbx),%rax 0.00 : bba3e: 8b 04 88 mov (%rax,%rcx,4),%eax 0.00 : bba41: 39 c6 cmp %eax,%esi 0.00 : bba43: 74 25 je bba6a 0.00 : bba45: 48 8b bc 24 18 02 00 mov 0x218(%rsp),%rdi 0.00 : bba4c: 00 0.00 : bba4d: 48 98 cltq 0.00 : bba4f: 8b 44 c7 08 mov 0x8(%rdi,%rax,8),%eax 0.00 : bba53: 89 44 cf 08 mov %eax,0x8(%rdi,%rcx,8) 0.00 : bba57: 48 8b 83 d0 00 00 00 mov 0xd0(%rbx),%rax 0.00 : bba5e: 48 63 04 88 movslq (%rax,%rcx,4),%rax 0.00 : bba62: 8b 44 c7 0c mov 0xc(%rdi,%rax,8),%eax 0.00 : bba66: 89 44 cf 0c mov %eax,0xc(%rdi,%rcx,8) 0.00 : bba6a: 48 83 c1 01 add $0x1,%rcx 0.00 : bba6e: eb b7 jmp bba27 0.00 : bba70: 8b 84 24 00 01 00 00 mov 0x100(%rsp),%eax 0.00 : bba77: e9 46 ff ff ff jmpq bb9c2 0.00 : bba7c: 84 c0 test %al,%al 0.00 : bba7e: 78 5e js bbade 0.00 : bba80: 8b 7c 24 74 mov 0x74(%rsp),%edi 0.00 : bba84: 44 89 c2 mov %r8d,%edx 0.00 : bba87: c7 84 24 9c 00 00 00 movl $0x1,0x9c(%rsp) 0.00 : bba8e: 01 00 00 00 0.00 : bba92: 85 ff test %edi,%edi 0.00 : bba94: 0f 85 63 f2 ff ff jne bacfd 0.00 : bba9a: e9 d8 f3 ff ff jmpq bae77 0.00 : bba9f: 49 8d 5f 08 lea 0x8(%r15),%rbx 0.00 : bbaa3: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bbaa8: 31 d2 xor %edx,%edx 0.00 : bbaaa: 44 89 04 24 mov %r8d,(%rsp) 0.00 : bbaae: 48 89 de mov %rbx,%rsi 0.00 : bbab1: e8 aa a2 ff ff callq b5d60 0.00 : bbab6: 85 c0 test %eax,%eax 0.00 : bbab8: 89 84 24 c8 01 00 00 mov %eax,0x1c8(%rsp) 0.00 : bbabf: 44 8b 04 24 mov (%rsp),%r8d 0.00 : bbac3: 75 62 jne bbb27 0.00 : bbac5: 41 0f b6 47 50 movzbl 0x50(%r15),%eax 0.00 : bbaca: a8 40 test $0x40,%al 0.00 : bbacc: 75 32 jne bbb00 0.00 : bbace: c7 84 24 98 00 00 00 movl $0x0,0x98(%rsp) 0.00 : bbad5: 00 00 00 00 0.00 : bbad9: e9 07 f2 ff ff jmpq bace5 0.00 : bbade: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bbae3: 44 89 c2 mov %r8d,%edx 0.00 : bbae6: 4c 89 fe mov %r15,%rsi 0.00 : bbae9: 44 89 04 24 mov %r8d,(%rsp) 0.00 : bbaed: e8 1e 85 ff ff callq b4010 0.00 : bbaf2: 85 c0 test %eax,%eax 0.00 : bbaf4: 44 8b 04 24 mov (%rsp),%r8d 0.00 : bbaf8: 0f 84 ef f1 ff ff je baced 0.00 : bbafe: eb 80 jmp bba80 0.00 : bbb00: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : bbb05: 48 89 de mov %rbx,%rsi 0.00 : bbb08: 44 89 04 24 mov %r8d,(%rsp) 0.00 : bbb0c: e8 ef bd ff ff callq b7900 0.00 : bbb11: 85 c0 test %eax,%eax 0.00 : bbb13: 89 84 24 c8 01 00 00 mov %eax,0x1c8(%rsp) 0.00 : bbb1a: 44 8b 04 24 mov (%rsp),%r8d 0.00 : bbb1e: 75 07 jne bbb27 0.00 : bbb20: 41 0f b6 47 50 movzbl 0x50(%r15),%eax 0.00 : bbb25: eb a7 jmp bbace 0.00 : bbb27: 89 84 24 c4 00 00 00 mov %eax,0xc4(%rsp) 0.00 : bbb2e: e9 44 f3 ff ff jmpq bae77 0.00 : bbb33: 83 bc 24 c8 01 00 00 cmpl $0xc,0x1c8(%rsp) 0.00 : bbb3a: 0c 0.00 : bbb3b: 0f 84 52 ef ff ff je baa93 0.00 : bbb41: 48 8d 0d 1e 0a 08 00 lea 0x80a1e(%rip),%rcx # 13c566 <__PRETTY_FUNCTION__.18094> 0.00 : bbb48: 48 8d 35 e0 08 08 00 lea 0x808e0(%rip),%rsi # 13c42f <__PRETTY_FUNCTION__.10792+0xa> 0.00 : bbb4f: 48 8d 3d 67 09 08 00 lea 0x80967(%rip),%rdi # 13c4bd <__PRETTY_FUNCTION__.10792+0x98> 0.00 : bbb56: ba 42 04 00 00 mov $0x442,%edx 0.00 : bbb5b: e8 c0 fd f6 ff callq 2b920 <__assert_fail> 0.00 : bbb60: 89 c3 mov %eax,%ebx 0.00 : bbb62: e9 72 ee ff ff jmpq ba9d9 0.00 : bbb67: 31 c0 xor %eax,%eax 0.00 : bbb69: 8b 54 24 44 mov 0x44(%rsp),%edx 0.00 : bbb6d: 39 54 24 6c cmp %edx,0x6c(%rsp) 0.00 : bbb71: 7d 0e jge bbb81 0.00 : bbb73: 48 63 44 24 6c movslq 0x6c(%rsp),%rax 0.00 : bbb78: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : bbb7d: 0f b6 04 01 movzbl (%rcx,%rax,1),%eax 0.00 : bbb81: 48 83 bc 24 88 00 00 cmpq $0x0,0x88(%rsp) 0.00 : bbb88: 00 00 0.00 : bbb8a: 74 0c je bbb98 0.00 : bbb8c: 48 8b 9c 24 88 00 00 mov 0x88(%rsp),%rbx 0.00 : bbb93: 00 0.00 : bbb94: 0f b6 04 03 movzbl (%rbx,%rax,1),%eax 0.00 : bbb98: 48 8b bc 24 80 00 00 mov 0x80(%rsp),%rdi 0.00 : bbb9f: 00 0.00 : bbba0: 80 3c 07 00 cmpb $0x0,(%rdi,%rax,1) 0.00 : bbba4: 0f 85 34 f0 ff ff jne babde 0.00 : bbbaa: e9 25 ee ff ff jmpq ba9d4 0.00 : bbbaf: 8b 84 24 00 01 00 00 mov 0x100(%rsp),%eax 0.00 : bbbb6: e9 e7 fd ff ff jmpq bb9a2 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000002470 : 8.33 : 2470: 55 push %rbp 0.00 : 2471: 48 8d 05 d8 e6 ff ff lea -0x1928(%rip),%rax # b50 <_dl_initial_error_catch_tsd> 0.00 : 2478: 48 89 e5 mov %rsp,%rbp 0.00 : 247b: 41 57 push %r15 0.00 : 247d: 49 89 cf mov %rcx,%r15 0.00 : 2480: 48 8d 0d d9 e6 ff ff lea -0x1927(%rip),%rcx # b60 0.00 : 2487: 41 56 push %r14 0.00 : 2489: 41 55 push %r13 0.00 : 248b: 49 89 d5 mov %rdx,%r13 0.00 : 248e: 48 8d 15 3b 8a 00 00 lea 0x8a3b(%rip),%rdx # aed0 <_dl_nothread_init_static_tls> 0.00 : 2495: 41 54 push %r12 0.00 : 2497: 41 89 f4 mov %esi,%r12d 0.00 : 249a: 48 8d 35 cf e6 ff ff lea -0x1931(%rip),%rsi # b70 0.00 : 24a1: 53 push %rbx 0.00 : 24a2: 48 89 fb mov %rdi,%rbx 0.00 : 24a5: 48 8d 3d 74 f5 00 00 lea 0xf574(%rip),%rdi # 11a20 <_dl_make_stack_executable> 0.00 : 24ac: 48 81 ec 38 01 00 00 sub $0x138,%rsp 0.00 : 24b3: 48 89 3d 96 da 21 00 mov %rdi,0x21da96(%rip) # 21ff50 <_rtld_global+0xef0> 0.00 : 24ba: 48 8d 7d c8 lea -0x38(%rbp),%rdi 0.00 : 24be: 48 89 05 03 d5 21 00 mov %rax,0x21d503(%rip) # 21f9c8 <_rtld_global+0x968> 0.00 : 24c5: 48 89 15 d4 da 21 00 mov %rdx,0x21dad4(%rip) # 21ffa0 <_rtld_global+0xf40> 0.00 : 24cc: 48 89 0d 6d da 21 00 mov %rcx,0x21da6d(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : 24d3: 48 89 35 6e da 21 00 mov %rsi,0x21da6e(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : 24da: e8 81 f6 ff ff callq 1b60 0.00 : 24df: 48 8d 05 1a e6 ff ff lea -0x19e6(%rip),%rax # b00 <_start> 0.00 : 24e6: 49 39 45 00 cmp %rax,0x0(%r13) 0.00 : 24ea: 0f 85 93 01 00 00 jne 2683 0.00 : 24f0: 48 8b 05 11 c7 21 00 mov 0x21c711(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 24f7: 4c 8d 35 e7 71 01 00 lea 0x171e7(%rip),%r14 # 196e5 0.00 : 24fe: 41 b8 07 00 00 00 mov $0x7,%r8d 0.00 : 2504: 48 8b 00 mov (%rax),%rax 0.00 : 2507: 48 89 05 ca d4 21 00 mov %rax,0x21d4ca(%rip) # 21f9d8 <_rtld_global+0x978> 0.00 : 250e: 44 8b 1d d3 c8 21 00 mov 0x21c8d3(%rip),%r11d # 21ede8 <_dl_argc> 0.00 : 2515: 41 83 fb 01 cmp $0x1,%r11d 0.00 : 2519: 7e 55 jle 2570 0.00 : 251b: 4c 8b 15 e6 c6 21 00 mov 0x21c6e6(%rip),%r10 # 21ec08 <_dl_argv> 0.00 : 2522: 4c 89 f7 mov %r14,%rdi 0.00 : 2525: 4c 89 c1 mov %r8,%rcx 0.00 : 2528: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 252c: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) 0.00 : 2533: 48 89 c6 mov %rax,%rsi 0.00 : 2536: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 2538: 75 55 jne 258f 0.00 : 253a: 83 2d a7 c8 21 00 01 subl $0x1,0x21c8a7(%rip) # 21ede8 <_dl_argc> 0.00 : 2541: 83 05 a4 c8 21 00 01 addl $0x1,0x21c8a4(%rip) # 21edec <_dl_skip_args> 0.00 : 2548: 44 8b 1d 99 c8 21 00 mov 0x21c899(%rip),%r11d # 21ede8 <_dl_argc> 0.00 : 254f: 48 83 05 b1 c6 21 00 addq $0x8,0x21c6b1(%rip) # 21ec08 <_dl_argv> 0.00 : 2556: 08 0.00 : 2557: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%rbp) 0.00 : 255e: 41 83 fb 01 cmp $0x1,%r11d 0.00 : 2562: c7 05 f0 c6 21 00 ff movl $0xffffffff,0x21c6f0(%rip) # 21ec5c <_rtld_global_ro+0x3c> 0.00 : 2569: ff ff ff 0.00 : 256c: 7f ad jg 251b 0.00 : 256e: 66 90 xchg %ax,%ax 0.00 : 2570: 48 8d 35 51 83 01 00 lea 0x18351(%rip),%rsi # 1a8c8 <__PRETTY_FUNCTION__.3644+0x557> 0.00 : 2577: bf 02 00 00 00 mov $0x2,%edi 0.00 : 257c: 31 c0 xor %eax,%eax 0.00 : 257e: e8 7d cc 00 00 callq f200 <_dl_dprintf> 0.00 : 2583: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 2588: e8 33 3d 01 00 callq 162c0 <_Exit> 0.00 : 258d: eb e1 jmp 2570 0.00 : 258f: 48 8b b5 b8 fe ff ff mov -0x148(%rbp),%rsi 0.00 : 2596: 48 8d 3d 4f 71 01 00 lea 0x1714f(%rip),%rdi # 196ec 0.00 : 259d: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 25a2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 25a4: 75 22 jne 25c8 0.00 : 25a6: c7 45 c8 02 00 00 00 movl $0x2,-0x38(%rbp) 0.00 : 25ad: 83 05 38 c8 21 00 01 addl $0x1,0x21c838(%rip) # 21edec <_dl_skip_args> 0.00 : 25b4: 83 2d 2d c8 21 00 01 subl $0x1,0x21c82d(%rip) # 21ede8 <_dl_argc> 0.00 : 25bb: 48 83 05 45 c6 21 00 addq $0x8,0x21c645(%rip) # 21ec08 <_dl_argv> 0.00 : 25c2: 08 0.00 : 25c3: e9 46 ff ff ff jmpq 250e 0.00 : 25c8: 48 8b b5 b8 fe ff ff mov -0x148(%rbp),%rsi 0.00 : 25cf: 48 8d 3d 1f 71 01 00 lea 0x1711f(%rip),%rdi # 196f5 0.00 : 25d6: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 25db: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 25dd: 75 2c jne 260b 0.00 : 25df: 41 83 fb 02 cmp $0x2,%r11d 0.00 : 25e3: 74 26 je 260b 0.00 : 25e5: 49 8b 42 10 mov 0x10(%r10),%rax 0.00 : 25e9: 83 05 fc c7 21 00 02 addl $0x2,0x21c7fc(%rip) # 21edec <_dl_skip_args> 0.00 : 25f0: 83 2d f1 c7 21 00 02 subl $0x2,0x21c7f1(%rip) # 21ede8 <_dl_argc> 0.00 : 25f7: 48 83 05 09 c6 21 00 addq $0x10,0x21c609(%rip) # 21ec08 <_dl_argv> 0.00 : 25fe: 10 0.00 : 25ff: 48 89 05 ca c7 21 00 mov %rax,0x21c7ca(%rip) # 21edd0 0.00 : 2606: e9 03 ff ff ff jmpq 250e 0.00 : 260b: 48 8b b5 b8 fe ff ff mov -0x148(%rbp),%rsi 0.00 : 2612: 48 8d 3d eb 70 01 00 lea 0x170eb(%rip),%rdi # 19704 0.00 : 2619: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 261e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 2620: 75 0a jne 262c 0.00 : 2622: 41 83 fb 02 cmp $0x2,%r11d 0.00 : 2626: 0f 85 55 0e 00 00 jne 3481 0.00 : 262c: 48 8b b5 b8 fe ff ff mov -0x148(%rbp),%rsi 0.00 : 2633: 48 8d 3d da 70 01 00 lea 0x170da(%rip),%rdi # 19714 0.00 : 263a: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 263f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 2641: 0f 85 a9 13 00 00 jne 39f0 0.00 : 2647: 41 83 fb 02 cmp $0x2,%r11d 0.00 : 264b: 0f 84 9f 13 00 00 je 39f0 0.00 : 2651: 49 8b 7a 10 mov 0x10(%r10),%rdi 0.00 : 2655: 4c 89 85 c8 fe ff ff mov %r8,-0x138(%rbp) 0.00 : 265c: e8 ff f1 ff ff callq 1860 0.00 : 2661: 83 05 84 c7 21 00 02 addl $0x2,0x21c784(%rip) # 21edec <_dl_skip_args> 0.00 : 2668: 83 2d 79 c7 21 00 02 subl $0x2,0x21c779(%rip) # 21ede8 <_dl_argc> 0.00 : 266f: 48 83 05 91 c5 21 00 addq $0x10,0x21c591(%rip) # 21ec08 <_dl_argv> 0.00 : 2676: 10 0.00 : 2677: 4c 8b 85 c8 fe ff ff mov -0x138(%rbp),%r8 0.00 : 267e: e9 8b fe ff ff jmpq 250e 0.00 : 2683: 48 8d 35 53 71 01 00 lea 0x17153(%rip),%rsi # 197dd 0.00 : 268a: 45 31 c9 xor %r9d,%r9d 0.00 : 268d: 31 c9 xor %ecx,%ecx 0.00 : 268f: 31 d2 xor %edx,%edx 0.00 : 2691: 41 b8 00 00 00 20 mov $0x20000000,%r8d 0.00 : 2697: 48 89 f7 mov %rsi,%rdi 0.00 : 269a: e8 d1 83 00 00 callq aa70 <_dl_new_object> 0.00 : 269f: 48 85 c0 test %rax,%rax 0.00 : 26a2: 49 89 c6 mov %rax,%r14 0.00 : 26a5: 0f 84 34 17 00 00 je 3ddf 0.00 : 26ab: 48 89 98 a0 02 00 00 mov %rbx,0x2a0(%rax) 0.00 : 26b2: 66 44 89 a0 b0 02 00 mov %r12w,0x2b0(%rax) 0.00 : 26b9: 00 0.00 : 26ba: 31 f6 xor %esi,%esi 0.00 : 26bc: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 26c0: 4c 89 f7 mov %r14,%rdi 0.00 : 26c3: 45 31 ed xor %r13d,%r13d 0.00 : 26c6: 49 89 86 a8 02 00 00 mov %rax,0x2a8(%r14) 0.00 : 26cd: e8 2e 83 00 00 callq aa00 <_dl_add_to_namespace_list> 0.00 : 26d2: 4c 3b 35 87 c9 21 00 cmp 0x21c987(%rip),%r14 # 21f060 <_rtld_global> 0.00 : 26d9: 48 8d 3d 80 c9 21 00 lea 0x21c980(%rip),%rdi # 21f060 <_rtld_global> 0.00 : 26e0: 44 89 e2 mov %r12d,%edx 0.00 : 26e3: 48 89 bd e0 fe ff ff mov %rdi,-0x120(%rbp) 0.00 : 26ea: 0f 85 0e 17 00 00 jne 3dfe 0.00 : 26f0: 48 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%rax 0.00 : 26f7: 00 0.00 : 26f8: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 26fc: 41 83 86 10 03 00 00 addl $0x1,0x310(%r14) 0.00 : 2703: 01 0.00 : 2704: 45 31 ff xor %r15d,%r15d 0.00 : 2707: 49 c7 86 48 03 00 00 movq $0x0,0x348(%r14) 0.00 : 270e: 00 00 00 00 0.00 : 2712: 49 c7 86 50 03 00 00 movq $0x0,0x350(%r14) 0.00 : 2719: 00 00 00 00 0.00 : 271d: 48 29 c2 sub %rax,%rdx 0.00 : 2720: 49 c7 86 40 03 00 00 movq $0xffffffffffffffff,0x340(%r14) 0.00 : 2727: ff ff ff ff 0.00 : 272b: 48 8d 34 13 lea (%rbx,%rdx,1),%rsi 0.00 : 272f: 48 89 da mov %rbx,%rdx 0.00 : 2732: 48 39 f3 cmp %rsi,%rbx 0.00 : 2735: 72 35 jb 276c 0.00 : 2737: e9 cf 00 00 00 jmpq 280b 0.00 : 273c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 2740: 83 f8 02 cmp $0x2,%eax 0.00 : 2743: 0f 84 e3 04 00 00 je 2c2c 0.00 : 2749: 83 f8 03 cmp $0x3,%eax 0.00 : 274c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 2750: 0f 84 6a 04 00 00 je 2bc0 0.00 : 2756: 83 e8 01 sub $0x1,%eax 0.00 : 2759: 0f 84 02 04 00 00 je 2b61 0.00 : 275f: 48 83 c2 38 add $0x38,%rdx 0.00 : 2763: 48 39 f2 cmp %rsi,%rdx 0.00 : 2766: 0f 83 9f 00 00 00 jae 280b 8.33 : 276c: 8b 02 mov (%rdx),%eax 8.33 : 276e: 83 f8 06 cmp $0x6,%eax 0.00 : 2771: 0f 84 db 03 00 00 je 2b52 0.00 : 2777: 76 c7 jbe 2740 0.00 : 2779: 3d 51 e5 74 64 cmp $0x6474e551,%eax 0.00 : 277e: 66 90 xchg %ax,%ax 0.00 : 2780: 0f 84 be 03 00 00 je 2b44 0.00 : 2786: 3d 52 e5 74 64 cmp $0x6474e552,%eax 0.00 : 278b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2790: 0f 84 93 03 00 00 je 2b29 0.00 : 2796: 83 f8 07 cmp $0x7,%eax 0.00 : 2799: 75 c4 jne 275f 0.00 : 279b: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 279f: 48 85 c0 test %rax,%rax 0.00 : 27a2: 74 bb je 275f 0.00 : 27a4: 49 89 86 30 04 00 00 mov %rax,0x430(%r14) 0.00 : 27ab: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 27af: 49 89 86 38 04 00 00 mov %rax,0x438(%r14) 0.00 : 27b6: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 27ba: 48 85 c0 test %rax,%rax 0.00 : 27bd: 0f 84 ae 0c 00 00 je 3471 0.00 : 27c3: 48 83 e8 01 sub $0x1,%rax 0.00 : 27c7: 48 23 42 10 and 0x10(%rdx),%rax 0.00 : 27cb: 49 89 86 40 04 00 00 mov %rax,0x440(%r14) 0.00 : 27d2: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 27d6: 49 89 86 28 04 00 00 mov %rax,0x428(%r14) 0.00 : 27dd: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 27e1: 48 83 c2 38 add $0x38,%rdx 0.00 : 27e5: 48 39 f2 cmp %rsi,%rdx 0.00 : 27e8: 49 c7 86 50 04 00 00 movq $0x1,0x450(%r14) 0.00 : 27ef: 01 00 00 00 0.00 : 27f3: 49 89 86 20 04 00 00 mov %rax,0x420(%r14) 0.00 : 27fa: 48 c7 05 5b d7 21 00 movq $0x1,0x21d75b(%rip) # 21ff60 <_rtld_global+0xf00> 0.00 : 2801: 01 00 00 00 0.00 : 2805: 0f 82 61 ff ff ff jb 276c 0.00 : 280b: 49 8b 86 20 04 00 00 mov 0x420(%r14),%rax 0.00 : 2812: 48 85 c0 test %rax,%rax 0.00 : 2815: 74 0a je 2821 0.00 : 2817: 49 03 06 add (%r14),%rax 0.00 : 281a: 49 89 86 20 04 00 00 mov %rax,0x420(%r14) 0.00 : 2821: 49 83 be 48 03 00 00 cmpq $0x0,0x348(%r14) 0.00 : 2828: 00 0.00 : 2829: 75 0b jne 2836 0.00 : 282b: 49 c7 86 48 03 00 00 movq $0xffffffffffffffff,0x348(%r14) 0.00 : 2832: ff ff ff ff 0.00 : 2836: 49 83 be 50 03 00 00 cmpq $0x0,0x350(%r14) 0.00 : 283d: 00 0.00 : 283e: 75 0b jne 284b 0.00 : 2840: 49 c7 86 50 03 00 00 movq $0xffffffffffffffff,0x350(%r14) 0.00 : 2847: ff ff ff ff 0.00 : 284b: 48 83 3d b5 d1 21 00 cmpq $0x0,0x21d1b5(%rip) # 21fa08 <_rtld_global+0x9a8> 0.00 : 2852: 00 0.00 : 2853: 0f 84 1a 13 00 00 je 3b73 0.00 : 2859: 48 8b 15 20 d2 21 00 mov 0x21d220(%rip),%rdx # 21fa80 <_rtld_global+0xa20> 0.00 : 2860: 48 85 d2 test %rdx,%rdx 0.00 : 2863: 74 2a je 288f 0.00 : 2865: 48 8b 05 cc d1 21 00 mov 0x21d1cc(%rip),%rax # 21fa38 <_rtld_global+0x9d8> 0.00 : 286c: 4c 8b 25 95 d1 21 00 mov 0x21d195(%rip),%r12 # 21fa08 <_rtld_global+0x9a8> 0.00 : 2873: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 2877: 48 03 5a 08 add 0x8(%rdx),%rbx 0.00 : 287b: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 287f: 48 89 de mov %rbx,%rsi 0.00 : 2882: e8 d9 3d 01 00 callq 16660 0.00 : 2887: 85 c0 test %eax,%eax 0.00 : 2889: 0f 85 a9 0b 00 00 jne 3438 0.00 : 288f: f6 05 4e d4 21 00 04 testb $0x4,0x21d44e(%rip) # 21fce4 <_rtld_global+0xc84> 0.00 : 2896: 0f 84 5c 1a 00 00 je 42f8 0.00 : 289c: 45 84 ed test %r13b,%r13b 0.00 : 289f: 90 nop 0.00 : 28a0: 0f 85 97 01 00 00 jne 2a3d 0.00 : 28a6: 49 8b 4e 10 mov 0x10(%r14),%rcx 0.00 : 28aa: 48 85 c9 test %rcx,%rcx 0.00 : 28ad: 0f 84 82 01 00 00 je 2a35 8.33 : 28b3: 48 8b 11 mov (%rcx),%rdx 0.00 : 28b6: 48 85 d2 test %rdx,%rdx 0.00 : 28b9: 74 61 je 291c 0.00 : 28bb: be ff ff ff 6f mov $0x6fffffff,%esi 0.00 : 28c0: bf ff fd ff 6f mov $0x6ffffdff,%edi 0.00 : 28c5: 41 b8 ff fe ff 6f mov $0x6ffffeff,%r8d 0.00 : 28cb: 41 b9 48 ff ff 6f mov $0x6fffff48,%r9d 0.00 : 28d1: 41 ba 3c fe ff 6f mov $0x6ffffe3c,%r10d 0.00 : 28d7: 41 bb 29 00 00 70 mov $0x70000029,%r11d 0.00 : 28dd: eb 11 jmp 28f0 0.00 : 28df: 49 89 4c d6 40 mov %rcx,0x40(%r14,%rdx,8) 0.00 : 28e4: 48 83 c1 10 add $0x10,%rcx 0.00 : 28e8: 48 8b 11 mov (%rcx),%rdx 0.00 : 28eb: 48 85 d2 test %rdx,%rdx 0.00 : 28ee: 74 2c je 291c 0.00 : 28f0: 48 83 fa 21 cmp $0x21,%rdx 0.00 : 28f4: 76 e9 jbe 28df 0.00 : 28f6: 48 89 f0 mov %rsi,%rax 0.00 : 28f9: 48 29 d0 sub %rdx,%rax 0.00 : 28fc: 48 83 f8 0f cmp $0xf,%rax 0.00 : 2900: 0f 87 36 03 00 00 ja 2c3c 0.00 : 2906: 4c 89 d8 mov %r11,%rax 0.00 : 2909: 48 29 d0 sub %rdx,%rax 0.00 : 290c: 49 89 0c c6 mov %rcx,(%r14,%rax,8) 0.00 : 2910: 48 83 c1 10 add $0x10,%rcx 0.00 : 2914: 48 8b 11 mov (%rcx),%rdx 0.00 : 2917: 48 85 d2 test %rdx,%rdx 0.00 : 291a: 75 d4 jne 28f0 0.00 : 291c: 49 8b 16 mov (%r14),%rdx 0.00 : 291f: 48 85 d2 test %rdx,%rdx 0.00 : 2922: 74 71 je 2995 0.00 : 2924: 49 8b 46 60 mov 0x60(%r14),%rax 0.00 : 2928: 48 85 c0 test %rax,%rax 0.00 : 292b: 74 04 je 2931 0.00 : 292d: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 2931: 49 8b 46 58 mov 0x58(%r14),%rax 0.00 : 2935: 48 85 c0 test %rax,%rax 0.00 : 2938: 74 04 je 293e 0.00 : 293a: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 293e: 49 8b 46 68 mov 0x68(%r14),%rax 0.00 : 2942: 48 85 c0 test %rax,%rax 0.00 : 2945: 74 04 je 294b 0.00 : 2947: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 294b: 49 8b 46 70 mov 0x70(%r14),%rax 0.00 : 294f: 48 85 c0 test %rax,%rax 0.00 : 2952: 74 04 je 2958 0.00 : 2954: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 2958: 49 8b 46 78 mov 0x78(%r14),%rax 0.00 : 295c: 48 85 c0 test %rax,%rax 0.00 : 295f: 74 04 je 2965 0.00 : 2961: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 2965: 49 8b 86 f8 00 00 00 mov 0xf8(%r14),%rax 0.00 : 296c: 48 85 c0 test %rax,%rax 0.00 : 296f: 74 04 je 2975 0.00 : 2971: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 2975: 49 8b 86 c8 01 00 00 mov 0x1c8(%r14),%rax 0.00 : 297c: 48 85 c0 test %rax,%rax 0.00 : 297f: 74 04 je 2985 0.00 : 2981: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 2985: 49 8b 86 98 02 00 00 mov 0x298(%r14),%rax 0.00 : 298c: 48 85 c0 test %rax,%rax 0.00 : 298f: 74 04 je 2995 0.00 : 2991: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 2995: 49 8b 86 e0 00 00 00 mov 0xe0(%r14),%rax 0.00 : 299c: 48 85 c0 test %rax,%rax 0.00 : 299f: 74 0b je 29ac 0.00 : 29a1: 48 83 78 08 07 cmpq $0x7,0x8(%rax) 0.00 : 29a6: 0f 85 fc 14 00 00 jne 3ea8 0.00 : 29ac: 49 83 7e 78 00 cmpq $0x0,0x78(%r14) 0.00 : 29b1: 74 12 je 29c5 0.00 : 29b3: 49 8b 86 88 00 00 00 mov 0x88(%r14),%rax 0.00 : 29ba: 48 83 78 08 18 cmpq $0x18,0x8(%rax) 0.00 : 29bf: 0f 85 02 15 00 00 jne 3ec7 0.00 : 29c5: 49 8b 96 30 01 00 00 mov 0x130(%r14),%rdx 0.00 : 29cc: 48 85 d2 test %rdx,%rdx 0.00 : 29cf: 74 30 je 2a01 0.00 : 29d1: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 29d5: a8 02 test $0x2,%al 0.00 : 29d7: 41 89 86 e0 03 00 00 mov %eax,0x3e0(%r14) 0.00 : 29de: 74 07 je 29e7 0.00 : 29e0: 49 89 96 c0 00 00 00 mov %rdx,0xc0(%r14) 0.00 : 29e7: 41 8b 86 e0 03 00 00 mov 0x3e0(%r14),%eax 0.00 : 29ee: a8 04 test $0x4,%al 0.00 : 29f0: 74 07 je 29f9 0.00 : 29f2: 49 89 96 f0 00 00 00 mov %rdx,0xf0(%r14) 0.00 : 29f9: a8 08 test $0x8,%al 0.00 : 29fb: 0f 85 b2 0a 00 00 jne 34b3 0.00 : 2a01: 49 8b 96 70 01 00 00 mov 0x170(%r14),%rdx 0.00 : 2a08: 48 85 d2 test %rdx,%rdx 0.00 : 2a0b: 74 13 je 2a20 0.00 : 2a0d: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 2a11: a8 01 test $0x1,%al 0.00 : 2a13: 41 89 86 dc 03 00 00 mov %eax,0x3dc(%r14) 0.00 : 2a1a: 0f 85 87 0a 00 00 jne 34a7 0.00 : 2a20: 49 83 be 28 01 00 00 cmpq $0x0,0x128(%r14) 0.00 : 2a27: 00 0.00 : 2a28: 74 0b je 2a35 0.00 : 2a2a: 49 c7 86 b8 00 00 00 movq $0x0,0xb8(%r14) 0.00 : 2a31: 00 00 00 00 0.00 : 2a35: 4c 89 f7 mov %r14,%rdi 0.00 : 2a38: e8 03 66 00 00 callq 9040 <_dl_setup_hash> 0.00 : 2a3d: 83 7d c8 02 cmpl $0x2,-0x38(%rbp) 0.00 : 2a41: 0f 84 39 14 00 00 je 3e80 0.00 : 2a47: 48 83 3d 81 c2 21 00 cmpq $0x0,0x21c281(%rip) # 21ecd0 <_rtld_global_ro+0xb0> 0.00 : 2a4e: 00 0.00 : 2a4f: 48 8d 0d 92 cf 21 00 lea 0x21cf92(%rip),%rcx # 21f9e8 <_rtld_global+0x988> 0.00 : 2a56: 48 89 8d 18 ff ff ff mov %rcx,-0xe8(%rbp) 0.00 : 2a5d: 0f 84 7e 06 00 00 je 30e1 0.00 : 2a63: 48 8d 35 73 6d 01 00 lea 0x16d73(%rip),%rsi # 197dd 0.00 : 2a6a: 45 31 c9 xor %r9d,%r9d 0.00 : 2a6d: 45 31 c0 xor %r8d,%r8d 0.00 : 2a70: 31 c9 xor %ecx,%ecx 0.00 : 2a72: ba 01 00 00 00 mov $0x1,%edx 0.00 : 2a77: 48 8d 1d 6a cf 21 00 lea 0x21cf6a(%rip),%rbx # 21f9e8 <_rtld_global+0x988> 0.00 : 2a7e: 48 89 f7 mov %rsi,%rdi 0.00 : 2a81: e8 ea 7f 00 00 callq aa70 <_dl_new_object> 0.00 : 2a86: 48 85 c0 test %rax,%rax 0.00 : 2a89: 49 89 c4 mov %rax,%r12 0.00 : 2a8c: 48 89 9d 18 ff ff ff mov %rbx,-0xe8(%rbp) 0.00 : 2a93: 0f 84 48 06 00 00 je 30e1 0.00 : 2a99: 48 8b 05 30 c2 21 00 mov 0x21c230(%rip),%rax # 21ecd0 <_rtld_global_ro+0xb0> 0.00 : 2aa0: 48 03 40 20 add 0x20(%rax),%rax 0.00 : 2aa4: 49 89 84 24 a0 02 00 mov %rax,0x2a0(%r12) 0.00 : 2aab: 00 0.00 : 2aac: 48 8b 05 1d c2 21 00 mov 0x21c21d(%rip),%rax # 21ecd0 <_rtld_global_ro+0xb0> 0.00 : 2ab3: 0f b7 40 38 movzwl 0x38(%rax),%eax 0.00 : 2ab7: 66 85 c0 test %ax,%ax 0.00 : 2aba: 66 41 89 84 24 b0 02 mov %ax,0x2b0(%r12) 0.00 : 2ac1: 00 00 0.00 : 2ac3: 0f 84 11 02 00 00 je 2cda 0.00 : 2ac9: 31 f6 xor %esi,%esi 0.00 : 2acb: 31 c9 xor %ecx,%ecx 0.00 : 2acd: eb 2c jmp 2afb 0.00 : 2acf: 83 f8 01 cmp $0x1,%eax 0.00 : 2ad2: 0f 84 7d 01 00 00 je 2c55 0.00 : 2ad8: 83 f8 07 cmp $0x7,%eax 0.00 : 2adb: 0f 84 3c 13 00 00 je 3e1d 0.00 : 2ae1: 41 0f b7 84 24 b0 02 movzwl 0x2b0(%r12),%eax 0.00 : 2ae8: 00 00 0.00 : 2aea: 48 83 c6 01 add $0x1,%rsi 0.00 : 2aee: 48 83 c1 38 add $0x38,%rcx 0.00 : 2af2: 48 39 f0 cmp %rsi,%rax 0.00 : 2af5: 0f 86 df 01 00 00 jbe 2cda 0.00 : 2afb: 48 89 ca mov %rcx,%rdx 0.00 : 2afe: 49 03 94 24 a0 02 00 add 0x2a0(%r12),%rdx 0.00 : 2b05: 00 0.00 : 2b06: 8b 02 mov (%rdx),%eax 0.00 : 2b08: 83 f8 02 cmp $0x2,%eax 0.00 : 2b0b: 75 c2 jne 2acf 0.00 : 2b0d: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 2b11: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 2b16: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 2b1a: 48 c1 e8 04 shr $0x4,%rax 0.00 : 2b1e: 66 41 89 84 24 b2 02 mov %ax,0x2b2(%r12) 0.00 : 2b25: 00 00 0.00 : 2b27: eb b8 jmp 2ae1 0.00 : 2b29: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 2b2d: 49 89 86 58 04 00 00 mov %rax,0x458(%r14) 0.00 : 2b34: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 2b38: 49 89 86 60 04 00 00 mov %rax,0x460(%r14) 0.00 : 2b3f: e9 1b fc ff ff jmpq 275f 0.00 : 2b44: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 2b47: 89 05 0b d4 21 00 mov %eax,0x21d40b(%rip) # 21ff58 <_rtld_global+0xef8> 0.00 : 2b4d: e9 0d fc ff ff jmpq 275f 0.00 : 2b52: 48 89 d8 mov %rbx,%rax 0.00 : 2b55: 48 2b 42 10 sub 0x10(%rdx),%rax 0.00 : 2b59: 49 89 06 mov %rax,(%r14) 0.00 : 2b5c: e9 fe fb ff ff jmpq 275f 0.00 : 2b61: 48 8b 05 d0 c0 21 00 mov 0x21c0d0(%rip),%rax # 21ec38 <_rtld_global_ro+0x18> 0.00 : 2b68: 48 f7 d8 neg %rax 0.00 : 2b6b: 48 23 42 10 and 0x10(%rdx),%rax 0.00 : 2b6f: 49 03 06 add (%r14),%rax 0.00 : 2b72: 49 3b 86 40 03 00 00 cmp 0x340(%r14),%rax 0.00 : 2b79: 73 07 jae 2b82 0.00 : 2b7b: 49 89 86 40 03 00 00 mov %rax,0x340(%r14) 8.33 : 2b82: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 2b86: 49 03 06 add (%r14),%rax 0.00 : 2b89: 48 03 42 28 add 0x28(%rdx),%rax 0.00 : 2b8d: 49 3b 86 48 03 00 00 cmp 0x348(%r14),%rax 0.00 : 2b94: 76 07 jbe 2b9d 0.00 : 2b96: 49 89 86 48 03 00 00 mov %rax,0x348(%r14) 0.00 : 2b9d: f6 42 04 01 testb $0x1,0x4(%rdx) 0.00 : 2ba1: 0f 84 b8 fb ff ff je 275f 0.00 : 2ba7: 49 3b 86 50 03 00 00 cmp 0x350(%r14),%rax 0.00 : 2bae: 0f 86 ab fb ff ff jbe 275f 0.00 : 2bb4: 49 89 86 50 03 00 00 mov %rax,0x350(%r14) 0.00 : 2bbb: e9 9f fb ff ff jmpq 275f 0.00 : 2bc0: 48 8d 0d 69 d4 21 00 lea 0x21d469(%rip),%rcx # 220030 <_dl_rtld_libname> 0.00 : 2bc7: 49 8b 06 mov (%r14),%rax 0.00 : 2bca: 48 03 42 10 add 0x10(%rdx),%rax 0.00 : 2bce: 48 89 0d 33 ce 21 00 mov %rcx,0x21ce33(%rip) # 21fa08 <_rtld_global+0x9a8> 0.00 : 2bd5: 31 c9 xor %ecx,%ecx 0.00 : 2bd7: 48 83 3d 01 ce 21 00 cmpq $0x0,0x21ce01(%rip) # 21f9e0 <_rtld_global+0x980> 0.00 : 2bde: 00 0.00 : 2bdf: 48 89 05 4a d4 21 00 mov %rax,0x21d44a(%rip) # 220030 <_dl_rtld_libname> 0.00 : 2be6: 74 17 je 2bff 0.00 : 2be8: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 2bee: e9 6c fb ff ff jmpq 275f 0.00 : 2bf3: 48 83 c0 01 add $0x1,%rax 0.00 : 2bf7: 40 80 ff 2f cmp $0x2f,%dil 0.00 : 2bfb: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 2bff: 0f b6 38 movzbl (%rax),%edi 0.00 : 2c02: 40 84 ff test %dil,%dil 0.00 : 2c05: 75 ec jne 2bf3 0.00 : 2c07: 48 85 c9 test %rcx,%rcx 0.00 : 2c0a: 74 dc je 2be8 0.00 : 2c0c: 48 8d 3d 3d d4 21 00 lea 0x21d43d(%rip),%rdi # 220050 <_dl_rtld_libname2> 0.00 : 2c13: 48 89 0d 36 d4 21 00 mov %rcx,0x21d436(%rip) # 220050 <_dl_rtld_libname2> 0.00 : 2c1a: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 2c20: 48 89 3d 11 d4 21 00 mov %rdi,0x21d411(%rip) # 220038 <_dl_rtld_libname+0x8> 0.00 : 2c27: e9 33 fb ff ff jmpq 275f 0.00 : 2c2c: 49 8b 06 mov (%r14),%rax 0.00 : 2c2f: 48 03 42 10 add 0x10(%rdx),%rax 0.00 : 2c33: 49 89 46 10 mov %rax,0x10(%r14) 0.00 : 2c37: e9 23 fb ff ff jmpq 275f 0.00 : 2c3c: 8d 04 12 lea (%rdx,%rdx,1),%eax 0.00 : 2c3f: d1 f8 sar %eax 0.00 : 2c41: 83 f8 fc cmp $0xfffffffc,%eax 0.00 : 2c44: 76 65 jbe 2cab 0.00 : 2c46: f7 d0 not %eax 0.00 : 2c48: 83 c0 32 add $0x32,%eax 0.00 : 2c4b: 49 89 4c c6 40 mov %rcx,0x40(%r14,%rax,8) 0.00 : 2c50: e9 8f fc ff ff jmpq 28e4 0.00 : 2c55: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 2c5a: 75 08 jne 2c64 0.00 : 2c5c: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 2c60: 49 89 04 24 mov %rax,(%r12) 0.00 : 2c64: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 2c68: 48 03 42 10 add 0x10(%rdx),%rax 0.00 : 2c6c: 49 3b 84 24 48 03 00 cmp 0x348(%r12),%rax 0.00 : 2c73: 00 0.00 : 2c74: 72 08 jb 2c7e 0.00 : 2c76: 49 89 84 24 48 03 00 mov %rax,0x348(%r12) 0.00 : 2c7d: 00 0.00 : 2c7e: f6 42 04 01 testb $0x1,0x4(%rdx) 0.00 : 2c82: 0f 84 59 fe ff ff je 2ae1 0.00 : 2c88: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 2c8c: 48 03 42 10 add 0x10(%rdx),%rax 0.00 : 2c90: 49 3b 84 24 50 03 00 cmp 0x350(%r12),%rax 0.00 : 2c97: 00 0.00 : 2c98: 0f 82 43 fe ff ff jb 2ae1 0.00 : 2c9e: 49 89 84 24 50 03 00 mov %rax,0x350(%r12) 0.00 : 2ca5: 00 0.00 : 2ca6: e9 36 fe ff ff jmpq 2ae1 0.00 : 2cab: 48 89 f8 mov %rdi,%rax 0.00 : 2cae: 48 29 d0 sub %rdx,%rax 0.00 : 2cb1: 48 83 f8 0b cmp $0xb,%rax 0.00 : 2cb5: 0f 86 6e 07 00 00 jbe 3429 0.00 : 2cbb: 4c 89 c0 mov %r8,%rax 0.00 : 2cbe: 48 29 d0 sub %rdx,%rax 0.00 : 2cc1: 48 83 f8 0a cmp $0xa,%rax 0.00 : 2cc5: 0f 87 19 fc ff ff ja 28e4 0.00 : 2ccb: 4c 89 c8 mov %r9,%rax 0.00 : 2cce: 48 29 d0 sub %rdx,%rax 0.00 : 2cd1: 49 89 0c c6 mov %rcx,(%r14,%rax,8) 0.00 : 2cd5: e9 0a fc ff ff jmpq 28e4 0.00 : 2cda: 48 8b 05 ef bf 21 00 mov 0x21bfef(%rip),%rax # 21ecd0 <_rtld_global_ro+0xb0> 0.00 : 2ce1: 49 8b 4c 24 10 mov 0x10(%r12),%rcx 0.00 : 2ce6: 49 89 84 24 40 03 00 mov %rax,0x340(%r12) 0.00 : 2ced: 00 0.00 : 2cee: 49 2b 04 24 sub (%r12),%rax 0.00 : 2cf2: 49 01 84 24 48 03 00 add %rax,0x348(%r12) 0.00 : 2cf9: 00 0.00 : 2cfa: 49 01 84 24 50 03 00 add %rax,0x350(%r12) 0.00 : 2d01: 00 0.00 : 2d02: 48 01 c1 add %rax,%rcx 0.00 : 2d05: 48 85 c9 test %rcx,%rcx 0.00 : 2d08: 49 89 04 24 mov %rax,(%r12) 0.00 : 2d0c: 49 89 4c 24 10 mov %rcx,0x10(%r12) 0.00 : 2d11: 0f 84 07 03 00 00 je 301e 0.00 : 2d17: 48 8b 11 mov (%rcx),%rdx 0.00 : 2d1a: 48 85 d2 test %rdx,%rdx 0.00 : 2d1d: 74 61 je 2d80 0.00 : 2d1f: be ff ff ff 6f mov $0x6fffffff,%esi 0.00 : 2d24: bf ff fd ff 6f mov $0x6ffffdff,%edi 0.00 : 2d29: 41 b8 ff fe ff 6f mov $0x6ffffeff,%r8d 0.00 : 2d2f: 41 b9 48 ff ff 6f mov $0x6fffff48,%r9d 0.00 : 2d35: 41 ba 3c fe ff 6f mov $0x6ffffe3c,%r10d 0.00 : 2d3b: 41 bb 29 00 00 70 mov $0x70000029,%r11d 0.00 : 2d41: eb 11 jmp 2d54 0.00 : 2d43: 49 89 4c d4 40 mov %rcx,0x40(%r12,%rdx,8) 8.33 : 2d48: 48 83 c1 10 add $0x10,%rcx 0.00 : 2d4c: 48 8b 11 mov (%rcx),%rdx 0.00 : 2d4f: 48 85 d2 test %rdx,%rdx 0.00 : 2d52: 74 2c je 2d80 0.00 : 2d54: 48 83 fa 21 cmp $0x21,%rdx 0.00 : 2d58: 76 e9 jbe 2d43 0.00 : 2d5a: 48 89 f0 mov %rsi,%rax 0.00 : 2d5d: 48 29 d0 sub %rdx,%rax 0.00 : 2d60: 48 83 f8 0f cmp $0xf,%rax 0.00 : 2d64: 0f 87 4e 06 00 00 ja 33b8 0.00 : 2d6a: 4c 89 d8 mov %r11,%rax 0.00 : 2d6d: 48 29 d0 sub %rdx,%rax 0.00 : 2d70: 49 89 0c c4 mov %rcx,(%r12,%rax,8) 0.00 : 2d74: 48 83 c1 10 add $0x10,%rcx 0.00 : 2d78: 48 8b 11 mov (%rcx),%rdx 0.00 : 2d7b: 48 85 d2 test %rdx,%rdx 0.00 : 2d7e: 75 d4 jne 2d54 0.00 : 2d80: 49 8b 34 24 mov (%r12),%rsi 0.00 : 2d84: 48 85 f6 test %rsi,%rsi 0.00 : 2d87: 0f 84 e5 01 00 00 je 2f72 0.00 : 2d8d: 49 8b 44 24 60 mov 0x60(%r12),%rax 0.00 : 2d92: 31 c9 xor %ecx,%ecx 0.00 : 2d94: 48 85 c0 test %rax,%rax 0.00 : 2d97: 74 2f je 2dc8 0.00 : 2d99: 48 8b 00 mov (%rax),%rax 0.00 : 2d9c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 2da1: 48 89 05 98 bf 21 00 mov %rax,0x21bf98(%rip) # 21ed40 0.00 : 2da8: 49 8b 44 24 60 mov 0x60(%r12),%rax 0.00 : 2dad: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 2db1: 48 8d 04 3e lea (%rsi,%rdi,1),%rax 0.00 : 2db5: 48 89 05 8c bf 21 00 mov %rax,0x21bf8c(%rip) # 21ed48 0.00 : 2dbc: 48 8d 05 7d bf 21 00 lea 0x21bf7d(%rip),%rax # 21ed40 0.00 : 2dc3: 49 89 44 24 60 mov %rax,0x60(%r12) 0.00 : 2dc8: 49 8b 7c 24 58 mov 0x58(%r12),%rdi 0.00 : 2dcd: 48 85 ff test %rdi,%rdi 0.00 : 2dd0: 74 30 je 2e02 0.00 : 2dd2: 48 63 c1 movslq %ecx,%rax 0.00 : 2dd5: 48 8d 15 64 bf 21 00 lea 0x21bf64(%rip),%rdx # 21ed40 0.00 : 2ddc: 83 c1 01 add $0x1,%ecx 0.00 : 2ddf: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2de3: 48 01 c2 add %rax,%rdx 0.00 : 2de6: 48 8b 07 mov (%rdi),%rax 0.00 : 2de9: 48 89 02 mov %rax,(%rdx) 0.00 : 2dec: 49 8b 44 24 58 mov 0x58(%r12),%rax 0.00 : 2df1: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 2df5: 48 8d 04 1e lea (%rsi,%rbx,1),%rax 0.00 : 2df9: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 2dfd: 49 89 54 24 58 mov %rdx,0x58(%r12) 0.00 : 2e02: 49 8b 7c 24 68 mov 0x68(%r12),%rdi 0.00 : 2e07: 48 85 ff test %rdi,%rdi 0.00 : 2e0a: 74 30 je 2e3c 0.00 : 2e0c: 48 63 c1 movslq %ecx,%rax 8.33 : 2e0f: 48 8d 15 2a bf 21 00 lea 0x21bf2a(%rip),%rdx # 21ed40 0.00 : 2e16: 83 c1 01 add $0x1,%ecx 0.00 : 2e19: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2e1d: 48 01 c2 add %rax,%rdx 0.00 : 2e20: 48 8b 07 mov (%rdi),%rax 0.00 : 2e23: 48 89 02 mov %rax,(%rdx) 0.00 : 2e26: 49 8b 44 24 68 mov 0x68(%r12),%rax 0.00 : 2e2b: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 2e2f: 48 8d 04 3e lea (%rsi,%rdi,1),%rax 0.00 : 2e33: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 2e37: 49 89 54 24 68 mov %rdx,0x68(%r12) 0.00 : 2e3c: 49 8b 7c 24 70 mov 0x70(%r12),%rdi 0.00 : 2e41: 48 85 ff test %rdi,%rdi 0.00 : 2e44: 74 30 je 2e76 0.00 : 2e46: 48 63 c1 movslq %ecx,%rax 0.00 : 2e49: 48 8d 15 f0 be 21 00 lea 0x21bef0(%rip),%rdx # 21ed40 0.00 : 2e50: 83 c1 01 add $0x1,%ecx 0.00 : 2e53: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2e57: 48 01 c2 add %rax,%rdx 0.00 : 2e5a: 48 8b 07 mov (%rdi),%rax 0.00 : 2e5d: 48 89 02 mov %rax,(%rdx) 0.00 : 2e60: 49 8b 44 24 70 mov 0x70(%r12),%rax 0.00 : 2e65: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 2e69: 48 8d 04 1e lea (%rsi,%rbx,1),%rax 0.00 : 2e6d: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 2e71: 49 89 54 24 70 mov %rdx,0x70(%r12) 0.00 : 2e76: 49 8b 7c 24 78 mov 0x78(%r12),%rdi 0.00 : 2e7b: 48 85 ff test %rdi,%rdi 0.00 : 2e7e: 74 30 je 2eb0 0.00 : 2e80: 48 63 c1 movslq %ecx,%rax 0.00 : 2e83: 48 8d 15 b6 be 21 00 lea 0x21beb6(%rip),%rdx # 21ed40 0.00 : 2e8a: 83 c1 01 add $0x1,%ecx 0.00 : 2e8d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2e91: 48 01 c2 add %rax,%rdx 0.00 : 2e94: 48 8b 07 mov (%rdi),%rax 0.00 : 2e97: 48 89 02 mov %rax,(%rdx) 0.00 : 2e9a: 49 8b 44 24 78 mov 0x78(%r12),%rax 0.00 : 2e9f: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 2ea3: 48 8d 04 3e lea (%rsi,%rdi,1),%rax 0.00 : 2ea7: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 2eab: 49 89 54 24 78 mov %rdx,0x78(%r12) 0.00 : 2eb0: 49 8b bc 24 f8 00 00 mov 0xf8(%r12),%rdi 0.00 : 2eb7: 00 0.00 : 2eb8: 48 85 ff test %rdi,%rdi 0.00 : 2ebb: 74 36 je 2ef3 0.00 : 2ebd: 48 63 c1 movslq %ecx,%rax 0.00 : 2ec0: 48 8d 15 79 be 21 00 lea 0x21be79(%rip),%rdx # 21ed40 0.00 : 2ec7: 83 c1 01 add $0x1,%ecx 0.00 : 2eca: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2ece: 48 01 c2 add %rax,%rdx 0.00 : 2ed1: 48 8b 07 mov (%rdi),%rax 0.00 : 2ed4: 48 89 02 mov %rax,(%rdx) 0.00 : 2ed7: 49 8b 84 24 f8 00 00 mov 0xf8(%r12),%rax 0.00 : 2ede: 00 0.00 : 2edf: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 2ee3: 48 8d 04 1e lea (%rsi,%rbx,1),%rax 0.00 : 2ee7: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 2eeb: 49 89 94 24 f8 00 00 mov %rdx,0xf8(%r12) 0.00 : 2ef2: 00 0.00 : 2ef3: 49 8b bc 24 c8 01 00 mov 0x1c8(%r12),%rdi 0.00 : 2efa: 00 0.00 : 2efb: 48 85 ff test %rdi,%rdi 0.00 : 2efe: 74 36 je 2f36 0.00 : 2f00: 48 63 c1 movslq %ecx,%rax 0.00 : 2f03: 48 8d 15 36 be 21 00 lea 0x21be36(%rip),%rdx # 21ed40 0.00 : 2f0a: 83 c1 01 add $0x1,%ecx 0.00 : 2f0d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2f11: 48 01 c2 add %rax,%rdx 0.00 : 2f14: 48 8b 07 mov (%rdi),%rax 0.00 : 2f17: 48 89 02 mov %rax,(%rdx) 0.00 : 2f1a: 49 8b 84 24 c8 01 00 mov 0x1c8(%r12),%rax 0.00 : 2f21: 00 0.00 : 2f22: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 2f26: 48 8d 04 3e lea (%rsi,%rdi,1),%rax 0.00 : 2f2a: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 2f2e: 49 89 94 24 c8 01 00 mov %rdx,0x1c8(%r12) 0.00 : 2f35: 00 0.00 : 2f36: 49 8b bc 24 98 02 00 mov 0x298(%r12),%rdi 0.00 : 2f3d: 00 0.00 : 2f3e: 48 85 ff test %rdi,%rdi 0.00 : 2f41: 74 2f je 2f72 0.00 : 2f43: 48 63 c1 movslq %ecx,%rax 0.00 : 2f46: 48 8d 15 f3 bd 21 00 lea 0x21bdf3(%rip),%rdx # 21ed40 0.00 : 2f4d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2f51: 48 01 c2 add %rax,%rdx 0.00 : 2f54: 48 8b 07 mov (%rdi),%rax 0.00 : 2f57: 48 89 02 mov %rax,(%rdx) 0.00 : 2f5a: 49 8b 84 24 98 02 00 mov 0x298(%r12),%rax 0.00 : 2f61: 00 0.00 : 2f62: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : 2f66: 48 89 72 08 mov %rsi,0x8(%rdx) 0.00 : 2f6a: 49 89 94 24 98 02 00 mov %rdx,0x298(%r12) 0.00 : 2f71: 00 0.00 : 2f72: 49 8b 84 24 e0 00 00 mov 0xe0(%r12),%rax 0.00 : 2f79: 00 0.00 : 2f7a: 48 85 c0 test %rax,%rax 0.00 : 2f7d: 74 0b je 2f8a 0.00 : 2f7f: 48 83 78 08 07 cmpq $0x7,0x8(%rax) 0.00 : 2f84: 0f 85 1e 0f 00 00 jne 3ea8 0.00 : 2f8a: 49 83 7c 24 78 00 cmpq $0x0,0x78(%r12) 0.00 : 2f90: 74 13 je 2fa5 0.00 : 2f92: 49 8b 84 24 88 00 00 mov 0x88(%r12),%rax 0.00 : 2f99: 00 0.00 : 2f9a: 48 83 78 08 18 cmpq $0x18,0x8(%rax) 0.00 : 2f9f: 0f 85 22 0f 00 00 jne 3ec7 0.00 : 2fa5: 49 8b 94 24 30 01 00 mov 0x130(%r12),%rdx 0.00 : 2fac: 00 0.00 : 2fad: 48 85 d2 test %rdx,%rdx 0.00 : 2fb0: 74 34 je 2fe6 0.00 : 2fb2: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 2fb6: a8 02 test $0x2,%al 0.00 : 2fb8: 41 89 84 24 e0 03 00 mov %eax,0x3e0(%r12) 0.00 : 2fbf: 00 0.00 : 2fc0: 74 08 je 2fca 0.00 : 2fc2: 49 89 94 24 c0 00 00 mov %rdx,0xc0(%r12) 0.00 : 2fc9: 00 0.00 : 2fca: 41 8b 84 24 e0 03 00 mov 0x3e0(%r12),%eax 0.00 : 2fd1: 00 0.00 : 2fd2: a8 04 test $0x4,%al 0.00 : 2fd4: 74 08 je 2fde 0.00 : 2fd6: 49 89 94 24 f0 00 00 mov %rdx,0xf0(%r12) 0.00 : 2fdd: 00 0.00 : 2fde: a8 08 test $0x8,%al 0.00 : 2fe0: 0f 85 36 04 00 00 jne 341c 0.00 : 2fe6: 49 8b 94 24 70 01 00 mov 0x170(%r12),%rdx 0.00 : 2fed: 00 0.00 : 2fee: 48 85 d2 test %rdx,%rdx 0.00 : 2ff1: 74 14 je 3007 0.00 : 2ff3: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 2ff7: a8 01 test $0x1,%al 0.00 : 2ff9: 41 89 84 24 dc 03 00 mov %eax,0x3dc(%r12) 0.00 : 3000: 00 0.00 : 3001: 0f 85 08 04 00 00 jne 340f 0.00 : 3007: 49 83 bc 24 28 01 00 cmpq $0x0,0x128(%r12) 0.00 : 300e: 00 00 0.00 : 3010: 74 0c je 301e 0.00 : 3012: 49 c7 84 24 b8 00 00 movq $0x0,0xb8(%r12) 0.00 : 3019: 00 00 00 00 00 0.00 : 301e: 4c 89 e7 mov %r12,%rdi 0.00 : 3021: e8 1a 60 00 00 callq 9040 <_dl_setup_hash> 0.00 : 3026: 49 8b 84 24 88 03 00 mov 0x388(%r12),%rax 0.00 : 302d: 00 0.00 : 302e: 41 80 8c 24 14 03 00 orb $0x4,0x314(%r12) 0.00 : 3035: 00 04 0.00 : 3037: c7 40 08 01 00 00 00 movl $0x1,0x8(%rax) 0.00 : 303e: 49 8d 44 24 28 lea 0x28(%r12),%rax 0.00 : 3043: 49 8b 94 24 88 03 00 mov 0x388(%r12),%rdx 0.00 : 304a: 00 0.00 : 304b: 48 89 02 mov %rax,(%rdx) 0.00 : 304e: 49 8b 94 24 b0 00 00 mov 0xb0(%r12),%rdx 0.00 : 3055: 00 0.00 : 3056: 48 85 d2 test %rdx,%rdx 0.00 : 3059: 74 3f je 309a 0.00 : 305b: 49 8b 44 24 68 mov 0x68(%r12),%rax 0.00 : 3060: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 3064: 4c 03 6a 08 add 0x8(%rdx),%r13 0.00 : 3068: 4c 89 ef mov %r13,%rdi 0.00 : 306b: e8 00 37 01 00 callq 16770 <__GI_strlen> 0.00 : 3070: 48 89 c7 mov %rax,%rdi 0.00 : 3073: 49 89 c7 mov %rax,%r15 0.00 : 3076: e8 35 da ff ff callq ab0 0.00 : 307b: 48 85 c0 test %rax,%rax 0.00 : 307e: 48 89 c7 mov %rax,%rdi 0.00 : 3081: 0f 84 69 03 00 00 je 33f0 0.00 : 3087: 49 8b 5c 24 38 mov 0x38(%r12),%rbx 0.00 : 308c: 4c 89 fa mov %r15,%rdx 0.00 : 308f: 4c 89 ee mov %r13,%rsi 0.00 : 3092: e8 59 42 01 00 callq 172f0 0.00 : 3097: 48 89 03 mov %rax,(%rbx) 0.00 : 309a: 31 f6 xor %esi,%esi 0.00 : 309c: 4c 89 e7 mov %r12,%rdi 0.00 : 309f: e8 5c 79 00 00 callq aa00 <_dl_add_to_namespace_list> 0.00 : 30a4: 49 83 7c 24 18 00 cmpq $0x0,0x18(%r12) 0.00 : 30aa: 0f 85 10 0d 00 00 jne 3dc0 0.00 : 30b0: 4d 39 74 24 20 cmp %r14,0x20(%r12) 0.00 : 30b5: 0f 85 e6 0c 00 00 jne 3da1 0.00 : 30bb: 48 8d 05 0e c9 21 00 lea 0x21c90e(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 30c2: 49 8d 54 24 18 lea 0x18(%r12),%rdx 0.00 : 30c7: 4c 89 25 1a c9 21 00 mov %r12,0x21c91a(%rip) # 21f9e8 <_rtld_global+0x988> 0.00 : 30ce: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 30d3: 48 89 95 18 ff ff ff mov %rdx,-0xe8(%rbp) 0.00 : 30da: 4c 89 25 f7 bb 21 00 mov %r12,0x21bbf7(%rip) # 21ecd8 <_rtld_global_ro+0xb8> 0.00 : 30e1: e8 7a 0e 01 00 callq 13f60 <_dl_discover_osversion> 0.00 : 30e6: 85 c0 test %eax,%eax 0.00 : 30e8: 0f 88 5a 0d 00 00 js 3e48 0.00 : 30ee: 8b 15 30 bb 21 00 mov 0x21bb30(%rip),%edx # 21ec24 <_rtld_global_ro+0x4> 0.00 : 30f4: 85 d2 test %edx,%edx 0.00 : 30f6: 0f 85 5c 0c 00 00 jne 3d58 0.00 : 30fc: 89 05 22 bb 21 00 mov %eax,0x21bb22(%rip) # 21ec24 <_rtld_global_ro+0x4> 0.00 : 3102: 3d 03 06 02 00 cmp $0x20603,%eax 0.00 : 3107: 48 8d 35 74 66 01 00 lea 0x16674(%rip),%rsi # 19782 0.00 : 310e: 0f 8e 3b 0d 00 00 jle 3e4f 0.00 : 3114: 48 8b 3d b5 bc 21 00 mov 0x21bcb5(%rip),%rdi # 21edd0 0.00 : 311b: e8 20 53 00 00 callq 8440 <_dl_init_paths> 0.00 : 3120: 48 8b 3d a9 c8 21 00 mov 0x21c8a9(%rip),%rdi # 21f9d0 <_rtld_global+0x970> 0.00 : 3127: 31 f6 xor %esi,%esi 0.00 : 3129: e8 32 b9 00 00 callq ea60 <_dl_debug_initialize> 0.00 : 312e: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) 0.00 : 3135: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) 0.00 : 313c: 48 83 3d 94 c8 21 00 cmpq $0x0,0x21c894(%rip) # 21f9d8 <_rtld_global+0x978> 0.00 : 3143: 00 0.00 : 3144: 0f 84 77 0a 00 00 je 3bc1 0.00 : 314a: 0f b6 05 93 cb 21 00 movzbl 0x21cb93(%rip),%eax # 21fce4 <_rtld_global+0xc84> 0.00 : 3151: 48 8d 0d 78 c8 21 00 lea 0x21c878(%rip),%rcx # 21f9d0 <_rtld_global+0x970> 0.00 : 3158: 83 e0 fc and $0xfffffffc,%eax 0.00 : 315b: 83 c8 01 or $0x1,%eax 0.00 : 315e: 88 05 80 cb 21 00 mov %al,0x21cb80(%rip) # 21fce4 <_rtld_global+0xc84> 0.00 : 3164: 49 89 4e 18 mov %rcx,0x18(%r14) 0.00 : 3168: 83 05 f9 be 21 00 01 addl $0x1,0x21bef9(%rip) # 21f068 <_rtld_global+0x8> 0.00 : 316f: 48 83 05 19 c8 21 00 addq $0x1,0x21c819(%rip) # 21f990 <_rtld_global+0x930> 0.00 : 3176: 01 0.00 : 3177: 48 83 3d 19 bb 21 00 cmpq $0xfffffffffffffffe,0x21bb19(%rip) # 21ec98 <_rtld_global_ro+0x78> 0.00 : 317e: fe 0.00 : 317f: 4c 89 35 6a c8 21 00 mov %r14,0x21c86a(%rip) # 21f9f0 <_rtld_global+0x990> 0.00 : 3186: 0f 84 22 0a 00 00 je 3bae 0.00 : 318c: 48 8b 05 7d cb 21 00 mov 0x21cb7d(%rip),%rax # 21fd10 <_rtld_global+0xcb0> 0.00 : 3193: 48 89 c1 mov %rax,%rcx 0.00 : 3196: 48 03 48 20 add 0x20(%rax),%rcx 0.00 : 319a: 48 89 0d cf ca 21 00 mov %rcx,0x21cacf(%rip) # 21fc70 <_rtld_global+0xc10> 0.00 : 31a1: 0f b7 50 38 movzwl 0x38(%rax),%edx 0.00 : 31a5: 66 89 15 d4 ca 21 00 mov %dx,0x21cad4(%rip) # 21fc80 <_rtld_global+0xc20> 0.00 : 31ac: 0f b7 70 38 movzwl 0x38(%rax),%esi 0.00 : 31b0: 48 8d 14 f5 00 00 00 lea 0x0(,%rsi,8),%rdx 0.00 : 31b7: 00 0.00 : 31b8: 48 89 f0 mov %rsi,%rax 0.00 : 31bb: 48 c1 e0 06 shl $0x6,%rax 0.00 : 31bf: 48 29 d0 sub %rdx,%rax 0.00 : 31c2: 48 8d 54 01 c8 lea -0x38(%rcx,%rax,1),%rdx 0.00 : 31c7: 48 85 f6 test %rsi,%rsi 0.00 : 31ca: 74 2a je 31f6 0.00 : 31cc: 8b 02 mov (%rdx),%eax 0.00 : 31ce: 48 83 ee 01 sub $0x1,%rsi 0.00 : 31d2: 48 89 d1 mov %rdx,%rcx 0.00 : 31d5: 48 83 ea 38 sub $0x38,%rdx 0.00 : 31d9: 3d 52 e5 74 64 cmp $0x6474e552,%eax 0.00 : 31de: 75 e7 jne 31c7 0.00 : 31e0: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 31e4: 48 89 05 3d cc 21 00 mov %rax,0x21cc3d(%rip) # 21fe28 <_rtld_global+0xdc8> 0.00 : 31eb: 48 8b 41 28 mov 0x28(%rcx),%rax 0.00 : 31ef: 48 89 05 3a cc 21 00 mov %rax,0x21cc3a(%rip) # 21fe30 <_rtld_global+0xdd0> 0.00 : 31f6: 48 83 3d 02 cc 21 00 cmpq $0x0,0x21cc02(%rip) # 21fe00 <_rtld_global+0xda0> 0.00 : 31fd: 00 0.00 : 31fe: 0f 85 99 09 00 00 jne 3b9d 0.00 : 3204: 48 8b 05 15 ce 21 00 mov 0x21ce15(%rip),%rax # 220020 0.00 : 320b: 48 c7 85 10 ff ff ff movq $0x0,-0xf0(%rbp) 0.00 : 3212: 00 00 00 00 0.00 : 3216: 48 85 c0 test %rax,%rax 0.00 : 3219: 0f 85 c7 0c 00 00 jne 3ee6 0.00 : 321f: 49 8b 86 e8 00 00 00 mov 0xe8(%r14),%rax 0.00 : 3226: 48 85 c0 test %rax,%rax 0.00 : 3229: 74 0b je 3236 0.00 : 322b: 48 8b 9d 20 ff ff ff mov -0xe0(%rbp),%rbx 0.00 : 3232: 48 89 58 08 mov %rbx,0x8(%rax) 8.33 : 3236: 48 8b 05 7b c8 21 00 mov 0x21c87b(%rip),%rax # 21fab8 <_rtld_global+0xa58> 0.00 : 323d: 48 85 c0 test %rax,%rax 0.00 : 3240: 74 0b je 324d 0.00 : 3242: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 3249: 48 89 70 08 mov %rsi,0x8(%rax) 0.00 : 324d: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi 0.00 : 3254: c7 47 18 01 00 00 00 movl $0x1,0x18(%rdi) 0.00 : 325b: e8 90 b8 00 00 callq eaf0 <_dl_debug_state> 0.00 : 3260: 44 8b 15 d1 ba 21 00 mov 0x21bad1(%rip),%r10d # 21ed38 <_rtld_global_ro+0x118> 0.00 : 3267: 45 85 d2 test %r10d,%r10d 0.00 : 326a: 0f 85 f5 0a 00 00 jne 3d65 0.00 : 3270: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : 3277: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 327b: 0f 85 75 09 00 00 jne 3bf6 0.00 : 3281: 48 8b 1d 50 bb 21 00 mov 0x21bb50(%rip),%rbx # 21edd8 0.00 : 3288: 45 31 ff xor %r15d,%r15d 0.00 : 328b: 48 85 db test %rbx,%rbx 0.00 : 328e: 0f 85 81 09 00 00 jne 3c15 0.00 : 3294: 48 8d 3d 55 94 01 00 lea 0x19455(%rip),%rdi # 1c6f0 0.00 : 329b: be 04 00 00 00 mov $0x4,%esi 0.00 : 32a0: e8 6b 2d 01 00 callq 16010 <__access> 0.00 : 32a5: 85 c0 test %eax,%eax 0.00 : 32a7: 0f 84 0f 0a 00 00 je 3cbc 0.00 : 32ad: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 8.33 : 32b4: 31 f6 xor %esi,%esi 0.00 : 32b6: 48 8b 39 mov (%rcx),%rdi 0.00 : 32b9: 48 85 ff test %rdi,%rdi 0.00 : 32bc: 0f 85 d8 0f 00 00 jne 429a 0.00 : 32c2: 0f 31 rdtsc 0.00 : 32c4: 31 c9 xor %ecx,%ecx 0.00 : 32c6: 83 7d c8 03 cmpl $0x3,-0x38(%rbp) 0.00 : 32ca: 41 89 d4 mov %edx,%r12d 0.00 : 32cd: 4c 89 f7 mov %r14,%rdi 0.00 : 32d0: 44 89 fa mov %r15d,%edx 0.00 : 32d3: 89 c3 mov %eax,%ebx 0.00 : 32d5: 0f 94 c1 sete %cl 0.00 : 32d8: 45 31 c0 xor %r8d,%r8d 0.00 : 32db: e8 60 8f 00 00 callq c240 <_dl_map_object_deps> 0.00 : 32e0: 0f 31 rdtsc 0.00 : 32e2: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 32e6: 89 c0 mov %eax,%eax 0.00 : 32e8: 89 d9 mov %ebx,%ecx 0.00 : 32ea: 48 09 c2 or %rax,%rdx 0.00 : 32ed: 48 03 15 cc ba 21 00 add 0x21bacc(%rip),%rdx # 21edc0 0.00 : 32f4: 4c 89 e0 mov %r12,%rax 0.00 : 32f7: 48 c1 e0 20 shl $0x20,%rax 0.00 : 32fb: 48 09 c8 or %rcx,%rax 0.00 : 32fe: 48 29 c2 sub %rax,%rdx 0.00 : 3301: 48 89 15 b8 ba 21 00 mov %rdx,0x21bab8(%rip) # 21edc0 0.00 : 3308: 41 8b 8e c0 02 00 00 mov 0x2c0(%r14),%ecx 0.00 : 330f: 85 c9 test %ecx,%ecx 0.00 : 3311: 74 1b je 332e 0.00 : 3313: 49 8b 86 b8 02 00 00 mov 0x2b8(%r14),%rax 0.00 : 331a: 83 e9 01 sub $0x1,%ecx 0.00 : 331d: 89 ca mov %ecx,%edx 0.00 : 331f: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 3323: 80 88 14 03 00 00 10 orb $0x10,0x314(%rax) 0.00 : 332a: 85 c9 test %ecx,%ecx 0.00 : 332c: 75 e5 jne 3313 0.00 : 332e: 48 8b 15 b3 c6 21 00 mov 0x21c6b3(%rip),%rdx # 21f9e8 <_rtld_global+0x988> 0.00 : 3335: 48 8b 05 b4 c6 21 00 mov 0x21c6b4(%rip),%rax # 21f9f0 <_rtld_global+0x990> 0.00 : 333c: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 3340: 48 8b 15 a1 c6 21 00 mov 0x21c6a1(%rip),%rdx # 21f9e8 <_rtld_global+0x988> 0.00 : 3347: 48 85 d2 test %rdx,%rdx 0.00 : 334a: 74 0b je 3357 0.00 : 334c: 48 8b 05 9d c6 21 00 mov 0x21c69d(%rip),%rax # 21f9f0 <_rtld_global+0x990> 0.00 : 3353: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 3357: 41 8b be c0 02 00 00 mov 0x2c0(%r14),%edi 0.00 : 335e: 83 ff 01 cmp $0x1,%edi 0.00 : 3361: 76 44 jbe 33a7 0.00 : 3363: 49 8b b6 b8 02 00 00 mov 0x2b8(%r14),%rsi 0.00 : 336a: 48 8d 1d 5f c6 21 00 lea 0x21c65f(%rip),%rbx # 21f9d0 <_rtld_global+0x970> 0.00 : 3371: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3376: 48 39 5e 08 cmp %rbx,0x8(%rsi) 0.00 : 337a: 48 89 f1 mov %rsi,%rcx 0.00 : 337d: 75 21 jne 33a0 0.00 : 337f: e9 b8 0a 00 00 jmpq 3e3c 0.00 : 3384: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 3388: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 338c: 48 8d 1d 3d c6 21 00 lea 0x21c63d(%rip),%rbx # 21f9d0 <_rtld_global+0x970> 0.00 : 3393: 48 83 c1 08 add $0x8,%rcx 0.00 : 3397: 48 39 d8 cmp %rbx,%rax 0.00 : 339a: 0f 84 1f 01 00 00 je 34bf 0.00 : 33a0: 83 c2 01 add $0x1,%edx 0.00 : 33a3: 39 d7 cmp %edx,%edi 0.00 : 33a5: 77 e1 ja 3388 0.00 : 33a7: c6 85 2e ff ff ff 00 movb $0x0,-0xd2(%rbp) 0.00 : 33ae: e9 c5 01 00 00 jmpq 3578 0.00 : 33b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 33b8: 8d 04 12 lea (%rdx,%rdx,1),%eax 0.00 : 33bb: d1 f8 sar %eax 0.00 : 33bd: 83 f8 fc cmp $0xfffffffc,%eax 0.00 : 33c0: 76 0f jbe 33d1 0.00 : 33c2: f7 d0 not %eax 0.00 : 33c4: 83 c0 32 add $0x32,%eax 0.00 : 33c7: 49 89 4c c4 40 mov %rcx,0x40(%r12,%rax,8) 0.00 : 33cc: e9 77 f9 ff ff jmpq 2d48 0.00 : 33d1: 48 89 f8 mov %rdi,%rax 0.00 : 33d4: 48 29 d0 sub %rdx,%rax 0.00 : 33d7: 48 83 f8 0b cmp $0xb,%rax 0.00 : 33db: 0f 87 55 07 00 00 ja 3b36 0.00 : 33e1: 4c 89 d0 mov %r10,%rax 0.00 : 33e4: 48 29 d0 sub %rdx,%rax 0.00 : 33e7: 49 89 0c c4 mov %rcx,(%r12,%rax,8) 0.00 : 33eb: e9 58 f9 ff ff jmpq 2d48 0.00 : 33f0: 48 8d 35 4d 63 01 00 lea 0x1634d(%rip),%rsi # 19744 0.00 : 33f7: bf 02 00 00 00 mov $0x2,%edi 0.00 : 33fc: 31 c0 xor %eax,%eax 0.00 : 33fe: e8 fd bd 00 00 callq f200 <_dl_dprintf> 0.00 : 3403: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 3408: e8 b3 2e 01 00 callq 162c0 <_Exit> 0.00 : 340d: eb e1 jmp 33f0 0.00 : 340f: 49 89 94 24 00 01 00 mov %rdx,0x100(%r12) 0.00 : 3416: 00 0.00 : 3417: e9 eb fb ff ff jmpq 3007 0.00 : 341c: 49 89 94 24 00 01 00 mov %rdx,0x100(%r12) 0.00 : 3423: 00 0.00 : 3424: e9 bd fb ff ff jmpq 2fe6 0.00 : 3429: 4c 89 d0 mov %r10,%rax 0.00 : 342c: 48 29 d0 sub %rdx,%rax 0.00 : 342f: 49 89 0c c6 mov %rcx,(%r14,%rax,8) 0.00 : 3433: e9 ac f4 ff ff jmpq 28e4 0.00 : 3438: 48 89 1d c1 cb 21 00 mov %rbx,0x21cbc1(%rip) # 220000 <_edata> 0.00 : 343f: 48 c7 05 be cb 21 00 movq $0x0,0x21cbbe(%rip) # 220008 <_edata+0x8> 0.00 : 3446: 00 00 00 00 0.00 : 344a: c7 05 bc cb 21 00 01 movl $0x1,0x21cbbc(%rip) # 220010 <_edata+0x10> 0.00 : 3451: 00 00 00 0.00 : 3454: 49 83 7c 24 08 00 cmpq $0x0,0x8(%r12) 0.00 : 345a: 0f 85 77 07 00 00 jne 3bd7 0.00 : 3460: 48 8d 15 99 cb 21 00 lea 0x21cb99(%rip),%rdx # 220000 <_edata> 0.00 : 3467: 49 89 54 24 08 mov %rdx,0x8(%r12) 0.00 : 346c: e9 1e f4 ff ff jmpq 288f 0.00 : 3471: 49 c7 86 40 04 00 00 movq $0x0,0x440(%r14) 0.00 : 3478: 00 00 00 00 0.00 : 347c: e9 51 f3 ff ff jmpq 27d2 0.00 : 3481: 49 8b 42 10 mov 0x10(%r10),%rax 0.00 : 3485: 83 05 60 b9 21 00 02 addl $0x2,0x21b960(%rip) # 21edec <_dl_skip_args> 0.00 : 348c: 83 2d 55 b9 21 00 02 subl $0x2,0x21b955(%rip) # 21ede8 <_dl_argc> 0.00 : 3493: 48 83 05 6d b7 21 00 addq $0x10,0x21b76d(%rip) # 21ec08 <_dl_argv> 0.00 : 349a: 10 0.00 : 349b: 48 89 05 e6 b7 21 00 mov %rax,0x21b7e6(%rip) # 21ec88 <_rtld_global_ro+0x68> 0.00 : 34a2: e9 67 f0 ff ff jmpq 250e 0.00 : 34a7: 49 89 96 00 01 00 00 mov %rdx,0x100(%r14) 0.00 : 34ae: e9 6d f5 ff ff jmpq 2a20 0.00 : 34b3: 49 89 96 00 01 00 00 mov %rdx,0x100(%r14) 0.00 : 34ba: e9 42 f5 ff ff jmpq 2a01 8.33 : 34bf: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 34c2: 48 c1 e0 03 shl $0x3,%rax 0.00 : 34c6: 44 8b 45 c8 mov -0x38(%rbp),%r8d 0.00 : 34ca: 48 8b 0c 06 mov (%rsi,%rax,1),%rcx 0.00 : 34ce: 45 85 c0 test %r8d,%r8d 0.00 : 34d1: 48 89 0d 18 c5 21 00 mov %rcx,0x21c518(%rip) # 21f9f0 <_rtld_global+0x990> 0.00 : 34d8: 0f 85 31 17 00 00 jne 4c0f 0.00 : 34de: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 34e1: 31 d2 xor %edx,%edx 0.00 : 34e3: 41 3b 86 c0 02 00 00 cmp 0x2c0(%r14),%eax 0.00 : 34ea: 73 0d jae 34f9 0.00 : 34ec: 89 c2 mov %eax,%edx 0.00 : 34ee: 49 8b 86 b8 02 00 00 mov 0x2b8(%r14),%rax 0.00 : 34f5: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 34f9: 48 8b 05 d8 b7 21 00 mov 0x21b7d8(%rip),%rax # 21ecd8 <_rtld_global_ro+0xb8> 0.00 : 3500: 48 89 15 e1 c4 21 00 mov %rdx,0x21c4e1(%rip) # 21f9e8 <_rtld_global+0x988> 0.00 : 3507: 48 85 c0 test %rax,%rax 0.00 : 350a: 0f 84 45 06 00 00 je 3b55 0.00 : 3510: 48 8b 35 d9 c4 21 00 mov 0x21c4d9(%rip),%rsi # 21f9f0 <_rtld_global+0x990> 0.00 : 3517: 48 8b 4e 18 mov 0x18(%rsi),%rcx 0.00 : 351b: 48 39 c8 cmp %rcx,%rax 0.00 : 351e: 0f 84 d2 16 00 00 je 4bf6 0.00 : 3524: 48 89 f0 mov %rsi,%rax 0.00 : 3527: 48 39 0d ba c4 21 00 cmp %rcx,0x21c4ba(%rip) # 21f9e8 <_rtld_global+0x988> 0.00 : 352e: 48 89 c6 mov %rax,%rsi 0.00 : 3531: 0f 85 a0 16 00 00 jne 4bd7 0.00 : 3537: 48 8d 3d 92 c4 21 00 lea 0x21c492(%rip),%rdi # 21f9d0 <_rtld_global+0x970> 0.00 : 353e: 48 89 7e 18 mov %rdi,0x18(%rsi) 0.00 : 3542: 48 8b 05 9f c4 21 00 mov 0x21c49f(%rip),%rax # 21f9e8 <_rtld_global+0x988> 0.00 : 3549: c6 85 2e ff ff ff 01 movb $0x1,-0xd2(%rbp) 0.00 : 3550: 48 85 c0 test %rax,%rax 0.00 : 3553: 74 23 je 3578 0.00 : 3555: 48 8b 15 94 c4 21 00 mov 0x21c494(%rip),%rdx # 21f9f0 <_rtld_global+0x990> 0.00 : 355c: 48 39 50 20 cmp %rdx,0x20(%rax) 0.00 : 3560: 0f 85 52 16 00 00 jne 4bb8 0.00 : 3566: 48 8d 0d 63 c4 21 00 lea 0x21c463(%rip),%rcx # 21f9d0 <_rtld_global+0x970> 0.00 : 356d: 48 89 48 20 mov %rcx,0x20(%rax) 0.00 : 3571: c6 85 2e ff ff ff 01 movb $0x1,-0xd2(%rbp) 0.00 : 3578: 31 c0 xor %eax,%eax 0.00 : 357a: 83 7d c8 00 cmpl $0x0,-0x38(%rbp) 0.00 : 357e: 48 8d 5d a0 lea -0x60(%rbp),%rbx 0.00 : 3582: 48 8d 35 67 17 00 00 lea 0x1767(%rip),%rsi # 4cf0 0.00 : 3589: 48 8d 3d 60 e2 ff ff lea -0x1da0(%rip),%rdi # 17f0 0.00 : 3590: 48 89 da mov %rbx,%rdx 0.00 : 3593: 48 89 9d 00 ff ff ff mov %rbx,-0x100(%rbp) 0.00 : 359a: 0f 94 c0 sete %al 0.00 : 359d: 89 45 a0 mov %eax,-0x60(%rbp) 0.00 : 35a0: 31 c0 xor %eax,%eax 0.00 : 35a2: 83 7d c8 03 cmpl $0x3,-0x38(%rbp) 0.00 : 35a6: 0f 94 c0 sete %al 0.00 : 35a9: 89 45 a4 mov %eax,-0x5c(%rbp) 0.00 : 35ac: e8 df a7 00 00 callq dd90 <_dl_receive_error> 0.00 : 35b1: 0f b6 35 b8 ca 21 00 movzbl 0x21cab8(%rip),%esi # 220070 0.00 : 35b8: 48 83 bd 10 ff ff ff cmpq $0x0,-0xf0(%rbp) 0.00 : 35bf: 00 0.00 : 35c0: 40 88 b5 2f ff ff ff mov %sil,-0xd1(%rbp) 0.00 : 35c7: 0f 84 dc 0e 00 00 je 44a9 0.00 : 35cd: 48 83 3d 4b ca 21 00 cmpq $0x0,0x21ca4b(%rip) # 220020 0.00 : 35d4: 00 0.00 : 35d5: 75 05 jne 35dc 0.00 : 35d7: e8 84 ed ff ff callq 2360 0.00 : 35dc: 8b 7d c8 mov -0x38(%rbp),%edi 0.00 : 35df: 85 ff test %edi,%edi 0.00 : 35e1: 0f 85 1a 0e 00 00 jne 4401 0.00 : 35e7: 49 8b 96 78 02 00 00 mov 0x278(%r14),%rdx 0.00 : 35ee: 48 85 d2 test %rdx,%rdx 0.00 : 35f1: 0f 84 e7 02 00 00 je 38de 0.00 : 35f7: 48 83 3d a1 b6 21 00 cmpq $0x0,0x21b6a1(%rip) # 21eca0 <_rtld_global_ro+0x80> 0.00 : 35fe: 00 0.00 : 35ff: 0f 85 d9 02 00 00 jne 38de 0.00 : 3605: 8b 05 5d b6 21 00 mov 0x21b65d(%rip),%eax # 21ec68 <_rtld_global_ro+0x48> 0.00 : 360b: 85 c0 test %eax,%eax 0.00 : 360d: 0f 85 cb 02 00 00 jne 38de 0.00 : 3613: 49 8b 46 68 mov 0x68(%r14),%rax 0.00 : 3617: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 361b: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 3622: 49 8b 86 28 02 00 00 mov 0x228(%r14),%rax 0.00 : 3629: 48 85 c0 test %rax,%rax 0.00 : 362c: 0f 84 f4 15 00 00 je 4c26 0.00 : 3632: 4c 8b 62 08 mov 0x8(%rdx),%r12 0.00 : 3636: 49 8b 9e b8 02 00 00 mov 0x2b8(%r14),%rbx 0.00 : 363d: 4d 89 e7 mov %r12,%r15 0.00 : 3640: 4c 03 78 08 add 0x8(%rax),%r15 0.00 : 3644: 41 8b 86 c0 02 00 00 mov 0x2c0(%r14),%eax 0.00 : 364b: 4c 8d 2c c3 lea (%rbx,%rax,8),%r13 0.00 : 364f: 4c 39 eb cmp %r13,%rbx 0.00 : 3652: 0f 82 d3 01 00 00 jb 382b 0.00 : 3658: 4c 39 eb cmp %r13,%rbx 0.00 : 365b: 41 0f 94 c5 sete %r13b 0.00 : 365f: 4d 39 fc cmp %r15,%r12 0.00 : 3662: 0f 94 c0 sete %al 0.00 : 3665: 41 21 c5 and %eax,%r13d 0.00 : 3668: f6 05 b1 b5 21 00 01 testb $0x1,0x21b5b1(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 366f: 0f 85 64 0d 00 00 jne 43d9 0.00 : 3675: 49 8d 86 b8 02 00 00 lea 0x2b8(%r14),%rax 0.00 : 367c: 45 84 ed test %r13b,%r13b 0.00 : 367f: 48 89 05 ea b9 21 00 mov %rax,0x21b9ea(%rip) # 21f070 <_rtld_global+0x10> 0.00 : 3686: 49 8b 86 b8 02 00 00 mov 0x2b8(%r14),%rax 0.00 : 368d: 48 89 05 ac b5 21 00 mov %rax,0x21b5ac(%rip) # 21ec40 <_rtld_global_ro+0x20> 0.00 : 3694: 49 8b 86 c0 02 00 00 mov 0x2c0(%r14),%rax 0.00 : 369b: 48 89 05 a6 b5 21 00 mov %rax,0x21b5a6(%rip) # 21ec48 <_rtld_global_ro+0x28> 0.00 : 36a2: 0f 84 60 02 00 00 je 3908 0.00 : 36a8: 49 8b 8e 80 02 00 00 mov 0x280(%r14),%rcx 0.00 : 36af: 48 85 c9 test %rcx,%rcx 0.00 : 36b2: 74 4b je 36ff 0.00 : 36b4: 0f 31 rdtsc 0.00 : 36b6: 89 c3 mov %eax,%ebx 0.00 : 36b8: 49 8b 86 30 02 00 00 mov 0x230(%r14),%rax 0.00 : 36bf: 41 89 d4 mov %edx,%r12d 0.00 : 36c2: 48 85 c0 test %rax,%rax 0.00 : 36c5: 0f 84 ce 14 00 00 je 4b99 0.00 : 36cb: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 36cf: 4c 89 f7 mov %r14,%rdi 0.00 : 36d2: 48 89 f2 mov %rsi,%rdx 0.00 : 36d5: 48 03 50 08 add 0x8(%rax),%rdx 0.00 : 36d9: e8 c2 d0 00 00 callq 107a0 <_dl_resolve_conflicts> 0.00 : 36de: 0f 31 rdtsc 0.00 : 36e0: 89 c0 mov %eax,%eax 0.00 : 36e2: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 36e6: 89 d9 mov %ebx,%ecx 0.00 : 36e8: 48 09 c2 or %rax,%rdx 0.00 : 36eb: 4c 89 e0 mov %r12,%rax 0.00 : 36ee: 48 c1 e0 20 shl $0x20,%rax 0.00 : 36f2: 48 09 c8 or %rcx,%rax 0.00 : 36f5: 48 29 c2 sub %rax,%rdx 0.00 : 36f8: 48 89 15 69 c9 21 00 mov %rdx,0x21c969(%rip) # 220068 0.00 : 36ff: 4c 89 f3 mov %r14,%rbx 0.00 : 3702: 80 8b 14 03 00 00 04 orb $0x4,0x314(%rbx) 0.00 : 3709: 48 83 bb 60 04 00 00 cmpq $0x0,0x460(%rbx) 0.00 : 3710: 00 0.00 : 3711: 74 08 je 371b 0.00 : 3713: 48 89 df mov %rbx,%rdi 0.00 : 3716: e8 55 77 00 00 callq ae70 <_dl_protect_relro> 0.00 : 371b: 48 83 bb 30 04 00 00 cmpq $0x0,0x430(%rbx) 0.00 : 3722: 00 0.00 : 3723: 74 11 je 3736 0.00 : 3725: 80 3d 44 c9 21 00 00 cmpb $0x0,0x21c944(%rip) # 220070 0.00 : 372c: 74 08 je 3736 0.00 : 372e: 48 89 df mov %rbx,%rdi 0.00 : 3731: e8 9a d3 00 00 callq 10ad0 <_dl_add_to_slotinfo> 0.00 : 3736: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 373a: 48 85 db test %rbx,%rbx 0.00 : 373d: 75 c3 jne 3702 0.00 : 373f: 80 bd 2f ff ff ff 00 cmpb $0x0,-0xd1(%rbp) 0.00 : 3746: 75 12 jne 375a 0.00 : 3748: 48 83 3d 10 c8 21 00 cmpq $0x0,0x21c810(%rip) # 21ff60 <_rtld_global+0xf00> 0.00 : 374f: 00 0.00 : 3750: 74 08 je 375a 0.00 : 3752: 48 83 05 3e c8 21 00 addq $0x1,0x21c83e(%rip) # 21ff98 <_rtld_global+0xf38> 0.00 : 3759: 01 0.00 : 375a: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 3761: e8 5a d4 00 00 callq 10bc0 <_dl_allocate_tls_init> 0.00 : 3766: 80 3d 03 c9 21 00 00 cmpb $0x0,0x21c903(%rip) # 220070 0.00 : 376d: 75 25 jne 3794 0.00 : 376f: 48 8b 9d 10 ff ff ff mov -0xf0(%rbp),%rbx 0.00 : 3776: bf 02 10 00 00 mov $0x1002,%edi 0.00 : 377b: b8 9e 00 00 00 mov $0x9e,%eax 0.00 : 3780: 48 89 1b mov %rbx,(%rbx) 0.00 : 3783: 48 89 5b 10 mov %rbx,0x10(%rbx) 0.00 : 3787: 48 89 de mov %rbx,%rsi 0.00 : 378a: 0f 05 syscall 0.00 : 378c: 85 c0 test %eax,%eax 0.00 : 378e: 0f 85 24 01 00 00 jne 38b8 0.00 : 3794: 45 84 ed test %r13b,%r13b 0.00 : 3797: 75 56 jne 37ef 0.00 : 3799: 80 bd 2e ff ff ff 00 cmpb $0x0,-0xd2(%rbp) 0.00 : 37a0: 74 4d je 37ef 0.00 : 37a2: 0f 31 rdtsc 0.00 : 37a4: 80 25 39 c5 21 00 fb andb $0xfb,0x21c539(%rip) # 21fce4 <_rtld_global+0xc84> 0.00 : 37ab: 48 8d 3d 1e c2 21 00 lea 0x21c21e(%rip),%rdi # 21f9d0 <_rtld_global+0x970> 0.00 : 37b2: 41 89 d4 mov %edx,%r12d 0.00 : 37b5: 49 8b b6 80 03 00 00 mov 0x380(%r14),%rsi 0.00 : 37bc: 31 c9 xor %ecx,%ecx 0.00 : 37be: 31 d2 xor %edx,%edx 0.00 : 37c0: 89 c3 mov %eax,%ebx 0.00 : 37c2: e8 a9 78 00 00 callq b070 <_dl_relocate_object> 8.33 : 37c7: 0f 31 rdtsc 0.00 : 37c9: 89 c0 mov %eax,%eax 0.00 : 37cb: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 37cf: 89 d9 mov %ebx,%ecx 0.00 : 37d1: 48 09 c2 or %rax,%rdx 0.00 : 37d4: 48 03 15 8d c8 21 00 add 0x21c88d(%rip),%rdx # 220068 0.00 : 37db: 4c 89 e0 mov %r12,%rax 0.00 : 37de: 48 c1 e0 20 shl $0x20,%rax 0.00 : 37e2: 48 09 c8 or %rcx,%rax 0.00 : 37e5: 48 29 c2 sub %rax,%rdx 0.00 : 37e8: 48 89 15 79 c8 21 00 mov %rdx,0x21c879(%rip) # 220068 0.00 : 37ef: e8 5c 07 01 00 callq 13f50 <_dl_sysdep_start_cleanup> 0.00 : 37f4: 8b 05 3e b5 21 00 mov 0x21b53e(%rip),%eax # 21ed38 <_rtld_global_ro+0x118> 0.00 : 37fa: 85 c0 test %eax,%eax 0.00 : 37fc: 0f 85 49 13 00 00 jne 4b4b 0.00 : 3802: 31 f6 xor %esi,%esi 0.00 : 3804: 31 ff xor %edi,%edi 0.00 : 3806: e8 55 b2 00 00 callq ea60 <_dl_debug_initialize> 0.00 : 380b: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) 0.00 : 3812: e8 d9 b2 00 00 callq eaf0 <_dl_debug_state> 0.00 : 3817: e8 94 51 00 00 callq 89b0 <_dl_unload_cache> 0.00 : 381c: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 3820: 5b pop %rbx 0.00 : 3821: 41 5c pop %r12 0.00 : 3823: 41 5d pop %r13 0.00 : 3825: 41 5e pop %r14 0.00 : 3827: 41 5f pop %r15 0.00 : 3829: c9 leaveq 0.00 : 382a: c3 retq 0.00 : 382b: 4d 39 fc cmp %r15,%r12 0.00 : 382e: 0f 83 24 fe ff ff jae 3658 0.00 : 3834: 48 8b 33 mov (%rbx),%rsi 0.00 : 3837: 4c 39 f6 cmp %r14,%rsi 0.00 : 383a: 74 64 je 38a0 0.00 : 383c: 48 83 3e 00 cmpq $0x0,(%rsi) 0.00 : 3840: 0f 85 12 fe ff ff jne 3658 0.00 : 3846: 48 8b 96 20 02 00 00 mov 0x220(%rsi),%rdx 0.00 : 384d: 48 85 d2 test %rdx,%rdx 0.00 : 3850: 0f 84 02 fe ff ff je 3658 0.00 : 3856: 41 8b 44 24 08 mov 0x8(%r12),%eax 0.00 : 385b: 48 39 42 08 cmp %rax,0x8(%rdx) 0.00 : 385f: 0f 85 f3 fd ff ff jne 3658 0.00 : 3865: 48 8b 96 38 02 00 00 mov 0x238(%rsi),%rdx 0.00 : 386c: 48 85 d2 test %rdx,%rdx 0.00 : 386f: 0f 84 e3 fd ff ff je 3658 0.00 : 3875: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 387a: 48 39 42 08 cmp %rax,0x8(%rdx) 0.00 : 387e: 0f 85 d4 fd ff ff jne 3658 0.00 : 3884: 41 8b 3c 24 mov (%r12),%edi 0.00 : 3888: 48 03 bd 78 ff ff ff add -0x88(%rbp),%rdi 0.00 : 388f: e8 ec b2 00 00 callq eb80 <_dl_name_match_p> 0.00 : 3894: 85 c0 test %eax,%eax 0.00 : 3896: 0f 84 bc fd ff ff je 3658 0.00 : 389c: 49 83 c4 14 add $0x14,%r12 0.00 : 38a0: 48 83 c3 08 add $0x8,%rbx 0.00 : 38a4: 49 39 dd cmp %rbx,%r13 0.00 : 38a7: 0f 86 ab fd ff ff jbe 3658 0.00 : 38ad: 0f 1f 00 nopl (%rax) 0.00 : 38b0: e9 76 ff ff ff jmpq 382b 0.00 : 38b5: 0f 1f 00 nopl (%rax) 0.00 : 38b8: 48 8d 15 a9 6f 01 00 lea 0x16fa9(%rip),%rdx # 1a868 <__PRETTY_FUNCTION__.3644+0x4f7> 0.00 : 38bf: 48 8d 35 da 6f 01 00 lea 0x16fda(%rip),%rsi # 1a8a0 <__PRETTY_FUNCTION__.3644+0x52f> 0.00 : 38c6: bf 02 00 00 00 mov $0x2,%edi 0.00 : 38cb: 31 c0 xor %eax,%eax 0.00 : 38cd: e8 2e b9 00 00 callq f200 <_dl_dprintf> 0.00 : 38d2: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 38d7: e8 e4 29 01 00 callq 162c0 <_Exit> 0.00 : 38dc: eb da jmp 38b8 0.00 : 38de: 49 8d 86 b8 02 00 00 lea 0x2b8(%r14),%rax 0.00 : 38e5: 48 89 05 84 b7 21 00 mov %rax,0x21b784(%rip) # 21f070 <_rtld_global+0x10> 0.00 : 38ec: 49 8b 86 b8 02 00 00 mov 0x2b8(%r14),%rax 0.00 : 38f3: 48 89 05 46 b3 21 00 mov %rax,0x21b346(%rip) # 21ec40 <_rtld_global_ro+0x20> 0.00 : 38fa: 49 8b 86 c0 02 00 00 mov 0x2c0(%r14),%rax 0.00 : 3901: 48 89 05 40 b3 21 00 mov %rax,0x21b340(%rip) # 21ec48 <_rtld_global_ro+0x28> 0.00 : 3908: 45 31 ff xor %r15d,%r15d 0.00 : 390b: 48 83 3d 8d b3 21 00 cmpq $0x0,0x21b38d(%rip) # 21eca0 <_rtld_global_ro+0x80> 0.00 : 3912: 00 0.00 : 3913: 4c 89 f3 mov %r14,%rbx 0.00 : 3916: 41 0f 95 c7 setne %r15b 0.00 : 391a: 44 09 3d 3b b3 21 00 or %r15d,0x21b33b(%rip) # 21ec5c <_rtld_global_ro+0x3c> 0.00 : 3921: 48 89 d8 mov %rbx,%rax 0.00 : 3924: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 3928: 48 85 db test %rbx,%rbx 0.00 : 392b: 75 f4 jne 3921 0.00 : 392d: 48 89 c3 mov %rax,%rbx 0.00 : 3930: 0f 31 rdtsc 0.00 : 3932: 41 89 d5 mov %edx,%r13d 0.00 : 3935: 41 89 c4 mov %eax,%r12d 0.00 : 3938: eb 09 jmp 3943 0.00 : 393a: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 393e: 48 85 db test %rbx,%rbx 0.00 : 3941: 74 66 je 39a9 0.00 : 3943: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 3947: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 394b: 48 85 c0 test %rax,%rax 0.00 : 394e: 0f 85 48 11 00 00 jne 4a9c 0.00 : 3954: 48 8d 0d 75 c0 21 00 lea 0x21c075(%rip),%rcx # 21f9d0 <_rtld_global+0x970> 0.00 : 395b: 80 a3 15 03 00 00 7f andb $0x7f,0x315(%rbx) 0.00 : 3962: 48 39 cb cmp %rcx,%rbx 0.00 : 3965: 74 1e je 3985 0.00 : 3967: 31 d2 xor %edx,%edx 0.00 : 3969: 83 3d ec b2 21 00 00 cmpl $0x0,0x21b2ec(%rip) # 21ec5c <_rtld_global_ro+0x3c> 0.00 : 3970: 48 8b b3 80 03 00 00 mov 0x380(%rbx),%rsi 0.00 : 3977: 44 89 f9 mov %r15d,%ecx 0.00 : 397a: 48 89 df mov %rbx,%rdi 0.00 : 397d: 0f 95 c2 setne %dl 0.00 : 3980: e8 eb 76 00 00 callq b070 <_dl_relocate_object> 0.00 : 3985: 48 83 bb 30 04 00 00 cmpq $0x0,0x430(%rbx) 0.00 : 398c: 00 8.33 : 398d: 74 ab je 393a 0.00 : 398f: 80 3d da c6 21 00 00 cmpb $0x0,0x21c6da(%rip) # 220070 0.00 : 3996: 74 a2 je 393a 0.00 : 3998: 48 89 df mov %rbx,%rdi 0.00 : 399b: e8 30 d1 00 00 callq 10ad0 <_dl_add_to_slotinfo> 0.00 : 39a0: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 39a4: 48 85 db test %rbx,%rbx 0.00 : 39a7: 75 9a jne 3943 0.00 : 39a9: 0f 31 rdtsc 0.00 : 39ab: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 39af: 89 c0 mov %eax,%eax 0.00 : 39b1: 44 89 e1 mov %r12d,%ecx 0.00 : 39b4: 48 09 c2 or %rax,%rdx 0.00 : 39b7: 4c 89 e8 mov %r13,%rax 0.00 : 39ba: 45 31 ed xor %r13d,%r13d 0.00 : 39bd: 48 c1 e0 20 shl $0x20,%rax 0.00 : 39c1: 48 09 c8 or %rcx,%rax 0.00 : 39c4: 48 29 c2 sub %rax,%rdx 0.00 : 39c7: 48 83 3d d9 bf 21 00 cmpq $0x0,0x21bfd9(%rip) # 21f9a8 <_rtld_global+0x948> 0.00 : 39ce: 00 0.00 : 39cf: 48 89 15 92 c6 21 00 mov %rdx,0x21c692(%rip) # 220068 0.00 : 39d6: 0f 84 63 fd ff ff je 373f 0.00 : 39dc: e8 9f c6 00 00 callq 10080 <_dl_start_profile> 0.00 : 39e1: 45 31 ed xor %r13d,%r13d 0.00 : 39e4: e9 56 fd ff ff jmpq 373f 0.00 : 39e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 39f0: 44 89 e0 mov %r12d,%eax 0.00 : 39f3: 83 05 f2 b3 21 00 01 addl $0x1,0x21b3f2(%rip) # 21edec <_dl_skip_args> 0.00 : 39fa: 83 2d e7 b3 21 00 01 subl $0x1,0x21b3e7(%rip) # 21ede8 <_dl_argc> 0.00 : 3a01: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 3a08: 00 0.00 : 3a09: 48 c1 e0 06 shl $0x6,%rax 0.00 : 3a0d: 48 83 05 f3 b1 21 00 addq $0x8,0x21b1f3(%rip) # 21ec08 <_dl_argv> 0.00 : 3a14: 08 0.00 : 3a15: 48 29 d0 sub %rdx,%rax 0.00 : 3a18: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 3a1c: 48 39 c3 cmp %rax,%rbx 0.00 : 3a1f: 73 31 jae 3a52 0.00 : 3a21: 81 3b 51 e5 74 64 cmpl $0x6474e551,(%rbx) 0.00 : 3a27: 48 89 df mov %rbx,%rdi 0.00 : 3a2a: 75 1a jne 3a46 0.00 : 3a2c: e9 34 01 00 00 jmpq 3b65 0.00 : 3a31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a38: 81 3f 51 e5 74 64 cmpl $0x6474e551,(%rdi) 0.00 : 3a3e: 66 90 xchg %ax,%ax 0.00 : 3a40: 0f 84 1f 01 00 00 je 3b65 0.00 : 3a46: 48 83 c7 38 add $0x38,%rdi 0.00 : 3a4a: 48 39 c7 cmp %rax,%rdi 0.00 : 3a4d: 0f 1f 00 nopl (%rax) 0.00 : 3a50: 72 e6 jb 3a38 0.00 : 3a52: 83 7d c8 02 cmpl $0x2,-0x38(%rbp) 0.00 : 3a56: 0f 84 75 10 00 00 je 4ad1 0.00 : 3a5c: 0f 31 rdtsc 0.00 : 3a5e: 89 c3 mov %eax,%ebx 0.00 : 3a60: 48 8b 05 a1 b1 21 00 mov 0x21b1a1(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 3a67: 41 89 d4 mov %edx,%r12d 0.00 : 3a6a: 45 31 c9 xor %r9d,%r9d 0.00 : 3a6d: 41 b8 00 00 00 20 mov $0x20000000,%r8d 0.00 : 3a73: 31 c9 xor %ecx,%ecx 0.00 : 3a75: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3a7a: 31 ff xor %edi,%edi 0.00 : 3a7c: 48 8b 30 mov (%rax),%rsi 0.00 : 3a7f: e8 fc 40 00 00 callq 7b80 <_dl_map_object> 0.00 : 3a84: 0f 31 rdtsc 0.00 : 3a86: 89 c0 mov %eax,%eax 0.00 : 3a88: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 3a8c: 89 d9 mov %ebx,%ecx 0.00 : 3a8e: 48 09 c2 or %rax,%rdx 0.00 : 3a91: 4c 89 e0 mov %r12,%rax 0.00 : 3a94: 48 c1 e0 20 shl $0x20,%rax 0.00 : 3a98: 48 09 c8 or %rcx,%rax 0.00 : 3a9b: 48 29 c2 sub %rax,%rdx 0.00 : 3a9e: 48 89 15 1b b3 21 00 mov %rdx,0x21b31b(%rip) # 21edc0 0.00 : 3aa5: 4c 8b 35 b4 b5 21 00 mov 0x21b5b4(%rip),%r14 # 21f060 <_rtld_global> 0.00 : 3aac: 48 8d 0d ad b5 21 00 lea 0x21b5ad(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 3ab3: 48 8d 35 23 5d 01 00 lea 0x15d23(%rip),%rsi # 197dd 0.00 : 3aba: 48 89 8d e0 fe ff ff mov %rcx,-0x120(%rbp) 0.00 : 3ac1: 49 8b 86 a8 02 00 00 mov 0x2a8(%r14),%rax 0.00 : 3ac8: 45 0f b7 a6 b0 02 00 movzwl 0x2b0(%r14),%r12d 0.00 : 3acf: 00 0.00 : 3ad0: 49 89 76 08 mov %rsi,0x8(%r14) 0.00 : 3ad4: 49 8b 9e a0 02 00 00 mov 0x2a0(%r14),%rbx 0.00 : 3adb: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 3adf: 49 8b 07 mov (%r15),%rax 0.00 : 3ae2: 44 89 e2 mov %r12d,%edx 0.00 : 3ae5: 48 85 c0 test %rax,%rax 0.00 : 3ae8: 74 37 je 3b21 0.00 : 3aea: 4c 89 f9 mov %r15,%rcx 0.00 : 3aed: eb 1c jmp 3b0b 0.00 : 3aef: 48 83 f8 09 cmp $0x9,%rax 0.00 : 3af3: 74 37 je 3b2c 0.00 : 3af5: 48 83 f8 03 cmp $0x3,%rax 0.00 : 3af9: 75 04 jne 3aff 0.00 : 3afb: 48 89 59 08 mov %rbx,0x8(%rcx) 0.00 : 3aff: 48 83 c1 10 add $0x10,%rcx 0.00 : 3b03: 48 8b 01 mov (%rcx),%rax 0.00 : 3b06: 48 85 c0 test %rax,%rax 0.00 : 3b09: 74 16 je 3b21 0.00 : 3b0b: 48 83 f8 05 cmp $0x5,%rax 0.00 : 3b0f: 75 de jne 3aef 0.00 : 3b11: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 3b15: 48 83 c1 10 add $0x10,%rcx 0.00 : 3b19: 48 8b 01 mov (%rcx),%rax 0.00 : 3b1c: 48 85 c0 test %rax,%rax 0.00 : 3b1f: 75 ea jne 3b0b 0.00 : 3b21: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 3b27: e9 c4 eb ff ff jmpq 26f0 0.00 : 3b2c: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 3b30: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 3b34: eb c9 jmp 3aff 0.00 : 3b36: 4c 89 c0 mov %r8,%rax 0.00 : 3b39: 48 29 d0 sub %rdx,%rax 0.00 : 3b3c: 48 83 f8 0a cmp $0xa,%rax 0.00 : 3b40: 0f 87 02 f2 ff ff ja 2d48 0.00 : 3b46: 4c 89 c8 mov %r9,%rax 0.00 : 3b49: 48 29 d0 sub %rdx,%rax 0.00 : 3b4c: 49 89 0c c4 mov %rcx,(%r12,%rax,8) 0.00 : 3b50: e9 f3 f1 ff ff jmpq 2d48 0.00 : 3b55: 48 8b 05 94 be 21 00 mov 0x21be94(%rip),%rax # 21f9f0 <_rtld_global+0x990> 0.00 : 3b5c: 48 8b 48 18 mov 0x18(%rax),%rcx 0.00 : 3b60: e9 c2 f9 ff ff jmpq 3527 0.00 : 3b65: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 3b68: 89 05 ea c3 21 00 mov %eax,0x21c3ea(%rip) # 21ff58 <_rtld_global+0xef8> 0.00 : 3b6e: e9 df fe ff ff jmpq 3a52 0.00 : 3b73: 48 8b 05 5e be 21 00 mov 0x21be5e(%rip),%rax # 21f9d8 <_rtld_global+0x978> 0.00 : 3b7a: 48 85 c0 test %rax,%rax 0.00 : 3b7d: 0f 84 2f 0f 00 00 je 4ab2 0.00 : 3b83: 48 89 05 a6 c4 21 00 mov %rax,0x21c4a6(%rip) # 220030 <_dl_rtld_libname> 0.00 : 3b8a: 48 8d 05 9f c4 21 00 lea 0x21c49f(%rip),%rax # 220030 <_dl_rtld_libname> 0.00 : 3b91: 48 89 05 70 be 21 00 mov %rax,0x21be70(%rip) # 21fa08 <_rtld_global+0x9a8> 0.00 : 3b98: e9 bc ec ff ff jmpq 2859 0.00 : 3b9d: e8 3e ce 00 00 callq 109e0 <_dl_next_tls_modid> 0.00 : 3ba2: 48 89 05 77 c2 21 00 mov %rax,0x21c277(%rip) # 21fe20 <_rtld_global+0xdc0> 0.00 : 3ba9: e9 56 f6 ff ff jmpq 3204 0.00 : 3bae: 49 83 3e 01 cmpq $0x1,(%r14) 0.00 : 3bb2: 48 19 c0 sbb %rax,%rax 0.00 : 3bb5: 48 89 05 dc b0 21 00 mov %rax,0x21b0dc(%rip) # 21ec98 <_rtld_global_ro+0x78> 0.00 : 3bbc: e9 cb f5 ff ff jmpq 318c 0.00 : 3bc1: 48 8b 05 40 be 21 00 mov 0x21be40(%rip),%rax # 21fa08 <_rtld_global+0x9a8> 0.00 : 3bc8: 48 8b 00 mov (%rax),%rax 0.00 : 3bcb: 48 89 05 06 be 21 00 mov %rax,0x21be06(%rip) # 21f9d8 <_rtld_global+0x978> 0.00 : 3bd2: e9 73 f5 ff ff jmpq 314a 0.00 : 3bd7: 48 8d 0d 1c 5d 01 00 lea 0x15d1c(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 3bde: 48 8d 35 82 59 01 00 lea 0x15982(%rip),%rsi # 19567 0.00 : 3be5: 48 8d 3d a4 72 01 00 lea 0x172a4(%rip),%rdi # 1ae90 <__PRETTY_FUNCTION__.3644+0xb1f> 0.00 : 3bec: ba ff 04 00 00 mov $0x4ff,%edx 0.00 : 3bf1: e8 7a 11 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3bf6: 48 8d 0d fd 5c 01 00 lea 0x15cfd(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 3bfd: 48 8d 35 63 59 01 00 lea 0x15963(%rip),%rsi # 19567 0.00 : 3c04: 48 8d 3d a2 5b 01 00 lea 0x15ba2(%rip),%rdi # 197ad 0.00 : 3c0b: ba 8b 06 00 00 mov $0x68b,%edx 0.00 : 3c10: e8 5b 11 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3c15: 48 89 df mov %rbx,%rdi 0.00 : 3c18: e8 53 2b 01 00 callq 16770 <__GI_strlen> 0.00 : 3c1d: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 3c21: 48 83 c0 1f add $0x1f,%rax 0.00 : 3c25: 48 89 de mov %rbx,%rsi 0.00 : 3c28: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 3c2c: 48 29 c4 sub %rax,%rsp 0.00 : 3c2f: 48 8d 7c 24 1f lea 0x1f(%rsp),%rdi 0.00 : 3c34: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 3c38: e8 b3 36 01 00 callq 172f0 0.00 : 3c3d: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 3c41: 0f 31 rdtsc 0.00 : 3c43: 48 8d 4d b0 lea -0x50(%rbp),%rcx 0.00 : 3c47: 41 89 d5 mov %edx,%r13d 0.00 : 3c4a: 41 89 c4 mov %eax,%r12d 0.00 : 3c4d: 45 31 ff xor %r15d,%r15d 0.00 : 3c50: 48 89 8d f8 fe ff ff mov %rcx,-0x108(%rbp) 0.00 : 3c57: eb 10 jmp 3c69 0.00 : 3c59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3c60: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 3c63: 0f 85 c5 00 00 00 jne 3d2e 0.00 : 3c69: 48 8b bd f8 fe ff ff mov -0x108(%rbp),%rdi 0.00 : 3c70: 48 8d 35 5f 5b 01 00 lea 0x15b5f(%rip),%rsi # 197d6 0.00 : 3c77: e8 44 11 01 00 callq 14dc0 <__strsep> 0.00 : 3c7c: 48 85 c0 test %rax,%rax 0.00 : 3c7f: 48 89 c3 mov %rax,%rbx 0.00 : 3c82: 75 dc jne 3c60 0.00 : 3c84: 0f 31 rdtsc 0.00 : 3c86: 89 c1 mov %eax,%ecx 0.00 : 3c88: 4c 89 e8 mov %r13,%rax 0.00 : 3c8b: 89 d6 mov %edx,%esi 0.00 : 3c8d: 48 c1 e0 20 shl $0x20,%rax 0.00 : 3c91: 44 89 e2 mov %r12d,%edx 0.00 : 3c94: 89 c9 mov %ecx,%ecx 0.00 : 3c96: 48 09 d0 or %rdx,%rax 0.00 : 3c99: 48 8b 15 20 b1 21 00 mov 0x21b120(%rip),%rdx # 21edc0 0.00 : 3ca0: 48 29 c2 sub %rax,%rdx 0.00 : 3ca3: 48 89 f0 mov %rsi,%rax 0.00 : 3ca6: 48 c1 e0 20 shl $0x20,%rax 0.00 : 3caa: 48 09 c8 or %rcx,%rax 0.00 : 3cad: 48 01 c2 add %rax,%rdx 0.00 : 3cb0: 48 89 15 09 b1 21 00 mov %rdx,0x21b109(%rip) # 21edc0 0.00 : 3cb7: e9 d8 f5 ff ff jmpq 3294 0.00 : 3cbc: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 3cc0: 48 8d 3d 29 8a 01 00 lea 0x18a29(%rip),%rdi # 1c6f0 0.00 : 3cc7: ba 03 00 00 00 mov $0x3,%edx 0.00 : 3ccc: e8 2f b7 00 00 callq f400 <_dl_sysdep_read_whole_file> 0.00 : 3cd1: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 3cd5: 49 89 c5 mov %rax,%r13 0.00 : 3cd8: 0f 84 cf f5 ff ff je 32ad 0.00 : 3cde: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 3ce2: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 3ce6: 48 85 d2 test %rdx,%rdx 0.00 : 3ce9: 49 89 d4 mov %rdx,%r12 0.00 : 3cec: 0f 84 29 06 00 00 je 431b 0.00 : 3cf2: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 3cf6: 4c 89 e2 mov %r12,%rdx 0.00 : 3cf9: be 23 00 00 00 mov $0x23,%esi 0.00 : 3cfe: 48 89 df mov %rbx,%rdi 0.00 : 3d01: e8 5a 2c 01 00 callq 16960 <__memchr> 0.00 : 3d06: 48 85 c0 test %rax,%rax 0.00 : 3d09: 0f 84 08 06 00 00 je 4317 0.00 : 3d0f: 48 29 c3 sub %rax,%rbx 0.00 : 3d12: 4e 8d 24 23 lea (%rbx,%r12,1),%r12 0.00 : 3d16: 49 83 ec 01 sub $0x1,%r12 0.00 : 3d1a: c6 00 20 movb $0x20,(%rax) 0.00 : 3d1d: 0f 84 f4 05 00 00 je 4317 0.00 : 3d23: 48 83 c0 01 add $0x1,%rax 0.00 : 3d27: 80 38 0a cmpb $0xa,(%rax) 0.00 : 3d2a: 75 ea jne 3d16 0.00 : 3d2c: eb c4 jmp 3cf2 0.00 : 3d2e: 44 8b 0d 1b b1 21 00 mov 0x21b11b(%rip),%r9d # 21ee50 <__libc_enable_secure> 0.00 : 3d35: 45 85 c9 test %r9d,%r9d 0.00 : 3d38: 0f 85 27 01 00 00 jne 3e65 0.00 : 3d3e: 48 8d 15 86 5a 01 00 lea 0x15a86(%rip),%rdx # 197cb 0.00 : 3d45: 4c 89 f6 mov %r14,%rsi 0.00 : 3d48: 48 89 df mov %rbx,%rdi 0.00 : 3d4b: e8 c0 d9 ff ff callq 1710 0.00 : 3d50: 41 01 c7 add %eax,%r15d 0.00 : 3d53: e9 11 ff ff ff jmpq 3c69 0.00 : 3d58: 39 c2 cmp %eax,%edx 0.00 : 3d5a: 0f 86 a2 f3 ff ff jbe 3102 0.00 : 3d60: e9 97 f3 ff ff jmpq 30fc 0.00 : 3d65: 4c 8b 25 c4 af 21 00 mov 0x21afc4(%rip),%r12 # 21ed30 <_rtld_global_ro+0x110> 0.00 : 3d6c: 31 db xor %ebx,%ebx 0.00 : 3d6e: 49 8b 14 24 mov (%r12),%rdx 0.00 : 3d72: 48 85 d2 test %rdx,%rdx 0.00 : 3d75: 74 15 je 3d8c 0.00 : 3d77: 89 d8 mov %ebx,%eax 0.00 : 3d79: be 01 00 00 00 mov $0x1,%esi 0.00 : 3d7e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 3d82: 49 8d bc 06 70 04 00 lea 0x470(%r14,%rax,1),%rdi 0.00 : 3d89: 00 0.00 : 3d8a: ff d2 callq *%rdx 0.00 : 3d8c: 83 c3 01 add $0x1,%ebx 0.00 : 3d8f: 39 1d a3 af 21 00 cmp %ebx,0x21afa3(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 3d95: 4d 8b 64 24 40 mov 0x40(%r12),%r12 0.00 : 3d9a: 77 d2 ja 3d6e 0.00 : 3d9c: e9 cf f4 ff ff jmpq 3270 0.00 : 3da1: 48 8d 0d 52 5b 01 00 lea 0x15b52(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 3da8: 48 8d 35 b8 57 01 00 lea 0x157b8(%rip),%rsi # 19567 0.00 : 3daf: 48 8d 3d b6 59 01 00 lea 0x159b6(%rip),%rdi # 1976c 0.00 : 3db6: ba 6e 05 00 00 mov $0x56e,%edx 0.00 : 3dbb: e8 b0 0f 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3dc0: 48 8d 0d 33 5b 01 00 lea 0x15b33(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 3dc7: 48 8d 35 99 57 01 00 lea 0x15799(%rip),%rsi # 19567 0.00 : 3dce: 48 8d 3d 7e 59 01 00 lea 0x1597e(%rip),%rdi # 19753 0.00 : 3dd5: ba 6d 05 00 00 mov $0x56d,%edx 0.00 : 3dda: e8 91 0f 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3ddf: 48 8d 0d 14 5b 01 00 lea 0x15b14(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 3de6: 48 8d 35 7a 57 01 00 lea 0x1577a(%rip),%rsi # 19567 0.00 : 3ded: 48 8d 3d 28 59 01 00 lea 0x15928(%rip),%rdi # 1971c 0.00 : 3df4: ba 54 04 00 00 mov $0x454,%edx 0.00 : 3df9: e8 72 0f 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3dfe: 48 8d 0d f5 5a 01 00 lea 0x15af5(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 3e05: 48 8d 35 5b 57 01 00 lea 0x1575b(%rip),%rsi # 19567 0.00 : 3e0c: 48 8d 3d 25 70 01 00 lea 0x17025(%rip),%rdi # 1ae38 <__PRETTY_FUNCTION__.3644+0xac7> 0.00 : 3e13: ba 5c 04 00 00 mov $0x45c,%edx 0.00 : 3e18: e8 53 0f 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3e1d: 48 8d 0d d6 5a 01 00 lea 0x15ad6(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 3e24: 48 8d 35 3c 57 01 00 lea 0x1573c(%rip),%rsi # 19567 0.00 : 3e2b: 48 8d 3d 02 59 01 00 lea 0x15902(%rip),%rdi # 19734 0.00 : 3e32: ba 46 05 00 00 mov $0x546,%edx 0.00 : 3e37: e8 34 0f 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3e3c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3e41: 31 c0 xor %eax,%eax 0.00 : 3e43: e9 7e f6 ff ff jmpq 34c6 0.00 : 3e48: 48 8d 35 a1 70 01 00 lea 0x170a1(%rip),%rsi # 1aef0 <__PRETTY_FUNCTION__.3644+0xb7f> 0.00 : 3e4f: bf 02 00 00 00 mov $0x2,%edi 0.00 : 3e54: 31 c0 xor %eax,%eax 0.00 : 3e56: e8 a5 b3 00 00 callq f200 <_dl_dprintf> 0.00 : 3e5b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 3e60: e8 5b 24 01 00 callq 162c0 <_Exit> 0.00 : 3e65: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 3e6a: 48 89 df mov %rbx,%rdi 0.00 : 3e6d: e8 6e 27 01 00 callq 165e0 0.00 : 3e72: 48 85 c0 test %rax,%rax 0.00 : 3e75: 0f 85 ee fd ff ff jne 3c69 0.00 : 3e7b: e9 be fe ff ff jmpq 3d3e 0.00 : 3e80: 49 83 7e 10 00 cmpq $0x0,0x10(%r14) 0.00 : 3e85: 0f 1f 00 nopl (%rax) 0.00 : 3e88: 75 0b jne 3e95 0.00 : 3e8a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 3e8f: 90 nop 0.00 : 3e90: e8 2b 24 01 00 callq 162c0 <_Exit> 0.00 : 3e95: 41 80 ff 01 cmp $0x1,%r15b 0.00 : 3e99: 19 ff sbb %edi,%edi 0.00 : 3e9b: 83 e7 02 and $0x2,%edi 0.00 : 3e9e: e8 1d 24 01 00 callq 162c0 <_Exit> 0.00 : 3ea3: e9 9f eb ff ff jmpq 2a47 0.00 : 3ea8: 48 8d 0d c1 87 01 00 lea 0x187c1(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 3eaf: 48 8d 35 58 56 01 00 lea 0x15658(%rip),%rsi # 1950e 0.00 : 3eb6: 48 8d 3d 60 56 01 00 lea 0x15660(%rip),%rdi # 1951d 0.00 : 3ebd: ba bb 00 00 00 mov $0xbb,%edx 0.00 : 3ec2: e8 a9 0e 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3ec7: 48 8d 0d a2 87 01 00 lea 0x187a2(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 3ece: 48 8d 35 39 56 01 00 lea 0x15639(%rip),%rsi # 1950e 0.00 : 3ed5: 48 8d 3d e4 65 01 00 lea 0x165e4(%rip),%rdi # 1a4c0 <__PRETTY_FUNCTION__.3644+0x14f> 0.00 : 3edc: ba c3 00 00 00 mov $0xc3,%edx 0.00 : 3ee1: e8 8a 0e 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 3ee6: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 3eea: 48 8d 5d cf lea -0x31(%rbp),%rbx 0.00 : 3eee: e8 fd e2 ff ff callq 21f0 0.00 : 3ef3: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 3efa: e8 61 e4 ff ff callq 2360 0.00 : 3eff: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 3f03: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 3f07: 48 8d 45 a0 lea -0x60(%rbp),%rax 0.00 : 3f0b: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 3f0f: 48 c7 85 30 ff ff ff movq $0x0,-0xd0(%rbp) 0.00 : 3f16: 00 00 00 00 0.00 : 3f1a: 48 89 9d e8 fe ff ff mov %rbx,-0x118(%rbp) 0.00 : 3f21: 48 89 b5 f0 fe ff ff mov %rsi,-0x110(%rbp) 0.00 : 3f28: 48 89 bd f8 fe ff ff mov %rdi,-0x108(%rbp) 0.00 : 3f2f: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) 0.00 : 3f36: 48 89 95 d0 fe ff ff mov %rdx,-0x130(%rbp) 0.00 : 3f3d: 49 8b 04 24 mov (%r12),%rax 0.00 : 3f41: 4c 8b 85 00 ff ff ff mov -0x100(%rbp),%r8 0.00 : 3f48: 48 8d 0d a1 cc ff ff lea -0x335f(%rip),%rcx # bf0 0.00 : 3f4f: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : 3f56: 48 8b b5 f8 fe ff ff mov -0x108(%rbp),%rsi 0.00 : 3f5d: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 3f64: 4c 8b 2d f5 bf 21 00 mov 0x21bff5(%rip),%r13 # 21ff60 <_rtld_global+0xf00> 0.00 : 3f6b: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 3f6f: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 3f76: 00 0.00 : 3f77: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 3f7e: 00 0.00 : 3f7f: e8 8c 9e 00 00 callq de10 <_dl_catch_error> 0.00 : 3f84: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 0.00 : 3f89: 0f 85 8c 00 00 00 jne 401b 0.00 : 3f8f: 48 8d 0d 03 58 01 00 lea 0x15803(%rip),%rcx # 19799 0.00 : 3f96: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 3f9a: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 3fa1: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : 3fa8: 48 8b b5 f8 fe ff ff mov -0x108(%rbp),%rsi 0.00 : 3faf: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 3fb6: 48 89 4d 80 mov %rcx,-0x80(%rbp) 0.00 : 3fba: 48 8d 0d bf cb ff ff lea -0x3441(%rip),%rcx # b80 0.00 : 3fc1: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 3fc5: e8 46 9e 00 00 callq de10 <_dl_catch_error> 0.00 : 3fca: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 0.00 : 3fcf: 0f 84 9a 01 00 00 je 416f 0.00 : 3fd5: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 3fd9: 48 8b 5f 30 mov 0x30(%rdi),%rbx 0.00 : 3fdd: e8 2e fc 00 00 callq 13c10 <_dl_close> 0.00 : 3fe2: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 3fe9: 48 8d 04 db lea (%rbx,%rbx,8),%rax 0.00 : 3fed: 48 c1 e0 04 shl $0x4,%rax 0.00 : 3ff1: 48 83 3c 02 00 cmpq $0x0,(%rdx,%rax,1) 0.00 : 3ff6: 0f 85 54 01 00 00 jne 4150 0.00 : 3ffc: 48 8d 0d 5d b0 21 00 lea 0x21b05d(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 4003: 44 8b 5c 08 08 mov 0x8(%rax,%rcx,1),%r11d 0.00 : 4008: 45 85 db test %r11d,%r11d 0.00 : 400b: 0f 85 20 01 00 00 jne 4131 0.00 : 4011: 49 63 c5 movslq %r13d,%rax 0.00 : 4014: 48 89 05 45 bf 21 00 mov %rax,0x21bf45(%rip) # 21ff60 <_rtld_global+0xf00> 0.00 : 401b: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 401f: 49 8b 14 24 mov (%r12),%rdx 0.00 : 4023: 48 8d 35 ee 6e 01 00 lea 0x16eee(%rip),%rsi # 1af18 <__PRETTY_FUNCTION__.3644+0xba7> 0.00 : 402a: 31 c0 xor %eax,%eax 0.00 : 402c: bf 02 00 00 00 mov $0x2,%edi 0.00 : 4031: e8 ca b1 00 00 callq f200 <_dl_dprintf> 0.00 : 4036: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 403a: 74 09 je 4045 0.00 : 403c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4040: e8 ab ca ff ff callq af0 0.00 : 4045: 48 8b 05 d4 bf 21 00 mov 0x21bfd4(%rip),%rax # 220020 0.00 : 404c: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 4051: 4c 39 60 08 cmp %r12,0x8(%rax) 0.00 : 4055: 0f 85 e2 fe ff ff jne 3f3d 0.00 : 405b: 8b 05 d7 ac 21 00 mov 0x21acd7(%rip),%eax # 21ed38 <_rtld_global_ro+0x118> 0.00 : 4061: 85 c0 test %eax,%eax 0.00 : 4063: 0f 84 b6 f1 ff ff je 321f 0.00 : 4069: 4c 8b ad 00 ff ff ff mov -0x100(%rbp),%r13 0.00 : 4070: 48 8d 1d 59 b9 21 00 lea 0x21b959(%rip),%rbx # 21f9d0 <_rtld_global+0x970> 0.00 : 4077: 4c 89 75 a0 mov %r14,-0x60(%rbp) 0.00 : 407b: 48 89 5d a8 mov %rbx,-0x58(%rbp) 0.00 : 407f: 49 8d 75 10 lea 0x10(%r13),%rsi 0.00 : 4083: 48 89 b5 d8 fe ff ff mov %rsi,-0x128(%rbp) 0.00 : 408a: 48 8b 3d 9f ac 21 00 mov 0x21ac9f(%rip),%rdi # 21ed30 <_rtld_global_ro+0x110> 0.00 : 4091: 85 c0 test %eax,%eax 0.00 : 4093: 48 89 bd 38 ff ff ff mov %rdi,-0xc8(%rbp) 0.00 : 409a: 74 79 je 4115 0.00 : 409c: 45 31 ff xor %r15d,%r15d 0.00 : 409f: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 40a6: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 40aa: 48 85 c0 test %rax,%rax 0.00 : 40ad: 74 47 je 40f6 0.00 : 40af: 4d 8b 65 00 mov 0x0(%r13),%r12 0.00 : 40b3: 44 89 fb mov %r15d,%ebx 0.00 : 40b6: 31 f6 xor %esi,%esi 0.00 : 40b8: 48 83 c3 47 add $0x47,%rbx 0.00 : 40bc: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 40c0: 49 8d 14 1c lea (%r12,%rbx,1),%rdx 0.00 : 40c4: 4c 89 e7 mov %r12,%rdi 0.00 : 40c7: ff d0 callq *%rax 0.00 : 40c9: 42 89 44 23 08 mov %eax,0x8(%rbx,%r12,1) 0.00 : 40ce: 41 0f b6 94 24 15 03 movzbl 0x315(%r12),%edx 0.00 : 40d5: 00 00 0.00 : 40d7: 85 c0 test %eax,%eax 0.00 : 40d9: 0f 95 c1 setne %cl 0.00 : 40dc: 89 d0 mov %edx,%eax 0.00 : 40de: 83 e2 ef and $0xffffffef,%edx 0.00 : 40e1: c0 e8 04 shr $0x4,%al 0.00 : 40e4: 83 e0 01 and $0x1,%eax 0.00 : 40e7: 09 c1 or %eax,%ecx 0.00 : 40e9: c1 e1 04 shl $0x4,%ecx 0.00 : 40ec: 09 ca or %ecx,%edx 0.00 : 40ee: 41 88 94 24 15 03 00 mov %dl,0x315(%r12) 0.00 : 40f5: 00 0.00 : 40f6: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 40fd: 41 83 c7 01 add $0x1,%r15d 0.00 : 4101: 44 39 3d 30 ac 21 00 cmp %r15d,0x21ac30(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 4108: 48 8b 49 40 mov 0x40(%rcx),%rcx 0.00 : 410c: 48 89 8d 38 ff ff ff mov %rcx,-0xc8(%rbp) 0.00 : 4113: 77 8a ja 409f 0.00 : 4115: 49 83 c5 08 add $0x8,%r13 0.00 : 4119: 4c 3b ad d8 fe ff ff cmp -0x128(%rbp),%r13 0.00 : 4120: 0f 84 f9 f0 ff ff je 321f 0.00 : 4126: 8b 05 0c ac 21 00 mov 0x21ac0c(%rip),%eax # 21ed38 <_rtld_global_ro+0x118> 0.00 : 412c: e9 59 ff ff ff jmpq 408a 0.00 : 4131: 48 8d 0d c2 57 01 00 lea 0x157c2(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4138: 48 8d 35 28 54 01 00 lea 0x15428(%rip),%rsi # 19567 0.00 : 413f: 48 8d 3d 5a 6e 01 00 lea 0x16e5a(%rip),%rdi # 1afa0 <__PRETTY_FUNCTION__.3644+0xc2f> 0.00 : 4146: ba 3f 06 00 00 mov $0x63f,%edx 0.00 : 414b: e8 20 0c 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 4150: 48 8d 0d a3 57 01 00 lea 0x157a3(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4157: 48 8d 35 09 54 01 00 lea 0x15409(%rip),%rsi # 19567 0.00 : 415e: 48 8d 3d 03 6e 01 00 lea 0x16e03(%rip),%rdi # 1af68 <__PRETTY_FUNCTION__.3644+0xbf7> 0.00 : 4165: ba 3e 06 00 00 mov $0x63e,%edx 0.00 : 416a: e8 01 0c 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 416f: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 4173: 48 85 c0 test %rax,%rax 0.00 : 4176: 0f 84 59 fe ff ff je 3fd5 0.00 : 417c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4181: ff d0 callq *%rax 0.00 : 4183: 85 c0 test %eax,%eax 0.00 : 4185: 0f 84 4a fe ff ff je 3fd5 0.00 : 418b: 83 f8 01 cmp $0x1,%eax 0.00 : 418e: 66 90 xchg %ax,%ax 0.00 : 4190: 0f 87 3f fe ff ff ja 3fd5 0.00 : 4196: bf 48 00 00 00 mov $0x48,%edi 0.00 : 419b: 4c 8d 3d 7e 44 01 00 lea 0x1447e(%rip),%r15 # 18620 0.00 : 41a2: 31 db xor %ebx,%ebx 0.00 : 41a4: e8 07 c9 ff ff callq ab0 0.00 : 41a9: 49 89 c5 mov %rax,%r13 0.00 : 41ac: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 41b3: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : 41ba: 48 8d 0d bf c9 ff ff lea -0x3641(%rip),%rcx # b80 0.00 : 41c1: 48 8b b5 f8 fe ff ff mov -0x108(%rbp),%rsi 0.00 : 41c8: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 41cf: 4c 89 7d 80 mov %r15,-0x80(%rbp) 0.00 : 41d3: e8 38 9c 00 00 callq de10 <_dl_catch_error> 0.00 : 41d8: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 0.00 : 41dd: 74 62 je 4241 0.00 : 41df: 89 d8 mov %ebx,%eax 0.00 : 41e1: 49 c7 44 c5 00 00 00 movq $0x0,0x0(%r13,%rax,8) 0.00 : 41e8: 00 00 0.00 : 41ea: 31 f6 xor %esi,%esi 0.00 : 41ec: 4c 89 ff mov %r15,%rdi 0.00 : 41ef: 83 c3 01 add $0x1,%ebx 0.00 : 41f2: e8 39 38 01 00 callq 17a30 <__rawmemchr> 0.00 : 41f7: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 41fb: 4c 8d 78 01 lea 0x1(%rax),%r15 0.00 : 41ff: 75 ab jne 41ac 0.00 : 4201: 83 fb 08 cmp $0x8,%ebx 0.00 : 4204: 75 75 jne 427b 0.00 : 4206: 49 c7 45 40 00 00 00 movq $0x0,0x40(%r13) 0.00 : 420d: 00 0.00 : 420e: 48 83 bd 30 ff ff ff cmpq $0x0,-0xd0(%rbp) 0.00 : 4215: 00 0.00 : 4216: 74 5a je 4272 0.00 : 4218: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 421f: 4c 89 68 40 mov %r13,0x40(%rax) 0.00 : 4223: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 4227: 83 05 0a ab 21 00 01 addl $0x1,0x21ab0a(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 422e: 80 88 15 03 00 00 08 orb $0x8,0x315(%rax) 0.00 : 4235: 4c 89 ad 30 ff ff ff mov %r13,-0xd0(%rbp) 0.00 : 423c: e9 04 fe ff ff jmpq 4045 0.00 : 4241: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 4245: 48 85 d2 test %rdx,%rdx 0.00 : 4248: 74 95 je 41df 0.00 : 424a: 89 d8 mov %ebx,%eax 0.00 : 424c: 48 8d 3d 7d b7 21 00 lea 0x21b77d(%rip),%rdi # 21f9d0 <_rtld_global+0x970> 0.00 : 4253: 49 89 54 c5 00 mov %rdx,0x0(%r13,%rax,8) 0.00 : 4258: 48 8b b5 e0 fe ff ff mov -0x120(%rbp),%rsi 0.00 : 425f: 48 05 de 00 00 00 add $0xde,%rax 0.00 : 4265: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4269: 48 89 3c 06 mov %rdi,(%rsi,%rax,1) 0.00 : 426d: e9 78 ff ff ff jmpq 41ea 0.00 : 4272: 4c 89 2d b7 aa 21 00 mov %r13,0x21aab7(%rip) # 21ed30 <_rtld_global_ro+0x110> 0.00 : 4279: eb a8 jmp 4223 0.00 : 427b: 48 8d 0d 78 56 01 00 lea 0x15678(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4282: 48 8d 35 de 52 01 00 lea 0x152de(%rip),%rsi # 19567 0.00 : 4289: 48 8d 3d 14 55 01 00 lea 0x15514(%rip),%rdi # 197a4 0.00 : 4290: ba 26 06 00 00 mov $0x626,%edx 0.00 : 4295: e8 d6 0a 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 429a: 44 89 f8 mov %r15d,%eax 0.00 : 429d: 31 d2 xor %edx,%edx 0.00 : 429f: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : 42a6: 00 0.00 : 42a7: 48 c1 e8 04 shr $0x4,%rax 0.00 : 42ab: 48 c1 e0 04 shl $0x4,%rax 0.00 : 42af: 48 29 c4 sub %rax,%rsp 0.00 : 42b2: 48 8d 4c 24 1f lea 0x1f(%rsp),%rcx 0.00 : 42b7: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : 42bb: 48 89 ce mov %rcx,%rsi 0.00 : 42be: 89 d0 mov %edx,%eax 0.00 : 42c0: 83 c2 01 add $0x1,%edx 0.00 : 42c3: 48 89 3c c1 mov %rdi,(%rcx,%rax,8) 0.00 : 42c7: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 42cb: 48 85 ff test %rdi,%rdi 0.00 : 42ce: 75 ee jne 42be 0.00 : 42d0: 44 39 fa cmp %r15d,%edx 0.00 : 42d3: 0f 84 e9 ef ff ff je 32c2 0.00 : 42d9: 48 8d 0d 1a 56 01 00 lea 0x1561a(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 42e0: 48 8d 35 80 52 01 00 lea 0x15280(%rip),%rsi # 19567 0.00 : 42e7: 48 8d 3d f0 54 01 00 lea 0x154f0(%rip),%rdi # 197de 0.00 : 42ee: ba 35 07 00 00 mov $0x735,%edx 0.00 : 42f3: e8 78 0a 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 42f8: 48 8d 0d fb 55 01 00 lea 0x155fb(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 42ff: 48 8d 35 61 52 01 00 lea 0x15261(%rip),%rsi # 19567 0.00 : 4306: 48 8d 3d bb 6b 01 00 lea 0x16bbb(%rip),%rdi # 1aec8 <__PRETTY_FUNCTION__.3644+0xb57> 0.00 : 430d: ba 04 05 00 00 mov $0x504,%edx 0.00 : 4312: e8 59 0a 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 4317: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 431b: 49 8d 4c 15 ff lea -0x1(%r13,%rdx,1),%rcx 0.00 : 4320: 0f b6 01 movzbl (%rcx),%eax 0.00 : 4323: 3c 20 cmp $0x20,%al 0.00 : 4325: 0f 84 1a 09 00 00 je 4c45 0.00 : 432b: 3c 09 cmp $0x9,%al 0.00 : 432d: 0f 84 12 09 00 00 je 4c45 0.00 : 4333: 3c 0a cmp $0xa,%al 0.00 : 4335: 0f 84 0a 09 00 00 je 4c45 0.00 : 433b: 3c 3a cmp $0x3a,%al 0.00 : 433d: 0f 1f 00 nopl (%rax) 0.00 : 4340: 0f 84 ff 08 00 00 je 4c45 0.00 : 4346: 49 8d 5c 15 00 lea 0x0(%r13,%rdx,1),%rbx 0.00 : 434b: 49 39 dd cmp %rbx,%r13 0.00 : 434e: 66 90 xchg %ax,%ax 0.00 : 4350: 73 2c jae 437e 0.00 : 4352: 3c 20 cmp $0x20,%al 0.00 : 4354: 48 89 ce mov %rcx,%rsi 0.00 : 4357: 74 21 je 437a 0.00 : 4359: 3c 09 cmp $0x9,%al 0.00 : 435b: 74 1d je 437a 0.00 : 435d: 3c 0a cmp $0xa,%al 0.00 : 435f: 90 nop 0.00 : 4360: 74 18 je 437a 0.00 : 4362: 3c 3a cmp $0x3a,%al 0.00 : 4364: 74 14 je 437a 0.00 : 4366: 49 39 f5 cmp %rsi,%r13 0.00 : 4369: 48 89 f3 mov %rsi,%rbx 0.00 : 436c: 73 10 jae 437e 0.00 : 436e: 0f b6 43 ff movzbl -0x1(%rbx),%eax 0.00 : 4372: 48 8d 73 ff lea -0x1(%rbx),%rsi 0.00 : 4376: 3c 20 cmp $0x20,%al 0.00 : 4378: 75 df jne 4359 0.00 : 437a: c6 43 ff 00 movb $0x0,-0x1(%rbx) 0.00 : 437e: 0f 31 rdtsc 0.00 : 4380: 49 39 dd cmp %rbx,%r13 0.00 : 4383: 89 95 40 ff ff ff mov %edx,-0xc0(%rbp) 0.00 : 4389: 41 89 c4 mov %eax,%r12d 0.00 : 438c: 0f 84 bd 08 00 00 je 4c4f 0.00 : 4392: 48 8d 4d b0 lea -0x50(%rbp),%rcx 0.00 : 4396: 4c 89 6d b0 mov %r13,-0x50(%rbp) 0.00 : 439a: 48 89 8d f8 fe ff ff mov %rcx,-0x108(%rbp) 0.00 : 43a1: 48 8b bd f8 fe ff ff mov -0x108(%rbp),%rdi 0.00 : 43a8: 48 8d 35 2a 54 01 00 lea 0x1542a(%rip),%rsi # 197d9 0.00 : 43af: e8 0c 0a 01 00 callq 14dc0 <__strsep> 0.00 : 43b4: 48 85 c0 test %rax,%rax 0.00 : 43b7: 48 89 c7 mov %rax,%rdi 0.00 : 43ba: 0f 84 8f 08 00 00 je 4c4f 0.00 : 43c0: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 43c3: 74 dc je 43a1 0.00 : 43c5: 48 8d 15 24 83 01 00 lea 0x18324(%rip),%rdx # 1c6f0 0.00 : 43cc: 4c 89 f6 mov %r14,%rsi 0.00 : 43cf: e8 3c d3 ff ff callq 1710 0.00 : 43d4: 41 01 c7 add %eax,%r15d 0.00 : 43d7: eb c8 jmp 43a1 0.00 : 43d9: 48 8d 05 f6 54 01 00 lea 0x154f6(%rip),%rax # 198d6 0.00 : 43e0: 48 8d 35 e8 54 01 00 lea 0x154e8(%rip),%rsi # 198cf 0.00 : 43e7: 45 84 ed test %r13b,%r13b 0.00 : 43ea: 48 8d 3d e8 54 01 00 lea 0x154e8(%rip),%rdi # 198d9 0.00 : 43f1: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 43f5: 31 c0 xor %eax,%eax 0.00 : 43f7: e8 54 af 00 00 callq f350 <_dl_debug_printf> 0.00 : 43fc: e9 74 f2 ff ff jmpq 3675 0.00 : 4401: 8b 05 19 a8 21 00 mov 0x21a819(%rip),%eax # 21ec20 <_rtld_global_ro> 0.00 : 4407: f6 c4 04 test $0x4,%ah 0.00 : 440a: 0f 84 60 01 00 00 je 4570 0.00 : 4410: 41 8b b6 c0 02 00 00 mov 0x2c0(%r14),%esi 0.00 : 4417: 85 f6 test %esi,%esi 0.00 : 4419: 74 48 je 4463 0.00 : 441b: 4c 8d 25 70 51 01 00 lea 0x15170(%rip),%r12 # 19592 0.00 : 4422: 45 31 ed xor %r13d,%r13d 0.00 : 4425: 49 8b 86 b8 02 00 00 mov 0x2b8(%r14),%rax 0.00 : 442c: 44 89 ea mov %r13d,%edx 0.00 : 442f: 48 8b 1c d0 mov (%rax,%rdx,8),%rbx 0.00 : 4433: f6 83 15 03 00 00 02 testb $0x2,0x315(%rbx) 0.00 : 443a: 74 7e je 44ba 0.00 : 443c: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 4440: 48 8d 35 a6 53 01 00 lea 0x153a6(%rip),%rsi # 197ed 0.00 : 4447: bf 01 00 00 00 mov $0x1,%edi 0.00 : 444c: 48 8b 10 mov (%rax),%rdx 0.00 : 444f: 31 c0 xor %eax,%eax 0.00 : 4451: e8 aa ad 00 00 callq f200 <_dl_dprintf> 0.00 : 4456: 41 83 c5 01 add $0x1,%r13d 0.00 : 445a: 45 39 ae c0 02 00 00 cmp %r13d,0x2c0(%r14) 0.00 : 4461: 77 c2 ja 4425 0.00 : 4463: 83 7d c8 03 cmpl $0x3,-0x38(%rbp) 0.00 : 4467: 0f 85 0c 05 00 00 jne 4979 0.00 : 446d: 8b 05 e9 a7 21 00 mov 0x21a7e9(%rip),%eax # 21ec5c <_rtld_global_ro+0x3c> 0.00 : 4473: 85 c0 test %eax,%eax 0.00 : 4475: 0f 88 d4 01 00 00 js 464f 0.00 : 447b: 8b 15 d3 a7 21 00 mov 0x21a7d3(%rip),%edx # 21ec54 <_rtld_global_ro+0x34> 0.00 : 4481: 85 d2 test %edx,%edx 0.00 : 4483: 0f 84 c6 01 00 00 je 464f 0.00 : 4489: 85 c0 test %eax,%eax 0.00 : 448b: 4c 89 f3 mov %r14,%rbx 0.00 : 448e: 0f 95 c0 setne %al 0.00 : 4491: 0f b6 c0 movzbl %al,%eax 0.00 : 4494: 89 45 a8 mov %eax,-0x58(%rbp) 0.00 : 4497: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 449b: 48 85 c0 test %rax,%rax 0.00 : 449e: 0f 84 3f 01 00 00 je 45e3 0.00 : 44a4: 48 89 c3 mov %rax,%rbx 0.00 : 44a7: eb ee jmp 4497 0.00 : 44a9: e8 42 dd ff ff callq 21f0 0.00 : 44ae: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 44b5: e9 13 f1 ff ff jmpq 35cd 0.00 : 44ba: 48 8b 3d ef a7 21 00 mov 0x21a7ef(%rip),%rdi # 21ecb0 <_rtld_global_ro+0x90> 0.00 : 44c1: 48 89 de mov %rbx,%rsi 0.00 : 44c4: e8 b7 a6 00 00 callq eb80 <_dl_name_match_p> 0.00 : 44c9: 85 c0 test %eax,%eax 0.00 : 44cb: 74 07 je 44d4 0.00 : 44cd: 48 89 1d e4 a7 21 00 mov %rbx,0x21a7e4(%rip) # 21ecb8 <_rtld_global_ro+0x98> 0.00 : 44d4: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : 44d8: 48 8b 33 mov (%rbx),%rsi 0.00 : 44db: 4c 8b 8b 40 03 00 00 mov 0x340(%rbx),%r9 0.00 : 44e2: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 44e5: 75 14 jne 44fb 0.00 : 44e7: 48 8b 05 1a a7 21 00 mov 0x21a71a(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 44ee: 4c 89 e1 mov %r12,%rcx 0.00 : 44f1: 48 8b 00 mov (%rax),%rax 0.00 : 44f4: 48 85 c0 test %rax,%rax 0.00 : 44f7: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 44fb: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 44ff: 48 8b 10 mov (%rax),%rdx 0.00 : 4502: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 4505: 75 14 jne 451b 0.00 : 4507: 48 8b 05 fa a6 21 00 mov 0x21a6fa(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 450e: 4c 89 e2 mov %r12,%rdx 0.00 : 4511: 48 8b 00 mov (%rax),%rax 0.00 : 4514: 48 85 c0 test %rax,%rax 0.00 : 4517: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 451b: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 4520: 48 8d 35 d8 52 01 00 lea 0x152d8(%rip),%rsi # 197ff 0.00 : 4527: 31 c0 xor %eax,%eax 0.00 : 4529: 41 b8 10 00 00 00 mov $0x10,%r8d 0.00 : 452f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4534: c7 04 24 10 00 00 00 movl $0x10,(%rsp) 0.00 : 453b: e8 c0 ac 00 00 callq f200 <_dl_dprintf> 0.00 : 4540: 48 8b 93 50 04 00 00 mov 0x450(%rbx),%rdx 0.00 : 4547: 48 85 d2 test %rdx,%rdx 0.00 : 454a: 74 7f je 45cb 0.00 : 454c: 4c 8b 83 48 04 00 00 mov 0x448(%rbx),%r8 0.00 : 4553: 48 8d 35 c2 52 01 00 lea 0x152c2(%rip),%rsi # 1981c 0.00 : 455a: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 455f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4564: 31 c0 xor %eax,%eax 0.00 : 4566: e8 95 ac 00 00 callq f200 <_dl_dprintf> 0.00 : 456b: e9 e6 fe ff ff jmpq 4456 0.00 : 4570: f6 c4 01 test $0x1,%ah 0.00 : 4573: 0f 85 99 03 00 00 jne 4912 0.00 : 4579: 49 83 7e 48 00 cmpq $0x0,0x48(%r14) 0.00 : 457e: 66 90 xchg %ax,%ax 0.00 : 4580: 0f 84 74 03 00 00 je 48fa 0.00 : 4586: 49 8b 5e 18 mov 0x18(%r14),%rbx 0.00 : 458a: 48 85 db test %rbx,%rbx 0.00 : 458d: 0f 1f 00 nopl (%rax) 0.00 : 4590: 0f 84 cd fe ff ff je 4463 0.00 : 4596: f6 83 15 03 00 00 02 testb $0x2,0x315(%rbx) 0.00 : 459d: 0f 84 ed 02 00 00 je 4890 0.00 : 45a3: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 45a7: 48 8d 35 3f 52 01 00 lea 0x1523f(%rip),%rsi # 197ed 0.00 : 45ae: bf 01 00 00 00 mov $0x1,%edi 0.00 : 45b3: 48 8b 10 mov (%rax),%rdx 0.00 : 45b6: 31 c0 xor %eax,%eax 0.00 : 45b8: e8 43 ac 00 00 callq f200 <_dl_dprintf> 0.00 : 45bd: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 45c1: 48 85 db test %rbx,%rbx 0.00 : 45c4: 75 d0 jne 4596 0.00 : 45c6: e9 98 fe ff ff jmpq 4463 0.00 : 45cb: 48 8d 35 0a 52 01 00 lea 0x1520a(%rip),%rsi # 197dc 0.00 : 45d2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 45d7: 31 c0 xor %eax,%eax 0.00 : 45d9: e8 22 ac 00 00 callq f200 <_dl_dprintf> 0.00 : 45de: e9 73 fe ff ff jmpq 4456 0.00 : 45e3: 48 8d 05 e6 b3 21 00 lea 0x21b3e6(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 45ea: 48 39 c3 cmp %rax,%rbx 0.00 : 45ed: 74 27 je 4616 0.00 : 45ef: f6 83 15 03 00 00 02 testb $0x2,0x315(%rbx) 0.00 : 45f6: 75 1e jne 4616 0.00 : 45f8: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 45ff: 48 8d 35 0a d3 ff ff lea -0x2cf6(%rip),%rsi # 1910 0.00 : 4606: 48 8d 3d a3 d1 ff ff lea -0x2e5d(%rip),%rdi # 17b0 0.00 : 460d: 48 89 5d a0 mov %rbx,-0x60(%rbp) 0.00 : 4611: e8 7a 97 00 00 callq dd90 <_dl_receive_error> 0.00 : 4616: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 461a: 48 85 db test %rbx,%rbx 0.00 : 461d: 75 c4 jne 45e3 0.00 : 461f: f6 05 fb a5 21 00 04 testb $0x4,0x21a5fb(%rip) # 21ec21 <_rtld_global_ro+0x1> 0.00 : 4626: 74 27 je 464f 0.00 : 4628: 80 bd 2e ff ff ff 00 cmpb $0x0,-0xd2(%rbp) 0.00 : 462f: 74 1e je 464f 0.00 : 4631: 80 25 ac b6 21 00 fb andb $0xfb,0x21b6ac(%rip) # 21fce4 <_rtld_global+0xc84> 0.00 : 4638: 48 8d 3d 91 b3 21 00 lea 0x21b391(%rip),%rdi # 21f9d0 <_rtld_global+0x970> 0.00 : 463f: 31 c9 xor %ecx,%ecx 0.00 : 4641: 49 8b b6 80 03 00 00 mov 0x380(%r14),%rsi 0.00 : 4648: 31 d2 xor %edx,%edx 0.00 : 464a: e8 21 6a 00 00 callq b070 <_dl_relocate_object> 0.00 : 464f: 8b 05 8b a7 21 00 mov 0x21a78b(%rip),%eax # 21ede0 0.00 : 4655: 85 c0 test %eax,%eax 0.00 : 4657: 0f 84 cc 03 00 00 je 4a29 0.00 : 465d: 4c 89 b5 58 ff ff ff mov %r14,-0xa8(%rbp) 0.00 : 4664: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4669: 48 8b 9d 58 ff ff ff mov -0xa8(%rbp),%rbx 0.00 : 4670: 48 8b 93 58 01 00 00 mov 0x158(%rbx),%rdx 0.00 : 4677: 48 85 d2 test %rdx,%rdx 0.00 : 467a: 0f 84 b7 03 00 00 je 4a37 0.00 : 4680: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 4684: 85 c9 test %ecx,%ecx 0.00 : 4686: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 468a: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 4691: 4c 8b 23 mov (%rbx),%r12 0.00 : 4694: 48 8b 5a 08 mov 0x8(%rdx),%rbx 0.00 : 4698: 74 13 je 46ad 0.00 : 469a: 48 8d 35 eb 51 01 00 lea 0x151eb(%rip),%rsi # 1988c 0.00 : 46a1: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46a6: 31 c0 xor %eax,%eax 0.00 : 46a8: e8 53 ab 00 00 callq f200 <_dl_dprintf> 0.00 : 46ad: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 46b4: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 46b8: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 46bb: 75 0a jne 46c7 0.00 : 46bd: 48 8b 05 44 a5 21 00 mov 0x21a544(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 46c4: 48 8b 10 mov (%rax),%rdx 0.00 : 46c7: 4e 8d 24 23 lea (%rbx,%r12,1),%r12 0.00 : 46cb: 48 8d 35 d2 51 01 00 lea 0x151d2(%rip),%rsi # 198a4 0.00 : 46d2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46d7: 31 c0 xor %eax,%eax 0.00 : 46d9: 4c 89 a5 68 ff ff ff mov %r12,-0x98(%rbp) 0.00 : 46e0: e8 1b ab 00 00 callq f200 <_dl_dprintf> 0.00 : 46e5: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 46ec: 4c 8b 25 6d a9 21 00 mov 0x21a96d(%rip),%r12 # 21f060 <_rtld_global> 0.00 : 46f3: 4c 8b bd 60 ff ff ff mov -0xa0(%rbp),%r15 0.00 : 46fa: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 46fd: 41 8b 9c 24 c0 02 00 mov 0x2c0(%r12),%ebx 0.00 : 4704: 00 0.00 : 4705: 49 01 c7 add %rax,%r15 0.00 : 4708: 85 db test %ebx,%ebx 0.00 : 470a: 0f 84 78 01 00 00 je 4888 0.00 : 4710: 49 8b 84 24 b8 02 00 mov 0x2b8(%r12),%rax 0.00 : 4717: 00 0.00 : 4718: 83 eb 01 sub $0x1,%ebx 0.00 : 471b: 4c 89 ff mov %r15,%rdi 0.00 : 471e: 89 da mov %ebx,%edx 0.00 : 4720: 4c 8d 2c d5 00 00 00 lea 0x0(,%rdx,8),%r13 0.00 : 4727: 00 0.00 : 4728: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 472c: e8 4f a4 00 00 callq eb80 <_dl_name_match_p> 0.00 : 4731: 85 c0 test %eax,%eax 0.00 : 4733: 74 d3 je 4708 0.00 : 4735: 49 8b 84 24 b8 02 00 mov 0x2b8(%r12),%rax 0.00 : 473c: 00 0.00 : 473d: 4e 8b 3c 28 mov (%rax,%r13,1),%r15 0.00 : 4741: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 4748: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 474b: 48 01 d0 add %rdx,%rax 0.00 : 474e: 4d 85 ff test %r15,%r15 0.00 : 4751: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 4758: 0f 84 dc 00 00 00 je 483a 0.00 : 475e: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 4765: 4c 8b a5 60 ff ff ff mov -0xa0(%rbp),%r12 0.00 : 476c: 8b 5b 08 mov 0x8(%rbx),%ebx 0.00 : 476f: 48 89 9d 08 ff ff ff mov %rbx,-0xf8(%rbp) 0.00 : 4776: 49 8b 47 68 mov 0x68(%r15),%rax 0.00 : 477a: 49 01 dc add %rbx,%r12 0.00 : 477d: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 4781: 49 8b 87 68 01 00 00 mov 0x168(%r15),%rax 0.00 : 4788: 48 85 c0 test %rax,%rax 0.00 : 478b: 0f 84 ba 00 00 00 je 484b 0.00 : 4791: 49 8b 1f mov (%r15),%rbx 0.00 : 4794: 48 03 58 08 add 0x8(%rax),%rbx 0.00 : 4798: eb 16 jmp 47b0 0.00 : 479a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 47a0: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 47a3: 85 c0 test %eax,%eax 0.00 : 47a5: 0f 84 a0 00 00 00 je 484b 0.00 : 47ab: 89 c0 mov %eax,%eax 0.00 : 47ad: 48 01 c3 add %rax,%rbx 0.00 : 47b0: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 47b3: 4c 89 e7 mov %r12,%rdi 0.00 : 47b6: 8b 34 03 mov (%rbx,%rax,1),%esi 0.00 : 47b9: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 47be: e8 9d 1e 01 00 callq 16660 0.00 : 47c3: 85 c0 test %eax,%eax 0.00 : 47c5: 75 d9 jne 47a0 0.00 : 47c7: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 47cb: 48 85 c0 test %rax,%rax 0.00 : 47ce: 74 7b je 484b 0.00 : 47d0: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 47d7: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 47de: 48 8d 3d cf 50 01 00 lea 0x150cf(%rip),%rdi # 198b4 0.00 : 47e5: 4c 8d 05 f1 4f 01 00 lea 0x14ff1(%rip),%r8 # 197dd 0.00 : 47ec: 49 89 c1 mov %rax,%r9 0.00 : 47ef: f6 46 04 02 testb $0x2,0x4(%rsi) 0.00 : 47f3: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 47f6: 48 8d 35 bf 50 01 00 lea 0x150bf(%rip),%rsi # 198bc 0.00 : 47fd: 4c 89 e1 mov %r12,%rcx 0.00 : 4800: 4c 0f 45 c7 cmovne %rdi,%r8 0.00 : 4804: 48 03 95 60 ff ff ff add -0xa0(%rbp),%rdx 0.00 : 480b: 31 c0 xor %eax,%eax 0.00 : 480d: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4812: e8 e9 a9 00 00 callq f200 <_dl_dprintf> 0.00 : 4817: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 481e: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 4821: 85 c0 test %eax,%eax 0.00 : 4823: 74 40 je 4865 0.00 : 4825: 89 c0 mov %eax,%eax 0.00 : 4827: 48 01 c3 add %rax,%rbx 0.00 : 482a: 4d 85 ff test %r15,%r15 0.00 : 482d: 48 89 9d 70 ff ff ff mov %rbx,-0x90(%rbp) 0.00 : 4834: 0f 85 24 ff ff ff jne 475e 0.00 : 483a: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 4841: 8b 49 08 mov 0x8(%rcx),%ecx 0.00 : 4844: 48 89 8d 08 ff ff ff mov %rcx,-0xf8(%rbp) 0.00 : 484b: 4c 8b a5 60 ff ff ff mov -0xa0(%rbp),%r12 0.00 : 4852: 48 8d 05 51 50 01 00 lea 0x15051(%rip),%rax # 198aa 0.00 : 4859: 4c 03 a5 08 ff ff ff add -0xf8(%rbp),%r12 0.00 : 4860: e9 6b ff ff ff jmpq 47d0 0.00 : 4865: 48 8b b5 68 ff ff ff mov -0x98(%rbp),%rsi 0.00 : 486c: 8b 46 0c mov 0xc(%rsi),%eax 0.00 : 486f: 85 c0 test %eax,%eax 0.00 : 4871: 0f 84 be 01 00 00 je 4a35 0.00 : 4877: 89 c0 mov %eax,%eax 0.00 : 4879: 48 01 c6 add %rax,%rsi 0.00 : 487c: 48 89 b5 68 ff ff ff mov %rsi,-0x98(%rbp) 0.00 : 4883: e9 5d fe ff ff jmpq 46e5 0.00 : 4888: 45 31 ff xor %r15d,%r15d 0.00 : 488b: e9 b1 fe ff ff jmpq 4741 0.00 : 4890: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 4894: 4c 8b 7b 08 mov 0x8(%rbx),%r15 0.00 : 4898: 4c 8b 28 mov (%rax),%r13 0.00 : 489b: 4c 89 fe mov %r15,%rsi 0.00 : 489e: 4c 89 ef mov %r13,%rdi 0.00 : 48a1: e8 ba 1d 01 00 callq 16660 0.00 : 48a6: 85 c0 test %eax,%eax 0.00 : 48a8: 75 25 jne 48cf 0.00 : 48aa: 4c 8b 83 40 03 00 00 mov 0x340(%rbx),%r8 0.00 : 48b1: 48 8d 35 b0 4f 01 00 lea 0x14fb0(%rip),%rsi # 19868 0.00 : 48b8: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 48bd: 4c 89 ea mov %r13,%rdx 0.00 : 48c0: bf 01 00 00 00 mov $0x1,%edi 0.00 : 48c5: e8 36 a9 00 00 callq f200 <_dl_dprintf> 0.00 : 48ca: e9 ee fc ff ff jmpq 45bd 0.00 : 48cf: 4c 8b 8b 40 03 00 00 mov 0x340(%rbx),%r9 0.00 : 48d6: 48 8d 35 9a 4f 01 00 lea 0x14f9a(%rip),%rsi # 19877 0.00 : 48dd: 41 b8 10 00 00 00 mov $0x10,%r8d 0.00 : 48e3: 4c 89 f9 mov %r15,%rcx 0.00 : 48e6: 4c 89 ea mov %r13,%rdx 0.00 : 48e9: bf 01 00 00 00 mov $0x1,%edi 0.00 : 48ee: 31 c0 xor %eax,%eax 0.00 : 48f0: e8 0b a9 00 00 callq f200 <_dl_dprintf> 0.00 : 48f5: e9 c3 fc ff ff jmpq 45bd 0.00 : 48fa: 48 8d 35 53 4f 01 00 lea 0x14f53(%rip),%rsi # 19854 0.00 : 4901: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4906: 31 c0 xor %eax,%eax 0.00 : 4908: e8 f3 a8 00 00 callq f200 <_dl_dprintf> 0.00 : 490d: e9 51 fb ff ff jmpq 4463 0.00 : 4912: 31 c0 xor %eax,%eax 0.00 : 4914: 83 3d 41 a3 21 00 00 cmpl $0x0,0x21a341(%rip) # 21ec5c <_rtld_global_ro+0x3c> 0.00 : 491b: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 4922: 48 8d 35 e7 cf ff ff lea -0x3019(%rip),%rsi # 1910 0.00 : 4929: 48 8d 3d 80 ce ff ff lea -0x3180(%rip),%rdi # 17b0 0.00 : 4930: 4c 89 75 a0 mov %r14,-0x60(%rbp) 0.00 : 4934: 4d 89 f5 mov %r14,%r13 0.00 : 4937: 0f 95 c0 setne %al 0.00 : 493a: 89 45 a8 mov %eax,-0x58(%rbp) 0.00 : 493d: e8 4e 94 00 00 callq dd90 <_dl_receive_error> 0.00 : 4942: 49 8b 5e 10 mov 0x10(%r14),%rbx 0.00 : 4946: ba 01 00 00 00 mov $0x1,%edx 0.00 : 494b: 48 8b 03 mov (%rbx),%rax 0.00 : 494e: 48 85 c0 test %rax,%rax 0.00 : 4951: 74 16 je 4969 0.00 : 4953: 48 83 e8 01 sub $0x1,%rax 0.00 : 4957: 0f 84 f7 00 00 00 je 4a54 0.00 : 495d: 48 83 c3 10 add $0x10,%rbx 0.00 : 4961: 48 8b 03 mov (%rbx),%rax 0.00 : 4964: 48 85 c0 test %rax,%rax 0.00 : 4967: 75 ea jne 4953 0.00 : 4969: 83 f2 01 xor $0x1,%edx 0.00 : 496c: 0f b6 fa movzbl %dl,%edi 0.00 : 496f: e8 4c 19 01 00 callq 162c0 <_Exit> 0.00 : 4974: e9 ea fa ff ff jmpq 4463 0.00 : 4979: 83 3d 68 a4 21 00 01 cmpl $0x1,0x21a468(%rip) # 21ede8 <_dl_argc> 0.00 : 4980: 0f 86 a3 00 00 00 jbe 4a29 0.00 : 4986: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 498a: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 498f: 48 89 bd f8 fe ff ff mov %rdi,-0x108(%rbp) 0.00 : 4996: 48 8b 05 6b a2 21 00 mov 0x21a26b(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 499d: 41 89 dc mov %ebx,%r12d 0.00 : 49a0: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 49a7: 00 0.00 : 49a8: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 49af: 49 8b 8e 80 03 00 00 mov 0x380(%r14),%rcx 0.00 : 49b6: 45 31 c0 xor %r8d,%r8d 0.00 : 49b9: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 49bf: 4c 89 f6 mov %r14,%rsi 0.00 : 49c2: 4a 8b 3c e0 mov (%rax,%r12,8),%rdi 0.00 : 49c6: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 49cd: 00 00 0.00 : 49cf: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : 49d6: e8 95 51 00 00 callq 9b70 <_dl_lookup_symbol_x> 0.00 : 49db: 31 c9 xor %ecx,%ecx 0.00 : 49dd: 48 85 c0 test %rax,%rax 0.00 : 49e0: 74 03 je 49e5 0.00 : 49e2: 48 8b 08 mov (%rax),%rcx 0.00 : 49e5: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 49e9: 48 8d 35 78 66 01 00 lea 0x16678(%rip),%rsi # 1b068 <__PRETTY_FUNCTION__.3644+0xcf7> 0.00 : 49f0: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : 49f6: bf 01 00 00 00 mov $0x1,%edi 0.00 : 49fb: 83 c3 01 add $0x1,%ebx 0.00 : 49fe: 4c 8b 40 08 mov 0x8(%rax),%r8 0.00 : 4a02: 48 8b 05 ff a1 21 00 mov 0x21a1ff(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 4a09: 4a 8b 14 e0 mov (%rax,%r12,8),%rdx 0.00 : 4a0d: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 4a11: 31 c0 xor %eax,%eax 0.00 : 4a13: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 4a18: e8 e3 a7 00 00 callq f200 <_dl_dprintf> 0.00 : 4a1d: 39 1d c5 a3 21 00 cmp %ebx,0x21a3c5(%rip) # 21ede8 <_dl_argc> 0.00 : 4a23: 0f 87 6d ff ff ff ja 4996 0.00 : 4a29: 31 ff xor %edi,%edi 0.00 : 4a2b: e8 90 18 01 00 callq 162c0 <_Exit> 0.00 : 4a30: e9 b2 eb ff ff jmpq 35e7 0.00 : 4a35: 31 c9 xor %ecx,%ecx 0.00 : 4a37: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 4a3e: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 4a42: 48 85 ff test %rdi,%rdi 0.00 : 4a45: 48 89 bd 58 ff ff ff mov %rdi,-0xa8(%rbp) 0.00 : 4a4c: 0f 85 17 fc ff ff jne 4669 0.00 : 4a52: eb d5 jmp 4a29 0.00 : 4a54: 4d 8b 6d 18 mov 0x18(%r13),%r13 0.00 : 4a58: 41 8b 8d d4 03 00 00 mov 0x3d4(%r13),%ecx 0.00 : 4a5f: 85 c9 test %ecx,%ecx 0.00 : 4a61: 0f 85 f6 fe ff ff jne 495d 0.00 : 4a67: 84 d2 test %dl,%dl 0.00 : 4a69: 74 13 je 4a7e 0.00 : 4a6b: 48 8d 35 c0 4d 01 00 lea 0x14dc0(%rip),%rsi # 19832 0.00 : 4a72: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4a77: 31 c0 xor %eax,%eax 0.00 : 4a79: e8 82 a7 00 00 callq f200 <_dl_dprintf> 0.00 : 4a7e: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 4a82: 48 8d 35 c6 4d 01 00 lea 0x14dc6(%rip),%rsi # 1984f 0.00 : 4a89: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4a8e: 31 c0 xor %eax,%eax 0.00 : 4a90: e8 6b a7 00 00 callq f200 <_dl_dprintf> 0.00 : 4a95: 31 d2 xor %edx,%edx 0.00 : 4a97: e9 c1 fe ff ff jmpq 495d 0.00 : 4a9c: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) 0.00 : 4aa3: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 4aa7: 48 85 c0 test %rax,%rax 0.00 : 4aaa: 0f 84 a4 ee ff ff je 3954 0.00 : 4ab0: eb ea jmp 4a9c 0.00 : 4ab2: 48 8d 0d 41 4e 01 00 lea 0x14e41(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4ab9: 48 8d 35 a7 4a 01 00 lea 0x14aa7(%rip),%rsi # 19567 0.00 : 4ac0: 48 8d 3d a1 63 01 00 lea 0x163a1(%rip),%rdi # 1ae68 <__PRETTY_FUNCTION__.3644+0xaf7> 0.00 : 4ac7: ba f0 04 00 00 mov $0x4f0,%edx 0.00 : 4acc: e8 9f 02 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 4ad1: 48 8b 05 30 a1 21 00 mov 0x21a130(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 4ad8: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4adf: 00 0.00 : 4ae0: 48 8d 55 b8 lea -0x48(%rbp),%rdx 0.00 : 4ae4: 48 8d 4d b0 lea -0x50(%rbp),%rcx 0.00 : 4ae8: 4c 8d 45 80 lea -0x80(%rbp),%r8 0.00 : 4aec: 48 8b 00 mov (%rax),%rax 0.00 : 4aef: 48 89 95 f0 fe ff ff mov %rdx,-0x110(%rbp) 0.00 : 4af6: 48 89 8d f8 fe ff ff mov %rcx,-0x108(%rbp) 0.00 : 4afd: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 4b04: 48 8d 0d 25 cd ff ff lea -0x32db(%rip),%rcx # 1830 0.00 : 4b0b: 48 8b bd f8 fe ff ff mov -0x108(%rbp),%rdi 0.00 : 4b12: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) 0.00 : 4b19: 00 0.00 : 4b1a: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 4b1e: 48 8d 45 cf lea -0x31(%rbp),%rax 0.00 : 4b22: c7 45 90 00 00 00 20 movl $0x20000000,-0x70(%rbp) 0.00 : 4b29: 48 89 c2 mov %rax,%rdx 0.00 : 4b2c: e8 df 92 00 00 callq de10 <_dl_catch_error> 0.00 : 4b31: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) 0.00 : 4b36: 0f 84 69 ef ff ff je 3aa5 0.00 : 4b3c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4b41: e8 7a 17 01 00 callq 162c0 <_Exit> 0.00 : 4b46: e9 5a ef ff ff jmpq 3aa5 0.00 : 4b4b: 4c 8b 2d 0e a5 21 00 mov 0x21a50e(%rip),%r13 # 21f060 <_rtld_global> 0.00 : 4b52: 41 f6 85 15 03 00 00 testb $0x8,0x315(%r13) 0.00 : 4b59: 08 0.00 : 4b5a: 0f 85 a2 ec ff ff jne 3802 0.00 : 4b60: 4c 8b 25 c9 a1 21 00 mov 0x21a1c9(%rip),%r12 # 21ed30 <_rtld_global_ro+0x110> 0.00 : 4b67: 31 db xor %ebx,%ebx 0.00 : 4b69: 49 8b 14 24 mov (%r12),%rdx 0.00 : 4b6d: 48 85 d2 test %rdx,%rdx 0.00 : 4b70: 74 12 je 4b84 0.00 : 4b72: 89 d8 mov %ebx,%eax 0.00 : 4b74: 31 f6 xor %esi,%esi 0.00 : 4b76: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4b7a: 49 8d bc 05 70 04 00 lea 0x470(%r13,%rax,1),%rdi 0.00 : 4b81: 00 0.00 : 4b82: ff d2 callq *%rdx 0.00 : 4b84: 83 c3 01 add $0x1,%ebx 0.00 : 4b87: 39 1d ab a1 21 00 cmp %ebx,0x21a1ab(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 4b8d: 4d 8b 64 24 40 mov 0x40(%r12),%r12 0.00 : 4b92: 77 d5 ja 4b69 0.00 : 4b94: e9 69 ec ff ff jmpq 3802 0.00 : 4b99: 48 8d 0d 5a 4d 01 00 lea 0x14d5a(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4ba0: 48 8d 35 c0 49 01 00 lea 0x149c0(%rip),%rsi # 19567 0.00 : 4ba7: 48 8d 3d 42 65 01 00 lea 0x16542(%rip),%rdi # 1b0f0 <__PRETTY_FUNCTION__.3644+0xd7f> 0.00 : 4bae: ba bc 08 00 00 mov $0x8bc,%edx 0.00 : 4bb3: e8 b8 01 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 4bb8: 48 8d 0d 3b 4d 01 00 lea 0x14d3b(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4bbf: 48 8d 35 a1 49 01 00 lea 0x149a1(%rip),%rsi # 19567 0.00 : 4bc6: 48 8d 3d 4b 64 01 00 lea 0x1644b(%rip),%rdi # 1b018 <__PRETTY_FUNCTION__.3644+0xca7> 0.00 : 4bcd: ba 70 07 00 00 mov $0x770,%edx 0.00 : 4bd2: e8 99 01 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 4bd7: 48 8d 0d 1c 4d 01 00 lea 0x14d1c(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4bde: 48 8d 35 82 49 01 00 lea 0x14982(%rip),%rsi # 19567 0.00 : 4be5: 48 8d 3d dc 63 01 00 lea 0x163dc(%rip),%rdi # 1afc8 <__PRETTY_FUNCTION__.3644+0xc57> 0.00 : 4bec: ba 6c 07 00 00 mov $0x76c,%edx 0.00 : 4bf1: e8 7a 01 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 4bf6: 48 39 c2 cmp %rax,%rdx 0.00 : 4bf9: 0f 84 38 e9 ff ff je 3537 0.00 : 4bff: 48 89 05 ea ad 21 00 mov %rax,0x21adea(%rip) # 21f9f0 <_rtld_global+0x990> 0.00 : 4c06: 48 8b 48 18 mov 0x18(%rax),%rcx 0.00 : 4c0a: e9 18 e9 ff ff jmpq 3527 0.00 : 4c0f: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 4c13: 48 89 05 ce ad 21 00 mov %rax,0x21adce(%rip) # 21f9e8 <_rtld_global+0x988> 0.00 : 4c1a: 48 89 c8 mov %rcx,%rax 0.00 : 4c1d: 48 8b 49 18 mov 0x18(%rcx),%rcx 0.00 : 4c21: e9 01 e9 ff ff jmpq 3527 0.00 : 4c26: 48 8d 0d cd 4c 01 00 lea 0x14ccd(%rip),%rcx # 198fa <__PRETTY_FUNCTION__.12596> 0.00 : 4c2d: 48 8d 35 33 49 01 00 lea 0x14933(%rip),%rsi # 19567 0.00 : 4c34: 48 8d 3d 5d 64 01 00 lea 0x1645d(%rip),%rdi # 1b098 <__PRETTY_FUNCTION__.3644+0xd27> 0.00 : 4c3b: ba 7b 08 00 00 mov $0x87b,%edx 0.00 : 4c40: e8 2b 01 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 4c45: c6 01 00 movb $0x0,(%rcx) 0.00 : 4c48: 31 db xor %ebx,%ebx 0.00 : 4c4a: e9 2f f7 ff ff jmpq 437e 0.00 : 4c4f: 48 85 db test %rbx,%rbx 0.00 : 4c52: 74 4a je 4c9e 0.00 : 4c54: 4c 89 ee mov %r13,%rsi 0.00 : 4c57: 48 89 df mov %rbx,%rdi 0.00 : 4c5a: 48 29 de sub %rbx,%rsi 0.00 : 4c5d: 48 03 75 c0 add -0x40(%rbp),%rsi 0.00 : 4c61: e8 fa 1b 01 00 callq 16860 <__strnlen> 0.00 : 4c66: 48 8d 50 1f lea 0x1f(%rax),%rdx 0.00 : 4c6a: 48 89 de mov %rbx,%rsi 0.00 : 4c6d: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 4c71: 48 29 d4 sub %rdx,%rsp 0.00 : 4c74: 48 89 c2 mov %rax,%rdx 0.00 : 4c77: 48 8d 7c 24 1f lea 0x1f(%rsp),%rdi 0.00 : 4c7c: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 4c80: c6 04 07 00 movb $0x0,(%rdi,%rax,1) 0.00 : 4c84: e8 67 26 01 00 callq 172f0 0.00 : 4c89: 48 8d 15 60 7a 01 00 lea 0x17a60(%rip),%rdx # 1c6f0 0.00 : 4c90: 48 89 c7 mov %rax,%rdi 0.00 : 4c93: 4c 89 f6 mov %r14,%rsi 0.00 : 4c96: e8 75 ca ff ff callq 1710 0.00 : 4c9b: 41 01 c7 add %eax,%r15d 0.00 : 4c9e: 0f 31 rdtsc 0.00 : 4ca0: 89 c1 mov %eax,%ecx 0.00 : 4ca2: 8b 85 40 ff ff ff mov -0xc0(%rbp),%eax 0.00 : 4ca8: 89 d6 mov %edx,%esi 0.00 : 4caa: 44 89 e2 mov %r12d,%edx 0.00 : 4cad: 89 c9 mov %ecx,%ecx 0.00 : 4caf: 4c 89 ef mov %r13,%rdi 0.00 : 4cb2: 48 c1 e0 20 shl $0x20,%rax 0.00 : 4cb6: 48 09 d0 or %rdx,%rax 0.00 : 4cb9: 48 8b 15 00 a1 21 00 mov 0x21a100(%rip),%rdx # 21edc0 0.00 : 4cc0: 48 29 c2 sub %rax,%rdx 0.00 : 4cc3: 48 89 f0 mov %rsi,%rax 0.00 : 4cc6: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 4cca: 48 c1 e0 20 shl $0x20,%rax 0.00 : 4cce: 48 09 c8 or %rcx,%rax 0.00 : 4cd1: 48 01 c2 add %rax,%rdx 0.00 : 4cd4: 48 89 15 e5 a0 21 00 mov %rdx,0x21a0e5(%rip) # 21edc0 0.00 : 4cdb: e8 20 15 01 00 callq 16200 <__munmap> 0.00 : 4ce0: e9 c8 e5 ff ff jmpq 32ad Sorted summary for file /bin/gawk ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000041f710 : 0.00 : 41f710: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 41f715: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 41f71a: 49 89 fc mov %rdi,%r12 0.00 : 41f71d: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 41f722: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 41f727: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 41f72c: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 41f731: 48 83 ec 78 sub $0x78,%rsp 0.00 : 41f735: 48 8b 3f mov (%rdi),%rdi 0.00 : 41f738: 48 85 ff test %rdi,%rdi 0.00 : 41f73b: 0f 84 06 06 00 00 je 41fd47 0.00 : 41f741: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 41f744: 83 f8 47 cmp $0x47,%eax 0.00 : 41f747: 0f 84 33 03 00 00 je 41fa80 0.00 : 41f74d: 83 f8 49 cmp $0x49,%eax 0.00 : 41f750: 0f 84 b6 05 00 00 je 41fd0c 0.00 : 41f756: 31 f6 xor %esi,%esi 0.00 : 41f758: e8 63 8b 01 00 callq 4382c0 0.00 : 41f75d: 48 89 c7 mov %rax,%rdi 0.00 : 41f760: 0f b7 40 3c movzwl 0x3c(%rax),%eax 0.00 : 41f764: f6 c4 08 test $0x8,%ah 0.00 : 41f767: 0f 85 92 05 00 00 jne 41fcff 0.00 : 41f76d: a8 10 test $0x10,%al 0.00 : 41f76f: 0f 84 8a 05 00 00 je 41fcff 0.00 : 41f775: 8b 47 20 mov 0x20(%rdi),%eax 0.00 : 41f778: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 41f77b: 0f 85 72 05 00 00 jne 41fcf3 0.00 : 41f781: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 41f786: 49 89 fe mov %rdi,%r14 0.00 : 41f789: 48 8b 18 mov (%rax),%rbx 0.00 : 41f78c: 48 85 db test %rbx,%rbx 0.00 : 41f78f: 0f 84 33 03 00 00 je 41fac8 25.00 : 41f795: 8b 43 38 mov 0x38(%rbx),%eax 0.00 : 41f798: 83 f8 47 cmp $0x47,%eax 0.00 : 41f79b: 0f 84 6f 01 00 00 je 41f910 0.00 : 41f7a1: 83 f8 49 cmp $0x49,%eax 0.00 : 41f7a4: 0f 84 7c 05 00 00 je 41fd26 0.00 : 41f7aa: 31 f6 xor %esi,%esi 0.00 : 41f7ac: 48 89 df mov %rbx,%rdi 0.00 : 41f7af: e8 0c 8b 01 00 callq 4382c0 0.00 : 41f7b4: 48 89 c3 mov %rax,%rbx 0.00 : 41f7b7: 0f b7 40 3c movzwl 0x3c(%rax),%eax 0.00 : 41f7bb: a8 20 test $0x20,%al 0.00 : 41f7bd: 0f 84 9a 05 00 00 je 41fd5d 0.00 : 41f7c3: a8 02 test $0x2,%al 0.00 : 41f7c5: f2 0f 10 23 movsd (%rbx),%xmm4 0.00 : 41f7c9: 0f 84 6c 01 00 00 je 41f93b 0.00 : 41f7cf: 48 89 df mov %rbx,%rdi 0.00 : 41f7d2: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41f7d7: e8 84 4f 01 00 callq 434760 0.00 : 41f7dc: f2 0f 10 1d c4 0b 02 movsd 0x20bc4(%rip),%xmm3 # 4403a8 <_IO_stdin_used+0x4888> 0.00 : 41f7e3: 00 0.00 : 41f7e4: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 41f7e9: 66 0f 2e e3 ucomisd %xmm3,%xmm4 0.00 : 41f7ed: 0f 82 5a 01 00 00 jb 41f94d 0.00 : 41f7f3: 8b 35 07 0b 23 00 mov 0x230b07(%rip),%esi # 650300 0.00 : 41f7f9: 85 f6 test %esi,%esi 0.00 : 41f7fb: 0f 85 ab 08 00 00 jne 4200ac 0.00 : 41f801: 66 0f 2e 25 8f 27 02 ucomisd 0x2278f(%rip),%xmm4 # 441f98 <_IO_stdin_used+0x6478> 0.00 : 41f808: 00 0.00 : 41f809: 0f 87 63 05 00 00 ja 41fd72 0.00 : 41f80f: 0f 8a 5d 05 00 00 jp 41fd72 0.00 : 41f815: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 41f819: f2 0f 10 0d 67 27 02 movsd 0x22767(%rip),%xmm1 # 441f88 <_IO_stdin_used+0x6468> 0.00 : 41f820: 00 0.00 : 41f821: f2 0f 5c c3 subsd %xmm3,%xmm0 0.00 : 41f825: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 41f829: 0f 83 c1 00 00 00 jae 41f8f0 0.00 : 41f82f: f2 48 0f 2c e8 cvttsd2si %xmm0,%rbp 0.00 : 41f834: 4d 8b 44 24 08 mov 0x8(%r12),%r8 0.00 : 41f839: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : 41f83d: 48 85 c0 test %rax,%rax 0.00 : 41f840: 0f 85 2a 01 00 00 jne 41f970 0.00 : 41f846: 49 8b 4e 10 mov 0x10(%r14),%rcx 0.00 : 41f84a: 48 89 cb mov %rcx,%rbx 0.00 : 41f84d: 48 29 eb sub %rbp,%rbx 0.00 : 41f850: 83 3d b1 51 23 00 01 cmpl $0x1,0x2351b1(%rip) # 654a08 0.00 : 41f857: 0f 8f cf 08 00 00 jg 42012c 0.00 : 41f85d: 48 85 db test %rbx,%rbx 0.00 : 41f860: 0f 88 4a 03 00 00 js 41fbb0 0.00 : 41f866: f2 48 0f 2a d3 cvtsi2sd %rbx,%xmm2 0.00 : 41f86b: 48 85 c9 test %rcx,%rcx 25.00 : 41f86e: 49 89 cd mov %rcx,%r13 0.00 : 41f871: 0f 84 07 05 00 00 je 41fd7e 0.00 : 41f877: 83 3d 8a 51 23 00 01 cmpl $0x1,0x23518a(%rip) # 654a08 0.00 : 41f87e: 0f 8f 17 05 00 00 jg 41fd9b 0.00 : 41f884: 48 39 cd cmp %rcx,%rbp 0.00 : 41f887: 0f 83 88 05 00 00 jae 41fe15 0.00 : 41f88d: 49 89 cc mov %rcx,%r12 0.00 : 41f890: 49 29 ec sub %rbp,%r12 0.00 : 41f893: 4c 39 e3 cmp %r12,%rbx 0.00 : 41f896: 0f 87 ce 05 00 00 ja 41fe6a 0.00 : 41f89c: 83 3d 65 51 23 00 01 cmpl $0x1,0x235165(%rip) # 654a08 0.00 : 41f8a3: 49 89 dc mov %rbx,%r12 0.00 : 41f8a6: 0f 8f 49 03 00 00 jg 41fbf5 0.00 : 41f8ac: 49 03 6e 08 add 0x8(%r14),%rbp 0.00 : 41f8b0: 48 89 de mov %rbx,%rsi 0.00 : 41f8b3: 48 89 ef mov %rbp,%rdi 0.00 : 41f8b6: e8 d5 5e 01 00 callq 435790 0.00 : 41f8bb: 41 f6 46 3c 02 testb $0x2,0x3c(%r14) 0.00 : 41f8c0: 48 89 c3 mov %rax,%rbx 0.00 : 41f8c3: 0f 85 a3 01 00 00 jne 41fa6c 0.00 : 41f8c9: 48 89 d8 mov %rbx,%rax 0.00 : 41f8cc: 48 8b 6c 24 50 mov 0x50(%rsp),%rbp 0.00 : 41f8d1: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 41f8d6: 4c 8b 64 24 58 mov 0x58(%rsp),%r12 0.00 : 41f8db: 4c 8b 6c 24 60 mov 0x60(%rsp),%r13 0.00 : 41f8e0: 4c 8b 74 24 68 mov 0x68(%rsp),%r14 0.00 : 41f8e5: 4c 8b 7c 24 70 mov 0x70(%rsp),%r15 0.00 : 41f8ea: 48 83 c4 78 add $0x78,%rsp 0.00 : 41f8ee: c3 retq 0.00 : 41f8ef: 90 nop 0.00 : 41f8f0: f2 0f 5c c1 subsd %xmm1,%xmm0 0.00 : 41f8f4: 48 bf 00 00 00 00 00 movabs $0x8000000000000000,%rdi 0.00 : 41f8fb: 00 00 80 0.00 : 41f8fe: f2 48 0f 2c e8 cvttsd2si %xmm0,%rbp 0.00 : 41f903: 48 31 fd xor %rdi,%rbp 0.00 : 41f906: e9 29 ff ff ff jmpq 41f834 0.00 : 41f90b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 25.00 : 41f910: 48 8b 3b mov (%rbx),%rdi 0.00 : 41f913: 48 3b 3d c6 50 23 00 cmp 0x2350c6(%rip),%rdi # 6549e0 0.00 : 41f91a: 0f 84 8a fe ff ff je 41f7aa 0.00 : 41f920: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 41f924: 48 89 fb mov %rdi,%rbx 0.00 : 41f927: a8 20 test $0x20,%al 0.00 : 41f929: 0f 84 2e 04 00 00 je 41fd5d 0.00 : 41f92f: f2 0f 10 23 movsd (%rbx),%xmm4 0.00 : 41f933: a8 02 test $0x2,%al 0.00 : 41f935: 0f 85 94 fe ff ff jne 41f7cf 0.00 : 41f93b: f2 0f 10 1d 65 0a 02 movsd 0x20a65(%rip),%xmm3 # 4403a8 <_IO_stdin_used+0x4888> 0.00 : 41f942: 00 0.00 : 41f943: 66 0f 2e e3 ucomisd %xmm3,%xmm4 0.00 : 41f947: 0f 83 a6 fe ff ff jae 41f7f3 0.00 : 41f94d: 8b 0d ad 09 23 00 mov 0x2309ad(%rip),%ecx # 650300 0.00 : 41f953: 85 c9 test %ecx,%ecx 0.00 : 41f955: 0f 85 37 08 00 00 jne 420192 0.00 : 41f95b: 66 0f 28 e3 movapd %xmm3,%xmm4 0.00 : 41f95f: 31 ed xor %ebp,%ebp 0.00 : 41f961: e9 ce fe ff ff jmpq 41f834 0.00 : 41f966: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41f96d: 00 00 00 0.00 : 41f970: 48 8b 18 mov (%rax),%rbx 0.00 : 41f973: 48 85 db test %rbx,%rbx 0.00 : 41f976: 0f 84 61 03 00 00 je 41fcdd 0.00 : 41f97c: 8b 43 38 mov 0x38(%rbx),%eax 0.00 : 41f97f: 83 f8 47 cmp $0x47,%eax 0.00 : 41f982: 0f 84 58 01 00 00 je 41fae0 0.00 : 41f988: 83 f8 49 cmp $0x49,%eax 0.00 : 41f98b: 0f 84 e7 01 00 00 je 41fb78 0.00 : 41f991: 48 89 df mov %rbx,%rdi 0.00 : 41f994: 31 f6 xor %esi,%esi 0.00 : 41f996: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 41f99c: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41f9a1: e8 1a 89 01 00 callq 4382c0 0.00 : 41f9a6: 48 89 c3 mov %rax,%rbx 0.00 : 41f9a9: 0f b7 40 3c movzwl 0x3c(%rax),%eax 0.00 : 41f9ad: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 41f9b2: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 41f9b8: a8 20 test $0x20,%al 0.00 : 41f9ba: 0f 84 a7 07 00 00 je 420167 0.00 : 41f9c0: f2 0f 10 13 movsd (%rbx),%xmm2 0.00 : 41f9c4: a8 02 test $0x2,%al 0.00 : 41f9c6: 0f 85 0a 05 00 00 jne 41fed6 0.00 : 41f9cc: 66 0f 2e d3 ucomisd %xmm3,%xmm2 0.00 : 41f9d0: 0f 82 2f 05 00 00 jb 41ff05 0.00 : 41f9d6: 8b 0d 24 09 23 00 mov 0x230924(%rip),%ecx # 650300 0.00 : 41f9dc: 85 c9 test %ecx,%ecx 0.00 : 41f9de: 0f 85 8d 05 00 00 jne 41ff71 0.00 : 41f9e4: f2 0f 10 1d ac 25 02 movsd 0x225ac(%rip),%xmm3 # 441f98 <_IO_stdin_used+0x6478> 0.00 : 41f9eb: 00 0.00 : 41f9ec: 66 0f 2e da ucomisd %xmm2,%xmm3 0.00 : 41f9f0: 0f 86 29 06 00 00 jbe 42001f 0.00 : 41f9f6: f2 0f 10 05 8a 25 02 movsd 0x2258a(%rip),%xmm0 # 441f88 <_IO_stdin_used+0x6468> 0.00 : 41f9fd: 00 0.00 : 41f9fe: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 41fa02: 0f 83 c8 01 00 00 jae 41fbd0 0.00 : 41fa08: f2 48 0f 2c da cvttsd2si %xmm2,%rbx 0.00 : 41fa0d: 4d 8b 6e 10 mov 0x10(%r14),%r13 0.00 : 41fa11: 4d 85 ed test %r13,%r13 0.00 : 41fa14: 0f 84 64 03 00 00 je 41fd7e 0.00 : 41fa1a: 83 3d e7 4f 23 00 01 cmpl $0x1,0x234fe7(%rip) # 654a08 0.00 : 41fa21: 0f 8f 74 03 00 00 jg 41fd9b 0.00 : 41fa27: 4c 39 ed cmp %r13,%rbp 0.00 : 41fa2a: 0f 83 e5 03 00 00 jae 41fe15 0.00 : 41fa30: 4d 89 ec mov %r13,%r12 0.00 : 41fa33: 49 29 ec sub %rbp,%r12 0.00 : 41fa36: 4c 39 e3 cmp %r12,%rbx 0.00 : 41fa39: 0f 87 2b 04 00 00 ja 41fe6a 0.00 : 41fa3f: 49 89 dc mov %rbx,%r12 0.00 : 41fa42: 83 3d bf 4f 23 00 01 cmpl $0x1,0x234fbf(%rip) # 654a08 0.00 : 41fa49: 0f 8f a2 01 00 00 jg 41fbf1 0.00 : 41fa4f: 49 03 6e 08 add 0x8(%r14),%rbp 0.00 : 41fa53: 4c 89 e6 mov %r12,%rsi 0.00 : 41fa56: 48 89 ef mov %rbp,%rdi 0.00 : 41fa59: e8 32 5d 01 00 callq 435790 0.00 : 41fa5e: 48 89 c3 mov %rax,%rbx 0.00 : 41fa61: 41 f6 46 3c 02 testb $0x2,0x3c(%r14) 0.00 : 41fa66: 0f 84 5d fe ff ff je 41f8c9 0.00 : 41fa6c: 4c 89 f7 mov %r14,%rdi 0.00 : 41fa6f: e8 ec 4c 01 00 callq 434760 0.00 : 41fa74: e9 50 fe ff ff jmpq 41f8c9 0.00 : 41fa79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41fa80: 48 8b 07 mov (%rdi),%rax 0.00 : 41fa83: 48 3b 05 56 4f 23 00 cmp 0x234f56(%rip),%rax # 6549e0 0.00 : 41fa8a: 0f 84 c6 fc ff ff je 41f756 0.00 : 41fa90: 48 89 c7 mov %rax,%rdi 0.00 : 41fa93: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 41fa97: f6 c4 08 test $0x8,%ah 0.00 : 41fa9a: 0f 85 5f 02 00 00 jne 41fcff 0.00 : 41faa0: a8 10 test $0x10,%al 0.00 : 41faa2: 0f 84 57 02 00 00 je 41fcff 0.00 : 41faa8: 8b 47 20 mov 0x20(%rdi),%eax 0.00 : 41faab: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 41faae: 0f 85 3f 02 00 00 jne 41fcf3 0.00 : 41fab4: 49 89 fe mov %rdi,%r14 0.00 : 41fab7: 49 8b 54 24 08 mov 0x8(%r12),%rdx 0.00 : 41fabc: 48 8b 1a mov (%rdx),%rbx 0.00 : 41fabf: 48 85 db test %rbx,%rbx 0.00 : 41fac2: 0f 85 cd fc ff ff jne 41f795 0.00 : 41fac8: ba d0 03 44 00 mov $0x4403d0,%edx 0.00 : 41facd: be b9 05 00 00 mov $0x5b9,%esi 0.00 : 41fad2: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 41fad7: 31 c0 xor %eax,%eax 0.00 : 41fad9: e8 ec 19 ff ff callq 4114ca 0.00 : 41fade: 66 90 xchg %ax,%ax 0.00 : 41fae0: 48 8b 03 mov (%rbx),%rax 0.00 : 41fae3: 48 3b 05 f6 4e 23 00 cmp 0x234ef6(%rip),%rax # 6549e0 0.00 : 41faea: 0f 84 a1 fe ff ff je 41f991 0.00 : 41faf0: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 41faf4: 48 89 c3 mov %rax,%rbx 0.00 : 41faf7: f6 c2 20 test $0x20,%dl 0.00 : 41fafa: 0f 84 67 06 00 00 je 420167 0.00 : 41fb00: 83 e2 02 and $0x2,%edx 0.00 : 41fb03: f2 0f 10 10 movsd (%rax),%xmm2 0.00 : 41fb07: 0f 85 c9 03 00 00 jne 41fed6 0.00 : 41fb0d: 66 0f 2e d3 ucomisd %xmm3,%xmm2 0.00 : 41fb11: 0f 82 ee 03 00 00 jb 41ff05 0.00 : 41fb17: 8b 05 e3 07 23 00 mov 0x2307e3(%rip),%eax # 650300 0.00 : 41fb1d: 85 c0 test %eax,%eax 0.00 : 41fb1f: 0f 85 4c 04 00 00 jne 41ff71 0.00 : 41fb25: 66 0f 2e 15 6b 24 02 ucomisd 0x2246b(%rip),%xmm2 # 441f98 <_IO_stdin_used+0x6478> 0.00 : 41fb2c: 00 0.00 : 41fb2d: 0f 83 ec 04 00 00 jae 42001f 0.00 : 41fb33: 0f 8a e6 04 00 00 jp 42001f 25.00 : 41fb39: f2 0f 10 05 47 24 02 movsd 0x22447(%rip),%xmm0 # 441f88 <_IO_stdin_used+0x6468> 0.00 : 41fb40: 00 0.00 : 41fb41: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 41fb45: 73 11 jae 41fb58 0.00 : 41fb47: f2 48 0f 2c da cvttsd2si %xmm2,%rbx 0.00 : 41fb4c: 49 8b 4e 10 mov 0x10(%r14),%rcx 0.00 : 41fb50: e9 16 fd ff ff jmpq 41f86b 0.00 : 41fb55: 0f 1f 00 nopl (%rax) 0.00 : 41fb58: 66 0f 28 da movapd %xmm2,%xmm3 0.00 : 41fb5c: 48 ba 00 00 00 00 00 movabs $0x8000000000000000,%rdx 0.00 : 41fb63: 00 00 80 0.00 : 41fb66: f2 0f 5c d8 subsd %xmm0,%xmm3 0.00 : 41fb6a: f2 48 0f 2c db cvttsd2si %xmm3,%rbx 0.00 : 41fb6f: 48 31 d3 xor %rdx,%rbx 0.00 : 41fb72: eb d8 jmp 41fb4c 0.00 : 41fb74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41fb78: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 41fb7c: f6 c4 08 test $0x8,%ah 0.00 : 41fb7f: 0f 84 33 fe ff ff je 41f9b8 0.00 : 41fb85: 48 89 df mov %rbx,%rdi 0.00 : 41fb88: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 41fb8e: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41fb93: e8 18 65 01 00 callq 4360b0 0.00 : 41fb98: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 41fb9e: 48 89 c3 mov %rax,%rbx 0.00 : 41fba1: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 41fba6: 0f b7 40 3c movzwl 0x3c(%rax),%eax 0.00 : 41fbaa: e9 09 fe ff ff jmpq 41f9b8 0.00 : 41fbaf: 90 nop 0.00 : 41fbb0: 49 89 d9 mov %rbx,%r9 0.00 : 41fbb3: 49 89 da mov %rbx,%r10 0.00 : 41fbb6: 49 d1 e9 shr %r9 0.00 : 41fbb9: 41 83 e2 01 and $0x1,%r10d 0.00 : 41fbbd: 4d 09 d1 or %r10,%r9 0.00 : 41fbc0: f2 49 0f 2a d1 cvtsi2sd %r9,%xmm2 0.00 : 41fbc5: f2 0f 58 d2 addsd %xmm2,%xmm2 0.00 : 41fbc9: e9 9d fc ff ff jmpq 41f86b 0.00 : 41fbce: 66 90 xchg %ax,%ax 0.00 : 41fbd0: 66 44 0f 28 ca movapd %xmm2,%xmm9 0.00 : 41fbd5: 48 be 00 00 00 00 00 movabs $0x8000000000000000,%rsi 0.00 : 41fbdc: 00 00 80 0.00 : 41fbdf: f2 44 0f 5c c8 subsd %xmm0,%xmm9 0.00 : 41fbe4: f2 49 0f 2c d9 cvttsd2si %xmm9,%rbx 0.00 : 41fbe9: 48 31 f3 xor %rsi,%rbx 0.00 : 41fbec: e9 1c fe ff ff jmpq 41fa0d 0.00 : 41fbf1: 49 8b 4e 10 mov 0x10(%r14),%rcx 0.00 : 41fbf5: 49 3b 4e 30 cmp 0x30(%r14),%rcx 0.00 : 41fbf9: 0f 84 50 fe ff ff je 41fa4f 0.00 : 41fbff: 48 63 3d 02 4e 23 00 movslq 0x234e02(%rip),%rdi # 654a08 0.00 : 41fc06: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) 0.00 : 41fc0d: 00 00 0.00 : 41fc0f: 4c 8d 7c 24 30 lea 0x30(%rsp),%r15 0.00 : 41fc14: 49 0f af fc imul %r12,%rdi 0.00 : 41fc18: 48 83 c7 02 add $0x2,%rdi 0.00 : 41fc1c: e8 7f 6f fe ff callq 406ba0 0.00 : 41fc21: 48 85 c0 test %rax,%rax 0.00 : 41fc24: 49 89 c5 mov %rax,%r13 0.00 : 41fc27: 74 5c je 41fc85 0.00 : 41fc29: 31 f6 xor %esi,%esi 0.00 : 41fc2b: 4d 85 e4 test %r12,%r12 0.00 : 41fc2e: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 41fc32: 4c 89 eb mov %r13,%rbx 0.00 : 41fc35: 74 31 je 41fc68 0.00 : 41fc37: 48 8d 2c a8 lea (%rax,%rbp,4),%rbp 0.00 : 41fc3b: 4c 89 eb mov %r13,%rbx 0.00 : 41fc3e: 8b 75 00 mov 0x0(%rbp),%esi 0.00 : 41fc41: 4c 89 fa mov %r15,%rdx 0.00 : 41fc44: 48 89 df mov %rbx,%rdi 0.00 : 41fc47: e8 e4 72 fe ff callq 406f30 0.00 : 41fc4c: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 41fc50: 74 10 je 41fc62 0.00 : 41fc52: 48 01 c3 add %rax,%rbx 0.00 : 41fc55: 49 83 ec 01 sub $0x1,%r12 0.00 : 41fc59: 74 07 je 41fc62 0.00 : 41fc5b: 48 83 c5 04 add $0x4,%rbp 0.00 : 41fc5f: 90 nop 0.00 : 41fc60: eb dc jmp 41fc3e 0.00 : 41fc62: 48 89 de mov %rbx,%rsi 0.00 : 41fc65: 4c 29 ee sub %r13,%rsi 0.00 : 41fc68: c6 03 00 movb $0x0,(%rbx) 0.00 : 41fc6b: ba 02 00 00 00 mov $0x2,%edx 0.00 : 41fc70: 4c 89 ef mov %r13,%rdi 0.00 : 41fc73: e8 28 58 01 00 callq 4354a0 0.00 : 41fc78: 48 89 c3 mov %rax,%rbx 0.00 : 41fc7b: 66 83 48 3c 02 orw $0x2,0x3c(%rax) 0.00 : 41fc80: e9 dc fd ff ff jmpq 41fa61 0.00 : 41fc85: be 29 06 00 00 mov $0x629,%esi 0.00 : 41fc8a: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41fc8f: e8 b4 16 ff ff callq 411348 0.00 : 41fc94: e8 57 73 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41fc99: 8b 38 mov (%rax),%edi 0.00 : 41fc9b: e8 20 72 fe ff callq 406ec0 0.00 : 41fca0: 4c 63 0d 61 4d 23 00 movslq 0x234d61(%rip),%r9 # 654a08 0.00 : 41fca7: 49 89 c6 mov %rax,%r14 0.00 : 41fcaa: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41fcaf: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41fcb4: 31 ff xor %edi,%edi 0.00 : 41fcb6: 4d 0f af e1 imul %r9,%r12 0.00 : 41fcba: e8 61 73 fe ff callq 407020 0.00 : 41fcbf: 4d 89 f0 mov %r14,%r8 0.00 : 41fcc2: 48 89 c7 mov %rax,%rdi 0.00 : 41fcc5: ba a2 04 44 00 mov $0x4404a2,%edx 0.00 : 41fcca: be 9f 04 44 00 mov $0x44049f,%esi 0.00 : 41fccf: 31 c0 xor %eax,%eax 0.00 : 41fcd1: 49 83 c4 02 add $0x2,%r12 0.00 : 41fcd5: 4c 89 e1 mov %r12,%rcx 0.00 : 41fcd8: e8 ed 17 ff ff callq 4114ca 0.00 : 41fcdd: ba d0 03 44 00 mov $0x4403d0,%edx 0.00 : 41fce2: be da 05 00 00 mov $0x5da,%esi 0.00 : 41fce7: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 41fcec: 31 c0 xor %eax,%eax 0.00 : 41fcee: e8 d7 17 ff ff callq 4114ca 0.00 : 41fcf3: 3b 05 47 4e 23 00 cmp 0x234e47(%rip),%eax # 654b40 0.00 : 41fcf9: 0f 84 b5 fd ff ff je 41fab4 0.00 : 41fcff: e8 ac 63 01 00 callq 4360b0 0.00 : 41fd04: 49 89 c6 mov %rax,%r14 0.00 : 41fd07: e9 ab fd ff ff jmpq 41fab7 0.00 : 41fd0c: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 41fd10: f6 c4 08 test $0x8,%ah 0.00 : 41fd13: 0f 84 87 fd ff ff je 41faa0 0.00 : 41fd19: e8 92 63 01 00 callq 4360b0 0.00 : 41fd1e: 48 89 c7 mov %rax,%rdi 0.00 : 41fd21: e9 6d fd ff ff jmpq 41fa93 0.00 : 41fd26: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 41fd2a: f6 c4 08 test $0x8,%ah 0.00 : 41fd2d: 0f 84 f4 fb ff ff je 41f927 0.00 : 41fd33: 48 89 df mov %rbx,%rdi 0.00 : 41fd36: e8 75 63 01 00 callq 4360b0 0.00 : 41fd3b: 48 89 c3 mov %rax,%rbx 0.00 : 41fd3e: 0f b7 40 3c movzwl 0x3c(%rax),%eax 0.00 : 41fd42: e9 e0 fb ff ff jmpq 41f927 0.00 : 41fd47: ba d0 03 44 00 mov $0x4403d0,%edx 0.00 : 41fd4c: be b8 05 00 00 mov $0x5b8,%esi 0.00 : 41fd51: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 41fd56: 31 c0 xor %eax,%eax 0.00 : 41fd58: e8 6d 17 ff ff callq 4114ca 0.00 : 41fd5d: 48 89 df mov %rbx,%rdi 0.00 : 41fd60: e8 4b 5a 01 00 callq 4357b0 0.00 : 41fd65: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 41fd69: 66 0f 28 e0 movapd %xmm0,%xmm4 0.00 : 41fd6d: e9 c1 fb ff ff jmpq 41f933 0.00 : 41fd72: 48 c7 c5 ff ff ff ff mov $0xffffffffffffffff,%rbp 0.00 : 41fd79: e9 b6 fa ff ff jmpq 41f834 0.00 : 41fd7e: 8b 05 7c 05 23 00 mov 0x23057c(%rip),%eax # 650300 0.00 : 41fd84: 85 c0 test %eax,%eax 0.00 : 41fd86: 75 49 jne 41fdd1 0.00 : 41fd88: 41 f6 46 3c 02 testb $0x2,0x3c(%r14) 0.00 : 41fd8d: 75 38 jne 41fdc7 0.00 : 41fd8f: 48 8b 1d 4a 4c 23 00 mov 0x234c4a(%rip),%rbx # 6549e0 0.00 : 41fd96: e9 2e fb ff ff jmpq 41f8c9 0.00 : 41fd9b: 4c 89 f7 mov %r14,%rdi 0.00 : 41fd9e: 31 f6 xor %esi,%esi 0.00 : 41fda0: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 41fda6: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41fdab: e8 70 4a 01 00 callq 434820 0.00 : 41fdb0: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 41fdb5: 49 89 c6 mov %rax,%r14 0.00 : 41fdb8: 4c 8b 68 30 mov 0x30(%rax),%r13 0.00 : 41fdbc: f2 0f 10 54 24 20 movsd 0x20(%rsp),%xmm2 0.00 : 41fdc2: e9 60 fc ff ff jmpq 41fa27 0.00 : 41fdc7: 4c 89 f7 mov %r14,%rdi 0.00 : 41fdca: e8 91 49 01 00 callq 434760 0.00 : 41fdcf: eb be jmp 41fd8f 0.00 : 41fdd1: 83 f8 02 cmp $0x2,%eax 0.00 : 41fdd4: 74 0c je 41fde2 0.00 : 41fdd6: 48 09 eb or %rbp,%rbx 0.00 : 41fdd9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 41fde0: 74 a6 je 41fd88 0.00 : 41fde2: be f9 05 00 00 mov $0x5f9,%esi 0.00 : 41fde7: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41fdec: e8 57 15 ff ff callq 411348 0.00 : 41fdf1: 31 ff xor %edi,%edi 0.00 : 41fdf3: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41fdf8: be 18 10 44 00 mov $0x441018,%esi 0.00 : 41fdfd: 48 8b 2d cc d7 22 00 mov 0x22d7cc(%rip),%rbp # 64d5d0 0.00 : 41fe04: e8 17 72 fe ff callq 407020 0.00 : 41fe09: 48 89 c7 mov %rax,%rdi 0.00 : 41fe0c: 31 c0 xor %eax,%eax 0.00 : 41fe0e: ff d5 callq *%rbp 0.00 : 41fe10: e9 73 ff ff ff jmpq 41fd88 0.00 : 41fe15: 8b 3d e5 04 23 00 mov 0x2304e5(%rip),%edi # 650300 0.00 : 41fe1b: 85 ff test %edi,%edi 0.00 : 41fe1d: 0f 84 65 ff ff ff je 41fd88 0.00 : 41fe23: be 09 06 00 00 mov $0x609,%esi 0.00 : 41fe28: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41fe2d: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41fe32: e8 11 15 ff ff callq 411348 0.00 : 41fe37: 31 ff xor %edi,%edi 0.00 : 41fe39: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41fe3e: be 40 10 44 00 mov $0x441040,%esi 0.00 : 41fe43: 4c 8b 2d 86 d7 22 00 mov 0x22d786(%rip),%r13 # 64d5d0 0.00 : 41fe4a: e8 d1 71 fe ff callq 407020 0.00 : 41fe4f: f2 44 0f 10 14 24 movsd (%rsp),%xmm10 0.00 : 41fe55: 48 89 c7 mov %rax,%rdi 0.00 : 41fe58: b8 01 00 00 00 mov $0x1,%eax 0.00 : 41fe5d: 66 41 0f 28 c2 movapd %xmm10,%xmm0 0.00 : 41fe62: 41 ff d5 callq *%r13 0.00 : 41fe65: e9 1e ff ff ff jmpq 41fd88 0.00 : 41fe6a: 44 8b 05 8f 04 23 00 mov 0x23048f(%rip),%r8d # 650300 0.00 : 41fe71: 45 85 c0 test %r8d,%r8d 0.00 : 41fe74: 0f 84 c8 fb ff ff je 41fa42 0.00 : 41fe7a: be 10 06 00 00 mov $0x610,%esi 0.00 : 41fe7f: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41fe84: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 41fe8a: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41fe8f: e8 b4 14 ff ff callq 411348 0.00 : 41fe94: 31 ff xor %edi,%edi 0.00 : 41fe96: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41fe9b: be 70 10 44 00 mov $0x441070,%esi 0.00 : 41fea0: 4c 8b 3d 29 d7 22 00 mov 0x22d729(%rip),%r15 # 64d5d0 0.00 : 41fea7: e8 74 71 fe ff callq 407020 0.00 : 41feac: f2 44 0f 10 24 24 movsd (%rsp),%xmm12 0.00 : 41feb2: 48 89 c7 mov %rax,%rdi 0.00 : 41feb5: f2 44 0f 10 5c 24 20 movsd 0x20(%rsp),%xmm11 0.00 : 41febc: 4c 89 ee mov %r13,%rsi 0.00 : 41febf: 66 41 0f 28 cc movapd %xmm12,%xmm1 0.00 : 41fec4: b8 02 00 00 00 mov $0x2,%eax 0.00 : 41fec9: 66 41 0f 28 c3 movapd %xmm11,%xmm0 0.00 : 41fece: 41 ff d7 callq *%r15 0.00 : 41fed1: e9 6c fb ff ff jmpq 41fa42 0.00 : 41fed6: 48 89 df mov %rbx,%rdi 0.00 : 41fed9: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 41fedf: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 41fee5: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41feea: e8 71 48 01 00 callq 434760 0.00 : 41feef: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 41fef4: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 41fefa: f2 0f 10 54 24 20 movsd 0x20(%rsp),%xmm2 0.00 : 41ff00: e9 c7 fa ff ff jmpq 41f9cc 0.00 : 41ff05: 8b 05 f5 03 23 00 mov 0x2303f5(%rip),%eax # 650300 0.00 : 41ff0b: 83 f8 02 cmp $0x2,%eax 0.00 : 41ff0e: 0f 84 17 01 00 00 je 42002b 0.00 : 41ff14: 83 e8 01 sub $0x1,%eax 0.00 : 41ff17: 0f 85 6b fe ff ff jne 41fd88 0.00 : 41ff1d: 66 0f 2e 15 8b 04 02 ucomisd 0x2048b(%rip),%xmm2 # 4403b0 <_IO_stdin_used+0x4890> 0.00 : 41ff24: 00 0.00 : 41ff25: 0f 83 5d fe ff ff jae 41fd88 0.00 : 41ff2b: be e1 05 00 00 mov $0x5e1,%esi 0.00 : 41ff30: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41ff35: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 41ff3b: e8 08 14 ff ff callq 411348 0.00 : 41ff40: 48 8b 1d 89 d6 22 00 mov 0x22d689(%rip),%rbx # 64d5d0 0.00 : 41ff47: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41ff4c: be 81 04 44 00 mov $0x440481,%esi 0.00 : 41ff51: 31 ff xor %edi,%edi 0.00 : 41ff53: e8 c8 70 fe ff callq 407020 0.00 : 41ff58: f2 0f 10 54 24 20 movsd 0x20(%rsp),%xmm2 0.00 : 41ff5e: 48 89 c7 mov %rax,%rdi 0.00 : 41ff61: b8 01 00 00 00 mov $0x1,%eax 0.00 : 41ff66: 66 0f 28 c2 movapd %xmm2,%xmm0 0.00 : 41ff6a: ff d3 callq *%rbx 0.00 : 41ff6c: e9 17 fe ff ff jmpq 41fd88 0.00 : 41ff71: 66 0f 28 c2 movapd %xmm2,%xmm0 0.00 : 41ff75: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 41ff7b: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41ff80: e8 6b f7 ff ff callq 41f6f0 0.00 : 41ff85: f2 0f 10 54 24 20 movsd 0x20(%rsp),%xmm2 0.00 : 41ff8b: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 41ff90: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 41ff94: 0f 8a bc 00 00 00 jp 420056 0.00 : 41ff9a: 0f 85 b6 00 00 00 jne 420056 0.00 : 41ffa0: f2 0f 10 1d f0 1f 02 movsd 0x21ff0(%rip),%xmm3 # 441f98 <_IO_stdin_used+0x6478> 0.00 : 41ffa7: 00 0.00 : 41ffa8: 66 0f 2e d3 ucomisd %xmm3,%xmm2 0.00 : 41ffac: 0f 86 3a fa ff ff jbe 41f9ec 0.00 : 41ffb2: be ec 05 00 00 mov $0x5ec,%esi 0.00 : 41ffb7: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41ffbc: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 41ffc2: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 41ffc8: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 41ffcd: e8 76 13 ff ff callq 411348 0.00 : 41ffd2: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41ffd7: be d8 0f 44 00 mov $0x440fd8,%esi 0.00 : 41ffdc: 31 ff xor %edi,%edi 0.00 : 41ffde: 4c 8b 25 eb d5 22 00 mov 0x22d5eb(%rip),%r12 # 64d5d0 0.00 : 41ffe5: e8 36 70 fe ff callq 407020 0.00 : 41ffea: f2 0f 10 7c 24 10 movsd 0x10(%rsp),%xmm7 0.00 : 41fff0: 48 89 c7 mov %rax,%rdi 0.00 : 41fff3: f2 0f 10 74 24 20 movsd 0x20(%rsp),%xmm6 0.00 : 41fff9: b8 02 00 00 00 mov $0x2,%eax 0.00 : 41fffe: 66 0f 28 cf movapd %xmm7,%xmm1 0.00 : 420002: 66 0f 28 c6 movapd %xmm6,%xmm0 0.00 : 420006: 41 ff d4 callq *%r12 0.00 : 420009: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 42000e: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 420014: f2 0f 10 54 24 20 movsd 0x20(%rsp),%xmm2 0.00 : 42001a: e9 cd f9 ff ff jmpq 41f9ec 0.00 : 42001f: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 420026: e9 e2 f9 ff ff jmpq 41fa0d 0.00 : 42002b: be df 05 00 00 mov $0x5df,%esi 0.00 : 420030: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 420035: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 42003b: e8 08 13 ff ff callq 411348 0.00 : 420040: 48 8b 1d 89 d5 22 00 mov 0x22d589(%rip),%rbx # 64d5d0 0.00 : 420047: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42004c: be 63 04 44 00 mov $0x440463,%esi 0.00 : 420051: e9 fb fe ff ff jmpq 41ff51 0.00 : 420056: be e7 05 00 00 mov $0x5e7,%esi 0.00 : 42005b: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 420060: f2 0f 11 54 24 20 movsd %xmm2,0x20(%rsp) 0.00 : 420066: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 42006b: e8 d8 12 ff ff callq 411348 0.00 : 420070: ba 05 00 00 00 mov $0x5,%edx 0.00 : 420075: be a8 0f 44 00 mov $0x440fa8,%esi 0.00 : 42007a: 31 ff xor %edi,%edi 0.00 : 42007c: 48 8b 1d 4d d5 22 00 mov 0x22d54d(%rip),%rbx # 64d5d0 0.00 : 420083: e8 98 6f fe ff callq 407020 0.00 : 420088: f2 0f 10 6c 24 20 movsd 0x20(%rsp),%xmm5 0.00 : 42008e: 48 89 c7 mov %rax,%rdi 0.00 : 420091: b8 01 00 00 00 mov $0x1,%eax 0.00 : 420096: 66 0f 28 c5 movapd %xmm5,%xmm0 0.00 : 42009a: ff d3 callq *%rbx 0.00 : 42009c: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 4200a1: f2 0f 10 54 24 20 movsd 0x20(%rsp),%xmm2 0.00 : 4200a7: e9 f4 fe ff ff jmpq 41ffa0 0.00 : 4200ac: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 4200b0: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 4200b6: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 4200bb: e8 30 f6 ff ff callq 41f6f0 0.00 : 4200c0: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 4200c5: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 4200cb: 66 0f 2e c4 ucomisd %xmm4,%xmm0 0.00 : 4200cf: 7a 06 jp 4200d7 0.00 : 4200d1: 0f 84 2a f7 ff ff je 41f801 0.00 : 4200d7: be c5 05 00 00 mov $0x5c5,%esi 0.00 : 4200dc: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 4200e1: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 4200e7: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 4200ec: e8 57 12 ff ff callq 411348 0.00 : 4200f1: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4200f6: be 70 0f 44 00 mov $0x440f70,%esi 0.00 : 4200fb: 31 ff xor %edi,%edi 0.00 : 4200fd: 48 8b 2d cc d4 22 00 mov 0x22d4cc(%rip),%rbp # 64d5d0 0.00 : 420104: e8 17 6f fe ff callq 407020 0.00 : 420109: f2 0f 10 0c 24 movsd (%rsp),%xmm1 0.00 : 42010e: 48 89 c7 mov %rax,%rdi 0.00 : 420111: b8 01 00 00 00 mov $0x1,%eax 0.00 : 420116: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 42011a: ff d5 callq *%rbp 0.00 : 42011c: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 420121: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 420127: e9 d5 f6 ff ff jmpq 41f801 0.00 : 42012c: 31 f6 xor %esi,%esi 0.00 : 42012e: 4c 89 f7 mov %r14,%rdi 0.00 : 420131: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 420136: e8 e5 46 01 00 callq 434820 0.00 : 42013b: 4c 8b 60 30 mov 0x30(%rax),%r12 0.00 : 42013f: 49 89 c6 mov %rax,%r14 0.00 : 420142: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 420147: 4d 89 e3 mov %r12,%r11 0.00 : 42014a: 49 29 eb sub %rbp,%r11 0.00 : 42014d: 4d 85 e4 test %r12,%r12 0.00 : 420150: 49 0f 45 db cmovne %r11,%rbx 0.00 : 420154: 48 85 db test %rbx,%rbx 0.00 : 420157: 0f 88 89 00 00 00 js 4201e6 0.00 : 42015d: f2 48 0f 2a d3 cvtsi2sd %rbx,%xmm2 0.00 : 420162: e9 a6 f8 ff ff jmpq 41fa0d 0.00 : 420167: 48 89 df mov %rbx,%rdi 0.00 : 42016a: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 420170: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 420175: e8 36 56 01 00 callq 4357b0 0.00 : 42017a: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 42017e: 66 0f 28 d0 movapd %xmm0,%xmm2 0.00 : 420182: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 420187: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 42018d: e9 32 f8 ff ff jmpq 41f9c4 0.00 : 420192: be c0 05 00 00 mov $0x5c0,%esi 0.00 : 420197: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 42019c: f2 0f 11 5c 24 10 movsd %xmm3,0x10(%rsp) 0.00 : 4201a2: f2 0f 11 24 24 movsd %xmm4,(%rsp) 0.00 : 4201a7: e8 9c 11 ff ff callq 411348 0.00 : 4201ac: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4201b1: be 40 0f 44 00 mov $0x440f40,%esi 0.00 : 4201b6: 31 ff xor %edi,%edi 0.00 : 4201b8: 48 8b 1d 11 d4 22 00 mov 0x22d411(%rip),%rbx # 64d5d0 0.00 : 4201bf: e8 5c 6e fe ff callq 407020 0.00 : 4201c4: f2 0f 10 24 24 movsd (%rsp),%xmm4 0.00 : 4201c9: 48 89 c7 mov %rax,%rdi 0.00 : 4201cc: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4201d1: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 4201d5: ff d3 callq *%rbx 0.00 : 4201d7: f2 0f 10 5c 24 10 movsd 0x10(%rsp),%xmm3 0.00 : 4201dd: 66 0f 28 e3 movapd %xmm3,%xmm4 0.00 : 4201e1: e9 0d f6 ff ff jmpq 41f7f3 0.00 : 4201e6: 49 89 dd mov %rbx,%r13 0.00 : 4201e9: 49 89 df mov %rbx,%r15 0.00 : 4201ec: 49 d1 ed shr %r13 0.00 : 4201ef: 41 83 e7 01 and $0x1,%r15d 0.00 : 4201f3: 4d 09 fd or %r15,%r13 0.00 : 4201f6: f2 49 0f 2a d5 cvtsi2sd %r13,%xmm2 0.00 : 4201fb: f2 0f 58 d2 addsd %xmm2,%xmm2 0.00 : 4201ff: e9 09 f8 ff ff jmpq 41fa0d Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000367 : : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { : struct ixgbe_q_vector *q_vector = adapter->q_vector[v_idx]; : struct ixgbe_ring *ring; : : ixgbe_for_each_ring(ring, q_vector->rx) 0.00 : 367: 49 8b 5d 10 mov 0x10(%r13),%rbx 0.00 : 36b: 48 85 db test %rbx,%rbx 0.00 : 36e: 74 18 je 388 : ixgbe_set_ivar(adapter, 0, ring->reg_idx, v_idx); 0.00 : 370: 0f b6 53 4f movzbl 0x4f(%rbx),%edx 0.00 : 374: 31 f6 xor %esi,%esi 0.00 : 376: 89 e9 mov %ebp,%ecx 0.00 : 378: 4c 89 e7 mov %r12,%rdi 0.00 : 37b: e8 80 fd ff ff callq 100 : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { : struct ixgbe_q_vector *q_vector = adapter->q_vector[v_idx]; : struct ixgbe_ring *ring; : : ixgbe_for_each_ring(ring, q_vector->rx) 0.00 : 380: 48 8b 1b mov (%rbx),%rbx 0.00 : 383: 48 85 db test %rbx,%rbx 0.00 : 386: 75 e8 jne 370 : ixgbe_set_ivar(adapter, 0, ring->reg_idx, v_idx); : : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 388: 49 8b 5d 28 mov 0x28(%r13),%rbx 0.00 : 38c: 48 85 db test %rbx,%rbx 0.00 : 38f: 74 35 je 3c6 0.00 : 391: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : ixgbe_set_ivar(adapter, 1, ring->reg_idx, v_idx); 0.00 : 398: 0f b6 53 4f movzbl 0x4f(%rbx),%edx 0.00 : 39c: 89 e9 mov %ebp,%ecx 0.00 : 39e: be 01 00 00 00 mov $0x1,%esi 0.00 : 3a3: 4c 89 e7 mov %r12,%rdi 0.00 : 3a6: e8 55 fd ff ff callq 100 : struct ixgbe_ring *ring; : : ixgbe_for_each_ring(ring, q_vector->rx) : ixgbe_set_ivar(adapter, 0, ring->reg_idx, v_idx); : : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 3ab: 48 8b 1b mov (%rbx),%rbx 0.00 : 3ae: 48 85 db test %rbx,%rbx 0.00 : 3b1: 75 e5 jne 398 : ixgbe_set_ivar(adapter, 1, ring->reg_idx, v_idx); : : if (q_vector->tx.ring && !q_vector->rx.ring) { 0.00 : 3b3: 49 83 7d 28 00 cmpq $0x0,0x28(%r13) 0.00 : 3b8: 74 0c je 3c6 0.00 : 3ba: 49 83 7d 10 00 cmpq $0x0,0x10(%r13) 0.00 : 3bf: 90 nop 0.00 : 3c0: 0f 84 92 00 00 00 je 458 : q_vector->itr = IXGBE_10K_ITR; : else : q_vector->itr = adapter->tx_itr_setting; : } else { : /* rx or rx/tx vector */ : if (adapter->rx_itr_setting == 1) 0.00 : 3c6: 41 0f b7 84 24 2c 02 movzwl 0x22c(%r12),%eax 0.00 : 3cd: 00 00 : q_vector->itr = IXGBE_20K_ITR; 0.00 : 3cf: 66 83 f8 01 cmp $0x1,%ax 0.00 : 3d3: 41 0f 44 c7 cmove %r15d,%eax 0.00 : 3d7: 66 41 89 45 0e mov %ax,0xe(%r13) : else : q_vector->itr = adapter->rx_itr_setting; : } : : ixgbe_write_eitr(q_vector); 0.00 : 3dc: 4c 89 ef mov %r13,%rdi : : /* : * Populate the IVAR table and set the ITR values to the : * corresponding register. : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { 0.00 : 3df: 83 c5 01 add $0x1,%ebp 0.00 : 3e2: 49 83 c6 08 add $0x8,%r14 : q_vector->itr = IXGBE_20K_ITR; : else : q_vector->itr = adapter->rx_itr_setting; : } : : ixgbe_write_eitr(q_vector); 0.00 : 3e6: e8 00 00 00 00 callq 3eb : : /* : * Populate the IVAR table and set the ITR values to the : * corresponding register. : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { 0.00 : 3eb: 41 39 ac 24 c0 0b 00 cmp %ebp,0xbc0(%r12) 0.00 : 3f2: 00 0.00 : 3f3: 0f 8f 67 ff ff ff jg 360 : } : : ixgbe_write_eitr(q_vector); : } : : switch (adapter->hw.mac.type) { 0.00 : 3f9: 41 8b 84 24 50 10 00 mov 0x1050(%r12),%eax 0.00 : 400: 00 0.00 : 401: 83 f8 01 cmp $0x1,%eax 0.00 : 404: 0f 84 8d 00 00 00 je 497 0.00 : 40a: 73 6b jae 477 : ixgbe_set_ivar(adapter, -1, 1, v_idx); : break; : default: : break; : } : IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITR(v_idx), 1950); 0.00 : 40c: 8d 04 ad 20 08 00 00 lea 0x820(,%rbp,4),%eax 0.00 : 413: 83 fd 17 cmp $0x17,%ebp 0.00 : 416: 49 8b 94 24 80 0e 00 mov 0xe80(%r12),%rdx 0.00 : 41d: 00 0.00 : 41e: 48 98 cltq 0.00 : 420: 7e 09 jle 42b 0.00 : 422: 8d 04 ad a0 22 01 00 lea 0x122a0(,%rbp,4),%eax 0.00 : 429: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 42b: 48 01 c2 add %rax,%rdx 0.00 : 42e: b8 9e 07 00 00 mov $0x79e,%eax 0.00 : 433: 89 02 mov %eax,(%rdx) 0.00 : 435: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 43c: 00 0.00 : 43d: ba ff ff 00 40 mov $0x4000ffff,%edx 0.00 : 442: 48 05 10 08 00 00 add $0x810,%rax 0.00 : 448: 89 10 mov %edx,(%rax) : mask &= ~(IXGBE_EIMS_OTHER | : IXGBE_EIMS_MAILBOX | : IXGBE_EIMS_LSC); : : IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIAC, mask); : } 0.00 : 44a: 5b pop %rbx 0.00 : 44b: 5d pop %rbp 0.00 : 44c: 41 5c pop %r12 0.00 : 44e: 41 5d pop %r13 0.00 : 450: 41 5e pop %r14 0.00 : 452: 41 5f pop %r15 0.00 : 454: c3 retq 0.00 : 455: 0f 1f 00 nopl (%rax) : ixgbe_for_each_ring(ring, q_vector->tx) : ixgbe_set_ivar(adapter, 1, ring->reg_idx, v_idx); : : if (q_vector->tx.ring && !q_vector->rx.ring) { : /* tx only vector */ : if (adapter->tx_itr_setting == 1) 0.00 : 458: 41 0f b7 84 24 24 02 movzwl 0x224(%r12),%eax 0.00 : 45f: 00 00 : q_vector->itr = IXGBE_10K_ITR; 0.00 : 461: ba 90 01 00 00 mov $0x190,%edx 0.00 : 466: 66 83 f8 01 cmp $0x1,%ax 0.00 : 46a: 0f 44 c2 cmove %edx,%eax 0.00 : 46d: 66 41 89 45 0e mov %ax,0xe(%r13) 0.00 : 472: e9 65 ff ff ff jmpq 3dc : } : : ixgbe_write_eitr(q_vector); : } : : switch (adapter->hw.mac.type) { 0.00 : 477: 83 f8 03 cmp $0x3,%eax 0.00 : 47a: 77 90 ja 40c : ixgbe_set_ivar(adapter, -1, IXGBE_IVAR_OTHER_CAUSES_INDEX, : v_idx); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : ixgbe_set_ivar(adapter, -1, 1, v_idx); 0.00 : 47c: 40 0f b6 cd movzbl %bpl,%ecx 0.00 : 480: ba 01 00 00 00 mov $0x1,%edx 0.00 : 485: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 48a: 4c 89 e7 mov %r12,%rdi 0.00 : 48d: e8 6e fc ff ff callq 100 0.00 : 492: e9 75 ff ff ff jmpq 40c : ixgbe_write_eitr(q_vector); : } : : switch (adapter->hw.mac.type) { : case ixgbe_mac_82598EB: : ixgbe_set_ivar(adapter, -1, IXGBE_IVAR_OTHER_CAUSES_INDEX, 0.00 : 497: 40 0f b6 cd movzbl %bpl,%ecx 0.00 : 49b: ba 61 00 00 00 mov $0x61,%edx 0.00 : 4a0: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 4a5: 4c 89 e7 mov %r12,%rdi 0.00 : 4a8: e8 53 fc ff ff callq 100 : v_idx); : break; 0.00 : 4ad: e9 5a ff ff ff jmpq 40c 0.00 : 4b2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4b9: 1f 84 00 00 00 00 00 : : 00000000000004c0 : : void ixgbe_irq_enable_queues(struct ixgbe_adapter *adapter, u64 qmask) : { : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { 0.00 : 4c0: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 33.33 : 4c6: 83 f8 01 cmp $0x1,%eax 0.00 : 4c9: 74 3d je 508 33.33 : 4cb: 73 03 jae 4d0 0.00 : 4cd: f3 c3 repz retq 0.00 : 4cf: 90 nop 0.00 : 4d0: 83 f8 03 cmp $0x3,%eax 0.00 : 4d3: 77 f8 ja 4cd : IXGBE_WRITE_REG(hw, IXGBE_EIMS, mask); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : mask = (qmask & 0xFFFFFFFF); : if (mask) 0.00 : 4d5: 85 f6 test %esi,%esi 0.00 : 4d7: 74 0f je 4e8 33.33 : 4d9: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 4e0: 48 05 a0 0a 00 00 add $0xaa0,%rax 0.00 : 4e6: 89 30 mov %esi,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_EIMS_EX(0), mask); : mask = (qmask >> 32); 0.00 : 4e8: 48 89 f2 mov %rsi,%rdx 0.00 : 4eb: 48 c1 ea 20 shr $0x20,%rdx : if (mask) 0.00 : 4ef: 85 d2 test %edx,%edx 0.00 : 4f1: 74 da je 4cd 0.00 : 4f3: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 4fa: 48 05 a4 0a 00 00 add $0xaa4,%rax 0.00 : 500: 89 10 mov %edx,(%rax) 0.00 : 502: c3 retq 0.00 : 503: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 508: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : mask = (IXGBE_EIMS_RTX_QUEUE & qmask); 0.00 : 50f: 0f b7 d6 movzwl %si,%edx 0.00 : 512: 48 05 80 08 00 00 add $0x880,%rax 0.00 : 518: 89 10 mov %edx,(%rax) 0.00 : 51a: c3 retq 0.00 : 51b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : 0000000000000520 : : void ixgbe_irq_disable_queues(struct ixgbe_adapter *adapter, u64 qmask) : { : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { 0.00 : 520: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 0.00 : 526: 83 f8 01 cmp $0x1,%eax 0.00 : 529: 74 3d je 568 0.00 : 52b: 73 03 jae 530 0.00 : 52d: f3 c3 repz retq 0.00 : 52f: 90 nop 0.00 : 530: 83 f8 03 cmp $0x3,%eax 0.00 : 533: 77 f8 ja 52d : IXGBE_WRITE_REG(hw, IXGBE_EIMC, mask); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : mask = (qmask & 0xFFFFFFFF); : if (mask) 0.00 : 535: 85 f6 test %esi,%esi 0.00 : 537: 74 0f je 548 0.00 : 539: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 540: 48 05 b0 0a 00 00 add $0xab0,%rax 0.00 : 546: 89 30 mov %esi,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_EIMC_EX(0), mask); : mask = (qmask >> 32); 0.00 : 548: 48 89 f2 mov %rsi,%rdx 0.00 : 54b: 48 c1 ea 20 shr $0x20,%rdx : if (mask) 0.00 : 54f: 85 d2 test %edx,%edx 0.00 : 551: 74 da je 52d 0.00 : 553: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 55a: 48 05 b4 0a 00 00 add $0xab4,%rax 0.00 : 560: 89 10 mov %edx,(%rax) 0.00 : 562: c3 retq 0.00 : 563: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 568: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : mask = (IXGBE_EIMS_RTX_QUEUE & qmask); 0.00 : 56f: 0f b7 d6 movzwl %si,%edx 0.00 : 572: 48 05 88 08 00 00 add $0x888,%rax 0.00 : 578: 89 10 mov %edx,(%rax) 0.00 : 57a: c3 retq 0.00 : 57b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : 0000000000000580 : : { : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 580: 48 8b 87 50 09 00 00 mov 0x950(%rdi),%rax : } : : void ixgbe_set_rx_drop_en(struct ixgbe_adapter *adapter) : { : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; 0.00 : 587: 0f b6 97 7a 0a 00 00 movzbl 0xa7a(%rdi),%edx : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 58e: 48 85 c0 test %rax,%rax 0.00 : 591: 74 12 je 5a5 : pfc_en |= !!(adapter->ixgbe_ieee_pfc->pfc_en); 0.00 : 593: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 597: 0f b6 d2 movzbl %dl,%edx 0.00 : 59a: 0f 95 c0 setne %al 0.00 : 59d: 0f b6 c0 movzbl %al,%eax 0.00 : 5a0: 09 d0 or %edx,%eax 0.00 : 5a2: 0f 95 c2 setne %dl : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 5a5: 8b b7 58 7c 00 00 mov 0x7c58(%rdi),%esi 0.00 : 5ab: 85 f6 test %esi,%esi 0.00 : 5ad: 0f 84 d5 00 00 00 je 688 : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 5b3: 8b 8f 28 02 00 00 mov 0x228(%rdi),%ecx 0.00 : 5b9: 85 c9 test %ecx,%ecx 0.00 : 5bb: 0f 8e b8 01 00 00 jle 779 : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 5c1: 49 89 fa mov %rdi,%r10 0.00 : 5c4: 45 31 c0 xor %r8d,%r8d 0.00 : 5c7: eb 5b jmp 624 0.00 : 5c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 5d0: 0f b6 ca movzbl %dl,%ecx 0.00 : 5d3: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax 0.00 : 5da: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 5dc: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 5e0: 8b 30 mov (%rax),%esi : : srrctl |= IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 5e2: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); : : srrctl |= IXGBE_SRRCTL_DROP_EN; 0.00 : 5e9: 81 ce 00 00 00 10 or $0x10000000,%esi : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 5ef: 80 fa 0f cmp $0xf,%dl 0.00 : 5f2: 4c 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%r9 0.00 : 5f9: 48 98 cltq 0.00 : 5fb: 76 10 jbe 60d 0.00 : 5fd: 80 fa 3f cmp $0x3f,%dl 0.00 : 600: 77 56 ja 658 0.00 : 602: c1 e1 06 shl $0x6,%ecx 0.00 : 605: 8d 81 14 10 00 00 lea 0x1014(%rcx),%eax 0.00 : 60b: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 60d: 49 8d 04 01 lea (%r9,%rax,1),%rax 0.00 : 611: 89 30 mov %esi,(%rax) : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 613: 41 83 c0 01 add $0x1,%r8d 0.00 : 617: 49 83 c2 08 add $0x8,%r10 0.00 : 61b: 44 39 87 28 02 00 00 cmp %r8d,0x228(%rdi) 0.00 : 622: 7e 5c jle 680 : : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 624: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 62b: 48 8b b7 80 0e 00 00 mov 0xe80(%rdi),%rsi : : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 632: 0f b6 50 4f movzbl 0x4f(%rax),%edx : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 636: 80 fa 0f cmp $0xf,%dl 0.00 : 639: 76 95 jbe 5d0 0.00 : 63b: 80 fa 3f cmp $0x3f,%dl 0.00 : 63e: 77 28 ja 668 0.00 : 640: 0f b6 ca movzbl %dl,%ecx 0.00 : 643: 89 c8 mov %ecx,%eax 0.00 : 645: c1 e0 06 shl $0x6,%eax 0.00 : 648: 05 14 10 00 00 add $0x1014,%eax 0.00 : 64d: 48 98 cltq 0.00 : 64f: eb 8b jmp 5dc 0.00 : 651: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : srrctl |= IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 658: c1 e1 06 shl $0x6,%ecx 0.00 : 65b: 8d 81 14 c0 00 00 lea 0xc014(%rcx),%eax 0.00 : 661: 48 98 cltq 0.00 : 663: eb a8 jmp 60d 0.00 : 665: 0f 1f 00 nopl (%rax) : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 668: 0f b6 ca movzbl %dl,%ecx 0.00 : 66b: 89 c8 mov %ecx,%eax 0.00 : 66d: c1 e0 06 shl $0x6,%eax 0.00 : 670: 05 14 c0 00 00 add $0xc014,%eax 0.00 : 675: 48 98 cltq 0.00 : 677: e9 60 ff ff ff jmpq 5dc 0.00 : 67c: 0f 1f 40 00 nopl 0x0(%rax) : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 680: f3 c3 repz retq 0.00 : 682: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 688: 8b 87 28 02 00 00 mov 0x228(%rdi),%eax 0.00 : 68e: 83 f8 01 cmp $0x1,%eax 0.00 : 691: 0f 8e d5 00 00 00 jle 76c 0.00 : 697: f6 87 0c 13 00 00 02 testb $0x2,0x130c(%rdi) 0.00 : 69e: 0f 84 bb 00 00 00 je 75f : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 6a4: 49 89 fa mov %rdi,%r10 0.00 : 6a7: 45 31 c0 xor %r8d,%r8d 0.00 : 6aa: eb 58 jmp 704 0.00 : 6ac: 0f 1f 40 00 nopl 0x0(%rax) : static void ixgbe_disable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 6b0: 0f b6 ca movzbl %dl,%ecx 0.00 : 6b3: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax 0.00 : 6ba: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 6bc: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 6c0: 8b 30 mov (%rax),%esi : : srrctl &= ~IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 6c2: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); : : srrctl &= ~IXGBE_SRRCTL_DROP_EN; 0.00 : 6c9: 81 e6 ff ff ff ef and $0xefffffff,%esi : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 6cf: 80 fa 0f cmp $0xf,%dl 0.00 : 6d2: 4c 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%r9 0.00 : 6d9: 48 98 cltq 0.00 : 6db: 76 10 jbe 6ed 0.00 : 6dd: 80 fa 3f cmp $0x3f,%dl 0.00 : 6e0: 77 6e ja 750 0.00 : 6e2: c1 e1 06 shl $0x6,%ecx 0.00 : 6e5: 8d 81 14 10 00 00 lea 0x1014(%rcx),%eax 0.00 : 6eb: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 6ed: 49 8d 04 01 lea (%r9,%rax,1),%rax 0.00 : 6f1: 89 30 mov %esi,(%rax) : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) : ixgbe_enable_rx_drop(adapter, adapter->rx_ring[i]); : } else { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 6f3: 41 83 c0 01 add $0x1,%r8d 0.00 : 6f7: 49 83 c2 08 add $0x8,%r10 0.00 : 6fb: 44 39 87 28 02 00 00 cmp %r8d,0x228(%rdi) 0.00 : 702: 7e 59 jle 75d : : static void ixgbe_disable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 704: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 70b: 48 8b b7 80 0e 00 00 mov 0xe80(%rdi),%rsi : : static void ixgbe_disable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 712: 0f b6 50 4f movzbl 0x4f(%rax),%edx : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 716: 80 fa 0f cmp $0xf,%dl 0.00 : 719: 76 95 jbe 6b0 0.00 : 71b: 80 fa 3f cmp $0x3f,%dl 0.00 : 71e: 77 18 ja 738 0.00 : 720: 0f b6 ca movzbl %dl,%ecx 0.00 : 723: 89 c8 mov %ecx,%eax 0.00 : 725: c1 e0 06 shl $0x6,%eax 0.00 : 728: 05 14 10 00 00 add $0x1014,%eax 0.00 : 72d: 48 98 cltq 0.00 : 72f: eb 8b jmp 6bc 0.00 : 731: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 738: 0f b6 ca movzbl %dl,%ecx 0.00 : 73b: 89 c8 mov %ecx,%eax 0.00 : 73d: c1 e0 06 shl $0x6,%eax 0.00 : 740: 05 14 c0 00 00 add $0xc014,%eax 0.00 : 745: 48 98 cltq 0.00 : 747: e9 70 ff ff ff jmpq 6bc 0.00 : 74c: 0f 1f 40 00 nopl 0x0(%rax) : : srrctl &= ~IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 750: c1 e1 06 shl $0x6,%ecx 0.00 : 753: 8d 81 14 c0 00 00 lea 0xc014(%rcx),%eax 0.00 : 759: 48 98 cltq 0.00 : 75b: eb 90 jmp 6ed 0.00 : 75d: f3 c3 repz retq : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 75f: 84 d2 test %dl,%dl 0.00 : 761: 0f 85 3d ff ff ff jne 6a4 0.00 : 767: e9 55 fe ff ff jmpq 5c1 : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) : ixgbe_enable_rx_drop(adapter, adapter->rx_ring[i]); : } else { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 76c: 85 c0 test %eax,%eax 0.00 : 76e: 66 90 xchg %ax,%ax 0.00 : 770: 0f 8f 2e ff ff ff jg 6a4 0.00 : 776: 66 90 xchg %ax,%ax 0.00 : 778: c3 retq 0.00 : 779: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 780: c3 retq 0.00 : 781: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 788: 0f 1f 84 00 00 00 00 0.00 : 78f: 00 : : 0000000000000790 : : void ixgbe_clear_rscctl(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 rscctrl; : u8 reg_idx = ring->reg_idx; 0.00 : 790: 44 0f b6 46 4f movzbl 0x4f(%rsi),%r8d : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 795: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx 0.00 : 79c: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 7a0: 77 46 ja 7e8 0.00 : 7a2: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 7a6: 89 d0 mov %edx,%eax 0.00 : 7a8: c1 e0 06 shl $0x6,%eax 0.00 : 7ab: 05 2c 10 00 00 add $0x102c,%eax 0.00 : 7b0: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 7b2: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 7b6: 8b 08 mov (%rax),%ecx : rscctrl &= ~IXGBE_RSCCTL_RSCEN; 0.00 : 7b8: 83 e1 fe and $0xfffffffe,%ecx : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 7bb: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 7bf: 48 8b bf 80 0e 00 00 mov 0xe80(%rdi),%rdi 0.00 : 7c6: 76 38 jbe 800 0.00 : 7c8: c1 e2 06 shl $0x6,%edx 0.00 : 7cb: 8d 82 2c c0 00 00 lea 0xc02c(%rdx),%eax 0.00 : 7d1: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 7d3: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 7d7: 89 08 mov %ecx,(%rax) : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 7d9: 48 8d 46 30 lea 0x30(%rsi),%rax 0.00 : 7dd: f0 80 66 30 f7 lock andb $0xf7,0x30(%rsi) : : clear_ring_rsc_enabled(ring); : } 0.00 : 7e2: c3 retq 0.00 : 7e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 rscctrl; : u8 reg_idx = ring->reg_idx; : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 7e8: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 7ec: 89 d0 mov %edx,%eax 0.00 : 7ee: c1 e0 06 shl $0x6,%eax 0.00 : 7f1: 05 2c c0 00 00 add $0xc02c,%eax 0.00 : 7f6: 48 98 cltq 0.00 : 7f8: eb b8 jmp 7b2 0.00 : 7fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : rscctrl &= ~IXGBE_RSCCTL_RSCEN; : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 800: c1 e2 06 shl $0x6,%edx 0.00 : 803: 8d 82 2c 10 00 00 lea 0x102c(%rdx),%eax 0.00 : 809: 48 98 cltq 0.00 : 80b: eb c6 jmp 7d3 0.00 : 80d: 0f 1f 00 nopl (%rax) : : 0000000000000810 : : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 810: 48 8b 46 30 mov 0x30(%rsi),%rax : void ixgbe_configure_rscctl(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 rscctrl; : u8 reg_idx = ring->reg_idx; 0.00 : 814: 44 0f b6 46 4f movzbl 0x4f(%rsi),%r8d : : if (!ring_is_rsc_enabled(ring)) 0.00 : 819: a8 08 test $0x8,%al 0.00 : 81b: 74 44 je 861 : return; : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 81d: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 821: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx 0.00 : 828: 76 3e jbe 868 0.00 : 82a: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 82e: 89 d0 mov %edx,%eax 0.00 : 830: c1 e0 06 shl $0x6,%eax 0.00 : 833: 05 2c c0 00 00 add $0xc02c,%eax 0.00 : 838: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 83a: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 83e: 8b 08 mov (%rax),%ecx : * total size of max desc * buf_len is not greater : * than 65536 : */ : #ifndef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : #if (MAX_SKB_FRAGS >= 16) : rscctrl |= IXGBE_RSCCTL_MAXDESC_16; 0.00 : 840: 83 c9 0d or $0xd,%ecx : else if (ring->rx_buf_len <= IXGBE_RXBUFFER_8K) : rscctrl |= IXGBE_RSCCTL_MAXDESC_8; : else : rscctrl |= IXGBE_RSCCTL_MAXDESC_4; : #endif : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 843: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 847: 48 8b b7 80 0e 00 00 mov 0xe80(%rdi),%rsi 0.00 : 84e: 77 30 ja 880 0.00 : 850: c1 e2 06 shl $0x6,%edx 0.00 : 853: 8d 82 2c 10 00 00 lea 0x102c(%rdx),%eax 0.00 : 859: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 85b: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 85f: 89 08 mov %ecx,(%rax) 0.00 : 861: f3 c3 repz retq 0.00 : 863: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : u8 reg_idx = ring->reg_idx; : : if (!ring_is_rsc_enabled(ring)) : return; : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 868: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 86c: 89 d0 mov %edx,%eax 0.00 : 86e: c1 e0 06 shl $0x6,%eax 0.00 : 871: 05 2c 10 00 00 add $0x102c,%eax 0.00 : 876: 48 98 cltq 0.00 : 878: eb c0 jmp 83a 0.00 : 87a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (ring->rx_buf_len <= IXGBE_RXBUFFER_8K) : rscctrl |= IXGBE_RSCCTL_MAXDESC_8; : else : rscctrl |= IXGBE_RSCCTL_MAXDESC_4; : #endif : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 880: c1 e2 06 shl $0x6,%edx 0.00 : 883: 8d 82 2c c0 00 00 lea 0xc02c(%rdx),%eax 0.00 : 889: 48 98 cltq 0.00 : 88b: eb ce jmp 85b 0.00 : 88d: 0f 1f 00 nopl (%rax) : : 0000000000000890 : : struct ixgbe_hw *hw = &adapter->hw; : u32 reg_offset, vf_shift; : u32 gcr_ext, vmdctl; : int i; : : if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) 0.00 : 890: 8b 87 18 02 00 00 mov 0x218(%rdi),%eax : for (p = 0; p < adapter->num_rx_pools; p++) : IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(VMDQ_P(p)), psrtype); : } : : static void ixgbe_configure_virtualization(struct ixgbe_adapter *adapter) : { 0.00 : 896: 49 89 f8 mov %rdi,%r8 : struct ixgbe_hw *hw = &adapter->hw; : u32 reg_offset, vf_shift; : u32 gcr_ext, vmdctl; : int i; : : if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) 0.00 : 899: f6 c4 08 test $0x8,%ah 0.00 : 89c: 0f 84 8e 00 00 00 je 930 : return; : : switch (hw->mac.type) { 0.00 : 8a2: 8b 97 50 10 00 00 mov 0x1050(%rdi),%edx 0.00 : 8a8: 83 fa 01 cmp $0x1,%edx 0.00 : 8ab: 0f 84 a7 01 00 00 je a58 0.00 : 8b1: 0f 83 81 00 00 00 jae 938 : break; : default: : break; : } : : if (!(adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) 0.00 : 8b7: a9 00 00 10 00 test $0x100000,%eax 0.00 : 8bc: 74 72 je 930 : : /* : * Set up VF register offsets for selected VT Mode, : * i.e. 32 or 64 VFs for SR-IOV : */ : switch (adapter->ring_feature[RING_F_VMDQ].mask) { 0.00 : 8be: 41 0f b7 80 d4 0b 00 movzwl 0xbd4(%r8),%eax 0.00 : 8c5: 00 0.00 : 8c6: ba 01 00 00 00 mov $0x1,%edx 0.00 : 8cb: 66 83 f8 78 cmp $0x78,%ax 0.00 : 8cf: 74 0c je 8dd 0.00 : 8d1: 31 d2 xor %edx,%edx 0.00 : 8d3: 66 83 f8 7c cmp $0x7c,%ax 0.00 : 8d7: 0f 95 c2 setne %dl 0.00 : 8da: 83 c2 02 add $0x2,%edx 0.00 : 8dd: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : 8e4: 48 05 50 10 01 00 add $0x11050,%rax 0.00 : 8ea: 89 10 mov %edx,(%rax) : } : : IXGBE_WRITE_REG(hw, IXGBE_GCR_EXT, gcr_ext); : : /* enable Tx loopback for VF/PF communication */ : if (adapter->flags & IXGBE_FLAG_SRIOV_L2LOOPBACK_ENABLE) 0.00 : 8ec: 41 f6 80 1a 02 00 00 testb $0x80,0x21a(%r8) 0.00 : 8f3: 80 0.00 : 8f4: 0f 85 8e 01 00 00 jne a88 0.00 : 8fa: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : 901: 31 d2 xor %edx,%edx 0.00 : 903: 48 05 20 82 00 00 add $0x8220,%rax 0.00 : 909: 89 10 mov %edx,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN); : else : IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, 0); : : hw->mac.ops.set_mac_anti_spoofing(hw, (adapter->num_vfs != 0), 0.00 : 90b: 41 8b 90 58 7c 00 00 mov 0x7c58(%r8),%edx 0.00 : 912: 31 f6 xor %esi,%esi 0.00 : 914: 49 8d b8 80 0e 00 00 lea 0xe80(%r8),%rdi 0.00 : 91b: 4d 8b 98 20 10 00 00 mov 0x1020(%r8),%r11 0.00 : 922: 85 d2 test %edx,%edx 0.00 : 924: 40 0f 95 c6 setne %sil 0.00 : 928: 41 ff e3 jmpq *%r11 0.00 : 92b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 930: f3 c3 repz retq 0.00 : 932: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : int i; : : if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) : return; : : switch (hw->mac.type) { 0.00 : 938: 83 fa 03 cmp $0x3,%edx 0.00 : 93b: 0f 87 76 ff ff ff ja 8b7 : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 941: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 948: 48 05 b0 51 00 00 add $0x51b0,%rax 0.00 : 94e: 8b 10 mov (%rax),%edx : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VT_CTL); : vmdctl |= IXGBE_VT_CTL_VT_ENABLE; : vmdctl &= ~IXGBE_VT_CTL_POOL_MASK; : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; 0.00 : 950: 0f b7 87 d6 0b 00 00 movzwl 0xbd6(%rdi),%eax : IXGBE_WRITE_REG(hw, IXGBE_VMD_CTL, vmdctl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VT_CTL); : vmdctl |= IXGBE_VT_CTL_VT_ENABLE; 0.00 : 957: 83 ca 01 or $0x1,%edx : vmdctl &= ~IXGBE_VT_CTL_POOL_MASK; : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; : if (adapter->num_vfs) : vmdctl |= IXGBE_VT_CTL_REPLEN; 0.00 : 95a: 8b bf 58 7c 00 00 mov 0x7c58(%rdi),%edi : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VT_CTL); : vmdctl |= IXGBE_VT_CTL_VT_ENABLE; : vmdctl &= ~IXGBE_VT_CTL_POOL_MASK; 0.00 : 960: 81 e2 7f e0 ff ff and $0xffffe07f,%edx : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; 0.00 : 966: c1 e0 07 shl $0x7,%eax 0.00 : 969: 09 c2 or %eax,%edx : if (adapter->num_vfs) : vmdctl |= IXGBE_VT_CTL_REPLEN; 0.00 : 96b: 89 d0 mov %edx,%eax 0.00 : 96d: 0d 00 00 00 40 or $0x40000000,%eax 0.00 : 972: 85 ff test %edi,%edi 0.00 : 974: 0f 45 d0 cmovne %eax,%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 977: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : 97e: 48 05 b0 51 00 00 add $0x51b0,%rax 0.00 : 984: 89 10 mov %edx,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, vmdctl); : : for (i = 1; i < adapter->num_rx_pools; i++) { 0.00 : 986: 41 83 b8 18 07 00 00 cmpl $0x1,0x718(%r8) 0.00 : 98d: 01 0.00 : 98e: 7e 43 jle 9d3 0.00 : 990: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 995: 0f 1f 00 nopl (%rax) : : /* : * accept untagged packets until a vlan tag : * is specifically set for the VMDQ queue/pool : */ : vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(pool)); 0.00 : 998: 41 0f b7 80 d6 0b 00 movzwl 0xbd6(%r8),%eax 0.00 : 99f: 00 0.00 : 9a0: 8d 84 01 00 3c 00 00 lea 0x3c00(%rcx,%rax,1),%eax 0.00 : 9a7: c1 e0 02 shl $0x2,%eax 0.00 : 9aa: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 9ac: 48 89 c2 mov %rax,%rdx 0.00 : 9af: 49 03 90 80 0e 00 00 add 0xe80(%r8),%rdx 0.00 : 9b6: 8b 12 mov (%rdx),%edx : vmolr |= IXGBE_VMOLR_AUPE; : vmolr |= IXGBE_VMOLR_BAM; 0.00 : 9b8: 81 ca 00 00 00 09 or $0x9000000,%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 9be: 49 03 80 80 0e 00 00 add 0xe80(%r8),%rax 0.00 : 9c5: 89 10 mov %edx,(%rax) : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; : if (adapter->num_vfs) : vmdctl |= IXGBE_VT_CTL_REPLEN; : IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, vmdctl); : : for (i = 1; i < adapter->num_rx_pools; i++) { 0.00 : 9c7: 83 c1 01 add $0x1,%ecx 0.00 : 9ca: 41 39 88 18 07 00 00 cmp %ecx,0x718(%r8) 0.00 : 9d1: 7f c5 jg 998 : vmolr |= IXGBE_VMOLR_AUPE; : vmolr |= IXGBE_VMOLR_BAM; : IXGBE_WRITE_REG(hw, IXGBE_VMOLR(pool), vmolr); : } : : vf_shift = VMDQ_P(0) % 32; 0.00 : 9d3: 41 0f b7 88 d6 0b 00 movzwl 0xbd6(%r8),%ecx 0.00 : 9da: 00 : reg_offset = (VMDQ_P(0) >= 32) ? 1 : 0; 0.00 : 9db: 31 d2 xor %edx,%edx : : /* Enable only the PF pools for Tx/Rx */ : IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset), (~0) << vf_shift); 0.00 : 9dd: be ff ff ff ff mov $0xffffffff,%esi : vmolr |= IXGBE_VMOLR_BAM; : IXGBE_WRITE_REG(hw, IXGBE_VMOLR(pool), vmolr); : } : : vf_shift = VMDQ_P(0) % 32; : reg_offset = (VMDQ_P(0) >= 32) ? 1 : 0; 0.00 : 9e2: 66 83 f9 1f cmp $0x1f,%cx 0.00 : 9e6: 0f 97 c2 seta %dl : : /* Enable only the PF pools for Tx/Rx */ : IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset), (~0) << vf_shift); 0.00 : 9e9: 83 e1 1f and $0x1f,%ecx 0.00 : 9ec: 8d 82 78 14 00 00 lea 0x1478(%rdx),%eax 0.00 : 9f2: d3 e6 shl %cl,%esi 0.00 : 9f4: c1 e0 02 shl $0x2,%eax 0.00 : 9f7: 89 c0 mov %eax,%eax 0.00 : 9f9: 49 03 80 80 0e 00 00 add 0xe80(%r8),%rax 0.00 : a00: 89 30 mov %esi,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset ^ 1), reg_offset - 1); 0.00 : a02: 89 d1 mov %edx,%ecx 0.00 : a04: 8d 7a ff lea -0x1(%rdx),%edi 0.00 : a07: 83 f1 01 xor $0x1,%ecx 0.00 : a0a: 8d 81 78 14 00 00 lea 0x1478(%rcx),%eax 0.00 : a10: c1 e0 02 shl $0x2,%eax 0.00 : a13: 89 c0 mov %eax,%eax 0.00 : a15: 49 03 80 80 0e 00 00 add 0xe80(%r8),%rax 0.00 : a1c: 89 38 mov %edi,(%rax) 0.00 : a1e: 81 c2 44 20 00 00 add $0x2044,%edx 0.00 : a24: c1 e2 02 shl $0x2,%edx 0.00 : a27: 89 d2 mov %edx,%edx 0.00 : a29: 49 03 90 80 0e 00 00 add 0xe80(%r8),%rdx 0.00 : a30: 89 32 mov %esi,(%rdx) 0.00 : a32: 81 c1 44 20 00 00 add $0x2044,%ecx 0.00 : a38: c1 e1 02 shl $0x2,%ecx 0.00 : a3b: 89 c9 mov %ecx,%ecx 0.00 : a3d: 49 03 88 80 0e 00 00 add 0xe80(%r8),%rcx 0.00 : a44: 89 39 mov %edi,(%rcx) 0.00 : a46: 41 8b 80 18 02 00 00 mov 0x218(%r8),%eax 0.00 : a4d: e9 65 fe ff ff jmpq 8b7 0.00 : a52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : a58: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : a5f: 48 05 1c 58 00 00 add $0x581c,%rax 0.00 : a65: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : a67: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : return; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VMD_CTL); : vmdctl |= IXGBE_VMD_CTL_VMDQ_EN; 0.00 : a6e: 83 ca 01 or $0x1,%edx 0.00 : a71: 48 05 1c 58 00 00 add $0x581c,%rax 0.00 : a77: 89 10 mov %edx,(%rax) 0.00 : a79: 8b 87 18 02 00 00 mov 0x218(%rdi),%eax 0.00 : a7f: e9 33 fe ff ff jmpq 8b7 0.00 : a84: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : a88: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : a8f: ba 01 00 00 00 mov $0x1,%edx 0.00 : a94: 48 05 20 82 00 00 add $0x8220,%rax 0.00 : a9a: 89 10 mov %edx,(%rax) 0.00 : a9c: e9 6a fe ff ff jmpq 90b 0.00 : aa1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : aa8: 0f 1f 84 00 00 00 00 0.00 : aaf: 00 : : 0000000000000ab0 : : struct ixgbe_hw *hw = &adapter->hw; : u32 vlnctrl; : int i; : : /* leave vlan tag stripping enabled for DCB */ : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) 0.00 : ab0: f6 87 19 02 00 00 04 testb $0x4,0x219(%rdi) 0.00 : ab7: 0f 85 b3 00 00 00 jne b70 : return; : : switch (hw->mac.type) { 0.00 : abd: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 0.00 : ac3: 83 f8 01 cmp $0x1,%eax 0.00 : ac6: 0f 84 ac 00 00 00 je b78 0.00 : acc: 0f 82 9e 00 00 00 jb b70 0.00 : ad2: 83 f8 03 cmp $0x3,%eax 0.00 : ad5: 0f 87 95 00 00 00 ja b70 : vlnctrl &= ~IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : adb: 44 8b 87 28 02 00 00 mov 0x228(%rdi),%r8d 0.00 : ae2: 45 31 c9 xor %r9d,%r9d 0.00 : ae5: 49 89 fa mov %rdi,%r10 0.00 : ae8: 45 85 c0 test %r8d,%r8d 0.00 : aeb: 7f 56 jg b43 0.00 : aed: e9 be 00 00 00 jmpq bb0 0.00 : af2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : u8 reg_idx = adapter->rx_ring[i]->reg_idx; : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : af8: 40 0f b6 d6 movzbl %sil,%edx 0.00 : afc: 89 d0 mov %edx,%eax 0.00 : afe: c1 e0 06 shl $0x6,%eax 0.00 : b01: 05 28 10 00 00 add $0x1028,%eax 0.00 : b06: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : b08: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : b0c: 8b 08 mov (%rax),%ecx : vlnctrl &= ~IXGBE_RXDCTL_VME; 0.00 : b0e: 81 e1 ff ff ff bf and $0xbfffffff,%ecx : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : b14: 40 80 fe 3f cmp $0x3f,%sil 0.00 : b18: 4c 8b 87 80 0e 00 00 mov 0xe80(%rdi),%r8 0.00 : b1f: 77 7f ja ba0 0.00 : b21: c1 e2 06 shl $0x6,%edx 0.00 : b24: 8d 82 28 10 00 00 lea 0x1028(%rdx),%eax 0.00 : b2a: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : b2c: 49 8d 04 00 lea (%r8,%rax,1),%rax 0.00 : b30: 89 08 mov %ecx,(%rax) : vlnctrl &= ~IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : b32: 41 83 c1 01 add $0x1,%r9d 0.00 : b36: 49 83 c2 08 add $0x8,%r10 0.00 : b3a: 44 39 8f 28 02 00 00 cmp %r9d,0x228(%rdi) 0.00 : b41: 7e 2d jle b70 : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : b43: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : b4a: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : b51: 0f b6 70 4f movzbl 0x4f(%rax),%esi : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : b55: 40 80 fe 3f cmp $0x3f,%sil 0.00 : b59: 76 9d jbe af8 0.00 : b5b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : b5f: 89 d0 mov %edx,%eax 0.00 : b61: c1 e0 06 shl $0x6,%eax 0.00 : b64: 05 28 c0 00 00 add $0xc028,%eax 0.00 : b69: 48 98 cltq 0.00 : b6b: eb 9b jmp b08 0.00 : b6d: 0f 1f 00 nopl (%rax) 0.00 : b70: f3 c3 repz retq 0.00 : b72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : b78: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : b7f: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : b85: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : b87: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : return; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL); : vlnctrl &= ~IXGBE_VLNCTRL_VME; 0.00 : b8e: 81 e2 ff ff ff 7f and $0x7fffffff,%edx 0.00 : b94: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : b9a: 89 10 mov %edx,(%rax) 0.00 : b9c: c3 retq 0.00 : b9d: 0f 1f 00 nopl (%rax) : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { : u8 reg_idx = adapter->rx_ring[i]->reg_idx; : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); : vlnctrl &= ~IXGBE_RXDCTL_VME; : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : ba0: c1 e2 06 shl $0x6,%edx 0.00 : ba3: 8d 82 28 c0 00 00 lea 0xc028(%rdx),%eax 0.00 : ba9: 48 98 cltq 0.00 : bab: e9 7c ff ff ff jmpq b2c 0.00 : bb0: c3 retq 0.00 : bb1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : bb8: 0f 1f 84 00 00 00 00 0.00 : bbf: 00 : : 0000000000000bc0 : : { : struct ixgbe_hw *hw = &adapter->hw; : u32 vlnctrl; : int i; : : switch (hw->mac.type) { 0.00 : bc0: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 0.00 : bc6: 83 f8 01 cmp $0x1,%eax 0.00 : bc9: 0f 84 b1 00 00 00 je c80 0.00 : bcf: 73 07 jae bd8 0.00 : bd1: f3 c3 repz retq 0.00 : bd3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bd8: 83 f8 03 cmp $0x3,%eax 0.00 : bdb: 77 f4 ja bd1 : vlnctrl |= IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : bdd: 44 8b 9f 28 02 00 00 mov 0x228(%rdi),%r11d 0.00 : be4: 45 31 c9 xor %r9d,%r9d 0.00 : be7: 49 89 fa mov %rdi,%r10 0.00 : bea: 45 85 db test %r11d,%r11d 0.00 : bed: 7f 54 jg c43 0.00 : bef: e9 b1 00 00 00 jmpq ca5 0.00 : bf4: 0f 1f 40 00 nopl 0x0(%rax) : u8 reg_idx = adapter->rx_ring[i]->reg_idx; : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : bf8: 40 0f b6 d6 movzbl %sil,%edx 0.00 : bfc: 89 d0 mov %edx,%eax 0.00 : bfe: c1 e0 06 shl $0x6,%eax 0.00 : c01: 05 28 10 00 00 add $0x1028,%eax 0.00 : c06: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : c08: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : c0c: 8b 08 mov (%rax),%ecx : vlnctrl |= IXGBE_RXDCTL_VME; 0.00 : c0e: 81 c9 00 00 00 40 or $0x40000000,%ecx : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : c14: 40 80 fe 3f cmp $0x3f,%sil 0.00 : c18: 4c 8b 87 80 0e 00 00 mov 0xe80(%rdi),%r8 0.00 : c1f: 77 4f ja c70 0.00 : c21: c1 e2 06 shl $0x6,%edx 0.00 : c24: 8d 82 28 10 00 00 lea 0x1028(%rdx),%eax 0.00 : c2a: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : c2c: 49 8d 04 00 lea (%r8,%rax,1),%rax 0.00 : c30: 89 08 mov %ecx,(%rax) : vlnctrl |= IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : c32: 41 83 c1 01 add $0x1,%r9d 0.00 : c36: 49 83 c2 08 add $0x8,%r10 0.00 : c3a: 44 39 8f 28 02 00 00 cmp %r9d,0x228(%rdi) 0.00 : c41: 7e 8e jle bd1 : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : c43: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : c4a: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : c51: 0f b6 70 4f movzbl 0x4f(%rax),%esi : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : c55: 40 80 fe 3f cmp $0x3f,%sil 0.00 : c59: 76 9d jbe bf8 0.00 : c5b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : c5f: 89 d0 mov %edx,%eax 0.00 : c61: c1 e0 06 shl $0x6,%eax 0.00 : c64: 05 28 c0 00 00 add $0xc028,%eax 0.00 : c69: 48 98 cltq 0.00 : c6b: eb 9b jmp c08 0.00 : c6d: 0f 1f 00 nopl (%rax) : vlnctrl |= IXGBE_RXDCTL_VME; : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : c70: c1 e2 06 shl $0x6,%edx 0.00 : c73: 8d 82 28 c0 00 00 lea 0xc028(%rdx),%eax 0.00 : c79: 48 98 cltq 0.00 : c7b: eb af jmp c2c 0.00 : c7d: 0f 1f 00 nopl (%rax) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : c80: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : c87: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : c8d: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : c8f: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : int i; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL); : vlnctrl |= IXGBE_VLNCTRL_VME; 0.00 : c96: 81 ca 00 00 00 80 or $0x80000000,%edx 0.00 : c9c: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : ca2: 89 10 mov %edx,(%rax) 0.00 : ca4: c3 retq 0.00 : ca5: c3 retq 0.00 : ca6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : cad: 00 00 00 : : 0000000000000cb0 : : static void ixgbe_vlan_mode(struct net_device *netdev, struct vlan_group *grp) : #else : void ixgbe_vlan_mode(struct net_device *netdev, u32 features) : #endif : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : cb0: 48 81 c7 00 08 00 00 add $0x800,%rdi : #ifdef HAVE_VLAN_RX_REGISTER : bool enable = (grp || (adapter->flags & IXGBE_FLAG_DCB_ENABLED)); : #else : bool enable = !!(features & NETIF_F_HW_VLAN_RX); : #endif : if (enable) 0.00 : cb7: 81 e6 00 01 00 00 and $0x100,%esi 0.00 : cbd: 75 09 jne cc8 : /* enable VLAN tag insert/strip */ : ixgbe_vlan_stripping_enable(adapter); : else : /* disable VLAN tag insert/strip */ : ixgbe_vlan_stripping_disable(adapter); 0.00 : cbf: e9 00 00 00 00 jmpq cc4 0.00 : cc4: 0f 1f 40 00 nopl 0x0(%rax) : #else : bool enable = !!(features & NETIF_F_HW_VLAN_RX); : #endif : if (enable) : /* enable VLAN tag insert/strip */ : ixgbe_vlan_stripping_enable(adapter); 0.00 : cc8: e9 00 00 00 00 jmpq ccd 0.00 : ccd: 0f 1f 00 nopl (%rax) : : 0000000000000cd0 : : #ifdef CONFIG_PCI_IOV : struct ixgbe_adapter *adapter = hw->back; : #endif /* CONFIG_PCI_IOV */ : u8 *addr = *mc_addr_ptr; : : *vmdq = VMDQ_P(0); 0.00 : cd0: 48 8b 47 08 mov 0x8(%rdi),%rax : struct dev_mc_list *mc_ptr; : #endif : #ifdef CONFIG_PCI_IOV : struct ixgbe_adapter *adapter = hw->back; : #endif /* CONFIG_PCI_IOV */ : u8 *addr = *mc_addr_ptr; 0.00 : cd4: 48 8b 0e mov (%rsi),%rcx : : *vmdq = VMDQ_P(0); 0.00 : cd7: 0f b7 80 d6 0b 00 00 movzwl 0xbd6(%rax),%eax 0.00 : cde: 89 02 mov %eax,(%rdx) : : #ifdef NETDEV_HW_ADDR_T_MULTICAST : mc_ptr = container_of(addr, struct netdev_hw_addr, addr[0]); 0.00 : ce0: 48 8b 41 f0 mov -0x10(%rcx),%rax : if (mc_ptr->list.next) { 0.00 : ce4: 48 85 c0 test %rax,%rax 0.00 : ce7: 74 0f je cf8 : struct netdev_hw_addr *ha; : : ha = list_entry(mc_ptr->list.next, struct netdev_hw_addr, list); 0.00 : ce9: 48 83 c0 10 add $0x10,%rax 0.00 : ced: 48 89 06 mov %rax,(%rsi) : #endif : else : *mc_addr_ptr = NULL; : : return addr; : } 0.00 : cf0: 48 89 c8 mov %rcx,%rax 0.00 : cf3: c3 retq 0.00 : cf4: 0f 1f 40 00 nopl 0x0(%rax) : mc_ptr = container_of(addr, struct dev_mc_list, dmi_addr[0]); : if (mc_ptr->next) : *mc_addr_ptr = mc_ptr->next->dmi_addr; : #endif : else : *mc_addr_ptr = NULL; 0.00 : cf8: 48 c7 06 00 00 00 00 movq $0x0,(%rsi) : : return addr; : } 0.00 : cff: 48 89 c8 mov %rcx,%rax 0.00 : d02: c3 retq 0.00 : d03: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : d0a: 84 00 00 00 00 00 : : 0000000000000d10 : : return addr_count; : } : : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d10: 41 54 push %r12 : struct ixgbe_hw *hw = &adapter->hw; 0.00 : d12: 4c 8d a7 80 0e 00 00 lea 0xe80(%rdi),%r12 : return addr_count; : } : : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d19: 55 push %rbp 0.00 : d1a: 48 89 fd mov %rdi,%rbp 0.00 : d1d: 53 push %rbx : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d1e: 8b 9f 78 12 00 00 mov 0x1278(%rdi),%ebx 0.00 : d24: 85 db test %ebx,%ebx 0.00 : d26: 74 56 je d7e 0.00 : d28: 31 db xor %ebx,%ebx 0.00 : d2a: 31 f6 xor %esi,%esi 0.00 : d2c: eb 22 jmp d50 0.00 : d2e: 66 90 xchg %ax,%ax : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, adapter->mac_table[i].addr, 0.00 : d30: 0f b7 4a 06 movzwl 0x6(%rdx),%ecx : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d34: 83 c3 01 add $0x1,%ebx : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, adapter->mac_table[i].addr, 0.00 : d37: 41 b8 00 00 00 80 mov $0x80000000,%r8d 0.00 : d3d: 4c 89 e7 mov %r12,%rdi 0.00 : d40: ff 95 a0 0f 00 00 callq *0xfa0(%rbp) : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d46: 39 9d 78 12 00 00 cmp %ebx,0x1278(%rbp) 0.00 : d4c: 89 de mov %ebx,%esi 0.00 : d4e: 76 2e jbe d7e : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { 0.00 : d50: 48 63 c3 movslq %ebx,%rax 0.00 : d53: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : d57: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : d5b: 48 03 95 a0 7c 00 00 add 0x7ca0(%rbp),%rdx 0.00 : d62: f6 42 08 04 testb $0x4,0x8(%rdx) 0.00 : d66: 75 c8 jne d30 : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d68: 83 c3 01 add $0x1,%ebx : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, adapter->mac_table[i].addr, : adapter->mac_table[i].queue, : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); 0.00 : d6b: 4c 89 e7 mov %r12,%rdi 0.00 : d6e: ff 95 b0 0f 00 00 callq *0xfb0(%rbp) : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d74: 39 9d 78 12 00 00 cmp %ebx,0x1278(%rbp) 0.00 : d7a: 89 de mov %ebx,%esi 0.00 : d7c: 77 d2 ja d50 : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); : } : } : } 0.00 : d7e: 5b pop %rbx 0.00 : d7f: 5d pop %rbp 0.00 : d80: 41 5c pop %r12 0.00 : d82: c3 retq 0.00 : d83: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : d8a: 84 00 00 00 00 00 : : 0000000000000d90 : : : void ixgbe_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d90: 41 55 push %r13 : struct ixgbe_hw *hw = &adapter->hw; 0.00 : d92: 4c 8d af 80 0e 00 00 lea 0xe80(%rdi),%r13 : } : } : } : : void ixgbe_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d99: 41 54 push %r12 0.00 : d9b: 55 push %rbp 0.00 : d9c: 48 89 fd mov %rdi,%rbp 0.00 : d9f: 53 push %rbx 0.00 : da0: 48 83 ec 08 sub $0x8,%rsp : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : da4: 44 8b a7 78 12 00 00 mov 0x1278(%rdi),%r12d 0.00 : dab: 45 85 e4 test %r12d,%r12d 0.00 : dae: 74 70 je e20 0.00 : db0: 31 db xor %ebx,%ebx 0.00 : db2: 31 f6 xor %esi,%esi 0.00 : db4: eb 39 jmp def 0.00 : db6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : dbd: 00 00 00 : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_MODIFIED) { : if (adapter->mac_table[i].state & : IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, 0.00 : dc0: 0f b7 4a 06 movzwl 0x6(%rdx),%ecx 0.00 : dc4: 41 b8 00 00 00 80 mov $0x80000000,%r8d 0.00 : dca: 4c 89 ef mov %r13,%rdi 0.00 : dcd: ff 95 a0 0f 00 00 callq *0xfa0(%rbp) : adapter->mac_table[i].queue, : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); : } : adapter->mac_table[i].state &= 0.00 : dd3: 4c 89 e0 mov %r12,%rax 0.00 : dd6: 48 03 85 a0 7c 00 00 add 0x7ca0(%rbp),%rax 0.00 : ddd: 66 83 60 08 fd andw $0xfffd,0x8(%rax) : : void ixgbe_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : de2: 83 c3 01 add $0x1,%ebx 0.00 : de5: 39 9d 78 12 00 00 cmp %ebx,0x1278(%rbp) 0.00 : deb: 89 de mov %ebx,%esi 0.00 : ded: 76 31 jbe e20 : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_MODIFIED) { 0.00 : def: 48 63 c3 movslq %ebx,%rax 0.00 : df2: 48 8b 95 a0 7c 00 00 mov 0x7ca0(%rbp),%rdx 0.00 : df9: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : dfd: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : e01: 4c 01 e2 add %r12,%rdx 0.00 : e04: 0f b7 42 08 movzwl 0x8(%rdx),%eax 0.00 : e08: a8 02 test $0x2,%al 0.00 : e0a: 74 d6 je de2 : if (adapter->mac_table[i].state & 0.00 : e0c: a8 04 test $0x4,%al 0.00 : e0e: 75 b0 jne dc0 : hw->mac.ops.set_rar(hw, i, : adapter->mac_table[i].addr, : adapter->mac_table[i].queue, : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); 0.00 : e10: 4c 89 ef mov %r13,%rdi 0.00 : e13: ff 95 b0 0f 00 00 callq *0xfb0(%rbp) 0.00 : e19: eb b8 jmp dd3 0.00 : e1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : adapter->mac_table[i].state &= : ~(IXGBE_MAC_STATE_MODIFIED); : } : } : } 0.00 : e20: 48 83 c4 08 add $0x8,%rsp 0.00 : e24: 5b pop %rbx 0.00 : e25: 5d pop %rbp 0.00 : e26: 41 5c pop %r12 0.00 : e28: 41 5d pop %r13 0.00 : e2a: c3 retq 0.00 : e2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : 0000000000000e30 : : int ixgbe_available_rars(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i, count = 0; : : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : e30: 44 8b 87 78 12 00 00 mov 0x1278(%rdi),%r8d 0.00 : e37: 31 c9 xor %ecx,%ecx 0.00 : e39: 45 85 c0 test %r8d,%r8d 0.00 : e3c: 74 2d je e6b 0.00 : e3e: 48 8b b7 a0 7c 00 00 mov 0x7ca0(%rdi),%rsi 0.00 : e45: 31 d2 xor %edx,%edx 0.00 : e47: 31 c9 xor %ecx,%ecx 0.00 : e49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (adapter->mac_table[i].state == 0) 0.00 : e50: 48 63 c2 movslq %edx,%rax 0.00 : e53: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : e57: 48 01 c0 add %rax,%rax : count++; 0.00 : e5a: 66 83 7c 30 08 01 cmpw $0x1,0x8(%rax,%rsi,1) 0.00 : e60: 83 d1 00 adc $0x0,%ecx : int ixgbe_available_rars(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i, count = 0; : : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : e63: 83 c2 01 add $0x1,%edx 0.00 : e66: 44 39 c2 cmp %r8d,%edx 0.00 : e69: 72 e5 jb e50 : if (adapter->mac_table[i].state == 0) : count++; : } : return count; : } 0.00 : e6b: 89 c8 mov %ecx,%eax 0.00 : e6d: c3 retq 0.00 : e6e: 66 90 xchg %ax,%ax : : 0000000000000e70 : : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : e70: 8b 87 58 7c 00 00 mov 0x7c58(%rdi),%eax 0.00 : e76: 85 c0 test %eax,%eax 0.00 : e78: 0f 84 a0 01 00 00 je 101e 0.00 : e7e: 45 31 c0 xor %r8d,%r8d 0.00 : e81: 41 ba 00 83 00 00 mov $0x8300,%r10d 0.00 : e87: 41 b9 00 84 00 00 mov $0x8400,%r9d 0.00 : e8d: 0f 1f 00 nopl (%rax) : adapter->vfinfo[i].last_vfstats.gprc = 0.00 : e90: 49 63 c8 movslq %r8d,%rcx 0.00 : e93: 44 89 c6 mov %r8d,%esi 0.00 : e96: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : e9a: c1 e6 06 shl $0x6,%esi 0.00 : e9d: 48 63 f6 movslq %esi,%rsi 0.00 : ea0: 48 8d 0c c9 lea (%rcx,%rcx,8),%rcx : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : ea4: 48 8d 86 1c 10 00 00 lea 0x101c(%rsi),%rax 0.00 : eab: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : eb2: 48 c1 e1 03 shl $0x3,%rcx 0.00 : eb6: 48 89 ca mov %rcx,%rdx 0.00 : eb9: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : ec0: 8b 00 mov (%rax),%eax 0.00 : ec2: 89 c0 mov %eax,%eax 0.00 : ec4: 48 89 42 78 mov %rax,0x78(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gprc += 0.00 : ec8: 48 89 c8 mov %rcx,%rax 0.00 : ecb: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : ed2: 48 8b 50 50 mov 0x50(%rax),%rdx 0.00 : ed6: 48 01 90 a0 00 00 00 add %rdx,0xa0(%rax) : adapter->vfinfo[i].vfstats.gprc; : adapter->vfinfo[i].vfstats.gprc = 0; : adapter->vfinfo[i].last_vfstats.gptc = 0.00 : edd: 48 89 ca mov %rcx,%rdx : for (i = 0; i < adapter->num_vfs; i++) { : adapter->vfinfo[i].last_vfstats.gprc = : IXGBE_READ_REG(hw, IXGBE_PVFGPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gprc += : adapter->vfinfo[i].vfstats.gprc; : adapter->vfinfo[i].vfstats.gprc = 0; 0.00 : ee0: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : ee7: 48 c7 44 08 50 00 00 movq $0x0,0x50(%rax,%rcx,1) 0.00 : eee: 00 00 0.00 : ef0: 49 63 c2 movslq %r10d,%rax : adapter->vfinfo[i].last_vfstats.gptc = 0.00 : ef3: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : efa: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : f01: 8b 00 mov (%rax),%eax 0.00 : f03: 89 c0 mov %eax,%eax 0.00 : f05: 48 89 82 88 00 00 00 mov %rax,0x88(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGPTC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gptc += 0.00 : f0c: 48 89 c8 mov %rcx,%rax 0.00 : f0f: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : f16: 48 8b 50 60 mov 0x60(%rax),%rdx 0.00 : f1a: 48 01 90 b0 00 00 00 add %rdx,0xb0(%rax) : adapter->vfinfo[i].vfstats.gptc; : adapter->vfinfo[i].vfstats.gptc = 0; : adapter->vfinfo[i].last_vfstats.gorc = 0.00 : f21: 48 89 ca mov %rcx,%rdx : adapter->vfinfo[i].vfstats.gprc = 0; : adapter->vfinfo[i].last_vfstats.gptc = : IXGBE_READ_REG(hw, IXGBE_PVFGPTC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gptc += : adapter->vfinfo[i].vfstats.gptc; : adapter->vfinfo[i].vfstats.gptc = 0; 0.00 : f24: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : f2b: 48 c7 44 08 60 00 00 movq $0x0,0x60(%rax,%rcx,1) 0.00 : f32: 00 00 0.00 : f34: 48 8d 86 20 10 00 00 lea 0x1020(%rsi),%rax : adapter->vfinfo[i].last_vfstats.gorc = 0.00 : f3b: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : f42: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : f49: 8b 00 mov (%rax),%eax 0.00 : f4b: 89 c0 mov %eax,%eax 0.00 : f4d: 48 89 82 80 00 00 00 mov %rax,0x80(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGORC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gorc += 0.00 : f54: 48 89 c8 mov %rcx,%rax 0.00 : f57: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : f5e: 48 8b 50 58 mov 0x58(%rax),%rdx 0.00 : f62: 48 01 90 a8 00 00 00 add %rdx,0xa8(%rax) : adapter->vfinfo[i].vfstats.gorc; : adapter->vfinfo[i].vfstats.gorc = 0; : adapter->vfinfo[i].last_vfstats.gotc = 0.00 : f69: 48 89 ca mov %rcx,%rdx : adapter->vfinfo[i].vfstats.gptc = 0; : adapter->vfinfo[i].last_vfstats.gorc = : IXGBE_READ_REG(hw, IXGBE_PVFGORC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gorc += : adapter->vfinfo[i].vfstats.gorc; : adapter->vfinfo[i].vfstats.gorc = 0; 0.00 : f6c: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : f73: 48 c7 44 08 58 00 00 movq $0x0,0x58(%rax,%rcx,1) 0.00 : f7a: 00 00 0.00 : f7c: 49 63 c1 movslq %r9d,%rax : adapter->vfinfo[i].last_vfstats.gotc = 0.00 : f7f: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : f86: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : f8d: 8b 00 mov (%rax),%eax 0.00 : f8f: 89 c0 mov %eax,%eax 0.00 : f91: 48 81 c6 1c d0 00 00 add $0xd01c,%rsi 0.00 : f98: 48 89 82 90 00 00 00 mov %rax,0x90(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGOTC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gotc += 0.00 : f9f: 48 89 c8 mov %rcx,%rax 0.00 : fa2: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : fa9: 48 8b 50 68 mov 0x68(%rax),%rdx 0.00 : fad: 48 01 90 b8 00 00 00 add %rdx,0xb8(%rax) : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; : adapter->vfinfo[i].last_vfstats.mprc = 0.00 : fb4: 48 89 ca mov %rcx,%rdx : adapter->vfinfo[i].vfstats.gorc = 0; : adapter->vfinfo[i].last_vfstats.gotc = : IXGBE_READ_REG(hw, IXGBE_PVFGOTC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gotc += : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; 0.00 : fb7: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : fbe: 48 c7 44 08 68 00 00 movq $0x0,0x68(%rax,%rcx,1) 0.00 : fc5: 00 00 : adapter->vfinfo[i].last_vfstats.mprc = 0.00 : fc7: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : fce: 48 03 b7 80 0e 00 00 add 0xe80(%rdi),%rsi 0.00 : fd5: 8b 06 mov (%rsi),%eax 0.00 : fd7: 89 c0 mov %eax,%eax : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : fd9: 41 83 c0 01 add $0x1,%r8d 0.00 : fdd: 41 83 c2 04 add $0x4,%r10d : adapter->vfinfo[i].last_vfstats.gotc = : IXGBE_READ_REG(hw, IXGBE_PVFGOTC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gotc += : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; : adapter->vfinfo[i].last_vfstats.mprc = 0.00 : fe1: 48 89 82 98 00 00 00 mov %rax,0x98(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFMPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.mprc += 0.00 : fe8: 48 89 c8 mov %rcx,%rax 0.00 : feb: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : ff2: 41 83 c1 08 add $0x8,%r9d : adapter->vfinfo[i].saved_rst_vfstats.gotc += : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; : adapter->vfinfo[i].last_vfstats.mprc = : IXGBE_READ_REG(hw, IXGBE_PVFMPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.mprc += 0.00 : ff6: 48 8b 50 70 mov 0x70(%rax),%rdx 0.00 : ffa: 48 01 90 c0 00 00 00 add %rdx,0xc0(%rax) : adapter->vfinfo[i].vfstats.mprc; : adapter->vfinfo[i].vfstats.mprc = 0; 0.00 : 1001: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : 1008: 48 c7 44 08 70 00 00 movq $0x0,0x70(%rax,%rcx,1) 0.00 : 100f: 00 00 : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 1011: 44 39 87 58 7c 00 00 cmp %r8d,0x7c58(%rdi) 0.00 : 1018: 0f 87 72 fe ff ff ja e90 0.00 : 101e: f3 c3 repz retq : : 0000000000001020 : : mii->val_in); : } : } : : static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) : { 0.00 : 1020: 53 push %rbx : #ifdef CONFIG_IXGBE_PTP : struct ixgbe_adapter *adapter = netdev_priv(netdev); : : #endif : switch (cmd) { 0.00 : 1021: 8d 82 b8 76 ff ff lea -0x8948(%rdx),%eax 0.00 : 1027: b9 a1 ff ff ff mov $0xffffffa1,%ecx : mii->val_in); : } : } : : static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) : { 0.00 : 102c: 48 83 ec 10 sub $0x10,%rsp : #ifdef CONFIG_IXGBE_PTP : struct ixgbe_adapter *adapter = netdev_priv(netdev); : : #endif : switch (cmd) { 0.00 : 1030: 83 f8 01 cmp $0x1,%eax 0.00 : 1033: 77 42 ja 1077 : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 1035: 0f b7 46 10 movzwl 0x10(%rsi),%eax : } : : static int ixgbe_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; 0.00 : 1039: 48 8d 5e 10 lea 0x10(%rsi),%rbx : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 103d: 41 89 c0 mov %eax,%r8d : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); 0.00 : 1040: 41 89 c1 mov %eax,%r9d : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 1043: 41 81 e0 e0 03 00 00 and $0x3e0,%r8d : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); 0.00 : 104a: 41 83 e1 1f and $0x1f,%r9d : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 104e: 41 c1 f8 05 sar $0x5,%r8d : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); : : if (cmd == SIOCGMIIREG) { 0.00 : 1052: 81 fa 48 89 00 00 cmp $0x8948,%edx 0.00 : 1058: 74 26 je 1080 : } : : static int ixgbe_mdio_write(struct net_device *netdev, int prtad, int devad, : u16 addr, u16 value) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : 105a: 48 8d 87 00 08 00 00 lea 0x800(%rdi),%rax : if (ret < 0) : return ret; : mii->val_out = ret; : return 0; : } else { : return ixgbe_mdio_write(netdev, prtad, devad, mii->reg_num, 0.00 : 1061: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.00 : 1065: 0f b7 73 02 movzwl 0x2(%rbx),%esi : u16 addr, u16 value) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_hw *hw = &adapter->hw; : : if (prtad != hw->phy.addr) 0.00 : 1069: 44 3b 80 9c 13 00 00 cmp 0x139c(%rax),%r8d 0.00 : 1070: 74 5e je 10d0 : return -EINVAL; : return hw->phy.ops.write_reg(hw, addr, devad, value); 0.00 : 1072: b9 ea ff ff ff mov $0xffffffea,%ecx : case SIOCSMIIREG: : return ixgbe_mii_ioctl(netdev, ifr, cmd); : default: : return -EOPNOTSUPP; : } : } 0.00 : 1077: 89 c8 mov %ecx,%eax 0.00 : 1079: 48 83 c4 10 add $0x10,%rsp 0.00 : 107d: 5b pop %rbx 0.00 : 107e: c3 retq 0.00 : 107f: 90 nop : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && defined(NETDEV_HW_ADDR_T_SAN) */ : : static int ixgbe_mdio_read(struct net_device *netdev, int prtad, int devad, : u16 addr) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : 1080: 48 8d 87 00 08 00 00 lea 0x800(%rdi),%rax : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); : : if (cmd == SIOCGMIIREG) { : ret = ixgbe_mdio_read(netdev, prtad, devad, mii->reg_num); 0.00 : 1087: 0f b7 73 02 movzwl 0x2(%rbx),%esi : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_hw *hw = &adapter->hw; : u16 value; : int rc; : : if (prtad != hw->phy.addr) 0.00 : 108b: 44 3b 80 9c 13 00 00 cmp 0x139c(%rax),%r8d 0.00 : 1092: 75 de jne 1072 : return -EINVAL; : rc = hw->phy.ops.read_reg(hw, addr, devad, &value); 0.00 : 1094: 48 8d 4c 24 0e lea 0xe(%rsp),%rcx 0.00 : 1099: 48 81 c7 80 16 00 00 add $0x1680,%rdi 0.00 : 10a0: 0f b7 f6 movzwl %si,%esi 0.00 : 10a3: 44 89 ca mov %r9d,%edx 0.00 : 10a6: ff 90 38 13 00 00 callq *0x1338(%rax) : if (!rc) 0.00 : 10ac: 83 f8 00 cmp $0x0,%eax : u16 value; : int rc; : : if (prtad != hw->phy.addr) : return -EINVAL; : rc = hw->phy.ops.read_reg(hw, addr, devad, &value); 0.00 : 10af: 89 c1 mov %eax,%ecx : if (!rc) 0.00 : 10b1: 75 3d jne 10f0 : rc = value; 0.00 : 10b3: 0f b7 4c 24 0e movzwl 0xe(%rsp),%ecx : : if (cmd == SIOCGMIIREG) { : ret = ixgbe_mdio_read(netdev, prtad, devad, mii->reg_num); : if (ret < 0) : return ret; : mii->val_out = ret; 0.00 : 10b8: 66 89 4b 06 mov %cx,0x6(%rbx) 0.00 : 10bc: 31 c9 xor %ecx,%ecx : case SIOCSMIIREG: : return ixgbe_mii_ioctl(netdev, ifr, cmd); : default: : return -EOPNOTSUPP; : } : } 0.00 : 10be: 48 83 c4 10 add $0x10,%rsp 0.00 : 10c2: 89 c8 mov %ecx,%eax 0.00 : 10c4: 5b pop %rbx 0.00 : 10c5: c3 retq 0.00 : 10c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 10cd: 00 00 00 : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_hw *hw = &adapter->hw; : : if (prtad != hw->phy.addr) : return -EINVAL; : return hw->phy.ops.write_reg(hw, addr, devad, value); 0.00 : 10d0: 0f b7 c9 movzwl %cx,%ecx 0.00 : 10d3: 0f b7 f6 movzwl %si,%esi 0.00 : 10d6: 48 81 c7 80 16 00 00 add $0x1680,%rdi 0.00 : 10dd: 44 89 ca mov %r9d,%edx 0.00 : 10e0: ff 90 40 13 00 00 callq *0x1340(%rax) 0.00 : 10e6: 89 c1 mov %eax,%ecx 0.00 : 10e8: eb 8d jmp 1077 0.00 : 10ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); : : if (cmd == SIOCGMIIREG) { : ret = ixgbe_mdio_read(netdev, prtad, devad, mii->reg_num); : if (ret < 0) 0.00 : 10f0: 7d c6 jge 10b8 0.00 : 10f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 10f8: e9 7a ff ff ff jmpq 1077 0.00 : 10fd: 0f 1f 00 nopl (%rax) : : 0000000000001100 : : struct ixgbe_adapter *adapter = netdev_priv(netdev); : #endif : : #ifdef CONFIG_DCB : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) : features |= NETIF_F_HW_VLAN_RX; 0.00 : 1100: 89 f0 mov %esi,%eax 0.00 : 1102: 80 cc 01 or $0x1,%ah 0.00 : 1105: f6 87 19 0a 00 00 04 testb $0x4,0xa19(%rdi) 0.00 : 110c: 0f 45 f0 cmovne %eax,%esi : #endif : : /* If Rx checksum is disabled, then RSC/LRO should also be disabled */ : if (!(features & NETIF_F_RXCSUM)) : features &= ~NETIF_F_LRO; 0.00 : 110f: 89 f0 mov %esi,%eax 0.00 : 1111: 80 e4 7f and $0x7f,%ah 0.00 : 1114: f7 c6 00 00 00 20 test $0x20000000,%esi 0.00 : 111a: 0f 44 f0 cmove %eax,%esi : if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE)) : features &= ~NETIF_F_LRO; : : #endif : return features; : } 0.00 : 111d: 89 f0 mov %esi,%eax 0.00 : 111f: c3 retq : : 0000000000001120 : : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { 0.00 : 1120: 66 81 fe f8 10 cmp $0x10f8,%si : int ixgbe_wol_supported(struct ixgbe_adapter *adapter, u16 device_id, : u16 subdevice_id) : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; 0.00 : 1125: 0f b7 8f 3e 7c 00 00 movzwl 0x7c3e(%rdi),%ecx : : switch (device_id) { 0.00 : 112c: 74 7a je 11a8 0.00 : 112e: 76 38 jbe 1168 0.00 : 1130: 66 81 fe fb 10 cmp $0x10fb,%si 0.00 : 1135: 74 41 je 1178 0.00 : 1137: 66 81 fe 28 15 cmp $0x1528,%si 0.00 : 113c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 1140: 75 2d jne 116f : int ixgbe_wol_supported(struct ixgbe_adapter *adapter, u16 device_id, : u16 subdevice_id) : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; 0.00 : 1142: 89 c8 mov %ecx,%eax 0.00 : 1144: 83 e0 0c and $0xc,%eax : case IXGBE_DEV_ID_82599_KX4: : is_wol_supported = 1; : break; : case IXGBE_DEV_ID_X540T: : /* check eeprom to see if enabled wol */ : if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || 0.00 : 1147: 66 83 f8 04 cmp $0x4,%ax 0.00 : 114b: 74 4b je 1198 0.00 : 114d: 66 83 f8 08 cmp $0x8,%ax 0.00 : 1151: 75 1c jne 116f 0.00 : 1153: 31 c0 xor %eax,%eax 0.00 : 1155: 66 83 bf 24 14 00 00 cmpw $0x0,0x1424(%rdi) 0.00 : 115c: 00 0.00 : 115d: 0f 94 c0 sete %al 0.00 : 1160: c3 retq 0.00 : 1161: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { 0.00 : 1168: 66 81 fe f7 10 cmp $0x10f7,%si 0.00 : 116d: 74 29 je 1198 : case IXGBE_DEV_ID_82599_KX4: : is_wol_supported = 1; : break; : case IXGBE_DEV_ID_X540T: : /* check eeprom to see if enabled wol */ : if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || 0.00 : 116f: 31 c0 xor %eax,%eax 0.00 : 1171: c3 retq 0.00 : 1172: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { : case IXGBE_DEV_ID_82599_SFP: : /* Only these subdevices could supports WOL */ : switch (subdevice_id) { 0.00 : 1178: 66 81 fa a9 11 cmp $0x11a9,%dx 0.00 : 117d: 0f 1f 00 nopl (%rax) 0.00 : 1180: 74 16 je 1198 0.00 : 1182: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1188: 77 2e ja 11b8 0.00 : 118a: 66 81 fa 70 04 cmp $0x470,%dx 0.00 : 118f: 90 nop 0.00 : 1190: 75 dd jne 116f 0.00 : 1192: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case IXGBE_DEV_ID_82599_KX4: : is_wol_supported = 1; : break; : case IXGBE_DEV_ID_X540T: : /* check eeprom to see if enabled wol */ : if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || 0.00 : 1198: b8 01 00 00 00 mov $0x1,%eax 0.00 : 119d: 0f 1f 00 nopl (%rax) : } : break; : } : : return is_wol_supported; : } 0.00 : 11a0: c3 retq 0.00 : 11a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Only these subdevices could supports WOL */ : switch (subdevice_id) { : case IXGBE_SUBDEV_ID_82599_560FLR: : /* only support first port */ : if (hw->bus.func != 0) : break; 0.00 : 11a8: 31 c0 xor %eax,%eax 0.00 : 11aa: 66 83 fa 0c cmp $0xc,%dx 0.00 : 11ae: 0f 95 c0 setne %al 0.00 : 11b1: c3 retq 0.00 : 11b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { : case IXGBE_DEV_ID_82599_SFP: : /* Only these subdevices could supports WOL */ : switch (subdevice_id) { 0.00 : 11b8: 66 81 fa d0 17 cmp $0x17d0,%dx 0.00 : 11bd: 0f 1f 00 nopl (%rax) 0.00 : 11c0: 74 91 je 1153 0.00 : 11c2: 66 81 fa 72 1f cmp $0x1f72,%dx 0.00 : 11c7: 75 a6 jne 116f 0.00 : 11c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 11d0: eb c6 jmp 1198 0.00 : 11d2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11d9: 1f 84 00 00 00 00 00 : : 00000000000011e0 : 0.00 : 11e0: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax : : #define DEFAULT_DEBUG_LEVEL_SHIFT 3 : : static void ixgbe_service_event_schedule(struct ixgbe_adapter *adapter) : { : if (!test_bit(__IXGBE_DOWN, &adapter->state) && 0.00 : 11e7: 48 8d 97 10 02 00 00 lea 0x210(%rdi),%rdx 0.00 : 11ee: a8 04 test $0x4,%al 0.00 : 11f0: 75 0b jne 11fd : */ : static inline int test_and_set_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "bts %2,%1\n\t" 0.00 : 11f2: f0 0f ba 2a 03 lock btsl $0x3,(%rdx) 0.00 : 11f7: 19 c0 sbb %eax,%eax 0.00 : 11f9: 85 c0 test %eax,%eax 0.00 : 11fb: 74 03 je 1200 0.00 : 11fd: f3 c3 repz retq 0.00 : 11ff: 90 nop : !test_and_set_bit(__IXGBE_SERVICE_SCHED, &adapter->state)) : schedule_work(&adapter->service_task); 0.00 : 1200: 48 81 c7 78 1b 00 00 add $0x1b78,%rdi 0.00 : 1207: e9 00 00 00 00 jmpq 120c 0.00 : 120c: 0f 1f 40 00 nopl 0x0(%rax) : : 0000000000001210 : : * @pdev: Pointer to PCI device : * : * Restart the card from scratch, as if from a cold-boot. : */ : static pci_ers_result_t ixgbe_io_slot_reset(struct pci_dev *pdev) : { 0.00 : 1210: 48 83 ec 18 sub $0x18,%rsp 0.00 : 1214: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 0.00 : 1219: 48 89 fd mov %rdi,%rbp : * driver-specific data. They are really just a wrapper around : * the generic device structure functions of these calls. : */ : static inline void *pci_get_drvdata(struct pci_dev *pdev) : { : return dev_get_drvdata(&pdev->dev); 0.00 : 121c: 48 8d bf 90 00 00 00 lea 0x90(%rdi),%rdi 0.00 : 1223: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 1228: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 122c: e8 00 00 00 00 callq 1231 : struct ixgbe_adapter *adapter = pci_get_drvdata(pdev); : pci_ers_result_t result; : : if (pci_enable_device_mem(pdev)) { 0.00 : 1231: 48 89 ef mov %rbp,%rdi 0.00 : 1234: 49 89 c4 mov %rax,%r12 0.00 : 1237: e8 00 00 00 00 callq 123c 0.00 : 123c: 85 c0 test %eax,%eax 0.00 : 123e: 74 50 je 1290 : e_err(probe, "Cannot re-enable PCI device after reset.\n"); 0.00 : 1240: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 1247: 00 02 0.00 : 1249: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 124e: 75 20 jne 1270 : : IXGBE_WRITE_REG(&adapter->hw, IXGBE_WUS, ~0); : result = PCI_ERS_RESULT_RECOVERED; : } : : pci_cleanup_aer_uncorrect_error_status(pdev); 0.00 : 1250: 48 89 ef mov %rbp,%rdi 0.00 : 1253: e8 00 00 00 00 callq 1258 : : return result; : } 0.00 : 1258: 89 d8 mov %ebx,%eax 0.00 : 125a: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 125f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 1263: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 1268: 48 83 c4 18 add $0x18,%rsp 0.00 : 126c: c3 retq 0.00 : 126d: 0f 1f 00 nopl (%rax) : { : struct ixgbe_adapter *adapter = pci_get_drvdata(pdev); : pci_ers_result_t result; : : if (pci_enable_device_mem(pdev)) { : e_err(probe, "Cannot re-enable PCI device after reset.\n"); 0.00 : 1270: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 1277: 00 0.00 : 1278: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 127f: 31 c0 xor %eax,%eax 0.00 : 1281: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 1286: e8 00 00 00 00 callq 128b 0.00 : 128b: eb c3 jmp 1250 0.00 : 128d: 0f 1f 00 nopl (%rax) : result = PCI_ERS_RESULT_DISCONNECT; : } else { : pci_set_master(pdev); 0.00 : 1290: 48 89 ef mov %rbp,%rdi 0.00 : 1293: e8 00 00 00 00 callq 1298 : pci_restore_state(pdev); 0.00 : 1298: 48 89 ef mov %rbp,%rdi 0.00 : 129b: e8 00 00 00 00 callq 12a0 : /* : * After second error pci->state_saved is false, this : * resets it so EEH doesn't break. : */ : pci_save_state(pdev); 0.00 : 12a0: 48 89 ef mov %rbp,%rdi 0.00 : 12a3: e8 00 00 00 00 callq 12a8 : : pci_wake_from_d3(pdev, false); 0.00 : 12a8: 31 f6 xor %esi,%esi 0.00 : 12aa: 48 89 ef mov %rbp,%rdi 0.00 : 12ad: e8 00 00 00 00 callq 12b2 : : adapter->flags2 |= IXGBE_FLAG2_RESET_REQUESTED; 0.00 : 12b2: 41 81 8c 24 1c 02 00 orl $0x80,0x21c(%r12) 0.00 : 12b9: 00 80 00 00 00 : ixgbe_service_event_schedule(adapter); 0.00 : 12be: 4c 89 e7 mov %r12,%rdi 0.00 : 12c1: e8 1a ff ff ff callq 11e0 : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 12c6: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 12cd: 00 0.00 : 12ce: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 12d3: 48 05 10 58 00 00 add $0x5810,%rax 0.00 : 12d9: 89 10 mov %edx,(%rax) 0.00 : 12db: bb 05 00 00 00 mov $0x5,%ebx 0.00 : 12e0: e9 6b ff ff ff jmpq 1250 0.00 : 12e5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12ec: 00 00 00 00 : : Disassembly of section .devinit.text: : : 0000000000000367 : : * The OS initialization, configuring of the adapter private structure, : * and a hardware reset occur. : **/ : static int __devinit ixgbe_probe(struct pci_dev *pdev, : const struct pci_device_id *ent) : { 0.00 : 367: 41 57 push %r15 0.00 : 369: 41 56 push %r14 0.00 : 36b: 41 55 push %r13 0.00 : 36d: 49 89 fd mov %rdi,%r13 0.00 : 370: 41 54 push %r12 0.00 : 372: 55 push %rbp 0.00 : 373: 53 push %rbx 0.00 : 374: 48 83 ec 58 sub $0x58,%rsp : u16 build, major, patch; : char *info_string, *i_s_var; : u8 part_str[IXGBE_PBANUM_LENGTH]; : enum ixgbe_mac_type mac_type = ixgbe_mac_unknown; : #ifdef HAVE_TX_MQ : unsigned int indices = num_possible_cpus(); 0.00 : 378: 4c 8b 25 00 00 00 00 mov 0x0(%rip),%r12 # 37f 0.00 : 37f: 4c 89 e7 mov %r12,%rdi 0.00 : 382: e8 00 00 00 00 callq 387 : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : u16 device_caps; : #endif : : err = pci_enable_device_mem(pdev); 0.00 : 387: 4c 89 ef mov %r13,%rdi : u16 build, major, patch; : char *info_string, *i_s_var; : u8 part_str[IXGBE_PBANUM_LENGTH]; : enum ixgbe_mac_type mac_type = ixgbe_mac_unknown; : #ifdef HAVE_TX_MQ : unsigned int indices = num_possible_cpus(); 0.00 : 38a: 41 89 c6 mov %eax,%r14d : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : u16 device_caps; : #endif : : err = pci_enable_device_mem(pdev); 0.00 : 38d: e8 00 00 00 00 callq 392 : if (err) 0.00 : 392: 85 c0 test %eax,%eax : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : u16 device_caps; : #endif : : err = pci_enable_device_mem(pdev); 0.00 : 394: 89 c5 mov %eax,%ebp : if (err) 0.00 : 396: 74 11 je 3a9 : pci_select_bars(pdev, IORESOURCE_MEM)); : err_pci_reg: : err_dma: : pci_disable_device(pdev); : return err; : } 0.00 : 398: 48 83 c4 58 add $0x58,%rsp 0.00 : 39c: 89 e8 mov %ebp,%eax 0.00 : 39e: 5b pop %rbx 0.00 : 39f: 5d pop %rbp 0.00 : 3a0: 41 5c pop %r12 0.00 : 3a2: 41 5d pop %r13 0.00 : 3a4: 41 5e pop %r14 0.00 : 3a6: 41 5f pop %r15 0.00 : 3a8: c3 retq : : err = pci_enable_device_mem(pdev); : if (err) : return err; : : if (!dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64)) && 0.00 : 3a9: 4d 8d bd 90 00 00 00 lea 0x90(%r13),%r15 0.00 : 3b0: 48 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%rsi 0.00 : 3b7: 4c 89 ff mov %r15,%rdi 0.00 : 3ba: e8 00 00 00 00 callq 3bf 0.00 : 3bf: 85 c0 test %eax,%eax 0.00 : 3c1: 75 6a jne 42d : #ifdef ARCH_HAS_DMA_SET_COHERENT_MASK : int dma_set_coherent_mask(struct device *dev, u64 mask); : #else : static inline int dma_set_coherent_mask(struct device *dev, u64 mask) : { : if (!dma_supported(dev, mask)) 0.00 : 3c3: 48 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%rsi 0.00 : 3ca: 4c 89 ff mov %r15,%rdi 0.00 : 3cd: e8 00 00 00 00 callq 3d2 0.00 : 3d2: 85 c0 test %eax,%eax 0.00 : 3d4: 74 57 je 42d : return -EIO; : dev->coherent_dma_mask = mask; 0.00 : 3d6: 49 c7 85 60 02 00 00 movq $0xffffffffffffffff,0x260(%r13) 0.00 : 3dd: ff ff ff ff 0.00 : 3e1: c7 44 24 24 01 00 00 movl $0x1,0x24(%rsp) 0.00 : 3e8: 00 : } : } : pci_using_dac = 0; : } : : err = pci_request_selected_regions(pdev, pci_select_bars(pdev, 0.00 : 3e9: be 00 02 00 00 mov $0x200,%esi 0.00 : 3ee: 4c 89 ef mov %r13,%rdi 0.00 : 3f1: e8 00 00 00 00 callq 3f6 0.00 : 3f6: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 3fd: 89 c6 mov %eax,%esi 0.00 : 3ff: 4c 89 ef mov %r13,%rdi 0.00 : 402: e8 00 00 00 00 callq 407 : IORESOURCE_MEM), ixgbe_driver_name); : if (err) { 0.00 : 407: 85 c0 test %eax,%eax : } : } : pci_using_dac = 0; : } : : err = pci_request_selected_regions(pdev, pci_select_bars(pdev, 0.00 : 409: 89 c5 mov %eax,%ebp : IORESOURCE_MEM), ixgbe_driver_name); : if (err) { 0.00 : 40b: 74 5c je 469 : dev_err(pci_dev_to_dev(pdev), 0.00 : 40d: 89 c2 mov %eax,%edx 0.00 : 40f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 416: 4c 89 ff mov %r15,%rdi 0.00 : 419: 31 c0 xor %eax,%eax 0.00 : 41b: e8 00 00 00 00 callq 420 : err_alloc_etherdev: : pci_release_selected_regions(pdev, : pci_select_bars(pdev, IORESOURCE_MEM)); : err_pci_reg: : err_dma: : pci_disable_device(pdev); 0.00 : 420: 4c 89 ef mov %r13,%rdi 0.00 : 423: e8 00 00 00 00 callq 428 : return err; : } 0.00 : 428: e9 6b ff ff ff jmpq 398 : : if (!dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64)) && : !dma_set_coherent_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64))) { : pci_using_dac = 1; : } else { : err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(32)); 0.00 : 42d: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 432: 4c 89 ff mov %r15,%rdi 0.00 : 435: e8 00 00 00 00 callq 43a : if (err) { 0.00 : 43a: 85 c0 test %eax,%eax : err = dma_set_coherent_mask(pci_dev_to_dev(pdev), : DMA_BIT_MASK(32)); : if (err) { : dev_err(pci_dev_to_dev(pdev), "No usable DMA " : "configuration, aborting\n"); : goto err_dma; 0.00 : 43c: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 443: 00 : if (!dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64)) && : !dma_set_coherent_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64))) { : pci_using_dac = 1; : } else { : err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(32)); : if (err) { 0.00 : 444: 74 a3 je 3e9 : #ifdef ARCH_HAS_DMA_SET_COHERENT_MASK : int dma_set_coherent_mask(struct device *dev, u64 mask); : #else : static inline int dma_set_coherent_mask(struct device *dev, u64 mask) : { : if (!dma_supported(dev, mask)) 0.00 : 446: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 44b: 4c 89 ff mov %r15,%rdi 0.00 : 44e: e8 00 00 00 00 callq 453 0.00 : 453: 85 c0 test %eax,%eax 0.00 : 455: 0f 84 ae 01 00 00 je 609 : return -EIO; : dev->coherent_dma_mask = mask; 0.00 : 45b: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 460: 49 89 95 60 02 00 00 mov %rdx,0x260(%r13) 0.00 : 467: eb 80 jmp 3e9 : /* : * The mac_type is needed before we have the adapter is set up : * so rather than maintain two devID -> MAC tables we dummy up : * an ixgbe_hw stuct and use ixgbe_set_mac_type. : */ : hw = vmalloc(sizeof(struct ixgbe_hw)); 0.00 : 469: bf 28 06 00 00 mov $0x628,%edi 0.00 : 46e: e8 00 00 00 00 callq 473 : if (!hw) { 0.00 : 473: 48 85 c0 test %rax,%rax : /* : * The mac_type is needed before we have the adapter is set up : * so rather than maintain two devID -> MAC tables we dummy up : * an ixgbe_hw stuct and use ixgbe_set_mac_type. : */ : hw = vmalloc(sizeof(struct ixgbe_hw)); 0.00 : 476: 48 89 c5 mov %rax,%rbp : if (!hw) { 0.00 : 479: 0f 84 77 01 00 00 je 5f6 : pr_info("Unable to allocate memory for early mac " : "check\n"); : } else { : hw->vendor_id = pdev->vendor; 0.00 : 47f: 41 0f b7 45 3c movzwl 0x3c(%r13),%eax : hw->device_id = pdev->device; : ixgbe_set_mac_type(hw); 0.00 : 484: 48 89 ef mov %rbp,%rdi : hw = vmalloc(sizeof(struct ixgbe_hw)); : if (!hw) { : pr_info("Unable to allocate memory for early mac " : "check\n"); : } else { : hw->vendor_id = pdev->vendor; 0.00 : 487: 66 89 85 12 06 00 00 mov %ax,0x612(%rbp) : hw->device_id = pdev->device; 0.00 : 48e: 41 0f b7 45 3e movzwl 0x3e(%r13),%eax 0.00 : 493: 66 89 85 10 06 00 00 mov %ax,0x610(%rbp) : ixgbe_set_mac_type(hw); 0.00 : 49a: e8 00 00 00 00 callq 49f : mac_type = hw->mac.type; 0.00 : 49f: 8b 9d d0 01 00 00 mov 0x1d0(%rbp),%ebx : vfree(hw); 0.00 : 4a5: 48 89 ef mov %rbp,%rdi 0.00 : 4a8: e8 00 00 00 00 callq 4ad : * port to which the 82598 is connected to prevent duplicate : * completions caused by LOs. We need the mac type so that we only : * do this on 82598 devices, ixgbe_set_mac_type does this for us if : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) 0.00 : 4ad: 83 eb 01 sub $0x1,%ebx 0.00 : 4b0: 0f 84 f6 00 00 00 je 5ac : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); : : pci_enable_pcie_error_reporting(pdev); 0.00 : 4b6: 4c 89 ef mov %r13,%rdi : : pci_set_master(pdev); : : #ifdef HAVE_TX_MQ : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; 0.00 : 4b9: 42 8d 1c f5 00 00 00 lea 0x0(,%r14,8),%ebx 0.00 : 4c0: 00 : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); : : pci_enable_pcie_error_reporting(pdev); 0.00 : 4c1: e8 00 00 00 00 callq 4c6 : : pci_set_master(pdev); 33.33 : 4c6: 4c 89 ef mov %r13,%rdi 33.33 : 4c9: e8 00 00 00 00 callq 4ce : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 4ce: 4c 89 e7 mov %r12,%rdi 0.00 : 4d1: e8 00 00 00 00 callq 4d6 33.33 : 4d6: ba 08 00 00 00 mov $0x8,%edx 0.00 : 4db: 83 f8 08 cmp $0x8,%eax : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); : #else : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); 0.00 : 4de: be 40 00 00 00 mov $0x40,%esi : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 4e3: 0f 46 d0 cmovbe %eax,%edx 0.00 : 4e6: 01 da add %ebx,%edx : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); : #else : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); 0.00 : 4e8: 83 fa 40 cmp $0x40,%edx 0.00 : 4eb: 0f 46 f2 cmovbe %edx,%esi : : netdev = alloc_etherdev_mq(sizeof(struct ixgbe_adapter), indices); 0.00 : 4ee: 89 f2 mov %esi,%edx 0.00 : 4f0: bf 00 7d 00 00 mov $0x7d00,%edi : #else /* HAVE_TX_MQ */ : netdev = alloc_etherdev(sizeof(struct ixgbe_adapter)); : #endif /* HAVE_TX_MQ */ : if (!netdev) { 0.00 : 4f5: bd f4 ff ff ff mov $0xfffffff4,%ebp : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); : : netdev = alloc_etherdev_mq(sizeof(struct ixgbe_adapter), indices); 0.00 : 4fa: e8 00 00 00 00 callq 4ff : #else /* HAVE_TX_MQ */ : netdev = alloc_etherdev(sizeof(struct ixgbe_adapter)); : #endif /* HAVE_TX_MQ */ : if (!netdev) { 0.00 : 4ff: 48 85 c0 test %rax,%rax : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); : : netdev = alloc_etherdev_mq(sizeof(struct ixgbe_adapter), indices); 0.00 : 502: 49 89 c6 mov %rax,%r14 : #else /* HAVE_TX_MQ */ : netdev = alloc_etherdev(sizeof(struct ixgbe_adapter)); : #endif /* HAVE_TX_MQ */ : if (!netdev) { 0.00 : 505: 0f 84 85 00 00 00 je 590 : goto err_alloc_etherdev; : } : : SET_NETDEV_DEV(netdev, &pdev->dev); : : adapter = netdev_priv(netdev); 0.00 : 50b: 4c 8d a0 00 08 00 00 lea 0x800(%rax),%r12 : } : : static inline void pci_set_drvdata(struct pci_dev *pdev, void *data) : { : dev_set_drvdata(&pdev->dev, data); 0.00 : 512: 4c 89 ff mov %r15,%rdi : if (!netdev) { : err = -ENOMEM; : goto err_alloc_etherdev; : } : : SET_NETDEV_DEV(netdev, &pdev->dev); 0.00 : 515: 4c 89 b8 78 04 00 00 mov %r15,0x478(%rax) 0.00 : 51c: 4c 89 e6 mov %r12,%rsi 0.00 : 51f: e8 00 00 00 00 callq 524 : #ifdef HAVE_PCI_ERS : /* : * call save state here in standalone driver because it relies on : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); 0.00 : 524: 4c 89 ef mov %r13,%rdi : SET_NETDEV_DEV(netdev, &pdev->dev); : : adapter = netdev_priv(netdev); : pci_set_drvdata(pdev, adapter); : : adapter->netdev = netdev; 0.00 : 527: 4d 89 b4 24 00 02 00 mov %r14,0x200(%r12) 0.00 : 52e: 00 : adapter->pdev = pdev; 0.00 : 52f: 4d 89 ac 24 08 02 00 mov %r13,0x208(%r12) 0.00 : 536: 00 : hw = &adapter->hw; : hw->back = adapter; 0.00 : 537: 4d 89 a4 24 88 0e 00 mov %r12,0xe88(%r12) 0.00 : 53e: 00 : adapter->msg_enable = (1 << DEFAULT_DEBUG_LEVEL_SHIFT) - 1; 0.00 : 53f: 66 41 c7 84 24 a8 14 movw $0x7,0x14a8(%r12) 0.00 : 546: 00 00 07 00 : #ifdef HAVE_PCI_ERS : /* : * call save state here in standalone driver because it relies on : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); 0.00 : 54a: e8 00 00 00 00 callq 54f : : #endif : hw->hw_addr = ioremap(pci_resource_start(pdev, 0), 0.00 : 54f: 49 8b bd 00 03 00 00 mov 0x300(%r13),%rdi 0.00 : 556: 48 85 ff test %rdi,%rdi 0.00 : 559: 0f 84 78 0d 00 00 je 12d7 0.00 : 55f: 49 8b 85 08 03 00 00 mov 0x308(%r13),%rax 0.00 : 566: 48 29 f8 sub %rdi,%rax 0.00 : 569: 48 8d 70 01 lea 0x1(%rax),%rsi : /* : * The default ioremap() behavior is non-cached: : */ : static inline void __iomem *ioremap(resource_size_t offset, unsigned long size) : { : return ioremap_nocache(offset, size); 0.00 : 56d: e8 00 00 00 00 callq 572 : pci_resource_len(pdev, 0)); : if (!hw->hw_addr) { 0.00 : 572: 48 85 c0 test %rax,%rax : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); : : #endif : hw->hw_addr = ioremap(pci_resource_start(pdev, 0), 0.00 : 575: 49 89 84 24 80 0e 00 mov %rax,0xe80(%r12) 0.00 : 57c: 00 : pci_resource_len(pdev, 0)); : if (!hw->hw_addr) { 0.00 : 57d: bd fb ff ff ff mov $0xfffffffb,%ebp 0.00 : 582: 0f 85 9c 00 00 00 jne 624 : #endif /* CONFIG_PCI_IOV */ : adapter->flags2 &= ~IXGBE_FLAG2_SEARCH_FOR_SFP; : kfree(adapter->mac_table); : iounmap(hw->hw_addr); : err_ioremap: : free_netdev(netdev); 0.00 : 588: 4c 89 f7 mov %r14,%rdi 0.00 : 58b: e8 00 00 00 00 callq 590 : err_alloc_etherdev: : pci_release_selected_regions(pdev, 0.00 : 590: 4c 89 ef mov %r13,%rdi 0.00 : 593: be 00 02 00 00 mov $0x200,%esi 0.00 : 598: e8 00 00 00 00 callq 59d 0.00 : 59d: 4c 89 ef mov %r13,%rdi 0.00 : 5a0: 89 c6 mov %eax,%esi 0.00 : 5a2: e8 00 00 00 00 callq 5a7 0.00 : 5a7: e9 74 fe ff ff jmpq 420 : * completions caused by LOs. We need the mac type so that we only : * do this on 82598 devices, ixgbe_set_mac_type does this for us if : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); 0.00 : 5ac: be 01 00 00 00 mov $0x1,%esi 0.00 : 5b1: 4c 89 ef mov %r13,%rdi : : pci_set_master(pdev); : : #ifdef HAVE_TX_MQ : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; 0.00 : 5b4: 42 8d 1c f5 00 00 00 lea 0x0(,%r14,8),%ebx 0.00 : 5bb: 00 : * completions caused by LOs. We need the mac type so that we only : * do this on 82598 devices, ixgbe_set_mac_type does this for us if : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); 0.00 : 5bc: e8 00 00 00 00 callq 5c1 : : pci_enable_pcie_error_reporting(pdev); 0.00 : 5c1: 4c 89 ef mov %r13,%rdi 0.00 : 5c4: e8 00 00 00 00 callq 5c9 : : pci_set_master(pdev); 0.00 : 5c9: 4c 89 ef mov %r13,%rdi 0.00 : 5cc: e8 00 00 00 00 callq 5d1 : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 5d1: 4c 89 e7 mov %r12,%rdi 0.00 : 5d4: e8 00 00 00 00 callq 5d9 0.00 : 5d9: ba 08 00 00 00 mov $0x8,%edx 0.00 : 5de: 83 f8 08 cmp $0x8,%eax : IXGBE_MAX_FCOE_INDICES); : #endif : : if (mac_type == ixgbe_mac_82598EB) : #ifdef CONFIG_DCB : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); 0.00 : 5e1: be 20 00 00 00 mov $0x20,%esi : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 5e6: 0f 46 d0 cmovbe %eax,%edx 0.00 : 5e9: 01 da add %ebx,%edx : IXGBE_MAX_FCOE_INDICES); : #endif : : if (mac_type == ixgbe_mac_82598EB) : #ifdef CONFIG_DCB : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); 0.00 : 5eb: 83 fa 20 cmp $0x20,%edx 0.00 : 5ee: 0f 46 f2 cmovbe %edx,%esi 0.00 : 5f1: e9 f8 fe ff ff jmpq 4ee : * so rather than maintain two devID -> MAC tables we dummy up : * an ixgbe_hw stuct and use ixgbe_set_mac_type. : */ : hw = vmalloc(sizeof(struct ixgbe_hw)); : if (!hw) { : pr_info("Unable to allocate memory for early mac " 0.00 : 5f6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 5fd: 31 c0 xor %eax,%eax 0.00 : 5ff: e8 00 00 00 00 callq 604 0.00 : 604: e9 ad fe ff ff jmpq 4b6 : err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(32)); : if (err) { : err = dma_set_coherent_mask(pci_dev_to_dev(pdev), : DMA_BIT_MASK(32)); : if (err) { : dev_err(pci_dev_to_dev(pdev), "No usable DMA " 0.00 : 609: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 610: 4c 89 ff mov %r15,%rdi 0.00 : 613: 31 c0 xor %eax,%eax 0.00 : 615: e8 00 00 00 00 callq 61a 0.00 : 61a: bd fb ff ff ff mov $0xfffffffb,%ebp : "configuration, aborting\n"); : goto err_dma; 0.00 : 61f: e9 fc fd ff ff jmpq 420 : if (!hw->hw_addr) { : err = -EIO; : goto err_ioremap; : } : : ixgbe_assign_netdev_ops(netdev); 0.00 : 624: 4c 89 f7 mov %r14,%rdi 0.00 : 627: e8 00 00 00 00 callq 62c : #include : : static inline const char *dev_name(const struct device *dev) : { : /* Use the init name until the kobject becomes available */ : if (dev->init_name) 0.00 : 62c: 49 8b b5 e0 00 00 00 mov 0xe0(%r13),%rsi 0.00 : 633: 48 85 f6 test %rsi,%rsi 0.00 : 636: 0f 84 8f 0c 00 00 je 12cb : : strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); 0.00 : 63c: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 641: 4c 89 f7 mov %r14,%rdi 0.00 : 644: e8 00 00 00 00 callq 649 : : adapter->bd_number = cards_found; 0.00 : 649: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 64f : : /* setup the private structure */ : err = ixgbe_sw_init(adapter); 0.00 : 64f: 4c 89 e7 mov %r12,%rdi : : ixgbe_assign_netdev_ops(netdev); : : strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); : : adapter->bd_number = cards_found; 0.00 : 652: 66 41 89 84 24 1c 7c mov %ax,0x7c1c(%r12) 0.00 : 659: 00 00 : : /* setup the private structure */ : err = ixgbe_sw_init(adapter); 0.00 : 65b: e8 a0 f9 ff ff callq 0 : if (err) 0.00 : 660: 85 c0 test %eax,%eax : strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); : : adapter->bd_number = cards_found; : : /* setup the private structure */ : err = ixgbe_sw_init(adapter); 0.00 : 662: 89 c5 mov %eax,%ebp : if (err) 0.00 : 664: 0f 85 11 02 00 00 jne 87b : goto err_sw_init; : : /* Make it possible the adapter to be woken up via WOL */ : switch (adapter->hw.mac.type) { 0.00 : 66a: 41 8b 84 24 50 10 00 mov 0x1050(%r12),%eax 0.00 : 671: 00 0.00 : 672: 83 e8 02 sub $0x2,%eax 0.00 : 675: 83 f8 01 cmp $0x1,%eax 0.00 : 678: 77 15 ja 68f : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 67a: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 681: 00 0.00 : 682: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 687: 48 05 10 58 00 00 add $0x5810,%rax 0.00 : 68d: 89 10 mov %edx,(%rax) : : /* : * If we have a fan, this is as early we know, warn if we : * have had a failure. : */ : if (adapter->flags & IXGBE_FLAG_FAN_FAIL_CAPABLE) { 0.00 : 68f: 41 f6 84 24 19 02 00 testb $0x10,0x219(%r12) 0.00 : 696: 00 10 0.00 : 698: 74 33 je 6cd : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 69a: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 6a1: 00 0.00 : 6a2: 48 83 c0 20 add $0x20,%rax 0.00 : 6a6: 8b 00 mov (%rax),%eax : u32 esdp = IXGBE_READ_REG(hw, IXGBE_ESDP); : if (esdp & IXGBE_ESDP_SDP1) 0.00 : 6a8: a8 02 test $0x2,%al 0.00 : 6aa: 74 21 je 6cd : e_crit(probe, "Fan has stopped, replace the adapter\n"); 0.00 : 6ac: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 6b3: 00 02 0.00 : 6b5: 74 16 je 6cd 0.00 : 6b7: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 6be: 00 0.00 : 6bf: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 6c6: 31 c0 xor %eax,%eax 0.00 : 6c8: e8 00 00 00 00 callq 6cd : adapter = netdev_priv(netdev); : pci_set_drvdata(pdev, adapter); : : adapter->netdev = netdev; : adapter->pdev = pdev; : hw = &adapter->hw; 0.00 : 6cd: 49 8d 84 24 80 0e 00 lea 0xe80(%r12),%rax 0.00 : 6d4: 00 : : /* : * check_options must be called before setup_link to set up : * hw->fc completely : */ : ixgbe_check_options(adapter); 0.00 : 6d5: 4c 89 e7 mov %r12,%rdi : adapter = netdev_priv(netdev); : pci_set_drvdata(pdev, adapter); : : adapter->netdev = netdev; : adapter->pdev = pdev; : hw = &adapter->hw; 0.00 : 6d8: 48 89 44 24 28 mov %rax,0x28(%rsp) : : /* : * check_options must be called before setup_link to set up : * hw->fc completely : */ : ixgbe_check_options(adapter); 0.00 : 6dd: e8 00 00 00 00 callq 6e2 : : /* reset_hw fills in the perm_addr as well */ : hw->phy.reset_if_overtemp = true; 0.00 : 6e2: 41 c6 84 24 c2 13 00 movb $0x1,0x13c2(%r12) 0.00 : 6e9: 00 01 : err = hw->mac.ops.reset_hw(hw); 0.00 : 6eb: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 6f0: 41 ff 94 24 98 0e 00 callq *0xe98(%r12) 0.00 : 6f7: 00 : hw->phy.reset_if_overtemp = false; : if (err == IXGBE_ERR_SFP_NOT_PRESENT && 0.00 : 6f8: 83 f8 ec cmp $0xffffffec,%eax : */ : ixgbe_check_options(adapter); : : /* reset_hw fills in the perm_addr as well */ : hw->phy.reset_if_overtemp = true; : err = hw->mac.ops.reset_hw(hw); 0.00 : 6fb: 89 c5 mov %eax,%ebp : hw->phy.reset_if_overtemp = false; 0.00 : 6fd: 41 c6 84 24 c2 13 00 movb $0x0,0x13c2(%r12) 0.00 : 704: 00 00 : if (err == IXGBE_ERR_SFP_NOT_PRESENT && 0.00 : 706: 0f 84 4d 0b 00 00 je 1259 : hw->mac.type == ixgbe_mac_82598EB) { : err = 0; : } else if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { 0.00 : 70c: 83 f8 ed cmp $0xffffffed,%eax 0.00 : 70f: 0f 84 77 0b 00 00 je 128c : e_dev_err("failed to load because an unsupported SFP+ " : "module type was detected.\n"); : e_dev_err("Reload the driver after installing a supported " : "module.\n"); : goto err_sw_init; : } else if (err) { 0.00 : 715: 85 c0 test %eax,%eax 0.00 : 717: 0f 85 4b 0b 00 00 jne 1268 : e_dev_err("HW Init failed: %d\n", err); : goto err_sw_init; : } : : #ifdef CONFIG_PCI_IOV : ixgbe_enable_sriov(adapter); 0.00 : 71d: 4c 89 e7 mov %r12,%rdi 0.00 : 720: e8 00 00 00 00 callq 725 : #ifdef NETIF_F_RXHASH : netdev->features |= NETIF_F_RXHASH; : #endif /* NETIF_F_RXHASH */ : : #ifdef HAVE_NDO_SET_FEATURES : netdev->features |= NETIF_F_RXCSUM; 0.00 : 725: 41 8b 96 b0 00 00 00 mov 0xb0(%r14),%edx : : /* give us the option of enabling RSC/LRO later */ : #ifdef IXGBE_NO_LRO : if (adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) : #endif : netdev->hw_features |= NETIF_F_LRO; 0.00 : 72c: 89 d0 mov %edx,%eax 0.00 : 72e: 41 0b 86 b4 00 00 00 or 0xb4(%r14),%eax 0.00 : 735: 0d 93 81 11 30 or $0x30118193,%eax 0.00 : 73a: 41 89 86 b4 00 00 00 mov %eax,0xb4(%r14) : #endif /* NETIF_F_GRO */ : #endif : : #ifdef NETIF_F_HW_VLAN_TX : /* set this bit last since it cannot be part of hw_features */ : netdev->features |= NETIF_F_HW_VLAN_FILTER; 0.00 : 741: 89 d0 mov %edx,%eax 0.00 : 743: 0d 93 03 11 30 or $0x30110393,%eax 0.00 : 748: 41 89 86 b0 00 00 00 mov %eax,0xb0(%r14) : #endif : switch (adapter->hw.mac.type) { 0.00 : 74f: 41 8b 84 24 50 10 00 mov 0x1050(%r12),%eax 0.00 : 756: 00 0.00 : 757: 83 e8 02 sub $0x2,%eax 0.00 : 75a: 83 f8 01 cmp $0x1,%eax 0.00 : 75d: 77 18 ja 777 : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : netdev->features |= NETIF_F_SCTP_CSUM; : #ifdef HAVE_NDO_SET_FEATURES : netdev->hw_features |= NETIF_F_SCTP_CSUM | 0.00 : 75f: 41 81 8e b4 00 00 00 orl $0xa000000,0xb4(%r14) 0.00 : 766: 00 00 00 0a : netdev->features |= NETIF_F_HW_VLAN_FILTER; : #endif : switch (adapter->hw.mac.type) { : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : netdev->features |= NETIF_F_SCTP_CSUM; 0.00 : 76a: 81 ca 93 03 11 32 or $0x32110393,%edx 0.00 : 770: 41 89 96 b0 00 00 00 mov %edx,0xb0(%r14) : default: : break; : } : : #ifdef HAVE_NETDEV_VLAN_FEATURES : netdev->vlan_features |= NETIF_F_SG | 0.00 : 777: 41 81 8e bc 00 00 00 orl $0x110013,0xbc(%r14) 0.00 : 77e: 13 00 11 00 : NETIF_F_IPV6_CSUM | : NETIF_F_TSO | : NETIF_F_TSO6; : : #endif /* HAVE_NETDEV_VLAN_FEATURES */ : if (netdev->features & NETIF_F_LRO) { 0.00 : 782: 66 41 83 be b0 00 00 cmpw $0x0,0xb0(%r14) 0.00 : 789: 00 00 0.00 : 78b: 79 37 jns 7c4 : if ((adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) && 0.00 : 78d: 41 8b 84 24 1c 02 00 mov 0x21c(%r12),%eax 0.00 : 794: 00 0.00 : 795: 89 c1 mov %eax,%ecx 0.00 : 797: 83 e1 01 and $0x1,%ecx 0.00 : 79a: 0f 84 8f 0a 00 00 je 122f 0.00 : 7a0: 41 0f b7 94 24 2c 02 movzwl 0x22c(%r12),%edx 0.00 : 7a7: 00 00 0.00 : 7a9: 66 83 fa 01 cmp $0x1,%dx 0.00 : 7ad: 74 0a je 7b9 0.00 : 7af: 66 83 fa 18 cmp $0x18,%dx 0.00 : 7b3: 0f 86 76 0a 00 00 jbe 122f : ((adapter->rx_itr_setting == 1) || : (adapter->rx_itr_setting > IXGBE_MIN_RSC_ITR))) { : adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED; 0.00 : 7b9: 83 c8 02 or $0x2,%eax 0.00 : 7bc: 41 89 84 24 1c 02 00 mov %eax,0x21c(%r12) 0.00 : 7c3: 00 : "falling back to software LRO\n"); : #endif : } : } : #ifdef CONFIG_DCB : netdev->dcbnl_ops = &dcbnl_ops; 0.00 : 7c4: 49 c7 86 10 07 00 00 movq $0x0,0x710(%r14) 0.00 : 7cb: 00 00 00 00 : #endif : : #ifdef IXGBE_FCOE : #ifdef NETIF_F_FSO : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { 0.00 : 7cf: 41 f6 84 24 1a 02 00 testb $0x2,0x21a(%r12) 0.00 : 7d6: 00 02 0.00 : 7d8: 0f 85 c0 09 00 00 jne 119e : NETIF_F_FCOE_MTU; : #endif /* HAVE_NETDEV_VLAN_FEATURES */ : } : #endif /* NETIF_F_FSO */ : #endif /* IXGBE_FCOE */ : if (pci_using_dac) { 0.00 : 7de: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 7e2: 85 c0 test %eax,%eax 0.00 : 7e4: 74 10 je 7f6 : netdev->features |= NETIF_F_HIGHDMA; 0.00 : 7e6: 41 83 8e b0 00 00 00 orl $0x20,0xb0(%r14) 0.00 : 7ed: 20 : #ifdef HAVE_NETDEV_VLAN_FEATURES : netdev->vlan_features |= NETIF_F_HIGHDMA; 0.00 : 7ee: 41 83 8e bc 00 00 00 orl $0x20,0xbc(%r14) 0.00 : 7f5: 20 : #endif /* HAVE_NETDEV_VLAN_FEATURES */ : } : #endif /* MAX_SKB_FRAGS */ : : /* make sure the EEPROM is good */ : if (hw->eeprom.ops.validate_checksum && 0.00 : 7f6: 49 8b 84 24 f0 13 00 mov 0x13f0(%r12),%rax 0.00 : 7fd: 00 0.00 : 7fe: 48 85 c0 test %rax,%rax 0.00 : 801: 74 11 je 814 0.00 : 803: 31 f6 xor %esi,%esi 0.00 : 805: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 80a: ff d0 callq *%rax 0.00 : 80c: 85 c0 test %eax,%eax 0.00 : 80e: 0f 88 c9 09 00 00 js 11dd : e_dev_err("The EEPROM Checksum Is Not Valid\n"); : err = -EIO; : goto err_sw_init; : } : : memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 814: 41 0f b6 96 ed 01 00 movzbl 0x1ed(%r14),%edx 0.00 : 81b: 00 0.00 : 81c: 49 8d ac 24 5a 10 00 lea 0x105a(%r12),%rbp 0.00 : 823: 00 0.00 : 824: 49 8b be 90 02 00 00 mov 0x290(%r14),%rdi : #ifdef ETHTOOL_GPERMADDR : memcpy(netdev->perm_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 82b: 49 8d 9e cc 01 00 00 lea 0x1cc(%r14),%rbx : e_dev_err("The EEPROM Checksum Is Not Valid\n"); : err = -EIO; : goto err_sw_init; : } : : memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 832: 48 89 ee mov %rbp,%rsi 0.00 : 835: e8 00 00 00 00 callq 83a : #ifdef ETHTOOL_GPERMADDR : memcpy(netdev->perm_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 83a: 41 0f b6 96 ed 01 00 movzbl 0x1ed(%r14),%edx 0.00 : 841: 00 0.00 : 842: 48 89 ee mov %rbp,%rsi 0.00 : 845: 48 89 df mov %rbx,%rdi 0.00 : 848: e8 00 00 00 00 callq 84d : : if (ixgbe_validate_mac_addr(netdev->perm_addr)) { 0.00 : 84d: 48 89 df mov %rbx,%rdi 0.00 : 850: e8 00 00 00 00 callq 855 0.00 : 855: 85 c0 test %eax,%eax 0.00 : 857: 74 52 je 8ab : e_dev_err("invalid MAC address\n"); 0.00 : 859: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 860: 00 0.00 : 861: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 868: 31 c0 xor %eax,%eax 0.00 : 86a: bd fb ff ff ff mov $0xfffffffb,%ebp 0.00 : 86f: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 876: e8 00 00 00 00 callq 87b : err_register: : ixgbe_clear_interrupt_scheme(adapter); : ixgbe_release_hw_control(adapter); : err_sw_init: : #ifdef CONFIG_PCI_IOV : ixgbe_disable_sriov(adapter); 0.00 : 87b: 4c 89 e7 mov %r12,%rdi 0.00 : 87e: e8 00 00 00 00 callq 883 : #endif /* CONFIG_PCI_IOV */ : adapter->flags2 &= ~IXGBE_FLAG2_SEARCH_FOR_SFP; 0.00 : 883: 41 83 a4 24 1c 02 00 andl $0xffffffdf,0x21c(%r12) 0.00 : 88a: 00 df : kfree(adapter->mac_table); 0.00 : 88c: 49 8b bc 24 a0 7c 00 mov 0x7ca0(%r12),%rdi 0.00 : 893: 00 0.00 : 894: e8 00 00 00 00 callq 899 : iounmap(hw->hw_addr); 0.00 : 899: 49 8b bc 24 80 0e 00 mov 0xe80(%r12),%rdi 0.00 : 8a0: 00 0.00 : 8a1: e8 00 00 00 00 callq 8a6 0.00 : 8a6: e9 dd fc ff ff jmpq 588 : e_dev_err("invalid MAC address\n"); : err = -EIO; : goto err_sw_init; : } : #endif : memcpy(&adapter->mac_table[0].addr, hw->mac.perm_addr, 0.00 : 8ab: 41 0f b6 96 ed 01 00 movzbl 0x1ed(%r14),%edx 0.00 : 8b2: 00 0.00 : 8b3: 49 8b bc 24 a0 7c 00 mov 0x7ca0(%r12),%rdi 0.00 : 8ba: 00 0.00 : 8bb: 48 89 ee mov %rbp,%rsi 0.00 : 8be: e8 00 00 00 00 callq 8c3 : netdev->addr_len); : adapter->mac_table[0].queue = VMDQ_P(0); 0.00 : 8c3: 41 0f b7 84 24 d6 0b movzwl 0xbd6(%r12),%eax 0.00 : 8ca: 00 00 0.00 : 8cc: 49 8b 94 24 a0 7c 00 mov 0x7ca0(%r12),%rdx 0.00 : 8d3: 00 : adapter->mac_table[0].state = (IXGBE_MAC_STATE_DEFAULT | : IXGBE_MAC_STATE_IN_USE); : hw->mac.ops.set_rar(hw, 0, adapter->mac_table[0].addr, 0.00 : 8d4: 41 b8 00 00 00 80 mov $0x80000000,%r8d 0.00 : 8da: 31 f6 xor %esi,%esi : goto err_sw_init; : } : #endif : memcpy(&adapter->mac_table[0].addr, hw->mac.perm_addr, : netdev->addr_len); : adapter->mac_table[0].queue = VMDQ_P(0); 0.00 : 8dc: 66 89 42 06 mov %ax,0x6(%rdx) : adapter->mac_table[0].state = (IXGBE_MAC_STATE_DEFAULT | 0.00 : 8e0: 49 8b 84 24 a0 7c 00 mov 0x7ca0(%r12),%rax 0.00 : 8e7: 00 0.00 : 8e8: 66 c7 40 08 05 00 movw $0x5,0x8(%rax) : IXGBE_MAC_STATE_IN_USE); : hw->mac.ops.set_rar(hw, 0, adapter->mac_table[0].addr, 0.00 : 8ee: 49 8b 94 24 a0 7c 00 mov 0x7ca0(%r12),%rdx 0.00 : 8f5: 00 0.00 : 8f6: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 8fb: 0f b7 4a 06 movzwl 0x6(%rdx),%ecx 0.00 : 8ff: 41 ff 94 24 a0 0f 00 callq *0xfa0(%r12) 0.00 : 906: 00 : void (*function)(unsigned long), : unsigned long data) : { : timer->function = function; : timer->data = data; : init_timer_key(timer, name, key); 0.00 : 907: 49 8d bc 24 28 1b 00 lea 0x1b28(%r12),%rdi 0.00 : 90e: 00 : const char *name, : struct lock_class_key *key, : void (*function)(unsigned long), : unsigned long data) : { : timer->function = function; 0.00 : 90f: 49 c7 84 24 48 1b 00 movq $0x0,0x1b48(%r12) 0.00 : 916: 00 00 00 00 00 : timer->data = data; 0.00 : 91b: 4d 89 a4 24 50 1b 00 mov %r12,0x1b50(%r12) 0.00 : 922: 00 : init_timer_key(timer, name, key); 0.00 : 923: 31 d2 xor %edx,%edx 0.00 : 925: 31 f6 xor %esi,%esi 0.00 : 927: e8 00 00 00 00 callq 92c : IXGBE_RAH_AV); : : setup_timer(&adapter->service_timer, &ixgbe_service_timer, : (unsigned long) adapter); : : INIT_WORK(&adapter->service_task, ixgbe_service_task); 0.00 : 92c: 49 8d 84 24 80 1b 00 lea 0x1b80(%r12),%rax 0.00 : 933: 00 0.00 : 934: 49 c7 84 24 78 1b 00 movq $0x100100,0x1b78(%r12) 0.00 : 93b: 00 00 01 10 00 0.00 : 940: 49 c7 84 24 90 1b 00 movq $0x0,0x1b90(%r12) 0.00 : 947: 00 00 00 00 00 : #define LIST_HEAD(name) \ : struct list_head name = LIST_HEAD_INIT(name) : : static inline void INIT_LIST_HEAD(struct list_head *list) : { : list->next = list; 0.00 : 94c: 49 89 84 24 80 1b 00 mov %rax,0x1b80(%r12) 0.00 : 953: 00 : list->prev = list; 0.00 : 954: 49 89 84 24 88 1b 00 mov %rax,0x1b88(%r12) 0.00 : 95b: 00 : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 95c: 49 8d 84 24 10 02 00 lea 0x210(%r12),%rax 0.00 : 963: 00 0.00 : 964: f0 41 80 a4 24 10 02 lock andb $0xf7,0x210(%r12) 0.00 : 96b: 00 00 f7 : clear_bit(__IXGBE_SERVICE_SCHED, &adapter->state); : : err = ixgbe_init_interrupt_scheme(adapter); 0.00 : 96e: 4c 89 e7 mov %r12,%rdi 0.00 : 971: e8 00 00 00 00 callq 976 : if (err) 0.00 : 976: 85 c0 test %eax,%eax : (unsigned long) adapter); : : INIT_WORK(&adapter->service_task, ixgbe_service_task); : clear_bit(__IXGBE_SERVICE_SCHED, &adapter->state); : : err = ixgbe_init_interrupt_scheme(adapter); 0.00 : 978: 89 c5 mov %eax,%ebp : if (err) 0.00 : 97a: 0f 85 fb fe ff ff jne 87b : goto err_sw_init; : : /* WOL not supported for all devices */ : adapter->wol = 0; 0.00 : 980: 41 c7 84 24 18 7c 00 movl $0x0,0x7c18(%r12) 0.00 : 987: 00 00 00 00 00 : hw->eeprom.ops.read(hw, 0x2c, &adapter->eeprom_cap); 0.00 : 98c: 49 8d 94 24 3e 7c 00 lea 0x7c3e(%r12),%rdx 0.00 : 993: 00 0.00 : 994: be 2c 00 00 00 mov $0x2c,%esi 0.00 : 999: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 99e: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : 9a5: 00 : if (ixgbe_wol_supported(adapter, pdev->device, pdev->subsystem_device)) 0.00 : 9a6: 41 0f b7 55 42 movzwl 0x42(%r13),%edx 0.00 : 9ab: 41 0f b7 75 3e movzwl 0x3e(%r13),%esi 0.00 : 9b0: 4c 89 e7 mov %r12,%rdi 0.00 : 9b3: e8 00 00 00 00 callq 9b8 0.00 : 9b8: 85 c0 test %eax,%eax 0.00 : 9ba: 74 0c je 9c8 : adapter->wol = IXGBE_WUFC_MAG; 0.00 : 9bc: 41 c7 84 24 18 7c 00 movl $0x2,0x7c18(%r12) 0.00 : 9c3: 00 02 00 00 00 : : device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); 0.00 : 9c8: 31 f6 xor %esi,%esi 0.00 : 9ca: 41 83 bc 24 18 7c 00 cmpl $0x0,0x7c18(%r12) 0.00 : 9d1: 00 00 0.00 : 9d3: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 9da: 00 0.00 : 9db: 40 0f 95 c6 setne %sil 0.00 : 9df: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 9e6: e8 00 00 00 00 callq 9eb : #endif : /* : * Save off EEPROM version number and Option Rom version which : * together make a unique identify for the eeprom : */ : hw->eeprom.ops.read(hw, 0x2e, &eeprom_verh); 0.00 : 9eb: 48 8d 54 24 4c lea 0x4c(%rsp),%rdx 0.00 : 9f0: be 2e 00 00 00 mov $0x2e,%esi 0.00 : 9f5: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 9fa: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a01: 00 : hw->eeprom.ops.read(hw, 0x2d, &eeprom_verl); 0.00 : a02: 48 8d 54 24 4a lea 0x4a(%rsp),%rdx 0.00 : a07: be 2d 00 00 00 mov $0x2d,%esi 0.00 : a0c: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : a11: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a18: 00 : etrack_id = (eeprom_verh << 16) | eeprom_verl; 0.00 : a19: 0f b7 5c 24 4c movzwl 0x4c(%rsp),%ebx 0.00 : a1e: 0f b7 44 24 4a movzwl 0x4a(%rsp),%eax : : hw->eeprom.ops.read(hw, 0x17, &offset); 0.00 : a23: 48 8d 54 24 4e lea 0x4e(%rsp),%rdx 0.00 : a28: be 17 00 00 00 mov $0x17,%esi 0.00 : a2d: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi : * Save off EEPROM version number and Option Rom version which : * together make a unique identify for the eeprom : */ : hw->eeprom.ops.read(hw, 0x2e, &eeprom_verh); : hw->eeprom.ops.read(hw, 0x2d, &eeprom_verl); : etrack_id = (eeprom_verh << 16) | eeprom_verl; 0.00 : a32: c1 e3 10 shl $0x10,%ebx 0.00 : a35: 09 c3 or %eax,%ebx : : hw->eeprom.ops.read(hw, 0x17, &offset); 0.00 : a37: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a3e: 00 : : /* Make sure offset to SCSI block is valid */ : if (!(offset == 0x0) && !(offset == 0xffff)) { 0.00 : a3f: 0f b7 4c 24 4e movzwl 0x4e(%rsp),%ecx 0.00 : a44: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : a47: 66 83 f8 fd cmp $0xfffd,%ax 0.00 : a4b: 77 52 ja a9f : hw->eeprom.ops.read(hw, offset + 0x84, &eeprom_cfg_blkh); 0.00 : a4d: 8d b1 84 00 00 00 lea 0x84(%rcx),%esi 0.00 : a53: 48 8d 54 24 48 lea 0x48(%rsp),%rdx 0.00 : a58: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : a5d: 0f b7 f6 movzwl %si,%esi 0.00 : a60: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a67: 00 : hw->eeprom.ops.read(hw, offset + 0x83, &eeprom_cfg_blkl); 0.00 : a68: 0f b7 74 24 4e movzwl 0x4e(%rsp),%esi 0.00 : a6d: 48 8d 54 24 46 lea 0x46(%rsp),%rdx 0.00 : a72: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : a77: 66 81 c6 83 00 add $0x83,%si 0.00 : a7c: 0f b7 f6 movzwl %si,%esi 0.00 : a7f: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a86: 00 : : /* Only display Option Rom if exist */ : if (eeprom_cfg_blkl && eeprom_cfg_blkh) { 0.00 : a87: 0f b7 4c 24 46 movzwl 0x46(%rsp),%ecx 0.00 : a8c: 66 85 c9 test %cx,%cx 0.00 : a8f: 74 0e je a9f 0.00 : a91: 0f b7 54 24 48 movzwl 0x48(%rsp),%edx 0.00 : a96: 66 85 d2 test %dx,%dx 0.00 : a99: 0f 85 bd 06 00 00 jne 115c : } else { : snprintf(adapter->eeprom_id, sizeof(adapter->eeprom_id), : "0x%08x", etrack_id); : } : } else { : snprintf(adapter->eeprom_id, sizeof(adapter->eeprom_id), 0.00 : a9f: 49 8d bc 24 1e 7c 00 lea 0x7c1e(%r12),%rdi 0.00 : aa6: 00 0.00 : aa7: 89 d9 mov %ebx,%ecx 0.00 : aa9: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : ab0: be 20 00 00 00 mov $0x20,%esi 0.00 : ab5: 31 c0 xor %eax,%eax 0.00 : ab7: e8 00 00 00 00 callq abc : "0x%08x", etrack_id); : } : : /* reset the hardware with the new settings */ : err = hw->mac.ops.start_hw(hw); 0.00 : abc: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : ac1: 41 ff 94 24 a0 0e 00 callq *0xea0(%r12) 0.00 : ac8: 00 : if (err == IXGBE_ERR_EEPROM_VERSION) { 0.00 : ac9: 83 f8 e8 cmp $0xffffffe8,%eax 0.00 : acc: 0f 84 68 06 00 00 je 113a : "problems please contact your Intel or hardware " : "representative who provided you with this " : "hardware.\n"); : } : /* pick up the PCI bus settings for reporting later */ : if (hw->mac.ops.get_bus_info) 0.00 : ad2: 49 8b 84 24 f8 0e 00 mov 0xef8(%r12),%rax 0.00 : ad9: 00 0.00 : ada: 48 85 c0 test %rax,%rax 0.00 : add: 74 07 je ae6 : hw->mac.ops.get_bus_info(hw); 0.00 : adf: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : ae4: ff d0 callq *%rax : : strcpy(netdev->name, "eth%d"); 0.00 : ae6: 41 c7 06 65 74 68 25 movl $0x25687465,(%r14) 0.00 : aed: 66 41 c7 46 04 64 00 movw $0x64,0x4(%r14) : err = register_netdev(netdev); 0.00 : af4: 4c 89 f7 mov %r14,%rdi 0.00 : af7: e8 00 00 00 00 callq afc : if (err) 0.00 : afc: 85 c0 test %eax,%eax : /* pick up the PCI bus settings for reporting later */ : if (hw->mac.ops.get_bus_info) : hw->mac.ops.get_bus_info(hw); : : strcpy(netdev->name, "eth%d"); : err = register_netdev(netdev); 0.00 : afe: 89 c5 mov %eax,%ebp : if (err) 0.00 : b00: 0f 85 70 04 00 00 jne f76 : goto err_register; : : adapter->netdev_registered = true; : : /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ : if (hw->mac.ops.disable_tx_laser && 0.00 : b06: 49 8b 84 24 48 0f 00 mov 0xf48(%r12),%rax 0.00 : b0d: 00 : strcpy(netdev->name, "eth%d"); : err = register_netdev(netdev); : if (err) : goto err_register; : : adapter->netdev_registered = true; 0.00 : b0e: 41 c6 84 24 40 7c 00 movb $0x1,0x7c40(%r12) 0.00 : b15: 00 01 : : /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ : if (hw->mac.ops.disable_tx_laser && 0.00 : b17: 48 85 c0 test %rax,%rax 0.00 : b1a: 74 25 je b41 0.00 : b1c: 41 80 bc 24 c1 13 00 cmpb $0x0,0x13c1(%r12) 0.00 : b23: 00 00 0.00 : b25: 0f 85 ad 05 00 00 jne 10d8 0.00 : b2b: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : b30: 41 ff 94 24 b0 0e 00 callq *0xeb0(%r12) 0.00 : b37: 00 0.00 : b38: 83 e8 01 sub $0x1,%eax 0.00 : b3b: 0f 84 80 05 00 00 je 10c1 : ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && : (hw->mac.type == ixgbe_mac_82599EB)))) : hw->mac.ops.disable_tx_laser(hw); : : /* carrier off reporting is important to ethtool even BEFORE open */ : netif_carrier_off(netdev); 0.00 : b41: 4c 89 f7 mov %r14,%rdi 0.00 : b44: e8 00 00 00 00 callq b49 : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : b49: 41 8b 86 88 03 00 00 mov 0x388(%r14),%eax 0.00 : b50: 85 c0 test %eax,%eax 0.00 : b52: 74 20 je b74 0.00 : b54: 31 db xor %ebx,%ebx : struct netdev_queue *txq = netdev_get_tx_queue(dev, i); : netif_tx_stop_queue(txq); 0.00 : b56: 89 df mov %ebx,%edi : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : b58: 83 c3 01 add $0x1,%ebx : struct netdev_queue *txq = netdev_get_tx_queue(dev, i); : netif_tx_stop_queue(txq); 0.00 : b5b: 48 c1 e7 08 shl $0x8,%rdi 0.00 : b5f: 49 03 be 80 03 00 00 add 0x380(%r14),%rdi 0.00 : b66: e8 00 00 00 00 callq b6b : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : b6b: 41 3b 9e 88 03 00 00 cmp 0x388(%r14),%ebx 0.00 : b72: 72 e2 jb b56 : /* keep stopping all the transmit queues for older kernels */ : netif_tx_stop_all_queues(netdev); : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_CAPABLE) { 0.00 : b74: 41 80 bc 24 18 02 00 cmpb $0x0,0x218(%r12) 0.00 : b7b: 00 00 0.00 : b7d: 0f 88 17 05 00 00 js 109a : } : #endif : : /* print all messages at the end so that we use our eth%d name */ : /* print bus type/speed/width info */ : e_dev_info("(PCI Express:%s:%s) %02x:%02x:%02x:%02x:%02x:%02x\n", 0.00 : b83: 49 8b 86 90 02 00 00 mov 0x290(%r14),%rax 0.00 : b8a: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : b91: 0f b6 58 05 movzbl 0x5(%rax),%ebx 0.00 : b95: 44 0f b6 58 04 movzbl 0x4(%rax),%r11d 0.00 : b9a: 44 0f b6 50 03 movzbl 0x3(%rax),%r10d 0.00 : b9f: 0f b6 70 02 movzbl 0x2(%rax),%esi 0.00 : ba3: 44 0f b6 48 01 movzbl 0x1(%rax),%r9d 0.00 : ba8: 44 0f b6 00 movzbl (%rax),%r8d 0.00 : bac: 41 8b 84 24 1c 14 00 mov 0x141c(%r12),%eax 0.00 : bb3: 00 0.00 : bb4: 83 f8 08 cmp $0x8,%eax 0.00 : bb7: 74 21 je bda 0.00 : bb9: 83 f8 04 cmp $0x4,%eax 0.00 : bbc: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : bc3: 74 15 je bda 0.00 : bc5: 83 e8 01 sub $0x1,%eax 0.00 : bc8: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : bcf: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : bd6: 48 0f 44 c8 cmove %rax,%rcx 0.00 : bda: 41 8b 84 24 18 14 00 mov 0x1418(%r12),%eax 0.00 : be1: 00 0.00 : be2: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : be9: 3d 40 1f 00 00 cmp $0x1f40,%eax 0.00 : bee: 74 25 je c15 0.00 : bf0: 3d 88 13 00 00 cmp $0x1388,%eax 0.00 : bf5: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : bfc: 74 17 je c15 0.00 : bfe: 3d c4 09 00 00 cmp $0x9c4,%eax 0.00 : c03: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : c0a: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : c11: 48 0f 44 d0 cmove %rax,%rdx 0.00 : c15: 0f b6 c3 movzbl %bl,%eax 0.00 : c18: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : c1f: 00 0.00 : c20: 45 0f b6 c9 movzbl %r9b,%r9d 0.00 : c24: 89 44 24 18 mov %eax,0x18(%rsp) 0.00 : c28: 41 0f b6 c3 movzbl %r11b,%eax 0.00 : c2c: 45 0f b6 c0 movzbl %r8b,%r8d 0.00 : c30: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : c34: 41 0f b6 c2 movzbl %r10b,%eax : "Unknown"), netdev->dev_addr[0], netdev->dev_addr[1], : netdev->dev_addr[2], netdev->dev_addr[3], : netdev->dev_addr[4], netdev->dev_addr[5]); : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); 0.00 : c38: 48 8d 5c 24 30 lea 0x30(%rsp),%rbx : } : #endif : : /* print all messages at the end so that we use our eth%d name */ : /* print bus type/speed/width info */ : e_dev_info("(PCI Express:%s:%s) %02x:%02x:%02x:%02x:%02x:%02x\n", 0.00 : c3d: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : c41: 40 0f b6 c6 movzbl %sil,%eax 0.00 : c45: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : c4c: 89 04 24 mov %eax,(%rsp) 0.00 : c4f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : c56: 31 c0 xor %eax,%eax 0.00 : c58: e8 00 00 00 00 callq c5d : "Unknown"), netdev->dev_addr[0], netdev->dev_addr[1], : netdev->dev_addr[2], netdev->dev_addr[3], : netdev->dev_addr[4], netdev->dev_addr[5]); : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); 0.00 : c5d: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : c62: ba 0b 00 00 00 mov $0xb,%edx 0.00 : c67: 48 89 de mov %rbx,%rsi 0.00 : c6a: e8 00 00 00 00 callq c6f : if (err) 0.00 : c6f: 85 c0 test %eax,%eax 0.00 : c71: 0f 85 03 04 00 00 jne 107a : ixgbe_configure_rx(adapter); : } : : static bool ixgbe_is_sfp(struct ixgbe_hw *hw) : { : switch (hw->phy.type) { 0.00 : c77: 41 8b 8c 24 98 13 00 mov 0x1398(%r12),%ecx 0.00 : c7e: 00 0.00 : c7f: 83 f9 07 cmp $0x7,%ecx 0.00 : c82: 0f 84 e1 03 00 00 je 1069 0.00 : c88: 0f 83 87 03 00 00 jae 1015 : strncpy(part_str, "Unknown", IXGBE_PBANUM_LENGTH); : if (ixgbe_is_sfp(hw) && hw->phy.sfp_type != ixgbe_sfp_type_not_present) : e_info(probe, "MAC: %d, PHY: %d, SFP+: %d, PBA No: %s\n", : hw->mac.type, hw->phy.type, hw->phy.sfp_type, part_str); : else : e_info(probe, "MAC: %d, PHY: %d, PBA No: %s\n", 0.00 : c8e: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : c95: 00 02 0.00 : c97: 74 21 je cba : hw->mac.type, hw->phy.type, part_str); 0.00 : c99: 41 8b 94 24 50 10 00 mov 0x1050(%r12),%edx 0.00 : ca0: 00 0.00 : ca1: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : ca8: 00 0.00 : ca9: 49 89 d8 mov %rbx,%r8 0.00 : cac: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : cb3: 31 c0 xor %eax,%eax 0.00 : cb5: e8 00 00 00 00 callq cba : : if (((hw->bus.speed == ixgbe_bus_speed_2500) && 0.00 : cba: 41 81 bc 24 18 14 00 cmpl $0x9c4,0x1418(%r12) 0.00 : cc1: 00 c4 09 00 00 0.00 : cc6: 0f 84 35 03 00 00 je 1001 0.00 : ccc: 41 83 bc 24 1c 14 00 cmpl $0x2,0x141c(%r12) 0.00 : cd3: 00 02 0.00 : cd5: 77 3a ja d11 : (hw->bus.width <= ixgbe_bus_width_pcie_x4)) || : (hw->bus.width <= ixgbe_bus_width_pcie_x2)) { : e_dev_warn("PCI-Express bandwidth available for this " 0.00 : cd7: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : cde: 00 0.00 : cdf: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : ce6: 31 c0 xor %eax,%eax 0.00 : ce8: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : cef: e8 00 00 00 00 callq cf4 : "card is not sufficient for optimal " : "performance.\n"); : e_dev_warn("For optimal performance a x8 PCI-Express " 0.00 : cf4: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : cfb: 00 0.00 : cfc: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : d03: 31 c0 xor %eax,%eax 0.00 : d05: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : d0c: e8 00 00 00 00 callq d11 : "slot is required.\n"); : } : : #define INFO_STRING_LEN 255 : info_string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); 0.00 : d11: be d0 00 00 00 mov $0xd0,%esi 0.00 : d16: bf ff 00 00 00 mov $0xff,%edi 0.00 : d1b: e8 00 00 00 00 callq d20 : if (!info_string) { 0.00 : d20: 48 85 c0 test %rax,%rax : e_dev_warn("For optimal performance a x8 PCI-Express " : "slot is required.\n"); : } : : #define INFO_STRING_LEN 255 : info_string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); 0.00 : d23: 49 89 c7 mov %rax,%r15 : if (!info_string) { 0.00 : d26: 0f 84 ab 02 00 00 je fd7 : e_err(probe, "allocation for info string failed\n"); : goto no_info_string; : } : i_s_var = info_string; : i_s_var += sprintf(info_string, "Enabled Features: "); 0.00 : d2c: 48 b8 45 6e 61 62 6c movabs $0x2064656c62616e45,%rax 0.00 : d33: 65 64 20 0.00 : d36: 66 41 c7 47 10 3a 20 movw $0x203a,0x10(%r15) 0.00 : d3d: 41 c6 47 12 00 movb $0x0,0x12(%r15) 0.00 : d42: 49 89 07 mov %rax,(%r15) 0.00 : d45: 48 b8 46 65 61 74 75 movabs $0x7365727574616546,%rax 0.00 : d4c: 72 65 73 0.00 : d4f: 49 8d 5f 12 lea 0x12(%r15),%rbx 0.00 : d53: 49 89 47 08 mov %rax,0x8(%r15) : i_s_var += sprintf(i_s_var, "RxQ: %d TxQ: %d ", 0.00 : d57: 41 8b 94 24 28 02 00 mov 0x228(%r12),%edx 0.00 : d5e: 00 0.00 : d5f: 31 c0 xor %eax,%eax 0.00 : d61: 41 8b 8c 24 20 02 00 mov 0x220(%r12),%ecx 0.00 : d68: 00 0.00 : d69: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : d70: 48 89 df mov %rbx,%rdi 0.00 : d73: e8 00 00 00 00 callq d78 0.00 : d78: 48 98 cltq 0.00 : d7a: 48 8d 14 03 lea (%rbx,%rax,1),%rdx : adapter->num_rx_queues, adapter->num_tx_queues); : #ifdef IXGBE_FCOE : if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) 0.00 : d7e: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : d85: 00 0.00 : d86: a9 00 00 04 00 test $0x40000,%eax 0.00 : d8b: 74 18 je da5 : i_s_var += sprintf(i_s_var, "FCoE "); 0.00 : d8d: c7 02 46 43 6f 45 movl $0x456f4346,(%rdx) 0.00 : d93: 66 c7 42 04 20 00 movw $0x20,0x4(%rdx) 0.00 : d99: 48 83 c2 05 add $0x5,%rdx 0.00 : d9d: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : da4: 00 : #endif : if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) 0.00 : da5: 66 85 c0 test %ax,%ax 0.00 : da8: 79 1f jns dc9 : i_s_var += sprintf(i_s_var, "FdirHash "); 0.00 : daa: 48 b8 46 64 69 72 48 movabs $0x6873614872696446,%rax 0.00 : db1: 61 73 68 0.00 : db4: 66 c7 42 08 20 00 movw $0x20,0x8(%rdx) 0.00 : dba: 48 89 02 mov %rax,(%rdx) 0.00 : dbd: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : dc4: 00 0.00 : dc5: 48 83 c2 09 add $0x9,%rdx : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) 0.00 : dc9: f6 c4 04 test $0x4,%ah 0.00 : dcc: 74 16 je de4 : i_s_var += sprintf(i_s_var, "DCB "); 0.00 : dce: c7 02 44 43 42 20 movl $0x20424344,(%rdx) 0.00 : dd4: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : dd8: 48 83 c2 04 add $0x4,%rdx 0.00 : ddc: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : de3: 00 : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) 0.00 : de4: a8 40 test $0x40,%al 0.00 : de6: 74 0e je df6 : i_s_var += sprintf(i_s_var, "DCA "); 0.00 : de8: c7 02 44 43 41 20 movl $0x20414344,(%rdx) 0.00 : dee: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : df2: 48 83 c2 04 add $0x4,%rdx : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) 0.00 : df6: 41 f6 84 24 1c 02 00 testb $0x2,0x21c(%r12) 0.00 : dfd: 00 02 0.00 : dff: 0f 85 a4 01 00 00 jne fa9 : i_s_var += sprintf(i_s_var, "RSC "); : #ifndef IXGBE_NO_LRO : else if (netdev->features & NETIF_F_LRO) 0.00 : e05: 66 41 83 be b0 00 00 cmpw $0x0,0xb0(%r14) 0.00 : e0c: 00 00 0.00 : e0e: 79 0e jns e1e : i_s_var += sprintf(i_s_var, "LRO "); 0.00 : e10: c7 02 4c 52 4f 20 movl $0x204f524c,(%rdx) 0.00 : e16: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : e1a: 48 83 c2 04 add $0x4,%rdx : #endif : : BUG_ON(i_s_var > (info_string + INFO_STRING_LEN)); 0.00 : e1e: 49 8d 87 ff 00 00 00 lea 0xff(%r15),%rax 0.00 : e25: 48 39 c2 cmp %rax,%rdx 0.00 : e28: 0f 87 77 01 00 00 ja fa5 : /* end features printing */ : e_info(probe, "%s\n", info_string); 0.00 : e2e: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : e35: 00 02 0.00 : e37: 74 19 je e52 0.00 : e39: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : e40: 00 0.00 : e41: 4c 89 fa mov %r15,%rdx 0.00 : e44: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : e4b: 31 c0 xor %eax,%eax 0.00 : e4d: e8 00 00 00 00 callq e52 : kfree(info_string); 0.00 : e52: 4c 89 ff mov %r15,%rdi 0.00 : e55: e8 00 00 00 00 callq e5a : no_info_string: : #ifdef CONFIG_PCI_IOV : if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { 0.00 : e5a: 41 f6 84 24 1a 02 00 testb $0x10,0x21a(%r12) 0.00 : e61: 00 10 0.00 : e63: 74 2c je e91 : int i; : : for (i = 0; i < adapter->num_vfs; i++) 0.00 : e65: 45 8b bc 24 58 7c 00 mov 0x7c58(%r12),%r15d 0.00 : e6c: 00 0.00 : e6d: 45 85 ff test %r15d,%r15d 0.00 : e70: 74 1f je e91 0.00 : e72: 31 db xor %ebx,%ebx : ixgbe_vf_configuration(pdev, (i | 0x10000000)); 0.00 : e74: 89 de mov %ebx,%esi 0.00 : e76: 4c 89 ef mov %r13,%rdi : no_info_string: : #ifdef CONFIG_PCI_IOV : if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { : int i; : : for (i = 0; i < adapter->num_vfs; i++) 0.00 : e79: 83 c3 01 add $0x1,%ebx : ixgbe_vf_configuration(pdev, (i | 0x10000000)); 0.00 : e7c: 81 ce 00 00 00 10 or $0x10000000,%esi 0.00 : e82: e8 00 00 00 00 callq e87 : no_info_string: : #ifdef CONFIG_PCI_IOV : if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { : int i; : : for (i = 0; i < adapter->num_vfs; i++) 0.00 : e87: 41 3b 9c 24 58 7c 00 cmp 0x7c58(%r12),%ebx 0.00 : e8e: 00 0.00 : e8f: 72 e3 jb e74 : ixgbe_vf_configuration(pdev, (i | 0x10000000)); : } : #endif : : /* firmware requires blank driver version */ : if (hw->mac.ops.set_fw_drv_ver) 0.00 : e91: 49 8b 84 24 38 10 00 mov 0x1038(%r12),%rax 0.00 : e98: 00 0.00 : e99: 48 85 c0 test %rax,%rax 0.00 : e9c: 74 1c je eba : hw->mac.ops.set_fw_drv_ver(hw, 0xFF, 0xFF, 0xFF, 0xFF); 0.00 : e9e: 41 b8 ff 00 00 00 mov $0xff,%r8d 0.00 : ea4: b9 ff 00 00 00 mov $0xff,%ecx 0.00 : ea9: ba ff 00 00 00 mov $0xff,%edx 0.00 : eae: be ff 00 00 00 mov $0xff,%esi 0.00 : eb3: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : eb8: ff d0 callq *%rax : * Return true if the address is a multicast address. : * By definition the broadcast address is also a multicast address. : */ : static inline int is_multicast_ether_addr(const u8 *addr) : { : return 0x01 & addr[0]; 0.00 : eba: 41 0f b6 84 24 60 10 movzbl 0x1060(%r12),%eax 0.00 : ec1: 00 00 : */ : static inline int is_valid_ether_addr(const u8 *addr) : { : /* FF:FF:FF:FF:FF:FF is a multicast address so we don't need to : * explicitly check for it here. */ : return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); 0.00 : ec3: a8 01 test $0x1,%al 0.00 : ec5: 75 5f jne f26 0.00 : ec7: 41 0a 84 24 61 10 00 or 0x1061(%r12),%al 0.00 : ece: 00 0.00 : ecf: 41 0a 84 24 62 10 00 or 0x1062(%r12),%al 0.00 : ed6: 00 0.00 : ed7: 41 0a 84 24 63 10 00 or 0x1063(%r12),%al 0.00 : ede: 00 0.00 : edf: 41 0a 84 24 64 10 00 or 0x1064(%r12),%al 0.00 : ee6: 00 0.00 : ee7: 41 0a 84 24 65 10 00 or 0x1065(%r12),%al 0.00 : eee: 00 0.00 : eef: 74 35 je f26 : int err = 0; : struct ixgbe_adapter *adapter = netdev_priv(dev); : struct ixgbe_hw *hw = &adapter->hw; : : if (is_valid_ether_addr(hw->mac.san_addr)) { : rtnl_lock(); 0.00 : ef1: e8 00 00 00 00 callq ef6 : err = dev_addr_add(dev, hw->mac.san_addr, 0.00 : ef6: 49 8d b4 24 60 10 00 lea 0x1060(%r12),%rsi 0.00 : efd: 00 0.00 : efe: 4c 89 f7 mov %r14,%rdi 0.00 : f01: ba 02 00 00 00 mov $0x2,%edx 0.00 : f06: e8 00 00 00 00 callq f0b : NETDEV_HW_ADDR_T_SAN); : rtnl_unlock(); 0.00 : f0b: e8 00 00 00 00 callq f10 : : /* update SAN MAC vmdq pool selection */ : hw->mac.ops.set_vmdq_san_mac(hw, VMDQ_P(0)); 0.00 : f10: 41 0f b7 b4 24 d6 0b movzwl 0xbd6(%r12),%esi 0.00 : f17: 00 00 0.00 : f19: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : f1e: 41 ff 94 24 c8 0f 00 callq *0xfc8(%r12) 0.00 : f25: 00 : #if defined(HAVE_NETDEV_STORAGE_ADDRESS) && defined(NETDEV_HW_ADDR_T_SAN) : /* add san mac addr to netdev */ : ixgbe_add_sanmac_netdev(netdev); : : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && (NETDEV_HW_ADDR_T_SAN) */ : e_info(probe, "Intel(R) 10 Gigabit Network Connection\n"); 0.00 : f26: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : f2d: 00 02 0.00 : f2f: 0f 85 87 00 00 00 jne fbc : cards_found++; : : #ifdef IXGBE_SYSFS : if (ixgbe_sysfs_init(adapter)) 0.00 : f35: 4c 89 e7 mov %r12,%rdi : /* add san mac addr to netdev */ : ixgbe_add_sanmac_netdev(netdev); : : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && (NETDEV_HW_ADDR_T_SAN) */ : e_info(probe, "Intel(R) 10 Gigabit Network Connection\n"); : cards_found++; 0.00 : f38: 83 05 00 00 00 00 01 addl $0x1,0x0(%rip) # f3f : : #ifdef IXGBE_SYSFS : if (ixgbe_sysfs_init(adapter)) 0.00 : f3f: e8 00 00 00 00 callq f44 0.00 : f44: 85 c0 test %eax,%eax 0.00 : f46: 0f 84 4c f4 ff ff je 398 : e_err(probe, "failed to allocate sysfs resources\n"); 0.00 : f4c: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : f53: 00 02 0.00 : f55: 0f 84 3d f4 ff ff je 398 0.00 : f5b: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : f62: 00 0.00 : f63: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : f6a: 31 c0 xor %eax,%eax 0.00 : f6c: e8 00 00 00 00 callq f71 0.00 : f71: e9 22 f4 ff ff jmpq 398 : #endif /* IXGBE_SYSFS */ : : return 0; : : err_register: : ixgbe_clear_interrupt_scheme(adapter); 0.00 : f76: 4c 89 e7 mov %r12,%rdi 0.00 : f79: e8 00 00 00 00 callq f7e 0.00 : f7e: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : f85: 00 0.00 : f86: 48 83 c0 18 add $0x18,%rax 0.00 : f8a: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : f8c: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : f93: 00 : { : u32 ctrl_ext; : : /* Let firmware take over control of h/w */ : ctrl_ext = IXGBE_READ_REG(&adapter->hw, IXGBE_CTRL_EXT); : IXGBE_WRITE_REG(&adapter->hw, IXGBE_CTRL_EXT, 0.00 : f94: 81 e2 ff ff ff ef and $0xefffffff,%edx 0.00 : f9a: 48 83 c0 18 add $0x18,%rax 0.00 : f9e: 89 10 mov %edx,(%rax) 0.00 : fa0: e9 d6 f8 ff ff jmpq 87b : #ifndef IXGBE_NO_LRO : else if (netdev->features & NETIF_F_LRO) : i_s_var += sprintf(i_s_var, "LRO "); : #endif : : BUG_ON(i_s_var > (info_string + INFO_STRING_LEN)); 0.00 : fa5: 0f 0b ud2 0.00 : fa7: eb fe jmp fa7 : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) : i_s_var += sprintf(i_s_var, "DCB "); : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : i_s_var += sprintf(i_s_var, "DCA "); : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) : i_s_var += sprintf(i_s_var, "RSC "); 0.00 : fa9: c7 02 52 53 43 20 movl $0x20435352,(%rdx) 0.00 : faf: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : fb3: 48 83 c2 04 add $0x4,%rdx 0.00 : fb7: e9 62 fe ff ff jmpq e1e : #if defined(HAVE_NETDEV_STORAGE_ADDRESS) && defined(NETDEV_HW_ADDR_T_SAN) : /* add san mac addr to netdev */ : ixgbe_add_sanmac_netdev(netdev); : : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && (NETDEV_HW_ADDR_T_SAN) */ : e_info(probe, "Intel(R) 10 Gigabit Network Connection\n"); 0.00 : fbc: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : fc3: 00 0.00 : fc4: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : fcb: 31 c0 xor %eax,%eax 0.00 : fcd: e8 00 00 00 00 callq fd2 0.00 : fd2: e9 5e ff ff ff jmpq f35 : } : : #define INFO_STRING_LEN 255 : info_string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); : if (!info_string) { : e_err(probe, "allocation for info string failed\n"); 0.00 : fd7: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : fde: 00 02 0.00 : fe0: 0f 84 74 fe ff ff je e5a 0.00 : fe6: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : fed: 00 0.00 : fee: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : ff5: 31 c0 xor %eax,%eax 0.00 : ff7: e8 00 00 00 00 callq ffc 0.00 : ffc: e9 59 fe ff ff jmpq e5a : hw->mac.type, hw->phy.type, hw->phy.sfp_type, part_str); : else : e_info(probe, "MAC: %d, PHY: %d, PBA No: %s\n", : hw->mac.type, hw->phy.type, part_str); : : if (((hw->bus.speed == ixgbe_bus_speed_2500) && 0.00 : 1001: 41 83 bc 24 1c 14 00 cmpl $0x4,0x141c(%r12) 0.00 : 1008: 00 04 0.00 : 100a: 0f 87 01 fd ff ff ja d11 0.00 : 1010: e9 c2 fc ff ff jmpq cd7 : ixgbe_configure_rx(adapter); : } : : static bool ixgbe_is_sfp(struct ixgbe_hw *hw) : { : switch (hw->phy.type) { 0.00 : 1015: 83 f9 0f cmp $0xf,%ecx 0.00 : 1018: 0f 87 70 fc ff ff ja c8e : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); : if (err) : strncpy(part_str, "Unknown", IXGBE_PBANUM_LENGTH); : if (ixgbe_is_sfp(hw) && hw->phy.sfp_type != ixgbe_sfp_type_not_present) 0.00 : 101e: 41 8b 84 24 a4 13 00 mov 0x13a4(%r12),%eax 0.00 : 1025: 00 0.00 : 1026: 3d fe ff 00 00 cmp $0xfffe,%eax 0.00 : 102b: 0f 84 5d fc ff ff je c8e : e_info(probe, "MAC: %d, PHY: %d, SFP+: %d, PBA No: %s\n", 0.00 : 1031: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 1038: 00 02 0.00 : 103a: 0f 84 7a fc ff ff je cba : hw->mac.type, hw->phy.type, hw->phy.sfp_type, part_str); 0.00 : 1040: 41 8b 94 24 50 10 00 mov 0x1050(%r12),%edx 0.00 : 1047: 00 0.00 : 1048: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 104f: 00 0.00 : 1050: 41 89 c0 mov %eax,%r8d 0.00 : 1053: 49 89 d9 mov %rbx,%r9 0.00 : 1056: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 105d: 31 c0 xor %eax,%eax 0.00 : 105f: e8 00 00 00 00 callq 1064 0.00 : 1064: e9 51 fc ff ff jmpq cba : case ixgbe_phy_sfp_passive_unknown: : case ixgbe_phy_sfp_active_unknown: : case ixgbe_phy_sfp_ftl_active: : return true; : case ixgbe_phy_nl: : if (hw->mac.type == ixgbe_mac_82598EB) 0.00 : 1069: 41 83 bc 24 50 10 00 cmpl $0x1,0x1050(%r12) 0.00 : 1070: 00 01 0.00 : 1072: 0f 85 16 fc ff ff jne c8e 0.00 : 1078: eb a4 jmp 101e : netdev->dev_addr[4], netdev->dev_addr[5]); : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); : if (err) : strncpy(part_str, "Unknown", IXGBE_PBANUM_LENGTH); 0.00 : 107a: 48 b8 55 6e 6b 6e 6f movabs $0x6e776f6e6b6e55,%rax 0.00 : 1081: 77 6e 00 0.00 : 1084: 66 c7 44 24 38 00 00 movw $0x0,0x38(%rsp) 0.00 : 108b: c6 44 24 3a 00 movb $0x0,0x3a(%rsp) 0.00 : 1090: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 1095: e9 dd fb ff ff jmpq c77 : /* keep stopping all the transmit queues for older kernels */ : netif_tx_stop_all_queues(netdev); : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_CAPABLE) { : err = dca_add_requester(&pdev->dev); 0.00 : 109a: 4c 89 ff mov %r15,%rdi 0.00 : 109d: e8 00 00 00 00 callq 10a2 : switch (err) { 0.00 : 10a2: 83 f8 ed cmp $0xffffffed,%eax 0.00 : 10a5: 74 69 je 1110 0.00 : 10a7: 85 c0 test %eax,%eax 0.00 : 10a9: 75 39 jne 10e4 : case 0: : adapter->flags |= IXGBE_FLAG_DCA_ENABLED; 0.00 : 10ab: 41 83 8c 24 18 02 00 orl $0x40,0x218(%r12) 0.00 : 10b2: 00 40 : ixgbe_setup_dca(adapter); 0.00 : 10b4: 4c 89 e7 mov %r12,%rdi 0.00 : 10b7: e8 00 00 00 00 callq 10bc : break; 0.00 : 10bc: e9 c2 fa ff ff jmpq b83 : goto err_register; : : adapter->netdev_registered = true; : : /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ : if (hw->mac.ops.disable_tx_laser && 0.00 : 10c1: 41 83 bc 24 50 10 00 cmpl $0x2,0x1050(%r12) 0.00 : 10c8: 00 02 0.00 : 10ca: 0f 85 71 fa ff ff jne b41 0.00 : 10d0: 49 8b 84 24 48 0f 00 mov 0xf48(%r12),%rax 0.00 : 10d7: 00 : ((hw->phy.multispeed_fiber) || : ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && : (hw->mac.type == ixgbe_mac_82599EB)))) : hw->mac.ops.disable_tx_laser(hw); 0.00 : 10d8: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 10dd: ff d0 callq *%rax 0.00 : 10df: e9 5d fa ff ff jmpq b41 : case -19: : e_info(rx_err, "No DCA provider found. Please " : "start ioatdma for DCA functionality.\n"); : break; : default: : e_info(probe, "DCA registration failed: %d\n", err); 0.00 : 10e4: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 10eb: 00 02 0.00 : 10ed: 0f 84 90 fa ff ff je b83 0.00 : 10f3: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 10fa: 00 0.00 : 10fb: 89 c2 mov %eax,%edx 0.00 : 10fd: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1104: 31 c0 xor %eax,%eax 0.00 : 1106: e8 00 00 00 00 callq 110b 0.00 : 110b: e9 73 fa ff ff jmpq b83 : adapter->flags |= IXGBE_FLAG_DCA_ENABLED; : ixgbe_setup_dca(adapter); : break; : /* -19 is returned from the kernel when no provider is found */ : case -19: : e_info(rx_err, "No DCA provider found. Please " 0.00 : 1110: 41 f6 84 24 a8 14 00 testb $0x40,0x14a8(%r12) 0.00 : 1117: 00 40 0.00 : 1119: 0f 84 64 fa ff ff je b83 : "start ioatdma for DCA functionality.\n"); 0.00 : 111f: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 1126: 00 0.00 : 1127: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 112e: 31 c0 xor %eax,%eax 0.00 : 1130: e8 00 00 00 00 callq 1135 0.00 : 1135: e9 49 fa ff ff jmpq b83 : : /* reset the hardware with the new settings */ : err = hw->mac.ops.start_hw(hw); : if (err == IXGBE_ERR_EEPROM_VERSION) { : /* We are running on a pre-production device, log a warning */ : e_dev_warn("This device is a pre-production adapter/LOM. " 0.00 : 113a: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 1141: 00 0.00 : 1142: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1149: 31 c0 xor %eax,%eax 0.00 : 114b: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 1152: e8 00 00 00 00 callq 1157 0.00 : 1157: e9 76 f9 ff ff jmpq ad2 : if (eeprom_cfg_blkl && eeprom_cfg_blkh) { : major = eeprom_cfg_blkl >> 8; : build = (eeprom_cfg_blkl << 8) | (eeprom_cfg_blkh >> 8); : patch = eeprom_cfg_blkh & 0x00ff; : : snprintf(adapter->eeprom_id, sizeof(adapter->eeprom_id), 0.00 : 115c: 41 89 c9 mov %ecx,%r9d 0.00 : 115f: 89 d0 mov %edx,%eax 0.00 : 1161: 0f b6 cd movzbl %ch,%ecx 0.00 : 1164: 66 c1 e8 08 shr $0x8,%ax 0.00 : 1168: 41 c1 e1 08 shl $0x8,%r9d 0.00 : 116c: 49 8d bc 24 1e 7c 00 lea 0x7c1e(%r12),%rdi 0.00 : 1173: 00 0.00 : 1174: 41 09 c1 or %eax,%r9d 0.00 : 1177: 0f b6 c2 movzbl %dl,%eax 0.00 : 117a: 41 89 c8 mov %ecx,%r8d 0.00 : 117d: 89 04 24 mov %eax,(%rsp) 0.00 : 1180: 45 0f b7 c9 movzwl %r9w,%r9d 0.00 : 1184: 89 d9 mov %ebx,%ecx 0.00 : 1186: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 118d: be 20 00 00 00 mov $0x20,%esi 0.00 : 1192: 31 c0 xor %eax,%eax 0.00 : 1194: e8 00 00 00 00 callq 1199 : if (!(offset == 0x0) && !(offset == 0xffff)) { : hw->eeprom.ops.read(hw, offset + 0x84, &eeprom_cfg_blkh); : hw->eeprom.ops.read(hw, offset + 0x83, &eeprom_cfg_blkl); : : /* Only display Option Rom if exist */ : if (eeprom_cfg_blkl && eeprom_cfg_blkh) { 0.00 : 1199: e9 1e f9 ff ff jmpq abc : #endif : : #ifdef IXGBE_FCOE : #ifdef NETIF_F_FSO : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { : hw->mac.ops.get_device_caps(hw, &device_caps); 0.00 : 119e: 48 8d 74 24 44 lea 0x44(%rsp),%rsi 0.00 : 11a3: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 11a8: 41 ff 94 24 d8 0e 00 callq *0xed8(%r12) 0.00 : 11af: 00 : if (device_caps & IXGBE_DEVICE_CAPS_FCOE_OFFLOADS) { 0.00 : 11b0: f6 44 24 44 02 testb $0x2,0x44(%rsp) 0.00 : 11b5: 75 4d jne 1204 : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; : adapter->flags &= ~IXGBE_FLAG_FCOE_CAPABLE; : e_dev_info("FCoE offload feature is not available. " : "Disabling FCoE offload feature\n"); : } else { : netdev->features |= NETIF_F_FSO | 0.00 : 11b7: 41 81 8e b0 00 00 00 orl $0x1200000,0xb0(%r14) 0.00 : 11be: 00 00 20 01 : adapter->flags |= IXGBE_FLAG_FCOE_ENABLED; : netdev->features |= NETIF_F_FCOE_MTU; : #endif /* HAVE_NETDEV_OPS_FCOE_ENABLE */ : } : : adapter->ring_feature[RING_F_FCOE].limit = IXGBE_FCRETA_SIZE; 0.00 : 11c2: 66 41 c7 84 24 e8 0b movw $0x8,0xbe8(%r12) 0.00 : 11c9: 00 00 08 00 : : #ifdef HAVE_NETDEV_VLAN_FEATURES : netdev->vlan_features |= NETIF_F_FSO | 0.00 : 11cd: 41 81 8e bc 00 00 00 orl $0x5200000,0xbc(%r14) 0.00 : 11d4: 00 00 20 05 0.00 : 11d8: e9 01 f6 ff ff jmpq 7de : #endif /* MAX_SKB_FRAGS */ : : /* make sure the EEPROM is good */ : if (hw->eeprom.ops.validate_checksum && : (hw->eeprom.ops.validate_checksum(hw, NULL) < 0)) { : e_dev_err("The EEPROM Checksum Is Not Valid\n"); 0.00 : 11dd: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 11e4: 00 0.00 : 11e5: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 11ec: 31 c0 xor %eax,%eax 0.00 : 11ee: bd fb ff ff ff mov $0xfffffffb,%ebp 0.00 : 11f3: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 11fa: e8 00 00 00 00 callq 11ff : err = -EIO; : goto err_sw_init; 0.00 : 11ff: e9 77 f6 ff ff jmpq 87b : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { : hw->mac.ops.get_device_caps(hw, &device_caps); : if (device_caps & IXGBE_DEVICE_CAPS_FCOE_OFFLOADS) { : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; : adapter->flags &= ~IXGBE_FLAG_FCOE_CAPABLE; : e_dev_info("FCoE offload feature is not available. " 0.00 : 1204: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 120b: 00 : #ifdef NETIF_F_FSO : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { : hw->mac.ops.get_device_caps(hw, &device_caps); : if (device_caps & IXGBE_DEVICE_CAPS_FCOE_OFFLOADS) { : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; : adapter->flags &= ~IXGBE_FLAG_FCOE_CAPABLE; 0.00 : 120c: 41 81 a4 24 18 02 00 andl $0xfff9ffff,0x218(%r12) 0.00 : 1213: 00 ff ff f9 ff : e_dev_info("FCoE offload feature is not available. " 0.00 : 1218: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 121f: 31 c0 xor %eax,%eax 0.00 : 1221: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 1228: e8 00 00 00 00 callq 122d 0.00 : 122d: eb 93 jmp 11c2 : if (netdev->features & NETIF_F_LRO) { : if ((adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) && : ((adapter->rx_itr_setting == 1) || : (adapter->rx_itr_setting > IXGBE_MIN_RSC_ITR))) { : adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED; : } else if (adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) { 0.00 : 122f: 85 c9 test %ecx,%ecx 0.00 : 1231: 0f 84 8d f5 ff ff je 7c4 : #ifdef IXGBE_NO_LRO : e_dev_info("InterruptThrottleRate set too high, " : "disabling RSC\n"); : #else : e_dev_info("InterruptThrottleRate set too high, " 0.00 : 1237: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 123e: 00 0.00 : 123f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1246: 31 c0 xor %eax,%eax 0.00 : 1248: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 124f: e8 00 00 00 00 callq 1254 0.00 : 1254: e9 6b f5 ff ff jmpq 7c4 : : /* reset_hw fills in the perm_addr as well */ : hw->phy.reset_if_overtemp = true; : err = hw->mac.ops.reset_hw(hw); : hw->phy.reset_if_overtemp = false; : if (err == IXGBE_ERR_SFP_NOT_PRESENT && 0.00 : 1259: 41 83 bc 24 50 10 00 cmpl $0x1,0x1050(%r12) 0.00 : 1260: 00 01 0.00 : 1262: 0f 84 b5 f4 ff ff je 71d : "module type was detected.\n"); : e_dev_err("Reload the driver after installing a supported " : "module.\n"); : goto err_sw_init; : } else if (err) { : e_dev_err("HW Init failed: %d\n", err); 0.00 : 1268: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 126f: 00 0.00 : 1270: 89 ea mov %ebp,%edx 0.00 : 1272: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1279: 31 c0 xor %eax,%eax 0.00 : 127b: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 1282: e8 00 00 00 00 callq 1287 : goto err_sw_init; 0.00 : 1287: e9 ef f5 ff ff jmpq 87b : hw->phy.reset_if_overtemp = false; : if (err == IXGBE_ERR_SFP_NOT_PRESENT && : hw->mac.type == ixgbe_mac_82598EB) { : err = 0; : } else if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { : e_dev_err("failed to load because an unsupported SFP+ " 0.00 : 128c: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 1293: 00 0.00 : 1294: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 129b: 31 c0 xor %eax,%eax 0.00 : 129d: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 12a4: e8 00 00 00 00 callq 12a9 : "module type was detected.\n"); : e_dev_err("Reload the driver after installing a supported " 0.00 : 12a9: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 12b0: 00 0.00 : 12b1: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 12b8: 31 c0 xor %eax,%eax 0.00 : 12ba: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 12c1: e8 00 00 00 00 callq 12c6 : "module.\n"); : goto err_sw_init; 0.00 : 12c6: e9 b0 f5 ff ff jmpq 87b : extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, : va_list vargs); : : static inline const char *kobject_name(const struct kobject *kobj) : { : return kobj->name; 0.00 : 12cb: 49 8b b5 a0 00 00 00 mov 0xa0(%r13),%rsi 0.00 : 12d2: e9 65 f3 ff ff jmpq 63c : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); : : #endif : hw->hw_addr = ioremap(pci_resource_start(pdev, 0), 0.00 : 12d7: 49 8b 85 08 03 00 00 mov 0x308(%r13),%rax 0.00 : 12de: 31 f6 xor %esi,%esi 0.00 : 12e0: 48 85 c0 test %rax,%rax 0.00 : 12e3: 0f 85 7d f2 ff ff jne 566 0.00 : 12e9: e9 7f f2 ff ff jmpq 56d Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d1b60 <__poll>: 0.00 : d1b60: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : d1b65: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : d1b6a: 89 d3 mov %edx,%ebx 0.00 : d1b6c: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : d1b71: 48 83 ec 18 sub $0x18,%rsp 0.00 : d1b75: 8b 05 39 5b 2a 00 mov 0x2a5b39(%rip),%eax # 3776b4 <__libc_multiple_threads> 0.00 : d1b7b: 49 89 fc mov %rdi,%r12 0.00 : d1b7e: 48 89 f5 mov %rsi,%rbp 0.00 : d1b81: 85 c0 test %eax,%eax 0.00 : d1b83: 75 29 jne d1bae <__poll+0x4e> 0.00 : d1b85: 48 63 d2 movslq %edx,%rdx 0.00 : d1b88: b8 07 00 00 00 mov $0x7,%eax 0.00 : d1b8d: 0f 05 syscall 0.00 : d1b8f: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 100.00 : d1b95: 89 c3 mov %eax,%ebx 0.00 : d1b97: 77 41 ja d1bda <__poll+0x7a> 0.00 : d1b99: 89 d8 mov %ebx,%eax 0.00 : d1b9b: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : d1ba0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : d1ba4: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : d1ba9: 48 83 c4 18 add $0x18,%rsp 0.00 : d1bad: c3 retq 0.00 : d1bae: e8 7d 66 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : d1bb3: 48 63 d3 movslq %ebx,%rdx 0.00 : d1bb6: 41 89 c0 mov %eax,%r8d 0.00 : d1bb9: 48 89 ee mov %rbp,%rsi 0.00 : d1bbc: 4c 89 e7 mov %r12,%rdi 0.00 : d1bbf: b8 07 00 00 00 mov $0x7,%eax 0.00 : d1bc4: 0f 05 syscall 0.00 : d1bc6: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : d1bcc: 89 c3 mov %eax,%ebx 0.00 : d1bce: 77 28 ja d1bf8 <__poll+0x98> 0.00 : d1bd0: 44 89 c7 mov %r8d,%edi 0.00 : d1bd3: e8 b8 66 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : d1bd8: eb bf jmp d1b99 <__poll+0x39> 0.00 : d1bda: 89 c1 mov %eax,%ecx 0.00 : d1bdc: 48 8b 15 55 02 2a 00 mov 0x2a0255(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d1be3: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : d1bea: 00 00 0.00 : d1bec: f7 d9 neg %ecx 0.00 : d1bee: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : d1bf3: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : d1bf6: eb a1 jmp d1b99 <__poll+0x39> 0.00 : d1bf8: 89 c1 mov %eax,%ecx 0.00 : d1bfa: 48 8b 15 37 02 2a 00 mov 0x2a0237(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d1c01: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : d1c08: 00 00 0.00 : d1c0a: f7 d9 neg %ecx 0.00 : d1c0c: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : d1c11: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : d1c14: eb ba jmp d1bd0 <__poll+0x70> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005b40 : 14.29 : 5b40: 41 57 push %r15 0.00 : 5b72: 41 56 or %al,(%rax) 0.00 : 5b74: 49 89 add %al,(%rax) 14.29 : 5b76: fe 41 add %al,%bh 0.00 : 5b78: 55 4c 8d rex.R and $0xc,%al 0.00 : 5b7b: ae 20 add %al,(%rax) 0.00 : 5b7d: ff ff add %al,(%rax) 0.00 : 5b7f: ff 41 54 49 8d jmpq 5ced 0.00 : 5b84: 45 58 49 89 nopl 0x0(%rax) 0.00 : 5b88: f4 55 53 48 83 mov 0x4(%r12),%eax 0.00 : 5b8d: ec 18 4c 8b mov %ax,0x2(%rbx) 0.00 : 5b91: 3a 49 8b 5f 28 mov 0x8(%r12),%eax 0.00 : 5b96: 48 03 5a 08 mov %ax,0x18(%rbx) 0.00 : 5b9a: 48 89 44 24 mov 0x4c(%r13),%edi 0.00 : 5b9e: 10 c7 test %edi,%edi 0.00 : 5ba0: 44 24 08 00 00 00 jne 5d61 14.29 : 5ba6: 00 c7 44 24 0c 00 movzwl 0x6(%r12),%eax 0.00 : 5bac: 00 00 00 e9 mov %ax,0x78(%rbx) 0.00 : 5bb0: 69 01 00 00 0f 1f movzwl 0xa(%r12),%eax 0.00 : 5bb6: 40 00 41 8b mov %ax,0x7a(%rbx) 0.00 : 5bba: 44 24 04 66 89 43 02 mov 0xbc(%r12),%eax 0.00 : 5bc1: 41 0.00 : 5bc2: 8b 44 24 08 mov %ax,0x1a(%rbx) 0.00 : 5bc6: 66 89 43 18 41 8b 7d mov 0xa8(%r13),%rax 0.00 : 5bcd: 4c 85 ff cmp %eax,0x4(%rbx) 0.00 : 5bd0: 0f 85 je 5bdd 0.00 : 5bd2: bb 01 00 mov %eax,0x4(%rbx) 0.00 : 5bd5: 00 41 0f b7 44 24 06 movl $0x1,0xc(%rsp) 0.00 : 5bdc: 66 0.00 : 5bdd: 89 43 78 41 0f b7 44 mov 0xd8(%r12),%rax 0.00 : 5be4: 24 0.00 : 5be5: 0a 66 89 mov %eax,0x8(%rbx) 0.00 : 5be8: 43 7a 41 8b 84 24 bc mov 0xf8(%r12),%rax 0.00 : 5bef: 00 0.00 : 5bf0: 00 00 66 mov %eax,0xc(%rbx) 0.00 : 5bf3: 89 43 1a 49 8b 85 a8 mov 0xe8(%r12),%rax 0.00 : 5bfa: 00 0.00 : 5bfb: 00 00 39 mov %eax,0x10(%rbx) 0.00 : 5bfe: 43 04 74 0b 89 43 04 mov 0x108(%r12),%rax 0.00 : 5c05: c7 0.00 : 5c06: 44 24 0c mov %eax,0x1c(%rbx) 0.00 : 5c09: 01 00 00 00 mov 0x4c(%r13),%eax 0.00 : 5c0d: 49 8b 84 mov %eax,0x14(%rbx) 0.00 : 5c10: 24 d8 00 00 mov 0x3c(%r13),%eax 0.00 : 5c14: 00 89 43 mov %eax,0x20(%rbx) 0.00 : 5c17: 08 49 8b 84 mov 0x40(%r13),%rax 0.00 : 5c1b: 24 f8 00 mov %eax,0x68(%rbx) 0.00 : 5c1e: 00 00 89 43 0c movzwl (%r12),%eax 0.00 : 5c23: 49 8b 84 24 e8 and $0xf000,%eax 0.00 : 5c28: 00 00 00 89 43 cmp $0x8000,%eax 0.00 : 5c2d: 10 49 8b 84 24 08 jne 5db0 0.00 : 5c33: 01 00 00 89 43 1c 41 mov 0xa8(%r13),%rax 0.00 : 5c3a: 8b 45 4c mov %rax,%rdx 0.00 : 5c3d: 89 43 14 41 sar $0x20,%rdx 0.00 : 5c41: 8b 45 3c cmp %edx,0x6c(%rbx) 0.00 : 5c44: 89 43 je 5c58 0.00 : 5c46: 20 49 8b mov %edx,0x6c(%rbx) 0.00 : 5c49: 45 40 89 43 68 41 0f mov 0xa8(%r13),%rax 0.00 : 5c50: b7 04 24 25 00 f0 00 movl $0x1,0xc(%rsp) 0.00 : 5c57: 00 0.00 : 5c58: 3d 00 80 00 00 0f cmp $0x7fffffff,%rax 0.00 : 5c5e: 85 7d 01 00 00 49 jbe 5dbb 0.00 : 5c64: 8b 85 a8 00 00 mov 0x18(%r12),%rbp 0.00 : 5c69: 00 48 89 c2 48 c1 fa mov 0x338(%rbp),%rax 0.00 : 5c70: 20 39 53 6c mov 0x68(%rax),%rax 0.00 : 5c74: 74 12 89 53 testb $0x2,0x64(%rax) 0.00 : 5c78: 6c 49 je 5c85 0.00 : 5c7a: 8b 85 a8 mov 0x4c(%rax),%esi 0.00 : 5c7d: 00 00 test %esi,%esi 0.00 : 5c7f: 00 c7 44 24 0c 01 jne 5dbb 0.00 : 5c85: 00 00 00 mov %r15,%rdi 0.00 : 5c88: 48 3d ff ff ff callq 5c8d 0.00 : 5c8d: 7f 0f 86 57 01 00 00 mov 0x338(%rbp),%rax 0.00 : 5c94: 49 8b 6c mov %r14,%rsi 0.00 : 5c97: 24 18 48 8b 85 38 03 mov $0x0,%rdi 0.00 : 5c9e: 00 00 48 8b mov 0x60(%rax),%rdx 0.00 : 5ca2: 40 68 f6 40 64 callq 5ca7 0.00 : 5ca7: 02 74 test %eax,%eax 0.00 : 5ca9: 0b 8b 70 4c mov %eax,0x8(%rsp) 0.00 : 5cad: 85 f6 0f 85 36 01 jne 5e90 0.00 : 5cb3: 00 00 4c mov %rbp,%rdi 0.00 : 5cb6: 89 ff e8 00 00 callq 5cbb 0.00 : 5cbb: 00 00 48 8b 85 38 03 mov 0x338(%rbp),%rax 0.00 : 5cc2: 00 00 4c mov %r14,%rsi 0.00 : 5cc5: 89 f6 48 c7 c7 00 00 mov $0x0,%rdi 0.00 : 5ccc: 00 00 48 8b mov 0x68(%rax),%rax 0.00 : 5cd0: 50 60 e8 00 orl $0x2,0x64(%rax) 0.00 : 5cd4: 00 00 00 85 c0 orb $0x1,0x14(%r14) 0.00 : 5cd9: 89 44 24 08 0f 85 dd mov 0x338(%rbp),%rax 0.00 : 5ce0: 01 00 00 48 mov 0x60(%rax),%rdx 0.00 : 5ce4: 89 ef e8 00 00 callq 5ce9 0.00 : 5ce9: 00 00 48 8b mov %eax,0x8(%rsp) 0.00 : 5ced: 85 38 03 00 00 4c lock btsl $0x2,(%r15) 0.00 : 5cf3: 89 f6 sbb %eax,%eax 0.00 : 5cf5: 48 c7 test %eax,%eax 0.00 : 5cf7: c7 00 00 00 00 48 jne 5da0 0.00 : 5cfd: 8b 40 68 83 48 mov 0x10(%rsp),%rdx 0.00 : 5d02: 64 02 41 mov (%rdx),%rax 0.00 : 5d05: 80 4e test $0x2,%al 0.00 : 5d07: 14 01 jne 5d78 0.00 : 5d09: 48 8b 85 mov %r13,%rdi 0.00 : 5d0c: 38 03 00 00 48 callq 5d11 0.00 : 5d11: 8b 50 60 e8 00 movzwl (%r12),%eax 0.00 : 5d16: 00 00 00 mov %ax,(%rbx) 14.29 : 5d19: 89 44 24 08 f0 mov 0x18(%r12),%rax 0.00 : 5d1e: 41 0f ba 2f 02 19 c0 mov 0x338(%rax),%rax 0.00 : 5d25: 85 c0 0f 85 testb $0x20,0x79(%rax) 0.00 : 5d29: a3 00 00 00 48 8b je 5b88 0.00 : 5d2f: 54 24 10 48 8b mov 0x4(%r12),%eax 0.00 : 5d34: 02 a8 02 75 6f test $0xffff0000,%eax 0.00 : 5d39: 4c 89 mov %eax,%edx 0.00 : 5d3b: ef e8 je 5d44 0.00 : 5d3d: 00 00 00 00 41 0f b7 movzwl 0x0(%rip),%edx # 5d44 0.00 : 5d44: 04 24 66 89 mov %dx,0x2(%rbx) 0.00 : 5d48: 03 49 8b 44 24 mov 0x8(%r12),%eax 0.00 : 5d4d: 18 48 8b 80 38 test $0xffff0000,%eax 0.00 : 5d52: 03 00 mov %eax,%edx 0.00 : 5d54: 00 f6 je 5d5d 0.00 : 5d56: 40 79 20 0f 84 59 fe movzwl 0x0(%rip),%edx # 5d5d 0.00 : 5d5d: ff ff 41 8b mov %dx,0x18(%rbx) 0.00 : 5d61: 44 24 04 a9 00 00 movw $0x0,0x78(%rbx) 0.00 : 5d67: ff ff 89 c2 74 07 movw $0x0,0x7a(%rbx) 0.00 : 5d6d: 0f b7 15 00 00 jmpq 5bba 0.00 : 5d72: 00 00 66 89 53 02 nopw 0x0(%rax,%rax,1) 0.00 : 5d78: 41 8b 44 24 08 mov 0x18(%r12),%rax 0.00 : 5d7d: a9 00 xor %esi,%esi 0.00 : 5d7f: 00 ff ff mov %rbx,%rdi 0.00 : 5d82: 89 c2 74 07 0f b7 15 mov 0x338(%rax),%rax 0.00 : 5d89: 00 00 00 00 66 89 53 movslq 0x9c(%rax),%rdx 0.00 : 5d90: 18 66 c7 43 78 callq 5d95 0.00 : 5d95: 00 00 66 c7 43 jmpq 5d09 0.00 : 5d9a: 7a 00 00 e9 48 fe nopw 0x0(%rax,%rax,1) 0.00 : 5da0: ff ff 66 mov %r15,%rdi 0.00 : 5da3: 0f 1f 44 00 00 callq 5da8 0.00 : 5da8: 49 8b 44 24 18 jmpq 5cfd 0.00 : 5dad: 31 f6 48 nopl (%rax) 0.00 : 5db0: 89 df 48 8b 80 38 03 mov -0x98(%r12),%eax 0.00 : 5db7: 00 0.00 : 5db8: 00 48 63 mov %eax,0x6c(%rbx) 14.29 : 5dbb: 90 9c 00 00 00 e8 00 mov 0x220(%r12),%eax 0.00 : 5dc2: 00 14.29 : 5dc3: 00 00 e9 mov %eax,0x64(%rbx) 0.00 : 5dc6: 6f ff ff ff 66 movzwl (%r12),%eax 0.00 : 5dcb: 0f 1f 44 00 00 and $0xf000,%eax 0.00 : 5dd0: 4c 89 ff e8 00 cmp $0x2000,%eax 0.00 : 5dd5: 00 00 je 5de4 0.00 : 5dd7: 00 e9 xor %edx,%edx 0.00 : 5dd9: 50 ff ff ff 0f cmp $0x6000,%eax 0.00 : 5dde: 1f 00 41 8b 84 24 jne 5ed0 0.00 : 5de4: 68 ff ff ff 89 43 6c mov 0xc0(%r12),%edx 0.00 : 5deb: 41 0.00 : 5dec: 8b 84 mov %edx,%ecx 0.00 : 5dee: 24 20 02 shr $0x14,%ecx 0.00 : 5df1: 00 00 89 43 64 41 cmp $0xff,%ecx 0.00 : 5df7: 0f b7 04 24 25 00 ja 5ef0 0.00 : 5dfd: f0 00 mov %edx,%eax 0.00 : 5dff: 00 3d 00 20 00 and $0xfffff,%eax 0.00 : 5e04: 00 74 0d 31 d2 cmp $0xff,%eax 0.00 : 5e09: 3d 00 60 00 00 0f ja 5ef0 0.00 : 5e0f: 85 ec mov %ecx,%eax 0.00 : 5e11: 00 00 00 41 8b 94 24 movl $0x0,0x2c(%rbx) 0.00 : 5e18: c0 00 00 shl $0x8,%eax 0.00 : 5e1b: 00 89 or %edx,%eax 0.00 : 5e1d: d1 c1 e9 movzwl %ax,%eax 0.00 : 5e20: 14 81 f9 mov %eax,0x28(%rbx) 0.00 : 5e23: ff 00 00 00 0f nopl 0x0(%rax,%rax,1) 0.00 : 5e28: 87 f3 00 00 00 89 movzwl -0x30(%r12),%eax 0.00 : 5e2e: d0 25 ff test %ax,%ax 0.00 : 5e31: ff 0f je 5e3a 0.00 : 5e33: 00 3d ff 00 00 00 0f mov %ax,0x80(%rbx) 0.00 : 5e3a: 87 e1 00 mov %r15,%rdi 0.00 : 5e3d: 00 00 89 c8 c7 callq 5e42 0.00 : 5e42: 43 2c 00 mov %r15,%rdx 0.00 : 5e45: 00 00 00 mov %r14,%rsi 0.00 : 5e48: c1 e0 08 09 d0 0f b7 mov $0x0,%rdi 0.00 : 5e4f: c0 89 43 28 0f callq 5e54 0.00 : 5e54: 1f 44 00 00 mov 0x8(%rsp),%ecx 0.00 : 5e58: 41 0f test %ecx,%ecx 0.00 : 5e5a: b7 44 24 d0 66 cmovne 0x8(%rsp),%eax 0.00 : 5e5f: 85 c0 74 07 mov %eax,0x8(%rsp) 0.00 : 5e63: 66 89 83 80 00 mov 0x10(%rsp),%rax 0.00 : 5e68: 00 00 4c 89 ff e8 00 lock andb $0xfd,-0x88(%r12) 0.00 : 5e6f: 00 00 00 14.29 : 5e72: 4c 89 fa mov (%r14),%rax 0.00 : 5e75: 4c 89 f6 48 mov 0xc(%rsp),%edx 0.00 : 5e79: c7 c7 00 mov 0x8(%rax),%eax 0.00 : 5e7c: 00 00 test %edx,%edx 0.00 : 5e7e: 00 e8 00 00 00 mov %eax,-0x8(%r12) 0.00 : 5e83: 00 8b je 5e90 0.00 : 5e85: 4c 24 08 mov (%r14),%rax 0.00 : 5e88: 85 c9 0f mov 0x8(%rax),%eax 0.00 : 5e8b: 45 44 24 08 89 mov %eax,-0x4(%r12) 0.00 : 5e90: 44 24 08 test %r15,%r15 0.00 : 5e93: 48 8b je 5e9d 0.00 : 5e95: 44 24 10 mov %r15,%rdi 0.00 : 5e98: f0 41 80 a4 24 callq 5e9d 0.00 : 5e9d: 78 ff ff ff mov 0x8(%rsp),%eax 0.00 : 5ea1: fd 49 test %eax,%eax 0.00 : 5ea3: 8b 06 je 5eba 0.00 : 5ea5: 8b 54 24 0c 8b mov 0x18(%r12),%rdi 0.00 : 5eaa: 40 08 85 d2 mov 0x8(%rsp),%edx 0.00 : 5eae: 41 89 44 24 f8 74 0b mov $0x0,%rsi 0.00 : 5eb5: 49 8b 06 8b 40 callq 5eba 0.00 : 5eba: 08 41 89 44 mov 0x8(%rsp),%eax 0.00 : 5ebe: 24 fc 4d 85 add $0x18,%rsp 0.00 : 5ec2: ff pop %rbx 0.00 : 5ec3: 74 pop %rbp 0.00 : 5ec4: 08 4c pop %r12 0.00 : 5ec6: 89 ff pop %r13 0.00 : 5ec8: e8 00 pop %r14 0.00 : 5eca: 00 00 pop %r15 0.00 : 5ecc: 00 retq 0.00 : 5ecd: 8b 44 24 nopl (%rax) 0.00 : 5ed0: 08 85 c0 74 15 mov 0x0(%r13,%rdx,1),%eax 0.00 : 5ed5: 49 8b 7c 24 mov %eax,0x28(%rbx,%rdx,1) 0.00 : 5ed9: 18 8b 54 24 add $0x4,%rdx 0.00 : 5edd: 08 48 c7 c6 cmp $0x3c,%rdx 0.00 : 5ee1: 00 00 jne 5ed0 0.00 : 5ee3: 00 00 e8 00 00 jmpq 5e28 0.00 : 5ee8: 00 00 8b 44 24 08 48 nopl 0x0(%rax,%rax,1) 0.00 : 5eef: 83 0.00 : 5ef0: c4 18 5b 5d 41 5c 41 movl $0x0,0x28(%rbx) 0.00 : 5ef7: 5d 41 5e 41 5f c3 0f mov 0xc0(%r12),%eax 0.00 : 5efe: 1f 0.00 : 5eff: 00 41 8b 44 15 00 89 movl $0x0,0x30(%rbx) 0.00 : 5f06: 44 13 mov %eax,%edx 0.00 : 5f08: 28 48 83 movzbl %al,%ecx 0.00 : 5f0b: c2 04 48 83 fa and $0xfff00,%eax 0.00 : 5f10: 3c 75 ed shr $0x14,%edx 0.00 : 5f13: e9 40 ff shl $0xc,%eax 0.00 : 5f16: ff ff 0f shl $0x8,%edx 0.00 : 5f19: 1f 84 or %ecx,%edx 0.00 : 5f1b: 00 00 or %eax,%edx 0.00 : 5f1d: 00 00 00 mov %edx,0x2c(%rbx) 0.00 : 5f20: c7 43 28 00 00 00 movzwl -0x30(%r12),%eax 0.00 : 5f26: 00 41 8b test %ax,%ax 0.00 : 5f29: 84 24 c0 00 00 00 je 5e3a 0.00 : 5f2f: c7 43 30 00 00 jmpq 5e33 : 5f34: 00 00 89 c2 0f b6 c8 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 5f3b: 25 00 ff 0f 00 : 5f40: c1 push %rbx : 5f41: ea 14 c1 mov %rdx,%rbx : 5f44: e0 0c c1 mov (%rdx),%rax : 5f47: e2 08 09 ca lock incl 0x60(%rax) : 5f4b: 09 c2 89 53 2c callq 5b40 : 5f50: 41 0f b7 mov (%rbx),%rdx : 5f53: 44 24 d0 66 lock decl 0x60(%rdx) : 5f57: 85 pop %rbx : 5f58: c0 retq : 5f59: 0f 84 0b ff ff ff e9 nopl 0x0(%rax) : 5f60: ff fe ff ff sub $0x38,%rsp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:1940 16.67 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:2429 16.67 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:2819 16.67 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:3097 16.67 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:3447 16.67 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:3878 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000421de0 : : * partially obscure list format that can be generated by readline's : * completion_matches() function, so we don't have to worry about it. : */ : static char ** : psql_completion(const char *text, int start, int end) : { 0.00 : 421de0: 55 push %rbp 0.00 : 421de1: 48 89 e5 mov %rsp,%rbp 0.00 : 421de4: 41 57 push %r15 0.00 : 421de6: 41 56 push %r14 0.00 : 421de8: 41 55 push %r13 0.00 : 421dea: 41 54 push %r12 : { : const char *buf = rl_line_buffer; /* alias */ : int i; : : /* first we look for a non-word char before the current point */ : for (i = point - 1; i >= 0; i--) 0.00 : 421dec: 41 89 f4 mov %esi,%r12d : * partially obscure list format that can be generated by readline's : * completion_matches() function, so we don't have to worry about it. : */ : static char ** : psql_completion(const char *text, int start, int end) : { 0.00 : 421def: 53 push %rbx 0.00 : 421df0: 48 83 ec 68 sub $0x68,%rsp 0.00 : 421df4: 48 89 7d 88 mov %rdi,-0x78(%rbp) : }; : : (void) end; /* not used */ : : #ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER : rl_completion_append_character = ' '; 0.00 : 421df8: c7 05 3e 8c 24 00 20 movl $0x20,0x248c3e(%rip) # 66aa40 <_edata> 0.00 : 421dff: 00 00 00 : #endif : : /* Clear a few things. */ : completion_charp = NULL; 0.00 : 421e02: 48 c7 05 73 91 24 00 movq $0x0,0x249173(%rip) # 66af80 0.00 : 421e09: 00 00 00 00 : completion_charpp = NULL; 0.00 : 421e0d: 48 c7 05 70 91 24 00 movq $0x0,0x249170(%rip) # 66af88 0.00 : 421e14: 00 00 00 00 : completion_info_charp = NULL; 0.00 : 421e18: 48 c7 05 6d 91 24 00 movq $0x0,0x24916d(%rip) # 66af90 0.00 : 421e1f: 00 00 00 00 : completion_info_charp2 = NULL; 0.00 : 421e23: 48 c7 05 6a 91 24 00 movq $0x0,0x24916a(%rip) # 66af98 0.00 : 421e2a: 00 00 00 00 : * Each array element is filled with a malloc'd string. : */ : static void : get_previous_words(int point, char **previous_words, int nwords) : { : const char *buf = rl_line_buffer; /* alias */ 0.00 : 421e2e: 4c 8b 35 5b 8e 24 00 mov 0x248e5b(%rip),%r14 # 66ac90 0.00 : 421e35: eb 20 jmp 421e57 0.00 : 421e37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 421e3e: 00 00 : int i; : : /* first we look for a non-word char before the current point */ : for (i = point - 1; i >= 0; i--) : if (strchr(WORD_BREAKS, buf[i])) 0.00 : 421e40: 49 63 c4 movslq %r12d,%rax 0.00 : 421e43: bf 5a 0f 45 00 mov $0x450f5a,%edi 0.00 : 421e48: 41 0f be 34 06 movsbl (%r14,%rax,1),%esi 0.00 : 421e4d: e8 fe 1a fe ff callq 403950 0.00 : 421e52: 48 85 c0 test %rax,%rax 0.00 : 421e55: 75 06 jne 421e5d : { : const char *buf = rl_line_buffer; /* alias */ : int i; : : /* first we look for a non-word char before the current point */ : for (i = point - 1; i >= 0; i--) 0.00 : 421e57: 41 83 ec 01 sub $0x1,%r12d 0.00 : 421e5b: 79 e3 jns 421e40 : * before the point : */ : if (end < 0) : { : point = end; : s = pg_strdup(""); 0.00 : 421e5d: 48 8d 45 a0 lea -0x60(%rbp),%rax 0.00 : 421e61: 48 89 45 90 mov %rax,-0x70(%rbp) : for (i = point - 1; i >= 0; i--) : if (strchr(WORD_BREAKS, buf[i])) : break; : point = i; : : while (nwords-- > 0) 0.00 : 421e65: 48 83 c0 28 add $0x28,%rax : end; : char *s; : : /* now find the first non-space which then constitutes the end */ : end = -1; : for (i = point; i >= 0; i--) 0.00 : 421e69: 45 85 e4 test %r12d,%r12d : for (i = point - 1; i >= 0; i--) : if (strchr(WORD_BREAKS, buf[i])) : break; : point = i; : : while (nwords-- > 0) 0.00 : 421e6c: 48 89 45 80 mov %rax,-0x80(%rbp) : end; : char *s; : : /* now find the first non-space which then constitutes the end */ : end = -1; : for (i = point; i >= 0; i--) 0.00 : 421e70: 0f 88 ea 00 00 00 js 421f60 0.00 : 421e76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 421e7d: 00 00 00 : * partially obscure list format that can be generated by readline's : * completion_matches() function, so we don't have to worry about it. : */ : static char ** : psql_completion(const char *text, int start, int end) : { 0.00 : 421e80: e8 2b 22 fe ff callq 4040b0 <__ctype_b_loc@plt> 0.00 : 421e85: 44 89 e3 mov %r12d,%ebx 0.00 : 421e88: 48 8b 30 mov (%rax),%rsi 0.00 : 421e8b: eb 0c jmp 421e99 0.00 : 421e8d: 0f 1f 00 nopl (%rax) : end; : char *s; : : /* now find the first non-space which then constitutes the end */ : end = -1; : for (i = point; i >= 0; i--) 0.00 : 421e90: 83 eb 01 sub $0x1,%ebx 0.00 : 421e93: 0f 88 c7 00 00 00 js 421f60 : { : if (!isspace((unsigned char) buf[i])) 0.00 : 421e99: 48 63 cb movslq %ebx,%rcx 0.00 : 421e9c: 4d 8d 2c 0e lea (%r14,%rcx,1),%r13 0.00 : 421ea0: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 421ea5: 0f b6 c2 movzbl %dl,%eax 0.00 : 421ea8: f6 44 46 01 20 testb $0x20,0x1(%rsi,%rax,2) 0.00 : 421ead: 75 e1 jne 421e90 : * quotes and parentheses. : */ : bool inquotes = false; : int parentheses = 0; : : for (start = end; start > 0; start--) 0.00 : 421eaf: 85 db test %ebx,%ebx : end; : char *s; : : /* now find the first non-space which then constitutes the end */ : end = -1; : for (i = point; i >= 0; i--) 0.00 : 421eb1: 89 5d 9c mov %ebx,-0x64(%rbp) : * quotes and parentheses. : */ : bool inquotes = false; : int parentheses = 0; : : for (start = end; start > 0; start--) 0.00 : 421eb4: 7e 61 jle 421f17 0.00 : 421eb6: 45 31 e4 xor %r12d,%r12d 0.00 : 421eb9: 45 31 ff xor %r15d,%r15d 0.00 : 421ebc: eb 2c jmp 421eea 0.00 : 421ebe: 66 90 xchg %ax,%ax : inquotes = !inquotes; : if (!inquotes) : { : if (buf[start] == ')') : parentheses++; : else if (buf[start] == '(') 0.00 : 421ec0: 80 fa 28 cmp $0x28,%dl 0.00 : 421ec3: 0f 84 af 00 00 00 je 421f78 : { : if (--parentheses <= 0) : break; : } : else if (parentheses == 0 && 0.00 : 421ec9: 45 85 ff test %r15d,%r15d 0.00 : 421ecc: 0f 84 be 00 00 00 je 421f90 0.00 : 421ed2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * quotes and parentheses. : */ : bool inquotes = false; : int parentheses = 0; : : for (start = end; start > 0; start--) 0.00 : 421ed8: 83 eb 01 sub $0x1,%ebx 0.00 : 421edb: 85 db test %ebx,%ebx 0.00 : 421edd: 0f 1f 00 nopl (%rax) 0.00 : 421ee0: 7e 2e jle 421f10 0.00 : 421ee2: 48 63 cb movslq %ebx,%rcx 0.00 : 421ee5: 41 0f b6 14 0e movzbl (%r14,%rcx,1),%edx : { : if (buf[start] == '"') : inquotes = !inquotes; 0.00 : 421eea: 44 89 e0 mov %r12d,%eax : bool inquotes = false; : int parentheses = 0; : : for (start = end; start > 0; start--) : { : if (buf[start] == '"') 0.00 : 421eed: 4d 8d 2c 0e lea (%r14,%rcx,1),%r13 : inquotes = !inquotes; 0.00 : 421ef1: 83 f0 01 xor $0x1,%eax 0.00 : 421ef4: 80 fa 22 cmp $0x22,%dl 0.00 : 421ef7: 44 0f 44 e0 cmove %eax,%r12d : if (!inquotes) 0.00 : 421efb: 45 84 e4 test %r12b,%r12b 0.00 : 421efe: 75 d8 jne 421ed8 : { : if (buf[start] == ')') 0.00 : 421f00: 80 fa 29 cmp $0x29,%dl 0.00 : 421f03: 75 bb jne 421ec0 : * quotes and parentheses. : */ : bool inquotes = false; : int parentheses = 0; : : for (start = end; start > 0; start--) 0.00 : 421f05: 83 eb 01 sub $0x1,%ebx : if (buf[start] == '"') : inquotes = !inquotes; : if (!inquotes) : { : if (buf[start] == ')') : parentheses++; 0.00 : 421f08: 41 83 c7 01 add $0x1,%r15d : * quotes and parentheses. : */ : bool inquotes = false; : int parentheses = 0; : : for (start = end; start > 0; start--) 0.00 : 421f0c: 85 db test %ebx,%ebx 0.00 : 421f0e: 7f d2 jg 421ee2 0.00 : 421f10: 48 63 c3 movslq %ebx,%rax 0.00 : 421f13: 4d 8d 2c 06 lea (%r14,%rax,1),%r13 : } : : point = start - 1; : : /* make a copy of chars from start to end inclusive */ : s = pg_malloc(end - start + 2); 0.00 : 421f17: 8b 45 9c mov -0x64(%rbp),%eax : strchr(WORD_BREAKS, buf[start - 1])) : break; : } : } : : point = start - 1; 0.00 : 421f1a: 44 8d 63 ff lea -0x1(%rbx),%r12d : : /* make a copy of chars from start to end inclusive */ : s = pg_malloc(end - start + 2); 0.00 : 421f1e: 83 c0 02 add $0x2,%eax 0.00 : 421f21: 29 d8 sub %ebx,%eax 0.00 : 421f23: 4c 63 f8 movslq %eax,%r15 0.00 : 421f26: 4c 89 ff mov %r15,%rdi 0.00 : 421f29: e8 02 20 01 00 callq 433f30 : strlcpy(s, &buf[start], end - start + 2); 0.00 : 421f2e: 4c 89 fa mov %r15,%rdx 0.00 : 421f31: 4c 89 ee mov %r13,%rsi 0.00 : 421f34: 48 89 c7 mov %rax,%rdi : } : : point = start - 1; : : /* make a copy of chars from start to end inclusive */ : s = pg_malloc(end - start + 2); 0.00 : 421f37: 48 89 c3 mov %rax,%rbx : strlcpy(s, &buf[start], end - start + 2); 0.00 : 421f3a: e8 71 21 01 00 callq 4340b0 : } : : *previous_words++ = s; 0.00 : 421f3f: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 421f43: 48 89 18 mov %rbx,(%rax) : for (i = point - 1; i >= 0; i--) : if (strchr(WORD_BREAKS, buf[i])) : break; : point = i; : : while (nwords-- > 0) 0.00 : 421f46: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 421f4a: 48 39 d0 cmp %rdx,%rax 0.00 : 421f4d: 74 5f je 421fae : /* make a copy of chars from start to end inclusive */ : s = pg_malloc(end - start + 2); : strlcpy(s, &buf[start], end - start + 2); : } : : *previous_words++ = s; 0.00 : 421f4f: 48 83 c0 08 add $0x8,%rax : end; : char *s; : : /* now find the first non-space which then constitutes the end */ : end = -1; : for (i = point; i >= 0; i--) 0.00 : 421f53: 45 85 e4 test %r12d,%r12d : /* make a copy of chars from start to end inclusive */ : s = pg_malloc(end - start + 2); : strlcpy(s, &buf[start], end - start + 2); : } : : *previous_words++ = s; 0.00 : 421f56: 48 89 45 90 mov %rax,-0x70(%rbp) : end; : char *s; : : /* now find the first non-space which then constitutes the end */ : end = -1; : for (i = point; i >= 0; i--) 0.00 : 421f5a: 0f 89 20 ff ff ff jns 421e80 : * before the point : */ : if (end < 0) : { : point = end; : s = pg_strdup(""); 0.00 : 421f60: bf 17 69 43 00 mov $0x436917,%edi 0.00 : 421f65: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 421f6b: e8 f0 1e 01 00 callq 433e60 0.00 : 421f70: 48 89 c3 mov %rax,%rbx 0.00 : 421f73: eb ca jmp 421f3f 0.00 : 421f75: 0f 1f 00 nopl (%rax) : { : if (buf[start] == ')') : parentheses++; : else if (buf[start] == '(') : { : if (--parentheses <= 0) 0.00 : 421f78: 41 83 ef 01 sub $0x1,%r15d 0.00 : 421f7c: 45 85 ff test %r15d,%r15d 0.00 : 421f7f: 0f 8f 53 ff ff ff jg 421ed8 0.00 : 421f85: eb 90 jmp 421f17 0.00 : 421f87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 421f8e: 00 00 : break; : } : else if (parentheses == 0 && 0.00 : 421f90: 41 0f be 74 0e ff movsbl -0x1(%r14,%rcx,1),%esi 0.00 : 421f96: bf 5a 0f 45 00 mov $0x450f5a,%edi 0.00 : 421f9b: e8 b0 19 fe ff callq 403950 0.00 : 421fa0: 48 85 c0 test %rax,%rax 0.00 : 421fa3: 0f 84 2f ff ff ff je 421ed8 0.00 : 421fa9: e9 69 ff ff ff jmpq 421f17 : * probably intending to type. : */ : get_previous_words(start, previous_words, lengthof(previous_words)); : : /* If a backslash command was started, continue */ : if (text[0] == '\\') 0.00 : 421fae: 48 8b 75 88 mov -0x78(%rbp),%rsi 0.00 : 421fb2: 0f b6 06 movzbl (%rsi),%eax 0.00 : 421fb5: 3c 5c cmp $0x5c,%al 0.00 : 421fb7: 0f 84 19 02 00 00 je 4221d6 : COMPLETE_WITH_LIST_CS(backslash_commands); : : /* Variable interpolation */ : else if (text[0] == ':' && text[1] != ':') 0.00 : 421fbd: 3c 3a cmp $0x3a,%al 0.00 : 421fbf: 90 nop 0.00 : 421fc0: 0f 84 ba 01 00 00 je 422180 : else : matches = complete_from_variables(text, ":", "", true); : } : : /* If no previous word, suggest one of the basic sql commands */ : else if (prev_wd[0] == '\0') 0.00 : 421fc6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 421fca: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 421fcd: 75 74 jne 422043 : COMPLETE_WITH_LIST(sql_commands); 0.00 : 421fcf: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 421fd3: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 421fd8: 48 c7 05 a5 8f 24 00 movq $0x4578a0,0x248fa5(%rip) # 66af88 0.00 : 421fdf: a0 78 45 00 0.00 : 421fe3: c6 05 be 8f 24 00 00 movb $0x0,0x248fbe(%rip) # 66afa8 0.00 : 421fea: e8 e1 17 fe ff callq 4037d0 0.00 : 421fef: 48 89 c3 mov %rax,%rbx : /* : * If we still don't have anything to match we have to fabricate some sort : * of default list. If we were to just return NULL, readline automatically : * attempts filename completion, and that's usually no good. : */ : if (matches == NULL) 0.00 : 421ff2: 48 85 db test %rbx,%rbx 0.00 : 421ff5: 0f 84 18 02 00 00 je 422213 : /* free storage */ : { : int i; : : for (i = 0; i < lengthof(previous_words); i++) : free(previous_words[i]); 0.00 : 421ffb: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 421fff: e8 7c 16 fe ff callq 403680 0.00 : 422004: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422008: e8 73 16 fe ff callq 403680 0.00 : 42200d: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422011: e8 6a 16 fe ff callq 403680 0.00 : 422016: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42201a: e8 61 16 fe ff callq 403680 0.00 : 42201f: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422023: e8 58 16 fe ff callq 403680 0.00 : 422028: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 42202c: e8 4f 16 fe ff callq 403680 : } : : /* Return our Grand List O' Matches */ : return matches; : } 0.00 : 422031: 48 83 c4 68 add $0x68,%rsp 0.00 : 422035: 48 89 d8 mov %rbx,%rax 0.00 : 422038: 5b pop %rbx 0.00 : 422039: 41 5c pop %r12 0.00 : 42203b: 41 5d pop %r13 0.00 : 42203d: 41 5e pop %r14 0.00 : 42203f: 41 5f pop %r15 0.00 : 422041: c9 leaveq 0.00 : 422042: c3 retq : else if (prev_wd[0] == '\0') : COMPLETE_WITH_LIST(sql_commands); : : /* CREATE */ : /* complete with something you can create */ : else if (pg_strcasecmp(prev_wd, "CREATE") == 0) 0.00 : 422043: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 422048: e8 33 2d 01 00 callq 434d80 0.00 : 42204d: 85 c0 test %eax,%eax 0.00 : 42204f: 0f 84 6b 01 00 00 je 4221c0 : matches = completion_matches(text, create_command_generator); : : /* DROP, but not DROP embedded in other commands */ : /* complete with something you can drop */ : else if (pg_strcasecmp(prev_wd, "DROP") == 0 && 0.00 : 422055: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 422059: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 42205e: e8 1d 2d 01 00 callq 434d80 0.00 : 422063: 85 c0 test %eax,%eax 0.00 : 422065: 0f 85 7d 05 00 00 jne 4225e8 0.00 : 42206b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42206f: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 422072: 0f 84 bc 07 00 00 je 422834 : matches = completion_matches(text, drop_command_generator); : : /* ALTER */ : : /* ALTER TABLE */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 422078: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42207d: e8 fe 2c 01 00 callq 434d80 0.00 : 422082: 85 c0 test %eax,%eax 0.00 : 422084: 75 16 jne 42209c 0.00 : 422086: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42208a: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 42208f: e8 ec 2c 01 00 callq 434d80 0.00 : 422094: 85 c0 test %eax,%eax 0.00 : 422096: 0f 84 6c 07 00 00 je 422808 : } : /* : * complete with what you can alter (TABLE, GROUP, USER, ...) unless we're : * in ALTER TABLE sth ALTER : */ : else if (pg_strcasecmp(prev_wd, "ALTER") == 0 && 0.00 : 42209c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4220a0: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4220a5: e8 d6 2c 01 00 callq 434d80 0.00 : 4220aa: 85 c0 test %eax,%eax 0.00 : 4220ac: 75 16 jne 4220c4 0.00 : 4220ae: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4220b2: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4220b7: e8 c4 2c 01 00 callq 434d80 0.00 : 4220bc: 85 c0 test %eax,%eax 0.00 : 4220be: 0f 85 1c 07 00 00 jne 4227e0 : "USER", "USER MAPPING FOR", "VIEW", NULL}; : : COMPLETE_WITH_LIST(list_ALTER); : } : /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx */ : else if (pg_strcasecmp(prev4_wd, "ALL") == 0 && 0.00 : 4220c4: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4220c8: be 90 7c 45 00 mov $0x457c90,%esi 0.00 : 4220cd: e8 ae 2c 01 00 callq 434d80 0.00 : 4220d2: 85 c0 test %eax,%eax 0.00 : 4220d4: 75 16 jne 4220ec 0.00 : 4220d6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4220da: be 30 c5 43 00 mov $0x43c530,%esi 0.00 : 4220df: e8 9c 2c 01 00 callq 434d80 0.00 : 4220e4: 85 c0 test %eax,%eax 0.00 : 4220e6: 0f 84 ac 06 00 00 je 422798 : {"SET TABLESPACE", "OWNED BY", NULL}; : : COMPLETE_WITH_LIST(list_ALTERALLINTSPC); : } : /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx OWNED BY */ : else if (pg_strcasecmp(prev6_wd, "ALL") == 0 && 0.00 : 4220ec: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 4220f0: be 90 7c 45 00 mov $0x457c90,%esi 0.00 : 4220f5: e8 86 2c 01 00 callq 434d80 0.00 : 4220fa: 85 c0 test %eax,%eax 0.00 : 4220fc: 75 16 jne 422114 0.00 : 4220fe: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422102: be 30 c5 43 00 mov $0x43c530,%esi 0.00 : 422107: e8 74 2c 01 00 callq 434d80 0.00 : 42210c: 85 c0 test %eax,%eax 0.00 : 42210e: 0f 84 1c 06 00 00 je 422730 : pg_strcasecmp(prev4_wd, "BY") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : } : /* ALTER AGGREGATE,FUNCTION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422114: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422118: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42211d: e8 5e 2c 01 00 callq 434d80 0.00 : 422122: 85 c0 test %eax,%eax 0.00 : 422124: 0f 85 1b 01 00 00 jne 422245 0.00 : 42212a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42212e: be fe bb 43 00 mov $0x43bbfe,%esi 0.00 : 422133: e8 48 2c 01 00 callq 434d80 0.00 : 422138: 85 c0 test %eax,%eax 0.00 : 42213a: 74 16 je 422152 0.00 : 42213c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422140: be 51 bd 43 00 mov $0x43bd51,%esi 0.00 : 422145: e8 36 2c 01 00 callq 434d80 0.00 : 42214a: 85 c0 test %eax,%eax 0.00 : 42214c: 0f 85 f3 00 00 00 jne 422245 : (pg_strcasecmp(prev2_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev2_wd, "FUNCTION") == 0)) : COMPLETE_WITH_CONST("("); 0.00 : 422152: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 422156: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42215b: 48 c7 05 1a 8e 24 00 movq $0x448783,0x248e1a(%rip) # 66af80 0.00 : 422162: 83 87 44 00 0.00 : 422166: c6 05 3b 8e 24 00 00 movb $0x0,0x248e3b(%rip) # 66afa8 0.00 : 42216d: e8 5e 16 fe ff callq 4037d0 0.00 : 422172: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev4_wd, "BY") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : } : /* ALTER AGGREGATE,FUNCTION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422175: e9 78 fe ff ff jmpq 421ff2 0.00 : 42217a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* If a backslash command was started, continue */ : if (text[0] == '\\') : COMPLETE_WITH_LIST_CS(backslash_commands); : : /* Variable interpolation */ : else if (text[0] == ':' && text[1] != ':') 0.00 : 422180: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 422184: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 422188: 3c 3a cmp $0x3a,%al 0.00 : 42218a: 0f 84 36 fe ff ff je 421fc6 : { : if (text[1] == '\'') 0.00 : 422190: 3c 27 cmp $0x27,%al 0.00 : 422192: 0f 84 7c 05 00 00 je 422714 : matches = complete_from_variables(text, ":'", "'", true); : else if (text[1] == '"') 0.00 : 422198: 3c 22 cmp $0x22,%al 0.00 : 42219a: 0f 84 51 04 00 00 je 4225f1 : matches = complete_from_variables(text, ":\"", "\"", true); : else : matches = complete_from_variables(text, ":", "", true); 0.00 : 4221a0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4221a4: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4221a9: ba 17 69 43 00 mov $0x436917,%edx 0.00 : 4221ae: be 9b a3 45 00 mov $0x45a39b,%esi 0.00 : 4221b3: e8 a8 fa ff ff callq 421c60 0.00 : 4221b8: 48 89 c3 mov %rax,%rbx 0.00 : 4221bb: e9 32 fe ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(sql_commands); : : /* CREATE */ : /* complete with something you can create */ : else if (pg_strcasecmp(prev_wd, "CREATE") == 0) : matches = completion_matches(text, create_command_generator); 0.00 : 4221c0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4221c4: be 00 c1 42 00 mov $0x42c100,%esi 0.00 : 4221c9: e8 02 16 fe ff callq 4037d0 0.00 : 4221ce: 48 89 c3 mov %rax,%rbx 0.00 : 4221d1: e9 1c fe ff ff jmpq 421ff2 : */ : get_previous_words(start, previous_words, lengthof(previous_words)); : : /* If a backslash command was started, continue */ : if (text[0] == '\\') : COMPLETE_WITH_LIST_CS(backslash_commands); 0.00 : 4221d6: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4221da: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4221df: 48 c7 05 9e 8d 24 00 movq $0x457640,0x248d9e(%rip) # 66af88 0.00 : 4221e6: 40 76 45 00 0.00 : 4221ea: c6 05 b7 8d 24 00 01 movb $0x1,0x248db7(%rip) # 66afa8 0.00 : 4221f1: e8 da 15 fe ff callq 4037d0 0.00 : 4221f6: 48 89 c3 mov %rax,%rbx 0.00 : 4221f9: e9 f4 fd ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "unicode_border_linestyle") == 0 || : strcmp(prev_wd, "unicode_column_linestyle") == 0 || : strcmp(prev_wd, "unicode_header_linestyle") == 0) 0.00 : 4221fe: bf 36 56 43 00 mov $0x435636,%edi 0.00 : 422203: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 422208: 4c 89 c6 mov %r8,%rsi : static const char *const my_list[] = : {"ascii", "old-ascii", "unicode", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "unicode_border_linestyle") == 0 || 0.00 : 42220b: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42220d: 0f 84 73 96 00 00 je 42b886 : * of default list. If we were to just return NULL, readline automatically : * attempts filename completion, and that's usually no good. : */ : if (matches == NULL) : { : COMPLETE_WITH_CONST(""); 0.00 : 422213: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 422217: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42221c: 48 c7 05 59 8d 24 00 movq $0x436917,0x248d59(%rip) # 66af80 0.00 : 422223: 17 69 43 00 0.00 : 422227: c6 05 7a 8d 24 00 00 movb $0x0,0x248d7a(%rip) # 66afa8 0.00 : 42222e: e8 9d 15 fe ff callq 4037d0 : #ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER : rl_completion_append_character = '\0'; 0.00 : 422233: c7 05 03 88 24 00 00 movl $0x0,0x248803(%rip) # 66aa40 <_edata> 0.00 : 42223a: 00 00 00 : * of default list. If we were to just return NULL, readline automatically : * attempts filename completion, and that's usually no good. : */ : if (matches == NULL) : { : COMPLETE_WITH_CONST(""); 0.00 : 42223d: 48 89 c3 mov %rax,%rbx 0.00 : 422240: e9 b6 fd ff ff jmpq 421ffb : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : (pg_strcasecmp(prev2_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev2_wd, "FUNCTION") == 0)) : COMPLETE_WITH_CONST("("); : /* ALTER AGGREGATE,FUNCTION (...) */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422245: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422249: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42224e: e8 2d 2b 01 00 callq 434d80 0.00 : 422253: 85 c0 test %eax,%eax 0.00 : 422255: 0f 84 b6 03 00 00 je 422611 : else : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); : } : : /* ALTER SCHEMA */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42225b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42225f: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422264: e8 17 2b 01 00 callq 434d80 0.00 : 422269: 85 c0 test %eax,%eax 0.00 : 42226b: 75 16 jne 422283 0.00 : 42226d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422271: be b4 be 43 00 mov $0x43beb4,%esi 0.00 : 422276: e8 05 2b 01 00 callq 434d80 0.00 : 42227b: 85 c0 test %eax,%eax 0.00 : 42227d: 0f 84 34 30 00 00 je 4252b7 : : COMPLETE_WITH_LIST(list_ALTERGEN); : } : : /* ALTER COLLATION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422283: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422287: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42228c: e8 ef 2a 01 00 callq 434d80 0.00 : 422291: 85 c0 test %eax,%eax 0.00 : 422293: 75 16 jne 4222ab 0.00 : 422295: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422299: be 2d bc 43 00 mov $0x43bc2d,%esi 0.00 : 42229e: e8 dd 2a 01 00 callq 434d80 0.00 : 4222a3: 85 c0 test %eax,%eax 0.00 : 4222a5: 0f 84 34 30 00 00 je 4252df : : COMPLETE_WITH_LIST(list_ALTERGEN); : } : : /* ALTER CONVERSION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4222ab: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4222af: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4222b4: e8 c7 2a 01 00 callq 434d80 0.00 : 4222b9: 85 c0 test %eax,%eax 0.00 : 4222bb: 75 16 jne 4222d3 0.00 : 4222bd: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4222c1: be 55 bc 43 00 mov $0x43bc55,%esi 0.00 : 4222c6: e8 b5 2a 01 00 callq 434d80 0.00 : 4222cb: 85 c0 test %eax,%eax 0.00 : 4222cd: 0f 84 34 30 00 00 je 425307 : : COMPLETE_WITH_LIST(list_ALTERGEN); : } : : /* ALTER DATABASE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4222d3: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4222d7: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4222dc: e8 9f 2a 01 00 callq 434d80 0.00 : 4222e1: 85 c0 test %eax,%eax 0.00 : 4222e3: 75 16 jne 4222fb 0.00 : 4222e5: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4222e9: be 67 bc 43 00 mov $0x43bc67,%esi 0.00 : 4222ee: e8 8d 2a 01 00 callq 434d80 0.00 : 4222f3: 85 c0 test %eax,%eax 0.00 : 4222f5: 0f 84 34 30 00 00 je 42532f : : COMPLETE_WITH_LIST(list_ALTERDATABASE); : } : : /* ALTER EVENT TRIGGER */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4222fb: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4222ff: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422304: e8 77 2a 01 00 callq 434d80 0.00 : 422309: 85 c0 test %eax,%eax 0.00 : 42230b: 75 16 jne 422323 0.00 : 42230d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422311: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 422316: e8 65 2a 01 00 callq 434d80 0.00 : 42231b: 85 c0 test %eax,%eax 0.00 : 42231d: 0f 84 34 30 00 00 je 425357 : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); : } : : /* ALTER EVENT TRIGGER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422323: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422327: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42232c: e8 4f 2a 01 00 callq 434d80 0.00 : 422331: 85 c0 test %eax,%eax 0.00 : 422333: 75 16 jne 42234b 0.00 : 422335: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422339: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 42233e: e8 3d 2a 01 00 callq 434d80 0.00 : 422343: 85 c0 test %eax,%eax 0.00 : 422345: 0f 84 43 30 00 00 je 42538e : : COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER); : } : : /* ALTER EVENT TRIGGER ENABLE */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 42234b: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42234f: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422354: e8 27 2a 01 00 callq 434d80 0.00 : 422359: 85 c0 test %eax,%eax 0.00 : 42235b: 75 16 jne 422373 0.00 : 42235d: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422361: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 422366: e8 15 2a 01 00 callq 434d80 0.00 : 42236b: 85 c0 test %eax,%eax 0.00 : 42236d: 0f 84 5f 22 00 00 je 4245d2 : : COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER_ENABLE); : } : : /* ALTER EXTENSION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422373: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422377: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42237c: e8 ff 29 01 00 callq 434d80 0.00 : 422381: 85 c0 test %eax,%eax 0.00 : 422383: 75 16 jne 42239b 0.00 : 422385: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422389: be df bc 43 00 mov $0x43bcdf,%esi 0.00 : 42238e: e8 ed 29 01 00 callq 434d80 0.00 : 422393: 85 c0 test %eax,%eax 0.00 : 422395: 0f 84 7d 31 00 00 je 425518 : : COMPLETE_WITH_LIST(list_ALTEREXTENSION); : } : : /* ALTER FOREIGN */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 42239b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42239f: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4223a4: e8 d7 29 01 00 callq 434d80 0.00 : 4223a9: 85 c0 test %eax,%eax 0.00 : 4223ab: 75 16 jne 4223c3 0.00 : 4223ad: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4223b1: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 4223b6: e8 c5 29 01 00 callq 434d80 0.00 : 4223bb: 85 c0 test %eax,%eax 0.00 : 4223bd: 0f 84 d9 30 00 00 je 42549c : : COMPLETE_WITH_LIST(list_ALTER_FOREIGN); : } : : /* ALTER FOREIGN DATA WRAPPER */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4223c3: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4223c7: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4223cc: e8 af 29 01 00 callq 434d80 0.00 : 4223d1: 85 c0 test %eax,%eax 0.00 : 4223d3: 75 16 jne 4223eb 0.00 : 4223d5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4223d9: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 4223de: e8 9d 29 01 00 callq 434d80 0.00 : 4223e3: 85 c0 test %eax,%eax 0.00 : 4223e5: 0f 84 d9 30 00 00 je 4254c4 : : COMPLETE_WITH_LIST(list_ALTER_FDW); : } : : /* ALTER FOREIGN TABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4223eb: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4223ef: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4223f4: e8 87 29 01 00 callq 434d80 0.00 : 4223f9: 85 c0 test %eax,%eax 0.00 : 4223fb: 75 16 jne 422413 0.00 : 4223fd: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422401: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 422406: e8 75 29 01 00 callq 434d80 0.00 : 42240b: 85 c0 test %eax,%eax 0.00 : 42240d: 0f 84 b9 2f 00 00 je 4253cc : : COMPLETE_WITH_LIST(list_ALTER_FOREIGN_TABLE); : } : : /* ALTER INDEX */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 422413: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422417: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42241c: e8 5f 29 01 00 callq 434d80 0.00 : 422421: 85 c0 test %eax,%eax 0.00 : 422423: 75 16 jne 42243b 0.00 : 422425: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 422429: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 42242e: e8 4d 29 01 00 callq 434d80 0.00 : 422433: 85 c0 test %eax,%eax 0.00 : 422435: 0f 84 cf 2f 00 00 je 42540a : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, : "UNION SELECT 'ALL IN TABLESPACE'"); : } : /* ALTER INDEX */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42243b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42243f: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422444: e8 37 29 01 00 callq 434d80 0.00 : 422449: 85 c0 test %eax,%eax 0.00 : 42244b: 75 16 jne 422463 0.00 : 42244d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422451: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 422456: e8 25 29 01 00 callq 434d80 0.00 : 42245b: 85 c0 test %eax,%eax 0.00 : 42245d: 0f 84 d3 2f 00 00 je 425436 : {"OWNER TO", "RENAME TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEX); : } : /* ALTER INDEX SET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422463: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422467: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42246c: e8 0f 29 01 00 callq 434d80 0.00 : 422471: 85 c0 test %eax,%eax 0.00 : 422473: 75 16 jne 42248b 0.00 : 422475: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422479: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 42247e: e8 fd 28 01 00 callq 434d80 0.00 : 422483: 85 c0 test %eax,%eax 0.00 : 422485: 0f 84 d3 2f 00 00 je 42545e : {"(", "TABLESPACE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEXSET); : } : /* ALTER INDEX RESET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42248b: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42248f: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422494: e8 e7 28 01 00 callq 434d80 0.00 : 422499: 85 c0 test %eax,%eax 0.00 : 42249b: 75 16 jne 4224b3 0.00 : 42249d: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4224a1: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 4224a6: e8 d5 28 01 00 callq 434d80 0.00 : 4224ab: 85 c0 test %eax,%eax 0.00 : 4224ad: 0f 84 a5 29 00 00 je 424e58 : pg_strcasecmp(prev3_wd, "INDEX") == 0 && : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER INDEX SET|RESET ( */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4224b3: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4224b7: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4224bc: e8 bf 28 01 00 callq 434d80 0.00 : 4224c1: 85 c0 test %eax,%eax 0.00 : 4224c3: 75 16 jne 4224db 0.00 : 4224c5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4224c9: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 4224ce: e8 ad 28 01 00 callq 434d80 0.00 : 4224d3: 85 c0 test %eax,%eax 0.00 : 4224d5: 0f 84 bb 29 00 00 je 424e96 : : COMPLETE_WITH_LIST(list_INDEXOPTIONS); : } : : /* ALTER LANGUAGE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4224db: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4224df: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4224e4: e8 97 28 01 00 callq 434d80 0.00 : 4224e9: 85 c0 test %eax,%eax 0.00 : 4224eb: 75 16 jne 422503 0.00 : 4224ed: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4224f1: be bf bd 43 00 mov $0x43bdbf,%esi 0.00 : 4224f6: e8 85 28 01 00 callq 434d80 0.00 : 4224fb: 85 c0 test %eax,%eax 0.00 : 4224fd: 0f 84 f9 29 00 00 je 424efc : : COMPLETE_WITH_LIST(list_ALTERLANGUAGE); : } : : /* ALTER LARGE OBJECT */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422503: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422507: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42250c: e8 6f 28 01 00 callq 434d80 0.00 : 422511: 85 c0 test %eax,%eax 0.00 : 422513: 75 16 jne 42252b 0.00 : 422515: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422519: be 96 0f 45 00 mov $0x450f96,%esi 0.00 : 42251e: e8 5d 28 01 00 callq 434d80 0.00 : 422523: 85 c0 test %eax,%eax 0.00 : 422525: 0f 84 f9 29 00 00 je 424f24 : : COMPLETE_WITH_LIST(list_ALTERLARGEOBJECT); : } : : /* ALTER MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42252b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42252f: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422534: e8 47 28 01 00 callq 434d80 0.00 : 422539: 85 c0 test %eax,%eax 0.00 : 42253b: 75 16 jne 422553 0.00 : 42253d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422541: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 422546: e8 35 28 01 00 callq 434d80 0.00 : 42254b: 85 c0 test %eax,%eax 0.00 : 42254d: 0f 84 0f 2a 00 00 je 424f62 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, : "UNION SELECT 'ALL IN TABLESPACE'"); : } : : /* ALTER USER,ROLE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422553: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422557: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42255c: e8 1f 28 01 00 callq 434d80 0.00 : 422561: 85 c0 test %eax,%eax 0.00 : 422563: 0f 85 e1 02 00 00 jne 42284a 0.00 : 422569: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42256d: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 422572: e8 09 28 01 00 callq 434d80 0.00 : 422577: 85 c0 test %eax,%eax 0.00 : 422579: 75 16 jne 422591 0.00 : 42257b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42257f: be 16 c0 43 00 mov $0x43c016,%esi 0.00 : 422584: e8 f7 27 01 00 callq 434d80 0.00 : 422589: 85 c0 test %eax,%eax 0.00 : 42258b: 0f 84 b9 02 00 00 je 42284a 0.00 : 422591: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422595: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 42259a: e8 e1 27 01 00 callq 434d80 0.00 : 42259f: 85 c0 test %eax,%eax 0.00 : 4225a1: 74 16 je 4225b9 0.00 : 4225a3: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4225a7: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 4225ac: e8 cf 27 01 00 callq 434d80 0.00 : 4225b1: 85 c0 test %eax,%eax 0.00 : 4225b3: 0f 85 91 02 00 00 jne 42284a : "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", : "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "RENAME TO", : "REPLICATION", "RESET", "SET", "SUPERUSER", "UNENCRYPTED", : "VALID UNTIL", "WITH", NULL}; : : COMPLETE_WITH_LIST(list_ALTERUSER); 0.00 : 4225b9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4225bd: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4225c2: 48 c7 05 bb 89 24 00 movq $0x457180,0x2489bb(%rip) # 66af88 0.00 : 4225c9: 80 71 45 00 0.00 : 4225cd: c6 05 d4 89 24 00 00 movb $0x0,0x2489d4(%rip) # 66afa8 0.00 : 4225d4: e8 f7 11 fe ff callq 4037d0 0.00 : 4225d9: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, : "UNION SELECT 'ALL IN TABLESPACE'"); : } : : /* ALTER USER,ROLE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4225dc: e9 11 fa ff ff jmpq 421ff2 0.00 : 4225e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else if (pg_strcasecmp(prev_wd, "CREATE") == 0) : matches = completion_matches(text, create_command_generator); : : /* DROP, but not DROP embedded in other commands */ : /* complete with something you can drop */ : else if (pg_strcasecmp(prev_wd, "DROP") == 0 && 0.00 : 4225e8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4225ec: e9 87 fa ff ff jmpq 422078 : else if (text[0] == ':' && text[1] != ':') : { : if (text[1] == '\'') : matches = complete_from_variables(text, ":'", "'", true); : else if (text[1] == '"') : matches = complete_from_variables(text, ":\"", "\"", true); 0.00 : 4225f1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4225f5: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4225fa: ba 6d 0f 45 00 mov $0x450f6d,%edx 0.00 : 4225ff: be 6c 0f 45 00 mov $0x450f6c,%esi 0.00 : 422604: e8 57 f6 ff ff callq 421c60 0.00 : 422609: 48 89 c3 mov %rax,%rbx 0.00 : 42260c: e9 e1 f9 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : (pg_strcasecmp(prev2_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev2_wd, "FUNCTION") == 0)) : COMPLETE_WITH_CONST("("); : /* ALTER AGGREGATE,FUNCTION (...) */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422611: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422615: be fe bb 43 00 mov $0x43bbfe,%esi 0.00 : 42261a: e8 61 27 01 00 callq 434d80 0.00 : 42261f: 85 c0 test %eax,%eax 0.00 : 422621: 74 16 je 422639 0.00 : 422623: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422627: be 51 bd 43 00 mov $0x43bd51,%esi 0.00 : 42262c: e8 4f 27 01 00 callq 434d80 0.00 : 422631: 85 c0 test %eax,%eax 0.00 : 422633: 0f 85 22 fc ff ff jne 42225b : (pg_strcasecmp(prev3_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev3_wd, "FUNCTION") == 0)) : { : if (prev_wd[strlen(prev_wd) - 1] == ')') 0.00 : 422639: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 42263d: 48 89 df mov %rbx,%rdi 0.00 : 422640: e8 3b 12 fe ff callq 403880 0.00 : 422645: 80 7c 03 ff 29 cmpb $0x29,-0x1(%rbx,%rax,1) 0.00 : 42264a: 0f 84 3f 2c 00 00 je 42528f : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERAGG); : } : else : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); 0.00 : 422650: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422654: 8b 05 4e 8a 24 00 mov 0x248a4e(%rip),%eax # 66b0a8 0.00 : 42265a: 45 31 c9 xor %r9d,%r9d 0.00 : 42265d: 45 31 c0 xor %r8d,%r8d 0.00 : 422660: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 422665: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42266a: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42266f: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 422676: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42267a: e8 c1 a7 fe ff callq 40ce40 0.00 : 42267f: 48 89 c3 mov %rax,%rbx 0.00 : 422682: 8b 05 20 8a 24 00 mov 0x248a20(%rip),%eax # 66b0a8 0.00 : 422688: 45 31 c9 xor %r9d,%r9d 0.00 : 42268b: 45 31 c0 xor %r8d,%r8d 0.00 : 42268e: 31 ff xor %edi,%edi 0.00 : 422690: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 422695: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42269a: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42269f: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4226a6: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4226aa: e8 91 a7 fe ff callq 40ce40 0.00 : 4226af: 8b 05 f3 89 24 00 mov 0x2489f3(%rip),%eax # 66b0a8 0.00 : 4226b5: 45 31 c9 xor %r9d,%r9d 0.00 : 4226b8: 45 31 c0 xor %r8d,%r8d 0.00 : 4226bb: 31 ff xor %edi,%edi 0.00 : 4226bd: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 4226c2: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4226c7: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4226cc: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4226d3: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4226d7: e8 64 a7 fe ff callq 40ce40 0.00 : 4226dc: 48 85 c0 test %rax,%rax 0.00 : 4226df: 0f 84 8f 2b 00 00 je 425274 0.00 : 4226e5: 48 c7 05 90 88 24 00 movq $0x451cd0,0x248890(%rip) # 66af80 0.00 : 4226ec: d0 1c 45 00 0.00 : 4226f0: 48 89 05 99 88 24 00 mov %rax,0x248899(%rip) # 66af90 0.00 : 4226f7: 48 89 1d 9a 88 24 00 mov %rbx,0x24889a(%rip) # 66af98 0.00 : 4226fe: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 422702: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 422707: e8 c4 10 fe ff callq 4037d0 0.00 : 42270c: 48 89 c3 mov %rax,%rbx 0.00 : 42270f: e9 de f8 ff ff jmpq 421ff2 : : /* Variable interpolation */ : else if (text[0] == ':' && text[1] != ':') : { : if (text[1] == '\'') : matches = complete_from_variables(text, ":'", "'", true); 0.00 : 422714: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 422719: ba 40 64 44 00 mov $0x446440,%edx 0.00 : 42271e: be 69 0f 45 00 mov $0x450f69,%esi 0.00 : 422723: e8 38 f5 ff ff callq 421c60 0.00 : 422728: 48 89 c3 mov %rax,%rbx 0.00 : 42272b: e9 c2 f8 ff ff jmpq 421ff2 : {"SET TABLESPACE", "OWNED BY", NULL}; : : COMPLETE_WITH_LIST(list_ALTERALLINTSPC); : } : /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx OWNED BY */ : else if (pg_strcasecmp(prev6_wd, "ALL") == 0 && 0.00 : 422730: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422734: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 422739: e8 42 26 01 00 callq 434d80 0.00 : 42273e: 85 c0 test %eax,%eax 0.00 : 422740: 0f 85 ce f9 ff ff jne 422114 0.00 : 422746: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42274a: be 30 c6 43 00 mov $0x43c630,%esi 0.00 : 42274f: e8 2c 26 01 00 callq 434d80 0.00 : 422754: 85 c0 test %eax,%eax 0.00 : 422756: 0f 85 b8 f9 ff ff jne 422114 0.00 : 42275c: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422760: be 29 1a 45 00 mov $0x451a29,%esi 0.00 : 422765: e8 16 26 01 00 callq 434d80 0.00 : 42276a: 85 c0 test %eax,%eax 0.00 : 42276c: 0f 85 a2 f9 ff ff jne 422114 : pg_strcasecmp(prev5_wd, "IN") == 0 && : pg_strcasecmp(prev4_wd, "TABLESPACE") == 0 && : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev4_wd, "BY") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 422772: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 422776: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42277b: 48 c7 05 fa 87 24 00 movq $0x451b48,0x2487fa(%rip) # 66af80 0.00 : 422782: 48 1b 45 00 0.00 : 422786: e8 45 10 fe ff callq 4037d0 0.00 : 42278b: 48 89 c3 mov %rax,%rbx : {"SET TABLESPACE", "OWNED BY", NULL}; : : COMPLETE_WITH_LIST(list_ALTERALLINTSPC); : } : /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx OWNED BY */ : else if (pg_strcasecmp(prev6_wd, "ALL") == 0 && 0.00 : 42278e: e9 5f f8 ff ff jmpq 421ff2 0.00 : 422793: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : "USER", "USER MAPPING FOR", "VIEW", NULL}; : : COMPLETE_WITH_LIST(list_ALTER); : } : /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx */ : else if (pg_strcasecmp(prev4_wd, "ALL") == 0 && 0.00 : 422798: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42279c: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 4227a1: e8 da 25 01 00 callq 434d80 0.00 : 4227a6: 85 c0 test %eax,%eax 0.00 : 4227a8: 0f 85 3e f9 ff ff jne 4220ec : pg_strcasecmp(prev2_wd, "TABLESPACE") == 0) : { : static const char *const list_ALTERALLINTSPC[] = : {"SET TABLESPACE", "OWNED BY", NULL}; : : COMPLETE_WITH_LIST(list_ALTERALLINTSPC); 0.00 : 4227ae: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4227b2: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4227b7: 48 c7 05 c6 87 24 00 movq $0x457500,0x2487c6(%rip) # 66af88 0.00 : 4227be: 00 75 45 00 0.00 : 4227c2: c6 05 df 87 24 00 00 movb $0x0,0x2487df(%rip) # 66afa8 0.00 : 4227c9: e8 02 10 fe ff callq 4037d0 0.00 : 4227ce: 48 89 c3 mov %rax,%rbx : "USER", "USER MAPPING FOR", "VIEW", NULL}; : : COMPLETE_WITH_LIST(list_ALTER); : } : /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx */ : else if (pg_strcasecmp(prev4_wd, "ALL") == 0 && 0.00 : 4227d1: e9 1c f8 ff ff jmpq 421ff2 0.00 : 4227d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4227dd: 00 00 00 : "GROUP", "INDEX", "LANGUAGE", "LARGE OBJECT", "MATERIALIZED VIEW", "OPERATOR", : "POLICY", "ROLE", "RULE", "SCHEMA", "SERVER", "SEQUENCE", "SYSTEM", "TABLE", : "TABLESPACE", "TEXT SEARCH", "TRIGGER", "TYPE", : "USER", "USER MAPPING FOR", "VIEW", NULL}; : : COMPLETE_WITH_LIST(list_ALTER); 0.00 : 4227e0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4227e4: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4227e9: 48 c7 05 94 87 24 00 movq $0x457520,0x248794(%rip) # 66af88 0.00 : 4227f0: 20 75 45 00 0.00 : 4227f4: c6 05 ad 87 24 00 00 movb $0x0,0x2487ad(%rip) # 66afa8 0.00 : 4227fb: e8 d0 0f fe ff callq 4037d0 0.00 : 422800: 48 89 c3 mov %rax,%rbx : } : /* : * complete with what you can alter (TABLE, GROUP, USER, ...) unless we're : * in ALTER TABLE sth ALTER : */ : else if (pg_strcasecmp(prev_wd, "ALTER") == 0 && 0.00 : 422803: e9 ea f7 ff ff jmpq 421ff2 : : /* ALTER TABLE */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && : pg_strcasecmp(prev_wd, "TABLE") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, 0.00 : 422808: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42280c: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 422811: 48 c7 05 84 87 24 00 movq $0x454f40,0x248784(%rip) # 66afa0 0.00 : 422818: 40 4f 45 00 0.00 : 42281c: 48 c7 05 59 87 24 00 movq $0x451b20,0x248759(%rip) # 66af80 0.00 : 422823: 20 1b 45 00 0.00 : 422827: e8 a4 0f fe ff callq 4037d0 0.00 : 42282c: 48 89 c3 mov %rax,%rbx : matches = completion_matches(text, drop_command_generator); : : /* ALTER */ : : /* ALTER TABLE */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 42282f: e9 be f7 ff ff jmpq 421ff2 : : /* DROP, but not DROP embedded in other commands */ : /* complete with something you can drop */ : else if (pg_strcasecmp(prev_wd, "DROP") == 0 && : prev2_wd[0] == '\0') : matches = completion_matches(text, drop_command_generator); 0.00 : 422834: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 422838: be f0 c0 42 00 mov $0x42c0f0,%esi 0.00 : 42283d: e8 8e 0f fe ff callq 4037d0 0.00 : 422842: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev_wd, "CREATE") == 0) : matches = completion_matches(text, create_command_generator); : : /* DROP, but not DROP embedded in other commands */ : /* complete with something you can drop */ : else if (pg_strcasecmp(prev_wd, "DROP") == 0 && 0.00 : 422845: e9 a8 f7 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_ALTERUSER); : } : : /* ALTER USER,ROLE WITH */ : else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42284a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42284e: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422853: e8 28 25 01 00 callq 434d80 0.00 : 422858: 85 c0 test %eax,%eax 0.00 : 42285a: 75 3a jne 422896 0.00 : 42285c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422860: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 422865: e8 16 25 01 00 callq 434d80 0.00 : 42286a: 85 c0 test %eax,%eax 0.00 : 42286c: 74 12 je 422880 0.00 : 42286e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422872: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 422877: e8 04 25 01 00 callq 434d80 0.00 : 42287c: 85 c0 test %eax,%eax 0.00 : 42287e: 75 16 jne 422896 0.00 : 422880: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 422884: be b8 c7 43 00 mov $0x43c7b8,%esi 0.00 : 422889: e8 f2 24 01 00 callq 434d80 0.00 : 42288e: 85 c0 test %eax,%eax 0.00 : 422890: 0f 84 0e 27 00 00 je 424fa4 : : COMPLETE_WITH_LIST(list_ALTERUSER_WITH); : } : : /* complete ALTER USER,ROLE ENCRYPTED,UNENCRYPTED with PASSWORD */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422896: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42289a: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42289f: e8 dc 24 01 00 callq 434d80 0.00 : 4228a4: 85 c0 test %eax,%eax 0.00 : 4228a6: 75 70 jne 422918 0.00 : 4228a8: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4228ac: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 4228b1: e8 ca 24 01 00 callq 434d80 0.00 : 4228b6: 85 c0 test %eax,%eax 0.00 : 4228b8: 74 12 je 4228cc 0.00 : 4228ba: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4228be: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 4228c3: e8 b8 24 01 00 callq 434d80 0.00 : 4228c8: 85 c0 test %eax,%eax 0.00 : 4228ca: 75 4c jne 422918 0.00 : 4228cc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4228d0: be ab 0f 45 00 mov $0x450fab,%esi 0.00 : 4228d5: e8 a6 24 01 00 callq 434d80 0.00 : 4228da: 85 c0 test %eax,%eax 0.00 : 4228dc: 74 12 je 4228f0 0.00 : 4228de: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4228e2: be a9 0f 45 00 mov $0x450fa9,%esi 0.00 : 4228e7: e8 94 24 01 00 callq 434d80 0.00 : 4228ec: 85 c0 test %eax,%eax 0.00 : 4228ee: 75 28 jne 422918 : (pg_strcasecmp(prev3_wd, "ROLE") == 0 || pg_strcasecmp(prev3_wd, "USER") == 0) && : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); 0.00 : 4228f0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4228f4: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4228f9: 48 c7 05 7c 86 24 00 movq $0x450fb5,0x24867c(%rip) # 66af80 0.00 : 422900: b5 0f 45 00 0.00 : 422904: c6 05 9d 86 24 00 00 movb $0x0,0x24869d(%rip) # 66afa8 0.00 : 42290b: e8 c0 0e fe ff callq 4037d0 0.00 : 422910: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERUSER_WITH); : } : : /* complete ALTER USER,ROLE ENCRYPTED,UNENCRYPTED with PASSWORD */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422913: e9 da f6 ff ff jmpq 421ff2 : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); : } : /* ALTER DEFAULT PRIVILEGES */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422918: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42291c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422921: e8 5a 24 01 00 callq 434d80 0.00 : 422926: 85 c0 test %eax,%eax 0.00 : 422928: 75 16 jne 422940 0.00 : 42292a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42292e: be be 0f 45 00 mov $0x450fbe,%esi 0.00 : 422933: e8 48 24 01 00 callq 434d80 0.00 : 422938: 85 c0 test %eax,%eax 0.00 : 42293a: 0f 84 8c 26 00 00 je 424fcc : {"FOR ROLE", "FOR USER", "IN SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES); : } : /* ALTER DEFAULT PRIVILEGES FOR */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422940: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422944: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422949: e8 32 24 01 00 callq 434d80 0.00 : 42294e: 85 c0 test %eax,%eax 0.00 : 422950: 75 16 jne 422968 0.00 : 422952: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422956: be be 0f 45 00 mov $0x450fbe,%esi 0.00 : 42295b: e8 20 24 01 00 callq 434d80 0.00 : 422960: 85 c0 test %eax,%eax 0.00 : 422962: 0f 84 a2 26 00 00 je 42500a : {"ROLE", "USER", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_FOR); : } : /* ALTER DEFAULT PRIVILEGES { FOR ROLE ... | IN SCHEMA ... } */ : else if (pg_strcasecmp(prev5_wd, "DEFAULT") == 0 && 0.00 : 422968: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42296c: be be 0f 45 00 mov $0x450fbe,%esi 0.00 : 422971: e8 0a 24 01 00 callq 434d80 0.00 : 422976: 85 c0 test %eax,%eax 0.00 : 422978: 75 16 jne 422990 0.00 : 42297a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42297e: be 72 b9 43 00 mov $0x43b972,%esi 0.00 : 422983: e8 f8 23 01 00 callq 434d80 0.00 : 422988: 85 c0 test %eax,%eax 0.00 : 42298a: 0f 84 ce 26 00 00 je 42505e : {"GRANT", "REVOKE", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_REST); : } : /* ALTER DOMAIN */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422990: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422994: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422999: e8 e2 23 01 00 callq 434d80 0.00 : 42299e: 85 c0 test %eax,%eax 0.00 : 4229a0: 75 16 jne 4229b8 0.00 : 4229a2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4229a6: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 4229ab: e8 d0 23 01 00 callq 434d80 0.00 : 4229b0: 85 c0 test %eax,%eax 0.00 : 4229b2: 0f 84 f6 26 00 00 je 4250ae : {"ADD", "DROP", "OWNER TO", "RENAME", "SET", "VALIDATE CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); : } : /* ALTER DOMAIN DROP */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4229b8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4229bc: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4229c1: e8 ba 23 01 00 callq 434d80 0.00 : 4229c6: 85 c0 test %eax,%eax 0.00 : 4229c8: 75 16 jne 4229e0 0.00 : 4229ca: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4229ce: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 4229d3: e8 a8 23 01 00 callq 434d80 0.00 : 4229d8: 85 c0 test %eax,%eax 0.00 : 4229da: 0f 84 f6 26 00 00 je 4250d6 : {"CONSTRAINT", "DEFAULT", "NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN2); : } : /* ALTER DOMAIN DROP|RENAME|VALIDATE CONSTRAINT */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4229e0: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4229e4: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4229e9: e8 92 23 01 00 callq 434d80 0.00 : 4229ee: 85 c0 test %eax,%eax 0.00 : 4229f0: 75 16 jne 422a08 0.00 : 4229f2: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4229f6: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 4229fb: e8 80 23 01 00 callq 434d80 0.00 : 422a00: 85 c0 test %eax,%eax 0.00 : 422a02: 0f 84 0c 27 00 00 je 425114 : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_constraint_of_type); : } : /* ALTER DOMAIN RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422a08: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422a0c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422a11: e8 6a 23 01 00 callq 434d80 0.00 : 422a16: 85 c0 test %eax,%eax 0.00 : 422a18: 75 16 jne 422a30 0.00 : 422a1a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422a1e: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 422a23: e8 58 23 01 00 callq 434d80 0.00 : 422a28: 85 c0 test %eax,%eax 0.00 : 422a2a: 0f 84 62 27 00 00 je 425192 : {"CONSTRAINT", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); : } : /* ALTER DOMAIN RENAME CONSTRAINT */ : else if (pg_strcasecmp(prev5_wd, "DOMAIN") == 0 && 0.00 : 422a30: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422a34: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 422a39: e8 42 23 01 00 callq 434d80 0.00 : 422a3e: 85 c0 test %eax,%eax 0.00 : 422a40: 75 16 jne 422a58 0.00 : 422a42: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422a46: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 422a4b: e8 30 23 01 00 callq 434d80 0.00 : 422a50: 85 c0 test %eax,%eax 0.00 : 422a52: 0f 84 78 27 00 00 je 4251d0 : pg_strcasecmp(prev3_wd, "RENAME") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : COMPLETE_WITH_CONST("TO"); : : /* ALTER DOMAIN SET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422a58: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422a5c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422a61: e8 1a 23 01 00 callq 434d80 0.00 : 422a66: 85 c0 test %eax,%eax 0.00 : 422a68: 75 16 jne 422a80 0.00 : 422a6a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422a6e: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 422a73: e8 08 23 01 00 callq 434d80 0.00 : 422a78: 85 c0 test %eax,%eax 0.00 : 422a7a: 0f 84 8e 27 00 00 je 42520e : {"DEFAULT", "NOT NULL", "SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN3); : } : /* ALTER SEQUENCE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422a80: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422a84: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422a89: e8 f2 22 01 00 callq 434d80 0.00 : 422a8e: 85 c0 test %eax,%eax 0.00 : 422a90: 75 16 jne 422aa8 0.00 : 422a92: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422a96: be d6 be 43 00 mov $0x43bed6,%esi 0.00 : 422a9b: e8 e0 22 01 00 callq 434d80 0.00 : 422aa0: 85 c0 test %eax,%eax 0.00 : 422aa2: 0f 84 a4 27 00 00 je 42524c : "SET SCHEMA", "OWNED BY", "OWNER TO", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSEQUENCE); : } : /* ALTER SEQUENCE NO */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422aa8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422aac: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422ab1: e8 ca 22 01 00 callq 434d80 0.00 : 422ab6: 85 c0 test %eax,%eax 0.00 : 422ab8: 75 16 jne 422ad0 0.00 : 422aba: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422abe: be d6 be 43 00 mov $0x43bed6,%esi 0.00 : 422ac3: e8 b8 22 01 00 callq 434d80 0.00 : 422ac8: 85 c0 test %eax,%eax 0.00 : 422aca: 0f 84 56 1b 00 00 je 424626 : {"MINVALUE", "MAXVALUE", "CYCLE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSEQUENCE2); : } : /* ALTER SERVER */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422ad0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422ad4: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422ad9: e8 a2 22 01 00 callq 434d80 0.00 : 422ade: 85 c0 test %eax,%eax 0.00 : 422ae0: 75 16 jne 422af8 0.00 : 422ae2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422ae6: be e6 be 43 00 mov $0x43bee6,%esi 0.00 : 422aeb: e8 90 22 01 00 callq 434d80 0.00 : 422af0: 85 c0 test %eax,%eax 0.00 : 422af2: 0f 84 6c 1b 00 00 je 424664 : {"VERSION", "OPTIONS", "OWNER TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_SERVER); : } : /* ALTER SYSTEM SET, RESET, RESET ALL */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 422af8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422afc: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422b01: e8 7a 22 01 00 callq 434d80 0.00 : 422b06: 85 c0 test %eax,%eax 0.00 : 422b08: 75 16 jne 422b20 0.00 : 422b0a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 422b0e: be e1 ba 43 00 mov $0x43bae1,%esi 0.00 : 422b13: e8 68 22 01 00 callq 434d80 0.00 : 422b18: 85 c0 test %eax,%eax 0.00 : 422b1a: 0f 84 6c 1b 00 00 je 42468c : {"SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSYSTEM); : } : /* ALTER SYSTEM SET|RESET */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422b20: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422b24: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422b29: e8 52 22 01 00 callq 434d80 0.00 : 422b2e: 85 c0 test %eax,%eax 0.00 : 422b30: 75 16 jne 422b48 0.00 : 422b32: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422b36: be e1 ba 43 00 mov $0x43bae1,%esi 0.00 : 422b3b: e8 40 22 01 00 callq 434d80 0.00 : 422b40: 85 c0 test %eax,%eax 0.00 : 422b42: 0f 84 6c 1b 00 00 je 4246b4 : pg_strcasecmp(prev2_wd, "SYSTEM") == 0 && : (pg_strcasecmp(prev_wd, "SET") == 0 || : pg_strcasecmp(prev_wd, "RESET") == 0)) : COMPLETE_WITH_QUERY(Query_for_list_of_alter_system_set_vars); : /* ALTER VIEW */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422b48: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422b4c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422b51: e8 2a 22 01 00 callq 434d80 0.00 : 422b56: 85 c0 test %eax,%eax 0.00 : 422b58: 75 16 jne 422b70 0.00 : 422b5a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422b5e: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 422b63: e8 18 22 01 00 callq 434d80 0.00 : 422b68: 85 c0 test %eax,%eax 0.00 : 422b6a: 0f 84 8d 1b 00 00 je 4246fd : {"ALTER COLUMN", "OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERVIEW); : } : /* ALTER MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422b70: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422b74: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422b79: e8 02 22 01 00 callq 434d80 0.00 : 422b7e: 85 c0 test %eax,%eax 0.00 : 422b80: 75 16 jne 422b98 0.00 : 422b82: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422b86: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 422b8b: e8 f0 21 01 00 callq 434d80 0.00 : 422b90: 85 c0 test %eax,%eax 0.00 : 422b92: 0f 84 8d 1b 00 00 je 424725 : : COMPLETE_WITH_LIST(list_ALTERMATVIEW); : } : : /* ALTER POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422b98: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422b9c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422ba1: e8 da 21 01 00 callq 434d80 0.00 : 422ba6: 85 c0 test %eax,%eax 0.00 : 422ba8: 75 16 jne 422bc0 0.00 : 422baa: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422bae: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 422bb3: e8 c8 21 01 00 callq 434d80 0.00 : 422bb8: 85 c0 test %eax,%eax 0.00 : 422bba: 0f 84 a3 1b 00 00 je 424763 : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* ALTER POLICY ON */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422bc0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422bc4: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422bc9: e8 b2 21 01 00 callq 434d80 0.00 : 422bce: 85 c0 test %eax,%eax 0.00 : 422bd0: 75 16 jne 422be8 0.00 : 422bd2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422bd6: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 422bdb: e8 a0 21 01 00 callq 434d80 0.00 : 422be0: 85 c0 test %eax,%eax 0.00 : 422be2: 0f 84 a3 1b 00 00 je 42478b : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* ALTER POLICY ON
- show options */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422be8: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422bec: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422bf1: e8 8a 21 01 00 callq 434d80 0.00 : 422bf6: 85 c0 test %eax,%eax 0.00 : 422bf8: 75 16 jne 422c10 0.00 : 422bfa: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422bfe: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 422c03: e8 78 21 01 00 callq 434d80 0.00 : 422c08: 85 c0 test %eax,%eax 0.00 : 422c0a: 0f 84 bd 1b 00 00 je 4247cd : {"RENAME TO", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_ALTERPOLICY); : } : /* ALTER POLICY ON
TO */ : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 422c10: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 422c14: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422c19: e8 62 21 01 00 callq 434d80 0.00 : 422c1e: 85 c0 test %eax,%eax 0.00 : 422c20: 75 16 jne 422c38 0.00 : 422c22: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422c26: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 422c2b: e8 50 21 01 00 callq 434d80 0.00 : 422c30: 85 c0 test %eax,%eax 0.00 : 422c32: 0f 84 d3 1b 00 00 je 42480b : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : /* ALTER POLICY ON
USING ( */ : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 422c38: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 422c3c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422c41: e8 3a 21 01 00 callq 434d80 0.00 : 422c46: 85 c0 test %eax,%eax 0.00 : 422c48: 75 16 jne 422c60 0.00 : 422c4a: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422c4e: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 422c53: e8 28 21 01 00 callq 434d80 0.00 : 422c58: 85 c0 test %eax,%eax 0.00 : 422c5a: 0f 84 f8 1b 00 00 je 424858 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER POLICY ON
WITH CHECK ( */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 422c60: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 422c64: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 422c69: e8 12 21 01 00 callq 434d80 0.00 : 422c6e: 85 c0 test %eax,%eax 0.00 : 422c70: 75 16 jne 422c88 0.00 : 422c72: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422c76: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 422c7b: e8 00 21 01 00 callq 434d80 0.00 : 422c80: 85 c0 test %eax,%eax 0.00 : 422c82: 0f 84 24 1c 00 00 je 4248ac : pg_strcasecmp(prev2_wd, "WITH") == 0 && : pg_strcasecmp(prev_wd, "CHECK") == 0) : COMPLETE_WITH_CONST("("); : : /* ALTER RULE , add ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422c88: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422c8c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422c91: e8 ea 20 01 00 callq 434d80 0.00 : 422c96: 85 c0 test %eax,%eax 0.00 : 422c98: 75 16 jne 422cb0 0.00 : 422c9a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422c9e: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 422ca3: e8 d8 20 01 00 callq 434d80 0.00 : 422ca8: 85 c0 test %eax,%eax 0.00 : 422caa: 0f 84 50 1c 00 00 je 424900 : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("ON"); : : /* If we have ALTER RULE ON, then add the correct tablename */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422cb0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422cb4: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422cb9: e8 c2 20 01 00 callq 434d80 0.00 : 422cbe: 85 c0 test %eax,%eax 0.00 : 422cc0: 75 16 jne 422cd8 0.00 : 422cc2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422cc6: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 422ccb: e8 b0 20 01 00 callq 434d80 0.00 : 422cd0: 85 c0 test %eax,%eax 0.00 : 422cd2: 0f 84 50 1c 00 00 je 424928 : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); : } : : /* ALTER RULE ON */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422cd8: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422cdc: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422ce1: e8 9a 20 01 00 callq 434d80 0.00 : 422ce6: 85 c0 test %eax,%eax 0.00 : 422ce8: 75 16 jne 422d00 0.00 : 422cea: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422cee: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 422cf3: e8 88 20 01 00 callq 434d80 0.00 : 422cf8: 85 c0 test %eax,%eax 0.00 : 422cfa: 0f 84 6a 1c 00 00 je 42496a : pg_strcasecmp(prev4_wd, "RULE") == 0) : COMPLETE_WITH_CONST("RENAME TO"); : : /* ALTER TRIGGER , add ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422d00: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422d04: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422d09: e8 72 20 01 00 callq 434d80 0.00 : 422d0e: 85 c0 test %eax,%eax 0.00 : 422d10: 75 16 jne 422d28 0.00 : 422d12: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422d16: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 422d1b: e8 60 20 01 00 callq 434d80 0.00 : 422d20: 85 c0 test %eax,%eax 0.00 : 422d22: 0f 84 6a 1c 00 00 je 424992 : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : COMPLETE_WITH_CONST("ON"); : : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422d28: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422d2c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422d31: e8 4a 20 01 00 callq 434d80 0.00 : 422d36: 85 c0 test %eax,%eax 0.00 : 422d38: 75 16 jne 422d50 0.00 : 422d3a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422d3e: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 422d43: e8 38 20 01 00 callq 434d80 0.00 : 422d48: 85 c0 test %eax,%eax 0.00 : 422d4a: 0f 84 6a 1c 00 00 je 4249ba : } : : /* : * If we have ALTER TRIGGER ON, then add the correct tablename : */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422d50: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422d54: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422d59: e8 22 20 01 00 callq 434d80 0.00 : 422d5e: 85 c0 test %eax,%eax 0.00 : 422d60: 75 16 jne 422d78 0.00 : 422d62: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422d66: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 422d6b: e8 10 20 01 00 callq 434d80 0.00 : 422d70: 85 c0 test %eax,%eax 0.00 : 422d72: 0f 84 6e 1c 00 00 je 4249e6 : pg_strcasecmp(prev3_wd, "TRIGGER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* ALTER TRIGGER ON */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422d78: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422d7c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422d81: e8 fa 1f 01 00 callq 434d80 0.00 : 422d86: 85 c0 test %eax,%eax 0.00 : 422d88: 75 16 jne 422da0 0.00 : 422d8a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422d8e: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 422d93: e8 e8 1f 01 00 callq 434d80 0.00 : 422d98: 85 c0 test %eax,%eax 0.00 : 422d9a: 0f 84 88 1c 00 00 je 424a28 : COMPLETE_WITH_CONST("RENAME TO"); : : /* : * If we detect ALTER TABLE , suggest sub commands : */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 422da0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422da4: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422da9: e8 d2 1f 01 00 callq 434d80 0.00 : 422dae: 85 c0 test %eax,%eax 0.00 : 422db0: 75 16 jne 422dc8 0.00 : 422db2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422db6: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422dbb: e8 c0 1f 01 00 callq 434d80 0.00 : 422dc0: 85 c0 test %eax,%eax 0.00 : 422dc2: 0f 84 9e 1c 00 00 je 424a66 : "VALIDATE CONSTRAINT", "REPLICA IDENTITY", NULL}; : : COMPLETE_WITH_LIST(list_ALTER2); : } : /* ALTER TABLE xxx ENABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422dc8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422dcc: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422dd1: e8 aa 1f 01 00 callq 434d80 0.00 : 422dd6: 85 c0 test %eax,%eax 0.00 : 422dd8: 75 16 jne 422df0 0.00 : 422dda: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422dde: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422de3: e8 98 1f 01 00 callq 434d80 0.00 : 422de8: 85 c0 test %eax,%eax 0.00 : 422dea: 0f 84 9e 1c 00 00 je 424a8e : static const char *const list_ALTERENABLE[] = : {"ALWAYS", "REPLICA", "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE); : } : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 422df0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422df4: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422df9: e8 82 1f 01 00 callq 434d80 0.00 : 422dfe: 85 c0 test %eax,%eax 0.00 : 422e00: 75 16 jne 422e18 0.00 : 422e02: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 422e06: be 87 0f 45 00 mov $0x450f87,%esi 0.00 : 422e0b: e8 70 1f 01 00 callq 434d80 0.00 : 422e10: 85 c0 test %eax,%eax 0.00 : 422e12: 0f 84 b4 1c 00 00 je 424acc : static const char *const list_ALTERENABLE2[] = : {"RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE2); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422e18: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422e1c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422e21: e8 5a 1f 01 00 callq 434d80 0.00 : 422e26: 85 c0 test %eax,%eax 0.00 : 422e28: 75 16 jne 422e40 0.00 : 422e2a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422e2e: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422e33: e8 48 1f 01 00 callq 434d80 0.00 : 422e38: 85 c0 test %eax,%eax 0.00 : 422e3a: 0f 84 dc 1c 00 00 je 424b1c : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 422e40: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 422e44: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422e49: e8 32 1f 01 00 callq 434d80 0.00 : 422e4e: 85 c0 test %eax,%eax 0.00 : 422e50: 75 16 jne 422e68 0.00 : 422e52: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422e56: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422e5b: e8 20 1f 01 00 callq 434d80 0.00 : 422e60: 85 c0 test %eax,%eax 0.00 : 422e62: 0f 84 0c 1d 00 00 je 424b74 : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev4_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422e68: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422e6c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422e71: e8 0a 1f 01 00 callq 434d80 0.00 : 422e76: 85 c0 test %eax,%eax 0.00 : 422e78: 75 16 jne 422e90 0.00 : 422e7a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422e7e: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422e83: e8 f8 1e 01 00 callq 434d80 0.00 : 422e88: 85 c0 test %eax,%eax 0.00 : 422e8a: 0f 84 3c 1d 00 00 je 424bcc : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 422e90: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 422e94: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422e99: e8 e2 1e 01 00 callq 434d80 0.00 : 422e9e: 85 c0 test %eax,%eax 0.00 : 422ea0: 75 16 jne 422eb8 0.00 : 422ea2: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422ea6: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422eab: e8 d0 1e 01 00 callq 434d80 0.00 : 422eb0: 85 c0 test %eax,%eax 0.00 : 422eb2: 0f 84 6c 1d 00 00 je 424c24 : { : completion_info_charp = prev4_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : /* ALTER TABLE xxx INHERIT */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422eb8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422ebc: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422ec1: e8 ba 1e 01 00 callq 434d80 0.00 : 422ec6: 85 c0 test %eax,%eax 0.00 : 422ec8: 75 16 jne 422ee0 0.00 : 422eca: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422ece: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422ed3: e8 a8 1e 01 00 callq 434d80 0.00 : 422ed8: 85 c0 test %eax,%eax 0.00 : 422eda: 0f 84 9c 1d 00 00 je 424c7c : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : } : /* ALTER TABLE xxx NO INHERIT */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422ee0: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422ee4: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422ee9: e8 92 1e 01 00 callq 434d80 0.00 : 422eee: 85 c0 test %eax,%eax 0.00 : 422ef0: 75 16 jne 422f08 0.00 : 422ef2: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422ef6: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422efb: e8 80 1e 01 00 callq 434d80 0.00 : 422f00: 85 c0 test %eax,%eax 0.00 : 422f02: 0f 84 b6 1d 00 00 je 424cbe : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : } : /* ALTER TABLE xxx DISABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422f08: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422f0c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422f11: e8 6a 1e 01 00 callq 434d80 0.00 : 422f16: 85 c0 test %eax,%eax 0.00 : 422f18: 75 16 jne 422f30 0.00 : 422f1a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422f1e: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422f23: e8 58 1e 01 00 callq 434d80 0.00 : 422f28: 85 c0 test %eax,%eax 0.00 : 422f2a: 0f 84 e6 1d 00 00 je 424d16 : static const char *const list_ALTERDISABLE[] = : { "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDISABLE); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422f30: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422f34: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422f39: e8 42 1e 01 00 callq 434d80 0.00 : 422f3e: 85 c0 test %eax,%eax 0.00 : 422f40: 75 16 jne 422f58 0.00 : 422f42: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422f46: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422f4b: e8 30 1e 01 00 callq 434d80 0.00 : 422f50: 85 c0 test %eax,%eax 0.00 : 422f52: 0f 84 fc 1d 00 00 je 424d54 : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 422f58: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 422f5c: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422f61: e8 1a 1e 01 00 callq 434d80 0.00 : 422f66: 85 c0 test %eax,%eax 0.00 : 422f68: 75 16 jne 422f80 0.00 : 422f6a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422f6e: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422f73: e8 08 1e 01 00 callq 434d80 0.00 : 422f78: 85 c0 test %eax,%eax 0.00 : 422f7a: 0f 84 2c 1e 00 00 je 424dac : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : else if (pg_strcasecmp(prev4_wd, "DISABLE") == 0 && 0.00 : 422f80: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422f84: be f8 0f 45 00 mov $0x450ff8,%esi 0.00 : 422f89: e8 f2 1d 01 00 callq 434d80 0.00 : 422f8e: 85 c0 test %eax,%eax 0.00 : 422f90: 75 16 jne 422fa8 0.00 : 422f92: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422f96: be 00 10 45 00 mov $0x451000,%esi 0.00 : 422f9b: e8 e0 1d 01 00 callq 434d80 0.00 : 422fa0: 85 c0 test %eax,%eax 0.00 : 422fa2: 0f 84 5c 1e 00 00 je 424e04 : : COMPLETE_WITH_LIST(list_DISABLERLS); : } : : /* ALTER TABLE xxx ALTER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422fa8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422fac: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422fb1: e8 ca 1d 01 00 callq 434d80 0.00 : 422fb6: 85 c0 test %eax,%eax 0.00 : 422fb8: 75 16 jne 422fd0 0.00 : 422fba: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422fbe: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422fc3: e8 b8 1d 01 00 callq 434d80 0.00 : 422fc8: 85 c0 test %eax,%eax 0.00 : 422fca: 0f 84 9f 0f 00 00 je 423f6f : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "ALTER") == 0) : COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN'"); : : /* ALTER TABLE xxx RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 422fd0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422fd4: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 422fd9: e8 a2 1d 01 00 callq 434d80 0.00 : 422fde: 85 c0 test %eax,%eax 0.00 : 422fe0: 75 16 jne 422ff8 0.00 : 422fe2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 422fe6: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 422feb: e8 90 1d 01 00 callq 434d80 0.00 : 422ff0: 85 c0 test %eax,%eax 0.00 : 422ff2: 0f 84 51 10 00 00 je 424049 : : /* : * If we have TABLE ALTER COLUMN|RENAME COLUMN, provide list of : * columns : */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 422ff8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 422ffc: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423001: e8 7a 1d 01 00 callq 434d80 0.00 : 423006: 85 c0 test %eax,%eax 0.00 : 423008: 75 3a jne 423044 0.00 : 42300a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42300e: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423013: e8 68 1d 01 00 callq 434d80 0.00 : 423018: 85 c0 test %eax,%eax 0.00 : 42301a: 74 12 je 42302e 0.00 : 42301c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423020: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 423025: e8 56 1d 01 00 callq 434d80 0.00 : 42302a: 85 c0 test %eax,%eax 0.00 : 42302c: 75 16 jne 423044 0.00 : 42302e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423032: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 423037: e8 44 1d 01 00 callq 434d80 0.00 : 42303c: 85 c0 test %eax,%eax 0.00 : 42303e: 0f 84 0e 11 00 00 je 424152 : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "COLUMN") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); : : /* ALTER TABLE xxx RENAME yyy */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423044: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423048: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 42304d: e8 2e 1d 01 00 callq 434d80 0.00 : 423052: 85 c0 test %eax,%eax 0.00 : 423054: 75 16 jne 42306c 0.00 : 423056: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42305a: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 42305f: e8 1c 1d 01 00 callq 434d80 0.00 : 423064: 85 c0 test %eax,%eax 0.00 : 423066: 0f 84 aa 11 00 00 je 424216 : pg_strcasecmp(prev_wd, "CONSTRAINT") != 0 && : pg_strcasecmp(prev_wd, "TO") != 0) : COMPLETE_WITH_CONST("TO"); : : /* ALTER TABLE xxx RENAME COLUMN/CONSTRAINT yyy */ : else if (pg_strcasecmp(prev5_wd, "TABLE") == 0 && 0.00 : 42306c: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 423070: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423075: e8 06 1d 01 00 callq 434d80 0.00 : 42307a: 85 c0 test %eax,%eax 0.00 : 42307c: 75 16 jne 423094 0.00 : 42307e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423082: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 423087: e8 f4 1c 01 00 callq 434d80 0.00 : 42308c: 85 c0 test %eax,%eax 0.00 : 42308e: 0f 84 f1 11 00 00 je 424285 : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) && : pg_strcasecmp(prev_wd, "TO") != 0) : COMPLETE_WITH_CONST("TO"); : : /* If we have TABLE DROP, provide COLUMN or CONSTRAINT */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 423094: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423098: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 42309d: e8 de 1c 01 00 callq 434d80 0.00 : 4230a2: 85 c0 test %eax,%eax 0.00 : 4230a4: 75 16 jne 4230bc 0.00 : 4230a6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4230aa: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 4230af: e8 cc 1c 01 00 callq 434d80 0.00 : 4230b4: 85 c0 test %eax,%eax 0.00 : 4230b6: 0f 84 2f 12 00 00 je 4242eb : {"COLUMN", "CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_TABLEDROP); : } : /* If we have ALTER TABLE DROP COLUMN, provide list of columns */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4230bc: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4230c0: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4230c5: e8 b6 1c 01 00 callq 434d80 0.00 : 4230ca: 85 c0 test %eax,%eax 0.00 : 4230cc: 75 16 jne 4230e4 0.00 : 4230ce: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4230d2: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4230d7: e8 a4 1c 01 00 callq 434d80 0.00 : 4230dc: 85 c0 test %eax,%eax 0.00 : 4230de: 0f 84 2f 12 00 00 je 424313 : : /* : * If we have ALTER TABLE DROP|RENAME|VALIDATE CONSTRAINT, provide : * list of constraints : */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4230e4: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4230e8: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4230ed: e8 8e 1c 01 00 callq 434d80 0.00 : 4230f2: 85 c0 test %eax,%eax 0.00 : 4230f4: 75 16 jne 42310c 0.00 : 4230f6: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4230fa: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4230ff: e8 7c 1c 01 00 callq 434d80 0.00 : 423104: 85 c0 test %eax,%eax 0.00 : 423106: 0f 84 f7 12 00 00 je 424403 : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_constraint_of_table); : } : /* ALTER TABLE ALTER [COLUMN] */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42310c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423110: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423115: e8 66 1c 01 00 callq 434d80 0.00 : 42311a: 85 c0 test %eax,%eax 0.00 : 42311c: 75 12 jne 423130 0.00 : 42311e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423122: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 423127: e8 54 1c 01 00 callq 434d80 0.00 : 42312c: 85 c0 test %eax,%eax 0.00 : 42312e: 74 24 je 423154 0.00 : 423130: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423134: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423139: e8 42 1c 01 00 callq 434d80 0.00 : 42313e: 85 c0 test %eax,%eax 0.00 : 423140: 75 3a jne 42317c 0.00 : 423142: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423146: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42314b: e8 30 1c 01 00 callq 434d80 0.00 : 423150: 85 c0 test %eax,%eax 0.00 : 423152: 75 28 jne 42317c : pg_strcasecmp(prev2_wd, "ALTER") == 0)) : { : static const char *const list_COLUMNALTER[] = : {"TYPE", "SET", "RESET", "DROP", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNALTER); 0.00 : 423154: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423158: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42315d: 48 c7 05 20 7e 24 00 movq $0x456ce0,0x247e20(%rip) # 66af88 0.00 : 423164: e0 6c 45 00 0.00 : 423168: c6 05 39 7e 24 00 00 movb $0x0,0x247e39(%rip) # 66afa8 0.00 : 42316f: e8 5c 06 fe ff callq 4037d0 0.00 : 423174: 48 89 c3 mov %rax,%rbx : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_constraint_of_table); : } : /* ALTER TABLE ALTER [COLUMN] */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423177: e9 76 ee ff ff jmpq 421ff2 : {"TYPE", "SET", "RESET", "DROP", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNALTER); : } : /* ALTER TABLE ALTER [COLUMN] SET */ : else if (((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42317c: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423180: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423185: e8 f6 1b 01 00 callq 434d80 0.00 : 42318a: 85 c0 test %eax,%eax 0.00 : 42318c: 75 16 jne 4231a4 0.00 : 42318e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423192: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 423197: e8 e4 1b 01 00 callq 434d80 0.00 : 42319c: 85 c0 test %eax,%eax 0.00 : 42319e: 0f 84 0e 13 00 00 je 4244b2 0.00 : 4231a4: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4231a8: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4231ad: e8 ce 1b 01 00 callq 434d80 0.00 : 4231b2: 85 c0 test %eax,%eax 0.00 : 4231b4: 0f 84 e2 12 00 00 je 42449c : {"(", "DEFAULT", "NOT NULL", "STATISTICS", "STORAGE", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSET); : } : /* ALTER TABLE ALTER [COLUMN] SET ( */ : else if (((pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4231ba: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4231be: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4231c3: e8 b8 1b 01 00 callq 434d80 0.00 : 4231c8: 85 c0 test %eax,%eax 0.00 : 4231ca: 75 12 jne 4231de 0.00 : 4231cc: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4231d0: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 4231d5: e8 a6 1b 01 00 callq 434d80 0.00 : 4231da: 85 c0 test %eax,%eax 0.00 : 4231dc: 74 12 je 4231f0 0.00 : 4231de: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4231e2: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4231e7: e8 94 1b 01 00 callq 434d80 0.00 : 4231ec: 85 c0 test %eax,%eax 0.00 : 4231ee: 75 16 jne 423206 0.00 : 4231f0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4231f4: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 4231f9: e8 82 1b 01 00 callq 434d80 0.00 : 4231fe: 85 c0 test %eax,%eax 0.00 : 423200: 0f 84 28 13 00 00 je 42452e : {"n_distinct", "n_distinct_inherited", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNOPTIONS); : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : else if (((pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423206: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42320a: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42320f: e8 6c 1b 01 00 callq 434d80 0.00 : 423214: 85 c0 test %eax,%eax 0.00 : 423216: 75 12 jne 42322a 0.00 : 423218: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42321c: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 423221: e8 5a 1b 01 00 callq 434d80 0.00 : 423226: 85 c0 test %eax,%eax 0.00 : 423228: 74 12 je 42323c 0.00 : 42322a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42322e: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423233: e8 48 1b 01 00 callq 434d80 0.00 : 423238: 85 c0 test %eax,%eax 0.00 : 42323a: 75 16 jne 423252 0.00 : 42323c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423240: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 423245: e8 36 1b 01 00 callq 434d80 0.00 : 42324a: 85 c0 test %eax,%eax 0.00 : 42324c: 0f 84 9e 12 00 00 je 4244f0 : {"PLAIN", "EXTERNAL", "EXTENDED", "MAIN", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSTORAGE); : } : /* ALTER TABLE ALTER [COLUMN] DROP */ : else if (((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423252: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423256: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42325b: e8 20 1b 01 00 callq 434d80 0.00 : 423260: 85 c0 test %eax,%eax 0.00 : 423262: 75 16 jne 42327a 0.00 : 423264: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423268: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 42326d: e8 0e 1b 01 00 callq 434d80 0.00 : 423272: 85 c0 test %eax,%eax 0.00 : 423274: 0f 84 a0 08 00 00 je 423b1a 0.00 : 42327a: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42327e: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423283: e8 f8 1a 01 00 callq 434d80 0.00 : 423288: 85 c0 test %eax,%eax 0.00 : 42328a: 0f 84 74 08 00 00 je 423b04 : static const char *const list_COLUMNDROP[] = : {"DEFAULT", "NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNDROP); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 423290: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423294: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423299: e8 e2 1a 01 00 callq 434d80 0.00 : 42329e: 85 c0 test %eax,%eax 0.00 : 4232a0: 75 16 jne 4232b8 0.00 : 4232a2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4232a6: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 4232ab: e8 d0 1a 01 00 callq 434d80 0.00 : 4232b0: 85 c0 test %eax,%eax 0.00 : 4232b2: 0f 84 b4 12 00 00 je 42456c : pg_strcasecmp(prev_wd, "CLUSTER") == 0) : COMPLETE_WITH_CONST("ON"); : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 4232b8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4232bc: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4232c1: e8 ba 1a 01 00 callq 434d80 0.00 : 4232c6: 85 c0 test %eax,%eax 0.00 : 4232c8: 75 16 jne 4232e0 0.00 : 4232ca: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4232ce: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 4232d3: e8 a8 1a 01 00 callq 434d80 0.00 : 4232d8: 85 c0 test %eax,%eax 0.00 : 4232da: 0f 84 78 08 00 00 je 423b58 : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_index_of_table); : } : /* If we have TABLE SET, provide list of attributes and '(' */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 4232e0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4232e4: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4232e9: e8 92 1a 01 00 callq 434d80 0.00 : 4232ee: 85 c0 test %eax,%eax 0.00 : 4232f0: 75 16 jne 423308 0.00 : 4232f2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4232f6: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 4232fb: e8 80 1a 01 00 callq 434d80 0.00 : 423300: 85 c0 test %eax,%eax 0.00 : 423302: 0f 84 92 08 00 00 je 423b9a : {"(", "LOGGED", "SCHEMA", "TABLESPACE", "UNLOGGED", "WITH", "WITHOUT", NULL}; : : COMPLETE_WITH_LIST(list_TABLESET); : } : /* If we have TABLE SET TABLESPACE provide a list of tablespaces */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423308: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42330c: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423311: e8 6a 1a 01 00 callq 434d80 0.00 : 423316: 85 c0 test %eax,%eax 0.00 : 423318: 75 16 jne 423330 0.00 : 42331a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42331e: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 423323: e8 58 1a 01 00 callq 434d80 0.00 : 423328: 85 c0 test %eax,%eax 0.00 : 42332a: 0f 84 92 08 00 00 je 423bc2 : pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev_wd, "TABLESPACE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); : /* If we have TABLE SET WITHOUT provide CLUSTER or OIDS */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423330: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423334: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423339: e8 42 1a 01 00 callq 434d80 0.00 : 42333e: 85 c0 test %eax,%eax 0.00 : 423340: 75 16 jne 423358 0.00 : 423342: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423346: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42334b: e8 30 1a 01 00 callq 434d80 0.00 : 423350: 85 c0 test %eax,%eax 0.00 : 423352: 0f 84 a1 08 00 00 je 423bf9 : {"CLUSTER", "OIDS", NULL}; : : COMPLETE_WITH_LIST(list_TABLESET2); : } : /* ALTER TABLE RESET */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 423358: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42335c: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423361: e8 1a 1a 01 00 callq 434d80 0.00 : 423366: 85 c0 test %eax,%eax 0.00 : 423368: 75 16 jne 423380 0.00 : 42336a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42336e: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 423373: e8 08 1a 01 00 callq 434d80 0.00 : 423378: 85 c0 test %eax,%eax 0.00 : 42337a: 0f 84 b7 08 00 00 je 423c37 : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER TABLE SET|RESET ( */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423380: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423384: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423389: e8 f2 19 01 00 callq 434d80 0.00 : 42338e: 85 c0 test %eax,%eax 0.00 : 423390: 75 3a jne 4233cc 0.00 : 423392: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423396: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42339b: e8 e0 19 01 00 callq 434d80 0.00 : 4233a0: 85 c0 test %eax,%eax 0.00 : 4233a2: 74 12 je 4233b6 0.00 : 4233a4: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4233a8: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 4233ad: e8 ce 19 01 00 callq 434d80 0.00 : 4233b2: 85 c0 test %eax,%eax 0.00 : 4233b4: 75 16 jne 4233cc 0.00 : 4233b6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4233ba: be 83 87 44 00 mov $0x448783,%esi 0.00 : 4233bf: e8 bc 19 01 00 callq 434d80 0.00 : 4233c4: 85 c0 test %eax,%eax 0.00 : 4233c6: 0f 84 93 08 00 00 je 423c5f : NULL : }; : : COMPLETE_WITH_LIST(list_TABLEOPTIONS); : } : else if (pg_strcasecmp(prev4_wd, "REPLICA") == 0 && 0.00 : 4233cc: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4233d0: be e9 0f 45 00 mov $0x450fe9,%esi 0.00 : 4233d5: e8 a6 19 01 00 callq 434d80 0.00 : 4233da: 85 c0 test %eax,%eax 0.00 : 4233dc: 75 16 jne 4233f4 0.00 : 4233de: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4233e2: be 6d 8d 44 00 mov $0x448d6d,%esi 0.00 : 4233e7: e8 94 19 01 00 callq 434d80 0.00 : 4233ec: 85 c0 test %eax,%eax 0.00 : 4233ee: 0f 84 93 08 00 00 je 423c87 : pg_strcasecmp(prev_wd, "INDEX") == 0) : { : completion_info_charp = prev5_wd; : COMPLETE_WITH_QUERY(Query_for_index_of_table); : } : else if (pg_strcasecmp(prev5_wd, "TABLE") == 0 && 0.00 : 4233f4: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4233f8: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4233fd: e8 7e 19 01 00 callq 434d80 0.00 : 423402: 85 c0 test %eax,%eax 0.00 : 423404: 75 16 jne 42341c 0.00 : 423406: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42340a: be e9 0f 45 00 mov $0x450fe9,%esi 0.00 : 42340f: e8 6c 19 01 00 callq 434d80 0.00 : 423414: 85 c0 test %eax,%eax 0.00 : 423416: 0f 84 c3 08 00 00 je 423cdf : pg_strcasecmp(prev2_wd, "IDENTITY") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : COMPLETE_WITH_CONST("INDEX"); : } : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 42341c: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423420: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 423425: e8 56 19 01 00 callq 434d80 0.00 : 42342a: 85 c0 test %eax,%eax 0.00 : 42342c: 75 16 jne 423444 0.00 : 42342e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423432: be e9 0f 45 00 mov $0x450fe9,%esi 0.00 : 423437: e8 44 19 01 00 callq 434d80 0.00 : 42343c: 85 c0 test %eax,%eax 0.00 : 42343e: 0f 84 ef 08 00 00 je 423d33 : static const char *const list_REPLICAID[] = : {"FULL", "NOTHING", "DEFAULT", "USING", NULL}; : : COMPLETE_WITH_LIST(list_REPLICAID); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 423444: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423448: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 42344d: e8 2e 19 01 00 callq 434d80 0.00 : 423452: 85 c0 test %eax,%eax 0.00 : 423454: 75 16 jne 42346c 0.00 : 423456: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42345a: be e9 0f 45 00 mov $0x450fe9,%esi 0.00 : 42345f: e8 1c 19 01 00 callq 434d80 0.00 : 423464: 85 c0 test %eax,%eax 0.00 : 423466: 0f 84 05 09 00 00 je 423d71 : { : COMPLETE_WITH_CONST("IDENTITY"); : } : : /* ALTER TABLESPACE with RENAME TO, OWNER TO, SET, RESET */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42346c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423470: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423475: e8 06 19 01 00 callq 434d80 0.00 : 42347a: 85 c0 test %eax,%eax 0.00 : 42347c: 75 16 jne 423494 0.00 : 42347e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423482: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 423487: e8 f4 18 01 00 callq 434d80 0.00 : 42348c: 85 c0 test %eax,%eax 0.00 : 42348e: 0f 84 05 09 00 00 je 423d99 : {"RENAME TO", "OWNER TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTSPC); : } : /* ALTER TABLESPACE SET|RESET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423494: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423498: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42349d: e8 de 18 01 00 callq 434d80 0.00 : 4234a2: 85 c0 test %eax,%eax 0.00 : 4234a4: 75 16 jne 4234bc 0.00 : 4234a6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4234aa: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 4234af: e8 cc 18 01 00 callq 434d80 0.00 : 4234b4: 85 c0 test %eax,%eax 0.00 : 4234b6: 0f 84 05 09 00 00 je 423dc1 : pg_strcasecmp(prev3_wd, "TABLESPACE") == 0 && : (pg_strcasecmp(prev_wd, "SET") == 0 || : pg_strcasecmp(prev_wd, "RESET") == 0)) : COMPLETE_WITH_CONST("("); : /* ALTER TABLESPACE SET|RESET ( */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4234bc: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4234c0: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4234c5: e8 b6 18 01 00 callq 434d80 0.00 : 4234ca: 85 c0 test %eax,%eax 0.00 : 4234cc: 75 16 jne 4234e4 0.00 : 4234ce: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4234d2: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 4234d7: e8 a4 18 01 00 callq 434d80 0.00 : 4234dc: 85 c0 test %eax,%eax 0.00 : 4234de: 0f 84 2d 09 00 00 je 423e11 : : COMPLETE_WITH_LIST(list_TABLESPACEOPTIONS); : } : : /* ALTER TEXT SEARCH */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4234e4: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4234e8: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4234ed: e8 8e 18 01 00 callq 434d80 0.00 : 4234f2: 85 c0 test %eax,%eax 0.00 : 4234f4: 75 16 jne 42350c 0.00 : 4234f6: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4234fa: be 14 10 45 00 mov $0x451014,%esi 0.00 : 4234ff: e8 7c 18 01 00 callq 434d80 0.00 : 423504: 85 c0 test %eax,%eax 0.00 : 423506: 0f 84 6b 09 00 00 je 423e77 : static const char *const list_ALTERTEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 42350c: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 423510: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423515: e8 66 18 01 00 callq 434d80 0.00 : 42351a: 85 c0 test %eax,%eax 0.00 : 42351c: 75 16 jne 423534 0.00 : 42351e: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423522: be 14 10 45 00 mov $0x451014,%esi 0.00 : 423527: e8 54 18 01 00 callq 434d80 0.00 : 42352c: 85 c0 test %eax,%eax 0.00 : 42352e: 0f 84 81 09 00 00 je 423eb5 : {"RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH2); : } : : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423534: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 423538: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42353d: e8 3e 18 01 00 callq 434d80 0.00 : 423542: 85 c0 test %eax,%eax 0.00 : 423544: 75 16 jne 42355c 0.00 : 423546: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42354a: be 14 10 45 00 mov $0x451014,%esi 0.00 : 42354f: e8 2c 18 01 00 callq 434d80 0.00 : 423554: 85 c0 test %eax,%eax 0.00 : 423556: 0f 84 bf 09 00 00 je 423f1b : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH3); : } : : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 42355c: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 423560: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423565: e8 16 18 01 00 callq 434d80 0.00 : 42356a: 85 c0 test %eax,%eax 0.00 : 42356c: 75 16 jne 423584 0.00 : 42356e: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423572: be 14 10 45 00 mov $0x451014,%esi 0.00 : 423577: e8 04 18 01 00 callq 434d80 0.00 : 42357c: 85 c0 test %eax,%eax 0.00 : 42357e: 0f 84 f1 02 00 00 je 423875 : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH4); : } : : /* complete ALTER TYPE with actions */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423584: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423588: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42358d: e8 ee 17 01 00 callq 434d80 0.00 : 423592: 85 c0 test %eax,%eax 0.00 : 423594: 75 16 jne 4235ac 0.00 : 423596: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42359a: be e2 bf 43 00 mov $0x43bfe2,%esi 0.00 : 42359f: e8 dc 17 01 00 callq 434d80 0.00 : 4235a4: 85 c0 test %eax,%eax 0.00 : 4235a6: 0f 84 f2 04 00 00 je 423a9e : "OWNER TO", "RENAME", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* complete ALTER TYPE ADD with actions */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4235ac: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4235b0: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4235b5: e8 c6 17 01 00 callq 434d80 0.00 : 4235ba: 85 c0 test %eax,%eax 0.00 : 4235bc: 75 16 jne 4235d4 0.00 : 4235be: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4235c2: be e2 bf 43 00 mov $0x43bfe2,%esi 0.00 : 4235c7: e8 b4 17 01 00 callq 434d80 0.00 : 4235cc: 85 c0 test %eax,%eax 0.00 : 4235ce: 0f 84 4e 04 00 00 je 423a22 : {"ATTRIBUTE", "VALUE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* ALTER TYPE RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4235d4: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4235d8: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4235dd: e8 9e 17 01 00 callq 434d80 0.00 : 4235e2: 85 c0 test %eax,%eax 0.00 : 4235e4: 75 16 jne 4235fc 0.00 : 4235e6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4235ea: be e2 bf 43 00 mov $0x43bfe2,%esi 0.00 : 4235ef: e8 8c 17 01 00 callq 434d80 0.00 : 4235f4: 85 c0 test %eax,%eax 0.00 : 4235f6: 0f 84 64 04 00 00 je 423a60 : {"ATTRIBUTE", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* ALTER TYPE xxx RENAME ATTRIBUTE yyy */ : else if (pg_strcasecmp(prev5_wd, "TYPE") == 0 && 0.00 : 4235fc: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 423600: be e2 bf 43 00 mov $0x43bfe2,%esi 0.00 : 423605: e8 76 17 01 00 callq 434d80 0.00 : 42360a: 85 c0 test %eax,%eax 0.00 : 42360c: 75 16 jne 423624 0.00 : 42360e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423612: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 423617: e8 64 17 01 00 callq 434d80 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:1940 16.67 : 42361c: 85 c0 test %eax,%eax 0.00 : 42361e: 0f 84 a5 02 00 00 je 4238c9 : : /* : * If we have TYPE ALTER/DROP/RENAME ATTRIBUTE, provide list of : * attributes : */ : else if (pg_strcasecmp(prev4_wd, "TYPE") == 0 && 0.00 : 423624: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 423628: be e2 bf 43 00 mov $0x43bfe2,%esi 0.00 : 42362d: e8 4e 17 01 00 callq 434d80 0.00 : 423632: 85 c0 test %eax,%eax 0.00 : 423634: 75 3e jne 423674 0.00 : 423636: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42363a: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42363f: e8 3c 17 01 00 callq 434d80 0.00 : 423644: 85 c0 test %eax,%eax 0.00 : 423646: 74 16 je 42365e 0.00 : 423648: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42364c: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 423651: e8 2a 17 01 00 callq 434d80 0.00 : 423656: 85 c0 test %eax,%eax 0.00 : 423658: 0f 85 a9 02 00 00 jne 423907 0.00 : 42365e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423662: be dd 17 45 00 mov $0x4517dd,%esi 0.00 : 423667: e8 14 17 01 00 callq 434d80 0.00 : 42366c: 85 c0 test %eax,%eax 0.00 : 42366e: 0f 84 ae 02 00 00 je 423922 : pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "ATTRIBUTE") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); : /* ALTER TYPE ALTER ATTRIBUTE */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423674: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423678: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42367d: e8 fe 16 01 00 callq 434d80 0.00 : 423682: 85 c0 test %eax,%eax 0.00 : 423684: 75 16 jne 42369c 0.00 : 423686: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42368a: be dd 17 45 00 mov $0x4517dd,%esi 0.00 : 42368f: e8 ec 16 01 00 callq 434d80 0.00 : 423694: 85 c0 test %eax,%eax 0.00 : 423696: 0f 84 46 03 00 00 je 4239e2 : pg_strcasecmp(prev2_wd, "ATTRIBUTE") == 0)) : { : COMPLETE_WITH_CONST("TYPE"); : } : /* complete ALTER GROUP */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42369c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4236a0: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4236a5: e8 d6 16 01 00 callq 434d80 0.00 : 4236aa: 85 c0 test %eax,%eax 0.00 : 4236ac: 75 16 jne 4236c4 0.00 : 4236ae: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4236b2: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 4236b7: e8 c4 16 01 00 callq 434d80 0.00 : 4236bc: 85 c0 test %eax,%eax 0.00 : 4236be: 0f 84 c4 00 00 00 je 423788 : {"ADD USER", "DROP USER", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERGROUP); : } : /* complete ALTER GROUP ADD|DROP with USER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4236c4: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4236c8: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4236cd: e8 ae 16 01 00 callq 434d80 0.00 : 4236d2: 85 c0 test %eax,%eax 0.00 : 4236d4: 75 16 jne 4236ec 0.00 : 4236d6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4236da: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 4236df: e8 9c 16 01 00 callq 434d80 0.00 : 4236e4: 85 c0 test %eax,%eax 0.00 : 4236e6: 0f 84 c4 00 00 00 je 4237b0 : pg_strcasecmp(prev3_wd, "GROUP") == 0 && : (pg_strcasecmp(prev_wd, "ADD") == 0 || : pg_strcasecmp(prev_wd, "DROP") == 0)) : COMPLETE_WITH_CONST("USER"); : /* complete {ALTER} GROUP ADD|DROP USER with a user name */ : else if (pg_strcasecmp(prev4_wd, "GROUP") == 0 && 0.00 : 4236ec: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4236f0: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 4236f5: e8 86 16 01 00 callq 434d80 0.00 : 4236fa: 85 c0 test %eax,%eax 0.00 : 4236fc: 75 3a jne 423738 0.00 : 4236fe: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423702: be 27 10 45 00 mov $0x451027,%esi 0.00 : 423707: e8 74 16 01 00 callq 434d80 0.00 : 42370c: 85 c0 test %eax,%eax 0.00 : 42370e: 74 12 je 423722 0.00 : 423710: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423714: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 423719: e8 62 16 01 00 callq 434d80 0.00 : 42371e: 85 c0 test %eax,%eax 0.00 : 423720: 75 16 jne 423738 0.00 : 423722: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423726: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 42372b: e8 50 16 01 00 callq 434d80 0.00 : 423730: 85 c0 test %eax,%eax 0.00 : 423732: 0f 84 c8 00 00 00 je 423800 : pg_strcasecmp(prev2_wd, "DROP") == 0) && : pg_strcasecmp(prev_wd, "USER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* BEGIN, END, ABORT */ : else if (pg_strcasecmp(prev_wd, "BEGIN") == 0 || 0.00 : 423738: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42373c: be 98 56 43 00 mov $0x435698,%esi 0.00 : 423741: e8 3a 16 01 00 callq 434d80 0.00 : 423746: 85 c0 test %eax,%eax 0.00 : 423748: 74 16 je 423760 0.00 : 42374a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42374e: be 02 c5 43 00 mov $0x43c502,%esi 0.00 : 423753: e8 28 16 01 00 callq 434d80 0.00 : 423758: 85 c0 test %eax,%eax 0.00 : 42375a: 0f 85 c1 00 00 00 jne 423821 : pg_strcasecmp(prev_wd, "ABORT") == 0) : { : static const char *const list_TRANS[] = : {"WORK", "TRANSACTION", NULL}; : : COMPLETE_WITH_LIST(list_TRANS); 0.00 : 423760: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423764: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423769: 48 c7 05 14 78 24 00 movq $0x4568c0,0x247814(%rip) # 66af88 0.00 : 423770: c0 68 45 00 0.00 : 423774: c6 05 2d 78 24 00 00 movb $0x0,0x24782d(%rip) # 66afa8 0.00 : 42377b: e8 50 00 fe ff callq 4037d0 0.00 : 423780: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "DROP") == 0) && : pg_strcasecmp(prev_wd, "USER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* BEGIN, END, ABORT */ : else if (pg_strcasecmp(prev_wd, "BEGIN") == 0 || 0.00 : 423783: e9 6a e8 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "GROUP") == 0) : { : static const char *const list_ALTERGROUP[] = : {"ADD USER", "DROP USER", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERGROUP); 0.00 : 423788: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42378c: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423791: 48 c7 05 ec 77 24 00 movq $0x4568e0,0x2477ec(%rip) # 66af88 0.00 : 423798: e0 68 45 00 0.00 : 42379c: c6 05 05 78 24 00 00 movb $0x0,0x247805(%rip) # 66afa8 0.00 : 4237a3: e8 28 00 fe ff callq 4037d0 0.00 : 4237a8: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "ATTRIBUTE") == 0)) : { : COMPLETE_WITH_CONST("TYPE"); : } : /* complete ALTER GROUP */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4237ab: e9 42 e8 ff ff jmpq 421ff2 : {"ADD USER", "DROP USER", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERGROUP); : } : /* complete ALTER GROUP ADD|DROP with USER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4237b0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4237b4: be 27 10 45 00 mov $0x451027,%esi 0.00 : 4237b9: e8 c2 15 01 00 callq 434d80 0.00 : 4237be: 85 c0 test %eax,%eax 0.00 : 4237c0: 74 16 je 4237d8 0.00 : 4237c2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4237c6: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 4237cb: e8 b0 15 01 00 callq 434d80 0.00 : 4237d0: 85 c0 test %eax,%eax 0.00 : 4237d2: 0f 85 14 ff ff ff jne 4236ec : pg_strcasecmp(prev3_wd, "GROUP") == 0 && : (pg_strcasecmp(prev_wd, "ADD") == 0 || : pg_strcasecmp(prev_wd, "DROP") == 0)) : COMPLETE_WITH_CONST("USER"); 0.00 : 4237d8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4237dc: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4237e1: 48 c7 05 94 77 24 00 movq $0x4517d4,0x247794(%rip) # 66af80 0.00 : 4237e8: d4 17 45 00 0.00 : 4237ec: c6 05 b5 77 24 00 00 movb $0x0,0x2477b5(%rip) # 66afa8 0.00 : 4237f3: e8 d8 ff fd ff callq 4037d0 0.00 : 4237f8: 48 89 c3 mov %rax,%rbx : {"ADD USER", "DROP USER", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERGROUP); : } : /* complete ALTER GROUP ADD|DROP with USER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4237fb: e9 f2 e7 ff ff jmpq 421ff2 : /* complete {ALTER} GROUP ADD|DROP USER with a user name */ : else if (pg_strcasecmp(prev4_wd, "GROUP") == 0 && : (pg_strcasecmp(prev2_wd, "ADD") == 0 || : pg_strcasecmp(prev2_wd, "DROP") == 0) && : pg_strcasecmp(prev_wd, "USER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 423800: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423804: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 423809: 48 c7 05 6c 77 24 00 movq $0x451b48,0x24776c(%rip) # 66af80 0.00 : 423810: 48 1b 45 00 0.00 : 423814: e8 b7 ff fd ff callq 4037d0 0.00 : 423819: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "GROUP") == 0 && : (pg_strcasecmp(prev_wd, "ADD") == 0 || : pg_strcasecmp(prev_wd, "DROP") == 0)) : COMPLETE_WITH_CONST("USER"); : /* complete {ALTER} GROUP ADD|DROP USER with a user name */ : else if (pg_strcasecmp(prev4_wd, "GROUP") == 0 && 0.00 : 42381c: e9 d1 e7 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "DROP") == 0) && : pg_strcasecmp(prev_wd, "USER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* BEGIN, END, ABORT */ : else if (pg_strcasecmp(prev_wd, "BEGIN") == 0 || 0.00 : 423821: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423825: be ee b8 43 00 mov $0x43b8ee,%esi 0.00 : 42382a: e8 51 15 01 00 callq 434d80 0.00 : 42382f: 85 c0 test %eax,%eax 0.00 : 423831: 0f 84 29 ff ff ff je 423760 : {"WORK", "TRANSACTION", NULL}; : : COMPLETE_WITH_LIST(list_TRANS); : } : /* COMMIT */ : else if (pg_strcasecmp(prev_wd, "COMMIT") == 0) 0.00 : 423837: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42383b: be 9c 66 44 00 mov $0x44669c,%esi 0.00 : 423840: e8 3b 15 01 00 callq 434d80 0.00 : 423845: 85 c0 test %eax,%eax 0.00 : 423847: 0f 85 79 02 00 00 jne 423ac6 : { : static const char *const list_COMMIT[] = : {"WORK", "TRANSACTION", "PREPARED", NULL}; : : COMPLETE_WITH_LIST(list_COMMIT); 0.00 : 42384d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423851: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423856: 48 c7 05 27 77 24 00 movq $0x4568a0,0x247727(%rip) # 66af88 0.00 : 42385d: a0 68 45 00 0.00 : 423861: c6 05 40 77 24 00 00 movb $0x0,0x247740(%rip) # 66afa8 0.00 : 423868: e8 63 ff fd ff callq 4037d0 0.00 : 42386d: 48 89 c3 mov %rax,%rbx 0.00 : 423870: e9 7d e7 ff ff jmpq 421ff2 : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH3); : } : : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423875: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423879: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 42387e: e8 fd 14 01 00 callq 434d80 0.00 : 423883: 85 c0 test %eax,%eax 0.00 : 423885: 0f 85 f9 fc ff ff jne 423584 0.00 : 42388b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42388f: be 19 10 45 00 mov $0x451019,%esi 0.00 : 423894: e8 e7 14 01 00 callq 434d80 0.00 : 423899: 85 c0 test %eax,%eax 0.00 : 42389b: 0f 85 e3 fc ff ff jne 423584 : pg_strcasecmp(prev2_wd, "CONFIGURATION") == 0) : { : static const char *const list_ALTERTEXTSEARCH4[] = : {"ADD MAPPING FOR", "ALTER MAPPING", "DROP MAPPING FOR", "OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH4); 0.00 : 4238a1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4238a5: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4238aa: 48 c7 05 d3 76 24 00 movq $0x456980,0x2476d3(%rip) # 66af88 0.00 : 4238b1: 80 69 45 00 0.00 : 4238b5: c6 05 ec 76 24 00 00 movb $0x0,0x2476ec(%rip) # 66afa8 0.00 : 4238bc: e8 0f ff fd ff callq 4037d0 0.00 : 4238c1: 48 89 c3 mov %rax,%rbx : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH3); : } : : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4238c4: e9 29 e7 ff ff jmpq 421ff2 : {"ATTRIBUTE", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* ALTER TYPE xxx RENAME ATTRIBUTE yyy */ : else if (pg_strcasecmp(prev5_wd, "TYPE") == 0 && 0.00 : 4238c9: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4238cd: be dd 17 45 00 mov $0x4517dd,%esi 0.00 : 4238d2: e8 a9 14 01 00 callq 434d80 0.00 : 4238d7: 85 c0 test %eax,%eax 0.00 : 4238d9: 0f 85 45 fd ff ff jne 423624 : pg_strcasecmp(prev3_wd, "RENAME") == 0 && : pg_strcasecmp(prev2_wd, "ATTRIBUTE") == 0) : COMPLETE_WITH_CONST("TO"); 0.00 : 4238df: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4238e3: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4238e8: 48 c7 05 8d 76 24 00 movq $0x450fe6,0x24768d(%rip) # 66af80 0.00 : 4238ef: e6 0f 45 00 0.00 : 4238f3: c6 05 ae 76 24 00 00 movb $0x0,0x2476ae(%rip) # 66afa8 0.00 : 4238fa: e8 d1 fe fd ff callq 4037d0 0.00 : 4238ff: 48 89 c3 mov %rax,%rbx : {"ATTRIBUTE", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* ALTER TYPE xxx RENAME ATTRIBUTE yyy */ : else if (pg_strcasecmp(prev5_wd, "TYPE") == 0 && 0.00 : 423902: e9 eb e6 ff ff jmpq 421ff2 : : /* : * If we have TYPE ALTER/DROP/RENAME ATTRIBUTE, provide list of : * attributes : */ : else if (pg_strcasecmp(prev4_wd, "TYPE") == 0 && 0.00 : 423907: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42390b: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 423910: e8 6b 14 01 00 callq 434d80 0.00 : 423915: 85 c0 test %eax,%eax 0.00 : 423917: 0f 85 57 fd ff ff jne 423674 0.00 : 42391d: e9 3c fd ff ff jmpq 42365e : (pg_strcasecmp(prev2_wd, "ALTER") == 0 || : pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "ATTRIBUTE") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 423922: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423926: 8b 05 7c 77 24 00 mov 0x24777c(%rip),%eax # 66b0a8 0.00 : 42392c: 45 31 c9 xor %r9d,%r9d 0.00 : 42392f: 45 31 c0 xor %r8d,%r8d 0.00 : 423932: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 423937: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42393c: be 33 64 44 00 mov $0x446433,%esi 0.00 : 423941: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 423948: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42394c: e8 ef 94 fe ff callq 40ce40 0.00 : 423951: 48 89 c3 mov %rax,%rbx 0.00 : 423954: 8b 05 4e 77 24 00 mov 0x24774e(%rip),%eax # 66b0a8 0.00 : 42395a: 45 31 c9 xor %r9d,%r9d 0.00 : 42395d: 45 31 c0 xor %r8d,%r8d 0.00 : 423960: 31 ff xor %edi,%edi 0.00 : 423962: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 423967: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42396c: be 33 64 44 00 mov $0x446433,%esi 0.00 : 423971: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 423978: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42397c: e8 bf 94 fe ff callq 40ce40 0.00 : 423981: 8b 05 21 77 24 00 mov 0x247721(%rip),%eax # 66b0a8 0.00 : 423987: 45 31 c9 xor %r9d,%r9d 0.00 : 42398a: 45 31 c0 xor %r8d,%r8d 0.00 : 42398d: 31 ff xor %edi,%edi 0.00 : 42398f: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 423994: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 423999: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42399e: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4239a5: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4239a9: e8 92 94 fe ff callq 40ce40 0.00 : 4239ae: 48 85 c0 test %rax,%rax 0.00 : 4239b1: 74 57 je 423a0a 0.00 : 4239b3: 48 c7 05 c2 75 24 00 movq $0x452d68,0x2475c2(%rip) # 66af80 0.00 : 4239ba: 68 2d 45 00 0.00 : 4239be: 48 89 05 cb 75 24 00 mov %rax,0x2475cb(%rip) # 66af90 0.00 : 4239c5: 48 89 1d cc 75 24 00 mov %rbx,0x2475cc(%rip) # 66af98 0.00 : 4239cc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4239d0: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4239d5: e8 f6 fd fd ff callq 4037d0 0.00 : 4239da: 48 89 c3 mov %rax,%rbx : : /* : * If we have TYPE ALTER/DROP/RENAME ATTRIBUTE, provide list of : * attributes : */ : else if (pg_strcasecmp(prev4_wd, "TYPE") == 0 && 0.00 : 4239dd: e9 10 e6 ff ff jmpq 421ff2 : COMPLETE_WITH_ATTR(prev3_wd, ""); : /* ALTER TYPE ALTER ATTRIBUTE */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 && : pg_strcasecmp(prev2_wd, "ATTRIBUTE") == 0)) : { : COMPLETE_WITH_CONST("TYPE"); 0.00 : 4239e2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4239e6: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4239eb: 48 c7 05 8a 75 24 00 movq $0x43bfe2,0x24758a(%rip) # 66af80 0.00 : 4239f2: e2 bf 43 00 0.00 : 4239f6: c6 05 ab 75 24 00 00 movb $0x0,0x2475ab(%rip) # 66afa8 0.00 : 4239fd: e8 ce fd fd ff callq 4037d0 0.00 : 423a02: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "ATTRIBUTE") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); : /* ALTER TYPE ALTER ATTRIBUTE */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423a05: e9 e8 e5 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev4_wd, "TYPE") == 0 && : (pg_strcasecmp(prev2_wd, "ALTER") == 0 || : pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "ATTRIBUTE") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 423a0a: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 423a0e: 48 c7 05 67 75 24 00 movq $0x452c00,0x247567(%rip) # 66af80 0.00 : 423a15: 00 2c 45 00 0.00 : 423a19: 48 89 05 70 75 24 00 mov %rax,0x247570(%rip) # 66af90 0.00 : 423a20: eb aa jmp 4239cc : "OWNER TO", "RENAME", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* complete ALTER TYPE ADD with actions */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423a22: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423a26: be 27 10 45 00 mov $0x451027,%esi 0.00 : 423a2b: e8 50 13 01 00 callq 434d80 0.00 : 423a30: 85 c0 test %eax,%eax 0.00 : 423a32: 0f 85 9c fb ff ff jne 4235d4 : pg_strcasecmp(prev_wd, "ADD") == 0) : { : static const char *const list_ALTERTYPE[] = : {"ATTRIBUTE", "VALUE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); 0.00 : 423a38: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423a3c: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423a41: 48 c7 05 3c 75 24 00 movq $0x456920,0x24753c(%rip) # 66af88 0.00 : 423a48: 20 69 45 00 0.00 : 423a4c: c6 05 55 75 24 00 00 movb $0x0,0x247555(%rip) # 66afa8 0.00 : 423a53: e8 78 fd fd ff callq 4037d0 0.00 : 423a58: 48 89 c3 mov %rax,%rbx : "OWNER TO", "RENAME", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* complete ALTER TYPE ADD with actions */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423a5b: e9 92 e5 ff ff jmpq 421ff2 : {"ATTRIBUTE", "VALUE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* ALTER TYPE RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423a60: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423a64: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 423a69: e8 12 13 01 00 callq 434d80 0.00 : 423a6e: 85 c0 test %eax,%eax 0.00 : 423a70: 0f 85 86 fb ff ff jne 4235fc : pg_strcasecmp(prev_wd, "RENAME") == 0) : { : static const char *const list_ALTERTYPE[] = : {"ATTRIBUTE", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); 0.00 : 423a76: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423a7a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423a7f: 48 c7 05 fe 74 24 00 movq $0x456900,0x2474fe(%rip) # 66af88 0.00 : 423a86: 00 69 45 00 0.00 : 423a8a: c6 05 17 75 24 00 00 movb $0x0,0x247517(%rip) # 66afa8 0.00 : 423a91: e8 3a fd fd ff callq 4037d0 0.00 : 423a96: 48 89 c3 mov %rax,%rbx : {"ATTRIBUTE", "VALUE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); : } : /* ALTER TYPE RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423a99: e9 54 e5 ff ff jmpq 421ff2 : { : static const char *const list_ALTERTYPE[] = : {"ADD ATTRIBUTE", "ADD VALUE", "ALTER ATTRIBUTE", "DROP ATTRIBUTE", : "OWNER TO", "RENAME", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTYPE); 0.00 : 423a9e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423aa2: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423aa7: 48 c7 05 d6 74 24 00 movq $0x456940,0x2474d6(%rip) # 66af88 0.00 : 423aae: 40 69 45 00 0.00 : 423ab2: c6 05 ef 74 24 00 00 movb $0x0,0x2474ef(%rip) # 66afa8 0.00 : 423ab9: e8 12 fd fd ff callq 4037d0 0.00 : 423abe: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH4); : } : : /* complete ALTER TYPE with actions */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423ac1: e9 2c e5 ff ff jmpq 421ff2 : {"WORK", "TRANSACTION", "PREPARED", NULL}; : : COMPLETE_WITH_LIST(list_COMMIT); : } : /* RELEASE SAVEPOINT */ : else if (pg_strcasecmp(prev_wd, "RELEASE") == 0) 0.00 : 423ac6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423aca: be d1 69 43 00 mov $0x4369d1,%esi 0.00 : 423acf: e8 ac 12 01 00 callq 434d80 0.00 : 423ad4: 85 c0 test %eax,%eax 0.00 : 423ad6: 0f 85 b8 0a 00 00 jne 424594 : COMPLETE_WITH_CONST("SAVEPOINT"); 0.00 : 423adc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423ae0: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 423ae5: 48 c7 05 90 74 24 00 movq $0x43c670,0x247490(%rip) # 66af80 0.00 : 423aec: 70 c6 43 00 0.00 : 423af0: c6 05 b1 74 24 00 00 movb $0x0,0x2474b1(%rip) # 66afa8 0.00 : 423af7: e8 d4 fc fd ff callq 4037d0 0.00 : 423afc: 48 89 c3 mov %rax,%rbx 0.00 : 423aff: e9 ee e4 ff ff jmpq 421ff2 : {"PLAIN", "EXTERNAL", "EXTENDED", "MAIN", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSTORAGE); : } : /* ALTER TABLE ALTER [COLUMN] DROP */ : else if (((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423b04: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423b08: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423b0d: e8 6e 12 01 00 callq 434d80 0.00 : 423b12: 85 c0 test %eax,%eax 0.00 : 423b14: 0f 85 76 f7 ff ff jne 423290 0.00 : 423b1a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423b1e: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 423b23: e8 58 12 01 00 callq 434d80 0.00 : 423b28: 85 c0 test %eax,%eax 0.00 : 423b2a: 0f 85 60 f7 ff ff jne 423290 : pg_strcasecmp(prev_wd, "DROP") == 0) : { : static const char *const list_COLUMNDROP[] = : {"DEFAULT", "NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNDROP); 0.00 : 423b30: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423b34: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423b39: 48 c7 05 44 74 24 00 movq $0x456c20,0x247444(%rip) # 66af88 0.00 : 423b40: 20 6c 45 00 0.00 : 423b44: c6 05 5d 74 24 00 00 movb $0x0,0x24745d(%rip) # 66afa8 0.00 : 423b4b: e8 80 fc fd ff callq 4037d0 0.00 : 423b50: 48 89 c3 mov %rax,%rbx : {"PLAIN", "EXTERNAL", "EXTENDED", "MAIN", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSTORAGE); : } : /* ALTER TABLE ALTER [COLUMN] DROP */ : else if (((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423b53: e9 9a e4 ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(list_COLUMNDROP); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "CLUSTER") == 0) : COMPLETE_WITH_CONST("ON"); : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423b58: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423b5c: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 423b61: e8 1a 12 01 00 callq 434d80 0.00 : 423b66: 85 c0 test %eax,%eax 0.00 : 423b68: 0f 85 72 f7 ff ff jne 4232e0 : pg_strcasecmp(prev2_wd, "CLUSTER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 423b6e: 48 8b 45 b0 mov -0x50(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 423b72: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423b76: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 423b7b: 48 c7 05 fa 73 24 00 movq $0x453030,0x2473fa(%rip) # 66af80 0.00 : 423b82: 30 30 45 00 : COMPLETE_WITH_CONST("ON"); : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "CLUSTER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 423b86: 48 89 05 03 74 24 00 mov %rax,0x247403(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 423b8d: e8 3e fc fd ff callq 4037d0 0.00 : 423b92: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST(list_COLUMNDROP); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "CLUSTER") == 0) : COMPLETE_WITH_CONST("ON"); : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423b95: e9 58 e4 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "SET") == 0) : { : static const char *const list_TABLESET[] = : {"(", "LOGGED", "SCHEMA", "TABLESPACE", "UNLOGGED", "WITH", "WITHOUT", NULL}; : : COMPLETE_WITH_LIST(list_TABLESET); 0.00 : 423b9a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423b9e: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423ba3: 48 c7 05 da 73 24 00 movq $0x456be0,0x2473da(%rip) # 66af88 0.00 : 423baa: e0 6b 45 00 0.00 : 423bae: c6 05 f3 73 24 00 00 movb $0x0,0x2473f3(%rip) # 66afa8 0.00 : 423bb5: e8 16 fc fd ff callq 4037d0 0.00 : 423bba: 48 89 c3 mov %rax,%rbx : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_index_of_table); : } : /* If we have TABLE SET, provide list of attributes and '(' */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 423bbd: e9 30 e4 ff ff jmpq 421ff2 : {"(", "LOGGED", "SCHEMA", "TABLESPACE", "UNLOGGED", "WITH", "WITHOUT", NULL}; : : COMPLETE_WITH_LIST(list_TABLESET); : } : /* If we have TABLE SET TABLESPACE provide a list of tablespaces */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423bc2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423bc6: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 423bcb: e8 b0 11 01 00 callq 434d80 0.00 : 423bd0: 85 c0 test %eax,%eax 0.00 : 423bd2: 0f 85 58 f7 ff ff jne 423330 : pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev_wd, "TABLESPACE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); 0.00 : 423bd8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423bdc: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 423be1: 48 c7 05 94 73 24 00 movq $0x453168,0x247394(%rip) # 66af80 0.00 : 423be8: 68 31 45 00 0.00 : 423bec: e8 df fb fd ff callq 4037d0 0.00 : 423bf1: 48 89 c3 mov %rax,%rbx : {"(", "LOGGED", "SCHEMA", "TABLESPACE", "UNLOGGED", "WITH", "WITHOUT", NULL}; : : COMPLETE_WITH_LIST(list_TABLESET); : } : /* If we have TABLE SET TABLESPACE provide a list of tablespaces */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423bf4: e9 f9 e3 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev_wd, "TABLESPACE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); : /* If we have TABLE SET WITHOUT provide CLUSTER or OIDS */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423bf9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423bfd: be 0c 10 45 00 mov $0x45100c,%esi 0.00 : 423c02: e8 79 11 01 00 callq 434d80 0.00 : 423c07: 85 c0 test %eax,%eax 0.00 : 423c09: 0f 85 49 f7 ff ff jne 423358 : pg_strcasecmp(prev_wd, "WITHOUT") == 0) : { : static const char *const list_TABLESET2[] = : {"CLUSTER", "OIDS", NULL}; : : COMPLETE_WITH_LIST(list_TABLESET2); 0.00 : 423c0f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423c13: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423c18: 48 c7 05 65 73 24 00 movq $0x456bc0,0x247365(%rip) # 66af88 0.00 : 423c1f: c0 6b 45 00 0.00 : 423c23: c6 05 7e 73 24 00 00 movb $0x0,0x24737e(%rip) # 66afa8 0.00 : 423c2a: e8 a1 fb fd ff callq 4037d0 0.00 : 423c2f: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev_wd, "TABLESPACE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); : /* If we have TABLE SET WITHOUT provide CLUSTER or OIDS */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423c32: e9 bb e3 ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(list_TABLESET2); : } : /* ALTER TABLE RESET */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 423c37: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423c3b: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 423c40: 48 c7 05 35 73 24 00 movq $0x448783,0x247335(%rip) # 66af80 0.00 : 423c47: 83 87 44 00 0.00 : 423c4b: c6 05 56 73 24 00 00 movb $0x0,0x247356(%rip) # 66afa8 0.00 : 423c52: e8 79 fb fd ff callq 4037d0 0.00 : 423c57: 48 89 c3 mov %rax,%rbx : {"CLUSTER", "OIDS", NULL}; : : COMPLETE_WITH_LIST(list_TABLESET2); : } : /* ALTER TABLE RESET */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 423c5a: e9 93 e3 ff ff jmpq 421ff2 : "toast.autovacuum_vacuum_threshold", : "user_catalog_table", : NULL : }; : : COMPLETE_WITH_LIST(list_TABLEOPTIONS); 0.00 : 423c5f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423c63: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423c68: 48 c7 05 15 73 24 00 movq $0x456ae0,0x247315(%rip) # 66af88 0.00 : 423c6f: e0 6a 45 00 0.00 : 423c73: c6 05 2e 73 24 00 00 movb $0x0,0x24732e(%rip) # 66afa8 0.00 : 423c7a: e8 51 fb fd ff callq 4037d0 0.00 : 423c7f: 48 89 c3 mov %rax,%rbx : /* ALTER TABLE RESET */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER TABLE SET|RESET ( */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423c82: e9 6b e3 ff ff jmpq 421ff2 : NULL : }; : : COMPLETE_WITH_LIST(list_TABLEOPTIONS); : } : else if (pg_strcasecmp(prev4_wd, "REPLICA") == 0 && 0.00 : 423c87: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423c8b: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 423c90: e8 eb 10 01 00 callq 434d80 0.00 : 423c95: 85 c0 test %eax,%eax 0.00 : 423c97: 0f 85 57 f7 ff ff jne 4233f4 0.00 : 423c9d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423ca1: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 423ca6: e8 d5 10 01 00 callq 434d80 0.00 : 423cab: 85 c0 test %eax,%eax 0.00 : 423cad: 0f 85 41 f7 ff ff jne 4233f4 : pg_strcasecmp(prev3_wd, "IDENTITY") == 0 && : pg_strcasecmp(prev2_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "INDEX") == 0) : { : completion_info_charp = prev5_wd; 0.00 : 423cb3: 48 8b 45 c0 mov -0x40(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 423cb7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423cbb: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 423cc0: 48 c7 05 b5 72 24 00 movq $0x453030,0x2472b5(%rip) # 66af80 0.00 : 423cc7: 30 30 45 00 : else if (pg_strcasecmp(prev4_wd, "REPLICA") == 0 && : pg_strcasecmp(prev3_wd, "IDENTITY") == 0 && : pg_strcasecmp(prev2_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "INDEX") == 0) : { : completion_info_charp = prev5_wd; 0.00 : 423ccb: 48 89 05 be 72 24 00 mov %rax,0x2472be(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 423cd2: e8 f9 fa fd ff callq 4037d0 0.00 : 423cd7: 48 89 c3 mov %rax,%rbx : NULL : }; : : COMPLETE_WITH_LIST(list_TABLEOPTIONS); : } : else if (pg_strcasecmp(prev4_wd, "REPLICA") == 0 && 0.00 : 423cda: e9 13 e3 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "INDEX") == 0) : { : completion_info_charp = prev5_wd; : COMPLETE_WITH_QUERY(Query_for_index_of_table); : } : else if (pg_strcasecmp(prev5_wd, "TABLE") == 0 && 0.00 : 423cdf: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423ce3: be 6d 8d 44 00 mov $0x448d6d,%esi 0.00 : 423ce8: e8 93 10 01 00 callq 434d80 0.00 : 423ced: 85 c0 test %eax,%eax 0.00 : 423cef: 0f 85 27 f7 ff ff jne 42341c 0.00 : 423cf5: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423cf9: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 423cfe: e8 7d 10 01 00 callq 434d80 0.00 : 423d03: 85 c0 test %eax,%eax 0.00 : 423d05: 0f 85 11 f7 ff ff jne 42341c : pg_strcasecmp(prev3_wd, "REPLICA") == 0 && : pg_strcasecmp(prev2_wd, "IDENTITY") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : COMPLETE_WITH_CONST("INDEX"); 0.00 : 423d0b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423d0f: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 423d14: 48 c7 05 61 72 24 00 movq $0x43bd9f,0x247261(%rip) # 66af80 0.00 : 423d1b: 9f bd 43 00 0.00 : 423d1f: c6 05 82 72 24 00 00 movb $0x0,0x247282(%rip) # 66afa8 0.00 : 423d26: e8 a5 fa fd ff callq 4037d0 0.00 : 423d2b: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "INDEX") == 0) : { : completion_info_charp = prev5_wd; : COMPLETE_WITH_QUERY(Query_for_index_of_table); : } : else if (pg_strcasecmp(prev5_wd, "TABLE") == 0 && 0.00 : 423d2e: e9 bf e2 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "IDENTITY") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : COMPLETE_WITH_CONST("INDEX"); : } : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423d33: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423d37: be 6d 8d 44 00 mov $0x448d6d,%esi 0.00 : 423d3c: e8 3f 10 01 00 callq 434d80 0.00 : 423d41: 85 c0 test %eax,%eax 0.00 : 423d43: 0f 85 fb f6 ff ff jne 423444 : pg_strcasecmp(prev_wd, "IDENTITY") == 0) : { : static const char *const list_REPLICAID[] = : {"FULL", "NOTHING", "DEFAULT", "USING", NULL}; : : COMPLETE_WITH_LIST(list_REPLICAID); 0.00 : 423d49: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423d4d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423d52: 48 c7 05 2b 72 24 00 movq $0x456aa0,0x24722b(%rip) # 66af88 0.00 : 423d59: a0 6a 45 00 0.00 : 423d5d: c6 05 44 72 24 00 00 movb $0x0,0x247244(%rip) # 66afa8 0.00 : 423d64: e8 67 fa fd ff callq 4037d0 0.00 : 423d69: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "IDENTITY") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : COMPLETE_WITH_CONST("INDEX"); : } : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 423d6c: e9 81 e2 ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(list_REPLICAID); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "REPLICA") == 0) : { : COMPLETE_WITH_CONST("IDENTITY"); 0.00 : 423d71: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423d75: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 423d7a: 48 c7 05 fb 71 24 00 movq $0x448d6d,0x2471fb(%rip) # 66af80 0.00 : 423d81: 6d 8d 44 00 0.00 : 423d85: c6 05 1c 72 24 00 00 movb $0x0,0x24721c(%rip) # 66afa8 0.00 : 423d8c: e8 3f fa fd ff callq 4037d0 0.00 : 423d91: 48 89 c3 mov %rax,%rbx : static const char *const list_REPLICAID[] = : {"FULL", "NOTHING", "DEFAULT", "USING", NULL}; : : COMPLETE_WITH_LIST(list_REPLICAID); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 423d94: e9 59 e2 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "TABLESPACE") == 0) : { : static const char *const list_ALTERTSPC[] = : {"RENAME TO", "OWNER TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTSPC); 0.00 : 423d99: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423d9d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423da2: 48 c7 05 db 71 24 00 movq $0x456a60,0x2471db(%rip) # 66af88 0.00 : 423da9: 60 6a 45 00 0.00 : 423dad: c6 05 f4 71 24 00 00 movb $0x0,0x2471f4(%rip) # 66afa8 0.00 : 423db4: e8 17 fa fd ff callq 4037d0 0.00 : 423db9: 48 89 c3 mov %rax,%rbx : { : COMPLETE_WITH_CONST("IDENTITY"); : } : : /* ALTER TABLESPACE with RENAME TO, OWNER TO, SET, RESET */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423dbc: e9 31 e2 ff ff jmpq 421ff2 : {"RENAME TO", "OWNER TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTSPC); : } : /* ALTER TABLESPACE SET|RESET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423dc1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423dc5: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 423dca: e8 b1 0f 01 00 callq 434d80 0.00 : 423dcf: 85 c0 test %eax,%eax 0.00 : 423dd1: 74 16 je 423de9 0.00 : 423dd3: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423dd7: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 423ddc: e8 9f 0f 01 00 callq 434d80 0.00 : 423de1: 85 c0 test %eax,%eax 0.00 : 423de3: 0f 85 d3 f6 ff ff jne 4234bc : pg_strcasecmp(prev3_wd, "TABLESPACE") == 0 && : (pg_strcasecmp(prev_wd, "SET") == 0 || : pg_strcasecmp(prev_wd, "RESET") == 0)) : COMPLETE_WITH_CONST("("); 0.00 : 423de9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423ded: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 423df2: 48 c7 05 83 71 24 00 movq $0x448783,0x247183(%rip) # 66af80 0.00 : 423df9: 83 87 44 00 0.00 : 423dfd: c6 05 a4 71 24 00 00 movb $0x0,0x2471a4(%rip) # 66afa8 0.00 : 423e04: e8 c7 f9 fd ff callq 4037d0 0.00 : 423e09: 48 89 c3 mov %rax,%rbx : {"RENAME TO", "OWNER TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTSPC); : } : /* ALTER TABLESPACE SET|RESET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423e0c: e9 e1 e1 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "TABLESPACE") == 0 && : (pg_strcasecmp(prev_wd, "SET") == 0 || : pg_strcasecmp(prev_wd, "RESET") == 0)) : COMPLETE_WITH_CONST("("); : /* ALTER TABLESPACE SET|RESET ( */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423e11: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423e15: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 423e1a: e8 61 0f 01 00 callq 434d80 0.00 : 423e1f: 85 c0 test %eax,%eax 0.00 : 423e21: 74 16 je 423e39 0.00 : 423e23: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423e27: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 423e2c: e8 4f 0f 01 00 callq 434d80 0.00 : 423e31: 85 c0 test %eax,%eax 0.00 : 423e33: 0f 85 ab f6 ff ff jne 4234e4 0.00 : 423e39: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423e3d: be 83 87 44 00 mov $0x448783,%esi 0.00 : 423e42: e8 39 0f 01 00 callq 434d80 0.00 : 423e47: 85 c0 test %eax,%eax 0.00 : 423e49: 0f 85 95 f6 ff ff jne 4234e4 : pg_strcasecmp(prev_wd, "(") == 0) : { : static const char *const list_TABLESPACEOPTIONS[] = : {"seq_page_cost", "random_page_cost", NULL}; : : COMPLETE_WITH_LIST(list_TABLESPACEOPTIONS); 0.00 : 423e4f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423e53: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423e58: 48 c7 05 25 71 24 00 movq $0x456a30,0x247125(%rip) # 66af88 0.00 : 423e5f: 30 6a 45 00 0.00 : 423e63: c6 05 3e 71 24 00 00 movb $0x0,0x24713e(%rip) # 66afa8 0.00 : 423e6a: e8 61 f9 fd ff callq 4037d0 0.00 : 423e6f: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "TABLESPACE") == 0 && : (pg_strcasecmp(prev_wd, "SET") == 0 || : pg_strcasecmp(prev_wd, "RESET") == 0)) : COMPLETE_WITH_CONST("("); : /* ALTER TABLESPACE SET|RESET ( */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423e72: e9 7b e1 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_TABLESPACEOPTIONS); : } : : /* ALTER TEXT SEARCH */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423e77: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423e7b: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 423e80: e8 fb 0e 01 00 callq 434d80 0.00 : 423e85: 85 c0 test %eax,%eax 0.00 : 423e87: 0f 85 7f f6 ff ff jne 42350c : pg_strcasecmp(prev_wd, "SEARCH") == 0) : { : static const char *const list_ALTERTEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH); 0.00 : 423e8d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423e91: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423e96: 48 c7 05 e7 70 24 00 movq $0x456a00,0x2470e7(%rip) # 66af88 0.00 : 423e9d: 00 6a 45 00 0.00 : 423ea1: c6 05 00 71 24 00 00 movb $0x0,0x247100(%rip) # 66afa8 0.00 : 423ea8: e8 23 f9 fd ff callq 4037d0 0.00 : 423ead: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_TABLESPACEOPTIONS); : } : : /* ALTER TEXT SEARCH */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 423eb0: e9 3d e1 ff ff jmpq 421ff2 : static const char *const list_ALTERTEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423eb5: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423eb9: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 423ebe: e8 bd 0e 01 00 callq 434d80 0.00 : 423ec3: 85 c0 test %eax,%eax 0.00 : 423ec5: 0f 85 69 f6 ff ff jne 423534 0.00 : 423ecb: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423ecf: be ae bf 43 00 mov $0x43bfae,%esi 0.00 : 423ed4: e8 a7 0e 01 00 callq 434d80 0.00 : 423ed9: 85 c0 test %eax,%eax 0.00 : 423edb: 74 16 je 423ef3 0.00 : 423edd: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423ee1: be 94 bf 43 00 mov $0x43bf94,%esi 0.00 : 423ee6: e8 95 0e 01 00 callq 434d80 0.00 : 423eeb: 85 c0 test %eax,%eax 0.00 : 423eed: 0f 85 41 f6 ff ff jne 423534 : pg_strcasecmp(prev2_wd, "PARSER") == 0)) : { : static const char *const list_ALTERTEXTSEARCH2[] = : {"RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH2); 0.00 : 423ef3: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423ef7: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423efc: 48 c7 05 81 70 24 00 movq $0x4569e0,0x247081(%rip) # 66af88 0.00 : 423f03: e0 69 45 00 0.00 : 423f07: c6 05 9a 70 24 00 00 movb $0x0,0x24709a(%rip) # 66afa8 0.00 : 423f0e: e8 bd f8 fd ff callq 4037d0 0.00 : 423f13: 48 89 c3 mov %rax,%rbx : static const char *const list_ALTERTEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423f16: e9 d7 e0 ff ff jmpq 421ff2 : {"RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH2); : } : : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423f1b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 423f1f: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 423f24: e8 57 0e 01 00 callq 434d80 0.00 : 423f29: 85 c0 test %eax,%eax 0.00 : 423f2b: 0f 85 2b f6 ff ff jne 42355c 0.00 : 423f31: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423f35: be 76 bf 43 00 mov $0x43bf76,%esi 0.00 : 423f3a: e8 41 0e 01 00 callq 434d80 0.00 : 423f3f: 85 c0 test %eax,%eax 0.00 : 423f41: 0f 85 15 f6 ff ff jne 42355c : pg_strcasecmp(prev2_wd, "DICTIONARY") == 0) : { : static const char *const list_ALTERTEXTSEARCH3[] = : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH3); 0.00 : 423f47: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 423f4b: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 423f50: 48 c7 05 2d 70 24 00 movq $0x4569c0,0x24702d(%rip) # 66af88 0.00 : 423f57: c0 69 45 00 0.00 : 423f5b: c6 05 46 70 24 00 00 movb $0x0,0x247046(%rip) # 66afa8 0.00 : 423f62: e8 69 f8 fd ff callq 4037d0 0.00 : 423f67: 48 89 c3 mov %rax,%rbx : {"RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH2); : } : : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 423f6a: e9 83 e0 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_DISABLERLS); : } : : /* ALTER TABLE xxx ALTER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 423f6f: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 423f73: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 423f78: e8 03 0e 01 00 callq 434d80 0.00 : 423f7d: 85 c0 test %eax,%eax 0.00 : 423f7f: 0f 85 4b f0 ff ff jne 422fd0 : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "ALTER") == 0) : COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN'"); 0.00 : 423f85: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 423f89: 8b 05 19 71 24 00 mov 0x247119(%rip),%eax # 66b0a8 0.00 : 423f8f: 45 31 c9 xor %r9d,%r9d 0.00 : 423f92: 45 31 c0 xor %r8d,%r8d 0.00 : 423f95: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 423f9a: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 423f9f: be 33 64 44 00 mov $0x446433,%esi 0.00 : 423fa4: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 423fab: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 423faf: e8 8c 8e fe ff callq 40ce40 0.00 : 423fb4: 48 89 c3 mov %rax,%rbx 0.00 : 423fb7: 8b 05 eb 70 24 00 mov 0x2470eb(%rip),%eax # 66b0a8 0.00 : 423fbd: 45 31 c9 xor %r9d,%r9d 0.00 : 423fc0: 45 31 c0 xor %r8d,%r8d 0.00 : 423fc3: 31 ff xor %edi,%edi 0.00 : 423fc5: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 423fca: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 423fcf: be 33 64 44 00 mov $0x446433,%esi 0.00 : 423fd4: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 423fdb: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 423fdf: e8 5c 8e fe ff callq 40ce40 0.00 : 423fe4: 8b 05 be 70 24 00 mov 0x2470be(%rip),%eax # 66b0a8 0.00 : 423fea: 45 31 c9 xor %r9d,%r9d 0.00 : 423fed: 45 31 c0 xor %r8d,%r8d 0.00 : 423ff0: 31 ff xor %edi,%edi 0.00 : 423ff2: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 423ff7: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 423ffc: be 33 64 44 00 mov $0x446433,%esi 0.00 : 424001: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 424008: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42400c: e8 2f 8e fe ff callq 40ce40 0.00 : 424011: 48 85 c0 test %rax,%rax 0.00 : 424014: 0f 84 05 01 00 00 je 42411f 0.00 : 42401a: 48 c7 05 5b 6f 24 00 movq $0x452668,0x246f5b(%rip) # 66af80 0.00 : 424021: 68 26 45 00 0.00 : 424025: 48 89 05 64 6f 24 00 mov %rax,0x246f64(%rip) # 66af90 0.00 : 42402c: 48 89 1d 65 6f 24 00 mov %rbx,0x246f65(%rip) # 66af98 0.00 : 424033: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424037: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42403c: e8 8f f7 fd ff callq 4037d0 0.00 : 424041: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_DISABLERLS); : } : : /* ALTER TABLE xxx ALTER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424044: e9 a9 df ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "ALTER") == 0) : COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN'"); : : /* ALTER TABLE xxx RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424049: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42404d: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 424052: e8 29 0d 01 00 callq 434d80 0.00 : 424057: 85 c0 test %eax,%eax 0.00 : 424059: 0f 85 99 ef ff ff jne 422ff8 : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "RENAME") == 0) : COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN' UNION SELECT 'CONSTRAINT' UNION SELECT 'TO'"); 0.00 : 42405f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424063: 8b 05 3f 70 24 00 mov 0x24703f(%rip),%eax # 66b0a8 0.00 : 424069: 45 31 c9 xor %r9d,%r9d 0.00 : 42406c: 45 31 c0 xor %r8d,%r8d 0.00 : 42406f: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 424074: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 424079: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42407e: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 424085: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 424089: e8 b2 8d fe ff callq 40ce40 0.00 : 42408e: 48 89 c3 mov %rax,%rbx 0.00 : 424091: 8b 05 11 70 24 00 mov 0x247011(%rip),%eax # 66b0a8 0.00 : 424097: 45 31 c9 xor %r9d,%r9d 0.00 : 42409a: 45 31 c0 xor %r8d,%r8d 0.00 : 42409d: 31 ff xor %edi,%edi 0.00 : 42409f: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 4240a4: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4240a9: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4240ae: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4240b5: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4240b9: e8 82 8d fe ff callq 40ce40 0.00 : 4240be: 8b 05 e4 6f 24 00 mov 0x246fe4(%rip),%eax # 66b0a8 0.00 : 4240c4: 45 31 c9 xor %r9d,%r9d 0.00 : 4240c7: 45 31 c0 xor %r8d,%r8d 0.00 : 4240ca: 31 ff xor %edi,%edi 0.00 : 4240cc: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 4240d1: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4240d6: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4240db: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4240e2: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4240e6: e8 55 8d fe ff callq 40ce40 0.00 : 4240eb: 48 85 c0 test %rax,%rax 0.00 : 4240ee: 74 4a je 42413a 0.00 : 4240f0: 48 c7 05 85 6e 24 00 movq $0x4529f0,0x246e85(%rip) # 66af80 0.00 : 4240f7: f0 29 45 00 0.00 : 4240fb: 48 89 05 8e 6e 24 00 mov %rax,0x246e8e(%rip) # 66af90 0.00 : 424102: 48 89 1d 8f 6e 24 00 mov %rbx,0x246e8f(%rip) # 66af98 0.00 : 424109: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42410d: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424112: e8 b9 f6 fd ff callq 4037d0 0.00 : 424117: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "ALTER") == 0) : COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN'"); : : /* ALTER TABLE xxx RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42411a: e9 d3 de ff ff jmpq 421ff2 : : /* ALTER TABLE xxx ALTER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "ALTER") == 0) : COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN'"); 0.00 : 42411f: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 424123: 48 c7 05 52 6e 24 00 movq $0x4524e8,0x246e52(%rip) # 66af80 0.00 : 42412a: e8 24 45 00 0.00 : 42412e: 48 89 05 5b 6e 24 00 mov %rax,0x246e5b(%rip) # 66af90 0.00 : 424135: e9 f9 fe ff ff jmpq 424033 : : /* ALTER TABLE xxx RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "RENAME") == 0) : COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN' UNION SELECT 'CONSTRAINT' UNION SELECT 'TO'"); 0.00 : 42413a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 42413e: 48 c7 05 37 6e 24 00 movq $0x452848,0x246e37(%rip) # 66af80 0.00 : 424145: 48 28 45 00 0.00 : 424149: 48 89 05 40 6e 24 00 mov %rax,0x246e40(%rip) # 66af90 0.00 : 424150: eb b7 jmp 424109 : */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && : (pg_strcasecmp(prev2_wd, "ALTER") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "COLUMN") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 424152: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 424156: 8b 05 4c 6f 24 00 mov 0x246f4c(%rip),%eax # 66b0a8 0.00 : 42415c: 45 31 c9 xor %r9d,%r9d 0.00 : 42415f: 45 31 c0 xor %r8d,%r8d 0.00 : 424162: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 424167: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42416c: be 33 64 44 00 mov $0x446433,%esi 0.00 : 424171: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 424178: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42417c: e8 bf 8c fe ff callq 40ce40 0.00 : 424181: 48 89 c3 mov %rax,%rbx 0.00 : 424184: 8b 05 1e 6f 24 00 mov 0x246f1e(%rip),%eax # 66b0a8 0.00 : 42418a: 45 31 c9 xor %r9d,%r9d 0.00 : 42418d: 45 31 c0 xor %r8d,%r8d 0.00 : 424190: 31 ff xor %edi,%edi 0.00 : 424192: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 424197: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42419c: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4241a1: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4241a8: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4241ac: e8 8f 8c fe ff callq 40ce40 0.00 : 4241b1: 8b 05 f1 6e 24 00 mov 0x246ef1(%rip),%eax # 66b0a8 0.00 : 4241b7: 45 31 c9 xor %r9d,%r9d 0.00 : 4241ba: 45 31 c0 xor %r8d,%r8d 0.00 : 4241bd: 31 ff xor %edi,%edi 0.00 : 4241bf: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 4241c4: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4241c9: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4241ce: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4241d5: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4241d9: e8 62 8c fe ff callq 40ce40 0.00 : 4241de: 48 85 c0 test %rax,%rax 0.00 : 4241e1: 0f 84 83 00 00 00 je 42426a 0.00 : 4241e7: 48 c7 05 8e 6d 24 00 movq $0x452d68,0x246d8e(%rip) # 66af80 0.00 : 4241ee: 68 2d 45 00 0.00 : 4241f2: 48 89 05 97 6d 24 00 mov %rax,0x246d97(%rip) # 66af90 0.00 : 4241f9: 48 89 1d 98 6d 24 00 mov %rbx,0x246d98(%rip) # 66af98 0.00 : 424200: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424204: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424209: e8 c2 f5 fd ff callq 4037d0 0.00 : 42420e: 48 89 c3 mov %rax,%rbx : : /* : * If we have TABLE ALTER COLUMN|RENAME COLUMN, provide list of : * columns : */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 424211: e9 dc dd ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "COLUMN") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); : : /* ALTER TABLE xxx RENAME yyy */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 424216: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42421a: be db 19 45 00 mov $0x4519db,%esi 0.00 : 42421f: e8 5c 0b 01 00 callq 434d80 0.00 : 424224: 85 c0 test %eax,%eax 0.00 : 424226: 0f 84 40 ee ff ff je 42306c 0.00 : 42422c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424230: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 424235: e8 46 0b 01 00 callq 434d80 0.00 : 42423a: 85 c0 test %eax,%eax 0.00 : 42423c: 0f 84 2a ee ff ff je 42306c : pg_strcasecmp(prev2_wd, "RENAME") == 0 && : pg_strcasecmp(prev_wd, "CONSTRAINT") != 0 && : pg_strcasecmp(prev_wd, "TO") != 0) : COMPLETE_WITH_CONST("TO"); 0.00 : 424242: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424246: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42424b: 48 c7 05 2a 6d 24 00 movq $0x450fe6,0x246d2a(%rip) # 66af80 0.00 : 424252: e6 0f 45 00 0.00 : 424256: c6 05 4b 6d 24 00 00 movb $0x0,0x246d4b(%rip) # 66afa8 0.00 : 42425d: e8 6e f5 fd ff callq 4037d0 0.00 : 424262: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "COLUMN") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); : : /* ALTER TABLE xxx RENAME yyy */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 424265: e9 88 dd ff ff jmpq 421ff2 : */ : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && : (pg_strcasecmp(prev2_wd, "ALTER") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0) && : pg_strcasecmp(prev_wd, "COLUMN") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 42426a: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 42426e: 48 c7 05 07 6d 24 00 movq $0x452c00,0x246d07(%rip) # 66af80 0.00 : 424275: 00 2c 45 00 0.00 : 424279: 48 89 05 10 6d 24 00 mov %rax,0x246d10(%rip) # 66af90 0.00 : 424280: e9 7b ff ff ff jmpq 424200 : pg_strcasecmp(prev_wd, "CONSTRAINT") != 0 && : pg_strcasecmp(prev_wd, "TO") != 0) : COMPLETE_WITH_CONST("TO"); : : /* ALTER TABLE xxx RENAME COLUMN/CONSTRAINT yyy */ : else if (pg_strcasecmp(prev5_wd, "TABLE") == 0 && 0.00 : 424285: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424289: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 42428e: e8 ed 0a 01 00 callq 434d80 0.00 : 424293: 85 c0 test %eax,%eax 0.00 : 424295: 74 16 je 4242ad 0.00 : 424297: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42429b: be db 19 45 00 mov $0x4519db,%esi 0.00 : 4242a0: e8 db 0a 01 00 callq 434d80 0.00 : 4242a5: 85 c0 test %eax,%eax 0.00 : 4242a7: 0f 85 e7 ed ff ff jne 423094 0.00 : 4242ad: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4242b1: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 4242b6: e8 c5 0a 01 00 callq 434d80 0.00 : 4242bb: 85 c0 test %eax,%eax 0.00 : 4242bd: 0f 84 d1 ed ff ff je 423094 : pg_strcasecmp(prev3_wd, "RENAME") == 0 && : (pg_strcasecmp(prev2_wd, "COLUMN") == 0 || : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) && : pg_strcasecmp(prev_wd, "TO") != 0) : COMPLETE_WITH_CONST("TO"); 0.00 : 4242c3: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4242c7: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4242cc: 48 c7 05 a9 6c 24 00 movq $0x450fe6,0x246ca9(%rip) # 66af80 0.00 : 4242d3: e6 0f 45 00 0.00 : 4242d7: c6 05 ca 6c 24 00 00 movb $0x0,0x246cca(%rip) # 66afa8 0.00 : 4242de: e8 ed f4 fd ff callq 4037d0 0.00 : 4242e3: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "CONSTRAINT") != 0 && : pg_strcasecmp(prev_wd, "TO") != 0) : COMPLETE_WITH_CONST("TO"); : : /* ALTER TABLE xxx RENAME COLUMN/CONSTRAINT yyy */ : else if (pg_strcasecmp(prev5_wd, "TABLE") == 0 && 0.00 : 4242e6: e9 07 dd ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "DROP") == 0) : { : static const char *const list_TABLEDROP[] = : {"COLUMN", "CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_TABLEDROP); 0.00 : 4242eb: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4242ef: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4242f4: 48 c7 05 89 6c 24 00 movq $0x456d10,0x246c89(%rip) # 66af88 0.00 : 4242fb: 10 6d 45 00 0.00 : 4242ff: c6 05 a2 6c 24 00 00 movb $0x0,0x246ca2(%rip) # 66afa8 0.00 : 424306: e8 c5 f4 fd ff callq 4037d0 0.00 : 42430b: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) && : pg_strcasecmp(prev_wd, "TO") != 0) : COMPLETE_WITH_CONST("TO"); : : /* If we have TABLE DROP, provide COLUMN or CONSTRAINT */ : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 42430e: e9 df dc ff ff jmpq 421ff2 : {"COLUMN", "CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_TABLEDROP); : } : /* If we have ALTER TABLE DROP COLUMN, provide list of columns */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424313: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424317: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 42431c: e8 5f 0a 01 00 callq 434d80 0.00 : 424321: 85 c0 test %eax,%eax 0.00 : 424323: 0f 85 bb ed ff ff jne 4230e4 0.00 : 424329: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42432d: be ec 19 45 00 mov $0x4519ec,%esi 0.00 : 424332: e8 49 0a 01 00 callq 434d80 0.00 : 424337: 85 c0 test %eax,%eax 0.00 : 424339: 0f 85 a5 ed ff ff jne 4230e4 : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "COLUMN") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 42433f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 424343: 8b 05 5f 6d 24 00 mov 0x246d5f(%rip),%eax # 66b0a8 0.00 : 424349: 45 31 c9 xor %r9d,%r9d 0.00 : 42434c: 45 31 c0 xor %r8d,%r8d 0.00 : 42434f: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 424354: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 424359: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42435e: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 424365: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 424369: e8 d2 8a fe ff callq 40ce40 0.00 : 42436e: 48 89 c3 mov %rax,%rbx 0.00 : 424371: 8b 05 31 6d 24 00 mov 0x246d31(%rip),%eax # 66b0a8 0.00 : 424377: 45 31 c9 xor %r9d,%r9d 0.00 : 42437a: 45 31 c0 xor %r8d,%r8d 0.00 : 42437d: 31 ff xor %edi,%edi 0.00 : 42437f: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 424384: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 424389: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42438e: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 424395: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 424399: e8 a2 8a fe ff callq 40ce40 0.00 : 42439e: 8b 05 04 6d 24 00 mov 0x246d04(%rip),%eax # 66b0a8 0.00 : 4243a4: 45 31 c9 xor %r9d,%r9d 0.00 : 4243a7: 45 31 c0 xor %r8d,%r8d 0.00 : 4243aa: 31 ff xor %edi,%edi 0.00 : 4243ac: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 4243b1: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4243b6: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4243bb: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4243c2: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4243c6: e8 75 8a fe ff callq 40ce40 0.00 : 4243cb: 48 85 c0 test %rax,%rax 0.00 : 4243ce: 0f 84 95 00 00 00 je 424469 0.00 : 4243d4: 48 c7 05 a1 6b 24 00 movq $0x452d68,0x246ba1(%rip) # 66af80 0.00 : 4243db: 68 2d 45 00 0.00 : 4243df: 48 89 05 aa 6b 24 00 mov %rax,0x246baa(%rip) # 66af90 0.00 : 4243e6: 48 89 1d ab 6b 24 00 mov %rbx,0x246bab(%rip) # 66af98 0.00 : 4243ed: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4243f1: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4243f6: e8 d5 f3 fd ff callq 4037d0 0.00 : 4243fb: 48 89 c3 mov %rax,%rbx : {"COLUMN", "CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_TABLEDROP); : } : /* If we have ALTER TABLE DROP COLUMN, provide list of columns */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4243fe: e9 ef db ff ff jmpq 421ff2 : : /* : * If we have ALTER TABLE DROP|RENAME|VALIDATE CONSTRAINT, provide : * list of constraints : */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424403: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424407: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 42440c: e8 6f 09 01 00 callq 434d80 0.00 : 424411: 85 c0 test %eax,%eax 0.00 : 424413: 74 12 je 424427 0.00 : 424415: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424419: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 42441e: e8 5d 09 01 00 callq 434d80 0.00 : 424423: 85 c0 test %eax,%eax 0.00 : 424425: 75 5d jne 424484 0.00 : 424427: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42442b: be db 19 45 00 mov $0x4519db,%esi 0.00 : 424430: e8 4b 09 01 00 callq 434d80 0.00 : 424435: 85 c0 test %eax,%eax 0.00 : 424437: 0f 85 cf ec ff ff jne 42310c : (pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0 || : pg_strcasecmp(prev2_wd, "VALIDATE") == 0) && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 42443d: 48 8b 45 b0 mov -0x50(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_constraint_of_table); 0.00 : 424441: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424445: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42444a: 48 c7 05 2b 6b 24 00 movq $0x452f30,0x246b2b(%rip) # 66af80 0.00 : 424451: 30 2f 45 00 : (pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0 || : pg_strcasecmp(prev2_wd, "VALIDATE") == 0) && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424455: 48 89 05 34 6b 24 00 mov %rax,0x246b34(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_constraint_of_table); 0.00 : 42445c: e8 6f f3 fd ff callq 4037d0 0.00 : 424461: 48 89 c3 mov %rax,%rbx : : /* : * If we have ALTER TABLE DROP|RENAME|VALIDATE CONSTRAINT, provide : * list of constraints : */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424464: e9 89 db ff ff jmpq 421ff2 : /* If we have ALTER TABLE DROP COLUMN, provide list of columns */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "COLUMN") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 424469: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 42446d: 48 c7 05 08 6b 24 00 movq $0x452c00,0x246b08(%rip) # 66af80 0.00 : 424474: 00 2c 45 00 0.00 : 424478: 48 89 05 11 6b 24 00 mov %rax,0x246b11(%rip) # 66af90 0.00 : 42447f: e9 69 ff ff ff jmpq 4243ed : : /* : * If we have ALTER TABLE DROP|RENAME|VALIDATE CONSTRAINT, provide : * list of constraints : */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424484: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424488: be cd 0f 45 00 mov $0x450fcd,%esi 0.00 : 42448d: e8 ee 08 01 00 callq 434d80 0.00 : 424492: 85 c0 test %eax,%eax 0.00 : 424494: 0f 85 72 ec ff ff jne 42310c 0.00 : 42449a: eb 8b jmp 424427 : {"TYPE", "SET", "RESET", "DROP", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNALTER); : } : /* ALTER TABLE ALTER [COLUMN] SET */ : else if (((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42449c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4244a0: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 4244a5: e8 d6 08 01 00 callq 434d80 0.00 : 4244aa: 85 c0 test %eax,%eax 0.00 : 4244ac: 0f 85 08 ed ff ff jne 4231ba 0.00 : 4244b2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4244b6: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 4244bb: e8 c0 08 01 00 callq 434d80 0.00 : 4244c0: 85 c0 test %eax,%eax 0.00 : 4244c2: 0f 85 f2 ec ff ff jne 4231ba : pg_strcasecmp(prev_wd, "SET") == 0) : { : static const char *const list_COLUMNSET[] = : {"(", "DEFAULT", "NOT NULL", "STATISTICS", "STORAGE", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSET); 0.00 : 4244c8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4244cc: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4244d1: 48 c7 05 ac 6a 24 00 movq $0x456ca0,0x246aac(%rip) # 66af88 0.00 : 4244d8: a0 6c 45 00 0.00 : 4244dc: c6 05 c5 6a 24 00 00 movb $0x0,0x246ac5(%rip) # 66afa8 0.00 : 4244e3: e8 e8 f2 fd ff callq 4037d0 0.00 : 4244e8: 48 89 c3 mov %rax,%rbx : {"TYPE", "SET", "RESET", "DROP", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNALTER); : } : /* ALTER TABLE ALTER [COLUMN] SET */ : else if (((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4244eb: e9 02 db ff ff jmpq 421ff2 : {"n_distinct", "n_distinct_inherited", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNOPTIONS); : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : else if (((pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4244f0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4244f4: be 04 10 45 00 mov $0x451004,%esi 0.00 : 4244f9: e8 82 08 01 00 callq 434d80 0.00 : 4244fe: 85 c0 test %eax,%eax 0.00 : 424500: 0f 85 4c ed ff ff jne 423252 : pg_strcasecmp(prev_wd, "STORAGE") == 0) : { : static const char *const list_COLUMNSTORAGE[] = : {"PLAIN", "EXTERNAL", "EXTENDED", "MAIN", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSTORAGE); 0.00 : 424506: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42450a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42450f: 48 c7 05 6e 6a 24 00 movq $0x456c40,0x246a6e(%rip) # 66af88 0.00 : 424516: 40 6c 45 00 0.00 : 42451a: c6 05 87 6a 24 00 00 movb $0x0,0x246a87(%rip) # 66afa8 0.00 : 424521: e8 aa f2 fd ff callq 4037d0 0.00 : 424526: 48 89 c3 mov %rax,%rbx : {"n_distinct", "n_distinct_inherited", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNOPTIONS); : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : else if (((pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424529: e9 c4 da ff ff jmpq 421ff2 : {"(", "DEFAULT", "NOT NULL", "STATISTICS", "STORAGE", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSET); : } : /* ALTER TABLE ALTER [COLUMN] SET ( */ : else if (((pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 42452e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424532: be 83 87 44 00 mov $0x448783,%esi 0.00 : 424537: e8 44 08 01 00 callq 434d80 0.00 : 42453c: 85 c0 test %eax,%eax 0.00 : 42453e: 0f 85 c2 ec ff ff jne 423206 : pg_strcasecmp(prev_wd, "(") == 0) : { : static const char *const list_COLUMNOPTIONS[] = : {"n_distinct", "n_distinct_inherited", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNOPTIONS); 0.00 : 424544: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424548: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42454d: 48 c7 05 30 6a 24 00 movq $0x456c70,0x246a30(%rip) # 66af88 0.00 : 424554: 70 6c 45 00 0.00 : 424558: c6 05 49 6a 24 00 00 movb $0x0,0x246a49(%rip) # 66afa8 0.00 : 42455f: e8 6c f2 fd ff callq 4037d0 0.00 : 424564: 48 89 c3 mov %rax,%rbx : {"(", "DEFAULT", "NOT NULL", "STATISTICS", "STORAGE", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNSET); : } : /* ALTER TABLE ALTER [COLUMN] SET ( */ : else if (((pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424567: e9 86 da ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_COLUMNDROP); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "CLUSTER") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 42456c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424570: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 424575: 48 c7 05 00 6a 24 00 movq $0x4519c4,0x246a00(%rip) # 66af80 0.00 : 42457c: c4 19 45 00 0.00 : 424580: c6 05 21 6a 24 00 00 movb $0x0,0x246a21(%rip) # 66afa8 0.00 : 424587: e8 44 f2 fd ff callq 4037d0 0.00 : 42458c: 48 89 c3 mov %rax,%rbx : static const char *const list_COLUMNDROP[] = : {"DEFAULT", "NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_COLUMNDROP); : } : else if (pg_strcasecmp(prev3_wd, "TABLE") == 0 && 0.00 : 42458f: e9 5e da ff ff jmpq 421ff2 : } : /* RELEASE SAVEPOINT */ : else if (pg_strcasecmp(prev_wd, "RELEASE") == 0) : COMPLETE_WITH_CONST("SAVEPOINT"); : /* ROLLBACK*/ : else if (pg_strcasecmp(prev_wd, "ROLLBACK") == 0) 0.00 : 424594: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424598: be f3 66 44 00 mov $0x4466f3,%esi 0.00 : 42459d: e8 de 07 01 00 callq 434d80 0.00 : 4245a2: 85 c0 test %eax,%eax 0.00 : 4245a4: 0f 85 96 0f 00 00 jne 425540 : { : static const char *const list_TRANS[] = : {"WORK", "TRANSACTION", "TO SAVEPOINT", "PREPARED", NULL}; : : COMPLETE_WITH_LIST(list_TRANS); 0.00 : 4245aa: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4245ae: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4245b3: 48 c7 05 ca 69 24 00 movq $0x456860,0x2469ca(%rip) # 66af88 0.00 : 4245ba: 60 68 45 00 0.00 : 4245be: c6 05 e3 69 24 00 00 movb $0x0,0x2469e3(%rip) # 66afa8 0.00 : 4245c5: e8 06 f2 fd ff callq 4037d0 0.00 : 4245ca: 48 89 c3 mov %rax,%rbx 0.00 : 4245cd: e9 20 da ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER); : } : : /* ALTER EVENT TRIGGER ENABLE */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4245d2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4245d6: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 4245db: e8 a0 07 01 00 callq 434d80 0.00 : 4245e0: 85 c0 test %eax,%eax 0.00 : 4245e2: 0f 85 8b dd ff ff jne 422373 0.00 : 4245e8: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4245ec: be 87 0f 45 00 mov $0x450f87,%esi 0.00 : 4245f1: e8 8a 07 01 00 callq 434d80 0.00 : 4245f6: 85 c0 test %eax,%eax 0.00 : 4245f8: 0f 85 75 dd ff ff jne 422373 : pg_strcasecmp(prev_wd, "ENABLE") == 0) : { : static const char *const list_ALTER_EVENT_TRIGGER_ENABLE[] = : {"REPLICA", "ALWAYS", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER_ENABLE); 0.00 : 4245fe: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424602: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424607: 48 c7 05 76 69 24 00 movq $0x4573d0,0x246976(%rip) # 66af88 0.00 : 42460e: d0 73 45 00 0.00 : 424612: c6 05 8f 69 24 00 00 movb $0x0,0x24698f(%rip) # 66afa8 0.00 : 424619: e8 b2 f1 fd ff callq 4037d0 0.00 : 42461e: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER); : } : : /* ALTER EVENT TRIGGER ENABLE */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424621: e9 cc d9 ff ff jmpq 421ff2 : "SET SCHEMA", "OWNED BY", "OWNER TO", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSEQUENCE); : } : /* ALTER SEQUENCE NO */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424626: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42462a: be d6 0f 45 00 mov $0x450fd6,%esi 0.00 : 42462f: e8 4c 07 01 00 callq 434d80 0.00 : 424634: 85 c0 test %eax,%eax 0.00 : 424636: 0f 85 94 e4 ff ff jne 422ad0 : pg_strcasecmp(prev_wd, "NO") == 0) : { : static const char *const list_ALTERSEQUENCE2[] = : {"MINVALUE", "MAXVALUE", "CYCLE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSEQUENCE2); 0.00 : 42463c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424640: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424645: 48 c7 05 38 69 24 00 movq $0x456f40,0x246938(%rip) # 66af88 0.00 : 42464c: 40 6f 45 00 0.00 : 424650: c6 05 51 69 24 00 00 movb $0x0,0x246951(%rip) # 66afa8 0.00 : 424657: e8 74 f1 fd ff callq 4037d0 0.00 : 42465c: 48 89 c3 mov %rax,%rbx : "SET SCHEMA", "OWNED BY", "OWNER TO", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSEQUENCE); : } : /* ALTER SEQUENCE NO */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42465f: e9 8e d9 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "SERVER") == 0) : { : static const char *const list_ALTER_SERVER[] = : {"VERSION", "OPTIONS", "OWNER TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_SERVER); 0.00 : 424664: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424668: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42466d: 48 c7 05 10 69 24 00 movq $0x456f20,0x246910(%rip) # 66af88 0.00 : 424674: 20 6f 45 00 0.00 : 424678: c6 05 29 69 24 00 00 movb $0x0,0x246929(%rip) # 66afa8 0.00 : 42467f: e8 4c f1 fd ff callq 4037d0 0.00 : 424684: 48 89 c3 mov %rax,%rbx : {"MINVALUE", "MAXVALUE", "CYCLE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSEQUENCE2); : } : /* ALTER SERVER */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424687: e9 66 d9 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "SYSTEM") == 0) : { : static const char *const list_ALTERSYSTEM[] = : {"SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSYSTEM); 0.00 : 42468c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424690: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424695: 48 c7 05 e8 68 24 00 movq $0x456ef0,0x2468e8(%rip) # 66af88 0.00 : 42469c: f0 6e 45 00 0.00 : 4246a0: c6 05 01 69 24 00 00 movb $0x0,0x246901(%rip) # 66afa8 0.00 : 4246a7: e8 24 f1 fd ff callq 4037d0 0.00 : 4246ac: 48 89 c3 mov %rax,%rbx : {"VERSION", "OPTIONS", "OWNER TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_SERVER); : } : /* ALTER SYSTEM SET, RESET, RESET ALL */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 4246af: e9 3e d9 ff ff jmpq 421ff2 : {"SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSYSTEM); : } : /* ALTER SYSTEM SET|RESET */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4246b4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4246b8: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 4246bd: e8 be 06 01 00 callq 434d80 0.00 : 4246c2: 85 c0 test %eax,%eax 0.00 : 4246c4: 74 16 je 4246dc 0.00 : 4246c6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4246ca: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 4246cf: e8 ac 06 01 00 callq 434d80 0.00 : 4246d4: 85 c0 test %eax,%eax 0.00 : 4246d6: 0f 85 6c e4 ff ff jne 422b48 : pg_strcasecmp(prev2_wd, "SYSTEM") == 0 && : (pg_strcasecmp(prev_wd, "SET") == 0 || : pg_strcasecmp(prev_wd, "RESET") == 0)) : COMPLETE_WITH_QUERY(Query_for_list_of_alter_system_set_vars); 0.00 : 4246dc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4246e0: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4246e5: 48 c7 05 90 68 24 00 movq $0x451fb8,0x246890(%rip) # 66af80 0.00 : 4246ec: b8 1f 45 00 0.00 : 4246f0: e8 db f0 fd ff callq 4037d0 0.00 : 4246f5: 48 89 c3 mov %rax,%rbx : {"SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSYSTEM); : } : /* ALTER SYSTEM SET|RESET */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4246f8: e9 f5 d8 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "VIEW") == 0) : { : static const char *const list_ALTERVIEW[] = : {"ALTER COLUMN", "OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERVIEW); 0.00 : 4246fd: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424701: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424706: 48 c7 05 77 68 24 00 movq $0x456ec0,0x246877(%rip) # 66af88 0.00 : 42470d: c0 6e 45 00 0.00 : 424711: c6 05 90 68 24 00 00 movb $0x0,0x246890(%rip) # 66afa8 0.00 : 424718: e8 b3 f0 fd ff callq 4037d0 0.00 : 42471d: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "SYSTEM") == 0 && : (pg_strcasecmp(prev_wd, "SET") == 0 || : pg_strcasecmp(prev_wd, "RESET") == 0)) : COMPLETE_WITH_QUERY(Query_for_list_of_alter_system_set_vars); : /* ALTER VIEW */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424720: e9 cd d8 ff ff jmpq 421ff2 : {"ALTER COLUMN", "OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERVIEW); : } : /* ALTER MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424725: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424729: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 42472e: e8 4d 06 01 00 callq 434d80 0.00 : 424733: 85 c0 test %eax,%eax 0.00 : 424735: 0f 85 5d e4 ff ff jne 422b98 : pg_strcasecmp(prev2_wd, "VIEW") == 0) : { : static const char *const list_ALTERMATVIEW[] = : {"ALTER COLUMN", "OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERMATVIEW); 0.00 : 42473b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42473f: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424744: 48 c7 05 39 68 24 00 movq $0x456e80,0x246839(%rip) # 66af88 0.00 : 42474b: 80 6e 45 00 0.00 : 42474f: c6 05 52 68 24 00 00 movb $0x0,0x246852(%rip) # 66afa8 0.00 : 424756: e8 75 f0 fd ff callq 4037d0 0.00 : 42475b: 48 89 c3 mov %rax,%rbx : {"ALTER COLUMN", "OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERVIEW); : } : /* ALTER MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42475e: e9 8f d8 ff ff jmpq 421ff2 : } : : /* ALTER POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 424763: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424767: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42476c: 48 c7 05 09 68 24 00 movq $0x4519c4,0x246809(%rip) # 66af80 0.00 : 424773: c4 19 45 00 0.00 : 424777: c6 05 2a 68 24 00 00 movb $0x0,0x24682a(%rip) # 66afa8 0.00 : 42477e: e8 4d f0 fd ff callq 4037d0 0.00 : 424783: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERMATVIEW); : } : : /* ALTER POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424786: e9 67 d8 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* ALTER POLICY ON
*/ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42478b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42478f: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 424794: e8 e7 05 01 00 callq 434d80 0.00 : 424799: 85 c0 test %eax,%eax 0.00 : 42479b: 0f 85 47 e4 ff ff jne 422be8 : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 4247a1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4247a5: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4247aa: 48 c7 05 eb 67 24 00 movq $0x454f40,0x2467eb(%rip) # 66afa0 0.00 : 4247b1: 40 4f 45 00 0.00 : 4247b5: 48 c7 05 c0 67 24 00 movq $0x0,0x2467c0(%rip) # 66af80 0.00 : 4247bc: 00 00 00 00 0.00 : 4247c0: e8 0b f0 fd ff callq 4037d0 0.00 : 4247c5: 48 89 c3 mov %rax,%rbx : /* ALTER POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* ALTER POLICY ON
*/ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4247c8: e9 25 d8 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* ALTER POLICY ON
- show options */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4247cd: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4247d1: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4247d6: e8 a5 05 01 00 callq 434d80 0.00 : 4247db: 85 c0 test %eax,%eax 0.00 : 4247dd: 0f 85 2d e4 ff ff jne 422c10 : pg_strcasecmp(prev2_wd, "ON") == 0) : { : static const char *const list_ALTERPOLICY[] = : {"RENAME TO", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_ALTERPOLICY); 0.00 : 4247e3: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4247e7: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4247ec: 48 c7 05 91 67 24 00 movq $0x456e40,0x246791(%rip) # 66af88 0.00 : 4247f3: 40 6e 45 00 0.00 : 4247f7: c6 05 aa 67 24 00 00 movb $0x0,0x2467aa(%rip) # 66afa8 0.00 : 4247fe: e8 cd ef fd ff callq 4037d0 0.00 : 424803: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* ALTER POLICY ON
- show options */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424806: e9 e7 d7 ff ff jmpq 421ff2 : {"RENAME TO", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_ALTERPOLICY); : } : /* ALTER POLICY ON
TO */ : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 42480b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42480f: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 424814: e8 67 05 01 00 callq 434d80 0.00 : 424819: 85 c0 test %eax,%eax 0.00 : 42481b: 0f 85 17 e4 ff ff jne 422c38 0.00 : 424821: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424825: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 42482a: e8 51 05 01 00 callq 434d80 0.00 : 42482f: 85 c0 test %eax,%eax 0.00 : 424831: 0f 85 01 e4 ff ff jne 422c38 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); 0.00 : 424837: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42483b: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424840: 48 c7 05 35 67 24 00 movq $0x452070,0x246735(%rip) # 66af80 0.00 : 424847: 70 20 45 00 0.00 : 42484b: e8 80 ef fd ff callq 4037d0 0.00 : 424850: 48 89 c3 mov %rax,%rbx : {"RENAME TO", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_ALTERPOLICY); : } : /* ALTER POLICY ON
TO */ : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 424853: e9 9a d7 ff ff jmpq 421ff2 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : /* ALTER POLICY ON
USING ( */ : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 424858: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42485c: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 424861: e8 1a 05 01 00 callq 434d80 0.00 : 424866: 85 c0 test %eax,%eax 0.00 : 424868: 0f 85 f2 e3 ff ff jne 422c60 0.00 : 42486e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424872: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 424877: e8 04 05 01 00 callq 434d80 0.00 : 42487c: 85 c0 test %eax,%eax 0.00 : 42487e: 0f 85 dc e3 ff ff jne 422c60 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 424884: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424888: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42488d: 48 c7 05 e8 66 24 00 movq $0x448783,0x2466e8(%rip) # 66af80 0.00 : 424894: 83 87 44 00 0.00 : 424898: c6 05 09 67 24 00 00 movb $0x0,0x246709(%rip) # 66afa8 0.00 : 42489f: e8 2c ef fd ff callq 4037d0 0.00 : 4248a4: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : /* ALTER POLICY ON
USING ( */ : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 4248a7: e9 46 d7 ff ff jmpq 421ff2 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER POLICY ON
WITH CHECK ( */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 4248ac: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4248b0: be b8 c7 43 00 mov $0x43c7b8,%esi 0.00 : 4248b5: e8 c6 04 01 00 callq 434d80 0.00 : 4248ba: 85 c0 test %eax,%eax 0.00 : 4248bc: 0f 85 c6 e3 ff ff jne 422c88 0.00 : 4248c2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4248c6: be 4e 17 45 00 mov $0x45174e,%esi 0.00 : 4248cb: e8 b0 04 01 00 callq 434d80 0.00 : 4248d0: 85 c0 test %eax,%eax 0.00 : 4248d2: 0f 85 b0 e3 ff ff jne 422c88 : pg_strcasecmp(prev4_wd, "ON") == 0 && : pg_strcasecmp(prev2_wd, "WITH") == 0 && : pg_strcasecmp(prev_wd, "CHECK") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 4248d8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4248dc: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4248e1: 48 c7 05 94 66 24 00 movq $0x448783,0x246694(%rip) # 66af80 0.00 : 4248e8: 83 87 44 00 0.00 : 4248ec: c6 05 b5 66 24 00 00 movb $0x0,0x2466b5(%rip) # 66afa8 0.00 : 4248f3: e8 d8 ee fd ff callq 4037d0 0.00 : 4248f8: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER POLICY ON
WITH CHECK ( */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 4248fb: e9 f2 d6 ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("("); : : /* ALTER RULE , add ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 424900: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424904: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 424909: 48 c7 05 6c 66 24 00 movq $0x4519c4,0x24666c(%rip) # 66af80 0.00 : 424910: c4 19 45 00 0.00 : 424914: c6 05 8d 66 24 00 00 movb $0x0,0x24668d(%rip) # 66afa8 0.00 : 42491b: e8 b0 ee fd ff callq 4037d0 0.00 : 424920: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "WITH") == 0 && : pg_strcasecmp(prev_wd, "CHECK") == 0) : COMPLETE_WITH_CONST("("); : : /* ALTER RULE , add ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424923: e9 ca d6 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("ON"); : : /* If we have ALTER RULE ON, then add the correct tablename */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424928: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42492c: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 424931: e8 4a 04 01 00 callq 434d80 0.00 : 424936: 85 c0 test %eax,%eax 0.00 : 424938: 0f 85 9a e3 ff ff jne 422cd8 : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 42493e: 48 8b 45 a8 mov -0x58(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); 0.00 : 424942: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424946: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42494b: 48 c7 05 2a 66 24 00 movq $0x452110,0x24662a(%rip) # 66af80 0.00 : 424952: 10 21 45 00 : /* If we have ALTER RULE ON, then add the correct tablename */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 424956: 48 89 05 33 66 24 00 mov %rax,0x246633(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); 0.00 : 42495d: e8 6e ee fd ff callq 4037d0 0.00 : 424962: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("ON"); : : /* If we have ALTER RULE ON, then add the correct tablename */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424965: e9 88 d6 ff ff jmpq 421ff2 : } : : /* ALTER RULE ON */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && : pg_strcasecmp(prev4_wd, "RULE") == 0) : COMPLETE_WITH_CONST("RENAME TO"); 0.00 : 42496a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42496e: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 424973: 48 c7 05 02 66 24 00 movq $0x450fdf,0x246602(%rip) # 66af80 0.00 : 42497a: df 0f 45 00 0.00 : 42497e: c6 05 23 66 24 00 00 movb $0x0,0x246623(%rip) # 66afa8 0.00 : 424985: e8 46 ee fd ff callq 4037d0 0.00 : 42498a: 48 89 c3 mov %rax,%rbx : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); : } : : /* ALTER RULE ON */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 42498d: e9 60 d6 ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("RENAME TO"); : : /* ALTER TRIGGER , add ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 424992: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424996: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42499b: 48 c7 05 da 65 24 00 movq $0x4519c4,0x2465da(%rip) # 66af80 0.00 : 4249a2: c4 19 45 00 0.00 : 4249a6: c6 05 fb 65 24 00 00 movb $0x0,0x2465fb(%rip) # 66afa8 0.00 : 4249ad: e8 1e ee fd ff callq 4037d0 0.00 : 4249b2: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && : pg_strcasecmp(prev4_wd, "RULE") == 0) : COMPLETE_WITH_CONST("RENAME TO"); : : /* ALTER TRIGGER , add ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4249b5: e9 38 d6 ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("ON"); : : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && : pg_strcasecmp(prev3_wd, "TRIGGER") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 4249ba: 48 8b 45 a8 mov -0x58(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger); 0.00 : 4249be: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4249c2: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4249c7: 48 c7 05 ae 65 24 00 movq $0x4521f0,0x2465ae(%rip) # 66af80 0.00 : 4249ce: f0 21 45 00 : COMPLETE_WITH_CONST("ON"); : : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && : pg_strcasecmp(prev3_wd, "TRIGGER") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 4249d2: 48 89 05 b7 65 24 00 mov %rax,0x2465b7(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger); 0.00 : 4249d9: e8 f2 ed fd ff callq 4037d0 0.00 : 4249de: 48 89 c3 mov %rax,%rbx : /* ALTER TRIGGER , add ON */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : COMPLETE_WITH_CONST("ON"); : : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4249e1: e9 0c d6 ff ff jmpq 421ff2 : } : : /* : * If we have ALTER TRIGGER ON, then add the correct tablename : */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4249e6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4249ea: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4249ef: e8 8c 03 01 00 callq 434d80 0.00 : 4249f4: 85 c0 test %eax,%eax 0.00 : 4249f6: 0f 85 7c e3 ff ff jne 422d78 : pg_strcasecmp(prev3_wd, "TRIGGER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 4249fc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424a00: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 424a05: 48 c7 05 90 65 24 00 movq $0x454f40,0x246590(%rip) # 66afa0 0.00 : 424a0c: 40 4f 45 00 0.00 : 424a10: 48 c7 05 65 65 24 00 movq $0x0,0x246565(%rip) # 66af80 0.00 : 424a17: 00 00 00 00 0.00 : 424a1b: e8 b0 ed fd ff callq 4037d0 0.00 : 424a20: 48 89 c3 mov %rax,%rbx : } : : /* : * If we have ALTER TRIGGER ON, then add the correct tablename : */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424a23: e9 ca d5 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "TRIGGER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* ALTER TRIGGER ON */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424a28: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424a2c: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 424a31: e8 4a 03 01 00 callq 434d80 0.00 : 424a36: 85 c0 test %eax,%eax 0.00 : 424a38: 0f 85 62 e3 ff ff jne 422da0 : pg_strcasecmp(prev4_wd, "TRIGGER") == 0 && : pg_strcasecmp(prev2_wd, "ON") == 0) : COMPLETE_WITH_CONST("RENAME TO"); 0.00 : 424a3e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424a42: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 424a47: 48 c7 05 2e 65 24 00 movq $0x450fdf,0x24652e(%rip) # 66af80 0.00 : 424a4e: df 0f 45 00 0.00 : 424a52: c6 05 4f 65 24 00 00 movb $0x0,0x24654f(%rip) # 66afa8 0.00 : 424a59: e8 72 ed fd ff callq 4037d0 0.00 : 424a5e: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "TRIGGER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* ALTER TRIGGER ON */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424a61: e9 8c d5 ff ff jmpq 421ff2 : static const char *const list_ALTER2[] = : {"ADD", "ALTER", "CLUSTER ON", "DISABLE", "DROP", "ENABLE", "INHERIT", : "NO INHERIT", "RENAME", "RESET", "OWNER TO", "SET", : "VALIDATE CONSTRAINT", "REPLICA IDENTITY", NULL}; : : COMPLETE_WITH_LIST(list_ALTER2); 0.00 : 424a66: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424a6a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424a6f: 48 c7 05 0e 65 24 00 movq $0x456dc0,0x24650e(%rip) # 66af88 0.00 : 424a76: c0 6d 45 00 0.00 : 424a7a: c6 05 27 65 24 00 00 movb $0x0,0x246527(%rip) # 66afa8 0.00 : 424a81: e8 4a ed fd ff callq 4037d0 0.00 : 424a86: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_CONST("RENAME TO"); : : /* : * If we detect ALTER TABLE , suggest sub commands : */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424a89: e9 64 d5 ff ff jmpq 421ff2 : "VALIDATE CONSTRAINT", "REPLICA IDENTITY", NULL}; : : COMPLETE_WITH_LIST(list_ALTER2); : } : /* ALTER TABLE xxx ENABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424a8e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424a92: be 87 0f 45 00 mov $0x450f87,%esi 0.00 : 424a97: e8 e4 02 01 00 callq 434d80 0.00 : 424a9c: 85 c0 test %eax,%eax 0.00 : 424a9e: 0f 85 4c e3 ff ff jne 422df0 : pg_strcasecmp(prev_wd, "ENABLE") == 0) : { : static const char *const list_ALTERENABLE[] = : {"ALWAYS", "REPLICA", "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE); 0.00 : 424aa4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424aa8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424aad: 48 c7 05 d0 64 24 00 movq $0x456d80,0x2464d0(%rip) # 66af88 0.00 : 424ab4: 80 6d 45 00 0.00 : 424ab8: c6 05 e9 64 24 00 00 movb $0x0,0x2464e9(%rip) # 66afa8 0.00 : 424abf: e8 0c ed fd ff callq 4037d0 0.00 : 424ac4: 48 89 c3 mov %rax,%rbx : "VALIDATE CONSTRAINT", "REPLICA IDENTITY", NULL}; : : COMPLETE_WITH_LIST(list_ALTER2); : } : /* ALTER TABLE xxx ENABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424ac7: e9 26 d5 ff ff jmpq 421ff2 : static const char *const list_ALTERENABLE[] = : {"ALWAYS", "REPLICA", "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE); : } : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 424acc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424ad0: be e9 0f 45 00 mov $0x450fe9,%esi 0.00 : 424ad5: e8 a6 02 01 00 callq 434d80 0.00 : 424ada: 85 c0 test %eax,%eax 0.00 : 424adc: 74 16 je 424af4 0.00 : 424ade: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424ae2: be f1 0f 45 00 mov $0x450ff1,%esi 0.00 : 424ae7: e8 94 02 01 00 callq 434d80 0.00 : 424aec: 85 c0 test %eax,%eax 0.00 : 424aee: 0f 85 24 e3 ff ff jne 422e18 : pg_strcasecmp(prev_wd, "ALWAYS") == 0)) : { : static const char *const list_ALTERENABLE2[] = : {"RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE2); 0.00 : 424af4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424af8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424afd: 48 c7 05 80 64 24 00 movq $0x456d60,0x246480(%rip) # 66af88 0.00 : 424b04: 60 6d 45 00 0.00 : 424b08: c6 05 99 64 24 00 00 movb $0x0,0x246499(%rip) # 66afa8 0.00 : 424b0f: e8 bc ec fd ff callq 4037d0 0.00 : 424b14: 48 89 c3 mov %rax,%rbx : static const char *const list_ALTERENABLE[] = : {"ALWAYS", "REPLICA", "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE); : } : else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 && 0.00 : 424b17: e9 d6 d4 ff ff jmpq 421ff2 : static const char *const list_ALTERENABLE2[] = : {"RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE2); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424b1c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424b20: be 87 0f 45 00 mov $0x450f87,%esi 0.00 : 424b25: e8 56 02 01 00 callq 434d80 0.00 : 424b2a: 85 c0 test %eax,%eax 0.00 : 424b2c: 0f 85 0e e3 ff ff jne 422e40 0.00 : 424b32: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424b36: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 424b3b: e8 40 02 01 00 callq 434d80 0.00 : 424b40: 85 c0 test %eax,%eax 0.00 : 424b42: 0f 85 f8 e2 ff ff jne 422e40 : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424b48: 48 8b 45 b0 mov -0x50(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_rule_of_table); 0.00 : 424b4c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424b50: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424b55: 48 c7 05 20 64 24 00 movq $0x4522d0,0x246420(%rip) # 66af80 0.00 : 424b5c: d0 22 45 00 : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424b60: 48 89 05 29 64 24 00 mov %rax,0x246429(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_rule_of_table); 0.00 : 424b67: e8 64 ec fd ff callq 4037d0 0.00 : 424b6c: 48 89 c3 mov %rax,%rbx : static const char *const list_ALTERENABLE2[] = : {"RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERENABLE2); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424b6f: e9 7e d4 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 424b74: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 424b78: be 87 0f 45 00 mov $0x450f87,%esi 0.00 : 424b7d: e8 fe 01 01 00 callq 434d80 0.00 : 424b82: 85 c0 test %eax,%eax 0.00 : 424b84: 0f 85 de e2 ff ff jne 422e68 0.00 : 424b8a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424b8e: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 424b93: e8 e8 01 01 00 callq 434d80 0.00 : 424b98: 85 c0 test %eax,%eax 0.00 : 424b9a: 0f 85 c8 e2 ff ff jne 422e68 : pg_strcasecmp(prev5_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev4_wd; 0.00 : 424ba0: 48 8b 45 b8 mov -0x48(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_rule_of_table); 0.00 : 424ba4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424ba8: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424bad: 48 c7 05 c8 63 24 00 movq $0x4522d0,0x2463c8(%rip) # 66af80 0.00 : 424bb4: d0 22 45 00 : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && : pg_strcasecmp(prev5_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev4_wd; 0.00 : 424bb8: 48 89 05 d1 63 24 00 mov %rax,0x2463d1(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_rule_of_table); 0.00 : 424bbf: e8 0c ec fd ff callq 4037d0 0.00 : 424bc4: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 424bc7: e9 26 d4 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev4_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424bcc: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424bd0: be 87 0f 45 00 mov $0x450f87,%esi 0.00 : 424bd5: e8 a6 01 01 00 callq 434d80 0.00 : 424bda: 85 c0 test %eax,%eax 0.00 : 424bdc: 0f 85 ae e2 ff ff jne 422e90 0.00 : 424be2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424be6: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 424beb: e8 90 01 01 00 callq 434d80 0.00 : 424bf0: 85 c0 test %eax,%eax 0.00 : 424bf2: 0f 85 98 e2 ff ff jne 422e90 : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424bf8: 48 8b 45 b0 mov -0x50(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); 0.00 : 424bfc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424c00: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424c05: 48 c7 05 70 63 24 00 movq $0x4523d0,0x246370(%rip) # 66af80 0.00 : 424c0c: d0 23 45 00 : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424c10: 48 89 05 79 63 24 00 mov %rax,0x246379(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); 0.00 : 424c17: e8 b4 eb fd ff callq 4037d0 0.00 : 424c1c: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev4_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424c1f: e9 ce d3 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 424c24: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 424c28: be 87 0f 45 00 mov $0x450f87,%esi 0.00 : 424c2d: e8 4e 01 01 00 callq 434d80 0.00 : 424c32: 85 c0 test %eax,%eax 0.00 : 424c34: 0f 85 7e e2 ff ff jne 422eb8 0.00 : 424c3a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424c3e: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 424c43: e8 38 01 01 00 callq 434d80 0.00 : 424c48: 85 c0 test %eax,%eax 0.00 : 424c4a: 0f 85 68 e2 ff ff jne 422eb8 : pg_strcasecmp(prev5_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev4_wd; 0.00 : 424c50: 48 8b 45 b8 mov -0x48(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); 0.00 : 424c54: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424c58: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424c5d: 48 c7 05 18 63 24 00 movq $0x4523d0,0x246318(%rip) # 66af80 0.00 : 424c64: d0 23 45 00 : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && : pg_strcasecmp(prev5_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "ENABLE") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev4_wd; 0.00 : 424c68: 48 89 05 21 63 24 00 mov %rax,0x246321(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); 0.00 : 424c6f: e8 5c eb fd ff callq 4037d0 0.00 : 424c74: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : else if (pg_strcasecmp(prev6_wd, "ALTER") == 0 && 0.00 : 424c77: e9 76 d3 ff ff jmpq 421ff2 : { : completion_info_charp = prev4_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : /* ALTER TABLE xxx INHERIT */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424c7c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424c80: be ca 19 45 00 mov $0x4519ca,%esi 0.00 : 424c85: e8 f6 00 01 00 callq 434d80 0.00 : 424c8a: 85 c0 test %eax,%eax 0.00 : 424c8c: 0f 85 4e e2 ff ff jne 422ee0 : pg_strcasecmp(prev3_wd, "TABLE") == 0 && : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); 0.00 : 424c92: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424c96: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 424c9b: 48 c7 05 fa 62 24 00 movq $0x454f40,0x2462fa(%rip) # 66afa0 0.00 : 424ca2: 40 4f 45 00 0.00 : 424ca6: 48 c7 05 cf 62 24 00 movq $0x436917,0x2462cf(%rip) # 66af80 0.00 : 424cad: 17 69 43 00 0.00 : 424cb1: e8 1a eb fd ff callq 4037d0 0.00 : 424cb6: 48 89 c3 mov %rax,%rbx : { : completion_info_charp = prev4_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : /* ALTER TABLE xxx INHERIT */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424cb9: e9 34 d3 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : } : /* ALTER TABLE xxx NO INHERIT */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424cbe: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424cc2: be d6 0f 45 00 mov $0x450fd6,%esi 0.00 : 424cc7: e8 b4 00 01 00 callq 434d80 0.00 : 424ccc: 85 c0 test %eax,%eax 0.00 : 424cce: 0f 85 34 e2 ff ff jne 422f08 0.00 : 424cd4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424cd8: be ca 19 45 00 mov $0x4519ca,%esi 0.00 : 424cdd: e8 9e 00 01 00 callq 434d80 0.00 : 424ce2: 85 c0 test %eax,%eax 0.00 : 424ce4: 0f 85 1e e2 ff ff jne 422f08 : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "NO") == 0 && : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); 0.00 : 424cea: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424cee: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 424cf3: 48 c7 05 a2 62 24 00 movq $0x454f40,0x2462a2(%rip) # 66afa0 0.00 : 424cfa: 40 4f 45 00 0.00 : 424cfe: 48 c7 05 77 62 24 00 movq $0x436917,0x246277(%rip) # 66af80 0.00 : 424d05: 17 69 43 00 0.00 : 424d09: e8 c2 ea fd ff callq 4037d0 0.00 : 424d0e: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : } : /* ALTER TABLE xxx NO INHERIT */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424d11: e9 dc d2 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : } : /* ALTER TABLE xxx DISABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424d16: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424d1a: be f8 0f 45 00 mov $0x450ff8,%esi 0.00 : 424d1f: e8 5c 00 01 00 callq 434d80 0.00 : 424d24: 85 c0 test %eax,%eax 0.00 : 424d26: 0f 85 04 e2 ff ff jne 422f30 : pg_strcasecmp(prev_wd, "DISABLE") == 0) : { : static const char *const list_ALTERDISABLE[] = : { "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDISABLE); 0.00 : 424d2c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424d30: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424d35: 48 c7 05 48 62 24 00 movq $0x456d40,0x246248(%rip) # 66af88 0.00 : 424d3c: 40 6d 45 00 0.00 : 424d40: c6 05 61 62 24 00 00 movb $0x0,0x246261(%rip) # 66afa8 0.00 : 424d47: e8 84 ea fd ff callq 4037d0 0.00 : 424d4c: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "INHERIT") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : } : /* ALTER TABLE xxx DISABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424d4f: e9 9e d2 ff ff jmpq 421ff2 : static const char *const list_ALTERDISABLE[] = : { "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDISABLE); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424d54: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424d58: be f8 0f 45 00 mov $0x450ff8,%esi 0.00 : 424d5d: e8 1e 00 01 00 callq 434d80 0.00 : 424d62: 85 c0 test %eax,%eax 0.00 : 424d64: 0f 85 ee e1 ff ff jne 422f58 0.00 : 424d6a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424d6e: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 424d73: e8 08 00 01 00 callq 434d80 0.00 : 424d78: 85 c0 test %eax,%eax 0.00 : 424d7a: 0f 85 d8 e1 ff ff jne 422f58 : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "DISABLE") == 0 && : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424d80: 48 8b 45 b0 mov -0x50(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_rule_of_table); 0.00 : 424d84: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424d88: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424d8d: 48 c7 05 e8 61 24 00 movq $0x4522d0,0x2461e8(%rip) # 66af80 0.00 : 424d94: d0 22 45 00 : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "DISABLE") == 0 && : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424d98: 48 89 05 f1 61 24 00 mov %rax,0x2461f1(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_rule_of_table); 0.00 : 424d9f: e8 2c ea fd ff callq 4037d0 0.00 : 424da4: 48 89 c3 mov %rax,%rbx : static const char *const list_ALTERDISABLE[] = : { "ROW LEVEL SECURITY", "RULE", "TRIGGER", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDISABLE); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424da7: e9 46 d2 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424dac: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424db0: be f8 0f 45 00 mov $0x450ff8,%esi 0.00 : 424db5: e8 c6 ff 00 00 callq 434d80 0.00 : 424dba: 85 c0 test %eax,%eax 0.00 : 424dbc: 0f 85 be e1 ff ff jne 422f80 0.00 : 424dc2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424dc6: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 424dcb: e8 b0 ff 00 00 callq 434d80 0.00 : 424dd0: 85 c0 test %eax,%eax 0.00 : 424dd2: 0f 85 a8 e1 ff ff jne 422f80 : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "DISABLE") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424dd8: 48 8b 45 b0 mov -0x50(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); 0.00 : 424ddc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424de0: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 424de5: 48 c7 05 90 61 24 00 movq $0x4523d0,0x246190(%rip) # 66af80 0.00 : 424dec: d0 23 45 00 : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && : pg_strcasecmp(prev4_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "DISABLE") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 424df0: 48 89 05 99 61 24 00 mov %rax,0x246199(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); 0.00 : 424df7: e8 d4 e9 fd ff callq 4037d0 0.00 : 424dfc: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "RULE") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_rule_of_table); : } : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424dff: e9 ee d1 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : else if (pg_strcasecmp(prev4_wd, "DISABLE") == 0 && 0.00 : 424e04: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424e08: be 88 15 45 00 mov $0x451588,%esi 0.00 : 424e0d: e8 6e ff 00 00 callq 434d80 0.00 : 424e12: 85 c0 test %eax,%eax 0.00 : 424e14: 0f 85 8e e1 ff ff jne 422fa8 0.00 : 424e1a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424e1e: be b3 19 45 00 mov $0x4519b3,%esi 0.00 : 424e23: e8 58 ff 00 00 callq 434d80 0.00 : 424e28: 85 c0 test %eax,%eax 0.00 : 424e2a: 0f 85 78 e1 ff ff jne 422fa8 : pg_strcasecmp(prev_wd, "SECURITY") == 0) : { : static const char *const list_DISABLERLS[] = : { "CASCADE", NULL}; : : COMPLETE_WITH_LIST(list_DISABLERLS); 0.00 : 424e30: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424e34: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424e39: 48 c7 05 44 61 24 00 movq $0x456d30,0x246144(%rip) # 66af88 0.00 : 424e40: 30 6d 45 00 0.00 : 424e44: c6 05 5d 61 24 00 00 movb $0x0,0x24615d(%rip) # 66afa8 0.00 : 424e4b: e8 80 e9 fd ff callq 4037d0 0.00 : 424e50: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_trigger_of_table); : } : else if (pg_strcasecmp(prev4_wd, "DISABLE") == 0 && 0.00 : 424e53: e9 9a d1 ff ff jmpq 421ff2 : {"(", "TABLESPACE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEXSET); : } : /* ALTER INDEX RESET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424e58: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424e5c: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 424e61: e8 1a ff 00 00 callq 434d80 0.00 : 424e66: 85 c0 test %eax,%eax 0.00 : 424e68: 0f 85 45 d6 ff ff jne 4224b3 : pg_strcasecmp(prev3_wd, "INDEX") == 0 && : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 424e6e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424e72: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 424e77: 48 c7 05 fe 60 24 00 movq $0x448783,0x2460fe(%rip) # 66af80 0.00 : 424e7e: 83 87 44 00 0.00 : 424e82: c6 05 1f 61 24 00 00 movb $0x0,0x24611f(%rip) # 66afa8 0.00 : 424e89: e8 42 e9 fd ff callq 4037d0 0.00 : 424e8e: 48 89 c3 mov %rax,%rbx : {"(", "TABLESPACE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEXSET); : } : /* ALTER INDEX RESET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424e91: e9 5c d1 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "INDEX") == 0 && : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER INDEX SET|RESET ( */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424e96: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424e9a: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 424e9f: e8 dc fe 00 00 callq 434d80 0.00 : 424ea4: 85 c0 test %eax,%eax 0.00 : 424ea6: 74 16 je 424ebe 0.00 : 424ea8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424eac: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 424eb1: e8 ca fe 00 00 callq 434d80 0.00 : 424eb6: 85 c0 test %eax,%eax 0.00 : 424eb8: 0f 85 1d d6 ff ff jne 4224db 0.00 : 424ebe: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424ec2: be 83 87 44 00 mov $0x448783,%esi 0.00 : 424ec7: e8 b4 fe 00 00 callq 434d80 0.00 : 424ecc: 85 c0 test %eax,%eax 0.00 : 424ece: 0f 85 07 d6 ff ff jne 4224db : pg_strcasecmp(prev_wd, "(") == 0) : { : static const char *const list_INDEXOPTIONS[] = : {"fillfactor", "fastupdate", NULL}; : : COMPLETE_WITH_LIST(list_INDEXOPTIONS); 0.00 : 424ed4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424ed8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424edd: 48 c7 05 a0 60 24 00 movq $0x457280,0x2460a0(%rip) # 66af88 0.00 : 424ee4: 80 72 45 00 0.00 : 424ee8: c6 05 b9 60 24 00 00 movb $0x0,0x2460b9(%rip) # 66afa8 0.00 : 424eef: e8 dc e8 fd ff callq 4037d0 0.00 : 424ef4: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && : pg_strcasecmp(prev3_wd, "INDEX") == 0 && : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_CONST("("); : /* ALTER INDEX SET|RESET ( */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 424ef7: e9 f6 d0 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "LANGUAGE") == 0) : { : static const char *const list_ALTERLANGUAGE[] = : {"OWNER TO", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERLANGUAGE); 0.00 : 424efc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424f00: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424f05: 48 c7 05 78 60 24 00 movq $0x457260,0x246078(%rip) # 66af88 0.00 : 424f0c: 60 72 45 00 0.00 : 424f10: c6 05 91 60 24 00 00 movb $0x0,0x246091(%rip) # 66afa8 0.00 : 424f17: e8 b4 e8 fd ff callq 4037d0 0.00 : 424f1c: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_INDEXOPTIONS); : } : : /* ALTER LANGUAGE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424f1f: e9 ce d0 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_ALTERLANGUAGE); : } : : /* ALTER LARGE OBJECT */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424f24: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 424f28: be 1f ba 43 00 mov $0x43ba1f,%esi 0.00 : 424f2d: e8 4e fe 00 00 callq 434d80 0.00 : 424f32: 85 c0 test %eax,%eax 0.00 : 424f34: 0f 85 f1 d5 ff ff jne 42252b : pg_strcasecmp(prev2_wd, "OBJECT") == 0) : { : static const char *const list_ALTERLARGEOBJECT[] = : {"OWNER TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERLARGEOBJECT); 0.00 : 424f3a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424f3e: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424f43: 48 c7 05 3a 60 24 00 movq $0x457250,0x24603a(%rip) # 66af88 0.00 : 424f4a: 50 72 45 00 0.00 : 424f4e: c6 05 53 60 24 00 00 movb $0x0,0x246053(%rip) # 66afa8 0.00 : 424f55: e8 76 e8 fd ff callq 4037d0 0.00 : 424f5a: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERLANGUAGE); : } : : /* ALTER LARGE OBJECT */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424f5d: e9 90 d0 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_ALTERLARGEOBJECT); : } : : /* ALTER MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424f62: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424f66: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 424f6b: e8 10 fe 00 00 callq 434d80 0.00 : 424f70: 85 c0 test %eax,%eax 0.00 : 424f72: 0f 85 db d5 ff ff jne 422553 : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, 0.00 : 424f78: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424f7c: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 424f81: 48 c7 05 14 60 24 00 movq $0x454fc0,0x246014(%rip) # 66afa0 0.00 : 424f88: c0 4f 45 00 0.00 : 424f8c: 48 c7 05 e9 5f 24 00 movq $0x451b20,0x245fe9(%rip) # 66af80 0.00 : 424f93: 20 1b 45 00 0.00 : 424f97: e8 34 e8 fd ff callq 4037d0 0.00 : 424f9c: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERLARGEOBJECT); : } : : /* ALTER MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424f9f: e9 4e d0 ff ff jmpq 421ff2 : "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", : "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "RENAME TO", : "REPLICATION", "RESET", "SET", "SUPERUSER", "UNENCRYPTED", : "VALID UNTIL", NULL}; : : COMPLETE_WITH_LIST(list_ALTERUSER_WITH); 0.00 : 424fa4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424fa8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424fad: 48 c7 05 d0 5f 24 00 movq $0x4570c0,0x245fd0(%rip) # 66af88 0.00 : 424fb4: c0 70 45 00 0.00 : 424fb8: c6 05 e9 5f 24 00 00 movb $0x0,0x245fe9(%rip) # 66afa8 0.00 : 424fbf: e8 0c e8 fd ff callq 4037d0 0.00 : 424fc4: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERUSER); : } : : /* ALTER USER,ROLE WITH */ : else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 424fc7: e9 26 d0 ff ff jmpq 421ff2 : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); : } : /* ALTER DEFAULT PRIVILEGES */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 424fcc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 424fd0: be 72 b9 43 00 mov $0x43b972,%esi 0.00 : 424fd5: e8 a6 fd 00 00 callq 434d80 0.00 : 424fda: 85 c0 test %eax,%eax 0.00 : 424fdc: 0f 85 5e d9 ff ff jne 422940 : pg_strcasecmp(prev_wd, "PRIVILEGES") == 0) : { : static const char *const list_ALTER_DEFAULT_PRIVILEGES[] = : {"FOR ROLE", "FOR USER", "IN SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES); 0.00 : 424fe2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 424fe6: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 424feb: 48 c7 05 92 5f 24 00 movq $0x4570a0,0x245f92(%rip) # 66af88 0.00 : 424ff2: a0 70 45 00 0.00 : 424ff6: c6 05 ab 5f 24 00 00 movb $0x0,0x245fab(%rip) # 66afa8 0.00 : 424ffd: e8 ce e7 fd ff callq 4037d0 0.00 : 425002: 48 89 c3 mov %rax,%rbx : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); : } : /* ALTER DEFAULT PRIVILEGES */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 425005: e9 e8 cf ff ff jmpq 421ff2 : {"FOR ROLE", "FOR USER", "IN SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES); : } : /* ALTER DEFAULT PRIVILEGES FOR */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42500a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42500e: be 72 b9 43 00 mov $0x43b972,%esi 0.00 : 425013: e8 68 fd 00 00 callq 434d80 0.00 : 425018: 85 c0 test %eax,%eax 0.00 : 42501a: 0f 85 48 d9 ff ff jne 422968 0.00 : 425020: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425024: be 30 18 45 00 mov $0x451830,%esi 0.00 : 425029: e8 52 fd 00 00 callq 434d80 0.00 : 42502e: 85 c0 test %eax,%eax 0.00 : 425030: 0f 85 32 d9 ff ff jne 422968 : pg_strcasecmp(prev_wd, "FOR") == 0) : { : static const char *const list_ALTER_DEFAULT_PRIVILEGES_FOR[] = : {"ROLE", "USER", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_FOR); 0.00 : 425036: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42503a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42503f: 48 c7 05 3e 5f 24 00 movq $0x457080,0x245f3e(%rip) # 66af88 0.00 : 425046: 80 70 45 00 0.00 : 42504a: c6 05 57 5f 24 00 00 movb $0x0,0x245f57(%rip) # 66afa8 0.00 : 425051: e8 7a e7 fd ff callq 4037d0 0.00 : 425056: 48 89 c3 mov %rax,%rbx : {"FOR ROLE", "FOR USER", "IN SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES); : } : /* ALTER DEFAULT PRIVILEGES FOR */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 425059: e9 94 cf ff ff jmpq 421ff2 : {"ROLE", "USER", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_FOR); : } : /* ALTER DEFAULT PRIVILEGES { FOR ROLE ... | IN SCHEMA ... } */ : else if (pg_strcasecmp(prev5_wd, "DEFAULT") == 0 && 0.00 : 42505e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425062: be 30 18 45 00 mov $0x451830,%esi 0.00 : 425067: e8 14 fd 00 00 callq 434d80 0.00 : 42506c: 85 c0 test %eax,%eax 0.00 : 42506e: 74 16 je 425086 0.00 : 425070: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425074: be 30 c5 43 00 mov $0x43c530,%esi 0.00 : 425079: e8 02 fd 00 00 callq 434d80 0.00 : 42507e: 85 c0 test %eax,%eax 0.00 : 425080: 0f 85 0a d9 ff ff jne 422990 : pg_strcasecmp(prev3_wd, "IN") == 0)) : { : static const char *const list_ALTER_DEFAULT_PRIVILEGES_REST[] = : {"GRANT", "REVOKE", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_REST); 0.00 : 425086: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42508a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42508f: 48 c7 05 ee 5e 24 00 movq $0x457060,0x245eee(%rip) # 66af88 0.00 : 425096: 60 70 45 00 0.00 : 42509a: c6 05 07 5f 24 00 00 movb $0x0,0x245f07(%rip) # 66afa8 0.00 : 4250a1: e8 2a e7 fd ff callq 4037d0 0.00 : 4250a6: 48 89 c3 mov %rax,%rbx : {"ROLE", "USER", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_FOR); : } : /* ALTER DEFAULT PRIVILEGES { FOR ROLE ... | IN SCHEMA ... } */ : else if (pg_strcasecmp(prev5_wd, "DEFAULT") == 0 && 0.00 : 4250a9: e9 44 cf ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "DOMAIN") == 0) : { : static const char *const list_ALTERDOMAIN[] = : {"ADD", "DROP", "OWNER TO", "RENAME", "SET", "VALIDATE CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); 0.00 : 4250ae: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4250b2: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4250b7: 48 c7 05 c6 5e 24 00 movq $0x457020,0x245ec6(%rip) # 66af88 0.00 : 4250be: 20 70 45 00 0.00 : 4250c2: c6 05 df 5e 24 00 00 movb $0x0,0x245edf(%rip) # 66afa8 0.00 : 4250c9: e8 02 e7 fd ff callq 4037d0 0.00 : 4250ce: 48 89 c3 mov %rax,%rbx : {"GRANT", "REVOKE", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_REST); : } : /* ALTER DOMAIN */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4250d1: e9 1c cf ff ff jmpq 421ff2 : {"ADD", "DROP", "OWNER TO", "RENAME", "SET", "VALIDATE CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); : } : /* ALTER DOMAIN DROP */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4250d6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4250da: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 4250df: e8 9c fc 00 00 callq 434d80 0.00 : 4250e4: 85 c0 test %eax,%eax 0.00 : 4250e6: 0f 85 f4 d8 ff ff jne 4229e0 : pg_strcasecmp(prev_wd, "DROP") == 0) : { : static const char *const list_ALTERDOMAIN2[] = : {"CONSTRAINT", "DEFAULT", "NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN2); 0.00 : 4250ec: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4250f0: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4250f5: 48 c7 05 88 5e 24 00 movq $0x457000,0x245e88(%rip) # 66af88 0.00 : 4250fc: 00 70 45 00 0.00 : 425100: c6 05 a1 5e 24 00 00 movb $0x0,0x245ea1(%rip) # 66afa8 0.00 : 425107: e8 c4 e6 fd ff callq 4037d0 0.00 : 42510c: 48 89 c3 mov %rax,%rbx : {"ADD", "DROP", "OWNER TO", "RENAME", "SET", "VALIDATE CONSTRAINT", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); : } : /* ALTER DOMAIN DROP */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42510f: e9 de ce ff ff jmpq 421ff2 : {"CONSTRAINT", "DEFAULT", "NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN2); : } : /* ALTER DOMAIN DROP|RENAME|VALIDATE CONSTRAINT */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 425114: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425118: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 42511d: e8 5e fc 00 00 callq 434d80 0.00 : 425122: 85 c0 test %eax,%eax 0.00 : 425124: 74 12 je 425138 0.00 : 425126: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42512a: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 42512f: e8 4c fc 00 00 callq 434d80 0.00 : 425134: 85 c0 test %eax,%eax 0.00 : 425136: 75 42 jne 42517a 0.00 : 425138: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42513c: be db 19 45 00 mov $0x4519db,%esi 0.00 : 425141: e8 3a fc 00 00 callq 434d80 0.00 : 425146: 85 c0 test %eax,%eax 0.00 : 425148: 0f 85 ba d8 ff ff jne 422a08 : (pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0 || : pg_strcasecmp(prev2_wd, "VALIDATE") == 0) && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 42514e: 48 8b 45 b0 mov -0x50(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_constraint_of_type); 0.00 : 425152: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425156: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42515b: 48 c7 05 1a 5e 24 00 movq $0x451eb8,0x245e1a(%rip) # 66af80 0.00 : 425162: b8 1e 45 00 : (pg_strcasecmp(prev2_wd, "DROP") == 0 || : pg_strcasecmp(prev2_wd, "RENAME") == 0 || : pg_strcasecmp(prev2_wd, "VALIDATE") == 0) && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : completion_info_charp = prev3_wd; 0.00 : 425166: 48 89 05 23 5e 24 00 mov %rax,0x245e23(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_constraint_of_type); 0.00 : 42516d: e8 5e e6 fd ff callq 4037d0 0.00 : 425172: 48 89 c3 mov %rax,%rbx : {"CONSTRAINT", "DEFAULT", "NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN2); : } : /* ALTER DOMAIN DROP|RENAME|VALIDATE CONSTRAINT */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 425175: e9 78 ce ff ff jmpq 421ff2 0.00 : 42517a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42517e: be cd 0f 45 00 mov $0x450fcd,%esi 0.00 : 425183: e8 f8 fb 00 00 callq 434d80 0.00 : 425188: 85 c0 test %eax,%eax 0.00 : 42518a: 0f 85 78 d8 ff ff jne 422a08 0.00 : 425190: eb a6 jmp 425138 : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_constraint_of_type); : } : /* ALTER DOMAIN RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 425192: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425196: be c6 0f 45 00 mov $0x450fc6,%esi 0.00 : 42519b: e8 e0 fb 00 00 callq 434d80 0.00 : 4251a0: 85 c0 test %eax,%eax 0.00 : 4251a2: 0f 85 88 d8 ff ff jne 422a30 : pg_strcasecmp(prev_wd, "RENAME") == 0) : { : static const char *const list_ALTERDOMAIN[] = : {"CONSTRAINT", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); 0.00 : 4251a8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4251ac: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4251b1: 48 c7 05 cc 5d 24 00 movq $0x456fe0,0x245dcc(%rip) # 66af88 0.00 : 4251b8: e0 6f 45 00 0.00 : 4251bc: c6 05 e5 5d 24 00 00 movb $0x0,0x245de5(%rip) # 66afa8 0.00 : 4251c3: e8 08 e6 fd ff callq 4037d0 0.00 : 4251c8: 48 89 c3 mov %rax,%rbx : { : completion_info_charp = prev3_wd; : COMPLETE_WITH_QUERY(Query_for_constraint_of_type); : } : /* ALTER DOMAIN RENAME */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4251cb: e9 22 ce ff ff jmpq 421ff2 : {"CONSTRAINT", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); : } : /* ALTER DOMAIN RENAME CONSTRAINT */ : else if (pg_strcasecmp(prev5_wd, "DOMAIN") == 0 && 0.00 : 4251d0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4251d4: be db 19 45 00 mov $0x4519db,%esi 0.00 : 4251d9: e8 a2 fb 00 00 callq 434d80 0.00 : 4251de: 85 c0 test %eax,%eax 0.00 : 4251e0: 0f 85 72 d8 ff ff jne 422a58 : pg_strcasecmp(prev3_wd, "RENAME") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : COMPLETE_WITH_CONST("TO"); 0.00 : 4251e6: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4251ea: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4251ef: 48 c7 05 86 5d 24 00 movq $0x450fe6,0x245d86(%rip) # 66af80 0.00 : 4251f6: e6 0f 45 00 0.00 : 4251fa: c6 05 a7 5d 24 00 00 movb $0x0,0x245da7(%rip) # 66afa8 0.00 : 425201: e8 ca e5 fd ff callq 4037d0 0.00 : 425206: 48 89 c3 mov %rax,%rbx : {"CONSTRAINT", "TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN); : } : /* ALTER DOMAIN RENAME CONSTRAINT */ : else if (pg_strcasecmp(prev5_wd, "DOMAIN") == 0 && 0.00 : 425209: e9 e4 cd ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "RENAME") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : COMPLETE_WITH_CONST("TO"); : : /* ALTER DOMAIN SET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42520e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425212: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 425217: e8 64 fb 00 00 callq 434d80 0.00 : 42521c: 85 c0 test %eax,%eax 0.00 : 42521e: 0f 85 5c d8 ff ff jne 422a80 : pg_strcasecmp(prev_wd, "SET") == 0) : { : static const char *const list_ALTERDOMAIN3[] = : {"DEFAULT", "NOT NULL", "SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN3); 0.00 : 425224: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425228: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42522d: 48 c7 05 50 5d 24 00 movq $0x456fc0,0x245d50(%rip) # 66af88 0.00 : 425234: c0 6f 45 00 0.00 : 425238: c6 05 69 5d 24 00 00 movb $0x0,0x245d69(%rip) # 66afa8 0.00 : 42523f: e8 8c e5 fd ff callq 4037d0 0.00 : 425244: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "RENAME") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : COMPLETE_WITH_CONST("TO"); : : /* ALTER DOMAIN SET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 425247: e9 a6 cd ff ff jmpq 421ff2 : { : static const char *const list_ALTERSEQUENCE[] = : {"INCREMENT", "MINVALUE", "MAXVALUE", "RESTART", "NO", "CACHE", "CYCLE", : "SET SCHEMA", "OWNED BY", "OWNER TO", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERSEQUENCE); 0.00 : 42524c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425250: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425255: 48 c7 05 28 5d 24 00 movq $0x456f60,0x245d28(%rip) # 66af88 0.00 : 42525c: 60 6f 45 00 0.00 : 425260: c6 05 41 5d 24 00 00 movb $0x0,0x245d41(%rip) # 66afa8 0.00 : 425267: e8 64 e5 fd ff callq 4037d0 0.00 : 42526c: 48 89 c3 mov %rax,%rbx : {"DEFAULT", "NOT NULL", "SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDOMAIN3); : } : /* ALTER SEQUENCE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42526f: e9 7e cd ff ff jmpq 421ff2 : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERAGG); : } : else : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); 0.00 : 425274: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 425278: 48 c7 05 fd 5c 24 00 movq $0x451bd0,0x245cfd(%rip) # 66af80 0.00 : 42527f: d0 1b 45 00 0.00 : 425283: 48 89 05 06 5d 24 00 mov %rax,0x245d06(%rip) # 66af90 0.00 : 42528a: e9 6f d4 ff ff jmpq 4226fe : if (prev_wd[strlen(prev_wd) - 1] == ')') : { : static const char *const list_ALTERAGG[] = : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERAGG); 0.00 : 42528f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425293: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425298: 48 c7 05 e5 5c 24 00 movq $0x4574e0,0x245ce5(%rip) # 66af88 0.00 : 42529f: e0 74 45 00 0.00 : 4252a3: c6 05 fe 5c 24 00 00 movb $0x0,0x245cfe(%rip) # 66afa8 0.00 : 4252aa: e8 21 e5 fd ff callq 4037d0 0.00 : 4252af: 48 89 c3 mov %rax,%rbx 0.00 : 4252b2: e9 3b cd ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "SCHEMA") == 0) : { : static const char *const list_ALTERGEN[] = : {"OWNER TO", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTERGEN); 0.00 : 4252b7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4252bb: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4252c0: 48 c7 05 bd 5c 24 00 movq $0x4574c0,0x245cbd(%rip) # 66af88 0.00 : 4252c7: c0 74 45 00 0.00 : 4252cb: c6 05 d6 5c 24 00 00 movb $0x0,0x245cd6(%rip) # 66afa8 0.00 : 4252d2: e8 f9 e4 fd ff callq 4037d0 0.00 : 4252d7: 48 89 c3 mov %rax,%rbx : else : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); : } : : /* ALTER SCHEMA */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 4252da: e9 13 cd ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "COLLATION") == 0) : { : static const char *const list_ALTERGEN[] = : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERGEN); 0.00 : 4252df: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4252e3: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4252e8: 48 c7 05 95 5c 24 00 movq $0x4574a0,0x245c95(%rip) # 66af88 0.00 : 4252ef: a0 74 45 00 0.00 : 4252f3: c6 05 ae 5c 24 00 00 movb $0x0,0x245cae(%rip) # 66afa8 0.00 : 4252fa: e8 d1 e4 fd ff callq 4037d0 0.00 : 4252ff: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERGEN); : } : : /* ALTER COLLATION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 425302: e9 eb cc ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "CONVERSION") == 0) : { : static const char *const list_ALTERGEN[] = : {"OWNER TO", "RENAME TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTERGEN); 0.00 : 425307: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42530b: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425310: 48 c7 05 6d 5c 24 00 movq $0x457480,0x245c6d(%rip) # 66af88 0.00 : 425317: 80 74 45 00 0.00 : 42531b: c6 05 86 5c 24 00 00 movb $0x0,0x245c86(%rip) # 66afa8 0.00 : 425322: e8 a9 e4 fd ff callq 4037d0 0.00 : 425327: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERGEN); : } : : /* ALTER CONVERSION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42532a: e9 c3 cc ff ff jmpq 421ff2 : { : static const char *const list_ALTERDATABASE[] = : {"RESET", "SET", "OWNER TO", "RENAME TO", "IS_TEMPLATE", : "ALLOW_CONNECTIONS", "CONNECTION LIMIT", NULL}; : : COMPLETE_WITH_LIST(list_ALTERDATABASE); 0.00 : 42532f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425333: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425338: 48 c7 05 45 5c 24 00 movq $0x457440,0x245c45(%rip) # 66af88 0.00 : 42533f: 40 74 45 00 0.00 : 425343: c6 05 5e 5c 24 00 00 movb $0x0,0x245c5e(%rip) # 66afa8 0.00 : 42534a: e8 81 e4 fd ff callq 4037d0 0.00 : 42534f: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERGEN); : } : : /* ALTER DATABASE */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 425352: e9 9b cc ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_ALTERDATABASE); : } : : /* ALTER EVENT TRIGGER */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 425357: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42535b: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 425360: e8 1b fa 00 00 callq 434d80 0.00 : 425365: 85 c0 test %eax,%eax 0.00 : 425367: 0f 85 b6 cf ff ff jne 422323 : pg_strcasecmp(prev2_wd, "EVENT") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); 0.00 : 42536d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425371: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 425376: 48 c7 05 ff 5b 24 00 movq $0x451e28,0x245bff(%rip) # 66af80 0.00 : 42537d: 28 1e 45 00 0.00 : 425381: e8 4a e4 fd ff callq 4037d0 0.00 : 425386: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERDATABASE); : } : : /* ALTER EVENT TRIGGER */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 425389: e9 64 cc ff ff jmpq 421ff2 : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); : } : : /* ALTER EVENT TRIGGER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42538e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425392: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 425397: e8 e4 f9 00 00 callq 434d80 0.00 : 42539c: 85 c0 test %eax,%eax 0.00 : 42539e: 0f 85 a7 cf ff ff jne 42234b : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : { : static const char *const list_ALTER_EVENT_TRIGGER[] = : {"DISABLE", "ENABLE", "OWNER TO", "RENAME TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER); 0.00 : 4253a4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4253a8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4253ad: 48 c7 05 d0 5b 24 00 movq $0x457400,0x245bd0(%rip) # 66af88 0.00 : 4253b4: 00 74 45 00 0.00 : 4253b8: c6 05 e9 5b 24 00 00 movb $0x0,0x245be9(%rip) # 66afa8 0.00 : 4253bf: e8 0c e4 fd ff callq 4037d0 0.00 : 4253c4: 48 89 c3 mov %rax,%rbx : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); : } : : /* ALTER EVENT TRIGGER */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4253c7: e9 26 cc ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_ALTER_FDW); : } : : /* ALTER FOREIGN TABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 4253cc: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4253d0: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4253d5: e8 a6 f9 00 00 callq 434d80 0.00 : 4253da: 85 c0 test %eax,%eax 0.00 : 4253dc: 0f 85 31 d0 ff ff jne 422413 : pg_strcasecmp(prev2_wd, "TABLE") == 0) : { : static const char *const list_ALTER_FOREIGN_TABLE[] = : {"ALTER", "DROP", "RENAME", "OWNER TO", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_FOREIGN_TABLE); 0.00 : 4253e2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4253e6: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4253eb: 48 c7 05 92 5b 24 00 movq $0x457300,0x245b92(%rip) # 66af88 0.00 : 4253f2: 00 73 45 00 0.00 : 4253f6: c6 05 ab 5b 24 00 00 movb $0x0,0x245bab(%rip) # 66afa8 0.00 : 4253fd: e8 ce e3 fd ff callq 4037d0 0.00 : 425402: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTER_FDW); : } : : /* ALTER FOREIGN TABLE */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 425405: e9 e8 cb ff ff jmpq 421ff2 : : /* ALTER INDEX */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && : pg_strcasecmp(prev_wd, "INDEX") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, 0.00 : 42540a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42540e: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 425413: 48 c7 05 82 5b 24 00 movq $0x454f80,0x245b82(%rip) # 66afa0 0.00 : 42541a: 80 4f 45 00 0.00 : 42541e: 48 c7 05 57 5b 24 00 movq $0x451b20,0x245b57(%rip) # 66af80 0.00 : 425425: 20 1b 45 00 0.00 : 425429: e8 a2 e3 fd ff callq 4037d0 0.00 : 42542e: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTER_FOREIGN_TABLE); : } : : /* ALTER INDEX */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 425431: e9 bc cb ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "INDEX") == 0) : { : static const char *const list_ALTERINDEX[] = : {"OWNER TO", "RENAME TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEX); 0.00 : 425436: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42543a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42543f: 48 c7 05 3e 5b 24 00 movq $0x4572c0,0x245b3e(%rip) # 66af88 0.00 : 425446: c0 72 45 00 0.00 : 42544a: c6 05 57 5b 24 00 00 movb $0x0,0x245b57(%rip) # 66afa8 0.00 : 425451: e8 7a e3 fd ff callq 4037d0 0.00 : 425456: 48 89 c3 mov %rax,%rbx : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, : "UNION SELECT 'ALL IN TABLESPACE'"); : } : /* ALTER INDEX */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 425459: e9 94 cb ff ff jmpq 421ff2 : {"OWNER TO", "RENAME TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEX); : } : /* ALTER INDEX SET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 42545e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425462: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 425467: e8 14 f9 00 00 callq 434d80 0.00 : 42546c: 85 c0 test %eax,%eax 0.00 : 42546e: 0f 85 17 d0 ff ff jne 42248b : pg_strcasecmp(prev_wd, "SET") == 0) : { : static const char *const list_ALTERINDEXSET[] = : {"(", "TABLESPACE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEXSET); 0.00 : 425474: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425478: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42547d: 48 c7 05 00 5b 24 00 movq $0x4572a0,0x245b00(%rip) # 66af88 0.00 : 425484: a0 72 45 00 0.00 : 425488: c6 05 19 5b 24 00 00 movb $0x0,0x245b19(%rip) # 66afa8 0.00 : 42548f: e8 3c e3 fd ff callq 4037d0 0.00 : 425494: 48 89 c3 mov %rax,%rbx : {"OWNER TO", "RENAME TO", "SET", "RESET", NULL}; : : COMPLETE_WITH_LIST(list_ALTERINDEX); : } : /* ALTER INDEX SET */ : else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && 0.00 : 425497: e9 56 cb ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "FOREIGN") == 0) : { : static const char *const list_ALTER_FOREIGN[] = : {"DATA WRAPPER", "TABLE", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_FOREIGN); 0.00 : 42549c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4254a0: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4254a5: 48 c7 05 d8 5a 24 00 movq $0x457370,0x245ad8(%rip) # 66af88 0.00 : 4254ac: 70 73 45 00 0.00 : 4254b0: c6 05 f1 5a 24 00 00 movb $0x0,0x245af1(%rip) # 66afa8 0.00 : 4254b7: e8 14 e3 fd ff callq 4037d0 0.00 : 4254bc: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTEREXTENSION); : } : : /* ALTER FOREIGN */ : else if (pg_strcasecmp(prev2_wd, "ALTER") == 0 && 0.00 : 4254bf: e9 2e cb ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_ALTER_FOREIGN); : } : : /* ALTER FOREIGN DATA WRAPPER */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 4254c4: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4254c8: be 2b 11 45 00 mov $0x45112b,%esi 0.00 : 4254cd: e8 ae f8 00 00 callq 434d80 0.00 : 4254d2: 85 c0 test %eax,%eax 0.00 : 4254d4: 0f 85 11 cf ff ff jne 4223eb 0.00 : 4254da: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4254de: be 12 bd 43 00 mov $0x43bd12,%esi 0.00 : 4254e3: e8 98 f8 00 00 callq 434d80 0.00 : 4254e8: 85 c0 test %eax,%eax 0.00 : 4254ea: 0f 85 fb ce ff ff jne 4223eb : pg_strcasecmp(prev2_wd, "WRAPPER") == 0) : { : static const char *const list_ALTER_FDW[] = : {"HANDLER", "VALIDATOR", "OPTIONS", "OWNER TO", NULL}; : : COMPLETE_WITH_LIST(list_ALTER_FDW); 0.00 : 4254f0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4254f4: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4254f9: 48 c7 05 84 5a 24 00 movq $0x457340,0x245a84(%rip) # 66af88 0.00 : 425500: 40 73 45 00 0.00 : 425504: c6 05 9d 5a 24 00 00 movb $0x0,0x245a9d(%rip) # 66afa8 0.00 : 42550b: e8 c0 e2 fd ff callq 4037d0 0.00 : 425510: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTER_FOREIGN); : } : : /* ALTER FOREIGN DATA WRAPPER */ : else if (pg_strcasecmp(prev5_wd, "ALTER") == 0 && 0.00 : 425513: e9 da ca ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "EXTENSION") == 0) : { : static const char *const list_ALTEREXTENSION[] = : {"ADD", "DROP", "UPDATE", "SET SCHEMA", NULL}; : : COMPLETE_WITH_LIST(list_ALTEREXTENSION); 0.00 : 425518: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42551c: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425521: 48 c7 05 5c 5a 24 00 movq $0x4573a0,0x245a5c(%rip) # 66af88 0.00 : 425528: a0 73 45 00 0.00 : 42552c: c6 05 75 5a 24 00 00 movb $0x0,0x245a75(%rip) # 66afa8 0.00 : 425533: e8 98 e2 fd ff callq 4037d0 0.00 : 425538: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER_ENABLE); : } : : /* ALTER EXTENSION */ : else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && 0.00 : 42553b: e9 b2 ca ff ff jmpq 421ff2 : /* CLUSTER */ : : /* : * If the previous word is CLUSTER and not WITHOUT produce list of tables : */ : else if (pg_strcasecmp(prev_wd, "CLUSTER") == 0 && 0.00 : 425540: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425544: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 425549: e8 32 f8 00 00 callq 434d80 0.00 : 42554e: 85 c0 test %eax,%eax 0.00 : 425550: 75 16 jne 425568 0.00 : 425552: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425556: be 0c 10 45 00 mov $0x45100c,%esi 0.00 : 42555b: e8 20 f8 00 00 callq 434d80 0.00 : 425560: 85 c0 test %eax,%eax 0.00 : 425562: 0f 85 de 12 00 00 jne 426846 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, "UNION SELECT 'VERBOSE'"); : : /* : * If the previous words are CLUSTER VERBOSE produce list of tables : */ : else if (pg_strcasecmp(prev_wd, "VERBOSE") == 0 && 0.00 : 425568: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42556c: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 425571: e8 0a f8 00 00 callq 434d80 0.00 : 425576: 85 c0 test %eax,%eax 0.00 : 425578: 75 16 jne 425590 0.00 : 42557a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42557e: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 425583: e8 f8 f7 00 00 callq 434d80 0.00 : 425588: 85 c0 test %eax,%eax 0.00 : 42558a: 0f 84 b2 21 00 00 je 427742 : pg_strcasecmp(prev2_wd, "CLUSTER") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : : /* If we have CLUSTER , then add "USING" */ : else if (pg_strcasecmp(prev2_wd, "CLUSTER") == 0 && 0.00 : 425590: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425594: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 425599: e8 e2 f7 00 00 callq 434d80 0.00 : 42559e: 85 c0 test %eax,%eax 0.00 : 4255a0: 75 16 jne 4255b8 0.00 : 4255a2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4255a6: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4255ab: e8 d0 f7 00 00 callq 434d80 0.00 : 4255b0: 85 c0 test %eax,%eax 0.00 : 4255b2: 0f 85 24 21 00 00 jne 4276dc : pg_strcasecmp(prev_wd, "VERBOSE") != 0) : { : COMPLETE_WITH_CONST("USING"); : } : /* If we have CLUSTER VERBOSE , then add "USING" */ : else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 && 0.00 : 4255b8: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4255bc: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 4255c1: e8 ba f7 00 00 callq 434d80 0.00 : 4255c6: 85 c0 test %eax,%eax 0.00 : 4255c8: 75 16 jne 4255e0 0.00 : 4255ca: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4255ce: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 4255d3: e8 a8 f7 00 00 callq 434d80 0.00 : 4255d8: 85 c0 test %eax,%eax 0.00 : 4255da: 0f 84 3a 21 00 00 je 42771a : } : : /* : * If we have CLUSTER USING, then add the index as well. : */ : else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 && 0.00 : 4255e0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4255e4: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 4255e9: e8 92 f7 00 00 callq 434d80 0.00 : 4255ee: 85 c0 test %eax,%eax 0.00 : 4255f0: 75 12 jne 425604 0.00 : 4255f2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4255f6: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 4255fb: e8 80 f7 00 00 callq 434d80 0.00 : 425600: 85 c0 test %eax,%eax 0.00 : 425602: 74 62 je 425666 : } : : /* : * If we have CLUSTER VERBOSE USING, then add the index as well. : */ : else if (pg_strcasecmp(prev4_wd, "CLUSTER") == 0 && 0.00 : 425604: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425608: be 53 8d 44 00 mov $0x448d53,%esi 0.00 : 42560d: e8 6e f7 00 00 callq 434d80 0.00 : 425612: 85 c0 test %eax,%eax 0.00 : 425614: 75 12 jne 425628 0.00 : 425616: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42561a: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 42561f: e8 5c f7 00 00 callq 434d80 0.00 : 425624: 85 c0 test %eax,%eax 0.00 : 425626: 74 6a je 425692 : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_index_of_table); : } : : /* COMMENT */ : else if (pg_strcasecmp(prev_wd, "COMMENT") == 0) 0.00 : 425628: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42562c: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 425631: e8 4a f7 00 00 callq 434d80 0.00 : 425636: 85 c0 test %eax,%eax 0.00 : 425638: 0f 85 92 00 00 00 jne 4256d0 : COMPLETE_WITH_CONST("ON"); 0.00 : 42563e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425642: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 425647: 48 c7 05 2e 59 24 00 movq $0x4519c4,0x24592e(%rip) # 66af80 0.00 : 42564e: c4 19 45 00 0.00 : 425652: c6 05 4f 59 24 00 00 movb $0x0,0x24594f(%rip) # 66afa8 0.00 : 425659: e8 72 e1 fd ff callq 4037d0 0.00 : 42565e: 48 89 c3 mov %rax,%rbx 0.00 : 425661: e9 8c c9 ff ff jmpq 421ff2 : * If we have CLUSTER USING, then add the index as well. : */ : else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 425666: 48 8b 45 a8 mov -0x58(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 42566a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42566e: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 425673: 48 c7 05 02 59 24 00 movq $0x453030,0x245902(%rip) # 66af80 0.00 : 42567a: 30 30 45 00 : * If we have CLUSTER USING, then add the index as well. : */ : else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 42567e: 48 89 05 0b 59 24 00 mov %rax,0x24590b(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 425685: e8 46 e1 fd ff callq 4037d0 0.00 : 42568a: 48 89 c3 mov %rax,%rbx : } : : /* : * If we have CLUSTER USING, then add the index as well. : */ : else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 && 0.00 : 42568d: e9 60 c9 ff ff jmpq 421ff2 : } : : /* : * If we have CLUSTER VERBOSE USING, then add the index as well. : */ : else if (pg_strcasecmp(prev4_wd, "CLUSTER") == 0 && 0.00 : 425692: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425696: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 42569b: e8 e0 f6 00 00 callq 434d80 0.00 : 4256a0: 85 c0 test %eax,%eax 0.00 : 4256a2: 75 84 jne 425628 : pg_strcasecmp(prev3_wd, "VERBOSE") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 4256a4: 48 8b 45 a8 mov -0x58(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 4256a8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4256ac: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4256b1: 48 c7 05 c4 58 24 00 movq $0x453030,0x2458c4(%rip) # 66af80 0.00 : 4256b8: 30 30 45 00 : */ : else if (pg_strcasecmp(prev4_wd, "CLUSTER") == 0 && : pg_strcasecmp(prev3_wd, "VERBOSE") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 4256bc: 48 89 05 cd 58 24 00 mov %rax,0x2458cd(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_index_of_table); 0.00 : 4256c3: e8 08 e1 fd ff callq 4037d0 0.00 : 4256c8: 48 89 c3 mov %rax,%rbx : } : : /* : * If we have CLUSTER VERBOSE USING, then add the index as well. : */ : else if (pg_strcasecmp(prev4_wd, "CLUSTER") == 0 && 0.00 : 4256cb: e9 22 c9 ff ff jmpq 421ff2 : } : : /* COMMENT */ : else if (pg_strcasecmp(prev_wd, "COMMENT") == 0) : COMPLETE_WITH_CONST("ON"); : else if (pg_strcasecmp(prev2_wd, "COMMENT") == 0 && 0.00 : 4256d0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4256d4: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 4256d9: e8 a2 f6 00 00 callq 434d80 0.00 : 4256de: 85 c0 test %eax,%eax 0.00 : 4256e0: 75 16 jne 4256f8 0.00 : 4256e2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4256e6: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4256eb: e8 90 f6 00 00 callq 434d80 0.00 : 4256f0: 85 c0 test %eax,%eax 0.00 : 4256f2: 0f 84 f3 1e 00 00 je 4275eb : "OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN", "LARGE OBJECT", : "TABLESPACE", "TEXT SEARCH", "ROLE", NULL}; : : COMPLETE_WITH_LIST(list_COMMENT); : } : else if (pg_strcasecmp(prev3_wd, "COMMENT") == 0 && 0.00 : 4256f8: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4256fc: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 425701: e8 7a f6 00 00 callq 434d80 0.00 : 425706: 85 c0 test %eax,%eax 0.00 : 425708: 75 16 jne 425720 0.00 : 42570a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42570e: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425713: e8 68 f6 00 00 callq 434d80 0.00 : 425718: 85 c0 test %eax,%eax 0.00 : 42571a: 0f 84 f3 1e 00 00 je 427613 : static const char *const list_TRANS2[] = : {"DATA WRAPPER", "TABLE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 425720: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425724: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 425729: e8 52 f6 00 00 callq 434d80 0.00 : 42572e: 85 c0 test %eax,%eax 0.00 : 425730: 75 16 jne 425748 0.00 : 425732: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425736: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42573b: e8 40 f6 00 00 callq 434d80 0.00 : 425740: 85 c0 test %eax,%eax 0.00 : 425742: 0f 84 09 1f 00 00 je 427651 : static const char *const list_TRANS2[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); : } : else if (pg_strcasecmp(prev3_wd, "COMMENT") == 0 && 0.00 : 425748: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42574c: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 425751: e8 2a f6 00 00 callq 434d80 0.00 : 425756: 85 c0 test %eax,%eax 0.00 : 425758: 75 16 jne 425770 0.00 : 42575a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42575e: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425763: e8 18 f6 00 00 callq 434d80 0.00 : 425768: 85 c0 test %eax,%eax 0.00 : 42576a: 0f 84 35 1f 00 00 je 4276a5 : pg_strcasecmp(prev2_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_QUERY(Query_for_all_table_constraints); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 425770: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425774: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 425779: e8 02 f6 00 00 callq 434d80 0.00 : 42577e: 85 c0 test %eax,%eax 0.00 : 425780: 75 16 jne 425798 0.00 : 425782: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425786: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42578b: e8 f0 f5 00 00 callq 434d80 0.00 : 425790: 85 c0 test %eax,%eax 0.00 : 425792: 0f 84 70 1c 00 00 je 427408 : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev5_wd, "COMMENT") == 0 && 0.00 : 425798: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42579c: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 4257a1: e8 da f5 00 00 callq 434d80 0.00 : 4257a6: 85 c0 test %eax,%eax 0.00 : 4257a8: 75 16 jne 4257c0 0.00 : 4257aa: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4257ae: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4257b3: e8 c8 f5 00 00 callq 434d80 0.00 : 4257b8: 85 c0 test %eax,%eax 0.00 : 4257ba: 0f 84 86 1c 00 00 je 427446 : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 4257c0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4257c4: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 4257c9: e8 b2 f5 00 00 callq 434d80 0.00 : 4257ce: 85 c0 test %eax,%eax 0.00 : 4257d0: 75 16 jne 4257e8 0.00 : 4257d2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4257d6: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4257db: e8 a0 f5 00 00 callq 434d80 0.00 : 4257e0: 85 c0 test %eax,%eax 0.00 : 4257e2: 0f 84 b6 1c 00 00 je 42749e : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 4257e8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4257ec: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 4257f1: e8 8a f5 00 00 callq 434d80 0.00 : 4257f6: 85 c0 test %eax,%eax 0.00 : 4257f8: 75 16 jne 425810 0.00 : 4257fa: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4257fe: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425803: e8 78 f5 00 00 callq 434d80 0.00 : 425808: 85 c0 test %eax,%eax 0.00 : 42580a: 0f 84 e6 1c 00 00 je 4274f6 : pg_strcasecmp(prev2_wd, "EVENT") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); : } : else if ((pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 425810: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425814: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 425819: e8 62 f5 00 00 callq 434d80 0.00 : 42581e: 85 c0 test %eax,%eax 0.00 : 425820: 75 12 jne 425834 0.00 : 425822: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425826: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42582b: e8 50 f5 00 00 callq 434d80 0.00 : 425830: 85 c0 test %eax,%eax 0.00 : 425832: 74 48 je 42587c 0.00 : 425834: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425838: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 42583d: e8 3e f5 00 00 callq 434d80 0.00 : 425842: 85 c0 test %eax,%eax 0.00 : 425844: 75 12 jne 425858 0.00 : 425846: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42584a: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42584f: e8 2c f5 00 00 callq 434d80 0.00 : 425854: 85 c0 test %eax,%eax 0.00 : 425856: 74 24 je 42587c 0.00 : 425858: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 42585c: be da bb 43 00 mov $0x43bbda,%esi 0.00 : 425861: e8 1a f5 00 00 callq 434d80 0.00 : 425866: 85 c0 test %eax,%eax 0.00 : 425868: 75 3a jne 4258a4 0.00 : 42586a: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42586e: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425873: e8 08 f5 00 00 callq 434d80 0.00 : 425878: 85 c0 test %eax,%eax 0.00 : 42587a: 75 28 jne 4258a4 : pg_strcasecmp(prev3_wd, "ON") == 0) || : (pg_strcasecmp(prev5_wd, "COMMENT") == 0 && : pg_strcasecmp(prev4_wd, "ON") == 0) || : (pg_strcasecmp(prev6_wd, "COMMENT") == 0 && : pg_strcasecmp(prev5_wd, "ON") == 0)) : COMPLETE_WITH_CONST("IS"); 0.00 : 42587c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425880: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 425885: 48 c7 05 f0 56 24 00 movq $0x451033,0x2456f0(%rip) # 66af80 0.00 : 42588c: 33 10 45 00 0.00 : 425890: c6 05 11 57 24 00 00 movb $0x0,0x245711(%rip) # 66afa8 0.00 : 425897: e8 34 df fd ff callq 4037d0 0.00 : 42589c: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "EVENT") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); : } : else if ((pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 42589f: e9 4e c7 ff ff jmpq 421ff2 : : /* : * If we have COPY [BINARY] (which you'd have to type yourself), offer : * list of tables (Also cover the analogous backslash command) : */ : else if (pg_strcasecmp(prev_wd, "COPY") == 0 || 0.00 : 4258a4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4258a8: be f2 bb 43 00 mov $0x43bbf2,%esi 0.00 : 4258ad: e8 ce f4 00 00 callq 434d80 0.00 : 4258b2: 85 c0 test %eax,%eax 0.00 : 4258b4: 74 12 je 4258c8 0.00 : 4258b6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4258ba: be 36 10 45 00 mov $0x451036,%esi 0.00 : 4258bf: e8 bc f4 00 00 callq 434d80 0.00 : 4258c4: 85 c0 test %eax,%eax 0.00 : 4258c6: 75 2c jne 4258f4 : pg_strcasecmp(prev_wd, "\\copy") == 0 || : (pg_strcasecmp(prev2_wd, "COPY") == 0 && : pg_strcasecmp(prev_wd, "BINARY") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 4258c8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4258cc: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4258d1: 48 c7 05 c4 56 24 00 movq $0x454f40,0x2456c4(%rip) # 66afa0 0.00 : 4258d8: 40 4f 45 00 0.00 : 4258dc: 48 c7 05 99 56 24 00 movq $0x0,0x245699(%rip) # 66af80 0.00 : 4258e3: 00 00 00 00 0.00 : 4258e7: e8 e4 de fd ff callq 4037d0 0.00 : 4258ec: 48 89 c3 mov %rax,%rbx : : /* : * If we have COPY [BINARY] (which you'd have to type yourself), offer : * list of tables (Also cover the analogous backslash command) : */ : else if (pg_strcasecmp(prev_wd, "COPY") == 0 || 0.00 : 4258ef: e9 fe c6 ff ff jmpq 421ff2 0.00 : 4258f4: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4258f8: be f2 bb 43 00 mov $0x43bbf2,%esi 0.00 : 4258fd: e8 7e f4 00 00 callq 434d80 0.00 : 425902: 85 c0 test %eax,%eax 0.00 : 425904: 75 12 jne 425918 0.00 : 425906: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42590a: be 3c 10 45 00 mov $0x45103c,%esi 0.00 : 42590f: e8 6c f4 00 00 callq 434d80 0.00 : 425914: 85 c0 test %eax,%eax 0.00 : 425916: 74 b0 je 4258c8 : pg_strcasecmp(prev_wd, "\\copy") == 0 || : (pg_strcasecmp(prev2_wd, "COPY") == 0 && : pg_strcasecmp(prev_wd, "BINARY") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* If we have COPY|BINARY , complete it with "TO" or "FROM" */ : else if (pg_strcasecmp(prev2_wd, "COPY") == 0 || 0.00 : 425918: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42591c: be f2 bb 43 00 mov $0x43bbf2,%esi 0.00 : 425921: e8 5a f4 00 00 callq 434d80 0.00 : 425926: 85 c0 test %eax,%eax 0.00 : 425928: 74 12 je 42593c 0.00 : 42592a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42592e: be 36 10 45 00 mov $0x451036,%esi 0.00 : 425933: e8 48 f4 00 00 callq 434d80 0.00 : 425938: 85 c0 test %eax,%eax 0.00 : 42593a: 75 28 jne 425964 : pg_strcasecmp(prev2_wd, "BINARY") == 0) : { : static const char *const list_FROMTO[] = : {"FROM", "TO", NULL}; : : COMPLETE_WITH_LIST(list_FROMTO); 0.00 : 42593c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425940: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425945: 48 c7 05 38 56 24 00 movq $0x4566e0,0x245638(%rip) # 66af88 0.00 : 42594c: e0 66 45 00 0.00 : 425950: c6 05 51 56 24 00 00 movb $0x0,0x245651(%rip) # 66afa8 0.00 : 425957: e8 74 de fd ff callq 4037d0 0.00 : 42595c: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "\\copy") == 0 || : (pg_strcasecmp(prev2_wd, "COPY") == 0 && : pg_strcasecmp(prev_wd, "BINARY") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* If we have COPY|BINARY , complete it with "TO" or "FROM" */ : else if (pg_strcasecmp(prev2_wd, "COPY") == 0 || 0.00 : 42595f: e9 8e c6 ff ff jmpq 421ff2 0.00 : 425964: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425968: be 3c 10 45 00 mov $0x45103c,%esi 0.00 : 42596d: e8 0e f4 00 00 callq 434d80 0.00 : 425972: 85 c0 test %eax,%eax 0.00 : 425974: 74 c6 je 42593c : {"FROM", "TO", NULL}; : : COMPLETE_WITH_LIST(list_FROMTO); : } : /* If we have COPY|BINARY FROM|TO, complete with filename */ : else if ((pg_strcasecmp(prev3_wd, "COPY") == 0 || 0.00 : 425976: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42597a: be f2 bb 43 00 mov $0x43bbf2,%esi 0.00 : 42597f: e8 fc f3 00 00 callq 434d80 0.00 : 425984: 85 c0 test %eax,%eax 0.00 : 425986: 74 12 je 42599a 0.00 : 425988: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42598c: be 36 10 45 00 mov $0x451036,%esi 0.00 : 425991: e8 ea f3 00 00 callq 434d80 0.00 : 425996: 85 c0 test %eax,%eax 0.00 : 425998: 75 45 jne 4259df 0.00 : 42599a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42599e: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 4259a3: e8 d8 f3 00 00 callq 434d80 0.00 : 4259a8: 85 c0 test %eax,%eax 0.00 : 4259aa: 74 12 je 4259be 0.00 : 4259ac: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4259b0: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 4259b5: e8 c6 f3 00 00 callq 434d80 0.00 : 4259ba: 85 c0 test %eax,%eax 0.00 : 4259bc: 75 33 jne 4259f1 : pg_strcasecmp(prev3_wd, "BINARY") == 0) && : (pg_strcasecmp(prev_wd, "FROM") == 0 || : pg_strcasecmp(prev_wd, "TO") == 0)) : { : completion_charp = ""; : matches = completion_matches(text, complete_from_files); 0.00 : 4259be: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4259c2: be a0 bd 42 00 mov $0x42bda0,%esi : pg_strcasecmp(prev3_wd, "\\copy") == 0 || : pg_strcasecmp(prev3_wd, "BINARY") == 0) && : (pg_strcasecmp(prev_wd, "FROM") == 0 || : pg_strcasecmp(prev_wd, "TO") == 0)) : { : completion_charp = ""; 0.00 : 4259c7: 48 c7 05 ae 55 24 00 movq $0x436917,0x2455ae(%rip) # 66af80 0.00 : 4259ce: 17 69 43 00 : matches = completion_matches(text, complete_from_files); 0.00 : 4259d2: e8 f9 dd fd ff callq 4037d0 0.00 : 4259d7: 48 89 c3 mov %rax,%rbx : {"FROM", "TO", NULL}; : : COMPLETE_WITH_LIST(list_FROMTO); : } : /* If we have COPY|BINARY FROM|TO, complete with filename */ : else if ((pg_strcasecmp(prev3_wd, "COPY") == 0 || 0.00 : 4259da: e9 13 c6 ff ff jmpq 421ff2 0.00 : 4259df: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4259e3: be 3c 10 45 00 mov $0x45103c,%esi 0.00 : 4259e8: e8 93 f3 00 00 callq 434d80 0.00 : 4259ed: 85 c0 test %eax,%eax 0.00 : 4259ef: 74 a9 je 42599a : completion_charp = ""; : matches = completion_matches(text, complete_from_files); : } : : /* Handle COPY|BINARY FROM|TO filename */ : else if ((pg_strcasecmp(prev4_wd, "COPY") == 0 || 0.00 : 4259f1: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4259f5: be f2 bb 43 00 mov $0x43bbf2,%esi 0.00 : 4259fa: e8 81 f3 00 00 callq 434d80 0.00 : 4259ff: 85 c0 test %eax,%eax 0.00 : 425a01: 74 12 je 425a15 0.00 : 425a03: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425a07: be 36 10 45 00 mov $0x451036,%esi 0.00 : 425a0c: e8 6f f3 00 00 callq 434d80 0.00 : 425a11: 85 c0 test %eax,%eax 0.00 : 425a13: 75 4c jne 425a61 0.00 : 425a15: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425a19: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 425a1e: e8 5d f3 00 00 callq 434d80 0.00 : 425a23: 85 c0 test %eax,%eax 0.00 : 425a25: 74 12 je 425a39 0.00 : 425a27: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425a2b: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 425a30: e8 4b f3 00 00 callq 434d80 0.00 : 425a35: 85 c0 test %eax,%eax 0.00 : 425a37: 75 3a jne 425a73 : pg_strcasecmp(prev2_wd, "TO") == 0)) : { : static const char *const list_COPY[] = : {"BINARY", "OIDS", "DELIMITER", "NULL", "CSV", "ENCODING", NULL}; : : COMPLETE_WITH_LIST(list_COPY); 0.00 : 425a39: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425a3d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425a42: 48 c7 05 3b 55 24 00 movq $0x4566a0,0x24553b(%rip) # 66af88 0.00 : 425a49: a0 66 45 00 0.00 : 425a4d: c6 05 54 55 24 00 00 movb $0x0,0x245554(%rip) # 66afa8 0.00 : 425a54: e8 77 dd fd ff callq 4037d0 0.00 : 425a59: 48 89 c3 mov %rax,%rbx : completion_charp = ""; : matches = completion_matches(text, complete_from_files); : } : : /* Handle COPY|BINARY FROM|TO filename */ : else if ((pg_strcasecmp(prev4_wd, "COPY") == 0 || 0.00 : 425a5c: e9 91 c5 ff ff jmpq 421ff2 0.00 : 425a61: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425a65: be 3c 10 45 00 mov $0x45103c,%esi 0.00 : 425a6a: e8 11 f3 00 00 callq 434d80 0.00 : 425a6f: 85 c0 test %eax,%eax 0.00 : 425a71: 74 a2 je 425a15 : : COMPLETE_WITH_LIST(list_COPY); : } : : /* Handle COPY|BINARY FROM|TO filename CSV */ : else if (pg_strcasecmp(prev_wd, "CSV") == 0 && 0.00 : 425a73: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425a77: be 43 10 45 00 mov $0x451043,%esi 0.00 : 425a7c: e8 ff f2 00 00 callq 434d80 0.00 : 425a81: 85 c0 test %eax,%eax 0.00 : 425a83: 75 4c jne 425ad1 0.00 : 425a85: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425a89: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 425a8e: e8 ed f2 00 00 callq 434d80 0.00 : 425a93: 85 c0 test %eax,%eax 0.00 : 425a95: 74 12 je 425aa9 0.00 : 425a97: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425a9b: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 425aa0: e8 db f2 00 00 callq 434d80 0.00 : 425aa5: 85 c0 test %eax,%eax 0.00 : 425aa7: 75 28 jne 425ad1 : pg_strcasecmp(prev3_wd, "TO") == 0)) : { : static const char *const list_CSV[] = : {"HEADER", "QUOTE", "ESCAPE", "FORCE QUOTE", "FORCE NOT NULL", NULL}; : : COMPLETE_WITH_LIST(list_CSV); 0.00 : 425aa9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425aad: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 425ab2: 48 c7 05 cb 54 24 00 movq $0x456660,0x2454cb(%rip) # 66af88 0.00 : 425ab9: 60 66 45 00 0.00 : 425abd: c6 05 e4 54 24 00 00 movb $0x0,0x2454e4(%rip) # 66afa8 0.00 : 425ac4: e8 07 dd fd ff callq 4037d0 0.00 : 425ac9: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_COPY); : } : : /* Handle COPY|BINARY FROM|TO filename CSV */ : else if (pg_strcasecmp(prev_wd, "CSV") == 0 && 0.00 : 425acc: e9 21 c5 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_CSV); : } : : /* CREATE DATABASE */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 425ad1: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425ad5: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425ada: e8 a1 f2 00 00 callq 434d80 0.00 : 425adf: 85 c0 test %eax,%eax 0.00 : 425ae1: 75 16 jne 425af9 0.00 : 425ae3: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425ae7: be 67 bc 43 00 mov $0x43bc67,%esi 0.00 : 425aec: e8 8f f2 00 00 callq 434d80 0.00 : 425af1: 85 c0 test %eax,%eax 0.00 : 425af3: 0f 84 4a 1a 00 00 je 427543 : NULL}; : : COMPLETE_WITH_LIST(list_DATABASE); : } : : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 425af9: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425afd: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425b02: e8 79 f2 00 00 callq 434d80 0.00 : 425b07: 85 c0 test %eax,%eax 0.00 : 425b09: 75 16 jne 425b21 0.00 : 425b0b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425b0f: be 67 bc 43 00 mov $0x43bc67,%esi 0.00 : 425b14: e8 67 f2 00 00 callq 434d80 0.00 : 425b19: 85 c0 test %eax,%eax 0.00 : 425b1b: 0f 84 4a 1a 00 00 je 42756b : pg_strcasecmp(prev_wd, "TEMPLATE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_template_databases); : : /* CREATE EXTENSION */ : /* Complete with available extensions rather than installed ones. */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 425b21: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425b25: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425b2a: e8 51 f2 00 00 callq 434d80 0.00 : 425b2f: 85 c0 test %eax,%eax 0.00 : 425b31: 75 16 jne 425b49 0.00 : 425b33: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425b37: be df bc 43 00 mov $0x43bcdf,%esi 0.00 : 425b3c: e8 3f f2 00 00 callq 434d80 0.00 : 425b41: 85 c0 test %eax,%eax 0.00 : 425b43: 0f 84 59 1a 00 00 je 4275a2 : pg_strcasecmp(prev_wd, "EXTENSION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_available_extensions); : /* CREATE EXTENSION */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 425b49: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425b4d: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425b52: e8 29 f2 00 00 callq 434d80 0.00 : 425b57: 85 c0 test %eax,%eax 0.00 : 425b59: 75 16 jne 425b71 0.00 : 425b5b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425b5f: be df bc 43 00 mov $0x43bcdf,%esi 0.00 : 425b64: e8 17 f2 00 00 callq 434d80 0.00 : 425b69: 85 c0 test %eax,%eax 0.00 : 425b6b: 0f 84 52 1a 00 00 je 4275c3 : pg_strcasecmp(prev2_wd, "EXTENSION") == 0) : COMPLETE_WITH_CONST("WITH SCHEMA"); : : /* CREATE FOREIGN */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 425b71: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425b75: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425b7a: e8 01 f2 00 00 callq 434d80 0.00 : 425b7f: 85 c0 test %eax,%eax 0.00 : 425b81: 75 16 jne 425b99 0.00 : 425b83: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425b87: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 425b8c: e8 ef f1 00 00 callq 434d80 0.00 : 425b91: 85 c0 test %eax,%eax 0.00 : 425b93: 0f 84 25 14 00 00 je 426fbe : : COMPLETE_WITH_LIST(list_CREATE_FOREIGN); : } : : /* CREATE FOREIGN DATA WRAPPER */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 425b99: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425b9d: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425ba2: e8 d9 f1 00 00 callq 434d80 0.00 : 425ba7: 85 c0 test %eax,%eax 0.00 : 425ba9: 75 16 jne 425bc1 0.00 : 425bab: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425baf: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 425bb4: e8 c7 f1 00 00 callq 434d80 0.00 : 425bb9: 85 c0 test %eax,%eax 0.00 : 425bbb: 0f 84 25 14 00 00 je 426fe6 : COMPLETE_WITH_LIST(list_CREATE_FOREIGN_DATA_WRAPPER); : } : : /* CREATE INDEX */ : /* First off we complete CREATE UNIQUE with "INDEX" */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 425bc1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425bc5: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425bca: e8 b1 f1 00 00 callq 434d80 0.00 : 425bcf: 85 c0 test %eax,%eax 0.00 : 425bd1: 75 16 jne 425be9 0.00 : 425bd3: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425bd7: be 53 10 45 00 mov $0x451053,%esi 0.00 : 425bdc: e8 9f f1 00 00 callq 434d80 0.00 : 425be1: 85 c0 test %eax,%eax 0.00 : 425be3: 0f 84 51 14 00 00 je 42703a : pg_strcasecmp(prev_wd, "UNIQUE") == 0) : COMPLETE_WITH_CONST("INDEX"); : /* If we have CREATE|UNIQUE INDEX, then add "ON" and existing indexes */ : else if (pg_strcasecmp(prev_wd, "INDEX") == 0 && 0.00 : 425be9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425bed: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425bf2: e8 89 f1 00 00 callq 434d80 0.00 : 425bf7: 85 c0 test %eax,%eax 0.00 : 425bf9: 75 50 jne 425c4b 0.00 : 425bfb: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425bff: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425c04: e8 77 f1 00 00 callq 434d80 0.00 : 425c09: 85 c0 test %eax,%eax 0.00 : 425c0b: 74 12 je 425c1f 0.00 : 425c0d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425c11: be 53 10 45 00 mov $0x451053,%esi 0.00 : 425c16: e8 65 f1 00 00 callq 434d80 0.00 : 425c1b: 85 c0 test %eax,%eax 0.00 : 425c1d: 75 2c jne 425c4b : (pg_strcasecmp(prev2_wd, "CREATE") == 0 || : pg_strcasecmp(prev2_wd, "UNIQUE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, 0.00 : 425c1f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 425c23: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 425c28: 48 c7 05 6d 53 24 00 movq $0x454f80,0x24536d(%rip) # 66afa0 0.00 : 425c2f: 80 4f 45 00 0.00 : 425c33: 48 c7 05 42 53 24 00 movq $0x453478,0x245342(%rip) # 66af80 0.00 : 425c3a: 78 34 45 00 0.00 : 425c3e: e8 8d db fd ff callq 4037d0 0.00 : 425c43: 48 89 c3 mov %rax,%rbx : /* First off we complete CREATE UNIQUE with "INDEX" */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "UNIQUE") == 0) : COMPLETE_WITH_CONST("INDEX"); : /* If we have CREATE|UNIQUE INDEX, then add "ON" and existing indexes */ : else if (pg_strcasecmp(prev_wd, "INDEX") == 0 && 0.00 : 425c46: e9 a7 c3 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "UNIQUE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, : " UNION SELECT 'ON'" : " UNION SELECT 'CONCURRENTLY'"); : /* Complete ... INDEX [] ON with a list of tables */ : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || 0.00 : 425c4b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425c4f: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425c54: e8 27 f1 00 00 callq 434d80 0.00 : 425c59: 85 c0 test %eax,%eax 0.00 : 425c5b: 74 16 je 425c73 0.00 : 425c5d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425c61: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425c66: e8 15 f1 00 00 callq 434d80 0.00 : 425c6b: 85 c0 test %eax,%eax 0.00 : 425c6d: 0f 85 ef 13 00 00 jne 427062 0.00 : 425c73: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425c77: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425c7c: e8 ff f0 00 00 callq 434d80 0.00 : 425c81: 85 c0 test %eax,%eax 0.00 : 425c83: 0f 84 1c 14 00 00 je 4270a5 : pg_strcasecmp(prev2_wd, "INDEX") == 0 || : pg_strcasecmp(prev2_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : /* If we have CREATE|UNIQUE INDEX CONCURRENTLY, then add "ON" */ : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || 0.00 : 425c89: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425c8d: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425c92: e8 e9 f0 00 00 callq 434d80 0.00 : 425c97: 85 c0 test %eax,%eax 0.00 : 425c99: 74 12 je 425cad 0.00 : 425c9b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425c9f: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425ca4: e8 d7 f0 00 00 callq 434d80 0.00 : 425ca9: 85 c0 test %eax,%eax 0.00 : 425cab: 75 16 jne 425cc3 0.00 : 425cad: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 425cb1: be 5a 10 45 00 mov $0x45105a,%esi 0.00 : 425cb6: e8 c5 f0 00 00 callq 434d80 0.00 : 425cbb: 85 c0 test %eax,%eax 0.00 : 425cbd: 0f 84 ba 13 00 00 je 42707d : pg_strcasecmp(prev2_wd, "INDEX") == 0) && : pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_CONST("ON"); : /* If we have CREATE|UNIQUE INDEX , then add "ON" or "CONCURRENTLY" */ : else if ((pg_strcasecmp(prev3_wd, "CREATE") == 0 || 0.00 : 425cc3: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425cc7: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425ccc: e8 af f0 00 00 callq 434d80 0.00 : 425cd1: 85 c0 test %eax,%eax 0.00 : 425cd3: 74 12 je 425ce7 0.00 : 425cd5: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425cd9: be 53 10 45 00 mov $0x451053,%esi 0.00 : 425cde: e8 9d f0 00 00 callq 434d80 0.00 : 425ce3: 85 c0 test %eax,%eax 0.00 : 425ce5: 75 16 jne 425cfd 0.00 : 425ce7: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425ceb: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425cf0: e8 8b f0 00 00 callq 434d80 0.00 : 425cf5: 85 c0 test %eax,%eax 0.00 : 425cf7: 0f 84 d4 13 00 00 je 4270d1 : : /* : * Complete INDEX ON
with a list of table columns (which : * should really be in parens) : */ : else if ((pg_strcasecmp(prev4_wd, "INDEX") == 0 || 0.00 : 425cfd: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425d01: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425d06: e8 75 f0 00 00 callq 434d80 0.00 : 425d0b: 85 c0 test %eax,%eax 0.00 : 425d0d: 74 16 je 425d25 0.00 : 425d0f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425d13: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425d18: e8 63 f0 00 00 callq 434d80 0.00 : 425d1d: 85 c0 test %eax,%eax 0.00 : 425d1f: 0f 85 d4 13 00 00 jne 4270f9 0.00 : 425d25: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425d29: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425d2e: e8 4d f0 00 00 callq 434d80 0.00 : 425d33: 85 c0 test %eax,%eax 0.00 : 425d35: 0f 84 bc 15 00 00 je 4272f7 : static const char *const list_CREATE_INDEX2[] = : {"(", "USING", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_INDEX2); : } : else if ((pg_strcasecmp(prev5_wd, "INDEX") == 0 || 0.00 : 425d3b: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425d3f: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425d44: e8 37 f0 00 00 callq 434d80 0.00 : 425d49: 85 c0 test %eax,%eax 0.00 : 425d4b: 74 16 je 425d63 0.00 : 425d4d: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425d51: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425d56: e8 25 f0 00 00 callq 434d80 0.00 : 425d5b: 85 c0 test %eax,%eax 0.00 : 425d5d: 0f 85 bc 15 00 00 jne 42731f 0.00 : 425d63: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425d67: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425d6c: e8 0f f0 00 00 callq 434d80 0.00 : 425d71: 85 c0 test %eax,%eax 0.00 : 425d73: 0f 84 9b 13 00 00 je 427114 : pg_strcasecmp(prev4_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); : /* same if you put in USING */ : else if (pg_strcasecmp(prev5_wd, "ON") == 0 && 0.00 : 425d79: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425d7d: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425d82: e8 f9 ef 00 00 callq 434d80 0.00 : 425d87: 85 c0 test %eax,%eax 0.00 : 425d89: 75 16 jne 425da1 0.00 : 425d8b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425d8f: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 425d94: e8 e7 ef 00 00 callq 434d80 0.00 : 425d99: 85 c0 test %eax,%eax 0.00 : 425d9b: 0f 84 4d 14 00 00 je 4271ee : pg_strcasecmp(prev3_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev4_wd, ""); : /* Complete USING with an index method */ : else if ((pg_strcasecmp(prev6_wd, "INDEX") == 0 || 0.00 : 425da1: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425da5: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425daa: e8 d1 ef 00 00 callq 434d80 0.00 : 425daf: 85 c0 test %eax,%eax 0.00 : 425db1: 74 16 je 425dc9 0.00 : 425db3: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425db7: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 425dbc: e8 bf ef 00 00 callq 434d80 0.00 : 425dc1: 85 c0 test %eax,%eax 0.00 : 425dc3: 0f 85 71 15 00 00 jne 42733a 0.00 : 425dc9: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425dcd: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425dd2: e8 a9 ef 00 00 callq 434d80 0.00 : 425dd7: 85 c0 test %eax,%eax 0.00 : 425dd9: 0f 84 ca 15 00 00 je 4273a9 : pg_strcasecmp(prev5_wd, "INDEX") == 0 || : pg_strcasecmp(prev4_wd, "INDEX") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_access_methods); : else if (pg_strcasecmp(prev4_wd, "ON") == 0 && 0.00 : 425ddf: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425de3: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425de8: e8 93 ef 00 00 callq 434d80 0.00 : 425ded: 85 c0 test %eax,%eax 0.00 : 425def: 75 16 jne 425e07 0.00 : 425df1: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425df5: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425dfa: e8 81 ef 00 00 callq 434d80 0.00 : 425dff: 85 c0 test %eax,%eax 0.00 : 425e01: 0f 85 4e 15 00 00 jne 427355 : pg_strcasecmp(prev2_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); : : /* CREATE POLICY */ : /* Complete "CREATE POLICY ON" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 425e07: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425e0b: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425e10: e8 6b ef 00 00 callq 434d80 0.00 : 425e15: 85 c0 test %eax,%eax 0.00 : 425e17: 75 16 jne 425e2f 0.00 : 425e19: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425e1d: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425e22: e8 59 ef 00 00 callq 434d80 0.00 : 425e27: 85 c0 test %eax,%eax 0.00 : 425e29: 0f 84 b1 15 00 00 je 4273e0 : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete "CREATE POLICY ON
" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 425e2f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425e33: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425e38: e8 43 ef 00 00 callq 434d80 0.00 : 425e3d: 85 c0 test %eax,%eax 0.00 : 425e3f: 75 16 jne 425e57 0.00 : 425e41: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425e45: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425e4a: e8 31 ef 00 00 callq 434d80 0.00 : 425e4f: 85 c0 test %eax,%eax 0.00 : 425e51: 0f 84 1b 0a 00 00 je 426872 : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* Complete "CREATE POLICY ON
FOR|TO|USING|WITH CHECK" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 425e57: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425e5b: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425e60: e8 1b ef 00 00 callq 434d80 0.00 : 425e65: 85 c0 test %eax,%eax 0.00 : 425e67: 75 16 jne 425e7f 0.00 : 425e69: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425e6d: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425e72: e8 09 ef 00 00 callq 434d80 0.00 : 425e77: 85 c0 test %eax,%eax 0.00 : 425e79: 0f 84 35 0a 00 00 je 4268b4 : {"FOR", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); : } : /* Complete "CREATE POLICY ON
FOR ALL|SELECT|INSERT|UPDATE|DELETE" */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 425e7f: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425e83: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425e88: e8 f3 ee 00 00 callq 434d80 0.00 : 425e8d: 85 c0 test %eax,%eax 0.00 : 425e8f: 75 16 jne 425ea7 0.00 : 425e91: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425e95: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425e9a: e8 e1 ee 00 00 callq 434d80 0.00 : 425e9f: 85 c0 test %eax,%eax 0.00 : 425ea1: 0f 84 4b 0a 00 00 je 4268f2 : {"ALL", "SELECT", "INSERT", "UPDATE", "DELETE", NULL}; : : COMPLETE_WITH_LIST(list_POLICYCMDS); : } : /* Complete "CREATE POLICY ON
FOR INSERT TO|WITH CHECK" */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 425ea7: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425eab: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425eb0: e8 cb ee 00 00 callq 434d80 0.00 : 425eb5: 85 c0 test %eax,%eax 0.00 : 425eb7: 75 16 jne 425ecf 0.00 : 425eb9: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425ebd: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425ec2: e8 b9 ee 00 00 callq 434d80 0.00 : 425ec7: 85 c0 test %eax,%eax 0.00 : 425ec9: 0f 84 77 0a 00 00 je 426946 : } : /* : * Complete "CREATE POLICY ON
FOR SELECT TO|USING" : * Complete "CREATE POLICY ON
FOR DELETE TO|USING" : */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 425ecf: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425ed3: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425ed8: e8 a3 ee 00 00 callq 434d80 0.00 : 425edd: 85 c0 test %eax,%eax 0.00 : 425edf: 75 16 jne 425ef7 0.00 : 425ee1: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425ee5: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425eea: e8 91 ee 00 00 callq 434d80 0.00 : 425eef: 85 c0 test %eax,%eax 0.00 : 425ef1: 0f 84 a3 0a 00 00 je 42699a : } : /* : * Complete "CREATE POLICY ON
FOR ALL TO|USING|WITH CHECK" : * Complete "CREATE POLICY ON
FOR UPDATE TO|USING|WITH CHECK" : */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 425ef7: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425efb: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425f00: e8 7b ee 00 00 callq 434d80 0.00 : 425f05: 85 c0 test %eax,%eax 0.00 : 425f07: 75 16 jne 425f1f 0.00 : 425f09: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425f0d: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 425f12: e8 69 ee 00 00 callq 434d80 0.00 : 425f17: 85 c0 test %eax,%eax 0.00 : 425f19: 0f 84 e1 0a 00 00 je 426a00 : {"TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); : } : /* Complete "CREATE POLICY ON
TO " */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 425f1f: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425f23: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425f28: e8 53 ee 00 00 callq 434d80 0.00 : 425f2d: 85 c0 test %eax,%eax 0.00 : 425f2f: 75 16 jne 425f47 0.00 : 425f31: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425f35: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425f3a: e8 41 ee 00 00 callq 434d80 0.00 : 425f3f: 85 c0 test %eax,%eax 0.00 : 425f41: 0f 84 1f 0b 00 00 je 426a66 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : /* Complete "CREATE POLICY ON
USING (" */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 425f47: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 425f4b: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425f50: e8 2b ee 00 00 callq 434d80 0.00 : 425f55: 85 c0 test %eax,%eax 0.00 : 425f57: 75 16 jne 425f6f 0.00 : 425f59: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 425f5d: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 425f62: e8 19 ee 00 00 callq 434d80 0.00 : 425f67: 85 c0 test %eax,%eax 0.00 : 425f69: 0f 84 44 0b 00 00 je 426ab3 : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); : : /* CREATE RULE */ : /* Complete "CREATE RULE " with "AS" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 425f6f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425f73: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425f78: e8 03 ee 00 00 callq 434d80 0.00 : 425f7d: 85 c0 test %eax,%eax 0.00 : 425f7f: 75 16 jne 425f97 0.00 : 425f81: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425f85: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 425f8a: e8 f1 ed 00 00 callq 434d80 0.00 : 425f8f: 85 c0 test %eax,%eax 0.00 : 425f91: 0f 84 70 0b 00 00 je 426b07 : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE RULE AS with "ON" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 425f97: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425f9b: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 425fa0: e8 db ed 00 00 callq 434d80 0.00 : 425fa5: 85 c0 test %eax,%eax 0.00 : 425fa7: 75 16 jne 425fbf 0.00 : 425fa9: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425fad: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 425fb2: e8 c9 ed 00 00 callq 434d80 0.00 : 425fb7: 85 c0 test %eax,%eax 0.00 : 425fb9: 0f 84 70 0b 00 00 je 426b2f : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete "RULE * AS ON" with SELECT|UPDATE|DELETE|INSERT */ : else if (pg_strcasecmp(prev4_wd, "RULE") == 0 && 0.00 : 425fbf: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 425fc3: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 425fc8: e8 b3 ed 00 00 callq 434d80 0.00 : 425fcd: 85 c0 test %eax,%eax 0.00 : 425fcf: 75 16 jne 425fe7 0.00 : 425fd1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425fd5: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 425fda: e8 a1 ed 00 00 callq 434d80 0.00 : 425fdf: 85 c0 test %eax,%eax 0.00 : 425fe1: 0f 84 86 0b 00 00 je 426b6d : {"SELECT", "UPDATE", "INSERT", "DELETE", NULL}; : : COMPLETE_WITH_LIST(rule_events); : } : /* Complete "AS ON " with a "TO" */ : else if (pg_strcasecmp(prev3_wd, "AS") == 0 && 0.00 : 425fe7: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 425feb: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 425ff0: e8 8b ed 00 00 callq 434d80 0.00 : 425ff5: 85 c0 test %eax,%eax 0.00 : 425ff7: 75 16 jne 42600f 0.00 : 425ff9: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 425ffd: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 426002: e8 79 ed 00 00 callq 434d80 0.00 : 426007: 85 c0 test %eax,%eax 0.00 : 426009: 0f 84 9c 0b 00 00 je 426bab : pg_strcasecmp(prev2_wd, "ON") == 0 && : (pg_toupper((unsigned char) prev_wd[4]) == 'T' || : pg_toupper((unsigned char) prev_wd[5]) == 'T')) : COMPLETE_WITH_CONST("TO"); : /* Complete "AS ON TO" with a table name */ : else if (pg_strcasecmp(prev4_wd, "AS") == 0 && 0.00 : 42600f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 426013: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 426018: e8 63 ed 00 00 callq 434d80 0.00 : 42601d: 85 c0 test %eax,%eax /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:2429 16.67 : 42601f: 75 16 jne 426037 0.00 : 426021: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426025: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42602a: e8 51 ed 00 00 callq 434d80 0.00 : 42602f: 85 c0 test %eax,%eax 0.00 : 426031: 0f 84 c2 0b 00 00 je 426bf9 : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* CREATE SERVER */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426037: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42603b: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426040: e8 3b ed 00 00 callq 434d80 0.00 : 426045: 85 c0 test %eax,%eax 0.00 : 426047: 75 16 jne 42605f 0.00 : 426049: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42604d: be e6 be 43 00 mov $0x43bee6,%esi 0.00 : 426052: e8 29 ed 00 00 callq 434d80 0.00 : 426057: 85 c0 test %eax,%eax 0.00 : 426059: 0f 84 dc 0b 00 00 je 426c3b : COMPLETE_WITH_LIST(list_CREATE_SERVER); : } : : /* CREATE TABLE */ : /* Complete "CREATE TEMP/TEMPORARY" with the possible temp objects */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 42605f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426063: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426068: e8 13 ed 00 00 callq 434d80 0.00 : 42606d: 85 c0 test %eax,%eax 0.00 : 42606f: 75 4c jne 4260bd 0.00 : 426071: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426075: be 67 10 45 00 mov $0x451067,%esi 0.00 : 42607a: e8 01 ed 00 00 callq 434d80 0.00 : 42607f: 85 c0 test %eax,%eax 0.00 : 426081: 74 12 je 426095 0.00 : 426083: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426087: be 6c 10 45 00 mov $0x45106c,%esi 0.00 : 42608c: e8 ef ec 00 00 callq 434d80 0.00 : 426091: 85 c0 test %eax,%eax 0.00 : 426093: 75 28 jne 4260bd : pg_strcasecmp(prev_wd, "TEMPORARY") == 0)) : { : static const char *const list_TEMP[] = : {"SEQUENCE", "TABLE", "VIEW", NULL}; : : COMPLETE_WITH_LIST(list_TEMP); 0.00 : 426095: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426099: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42609e: 48 c7 05 df 4e 24 00 movq $0x456420,0x244edf(%rip) # 66af88 0.00 : 4260a5: 20 64 45 00 0.00 : 4260a9: c6 05 f8 4e 24 00 00 movb $0x0,0x244ef8(%rip) # 66afa8 0.00 : 4260b0: e8 1b d7 fd ff callq 4037d0 0.00 : 4260b5: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST(list_CREATE_SERVER); : } : : /* CREATE TABLE */ : /* Complete "CREATE TEMP/TEMPORARY" with the possible temp objects */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 4260b8: e9 35 bf ff ff jmpq 421ff2 : {"SEQUENCE", "TABLE", "VIEW", NULL}; : : COMPLETE_WITH_LIST(list_TEMP); : } : /* Complete "CREATE UNLOGGED" with TABLE */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 4260bd: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4260c1: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4260c6: e8 b5 ec 00 00 callq 434d80 0.00 : 4260cb: 85 c0 test %eax,%eax 0.00 : 4260cd: 75 16 jne 4260e5 0.00 : 4260cf: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4260d3: be 76 10 45 00 mov $0x451076,%esi 0.00 : 4260d8: e8 a3 ec 00 00 callq 434d80 0.00 : 4260dd: 85 c0 test %eax,%eax 0.00 : 4260df: 0f 84 7e 0b 00 00 je 426c63 : : COMPLETE_WITH_LIST(list_UNLOGGED); : } : : /* CREATE TABLESPACE */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 4260e5: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4260e9: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4260ee: e8 8d ec 00 00 callq 434d80 0.00 : 4260f3: 85 c0 test %eax,%eax 0.00 : 4260f5: 75 16 jne 42610d 0.00 : 4260f7: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4260fb: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 426100: e8 7b ec 00 00 callq 434d80 0.00 : 426105: 85 c0 test %eax,%eax 0.00 : 426107: 0f 84 7e 0b 00 00 je 426c8b : {"OWNER", "LOCATION", NULL}; : : COMPLETE_WITH_LIST(list_CREATETABLESPACE); : } : /* Complete CREATE TABLESPACE name OWNER name with "LOCATION" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 42610d: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 426111: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426116: e8 65 ec 00 00 callq 434d80 0.00 : 42611b: 85 c0 test %eax,%eax 0.00 : 42611d: 75 16 jne 426135 0.00 : 42611f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 426123: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 426128: e8 53 ec 00 00 callq 434d80 0.00 : 42612d: 85 c0 test %eax,%eax 0.00 : 42612f: 0f 84 7e 0b 00 00 je 426cb3 : { : COMPLETE_WITH_CONST("LOCATION"); : } : : /* CREATE TEXT SEARCH */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426135: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426139: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 42613e: e8 3d ec 00 00 callq 434d80 0.00 : 426143: 85 c0 test %eax,%eax 0.00 : 426145: 75 16 jne 42615d 0.00 : 426147: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42614b: be 14 10 45 00 mov $0x451014,%esi 0.00 : 426150: e8 2b ec 00 00 callq 434d80 0.00 : 426155: 85 c0 test %eax,%eax 0.00 : 426157: 0f 84 94 0b 00 00 je 426cf1 : static const char *const list_CREATETEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETEXTSEARCH); : } : else if (pg_strcasecmp(prev4_wd, "TEXT") == 0 && 0.00 : 42615d: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 426161: be 14 10 45 00 mov $0x451014,%esi 0.00 : 426166: e8 15 ec 00 00 callq 434d80 0.00 : 42616b: 85 c0 test %eax,%eax 0.00 : 42616d: 75 16 jne 426185 0.00 : 42616f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426173: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 426178: e8 03 ec 00 00 callq 434d80 0.00 : 42617d: 85 c0 test %eax,%eax 0.00 : 42617f: 0f 84 aa 0b 00 00 je 426d2f : pg_strcasecmp(prev2_wd, "CONFIGURATION") == 0) : COMPLETE_WITH_CONST("("); : : /* CREATE TRIGGER */ : /* complete CREATE TRIGGER with BEFORE,AFTER */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426185: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426189: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 42618e: e8 ed eb 00 00 callq 434d80 0.00 : 426193: 85 c0 test %eax,%eax 0.00 : 426195: 75 16 jne 4261ad 0.00 : 426197: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42619b: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 4261a0: e8 db eb 00 00 callq 434d80 0.00 : 4261a5: 85 c0 test %eax,%eax 0.00 : 4261a7: 0f 84 c0 0b 00 00 je 426d6d : {"BEFORE", "AFTER", "INSTEAD OF", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER); : } : /* complete CREATE TRIGGER BEFORE,AFTER with an event */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4261ad: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4261b1: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4261b6: e8 c5 eb 00 00 callq 434d80 0.00 : 4261bb: 85 c0 test %eax,%eax 0.00 : 4261bd: 75 16 jne 4261d5 0.00 : 4261bf: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4261c3: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 4261c8: e8 b3 eb 00 00 callq 434d80 0.00 : 4261cd: 85 c0 test %eax,%eax 0.00 : 4261cf: 0f 84 c0 0b 00 00 je 426d95 : {"INSERT", "DELETE", "UPDATE", "TRUNCATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); : } : /* complete CREATE TRIGGER INSTEAD OF with an event */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 4261d5: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4261d9: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4261de: e8 9d eb 00 00 callq 434d80 0.00 : 4261e3: 85 c0 test %eax,%eax 0.00 : 4261e5: 75 16 jne 4261fd 0.00 : 4261e7: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4261eb: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 4261f0: e8 8b eb 00 00 callq 434d80 0.00 : 4261f5: 85 c0 test %eax,%eax 0.00 : 4261f7: 0f 84 e8 0b 00 00 je 426de5 : {"INSERT", "DELETE", "UPDATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); : } : /* complete CREATE TRIGGER BEFORE,AFTER sth with OR,ON */ : else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 4261fd: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 426201: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426206: e8 75 eb 00 00 callq 434d80 0.00 : 42620b: 85 c0 test %eax,%eax 0.00 : 42620d: 75 16 jne 426225 0.00 : 42620f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 426213: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 426218: e8 63 eb 00 00 callq 434d80 0.00 : 42621d: 85 c0 test %eax,%eax 0.00 : 42621f: 0f 84 14 0c 00 00 je 426e39 0.00 : 426225: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 426229: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 42622e: e8 4d eb 00 00 callq 434d80 0.00 : 426233: 85 c0 test %eax,%eax 0.00 : 426235: 75 16 jne 42624d 0.00 : 426237: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42623b: be 9b 10 45 00 mov $0x45109b,%esi 0.00 : 426240: e8 3b eb 00 00 callq 434d80 0.00 : 426245: 85 c0 test %eax,%eax 0.00 : 426247: 0f 84 26 0c 00 00 je 426e73 : : /* : * complete CREATE TRIGGER BEFORE,AFTER event ON with a list of : * tables : */ : else if (pg_strcasecmp(prev5_wd, "TRIGGER") == 0 && 0.00 : 42624d: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 426251: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 426256: e8 25 eb 00 00 callq 434d80 0.00 : 42625b: 85 c0 test %eax,%eax 0.00 : 42625d: 75 3a jne 426299 0.00 : 42625f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426263: be 8e 10 45 00 mov $0x45108e,%esi 0.00 : 426268: e8 13 eb 00 00 callq 434d80 0.00 : 42626d: 85 c0 test %eax,%eax 0.00 : 42626f: 74 12 je 426283 0.00 : 426271: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426275: be 95 10 45 00 mov $0x451095,%esi 0.00 : 42627a: e8 01 eb 00 00 callq 434d80 0.00 : 42627f: 85 c0 test %eax,%eax 0.00 : 426281: 75 16 jne 426299 0.00 : 426283: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426287: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42628c: e8 ef ea 00 00 callq 434d80 0.00 : 426291: 85 c0 test %eax,%eax 0.00 : 426293: 0f 84 09 0c 00 00 je 426ea2 : (pg_strcasecmp(prev3_wd, "BEFORE") == 0 || : pg_strcasecmp(prev3_wd, "AFTER") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */ : else if (pg_strcasecmp(prev4_wd, "INSTEAD") == 0 && 0.00 : 426299: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42629d: be 9b 10 45 00 mov $0x45109b,%esi 0.00 : 4262a2: e8 d9 ea 00 00 callq 434d80 0.00 : 4262a7: 85 c0 test %eax,%eax 0.00 : 4262a9: 75 16 jne 4262c1 0.00 : 4262ab: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4262af: be 46 17 45 00 mov $0x451746,%esi 0.00 : 4262b4: e8 c7 ea 00 00 callq 434d80 0.00 : 4262b9: 85 c0 test %eax,%eax 0.00 : 4262bb: 0f 84 0d 0c 00 00 je 426ece : pg_strcasecmp(prev3_wd, "OF") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL); : /* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */ : else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && 0.00 : 4262c1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4262c5: be 06 c5 43 00 mov $0x43c506,%esi 0.00 : 4262ca: e8 b1 ea 00 00 callq 434d80 0.00 : 4262cf: 85 c0 test %eax,%eax 0.00 : 4262d1: 75 0d jne 4262e0 0.00 : 4262d3: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 4262d7: 80 38 00 cmpb $0x0,(%rax) 0.00 : 4262da: 0f 85 30 0c 00 00 jne 426f10 : prev2_wd[0] != '\0') : COMPLETE_WITH_CONST("PROCEDURE"); : : /* CREATE ROLE,USER,GROUP */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 4262e0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4262e4: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4262e9: e8 92 ea 00 00 callq 434d80 0.00 : 4262ee: 85 c0 test %eax,%eax 0.00 : 4262f0: 0f 85 82 00 00 00 jne 426378 0.00 : 4262f6: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4262fa: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 4262ff: e8 7c ea 00 00 callq 434d80 0.00 : 426304: 85 c0 test %eax,%eax 0.00 : 426306: 75 12 jne 42631a 0.00 : 426308: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42630c: be 16 c0 43 00 mov $0x43c016,%esi 0.00 : 426311: e8 6a ea 00 00 callq 434d80 0.00 : 426316: 85 c0 test %eax,%eax 0.00 : 426318: 74 5e je 426378 0.00 : 42631a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42631e: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 426323: e8 58 ea 00 00 callq 434d80 0.00 : 426328: 85 c0 test %eax,%eax 0.00 : 42632a: 74 12 je 42633e 0.00 : 42632c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426330: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 426335: e8 46 ea 00 00 callq 434d80 0.00 : 42633a: 85 c0 test %eax,%eax 0.00 : 42633c: 75 28 jne 426366 : "CREATEUSER", "ENCRYPTED", "IN", "INHERIT", "LOGIN", "NOBYPASSRLS", : "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", : "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "REPLICATION", "ROLE", : "SUPERUSER", "SYSID", "UNENCRYPTED", "VALID UNTIL", "WITH", NULL}; : : COMPLETE_WITH_LIST(list_CREATEROLE); 0.00 : 42633e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426342: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426347: 48 c7 05 36 4c 24 00 movq $0x456220,0x244c36(%rip) # 66af88 0.00 : 42634e: 20 62 45 00 0.00 : 426352: c6 05 4f 4c 24 00 00 movb $0x0,0x244c4f(%rip) # 66afa8 0.00 : 426359: e8 72 d4 fd ff callq 4037d0 0.00 : 42635e: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && : prev2_wd[0] != '\0') : COMPLETE_WITH_CONST("PROCEDURE"); : : /* CREATE ROLE,USER,GROUP */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426361: e9 8c bc ff ff jmpq 421ff2 0.00 : 426366: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42636a: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 42636f: e8 0c ea 00 00 callq 434d80 0.00 : 426374: 85 c0 test %eax,%eax 0.00 : 426376: 74 c6 je 42633e : : COMPLETE_WITH_LIST(list_CREATEROLE); : } : : /* CREATE ROLE,USER,GROUP WITH */ : else if ((pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426378: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42637c: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426381: e8 fa e9 00 00 callq 434d80 0.00 : 426386: 85 c0 test %eax,%eax 0.00 : 426388: 75 3e jne 4263c8 0.00 : 42638a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42638e: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 426393: e8 e8 e9 00 00 callq 434d80 0.00 : 426398: 85 c0 test %eax,%eax 0.00 : 42639a: 74 16 je 4263b2 0.00 : 42639c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4263a0: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 4263a5: e8 d6 e9 00 00 callq 434d80 0.00 : 4263aa: 85 c0 test %eax,%eax 0.00 : 4263ac: 0f 85 86 0b 00 00 jne 426f38 0.00 : 4263b2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4263b6: be b8 c7 43 00 mov $0x43c7b8,%esi 0.00 : 4263bb: e8 c0 e9 00 00 callq 434d80 0.00 : 4263c0: 85 c0 test %eax,%eax 0.00 : 4263c2: 0f 84 8b 0b 00 00 je 426f53 : : /* : * complete CREATE ROLE,USER,GROUP ENCRYPTED,UNENCRYPTED with : * PASSWORD : */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4263c8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4263cc: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4263d1: e8 aa e9 00 00 callq 434d80 0.00 : 4263d6: 85 c0 test %eax,%eax 0.00 : 4263d8: 0f 85 82 00 00 00 jne 426460 0.00 : 4263de: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4263e2: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 4263e7: e8 94 e9 00 00 callq 434d80 0.00 : 4263ec: 85 c0 test %eax,%eax 0.00 : 4263ee: 74 12 je 426402 0.00 : 4263f0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4263f4: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 4263f9: e8 82 e9 00 00 callq 434d80 0.00 : 4263fe: 85 c0 test %eax,%eax 0.00 : 426400: 75 4c jne 42644e 0.00 : 426402: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426406: be ab 0f 45 00 mov $0x450fab,%esi 0.00 : 42640b: e8 70 e9 00 00 callq 434d80 0.00 : 426410: 85 c0 test %eax,%eax 0.00 : 426412: 74 12 je 426426 0.00 : 426414: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426418: be a9 0f 45 00 mov $0x450fa9,%esi 0.00 : 42641d: e8 5e e9 00 00 callq 434d80 0.00 : 426422: 85 c0 test %eax,%eax 0.00 : 426424: 75 3a jne 426460 : (pg_strcasecmp(prev3_wd, "ROLE") == 0 || : pg_strcasecmp(prev3_wd, "GROUP") == 0 || pg_strcasecmp(prev3_wd, "USER") == 0) && : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); 0.00 : 426426: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42642a: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42642f: 48 c7 05 46 4b 24 00 movq $0x450fb5,0x244b46(%rip) # 66af80 0.00 : 426436: b5 0f 45 00 0.00 : 42643a: c6 05 67 4b 24 00 00 movb $0x0,0x244b67(%rip) # 66afa8 0.00 : 426441: e8 8a d3 fd ff callq 4037d0 0.00 : 426446: 48 89 c3 mov %rax,%rbx : : /* : * complete CREATE ROLE,USER,GROUP ENCRYPTED,UNENCRYPTED with : * PASSWORD : */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426449: e9 a4 bb ff ff jmpq 421ff2 0.00 : 42644e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426452: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 426457: e8 24 e9 00 00 callq 434d80 0.00 : 42645c: 85 c0 test %eax,%eax 0.00 : 42645e: 74 a2 je 426402 : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); : } : /* complete CREATE ROLE,USER,GROUP IN with ROLE,GROUP */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426460: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 426464: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426469: e8 12 e9 00 00 callq 434d80 0.00 : 42646e: 85 c0 test %eax,%eax 0.00 : 426470: 75 3e jne 4264b0 0.00 : 426472: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426476: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 42647b: e8 00 e9 00 00 callq 434d80 0.00 : 426480: 85 c0 test %eax,%eax 0.00 : 426482: 74 16 je 42649a 0.00 : 426484: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426488: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 42648d: e8 ee e8 00 00 callq 434d80 0.00 : 426492: 85 c0 test %eax,%eax 0.00 : 426494: 0f 85 e1 0a 00 00 jne 426f7b 0.00 : 42649a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42649e: be 30 c5 43 00 mov $0x43c530,%esi 0.00 : 4264a3: e8 d8 e8 00 00 callq 434d80 0.00 : 4264a8: 85 c0 test %eax,%eax 0.00 : 4264aa: 0f 84 e6 0a 00 00 je 426f96 : COMPLETE_WITH_LIST(list_CREATEROLE3); : } : : /* CREATE VIEW */ : /* Complete CREATE VIEW with AS */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 4264b0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4264b4: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4264b9: e8 c2 e8 00 00 callq 434d80 0.00 : 4264be: 85 c0 test %eax,%eax 0.00 : 4264c0: 75 16 jne 4264d8 0.00 : 4264c2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4264c6: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 4264cb: e8 b0 e8 00 00 callq 434d80 0.00 : 4264d0: 85 c0 test %eax,%eax 0.00 : 4264d2: 0f 84 56 01 00 00 je 42662e : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE VIEW AS with "SELECT" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4264d8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4264dc: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4264e1: e8 9a e8 00 00 callq 434d80 0.00 : 4264e6: 85 c0 test %eax,%eax 0.00 : 4264e8: 75 16 jne 426500 0.00 : 4264ea: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4264ee: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 4264f3: e8 88 e8 00 00 callq 434d80 0.00 : 4264f8: 85 c0 test %eax,%eax 0.00 : 4264fa: 0f 84 ca 02 00 00 je 4267ca : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("SELECT"); : : /* CREATE MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 426500: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426504: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426509: e8 72 e8 00 00 callq 434d80 0.00 : 42650e: 85 c0 test %eax,%eax 0.00 : 426510: 75 16 jne 426528 0.00 : 426512: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426516: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 42651b: e8 60 e8 00 00 callq 434d80 0.00 : 426520: 85 c0 test %eax,%eax 0.00 : 426522: 0f 84 3c 02 00 00 je 426764 : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); : /* Complete CREATE MATERIALIZED VIEW with AS */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426528: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42652c: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426531: e8 4a e8 00 00 callq 434d80 0.00 : 426536: 85 c0 test %eax,%eax 0.00 : 426538: 75 16 jne 426550 0.00 : 42653a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42653e: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 426543: e8 38 e8 00 00 callq 434d80 0.00 : 426548: 85 c0 test %eax,%eax 0.00 : 42654a: 0f 84 3c 02 00 00 je 42678c : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE MATERIALIZED VIEW AS with "SELECT" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426550: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 426554: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426559: e8 22 e8 00 00 callq 434d80 0.00 : 42655e: 85 c0 test %eax,%eax 0.00 : 426560: 75 16 jne 426578 0.00 : 426562: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 426566: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 42656b: e8 10 e8 00 00 callq 434d80 0.00 : 426570: 85 c0 test %eax,%eax 0.00 : 426572: 0f 84 de 00 00 00 je 426656 : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("SELECT"); : : /* CREATE EVENT TRIGGER */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 426578: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42657c: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 426581: e8 fa e7 00 00 callq 434d80 0.00 : 426586: 85 c0 test %eax,%eax 0.00 : 426588: 75 16 jne 4265a0 0.00 : 42658a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42658e: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 426593: e8 e8 e7 00 00 callq 434d80 0.00 : 426598: 85 c0 test %eax,%eax 0.00 : 42659a: 0f 84 0a 01 00 00 je 4266aa : pg_strcasecmp(prev_wd, "EVENT") == 0) : COMPLETE_WITH_CONST("TRIGGER"); : /* Complete CREATE EVENT TRIGGER with ON */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4265a0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4265a4: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4265a9: e8 d2 e7 00 00 callq 434d80 0.00 : 4265ae: 85 c0 test %eax,%eax 0.00 : 4265b0: 75 16 jne 4265c8 0.00 : 4265b2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4265b6: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 4265bb: e8 c0 e7 00 00 callq 434d80 0.00 : 4265c0: 85 c0 test %eax,%eax 0.00 : 4265c2: 0f 84 0a 01 00 00 je 4266d2 : pg_strcasecmp(prev3_wd, "EVENT") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete CREATE EVENT TRIGGER ON with event_type */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 4265c8: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4265cc: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4265d1: e8 aa e7 00 00 callq 434d80 0.00 : 4265d6: 85 c0 test %eax,%eax 0.00 : 4265d8: 75 16 jne 4265f0 0.00 : 4265da: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4265de: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 4265e3: e8 98 e7 00 00 callq 434d80 0.00 : 4265e8: 85 c0 test %eax,%eax 0.00 : 4265ea: 0f 84 20 01 00 00 je 426710 : : COMPLETE_WITH_LIST(list_CREATE_EVENT_TRIGGER_ON); : } : : /* DECLARE */ : else if (pg_strcasecmp(prev2_wd, "DECLARE") == 0) 0.00 : 4265f0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4265f4: be 47 c0 43 00 mov $0x43c047,%esi 0.00 : 4265f9: e8 82 e7 00 00 callq 434d80 0.00 : 4265fe: 85 c0 test %eax,%eax 0.00 : 426600: 0f 85 02 02 00 00 jne 426808 : { : static const char *const list_DECLARE[] = : {"BINARY", "INSENSITIVE", "SCROLL", "NO SCROLL", "CURSOR", NULL}; : : COMPLETE_WITH_LIST(list_DECLARE); 0.00 : 426606: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42660a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42660f: 48 c7 05 6e 49 24 00 movq $0x4560c0,0x24496e(%rip) # 66af88 0.00 : 426616: c0 60 45 00 0.00 : 42661a: c6 05 87 49 24 00 00 movb $0x0,0x244987(%rip) # 66afa8 0.00 : 426621: e8 aa d1 fd ff callq 4037d0 0.00 : 426626: 48 89 c3 mov %rax,%rbx 0.00 : 426629: e9 c4 b9 ff ff jmpq 421ff2 : : /* CREATE VIEW */ : /* Complete CREATE VIEW with AS */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); 0.00 : 42662e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426632: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426637: 48 c7 05 3e 49 24 00 movq $0x43bf36,0x24493e(%rip) # 66af80 0.00 : 42663e: 36 bf 43 00 0.00 : 426642: c6 05 5f 49 24 00 00 movb $0x0,0x24495f(%rip) # 66afa8 0.00 : 426649: e8 82 d1 fd ff callq 4037d0 0.00 : 42664e: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST(list_CREATEROLE3); : } : : /* CREATE VIEW */ : /* Complete CREATE VIEW with AS */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426651: e9 9c b9 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE MATERIALIZED VIEW AS with "SELECT" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426656: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42665a: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 42665f: e8 1c e7 00 00 callq 434d80 0.00 : 426664: 85 c0 test %eax,%eax 0.00 : 426666: 0f 85 0c ff ff ff jne 426578 0.00 : 42666c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426670: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 426675: e8 06 e7 00 00 callq 434d80 0.00 : 42667a: 85 c0 test %eax,%eax 0.00 : 42667c: 0f 85 f6 fe ff ff jne 426578 : pg_strcasecmp(prev4_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("SELECT"); 0.00 : 426682: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426686: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42668b: 48 c7 05 ea 48 24 00 movq $0x45a003,0x2448ea(%rip) # 66af80 0.00 : 426692: 03 a0 45 00 0.00 : 426696: c6 05 0b 49 24 00 00 movb $0x0,0x24490b(%rip) # 66afa8 0.00 : 42669d: e8 2e d1 fd ff callq 4037d0 0.00 : 4266a2: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE MATERIALIZED VIEW AS with "SELECT" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 4266a5: e9 48 b9 ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("SELECT"); : : /* CREATE EVENT TRIGGER */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "EVENT") == 0) : COMPLETE_WITH_CONST("TRIGGER"); 0.00 : 4266aa: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4266ae: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4266b3: 48 c7 05 c2 48 24 00 movq $0x43bfbe,0x2448c2(%rip) # 66af80 0.00 : 4266ba: be bf 43 00 0.00 : 4266be: c6 05 e3 48 24 00 00 movb $0x0,0x2448e3(%rip) # 66afa8 0.00 : 4266c5: e8 06 d1 fd ff callq 4037d0 0.00 : 4266ca: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("SELECT"); : : /* CREATE EVENT TRIGGER */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 4266cd: e9 20 b9 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "EVENT") == 0) : COMPLETE_WITH_CONST("TRIGGER"); : /* Complete CREATE EVENT TRIGGER with ON */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4266d2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4266d6: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 4266db: e8 a0 e6 00 00 callq 434d80 0.00 : 4266e0: 85 c0 test %eax,%eax 0.00 : 4266e2: 0f 85 e0 fe ff ff jne 4265c8 : pg_strcasecmp(prev3_wd, "EVENT") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 4266e8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4266ec: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4266f1: 48 c7 05 84 48 24 00 movq $0x4519c4,0x244884(%rip) # 66af80 0.00 : 4266f8: c4 19 45 00 0.00 : 4266fc: c6 05 a5 48 24 00 00 movb $0x0,0x2448a5(%rip) # 66afa8 0.00 : 426703: e8 c8 d0 fd ff callq 4037d0 0.00 : 426708: 48 89 c3 mov %rax,%rbx : /* CREATE EVENT TRIGGER */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "EVENT") == 0) : COMPLETE_WITH_CONST("TRIGGER"); : /* Complete CREATE EVENT TRIGGER with ON */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 42670b: e9 e2 b8 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "EVENT") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete CREATE EVENT TRIGGER ON with event_type */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426710: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426714: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 426719: e8 62 e6 00 00 callq 434d80 0.00 : 42671e: 85 c0 test %eax,%eax 0.00 : 426720: 0f 85 ca fe ff ff jne 4265f0 0.00 : 426726: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42672a: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42672f: e8 4c e6 00 00 callq 434d80 0.00 : 426734: 85 c0 test %eax,%eax 0.00 : 426736: 0f 85 b4 fe ff ff jne 4265f0 : pg_strcasecmp(prev_wd, "ON") == 0) : { : static const char *const list_CREATE_EVENT_TRIGGER_ON[] = : {"ddl_command_start", "ddl_command_end", "sql_drop", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_EVENT_TRIGGER_ON); 0.00 : 42673c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426740: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426745: 48 c7 05 38 48 24 00 movq $0x456100,0x244838(%rip) # 66af88 0.00 : 42674c: 00 61 45 00 0.00 : 426750: c6 05 51 48 24 00 00 movb $0x0,0x244851(%rip) # 66afa8 0.00 : 426757: e8 74 d0 fd ff callq 4037d0 0.00 : 42675c: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && : pg_strcasecmp(prev3_wd, "EVENT") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete CREATE EVENT TRIGGER ON with event_type */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 42675f: e9 8e b8 ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("SELECT"); : : /* CREATE MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); 0.00 : 426764: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426768: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42676d: 48 c7 05 08 48 24 00 movq $0x43bddc,0x244808(%rip) # 66af80 0.00 : 426774: dc bd 43 00 0.00 : 426778: c6 05 29 48 24 00 00 movb $0x0,0x244829(%rip) # 66afa8 0.00 : 42677f: e8 4c d0 fd ff callq 4037d0 0.00 : 426784: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("SELECT"); : : /* CREATE MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 426787: e9 66 b8 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); : /* Complete CREATE MATERIALIZED VIEW with AS */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 42678c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426790: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 426795: e8 e6 e5 00 00 callq 434d80 0.00 : 42679a: 85 c0 test %eax,%eax 0.00 : 42679c: 0f 85 ae fd ff ff jne 426550 : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); 0.00 : 4267a2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4267a6: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4267ab: 48 c7 05 ca 47 24 00 movq $0x43bf36,0x2447ca(%rip) # 66af80 0.00 : 4267b2: 36 bf 43 00 0.00 : 4267b6: c6 05 eb 47 24 00 00 movb $0x0,0x2447eb(%rip) # 66afa8 0.00 : 4267bd: e8 0e d0 fd ff callq 4037d0 0.00 : 4267c2: 48 89 c3 mov %rax,%rbx : /* CREATE MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); : /* Complete CREATE MATERIALIZED VIEW with AS */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4267c5: e9 28 b8 ff ff jmpq 421ff2 : /* Complete CREATE VIEW with AS */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE VIEW AS with "SELECT" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4267ca: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4267ce: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 4267d3: e8 a8 e5 00 00 callq 434d80 0.00 : 4267d8: 85 c0 test %eax,%eax 0.00 : 4267da: 0f 85 20 fd ff ff jne 426500 : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("SELECT"); 0.00 : 4267e0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4267e4: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4267e9: 48 c7 05 8c 47 24 00 movq $0x45a003,0x24478c(%rip) # 66af80 0.00 : 4267f0: 03 a0 45 00 0.00 : 4267f4: c6 05 ad 47 24 00 00 movb $0x0,0x2447ad(%rip) # 66afa8 0.00 : 4267fb: e8 d0 cf fd ff callq 4037d0 0.00 : 426800: 48 89 c3 mov %rax,%rbx : /* Complete CREATE VIEW with AS */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE VIEW AS with "SELECT" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426803: e9 ea b7 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_DECLARE); : } : : /* CURSOR */ : else if (pg_strcasecmp(prev_wd, "CURSOR") == 0) 0.00 : 426808: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42680c: be ad 10 45 00 mov $0x4510ad,%esi 0.00 : 426811: e8 6a e5 00 00 callq 434d80 0.00 : 426816: 85 c0 test %eax,%eax 0.00 : 426818: 0f 85 50 0f 00 00 jne 42776e : { : static const char *const list_DECLARECURSOR[] = : {"WITH HOLD", "WITHOUT HOLD", "FOR", NULL}; : : COMPLETE_WITH_LIST(list_DECLARECURSOR); 0.00 : 42681e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426822: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426827: 48 c7 05 56 47 24 00 movq $0x4560a0,0x244756(%rip) # 66af88 0.00 : 42682e: a0 60 45 00 0.00 : 426832: c6 05 6f 47 24 00 00 movb $0x0,0x24476f(%rip) # 66afa8 0.00 : 426839: e8 92 cf fd ff callq 4037d0 0.00 : 42683e: 48 89 c3 mov %rax,%rbx 0.00 : 426841: e9 ac b7 ff ff jmpq 421ff2 : /* : * If the previous word is CLUSTER and not WITHOUT produce list of tables : */ : else if (pg_strcasecmp(prev_wd, "CLUSTER") == 0 && : pg_strcasecmp(prev2_wd, "WITHOUT") != 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, "UNION SELECT 'VERBOSE'"); 0.00 : 426846: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42684a: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42684f: 48 c7 05 46 47 24 00 movq $0x455000,0x244746(%rip) # 66afa0 0.00 : 426856: 00 50 45 00 0.00 : 42685a: 48 c7 05 1b 47 24 00 movq $0x4511ad,0x24471b(%rip) # 66af80 0.00 : 426861: ad 11 45 00 0.00 : 426865: e8 66 cf fd ff callq 4037d0 0.00 : 42686a: 48 89 c3 mov %rax,%rbx : /* CLUSTER */ : : /* : * If the previous word is CLUSTER and not WITHOUT produce list of tables : */ : else if (pg_strcasecmp(prev_wd, "CLUSTER") == 0 && 0.00 : 42686d: e9 80 b7 ff ff jmpq 421ff2 : /* Complete "CREATE POLICY ON" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete "CREATE POLICY ON
" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426872: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426876: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42687b: e8 00 e5 00 00 callq 434d80 0.00 : 426880: 85 c0 test %eax,%eax 0.00 : 426882: 0f 85 cf f5 ff ff jne 425e57 : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 426888: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42688c: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 426891: 48 c7 05 04 47 24 00 movq $0x454f40,0x244704(%rip) # 66afa0 0.00 : 426898: 40 4f 45 00 0.00 : 42689c: 48 c7 05 d9 46 24 00 movq $0x0,0x2446d9(%rip) # 66af80 0.00 : 4268a3: 00 00 00 00 0.00 : 4268a7: e8 24 cf fd ff callq 4037d0 0.00 : 4268ac: 48 89 c3 mov %rax,%rbx : /* Complete "CREATE POLICY ON" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete "CREATE POLICY ON
" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 4268af: e9 3e b7 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* Complete "CREATE POLICY ON
FOR|TO|USING|WITH CHECK" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 4268b4: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4268b8: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4268bd: e8 be e4 00 00 callq 434d80 0.00 : 4268c2: 85 c0 test %eax,%eax 0.00 : 4268c4: 0f 85 b5 f5 ff ff jne 425e7f : pg_strcasecmp(prev2_wd, "ON") == 0) : { : static const char *const list_POLICYOPTIONS[] = : {"FOR", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); 0.00 : 4268ca: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4268ce: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4268d3: 48 c7 05 aa 46 24 00 movq $0x456540,0x2446aa(%rip) # 66af88 0.00 : 4268da: 40 65 45 00 0.00 : 4268de: c6 05 c3 46 24 00 00 movb $0x0,0x2446c3(%rip) # 66afa8 0.00 : 4268e5: e8 e6 ce fd ff callq 4037d0 0.00 : 4268ea: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* Complete "CREATE POLICY ON
FOR|TO|USING|WITH CHECK" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 4268ed: e9 00 b7 ff ff jmpq 421ff2 : {"FOR", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); : } : /* Complete "CREATE POLICY ON
FOR ALL|SELECT|INSERT|UPDATE|DELETE" */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 4268f2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4268f6: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4268fb: e8 80 e4 00 00 callq 434d80 0.00 : 426900: 85 c0 test %eax,%eax 0.00 : 426902: 0f 85 9f f5 ff ff jne 425ea7 0.00 : 426908: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42690c: be 30 18 45 00 mov $0x451830,%esi 0.00 : 426911: e8 6a e4 00 00 callq 434d80 0.00 : 426916: 85 c0 test %eax,%eax 0.00 : 426918: 0f 85 89 f5 ff ff jne 425ea7 : pg_strcasecmp(prev_wd, "FOR") == 0) : { : static const char *const list_POLICYCMDS[] = : {"ALL", "SELECT", "INSERT", "UPDATE", "DELETE", NULL}; : : COMPLETE_WITH_LIST(list_POLICYCMDS); 0.00 : 42691e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426922: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426927: 48 c7 05 56 46 24 00 movq $0x456500,0x244656(%rip) # 66af88 0.00 : 42692e: 00 65 45 00 0.00 : 426932: c6 05 6f 46 24 00 00 movb $0x0,0x24466f(%rip) # 66afa8 0.00 : 426939: e8 92 ce fd ff callq 4037d0 0.00 : 42693e: 48 89 c3 mov %rax,%rbx : {"FOR", "TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); : } : /* Complete "CREATE POLICY ON
FOR ALL|SELECT|INSERT|UPDATE|DELETE" */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 426941: e9 ac b6 ff ff jmpq 421ff2 : {"ALL", "SELECT", "INSERT", "UPDATE", "DELETE", NULL}; : : COMPLETE_WITH_LIST(list_POLICYCMDS); : } : /* Complete "CREATE POLICY ON
FOR INSERT TO|WITH CHECK" */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 426946: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42694a: be 30 18 45 00 mov $0x451830,%esi 0.00 : 42694f: e8 2c e4 00 00 callq 434d80 0.00 : 426954: 85 c0 test %eax,%eax 0.00 : 426956: 0f 85 73 f5 ff ff jne 425ecf 0.00 : 42695c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426960: be b3 69 43 00 mov $0x4369b3,%esi 0.00 : 426965: e8 16 e4 00 00 callq 434d80 0.00 : 42696a: 85 c0 test %eax,%eax 0.00 : 42696c: 0f 85 5d f5 ff ff jne 425ecf : pg_strcasecmp(prev_wd, "INSERT") == 0) : { : static const char *const list_POLICYOPTIONS[] = : {"TO", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); 0.00 : 426972: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426976: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42697b: 48 c7 05 02 46 24 00 movq $0x4564e0,0x244602(%rip) # 66af88 0.00 : 426982: e0 64 45 00 0.00 : 426986: c6 05 1b 46 24 00 00 movb $0x0,0x24461b(%rip) # 66afa8 0.00 : 42698d: e8 3e ce fd ff callq 4037d0 0.00 : 426992: 48 89 c3 mov %rax,%rbx : {"ALL", "SELECT", "INSERT", "UPDATE", "DELETE", NULL}; : : COMPLETE_WITH_LIST(list_POLICYCMDS); : } : /* Complete "CREATE POLICY ON
FOR INSERT TO|WITH CHECK" */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 426995: e9 58 b6 ff ff jmpq 421ff2 : } : /* : * Complete "CREATE POLICY ON
FOR SELECT TO|USING" : * Complete "CREATE POLICY ON
FOR DELETE TO|USING" : */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 42699a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42699e: be 30 18 45 00 mov $0x451830,%esi 0.00 : 4269a3: e8 d8 e3 00 00 callq 434d80 0.00 : 4269a8: 85 c0 test %eax,%eax 0.00 : 4269aa: 0f 85 47 f5 ff ff jne 425ef7 0.00 : 4269b0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4269b4: be 03 a0 45 00 mov $0x45a003,%esi 0.00 : 4269b9: e8 c2 e3 00 00 callq 434d80 0.00 : 4269be: 85 c0 test %eax,%eax 0.00 : 4269c0: 74 16 je 4269d8 0.00 : 4269c2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4269c6: be ba 7c 45 00 mov $0x457cba,%esi 0.00 : 4269cb: e8 b0 e3 00 00 callq 434d80 0.00 : 4269d0: 85 c0 test %eax,%eax 0.00 : 4269d2: 0f 85 1f f5 ff ff jne 425ef7 : pg_strcasecmp(prev_wd, "DELETE") == 0)) : { : static const char *const list_POLICYOPTIONS[] = : {"TO", "USING", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); 0.00 : 4269d8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4269dc: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4269e1: 48 c7 05 9c 45 24 00 movq $0x4564c0,0x24459c(%rip) # 66af88 0.00 : 4269e8: c0 64 45 00 0.00 : 4269ec: c6 05 b5 45 24 00 00 movb $0x0,0x2445b5(%rip) # 66afa8 0.00 : 4269f3: e8 d8 cd fd ff callq 4037d0 0.00 : 4269f8: 48 89 c3 mov %rax,%rbx : } : /* : * Complete "CREATE POLICY ON
FOR SELECT TO|USING" : * Complete "CREATE POLICY ON
FOR DELETE TO|USING" : */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 4269fb: e9 f2 b5 ff ff jmpq 421ff2 : } : /* : * Complete "CREATE POLICY ON
FOR ALL TO|USING|WITH CHECK" : * Complete "CREATE POLICY ON
FOR UPDATE TO|USING|WITH CHECK" : */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 426a00: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426a04: be 30 18 45 00 mov $0x451830,%esi 0.00 : 426a09: e8 72 e3 00 00 callq 434d80 0.00 : 426a0e: 85 c0 test %eax,%eax 0.00 : 426a10: 0f 85 09 f5 ff ff jne 425f1f 0.00 : 426a16: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426a1a: be 90 7c 45 00 mov $0x457c90,%esi 0.00 : 426a1f: e8 5c e3 00 00 callq 434d80 0.00 : 426a24: 85 c0 test %eax,%eax 0.00 : 426a26: 74 16 je 426a3e 0.00 : 426a28: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426a2c: be ba 69 43 00 mov $0x4369ba,%esi 0.00 : 426a31: e8 4a e3 00 00 callq 434d80 0.00 : 426a36: 85 c0 test %eax,%eax 0.00 : 426a38: 0f 85 e1 f4 ff ff jne 425f1f : pg_strcasecmp(prev_wd, "UPDATE") == 0)) : { : static const char *const list_POLICYOPTIONS[] = : {"TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); 0.00 : 426a3e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426a42: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426a47: 48 c7 05 36 45 24 00 movq $0x4564a0,0x244536(%rip) # 66af88 0.00 : 426a4e: a0 64 45 00 0.00 : 426a52: c6 05 4f 45 24 00 00 movb $0x0,0x24454f(%rip) # 66afa8 0.00 : 426a59: e8 72 cd fd ff callq 4037d0 0.00 : 426a5e: 48 89 c3 mov %rax,%rbx : } : /* : * Complete "CREATE POLICY ON
FOR ALL TO|USING|WITH CHECK" : * Complete "CREATE POLICY ON
FOR UPDATE TO|USING|WITH CHECK" : */ : else if (pg_strcasecmp(prev6_wd, "POLICY") == 0 && 0.00 : 426a61: e9 8c b5 ff ff jmpq 421ff2 : {"TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); : } : /* Complete "CREATE POLICY ON
TO " */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 426a66: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426a6a: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 426a6f: e8 0c e3 00 00 callq 434d80 0.00 : 426a74: 85 c0 test %eax,%eax 0.00 : 426a76: 0f 85 cb f4 ff ff jne 425f47 0.00 : 426a7c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426a80: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 426a85: e8 f6 e2 00 00 callq 434d80 0.00 : 426a8a: 85 c0 test %eax,%eax 0.00 : 426a8c: 0f 85 b5 f4 ff ff jne 425f47 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); 0.00 : 426a92: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426a96: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 426a9b: 48 c7 05 da 44 24 00 movq $0x452070,0x2444da(%rip) # 66af80 0.00 : 426aa2: 70 20 45 00 0.00 : 426aa6: e8 25 cd fd ff callq 4037d0 0.00 : 426aab: 48 89 c3 mov %rax,%rbx : {"TO", "USING", "WITH CHECK", NULL}; : : COMPLETE_WITH_LIST(list_POLICYOPTIONS); : } : /* Complete "CREATE POLICY ON
TO " */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 426aae: e9 3f b5 ff ff jmpq 421ff2 : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : /* Complete "CREATE POLICY ON
USING (" */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 426ab3: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426ab7: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 426abc: e8 bf e2 00 00 callq 434d80 0.00 : 426ac1: 85 c0 test %eax,%eax 0.00 : 426ac3: 0f 85 a6 f4 ff ff jne 425f6f 0.00 : 426ac9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426acd: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 426ad2: e8 a9 e2 00 00 callq 434d80 0.00 : 426ad7: 85 c0 test %eax,%eax 0.00 : 426ad9: 0f 85 90 f4 ff ff jne 425f6f : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 426adf: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426ae3: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426ae8: 48 c7 05 8d 44 24 00 movq $0x448783,0x24448d(%rip) # 66af80 0.00 : 426aef: 83 87 44 00 0.00 : 426af3: c6 05 ae 44 24 00 00 movb $0x0,0x2444ae(%rip) # 66afa8 0.00 : 426afa: e8 d1 cc fd ff callq 4037d0 0.00 : 426aff: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev5_wd, "POLICY") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : /* Complete "CREATE POLICY ON
USING (" */ : else if (pg_strcasecmp(prev6_wd, "CREATE") == 0 && 0.00 : 426b02: e9 eb b4 ff ff jmpq 421ff2 : : /* CREATE RULE */ : /* Complete "CREATE RULE " with "AS" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("AS"); 0.00 : 426b07: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426b0b: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426b10: 48 c7 05 65 44 24 00 movq $0x43bf36,0x244465(%rip) # 66af80 0.00 : 426b17: 36 bf 43 00 0.00 : 426b1b: c6 05 86 44 24 00 00 movb $0x0,0x244486(%rip) # 66afa8 0.00 : 426b22: e8 a9 cc fd ff callq 4037d0 0.00 : 426b27: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); : : /* CREATE RULE */ : /* Complete "CREATE RULE " with "AS" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426b2a: e9 c3 b4 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE RULE AS with "ON" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426b2f: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426b33: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 426b38: e8 43 e2 00 00 callq 434d80 0.00 : 426b3d: 85 c0 test %eax,%eax 0.00 : 426b3f: 0f 85 7a f4 ff ff jne 425fbf : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 426b45: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426b49: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426b4e: 48 c7 05 27 44 24 00 movq $0x4519c4,0x244427(%rip) # 66af80 0.00 : 426b55: c4 19 45 00 0.00 : 426b59: c6 05 48 44 24 00 00 movb $0x0,0x244448(%rip) # 66afa8 0.00 : 426b60: e8 6b cc fd ff callq 4037d0 0.00 : 426b65: 48 89 c3 mov %rax,%rbx : /* Complete "CREATE RULE " with "AS" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "RULE") == 0) : COMPLETE_WITH_CONST("AS"); : /* Complete "CREATE RULE AS with "ON" */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426b68: e9 85 b4 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete "RULE * AS ON" with SELECT|UPDATE|DELETE|INSERT */ : else if (pg_strcasecmp(prev4_wd, "RULE") == 0 && 0.00 : 426b6d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426b71: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 426b76: e8 05 e2 00 00 callq 434d80 0.00 : 426b7b: 85 c0 test %eax,%eax 0.00 : 426b7d: 0f 85 64 f4 ff ff jne 425fe7 : pg_strcasecmp(prev_wd, "ON") == 0) : { : static const char *const rule_events[] = : {"SELECT", "UPDATE", "INSERT", "DELETE", NULL}; : : COMPLETE_WITH_LIST(rule_events); 0.00 : 426b83: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426b87: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426b8c: 48 c7 05 f1 43 24 00 movq $0x456460,0x2443f1(%rip) # 66af88 0.00 : 426b93: 60 64 45 00 0.00 : 426b97: c6 05 0a 44 24 00 00 movb $0x0,0x24440a(%rip) # 66afa8 0.00 : 426b9e: e8 2d cc fd ff callq 4037d0 0.00 : 426ba3: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "AS") == 0) : COMPLETE_WITH_CONST("ON"); : /* Complete "RULE * AS ON" with SELECT|UPDATE|DELETE|INSERT */ : else if (pg_strcasecmp(prev4_wd, "RULE") == 0 && 0.00 : 426ba6: e9 47 b4 ff ff jmpq 421ff2 : {"SELECT", "UPDATE", "INSERT", "DELETE", NULL}; : : COMPLETE_WITH_LIST(rule_events); : } : /* Complete "AS ON " with a "TO" */ : else if (pg_strcasecmp(prev3_wd, "AS") == 0 && 0.00 : 426bab: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 426baf: 0f b6 78 04 movzbl 0x4(%rax),%edi 0.00 : 426bb3: e8 e8 e2 00 00 callq 434ea0 0.00 : 426bb8: 3c 54 cmp $0x54,%al 0.00 : 426bba: 74 15 je 426bd1 0.00 : 426bbc: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 426bc0: 0f b6 78 05 movzbl 0x5(%rax),%edi 0.00 : 426bc4: e8 d7 e2 00 00 callq 434ea0 0.00 : 426bc9: 3c 54 cmp $0x54,%al 0.00 : 426bcb: 0f 85 3e f4 ff ff jne 42600f : pg_strcasecmp(prev2_wd, "ON") == 0 && : (pg_toupper((unsigned char) prev_wd[4]) == 'T' || : pg_toupper((unsigned char) prev_wd[5]) == 'T')) : COMPLETE_WITH_CONST("TO"); 0.00 : 426bd1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426bd5: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426bda: 48 c7 05 9b 43 24 00 movq $0x450fe6,0x24439b(%rip) # 66af80 0.00 : 426be1: e6 0f 45 00 0.00 : 426be5: c6 05 bc 43 24 00 00 movb $0x0,0x2443bc(%rip) # 66afa8 0.00 : 426bec: e8 df cb fd ff callq 4037d0 0.00 : 426bf1: 48 89 c3 mov %rax,%rbx : {"SELECT", "UPDATE", "INSERT", "DELETE", NULL}; : : COMPLETE_WITH_LIST(rule_events); : } : /* Complete "AS ON " with a "TO" */ : else if (pg_strcasecmp(prev3_wd, "AS") == 0 && 0.00 : 426bf4: e9 f9 b3 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "ON") == 0 && : (pg_toupper((unsigned char) prev_wd[4]) == 'T' || : pg_toupper((unsigned char) prev_wd[5]) == 'T')) : COMPLETE_WITH_CONST("TO"); : /* Complete "AS ON TO" with a table name */ : else if (pg_strcasecmp(prev4_wd, "AS") == 0 && 0.00 : 426bf9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426bfd: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 426c02: e8 79 e1 00 00 callq 434d80 0.00 : 426c07: 85 c0 test %eax,%eax 0.00 : 426c09: 0f 85 28 f4 ff ff jne 426037 : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 426c0f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426c13: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 426c18: 48 c7 05 7d 43 24 00 movq $0x454f40,0x24437d(%rip) # 66afa0 0.00 : 426c1f: 40 4f 45 00 0.00 : 426c23: 48 c7 05 52 43 24 00 movq $0x0,0x244352(%rip) # 66af80 0.00 : 426c2a: 00 00 00 00 0.00 : 426c2e: e8 9d cb fd ff callq 4037d0 0.00 : 426c33: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "ON") == 0 && : (pg_toupper((unsigned char) prev_wd[4]) == 'T' || : pg_toupper((unsigned char) prev_wd[5]) == 'T')) : COMPLETE_WITH_CONST("TO"); : /* Complete "AS ON TO" with a table name */ : else if (pg_strcasecmp(prev4_wd, "AS") == 0 && 0.00 : 426c36: e9 b7 b3 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "SERVER") == 0) : { : static const char *const list_CREATE_SERVER[] = : {"TYPE", "VERSION", "FOREIGN DATA WRAPPER", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_SERVER); 0.00 : 426c3b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426c3f: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426c44: 48 c7 05 39 43 24 00 movq $0x456440,0x244339(%rip) # 66af88 0.00 : 426c4b: 40 64 45 00 0.00 : 426c4f: c6 05 52 43 24 00 00 movb $0x0,0x244352(%rip) # 66afa8 0.00 : 426c56: e8 75 cb fd ff callq 4037d0 0.00 : 426c5b: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* CREATE SERVER */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426c5e: e9 8f b3 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "UNLOGGED") == 0) : { : static const char *const list_UNLOGGED[] = : {"TABLE", "MATERIALIZED VIEW", NULL}; : : COMPLETE_WITH_LIST(list_UNLOGGED); 0.00 : 426c63: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426c67: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426c6c: 48 c7 05 11 43 24 00 movq $0x4563f0,0x244311(%rip) # 66af88 0.00 : 426c73: f0 63 45 00 0.00 : 426c77: c6 05 2a 43 24 00 00 movb $0x0,0x24432a(%rip) # 66afa8 0.00 : 426c7e: e8 4d cb fd ff callq 4037d0 0.00 : 426c83: 48 89 c3 mov %rax,%rbx : {"SEQUENCE", "TABLE", "VIEW", NULL}; : : COMPLETE_WITH_LIST(list_TEMP); : } : /* Complete "CREATE UNLOGGED" with TABLE */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 426c86: e9 67 b3 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "TABLESPACE") == 0) : { : static const char *const list_CREATETABLESPACE[] = : {"OWNER", "LOCATION", NULL}; : : COMPLETE_WITH_LIST(list_CREATETABLESPACE); 0.00 : 426c8b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426c8f: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426c94: 48 c7 05 e9 42 24 00 movq $0x4563d0,0x2442e9(%rip) # 66af88 0.00 : 426c9b: d0 63 45 00 0.00 : 426c9f: c6 05 02 43 24 00 00 movb $0x0,0x244302(%rip) # 66afa8 0.00 : 426ca6: e8 25 cb fd ff callq 4037d0 0.00 : 426cab: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_UNLOGGED); : } : : /* CREATE TABLESPACE */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426cae: e9 3f b3 ff ff jmpq 421ff2 : {"OWNER", "LOCATION", NULL}; : : COMPLETE_WITH_LIST(list_CREATETABLESPACE); : } : /* Complete CREATE TABLESPACE name OWNER name with "LOCATION" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426cb3: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426cb7: be 7f 10 45 00 mov $0x45107f,%esi 0.00 : 426cbc: e8 bf e0 00 00 callq 434d80 0.00 : 426cc1: 85 c0 test %eax,%eax 0.00 : 426cc3: 0f 85 6c f4 ff ff jne 426135 : pg_strcasecmp(prev4_wd, "TABLESPACE") == 0 && : pg_strcasecmp(prev2_wd, "OWNER") == 0) : { : COMPLETE_WITH_CONST("LOCATION"); 0.00 : 426cc9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426ccd: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426cd2: 48 c7 05 a3 42 24 00 movq $0x451085,0x2442a3(%rip) # 66af80 0.00 : 426cd9: 85 10 45 00 0.00 : 426cdd: c6 05 c4 42 24 00 00 movb $0x0,0x2442c4(%rip) # 66afa8 0.00 : 426ce4: e8 e7 ca fd ff callq 4037d0 0.00 : 426ce9: 48 89 c3 mov %rax,%rbx : {"OWNER", "LOCATION", NULL}; : : COMPLETE_WITH_LIST(list_CREATETABLESPACE); : } : /* Complete CREATE TABLESPACE name OWNER name with "LOCATION" */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426cec: e9 01 b3 ff ff jmpq 421ff2 : { : COMPLETE_WITH_CONST("LOCATION"); : } : : /* CREATE TEXT SEARCH */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426cf1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426cf5: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 426cfa: e8 81 e0 00 00 callq 434d80 0.00 : 426cff: 85 c0 test %eax,%eax 0.00 : 426d01: 0f 85 56 f4 ff ff jne 42615d : pg_strcasecmp(prev_wd, "SEARCH") == 0) : { : static const char *const list_CREATETEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETEXTSEARCH); 0.00 : 426d07: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426d0b: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426d10: 48 c7 05 6d 42 24 00 movq $0x4563a0,0x24426d(%rip) # 66af88 0.00 : 426d17: a0 63 45 00 0.00 : 426d1b: c6 05 86 42 24 00 00 movb $0x0,0x244286(%rip) # 66afa8 0.00 : 426d22: e8 a9 ca fd ff callq 4037d0 0.00 : 426d27: 48 89 c3 mov %rax,%rbx : { : COMPLETE_WITH_CONST("LOCATION"); : } : : /* CREATE TEXT SEARCH */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426d2a: e9 c3 b2 ff ff jmpq 421ff2 : static const char *const list_CREATETEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETEXTSEARCH); : } : else if (pg_strcasecmp(prev4_wd, "TEXT") == 0 && 0.00 : 426d2f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426d33: be 19 10 45 00 mov $0x451019,%esi 0.00 : 426d38: e8 43 e0 00 00 callq 434d80 0.00 : 426d3d: 85 c0 test %eax,%eax 0.00 : 426d3f: 0f 85 40 f4 ff ff jne 426185 : pg_strcasecmp(prev3_wd, "SEARCH") == 0 && : pg_strcasecmp(prev2_wd, "CONFIGURATION") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 426d45: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426d49: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426d4e: 48 c7 05 27 42 24 00 movq $0x448783,0x244227(%rip) # 66af80 0.00 : 426d55: 83 87 44 00 0.00 : 426d59: c6 05 48 42 24 00 00 movb $0x0,0x244248(%rip) # 66afa8 0.00 : 426d60: e8 6b ca fd ff callq 4037d0 0.00 : 426d65: 48 89 c3 mov %rax,%rbx : static const char *const list_CREATETEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETEXTSEARCH); : } : else if (pg_strcasecmp(prev4_wd, "TEXT") == 0 && 0.00 : 426d68: e9 85 b2 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : { : static const char *const list_CREATETRIGGER[] = : {"BEFORE", "AFTER", "INSTEAD OF", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER); 0.00 : 426d6d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426d71: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426d76: 48 c7 05 07 42 24 00 movq $0x456380,0x244207(%rip) # 66af88 0.00 : 426d7d: 80 63 45 00 0.00 : 426d81: c6 05 20 42 24 00 00 movb $0x0,0x244220(%rip) # 66afa8 0.00 : 426d88: e8 43 ca fd ff callq 4037d0 0.00 : 426d8d: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "CONFIGURATION") == 0) : COMPLETE_WITH_CONST("("); : : /* CREATE TRIGGER */ : /* complete CREATE TRIGGER with BEFORE,AFTER */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 426d90: e9 5d b2 ff ff jmpq 421ff2 : {"BEFORE", "AFTER", "INSTEAD OF", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER); : } : /* complete CREATE TRIGGER BEFORE,AFTER with an event */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426d95: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426d99: be 8e 10 45 00 mov $0x45108e,%esi 0.00 : 426d9e: e8 dd df 00 00 callq 434d80 0.00 : 426da3: 85 c0 test %eax,%eax 0.00 : 426da5: 74 16 je 426dbd 0.00 : 426da7: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426dab: be 95 10 45 00 mov $0x451095,%esi 0.00 : 426db0: e8 cb df 00 00 callq 434d80 0.00 : 426db5: 85 c0 test %eax,%eax 0.00 : 426db7: 0f 85 18 f4 ff ff jne 4261d5 : pg_strcasecmp(prev_wd, "AFTER") == 0)) : { : static const char *const list_CREATETRIGGER_EVENTS[] = : {"INSERT", "DELETE", "UPDATE", "TRUNCATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); 0.00 : 426dbd: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426dc1: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426dc6: 48 c7 05 b7 41 24 00 movq $0x456340,0x2441b7(%rip) # 66af88 0.00 : 426dcd: 40 63 45 00 0.00 : 426dd1: c6 05 d0 41 24 00 00 movb $0x0,0x2441d0(%rip) # 66afa8 0.00 : 426dd8: e8 f3 c9 fd ff callq 4037d0 0.00 : 426ddd: 48 89 c3 mov %rax,%rbx : {"BEFORE", "AFTER", "INSTEAD OF", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER); : } : /* complete CREATE TRIGGER BEFORE,AFTER with an event */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426de0: e9 0d b2 ff ff jmpq 421ff2 : {"INSERT", "DELETE", "UPDATE", "TRUNCATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); : } : /* complete CREATE TRIGGER INSTEAD OF with an event */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426de5: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426de9: be 9b 10 45 00 mov $0x45109b,%esi 0.00 : 426dee: e8 8d df 00 00 callq 434d80 0.00 : 426df3: 85 c0 test %eax,%eax 0.00 : 426df5: 0f 85 02 f4 ff ff jne 4261fd 0.00 : 426dfb: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426dff: be 46 17 45 00 mov $0x451746,%esi 0.00 : 426e04: e8 77 df 00 00 callq 434d80 0.00 : 426e09: 85 c0 test %eax,%eax 0.00 : 426e0b: 0f 85 ec f3 ff ff jne 4261fd : pg_strcasecmp(prev_wd, "OF") == 0) : { : static const char *const list_CREATETRIGGER_EVENTS[] = : {"INSERT", "DELETE", "UPDATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); 0.00 : 426e11: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426e15: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426e1a: 48 c7 05 63 41 24 00 movq $0x456320,0x244163(%rip) # 66af88 0.00 : 426e21: 20 63 45 00 0.00 : 426e25: c6 05 7c 41 24 00 00 movb $0x0,0x24417c(%rip) # 66afa8 0.00 : 426e2c: e8 9f c9 fd ff callq 4037d0 0.00 : 426e31: 48 89 c3 mov %rax,%rbx : {"INSERT", "DELETE", "UPDATE", "TRUNCATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); : } : /* complete CREATE TRIGGER INSTEAD OF with an event */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426e34: e9 b9 b1 ff ff jmpq 421ff2 : {"INSERT", "DELETE", "UPDATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); : } : /* complete CREATE TRIGGER BEFORE,AFTER sth with OR,ON */ : else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426e39: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426e3d: be 8e 10 45 00 mov $0x45108e,%esi 0.00 : 426e42: e8 39 df 00 00 callq 434d80 0.00 : 426e47: 85 c0 test %eax,%eax 0.00 : 426e49: 75 40 jne 426e8b : pg_strcasecmp(prev2_wd, "OF") == 0)) : { : static const char *const list_CREATETRIGGER2[] = : {"ON", "OR", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER2); 0.00 : 426e4b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426e4f: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426e54: 48 c7 05 29 41 24 00 movq $0x4562f0,0x244129(%rip) # 66af88 0.00 : 426e5b: f0 62 45 00 0.00 : 426e5f: c6 05 42 41 24 00 00 movb $0x0,0x244142(%rip) # 66afa8 0.00 : 426e66: e8 65 c9 fd ff callq 4037d0 0.00 : 426e6b: 48 89 c3 mov %rax,%rbx : {"INSERT", "DELETE", "UPDATE", NULL}; : : COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS); : } : /* complete CREATE TRIGGER BEFORE,AFTER sth with OR,ON */ : else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426e6e: e9 7f b1 ff ff jmpq 421ff2 0.00 : 426e73: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426e77: be 46 17 45 00 mov $0x451746,%esi 0.00 : 426e7c: e8 ff de 00 00 callq 434d80 0.00 : 426e81: 85 c0 test %eax,%eax 0.00 : 426e83: 0f 85 c4 f3 ff ff jne 42624d 0.00 : 426e89: eb c0 jmp 426e4b 0.00 : 426e8b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 426e8f: be 95 10 45 00 mov $0x451095,%esi 0.00 : 426e94: e8 e7 de 00 00 callq 434d80 0.00 : 426e99: 85 c0 test %eax,%eax 0.00 : 426e9b: 74 ae je 426e4b 0.00 : 426e9d: e9 83 f3 ff ff jmpq 426225 : */ : else if (pg_strcasecmp(prev5_wd, "TRIGGER") == 0 && : (pg_strcasecmp(prev3_wd, "BEFORE") == 0 || : pg_strcasecmp(prev3_wd, "AFTER") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 426ea2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426ea6: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 426eab: 48 c7 05 ea 40 24 00 movq $0x454f40,0x2440ea(%rip) # 66afa0 0.00 : 426eb2: 40 4f 45 00 0.00 : 426eb6: 48 c7 05 bf 40 24 00 movq $0x0,0x2440bf(%rip) # 66af80 0.00 : 426ebd: 00 00 00 00 0.00 : 426ec1: e8 0a c9 fd ff callq 4037d0 0.00 : 426ec6: 48 89 c3 mov %rax,%rbx : : /* : * complete CREATE TRIGGER BEFORE,AFTER event ON with a list of : * tables : */ : else if (pg_strcasecmp(prev5_wd, "TRIGGER") == 0 && 0.00 : 426ec9: e9 24 b1 ff ff jmpq 421ff2 : (pg_strcasecmp(prev3_wd, "BEFORE") == 0 || : pg_strcasecmp(prev3_wd, "AFTER") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */ : else if (pg_strcasecmp(prev4_wd, "INSTEAD") == 0 && 0.00 : 426ece: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 426ed2: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 426ed7: e8 a4 de 00 00 callq 434d80 0.00 : 426edc: 85 c0 test %eax,%eax 0.00 : 426ede: 0f 85 dd f3 ff ff jne 4262c1 : pg_strcasecmp(prev3_wd, "OF") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL); 0.00 : 426ee4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426ee8: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 426eed: 48 c7 05 a8 40 24 00 movq $0x455040,0x2440a8(%rip) # 66afa0 0.00 : 426ef4: 40 50 45 00 0.00 : 426ef8: 48 c7 05 7d 40 24 00 movq $0x0,0x24407d(%rip) # 66af80 0.00 : 426eff: 00 00 00 00 0.00 : 426f03: e8 c8 c8 fd ff callq 4037d0 0.00 : 426f08: 48 89 c3 mov %rax,%rbx : (pg_strcasecmp(prev3_wd, "BEFORE") == 0 || : pg_strcasecmp(prev3_wd, "AFTER") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : /* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */ : else if (pg_strcasecmp(prev4_wd, "INSTEAD") == 0 && 0.00 : 426f0b: e9 e2 b0 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL); : /* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */ : else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && : prev2_wd[0] != '\0') : COMPLETE_WITH_CONST("PROCEDURE"); 0.00 : 426f10: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426f14: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 426f19: 48 c7 05 5c 40 24 00 movq $0x4510a3,0x24405c(%rip) # 66af80 0.00 : 426f20: a3 10 45 00 0.00 : 426f24: c6 05 7d 40 24 00 00 movb $0x0,0x24407d(%rip) # 66afa8 0.00 : 426f2b: e8 a0 c8 fd ff callq 4037d0 0.00 : 426f30: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "INSTEAD") == 0 && : pg_strcasecmp(prev3_wd, "OF") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL); : /* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */ : else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && 0.00 : 426f33: e9 ba b0 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_CREATEROLE); : } : : /* CREATE ROLE,USER,GROUP WITH */ : else if ((pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426f38: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426f3c: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 426f41: e8 3a de 00 00 callq 434d80 0.00 : 426f46: 85 c0 test %eax,%eax 0.00 : 426f48: 0f 85 7a f4 ff ff jne 4263c8 0.00 : 426f4e: e9 5f f4 ff ff jmpq 4263b2 : "CREATEUSER", "ENCRYPTED", "IN", "INHERIT", "LOGIN", "NOBYPASSRLS", : "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", : "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "REPLICATION", "ROLE", : "SUPERUSER", "SYSID", "UNENCRYPTED", "VALID UNTIL", NULL}; : : COMPLETE_WITH_LIST(list_CREATEROLE_WITH); 0.00 : 426f53: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426f57: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426f5c: 48 c7 05 21 40 24 00 movq $0x456140,0x244021(%rip) # 66af88 0.00 : 426f63: 40 61 45 00 0.00 : 426f67: c6 05 3a 40 24 00 00 movb $0x0,0x24403a(%rip) # 66afa8 0.00 : 426f6e: e8 5d c8 fd ff callq 4037d0 0.00 : 426f73: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_CREATEROLE); : } : : /* CREATE ROLE,USER,GROUP WITH */ : else if ((pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426f76: e9 77 b0 ff ff jmpq 421ff2 : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); : } : /* complete CREATE ROLE,USER,GROUP IN with ROLE,GROUP */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426f7b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426f7f: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 426f84: e8 f7 dd 00 00 callq 434d80 0.00 : 426f89: 85 c0 test %eax,%eax 0.00 : 426f8b: 0f 85 1f f5 ff ff jne 4264b0 0.00 : 426f91: e9 04 f5 ff ff jmpq 42649a : pg_strcasecmp(prev_wd, "IN") == 0) : { : static const char *const list_CREATEROLE3[] = : {"GROUP", "ROLE", NULL}; : : COMPLETE_WITH_LIST(list_CREATEROLE3); 0.00 : 426f96: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426f9a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426f9f: 48 c7 05 de 3f 24 00 movq $0x456120,0x243fde(%rip) # 66af88 0.00 : 426fa6: 20 61 45 00 0.00 : 426faa: c6 05 f7 3f 24 00 00 movb $0x0,0x243ff7(%rip) # 66afa8 0.00 : 426fb1: e8 1a c8 fd ff callq 4037d0 0.00 : 426fb6: 48 89 c3 mov %rax,%rbx : (pg_strcasecmp(prev_wd, "ENCRYPTED") == 0 || pg_strcasecmp(prev_wd, "UNENCRYPTED") == 0)) : { : COMPLETE_WITH_CONST("PASSWORD"); : } : /* complete CREATE ROLE,USER,GROUP IN with ROLE,GROUP */ : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 426fb9: e9 34 b0 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "FOREIGN") == 0) : { : static const char *const list_CREATE_FOREIGN[] = : {"DATA WRAPPER", "TABLE", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_FOREIGN); 0.00 : 426fbe: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 426fc2: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 426fc7: 48 c7 05 b6 3f 24 00 movq $0x4565d0,0x243fb6(%rip) # 66af88 0.00 : 426fce: d0 65 45 00 0.00 : 426fd2: c6 05 cf 3f 24 00 00 movb $0x0,0x243fcf(%rip) # 66afa8 0.00 : 426fd9: e8 f2 c7 fd ff callq 4037d0 0.00 : 426fde: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "EXTENSION") == 0) : COMPLETE_WITH_CONST("WITH SCHEMA"); : : /* CREATE FOREIGN */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 426fe1: e9 0c b0 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST(list_CREATE_FOREIGN); : } : : /* CREATE FOREIGN DATA WRAPPER */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 426fe6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 426fea: be 2b 11 45 00 mov $0x45112b,%esi 0.00 : 426fef: e8 8c dd 00 00 callq 434d80 0.00 : 426ff4: 85 c0 test %eax,%eax 0.00 : 426ff6: 0f 85 c5 eb ff ff jne 425bc1 0.00 : 426ffc: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427000: be 12 bd 43 00 mov $0x43bd12,%esi 0.00 : 427005: e8 76 dd 00 00 callq 434d80 0.00 : 42700a: 85 c0 test %eax,%eax 0.00 : 42700c: 0f 85 af eb ff ff jne 425bc1 : pg_strcasecmp(prev2_wd, "WRAPPER") == 0) : { : static const char *const list_CREATE_FOREIGN_DATA_WRAPPER[] = : {"HANDLER", "VALIDATOR", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_FOREIGN_DATA_WRAPPER); 0.00 : 427012: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427016: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42701b: 48 c7 05 62 3f 24 00 movq $0x4565b0,0x243f62(%rip) # 66af88 0.00 : 427022: b0 65 45 00 0.00 : 427026: c6 05 7b 3f 24 00 00 movb $0x0,0x243f7b(%rip) # 66afa8 0.00 : 42702d: e8 9e c7 fd ff callq 4037d0 0.00 : 427032: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_CREATE_FOREIGN); : } : : /* CREATE FOREIGN DATA WRAPPER */ : else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 && 0.00 : 427035: e9 b8 af ff ff jmpq 421ff2 : : /* CREATE INDEX */ : /* First off we complete CREATE UNIQUE with "INDEX" */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "UNIQUE") == 0) : COMPLETE_WITH_CONST("INDEX"); 0.00 : 42703a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42703e: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 427043: 48 c7 05 32 3f 24 00 movq $0x43bd9f,0x243f32(%rip) # 66af80 0.00 : 42704a: 9f bd 43 00 0.00 : 42704e: c6 05 53 3f 24 00 00 movb $0x0,0x243f53(%rip) # 66afa8 0.00 : 427055: e8 76 c7 fd ff callq 4037d0 0.00 : 42705a: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST(list_CREATE_FOREIGN_DATA_WRAPPER); : } : : /* CREATE INDEX */ : /* First off we complete CREATE UNIQUE with "INDEX" */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 42705d: e9 90 af ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "UNIQUE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, : " UNION SELECT 'ON'" : " UNION SELECT 'CONCURRENTLY'"); : /* Complete ... INDEX [] ON with a list of tables */ : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || 0.00 : 427062: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427066: be 5a 10 45 00 mov $0x45105a,%esi 0.00 : 42706b: e8 10 dd 00 00 callq 434d80 0.00 : 427070: 85 c0 test %eax,%eax 0.00 : 427072: 0f 85 11 ec ff ff jne 425c89 0.00 : 427078: e9 f6 eb ff ff jmpq 425c73 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : /* If we have CREATE|UNIQUE INDEX CONCURRENTLY, then add "ON" */ : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || : pg_strcasecmp(prev2_wd, "INDEX") == 0) && : pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 42707d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427081: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 427086: 48 c7 05 ef 3e 24 00 movq $0x4519c4,0x243eef(%rip) # 66af80 0.00 : 42708d: c4 19 45 00 0.00 : 427091: c6 05 10 3f 24 00 00 movb $0x0,0x243f10(%rip) # 66afa8 0.00 : 427098: e8 33 c7 fd ff callq 4037d0 0.00 : 42709d: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "INDEX") == 0 || : pg_strcasecmp(prev2_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : /* If we have CREATE|UNIQUE INDEX CONCURRENTLY, then add "ON" */ : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || 0.00 : 4270a0: e9 4d af ff ff jmpq 421ff2 : /* Complete ... INDEX [] ON with a list of tables */ : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || : pg_strcasecmp(prev2_wd, "INDEX") == 0 || : pg_strcasecmp(prev2_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); 0.00 : 4270a5: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4270a9: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4270ae: 48 c7 05 e7 3e 24 00 movq $0x455000,0x243ee7(%rip) # 66afa0 0.00 : 4270b5: 00 50 45 00 0.00 : 4270b9: 48 c7 05 bc 3e 24 00 movq $0x0,0x243ebc(%rip) # 66af80 0.00 : 4270c0: 00 00 00 00 0.00 : 4270c4: e8 07 c7 fd ff callq 4037d0 0.00 : 4270c9: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "UNIQUE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, : " UNION SELECT 'ON'" : " UNION SELECT 'CONCURRENTLY'"); : /* Complete ... INDEX [] ON with a list of tables */ : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || 0.00 : 4270cc: e9 21 af ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "INDEX") == 0) : { : static const char *const list_CREATE_INDEX[] = : {"CONCURRENTLY", "ON", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_INDEX); 0.00 : 4270d1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4270d5: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4270da: 48 c7 05 a3 3e 24 00 movq $0x456590,0x243ea3(%rip) # 66af88 0.00 : 4270e1: 90 65 45 00 0.00 : 4270e5: c6 05 bc 3e 24 00 00 movb $0x0,0x243ebc(%rip) # 66afa8 0.00 : 4270ec: e8 df c6 fd ff callq 4037d0 0.00 : 4270f1: 48 89 c3 mov %rax,%rbx : else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 || : pg_strcasecmp(prev2_wd, "INDEX") == 0) && : pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_CONST("ON"); : /* If we have CREATE|UNIQUE INDEX , then add "ON" or "CONCURRENTLY" */ : else if ((pg_strcasecmp(prev3_wd, "CREATE") == 0 || 0.00 : 4270f4: e9 f9 ae ff ff jmpq 421ff2 : : /* : * Complete INDEX ON
with a list of table columns (which : * should really be in parens) : */ : else if ((pg_strcasecmp(prev4_wd, "INDEX") == 0 || 0.00 : 4270f9: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4270fd: be 5a 10 45 00 mov $0x45105a,%esi 0.00 : 427102: e8 79 dc 00 00 callq 434d80 0.00 : 427107: 85 c0 test %eax,%eax 0.00 : 427109: 0f 85 2c ec ff ff jne 425d3b 0.00 : 42710f: e9 11 ec ff ff jmpq 425d25 : static const char *const list_CREATE_INDEX2[] = : {"(", "USING", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_INDEX2); : } : else if ((pg_strcasecmp(prev5_wd, "INDEX") == 0 || 0.00 : 427114: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427118: be 83 87 44 00 mov $0x448783,%esi 0.00 : 42711d: e8 5e dc 00 00 callq 434d80 0.00 : 427122: 85 c0 test %eax,%eax 0.00 : 427124: 0f 85 4f ec ff ff jne 425d79 : pg_strcasecmp(prev4_wd, "INDEX") == 0 || : pg_strcasecmp(prev4_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 42712a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42712e: 8b 05 74 3f 24 00 mov 0x243f74(%rip),%eax # 66b0a8 0.00 : 427134: 45 31 c9 xor %r9d,%r9d 0.00 : 427137: 45 31 c0 xor %r8d,%r8d 0.00 : 42713a: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42713f: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 427144: be 33 64 44 00 mov $0x446433,%esi 0.00 : 427149: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 427150: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 427154: e8 e7 5c fe ff callq 40ce40 0.00 : 427159: 48 89 c3 mov %rax,%rbx 0.00 : 42715c: 8b 05 46 3f 24 00 mov 0x243f46(%rip),%eax # 66b0a8 0.00 : 427162: 45 31 c9 xor %r9d,%r9d 0.00 : 427165: 45 31 c0 xor %r8d,%r8d 0.00 : 427168: 31 ff xor %edi,%edi 0.00 : 42716a: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42716f: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 427174: be 33 64 44 00 mov $0x446433,%esi 0.00 : 427179: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 427180: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 427184: e8 b7 5c fe ff callq 40ce40 0.00 : 427189: 8b 05 19 3f 24 00 mov 0x243f19(%rip),%eax # 66b0a8 0.00 : 42718f: 45 31 c9 xor %r9d,%r9d 0.00 : 427192: 45 31 c0 xor %r8d,%r8d 0.00 : 427195: 31 ff xor %edi,%edi 0.00 : 427197: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42719c: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4271a1: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4271a6: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4271ad: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4271b1: e8 8a 5c fe ff callq 40ce40 0.00 : 4271b6: 48 85 c0 test %rax,%rax 0.00 : 4271b9: 0f 84 05 01 00 00 je 4272c4 0.00 : 4271bf: 48 c7 05 b6 3d 24 00 movq $0x452d68,0x243db6(%rip) # 66af80 0.00 : 4271c6: 68 2d 45 00 0.00 : 4271ca: 48 89 05 bf 3d 24 00 mov %rax,0x243dbf(%rip) # 66af90 0.00 : 4271d1: 48 89 1d c0 3d 24 00 mov %rbx,0x243dc0(%rip) # 66af98 0.00 : 4271d8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4271dc: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4271e1: e8 ea c5 fd ff callq 4037d0 0.00 : 4271e6: 48 89 c3 mov %rax,%rbx : static const char *const list_CREATE_INDEX2[] = : {"(", "USING", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_INDEX2); : } : else if ((pg_strcasecmp(prev5_wd, "INDEX") == 0 || 0.00 : 4271e9: e9 04 ae ff ff jmpq 421ff2 : pg_strcasecmp(prev4_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); : /* same if you put in USING */ : else if (pg_strcasecmp(prev5_wd, "ON") == 0 && 0.00 : 4271ee: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4271f2: be 83 87 44 00 mov $0x448783,%esi 0.00 : 4271f7: e8 84 db 00 00 callq 434d80 0.00 : 4271fc: 85 c0 test %eax,%eax 0.00 : 4271fe: 0f 85 9d eb ff ff jne 425da1 : pg_strcasecmp(prev3_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev4_wd, ""); 0.00 : 427204: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427208: 8b 05 9a 3e 24 00 mov 0x243e9a(%rip),%eax # 66b0a8 0.00 : 42720e: 45 31 c9 xor %r9d,%r9d 0.00 : 427211: 45 31 c0 xor %r8d,%r8d 0.00 : 427214: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 427219: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42721e: be 33 64 44 00 mov $0x446433,%esi 0.00 : 427223: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42722a: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42722e: e8 0d 5c fe ff callq 40ce40 0.00 : 427233: 48 89 c3 mov %rax,%rbx 0.00 : 427236: 8b 05 6c 3e 24 00 mov 0x243e6c(%rip),%eax # 66b0a8 0.00 : 42723c: 45 31 c9 xor %r9d,%r9d 0.00 : 42723f: 45 31 c0 xor %r8d,%r8d 0.00 : 427242: 31 ff xor %edi,%edi 0.00 : 427244: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 427249: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42724e: be 33 64 44 00 mov $0x446433,%esi 0.00 : 427253: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42725a: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42725e: e8 dd 5b fe ff callq 40ce40 0.00 : 427263: 8b 05 3f 3e 24 00 mov 0x243e3f(%rip),%eax # 66b0a8 0.00 : 427269: 45 31 c9 xor %r9d,%r9d 0.00 : 42726c: 45 31 c0 xor %r8d,%r8d 0.00 : 42726f: 31 ff xor %edi,%edi 0.00 : 427271: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 427276: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42727b: be 33 64 44 00 mov $0x446433,%esi 0.00 : 427280: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 427287: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42728b: e8 b0 5b fe ff callq 40ce40 0.00 : 427290: 48 85 c0 test %rax,%rax 0.00 : 427293: 74 4a je 4272df 0.00 : 427295: 48 c7 05 e0 3c 24 00 movq $0x452d68,0x243ce0(%rip) # 66af80 0.00 : 42729c: 68 2d 45 00 0.00 : 4272a0: 48 89 05 e9 3c 24 00 mov %rax,0x243ce9(%rip) # 66af90 0.00 : 4272a7: 48 89 1d ea 3c 24 00 mov %rbx,0x243cea(%rip) # 66af98 0.00 : 4272ae: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4272b2: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4272b7: e8 14 c5 fd ff callq 4037d0 0.00 : 4272bc: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev4_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); : /* same if you put in USING */ : else if (pg_strcasecmp(prev5_wd, "ON") == 0 && 0.00 : 4272bf: e9 2e ad ff ff jmpq 421ff2 : else if ((pg_strcasecmp(prev5_wd, "INDEX") == 0 || : pg_strcasecmp(prev4_wd, "INDEX") == 0 || : pg_strcasecmp(prev4_wd, "CONCURRENTLY") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 4272c4: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 4272c8: 48 c7 05 ad 3c 24 00 movq $0x452c00,0x243cad(%rip) # 66af80 0.00 : 4272cf: 00 2c 45 00 0.00 : 4272d3: 48 89 05 b6 3c 24 00 mov %rax,0x243cb6(%rip) # 66af90 0.00 : 4272da: e9 f9 fe ff ff jmpq 4271d8 : /* same if you put in USING */ : else if (pg_strcasecmp(prev5_wd, "ON") == 0 && : pg_strcasecmp(prev3_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev4_wd, ""); 0.00 : 4272df: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4272e3: 48 c7 05 92 3c 24 00 movq $0x452c00,0x243c92(%rip) # 66af80 0.00 : 4272ea: 00 2c 45 00 0.00 : 4272ee: 48 89 05 9b 3c 24 00 mov %rax,0x243c9b(%rip) # 66af90 0.00 : 4272f5: eb b7 jmp 4272ae : pg_strcasecmp(prev2_wd, "ON") == 0) : { : static const char *const list_CREATE_INDEX2[] = : {"(", "USING", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_INDEX2); 0.00 : 4272f7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4272fb: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427300: 48 c7 05 7d 3c 24 00 movq $0x456570,0x243c7d(%rip) # 66af88 0.00 : 427307: 70 65 45 00 0.00 : 42730b: c6 05 96 3c 24 00 00 movb $0x0,0x243c96(%rip) # 66afa8 0.00 : 427312: e8 b9 c4 fd ff callq 4037d0 0.00 : 427317: 48 89 c3 mov %rax,%rbx : : /* : * Complete INDEX ON
with a list of table columns (which : * should really be in parens) : */ : else if ((pg_strcasecmp(prev4_wd, "INDEX") == 0 || 0.00 : 42731a: e9 d3 ac ff ff jmpq 421ff2 : static const char *const list_CREATE_INDEX2[] = : {"(", "USING", NULL}; : : COMPLETE_WITH_LIST(list_CREATE_INDEX2); : } : else if ((pg_strcasecmp(prev5_wd, "INDEX") == 0 || 0.00 : 42731f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427323: be 5a 10 45 00 mov $0x45105a,%esi 0.00 : 427328: e8 53 da 00 00 callq 434d80 0.00 : 42732d: 85 c0 test %eax,%eax 0.00 : 42732f: 0f 85 44 ea ff ff jne 425d79 0.00 : 427335: e9 29 ea ff ff jmpq 425d63 : else if (pg_strcasecmp(prev5_wd, "ON") == 0 && : pg_strcasecmp(prev3_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev4_wd, ""); : /* Complete USING with an index method */ : else if ((pg_strcasecmp(prev6_wd, "INDEX") == 0 || 0.00 : 42733a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42733e: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 427343: e8 38 da 00 00 callq 434d80 0.00 : 427348: 85 c0 test %eax,%eax 0.00 : 42734a: 0f 85 8f ea ff ff jne 425ddf 0.00 : 427350: e9 74 ea ff ff jmpq 425dc9 : pg_strcasecmp(prev5_wd, "INDEX") == 0 || : pg_strcasecmp(prev4_wd, "INDEX") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_access_methods); : else if (pg_strcasecmp(prev4_wd, "ON") == 0 && 0.00 : 427355: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427359: be 30 18 45 00 mov $0x451830,%esi 0.00 : 42735e: e8 1d da 00 00 callq 434d80 0.00 : 427363: 85 c0 test %eax,%eax 0.00 : 427365: 0f 84 9c ea ff ff je 425e07 0.00 : 42736b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42736f: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 427374: e8 07 da 00 00 callq 434d80 0.00 : 427379: 85 c0 test %eax,%eax 0.00 : 42737b: 0f 85 86 ea ff ff jne 425e07 : (!(pg_strcasecmp(prev6_wd, "POLICY") == 0) && : !(pg_strcasecmp(prev4_wd, "FOR") == 0)) && : pg_strcasecmp(prev2_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 427381: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427385: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42738a: 48 c7 05 eb 3b 24 00 movq $0x448783,0x243beb(%rip) # 66af80 0.00 : 427391: 83 87 44 00 0.00 : 427395: c6 05 0c 3c 24 00 00 movb $0x0,0x243c0c(%rip) # 66afa8 0.00 : 42739c: e8 2f c4 fd ff callq 4037d0 0.00 : 4273a1: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev5_wd, "INDEX") == 0 || : pg_strcasecmp(prev4_wd, "INDEX") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_access_methods); : else if (pg_strcasecmp(prev4_wd, "ON") == 0 && 0.00 : 4273a4: e9 49 ac ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev5_wd, "ON") == 0 && : pg_strcasecmp(prev3_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev4_wd, ""); : /* Complete USING with an index method */ : else if ((pg_strcasecmp(prev6_wd, "INDEX") == 0 || 0.00 : 4273a9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4273ad: be d9 0f 45 00 mov $0x450fd9,%esi 0.00 : 4273b2: e8 c9 d9 00 00 callq 434d80 0.00 : 4273b7: 85 c0 test %eax,%eax 0.00 : 4273b9: 0f 85 20 ea ff ff jne 425ddf : pg_strcasecmp(prev5_wd, "INDEX") == 0 || : pg_strcasecmp(prev4_wd, "INDEX") == 0) && : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "USING") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_access_methods); 0.00 : 4273bf: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4273c3: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4273c8: 48 c7 05 ad 3b 24 00 movq $0x4534a8,0x243bad(%rip) # 66af80 0.00 : 4273cf: a8 34 45 00 0.00 : 4273d3: e8 f8 c3 fd ff callq 4037d0 0.00 : 4273d8: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev5_wd, "ON") == 0 && : pg_strcasecmp(prev3_wd, "USING") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev4_wd, ""); : /* Complete USING with an index method */ : else if ((pg_strcasecmp(prev6_wd, "INDEX") == 0 || 0.00 : 4273db: e9 12 ac ff ff jmpq 421ff2 : : /* CREATE POLICY */ : /* Complete "CREATE POLICY ON" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 4273e0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4273e4: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4273e9: 48 c7 05 8c 3b 24 00 movq $0x4519c4,0x243b8c(%rip) # 66af80 0.00 : 4273f0: c4 19 45 00 0.00 : 4273f4: c6 05 ad 3b 24 00 00 movb $0x0,0x243bad(%rip) # 66afa8 0.00 : 4273fb: e8 d0 c3 fd ff callq 4037d0 0.00 : 427400: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "USING") == 0) : COMPLETE_WITH_CONST("("); : : /* CREATE POLICY */ : /* Complete "CREATE POLICY ON" */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 427403: e9 ea ab ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_QUERY(Query_for_all_table_constraints); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 427408: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42740c: be db 19 45 00 mov $0x4519db,%esi 0.00 : 427411: e8 6a d9 00 00 callq 434d80 0.00 : 427416: 85 c0 test %eax,%eax 0.00 : 427418: 0f 85 7a e3 ff ff jne 425798 : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_CONST("ON"); 0.00 : 42741e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427422: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 427427: 48 c7 05 4e 3b 24 00 movq $0x4519c4,0x243b4e(%rip) # 66af80 0.00 : 42742e: c4 19 45 00 0.00 : 427432: c6 05 6f 3b 24 00 00 movb $0x0,0x243b6f(%rip) # 66afa8 0.00 : 427439: e8 92 c3 fd ff callq 4037d0 0.00 : 42743e: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_QUERY(Query_for_all_table_constraints); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 427441: e9 ac ab ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev5_wd, "COMMENT") == 0 && 0.00 : 427446: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42744a: be db 19 45 00 mov $0x4519db,%esi 0.00 : 42744f: e8 2c d9 00 00 callq 434d80 0.00 : 427454: 85 c0 test %eax,%eax 0.00 : 427456: 0f 85 64 e3 ff ff jne 4257c0 0.00 : 42745c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427460: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 427465: e8 16 d9 00 00 callq 434d80 0.00 : 42746a: 85 c0 test %eax,%eax 0.00 : 42746c: 0f 85 4e e3 ff ff jne 4257c0 : pg_strcasecmp(prev4_wd, "ON") == 0 && : pg_strcasecmp(prev3_wd, "CONSTRAINT") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 427472: 48 8b 45 a8 mov -0x58(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint); 0.00 : 427476: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42747a: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42747f: 48 c7 05 f6 3a 24 00 movq $0x453258,0x243af6(%rip) # 66af80 0.00 : 427486: 58 32 45 00 : else if (pg_strcasecmp(prev5_wd, "COMMENT") == 0 && : pg_strcasecmp(prev4_wd, "ON") == 0 && : pg_strcasecmp(prev3_wd, "CONSTRAINT") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 42748a: 48 89 05 ff 3a 24 00 mov %rax,0x243aff(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint); 0.00 : 427491: e8 3a c3 fd ff callq 4037d0 0.00 : 427496: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev2_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev5_wd, "COMMENT") == 0 && 0.00 : 427499: e9 54 ab ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 42749e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4274a2: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 4274a7: e8 d4 d8 00 00 callq 434d80 0.00 : 4274ac: 85 c0 test %eax,%eax 0.00 : 4274ae: 0f 85 34 e3 ff ff jne 4257e8 0.00 : 4274b4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4274b8: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 4274bd: e8 be d8 00 00 callq 434d80 0.00 : 4274c2: 85 c0 test %eax,%eax 0.00 : 4274c4: 0f 85 1e e3 ff ff jne 4257e8 : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); 0.00 : 4274ca: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4274ce: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4274d3: 48 c7 05 c2 3a 24 00 movq $0x454fc0,0x243ac2(%rip) # 66afa0 0.00 : 4274da: c0 4f 45 00 0.00 : 4274de: 48 c7 05 97 3a 24 00 movq $0x0,0x243a97(%rip) # 66af80 0.00 : 4274e5: 00 00 00 00 0.00 : 4274e9: e8 e2 c2 fd ff callq 4037d0 0.00 : 4274ee: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 4274f1: e9 fc aa ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 4274f6: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4274fa: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 4274ff: e8 7c d8 00 00 callq 434d80 0.00 : 427504: 85 c0 test %eax,%eax 0.00 : 427506: 0f 85 04 e3 ff ff jne 425810 0.00 : 42750c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427510: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 427515: e8 66 d8 00 00 callq 434d80 0.00 : 42751a: 85 c0 test %eax,%eax 0.00 : 42751c: 0f 85 ee e2 ff ff jne 425810 : pg_strcasecmp(prev3_wd, "ON") == 0 && : pg_strcasecmp(prev2_wd, "EVENT") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); 0.00 : 427522: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427526: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42752b: 48 c7 05 4a 3a 24 00 movq $0x451e28,0x243a4a(%rip) # 66af80 0.00 : 427532: 28 1e 45 00 0.00 : 427536: e8 95 c2 fd ff callq 4037d0 0.00 : 42753b: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 42753e: e9 af aa ff ff jmpq 421ff2 : static const char *const list_DATABASE[] = : {"OWNER", "TEMPLATE", "ENCODING", "TABLESPACE", "IS_TEMPLATE", : "ALLOW_CONNECTIONS", "CONNECTION LIMIT", "LC_COLLATE", "LC_CTYPE", : NULL}; : : COMPLETE_WITH_LIST(list_DATABASE); 0.00 : 427543: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427547: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42754c: 48 c7 05 31 3a 24 00 movq $0x456600,0x243a31(%rip) # 66af88 0.00 : 427553: 00 66 45 00 0.00 : 427557: c6 05 4a 3a 24 00 00 movb $0x0,0x243a4a(%rip) # 66afa8 0.00 : 42755e: e8 6d c2 fd ff callq 4037d0 0.00 : 427563: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_CSV); : } : : /* CREATE DATABASE */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 427566: e9 87 aa ff ff jmpq 421ff2 : NULL}; : : COMPLETE_WITH_LIST(list_DATABASE); : } : : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 42756b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42756f: be ae bf 43 00 mov $0x43bfae,%esi 0.00 : 427574: e8 07 d8 00 00 callq 434d80 0.00 : 427579: 85 c0 test %eax,%eax 0.00 : 42757b: 0f 85 a0 e5 ff ff jne 425b21 : pg_strcasecmp(prev3_wd, "DATABASE") == 0 && : pg_strcasecmp(prev_wd, "TEMPLATE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_template_databases); 0.00 : 427581: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427585: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42758a: 48 c7 05 eb 39 24 00 movq $0x453338,0x2439eb(%rip) # 66af80 0.00 : 427591: 38 33 45 00 0.00 : 427595: e8 36 c2 fd ff callq 4037d0 0.00 : 42759a: 48 89 c3 mov %rax,%rbx : NULL}; : : COMPLETE_WITH_LIST(list_DATABASE); : } : : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 42759d: e9 50 aa ff ff jmpq 421ff2 : : /* CREATE EXTENSION */ : /* Complete with available extensions rather than installed ones. */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "EXTENSION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_available_extensions); 0.00 : 4275a2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4275a6: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4275ab: 48 c7 05 ca 39 24 00 movq $0x4533d0,0x2439ca(%rip) # 66af80 0.00 : 4275b2: d0 33 45 00 0.00 : 4275b6: e8 15 c2 fd ff callq 4037d0 0.00 : 4275bb: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "TEMPLATE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_template_databases); : : /* CREATE EXTENSION */ : /* Complete with available extensions rather than installed ones. */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && 0.00 : 4275be: e9 2f aa ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "EXTENSION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_available_extensions); : /* CREATE EXTENSION */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && : pg_strcasecmp(prev2_wd, "EXTENSION") == 0) : COMPLETE_WITH_CONST("WITH SCHEMA"); 0.00 : 4275c3: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4275c7: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4275cc: 48 c7 05 a9 39 24 00 movq $0x451047,0x2439a9(%rip) # 66af80 0.00 : 4275d3: 47 10 45 00 0.00 : 4275d7: c6 05 ca 39 24 00 00 movb $0x0,0x2439ca(%rip) # 66afa8 0.00 : 4275de: e8 ed c1 fd ff callq 4037d0 0.00 : 4275e3: 48 89 c3 mov %rax,%rbx : /* Complete with available extensions rather than installed ones. */ : else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 && : pg_strcasecmp(prev_wd, "EXTENSION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_available_extensions); : /* CREATE EXTENSION */ : else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 && 0.00 : 4275e6: e9 07 aa ff ff jmpq 421ff2 : "SERVER", "INDEX", "LANGUAGE", "RULE", "SCHEMA", "SEQUENCE", : "TABLE", "TYPE", "VIEW", "MATERIALIZED VIEW", "COLUMN", "AGGREGATE", "FUNCTION", : "OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN", "LARGE OBJECT", : "TABLESPACE", "TEXT SEARCH", "ROLE", NULL}; : : COMPLETE_WITH_LIST(list_COMMENT); 0.00 : 4275eb: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4275ef: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4275f4: 48 c7 05 89 39 24 00 movq $0x456760,0x243989(%rip) # 66af88 0.00 : 4275fb: 60 67 45 00 0.00 : 4275ff: c6 05 a2 39 24 00 00 movb $0x0,0x2439a2(%rip) # 66afa8 0.00 : 427606: e8 c5 c1 fd ff callq 4037d0 0.00 : 42760b: 48 89 c3 mov %rax,%rbx : } : : /* COMMENT */ : else if (pg_strcasecmp(prev_wd, "COMMENT") == 0) : COMPLETE_WITH_CONST("ON"); : else if (pg_strcasecmp(prev2_wd, "COMMENT") == 0 && 0.00 : 42760e: e9 df a9 ff ff jmpq 421ff2 : "OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN", "LARGE OBJECT", : "TABLESPACE", "TEXT SEARCH", "ROLE", NULL}; : : COMPLETE_WITH_LIST(list_COMMENT); : } : else if (pg_strcasecmp(prev3_wd, "COMMENT") == 0 && 0.00 : 427613: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427617: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 42761c: e8 5f d7 00 00 callq 434d80 0.00 : 427621: 85 c0 test %eax,%eax 0.00 : 427623: 0f 85 f7 e0 ff ff jne 425720 : pg_strcasecmp(prev_wd, "FOREIGN") == 0) : { : static const char *const list_TRANS2[] = : {"DATA WRAPPER", "TABLE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); 0.00 : 427629: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42762d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427632: 48 c7 05 4b 39 24 00 movq $0x456730,0x24394b(%rip) # 66af88 0.00 : 427639: 30 67 45 00 0.00 : 42763d: c6 05 64 39 24 00 00 movb $0x0,0x243964(%rip) # 66afa8 0.00 : 427644: e8 87 c1 fd ff callq 4037d0 0.00 : 427649: 48 89 c3 mov %rax,%rbx : "OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN", "LARGE OBJECT", : "TABLESPACE", "TEXT SEARCH", "ROLE", NULL}; : : COMPLETE_WITH_LIST(list_COMMENT); : } : else if (pg_strcasecmp(prev3_wd, "COMMENT") == 0 && 0.00 : 42764c: e9 a1 a9 ff ff jmpq 421ff2 : static const char *const list_TRANS2[] = : {"DATA WRAPPER", "TABLE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 427651: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427655: be 14 10 45 00 mov $0x451014,%esi 0.00 : 42765a: e8 21 d7 00 00 callq 434d80 0.00 : 42765f: 85 c0 test %eax,%eax 0.00 : 427661: 0f 85 e1 e0 ff ff jne 425748 0.00 : 427667: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42766b: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 427670: e8 0b d7 00 00 callq 434d80 0.00 : 427675: 85 c0 test %eax,%eax 0.00 : 427677: 0f 85 cb e0 ff ff jne 425748 : pg_strcasecmp(prev_wd, "SEARCH") == 0) : { : static const char *const list_TRANS2[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); 0.00 : 42767d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427681: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427686: 48 c7 05 f7 38 24 00 movq $0x456700,0x2438f7(%rip) # 66af88 0.00 : 42768d: 00 67 45 00 0.00 : 427691: c6 05 10 39 24 00 00 movb $0x0,0x243910(%rip) # 66afa8 0.00 : 427698: e8 33 c1 fd ff callq 4037d0 0.00 : 42769d: 48 89 c3 mov %rax,%rbx : static const char *const list_TRANS2[] = : {"DATA WRAPPER", "TABLE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); : } : else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 && 0.00 : 4276a0: e9 4d a9 ff ff jmpq 421ff2 : static const char *const list_TRANS2[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); : } : else if (pg_strcasecmp(prev3_wd, "COMMENT") == 0 && 0.00 : 4276a5: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4276a9: be db 19 45 00 mov $0x4519db,%esi 0.00 : 4276ae: e8 cd d6 00 00 callq 434d80 0.00 : 4276b3: 85 c0 test %eax,%eax 0.00 : 4276b5: 0f 85 b5 e0 ff ff jne 425770 : pg_strcasecmp(prev2_wd, "ON") == 0 && : pg_strcasecmp(prev_wd, "CONSTRAINT") == 0) : { : COMPLETE_WITH_QUERY(Query_for_all_table_constraints); 0.00 : 4276bb: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4276bf: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4276c4: 48 c7 05 b1 38 24 00 movq $0x4531f0,0x2438b1(%rip) # 66af80 0.00 : 4276cb: f0 31 45 00 0.00 : 4276cf: e8 fc c0 fd ff callq 4037d0 0.00 : 4276d4: 48 89 c3 mov %rax,%rbx : static const char *const list_TRANS2[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_TRANS2); : } : else if (pg_strcasecmp(prev3_wd, "COMMENT") == 0 && 0.00 : 4276d7: e9 16 a9 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "VERBOSE") == 0 && : pg_strcasecmp(prev2_wd, "CLUSTER") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : : /* If we have CLUSTER , then add "USING" */ : else if (pg_strcasecmp(prev2_wd, "CLUSTER") == 0 && 0.00 : 4276dc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4276e0: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 4276e5: e8 96 d6 00 00 callq 434d80 0.00 : 4276ea: 85 c0 test %eax,%eax 0.00 : 4276ec: 0f 84 c6 de ff ff je 4255b8 : pg_strcasecmp(prev_wd, "ON") != 0 && : pg_strcasecmp(prev_wd, "VERBOSE") != 0) : { : COMPLETE_WITH_CONST("USING"); 0.00 : 4276f2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4276f6: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4276fb: 48 c7 05 7a 38 24 00 movq $0x450fd9,0x24387a(%rip) # 66af80 0.00 : 427702: d9 0f 45 00 0.00 : 427706: c6 05 9b 38 24 00 00 movb $0x0,0x24389b(%rip) # 66afa8 0.00 : 42770d: e8 be c0 fd ff callq 4037d0 0.00 : 427712: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev_wd, "VERBOSE") == 0 && : pg_strcasecmp(prev2_wd, "CLUSTER") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : : /* If we have CLUSTER , then add "USING" */ : else if (pg_strcasecmp(prev2_wd, "CLUSTER") == 0 && 0.00 : 427715: e9 d8 a8 ff ff jmpq 421ff2 : } : /* If we have CLUSTER VERBOSE , then add "USING" */ : else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 && : pg_strcasecmp(prev2_wd, "VERBOSE") == 0) : { : COMPLETE_WITH_CONST("USING"); 0.00 : 42771a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42771e: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 427723: 48 c7 05 52 38 24 00 movq $0x450fd9,0x243852(%rip) # 66af80 0.00 : 42772a: d9 0f 45 00 0.00 : 42772e: c6 05 73 38 24 00 00 movb $0x0,0x243873(%rip) # 66afa8 0.00 : 427735: e8 96 c0 fd ff callq 4037d0 0.00 : 42773a: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "VERBOSE") != 0) : { : COMPLETE_WITH_CONST("USING"); : } : /* If we have CLUSTER VERBOSE , then add "USING" */ : else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 && 0.00 : 42773d: e9 b0 a8 ff ff jmpq 421ff2 : /* : * If the previous words are CLUSTER VERBOSE produce list of tables : */ : else if (pg_strcasecmp(prev_wd, "VERBOSE") == 0 && : pg_strcasecmp(prev2_wd, "CLUSTER") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); 0.00 : 427742: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427746: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42774b: 48 c7 05 4a 38 24 00 movq $0x455000,0x24384a(%rip) # 66afa0 0.00 : 427752: 00 50 45 00 0.00 : 427756: 48 c7 05 1f 38 24 00 movq $0x0,0x24381f(%rip) # 66af80 0.00 : 42775d: 00 00 00 00 0.00 : 427761: e8 6a c0 fd ff callq 4037d0 0.00 : 427766: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, "UNION SELECT 'VERBOSE'"); : : /* : * If the previous words are CLUSTER VERBOSE produce list of tables : */ : else if (pg_strcasecmp(prev_wd, "VERBOSE") == 0 && 0.00 : 427769: e9 84 a8 ff ff jmpq 421ff2 : : /* : * Complete DELETE with FROM (only if the word before that is not "ON" : * (cf. rules) or "BEFORE" or "AFTER" (cf. triggers) or GRANT) : */ : else if (pg_strcasecmp(prev_wd, "DELETE") == 0 && 0.00 : 42776e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427772: be ba 7c 45 00 mov $0x457cba,%esi 0.00 : 427777: e8 04 d6 00 00 callq 434d80 0.00 : 42777c: 85 c0 test %eax,%eax 0.00 : 42777e: 75 16 jne 427796 0.00 : 427780: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427784: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 427789: e8 f2 d5 00 00 callq 434d80 0.00 : 42778e: 85 c0 test %eax,%eax 0.00 : 427790: 0f 85 ec 00 00 00 jne 427882 : pg_strcasecmp(prev2_wd, "GRANT") == 0 || : pg_strcasecmp(prev2_wd, "BEFORE") == 0 || : pg_strcasecmp(prev2_wd, "AFTER") == 0)) : COMPLETE_WITH_CONST("FROM"); : /* Complete DELETE FROM with a list of tables */ : else if (pg_strcasecmp(prev2_wd, "DELETE") == 0 && 0.00 : 427796: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42779a: be ba 7c 45 00 mov $0x457cba,%esi 0.00 : 42779f: e8 dc d5 00 00 callq 434d80 0.00 : 4277a4: 85 c0 test %eax,%eax 0.00 : 4277a6: 75 16 jne 4277be 0.00 : 4277a8: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4277ac: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 4277b1: e8 ca d5 00 00 callq 434d80 0.00 : 4277b6: 85 c0 test %eax,%eax 0.00 : 4277b8: 0f 84 2e 01 00 00 je 4278ec : pg_strcasecmp(prev_wd, "FROM") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); : /* Complete DELETE FROM
*/ : else if (pg_strcasecmp(prev3_wd, "DELETE") == 0 && 0.00 : 4277be: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4277c2: be ba 7c 45 00 mov $0x457cba,%esi 0.00 : 4277c7: e8 b4 d5 00 00 callq 434d80 0.00 : 4277cc: 85 c0 test %eax,%eax 0.00 : 4277ce: 75 12 jne 4277e2 0.00 : 4277d0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4277d4: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 4277d9: e8 a2 d5 00 00 callq 434d80 0.00 : 4277de: 85 c0 test %eax,%eax 0.00 : 4277e0: 74 3a je 42781c : COMPLETE_WITH_LIST(list_DELETE); : } : /* XXX: implement tab completion for DELETE ... USING */ : : /* DISCARD */ : else if (pg_strcasecmp(prev_wd, "DISCARD") == 0) 0.00 : 4277e2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4277e6: be 76 c0 43 00 mov $0x43c076,%esi 0.00 : 4277eb: e8 90 d5 00 00 callq 434d80 0.00 : 4277f0: 85 c0 test %eax,%eax 0.00 : 4277f2: 75 50 jne 427844 : { : static const char *const list_DISCARD[] = : {"ALL", "PLANS", "SEQUENCES", "TEMP", NULL}; : : COMPLETE_WITH_LIST(list_DISCARD); 0.00 : 4277f4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4277f8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4277fd: 48 c7 05 80 37 24 00 movq $0x456040,0x243780(%rip) # 66af88 0.00 : 427804: 40 60 45 00 0.00 : 427808: c6 05 99 37 24 00 00 movb $0x0,0x243799(%rip) # 66afa8 0.00 : 42780f: e8 bc bf fd ff callq 4037d0 0.00 : 427814: 48 89 c3 mov %rax,%rbx 0.00 : 427817: e9 d6 a7 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "FROM") == 0) : { : static const char *const list_DELETE[] = : {"USING", "WHERE", "SET", NULL}; : : COMPLETE_WITH_LIST(list_DELETE); 0.00 : 42781c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427820: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427825: 48 c7 05 58 37 24 00 movq $0x456080,0x243758(%rip) # 66af88 0.00 : 42782c: 80 60 45 00 0.00 : 427830: c6 05 71 37 24 00 00 movb $0x0,0x243771(%rip) # 66afa8 0.00 : 427837: e8 94 bf fd ff callq 4037d0 0.00 : 42783c: 48 89 c3 mov %rax,%rbx : /* Complete DELETE FROM with a list of tables */ : else if (pg_strcasecmp(prev2_wd, "DELETE") == 0 && : pg_strcasecmp(prev_wd, "FROM") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); : /* Complete DELETE FROM
*/ : else if (pg_strcasecmp(prev3_wd, "DELETE") == 0 && 0.00 : 42783f: e9 ae a7 ff ff jmpq 421ff2 : /* DO */ : : /* : * Complete DO with LANGUAGE. : */ : else if (pg_strcasecmp(prev_wd, "DO") == 0) 0.00 : 427844: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427848: be 94 c0 43 00 mov $0x43c094,%esi 0.00 : 42784d: e8 2e d5 00 00 callq 434d80 0.00 : 427852: 85 c0 test %eax,%eax 0.00 : 427854: 0f 85 be 00 00 00 jne 427918 : { : static const char *const list_DO[] = : {"LANGUAGE", NULL}; : : COMPLETE_WITH_LIST(list_DO); 0.00 : 42785a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42785e: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427863: 48 c7 05 1a 37 24 00 movq $0x456030,0x24371a(%rip) # 66af88 0.00 : 42786a: 30 60 45 00 0.00 : 42786e: c6 05 33 37 24 00 00 movb $0x0,0x243733(%rip) # 66afa8 0.00 : 427875: e8 56 bf fd ff callq 4037d0 0.00 : 42787a: 48 89 c3 mov %rax,%rbx 0.00 : 42787d: e9 70 a7 ff ff jmpq 421ff2 : : /* : * Complete DELETE with FROM (only if the word before that is not "ON" : * (cf. rules) or "BEFORE" or "AFTER" (cf. triggers) or GRANT) : */ : else if (pg_strcasecmp(prev_wd, "DELETE") == 0 && 0.00 : 427882: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427886: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 42788b: e8 f0 d4 00 00 callq 434d80 0.00 : 427890: 85 c0 test %eax,%eax 0.00 : 427892: 0f 84 fe fe ff ff je 427796 0.00 : 427898: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42789c: be 8e 10 45 00 mov $0x45108e,%esi 0.00 : 4278a1: e8 da d4 00 00 callq 434d80 0.00 : 4278a6: 85 c0 test %eax,%eax 0.00 : 4278a8: 0f 84 e8 fe ff ff je 427796 0.00 : 4278ae: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4278b2: be 95 10 45 00 mov $0x451095,%esi 0.00 : 4278b7: e8 c4 d4 00 00 callq 434d80 0.00 : 4278bc: 85 c0 test %eax,%eax 0.00 : 4278be: 0f 84 d2 fe ff ff je 427796 : !(pg_strcasecmp(prev2_wd, "ON") == 0 || : pg_strcasecmp(prev2_wd, "GRANT") == 0 || : pg_strcasecmp(prev2_wd, "BEFORE") == 0 || : pg_strcasecmp(prev2_wd, "AFTER") == 0)) : COMPLETE_WITH_CONST("FROM"); 0.00 : 4278c4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4278c8: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4278cd: 48 c7 05 a8 36 24 00 movq $0x451b17,0x2436a8(%rip) # 66af80 0.00 : 4278d4: 17 1b 45 00 0.00 : 4278d8: c6 05 c9 36 24 00 00 movb $0x0,0x2436c9(%rip) # 66afa8 0.00 : 4278df: e8 ec be fd ff callq 4037d0 0.00 : 4278e4: 48 89 c3 mov %rax,%rbx : : /* : * Complete DELETE with FROM (only if the word before that is not "ON" : * (cf. rules) or "BEFORE" or "AFTER" (cf. triggers) or GRANT) : */ : else if (pg_strcasecmp(prev_wd, "DELETE") == 0 && 0.00 : 4278e7: e9 06 a7 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "AFTER") == 0)) : COMPLETE_WITH_CONST("FROM"); : /* Complete DELETE FROM with a list of tables */ : else if (pg_strcasecmp(prev2_wd, "DELETE") == 0 && : pg_strcasecmp(prev_wd, "FROM") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); 0.00 : 4278ec: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4278f0: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4278f5: 48 c7 05 a0 36 24 00 movq $0x455080,0x2436a0(%rip) # 66afa0 0.00 : 4278fc: 80 50 45 00 0.00 : 427900: 48 c7 05 75 36 24 00 movq $0x0,0x243675(%rip) # 66af80 0.00 : 427907: 00 00 00 00 0.00 : 42790b: e8 c0 be fd ff callq 4037d0 0.00 : 427910: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "GRANT") == 0 || : pg_strcasecmp(prev2_wd, "BEFORE") == 0 || : pg_strcasecmp(prev2_wd, "AFTER") == 0)) : COMPLETE_WITH_CONST("FROM"); : /* Complete DELETE FROM with a list of tables */ : else if (pg_strcasecmp(prev2_wd, "DELETE") == 0 && 0.00 : 427913: e9 da a6 ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(list_DO); : } : : /* DROP (when not the previous word) */ : /* DROP AGGREGATE */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427918: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42791c: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427921: e8 5a d4 00 00 callq 434d80 0.00 : 427926: 85 c0 test %eax,%eax 0.00 : 427928: 75 16 jne 427940 0.00 : 42792a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42792e: be fe bb 43 00 mov $0x43bbfe,%esi 0.00 : 427933: e8 48 d4 00 00 callq 434d80 0.00 : 427938: 85 c0 test %eax,%eax 0.00 : 42793a: 0f 84 60 10 00 00 je 4289a0 : pg_strcasecmp(prev2_wd, "AGGREGATE") == 0) : COMPLETE_WITH_CONST("("); : : /* DROP object with CASCADE / RESTRICT */ : else if ((pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427940: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427944: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427949: e8 32 d4 00 00 callq 434d80 0.00 : 42794e: 85 c0 test %eax,%eax 0.00 : 427950: 0f 85 62 01 00 00 jne 427ab8 0.00 : 427956: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42795a: be 2d bc 43 00 mov $0x43bc2d,%esi 0.00 : 42795f: e8 1c d4 00 00 callq 434d80 0.00 : 427964: 85 c0 test %eax,%eax 0.00 : 427966: 75 50 jne 4279b8 : pg_strcasecmp(prev2_wd, "DICTIONARY") == 0 || : pg_strcasecmp(prev2_wd, "PARSER") == 0 || : pg_strcasecmp(prev2_wd, "TEMPLATE") == 0)) : ) : { : if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427968: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42796c: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427971: e8 0a d4 00 00 callq 434d80 0.00 : 427976: 85 c0 test %eax,%eax 0.00 : 427978: 75 16 jne 427990 0.00 : 42797a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42797e: be 51 bd 43 00 mov $0x43bd51,%esi 0.00 : 427983: e8 f8 d3 00 00 callq 434d80 0.00 : 427988: 85 c0 test %eax,%eax 0.00 : 42798a: 0f 84 5d 18 00 00 je 4291ed : else : { : static const char *const list_DROPCR[] = : {"CASCADE", "RESTRICT", NULL}; : : COMPLETE_WITH_LIST(list_DROPCR); 0.00 : 427990: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427994: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427999: 48 c7 05 e4 35 24 00 movq $0x456010,0x2435e4(%rip) # 66af88 0.00 : 4279a0: 10 60 45 00 0.00 : 4279a4: c6 05 fd 35 24 00 00 movb $0x0,0x2435fd(%rip) # 66afa8 0.00 : 4279ab: e8 20 be fd ff callq 4037d0 0.00 : 4279b0: 48 89 c3 mov %rax,%rbx 0.00 : 4279b3: e9 3a a6 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "AGGREGATE") == 0) : COMPLETE_WITH_CONST("("); : : /* DROP object with CASCADE / RESTRICT */ : else if ((pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 4279b8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4279bc: be 55 bc 43 00 mov $0x43bc55,%esi 0.00 : 4279c1: e8 ba d3 00 00 callq 434d80 0.00 : 4279c6: 85 c0 test %eax,%eax 0.00 : 4279c8: 74 9e je 427968 0.00 : 4279ca: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4279ce: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 4279d3: e8 a8 d3 00 00 callq 434d80 0.00 : 4279d8: 85 c0 test %eax,%eax 0.00 : 4279da: 74 8c je 427968 0.00 : 4279dc: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4279e0: be df bc 43 00 mov $0x43bcdf,%esi 0.00 : 4279e5: e8 96 d3 00 00 callq 434d80 0.00 : 4279ea: 85 c0 test %eax,%eax 0.00 : 4279ec: 0f 84 76 ff ff ff je 427968 0.00 : 4279f2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4279f6: be 51 bd 43 00 mov $0x43bd51,%esi 0.00 : 4279fb: e8 80 d3 00 00 callq 434d80 0.00 : 427a00: 85 c0 test %eax,%eax 0.00 : 427a02: 0f 84 60 ff ff ff je 427968 0.00 : 427a08: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427a0c: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 427a11: e8 6a d3 00 00 callq 434d80 0.00 : 427a16: 85 c0 test %eax,%eax 0.00 : 427a18: 0f 84 4a ff ff ff je 427968 0.00 : 427a1e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427a22: be bf bd 43 00 mov $0x43bdbf,%esi 0.00 : 427a27: e8 54 d3 00 00 callq 434d80 0.00 : 427a2c: 85 c0 test %eax,%eax 0.00 : 427a2e: 0f 84 34 ff ff ff je 427968 0.00 : 427a34: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427a38: be b4 be 43 00 mov $0x43beb4,%esi 0.00 : 427a3d: e8 3e d3 00 00 callq 434d80 0.00 : 427a42: 85 c0 test %eax,%eax 0.00 : 427a44: 0f 84 1e ff ff ff je 427968 0.00 : 427a4a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427a4e: be d6 be 43 00 mov $0x43bed6,%esi 0.00 : 427a53: e8 28 d3 00 00 callq 434d80 0.00 : 427a58: 85 c0 test %eax,%eax 0.00 : 427a5a: 0f 84 08 ff ff ff je 427968 0.00 : 427a60: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427a64: be e6 be 43 00 mov $0x43bee6,%esi 0.00 : 427a69: e8 12 d3 00 00 callq 434d80 0.00 : 427a6e: 85 c0 test %eax,%eax 0.00 : 427a70: 0f 84 f2 fe ff ff je 427968 0.00 : 427a76: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427a7a: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 427a7f: e8 fc d2 00 00 callq 434d80 0.00 : 427a84: 85 c0 test %eax,%eax 0.00 : 427a86: 0f 84 dc fe ff ff je 427968 0.00 : 427a8c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427a90: be e2 bf 43 00 mov $0x43bfe2,%esi 0.00 : 427a95: e8 e6 d2 00 00 callq 434d80 0.00 : 427a9a: 85 c0 test %eax,%eax 0.00 : 427a9c: 0f 84 c6 fe ff ff je 427968 0.00 : 427aa2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427aa6: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 427aab: e8 d0 d2 00 00 callq 434d80 0.00 : 427ab0: 85 c0 test %eax,%eax 0.00 : 427ab2: 0f 84 b0 fe ff ff je 427968 0.00 : 427ab8: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427abc: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427ac1: e8 ba d2 00 00 callq 434d80 0.00 : 427ac6: 85 c0 test %eax,%eax 0.00 : 427ac8: 75 16 jne 427ae0 0.00 : 427aca: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427ace: be fe bb 43 00 mov $0x43bbfe,%esi 0.00 : 427ad3: e8 a8 d2 00 00 callq 434d80 0.00 : 427ad8: 85 c0 test %eax,%eax 0.00 : 427ada: 0f 84 d6 16 00 00 je 4291b6 0.00 : 427ae0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427ae4: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427ae9: e8 92 d2 00 00 callq 434d80 0.00 : 427aee: 85 c0 test %eax,%eax 0.00 : 427af0: 75 16 jne 427b08 0.00 : 427af2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427af6: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 427afb: e8 80 d2 00 00 callq 434d80 0.00 : 427b00: 85 c0 test %eax,%eax 0.00 : 427b02: 0f 84 ca 16 00 00 je 4291d2 0.00 : 427b08: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 427b0c: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427b11: e8 6a d2 00 00 callq 434d80 0.00 : 427b16: 85 c0 test %eax,%eax 0.00 : 427b18: 75 16 jne 427b30 0.00 : 427b1a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427b1e: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 427b23: e8 58 d2 00 00 callq 434d80 0.00 : 427b28: 85 c0 test %eax,%eax 0.00 : 427b2a: 0f 84 92 15 00 00 je 4290c2 0.00 : 427b30: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 427b34: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427b39: e8 42 d2 00 00 callq 434d80 0.00 : 427b3e: 85 c0 test %eax,%eax 0.00 : 427b40: 75 16 jne 427b58 0.00 : 427b42: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427b46: be 14 10 45 00 mov $0x451014,%esi 0.00 : 427b4b: e8 30 d2 00 00 callq 434d80 0.00 : 427b50: 85 c0 test %eax,%eax 0.00 : 427b52: 0f 84 9b 15 00 00 je 4290f3 : {"CASCADE", "RESTRICT", NULL}; : : COMPLETE_WITH_LIST(list_DROPCR); : } : } : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 427b58: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427b5c: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427b61: e8 1a d2 00 00 callq 434d80 0.00 : 427b66: 85 c0 test %eax,%eax 0.00 : 427b68: 75 16 jne 427b80 0.00 : 427b6a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427b6e: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 427b73: e8 08 d2 00 00 callq 434d80 0.00 : 427b78: 85 c0 test %eax,%eax 0.00 : 427b7a: 0f 84 e6 15 00 00 je 429166 : : COMPLETE_WITH_LIST(drop_CREATE_FOREIGN); : } : : /* DROP MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 427b80: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427b84: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427b89: e8 f2 d1 00 00 callq 434d80 0.00 : 427b8e: 85 c0 test %eax,%eax 0.00 : 427b90: 75 16 jne 427ba8 0.00 : 427b92: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427b96: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 427b9b: e8 e0 d1 00 00 callq 434d80 0.00 : 427ba0: 85 c0 test %eax,%eax 0.00 : 427ba2: 0f 84 e6 15 00 00 je 42918e : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : { : COMPLETE_WITH_CONST("VIEW"); : } : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427ba8: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427bac: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427bb1: e8 ca d1 00 00 callq 434d80 0.00 : 427bb6: 85 c0 test %eax,%eax 0.00 : 427bb8: 75 16 jne 427bd0 0.00 : 427bba: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427bbe: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 427bc3: e8 b8 d1 00 00 callq 434d80 0.00 : 427bc8: 85 c0 test %eax,%eax 0.00 : 427bca: 0f 84 b0 14 00 00 je 429080 : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : } : : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427bd0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427bd4: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427bd9: e8 a2 d1 00 00 callq 434d80 0.00 : 427bde: 85 c0 test %eax,%eax 0.00 : 427be0: 75 3a jne 427c1c 0.00 : 427be2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427be6: be fe bb 43 00 mov $0x43bbfe,%esi 0.00 : 427beb: e8 90 d1 00 00 callq 434d80 0.00 : 427bf0: 85 c0 test %eax,%eax 0.00 : 427bf2: 74 12 je 427c06 0.00 : 427bf4: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427bf8: be 51 bd 43 00 mov $0x43bd51,%esi 0.00 : 427bfd: e8 7e d1 00 00 callq 434d80 0.00 : 427c02: 85 c0 test %eax,%eax 0.00 : 427c04: 75 16 jne 427c1c 0.00 : 427c06: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427c0a: be 83 87 44 00 mov $0x448783,%esi 0.00 : 427c0f: e8 6c d1 00 00 callq 434d80 0.00 : 427c14: 85 c0 test %eax,%eax 0.00 : 427c16: 0f 84 58 1c 00 00 je 429874 : (pg_strcasecmp(prev3_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev3_wd, "FUNCTION") == 0) && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); : /* DROP OWNED BY */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 427c1c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427c20: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427c25: e8 56 d1 00 00 callq 434d80 0.00 : 427c2a: 85 c0 test %eax,%eax 0.00 : 427c2c: 75 16 jne 427c44 0.00 : 427c2e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427c32: be 30 c6 43 00 mov $0x43c630,%esi 0.00 : 427c37: e8 44 d1 00 00 callq 434d80 0.00 : 427c3c: 85 c0 test %eax,%eax 0.00 : 427c3e: 0f 84 d1 1b 00 00 je 429815 : pg_strcasecmp(prev_wd, "OWNED") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427c44: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427c48: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427c4d: e8 2e d1 00 00 callq 434d80 0.00 : 427c52: 85 c0 test %eax,%eax 0.00 : 427c54: 75 16 jne 427c6c 0.00 : 427c56: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427c5a: be 30 c6 43 00 mov $0x43c630,%esi 0.00 : 427c5f: e8 1c d1 00 00 callq 434d80 0.00 : 427c64: 85 c0 test %eax,%eax 0.00 : 427c66: 0f 84 d1 1b 00 00 je 42983d : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427c6c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427c70: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427c75: e8 06 d1 00 00 callq 434d80 0.00 : 427c7a: 85 c0 test %eax,%eax 0.00 : 427c7c: 75 16 jne 427c94 0.00 : 427c7e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427c82: be 14 10 45 00 mov $0x451014,%esi 0.00 : 427c87: e8 f4 d0 00 00 callq 434d80 0.00 : 427c8c: 85 c0 test %eax,%eax 0.00 : 427c8e: 0f 84 c7 18 00 00 je 42955b : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH); : } : : /* DROP TRIGGER */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427c94: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427c98: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427c9d: e8 de d0 00 00 callq 434d80 0.00 : 427ca2: 85 c0 test %eax,%eax 0.00 : 427ca4: 75 16 jne 427cbc 0.00 : 427ca6: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427caa: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 427caf: e8 cc d0 00 00 callq 434d80 0.00 : 427cb4: 85 c0 test %eax,%eax 0.00 : 427cb6: 0f 84 47 1d 00 00 je 429a03 : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427cbc: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427cc0: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427cc5: e8 b6 d0 00 00 callq 434d80 0.00 : 427cca: 85 c0 test %eax,%eax 0.00 : 427ccc: 75 16 jne 427ce4 0.00 : 427cce: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427cd2: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 427cd7: e8 a4 d0 00 00 callq 434d80 0.00 : 427cdc: 85 c0 test %eax,%eax 0.00 : 427cde: 0f 84 dd 1c 00 00 je 4299c1 : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger); : } : else if (pg_strcasecmp(prev5_wd, "DROP") == 0 && 0.00 : 427ce4: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 427ce8: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427ced: e8 8e d0 00 00 callq 434d80 0.00 : 427cf2: 85 c0 test %eax,%eax 0.00 : 427cf4: 75 16 jne 427d0c 0.00 : 427cf6: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427cfa: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 427cff: e8 7c d0 00 00 callq 434d80 0.00 : 427d04: 85 c0 test %eax,%eax 0.00 : 427d06: 0f 84 77 1d 00 00 je 429a83 : : COMPLETE_WITH_LIST(list_DROPCR); : } : : /* DROP EVENT TRIGGER */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 427d0c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427d10: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427d15: e8 66 d0 00 00 callq 434d80 0.00 : 427d1a: 85 c0 test %eax,%eax 0.00 : 427d1c: 75 16 jne 427d34 0.00 : 427d1e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427d22: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 427d27: e8 54 d0 00 00 callq 434d80 0.00 : 427d2c: 85 c0 test %eax,%eax 0.00 : 427d2e: 0f 84 4d 01 00 00 je 427e81 : pg_strcasecmp(prev_wd, "EVENT") == 0) : { : COMPLETE_WITH_CONST("TRIGGER"); : } : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427d34: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427d38: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427d3d: e8 3e d0 00 00 callq 434d80 0.00 : 427d42: 85 c0 test %eax,%eax 0.00 : 427d44: 75 16 jne 427d5c 0.00 : 427d46: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427d4a: be 81 0f 45 00 mov $0x450f81,%esi 0.00 : 427d4f: e8 2c d0 00 00 callq 434d80 0.00 : 427d54: 85 c0 test %eax,%eax 0.00 : 427d56: 0f 84 80 02 00 00 je 427fdc : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); : } : : /* DROP POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427d5c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427d60: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427d65: e8 16 d0 00 00 callq 434d80 0.00 : 427d6a: 85 c0 test %eax,%eax 0.00 : 427d6c: 75 16 jne 427d84 0.00 : 427d6e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427d72: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 427d77: e8 04 d0 00 00 callq 434d80 0.00 : 427d7c: 85 c0 test %eax,%eax 0.00 : 427d7e: 0f 84 ee 01 00 00 je 427f72 : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* DROP POLICY ON
*/ : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427d84: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427d88: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427d8d: e8 ee cf 00 00 callq 434d80 0.00 : 427d92: 85 c0 test %eax,%eax 0.00 : 427d94: 75 16 jne 427dac 0.00 : 427d96: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427d9a: be 74 be 43 00 mov $0x43be74,%esi 0.00 : 427d9f: e8 dc cf 00 00 callq 434d80 0.00 : 427da4: 85 c0 test %eax,%eax 0.00 : 427da6: 0f 84 ee 01 00 00 je 427f9a : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* DROP RULE */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427dac: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427db0: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427db5: e8 c6 cf 00 00 callq 434d80 0.00 : 427dba: 85 c0 test %eax,%eax 0.00 : 427dbc: 75 16 jne 427dd4 0.00 : 427dbe: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427dc2: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 427dc7: e8 b4 cf 00 00 callq 434d80 0.00 : 427dcc: 85 c0 test %eax,%eax 0.00 : 427dce: 0f 84 d5 00 00 00 je 427ea9 : pg_strcasecmp(prev2_wd, "RULE") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427dd4: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427dd8: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427ddd: e8 9e cf 00 00 callq 434d80 0.00 : 427de2: 85 c0 test %eax,%eax 0.00 : 427de4: 75 16 jne 427dfc 0.00 : 427de6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 427dea: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 427def: e8 8c cf 00 00 callq 434d80 0.00 : 427df4: 85 c0 test %eax,%eax 0.00 : 427df6: 0f 84 d5 00 00 00 je 427ed1 : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); : } : else if (pg_strcasecmp(prev5_wd, "DROP") == 0 && 0.00 : 427dfc: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 427e00: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 427e05: e8 76 cf 00 00 callq 434d80 0.00 : 427e0a: 85 c0 test %eax,%eax 0.00 : 427e0c: 75 16 jne 427e24 0.00 : 427e0e: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 427e12: be 8e be 43 00 mov $0x43be8e,%esi 0.00 : 427e17: e8 64 cf 00 00 callq 434d80 0.00 : 427e1c: 85 c0 test %eax,%eax 0.00 : 427e1e: 0f 84 ef 00 00 00 je 427f13 : : COMPLETE_WITH_LIST(list_DROPCR); : } : : /* EXECUTE, but not EXECUTE embedded in other commands */ : else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && 0.00 : 427e24: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427e28: be 06 c5 43 00 mov $0x43c506,%esi 0.00 : 427e2d: e8 4e cf 00 00 callq 434d80 0.00 : 427e32: 85 c0 test %eax,%eax 0.00 : 427e34: 75 0d jne 427e43 0.00 : 427e36: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 427e3a: 80 38 00 cmpb $0x0,(%rax) 0.00 : 427e3d: 0f 84 0e 01 00 00 je 427f51 : /* EXPLAIN */ : : /* : * Complete EXPLAIN [ANALYZE] [VERBOSE] with list of EXPLAIN-able commands : */ : else if (pg_strcasecmp(prev_wd, "EXPLAIN") == 0) 0.00 : 427e43: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427e47: be 2b c5 43 00 mov $0x43c52b,%esi 0.00 : 427e4c: e8 2f cf 00 00 callq 434d80 0.00 : 427e51: 85 c0 test %eax,%eax 0.00 : 427e53: 0f 85 ba 01 00 00 jne 428013 : { : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", "ANALYZE", "VERBOSE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); 0.00 : 427e59: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427e5d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427e62: 48 c7 05 1b 31 24 00 movq $0x455f40,0x24311b(%rip) # 66af88 0.00 : 427e69: 40 5f 45 00 0.00 : 427e6d: c6 05 34 31 24 00 00 movb $0x0,0x243134(%rip) # 66afa8 0.00 : 427e74: e8 57 b9 fd ff callq 4037d0 0.00 : 427e79: 48 89 c3 mov %rax,%rbx 0.00 : 427e7c: e9 71 a1 ff ff jmpq 421ff2 : : /* DROP EVENT TRIGGER */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "EVENT") == 0) : { : COMPLETE_WITH_CONST("TRIGGER"); 0.00 : 427e81: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427e85: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 427e8a: 48 c7 05 eb 30 24 00 movq $0x43bfbe,0x2430eb(%rip) # 66af80 0.00 : 427e91: be bf 43 00 0.00 : 427e95: c6 05 0c 31 24 00 00 movb $0x0,0x24310c(%rip) # 66afa8 0.00 : 427e9c: e8 2f b9 fd ff callq 4037d0 0.00 : 427ea1: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_DROPCR); : } : : /* DROP EVENT TRIGGER */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 427ea4: e9 49 a1 ff ff jmpq 421ff2 : : /* DROP RULE */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "RULE") == 0) : { : COMPLETE_WITH_CONST("ON"); 0.00 : 427ea9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427ead: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 427eb2: 48 c7 05 c3 30 24 00 movq $0x4519c4,0x2430c3(%rip) # 66af80 0.00 : 427eb9: c4 19 45 00 0.00 : 427ebd: c6 05 e4 30 24 00 00 movb $0x0,0x2430e4(%rip) # 66afa8 0.00 : 427ec4: e8 07 b9 fd ff callq 4037d0 0.00 : 427ec9: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* DROP RULE */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427ecc: e9 21 a1 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "RULE") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427ed1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427ed5: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 427eda: e8 a1 ce 00 00 callq 434d80 0.00 : 427edf: 85 c0 test %eax,%eax 0.00 : 427ee1: 0f 85 15 ff ff ff jne 427dfc : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 427ee7: 48 8b 45 a8 mov -0x58(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); 0.00 : 427eeb: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427eef: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 427ef4: 48 c7 05 81 30 24 00 movq $0x452110,0x243081(%rip) # 66af80 0.00 : 427efb: 10 21 45 00 : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && : pg_strcasecmp(prev3_wd, "RULE") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 427eff: 48 89 05 8a 30 24 00 mov %rax,0x24308a(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); 0.00 : 427f06: e8 c5 b8 fd ff callq 4037d0 0.00 : 427f0b: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "RULE") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427f0e: e9 df a0 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); : } : else if (pg_strcasecmp(prev5_wd, "DROP") == 0 && 0.00 : 427f13: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 427f17: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 427f1c: e8 5f ce 00 00 callq 434d80 0.00 : 427f21: 85 c0 test %eax,%eax 0.00 : 427f23: 0f 85 fb fe ff ff jne 427e24 : pg_strcasecmp(prev2_wd, "ON") == 0) : { : static const char *const list_DROPCR[] = : {"CASCADE", "RESTRICT", NULL}; : : COMPLETE_WITH_LIST(list_DROPCR); 0.00 : 427f29: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427f2d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 427f32: 48 c7 05 4b 30 24 00 movq $0x455f80,0x24304b(%rip) # 66af88 0.00 : 427f39: 80 5f 45 00 0.00 : 427f3d: c6 05 64 30 24 00 00 movb $0x0,0x243064(%rip) # 66afa8 0.00 : 427f44: e8 87 b8 fd ff callq 4037d0 0.00 : 427f49: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule); : } : else if (pg_strcasecmp(prev5_wd, "DROP") == 0 && 0.00 : 427f4c: e9 a1 a0 ff ff jmpq 421ff2 : } : : /* EXECUTE, but not EXECUTE embedded in other commands */ : else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && : prev2_wd[0] == '\0') : COMPLETE_WITH_QUERY(Query_for_list_of_prepared_statements); 0.00 : 427f51: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427f55: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 427f5a: 48 c7 05 1b 30 24 00 movq $0x453528,0x24301b(%rip) # 66af80 0.00 : 427f61: 28 35 45 00 0.00 : 427f65: e8 66 b8 fd ff callq 4037d0 0.00 : 427f6a: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_DROPCR); : } : : /* EXECUTE, but not EXECUTE embedded in other commands */ : else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && 0.00 : 427f6d: e9 80 a0 ff ff jmpq 421ff2 : } : : /* DROP POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 427f72: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427f76: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 427f7b: 48 c7 05 fa 2f 24 00 movq $0x4519c4,0x242ffa(%rip) # 66af80 0.00 : 427f82: c4 19 45 00 0.00 : 427f86: c6 05 1b 30 24 00 00 movb $0x0,0x24301b(%rip) # 66afa8 0.00 : 427f8d: e8 3e b8 fd ff callq 4037d0 0.00 : 427f92: 48 89 c3 mov %rax,%rbx : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); : } : : /* DROP POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427f95: e9 58 a0 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* DROP POLICY ON
*/ : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427f9a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427f9e: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 427fa3: e8 d8 cd 00 00 callq 434d80 0.00 : 427fa8: 85 c0 test %eax,%eax 0.00 : 427faa: 0f 85 fc fd ff ff jne 427dac : pg_strcasecmp(prev3_wd, "POLICY") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 427fb0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427fb4: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 427fb9: 48 c7 05 dc 2f 24 00 movq $0x454f40,0x242fdc(%rip) # 66afa0 0.00 : 427fc0: 40 4f 45 00 0.00 : 427fc4: 48 c7 05 b1 2f 24 00 movq $0x0,0x242fb1(%rip) # 66af80 0.00 : 427fcb: 00 00 00 00 0.00 : 427fcf: e8 fc b7 fd ff callq 4037d0 0.00 : 427fd4: 48 89 c3 mov %rax,%rbx : /* DROP POLICY ON */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "POLICY") == 0) : COMPLETE_WITH_CONST("ON"); : /* DROP POLICY ON
*/ : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 427fd7: e9 16 a0 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "EVENT") == 0) : { : COMPLETE_WITH_CONST("TRIGGER"); : } : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 427fdc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 427fe0: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 427fe5: e8 96 cd 00 00 callq 434d80 0.00 : 427fea: 85 c0 test %eax,%eax 0.00 : 427fec: 0f 85 6a fd ff ff jne 427d5c : pg_strcasecmp(prev2_wd, "EVENT") == 0 && : pg_strcasecmp(prev_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); 0.00 : 427ff2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 427ff6: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 427ffb: 48 c7 05 7a 2f 24 00 movq $0x451e28,0x242f7a(%rip) # 66af80 0.00 : 428002: 28 1e 45 00 0.00 : 428006: e8 c5 b7 fd ff callq 4037d0 0.00 : 42800b: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "EVENT") == 0) : { : COMPLETE_WITH_CONST("TRIGGER"); : } : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 42800e: e9 df 9f ff ff jmpq 421ff2 : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", "ANALYZE", "VERBOSE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); : } : else if (pg_strcasecmp(prev2_wd, "EXPLAIN") == 0 && 0.00 : 428013: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428017: be 2b c5 43 00 mov $0x43c52b,%esi 0.00 : 42801c: e8 5f cd 00 00 callq 434d80 0.00 : 428021: 85 c0 test %eax,%eax 0.00 : 428023: 75 16 jne 42803b 0.00 : 428025: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428029: be 98 bb 43 00 mov $0x43bb98,%esi 0.00 : 42802e: e8 4d cd 00 00 callq 434d80 0.00 : 428033: 85 c0 test %eax,%eax 0.00 : 428035: 0f 84 9c 00 00 00 je 4280d7 : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", "VERBOSE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); : } : else if ((pg_strcasecmp(prev2_wd, "EXPLAIN") == 0 && 0.00 : 42803b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42803f: be 2b c5 43 00 mov $0x43c52b,%esi 0.00 : 428044: e8 37 cd 00 00 callq 434d80 0.00 : 428049: 85 c0 test %eax,%eax 0.00 : 42804b: 75 16 jne 428063 0.00 : 42804d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428051: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 428056: e8 25 cd 00 00 callq 434d80 0.00 : 42805b: 85 c0 test %eax,%eax 0.00 : 42805d: 0f 84 b2 00 00 00 je 428115 0.00 : 428063: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428067: be 2b c5 43 00 mov $0x43c52b,%esi 0.00 : 42806c: e8 0f cd 00 00 callq 434d80 0.00 : 428071: 85 c0 test %eax,%eax 0.00 : 428073: 75 12 jne 428087 0.00 : 428075: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428079: be 98 bb 43 00 mov $0x43bb98,%esi 0.00 : 42807e: e8 fd cc 00 00 callq 434d80 0.00 : 428083: 85 c0 test %eax,%eax 0.00 : 428085: 74 78 je 4280ff : COMPLETE_WITH_LIST(list_EXPLAIN); : } : : /* FETCH && MOVE */ : /* Complete FETCH with one of FORWARD, BACKWARD, RELATIVE */ : else if (pg_strcasecmp(prev_wd, "FETCH") == 0 || 0.00 : 428087: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42808b: be 33 c5 43 00 mov $0x43c533,%esi 0.00 : 428090: e8 eb cc 00 00 callq 434d80 0.00 : 428095: 85 c0 test %eax,%eax 0.00 : 428097: 74 16 je 4280af 0.00 : 428099: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42809d: be d5 c5 43 00 mov $0x43c5d5,%esi 0.00 : 4280a2: e8 d9 cc 00 00 callq 434d80 0.00 : 4280a7: 85 c0 test %eax,%eax 0.00 : 4280a9: 0f 85 8e 00 00 00 jne 42813d : pg_strcasecmp(prev_wd, "MOVE") == 0) : { : static const char *const list_FETCH1[] = : {"ABSOLUTE", "BACKWARD", "FORWARD", "RELATIVE", NULL}; : : COMPLETE_WITH_LIST(list_FETCH1); 0.00 : 4280af: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4280b3: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4280b8: 48 c7 05 c5 2e 24 00 movq $0x455e80,0x242ec5(%rip) # 66af88 0.00 : 4280bf: 80 5e 45 00 0.00 : 4280c3: c6 05 de 2e 24 00 00 movb $0x0,0x242ede(%rip) # 66afa8 0.00 : 4280ca: e8 01 b7 fd ff callq 4037d0 0.00 : 4280cf: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST(list_EXPLAIN); : } : : /* FETCH && MOVE */ : /* Complete FETCH with one of FORWARD, BACKWARD, RELATIVE */ : else if (pg_strcasecmp(prev_wd, "FETCH") == 0 || 0.00 : 4280d2: e9 1b 9f ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ANALYZE") == 0) : { : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", "VERBOSE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); 0.00 : 4280d7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4280db: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4280e0: 48 c7 05 9d 2e 24 00 movq $0x455f00,0x242e9d(%rip) # 66af88 0.00 : 4280e7: 00 5f 45 00 0.00 : 4280eb: c6 05 b6 2e 24 00 00 movb $0x0,0x242eb6(%rip) # 66afa8 0.00 : 4280f2: e8 d9 b6 fd ff callq 4037d0 0.00 : 4280f7: 48 89 c3 mov %rax,%rbx : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", "ANALYZE", "VERBOSE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); : } : else if (pg_strcasecmp(prev2_wd, "EXPLAIN") == 0 && 0.00 : 4280fa: e9 f3 9e ff ff jmpq 421ff2 : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", "VERBOSE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); : } : else if ((pg_strcasecmp(prev2_wd, "EXPLAIN") == 0 && 0.00 : 4280ff: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428103: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 428108: e8 73 cc 00 00 callq 434d80 0.00 : 42810d: 85 c0 test %eax,%eax 0.00 : 42810f: 0f 85 72 ff ff ff jne 428087 : pg_strcasecmp(prev_wd, "VERBOSE") == 0)) : { : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); 0.00 : 428115: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428119: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42811e: 48 c7 05 5f 2e 24 00 movq $0x455ec0,0x242e5f(%rip) # 66af88 0.00 : 428125: c0 5e 45 00 0.00 : 428129: c6 05 78 2e 24 00 00 movb $0x0,0x242e78(%rip) # 66afa8 0.00 : 428130: e8 9b b6 fd ff callq 4037d0 0.00 : 428135: 48 89 c3 mov %rax,%rbx : static const char *const list_EXPLAIN[] = : {"SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", "VERBOSE", NULL}; : : COMPLETE_WITH_LIST(list_EXPLAIN); : } : else if ((pg_strcasecmp(prev2_wd, "EXPLAIN") == 0 && 0.00 : 428138: e9 b5 9e ff ff jmpq 421ff2 : {"ABSOLUTE", "BACKWARD", "FORWARD", "RELATIVE", NULL}; : : COMPLETE_WITH_LIST(list_FETCH1); : } : /* Complete FETCH with one of ALL, NEXT, PRIOR */ : else if (pg_strcasecmp(prev2_wd, "FETCH") == 0 || 0.00 : 42813d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428141: be 33 c5 43 00 mov $0x43c533,%esi 0.00 : 428146: e8 35 cc 00 00 callq 434d80 0.00 : 42814b: 85 c0 test %eax,%eax 0.00 : 42814d: 74 12 je 428161 0.00 : 42814f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428153: be d5 c5 43 00 mov $0x43c5d5,%esi 0.00 : 428158: e8 23 cc 00 00 callq 434d80 0.00 : 42815d: 85 c0 test %eax,%eax 0.00 : 42815f: 75 28 jne 428189 : pg_strcasecmp(prev2_wd, "MOVE") == 0) : { : static const char *const list_FETCH2[] = : {"ALL", "NEXT", "PRIOR", NULL}; : : COMPLETE_WITH_LIST(list_FETCH2); 0.00 : 428161: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428165: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42816a: 48 c7 05 13 2e 24 00 movq $0x455e60,0x242e13(%rip) # 66af88 0.00 : 428171: 60 5e 45 00 0.00 : 428175: c6 05 2c 2e 24 00 00 movb $0x0,0x242e2c(%rip) # 66afa8 0.00 : 42817c: e8 4f b6 fd ff callq 4037d0 0.00 : 428181: 48 89 c3 mov %rax,%rbx : {"ABSOLUTE", "BACKWARD", "FORWARD", "RELATIVE", NULL}; : : COMPLETE_WITH_LIST(list_FETCH1); : } : /* Complete FETCH with one of ALL, NEXT, PRIOR */ : else if (pg_strcasecmp(prev2_wd, "FETCH") == 0 || 0.00 : 428184: e9 69 9e ff ff jmpq 421ff2 : /* : * Complete FETCH with "FROM" or "IN". These are equivalent, : * but we may as well tab-complete both: perhaps some users prefer one : * variant or the other. : */ : else if (pg_strcasecmp(prev3_wd, "FETCH") == 0 || 0.00 : 428189: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42818d: be 33 c5 43 00 mov $0x43c533,%esi 0.00 : 428192: e8 e9 cb 00 00 callq 434d80 0.00 : 428197: 85 c0 test %eax,%eax 0.00 : 428199: 74 12 je 4281ad 0.00 : 42819b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42819f: be d5 c5 43 00 mov $0x43c5d5,%esi 0.00 : 4281a4: e8 d7 cb 00 00 callq 434d80 0.00 : 4281a9: 85 c0 test %eax,%eax 0.00 : 4281ab: 75 28 jne 4281d5 : pg_strcasecmp(prev3_wd, "MOVE") == 0) : { : static const char *const list_FROMIN[] = : {"FROM", "IN", NULL}; : : COMPLETE_WITH_LIST(list_FROMIN); 0.00 : 4281ad: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4281b1: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4281b6: 48 c7 05 c7 2d 24 00 movq $0x455e30,0x242dc7(%rip) # 66af88 0.00 : 4281bd: 30 5e 45 00 0.00 : 4281c1: c6 05 e0 2d 24 00 00 movb $0x0,0x242de0(%rip) # 66afa8 0.00 : 4281c8: e8 03 b6 fd ff callq 4037d0 0.00 : 4281cd: 48 89 c3 mov %rax,%rbx : /* : * Complete FETCH with "FROM" or "IN". These are equivalent, : * but we may as well tab-complete both: perhaps some users prefer one : * variant or the other. : */ : else if (pg_strcasecmp(prev3_wd, "FETCH") == 0 || 0.00 : 4281d0: e9 1d 9e ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(list_FROMIN); : } : : /* FOREIGN DATA WRAPPER */ : /* applies in ALTER/DROP FDW and in CREATE SERVER */ : else if (pg_strcasecmp(prev4_wd, "CREATE") != 0 && 0.00 : 4281d5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4281d9: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 4281de: e8 9d cb 00 00 callq 434d80 0.00 : 4281e3: 85 c0 test %eax,%eax 0.00 : 4281e5: 74 16 je 4281fd 0.00 : 4281e7: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4281eb: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 4281f0: e8 8b cb 00 00 callq 434d80 0.00 : 4281f5: 85 c0 test %eax,%eax 0.00 : 4281f7: 0f 84 e5 00 00 00 je 4282e2 : pg_strcasecmp(prev2_wd, "DATA") == 0 && : pg_strcasecmp(prev_wd, "WRAPPER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_fdws); : : /* FOREIGN TABLE */ : else if (pg_strcasecmp(prev3_wd, "CREATE") != 0 && 0.00 : 4281fd: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428201: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 428206: e8 75 cb 00 00 callq 434d80 0.00 : 42820b: 85 c0 test %eax,%eax 0.00 : 42820d: 74 16 je 428225 0.00 : 42820f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428213: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 428218: e8 63 cb 00 00 callq 434d80 0.00 : 42821d: 85 c0 test %eax,%eax 0.00 : 42821f: 0f 84 0a 01 00 00 je 42832f : pg_strcasecmp(prev_wd, "TABLE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables, NULL); : : /* GRANT && REVOKE */ : /* Complete GRANT/REVOKE with a list of roles and privileges */ : else if (pg_strcasecmp(prev_wd, "GRANT") == 0 || 0.00 : 428225: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428229: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 42822e: e8 4d cb 00 00 callq 434d80 0.00 : 428233: 85 c0 test %eax,%eax 0.00 : 428235: 74 12 je 428249 0.00 : 428237: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42823b: be 80 c6 43 00 mov $0x43c680,%esi 0.00 : 428240: e8 3b cb 00 00 callq 434d80 0.00 : 428245: 85 c0 test %eax,%eax 0.00 : 428247: 75 21 jne 42826a : pg_strcasecmp(prev_wd, "REVOKE") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_roles 0.00 : 428249: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42824d: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428252: 48 c7 05 23 2d 24 00 movq $0x453648,0x242d23(%rip) # 66af80 0.00 : 428259: 48 36 45 00 0.00 : 42825d: e8 6e b5 fd ff callq 4037d0 0.00 : 428262: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "TABLE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables, NULL); : : /* GRANT && REVOKE */ : /* Complete GRANT/REVOKE with a list of roles and privileges */ : else if (pg_strcasecmp(prev_wd, "GRANT") == 0 || 0.00 : 428265: e9 88 9d ff ff jmpq 421ff2 : : /* : * Complete GRANT/REVOKE with "ON", GRANT/REVOKE with : * TO/FROM : */ : else if (pg_strcasecmp(prev2_wd, "GRANT") == 0 || 0.00 : 42826a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42826e: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 428273: e8 08 cb 00 00 callq 434d80 0.00 : 428278: 85 c0 test %eax,%eax 0.00 : 42827a: 74 16 je 428292 0.00 : 42827c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428280: be 80 c6 43 00 mov $0x43c680,%esi 0.00 : 428285: e8 f6 ca 00 00 callq 434d80 0.00 : 42828a: 85 c0 test %eax,%eax 0.00 : 42828c: 0f 85 df 00 00 00 jne 428371 : pg_strcasecmp(prev2_wd, "REVOKE") == 0) : { : if (pg_strcasecmp(prev_wd, "SELECT") == 0 0.00 : 428292: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428296: be 03 a0 45 00 mov $0x45a003,%esi 0.00 : 42829b: e8 e0 ca 00 00 callq 434d80 0.00 : 4282a0: 85 c0 test %eax,%eax 0.00 : 4282a2: 74 16 je 4282ba 0.00 : 4282a4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4282a8: be b3 69 43 00 mov $0x4369b3,%esi 0.00 : 4282ad: e8 ce ca 00 00 callq 434d80 0.00 : 4282b2: 85 c0 test %eax,%eax 0.00 : 4282b4: 0f 85 78 07 00 00 jne 428a32 : || pg_strcasecmp(prev_wd, "TEMPORARY") == 0 : || pg_strcasecmp(prev_wd, "TEMP") == 0 : || pg_strcasecmp(prev_wd, "EXECUTE") == 0 : || pg_strcasecmp(prev_wd, "USAGE") == 0 : || pg_strcasecmp(prev_wd, "ALL") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 4282ba: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4282be: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4282c3: 48 c7 05 b2 2c 24 00 movq $0x4519c4,0x242cb2(%rip) # 66af80 0.00 : 4282ca: c4 19 45 00 0.00 : 4282ce: c6 05 d3 2c 24 00 00 movb $0x0,0x242cd3(%rip) # 66afa8 0.00 : 4282d5: e8 f6 b4 fd ff callq 4037d0 0.00 : 4282da: 48 89 c3 mov %rax,%rbx : * TO/FROM : */ : else if (pg_strcasecmp(prev2_wd, "GRANT") == 0 || : pg_strcasecmp(prev2_wd, "REVOKE") == 0) : { : if (pg_strcasecmp(prev_wd, "SELECT") == 0 0.00 : 4282dd: e9 10 9d ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(list_FROMIN); : } : : /* FOREIGN DATA WRAPPER */ : /* applies in ALTER/DROP FDW and in CREATE SERVER */ : else if (pg_strcasecmp(prev4_wd, "CREATE") != 0 && 0.00 : 4282e2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4282e6: be 2b 11 45 00 mov $0x45112b,%esi 0.00 : 4282eb: e8 90 ca 00 00 callq 434d80 0.00 : 4282f0: 85 c0 test %eax,%eax 0.00 : 4282f2: 0f 85 05 ff ff ff jne 4281fd 0.00 : 4282f8: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4282fc: be 12 bd 43 00 mov $0x43bd12,%esi 0.00 : 428301: e8 7a ca 00 00 callq 434d80 0.00 : 428306: 85 c0 test %eax,%eax 0.00 : 428308: 0f 85 ef fe ff ff jne 4281fd : pg_strcasecmp(prev3_wd, "FOREIGN") == 0 && : pg_strcasecmp(prev2_wd, "DATA") == 0 && : pg_strcasecmp(prev_wd, "WRAPPER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_fdws); 0.00 : 42830e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428312: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428317: 48 c7 05 5e 2c 24 00 movq $0x4535b8,0x242c5e(%rip) # 66af80 0.00 : 42831e: b8 35 45 00 0.00 : 428322: e8 a9 b4 fd ff callq 4037d0 0.00 : 428327: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST(list_FROMIN); : } : : /* FOREIGN DATA WRAPPER */ : /* applies in ALTER/DROP FDW and in CREATE SERVER */ : else if (pg_strcasecmp(prev4_wd, "CREATE") != 0 && 0.00 : 42832a: e9 c3 9c ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "DATA") == 0 && : pg_strcasecmp(prev_wd, "WRAPPER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_fdws); : : /* FOREIGN TABLE */ : else if (pg_strcasecmp(prev3_wd, "CREATE") != 0 && 0.00 : 42832f: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428333: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 428338: e8 43 ca 00 00 callq 434d80 0.00 : 42833d: 85 c0 test %eax,%eax 0.00 : 42833f: 0f 85 e0 fe ff ff jne 428225 : pg_strcasecmp(prev2_wd, "FOREIGN") == 0 && : pg_strcasecmp(prev_wd, "TABLE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables, NULL); 0.00 : 428345: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428349: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42834e: 48 c7 05 47 2c 24 00 movq $0x4550c0,0x242c47(%rip) # 66afa0 0.00 : 428355: c0 50 45 00 0.00 : 428359: 48 c7 05 1c 2c 24 00 movq $0x0,0x242c1c(%rip) # 66af80 0.00 : 428360: 00 00 00 00 0.00 : 428364: e8 67 b4 fd ff callq 4037d0 0.00 : 428369: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "DATA") == 0 && : pg_strcasecmp(prev_wd, "WRAPPER") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_fdws); : : /* FOREIGN TABLE */ : else if (pg_strcasecmp(prev3_wd, "CREATE") != 0 && 0.00 : 42836c: e9 81 9c ff ff jmpq 421ff2 : * : * Note: GRANT/REVOKE can get quite complex; tab-completion as implemented : * here will only work if the privilege list contains exactly one : * privilege : */ : else if ((pg_strcasecmp(prev3_wd, "GRANT") == 0 || 0.00 : 428371: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428375: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 42837a: e8 01 ca 00 00 callq 434d80 0.00 : 42837f: 85 c0 test %eax,%eax 0.00 : 428381: 74 12 je 428395 0.00 : 428383: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428387: be 80 c6 43 00 mov $0x43c680,%esi 0.00 : 42838c: e8 ef c9 00 00 callq 434d80 0.00 : 428391: 85 c0 test %eax,%eax 0.00 : 428393: 75 16 jne 4283ab 0.00 : 428395: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428399: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42839e: e8 dd c9 00 00 callq 434d80 0.00 : 4283a3: 85 c0 test %eax,%eax 0.00 : 4283a5: 0f 84 1d 06 00 00 je 4289c8 : " UNION SELECT 'LANGUAGE'" : " UNION SELECT 'LARGE OBJECT'" : " UNION SELECT 'SCHEMA'" : " UNION SELECT 'TABLESPACE'" : " UNION SELECT 'TYPE'"); : else if ((pg_strcasecmp(prev4_wd, "GRANT") == 0 || 0.00 : 4283ab: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4283af: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 4283b4: e8 c7 c9 00 00 callq 434d80 0.00 : 4283b9: 85 c0 test %eax,%eax 0.00 : 4283bb: 74 12 je 4283cf 0.00 : 4283bd: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4283c1: be 80 c6 43 00 mov $0x43c680,%esi 0.00 : 4283c6: e8 b5 c9 00 00 callq 434d80 0.00 : 4283cb: 85 c0 test %eax,%eax 0.00 : 4283cd: 75 16 jne 4283e5 0.00 : 4283cf: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4283d3: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4283d8: e8 a3 c9 00 00 callq 434d80 0.00 : 4283dd: 85 c0 test %eax,%eax 0.00 : 4283df: 0f 84 0f 06 00 00 je 4289f4 : : COMPLETE_WITH_LIST(list_privilege_foreign); : } : : /* Complete "GRANT/REVOKE * ON * " with "TO/FROM" */ : else if ((pg_strcasecmp(prev4_wd, "GRANT") == 0 || 0.00 : 4283e5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4283e9: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 4283ee: e8 8d c9 00 00 callq 434d80 0.00 : 4283f3: 85 c0 test %eax,%eax 0.00 : 4283f5: 74 12 je 428409 0.00 : 4283f7: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4283fb: be 80 c6 43 00 mov $0x43c680,%esi 0.00 : 428400: e8 7b c9 00 00 callq 434d80 0.00 : 428405: 85 c0 test %eax,%eax 0.00 : 428407: 75 16 jne 42841f 0.00 : 428409: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42840d: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 428412: e8 69 c9 00 00 callq 434d80 0.00 : 428417: 85 c0 test %eax,%eax 0.00 : 428419: 0f 84 59 07 00 00 je 428b78 : else : COMPLETE_WITH_CONST("FROM"); : } : : /* Complete "GRANT/REVOKE * ON * TO/FROM" with username, GROUP, or PUBLIC */ : else if (pg_strcasecmp(prev5_wd, "GRANT") == 0 && 0.00 : 42841f: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 428423: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 428428: e8 53 c9 00 00 callq 434d80 0.00 : 42842d: 85 c0 test %eax,%eax 0.00 : 42842f: 75 16 jne 428447 0.00 : 428431: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428435: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42843a: e8 41 c9 00 00 callq 434d80 0.00 : 42843f: 85 c0 test %eax,%eax 0.00 : 428441: 0f 84 9f 07 00 00 je 428be6 : if (pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : else : COMPLETE_WITH_CONST("TO"); : } : else if (pg_strcasecmp(prev5_wd, "REVOKE") == 0 && 0.00 : 428447: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42844b: be 80 c6 43 00 mov $0x43c680,%esi 0.00 : 428450: e8 2b c9 00 00 callq 434d80 0.00 : 428455: 85 c0 test %eax,%eax 0.00 : 428457: 75 16 jne 42846f 0.00 : 428459: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42845d: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 428462: e8 19 c9 00 00 callq 434d80 0.00 : 428467: 85 c0 test %eax,%eax 0.00 : 428469: 0f 84 40 07 00 00 je 428baf : else : COMPLETE_WITH_CONST("FROM"); : } : : /* Complete "GRANT/REVOKE * TO/FROM" with username, GROUP, or PUBLIC */ : else if (pg_strcasecmp(prev3_wd, "GRANT") == 0 && 0.00 : 42846f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428473: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 428478: e8 03 c9 00 00 callq 434d80 0.00 : 42847d: 85 c0 test %eax,%eax 0.00 : 42847f: 75 16 jne 428497 0.00 : 428481: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428485: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 42848a: e8 f1 c8 00 00 callq 434d80 0.00 : 42848f: 85 c0 test %eax,%eax 0.00 : 428491: 0f 84 86 07 00 00 je 428c1d : pg_strcasecmp(prev_wd, "TO") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : } : else if (pg_strcasecmp(prev3_wd, "REVOKE") == 0 && 0.00 : 428497: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42849b: be 80 c6 43 00 mov $0x43c680,%esi 0.00 : 4284a0: e8 db c8 00 00 callq 434d80 0.00 : 4284a5: 85 c0 test %eax,%eax 0.00 : 4284a7: 75 12 jne 4284bb 0.00 : 4284a9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4284ad: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 4284b2: e8 c9 c8 00 00 callq 434d80 0.00 : 4284b7: 85 c0 test %eax,%eax 0.00 : 4284b9: 74 5e je 428519 : { : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : } : : /* GROUP BY */ : else if (pg_strcasecmp(prev3_wd, "FROM") == 0 && 0.00 : 4284bb: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4284bf: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 4284c4: e8 b7 c8 00 00 callq 434d80 0.00 : 4284c9: 85 c0 test %eax,%eax 0.00 : 4284cb: 75 12 jne 4284df 0.00 : 4284cd: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4284d1: be 77 bd 43 00 mov $0x43bd77,%esi 0.00 : 4284d6: e8 a5 c8 00 00 callq 434d80 0.00 : 4284db: 85 c0 test %eax,%eax 0.00 : 4284dd: 74 5b je 42853a : pg_strcasecmp(prev_wd, "GROUP") == 0) : COMPLETE_WITH_CONST("BY"); : : /* IMPORT FOREIGN SCHEMA */ : else if (pg_strcasecmp(prev_wd, "IMPORT") == 0) 0.00 : 4284df: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4284e3: be cd 10 45 00 mov $0x4510cd,%esi 0.00 : 4284e8: e8 93 c8 00 00 callq 434d80 0.00 : 4284ed: 85 c0 test %eax,%eax 0.00 : 4284ef: 75 71 jne 428562 : COMPLETE_WITH_CONST("FOREIGN SCHEMA"); 0.00 : 4284f1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4284f5: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4284fa: 48 c7 05 7b 2a 24 00 movq $0x43c55f,0x242a7b(%rip) # 66af80 0.00 : 428501: 5f c5 43 00 0.00 : 428505: c6 05 9c 2a 24 00 00 movb $0x0,0x242a9c(%rip) # 66afa8 0.00 : 42850c: e8 bf b2 fd ff callq 4037d0 0.00 : 428511: 48 89 c3 mov %rax,%rbx 0.00 : 428514: e9 d9 9a ff ff jmpq 421ff2 : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : } : else if (pg_strcasecmp(prev3_wd, "REVOKE") == 0 && : pg_strcasecmp(prev_wd, "FROM") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); 0.00 : 428519: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42851d: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428522: 48 c7 05 53 2a 24 00 movq $0x452070,0x242a53(%rip) # 66af80 0.00 : 428529: 70 20 45 00 0.00 : 42852d: e8 9e b2 fd ff callq 4037d0 0.00 : 428532: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev3_wd, "GRANT") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : } : else if (pg_strcasecmp(prev3_wd, "REVOKE") == 0 && 0.00 : 428535: e9 b8 9a ff ff jmpq 421ff2 : } : : /* GROUP BY */ : else if (pg_strcasecmp(prev3_wd, "FROM") == 0 && : pg_strcasecmp(prev_wd, "GROUP") == 0) : COMPLETE_WITH_CONST("BY"); 0.00 : 42853a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42853e: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428543: 48 c7 05 32 2a 24 00 movq $0x451a29,0x242a32(%rip) # 66af80 0.00 : 42854a: 29 1a 45 00 0.00 : 42854e: c6 05 53 2a 24 00 00 movb $0x0,0x242a53(%rip) # 66afa8 0.00 : 428555: e8 76 b2 fd ff callq 4037d0 0.00 : 42855a: 48 89 c3 mov %rax,%rbx : { : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : } : : /* GROUP BY */ : else if (pg_strcasecmp(prev3_wd, "FROM") == 0 && 0.00 : 42855d: e9 90 9a ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("BY"); : : /* IMPORT FOREIGN SCHEMA */ : else if (pg_strcasecmp(prev_wd, "IMPORT") == 0) : COMPLETE_WITH_CONST("FOREIGN SCHEMA"); : else if (pg_strcasecmp(prev2_wd, "IMPORT") == 0 && 0.00 : 428562: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428566: be cd 10 45 00 mov $0x4510cd,%esi 0.00 : 42856b: e8 10 c8 00 00 callq 434d80 0.00 : 428570: 85 c0 test %eax,%eax 0.00 : 428572: 75 12 jne 428586 0.00 : 428574: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428578: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 42857d: e8 fe c7 00 00 callq 434d80 0.00 : 428582: 85 c0 test %eax,%eax 0.00 : 428584: 74 3a je 4285c0 : pg_strcasecmp(prev_wd, "FOREIGN") == 0) : COMPLETE_WITH_CONST("SCHEMA"); : : /* INSERT */ : /* Complete INSERT with "INTO" */ : else if (pg_strcasecmp(prev_wd, "INSERT") == 0) 0.00 : 428586: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42858a: be b3 69 43 00 mov $0x4369b3,%esi 0.00 : 42858f: e8 ec c7 00 00 callq 434d80 0.00 : 428594: 85 c0 test %eax,%eax 0.00 : 428596: 75 50 jne 4285e8 : COMPLETE_WITH_CONST("INTO"); 0.00 : 428598: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42859c: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4285a1: 48 c7 05 d4 29 24 00 movq $0x43c6f7,0x2429d4(%rip) # 66af80 0.00 : 4285a8: f7 c6 43 00 0.00 : 4285ac: c6 05 f5 29 24 00 00 movb $0x0,0x2429f5(%rip) # 66afa8 0.00 : 4285b3: e8 18 b2 fd ff callq 4037d0 0.00 : 4285b8: 48 89 c3 mov %rax,%rbx 0.00 : 4285bb: e9 32 9a ff ff jmpq 421ff2 : /* IMPORT FOREIGN SCHEMA */ : else if (pg_strcasecmp(prev_wd, "IMPORT") == 0) : COMPLETE_WITH_CONST("FOREIGN SCHEMA"); : else if (pg_strcasecmp(prev2_wd, "IMPORT") == 0 && : pg_strcasecmp(prev_wd, "FOREIGN") == 0) : COMPLETE_WITH_CONST("SCHEMA"); 0.00 : 4285c0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4285c4: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4285c9: 48 c7 05 ac 29 24 00 movq $0x43beb4,0x2429ac(%rip) # 66af80 0.00 : 4285d0: b4 be 43 00 0.00 : 4285d4: c6 05 cd 29 24 00 00 movb $0x0,0x2429cd(%rip) # 66afa8 0.00 : 4285db: e8 f0 b1 fd ff callq 4037d0 0.00 : 4285e0: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_CONST("BY"); : : /* IMPORT FOREIGN SCHEMA */ : else if (pg_strcasecmp(prev_wd, "IMPORT") == 0) : COMPLETE_WITH_CONST("FOREIGN SCHEMA"); : else if (pg_strcasecmp(prev2_wd, "IMPORT") == 0 && 0.00 : 4285e3: e9 0a 9a ff ff jmpq 421ff2 : /* INSERT */ : /* Complete INSERT with "INTO" */ : else if (pg_strcasecmp(prev_wd, "INSERT") == 0) : COMPLETE_WITH_CONST("INTO"); : /* Complete INSERT INTO with table names */ : else if (pg_strcasecmp(prev2_wd, "INSERT") == 0 && 0.00 : 4285e8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4285ec: be b3 69 43 00 mov $0x4369b3,%esi 0.00 : 4285f1: e8 8a c7 00 00 callq 434d80 0.00 : 4285f6: 85 c0 test %eax,%eax 0.00 : 4285f8: 75 16 jne 428610 0.00 : 4285fa: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4285fe: be f7 c6 43 00 mov $0x43c6f7,%esi 0.00 : 428603: e8 78 c7 00 00 callq 434d80 0.00 : 428608: 85 c0 test %eax,%eax 0.00 : 42860a: 0f 84 26 07 00 00 je 428d36 : pg_strcasecmp(prev_wd, "INTO") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); : /* Complete "INSERT INTO
(" with attribute names */ : else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && 0.00 : 428610: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 428614: be b3 69 43 00 mov $0x4369b3,%esi 0.00 : 428619: e8 62 c7 00 00 callq 434d80 0.00 : 42861e: 85 c0 test %eax,%eax 0.00 : 428620: 75 16 jne 428638 0.00 : 428622: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428626: be f7 c6 43 00 mov $0x43c6f7,%esi 0.00 : 42862b: e8 50 c7 00 00 callq 434d80 0.00 : 428630: 85 c0 test %eax,%eax 0.00 : 428632: 0f 84 f0 08 00 00 je 428f28 : : /* : * Complete INSERT INTO
with "(" or "VALUES" or "SELECT" or : * "TABLE" or "DEFAULT VALUES" : */ : else if (pg_strcasecmp(prev3_wd, "INSERT") == 0 && 0.00 : 428638: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42863c: be b3 69 43 00 mov $0x4369b3,%esi 0.00 : 428641: e8 3a c7 00 00 callq 434d80 0.00 : 428646: 85 c0 test %eax,%eax 0.00 : 428648: 75 16 jne 428660 0.00 : 42864a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42864e: be f7 c6 43 00 mov $0x43c6f7,%esi 0.00 : 428653: e8 28 c7 00 00 callq 434d80 0.00 : 428658: 85 c0 test %eax,%eax 0.00 : 42865a: 0f 84 61 08 00 00 je 428ec1 : : /* : * Complete INSERT INTO
(attribs) with "VALUES" or "SELECT" or : * "TABLE" : */ : else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && 0.00 : 428660: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 428664: be b3 69 43 00 mov $0x4369b3,%esi 0.00 : 428669: e8 12 c7 00 00 callq 434d80 0.00 : 42866e: 85 c0 test %eax,%eax 0.00 : 428670: 75 16 jne 428688 0.00 : 428672: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428676: be f7 c6 43 00 mov $0x43c6f7,%esi 0.00 : 42867b: e8 00 c7 00 00 callq 434d80 0.00 : 428680: 85 c0 test %eax,%eax 0.00 : 428682: 0f 84 61 08 00 00 je 428ee9 0.00 : 428688: 48 8b 5d a0 mov -0x60(%rbp),%rbx : : COMPLETE_WITH_LIST(list_INSERT); : } : : /* Insert an open parenthesis after "VALUES" */ : else if (pg_strcasecmp(prev_wd, "VALUES") == 0 && 0.00 : 42868c: be 0a 16 45 00 mov $0x45160a,%esi 0.00 : 428691: 48 89 df mov %rbx,%rdi 0.00 : 428694: e8 e7 c6 00 00 callq 434d80 0.00 : 428699: 85 c0 test %eax,%eax 0.00 : 42869b: 75 12 jne 4286af 0.00 : 42869d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4286a1: be be 0f 45 00 mov $0x450fbe,%esi 0.00 : 4286a6: e8 d5 c6 00 00 callq 434d80 0.00 : 4286ab: 85 c0 test %eax,%eax 0.00 : 4286ad: 75 3e jne 4286ed : pg_strcasecmp(prev2_wd, "DEFAULT") != 0) : COMPLETE_WITH_CONST("("); : : /* LOCK */ : /* Complete LOCK [TABLE] with a list of tables */ : else if (pg_strcasecmp(prev_wd, "LOCK") == 0) 0.00 : 4286af: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4286b3: be c3 c5 43 00 mov $0x43c5c3,%esi 0.00 : 4286b8: e8 c3 c6 00 00 callq 434d80 0.00 : 4286bd: 85 c0 test %eax,%eax 0.00 : 4286bf: 75 54 jne 428715 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, 0.00 : 4286c1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4286c5: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4286ca: 48 c7 05 cb 28 24 00 movq $0x454f40,0x2428cb(%rip) # 66afa0 0.00 : 4286d1: 40 4f 45 00 0.00 : 4286d5: 48 c7 05 a0 28 24 00 movq $0x4510d4,0x2428a0(%rip) # 66af80 0.00 : 4286dc: d4 10 45 00 0.00 : 4286e0: e8 eb b0 fd ff callq 4037d0 0.00 : 4286e5: 48 89 c3 mov %rax,%rbx 0.00 : 4286e8: e9 05 99 ff ff jmpq 421ff2 : } : : /* Insert an open parenthesis after "VALUES" */ : else if (pg_strcasecmp(prev_wd, "VALUES") == 0 && : pg_strcasecmp(prev2_wd, "DEFAULT") != 0) : COMPLETE_WITH_CONST("("); 0.00 : 4286ed: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4286f1: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4286f6: 48 c7 05 7f 28 24 00 movq $0x448783,0x24287f(%rip) # 66af80 0.00 : 4286fd: 83 87 44 00 0.00 : 428701: c6 05 a0 28 24 00 00 movb $0x0,0x2428a0(%rip) # 66afa8 0.00 : 428708: e8 c3 b0 fd ff callq 4037d0 0.00 : 42870d: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_INSERT); : } : : /* Insert an open parenthesis after "VALUES" */ : else if (pg_strcasecmp(prev_wd, "VALUES") == 0 && 0.00 : 428710: e9 dd 98 ff ff jmpq 421ff2 : /* LOCK */ : /* Complete LOCK [TABLE] with a list of tables */ : else if (pg_strcasecmp(prev_wd, "LOCK") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, : " UNION SELECT 'TABLE'"); : else if (pg_strcasecmp(prev_wd, "TABLE") == 0 && 0.00 : 428715: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428719: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 42871e: e8 5d c6 00 00 callq 434d80 0.00 : 428723: 85 c0 test %eax,%eax 0.00 : 428725: 75 16 jne 42873d 0.00 : 428727: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42872b: be c3 c5 43 00 mov $0x43c5c3,%esi 0.00 : 428730: e8 4b c6 00 00 callq 434d80 0.00 : 428735: 85 c0 test %eax,%eax 0.00 : 428737: 0f 84 e1 00 00 00 je 42881e : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : : /* For the following, handle the case of a single table only for now */ : : /* Complete LOCK [TABLE]
with "IN" */ : else if ((pg_strcasecmp(prev2_wd, "LOCK") == 0 && 0.00 : 42873d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428741: be c3 c5 43 00 mov $0x43c5c3,%esi 0.00 : 428746: e8 35 c6 00 00 callq 434d80 0.00 : 42874b: 85 c0 test %eax,%eax 0.00 : 42874d: 75 12 jne 428761 0.00 : 42874f: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428753: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 428758: e8 23 c6 00 00 callq 434d80 0.00 : 42875d: 85 c0 test %eax,%eax 0.00 : 42875f: 75 24 jne 428785 0.00 : 428761: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428765: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 42876a: e8 11 c6 00 00 callq 434d80 0.00 : 42876f: 85 c0 test %eax,%eax 0.00 : 428771: 75 3a jne 4287ad 0.00 : 428773: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428777: be c3 c5 43 00 mov $0x43c5c3,%esi 0.00 : 42877c: e8 ff c5 00 00 callq 434d80 0.00 : 428781: 85 c0 test %eax,%eax 0.00 : 428783: 75 28 jne 4287ad : pg_strcasecmp(prev_wd, "TABLE") != 0) || : (pg_strcasecmp(prev2_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "LOCK") == 0)) : COMPLETE_WITH_CONST("IN"); 0.00 : 428785: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428789: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42878e: 48 c7 05 e7 27 24 00 movq $0x43c530,0x2427e7(%rip) # 66af80 0.00 : 428795: 30 c5 43 00 0.00 : 428799: c6 05 08 28 24 00 00 movb $0x0,0x242808(%rip) # 66afa8 0.00 : 4287a0: e8 2b b0 fd ff callq 4037d0 0.00 : 4287a5: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); : : /* For the following, handle the case of a single table only for now */ : : /* Complete LOCK [TABLE]
with "IN" */ : else if ((pg_strcasecmp(prev2_wd, "LOCK") == 0 && 0.00 : 4287a8: e9 45 98 ff ff jmpq 421ff2 : (pg_strcasecmp(prev2_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "LOCK") == 0)) : COMPLETE_WITH_CONST("IN"); : : /* Complete LOCK [TABLE]
IN with a lock mode */ : else if (pg_strcasecmp(prev_wd, "IN") == 0 && 0.00 : 4287ad: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4287b1: be 30 c5 43 00 mov $0x43c530,%esi 0.00 : 4287b6: e8 c5 c5 00 00 callq 434d80 0.00 : 4287bb: 85 c0 test %eax,%eax 0.00 : 4287bd: 75 2c jne 4287eb 0.00 : 4287bf: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4287c3: be c3 c5 43 00 mov $0x43c5c3,%esi 0.00 : 4287c8: e8 b3 c5 00 00 callq 434d80 0.00 : 4287cd: 85 c0 test %eax,%eax 0.00 : 4287cf: 0f 84 c5 00 00 00 je 42889a 0.00 : 4287d5: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4287d9: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 4287de: e8 9d c5 00 00 callq 434d80 0.00 : 4287e3: 85 c0 test %eax,%eax 0.00 : 4287e5: 0f 84 99 00 00 00 je 428884 : : COMPLETE_WITH_LIST(lock_modes); : } : : /* NOTIFY */ : else if (pg_strcasecmp(prev_wd, "NOTIFY") == 0) 0.00 : 4287eb: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4287ef: be ec c5 43 00 mov $0x43c5ec,%esi 0.00 : 4287f4: e8 87 c5 00 00 callq 434d80 0.00 : 4287f9: 85 c0 test %eax,%eax 0.00 : 4287fb: 75 4d jne 42884a : COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(channel) FROM pg_catalog.pg_listening_channels() AS channel WHERE substring(pg_catalog.quote_ident(channel),1,%d)='%s'"); 0.00 : 4287fd: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428801: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428806: 48 c7 05 6f 27 24 00 movq $0x453a98,0x24276f(%rip) # 66af80 0.00 : 42880d: 98 3a 45 00 0.00 : 428811: e8 ba af fd ff callq 4037d0 0.00 : 428816: 48 89 c3 mov %rax,%rbx 0.00 : 428819: e9 d4 97 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "LOCK") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, : " UNION SELECT 'TABLE'"); : else if (pg_strcasecmp(prev_wd, "TABLE") == 0 && : pg_strcasecmp(prev2_wd, "LOCK") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, ""); 0.00 : 42881e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428822: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 428827: 48 c7 05 6e 27 24 00 movq $0x454f40,0x24276e(%rip) # 66afa0 0.00 : 42882e: 40 4f 45 00 0.00 : 428832: 48 c7 05 43 27 24 00 movq $0x436917,0x242743(%rip) # 66af80 0.00 : 428839: 17 69 43 00 0.00 : 42883d: e8 8e af fd ff callq 4037d0 0.00 : 428842: 48 89 c3 mov %rax,%rbx : /* LOCK */ : /* Complete LOCK [TABLE] with a list of tables */ : else if (pg_strcasecmp(prev_wd, "LOCK") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, : " UNION SELECT 'TABLE'"); : else if (pg_strcasecmp(prev_wd, "TABLE") == 0 && 0.00 : 428845: e9 a8 97 ff ff jmpq 421ff2 : /* NOTIFY */ : else if (pg_strcasecmp(prev_wd, "NOTIFY") == 0) : COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(channel) FROM pg_catalog.pg_listening_channels() AS channel WHERE substring(pg_catalog.quote_ident(channel),1,%d)='%s'"); : : /* OPTIONS */ : else if (pg_strcasecmp(prev_wd, "OPTIONS") == 0) 0.00 : 42884a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42884e: be ea 10 45 00 mov $0x4510ea,%esi 0.00 : 428853: e8 28 c5 00 00 callq 434d80 0.00 : 428858: 85 c0 test %eax,%eax 0.00 : 42885a: 75 66 jne 4288c2 : COMPLETE_WITH_CONST("("); 0.00 : 42885c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428860: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428865: 48 c7 05 10 27 24 00 movq $0x448783,0x242710(%rip) # 66af80 0.00 : 42886c: 83 87 44 00 0.00 : 428870: c6 05 31 27 24 00 00 movb $0x0,0x242731(%rip) # 66afa8 0.00 : 428877: e8 54 af fd ff callq 4037d0 0.00 : 42887c: 48 89 c3 mov %rax,%rbx 0.00 : 42887f: e9 6e 97 ff ff jmpq 421ff2 : (pg_strcasecmp(prev2_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "LOCK") == 0)) : COMPLETE_WITH_CONST("IN"); : : /* Complete LOCK [TABLE]
IN with a lock mode */ : else if (pg_strcasecmp(prev_wd, "IN") == 0 && 0.00 : 428884: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 428888: be c3 c5 43 00 mov $0x43c5c3,%esi 0.00 : 42888d: e8 ee c4 00 00 callq 434d80 0.00 : 428892: 85 c0 test %eax,%eax 0.00 : 428894: 0f 85 51 ff ff ff jne 4287eb : "ROW SHARE MODE", "ROW EXCLUSIVE MODE", : "SHARE UPDATE EXCLUSIVE MODE", "SHARE MODE", : "SHARE ROW EXCLUSIVE MODE", : "EXCLUSIVE MODE", "ACCESS EXCLUSIVE MODE", NULL}; : : COMPLETE_WITH_LIST(lock_modes); 0.00 : 42889a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42889e: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 4288a3: 48 c7 05 da 26 24 00 movq $0x455d60,0x2426da(%rip) # 66af88 0.00 : 4288aa: 60 5d 45 00 0.00 : 4288ae: c6 05 f3 26 24 00 00 movb $0x0,0x2426f3(%rip) # 66afa8 0.00 : 4288b5: e8 16 af fd ff callq 4037d0 0.00 : 4288ba: 48 89 c3 mov %rax,%rbx : (pg_strcasecmp(prev2_wd, "TABLE") == 0 && : pg_strcasecmp(prev3_wd, "LOCK") == 0)) : COMPLETE_WITH_CONST("IN"); : : /* Complete LOCK [TABLE]
IN with a lock mode */ : else if (pg_strcasecmp(prev_wd, "IN") == 0 && 0.00 : 4288bd: e9 30 97 ff ff jmpq 421ff2 : /* OPTIONS */ : else if (pg_strcasecmp(prev_wd, "OPTIONS") == 0) : COMPLETE_WITH_CONST("("); : : /* OWNER TO - complete with available roles */ : else if (pg_strcasecmp(prev2_wd, "OWNER") == 0 && 0.00 : 4288c2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4288c6: be 7f 10 45 00 mov $0x45107f,%esi 0.00 : 4288cb: e8 b0 c4 00 00 callq 434d80 0.00 : 4288d0: 85 c0 test %eax,%eax 0.00 : 4288d2: 75 16 jne 4288ea 0.00 : 4288d4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4288d8: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 4288dd: e8 9e c4 00 00 callq 434d80 0.00 : 4288e2: 85 c0 test %eax,%eax 0.00 : 4288e4: 0f 84 78 04 00 00 je 428d62 : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* ORDER BY */ : else if (pg_strcasecmp(prev3_wd, "FROM") == 0 && 0.00 : 4288ea: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4288ee: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 4288f3: e8 88 c4 00 00 callq 434d80 0.00 : 4288f8: 85 c0 test %eax,%eax 0.00 : 4288fa: 75 16 jne 428912 0.00 : 4288fc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428900: be f2 10 45 00 mov $0x4510f2,%esi 0.00 : 428905: e8 76 c4 00 00 callq 434d80 0.00 : 42890a: 85 c0 test %eax,%eax 0.00 : 42890c: 0f 84 71 04 00 00 je 428d83 : pg_strcasecmp(prev_wd, "ORDER") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev4_wd, "FROM") == 0 && 0.00 : 428912: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 428916: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 42891b: e8 60 c4 00 00 callq 434d80 0.00 : 428920: 85 c0 test %eax,%eax 0.00 : 428922: 75 16 jne 42893a 0.00 : 428924: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428928: be f2 10 45 00 mov $0x4510f2,%esi 0.00 : 42892d: e8 4e c4 00 00 callq 434d80 0.00 : 428932: 85 c0 test %eax,%eax 0.00 : 428934: 0f 84 71 04 00 00 je 428dab : pg_strcasecmp(prev2_wd, "ORDER") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); : : /* PREPARE xx AS */ : else if (pg_strcasecmp(prev_wd, "AS") == 0 && 0.00 : 42893a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42893e: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 428943: e8 38 c4 00 00 callq 434d80 0.00 : 428948: 85 c0 test %eax,%eax 0.00 : 42894a: 75 16 jne 428962 0.00 : 42894c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428950: be 0b c6 43 00 mov $0x43c60b,%esi 0.00 : 428955: e8 26 c4 00 00 callq 434d80 0.00 : 42895a: 85 c0 test %eax,%eax 0.00 : 42895c: 0f 84 1f 05 00 00 je 428e81 : * PREPARE TRANSACTION is missing on purpose. It's intended for transaction : * managers, not for manual use in interactive sessions. : */ : : /* REASSIGN OWNED BY xxx TO yyy */ : else if (pg_strcasecmp(prev_wd, "REASSIGN") == 0) 0.00 : 428962: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428966: be f8 10 45 00 mov $0x4510f8,%esi 0.00 : 42896b: e8 10 c4 00 00 callq 434d80 0.00 : 428970: 85 c0 test %eax,%eax 0.00 : 428972: 0f 85 9d 08 00 00 jne 429215 : COMPLETE_WITH_CONST("OWNED"); 0.00 : 428978: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42897c: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428981: 48 c7 05 f4 25 24 00 movq $0x43c630,0x2425f4(%rip) # 66af80 0.00 : 428988: 30 c6 43 00 0.00 : 42898c: c6 05 15 26 24 00 00 movb $0x0,0x242615(%rip) # 66afa8 0.00 : 428993: e8 38 ae fd ff callq 4037d0 0.00 : 428998: 48 89 c3 mov %rax,%rbx 0.00 : 42899b: e9 52 96 ff ff jmpq 421ff2 : : /* DROP (when not the previous word) */ : /* DROP AGGREGATE */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "AGGREGATE") == 0) : COMPLETE_WITH_CONST("("); 0.00 : 4289a0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4289a4: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4289a9: 48 c7 05 cc 25 24 00 movq $0x448783,0x2425cc(%rip) # 66af80 0.00 : 4289b0: 83 87 44 00 0.00 : 4289b4: c6 05 ed 25 24 00 00 movb $0x0,0x2425ed(%rip) # 66afa8 0.00 : 4289bb: e8 10 ae fd ff callq 4037d0 0.00 : 4289c0: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST(list_DO); : } : : /* DROP (when not the previous word) */ : /* DROP AGGREGATE */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 4289c3: e9 2a 96 ff ff jmpq 421ff2 : * privilege : */ : else if ((pg_strcasecmp(prev3_wd, "GRANT") == 0 || : pg_strcasecmp(prev3_wd, "REVOKE") == 0) && : pg_strcasecmp(prev_wd, "ON") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, 0.00 : 4289c8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4289cc: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4289d1: 48 c7 05 c4 25 24 00 movq $0x455100,0x2425c4(%rip) # 66afa0 0.00 : 4289d8: 00 51 45 00 0.00 : 4289dc: 48 c7 05 99 25 24 00 movq $0x4537f0,0x242599(%rip) # 66af80 0.00 : 4289e3: f0 37 45 00 0.00 : 4289e7: e8 e4 ad fd ff callq 4037d0 0.00 : 4289ec: 48 89 c3 mov %rax,%rbx : * : * Note: GRANT/REVOKE can get quite complex; tab-completion as implemented : * here will only work if the privilege list contains exactly one : * privilege : */ : else if ((pg_strcasecmp(prev3_wd, "GRANT") == 0 || 0.00 : 4289ef: e9 fe 95 ff ff jmpq 421ff2 : " UNION SELECT 'LANGUAGE'" : " UNION SELECT 'LARGE OBJECT'" : " UNION SELECT 'SCHEMA'" : " UNION SELECT 'TABLESPACE'" : " UNION SELECT 'TYPE'"); : else if ((pg_strcasecmp(prev4_wd, "GRANT") == 0 || 0.00 : 4289f4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4289f8: be 8e 0f 45 00 mov $0x450f8e,%esi 0.00 : 4289fd: e8 7e c3 00 00 callq 434d80 0.00 : 428a02: 85 c0 test %eax,%eax 0.00 : 428a04: 0f 85 db f9 ff ff jne 4283e5 : pg_strcasecmp(prev_wd, "FOREIGN") == 0) : { : static const char *const list_privilege_foreign[] = : {"DATA WRAPPER", "SERVER", NULL}; : : COMPLETE_WITH_LIST(list_privilege_foreign); 0.00 : 428a0a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428a0e: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 428a13: 48 c7 05 6a 25 24 00 movq $0x455e10,0x24256a(%rip) # 66af88 0.00 : 428a1a: 10 5e 45 00 0.00 : 428a1e: c6 05 83 25 24 00 00 movb $0x0,0x242583(%rip) # 66afa8 0.00 : 428a25: e8 a6 ad fd ff callq 4037d0 0.00 : 428a2a: 48 89 c3 mov %rax,%rbx : " UNION SELECT 'LANGUAGE'" : " UNION SELECT 'LARGE OBJECT'" : " UNION SELECT 'SCHEMA'" : " UNION SELECT 'TABLESPACE'" : " UNION SELECT 'TYPE'"); : else if ((pg_strcasecmp(prev4_wd, "GRANT") == 0 || 0.00 : 428a2d: e9 c0 95 ff ff jmpq 421ff2 : * TO/FROM : */ : else if (pg_strcasecmp(prev2_wd, "GRANT") == 0 || : pg_strcasecmp(prev2_wd, "REVOKE") == 0) : { : if (pg_strcasecmp(prev_wd, "SELECT") == 0 0.00 : 428a32: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428a36: be ba 69 43 00 mov $0x4369ba,%esi 0.00 : 428a3b: e8 40 c3 00 00 callq 434d80 0.00 : 428a40: 85 c0 test %eax,%eax 0.00 : 428a42: 0f 84 72 f8 ff ff je 4282ba 0.00 : 428a48: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428a4c: be ba 7c 45 00 mov $0x457cba,%esi 0.00 : 428a51: e8 2a c3 00 00 callq 434d80 0.00 : 428a56: 85 c0 test %eax,%eax 0.00 : 428a58: 0f 84 5c f8 ff ff je 4282ba 0.00 : 428a5e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428a62: be 72 c7 43 00 mov $0x43c772,%esi 0.00 : 428a67: e8 14 c3 00 00 callq 434d80 0.00 : 428a6c: 85 c0 test %eax,%eax 0.00 : 428a6e: 0f 84 46 f8 ff ff je 4282ba 0.00 : 428a74: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428a78: be b4 10 45 00 mov $0x4510b4,%esi 0.00 : 428a7d: e8 fe c2 00 00 callq 434d80 0.00 : 428a82: 85 c0 test %eax,%eax 0.00 : 428a84: 0f 84 30 f8 ff ff je 4282ba 0.00 : 428a8a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428a8e: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 428a93: e8 e8 c2 00 00 callq 434d80 0.00 : 428a98: 85 c0 test %eax,%eax 0.00 : 428a9a: 0f 84 1a f8 ff ff je 4282ba 0.00 : 428aa0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428aa4: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 428aa9: e8 d2 c2 00 00 callq 434d80 0.00 : 428aae: 85 c0 test %eax,%eax 0.00 : 428ab0: 0f 84 04 f8 ff ff je 4282ba 0.00 : 428ab6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428aba: be bf 10 45 00 mov $0x4510bf,%esi 0.00 : 428abf: e8 bc c2 00 00 callq 434d80 0.00 : 428ac4: 85 c0 test %eax,%eax 0.00 : 428ac6: 0f 84 ee f7 ff ff je 4282ba 0.00 : 428acc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428ad0: be 6c 10 45 00 mov $0x45106c,%esi 0.00 : 428ad5: e8 a6 c2 00 00 callq 434d80 0.00 : 428ada: 85 c0 test %eax,%eax 0.00 : 428adc: 0f 84 d8 f7 ff ff je 4282ba 0.00 : 428ae2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428ae6: be 67 10 45 00 mov $0x451067,%esi 0.00 : 428aeb: e8 90 c2 00 00 callq 434d80 0.00 : 428af0: 85 c0 test %eax,%eax 0.00 : 428af2: 0f 84 c2 f7 ff ff je 4282ba 0.00 : 428af8: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428afc: be 06 c5 43 00 mov $0x43c506,%esi 0.00 : 428b01: e8 7a c2 00 00 callq 434d80 0.00 : 428b06: 85 c0 test %eax,%eax 0.00 : 428b08: 0f 84 ac f7 ff ff je 4282ba 0.00 : 428b0e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428b12: be c7 10 45 00 mov $0x4510c7,%esi 0.00 : 428b17: e8 64 c2 00 00 callq 434d80 0.00 : 428b1c: 85 c0 test %eax,%eax 0.00 : 428b1e: 0f 84 96 f7 ff ff je 4282ba 0.00 : 428b24: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428b28: be 90 7c 45 00 mov $0x457c90,%esi 0.00 : 428b2d: e8 4e c2 00 00 callq 434d80 0.00 : 428b32: 85 c0 test %eax,%eax 0.00 : 428b34: 0f 84 80 f7 ff ff je 4282ba : || pg_strcasecmp(prev_wd, "USAGE") == 0 : || pg_strcasecmp(prev_wd, "ALL") == 0) : COMPLETE_WITH_CONST("ON"); : else : { : if (pg_strcasecmp(prev2_wd, "GRANT") == 0) 0.00 : 428b3a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428b3e: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 428b43: e8 38 c2 00 00 callq 434d80 0.00 : 428b48: 85 c0 test %eax,%eax 0.00 : 428b4a: 0f 85 ee 00 00 00 jne 428c3e : COMPLETE_WITH_CONST("TO"); 0.00 : 428b50: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428b54: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428b59: 48 c7 05 1c 24 24 00 movq $0x450fe6,0x24241c(%rip) # 66af80 0.00 : 428b60: e6 0f 45 00 0.00 : 428b64: c6 05 3d 24 24 00 00 movb $0x0,0x24243d(%rip) # 66afa8 0.00 : 428b6b: e8 60 ac fd ff callq 4037d0 0.00 : 428b70: 48 89 c3 mov %rax,%rbx 0.00 : 428b73: e9 7a 94 ff ff jmpq 421ff2 : /* Complete "GRANT/REVOKE * ON * " with "TO/FROM" */ : else if ((pg_strcasecmp(prev4_wd, "GRANT") == 0 || : pg_strcasecmp(prev4_wd, "REVOKE") == 0) && : pg_strcasecmp(prev2_wd, "ON") == 0) : { : if (pg_strcasecmp(prev_wd, "DATABASE") == 0) 0.00 : 428b78: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428b7c: be 67 bc 43 00 mov $0x43bc67,%esi 0.00 : 428b81: e8 fa c1 00 00 callq 434d80 0.00 : 428b86: 85 c0 test %eax,%eax 0.00 : 428b88: 0f 85 00 01 00 00 jne 428c8e : COMPLETE_WITH_QUERY(Query_for_list_of_databases); 0.00 : 428b8e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428b92: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428b97: 48 c7 05 de 23 24 00 movq $0x4538f8,0x2423de(%rip) # 66af80 0.00 : 428b9e: f8 38 45 00 0.00 : 428ba2: e8 29 ac fd ff callq 4037d0 0.00 : 428ba7: 48 89 c3 mov %rax,%rbx 0.00 : 428baa: e9 43 94 ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("TO"); : } : else if (pg_strcasecmp(prev5_wd, "REVOKE") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0) : { : if (pg_strcasecmp(prev_wd, "FROM") == 0) 0.00 : 428baf: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428bb3: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 428bb8: e8 c3 c1 00 00 callq 434d80 0.00 : 428bbd: 85 c0 test %eax,%eax 0.00 : 428bbf: 0f 85 a1 00 00 00 jne 428c66 : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); 0.00 : 428bc5: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428bc9: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428bce: 48 c7 05 a7 23 24 00 movq $0x452070,0x2423a7(%rip) # 66af80 0.00 : 428bd5: 70 20 45 00 0.00 : 428bd9: e8 f2 ab fd ff callq 4037d0 0.00 : 428bde: 48 89 c3 mov %rax,%rbx 0.00 : 428be1: e9 0c 94 ff ff jmpq 421ff2 : : /* Complete "GRANT/REVOKE * ON * TO/FROM" with username, GROUP, or PUBLIC */ : else if (pg_strcasecmp(prev5_wd, "GRANT") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0) : { : if (pg_strcasecmp(prev_wd, "TO") == 0) 0.00 : 428be6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428bea: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 428bef: e8 8c c1 00 00 callq 434d80 0.00 : 428bf4: 85 c0 test %eax,%eax 0.00 : 428bf6: 0f 85 d0 00 00 00 jne 428ccc : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); 0.00 : 428bfc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428c00: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428c05: 48 c7 05 70 23 24 00 movq $0x452070,0x242370(%rip) # 66af80 0.00 : 428c0c: 70 20 45 00 0.00 : 428c10: e8 bb ab fd ff callq 4037d0 0.00 : 428c15: 48 89 c3 mov %rax,%rbx 0.00 : 428c18: e9 d5 93 ff ff jmpq 421ff2 : : /* Complete "GRANT/REVOKE * TO/FROM" with username, GROUP, or PUBLIC */ : else if (pg_strcasecmp(prev3_wd, "GRANT") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : { : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); 0.00 : 428c1d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428c21: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428c26: 48 c7 05 4f 23 24 00 movq $0x452070,0x24234f(%rip) # 66af80 0.00 : 428c2d: 70 20 45 00 0.00 : 428c31: e8 9a ab fd ff callq 4037d0 0.00 : 428c36: 48 89 c3 mov %rax,%rbx : else : COMPLETE_WITH_CONST("FROM"); : } : : /* Complete "GRANT/REVOKE * TO/FROM" with username, GROUP, or PUBLIC */ : else if (pg_strcasecmp(prev3_wd, "GRANT") == 0 && 0.00 : 428c39: e9 b4 93 ff ff jmpq 421ff2 : else : { : if (pg_strcasecmp(prev2_wd, "GRANT") == 0) : COMPLETE_WITH_CONST("TO"); : else : COMPLETE_WITH_CONST("FROM"); 0.00 : 428c3e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428c42: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428c47: 48 c7 05 2e 23 24 00 movq $0x451b17,0x24232e(%rip) # 66af80 0.00 : 428c4e: 17 1b 45 00 0.00 : 428c52: c6 05 4f 23 24 00 00 movb $0x0,0x24234f(%rip) # 66afa8 0.00 : 428c59: e8 72 ab fd ff callq 4037d0 0.00 : 428c5e: 48 89 c3 mov %rax,%rbx 0.00 : 428c61: e9 8c 93 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "ON") == 0) : { : if (pg_strcasecmp(prev_wd, "FROM") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : else : COMPLETE_WITH_CONST("FROM"); 0.00 : 428c66: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428c6a: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428c6f: 48 c7 05 06 23 24 00 movq $0x451b17,0x242306(%rip) # 66af80 0.00 : 428c76: 17 1b 45 00 0.00 : 428c7a: c6 05 27 23 24 00 00 movb $0x0,0x242327(%rip) # 66afa8 0.00 : 428c81: e8 4a ab fd ff callq 4037d0 0.00 : 428c86: 48 89 c3 mov %rax,%rbx 0.00 : 428c89: e9 64 93 ff ff jmpq 421ff2 : pg_strcasecmp(prev4_wd, "REVOKE") == 0) && : pg_strcasecmp(prev2_wd, "ON") == 0) : { : if (pg_strcasecmp(prev_wd, "DATABASE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_databases); : else if (pg_strcasecmp(prev_wd, "DOMAIN") == 0) 0.00 : 428c8e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428c92: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 428c97: e8 e4 c0 00 00 callq 434d80 0.00 : 428c9c: 85 c0 test %eax,%eax 0.00 : 428c9e: 75 54 jne 428cf4 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL); 0.00 : 428ca0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428ca4: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 428ca9: 48 c7 05 ec 22 24 00 movq $0x455140,0x2422ec(%rip) # 66afa0 0.00 : 428cb0: 40 51 45 00 0.00 : 428cb4: 48 c7 05 c1 22 24 00 movq $0x0,0x2422c1(%rip) # 66af80 0.00 : 428cbb: 00 00 00 00 0.00 : 428cbf: e8 0c ab fd ff callq 4037d0 0.00 : 428cc4: 48 89 c3 mov %rax,%rbx 0.00 : 428cc7: e9 26 93 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "ON") == 0) : { : if (pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); : else : COMPLETE_WITH_CONST("TO"); 0.00 : 428ccc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428cd0: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428cd5: 48 c7 05 a0 22 24 00 movq $0x450fe6,0x2422a0(%rip) # 66af80 0.00 : 428cdc: e6 0f 45 00 0.00 : 428ce0: c6 05 c1 22 24 00 00 movb $0x0,0x2422c1(%rip) # 66afa8 0.00 : 428ce7: e8 e4 aa fd ff callq 4037d0 0.00 : 428cec: 48 89 c3 mov %rax,%rbx 0.00 : 428cef: e9 fe 92 ff ff jmpq 421ff2 : { : if (pg_strcasecmp(prev_wd, "DATABASE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_databases); : else if (pg_strcasecmp(prev_wd, "DOMAIN") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL); : else if (pg_strcasecmp(prev_wd, "FUNCTION") == 0) 0.00 : 428cf4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428cf8: be 51 bd 43 00 mov $0x43bd51,%esi 0.00 : 428cfd: e8 7e c0 00 00 callq 434d80 0.00 : 428d02: 85 c0 test %eax,%eax 0.00 : 428d04: 0f 85 f4 02 00 00 jne 428ffe : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); 0.00 : 428d0a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428d0e: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 428d13: 48 c7 05 82 22 24 00 movq $0x455180,0x242282(%rip) # 66afa0 0.00 : 428d1a: 80 51 45 00 0.00 : 428d1e: 48 c7 05 57 22 24 00 movq $0x0,0x242257(%rip) # 66af80 0.00 : 428d25: 00 00 00 00 0.00 : 428d29: e8 a2 aa fd ff callq 4037d0 0.00 : 428d2e: 48 89 c3 mov %rax,%rbx 0.00 : 428d31: e9 bc 92 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "INSERT") == 0) : COMPLETE_WITH_CONST("INTO"); : /* Complete INSERT INTO with table names */ : else if (pg_strcasecmp(prev2_wd, "INSERT") == 0 && : pg_strcasecmp(prev_wd, "INTO") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); 0.00 : 428d36: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428d3a: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 428d3f: 48 c7 05 56 22 24 00 movq $0x455080,0x242256(%rip) # 66afa0 0.00 : 428d46: 80 50 45 00 0.00 : 428d4a: 48 c7 05 2b 22 24 00 movq $0x0,0x24222b(%rip) # 66af80 0.00 : 428d51: 00 00 00 00 0.00 : 428d55: e8 76 aa fd ff callq 4037d0 0.00 : 428d5a: 48 89 c3 mov %rax,%rbx : /* INSERT */ : /* Complete INSERT with "INTO" */ : else if (pg_strcasecmp(prev_wd, "INSERT") == 0) : COMPLETE_WITH_CONST("INTO"); : /* Complete INSERT INTO with table names */ : else if (pg_strcasecmp(prev2_wd, "INSERT") == 0 && 0.00 : 428d5d: e9 90 92 ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("("); : : /* OWNER TO - complete with available roles */ : else if (pg_strcasecmp(prev2_wd, "OWNER") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 428d62: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428d66: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428d6b: 48 c7 05 0a 22 24 00 movq $0x451b48,0x24220a(%rip) # 66af80 0.00 : 428d72: 48 1b 45 00 0.00 : 428d76: e8 55 aa fd ff callq 4037d0 0.00 : 428d7b: 48 89 c3 mov %rax,%rbx : /* OPTIONS */ : else if (pg_strcasecmp(prev_wd, "OPTIONS") == 0) : COMPLETE_WITH_CONST("("); : : /* OWNER TO - complete with available roles */ : else if (pg_strcasecmp(prev2_wd, "OWNER") == 0 && 0.00 : 428d7e: e9 6f 92 ff ff jmpq 421ff2 : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* ORDER BY */ : else if (pg_strcasecmp(prev3_wd, "FROM") == 0 && : pg_strcasecmp(prev_wd, "ORDER") == 0) : COMPLETE_WITH_CONST("BY"); 0.00 : 428d83: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428d87: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 428d8c: 48 c7 05 e9 21 24 00 movq $0x451a29,0x2421e9(%rip) # 66af80 0.00 : 428d93: 29 1a 45 00 0.00 : 428d97: c6 05 0a 22 24 00 00 movb $0x0,0x24220a(%rip) # 66afa8 0.00 : 428d9e: e8 2d aa fd ff callq 4037d0 0.00 : 428da3: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev2_wd, "OWNER") == 0 && : pg_strcasecmp(prev_wd, "TO") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* ORDER BY */ : else if (pg_strcasecmp(prev3_wd, "FROM") == 0 && 0.00 : 428da6: e9 47 92 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ORDER") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev4_wd, "FROM") == 0 && 0.00 : 428dab: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428daf: be 29 1a 45 00 mov $0x451a29,%esi 0.00 : 428db4: e8 c7 bf 00 00 callq 434d80 0.00 : 428db9: 85 c0 test %eax,%eax 0.00 : 428dbb: 0f 85 79 fb ff ff jne 42893a : pg_strcasecmp(prev2_wd, "ORDER") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 428dc1: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 428dc5: 8b 05 dd 22 24 00 mov 0x2422dd(%rip),%eax # 66b0a8 0.00 : 428dcb: 45 31 c9 xor %r9d,%r9d 0.00 : 428dce: 45 31 c0 xor %r8d,%r8d 0.00 : 428dd1: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 428dd6: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 428ddb: be 33 64 44 00 mov $0x446433,%esi 0.00 : 428de0: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 428de7: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 428deb: e8 50 40 fe ff callq 40ce40 0.00 : 428df0: 48 89 c3 mov %rax,%rbx 0.00 : 428df3: 8b 05 af 22 24 00 mov 0x2422af(%rip),%eax # 66b0a8 0.00 : 428df9: 45 31 c9 xor %r9d,%r9d 0.00 : 428dfc: 45 31 c0 xor %r8d,%r8d 0.00 : 428dff: 31 ff xor %edi,%edi 0.00 : 428e01: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 428e06: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 428e0b: be 33 64 44 00 mov $0x446433,%esi 0.00 : 428e10: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 428e17: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 428e1b: e8 20 40 fe ff callq 40ce40 0.00 : 428e20: 8b 05 82 22 24 00 mov 0x242282(%rip),%eax # 66b0a8 0.00 : 428e26: 45 31 c9 xor %r9d,%r9d 0.00 : 428e29: 45 31 c0 xor %r8d,%r8d 0.00 : 428e2c: 31 ff xor %edi,%edi 0.00 : 428e2e: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 428e33: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 428e38: be 33 64 44 00 mov $0x446433,%esi 0.00 : 428e3d: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 428e44: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 428e48: e8 f3 3f fe ff callq 40ce40 0.00 : 428e4d: 48 85 c0 test %rax,%rax 0.00 : 428e50: 74 57 je 428ea9 0.00 : 428e52: 48 c7 05 23 21 24 00 movq $0x452d68,0x242123(%rip) # 66af80 0.00 : 428e59: 68 2d 45 00 0.00 : 428e5d: 48 89 05 2c 21 24 00 mov %rax,0x24212c(%rip) # 66af90 0.00 : 428e64: 48 89 1d 2d 21 24 00 mov %rbx,0x24212d(%rip) # 66af98 0.00 : 428e6b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428e6f: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428e74: e8 57 a9 fd ff callq 4037d0 0.00 : 428e79: 48 89 c3 mov %rax,%rbx : : /* ORDER BY */ : else if (pg_strcasecmp(prev3_wd, "FROM") == 0 && : pg_strcasecmp(prev_wd, "ORDER") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev4_wd, "FROM") == 0 && 0.00 : 428e7c: e9 71 91 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "PREPARE") == 0) : { : static const char *const list_PREPARE[] = : {"SELECT", "UPDATE", "INSERT", "DELETE", NULL}; : : COMPLETE_WITH_LIST(list_PREPARE); 0.00 : 428e81: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428e85: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 428e8a: 48 c7 05 f3 20 24 00 movq $0x455d20,0x2420f3(%rip) # 66af88 0.00 : 428e91: 20 5d 45 00 0.00 : 428e95: c6 05 0c 21 24 00 00 movb $0x0,0x24210c(%rip) # 66afa8 0.00 : 428e9c: e8 2f a9 fd ff callq 4037d0 0.00 : 428ea1: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "ORDER") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); : : /* PREPARE xx AS */ : else if (pg_strcasecmp(prev_wd, "AS") == 0 && 0.00 : 428ea4: e9 49 91 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ORDER") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev4_wd, "FROM") == 0 && : pg_strcasecmp(prev2_wd, "ORDER") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_ATTR(prev3_wd, ""); 0.00 : 428ea9: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 428ead: 48 c7 05 c8 20 24 00 movq $0x452c00,0x2420c8(%rip) # 66af80 0.00 : 428eb4: 00 2c 45 00 0.00 : 428eb8: 48 89 05 d1 20 24 00 mov %rax,0x2420d1(%rip) # 66af90 0.00 : 428ebf: eb aa jmp 428e6b : pg_strcasecmp(prev2_wd, "INTO") == 0) : { : static const char *const list_INSERT[] = : {"(", "DEFAULT VALUES", "SELECT", "TABLE", "VALUES", NULL}; : : COMPLETE_WITH_LIST(list_INSERT); 0.00 : 428ec1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428ec5: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 428eca: 48 c7 05 b3 20 24 00 movq $0x455de0,0x2420b3(%rip) # 66af88 0.00 : 428ed1: e0 5d 45 00 0.00 : 428ed5: c6 05 cc 20 24 00 00 movb $0x0,0x2420cc(%rip) # 66afa8 0.00 : 428edc: e8 ef a8 fd ff callq 4037d0 0.00 : 428ee1: 48 89 c3 mov %rax,%rbx : : /* : * Complete INSERT INTO
with "(" or "VALUES" or "SELECT" or : * "TABLE" or "DEFAULT VALUES" : */ : else if (pg_strcasecmp(prev3_wd, "INSERT") == 0 && 0.00 : 428ee4: e9 09 91 ff ff jmpq 421ff2 : : /* : * Complete INSERT INTO
(attribs) with "VALUES" or "SELECT" or : * "TABLE" : */ : else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && 0.00 : 428ee9: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 428eed: 48 89 df mov %rbx,%rdi 0.00 : 428ef0: e8 8b a9 fd ff callq 403880 0.00 : 428ef5: 80 7c 03 ff 29 cmpb $0x29,-0x1(%rbx,%rax,1) 0.00 : 428efa: 0f 85 8c f7 ff ff jne 42868c : prev_wd[strlen(prev_wd) - 1] == ')') : { : static const char *const list_INSERT[] = : {"SELECT", "TABLE", "VALUES", NULL}; : : COMPLETE_WITH_LIST(list_INSERT); 0.00 : 428f00: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428f04: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 428f09: 48 c7 05 74 20 24 00 movq $0x455dc0,0x242074(%rip) # 66af88 0.00 : 428f10: c0 5d 45 00 0.00 : 428f14: c6 05 8d 20 24 00 00 movb $0x0,0x24208d(%rip) # 66afa8 0.00 : 428f1b: e8 b0 a8 fd ff callq 4037d0 0.00 : 428f20: 48 89 c3 mov %rax,%rbx : : /* : * Complete INSERT INTO
(attribs) with "VALUES" or "SELECT" or : * "TABLE" : */ : else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && 0.00 : 428f23: e9 ca 90 ff ff jmpq 421ff2 : /* Complete INSERT INTO with table names */ : else if (pg_strcasecmp(prev2_wd, "INSERT") == 0 && : pg_strcasecmp(prev_wd, "INTO") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); : /* Complete "INSERT INTO
(" with attribute names */ : else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && 0.00 : 428f28: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 428f2c: be 83 87 44 00 mov $0x448783,%esi 0.00 : 428f31: e8 4a be 00 00 callq 434d80 0.00 : 428f36: 85 c0 test %eax,%eax 0.00 : 428f38: 0f 85 fa f6 ff ff jne 428638 : pg_strcasecmp(prev3_wd, "INTO") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 428f3e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 428f42: 8b 05 60 21 24 00 mov 0x242160(%rip),%eax # 66b0a8 0.00 : 428f48: 45 31 c9 xor %r9d,%r9d 0.00 : 428f4b: 45 31 c0 xor %r8d,%r8d 0.00 : 428f4e: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 428f53: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 428f58: be 33 64 44 00 mov $0x446433,%esi 0.00 : 428f5d: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 428f64: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 428f68: e8 d3 3e fe ff callq 40ce40 0.00 : 428f6d: 48 89 c3 mov %rax,%rbx 0.00 : 428f70: 8b 05 32 21 24 00 mov 0x242132(%rip),%eax # 66b0a8 0.00 : 428f76: 45 31 c9 xor %r9d,%r9d 0.00 : 428f79: 45 31 c0 xor %r8d,%r8d 0.00 : 428f7c: 31 ff xor %edi,%edi 0.00 : 428f7e: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 428f83: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 428f88: be 33 64 44 00 mov $0x446433,%esi 0.00 : 428f8d: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 428f94: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 428f98: e8 a3 3e fe ff callq 40ce40 0.00 : 428f9d: 8b 05 05 21 24 00 mov 0x242105(%rip),%eax # 66b0a8 0.00 : 428fa3: 45 31 c9 xor %r9d,%r9d 0.00 : 428fa6: 45 31 c0 xor %r8d,%r8d 0.00 : 428fa9: 31 ff xor %edi,%edi 0.00 : 428fab: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 428fb0: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 428fb5: be 33 64 44 00 mov $0x446433,%esi 0.00 : 428fba: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 428fc1: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 428fc5: e8 76 3e fe ff callq 40ce40 0.00 : 428fca: 48 85 c0 test %rax,%rax 0.00 : 428fcd: 74 62 je 429031 0.00 : 428fcf: 48 c7 05 a6 1f 24 00 movq $0x452d68,0x241fa6(%rip) # 66af80 0.00 : 428fd6: 68 2d 45 00 0.00 : 428fda: 48 89 05 af 1f 24 00 mov %rax,0x241faf(%rip) # 66af90 0.00 : 428fe1: 48 89 1d b0 1f 24 00 mov %rbx,0x241fb0(%rip) # 66af98 0.00 : 428fe8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 428fec: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 428ff1: e8 da a7 fd ff callq 4037d0 0.00 : 428ff6: 48 89 c3 mov %rax,%rbx : /* Complete INSERT INTO with table names */ : else if (pg_strcasecmp(prev2_wd, "INSERT") == 0 && : pg_strcasecmp(prev_wd, "INTO") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); : /* Complete "INSERT INTO
(" with attribute names */ : else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && 0.00 : 428ff9: e9 f4 8f ff ff jmpq 421ff2 : COMPLETE_WITH_QUERY(Query_for_list_of_databases); : else if (pg_strcasecmp(prev_wd, "DOMAIN") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL); : else if (pg_strcasecmp(prev_wd, "FUNCTION") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (pg_strcasecmp(prev_wd, "LANGUAGE") == 0) 0.00 : 428ffe: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429002: be bf bd 43 00 mov $0x43bdbf,%esi 0.00 : 429007: e8 74 bd 00 00 callq 434d80 0.00 : 42900c: 85 c0 test %eax,%eax 0.00 : 42900e: 75 39 jne 429049 : COMPLETE_WITH_QUERY(Query_for_list_of_languages); 0.00 : 429010: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429014: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 429019: 48 c7 05 5c 1f 24 00 movq $0x453978,0x241f5c(%rip) # 66af80 0.00 : 429020: 78 39 45 00 0.00 : 429024: e8 a7 a7 fd ff callq 4037d0 0.00 : 429029: 48 89 c3 mov %rax,%rbx 0.00 : 42902c: e9 c1 8f ff ff jmpq 421ff2 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); : /* Complete "INSERT INTO
(" with attribute names */ : else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && : pg_strcasecmp(prev3_wd, "INTO") == 0 && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 429031: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 429035: 48 c7 05 40 1f 24 00 movq $0x452c00,0x241f40(%rip) # 66af80 0.00 : 42903c: 00 2c 45 00 0.00 : 429040: 48 89 05 49 1f 24 00 mov %rax,0x241f49(%rip) # 66af90 0.00 : 429047: eb 9f jmp 428fe8 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL); : else if (pg_strcasecmp(prev_wd, "FUNCTION") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (pg_strcasecmp(prev_wd, "LANGUAGE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_languages); : else if (pg_strcasecmp(prev_wd, "SCHEMA") == 0) 0.00 : 429049: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42904d: be b4 be 43 00 mov $0x43beb4,%esi 0.00 : 429052: e8 29 bd 00 00 callq 434d80 0.00 : 429057: 85 c0 test %eax,%eax 0.00 : 429059: 0f 85 d5 08 00 00 jne 429934 : COMPLETE_WITH_QUERY(Query_for_list_of_schemas); 0.00 : 42905f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429063: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 429068: 48 c7 05 0d 1f 24 00 movq $0x453a18,0x241f0d(%rip) # 66af80 0.00 : 42906f: 18 3a 45 00 0.00 : 429073: e8 58 a7 fd ff callq 4037d0 0.00 : 429078: 48 89 c3 mov %rax,%rbx 0.00 : 42907b: e9 72 8f ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : { : COMPLETE_WITH_CONST("VIEW"); : } : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 429080: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429084: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 429089: e8 f2 bc 00 00 callq 434d80 0.00 : 42908e: 85 c0 test %eax,%eax 0.00 : 429090: 0f 85 3a eb ff ff jne 427bd0 : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); 0.00 : 429096: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42909a: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42909f: 48 c7 05 f6 1e 24 00 movq $0x454fc0,0x241ef6(%rip) # 66afa0 0.00 : 4290a6: c0 4f 45 00 0.00 : 4290aa: 48 c7 05 cb 1e 24 00 movq $0x0,0x241ecb(%rip) # 66af80 0.00 : 4290b1: 00 00 00 00 0.00 : 4290b5: e8 16 a7 fd ff callq 4037d0 0.00 : 4290ba: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : { : COMPLETE_WITH_CONST("VIEW"); : } : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 4290bd: e9 30 8f ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "AGGREGATE") == 0) : COMPLETE_WITH_CONST("("); : : /* DROP object with CASCADE / RESTRICT */ : else if ((pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 4290c2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4290c6: be 2b 11 45 00 mov $0x45112b,%esi 0.00 : 4290cb: e8 b0 bc 00 00 callq 434d80 0.00 : 4290d0: 85 c0 test %eax,%eax 0.00 : 4290d2: 0f 85 58 ea ff ff jne 427b30 0.00 : 4290d8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4290dc: be 12 bd 43 00 mov $0x43bd12,%esi 0.00 : 4290e1: e8 9a bc 00 00 callq 434d80 0.00 : 4290e6: 85 c0 test %eax,%eax 0.00 : 4290e8: 0f 84 7a e8 ff ff je 427968 0.00 : 4290ee: e9 3d ea ff ff jmpq 427b30 0.00 : 4290f3: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4290f7: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 4290fc: e8 7f bc 00 00 callq 434d80 0.00 : 429101: 85 c0 test %eax,%eax 0.00 : 429103: 0f 85 4f ea ff ff jne 427b58 0.00 : 429109: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42910d: be 19 10 45 00 mov $0x451019,%esi 0.00 : 429112: e8 69 bc 00 00 callq 434d80 0.00 : 429117: 85 c0 test %eax,%eax 0.00 : 429119: 0f 84 49 e8 ff ff je 427968 0.00 : 42911f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429123: be 76 bf 43 00 mov $0x43bf76,%esi 0.00 : 429128: e8 53 bc 00 00 callq 434d80 0.00 : 42912d: 85 c0 test %eax,%eax 0.00 : 42912f: 0f 84 33 e8 ff ff je 427968 0.00 : 429135: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429139: be 94 bf 43 00 mov $0x43bf94,%esi 0.00 : 42913e: e8 3d bc 00 00 callq 434d80 0.00 : 429143: 85 c0 test %eax,%eax 0.00 : 429145: 0f 84 1d e8 ff ff je 427968 0.00 : 42914b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42914f: be ae bf 43 00 mov $0x43bfae,%esi 0.00 : 429154: e8 27 bc 00 00 callq 434d80 0.00 : 429159: 85 c0 test %eax,%eax 0.00 : 42915b: 0f 85 f7 e9 ff ff jne 427b58 0.00 : 429161: e9 02 e8 ff ff jmpq 427968 : pg_strcasecmp(prev_wd, "FOREIGN") == 0) : { : static const char *const drop_CREATE_FOREIGN[] = : {"DATA WRAPPER", "TABLE", NULL}; : : COMPLETE_WITH_LIST(drop_CREATE_FOREIGN); 0.00 : 429166: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42916a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42916f: 48 c7 05 0e 1e 24 00 movq $0x455ff0,0x241e0e(%rip) # 66af88 0.00 : 429176: f0 5f 45 00 0.00 : 42917a: c6 05 27 1e 24 00 00 movb $0x0,0x241e27(%rip) # 66afa8 0.00 : 429181: e8 4a a6 fd ff callq 4037d0 0.00 : 429186: 48 89 c3 mov %rax,%rbx : {"CASCADE", "RESTRICT", NULL}; : : COMPLETE_WITH_LIST(list_DROPCR); : } : } : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 429189: e9 64 8e ff ff jmpq 421ff2 : : /* DROP MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : { : COMPLETE_WITH_CONST("VIEW"); 0.00 : 42918e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429192: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 429197: 48 c7 05 de 1d 24 00 movq $0x43bddc,0x241dde(%rip) # 66af80 0.00 : 42919e: dc bd 43 00 0.00 : 4291a2: c6 05 ff 1d 24 00 00 movb $0x0,0x241dff(%rip) # 66afa8 0.00 : 4291a9: e8 22 a6 fd ff callq 4037d0 0.00 : 4291ae: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(drop_CREATE_FOREIGN); : } : : /* DROP MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 4291b1: e9 3c 8e ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "AGGREGATE") == 0) : COMPLETE_WITH_CONST("("); : : /* DROP object with CASCADE / RESTRICT */ : else if ((pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 4291b6: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 4291ba: 48 89 df mov %rbx,%rdi 0.00 : 4291bd: e8 be a6 fd ff callq 403880 0.00 : 4291c2: 80 7c 03 ff 29 cmpb $0x29,-0x1(%rbx,%rax,1) 0.00 : 4291c7: 0f 85 13 e9 ff ff jne 427ae0 0.00 : 4291cd: e9 96 e7 ff ff jmpq 427968 0.00 : 4291d2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4291d6: be be bf 43 00 mov $0x43bfbe,%esi 0.00 : 4291db: e8 a0 bb 00 00 callq 434d80 0.00 : 4291e0: 85 c0 test %eax,%eax 0.00 : 4291e2: 0f 84 80 e7 ff ff je 427968 0.00 : 4291e8: e9 1b e9 ff ff jmpq 427b08 : ) : { : if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "FUNCTION") == 0) : { : COMPLETE_WITH_CONST("("); 0.00 : 4291ed: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4291f1: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4291f6: 48 c7 05 7f 1d 24 00 movq $0x448783,0x241d7f(%rip) # 66af80 0.00 : 4291fd: 83 87 44 00 0.00 : 429201: c6 05 a0 1d 24 00 00 movb $0x0,0x241da0(%rip) # 66afa8 0.00 : 429208: e8 c3 a5 fd ff callq 4037d0 0.00 : 42920d: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev2_wd, "DICTIONARY") == 0 || : pg_strcasecmp(prev2_wd, "PARSER") == 0 || : pg_strcasecmp(prev2_wd, "TEMPLATE") == 0)) : ) : { : if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 429210: e9 dd 8d ff ff jmpq 421ff2 : */ : : /* REASSIGN OWNED BY xxx TO yyy */ : else if (pg_strcasecmp(prev_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("OWNED"); : else if (pg_strcasecmp(prev_wd, "OWNED") == 0 && 0.00 : 429215: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429219: be 30 c6 43 00 mov $0x43c630,%esi 0.00 : 42921e: e8 5d bb 00 00 callq 434d80 0.00 : 429223: 85 c0 test %eax,%eax 0.00 : 429225: 75 16 jne 42923d 0.00 : 429227: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42922b: be f8 10 45 00 mov $0x4510f8,%esi 0.00 : 429230: e8 4b bb 00 00 callq 434d80 0.00 : 429235: 85 c0 test %eax,%eax 0.00 : 429237: 0f 84 b6 00 00 00 je 4292f3 : pg_strcasecmp(prev2_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev_wd, "BY") == 0 && 0.00 : 42923d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429241: be 29 1a 45 00 mov $0x451a29,%esi 0.00 : 429246: e8 35 bb 00 00 callq 434d80 0.00 : 42924b: 85 c0 test %eax,%eax 0.00 : 42924d: 75 16 jne 429265 0.00 : 42924f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429253: be 30 c6 43 00 mov $0x43c630,%esi 0.00 : 429258: e8 23 bb 00 00 callq 434d80 0.00 : 42925d: 85 c0 test %eax,%eax 0.00 : 42925f: 0f 84 41 01 00 00 je 4293a6 : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev3_wd, "REASSIGN") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (pg_strcasecmp(prev2_wd, "BY") == 0 && 0.00 : 429265: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429269: be 29 1a 45 00 mov $0x451a29,%esi 0.00 : 42926e: e8 0d bb 00 00 callq 434d80 0.00 : 429273: 85 c0 test %eax,%eax 0.00 : 429275: 75 16 jne 42928d 0.00 : 429277: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42927b: be 30 c6 43 00 mov $0x43c630,%esi 0.00 : 429280: e8 fb ba 00 00 callq 434d80 0.00 : 429285: 85 c0 test %eax,%eax 0.00 : 429287: 0f 84 8e 00 00 00 je 42931b : pg_strcasecmp(prev3_wd, "OWNED") == 0 && : pg_strcasecmp(prev4_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("TO"); : else if (pg_strcasecmp(prev_wd, "TO") == 0 && 0.00 : 42928d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429291: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 429296: e8 e5 ba 00 00 callq 434d80 0.00 : 42929b: 85 c0 test %eax,%eax 0.00 : 42929d: 75 16 jne 4292b5 0.00 : 42929f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4292a3: be 29 1a 45 00 mov $0x451a29,%esi 0.00 : 4292a8: e8 d3 ba 00 00 callq 434d80 0.00 : 4292ad: 85 c0 test %eax,%eax 0.00 : 4292af: 0f 84 a4 00 00 00 je 429359 : pg_strcasecmp(prev4_wd, "OWNED") == 0 && : pg_strcasecmp(prev5_wd, "REASSIGN") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* REFRESH MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev_wd, "REFRESH") == 0) 0.00 : 4292b5: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4292b9: be 01 11 45 00 mov $0x451101,%esi 0.00 : 4292be: e8 bd ba 00 00 callq 434d80 0.00 : 4292c3: 85 c0 test %eax,%eax 0.00 : 4292c5: 0f 85 12 01 00 00 jne 4293dd : COMPLETE_WITH_CONST("MATERIALIZED VIEW"); 0.00 : 4292cb: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4292cf: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4292d4: 48 c7 05 a1 1c 24 00 movq $0x43bdcf,0x241ca1(%rip) # 66af80 0.00 : 4292db: cf bd 43 00 0.00 : 4292df: c6 05 c2 1c 24 00 00 movb $0x0,0x241cc2(%rip) # 66afa8 0.00 : 4292e6: e8 e5 a4 fd ff callq 4037d0 0.00 : 4292eb: 48 89 c3 mov %rax,%rbx 0.00 : 4292ee: e9 ff 8c ff ff jmpq 421ff2 : /* REASSIGN OWNED BY xxx TO yyy */ : else if (pg_strcasecmp(prev_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("OWNED"); : else if (pg_strcasecmp(prev_wd, "OWNED") == 0 && : pg_strcasecmp(prev2_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("BY"); 0.00 : 4292f3: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4292f7: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4292fc: 48 c7 05 79 1c 24 00 movq $0x451a29,0x241c79(%rip) # 66af80 0.00 : 429303: 29 1a 45 00 0.00 : 429307: c6 05 9a 1c 24 00 00 movb $0x0,0x241c9a(%rip) # 66afa8 0.00 : 42930e: e8 bd a4 fd ff callq 4037d0 0.00 : 429313: 48 89 c3 mov %rax,%rbx : */ : : /* REASSIGN OWNED BY xxx TO yyy */ : else if (pg_strcasecmp(prev_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("OWNED"); : else if (pg_strcasecmp(prev_wd, "OWNED") == 0 && 0.00 : 429316: e9 d7 8c ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev_wd, "BY") == 0 && : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev3_wd, "REASSIGN") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (pg_strcasecmp(prev2_wd, "BY") == 0 && 0.00 : 42931b: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42931f: be f8 10 45 00 mov $0x4510f8,%esi 0.00 : 429324: e8 57 ba 00 00 callq 434d80 0.00 : 429329: 85 c0 test %eax,%eax 0.00 : 42932b: 0f 85 5c ff ff ff jne 42928d : pg_strcasecmp(prev3_wd, "OWNED") == 0 && : pg_strcasecmp(prev4_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("TO"); 0.00 : 429331: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429335: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42933a: 48 c7 05 3b 1c 24 00 movq $0x450fe6,0x241c3b(%rip) # 66af80 0.00 : 429341: e6 0f 45 00 0.00 : 429345: c6 05 5c 1c 24 00 00 movb $0x0,0x241c5c(%rip) # 66afa8 0.00 : 42934c: e8 7f a4 fd ff callq 4037d0 0.00 : 429351: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev_wd, "BY") == 0 && : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev3_wd, "REASSIGN") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (pg_strcasecmp(prev2_wd, "BY") == 0 && 0.00 : 429354: e9 99 8c ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "OWNED") == 0 && : pg_strcasecmp(prev4_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("TO"); : else if (pg_strcasecmp(prev_wd, "TO") == 0 && 0.00 : 429359: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42935d: be 30 c6 43 00 mov $0x43c630,%esi 0.00 : 429362: e8 19 ba 00 00 callq 434d80 0.00 : 429367: 85 c0 test %eax,%eax 0.00 : 429369: 0f 85 46 ff ff ff jne 4292b5 0.00 : 42936f: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 429373: be f8 10 45 00 mov $0x4510f8,%esi 0.00 : 429378: e8 03 ba 00 00 callq 434d80 0.00 : 42937d: 85 c0 test %eax,%eax 0.00 : 42937f: 0f 85 30 ff ff ff jne 4292b5 : pg_strcasecmp(prev3_wd, "BY") == 0 && : pg_strcasecmp(prev4_wd, "OWNED") == 0 && : pg_strcasecmp(prev5_wd, "REASSIGN") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 429385: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429389: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42938e: 48 c7 05 e7 1b 24 00 movq $0x451b48,0x241be7(%rip) # 66af80 0.00 : 429395: 48 1b 45 00 0.00 : 429399: e8 32 a4 fd ff callq 4037d0 0.00 : 42939e: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (pg_strcasecmp(prev2_wd, "BY") == 0 && : pg_strcasecmp(prev3_wd, "OWNED") == 0 && : pg_strcasecmp(prev4_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("TO"); : else if (pg_strcasecmp(prev_wd, "TO") == 0 && 0.00 : 4293a1: e9 4c 8c ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("OWNED"); : else if (pg_strcasecmp(prev_wd, "OWNED") == 0 && : pg_strcasecmp(prev2_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev_wd, "BY") == 0 && 0.00 : 4293a6: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4293aa: be f8 10 45 00 mov $0x4510f8,%esi 0.00 : 4293af: e8 cc b9 00 00 callq 434d80 0.00 : 4293b4: 85 c0 test %eax,%eax 0.00 : 4293b6: 0f 85 a9 fe ff ff jne 429265 : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev3_wd, "REASSIGN") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 4293bc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4293c0: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4293c5: 48 c7 05 b0 1b 24 00 movq $0x451b48,0x241bb0(%rip) # 66af80 0.00 : 4293cc: 48 1b 45 00 0.00 : 4293d0: e8 fb a3 fd ff callq 4037d0 0.00 : 4293d5: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("OWNED"); : else if (pg_strcasecmp(prev_wd, "OWNED") == 0 && : pg_strcasecmp(prev2_wd, "REASSIGN") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev_wd, "BY") == 0 && 0.00 : 4293d8: e9 15 8c ff ff jmpq 421ff2 : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* REFRESH MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev_wd, "REFRESH") == 0) : COMPLETE_WITH_CONST("MATERIALIZED VIEW"); : else if (pg_strcasecmp(prev2_wd, "REFRESH") == 0 && 0.00 : 4293dd: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4293e1: be 01 11 45 00 mov $0x451101,%esi 0.00 : 4293e6: e8 95 b9 00 00 callq 434d80 0.00 : 4293eb: 85 c0 test %eax,%eax 0.00 : 4293ed: 75 16 jne 429405 0.00 : 4293ef: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4293f3: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 4293f8: e8 83 b9 00 00 callq 434d80 0.00 : 4293fd: 85 c0 test %eax,%eax 0.00 : 4293ff: 0f 84 94 01 00 00 je 429599 : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); : else if (pg_strcasecmp(prev3_wd, "REFRESH") == 0 && 0.00 : 429405: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429409: be 01 11 45 00 mov $0x451101,%esi 0.00 : 42940e: e8 6d b9 00 00 callq 434d80 0.00 : 429413: 85 c0 test %eax,%eax 0.00 : 429415: 75 16 jne 42942d 0.00 : 429417: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42941b: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 429420: e8 5b b9 00 00 callq 434d80 0.00 : 429425: 85 c0 test %eax,%eax 0.00 : 429427: 0f 84 94 01 00 00 je 4295c1 : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, : " UNION SELECT 'CONCURRENTLY'"); : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && 0.00 : 42942d: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429431: be 01 11 45 00 mov $0x451101,%esi 0.00 : 429436: e8 45 b9 00 00 callq 434d80 0.00 : 42943b: 85 c0 test %eax,%eax 0.00 : 42943d: 75 16 jne 429455 0.00 : 42943f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429443: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 429448: e8 33 b9 00 00 callq 434d80 0.00 : 42944d: 85 c0 test %eax,%eax 0.00 : 42944f: 0f 84 ae 01 00 00 je 429603 : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && 0.00 : 429455: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429459: be 01 11 45 00 mov $0x451101,%esi 0.00 : 42945e: e8 1d b9 00 00 callq 434d80 0.00 : 429463: 85 c0 test %eax,%eax 0.00 : 429465: 75 16 jne 42947d 0.00 : 429467: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42946b: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 429470: e8 0b b9 00 00 callq 434d80 0.00 : 429475: 85 c0 test %eax,%eax 0.00 : 429477: 0f 84 de 01 00 00 je 42965b : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("WITH"); : else if (pg_strcasecmp(prev5_wd, "REFRESH") == 0 && 0.00 : 42947d: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 429481: be 01 11 45 00 mov $0x451101,%esi 0.00 : 429486: e8 f5 b8 00 00 callq 434d80 0.00 : 42948b: 85 c0 test %eax,%eax 0.00 : 42948d: 75 16 jne 4294a5 0.00 : 42948f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429493: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 429498: e8 e3 b8 00 00 callq 434d80 0.00 : 42949d: 85 c0 test %eax,%eax 0.00 : 42949f: 0f 84 f4 01 00 00 je 429699 : pg_strcasecmp(prev4_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev2_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_CONST("WITH DATA"); : else if (pg_strcasecmp(prev5_wd, "REFRESH") == 0 && 0.00 : 4294a5: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4294a9: be 01 11 45 00 mov $0x451101,%esi 0.00 : 4294ae: e8 cd b8 00 00 callq 434d80 0.00 : 4294b3: 85 c0 test %eax,%eax 0.00 : 4294b5: 75 16 jne 4294cd 0.00 : 4294b7: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4294bb: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 4294c0: e8 bb b8 00 00 callq 434d80 0.00 : 4294c5: 85 c0 test %eax,%eax 0.00 : 4294c7: 0f 84 20 02 00 00 je 4296ed : static const char *const list_WITH_DATA[] = : {"NO DATA", "DATA", NULL}; : : COMPLETE_WITH_LIST(list_WITH_DATA); : } : else if (pg_strcasecmp(prev6_wd, "REFRESH") == 0 && 0.00 : 4294cd: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 4294d1: be 01 11 45 00 mov $0x451101,%esi 0.00 : 4294d6: e8 a5 b8 00 00 callq 434d80 0.00 : 4294db: 85 c0 test %eax,%eax 0.00 : 4294dd: 75 16 jne 4294f5 0.00 : 4294df: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4294e3: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 4294e8: e8 93 b8 00 00 callq 434d80 0.00 : 4294ed: 85 c0 test %eax,%eax 0.00 : 4294ef: 0f 84 4c 02 00 00 je 429741 : pg_strcasecmp(prev5_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev4_wd, "VIEW") == 0 && : pg_strcasecmp(prev3_wd, "CONCURRENTLY") == 0 && : pg_strcasecmp(prev_wd, "WITH") == 0) : COMPLETE_WITH_CONST("DATA"); : else if (pg_strcasecmp(prev6_wd, "REFRESH") == 0 && 0.00 : 4294f5: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 4294f9: be 01 11 45 00 mov $0x451101,%esi 0.00 : 4294fe: e8 7d b8 00 00 callq 434d80 0.00 : 429503: 85 c0 test %eax,%eax 0.00 : 429505: 75 16 jne 42951d 0.00 : 429507: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42950b: be 9c 0f 45 00 mov $0x450f9c,%esi 0.00 : 429510: e8 6b b8 00 00 callq 434d80 0.00 : 429515: 85 c0 test %eax,%eax 0.00 : 429517: 0f 84 8e 02 00 00 je 4297ab : pg_strcasecmp(prev2_wd, "WITH") == 0 && : pg_strcasecmp(prev_wd, "NO") == 0) : COMPLETE_WITH_CONST("DATA"); : : /* REINDEX */ : else if (pg_strcasecmp(prev_wd, "REINDEX") == 0) 0.00 : 42951d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429521: be 50 c6 43 00 mov $0x43c650,%esi 0.00 : 429526: e8 55 b8 00 00 callq 434d80 0.00 : 42952b: 85 c0 test %eax,%eax 0.00 : 42952d: 0f 85 f8 04 00 00 jne 429a2b : { : static const char *const list_REINDEX[] = : {"TABLE", "INDEX", "SYSTEM", "DATABASE", NULL}; : : COMPLETE_WITH_LIST(list_REINDEX); 0.00 : 429533: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429537: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42953c: 48 c7 05 41 1a 24 00 movq $0x455cc0,0x241a41(%rip) # 66af88 0.00 : 429543: c0 5c 45 00 0.00 : 429547: c6 05 5a 1a 24 00 00 movb $0x0,0x241a5a(%rip) # 66afa8 0.00 : 42954e: e8 7d a2 fd ff callq 4037d0 0.00 : 429553: 48 89 c3 mov %rax,%rbx 0.00 : 429556: e9 97 8a ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 42955b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42955f: be d5 14 45 00 mov $0x4514d5,%esi 0.00 : 429564: e8 17 b8 00 00 callq 434d80 0.00 : 429569: 85 c0 test %eax,%eax 0.00 : 42956b: 0f 85 23 e7 ff ff jne 427c94 : { : : static const char *const list_ALTERTEXTSEARCH[] = : {"CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE", NULL}; : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH); 0.00 : 429571: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429575: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42957a: 48 c7 05 03 1a 24 00 movq $0x455fc0,0x241a03(%rip) # 66af88 0.00 : 429581: c0 5f 45 00 0.00 : 429585: c6 05 1c 1a 24 00 00 movb $0x0,0x241a1c(%rip) # 66afa8 0.00 : 42958c: e8 3f a2 fd ff callq 4037d0 0.00 : 429591: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 429594: e9 59 8a ff ff jmpq 421ff2 : /* REFRESH MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev_wd, "REFRESH") == 0) : COMPLETE_WITH_CONST("MATERIALIZED VIEW"); : else if (pg_strcasecmp(prev2_wd, "REFRESH") == 0 && : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); 0.00 : 429599: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42959d: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4295a2: 48 c7 05 d3 19 24 00 movq $0x43bddc,0x2419d3(%rip) # 66af80 0.00 : 4295a9: dc bd 43 00 0.00 : 4295ad: c6 05 f4 19 24 00 00 movb $0x0,0x2419f4(%rip) # 66afa8 0.00 : 4295b4: e8 17 a2 fd ff callq 4037d0 0.00 : 4295b9: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : : /* REFRESH MATERIALIZED VIEW */ : else if (pg_strcasecmp(prev_wd, "REFRESH") == 0) : COMPLETE_WITH_CONST("MATERIALIZED VIEW"); : else if (pg_strcasecmp(prev2_wd, "REFRESH") == 0 && 0.00 : 4295bc: e9 31 8a ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); : else if (pg_strcasecmp(prev3_wd, "REFRESH") == 0 && 0.00 : 4295c1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4295c5: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 4295ca: e8 b1 b7 00 00 callq 434d80 0.00 : 4295cf: 85 c0 test %eax,%eax 0.00 : 4295d1: 0f 85 56 fe ff ff jne 42942d : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, 0.00 : 4295d7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4295db: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 4295e0: 48 c7 05 b5 19 24 00 movq $0x454fc0,0x2419b5(%rip) # 66afa0 0.00 : 4295e7: c0 4f 45 00 0.00 : 4295eb: 48 c7 05 8a 19 24 00 movq $0x451109,0x24198a(%rip) # 66af80 0.00 : 4295f2: 09 11 45 00 0.00 : 4295f6: e8 d5 a1 fd ff callq 4037d0 0.00 : 4295fb: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev_wd, "REFRESH") == 0) : COMPLETE_WITH_CONST("MATERIALIZED VIEW"); : else if (pg_strcasecmp(prev2_wd, "REFRESH") == 0 && : pg_strcasecmp(prev_wd, "MATERIALIZED") == 0) : COMPLETE_WITH_CONST("VIEW"); : else if (pg_strcasecmp(prev3_wd, "REFRESH") == 0 && 0.00 : 4295fe: e9 ef 89 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, : " UNION SELECT 'CONCURRENTLY'"); : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && 0.00 : 429603: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429607: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 42960c: e8 6f b7 00 00 callq 434d80 0.00 : 429611: 85 c0 test %eax,%eax 0.00 : 429613: 0f 85 3c fe ff ff jne 429455 0.00 : 429619: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42961d: be 5a 10 45 00 mov $0x45105a,%esi 0.00 : 429622: e8 59 b7 00 00 callq 434d80 0.00 : 429627: 85 c0 test %eax,%eax 0.00 : 429629: 0f 85 26 fe ff ff jne 429455 : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); 0.00 : 42962f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429633: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 429638: 48 c7 05 5d 19 24 00 movq $0x454fc0,0x24195d(%rip) # 66afa0 0.00 : 42963f: c0 4f 45 00 0.00 : 429643: 48 c7 05 32 19 24 00 movq $0x0,0x241932(%rip) # 66af80 0.00 : 42964a: 00 00 00 00 0.00 : 42964e: e8 7d a1 fd ff callq 4037d0 0.00 : 429653: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev3_wd, "REFRESH") == 0 && : pg_strcasecmp(prev2_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev_wd, "VIEW") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, : " UNION SELECT 'CONCURRENTLY'"); : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && 0.00 : 429656: e9 97 89 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && 0.00 : 42965b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42965f: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 429664: e8 17 b7 00 00 callq 434d80 0.00 : 429669: 85 c0 test %eax,%eax 0.00 : 42966b: 0f 85 0c fe ff ff jne 42947d : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("WITH"); 0.00 : 429671: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429675: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42967a: 48 c7 05 fb 18 24 00 movq $0x43c7b8,0x2418fb(%rip) # 66af80 0.00 : 429681: b8 c7 43 00 0.00 : 429685: c6 05 1c 19 24 00 00 movb $0x0,0x24191c(%rip) # 66afa8 0.00 : 42968c: e8 3f a1 fd ff callq 4037d0 0.00 : 429691: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0 && : pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && 0.00 : 429694: e9 59 89 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("WITH"); : else if (pg_strcasecmp(prev5_wd, "REFRESH") == 0 && 0.00 : 429699: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42969d: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 4296a2: e8 d9 b6 00 00 callq 434d80 0.00 : 4296a7: 85 c0 test %eax,%eax 0.00 : 4296a9: 0f 85 f6 fd ff ff jne 4294a5 0.00 : 4296af: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4296b3: be 5a 10 45 00 mov $0x45105a,%esi 0.00 : 4296b8: e8 c3 b6 00 00 callq 434d80 0.00 : 4296bd: 85 c0 test %eax,%eax 0.00 : 4296bf: 0f 85 e0 fd ff ff jne 4294a5 : pg_strcasecmp(prev4_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev2_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_CONST("WITH DATA"); 0.00 : 4296c5: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4296c9: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4296ce: 48 c7 05 a7 18 24 00 movq $0x451126,0x2418a7(%rip) # 66af80 0.00 : 4296d5: 26 11 45 00 0.00 : 4296d9: c6 05 c8 18 24 00 00 movb $0x0,0x2418c8(%rip) # 66afa8 0.00 : 4296e0: e8 eb a0 fd ff callq 4037d0 0.00 : 4296e5: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : else if (pg_strcasecmp(prev4_wd, "REFRESH") == 0 && : pg_strcasecmp(prev3_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev2_wd, "VIEW") == 0) : COMPLETE_WITH_CONST("WITH"); : else if (pg_strcasecmp(prev5_wd, "REFRESH") == 0 && 0.00 : 4296e8: e9 05 89 ff ff jmpq 421ff2 : pg_strcasecmp(prev4_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev2_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_CONST("WITH DATA"); : else if (pg_strcasecmp(prev5_wd, "REFRESH") == 0 && 0.00 : 4296ed: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4296f1: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 4296f6: e8 85 b6 00 00 callq 434d80 0.00 : 4296fb: 85 c0 test %eax,%eax 0.00 : 4296fd: 0f 85 ca fd ff ff jne 4294cd 0.00 : 429703: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429707: be b8 c7 43 00 mov $0x43c7b8,%esi 0.00 : 42970c: e8 6f b6 00 00 callq 434d80 0.00 : 429711: 85 c0 test %eax,%eax 0.00 : 429713: 0f 85 b4 fd ff ff jne 4294cd : pg_strcasecmp(prev_wd, "WITH") == 0) : { : static const char *const list_WITH_DATA[] = : {"NO DATA", "DATA", NULL}; : : COMPLETE_WITH_LIST(list_WITH_DATA); 0.00 : 429719: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42971d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 429722: 48 c7 05 5b 18 24 00 movq $0x455cf0,0x24185b(%rip) # 66af88 0.00 : 429729: f0 5c 45 00 0.00 : 42972d: c6 05 74 18 24 00 00 movb $0x0,0x241874(%rip) # 66afa8 0.00 : 429734: e8 97 a0 fd ff callq 4037d0 0.00 : 429739: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev5_wd, "REFRESH") == 0 && : pg_strcasecmp(prev4_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev3_wd, "VIEW") == 0 && : pg_strcasecmp(prev2_wd, "CONCURRENTLY") == 0) : COMPLETE_WITH_CONST("WITH DATA"); : else if (pg_strcasecmp(prev5_wd, "REFRESH") == 0 && 0.00 : 42973c: e9 b1 88 ff ff jmpq 421ff2 : static const char *const list_WITH_DATA[] = : {"NO DATA", "DATA", NULL}; : : COMPLETE_WITH_LIST(list_WITH_DATA); : } : else if (pg_strcasecmp(prev6_wd, "REFRESH") == 0 && 0.00 : 429741: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429745: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 42974a: e8 31 b6 00 00 callq 434d80 0.00 : 42974f: 85 c0 test %eax,%eax 0.00 : 429751: 0f 85 9e fd ff ff jne 4294f5 0.00 : 429757: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42975b: be 5a 10 45 00 mov $0x45105a,%esi 0.00 : 429760: e8 1b b6 00 00 callq 434d80 0.00 : 429765: 85 c0 test %eax,%eax 0.00 : 429767: 0f 85 88 fd ff ff jne 4294f5 0.00 : 42976d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429771: be b8 c7 43 00 mov $0x43c7b8,%esi 0.00 : 429776: e8 05 b6 00 00 callq 434d80 0.00 : 42977b: 85 c0 test %eax,%eax 0.00 : 42977d: 0f 85 72 fd ff ff jne 4294f5 : pg_strcasecmp(prev5_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev4_wd, "VIEW") == 0 && : pg_strcasecmp(prev3_wd, "CONCURRENTLY") == 0 && : pg_strcasecmp(prev_wd, "WITH") == 0) : COMPLETE_WITH_CONST("DATA"); 0.00 : 429783: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429787: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42978c: 48 c7 05 e9 17 24 00 movq $0x45112b,0x2417e9(%rip) # 66af80 0.00 : 429793: 2b 11 45 00 0.00 : 429797: c6 05 0a 18 24 00 00 movb $0x0,0x24180a(%rip) # 66afa8 0.00 : 42979e: e8 2d a0 fd ff callq 4037d0 0.00 : 4297a3: 48 89 c3 mov %rax,%rbx : static const char *const list_WITH_DATA[] = : {"NO DATA", "DATA", NULL}; : : COMPLETE_WITH_LIST(list_WITH_DATA); : } : else if (pg_strcasecmp(prev6_wd, "REFRESH") == 0 && 0.00 : 4297a6: e9 47 88 ff ff jmpq 421ff2 : pg_strcasecmp(prev5_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev4_wd, "VIEW") == 0 && : pg_strcasecmp(prev3_wd, "CONCURRENTLY") == 0 && : pg_strcasecmp(prev_wd, "WITH") == 0) : COMPLETE_WITH_CONST("DATA"); : else if (pg_strcasecmp(prev6_wd, "REFRESH") == 0 && 0.00 : 4297ab: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4297af: be dc bd 43 00 mov $0x43bddc,%esi 0.00 : 4297b4: e8 c7 b5 00 00 callq 434d80 0.00 : 4297b9: 85 c0 test %eax,%eax 0.00 : 4297bb: 0f 85 5c fd ff ff jne 42951d 0.00 : 4297c1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4297c5: be b8 c7 43 00 mov $0x43c7b8,%esi 0.00 : 4297ca: e8 b1 b5 00 00 callq 434d80 0.00 : 4297cf: 85 c0 test %eax,%eax 0.00 : 4297d1: 0f 85 46 fd ff ff jne 42951d 0.00 : 4297d7: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4297db: be d6 0f 45 00 mov $0x450fd6,%esi 0.00 : 4297e0: e8 9b b5 00 00 callq 434d80 0.00 : 4297e5: 85 c0 test %eax,%eax 0.00 : 4297e7: 0f 85 30 fd ff ff jne 42951d : pg_strcasecmp(prev5_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev4_wd, "VIEW") == 0 && : pg_strcasecmp(prev2_wd, "WITH") == 0 && : pg_strcasecmp(prev_wd, "NO") == 0) : COMPLETE_WITH_CONST("DATA"); 0.00 : 4297ed: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4297f1: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 4297f6: 48 c7 05 7f 17 24 00 movq $0x45112b,0x24177f(%rip) # 66af80 0.00 : 4297fd: 2b 11 45 00 0.00 : 429801: c6 05 a0 17 24 00 00 movb $0x0,0x2417a0(%rip) # 66afa8 0.00 : 429808: e8 c3 9f fd ff callq 4037d0 0.00 : 42980d: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev5_wd, "MATERIALIZED") == 0 && : pg_strcasecmp(prev4_wd, "VIEW") == 0 && : pg_strcasecmp(prev3_wd, "CONCURRENTLY") == 0 && : pg_strcasecmp(prev_wd, "WITH") == 0) : COMPLETE_WITH_CONST("DATA"); : else if (pg_strcasecmp(prev6_wd, "REFRESH") == 0 && 0.00 : 429810: e9 dd 87 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); : /* DROP OWNED BY */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "OWNED") == 0) : COMPLETE_WITH_CONST("BY"); 0.00 : 429815: 48 8b 7d 88 mov -0x78(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:2819 16.67 : 429819: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42981e: 48 c7 05 57 17 24 00 movq $0x451a29,0x241757(%rip) # 66af80 0.00 : 429825: 29 1a 45 00 0.00 : 429829: c6 05 78 17 24 00 00 movb $0x0,0x241778(%rip) # 66afa8 0.00 : 429830: e8 9b 9f fd ff callq 4037d0 0.00 : 429835: 48 89 c3 mov %rax,%rbx : (pg_strcasecmp(prev3_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev3_wd, "FUNCTION") == 0) && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); : /* DROP OWNED BY */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && 0.00 : 429838: e9 b5 87 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "OWNED") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 42983d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429841: be 29 1a 45 00 mov $0x451a29,%esi 0.00 : 429846: e8 35 b5 00 00 callq 434d80 0.00 : 42984b: 85 c0 test %eax,%eax 0.00 : 42984d: 0f 85 19 e4 ff ff jne 427c6c : pg_strcasecmp(prev2_wd, "OWNED") == 0 && : pg_strcasecmp(prev_wd, "BY") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 429853: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429857: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42985c: 48 c7 05 19 17 24 00 movq $0x451b48,0x241719(%rip) # 66af80 0.00 : 429863: 48 1b 45 00 0.00 : 429867: e8 64 9f fd ff callq 4037d0 0.00 : 42986c: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); : /* DROP OWNED BY */ : else if (pg_strcasecmp(prev2_wd, "DROP") == 0 && : pg_strcasecmp(prev_wd, "OWNED") == 0) : COMPLETE_WITH_CONST("BY"); : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 42986f: e9 7e 87 ff ff jmpq 421ff2 : : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && : (pg_strcasecmp(prev3_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev3_wd, "FUNCTION") == 0) && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); 0.00 : 429874: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429878: 8b 05 2a 18 24 00 mov 0x24182a(%rip),%eax # 66b0a8 0.00 : 42987e: 45 31 c9 xor %r9d,%r9d 0.00 : 429881: 45 31 c0 xor %r8d,%r8d 0.00 : 429884: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 429889: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42988e: be 33 64 44 00 mov $0x446433,%esi 0.00 : 429893: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42989a: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42989e: e8 9d 35 fe ff callq 40ce40 0.00 : 4298a3: 48 89 c3 mov %rax,%rbx 0.00 : 4298a6: 8b 05 fc 17 24 00 mov 0x2417fc(%rip),%eax # 66b0a8 0.00 : 4298ac: 45 31 c9 xor %r9d,%r9d 0.00 : 4298af: 45 31 c0 xor %r8d,%r8d 0.00 : 4298b2: 31 ff xor %edi,%edi 0.00 : 4298b4: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 4298b9: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4298be: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4298c3: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4298ca: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4298ce: e8 6d 35 fe ff callq 40ce40 0.00 : 4298d3: 8b 05 cf 17 24 00 mov 0x2417cf(%rip),%eax # 66b0a8 0.00 : 4298d9: 45 31 c9 xor %r9d,%r9d 0.00 : 4298dc: 45 31 c0 xor %r8d,%r8d 0.00 : 4298df: 31 ff xor %edi,%edi 0.00 : 4298e1: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 4298e6: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 4298eb: be 33 64 44 00 mov $0x446433,%esi 0.00 : 4298f0: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4298f7: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 4298fb: e8 40 35 fe ff callq 40ce40 0.00 : 429900: 48 85 c0 test %rax,%rax 0.00 : 429903: 74 62 je 429967 0.00 : 429905: 48 c7 05 70 16 24 00 movq $0x451cd0,0x241670(%rip) # 66af80 0.00 : 42990c: d0 1c 45 00 0.00 : 429910: 48 89 05 79 16 24 00 mov %rax,0x241679(%rip) # 66af90 0.00 : 429917: 48 89 1d 7a 16 24 00 mov %rbx,0x24167a(%rip) # 66af98 0.00 : 42991e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429922: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 429927: e8 a4 9e fd ff callq 4037d0 0.00 : 42992c: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "VIEW") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : } : : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 42992f: e9 be 86 ff ff jmpq 421ff2 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (pg_strcasecmp(prev_wd, "LANGUAGE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_languages); : else if (pg_strcasecmp(prev_wd, "SCHEMA") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_schemas); : else if (pg_strcasecmp(prev_wd, "TABLESPACE") == 0) 0.00 : 429934: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429938: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 42993d: e8 3e b4 00 00 callq 434d80 0.00 : 429942: 85 c0 test %eax,%eax 0.00 : 429944: 75 39 jne 42997f : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); 0.00 : 429946: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42994a: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42994f: 48 c7 05 26 16 24 00 movq $0x453168,0x241626(%rip) # 66af80 0.00 : 429956: 68 31 45 00 0.00 : 42995a: e8 71 9e fd ff callq 4037d0 0.00 : 42995f: 48 89 c3 mov %rax,%rbx 0.00 : 429962: e9 8b 86 ff ff jmpq 421ff2 : : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && : (pg_strcasecmp(prev3_wd, "AGGREGATE") == 0 || : pg_strcasecmp(prev3_wd, "FUNCTION") == 0) && : pg_strcasecmp(prev_wd, "(") == 0) : COMPLETE_WITH_FUNCTION_ARG(prev2_wd); 0.00 : 429967: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 42996b: 48 c7 05 0a 16 24 00 movq $0x451bd0,0x24160a(%rip) # 66af80 0.00 : 429972: d0 1b 45 00 0.00 : 429976: 48 89 05 13 16 24 00 mov %rax,0x241613(%rip) # 66af90 0.00 : 42997d: eb 9f jmp 42991e : COMPLETE_WITH_QUERY(Query_for_list_of_languages); : else if (pg_strcasecmp(prev_wd, "SCHEMA") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_schemas); : else if (pg_strcasecmp(prev_wd, "TABLESPACE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); : else if (pg_strcasecmp(prev_wd, "TYPE") == 0) 0.00 : 42997f: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429983: be e2 bf 43 00 mov $0x43bfe2,%esi 0.00 : 429988: e8 f3 b3 00 00 callq 434d80 0.00 : 42998d: 85 c0 test %eax,%eax 0.00 : 42998f: 0f 85 2c 01 00 00 jne 429ac1 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL); 0.00 : 429995: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429999: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42999e: 48 c7 05 f7 15 24 00 movq $0x4551c0,0x2415f7(%rip) # 66afa0 0.00 : 4299a5: c0 51 45 00 0.00 : 4299a9: 48 c7 05 cc 15 24 00 movq $0x0,0x2415cc(%rip) # 66af80 0.00 : 4299b0: 00 00 00 00 0.00 : 4299b4: e8 17 9e fd ff callq 4037d0 0.00 : 4299b9: 48 89 c3 mov %rax,%rbx 0.00 : 4299bc: e9 31 86 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 4299c1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 4299c5: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 4299ca: e8 b1 b3 00 00 callq 434d80 0.00 : 4299cf: 85 c0 test %eax,%eax 0.00 : 4299d1: 0f 85 0d e3 ff ff jne 427ce4 : pg_strcasecmp(prev3_wd, "TRIGGER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 4299d7: 48 8b 45 a8 mov -0x58(%rbp),%rax : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger); 0.00 : 4299db: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4299df: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 4299e4: 48 c7 05 91 15 24 00 movq $0x4521f0,0x241591(%rip) # 66af80 0.00 : 4299eb: f0 21 45 00 : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && : pg_strcasecmp(prev3_wd, "TRIGGER") == 0 && : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; 0.00 : 4299ef: 48 89 05 9a 15 24 00 mov %rax,0x24159a(%rip) # 66af90 : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger); 0.00 : 4299f6: e8 d5 9d fd ff callq 4037d0 0.00 : 4299fb: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_CONST("ON"); : } : else if (pg_strcasecmp(prev4_wd, "DROP") == 0 && 0.00 : 4299fe: e9 ef 85 ff ff jmpq 421ff2 : : /* DROP TRIGGER */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && : pg_strcasecmp(prev2_wd, "TRIGGER") == 0) : { : COMPLETE_WITH_CONST("ON"); 0.00 : 429a03: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429a07: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 429a0c: 48 c7 05 69 15 24 00 movq $0x4519c4,0x241569(%rip) # 66af80 0.00 : 429a13: c4 19 45 00 0.00 : 429a17: c6 05 8a 15 24 00 00 movb $0x0,0x24158a(%rip) # 66afa8 0.00 : 429a1e: e8 ad 9d fd ff callq 4037d0 0.00 : 429a23: 48 89 c3 mov %rax,%rbx : : COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH); : } : : /* DROP TRIGGER */ : else if (pg_strcasecmp(prev3_wd, "DROP") == 0 && 0.00 : 429a26: e9 c7 85 ff ff jmpq 421ff2 : static const char *const list_REINDEX[] = : {"TABLE", "INDEX", "SYSTEM", "DATABASE", NULL}; : : COMPLETE_WITH_LIST(list_REINDEX); : } : else if (pg_strcasecmp(prev2_wd, "REINDEX") == 0) 0.00 : 429a2b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429a2f: be 50 c6 43 00 mov $0x43c650,%esi 0.00 : 429a34: e8 47 b3 00 00 callq 434d80 0.00 : 429a39: 85 c0 test %eax,%eax 0.00 : 429a3b: 0f 85 00 01 00 00 jne 429b41 : { : if (pg_strcasecmp(prev_wd, "TABLE") == 0) 0.00 : 429a41: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429a45: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 429a4a: e8 31 b3 00 00 callq 434d80 0.00 : 429a4f: 85 c0 test %eax,%eax 0.00 : 429a51: 0f 85 a8 00 00 00 jne 429aff : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); 0.00 : 429a57: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429a5b: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 429a60: 48 c7 05 35 15 24 00 movq $0x455000,0x241535(%rip) # 66afa0 0.00 : 429a67: 00 50 45 00 0.00 : 429a6b: 48 c7 05 0a 15 24 00 movq $0x0,0x24150a(%rip) # 66af80 0.00 : 429a72: 00 00 00 00 0.00 : 429a76: e8 55 9d fd ff callq 4037d0 0.00 : 429a7b: 48 89 c3 mov %rax,%rbx 0.00 : 429a7e: e9 6f 85 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger); : } : else if (pg_strcasecmp(prev5_wd, "DROP") == 0 && 0.00 : 429a83: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429a87: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 429a8c: e8 ef b2 00 00 callq 434d80 0.00 : 429a91: 85 c0 test %eax,%eax 0.00 : 429a93: 0f 85 73 e2 ff ff jne 427d0c : pg_strcasecmp(prev2_wd, "ON") == 0) : { : static const char *const list_DROPCR[] = : {"CASCADE", "RESTRICT", NULL}; : : COMPLETE_WITH_LIST(list_DROPCR); 0.00 : 429a99: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429a9d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 429aa2: 48 c7 05 db 14 24 00 movq $0x455fa0,0x2414db(%rip) # 66af88 0.00 : 429aa9: a0 5f 45 00 0.00 : 429aad: c6 05 f4 14 24 00 00 movb $0x0,0x2414f4(%rip) # 66afa8 0.00 : 429ab4: e8 17 9d fd ff callq 4037d0 0.00 : 429ab9: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "ON") == 0) : { : completion_info_charp = prev2_wd; : COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger); : } : else if (pg_strcasecmp(prev5_wd, "DROP") == 0 && 0.00 : 429abc: e9 31 85 ff ff jmpq 421ff2 : COMPLETE_WITH_QUERY(Query_for_list_of_schemas); : else if (pg_strcasecmp(prev_wd, "TABLESPACE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); : else if (pg_strcasecmp(prev_wd, "TYPE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL); : else if (pg_strcasecmp(prev4_wd, "GRANT") == 0) 0.00 : 429ac1: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429ac5: be 39 c5 43 00 mov $0x43c539,%esi 0.00 : 429aca: e8 b1 b2 00 00 callq 434d80 0.00 : 429acf: 85 c0 test %eax,%eax 0.00 : 429ad1: 0f 85 a8 00 00 00 jne 429b7f : COMPLETE_WITH_CONST("TO"); 0.00 : 429ad7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429adb: be f0 bf 42 00 mov $0x42bff0,%esi /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:3097 16.67 : 429ae0: 48 c7 05 95 14 24 00 movq $0x450fe6,0x241495(%rip) # 66af80 0.00 : 429ae7: e6 0f 45 00 0.00 : 429aeb: c6 05 b6 14 24 00 00 movb $0x0,0x2414b6(%rip) # 66afa8 0.00 : 429af2: e8 d9 9c fd ff callq 4037d0 0.00 : 429af7: 48 89 c3 mov %rax,%rbx 0.00 : 429afa: e9 f3 84 ff ff jmpq 421ff2 : } : else if (pg_strcasecmp(prev2_wd, "REINDEX") == 0) : { : if (pg_strcasecmp(prev_wd, "TABLE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : else if (pg_strcasecmp(prev_wd, "INDEX") == 0) 0.00 : 429aff: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429b03: be 9f bd 43 00 mov $0x43bd9f,%esi 0.00 : 429b08: e8 73 b2 00 00 callq 434d80 0.00 : 429b0d: 85 c0 test %eax,%eax 0.00 : 429b0f: 0f 85 92 00 00 00 jne 429ba7 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL); 0.00 : 429b15: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429b19: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 429b1e: 48 c7 05 77 14 24 00 movq $0x454f80,0x241477(%rip) # 66afa0 0.00 : 429b25: 80 4f 45 00 0.00 : 429b29: 48 c7 05 4c 14 24 00 movq $0x0,0x24144c(%rip) # 66af80 0.00 : 429b30: 00 00 00 00 0.00 : 429b34: e8 97 9c fd ff callq 4037d0 0.00 : 429b39: 48 89 c3 mov %rax,%rbx 0.00 : 429b3c: e9 b1 84 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "DATABASE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_databases); : } : : /* SECURITY LABEL */ : else if (pg_strcasecmp(prev_wd, "SECURITY") == 0) 0.00 : 429b41: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429b45: be b3 19 45 00 mov $0x4519b3,%esi 0.00 : 429b4a: e8 31 b2 00 00 callq 434d80 0.00 : 429b4f: 85 c0 test %eax,%eax 0.00 : 429b51: 0f 85 99 00 00 00 jne 429bf0 : COMPLETE_WITH_CONST("LABEL"); 0.00 : 429b57: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429b5b: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 429b60: 48 c7 05 15 14 24 00 movq $0x43c6ea,0x241415(%rip) # 66af80 0.00 : 429b67: ea c6 43 00 0.00 : 429b6b: c6 05 36 14 24 00 00 movb $0x0,0x241436(%rip) # 66afa8 0.00 : 429b72: e8 59 9c fd ff callq 4037d0 0.00 : 429b77: 48 89 c3 mov %rax,%rbx 0.00 : 429b7a: e9 73 84 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "TYPE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL); : else if (pg_strcasecmp(prev4_wd, "GRANT") == 0) : COMPLETE_WITH_CONST("TO"); : else : COMPLETE_WITH_CONST("FROM"); 0.00 : 429b7f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429b83: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 429b88: 48 c7 05 ed 13 24 00 movq $0x451b17,0x2413ed(%rip) # 66af80 0.00 : 429b8f: 17 1b 45 00 0.00 : 429b93: c6 05 0e 14 24 00 00 movb $0x0,0x24140e(%rip) # 66afa8 0.00 : 429b9a: e8 31 9c fd ff callq 4037d0 0.00 : 429b9f: 48 89 c3 mov %rax,%rbx 0.00 : 429ba2: e9 4b 84 ff ff jmpq 421ff2 : { : if (pg_strcasecmp(prev_wd, "TABLE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); : else if (pg_strcasecmp(prev_wd, "INDEX") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL); : else if (pg_strcasecmp(prev_wd, "SYSTEM") == 0 || 0.00 : 429ba7: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429bab: be e1 ba 43 00 mov $0x43bae1,%esi 0.00 : 429bb0: e8 cb b1 00 00 callq 434d80 0.00 : 429bb5: 85 c0 test %eax,%eax 0.00 : 429bb7: 74 16 je 429bcf 0.00 : 429bb9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429bbd: be 67 bc 43 00 mov $0x43bc67,%esi 0.00 : 429bc2: e8 b9 b1 00 00 callq 434d80 0.00 : 429bc7: 85 c0 test %eax,%eax 0.00 : 429bc9: 0f 85 44 86 ff ff jne 422213 : pg_strcasecmp(prev_wd, "DATABASE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_databases); 0.00 : 429bcf: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429bd3: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 429bd8: 48 c7 05 9d 13 24 00 movq $0x4538f8,0x24139d(%rip) # 66af80 0.00 : 429bdf: f8 38 45 00 0.00 : 429be3: e8 e8 9b fd ff callq 4037d0 0.00 : 429be8: 48 89 c3 mov %rax,%rbx 0.00 : 429beb: e9 02 84 ff ff jmpq 421ff2 : } : : /* SECURITY LABEL */ : else if (pg_strcasecmp(prev_wd, "SECURITY") == 0) : COMPLETE_WITH_CONST("LABEL"); : else if (pg_strcasecmp(prev2_wd, "SECURITY") == 0 && 0.00 : 429bf0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429bf4: be b3 19 45 00 mov $0x4519b3,%esi 0.00 : 429bf9: e8 82 b1 00 00 callq 434d80 0.00 : 429bfe: 85 c0 test %eax,%eax 0.00 : 429c00: 75 16 jne 429c18 0.00 : 429c02: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429c06: be ea c6 43 00 mov $0x43c6ea,%esi 0.00 : 429c0b: e8 70 b1 00 00 callq 434d80 0.00 : 429c10: 85 c0 test %eax,%eax 0.00 : 429c12: 0f 84 25 0a 00 00 je 42a63d : static const char *const list_SECURITY_LABEL_preposition[] = : {"ON", "FOR"}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL_preposition); : } : else if (pg_strcasecmp(prev4_wd, "SECURITY") == 0 && 0.00 : 429c18: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429c1c: be b3 19 45 00 mov $0x4519b3,%esi 0.00 : 429c21: e8 5a b1 00 00 callq 434d80 0.00 : 429c26: 85 c0 test %eax,%eax 0.00 : 429c28: 75 16 jne 429c40 0.00 : 429c2a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429c2e: be ea c6 43 00 mov $0x43c6ea,%esi 0.00 : 429c33: e8 48 b1 00 00 callq 434d80 0.00 : 429c38: 85 c0 test %eax,%eax 0.00 : 429c3a: 0f 84 25 0a 00 00 je 42a665 : pg_strcasecmp(prev3_wd, "LABEL") == 0 && : pg_strcasecmp(prev2_wd, "FOR") == 0) : COMPLETE_WITH_CONST("ON"); : else if ((pg_strcasecmp(prev3_wd, "SECURITY") == 0 && 0.00 : 429c40: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429c44: be b3 19 45 00 mov $0x4519b3,%esi 0.00 : 429c49: e8 32 b1 00 00 callq 434d80 0.00 : 429c4e: 85 c0 test %eax,%eax 0.00 : 429c50: 75 16 jne 429c68 0.00 : 429c52: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429c56: be ea c6 43 00 mov $0x43c6ea,%esi 0.00 : 429c5b: e8 20 b1 00 00 callq 434d80 0.00 : 429c60: 85 c0 test %eax,%eax 0.00 : 429c62: 0f 84 46 0c 00 00 je 42a8ae 0.00 : 429c68: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 429c6c: be b3 19 45 00 mov $0x4519b3,%esi 0.00 : 429c71: e8 0a b1 00 00 callq 434d80 0.00 : 429c76: 85 c0 test %eax,%eax 0.00 : 429c78: 75 16 jne 429c90 0.00 : 429c7a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429c7e: be ea c6 43 00 mov $0x43c6ea,%esi 0.00 : 429c83: e8 f8 b0 00 00 callq 434d80 0.00 : 429c88: 85 c0 test %eax,%eax 0.00 : 429c8a: 0f 84 5c 0c 00 00 je 42a8ec : "MATERIALIZED VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "DOMAIN", : "LARGE OBJECT", NULL}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL); : } : else if (pg_strcasecmp(prev5_wd, "SECURITY") == 0 && 0.00 : 429c90: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 429c94: be b3 19 45 00 mov $0x4519b3,%esi 0.00 : 429c99: e8 e2 b0 00 00 callq 434d80 0.00 : 429c9e: 85 c0 test %eax,%eax 0.00 : 429ca0: 75 16 jne 429cb8 0.00 : 429ca2: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429ca6: be ea c6 43 00 mov $0x43c6ea,%esi 0.00 : 429cab: e8 d0 b0 00 00 callq 434d80 0.00 : 429cb0: 85 c0 test %eax,%eax 0.00 : 429cb2: 0f 84 8a 00 00 00 je 429d42 : /* SELECT */ : /* naah . . . */ : : /* SET, RESET, SHOW */ : /* Complete with a variable name */ : else if ((pg_strcasecmp(prev_wd, "SET") == 0 && 0.00 : 429cb8: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429cbc: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 429cc1: e8 ba b0 00 00 callq 434d80 0.00 : 429cc6: 85 c0 test %eax,%eax 0.00 : 429cc8: 75 12 jne 429cdc 0.00 : 429cca: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429cce: be ba 69 43 00 mov $0x4369ba,%esi 0.00 : 429cd3: e8 a8 b0 00 00 callq 434d80 0.00 : 429cd8: 85 c0 test %eax,%eax 0.00 : 429cda: 75 12 jne 429cee 0.00 : 429cdc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429ce0: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 429ce5: e8 96 b0 00 00 callq 434d80 0.00 : 429cea: 85 c0 test %eax,%eax 0.00 : 429cec: 75 21 jne 429d0f : pg_strcasecmp(prev3_wd, "UPDATE") != 0) || : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_set_vars); 0.00 : 429cee: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429cf2: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 429cf7: 48 c7 05 7e 12 24 00 movq $0x453b30,0x24127e(%rip) # 66af80 0.00 : 429cfe: 30 3b 45 00 0.00 : 429d02: e8 c9 9a fd ff callq 4037d0 0.00 : 429d07: 48 89 c3 mov %rax,%rbx : /* SELECT */ : /* naah . . . */ : : /* SET, RESET, SHOW */ : /* Complete with a variable name */ : else if ((pg_strcasecmp(prev_wd, "SET") == 0 && 0.00 : 429d0a: e9 e3 82 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "UPDATE") != 0) || : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_set_vars); : else if (pg_strcasecmp(prev_wd, "SHOW") == 0) 0.00 : 429d0f: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429d13: be 5b c7 43 00 mov $0x43c75b,%esi 0.00 : 429d18: e8 63 b0 00 00 callq 434d80 0.00 : 429d1d: 85 c0 test %eax,%eax 0.00 : 429d1f: 75 5f jne 429d80 : COMPLETE_WITH_QUERY(Query_for_list_of_show_vars); 0.00 : 429d21: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429d25: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 429d2a: 48 c7 05 4b 12 24 00 movq $0x453c88,0x24124b(%rip) # 66af80 0.00 : 429d31: 88 3c 45 00 0.00 : 429d35: e8 96 9a fd ff callq 4037d0 0.00 : 429d3a: 48 89 c3 mov %rax,%rbx 0.00 : 429d3d: e9 b0 82 ff ff jmpq 421ff2 : "MATERIALIZED VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "DOMAIN", : "LARGE OBJECT", NULL}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL); : } : else if (pg_strcasecmp(prev5_wd, "SECURITY") == 0 && 0.00 : 429d42: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429d46: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 429d4b: e8 30 b0 00 00 callq 434d80 0.00 : 429d50: 85 c0 test %eax,%eax 0.00 : 429d52: 0f 85 60 ff ff ff jne 429cb8 : pg_strcasecmp(prev4_wd, "LABEL") == 0 && : pg_strcasecmp(prev3_wd, "ON") == 0) : COMPLETE_WITH_CONST("IS"); 0.00 : 429d58: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 429d5c: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 429d61: 48 c7 05 14 12 24 00 movq $0x451033,0x241214(%rip) # 66af80 0.00 : 429d68: 33 10 45 00 0.00 : 429d6c: c6 05 35 12 24 00 00 movb $0x0,0x241235(%rip) # 66afa8 0.00 : 429d73: e8 58 9a fd ff callq 4037d0 0.00 : 429d78: 48 89 c3 mov %rax,%rbx : "MATERIALIZED VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "DOMAIN", : "LARGE OBJECT", NULL}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL); : } : else if (pg_strcasecmp(prev5_wd, "SECURITY") == 0 && 0.00 : 429d7b: e9 72 82 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_set_vars); : else if (pg_strcasecmp(prev_wd, "SHOW") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_show_vars); : /* Complete "SET TRANSACTION" */ : else if ((pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 429d80: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429d84: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 429d89: e8 f2 af 00 00 callq 434d80 0.00 : 429d8e: 85 c0 test %eax,%eax 0.00 : 429d90: 75 16 jne 429da8 0.00 : 429d92: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429d96: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429d9b: e8 e0 af 00 00 callq 434d80 0.00 : 429da0: 85 c0 test %eax,%eax 0.00 : 429da2: 0f 84 97 0a 00 00 je 42a83f 0.00 : 429da8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429dac: be 17 1a 45 00 mov $0x451a17,%esi 0.00 : 429db1: e8 ca af 00 00 callq 434d80 0.00 : 429db6: 85 c0 test %eax,%eax 0.00 : 429db8: 75 16 jne 429dd0 0.00 : 429dba: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429dbe: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429dc3: e8 b8 af 00 00 callq 434d80 0.00 : 429dc8: 85 c0 test %eax,%eax 0.00 : 429dca: 0f 84 6f 0a 00 00 je 42a83f 0.00 : 429dd0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429dd4: be 98 56 43 00 mov $0x435698,%esi 0.00 : 429dd9: e8 a2 af 00 00 callq 434d80 0.00 : 429dde: 85 c0 test %eax,%eax 0.00 : 429de0: 75 16 jne 429df8 0.00 : 429de2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429de6: be 30 11 45 00 mov $0x451130,%esi 0.00 : 429deb: e8 90 af 00 00 callq 434d80 0.00 : 429df0: 85 c0 test %eax,%eax 0.00 : 429df2: 0f 84 47 0a 00 00 je 42a83f 0.00 : 429df8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429dfc: be 98 56 43 00 mov $0x435698,%esi 0.00 : 429e01: e8 7a af 00 00 callq 434d80 0.00 : 429e06: 85 c0 test %eax,%eax 0.00 : 429e08: 75 16 jne 429e20 0.00 : 429e0a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429e0e: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429e13: e8 68 af 00 00 callq 434d80 0.00 : 429e18: 85 c0 test %eax,%eax 0.00 : 429e1a: 0f 84 1f 0a 00 00 je 42a83f 0.00 : 429e20: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429e24: be 35 11 45 00 mov $0x451135,%esi 0.00 : 429e29: e8 52 af 00 00 callq 434d80 0.00 : 429e2e: 85 c0 test %eax,%eax 0.00 : 429e30: 75 16 jne 429e48 0.00 : 429e32: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429e36: be 3d 11 45 00 mov $0x45113d,%esi 0.00 : 429e3b: e8 40 af 00 00 callq 434d80 0.00 : 429e40: 85 c0 test %eax,%eax 0.00 : 429e42: 0f 84 cb 09 00 00 je 42a813 : static const char *const my_list[] = : {"ISOLATION LEVEL", "READ", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev3_wd, "SET") == 0 0.00 : 429e48: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429e4c: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 429e51: e8 2a af 00 00 callq 434d80 0.00 : 429e56: 85 c0 test %eax,%eax 0.00 : 429e58: 74 16 je 429e70 0.00 : 429e5a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429e5e: be 98 56 43 00 mov $0x435698,%esi 0.00 : 429e63: e8 18 af 00 00 callq 434d80 0.00 : 429e68: 85 c0 test %eax,%eax 0.00 : 429e6a: 0f 85 f7 09 00 00 jne 42a867 0.00 : 429e70: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429e74: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429e79: e8 02 af 00 00 callq 434d80 0.00 : 429e7e: 85 c0 test %eax,%eax 0.00 : 429e80: 74 12 je 429e94 0.00 : 429e82: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429e86: be 30 11 45 00 mov $0x451130,%esi 0.00 : 429e8b: e8 f0 ae 00 00 callq 434d80 0.00 : 429e90: 85 c0 test %eax,%eax 0.00 : 429e92: 75 16 jne 429eaa 0.00 : 429e94: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429e98: be 4d 11 45 00 mov $0x45114d,%esi 0.00 : 429e9d: e8 de ae 00 00 callq 434d80 0.00 : 429ea2: 85 c0 test %eax,%eax 0.00 : 429ea4: 0f 84 f9 07 00 00 je 42a6a3 : && pg_strcasecmp(prev3_wd, "AS") == 0)) : && (pg_strcasecmp(prev2_wd, "TRANSACTION") == 0 : || pg_strcasecmp(prev2_wd, "WORK") == 0) : && pg_strcasecmp(prev_wd, "ISOLATION") == 0) : COMPLETE_WITH_CONST("LEVEL"); : else if ((pg_strcasecmp(prev4_wd, "SET") == 0 0.00 : 429eaa: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429eae: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 429eb3: e8 c8 ae 00 00 callq 434d80 0.00 : 429eb8: 85 c0 test %eax,%eax 0.00 : 429eba: 74 16 je 429ed2 0.00 : 429ebc: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429ec0: be 98 56 43 00 mov $0x435698,%esi 0.00 : 429ec5: e8 b6 ae 00 00 callq 434d80 0.00 : 429eca: 85 c0 test %eax,%eax 0.00 : 429ecc: 0f 85 37 08 00 00 jne 42a709 0.00 : 429ed2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429ed6: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429edb: e8 a0 ae 00 00 callq 434d80 0.00 : 429ee0: 85 c0 test %eax,%eax 0.00 : 429ee2: 74 12 je 429ef6 0.00 : 429ee4: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429ee8: be 30 11 45 00 mov $0x451130,%esi 0.00 : 429eed: e8 8e ae 00 00 callq 434d80 0.00 : 429ef2: 85 c0 test %eax,%eax 0.00 : 429ef4: 75 16 jne 429f0c 0.00 : 429ef6: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429efa: be 4d 11 45 00 mov $0x45114d,%esi 0.00 : 429eff: e8 7c ae 00 00 callq 434d80 0.00 : 429f04: 85 c0 test %eax,%eax 0.00 : 429f06: 0f 84 bf 07 00 00 je 42a6cb : static const char *const my_list[] = : {"READ", "REPEATABLE", "SERIALIZABLE", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev4_wd, "TRANSACTION") == 0 || 0.00 : 429f0c: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429f10: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429f15: e8 66 ae 00 00 callq 434d80 0.00 : 429f1a: 85 c0 test %eax,%eax 0.00 : 429f1c: 74 12 je 429f30 0.00 : 429f1e: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429f22: be 30 11 45 00 mov $0x451130,%esi 0.00 : 429f27: e8 54 ae 00 00 callq 434d80 0.00 : 429f2c: 85 c0 test %eax,%eax 0.00 : 429f2e: 75 16 jne 429f46 0.00 : 429f30: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429f34: be 4d 11 45 00 mov $0x45114d,%esi 0.00 : 429f39: e8 42 ae 00 00 callq 434d80 0.00 : 429f3e: 85 c0 test %eax,%eax 0.00 : 429f40: 0f 84 79 08 00 00 je 42a7bf : static const char *const my_list[] = : {"UNCOMMITTED", "COMMITTED", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev4_wd, "TRANSACTION") == 0 || 0.00 : 429f46: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 429f4a: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429f4f: e8 2c ae 00 00 callq 434d80 0.00 : 429f54: 85 c0 test %eax,%eax 0.00 : 429f56: 74 12 je 429f6a 0.00 : 429f58: 48 8b 7d b8 mov -0x48(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:3447 16.67 : 429f5c: be 30 11 45 00 mov $0x451130,%esi 0.00 : 429f61: e8 1a ae 00 00 callq 434d80 0.00 : 429f66: 85 c0 test %eax,%eax 0.00 : 429f68: 75 16 jne 429f80 0.00 : 429f6a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429f6e: be 4d 11 45 00 mov $0x45114d,%esi 0.00 : 429f73: e8 08 ae 00 00 callq 434d80 0.00 : 429f78: 85 c0 test %eax,%eax 0.00 : 429f7a: 0f 84 ba 07 00 00 je 42a73a : pg_strcasecmp(prev4_wd, "WORK") == 0) && : pg_strcasecmp(prev3_wd, "ISOLATION") == 0 && : pg_strcasecmp(prev2_wd, "LEVEL") == 0 && : pg_strcasecmp(prev_wd, "REPEATABLE") == 0) : COMPLETE_WITH_CONST("READ"); : else if ((pg_strcasecmp(prev3_wd, "SET") == 0 || 0.00 : 429f80: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429f84: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 429f89: e8 f2 ad 00 00 callq 434d80 0.00 : 429f8e: 85 c0 test %eax,%eax 0.00 : 429f90: 74 16 je 429fa8 0.00 : 429f92: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 429f96: be 98 56 43 00 mov $0x435698,%esi 0.00 : 429f9b: e8 e0 ad 00 00 callq 434d80 0.00 : 429fa0: 85 c0 test %eax,%eax 0.00 : 429fa2: 0f 85 e6 07 00 00 jne 42a78e 0.00 : 429fa8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429fac: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 429fb1: e8 ca ad 00 00 callq 434d80 0.00 : 429fb6: 85 c0 test %eax,%eax 0.00 : 429fb8: 74 12 je 429fcc 0.00 : 429fba: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429fbe: be 30 11 45 00 mov $0x451130,%esi 0.00 : 429fc3: e8 b8 ad 00 00 callq 434d80 0.00 : 429fc8: 85 c0 test %eax,%eax 0.00 : 429fca: 75 16 jne 429fe2 0.00 : 429fcc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429fd0: be 57 11 45 00 mov $0x451157,%esi 0.00 : 429fd5: e8 a6 ad 00 00 callq 434d80 0.00 : 429fda: 85 c0 test %eax,%eax 0.00 : 429fdc: 0f 84 d2 03 00 00 je 42a3b4 : {"ONLY", "WRITE", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : /* SET CONSTRAINTS */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 429fe2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 429fe6: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 429feb: e8 90 ad 00 00 callq 434d80 0.00 : 429ff0: 85 c0 test %eax,%eax 0.00 : 429ff2: 75 16 jne 42a00a 0.00 : 429ff4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 429ff8: be 1c c7 43 00 mov $0x43c71c,%esi 0.00 : 429ffd: e8 7e ad 00 00 callq 434d80 0.00 : 42a002: 85 c0 test %eax,%eax 0.00 : 42a004: 0f 84 2d 05 00 00 je 42a537 : pg_strcasecmp(prev_wd, "CONSTRAINTS") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_constraints_with_schema, "UNION SELECT 'ALL'"); : } : /* Complete SET CONSTRAINTS with DEFERRED|IMMEDIATE */ : else if (pg_strcasecmp(prev3_wd, "SET") == 0 && 0.00 : 42a00a: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a00e: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a013: e8 68 ad 00 00 callq 434d80 0.00 : 42a018: 85 c0 test %eax,%eax 0.00 : 42a01a: 75 16 jne 42a032 0.00 : 42a01c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a020: be 1c c7 43 00 mov $0x43c71c,%esi 0.00 : 42a025: e8 56 ad 00 00 callq 434d80 0.00 : 42a02a: 85 c0 test %eax,%eax 0.00 : 42a02c: 0f 84 bc 04 00 00 je 42a4ee : {"DEFERRED", "IMMEDIATE", NULL}; : : COMPLETE_WITH_LIST(constraint_list); : } : /* Complete SET ROLE */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a032: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a036: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a03b: e8 40 ad 00 00 callq 434d80 0.00 : 42a040: 85 c0 test %eax,%eax 0.00 : 42a042: 75 16 jne 42a05a 0.00 : 42a044: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a048: be 82 be 43 00 mov $0x43be82,%esi 0.00 : 42a04d: e8 2e ad 00 00 callq 434d80 0.00 : 42a052: 85 c0 test %eax,%eax 0.00 : 42a054: 0f 84 bc 04 00 00 je 42a516 : pg_strcasecmp(prev_wd, "ROLE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : /* Complete SET SESSION with AUTHORIZATION or CHARACTERISTICS... */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a05a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a05e: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a063: e8 18 ad 00 00 callq 434d80 0.00 : 42a068: 85 c0 test %eax,%eax 0.00 : 42a06a: 75 16 jne 42a082 0.00 : 42a06c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a070: be 35 11 45 00 mov $0x451135,%esi 0.00 : 42a075: e8 06 ad 00 00 callq 434d80 0.00 : 42a07a: 85 c0 test %eax,%eax 0.00 : 42a07c: 0f 84 5a 03 00 00 je 42a3dc : {"AUTHORIZATION", "CHARACTERISTICS AS TRANSACTION", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : /* Complete SET SESSION AUTHORIZATION with username */ : else if (pg_strcasecmp(prev3_wd, "SET") == 0 0.00 : 42a082: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a086: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a08b: e8 f0 ac 00 00 callq 434d80 0.00 : 42a090: 85 c0 test %eax,%eax 0.00 : 42a092: 75 16 jne 42a0aa 0.00 : 42a094: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a098: be 35 11 45 00 mov $0x451135,%esi 0.00 : 42a09d: e8 de ac 00 00 callq 434d80 0.00 : 42a0a2: 85 c0 test %eax,%eax 0.00 : 42a0a4: 0f 84 5a 03 00 00 je 42a404 : && pg_strcasecmp(prev2_wd, "SESSION") == 0 : && pg_strcasecmp(prev_wd, "AUTHORIZATION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles " UNION SELECT 'DEFAULT'"); : /* Complete RESET SESSION with AUTHORIZATION */ : else if (pg_strcasecmp(prev2_wd, "RESET") == 0 && 0.00 : 42a0aa: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a0ae: be 7a c6 43 00 mov $0x43c67a,%esi 0.00 : 42a0b3: e8 c8 ac 00 00 callq 434d80 0.00 : 42a0b8: 85 c0 test %eax,%eax 0.00 : 42a0ba: 75 16 jne 42a0d2 0.00 : 42a0bc: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a0c0: be 35 11 45 00 mov $0x451135,%esi 0.00 : 42a0c5: e8 b6 ac 00 00 callq 434d80 0.00 : 42a0ca: 85 c0 test %eax,%eax 0.00 : 42a0cc: 0f 84 69 03 00 00 je 42a43b : pg_strcasecmp(prev_wd, "SESSION") == 0) : COMPLETE_WITH_CONST("AUTHORIZATION"); : /* Complete SET with "TO" */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a0d2: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a0d6: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a0db: e8 a0 ac 00 00 callq 434d80 0.00 : 42a0e0: 85 c0 test %eax,%eax 0.00 : 42a0e2: 75 16 jne 42a0fa 0.00 : 42a0e4: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a0e8: be ba 69 43 00 mov $0x4369ba,%esi 0.00 : 42a0ed: e8 8e ac 00 00 callq 434d80 0.00 : 42a0f2: 85 c0 test %eax,%eax 0.00 : 42a0f4: 0f 85 69 03 00 00 jne 42a463 : prev_wd[strlen(prev_wd) - 1] != ')' && : prev_wd[strlen(prev_wd) - 1] != '=' && : pg_strcasecmp(prev4_wd, "DOMAIN") != 0) : COMPLETE_WITH_CONST("TO"); : /* Suggest possible variable values */ : else if (pg_strcasecmp(prev3_wd, "SET") == 0 && 0.00 : 42a0fa: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a0fe: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a103: e8 78 ac 00 00 callq 434d80 0.00 : 42a108: 85 c0 test %eax,%eax 0.00 : 42a10a: 75 5b jne 42a167 0.00 : 42a10c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a110: be e6 0f 45 00 mov $0x450fe6,%esi 0.00 : 42a115: e8 66 ac 00 00 callq 434d80 0.00 : 42a11a: 85 c0 test %eax,%eax 0.00 : 42a11c: 74 0f je 42a12d : (pg_strcasecmp(prev_wd, "TO") == 0 || strcmp(prev_wd, "=") == 0)) 0.00 : 42a11e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a122: 80 3f 3d cmpb $0x3d,(%rdi) 0.00 : 42a125: 75 44 jne 42a16b : prev_wd[strlen(prev_wd) - 1] != ')' && : prev_wd[strlen(prev_wd) - 1] != '=' && : pg_strcasecmp(prev4_wd, "DOMAIN") != 0) : COMPLETE_WITH_CONST("TO"); : /* Suggest possible variable values */ : else if (pg_strcasecmp(prev3_wd, "SET") == 0 && 0.00 : 42a127: 80 7f 01 00 cmpb $0x0,0x1(%rdi) 0.00 : 42a12b: 75 3e jne 42a16b : (pg_strcasecmp(prev_wd, "TO") == 0 || strcmp(prev_wd, "=") == 0)) : { : if (pg_strcasecmp(prev2_wd, "DateStyle") == 0) 0.00 : 42a12d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a131: be 7a 11 45 00 mov $0x45117a,%esi 0.00 : 42a136: e8 45 ac 00 00 callq 434d80 0.00 : 42a13b: 85 c0 test %eax,%eax 0.00 : 42a13d: 75 62 jne 42a1a1 : {"ISO", "SQL", "Postgres", "German", : "YMD", "DMY", "MDY", : "US", "European", "NonEuropean", : "DEFAULT", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a13f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a143: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a148: 48 c7 05 35 0e 24 00 movq $0x455b20,0x240e35(%rip) # 66af88 0.00 : 42a14f: 20 5b 45 00 0.00 : 42a153: c6 05 4e 0e 24 00 00 movb $0x0,0x240e4e(%rip) # 66afa8 0.00 : 42a15a: e8 71 96 fd ff callq 4037d0 0.00 : 42a15f: 48 89 c3 mov %rax,%rbx 0.00 : 42a162: e9 8b 7e ff ff jmpq 421ff2 : else : { : static const char *const my_list[] = : {"DEFAULT", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a167: 48 8b 7d a0 mov -0x60(%rbp),%rdi : } : } : : /* START TRANSACTION */ : else if (pg_strcasecmp(prev_wd, "START") == 0) 0.00 : 42a16b: be 17 1a 45 00 mov $0x451a17,%esi 0.00 : 42a170: e8 0b ac 00 00 callq 434d80 0.00 : 42a175: 85 c0 test %eax,%eax 0.00 : 42a177: 75 66 jne 42a1df : COMPLETE_WITH_CONST("TRANSACTION"); 0.00 : 42a179: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a17d: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42a182: 48 c7 05 f3 0d 24 00 movq $0x43c61b,0x240df3(%rip) # 66af80 0.00 : 42a189: 1b c6 43 00 0.00 : 42a18d: c6 05 14 0e 24 00 00 movb $0x0,0x240e14(%rip) # 66afa8 0.00 : 42a194: e8 37 96 fd ff callq 4037d0 0.00 : 42a199: 48 89 c3 mov %rax,%rbx 0.00 : 42a19c: e9 51 7e ff ff jmpq 421ff2 : "US", "European", "NonEuropean", : "DEFAULT", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if (pg_strcasecmp(prev2_wd, "IntervalStyle") == 0) 0.00 : 42a1a1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a1a5: be 84 11 45 00 mov $0x451184,%esi 0.00 : 42a1aa: e8 d1 ab 00 00 callq 434d80 0.00 : 42a1af: 85 c0 test %eax,%eax 0.00 : 42a1b1: 0f 85 89 00 00 00 jne 42a240 : { : static const char *const my_list[] = : {"postgres", "postgres_verbose", "sql_standard", "iso_8601", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a1b7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a1bb: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a1c0: 48 c7 05 bd 0d 24 00 movq $0x455ae0,0x240dbd(%rip) # 66af88 0.00 : 42a1c7: e0 5a 45 00 0.00 : 42a1cb: c6 05 d6 0d 24 00 00 movb $0x0,0x240dd6(%rip) # 66afa8 0.00 : 42a1d2: e8 f9 95 fd ff callq 4037d0 0.00 : 42a1d7: 48 89 c3 mov %rax,%rbx 0.00 : 42a1da: e9 13 7e ff ff jmpq 421ff2 : /* START TRANSACTION */ : else if (pg_strcasecmp(prev_wd, "START") == 0) : COMPLETE_WITH_CONST("TRANSACTION"); : : /* TABLE, but not TABLE embedded in other commands */ : else if (pg_strcasecmp(prev_wd, "TABLE") == 0 && 0.00 : 42a1df: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a1e3: be 10 bf 43 00 mov $0x43bf10,%esi 0.00 : 42a1e8: e8 93 ab 00 00 callq 434d80 0.00 : 42a1ed: 85 c0 test %eax,%eax 0.00 : 42a1ef: 75 0d jne 42a1fe 0.00 : 42a1f1: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 42a1f5: 80 38 00 cmpb $0x0,(%rax) 0.00 : 42a1f8: 0f 84 80 00 00 00 je 42a27e : prev2_wd[0] == '\0') : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_relations, NULL); : : /* TRUNCATE */ : else if (pg_strcasecmp(prev_wd, "TRUNCATE") == 0) 0.00 : 42a1fe: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a202: be 72 c7 43 00 mov $0x43c772,%esi 0.00 : 42a207: e8 74 ab 00 00 callq 434d80 0.00 : 42a20c: 85 c0 test %eax,%eax 0.00 : 42a20e: 0f 85 96 00 00 00 jne 42a2aa : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 42a214: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a218: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42a21d: 48 c7 05 78 0d 24 00 movq $0x454f40,0x240d78(%rip) # 66afa0 0.00 : 42a224: 40 4f 45 00 0.00 : 42a228: 48 c7 05 4d 0d 24 00 movq $0x0,0x240d4d(%rip) # 66af80 0.00 : 42a22f: 00 00 00 00 0.00 : 42a233: e8 98 95 fd ff callq 4037d0 0.00 : 42a238: 48 89 c3 mov %rax,%rbx 0.00 : 42a23b: e9 b2 7d ff ff jmpq 421ff2 : static const char *const my_list[] = : {"postgres", "postgres_verbose", "sql_standard", "iso_8601", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if (pg_strcasecmp(prev2_wd, "GEQO") == 0) 0.00 : 42a240: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a244: be 92 11 45 00 mov $0x451192,%esi 0.00 : 42a249: e8 32 ab 00 00 callq 434d80 0.00 : 42a24e: 85 c0 test %eax,%eax 0.00 : 42a250: 0f 85 87 00 00 00 jne 42a2dd : { : static const char *const my_list[] = : {"ON", "OFF", "DEFAULT", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a256: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a25a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a25f: 48 c7 05 1e 0d 24 00 movq $0x455ac0,0x240d1e(%rip) # 66af88 0.00 : 42a266: c0 5a 45 00 0.00 : 42a26a: c6 05 37 0d 24 00 00 movb $0x0,0x240d37(%rip) # 66afa8 0.00 : 42a271: e8 5a 95 fd ff callq 4037d0 0.00 : 42a276: 48 89 c3 mov %rax,%rbx 0.00 : 42a279: e9 74 7d ff ff jmpq 421ff2 : COMPLETE_WITH_CONST("TRANSACTION"); : : /* TABLE, but not TABLE embedded in other commands */ : else if (pg_strcasecmp(prev_wd, "TABLE") == 0 && : prev2_wd[0] == '\0') : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_relations, NULL); 0.00 : 42a27e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a282: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42a287: 48 c7 05 0e 0d 24 00 movq $0x455240,0x240d0e(%rip) # 66afa0 0.00 : 42a28e: 40 52 45 00 0.00 : 42a292: 48 c7 05 e3 0c 24 00 movq $0x0,0x240ce3(%rip) # 66af80 0.00 : 42a299: 00 00 00 00 0.00 : 42a29d: e8 2e 95 fd ff callq 4037d0 0.00 : 42a2a2: 48 89 c3 mov %rax,%rbx : /* START TRANSACTION */ : else if (pg_strcasecmp(prev_wd, "START") == 0) : COMPLETE_WITH_CONST("TRANSACTION"); : : /* TABLE, but not TABLE embedded in other commands */ : else if (pg_strcasecmp(prev_wd, "TABLE") == 0 && 0.00 : 42a2a5: e9 48 7d ff ff jmpq 421ff2 : /* TRUNCATE */ : else if (pg_strcasecmp(prev_wd, "TRUNCATE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : : /* UNLISTEN */ : else if (pg_strcasecmp(prev_wd, "UNLISTEN") == 0) 0.00 : 42a2aa: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a2ae: be 7b c7 43 00 mov $0x43c77b,%esi 0.00 : 42a2b3: e8 c8 aa 00 00 callq 434d80 0.00 : 42a2b8: 85 c0 test %eax,%eax 0.00 : 42a2ba: 75 54 jne 42a310 : COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(channel) FROM pg_catalog.pg_listening_channels() AS channel WHERE substring(pg_catalog.quote_ident(channel),1,%d)='%s' UNION SELECT '*'"); 0.00 : 42a2bc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a2c0: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42a2c5: 48 c7 05 b0 0c 24 00 movq $0x453ec0,0x240cb0(%rip) # 66af80 0.00 : 42a2cc: c0 3e 45 00 0.00 : 42a2d0: e8 fb 94 fd ff callq 4037d0 0.00 : 42a2d5: 48 89 c3 mov %rax,%rbx 0.00 : 42a2d8: e9 15 7d ff ff jmpq 421ff2 : static const char *const my_list[] = : {"ON", "OFF", "DEFAULT", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if (pg_strcasecmp(prev2_wd, "search_path") == 0) 0.00 : 42a2dd: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a2e1: be 97 11 45 00 mov $0x451197,%esi 0.00 : 42a2e6: e8 95 aa 00 00 callq 434d80 0.00 : 42a2eb: 85 c0 test %eax,%eax 0.00 : 42a2ed: 75 5f jne 42a34e : { : COMPLETE_WITH_QUERY(Query_for_list_of_schemas 0.00 : 42a2ef: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a2f3: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42a2f8: 48 c7 05 7d 0c 24 00 movq $0x453de0,0x240c7d(%rip) # 66af80 0.00 : 42a2ff: e0 3d 45 00 0.00 : 42a303: e8 c8 94 fd ff callq 4037d0 0.00 : 42a308: 48 89 c3 mov %rax,%rbx 0.00 : 42a30b: e9 e2 7c ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "UNLISTEN") == 0) : COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(channel) FROM pg_catalog.pg_listening_channels() AS channel WHERE substring(pg_catalog.quote_ident(channel),1,%d)='%s' UNION SELECT '*'"); : : /* UPDATE */ : /* If prev. word is UPDATE suggest a list of tables */ : else if (pg_strcasecmp(prev_wd, "UPDATE") == 0) 0.00 : 42a310: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a314: be ba 69 43 00 mov $0x4369ba,%esi 0.00 : 42a319: e8 62 aa 00 00 callq 434d80 0.00 : 42a31e: 85 c0 test %eax,%eax 0.00 : 42a320: 75 54 jne 42a376 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); 0.00 : 42a322: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a326: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42a32b: 48 c7 05 6a 0c 24 00 movq $0x455080,0x240c6a(%rip) # 66afa0 0.00 : 42a332: 80 50 45 00 0.00 : 42a336: 48 c7 05 3f 0c 24 00 movq $0x0,0x240c3f(%rip) # 66af80 0.00 : 42a33d: 00 00 00 00 0.00 : 42a341: e8 8a 94 fd ff callq 4037d0 0.00 : 42a346: 48 89 c3 mov %rax,%rbx 0.00 : 42a349: e9 a4 7c ff ff jmpq 421ff2 : else : { : static const char *const my_list[] = : {"DEFAULT", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a34e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a352: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a357: 48 c7 05 26 0c 24 00 movq $0x455aa0,0x240c26(%rip) # 66af88 0.00 : 42a35e: a0 5a 45 00 0.00 : 42a362: c6 05 3f 0c 24 00 00 movb $0x0,0x240c3f(%rip) # 66afa8 0.00 : 42a369: e8 62 94 fd ff callq 4037d0 0.00 : 42a36e: 48 89 c3 mov %rax,%rbx 0.00 : 42a371: e9 7c 7c ff ff jmpq 421ff2 : /* UPDATE */ : /* If prev. word is UPDATE suggest a list of tables */ : else if (pg_strcasecmp(prev_wd, "UPDATE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL); : /* Complete UPDATE
with "SET" */ : else if (pg_strcasecmp(prev2_wd, "UPDATE") == 0) 0.00 : 42a376: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a37a: be ba 69 43 00 mov $0x4369ba,%esi 0.00 : 42a37f: e8 fc a9 00 00 callq 434d80 0.00 : 42a384: 85 c0 test %eax,%eax 0.00 : 42a386: 0f 85 d7 01 00 00 jne 42a563 : COMPLETE_WITH_CONST("SET"); 0.00 : 42a38c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a390: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42a395: 48 c7 05 e0 0b 24 00 movq $0x43c67c,0x240be0(%rip) # 66af80 0.00 : 42a39c: 7c c6 43 00 0.00 : 42a3a0: c6 05 01 0c 24 00 00 movb $0x0,0x240c01(%rip) # 66afa8 0.00 : 42a3a7: e8 24 94 fd ff callq 4037d0 0.00 : 42a3ac: 48 89 c3 mov %rax,%rbx 0.00 : 42a3af: e9 3e 7c ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "READ") == 0) : { : static const char *const my_list[] = : {"ONLY", "WRITE", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a3b4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a3b8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a3bd: 48 c7 05 c0 0b 24 00 movq $0x455bc0,0x240bc0(%rip) # 66af88 0.00 : 42a3c4: c0 5b 45 00 0.00 : 42a3c8: c6 05 d9 0b 24 00 00 movb $0x0,0x240bd9(%rip) # 66afa8 0.00 : 42a3cf: e8 fc 93 fd ff callq 4037d0 0.00 : 42a3d4: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev4_wd, "WORK") == 0) && : pg_strcasecmp(prev3_wd, "ISOLATION") == 0 && : pg_strcasecmp(prev2_wd, "LEVEL") == 0 && : pg_strcasecmp(prev_wd, "REPEATABLE") == 0) : COMPLETE_WITH_CONST("READ"); : else if ((pg_strcasecmp(prev3_wd, "SET") == 0 || 0.00 : 42a3d7: e9 16 7c ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "SESSION") == 0) : { : static const char *const my_list[] = : {"AUTHORIZATION", "CHARACTERISTICS AS TRANSACTION", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a3dc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a3e0: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a3e5: 48 c7 05 98 0b 24 00 movq $0x455b80,0x240b98(%rip) # 66af88 0.00 : 42a3ec: 80 5b 45 00 0.00 : 42a3f0: c6 05 b1 0b 24 00 00 movb $0x0,0x240bb1(%rip) # 66afa8 0.00 : 42a3f7: e8 d4 93 fd ff callq 4037d0 0.00 : 42a3fc: 48 89 c3 mov %rax,%rbx : /* Complete SET ROLE */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev_wd, "ROLE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : /* Complete SET SESSION with AUTHORIZATION or CHARACTERISTICS... */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a3ff: e9 ee 7b ff ff jmpq 421ff2 : {"AUTHORIZATION", "CHARACTERISTICS AS TRANSACTION", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : /* Complete SET SESSION AUTHORIZATION with username */ : else if (pg_strcasecmp(prev3_wd, "SET") == 0 0.00 : 42a404: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a408: be 3d c7 43 00 mov $0x43c73d,%esi 0.00 : 42a40d: e8 6e a9 00 00 callq 434d80 0.00 : 42a412: 85 c0 test %eax,%eax 0.00 : 42a414: 0f 85 90 fc ff ff jne 42a0aa : && pg_strcasecmp(prev2_wd, "SESSION") == 0 : && pg_strcasecmp(prev_wd, "AUTHORIZATION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles " UNION SELECT 'DEFAULT'"); 0.00 : 42a41a: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a41e: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42a423: 48 c7 05 52 0b 24 00 movq $0x453d48,0x240b52(%rip) # 66af80 0.00 : 42a42a: 48 3d 45 00 0.00 : 42a42e: e8 9d 93 fd ff callq 4037d0 0.00 : 42a433: 48 89 c3 mov %rax,%rbx : {"AUTHORIZATION", "CHARACTERISTICS AS TRANSACTION", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : /* Complete SET SESSION AUTHORIZATION with username */ : else if (pg_strcasecmp(prev3_wd, "SET") == 0 0.00 : 42a436: e9 b7 7b ff ff jmpq 421ff2 : && pg_strcasecmp(prev_wd, "AUTHORIZATION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles " UNION SELECT 'DEFAULT'"); : /* Complete RESET SESSION with AUTHORIZATION */ : else if (pg_strcasecmp(prev2_wd, "RESET") == 0 && : pg_strcasecmp(prev_wd, "SESSION") == 0) : COMPLETE_WITH_CONST("AUTHORIZATION"); 0.00 : 42a43b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a43f: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42a444: 48 c7 05 31 0b 24 00 movq $0x43c73d,0x240b31(%rip) # 66af80 0.00 : 42a44b: 3d c7 43 00 0.00 : 42a44f: c6 05 52 0b 24 00 00 movb $0x0,0x240b52(%rip) # 66afa8 0.00 : 42a456: e8 75 93 fd ff callq 4037d0 0.00 : 42a45b: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev3_wd, "SET") == 0 : && pg_strcasecmp(prev2_wd, "SESSION") == 0 : && pg_strcasecmp(prev_wd, "AUTHORIZATION") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles " UNION SELECT 'DEFAULT'"); : /* Complete RESET SESSION with AUTHORIZATION */ : else if (pg_strcasecmp(prev2_wd, "RESET") == 0 && 0.00 : 42a45e: e9 8f 7b ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "SESSION") == 0) : COMPLETE_WITH_CONST("AUTHORIZATION"); : /* Complete SET with "TO" */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a463: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a467: be 40 bf 43 00 mov $0x43bf40,%esi 0.00 : 42a46c: e8 0f a9 00 00 callq 434d80 0.00 : 42a471: 85 c0 test %eax,%eax 0.00 : 42a473: 0f 84 81 fc ff ff je 42a0fa 0.00 : 42a479: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a47d: be b4 be 43 00 mov $0x43beb4,%esi 0.00 : 42a482: e8 f9 a8 00 00 callq 434d80 0.00 : 42a487: 85 c0 test %eax,%eax 0.00 : 42a489: 0f 84 6b fc ff ff je 42a0fa 0.00 : 42a48f: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 42a493: 48 89 df mov %rbx,%rdi 0.00 : 42a496: e8 e5 93 fd ff callq 403880 0.00 : 42a49b: 0f b6 44 03 ff movzbl -0x1(%rbx,%rax,1),%eax 0.00 : 42a4a0: 3c 29 cmp $0x29,%al 0.00 : 42a4a2: 0f 84 52 fc ff ff je 42a0fa 0.00 : 42a4a8: 3c 3d cmp $0x3d,%al 0.00 : 42a4aa: 0f 84 4a fc ff ff je 42a0fa 0.00 : 42a4b0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a4b4: be 8d bc 43 00 mov $0x43bc8d,%esi 0.00 : 42a4b9: e8 c2 a8 00 00 callq 434d80 0.00 : 42a4be: 85 c0 test %eax,%eax 0.00 : 42a4c0: 0f 84 34 fc ff ff je 42a0fa : pg_strcasecmp(prev_wd, "TABLESPACE") != 0 && : pg_strcasecmp(prev_wd, "SCHEMA") != 0 && : prev_wd[strlen(prev_wd) - 1] != ')' && : prev_wd[strlen(prev_wd) - 1] != '=' && : pg_strcasecmp(prev4_wd, "DOMAIN") != 0) : COMPLETE_WITH_CONST("TO"); 0.00 : 42a4c6: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a4ca: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42a4cf: 48 c7 05 a6 0a 24 00 movq $0x450fe6,0x240aa6(%rip) # 66af80 0.00 : 42a4d6: e6 0f 45 00 0.00 : 42a4da: c6 05 c7 0a 24 00 00 movb $0x0,0x240ac7(%rip) # 66afa8 0.00 : 42a4e1: e8 ea 92 fd ff callq 4037d0 0.00 : 42a4e6: 48 89 c3 mov %rax,%rbx : /* Complete RESET SESSION with AUTHORIZATION */ : else if (pg_strcasecmp(prev2_wd, "RESET") == 0 && : pg_strcasecmp(prev_wd, "SESSION") == 0) : COMPLETE_WITH_CONST("AUTHORIZATION"); : /* Complete SET with "TO" */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a4e9: e9 04 7b ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "CONSTRAINTS") == 0) : { : static const char *const constraint_list[] = : {"DEFERRED", "IMMEDIATE", NULL}; : : COMPLETE_WITH_LIST(constraint_list); 0.00 : 42a4ee: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a4f2: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a4f7: 48 c7 05 86 0a 24 00 movq $0x455ba0,0x240a86(%rip) # 66af88 0.00 : 42a4fe: a0 5b 45 00 0.00 : 42a502: c6 05 9f 0a 24 00 00 movb $0x0,0x240a9f(%rip) # 66afa8 0.00 : 42a509: e8 c2 92 fd ff callq 4037d0 0.00 : 42a50e: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "CONSTRAINTS") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_constraints_with_schema, "UNION SELECT 'ALL'"); : } : /* Complete SET CONSTRAINTS with DEFERRED|IMMEDIATE */ : else if (pg_strcasecmp(prev3_wd, "SET") == 0 && 0.00 : 42a511: e9 dc 7a ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(constraint_list); : } : /* Complete SET ROLE */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev_wd, "ROLE") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 42a516: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a51a: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42a51f: 48 c7 05 56 0a 24 00 movq $0x451b48,0x240a56(%rip) # 66af80 0.00 : 42a526: 48 1b 45 00 0.00 : 42a52a: e8 a1 92 fd ff callq 4037d0 0.00 : 42a52f: 48 89 c3 mov %rax,%rbx : {"DEFERRED", "IMMEDIATE", NULL}; : : COMPLETE_WITH_LIST(constraint_list); : } : /* Complete SET ROLE */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a532: e9 bb 7a ff ff jmpq 421ff2 : } : /* SET CONSTRAINTS */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev_wd, "CONSTRAINTS") == 0) : { : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_constraints_with_schema, "UNION SELECT 'ALL'"); 0.00 : 42a537: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a53b: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42a540: 48 c7 05 55 0a 24 00 movq $0x455200,0x240a55(%rip) # 66afa0 0.00 : 42a547: 00 52 45 00 0.00 : 42a54b: 48 c7 05 2a 0a 24 00 movq $0x451167,0x240a2a(%rip) # 66af80 0.00 : 42a552: 67 11 45 00 0.00 : 42a556: e8 75 92 fd ff callq 4037d0 0.00 : 42a55b: 48 89 c3 mov %rax,%rbx : {"ONLY", "WRITE", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : /* SET CONSTRAINTS */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a55e: e9 8f 7a ff ff jmpq 421ff2 : /* : * If the previous word is SET (and it wasn't caught above as the _first_ : * word) the word before it was (hopefully) a table name and we'll now : * make a list of attributes. : */ : else if (pg_strcasecmp(prev_wd, "SET") == 0) 0.00 : 42a563: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a567: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a56c: e8 0f a8 00 00 callq 434d80 0.00 : 42a571: 85 c0 test %eax,%eax 0.00 : 42a573: 0f 85 bc 03 00 00 jne 42a935 : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 42a579: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a57d: 8b 05 25 0b 24 00 mov 0x240b25(%rip),%eax # 66b0a8 0.00 : 42a583: 45 31 c9 xor %r9d,%r9d 0.00 : 42a586: 45 31 c0 xor %r8d,%r8d 0.00 : 42a589: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42a58e: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42a593: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42a598: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42a59f: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42a5a3: e8 98 28 fe ff callq 40ce40 0.00 : 42a5a8: 48 89 c3 mov %rax,%rbx 0.00 : 42a5ab: 8b 05 f7 0a 24 00 mov 0x240af7(%rip),%eax # 66b0a8 0.00 : 42a5b1: 45 31 c9 xor %r9d,%r9d 0.00 : 42a5b4: 45 31 c0 xor %r8d,%r8d 0.00 : 42a5b7: 31 ff xor %edi,%edi 0.00 : 42a5b9: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42a5be: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42a5c3: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42a5c8: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42a5cf: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42a5d3: e8 68 28 fe ff callq 40ce40 0.00 : 42a5d8: 8b 05 ca 0a 24 00 mov 0x240aca(%rip),%eax # 66b0a8 0.00 : 42a5de: 45 31 c9 xor %r9d,%r9d 0.00 : 42a5e1: 45 31 c0 xor %r8d,%r8d 0.00 : 42a5e4: 31 ff xor %edi,%edi 0.00 : 42a5e6: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42a5eb: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42a5f0: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42a5f5: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42a5fc: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42a600: e8 3b 28 fe ff callq 40ce40 0.00 : 42a605: 48 85 c0 test %rax,%rax 0.00 : 42a608: 0f 84 0c 03 00 00 je 42a91a 0.00 : 42a60e: 48 c7 05 67 09 24 00 movq $0x452d68,0x240967(%rip) # 66af80 0.00 : 42a615: 68 2d 45 00 0.00 : 42a619: 48 89 05 70 09 24 00 mov %rax,0x240970(%rip) # 66af90 0.00 : 42a620: 48 89 1d 71 09 24 00 mov %rbx,0x240971(%rip) # 66af98 0.00 : 42a627: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a62b: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42a630: e8 9b 91 fd ff callq 4037d0 0.00 : 42a635: 48 89 c3 mov %rax,%rbx 0.00 : 42a638: e9 b5 79 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "LABEL") == 0) : { : static const char *const list_SECURITY_LABEL_preposition[] = : {"ON", "FOR"}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL_preposition); 0.00 : 42a63d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a641: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a646: 48 c7 05 37 09 24 00 movq $0x455cb0,0x240937(%rip) # 66af88 0.00 : 42a64d: b0 5c 45 00 0.00 : 42a651: c6 05 50 09 24 00 00 movb $0x0,0x240950(%rip) # 66afa8 0.00 : 42a658: e8 73 91 fd ff callq 4037d0 0.00 : 42a65d: 48 89 c3 mov %rax,%rbx : } : : /* SECURITY LABEL */ : else if (pg_strcasecmp(prev_wd, "SECURITY") == 0) : COMPLETE_WITH_CONST("LABEL"); : else if (pg_strcasecmp(prev2_wd, "SECURITY") == 0 && 0.00 : 42a660: e9 8d 79 ff ff jmpq 421ff2 : static const char *const list_SECURITY_LABEL_preposition[] = : {"ON", "FOR"}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL_preposition); : } : else if (pg_strcasecmp(prev4_wd, "SECURITY") == 0 && 0.00 : 42a665: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a669: be 30 18 45 00 mov $0x451830,%esi 0.00 : 42a66e: e8 0d a7 00 00 callq 434d80 0.00 : 42a673: 85 c0 test %eax,%eax 0.00 : 42a675: 0f 85 c5 f5 ff ff jne 429c40 : pg_strcasecmp(prev3_wd, "LABEL") == 0 && : pg_strcasecmp(prev2_wd, "FOR") == 0) : COMPLETE_WITH_CONST("ON"); 0.00 : 42a67b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a67f: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42a684: 48 c7 05 f1 08 24 00 movq $0x4519c4,0x2408f1(%rip) # 66af80 0.00 : 42a68b: c4 19 45 00 0.00 : 42a68f: c6 05 12 09 24 00 00 movb $0x0,0x240912(%rip) # 66afa8 0.00 : 42a696: e8 35 91 fd ff callq 4037d0 0.00 : 42a69b: 48 89 c3 mov %rax,%rbx : static const char *const list_SECURITY_LABEL_preposition[] = : {"ON", "FOR"}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL_preposition); : } : else if (pg_strcasecmp(prev4_wd, "SECURITY") == 0 && 0.00 : 42a69e: e9 4f 79 ff ff jmpq 421ff2 : || (pg_strcasecmp(prev4_wd, "CHARACTERISTICS") == 0 : && pg_strcasecmp(prev3_wd, "AS") == 0)) : && (pg_strcasecmp(prev2_wd, "TRANSACTION") == 0 : || pg_strcasecmp(prev2_wd, "WORK") == 0) : && pg_strcasecmp(prev_wd, "ISOLATION") == 0) : COMPLETE_WITH_CONST("LEVEL"); 0.00 : 42a6a3: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a6a7: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42a6ac: 48 c7 05 c9 08 24 00 movq $0x451588,0x2408c9(%rip) # 66af80 0.00 : 42a6b3: 88 15 45 00 0.00 : 42a6b7: c6 05 ea 08 24 00 00 movb $0x0,0x2408ea(%rip) # 66afa8 0.00 : 42a6be: e8 0d 91 fd ff callq 4037d0 0.00 : 42a6c3: 48 89 c3 mov %rax,%rbx : static const char *const my_list[] = : {"ISOLATION LEVEL", "READ", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev3_wd, "SET") == 0 0.00 : 42a6c6: e9 27 79 ff ff jmpq 421ff2 : && pg_strcasecmp(prev3_wd, "AS") == 0)) : && (pg_strcasecmp(prev2_wd, "TRANSACTION") == 0 : || pg_strcasecmp(prev2_wd, "WORK") == 0) : && pg_strcasecmp(prev_wd, "ISOLATION") == 0) : COMPLETE_WITH_CONST("LEVEL"); : else if ((pg_strcasecmp(prev4_wd, "SET") == 0 0.00 : 42a6cb: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a6cf: be 88 15 45 00 mov $0x451588,%esi 0.00 : 42a6d4: e8 a7 a6 00 00 callq 434d80 0.00 : 42a6d9: 85 c0 test %eax,%eax 0.00 : 42a6db: 0f 85 2b f8 ff ff jne 429f0c : && pg_strcasecmp(prev_wd, "LEVEL") == 0) : { : static const char *const my_list[] = : {"READ", "REPEATABLE", "SERIALIZABLE", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a6e1: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a6e5: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a6ea: 48 c7 05 93 08 24 00 movq $0x455c00,0x240893(%rip) # 66af88 0.00 : 42a6f1: 00 5c 45 00 0.00 : 42a6f5: c6 05 ac 08 24 00 00 movb $0x0,0x2408ac(%rip) # 66afa8 0.00 : 42a6fc: e8 cf 90 fd ff callq 4037d0 0.00 : 42a701: 48 89 c3 mov %rax,%rbx : && pg_strcasecmp(prev3_wd, "AS") == 0)) : && (pg_strcasecmp(prev2_wd, "TRANSACTION") == 0 : || pg_strcasecmp(prev2_wd, "WORK") == 0) : && pg_strcasecmp(prev_wd, "ISOLATION") == 0) : COMPLETE_WITH_CONST("LEVEL"); : else if ((pg_strcasecmp(prev4_wd, "SET") == 0 0.00 : 42a704: e9 e9 78 ff ff jmpq 421ff2 0.00 : 42a709: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a70d: be 17 1a 45 00 mov $0x451a17,%esi 0.00 : 42a712: e8 69 a6 00 00 callq 434d80 0.00 : 42a717: 85 c0 test %eax,%eax 0.00 : 42a719: 0f 84 b3 f7 ff ff je 429ed2 0.00 : 42a71f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a723: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 42a728: e8 53 a6 00 00 callq 434d80 0.00 : 42a72d: 85 c0 test %eax,%eax 0.00 : 42a72f: 0f 85 d7 f7 ff ff jne 429f0c 0.00 : 42a735: e9 98 f7 ff ff jmpq 429ed2 : static const char *const my_list[] = : {"UNCOMMITTED", "COMMITTED", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev4_wd, "TRANSACTION") == 0 || 0.00 : 42a73a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a73e: be 88 15 45 00 mov $0x451588,%esi 0.00 : 42a743: e8 38 a6 00 00 callq 434d80 0.00 : 42a748: 85 c0 test %eax,%eax 0.00 : 42a74a: 0f 85 30 f8 ff ff jne 429f80 0.00 : 42a750: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a754: be 5c 11 45 00 mov $0x45115c,%esi 0.00 : 42a759: e8 22 a6 00 00 callq 434d80 0.00 : 42a75e: 85 c0 test %eax,%eax 0.00 : 42a760: 0f 85 1a f8 ff ff jne 429f80 : pg_strcasecmp(prev4_wd, "WORK") == 0) && : pg_strcasecmp(prev3_wd, "ISOLATION") == 0 && : pg_strcasecmp(prev2_wd, "LEVEL") == 0 && : pg_strcasecmp(prev_wd, "REPEATABLE") == 0) : COMPLETE_WITH_CONST("READ"); 0.00 : 42a766: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a76a: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42a76f: 48 c7 05 06 08 24 00 movq $0x451157,0x240806(%rip) # 66af80 0.00 : 42a776: 57 11 45 00 0.00 : 42a77a: c6 05 27 08 24 00 00 movb $0x0,0x240827(%rip) # 66afa8 0.00 : 42a781: e8 4a 90 fd ff callq 4037d0 0.00 : 42a786: 48 89 c3 mov %rax,%rbx : static const char *const my_list[] = : {"UNCOMMITTED", "COMMITTED", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev4_wd, "TRANSACTION") == 0 || 0.00 : 42a789: e9 64 78 ff ff jmpq 421ff2 : pg_strcasecmp(prev4_wd, "WORK") == 0) && : pg_strcasecmp(prev3_wd, "ISOLATION") == 0 && : pg_strcasecmp(prev2_wd, "LEVEL") == 0 && : pg_strcasecmp(prev_wd, "REPEATABLE") == 0) : COMPLETE_WITH_CONST("READ"); : else if ((pg_strcasecmp(prev3_wd, "SET") == 0 || 0.00 : 42a78e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a792: be 17 1a 45 00 mov $0x451a17,%esi 0.00 : 42a797: e8 e4 a5 00 00 callq 434d80 0.00 : 42a79c: 85 c0 test %eax,%eax 0.00 : 42a79e: 0f 84 04 f8 ff ff je 429fa8 0.00 : 42a7a4: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a7a8: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 42a7ad: e8 ce a5 00 00 callq 434d80 0.00 : 42a7b2: 85 c0 test %eax,%eax 0.00 : 42a7b4: 0f 85 28 f8 ff ff jne 429fe2 0.00 : 42a7ba: e9 e9 f7 ff ff jmpq 429fa8 : static const char *const my_list[] = : {"READ", "REPEATABLE", "SERIALIZABLE", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev4_wd, "TRANSACTION") == 0 || 0.00 : 42a7bf: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a7c3: be 88 15 45 00 mov $0x451588,%esi 0.00 : 42a7c8: e8 b3 a5 00 00 callq 434d80 0.00 : 42a7cd: 85 c0 test %eax,%eax 0.00 : 42a7cf: 0f 85 71 f7 ff ff jne 429f46 0.00 : 42a7d5: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a7d9: be 57 11 45 00 mov $0x451157,%esi 0.00 : 42a7de: e8 9d a5 00 00 callq 434d80 0.00 : 42a7e3: 85 c0 test %eax,%eax 0.00 : 42a7e5: 0f 85 5b f7 ff ff jne 429f46 : pg_strcasecmp(prev_wd, "READ") == 0) : { : static const char *const my_list[] = : {"UNCOMMITTED", "COMMITTED", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a7eb: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a7ef: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a7f4: 48 c7 05 89 07 24 00 movq $0x455be0,0x240789(%rip) # 66af88 0.00 : 42a7fb: e0 5b 45 00 0.00 : 42a7ff: c6 05 a2 07 24 00 00 movb $0x0,0x2407a2(%rip) # 66afa8 0.00 : 42a806: e8 c5 8f fd ff callq 4037d0 0.00 : 42a80b: 48 89 c3 mov %rax,%rbx : static const char *const my_list[] = : {"READ", "REPEATABLE", "SERIALIZABLE", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev4_wd, "TRANSACTION") == 0 || 0.00 : 42a80e: e9 df 77 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_set_vars); : else if (pg_strcasecmp(prev_wd, "SHOW") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_show_vars); : /* Complete "SET TRANSACTION" */ : else if ((pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a813: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a817: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 42a81c: e8 5f a5 00 00 callq 434d80 0.00 : 42a821: 85 c0 test %eax,%eax 0.00 : 42a823: 0f 85 1f f6 ff ff jne 429e48 0.00 : 42a829: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a82d: be 1b c6 43 00 mov $0x43c61b,%esi 0.00 : 42a832: e8 49 a5 00 00 callq 434d80 0.00 : 42a837: 85 c0 test %eax,%eax 0.00 : 42a839: 0f 85 09 f6 ff ff jne 429e48 : && pg_strcasecmp(prev_wd, "TRANSACTION") == 0)) : { : static const char *const my_list[] = : {"ISOLATION LEVEL", "READ", NULL}; : : COMPLETE_WITH_LIST(my_list); 0.00 : 42a83f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a843: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a848: 48 c7 05 35 07 24 00 movq $0x455c20,0x240735(%rip) # 66af88 0.00 : 42a84f: 20 5c 45 00 0.00 : 42a853: c6 05 4e 07 24 00 00 movb $0x0,0x24074e(%rip) # 66afa8 0.00 : 42a85a: e8 71 8f fd ff callq 4037d0 0.00 : 42a85f: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "RESET") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_set_vars); : else if (pg_strcasecmp(prev_wd, "SHOW") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_show_vars); : /* Complete "SET TRANSACTION" */ : else if ((pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a862: e9 8b 77 ff ff jmpq 421ff2 : static const char *const my_list[] = : {"ISOLATION LEVEL", "READ", NULL}; : : COMPLETE_WITH_LIST(my_list); : } : else if ((pg_strcasecmp(prev3_wd, "SET") == 0 0.00 : 42a867: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a86b: be 17 1a 45 00 mov $0x451a17,%esi 0.00 : 42a870: e8 0b a5 00 00 callq 434d80 0.00 : 42a875: 85 c0 test %eax,%eax 0.00 : 42a877: 0f 84 f3 f5 ff ff je 429e70 0.00 : 42a87d: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a881: be 3d 11 45 00 mov $0x45113d,%esi 0.00 : 42a886: e8 f5 a4 00 00 callq 434d80 0.00 : 42a88b: 85 c0 test %eax,%eax 0.00 : 42a88d: 0f 85 17 f6 ff ff jne 429eaa 0.00 : 42a893: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a897: be 36 bf 43 00 mov $0x43bf36,%esi 0.00 : 42a89c: e8 df a4 00 00 callq 434d80 0.00 : 42a8a1: 85 c0 test %eax,%eax 0.00 : 42a8a3: 0f 85 01 f6 ff ff jne 429eaa 0.00 : 42a8a9: e9 c2 f5 ff ff jmpq 429e70 : } : else if (pg_strcasecmp(prev4_wd, "SECURITY") == 0 && : pg_strcasecmp(prev3_wd, "LABEL") == 0 && : pg_strcasecmp(prev2_wd, "FOR") == 0) : COMPLETE_WITH_CONST("ON"); : else if ((pg_strcasecmp(prev3_wd, "SECURITY") == 0 && 0.00 : 42a8ae: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a8b2: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42a8b7: e8 c4 a4 00 00 callq 434d80 0.00 : 42a8bc: 85 c0 test %eax,%eax 0.00 : 42a8be: 0f 85 a4 f3 ff ff jne 429c68 : static const char *const list_SECURITY_LABEL[] = : {"LANGUAGE", "SCHEMA", "SEQUENCE", "TABLE", "TYPE", "VIEW", : "MATERIALIZED VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "DOMAIN", : "LARGE OBJECT", NULL}; : : COMPLETE_WITH_LIST(list_SECURITY_LABEL); 0.00 : 42a8c4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42a8c8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42a8cd: 48 c7 05 b0 06 24 00 movq $0x455c40,0x2406b0(%rip) # 66af88 0.00 : 42a8d4: 40 5c 45 00 0.00 : 42a8d8: c6 05 c9 06 24 00 00 movb $0x0,0x2406c9(%rip) # 66afa8 0.00 : 42a8df: e8 ec 8e fd ff callq 4037d0 0.00 : 42a8e4: 48 89 c3 mov %rax,%rbx : } : else if (pg_strcasecmp(prev4_wd, "SECURITY") == 0 && : pg_strcasecmp(prev3_wd, "LABEL") == 0 && : pg_strcasecmp(prev2_wd, "FOR") == 0) : COMPLETE_WITH_CONST("ON"); : else if ((pg_strcasecmp(prev3_wd, "SECURITY") == 0 && 0.00 : 42a8e7: e9 06 77 ff ff jmpq 421ff2 0.00 : 42a8ec: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a8f0: be 30 18 45 00 mov $0x451830,%esi 0.00 : 42a8f5: e8 86 a4 00 00 callq 434d80 0.00 : 42a8fa: 85 c0 test %eax,%eax 0.00 : 42a8fc: 0f 85 8e f3 ff ff jne 429c90 0.00 : 42a902: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42a906: be c4 19 45 00 mov $0x4519c4,%esi 0.00 : 42a90b: e8 70 a4 00 00 callq 434d80 0.00 : 42a910: 85 c0 test %eax,%eax 0.00 : 42a912: 0f 85 78 f3 ff ff jne 429c90 0.00 : 42a918: eb aa jmp 42a8c4 : * If the previous word is SET (and it wasn't caught above as the _first_ : * word) the word before it was (hopefully) a table name and we'll now : * make a list of attributes. : */ : else if (pg_strcasecmp(prev_wd, "SET") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 42a91a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 42a91e: 48 c7 05 57 06 24 00 movq $0x452c00,0x240657(%rip) # 66af80 0.00 : 42a925: 00 2c 45 00 0.00 : 42a929: 48 89 05 60 06 24 00 mov %rax,0x240660(%rip) # 66af90 0.00 : 42a930: e9 f2 fc ff ff jmpq 42a627 : : /* UPDATE xx SET yy = */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42a935: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a939: be 7c c6 43 00 mov $0x43c67c,%esi 0.00 : 42a93e: e8 3d a4 00 00 callq 434d80 0.00 : 42a943: 85 c0 test %eax,%eax 0.00 : 42a945: 75 16 jne 42a95d 0.00 : 42a947: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a94b: be ba 69 43 00 mov $0x4369ba,%esi 0.00 : 42a950: e8 2b a4 00 00 callq 434d80 0.00 : 42a955: 85 c0 test %eax,%eax 0.00 : 42a957: 0f 84 3c 06 00 00 je 42af99 : pg_strcasecmp(prev4_wd, "UPDATE") == 0) : COMPLETE_WITH_CONST("="); : : /* USER MAPPING */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 || 0.00 : 42a95d: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a961: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42a966: e8 15 a4 00 00 callq 434d80 0.00 : 42a96b: 85 c0 test %eax,%eax 0.00 : 42a96d: 74 16 je 42a985 0.00 : 42a96f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a973: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 42a978: e8 03 a4 00 00 callq 434d80 0.00 : 42a97d: 85 c0 test %eax,%eax 0.00 : 42a97f: 0f 85 3c 06 00 00 jne 42afc1 0.00 : 42a985: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42a989: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 42a98e: e8 ed a3 00 00 callq 434d80 0.00 : 42a993: 85 c0 test %eax,%eax 0.00 : 42a995: 0f 84 4b 04 00 00 je 42ade6 : pg_strcasecmp(prev3_wd, "CREATE") == 0 || : pg_strcasecmp(prev3_wd, "DROP") == 0) && : pg_strcasecmp(prev2_wd, "USER") == 0 && : pg_strcasecmp(prev_wd, "MAPPING") == 0) : COMPLETE_WITH_CONST("FOR"); : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 42a99b: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a99f: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 42a9a4: e8 d7 a3 00 00 callq 434d80 0.00 : 42a9a9: 85 c0 test %eax,%eax 0.00 : 42a9ab: 75 16 jne 42a9c3 0.00 : 42a9ad: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a9b1: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 42a9b6: e8 c5 a3 00 00 callq 434d80 0.00 : 42a9bb: 85 c0 test %eax,%eax 0.00 : 42a9bd: 0f 84 61 04 00 00 je 42ae24 : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles : " UNION SELECT 'CURRENT_USER'" : " UNION SELECT 'PUBLIC'" : " UNION SELECT 'USER'"); : else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 || 0.00 : 42a9c3: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a9c7: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42a9cc: e8 af a3 00 00 callq 434d80 0.00 : 42a9d1: 85 c0 test %eax,%eax 0.00 : 42a9d3: 74 12 je 42a9e7 0.00 : 42a9d5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42a9d9: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 42a9de: e8 9d a3 00 00 callq 434d80 0.00 : 42a9e3: 85 c0 test %eax,%eax 0.00 : 42a9e5: 75 16 jne 42a9fd 0.00 : 42a9e7: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42a9eb: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 42a9f0: e8 8b a3 00 00 callq 434d80 0.00 : 42a9f5: 85 c0 test %eax,%eax 0.00 : 42a9f7: 0f 84 80 00 00 00 je 42aa7d : pg_strcasecmp(prev4_wd, "DROP") == 0) && : pg_strcasecmp(prev3_wd, "USER") == 0 && : pg_strcasecmp(prev2_wd, "MAPPING") == 0 && : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings); : else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 || 0.00 : 42a9fd: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42aa01: be 6f 0f 45 00 mov $0x450f6f,%esi 0.00 : 42aa06: e8 75 a3 00 00 callq 434d80 0.00 : 42aa0b: 85 c0 test %eax,%eax 0.00 : 42aa0d: 74 16 je 42aa25 0.00 : 42aa0f: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42aa13: be 7b 0f 45 00 mov $0x450f7b,%esi 0.00 : 42aa18: e8 63 a3 00 00 callq 434d80 0.00 : 42aa1d: 85 c0 test %eax,%eax 0.00 : 42aa1f: 0f 85 a5 00 00 00 jne 42aaca 0.00 : 42aa25: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 42aa29: be d4 17 45 00 mov $0x4517d4,%esi 0.00 : 42aa2e: e8 4d a3 00 00 callq 434d80 0.00 : 42aa33: 85 c0 test %eax,%eax 0.00 : 42aa35: 0f 84 36 04 00 00 je 42ae71 : : /* : * VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ] : * VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ] : */ : else if (pg_strcasecmp(prev_wd, "VACUUM") == 0) 0.00 : 42aa3b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42aa3f: be 9b c7 43 00 mov $0x43c79b,%esi 0.00 : 42aa44: e8 37 a3 00 00 callq 434d80 0.00 : 42aa49: 85 c0 test %eax,%eax 0.00 : 42aa4b: 0f 85 94 00 00 00 jne 42aae5 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, 0.00 : 42aa51: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42aa55: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42aa5a: 48 c7 05 3b 05 24 00 movq $0x455000,0x24053b(%rip) # 66afa0 0.00 : 42aa61: 00 50 45 00 0.00 : 42aa65: 48 c7 05 10 05 24 00 movq $0x4540c0,0x240510(%rip) # 66af80 0.00 : 42aa6c: c0 40 45 00 0.00 : 42aa70: e8 5b 8d fd ff callq 4037d0 0.00 : 42aa75: 48 89 c3 mov %rax,%rbx 0.00 : 42aa78: e9 75 75 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles : " UNION SELECT 'CURRENT_USER'" : " UNION SELECT 'PUBLIC'" : " UNION SELECT 'USER'"); : else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 || 0.00 : 42aa7d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42aa81: be 16 c0 43 00 mov $0x43c016,%esi 0.00 : 42aa86: e8 f5 a2 00 00 callq 434d80 0.00 : 42aa8b: 85 c0 test %eax,%eax 0.00 : 42aa8d: 0f 85 6a ff ff ff jne 42a9fd 0.00 : 42aa93: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42aa97: be 30 18 45 00 mov $0x451830,%esi 0.00 : 42aa9c: e8 df a2 00 00 callq 434d80 0.00 : 42aaa1: 85 c0 test %eax,%eax 0.00 : 42aaa3: 0f 85 54 ff ff ff jne 42a9fd : pg_strcasecmp(prev4_wd, "DROP") == 0) && : pg_strcasecmp(prev3_wd, "USER") == 0 && : pg_strcasecmp(prev2_wd, "MAPPING") == 0 && : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings); 0.00 : 42aaa9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42aaad: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42aab2: 48 c7 05 c3 04 24 00 movq $0x454030,0x2404c3(%rip) # 66af80 0.00 : 42aab9: 30 40 45 00 0.00 : 42aabd: e8 0e 8d fd ff callq 4037d0 0.00 : 42aac2: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles : " UNION SELECT 'CURRENT_USER'" : " UNION SELECT 'PUBLIC'" : " UNION SELECT 'USER'"); : else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 || 0.00 : 42aac5: e9 28 75 ff ff jmpq 421ff2 : pg_strcasecmp(prev4_wd, "DROP") == 0) && : pg_strcasecmp(prev3_wd, "USER") == 0 && : pg_strcasecmp(prev2_wd, "MAPPING") == 0 && : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings); : else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 || 0.00 : 42aaca: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 42aace: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 42aad3: e8 a8 a2 00 00 callq 434d80 0.00 : 42aad8: 85 c0 test %eax,%eax 0.00 : 42aada: 0f 85 5b ff ff ff jne 42aa3b 0.00 : 42aae0: e9 40 ff ff ff jmpq 42aa25 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'FULL'" : " UNION SELECT 'FREEZE'" : " UNION SELECT 'ANALYZE'" : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && 0.00 : 42aae5: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42aae9: be 9b c7 43 00 mov $0x43c79b,%esi 0.00 : 42aaee: e8 8d a2 00 00 callq 434d80 0.00 : 42aaf3: 85 c0 test %eax,%eax 0.00 : 42aaf5: 75 50 jne 42ab47 0.00 : 42aaf7: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42aafb: be 74 8f 44 00 mov $0x448f74,%esi 0.00 : 42ab00: e8 7b a2 00 00 callq 434d80 0.00 : 42ab05: 85 c0 test %eax,%eax 0.00 : 42ab07: 74 12 je 42ab1b 0.00 : 42ab09: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ab0d: be a5 11 45 00 mov $0x4511a5,%esi 0.00 : 42ab12: e8 69 a2 00 00 callq 434d80 0.00 : 42ab17: 85 c0 test %eax,%eax 0.00 : 42ab19: 75 2c jne 42ab47 : (pg_strcasecmp(prev_wd, "FULL") == 0 || : pg_strcasecmp(prev_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, 0.00 : 42ab1b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42ab1f: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42ab24: 48 c7 05 71 04 24 00 movq $0x455000,0x240471(%rip) # 66afa0 0.00 : 42ab2b: 00 50 45 00 0.00 : 42ab2f: 48 c7 05 46 04 24 00 movq $0x454120,0x240446(%rip) # 66af80 0.00 : 42ab36: 20 41 45 00 0.00 : 42ab3a: e8 91 8c fd ff callq 4037d0 0.00 : 42ab3f: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'FULL'" : " UNION SELECT 'FREEZE'" : " UNION SELECT 'ANALYZE'" : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && 0.00 : 42ab42: e9 ab 74 ff ff jmpq 421ff2 : (pg_strcasecmp(prev_wd, "FULL") == 0 || : pg_strcasecmp(prev_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'" : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 && 0.00 : 42ab47: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42ab4b: be 9b c7 43 00 mov $0x43c79b,%esi 0.00 : 42ab50: e8 2b a2 00 00 callq 434d80 0.00 : 42ab55: 85 c0 test %eax,%eax 0.00 : 42ab57: 75 16 jne 42ab6f 0.00 : 42ab59: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ab5d: be 98 bb 43 00 mov $0x43bb98,%esi 0.00 : 42ab62: e8 19 a2 00 00 callq 434d80 0.00 : 42ab67: 85 c0 test %eax,%eax 0.00 : 42ab69: 0f 84 56 03 00 00 je 42aec5 : pg_strcasecmp(prev_wd, "ANALYZE") == 0 && : (pg_strcasecmp(prev2_wd, "FULL") == 0 || : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 && 0.00 : 42ab6f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42ab73: be 9b c7 43 00 mov $0x43c79b,%esi 0.00 : 42ab78: e8 03 a2 00 00 callq 434d80 0.00 : 42ab7d: 85 c0 test %eax,%eax 0.00 : 42ab7f: 75 16 jne 42ab97 0.00 : 42ab81: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ab85: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 42ab8a: e8 f1 a1 00 00 callq 434d80 0.00 : 42ab8f: 85 c0 test %eax,%eax 0.00 : 42ab91: 0f 84 82 03 00 00 je 42af19 : pg_strcasecmp(prev_wd, "VERBOSE") == 0 && : (pg_strcasecmp(prev2_wd, "FULL") == 0 || : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && 0.00 : 42ab97: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42ab9b: be 9b c7 43 00 mov $0x43c79b,%esi 0.00 : 42aba0: e8 db a1 00 00 callq 434d80 0.00 : 42aba5: 85 c0 test %eax,%eax 0.00 : 42aba7: 75 16 jne 42abbf 0.00 : 42aba9: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42abad: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 42abb2: e8 c9 a1 00 00 callq 434d80 0.00 : 42abb7: 85 c0 test %eax,%eax 0.00 : 42abb9: 0f 84 ae 03 00 00 je 42af6d : pg_strcasecmp(prev_wd, "VERBOSE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && 0.00 : 42abbf: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42abc3: be 9b c7 43 00 mov $0x43c79b,%esi 0.00 : 42abc8: e8 b3 a1 00 00 callq 434d80 0.00 : 42abcd: 85 c0 test %eax,%eax 0.00 : 42abcf: 75 16 jne 42abe7 0.00 : 42abd1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42abd5: be 98 bb 43 00 mov $0x43bb98,%esi 0.00 : 42abda: e8 a1 a1 00 00 callq 434d80 0.00 : 42abdf: 85 c0 test %eax,%eax 0.00 : 42abe1: 0f 84 d1 00 00 00 je 42acb8 : pg_strcasecmp(prev_wd, "ANALYZE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'VERBOSE'"); : else if ((pg_strcasecmp(prev_wd, "ANALYZE") == 0 && 0.00 : 42abe7: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42abeb: be 98 bb 43 00 mov $0x43bb98,%esi 0.00 : 42abf0: e8 8b a1 00 00 callq 434d80 0.00 : 42abf5: 85 c0 test %eax,%eax 0.00 : 42abf7: 75 12 jne 42ac0b 0.00 : 42abf9: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42abfd: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 42ac02: e8 79 a1 00 00 callq 434d80 0.00 : 42ac07: 85 c0 test %eax,%eax 0.00 : 42ac09: 74 24 je 42ac2f 0.00 : 42ac0b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ac0f: be 2b 10 45 00 mov $0x45102b,%esi 0.00 : 42ac14: e8 67 a1 00 00 callq 434d80 0.00 : 42ac19: 85 c0 test %eax,%eax 0.00 : 42ac1b: 75 3e jne 42ac5b 0.00 : 42ac1d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42ac21: be 98 bb 43 00 mov $0x43bb98,%esi 0.00 : 42ac26: e8 55 a1 00 00 callq 434d80 0.00 : 42ac2b: 85 c0 test %eax,%eax 0.00 : 42ac2d: 75 2c jne 42ac5b : pg_strcasecmp(prev2_wd, "VERBOSE") == 0) || : (pg_strcasecmp(prev_wd, "VERBOSE") == 0 && : pg_strcasecmp(prev2_wd, "ANALYZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, NULL); 0.00 : 42ac2f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42ac33: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42ac38: 48 c7 05 5d 03 24 00 movq $0x455000,0x24035d(%rip) # 66afa0 0.00 : 42ac3f: 00 50 45 00 0.00 : 42ac43: 48 c7 05 32 03 24 00 movq $0x0,0x240332(%rip) # 66af80 0.00 : 42ac4a: 00 00 00 00 0.00 : 42ac4e: e8 7d 8b fd ff callq 4037d0 0.00 : 42ac53: 48 89 c3 mov %rax,%rbx : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && : pg_strcasecmp(prev_wd, "ANALYZE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'VERBOSE'"); : else if ((pg_strcasecmp(prev_wd, "ANALYZE") == 0 && 0.00 : 42ac56: e9 97 73 ff ff jmpq 421ff2 : : /* : * Only match when WITH is the first word, as WITH may appear in many : * other contexts. : */ : else if (pg_strcasecmp(prev_wd, "WITH") == 0 && 0.00 : 42ac5b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ac5f: be b8 c7 43 00 mov $0x43c7b8,%esi 0.00 : 42ac64: e8 17 a1 00 00 callq 434d80 0.00 : 42ac69: 85 c0 test %eax,%eax 0.00 : 42ac6b: 75 09 jne 42ac76 0.00 : 42ac6d: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 42ac71: 80 38 00 cmpb $0x0,(%rax) 0.00 : 42ac74: 74 6e je 42ace4 : prev2_wd[0] == '\0') : COMPLETE_WITH_CONST("RECURSIVE"); : : /* ANALYZE */ : /* If the previous word is ANALYZE, produce list of tables */ : else if (pg_strcasecmp(prev_wd, "ANALYZE") == 0) 0.00 : 42ac76: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ac7a: be 98 bb 43 00 mov $0x43bb98,%esi 0.00 : 42ac7f: e8 fc a0 00 00 callq 434d80 0.00 : 42ac84: 85 c0 test %eax,%eax 0.00 : 42ac86: 0f 85 80 00 00 00 jne 42ad0c : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tmf, NULL); 0.00 : 42ac8c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42ac90: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42ac95: 48 c7 05 00 03 24 00 movq $0x455280,0x240300(%rip) # 66afa0 0.00 : 42ac9c: 80 52 45 00 0.00 : 42aca0: 48 c7 05 d5 02 24 00 movq $0x0,0x2402d5(%rip) # 66af80 0.00 : 42aca7: 00 00 00 00 0.00 : 42acab: e8 20 8b fd ff callq 4037d0 0.00 : 42acb0: 48 89 c3 mov %rax,%rbx 0.00 : 42acb3: e9 3a 73 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "VERBOSE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && : pg_strcasecmp(prev_wd, "ANALYZE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, 0.00 : 42acb8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42acbc: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42acc1: 48 c7 05 d4 02 24 00 movq $0x455000,0x2402d4(%rip) # 66afa0 0.00 : 42acc8: 00 50 45 00 0.00 : 42accc: 48 c7 05 a9 02 24 00 movq $0x4511ac,0x2402a9(%rip) # 66af80 0.00 : 42acd3: ac 11 45 00 0.00 : 42acd7: e8 f4 8a fd ff callq 4037d0 0.00 : 42acdc: 48 89 c3 mov %rax,%rbx : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && : pg_strcasecmp(prev_wd, "VERBOSE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && 0.00 : 42acdf: e9 0e 73 ff ff jmpq 421ff2 : * Only match when WITH is the first word, as WITH may appear in many : * other contexts. : */ : else if (pg_strcasecmp(prev_wd, "WITH") == 0 && : prev2_wd[0] == '\0') : COMPLETE_WITH_CONST("RECURSIVE"); 0.00 : 42ace4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42ace8: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42aced: 48 c7 05 88 02 24 00 movq $0x4511dc,0x240288(%rip) # 66af80 0.00 : 42acf4: dc 11 45 00 0.00 : 42acf8: c6 05 a9 02 24 00 00 movb $0x0,0x2402a9(%rip) # 66afa8 0.00 : 42acff: e8 cc 8a fd ff callq 4037d0 0.00 : 42ad04: 48 89 c3 mov %rax,%rbx : : /* : * Only match when WITH is the first word, as WITH may appear in many : * other contexts. : */ : else if (pg_strcasecmp(prev_wd, "WITH") == 0 && 0.00 : 42ad07: e9 e6 72 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "ANALYZE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tmf, NULL); : : /* WHERE */ : /* Simple case of the word before the where being the table name */ : else if (pg_strcasecmp(prev_wd, "WHERE") == 0) 0.00 : 42ad0c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ad10: be e6 11 45 00 mov $0x4511e6,%esi 0.00 : 42ad15: e8 66 a0 00 00 callq 434d80 0.00 : 42ad1a: 85 c0 test %eax,%eax 0.00 : 42ad1c: 0f 85 d5 02 00 00 jne 42aff7 : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 42ad22: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42ad26: 8b 05 7c 03 24 00 mov 0x24037c(%rip),%eax # 66b0a8 0.00 : 42ad2c: 45 31 c9 xor %r9d,%r9d 0.00 : 42ad2f: 45 31 c0 xor %r8d,%r8d 0.00 : 42ad32: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42ad37: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42ad3c: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42ad41: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42ad48: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42ad4c: e8 ef 20 fe ff callq 40ce40 0.00 : 42ad51: 48 89 c3 mov %rax,%rbx 0.00 : 42ad54: 8b 05 4e 03 24 00 mov 0x24034e(%rip),%eax # 66b0a8 0.00 : 42ad5a: 45 31 c9 xor %r9d,%r9d 0.00 : 42ad5d: 45 31 c0 xor %r8d,%r8d 0.00 : 42ad60: 31 ff xor %edi,%edi 0.00 : 42ad62: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42ad67: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42ad6c: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42ad71: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42ad78: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42ad7c: e8 bf 20 fe ff callq 40ce40 0.00 : 42ad81: 8b 05 21 03 24 00 mov 0x240321(%rip),%eax # 66b0a8 0.00 : 42ad87: 45 31 c9 xor %r9d,%r9d 0.00 : 42ad8a: 45 31 c0 xor %r8d,%r8d 0.00 : 42ad8d: 31 ff xor %edi,%edi 0.00 : 42ad8f: b9 6d 0f 45 00 mov $0x450f6d,%ecx 0.00 : 42ad94: ba 85 59 43 00 mov $0x435985,%edx 0.00 : 42ad99: be 33 64 44 00 mov $0x446433,%esi 0.00 : 42ad9e: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 42ada5: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 42ada9: e8 92 20 fe ff callq 40ce40 0.00 : 42adae: 48 85 c0 test %rax,%rax 0.00 : 42adb1: 0f 84 25 02 00 00 je 42afdc 0.00 : 42adb7: 48 c7 05 be 01 24 00 movq $0x452d68,0x2401be(%rip) # 66af80 0.00 : 42adbe: 68 2d 45 00 0.00 : 42adc2: 48 89 05 c7 01 24 00 mov %rax,0x2401c7(%rip) # 66af90 0.00 : 42adc9: 48 89 1d c8 01 24 00 mov %rbx,0x2401c8(%rip) # 66af98 0.00 : 42add0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42add4: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42add9: e8 f2 89 fd ff callq 4037d0 0.00 : 42adde: 48 89 c3 mov %rax,%rbx 0.00 : 42ade1: e9 0c 72 ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev4_wd, "UPDATE") == 0) : COMPLETE_WITH_CONST("="); : : /* USER MAPPING */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 || 0.00 : 42ade6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42adea: be 16 c0 43 00 mov $0x43c016,%esi 0.00 : 42adef: e8 8c 9f 00 00 callq 434d80 0.00 : 42adf4: 85 c0 test %eax,%eax 0.00 : 42adf6: 0f 85 9f fb ff ff jne 42a99b : pg_strcasecmp(prev3_wd, "CREATE") == 0 || : pg_strcasecmp(prev3_wd, "DROP") == 0) && : pg_strcasecmp(prev2_wd, "USER") == 0 && : pg_strcasecmp(prev_wd, "MAPPING") == 0) : COMPLETE_WITH_CONST("FOR"); 0.00 : 42adfc: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42ae00: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42ae05: 48 c7 05 70 01 24 00 movq $0x451830,0x240170(%rip) # 66af80 0.00 : 42ae0c: 30 18 45 00 0.00 : 42ae10: c6 05 91 01 24 00 00 movb $0x0,0x240191(%rip) # 66afa8 0.00 : 42ae17: e8 b4 89 fd ff callq 4037d0 0.00 : 42ae1c: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev4_wd, "UPDATE") == 0) : COMPLETE_WITH_CONST("="); : : /* USER MAPPING */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 || 0.00 : 42ae1f: e9 ce 71 ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "CREATE") == 0 || : pg_strcasecmp(prev3_wd, "DROP") == 0) && : pg_strcasecmp(prev2_wd, "USER") == 0 && : pg_strcasecmp(prev_wd, "MAPPING") == 0) : COMPLETE_WITH_CONST("FOR"); : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 42ae24: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42ae28: be 16 c0 43 00 mov $0x43c016,%esi 0.00 : 42ae2d: e8 4e 9f 00 00 callq 434d80 0.00 : 42ae32: 85 c0 test %eax,%eax 0.00 : 42ae34: 0f 85 89 fb ff ff jne 42a9c3 0.00 : 42ae3a: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42ae3e: be 30 18 45 00 mov $0x451830,%esi 0.00 : 42ae43: e8 38 9f 00 00 callq 434d80 0.00 : 42ae48: 85 c0 test %eax,%eax 0.00 : 42ae4a: 0f 85 73 fb ff ff jne 42a9c3 : pg_strcasecmp(prev3_wd, "USER") == 0 && : pg_strcasecmp(prev2_wd, "MAPPING") == 0 && : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles 0.00 : 42ae50: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42ae54: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42ae59: 48 c7 05 1c 01 24 00 movq $0x453f68,0x24011c(%rip) # 66af80 0.00 : 42ae60: 68 3f 45 00 0.00 : 42ae64: e8 67 89 fd ff callq 4037d0 0.00 : 42ae69: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev3_wd, "CREATE") == 0 || : pg_strcasecmp(prev3_wd, "DROP") == 0) && : pg_strcasecmp(prev2_wd, "USER") == 0 && : pg_strcasecmp(prev_wd, "MAPPING") == 0) : COMPLETE_WITH_CONST("FOR"); : else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 && 0.00 : 42ae6c: e9 81 71 ff ff jmpq 421ff2 : pg_strcasecmp(prev4_wd, "DROP") == 0) && : pg_strcasecmp(prev3_wd, "USER") == 0 && : pg_strcasecmp(prev2_wd, "MAPPING") == 0 && : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings); : else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 || 0.00 : 42ae71: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42ae75: be 16 c0 43 00 mov $0x43c016,%esi 0.00 : 42ae7a: e8 01 9f 00 00 callq 434d80 0.00 : 42ae7f: 85 c0 test %eax,%eax 0.00 : 42ae81: 0f 85 b4 fb ff ff jne 42aa3b 0.00 : 42ae87: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42ae8b: be 30 18 45 00 mov $0x451830,%esi 0.00 : 42ae90: e8 eb 9e 00 00 callq 434d80 0.00 : 42ae95: 85 c0 test %eax,%eax 0.00 : 42ae97: 0f 85 9e fb ff ff jne 42aa3b : pg_strcasecmp(prev5_wd, "ALTER") == 0 || : pg_strcasecmp(prev5_wd, "DROP") == 0) && : pg_strcasecmp(prev4_wd, "USER") == 0 && : pg_strcasecmp(prev3_wd, "MAPPING") == 0 && : pg_strcasecmp(prev2_wd, "FOR") == 0) : COMPLETE_WITH_CONST("SERVER"); 0.00 : 42ae9d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42aea1: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42aea6: 48 c7 05 cf 00 24 00 movq $0x43bee6,0x2400cf(%rip) # 66af80 0.00 : 42aead: e6 be 43 00 0.00 : 42aeb1: c6 05 f0 00 24 00 00 movb $0x0,0x2400f0(%rip) # 66afa8 0.00 : 42aeb8: e8 13 89 fd ff callq 4037d0 0.00 : 42aebd: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev4_wd, "DROP") == 0) && : pg_strcasecmp(prev3_wd, "USER") == 0 && : pg_strcasecmp(prev2_wd, "MAPPING") == 0 && : pg_strcasecmp(prev_wd, "FOR") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings); : else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 || 0.00 : 42aec0: e9 2d 71 ff ff jmpq 421ff2 : (pg_strcasecmp(prev_wd, "FULL") == 0 || : pg_strcasecmp(prev_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'" : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 && 0.00 : 42aec5: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42aec9: be 74 8f 44 00 mov $0x448f74,%esi 0.00 : 42aece: e8 ad 9e 00 00 callq 434d80 0.00 : 42aed3: 85 c0 test %eax,%eax 0.00 : 42aed5: 74 16 je 42aeed 0.00 : 42aed7: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42aedb: be a5 11 45 00 mov $0x4511a5,%esi 0.00 : 42aee0: e8 9b 9e 00 00 callq 434d80 0.00 : 42aee5: 85 c0 test %eax,%eax 0.00 : 42aee7: 0f 85 82 fc ff ff jne 42ab6f : pg_strcasecmp(prev_wd, "ANALYZE") == 0 && : (pg_strcasecmp(prev2_wd, "FULL") == 0 || : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, 0.00 : 42aeed: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42aef1: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42aef6: 48 c7 05 9f 00 24 00 movq $0x455000,0x24009f(%rip) # 66afa0 0.00 : 42aefd: 00 50 45 00 0.00 : 42af01: 48 c7 05 74 00 24 00 movq $0x4511ac,0x240074(%rip) # 66af80 0.00 : 42af08: ac 11 45 00 0.00 : 42af0c: e8 bf 88 fd ff callq 4037d0 0.00 : 42af11: 48 89 c3 mov %rax,%rbx : (pg_strcasecmp(prev_wd, "FULL") == 0 || : pg_strcasecmp(prev_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'" : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 && 0.00 : 42af14: e9 d9 70 ff ff jmpq 421ff2 : pg_strcasecmp(prev_wd, "ANALYZE") == 0 && : (pg_strcasecmp(prev2_wd, "FULL") == 0 || : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 && 0.00 : 42af19: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42af1d: be 74 8f 44 00 mov $0x448f74,%esi 0.00 : 42af22: e8 59 9e 00 00 callq 434d80 0.00 : 42af27: 85 c0 test %eax,%eax 0.00 : 42af29: 74 16 je 42af41 0.00 : 42af2b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 42af2f: be a5 11 45 00 mov $0x4511a5,%esi 0.00 : 42af34: e8 47 9e 00 00 callq 434d80 0.00 : 42af39: 85 c0 test %eax,%eax 0.00 : 42af3b: 0f 85 56 fc ff ff jne 42ab97 : pg_strcasecmp(prev_wd, "VERBOSE") == 0 && : (pg_strcasecmp(prev2_wd, "FULL") == 0 || : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, 0.00 : 42af41: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42af45: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42af4a: 48 c7 05 4b 00 24 00 movq $0x455000,0x24004b(%rip) # 66afa0 0.00 : 42af51: 00 50 45 00 0.00 : 42af55: 48 c7 05 20 00 24 00 movq $0x4511c4,0x240020(%rip) # 66af80 0.00 : 42af5c: c4 11 45 00 0.00 : 42af60: e8 6b 88 fd ff callq 4037d0 0.00 : 42af65: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "ANALYZE") == 0 && : (pg_strcasecmp(prev2_wd, "FULL") == 0 || : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'VERBOSE'"); : else if (pg_strcasecmp(prev3_wd, "VACUUM") == 0 && 0.00 : 42af68: e9 85 70 ff ff jmpq 421ff2 : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && : pg_strcasecmp(prev_wd, "VERBOSE") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, 0.00 : 42af6d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42af71: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42af76: 48 c7 05 1f 00 24 00 movq $0x455000,0x24001f(%rip) # 66afa0 0.00 : 42af7d: 00 50 45 00 0.00 : 42af81: 48 c7 05 f4 ff 23 00 movq $0x4511c4,0x23fff4(%rip) # 66af80 0.00 : 42af88: c4 11 45 00 0.00 : 42af8c: e8 3f 88 fd ff callq 4037d0 0.00 : 42af91: 48 89 c3 mov %rax,%rbx : pg_strcasecmp(prev_wd, "VERBOSE") == 0 && : (pg_strcasecmp(prev2_wd, "FULL") == 0 || : pg_strcasecmp(prev2_wd, "FREEZE") == 0)) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tm, : " UNION SELECT 'ANALYZE'"); : else if (pg_strcasecmp(prev2_wd, "VACUUM") == 0 && 0.00 : 42af94: e9 59 70 ff ff jmpq 421ff2 : COMPLETE_WITH_ATTR(prev2_wd, ""); : : /* UPDATE xx SET yy = */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && : pg_strcasecmp(prev4_wd, "UPDATE") == 0) : COMPLETE_WITH_CONST("="); 0.00 : 42af99: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42af9d: be f0 bf 42 00 mov $0x42bff0,%esi 0.00 : 42afa2: 48 c7 05 d3 ff 23 00 movq $0x4511a3,0x23ffd3(%rip) # 66af80 0.00 : 42afa9: a3 11 45 00 0.00 : 42afad: c6 05 f4 ff 23 00 00 movb $0x0,0x23fff4(%rip) # 66afa8 0.00 : 42afb4: e8 17 88 fd ff callq 4037d0 0.00 : 42afb9: 48 89 c3 mov %rax,%rbx : */ : else if (pg_strcasecmp(prev_wd, "SET") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); : : /* UPDATE xx SET yy = */ : else if (pg_strcasecmp(prev2_wd, "SET") == 0 && 0.00 : 42afbc: e9 31 70 ff ff jmpq 421ff2 : pg_strcasecmp(prev4_wd, "UPDATE") == 0) : COMPLETE_WITH_CONST("="); : : /* USER MAPPING */ : else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 || 0.00 : 42afc1: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42afc5: be 76 0f 45 00 mov $0x450f76,%esi 0.00 : 42afca: e8 b1 9d 00 00 callq 434d80 0.00 : 42afcf: 85 c0 test %eax,%eax 0.00 : 42afd1: 0f 85 c4 f9 ff ff jne 42a99b 0.00 : 42afd7: e9 a9 f9 ff ff jmpq 42a985 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tmf, NULL); : : /* WHERE */ : /* Simple case of the word before the where being the table name */ : else if (pg_strcasecmp(prev_wd, "WHERE") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); 0.00 : 42afdc: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 42afe0: 48 c7 05 95 ff 23 00 movq $0x452c00,0x23ff95(%rip) # 66af80 0.00 : 42afe7: 00 2c 45 00 0.00 : 42afeb: 48 89 05 9e ff 23 00 mov %rax,0x23ff9e(%rip) # 66af90 0.00 : 42aff2: e9 d9 fd ff ff jmpq 42add0 : : /* ... FROM ... */ : /* TODO: also include SRF ? */ : else if (pg_strcasecmp(prev_wd, "FROM") == 0 && 0.00 : 42aff7: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42affb: be 17 1b 45 00 mov $0x451b17,%esi 0.00 : 42b000: e8 7b 9d 00 00 callq 434d80 0.00 : 42b005: 85 c0 test %eax,%eax 0.00 : 42b007: 75 12 jne 42b01b 0.00 : 42b009: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42b00d: be f2 bb 43 00 mov $0x43bbf2,%esi 0.00 : 42b012: e8 69 9d 00 00 callq 434d80 0.00 : 42b017: 85 c0 test %eax,%eax 0.00 : 42b019: 75 5a jne 42b075 : pg_strcasecmp(prev3_wd, "COPY") != 0 && : pg_strcasecmp(prev3_wd, "\\copy") != 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, NULL); : : /* ... JOIN ... */ : else if (pg_strcasecmp(prev_wd, "JOIN") == 0) 0.00 : 42b01b: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 42b01f: be ec 11 45 00 mov $0x4511ec,%esi 0.00 : 42b024: e8 57 9d 00 00 callq 434d80 0.00 : 42b029: 85 c0 test %eax,%eax 0.00 : 42b02b: 0f 84 c8 00 00 00 je 42b0f9 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, NULL); : : /* Backslash commands */ : /* TODO: \dc \dd \dl */ : else if (strcmp(prev_wd, "\\?") == 0) 0.00 : 42b031: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 42b035: 45 0f b6 08 movzbl (%r8),%r9d 0.00 : 42b039: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b03d: 75 74 jne 42b0b3 0.00 : 42b03f: 41 80 78 01 3f cmpb $0x3f,0x1(%r8) 0.00 : 42b044: 75 6d jne 42b0b3 0.00 : 42b046: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42b04b: 75 66 jne 42b0b3 : { : static const char *const my_list[] = : {"commands", "options", "variables", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42b04d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b051: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42b056: 48 c7 05 27 ff 23 00 movq $0x455a80,0x23ff27(%rip) # 66af88 0.00 : 42b05d: 80 5a 45 00 0.00 : 42b061: c6 05 40 ff 23 00 01 movb $0x1,0x23ff40(%rip) # 66afa8 0.00 : 42b068: e8 63 87 fd ff callq 4037d0 0.00 : 42b06d: 48 89 c3 mov %rax,%rbx 0.00 : 42b070: e9 7d 6f ff ff jmpq 421ff2 : else if (pg_strcasecmp(prev_wd, "WHERE") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); : : /* ... FROM ... */ : /* TODO: also include SRF ? */ : else if (pg_strcasecmp(prev_wd, "FROM") == 0 && 0.00 : 42b075: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 42b079: be 36 10 45 00 mov $0x451036,%esi 0.00 : 42b07e: e8 fd 9c 00 00 callq 434d80 0.00 : 42b083: 85 c0 test %eax,%eax 0.00 : 42b085: 74 94 je 42b01b : pg_strcasecmp(prev3_wd, "COPY") != 0 && : pg_strcasecmp(prev3_wd, "\\copy") != 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, NULL); 0.00 : 42b087: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b08b: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b090: 48 c7 05 05 ff 23 00 movq $0x455100,0x23ff05(%rip) # 66afa0 0.00 : 42b097: 00 51 45 00 0.00 : 42b09b: 48 c7 05 da fe 23 00 movq $0x0,0x23feda(%rip) # 66af80 0.00 : 42b0a2: 00 00 00 00 0.00 : 42b0a6: e8 25 87 fd ff callq 4037d0 0.00 : 42b0ab: 48 89 c3 mov %rax,%rbx : else if (pg_strcasecmp(prev_wd, "WHERE") == 0) : COMPLETE_WITH_ATTR(prev2_wd, ""); : : /* ... FROM ... */ : /* TODO: also include SRF ? */ : else if (pg_strcasecmp(prev_wd, "FROM") == 0 && 0.00 : 42b0ae: e9 3f 6f ff ff jmpq 421ff2 : static const char *const my_list[] = : {"commands", "options", "variables", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "\\connect") == 0 || strcmp(prev_wd, "\\c") == 0) 0.00 : 42b0b3: bf f1 11 45 00 mov $0x4511f1,%edi 0.00 : 42b0b8: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 42b0bd: 4c 89 c6 mov %r8,%rsi 0.00 : 42b0c0: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b0c2: 74 14 je 42b0d8 0.00 : 42b0c4: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b0c8: 75 5b jne 42b125 0.00 : 42b0ca: 41 80 78 01 63 cmpb $0x63,0x1(%r8) 0.00 : 42b0cf: 75 54 jne 42b125 0.00 : 42b0d1: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42b0d6: 75 4d jne 42b125 : COMPLETE_WITH_QUERY(Query_for_list_of_databases); 0.00 : 42b0d8: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b0dc: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b0e1: 48 c7 05 94 fe 23 00 movq $0x4538f8,0x23fe94(%rip) # 66af80 0.00 : 42b0e8: f8 38 45 00 0.00 : 42b0ec: e8 df 86 fd ff callq 4037d0 0.00 : 42b0f1: 48 89 c3 mov %rax,%rbx : static const char *const my_list[] = : {"commands", "options", "variables", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "\\connect") == 0 || strcmp(prev_wd, "\\c") == 0) 0.00 : 42b0f4: e9 f9 6e ff ff jmpq 421ff2 : pg_strcasecmp(prev3_wd, "\\copy") != 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, NULL); : : /* ... JOIN ... */ : else if (pg_strcasecmp(prev_wd, "JOIN") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, NULL); 0.00 : 42b0f9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b0fd: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b102: 48 c7 05 93 fe 23 00 movq $0x455100,0x23fe93(%rip) # 66afa0 0.00 : 42b109: 00 51 45 00 0.00 : 42b10d: 48 c7 05 68 fe 23 00 movq $0x0,0x23fe68(%rip) # 66af80 0.00 : 42b114: 00 00 00 00 0.00 : 42b118: e8 b3 86 fd ff callq 4037d0 0.00 : 42b11d: 48 89 c3 mov %rax,%rbx 0.00 : 42b120: e9 cd 6e ff ff jmpq 421ff2 : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "\\connect") == 0 || strcmp(prev_wd, "\\c") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_databases); : : else if (strncmp(prev_wd, "\\da", strlen("\\da")) == 0) 0.00 : 42b125: bf fa 11 45 00 mov $0x4511fa,%edi 0.00 : 42b12a: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b12f: 4c 89 c6 mov %r8,%rsi 0.00 : 42b132: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b134: 75 2c jne 42b162 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_aggregates, NULL); 0.00 : 42b136: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b13a: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b13f: 48 c7 05 56 fe 23 00 movq $0x4552c0,0x23fe56(%rip) # 66afa0 0.00 : 42b146: c0 52 45 00 0.00 : 42b14a: 48 c7 05 2b fe 23 00 movq $0x0,0x23fe2b(%rip) # 66af80 0.00 : 42b151: 00 00 00 00 0.00 : 42b155: e8 76 86 fd ff callq 4037d0 0.00 : 42b15a: 48 89 c3 mov %rax,%rbx 0.00 : 42b15d: e9 90 6e ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\db", strlen("\\db")) == 0) 0.00 : 42b162: bf fe 11 45 00 mov $0x4511fe,%edi 0.00 : 42b167: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b16c: 4c 89 c6 mov %r8,%rsi 0.00 : 42b16f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b171: 75 21 jne 42b194 : COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); 0.00 : 42b173: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b177: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b17c: 48 c7 05 f9 fd 23 00 movq $0x453168,0x23fdf9(%rip) # 66af80 0.00 : 42b183: 68 31 45 00 0.00 : 42b187: e8 44 86 fd ff callq 4037d0 0.00 : 42b18c: 48 89 c3 mov %rax,%rbx 0.00 : 42b18f: e9 5e 6e ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dD", strlen("\\dD")) == 0) 0.00 : 42b194: bf 02 12 45 00 mov $0x451202,%edi 0.00 : 42b199: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b19e: 4c 89 c6 mov %r8,%rsi 0.00 : 42b1a1: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b1a3: 75 2c jne 42b1d1 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL); 0.00 : 42b1a5: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b1a9: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b1ae: 48 c7 05 e7 fd 23 00 movq $0x455140,0x23fde7(%rip) # 66afa0 0.00 : 42b1b5: 40 51 45 00 0.00 : 42b1b9: 48 c7 05 bc fd 23 00 movq $0x0,0x23fdbc(%rip) # 66af80 0.00 : 42b1c0: 00 00 00 00 0.00 : 42b1c4: e8 07 86 fd ff callq 4037d0 0.00 : 42b1c9: 48 89 c3 mov %rax,%rbx 0.00 : 42b1cc: e9 21 6e ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\des", strlen("\\des")) == 0) 0.00 : 42b1d1: bf 06 12 45 00 mov $0x451206,%edi 0.00 : 42b1d6: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 42b1db: 4c 89 c6 mov %r8,%rsi 0.00 : 42b1de: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b1e0: 75 21 jne 42b203 : COMPLETE_WITH_QUERY(Query_for_list_of_servers); 0.00 : 42b1e2: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b1e6: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b1eb: 48 c7 05 8a fd 23 00 movq $0x454150,0x23fd8a(%rip) # 66af80 0.00 : 42b1f2: 50 41 45 00 0.00 : 42b1f6: e8 d5 85 fd ff callq 4037d0 0.00 : 42b1fb: 48 89 c3 mov %rax,%rbx 0.00 : 42b1fe: e9 ef 6d ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\deu", strlen("\\deu")) == 0) 0.00 : 42b203: bf 0b 12 45 00 mov $0x45120b,%edi 0.00 : 42b208: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 42b20d: 4c 89 c6 mov %r8,%rsi 0.00 : 42b210: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b212: 75 21 jne 42b235 : COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings); 0.00 : 42b214: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b218: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b21d: 48 c7 05 58 fd 23 00 movq $0x454030,0x23fd58(%rip) # 66af80 0.00 : 42b224: 30 40 45 00 0.00 : 42b228: e8 a3 85 fd ff callq 4037d0 0.00 : 42b22d: 48 89 c3 mov %rax,%rbx 0.00 : 42b230: e9 bd 6d ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dew", strlen("\\dew")) == 0) 0.00 : 42b235: bf 10 12 45 00 mov $0x451210,%edi 0.00 : 42b23a: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 42b23f: 4c 89 c6 mov %r8,%rsi 0.00 : 42b242: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b244: 75 21 jne 42b267 : COMPLETE_WITH_QUERY(Query_for_list_of_fdws); 0.00 : 42b246: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b24a: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b24f: 48 c7 05 26 fd 23 00 movq $0x4535b8,0x23fd26(%rip) # 66af80 0.00 : 42b256: b8 35 45 00 0.00 : 42b25a: e8 71 85 fd ff callq 4037d0 0.00 : 42b25f: 48 89 c3 mov %rax,%rbx 0.00 : 42b262: e9 8b 6d ff ff jmpq 421ff2 : : else if (strncmp(prev_wd, "\\df", strlen("\\df")) == 0) 0.00 : 42b267: bf 15 12 45 00 mov $0x451215,%edi 0.00 : 42b26c: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b271: 4c 89 c6 mov %r8,%rsi 0.00 : 42b274: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b276: 75 2c jne 42b2a4 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); 0.00 : 42b278: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b27c: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b281: 48 c7 05 14 fd 23 00 movq $0x455180,0x23fd14(%rip) # 66afa0 0.00 : 42b288: 80 51 45 00 0.00 : 42b28c: 48 c7 05 e9 fc 23 00 movq $0x0,0x23fce9(%rip) # 66af80 0.00 : 42b293: 00 00 00 00 0.00 : 42b297: e8 34 85 fd ff callq 4037d0 0.00 : 42b29c: 48 89 c3 mov %rax,%rbx 0.00 : 42b29f: e9 4e 6d ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dFd", strlen("\\dFd")) == 0) 0.00 : 42b2a4: bf 19 12 45 00 mov $0x451219,%edi 0.00 : 42b2a9: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 42b2ae: 4c 89 c6 mov %r8,%rsi 0.00 : 42b2b1: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b2b3: 75 21 jne 42b2d6 : COMPLETE_WITH_QUERY(Query_for_list_of_ts_dictionaries); 0.00 : 42b2b5: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b2b9: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b2be: 48 c7 05 b7 fc 23 00 movq $0x4541e0,0x23fcb7(%rip) # 66af80 0.00 : 42b2c5: e0 41 45 00 0.00 : 42b2c9: e8 02 85 fd ff callq 4037d0 0.00 : 42b2ce: 48 89 c3 mov %rax,%rbx 0.00 : 42b2d1: e9 1c 6d ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dFp", strlen("\\dFp")) == 0) 0.00 : 42b2d6: bf 1e 12 45 00 mov $0x45121e,%edi 0.00 : 42b2db: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 42b2e0: 4c 89 c6 mov %r8,%rsi 0.00 : 42b2e3: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b2e5: 75 21 jne 42b308 : COMPLETE_WITH_QUERY(Query_for_list_of_ts_parsers); 0.00 : 42b2e7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b2eb: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b2f0: 48 c7 05 85 fc 23 00 movq $0x454260,0x23fc85(%rip) # 66af80 0.00 : 42b2f7: 60 42 45 00 0.00 : 42b2fb: e8 d0 84 fd ff callq 4037d0 0.00 : 42b300: 48 89 c3 mov %rax,%rbx 0.00 : 42b303: e9 ea 6c ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dFt", strlen("\\dFt")) == 0) 0.00 : 42b308: bf 23 12 45 00 mov $0x451223,%edi 0.00 : 42b30d: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 42b312: 4c 89 c6 mov %r8,%rsi 0.00 : 42b315: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b317: 75 21 jne 42b33a : COMPLETE_WITH_QUERY(Query_for_list_of_ts_templates); 0.00 : 42b319: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b31d: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b322: 48 c7 05 53 fc 23 00 movq $0x4542e0,0x23fc53(%rip) # 66af80 0.00 : 42b329: e0 42 45 00 0.00 : 42b32d: e8 9e 84 fd ff callq 4037d0 0.00 : 42b332: 48 89 c3 mov %rax,%rbx 0.00 : 42b335: e9 b8 6c ff ff jmpq 421ff2 : /* must be at end of \dF */ : else if (strncmp(prev_wd, "\\dF", strlen("\\dF")) == 0) 0.00 : 42b33a: bf 28 12 45 00 mov $0x451228,%edi 0.00 : 42b33f: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b344: 4c 89 c6 mov %r8,%rsi 0.00 : 42b347: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b349: 75 21 jne 42b36c : COMPLETE_WITH_QUERY(Query_for_list_of_ts_configurations); 0.00 : 42b34b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b34f: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b354: 48 c7 05 21 fc 23 00 movq $0x454368,0x23fc21(%rip) # 66af80 0.00 : 42b35b: 68 43 45 00 0.00 : 42b35f: e8 6c 84 fd ff callq 4037d0 0.00 : 42b364: 48 89 c3 mov %rax,%rbx 0.00 : 42b367: e9 86 6c ff ff jmpq 421ff2 : : else if (strncmp(prev_wd, "\\di", strlen("\\di")) == 0) 0.00 : 42b36c: bf 2c 12 45 00 mov $0x45122c,%edi 0.00 : 42b371: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b376: 4c 89 c6 mov %r8,%rsi 0.00 : 42b379: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b37b: 75 2c jne 42b3a9 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL); 0.00 : 42b37d: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b381: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b386: 48 c7 05 0f fc 23 00 movq $0x454f80,0x23fc0f(%rip) # 66afa0 0.00 : 42b38d: 80 4f 45 00 0.00 : 42b391: 48 c7 05 e4 fb 23 00 movq $0x0,0x23fbe4(%rip) # 66af80 0.00 : 42b398: 00 00 00 00 0.00 : 42b39c: e8 2f 84 fd ff callq 4037d0 0.00 : 42b3a1: 48 89 c3 mov %rax,%rbx 0.00 : 42b3a4: e9 49 6c ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dL", strlen("\\dL")) == 0) 0.00 : 42b3a9: bf 30 12 45 00 mov $0x451230,%edi 0.00 : 42b3ae: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b3b3: 4c 89 c6 mov %r8,%rsi 0.00 : 42b3b6: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b3b8: 75 21 jne 42b3db : COMPLETE_WITH_QUERY(Query_for_list_of_languages); 0.00 : 42b3ba: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b3be: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b3c3: 48 c7 05 b2 fb 23 00 movq $0x453978,0x23fbb2(%rip) # 66af80 0.00 : 42b3ca: 78 39 45 00 0.00 : 42b3ce: e8 fd 83 fd ff callq 4037d0 0.00 : 42b3d3: 48 89 c3 mov %rax,%rbx 0.00 : 42b3d6: e9 17 6c ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dn", strlen("\\dn")) == 0) 0.00 : 42b3db: bf 34 12 45 00 mov $0x451234,%edi 0.00 : 42b3e0: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b3e5: 4c 89 c6 mov %r8,%rsi 0.00 : 42b3e8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b3ea: 75 21 jne 42b40d : COMPLETE_WITH_QUERY(Query_for_list_of_schemas); 0.00 : 42b3ec: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b3f0: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b3f5: 48 c7 05 80 fb 23 00 movq $0x453a18,0x23fb80(%rip) # 66af80 0.00 : 42b3fc: 18 3a 45 00 0.00 : 42b400: e8 cb 83 fd ff callq 4037d0 0.00 : 42b405: 48 89 c3 mov %rax,%rbx 0.00 : 42b408: e9 e5 6b ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dp", strlen("\\dp")) == 0 0.00 : 42b40d: bf 38 12 45 00 mov $0x451238,%edi 0.00 : 42b412: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b417: 4c 89 c6 mov %r8,%rsi 0.00 : 42b41a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b41c: 74 11 je 42b42f 0.00 : 42b41e: bf 3c 12 45 00 mov $0x45123c,%edi 0.00 : 42b423: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 42b428: 4c 89 c6 mov %r8,%rsi 0.00 : 42b42b: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b42d: 75 2c jne 42b45b : || strncmp(prev_wd, "\\z", strlen("\\z")) == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, NULL); 0.00 : 42b42f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b433: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b438: 48 c7 05 5d fb 23 00 movq $0x455100,0x23fb5d(%rip) # 66afa0 0.00 : 42b43f: 00 51 45 00 0.00 : 42b443: 48 c7 05 32 fb 23 00 movq $0x0,0x23fb32(%rip) # 66af80 0.00 : 42b44a: 00 00 00 00 0.00 : 42b44e: e8 7d 83 fd ff callq 4037d0 0.00 : 42b453: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL); : else if (strncmp(prev_wd, "\\dL", strlen("\\dL")) == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_languages); : else if (strncmp(prev_wd, "\\dn", strlen("\\dn")) == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_schemas); : else if (strncmp(prev_wd, "\\dp", strlen("\\dp")) == 0 0.00 : 42b456: e9 97 6b ff ff jmpq 421ff2 : || strncmp(prev_wd, "\\z", strlen("\\z")) == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, NULL); : else if (strncmp(prev_wd, "\\ds", strlen("\\ds")) == 0) 0.00 : 42b45b: bf 3f 12 45 00 mov $0x45123f,%edi 0.00 : 42b460: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b465: 4c 89 c6 mov %r8,%rsi 0.00 : 42b468: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b46a: 75 2c jne 42b498 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_sequences, NULL); 0.00 : 42b46c: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b470: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b475: 48 c7 05 20 fb 23 00 movq $0x455300,0x23fb20(%rip) # 66afa0 0.00 : 42b47c: 00 53 45 00 0.00 : 42b480: 48 c7 05 f5 fa 23 00 movq $0x0,0x23faf5(%rip) # 66af80 0.00 : 42b487: 00 00 00 00 0.00 : 42b48b: e8 40 83 fd ff callq 4037d0 0.00 : 42b490: 48 89 c3 mov %rax,%rbx 0.00 : 42b493: e9 5a 6b ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dt", strlen("\\dt")) == 0) 0.00 : 42b498: bf 43 12 45 00 mov $0x451243,%edi 0.00 : 42b49d: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b4a2: 4c 89 c6 mov %r8,%rsi 0.00 : 42b4a5: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b4a7: 75 2c jne 42b4d5 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); 0.00 : 42b4a9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b4ad: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b4b2: 48 c7 05 e3 fa 23 00 movq $0x454f40,0x23fae3(%rip) # 66afa0 0.00 : 42b4b9: 40 4f 45 00 0.00 : 42b4bd: 48 c7 05 b8 fa 23 00 movq $0x0,0x23fab8(%rip) # 66af80 0.00 : 42b4c4: 00 00 00 00 0.00 : 42b4c8: e8 03 83 fd ff callq 4037d0 0.00 : 42b4cd: 48 89 c3 mov %rax,%rbx 0.00 : 42b4d0: e9 1d 6b ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dT", strlen("\\dT")) == 0) 0.00 : 42b4d5: bf 47 12 45 00 mov $0x451247,%edi 0.00 : 42b4da: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b4df: 4c 89 c6 mov %r8,%rsi 0.00 : 42b4e2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b4e4: 75 2c jne 42b512 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL); 0.00 : 42b4e6: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b4ea: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b4ef: 48 c7 05 a6 fa 23 00 movq $0x4551c0,0x23faa6(%rip) # 66afa0 0.00 : 42b4f6: c0 51 45 00 0.00 : 42b4fa: 48 c7 05 7b fa 23 00 movq $0x0,0x23fa7b(%rip) # 66af80 0.00 : 42b501: 00 00 00 00 0.00 : 42b505: e8 c6 82 fd ff callq 4037d0 0.00 : 42b50a: 48 89 c3 mov %rax,%rbx 0.00 : 42b50d: e9 e0 6a ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\du", strlen("\\du")) == 0 0.00 : 42b512: bf 4b 12 45 00 mov $0x45124b,%edi 0.00 : 42b517: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b51c: 4c 89 c6 mov %r8,%rsi 0.00 : 42b51f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b521: 74 11 je 42b534 0.00 : 42b523: bf 4f 12 45 00 mov $0x45124f,%edi 0.00 : 42b528: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b52d: 4c 89 c6 mov %r8,%rsi 0.00 : 42b530: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b532: 75 21 jne 42b555 : || (strncmp(prev_wd, "\\dg", strlen("\\dg")) == 0)) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 42b534: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b538: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b53d: 48 c7 05 38 fa 23 00 movq $0x451b48,0x23fa38(%rip) # 66af80 0.00 : 42b544: 48 1b 45 00 0.00 : 42b548: e8 83 82 fd ff callq 4037d0 0.00 : 42b54d: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_sequences, NULL); : else if (strncmp(prev_wd, "\\dt", strlen("\\dt")) == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); : else if (strncmp(prev_wd, "\\dT", strlen("\\dT")) == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL); : else if (strncmp(prev_wd, "\\du", strlen("\\du")) == 0 0.00 : 42b550: e9 9d 6a ff ff jmpq 421ff2 : || (strncmp(prev_wd, "\\dg", strlen("\\dg")) == 0)) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (strncmp(prev_wd, "\\dv", strlen("\\dv")) == 0) 0.00 : 42b555: bf 53 12 45 00 mov $0x451253,%edi 0.00 : 42b55a: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b55f: 4c 89 c6 mov %r8,%rsi 0.00 : 42b562: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b564: 75 2c jne 42b592 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL); 0.00 : 42b566: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b56a: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b56f: 48 c7 05 26 fa 23 00 movq $0x455040,0x23fa26(%rip) # 66afa0 0.00 : 42b576: 40 50 45 00 0.00 : 42b57a: 48 c7 05 fb f9 23 00 movq $0x0,0x23f9fb(%rip) # 66af80 0.00 : 42b581: 00 00 00 00 0.00 : 42b585: e8 46 82 fd ff callq 4037d0 0.00 : 42b58a: 48 89 c3 mov %rax,%rbx 0.00 : 42b58d: e9 60 6a ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dx", strlen("\\dx")) == 0) 0.00 : 42b592: bf 57 12 45 00 mov $0x451257,%edi 0.00 : 42b597: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b59c: 4c 89 c6 mov %r8,%rsi 0.00 : 42b59f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b5a1: 75 21 jne 42b5c4 : COMPLETE_WITH_QUERY(Query_for_list_of_extensions); 0.00 : 42b5a3: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b5a7: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b5ac: 48 c7 05 c9 f9 23 00 movq $0x4543e8,0x23f9c9(%rip) # 66af80 0.00 : 42b5b3: e8 43 45 00 0.00 : 42b5b7: e8 14 82 fd ff callq 4037d0 0.00 : 42b5bc: 48 89 c3 mov %rax,%rbx 0.00 : 42b5bf: e9 2e 6a ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dm", strlen("\\dm")) == 0) 0.00 : 42b5c4: bf 5b 12 45 00 mov $0x45125b,%edi 0.00 : 42b5c9: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42b5ce: 4c 89 c6 mov %r8,%rsi 0.00 : 42b5d1: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b5d3: 75 2c jne 42b601 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); 0.00 : 42b5d5: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b5d9: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b5de: 48 c7 05 b7 f9 23 00 movq $0x454fc0,0x23f9b7(%rip) # 66afa0 0.00 : 42b5e5: c0 4f 45 00 0.00 : 42b5e9: 48 c7 05 8c f9 23 00 movq $0x0,0x23f98c(%rip) # 66af80 0.00 : 42b5f0: 00 00 00 00 0.00 : 42b5f4: e8 d7 81 fd ff callq 4037d0 0.00 : 42b5f9: 48 89 c3 mov %rax,%rbx 0.00 : 42b5fc: e9 f1 69 ff ff jmpq 421ff2 : : /* must be at end of \d list */ : else if (strncmp(prev_wd, "\\d", strlen("\\d")) == 0) 0.00 : 42b601: bf 5f 12 45 00 mov $0x45125f,%edi 0.00 : 42b606: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 42b60b: 4c 89 c6 mov %r8,%rsi 0.00 : 42b60e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b610: 74 4c je 42b65e : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_relations, NULL); : : else if (strcmp(prev_wd, "\\ef") == 0) 0.00 : 42b612: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b616: 75 72 jne 42b68a 0.00 : 42b618: 41 80 78 01 65 cmpb $0x65,0x1(%r8) 0.00 : 42b61d: 75 6b jne 42b68a 0.00 : 42b61f: 41 80 78 02 66 cmpb $0x66,0x2(%r8) 0.00 : 42b624: 75 64 jne 42b68a 0.00 : 42b626: 41 80 78 03 00 cmpb $0x0,0x3(%r8) 0.00 : 42b62b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42b630: 75 58 jne 42b68a : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); 0.00 : 42b632: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b636: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b63b: 48 c7 05 5a f9 23 00 movq $0x455180,0x23f95a(%rip) # 66afa0 0.00 : 42b642: 80 51 45 00 0.00 : 42b646: 48 c7 05 2f f9 23 00 movq $0x0,0x23f92f(%rip) # 66af80 0.00 : 42b64d: 00 00 00 00 0.00 : 42b651: e8 7a 81 fd ff callq 4037d0 0.00 : 42b656: 48 89 c3 mov %rax,%rbx 0.00 : 42b659: e9 94 69 ff ff jmpq 421ff2 : else if (strncmp(prev_wd, "\\dm", strlen("\\dm")) == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL); : : /* must be at end of \d list */ : else if (strncmp(prev_wd, "\\d", strlen("\\d")) == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_relations, NULL); 0.00 : 42b65e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b662: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b667: 48 c7 05 2e f9 23 00 movq $0x455240,0x23f92e(%rip) # 66afa0 0.00 : 42b66e: 40 52 45 00 0.00 : 42b672: 48 c7 05 03 f9 23 00 movq $0x0,0x23f903(%rip) # 66af80 0.00 : 42b679: 00 00 00 00 0.00 : 42b67d: e8 4e 81 fd ff callq 4037d0 0.00 : 42b682: 48 89 c3 mov %rax,%rbx 0.00 : 42b685: e9 68 69 ff ff jmpq 421ff2 : : else if (strcmp(prev_wd, "\\ef") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : : else if (strcmp(prev_wd, "\\encoding") == 0) 0.00 : 42b68a: bf 62 12 45 00 mov $0x451262,%edi 0.00 : 42b68f: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 42b694: 4c 89 c6 mov %r8,%rsi 0.00 : 42b697: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b699: 0f 84 7f 00 00 00 je 42b71e : COMPLETE_WITH_QUERY(Query_for_list_of_encodings); : else if (strcmp(prev_wd, "\\h") == 0 || strcmp(prev_wd, "\\help") == 0) 0.00 : 42b69f: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b6a3: 75 0e jne 42b6b3 0.00 : 42b6a5: 41 80 78 01 68 cmpb $0x68,0x1(%r8) 0.00 : 42b6aa: 75 07 jne 42b6b3 0.00 : 42b6ac: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42b6b1: 74 11 je 42b6c4 0.00 : 42b6b3: bf 6c 12 45 00 mov $0x45126c,%edi 0.00 : 42b6b8: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 42b6bd: 4c 89 c6 mov %r8,%rsi 0.00 : 42b6c0: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b6c2: 75 28 jne 42b6ec : COMPLETE_WITH_LIST(sql_commands); 0.00 : 42b6c4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b6c8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42b6cd: 48 c7 05 b0 f8 23 00 movq $0x4578a0,0x23f8b0(%rip) # 66af88 0.00 : 42b6d4: a0 78 45 00 0.00 : 42b6d8: c6 05 c9 f8 23 00 00 movb $0x0,0x23f8c9(%rip) # 66afa8 0.00 : 42b6df: e8 ec 80 fd ff callq 4037d0 0.00 : 42b6e4: 48 89 c3 mov %rax,%rbx : else if (strcmp(prev_wd, "\\ef") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : : else if (strcmp(prev_wd, "\\encoding") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_encodings); : else if (strcmp(prev_wd, "\\h") == 0 || strcmp(prev_wd, "\\help") == 0) 0.00 : 42b6e7: e9 06 69 ff ff jmpq 421ff2 : COMPLETE_WITH_LIST(sql_commands); : else if (strcmp(prev_wd, "\\password") == 0) 0.00 : 42b6ec: bf 72 12 45 00 mov $0x451272,%edi 0.00 : 42b6f1: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 42b6f6: 4c 89 c6 mov %r8,%rsi 0.00 : 42b6f9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b6fb: 75 42 jne 42b73f : COMPLETE_WITH_QUERY(Query_for_list_of_roles); 0.00 : 42b6fd: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b701: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b706: 48 c7 05 6f f8 23 00 movq $0x451b48,0x23f86f(%rip) # 66af80 0.00 : 42b70d: 48 1b 45 00 0.00 : 42b711: e8 ba 80 fd ff callq 4037d0 0.00 : 42b716: 48 89 c3 mov %rax,%rbx 0.00 : 42b719: e9 d4 68 ff ff jmpq 421ff2 : : else if (strcmp(prev_wd, "\\ef") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : : else if (strcmp(prev_wd, "\\encoding") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_encodings); 0.00 : 42b71e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b722: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42b727: 48 c7 05 4e f8 23 00 movq $0x454470,0x23f84e(%rip) # 66af80 0.00 : 42b72e: 70 44 45 00 0.00 : 42b732: e8 99 80 fd ff callq 4037d0 0.00 : 42b737: 48 89 c3 mov %rax,%rbx 0.00 : 42b73a: e9 b3 68 ff ff jmpq 421ff2 : else if (strcmp(prev_wd, "\\h") == 0 || strcmp(prev_wd, "\\help") == 0) : COMPLETE_WITH_LIST(sql_commands); : else if (strcmp(prev_wd, "\\password") == 0) : COMPLETE_WITH_QUERY(Query_for_list_of_roles); : else if (strcmp(prev_wd, "\\pset") == 0) 0.00 : 42b73f: 41 bb 7c 12 45 00 mov $0x45127c,%r11d 0.00 : 42b745: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 42b74a: 4c 89 c6 mov %r8,%rsi 0.00 : 42b74d: 4c 89 df mov %r11,%rdi 0.00 : 42b750: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b752: 75 28 jne 42b77c : "footer", "format", "linestyle", "null", "numericlocale", : "pager", "recordsep", "recordsep_zero", "tableattr", "title", : "tuples_only", "unicode_border_linestyle", : "unicode_column_linestyle", "unicode_header_linestyle", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42b754: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b758: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42b75d: 48 c7 05 20 f8 23 00 movq $0x4559e0,0x23f820(%rip) # 66af88 0.00 : 42b764: e0 59 45 00 0.00 : 42b768: c6 05 39 f8 23 00 01 movb $0x1,0x23f839(%rip) # 66afa8 0.00 : 42b76f: e8 5c 80 fd ff callq 4037d0 0.00 : 42b774: 48 89 c3 mov %rax,%rbx 0.00 : 42b777: e9 76 68 ff ff jmpq 421ff2 : } : else if (strcmp(prev2_wd, "\\pset") == 0) 0.00 : 42b77c: 4c 8b 55 a8 mov -0x58(%rbp),%r10 0.00 : 42b780: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 42b785: 4c 89 df mov %r11,%rdi 0.00 : 42b788: 4c 89 d6 mov %r10,%rsi 0.00 : 42b78b: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b78d: 75 39 jne 42b7c8 : { : if (strcmp(prev_wd, "format") == 0) 0.00 : 42b78f: bf 70 54 43 00 mov $0x435470,%edi 0.00 : 42b794: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 42b799: 4c 89 c6 mov %r8,%rsi 0.00 : 42b79c: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b79e: 75 57 jne 42b7f7 : { : static const char *const my_list[] = : {"unaligned", "aligned", "wrapped", "html", "latex", : "troff-ms", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42b7a0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b7a4: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42b7a9: 48 c7 05 d4 f7 23 00 movq $0x4559a0,0x23f7d4(%rip) # 66af88 0.00 : 42b7b0: a0 59 45 00 0.00 : 42b7b4: c6 05 ed f7 23 00 01 movb $0x1,0x23f7ed(%rip) # 66afa8 0.00 : 42b7bb: e8 10 80 fd ff callq 4037d0 0.00 : 42b7c0: 48 89 c3 mov %rax,%rbx 0.00 : 42b7c3: e9 2a 68 ff ff jmpq 421ff2 : : COMPLETE_WITH_LIST_CS(my_list); : : } : } : else if (strcmp(prev_wd, "\\unset") == 0) 0.00 : 42b7c8: bf 82 12 45 00 mov $0x451282,%edi 0.00 : 42b7cd: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 42b7d2: 4c 89 c6 mov %r8,%rsi 0.00 : 42b7d5: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b7d7: 75 57 jne 42b830 : { : matches = complete_from_variables(text, "", "", true); 0.00 : 42b7d9: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b7dd: ba 17 69 43 00 mov $0x436917,%edx 0.00 : 42b7e2: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 42b7e7: 48 89 d6 mov %rdx,%rsi 0.00 : 42b7ea: e8 71 64 ff ff callq 421c60 0.00 : 42b7ef: 48 89 c3 mov %rax,%rbx 0.00 : 42b7f2: e9 fb 67 ff ff jmpq 421ff2 : {"unaligned", "aligned", "wrapped", "html", "latex", : "troff-ms", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "linestyle") == 0) 0.00 : 42b7f7: bf 2c 56 43 00 mov $0x43562c,%edi 0.00 : 42b7fc: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 42b801: 4c 89 c6 mov %r8,%rsi 0.00 : 42b804: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b806: 75 58 jne 42b860 : { : static const char *const my_list[] = : {"ascii", "old-ascii", "unicode", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42b808: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b80c: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42b811: 48 c7 05 6c f7 23 00 movq $0x455980,0x23f76c(%rip) # 66af88 0.00 : 42b818: 80 59 45 00 0.00 : 42b81c: c6 05 85 f7 23 00 01 movb $0x1,0x23f785(%rip) # 66afa8 0.00 : 42b823: e8 a8 7f fd ff callq 4037d0 0.00 : 42b828: 48 89 c3 mov %rax,%rbx 0.00 : 42b82b: e9 c2 67 ff ff jmpq 421ff2 : } : else if (strcmp(prev_wd, "\\unset") == 0) : { : matches = complete_from_variables(text, "", "", true); : } : else if (strcmp(prev_wd, "\\set") == 0) 0.00 : 42b830: 41 bb 89 12 45 00 mov $0x451289,%r11d 0.00 : 42b836: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 42b83b: 4c 89 c6 mov %r8,%rsi 0.00 : 42b83e: 4c 89 df mov %r11,%rdi 0.00 : 42b841: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b843: 75 69 jne 42b8ae : { : matches = complete_from_variables(text, "", "", false); 0.00 : 42b845: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b849: ba 17 69 43 00 mov $0x436917,%edx 0.00 : 42b84e: 31 c9 xor %ecx,%ecx 0.00 : 42b850: 48 89 d6 mov %rdx,%rsi 0.00 : 42b853: e8 08 64 ff ff callq 421c60 0.00 : 42b858: 48 89 c3 mov %rax,%rbx 0.00 : 42b85b: e9 92 67 ff ff jmpq 421ff2 : static const char *const my_list[] = : {"ascii", "old-ascii", "unicode", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "unicode_border_linestyle") == 0 || 0.00 : 42b860: bf 04 56 43 00 mov $0x435604,%edi 0.00 : 42b865: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 42b86a: 4c 89 c6 mov %r8,%rsi 0.00 : 42b86d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b86f: 74 15 je 42b886 : strcmp(prev_wd, "unicode_column_linestyle") == 0 || 0.00 : 42b871: bf 1d 56 43 00 mov $0x43561d,%edi 0.00 : 42b876: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 42b87b: 4c 89 c6 mov %r8,%rsi : static const char *const my_list[] = : {"ascii", "old-ascii", "unicode", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "unicode_border_linestyle") == 0 || 0.00 : 42b87e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b880: 0f 85 78 69 ff ff jne 4221fe : strcmp(prev_wd, "unicode_header_linestyle") == 0) : { : static const char *const my_list[] = : {"single", "double", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42b886: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b88a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42b88f: 48 c7 05 ee f6 23 00 movq $0x455950,0x23f6ee(%rip) # 66af88 0.00 : 42b896: 50 59 45 00 0.00 : 42b89a: c6 05 07 f7 23 00 01 movb $0x1,0x23f707(%rip) # 66afa8 0.00 : 42b8a1: e8 2a 7f fd ff callq 4037d0 0.00 : 42b8a6: 48 89 c3 mov %rax,%rbx 0.00 : 42b8a9: e9 44 67 ff ff jmpq 421ff2 : } : else if (strcmp(prev_wd, "\\set") == 0) : { : matches = complete_from_variables(text, "", "", false); : } : else if (strcmp(prev2_wd, "\\set") == 0) 0.00 : 42b8ae: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 42b8b3: 4c 89 d6 mov %r10,%rsi 0.00 : 42b8b6: 4c 89 df mov %r11,%rdi 0.00 : 42b8b9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b8bb: 0f 84 f4 01 00 00 je 42bab5 : {"default", "verbose", "terse", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) 0.00 : 42b8c1: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b8c5: 75 15 jne 42b8dc 0.00 : 42b8c7: 41 80 78 01 73 cmpb $0x73,0x1(%r8) 0.00 : 42b8cc: 75 0e jne 42b8dc 0.00 : 42b8ce: 41 80 78 02 66 cmpb $0x66,0x2(%r8) 0.00 : 42b8d3: 75 07 jne 42b8dc 0.00 : 42b8d5: 41 80 78 03 00 cmpb $0x0,0x3(%r8) 0.00 : 42b8da: 74 11 je 42b8ed 0.00 : 42b8dc: bf a0 12 45 00 mov $0x4512a0,%edi 0.00 : 42b8e1: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 42b8e6: 4c 89 c6 mov %r8,%rsi 0.00 : 42b8e9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b8eb: 75 2c jne 42b919 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); 0.00 : 42b8ed: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b8f1: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42b8f6: 48 c7 05 9f f6 23 00 movq $0x455180,0x23f69f(%rip) # 66afa0 0.00 : 42b8fd: 80 51 45 00 0.00 : 42b901: 48 c7 05 74 f6 23 00 movq $0x0,0x23f674(%rip) # 66af80 0.00 : 42b908: 00 00 00 00 0.00 : 42b90c: e8 bf 7e fd ff callq 4037d0 0.00 : 42b911: 48 89 c3 mov %rax,%rbx : {"default", "verbose", "terse", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) 0.00 : 42b914: e9 d9 66 ff ff jmpq 421ff2 : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b919: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b91d: 75 4b jne 42b96a /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:3878 16.67 : 42b91f: 41 80 78 01 63 cmpb $0x63,0x1(%r8) 0.00 : 42b924: 75 13 jne 42b939 0.00 : 42b926: 41 80 78 02 64 cmpb $0x64,0x2(%r8) 0.00 : 42b92b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42b930: 75 07 jne 42b939 0.00 : 42b932: 41 80 78 03 00 cmpb $0x0,0x3(%r8) 0.00 : 42b937: 74 10 je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || 0.00 : 42b939: 41 80 78 01 65 cmpb $0x65,0x1(%r8) 0.00 : 42b93e: 66 90 xchg %ax,%ax 0.00 : 42b940: 75 28 jne 42b96a : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b942: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42b947: 75 21 jne 42b96a : strcmp(prev_wd, "\\w") == 0 || strcmp(prev_wd, "\\write") == 0 || : strcmp(prev_wd, "\\lo_import") == 0 : ) : { : completion_charp = "\\"; : matches = completion_matches(text, complete_from_files); 0.00 : 42b949: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42b94d: be a0 bd 42 00 mov $0x42bda0,%esi : strcmp(prev_wd, "\\s") == 0 || : strcmp(prev_wd, "\\w") == 0 || strcmp(prev_wd, "\\write") == 0 || : strcmp(prev_wd, "\\lo_import") == 0 : ) : { : completion_charp = "\\"; 0.00 : 42b952: 48 c7 05 23 f6 23 00 movq $0x457c41,0x23f623(%rip) # 66af80 0.00 : 42b959: 41 7c 45 00 : matches = completion_matches(text, complete_from_files); 0.00 : 42b95d: e8 6e 7e fd ff callq 4037d0 0.00 : 42b962: 48 89 c3 mov %rax,%rbx : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b965: e9 88 66 ff ff jmpq 421ff2 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || 0.00 : 42b96a: bf a5 12 45 00 mov $0x4512a5,%edi 0.00 : 42b96f: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 42b974: 4c 89 c6 mov %r8,%rsi : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b977: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b979: 74 ce je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || 0.00 : 42b97b: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b97f: 75 21 jne 42b9a2 0.00 : 42b981: 41 80 78 01 67 cmpb $0x67,0x1(%r8) 0.00 : 42b986: 75 0a jne 42b992 : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b988: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42b98d: 0f 1f 00 nopl (%rax) 0.00 : 42b990: 74 b7 je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || 0.00 : 42b992: 41 80 78 01 69 cmpb $0x69,0x1(%r8) 0.00 : 42b997: 75 09 jne 42b9a2 : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b999: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42b99e: 66 90 xchg %ax,%ax 0.00 : 42b9a0: 74 a7 je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || 0.00 : 42b9a2: bf ab 12 45 00 mov $0x4512ab,%edi 0.00 : 42b9a7: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 42b9ac: 4c 89 c6 mov %r8,%rsi : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b9af: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b9b1: 74 96 je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || 0.00 : 42b9b3: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b9b7: 75 1d jne 42b9d6 0.00 : 42b9b9: 41 80 78 01 69 cmpb $0x69,0x1(%r8) 0.00 : 42b9be: 75 16 jne 42b9d6 0.00 : 42b9c0: 41 80 78 02 72 cmpb $0x72,0x2(%r8) 0.00 : 42b9c5: 75 0f jne 42b9d6 : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b9c7: 41 80 78 03 00 cmpb $0x0,0x3(%r8) 0.00 : 42b9cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42b9d0: 0f 84 73 ff ff ff je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || 0.00 : 42b9d6: bf b4 12 45 00 mov $0x4512b4,%edi 0.00 : 42b9db: b9 12 00 00 00 mov $0x12,%ecx 0.00 : 42b9e0: 4c 89 c6 mov %r8,%rsi : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b9e3: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42b9e5: 0f 84 5e ff ff ff je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || : strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 || 0.00 : 42b9eb: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42b9ef: 75 15 jne 42ba06 0.00 : 42b9f1: 41 80 78 01 6f cmpb $0x6f,0x1(%r8) 0.00 : 42b9f6: 75 0e jne 42ba06 : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42b9f8: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42b9fd: 0f 1f 00 nopl (%rax) 0.00 : 42ba00: 0f 84 43 ff ff ff je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || : strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 || 0.00 : 42ba06: bf c6 12 45 00 mov $0x4512c6,%edi 0.00 : 42ba0b: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 42ba10: 4c 89 c6 mov %r8,%rsi : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42ba13: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42ba15: 0f 84 2e ff ff ff je 42b949 : strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 || : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || : strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 || : strcmp(prev_wd, "\\s") == 0 || 0.00 : 42ba1b: 41 83 f9 5c cmp $0x5c,%r9d 0.00 : 42ba1f: 75 2c jne 42ba4d 0.00 : 42ba21: 41 80 78 01 73 cmpb $0x73,0x1(%r8) 0.00 : 42ba26: 75 0e jne 42ba36 : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42ba28: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42ba2d: 0f 1f 00 nopl (%rax) 0.00 : 42ba30: 0f 84 13 ff ff ff je 42b949 : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || : strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 || : strcmp(prev_wd, "\\s") == 0 || : strcmp(prev_wd, "\\w") == 0 || strcmp(prev_wd, "\\write") == 0 || 0.00 : 42ba36: 41 80 78 01 77 cmpb $0x77,0x1(%r8) 0.00 : 42ba3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42ba40: 75 0b jne 42ba4d : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42ba42: 41 80 78 02 00 cmpb $0x0,0x2(%r8) 0.00 : 42ba47: 0f 84 fc fe ff ff je 42b949 : strcmp(prev_wd, "\\g") == 0 || : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || : strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 || : strcmp(prev_wd, "\\s") == 0 || : strcmp(prev_wd, "\\w") == 0 || strcmp(prev_wd, "\\write") == 0 || 0.00 : 42ba4d: bf cb 12 45 00 mov $0x4512cb,%edi 0.00 : 42ba52: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 42ba57: 4c 89 c6 mov %r8,%rsi : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42ba5a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42ba5c: 0f 84 e7 fe ff ff je 42b949 : strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 || : strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 || : strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 || : strcmp(prev_wd, "\\s") == 0 || : strcmp(prev_wd, "\\w") == 0 || strcmp(prev_wd, "\\write") == 0 || : strcmp(prev_wd, "\\lo_import") == 0 0.00 : 42ba62: bf 43 72 44 00 mov $0x447243,%edi 0.00 : 42ba67: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 42ba6c: 4c 89 c6 mov %r8,%rsi : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42ba6f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42ba71: 0f 84 d2 fe ff ff je 42b949 : */ : else : { : int i; : : for (i = 0; words_after_create[i].name; i++) 0.00 : 42ba77: 48 8b 35 c2 98 02 00 mov 0x298c2(%rip),%rsi # 455340 : COMPLETE_WITH_LIST_CS(my_list); : } : } : else if (strcmp(prev_wd, "\\sf") == 0 || strcmp(prev_wd, "\\sf+") == 0) : COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); : else if (strcmp(prev_wd, "\\cd") == 0 || 0.00 : 42ba7e: 45 31 e4 xor %r12d,%r12d 0.00 : 42ba81: bb 60 53 45 00 mov $0x455360,%ebx : */ : else : { : int i; : : for (i = 0; words_after_create[i].name; i++) 0.00 : 42ba86: 48 85 f6 test %rsi,%rsi 0.00 : 42ba89: 0f 84 84 67 ff ff je 422213 : { : if (pg_strcasecmp(prev_wd, words_after_create[i].name) == 0) 0.00 : 42ba8f: 4c 89 c7 mov %r8,%rdi 0.00 : 42ba92: e8 e9 92 00 00 callq 434d80 0.00 : 42ba97: 85 c0 test %eax,%eax 0.00 : 42ba99: 74 53 je 42baee : */ : else : { : int i; : : for (i = 0; words_after_create[i].name; i++) 0.00 : 42ba9b: 48 8b 33 mov (%rbx),%rsi 0.00 : 42ba9e: 41 83 c4 01 add $0x1,%r12d 0.00 : 42baa2: 48 83 c3 20 add $0x20,%rbx 0.00 : 42baa6: 48 85 f6 test %rsi,%rsi 0.00 : 42baa9: 0f 84 64 67 ff ff je 422213 0.00 : 42baaf: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 42bab3: eb da jmp 42ba8f : else if (strcmp(prev2_wd, "\\set") == 0) : { : static const char *const boolean_value_list[] = : {"on", "off", NULL}; : : if (strcmp(prev_wd, "AUTOCOMMIT") == 0) 0.00 : 42bab5: bf 98 66 44 00 mov $0x446698,%edi 0.00 : 42baba: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 42babf: 4c 89 c6 mov %r8,%rsi 0.00 : 42bac2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bac4: 75 5b jne 42bb21 : COMPLETE_WITH_LIST_CS(boolean_value_list); 0.00 : 42bac6: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42baca: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bacf: 48 c7 05 ae f4 23 00 movq $0x455930,0x23f4ae(%rip) # 66af88 0.00 : 42bad6: 30 59 45 00 0.00 : 42bada: c6 05 c7 f4 23 00 01 movb $0x1,0x23f4c7(%rip) # 66afa8 0.00 : 42bae1: e8 ea 7c fd ff callq 4037d0 0.00 : 42bae6: 48 89 c3 mov %rax,%rbx 0.00 : 42bae9: e9 04 65 ff ff jmpq 421ff2 : : for (i = 0; words_after_create[i].name; i++) : { : if (pg_strcasecmp(prev_wd, words_after_create[i].name) == 0) : { : if (words_after_create[i].query) 0.00 : 42baee: 49 63 d4 movslq %r12d,%rdx 0.00 : 42baf1: 48 89 d0 mov %rdx,%rax 0.00 : 42baf4: 48 c1 e0 05 shl $0x5,%rax 0.00 : 42baf8: 48 8b 80 48 53 45 00 mov 0x455348(%rax),%rax 0.00 : 42baff: 48 85 c0 test %rax,%rax 0.00 : 42bb02: 74 56 je 42bb5a : COMPLETE_WITH_QUERY(words_after_create[i].query); 0.00 : 42bb04: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bb08: be b0 c6 42 00 mov $0x42c6b0,%esi 0.00 : 42bb0d: 48 89 05 6c f4 23 00 mov %rax,0x23f46c(%rip) # 66af80 0.00 : 42bb14: e8 b7 7c fd ff callq 4037d0 0.00 : 42bb19: 48 89 c3 mov %rax,%rbx 0.00 : 42bb1c: e9 d1 64 ff ff jmpq 421ff2 : static const char *const boolean_value_list[] = : {"on", "off", NULL}; : : if (strcmp(prev_wd, "AUTOCOMMIT") == 0) : COMPLETE_WITH_LIST_CS(boolean_value_list); : else if (strcmp(prev_wd, "COMP_KEYWORD_CASE") == 0) 0.00 : 42bb21: bf 8e 12 45 00 mov $0x45128e,%edi 0.00 : 42bb26: b9 12 00 00 00 mov $0x12,%ecx 0.00 : 42bb2b: 4c 89 c6 mov %r8,%rsi 0.00 : 42bb2e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bb30: 75 64 jne 42bb96 : { : static const char *const my_list[] = : {"lower", "upper", "preserve-lower", "preserve-upper", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42bb32: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bb36: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bb3b: 48 c7 05 42 f4 23 00 movq $0x455900,0x23f442(%rip) # 66af88 0.00 : 42bb42: 00 59 45 00 0.00 : 42bb46: c6 05 5b f4 23 00 01 movb $0x1,0x23f45b(%rip) # 66afa8 0.00 : 42bb4d: e8 7e 7c fd ff callq 4037d0 0.00 : 42bb52: 48 89 c3 mov %rax,%rbx 0.00 : 42bb55: e9 98 64 ff ff jmpq 421ff2 : { : if (pg_strcasecmp(prev_wd, words_after_create[i].name) == 0) : { : if (words_after_create[i].query) : COMPLETE_WITH_QUERY(words_after_create[i].query); : else if (words_after_create[i].squery) 0.00 : 42bb5a: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 42bb5e: 48 8b 82 50 53 45 00 mov 0x455350(%rdx),%rax 0.00 : 42bb65: 48 85 c0 test %rax,%rax 0.00 : 42bb68: 0f 84 a5 66 ff ff je 422213 : COMPLETE_WITH_SCHEMA_QUERY(*words_after_create[i].squery, 0.00 : 42bb6e: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bb72: be d0 c6 42 00 mov $0x42c6d0,%esi 0.00 : 42bb77: 48 89 05 22 f4 23 00 mov %rax,0x23f422(%rip) # 66afa0 0.00 : 42bb7e: 48 c7 05 f7 f3 23 00 movq $0x0,0x23f3f7(%rip) # 66af80 0.00 : 42bb85: 00 00 00 00 0.00 : 42bb89: e8 42 7c fd ff callq 4037d0 0.00 : 42bb8e: 48 89 c3 mov %rax,%rbx 0.00 : 42bb91: e9 5c 64 ff ff jmpq 421ff2 : static const char *const my_list[] = : {"lower", "upper", "preserve-lower", "preserve-upper", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); : } : else if (strcmp(prev_wd, "ECHO") == 0) 0.00 : 42bb96: bf d9 66 44 00 mov $0x4466d9,%edi 0.00 : 42bb9b: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 42bba0: 4c 89 c6 mov %r8,%rsi 0.00 : 42bba3: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bba5: 75 28 jne 42bbcf : { : static const char *const my_list[] = : {"errors", "queries", "all", "none", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42bba7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bbab: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bbb0: 48 c7 05 cd f3 23 00 movq $0x4558c0,0x23f3cd(%rip) # 66af88 0.00 : 42bbb7: c0 58 45 00 0.00 : 42bbbb: c6 05 e6 f3 23 00 01 movb $0x1,0x23f3e6(%rip) # 66afa8 0.00 : 42bbc2: e8 09 7c fd ff callq 4037d0 0.00 : 42bbc7: 48 89 c3 mov %rax,%rbx 0.00 : 42bbca: e9 23 64 ff ff jmpq 421ff2 : } : else if (strcmp(prev_wd, "ECHO_HIDDEN") == 0) 0.00 : 42bbcf: bf de 66 44 00 mov $0x4466de,%edi 0.00 : 42bbd4: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 42bbd9: 4c 89 c6 mov %r8,%rsi 0.00 : 42bbdc: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bbde: 75 28 jne 42bc08 : { : static const char *const my_list[] = : {"noexec", "off", "on", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42bbe0: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bbe4: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bbe9: 48 c7 05 94 f3 23 00 movq $0x4558a0,0x23f394(%rip) # 66af88 0.00 : 42bbf0: a0 58 45 00 0.00 : 42bbf4: c6 05 ad f3 23 00 01 movb $0x1,0x23f3ad(%rip) # 66afa8 0.00 : 42bbfb: e8 d0 7b fd ff callq 4037d0 0.00 : 42bc00: 48 89 c3 mov %rax,%rbx 0.00 : 42bc03: e9 ea 63 ff ff jmpq 421ff2 : } : else if (strcmp(prev_wd, "HISTCONTROL") == 0) 0.00 : 42bc08: bf fc 66 44 00 mov $0x4466fc,%edi 0.00 : 42bc0d: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 42bc12: 4c 89 c6 mov %r8,%rsi 0.00 : 42bc15: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bc17: 75 28 jne 42bc41 : { : static const char *const my_list[] = : {"ignorespace", "ignoredups", "ignoreboth", "none", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42bc19: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bc1d: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bc22: 48 c7 05 5b f3 23 00 movq $0x455860,0x23f35b(%rip) # 66af88 0.00 : 42bc29: 60 58 45 00 0.00 : 42bc2d: c6 05 74 f3 23 00 01 movb $0x1,0x23f374(%rip) # 66afa8 0.00 : 42bc34: e8 97 7b fd ff callq 4037d0 0.00 : 42bc39: 48 89 c3 mov %rax,%rbx 0.00 : 42bc3c: e9 b1 63 ff ff jmpq 421ff2 : } : else if (strcmp(prev_wd, "ON_ERROR_ROLLBACK") == 0) 0.00 : 42bc41: bf ea 66 44 00 mov $0x4466ea,%edi 0.00 : 42bc46: b9 12 00 00 00 mov $0x12,%ecx 0.00 : 42bc4b: 4c 89 c6 mov %r8,%rsi 0.00 : 42bc4e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bc50: 75 28 jne 42bc7a : { : static const char *const my_list[] = : {"on", "off", "interactive", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42bc52: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bc56: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bc5b: 48 c7 05 22 f3 23 00 movq $0x455840,0x23f322(%rip) # 66af88 0.00 : 42bc62: 40 58 45 00 0.00 : 42bc66: c6 05 3b f3 23 00 01 movb $0x1,0x23f33b(%rip) # 66afa8 0.00 : 42bc6d: e8 5e 7b fd ff callq 4037d0 0.00 : 42bc72: 48 89 c3 mov %rax,%rbx 0.00 : 42bc75: e9 78 63 ff ff jmpq 421ff2 : } : else if (strcmp(prev_wd, "ON_ERROR_STOP") == 0) 0.00 : 42bc7a: bf a3 66 44 00 mov $0x4466a3,%edi 0.00 : 42bc7f: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : 42bc84: 4c 89 c6 mov %r8,%rsi 0.00 : 42bc87: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bc89: 75 28 jne 42bcb3 : COMPLETE_WITH_LIST_CS(boolean_value_list); 0.00 : 42bc8b: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bc8f: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bc94: 48 c7 05 e9 f2 23 00 movq $0x455930,0x23f2e9(%rip) # 66af88 0.00 : 42bc9b: 30 59 45 00 0.00 : 42bc9f: c6 05 02 f3 23 00 01 movb $0x1,0x23f302(%rip) # 66afa8 0.00 : 42bca6: e8 25 7b fd ff callq 4037d0 0.00 : 42bcab: 48 89 c3 mov %rax,%rbx 0.00 : 42bcae: e9 3f 63 ff ff jmpq 421ff2 : else if (strcmp(prev_wd, "QUIET") == 0) 0.00 : 42bcb3: bf b1 66 44 00 mov $0x4466b1,%edi 0.00 : 42bcb8: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 42bcbd: 4c 89 c6 mov %r8,%rsi 0.00 : 42bcc0: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bcc2: 75 28 jne 42bcec : COMPLETE_WITH_LIST_CS(boolean_value_list); 0.00 : 42bcc4: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bcc8: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bccd: 48 c7 05 b0 f2 23 00 movq $0x455930,0x23f2b0(%rip) # 66af88 0.00 : 42bcd4: 30 59 45 00 0.00 : 42bcd8: c6 05 c9 f2 23 00 01 movb $0x1,0x23f2c9(%rip) # 66afa8 0.00 : 42bcdf: e8 ec 7a fd ff callq 4037d0 0.00 : 42bce4: 48 89 c3 mov %rax,%rbx 0.00 : 42bce7: e9 06 63 ff ff jmpq 421ff2 : else if (strcmp(prev_wd, "SINGLELINE") == 0) 0.00 : 42bcec: bf b7 66 44 00 mov $0x4466b7,%edi 0.00 : 42bcf1: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 42bcf6: 4c 89 c6 mov %r8,%rsi 0.00 : 42bcf9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bcfb: 75 28 jne 42bd25 : COMPLETE_WITH_LIST_CS(boolean_value_list); 0.00 : 42bcfd: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bd01: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bd06: 48 c7 05 77 f2 23 00 movq $0x455930,0x23f277(%rip) # 66af88 0.00 : 42bd0d: 30 59 45 00 0.00 : 42bd11: c6 05 90 f2 23 00 01 movb $0x1,0x23f290(%rip) # 66afa8 0.00 : 42bd18: e8 b3 7a fd ff callq 4037d0 0.00 : 42bd1d: 48 89 c3 mov %rax,%rbx 0.00 : 42bd20: e9 cd 62 ff ff jmpq 421ff2 : else if (strcmp(prev_wd, "SINGLESTEP") == 0) 0.00 : 42bd25: bf c2 66 44 00 mov $0x4466c2,%edi 0.00 : 42bd2a: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 42bd2f: 4c 89 c6 mov %r8,%rsi 0.00 : 42bd32: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bd34: 75 28 jne 42bd5e : COMPLETE_WITH_LIST_CS(boolean_value_list); 0.00 : 42bd36: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bd3a: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bd3f: 48 c7 05 3e f2 23 00 movq $0x455930,0x23f23e(%rip) # 66af88 0.00 : 42bd46: 30 59 45 00 0.00 : 42bd4a: c6 05 57 f2 23 00 01 movb $0x1,0x23f257(%rip) # 66afa8 0.00 : 42bd51: e8 7a 7a fd ff callq 4037d0 0.00 : 42bd56: 48 89 c3 mov %rax,%rbx 0.00 : 42bd59: e9 94 62 ff ff jmpq 421ff2 : else if (strcmp(prev_wd, "VERBOSITY") == 0) 0.00 : 42bd5e: bf 20 67 44 00 mov $0x446720,%edi 0.00 : 42bd63: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 42bd68: 4c 89 c6 mov %r8,%rsi 0.00 : 42bd6b: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42bd6d: 0f 85 a0 64 ff ff jne 422213 : { : static const char *const my_list[] = : {"default", "verbose", "terse", NULL}; : : COMPLETE_WITH_LIST_CS(my_list); 0.00 : 42bd73: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 42bd77: be 10 c1 42 00 mov $0x42c110,%esi 0.00 : 42bd7c: 48 c7 05 01 f2 23 00 movq $0x455820,0x23f201(%rip) # 66af88 0.00 : 42bd83: 20 58 45 00 0.00 : 42bd87: c6 05 1a f2 23 00 01 movb $0x1,0x23f21a(%rip) # 66afa8 0.00 : 42bd8e: e8 3d 7a fd ff callq 4037d0 0.00 : 42bd93: 48 89 c3 mov %rax,%rbx 0.00 : 42bd96: e9 57 62 ff ff jmpq 421ff2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469b70 : ??:0 100.00 : 469b70: ff 25 aa d8 6f 00 jmpq *0x6fd8aa(%rip) # b67420 <_GLOBAL_OFFSET_TABLE_+0x420> 0.00 : 469b76: 68 81 00 00 00 pushq $0x81 0.00 : 469b7b: e9 d0 f7 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:68 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:69 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:109 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:132 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:173 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004712a0 : : */ : IndexTuple : index_form_tuple(TupleDesc tupleDescriptor, : Datum *values, : bool *isnull) : { 0.00 : 4712a0: 55 push %rbp 0.00 : 4712a1: 49 89 f0 mov %rsi,%r8 0.00 : 4712a4: 48 89 e5 mov %rsp,%rbp 0.00 : 4712a7: 41 57 push %r15 0.00 : 4712a9: 49 89 ff mov %rdi,%r15 0.00 : 4712ac: 41 56 push %r14 0.00 : 4712ae: 49 89 d6 mov %rdx,%r14 0.00 : 4712b1: 41 55 push %r13 0.00 : 4712b3: 41 54 push %r12 0.00 : 4712b5: 53 push %rbx 0.00 : 4712b6: 48 81 ec 68 01 00 00 sub $0x168,%rsp : data_size, : hoff; : int i; : unsigned short infomask = 0; : bool hasnull = false; : uint16 tupmask = 0; 0.00 : 4712bd: 66 c7 45 ce 00 00 movw $0x0,-0x32(%rbp) : int numberOfAttributes = tupleDescriptor->natts; 0.00 : 4712c3: 44 8b 2f mov (%rdi),%r13d : #ifdef TOAST_INDEX_HACK : Datum untoasted_values[INDEX_MAX_KEYS]; : bool untoasted_free[INDEX_MAX_KEYS]; : #endif : : if (numberOfAttributes > INDEX_MAX_KEYS) 0.00 : 4712c6: 41 83 fd 20 cmp $0x20,%r13d 0.00 : 4712ca: 0f 8f 4d 03 00 00 jg 47161d : (errcode(ERRCODE_TOO_MANY_COLUMNS), : errmsg("number of index columns (%d) exceeds limit (%d)", : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 4712d0: 45 85 ed test %r13d,%r13d 0.00 : 4712d3: 0f 8e c3 02 00 00 jle 47159c : Datum untoasted_values[INDEX_MAX_KEYS]; : bool untoasted_free[INDEX_MAX_KEYS]; : #endif : : if (numberOfAttributes > INDEX_MAX_KEYS) : ereport(ERROR, 0.00 : 4712d9: 31 db xor %ebx,%ebx 0.00 : 4712db: 4c 8d 55 a0 lea -0x60(%rbp),%r10 0.00 : 4712df: eb 14 jmp 4712f5 0.00 : 4712e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* successful compression */ : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); : untoasted_values[i] = cvalue; : untoasted_free[i] = true; 0.00 : 4712e8: 48 83 c3 01 add $0x1,%rbx : (errcode(ERRCODE_TOO_MANY_COLUMNS), : errmsg("number of index columns (%d) exceeds limit (%d)", : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 4712ec: 41 39 dd cmp %ebx,%r13d 0.00 : 4712ef: 0f 8e ab 00 00 00 jle 4713a0 : { : Form_pg_attribute att = tupleDescriptor->attrs[i]; 0.00 : 4712f5: 49 8b 47 08 mov 0x8(%r15),%rax : : untoasted_values[i] = values[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:68 16.67 : 4712f9: 49 8b 3c d8 mov (%r8,%rbx,8),%rdi : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) : { : Form_pg_attribute att = tupleDescriptor->attrs[i]; 0.00 : 4712fd: 4c 8b 24 d8 mov (%rax,%rbx,8),%r12 : : untoasted_values[i] = values[i]; : untoasted_free[i] = false; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:69 16.67 : 471301: 41 c6 04 1a 00 movb $0x0,(%r10,%rbx,1) : : /* Do nothing if value is NULL or not of varlena type */ : if (isnull[i] || att->attlen != -1) 0.00 : 471306: 41 80 3c 1e 00 cmpb $0x0,(%r14,%rbx,1) : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) : { : Form_pg_attribute att = tupleDescriptor->attrs[i]; : : untoasted_values[i] = values[i]; 0.00 : 47130b: 48 89 bc dd a0 fe ff mov %rdi,-0x160(%rbp,%rbx,8) 0.00 : 471312: ff : untoasted_free[i] = false; : : /* Do nothing if value is NULL or not of varlena type */ : if (isnull[i] || att->attlen != -1) 0.00 : 471313: 75 d3 jne 4712e8 0.00 : 471315: 66 41 83 7c 24 4c ff cmpw $0xffff,0x4c(%r12) 0.00 : 47131c: 75 ca jne 4712e8 : : /* : * If value is stored EXTERNAL, must fetch it so we are not depending : * on outside storage. This should be improved someday. : */ : if (VARATT_IS_EXTERNAL(DatumGetPointer(values[i]))) 0.00 : 47131e: 80 3f 01 cmpb $0x1,(%rdi) 0.00 : 471321: 0f 84 a9 01 00 00 je 4714d0 : : /* : * If value is above size target, and is of a compressible datatype, : * try to compress it in-line. : */ : if (!VARATT_IS_EXTENDED(DatumGetPointer(untoasted_values[i])) && 0.00 : 471327: 48 8b bc dd a0 fe ff mov -0x160(%rbp,%rbx,8),%rdi 0.00 : 47132e: ff 0.00 : 47132f: f6 07 03 testb $0x3,(%rdi) 0.00 : 471332: 75 b4 jne 4712e8 0.00 : 471334: 8b 07 mov (%rdi),%eax 0.00 : 471336: c1 e8 02 shr $0x2,%eax 0.00 : 471339: 3d fe 01 00 00 cmp $0x1fe,%eax 0.00 : 47133e: 76 a8 jbe 4712e8 0.00 : 471340: 41 0f b6 44 24 5d movzbl 0x5d(%r12),%eax 0.00 : 471346: 3c 78 cmp $0x78,%al 0.00 : 471348: 74 04 je 47134e 0.00 : 47134a: 3c 6d cmp $0x6d,%al 0.00 : 47134c: 75 9a jne 4712e8 : VARSIZE(DatumGetPointer(untoasted_values[i])) > TOAST_INDEX_TARGET && : (att->attstorage == 'x' || att->attstorage == 'm')) : { : Datum cvalue = toast_compress_datum(untoasted_values[i]); 0.00 : 47134e: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : 471355: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) 0.00 : 47135c: e8 df ff 02 00 callq 4a1340 : : if (DatumGetPointer(cvalue) != NULL) 0.00 : 471361: 48 85 c0 test %rax,%rax : */ : if (!VARATT_IS_EXTENDED(DatumGetPointer(untoasted_values[i])) && : VARSIZE(DatumGetPointer(untoasted_values[i])) > TOAST_INDEX_TARGET && : (att->attstorage == 'x' || att->attstorage == 'm')) : { : Datum cvalue = toast_compress_datum(untoasted_values[i]); 0.00 : 471364: 49 89 c4 mov %rax,%r12 : : if (DatumGetPointer(cvalue) != NULL) 0.00 : 471367: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : 47136e: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 471375: 0f 84 6d ff ff ff je 4712e8 : { : /* successful compression */ : if (untoasted_free[i]) 0.00 : 47137b: 41 80 3c 1a 00 cmpb $0x0,(%r10,%rbx,1) 0.00 : 471380: 0f 85 f6 01 00 00 jne 47157c : pfree(DatumGetPointer(untoasted_values[i])); : untoasted_values[i] = cvalue; 0.00 : 471386: 4c 89 a4 dd a0 fe ff mov %r12,-0x160(%rbp,%rbx,8) 0.00 : 47138d: ff : untoasted_free[i] = true; 0.00 : 47138e: 41 c6 04 1a 01 movb $0x1,(%r10,%rbx,1) 0.00 : 471393: 48 83 c3 01 add $0x1,%rbx : (errcode(ERRCODE_TOO_MANY_COLUMNS), : errmsg("number of index columns (%d) exceeds limit (%d)", : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471397: 41 39 dd cmp %ebx,%r13d 0.00 : 47139a: 0f 8f 55 ff ff ff jg 4712f5 : } : #endif : : for (i = 0; i < numberOfAttributes; i++) : { : if (isnull[i]) 0.00 : 4713a0: 31 d2 xor %edx,%edx 0.00 : 4713a2: 41 80 3e 00 cmpb $0x0,(%r14) 0.00 : 4713a6: 4c 89 f1 mov %r14,%rcx 0.00 : 4713a9: 74 15 je 4713c0 0.00 : 4713ab: e9 58 01 00 00 jmpq 471508 0.00 : 4713b0: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 4713b4: 48 83 c1 01 add $0x1,%rcx 0.00 : 4713b8: 84 c0 test %al,%al 0.00 : 4713ba: 0f 85 48 01 00 00 jne 471508 : } : } : } : #endif : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:109 16.67 : 4713c0: 83 c2 01 add $0x1,%edx 0.00 : 4713c3: 41 39 d5 cmp %edx,%r13d 0.00 : 4713c6: 7f e8 jg 4713b0 : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 4713c8: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi 0.00 : 4713cf: 4c 89 f2 mov %r14,%rdx 0.00 : 4713d2: 4c 89 ff mov %r15,%rdi 0.00 : 4713d5: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 4713dc: 45 31 e4 xor %r12d,%r12d : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 4713df: e8 8c ef ff ff callq 470370 0.00 : 4713e4: 48 89 c3 mov %rax,%rbx : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 4713e7: 48 8d 40 0f lea 0xf(%rax),%rax 0.00 : 4713eb: 48 83 e0 f8 and $0xfffffffffffffff8,%rax : : tp = (char *) palloc0(size); 0.00 : 4713ef: 48 89 c7 mov %rax,%rdi : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 4713f2: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : : tp = (char *) palloc0(size); /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:132 16.67 : 4713f9: e8 72 7b 32 00 callq 798f70 : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 16.67 : 4713fe: 4c 8d 4d ce lea -0x32(%rbp),%r9 0.00 : 471402: 48 89 c1 mov %rax,%rcx 0.00 : 471405: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi 0.00 : 47140c: 48 83 c1 08 add $0x8,%rcx 0.00 : 471410: 49 89 d8 mov %rbx,%r8 0.00 : 471413: 4c 89 f2 mov %r14,%rdx 0.00 : 471416: 4c 89 ff mov %r15,%rdi : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); 0.00 : 471419: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 471420: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 471427: 00 0.00 : 471428: e8 33 eb ff ff callq 46ff60 0.00 : 47142d: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 471434: 31 db xor %ebx,%ebx 0.00 : 471436: eb 11 jmp 471449 0.00 : 471438: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47143f: 00 : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) : { : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); 0.00 : 471440: 48 83 c3 01 add $0x1,%rbx : data_size, : &tupmask, : (hasnull ? (bits8 *) tp + sizeof(IndexTupleData) : NULL)); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471444: 41 39 dd cmp %ebx,%r13d 0.00 : 471447: 7e 2b jle 471474 : { : if (untoasted_free[i]) 0.00 : 471449: 41 80 3c 1a 00 cmpb $0x0,(%r10,%rbx,1) 0.00 : 47144e: 74 f0 je 471440 : pfree(DatumGetPointer(untoasted_values[i])); 0.00 : 471450: 48 8b bc dd a0 fe ff mov -0x160(%rbp,%rbx,8),%rdi 0.00 : 471457: ff 0.00 : 471458: 48 83 c3 01 add $0x1,%rbx 0.00 : 47145c: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) 0.00 : 471463: e8 18 77 32 00 callq 798b80 : data_size, : &tupmask, : (hasnull ? (bits8 *) tp + sizeof(IndexTupleData) : NULL)); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471468: 41 39 dd cmp %ebx,%r13d : { : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); 0.00 : 47146b: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 : data_size, : &tupmask, : (hasnull ? (bits8 *) tp + sizeof(IndexTupleData) : NULL)); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471472: 7f d5 jg 471449 : * which is used for HeapTuples, but we want an indextuple infomask. The : * only relevant info is the "has variable attributes" field. We have : * already set the hasnull bit above. : */ : if (tupmask & HEAP_HASVARWIDTH) : infomask |= INDEX_VAR_MASK; 0.00 : 471474: 44 89 e0 mov %r12d,%eax 0.00 : 471477: 80 cc 40 or $0x40,%ah 0.00 : 47147a: f6 45 ce 02 testb $0x2,-0x32(%rbp) 0.00 : 47147e: 44 0f 45 e0 cmovne %eax,%r12d : : /* : * Here we make sure that the size will fit in the field reserved for it : * in t_info. : */ : if ((size & INDEX_SIZE_MASK) != size) 0.00 : 471482: 48 8b 85 98 fe ff ff mov -0x168(%rbp),%rax 0.00 : 471489: 25 ff 1f 00 00 and $0x1fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:173 16.67 : 47148e: 48 3b 85 98 fe ff ff cmp -0x168(%rbp),%rax 0.00 : 471495: 0f 85 5d 01 00 00 jne 4715f8 : infomask |= size; : : /* : * initialize metadata : */ : tuple->t_info = infomask; 0.00 : 47149b: 66 44 0b a5 98 fe ff or -0x168(%rbp),%r12w 0.00 : 4714a2: ff 0.00 : 4714a3: 48 8b 85 90 fe ff ff mov -0x170(%rbp),%rax 0.00 : 4714aa: 66 44 89 60 06 mov %r12w,0x6(%rax) : return tuple; : } 0.00 : 4714af: 48 8b 85 90 fe ff ff mov -0x170(%rbp),%rax 0.00 : 4714b6: 48 81 c4 68 01 00 00 add $0x168,%rsp 0.00 : 4714bd: 5b pop %rbx 0.00 : 4714be: 41 5c pop %r12 0.00 : 4714c0: 41 5d pop %r13 0.00 : 4714c2: 41 5e pop %r14 0.00 : 4714c4: 41 5f pop %r15 0.00 : 4714c6: c9 leaveq 0.00 : 4714c7: c3 retq 0.00 : 4714c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4714cf: 00 : * If value is stored EXTERNAL, must fetch it so we are not depending : * on outside storage. This should be improved someday. : */ : if (VARATT_IS_EXTERNAL(DatumGetPointer(values[i]))) : { : untoasted_values[i] = 0.00 : 4714d0: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : 4714d7: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) 0.00 : 4714de: e8 3d 08 03 00 callq 4a1d20 0.00 : 4714e3: 48 89 84 dd a0 fe ff mov %rax,-0x160(%rbp,%rbx,8) 0.00 : 4714ea: ff : PointerGetDatum(heap_tuple_fetch_attr((struct varlena *) : DatumGetPointer(values[i]))); : untoasted_free[i] = true; 0.00 : 4714eb: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 4714f2: 41 c6 04 1a 01 movb $0x1,(%r10,%rbx,1) 0.00 : 4714f7: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : 4714fe: e9 24 fe ff ff jmpq 471327 0.00 : 471503: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 471508: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi 0.00 : 47150f: 4c 89 f2 mov %r14,%rdx 0.00 : 471512: 4c 89 ff mov %r15,%rdi 0.00 : 471515: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 47151c: 41 bc 00 80 ff ff mov $0xffff8000,%r12d : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 471522: e8 49 ee ff ff callq 470370 0.00 : 471527: 48 89 c3 mov %rax,%rbx : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 47152a: 48 8d 40 17 lea 0x17(%rax),%rax 0.00 : 47152e: 48 83 e0 f8 and $0xfffffffffffffff8,%rax : : tp = (char *) palloc0(size); 0.00 : 471532: 48 89 c7 mov %rax,%rdi : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 471535: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : : tp = (char *) palloc0(size); 0.00 : 47153c: e8 2f 7a 32 00 callq 798f70 : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 471541: 4c 8d 4d ce lea -0x32(%rbp),%r9 0.00 : 471545: 48 89 c1 mov %rax,%rcx 0.00 : 471548: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); 0.00 : 47154f: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 471556: 48 83 c1 10 add $0x10,%rcx 0.00 : 47155a: 48 83 c0 08 add $0x8,%rax 0.00 : 47155e: 49 89 d8 mov %rbx,%r8 0.00 : 471561: 4c 89 f2 mov %r14,%rdx 0.00 : 471564: 4c 89 ff mov %r15,%rdi 0.00 : 471567: 48 89 04 24 mov %rax,(%rsp) 0.00 : 47156b: e8 f0 e9 ff ff callq 46ff60 0.00 : 471570: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 471577: e9 b8 fe ff ff jmpq 471434 : : if (DatumGetPointer(cvalue) != NULL) : { : /* successful compression */ : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); 0.00 : 47157c: 48 8b bc dd a0 fe ff mov -0x160(%rbp,%rbx,8),%rdi 0.00 : 471583: ff 0.00 : 471584: e8 f7 75 32 00 callq 798b80 0.00 : 471589: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 471590: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : 471597: e9 ea fd ff ff jmpq 471386 : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 47159c: 4c 8d a5 a0 fe ff ff lea -0x160(%rbp),%r12 0.00 : 4715a3: 4c 89 e6 mov %r12,%rsi 0.00 : 4715a6: e8 c5 ed ff ff callq 470370 0.00 : 4715ab: 48 89 c3 mov %rax,%rbx : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 4715ae: 48 8d 40 0f lea 0xf(%rax),%rax 0.00 : 4715b2: 48 83 e0 f8 and $0xfffffffffffffff8,%rax : : tp = (char *) palloc0(size); 0.00 : 4715b6: 48 89 c7 mov %rax,%rdi : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 4715b9: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : : tp = (char *) palloc0(size); 0.00 : 4715c0: e8 ab 79 32 00 callq 798f70 : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 4715c5: 4c 8d 4d ce lea -0x32(%rbp),%r9 0.00 : 4715c9: 48 89 c1 mov %rax,%rcx 0.00 : 4715cc: 4c 89 e6 mov %r12,%rsi 0.00 : 4715cf: 48 83 c1 08 add $0x8,%rcx 0.00 : 4715d3: 49 89 d8 mov %rbx,%r8 0.00 : 4715d6: 4c 89 f2 mov %r14,%rdx 0.00 : 4715d9: 4c 89 ff mov %r15,%rdi : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); 0.00 : 4715dc: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 4715e3: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 4715ea: 00 0.00 : 4715eb: 45 31 e4 xor %r12d,%r12d 0.00 : 4715ee: e8 6d e9 ff ff callq 46ff60 0.00 : 4715f3: e9 7c fe ff ff jmpq 471474 : /* : * Here we make sure that the size will fit in the field reserved for it : * in t_info. : */ : if ((size & INDEX_SIZE_MASK) != size) : ereport(ERROR, 0.00 : 4715f8: 45 31 c0 xor %r8d,%r8d 0.00 : 4715fb: b9 80 f8 7a 00 mov $0x7af880,%ecx 0.00 : 471600: ba b1 00 00 00 mov $0xb1,%edx 0.00 : 471605: be 0a f8 7a 00 mov $0x7af80a,%esi 0.00 : 47160a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 47160f: e8 ac 94 30 00 callq 77aac0 0.00 : 471614: 84 c0 test %al,%al 0.00 : 471616: 75 52 jne 47166a 0.00 : 471618: e8 b3 7e ff ff callq 4694d0 : Datum untoasted_values[INDEX_MAX_KEYS]; : bool untoasted_free[INDEX_MAX_KEYS]; : #endif : : if (numberOfAttributes > INDEX_MAX_KEYS) : ereport(ERROR, 0.00 : 47161d: 45 31 c0 xor %r8d,%r8d 0.00 : 471620: b9 80 f8 7a 00 mov $0x7af880,%ecx 0.00 : 471625: ba 3d 00 00 00 mov $0x3d,%edx 0.00 : 47162a: be 0a f8 7a 00 mov $0x7af80a,%esi 0.00 : 47162f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 471634: e8 87 94 30 00 callq 77aac0 0.00 : 471639: 84 c0 test %al,%al 0.00 : 47163b: 74 db je 471618 0.00 : 47163d: bf 18 f8 7a 00 mov $0x7af818,%edi 0.00 : 471642: ba 20 00 00 00 mov $0x20,%edx 0.00 : 471647: 44 89 ee mov %r13d,%esi 0.00 : 47164a: 31 c0 xor %eax,%eax 0.00 : 47164c: e8 4f b2 30 00 callq 77c8a0 0.00 : 471651: bf 05 01 04 01 mov $0x1040105,%edi 0.00 : 471656: 89 c3 mov %eax,%ebx : /* : * Here we make sure that the size will fit in the field reserved for it : * in t_info. : */ : if ((size & INDEX_SIZE_MASK) != size) : ereport(ERROR, 0.00 : 471658: e8 f3 b6 30 00 callq 77cd50 0.00 : 47165d: 89 de mov %ebx,%esi 0.00 : 47165f: 89 c7 mov %eax,%edi 0.00 : 471661: 31 c0 xor %eax,%eax 0.00 : 471663: e8 78 8f 30 00 callq 77a5e0 0.00 : 471668: eb ae jmp 471618 0.00 : 47166a: 48 8b b5 98 fe ff ff mov -0x168(%rbp),%rsi 0.00 : 471671: bf 48 f8 7a 00 mov $0x7af848,%edi 0.00 : 471676: ba ff 1f 00 00 mov $0x1fff,%edx 0.00 : 47167b: 31 c0 xor %eax,%eax 0.00 : 47167d: e8 1e b2 30 00 callq 77c8a0 0.00 : 471682: bf 05 01 00 00 mov $0x105,%edi 0.00 : 471687: 89 c3 mov %eax,%ebx 0.00 : 471689: eb cd jmp 471658 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:68 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:53 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:62 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004906d0 : : return hash_uint32(PG_GETARG_INT32(0)); : } : : Datum : hashint8(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:53 16.67 : 4906d0: 55 push %rbp : * necessary to support cross-type hash joins across these input types. : * Since all three types are signed, we can xor the high half of the int8 : * value if the sign is positive, or the complement of the high half when : * the sign is negative. : */ : int64 val = PG_GETARG_INT64(0); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:62 16.67 : 4906d1: 48 8b 47 20 mov 0x20(%rdi),%rax : return hash_uint32(PG_GETARG_INT32(0)); : } : : Datum : hashint8(PG_FUNCTION_ARGS) : { 0.00 : 4906d5: 48 89 e5 mov %rsp,%rbp : * value if the sign is positive, or the complement of the high half when : * the sign is negative. : */ : int64 val = PG_GETARG_INT64(0); : uint32 lohalf = (uint32) val; : uint32 hihalf = (uint32) (val >> 32); 0.00 : 4906d8: 48 89 c7 mov %rax,%rdi 0.00 : 4906db: 48 c1 ef 20 shr $0x20,%rdi : : lohalf ^= (val >= 0) ? hihalf : ~hihalf; 0.00 : 4906df: 48 85 c0 test %rax,%rax 0.00 : 4906e2: 79 02 jns 4906e6 0.00 : 4906e4: f7 d7 not %edi : : return hash_uint32(lohalf); : } 0.00 : 4906e6: c9 leaveq : uint32 lohalf = (uint32) val; : uint32 hihalf = (uint32) (val >> 32); : : lohalf ^= (val >= 0) ? hihalf : ~hihalf; : : return hash_uint32(lohalf); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:68 66.67 : 4906e7: 31 c7 xor %eax,%edi 0.00 : 4906e9: e9 72 ff ff ff jmpq 490660 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2893 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2694 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049a1f0 : : */ : HTSU_Result : heap_delete(Relation relation, ItemPointer tid, : CommandId cid, Snapshot crosscheck, bool wait, : HeapUpdateFailureData *hufd) : { 0.00 : 49a1f0: 55 push %rbp 0.00 : 49a1f1: 48 89 e5 mov %rsp,%rbp 0.00 : 49a1f4: 41 57 push %r15 0.00 : 49a1f6: 41 56 push %r14 0.00 : 49a1f8: 49 89 fe mov %rdi,%r14 0.00 : 49a1fb: 41 55 push %r13 0.00 : 49a1fd: 41 54 push %r12 0.00 : 49a1ff: 49 89 f4 mov %rsi,%r12 0.00 : 49a202: 53 push %rbx 0.00 : 49a203: 48 81 ec 48 01 00 00 sub $0x148,%rsp 0.00 : 49a20a: 89 95 ec fe ff ff mov %edx,-0x114(%rbp) 0.00 : 49a210: 48 89 8d d0 fe ff ff mov %rcx,-0x130(%rbp) 0.00 : 49a217: 4c 89 8d c0 fe ff ff mov %r9,-0x140(%rbp) 0.00 : 49a21e: 44 88 85 cf fe ff ff mov %r8b,-0x131(%rbp) : HTSU_Result result; : TransactionId xid = GetCurrentTransactionId(); 0.00 : 49a225: e8 96 a6 02 00 callq 4c48c0 : ItemId lp; : HeapTupleData tp; : Page page; : BlockNumber block; : Buffer buffer; : Buffer vmbuffer = InvalidBuffer; 0.00 : 49a22a: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : heap_delete(Relation relation, ItemPointer tid, : CommandId cid, Snapshot crosscheck, bool wait, : HeapUpdateFailureData *hufd) : { : HTSU_Result result; : TransactionId xid = GetCurrentTransactionId(); 0.00 : 49a231: 89 85 dc fe ff ff mov %eax,-0x124(%rbp) : bool old_key_copied = false; : : Assert(ItemPointerIsValid(tid)); : : block = ItemPointerGetBlockNumber(tid); : buffer = ReadBuffer(relation, block); 0.00 : 49a237: 4c 89 f7 mov %r14,%rdi : new_infomask2; : bool have_tuple_lock = false; : bool iscombo; : bool all_visible_cleared = false; : HeapTuple old_key_tuple = NULL; /* replica identity of the tuple */ : bool old_key_copied = false; 0.00 : 49a23a: c6 45 ce 00 movb $0x0,-0x32(%rbp) : : Assert(ItemPointerIsValid(tid)); : : block = ItemPointerGetBlockNumber(tid); 0.00 : 49a23e: 41 0f b7 1c 24 movzwl (%r12),%ebx 0.00 : 49a243: 41 0f b7 44 24 02 movzwl 0x2(%r12),%eax 0.00 : 49a249: c1 e3 10 shl $0x10,%ebx 0.00 : 49a24c: 09 c3 or %eax,%ebx : buffer = ReadBuffer(relation, block); 0.00 : 49a24e: 89 de mov %ebx,%esi 0.00 : 49a250: e8 4b c4 1d 00 callq 6766a0 : page = BufferGetPage(buffer); 0.00 : 49a255: 85 c0 test %eax,%eax : bool old_key_copied = false; : : Assert(ItemPointerIsValid(tid)); : : block = ItemPointerGetBlockNumber(tid); : buffer = ReadBuffer(relation, block); 0.00 : 49a257: 41 89 c5 mov %eax,%r13d : page = BufferGetPage(buffer); 0.00 : 49a25a: 0f 88 88 04 00 00 js 49a6e8 0.00 : 49a260: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 49a264: 48 8b 15 8d 58 72 00 mov 0x72588d(%rip),%rdx # bbfaf8 0.00 : 49a26b: 48 98 cltq 0.00 : 49a26d: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49a271: 48 01 d0 add %rdx,%rax 0.00 : 49a274: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) : * Before locking the buffer, pin the visibility map page if it appears to : * be necessary. Since we haven't got the lock yet, someone else might be : * in the middle of changing this, so we'll need to recheck after we have : * the lock. : */ : if (PageIsAllVisible(page)) 0.00 : 49a27b: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : 49a282: f6 41 0a 04 testb $0x4,0xa(%rcx) 0.00 : 49a286: 0f 85 44 04 00 00 jne 49a6d0 : visibilitymap_pin(relation, block, &vmbuffer); : : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2694 33.33 : 49a28c: be 02 00 00 00 mov $0x2,%esi 0.00 : 49a291: 44 89 ef mov %r13d,%edi 0.00 : 49a294: e8 77 a4 1d 00 callq 674710 : * If we didn't pin the visibility map page and the page has become all : * visible while we were busy locking the buffer, we'll have to unlock and : * re-lock, to avoid holding the buffer lock across an I/O. That's a bit : * unfortunate, but hopefully shouldn't happen often. : */ : if (vmbuffer == InvalidBuffer && PageIsAllVisible(page)) 0.00 : 49a299: 44 8b 55 c4 mov -0x3c(%rbp),%r10d 0.00 : 49a29d: 45 85 d2 test %r10d,%r10d 0.00 : 49a2a0: 75 11 jne 49a2b3 0.00 : 49a2a2: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 49a2a9: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49a2ad: 0f 85 97 04 00 00 jne 49a74a : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : visibilitymap_pin(relation, block, &vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : : lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid)); 0.00 : 49a2b3: 41 0f b7 54 24 04 movzwl 0x4(%r12),%edx : Assert(ItemIdIsNormal(lp)); : : tp.t_tableOid = RelationGetRelid(relation); : tp.t_data = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49a2b9: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx : tp.t_len = ItemIdGetLength(lp); : tp.t_self = *tid; 0.00 : 49a2c0: 45 31 ff xor %r15d,%r15d : } : : lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid)); : Assert(ItemIdIsNormal(lp)); : : tp.t_tableOid = RelationGetRelid(relation); 0.00 : 49a2c3: 41 8b 46 40 mov 0x40(%r14),%eax : tp.t_data = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49a2c7: 48 83 c2 03 add $0x3,%rdx : } : : lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid)); : Assert(ItemIdIsNormal(lp)); : : tp.t_tableOid = RelationGetRelid(relation); 0.00 : 49a2cb: 89 45 9c mov %eax,-0x64(%rbp) : tp.t_data = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49a2ce: 0f b7 44 91 08 movzwl 0x8(%rcx,%rdx,4),%eax 0.00 : 49a2d3: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 49a2d8: 48 01 c8 add %rcx,%rax 0.00 : 49a2db: 48 89 45 a0 mov %rax,-0x60(%rbp) : tp.t_len = ItemIdGetLength(lp); 0.00 : 49a2df: 0f b7 44 91 0a movzwl 0xa(%rcx,%rdx,4),%eax 0.00 : 49a2e4: 66 d1 e8 shr %ax 0.00 : 49a2e7: 0f b7 c0 movzwl %ax,%eax 0.00 : 49a2ea: 89 45 90 mov %eax,-0x70(%rbp) : tp.t_self = *tid; 0.00 : 49a2ed: 41 8b 04 24 mov (%r12),%eax 0.00 : 49a2f1: 89 45 94 mov %eax,-0x6c(%rbp) 0.00 : 49a2f4: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 49a2fa: 66 89 45 98 mov %ax,-0x68(%rbp) : * this arranges that we stay at the head of the line while rechecking : * tuple state. : */ : if (!have_tuple_lock) : { : LockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); 0.00 : 49a2fe: 48 8d 45 90 lea -0x70(%rbp),%rax 0.00 : 49a302: 48 83 c0 04 add $0x4,%rax 0.00 : 49a306: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) 0.00 : 49a30d: 0f 1f 00 nopl (%rax) : tp.t_data = (HeapTupleHeader) PageGetItem(page, lp); : tp.t_len = ItemIdGetLength(lp); : tp.t_self = *tid; : : l1: : result = HeapTupleSatisfiesUpdate(&tp, cid, buffer); 0.00 : 49a310: 8b b5 ec fe ff ff mov -0x114(%rbp),%esi 0.00 : 49a316: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 49a31a: 44 89 ea mov %r13d,%edx 0.00 : 49a31d: e8 7e b7 30 00 callq 7a5aa0 : : if (result == HeapTupleInvisible) 0.00 : 49a322: 83 f8 01 cmp $0x1,%eax 0.00 : 49a325: 0f 84 d8 03 00 00 je 49a703 : { : UnlockReleaseBuffer(buffer); : elog(ERROR, "attempted to delete invisible tuple"); : } : else if (result == HeapTupleBeingUpdated && wait) 0.00 : 49a32b: 83 f8 04 cmp $0x4,%eax 0.00 : 49a32e: 0f 84 7c 02 00 00 je 49a5b0 0.00 : 49a334: 85 c0 test %eax,%eax 0.00 : 49a336: 89 c3 mov %eax,%ebx 0.00 : 49a338: 0f 94 c2 sete %dl : result = HeapTupleMayBeUpdated; : else : result = HeapTupleUpdated; : } : : if (crosscheck != InvalidSnapshot && result == HeapTupleMayBeUpdated) 0.00 : 49a33b: 48 83 bd d0 fe ff ff cmpq $0x0,-0x130(%rbp) 0.00 : 49a342: 00 0.00 : 49a343: 0f 84 d7 01 00 00 je 49a520 0.00 : 49a349: 84 d2 test %dl,%dl 0.00 : 49a34b: 0f 84 cf 01 00 00 je 49a520 : { : /* Perform additional check for transaction-snapshot mode RI updates */ : if (!HeapTupleSatisfiesVisibility(&tp, crosscheck, buffer)) 0.00 : 49a351: 48 8b b5 d0 fe ff ff mov -0x130(%rbp),%rsi 0.00 : 49a358: 44 89 ea mov %r13d,%edx 0.00 : 49a35b: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 49a35f: bb 03 00 00 00 mov $0x3,%ebx 0.00 : 49a364: ff 16 callq *(%rsi) 0.00 : 49a366: 84 c0 test %al,%al 0.00 : 49a368: 0f 84 ba 01 00 00 je 49a528 : : /* : * We're about to do the actual delete -- check for conflict first, to : * avoid possibly having to roll back work we've just done. : */ : CheckForSerializableConflictIn(relation, &tp, buffer); 0.00 : 49a36e: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 49a372: 44 89 ea mov %r13d,%edx 0.00 : 49a375: 4c 89 f7 mov %r14,%rdi 0.00 : 49a378: e8 13 84 1f 00 callq 692790 : : /* replace cid with a combo cid if necessary */ : HeapTupleHeaderAdjustCmax(tp.t_data, &cid, &iscombo); 0.00 : 49a37d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 49a381: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 49a385: 48 8d b5 ec fe ff ff lea -0x114(%rbp),%rsi 0.00 : 49a38c: e8 9f a1 30 00 callq 7a4530 : : /* : * Compute replica identity tuple before entering the critical section so : * we don't PANIC upon a memory allocation failure. : */ : old_key_tuple = ExtractReplicaIdentity(relation, &tp, true, &old_key_copied); 0.00 : 49a391: 48 8d 4d ce lea -0x32(%rbp),%rcx 0.00 : 49a395: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 49a399: ba 01 00 00 00 mov $0x1,%edx 0.00 : 49a39e: 4c 89 f7 mov %r14,%rdi 0.00 : 49a3a1: e8 ca dd ff ff callq 498170 0.00 : 49a3a6: 49 89 c4 mov %rax,%r12 : * certain that the transaction will never become a member of any older : * MultiXactIds than that. (We have to do this even if we end up just : * using our own TransactionId below, since some other backend could : * incorporate our XID into a MultiXact immediately afterwards.) : */ : MultiXactIdSetOldestMember(); 0.00 : 49a3a9: e8 c2 ca 02 00 callq 4c6e70 : : compute_new_xmax_infomask(HeapTupleHeaderGetRawXmax(tp.t_data), 0.00 : 49a3ae: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 49a3b2: 8b 8d dc fe ff ff mov -0x124(%rbp),%ecx 0.00 : 49a3b8: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 49a3be: 41 b8 03 00 00 00 mov $0x3,%r8d 0.00 : 49a3c4: 0f b7 70 14 movzwl 0x14(%rax),%esi 0.00 : 49a3c8: 0f b7 50 12 movzwl 0x12(%rax),%edx 0.00 : 49a3cc: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 49a3cf: 48 8d 45 ca lea -0x36(%rbp),%rax 0.00 : 49a3d3: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 49a3d8: 48 8d 45 cc lea -0x34(%rbp),%rax 0.00 : 49a3dc: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 49a3e1: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 49a3e5: 48 89 04 24 mov %rax,(%rsp) 0.00 : 49a3e9: e8 22 da ff ff callq 497e10 : tp.t_data->t_infomask, tp.t_data->t_infomask2, : xid, LockTupleExclusive, true, : &new_xmax, &new_infomask, &new_infomask2); : : START_CRIT_SECTION(); 0.00 : 49a3ee: 8b 05 a8 fc 71 00 mov 0x71fca8(%rip),%eax # bba09c 0.00 : 49a3f4: 83 c0 01 add $0x1,%eax 0.00 : 49a3f7: 89 05 9f fc 71 00 mov %eax,0x71fc9f(%rip) # bba09c : * later. Set flag that this page is a candidate for pruning once our xid : * falls below the OldestXmin horizon. If the transaction finally aborts, : * the subsequent page pruning will be a no-op and the hint will be : * cleared. : */ : PageSetPrunable(page, xid); 0.00 : 49a3fd: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 49a404: 8b 70 14 mov 0x14(%rax),%esi 0.00 : 49a407: 85 f6 test %esi,%esi 0.00 : 49a409: 0f 85 cf 03 00 00 jne 49a7de 0.00 : 49a40f: 8b 8d dc fe ff ff mov -0x124(%rbp),%ecx 0.00 : 49a415: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 49a41c: 89 4a 14 mov %ecx,0x14(%rdx) : : if (PageIsAllVisible(page)) 0.00 : 49a41f: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 49a426: 31 db xor %ebx,%ebx 0.00 : 49a428: 0f b7 42 0a movzwl 0xa(%rdx),%eax 0.00 : 49a42c: a8 04 test $0x4,%al 0.00 : 49a42e: 0f 85 7b 03 00 00 jne 49a7af : visibilitymap_clear(relation, BufferGetBlockNumber(buffer), : vmbuffer); : } : : /* store transaction information of xact deleting the tuple */ : tp.t_data->t_infomask &= ~(HEAP_XMAX_BITS | HEAP_MOVED); 0.00 : 49a434: 48 8b 55 a0 mov -0x60(%rbp),%rdx : tp.t_data->t_infomask2 &= ~HEAP_KEYS_UPDATED; 0.00 : 49a438: 66 81 62 12 ff df andw $0xdfff,0x12(%rdx) : visibilitymap_clear(relation, BufferGetBlockNumber(buffer), : vmbuffer); : } : : /* store transaction information of xact deleting the tuple */ : tp.t_data->t_infomask &= ~(HEAP_XMAX_BITS | HEAP_MOVED); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2893 66.67 : 49a43e: 66 81 62 14 2f 23 andw $0x232f,0x14(%rdx) : tp.t_data->t_infomask2 &= ~HEAP_KEYS_UPDATED; : tp.t_data->t_infomask |= new_infomask; 0.00 : 49a444: 0f b7 45 cc movzwl -0x34(%rbp),%eax 0.00 : 49a448: 66 09 42 14 or %ax,0x14(%rdx) : tp.t_data->t_infomask2 |= new_infomask2; : HeapTupleHeaderClearHotUpdated(tp.t_data); 0.00 : 49a44c: 0f b7 45 ca movzwl -0x36(%rbp),%eax 0.00 : 49a450: 66 0b 42 12 or 0x12(%rdx),%ax 0.00 : 49a454: 80 e4 bf and $0xbf,%ah 0.00 : 49a457: 66 89 42 12 mov %ax,0x12(%rdx) : HeapTupleHeaderSetXmax(tp.t_data, new_xmax); 0.00 : 49a45b: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 49a45e: 89 42 04 mov %eax,0x4(%rdx) : HeapTupleHeaderSetCmax(tp.t_data, cid, iscombo); 0.00 : 49a461: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49a465: 8b 85 ec fe ff ff mov -0x114(%rbp),%eax 0.00 : 49a46b: 89 42 08 mov %eax,0x8(%rdx) 0.00 : 49a46e: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 49a472: 0f 85 2d 03 00 00 jne 49a7a5 0.00 : 49a478: 66 83 62 14 df andw $0xffdf,0x14(%rdx) : /* Make sure there is no forward chain link in t_ctid */ : tp.t_data->t_ctid = tp.t_self; 0.00 : 49a47d: 8b 45 94 mov -0x6c(%rbp),%eax : : MarkBufferDirty(buffer); 0.00 : 49a480: 44 89 ef mov %r13d,%edi : tp.t_data->t_infomask2 |= new_infomask2; : HeapTupleHeaderClearHotUpdated(tp.t_data); : HeapTupleHeaderSetXmax(tp.t_data, new_xmax); : HeapTupleHeaderSetCmax(tp.t_data, cid, iscombo); : /* Make sure there is no forward chain link in t_ctid */ : tp.t_data->t_ctid = tp.t_self; 0.00 : 49a483: 89 42 0c mov %eax,0xc(%rdx) 0.00 : 49a486: 0f b7 45 98 movzwl -0x68(%rbp),%eax 0.00 : 49a48a: 66 89 42 10 mov %ax,0x10(%rdx) : : MarkBufferDirty(buffer); 0.00 : 49a48e: e8 5d a3 1d 00 callq 6747f0 : : /* XLOG stuff */ : if (RelationNeedsWAL(relation)) 0.00 : 49a493: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 49a497: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49a49b: 0f 84 df 03 00 00 je 49a880 : recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_DELETE, rdata); : : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 49a4a1: 8b 05 f5 fb 71 00 mov 0x71fbf5(%rip),%eax # bba09c : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49a4a7: 31 f6 xor %esi,%esi 0.00 : 49a4a9: 44 89 ef mov %r13d,%edi : recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_DELETE, rdata); : : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 49a4ac: 83 e8 01 sub $0x1,%eax 0.00 : 49a4af: 89 05 e7 fb 71 00 mov %eax,0x71fbe7(%rip) # bba09c : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49a4b5: e8 56 a2 1d 00 callq 674710 : : if (vmbuffer != InvalidBuffer) 0.00 : 49a4ba: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 49a4bd: 85 ff test %edi,%edi 0.00 : 49a4bf: 0f 85 a3 05 00 00 jne 49aa68 : * If the tuple has toasted out-of-line attributes, we need to delete : * those items too. We have to do this before releasing the buffer : * because we need to look at the contents of the tuple, but it's OK to : * release the content lock on the buffer first. : */ : if (relation->rd_rel->relkind != RELKIND_RELATION && 0.00 : 49a4c5: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 49a4c9: 0f b6 40 6f movzbl 0x6f(%rax),%eax 0.00 : 49a4cd: 3c 72 cmp $0x72,%al 0.00 : 49a4cf: 0f 84 5a 03 00 00 je 49a82f 0.00 : 49a4d5: 3c 6d cmp $0x6d,%al 0.00 : 49a4d7: 0f 84 52 03 00 00 je 49a82f : /* : * Mark tuple for invalidation from system caches at next command : * boundary. We have to do this before releasing the buffer because we : * need to look at the contents of the tuple. : */ : CacheInvalidateHeapTuple(relation, &tp, NULL); 0.00 : 49a4dd: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 49a4e1: 31 d2 xor %edx,%edx 0.00 : 49a4e3: 4c 89 f7 mov %r14,%rdi 0.00 : 49a4e6: e8 05 d0 2c 00 callq 7674f0 : : /* Now we can release the buffer */ : ReleaseBuffer(buffer); 0.00 : 49a4eb: 44 89 ef mov %r13d,%edi 0.00 : 49a4ee: e8 6d a9 1d 00 callq 674e60 : : /* : * Release the lmgr tuple lock, if we had it. : */ : if (have_tuple_lock) 0.00 : 49a4f3: 45 84 ff test %r15b,%r15b 0.00 : 49a4f6: 0f 85 6a 03 00 00 jne 49a866 : UnlockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); : : pgstat_count_heap_delete(relation); 0.00 : 49a4fc: 4c 89 f7 mov %r14,%rdi 0.00 : 49a4ff: e8 bc 7f 1a 00 callq 6424c0 : : if (old_key_tuple != NULL && old_key_copied) 0.00 : 49a504: 4d 85 e4 test %r12,%r12 0.00 : 49a507: 74 0a je 49a513 0.00 : 49a509: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) 0.00 : 49a50d: 0f 85 e3 02 00 00 jne 49a7f6 : heap_freetuple(old_key_tuple); 0.00 : 49a513: 31 db xor %ebx,%ebx 0.00 : 49a515: eb 7f jmp 49a596 0.00 : 49a517: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49a51e: 00 00 : /* Perform additional check for transaction-snapshot mode RI updates */ : if (!HeapTupleSatisfiesVisibility(&tp, crosscheck, buffer)) : result = HeapTupleUpdated; : } : : if (result != HeapTupleMayBeUpdated) 0.00 : 49a520: 85 db test %ebx,%ebx 0.00 : 49a522: 0f 84 46 fe ff ff je 49a36e : { : Assert(result == HeapTupleSelfUpdated || : result == HeapTupleUpdated || : result == HeapTupleBeingUpdated); : Assert(!(tp.t_data->t_infomask & HEAP_XMAX_INVALID)); : hufd->ctid = tp.t_data->t_ctid; 0.00 : 49a528: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 49a52c: 48 8b 95 c0 fe ff ff mov -0x140(%rbp),%rdx 0.00 : 49a533: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 49a536: 89 02 mov %eax,(%rdx) 0.00 : 49a538: 0f b7 47 10 movzwl 0x10(%rdi),%eax 0.00 : 49a53c: 66 89 42 04 mov %ax,0x4(%rdx) : hufd->xmax = HeapTupleHeaderGetUpdateXid(tp.t_data); 0.00 : 49a540: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 49a544: 89 d0 mov %edx,%eax 0.00 : 49a546: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49a54b: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49a550: 0f 84 df 01 00 00 je 49a735 0.00 : 49a556: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 49a559: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx : if (result == HeapTupleSelfUpdated) 0.00 : 49a560: 83 fb 02 cmp $0x2,%ebx : Assert(result == HeapTupleSelfUpdated || : result == HeapTupleUpdated || : result == HeapTupleBeingUpdated); : Assert(!(tp.t_data->t_infomask & HEAP_XMAX_INVALID)); : hufd->ctid = tp.t_data->t_ctid; : hufd->xmax = HeapTupleHeaderGetUpdateXid(tp.t_data); 0.00 : 49a563: 89 41 08 mov %eax,0x8(%rcx) : if (result == HeapTupleSelfUpdated) 0.00 : 49a566: 0f 84 e2 02 00 00 je 49a84e : hufd->cmax = HeapTupleHeaderGetCmax(tp.t_data); : else : hufd->cmax = InvalidCommandId; 0.00 : 49a56c: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : 49a573: c7 41 0c ff ff ff ff movl $0xffffffff,0xc(%rcx) : UnlockReleaseBuffer(buffer); 0.00 : 49a57a: 44 89 ef mov %r13d,%edi 0.00 : 49a57d: e8 ae a9 1d 00 callq 674f30 : if (have_tuple_lock) 0.00 : 49a582: 45 84 ff test %r15b,%r15b 0.00 : 49a585: 0f 85 8a 02 00 00 jne 49a815 : UnlockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); : if (vmbuffer != InvalidBuffer) 0.00 : 49a58b: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 49a58e: 85 ff test %edi,%edi 0.00 : 49a590: 0f 85 74 02 00 00 jne 49a80a : : if (old_key_tuple != NULL && old_key_copied) : heap_freetuple(old_key_tuple); : : return HeapTupleMayBeUpdated; : } 0.00 : 49a596: 48 81 c4 48 01 00 00 add $0x148,%rsp 0.00 : 49a59d: 89 d8 mov %ebx,%eax 0.00 : 49a59f: 5b pop %rbx 0.00 : 49a5a0: 41 5c pop %r12 0.00 : 49a5a2: 41 5d pop %r13 0.00 : 49a5a4: 41 5e pop %r14 0.00 : 49a5a6: 41 5f pop %r15 0.00 : 49a5a8: c9 leaveq 0.00 : 49a5a9: c3 retq 0.00 : 49a5aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (result == HeapTupleInvisible) : { : UnlockReleaseBuffer(buffer); : elog(ERROR, "attempted to delete invisible tuple"); : } : else if (result == HeapTupleBeingUpdated && wait) 0.00 : 49a5b0: 80 bd cf fe ff ff 00 cmpb $0x0,-0x131(%rbp) 0.00 : 49a5b7: 0f 84 77 fd ff ff je 49a334 : { : TransactionId xwait; : uint16 infomask; : : /* must copy state data before unlocking buffer */ : xwait = HeapTupleHeaderGetRawXmax(tp.t_data); 0.00 : 49a5bd: 48 8b 45 a0 mov -0x60(%rbp),%rax : infomask = tp.t_data->t_infomask; : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49a5c1: 31 f6 xor %esi,%esi 0.00 : 49a5c3: 44 89 ef mov %r13d,%edi : { : TransactionId xwait; : uint16 infomask; : : /* must copy state data before unlocking buffer */ : xwait = HeapTupleHeaderGetRawXmax(tp.t_data); 0.00 : 49a5c6: 44 8b 60 04 mov 0x4(%rax),%r12d : infomask = tp.t_data->t_infomask; 0.00 : 49a5ca: 0f b7 58 14 movzwl 0x14(%rax),%ebx : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49a5ce: e8 3d a1 1d 00 callq 674710 : * : * If we are forced to "start over" below, we keep the tuple lock; : * this arranges that we stay at the head of the line while rechecking : * tuple state. : */ : if (!have_tuple_lock) 0.00 : 49a5d3: 45 84 ff test %r15b,%r15b 0.00 : 49a5d6: 0f 84 d4 00 00 00 je 49a6b0 : /* : * Sleep until concurrent transaction ends. Note that we don't care : * which lock mode the locker has, because we need the strongest one. : */ : : if (infomask & HEAP_XMAX_IS_MULTI) 0.00 : 49a5dc: 0f b7 db movzwl %bx,%ebx 0.00 : 49a5df: f6 c7 10 test $0x10,%bh 0.00 : 49a5e2: 74 5c je 49a640 : static void : MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16 infomask, : Relation rel, ItemPointer ctid, XLTW_Oper oper, : int *remaining) : { : (void) Do_MultiXactIdWait(multi, status, infomask, false, 0.00 : 49a5e4: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 49a5e8: 31 c9 xor %ecx,%ecx 0.00 : 49a5ea: 89 da mov %ebx,%edx 0.00 : 49a5ec: 4d 89 f0 mov %r14,%r8 0.00 : 49a5ef: be 05 00 00 00 mov $0x5,%esi 0.00 : 49a5f4: 44 89 e7 mov %r12d,%edi 0.00 : 49a5f7: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 49a5fe: 00 00 0.00 : 49a600: c7 04 24 02 00 00 00 movl $0x2,(%rsp) 0.00 : 49a607: 49 83 c1 0c add $0xc,%r9 0.00 : 49a60b: e8 90 d4 ff ff callq 497aa0 : { : /* wait for multixact */ : MultiXactIdWait((MultiXactId) xwait, MultiXactStatusUpdate, infomask, : relation, &tp.t_data->t_ctid, XLTW_Delete, : NULL); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49a610: 44 89 ef mov %r13d,%edi 0.00 : 49a613: be 02 00 00 00 mov $0x2,%esi 0.00 : 49a618: e8 f3 a0 1d 00 callq 674710 : /* : * If xwait had just locked the tuple then some other xact could : * update this tuple before we get to this point. Check for xmax : * change, and start over if so. : */ : if (xmax_infomask_changed(tp.t_data->t_infomask, infomask) || 0.00 : 49a61d: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 49a621: 0f b7 47 14 movzwl 0x14(%rdi),%eax : xmax_infomask_changed(uint16 new_infomask, uint16 old_infomask) : { : const uint16 interesting = : HEAP_XMAX_IS_MULTI | HEAP_XMAX_LOCK_ONLY | HEAP_LOCK_MASK; : : if ((new_infomask & interesting) != (old_infomask & interesting)) 0.00 : 49a625: 31 c3 xor %eax,%ebx 0.00 : 49a627: 81 e3 d0 10 00 00 and $0x10d0,%ebx 0.00 : 49a62d: 75 06 jne 49a635 : /* : * If xwait had just locked the tuple then some other xact could : * update this tuple before we get to this point. Check for xmax : * change, and start over if so. : */ : if (xmax_infomask_changed(tp.t_data->t_infomask, infomask) || 0.00 : 49a62f: 44 39 67 04 cmp %r12d,0x4(%rdi) 0.00 : 49a633: 74 5a je 49a68f : Assert(ItemIdIsNormal(lp)); : : tp.t_tableOid = RelationGetRelid(relation); : tp.t_data = (HeapTupleHeader) PageGetItem(page, lp); : tp.t_len = ItemIdGetLength(lp); : tp.t_self = *tid; 0.00 : 49a635: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 49a63b: e9 d0 fc ff ff jmpq 49a310 : */ : } : else : { : /* wait for regular transaction to end */ : XactLockTableWait(xwait, relation, &tp.t_data->t_ctid, XLTW_Delete); 0.00 : 49a640: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49a644: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 49a649: 4c 89 f6 mov %r14,%rsi 0.00 : 49a64c: 44 89 e7 mov %r12d,%edi 0.00 : 49a64f: 48 83 c2 0c add $0xc,%rdx 0.00 : 49a653: e8 48 db 1e 00 callq 6881a0 : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49a658: 44 89 ef mov %r13d,%edi 0.00 : 49a65b: be 02 00 00 00 mov $0x2,%esi 0.00 : 49a660: e8 ab a0 1d 00 callq 674710 : /* : * xwait is done, but if xwait had just locked the tuple then some : * other xact could update this tuple before we get to this point. : * Check for xmax change, and start over if so. : */ : if (xmax_infomask_changed(tp.t_data->t_infomask, infomask) || 0.00 : 49a665: 48 8b 7d a0 mov -0x60(%rbp),%rdi : xmax_infomask_changed(uint16 new_infomask, uint16 old_infomask) : { : const uint16 interesting = : HEAP_XMAX_IS_MULTI | HEAP_XMAX_LOCK_ONLY | HEAP_LOCK_MASK; : : if ((new_infomask & interesting) != (old_infomask & interesting)) 0.00 : 49a669: 0f b7 47 14 movzwl 0x14(%rdi),%eax 0.00 : 49a66d: 31 d8 xor %ebx,%eax 0.00 : 49a66f: a9 d0 10 00 00 test $0x10d0,%eax 0.00 : 49a674: 75 bf jne 49a635 : /* : * xwait is done, but if xwait had just locked the tuple then some : * other xact could update this tuple before we get to this point. : * Check for xmax change, and start over if so. : */ : if (xmax_infomask_changed(tp.t_data->t_infomask, infomask) || 0.00 : 49a676: 44 39 67 04 cmp %r12d,0x4(%rdi) 0.00 : 49a67a: 75 b9 jne 49a635 : !TransactionIdEquals(HeapTupleHeaderGetRawXmax(tp.t_data), : xwait)) : goto l1; : : /* Otherwise check if it committed or aborted */ : UpdateXmaxHintBits(tp.t_data, buffer, xwait); 0.00 : 49a67c: 44 89 e2 mov %r12d,%edx 0.00 : 49a67f: 44 89 ee mov %r13d,%esi 0.00 : 49a682: e8 f9 d6 ff ff callq 497d80 0.00 : 49a687: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 49a68b: 0f b7 47 14 movzwl 0x14(%rdi),%eax : : /* : * We may overwrite if previous xmax aborted, or if it committed but : * only locked the tuple without updating it. : */ : if ((tp.t_data->t_infomask & HEAP_XMAX_INVALID) || 0.00 : 49a68f: a9 80 08 00 00 test $0x880,%eax 0.00 : 49a694: 0f 84 da 00 00 00 je 49a774 0.00 : 49a69a: 31 db xor %ebx,%ebx 0.00 : 49a69c: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 49a6a2: ba 01 00 00 00 mov $0x1,%edx 0.00 : 49a6a7: e9 8f fc ff ff jmpq 49a33b 0.00 : 49a6ac: 0f 1f 40 00 nopl 0x0(%rax) : * this arranges that we stay at the head of the line while rechecking : * tuple state. : */ : if (!have_tuple_lock) : { : LockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); 0.00 : 49a6b0: 48 8b b5 b8 fe ff ff mov -0x148(%rbp),%rsi 0.00 : 49a6b7: ba 08 00 00 00 mov $0x8,%edx 0.00 : 49a6bc: 4c 89 f7 mov %r14,%rdi 0.00 : 49a6bf: e8 9c d6 1e 00 callq 687d60 0.00 : 49a6c4: e9 13 ff ff ff jmpq 49a5dc 0.00 : 49a6c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * be necessary. Since we haven't got the lock yet, someone else might be : * in the middle of changing this, so we'll need to recheck after we have : * the lock. : */ : if (PageIsAllVisible(page)) : visibilitymap_pin(relation, block, &vmbuffer); 0.00 : 49a6d0: 48 8d 55 c4 lea -0x3c(%rbp),%rdx 0.00 : 49a6d4: 89 de mov %ebx,%esi 0.00 : 49a6d6: 4c 89 f7 mov %r14,%rdi 0.00 : 49a6d9: e8 e2 9d 00 00 callq 4a44c0 0.00 : 49a6de: 66 90 xchg %ax,%ax 0.00 : 49a6e0: e9 a7 fb ff ff jmpq 49a28c 0.00 : 49a6e5: 0f 1f 00 nopl (%rax) : : Assert(ItemPointerIsValid(tid)); : : block = ItemPointerGetBlockNumber(tid); : buffer = ReadBuffer(relation, block); : page = BufferGetPage(buffer); 0.00 : 49a6e8: 48 8b 15 29 2a 6e 00 mov 0x6e2a29(%rip),%rdx # b7d118 0.00 : 49a6ef: f7 d0 not %eax 0.00 : 49a6f1: 48 98 cltq 0.00 : 49a6f3: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 49a6f7: 48 89 95 e0 fe ff ff mov %rdx,-0x120(%rbp) 0.00 : 49a6fe: e9 78 fb ff ff jmpq 49a27b : l1: : result = HeapTupleSatisfiesUpdate(&tp, cid, buffer); : : if (result == HeapTupleInvisible) : { : UnlockReleaseBuffer(buffer); 0.00 : 49a703: 44 89 ef mov %r13d,%edi 0.00 : 49a706: e8 25 a8 1d 00 callq 674f30 : elog(ERROR, "attempted to delete invisible tuple"); 0.00 : 49a70b: ba f3 2e 7b 00 mov $0x7b2ef3,%edx 0.00 : 49a710: be a3 0a 00 00 mov $0xaa3,%esi 0.00 : 49a715: bf b9 27 7b 00 mov $0x7b27b9,%edi 0.00 : 49a71a: e8 01 0d 2e 00 callq 77b420 0.00 : 49a71f: be a8 2b 7b 00 mov $0x7b2ba8,%esi 0.00 : 49a724: bf 14 00 00 00 mov $0x14,%edi 0.00 : 49a729: 31 c0 xor %eax,%eax 0.00 : 49a72b: e8 00 0b 2e 00 callq 77b230 0.00 : 49a730: e8 9b ed fc ff callq 4694d0 : Assert(result == HeapTupleSelfUpdated || : result == HeapTupleUpdated || : result == HeapTupleBeingUpdated); : Assert(!(tp.t_data->t_infomask & HEAP_XMAX_INVALID)); : hufd->ctid = tp.t_data->t_ctid; : hufd->xmax = HeapTupleHeaderGetUpdateXid(tp.t_data); 0.00 : 49a735: 84 d2 test %dl,%dl 0.00 : 49a737: 0f 88 19 fe ff ff js 49a556 0.00 : 49a73d: 0f 1f 00 nopl (%rax) 0.00 : 49a740: e8 db c9 ff ff callq 497120 0.00 : 49a745: e9 0f fe ff ff jmpq 49a559 : * re-lock, to avoid holding the buffer lock across an I/O. That's a bit : * unfortunate, but hopefully shouldn't happen often. : */ : if (vmbuffer == InvalidBuffer && PageIsAllVisible(page)) : { : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49a74a: 31 f6 xor %esi,%esi 0.00 : 49a74c: 44 89 ef mov %r13d,%edi 0.00 : 49a74f: e8 bc 9f 1d 00 callq 674710 : visibilitymap_pin(relation, block, &vmbuffer); 0.00 : 49a754: 48 8d 55 c4 lea -0x3c(%rbp),%rdx 0.00 : 49a758: 89 de mov %ebx,%esi 0.00 : 49a75a: 4c 89 f7 mov %r14,%rdi 0.00 : 49a75d: e8 5e 9d 00 00 callq 4a44c0 : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49a762: be 02 00 00 00 mov $0x2,%esi 0.00 : 49a767: 44 89 ef mov %r13d,%edi 0.00 : 49a76a: e8 a1 9f 1d 00 callq 674710 0.00 : 49a76f: e9 3f fb ff ff jmpq 49a2b3 : : /* : * We may overwrite if previous xmax aborted, or if it committed but : * only locked the tuple without updating it. : */ : if ((tp.t_data->t_infomask & HEAP_XMAX_INVALID) || 0.00 : 49a774: 25 50 10 00 00 and $0x1050,%eax 0.00 : 49a779: 83 f8 40 cmp $0x40,%eax 0.00 : 49a77c: 0f 84 18 ff ff ff je 49a69a 0.00 : 49a782: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49a788: e8 a3 a2 30 00 callq 7a4a30 0.00 : 49a78d: 84 c0 test %al,%al 0.00 : 49a78f: bb 03 00 00 00 mov $0x3,%ebx 0.00 : 49a794: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 49a79a: 0f 84 88 fd ff ff je 49a528 0.00 : 49a7a0: e9 f5 fe ff ff jmpq 49a69a : tp.t_data->t_infomask2 &= ~HEAP_KEYS_UPDATED; : tp.t_data->t_infomask |= new_infomask; : tp.t_data->t_infomask2 |= new_infomask2; : HeapTupleHeaderClearHotUpdated(tp.t_data); : HeapTupleHeaderSetXmax(tp.t_data, new_xmax); : HeapTupleHeaderSetCmax(tp.t_data, cid, iscombo); 0.00 : 49a7a5: 66 83 4a 14 20 orw $0x20,0x14(%rdx) 0.00 : 49a7aa: e9 ce fc ff ff jmpq 49a47d : PageSetPrunable(page, xid); : : if (PageIsAllVisible(page)) : { : all_visible_cleared = true; : PageClearAllVisible(page); 0.00 : 49a7af: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : 49a7b6: 83 e0 fb and $0xfffffffb,%eax : visibilitymap_clear(relation, BufferGetBlockNumber(buffer), 0.00 : 49a7b9: 44 89 ef mov %r13d,%edi : PageSetPrunable(page, xid); : : if (PageIsAllVisible(page)) : { : all_visible_cleared = true; : PageClearAllVisible(page); 0.00 : 49a7bc: 66 89 41 0a mov %ax,0xa(%rcx) : visibilitymap_clear(relation, BufferGetBlockNumber(buffer), 0.00 : 49a7c0: 8b 5d c4 mov -0x3c(%rbp),%ebx 0.00 : 49a7c3: e8 68 98 1d 00 callq 674030 0.00 : 49a7c8: 4c 89 f7 mov %r14,%rdi 0.00 : 49a7cb: 89 c6 mov %eax,%esi 0.00 : 49a7cd: 89 da mov %ebx,%edx 0.00 : 49a7cf: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 49a7d4: e8 57 9d 00 00 callq 4a4530 0.00 : 49a7d9: e9 56 fc ff ff jmpq 49a434 : * later. Set flag that this page is a candidate for pruning once our xid : * falls below the OldestXmin horizon. If the transaction finally aborts, : * the subsequent page pruning will be a no-op and the hint will be : * cleared. : */ : PageSetPrunable(page, xid); 0.00 : 49a7de: 8b bd dc fe ff ff mov -0x124(%rbp),%edi 0.00 : 49a7e4: e8 f7 57 02 00 callq 4bffe0 0.00 : 49a7e9: 84 c0 test %al,%al 0.00 : 49a7eb: 0f 84 2e fc ff ff je 49a41f 0.00 : 49a7f1: e9 19 fc ff ff jmpq 49a40f : UnlockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); : : pgstat_count_heap_delete(relation); : : if (old_key_tuple != NULL && old_key_copied) : heap_freetuple(old_key_tuple); 0.00 : 49a7f6: 4c 89 e7 mov %r12,%rdi 0.00 : 49a7f9: 31 db xor %ebx,%ebx 0.00 : 49a7fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49a800: e8 bb 44 fd ff callq 46ecc0 0.00 : 49a805: e9 8c fd ff ff jmpq 49a596 : hufd->cmax = InvalidCommandId; : UnlockReleaseBuffer(buffer); : if (have_tuple_lock) : UnlockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); : if (vmbuffer != InvalidBuffer) : ReleaseBuffer(vmbuffer); 0.00 : 49a80a: e8 51 a6 1d 00 callq 674e60 0.00 : 49a80f: 90 nop 0.00 : 49a810: e9 81 fd ff ff jmpq 49a596 : hufd->cmax = HeapTupleHeaderGetCmax(tp.t_data); : else : hufd->cmax = InvalidCommandId; : UnlockReleaseBuffer(buffer); : if (have_tuple_lock) : UnlockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); 0.00 : 49a815: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 49a819: ba 08 00 00 00 mov $0x8,%edx 0.00 : 49a81e: 4c 89 f7 mov %r14,%rdi 0.00 : 49a821: 48 83 c6 04 add $0x4,%rsi 0.00 : 49a825: e8 d6 d2 1e 00 callq 687b00 0.00 : 49a82a: e9 5c fd ff ff jmpq 49a58b : relation->rd_rel->relkind != RELKIND_MATVIEW) : { : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(&tp)); : } : else if (HeapTupleHasExternal(&tp)) 0.00 : 49a82f: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 49a833: f6 40 14 04 testb $0x4,0x14(%rax) 0.00 : 49a837: 0f 84 a0 fc ff ff je 49a4dd : toast_delete(relation, &tp); 0.00 : 49a83d: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 49a841: 4c 89 f7 mov %r14,%rdi 0.00 : 49a844: e8 37 83 00 00 callq 4a2b80 0.00 : 49a849: e9 8f fc ff ff jmpq 49a4dd : result == HeapTupleBeingUpdated); : Assert(!(tp.t_data->t_infomask & HEAP_XMAX_INVALID)); : hufd->ctid = tp.t_data->t_ctid; : hufd->xmax = HeapTupleHeaderGetUpdateXid(tp.t_data); : if (result == HeapTupleSelfUpdated) : hufd->cmax = HeapTupleHeaderGetCmax(tp.t_data); 0.00 : 49a84e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 49a852: e8 89 9c 30 00 callq 7a44e0 0.00 : 49a857: 48 8b 95 c0 fe ff ff mov -0x140(%rbp),%rdx 0.00 : 49a85e: 89 42 0c mov %eax,0xc(%rdx) 0.00 : 49a861: e9 14 fd ff ff jmpq 49a57a : : /* : * Release the lmgr tuple lock, if we had it. : */ : if (have_tuple_lock) : UnlockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive); 0.00 : 49a866: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 49a86a: ba 08 00 00 00 mov $0x8,%edx 0.00 : 49a86f: 4c 89 f7 mov %r14,%rdi 0.00 : 49a872: 48 83 c6 04 add $0x4,%rsi 0.00 : 49a876: e8 85 d2 1e 00 callq 687b00 0.00 : 49a87b: e9 7c fc ff ff jmpq 49a4fc : xl_heap_delete xlrec; : XLogRecPtr recptr; : XLogRecData rdata[4]; : : /* For logical decode we need combocids to properly decode the catalog */ : if (RelationIsAccessibleInLogicalDecoding(relation)) 0.00 : 49a880: 83 3d d5 e8 6d 00 02 cmpl $0x2,0x6de8d5(%rip) # b7915c 0.00 : 49a887: 7e 2a jle 49a8b3 0.00 : 49a889: 4c 89 f7 mov %r14,%rdi 0.00 : 49a88c: e8 4f 85 04 00 callq 4e2de0 0.00 : 49a891: 84 c0 test %al,%al 0.00 : 49a893: 75 12 jne 49a8a7 0.00 : 49a895: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 49a89c: 48 85 c0 test %rax,%rax 0.00 : 49a89f: 74 12 je 49a8b3 0.00 : 49a8a1: 80 78 48 00 cmpb $0x0,0x48(%rax) 0.00 : 49a8a5: 74 0c je 49a8b3 : log_heap_new_cid(relation, &tp); 0.00 : 49a8a7: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 49a8ab: 4c 89 f7 mov %r14,%rdi 0.00 : 49a8ae: e8 0d db ff ff callq 4983c0 : : xlrec.flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec.infobits_set = compute_infobits(tp.t_data->t_infomask, 0.00 : 49a8b3: 4c 8b 45 a0 mov -0x60(%rbp),%r8 : : /* For logical decode we need combocids to properly decode the catalog */ : if (RelationIsAccessibleInLogicalDecoding(relation)) : log_heap_new_cid(relation, &tp); : : xlrec.flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; 0.00 : 49a8b7: 88 5d 89 mov %bl,-0x77(%rbp) : xlrec.infobits_set = compute_infobits(tp.t_data->t_infomask, 0.00 : 49a8ba: 41 0f b7 48 14 movzwl 0x14(%r8),%ecx : * See fix_infomask_from_infobits. : */ : static uint8 : compute_infobits(uint16 infomask, uint16 infomask2) : { : return 0.00 : 49a8bf: 89 c8 mov %ecx,%eax 0.00 : 49a8c1: 83 e0 80 and $0xffffff80,%eax 0.00 : 49a8c4: 3c 01 cmp $0x1,%al 0.00 : 49a8c6: 89 c8 mov %ecx,%eax 0.00 : 49a8c8: 19 d2 sbb %edx,%edx 0.00 : 49a8ca: 83 e0 40 and $0x40,%eax 0.00 : 49a8cd: f7 d2 not %edx 0.00 : 49a8cf: 83 e2 02 and $0x2,%edx 0.00 : 49a8d2: 83 f8 01 cmp $0x1,%eax 0.00 : 49a8d5: 89 c8 mov %ecx,%eax 0.00 : 49a8d7: 19 ff sbb %edi,%edi 0.00 : 49a8d9: 83 e0 10 and $0x10,%eax 0.00 : 49a8dc: f7 d7 not %edi 0.00 : 49a8de: 83 e7 04 and $0x4,%edi 0.00 : 49a8e1: 83 f8 01 cmp $0x1,%eax 0.00 : 49a8e4: 41 0f b7 40 12 movzwl 0x12(%r8),%eax 0.00 : 49a8e9: 19 f6 sbb %esi,%esi : tp.t_data->t_infomask2); : xlrec.target.node = relation->rd_node; : xlrec.target.tid = tp.t_self; : xlrec.xmax = new_xmax; : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfHeapDelete; 0.00 : 49a8eb: c7 85 f8 fe ff ff 1a movl $0x1a,-0x108(%rbp) 0.00 : 49a8f2: 00 00 00 : rdata[0].buffer = InvalidBuffer; 0.00 : 49a8f5: c7 85 fc fe ff ff 00 movl $0x0,-0x104(%rbp) 0.00 : 49a8fc: 00 00 00 : * See fix_infomask_from_infobits. : */ : static uint8 : compute_infobits(uint16 infomask, uint16 infomask2) : { : return 0.00 : 49a8ff: f7 d6 not %esi : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfHeapDelete; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); : : rdata[1].data = NULL; 0.00 : 49a901: 48 c7 85 10 ff ff ff movq $0x0,-0xf0(%rbp) 0.00 : 49a908: 00 00 00 00 : rdata[1].len = 0; 0.00 : 49a90c: c7 85 18 ff ff ff 00 movl $0x0,-0xe8(%rbp) 0.00 : 49a913: 00 00 00 : * See fix_infomask_from_infobits. : */ : static uint8 : compute_infobits(uint16 infomask, uint16 infomask2) : { : return 0.00 : 49a916: 83 e6 08 and $0x8,%esi : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); : : rdata[1].data = NULL; : rdata[1].len = 0; : rdata[1].buffer = buffer; 0.00 : 49a919: 44 89 ad 1c ff ff ff mov %r13d,-0xe4(%rbp) : rdata[1].buffer_std = true; 0.00 : 49a920: c6 85 20 ff ff ff 01 movb $0x1,-0xe0(%rbp) : * See fix_infomask_from_infobits. : */ : static uint8 : compute_infobits(uint16 infomask, uint16 infomask2) : { : return 0.00 : 49a927: 25 00 20 00 00 and $0x2000,%eax : : rdata[1].data = NULL; : rdata[1].len = 0; : rdata[1].buffer = buffer; : rdata[1].buffer_std = true; : rdata[1].next = NULL; 0.00 : 49a92c: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 49a933: 00 00 00 00 : * See fix_infomask_from_infobits. : */ : static uint8 : compute_infobits(uint16 infomask, uint16 infomask2) : { : return 0.00 : 49a937: 83 f8 01 cmp $0x1,%eax 0.00 : 49a93a: 19 c0 sbb %eax,%eax : /* For logical decode we need combocids to properly decode the catalog */ : if (RelationIsAccessibleInLogicalDecoding(relation)) : log_heap_new_cid(relation, &tp); : : xlrec.flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec.infobits_set = compute_infobits(tp.t_data->t_infomask, 0.00 : 49a93c: c1 e9 0c shr $0xc,%ecx 0.00 : 49a93f: 83 e1 01 and $0x1,%ecx : * See fix_infomask_from_infobits. : */ : static uint8 : compute_infobits(uint16 infomask, uint16 infomask2) : { : return 0.00 : 49a942: f7 d0 not %eax : /* For logical decode we need combocids to properly decode the catalog */ : if (RelationIsAccessibleInLogicalDecoding(relation)) : log_heap_new_cid(relation, &tp); : : xlrec.flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec.infobits_set = compute_infobits(tp.t_data->t_infomask, 0.00 : 49a944: 09 ca or %ecx,%edx : * See fix_infomask_from_infobits. : */ : static uint8 : compute_infobits(uint16 infomask, uint16 infomask2) : { : return 0.00 : 49a946: 83 e0 10 and $0x10,%eax : /* For logical decode we need combocids to properly decode the catalog */ : if (RelationIsAccessibleInLogicalDecoding(relation)) : log_heap_new_cid(relation, &tp); : : xlrec.flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec.infobits_set = compute_infobits(tp.t_data->t_infomask, 0.00 : 49a949: 09 fa or %edi,%edx 0.00 : 49a94b: 09 f2 or %esi,%edx 0.00 : 49a94d: 09 c2 or %eax,%edx : tp.t_data->t_infomask2); : xlrec.target.node = relation->rd_node; 0.00 : 49a94f: 49 8b 06 mov (%r14),%rax : rdata[1].next = NULL; : : /* : * Log replica identity of the deleted tuple if there is one : */ : if (old_key_tuple != NULL) 0.00 : 49a952: 4d 85 e4 test %r12,%r12 : /* For logical decode we need combocids to properly decode the catalog */ : if (RelationIsAccessibleInLogicalDecoding(relation)) : log_heap_new_cid(relation, &tp); : : xlrec.flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec.infobits_set = compute_infobits(tp.t_data->t_infomask, 0.00 : 49a955: 88 55 88 mov %dl,-0x78(%rbp) : xlrec.target.tid = tp.t_self; : xlrec.xmax = new_xmax; : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfHeapDelete; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 49a958: 48 8d 95 f0 fe ff ff lea -0x110(%rbp),%rdx : log_heap_new_cid(relation, &tp); : : xlrec.flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec.infobits_set = compute_infobits(tp.t_data->t_infomask, : tp.t_data->t_infomask2); : xlrec.target.node = relation->rd_node; 0.00 : 49a95f: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 49a966: 41 8b 46 08 mov 0x8(%r14),%eax 0.00 : 49a96a: 89 85 78 ff ff ff mov %eax,-0x88(%rbp) : xlrec.target.tid = tp.t_self; 0.00 : 49a970: 8b 45 94 mov -0x6c(%rbp),%eax 0.00 : 49a973: 89 85 7c ff ff ff mov %eax,-0x84(%rbp) 0.00 : 49a979: 0f b7 45 98 movzwl -0x68(%rbp),%eax 0.00 : 49a97d: 66 89 45 80 mov %ax,-0x80(%rbp) : xlrec.xmax = new_xmax; 0.00 : 49a981: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 49a984: 89 45 84 mov %eax,-0x7c(%rbp) : rdata[0].data = (char *) &xlrec; 0.00 : 49a987: 48 8d 85 70 ff ff ff lea -0x90(%rbp),%rax 0.00 : 49a98e: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) : rdata[0].len = SizeOfHeapDelete; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 49a995: 48 8d 42 20 lea 0x20(%rdx),%rax 0.00 : 49a999: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : rdata[1].next = NULL; : : /* : * Log replica identity of the deleted tuple if there is one : */ : if (old_key_tuple != NULL) 0.00 : 49a9a0: 0f 84 9b 00 00 00 je 49aa41 : { : xl_heap_header xlhdr; : : xlhdr.t_infomask2 = old_key_tuple->t_data->t_infomask2; 0.00 : 49a9a6: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 49a9ab: 0f b7 40 12 movzwl 0x12(%rax),%eax 0.00 : 49a9af: 66 89 45 b0 mov %ax,-0x50(%rbp) : xlhdr.t_infomask = old_key_tuple->t_data->t_infomask; 0.00 : 49a9b3: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 49a9b8: 0f b7 40 14 movzwl 0x14(%rax),%eax 0.00 : 49a9bc: 66 89 45 b2 mov %ax,-0x4e(%rbp) : xlhdr.t_hoff = old_key_tuple->t_data->t_hoff; 0.00 : 49a9c0: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 49a9c5: 0f b6 40 16 movzbl 0x16(%rax),%eax : : rdata[1].next = &(rdata[2]); : rdata[2].data = (char *) &xlhdr; : rdata[2].len = SizeOfHeapHeader; 0.00 : 49a9c9: c7 85 38 ff ff ff 05 movl $0x5,-0xc8(%rbp) 0.00 : 49a9d0: 00 00 00 : rdata[2].buffer = InvalidBuffer; 0.00 : 49a9d3: c7 85 3c ff ff ff 00 movl $0x0,-0xc4(%rbp) 0.00 : 49a9da: 00 00 00 : { : xl_heap_header xlhdr; : : xlhdr.t_infomask2 = old_key_tuple->t_data->t_infomask2; : xlhdr.t_infomask = old_key_tuple->t_data->t_infomask; : xlhdr.t_hoff = old_key_tuple->t_data->t_hoff; 0.00 : 49a9dd: 88 45 b4 mov %al,-0x4c(%rbp) : : rdata[1].next = &(rdata[2]); 0.00 : 49a9e0: 48 8d 42 40 lea 0x40(%rdx),%rax 0.00 : 49a9e4: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : rdata[2].data = (char *) &xlhdr; 0.00 : 49a9eb: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 49a9ef: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : rdata[2].len = SizeOfHeapHeader; : rdata[2].buffer = InvalidBuffer; : rdata[2].next = NULL; : : rdata[2].next = &(rdata[3]); 0.00 : 49a9f6: 48 8d 42 60 lea 0x60(%rdx),%rax 0.00 : 49a9fa: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : rdata[3].data = (char *) old_key_tuple->t_data 0.00 : 49aa01: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 49aa06: 48 83 c0 17 add $0x17,%rax 0.00 : 49aa0a: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : + offsetof(HeapTupleHeaderData, t_bits); : rdata[3].len = old_key_tuple->t_len 0.00 : 49aa11: 41 8b 04 24 mov (%r12),%eax : - offsetof(HeapTupleHeaderData, t_bits); : rdata[3].buffer = InvalidBuffer; 0.00 : 49aa15: c7 85 5c ff ff ff 00 movl $0x0,-0xa4(%rbp) 0.00 : 49aa1c: 00 00 00 : rdata[3].next = NULL; 0.00 : 49aa1f: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : 49aa26: 00 00 00 00 : rdata[2].next = NULL; : : rdata[2].next = &(rdata[3]); : rdata[3].data = (char *) old_key_tuple->t_data : + offsetof(HeapTupleHeaderData, t_bits); : rdata[3].len = old_key_tuple->t_len 0.00 : 49aa2a: 83 e8 17 sub $0x17,%eax 0.00 : 49aa2d: 89 85 58 ff ff ff mov %eax,-0xa8(%rbp) : - offsetof(HeapTupleHeaderData, t_bits); : rdata[3].buffer = InvalidBuffer; : rdata[3].next = NULL; : : if (relation->rd_rel->relreplident == REPLICA_IDENTITY_FULL) 0.00 : 49aa33: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 49aa37: 80 78 7b 66 cmpb $0x66,0x7b(%rax) 0.00 : 49aa3b: 74 35 je 49aa72 : xlrec.flags |= XLOG_HEAP_CONTAINS_OLD_TUPLE; : else : xlrec.flags |= XLOG_HEAP_CONTAINS_OLD_KEY; 0.00 : 49aa3d: 80 4d 89 08 orb $0x8,-0x77(%rbp) : } : : recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_DELETE, rdata); 0.00 : 49aa41: be 10 00 00 00 mov $0x10,%esi 0.00 : 49aa46: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 49aa4b: e8 d0 a4 03 00 callq 4d4f20 : : PageSetLSN(page, recptr); 0.00 : 49aa50: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : 49aa57: 48 89 c2 mov %rax,%rdx 0.00 : 49aa5a: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 49aa5e: 89 11 mov %edx,(%rcx) 0.00 : 49aa60: 89 41 04 mov %eax,0x4(%rcx) 0.00 : 49aa63: e9 39 fa ff ff jmpq 49a4a1 : END_CRIT_SECTION(); : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : : if (vmbuffer != InvalidBuffer) : ReleaseBuffer(vmbuffer); 0.00 : 49aa68: e8 f3 a3 1d 00 callq 674e60 0.00 : 49aa6d: e9 53 fa ff ff jmpq 49a4c5 : - offsetof(HeapTupleHeaderData, t_bits); : rdata[3].buffer = InvalidBuffer; : rdata[3].next = NULL; : : if (relation->rd_rel->relreplident == REPLICA_IDENTITY_FULL) : xlrec.flags |= XLOG_HEAP_CONTAINS_OLD_TUPLE; 0.00 : 49aa72: 80 4d 89 04 orb $0x4,-0x77(%rbp) 0.00 : 49aa76: eb c9 jmp 49aa41 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2321 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049acd0 : : * temporary context before calling this, if that's a problem. : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { 0.00 : 49acd0: 55 push %rbp 0.00 : 49acd1: 48 89 e5 mov %rsp,%rbp 0.00 : 49acd4: 41 57 push %r15 0.00 : 49acd6: 41 56 push %r14 0.00 : 49acd8: 41 89 ce mov %ecx,%r14d 0.00 : 49acdb: 41 55 push %r13 0.00 : 49acdd: 41 54 push %r12 0.00 : 49acdf: 53 push %rbx 0.00 : 49ace0: 48 81 ec 18 01 00 00 sub $0x118,%rsp 0.00 : 49ace7: 48 89 bd 00 ff ff ff mov %rdi,-0x100(%rbp) 0.00 : 49acee: 48 89 b5 f8 fe ff ff mov %rsi,-0x108(%rbp) 0.00 : 49acf5: 89 95 f4 fe ff ff mov %edx,-0x10c(%rbp) 0.00 : 49acfb: 44 89 85 f0 fe ff ff mov %r8d,-0x110(%rbp) 0.00 : 49ad02: 4c 89 8d e8 fe ff ff mov %r9,-0x118(%rbp) : TransactionId xid = GetCurrentTransactionId(); 0.00 : 49ad09: e8 b2 9b 02 00 callq 4c48c0 : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49ad0e: 83 3d 47 e4 6d 00 02 cmpl $0x2,0x6de447(%rip) # b7915c : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { : TransactionId xid = GetCurrentTransactionId(); 0.00 : 49ad15: 41 89 c5 mov %eax,%r13d : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49ad18: 0f 8f 12 07 00 00 jg 49b430 0.00 : 49ad1e: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 49ad25: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 49ad2c: c6 85 37 ff ff ff 00 movb $0x0,-0xc9(%rbp) 0.00 : 49ad33: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) : bool need_cids = RelationIsAccessibleInLogicalDecoding(relation); : : needwal = !(options & HEAP_INSERT_SKIP_WAL) && RelationNeedsWAL(relation); 0.00 : 49ad3a: f6 85 f0 fe ff ff 01 testb $0x1,-0x110(%rbp) 0.00 : 49ad41: c6 85 4f ff ff ff 00 movb $0x0,-0xb1(%rbp) 0.00 : 49ad48: 75 16 jne 49ad60 0.00 : 49ad4a: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 49ad51: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 49ad55: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49ad59: 0f 94 85 4f ff ff ff sete -0xb1(%rbp) : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, 0.00 : 49ad60: 48 85 d2 test %rdx,%rdx 0.00 : 49ad63: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 49ad6a: 00 00 00 00 0.00 : 49ad6e: 74 26 je 49ad96 0.00 : 49ad70: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 49ad75: 2b 4a 04 sub 0x4(%rdx),%ecx 0.00 : 49ad78: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 49ad7d: c1 e1 0d shl $0xd,%ecx 0.00 : 49ad80: 89 c8 mov %ecx,%eax 0.00 : 49ad82: c1 f9 1f sar $0x1f,%ecx 0.00 : 49ad85: f7 ea imul %edx 0.00 : 49ad87: c1 fa 05 sar $0x5,%edx 0.00 : 49ad8a: 29 ca sub %ecx,%edx 0.00 : 49ad8c: 48 63 d2 movslq %edx,%rdx 0.00 : 49ad8f: 48 89 95 28 ff ff ff mov %rdx,-0xd8(%rbp) : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); 0.00 : 49ad96: 48 63 bd f4 fe ff ff movslq -0x10c(%rbp),%rdi 0.00 : 49ad9d: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 49ada1: e8 aa df 2f 00 callq 798d50 : for (i = 0; i < ntuples; i++) 0.00 : 49ada6: 44 8b bd f4 fe ff ff mov -0x10c(%rbp),%r15d : needwal = !(options & HEAP_INSERT_SKIP_WAL) && RelationNeedsWAL(relation); : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); 0.00 : 49adad: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : for (i = 0; i < ntuples; i++) 0.00 : 49adb4: 45 85 ff test %r15d,%r15d 0.00 : 49adb7: 7e 47 jle 49ae00 0.00 : 49adb9: 45 31 e4 xor %r12d,%r12d 0.00 : 49adbc: 31 db xor %ebx,%ebx 0.00 : 49adbe: 66 90 xchg %ax,%ax : heaptuples[i] = heap_prepare_insert(relation, tuples[i], 0.00 : 49adc0: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 25.00 : 49adc7: 44 8b 85 f0 fe ff ff mov -0x110(%rbp),%r8d 0.00 : 49adce: 44 89 f1 mov %r14d,%ecx 0.00 : 49add1: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); : for (i = 0; i < ntuples; i++) 0.00 : 49add8: 41 83 c4 01 add $0x1,%r12d : heaptuples[i] = heap_prepare_insert(relation, tuples[i], 0.00 : 49addc: 48 8b 34 1a mov (%rdx,%rbx,1),%rsi 0.00 : 49ade0: 44 89 ea mov %r13d,%edx 0.00 : 49ade3: e8 78 fd ff ff callq 49ab60 0.00 : 49ade8: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 49adef: 48 89 04 19 mov %rax,(%rcx,%rbx,1) : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); : for (i = 0; i < ntuples; i++) 0.00 : 49adf3: 48 83 c3 08 add $0x8,%rbx 0.00 : 49adf7: 44 39 a5 f4 fe ff ff cmp %r12d,-0x10c(%rbp) 0.00 : 49adfe: 7f c0 jg 49adc0 : /* : * Allocate some memory to use for constructing the WAL record. Using : * palloc() within a critical section is not safe, so we allocate this : * beforehand. : */ : if (needwal) 0.00 : 49ae00: 80 bd 4f ff ff ff 00 cmpb $0x0,-0xb1(%rbp) 0.00 : 49ae07: 48 c7 85 18 ff ff ff movq $0x0,-0xe8(%rbp) 0.00 : 49ae0e: 00 00 00 00 0.00 : 49ae12: 0f 85 56 06 00 00 jne 49b46e : * new tuple can't possibly conflict with existing tuple locks, and heap : * page locks are only consolidated versions of tuple locks; they do not : * lock "gaps" as index page locks do. So we don't need to identify a : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); 0.00 : 49ae18: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49ae1f: 31 d2 xor %edx,%edx 0.00 : 49ae21: 31 f6 xor %esi,%esi 0.00 : 49ae23: e8 68 79 1f 00 callq 692790 : : ndone = 0; : while (ndone < ntuples) 0.00 : 49ae28: 44 8b b5 f4 fe ff ff mov -0x10c(%rbp),%r14d 0.00 : 49ae2f: 45 85 f6 test %r14d,%r14d 0.00 : 49ae32: 0f 8e 6b 04 00 00 jle 49b2a3 : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.00 : 49ae38: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49ae3f: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49ae46: 48 8d 8d 60 ff ff ff lea -0xa0(%rbp),%rcx : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); : : ndone = 0; : while (ndone < ntuples) 0.00 : 49ae4d: c7 85 5c ff ff ff 00 movl $0x0,-0xa4(%rbp) 0.00 : 49ae54: 00 00 00 : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49ae57: 48 83 c2 20 add $0x20,%rdx : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49ae5b: 48 83 c1 40 add $0x40,%rcx : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.00 : 49ae5f: 48 83 c0 14 add $0x14,%rax : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49ae63: 48 89 95 d8 fe ff ff mov %rdx,-0x128(%rbp) : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49ae6a: 48 89 8d d0 fe ff ff mov %rcx,-0x130(%rbp) : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.00 : 49ae71: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.00 : 49ae78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49ae7f: 00 : Buffer buffer; : Buffer vmbuffer = InvalidBuffer; : bool all_visible_cleared = false; : int nthispage; : : CHECK_FOR_INTERRUPTS(); 0.00 : 49ae80: 0f b6 05 09 f2 71 00 movzbl 0x71f209(%rip),%eax # bba090 : : ndone = 0; : while (ndone < ntuples) : { : Buffer buffer; : Buffer vmbuffer = InvalidBuffer; 0.00 : 49ae87: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : bool all_visible_cleared = false; : int nthispage; : : CHECK_FOR_INTERRUPTS(); 0.00 : 49ae8e: 84 c0 test %al,%al 0.00 : 49ae90: 0f 85 ea 03 00 00 jne 49b280 : : /* : * Find buffer where at least the next tuple will fit. If the page is : * all-visible, this will also pin the requisite visibility map page. : */ : buffer = RelationGetBufferForTuple(relation, heaptuples[ndone]->t_len, 0.00 : 49ae96: 48 63 85 5c ff ff ff movslq -0xa4(%rbp),%rax 0.00 : 49ae9d: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 49aea4: 4c 8d 4d cc lea -0x34(%rbp),%r9 0.00 : 49aea8: 4c 8b 85 e8 fe ff ff mov -0x118(%rbp),%r8 0.00 : 49aeaf: 8b 8d f0 fe ff ff mov -0x110(%rbp),%ecx 0.00 : 49aeb5: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49aebc: 4c 8d 24 c2 lea (%rdx,%rax,8),%r12 0.00 : 49aec0: 31 d2 xor %edx,%edx 0.00 : 49aec2: 49 8b 04 24 mov (%r12),%rax 0.00 : 49aec6: 8b 30 mov (%rax),%esi 0.00 : 49aec8: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 49aecf: 00 0.00 : 49aed0: e8 9b 32 00 00 callq 49e170 : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); 0.00 : 49aed5: 85 c0 test %eax,%eax : : /* : * Find buffer where at least the next tuple will fit. If the page is : * all-visible, this will also pin the requisite visibility map page. : */ : buffer = RelationGetBufferForTuple(relation, heaptuples[ndone]->t_len, 0.00 : 49aed7: 89 85 38 ff ff ff mov %eax,-0xc8(%rbp) : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); 0.00 : 49aedd: 0f 88 ad 04 00 00 js 49b390 0.00 : 49aee3: 8b 85 38 ff ff ff mov -0xc8(%rbp),%eax 0.00 : 49aee9: 48 8b 0d 08 4c 72 00 mov 0x724c08(%rip),%rcx # bbfaf8 0.00 : 49aef0: 83 e8 01 sub $0x1,%eax 0.00 : 49aef3: 48 98 cltq 0.00 : 49aef5: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49aef9: 48 01 c8 add %rcx,%rax 0.00 : 49aefc: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : : /* NO EREPORT(ERROR) from here till changes are logged */ : START_CRIT_SECTION(); 0.00 : 49af03: 8b 05 93 f1 71 00 mov 0x71f193(%rip),%eax # bba09c : : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); 0.00 : 49af09: 8b b5 38 ff ff ff mov -0xc8(%rbp),%esi 0.00 : 49af0f: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); : : /* NO EREPORT(ERROR) from here till changes are logged */ : START_CRIT_SECTION(); 0.00 : 49af16: 83 c0 01 add $0x1,%eax 0.00 : 49af19: 89 05 7d f1 71 00 mov %eax,0x71f17d(%rip) # bba09c : : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); 0.00 : 49af1f: 49 8b 14 24 mov (%r12),%rdx 0.00 : 49af23: e8 28 39 00 00 callq 49e850 : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) 0.00 : 49af28: 8b 85 5c ff ff ff mov -0xa4(%rbp),%eax 0.00 : 49af2e: c7 85 3c ff ff ff 01 movl $0x1,-0xc4(%rbp) 0.00 : 49af35: 00 00 00 0.00 : 49af38: 83 c0 01 add $0x1,%eax 0.00 : 49af3b: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 49af41: 89 85 14 ff ff ff mov %eax,-0xec(%rbp) 0.00 : 49af47: 7f 3f jg 49af88 0.00 : 49af49: eb 71 jmp 49afbc 0.00 : 49af4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : HeapTuple heaptup = heaptuples[ndone + nthispage]; : : if (PageGetHeapFreeSpace(page) < MAXALIGN(heaptup->t_len) + saveFreeSpace) : break; : : RelationPutHeapTuple(relation, buffer, heaptup); 0.00 : 49af50: 8b b5 38 ff ff ff mov -0xc8(%rbp),%esi 0.00 : 49af56: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49af5d: 48 89 da mov %rbx,%rdx 0.00 : 49af60: e8 eb 38 00 00 callq 49e850 : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) 0.00 : 49af65: 83 85 3c ff ff ff 01 addl $0x1,-0xc4(%rbp) 0.00 : 49af6c: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax : * temporary context before calling this, if that's a problem. : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2321 25.00 : 49af72: 8b 8d 3c ff ff ff mov -0xc4(%rbp),%ecx 0.00 : 49af78: 03 8d 5c ff ff ff add -0xa4(%rbp),%ecx : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) 0.00 : 49af7e: 39 c1 cmp %eax,%ecx : * temporary context before calling this, if that's a problem. : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { 0.00 : 49af80: 89 8d 14 ff ff ff mov %ecx,-0xec(%rbp) : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) 0.00 : 49af86: 7d 34 jge 49afbc : { : HeapTuple heaptup = heaptuples[ndone + nthispage]; 0.00 : 49af88: 48 63 85 14 ff ff ff movslq -0xec(%rbp),%rax 0.00 : 49af8f: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx : : if (PageGetHeapFreeSpace(page) < MAXALIGN(heaptup->t_len) + saveFreeSpace) 0.00 : 49af96: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) : { : HeapTuple heaptup = heaptuples[ndone + nthispage]; 0.00 : 49af9d: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx : : if (PageGetHeapFreeSpace(page) < MAXALIGN(heaptup->t_len) + saveFreeSpace) 0.00 : 49afa1: e8 ba 9d 1f 00 callq 694d60 0.00 : 49afa6: 8b 13 mov (%rbx),%edx 0.00 : 49afa8: 48 83 c2 07 add $0x7,%rdx 0.00 : 49afac: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.00 : 49afb0: 48 03 95 28 ff ff ff add -0xd8(%rbp),%rdx 0.00 : 49afb7: 48 39 d0 cmp %rdx,%rax 0.00 : 49afba: 73 94 jae 49af50 : break; : : RelationPutHeapTuple(relation, buffer, heaptup); : } : : if (PageIsAllVisible(page)) 0.00 : 49afbc: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : 49afc3: 31 db xor %ebx,%ebx 0.00 : 49afc5: 0f b7 42 0a movzwl 0xa(%rdx),%eax 0.00 : 49afc9: a8 04 test $0x4,%al 0.00 : 49afcb: 0f 85 7f 03 00 00 jne 49b350 : : /* : * XXX Should we set PageSetPrunable on this page ? See heap_insert() : */ : : MarkBufferDirty(buffer); 0.00 : 49afd1: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi 0.00 : 49afd7: e8 14 98 1d 00 callq 6747f0 : : /* XLOG stuff */ : if (needwal) 0.00 : 49afdc: 80 bd 4f ff ff ff 00 cmpb $0x0,-0xb1(%rbp) 0.00 : 49afe3: 0f 84 5a 02 00 00 je 49b243 : : /* : * If the page was previously empty, we can reinit the page : * instead of restoring the whole thing. : */ : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && 0.00 : 49afe9: 49 8b 04 24 mov (%r12),%rax : */ : for (i = 0; i < ntuples; i++) : tuples[i]->t_self = heaptuples[i]->t_self; : : pgstat_count_heap_insert(relation, ntuples); : } 0.00 : 49afed: 48 63 8d 3c ff ff ff movslq -0xc4(%rbp),%rcx : : /* : * If the page was previously empty, we can reinit the page : * instead of restoring the whole thing. : */ : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && 0.00 : 49aff4: 66 83 78 08 01 cmpw $0x1,0x8(%rax) 0.00 : 49aff9: 0f 84 d1 03 00 00 je 49b3d0 : * in that case the tuples are stored in order starting at : * FirstOffsetNumber and we don't need to store the offsets : * explicitly. : */ : if (!init) : scratchptr += nthispage * sizeof(OffsetNumber); 0.00 : 49afff: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 49b006: c6 85 4d ff ff ff 00 movb $0x0,-0xb3(%rbp) 0.00 : 49b00d: 48 8d 0c 4a lea (%rdx,%rcx,2),%rcx 0.00 : 49b011: 48 89 8d 40 ff ff ff mov %rcx,-0xc0(%rbp) : : /* the rest of the scratch space is used for tuple data */ : tupledata = scratchptr; : : xlrec->flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; 0.00 : 49b018: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b01f: 45 31 f6 xor %r14d,%r14d : scratchptr += nthispage * sizeof(OffsetNumber); : : /* the rest of the scratch space is used for tuple data */ : tupledata = scratchptr; : : xlrec->flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; 0.00 : 49b022: 88 59 10 mov %bl,0x10(%rcx) : xlrec->node = relation->rd_node; 0.00 : 49b025: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 49b02c: 48 8b 02 mov (%rdx),%rax 0.00 : 49b02f: 48 89 01 mov %rax,(%rcx) 0.00 : 49b032: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 49b035: 89 41 08 mov %eax,0x8(%rcx) : xlrec->blkno = BufferGetBlockNumber(buffer); 0.00 : 49b038: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi 0.00 : 49b03e: e8 ed 8f 1d 00 callq 674030 0.00 : 49b043: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b04a: 31 d2 xor %edx,%edx : /* the rest of the scratch space is used for tuple data */ : tupledata = scratchptr; : : xlrec->flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec->node = relation->rd_node; : xlrec->blkno = BufferGetBlockNumber(buffer); 0.00 : 49b04c: 89 41 0c mov %eax,0xc(%rcx) : xlrec->ntuples = nthispage; 0.00 : 49b04f: 0f b7 85 3c ff ff ff movzwl -0xc4(%rbp),%eax 0.00 : 49b056: 66 89 41 12 mov %ax,0x12(%rcx) : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b05a: 44 8b ad 3c ff ff ff mov -0xc4(%rbp),%r13d 0.00 : 49b061: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 49b068: 8b 85 40 ff ff ff mov -0xc0(%rbp),%eax 0.00 : 49b06e: 45 85 ed test %r13d,%r13d 0.00 : 49b071: 7f 1e jg 49b091 0.00 : 49b073: e9 e6 00 00 00 jmpq 49b15e 0.00 : 49b078: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49b07f: 00 : /* : * We don't use heap_multi_insert for catalog tuples yet, but : * better be prepared... : */ : if (need_cids) : log_heap_new_cid(relation, heaptup); 0.00 : 49b080: 49 83 c6 01 add $0x1,%r14 : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b084: 44 39 b5 3c ff ff ff cmp %r14d,-0xc4(%rbp) 0.00 : 49b08b: 0f 8e c3 00 00 00 jle 49b154 : { : HeapTuple heaptup = heaptuples[ndone + i]; 0.00 : 49b091: 8b 85 5c ff ff ff mov -0xa4(%rbp),%eax 0.00 : 49b097: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 49b09e: 44 01 f0 add %r14d,%eax : xl_multi_insert_tuple *tuphdr; : int datalen; : : if (!init) 0.00 : 49b0a1: 80 bd 4d ff ff ff 00 cmpb $0x0,-0xb3(%rbp) : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) : { : HeapTuple heaptup = heaptuples[ndone + i]; 0.00 : 49b0a8: 48 98 cltq 0.00 : 49b0aa: 4c 8b 3c c2 mov (%rdx,%rax,8),%r15 : xl_multi_insert_tuple *tuphdr; : int datalen; : : if (!init) 0.00 : 49b0ae: 75 12 jne 49b0c2 : xlrec->offsets[i] = ItemPointerGetOffsetNumber(&heaptup->t_self); 0.00 : 49b0b0: 41 0f b7 47 08 movzwl 0x8(%r15),%eax 0.00 : 49b0b5: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 49b0bc: 66 42 89 44 71 14 mov %ax,0x14(%rcx,%r14,2) : /* xl_multi_insert_tuple needs two-byte alignment. */ : tuphdr = (xl_multi_insert_tuple *) SHORTALIGN(scratchptr); 0.00 : 49b0c2: 48 83 c3 01 add $0x1,%rbx 0.00 : 49b0c6: 48 83 e3 fe and $0xfffffffffffffffe,%rbx : scratchptr = ((char *) tuphdr) + SizeOfMultiInsertTuple; 0.00 : 49b0ca: 48 8d 43 07 lea 0x7(%rbx),%rax 0.00 : 49b0ce: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : : tuphdr->t_infomask2 = heaptup->t_data->t_infomask2; 0.00 : 49b0d5: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 49b0d9: 0f b7 40 12 movzwl 0x12(%rax),%eax 0.00 : 49b0dd: 66 89 43 02 mov %ax,0x2(%rbx) : tuphdr->t_infomask = heaptup->t_data->t_infomask; 0.00 : 49b0e1: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 49b0e5: 0f b7 40 14 movzwl 0x14(%rax),%eax 0.00 : 49b0e9: 66 89 43 04 mov %ax,0x4(%rbx) : tuphdr->t_hoff = heaptup->t_data->t_hoff; 0.00 : 49b0ed: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 49b0f1: 0f b6 40 16 movzbl 0x16(%rax),%eax 0.00 : 49b0f5: 88 43 06 mov %al,0x6(%rbx) : : /* write bitmap [+ padding] [+ oid] + data */ : datalen = heaptup->t_len - offsetof(HeapTupleHeaderData, t_bits); 0.00 : 49b0f8: 45 8b 27 mov (%r15),%r12d : memcpy(scratchptr, 0.00 : 49b0fb: 49 8b 77 10 mov 0x10(%r15),%rsi 0.00 : 49b0ff: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi : tuphdr->t_infomask2 = heaptup->t_data->t_infomask2; : tuphdr->t_infomask = heaptup->t_data->t_infomask; : tuphdr->t_hoff = heaptup->t_data->t_hoff; : : /* write bitmap [+ padding] [+ oid] + data */ : datalen = heaptup->t_len - offsetof(HeapTupleHeaderData, t_bits); 0.00 : 49b106: 41 83 ec 17 sub $0x17,%r12d : memcpy(scratchptr, 0.00 : 49b10a: 4d 63 ec movslq %r12d,%r13 0.00 : 49b10d: 48 83 c6 17 add $0x17,%rsi 0.00 : 49b111: 4c 89 ea mov %r13,%rdx 0.00 : 49b114: e8 d7 ea fc ff callq 469bf0 : (char *) heaptup->t_data + offsetof(HeapTupleHeaderData, t_bits), : datalen); : tuphdr->datalen = datalen; 0.00 : 49b119: 66 44 89 23 mov %r12w,(%rbx) : scratchptr += datalen; 0.00 : 49b11d: 48 8b 9d 50 ff ff ff mov -0xb0(%rbp),%rbx 0.00 : 49b124: 4c 01 eb add %r13,%rbx : : /* : * We don't use heap_multi_insert for catalog tuples yet, but : * better be prepared... : */ : if (need_cids) 0.00 : 49b127: 80 bd 4e ff ff ff 00 cmpb $0x0,-0xb2(%rbp) 0.00 : 49b12e: 0f 84 4c ff ff ff je 49b080 : log_heap_new_cid(relation, heaptup); 0.00 : 49b134: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b13b: 4c 89 fe mov %r15,%rsi 0.00 : 49b13e: 49 83 c6 01 add $0x1,%r14 0.00 : 49b142: e8 79 d2 ff ff callq 4983c0 : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b147: 44 39 b5 3c ff ff ff cmp %r14d,-0xc4(%rbp) 0.00 : 49b14e: 0f 8f 3d ff ff ff jg 49b091 0.00 : 49b154: 8b 85 40 ff ff ff mov -0xc0(%rbp),%eax 0.00 : 49b15a: 89 da mov %ebx,%edx 0.00 : 49b15c: 29 c2 sub %eax,%edx : log_heap_new_cid(relation, heaptup); : } : totaldatalen = scratchptr - tupledata; : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; 0.00 : 49b15e: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; 0.00 : 49b165: c7 85 6c ff ff ff 00 movl $0x0,-0x94(%rbp) 0.00 : 49b16c: 00 00 00 : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; 0.00 : 49b16f: 89 55 88 mov %edx,-0x78(%rbp) : } : totaldatalen = scratchptr - tupledata; : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; 0.00 : 49b172: 29 c8 sub %ecx,%eax : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b174: 80 bd 37 ff ff ff 00 cmpb $0x0,-0xc9(%rbp) : log_heap_new_cid(relation, heaptup); : } : totaldatalen = scratchptr - tupledata; : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; 0.00 : 49b17b: 48 89 8d 60 ff ff ff mov %rcx,-0xa0(%rbp) : rdata[0].len = tupledata - scratch; 0.00 : 49b182: 89 85 68 ff ff ff mov %eax,-0x98(%rbp) : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; 0.00 : 49b188: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49b18f: 48 8b 85 d8 fe ff ff mov -0x128(%rbp),%rax : : rdata[1].data = tupledata; 0.00 : 49b196: 48 89 4d 80 mov %rcx,-0x80(%rbp) : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49b19a: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b1a1: 0f 84 09 02 00 00 je 49b3b0 : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49b1a7: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax : : rdata[2].data = NULL; : rdata[2].len = 0; : rdata[2].buffer = buffer; 0.00 : 49b1ae: 8b 95 38 ff ff ff mov -0xc8(%rbp),%edx : rdata[2].buffer_std = true; : rdata[2].next = NULL; : xlrec->flags |= XLOG_HEAP_CONTAINS_NEW_TUPLE; 0.00 : 49b1b4: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b1bb: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) : rdata[1].buffer_std = true; 0.00 : 49b1c2: c6 45 90 01 movb $0x1,-0x70(%rbp) : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); : : rdata[2].data = NULL; 0.00 : 49b1c6: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 49b1cd: 00 : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49b1ce: 48 89 45 98 mov %rax,-0x68(%rbp) : : rdata[2].data = NULL; : rdata[2].len = 0; 0.00 : 49b1d2: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%rbp) : rdata[2].buffer = buffer; 0.00 : 49b1d9: 89 55 ac mov %edx,-0x54(%rbp) : rdata[2].buffer_std = true; 0.00 : 49b1dc: c6 45 b0 01 movb $0x1,-0x50(%rbp) : rdata[2].next = NULL; 0.00 : 49b1e0: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 49b1e7: 00 : xlrec->flags |= XLOG_HEAP_CONTAINS_NEW_TUPLE; 0.00 : 49b1e8: 80 49 10 10 orb $0x10,0x10(%rcx) : : /* : * If we're going to reinitialize the whole page using the WAL : * record, hide buffer reference from XLogInsert. : */ : if (init) 0.00 : 49b1ec: 80 bd 4d ff ff ff 00 cmpb $0x0,-0xb3(%rbp) 0.00 : 49b1f3: be 50 00 00 00 mov $0x50,%esi 0.00 : 49b1f8: 74 13 je 49b20d : { : rdata[1].buffer = rdata[2].buffer = InvalidBuffer; 0.00 : 49b1fa: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) 0.00 : 49b201: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : 49b208: be d0 00 00 00 mov $0xd0,%esi : /* : * Signal that this is the last xl_heap_multi_insert record : * emitted by this call to heap_multi_insert(). Needed for logical : * decoding so it knows when to cleanup temporary data. : */ : if (ndone + nthispage == ntuples) 0.00 : 49b20d: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 49b213: 39 85 14 ff ff ff cmp %eax,-0xec(%rbp) 0.00 : 49b219: 0f 84 01 02 00 00 je 49b420 : xlrec->flags |= XLOG_HEAP_LAST_MULTI_INSERT; : : recptr = XLogInsert(RM_HEAP2_ID, info, rdata); 0.00 : 49b21f: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 49b226: bf 09 00 00 00 mov $0x9,%edi 0.00 : 49b22b: e8 f0 9c 03 00 callq 4d4f20 : : PageSetLSN(page, recptr); 0.00 : 49b230: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 49b237: 48 89 c2 mov %rax,%rdx 0.00 : 49b23a: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 49b23e: 89 11 mov %edx,(%rcx) 0.00 : 49b240: 89 41 04 mov %eax,0x4(%rcx) : } : : END_CRIT_SECTION(); 0.00 : 49b243: 8b 05 53 ee 71 00 mov 0x71ee53(%rip),%eax # bba09c : : UnlockReleaseBuffer(buffer); 0.00 : 49b249: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi : recptr = XLogInsert(RM_HEAP2_ID, info, rdata); : : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 49b24f: 83 e8 01 sub $0x1,%eax 0.00 : 49b252: 89 05 44 ee 71 00 mov %eax,0x71ee44(%rip) # bba09c : : UnlockReleaseBuffer(buffer); 0.00 : 49b258: e8 d3 9c 1d 00 callq 674f30 : if (vmbuffer != InvalidBuffer) 0.00 : 49b25d: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 49b260: 85 ff test %edi,%edi 0.00 : 49b262: 75 2c jne 49b290 : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); : : ndone = 0; : while (ndone < ntuples) 0.00 : 49b264: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 49b26a: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 49b270: 7e 31 jle 49b2a3 0.00 : 49b272: 89 85 5c ff ff ff mov %eax,-0xa4(%rbp) 0.00 : 49b278: e9 03 fc ff ff jmpq 49ae80 0.00 : 49b27d: 0f 1f 00 nopl (%rax) : Buffer buffer; : Buffer vmbuffer = InvalidBuffer; : bool all_visible_cleared = false; : int nthispage; : : CHECK_FOR_INTERRUPTS(); 0.00 : 49b280: e8 1b 10 20 00 callq 69c2a0 0.00 : 49b285: e9 0c fc ff ff jmpq 49ae96 0.00 : 49b28a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : END_CRIT_SECTION(); : : UnlockReleaseBuffer(buffer); : if (vmbuffer != InvalidBuffer) : ReleaseBuffer(vmbuffer); 0.00 : 49b290: e8 cb 9b 1d 00 callq 674e60 : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); : : ndone = 0; : while (ndone < ntuples) 0.00 : 49b295: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 49b29b: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 49b2a1: 7f cf jg 49b272 : * If tuples are cachable, mark them for invalidation from the caches in : * case we abort. Note it is OK to do this after releasing the buffer, : * because the heaptuples data structure is all in local memory, not in : * the shared buffer. : */ : if (IsCatalogRelation(relation)) 0.00 : 49b2a3: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b2aa: e8 31 7b 04 00 callq 4e2de0 0.00 : 49b2af: 84 c0 test %al,%al 0.00 : 49b2b1: 0f 84 a4 01 00 00 je 49b45b : { : for (i = 0; i < ntuples; i++) 0.00 : 49b2b7: 44 8b a5 f4 fe ff ff mov -0x10c(%rbp),%r12d 0.00 : 49b2be: 45 85 e4 test %r12d,%r12d 0.00 : 49b2c1: 7e 68 jle 49b32b 0.00 : 49b2c3: 4c 8b a5 08 ff ff ff mov -0xf8(%rbp),%r12 0.00 : 49b2ca: 31 db xor %ebx,%ebx 0.00 : 49b2cc: 0f 1f 40 00 nopl 0x0(%rax) : CacheInvalidateHeapTuple(relation, heaptuples[i], NULL); 0.00 : 49b2d0: 49 8b 34 24 mov (%r12),%rsi 0.00 : 49b2d4: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b2db: 31 d2 xor %edx,%edx : * because the heaptuples data structure is all in local memory, not in : * the shared buffer. : */ : if (IsCatalogRelation(relation)) : { : for (i = 0; i < ntuples; i++) 0.00 : 49b2dd: 83 c3 01 add $0x1,%ebx 0.00 : 49b2e0: 49 83 c4 08 add $0x8,%r12 : CacheInvalidateHeapTuple(relation, heaptuples[i], NULL); 0.00 : 49b2e4: e8 07 c2 2c 00 callq 7674f0 : * because the heaptuples data structure is all in local memory, not in : * the shared buffer. : */ : if (IsCatalogRelation(relation)) : { : for (i = 0; i < ntuples; i++) 0.00 : 49b2e9: 39 9d f4 fe ff ff cmp %ebx,-0x10c(%rbp) 0.00 : 49b2ef: 7f df jg 49b2d0 : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; : rdata[1].buffer_std = true; : rdata[1].next = NULL; 0.00 : 49b2f1: 31 ff xor %edi,%edi 0.00 : 49b2f3: 31 f6 xor %esi,%esi 0.00 : 49b2f5: 0f 1f 00 nopl (%rax) : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) : tuples[i]->t_self = heaptuples[i]->t_self; 0.00 : 49b2f8: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 49b2ff: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) 0.00 : 49b306: 83 c7 01 add $0x1,%edi : tuples[i]->t_self = heaptuples[i]->t_self; 0.00 : 49b309: 48 8b 0c 32 mov (%rdx,%rsi,1),%rcx 0.00 : 49b30d: 48 8b 14 30 mov (%rax,%rsi,1),%rdx : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) 0.00 : 49b311: 48 83 c6 08 add $0x8,%rsi : tuples[i]->t_self = heaptuples[i]->t_self; 0.00 : 49b315: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 49b318: 89 41 04 mov %eax,0x4(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 25.00 : 49b31b: 0f b7 42 08 movzwl 0x8(%rdx),%eax 25.00 : 49b31f: 66 89 41 08 mov %ax,0x8(%rcx) : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) 0.00 : 49b323: 39 bd f4 fe ff ff cmp %edi,-0x10c(%rbp) 0.00 : 49b329: 7f cd jg 49b2f8 : tuples[i]->t_self = heaptuples[i]->t_self; : : pgstat_count_heap_insert(relation, ntuples); 0.00 : 49b32b: 8b b5 f4 fe ff ff mov -0x10c(%rbp),%esi 0.00 : 49b331: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b338: e8 33 72 1a 00 callq 642570 : } 0.00 : 49b33d: 48 81 c4 18 01 00 00 add $0x118,%rsp 0.00 : 49b344: 5b pop %rbx 0.00 : 49b345: 41 5c pop %r12 0.00 : 49b347: 41 5d pop %r13 0.00 : 49b349: 41 5e pop %r14 0.00 : 49b34b: 41 5f pop %r15 0.00 : 49b34d: c9 leaveq 0.00 : 49b34e: c3 retq 0.00 : 49b34f: 90 nop : } : : if (PageIsAllVisible(page)) : { : all_visible_cleared = true; : PageClearAllVisible(page); 0.00 : 49b350: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 49b357: 83 e0 fb and $0xfffffffb,%eax 0.00 : 49b35a: 66 89 41 0a mov %ax,0xa(%rcx) : visibilitymap_clear(relation, 0.00 : 49b35e: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi 0.00 : 49b364: 8b 5d cc mov -0x34(%rbp),%ebx 0.00 : 49b367: e8 c4 8c 1d 00 callq 674030 0.00 : 49b36c: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b373: 89 da mov %ebx,%edx 0.00 : 49b375: 89 c6 mov %eax,%esi 0.00 : 49b377: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 49b37c: e8 af 91 00 00 callq 4a4530 0.00 : 49b381: e9 4b fc ff ff jmpq 49afd1 0.00 : 49b386: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 49b38d: 00 00 00 : * all-visible, this will also pin the requisite visibility map page. : */ : buffer = RelationGetBufferForTuple(relation, heaptuples[ndone]->t_len, : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); 0.00 : 49b390: 48 8b 15 81 1d 6e 00 mov 0x6e1d81(%rip),%rdx # b7d118 0.00 : 49b397: f7 d0 not %eax 0.00 : 49b399: 48 98 cltq 0.00 : 49b39b: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 49b39f: 48 89 95 20 ff ff ff mov %rdx,-0xe0(%rbp) 0.00 : 49b3a6: e9 58 fb ff ff jmpq 49af03 0.00 : 49b3ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b3b0: 8b 8d 38 ff ff ff mov -0xc8(%rbp),%ecx : rdata[1].buffer_std = true; 0.00 : 49b3b6: c6 45 90 01 movb $0x1,-0x70(%rbp) : rdata[1].next = NULL; 0.00 : 49b3ba: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 49b3c1: 00 : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b3c2: 89 4d 8c mov %ecx,-0x74(%rbp) 0.00 : 49b3c5: e9 22 fe ff ff jmpq 49b1ec 0.00 : 49b3ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * If the page was previously empty, we can reinit the page : * instead of restoring the whole thing. : */ : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && 0.00 : 49b3d0: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 49b3d7: 0f b7 50 0c movzwl 0xc(%rax),%edx 0.00 : 49b3db: 31 c0 xor %eax,%eax 0.00 : 49b3dd: 66 83 fa 18 cmp $0x18,%dx 0.00 : 49b3e1: 76 0b jbe 49b3ee 0.00 : 49b3e3: 0f b7 c2 movzwl %dx,%eax 0.00 : 49b3e6: 48 83 e8 18 sub $0x18,%rax 0.00 : 49b3ea: 48 c1 e8 02 shr $0x2,%rax 0.00 : 49b3ee: 48 63 8d 3c ff ff ff movslq -0xc4(%rbp),%rcx 0.00 : 49b3f5: 48 39 c8 cmp %rcx,%rax 0.00 : 49b3f8: 0f 85 01 fc ff ff jne 49afff : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.00 : 49b3fe: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 49b405: c6 85 4d ff ff ff 01 movb $0x1,-0xb3(%rbp) 0.00 : 49b40c: 48 89 95 40 ff ff ff mov %rdx,-0xc0(%rbp) 0.00 : 49b413: e9 00 fc ff ff jmpq 49b018 0.00 : 49b418: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49b41f: 00 : * Signal that this is the last xl_heap_multi_insert record : * emitted by this call to heap_multi_insert(). Needed for logical : * decoding so it knows when to cleanup temporary data. : */ : if (ndone + nthispage == ntuples) : xlrec->flags |= XLOG_HEAP_LAST_MULTI_INSERT; 0.00 : 49b420: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 49b427: 80 4a 10 80 orb $0x80,0x10(%rdx) 0.00 : 49b42b: e9 ef fd ff ff jmpq 49b21f : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49b430: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 49b437: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 49b43b: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49b43f: 74 43 je 49b484 0.00 : 49b441: 48 8b 92 98 00 00 00 mov 0x98(%rdx),%rdx 0.00 : 49b448: c6 85 37 ff ff ff 00 movb $0x0,-0xc9(%rbp) 0.00 : 49b44f: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b456: e9 df f8 ff ff jmpq 49ad3a : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) 0.00 : 49b45b: 8b 9d f4 fe ff ff mov -0x10c(%rbp),%ebx 0.00 : 49b461: 85 db test %ebx,%ebx 0.00 : 49b463: 0f 8f 88 fe ff ff jg 49b2f1 0.00 : 49b469: e9 bd fe ff ff jmpq 49b32b : * Allocate some memory to use for constructing the WAL record. Using : * palloc() within a critical section is not safe, so we allocate this : * beforehand. : */ : if (needwal) : scratch = palloc(BLCKSZ); 0.00 : 49b46e: bf 00 20 00 00 mov $0x2000,%edi 0.00 : 49b473: e8 d8 d8 2f 00 callq 798d50 0.00 : 49b478: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) 0.00 : 49b47f: e9 94 f9 ff ff jmpq 49ae18 : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49b484: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b48b: e8 50 79 04 00 callq 4e2de0 0.00 : 49b490: 84 c0 test %al,%al 0.00 : 49b492: 0f 94 85 37 ff ff ff sete -0xc9(%rbp) : bool need_cids = RelationIsAccessibleInLogicalDecoding(relation); 0.00 : 49b499: 83 3d bc dc 6d 00 02 cmpl $0x2,0x6ddcbc(%rip) # b7915c 0.00 : 49b4a0: 7e 7e jle 49b520 0.00 : 49b4a2: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 49b4a9: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 49b4ad: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49b4b1: 75 5a jne 49b50d 0.00 : 49b4b3: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b4ba: e8 21 79 04 00 callq 4e2de0 0.00 : 49b4bf: 84 c0 test %al,%al 0.00 : 49b4c1: 74 1a je 49b4dd 0.00 : 49b4c3: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 49b4ca: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 49b4d1: c6 85 4e ff ff ff 01 movb $0x1,-0xb2(%rbp) 0.00 : 49b4d8: e9 5d f8 ff ff jmpq 49ad3a 0.00 : 49b4dd: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 49b4e4: 48 8b 91 98 00 00 00 mov 0x98(%rcx),%rdx 0.00 : 49b4eb: 48 85 d2 test %rdx,%rdx 0.00 : 49b4ee: 74 11 je 49b501 0.00 : 49b4f0: c6 85 4e ff ff ff 01 movb $0x1,-0xb2(%rbp) 0.00 : 49b4f7: 80 7a 48 00 cmpb $0x0,0x48(%rdx) 0.00 : 49b4fb: 0f 85 39 f8 ff ff jne 49ad3a 0.00 : 49b501: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b508: e9 2d f8 ff ff jmpq 49ad3a 0.00 : 49b50d: 48 8b 92 98 00 00 00 mov 0x98(%rdx),%rdx 0.00 : 49b514: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b51b: e9 1a f8 ff ff jmpq 49ad3a 0.00 : 49b520: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 49b527: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 49b52e: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b535: e9 00 f8 ff ff jmpq 49ad3a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:366 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:331 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a4350 : : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a4350: 55 push %rbp : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a4351: 89 f1 mov %esi,%ecx 0.00 : 4a4353: b8 21 81 01 02 mov $0x2018121,%eax 0.00 : 4a4358: c1 e9 06 shr $0x6,%ecx : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a435b: 48 89 e5 mov %rsp,%rbp 0.00 : 4a435e: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 4a4362: 49 89 d5 mov %rdx,%r13 0.00 : 4a4365: 48 89 5d e0 mov %rbx,-0x20(%rbp) : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a4369: f7 e1 mul %ecx : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:331 33.33 : 4a436b: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 4a436f: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 4a4373: 48 83 ec 20 sub $0x20,%rsp 0.00 : 4a4377: 49 89 fe mov %rdi,%r14 : #ifdef TRACE_VISIBILITYMAP : elog(DEBUG1, "vm_test %s %d", RelationGetRelationName(rel), heapBlk); : #endif : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) 0.00 : 4a437a: 41 8b 7d 00 mov 0x0(%r13),%edi : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a437e: 41 89 f4 mov %esi,%r12d : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a4381: 89 d3 mov %edx,%ebx 0.00 : 4a4383: c1 eb 03 shr $0x3,%ebx : #ifdef TRACE_VISIBILITYMAP : elog(DEBUG1, "vm_test %s %d", RelationGetRelationName(rel), heapBlk); : #endif : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) 0.00 : 4a4386: 85 ff test %edi,%edi 0.00 : 4a4388: 75 7e jne 4a4408 : } : } : : if (!BufferIsValid(*buf)) : { : *buf = vm_readbuf(rel, mapBlock, false); 0.00 : 4a438a: 31 d2 xor %edx,%edx 0.00 : 4a438c: 89 de mov %ebx,%esi 0.00 : 4a438e: 4c 89 f7 mov %r14,%rdi 0.00 : 4a4391: e8 aa fa ff ff callq 4a3e40 : if (!BufferIsValid(*buf)) 0.00 : 4a4396: 31 d2 xor %edx,%edx 0.00 : 4a4398: 85 c0 test %eax,%eax : } : } : : if (!BufferIsValid(*buf)) : { : *buf = vm_readbuf(rel, mapBlock, false); 0.00 : 4a439a: 41 89 45 00 mov %eax,0x0(%r13) : if (!BufferIsValid(*buf)) 0.00 : 4a439e: 74 4e je 4a43ee : return false; : } : : map = PageGetContents(BufferGetPage(*buf)); 0.00 : 4a43a0: 85 c0 test %eax,%eax 0.00 : 4a43a2: 0f 88 88 00 00 00 js 4a4430 0.00 : 4a43a8: 83 e8 01 sub $0x1,%eax 0.00 : 4a43ab: 48 98 cltq 0.00 : 4a43ad: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4a43b1: 48 8d 48 18 lea 0x18(%rax),%rcx 0.00 : 4a43b5: 48 03 0d 3c b7 71 00 add 0x71b73c(%rip),%rcx # bbfaf8 : /* : * A single-bit read is atomic. There could be memory-ordering effects : * here, but for performance reasons we make it the caller's job to worry : * about that. : */ : result = (map[mapByte] & (1 << mapBit)) ? true : false; 0.00 : 4a43bc: 44 89 e2 mov %r12d,%edx 0.00 : 4a43bf: b8 21 81 01 02 mov $0x2018121,%eax 0.00 : 4a43c4: c1 ea 06 shr $0x6,%edx 0.00 : 4a43c7: f7 e2 mul %edx 0.00 : 4a43c9: 44 89 e0 mov %r12d,%eax 0.00 : 4a43cc: 41 83 e4 07 and $0x7,%r12d 0.00 : 4a43d0: c1 ea 03 shr $0x3,%edx 0.00 : 4a43d3: 69 d2 40 ff 00 00 imul $0xff40,%edx,%edx 0.00 : 4a43d9: 29 d0 sub %edx,%eax 0.00 : 4a43db: c1 e8 03 shr $0x3,%eax 0.00 : 4a43de: 89 c0 mov %eax,%eax 0.00 : 4a43e0: 0f be 04 01 movsbl (%rcx,%rax,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:366 66.67 : 4a43e4: 44 89 e1 mov %r12d,%ecx 0.00 : 4a43e7: d3 f8 sar %cl,%eax 0.00 : 4a43e9: 89 c2 mov %eax,%edx 0.00 : 4a43eb: 83 e2 01 and $0x1,%edx : : return result; : } 0.00 : 4a43ee: 89 d0 mov %edx,%eax 0.00 : 4a43f0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4a43f4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 4a43f9: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 4a43fe: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 4a4403: c9 leaveq 0.00 : 4a4404: c3 retq 0.00 : 4a4405: 0f 1f 00 nopl (%rax) : #endif : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) : { : if (BufferGetBlockNumber(*buf) != mapBlock) 0.00 : 4a4408: e8 23 fc 1c 00 callq 674030 0.00 : 4a440d: 39 d8 cmp %ebx,%eax 0.00 : 4a440f: 74 3f je 4a4450 : { : ReleaseBuffer(*buf); 0.00 : 4a4411: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 4a4415: e8 46 0a 1d 00 callq 674e60 : *buf = InvalidBuffer; 0.00 : 4a441a: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 4a4421: 00 0.00 : 4a4422: e9 63 ff ff ff jmpq 4a438a 0.00 : 4a4427: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a442e: 00 00 : *buf = vm_readbuf(rel, mapBlock, false); : if (!BufferIsValid(*buf)) : return false; : } : : map = PageGetContents(BufferGetPage(*buf)); 0.00 : 4a4430: 48 8b 15 e1 8c 6d 00 mov 0x6d8ce1(%rip),%rdx # b7d118 0.00 : 4a4437: f7 d0 not %eax 0.00 : 4a4439: 48 98 cltq 0.00 : 4a443b: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 4a443f: 48 8d 48 18 lea 0x18(%rax),%rcx 0.00 : 4a4443: e9 74 ff ff ff jmpq 4a43bc 0.00 : 4a4448: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a444f: 00 : ReleaseBuffer(*buf); : *buf = InvalidBuffer; : } : } : : if (!BufferIsValid(*buf)) 0.00 : 4a4450: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 4a4454: 85 c0 test %eax,%eax 0.00 : 4a4456: 0f 85 44 ff ff ff jne 4a43a0 0.00 : 4a445c: e9 29 ff ff ff jmpq 4a438a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2161 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2157 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2158 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a6060 <_bt_pgaddtup>: : static bool : _bt_pgaddtup(Page page, : Size itemsize, : IndexTuple itup, : OffsetNumber itup_off) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2157 25.00 : 4a6060: 55 push %rbp 0.00 : 4a6061: 49 89 f2 mov %rsi,%r10 0.00 : 4a6064: 48 89 d6 mov %rdx,%rsi 0.00 : 4a6067: 89 ca mov %ecx,%edx : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : IndexTupleData trunctuple; : : if (!P_ISLEAF(opaque) && itup_off == P_FIRSTDATAKEY(opaque)) 0.00 : 4a6069: 0f b7 c9 movzwl %cx,%ecx : static bool : _bt_pgaddtup(Page page, : Size itemsize, : IndexTuple itup, : OffsetNumber itup_off) : { 0.00 : 4a606c: 48 89 e5 mov %rsp,%rbp 0.00 : 4a606f: 48 83 ec 10 sub $0x10,%rsp : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a6073: 0f b7 47 10 movzwl 0x10(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2158 25.00 : 4a6077: 48 8d 04 07 lea (%rdi,%rax,1),%rax : IndexTupleData trunctuple; : : if (!P_ISLEAF(opaque) && itup_off == P_FIRSTDATAKEY(opaque)) 0.00 : 4a607b: f6 40 0c 01 testb $0x1,0xc(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2161 50.00 : 4a607f: 75 10 jne 4a6091 <_bt_pgaddtup+0x31> 0.00 : 4a6081: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 4a6085: 0f b7 ca movzwl %dx,%ecx 0.00 : 4a6088: 19 c0 sbb %eax,%eax 0.00 : 4a608a: 83 c0 02 add $0x2,%eax 0.00 : 4a608d: 39 c1 cmp %eax,%ecx 0.00 : 4a608f: 74 1f je 4a60b0 <_bt_pgaddtup+0x50> : trunctuple.t_info = sizeof(IndexTupleData); : itup = &trunctuple; : itemsize = sizeof(IndexTupleData); : } : : if (PageAddItem(page, (Item) itup, itemsize, itup_off, 0.00 : 4a6091: 45 31 c9 xor %r9d,%r9d 0.00 : 4a6094: 45 31 c0 xor %r8d,%r8d 0.00 : 4a6097: 4c 89 d2 mov %r10,%rdx 0.00 : 4a609a: e8 e1 fd 1e 00 callq 695e80 0.00 : 4a609f: 66 85 c0 test %ax,%ax : false, false) == InvalidOffsetNumber) : return false; : : return true; : } 0.00 : 4a60a2: c9 leaveq : trunctuple.t_info = sizeof(IndexTupleData); : itup = &trunctuple; : itemsize = sizeof(IndexTupleData); : } : : if (PageAddItem(page, (Item) itup, itemsize, itup_off, 0.00 : 4a60a3: 0f 95 c0 setne %al : false, false) == InvalidOffsetNumber) : return false; : : return true; : } 0.00 : 4a60a6: c3 retq 0.00 : 4a60a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a60ae: 00 00 : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : IndexTupleData trunctuple; : : if (!P_ISLEAF(opaque) && itup_off == P_FIRSTDATAKEY(opaque)) : { : trunctuple = *itup; 0.00 : 4a60b0: 48 8b 06 mov (%rsi),%rax : trunctuple.t_info = sizeof(IndexTupleData); 0.00 : 4a60b3: 41 ba 08 00 00 00 mov $0x8,%r10d 0.00 : 4a60b9: 48 8d 75 f0 lea -0x10(%rbp),%rsi : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : IndexTupleData trunctuple; : : if (!P_ISLEAF(opaque) && itup_off == P_FIRSTDATAKEY(opaque)) : { : trunctuple = *itup; 0.00 : 4a60bd: 48 89 45 f0 mov %rax,-0x10(%rbp) : trunctuple.t_info = sizeof(IndexTupleData); 0.00 : 4a60c1: 66 c7 45 f6 08 00 movw $0x8,-0xa(%rbp) 0.00 : 4a60c7: eb c8 jmp 4a6091 <_bt_pgaddtup+0x31> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2037 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2053 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2048 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2053 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ce920 : : * save the buffer's LSN at *lsn. : */ : static bool : XLogCheckBuffer(XLogRecData *rdata, bool holdsExclusiveLock, : XLogRecPtr *lsn, BkpBlock *bkpb) : { 0.00 : 4ce920: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2037 33.33 : 4ce921: 48 89 e5 mov %rsp,%rbp 0.00 : 4ce924: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 4ce928: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 4ce92c: 49 89 fd mov %rdi,%r13 0.00 : 4ce92f: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 4ce933: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 4ce937: 48 83 ec 20 sub $0x20,%rsp : Page page; : : page = BufferGetPage(rdata->buffer); 0.00 : 4ce93b: 8b 7f 0c mov 0xc(%rdi),%edi : * save the buffer's LSN at *lsn. : */ : static bool : XLogCheckBuffer(XLogRecData *rdata, bool holdsExclusiveLock, : XLogRecPtr *lsn, BkpBlock *bkpb) : { 0.00 : 4ce93e: 49 89 cc mov %rcx,%r12 0.00 : 4ce941: 49 89 d6 mov %rdx,%r14 0.00 : 4ce944: 89 f1 mov %esi,%ecx : Page page; : : page = BufferGetPage(rdata->buffer); 0.00 : 4ce946: 85 ff test %edi,%edi 0.00 : 4ce948: 0f 88 b2 00 00 00 js 4cea00 0.00 : 4ce94e: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 4ce951: 48 63 d8 movslq %eax,%rbx 0.00 : 4ce954: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4ce958: 48 03 1d 99 11 6f 00 add 0x6f1199(%rip),%rbx # bbfaf8 : * We assume page LSN is first data on *every* page that can be passed to : * XLogInsert, whether it has the standard page layout or not. We don't : * need to take the buffer header lock for PageGetLSN if we hold an : * exclusive lock on the page and/or the relation. : */ : if (holdsExclusiveLock) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2048 16.67 : 4ce95f: 84 c9 test %cl,%cl 0.00 : 4ce961: 0f 84 89 00 00 00 je 4ce9f0 : *lsn = PageGetLSN(page); 0.00 : 4ce967: 8b 13 mov (%rbx),%edx 0.00 : 4ce969: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 4ce96c: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 4ce970: 48 09 c2 or %rax,%rdx 0.00 : 4ce973: 49 89 16 mov %rdx,(%r14) : else : *lsn = BufferGetLSNAtomic(rdata->buffer); : : if (*lsn <= RedoRecPtr) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2053 16.67 : 4ce976: 31 c0 xor %eax,%eax 0.00 : 4ce978: 48 3b 15 59 aa 6a 00 cmp 0x6aaa59(%rip),%rdx # b793d8 33.33 : 4ce97f: 76 1f jbe 4ce9a0 : : return true; /* buffer requires backup */ : } : : return false; /* buffer does not need to be backed up */ : } 0.00 : 4ce981: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4ce985: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 4ce98a: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 4ce98f: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 4ce994: c9 leaveq 0.00 : 4ce995: c3 retq 0.00 : 4ce996: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ce99d: 00 00 00 : if (*lsn <= RedoRecPtr) : { : /* : * The page needs to be backed up, so set up *bkpb : */ : BufferGetTag(rdata->buffer, &bkpb->node, &bkpb->fork, &bkpb->block); 0.00 : 4ce9a0: 41 8b 7d 0c mov 0xc(%r13),%edi 0.00 : 4ce9a4: 49 8d 4c 24 10 lea 0x10(%r12),%rcx 0.00 : 4ce9a9: 49 8d 54 24 0c lea 0xc(%r12),%rdx 0.00 : 4ce9ae: 4c 89 e6 mov %r12,%rsi 0.00 : 4ce9b1: e8 ba 56 1a 00 callq 674070 : : if (rdata->buffer_std) 0.00 : 4ce9b6: 41 80 7d 10 00 cmpb $0x0,0x10(%r13) 0.00 : 4ce9bb: 74 13 je 4ce9d0 : { : /* Assume we can omit data between pd_lower and pd_upper */ : uint16 lower = ((PageHeader) page)->pd_lower; 0.00 : 4ce9bd: 0f b7 53 0c movzwl 0xc(%rbx),%edx : uint16 upper = ((PageHeader) page)->pd_upper; 0.00 : 4ce9c1: 0f b7 43 0e movzwl 0xe(%rbx),%eax : : if (lower >= SizeOfPageHeaderData && 0.00 : 4ce9c5: 66 83 fa 17 cmp $0x17,%dx 0.00 : 4ce9c9: 76 05 jbe 4ce9d0 0.00 : 4ce9cb: 66 39 d0 cmp %dx,%ax 0.00 : 4ce9ce: 77 50 ja 4cea20 : } : } : else : { : /* Not a standard page header, don't try to eliminate "hole" */ : bkpb->hole_offset = 0; 0.00 : 4ce9d0: 66 41 c7 44 24 14 00 movw $0x0,0x14(%r12) 0.00 : 4ce9d7: 00 : bkpb->hole_length = 0; 0.00 : 4ce9d8: 66 41 c7 44 24 16 00 movw $0x0,0x16(%r12) 0.00 : 4ce9df: 00 0.00 : 4ce9e0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4ce9e5: eb 9a jmp 4ce981 0.00 : 4ce9e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ce9ee: 00 00 : * exclusive lock on the page and/or the relation. : */ : if (holdsExclusiveLock) : *lsn = PageGetLSN(page); : else : *lsn = BufferGetLSNAtomic(rdata->buffer); 0.00 : 4ce9f0: e8 cb 5e 1a 00 callq 6748c0 0.00 : 4ce9f5: 48 89 c2 mov %rax,%rdx 0.00 : 4ce9f8: 49 89 06 mov %rax,(%r14) 0.00 : 4ce9fb: e9 76 ff ff ff jmpq 4ce976 : XLogCheckBuffer(XLogRecData *rdata, bool holdsExclusiveLock, : XLogRecPtr *lsn, BkpBlock *bkpb) : { : Page page; : : page = BufferGetPage(rdata->buffer); 0.00 : 4cea00: 89 f8 mov %edi,%eax 0.00 : 4cea02: 48 8b 15 0f e7 6a 00 mov 0x6ae70f(%rip),%rdx # b7d118 0.00 : 4cea09: f7 d0 not %eax 0.00 : 4cea0b: 48 98 cltq 0.00 : 4cea0d: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4cea11: e9 49 ff ff ff jmpq 4ce95f 0.00 : 4cea16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4cea1d: 00 00 00 : { : /* Assume we can omit data between pd_lower and pd_upper */ : uint16 lower = ((PageHeader) page)->pd_lower; : uint16 upper = ((PageHeader) page)->pd_upper; : : if (lower >= SizeOfPageHeaderData && 0.00 : 4cea20: 66 3d 00 20 cmp $0x2000,%ax 0.00 : 4cea24: 77 aa ja 4ce9d0 : upper > lower && : upper <= BLCKSZ) : { : bkpb->hole_offset = lower; : bkpb->hole_length = upper - lower; 0.00 : 4cea26: 66 29 d0 sub %dx,%ax : : if (lower >= SizeOfPageHeaderData && : upper > lower && : upper <= BLCKSZ) : { : bkpb->hole_offset = lower; 0.00 : 4cea29: 66 41 89 54 24 14 mov %dx,0x14(%r12) : bkpb->hole_length = upper - lower; 0.00 : 4cea2f: 66 41 89 44 24 16 mov %ax,0x16(%r12) 0.00 : 4cea35: b8 01 00 00 00 mov $0x1,%eax : { : /* Assume we can omit data between pd_lower and pd_upper */ : uint16 lower = ((PageHeader) page)->pd_lower; : uint16 upper = ((PageHeader) page)->pd_upper; : : if (lower >= SizeOfPageHeaderData && 0.00 : 4cea3a: e9 42 ff ff ff jmpq 4ce981 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1699 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1772 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d3f10 : : * uninitialized page), and the inserter might need to evict an old WAL buffer : * to make room for a new one, which in turn requires WALWriteLock. : */ : static XLogRecPtr : WaitXLogInsertionsToFinish(XLogRecPtr upto) : { 0.00 : 4d3f10: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1699 66.67 : 4d3f11: 48 89 e5 mov %rsp,%rbp 0.00 : 4d3f14: 41 56 push %r14 0.00 : 4d3f16: 41 55 push %r13 0.00 : 4d3f18: 41 54 push %r12 0.00 : 4d3f1a: 49 89 fc mov %rdi,%r12 0.00 : 4d3f1d: 53 push %rbx 0.00 : 4d3f1e: 48 83 ec 10 sub $0x10,%rsp : XLogRecPtr reservedUpto; : XLogRecPtr finishedUpto; : XLogCtlInsert *Insert = &XLogCtl->Insert; : int i; : : if (MyProc == NULL) 0.00 : 4d3f22: 48 83 3d 1e 9a 6a 00 cmpq $0x0,0x6a9a1e(%rip) # b7d948 0.00 : 4d3f29: 00 : WaitXLogInsertionsToFinish(XLogRecPtr upto) : { : uint64 bytepos; : XLogRecPtr reservedUpto; : XLogRecPtr finishedUpto; : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d3f2a: 48 8b 1d 67 52 6a 00 mov 0x6a5267(%rip),%rbx # b79198 : int i; : : if (MyProc == NULL) 0.00 : 4d3f31: 0f 84 f6 00 00 00 je 4d402d : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d3f37: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d3f3c: f0 86 03 lock xchg %al,(%rbx) : elog(PANIC, "cannot wait without a PGPROC structure"); : : /* Read the current insert position */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d3f3f: 84 c0 test %al,%al 0.00 : 4d3f41: 0f 85 8e 00 00 00 jne 4d3fd5 : bytepos = Insert->CurrBytePos; 0.00 : 4d3f47: 48 8b 7b 08 mov 0x8(%rbx),%rdi : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d3f4b: c6 03 00 movb $0x0,(%rbx) : reservedUpto = XLogBytePosToEndRecPtr(bytepos); 0.00 : 4d3f4e: e8 bd 8e ff ff callq 4cce10 : * LSN on disk, for example. XLogFlush checks for that situation and : * complains, but only after the flush. Here we just assume that to mean : * that all WAL that has been reserved needs to be finished. In this : * corner-case, the return value can be smaller than 'upto' argument. : */ : if (upto > reservedUpto) 0.00 : 4d3f53: 4c 39 e0 cmp %r12,%rax : : /* Read the current insert position */ : SpinLockAcquire(&Insert->insertpos_lck); : bytepos = Insert->CurrBytePos; : SpinLockRelease(&Insert->insertpos_lck); : reservedUpto = XLogBytePosToEndRecPtr(bytepos); 0.00 : 4d3f56: 48 89 c3 mov %rax,%rbx : * LSN on disk, for example. XLogFlush checks for that situation and : * complains, but only after the flush. Here we just assume that to mean : * that all WAL that has been reserved needs to be finished. In this : * corner-case, the return value can be smaller than 'upto' argument. : */ : if (upto > reservedUpto) 0.00 : 4d3f59: 0f 82 8d 00 00 00 jb 4d3fec 0.00 : 4d3f5f: 4c 8d 75 d8 lea -0x28(%rbp),%r14 : { : elog(LOG, "request to flush past end of generated WAL; request %X/%X, currpos %X/%X", 0.00 : 4d3f63: 49 89 dd mov %rbx,%r13 0.00 : 4d3f66: 31 db xor %ebx,%ebx 0.00 : 4d3f68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4d3f6f: 00 : * out for any insertion that's still in progress. : */ : finishedUpto = reservedUpto; : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) : { : XLogRecPtr insertingat = InvalidXLogRecPtr; 0.00 : 4d3f70: 48 c7 45 d8 00 00 00 movq $0x0,-0x28(%rbp) 0.00 : 4d3f77: 00 0.00 : 4d3f78: 31 d2 xor %edx,%edx 0.00 : 4d3f7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * same page and the inserter will release the lock without ever : * calling LWLockUpdateVar. But if it has to sleep, it will : * advertise the insertion point with LWLockUpdateVar before : * sleeping. : */ : if (LWLockWaitForVar(&WALInsertLocks[i].l.lock, 0.00 : 4d3f80: 48 89 df mov %rbx,%rdi 0.00 : 4d3f83: 48 03 3d 36 52 6a 00 add 0x6a5236(%rip),%rdi # b791c0 0.00 : 4d3f8a: 4c 89 f1 mov %r14,%rcx 0.00 : 4d3f8d: 48 8d 77 20 lea 0x20(%rdi),%rsi 0.00 : 4d3f91: e8 6a b8 1b 00 callq 68f800 0.00 : 4d3f96: 84 c0 test %al,%al 0.00 : 4d3f98: 75 16 jne 4d3fb0 : : /* : * This insertion is still in progress. Have to wait, unless the : * inserter has proceeded past 'upto'. : */ : } while (insertingat < upto); 0.00 : 4d3f9a: 48 8b 45 d8 mov -0x28(%rbp),%rax 0.00 : 4d3f9e: 49 39 c4 cmp %rax,%r12 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1772 33.33 : 4d3fa1: 48 89 c2 mov %rax,%rdx 0.00 : 4d3fa4: 77 da ja 4d3f80 : : if (insertingat != InvalidXLogRecPtr && insertingat < finishedUpto) 0.00 : 4d3fa6: 48 85 c0 test %rax,%rax 0.00 : 4d3fa9: 74 05 je 4d3fb0 0.00 : 4d3fab: 4c 39 e8 cmp %r13,%rax 0.00 : 4d3fae: 72 03 jb 4d3fb3 0.00 : 4d3fb0: 4c 89 e8 mov %r13,%rax 0.00 : 4d3fb3: 48 83 eb 80 sub $0xffffffffffffff80,%rbx : * the WAL insertions have been finished. Initialize it to the head of : * reserved WAL, and as we iterate through the insertion locks, back it : * out for any insertion that's still in progress. : */ : finishedUpto = reservedUpto; : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) 0.00 : 4d3fb7: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 4d3fbe: 74 08 je 4d3fc8 0.00 : 4d3fc0: 49 89 c5 mov %rax,%r13 0.00 : 4d3fc3: eb ab jmp 4d3f70 0.00 : 4d3fc5: 0f 1f 00 nopl (%rax) : : if (insertingat != InvalidXLogRecPtr && insertingat < finishedUpto) : finishedUpto = insertingat; : } : return finishedUpto; : } 0.00 : 4d3fc8: 48 83 c4 10 add $0x10,%rsp 0.00 : 4d3fcc: 5b pop %rbx 0.00 : 4d3fcd: 41 5c pop %r12 0.00 : 4d3fcf: 41 5d pop %r13 0.00 : 4d3fd1: 41 5e pop %r14 0.00 : 4d3fd3: c9 leaveq 0.00 : 4d3fd4: c3 retq : : if (MyProc == NULL) : elog(PANIC, "cannot wait without a PGPROC structure"); : : /* Read the current insert position */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d3fd5: ba ae 06 00 00 mov $0x6ae,%edx 0.00 : 4d3fda: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d3fdf: 48 89 df mov %rbx,%rdi 0.00 : 4d3fe2: e8 59 c0 1b 00 callq 690040 0.00 : 4d3fe7: e9 5b ff ff ff jmpq 4d3f47 : * that all WAL that has been reserved needs to be finished. In this : * corner-case, the return value can be smaller than 'upto' argument. : */ : if (upto > reservedUpto) : { : elog(LOG, "request to flush past end of generated WAL; request %X/%X, currpos %X/%X", 0.00 : 4d3fec: ba 20 d6 7b 00 mov $0x7bd620,%edx 0.00 : 4d3ff1: be bf 06 00 00 mov $0x6bf,%esi 0.00 : 4d3ff6: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d3ffb: e8 20 74 2a 00 callq 77b420 0.00 : 4d4000: 4c 89 e2 mov %r12,%rdx 0.00 : 4d4003: 49 89 d8 mov %rbx,%r8 0.00 : 4d4006: 44 89 e1 mov %r12d,%ecx 0.00 : 4d4009: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d400d: 41 89 d9 mov %ebx,%r9d 0.00 : 4d4010: 49 c1 e8 20 shr $0x20,%r8 0.00 : 4d4014: be a8 b6 7b 00 mov $0x7bb6a8,%esi 0.00 : 4d4019: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 4d401e: 31 c0 xor %eax,%eax 0.00 : 4d4020: e8 0b 72 2a 00 callq 77b230 0.00 : 4d4025: 49 89 dc mov %rbx,%r12 0.00 : 4d4028: e9 32 ff ff ff jmpq 4d3f5f : XLogRecPtr finishedUpto; : XLogCtlInsert *Insert = &XLogCtl->Insert; : int i; : : if (MyProc == NULL) : elog(PANIC, "cannot wait without a PGPROC structure"); 0.00 : 4d402d: ba 20 d6 7b 00 mov $0x7bd620,%edx 0.00 : 4d4032: be ab 06 00 00 mov $0x6ab,%esi 0.00 : 4d4037: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d403c: e8 df 73 2a 00 callq 77b420 0.00 : 4d4041: be 80 b6 7b 00 mov $0x7bb680,%esi 0.00 : 4d4046: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d404b: 31 c0 xor %eax,%eax 0.00 : 4d404d: e8 de 71 2a 00 callq 77b230 0.00 : 4d4052: e8 79 54 f9 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1865 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1809 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1865 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1813 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4de0 : : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4de0: 55 push %rbp 0.00 : 4d4de1: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4de4: 4c 89 6d e8 mov %r13,-0x18(%rbp) : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) 0.00 : 4d4de8: 49 89 fd mov %rdi,%r13 : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4deb: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4d4def: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 4d4df3: 4c 89 75 f0 mov %r14,-0x10(%rbp) : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1809 20.00 : 4d4df7: 49 c1 ed 0d shr $0xd,%r13 : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4dfb: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 4d4dff: 48 83 ec 30 sub $0x30,%rsp : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) 0.00 : 4d4e03: 4c 3b 2d 2e 45 6a 00 cmp 0x6a452e(%rip),%r13 # b79338 : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4e0a: 48 89 fb mov %rdi,%rbx : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) 0.00 : 4d4e0d: 0f 84 ed 00 00 00 je 4d4f00 : /* : * The XLog buffer cache is organized so that a page is always loaded to a : * particular buffer. That way we can easily calculate the buffer a given : * page must be loaded into, from the XLogRecPtr alone. : */ : idx = XLogRecPtrToBufIdx(ptr); 0.00 : 4d4e13: 48 8b 0d 7e 43 6a 00 mov 0x6a437e(%rip),%rcx # b79198 : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e1a: 31 d2 xor %edx,%edx : * read, we might see a value that appears to be ahead of the page we're : * looking for. Don't PANIC on that, until we've verified the value while : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; 0.00 : 4d4e1c: 49 89 ff mov %rdi,%r15 0.00 : 4d4e1f: 4c 8d a7 00 20 00 00 lea 0x2000(%rdi),%r12 0.00 : 4d4e26: 41 81 e7 ff 1f 00 00 and $0x1fff,%r15d : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e2d: 8b 81 50 01 00 00 mov 0x150(%rcx),%eax : * read, we might see a value that appears to be ahead of the page we're : * looking for. Don't PANIC on that, until we've verified the value while : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; 0.00 : 4d4e33: 4d 29 fc sub %r15,%r12 : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e36: 83 c0 01 add $0x1,%eax 0.00 : 4d4e39: 48 63 f0 movslq %eax,%rsi 0.00 : 4d4e3c: 4c 89 e8 mov %r13,%rax 0.00 : 4d4e3f: 48 f7 f6 div %rsi : if (expectedEndPtr != endptr) 0.00 : 4d4e42: 48 8b 81 48 01 00 00 mov 0x148(%rcx),%rax : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e49: 4c 63 f2 movslq %edx,%r14 : if (expectedEndPtr != endptr) 0.00 : 4d4e4c: 4e 3b 24 f0 cmp (%rax,%r14,8),%r12 0.00 : 4d4e50: 75 46 jne 4d4e98 : { : /* : * Make sure the initialization of the page is visible to us, and : * won't arrive later to overwrite the WAL data we write on the page. : */ : pg_memory_barrier(); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1865 20.00 : 4d4e52: f0 83 04 24 00 lock addl $0x0,(%rsp) 40.00 : 4d4e57: 48 8b 15 3a 43 6a 00 mov 0x6a433a(%rip),%rdx # b79198 : /* : * Found the buffer holding this page. Return a pointer to the right : * offset within the page. : */ : cachedPage = ptr / XLOG_BLCKSZ; : cachedPos = XLogCtl->pages + idx * (Size) XLOG_BLCKSZ; 0.00 : 4d4e5e: 4c 89 f0 mov %r14,%rax : : /* : * Found the buffer holding this page. Return a pointer to the right : * offset within the page. : */ : cachedPage = ptr / XLOG_BLCKSZ; 0.00 : 4d4e61: 4c 89 2d d0 44 6a 00 mov %r13,0x6a44d0(%rip) # b79338 : cachedPos = XLogCtl->pages + idx * (Size) XLOG_BLCKSZ; 0.00 : 4d4e68: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4d4e6c: 48 03 82 40 01 00 00 add 0x140(%rdx),%rax 0.00 : 4d4e73: 48 89 05 b6 44 6a 00 mov %rax,0x6a44b6(%rip) # b79330 : : Assert(((XLogPageHeader) cachedPos)->xlp_magic == XLOG_PAGE_MAGIC); : Assert(((XLogPageHeader) cachedPos)->xlp_pageaddr == ptr - (ptr % XLOG_BLCKSZ)); : : return cachedPos + ptr % XLOG_BLCKSZ; 0.00 : 4d4e7a: 4c 01 f8 add %r15,%rax : } 0.00 : 4d4e7d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4d4e81: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4d4e85: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4d4e89: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4d4e8d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4d4e91: c9 leaveq 0.00 : 4d4e92: c3 retq 0.00 : 4d4e93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * Let others know that we're finished inserting the record up to the : * page boundary. : */ : WALInsertLockUpdateInsertingAt(expectedEndPtr - XLOG_BLCKSZ); 0.00 : 4d4e98: 49 8d bc 24 00 e0 ff lea -0x2000(%r12),%rdi 0.00 : 4d4e9f: ff 0.00 : 4d4ea0: e8 eb fe ff ff callq 4d4d90 : : AdvanceXLInsertBuffer(ptr, false); 0.00 : 4d4ea5: 31 f6 xor %esi,%esi 0.00 : 4d4ea7: 48 89 df mov %rbx,%rdi 0.00 : 4d4eaa: e8 c1 f7 ff ff callq 4d4670 : endptr = XLogCtl->xlblocks[idx]; : : if (expectedEndPtr != endptr) 0.00 : 4d4eaf: 48 8b 15 e2 42 6a 00 mov 0x6a42e2(%rip),%rdx # b79198 0.00 : 4d4eb6: 48 8b 82 48 01 00 00 mov 0x148(%rdx),%rax 0.00 : 4d4ebd: 4e 3b 24 f0 cmp (%rax,%r14,8),%r12 0.00 : 4d4ec1: 74 9b je 4d4e5e : elog(PANIC, "could not find WAL buffer for %X/%X", 0.00 : 4d4ec3: ba 74 d6 7b 00 mov $0x7bd674,%edx 0.00 : 4d4ec8: be 41 07 00 00 mov $0x741,%esi 0.00 : 4d4ecd: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d4ed2: e8 49 65 2a 00 callq 77b420 0.00 : 4d4ed7: 48 89 da mov %rbx,%rdx 0.00 : 4d4eda: 89 d9 mov %ebx,%ecx 0.00 : 4d4edc: be e8 b7 7b 00 mov $0x7bb7e8,%esi 0.00 : 4d4ee1: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d4ee5: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d4eea: 31 c0 xor %eax,%eax 0.00 : 4d4eec: e8 3f 63 2a 00 callq 77b230 0.00 : 4d4ef1: e8 da 45 f9 ff callq 4694d0 0.00 : 4d4ef6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d4efd: 00 00 00 : */ : if (ptr / XLOG_BLCKSZ == cachedPage) : { : Assert(((XLogPageHeader) cachedPos)->xlp_magic == XLOG_PAGE_MAGIC); : Assert(((XLogPageHeader) cachedPos)->xlp_pageaddr == ptr - (ptr % XLOG_BLCKSZ)); : return cachedPos + ptr % XLOG_BLCKSZ; 0.00 : 4d4f00: 48 89 f8 mov %rdi,%rax 0.00 : 4d4f03: 25 ff 1f 00 00 and $0x1fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1813 20.00 : 4d4f08: 48 03 05 21 44 6a 00 add 0x6a4421(%rip),%rax # b79330 : : Assert(((XLogPageHeader) cachedPos)->xlp_magic == XLOG_PAGE_MAGIC); : Assert(((XLogPageHeader) cachedPos)->xlp_pageaddr == ptr - (ptr % XLOG_BLCKSZ)); : : return cachedPos + ptr % XLOG_BLCKSZ; : } 0.00 : 4d4f0f: e9 69 ff ff ff jmpq 4d4e7d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexonlyscan.c:74 33.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexonlyscan.c:117 33.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexonlyscan.c:156 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bfb00 : : * Retrieve a tuple from the IndexOnlyScan node's index. : * ---------------------------------------------------------------- : */ : static TupleTableSlot * : IndexOnlyNext(IndexOnlyScanState *node) : { 0.00 : 5bfb00: 55 push %rbp 0.00 : 5bfb01: 48 89 e5 mov %rsp,%rbp 0.00 : 5bfb04: 41 57 push %r15 0.00 : 5bfb06: 41 56 push %r14 0.00 : 5bfb08: 41 55 push %r13 0.00 : 5bfb0a: 41 54 push %r12 0.00 : 5bfb0c: 53 push %rbx 0.00 : 5bfb0d: 48 83 ec 68 sub $0x68,%rsp 0.00 : 5bfb11: 48 89 7d 80 mov %rdi,-0x80(%rbp) : ItemPointer tid; : : /* : * extract necessary information from index scan node : */ : estate = node->ss.ps.state; 0.00 : 5bfb15: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 5bfb19: 48 89 45 90 mov %rax,-0x70(%rbp) : direction = estate->es_direction; 0.00 : 5bfb1d: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 5bfb20: 89 55 a4 mov %edx,-0x5c(%rbp) : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexOnlyScan *) node->ss.ps.plan)->indexorderdir)) 0.00 : 5bfb23: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 5bfb27: 83 b8 88 00 00 00 ff cmpl $0xffffffff,0x88(%rax) 0.00 : 5bfb2e: 0f 84 ad 02 00 00 je 5bfde1 : if (ScanDirectionIsForward(direction)) : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) : direction = ForwardScanDirection; : } : scandesc = node->ioss_ScanDesc; 0.00 : 5bfb34: 48 8b 4d 80 mov -0x80(%rbp),%rcx : econtext = node->ss.ps.ps_ExprContext; 0.00 : 5bfb38: 48 8b 45 80 mov -0x80(%rbp),%rax : slot = node->ss.ss_ScanTupleSlot; 0.00 : 5bfb3c: 48 8b 55 80 mov -0x80(%rbp),%rdx : if (ScanDirectionIsForward(direction)) : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) : direction = ForwardScanDirection; : } : scandesc = node->ioss_ScanDesc; 0.00 : 5bfb40: 48 8b 89 d8 00 00 00 mov 0xd8(%rcx),%rcx 0.00 : 5bfb47: 48 89 4d a8 mov %rcx,-0x58(%rbp) : econtext = node->ss.ps.ps_ExprContext; 0.00 : 5bfb4b: 48 8b 40 60 mov 0x60(%rax),%rax : * ProcArrayLock after that time, acting as a read barrier. : * : * It's worth going through this complexity to avoid needing to lock : * the VM buffer, which could cause significant contention. : */ : if (!visibilitymap_test(scandesc->heapRelation, 0.00 : 5bfb4f: 48 8b 4d 80 mov -0x80(%rbp),%rcx : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) : direction = ForwardScanDirection; : } : scandesc = node->ioss_ScanDesc; : econtext = node->ss.ps.ps_ExprContext; 0.00 : 5bfb53: 48 89 45 98 mov %rax,-0x68(%rbp) : slot = node->ss.ss_ScanTupleSlot; 0.00 : 5bfb57: 48 8b 92 88 00 00 00 mov 0x88(%rdx),%rdx : * ProcArrayLock after that time, acting as a read barrier. : * : * It's worth going through this complexity to avoid needing to lock : * the VM buffer, which could cause significant contention. : */ : if (!visibilitymap_test(scandesc->heapRelation, 0.00 : 5bfb5e: 48 81 c1 e0 00 00 00 add $0xe0,%rcx 0.00 : 5bfb65: 48 89 4d 88 mov %rcx,-0x78(%rbp) : else if (ScanDirectionIsBackward(direction)) : direction = ForwardScanDirection; : } : scandesc = node->ioss_ScanDesc; : econtext = node->ss.ps.ps_ExprContext; : slot = node->ss.ss_ScanTupleSlot; 0.00 : 5bfb69: 48 89 55 b0 mov %rdx,-0x50(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexonlyscan.c:74 33.33 : 5bfb6d: 0f 1f 00 nopl (%rax) : : /* : * OK, now that we have what we need, fetch the next tuple. : */ : while ((tid = index_getnext_tid(scandesc, direction)) != NULL) 0.00 : 5bfb70: 8b 75 a4 mov -0x5c(%rbp),%esi 0.00 : 5bfb73: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5bfb77: e8 b4 5a ee ff callq 4a5630 0.00 : 5bfb7c: 48 85 c0 test %rax,%rax 0.00 : 5bfb7f: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 5bfb83: 0f 84 41 02 00 00 je 5bfdca : * ProcArrayLock after that time, acting as a read barrier. : * : * It's worth going through this complexity to avoid needing to lock : * the VM buffer, which could cause significant contention. : */ : if (!visibilitymap_test(scandesc->heapRelation, 0.00 : 5bfb89: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 5bfb8d: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 5bfb91: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 5bfb95: 0f b7 30 movzwl (%rax),%esi 0.00 : 5bfb98: 0f b7 40 02 movzwl 0x2(%rax),%eax 0.00 : 5bfb9c: 48 8b 39 mov (%rcx),%rdi 0.00 : 5bfb9f: c1 e6 10 shl $0x10,%esi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexonlyscan.c:117 33.33 : 5bfba2: 09 c6 or %eax,%esi 0.00 : 5bfba4: e8 a7 47 ee ff callq 4a4350 0.00 : 5bfba9: 84 c0 test %al,%al : * need to keep following the HOT chain once a visible entry has : * been found. If we did want to allow that, we'd need to keep : * more state to remember not to call index_getnext_tid next time. : */ : if (scandesc->xs_continue_hot) : elog(ERROR, "non-MVCC snapshots are not supported in index-only scans"); 0.00 : 5bfbab: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 5bfbb2: 00 : * ProcArrayLock after that time, acting as a read barrier. : * : * It's worth going through this complexity to avoid needing to lock : * the VM buffer, which could cause significant contention. : */ : if (!visibilitymap_test(scandesc->heapRelation, 0.00 : 5bfbb3: 75 2c jne 5bfbe1 : &node->ioss_VMBuffer)) : { : /* : * Rats, we have to visit the heap to check visibility. : */ : node->ioss_HeapFetches++; 0.00 : 5bfbb5: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 5bfbb9: 48 83 80 e8 00 00 00 addq $0x1,0xe8(%rax) 0.00 : 5bfbc0: 01 : tuple = index_fetch_heap(scandesc); 0.00 : 5bfbc1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5bfbc5: e8 56 59 ee ff callq 4a5520 : if (tuple == NULL) 0.00 : 5bfbca: 48 85 c0 test %rax,%rax : { : /* : * Rats, we have to visit the heap to check visibility. : */ : node->ioss_HeapFetches++; : tuple = index_fetch_heap(scandesc); 0.00 : 5bfbcd: 48 89 45 c0 mov %rax,-0x40(%rbp) : if (tuple == NULL) 0.00 : 5bfbd1: 74 9d je 5bfb70 : * Only MVCC snapshots are supported here, so there should be no : * need to keep following the HOT chain once a visible entry has : * been found. If we did want to allow that, we'd need to keep : * more state to remember not to call index_getnext_tid next time. : */ : if (scandesc->xs_continue_hot) 0.00 : 5bfbd3: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5bfbd7: 80 7a 6d 00 cmpb $0x0,0x6d(%rdx) 0.00 : 5bfbdb: 0f 85 26 02 00 00 jne 5bfe07 : } : : /* : * Fill the scan tuple slot with data from the index. : */ : StoreIndexTuple(slot, scandesc->xs_itup, scandesc->xs_itupdesc); 0.00 : 5bfbe1: 48 8b 4d a8 mov -0x58(%rbp),%rcx : */ : static void : StoreIndexTuple(TupleTableSlot *slot, IndexTuple itup, TupleDesc itupdesc) : { : int nindexatts = itupdesc->natts; : Datum *values = slot->tts_values; 0.00 : 5bfbe5: 48 8b 55 b0 mov -0x50(%rbp),%rdx : } : : /* : * Fill the scan tuple slot with data from the index. : */ : StoreIndexTuple(slot, scandesc->xs_itup, scandesc->xs_itupdesc); 0.00 : 5bfbe9: 4c 8b 79 48 mov 0x48(%rcx),%r15 0.00 : 5bfbed: 4c 8b 71 40 mov 0x40(%rcx),%r14 : static void : StoreIndexTuple(TupleTableSlot *slot, IndexTuple itup, TupleDesc itupdesc) : { : int nindexatts = itupdesc->natts; : Datum *values = slot->tts_values; : bool *isnull = slot->tts_isnull; 0.00 : 5bfbf1: 48 8b 4d b0 mov -0x50(%rbp),%rcx : * right now we don't need it elsewhere. : */ : static void : StoreIndexTuple(TupleTableSlot *slot, IndexTuple itup, TupleDesc itupdesc) : { : int nindexatts = itupdesc->natts; 0.00 : 5bfbf5: 41 8b 07 mov (%r15),%eax : * number of columns though, as well as being datatype-compatible which is : * something we can't so easily check. : */ : Assert(slot->tts_tupleDescriptor->natts == nindexatts); : : ExecClearTuple(slot); 0.00 : 5bfbf8: 48 89 cf mov %rcx,%rdi : * right now we don't need it elsewhere. : */ : static void : StoreIndexTuple(TupleTableSlot *slot, IndexTuple itup, TupleDesc itupdesc) : { : int nindexatts = itupdesc->natts; 0.00 : 5bfbfb: 89 45 d4 mov %eax,-0x2c(%rbp) : Datum *values = slot->tts_values; 0.00 : 5bfbfe: 48 8b 52 28 mov 0x28(%rdx),%rdx 0.00 : 5bfc02: 48 89 55 c8 mov %rdx,-0x38(%rbp) : bool *isnull = slot->tts_isnull; 0.00 : 5bfc06: 4c 8b 41 30 mov 0x30(%rcx),%r8 : * number of columns though, as well as being datatype-compatible which is : * something we can't so easily check. : */ : Assert(slot->tts_tupleDescriptor->natts == nindexatts); : : ExecClearTuple(slot); 0.00 : 5bfc0a: 4c 89 85 78 ff ff ff mov %r8,-0x88(%rbp) 0.00 : 5bfc11: e8 fa 44 ff ff callq 5b4110 : for (i = 0; i < nindexatts; i++) 0.00 : 5bfc16: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5bfc19: 4c 8b 85 78 ff ff ff mov -0x88(%rbp),%r8 0.00 : 5bfc20: 85 ff test %edi,%edi 0.00 : 5bfc22: 0f 8e e0 00 00 00 jle 5bfd08 0.00 : 5bfc28: 31 db xor %ebx,%ebx 0.00 : 5bfc2a: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 5bfc30: eb 6c jmp 5bfc9e 0.00 : 5bfc32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : values[i] = index_getattr(itup, i + 1, itupdesc, &isnull[i]); 0.00 : 5bfc38: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 5bfc3c: 48 8b 14 d8 mov (%rax,%rbx,8),%rdx 0.00 : 5bfc40: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 5bfc43: 85 c0 test %eax,%eax 0.00 : 5bfc45: 0f 88 95 00 00 00 js 5bfce0 0.00 : 5bfc4b: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 5bfc4f: 74 7f je 5bfcd0 0.00 : 5bfc51: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 5bfc55: 66 83 fa 08 cmp $0x8,%dx 0.00 : 5bfc59: 0f 84 21 01 00 00 je 5bfd80 0.00 : 5bfc5f: 66 83 fa 04 cmp $0x4,%dx 0.00 : 5bfc63: 0f 84 27 01 00 00 je 5bfd90 0.00 : 5bfc69: 66 83 fa 02 cmp $0x2,%dx 0.00 : 5bfc6d: 0f 1f 00 nopl (%rax) 0.00 : 5bfc70: 0f 84 2a 01 00 00 je 5bfda0 0.00 : 5bfc76: 48 98 cltq 0.00 : 5bfc78: 45 89 ec mov %r13d,%r12d 0.00 : 5bfc7b: 41 0f b6 44 06 08 movzbl 0x8(%r14,%rax,1),%eax 0.00 : 5bfc81: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5bfc88: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 5bfc8c: 41 83 c5 01 add $0x1,%r13d 0.00 : 5bfc90: 48 89 04 da mov %rax,(%rdx,%rbx,8) 0.00 : 5bfc94: 48 83 c3 01 add $0x1,%rbx : * something we can't so easily check. : */ : Assert(slot->tts_tupleDescriptor->natts == nindexatts); : : ExecClearTuple(slot); : for (i = 0; i < nindexatts; i++) 0.00 : 5bfc98: 44 39 65 d4 cmp %r12d,-0x2c(%rbp) 0.00 : 5bfc9c: 7e 6a jle 5bfd08 : values[i] = index_getattr(itup, i + 1, itupdesc, &isnull[i]); 0.00 : 5bfc9e: 41 c6 04 18 00 movb $0x0,(%r8,%rbx,1) 0.00 : 5bfca3: 66 41 83 7e 06 00 cmpw $0x0,0x6(%r14) : * something we can't so easily check. : */ : Assert(slot->tts_tupleDescriptor->natts == nindexatts); : : ExecClearTuple(slot); : for (i = 0; i < nindexatts; i++) 0.00 : 5bfca9: 89 d9 mov %ebx,%ecx : values[i] = index_getattr(itup, i + 1, itupdesc, &isnull[i]); 0.00 : 5bfcab: 79 8b jns 5bfc38 0.00 : 5bfcad: 89 d8 mov %ebx,%eax 0.00 : 5bfcaf: 83 e1 07 and $0x7,%ecx 0.00 : 5bfcb2: c1 f8 03 sar $0x3,%eax 0.00 : 5bfcb5: 48 98 cltq 0.00 : 5bfcb7: 41 0f be 44 06 08 movsbl 0x8(%r14,%rax,1),%eax 0.00 : 5bfcbd: d3 f8 sar %cl,%eax 0.00 : 5bfcbf: a8 01 test $0x1,%al 0.00 : 5bfcc1: 75 1d jne 5bfce0 0.00 : 5bfcc3: 41 c6 04 18 01 movb $0x1,(%r8,%rbx,1) 0.00 : 5bfcc8: 45 89 ec mov %r13d,%r12d 0.00 : 5bfccb: 31 c0 xor %eax,%eax 0.00 : 5bfccd: eb b9 jmp 5bfc88 0.00 : 5bfccf: 90 nop 0.00 : 5bfcd0: 48 98 cltq 0.00 : 5bfcd2: 45 89 ec mov %r13d,%r12d 0.00 : 5bfcd5: 49 8d 44 06 08 lea 0x8(%r14,%rax,1),%rax 0.00 : 5bfcda: eb ac jmp 5bfc88 0.00 : 5bfcdc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5bfce0: 4c 89 85 78 ff ff ff mov %r8,-0x88(%rbp) 0.00 : 5bfce7: 4c 89 fa mov %r15,%rdx 0.00 : 5bfcea: 44 89 ee mov %r13d,%esi 0.00 : 5bfced: 4c 89 f7 mov %r14,%rdi 0.00 : 5bfcf0: 45 89 ec mov %r13d,%r12d 0.00 : 5bfcf3: e8 68 0e eb ff callq 470b60 0.00 : 5bfcf8: 4c 8b 85 78 ff ff ff mov -0x88(%rbp),%r8 0.00 : 5bfcff: e9 84 ff ff ff jmpq 5bfc88 0.00 : 5bfd04: 0f 1f 40 00 nopl 0x0(%rax) : ExecStoreVirtualTuple(slot); 0.00 : 5bfd08: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 5bfd0c: e8 0f 3d ff ff callq 5b3a20 : /* : * If the index was lossy, we have to recheck the index quals. : * (Currently, this can never happen, but we should support the case : * for possible future use, eg with GiST indexes.) : */ : if (scandesc->xs_recheck) 0.00 : 5bfd11: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 5bfd15: 80 79 6c 00 cmpb $0x0,0x6c(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexonlyscan.c:156 33.33 : 5bfd19: 0f 84 91 00 00 00 je 5bfdb0 : { : econtext->ecxt_scantuple = slot; 0.00 : 5bfd1f: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5bfd23: 48 8b 55 b0 mov -0x50(%rbp),%rdx : ResetExprContext(econtext); 0.00 : 5bfd27: 48 8b 78 28 mov 0x28(%rax),%rdi : * (Currently, this can never happen, but we should support the case : * for possible future use, eg with GiST indexes.) : */ : if (scandesc->xs_recheck) : { : econtext->ecxt_scantuple = slot; 0.00 : 5bfd2b: 48 89 50 08 mov %rdx,0x8(%rax) : ResetExprContext(econtext); 0.00 : 5bfd2f: e8 7c 8c 1d 00 callq 7989b0 : if (!ExecQual(node->indexqual, econtext, false)) 0.00 : 5bfd34: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 5bfd38: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 5bfd3c: 31 d2 xor %edx,%edx 0.00 : 5bfd3e: 48 8b b9 90 00 00 00 mov 0x90(%rcx),%rdi 0.00 : 5bfd45: e8 c6 d1 fe ff callq 5acf10 0.00 : 5bfd4a: 84 c0 test %al,%al 0.00 : 5bfd4c: 75 62 jne 5bfdb0 : { : /* Fails recheck, so drop it and loop back for another */ : InstrCountFiltered2(node, 1); 0.00 : 5bfd4e: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 5bfd52: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 5bfd56: 48 85 c0 test %rax,%rax 0.00 : 5bfd59: 0f 84 11 fe ff ff je 5bfb70 0.00 : 5bfd5f: f2 0f 10 05 f1 f3 1e movsd 0x1ef3f1(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5bfd66: 00 0.00 : 5bfd67: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5bfd6e: 00 0.00 : 5bfd6f: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5bfd76: 00 0.00 : 5bfd77: e9 f4 fd ff ff jmpq 5bfb70 0.00 : 5bfd7c: 0f 1f 40 00 nopl 0x0(%rax) : */ : Assert(slot->tts_tupleDescriptor->natts == nindexatts); : : ExecClearTuple(slot); : for (i = 0; i < nindexatts; i++) : values[i] = index_getattr(itup, i + 1, itupdesc, &isnull[i]); 0.00 : 5bfd80: 48 98 cltq 0.00 : 5bfd82: 45 89 ec mov %r13d,%r12d 0.00 : 5bfd85: 49 8b 44 06 08 mov 0x8(%r14,%rax,1),%rax 0.00 : 5bfd8a: e9 f9 fe ff ff jmpq 5bfc88 0.00 : 5bfd8f: 90 nop 0.00 : 5bfd90: 48 98 cltq 0.00 : 5bfd92: 45 89 ec mov %r13d,%r12d 0.00 : 5bfd95: 41 8b 44 06 08 mov 0x8(%r14,%rax,1),%eax 0.00 : 5bfd9a: e9 e9 fe ff ff jmpq 5bfc88 0.00 : 5bfd9f: 90 nop 0.00 : 5bfda0: 48 98 cltq 0.00 : 5bfda2: 45 89 ec mov %r13d,%r12d 0.00 : 5bfda5: 41 0f b7 44 06 08 movzwl 0x8(%r14,%rax,1),%eax 0.00 : 5bfdab: e9 d8 fe ff ff jmpq 5bfc88 : * level when the heap is not accessed, since tuple-level predicate : * locks need the tuple's xmin value. If we had to visit the tuple : * anyway, then we already have the tuple-level lock and can skip the : * page lock. : */ : if (tuple == NULL) 0.00 : 5bfdb0: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 5bfdb5: 74 7a je 5bfe31 : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); : } 0.00 : 5bfdb7: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 5bfdbb: 48 83 c4 68 add $0x68,%rsp 0.00 : 5bfdbf: 5b pop %rbx 0.00 : 5bfdc0: 41 5c pop %r12 0.00 : 5bfdc2: 41 5d pop %r13 0.00 : 5bfdc4: 41 5e pop %r14 0.00 : 5bfdc6: 41 5f pop %r15 0.00 : 5bfdc8: c9 leaveq 0.00 : 5bfdc9: c3 retq : : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); 0.00 : 5bfdca: 48 8b 7d b0 mov -0x50(%rbp),%rdi : } 0.00 : 5bfdce: 48 83 c4 68 add $0x68,%rsp 0.00 : 5bfdd2: 5b pop %rbx 0.00 : 5bfdd3: 41 5c pop %r12 0.00 : 5bfdd5: 41 5d pop %r13 0.00 : 5bfdd7: 41 5e pop %r14 0.00 : 5bfdd9: 41 5f pop %r15 0.00 : 5bfddb: c9 leaveq : : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); 0.00 : 5bfddc: e9 2f 43 ff ff jmpq 5b4110 : estate = node->ss.ps.state; : direction = estate->es_direction; : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexOnlyScan *) node->ss.ps.plan)->indexorderdir)) : { : if (ScanDirectionIsForward(direction)) 0.00 : 5bfde1: 83 ea 01 sub $0x1,%edx 0.00 : 5bfde4: 74 15 je 5bfdfb : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) 0.00 : 5bfde6: 83 7d a4 ff cmpl $0xffffffff,-0x5c(%rbp) 0.00 : 5bfdea: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5bfdef: 0f 45 45 a4 cmovne -0x5c(%rbp),%eax 0.00 : 5bfdf3: 89 45 a4 mov %eax,-0x5c(%rbp) 0.00 : 5bfdf6: e9 39 fd ff ff jmpq 5bfb34 : estate = node->ss.ps.state; : direction = estate->es_direction; : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexOnlyScan *) node->ss.ps.plan)->indexorderdir)) : { : if (ScanDirectionIsForward(direction)) 0.00 : 5bfdfb: c7 45 a4 ff ff ff ff movl $0xffffffff,-0x5c(%rbp) 0.00 : 5bfe02: e9 2d fd ff ff jmpq 5bfb34 : * need to keep following the HOT chain once a visible entry has : * been found. If we did want to allow that, we'd need to keep : * more state to remember not to call index_getnext_tid next time. : */ : if (scandesc->xs_continue_hot) : elog(ERROR, "non-MVCC snapshots are not supported in index-only scans"); 0.00 : 5bfe07: ba f0 bc 88 00 mov $0x88bcf0,%edx 0.00 : 5bfe0c: be 88 00 00 00 mov $0x88,%esi 0.00 : 5bfe11: bf 57 bc 88 00 mov $0x88bc57,%edi 0.00 : 5bfe16: e8 05 b6 1b 00 callq 77b420 0.00 : 5bfe1b: be b0 bc 88 00 mov $0x88bcb0,%esi 0.00 : 5bfe20: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5bfe25: 31 c0 xor %eax,%eax 0.00 : 5bfe27: e8 04 b4 1b 00 callq 77b230 0.00 : 5bfe2c: e8 9f 96 ea ff callq 4694d0 : * locks need the tuple's xmin value. If we had to visit the tuple : * anyway, then we already have the tuple-level lock and can skip the : * page lock. : */ : if (tuple == NULL) : PredicateLockPage(scandesc->heapRelation, 0.00 : 5bfe31: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 5bfe35: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 5bfe39: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 5bfe3d: 0f b7 30 movzwl (%rax),%esi 0.00 : 5bfe40: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 5bfe44: 0f b7 40 02 movzwl 0x2(%rax),%eax 0.00 : 5bfe48: 48 8b 39 mov (%rcx),%rdi 0.00 : 5bfe4b: c1 e6 10 shl $0x10,%esi 0.00 : 5bfe4e: 09 c6 or %eax,%esi 0.00 : 5bfe50: e8 0b 34 0d 00 callq 693260 0.00 : 5bfe55: e9 5d ff ff ff jmpq 5bfdb7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:1605 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:1605 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:1622 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005df260 : : : bool : expression_tree_walker(Node *node, : bool (*walker) (), : void *context) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:1605 33.33 : 5df260: 55 push %rbp 0.00 : 5df261: 48 89 e5 mov %rsp,%rbp 0.00 : 5df264: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5df268: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 5df26c: 48 89 fb mov %rdi,%rbx 0.00 : 5df26f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 33.33 : 5df273: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5df277: 49 89 f7 mov %rsi,%r15 0.00 : 5df27a: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 5df27e: 48 83 ec 30 sub $0x30,%rsp : * : * We assume that the walker is not interested in List nodes per se, so : * when we expect a List we just recurse directly to self without : * bothering to call the walker. : */ : if (node == NULL) 0.00 : 5df282: 48 85 ff test %rdi,%rdi : : bool : expression_tree_walker(Node *node, : bool (*walker) (), : void *context) : { 0.00 : 5df285: 49 89 d5 mov %rdx,%r13 : * : * We assume that the walker is not interested in List nodes per se, so : * when we expect a List we just recurse directly to self without : * bothering to call the walker. : */ : if (node == NULL) 0.00 : 5df288: 0f 84 02 01 00 00 je 5df390 : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); 0.00 : 5df28e: e8 4d c7 0b 00 callq 69b9e0 : : switch (nodeTag(node)) 0.00 : 5df293: 8b 03 mov (%rbx),%eax 0.00 : 5df295: 3d 4a 01 00 00 cmp $0x14a,%eax 0.00 : 5df29a: 0f 84 60 01 00 00 je 5df400 0.00 : 5df2a0: 76 76 jbe 5df318 0.00 : 5df2a2: 3d 57 01 00 00 cmp $0x157,%eax 0.00 : 5df2a7: 0f 84 c3 01 00 00 je 5df470 0.00 : 5df2ad: 0f 1f 00 nopl (%rax) 0.00 : 5df2b0: 0f 87 fa 00 00 00 ja 5df3b0 0.00 : 5df2b6: 3d 50 01 00 00 cmp $0x150,%eax 0.00 : 5df2bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df2c0: 0f 84 3a 01 00 00 je 5df400 0.00 : 5df2c6: 66 90 xchg %ax,%ax 0.00 : 5df2c8: 0f 87 aa 00 00 00 ja 5df378 0.00 : 5df2ce: 3d 4d 01 00 00 cmp $0x14d,%eax 0.00 : 5df2d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df2d8: 0f 84 f2 02 00 00 je 5df5d0 0.00 : 5df2de: 66 90 xchg %ax,%ax 0.00 : 5df2e0: 0f 87 4a 05 00 00 ja 5df830 0.00 : 5df2e6: 3d 4b 01 00 00 cmp $0x14b,%eax 0.00 : 5df2eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df2f0: 0f 84 10 03 00 00 je 5df606 0.00 : 5df2f6: 3d 4c 01 00 00 cmp $0x14c,%eax 0.00 : 5df2fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df300: 0f 85 ea 01 00 00 jne 5df4f0 : if (walker(rcexpr->rargs, context)) : return true; : } : break; : case T_CoalesceExpr: : return walker(((CoalesceExpr *) node)->args, context); 0.00 : 5df306: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df30a: 4c 89 ee mov %r13,%rsi 0.00 : 5df30d: 31 c0 xor %eax,%eax 0.00 : 5df30f: e9 f5 00 00 00 jmpq 5df409 0.00 : 5df314: 0f 1f 40 00 nopl 0x0(%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df318: 3d 3c 01 00 00 cmp $0x13c,%eax 0.00 : 5df31d: 0f 84 7d 01 00 00 je 5df4a0 0.00 : 5df323: 0f 87 ff 00 00 00 ja 5df428 0.00 : 5df329: 3d 35 01 00 00 cmp $0x135,%eax 0.00 : 5df32e: 66 90 xchg %ax,%ax 0.00 : 5df330: 74 2c je 5df35e 0.00 : 5df332: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5df338: 0f 86 82 01 00 00 jbe 5df4c0 0.00 : 5df33e: 3d 39 01 00 00 cmp $0x139,%eax 0.00 : 5df343: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df348: 0f 87 a2 03 00 00 ja 5df6f0 0.00 : 5df34e: 3d 37 01 00 00 cmp $0x137,%eax 0.00 : 5df353: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df358: 0f 82 ec 01 00 00 jb 5df54a : case T_DistinctExpr: /* struct-equivalent to OpExpr */ : case T_NullIfExpr: /* struct-equivalent to OpExpr */ : { : OpExpr *expr = (OpExpr *) node; : : if (expression_tree_walker((Node *) expr->args, 0.00 : 5df35e: 48 8b 7b 20 mov 0x20(%rbx),%rdi : return walker(((PlaceHolderVar *) node)->phexpr, context); : case T_AppendRelInfo: : { : AppendRelInfo *appinfo = (AppendRelInfo *) node; : : if (expression_tree_walker((Node *) appinfo->translated_vars, 0.00 : 5df362: 4c 89 ea mov %r13,%rdx 0.00 : 5df365: 4c 89 fe mov %r15,%rsi 0.00 : 5df368: e8 f3 fe ff ff callq 5df260 0.00 : 5df36d: 84 c0 test %al,%al 0.00 : 5df36f: 0f 95 c0 setne %al 0.00 : 5df372: eb 1e jmp 5df392 0.00 : 5df374: 0f 1f 40 00 nopl 0x0(%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df378: 3d 54 01 00 00 cmp $0x154,%eax 0.00 : 5df37d: 0f 87 8d 03 00 00 ja 5df710 0.00 : 5df383: 3d 52 01 00 00 cmp $0x152,%eax 0.00 : 5df388: 72 76 jb 5df400 0.00 : 5df38a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_PlaceHolderInfo: : return walker(((PlaceHolderInfo *) node)->ph_var, context); : case T_RangeTblFunction: : return walker(((RangeTblFunction *) node)->funcexpr, context); : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5df390: 31 c0 xor %eax,%eax : (int) nodeTag(node)); : break; : } : return false; : } 0.00 : 5df392: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5df396: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5df39a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5df39e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5df3a2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5df3a6: c9 leaveq 0.00 : 5df3a7: c3 retq 0.00 : 5df3a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df3af: 00 : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df3b0: 3d bc 02 00 00 cmp $0x2bc,%eax 0.00 : 5df3b5: 74 d9 je 5df390 0.00 : 5df3b7: 0f 87 63 01 00 00 ja 5df520 0.00 : 5df3bd: 3d 0f 02 00 00 cmp $0x20f,%eax 0.00 : 5df3c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5df3c8: 0f 84 ca 01 00 00 je 5df598 0.00 : 5df3ce: 66 90 xchg %ax,%ax 0.00 : 5df3d0: 0f 87 9a 04 00 00 ja 5df870 0.00 : 5df3d6: 3d 58 01 00 00 cmp $0x158,%eax 0.00 : 5df3db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df3e0: 0f 84 f8 01 00 00 je 5df5de 0.00 : 5df3e6: 3d 0c 02 00 00 cmp $0x20c,%eax 0.00 : 5df3eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df3f0: 0f 85 fa 00 00 00 jne 5df4f0 0.00 : 5df3f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5df3fd: 00 00 00 : walker, context)) : return true; : } : break; : case T_PlaceHolderInfo: : return walker(((PlaceHolderInfo *) node)->ph_var, context); 0.00 : 5df400: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5df404: 4c 89 ee mov %r13,%rsi 0.00 : 5df407: 31 c0 xor %eax,%eax : case T_RangeTblFunction: : return walker(((RangeTblFunction *) node)->funcexpr, context); 0.00 : 5df409: 4d 89 fb mov %r15,%r11 : elog(ERROR, "unrecognized node type: %d", : (int) nodeTag(node)); : break; : } : return false; : } 0.00 : 5df40c: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5df410: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5df414: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5df418: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5df41c: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5df420: c9 leaveq : } : break; : case T_PlaceHolderInfo: : return walker(((PlaceHolderInfo *) node)->ph_var, context); : case T_RangeTblFunction: : return walker(((RangeTblFunction *) node)->funcexpr, context); 0.00 : 5df421: 41 ff e3 jmpq *%r11 0.00 : 5df424: 0f 1f 40 00 nopl 0x0(%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df428: 3d 42 01 00 00 cmp $0x142,%eax 0.00 : 5df42d: 74 d1 je 5df400 0.00 : 5df42f: 0f 86 2b 01 00 00 jbe 5df560 0.00 : 5df435: 3d 45 01 00 00 cmp $0x145,%eax 0.00 : 5df43a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5df440: 74 be je 5df400 0.00 : 5df442: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5df448: 0f 87 72 04 00 00 ja 5df8c0 0.00 : 5df44e: 3d 43 01 00 00 cmp $0x143,%eax 0.00 : 5df453: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df458: 74 a6 je 5df400 0.00 : 5df45a: 3d 44 01 00 00 cmp $0x144,%eax 0.00 : 5df45f: 90 nop 0.00 : 5df460: 0f 85 8a 00 00 00 jne 5df4f0 0.00 : 5df466: 66 90 xchg %ax,%ax 0.00 : 5df468: eb 96 jmp 5df400 0.00 : 5df46a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : case T_JoinExpr: : { : JoinExpr *join = (JoinExpr *) node; : : if (walker(join->larg, context)) 0.00 : 5df470: 31 c0 xor %eax,%eax 0.00 : 5df472: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df476: 4c 89 ee mov %r13,%rsi 0.00 : 5df479: 41 ff d7 callq *%r15 0.00 : 5df47c: 84 c0 test %al,%al 0.00 : 5df47e: 66 90 xchg %ax,%ax 0.00 : 5df480: 0f 84 d4 04 00 00 je 5df95a 0.00 : 5df486: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5df48d: 00 00 00 : case T_PlaceHolderInfo: : return walker(((PlaceHolderInfo *) node)->ph_var, context); : case T_RangeTblFunction: : return walker(((RangeTblFunction *) node)->funcexpr, context); : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5df490: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5df495: e9 f8 fe ff ff jmpq 5df392 0.00 : 5df49a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : case T_SubLink: : { : SubLink *sublink = (SubLink *) node; : : if (walker(sublink->testexpr, context)) 0.00 : 5df4a0: 31 c0 xor %eax,%eax 0.00 : 5df4a2: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df4a6: 4c 89 ee mov %r13,%rsi 0.00 : 5df4a9: 41 ff d7 callq *%r15 0.00 : 5df4ac: 84 c0 test %al,%al 0.00 : 5df4ae: 75 e0 jne 5df490 : : /* : * Also invoke the walker on the sublink's Query node, so it : * can recurse into the sub-query if it wants to. : */ : return walker(sublink->subselect, context); 0.00 : 5df4b0: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5df4b4: 4c 89 ee mov %r13,%rsi 0.00 : 5df4b7: e9 4d ff ff ff jmpq 5df409 0.00 : 5df4bc: 0f 1f 40 00 nopl 0x0(%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df4c0: 3d 32 01 00 00 cmp $0x132,%eax 0.00 : 5df4c5: 0f 84 63 01 00 00 je 5df62e 0.00 : 5df4cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df4d0: 0f 87 5a 02 00 00 ja 5df730 0.00 : 5df4d6: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 5df4db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df4e0: 0f 83 aa fe ff ff jae 5df390 0.00 : 5df4e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5df4ed: 00 00 00 : case T_PlaceHolderInfo: : return walker(((PlaceHolderInfo *) node)->ph_var, context); : case T_RangeTblFunction: : return walker(((RangeTblFunction *) node)->funcexpr, context); : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5df4f0: ba f0 20 89 00 mov $0x8920f0,%edx 0.00 : 5df4f5: be 88 07 00 00 mov $0x788,%esi 0.00 : 5df4fa: bf 43 21 89 00 mov $0x892143,%edi 0.00 : 5df4ff: e8 1c bf 19 00 callq 77b420 0.00 : 5df504: 8b 13 mov (%rbx),%edx 0.00 : 5df506: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5df50b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5df510: 31 c0 xor %eax,%eax 0.00 : 5df512: e8 19 bd 19 00 callq 77b230 0.00 : 5df517: e8 b4 9f e8 ff callq 4694d0 0.00 : 5df51c: 0f 1f 40 00 nopl 0x0(%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df520: 3d 9c 03 00 00 cmp $0x39c,%eax 0.00 : 5df525: 0f 84 ba 01 00 00 je 5df6e5 0.00 : 5df52b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df530: 77 76 ja 5df5a8 0.00 : 5df532: 3d c5 02 00 00 cmp $0x2c5,%eax 0.00 : 5df537: 90 nop 0.00 : 5df538: 0f 84 7f 01 00 00 je 5df6bd 0.00 : 5df53e: 3d 9b 03 00 00 cmp $0x39b,%eax 0.00 : 5df543: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df548: 75 a6 jne 5df4f0 : } : break; : case T_PlaceHolderInfo: : return walker(((PlaceHolderInfo *) node)->ph_var, context); : case T_RangeTblFunction: : return walker(((RangeTblFunction *) node)->funcexpr, context); 0.00 : 5df54a: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5df54e: 4c 89 ee mov %r13,%rsi 0.00 : 5df551: 31 c0 xor %eax,%eax 0.00 : 5df553: e9 b1 fe ff ff jmpq 5df409 0.00 : 5df558: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df55f: 00 : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df560: 3d 3f 01 00 00 cmp $0x13f,%eax 0.00 : 5df565: 0f 84 95 fe ff ff je 5df400 0.00 : 5df56b: 0f 87 5f 02 00 00 ja 5df7d0 0.00 : 5df571: 3d 3d 01 00 00 cmp $0x13d,%eax 0.00 : 5df576: 66 90 xchg %ax,%ax 0.00 : 5df578: 0f 84 22 01 00 00 je 5df6a0 0.00 : 5df57e: 3d 3e 01 00 00 cmp $0x13e,%eax 0.00 : 5df583: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df588: 0f 85 62 ff ff ff jne 5df4f0 0.00 : 5df58e: 66 90 xchg %ax,%ax 0.00 : 5df590: e9 6b fe ff ff jmpq 5df400 0.00 : 5df595: 0f 1f 00 nopl (%rax) : return walker(((PlaceHolderVar *) node)->phexpr, context); : case T_AppendRelInfo: : { : AppendRelInfo *appinfo = (AppendRelInfo *) node; : : if (expression_tree_walker((Node *) appinfo->translated_vars, 0.00 : 5df598: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df59c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5df5a0: e9 bd fd ff ff jmpq 5df362 0.00 : 5df5a5: 0f 1f 00 nopl (%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df5a8: 3d 9e 03 00 00 cmp $0x39e,%eax 0.00 : 5df5ad: 0f 1f 00 nopl (%rax) 0.00 : 5df5b0: 0f 84 37 02 00 00 je 5df7ed 0.00 : 5df5b6: 66 90 xchg %ax,%ax 0.00 : 5df5b8: 0f 82 d2 fd ff ff jb 5df390 0.00 : 5df5be: 3d a9 03 00 00 cmp $0x3a9,%eax 0.00 : 5df5c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df5c8: 0f 85 22 ff ff ff jne 5df4f0 0.00 : 5df5ce: 66 90 xchg %ax,%ax : : /* : * Invoke the walker on the CTE's Query node, so it can : * recurse into the sub-query if it wants to. : */ : return walker(cte->ctequery, context); 0.00 : 5df5d0: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df5d4: 4c 89 ee mov %r13,%rsi 0.00 : 5df5d7: 31 c0 xor %eax,%eax 0.00 : 5df5d9: e9 2b fe ff ff jmpq 5df409 : break; : case T_FromExpr: : { : FromExpr *from = (FromExpr *) node; : : if (walker(from->fromlist, context)) 0.00 : 5df5de: 31 c0 xor %eax,%eax 0.00 : 5df5e0: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5df5e4: 4c 89 ee mov %r13,%rsi 0.00 : 5df5e7: 41 ff d7 callq *%r15 0.00 : 5df5ea: 84 c0 test %al,%al 0.00 : 5df5ec: 0f 85 9e fe ff ff jne 5df490 : return true; : if (walker(from->quals, context)) 0.00 : 5df5f2: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df5f6: 4c 89 ee mov %r13,%rsi 0.00 : 5df5f9: 41 ff d7 callq *%r15 0.00 : 5df5fc: 84 c0 test %al,%al 0.00 : 5df5fe: 0f 95 c0 setne %al 0.00 : 5df601: e9 8c fd ff ff jmpq 5df392 : return walker(((RowExpr *) node)->args, context); : case T_RowCompareExpr: : { : RowCompareExpr *rcexpr = (RowCompareExpr *) node; : : if (walker(rcexpr->largs, context)) 0.00 : 5df606: 31 c0 xor %eax,%eax 0.00 : 5df608: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5df60c: 4c 89 ee mov %r13,%rsi 0.00 : 5df60f: 41 ff d7 callq *%r15 0.00 : 5df612: 84 c0 test %al,%al 0.00 : 5df614: 0f 85 76 fe ff ff jne 5df490 : : if (walker(join->larg, context)) : return true; : if (walker(join->rarg, context)) : return true; : if (walker(join->quals, context)) 0.00 : 5df61a: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5df61e: 4c 89 ee mov %r13,%rsi 0.00 : 5df621: 41 ff d7 callq *%r15 0.00 : 5df624: 84 c0 test %al,%al 0.00 : 5df626: 0f 95 c0 setne %al 0.00 : 5df629: e9 64 fd ff ff jmpq 5df392 : case T_Aggref: : { : Aggref *expr = (Aggref *) node; : : /* recurse directly on List */ : if (expression_tree_walker((Node *) expr->aggdirectargs, 0.00 : 5df62e: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df632: 4c 89 ea mov %r13,%rdx 0.00 : 5df635: 4c 89 fe mov %r15,%rsi 0.00 : 5df638: e8 23 fc ff ff callq 5df260 0.00 : 5df63d: 84 c0 test %al,%al 0.00 : 5df63f: 0f 85 4b fe ff ff jne 5df490 : walker, context)) : return true; : if (expression_tree_walker((Node *) expr->args, 0.00 : 5df645: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5df649: 4c 89 ea mov %r13,%rdx 0.00 : 5df64c: 4c 89 fe mov %r15,%rsi 0.00 : 5df64f: e8 0c fc ff ff callq 5df260 0.00 : 5df654: 84 c0 test %al,%al 0.00 : 5df656: 0f 85 34 fe ff ff jne 5df490 : walker, context)) : return true; : if (expression_tree_walker((Node *) expr->aggorder, 0.00 : 5df65c: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5df660: 4c 89 ea mov %r13,%rdx 0.00 : 5df663: 4c 89 fe mov %r15,%rsi 0.00 : 5df666: e8 f5 fb ff ff callq 5df260 0.00 : 5df66b: 84 c0 test %al,%al 0.00 : 5df66d: 0f 85 1d fe ff ff jne 5df490 : walker, context)) : return true; : if (expression_tree_walker((Node *) expr->aggdistinct, 0.00 : 5df673: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5df677: 4c 89 ea mov %r13,%rdx 0.00 : 5df67a: 4c 89 fe mov %r15,%rsi 0.00 : 5df67d: e8 de fb ff ff callq 5df260 0.00 : 5df682: 84 c0 test %al,%al 0.00 : 5df684: 0f 85 06 fe ff ff jne 5df490 : return true; : if (walker(wc->orderClause, context)) : return true; : if (walker(wc->startOffset, context)) : return true; : if (walker(wc->endOffset, context)) 0.00 : 5df68a: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5df68e: 4c 89 ee mov %r13,%rsi 0.00 : 5df691: 41 ff d7 callq *%r15 0.00 : 5df694: 84 c0 test %al,%al 0.00 : 5df696: 0f 95 c0 setne %al 0.00 : 5df699: e9 f4 fc ff ff jmpq 5df392 0.00 : 5df69e: 66 90 xchg %ax,%ax : case T_SubPlan: : { : SubPlan *subplan = (SubPlan *) node; : : /* recurse into the testexpr, but not into the Plan */ : if (walker(subplan->testexpr, context)) 0.00 : 5df6a0: 31 c0 xor %eax,%eax 0.00 : 5df6a2: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5df6a6: 4c 89 ee mov %r13,%rsi 0.00 : 5df6a9: 41 ff d7 callq *%r15 0.00 : 5df6ac: 84 c0 test %al,%al 0.00 : 5df6ae: 0f 85 dc fd ff ff jne 5df490 : return true; : /* also examine args list */ : if (expression_tree_walker((Node *) subplan->args, 0.00 : 5df6b4: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 5df6b8: e9 a5 fc ff ff jmpq 5df362 : break; : case T_SetOperationStmt: : { : SetOperationStmt *setop = (SetOperationStmt *) node; : : if (walker(setop->larg, context)) 0.00 : 5df6bd: 31 c0 xor %eax,%eax 0.00 : 5df6bf: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df6c3: 4c 89 ee mov %r13,%rsi 0.00 : 5df6c6: 41 ff d7 callq *%r15 0.00 : 5df6c9: 84 c0 test %al,%al 0.00 : 5df6cb: 0f 85 bf fd ff ff jne 5df490 : return true; : if (walker(setop->rarg, context)) 0.00 : 5df6d1: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df6d5: 4c 89 ee mov %r13,%rsi 0.00 : 5df6d8: 41 ff d7 callq *%r15 0.00 : 5df6db: 84 c0 test %al,%al 0.00 : 5df6dd: 0f 95 c0 setne %al 0.00 : 5df6e0: e9 ad fc ff ff jmpq 5df392 : case T_RangeTblRef: : case T_SortGroupClause: : /* primitive node types with no expression subnodes */ : break; : case T_WithCheckOption: : return walker(((WithCheckOption *) node)->qual, context); 0.00 : 5df6e5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df6e9: e9 60 fe ff ff jmpq 5df54e 0.00 : 5df6ee: 66 90 xchg %ax,%ax : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df6f0: 3d 3a 01 00 00 cmp $0x13a,%eax 0.00 : 5df6f5: 0f 84 9d fe ff ff je 5df598 0.00 : 5df6fb: 3d 3b 01 00 00 cmp $0x13b,%eax 0.00 : 5df700: 0f 85 ea fd ff ff jne 5df4f0 : break; : case T_BoolExpr: : { : BoolExpr *expr = (BoolExpr *) node; : : if (expression_tree_walker((Node *) expr->args, 0.00 : 5df706: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5df70a: e9 53 fc ff ff jmpq 5df362 0.00 : 5df70f: 90 nop : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:1622 33.33 : 5df710: 3d 55 01 00 00 cmp $0x155,%eax 0.00 : 5df715: 0f 84 e5 fc ff ff je 5df400 0.00 : 5df71b: 3d 56 01 00 00 cmp $0x156,%eax 0.00 : 5df720: 0f 85 ca fd ff ff jne 5df4f0 0.00 : 5df726: 66 90 xchg %ax,%ax 0.00 : 5df728: e9 63 fc ff ff jmpq 5df390 0.00 : 5df72d: 0f 1f 00 nopl (%rax) 0.00 : 5df730: 3d 33 01 00 00 cmp $0x133,%eax 0.00 : 5df735: 0f 1f 00 nopl (%rax) 0.00 : 5df738: 74 66 je 5df7a0 0.00 : 5df73a: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 5df73f: 90 nop 0.00 : 5df740: 0f 85 aa fd ff ff jne 5df4f0 : case T_ArrayRef: : { : ArrayRef *aref = (ArrayRef *) node; : : /* recurse directly for upper/lower array index lists */ : if (expression_tree_walker((Node *) aref->refupperindexpr, 0.00 : 5df746: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df74a: 4c 89 ea mov %r13,%rdx 0.00 : 5df74d: 4c 89 fe mov %r15,%rsi 0.00 : 5df750: e8 0b fb ff ff callq 5df260 0.00 : 5df755: 84 c0 test %al,%al 0.00 : 5df757: 0f 85 33 fd ff ff jne 5df490 : walker, context)) : return true; : if (expression_tree_walker((Node *) aref->reflowerindexpr, 0.00 : 5df75d: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5df761: 4c 89 ea mov %r13,%rdx 0.00 : 5df764: 4c 89 fe mov %r15,%rsi 0.00 : 5df767: e8 f4 fa ff ff callq 5df260 0.00 : 5df76c: 84 c0 test %al,%al 0.00 : 5df76e: 0f 85 1c fd ff ff jne 5df490 : walker, context)) : return true; : /* walker must see the refexpr and refassgnexpr, however */ : if (walker(aref->refexpr, context)) 0.00 : 5df774: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5df778: 4c 89 ee mov %r13,%rsi 0.00 : 5df77b: 41 ff d7 callq *%r15 0.00 : 5df77e: 84 c0 test %al,%al 0.00 : 5df780: 0f 85 0a fd ff ff jne 5df490 : return true; : if (walker(aref->refassgnexpr, context)) 0.00 : 5df786: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5df78a: 4c 89 ee mov %r13,%rsi 0.00 : 5df78d: 41 ff d7 callq *%r15 0.00 : 5df790: 84 c0 test %al,%al 0.00 : 5df792: 0f 95 c0 setne %al 0.00 : 5df795: e9 f8 fb ff ff jmpq 5df392 0.00 : 5df79a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_WindowFunc: : { : WindowFunc *expr = (WindowFunc *) node; : : /* recurse directly on List */ : if (expression_tree_walker((Node *) expr->args, 0.00 : 5df7a0: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df7a4: 4c 89 ea mov %r13,%rdx 0.00 : 5df7a7: 4c 89 fe mov %r15,%rsi 0.00 : 5df7aa: e8 b1 fa ff ff callq 5df260 0.00 : 5df7af: 84 c0 test %al,%al 0.00 : 5df7b1: 0f 85 d9 fc ff ff jne 5df490 : XmlExpr *xexpr = (XmlExpr *) node; : : if (walker(xexpr->named_args, context)) : return true; : /* we assume walker doesn't care about arg_names */ : if (walker(xexpr->args, context)) 0.00 : 5df7b7: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5df7bb: 4c 89 ee mov %r13,%rsi 0.00 : 5df7be: 41 ff d7 callq *%r15 0.00 : 5df7c1: 84 c0 test %al,%al 0.00 : 5df7c3: 0f 95 c0 setne %al 0.00 : 5df7c6: e9 c7 fb ff ff jmpq 5df392 0.00 : 5df7cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df7d0: 3d 40 01 00 00 cmp $0x140,%eax 0.00 : 5df7d5: 0f 84 03 fe ff ff je 5df5de 0.00 : 5df7db: 3d 41 01 00 00 cmp $0x141,%eax 0.00 : 5df7e0: 0f 85 0a fd ff ff jne 5df4f0 0.00 : 5df7e6: 66 90 xchg %ax,%ax 0.00 : 5df7e8: e9 13 fc ff ff jmpq 5df400 : break; : case T_WindowClause: : { : WindowClause *wc = (WindowClause *) node; : : if (walker(wc->partitionClause, context)) 0.00 : 5df7ed: 31 c0 xor %eax,%eax 0.00 : 5df7ef: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df7f3: 4c 89 ee mov %r13,%rsi 0.00 : 5df7f6: 41 ff d7 callq *%r15 0.00 : 5df7f9: 84 c0 test %al,%al 0.00 : 5df7fb: 0f 85 8f fc ff ff jne 5df490 : return true; : if (walker(wc->orderClause, context)) 0.00 : 5df801: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5df805: 4c 89 ee mov %r13,%rsi 0.00 : 5df808: 41 ff d7 callq *%r15 0.00 : 5df80b: 84 c0 test %al,%al 0.00 : 5df80d: 0f 1f 00 nopl (%rax) 0.00 : 5df810: 0f 85 7a fc ff ff jne 5df490 : return true; : if (walker(wc->startOffset, context)) 0.00 : 5df816: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5df81a: 4c 89 ee mov %r13,%rsi 0.00 : 5df81d: 41 ff d7 callq *%r15 0.00 : 5df820: 84 c0 test %al,%al 0.00 : 5df822: 0f 85 68 fc ff ff jne 5df490 0.00 : 5df828: e9 5d fe ff ff jmpq 5df68a 0.00 : 5df82d: 0f 1f 00 nopl (%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df830: 3d 4e 01 00 00 cmp $0x14e,%eax 0.00 : 5df835: 0f 1f 00 nopl (%rax) 0.00 : 5df838: 74 13 je 5df84d 0.00 : 5df83a: 3d 4f 01 00 00 cmp $0x14f,%eax 0.00 : 5df83f: 90 nop 0.00 : 5df840: 0f 85 aa fc ff ff jne 5df4f0 0.00 : 5df846: 66 90 xchg %ax,%ax 0.00 : 5df848: e9 b3 fb ff ff jmpq 5df400 : return walker(((MinMaxExpr *) node)->args, context); : case T_XmlExpr: : { : XmlExpr *xexpr = (XmlExpr *) node; : : if (walker(xexpr->named_args, context)) 0.00 : 5df84d: 31 c0 xor %eax,%eax 0.00 : 5df84f: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df853: 4c 89 ee mov %r13,%rsi 0.00 : 5df856: 41 ff d7 callq *%r15 0.00 : 5df859: 84 c0 test %al,%al 0.00 : 5df85b: 0f 85 2f fc ff ff jne 5df490 0.00 : 5df861: e9 51 ff ff ff jmpq 5df7b7 0.00 : 5df866: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5df86d: 00 00 00 : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df870: 3d 10 02 00 00 cmp $0x210,%eax 0.00 : 5df875: 0f 1f 00 nopl (%rax) 0.00 : 5df878: 0f 84 82 fb ff ff je 5df400 0.00 : 5df87e: 3d 90 02 00 00 cmp $0x290,%eax 0.00 : 5df883: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df888: 0f 85 62 fc ff ff jne 5df4f0 0.00 : 5df88e: 66 90 xchg %ax,%ax 0.00 : 5df890: eb 19 jmp 5df8ab 0.00 : 5df892: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : break; : case T_List: : foreach(temp, (List *) node) : { : if (walker((Node *) lfirst(temp), context)) 0.00 : 5df898: 31 c0 xor %eax,%eax 0.00 : 5df89a: 4c 89 ee mov %r13,%rsi 0.00 : 5df89d: 48 8b 3b mov (%rbx),%rdi 0.00 : 5df8a0: 41 ff d7 callq *%r15 0.00 : 5df8a3: 84 c0 test %al,%al 0.00 : 5df8a5: 0f 85 e5 fb ff ff jne 5df490 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5df8ab: 48 8b 5b 08 mov 0x8(%rbx),%rbx : */ : return walker(cte->ctequery, context); : } : break; : case T_List: : foreach(temp, (List *) node) 0.00 : 5df8af: 48 85 db test %rbx,%rbx 0.00 : 5df8b2: 75 e4 jne 5df898 0.00 : 5df8b4: e9 d7 fa ff ff jmpq 5df390 0.00 : 5df8b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return false; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5df8c0: 3d 48 01 00 00 cmp $0x148,%eax 0.00 : 5df8c5: 0f 84 c5 fa ff ff je 5df390 0.00 : 5df8cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df8d0: 0f 87 30 fa ff ff ja 5df306 0.00 : 5df8d6: 3d 46 01 00 00 cmp $0x146,%eax 0.00 : 5df8db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5df8e0: 0f 85 0a fc ff ff jne 5df4f0 : return walker(((CollateExpr *) node)->arg, context); : case T_CaseExpr: : { : CaseExpr *caseexpr = (CaseExpr *) node; : : if (walker(caseexpr->arg, context)) 0.00 : 5df8e6: 31 c0 xor %eax,%eax 0.00 : 5df8e8: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5df8ec: 4c 89 ee mov %r13,%rsi 0.00 : 5df8ef: 90 nop 0.00 : 5df8f0: 41 ff d7 callq *%r15 0.00 : 5df8f3: 84 c0 test %al,%al 0.00 : 5df8f5: 0f 85 95 fb ff ff jne 5df490 : return true; : /* we assume walker doesn't care about CaseWhens, either */ : foreach(temp, caseexpr->args) 0.00 : 5df8fb: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 5df8ff: 48 85 c0 test %rax,%rax 0.00 : 5df902: 74 40 je 5df944 0.00 : 5df904: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5df908: 4d 85 e4 test %r12,%r12 0.00 : 5df90b: 74 37 je 5df944 0.00 : 5df90d: 0f 1f 00 nopl (%rax) : { : CaseWhen *when = (CaseWhen *) lfirst(temp); 0.00 : 5df910: 4d 8b 34 24 mov (%r12),%r14 : : Assert(IsA(when, CaseWhen)); : if (walker(when->expr, context)) 0.00 : 5df914: 31 c0 xor %eax,%eax 0.00 : 5df916: 4c 89 ee mov %r13,%rsi 0.00 : 5df919: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 5df91d: 41 ff d7 callq *%r15 0.00 : 5df920: 84 c0 test %al,%al 0.00 : 5df922: 0f 85 68 fb ff ff jne 5df490 : return true; : if (walker(when->result, context)) 0.00 : 5df928: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 5df92c: 4c 89 ee mov %r13,%rsi 0.00 : 5df92f: 41 ff d7 callq *%r15 0.00 : 5df932: 84 c0 test %al,%al 0.00 : 5df934: 0f 85 56 fb ff ff jne 5df490 : CaseExpr *caseexpr = (CaseExpr *) node; : : if (walker(caseexpr->arg, context)) : return true; : /* we assume walker doesn't care about CaseWhens, either */ : foreach(temp, caseexpr->args) 0.00 : 5df93a: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5df93f: 4d 85 e4 test %r12,%r12 0.00 : 5df942: 75 cc jne 5df910 : if (walker(when->expr, context)) : return true; : if (walker(when->result, context)) : return true; : } : if (walker(caseexpr->defresult, context)) 0.00 : 5df944: 31 c0 xor %eax,%eax 0.00 : 5df946: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5df94a: 4c 89 ee mov %r13,%rsi 0.00 : 5df94d: 41 ff d7 callq *%r15 0.00 : 5df950: 84 c0 test %al,%al 0.00 : 5df952: 0f 95 c0 setne %al 0.00 : 5df955: e9 38 fa ff ff jmpq 5df392 : { : JoinExpr *join = (JoinExpr *) node; : : if (walker(join->larg, context)) : return true; : if (walker(join->rarg, context)) 0.00 : 5df95a: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5df95e: 4c 89 ee mov %r13,%rsi 0.00 : 5df961: 41 ff d7 callq *%r15 0.00 : 5df964: 84 c0 test %al,%al 0.00 : 5df966: 0f 85 24 fb ff ff jne 5df490 0.00 : 5df96c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5df970: e9 a5 fc ff ff jmpq 5df61a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:827 16.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:829 16.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:821 16.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:821 16.67 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:829 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3c70 : : * This may cause the table to exceed the desired memory size. It is : * up to the caller to call tbm_lossify() at the next safe point if so. : */ : static PagetableEntry * : tbm_get_pageentry(TIDBitmap *tbm, BlockNumber pageno) : { 0.00 : 5e3c70: 55 push %rbp 0.00 : 5e3c71: 48 89 e5 mov %rsp,%rbp 0.00 : 5e3c74: 53 push %rbx 0.00 : 5e3c75: 48 89 fb mov %rdi,%rbx 0.00 : 5e3c78: 48 83 ec 18 sub $0x18,%rsp 0.00 : 5e3c7c: 89 75 e4 mov %esi,-0x1c(%rbp) : PagetableEntry *page; : bool found; : : if (tbm->status == TBM_EMPTY) 0.00 : 5e3c7f: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5e3c82: 85 c0 test %eax,%eax 0.00 : 5e3c84: 75 6a jne 5e3cf0 : { : /* Use the fixed slot */ : page = &tbm->entry1; 0.00 : 5e3c86: 48 8d 57 34 lea 0x34(%rdi),%rdx : found = false; 0.00 : 5e3c8a: c6 45 f7 00 movb $0x0,-0x9(%rbp) : tbm->status = TBM_ONE_PAGE; 0.00 : 5e3c8e: c7 47 10 01 00 00 00 movl $0x1,0x10(%rdi) : (void *) &pageno, : HASH_ENTER, &found); : } : : /* Initialize it if not present before */ : if (!found) 0.00 : 5e3c95: 80 7d f7 00 cmpb $0x0,-0x9(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:827 33.33 : 5e3c99: 75 45 jne 5e3ce0 : { : MemSet(page, 0, sizeof(PagetableEntry)); 0.00 : 5e3c9b: f6 c2 07 test $0x7,%dl 0.00 : 5e3c9e: 0f 85 84 00 00 00 jne 5e3d28 0.00 : 5e3ca4: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 5e3cab: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 5e3cb2: 00 0.00 : 5e3cb3: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : 5e3cba: 00 0.00 : 5e3cbb: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 5e3cc2: 00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:829 16.67 : 5e3cc3: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 5e3cca: 00 0.00 : 5e3ccb: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 5e3cd2: 00 : page->blockno = pageno; 0.00 : 5e3cd3: 8b 45 e4 mov -0x1c(%rbp),%eax 0.00 : 5e3cd6: 89 02 mov %eax,(%rdx) : /* must count it too */ : tbm->nentries++; 0.00 : 5e3cd8: 83 43 20 01 addl $0x1,0x20(%rbx) : tbm->npages++; 0.00 : 5e3cdc: 83 43 28 01 addl $0x1,0x28(%rbx) : } : : return page; : } 0.00 : 5e3ce0: 48 83 c4 18 add $0x18,%rsp 0.00 : 5e3ce4: 48 89 d0 mov %rdx,%rax 0.00 : 5e3ce7: 5b pop %rbx 0.00 : 5e3ce8: c9 leaveq 0.00 : 5e3ce9: c3 retq 0.00 : 5e3cea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : found = false; : tbm->status = TBM_ONE_PAGE; : } : else : { : if (tbm->status == TBM_ONE_PAGE) 0.00 : 5e3cf0: 83 e8 01 sub $0x1,%eax 0.00 : 5e3cf3: 75 11 jne 5e3d06 : { : page = &tbm->entry1; : if (page->blockno == pageno) 0.00 : 5e3cf5: 8b 47 34 mov 0x34(%rdi),%eax 0.00 : 5e3cf8: 3b 45 e4 cmp -0x1c(%rbp),%eax : } : else : { : if (tbm->status == TBM_ONE_PAGE) : { : page = &tbm->entry1; 0.00 : 5e3cfb: 48 8d 57 34 lea 0x34(%rdi),%rdx : if (page->blockno == pageno) 0.00 : 5e3cff: 74 df je 5e3ce0 : return page; : /* Time to switch from one page to a hashtable */ : tbm_create_pagetable(tbm); 0.00 : 5e3d01: e8 0a fd ff ff callq 5e3a10 : } : : /* Look up or create an entry */ : page = (PagetableEntry *) hash_search(tbm->pagetable, 0.00 : 5e3d06: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5e3d0a: 48 8d 4d f7 lea -0x9(%rbp),%rcx 0.00 : 5e3d0e: 48 8d 75 e4 lea -0x1c(%rbp),%rsi 0.00 : 5e3d12: ba 01 00 00 00 mov $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:821 16.67 : 5e3d17: e8 84 09 1a 00 callq 7846a0 16.67 : 5e3d1c: 48 89 c2 mov %rax,%rdx 0.00 : 5e3d1f: e9 71 ff ff ff jmpq 5e3c95 0.00 : 5e3d24: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* Initialize it if not present before */ : if (!found) : { : MemSet(page, 0, sizeof(PagetableEntry)); 0.00 : 5e3d28: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 5e3d2d: 31 c0 xor %eax,%eax 0.00 : 5e3d2f: 48 89 d7 mov %rdx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:829 16.67 : 5e3d32: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 5e3d35: eb 9c jmp 5e3cd3 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/copyfuncs.c:4713 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/copyfuncs.c:1312 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/copyfuncs.c:3915 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e4190 : : * Create a copy of a Node tree or list. This is a "deep" copy: all : * substructure is copied too, recursively. : */ : void * : copyObject(const void *from) : { 0.00 : 5e4190: 55 push %rbp 0.00 : 5e4191: 48 89 e5 mov %rsp,%rbp 0.00 : 5e4194: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 5e4198: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5e419c: 49 89 fd mov %rdi,%r13 0.00 : 5e419f: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5e41a3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 5e41a7: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5e41ab: 48 83 ec 30 sub $0x30,%rsp : void *retval; : : if (from == NULL) 0.00 : 5e41af: 48 85 ff test %rdi,%rdi 0.00 : 5e41b2: 74 54 je 5e4208 : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); 0.00 : 5e41b4: e8 27 78 0b 00 callq 69b9e0 : : switch (nodeTag(from)) 0.00 : 5e41b9: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 5e41bd: 83 e8 64 sub $0x64,%eax 0.00 : 5e41c0: 3d 45 03 00 00 cmp $0x345,%eax 0.00 : 5e41c5: 76 31 jbe 5e41f8 : case T_XmlSerialize: : retval = _copyXmlSerialize(from); : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from)); 0.00 : 5e41c7: ba 50 3f 89 00 mov $0x893f50,%edx 0.00 : 5e41cc: be 63 12 00 00 mov $0x1263,%esi 0.00 : 5e41d1: bf 14 25 89 00 mov $0x892514,%edi 0.00 : 5e41d6: e8 45 72 19 00 callq 77b420 0.00 : 5e41db: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 5e41df: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5e41e4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e41e9: 31 c0 xor %eax,%eax 0.00 : 5e41eb: e8 40 70 19 00 callq 77b230 0.00 : 5e41f0: e8 db 52 e8 ff callq 4694d0 0.00 : 5e41f5: 0f 1f 00 nopl (%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(from)) 0.00 : 5e41f8: 89 c0 mov %eax,%eax 0.00 : 5e41fa: ff 24 c5 20 25 89 00 jmpq *0x892520(,%rax,8) 0.00 : 5e4201: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case T_XmlSerialize: : retval = _copyXmlSerialize(from); : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from)); 0.00 : 5e4208: 31 c0 xor %eax,%eax : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/copyfuncs.c:4713 33.33 : 5e420a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e420e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e4212: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e4216: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e421a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e421e: c9 leaveq 0.00 : 5e421f: c3 retq : * _copyPlan : */ : static Plan * : _copyPlan(const Plan *from) : { : Plan *newnode = makeNode(Plan); 0.00 : 5e4220: 48 8b 3d 39 66 5d 00 mov 0x5d6639(%rip),%rdi # bba860 0.00 : 5e4227: be 60 00 00 00 mov $0x60,%esi 0.00 : 5e422c: e8 df 4b 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields(from, newnode); 0.00 : 5e4231: 4c 89 ef mov %r13,%rdi : * _copyPlan : */ : static Plan * : _copyPlan(const Plan *from) : { : Plan *newnode = makeNode(Plan); 0.00 : 5e4234: 48 89 c3 mov %rax,%rbx 0.00 : 5e4237: c7 00 64 00 00 00 movl $0x64,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields(from, newnode); 0.00 : 5e423d: 48 89 c6 mov %rax,%rsi 0.00 : 5e4240: e8 0b 38 00 00 callq 5e7a50 0.00 : 5e4245: 48 89 d8 mov %rbx,%rax : case T_PlannedStmt: : retval = _copyPlannedStmt(from); : break; : case T_Plan: : retval = _copyPlan(from); : break; 0.00 : 5e4248: eb c0 jmp 5e420a : * _copyResult : */ : static Result * : _copyResult(const Result *from) : { : Result *newnode = makeNode(Result); 0.00 : 5e424a: 48 8b 3d 0f 66 5d 00 mov 0x5d660f(%rip),%rdi # bba860 0.00 : 5e4251: be 68 00 00 00 mov $0x68,%esi 0.00 : 5e4256: e8 b5 4b 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e425b: 4c 89 ef mov %r13,%rdi : * _copyResult : */ : static Result * : _copyResult(const Result *from) : { : Result *newnode = makeNode(Result); 0.00 : 5e425e: c7 00 65 00 00 00 movl $0x65,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4264: 48 89 c6 mov %rax,%rsi : * _copyResult : */ : static Result * : _copyResult(const Result *from) : { : Result *newnode = makeNode(Result); 0.00 : 5e4267: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e426a: e8 e1 37 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(resconstantqual); 0.00 : 5e426f: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e4273: e8 18 ff ff ff callq 5e4190 0.00 : 5e4278: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 5e427c: 48 89 d8 mov %rbx,%rax : case T_Plan: : retval = _copyPlan(from); : break; : case T_Result: : retval = _copyResult(from); : break; 0.00 : 5e427f: eb 89 jmp 5e420a : * _copyModifyTable : */ : static ModifyTable * : _copyModifyTable(const ModifyTable *from) : { : ModifyTable *newnode = makeNode(ModifyTable); 0.00 : 5e4281: 48 8b 3d d8 65 5d 00 mov 0x5d65d8(%rip),%rdi # bba860 0.00 : 5e4288: be a8 00 00 00 mov $0xa8,%esi 0.00 : 5e428d: e8 7e 4b 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4292: 4c 89 ef mov %r13,%rdi 0.00 : 5e4295: 48 89 c6 mov %rax,%rsi : * _copyModifyTable : */ : static ModifyTable * : _copyModifyTable(const ModifyTable *from) : { : ModifyTable *newnode = makeNode(ModifyTable); 0.00 : 5e4298: c7 00 66 00 00 00 movl $0x66,(%rax) 0.00 : 5e429e: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e42a1: e8 aa 37 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(operation); 0.00 : 5e42a6: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e42aa: 89 43 60 mov %eax,0x60(%rbx) : COPY_SCALAR_FIELD(canSetTag); 0.00 : 5e42ad: 41 0f b6 45 64 movzbl 0x64(%r13),%eax 0.00 : 5e42b2: 88 43 64 mov %al,0x64(%rbx) : COPY_NODE_FIELD(resultRelations); 0.00 : 5e42b5: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e42b9: e8 d2 fe ff ff callq 5e4190 0.00 : 5e42be: 48 89 43 68 mov %rax,0x68(%rbx) : COPY_SCALAR_FIELD(resultRelIndex); 0.00 : 5e42c2: 41 8b 45 70 mov 0x70(%r13),%eax 0.00 : 5e42c6: 89 43 70 mov %eax,0x70(%rbx) : COPY_NODE_FIELD(plans); 0.00 : 5e42c9: 49 8b 7d 78 mov 0x78(%r13),%rdi 0.00 : 5e42cd: e8 be fe ff ff callq 5e4190 0.00 : 5e42d2: 48 89 43 78 mov %rax,0x78(%rbx) : COPY_NODE_FIELD(withCheckOptionLists); 0.00 : 5e42d6: 49 8b bd 80 00 00 00 mov 0x80(%r13),%rdi 0.00 : 5e42dd: e8 ae fe ff ff callq 5e4190 0.00 : 5e42e2: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) : COPY_NODE_FIELD(returningLists); 0.00 : 5e42e9: 49 8b bd 88 00 00 00 mov 0x88(%r13),%rdi 0.00 : 5e42f0: e8 9b fe ff ff callq 5e4190 0.00 : 5e42f5: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) : COPY_NODE_FIELD(fdwPrivLists); 0.00 : 5e42fc: 49 8b bd 90 00 00 00 mov 0x90(%r13),%rdi 0.00 : 5e4303: e8 88 fe ff ff callq 5e4190 0.00 : 5e4308: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) : COPY_NODE_FIELD(rowMarks); 0.00 : 5e430f: 49 8b bd 98 00 00 00 mov 0x98(%r13),%rdi 0.00 : 5e4316: e8 75 fe ff ff callq 5e4190 0.00 : 5e431b: 48 89 83 98 00 00 00 mov %rax,0x98(%rbx) : COPY_SCALAR_FIELD(epqParam); 0.00 : 5e4322: 41 8b 85 a0 00 00 00 mov 0xa0(%r13),%eax 0.00 : 5e4329: 89 83 a0 00 00 00 mov %eax,0xa0(%rbx) 0.00 : 5e432f: 48 89 d8 mov %rbx,%rax : case T_Result: : retval = _copyResult(from); : break; : case T_ModifyTable: : retval = _copyModifyTable(from); : break; 0.00 : 5e4332: e9 d3 fe ff ff jmpq 5e420a : * _copyAppend : */ : static Append * : _copyAppend(const Append *from) : { : Append *newnode = makeNode(Append); 0.00 : 5e4337: 48 8b 3d 22 65 5d 00 mov 0x5d6522(%rip),%rdi # bba860 0.00 : 5e433e: be 68 00 00 00 mov $0x68,%esi 0.00 : 5e4343: e8 c8 4a 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4348: 4c 89 ef mov %r13,%rdi : * _copyAppend : */ : static Append * : _copyAppend(const Append *from) : { : Append *newnode = makeNode(Append); 0.00 : 5e434b: c7 00 67 00 00 00 movl $0x67,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4351: 48 89 c6 mov %rax,%rsi : * _copyAppend : */ : static Append * : _copyAppend(const Append *from) : { : Append *newnode = makeNode(Append); 0.00 : 5e4354: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4357: e8 f4 36 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(appendplans); 0.00 : 5e435c: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e4360: e8 2b fe ff ff callq 5e4190 0.00 : 5e4365: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 5e4369: 48 89 d8 mov %rbx,%rax : case T_ModifyTable: : retval = _copyModifyTable(from); : break; : case T_Append: : retval = _copyAppend(from); : break; 0.00 : 5e436c: e9 99 fe ff ff jmpq 5e420a : * _copyMergeAppend : */ : static MergeAppend * : _copyMergeAppend(const MergeAppend *from) : { : MergeAppend *newnode = makeNode(MergeAppend); 0.00 : 5e4371: 48 8b 3d e8 64 5d 00 mov 0x5d64e8(%rip),%rdi # bba860 0.00 : 5e4378: be 90 00 00 00 mov $0x90,%esi 0.00 : 5e437d: e8 8e 4a 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4382: 4c 89 ef mov %r13,%rdi 0.00 : 5e4385: 48 89 c6 mov %rax,%rsi : * _copyMergeAppend : */ : static MergeAppend * : _copyMergeAppend(const MergeAppend *from) : { : MergeAppend *newnode = makeNode(MergeAppend); 0.00 : 5e4388: c7 00 68 00 00 00 movl $0x68,(%rax) 0.00 : 5e438e: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4391: e8 ba 36 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(mergeplans); 0.00 : 5e4396: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e439a: e8 f1 fd ff ff callq 5e4190 0.00 : 5e439f: 48 89 43 60 mov %rax,0x60(%rbx) : COPY_SCALAR_FIELD(numCols); 0.00 : 5e43a3: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e43a7: 89 43 68 mov %eax,0x68(%rbx) : COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); 0.00 : 5e43aa: 49 63 45 68 movslq 0x68(%r13),%rax 0.00 : 5e43ae: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e43b2: 4c 89 e7 mov %r12,%rdi 0.00 : 5e43b5: e8 96 49 1b 00 callq 798d50 0.00 : 5e43ba: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e43be: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e43c2: 4c 89 e2 mov %r12,%rdx 0.00 : 5e43c5: 48 89 c7 mov %rax,%rdi 0.00 : 5e43c8: e8 23 58 e8 ff callq 469bf0 : COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); 0.00 : 5e43cd: 49 63 45 68 movslq 0x68(%r13),%rax 0.00 : 5e43d1: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e43d8: 00 0.00 : 5e43d9: 4c 89 e7 mov %r12,%rdi 0.00 : 5e43dc: e8 6f 49 1b 00 callq 798d50 0.00 : 5e43e1: 48 89 43 78 mov %rax,0x78(%rbx) 0.00 : 5e43e5: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5e43e9: 4c 89 e2 mov %r12,%rdx 0.00 : 5e43ec: 48 89 c7 mov %rax,%rdi 0.00 : 5e43ef: e8 fc 57 e8 ff callq 469bf0 : COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); 0.00 : 5e43f4: 49 63 45 68 movslq 0x68(%r13),%rax 0.00 : 5e43f8: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e43ff: 00 0.00 : 5e4400: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4403: e8 48 49 1b 00 callq 798d50 0.00 : 5e4408: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) 0.00 : 5e440f: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 5e4416: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4419: 48 89 c7 mov %rax,%rdi 0.00 : 5e441c: e8 cf 57 e8 ff callq 469bf0 : COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); 0.00 : 5e4421: 4d 63 65 68 movslq 0x68(%r13),%r12 0.00 : 5e4425: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4428: e8 23 49 1b 00 callq 798d50 0.00 : 5e442d: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) 0.00 : 5e4434: 49 8b b5 88 00 00 00 mov 0x88(%r13),%rsi 0.00 : 5e443b: 48 89 c7 mov %rax,%rdi 0.00 : 5e443e: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4441: e8 aa 57 e8 ff callq 469bf0 0.00 : 5e4446: 48 89 d8 mov %rbx,%rax : case T_Append: : retval = _copyAppend(from); : break; : case T_MergeAppend: : retval = _copyMergeAppend(from); : break; 0.00 : 5e4449: e9 bc fd ff ff jmpq 5e420a : * _copyRecursiveUnion : */ : static RecursiveUnion * : _copyRecursiveUnion(const RecursiveUnion *from) : { : RecursiveUnion *newnode = makeNode(RecursiveUnion); 0.00 : 5e444e: 48 8b 3d 0b 64 5d 00 mov 0x5d640b(%rip),%rdi # bba860 0.00 : 5e4455: be 80 00 00 00 mov $0x80,%esi 0.00 : 5e445a: e8 b1 49 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e445f: 4c 89 ef mov %r13,%rdi : * _copyRecursiveUnion : */ : static RecursiveUnion * : _copyRecursiveUnion(const RecursiveUnion *from) : { : RecursiveUnion *newnode = makeNode(RecursiveUnion); 0.00 : 5e4462: c7 00 69 00 00 00 movl $0x69,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4468: 48 89 c6 mov %rax,%rsi : * _copyRecursiveUnion : */ : static RecursiveUnion * : _copyRecursiveUnion(const RecursiveUnion *from) : { : RecursiveUnion *newnode = makeNode(RecursiveUnion); 0.00 : 5e446b: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e446e: e8 dd 35 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(wtParam); 0.00 : 5e4473: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4477: 89 43 60 mov %eax,0x60(%rbx) : COPY_SCALAR_FIELD(numCols); 0.00 : 5e447a: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5e447e: 89 43 64 mov %eax,0x64(%rbx) : if (from->numCols > 0) 0.00 : 5e4481: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5e4485: 85 c0 test %eax,%eax 0.00 : 5e4487: 7e 48 jle 5e44d1 : { : COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); 0.00 : 5e4489: 48 98 cltq 0.00 : 5e448b: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e448f: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4492: e8 b9 48 1b 00 callq 798d50 0.00 : 5e4497: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e449b: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5e449f: 4c 89 e2 mov %r12,%rdx 0.00 : 5e44a2: 48 89 c7 mov %rax,%rdi 0.00 : 5e44a5: e8 46 57 e8 ff callq 469bf0 : COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); 0.00 : 5e44aa: 49 63 45 64 movslq 0x64(%r13),%rax 0.00 : 5e44ae: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e44b5: 00 0.00 : 5e44b6: 4c 89 e7 mov %r12,%rdi 0.00 : 5e44b9: e8 92 48 1b 00 callq 798d50 0.00 : 5e44be: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e44c2: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e44c6: 48 89 c7 mov %rax,%rdi 0.00 : 5e44c9: 4c 89 e2 mov %r12,%rdx 0.00 : 5e44cc: e8 1f 57 e8 ff callq 469bf0 : } : COPY_SCALAR_FIELD(numGroups); 0.00 : 5e44d1: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 5e44d5: 48 89 43 78 mov %rax,0x78(%rbx) 0.00 : 5e44d9: 48 89 d8 mov %rbx,%rax : case T_MergeAppend: : retval = _copyMergeAppend(from); : break; : case T_RecursiveUnion: : retval = _copyRecursiveUnion(from); : break; 0.00 : 5e44dc: e9 29 fd ff ff jmpq 5e420a : * _copyBitmapAnd : */ : static BitmapAnd * : _copyBitmapAnd(const BitmapAnd *from) : { : BitmapAnd *newnode = makeNode(BitmapAnd); 0.00 : 5e44e1: 48 8b 3d 78 63 5d 00 mov 0x5d6378(%rip),%rdi # bba860 0.00 : 5e44e8: be 68 00 00 00 mov $0x68,%esi 0.00 : 5e44ed: e8 1e 49 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e44f2: 4c 89 ef mov %r13,%rdi : * _copyBitmapAnd : */ : static BitmapAnd * : _copyBitmapAnd(const BitmapAnd *from) : { : BitmapAnd *newnode = makeNode(BitmapAnd); 0.00 : 5e44f5: c7 00 6a 00 00 00 movl $0x6a,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e44fb: 48 89 c6 mov %rax,%rsi : * _copyBitmapAnd : */ : static BitmapAnd * : _copyBitmapAnd(const BitmapAnd *from) : { : BitmapAnd *newnode = makeNode(BitmapAnd); 0.00 : 5e44fe: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4501: e8 4a 35 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(bitmapplans); 0.00 : 5e4506: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e450a: e8 81 fc ff ff callq 5e4190 0.00 : 5e450f: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 5e4513: 48 89 d8 mov %rbx,%rax : case T_RecursiveUnion: : retval = _copyRecursiveUnion(from); : break; : case T_BitmapAnd: : retval = _copyBitmapAnd(from); : break; 0.00 : 5e4516: e9 ef fc ff ff jmpq 5e420a : * _copyBitmapOr : */ : static BitmapOr * : _copyBitmapOr(const BitmapOr *from) : { : BitmapOr *newnode = makeNode(BitmapOr); 0.00 : 5e451b: 48 8b 3d 3e 63 5d 00 mov 0x5d633e(%rip),%rdi # bba860 0.00 : 5e4522: be 68 00 00 00 mov $0x68,%esi 0.00 : 5e4527: e8 e4 48 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e452c: 4c 89 ef mov %r13,%rdi : * _copyBitmapOr : */ : static BitmapOr * : _copyBitmapOr(const BitmapOr *from) : { : BitmapOr *newnode = makeNode(BitmapOr); 0.00 : 5e452f: c7 00 6b 00 00 00 movl $0x6b,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4535: 48 89 c6 mov %rax,%rsi : * _copyBitmapOr : */ : static BitmapOr * : _copyBitmapOr(const BitmapOr *from) : { : BitmapOr *newnode = makeNode(BitmapOr); 0.00 : 5e4538: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e453b: e8 10 35 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(bitmapplans); 0.00 : 5e4540: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e4544: e8 47 fc ff ff callq 5e4190 0.00 : 5e4549: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 5e454d: 48 89 d8 mov %rbx,%rax : case T_BitmapAnd: : retval = _copyBitmapAnd(from); : break; : case T_BitmapOr: : retval = _copyBitmapOr(from); : break; 0.00 : 5e4550: e9 b5 fc ff ff jmpq 5e420a : * _copyScan : */ : static Scan * : _copyScan(const Scan *from) : { : Scan *newnode = makeNode(Scan); 0.00 : 5e4555: 48 8b 3d 04 63 5d 00 mov 0x5d6304(%rip),%rdi # bba860 0.00 : 5e455c: be 68 00 00 00 mov $0x68,%esi 0.00 : 5e4561: e8 aa 48 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4566: 4c 89 ef mov %r13,%rdi : * _copyScan : */ : static Scan * : _copyScan(const Scan *from) : { : Scan *newnode = makeNode(Scan); 0.00 : 5e4569: c7 00 6c 00 00 00 movl $0x6c,(%rax) : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e456f: 48 89 c6 mov %rax,%rsi : * _copyScan : */ : static Scan * : _copyScan(const Scan *from) : { : Scan *newnode = makeNode(Scan); 0.00 : 5e4572: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4575: e8 d6 34 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e457a: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e457e: 89 43 60 mov %eax,0x60(%rbx) 0.00 : 5e4581: 48 89 d8 mov %rbx,%rax : case T_BitmapOr: : retval = _copyBitmapOr(from); : break; : case T_Scan: : retval = _copyScan(from); : break; 0.00 : 5e4584: e9 81 fc ff ff jmpq 5e420a : * _copySeqScan : */ : static SeqScan * : _copySeqScan(const SeqScan *from) : { : SeqScan *newnode = makeNode(SeqScan); 0.00 : 5e4589: 48 8b 3d d0 62 5d 00 mov 0x5d62d0(%rip),%rdi # bba860 0.00 : 5e4590: be 68 00 00 00 mov $0x68,%esi 0.00 : 5e4595: e8 76 48 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e459a: 4c 89 ef mov %r13,%rdi : * _copySeqScan : */ : static SeqScan * : _copySeqScan(const SeqScan *from) : { : SeqScan *newnode = makeNode(SeqScan); 0.00 : 5e459d: c7 00 6d 00 00 00 movl $0x6d,(%rax) : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e45a3: 48 89 c6 mov %rax,%rsi : * _copySeqScan : */ : static SeqScan * : _copySeqScan(const SeqScan *from) : { : SeqScan *newnode = makeNode(SeqScan); 0.00 : 5e45a6: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e45a9: e8 a2 34 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e45ae: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e45b2: 89 43 60 mov %eax,0x60(%rbx) 0.00 : 5e45b5: 48 89 d8 mov %rbx,%rax : case T_Scan: : retval = _copyScan(from); : break; : case T_SeqScan: : retval = _copySeqScan(from); : break; 0.00 : 5e45b8: e9 4d fc ff ff jmpq 5e420a : * _copyIndexScan : */ : static IndexScan * : _copyIndexScan(const IndexScan *from) : { : IndexScan *newnode = makeNode(IndexScan); 0.00 : 5e45bd: 48 8b 3d 9c 62 5d 00 mov 0x5d629c(%rip),%rdi # bba860 0.00 : 5e45c4: be 98 00 00 00 mov $0x98,%esi 0.00 : 5e45c9: e8 42 48 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e45ce: 4c 89 ef mov %r13,%rdi 0.00 : 5e45d1: 48 89 c6 mov %rax,%rsi : * _copyIndexScan : */ : static IndexScan * : _copyIndexScan(const IndexScan *from) : { : IndexScan *newnode = makeNode(IndexScan); 0.00 : 5e45d4: c7 00 6e 00 00 00 movl $0x6e,(%rax) 0.00 : 5e45da: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e45dd: e8 6e 34 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e45e2: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e45e6: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(indexid); 0.00 : 5e45e9: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e45ed: 89 43 68 mov %eax,0x68(%rbx) : COPY_NODE_FIELD(indexqual); 0.00 : 5e45f0: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e45f4: e8 97 fb ff ff callq 5e4190 0.00 : 5e45f9: 48 89 43 70 mov %rax,0x70(%rbx) : COPY_NODE_FIELD(indexqualorig); 0.00 : 5e45fd: 49 8b 7d 78 mov 0x78(%r13),%rdi 0.00 : 5e4601: e8 8a fb ff ff callq 5e4190 0.00 : 5e4606: 48 89 43 78 mov %rax,0x78(%rbx) : COPY_NODE_FIELD(indexorderby); 0.00 : 5e460a: 49 8b bd 80 00 00 00 mov 0x80(%r13),%rdi 0.00 : 5e4611: e8 7a fb ff ff callq 5e4190 0.00 : 5e4616: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) : COPY_NODE_FIELD(indexorderbyorig); 0.00 : 5e461d: 49 8b bd 88 00 00 00 mov 0x88(%r13),%rdi 0.00 : 5e4624: e8 67 fb ff ff callq 5e4190 0.00 : 5e4629: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) : COPY_SCALAR_FIELD(indexorderdir); 0.00 : 5e4630: 41 8b 85 90 00 00 00 mov 0x90(%r13),%eax 0.00 : 5e4637: 89 83 90 00 00 00 mov %eax,0x90(%rbx) 0.00 : 5e463d: 48 89 d8 mov %rbx,%rax : case T_SeqScan: : retval = _copySeqScan(from); : break; : case T_IndexScan: : retval = _copyIndexScan(from); : break; 0.00 : 5e4640: e9 c5 fb ff ff jmpq 5e420a : * _copyIndexOnlyScan : */ : static IndexOnlyScan * : _copyIndexOnlyScan(const IndexOnlyScan *from) : { : IndexOnlyScan *newnode = makeNode(IndexOnlyScan); 0.00 : 5e4645: 48 8b 3d 14 62 5d 00 mov 0x5d6214(%rip),%rdi # bba860 0.00 : 5e464c: be 90 00 00 00 mov $0x90,%esi 0.00 : 5e4651: e8 ba 47 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4656: 4c 89 ef mov %r13,%rdi 0.00 : 5e4659: 48 89 c6 mov %rax,%rsi : * _copyIndexOnlyScan : */ : static IndexOnlyScan * : _copyIndexOnlyScan(const IndexOnlyScan *from) : { : IndexOnlyScan *newnode = makeNode(IndexOnlyScan); 0.00 : 5e465c: c7 00 6f 00 00 00 movl $0x6f,(%rax) 0.00 : 5e4662: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4665: e8 e6 33 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e466a: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e466e: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(indexid); 0.00 : 5e4671: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e4675: 89 43 68 mov %eax,0x68(%rbx) : COPY_NODE_FIELD(indexqual); 0.00 : 5e4678: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e467c: e8 0f fb ff ff callq 5e4190 0.00 : 5e4681: 48 89 43 70 mov %rax,0x70(%rbx) : COPY_NODE_FIELD(indexorderby); 0.00 : 5e4685: 49 8b 7d 78 mov 0x78(%r13),%rdi 0.00 : 5e4689: e8 02 fb ff ff callq 5e4190 0.00 : 5e468e: 48 89 43 78 mov %rax,0x78(%rbx) : COPY_NODE_FIELD(indextlist); 0.00 : 5e4692: 49 8b bd 80 00 00 00 mov 0x80(%r13),%rdi 0.00 : 5e4699: e8 f2 fa ff ff callq 5e4190 0.00 : 5e469e: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) : COPY_SCALAR_FIELD(indexorderdir); 0.00 : 5e46a5: 41 8b 85 88 00 00 00 mov 0x88(%r13),%eax 0.00 : 5e46ac: 89 83 88 00 00 00 mov %eax,0x88(%rbx) 0.00 : 5e46b2: 48 89 d8 mov %rbx,%rax : case T_IndexScan: : retval = _copyIndexScan(from); : break; : case T_IndexOnlyScan: : retval = _copyIndexOnlyScan(from); : break; 0.00 : 5e46b5: e9 50 fb ff ff jmpq 5e420a : * _copyBitmapIndexScan : */ : static BitmapIndexScan * : _copyBitmapIndexScan(const BitmapIndexScan *from) : { : BitmapIndexScan *newnode = makeNode(BitmapIndexScan); 0.00 : 5e46ba: 48 8b 3d 9f 61 5d 00 mov 0x5d619f(%rip),%rdi # bba860 0.00 : 5e46c1: be 80 00 00 00 mov $0x80,%esi 0.00 : 5e46c6: e8 45 47 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e46cb: 4c 89 ef mov %r13,%rdi 0.00 : 5e46ce: 48 89 c6 mov %rax,%rsi : * _copyBitmapIndexScan : */ : static BitmapIndexScan * : _copyBitmapIndexScan(const BitmapIndexScan *from) : { : BitmapIndexScan *newnode = makeNode(BitmapIndexScan); 0.00 : 5e46d1: c7 00 70 00 00 00 movl $0x70,(%rax) 0.00 : 5e46d7: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e46da: e8 71 33 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e46df: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e46e3: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(indexid); 0.00 : 5e46e6: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e46ea: 89 43 68 mov %eax,0x68(%rbx) : COPY_NODE_FIELD(indexqual); 0.00 : 5e46ed: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e46f1: e8 9a fa ff ff callq 5e4190 0.00 : 5e46f6: 48 89 43 70 mov %rax,0x70(%rbx) : COPY_NODE_FIELD(indexqualorig); 0.00 : 5e46fa: 49 8b 7d 78 mov 0x78(%r13),%rdi 0.00 : 5e46fe: e8 8d fa ff ff callq 5e4190 0.00 : 5e4703: 48 89 43 78 mov %rax,0x78(%rbx) 0.00 : 5e4707: 48 89 d8 mov %rbx,%rax : case T_IndexOnlyScan: : retval = _copyIndexOnlyScan(from); : break; : case T_BitmapIndexScan: : retval = _copyBitmapIndexScan(from); : break; 0.00 : 5e470a: e9 fb fa ff ff jmpq 5e420a : * _copyBitmapHeapScan : */ : static BitmapHeapScan * : _copyBitmapHeapScan(const BitmapHeapScan *from) : { : BitmapHeapScan *newnode = makeNode(BitmapHeapScan); 0.00 : 5e470f: 48 8b 3d 4a 61 5d 00 mov 0x5d614a(%rip),%rdi # bba860 0.00 : 5e4716: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e471b: e8 f0 46 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4720: 4c 89 ef mov %r13,%rdi 0.00 : 5e4723: 48 89 c6 mov %rax,%rsi : * _copyBitmapHeapScan : */ : static BitmapHeapScan * : _copyBitmapHeapScan(const BitmapHeapScan *from) : { : BitmapHeapScan *newnode = makeNode(BitmapHeapScan); 0.00 : 5e4726: c7 00 71 00 00 00 movl $0x71,(%rax) 0.00 : 5e472c: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e472f: e8 1c 33 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e4734: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4738: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(bitmapqualorig); 0.00 : 5e473b: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e473f: e8 4c fa ff ff callq 5e4190 0.00 : 5e4744: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e4748: 48 89 d8 mov %rbx,%rax : case T_BitmapIndexScan: : retval = _copyBitmapIndexScan(from); : break; : case T_BitmapHeapScan: : retval = _copyBitmapHeapScan(from); : break; 0.00 : 5e474b: e9 ba fa ff ff jmpq 5e420a : * _copyTidScan : */ : static TidScan * : _copyTidScan(const TidScan *from) : { : TidScan *newnode = makeNode(TidScan); 0.00 : 5e4750: 48 8b 3d 09 61 5d 00 mov 0x5d6109(%rip),%rdi # bba860 0.00 : 5e4757: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e475c: e8 af 46 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4761: 4c 89 ef mov %r13,%rdi 0.00 : 5e4764: 48 89 c6 mov %rax,%rsi : * _copyTidScan : */ : static TidScan * : _copyTidScan(const TidScan *from) : { : TidScan *newnode = makeNode(TidScan); 0.00 : 5e4767: c7 00 72 00 00 00 movl $0x72,(%rax) 0.00 : 5e476d: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4770: e8 db 32 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e4775: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4779: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(tidquals); 0.00 : 5e477c: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e4780: e8 0b fa ff ff callq 5e4190 0.00 : 5e4785: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e4789: 48 89 d8 mov %rbx,%rax : case T_BitmapHeapScan: : retval = _copyBitmapHeapScan(from); : break; : case T_TidScan: : retval = _copyTidScan(from); : break; 0.00 : 5e478c: e9 79 fa ff ff jmpq 5e420a : * _copySubqueryScan : */ : static SubqueryScan * : _copySubqueryScan(const SubqueryScan *from) : { : SubqueryScan *newnode = makeNode(SubqueryScan); 0.00 : 5e4791: 48 8b 3d c8 60 5d 00 mov 0x5d60c8(%rip),%rdi # bba860 0.00 : 5e4798: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e479d: e8 6e 46 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e47a2: 4c 89 ef mov %r13,%rdi 0.00 : 5e47a5: 48 89 c6 mov %rax,%rsi : * _copySubqueryScan : */ : static SubqueryScan * : _copySubqueryScan(const SubqueryScan *from) : { : SubqueryScan *newnode = makeNode(SubqueryScan); 0.00 : 5e47a8: c7 00 73 00 00 00 movl $0x73,(%rax) 0.00 : 5e47ae: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e47b1: e8 9a 32 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e47b6: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e47ba: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(subplan); 0.00 : 5e47bd: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e47c1: e8 ca f9 ff ff callq 5e4190 0.00 : 5e47c6: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e47ca: 48 89 d8 mov %rbx,%rax : case T_TidScan: : retval = _copyTidScan(from); : break; : case T_SubqueryScan: : retval = _copySubqueryScan(from); : break; 0.00 : 5e47cd: e9 38 fa ff ff jmpq 5e420a : * _copyFunctionScan : */ : static FunctionScan * : _copyFunctionScan(const FunctionScan *from) : { : FunctionScan *newnode = makeNode(FunctionScan); 0.00 : 5e47d2: 48 8b 3d 87 60 5d 00 mov 0x5d6087(%rip),%rdi # bba860 0.00 : 5e47d9: be 78 00 00 00 mov $0x78,%esi 0.00 : 5e47de: e8 2d 46 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e47e3: 4c 89 ef mov %r13,%rdi 0.00 : 5e47e6: 48 89 c6 mov %rax,%rsi : * _copyFunctionScan : */ : static FunctionScan * : _copyFunctionScan(const FunctionScan *from) : { : FunctionScan *newnode = makeNode(FunctionScan); 0.00 : 5e47e9: c7 00 74 00 00 00 movl $0x74,(%rax) 0.00 : 5e47ef: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e47f2: e8 59 32 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e47f7: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e47fb: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(functions); 0.00 : 5e47fe: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e4802: e8 89 f9 ff ff callq 5e4190 0.00 : 5e4807: 48 89 43 68 mov %rax,0x68(%rbx) : COPY_SCALAR_FIELD(funcordinality); 0.00 : 5e480b: 41 0f b6 45 70 movzbl 0x70(%r13),%eax 0.00 : 5e4810: 88 43 70 mov %al,0x70(%rbx) 0.00 : 5e4813: 48 89 d8 mov %rbx,%rax : case T_SubqueryScan: : retval = _copySubqueryScan(from); : break; : case T_FunctionScan: : retval = _copyFunctionScan(from); : break; 0.00 : 5e4816: e9 ef f9 ff ff jmpq 5e420a : * _copyValuesScan : */ : static ValuesScan * : _copyValuesScan(const ValuesScan *from) : { : ValuesScan *newnode = makeNode(ValuesScan); 0.00 : 5e481b: 48 8b 3d 3e 60 5d 00 mov 0x5d603e(%rip),%rdi # bba860 0.00 : 5e4822: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e4827: e8 e4 45 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e482c: 4c 89 ef mov %r13,%rdi 0.00 : 5e482f: 48 89 c6 mov %rax,%rsi : * _copyValuesScan : */ : static ValuesScan * : _copyValuesScan(const ValuesScan *from) : { : ValuesScan *newnode = makeNode(ValuesScan); 0.00 : 5e4832: c7 00 75 00 00 00 movl $0x75,(%rax) 0.00 : 5e4838: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e483b: e8 10 32 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e4840: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4844: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(values_lists); 0.00 : 5e4847: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e484b: e8 40 f9 ff ff callq 5e4190 0.00 : 5e4850: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e4854: 48 89 d8 mov %rbx,%rax : case T_FunctionScan: : retval = _copyFunctionScan(from); : break; : case T_ValuesScan: : retval = _copyValuesScan(from); : break; 0.00 : 5e4857: e9 ae f9 ff ff jmpq 5e420a : * _copyCteScan : */ : static CteScan * : _copyCteScan(const CteScan *from) : { : CteScan *newnode = makeNode(CteScan); 0.00 : 5e485c: 48 8b 3d fd 5f 5d 00 mov 0x5d5ffd(%rip),%rdi # bba860 0.00 : 5e4863: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e4868: e8 a3 45 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e486d: 4c 89 ef mov %r13,%rdi : * _copyCteScan : */ : static CteScan * : _copyCteScan(const CteScan *from) : { : CteScan *newnode = makeNode(CteScan); 0.00 : 5e4870: c7 00 76 00 00 00 movl $0x76,(%rax) : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4876: 48 89 c6 mov %rax,%rsi : * _copyCteScan : */ : static CteScan * : _copyCteScan(const CteScan *from) : { : CteScan *newnode = makeNode(CteScan); 0.00 : 5e4879: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e487c: e8 cf 31 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e4881: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4885: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(ctePlanId); 0.00 : 5e4888: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e488c: 89 43 68 mov %eax,0x68(%rbx) : COPY_SCALAR_FIELD(cteParam); 0.00 : 5e488f: 41 8b 45 6c mov 0x6c(%r13),%eax 0.00 : 5e4893: 89 43 6c mov %eax,0x6c(%rbx) 0.00 : 5e4896: 48 89 d8 mov %rbx,%rax : case T_ValuesScan: : retval = _copyValuesScan(from); : break; : case T_CteScan: : retval = _copyCteScan(from); : break; 0.00 : 5e4899: e9 6c f9 ff ff jmpq 5e420a : * _copyWorkTableScan : */ : static WorkTableScan * : _copyWorkTableScan(const WorkTableScan *from) : { : WorkTableScan *newnode = makeNode(WorkTableScan); 0.00 : 5e489e: 48 8b 3d bb 5f 5d 00 mov 0x5d5fbb(%rip),%rdi # bba860 0.00 : 5e48a5: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e48aa: e8 61 45 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e48af: 4c 89 ef mov %r13,%rdi : * _copyWorkTableScan : */ : static WorkTableScan * : _copyWorkTableScan(const WorkTableScan *from) : { : WorkTableScan *newnode = makeNode(WorkTableScan); 0.00 : 5e48b2: c7 00 77 00 00 00 movl $0x77,(%rax) : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e48b8: 48 89 c6 mov %rax,%rsi : * _copyWorkTableScan : */ : static WorkTableScan * : _copyWorkTableScan(const WorkTableScan *from) : { : WorkTableScan *newnode = makeNode(WorkTableScan); 0.00 : 5e48bb: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e48be: e8 8d 31 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e48c3: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e48c7: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(wtParam); 0.00 : 5e48ca: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e48ce: 89 43 68 mov %eax,0x68(%rbx) 0.00 : 5e48d1: 48 89 d8 mov %rbx,%rax : case T_CteScan: : retval = _copyCteScan(from); : break; : case T_WorkTableScan: : retval = _copyWorkTableScan(from); : break; 0.00 : 5e48d4: e9 31 f9 ff ff jmpq 5e420a : * _copyForeignScan : */ : static ForeignScan * : _copyForeignScan(const ForeignScan *from) : { : ForeignScan *newnode = makeNode(ForeignScan); 0.00 : 5e48d9: 48 8b 3d 80 5f 5d 00 mov 0x5d5f80(%rip),%rdi # bba860 0.00 : 5e48e0: be 80 00 00 00 mov $0x80,%esi 0.00 : 5e48e5: e8 26 45 1b 00 callq 798e10 : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e48ea: 4c 89 ef mov %r13,%rdi 0.00 : 5e48ed: 48 89 c6 mov %rax,%rsi : * _copyForeignScan : */ : static ForeignScan * : _copyForeignScan(const ForeignScan *from) : { : ForeignScan *newnode = makeNode(ForeignScan); 0.00 : 5e48f0: c7 00 78 00 00 00 movl $0x78,(%rax) 0.00 : 5e48f6: 48 89 c3 mov %rax,%rbx : * all the copy functions for classes which inherit from Scan. : */ : static void : CopyScanFields(const Scan *from, Scan *newnode) : { : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e48f9: e8 52 31 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(scanrelid); 0.00 : 5e48fe: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4902: 89 43 60 mov %eax,0x60(%rbx) : CopyScanFields((const Scan *) from, (Scan *) newnode); : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(fdw_exprs); 0.00 : 5e4905: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e4909: e8 82 f8 ff ff callq 5e4190 0.00 : 5e490e: 48 89 43 68 mov %rax,0x68(%rbx) : COPY_NODE_FIELD(fdw_private); 0.00 : 5e4912: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e4916: e8 75 f8 ff ff callq 5e4190 0.00 : 5e491b: 48 89 43 70 mov %rax,0x70(%rbx) : COPY_SCALAR_FIELD(fsSystemCol); 0.00 : 5e491f: 41 0f b6 45 78 movzbl 0x78(%r13),%eax 0.00 : 5e4924: 88 43 78 mov %al,0x78(%rbx) 0.00 : 5e4927: 48 89 d8 mov %rbx,%rax : case T_WorkTableScan: : retval = _copyWorkTableScan(from); : break; : case T_ForeignScan: : retval = _copyForeignScan(from); : break; 0.00 : 5e492a: e9 db f8 ff ff jmpq 5e420a : * _copyJoin : */ : static Join * : _copyJoin(const Join *from) : { : Join *newnode = makeNode(Join); 0.00 : 5e492f: 48 8b 3d 2a 5f 5d 00 mov 0x5d5f2a(%rip),%rdi # bba860 0.00 : 5e4936: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e493b: e8 d0 44 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyJoinFields(from, newnode); 0.00 : 5e4940: 4c 89 ef mov %r13,%rdi : * _copyJoin : */ : static Join * : _copyJoin(const Join *from) : { : Join *newnode = makeNode(Join); 0.00 : 5e4943: 48 89 c3 mov %rax,%rbx 0.00 : 5e4946: c7 00 79 00 00 00 movl $0x79,(%rax) : : /* : * copy node superclass fields : */ : CopyJoinFields(from, newnode); 0.00 : 5e494c: 48 89 c6 mov %rax,%rsi 0.00 : 5e494f: e8 9c 31 00 00 callq 5e7af0 0.00 : 5e4954: 48 89 d8 mov %rbx,%rax : case T_ForeignScan: : retval = _copyForeignScan(from); : break; : case T_Join: : retval = _copyJoin(from); : break; 0.00 : 5e4957: e9 ae f8 ff ff jmpq 5e420a : * _copyNestLoop : */ : static NestLoop * : _copyNestLoop(const NestLoop *from) : { : NestLoop *newnode = makeNode(NestLoop); 0.00 : 5e495c: 48 8b 3d fd 5e 5d 00 mov 0x5d5efd(%rip),%rdi # bba860 0.00 : 5e4963: be 78 00 00 00 mov $0x78,%esi 0.00 : 5e4968: e8 a3 44 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e496d: 4c 89 ef mov %r13,%rdi : * _copyNestLoop : */ : static NestLoop * : _copyNestLoop(const NestLoop *from) : { : NestLoop *newnode = makeNode(NestLoop); 0.00 : 5e4970: c7 00 7a 00 00 00 movl $0x7a,(%rax) : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e4976: 48 89 c6 mov %rax,%rsi : * _copyNestLoop : */ : static NestLoop * : _copyNestLoop(const NestLoop *from) : { : NestLoop *newnode = makeNode(NestLoop); 0.00 : 5e4979: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e497c: e8 6f 31 00 00 callq 5e7af0 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(nestParams); 0.00 : 5e4981: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e4985: e8 06 f8 ff ff callq 5e4190 0.00 : 5e498a: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e498e: 48 89 d8 mov %rbx,%rax : case T_Join: : retval = _copyJoin(from); : break; : case T_NestLoop: : retval = _copyNestLoop(from); : break; 0.00 : 5e4991: e9 74 f8 ff ff jmpq 5e420a : * _copyMergeJoin : */ : static MergeJoin * : _copyMergeJoin(const MergeJoin *from) : { : MergeJoin *newnode = makeNode(MergeJoin); 0.00 : 5e4996: 48 8b 3d c3 5e 5d 00 mov 0x5d5ec3(%rip),%rdi # bba860 0.00 : 5e499d: be 98 00 00 00 mov $0x98,%esi 0.00 : 5e49a2: e8 69 44 1b 00 callq 798e10 : int numCols; : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e49a7: 4c 89 ef mov %r13,%rdi : * _copyMergeJoin : */ : static MergeJoin * : _copyMergeJoin(const MergeJoin *from) : { : MergeJoin *newnode = makeNode(MergeJoin); 0.00 : 5e49aa: c7 00 7b 00 00 00 movl $0x7b,(%rax) : int numCols; : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e49b0: 48 89 c6 mov %rax,%rsi : * _copyMergeJoin : */ : static MergeJoin * : _copyMergeJoin(const MergeJoin *from) : { : MergeJoin *newnode = makeNode(MergeJoin); 0.00 : 5e49b3: 49 89 c6 mov %rax,%r14 : int numCols; : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e49b6: e8 35 31 00 00 callq 5e7af0 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(mergeclauses); 0.00 : 5e49bb: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e49bf: e8 cc f7 ff ff callq 5e4190 0.00 : 5e49c4: 49 89 46 70 mov %rax,0x70(%r14) : numCols = list_length(from->mergeclauses); 0.00 : 5e49c8: 49 8b 45 70 mov 0x70(%r13),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5e49cc: 48 85 c0 test %rax,%rax 0.00 : 5e49cf: 0f 84 d9 2f 00 00 je 5e79ae 0.00 : 5e49d5: 8b 40 04 mov 0x4(%rax),%eax : if (numCols > 0) 0.00 : 5e49d8: 85 c0 test %eax,%eax 0.00 : 5e49da: 0f 8e ce 2f 00 00 jle 5e79ae : { : COPY_POINTER_FIELD(mergeFamilies, numCols * sizeof(Oid)); 0.00 : 5e49e0: 4c 63 e0 movslq %eax,%r12 0.00 : 5e49e3: 4a 8d 1c a5 00 00 00 lea 0x0(,%r12,4),%rbx 0.00 : 5e49ea: 00 0.00 : 5e49eb: 48 89 df mov %rbx,%rdi 0.00 : 5e49ee: e8 5d 43 1b 00 callq 798d50 0.00 : 5e49f3: 49 89 46 78 mov %rax,0x78(%r14) 0.00 : 5e49f7: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5e49fb: 48 89 da mov %rbx,%rdx 0.00 : 5e49fe: 48 89 c7 mov %rax,%rdi 0.00 : 5e4a01: e8 ea 51 e8 ff callq 469bf0 : COPY_POINTER_FIELD(mergeCollations, numCols * sizeof(Oid)); 0.00 : 5e4a06: 48 89 df mov %rbx,%rdi 0.00 : 5e4a09: e8 42 43 1b 00 callq 798d50 0.00 : 5e4a0e: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 5e4a15: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 5e4a1c: 48 89 da mov %rbx,%rdx 0.00 : 5e4a1f: 48 89 c7 mov %rax,%rdi 0.00 : 5e4a22: e8 c9 51 e8 ff callq 469bf0 : COPY_POINTER_FIELD(mergeStrategies, numCols * sizeof(int)); 0.00 : 5e4a27: 48 89 df mov %rbx,%rdi 0.00 : 5e4a2a: e8 21 43 1b 00 callq 798d50 0.00 : 5e4a2f: 49 89 86 88 00 00 00 mov %rax,0x88(%r14) 0.00 : 5e4a36: 49 8b b5 88 00 00 00 mov 0x88(%r13),%rsi 0.00 : 5e4a3d: 48 89 da mov %rbx,%rdx 0.00 : 5e4a40: 48 89 c7 mov %rax,%rdi 0.00 : 5e4a43: e8 a8 51 e8 ff callq 469bf0 : COPY_POINTER_FIELD(mergeNullsFirst, numCols * sizeof(bool)); 0.00 : 5e4a48: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4a4b: e8 00 43 1b 00 callq 798d50 0.00 : 5e4a50: 49 89 86 90 00 00 00 mov %rax,0x90(%r14) 0.00 : 5e4a57: 49 8b b5 90 00 00 00 mov 0x90(%r13),%rsi 0.00 : 5e4a5e: 48 89 c7 mov %rax,%rdi 0.00 : 5e4a61: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4a64: e8 87 51 e8 ff callq 469bf0 0.00 : 5e4a69: 4c 89 f0 mov %r14,%rax 0.00 : 5e4a6c: e9 99 f7 ff ff jmpq 5e420a : * _copyHashJoin : */ : static HashJoin * : _copyHashJoin(const HashJoin *from) : { : HashJoin *newnode = makeNode(HashJoin); 0.00 : 5e4a71: 48 8b 3d e8 5d 5d 00 mov 0x5d5de8(%rip),%rdi # bba860 0.00 : 5e4a78: be 78 00 00 00 mov $0x78,%esi 0.00 : 5e4a7d: e8 8e 43 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e4a82: 4c 89 ef mov %r13,%rdi : * _copyHashJoin : */ : static HashJoin * : _copyHashJoin(const HashJoin *from) : { : HashJoin *newnode = makeNode(HashJoin); 0.00 : 5e4a85: c7 00 7c 00 00 00 movl $0x7c,(%rax) : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e4a8b: 48 89 c6 mov %rax,%rsi : * _copyHashJoin : */ : static HashJoin * : _copyHashJoin(const HashJoin *from) : { : HashJoin *newnode = makeNode(HashJoin); 0.00 : 5e4a8e: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyJoinFields((const Join *) from, (Join *) newnode); 0.00 : 5e4a91: e8 5a 30 00 00 callq 5e7af0 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(hashclauses); 0.00 : 5e4a96: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e4a9a: e8 f1 f6 ff ff callq 5e4190 0.00 : 5e4a9f: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e4aa3: 48 89 d8 mov %rbx,%rax : case T_MergeJoin: : retval = _copyMergeJoin(from); : break; : case T_HashJoin: : retval = _copyHashJoin(from); : break; 0.00 : 5e4aa6: e9 5f f7 ff ff jmpq 5e420a : * _copySetOp : */ : static SetOp * : _copySetOp(const SetOp *from) : { : SetOp *newnode = makeNode(SetOp); 0.00 : 5e4aab: 48 8b 3d ae 5d 5d 00 mov 0x5d5dae(%rip),%rdi # bba860 0.00 : 5e4ab2: be 90 00 00 00 mov $0x90,%esi 0.00 : 5e4ab7: e8 54 43 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4abc: 4c 89 ef mov %r13,%rdi 0.00 : 5e4abf: 48 89 c6 mov %rax,%rsi : * _copySetOp : */ : static SetOp * : _copySetOp(const SetOp *from) : { : SetOp *newnode = makeNode(SetOp); 0.00 : 5e4ac2: c7 00 84 00 00 00 movl $0x84,(%rax) 0.00 : 5e4ac8: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4acb: e8 80 2f 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(cmd); 0.00 : 5e4ad0: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4ad4: 89 43 60 mov %eax,0x60(%rbx) : COPY_SCALAR_FIELD(strategy); 0.00 : 5e4ad7: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5e4adb: 89 43 64 mov %eax,0x64(%rbx) : COPY_SCALAR_FIELD(numCols); 0.00 : 5e4ade: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e4ae2: 89 43 68 mov %eax,0x68(%rbx) : COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); 0.00 : 5e4ae5: 49 63 45 68 movslq 0x68(%r13),%rax 0.00 : 5e4ae9: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e4aed: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4af0: e8 5b 42 1b 00 callq 798d50 0.00 : 5e4af5: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e4af9: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e4afd: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4b00: 48 89 c7 mov %rax,%rdi 0.00 : 5e4b03: e8 e8 50 e8 ff callq 469bf0 : COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); 0.00 : 5e4b08: 49 63 45 68 movslq 0x68(%r13),%rax 0.00 : 5e4b0c: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e4b13: 00 0.00 : 5e4b14: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4b17: e8 34 42 1b 00 callq 798d50 0.00 : 5e4b1c: 48 89 43 78 mov %rax,0x78(%rbx) 0.00 : 5e4b20: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5e4b24: 48 89 c7 mov %rax,%rdi 0.00 : 5e4b27: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4b2a: e8 c1 50 e8 ff callq 469bf0 : COPY_SCALAR_FIELD(flagColIdx); 0.00 : 5e4b2f: 41 0f b7 85 80 00 00 movzwl 0x80(%r13),%eax 0.00 : 5e4b36: 00 0.00 : 5e4b37: 66 89 83 80 00 00 00 mov %ax,0x80(%rbx) : COPY_SCALAR_FIELD(firstFlag); 0.00 : 5e4b3e: 41 8b 85 84 00 00 00 mov 0x84(%r13),%eax 0.00 : 5e4b45: 89 83 84 00 00 00 mov %eax,0x84(%rbx) : COPY_SCALAR_FIELD(numGroups); 0.00 : 5e4b4b: 49 8b 85 88 00 00 00 mov 0x88(%r13),%rax 0.00 : 5e4b52: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) 0.00 : 5e4b59: 48 89 d8 mov %rbx,%rax : case T_Hash: : retval = _copyHash(from); : break; : case T_SetOp: : retval = _copySetOp(from); : break; 0.00 : 5e4b5c: e9 a9 f6 ff ff jmpq 5e420a : * _copyLockRows : */ : static LockRows * : _copyLockRows(const LockRows *from) : { : LockRows *newnode = makeNode(LockRows); 0.00 : 5e4b61: 48 8b 3d f8 5c 5d 00 mov 0x5d5cf8(%rip),%rdi # bba860 0.00 : 5e4b68: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e4b6d: e8 9e 42 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4b72: 4c 89 ef mov %r13,%rdi : * _copyLockRows : */ : static LockRows * : _copyLockRows(const LockRows *from) : { : LockRows *newnode = makeNode(LockRows); 0.00 : 5e4b75: c7 00 85 00 00 00 movl $0x85,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4b7b: 48 89 c6 mov %rax,%rsi : * _copyLockRows : */ : static LockRows * : _copyLockRows(const LockRows *from) : { : LockRows *newnode = makeNode(LockRows); 0.00 : 5e4b7e: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4b81: e8 ca 2e 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(rowMarks); 0.00 : 5e4b86: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e4b8a: e8 01 f6 ff ff callq 5e4190 0.00 : 5e4b8f: 48 89 43 60 mov %rax,0x60(%rbx) : COPY_SCALAR_FIELD(epqParam); 0.00 : 5e4b93: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e4b97: 89 43 68 mov %eax,0x68(%rbx) 0.00 : 5e4b9a: 48 89 d8 mov %rbx,%rax : case T_SetOp: : retval = _copySetOp(from); : break; : case T_LockRows: : retval = _copyLockRows(from); : break; 0.00 : 5e4b9d: e9 68 f6 ff ff jmpq 5e420a : * _copyLimit : */ : static Limit * : _copyLimit(const Limit *from) : { : Limit *newnode = makeNode(Limit); 0.00 : 5e4ba2: 48 8b 3d b7 5c 5d 00 mov 0x5d5cb7(%rip),%rdi # bba860 0.00 : 5e4ba9: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e4bae: e8 5d 42 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4bb3: 4c 89 ef mov %r13,%rdi 0.00 : 5e4bb6: 48 89 c6 mov %rax,%rsi : * _copyLimit : */ : static Limit * : _copyLimit(const Limit *from) : { : Limit *newnode = makeNode(Limit); 0.00 : 5e4bb9: c7 00 86 00 00 00 movl $0x86,(%rax) 0.00 : 5e4bbf: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4bc2: e8 89 2e 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_NODE_FIELD(limitOffset); 0.00 : 5e4bc7: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e4bcb: e8 c0 f5 ff ff callq 5e4190 0.00 : 5e4bd0: 48 89 43 60 mov %rax,0x60(%rbx) : COPY_NODE_FIELD(limitCount); 0.00 : 5e4bd4: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e4bd8: e8 b3 f5 ff ff callq 5e4190 0.00 : 5e4bdd: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e4be1: 48 89 d8 mov %rbx,%rax : case T_LockRows: : retval = _copyLockRows(from); : break; : case T_Limit: : retval = _copyLimit(from); : break; 0.00 : 5e4be4: e9 21 f6 ff ff jmpq 5e420a : * _copyNestLoopParam : */ : static NestLoopParam * : _copyNestLoopParam(const NestLoopParam *from) : { : NestLoopParam *newnode = makeNode(NestLoopParam); 0.00 : 5e4be9: 48 8b 3d 70 5c 5d 00 mov 0x5d5c70(%rip),%rdi # bba860 0.00 : 5e4bf0: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e4bf5: e8 16 42 1b 00 callq 798e10 0.00 : 5e4bfa: 48 89 c3 mov %rax,%rbx 0.00 : 5e4bfd: c7 00 87 00 00 00 movl $0x87,(%rax) : : COPY_SCALAR_FIELD(paramno); 0.00 : 5e4c03: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e4c07: 89 43 04 mov %eax,0x4(%rbx) : COPY_NODE_FIELD(paramval); 0.00 : 5e4c0a: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e4c0e: e8 7d f5 ff ff callq 5e4190 0.00 : 5e4c13: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e4c17: 48 89 d8 mov %rbx,%rax : case T_Limit: : retval = _copyLimit(from); : break; : case T_NestLoopParam: : retval = _copyNestLoopParam(from); : break; 0.00 : 5e4c1a: e9 eb f5 ff ff jmpq 5e420a : * _copyPlanRowMark : */ : static PlanRowMark * : _copyPlanRowMark(const PlanRowMark *from) : { : PlanRowMark *newnode = makeNode(PlanRowMark); 0.00 : 5e4c1f: 48 8b 3d 3a 5c 5d 00 mov 0x5d5c3a(%rip),%rdi # bba860 0.00 : 5e4c26: be 1c 00 00 00 mov $0x1c,%esi 0.00 : 5e4c2b: e8 f0 43 1b 00 callq 799020 0.00 : 5e4c30: c7 00 88 00 00 00 movl $0x88,(%rax) : : COPY_SCALAR_FIELD(rti); 0.00 : 5e4c36: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e4c3a: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(prti); 0.00 : 5e4c3d: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e4c41: 89 50 08 mov %edx,0x8(%rax) : COPY_SCALAR_FIELD(rowmarkId); 0.00 : 5e4c44: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e4c48: 89 50 0c mov %edx,0xc(%rax) : COPY_SCALAR_FIELD(markType); 0.00 : 5e4c4b: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5e4c4f: 89 50 10 mov %edx,0x10(%rax) : COPY_SCALAR_FIELD(waitPolicy); 0.00 : 5e4c52: 41 8b 55 14 mov 0x14(%r13),%edx 0.00 : 5e4c56: 89 50 14 mov %edx,0x14(%rax) : COPY_SCALAR_FIELD(isParent); 0.00 : 5e4c59: 41 0f b6 55 18 movzbl 0x18(%r13),%edx 0.00 : 5e4c5e: 88 50 18 mov %dl,0x18(%rax) : case T_NestLoopParam: : retval = _copyNestLoopParam(from); : break; : case T_PlanRowMark: : retval = _copyPlanRowMark(from); : break; 0.00 : 5e4c61: e9 a4 f5 ff ff jmpq 5e420a : * _copyPlanInvalItem : */ : static PlanInvalItem * : _copyPlanInvalItem(const PlanInvalItem *from) : { : PlanInvalItem *newnode = makeNode(PlanInvalItem); 0.00 : 5e4c66: 48 8b 3d f3 5b 5d 00 mov 0x5d5bf3(%rip),%rdi # bba860 0.00 : 5e4c6d: be 0c 00 00 00 mov $0xc,%esi 0.00 : 5e4c72: e8 a9 43 1b 00 callq 799020 0.00 : 5e4c77: c7 00 89 00 00 00 movl $0x89,(%rax) : : COPY_SCALAR_FIELD(cacheId); 0.00 : 5e4c7d: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e4c81: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(hashValue); 0.00 : 5e4c84: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e4c88: 89 50 08 mov %edx,0x8(%rax) : case T_PlanRowMark: : retval = _copyPlanRowMark(from); : break; : case T_PlanInvalItem: : retval = _copyPlanInvalItem(from); : break; 0.00 : 5e4c8b: e9 7a f5 ff ff jmpq 5e420a : * _copyAlias : */ : static Alias * : _copyAlias(const Alias *from) : { : Alias *newnode = makeNode(Alias); 0.00 : 5e4c90: 48 8b 3d c9 5b 5d 00 mov 0x5d5bc9(%rip),%rdi # bba860 0.00 : 5e4c97: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e4c9c: e8 6f 41 1b 00 callq 798e10 0.00 : 5e4ca1: c7 00 2c 01 00 00 movl $0x12c,(%rax) : : COPY_STRING_FIELD(aliasname); 0.00 : 5e4ca7: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyAlias : */ : static Alias * : _copyAlias(const Alias *from) : { : Alias *newnode = makeNode(Alias); 0.00 : 5e4cab: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(aliasname); 0.00 : 5e4cae: 31 c0 xor %eax,%eax 0.00 : 5e4cb0: 48 85 ff test %rdi,%rdi 0.00 : 5e4cb3: 74 05 je 5e4cba 0.00 : 5e4cb5: e8 96 42 1b 00 callq 798f50 0.00 : 5e4cba: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(colnames); 0.00 : 5e4cbe: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e4cc2: e8 c9 f4 ff ff callq 5e4190 0.00 : 5e4cc7: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e4ccb: 48 89 d8 mov %rbx,%rax : /* : * PRIMITIVE NODES : */ : case T_Alias: : retval = _copyAlias(from); : break; 0.00 : 5e4cce: e9 37 f5 ff ff jmpq 5e420a : * _copyRangeVar : */ : static RangeVar * : _copyRangeVar(const RangeVar *from) : { : RangeVar *newnode = makeNode(RangeVar); 0.00 : 5e4cd3: 48 8b 3d 86 5b 5d 00 mov 0x5d5b86(%rip),%rdi # bba860 0.00 : 5e4cda: be 38 00 00 00 mov $0x38,%esi 0.00 : 5e4cdf: e8 2c 41 1b 00 callq 798e10 0.00 : 5e4ce4: c7 00 2d 01 00 00 movl $0x12d,(%rax) : : COPY_STRING_FIELD(catalogname); 0.00 : 5e4cea: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyRangeVar : */ : static RangeVar * : _copyRangeVar(const RangeVar *from) : { : RangeVar *newnode = makeNode(RangeVar); 0.00 : 5e4cee: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(catalogname); 0.00 : 5e4cf1: 31 c0 xor %eax,%eax 0.00 : 5e4cf3: 48 85 ff test %rdi,%rdi 0.00 : 5e4cf6: 74 05 je 5e4cfd 0.00 : 5e4cf8: e8 53 42 1b 00 callq 798f50 0.00 : 5e4cfd: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_STRING_FIELD(schemaname); 0.00 : 5e4d01: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e4d05: 31 c0 xor %eax,%eax 0.00 : 5e4d07: 48 85 ff test %rdi,%rdi 0.00 : 5e4d0a: 74 05 je 5e4d11 0.00 : 5e4d0c: e8 3f 42 1b 00 callq 798f50 0.00 : 5e4d11: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_STRING_FIELD(relname); 0.00 : 5e4d15: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e4d19: 31 c0 xor %eax,%eax 0.00 : 5e4d1b: 48 85 ff test %rdi,%rdi 0.00 : 5e4d1e: 74 05 je 5e4d25 0.00 : 5e4d20: e8 2b 42 1b 00 callq 798f50 0.00 : 5e4d25: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_SCALAR_FIELD(inhOpt); 0.00 : 5e4d29: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e4d2d: 89 43 20 mov %eax,0x20(%rbx) : COPY_SCALAR_FIELD(relpersistence); 0.00 : 5e4d30: 41 0f b6 45 24 movzbl 0x24(%r13),%eax 0.00 : 5e4d35: 88 43 24 mov %al,0x24(%rbx) : COPY_NODE_FIELD(alias); 0.00 : 5e4d38: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e4d3c: e8 4f f4 ff ff callq 5e4190 0.00 : 5e4d41: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e4d45: 41 8b 45 30 mov 0x30(%r13),%eax 0.00 : 5e4d49: 89 43 30 mov %eax,0x30(%rbx) 0.00 : 5e4d4c: 48 89 d8 mov %rbx,%rax : case T_Alias: : retval = _copyAlias(from); : break; : case T_RangeVar: : retval = _copyRangeVar(from); : break; 0.00 : 5e4d4f: e9 b6 f4 ff ff jmpq 5e420a : * _copyAgg : */ : static Agg * : _copyAgg(const Agg *from) : { : Agg *newnode = makeNode(Agg); 0.00 : 5e4d54: 48 8b 3d 05 5b 5d 00 mov 0x5d5b05(%rip),%rdi # bba860 0.00 : 5e4d5b: be 80 00 00 00 mov $0x80,%esi 0.00 : 5e4d60: e8 ab 40 1b 00 callq 798e10 : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4d65: 4c 89 ef mov %r13,%rdi : * _copyAgg : */ : static Agg * : _copyAgg(const Agg *from) : { : Agg *newnode = makeNode(Agg); 0.00 : 5e4d68: c7 00 80 00 00 00 movl $0x80,(%rax) : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4d6e: 48 89 c6 mov %rax,%rsi : * _copyAgg : */ : static Agg * : _copyAgg(const Agg *from) : { : Agg *newnode = makeNode(Agg); 0.00 : 5e4d71: 48 89 c3 mov %rax,%rbx : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4d74: e8 d7 2c 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(aggstrategy); 0.00 : 5e4d79: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4d7d: 89 43 60 mov %eax,0x60(%rbx) : COPY_SCALAR_FIELD(numCols); 0.00 : 5e4d80: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5e4d84: 89 43 64 mov %eax,0x64(%rbx) : if (from->numCols > 0) 0.00 : 5e4d87: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5e4d8b: 85 c0 test %eax,%eax 0.00 : 5e4d8d: 7e 48 jle 5e4dd7 : { : COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); 0.00 : 5e4d8f: 48 98 cltq 0.00 : 5e4d91: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e4d95: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4d98: e8 b3 3f 1b 00 callq 798d50 0.00 : 5e4d9d: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e4da1: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5e4da5: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4da8: 48 89 c7 mov %rax,%rdi 0.00 : 5e4dab: e8 40 4e e8 ff callq 469bf0 : COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); 0.00 : 5e4db0: 49 63 45 64 movslq 0x64(%r13),%rax 0.00 : 5e4db4: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e4dbb: 00 0.00 : 5e4dbc: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4dbf: e8 8c 3f 1b 00 callq 798d50 0.00 : 5e4dc4: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e4dc8: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e4dcc: 48 89 c7 mov %rax,%rdi 0.00 : 5e4dcf: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4dd2: e8 19 4e e8 ff callq 469bf0 : } : COPY_SCALAR_FIELD(numGroups); 0.00 : 5e4dd7: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 5e4ddb: 48 89 43 78 mov %rax,0x78(%rbx) 0.00 : 5e4ddf: 48 89 d8 mov %rbx,%rax : case T_Group: : retval = _copyGroup(from); : break; : case T_Agg: : retval = _copyAgg(from); : break; 0.00 : 5e4de2: e9 23 f4 ff ff jmpq 5e420a : * _copyWindowAgg : */ : static WindowAgg * : _copyWindowAgg(const WindowAgg *from) : { : WindowAgg *newnode = makeNode(WindowAgg); 0.00 : 5e4de7: 48 8b 3d 72 5a 5d 00 mov 0x5d5a72(%rip),%rdi # bba860 0.00 : 5e4dee: be a8 00 00 00 mov $0xa8,%esi 0.00 : 5e4df3: e8 18 40 1b 00 callq 798e10 : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4df8: 4c 89 ef mov %r13,%rdi : * _copyWindowAgg : */ : static WindowAgg * : _copyWindowAgg(const WindowAgg *from) : { : WindowAgg *newnode = makeNode(WindowAgg); 0.00 : 5e4dfb: c7 00 81 00 00 00 movl $0x81,(%rax) : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4e01: 48 89 c6 mov %rax,%rsi : * _copyWindowAgg : */ : static WindowAgg * : _copyWindowAgg(const WindowAgg *from) : { : WindowAgg *newnode = makeNode(WindowAgg); 0.00 : 5e4e04: 48 89 c3 mov %rax,%rbx : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4e07: e8 44 2c 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(winref); 0.00 : 5e4e0c: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4e10: 89 43 60 mov %eax,0x60(%rbx) : COPY_SCALAR_FIELD(partNumCols); 0.00 : 5e4e13: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5e4e17: 89 43 64 mov %eax,0x64(%rbx) : if (from->partNumCols > 0) 0.00 : 5e4e1a: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5e4e1e: 85 c0 test %eax,%eax 0.00 : 5e4e20: 7e 48 jle 5e4e6a : { : COPY_POINTER_FIELD(partColIdx, from->partNumCols * sizeof(AttrNumber)); 0.00 : 5e4e22: 48 98 cltq 0.00 : 5e4e24: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e4e28: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4e2b: e8 20 3f 1b 00 callq 798d50 0.00 : 5e4e30: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e4e34: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5e4e38: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4e3b: 48 89 c7 mov %rax,%rdi 0.00 : 5e4e3e: e8 ad 4d e8 ff callq 469bf0 : COPY_POINTER_FIELD(partOperators, from->partNumCols * sizeof(Oid)); 0.00 : 5e4e43: 49 63 45 64 movslq 0x64(%r13),%rax 0.00 : 5e4e47: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e4e4e: 00 0.00 : 5e4e4f: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4e52: e8 f9 3e 1b 00 callq 798d50 0.00 : 5e4e57: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e4e5b: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e4e5f: 48 89 c7 mov %rax,%rdi 0.00 : 5e4e62: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4e65: e8 86 4d e8 ff callq 469bf0 : } : COPY_SCALAR_FIELD(ordNumCols); 0.00 : 5e4e6a: 41 8b 45 78 mov 0x78(%r13),%eax 0.00 : 5e4e6e: 89 43 78 mov %eax,0x78(%rbx) : if (from->ordNumCols > 0) 0.00 : 5e4e71: 41 8b 45 78 mov 0x78(%r13),%eax 0.00 : 5e4e75: 85 c0 test %eax,%eax 0.00 : 5e4e77: 7e 54 jle 5e4ecd : { : COPY_POINTER_FIELD(ordColIdx, from->ordNumCols * sizeof(AttrNumber)); 0.00 : 5e4e79: 48 98 cltq 0.00 : 5e4e7b: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e4e7f: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4e82: e8 c9 3e 1b 00 callq 798d50 0.00 : 5e4e87: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) 0.00 : 5e4e8e: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 5e4e95: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4e98: 48 89 c7 mov %rax,%rdi 0.00 : 5e4e9b: e8 50 4d e8 ff callq 469bf0 : COPY_POINTER_FIELD(ordOperators, from->ordNumCols * sizeof(Oid)); 0.00 : 5e4ea0: 49 63 45 78 movslq 0x78(%r13),%rax 0.00 : 5e4ea4: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e4eab: 00 0.00 : 5e4eac: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4eaf: e8 9c 3e 1b 00 callq 798d50 0.00 : 5e4eb4: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) 0.00 : 5e4ebb: 49 8b b5 88 00 00 00 mov 0x88(%r13),%rsi 0.00 : 5e4ec2: 48 89 c7 mov %rax,%rdi 0.00 : 5e4ec5: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4ec8: e8 23 4d e8 ff callq 469bf0 : } : COPY_SCALAR_FIELD(frameOptions); 0.00 : 5e4ecd: 41 8b 85 90 00 00 00 mov 0x90(%r13),%eax 0.00 : 5e4ed4: 89 83 90 00 00 00 mov %eax,0x90(%rbx) : COPY_NODE_FIELD(startOffset); 0.00 : 5e4eda: 49 8b bd 98 00 00 00 mov 0x98(%r13),%rdi 0.00 : 5e4ee1: e8 aa f2 ff ff callq 5e4190 0.00 : 5e4ee6: 48 89 83 98 00 00 00 mov %rax,0x98(%rbx) : COPY_NODE_FIELD(endOffset); 0.00 : 5e4eed: 49 8b bd a0 00 00 00 mov 0xa0(%r13),%rdi 0.00 : 5e4ef4: e8 97 f2 ff ff callq 5e4190 0.00 : 5e4ef9: 48 89 83 a0 00 00 00 mov %rax,0xa0(%rbx) 0.00 : 5e4f00: 48 89 d8 mov %rbx,%rax : case T_Agg: : retval = _copyAgg(from); : break; : case T_WindowAgg: : retval = _copyWindowAgg(from); : break; 0.00 : 5e4f03: e9 02 f3 ff ff jmpq 5e420a : * _copyUnique : */ : static Unique * : _copyUnique(const Unique *from) : { : Unique *newnode = makeNode(Unique); 0.00 : 5e4f08: 48 8b 3d 51 59 5d 00 mov 0x5d5951(%rip),%rdi # bba860 0.00 : 5e4f0f: be 78 00 00 00 mov $0x78,%esi 0.00 : 5e4f14: e8 f7 3e 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4f19: 4c 89 ef mov %r13,%rdi 0.00 : 5e4f1c: 48 89 c6 mov %rax,%rsi : * _copyUnique : */ : static Unique * : _copyUnique(const Unique *from) : { : Unique *newnode = makeNode(Unique); 0.00 : 5e4f1f: c7 00 82 00 00 00 movl $0x82,(%rax) 0.00 : 5e4f25: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4f28: e8 23 2b 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(numCols); 0.00 : 5e4f2d: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4f31: 89 43 60 mov %eax,0x60(%rbx) : COPY_POINTER_FIELD(uniqColIdx, from->numCols * sizeof(AttrNumber)); 0.00 : 5e4f34: 49 63 45 60 movslq 0x60(%r13),%rax 0.00 : 5e4f38: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e4f3c: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4f3f: e8 0c 3e 1b 00 callq 798d50 0.00 : 5e4f44: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e4f48: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5e4f4c: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4f4f: 48 89 c7 mov %rax,%rdi 0.00 : 5e4f52: e8 99 4c e8 ff callq 469bf0 : COPY_POINTER_FIELD(uniqOperators, from->numCols * sizeof(Oid)); 0.00 : 5e4f57: 49 63 45 60 movslq 0x60(%r13),%rax 0.00 : 5e4f5b: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e4f62: 00 0.00 : 5e4f63: 4c 89 e7 mov %r12,%rdi 0.00 : 5e4f66: e8 e5 3d 1b 00 callq 798d50 0.00 : 5e4f6b: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e4f6f: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e4f73: 48 89 c7 mov %rax,%rdi 0.00 : 5e4f76: 4c 89 e2 mov %r12,%rdx 0.00 : 5e4f79: e8 72 4c e8 ff callq 469bf0 0.00 : 5e4f7e: 48 89 d8 mov %rbx,%rax : case T_WindowAgg: : retval = _copyWindowAgg(from); : break; : case T_Unique: : retval = _copyUnique(from); : break; 0.00 : 5e4f81: e9 84 f2 ff ff jmpq 5e420a : * _copyHash : */ : static Hash * : _copyHash(const Hash *from) : { : Hash *newnode = makeNode(Hash); 0.00 : 5e4f86: 48 8b 3d d3 58 5d 00 mov 0x5d58d3(%rip),%rdi # bba860 0.00 : 5e4f8d: be 70 00 00 00 mov $0x70,%esi 0.00 : 5e4f92: e8 79 3e 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4f97: 4c 89 ef mov %r13,%rdi : * _copyHash : */ : static Hash * : _copyHash(const Hash *from) : { : Hash *newnode = makeNode(Hash); 0.00 : 5e4f9a: c7 00 83 00 00 00 movl $0x83,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4fa0: 48 89 c6 mov %rax,%rsi : * _copyHash : */ : static Hash * : _copyHash(const Hash *from) : { : Hash *newnode = makeNode(Hash); 0.00 : 5e4fa3: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4fa6: e8 a5 2a 00 00 callq 5e7a50 : : /* : * copy remainder of node : */ : COPY_SCALAR_FIELD(skewTable); 0.00 : 5e4fab: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e4faf: 89 43 60 mov %eax,0x60(%rbx) : COPY_SCALAR_FIELD(skewColumn); 0.00 : 5e4fb2: 41 0f b7 45 64 movzwl 0x64(%r13),%eax 0.00 : 5e4fb7: 66 89 43 64 mov %ax,0x64(%rbx) : COPY_SCALAR_FIELD(skewInherit); 0.00 : 5e4fbb: 41 0f b6 45 66 movzbl 0x66(%r13),%eax 0.00 : 5e4fc0: 88 43 66 mov %al,0x66(%rbx) : COPY_SCALAR_FIELD(skewColType); 0.00 : 5e4fc3: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5e4fc7: 89 43 68 mov %eax,0x68(%rbx) : COPY_SCALAR_FIELD(skewColTypmod); 0.00 : 5e4fca: 41 8b 45 6c mov 0x6c(%r13),%eax 0.00 : 5e4fce: 89 43 6c mov %eax,0x6c(%rbx) 0.00 : 5e4fd1: 48 89 d8 mov %rbx,%rax : case T_Unique: : retval = _copyUnique(from); : break; : case T_Hash: : retval = _copyHash(from); : break; 0.00 : 5e4fd4: e9 31 f2 ff ff jmpq 5e420a : * _copySort : */ : static Sort * : _copySort(const Sort *from) : { : Sort *newnode = makeNode(Sort); 0.00 : 5e4fd9: 48 8b 3d 80 58 5d 00 mov 0x5d5880(%rip),%rdi # bba860 0.00 : 5e4fe0: be 88 00 00 00 mov $0x88,%esi 0.00 : 5e4fe5: e8 26 3e 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4fea: 4c 89 ef mov %r13,%rdi 0.00 : 5e4fed: 48 89 c6 mov %rax,%rsi : * _copySort : */ : static Sort * : _copySort(const Sort *from) : { : Sort *newnode = makeNode(Sort); 0.00 : 5e4ff0: c7 00 7e 00 00 00 movl $0x7e,(%rax) 0.00 : 5e4ff6: 48 89 c3 mov %rax,%rbx : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e4ff9: e8 52 2a 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(numCols); 0.00 : 5e4ffe: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e5002: 89 43 60 mov %eax,0x60(%rbx) : COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); 0.00 : 5e5005: 49 63 45 60 movslq 0x60(%r13),%rax 0.00 : 5e5009: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e500d: 4c 89 e7 mov %r12,%rdi 0.00 : 5e5010: e8 3b 3d 1b 00 callq 798d50 0.00 : 5e5015: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e5019: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5e501d: 4c 89 e2 mov %r12,%rdx 0.00 : 5e5020: 48 89 c7 mov %rax,%rdi 0.00 : 5e5023: e8 c8 4b e8 ff callq 469bf0 : COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); 0.00 : 5e5028: 49 63 45 60 movslq 0x60(%r13),%rax 0.00 : 5e502c: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e5033: 00 0.00 : 5e5034: 4c 89 e7 mov %r12,%rdi 0.00 : 5e5037: e8 14 3d 1b 00 callq 798d50 0.00 : 5e503c: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e5040: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e5044: 4c 89 e2 mov %r12,%rdx 0.00 : 5e5047: 48 89 c7 mov %rax,%rdi 0.00 : 5e504a: e8 a1 4b e8 ff callq 469bf0 : COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); 0.00 : 5e504f: 49 63 45 60 movslq 0x60(%r13),%rax 0.00 : 5e5053: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e505a: 00 0.00 : 5e505b: 4c 89 e7 mov %r12,%rdi 0.00 : 5e505e: e8 ed 3c 1b 00 callq 798d50 0.00 : 5e5063: 48 89 43 78 mov %rax,0x78(%rbx) 0.00 : 5e5067: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5e506b: 4c 89 e2 mov %r12,%rdx 0.00 : 5e506e: 48 89 c7 mov %rax,%rdi 0.00 : 5e5071: e8 7a 4b e8 ff callq 469bf0 : COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); 0.00 : 5e5076: 4d 63 65 60 movslq 0x60(%r13),%r12 0.00 : 5e507a: 4c 89 e7 mov %r12,%rdi 0.00 : 5e507d: e8 ce 3c 1b 00 callq 798d50 0.00 : 5e5082: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) 0.00 : 5e5089: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 5e5090: 48 89 c7 mov %rax,%rdi 0.00 : 5e5093: 4c 89 e2 mov %r12,%rdx 0.00 : 5e5096: e8 55 4b e8 ff callq 469bf0 0.00 : 5e509b: 48 89 d8 mov %rbx,%rax : case T_Material: : retval = _copyMaterial(from); : break; : case T_Sort: : retval = _copySort(from); : break; 0.00 : 5e509e: e9 67 f1 ff ff jmpq 5e420a : * _copyGroup : */ : static Group * : _copyGroup(const Group *from) : { : Group *newnode = makeNode(Group); 0.00 : 5e50a3: 48 8b 3d b6 57 5d 00 mov 0x5d57b6(%rip),%rdi # bba860 0.00 : 5e50aa: be 78 00 00 00 mov $0x78,%esi 0.00 : 5e50af: e8 5c 3d 1b 00 callq 798e10 : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e50b4: 4c 89 ef mov %r13,%rdi 0.00 : 5e50b7: 48 89 c6 mov %rax,%rsi : * _copyGroup : */ : static Group * : _copyGroup(const Group *from) : { : Group *newnode = makeNode(Group); 0.00 : 5e50ba: c7 00 7f 00 00 00 movl $0x7f,(%rax) 0.00 : 5e50c0: 48 89 c3 mov %rax,%rbx : : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e50c3: e8 88 29 00 00 callq 5e7a50 : : COPY_SCALAR_FIELD(numCols); 0.00 : 5e50c8: 41 8b 45 60 mov 0x60(%r13),%eax 0.00 : 5e50cc: 89 43 60 mov %eax,0x60(%rbx) : COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); 0.00 : 5e50cf: 49 63 45 60 movslq 0x60(%r13),%rax 0.00 : 5e50d3: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : 5e50d7: 4c 89 e7 mov %r12,%rdi 0.00 : 5e50da: e8 71 3c 1b 00 callq 798d50 0.00 : 5e50df: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e50e3: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5e50e7: 4c 89 e2 mov %r12,%rdx 0.00 : 5e50ea: 48 89 c7 mov %rax,%rdi 0.00 : 5e50ed: e8 fe 4a e8 ff callq 469bf0 : COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); 0.00 : 5e50f2: 49 63 45 60 movslq 0x60(%r13),%rax 0.00 : 5e50f6: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 5e50fd: 00 0.00 : 5e50fe: 4c 89 e7 mov %r12,%rdi 0.00 : 5e5101: e8 4a 3c 1b 00 callq 798d50 0.00 : 5e5106: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e510a: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5e510e: 48 89 c7 mov %rax,%rdi 0.00 : 5e5111: 4c 89 e2 mov %r12,%rdx 0.00 : 5e5114: e8 d7 4a e8 ff callq 469bf0 0.00 : 5e5119: 48 89 d8 mov %rbx,%rax : case T_Sort: : retval = _copySort(from); : break; : case T_Group: : retval = _copyGroup(from); : break; 0.00 : 5e511c: e9 e9 f0 ff ff jmpq 5e420a : * _copyMaterial : */ : static Material * : _copyMaterial(const Material *from) : { : Material *newnode = makeNode(Material); 0.00 : 5e5121: 48 8b 3d 38 57 5d 00 mov 0x5d5738(%rip),%rdi # bba860 0.00 : 5e5128: be 60 00 00 00 mov $0x60,%esi 0.00 : 5e512d: e8 de 3c 1b 00 callq 798e10 : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e5132: 4c 89 ef mov %r13,%rdi : * _copyMaterial : */ : static Material * : _copyMaterial(const Material *from) : { : Material *newnode = makeNode(Material); 0.00 : 5e5135: 48 89 c3 mov %rax,%rbx 0.00 : 5e5138: c7 00 7d 00 00 00 movl $0x7d,(%rax) : : /* : * copy node superclass fields : */ : CopyPlanFields((const Plan *) from, (Plan *) newnode); 0.00 : 5e513e: 48 89 c6 mov %rax,%rsi 0.00 : 5e5141: e8 0a 29 00 00 callq 5e7a50 0.00 : 5e5146: 48 89 d8 mov %rbx,%rax : case T_HashJoin: : retval = _copyHashJoin(from); : break; : case T_Material: : retval = _copyMaterial(from); : break; 0.00 : 5e5149: e9 bc f0 ff ff jmpq 5e420a : * _copyVar : */ : static Var * : _copyVar(const Var *from) : { : Var *newnode = makeNode(Var); 0.00 : 5e514e: 48 8b 3d 0b 57 5d 00 mov 0x5d570b(%rip),%rdi # bba860 0.00 : 5e5155: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e515a: e8 b1 3c 1b 00 callq 798e10 0.00 : 5e515f: c7 00 2f 01 00 00 movl $0x12f,(%rax) : : COPY_SCALAR_FIELD(varno); 0.00 : 5e5165: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e5169: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(varattno); 0.00 : 5e516c: 41 0f b7 55 08 movzwl 0x8(%r13),%edx 0.00 : 5e5171: 66 89 50 08 mov %dx,0x8(%rax) : COPY_SCALAR_FIELD(vartype); 0.00 : 5e5175: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e5179: 89 50 0c mov %edx,0xc(%rax) : COPY_SCALAR_FIELD(vartypmod); 0.00 : 5e517c: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5e5180: 89 50 10 mov %edx,0x10(%rax) : COPY_SCALAR_FIELD(varcollid); 0.00 : 5e5183: 41 8b 55 14 mov 0x14(%r13),%edx 0.00 : 5e5187: 89 50 14 mov %edx,0x14(%rax) : COPY_SCALAR_FIELD(varlevelsup); 0.00 : 5e518a: 41 8b 55 18 mov 0x18(%r13),%edx 0.00 : 5e518e: 89 50 18 mov %edx,0x18(%rax) : COPY_SCALAR_FIELD(varnoold); 0.00 : 5e5191: 41 8b 55 1c mov 0x1c(%r13),%edx 0.00 : 5e5195: 89 50 1c mov %edx,0x1c(%rax) : COPY_SCALAR_FIELD(varoattno); 0.00 : 5e5198: 41 0f b7 55 20 movzwl 0x20(%r13),%edx 0.00 : 5e519d: 66 89 50 20 mov %dx,0x20(%rax) : COPY_LOCATION_FIELD(location); 0.00 : 5e51a1: 41 8b 55 24 mov 0x24(%r13),%edx 0.00 : 5e51a5: 89 50 24 mov %edx,0x24(%rax) : case T_IntoClause: : retval = _copyIntoClause(from); : break; : case T_Var: : retval = _copyVar(from); : break; 0.00 : 5e51a8: e9 5d f0 ff ff jmpq 5e420a : * _copyConst : */ : static Const * : _copyConst(const Const *from) : { : Const *newnode = makeNode(Const); 0.00 : 5e51ad: 48 8b 3d ac 56 5d 00 mov 0x5d56ac(%rip),%rdi # bba860 0.00 : 5e51b4: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e51b9: e8 52 3c 1b 00 callq 798e10 0.00 : 5e51be: c7 00 30 01 00 00 movl $0x130,(%rax) 0.00 : 5e51c4: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(consttype); 0.00 : 5e51c7: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e51cb: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(consttypmod); 0.00 : 5e51ce: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e51d2: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(constcollid); 0.00 : 5e51d5: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e51d9: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(constlen); 0.00 : 5e51dc: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e51e0: 89 43 10 mov %eax,0x10(%rbx) : : if (from->constbyval || from->constisnull) 0.00 : 5e51e3: 66 41 83 7d 20 00 cmpw $0x0,0x20(%r13) 0.00 : 5e51e9: 0f 84 f6 27 00 00 je 5e79e5 : { : /* : * passed by value so just copy the datum. Also, don't try to copy : * struct when value is null! : */ : newnode->constvalue = from->constvalue; 0.00 : 5e51ef: 49 8b 45 18 mov 0x18(%r13),%rax 0.00 : 5e51f3: 48 89 43 18 mov %rax,0x18(%rbx) : newnode->constvalue = datumCopy(from->constvalue, : from->constbyval, : from->constlen); : } : : COPY_SCALAR_FIELD(constisnull); 0.00 : 5e51f7: 41 0f b6 45 20 movzbl 0x20(%r13),%eax 0.00 : 5e51fc: 88 43 20 mov %al,0x20(%rbx) : COPY_SCALAR_FIELD(constbyval); 0.00 : 5e51ff: 41 0f b6 45 21 movzbl 0x21(%r13),%eax 0.00 : 5e5204: 88 43 21 mov %al,0x21(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5207: 41 8b 45 24 mov 0x24(%r13),%eax 0.00 : 5e520b: 89 43 24 mov %eax,0x24(%rbx) 0.00 : 5e520e: 48 89 d8 mov %rbx,%rax : case T_Var: : retval = _copyVar(from); : break; : case T_Const: : retval = _copyConst(from); : break; 0.00 : 5e5211: e9 f4 ef ff ff jmpq 5e420a : * _copyParam : */ : static Param * : _copyParam(const Param *from) : { : Param *newnode = makeNode(Param); 0.00 : 5e5216: 48 8b 3d 43 56 5d 00 mov 0x5d5643(%rip),%rdi # bba860 0.00 : 5e521d: be 1c 00 00 00 mov $0x1c,%esi 0.00 : 5e5222: e8 f9 3d 1b 00 callq 799020 0.00 : 5e5227: c7 00 31 01 00 00 movl $0x131,(%rax) : : COPY_SCALAR_FIELD(paramkind); 0.00 : 5e522d: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e5231: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(paramid); 0.00 : 5e5234: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e5238: 89 50 08 mov %edx,0x8(%rax) : COPY_SCALAR_FIELD(paramtype); 0.00 : 5e523b: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e523f: 89 50 0c mov %edx,0xc(%rax) : COPY_SCALAR_FIELD(paramtypmod); 0.00 : 5e5242: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5e5246: 89 50 10 mov %edx,0x10(%rax) : COPY_SCALAR_FIELD(paramcollid); 0.00 : 5e5249: 41 8b 55 14 mov 0x14(%r13),%edx 0.00 : 5e524d: 89 50 14 mov %edx,0x14(%rax) : COPY_LOCATION_FIELD(location); 0.00 : 5e5250: 41 8b 55 18 mov 0x18(%r13),%edx 0.00 : 5e5254: 89 50 18 mov %edx,0x18(%rax) : case T_Const: : retval = _copyConst(from); : break; : case T_Param: : retval = _copyParam(from); : break; 0.00 : 5e5257: e9 ae ef ff ff jmpq 5e420a : * _copyAggref : */ : static Aggref * : _copyAggref(const Aggref *from) : { : Aggref *newnode = makeNode(Aggref); 0.00 : 5e525c: 48 8b 3d fd 55 5d 00 mov 0x5d55fd(%rip),%rdi # bba860 0.00 : 5e5263: be 50 00 00 00 mov $0x50,%esi 0.00 : 5e5268: e8 a3 3b 1b 00 callq 798e10 0.00 : 5e526d: 48 89 c3 mov %rax,%rbx 0.00 : 5e5270: c7 00 32 01 00 00 movl $0x132,(%rax) : : COPY_SCALAR_FIELD(aggfnoid); 0.00 : 5e5276: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e527a: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(aggtype); 0.00 : 5e527d: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e5281: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(aggcollid); 0.00 : 5e5284: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e5288: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e528b: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e528f: 89 43 10 mov %eax,0x10(%rbx) : COPY_NODE_FIELD(aggdirectargs); 0.00 : 5e5292: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5296: e8 f5 ee ff ff callq 5e4190 0.00 : 5e529b: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e529f: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e52a3: e8 e8 ee ff ff callq 5e4190 0.00 : 5e52a8: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(aggorder); 0.00 : 5e52ac: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e52b0: e8 db ee ff ff callq 5e4190 0.00 : 5e52b5: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_NODE_FIELD(aggdistinct); 0.00 : 5e52b9: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e52bd: e8 ce ee ff ff callq 5e4190 0.00 : 5e52c2: 48 89 43 30 mov %rax,0x30(%rbx) : COPY_NODE_FIELD(aggfilter); 0.00 : 5e52c6: 49 8b 7d 38 mov 0x38(%r13),%rdi 0.00 : 5e52ca: e8 c1 ee ff ff callq 5e4190 0.00 : 5e52cf: 48 89 43 38 mov %rax,0x38(%rbx) : COPY_SCALAR_FIELD(aggstar); 0.00 : 5e52d3: 41 0f b6 45 40 movzbl 0x40(%r13),%eax 0.00 : 5e52d8: 88 43 40 mov %al,0x40(%rbx) : COPY_SCALAR_FIELD(aggvariadic); 0.00 : 5e52db: 41 0f b6 45 41 movzbl 0x41(%r13),%eax 0.00 : 5e52e0: 88 43 41 mov %al,0x41(%rbx) : COPY_SCALAR_FIELD(aggkind); 0.00 : 5e52e3: 41 0f b6 45 42 movzbl 0x42(%r13),%eax 0.00 : 5e52e8: 88 43 42 mov %al,0x42(%rbx) : COPY_SCALAR_FIELD(agglevelsup); 0.00 : 5e52eb: 41 8b 45 44 mov 0x44(%r13),%eax 0.00 : 5e52ef: 89 43 44 mov %eax,0x44(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e52f2: 41 8b 45 48 mov 0x48(%r13),%eax 0.00 : 5e52f6: 89 43 48 mov %eax,0x48(%rbx) 0.00 : 5e52f9: 48 89 d8 mov %rbx,%rax : case T_Param: : retval = _copyParam(from); : break; : case T_Aggref: : retval = _copyAggref(from); : break; 0.00 : 5e52fc: e9 09 ef ff ff jmpq 5e420a : * _copyWindowFunc : */ : static WindowFunc * : _copyWindowFunc(const WindowFunc *from) : { : WindowFunc *newnode = makeNode(WindowFunc); 0.00 : 5e5301: 48 8b 3d 58 55 5d 00 mov 0x5d5558(%rip),%rdi # bba860 0.00 : 5e5308: be 38 00 00 00 mov $0x38,%esi 0.00 : 5e530d: e8 fe 3a 1b 00 callq 798e10 0.00 : 5e5312: 48 89 c3 mov %rax,%rbx 0.00 : 5e5315: c7 00 33 01 00 00 movl $0x133,(%rax) : : COPY_SCALAR_FIELD(winfnoid); 0.00 : 5e531b: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e531f: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(wintype); 0.00 : 5e5322: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e5326: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(wincollid); 0.00 : 5e5329: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e532d: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e5330: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5334: 89 43 10 mov %eax,0x10(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e5337: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e533b: e8 50 ee ff ff callq 5e4190 0.00 : 5e5340: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(aggfilter); 0.00 : 5e5344: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e5348: e8 43 ee ff ff callq 5e4190 0.00 : 5e534d: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_SCALAR_FIELD(winref); 0.00 : 5e5351: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e5355: 89 43 28 mov %eax,0x28(%rbx) : COPY_SCALAR_FIELD(winstar); 0.00 : 5e5358: 41 0f b6 45 2c movzbl 0x2c(%r13),%eax 0.00 : 5e535d: 88 43 2c mov %al,0x2c(%rbx) : COPY_SCALAR_FIELD(winagg); 0.00 : 5e5360: 41 0f b6 45 2d movzbl 0x2d(%r13),%eax 0.00 : 5e5365: 88 43 2d mov %al,0x2d(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5368: 41 8b 45 30 mov 0x30(%r13),%eax 0.00 : 5e536c: 89 43 30 mov %eax,0x30(%rbx) 0.00 : 5e536f: 48 89 d8 mov %rbx,%rax : case T_Aggref: : retval = _copyAggref(from); : break; : case T_WindowFunc: : retval = _copyWindowFunc(from); : break; 0.00 : 5e5372: e9 93 ee ff ff jmpq 5e420a : * _copyArrayRef : */ : static ArrayRef * : _copyArrayRef(const ArrayRef *from) : { : ArrayRef *newnode = makeNode(ArrayRef); 0.00 : 5e5377: 48 8b 3d e2 54 5d 00 mov 0x5d54e2(%rip),%rdi # bba860 0.00 : 5e537e: be 38 00 00 00 mov $0x38,%esi 0.00 : 5e5383: e8 88 3a 1b 00 callq 798e10 0.00 : 5e5388: 48 89 c3 mov %rax,%rbx 0.00 : 5e538b: c7 00 34 01 00 00 movl $0x134,(%rax) : : COPY_SCALAR_FIELD(refarraytype); 0.00 : 5e5391: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5395: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(refelemtype); 0.00 : 5e5398: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e539c: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(reftypmod); 0.00 : 5e539f: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e53a3: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(refcollid); 0.00 : 5e53a6: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e53aa: 89 43 10 mov %eax,0x10(%rbx) : COPY_NODE_FIELD(refupperindexpr); 0.00 : 5e53ad: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e53b1: e8 da ed ff ff callq 5e4190 0.00 : 5e53b6: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(reflowerindexpr); 0.00 : 5e53ba: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e53be: e8 cd ed ff ff callq 5e4190 0.00 : 5e53c3: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(refexpr); 0.00 : 5e53c7: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e53cb: e8 c0 ed ff ff callq 5e4190 0.00 : 5e53d0: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_NODE_FIELD(refassgnexpr); 0.00 : 5e53d4: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e53d8: e8 b3 ed ff ff callq 5e4190 0.00 : 5e53dd: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e53e1: 48 89 d8 mov %rbx,%rax : case T_WindowFunc: : retval = _copyWindowFunc(from); : break; : case T_ArrayRef: : retval = _copyArrayRef(from); : break; 0.00 : 5e53e4: e9 21 ee ff ff jmpq 5e420a : * _copyFuncExpr : */ : static FuncExpr * : _copyFuncExpr(const FuncExpr *from) : { : FuncExpr *newnode = makeNode(FuncExpr); 0.00 : 5e53e9: 48 8b 3d 70 54 5d 00 mov 0x5d5470(%rip),%rdi # bba860 0.00 : 5e53f0: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e53f5: e8 16 3a 1b 00 callq 798e10 0.00 : 5e53fa: c7 00 35 01 00 00 movl $0x135,(%rax) 0.00 : 5e5400: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(funcid); 0.00 : 5e5403: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5407: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(funcresulttype); 0.00 : 5e540a: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e540e: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(funcretset); 0.00 : 5e5411: 41 0f b6 45 0c movzbl 0xc(%r13),%eax 0.00 : 5e5416: 88 43 0c mov %al,0xc(%rbx) : COPY_SCALAR_FIELD(funcvariadic); 0.00 : 5e5419: 41 0f b6 45 0d movzbl 0xd(%r13),%eax 0.00 : 5e541e: 88 43 0d mov %al,0xd(%rbx) : COPY_SCALAR_FIELD(funcformat); 0.00 : 5e5421: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5425: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(funccollid); 0.00 : 5e5428: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e542c: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e542f: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5433: 89 43 18 mov %eax,0x18(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e5436: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e543a: e8 51 ed ff ff callq 5e4190 0.00 : 5e543f: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5443: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e5447: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e544a: 48 89 d8 mov %rbx,%rax : case T_ArrayRef: : retval = _copyArrayRef(from); : break; : case T_FuncExpr: : retval = _copyFuncExpr(from); : break; 0.00 : 5e544d: e9 b8 ed ff ff jmpq 5e420a : * _copyNamedArgExpr * : */ : static NamedArgExpr * : _copyNamedArgExpr(const NamedArgExpr *from) : { : NamedArgExpr *newnode = makeNode(NamedArgExpr); 0.00 : 5e5452: 48 8b 3d 07 54 5d 00 mov 0x5d5407(%rip),%rdi # bba860 0.00 : 5e5459: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e545e: e8 ad 39 1b 00 callq 798e10 0.00 : 5e5463: c7 00 36 01 00 00 movl $0x136,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e5469: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyNamedArgExpr * : */ : static NamedArgExpr * : _copyNamedArgExpr(const NamedArgExpr *from) : { : NamedArgExpr *newnode = makeNode(NamedArgExpr); 0.00 : 5e546d: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e5470: e8 1b ed ff ff callq 5e4190 0.00 : 5e5475: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_STRING_FIELD(name); 0.00 : 5e5479: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e547d: 31 c0 xor %eax,%eax 0.00 : 5e547f: 48 85 ff test %rdi,%rdi 0.00 : 5e5482: 74 05 je 5e5489 0.00 : 5e5484: e8 c7 3a 1b 00 callq 798f50 0.00 : 5e5489: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_SCALAR_FIELD(argnumber); 0.00 : 5e548d: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5491: 89 43 18 mov %eax,0x18(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5494: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e5498: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 5e549b: 48 89 d8 mov %rbx,%rax : case T_FuncExpr: : retval = _copyFuncExpr(from); : break; : case T_NamedArgExpr: : retval = _copyNamedArgExpr(from); : break; 0.00 : 5e549e: e9 67 ed ff ff jmpq 5e420a : * _copyOpExpr : */ : static OpExpr * : _copyOpExpr(const OpExpr *from) : { : OpExpr *newnode = makeNode(OpExpr); 0.00 : 5e54a3: 48 8b 3d b6 53 5d 00 mov 0x5d53b6(%rip),%rdi # bba860 0.00 : 5e54aa: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e54af: e8 5c 39 1b 00 callq 798e10 0.00 : 5e54b4: c7 00 37 01 00 00 movl $0x137,(%rax) 0.00 : 5e54ba: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(opno); 0.00 : 5e54bd: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e54c1: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(opfuncid); 0.00 : 5e54c4: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e54c8: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(opresulttype); 0.00 : 5e54cb: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e54cf: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(opretset); 0.00 : 5e54d2: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e54d7: 88 43 10 mov %al,0x10(%rbx) : COPY_SCALAR_FIELD(opcollid); 0.00 : 5e54da: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e54de: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e54e1: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e54e5: 89 43 18 mov %eax,0x18(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e54e8: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e54ec: e8 9f ec ff ff callq 5e4190 0.00 : 5e54f1: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e54f5: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e54f9: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e54fc: 48 89 d8 mov %rbx,%rax : case T_NamedArgExpr: : retval = _copyNamedArgExpr(from); : break; : case T_OpExpr: : retval = _copyOpExpr(from); : break; 0.00 : 5e54ff: e9 06 ed ff ff jmpq 5e420a : * _copyDistinctExpr (same as OpExpr) : */ : static DistinctExpr * : _copyDistinctExpr(const DistinctExpr *from) : { : DistinctExpr *newnode = makeNode(DistinctExpr); 0.00 : 5e5504: 48 8b 3d 55 53 5d 00 mov 0x5d5355(%rip),%rdi # bba860 0.00 : 5e550b: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e5510: e8 fb 38 1b 00 callq 798e10 0.00 : 5e5515: c7 00 38 01 00 00 movl $0x138,(%rax) 0.00 : 5e551b: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(opno); 0.00 : 5e551e: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5522: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(opfuncid); 0.00 : 5e5525: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e5529: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(opresulttype); 0.00 : 5e552c: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e5530: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(opretset); 0.00 : 5e5533: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e5538: 88 43 10 mov %al,0x10(%rbx) : COPY_SCALAR_FIELD(opcollid); 0.00 : 5e553b: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e553f: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e5542: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5546: 89 43 18 mov %eax,0x18(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e5549: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e554d: e8 3e ec ff ff callq 5e4190 0.00 : 5e5552: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5556: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e555a: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e555d: 48 89 d8 mov %rbx,%rax : case T_OpExpr: : retval = _copyOpExpr(from); : break; : case T_DistinctExpr: : retval = _copyDistinctExpr(from); : break; 0.00 : 5e5560: e9 a5 ec ff ff jmpq 5e420a : * _copyNullIfExpr (same as OpExpr) : */ : static NullIfExpr * : _copyNullIfExpr(const NullIfExpr *from) : { : NullIfExpr *newnode = makeNode(NullIfExpr); 0.00 : 5e5565: 48 8b 3d f4 52 5d 00 mov 0x5d52f4(%rip),%rdi # bba860 0.00 : 5e556c: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e5571: e8 9a 38 1b 00 callq 798e10 0.00 : 5e5576: c7 00 39 01 00 00 movl $0x139,(%rax) 0.00 : 5e557c: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(opno); 0.00 : 5e557f: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5583: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(opfuncid); 0.00 : 5e5586: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e558a: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(opresulttype); 0.00 : 5e558d: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e5591: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(opretset); 0.00 : 5e5594: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e5599: 88 43 10 mov %al,0x10(%rbx) : COPY_SCALAR_FIELD(opcollid); 0.00 : 5e559c: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e55a0: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e55a3: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e55a7: 89 43 18 mov %eax,0x18(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e55aa: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e55ae: e8 dd eb ff ff callq 5e4190 0.00 : 5e55b3: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e55b7: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e55bb: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e55be: 48 89 d8 mov %rbx,%rax : case T_DistinctExpr: : retval = _copyDistinctExpr(from); : break; : case T_NullIfExpr: : retval = _copyNullIfExpr(from); : break; 0.00 : 5e55c1: e9 44 ec ff ff jmpq 5e420a : * _copyScalarArrayOpExpr : */ : static ScalarArrayOpExpr * : _copyScalarArrayOpExpr(const ScalarArrayOpExpr *from) : { : ScalarArrayOpExpr *newnode = makeNode(ScalarArrayOpExpr); 0.00 : 5e55c6: 48 8b 3d 93 52 5d 00 mov 0x5d5293(%rip),%rdi # bba860 0.00 : 5e55cd: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e55d2: e8 39 38 1b 00 callq 798e10 0.00 : 5e55d7: c7 00 3a 01 00 00 movl $0x13a,(%rax) 0.00 : 5e55dd: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(opno); 0.00 : 5e55e0: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e55e4: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(opfuncid); 0.00 : 5e55e7: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e55eb: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(useOr); 0.00 : 5e55ee: 41 0f b6 45 0c movzbl 0xc(%r13),%eax 0.00 : 5e55f3: 88 43 0c mov %al,0xc(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e55f6: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e55fa: 89 43 10 mov %eax,0x10(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e55fd: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5601: e8 8a eb ff ff callq 5e4190 0.00 : 5e5606: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e560a: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e560e: 89 43 20 mov %eax,0x20(%rbx) 0.00 : 5e5611: 48 89 d8 mov %rbx,%rax : case T_NullIfExpr: : retval = _copyNullIfExpr(from); : break; : case T_ScalarArrayOpExpr: : retval = _copyScalarArrayOpExpr(from); : break; 0.00 : 5e5614: e9 f1 eb ff ff jmpq 5e420a : * _copyBoolExpr : */ : static BoolExpr * : _copyBoolExpr(const BoolExpr *from) : { : BoolExpr *newnode = makeNode(BoolExpr); /home/Computational/mark/src/postgres-andres/src/backend/nodes/copyfuncs.c:1312 33.33 : 5e5619: 48 8b 3d 40 52 5d 00 mov 0x5d5240(%rip),%rdi # bba860 0.00 : 5e5620: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e5625: e8 e6 37 1b 00 callq 798e10 0.00 : 5e562a: 48 89 c3 mov %rax,%rbx 0.00 : 5e562d: c7 00 3b 01 00 00 movl $0x13b,(%rax) : : COPY_SCALAR_FIELD(boolop); 0.00 : 5e5633: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5637: 89 43 04 mov %eax,0x4(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e563a: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e563e: e8 4d eb ff ff callq 5e4190 0.00 : 5e5643: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5647: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e564b: 89 43 10 mov %eax,0x10(%rbx) 0.00 : 5e564e: 48 89 d8 mov %rbx,%rax : case T_ScalarArrayOpExpr: : retval = _copyScalarArrayOpExpr(from); : break; : case T_BoolExpr: : retval = _copyBoolExpr(from); : break; 0.00 : 5e5651: e9 b4 eb ff ff jmpq 5e420a : * _copySubLink : */ : static SubLink * : _copySubLink(const SubLink *from) : { : SubLink *newnode = makeNode(SubLink); 0.00 : 5e5656: 48 8b 3d 03 52 5d 00 mov 0x5d5203(%rip),%rdi # bba860 0.00 : 5e565d: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e5662: e8 a9 37 1b 00 callq 798e10 0.00 : 5e5667: 48 89 c3 mov %rax,%rbx 0.00 : 5e566a: c7 00 3c 01 00 00 movl $0x13c,(%rax) : : COPY_SCALAR_FIELD(subLinkType); 0.00 : 5e5670: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5674: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(subLinkId); 0.00 : 5e5677: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e567b: 89 43 08 mov %eax,0x8(%rbx) : COPY_NODE_FIELD(testexpr); 0.00 : 5e567e: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5682: e8 09 eb ff ff callq 5e4190 0.00 : 5e5687: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(operName); 0.00 : 5e568b: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e568f: e8 fc ea ff ff callq 5e4190 0.00 : 5e5694: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(subselect); 0.00 : 5e5698: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e569c: e8 ef ea ff ff callq 5e4190 0.00 : 5e56a1: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e56a5: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e56a9: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e56ac: 48 89 d8 mov %rbx,%rax : case T_BoolExpr: : retval = _copyBoolExpr(from); : break; : case T_SubLink: : retval = _copySubLink(from); : break; 0.00 : 5e56af: e9 56 eb ff ff jmpq 5e420a : * _copySubPlan : */ : static SubPlan * : _copySubPlan(const SubPlan *from) : { : SubPlan *newnode = makeNode(SubPlan); 0.00 : 5e56b4: 48 8b 3d a5 51 5d 00 mov 0x5d51a5(%rip),%rdi # bba860 0.00 : 5e56bb: be 60 00 00 00 mov $0x60,%esi 0.00 : 5e56c0: e8 4b 37 1b 00 callq 798e10 0.00 : 5e56c5: 48 89 c3 mov %rax,%rbx 0.00 : 5e56c8: c7 00 3d 01 00 00 movl $0x13d,(%rax) : : COPY_SCALAR_FIELD(subLinkType); 0.00 : 5e56ce: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e56d2: 89 43 04 mov %eax,0x4(%rbx) : COPY_NODE_FIELD(testexpr); 0.00 : 5e56d5: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e56d9: e8 b2 ea ff ff callq 5e4190 0.00 : 5e56de: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(paramIds); 0.00 : 5e56e2: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e56e6: e8 a5 ea ff ff callq 5e4190 0.00 : 5e56eb: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_SCALAR_FIELD(plan_id); 0.00 : 5e56ef: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e56f3: 89 43 18 mov %eax,0x18(%rbx) : COPY_STRING_FIELD(plan_name); 0.00 : 5e56f6: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e56fa: 31 c0 xor %eax,%eax 0.00 : 5e56fc: 48 85 ff test %rdi,%rdi 0.00 : 5e56ff: 74 05 je 5e5706 0.00 : 5e5701: e8 4a 38 1b 00 callq 798f50 0.00 : 5e5706: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_SCALAR_FIELD(firstColType); 0.00 : 5e570a: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e570e: 89 43 28 mov %eax,0x28(%rbx) : COPY_SCALAR_FIELD(firstColTypmod); 0.00 : 5e5711: 41 8b 45 2c mov 0x2c(%r13),%eax 0.00 : 5e5715: 89 43 2c mov %eax,0x2c(%rbx) : COPY_SCALAR_FIELD(firstColCollation); 0.00 : 5e5718: 41 8b 45 30 mov 0x30(%r13),%eax 0.00 : 5e571c: 89 43 30 mov %eax,0x30(%rbx) : COPY_SCALAR_FIELD(useHashTable); 0.00 : 5e571f: 41 0f b6 45 34 movzbl 0x34(%r13),%eax 0.00 : 5e5724: 88 43 34 mov %al,0x34(%rbx) : COPY_SCALAR_FIELD(unknownEqFalse); 0.00 : 5e5727: 41 0f b6 45 35 movzbl 0x35(%r13),%eax 0.00 : 5e572c: 88 43 35 mov %al,0x35(%rbx) : COPY_NODE_FIELD(setParam); 0.00 : 5e572f: 49 8b 7d 38 mov 0x38(%r13),%rdi 0.00 : 5e5733: e8 58 ea ff ff callq 5e4190 0.00 : 5e5738: 48 89 43 38 mov %rax,0x38(%rbx) : COPY_NODE_FIELD(parParam); 0.00 : 5e573c: 49 8b 7d 40 mov 0x40(%r13),%rdi 0.00 : 5e5740: e8 4b ea ff ff callq 5e4190 0.00 : 5e5745: 48 89 43 40 mov %rax,0x40(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e5749: 49 8b 7d 48 mov 0x48(%r13),%rdi 0.00 : 5e574d: e8 3e ea ff ff callq 5e4190 0.00 : 5e5752: 48 89 43 48 mov %rax,0x48(%rbx) : COPY_SCALAR_FIELD(startup_cost); 0.00 : 5e5756: 49 8b 45 50 mov 0x50(%r13),%rax 0.00 : 5e575a: 48 89 43 50 mov %rax,0x50(%rbx) : COPY_SCALAR_FIELD(per_call_cost); 0.00 : 5e575e: 49 8b 45 58 mov 0x58(%r13),%rax 0.00 : 5e5762: 48 89 43 58 mov %rax,0x58(%rbx) 0.00 : 5e5766: 48 89 d8 mov %rbx,%rax : case T_SubLink: : retval = _copySubLink(from); : break; : case T_SubPlan: : retval = _copySubPlan(from); : break; 0.00 : 5e5769: e9 9c ea ff ff jmpq 5e420a : * _copyAlternativeSubPlan : */ : static AlternativeSubPlan * : _copyAlternativeSubPlan(const AlternativeSubPlan *from) : { : AlternativeSubPlan *newnode = makeNode(AlternativeSubPlan); 0.00 : 5e576e: 48 8b 3d eb 50 5d 00 mov 0x5d50eb(%rip),%rdi # bba860 0.00 : 5e5775: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e577a: e8 91 36 1b 00 callq 798e10 0.00 : 5e577f: c7 00 3e 01 00 00 movl $0x13e,(%rax) : : COPY_NODE_FIELD(subplans); 0.00 : 5e5785: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyAlternativeSubPlan : */ : static AlternativeSubPlan * : _copyAlternativeSubPlan(const AlternativeSubPlan *from) : { : AlternativeSubPlan *newnode = makeNode(AlternativeSubPlan); 0.00 : 5e5789: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(subplans); 0.00 : 5e578c: e8 ff e9 ff ff callq 5e4190 0.00 : 5e5791: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e5795: 48 89 d8 mov %rbx,%rax : case T_SubPlan: : retval = _copySubPlan(from); : break; : case T_AlternativeSubPlan: : retval = _copyAlternativeSubPlan(from); : break; 0.00 : 5e5798: e9 6d ea ff ff jmpq 5e420a : * _copyFieldSelect : */ : static FieldSelect * : _copyFieldSelect(const FieldSelect *from) : { : FieldSelect *newnode = makeNode(FieldSelect); 0.00 : 5e579d: 48 8b 3d bc 50 5d 00 mov 0x5d50bc(%rip),%rdi # bba860 0.00 : 5e57a4: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e57a9: e8 62 36 1b 00 callq 798e10 0.00 : 5e57ae: c7 00 3f 01 00 00 movl $0x13f,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e57b4: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyFieldSelect : */ : static FieldSelect * : _copyFieldSelect(const FieldSelect *from) : { : FieldSelect *newnode = makeNode(FieldSelect); 0.00 : 5e57b8: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e57bb: e8 d0 e9 ff ff callq 5e4190 0.00 : 5e57c0: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(fieldnum); 0.00 : 5e57c4: 41 0f b7 45 10 movzwl 0x10(%r13),%eax 0.00 : 5e57c9: 66 89 43 10 mov %ax,0x10(%rbx) : COPY_SCALAR_FIELD(resulttype); 0.00 : 5e57cd: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e57d1: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(resulttypmod); 0.00 : 5e57d4: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e57d8: 89 43 18 mov %eax,0x18(%rbx) : COPY_SCALAR_FIELD(resultcollid); 0.00 : 5e57db: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e57df: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 5e57e2: 48 89 d8 mov %rbx,%rax : case T_AlternativeSubPlan: : retval = _copyAlternativeSubPlan(from); : break; : case T_FieldSelect: : retval = _copyFieldSelect(from); : break; 0.00 : 5e57e5: e9 20 ea ff ff jmpq 5e420a : * _copyFieldStore : */ : static FieldStore * : _copyFieldStore(const FieldStore *from) : { : FieldStore *newnode = makeNode(FieldStore); 0.00 : 5e57ea: 48 8b 3d 6f 50 5d 00 mov 0x5d506f(%rip),%rdi # bba860 0.00 : 5e57f1: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e57f6: e8 15 36 1b 00 callq 798e10 0.00 : 5e57fb: c7 00 40 01 00 00 movl $0x140,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e5801: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyFieldStore : */ : static FieldStore * : _copyFieldStore(const FieldStore *from) : { : FieldStore *newnode = makeNode(FieldStore); 0.00 : 5e5805: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e5808: e8 83 e9 ff ff callq 5e4190 0.00 : 5e580d: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(newvals); 0.00 : 5e5811: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5815: e8 76 e9 ff ff callq 5e4190 0.00 : 5e581a: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(fieldnums); 0.00 : 5e581e: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5822: e8 69 e9 ff ff callq 5e4190 0.00 : 5e5827: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_SCALAR_FIELD(resulttype); 0.00 : 5e582b: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e582f: 89 43 20 mov %eax,0x20(%rbx) 0.00 : 5e5832: 48 89 d8 mov %rbx,%rax : case T_FieldSelect: : retval = _copyFieldSelect(from); : break; : case T_FieldStore: : retval = _copyFieldStore(from); : break; 0.00 : 5e5835: e9 d0 e9 ff ff jmpq 5e420a : * _copyRelabelType : */ : static RelabelType * : _copyRelabelType(const RelabelType *from) : { : RelabelType *newnode = makeNode(RelabelType); 0.00 : 5e583a: 48 8b 3d 1f 50 5d 00 mov 0x5d501f(%rip),%rdi # bba860 0.00 : 5e5841: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e5846: e8 c5 35 1b 00 callq 798e10 0.00 : 5e584b: c7 00 41 01 00 00 movl $0x141,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e5851: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyRelabelType : */ : static RelabelType * : _copyRelabelType(const RelabelType *from) : { : RelabelType *newnode = makeNode(RelabelType); 0.00 : 5e5855: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e5858: e8 33 e9 ff ff callq 5e4190 0.00 : 5e585d: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(resulttype); 0.00 : 5e5861: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5865: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(resulttypmod); 0.00 : 5e5868: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e586c: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(resultcollid); 0.00 : 5e586f: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5873: 89 43 18 mov %eax,0x18(%rbx) : COPY_SCALAR_FIELD(relabelformat); 0.00 : 5e5876: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e587a: 89 43 1c mov %eax,0x1c(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e587d: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e5881: 89 43 20 mov %eax,0x20(%rbx) 0.00 : 5e5884: 48 89 d8 mov %rbx,%rax : case T_FieldStore: : retval = _copyFieldStore(from); : break; : case T_RelabelType: : retval = _copyRelabelType(from); : break; 0.00 : 5e5887: e9 7e e9 ff ff jmpq 5e420a : * _copyCoerceViaIO : */ : static CoerceViaIO * : _copyCoerceViaIO(const CoerceViaIO *from) : { : CoerceViaIO *newnode = makeNode(CoerceViaIO); 0.00 : 5e588c: 48 8b 3d cd 4f 5d 00 mov 0x5d4fcd(%rip),%rdi # bba860 0.00 : 5e5893: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e5898: e8 73 35 1b 00 callq 798e10 0.00 : 5e589d: c7 00 42 01 00 00 movl $0x142,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e58a3: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyCoerceViaIO : */ : static CoerceViaIO * : _copyCoerceViaIO(const CoerceViaIO *from) : { : CoerceViaIO *newnode = makeNode(CoerceViaIO); 0.00 : 5e58a7: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e58aa: e8 e1 e8 ff ff callq 5e4190 0.00 : 5e58af: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(resulttype); 0.00 : 5e58b3: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e58b7: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(resultcollid); 0.00 : 5e58ba: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e58be: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(coerceformat); 0.00 : 5e58c1: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e58c5: 89 43 18 mov %eax,0x18(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e58c8: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e58cc: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 5e58cf: 48 89 d8 mov %rbx,%rax : case T_RelabelType: : retval = _copyRelabelType(from); : break; : case T_CoerceViaIO: : retval = _copyCoerceViaIO(from); : break; 0.00 : 5e58d2: e9 33 e9 ff ff jmpq 5e420a : * _copyArrayCoerceExpr : */ : static ArrayCoerceExpr * : _copyArrayCoerceExpr(const ArrayCoerceExpr *from) : { : ArrayCoerceExpr *newnode = makeNode(ArrayCoerceExpr); 0.00 : 5e58d7: 48 8b 3d 82 4f 5d 00 mov 0x5d4f82(%rip),%rdi # bba860 0.00 : 5e58de: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e58e3: e8 28 35 1b 00 callq 798e10 0.00 : 5e58e8: c7 00 43 01 00 00 movl $0x143,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e58ee: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyArrayCoerceExpr : */ : static ArrayCoerceExpr * : _copyArrayCoerceExpr(const ArrayCoerceExpr *from) : { : ArrayCoerceExpr *newnode = makeNode(ArrayCoerceExpr); 0.00 : 5e58f2: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e58f5: e8 96 e8 ff ff callq 5e4190 0.00 : 5e58fa: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(elemfuncid); 0.00 : 5e58fe: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5902: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(resulttype); 0.00 : 5e5905: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e5909: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(resulttypmod); 0.00 : 5e590c: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5910: 89 43 18 mov %eax,0x18(%rbx) : COPY_SCALAR_FIELD(resultcollid); 0.00 : 5e5913: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e5917: 89 43 1c mov %eax,0x1c(%rbx) : COPY_SCALAR_FIELD(isExplicit); 0.00 : 5e591a: 41 0f b6 45 20 movzbl 0x20(%r13),%eax 0.00 : 5e591f: 88 43 20 mov %al,0x20(%rbx) : COPY_SCALAR_FIELD(coerceformat); 0.00 : 5e5922: 41 8b 45 24 mov 0x24(%r13),%eax 0.00 : 5e5926: 89 43 24 mov %eax,0x24(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5929: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e592d: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e5930: 48 89 d8 mov %rbx,%rax : case T_CoerceViaIO: : retval = _copyCoerceViaIO(from); : break; : case T_ArrayCoerceExpr: : retval = _copyArrayCoerceExpr(from); : break; 0.00 : 5e5933: e9 d2 e8 ff ff jmpq 5e420a : * _copyConvertRowtypeExpr : */ : static ConvertRowtypeExpr * : _copyConvertRowtypeExpr(const ConvertRowtypeExpr *from) : { : ConvertRowtypeExpr *newnode = makeNode(ConvertRowtypeExpr); 0.00 : 5e5938: 48 8b 3d 21 4f 5d 00 mov 0x5d4f21(%rip),%rdi # bba860 0.00 : 5e593f: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e5944: e8 c7 34 1b 00 callq 798e10 0.00 : 5e5949: c7 00 44 01 00 00 movl $0x144,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e594f: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyConvertRowtypeExpr : */ : static ConvertRowtypeExpr * : _copyConvertRowtypeExpr(const ConvertRowtypeExpr *from) : { : ConvertRowtypeExpr *newnode = makeNode(ConvertRowtypeExpr); 0.00 : 5e5953: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e5956: e8 35 e8 ff ff callq 5e4190 0.00 : 5e595b: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(resulttype); 0.00 : 5e595f: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5963: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(convertformat); 0.00 : 5e5966: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e596a: 89 43 14 mov %eax,0x14(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e596d: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5971: 89 43 18 mov %eax,0x18(%rbx) 0.00 : 5e5974: 48 89 d8 mov %rbx,%rax : case T_ArrayCoerceExpr: : retval = _copyArrayCoerceExpr(from); : break; : case T_ConvertRowtypeExpr: : retval = _copyConvertRowtypeExpr(from); : break; 0.00 : 5e5977: e9 8e e8 ff ff jmpq 5e420a : * _copyCollateExpr : */ : static CollateExpr * : _copyCollateExpr(const CollateExpr *from) : { : CollateExpr *newnode = makeNode(CollateExpr); 0.00 : 5e597c: 48 8b 3d dd 4e 5d 00 mov 0x5d4edd(%rip),%rdi # bba860 0.00 : 5e5983: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e5988: e8 83 34 1b 00 callq 798e10 0.00 : 5e598d: c7 00 45 01 00 00 movl $0x145,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e5993: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyCollateExpr : */ : static CollateExpr * : _copyCollateExpr(const CollateExpr *from) : { : CollateExpr *newnode = makeNode(CollateExpr); 0.00 : 5e5997: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e599a: e8 f1 e7 ff ff callq 5e4190 0.00 : 5e599f: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(collOid); 0.00 : 5e59a3: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e59a7: 89 43 10 mov %eax,0x10(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e59aa: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e59ae: 89 43 14 mov %eax,0x14(%rbx) 0.00 : 5e59b1: 48 89 d8 mov %rbx,%rax : case T_ConvertRowtypeExpr: : retval = _copyConvertRowtypeExpr(from); : break; : case T_CollateExpr: : retval = _copyCollateExpr(from); : break; 0.00 : 5e59b4: e9 51 e8 ff ff jmpq 5e420a : * _copyCaseExpr : */ : static CaseExpr * : _copyCaseExpr(const CaseExpr *from) : { : CaseExpr *newnode = makeNode(CaseExpr); 0.00 : 5e59b9: 48 8b 3d a0 4e 5d 00 mov 0x5d4ea0(%rip),%rdi # bba860 0.00 : 5e59c0: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e59c5: e8 46 34 1b 00 callq 798e10 0.00 : 5e59ca: 48 89 c3 mov %rax,%rbx 0.00 : 5e59cd: c7 00 46 01 00 00 movl $0x146,(%rax) : : COPY_SCALAR_FIELD(casetype); 0.00 : 5e59d3: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e59d7: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(casecollid); 0.00 : 5e59da: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e59de: 89 43 08 mov %eax,0x8(%rbx) : COPY_NODE_FIELD(arg); 0.00 : 5e59e1: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e59e5: e8 a6 e7 ff ff callq 5e4190 0.00 : 5e59ea: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e59ee: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e59f2: e8 99 e7 ff ff callq 5e4190 0.00 : 5e59f7: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(defresult); 0.00 : 5e59fb: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e59ff: e8 8c e7 ff ff callq 5e4190 0.00 : 5e5a04: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5a08: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e5a0c: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e5a0f: 48 89 d8 mov %rbx,%rax : case T_CollateExpr: : retval = _copyCollateExpr(from); : break; : case T_CaseExpr: : retval = _copyCaseExpr(from); : break; 0.00 : 5e5a12: e9 f3 e7 ff ff jmpq 5e420a : * _copyCaseWhen : */ : static CaseWhen * : _copyCaseWhen(const CaseWhen *from) : { : CaseWhen *newnode = makeNode(CaseWhen); 0.00 : 5e5a17: 48 8b 3d 42 4e 5d 00 mov 0x5d4e42(%rip),%rdi # bba860 0.00 : 5e5a1e: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e5a23: e8 e8 33 1b 00 callq 798e10 0.00 : 5e5a28: c7 00 47 01 00 00 movl $0x147,(%rax) : : COPY_NODE_FIELD(expr); 0.00 : 5e5a2e: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyCaseWhen : */ : static CaseWhen * : _copyCaseWhen(const CaseWhen *from) : { : CaseWhen *newnode = makeNode(CaseWhen); 0.00 : 5e5a32: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(expr); 0.00 : 5e5a35: e8 56 e7 ff ff callq 5e4190 0.00 : 5e5a3a: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(result); 0.00 : 5e5a3e: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5a42: e8 49 e7 ff ff callq 5e4190 0.00 : 5e5a47: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5a4b: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5a4f: 89 43 18 mov %eax,0x18(%rbx) 0.00 : 5e5a52: 48 89 d8 mov %rbx,%rax : case T_CaseExpr: : retval = _copyCaseExpr(from); : break; : case T_CaseWhen: : retval = _copyCaseWhen(from); : break; 0.00 : 5e5a55: e9 b0 e7 ff ff jmpq 5e420a : * _copyCaseTestExpr : */ : static CaseTestExpr * : _copyCaseTestExpr(const CaseTestExpr *from) : { : CaseTestExpr *newnode = makeNode(CaseTestExpr); 0.00 : 5e5a5a: 48 8b 3d ff 4d 5d 00 mov 0x5d4dff(%rip),%rdi # bba860 0.00 : 5e5a61: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e5a66: e8 a5 33 1b 00 callq 798e10 0.00 : 5e5a6b: c7 00 48 01 00 00 movl $0x148,(%rax) : : COPY_SCALAR_FIELD(typeId); 0.00 : 5e5a71: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e5a75: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(typeMod); 0.00 : 5e5a78: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e5a7c: 89 50 08 mov %edx,0x8(%rax) : COPY_SCALAR_FIELD(collation); 0.00 : 5e5a7f: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e5a83: 89 50 0c mov %edx,0xc(%rax) : case T_CaseWhen: : retval = _copyCaseWhen(from); : break; : case T_CaseTestExpr: : retval = _copyCaseTestExpr(from); : break; 0.00 : 5e5a86: e9 7f e7 ff ff jmpq 5e420a : * _copyArrayExpr : */ : static ArrayExpr * : _copyArrayExpr(const ArrayExpr *from) : { : ArrayExpr *newnode = makeNode(ArrayExpr); 0.00 : 5e5a8b: 48 8b 3d ce 4d 5d 00 mov 0x5d4dce(%rip),%rdi # bba860 0.00 : 5e5a92: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e5a97: e8 74 33 1b 00 callq 798e10 0.00 : 5e5a9c: 48 89 c3 mov %rax,%rbx 0.00 : 5e5a9f: c7 00 49 01 00 00 movl $0x149,(%rax) : : COPY_SCALAR_FIELD(array_typeid); 0.00 : 5e5aa5: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5aa9: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(array_collid); 0.00 : 5e5aac: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e5ab0: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(element_typeid); 0.00 : 5e5ab3: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e5ab7: 89 43 0c mov %eax,0xc(%rbx) : COPY_NODE_FIELD(elements); 0.00 : 5e5aba: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5abe: e8 cd e6 ff ff callq 5e4190 0.00 : 5e5ac3: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_SCALAR_FIELD(multidims); 0.00 : 5e5ac7: 41 0f b6 45 18 movzbl 0x18(%r13),%eax 0.00 : 5e5acc: 88 43 18 mov %al,0x18(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5acf: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e5ad3: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 5e5ad6: 48 89 d8 mov %rbx,%rax : case T_CaseTestExpr: : retval = _copyCaseTestExpr(from); : break; : case T_ArrayExpr: : retval = _copyArrayExpr(from); : break; 0.00 : 5e5ad9: e9 2c e7 ff ff jmpq 5e420a : * _copyRowExpr : */ : static RowExpr * : _copyRowExpr(const RowExpr *from) : { : RowExpr *newnode = makeNode(RowExpr); 0.00 : 5e5ade: 48 8b 3d 7b 4d 5d 00 mov 0x5d4d7b(%rip),%rdi # bba860 0.00 : 5e5ae5: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e5aea: e8 21 33 1b 00 callq 798e10 0.00 : 5e5aef: c7 00 4a 01 00 00 movl $0x14a,(%rax) : : COPY_NODE_FIELD(args); 0.00 : 5e5af5: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyRowExpr : */ : static RowExpr * : _copyRowExpr(const RowExpr *from) : { : RowExpr *newnode = makeNode(RowExpr); 0.00 : 5e5af9: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(args); 0.00 : 5e5afc: e8 8f e6 ff ff callq 5e4190 0.00 : 5e5b01: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(row_typeid); 0.00 : 5e5b05: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5b09: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(row_format); 0.00 : 5e5b0c: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e5b10: 89 43 14 mov %eax,0x14(%rbx) : COPY_NODE_FIELD(colnames); 0.00 : 5e5b13: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5b17: e8 74 e6 ff ff callq 5e4190 0.00 : 5e5b1c: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5b20: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e5b24: 89 43 20 mov %eax,0x20(%rbx) 0.00 : 5e5b27: 48 89 d8 mov %rbx,%rax : case T_ArrayExpr: : retval = _copyArrayExpr(from); : break; : case T_RowExpr: : retval = _copyRowExpr(from); : break; 0.00 : 5e5b2a: e9 db e6 ff ff jmpq 5e420a : * _copyRowCompareExpr : */ : static RowCompareExpr * : _copyRowCompareExpr(const RowCompareExpr *from) : { : RowCompareExpr *newnode = makeNode(RowCompareExpr); 0.00 : 5e5b2f: 48 8b 3d 2a 4d 5d 00 mov 0x5d4d2a(%rip),%rdi # bba860 0.00 : 5e5b36: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e5b3b: e8 d0 32 1b 00 callq 798e10 0.00 : 5e5b40: 48 89 c3 mov %rax,%rbx 0.00 : 5e5b43: c7 00 4b 01 00 00 movl $0x14b,(%rax) : : COPY_SCALAR_FIELD(rctype); 0.00 : 5e5b49: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5b4d: 89 43 04 mov %eax,0x4(%rbx) : COPY_NODE_FIELD(opnos); 0.00 : 5e5b50: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e5b54: e8 37 e6 ff ff callq 5e4190 0.00 : 5e5b59: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(opfamilies); 0.00 : 5e5b5d: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5b61: e8 2a e6 ff ff callq 5e4190 0.00 : 5e5b66: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(inputcollids); 0.00 : 5e5b6a: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5b6e: e8 1d e6 ff ff callq 5e4190 0.00 : 5e5b73: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(largs); 0.00 : 5e5b77: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e5b7b: e8 10 e6 ff ff callq 5e4190 0.00 : 5e5b80: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(rargs); 0.00 : 5e5b84: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e5b88: e8 03 e6 ff ff callq 5e4190 0.00 : 5e5b8d: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e5b91: 48 89 d8 mov %rbx,%rax : case T_RowExpr: : retval = _copyRowExpr(from); : break; : case T_RowCompareExpr: : retval = _copyRowCompareExpr(from); : break; 0.00 : 5e5b94: e9 71 e6 ff ff jmpq 5e420a : * _copyCoalesceExpr : */ : static CoalesceExpr * : _copyCoalesceExpr(const CoalesceExpr *from) : { : CoalesceExpr *newnode = makeNode(CoalesceExpr); 0.00 : 5e5b99: 48 8b 3d c0 4c 5d 00 mov 0x5d4cc0(%rip),%rdi # bba860 0.00 : 5e5ba0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e5ba5: e8 66 32 1b 00 callq 798e10 0.00 : 5e5baa: 48 89 c3 mov %rax,%rbx 0.00 : 5e5bad: c7 00 4c 01 00 00 movl $0x14c,(%rax) : : COPY_SCALAR_FIELD(coalescetype); 0.00 : 5e5bb3: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5bb7: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(coalescecollid); 0.00 : 5e5bba: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e5bbe: 89 43 08 mov %eax,0x8(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e5bc1: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5bc5: e8 c6 e5 ff ff callq 5e4190 0.00 : 5e5bca: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5bce: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5bd2: 89 43 18 mov %eax,0x18(%rbx) 0.00 : 5e5bd5: 48 89 d8 mov %rbx,%rax : case T_RowCompareExpr: : retval = _copyRowCompareExpr(from); : break; : case T_CoalesceExpr: : retval = _copyCoalesceExpr(from); : break; 0.00 : 5e5bd8: e9 2d e6 ff ff jmpq 5e420a : * _copyMinMaxExpr : */ : static MinMaxExpr * : _copyMinMaxExpr(const MinMaxExpr *from) : { : MinMaxExpr *newnode = makeNode(MinMaxExpr); 0.00 : 5e5bdd: 48 8b 3d 7c 4c 5d 00 mov 0x5d4c7c(%rip),%rdi # bba860 0.00 : 5e5be4: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e5be9: e8 22 32 1b 00 callq 798e10 0.00 : 5e5bee: c7 00 4d 01 00 00 movl $0x14d,(%rax) 0.00 : 5e5bf4: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(minmaxtype); 0.00 : 5e5bf7: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5bfb: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(minmaxcollid); 0.00 : 5e5bfe: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e5c02: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(inputcollid); 0.00 : 5e5c05: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e5c09: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(op); 0.00 : 5e5c0c: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5c10: 89 43 10 mov %eax,0x10(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e5c13: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5c17: e8 74 e5 ff ff callq 5e4190 0.00 : 5e5c1c: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5c20: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e5c24: 89 43 20 mov %eax,0x20(%rbx) 0.00 : 5e5c27: 48 89 d8 mov %rbx,%rax : case T_CoalesceExpr: : retval = _copyCoalesceExpr(from); : break; : case T_MinMaxExpr: : retval = _copyMinMaxExpr(from); : break; 0.00 : 5e5c2a: e9 db e5 ff ff jmpq 5e420a : * _copyXmlExpr : */ : static XmlExpr * : _copyXmlExpr(const XmlExpr *from) : { : XmlExpr *newnode = makeNode(XmlExpr); 0.00 : 5e5c2f: 48 8b 3d 2a 4c 5d 00 mov 0x5d4c2a(%rip),%rdi # bba860 0.00 : 5e5c36: be 38 00 00 00 mov $0x38,%esi 0.00 : 5e5c3b: e8 d0 31 1b 00 callq 798e10 0.00 : 5e5c40: c7 00 4e 01 00 00 movl $0x14e,(%rax) 0.00 : 5e5c46: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(op); 0.00 : 5e5c49: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5c4d: 89 43 04 mov %eax,0x4(%rbx) : COPY_STRING_FIELD(name); 0.00 : 5e5c50: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e5c54: 31 c0 xor %eax,%eax 0.00 : 5e5c56: 48 85 ff test %rdi,%rdi 0.00 : 5e5c59: 74 05 je 5e5c60 0.00 : 5e5c5b: e8 f0 32 1b 00 callq 798f50 0.00 : 5e5c60: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(named_args); 0.00 : 5e5c64: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5c68: e8 23 e5 ff ff callq 5e4190 0.00 : 5e5c6d: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(arg_names); 0.00 : 5e5c71: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5c75: e8 16 e5 ff ff callq 5e4190 0.00 : 5e5c7a: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(args); 0.00 : 5e5c7e: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e5c82: e8 09 e5 ff ff callq 5e4190 0.00 : 5e5c87: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_SCALAR_FIELD(xmloption); 0.00 : 5e5c8b: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e5c8f: 89 43 28 mov %eax,0x28(%rbx) : COPY_SCALAR_FIELD(type); 0.00 : 5e5c92: 41 8b 45 2c mov 0x2c(%r13),%eax 0.00 : 5e5c96: 89 43 2c mov %eax,0x2c(%rbx) : COPY_SCALAR_FIELD(typmod); 0.00 : 5e5c99: 41 8b 45 30 mov 0x30(%r13),%eax 0.00 : 5e5c9d: 89 43 30 mov %eax,0x30(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5ca0: 41 8b 45 34 mov 0x34(%r13),%eax 0.00 : 5e5ca4: 89 43 34 mov %eax,0x34(%rbx) 0.00 : 5e5ca7: 48 89 d8 mov %rbx,%rax : case T_MinMaxExpr: : retval = _copyMinMaxExpr(from); : break; : case T_XmlExpr: : retval = _copyXmlExpr(from); : break; 0.00 : 5e5caa: e9 5b e5 ff ff jmpq 5e420a : * _copyNullTest : */ : static NullTest * : _copyNullTest(const NullTest *from) : { : NullTest *newnode = makeNode(NullTest); 0.00 : 5e5caf: 48 8b 3d aa 4b 5d 00 mov 0x5d4baa(%rip),%rdi # bba860 0.00 : 5e5cb6: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e5cbb: e8 50 31 1b 00 callq 798e10 0.00 : 5e5cc0: c7 00 4f 01 00 00 movl $0x14f,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e5cc6: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyNullTest : */ : static NullTest * : _copyNullTest(const NullTest *from) : { : NullTest *newnode = makeNode(NullTest); 0.00 : 5e5cca: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e5ccd: e8 be e4 ff ff callq 5e4190 0.00 : 5e5cd2: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(nulltesttype); 0.00 : 5e5cd6: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5cda: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(argisrow); 0.00 : 5e5cdd: 41 0f b6 45 14 movzbl 0x14(%r13),%eax 0.00 : 5e5ce2: 88 43 14 mov %al,0x14(%rbx) 0.00 : 5e5ce5: 48 89 d8 mov %rbx,%rax : case T_XmlExpr: : retval = _copyXmlExpr(from); : break; : case T_NullTest: : retval = _copyNullTest(from); : break; 0.00 : 5e5ce8: e9 1d e5 ff ff jmpq 5e420a : * _copyBooleanTest : */ : static BooleanTest * : _copyBooleanTest(const BooleanTest *from) : { : BooleanTest *newnode = makeNode(BooleanTest); 0.00 : 5e5ced: 48 8b 3d 6c 4b 5d 00 mov 0x5d4b6c(%rip),%rdi # bba860 0.00 : 5e5cf4: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e5cf9: e8 12 31 1b 00 callq 798e10 0.00 : 5e5cfe: c7 00 50 01 00 00 movl $0x150,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e5d04: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyBooleanTest : */ : static BooleanTest * : _copyBooleanTest(const BooleanTest *from) : { : BooleanTest *newnode = makeNode(BooleanTest); 0.00 : 5e5d08: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e5d0b: e8 80 e4 ff ff callq 5e4190 0.00 : 5e5d10: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(booltesttype); 0.00 : 5e5d14: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5d18: 89 43 10 mov %eax,0x10(%rbx) 0.00 : 5e5d1b: 48 89 d8 mov %rbx,%rax : case T_NullTest: : retval = _copyNullTest(from); : break; : case T_BooleanTest: : retval = _copyBooleanTest(from); : break; 0.00 : 5e5d1e: e9 e7 e4 ff ff jmpq 5e420a : * _copyCoerceToDomain : */ : static CoerceToDomain * : _copyCoerceToDomain(const CoerceToDomain *from) : { : CoerceToDomain *newnode = makeNode(CoerceToDomain); 0.00 : 5e5d23: 48 8b 3d 36 4b 5d 00 mov 0x5d4b36(%rip),%rdi # bba860 0.00 : 5e5d2a: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e5d2f: e8 dc 30 1b 00 callq 798e10 0.00 : 5e5d34: c7 00 51 01 00 00 movl $0x151,(%rax) : : COPY_NODE_FIELD(arg); 0.00 : 5e5d3a: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyCoerceToDomain : */ : static CoerceToDomain * : _copyCoerceToDomain(const CoerceToDomain *from) : { : CoerceToDomain *newnode = makeNode(CoerceToDomain); 0.00 : 5e5d3e: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(arg); 0.00 : 5e5d41: e8 4a e4 ff ff callq 5e4190 0.00 : 5e5d46: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(resulttype); 0.00 : 5e5d4a: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5d4e: 89 43 10 mov %eax,0x10(%rbx) : COPY_SCALAR_FIELD(resulttypmod); 0.00 : 5e5d51: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5e5d55: 89 43 14 mov %eax,0x14(%rbx) : COPY_SCALAR_FIELD(resultcollid); 0.00 : 5e5d58: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e5d5c: 89 43 18 mov %eax,0x18(%rbx) : COPY_SCALAR_FIELD(coercionformat); 0.00 : 5e5d5f: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e5d63: 89 43 1c mov %eax,0x1c(%rbx) : COPY_LOCATION_FIELD(location); 0.00 : 5e5d66: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e5d6a: 89 43 20 mov %eax,0x20(%rbx) 0.00 : 5e5d6d: 48 89 d8 mov %rbx,%rax : case T_BooleanTest: : retval = _copyBooleanTest(from); : break; : case T_CoerceToDomain: : retval = _copyCoerceToDomain(from); : break; 0.00 : 5e5d70: e9 95 e4 ff ff jmpq 5e420a : * _copyCoerceToDomainValue : */ : static CoerceToDomainValue * : _copyCoerceToDomainValue(const CoerceToDomainValue *from) : { : CoerceToDomainValue *newnode = makeNode(CoerceToDomainValue); 0.00 : 5e5d75: 48 8b 3d e4 4a 5d 00 mov 0x5d4ae4(%rip),%rdi # bba860 0.00 : 5e5d7c: be 14 00 00 00 mov $0x14,%esi 0.00 : 5e5d81: e8 9a 32 1b 00 callq 799020 0.00 : 5e5d86: c7 00 52 01 00 00 movl $0x152,(%rax) : : COPY_SCALAR_FIELD(typeId); 0.00 : 5e5d8c: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e5d90: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(typeMod); 0.00 : 5e5d93: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e5d97: 89 50 08 mov %edx,0x8(%rax) : COPY_SCALAR_FIELD(collation); 0.00 : 5e5d9a: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e5d9e: 89 50 0c mov %edx,0xc(%rax) : COPY_LOCATION_FIELD(location); 0.00 : 5e5da1: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5e5da5: 89 50 10 mov %edx,0x10(%rax) : case T_CoerceToDomain: : retval = _copyCoerceToDomain(from); : break; : case T_CoerceToDomainValue: : retval = _copyCoerceToDomainValue(from); : break; 0.00 : 5e5da8: e9 5d e4 ff ff jmpq 5e420a : * _copySetToDefault : */ : static SetToDefault * : _copySetToDefault(const SetToDefault *from) : { : SetToDefault *newnode = makeNode(SetToDefault); 0.00 : 5e5dad: 48 8b 3d ac 4a 5d 00 mov 0x5d4aac(%rip),%rdi # bba860 0.00 : 5e5db4: be 14 00 00 00 mov $0x14,%esi 0.00 : 5e5db9: e8 62 32 1b 00 callq 799020 0.00 : 5e5dbe: c7 00 53 01 00 00 movl $0x153,(%rax) : : COPY_SCALAR_FIELD(typeId); 0.00 : 5e5dc4: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e5dc8: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(typeMod); 0.00 : 5e5dcb: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e5dcf: 89 50 08 mov %edx,0x8(%rax) : COPY_SCALAR_FIELD(collation); 0.00 : 5e5dd2: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e5dd6: 89 50 0c mov %edx,0xc(%rax) : COPY_LOCATION_FIELD(location); 0.00 : 5e5dd9: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5e5ddd: 89 50 10 mov %edx,0x10(%rax) : case T_CoerceToDomainValue: : retval = _copyCoerceToDomainValue(from); : break; : case T_SetToDefault: : retval = _copySetToDefault(from); : break; 0.00 : 5e5de0: e9 25 e4 ff ff jmpq 5e420a : * _copyCurrentOfExpr : */ : static CurrentOfExpr * : _copyCurrentOfExpr(const CurrentOfExpr *from) : { : CurrentOfExpr *newnode = makeNode(CurrentOfExpr); 0.00 : 5e5de5: 48 8b 3d 74 4a 5d 00 mov 0x5d4a74(%rip),%rdi # bba860 0.00 : 5e5dec: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e5df1: e8 1a 30 1b 00 callq 798e10 0.00 : 5e5df6: c7 00 54 01 00 00 movl $0x154,(%rax) 0.00 : 5e5dfc: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(cvarno); 0.00 : 5e5dff: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5e03: 89 43 04 mov %eax,0x4(%rbx) : COPY_STRING_FIELD(cursor_name); 0.00 : 5e5e06: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e5e0a: 31 c0 xor %eax,%eax 0.00 : 5e5e0c: 48 85 ff test %rdi,%rdi 0.00 : 5e5e0f: 74 05 je 5e5e16 0.00 : 5e5e11: e8 3a 31 1b 00 callq 798f50 0.00 : 5e5e16: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(cursor_param); 0.00 : 5e5e1a: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e5e1e: 89 43 10 mov %eax,0x10(%rbx) 0.00 : 5e5e21: 48 89 d8 mov %rbx,%rax : case T_SetToDefault: : retval = _copySetToDefault(from); : break; : case T_CurrentOfExpr: : retval = _copyCurrentOfExpr(from); : break; 0.00 : 5e5e24: e9 e1 e3 ff ff jmpq 5e420a : * _copyTargetEntry : */ : static TargetEntry * : _copyTargetEntry(const TargetEntry *from) : { : TargetEntry *newnode = makeNode(TargetEntry); 0.00 : 5e5e29: 48 8b 3d 30 4a 5d 00 mov 0x5d4a30(%rip),%rdi # bba860 0.00 : 5e5e30: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e5e35: e8 d6 2f 1b 00 callq 798e10 0.00 : 5e5e3a: c7 00 55 01 00 00 movl $0x155,(%rax) : : COPY_NODE_FIELD(expr); 0.00 : 5e5e40: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyTargetEntry : */ : static TargetEntry * : _copyTargetEntry(const TargetEntry *from) : { : TargetEntry *newnode = makeNode(TargetEntry); 0.00 : 5e5e44: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(expr); 0.00 : 5e5e47: e8 44 e3 ff ff callq 5e4190 0.00 : 5e5e4c: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(resno); 0.00 : 5e5e50: 41 0f b7 45 10 movzwl 0x10(%r13),%eax 0.00 : 5e5e55: 66 89 43 10 mov %ax,0x10(%rbx) : COPY_STRING_FIELD(resname); 0.00 : 5e5e59: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5e5d: 31 c0 xor %eax,%eax 0.00 : 5e5e5f: 48 85 ff test %rdi,%rdi 0.00 : 5e5e62: 74 05 je 5e5e69 0.00 : 5e5e64: e8 e7 30 1b 00 callq 798f50 0.00 : 5e5e69: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_SCALAR_FIELD(ressortgroupref); 0.00 : 5e5e6d: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e5e71: 89 43 20 mov %eax,0x20(%rbx) : COPY_SCALAR_FIELD(resorigtbl); 0.00 : 5e5e74: 41 8b 45 24 mov 0x24(%r13),%eax 0.00 : 5e5e78: 89 43 24 mov %eax,0x24(%rbx) : COPY_SCALAR_FIELD(resorigcol); 0.00 : 5e5e7b: 41 0f b7 45 28 movzwl 0x28(%r13),%eax 0.00 : 5e5e80: 66 89 43 28 mov %ax,0x28(%rbx) : COPY_SCALAR_FIELD(resjunk); 0.00 : 5e5e84: 41 0f b6 45 2a movzbl 0x2a(%r13),%eax 0.00 : 5e5e89: 88 43 2a mov %al,0x2a(%rbx) 0.00 : 5e5e8c: 48 89 d8 mov %rbx,%rax : case T_CurrentOfExpr: : retval = _copyCurrentOfExpr(from); : break; : case T_TargetEntry: : retval = _copyTargetEntry(from); : break; 0.00 : 5e5e8f: e9 76 e3 ff ff jmpq 5e420a : * _copyRangeTblRef : */ : static RangeTblRef * : _copyRangeTblRef(const RangeTblRef *from) : { : RangeTblRef *newnode = makeNode(RangeTblRef); 0.00 : 5e5e94: 48 8b 3d c5 49 5d 00 mov 0x5d49c5(%rip),%rdi # bba860 0.00 : 5e5e9b: be 08 00 00 00 mov $0x8,%esi 0.00 : 5e5ea0: e8 6b 2f 1b 00 callq 798e10 0.00 : 5e5ea5: c7 00 56 01 00 00 movl $0x156,(%rax) : : COPY_SCALAR_FIELD(rtindex); 0.00 : 5e5eab: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e5eaf: 89 50 04 mov %edx,0x4(%rax) : case T_TargetEntry: : retval = _copyTargetEntry(from); : break; : case T_RangeTblRef: : retval = _copyRangeTblRef(from); : break; 0.00 : 5e5eb2: e9 53 e3 ff ff jmpq 5e420a : * _copyJoinExpr : */ : static JoinExpr * : _copyJoinExpr(const JoinExpr *from) : { : JoinExpr *newnode = makeNode(JoinExpr); 0.00 : 5e5eb7: 48 8b 3d a2 49 5d 00 mov 0x5d49a2(%rip),%rdi # bba860 0.00 : 5e5ebe: be 40 00 00 00 mov $0x40,%esi 0.00 : 5e5ec3: e8 48 2f 1b 00 callq 798e10 0.00 : 5e5ec8: 48 89 c3 mov %rax,%rbx 0.00 : 5e5ecb: c7 00 57 01 00 00 movl $0x157,(%rax) : : COPY_SCALAR_FIELD(jointype); 0.00 : 5e5ed1: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e5ed5: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(isNatural); 0.00 : 5e5ed8: 41 0f b6 45 08 movzbl 0x8(%r13),%eax 0.00 : 5e5edd: 88 43 08 mov %al,0x8(%rbx) : COPY_NODE_FIELD(larg); 0.00 : 5e5ee0: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5ee4: e8 a7 e2 ff ff callq 5e4190 0.00 : 5e5ee9: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(rarg); 0.00 : 5e5eed: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5ef1: e8 9a e2 ff ff callq 5e4190 0.00 : 5e5ef6: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(usingClause); 0.00 : 5e5efa: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e5efe: e8 8d e2 ff ff callq 5e4190 0.00 : 5e5f03: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(quals); 0.00 : 5e5f07: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e5f0b: e8 80 e2 ff ff callq 5e4190 0.00 : 5e5f10: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_NODE_FIELD(alias); 0.00 : 5e5f14: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e5f18: e8 73 e2 ff ff callq 5e4190 0.00 : 5e5f1d: 48 89 43 30 mov %rax,0x30(%rbx) : COPY_SCALAR_FIELD(rtindex); 0.00 : 5e5f21: 41 8b 45 38 mov 0x38(%r13),%eax 0.00 : 5e5f25: 89 43 38 mov %eax,0x38(%rbx) 0.00 : 5e5f28: 48 89 d8 mov %rbx,%rax : case T_RangeTblRef: : retval = _copyRangeTblRef(from); : break; : case T_JoinExpr: : retval = _copyJoinExpr(from); : break; 0.00 : 5e5f2b: e9 da e2 ff ff jmpq 5e420a : * _copyFromExpr : */ : static FromExpr * : _copyFromExpr(const FromExpr *from) : { : FromExpr *newnode = makeNode(FromExpr); 0.00 : 5e5f30: 48 8b 3d 29 49 5d 00 mov 0x5d4929(%rip),%rdi # bba860 0.00 : 5e5f37: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e5f3c: e8 cf 2e 1b 00 callq 798e10 0.00 : 5e5f41: c7 00 58 01 00 00 movl $0x158,(%rax) : : COPY_NODE_FIELD(fromlist); 0.00 : 5e5f47: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyFromExpr : */ : static FromExpr * : _copyFromExpr(const FromExpr *from) : { : FromExpr *newnode = makeNode(FromExpr); 0.00 : 5e5f4b: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(fromlist); 0.00 : 5e5f4e: e8 3d e2 ff ff callq 5e4190 0.00 : 5e5f53: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(quals); 0.00 : 5e5f57: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5f5b: e8 30 e2 ff ff callq 5e4190 0.00 : 5e5f60: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e5f64: 48 89 d8 mov %rbx,%rax : case T_JoinExpr: : retval = _copyJoinExpr(from); : break; : case T_FromExpr: : retval = _copyFromExpr(from); : break; 0.00 : 5e5f67: e9 9e e2 ff ff jmpq 5e420a : * _copyIntoClause : */ : static IntoClause * : _copyIntoClause(const IntoClause *from) : { : IntoClause *newnode = makeNode(IntoClause); 0.00 : 5e5f6c: 48 8b 3d ed 48 5d 00 mov 0x5d48ed(%rip),%rdi # bba860 0.00 : 5e5f73: be 40 00 00 00 mov $0x40,%esi 0.00 : 5e5f78: e8 93 2e 1b 00 callq 798e10 0.00 : 5e5f7d: c7 00 59 01 00 00 movl $0x159,(%rax) : : COPY_NODE_FIELD(rel); 0.00 : 5e5f83: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyIntoClause : */ : static IntoClause * : _copyIntoClause(const IntoClause *from) : { : IntoClause *newnode = makeNode(IntoClause); 0.00 : 5e5f87: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(rel); 0.00 : 5e5f8a: e8 01 e2 ff ff callq 5e4190 0.00 : 5e5f8f: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(colNames); 0.00 : 5e5f93: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e5f97: e8 f4 e1 ff ff callq 5e4190 0.00 : 5e5f9c: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(options); 0.00 : 5e5fa0: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e5fa4: e8 e7 e1 ff ff callq 5e4190 0.00 : 5e5fa9: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_SCALAR_FIELD(onCommit); 0.00 : 5e5fad: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e5fb1: 89 43 20 mov %eax,0x20(%rbx) : COPY_STRING_FIELD(tableSpaceName); 0.00 : 5e5fb4: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e5fb8: 31 c0 xor %eax,%eax 0.00 : 5e5fba: 48 85 ff test %rdi,%rdi 0.00 : 5e5fbd: 74 05 je 5e5fc4 0.00 : 5e5fbf: e8 8c 2f 1b 00 callq 798f50 0.00 : 5e5fc4: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_NODE_FIELD(viewQuery); 0.00 : 5e5fc8: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e5fcc: e8 bf e1 ff ff callq 5e4190 0.00 : 5e5fd1: 48 89 43 30 mov %rax,0x30(%rbx) : COPY_SCALAR_FIELD(skipData); 0.00 : 5e5fd5: 41 0f b6 45 38 movzbl 0x38(%r13),%eax 0.00 : 5e5fda: 88 43 38 mov %al,0x38(%rbx) 0.00 : 5e5fdd: 48 89 d8 mov %rbx,%rax : case T_RangeVar: : retval = _copyRangeVar(from); : break; : case T_IntoClause: : retval = _copyIntoClause(from); : break; 0.00 : 5e5fe0: e9 25 e2 ff ff jmpq 5e420a : * _copyPathKey : */ : static PathKey * : _copyPathKey(const PathKey *from) : { : PathKey *newnode = makeNode(PathKey); 0.00 : 5e5fe5: 48 8b 3d 74 48 5d 00 mov 0x5d4874(%rip),%rdi # bba860 0.00 : 5e5fec: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e5ff1: e8 1a 2e 1b 00 callq 798e10 0.00 : 5e5ff6: c7 00 0a 02 00 00 movl $0x20a,(%rax) : : /* EquivalenceClasses are never moved, so just shallow-copy the pointer */ : COPY_SCALAR_FIELD(pk_eclass); 0.00 : 5e5ffc: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 5e6000: 48 89 50 08 mov %rdx,0x8(%rax) : COPY_SCALAR_FIELD(pk_opfamily); 0.00 : 5e6004: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5e6008: 89 50 10 mov %edx,0x10(%rax) : COPY_SCALAR_FIELD(pk_strategy); 0.00 : 5e600b: 41 8b 55 14 mov 0x14(%r13),%edx 0.00 : 5e600f: 89 50 14 mov %edx,0x14(%rax) : COPY_SCALAR_FIELD(pk_nulls_first); 0.00 : 5e6012: 41 0f b6 55 18 movzbl 0x18(%r13),%edx 0.00 : 5e6017: 88 50 18 mov %dl,0x18(%rax) : /* : * RELATION NODES : */ : case T_PathKey: : retval = _copyPathKey(from); : break; 0.00 : 5e601a: e9 eb e1 ff ff jmpq 5e420a : * _copyRestrictInfo : */ : static RestrictInfo * : _copyRestrictInfo(const RestrictInfo *from) : { : RestrictInfo *newnode = makeNode(RestrictInfo); 0.00 : 5e601f: 48 8b 3d 3a 48 5d 00 mov 0x5d483a(%rip),%rdi # bba860 0.00 : 5e6026: be c0 00 00 00 mov $0xc0,%esi 0.00 : 5e602b: e8 e0 2d 1b 00 callq 798e10 0.00 : 5e6030: c7 00 0b 02 00 00 movl $0x20b,(%rax) : : COPY_NODE_FIELD(clause); 0.00 : 5e6036: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyRestrictInfo : */ : static RestrictInfo * : _copyRestrictInfo(const RestrictInfo *from) : { : RestrictInfo *newnode = makeNode(RestrictInfo); 0.00 : 5e603a: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(clause); 0.00 : 5e603d: e8 4e e1 ff ff callq 5e4190 0.00 : 5e6042: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(is_pushed_down); 0.00 : 5e6046: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e604b: 88 43 10 mov %al,0x10(%rbx) : COPY_SCALAR_FIELD(outerjoin_delayed); 0.00 : 5e604e: 41 0f b6 45 11 movzbl 0x11(%r13),%eax 0.00 : 5e6053: 88 43 11 mov %al,0x11(%rbx) : COPY_SCALAR_FIELD(can_join); 0.00 : 5e6056: 41 0f b6 45 12 movzbl 0x12(%r13),%eax 0.00 : 5e605b: 88 43 12 mov %al,0x12(%rbx) : COPY_SCALAR_FIELD(pseudoconstant); 0.00 : 5e605e: 41 0f b6 45 13 movzbl 0x13(%r13),%eax 0.00 : 5e6063: 88 43 13 mov %al,0x13(%rbx) : COPY_BITMAPSET_FIELD(clause_relids); 0.00 : 5e6066: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e606a: e8 91 d0 ff ff callq 5e3100 0.00 : 5e606f: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_BITMAPSET_FIELD(required_relids); 0.00 : 5e6073: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e6077: e8 84 d0 ff ff callq 5e3100 0.00 : 5e607c: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_BITMAPSET_FIELD(outer_relids); 0.00 : 5e6080: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e6084: e8 77 d0 ff ff callq 5e3100 0.00 : 5e6089: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_BITMAPSET_FIELD(nullable_relids); 0.00 : 5e608d: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e6091: e8 6a d0 ff ff callq 5e3100 0.00 : 5e6096: 48 89 43 30 mov %rax,0x30(%rbx) : COPY_BITMAPSET_FIELD(left_relids); 0.00 : 5e609a: 49 8b 7d 38 mov 0x38(%r13),%rdi 0.00 : 5e609e: e8 5d d0 ff ff callq 5e3100 0.00 : 5e60a3: 48 89 43 38 mov %rax,0x38(%rbx) : COPY_BITMAPSET_FIELD(right_relids); 0.00 : 5e60a7: 49 8b 7d 40 mov 0x40(%r13),%rdi 0.00 : 5e60ab: e8 50 d0 ff ff callq 5e3100 0.00 : 5e60b0: 48 89 43 40 mov %rax,0x40(%rbx) : COPY_NODE_FIELD(orclause); 0.00 : 5e60b4: 49 8b 7d 48 mov 0x48(%r13),%rdi 0.00 : 5e60b8: e8 d3 e0 ff ff callq 5e4190 0.00 : 5e60bd: 48 89 43 48 mov %rax,0x48(%rbx) : /* EquivalenceClasses are never copied, so shallow-copy the pointers */ : COPY_SCALAR_FIELD(parent_ec); 0.00 : 5e60c1: 49 8b 45 50 mov 0x50(%r13),%rax 0.00 : 5e60c5: 48 89 43 50 mov %rax,0x50(%rbx) : COPY_SCALAR_FIELD(eval_cost); 0.00 : 5e60c9: 49 8b 45 58 mov 0x58(%r13),%rax 0.00 : 5e60cd: 48 89 43 58 mov %rax,0x58(%rbx) 0.00 : 5e60d1: 49 8b 45 60 mov 0x60(%r13),%rax 0.00 : 5e60d5: 48 89 43 60 mov %rax,0x60(%rbx) : COPY_SCALAR_FIELD(norm_selec); 0.00 : 5e60d9: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 5e60dd: 48 89 43 68 mov %rax,0x68(%rbx) : COPY_SCALAR_FIELD(outer_selec); 0.00 : 5e60e1: 49 8b 45 70 mov 0x70(%r13),%rax 0.00 : 5e60e5: 48 89 43 70 mov %rax,0x70(%rbx) : COPY_NODE_FIELD(mergeopfamilies); 0.00 : 5e60e9: 49 8b 7d 78 mov 0x78(%r13),%rdi 0.00 : 5e60ed: e8 9e e0 ff ff callq 5e4190 0.00 : 5e60f2: 48 89 43 78 mov %rax,0x78(%rbx) : /* EquivalenceClasses are never copied, so shallow-copy the pointers */ : COPY_SCALAR_FIELD(left_ec); 0.00 : 5e60f6: 49 8b 85 80 00 00 00 mov 0x80(%r13),%rax 0.00 : 5e60fd: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) : COPY_SCALAR_FIELD(right_ec); 0.00 : 5e6104: 49 8b 85 88 00 00 00 mov 0x88(%r13),%rax 0.00 : 5e610b: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) : COPY_SCALAR_FIELD(left_em); 0.00 : 5e6112: 49 8b 85 90 00 00 00 mov 0x90(%r13),%rax 0.00 : 5e6119: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) : COPY_SCALAR_FIELD(right_em); 0.00 : 5e6120: 49 8b 85 98 00 00 00 mov 0x98(%r13),%rax : /* MergeScanSelCache isn't a Node, so hard to copy; just reset cache */ : newnode->scansel_cache = NIL; 0.00 : 5e6127: 48 c7 83 a0 00 00 00 movq $0x0,0xa0(%rbx) 0.00 : 5e612e: 00 00 00 00 : COPY_NODE_FIELD(mergeopfamilies); : /* EquivalenceClasses are never copied, so shallow-copy the pointers */ : COPY_SCALAR_FIELD(left_ec); : COPY_SCALAR_FIELD(right_ec); : COPY_SCALAR_FIELD(left_em); : COPY_SCALAR_FIELD(right_em); 0.00 : 5e6132: 48 89 83 98 00 00 00 mov %rax,0x98(%rbx) : /* MergeScanSelCache isn't a Node, so hard to copy; just reset cache */ : newnode->scansel_cache = NIL; : COPY_SCALAR_FIELD(outer_is_left); 0.00 : 5e6139: 41 0f b6 85 a8 00 00 movzbl 0xa8(%r13),%eax 0.00 : 5e6140: 00 0.00 : 5e6141: 88 83 a8 00 00 00 mov %al,0xa8(%rbx) : COPY_SCALAR_FIELD(hashjoinoperator); 0.00 : 5e6147: 41 8b 85 ac 00 00 00 mov 0xac(%r13),%eax 0.00 : 5e614e: 89 83 ac 00 00 00 mov %eax,0xac(%rbx) : COPY_SCALAR_FIELD(left_bucketsize); 0.00 : 5e6154: 49 8b 85 b0 00 00 00 mov 0xb0(%r13),%rax 0.00 : 5e615b: 48 89 83 b0 00 00 00 mov %rax,0xb0(%rbx) : COPY_SCALAR_FIELD(right_bucketsize); 0.00 : 5e6162: 49 8b 85 b8 00 00 00 mov 0xb8(%r13),%rax 0.00 : 5e6169: 48 89 83 b8 00 00 00 mov %rax,0xb8(%rbx) 0.00 : 5e6170: 48 89 d8 mov %rbx,%rax : case T_PathKey: : retval = _copyPathKey(from); : break; : case T_RestrictInfo: : retval = _copyRestrictInfo(from); : break; 0.00 : 5e6173: e9 92 e0 ff ff jmpq 5e420a : * _copyPlaceHolderVar : */ : static PlaceHolderVar * : _copyPlaceHolderVar(const PlaceHolderVar *from) : { : PlaceHolderVar *newnode = makeNode(PlaceHolderVar); 0.00 : 5e6178: 48 8b 3d e1 46 5d 00 mov 0x5d46e1(%rip),%rdi # bba860 0.00 : 5e617f: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e6184: e8 87 2c 1b 00 callq 798e10 0.00 : 5e6189: c7 00 0c 02 00 00 movl $0x20c,(%rax) : : COPY_NODE_FIELD(phexpr); 0.00 : 5e618f: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyPlaceHolderVar : */ : static PlaceHolderVar * : _copyPlaceHolderVar(const PlaceHolderVar *from) : { : PlaceHolderVar *newnode = makeNode(PlaceHolderVar); 0.00 : 5e6193: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(phexpr); 0.00 : 5e6196: e8 f5 df ff ff callq 5e4190 0.00 : 5e619b: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_BITMAPSET_FIELD(phrels); 0.00 : 5e619f: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e61a3: e8 58 cf ff ff callq 5e3100 0.00 : 5e61a8: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_SCALAR_FIELD(phid); 0.00 : 5e61ac: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e61b0: 89 43 18 mov %eax,0x18(%rbx) : COPY_SCALAR_FIELD(phlevelsup); 0.00 : 5e61b3: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5e61b7: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 5e61ba: 48 89 d8 mov %rbx,%rax : case T_RestrictInfo: : retval = _copyRestrictInfo(from); : break; : case T_PlaceHolderVar: : retval = _copyPlaceHolderVar(from); : break; 0.00 : 5e61bd: e9 48 e0 ff ff jmpq 5e420a : * _copySpecialJoinInfo : */ : static SpecialJoinInfo * : _copySpecialJoinInfo(const SpecialJoinInfo *from) : { : SpecialJoinInfo *newnode = makeNode(SpecialJoinInfo); 0.00 : 5e61c2: 48 8b 3d 97 46 5d 00 mov 0x5d4697(%rip),%rdi # bba860 0.00 : 5e61c9: be 38 00 00 00 mov $0x38,%esi 0.00 : 5e61ce: e8 3d 2c 1b 00 callq 798e10 0.00 : 5e61d3: c7 00 0d 02 00 00 movl $0x20d,(%rax) : : COPY_BITMAPSET_FIELD(min_lefthand); 0.00 : 5e61d9: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copySpecialJoinInfo : */ : static SpecialJoinInfo * : _copySpecialJoinInfo(const SpecialJoinInfo *from) : { : SpecialJoinInfo *newnode = makeNode(SpecialJoinInfo); 0.00 : 5e61dd: 48 89 c3 mov %rax,%rbx : : COPY_BITMAPSET_FIELD(min_lefthand); 0.00 : 5e61e0: e8 1b cf ff ff callq 5e3100 0.00 : 5e61e5: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_BITMAPSET_FIELD(min_righthand); 0.00 : 5e61e9: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e61ed: e8 0e cf ff ff callq 5e3100 0.00 : 5e61f2: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_BITMAPSET_FIELD(syn_lefthand); 0.00 : 5e61f6: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e61fa: e8 01 cf ff ff callq 5e3100 0.00 : 5e61ff: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_BITMAPSET_FIELD(syn_righthand); 0.00 : 5e6203: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e6207: e8 f4 ce ff ff callq 5e3100 0.00 : 5e620c: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_SCALAR_FIELD(jointype); 0.00 : 5e6210: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e6214: 89 43 28 mov %eax,0x28(%rbx) : COPY_SCALAR_FIELD(lhs_strict); 0.00 : 5e6217: 41 0f b6 45 2c movzbl 0x2c(%r13),%eax 0.00 : 5e621c: 88 43 2c mov %al,0x2c(%rbx) : COPY_SCALAR_FIELD(delay_upper_joins); 0.00 : 5e621f: 41 0f b6 45 2d movzbl 0x2d(%r13),%eax 0.00 : 5e6224: 88 43 2d mov %al,0x2d(%rbx) : COPY_NODE_FIELD(join_quals); 0.00 : 5e6227: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e622b: e8 60 df ff ff callq 5e4190 0.00 : 5e6230: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e6234: 48 89 d8 mov %rbx,%rax : case T_PlaceHolderVar: : retval = _copyPlaceHolderVar(from); : break; : case T_SpecialJoinInfo: : retval = _copySpecialJoinInfo(from); : break; 0.00 : 5e6237: e9 ce df ff ff jmpq 5e420a : * _copyLateralJoinInfo : */ : static LateralJoinInfo * : _copyLateralJoinInfo(const LateralJoinInfo *from) : { : LateralJoinInfo *newnode = makeNode(LateralJoinInfo); 0.00 : 5e623c: 48 8b 3d 1d 46 5d 00 mov 0x5d461d(%rip),%rdi # bba860 0.00 : 5e6243: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e6248: e8 c3 2b 1b 00 callq 798e10 0.00 : 5e624d: c7 00 0e 02 00 00 movl $0x20e,(%rax) : : COPY_BITMAPSET_FIELD(lateral_lhs); 0.00 : 5e6253: 49 8b 7d 08 mov 0x8(%r13),%rdi : * _copyLateralJoinInfo : */ : static LateralJoinInfo * : _copyLateralJoinInfo(const LateralJoinInfo *from) : { : LateralJoinInfo *newnode = makeNode(LateralJoinInfo); 0.00 : 5e6257: 48 89 c3 mov %rax,%rbx : : COPY_BITMAPSET_FIELD(lateral_lhs); 0.00 : 5e625a: e8 a1 ce ff ff callq 5e3100 0.00 : 5e625f: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_BITMAPSET_FIELD(lateral_rhs); 0.00 : 5e6263: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e6267: e8 94 ce ff ff callq 5e3100 0.00 : 5e626c: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e6270: 48 89 d8 mov %rbx,%rax : case T_SpecialJoinInfo: : retval = _copySpecialJoinInfo(from); : break; : case T_LateralJoinInfo: : retval = _copyLateralJoinInfo(from); : break; 0.00 : 5e6273: e9 92 df ff ff jmpq 5e420a : * _copyAppendRelInfo : */ : static AppendRelInfo * : _copyAppendRelInfo(const AppendRelInfo *from) : { : AppendRelInfo *newnode = makeNode(AppendRelInfo); 0.00 : 5e6278: 48 8b 3d e1 45 5d 00 mov 0x5d45e1(%rip),%rdi # bba860 0.00 : 5e627f: be 28 00 00 00 mov $0x28,%esi 0.00 : 5e6284: e8 87 2b 1b 00 callq 798e10 0.00 : 5e6289: c7 00 0f 02 00 00 movl $0x20f,(%rax) 0.00 : 5e628f: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(parent_relid); 0.00 : 5e6292: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e6296: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(child_relid); 0.00 : 5e6299: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e629d: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(parent_reltype); 0.00 : 5e62a0: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e62a4: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(child_reltype); 0.00 : 5e62a7: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 5e62ab: 89 43 10 mov %eax,0x10(%rbx) : COPY_NODE_FIELD(translated_vars); 0.00 : 5e62ae: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e62b2: e8 d9 de ff ff callq 5e4190 0.00 : 5e62b7: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_SCALAR_FIELD(parent_reloid); 0.00 : 5e62bb: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e62bf: 89 43 20 mov %eax,0x20(%rbx) 0.00 : 5e62c2: 48 89 d8 mov %rbx,%rax : case T_LateralJoinInfo: : retval = _copyLateralJoinInfo(from); : break; : case T_AppendRelInfo: : retval = _copyAppendRelInfo(from); : break; 0.00 : 5e62c5: e9 40 df ff ff jmpq 5e420a : * _copyPlaceHolderInfo : */ : static PlaceHolderInfo * : _copyPlaceHolderInfo(const PlaceHolderInfo *from) : { : PlaceHolderInfo *newnode = makeNode(PlaceHolderInfo); 0.00 : 5e62ca: 48 8b 3d 8f 45 5d 00 mov 0x5d458f(%rip),%rdi # bba860 0.00 : 5e62d1: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e62d6: e8 35 2b 1b 00 callq 798e10 0.00 : 5e62db: 48 89 c3 mov %rax,%rbx 0.00 : 5e62de: c7 00 10 02 00 00 movl $0x210,(%rax) : : COPY_SCALAR_FIELD(phid); 0.00 : 5e62e4: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e62e8: 89 43 04 mov %eax,0x4(%rbx) : COPY_NODE_FIELD(ph_var); 0.00 : 5e62eb: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e62ef: e8 9c de ff ff callq 5e4190 0.00 : 5e62f4: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_BITMAPSET_FIELD(ph_eval_at); 0.00 : 5e62f8: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e62fc: e8 ff cd ff ff callq 5e3100 0.00 : 5e6301: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_BITMAPSET_FIELD(ph_lateral); 0.00 : 5e6305: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e6309: e8 f2 cd ff ff callq 5e3100 0.00 : 5e630e: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_BITMAPSET_FIELD(ph_needed); 0.00 : 5e6312: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e6316: e8 e5 cd ff ff callq 5e3100 0.00 : 5e631b: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_SCALAR_FIELD(ph_width); 0.00 : 5e631f: 41 8b 45 28 mov 0x28(%r13),%eax 0.00 : 5e6323: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 5e6326: 48 89 d8 mov %rbx,%rax : case T_AppendRelInfo: : retval = _copyAppendRelInfo(from); : break; : case T_PlaceHolderInfo: : retval = _copyPlaceHolderInfo(from); : break; 0.00 : 5e6329: e9 dc de ff ff jmpq 5e420a : * **************************************************************** : */ : static Value * : _copyValue(const Value *from) : { : Value *newnode = makeNode(Value); 0.00 : 5e632e: 48 8b 3d 2b 45 5d 00 mov 0x5d452b(%rip),%rdi # bba860 0.00 : 5e6335: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e633a: e8 d1 2a 1b 00 callq 798e10 0.00 : 5e633f: c7 00 8a 02 00 00 movl $0x28a,(%rax) 0.00 : 5e6345: 48 89 c3 mov %rax,%rbx : : /* See also _copyAConst when changing this code! */ : : COPY_SCALAR_FIELD(type); 0.00 : 5e6348: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 5e634c: 89 03 mov %eax,(%rbx) : switch (from->type) 0.00 : 5e634e: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 5e6352: 81 fa 8e 02 00 00 cmp $0x28e,%edx 0.00 : 5e6358: 0f 87 58 16 00 00 ja 5e79b6 0.00 : 5e635e: 81 fa 8c 02 00 00 cmp $0x28c,%edx 0.00 : 5e6364: 0f 83 ac 16 00 00 jae 5e7a16 0.00 : 5e636a: 81 fa 8b 02 00 00 cmp $0x28b,%edx 0.00 : 5e6370: 0f 84 bc 16 00 00 je 5e7a32 : break; : case T_Null: : /* nothing to do */ : break; : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5e6376: ba 5b 3f 89 00 mov $0x893f5b,%edx 0.00 : 5e637b: be 6f 0f 00 00 mov $0xf6f,%esi 0.00 : 5e6380: bf 14 25 89 00 mov $0x892514,%edi 0.00 : 5e6385: e8 96 50 19 00 callq 77b420 0.00 : 5e638a: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 5e638e: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5e6393: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e6398: 31 c0 xor %eax,%eax 0.00 : 5e639a: e8 91 4e 19 00 callq 77b230 0.00 : 5e639f: e8 2c 31 e8 ff callq 4694d0 : ListCell *curr_old; : ListCell *prev_new; : : Assert(list_length(from) >= 1); : : new = makeNode(List); 0.00 : 5e63a4: 48 8b 3d b5 44 5d 00 mov 0x5d44b5(%rip),%rdi # bba860 0.00 : 5e63ab: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e63b0: e8 5b 2a 1b 00 callq 798e10 0.00 : 5e63b5: 49 89 c7 mov %rax,%r15 0.00 : 5e63b8: c7 00 90 02 00 00 movl $0x290,(%rax) : new->length = from->length; 0.00 : 5e63be: 41 8b 45 04 mov 0x4(%r13),%eax : : COPY_NODE_CELL(new->head, from->head); 0.00 : 5e63c2: bf 10 00 00 00 mov $0x10,%edi : ListCell *prev_new; : : Assert(list_length(from) >= 1); : : new = makeNode(List); : new->length = from->length; 0.00 : 5e63c7: 41 89 47 04 mov %eax,0x4(%r15) : : COPY_NODE_CELL(new->head, from->head); 0.00 : 5e63cb: e8 80 29 1b 00 callq 798d50 0.00 : 5e63d0: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 5e63d4: 48 89 c3 mov %rax,%rbx 0.00 : 5e63d7: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 5e63db: 48 8b 38 mov (%rax),%rdi 0.00 : 5e63de: e8 ad dd ff ff callq 5e4190 0.00 : 5e63e3: 48 89 03 mov %rax,(%rbx) : prev_new = new->head; : curr_old = lnext(from->head); 0.00 : 5e63e6: 49 8b 45 08 mov 0x8(%r13),%rax : : new = makeNode(List); : new->length = from->length; : : COPY_NODE_CELL(new->head, from->head); : prev_new = new->head; 0.00 : 5e63ea: 4d 8b 77 08 mov 0x8(%r15),%r14 : curr_old = lnext(from->head); 0.00 : 5e63ee: 4c 8b 60 08 mov 0x8(%rax),%r12 : : while (curr_old) 0.00 : 5e63f2: 4d 85 e4 test %r12,%r12 0.00 : 5e63f5: 74 34 je 5e642b 0.00 : 5e63f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e63fe: 00 00 : { : COPY_NODE_CELL(prev_new->next, curr_old); 0.00 : 5e6400: bf 10 00 00 00 mov $0x10,%edi 0.00 : 5e6405: e8 46 29 1b 00 callq 798d50 0.00 : 5e640a: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 5e640e: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 5e6412: 48 89 c3 mov %rax,%rbx 0.00 : 5e6415: e8 76 dd ff ff callq 5e4190 0.00 : 5e641a: 48 89 03 mov %rax,(%rbx) : prev_new = prev_new->next; : curr_old = curr_old->next; 0.00 : 5e641d: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : curr_old = lnext(from->head); : : while (curr_old) : { : COPY_NODE_CELL(prev_new->next, curr_old); : prev_new = prev_new->next; /home/Computational/mark/src/postgres-andres/src/backend/nodes/copyfuncs.c:3915 33.33 : 5e6422: 4d 8b 76 08 mov 0x8(%r14),%r14 : : COPY_NODE_CELL(new->head, from->head); : prev_new = new->head; : curr_old = lnext(from->head); : : while (curr_old) 0.00 : 5e6426: 4d 85 e4 test %r12,%r12 0.00 : 5e6429: 75 d5 jne 5e6400 : { : COPY_NODE_CELL(prev_new->next, curr_old); : prev_new = prev_new->next; : curr_old = curr_old->next; : } : prev_new->next = NULL; 0.00 : 5e642b: 49 c7 46 08 00 00 00 movq $0x0,0x8(%r14) 0.00 : 5e6432: 00 : new->tail = prev_new; 0.00 : 5e6433: 4c 89 f8 mov %r15,%rax 0.00 : 5e6436: 4d 89 77 10 mov %r14,0x10(%r15) : /* : * LIST NODES : */ : case T_List: : retval = _copyList(from); : break; 0.00 : 5e643a: e9 cb dd ff ff jmpq 5e420a : * Lists of integers and OIDs don't need to be deep-copied, so we : * perform a shallow copy via list_copy() : */ : case T_IntList: : case T_OidList: : retval = list_copy(from); 0.00 : 5e643f: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6442: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6446: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e644a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e644e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6452: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6456: c9 leaveq : * Lists of integers and OIDs don't need to be deep-copied, so we : * perform a shallow copy via list_copy() : */ : case T_IntList: : case T_OidList: : retval = list_copy(from); 0.00 : 5e6457: e9 a4 b2 ff ff jmpq 5e1700 : } : : static Query * : _copyQuery(const Query *from) : { : Query *newnode = makeNode(Query); 0.00 : 5e645c: 48 8b 3d fd 43 5d 00 mov 0x5d43fd(%rip),%rdi # bba860 0.00 : 5e6463: be b0 00 00 00 mov $0xb0,%esi 0.00 : 5e6468: e8 a3 29 1b 00 callq 798e10 0.00 : 5e646d: 48 89 c3 mov %rax,%rbx 0.00 : 5e6470: c7 00 bc 02 00 00 movl $0x2bc,(%rax) : : COPY_SCALAR_FIELD(commandType); 0.00 : 5e6476: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e647a: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(querySource); 0.00 : 5e647d: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e6481: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(queryId); 0.00 : 5e6484: 41 8b 45 0c mov 0xc(%r13),%eax 0.00 : 5e6488: 89 43 0c mov %eax,0xc(%rbx) : COPY_SCALAR_FIELD(canSetTag); 0.00 : 5e648b: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e6490: 88 43 10 mov %al,0x10(%rbx) : COPY_NODE_FIELD(utilityStmt); 0.00 : 5e6493: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e6497: e8 f4 dc ff ff callq 5e4190 0.00 : 5e649c: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_SCALAR_FIELD(resultRelation); 0.00 : 5e64a0: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 5e64a4: 89 43 20 mov %eax,0x20(%rbx) : COPY_SCALAR_FIELD(hasAggs); 0.00 : 5e64a7: 41 0f b6 45 24 movzbl 0x24(%r13),%eax 0.00 : 5e64ac: 88 43 24 mov %al,0x24(%rbx) : COPY_SCALAR_FIELD(hasWindowFuncs); 0.00 : 5e64af: 41 0f b6 45 25 movzbl 0x25(%r13),%eax 0.00 : 5e64b4: 88 43 25 mov %al,0x25(%rbx) : COPY_SCALAR_FIELD(hasSubLinks); 0.00 : 5e64b7: 41 0f b6 45 26 movzbl 0x26(%r13),%eax 0.00 : 5e64bc: 88 43 26 mov %al,0x26(%rbx) : COPY_SCALAR_FIELD(hasDistinctOn); 0.00 : 5e64bf: 41 0f b6 45 27 movzbl 0x27(%r13),%eax 0.00 : 5e64c4: 88 43 27 mov %al,0x27(%rbx) : COPY_SCALAR_FIELD(hasRecursive); 0.00 : 5e64c7: 41 0f b6 45 28 movzbl 0x28(%r13),%eax 0.00 : 5e64cc: 88 43 28 mov %al,0x28(%rbx) : COPY_SCALAR_FIELD(hasModifyingCTE); 0.00 : 5e64cf: 41 0f b6 45 29 movzbl 0x29(%r13),%eax 0.00 : 5e64d4: 88 43 29 mov %al,0x29(%rbx) : COPY_SCALAR_FIELD(hasForUpdate); 0.00 : 5e64d7: 41 0f b6 45 2a movzbl 0x2a(%r13),%eax 0.00 : 5e64dc: 88 43 2a mov %al,0x2a(%rbx) : COPY_SCALAR_FIELD(hasRowSecurity); 0.00 : 5e64df: 41 0f b6 45 2b movzbl 0x2b(%r13),%eax 0.00 : 5e64e4: 88 43 2b mov %al,0x2b(%rbx) : COPY_NODE_FIELD(cteList); 0.00 : 5e64e7: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e64eb: e8 a0 dc ff ff callq 5e4190 0.00 : 5e64f0: 48 89 43 30 mov %rax,0x30(%rbx) : COPY_NODE_FIELD(rtable); 0.00 : 5e64f4: 49 8b 7d 38 mov 0x38(%r13),%rdi 0.00 : 5e64f8: e8 93 dc ff ff callq 5e4190 0.00 : 5e64fd: 48 89 43 38 mov %rax,0x38(%rbx) : COPY_NODE_FIELD(jointree); 0.00 : 5e6501: 49 8b 7d 40 mov 0x40(%r13),%rdi 0.00 : 5e6505: e8 86 dc ff ff callq 5e4190 0.00 : 5e650a: 48 89 43 40 mov %rax,0x40(%rbx) : COPY_NODE_FIELD(targetList); 0.00 : 5e650e: 49 8b 7d 48 mov 0x48(%r13),%rdi 0.00 : 5e6512: e8 79 dc ff ff callq 5e4190 0.00 : 5e6517: 48 89 43 48 mov %rax,0x48(%rbx) : COPY_NODE_FIELD(withCheckOptions); 0.00 : 5e651b: 49 8b 7d 50 mov 0x50(%r13),%rdi 0.00 : 5e651f: e8 6c dc ff ff callq 5e4190 0.00 : 5e6524: 48 89 43 50 mov %rax,0x50(%rbx) : COPY_NODE_FIELD(returningList); 0.00 : 5e6528: 49 8b 7d 58 mov 0x58(%r13),%rdi 0.00 : 5e652c: e8 5f dc ff ff callq 5e4190 0.00 : 5e6531: 48 89 43 58 mov %rax,0x58(%rbx) : COPY_NODE_FIELD(groupClause); 0.00 : 5e6535: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 5e6539: e8 52 dc ff ff callq 5e4190 0.00 : 5e653e: 48 89 43 60 mov %rax,0x60(%rbx) : COPY_NODE_FIELD(havingQual); 0.00 : 5e6542: 49 8b 7d 68 mov 0x68(%r13),%rdi 0.00 : 5e6546: e8 45 dc ff ff callq 5e4190 0.00 : 5e654b: 48 89 43 68 mov %rax,0x68(%rbx) : COPY_NODE_FIELD(windowClause); 0.00 : 5e654f: 49 8b 7d 70 mov 0x70(%r13),%rdi 0.00 : 5e6553: e8 38 dc ff ff callq 5e4190 0.00 : 5e6558: 48 89 43 70 mov %rax,0x70(%rbx) : COPY_NODE_FIELD(distinctClause); 0.00 : 5e655c: 49 8b 7d 78 mov 0x78(%r13),%rdi 0.00 : 5e6560: e8 2b dc ff ff callq 5e4190 0.00 : 5e6565: 48 89 43 78 mov %rax,0x78(%rbx) : COPY_NODE_FIELD(sortClause); 0.00 : 5e6569: 49 8b bd 80 00 00 00 mov 0x80(%r13),%rdi 0.00 : 5e6570: e8 1b dc ff ff callq 5e4190 0.00 : 5e6575: 48 89 83 80 00 00 00 mov %rax,0x80(%rbx) : COPY_NODE_FIELD(limitOffset); 0.00 : 5e657c: 49 8b bd 88 00 00 00 mov 0x88(%r13),%rdi 0.00 : 5e6583: e8 08 dc ff ff callq 5e4190 0.00 : 5e6588: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) : COPY_NODE_FIELD(limitCount); 0.00 : 5e658f: 49 8b bd 90 00 00 00 mov 0x90(%r13),%rdi 0.00 : 5e6596: e8 f5 db ff ff callq 5e4190 0.00 : 5e659b: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) : COPY_NODE_FIELD(rowMarks); 0.00 : 5e65a2: 49 8b bd 98 00 00 00 mov 0x98(%r13),%rdi 0.00 : 5e65a9: e8 e2 db ff ff callq 5e4190 0.00 : 5e65ae: 48 89 83 98 00 00 00 mov %rax,0x98(%rbx) : COPY_NODE_FIELD(setOperations); 0.00 : 5e65b5: 49 8b bd a0 00 00 00 mov 0xa0(%r13),%rdi 0.00 : 5e65bc: e8 cf db ff ff callq 5e4190 0.00 : 5e65c1: 48 89 83 a0 00 00 00 mov %rax,0xa0(%rbx) : COPY_NODE_FIELD(constraintDeps); 0.00 : 5e65c8: 49 8b bd a8 00 00 00 mov 0xa8(%r13),%rdi 0.00 : 5e65cf: e8 bc db ff ff callq 5e4190 0.00 : 5e65d4: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) 0.00 : 5e65db: 48 89 d8 mov %rbx,%rax : /* : * PARSE NODES : */ : case T_Query: : retval = _copyQuery(from); : break; 0.00 : 5e65de: e9 27 dc ff ff jmpq 5e420a : * _copyPlannedStmt : */ : static PlannedStmt * : _copyPlannedStmt(const PlannedStmt *from) : { : PlannedStmt *newnode = makeNode(PlannedStmt); 0.00 : 5e65e3: 48 8b 3d 76 42 5d 00 mov 0x5d4276(%rip),%rdi # bba860 0.00 : 5e65ea: be 60 00 00 00 mov $0x60,%esi 0.00 : 5e65ef: e8 1c 28 1b 00 callq 798e10 0.00 : 5e65f4: 48 89 c3 mov %rax,%rbx 0.00 : 5e65f7: c7 00 bd 02 00 00 movl $0x2bd,(%rax) : : COPY_SCALAR_FIELD(commandType); 0.00 : 5e65fd: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e6601: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(queryId); 0.00 : 5e6604: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e6608: 89 43 08 mov %eax,0x8(%rbx) : COPY_SCALAR_FIELD(hasReturning); 0.00 : 5e660b: 41 0f b6 45 0c movzbl 0xc(%r13),%eax 0.00 : 5e6610: 88 43 0c mov %al,0xc(%rbx) : COPY_SCALAR_FIELD(hasModifyingCTE); 0.00 : 5e6613: 41 0f b6 45 0d movzbl 0xd(%r13),%eax 0.00 : 5e6618: 88 43 0d mov %al,0xd(%rbx) : COPY_SCALAR_FIELD(canSetTag); 0.00 : 5e661b: 41 0f b6 45 0e movzbl 0xe(%r13),%eax 0.00 : 5e6620: 88 43 0e mov %al,0xe(%rbx) : COPY_SCALAR_FIELD(transientPlan); 0.00 : 5e6623: 41 0f b6 45 0f movzbl 0xf(%r13),%eax 0.00 : 5e6628: 88 43 0f mov %al,0xf(%rbx) : COPY_NODE_FIELD(planTree); 0.00 : 5e662b: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e662f: e8 5c db ff ff callq 5e4190 0.00 : 5e6634: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(rtable); 0.00 : 5e6638: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e663c: e8 4f db ff ff callq 5e4190 0.00 : 5e6641: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(resultRelations); 0.00 : 5e6645: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e6649: e8 42 db ff ff callq 5e4190 0.00 : 5e664e: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(utilityStmt); 0.00 : 5e6652: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e6656: e8 35 db ff ff callq 5e4190 0.00 : 5e665b: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_NODE_FIELD(subplans); 0.00 : 5e665f: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e6663: e8 28 db ff ff callq 5e4190 0.00 : 5e6668: 48 89 43 30 mov %rax,0x30(%rbx) : COPY_BITMAPSET_FIELD(rewindPlanIDs); 0.00 : 5e666c: 49 8b 7d 38 mov 0x38(%r13),%rdi 0.00 : 5e6670: e8 8b ca ff ff callq 5e3100 0.00 : 5e6675: 48 89 43 38 mov %rax,0x38(%rbx) : COPY_NODE_FIELD(rowMarks); 0.00 : 5e6679: 49 8b 7d 40 mov 0x40(%r13),%rdi 0.00 : 5e667d: e8 0e db ff ff callq 5e4190 0.00 : 5e6682: 48 89 43 40 mov %rax,0x40(%rbx) : COPY_NODE_FIELD(relationOids); 0.00 : 5e6686: 49 8b 7d 48 mov 0x48(%r13),%rdi 0.00 : 5e668a: e8 01 db ff ff callq 5e4190 0.00 : 5e668f: 48 89 43 48 mov %rax,0x48(%rbx) : COPY_NODE_FIELD(invalItems); 0.00 : 5e6693: 49 8b 7d 50 mov 0x50(%r13),%rdi 0.00 : 5e6697: e8 f4 da ff ff callq 5e4190 0.00 : 5e669c: 48 89 43 50 mov %rax,0x50(%rbx) : COPY_SCALAR_FIELD(nParamExec); 0.00 : 5e66a0: 41 8b 45 58 mov 0x58(%r13),%eax 0.00 : 5e66a4: 89 43 58 mov %eax,0x58(%rbx) 0.00 : 5e66a7: 48 89 d8 mov %rbx,%rax : /* : * PLAN NODES : */ : case T_PlannedStmt: : retval = _copyPlannedStmt(from); : break; 0.00 : 5e66aa: e9 5b db ff ff jmpq 5e420a : } : : static InsertStmt * : _copyInsertStmt(const InsertStmt *from) : { : InsertStmt *newnode = makeNode(InsertStmt); 0.00 : 5e66af: 48 8b 3d aa 41 5d 00 mov 0x5d41aa(%rip),%rdi # bba860 0.00 : 5e66b6: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e66bb: e8 50 27 1b 00 callq 798e10 0.00 : 5e66c0: c7 00 be 02 00 00 movl $0x2be,(%rax) : : COPY_NODE_FIELD(relation); 0.00 : 5e66c6: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static InsertStmt * : _copyInsertStmt(const InsertStmt *from) : { : InsertStmt *newnode = makeNode(InsertStmt); 0.00 : 5e66ca: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(relation); 0.00 : 5e66cd: e8 be da ff ff callq 5e4190 0.00 : 5e66d2: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(cols); 0.00 : 5e66d6: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e66da: e8 b1 da ff ff callq 5e4190 0.00 : 5e66df: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(selectStmt); 0.00 : 5e66e3: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e66e7: e8 a4 da ff ff callq 5e4190 0.00 : 5e66ec: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(returningList); 0.00 : 5e66f0: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e66f4: e8 97 da ff ff callq 5e4190 0.00 : 5e66f9: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(withClause); 0.00 : 5e66fd: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e6701: e8 8a da ff ff callq 5e4190 0.00 : 5e6706: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e670a: 48 89 d8 mov %rbx,%rax : case T_Query: : retval = _copyQuery(from); : break; : case T_InsertStmt: : retval = _copyInsertStmt(from); : break; 0.00 : 5e670d: e9 f8 da ff ff jmpq 5e420a : } : : static DeleteStmt * : _copyDeleteStmt(const DeleteStmt *from) : { : DeleteStmt *newnode = makeNode(DeleteStmt); 0.00 : 5e6712: 48 8b 3d 47 41 5d 00 mov 0x5d4147(%rip),%rdi # bba860 0.00 : 5e6719: be 30 00 00 00 mov $0x30,%esi 0.00 : 5e671e: e8 ed 26 1b 00 callq 798e10 0.00 : 5e6723: c7 00 bf 02 00 00 movl $0x2bf,(%rax) : : COPY_NODE_FIELD(relation); 0.00 : 5e6729: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static DeleteStmt * : _copyDeleteStmt(const DeleteStmt *from) : { : DeleteStmt *newnode = makeNode(DeleteStmt); 0.00 : 5e672d: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(relation); 0.00 : 5e6730: e8 5b da ff ff callq 5e4190 0.00 : 5e6735: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(usingClause); 0.00 : 5e6739: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e673d: e8 4e da ff ff callq 5e4190 0.00 : 5e6742: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(whereClause); 0.00 : 5e6746: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e674a: e8 41 da ff ff callq 5e4190 0.00 : 5e674f: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(returningList); 0.00 : 5e6753: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e6757: e8 34 da ff ff callq 5e4190 0.00 : 5e675c: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(withClause); 0.00 : 5e6760: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e6764: e8 27 da ff ff callq 5e4190 0.00 : 5e6769: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e676d: 48 89 d8 mov %rbx,%rax : case T_InsertStmt: : retval = _copyInsertStmt(from); : break; : case T_DeleteStmt: : retval = _copyDeleteStmt(from); : break; 0.00 : 5e6770: e9 95 da ff ff jmpq 5e420a : } : : static UpdateStmt * : _copyUpdateStmt(const UpdateStmt *from) : { : UpdateStmt *newnode = makeNode(UpdateStmt); 0.00 : 5e6775: 48 8b 3d e4 40 5d 00 mov 0x5d40e4(%rip),%rdi # bba860 0.00 : 5e677c: be 38 00 00 00 mov $0x38,%esi 0.00 : 5e6781: e8 8a 26 1b 00 callq 798e10 0.00 : 5e6786: c7 00 c0 02 00 00 movl $0x2c0,(%rax) : : COPY_NODE_FIELD(relation); 0.00 : 5e678c: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static UpdateStmt * : _copyUpdateStmt(const UpdateStmt *from) : { : UpdateStmt *newnode = makeNode(UpdateStmt); 0.00 : 5e6790: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(relation); 0.00 : 5e6793: e8 f8 d9 ff ff callq 5e4190 0.00 : 5e6798: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(targetList); 0.00 : 5e679c: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e67a0: e8 eb d9 ff ff callq 5e4190 0.00 : 5e67a5: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_NODE_FIELD(whereClause); 0.00 : 5e67a9: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e67ad: e8 de d9 ff ff callq 5e4190 0.00 : 5e67b2: 48 89 43 18 mov %rax,0x18(%rbx) : COPY_NODE_FIELD(fromClause); 0.00 : 5e67b6: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 5e67ba: e8 d1 d9 ff ff callq 5e4190 0.00 : 5e67bf: 48 89 43 20 mov %rax,0x20(%rbx) : COPY_NODE_FIELD(returningList); 0.00 : 5e67c3: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5e67c7: e8 c4 d9 ff ff callq 5e4190 0.00 : 5e67cc: 48 89 43 28 mov %rax,0x28(%rbx) : COPY_NODE_FIELD(withClause); 0.00 : 5e67d0: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5e67d4: e8 b7 d9 ff ff callq 5e4190 0.00 : 5e67d9: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e67dd: 48 89 d8 mov %rbx,%rax : case T_DeleteStmt: : retval = _copyDeleteStmt(from); : break; : case T_UpdateStmt: : retval = _copyUpdateStmt(from); : break; 0.00 : 5e67e0: e9 25 da ff ff jmpq 5e420a : case T_SelectStmt: : retval = _copySelectStmt(from); 0.00 : 5e67e5: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e67e8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e67ec: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e67f0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e67f4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e67f8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e67fc: c9 leaveq : break; : case T_UpdateStmt: : retval = _copyUpdateStmt(from); : break; : case T_SelectStmt: : retval = _copySelectStmt(from); 0.00 : 5e67fd: e9 2e 13 00 00 jmpq 5e7b30 <_copySelectStmt> : } : : static AlterTableStmt * : _copyAlterTableStmt(const AlterTableStmt *from) : { : AlterTableStmt *newnode = makeNode(AlterTableStmt); 0.00 : 5e6802: 48 8b 3d 57 40 5d 00 mov 0x5d4057(%rip),%rdi # bba860 0.00 : 5e6809: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e680e: e8 fd 25 1b 00 callq 798e10 0.00 : 5e6813: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : : COPY_NODE_FIELD(relation); 0.00 : 5e6819: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static AlterTableStmt * : _copyAlterTableStmt(const AlterTableStmt *from) : { : AlterTableStmt *newnode = makeNode(AlterTableStmt); 0.00 : 5e681d: 48 89 c3 mov %rax,%rbx : : COPY_NODE_FIELD(relation); 0.00 : 5e6820: e8 6b d9 ff ff callq 5e4190 0.00 : 5e6825: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_NODE_FIELD(cmds); 0.00 : 5e6829: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e682d: e8 5e d9 ff ff callq 5e4190 0.00 : 5e6832: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_SCALAR_FIELD(relkind); 0.00 : 5e6836: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e683a: 89 43 18 mov %eax,0x18(%rbx) : COPY_SCALAR_FIELD(missing_ok); 0.00 : 5e683d: 41 0f b6 45 1c movzbl 0x1c(%r13),%eax 0.00 : 5e6842: 88 43 1c mov %al,0x1c(%rbx) 0.00 : 5e6845: 48 89 d8 mov %rbx,%rax : case T_SetOperationStmt: : retval = _copySetOperationStmt(from); : break; : case T_AlterTableStmt: : retval = _copyAlterTableStmt(from); : break; 0.00 : 5e6848: e9 bd d9 ff ff jmpq 5e420a : case T_AlterTableCmd: : retval = _copyAlterTableCmd(from); 0.00 : 5e684d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6850: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6854: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6858: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e685c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6860: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6864: c9 leaveq : break; : case T_AlterTableStmt: : retval = _copyAlterTableStmt(from); : break; : case T_AlterTableCmd: : retval = _copyAlterTableCmd(from); 0.00 : 5e6865: e9 96 14 00 00 jmpq 5e7d00 <_copyAlterTableCmd> : break; : case T_AlterDomainStmt: : retval = _copyAlterDomainStmt(from); 0.00 : 5e686a: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e686d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6871: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6875: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6879: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e687d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6881: c9 leaveq : break; : case T_AlterTableCmd: : retval = _copyAlterTableCmd(from); : break; : case T_AlterDomainStmt: : retval = _copyAlterDomainStmt(from); 0.00 : 5e6882: e9 e9 14 00 00 jmpq 5e7d70 <_copyAlterDomainStmt> : break; : case T_SelectStmt: : retval = _copySelectStmt(from); : break; : case T_SetOperationStmt: : retval = _copySetOperationStmt(from); 0.00 : 5e6887: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e688a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e688e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6892: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6896: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e689a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e689e: c9 leaveq : break; : case T_SelectStmt: : retval = _copySelectStmt(from); : break; : case T_SetOperationStmt: : retval = _copySetOperationStmt(from); 0.00 : 5e689f: e9 bc 13 00 00 jmpq 5e7c60 <_copySetOperationStmt> : break; : case T_AlterDomainStmt: : retval = _copyAlterDomainStmt(from); : break; : case T_GrantStmt: : retval = _copyGrantStmt(from); 0.00 : 5e68a4: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e68a7: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e68ab: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e68af: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e68b3: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e68b7: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e68bb: c9 leaveq : break; : case T_AlterDomainStmt: : retval = _copyAlterDomainStmt(from); : break; : case T_GrantStmt: : retval = _copyGrantStmt(from); 0.00 : 5e68bc: e9 2f 15 00 00 jmpq 5e7df0 <_copyGrantStmt> : break; : case T_GrantRoleStmt: : retval = _copyGrantRoleStmt(from); 0.00 : 5e68c1: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e68c4: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e68c8: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e68cc: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e68d0: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e68d4: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e68d8: c9 leaveq : break; : case T_GrantStmt: : retval = _copyGrantStmt(from); : break; : case T_GrantRoleStmt: : retval = _copyGrantRoleStmt(from); 0.00 : 5e68d9: e9 92 15 00 00 jmpq 5e7e70 <_copyGrantRoleStmt> : break; : case T_AlterDefaultPrivilegesStmt: : retval = _copyAlterDefaultPrivilegesStmt(from); 0.00 : 5e68de: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e68e1: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e68e5: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e68e9: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e68ed: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e68f1: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e68f5: c9 leaveq : break; : case T_GrantRoleStmt: : retval = _copyGrantRoleStmt(from); : break; : case T_AlterDefaultPrivilegesStmt: : retval = _copyAlterDefaultPrivilegesStmt(from); 0.00 : 5e68f6: e9 f5 15 00 00 jmpq 5e7ef0 <_copyAlterDefaultPrivilegesStmt> : } : : static ClosePortalStmt * : _copyClosePortalStmt(const ClosePortalStmt *from) : { : ClosePortalStmt *newnode = makeNode(ClosePortalStmt); 0.00 : 5e68fb: 48 8b 3d 5e 3f 5d 00 mov 0x5d3f5e(%rip),%rdi # bba860 0.00 : 5e6902: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e6907: e8 04 25 1b 00 callq 798e10 0.00 : 5e690c: c7 00 c9 02 00 00 movl $0x2c9,(%rax) : : COPY_STRING_FIELD(portalname); 0.00 : 5e6912: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static ClosePortalStmt * : _copyClosePortalStmt(const ClosePortalStmt *from) : { : ClosePortalStmt *newnode = makeNode(ClosePortalStmt); 0.00 : 5e6916: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(portalname); 0.00 : 5e6919: 31 c0 xor %eax,%eax 0.00 : 5e691b: 48 85 ff test %rdi,%rdi 0.00 : 5e691e: 74 05 je 5e6925 0.00 : 5e6920: e8 2b 26 1b 00 callq 798f50 0.00 : 5e6925: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e6929: 48 89 d8 mov %rbx,%rax : case T_DeclareCursorStmt: : retval = _copyDeclareCursorStmt(from); : break; : case T_ClosePortalStmt: : retval = _copyClosePortalStmt(from); : break; 0.00 : 5e692c: e9 d9 d8 ff ff jmpq 5e420a : case T_ClusterStmt: : retval = _copyClusterStmt(from); 0.00 : 5e6931: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6934: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6938: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e693c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6940: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6944: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6948: c9 leaveq : break; : case T_ClosePortalStmt: : retval = _copyClosePortalStmt(from); : break; : case T_ClusterStmt: : retval = _copyClusterStmt(from); 0.00 : 5e6949: e9 62 16 00 00 jmpq 5e7fb0 <_copyClusterStmt> : break; : case T_CopyStmt: : retval = _copyCopyStmt(from); 0.00 : 5e694e: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6951: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6955: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6959: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e695d: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6961: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6965: c9 leaveq : break; : case T_ClusterStmt: : retval = _copyClusterStmt(from); : break; : case T_CopyStmt: : retval = _copyCopyStmt(from); 0.00 : 5e6966: e9 a5 16 00 00 jmpq 5e8010 <_copyCopyStmt> : break; : case T_CreateStmt: : retval = _copyCreateStmt(from); 0.00 : 5e696b: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e696e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6972: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6976: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e697a: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e697e: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6982: c9 leaveq : break; : case T_CopyStmt: : retval = _copyCopyStmt(from); : break; : case T_CreateStmt: : retval = _copyCreateStmt(from); 0.00 : 5e6983: e9 a8 17 00 00 jmpq 5e8130 <_copyCreateStmt> : break; : case T_TableLikeClause: : retval = _copyTableLikeClause(from); : break; : case T_DefineStmt: : retval = _copyDefineStmt(from); 0.00 : 5e6988: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e698b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e698f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6993: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6997: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e699b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e699f: c9 leaveq : break; : case T_TableLikeClause: : retval = _copyTableLikeClause(from); : break; : case T_DefineStmt: : retval = _copyDefineStmt(from); 0.00 : 5e69a0: e9 3b 18 00 00 jmpq 5e81e0 <_copyDefineStmt> : break; : case T_DropStmt: : retval = _copyDropStmt(from); 0.00 : 5e69a5: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e69a8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e69ac: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e69b0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e69b4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e69b8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e69bc: c9 leaveq : break; : case T_DefineStmt: : retval = _copyDefineStmt(from); : break; : case T_DropStmt: : retval = _copyDropStmt(from); 0.00 : 5e69bd: e9 8e 18 00 00 jmpq 5e8250 <_copyDropStmt> : break; : case T_TruncateStmt: : retval = _copyTruncateStmt(from); 0.00 : 5e69c2: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e69c5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e69c9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e69cd: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e69d1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e69d5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e69d9: c9 leaveq : break; : case T_DropStmt: : retval = _copyDropStmt(from); : break; : case T_TruncateStmt: : retval = _copyTruncateStmt(from); 0.00 : 5e69da: e9 e1 18 00 00 jmpq 5e82c0 <_copyTruncateStmt> : break; : case T_CommentStmt: : retval = _copyCommentStmt(from); 0.00 : 5e69df: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e69e2: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e69e6: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e69ea: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e69ee: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e69f2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e69f6: c9 leaveq : break; : case T_TruncateStmt: : retval = _copyTruncateStmt(from); : break; : case T_CommentStmt: : retval = _copyCommentStmt(from); 0.00 : 5e69f7: e9 24 19 00 00 jmpq 5e8320 <_copyCommentStmt> : } : : static FetchStmt * : _copyFetchStmt(const FetchStmt *from) : { : FetchStmt *newnode = makeNode(FetchStmt); 0.00 : 5e69fc: 48 8b 3d 5d 3e 5d 00 mov 0x5d3e5d(%rip),%rdi # bba860 0.00 : 5e6a03: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e6a08: e8 03 24 1b 00 callq 798e10 0.00 : 5e6a0d: c7 00 d1 02 00 00 movl $0x2d1,(%rax) 0.00 : 5e6a13: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(direction); 0.00 : 5e6a16: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5e6a1a: 89 43 04 mov %eax,0x4(%rbx) : COPY_SCALAR_FIELD(howMany); 0.00 : 5e6a1d: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 5e6a21: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_STRING_FIELD(portalname); 0.00 : 5e6a25: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e6a29: 31 c0 xor %eax,%eax 0.00 : 5e6a2b: 48 85 ff test %rdi,%rdi 0.00 : 5e6a2e: 74 05 je 5e6a35 0.00 : 5e6a30: e8 1b 25 1b 00 callq 798f50 0.00 : 5e6a35: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_SCALAR_FIELD(ismove); 0.00 : 5e6a39: 41 0f b6 45 18 movzbl 0x18(%r13),%eax 0.00 : 5e6a3e: 88 43 18 mov %al,0x18(%rbx) 0.00 : 5e6a41: 48 89 d8 mov %rbx,%rax : case T_SecLabelStmt: : retval = _copySecLabelStmt(from); : break; : case T_FetchStmt: : retval = _copyFetchStmt(from); : break; 0.00 : 5e6a44: e9 c1 d7 ff ff jmpq 5e420a : case T_IndexStmt: : retval = _copyIndexStmt(from); 0.00 : 5e6a49: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6a4c: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6a50: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6a54: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6a58: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6a5c: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6a60: c9 leaveq : break; : case T_FetchStmt: : retval = _copyFetchStmt(from); : break; : case T_IndexStmt: : retval = _copyIndexStmt(from); 0.00 : 5e6a61: e9 aa 19 00 00 jmpq 5e8410 <_copyIndexStmt> : break; : case T_CreateFunctionStmt: : retval = _copyCreateFunctionStmt(from); 0.00 : 5e6a66: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6a69: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6a6d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6a71: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6a75: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6a79: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6a7d: c9 leaveq : break; : case T_IndexStmt: : retval = _copyIndexStmt(from); : break; : case T_CreateFunctionStmt: : retval = _copyCreateFunctionStmt(from); 0.00 : 5e6a7e: e9 9d 1a 00 00 jmpq 5e8520 <_copyCreateFunctionStmt> : break; : case T_FunctionParameter: : retval = _copyFunctionParameter(from); : break; : case T_AlterFunctionStmt: : retval = _copyAlterFunctionStmt(from); 0.00 : 5e6a83: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6a86: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6a8a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6a8e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6a92: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6a96: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6a9a: c9 leaveq : break; : case T_FunctionParameter: : retval = _copyFunctionParameter(from); : break; : case T_AlterFunctionStmt: : retval = _copyAlterFunctionStmt(from); 0.00 : 5e6a9b: e9 70 1b 00 00 jmpq 5e8610 <_copyAlterFunctionStmt> : break; : case T_DoStmt: : retval = _copyDoStmt(from); 0.00 : 5e6aa0: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6aa3: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6aa7: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6aab: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6aaf: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6ab3: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6ab7: c9 leaveq : break; : case T_AlterFunctionStmt: : retval = _copyAlterFunctionStmt(from); : break; : case T_DoStmt: : retval = _copyDoStmt(from); 0.00 : 5e6ab8: e9 b3 1b 00 00 jmpq 5e8670 <_copyDoStmt> : break; : case T_RenameStmt: : retval = _copyRenameStmt(from); 0.00 : 5e6abd: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6ac0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6ac4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6ac8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6acc: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6ad0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6ad4: c9 leaveq : break; : case T_DoStmt: : retval = _copyDoStmt(from); : break; : case T_RenameStmt: : retval = _copyRenameStmt(from); 0.00 : 5e6ad5: e9 e6 1b 00 00 jmpq 5e86c0 <_copyRenameStmt> : break; : case T_AlterOwnerStmt: : retval = _copyAlterOwnerStmt(from); : break; : case T_RuleStmt: : retval = _copyRuleStmt(from); 0.00 : 5e6ada: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6add: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6ae1: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6ae5: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6ae9: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6aed: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6af1: c9 leaveq : break; : case T_AlterOwnerStmt: : retval = _copyAlterOwnerStmt(from); : break; : case T_RuleStmt: : retval = _copyRuleStmt(from); 0.00 : 5e6af2: e9 79 1d 00 00 jmpq 5e8870 <_copyRuleStmt> : } : : static NotifyStmt * : _copyNotifyStmt(const NotifyStmt *from) : { : NotifyStmt *newnode = makeNode(NotifyStmt); 0.00 : 5e6af7: 48 8b 3d 62 3d 5d 00 mov 0x5d3d62(%rip),%rdi # bba860 0.00 : 5e6afe: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e6b03: e8 08 23 1b 00 callq 798e10 0.00 : 5e6b08: c7 00 d8 02 00 00 movl $0x2d8,(%rax) : : COPY_STRING_FIELD(conditionname); 0.00 : 5e6b0e: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static NotifyStmt * : _copyNotifyStmt(const NotifyStmt *from) : { : NotifyStmt *newnode = makeNode(NotifyStmt); 0.00 : 5e6b12: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(conditionname); 0.00 : 5e6b15: 31 c0 xor %eax,%eax 0.00 : 5e6b17: 48 85 ff test %rdi,%rdi 0.00 : 5e6b1a: 74 05 je 5e6b21 0.00 : 5e6b1c: e8 2f 24 1b 00 callq 798f50 0.00 : 5e6b21: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_STRING_FIELD(payload); 0.00 : 5e6b25: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e6b29: 31 c0 xor %eax,%eax 0.00 : 5e6b2b: 48 85 ff test %rdi,%rdi 0.00 : 5e6b2e: 74 05 je 5e6b35 0.00 : 5e6b30: e8 1b 24 1b 00 callq 798f50 0.00 : 5e6b35: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e6b39: 48 89 d8 mov %rbx,%rax : case T_RuleStmt: : retval = _copyRuleStmt(from); : break; : case T_NotifyStmt: : retval = _copyNotifyStmt(from); : break; 0.00 : 5e6b3c: e9 c9 d6 ff ff jmpq 5e420a : } : : static ListenStmt * : _copyListenStmt(const ListenStmt *from) : { : ListenStmt *newnode = makeNode(ListenStmt); 0.00 : 5e6b41: 48 8b 3d 18 3d 5d 00 mov 0x5d3d18(%rip),%rdi # bba860 0.00 : 5e6b48: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e6b4d: e8 be 22 1b 00 callq 798e10 0.00 : 5e6b52: c7 00 d9 02 00 00 movl $0x2d9,(%rax) : : COPY_STRING_FIELD(conditionname); 0.00 : 5e6b58: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static ListenStmt * : _copyListenStmt(const ListenStmt *from) : { : ListenStmt *newnode = makeNode(ListenStmt); 0.00 : 5e6b5c: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(conditionname); 0.00 : 5e6b5f: 31 c0 xor %eax,%eax 0.00 : 5e6b61: 48 85 ff test %rdi,%rdi 0.00 : 5e6b64: 74 05 je 5e6b6b 0.00 : 5e6b66: e8 e5 23 1b 00 callq 798f50 0.00 : 5e6b6b: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e6b6f: 48 89 d8 mov %rbx,%rax : case T_NotifyStmt: : retval = _copyNotifyStmt(from); : break; : case T_ListenStmt: : retval = _copyListenStmt(from); : break; 0.00 : 5e6b72: e9 93 d6 ff ff jmpq 5e420a : } : : static UnlistenStmt * : _copyUnlistenStmt(const UnlistenStmt *from) : { : UnlistenStmt *newnode = makeNode(UnlistenStmt); 0.00 : 5e6b77: 48 8b 3d e2 3c 5d 00 mov 0x5d3ce2(%rip),%rdi # bba860 0.00 : 5e6b7e: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e6b83: e8 88 22 1b 00 callq 798e10 0.00 : 5e6b88: c7 00 da 02 00 00 movl $0x2da,(%rax) : : COPY_STRING_FIELD(conditionname); 0.00 : 5e6b8e: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static UnlistenStmt * : _copyUnlistenStmt(const UnlistenStmt *from) : { : UnlistenStmt *newnode = makeNode(UnlistenStmt); 0.00 : 5e6b92: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(conditionname); 0.00 : 5e6b95: 31 c0 xor %eax,%eax 0.00 : 5e6b97: 48 85 ff test %rdi,%rdi 0.00 : 5e6b9a: 74 05 je 5e6ba1 0.00 : 5e6b9c: e8 af 23 1b 00 callq 798f50 0.00 : 5e6ba1: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e6ba5: 48 89 d8 mov %rbx,%rax : case T_ListenStmt: : retval = _copyListenStmt(from); : break; : case T_UnlistenStmt: : retval = _copyUnlistenStmt(from); : break; 0.00 : 5e6ba8: e9 5d d6 ff ff jmpq 5e420a : case T_TransactionStmt: : retval = _copyTransactionStmt(from); 0.00 : 5e6bad: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6bb0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6bb4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6bb8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6bbc: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6bc0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6bc4: c9 leaveq : break; : case T_UnlistenStmt: : retval = _copyUnlistenStmt(from); : break; : case T_TransactionStmt: : retval = _copyTransactionStmt(from); 0.00 : 5e6bc5: e9 36 1d 00 00 jmpq 5e8900 <_copyTransactionStmt> : break; : case T_AlterEnumStmt: : retval = _copyAlterEnumStmt(from); : break; : case T_ViewStmt: : retval = _copyViewStmt(from); 0.00 : 5e6bca: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6bcd: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6bd1: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6bd5: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6bd9: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6bdd: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6be1: c9 leaveq : break; : case T_AlterEnumStmt: : retval = _copyAlterEnumStmt(from); : break; : case T_ViewStmt: : retval = _copyViewStmt(from); 0.00 : 5e6be2: e9 19 1f 00 00 jmpq 5e8b00 <_copyViewStmt> : } : : static LoadStmt * : _copyLoadStmt(const LoadStmt *from) : { : LoadStmt *newnode = makeNode(LoadStmt); 0.00 : 5e6be7: 48 8b 3d 72 3c 5d 00 mov 0x5d3c72(%rip),%rdi # bba860 0.00 : 5e6bee: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e6bf3: e8 18 22 1b 00 callq 798e10 0.00 : 5e6bf8: c7 00 dd 02 00 00 movl $0x2dd,(%rax) : : COPY_STRING_FIELD(filename); 0.00 : 5e6bfe: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static LoadStmt * : _copyLoadStmt(const LoadStmt *from) : { : LoadStmt *newnode = makeNode(LoadStmt); 0.00 : 5e6c02: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(filename); 0.00 : 5e6c05: 31 c0 xor %eax,%eax 0.00 : 5e6c07: 48 85 ff test %rdi,%rdi 0.00 : 5e6c0a: 74 05 je 5e6c11 0.00 : 5e6c0c: e8 3f 23 1b 00 callq 798f50 0.00 : 5e6c11: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e6c15: 48 89 d8 mov %rbx,%rax : case T_ViewStmt: : retval = _copyViewStmt(from); : break; : case T_LoadStmt: : retval = _copyLoadStmt(from); : break; 0.00 : 5e6c18: e9 ed d5 ff ff jmpq 5e420a : case T_CreateDomainStmt: : retval = _copyCreateDomainStmt(from); 0.00 : 5e6c1d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6c20: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6c24: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6c28: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6c2c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6c30: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6c34: c9 leaveq : break; : case T_LoadStmt: : retval = _copyLoadStmt(from); : break; : case T_CreateDomainStmt: : retval = _copyCreateDomainStmt(from); 0.00 : 5e6c35: e9 46 1f 00 00 jmpq 5e8b80 <_copyCreateDomainStmt> : break; : case T_AlterOpFamilyStmt: : retval = _copyAlterOpFamilyStmt(from); : break; : case T_CreatedbStmt: : retval = _copyCreatedbStmt(from); 0.00 : 5e6c3a: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6c3d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6c41: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6c45: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6c49: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6c4d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6c51: c9 leaveq : break; : case T_AlterOpFamilyStmt: : retval = _copyAlterOpFamilyStmt(from); : break; : case T_CreatedbStmt: : retval = _copyCreatedbStmt(from); 0.00 : 5e6c52: e9 79 21 00 00 jmpq 5e8dd0 <_copyCreatedbStmt> : } : : static DropdbStmt * : _copyDropdbStmt(const DropdbStmt *from) : { : DropdbStmt *newnode = makeNode(DropdbStmt); 0.00 : 5e6c57: 48 8b 3d 02 3c 5d 00 mov 0x5d3c02(%rip),%rdi # bba860 0.00 : 5e6c5e: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e6c63: e8 a8 21 1b 00 callq 798e10 0.00 : 5e6c68: c7 00 e0 02 00 00 movl $0x2e0,(%rax) : : COPY_STRING_FIELD(dbname); 0.00 : 5e6c6e: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static DropdbStmt * : _copyDropdbStmt(const DropdbStmt *from) : { : DropdbStmt *newnode = makeNode(DropdbStmt); 0.00 : 5e6c72: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(dbname); 0.00 : 5e6c75: 31 c0 xor %eax,%eax 0.00 : 5e6c77: 48 85 ff test %rdi,%rdi 0.00 : 5e6c7a: 74 05 je 5e6c81 0.00 : 5e6c7c: e8 cf 22 1b 00 callq 798f50 0.00 : 5e6c81: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(missing_ok); 0.00 : 5e6c85: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e6c8a: 88 43 10 mov %al,0x10(%rbx) 0.00 : 5e6c8d: 48 89 d8 mov %rbx,%rax : case T_AlterDatabaseSetStmt: : retval = _copyAlterDatabaseSetStmt(from); : break; : case T_DropdbStmt: : retval = _copyDropdbStmt(from); : break; 0.00 : 5e6c90: e9 75 d5 ff ff jmpq 5e420a : case T_VacuumStmt: : retval = _copyVacuumStmt(from); 0.00 : 5e6c95: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6c98: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6c9c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6ca0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6ca4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6ca8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6cac: c9 leaveq : break; : case T_DropdbStmt: : retval = _copyDropdbStmt(from); : break; : case T_VacuumStmt: : retval = _copyVacuumStmt(from); 0.00 : 5e6cad: e9 0e 22 00 00 jmpq 5e8ec0 <_copyVacuumStmt> : break; : case T_ExplainStmt: : retval = _copyExplainStmt(from); 0.00 : 5e6cb2: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6cb5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6cb9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6cbd: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6cc1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6cc5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6cc9: c9 leaveq : break; : case T_VacuumStmt: : retval = _copyVacuumStmt(from); : break; : case T_ExplainStmt: : retval = _copyExplainStmt(from); 0.00 : 5e6cca: e9 61 22 00 00 jmpq 5e8f30 <_copyExplainStmt> : break; : case T_CreateTableAsStmt: : retval = _copyCreateTableAsStmt(from); 0.00 : 5e6ccf: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6cd2: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6cd6: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6cda: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6cde: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6ce2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6ce6: c9 leaveq : break; : case T_ExplainStmt: : retval = _copyExplainStmt(from); : break; : case T_CreateTableAsStmt: : retval = _copyCreateTableAsStmt(from); 0.00 : 5e6ce7: e9 a4 22 00 00 jmpq 5e8f90 <_copyCreateTableAsStmt> : break; : case T_AlterSystemStmt: : retval = _copyAlterSystemStmt(from); : break; : case T_CreateSeqStmt: : retval = _copyCreateSeqStmt(from); 0.00 : 5e6cec: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6cef: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6cf3: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6cf7: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6cfb: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6cff: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6d03: c9 leaveq : break; : case T_AlterSystemStmt: : retval = _copyAlterSystemStmt(from); : break; : case T_CreateSeqStmt: : retval = _copyCreateSeqStmt(from); 0.00 : 5e6d04: e9 97 23 00 00 jmpq 5e90a0 <_copyCreateSeqStmt> : break; : case T_AlterSeqStmt: : retval = _copyAlterSeqStmt(from); 0.00 : 5e6d09: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6d0c: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6d10: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6d14: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6d18: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6d1c: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6d20: c9 leaveq : break; : case T_CreateSeqStmt: : retval = _copyCreateSeqStmt(from); : break; : case T_AlterSeqStmt: : retval = _copyAlterSeqStmt(from); 0.00 : 5e6d21: e9 da 23 00 00 jmpq 5e9100 <_copyAlterSeqStmt> : break; : case T_VariableSetStmt: : retval = _copyVariableSetStmt(from); 0.00 : 5e6d26: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6d29: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6d2d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6d31: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6d35: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6d39: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6d3d: c9 leaveq : break; : case T_AlterSeqStmt: : retval = _copyAlterSeqStmt(from); : break; : case T_VariableSetStmt: : retval = _copyVariableSetStmt(from); 0.00 : 5e6d3e: e9 1d 24 00 00 jmpq 5e9160 <_copyVariableSetStmt> : } : : static VariableShowStmt * : _copyVariableShowStmt(const VariableShowStmt *from) : { : VariableShowStmt *newnode = makeNode(VariableShowStmt); 0.00 : 5e6d43: 48 8b 3d 16 3b 5d 00 mov 0x5d3b16(%rip),%rdi # bba860 0.00 : 5e6d4a: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e6d4f: e8 bc 20 1b 00 callq 798e10 0.00 : 5e6d54: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : : COPY_STRING_FIELD(name); 0.00 : 5e6d5a: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static VariableShowStmt * : _copyVariableShowStmt(const VariableShowStmt *from) : { : VariableShowStmt *newnode = makeNode(VariableShowStmt); 0.00 : 5e6d5e: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(name); 0.00 : 5e6d61: 31 c0 xor %eax,%eax 0.00 : 5e6d63: 48 85 ff test %rdi,%rdi 0.00 : 5e6d66: 74 05 je 5e6d6d 0.00 : 5e6d68: e8 e3 21 1b 00 callq 798f50 0.00 : 5e6d6d: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e6d71: 48 89 d8 mov %rbx,%rax : case T_VariableSetStmt: : retval = _copyVariableSetStmt(from); : break; : case T_VariableShowStmt: : retval = _copyVariableShowStmt(from); : break; 0.00 : 5e6d74: e9 91 d4 ff ff jmpq 5e420a : } : : static DiscardStmt * : _copyDiscardStmt(const DiscardStmt *from) : { : DiscardStmt *newnode = makeNode(DiscardStmt); 0.00 : 5e6d79: 48 8b 3d e0 3a 5d 00 mov 0x5d3ae0(%rip),%rdi # bba860 0.00 : 5e6d80: be 08 00 00 00 mov $0x8,%esi 0.00 : 5e6d85: e8 86 20 1b 00 callq 798e10 0.00 : 5e6d8a: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : : COPY_SCALAR_FIELD(target); 0.00 : 5e6d90: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e6d94: 89 50 04 mov %edx,0x4(%rax) : case T_VariableShowStmt: : retval = _copyVariableShowStmt(from); : break; : case T_DiscardStmt: : retval = _copyDiscardStmt(from); : break; 0.00 : 5e6d97: e9 6e d4 ff ff jmpq 5e420a : break; : case T_ImportForeignSchemaStmt: : retval = _copyImportForeignSchemaStmt(from); : break; : case T_CreateTrigStmt: : retval = _copyCreateTrigStmt(from); 0.00 : 5e6d9c: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6d9f: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6da3: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6da7: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6dab: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6daf: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6db3: c9 leaveq : break; : case T_ImportForeignSchemaStmt: : retval = _copyImportForeignSchemaStmt(from); : break; : case T_CreateTrigStmt: : retval = _copyCreateTrigStmt(from); 0.00 : 5e6db4: e9 17 2a 00 00 jmpq 5e97d0 <_copyCreateTrigStmt> : break; : case T_AlterEventTrigStmt: : retval = _copyAlterEventTrigStmt(from); : break; : case T_CreatePLangStmt: : retval = _copyCreatePLangStmt(from); 0.00 : 5e6db9: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6dbc: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6dc0: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6dc4: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6dc8: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6dcc: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6dd0: c9 leaveq : break; : case T_AlterEventTrigStmt: : retval = _copyAlterEventTrigStmt(from); : break; : case T_CreatePLangStmt: : retval = _copyCreatePLangStmt(from); 0.00 : 5e6dd1: e9 4a 2b 00 00 jmpq 5e9920 <_copyCreatePLangStmt> : break; : case T_CreateRoleStmt: : retval = _copyCreateRoleStmt(from); 0.00 : 5e6dd6: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6dd9: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6ddd: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6de1: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6de5: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6de9: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6ded: c9 leaveq : break; : case T_CreatePLangStmt: : retval = _copyCreatePLangStmt(from); : break; : case T_CreateRoleStmt: : retval = _copyCreateRoleStmt(from); 0.00 : 5e6dee: e9 ad 2b 00 00 jmpq 5e99a0 <_copyCreateRoleStmt> : break; : case T_AlterRoleStmt: : retval = _copyAlterRoleStmt(from); 0.00 : 5e6df3: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6df6: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6dfa: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6dfe: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6e02: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6e06: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6e0a: c9 leaveq : break; : case T_CreateRoleStmt: : retval = _copyCreateRoleStmt(from); : break; : case T_AlterRoleStmt: : retval = _copyAlterRoleStmt(from); 0.00 : 5e6e0b: e9 f0 2b 00 00 jmpq 5e9a00 <_copyAlterRoleStmt> : break; : case T_AlterRoleSetStmt: : retval = _copyAlterRoleSetStmt(from); : break; : case T_DropRoleStmt: : retval = _copyDropRoleStmt(from); 0.00 : 5e6e10: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6e13: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6e17: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6e1b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6e1f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6e23: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6e27: c9 leaveq : break; : case T_AlterRoleSetStmt: : retval = _copyAlterRoleSetStmt(from); : break; : case T_DropRoleStmt: : retval = _copyDropRoleStmt(from); 0.00 : 5e6e28: e9 a3 2c 00 00 jmpq 5e9ad0 <_copyDropRoleStmt> : break; : case T_LockStmt: : retval = _copyLockStmt(from); 0.00 : 5e6e2d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6e30: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6e34: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6e38: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6e3c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6e40: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6e44: c9 leaveq : break; : case T_DropRoleStmt: : retval = _copyDropRoleStmt(from); : break; : case T_LockStmt: : retval = _copyLockStmt(from); 0.00 : 5e6e45: e9 e6 2c 00 00 jmpq 5e9b30 <_copyLockStmt> : break; : case T_ConstraintsSetStmt: : retval = _copyConstraintsSetStmt(from); 0.00 : 5e6e4a: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6e4d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6e51: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6e55: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6e59: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6e5d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6e61: c9 leaveq : break; : case T_LockStmt: : retval = _copyLockStmt(from); : break; : case T_ConstraintsSetStmt: : retval = _copyConstraintsSetStmt(from); 0.00 : 5e6e62: e9 29 2d 00 00 jmpq 5e9b90 <_copyConstraintsSetStmt> : break; : case T_ReindexStmt: : retval = _copyReindexStmt(from); 0.00 : 5e6e67: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6e6a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6e6e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6e72: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6e76: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6e7a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6e7e: c9 leaveq : break; : case T_ConstraintsSetStmt: : retval = _copyConstraintsSetStmt(from); : break; : case T_ReindexStmt: : retval = _copyReindexStmt(from); 0.00 : 5e6e7f: e9 6c 2d 00 00 jmpq 5e9bf0 <_copyReindexStmt> : break; : case T_CheckPointStmt: : retval = (void *) makeNode(CheckPointStmt); 0.00 : 5e6e84: 48 8b 3d d5 39 5d 00 mov 0x5d39d5(%rip),%rdi # bba860 0.00 : 5e6e8b: be 04 00 00 00 mov $0x4,%esi 0.00 : 5e6e90: e8 8b 21 1b 00 callq 799020 0.00 : 5e6e95: c7 00 f1 02 00 00 movl $0x2f1,(%rax) : break; 0.00 : 5e6e9b: e9 6a d3 ff ff jmpq 5e420a : case T_CreateSchemaStmt: : retval = _copyCreateSchemaStmt(from); 0.00 : 5e6ea0: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6ea3: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6ea7: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6eab: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6eaf: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6eb3: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6eb7: c9 leaveq : break; : case T_CheckPointStmt: : retval = (void *) makeNode(CheckPointStmt); : break; : case T_CreateSchemaStmt: : retval = _copyCreateSchemaStmt(from); 0.00 : 5e6eb8: e9 a3 2d 00 00 jmpq 5e9c60 <_copyCreateSchemaStmt> : break; : case T_CreatedbStmt: : retval = _copyCreatedbStmt(from); : break; : case T_AlterDatabaseStmt: : retval = _copyAlterDatabaseStmt(from); 0.00 : 5e6ebd: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6ec0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6ec4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6ec8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6ecc: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6ed0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6ed4: c9 leaveq : break; : case T_CreatedbStmt: : retval = _copyCreatedbStmt(from); : break; : case T_AlterDatabaseStmt: : retval = _copyAlterDatabaseStmt(from); 0.00 : 5e6ed5: e9 46 1f 00 00 jmpq 5e8e20 <_copyAlterDatabaseStmt> : break; : case T_AlterDatabaseSetStmt: : retval = _copyAlterDatabaseSetStmt(from); 0.00 : 5e6eda: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6edd: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6ee1: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6ee5: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6ee9: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6eed: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6ef1: c9 leaveq : break; : case T_AlterDatabaseStmt: : retval = _copyAlterDatabaseStmt(from); : break; : case T_AlterDatabaseSetStmt: : retval = _copyAlterDatabaseSetStmt(from); 0.00 : 5e6ef2: e9 79 1f 00 00 jmpq 5e8e70 <_copyAlterDatabaseSetStmt> : break; : case T_AlterRoleStmt: : retval = _copyAlterRoleStmt(from); : break; : case T_AlterRoleSetStmt: : retval = _copyAlterRoleSetStmt(from); 0.00 : 5e6ef7: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6efa: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6efe: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6f02: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6f06: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6f0a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6f0e: c9 leaveq : break; : case T_AlterRoleStmt: : retval = _copyAlterRoleStmt(from); : break; : case T_AlterRoleSetStmt: : retval = _copyAlterRoleSetStmt(from); 0.00 : 5e6f0f: e9 4c 2b 00 00 jmpq 5e9a60 <_copyAlterRoleSetStmt> : break; : case T_CreateSchemaStmt: : retval = _copyCreateSchemaStmt(from); : break; : case T_CreateConversionStmt: : retval = _copyCreateConversionStmt(from); 0.00 : 5e6f14: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6f17: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6f1b: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6f1f: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6f23: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6f27: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6f2b: c9 leaveq : break; : case T_CreateSchemaStmt: : retval = _copyCreateSchemaStmt(from); : break; : case T_CreateConversionStmt: : retval = _copyCreateConversionStmt(from); 0.00 : 5e6f2c: e9 9f 2d 00 00 jmpq 5e9cd0 <_copyCreateConversionStmt> : break; : case T_CreateCastStmt: : retval = _copyCreateCastStmt(from); 0.00 : 5e6f31: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6f34: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6f38: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6f3c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6f40: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6f44: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6f48: c9 leaveq : break; : case T_CreateConversionStmt: : retval = _copyCreateConversionStmt(from); : break; : case T_CreateCastStmt: : retval = _copyCreateCastStmt(from); 0.00 : 5e6f49: e9 02 2e 00 00 jmpq 5e9d50 <_copyCreateCastStmt> : break; : case T_CreateDomainStmt: : retval = _copyCreateDomainStmt(from); : break; : case T_CreateOpClassStmt: : retval = _copyCreateOpClassStmt(from); 0.00 : 5e6f4e: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6f51: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6f55: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6f59: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6f5d: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6f61: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6f65: c9 leaveq : break; : case T_CreateDomainStmt: : retval = _copyCreateDomainStmt(from); : break; : case T_CreateOpClassStmt: : retval = _copyCreateOpClassStmt(from); 0.00 : 5e6f66: e9 85 1c 00 00 jmpq 5e8bf0 <_copyCreateOpClassStmt> : break; : case T_CreateOpClassItem: : retval = _copyCreateOpClassItem(from); : break; : case T_CreateOpFamilyStmt: : retval = _copyCreateOpFamilyStmt(from); 0.00 : 5e6f6b: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6f6e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6f72: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6f76: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6f7a: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6f7e: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6f82: c9 leaveq : break; : case T_CreateOpClassItem: : retval = _copyCreateOpClassItem(from); : break; : case T_CreateOpFamilyStmt: : retval = _copyCreateOpFamilyStmt(from); 0.00 : 5e6f83: e9 88 1d 00 00 jmpq 5e8d10 <_copyCreateOpFamilyStmt> : break; : case T_AlterOpFamilyStmt: : retval = _copyAlterOpFamilyStmt(from); 0.00 : 5e6f88: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6f8b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6f8f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6f93: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6f97: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6f9b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6f9f: c9 leaveq : break; : case T_CreateOpFamilyStmt: : retval = _copyCreateOpFamilyStmt(from); : break; : case T_AlterOpFamilyStmt: : retval = _copyAlterOpFamilyStmt(from); 0.00 : 5e6fa0: e9 bb 1d 00 00 jmpq 5e8d60 <_copyAlterOpFamilyStmt> : break; : case T_CreateCastStmt: : retval = _copyCreateCastStmt(from); : break; : case T_PrepareStmt: : retval = _copyPrepareStmt(from); 0.00 : 5e6fa5: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6fa8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6fac: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6fb0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6fb4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6fb8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6fbc: c9 leaveq : break; : case T_CreateCastStmt: : retval = _copyCreateCastStmt(from); : break; : case T_PrepareStmt: : retval = _copyPrepareStmt(from); 0.00 : 5e6fbd: e9 fe 2d 00 00 jmpq 5e9dc0 <_copyPrepareStmt> : break; : case T_ExecuteStmt: : retval = _copyExecuteStmt(from); 0.00 : 5e6fc2: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e6fc5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e6fc9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e6fcd: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e6fd1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e6fd5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e6fd9: c9 leaveq : break; : case T_PrepareStmt: : retval = _copyPrepareStmt(from); : break; : case T_ExecuteStmt: : retval = _copyExecuteStmt(from); 0.00 : 5e6fda: e9 41 2e 00 00 jmpq 5e9e20 <_copyExecuteStmt> : } : : static DeallocateStmt * : _copyDeallocateStmt(const DeallocateStmt *from) : { : DeallocateStmt *newnode = makeNode(DeallocateStmt); 0.00 : 5e6fdf: 48 8b 3d 7a 38 5d 00 mov 0x5d387a(%rip),%rdi # bba860 0.00 : 5e6fe6: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e6feb: e8 20 1e 1b 00 callq 798e10 0.00 : 5e6ff0: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : : COPY_STRING_FIELD(name); 0.00 : 5e6ff6: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static DeallocateStmt * : _copyDeallocateStmt(const DeallocateStmt *from) : { : DeallocateStmt *newnode = makeNode(DeallocateStmt); 0.00 : 5e6ffa: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(name); 0.00 : 5e6ffd: 31 c0 xor %eax,%eax 0.00 : 5e6fff: 48 85 ff test %rdi,%rdi 0.00 : 5e7002: 74 05 je 5e7009 0.00 : 5e7004: e8 47 1f 1b 00 callq 798f50 0.00 : 5e7009: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e700d: 48 89 d8 mov %rbx,%rax : case T_ExecuteStmt: : retval = _copyExecuteStmt(from); : break; : case T_DeallocateStmt: : retval = _copyDeallocateStmt(from); : break; 0.00 : 5e7010: e9 f5 d1 ff ff jmpq 5e420a : break; : case T_AlterDefaultPrivilegesStmt: : retval = _copyAlterDefaultPrivilegesStmt(from); : break; : case T_DeclareCursorStmt: : retval = _copyDeclareCursorStmt(from); 0.00 : 5e7015: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7018: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e701c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7020: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7024: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7028: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e702c: c9 leaveq : break; : case T_AlterDefaultPrivilegesStmt: : retval = _copyAlterDefaultPrivilegesStmt(from); : break; : case T_DeclareCursorStmt: : retval = _copyDeclareCursorStmt(from); 0.00 : 5e702d: e9 1e 0f 00 00 jmpq 5e7f50 <_copyDeclareCursorStmt> : break; : case T_DiscardStmt: : retval = _copyDiscardStmt(from); : break; : case T_CreateTableSpaceStmt: : retval = _copyCreateTableSpaceStmt(from); 0.00 : 5e7032: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7035: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7039: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e703d: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7041: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7045: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7049: c9 leaveq : break; : case T_DiscardStmt: : retval = _copyDiscardStmt(from); : break; : case T_CreateTableSpaceStmt: : retval = _copyCreateTableSpaceStmt(from); 0.00 : 5e704a: e9 71 21 00 00 jmpq 5e91c0 <_copyCreateTableSpaceStmt> : } : : static DropTableSpaceStmt * : _copyDropTableSpaceStmt(const DropTableSpaceStmt *from) : { : DropTableSpaceStmt *newnode = makeNode(DropTableSpaceStmt); 0.00 : 5e704f: 48 8b 3d 0a 38 5d 00 mov 0x5d380a(%rip),%rdi # bba860 0.00 : 5e7056: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e705b: e8 b0 1d 1b 00 callq 798e10 0.00 : 5e7060: c7 00 00 03 00 00 movl $0x300,(%rax) : : COPY_STRING_FIELD(tablespacename); 0.00 : 5e7066: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static DropTableSpaceStmt * : _copyDropTableSpaceStmt(const DropTableSpaceStmt *from) : { : DropTableSpaceStmt *newnode = makeNode(DropTableSpaceStmt); 0.00 : 5e706a: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(tablespacename); 0.00 : 5e706d: 31 c0 xor %eax,%eax 0.00 : 5e706f: 48 85 ff test %rdi,%rdi 0.00 : 5e7072: 74 05 je 5e7079 0.00 : 5e7074: e8 d7 1e 1b 00 callq 798f50 0.00 : 5e7079: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(missing_ok); 0.00 : 5e707d: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e7082: 88 43 10 mov %al,0x10(%rbx) 0.00 : 5e7085: 48 89 d8 mov %rbx,%rax : case T_CreateTableSpaceStmt: : retval = _copyCreateTableSpaceStmt(from); : break; : case T_DropTableSpaceStmt: : retval = _copyDropTableSpaceStmt(from); : break; 0.00 : 5e7088: e9 7d d1 ff ff jmpq 5e420a : break; : case T_RenameStmt: : retval = _copyRenameStmt(from); : break; : case T_AlterObjectSchemaStmt: : retval = _copyAlterObjectSchemaStmt(from); 0.00 : 5e708d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7090: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7094: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7098: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e709c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e70a0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e70a4: c9 leaveq : break; : case T_RenameStmt: : retval = _copyRenameStmt(from); : break; : case T_AlterObjectSchemaStmt: : retval = _copyAlterObjectSchemaStmt(from); 0.00 : 5e70a5: e9 c6 16 00 00 jmpq 5e8770 <_copyAlterObjectSchemaStmt> : break; : case T_AlterOwnerStmt: : retval = _copyAlterOwnerStmt(from); 0.00 : 5e70aa: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e70ad: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e70b1: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e70b5: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e70b9: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e70bd: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e70c1: c9 leaveq : break; : case T_AlterObjectSchemaStmt: : retval = _copyAlterObjectSchemaStmt(from); : break; : case T_AlterOwnerStmt: : retval = _copyAlterOwnerStmt(from); 0.00 : 5e70c2: e9 29 17 00 00 jmpq 5e87f0 <_copyAlterOwnerStmt> : break; : case T_DeallocateStmt: : retval = _copyDeallocateStmt(from); : break; : case T_DropOwnedStmt: : retval = _copyDropOwnedStmt(from); 0.00 : 5e70c7: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e70ca: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e70ce: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e70d2: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e70d6: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e70da: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e70de: c9 leaveq : break; : case T_DeallocateStmt: : retval = _copyDeallocateStmt(from); : break; : case T_DropOwnedStmt: : retval = _copyDropOwnedStmt(from); 0.00 : 5e70df: e9 8c 2d 00 00 jmpq 5e9e70 <_copyDropOwnedStmt> : break; : case T_ReassignOwnedStmt: : retval = _copyReassignOwnedStmt(from); 0.00 : 5e70e4: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e70e7: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e70eb: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e70ef: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e70f3: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e70f7: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e70fb: c9 leaveq : break; : case T_DropOwnedStmt: : retval = _copyDropOwnedStmt(from); : break; : case T_ReassignOwnedStmt: : retval = _copyReassignOwnedStmt(from); 0.00 : 5e70fc: e9 cf 2d 00 00 jmpq 5e9ed0 <_copyReassignOwnedStmt> : break; : case T_TransactionStmt: : retval = _copyTransactionStmt(from); : break; : case T_CompositeTypeStmt: : retval = _copyCompositeTypeStmt(from); 0.00 : 5e7101: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7104: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7108: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e710c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7110: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7114: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7118: c9 leaveq : break; : case T_TransactionStmt: : retval = _copyTransactionStmt(from); : break; : case T_CompositeTypeStmt: : retval = _copyCompositeTypeStmt(from); 0.00 : 5e7119: e9 42 18 00 00 jmpq 5e8960 <_copyCompositeTypeStmt> : break; : case T_CreateEnumStmt: : retval = _copyCreateEnumStmt(from); 0.00 : 5e711e: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7121: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7125: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7129: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e712d: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7131: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7135: c9 leaveq : break; : case T_CompositeTypeStmt: : retval = _copyCompositeTypeStmt(from); : break; : case T_CreateEnumStmt: : retval = _copyCreateEnumStmt(from); 0.00 : 5e7136: e9 85 18 00 00 jmpq 5e89c0 <_copyCreateEnumStmt> : break; : case T_CreateRangeStmt: : retval = _copyCreateRangeStmt(from); 0.00 : 5e713b: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e713e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7142: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7146: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e714a: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e714e: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7152: c9 leaveq : break; : case T_CreateEnumStmt: : retval = _copyCreateEnumStmt(from); : break; : case T_CreateRangeStmt: : retval = _copyCreateRangeStmt(from); 0.00 : 5e7153: e9 c8 18 00 00 jmpq 5e8a20 <_copyCreateRangeStmt> : break; : case T_AlterEnumStmt: : retval = _copyAlterEnumStmt(from); 0.00 : 5e7158: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e715b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e715f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7163: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7167: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e716b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e716f: c9 leaveq : break; : case T_CreateRangeStmt: : retval = _copyCreateRangeStmt(from); : break; : case T_AlterEnumStmt: : retval = _copyAlterEnumStmt(from); 0.00 : 5e7170: e9 0b 19 00 00 jmpq 5e8a80 <_copyAlterEnumStmt> : break; : case T_ReassignOwnedStmt: : retval = _copyReassignOwnedStmt(from); : break; : case T_AlterTSDictionaryStmt: : retval = _copyAlterTSDictionaryStmt(from); 0.00 : 5e7175: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7178: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e717c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7180: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7184: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7188: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e718c: c9 leaveq : break; : case T_ReassignOwnedStmt: : retval = _copyReassignOwnedStmt(from); : break; : case T_AlterTSDictionaryStmt: : retval = _copyAlterTSDictionaryStmt(from); 0.00 : 5e718d: e9 8e 2d 00 00 jmpq 5e9f20 <_copyAlterTSDictionaryStmt> : break; : case T_AlterTSConfigurationStmt: : retval = _copyAlterTSConfigurationStmt(from); 0.00 : 5e7192: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7195: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7199: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e719d: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e71a1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e71a5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e71a9: c9 leaveq : break; : case T_AlterTSDictionaryStmt: : retval = _copyAlterTSDictionaryStmt(from); : break; : case T_AlterTSConfigurationStmt: : retval = _copyAlterTSConfigurationStmt(from); 0.00 : 5e71aa: e9 d1 2d 00 00 jmpq 5e9f80 <_copyAlterTSConfigurationStmt> : break; : case T_AlterExtensionContentsStmt: : retval = _copyAlterExtensionContentsStmt(from); : break; : case T_CreateFdwStmt: : retval = _copyCreateFdwStmt(from); 0.00 : 5e71af: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e71b2: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e71b6: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e71ba: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e71be: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e71c2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e71c6: c9 leaveq : break; : case T_AlterExtensionContentsStmt: : retval = _copyAlterExtensionContentsStmt(from); : break; : case T_CreateFdwStmt: : retval = _copyCreateFdwStmt(from); 0.00 : 5e71c7: e9 74 22 00 00 jmpq 5e9440 <_copyCreateFdwStmt> : break; : case T_AlterFdwStmt: : retval = _copyAlterFdwStmt(from); 0.00 : 5e71cc: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e71cf: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e71d3: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e71d7: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e71db: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e71df: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e71e3: c9 leaveq : break; : case T_CreateFdwStmt: : retval = _copyCreateFdwStmt(from); : break; : case T_AlterFdwStmt: : retval = _copyAlterFdwStmt(from); 0.00 : 5e71e4: e9 b7 22 00 00 jmpq 5e94a0 <_copyAlterFdwStmt> : break; : case T_CreateForeignServerStmt: : retval = _copyCreateForeignServerStmt(from); 0.00 : 5e71e9: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e71ec: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e71f0: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e71f4: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e71f8: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e71fc: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7200: c9 leaveq : break; : case T_AlterFdwStmt: : retval = _copyAlterFdwStmt(from); : break; : case T_CreateForeignServerStmt: : retval = _copyCreateForeignServerStmt(from); 0.00 : 5e7201: e9 fa 22 00 00 jmpq 5e9500 <_copyCreateForeignServerStmt> : break; : case T_AlterForeignServerStmt: : retval = _copyAlterForeignServerStmt(from); 0.00 : 5e7206: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7209: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e720d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7211: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7215: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7219: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e721d: c9 leaveq : break; : case T_CreateForeignServerStmt: : retval = _copyCreateForeignServerStmt(from); : break; : case T_AlterForeignServerStmt: : retval = _copyAlterForeignServerStmt(from); 0.00 : 5e721e: e9 6d 23 00 00 jmpq 5e9590 <_copyAlterForeignServerStmt> : break; : case T_CreateUserMappingStmt: : retval = _copyCreateUserMappingStmt(from); 0.00 : 5e7223: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7226: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e722a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e722e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7232: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7236: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e723a: c9 leaveq : break; : case T_AlterForeignServerStmt: : retval = _copyAlterForeignServerStmt(from); : break; : case T_CreateUserMappingStmt: : retval = _copyCreateUserMappingStmt(from); 0.00 : 5e723b: e9 c0 23 00 00 jmpq 5e9600 <_copyCreateUserMappingStmt> : break; : case T_AlterUserMappingStmt: : retval = _copyAlterUserMappingStmt(from); 0.00 : 5e7240: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7243: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7247: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e724b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e724f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7253: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7257: c9 leaveq : break; : case T_CreateUserMappingStmt: : retval = _copyCreateUserMappingStmt(from); : break; : case T_AlterUserMappingStmt: : retval = _copyAlterUserMappingStmt(from); 0.00 : 5e7258: e9 13 24 00 00 jmpq 5e9670 <_copyAlterUserMappingStmt> : } : : static DropUserMappingStmt * : _copyDropUserMappingStmt(const DropUserMappingStmt *from) : { : DropUserMappingStmt *newnode = makeNode(DropUserMappingStmt); 0.00 : 5e725d: 48 8b 3d fc 35 5d 00 mov 0x5d35fc(%rip),%rdi # bba860 0.00 : 5e7264: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e7269: e8 a2 1b 1b 00 callq 798e10 0.00 : 5e726e: c7 00 11 03 00 00 movl $0x311,(%rax) : : COPY_STRING_FIELD(username); 0.00 : 5e7274: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static DropUserMappingStmt * : _copyDropUserMappingStmt(const DropUserMappingStmt *from) : { : DropUserMappingStmt *newnode = makeNode(DropUserMappingStmt); 0.00 : 5e7278: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(username); 0.00 : 5e727b: 31 c0 xor %eax,%eax 0.00 : 5e727d: 48 85 ff test %rdi,%rdi 0.00 : 5e7280: 74 05 je 5e7287 0.00 : 5e7282: e8 c9 1c 1b 00 callq 798f50 0.00 : 5e7287: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_STRING_FIELD(servername); 0.00 : 5e728b: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e728f: 31 c0 xor %eax,%eax 0.00 : 5e7291: 48 85 ff test %rdi,%rdi 0.00 : 5e7294: 74 05 je 5e729b 0.00 : 5e7296: e8 b5 1c 1b 00 callq 798f50 0.00 : 5e729b: 48 89 43 10 mov %rax,0x10(%rbx) : COPY_SCALAR_FIELD(missing_ok); 0.00 : 5e729f: 41 0f b6 45 18 movzbl 0x18(%r13),%eax 0.00 : 5e72a4: 88 43 18 mov %al,0x18(%rbx) 0.00 : 5e72a7: 48 89 d8 mov %rbx,%rax : case T_AlterUserMappingStmt: : retval = _copyAlterUserMappingStmt(from); : break; : case T_DropUserMappingStmt: : retval = _copyDropUserMappingStmt(from); : break; 0.00 : 5e72aa: e9 5b cf ff ff jmpq 5e420a : break; : case T_DropTableSpaceStmt: : retval = _copyDropTableSpaceStmt(from); : break; : case T_AlterTableSpaceOptionsStmt: : retval = _copyAlterTableSpaceOptionsStmt(from); 0.00 : 5e72af: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e72b2: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e72b6: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e72ba: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e72be: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e72c2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e72c6: c9 leaveq : break; : case T_DropTableSpaceStmt: : retval = _copyDropTableSpaceStmt(from); : break; : case T_AlterTableSpaceOptionsStmt: : retval = _copyAlterTableSpaceOptionsStmt(from); 0.00 : 5e72c7: e9 74 1f 00 00 jmpq 5e9240 <_copyAlterTableSpaceOptionsStmt> : break; : case T_AlterTableMoveAllStmt: : retval = _copyAlterTableMoveAllStmt(from); 0.00 : 5e72cc: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e72cf: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e72d3: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e72d7: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e72db: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e72df: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e72e3: c9 leaveq : break; : case T_AlterTableSpaceOptionsStmt: : retval = _copyAlterTableSpaceOptionsStmt(from); : break; : case T_AlterTableMoveAllStmt: : retval = _copyAlterTableMoveAllStmt(from); 0.00 : 5e72e4: e9 b7 1f 00 00 jmpq 5e92a0 <_copyAlterTableMoveAllStmt> : break; : case T_CommentStmt: : retval = _copyCommentStmt(from); : break; : case T_SecLabelStmt: : retval = _copySecLabelStmt(from); 0.00 : 5e72e9: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e72ec: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e72f0: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e72f4: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e72f8: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e72fc: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7300: c9 leaveq : break; : case T_CommentStmt: : retval = _copyCommentStmt(from); : break; : case T_SecLabelStmt: : retval = _copySecLabelStmt(from); 0.00 : 5e7301: e9 8a 10 00 00 jmpq 5e8390 <_copySecLabelStmt> : break; : case T_DropUserMappingStmt: : retval = _copyDropUserMappingStmt(from); : break; : case T_CreateForeignTableStmt: : retval = _copyCreateForeignTableStmt(from); 0.00 : 5e7306: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7309: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e730d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7311: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7315: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7319: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e731d: c9 leaveq : break; : case T_DropUserMappingStmt: : retval = _copyDropUserMappingStmt(from); : break; : case T_CreateForeignTableStmt: : retval = _copyCreateForeignTableStmt(from); 0.00 : 5e731e: e9 bd 23 00 00 jmpq 5e96e0 <_copyCreateForeignTableStmt> : break; : case T_ImportForeignSchemaStmt: : retval = _copyImportForeignSchemaStmt(from); 0.00 : 5e7323: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7326: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e732a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e732e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7332: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7336: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e733a: c9 leaveq : break; : case T_CreateForeignTableStmt: : retval = _copyCreateForeignTableStmt(from); : break; : case T_ImportForeignSchemaStmt: : retval = _copyImportForeignSchemaStmt(from); 0.00 : 5e733b: e9 00 24 00 00 jmpq 5e9740 <_copyImportForeignSchemaStmt> : break; : case T_AlterTableMoveAllStmt: : retval = _copyAlterTableMoveAllStmt(from); : break; : case T_CreateExtensionStmt: : retval = _copyCreateExtensionStmt(from); 0.00 : 5e7340: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7343: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7347: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e734b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e734f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7353: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7357: c9 leaveq : break; : case T_AlterTableMoveAllStmt: : retval = _copyAlterTableMoveAllStmt(from); : break; : case T_CreateExtensionStmt: : retval = _copyCreateExtensionStmt(from); 0.00 : 5e7358: e9 c3 1f 00 00 jmpq 5e9320 <_copyCreateExtensionStmt> : break; : case T_AlterExtensionStmt: : retval = _copyAlterExtensionStmt(from); 0.00 : 5e735d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7360: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7364: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7368: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e736c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7370: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7374: c9 leaveq : break; : case T_CreateExtensionStmt: : retval = _copyCreateExtensionStmt(from); : break; : case T_AlterExtensionStmt: : retval = _copyAlterExtensionStmt(from); 0.00 : 5e7375: e9 06 20 00 00 jmpq 5e9380 <_copyAlterExtensionStmt> : break; : case T_AlterExtensionContentsStmt: : retval = _copyAlterExtensionContentsStmt(from); 0.00 : 5e737a: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e737d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7381: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7385: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7389: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e738d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7391: c9 leaveq : break; : case T_AlterExtensionStmt: : retval = _copyAlterExtensionStmt(from); : break; : case T_AlterExtensionContentsStmt: : retval = _copyAlterExtensionContentsStmt(from); 0.00 : 5e7392: e9 39 20 00 00 jmpq 5e93d0 <_copyAlterExtensionContentsStmt> : break; : case T_CreateTrigStmt: : retval = _copyCreateTrigStmt(from); : break; : case T_CreateEventTrigStmt: : retval = _copyCreateEventTrigStmt(from); 0.00 : 5e7397: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e739a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e739e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e73a2: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e73a6: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e73aa: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e73ae: c9 leaveq : break; : case T_CreateTrigStmt: : retval = _copyCreateTrigStmt(from); : break; : case T_CreateEventTrigStmt: : retval = _copyCreateEventTrigStmt(from); 0.00 : 5e73af: e9 ec 24 00 00 jmpq 5e98a0 <_copyCreateEventTrigStmt> : } : : static AlterEventTrigStmt * : _copyAlterEventTrigStmt(const AlterEventTrigStmt *from) : { : AlterEventTrigStmt *newnode = makeNode(AlterEventTrigStmt); 0.00 : 5e73b4: 48 8b 3d a5 34 5d 00 mov 0x5d34a5(%rip),%rdi # bba860 0.00 : 5e73bb: be 18 00 00 00 mov $0x18,%esi 0.00 : 5e73c0: e8 4b 1a 1b 00 callq 798e10 0.00 : 5e73c5: c7 00 1b 03 00 00 movl $0x31b,(%rax) : : COPY_STRING_FIELD(trigname); 0.00 : 5e73cb: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static AlterEventTrigStmt * : _copyAlterEventTrigStmt(const AlterEventTrigStmt *from) : { : AlterEventTrigStmt *newnode = makeNode(AlterEventTrigStmt); 0.00 : 5e73cf: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(trigname); 0.00 : 5e73d2: 31 c0 xor %eax,%eax 0.00 : 5e73d4: 48 85 ff test %rdi,%rdi 0.00 : 5e73d7: 74 05 je 5e73de 0.00 : 5e73d9: e8 72 1b 1b 00 callq 798f50 0.00 : 5e73de: 48 89 43 08 mov %rax,0x8(%rbx) : COPY_SCALAR_FIELD(tgenabled); 0.00 : 5e73e2: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5e73e7: 88 43 10 mov %al,0x10(%rbx) 0.00 : 5e73ea: 48 89 d8 mov %rbx,%rax : case T_CreateEventTrigStmt: : retval = _copyCreateEventTrigStmt(from); : break; : case T_AlterEventTrigStmt: : retval = _copyAlterEventTrigStmt(from); : break; 0.00 : 5e73ed: e9 18 ce ff ff jmpq 5e420a : break; : case T_CreateTableAsStmt: : retval = _copyCreateTableAsStmt(from); : break; : case T_RefreshMatViewStmt: : retval = _copyRefreshMatViewStmt(from); 0.00 : 5e73f2: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e73f5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e73f9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e73fd: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7401: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7405: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7409: c9 leaveq : break; : case T_CreateTableAsStmt: : retval = _copyCreateTableAsStmt(from); : break; : case T_RefreshMatViewStmt: : retval = _copyRefreshMatViewStmt(from); 0.00 : 5e740a: e9 e1 1b 00 00 jmpq 5e8ff0 <_copyRefreshMatViewStmt> : } : : static ReplicaIdentityStmt * : _copyReplicaIdentityStmt(const ReplicaIdentityStmt *from) : { : ReplicaIdentityStmt *newnode = makeNode(ReplicaIdentityStmt); 0.00 : 5e740f: 48 8b 3d 4a 34 5d 00 mov 0x5d344a(%rip),%rdi # bba860 0.00 : 5e7416: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e741b: e8 f0 19 1b 00 callq 798e10 0.00 : 5e7420: c7 00 1d 03 00 00 movl $0x31d,(%rax) 0.00 : 5e7426: 48 89 c3 mov %rax,%rbx : : COPY_SCALAR_FIELD(identity_type); 0.00 : 5e7429: 41 0f b6 45 04 movzbl 0x4(%r13),%eax 0.00 : 5e742e: 88 43 04 mov %al,0x4(%rbx) : COPY_STRING_FIELD(name); 0.00 : 5e7431: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e7435: 31 c0 xor %eax,%eax 0.00 : 5e7437: 48 85 ff test %rdi,%rdi 0.00 : 5e743a: 74 05 je 5e7441 0.00 : 5e743c: e8 0f 1b 1b 00 callq 798f50 0.00 : 5e7441: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e7445: 48 89 d8 mov %rbx,%rax : case T_RefreshMatViewStmt: : retval = _copyRefreshMatViewStmt(from); : break; : case T_ReplicaIdentityStmt: : retval = _copyReplicaIdentityStmt(from); : break; 0.00 : 5e7448: e9 bd cd ff ff jmpq 5e420a : case T_AlterSystemStmt: : retval = _copyAlterSystemStmt(from); 0.00 : 5e744d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7450: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7454: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7458: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e745c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7460: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7464: c9 leaveq : break; : case T_ReplicaIdentityStmt: : retval = _copyReplicaIdentityStmt(from); : break; : case T_AlterSystemStmt: : retval = _copyAlterSystemStmt(from); 0.00 : 5e7465: e9 e6 1b 00 00 jmpq 5e9050 <_copyAlterSystemStmt> : break; : case T_AlterTSConfigurationStmt: : retval = _copyAlterTSConfigurationStmt(from); : break; : case T_CreatePolicyStmt: : retval = _copyCreatePolicyStmt(from); 0.00 : 5e746a: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e746d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7471: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7475: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7479: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e747d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7481: c9 leaveq : break; : case T_AlterTSConfigurationStmt: : retval = _copyAlterTSConfigurationStmt(from); : break; : case T_CreatePolicyStmt: : retval = _copyCreatePolicyStmt(from); 0.00 : 5e7482: e9 79 2b 00 00 jmpq 5ea000 <_copyCreatePolicyStmt> : break; : case T_AlterPolicyStmt: : retval = _copyAlterPolicyStmt(from); 0.00 : 5e7487: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e748a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e748e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7492: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7496: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e749a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e749e: c9 leaveq : break; : case T_CreatePolicyStmt: : retval = _copyCreatePolicyStmt(from); : break; : case T_AlterPolicyStmt: : retval = _copyAlterPolicyStmt(from); 0.00 : 5e749f: e9 ec 2b 00 00 jmpq 5ea090 <_copyAlterPolicyStmt> : break; : case T_A_Expr: : retval = _copyAExpr(from); 0.00 : 5e74a4: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e74a7: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e74ab: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e74af: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e74b3: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e74b7: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e74bb: c9 leaveq : break; : case T_AlterPolicyStmt: : retval = _copyAlterPolicyStmt(from); : break; : case T_A_Expr: : retval = _copyAExpr(from); 0.00 : 5e74bc: e9 4f 2c 00 00 jmpq 5ea110 <_copyAExpr> : break; : case T_ColumnRef: : retval = _copyColumnRef(from); 0.00 : 5e74c1: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e74c4: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e74c8: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e74cc: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e74d0: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e74d4: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e74d8: c9 leaveq : break; : case T_A_Expr: : retval = _copyAExpr(from); : break; : case T_ColumnRef: : retval = _copyColumnRef(from); 0.00 : 5e74d9: e9 a2 2c 00 00 jmpq 5ea180 <_copyColumnRef> : } : : static ParamRef * : _copyParamRef(const ParamRef *from) : { : ParamRef *newnode = makeNode(ParamRef); 0.00 : 5e74de: 48 8b 3d 7b 33 5d 00 mov 0x5d337b(%rip),%rdi # bba860 0.00 : 5e74e5: be 0c 00 00 00 mov $0xc,%esi 0.00 : 5e74ea: e8 31 1b 1b 00 callq 799020 0.00 : 5e74ef: c7 00 86 03 00 00 movl $0x386,(%rax) : : COPY_SCALAR_FIELD(number); 0.00 : 5e74f5: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e74f9: 89 50 04 mov %edx,0x4(%rax) : COPY_LOCATION_FIELD(location); 0.00 : 5e74fc: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e7500: 89 50 08 mov %edx,0x8(%rax) : case T_ColumnRef: : retval = _copyColumnRef(from); : break; : case T_ParamRef: : retval = _copyParamRef(from); : break; 0.00 : 5e7503: e9 02 cd ff ff jmpq 5e420a : } : : static A_Const * : _copyAConst(const A_Const *from) : { : A_Const *newnode = makeNode(A_Const); 0.00 : 5e7508: 48 8b 3d 51 33 5d 00 mov 0x5d3351(%rip),%rdi # bba860 0.00 : 5e750f: be 20 00 00 00 mov $0x20,%esi 0.00 : 5e7514: e8 f7 18 1b 00 callq 798e10 0.00 : 5e7519: c7 00 87 03 00 00 movl $0x387,(%rax) 0.00 : 5e751f: 48 89 c3 mov %rax,%rbx : : /* This part must duplicate _copyValue */ : COPY_SCALAR_FIELD(val.type); 0.00 : 5e7522: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e7526: 89 43 08 mov %eax,0x8(%rbx) : switch (from->val.type) 0.00 : 5e7529: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 5e752d: 3d 8e 02 00 00 cmp $0x28e,%eax 0.00 : 5e7532: 0f 87 92 04 00 00 ja 5e79ca 0.00 : 5e7538: 3d 8c 02 00 00 cmp $0x28c,%eax 0.00 : 5e753d: 0f 83 bd 04 00 00 jae 5e7a00 0.00 : 5e7543: 3d 8b 02 00 00 cmp $0x28b,%eax 0.00 : 5e7548: 0f 84 f4 04 00 00 je 5e7a42 : break; : case T_Null: : /* nothing to do */ : break; : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5e754e: ba 66 3f 89 00 mov $0x893f66,%edx 0.00 : 5e7553: be 79 08 00 00 mov $0x879,%esi 0.00 : 5e7558: bf 14 25 89 00 mov $0x892514,%edi 0.00 : 5e755d: e8 be 3e 19 00 callq 77b420 0.00 : 5e7562: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e7566: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5e756b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e7570: 31 c0 xor %eax,%eax 0.00 : 5e7572: e8 b9 3c 19 00 callq 77b230 0.00 : 5e7577: e8 54 1f e8 ff callq 4694d0 : break; : case T_A_Const: : retval = _copyAConst(from); : break; : case T_FuncCall: : retval = _copyFuncCall(from); 0.00 : 5e757c: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e757f: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7583: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7587: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e758b: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e758f: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7593: c9 leaveq : break; : case T_A_Const: : retval = _copyAConst(from); : break; : case T_FuncCall: : retval = _copyFuncCall(from); 0.00 : 5e7594: e9 47 2c 00 00 jmpq 5ea1e0 <_copyFuncCall> : } : : static A_Star * : _copyAStar(const A_Star *from) : { : A_Star *newnode = makeNode(A_Star); 0.00 : 5e7599: 48 8b 3d c0 32 5d 00 mov 0x5d32c0(%rip),%rdi # bba860 0.00 : 5e75a0: be 04 00 00 00 mov $0x4,%esi 0.00 : 5e75a5: e8 76 1a 1b 00 callq 799020 0.00 : 5e75aa: c7 00 89 03 00 00 movl $0x389,(%rax) : case T_FuncCall: : retval = _copyFuncCall(from); : break; : case T_A_Star: : retval = _copyAStar(from); : break; 0.00 : 5e75b0: e9 55 cc ff ff jmpq 5e420a : case T_A_Indices: : retval = _copyAIndices(from); 0.00 : 5e75b5: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e75b8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e75bc: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e75c0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e75c4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e75c8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e75cc: c9 leaveq : break; : case T_A_Star: : retval = _copyAStar(from); : break; : case T_A_Indices: : retval = _copyAIndices(from); 0.00 : 5e75cd: e9 ae 2c 00 00 jmpq 5ea280 <_copyAIndices> : break; : case T_A_Indirection: : retval = _copyA_Indirection(from); 0.00 : 5e75d2: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e75d5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e75d9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e75dd: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e75e1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e75e5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e75e9: c9 leaveq : break; : case T_A_Indices: : retval = _copyAIndices(from); : break; : case T_A_Indirection: : retval = _copyA_Indirection(from); 0.00 : 5e75ea: e9 f1 2c 00 00 jmpq 5ea2e0 <_copyA_Indirection> : break; : case T_A_ArrayExpr: : retval = _copyA_ArrayExpr(from); 0.00 : 5e75ef: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e75f2: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e75f6: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e75fa: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e75fe: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7602: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7606: c9 leaveq : break; : case T_A_Indirection: : retval = _copyA_Indirection(from); : break; : case T_A_ArrayExpr: : retval = _copyA_ArrayExpr(from); 0.00 : 5e7607: e9 34 2d 00 00 jmpq 5ea340 <_copyA_ArrayExpr> : break; : case T_ResTarget: : retval = _copyResTarget(from); 0.00 : 5e760c: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e760f: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7613: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7617: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e761b: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e761f: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7623: c9 leaveq : break; : case T_A_ArrayExpr: : retval = _copyA_ArrayExpr(from); : break; : case T_ResTarget: : retval = _copyResTarget(from); 0.00 : 5e7624: e9 77 2d 00 00 jmpq 5ea3a0 <_copyResTarget> : break; : case T_MultiAssignRef: : retval = _copyMultiAssignRef(from); 0.00 : 5e7629: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e762c: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7630: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7634: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7638: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e763c: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7640: c9 leaveq : break; : case T_ResTarget: : retval = _copyResTarget(from); : break; : case T_MultiAssignRef: : retval = _copyMultiAssignRef(from); 0.00 : 5e7641: e9 ca 2d 00 00 jmpq 5ea410 <_copyMultiAssignRef> : break; : case T_TypeCast: : retval = _copyTypeCast(from); 0.00 : 5e7646: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7649: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e764d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7651: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7655: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7659: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e765d: c9 leaveq : break; : case T_MultiAssignRef: : retval = _copyMultiAssignRef(from); : break; : case T_TypeCast: : retval = _copyTypeCast(from); 0.00 : 5e765e: e9 0d 2e 00 00 jmpq 5ea470 <_copyTypeCast> : break; : case T_CollateClause: : retval = _copyCollateClause(from); 0.00 : 5e7663: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7666: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e766a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e766e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7672: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7676: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e767a: c9 leaveq : break; : case T_TypeCast: : retval = _copyTypeCast(from); : break; : case T_CollateClause: : retval = _copyCollateClause(from); 0.00 : 5e767b: e9 50 2e 00 00 jmpq 5ea4d0 <_copyCollateClause> : break; : case T_SortBy: : retval = _copySortBy(from); 0.00 : 5e7680: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7683: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7687: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e768b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e768f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7693: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7697: c9 leaveq : break; : case T_CollateClause: : retval = _copyCollateClause(from); : break; : case T_SortBy: : retval = _copySortBy(from); 0.00 : 5e7698: e9 93 2e 00 00 jmpq 5ea530 <_copySortBy> : break; : case T_WindowDef: : retval = _copyWindowDef(from); 0.00 : 5e769d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e76a0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e76a4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e76a8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e76ac: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e76b0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e76b4: c9 leaveq : break; : case T_SortBy: : retval = _copySortBy(from); : break; : case T_WindowDef: : retval = _copyWindowDef(from); 0.00 : 5e76b5: e9 d6 2e 00 00 jmpq 5ea590 <_copyWindowDef> : break; : case T_RangeSubselect: : retval = _copyRangeSubselect(from); 0.00 : 5e76ba: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e76bd: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e76c1: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e76c5: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e76c9: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e76cd: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e76d1: c9 leaveq : break; : case T_WindowDef: : retval = _copyWindowDef(from); : break; : case T_RangeSubselect: : retval = _copyRangeSubselect(from); 0.00 : 5e76d2: e9 59 2f 00 00 jmpq 5ea630 <_copyRangeSubselect> : break; : case T_RangeFunction: : retval = _copyRangeFunction(from); 0.00 : 5e76d7: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e76da: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e76de: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e76e2: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e76e6: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e76ea: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e76ee: c9 leaveq : break; : case T_RangeSubselect: : retval = _copyRangeSubselect(from); : break; : case T_RangeFunction: : retval = _copyRangeFunction(from); 0.00 : 5e76ef: e9 9c 2f 00 00 jmpq 5ea690 <_copyRangeFunction> : break; : case T_TypeName: : retval = _copyTypeName(from); 0.00 : 5e76f4: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e76f7: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e76fb: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e76ff: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7703: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7707: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e770b: c9 leaveq : break; : case T_RangeFunction: : retval = _copyRangeFunction(from); : break; : case T_TypeName: : retval = _copyTypeName(from); 0.00 : 5e770c: e9 ff 2f 00 00 jmpq 5ea710 <_copyTypeName> : break; : case T_IndexElem: : retval = _copyIndexElem(from); : break; : case T_ColumnDef: : retval = _copyColumnDef(from); 0.00 : 5e7711: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7714: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7718: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e771c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7720: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7724: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7728: c9 leaveq : break; : case T_IndexElem: : retval = _copyIndexElem(from); : break; : case T_ColumnDef: : retval = _copyColumnDef(from); 0.00 : 5e7729: e9 f2 30 00 00 jmpq 5ea820 <_copyColumnDef> : break; : case T_TypeName: : retval = _copyTypeName(from); : break; : case T_IndexElem: : retval = _copyIndexElem(from); 0.00 : 5e772e: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7731: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7735: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7739: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e773d: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7741: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7745: c9 leaveq : break; : case T_TypeName: : retval = _copyTypeName(from); : break; : case T_IndexElem: : retval = _copyIndexElem(from); 0.00 : 5e7746: e9 45 30 00 00 jmpq 5ea790 <_copyIndexElem> : break; : case T_ColumnDef: : retval = _copyColumnDef(from); : break; : case T_Constraint: : retval = _copyConstraint(from); 0.00 : 5e774b: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e774e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7752: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7756: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e775a: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e775e: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7762: c9 leaveq : break; : case T_ColumnDef: : retval = _copyColumnDef(from); : break; : case T_Constraint: : retval = _copyConstraint(from); 0.00 : 5e7763: e9 98 31 00 00 jmpq 5ea900 <_copyConstraint> : break; : case T_DefElem: : retval = _copyDefElem(from); 0.00 : 5e7768: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e776b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e776f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7773: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7777: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e777b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e777f: c9 leaveq : break; : case T_Constraint: : retval = _copyConstraint(from); : break; : case T_DefElem: : retval = _copyDefElem(from); 0.00 : 5e7780: e9 1b 33 00 00 jmpq 5eaaa0 <_copyDefElem> : break; : case T_LockingClause: : retval = _copyLockingClause(from); : break; : case T_RangeTblEntry: : retval = _copyRangeTblEntry(from); 0.00 : 5e7785: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7788: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e778c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7790: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7794: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7798: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e779c: c9 leaveq : break; : case T_LockingClause: : retval = _copyLockingClause(from); : break; : case T_RangeTblEntry: : retval = _copyRangeTblEntry(from); 0.00 : 5e779d: e9 ce 33 00 00 jmpq 5eab70 <_copyRangeTblEntry> : break; : case T_RangeTblFunction: : retval = _copyRangeTblFunction(from); 0.00 : 5e77a2: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e77a5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e77a9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e77ad: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e77b1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e77b5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e77b9: c9 leaveq : break; : case T_RangeTblEntry: : retval = _copyRangeTblEntry(from); : break; : case T_RangeTblFunction: : retval = _copyRangeTblFunction(from); 0.00 : 5e77ba: e9 51 35 00 00 jmpq 5ead10 <_copyRangeTblFunction> : break; : case T_WithCheckOption: : retval = _copyWithCheckOption(from); 0.00 : 5e77bf: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e77c2: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e77c6: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e77ca: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e77ce: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e77d2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e77d6: c9 leaveq : break; : case T_RangeTblFunction: : retval = _copyRangeTblFunction(from); : break; : case T_WithCheckOption: : retval = _copyWithCheckOption(from); 0.00 : 5e77d7: e9 c4 35 00 00 jmpq 5eada0 <_copyWithCheckOption> : } : : static SortGroupClause * : _copySortGroupClause(const SortGroupClause *from) : { : SortGroupClause *newnode = makeNode(SortGroupClause); 0.00 : 5e77dc: 48 8b 3d 7d 30 5d 00 mov 0x5d307d(%rip),%rdi # bba860 0.00 : 5e77e3: be 14 00 00 00 mov $0x14,%esi 0.00 : 5e77e8: e8 33 18 1b 00 callq 799020 0.00 : 5e77ed: c7 00 9d 03 00 00 movl $0x39d,(%rax) : : COPY_SCALAR_FIELD(tleSortGroupRef); 0.00 : 5e77f3: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e77f7: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(eqop); 0.00 : 5e77fa: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e77fe: 89 50 08 mov %edx,0x8(%rax) : COPY_SCALAR_FIELD(sortop); 0.00 : 5e7801: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e7805: 89 50 0c mov %edx,0xc(%rax) : COPY_SCALAR_FIELD(nulls_first); 0.00 : 5e7808: 41 0f b6 55 10 movzbl 0x10(%r13),%edx 0.00 : 5e780d: 88 50 10 mov %dl,0x10(%rax) : COPY_SCALAR_FIELD(hashable); 0.00 : 5e7810: 41 0f b6 55 11 movzbl 0x11(%r13),%edx 0.00 : 5e7815: 88 50 11 mov %dl,0x11(%rax) : case T_WithCheckOption: : retval = _copyWithCheckOption(from); : break; : case T_SortGroupClause: : retval = _copySortGroupClause(from); : break; 0.00 : 5e7818: e9 ed c9 ff ff jmpq 5e420a : case T_WindowClause: : retval = _copyWindowClause(from); 0.00 : 5e781d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7820: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7824: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7828: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e782c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7830: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7834: c9 leaveq : break; : case T_SortGroupClause: : retval = _copySortGroupClause(from); : break; : case T_WindowClause: : retval = _copyWindowClause(from); 0.00 : 5e7835: e9 c6 35 00 00 jmpq 5eae00 <_copyWindowClause> : } : : static PrivGrantee * : _copyPrivGrantee(const PrivGrantee *from) : { : PrivGrantee *newnode = makeNode(PrivGrantee); 0.00 : 5e783a: 48 8b 3d 1f 30 5d 00 mov 0x5d301f(%rip),%rdi # bba860 0.00 : 5e7841: be 10 00 00 00 mov $0x10,%esi 0.00 : 5e7846: e8 c5 15 1b 00 callq 798e10 0.00 : 5e784b: c7 00 9f 03 00 00 movl $0x39f,(%rax) : : COPY_STRING_FIELD(rolname); 0.00 : 5e7851: 49 8b 7d 08 mov 0x8(%r13),%rdi : } : : static PrivGrantee * : _copyPrivGrantee(const PrivGrantee *from) : { : PrivGrantee *newnode = makeNode(PrivGrantee); 0.00 : 5e7855: 48 89 c3 mov %rax,%rbx : : COPY_STRING_FIELD(rolname); 0.00 : 5e7858: 31 c0 xor %eax,%eax 0.00 : 5e785a: 48 85 ff test %rdi,%rdi 0.00 : 5e785d: 74 05 je 5e7864 0.00 : 5e785f: e8 ec 16 1b 00 callq 798f50 0.00 : 5e7864: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e7868: 48 89 d8 mov %rbx,%rax : case T_CommonTableExpr: : retval = _copyCommonTableExpr(from); : break; : case T_PrivGrantee: : retval = _copyPrivGrantee(from); : break; 0.00 : 5e786b: e9 9a c9 ff ff jmpq 5e420a : case T_FuncWithArgs: : retval = _copyFuncWithArgs(from); 0.00 : 5e7870: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7873: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7877: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e787b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e787f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7883: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7887: c9 leaveq : break; : case T_PrivGrantee: : retval = _copyPrivGrantee(from); : break; : case T_FuncWithArgs: : retval = _copyFuncWithArgs(from); 0.00 : 5e7888: e9 33 37 00 00 jmpq 5eafc0 <_copyFuncWithArgs> : break; : case T_AccessPriv: : retval = _copyAccessPriv(from); 0.00 : 5e788d: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7890: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7894: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7898: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e789c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e78a0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e78a4: c9 leaveq : break; : case T_FuncWithArgs: : retval = _copyFuncWithArgs(from); : break; : case T_AccessPriv: : retval = _copyAccessPriv(from); 0.00 : 5e78a5: e9 76 37 00 00 jmpq 5eb020 <_copyAccessPriv> : break; : case T_CreateOpClassStmt: : retval = _copyCreateOpClassStmt(from); : break; : case T_CreateOpClassItem: : retval = _copyCreateOpClassItem(from); 0.00 : 5e78aa: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e78ad: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e78b1: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e78b5: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e78b9: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e78bd: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e78c1: c9 leaveq : break; : case T_CreateOpClassStmt: : retval = _copyCreateOpClassStmt(from); : break; : case T_CreateOpClassItem: : retval = _copyCreateOpClassItem(from); 0.00 : 5e78c2: e9 b9 13 00 00 jmpq 5e8c80 <_copyCreateOpClassItem> : break; : case T_CreateStmt: : retval = _copyCreateStmt(from); : break; : case T_TableLikeClause: : retval = _copyTableLikeClause(from); 0.00 : 5e78c7: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e78ca: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e78ce: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e78d2: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e78d6: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e78da: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e78de: c9 leaveq : break; : case T_CreateStmt: : retval = _copyCreateStmt(from); : break; : case T_TableLikeClause: : retval = _copyTableLikeClause(from); 0.00 : 5e78df: e9 9c 08 00 00 jmpq 5e8180 <_copyTableLikeClause> : break; : case T_CreateFunctionStmt: : retval = _copyCreateFunctionStmt(from); : break; : case T_FunctionParameter: : retval = _copyFunctionParameter(from); 0.00 : 5e78e4: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e78e7: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e78eb: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e78ef: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e78f3: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e78f7: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e78fb: c9 leaveq : break; : case T_CreateFunctionStmt: : retval = _copyCreateFunctionStmt(from); : break; : case T_FunctionParameter: : retval = _copyFunctionParameter(from); 0.00 : 5e78fc: e9 9f 0c 00 00 jmpq 5e85a0 <_copyFunctionParameter> : break; : case T_DefElem: : retval = _copyDefElem(from); : break; : case T_LockingClause: : retval = _copyLockingClause(from); 0.00 : 5e7901: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7904: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7908: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e790c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7910: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7914: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e7918: c9 leaveq : break; : case T_DefElem: : retval = _copyDefElem(from); : break; : case T_LockingClause: : retval = _copyLockingClause(from); 0.00 : 5e7919: e9 f2 31 00 00 jmpq 5eab10 <_copyLockingClause> : } : : static RowMarkClause * : _copyRowMarkClause(const RowMarkClause *from) : { : RowMarkClause *newnode = makeNode(RowMarkClause); 0.00 : 5e791e: 48 8b 3d 3b 2f 5d 00 mov 0x5d2f3b(%rip),%rdi # bba860 0.00 : 5e7925: be 14 00 00 00 mov $0x14,%esi 0.00 : 5e792a: e8 f1 16 1b 00 callq 799020 0.00 : 5e792f: c7 00 a6 03 00 00 movl $0x3a6,(%rax) : : COPY_SCALAR_FIELD(rti); 0.00 : 5e7935: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5e7939: 89 50 04 mov %edx,0x4(%rax) : COPY_SCALAR_FIELD(strength); 0.00 : 5e793c: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5e7940: 89 50 08 mov %edx,0x8(%rax) : COPY_SCALAR_FIELD(waitPolicy); 0.00 : 5e7943: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5e7947: 89 50 0c mov %edx,0xc(%rax) : COPY_SCALAR_FIELD(pushedDown); 0.00 : 5e794a: 41 0f b6 55 10 movzbl 0x10(%r13),%edx 0.00 : 5e794f: 88 50 10 mov %dl,0x10(%rax) : case T_WindowClause: : retval = _copyWindowClause(from); : break; : case T_RowMarkClause: : retval = _copyRowMarkClause(from); : break; 0.00 : 5e7952: e9 b3 c8 ff ff jmpq 5e420a : break; : case T_AccessPriv: : retval = _copyAccessPriv(from); : break; : case T_XmlSerialize: : retval = _copyXmlSerialize(from); 0.00 : 5e7957: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e795a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e795e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e7962: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7966: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e796a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e796e: c9 leaveq : break; : case T_AccessPriv: : retval = _copyAccessPriv(from); : break; : case T_XmlSerialize: : retval = _copyXmlSerialize(from); 0.00 : 5e796f: e9 fc 36 00 00 jmpq 5eb070 <_copyXmlSerialize> : break; : case T_RowMarkClause: : retval = _copyRowMarkClause(from); : break; : case T_WithClause: : retval = _copyWithClause(from); 0.00 : 5e7974: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7977: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e797b: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e797f: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e7983: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e7987: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e798b: c9 leaveq : break; : case T_RowMarkClause: : retval = _copyRowMarkClause(from); : break; : case T_WithClause: : retval = _copyWithClause(from); 0.00 : 5e798c: e9 1f 35 00 00 jmpq 5eaeb0 <_copyWithClause> : break; : case T_CommonTableExpr: : retval = _copyCommonTableExpr(from); 0.00 : 5e7991: 4c 89 ef mov %r13,%rdi : retval = 0; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5e7994: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e7998: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e799c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e79a0: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e79a4: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e79a8: c9 leaveq : break; : case T_WithClause: : retval = _copyWithClause(from); : break; : case T_CommonTableExpr: : retval = _copyCommonTableExpr(from); 0.00 : 5e79a9: e9 62 35 00 00 jmpq 5eaf10 <_copyCommonTableExpr> : case T_XmlSerialize: : retval = _copyXmlSerialize(from); : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from)); 0.00 : 5e79ae: 4c 89 f0 mov %r14,%rax 0.00 : 5e79b1: e9 54 c8 ff ff jmpq 5e420a : Value *newnode = makeNode(Value); : : /* See also _copyAConst when changing this code! */ : : COPY_SCALAR_FIELD(type); : switch (from->type) 0.00 : 5e79b6: 81 fa 8f 02 00 00 cmp $0x28f,%edx 0.00 : 5e79bc: 48 89 d8 mov %rbx,%rax 0.00 : 5e79bf: 0f 85 b1 e9 ff ff jne 5e6376 0.00 : 5e79c5: e9 40 c8 ff ff jmpq 5e420a : { : A_Const *newnode = makeNode(A_Const); : : /* This part must duplicate _copyValue */ : COPY_SCALAR_FIELD(val.type); : switch (from->val.type) 0.00 : 5e79ca: 3d 8f 02 00 00 cmp $0x28f,%eax 0.00 : 5e79cf: 90 nop 0.00 : 5e79d0: 0f 85 78 fb ff ff jne 5e754e : elog(ERROR, "unrecognized node type: %d", : (int) from->val.type); : break; : } : : COPY_LOCATION_FIELD(location); 0.00 : 5e79d6: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5e79da: 89 43 18 mov %eax,0x18(%rbx) 0.00 : 5e79dd: 48 89 d8 mov %rbx,%rax : case T_ParamRef: : retval = _copyParamRef(from); : break; : case T_A_Const: : retval = _copyAConst(from); : break; 0.00 : 5e79e0: e9 25 c8 ff ff jmpq 5e420a : else : { : /* : * passed by reference. We need a palloc'd copy. : */ : newnode->constvalue = datumCopy(from->constvalue, 0.00 : 5e79e5: 41 0f be 75 21 movsbl 0x21(%r13),%esi 0.00 : 5e79ea: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5e79ee: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5e79f2: e8 79 85 0e 00 callq 6cff70 0.00 : 5e79f7: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e79fb: e9 f7 d7 ff ff jmpq 5e51f7 : COPY_SCALAR_FIELD(val.val.ival); : break; : case T_Float: : case T_String: : case T_BitString: : COPY_STRING_FIELD(val.val.str); 0.00 : 5e7a00: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5e7a04: 31 c0 xor %eax,%eax 0.00 : 5e7a06: 48 85 ff test %rdi,%rdi 0.00 : 5e7a09: 74 05 je 5e7a10 0.00 : 5e7a0b: e8 40 15 1b 00 callq 798f50 0.00 : 5e7a10: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e7a14: eb c0 jmp 5e79d6 : COPY_SCALAR_FIELD(val.ival); : break; : case T_Float: : case T_String: : case T_BitString: : COPY_STRING_FIELD(val.str); 0.00 : 5e7a16: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5e7a1a: 31 c0 xor %eax,%eax 0.00 : 5e7a1c: 48 85 ff test %rdi,%rdi 0.00 : 5e7a1f: 74 05 je 5e7a26 0.00 : 5e7a21: e8 2a 15 1b 00 callq 798f50 0.00 : 5e7a26: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e7a2a: 48 89 d8 mov %rbx,%rax 0.00 : 5e7a2d: e9 d8 c7 ff ff jmpq 5e420a : : COPY_SCALAR_FIELD(type); : switch (from->type) : { : case T_Integer: : COPY_SCALAR_FIELD(val.ival); 0.00 : 5e7a32: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 5e7a36: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e7a3a: 48 89 d8 mov %rbx,%rax 0.00 : 5e7a3d: e9 c8 c7 ff ff jmpq 5e420a : /* This part must duplicate _copyValue */ : COPY_SCALAR_FIELD(val.type); : switch (from->val.type) : { : case T_Integer: : COPY_SCALAR_FIELD(val.val.ival); 0.00 : 5e7a42: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 5e7a46: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e7a4a: eb 8a jmp 5e79d6 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinvaladt.c:569 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinvaladt.c:569 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000684ff0 : : * Note: we assume that "datasize" is not so large that it might be important : * to break our hold on SInvalReadLock into segments. : */ : int : SIGetDataEntries(SharedInvalidationMessage *data, int datasize) : { 0.00 : 684ff0: 55 push %rbp 0.00 : 684ff1: 48 89 e5 mov %rsp,%rbp 0.00 : 684ff4: 41 57 push %r15 0.00 : 684ff6: 41 56 push %r14 0.00 : 684ff8: 41 89 f6 mov %esi,%r14d 0.00 : 684ffb: 41 55 push %r13 0.00 : 684ffd: 41 54 push %r12 : * backwards over a preceding lock acquisition, so it should be OK. If we : * haven't acquired a lock preventing against further relevant : * invalidations, any such occurrence is not much different than if the : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) 0.00 : 684fff: 45 31 e4 xor %r12d,%r12d : * Note: we assume that "datasize" is not so large that it might be important : * to break our hold on SInvalReadLock into segments. : */ : int : SIGetDataEntries(SharedInvalidationMessage *data, int datasize) : { 0.00 : 685002: 53 push %rbx 0.00 : 685003: 48 83 ec 08 sub $0x8,%rsp : ProcState *stateP; : int max; : int n; : : segP = shmInvalBuffer; : stateP = &segP->procState[MyBackendId - 1]; 0.00 : 685007: 48 63 05 fa 3a 4e 00 movslq 0x4e3afa(%rip),%rax # b68b08 : SISeg *segP; : ProcState *stateP; : int max; : int n; : : segP = shmInvalBuffer; 0.00 : 68500e: 48 8b 1d ab 88 4f 00 mov 0x4f88ab(%rip),%rbx # b7d8c0 : * Note: we assume that "datasize" is not so large that it might be important : * to break our hold on SInvalReadLock into segments. : */ : int : SIGetDataEntries(SharedInvalidationMessage *data, int datasize) : { 0.00 : 685015: 48 89 7d d0 mov %rdi,-0x30(%rbp) : * backwards over a preceding lock acquisition, so it should be OK. If we : * haven't acquired a lock preventing against further relevant : * invalidations, any such occurrence is not much different than if the : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinvaladt.c:569 33.33 : 685019: 4c 8d a8 00 08 00 00 lea 0x800(%rax),%r13 : ProcState *stateP; : int max; : int n; : : segP = shmInvalBuffer; : stateP = &segP->procState[MyBackendId - 1]; 0.00 : 685020: 4c 8d 78 ff lea -0x1(%rax),%r15 : * backwards over a preceding lock acquisition, so it should be OK. If we : * haven't acquired a lock preventing against further relevant : * invalidations, any such occurrence is not much different than if the : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) 0.00 : 685024: 49 c1 e5 05 shl $0x5,%r13 0.00 : 685028: 41 80 7c 1d 0e 00 cmpb $0x0,0xe(%r13,%rbx,1) 66.67 : 68502e: 75 18 jne 685048 : else : stateP->hasMessages = true; : : LWLockRelease(SInvalReadLock); : return n; : } 0.00 : 685030: 48 83 c4 08 add $0x8,%rsp 0.00 : 685034: 44 89 e0 mov %r12d,%eax 0.00 : 685037: 5b pop %rbx 0.00 : 685038: 41 5c pop %r12 0.00 : 68503a: 41 5d pop %r13 0.00 : 68503c: 41 5e pop %r14 0.00 : 68503e: 41 5f pop %r15 0.00 : 685040: c9 leaveq 0.00 : 685041: c3 retq 0.00 : 685042: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) : return 0; : : LWLockAcquire(SInvalReadLock, LW_SHARED); 0.00 : 685048: 48 8b 3d b1 89 4f 00 mov 0x4f89b1(%rip),%rdi # b7da00 0.00 : 68504f: be 01 00 00 00 mov $0x1,%esi 0.00 : 685054: 48 81 c7 a0 00 00 00 add $0xa0,%rdi 0.00 : 68505b: e8 90 aa 00 00 callq 68faf0 : * notice those messages part-way through. : * : * Note that, if we don't end up reading all of the messages, we had : * better be certain to reset this flag before exiting! : */ : stateP->hasMessages = false; 0.00 : 685060: 41 c6 44 1d 0e 00 movb $0x0,0xe(%r13,%rbx,1) : /* Fetch current value of maxMsgNum using spinlock */ : { : /* use volatile pointer to prevent code rearrangement */ : volatile SISeg *vsegP = segP; : : SpinLockAcquire(&vsegP->msgnumLock); 0.00 : 685066: 48 8d 7b 14 lea 0x14(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68506a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68506f: f0 86 07 lock xchg %al,(%rdi) 0.00 : 685072: 84 c0 test %al,%al 0.00 : 685074: 0f 85 ce 00 00 00 jne 685148 : max = vsegP->maxMsgNum; 0.00 : 68507a: 8b 73 04 mov 0x4(%rbx),%esi : SpinLockRelease(&vsegP->msgnumLock); : } : : if (stateP->resetState) 0.00 : 68507d: 4d 8d 87 01 08 00 00 lea 0x801(%r15),%r8 : /* use volatile pointer to prevent code rearrangement */ : volatile SISeg *vsegP = segP; : : SpinLockAcquire(&vsegP->msgnumLock); : max = vsegP->maxMsgNum; : SpinLockRelease(&vsegP->msgnumLock); 0.00 : 685084: c6 43 14 00 movb $0x0,0x14(%rbx) : } : : if (stateP->resetState) 0.00 : 685088: 4c 89 c2 mov %r8,%rdx 0.00 : 68508b: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 68508f: 80 7c 1a 0c 00 cmpb $0x0,0xc(%rdx,%rbx,1) 0.00 : 685094: 0f 85 c7 00 00 00 jne 685161 : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 68509a: 45 85 f6 test %r14d,%r14d 0.00 : 68509d: 0f 8e b9 00 00 00 jle 68515c 0.00 : 6850a3: 8b 44 1a 08 mov 0x8(%rdx,%rbx,1),%eax : * signaled flag, too. : */ : stateP->nextMsgNum = max; : stateP->resetState = false; : stateP->signaled = false; : LWLockRelease(SInvalReadLock); 0.00 : 6850a7: 45 31 e4 xor %r12d,%r12d 0.00 : 6850aa: 48 8b 7d d0 mov -0x30(%rbp),%rdi : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) : { : data[n++] = segP->buffer[stateP->nextMsgNum % MAXNUMMESSAGES]; : stateP->nextMsgNum++; 0.00 : 6850ae: 48 89 d1 mov %rdx,%rcx : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 6850b1: 39 c6 cmp %eax,%esi 0.00 : 6850b3: 7f 13 jg 6850c8 0.00 : 6850b5: e9 7e 00 00 00 jmpq 685138 0.00 : 6850ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6850c0: 48 83 c7 10 add $0x10,%rdi 0.00 : 6850c4: 39 c6 cmp %eax,%esi 0.00 : 6850c6: 7e 70 jle 685138 : { : data[n++] = segP->buffer[stateP->nextMsgNum % MAXNUMMESSAGES]; 0.00 : 6850c8: 89 c2 mov %eax,%edx 0.00 : 6850ca: 41 83 c4 01 add $0x1,%r12d 0.00 : 6850ce: c1 fa 1f sar $0x1f,%edx 0.00 : 6850d1: c1 ea 14 shr $0x14,%edx 0.00 : 6850d4: 01 d0 add %edx,%eax 0.00 : 6850d6: 25 ff 0f 00 00 and $0xfff,%eax 0.00 : 6850db: 29 d0 sub %edx,%eax 0.00 : 6850dd: 48 98 cltq 0.00 : 6850df: 48 83 c0 01 add $0x1,%rax 0.00 : 6850e3: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6850e7: 48 8b 54 18 08 mov 0x8(%rax,%rbx,1),%rdx 0.00 : 6850ec: 48 89 17 mov %rdx,(%rdi) 0.00 : 6850ef: 48 8b 44 18 10 mov 0x10(%rax,%rbx,1),%rax 0.00 : 6850f4: 48 89 47 08 mov %rax,0x8(%rdi) : stateP->nextMsgNum++; 0.00 : 6850f8: 8b 44 19 08 mov 0x8(%rcx,%rbx,1),%eax 0.00 : 6850fc: 83 c0 01 add $0x1,%eax : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 6850ff: 45 39 e6 cmp %r12d,%r14d : { : data[n++] = segP->buffer[stateP->nextMsgNum % MAXNUMMESSAGES]; : stateP->nextMsgNum++; 0.00 : 685102: 89 44 19 08 mov %eax,0x8(%rcx,%rbx,1) : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 685106: 7f b8 jg 6850c0 : * we'll get another signal if we fall behind again. : * : * If we haven't caught up completely, reset the hasMessages flag so that : * we see the remaining messages next time. : */ : if (stateP->nextMsgNum >= max) 0.00 : 685108: 4c 89 c0 mov %r8,%rax 0.00 : 68510b: 48 c1 e0 05 shl $0x5,%rax 0.00 : 68510f: 3b 74 18 08 cmp 0x8(%rax,%rbx,1),%esi 0.00 : 685113: 7e 23 jle 685138 : stateP->signaled = false; : else : stateP->hasMessages = true; 0.00 : 685115: c6 44 18 0e 01 movb $0x1,0xe(%rax,%rbx,1) : : LWLockRelease(SInvalReadLock); 0.00 : 68511a: 48 8b 3d df 88 4f 00 mov 0x4f88df(%rip),%rdi # b7da00 0.00 : 685121: 48 81 c7 a0 00 00 00 add $0xa0,%rdi 0.00 : 685128: e8 73 a2 00 00 callq 68f3a0 : return n; : } 0.00 : 68512d: e9 fe fe ff ff jmpq 685030 0.00 : 685132: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * If we haven't caught up completely, reset the hasMessages flag so that : * we see the remaining messages next time. : */ : if (stateP->nextMsgNum >= max) : stateP->signaled = false; 0.00 : 685138: 49 c1 e0 05 shl $0x5,%r8 0.00 : 68513c: 42 c6 44 03 0d 00 movb $0x0,0xd(%rbx,%r8,1) 0.00 : 685142: eb d6 jmp 68511a 0.00 : 685144: 0f 1f 40 00 nopl 0x0(%rax) : /* Fetch current value of maxMsgNum using spinlock */ : { : /* use volatile pointer to prevent code rearrangement */ : volatile SISeg *vsegP = segP; : : SpinLockAcquire(&vsegP->msgnumLock); 0.00 : 685148: ba 4e 02 00 00 mov $0x24e,%edx 0.00 : 68514d: be 1d bd 8a 00 mov $0x8abd1d,%esi 0.00 : 685152: e8 e9 ae 00 00 callq 690040 0.00 : 685157: e9 1e ff ff ff jmpq 68507a : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 68515c: 45 31 e4 xor %r12d,%r12d 0.00 : 68515f: eb a7 jmp 685108 : /* : * Force reset. We can say we have dealt with any messages added : * since the reset, as well; and that means we should clear the : * signaled flag, too. : */ : stateP->nextMsgNum = max; 0.00 : 685161: 89 74 1a 08 mov %esi,0x8(%rdx,%rbx,1) : stateP->resetState = false; 0.00 : 685165: c6 44 1a 0c 00 movb $0x0,0xc(%rdx,%rbx,1) : stateP->signaled = false; : LWLockRelease(SInvalReadLock); 0.00 : 68516a: 41 bc ff ff ff ff mov $0xffffffff,%r12d : * since the reset, as well; and that means we should clear the : * signaled flag, too. : */ : stateP->nextMsgNum = max; : stateP->resetState = false; : stateP->signaled = false; 0.00 : 685170: c6 44 1a 0d 00 movb $0x0,0xd(%rdx,%rbx,1) : LWLockRelease(SInvalReadLock); 0.00 : 685175: 48 8b 3d 84 88 4f 00 mov 0x4f8884(%rip),%rdi # b7da00 0.00 : 68517c: 48 81 c7 a0 00 00 00 add $0xa0,%rdi 0.00 : 685183: e8 18 a2 00 00 callq 68f3a0 : else : stateP->hasMessages = true; : : LWLockRelease(SInvalReadLock); : return n; : } 0.00 : 685188: e9 a3 fe ff ff jmpq 685030 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:765 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:743 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:771 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:798 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698a20 : : * use mdextend(). : */ : void : mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 20.00 : 698a20: 55 push %rbp 0.00 : 698a21: 48 89 e5 mov %rsp,%rbp 0.00 : 698a24: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 698a28: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 698a2c: 49 89 fc mov %rdi,%r12 0.00 : 698a2f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 698a33: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 698a37: 49 89 ce mov %rcx,%r14 0.00 : 698a3a: 4c 89 7d f8 mov %r15,-0x8(%rbp) : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a3e: 41 0f be c8 movsbl %r8b,%ecx : * use mdextend(). : */ : void : mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698a42: 48 83 ec 50 sub $0x50,%rsp 0.00 : 698a46: 45 89 c7 mov %r8d,%r15d 0.00 : 698a49: 89 75 cc mov %esi,-0x34(%rbp) : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a4c: 45 31 c0 xor %r8d,%r8d : * use mdextend(). : */ : void : mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698a4f: 89 55 b0 mov %edx,-0x50(%rbp) : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a52: e8 79 f9 ff ff callq 6983d0 <_mdfd_getseg> : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698a57: 8b 5d b0 mov -0x50(%rbp),%ebx : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 698a5a: 8b 38 mov (%rax),%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:765 40.00 : 698a5c: 31 d2 xor %edx,%edx : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a5e: 49 89 c5 mov %rax,%r13 : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698a61: 81 e3 ff ff 01 00 and $0x1ffff,%ebx 0.00 : 698a67: 48 c1 e3 0d shl $0xd,%rbx : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 698a6b: 48 89 de mov %rbx,%rsi 0.00 : 698a6e: e8 1d 10 fe ff callq 679a90 0.00 : 698a73: 48 39 d8 cmp %rbx,%rax 0.00 : 698a76: 0f 85 cf 00 00 00 jne 698b4b : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ); 0.00 : 698a7c: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698a80: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 698a85: 4c 89 f6 mov %r14,%rsi 0.00 : 698a88: e8 c3 11 fe ff callq 679c50 : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) 0.00 : 698a8d: 3d 00 20 00 00 cmp $0x2000,%eax : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:771 20.00 : 698a92: 89 c3 mov %eax,%ebx : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) 0.00 : 698a94: 74 6a je 698b00 : { : if (nbytes < 0) 0.00 : 698a96: 85 c0 test %eax,%eax 0.00 : 698a98: 0f 89 ea 00 00 00 jns 698b88 : ereport(ERROR, 0.00 : 698a9e: 45 31 c0 xor %r8d,%r8d 0.00 : 698aa1: b9 d1 e3 8a 00 mov $0x8ae3d1,%ecx 0.00 : 698aa6: ba 13 03 00 00 mov $0x313,%edx 0.00 : 698aab: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698ab0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698ab5: e8 06 20 0e 00 callq 77aac0 0.00 : 698aba: 84 c0 test %al,%al 0.00 : 698abc: 75 0a jne 698ac8 : (errcode_for_file_access(), : errmsg("could not write block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698abe: e8 0d 0a dd ff callq 4694d0 0.00 : 698ac3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : BLCKSZ); : : if (nbytes != BLCKSZ) : { : if (nbytes < 0) : ereport(ERROR, 0.00 : 698ac8: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698acc: e8 df f7 fd ff callq 6782b0 0.00 : 698ad1: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 698ad4: 48 89 c2 mov %rax,%rdx 0.00 : 698ad7: bf 70 e2 8a 00 mov $0x8ae270,%edi 0.00 : 698adc: 31 c0 xor %eax,%eax 0.00 : 698ade: e8 bd 3d 0e 00 callq 77c8a0 0.00 : 698ae3: 89 c3 mov %eax,%ebx 0.00 : 698ae5: e8 06 40 0e 00 callq 77caf0 0.00 : 698aea: 89 de mov %ebx,%esi 0.00 : 698aec: 89 c7 mov %eax,%edi 0.00 : 698aee: 31 c0 xor %eax,%eax 0.00 : 698af0: e8 eb 1a 0e 00 callq 77a5e0 : (errcode_for_file_access(), : errmsg("could not write block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698af5: e8 d6 09 dd ff callq 4694d0 0.00 : 698afa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : FilePathName(v->mdfd_vfd), : nbytes, BLCKSZ), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) 0.00 : 698b00: 45 84 ff test %r15b,%r15b 0.00 : 698b03: 75 08 jne 698b0d 0.00 : 698b05: 41 83 7c 24 0c ff cmpl $0xffffffff,0xc(%r12) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:798 20.00 : 698b0b: 74 1b je 698b28 : register_dirty_segment(reln, forknum, v); : } 0.00 : 698b0d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 698b11: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 698b15: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 698b19: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698b1d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 698b21: c9 leaveq 0.00 : 698b22: c3 retq 0.00 : 698b23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : nbytes, BLCKSZ), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); 0.00 : 698b28: 4c 89 ea mov %r13,%rdx 0.00 : 698b2b: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698b2e: 4c 89 e7 mov %r12,%rdi : } 0.00 : 698b31: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 698b35: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 698b39: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 698b3d: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698b41: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 698b45: c9 leaveq : nbytes, BLCKSZ), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); 0.00 : 698b46: e9 05 ed ff ff jmpq 697850 : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698b4b: 45 31 c0 xor %r8d,%r8d 0.00 : 698b4e: b9 d1 e3 8a 00 mov $0x8ae3d1,%ecx 0.00 : 698b53: ba 01 03 00 00 mov $0x301,%edx 0.00 : 698b58: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698b5d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698b62: e8 59 1f 0e 00 callq 77aac0 0.00 : 698b67: 84 c0 test %al,%al 0.00 : 698b69: 0f 84 4f ff ff ff je 698abe 0.00 : 698b6f: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698b73: e8 38 f7 fd ff callq 6782b0 0.00 : 698b78: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 698b7b: 48 89 c2 mov %rax,%rdx 0.00 : 698b7e: bf 18 e1 8a 00 mov $0x8ae118,%edi 0.00 : 698b83: e9 54 ff ff ff jmpq 698adc : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not write block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698b88: 45 31 c0 xor %r8d,%r8d 0.00 : 698b8b: b9 d1 e3 8a 00 mov $0x8ae3d1,%ecx 0.00 : 698b90: ba 1b 03 00 00 mov $0x31b,%edx 0.00 : 698b95: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698b9a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698b9f: e8 1c 1f 0e 00 callq 77aac0 0.00 : 698ba4: 84 c0 test %al,%al 0.00 : 698ba6: 0f 84 12 ff ff ff je 698abe 0.00 : 698bac: bf a6 df 8a 00 mov $0x8adfa6,%edi 0.00 : 698bb1: 31 c0 xor %eax,%eax 0.00 : 698bb3: e8 e8 30 0e 00 callq 77bca0 0.00 : 698bb8: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698bbc: 41 89 c4 mov %eax,%r12d 0.00 : 698bbf: e8 ec f6 fd ff callq 6782b0 0.00 : 698bc4: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 698bc7: 89 d9 mov %ebx,%ecx 0.00 : 698bc9: 48 89 c2 mov %rax,%rdx 0.00 : 698bcc: 41 b8 00 20 00 00 mov $0x2000,%r8d 0.00 : 698bd2: bf a0 e2 8a 00 mov $0x8ae2a0,%edi 0.00 : 698bd7: 31 c0 xor %eax,%eax 0.00 : 698bd9: e8 c2 3c 0e 00 callq 77c8a0 0.00 : 698bde: bf c5 10 00 00 mov $0x10c5,%edi 0.00 : 698be3: 89 c3 mov %eax,%ebx 0.00 : 698be5: e8 66 41 0e 00 callq 77cd50 0.00 : 698bea: 44 89 e2 mov %r12d,%edx 0.00 : 698bed: 89 c7 mov %eax,%edi 0.00 : 698bef: 89 de mov %ebx,%esi 0.00 : 698bf1: 31 c0 xor %eax,%eax 0.00 : 698bf3: e8 e8 19 0e 00 callq 77a5e0 0.00 : 698bf8: e9 c1 fe ff ff jmpq 698abe Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:204 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:204 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:204 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ec150 : : /* int8relop() : * Is val1 relop val2? : */ : Datum : int8eq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int8.c:204 33.33 : 6ec150: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 6ec154: 48 39 47 20 cmp %rax,0x20(%rdi) 33.33 : 6ec158: 55 push %rbp 33.33 : 6ec159: 48 89 e5 mov %rsp,%rbp : int64 val1 = PG_GETARG_INT64(0); : int64 val2 = PG_GETARG_INT64(1); : : PG_RETURN_BOOL(val1 == val2); : } 0.00 : 6ec15c: c9 leaveq : /* int8relop() : * Is val1 relop val2? : */ : Datum : int8eq(PG_FUNCTION_ARGS) : { 0.00 : 6ec15d: 0f 94 c0 sete %al 0.00 : 6ec160: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1376 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1376 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000706f10 : : } : : : Datum : numeric_eq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1376 66.67 : 706f10: 55 push %rbp 0.00 : 706f11: 48 89 e5 mov %rsp,%rbp 0.00 : 706f14: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 706f18: 4c 89 65 e8 mov %r12,-0x18(%rbp) 33.33 : 706f1c: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 706f20: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 706f24: 49 89 fd mov %rdi,%r13 0.00 : 706f27: 48 83 ec 20 sub $0x20,%rsp : Numeric num1 = PG_GETARG_NUMERIC(0); 0.00 : 706f2b: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 706f2f: e8 dc 7d 07 00 callq 77ed10 : Numeric num2 = PG_GETARG_NUMERIC(1); 0.00 : 706f34: 49 8b 7d 28 mov 0x28(%r13),%rdi : : : Datum : numeric_eq(PG_FUNCTION_ARGS) : { : Numeric num1 = PG_GETARG_NUMERIC(0); 0.00 : 706f38: 49 89 c4 mov %rax,%r12 : Numeric num2 = PG_GETARG_NUMERIC(1); 0.00 : 706f3b: e8 d0 7d 07 00 callq 77ed10 : bool result; : : result = cmp_numerics(num1, num2) == 0; 0.00 : 706f40: 4c 89 e7 mov %r12,%rdi 0.00 : 706f43: 48 89 c6 mov %rax,%rsi : : Datum : numeric_eq(PG_FUNCTION_ARGS) : { : Numeric num1 = PG_GETARG_NUMERIC(0); : Numeric num2 = PG_GETARG_NUMERIC(1); 0.00 : 706f46: 48 89 c3 mov %rax,%rbx : bool result; : : result = cmp_numerics(num1, num2) == 0; 0.00 : 706f49: e8 02 f4 ff ff callq 706350 : : PG_FREE_IF_COPY(num1, 0); 0.00 : 706f4e: 4d 3b 65 20 cmp 0x20(%r13),%r12 : { : Numeric num1 = PG_GETARG_NUMERIC(0); : Numeric num2 = PG_GETARG_NUMERIC(1); : bool result; : : result = cmp_numerics(num1, num2) == 0; 0.00 : 706f52: 41 89 c6 mov %eax,%r14d : : PG_FREE_IF_COPY(num1, 0); 0.00 : 706f55: 74 08 je 706f5f 0.00 : 706f57: 4c 89 e7 mov %r12,%rdi 0.00 : 706f5a: e8 21 1c 09 00 callq 798b80 : PG_FREE_IF_COPY(num2, 1); 0.00 : 706f5f: 49 3b 5d 28 cmp 0x28(%r13),%rbx 0.00 : 706f63: 74 08 je 706f6d 0.00 : 706f65: 48 89 df mov %rbx,%rdi 0.00 : 706f68: e8 13 1c 09 00 callq 798b80 0.00 : 706f6d: 31 c0 xor %eax,%eax 0.00 : 706f6f: 45 85 f6 test %r14d,%r14d : : PG_RETURN_BOOL(result); : } 0.00 : 706f72: 48 8b 1c 24 mov (%rsp),%rbx : bool result; : : result = cmp_numerics(num1, num2) == 0; : : PG_FREE_IF_COPY(num1, 0); : PG_FREE_IF_COPY(num2, 1); 0.00 : 706f76: 0f 94 c0 sete %al : : PG_RETURN_BOOL(result); : } 0.00 : 706f79: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 706f7e: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 706f83: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 706f88: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070dbd0 : : * Unlike plain atoi(), this will throw ereport() upon bad input format or : * overflow. : */ : int32 : pg_atoi(char *s, int size, int c) : { 0.00 : 70dbd0: 55 push %rbp 0.00 : 70dbd1: 48 89 e5 mov %rsp,%rbp 0.00 : 70dbd4: 41 57 push %r15 0.00 : 70dbd6: 49 89 ff mov %rdi,%r15 0.00 : 70dbd9: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 20.00 : 70dbdb: 41 55 push %r13 20.00 : 70dbdd: 41 89 f5 mov %esi,%r13d 0.00 : 70dbe0: 41 54 push %r12 0.00 : 70dbe2: 53 push %rbx 0.00 : 70dbe3: 48 83 ec 18 sub $0x18,%rsp : : /* : * Some versions of strtol treat the empty string as an error, but some : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) 0.00 : 70dbe7: 48 85 ff test %rdi,%rdi : * Unlike plain atoi(), this will throw ereport() upon bad input format or : * overflow. : */ : int32 : pg_atoi(char *s, int size, int c) : { 0.00 : 70dbea: 89 55 c4 mov %edx,-0x3c(%rbp) : : /* : * Some versions of strtol treat the empty string as an error, but some : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) 0.00 : 70dbed: 0f 84 86 02 00 00 je 70de79 : elog(ERROR, "NULL pointer"); : if (*s == 0) 0.00 : 70dbf3: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 70dbf6: 0f 84 6b 02 00 00 je 70de67 : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; 0.00 : 70dbfc: e8 bf c0 d5 ff callq 469cc0 <__errno_location@plt> : l = strtol(s, &badp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 20.00 : 70dc01: 48 8d 75 d0 lea -0x30(%rbp),%rsi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; 0.00 : 70dc05: c7 00 00 00 00 00 movl $0x0,(%rax) : l = strtol(s, &badp, 10); 20.00 : 70dc0b: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 70dc10: 4c 89 ff mov %r15,%rdi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; 0.00 : 70dc13: 48 89 c3 mov %rax,%rbx : l = strtol(s, &badp, 10); 0.00 : 70dc16: e8 75 bf d5 ff callq 469b90 : : /* We made no progress parsing the string, so bail out */ : if (s == badp) 0.00 : 70dc1b: 4c 8b 65 d0 mov -0x30(%rbp),%r12 : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; : l = strtol(s, &badp, 10); 0.00 : 70dc1f: 49 89 c6 mov %rax,%r14 : : /* We made no progress parsing the string, so bail out */ : if (s == badp) 0.00 : 70dc22: 4d 39 e7 cmp %r12,%r15 0.00 : 70dc25: 0f 84 2a 02 00 00 je 70de55 : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : switch (size) 0.00 : 70dc2b: 41 83 fd 02 cmp $0x2,%r13d 0.00 : 70dc2f: 0f 84 db 00 00 00 je 70dd10 0.00 : 70dc35: 41 83 fd 04 cmp $0x4,%r13d 0.00 : 70dc39: 74 35 je 70dc70 0.00 : 70dc3b: 41 83 fd 01 cmp $0x1,%r13d 0.00 : 70dc3f: 90 nop 0.00 : 70dc40: 74 7e je 70dcc0 : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for 8-bit integer", s))); : break; : default: : elog(ERROR, "unsupported result size: %d", size); 0.00 : 70dc42: ba bd 43 8c 00 mov $0x8c43bd,%edx 0.00 : 70dc47: be 5a 00 00 00 mov $0x5a,%esi 0.00 : 70dc4c: bf f8 42 8c 00 mov $0x8c42f8,%edi 0.00 : 70dc51: e8 ca d7 06 00 callq 77b420 0.00 : 70dc56: 44 89 ea mov %r13d,%edx 0.00 : 70dc59: be 10 43 8c 00 mov $0x8c4310,%esi 0.00 : 70dc5e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dc63: 31 c0 xor %eax,%eax 0.00 : 70dc65: e8 c6 d5 06 00 callq 77b230 0.00 : 70dc6a: e8 61 b8 d5 ff callq 4694d0 0.00 : 70dc6f: 90 nop : s))); : : switch (size) : { : case sizeof(int32): : if (errno == ERANGE 0.00 : 70dc70: 83 3b 22 cmpl $0x22,(%rbx) 0.00 : 70dc73: 74 0c je 70dc81 0.00 : 70dc75: 48 3d 00 00 00 80 cmp $0xffffffff80000000,%rax 0.00 : 70dc7b: 0f 8d a7 01 00 00 jge 70de28 : #if defined(HAVE_LONG_INT_64) : /* won't get ERANGE on these with 64-bit longs... */ : || l < INT_MIN || l > INT_MAX : #endif : ) : ereport(ERROR, 0.00 : 70dc81: 45 31 c0 xor %r8d,%r8d 0.00 : 70dc84: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70dc89: ba 4b 00 00 00 mov $0x4b,%edx 0.00 : 70dc8e: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70dc93: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dc98: e8 23 ce 06 00 callq 77aac0 0.00 : 70dc9d: 84 c0 test %al,%al 0.00 : 70dc9f: 0f 84 a3 00 00 00 je 70dd48 0.00 : 70dca5: bf 30 43 8c 00 mov $0x8c4330,%edi 0.00 : 70dcaa: 4c 89 fe mov %r15,%rsi 0.00 : 70dcad: 31 c0 xor %eax,%eax 0.00 : 70dcaf: e8 ec eb 06 00 callq 77c8a0 0.00 : 70dcb4: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 70dcb9: 89 c3 mov %eax,%ebx 0.00 : 70dcbb: e9 20 01 00 00 jmpq 70dde0 : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type smallint", s))); : break; : case sizeof(int8): : if (errno == ERANGE || l < SCHAR_MIN || l > SCHAR_MAX) 0.00 : 70dcc0: 83 3b 22 cmpl $0x22,(%rbx) 0.00 : 70dcc3: 74 0a je 70dccf 0.00 : 70dcc5: 48 83 f8 80 cmp $0xffffffffffffff80,%rax 0.00 : 70dcc9: 0f 8d 81 00 00 00 jge 70dd50 : ereport(ERROR, 0.00 : 70dccf: 45 31 c0 xor %r8d,%r8d 0.00 : 70dcd2: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70dcd7: ba 57 00 00 00 mov $0x57,%edx 0.00 : 70dcdc: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70dce1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dce6: e8 d5 cd 06 00 callq 77aac0 0.00 : 70dceb: 84 c0 test %al,%al 0.00 : 70dced: 74 59 je 70dd48 0.00 : 70dcef: bf 90 43 8c 00 mov $0x8c4390,%edi 0.00 : 70dcf4: 4c 89 fe mov %r15,%rsi 0.00 : 70dcf7: 31 c0 xor %eax,%eax 0.00 : 70dcf9: e8 a2 eb 06 00 callq 77c8a0 0.00 : 70dcfe: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 70dd03: 89 c3 mov %eax,%ebx 0.00 : 70dd05: e9 d6 00 00 00 jmpq 70dde0 0.00 : 70dd0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type integer", s))); : break; : case sizeof(int16): : if (errno == ERANGE || l < SHRT_MIN || l > SHRT_MAX) 0.00 : 70dd10: 83 3b 22 cmpl $0x22,(%rbx) 0.00 : 70dd13: 74 0c je 70dd21 0.00 : 70dd15: 48 3d 00 80 ff ff cmp $0xffffffffffff8000,%rax 0.00 : 70dd1b: 0f 8d ef 00 00 00 jge 70de10 : ereport(ERROR, 0.00 : 70dd21: 45 31 c0 xor %r8d,%r8d 0.00 : 70dd24: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70dd29: ba 51 00 00 00 mov $0x51,%edx 0.00 : 70dd2e: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70dd33: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dd38: e8 83 cd 06 00 callq 77aac0 0.00 : 70dd3d: 84 c0 test %al,%al 0.00 : 70dd3f: 0f 85 f8 00 00 00 jne 70de3d 0.00 : 70dd45: 0f 1f 00 nopl (%rax) : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) : badp++; : : if (*badp && *badp != c) : ereport(ERROR, 0.00 : 70dd48: e8 83 b7 d5 ff callq 4694d0 0.00 : 70dd4d: 0f 1f 00 nopl (%rax) : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type smallint", s))); : break; : case sizeof(int8): : if (errno == ERANGE || l < SCHAR_MIN || l > SCHAR_MAX) 0.00 : 70dd50: 48 83 f8 7f cmp $0x7f,%rax 0.00 : 70dd54: 0f 8f 75 ff ff ff jg 70dccf : : /* : * Skip any trailing whitespace; if anything but whitespace remains before : * the terminating character, bail out : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) 0.00 : 70dd5a: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 70dd5f: 84 db test %bl,%bl 0.00 : 70dd61: 0f 84 91 00 00 00 je 70ddf8 0.00 : 70dd67: 0f be c3 movsbl %bl,%eax 0.00 : 70dd6a: 3b 45 c4 cmp -0x3c(%rbp),%eax 0.00 : 70dd6d: 0f 84 85 00 00 00 je 70ddf8 : * Unlike plain atoi(), this will throw ereport() upon bad input format or : * overflow. : */ : int32 : pg_atoi(char *s, int size, int c) : { 0.00 : 70dd73: e8 48 bb d5 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 70dd78: 48 89 c1 mov %rax,%rcx 0.00 : 70dd7b: eb 1c jmp 70dd99 0.00 : 70dd7d: 0f 1f 00 nopl (%rax) : /* : * Skip any trailing whitespace; if anything but whitespace remains before : * the terminating character, bail out : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) : badp++; 0.00 : 70dd80: 49 83 c4 01 add $0x1,%r12 0.00 : 70dd84: 4c 89 65 d0 mov %r12,-0x30(%rbp) : : /* : * Skip any trailing whitespace; if anything but whitespace remains before : * the terminating character, bail out : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) 0.00 : 70dd88: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 70dd8d: 84 db test %bl,%bl 0.00 : 70dd8f: 74 67 je 70ddf8 0.00 : 70dd91: 0f be c3 movsbl %bl,%eax 0.00 : 70dd94: 3b 45 c4 cmp -0x3c(%rbp),%eax 0.00 : 70dd97: 74 5f je 70ddf8 0.00 : 70dd99: 48 8b 01 mov (%rcx),%rax 0.00 : 70dd9c: 0f b6 d3 movzbl %bl,%edx 0.00 : 70dd9f: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 70dda4: 75 da jne 70dd80 : badp++; : : if (*badp && *badp != c) : ereport(ERROR, 0.00 : 70dda6: 45 31 c0 xor %r8d,%r8d 0.00 : 70dda9: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70ddae: ba 68 00 00 00 mov $0x68,%edx 0.00 : 70ddb3: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70ddb8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70ddbd: e8 fe cc 06 00 callq 77aac0 0.00 : 70ddc2: 84 c0 test %al,%al 0.00 : 70ddc4: 74 82 je 70dd48 0.00 : 70ddc6: bf 18 ed 8b 00 mov $0x8bed18,%edi 0.00 : 70ddcb: 4c 89 fe mov %r15,%rsi 0.00 : 70ddce: 31 c0 xor %eax,%eax 0.00 : 70ddd0: e8 cb ea 06 00 callq 77c8a0 0.00 : 70ddd5: bf 82 00 02 02 mov $0x2020082,%edi 0.00 : 70ddda: 89 c3 mov %eax,%ebx 0.00 : 70dddc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 70dde0: e8 6b ef 06 00 callq 77cd50 0.00 : 70dde5: 89 de mov %ebx,%esi 0.00 : 70dde7: 89 c7 mov %eax,%edi 0.00 : 70dde9: 31 c0 xor %eax,%eax 0.00 : 70ddeb: e8 f0 c7 06 00 callq 77a5e0 0.00 : 70ddf0: e9 53 ff ff ff jmpq 70dd48 0.00 : 70ddf5: 0f 1f 00 nopl (%rax) : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : return (int32) l; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 20.00 : 70ddf8: 48 83 c4 18 add $0x18,%rsp 0.00 : 70ddfc: 44 89 f0 mov %r14d,%eax 0.00 : 70ddff: 5b pop %rbx 0.00 : 70de00: 41 5c pop %r12 0.00 : 70de02: 41 5d pop %r13 0.00 : 70de04: 41 5e pop %r14 0.00 : 70de06: 41 5f pop %r15 0.00 : 70de08: c9 leaveq 0.00 : 70de09: c3 retq 0.00 : 70de0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type integer", s))); : break; : case sizeof(int16): : if (errno == ERANGE || l < SHRT_MIN || l > SHRT_MAX) 0.00 : 70de10: 48 3d ff 7f 00 00 cmp $0x7fff,%rax 0.00 : 70de16: 0f 8e 3e ff ff ff jle 70dd5a 0.00 : 70de1c: e9 00 ff ff ff jmpq 70dd21 0.00 : 70de21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : s))); : : switch (size) : { : case sizeof(int32): : if (errno == ERANGE 0.00 : 70de28: 48 3d ff ff ff 7f cmp $0x7fffffff,%rax 0.00 : 70de2e: 66 90 xchg %ax,%ax 0.00 : 70de30: 0f 8f 4b fe ff ff jg 70dc81 0.00 : 70de36: 66 90 xchg %ax,%ax 0.00 : 70de38: e9 1d ff ff ff jmpq 70dd5a : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type integer", s))); : break; : case sizeof(int16): : if (errno == ERANGE || l < SHRT_MIN || l > SHRT_MAX) : ereport(ERROR, 0.00 : 70de3d: bf 60 43 8c 00 mov $0x8c4360,%edi 0.00 : 70de42: 4c 89 fe mov %r15,%rsi 0.00 : 70de45: 31 c0 xor %eax,%eax 0.00 : 70de47: e8 54 ea 06 00 callq 77c8a0 0.00 : 70de4c: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 70de51: 89 c3 mov %eax,%ebx 0.00 : 70de53: eb 8b jmp 70dde0 : errno = 0; : l = strtol(s, &badp, 10); : : /* We made no progress parsing the string, so bail out */ : if (s == badp) : ereport(ERROR, 0.00 : 70de55: 45 31 c0 xor %r8d,%r8d 0.00 : 70de58: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70de5d: ba 3e 00 00 00 mov $0x3e,%edx 0.00 : 70de62: e9 4c ff ff ff jmpq 70ddb3 : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) : elog(ERROR, "NULL pointer"); : if (*s == 0) : ereport(ERROR, 0.00 : 70de67: 45 31 c0 xor %r8d,%r8d 0.00 : 70de6a: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70de6f: ba 34 00 00 00 mov $0x34,%edx 0.00 : 70de74: e9 3a ff ff ff jmpq 70ddb3 : /* : * Some versions of strtol treat the empty string as an error, but some : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) : elog(ERROR, "NULL pointer"); 0.00 : 70de79: ba bd 43 8c 00 mov $0x8c43bd,%edx 0.00 : 70de7e: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 70de83: bf f8 42 8c 00 mov $0x8c42f8,%edi 0.00 : 70de88: e8 93 d5 06 00 callq 77b420 0.00 : 70de8d: be 03 43 8c 00 mov $0x8c4303,%esi 0.00 : 70de92: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70de97: 31 c0 xor %eax,%eax 0.00 : 70de99: e8 92 d3 06 00 callq 77b230 0.00 : 70de9e: e8 2d b6 d5 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oid.c:338 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oid.c:338 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oid.c:338 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070deb0 : : * PUBLIC ROUTINES * : *****************************************************************************/ : : Datum : oideq(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oid.c:338 33.33 : 70deb0: 48 8b 47 28 mov 0x28(%rdi),%rax 33.33 : 70deb4: 39 47 20 cmp %eax,0x20(%rdi) 0.00 : 70deb7: 55 push %rbp 0.00 : 70deb8: 48 89 e5 mov %rsp,%rbp : Oid arg1 = PG_GETARG_OID(0); : Oid arg2 = PG_GETARG_OID(1); : : PG_RETURN_BOOL(arg1 == arg2); : } 0.00 : 70debb: c9 leaveq : * PUBLIC ROUTINES * : *****************************************************************************/ : : Datum : oideq(PG_FUNCTION_ARGS) : { 0.00 : 70debc: 0f 94 c0 sete %al 33.33 : 70debf: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:473 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:635 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:443 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000711e20 : : * ---------- : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { 0.00 : 711e20: 55 push %rbp : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e21: b8 70 48 8c 00 mov $0x8c4870,%eax : * ---------- : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { 0.00 : 711e26: 48 89 e5 mov %rsp,%rbp 0.00 : 711e29: 41 57 push %r15 0.00 : 711e2b: 41 56 push %r14 0.00 : 711e2d: 41 55 push %r13 0.00 : 711e2f: 41 54 push %r12 0.00 : 711e31: 49 89 fc mov %rdi,%r12 0.00 : 711e34: 53 push %rbx 0.00 : 711e35: 48 81 ec 88 00 00 00 sub $0x88,%rsp : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e3c: 48 85 c9 test %rcx,%rcx : * ---------- : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { 0.00 : 711e3f: 48 89 95 70 ff ff ff mov %rdx,-0x90(%rbp) : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e46: 48 0f 45 c1 cmovne %rcx,%rax : unsigned char *bstart = bp; : int hist_next = 1; : bool hist_recycle = false; : const char *dp = source; : const char *dend = source + slen; : unsigned char ctrl_dummy = 0; 0.00 : 711e4a: c6 45 d7 00 movb $0x0,-0x29(%rbp) : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e4e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : : /* : * If the strategy forbids compression (at all or if source chunk size out : * of range), fail. : */ : if (strategy->match_size_good <= 0 || 0.00 : 711e55: 8b 48 10 mov 0x10(%rax),%ecx 0.00 : 711e58: 85 c9 test %ecx,%ecx 0.00 : 711e5a: 0f 8e c7 03 00 00 jle 712227 0.00 : 711e60: 3b 30 cmp (%rax),%esi 0.00 : 711e62: 0f 8c bf 03 00 00 jl 712227 0.00 : 711e68: 3b 70 04 cmp 0x4(%rax),%esi 0.00 : 711e6b: 0f 8f b6 03 00 00 jg 712227 : return false; : : /* : * Save the original source size in the header. : */ : dest->rawsize = slen; 0.00 : 711e71: 89 72 04 mov %esi,0x4(%rdx) : : /* : * Limit the match parameters to the supported range. : */ : good_match = strategy->match_size_good; 0.00 : 711e74: 8b 40 10 mov 0x10(%rax),%eax : if (good_match > PGLZ_MAX_MATCH) 0.00 : 711e77: 3d 11 01 00 00 cmp $0x111,%eax : dest->rawsize = slen; : : /* : * Limit the match parameters to the supported range. : */ : good_match = strategy->match_size_good; 0.00 : 711e7c: 89 45 98 mov %eax,-0x68(%rbp) : if (good_match > PGLZ_MAX_MATCH) 0.00 : 711e7f: 0f 8e b6 03 00 00 jle 71223b 0.00 : 711e85: c7 45 98 11 01 00 00 movl $0x111,-0x68(%rbp) : good_match = PGLZ_MAX_MATCH; : else if (good_match < 17) : good_match = 17; : : good_drop = strategy->match_size_drop; 0.00 : 711e8c: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 711e93: bf 64 00 00 00 mov $0x64,%edi 0.00 : 711e98: 8b 42 14 mov 0x14(%rdx),%eax 0.00 : 711e9b: 83 f8 64 cmp $0x64,%eax 0.00 : 711e9e: 0f 4f c7 cmovg %edi,%eax 0.00 : 711ea1: 31 c9 xor %ecx,%ecx 0.00 : 711ea3: 85 c0 test %eax,%eax 0.00 : 711ea5: 0f 48 c1 cmovs %ecx,%eax 0.00 : 711ea8: 89 45 bc mov %eax,-0x44(%rbp) : if (good_drop < 0) : good_drop = 0; : else if (good_drop > 100) : good_drop = 100; : : need_rate = strategy->min_comp_rate; 0.00 : 711eab: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 711eae: b8 63 00 00 00 mov $0x63,%eax 0.00 : 711eb3: 83 fa 63 cmp $0x63,%edx 0.00 : 711eb6: 0f 4e c2 cmovle %edx,%eax 0.00 : 711eb9: 85 c0 test %eax,%eax 0.00 : 711ebb: 0f 49 c8 cmovns %eax,%ecx : /* : * Compute the maximum result size allowed by the strategy, namely the : * input size minus the minimum wanted compression rate. This had better : * be <= slen, else we might overrun the provided output buffer. : */ : if (slen > (INT_MAX / 100)) 0.00 : 711ebe: 81 fe 14 ae 47 01 cmp $0x147ae14,%esi 0.00 : 711ec4: 0f 8e e6 05 00 00 jle 7124b0 : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); 0.00 : 711eca: b8 1f 85 eb 51 mov $0x51eb851f,%eax 0.00 : 711ecf: 29 cf sub %ecx,%edi 0.00 : 711ed1: f7 ee imul %esi 0.00 : 711ed3: 89 f0 mov %esi,%eax 0.00 : 711ed5: c1 f8 1f sar $0x1f,%eax 0.00 : 711ed8: c1 fa 05 sar $0x5,%edx 0.00 : 711edb: 29 c2 sub %eax,%edx 0.00 : 711edd: 0f af fa imul %edx,%edi 0.00 : 711ee0: 89 7d 9c mov %edi,-0x64(%rbp) : */ : if (slen < 128) : hashsz = 512; : else if (slen < 256) : hashsz = 1024; : else if (slen < 512) 0.00 : 711ee3: 81 fe ff 01 00 00 cmp $0x1ff,%esi 0.00 : 711ee9: c7 45 ac ff 07 00 00 movl $0x7ff,-0x54(%rbp) 0.00 : 711ef0: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 711ef5: 0f 8f 60 06 00 00 jg 71255b : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { : unsigned char *bp = ((unsigned char *) dest) + sizeof(PGLZ_Header); 0.00 : 711efb: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : unsigned char *bstart = bp; : int hist_next = 1; : bool hist_recycle = false; : const char *dp = source; : const char *dend = source + slen; 0.00 : 711f02: 48 63 c6 movslq %esi,%rax : : /* : * Initialize the history lists to empty. We do not need to zero the : * hist_entries[] array; its entries are initialized as they are used. : */ : memset(hist_start, 0, hashsz * sizeof(int16)); 0.00 : 711f05: bf c0 31 b9 00 mov $0xb931c0,%edi : unsigned char *bp = ((unsigned char *) dest) + sizeof(PGLZ_Header); : unsigned char *bstart = bp; : int hist_next = 1; : bool hist_recycle = false; : const char *dp = source; : const char *dend = source + slen; 0.00 : 711f0a: 49 8d 1c 04 lea (%r12,%rax,1),%rbx : : /* : * Initialize the history lists to empty. We do not need to zero the : * hist_entries[] array; its entries are initialized as they are used. : */ : memset(hist_start, 0, hashsz * sizeof(int16)); 0.00 : 711f0e: 31 f6 xor %esi,%esi : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { : unsigned char *bp = ((unsigned char *) dest) + sizeof(PGLZ_Header); 0.00 : 711f10: 48 83 c1 08 add $0x8,%rcx 0.00 : 711f14: 48 89 4d b0 mov %rcx,-0x50(%rbp) : : /* : * Initialize the history lists to empty. We do not need to zero the : * hist_entries[] array; its entries are initialized as they are used. : */ : memset(hist_start, 0, hashsz * sizeof(int16)); 0.00 : 711f18: e8 03 75 d5 ff callq 469420 : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 711f1d: 49 39 dc cmp %rbx,%r12 0.00 : 711f20: 0f 83 61 06 00 00 jae 712587 : * : * We check once per loop; since the loop body could emit as many as 4 : * bytes (a control byte and 3-byte tag), PGLZ_MAX_OUTPUT() had better : * allow 4 slop bytes. : */ : if (bp - bstart >= result_max) 0.00 : 711f26: 48 63 55 9c movslq -0x64(%rbp),%rdx 0.00 : 711f2a: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 711f2e: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 711f32: 48 85 d2 test %rdx,%rdx 0.00 : 711f35: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) 0.00 : 711f3c: 0f 8e e5 02 00 00 jle 712227 0.00 : 711f42: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 711f46: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 711f4c: c6 45 87 00 movb $0x0,-0x79(%rbp) 0.00 : 711f50: c6 45 95 00 movb $0x0,-0x6b(%rbp) 0.00 : 711f54: c6 45 96 00 movb $0x0,-0x6a(%rbp) 0.00 : 711f58: 31 d2 xor %edx,%edx 0.00 : 711f5a: 48 89 4d 88 mov %rcx,-0x78(%rbp) 0.00 : 711f5e: c6 45 97 00 movb $0x0,-0x69(%rbp) 0.00 : 711f62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * If we've emitted more than first_success_by bytes without finding : * anything compressible at all, fail. This lets us fall out : * reasonably quickly when looking at incompressible input (such as : * pre-compressed data). : */ : if (!found_match && bp - bstart >= strategy->first_success_by) 0.00 : 711f68: 80 7d 97 00 cmpb $0x0,-0x69(%rbp) 0.00 : 711f6c: 75 14 jne 711f82 0.00 : 711f6e: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 711f75: 48 63 47 0c movslq 0xc(%rdi),%rax 0.00 : 711f79: 48 39 d0 cmp %rdx,%rax 0.00 : 711f7c: 0f 8e a5 02 00 00 jle 712227 : int32 off = 0; : : /* : * Traverse the linked history list until a good enough match is found. : */ : hentno = hstart[pglz_hist_idx(input, end, mask)]; 0.00 : 711f82: 48 89 d8 mov %rbx,%rax 0.00 : 711f85: 4c 29 e0 sub %r12,%rax 0.00 : 711f88: 48 83 f8 03 cmp $0x3,%rax 0.00 : 711f8c: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 711f90: 0f 8f d6 03 00 00 jg 71236c 0.00 : 711f96: 41 0f be 14 24 movsbl (%r12),%edx : hent = &hist_entries[hentno]; 0.00 : 711f9b: 23 55 ac and -0x54(%rbp),%edx 0.00 : 711f9e: 48 63 c2 movslq %edx,%rax 0.00 : 711fa1: 48 0f bf 84 00 c0 31 movswq 0xb931c0(%rax,%rax,1),%rax 0.00 : 711fa8: b9 00 0.00 : 711faa: 48 c1 e0 05 shl $0x5,%rax 0.00 : 711fae: 4c 8d 88 c0 71 b9 00 lea 0xb971c0(%rax),%r9 : while (hent != INVALID_ENTRY_PTR) 0.00 : 711fb5: 49 81 f9 c0 71 b9 00 cmp $0xb971c0,%r9 0.00 : 711fbc: 0f 84 b3 02 00 00 je 712275 : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 711fc2: 49 8b 51 18 mov 0x18(%r9),%rdx : int32 thislen; : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; 0.00 : 711fc6: 45 89 e3 mov %r12d,%r11d 0.00 : 711fc9: 45 89 e6 mov %r12d,%r14d 0.00 : 711fcc: 41 29 d3 sub %edx,%r11d : hentno = hstart[pglz_hist_idx(input, end, mask)]; : hent = &hist_entries[hentno]; : while (hent != INVALID_ENTRY_PTR) : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 711fcf: 48 89 95 60 ff ff ff mov %rdx,-0xa0(%rbp) : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; : if (thisoff >= 0x0fff) 0.00 : 711fd6: 41 81 fb fe 0f 00 00 cmp $0xffe,%r11d 0.00 : 711fdd: 0f 8f 92 02 00 00 jg 712275 0.00 : 711fe3: 45 31 c0 xor %r8d,%r8d 0.00 : 711fe6: 45 31 ff xor %r15d,%r15d : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) 0.00 : 711fe9: 31 d2 xor %edx,%edx 0.00 : 711feb: 41 83 f8 0f cmp $0xf,%r8d : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; : if (thisoff >= 0x0fff) 0.00 : 711fef: 44 8b 55 98 mov -0x68(%rbp),%r10d : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) 0.00 : 711ff3: 4c 89 e1 mov %r12,%rcx 0.00 : 711ff6: 0f 8f 83 00 00 00 jg 71207f 0.00 : 711ffc: 0f 1f 40 00 nopl 0x0(%rax) : } : } : } : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712000: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 712007: 0f b6 01 movzbl (%rcx),%eax 0.00 : 71200a: 89 d6 mov %edx,%esi 0.00 : 71200c: 3a 04 17 cmp (%rdi,%rdx,1),%al 0.00 : 71200f: 0f 84 3b 02 00 00 je 712250 : } : : /* : * Remember this match as the best (if it is) : */ : if (thislen > len) 0.00 : 712015: 44 39 c6 cmp %r8d,%esi 0.00 : 712018: 0f 8e a2 00 00 00 jle 7120c0 : } : : /* : * Advance to the next history entry : */ : hent = hent->next; 0.00 : 71201e: 4d 8b 09 mov (%r9),%r9 : } : : /* : * Remember this match as the best (if it is) : */ : if (thislen > len) 0.00 : 712021: 45 89 df mov %r11d,%r15d : : /* : * Be happy with lesser good matches the more entries we visited. But : * no point in doing calculation if we're at end of list. : */ : if (hent != INVALID_ENTRY_PTR) 0.00 : 712024: 49 81 f9 c0 71 b9 00 cmp $0xb971c0,%r9 0.00 : 71202b: 0f 84 a2 00 00 00 je 7120d3 : { : if (len >= good_match) 0.00 : 712031: 44 39 d6 cmp %r10d,%esi 0.00 : 712034: 0f 8d 99 00 00 00 jge 7120d3 : hentno = hstart[pglz_hist_idx(input, end, mask)]; : hent = &hist_entries[hentno]; : while (hent != INVALID_ENTRY_PTR) : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 71203a: 49 8b 41 18 mov 0x18(%r9),%rax : int32 thislen; : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; 0.00 : 71203e: 45 89 f3 mov %r14d,%r11d 0.00 : 712041: 41 29 c3 sub %eax,%r11d : hentno = hstart[pglz_hist_idx(input, end, mask)]; : hent = &hist_entries[hentno]; : while (hent != INVALID_ENTRY_PTR) : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 712044: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; : if (thisoff >= 0x0fff) 0.00 : 71204b: 41 81 fb fe 0f 00 00 cmp $0xffe,%r11d 0.00 : 712052: 7f 7f jg 7120d3 : */ : if (hent != INVALID_ENTRY_PTR) : { : if (len >= good_match) : break; : good_match -= (good_match * good_drop) / 100; 0.00 : 712054: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 712058: b8 1f 85 eb 51 mov $0x51eb851f,%eax : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) 0.00 : 71205d: 4c 89 e1 mov %r12,%rcx : */ : if (hent != INVALID_ENTRY_PTR) : { : if (len >= good_match) : break; : good_match -= (good_match * good_drop) / 100; 0.00 : 712060: 45 0f af c2 imul %r10d,%r8d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:473 33.33 : 712064: 41 f7 e8 imul %r8d 0.00 : 712067: 41 c1 f8 1f sar $0x1f,%r8d 0.00 : 71206b: c1 fa 05 sar $0x5,%edx 0.00 : 71206e: 44 29 c2 sub %r8d,%edx 0.00 : 712071: 41 89 f0 mov %esi,%r8d 0.00 : 712074: 41 29 d2 sub %edx,%r10d : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) 0.00 : 712077: 31 d2 xor %edx,%edx 0.00 : 712079: 41 83 f8 0f cmp $0xf,%r8d 0.00 : 71207d: 7e 81 jle 712000 : { : if (memcmp(ip, hp, len) == 0) 0.00 : 71207f: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 712086: 49 63 c8 movslq %r8d,%rcx 0.00 : 712089: 4c 89 e6 mov %r12,%rsi 0.00 : 71208c: 48 89 8d 58 ff ff ff mov %rcx,-0xa8(%rbp) 0.00 : 712093: 48 39 c9 cmp %rcx,%rcx 0.00 : 712096: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 712098: 75 26 jne 7120c0 : { : thislen = len; : ip += len; 0.00 : 71209a: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 7120a1: 49 8d 14 04 lea (%r12,%rax,1),%rdx : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7120a5: 48 39 d3 cmp %rdx,%rbx 0.00 : 7120a8: 76 16 jbe 7120c0 : { : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; 0.00 : 7120aa: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 7120b1: 48 01 c1 add %rax,%rcx : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7120b4: 0f b6 02 movzbl (%rdx),%eax 0.00 : 7120b7: 3a 01 cmp (%rcx),%al 0.00 : 7120b9: 0f 84 d8 02 00 00 je 712397 0.00 : 7120bf: 90 nop : } : : /* : * Advance to the next history entry : */ : hent = hent->next; 0.00 : 7120c0: 4d 8b 09 mov (%r9),%r9 : } : : /* : * Remember this match as the best (if it is) : */ : if (thislen > len) 0.00 : 7120c3: 44 89 c6 mov %r8d,%esi : : /* : * Be happy with lesser good matches the more entries we visited. But : * no point in doing calculation if we're at end of list. : */ : if (hent != INVALID_ENTRY_PTR) 0.00 : 7120c6: 49 81 f9 c0 71 b9 00 cmp $0xb971c0,%r9 0.00 : 7120cd: 0f 85 5e ff ff ff jne 712031 : : /* : * Return match information only if it results at least in one byte : * reduction. : */ : if (len > 2) 0.00 : 7120d3: 83 fe 02 cmp $0x2,%esi 0.00 : 7120d6: 0f 8e 99 01 00 00 jle 712275 : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 7120dc: 80 7d 96 00 cmpb $0x0,-0x6a(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:635 33.33 : 7120e0: 0f 84 24 03 00 00 je 71240a 0.00 : 7120e6: 0f b6 45 96 movzbl -0x6a(%rbp),%eax 0.00 : 7120ea: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 7120ee: 08 45 95 or %al,-0x6b(%rbp) 0.00 : 7120f1: 01 c0 add %eax,%eax 0.00 : 7120f3: 83 fe 11 cmp $0x11,%esi 0.00 : 7120f6: 88 45 96 mov %al,-0x6a(%rbp) 0.00 : 7120f9: 0f 8e 36 03 00 00 jle 712435 0.00 : 7120ff: 44 89 f8 mov %r15d,%eax 0.00 : 712102: 44 88 79 01 mov %r15b,0x1(%rcx) 0.00 : 712106: c1 e8 04 shr $0x4,%eax 0.00 : 712109: 83 c8 0f or $0xf,%eax 0.00 : 71210c: 88 01 mov %al,(%rcx) 0.00 : 71210e: 8d 46 ee lea -0x12(%rsi),%eax 0.00 : 712111: 88 41 02 mov %al,0x2(%rcx) 0.00 : 712114: 48 83 c1 03 add $0x3,%rcx 0.00 : 712118: 48 89 4d b0 mov %rcx,-0x50(%rbp) 0.00 : 71211c: 49 89 d9 mov %rbx,%r9 : while (match_len--) 0.00 : 71211f: 8d 46 ff lea -0x1(%rsi),%eax : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 712122: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 712127: 4d 29 e1 sub %r12,%r9 : while (match_len--) 0.00 : 71212a: 4d 8d 71 ff lea -0x1(%r9),%r14 0.00 : 71212e: 49 29 c6 sub %rax,%r14 0.00 : 712131: e9 bd 00 00 00 jmpq 7121f3 0.00 : 712136: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 71213d: 00 00 00 : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 712140: 0f be 57 ff movsbl -0x1(%rdi),%edx 0.00 : 712144: 49 89 ff mov %rdi,%r15 0.00 : 712147: 44 8b 55 ac mov -0x54(%rbp),%r10d 0.00 : 71214b: 49 63 cd movslq %r13d,%rcx 0.00 : 71214e: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 712152: 48 8d b1 c0 71 b9 00 lea 0xb971c0(%rcx),%rsi 0.00 : 712159: 41 21 d2 and %edx,%r10d 0.00 : 71215c: 80 7d 87 00 cmpb $0x0,-0x79(%rbp) 0.00 : 712160: 4d 63 da movslq %r10d,%r11 0.00 : 712163: 74 2b je 712190 0.00 : 712165: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 712169: 48 85 d2 test %rdx,%rdx 0.00 : 71216c: 0f 84 73 02 00 00 je 7123e5 0.00 : 712172: 48 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%rax 0.00 : 712179: 48 89 02 mov %rax,(%rdx) 0.00 : 71217c: 4c 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%r8 0.00 : 712183: 4d 85 c0 test %r8,%r8 0.00 : 712186: 74 08 je 712190 0.00 : 712188: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 71218c: 49 89 40 08 mov %rax,0x8(%r8) 0.00 : 712190: 4b 0f bf 94 1b c0 31 movswq 0xb931c0(%r11,%r11,1),%rdx 0.00 : 712197: b9 00 0.00 : 712199: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 71219d: 48 8d 82 c0 71 b9 00 lea 0xb971c0(%rdx),%rax 0.00 : 7121a4: 48 89 81 c0 71 b9 00 mov %rax,0xb971c0(%rcx) 0.00 : 7121ab: 48 c7 46 08 00 00 00 movq $0x0,0x8(%rsi) 0.00 : 7121b2: 00 0.00 : 7121b3: 44 89 56 10 mov %r10d,0x10(%rsi) 0.00 : 7121b7: 4c 89 66 18 mov %r12,0x18(%rsi) 0.00 : 7121bb: 66 47 89 ac 1b c0 31 mov %r13w,0xb931c0(%r11,%r11,1) 0.00 : 7121c2: b9 00 0.00 : 7121c4: 41 83 c5 01 add $0x1,%r13d 0.00 : 7121c8: 48 89 b2 c8 71 b9 00 mov %rsi,0xb971c8(%rdx) 0.00 : 7121cf: 41 81 fd 00 10 00 00 cmp $0x1000,%r13d 0.00 : 7121d6: 7e 0a jle 7121e2 0.00 : 7121d8: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 7121de: c6 45 87 01 movb $0x1,-0x79(%rbp) 0.00 : 7121e2: 49 83 e9 01 sub $0x1,%r9 0.00 : 7121e6: 48 83 c7 01 add $0x1,%rdi : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); : while (match_len--) 0.00 : 7121ea: 4d 39 f1 cmp %r14,%r9 0.00 : 7121ed: 0f 84 e2 01 00 00 je 7123d5 : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 7121f3: 49 83 f9 03 cmp $0x3,%r9 : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 7121f7: 4c 8d 67 ff lea -0x1(%rdi),%r12 : while (match_len--) : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 7121fb: 0f 8e 3f ff ff ff jle 712140 0.00 : 712201: 0f be 57 ff movsbl -0x1(%rdi),%edx 0.00 : 712205: 0f be 07 movsbl (%rdi),%eax 0.00 : 712208: 49 89 ff mov %rdi,%r15 0.00 : 71220b: c1 e0 04 shl $0x4,%eax 0.00 : 71220e: c1 e2 06 shl $0x6,%edx 0.00 : 712211: 31 c2 xor %eax,%edx 0.00 : 712213: 0f be 47 02 movsbl 0x2(%rdi),%eax 0.00 : 712217: 31 c2 xor %eax,%edx 0.00 : 712219: 0f be 47 01 movsbl 0x1(%rdi),%eax 0.00 : 71221d: c1 e0 02 shl $0x2,%eax 0.00 : 712220: 31 c2 xor %eax,%edx 0.00 : 712222: e9 20 ff ff ff jmpq 712147 : return false; : : /* : * Success - need only fill in the actual length of the compressed datum. : */ : SET_VARSIZE_COMPRESSED(dest, result_size + sizeof(PGLZ_Header)); 0.00 : 712227: 31 c0 xor %eax,%eax : : return true; : } 0.00 : 712229: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 712230: 5b pop %rbx 0.00 : 712231: 41 5c pop %r12 0.00 : 712233: 41 5d pop %r13 0.00 : 712235: 41 5e pop %r14 0.00 : 712237: 41 5f pop %r15 0.00 : 712239: c9 leaveq 0.00 : 71223a: c3 retq : * Limit the match parameters to the supported range. : */ : good_match = strategy->match_size_good; : if (good_match > PGLZ_MAX_MATCH) : good_match = PGLZ_MAX_MATCH; : else if (good_match < 17) 0.00 : 71223b: 83 7d 98 10 cmpl $0x10,-0x68(%rbp) 0.00 : 71223f: b8 11 00 00 00 mov $0x11,%eax 0.00 : 712244: 0f 4f 45 98 cmovg -0x68(%rbp),%eax 0.00 : 712248: 89 45 98 mov %eax,-0x68(%rbp) 0.00 : 71224b: e9 3c fc ff ff jmpq 711e8c : } : } : } : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712250: 81 fa 10 01 00 00 cmp $0x110,%edx 0.00 : 712256: 0f 8f b9 fd ff ff jg 712015 : { : thislen++; : ip++; 0.00 : 71225c: 48 83 c1 01 add $0x1,%rcx : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712260: 8d 72 01 lea 0x1(%rdx),%esi : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) : { : thislen++; : ip++; 0.00 : 712263: 48 83 c2 01 add $0x1,%rdx : } : } : } : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:443 33.33 : 712267: 48 39 cb cmp %rcx,%rbx 0.00 : 71226a: 0f 87 90 fd ff ff ja 712000 0.00 : 712270: e9 a0 fd ff ff jmpq 712015 : else : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); 0.00 : 712275: 80 7d 96 00 cmpb $0x0,-0x6a(%rbp) 0.00 : 712279: 0f 84 0a 02 00 00 je 712489 0.00 : 71227f: d0 65 96 shlb -0x6a(%rbp) 0.00 : 712282: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 712286: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 71228b: 41 88 01 mov %al,(%r9) : pglz_hist_add(hist_start, hist_entries, 0.00 : 71228e: 48 83 7d a0 03 cmpq $0x3,-0x60(%rbp) 0.00 : 712293: 0f 8f c0 01 00 00 jg 712459 0.00 : 712299: 41 0f be 14 24 movsbl (%r12),%edx 0.00 : 71229e: 4d 8d 7c 24 01 lea 0x1(%r12),%r15 0.00 : 7122a3: 44 8b 45 ac mov -0x54(%rbp),%r8d 0.00 : 7122a7: 49 63 cd movslq %r13d,%rcx 0.00 : 7122aa: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 7122ae: 48 8d b1 c0 71 b9 00 lea 0xb971c0(%rcx),%rsi 0.00 : 7122b5: 41 21 d0 and %edx,%r8d 0.00 : 7122b8: 80 7d 87 00 cmpb $0x0,-0x79(%rbp) 0.00 : 7122bc: 4d 63 d0 movslq %r8d,%r10 0.00 : 7122bf: 74 2b je 7122ec 0.00 : 7122c1: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 7122c5: 48 85 d2 test %rdx,%rdx 0.00 : 7122c8: 0f 84 32 02 00 00 je 712500 0.00 : 7122ce: 48 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%rax 0.00 : 7122d5: 48 89 02 mov %rax,(%rdx) 0.00 : 7122d8: 48 8b b9 c0 71 b9 00 mov 0xb971c0(%rcx),%rdi 0.00 : 7122df: 48 85 ff test %rdi,%rdi 0.00 : 7122e2: 74 08 je 7122ec 0.00 : 7122e4: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 7122e8: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 7122ec: 4b 0f bf 94 12 c0 31 movswq 0xb931c0(%r10,%r10,1),%rdx 0.00 : 7122f3: b9 00 0.00 : 7122f5: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 7122f9: 48 8d 82 c0 71 b9 00 lea 0xb971c0(%rdx),%rax 0.00 : 712300: 48 89 81 c0 71 b9 00 mov %rax,0xb971c0(%rcx) 0.00 : 712307: 48 c7 46 08 00 00 00 movq $0x0,0x8(%rsi) 0.00 : 71230e: 00 0.00 : 71230f: 44 89 46 10 mov %r8d,0x10(%rsi) 0.00 : 712313: 4c 89 66 18 mov %r12,0x18(%rsi) 0.00 : 712317: 66 47 89 ac 12 c0 31 mov %r13w,0xb931c0(%r10,%r10,1) 0.00 : 71231e: b9 00 0.00 : 712320: 41 83 c5 01 add $0x1,%r13d 0.00 : 712324: 48 89 b2 c8 71 b9 00 mov %rsi,0xb971c8(%rdx) 0.00 : 71232b: 41 81 fd 00 10 00 00 cmp $0x1000,%r13d 0.00 : 712332: 7e 0a jle 71233e 0.00 : 712334: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 71233a: c6 45 87 01 movb $0x1,-0x79(%rbp) : else : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); 0.00 : 71233e: 49 83 c1 01 add $0x1,%r9 0.00 : 712342: 4c 89 4d b0 mov %r9,-0x50(%rbp) : memset(hist_start, 0, hashsz * sizeof(int16)); : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 712346: 4c 39 fb cmp %r15,%rbx 0.00 : 712349: 0f 86 d6 01 00 00 jbe 712525 : * : * We check once per loop; since the loop body could emit as many as 4 : * bytes (a control byte and 3-byte tag), PGLZ_MAX_OUTPUT() had better : * allow 4 slop bytes. : */ : if (bp - bstart >= result_max) 0.00 : 71234f: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 712353: 48 2b 55 c0 sub -0x40(%rbp),%rdx 0.00 : 712357: 48 3b 95 78 ff ff ff cmp -0x88(%rbp),%rdx 0.00 : 71235e: 0f 8d c3 fe ff ff jge 712227 0.00 : 712364: 4d 89 fc mov %r15,%r12 0.00 : 712367: e9 fc fb ff ff jmpq 711f68 : int32 off = 0; : : /* : * Traverse the linked history list until a good enough match is found. : */ : hentno = hstart[pglz_hist_idx(input, end, mask)]; 0.00 : 71236c: 41 0f be 04 24 movsbl (%r12),%eax 0.00 : 712371: 41 0f be 54 24 03 movsbl 0x3(%r12),%edx 0.00 : 712377: c1 e0 06 shl $0x6,%eax 0.00 : 71237a: 31 c2 xor %eax,%edx 0.00 : 71237c: 41 0f be 44 24 01 movsbl 0x1(%r12),%eax 0.00 : 712382: c1 e0 04 shl $0x4,%eax 0.00 : 712385: 31 c2 xor %eax,%edx 0.00 : 712387: 41 0f be 44 24 02 movsbl 0x2(%r12),%eax 0.00 : 71238d: c1 e0 02 shl $0x2,%eax 0.00 : 712390: 31 c2 xor %eax,%edx 0.00 : 712392: e9 04 fc ff ff jmpq 711f9b : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712397: 41 81 f8 10 01 00 00 cmp $0x110,%r8d 0.00 : 71239e: 0f 8f 1c fd ff ff jg 7120c0 0.00 : 7123a4: 44 89 c6 mov %r8d,%esi : { : thislen++; : ip++; 0.00 : 7123a7: 48 83 c2 01 add $0x1,%rdx : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) : { : thislen++; 0.00 : 7123ab: 83 c6 01 add $0x1,%esi : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7123ae: 48 39 d3 cmp %rdx,%rbx 0.00 : 7123b1: 0f 86 5e fc ff ff jbe 712015 : { : thislen++; : ip++; : hp++; 0.00 : 7123b7: 48 83 c1 01 add $0x1,%rcx : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7123bb: 0f b6 02 movzbl (%rdx),%eax 0.00 : 7123be: 3a 01 cmp (%rcx),%al 0.00 : 7123c0: 0f 85 4f fc ff ff jne 712015 0.00 : 7123c6: 81 fe 10 01 00 00 cmp $0x110,%esi 0.00 : 7123cc: 7e d9 jle 7123a7 0.00 : 7123ce: 66 90 xchg %ax,%ax 0.00 : 7123d0: e9 40 fc ff ff jmpq 712015 : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); : while (match_len--) 0.00 : 7123d5: c6 45 97 01 movb $0x1,-0x69(%rbp) 0.00 : 7123d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7123e0: e9 61 ff ff ff jmpq 712346 : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 7123e5: 4c 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%r8 0.00 : 7123ec: 48 63 56 10 movslq 0x10(%rsi),%rdx 0.00 : 7123f0: 4c 89 c0 mov %r8,%rax 0.00 : 7123f3: 48 2d c0 71 b9 00 sub $0xb971c0,%rax 0.00 : 7123f9: 48 c1 f8 05 sar $0x5,%rax 0.00 : 7123fd: 66 89 84 12 c0 31 b9 mov %ax,0xb931c0(%rdx,%rdx,1) 0.00 : 712404: 00 0.00 : 712405: e9 79 fd ff ff jmpq 712183 : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 71240a: 0f b6 55 95 movzbl -0x6b(%rbp),%edx 0.00 : 71240e: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 712412: 88 11 mov %dl,(%rcx) 0.00 : 712414: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 712418: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 71241c: c6 45 95 01 movb $0x1,-0x6b(%rbp) 0.00 : 712420: c6 45 96 02 movb $0x2,-0x6a(%rbp) 0.00 : 712424: 48 83 c1 01 add $0x1,%rcx 0.00 : 712428: 83 fe 11 cmp $0x11,%esi 0.00 : 71242b: 48 89 7d 88 mov %rdi,-0x78(%rbp) 0.00 : 71242f: 0f 8f ca fc ff ff jg 7120ff 0.00 : 712435: 44 89 fa mov %r15d,%edx 0.00 : 712438: 8d 46 fd lea -0x3(%rsi),%eax 0.00 : 71243b: 44 88 79 01 mov %r15b,0x1(%rcx) 0.00 : 71243f: 81 e2 00 0f 00 00 and $0xf00,%edx 0.00 : 712445: c1 fa 04 sar $0x4,%edx 0.00 : 712448: 09 d0 or %edx,%eax 0.00 : 71244a: 88 01 mov %al,(%rcx) 0.00 : 71244c: 48 83 c1 02 add $0x2,%rcx 0.00 : 712450: 48 89 4d b0 mov %rcx,-0x50(%rbp) 0.00 : 712454: e9 c3 fc ff ff jmpq 71211c : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); : pglz_hist_add(hist_start, hist_entries, 0.00 : 712459: 41 0f be 04 24 movsbl (%r12),%eax 0.00 : 71245e: 41 0f be 54 24 03 movsbl 0x3(%r12),%edx 0.00 : 712464: 4d 8d 7c 24 01 lea 0x1(%r12),%r15 0.00 : 712469: c1 e0 06 shl $0x6,%eax 0.00 : 71246c: 31 c2 xor %eax,%edx 0.00 : 71246e: 41 0f be 44 24 01 movsbl 0x1(%r12),%eax 0.00 : 712474: c1 e0 04 shl $0x4,%eax 0.00 : 712477: 31 c2 xor %eax,%edx 0.00 : 712479: 41 0f be 44 24 02 movsbl 0x2(%r12),%eax 0.00 : 71247f: c1 e0 02 shl $0x2,%eax 0.00 : 712482: 31 c2 xor %eax,%edx 0.00 : 712484: e9 1a fe ff ff jmpq 7122a3 : else : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); 0.00 : 712489: 0f b6 45 95 movzbl -0x6b(%rbp),%eax 0.00 : 71248d: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 712491: 88 02 mov %al,(%rdx) 0.00 : 712493: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 712497: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 71249b: c6 45 95 00 movb $0x0,-0x6b(%rbp) 0.00 : 71249f: c6 45 96 02 movb $0x2,-0x6a(%rbp) 0.00 : 7124a3: 49 83 c1 01 add $0x1,%r9 0.00 : 7124a7: 48 89 4d 88 mov %rcx,-0x78(%rbp) 0.00 : 7124ab: e9 d6 fd ff ff jmpq 712286 : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); : } : else : result_max = (slen * (100 - need_rate)) / 100; 0.00 : 7124b0: 29 cf sub %ecx,%edi : * Experiments suggest that these hash sizes work pretty well. A large : * hash table minimizes collision, but has a higher startup cost. For a : * small input, the startup cost dominates. The table size must be a power : * of two. : */ : if (slen < 128) 0.00 : 7124b2: c7 45 ac ff 01 00 00 movl $0x1ff,-0x54(%rbp) : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); : } : else : result_max = (slen * (100 - need_rate)) / 100; 0.00 : 7124b9: 89 f9 mov %edi,%ecx 0.00 : 7124bb: bf 1f 85 eb 51 mov $0x51eb851f,%edi 0.00 : 7124c0: 0f af ce imul %esi,%ecx 0.00 : 7124c3: 89 c8 mov %ecx,%eax 0.00 : 7124c5: c1 f9 1f sar $0x1f,%ecx 0.00 : 7124c8: f7 ef imul %edi 0.00 : 7124ca: c1 fa 05 sar $0x5,%edx 0.00 : 7124cd: 29 ca sub %ecx,%edx : * Experiments suggest that these hash sizes work pretty well. A large : * hash table minimizes collision, but has a higher startup cost. For a : * small input, the startup cost dominates. The table size must be a power : * of two. : */ : if (slen < 128) 0.00 : 7124cf: 83 fe 7f cmp $0x7f,%esi : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); : } : else : result_max = (slen * (100 - need_rate)) / 100; 0.00 : 7124d2: 89 55 9c mov %edx,-0x64(%rbp) : * Experiments suggest that these hash sizes work pretty well. A large : * hash table minimizes collision, but has a higher startup cost. For a : * small input, the startup cost dominates. The table size must be a power : * of two. : */ : if (slen < 128) 0.00 : 7124d5: ba 00 04 00 00 mov $0x400,%edx 0.00 : 7124da: 0f 8e 1b fa ff ff jle 711efb : hashsz = 512; : else if (slen < 256) 0.00 : 7124e0: 81 fe ff 00 00 00 cmp $0xff,%esi 0.00 : 7124e6: c7 45 ac ff 03 00 00 movl $0x3ff,-0x54(%rbp) 0.00 : 7124ed: ba 00 08 00 00 mov $0x800,%edx 0.00 : 7124f2: 0f 8e 03 fa ff ff jle 711efb 0.00 : 7124f8: e9 e6 f9 ff ff jmpq 711ee3 0.00 : 7124fd: 0f 1f 00 nopl (%rax) : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); : pglz_hist_add(hist_start, hist_entries, 0.00 : 712500: 48 8b b9 c0 71 b9 00 mov 0xb971c0(%rcx),%rdi 0.00 : 712507: 48 63 56 10 movslq 0x10(%rsi),%rdx 0.00 : 71250b: 48 89 f8 mov %rdi,%rax 0.00 : 71250e: 48 2d c0 71 b9 00 sub $0xb971c0,%rax 0.00 : 712514: 48 c1 f8 05 sar $0x5,%rax 0.00 : 712518: 66 89 84 12 c0 31 b9 mov %ax,0xb931c0(%rdx,%rdx,1) 0.00 : 71251f: 00 0.00 : 712520: e9 ba fd ff ff jmpq 7122df : memset(hist_start, 0, hashsz * sizeof(int16)); : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 712525: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 712528: 2b 45 c0 sub -0x40(%rbp),%eax : : /* : * Write out the last control byte and check that we haven't overrun the : * output size allowed by the strategy. : */ : *ctrlp = ctrlb; 0.00 : 71252b: 0f b6 55 95 movzbl -0x6b(%rbp),%edx 0.00 : 71252f: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 712533: 88 11 mov %dl,(%rcx) : result_size = bp - bstart; : if (result_size >= result_max) 0.00 : 712535: 3b 45 9c cmp -0x64(%rbp),%eax 0.00 : 712538: 0f 8d e9 fc ff ff jge 712227 : return false; : : /* : * Success - need only fill in the actual length of the compressed datum. : */ : SET_VARSIZE_COMPRESSED(dest, result_size + sizeof(PGLZ_Header)); 0.00 : 71253e: 8d 04 85 20 00 00 00 lea 0x20(,%rax,4),%eax 0.00 : 712545: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 71254c: 83 c8 02 or $0x2,%eax 0.00 : 71254f: 89 07 mov %eax,(%rdi) 0.00 : 712551: b8 01 00 00 00 mov $0x1,%eax : : return true; : } 0.00 : 712556: e9 ce fc ff ff jmpq 712229 : hashsz = 512; : else if (slen < 256) : hashsz = 1024; : else if (slen < 512) : hashsz = 2048; : else if (slen < 1024) 0.00 : 71255b: c7 45 ac ff 1f 00 00 movl $0x1fff,-0x54(%rbp) 0.00 : 712562: 81 fe 00 04 00 00 cmp $0x400,%esi 0.00 : 712568: b8 ff 0f 00 00 mov $0xfff,%eax 0.00 : 71256d: 0f 4d 45 ac cmovge -0x54(%rbp),%eax 0.00 : 712571: ba 00 40 00 00 mov $0x4000,%edx 0.00 : 712576: 89 45 ac mov %eax,-0x54(%rbp) 0.00 : 712579: b8 00 20 00 00 mov $0x2000,%eax 0.00 : 71257e: 48 0f 4c d0 cmovl %rax,%rdx 0.00 : 712582: e9 74 f9 ff ff jmpq 711efb : memset(hist_start, 0, hashsz * sizeof(int16)); : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 712587: 48 8d 7d d7 lea -0x29(%rbp),%rdi 0.00 : 71258b: c6 45 95 00 movb $0x0,-0x6b(%rbp) 0.00 : 71258f: 31 c0 xor %eax,%eax 0.00 : 712591: 48 89 7d 88 mov %rdi,-0x78(%rbp) 0.00 : 712595: eb 94 jmp 71252b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:230 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:232 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000784890 : : */ : static MemoryContext CurrentDynaHashCxt = NULL; : : static void * : DynaHashAlloc(Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:230 66.67 : 784890: 55 push %rbp : Assert(MemoryContextIsValid(CurrentDynaHashCxt)); : return MemoryContextAlloc(CurrentDynaHashCxt, size); 0.00 : 784891: 48 89 fe mov %rdi,%rsi 0.00 : 784894: 48 8b 3d 2d 53 43 00 mov 0x43532d(%rip),%rdi # bb9bc8 : */ : static MemoryContext CurrentDynaHashCxt = NULL; : : static void * : DynaHashAlloc(Size size) : { 0.00 : 78489b: 48 89 e5 mov %rsp,%rbp : Assert(MemoryContextIsValid(CurrentDynaHashCxt)); : return MemoryContextAlloc(CurrentDynaHashCxt, size); : } 0.00 : 78489e: c9 leaveq : : static void * : DynaHashAlloc(Size size) : { : Assert(MemoryContextIsValid(CurrentDynaHashCxt)); : return MemoryContextAlloc(CurrentDynaHashCxt, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:232 33.33 : 78489f: e9 ec 45 01 00 jmpq 798e90 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:238 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798c10 : : * This is a common combination case where we want to preserve the : * specific context but get rid of absolutely everything under it. : */ : void : MemoryContextResetAndDeleteChildren(MemoryContext context) : { 0.00 : 798c10: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:238 100.00 : 798c11: 48 89 e5 mov %rsp,%rbp 0.00 : 798c14: 53 push %rbx 0.00 : 798c15: 48 89 fb mov %rdi,%rbx 0.00 : 798c18: 48 83 ec 08 sub $0x8,%rsp : AssertArg(MemoryContextIsValid(context)); : : MemoryContextDeleteChildren(context); 0.00 : 798c1c: e8 bf ff ff ff callq 798be0 : MemoryContextReset(context); : } 0.00 : 798c21: 48 83 c4 08 add $0x8,%rsp : MemoryContextResetAndDeleteChildren(MemoryContext context) : { : AssertArg(MemoryContextIsValid(context)); : : MemoryContextDeleteChildren(context); : MemoryContextReset(context); 0.00 : 798c25: 48 89 df mov %rbx,%rdi : } 0.00 : 798c28: 5b pop %rbx 0.00 : 798c29: c9 leaveq : MemoryContextResetAndDeleteChildren(MemoryContext context) : { : AssertArg(MemoryContextIsValid(context)); : : MemoryContextDeleteChildren(context); : MemoryContextReset(context); 0.00 : 798c2a: e9 81 fd ff ff jmpq 7989b0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:685 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:674 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798e10 : : * This might seem overly specialized, but it's not because newNode() : * is so often called with compile-time-constant sizes. : */ : void * : MemoryContextAllocZeroAligned(MemoryContext context, Size size) : { 0.00 : 798e10: 55 push %rbp 0.00 : 798e11: 48 89 e5 mov %rsp,%rbp 0.00 : 798e14: 53 push %rbx 0.00 : 798e15: 48 89 f3 mov %rsi,%rbx 0.00 : 798e18: 48 83 ec 08 sub $0x8,%rsp : void *ret; : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:674 33.33 : 798e1c: 48 81 fe ff ff ff 3f cmp $0x3fffffff,%rsi 0.00 : 798e23: 77 32 ja 798e57 : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); 0.00 : 798e25: 48 8b 47 08 mov 0x8(%rdi),%rax : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; 0.00 : 798e29: c6 47 30 00 movb $0x0,0x30(%rdi) : : ret = (*context->methods->alloc) (context, size); 0.00 : 798e2d: ff 10 callq *(%rax) : VALGRIND_MEMPOOL_ALLOC(context, ret, size); : : MemSetLoop(ret, 0, size); 0.00 : 798e2f: 48 8d 14 18 lea (%rax,%rbx,1),%rdx 0.00 : 798e33: 48 89 c1 mov %rax,%rcx 0.00 : 798e36: 48 39 d0 cmp %rdx,%rax 0.00 : 798e39: 73 15 jae 798e50 0.00 : 798e3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 798e40: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 798e47: 48 83 c1 08 add $0x8,%rcx 0.00 : 798e4b: 48 39 ca cmp %rcx,%rdx 0.00 : 798e4e: 77 f0 ja 798e40 : : return ret; : } 0.00 : 798e50: 48 83 c4 08 add $0x8,%rsp 0.00 : 798e54: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:685 66.67 : 798e55: c9 leaveq 0.00 : 798e56: c3 retq : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 798e57: ba 20 20 8e 00 mov $0x8e2020,%edx 0.00 : 798e5c: be a3 02 00 00 mov $0x2a3,%esi 0.00 : 798e61: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 798e66: e8 b5 25 fe ff callq 77b420 0.00 : 798e6b: 48 89 da mov %rbx,%rdx 0.00 : 798e6e: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 798e73: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798e78: 31 c0 xor %eax,%eax 0.00 : 798e7a: e8 b1 23 fe ff callq 77b230 0.00 : 798e7f: e8 4c 06 cd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:572 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:558 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:575 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:591 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007990c0 : : MemoryContext : MemoryContextCreate(NodeTag tag, Size size, : MemoryContextMethods *methods, : MemoryContext parent, : const char *name) : { 0.00 : 7990c0: 55 push %rbp 0.00 : 7990c1: 48 89 e5 mov %rsp,%rbp 0.00 : 7990c4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 7990c8: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 7990cc: 49 89 f4 mov %rsi,%r12 0.00 : 7990cf: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 7990d3: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 7990d7: 49 89 cd mov %rcx,%r13 0.00 : 7990da: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 7990de: 48 83 ec 30 sub $0x30,%rsp 0.00 : 7990e2: 89 7d d4 mov %edi,-0x2c(%rbp) : MemoryContext node; : Size needed = size + strlen(name) + 1; 0.00 : 7990e5: 4c 89 c7 mov %r8,%rdi : MemoryContext : MemoryContextCreate(NodeTag tag, Size size, : MemoryContextMethods *methods, : MemoryContext parent, : const char *name) : { 0.00 : 7990e8: 49 89 d7 mov %rdx,%r15 0.00 : 7990eb: 4d 89 c6 mov %r8,%r14 : MemoryContext node; : Size needed = size + strlen(name) + 1; 0.00 : 7990ee: e8 5d 07 cd ff callq 469850 : : /* creating new memory contexts is not allowed in a critical section */ : Assert(CritSectionCount == 0); : : /* Get space for node and name */ : if (TopMemoryContext != NULL) 0.00 : 7990f3: 48 8b 3d 6e 17 42 00 mov 0x42176e(%rip),%rdi # bba868 : MemoryContextMethods *methods, : MemoryContext parent, : const char *name) : { : MemoryContext node; : Size needed = size + strlen(name) + 1; 0.00 : 7990fa: 49 8d 74 04 01 lea 0x1(%r12,%rax,1),%rsi : : /* creating new memory contexts is not allowed in a critical section */ : Assert(CritSectionCount == 0); : : /* Get space for node and name */ : if (TopMemoryContext != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:558 16.67 : 7990ff: 48 85 ff test %rdi,%rdi 0.00 : 799102: 0f 84 c0 00 00 00 je 7991c8 : { : /* Normal case: allocate the node in TopMemoryContext */ : node = (MemoryContext) MemoryContextAlloc(TopMemoryContext, 0.00 : 799108: e8 83 fd ff ff callq 798e90 0.00 : 79910d: 48 89 c3 mov %rax,%rbx : node = (MemoryContext) malloc(needed); : Assert(node != NULL); : } : : /* Initialize the node as best we can */ : MemSet(node, 0, size); 0.00 : 799110: 48 89 d8 mov %rbx,%rax 0.00 : 799113: 4c 09 e0 or %r12,%rax 0.00 : 799116: a8 07 test $0x7,%al 0.00 : 799118: 75 09 jne 799123 0.00 : 79911a: 49 81 fc 00 04 00 00 cmp $0x400,%r12 0.00 : 799121: 76 7d jbe 7991a0 0.00 : 799123: 48 89 df mov %rbx,%rdi 0.00 : 799126: 4c 89 e2 mov %r12,%rdx 0.00 : 799129: 31 f6 xor %esi,%esi 0.00 : 79912b: e8 f0 02 cd ff callq 469420 0.00 : 799130: 4a 8d 3c 23 lea (%rbx,%r12,1),%rdi : node->type = tag; 0.00 : 799134: 8b 45 d4 mov -0x2c(%rbp),%eax : node->parent = NULL; /* for the moment */ : node->firstchild = NULL; : node->nextchild = NULL; : node->isReset = true; : node->name = ((char *) node) + size; : strcpy(node->name, name); 0.00 : 799137: 4c 89 f6 mov %r14,%rsi : node->methods = methods; : node->parent = NULL; /* for the moment */ : node->firstchild = NULL; : node->nextchild = NULL; : node->isReset = true; : node->name = ((char *) node) + size; 0.00 : 79913a: 48 89 7b 28 mov %rdi,0x28(%rbx) : } : : /* Initialize the node as best we can */ : MemSet(node, 0, size); : node->type = tag; : node->methods = methods; 0.00 : 79913e: 4c 89 7b 08 mov %r15,0x8(%rbx) : node->parent = NULL; /* for the moment */ /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:575 16.67 : 799142: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 799149: 00 : node->firstchild = NULL; 0.00 : 79914a: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 799151: 00 : node->nextchild = NULL; 0.00 : 799152: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 799159: 00 : Assert(node != NULL); : } : : /* Initialize the node as best we can */ : MemSet(node, 0, size); : node->type = tag; 0.00 : 79915a: 89 03 mov %eax,(%rbx) : node->methods = methods; : node->parent = NULL; /* for the moment */ : node->firstchild = NULL; : node->nextchild = NULL; : node->isReset = true; 0.00 : 79915c: c6 43 30 01 movb $0x1,0x30(%rbx) : node->name = ((char *) node) + size; : strcpy(node->name, name); 0.00 : 799160: e8 1b 0c cd ff callq 469d80 : : /* Type-specific routine finishes any other essential initialization */ : (*node->methods->init) (node); 0.00 : 799165: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 799169: 48 89 df mov %rbx,%rdi 0.00 : 79916c: ff 50 18 callq *0x18(%rax) : : /* OK to link node to parent (if any) */ : /* Could use MemoryContextSetParent here, but doesn't seem worthwhile */ : if (parent) 0.00 : 79916f: 4d 85 ed test %r13,%r13 0.00 : 799172: 74 10 je 799184 : { : node->parent = parent; 0.00 : 799174: 4c 89 6b 10 mov %r13,0x10(%rbx) : node->nextchild = parent->firstchild; 0.00 : 799178: 49 8b 45 18 mov 0x18(%r13),%rax 0.00 : 79917c: 48 89 43 20 mov %rax,0x20(%rbx) : parent->firstchild = node; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:591 16.67 : 799180: 49 89 5d 18 mov %rbx,0x18(%r13) : : VALGRIND_CREATE_MEMPOOL(node, 0, false); : : /* Return to type-specific creation routine to finish up */ : return node; : } 0.00 : 799184: 48 89 d8 mov %rbx,%rax 0.00 : 799187: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 79918b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 79918f: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 799193: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 799197: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 79919b: c9 leaveq 0.00 : 79919c: c3 retq 0.00 : 79919d: 0f 1f 00 nopl (%rax) : node = (MemoryContext) malloc(needed); : Assert(node != NULL); : } : : /* Initialize the node as best we can */ : MemSet(node, 0, size); 0.00 : 7991a0: 4a 8d 3c 23 lea (%rbx,%r12,1),%rdi 0.00 : 7991a4: 48 89 d8 mov %rbx,%rax 0.00 : 7991a7: 48 39 fb cmp %rdi,%rbx 0.00 : 7991aa: 73 88 jae 799134 0.00 : 7991ac: 0f 1f 40 00 nopl 0x0(%rax) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:572 50.00 : 7991b0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 7991b7: 48 83 c0 08 add $0x8,%rax 0.00 : 7991bb: 48 39 c7 cmp %rax,%rdi 0.00 : 7991be: 77 f0 ja 7991b0 0.00 : 7991c0: e9 6f ff ff ff jmpq 799134 0.00 : 7991c5: 0f 1f 00 nopl (%rax) : needed); : } : else : { : /* Special case for startup: use good ol' malloc */ : node = (MemoryContext) malloc(needed); 0.00 : 7991c8: 48 89 f7 mov %rsi,%rdi 0.00 : 7991cb: e8 60 04 cd ff callq 469630 0.00 : 7991d0: 48 89 c3 mov %rax,%rbx 0.00 : 7991d3: e9 38 ff ff ff jmpq 799110 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:858 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:867 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079acc0 : : * This is separate from actually inserting an entry because if we run out : * of memory, it's critical to do so *before* acquiring the resource. : */ : void : ResourceOwnerEnlargeRelationRefs(ResourceOwner owner) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:858 66.67 : 79acc0: 55 push %rbp 0.00 : 79acc1: 48 89 e5 mov %rsp,%rbp 0.00 : 79acc4: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 79acc8: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 79accc: 48 83 ec 10 sub $0x10,%rsp : int newmax; : : if (owner->nrelrefs < owner->maxrelrefs) 0.00 : 79acd0: 8b 87 e0 00 00 00 mov 0xe0(%rdi),%eax 0.00 : 79acd6: 39 87 d4 00 00 00 cmp %eax,0xd4(%rdi) : * This is separate from actually inserting an entry because if we run out : * of memory, it's critical to do so *before* acquiring the resource. : */ : void : ResourceOwnerEnlargeRelationRefs(ResourceOwner owner) : { 0.00 : 79acdc: 49 89 fc mov %rdi,%r12 : int newmax; : : if (owner->nrelrefs < owner->maxrelrefs) 0.00 : 79acdf: 7c 2b jl 79ad0c : return; /* nothing to do */ : : if (owner->relrefs == NULL) 0.00 : 79ace1: 48 8b bf d8 00 00 00 mov 0xd8(%rdi),%rdi 0.00 : 79ace8: 48 85 ff test %rdi,%rdi 0.00 : 79aceb: 74 33 je 79ad20 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; : } : else : { : newmax = owner->maxrelrefs * 2; 0.00 : 79aced: 8d 1c 00 lea (%rax,%rax,1),%ebx : owner->relrefs = (Relation *) 0.00 : 79acf0: 48 63 f3 movslq %ebx,%rsi 0.00 : 79acf3: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 79acf7: e8 f4 df ff ff callq 798cf0 : repalloc(owner->relrefs, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; 0.00 : 79acfc: 41 89 9c 24 e0 00 00 mov %ebx,0xe0(%r12) 0.00 : 79ad03: 00 : owner->maxrelrefs = newmax; : } : else : { : newmax = owner->maxrelrefs * 2; : owner->relrefs = (Relation *) 0.00 : 79ad04: 49 89 84 24 d8 00 00 mov %rax,0xd8(%r12) 0.00 : 79ad0b: 00 : repalloc(owner->relrefs, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; : } : } 0.00 : 79ad0c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 79ad10: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 79ad15: c9 leaveq 0.00 : 79ad16: c3 retq 0.00 : 79ad17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79ad1e: 00 00 : return; /* nothing to do */ : : if (owner->relrefs == NULL) : { : newmax = 16; : owner->relrefs = (Relation *) 0.00 : 79ad20: 48 8b 3d 41 fb 41 00 mov 0x41fb41(%rip),%rdi # bba868 0.00 : 79ad27: be 80 00 00 00 mov $0x80,%esi 0.00 : 79ad2c: e8 5f e1 ff ff callq 798e90 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; 0.00 : 79ad31: 41 c7 84 24 e0 00 00 movl $0x10,0xe0(%r12) 0.00 : 79ad38: 00 10 00 00 00 : return; /* nothing to do */ : : if (owner->relrefs == NULL) : { : newmax = 16; : owner->relrefs = (Relation *) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:867 33.33 : 79ad3d: 49 89 84 24 d8 00 00 mov %rax,0xd8(%r12) 0.00 : 79ad44: 00 0.00 : 79ad45: eb c5 jmp 79ad0c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:176 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:177 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:177 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:182 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a1680 : : #define cmp_ssup(a, b, ssup) \ : ApplySortComparator((a)->datum1, (a)->isnull1, \ : (b)->datum1, (b)->isnull1, ssup) : static SortTuple * : med3_ssup(SortTuple *a, SortTuple *b, SortTuple *c, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:176 12.50 : 7a1680: 55 push %rbp 0.00 : 7a1681: 48 89 e5 mov %rsp,%rbp 0.00 : 7a1684: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 7a1688: 49 89 fe mov %rdi,%r14 0.00 : 7a168b: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 7a168f: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 7a1693: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 7a1697: 48 83 ec 20 sub $0x20,%rsp : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:125 12.50 : 7a169b: 41 80 7e 10 00 cmpb $0x0,0x10(%r14) 0.00 : 7a16a0: 49 89 cd mov %rcx,%r13 0.00 : 7a16a3: 48 89 f3 mov %rsi,%rbx 0.00 : 7a16a6: 49 89 d4 mov %rdx,%r12 : return cmp_ssup(a, b, ssup) < 0 ? /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:177 12.50 : 7a16a9: 0f b6 46 10 movzbl 0x10(%rsi),%eax 0.00 : 7a16ad: 48 8b 4e 08 mov 0x8(%rsi),%rcx 12.50 : 7a16b1: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 7a16b5: 74 49 je 7a1700 : { : if (isNull2) 0.00 : 7a16b7: 84 c0 test %al,%al 0.00 : 7a16b9: 0f 84 e9 00 00 00 je 7a17a8 0.00 : 7a16bf: 41 0f b6 44 24 10 movzbl 0x10(%r12),%eax 0.00 : 7a16c5: 84 c0 test %al,%al 0.00 : 7a16c7: 0f 84 53 01 00 00 je 7a1820 0.00 : 7a16cd: 49 8b 74 24 08 mov 0x8(%r12),%rsi : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) 0.00 : 7a16d2: 41 80 7e 10 00 cmpb $0x0,0x10(%r14) 0.00 : 7a16d7: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 7a16db: 0f 84 af 00 00 00 je 7a1790 : { : if (isNull2) 0.00 : 7a16e1: 84 c0 test %al,%al 0.00 : 7a16e3: 0f 85 8f 00 00 00 jne 7a1778 0.00 : 7a16e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a16f0: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a16f5: 75 78 jne 7a176f 0.00 : 7a16f7: 90 nop 0.00 : 7a16f8: eb 7e jmp 7a1778 0.00 : 7a16fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.00 : 7a1700: 84 c0 test %al,%al 0.00 : 7a1702: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a1708: 74 16 je 7a1720 : { : if (ssup->ssup_nulls_first) 0.00 : 7a170a: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a170f: 90 nop 0.00 : 7a1710: 75 ad jne 7a16bf 0.00 : 7a1712: 0f b6 42 10 movzbl 0x10(%rdx),%eax 0.00 : 7a1716: eb 3b jmp 7a1753 0.00 : 7a1718: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a171f: 00 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 7a1720: 4c 89 ea mov %r13,%rdx 0.00 : 7a1723: 48 89 ce mov %rcx,%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:143 12.50 : 7a1726: 41 ff 55 18 callq *0x18(%r13) : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a172a: 89 c2 mov %eax,%edx 0.00 : 7a172c: f7 da neg %edx 0.00 : 7a172e: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) 0.00 : 7a1733: 0f 45 c2 cmovne %edx,%eax 0.00 : 7a1736: 85 c0 test %eax,%eax 0.00 : 7a1738: 0f 89 97 01 00 00 jns 7a18d5 : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) 0.00 : 7a173e: 80 7b 10 00 cmpb $0x0,0x10(%rbx) 0.00 : 7a1742: 41 0f b6 44 24 10 movzbl 0x10(%r12),%eax 0.00 : 7a1748: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 7a174d: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : 7a1751: 74 6d je 7a17c0 : { : if (isNull2) 0.00 : 7a1753: 84 c0 test %al,%al 0.00 : 7a1755: 0f 84 65 01 00 00 je 7a18c0 0.00 : 7a175b: 49 8b 74 24 08 mov 0x8(%r12),%rsi : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) 0.00 : 7a1760: 41 80 7e 10 00 cmpb $0x0,0x10(%r14) 0.00 : 7a1765: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 7a1769: 74 6d je 7a17d8 : { : if (isNull2) 0.00 : 7a176b: 84 c0 test %al,%al 0.00 : 7a176d: 74 25 je 7a1794 0.00 : 7a176f: 4d 89 f4 mov %r14,%r12 0.00 : 7a1772: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : (cmp_ssup(b, c, ssup) < 0 ? b : : (cmp_ssup(a, c, ssup) < 0 ? c : a)) : : (cmp_ssup(b, c, ssup) > 0 ? b : : (cmp_ssup(a, c, ssup) < 0 ? a : c)); : } 0.00 : 7a1778: 4c 89 e0 mov %r12,%rax 0.00 : 7a177b: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7a177f: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 7a1784: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:182 12.50 : 7a1789: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 7a178e: c9 leaveq 0.00 : 7a178f: c3 retq : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.00 : 7a1790: 84 c0 test %al,%al 0.00 : 7a1792: 74 6c je 7a1800 : { : if (ssup->ssup_nulls_first) 0.00 : 7a1794: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a1799: 75 dd jne 7a1778 0.00 : 7a179b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a17a0: eb cd jmp 7a176f 0.00 : 7a17a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a17a8: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a17ad: 0f 1f 00 nopl (%rax) 0.00 : 7a17b0: 0f 84 b2 00 00 00 je 7a1868 : ApplySortComparator((a)->datum1, (a)->isnull1, \ : (b)->datum1, (b)->isnull1, ssup) : static SortTuple * : med3_ssup(SortTuple *a, SortTuple *b, SortTuple *c, SortSupport ssup) : { : return cmp_ssup(a, b, ssup) < 0 ? 0.00 : 7a17b6: 0f b6 42 10 movzbl 0x10(%rdx),%eax 0.00 : 7a17ba: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 7a17be: 66 90 xchg %ax,%ax : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.00 : 7a17c0: 84 c0 test %al,%al 0.00 : 7a17c2: 74 74 je 7a1838 : { : if (ssup->ssup_nulls_first) 0.00 : 7a17c4: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a17c9: 75 95 jne 7a1760 0.00 : 7a17cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a17d0: 49 89 dc mov %rbx,%r12 0.00 : 7a17d3: eb a3 jmp 7a1778 0.00 : 7a17d5: 0f 1f 00 nopl (%rax) : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.00 : 7a17d8: 84 c0 test %al,%al 0.00 : 7a17da: 0f 85 10 ff ff ff jne 7a16f0 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 7a17e0: 4c 89 ea mov %r13,%rdx 0.00 : 7a17e3: 41 ff 55 18 callq *0x18(%r13) : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a17e7: 89 c2 mov %eax,%edx 0.00 : 7a17e9: f7 da neg %edx 0.00 : 7a17eb: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) 0.00 : 7a17f0: 0f 45 c2 cmovne %edx,%eax 0.00 : 7a17f3: 85 c0 test %eax,%eax 0.00 : 7a17f5: 0f 88 7d ff ff ff js 7a1778 0.00 : 7a17fb: e9 6f ff ff ff jmpq 7a176f : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 7a1800: 4c 89 ea mov %r13,%rdx 0.00 : 7a1803: 41 ff 55 18 callq *0x18(%r13) : if (ssup->ssup_reverse) : compare = -compare; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/sortsupport.h:145 12.50 : 7a1807: 89 c2 mov %eax,%edx 0.00 : 7a1809: f7 da neg %edx 0.00 : 7a180b: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) 0.00 : 7a1810: 0f 45 c2 cmovne %edx,%eax 0.00 : 7a1813: 85 c0 test %eax,%eax 0.00 : 7a1815: 0f 88 54 ff ff ff js 7a176f 0.00 : 7a181b: e9 58 ff ff ff jmpq 7a1778 : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a1820: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a1825: 74 a9 je 7a17d0 0.00 : 7a1827: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a182e: 00 00 0.00 : 7a1830: e9 98 fe ff ff jmpq 7a16cd 0.00 : 7a1835: 0f 1f 00 nopl (%rax) : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 7a1838: 4c 89 ea mov %r13,%rdx 0.00 : 7a183b: 48 89 cf mov %rcx,%rdi 0.00 : 7a183e: 66 90 xchg %ax,%ax 0.00 : 7a1840: 41 ff 55 18 callq *0x18(%r13) : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a1844: 89 c2 mov %eax,%edx 0.00 : 7a1846: f7 da neg %edx 0.00 : 7a1848: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) 12.50 : 7a184d: 0f 45 c2 cmovne %edx,%eax 0.00 : 7a1850: 85 c0 test %eax,%eax 0.00 : 7a1852: 0f 88 78 ff ff ff js 7a17d0 0.00 : 7a1858: 41 0f b6 44 24 10 movzbl 0x10(%r12),%eax 0.00 : 7a185e: e9 f8 fe ff ff jmpq 7a175b 0.00 : 7a1863: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a1868: 0f b6 42 10 movzbl 0x10(%rdx),%eax 0.00 : 7a186c: 48 8b 72 08 mov 0x8(%rdx),%rsi : else if (ssup->ssup_nulls_first) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.00 : 7a1870: 84 c0 test %al,%al 0.00 : 7a1872: 74 1c je 7a1890 : { : if (ssup->ssup_nulls_first) 0.00 : 7a1874: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a1879: 0f 84 53 fe ff ff je 7a16d2 0.00 : 7a187f: 49 89 dc mov %rbx,%r12 0.00 : 7a1882: e9 f1 fe ff ff jmpq 7a1778 0.00 : 7a1887: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a188e: 00 00 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 7a1890: 4c 89 ea mov %r13,%rdx 0.00 : 7a1893: 48 89 cf mov %rcx,%rdi 0.00 : 7a1896: 41 ff 55 18 callq *0x18(%r13) : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 7a189a: 89 c2 mov %eax,%edx 0.00 : 7a189c: f7 da neg %edx 0.00 : 7a189e: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) 0.00 : 7a18a3: 0f 45 c2 cmovne %edx,%eax 0.00 : 7a18a6: 85 c0 test %eax,%eax 0.00 : 7a18a8: 0f 8f 22 ff ff ff jg 7a17d0 0.00 : 7a18ae: 41 0f b6 44 24 10 movzbl 0x10(%r12),%eax 0.00 : 7a18b4: e9 14 fe ff ff jmpq 7a16cd 0.00 : 7a18b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (ssup->ssup_nulls_first) 0.00 : 7a18c0: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 7a18c5: 0f 85 05 ff ff ff jne 7a17d0 0.00 : 7a18cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a18d0: e9 86 fe ff ff jmpq 7a175b : Datum datum2, bool isNull2, : SortSupport ssup) : { : int compare; : : if (isNull1) 0.00 : 7a18d5: 80 7b 10 00 cmpb $0x0,0x10(%rbx) 0.00 : 7a18d9: 41 0f b6 44 24 10 movzbl 0x10(%r12),%eax 0.00 : 7a18df: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 7a18e4: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : 7a18e8: 74 86 je 7a1870 0.00 : 7a18ea: e9 d6 fd ff ff jmpq 7a16c5 Sorted summary for file /lib64/libdl-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libdl-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000e10 <__do_global_dtors_aux>: 0.00 : e10: 55 push %rbp 0.00 : e11: 80 3d 88 22 20 00 00 cmpb $0x0,0x202288(%rip) # 2030a0 ??:0 100.00 : e18: 48 89 e5 mov %rsp,%rbp 0.00 : e1b: 41 54 push %r12 0.00 : e1d: 53 push %rbx 0.00 : e1e: 75 62 jne e82 <__do_global_dtors_aux+0x72> 0.00 : e20: 48 83 3d d0 21 20 00 cmpq $0x0,0x2021d0(%rip) # 202ff8 <_DYNAMIC+0x240> 0.00 : e27: 00 0.00 : e28: 74 0c je e36 <__do_global_dtors_aux+0x26> 0.00 : e2a: 48 8b 3d 5f 22 20 00 mov 0x20225f(%rip),%rdi # 203090 <__dso_handle> 0.00 : e31: e8 aa ff ff ff callq de0 <__cxa_finalize@plt> 0.00 : e36: 48 8d 05 6b 1f 20 00 lea 0x201f6b(%rip),%rax # 202da8 <__DTOR_END__> 0.00 : e3d: 4c 8d 25 54 1f 20 00 lea 0x201f54(%rip),%r12 # 202d98 <__DTOR_LIST__> 0.00 : e44: 48 8b 15 5d 22 20 00 mov 0x20225d(%rip),%rdx # 2030a8 0.00 : e4b: 4c 29 e0 sub %r12,%rax 0.00 : e4e: 48 c1 f8 03 sar $0x3,%rax 0.00 : e52: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : e56: 48 39 da cmp %rbx,%rdx 0.00 : e59: 73 20 jae e7b <__do_global_dtors_aux+0x6b> 0.00 : e5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : e60: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : e64: 48 89 05 3d 22 20 00 mov %rax,0x20223d(%rip) # 2030a8 0.00 : e6b: 41 ff 14 c4 callq *(%r12,%rax,8) 0.00 : e6f: 48 8b 15 32 22 20 00 mov 0x202232(%rip),%rdx # 2030a8 0.00 : e76: 48 39 da cmp %rbx,%rdx 0.00 : e79: 72 e5 jb e60 <__do_global_dtors_aux+0x50> 0.00 : e7b: c6 05 1e 22 20 00 01 movb $0x1,0x20221e(%rip) # 2030a0 0.00 : e82: 5b pop %rbx 0.00 : e83: 41 5c pop %r12 0.00 : e85: c9 leaveq 0.00 : e86: c3 retq 0.00 : e87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : e8e: 00 00 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000328c0 <__sigsetjmp>: ??:0 100.00 : 328c0: 48 89 1f mov %rbx,(%rdi) 0.00 : 328c3: 48 89 e8 mov %rbp,%rax 0.00 : 328c6: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 328cd: 00 00 0.00 : 328cf: 48 c1 c0 11 rol $0x11,%rax 0.00 : 328d3: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 328d7: 4c 89 67 10 mov %r12,0x10(%rdi) 0.00 : 328db: 4c 89 6f 18 mov %r13,0x18(%rdi) 0.00 : 328df: 4c 89 77 20 mov %r14,0x20(%rdi) 0.00 : 328e3: 4c 89 7f 28 mov %r15,0x28(%rdi) 0.00 : 328e7: 48 8d 54 24 08 lea 0x8(%rsp),%rdx 0.00 : 328ec: 64 48 33 14 25 30 00 xor %fs:0x30,%rdx 0.00 : 328f3: 00 00 0.00 : 328f5: 48 c1 c2 11 rol $0x11,%rdx 0.00 : 328f9: 48 89 57 30 mov %rdx,0x30(%rdi) 0.00 : 328fd: 48 8b 04 24 mov (%rsp),%rax 0.00 : 32901: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 32908: 00 00 0.00 : 3290a: 48 c1 c0 11 rol $0x11,%rax 0.00 : 3290e: 48 89 47 38 mov %rax,0x38(%rdi) 0.00 : 32912: e9 09 00 00 00 jmpq 32920 <__sigjmp_save> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000032df0 <__sigaction>: ??:0 100.00 : 32df0: 8d 47 e0 lea -0x20(%rdi),%eax 0.00 : 32df3: 83 f8 01 cmp $0x1,%eax 0.00 : 32df6: 76 05 jbe 32dfd <__sigaction+0xd> 0.00 : 32df8: e9 03 fe ff ff jmpq 32c00 <__GI___libc_sigaction> 0.00 : 32dfd: 48 8b 15 34 f0 33 00 mov 0x33f034(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 32e04: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 32e0b: 00 00 0.00 : 32e0d: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 32e14: b8 ff ff ff ff mov $0xffffffff,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000036aa0 : 0.00 : 36aa0: 48 8b 0d e1 b2 33 00 mov 0x33b2e1(%rip),%rcx # 371d88 <_DYNAMIC+0x228> 0.00 : 36aa7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 36aae: 00 00 0.00 : 36ab0: 4c 8b 04 08 mov (%rax,%rcx,1),%r8 ??:0 66.67 : 36ab4: 31 c9 xor %ecx,%ecx 33.33 : 36ab6: e9 65 00 00 00 jmpq 36b20 <__GI_____strtol_l_internal> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 83.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000042590 <__mpn_lshift>: 0.00 : 42590: 0f 6f 7c d6 f8 movq -0x8(%rsi,%rdx,8),%mm7 0.00 : 42595: 0f 6e c9 movd %ecx,%mm1 0.00 : 42598: b8 40 00 00 00 mov $0x40,%eax 0.00 : 4259d: 29 c8 sub %ecx,%eax 0.00 : 4259f: 0f 6e c0 movd %eax,%mm0 0.00 : 425a2: 0f 6f df movq %mm7,%mm3 0.00 : 425a5: 0f d3 f8 psrlq %mm0,%mm7 0.00 : 425a8: 48 0f 7e f8 movq %mm7,%rax 0.00 : 425ac: 48 83 ea 02 sub $0x2,%rdx 0.00 : 425b0: 7c 34 jl 425e6 <__mpn_lshift+0x56> 0.00 : 425b2: 66 90 xchg %ax,%ax 0.00 : 425b4: 0f 6f 34 d6 movq (%rsi,%rdx,8),%mm6 0.00 : 425b8: 0f 6f d6 movq %mm6,%mm2 0.00 : 425bb: 0f d3 f0 psrlq %mm0,%mm6 0.00 : 425be: 0f f3 d9 psllq %mm1,%mm3 0.00 : 425c1: 0f eb de por %mm6,%mm3 0.00 : 425c4: 0f 7f 5c d7 08 movq %mm3,0x8(%rdi,%rdx,8) 0.00 : 425c9: 74 1e je 425e9 <__mpn_lshift+0x59> 0.00 : 425cb: 0f 6f 7c d6 f8 movq -0x8(%rsi,%rdx,8),%mm7 0.00 : 425d0: 0f 6f df movq %mm7,%mm3 0.00 : 425d3: 0f d3 f8 psrlq %mm0,%mm7 0.00 : 425d6: 0f f3 d1 psllq %mm1,%mm2 0.00 : 425d9: 0f eb d7 por %mm7,%mm2 0.00 : 425dc: 0f 7f 14 d7 movq %mm2,(%rdi,%rdx,8) 0.00 : 425e0: 48 83 ea 02 sub $0x2,%rdx 0.00 : 425e4: 7d ce jge 425b4 <__mpn_lshift+0x24> 0.00 : 425e6: 0f 6f d3 movq %mm3,%mm2 0.00 : 425e9: 0f f3 d1 psllq %mm1,%mm2 0.00 : 425ec: 0f 7f 17 movq %mm2,(%rdi) ??:0 100.00 : 425ef: 0f 77 emms Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074c60 <_IO_list_unlock>: 0.00 : 74c60: 8b 05 ae f1 2f 00 mov 0x2ff1ae(%rip),%eax # 373e14 0.00 : 74c66: 83 e8 01 sub $0x1,%eax 0.00 : 74c69: 85 c0 test %eax,%eax ??:0 100.00 : 74c6b: 89 05 a3 f1 2f 00 mov %eax,0x2ff1a3(%rip) # 373e14 0.00 : 74c71: 75 2f jne 74ca2 <_IO_list_unlock+0x42> 0.00 : 74c73: 48 c7 05 9a f1 2f 00 movq $0x0,0x2ff19a(%rip) # 373e18 0.00 : 74c7a: 00 00 00 00 0.00 : 74c7e: 83 3d 2f 2a 30 00 00 cmpl $0x0,0x302a2f(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 74c85: 74 0f je 74c96 <_IO_list_unlock+0x36> 0.00 : 74c87: f0 ff 0d 82 f1 2f 00 lock decl 0x2ff182(%rip) # 373e10 0.00 : 74c8e: 0f 85 94 0a 00 00 jne 75728 <_L_unlock_2518> 0.00 : 74c94: eb 0c jmp 74ca2 <_IO_list_unlock+0x42> 0.00 : 74c96: ff 0d 74 f1 2f 00 decl 0x2ff174(%rip) # 373e10 0.00 : 74c9c: 0f 85 86 0a 00 00 jne 75728 <_L_unlock_2518> 0.00 : 74ca2: f3 c3 repz retq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000075df0 : ??:0 33.33 : 75df0: 8b 05 0e c3 2f 00 mov 0x2fc30e(%rip),%eax # 372104 <__libc_malloc_initialized> 66.67 : 75df6: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 75dfb: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 75e00: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 75e05: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 75e0a: 85 c0 test %eax,%eax 0.00 : 75e0c: 0f 8e d3 00 00 00 jle 75ee5 0.00 : 75e12: 31 d2 xor %edx,%edx 0.00 : 75e14: be 01 00 00 00 mov $0x1,%esi 0.00 : 75e19: 89 d0 mov %edx,%eax 0.00 : 75e1b: 83 3d 92 18 30 00 00 cmpl $0x0,0x301892(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 75e22: 74 0a je 75e2e 0.00 : 75e24: f0 0f b1 35 58 e9 2f lock cmpxchg %esi,0x2fe958(%rip) # 374784 0.00 : 75e2b: 00 0.00 : 75e2c: eb 07 jmp 75e35 0.00 : 75e2e: 0f b1 35 4f e9 2f 00 cmpxchg %esi,0x2fe94f(%rip) # 374784 0.00 : 75e35: 85 c0 test %eax,%eax 0.00 : 75e37: 0f 85 c3 00 00 00 jne 75f00 0.00 : 75e3d: 64 48 8b 1c 25 00 00 mov %fs:0x0,%rbx 0.00 : 75e44: 00 00 0.00 : 75e46: 4c 8b 15 f3 be 2f 00 mov 0x2fbef3(%rip),%r10 # 371d40 <_DYNAMIC+0x1e0> 0.00 : 75e4d: 4c 8d 0d 4c e0 2f 00 lea 0x2fe04c(%rip),%r9 # 373ea0 0.00 : 75e54: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 75e5a: 45 31 ed xor %r13d,%r13d 0.00 : 75e5d: 4d 89 cc mov %r9,%r12 0.00 : 75e60: 44 89 c6 mov %r8d,%esi 0.00 : 75e63: 44 89 e8 mov %r13d,%eax 0.00 : 75e66: 83 3d 47 18 30 00 00 cmpl $0x0,0x301847(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 75e6d: 74 0e je 75e7d 0.00 : 75e6f: f0 41 0f b1 34 24 lock cmpxchg %esi,(%r12) 0.00 : 75e75: 0f 85 03 70 00 00 jne 7ce7e <_L_lock_55> 0.00 : 75e7b: eb 0b jmp 75e88 0.00 : 75e7d: 41 0f b1 34 24 cmpxchg %esi,(%r12) 0.00 : 75e82: 0f 85 f6 6f 00 00 jne 7ce7e <_L_lock_55> 0.00 : 75e88: 4d 8b a4 24 68 08 00 mov 0x868(%r12),%r12 0.00 : 75e8f: 00 0.00 : 75e90: 4d 39 cc cmp %r9,%r12 0.00 : 75e93: 75 cb jne 75e60 0.00 : 75e95: 48 8b 0d 14 c0 2f 00 mov 0x2fc014(%rip),%rcx # 371eb0 <_DYNAMIC+0x350> 0.00 : 75e9c: 48 8b 15 15 c0 2f 00 mov 0x2fc015(%rip),%rdx # 371eb8 <_DYNAMIC+0x358> 0.00 : 75ea3: 48 8d 3d b6 25 00 00 lea 0x25b6(%rip),%rdi # 78460 0.00 : 75eaa: 48 8b 01 mov (%rcx),%rax 0.00 : 75ead: 48 89 05 e4 e8 2f 00 mov %rax,0x2fe8e4(%rip) # 374798 0.00 : 75eb4: 48 8b 02 mov (%rdx),%rax 0.00 : 75eb7: 48 89 3a mov %rdi,(%rdx) 0.00 : 75eba: 48 89 05 df e8 2f 00 mov %rax,0x2fe8df(%rip) # 3747a0 0.00 : 75ec1: 48 8d 05 78 5a 00 00 lea 0x5a78(%rip),%rax # 7b940 0.00 : 75ec8: 48 89 01 mov %rax,(%rcx) 0.00 : 75ecb: 4a 8b 04 13 mov (%rbx,%r10,1),%rax 0.00 : 75ecf: 4a c7 04 13 ff ff ff movq $0xffffffffffffffff,(%rbx,%r10,1) 0.00 : 75ed6: ff 0.00 : 75ed7: 48 89 05 ca e8 2f 00 mov %rax,0x2fe8ca(%rip) # 3747a8 0.00 : 75ede: 83 05 0b e9 2f 00 01 addl $0x1,0x2fe90b(%rip) # 3747f0 0.00 : 75ee5: 48 8b 5c 24 e0 mov -0x20(%rsp),%rbx 0.00 : 75eea: 48 8b 6c 24 e8 mov -0x18(%rsp),%rbp 0.00 : 75eef: 4c 8b 64 24 f0 mov -0x10(%rsp),%r12 0.00 : 75ef4: 4c 8b 6c 24 f8 mov -0x8(%rsp),%r13 0.00 : 75ef9: c3 retq 0.00 : 75efa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 75f00: 64 48 8b 1c 25 00 00 mov %fs:0x0,%rbx 0.00 : 75f07: 00 00 0.00 : 75f09: 4c 8b 15 30 be 2f 00 mov 0x2fbe30(%rip),%r10 # 371d40 <_DYNAMIC+0x1e0> 0.00 : 75f10: 4a 83 3c 13 ff cmpq $0xffffffffffffffff,(%rbx,%r10,1) 0.00 : 75f15: 74 c7 je 75ede 0.00 : 75f17: 89 d0 mov %edx,%eax 0.00 : 75f19: 83 3d 94 17 30 00 00 cmpl $0x0,0x301794(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 75f20: 74 10 je 75f32 0.00 : 75f22: f0 0f b1 35 5a e8 2f lock cmpxchg %esi,0x2fe85a(%rip) # 374784 0.00 : 75f29: 00 0.00 : 75f2a: 0f 85 6a 6f 00 00 jne 7ce9a <_L_lock_103> 0.00 : 75f30: eb 0d jmp 75f3f 0.00 : 75f32: 0f b1 35 4b e8 2f 00 cmpxchg %esi,0x2fe84b(%rip) # 374784 0.00 : 75f39: 0f 85 5b 6f 00 00 jne 7ce9a <_L_lock_103> 0.00 : 75f3f: e9 09 ff ff ff jmpq 75e4d Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000076840 : 0.00 : 76840: 41 57 push %r15 0.00 : 76842: 49 89 f8 mov %rdi,%r8 0.00 : 76845: 41 56 push %r14 0.00 : 76847: 41 55 push %r13 0.00 : 76849: 41 54 push %r12 0.00 : 7684b: 55 push %rbp 0.00 : 7684c: 53 push %rbx 0.00 : 7684d: 48 83 ec 28 sub $0x28,%rsp 0.00 : 76851: 48 83 3d 1f df 2f 00 cmpq $0x0,0x2fdf1f(%rip) # 374778 0.00 : 76858: 00 0.00 : 76859: 0f 84 19 03 00 00 je 76b78 0.00 : 7685f: 48 8d 47 50 lea 0x50(%rdi),%rax 0.00 : 76863: 4c 8d 4f 58 lea 0x58(%rdi),%r9 0.00 : 76867: 4c 8d 5f 08 lea 0x8(%rdi),%r11 ??:0 14.29 : 7686b: 83 4f 04 01 orl $0x1,0x4(%rdi) 0.00 : 7686f: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 76874: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 76878: 49 8b 1b mov (%r11),%rbx 0.00 : 7687b: 48 85 db test %rbx,%rbx 0.00 : 7687e: 0f 84 fc 00 00 00 je 76980 0.00 : 76884: 49 c7 03 00 00 00 00 movq $0x0,(%r11) 0.00 : 7688b: eb 66 jmp 768f3 0.00 : 7688d: 0f 1f 00 nopl (%rax) 0.00 : 76890: 49 39 68 58 cmp %rbp,0x58(%r8) 0.00 : 76894: 0f 84 c7 00 00 00 je 76961 0.00 : 7689a: 42 f6 44 2d 08 01 testb $0x1,0x8(%rbp,%r13,1) 0.00 : 768a0: 0f 84 f2 00 00 00 je 76998 14.29 : 768a6: 48 83 65 08 fe andq $0xfffffffffffffffe,0x8(%rbp) 14.29 : 768ab: 49 8b 51 10 mov 0x10(%r9),%rdx 0.00 : 768af: 49 81 fc ff 03 00 00 cmp $0x3ff,%r12 0.00 : 768b6: 49 89 59 10 mov %rbx,0x10(%r9) 0.00 : 768ba: 48 89 5a 18 mov %rbx,0x18(%rdx) 0.00 : 768be: 76 10 jbe 768d0 0.00 : 768c0: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 768c7: 00 0.00 : 768c8: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 768cf: 00 0.00 : 768d0: 4c 89 e0 mov %r12,%rax 0.00 : 768d3: 4c 89 4b 18 mov %r9,0x18(%rbx) 0.00 : 768d7: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 768db: 48 83 c8 01 or $0x1,%rax 0.00 : 768df: 4d 85 d2 test %r10,%r10 0.00 : 768e2: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 768e6: 4e 89 24 23 mov %r12,(%rbx,%r12,1) 0.00 : 768ea: 4c 89 d3 mov %r10,%rbx 0.00 : 768ed: 0f 84 8d 00 00 00 je 76980 0.00 : 768f3: 48 8b 43 08 mov 0x8(%rbx),%rax 14.29 : 768f7: 4c 8b 53 10 mov 0x10(%rbx),%r10 0.00 : 768fb: 49 89 c4 mov %rax,%r12 0.00 : 768fe: 49 83 e4 fa and $0xfffffffffffffffa,%r12 0.00 : 76902: 4a 8d 2c 23 lea (%rbx,%r12,1),%rbp 0.00 : 76906: 4c 8b 6d 08 mov 0x8(%rbp),%r13 14.29 : 7690a: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 7690e: a8 01 test $0x1,%al 0.00 : 76910: 0f 85 7a ff ff ff jne 76890 0.00 : 76916: 48 8b 03 mov (%rbx),%rax 0.00 : 76919: 48 29 c3 sub %rax,%rbx 0.00 : 7691c: 49 01 c4 add %rax,%r12 0.00 : 7691f: 4c 8b 73 10 mov 0x10(%rbx),%r14 0.00 : 76923: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 76927: 4d 8b 7e 18 mov 0x18(%r14),%r15 0.00 : 7692b: 49 39 df cmp %rbx,%r15 0.00 : 7692e: 0f 85 a3 02 00 00 jne 76bd7 0.00 : 76934: 48 3b 58 10 cmp 0x10(%rax),%rbx 0.00 : 76938: 0f 85 99 02 00 00 jne 76bd7 0.00 : 7693e: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 76942: 4c 89 70 10 mov %r14,0x10(%rax) 0.00 : 76946: 48 81 7b 08 ff 03 00 cmpq $0x3ff,0x8(%rbx) 0.00 : 7694d: 00 0.00 : 7694e: 0f 87 4c 01 00 00 ja 76aa0 0.00 : 76954: 49 39 68 58 cmp %rbp,0x58(%r8) 0.00 : 76958: 4c 89 fb mov %r15,%rbx 0.00 : 7695b: 0f 85 39 ff ff ff jne 7689a 0.00 : 76961: 4b 8d 04 2c lea (%r12,%r13,1),%rax 0.00 : 76965: 48 83 c8 01 or $0x1,%rax 0.00 : 76969: 4d 85 d2 test %r10,%r10 0.00 : 7696c: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 76970: 49 89 58 58 mov %rbx,0x58(%r8) 0.00 : 76974: 4c 89 d3 mov %r10,%rbx 0.00 : 76977: 0f 85 76 ff ff ff jne 768f3 0.00 : 7697d: 0f 1f 00 nopl (%rax) 0.00 : 76980: 4c 3b 5c 24 20 cmp 0x20(%rsp),%r11 0.00 : 76985: 0f 84 30 02 00 00 je 76bbb 0.00 : 7698b: 49 83 c3 08 add $0x8,%r11 0.00 : 7698f: e9 e4 fe ff ff jmpq 76878 0.00 : 76994: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 76998: 4d 01 ec add %r13,%r12 0.00 : 7699b: 4c 8b 6d 10 mov 0x10(%rbp),%r13 0.00 : 7699f: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 769a3: 4d 8b 75 18 mov 0x18(%r13),%r14 0.00 : 769a7: 49 39 ee cmp %rbp,%r14 0.00 : 769aa: 0f 85 67 02 00 00 jne 76c17 0.00 : 769b0: 48 3b 68 10 cmp 0x10(%rax),%rbp 0.00 : 769b4: 0f 85 5d 02 00 00 jne 76c17 0.00 : 769ba: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : 769be: 4c 89 68 10 mov %r13,0x10(%rax) 0.00 : 769c2: 48 81 7d 08 ff 03 00 cmpq $0x3ff,0x8(%rbp) 0.00 : 769c9: 00 0.00 : 769ca: 0f 86 db fe ff ff jbe 768ab 0.00 : 769d0: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 769d4: 48 85 c0 test %rax,%rax 0.00 : 769d7: 0f 84 ce fe ff ff je 768ab 0.00 : 769dd: 48 3b 68 28 cmp 0x28(%rax),%rbp 0.00 : 769e1: 74 45 je 76a28 0.00 : 769e3: 48 8d 0d 36 c0 0c 00 lea 0xcc036(%rip),%rcx # 142a20 <__func__.14434> 0.00 : 769ea: 48 8d 35 51 51 0c 00 lea 0xc5151(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 769f1: 48 8d 3d e8 86 0c 00 lea 0xc86e8(%rip),%rdi # 13f0e0 <__PRETTY_FUNCTION__.11129+0x1707> 0.00 : 769f8: ba 30 14 00 00 mov $0x1430,%edx 0.00 : 769fd: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 76a02: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 76a07: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 76a0c: 4c 89 1c 24 mov %r11,(%rsp) 0.00 : 76a10: e8 ab fd ff ff callq 767c0 <__malloc_assert> 0.00 : 76a15: 4c 8b 1c 24 mov (%rsp),%r11 0.00 : 76a19: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 76a1e: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 76a23: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 76a28: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 76a2c: 4c 3b 70 20 cmp 0x20(%rax),%r14 0.00 : 76a30: 74 45 je 76a77 0.00 : 76a32: 48 8d 0d e7 bf 0c 00 lea 0xcbfe7(%rip),%rcx # 142a20 <__func__.14434> 0.00 : 76a39: 48 8d 35 02 51 0c 00 lea 0xc5102(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 76a40: 48 8d 3d d1 86 0c 00 lea 0xc86d1(%rip),%rdi # 13f118 <__PRETTY_FUNCTION__.11129+0x173f> 0.00 : 76a47: ba 30 14 00 00 mov $0x1430,%edx 0.00 : 76a4c: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 76a51: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 76a56: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 76a5b: 4c 89 1c 24 mov %r11,(%rsp) 0.00 : 76a5f: e8 5c fd ff ff callq 767c0 <__malloc_assert> 0.00 : 76a64: 4c 8b 1c 24 mov (%rsp),%r11 0.00 : 76a68: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 76a6d: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 76a72: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 76a77: 49 83 7d 20 00 cmpq $0x0,0x20(%r13) 0.00 : 76a7c: 0f 84 02 02 00 00 je 76c84 0.00 : 76a82: 49 8b 56 20 mov 0x20(%r14),%rdx 0.00 : 76a86: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 76a8a: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 76a8e: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 76a92: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 76a96: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 76a9a: e9 0c fe ff ff jmpq 768ab 0.00 : 76a9f: 90 nop 0.00 : 76aa0: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 76aa4: 48 85 c0 test %rax,%rax 0.00 : 76aa7: 0f 84 a7 fe ff ff je 76954 0.00 : 76aad: 48 3b 58 28 cmp 0x28(%rax),%rbx 0.00 : 76ab1: 74 45 je 76af8 0.00 : 76ab3: 48 8d 0d 66 bf 0c 00 lea 0xcbf66(%rip),%rcx # 142a20 <__func__.14434> 0.00 : 76aba: 48 8d 35 81 50 0c 00 lea 0xc5081(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 76ac1: 48 8d 3d c8 85 0c 00 lea 0xc85c8(%rip),%rdi # 13f090 <__PRETTY_FUNCTION__.11129+0x16b7> 0.00 : 76ac8: ba 28 14 00 00 mov $0x1428,%edx 0.00 : 76acd: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 76ad2: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 76ad7: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 76adc: 4c 89 1c 24 mov %r11,(%rsp) 0.00 : 76ae0: e8 db fc ff ff callq 767c0 <__malloc_assert> 0.00 : 76ae5: 4c 8b 1c 24 mov (%rsp),%r11 0.00 : 76ae9: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 76aee: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 76af3: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 76af8: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 76afc: 4c 3b 78 20 cmp 0x20(%rax),%r15 0.00 : 76b00: 74 45 je 76b47 0.00 : 76b02: 48 8d 0d 17 bf 0c 00 lea 0xcbf17(%rip),%rcx # 142a20 <__func__.14434> 0.00 : 76b09: 48 8d 35 32 50 0c 00 lea 0xc5032(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 76b10: 48 8d 3d a1 85 0c 00 lea 0xc85a1(%rip),%rdi # 13f0b8 <__PRETTY_FUNCTION__.11129+0x16df> 0.00 : 76b17: ba 28 14 00 00 mov $0x1428,%edx 0.00 : 76b1c: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 76b21: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 76b26: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 76b2b: 4c 89 1c 24 mov %r11,(%rsp) 0.00 : 76b2f: e8 8c fc ff ff callq 767c0 <__malloc_assert> 0.00 : 76b34: 4c 8b 1c 24 mov (%rsp),%r11 0.00 : 76b38: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 76b3d: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 76b42: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 76b47: 49 83 7e 20 00 cmpq $0x0,0x20(%r14) 0.00 : 76b4c: 0f 84 05 01 00 00 je 76c57 0.00 : 76b52: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 76b56: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 76b5a: 4c 89 fb mov %r15,%rbx 0.00 : 76b5d: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 76b61: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 76b65: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 76b69: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 76b6d: e9 1e fd ff ff jmpq 76890 0.00 : 76b72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 76b78: 48 8d 4f 58 lea 0x58(%rdi),%rcx 0.00 : 76b7c: 48 8d 97 48 08 00 00 lea 0x848(%rdi),%rdx 0.00 : 76b83: 48 89 c8 mov %rcx,%rax 0.00 : 76b86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 76b8d: 00 00 00 0.00 : 76b90: 48 89 40 18 mov %rax,0x18(%rax) 14.29 : 76b94: 48 89 40 10 mov %rax,0x10(%rax) 0.00 : 76b98: 48 83 c0 10 add $0x10,%rax 0.00 : 76b9c: 48 39 d0 cmp %rdx,%rax 0.00 : 76b9f: 75 ef jne 76b90 0.00 : 76ba1: 48 8d 05 f8 d2 2f 00 lea 0x2fd2f8(%rip),%rax # 373ea0 14.29 : 76ba8: 49 39 c0 cmp %rax,%r8 0.00 : 76bab: 74 1d je 76bca 0.00 : 76bad: 41 83 48 04 02 orl $0x2,0x4(%r8) 0.00 : 76bb2: 41 83 48 04 01 orl $0x1,0x4(%r8) 0.00 : 76bb7: 49 89 48 58 mov %rcx,0x58(%r8) 0.00 : 76bbb: 48 83 c4 28 add $0x28,%rsp 0.00 : 76bbf: 5b pop %rbx 0.00 : 76bc0: 5d pop %rbp 0.00 : 76bc1: 41 5c pop %r12 0.00 : 76bc3: 41 5d pop %r13 0.00 : 76bc5: 41 5e pop %r14 0.00 : 76bc7: 41 5f pop %r15 0.00 : 76bc9: c3 retq 0.00 : 76bca: 48 c7 05 a3 db 2f 00 movq $0x80,0x2fdba3(%rip) # 374778 0.00 : 76bd1: 80 00 00 00 0.00 : 76bd5: eb db jmp 76bb2 0.00 : 76bd7: 8b 3d 2b b5 2f 00 mov 0x2fb52b(%rip),%edi # 372108 0.00 : 76bdd: 48 8d 35 41 4f 0c 00 lea 0xc4f41(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 76be4: 48 89 da mov %rbx,%rdx 0.00 : 76be7: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 76bec: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 76bf1: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 76bf6: 4c 89 1c 24 mov %r11,(%rsp) 0.00 : 76bfa: e8 61 f9 ff ff callq 76560 0.00 : 76bff: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 76c04: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 76c09: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 76c0e: 4c 8b 1c 24 mov (%rsp),%r11 0.00 : 76c12: e9 79 fc ff ff jmpq 76890 0.00 : 76c17: 8b 3d eb b4 2f 00 mov 0x2fb4eb(%rip),%edi # 372108 0.00 : 76c1d: 48 8d 35 01 4f 0c 00 lea 0xc4f01(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 76c24: 48 89 ea mov %rbp,%rdx 0.00 : 76c27: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 76c2c: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 76c31: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 76c36: 4c 89 1c 24 mov %r11,(%rsp) 0.00 : 76c3a: e8 21 f9 ff ff callq 76560 0.00 : 76c3f: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 76c44: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 76c49: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 76c4e: 4c 8b 1c 24 mov (%rsp),%r11 0.00 : 76c52: e9 54 fc ff ff jmpq 768ab 0.00 : 76c57: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 76c5b: 49 39 c7 cmp %rax,%r15 0.00 : 76c5e: 74 4e je 76cae 0.00 : 76c60: 49 89 46 20 mov %rax,0x20(%r14) 0.00 : 76c64: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 76c68: 4c 89 fb mov %r15,%rbx 0.00 : 76c6b: 49 89 46 28 mov %rax,0x28(%r14) 0.00 : 76c6f: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 76c73: 4c 89 70 28 mov %r14,0x28(%rax) 0.00 : 76c77: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 76c7b: 4c 89 70 20 mov %r14,0x20(%rax) 0.00 : 76c7f: e9 0c fc ff ff jmpq 76890 0.00 : 76c84: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 76c88: 49 39 c6 cmp %rax,%r14 0.00 : 76c8b: 74 31 je 76cbe 0.00 : 76c8d: 49 89 45 20 mov %rax,0x20(%r13) 0.00 : 76c91: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 76c95: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 76c99: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 76c9d: 4c 89 68 28 mov %r13,0x28(%rax) 0.00 : 76ca1: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 76ca5: 4c 89 68 20 mov %r13,0x20(%rax) 0.00 : 76ca9: e9 fd fb ff ff jmpq 768ab 0.00 : 76cae: 4d 89 76 28 mov %r14,0x28(%r14) 0.00 : 76cb2: 4d 89 76 20 mov %r14,0x20(%r14) 0.00 : 76cb6: 4c 89 fb mov %r15,%rbx 0.00 : 76cb9: e9 d2 fb ff ff jmpq 76890 0.00 : 76cbe: 4d 89 6d 28 mov %r13,0x28(%r13) 0.00 : 76cc2: 4d 89 6d 20 mov %r13,0x20(%r13) 0.00 : 76cc6: e9 e0 fb ff ff jmpq 768ab Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007c810 <__libc_realloc>: 14.29 : 7c810: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 28.57 : 7c815: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 7c81a: 49 89 fc mov %rdi,%r12 0.00 : 7c81d: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 7c822: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 7c827: 49 89 f5 mov %rsi,%r13 0.00 : 7c82a: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 7c82f: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 7c834: 48 83 ec 38 sub $0x38,%rsp 0.00 : 7c838: 48 8b 05 89 57 2f 00 mov 0x2f5789(%rip),%rax # 371fc8 <_DYNAMIC+0x468> 0.00 : 7c83f: 48 8b 00 mov (%rax),%rax 0.00 : 7c842: 48 85 c0 test %rax,%rax 0.00 : 7c845: 0f 85 12 03 00 00 jne 7cb5d <__libc_realloc+0x34d> 0.00 : 7c84b: 48 85 f6 test %rsi,%rsi 0.00 : 7c84e: 0f 84 2c 01 00 00 je 7c980 <__libc_realloc+0x170> 0.00 : 7c854: 48 85 ff test %rdi,%rdi 0.00 : 7c857: 0f 84 43 02 00 00 je 7caa0 <__libc_realloc+0x290> 0.00 : 7c85d: 48 8b 4f f8 mov -0x8(%rdi),%rcx 0.00 : 7c861: 4c 8d 77 f0 lea -0x10(%rdi),%r14 0.00 : 7c865: 49 89 cf mov %rcx,%r15 0.00 : 7c868: 49 83 e7 f8 and $0xfffffffffffffff8,%r15 0.00 : 7c86c: 4c 89 f8 mov %r15,%rax 0.00 : 7c86f: 48 f7 d8 neg %rax 0.00 : 7c872: 49 39 c6 cmp %rax,%r14 0.00 : 7c875: 0f 87 c5 02 00 00 ja 7cb40 <__libc_realloc+0x330> 14.29 : 7c87b: 41 f6 c6 0f test $0xf,%r14b 0.00 : 7c87f: 0f 85 bb 02 00 00 jne 7cb40 <__libc_realloc+0x330> 0.00 : 7c885: 48 83 fe bf cmp $0xffffffffffffffbf,%rsi 0.00 : 7c889: 0f 87 81 02 00 00 ja 7cb10 <__libc_realloc+0x300> 0.00 : 7c88f: 48 8d 46 17 lea 0x17(%rsi),%rax 0.00 : 7c893: bd 20 00 00 00 mov $0x20,%ebp 0.00 : 7c898: 48 89 c2 mov %rax,%rdx 0.00 : 7c89b: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 7c89f: 48 83 f8 1f cmp $0x1f,%rax 0.00 : 7c8a3: 48 0f 47 ea cmova %rdx,%rbp 0.00 : 7c8a7: f6 c1 02 test $0x2,%cl 0.00 : 7c8aa: 0f 85 38 01 00 00 jne 7c9e8 <__libc_realloc+0x1d8> 0.00 : 7c8b0: 83 e1 04 and $0x4,%ecx 0.00 : 7c8b3: 48 8d 1d e6 75 2f 00 lea 0x2f75e6(%rip),%rbx # 373ea0 0.00 : 7c8ba: 0f 85 e0 00 00 00 jne 7c9a0 <__libc_realloc+0x190> 0.00 : 7c8c0: be 01 00 00 00 mov $0x1,%esi 0.00 : 7c8c5: 31 c0 xor %eax,%eax 0.00 : 7c8c7: 83 3d e6 ad 2f 00 00 cmpl $0x0,0x2fade6(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7c8ce: 74 0c je 7c8dc <__libc_realloc+0xcc> 0.00 : 7c8d0: f0 0f b1 33 lock cmpxchg %esi,(%rbx) 0.00 : 7c8d4: 0f 85 fb 0c 00 00 jne 7d5d5 <_L_lock_11788> 0.00 : 7c8da: eb 09 jmp 7c8e5 <__libc_realloc+0xd5> 0.00 : 7c8dc: 0f b1 33 cmpxchg %esi,(%rbx) 14.29 : 7c8df: 0f 85 f0 0c 00 00 jne 7d5d5 <_L_lock_11788> 0.00 : 7c8e5: 48 8b 15 54 54 2f 00 mov 0x2f5454(%rip),%rdx # 371d40 <_DYNAMIC+0x1e0> 0.00 : 7c8ec: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7c8f3: 00 00 0.00 : 7c8f5: 48 89 e9 mov %rbp,%rcx 0.00 : 7c8f8: 4c 89 f6 mov %r14,%rsi 0.00 : 7c8fb: 48 89 df mov %rbx,%rdi 0.00 : 7c8fe: 48 89 1c 10 mov %rbx,(%rax,%rdx,1) 0.00 : 7c902: 4c 89 fa mov %r15,%rdx 0.00 : 7c905: e8 c6 f8 ff ff callq 7c1d0 <_int_realloc> 0.00 : 7c90a: 48 89 c5 mov %rax,%rbp 0.00 : 7c90d: 83 3d a0 ad 2f 00 00 cmpl $0x0,0x2fada0(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7c914: 74 0b je 7c921 <__libc_realloc+0x111> 0.00 : 7c916: f0 ff 0b lock decl (%rbx) 0.00 : 7c919: 0f 85 d1 0c 00 00 jne 7d5f0 <_L_unlock_11808> 0.00 : 7c91f: eb 08 jmp 7c929 <__libc_realloc+0x119> 0.00 : 7c921: ff 0b decl (%rbx) 0.00 : 7c923: 0f 85 c7 0c 00 00 jne 7d5f0 <_L_unlock_11808> 0.00 : 7c929: 48 85 ed test %rbp,%rbp 0.00 : 7c92c: 0f 84 ee 00 00 00 je 7ca20 <__libc_realloc+0x210> 0.00 : 7c932: 48 8b 45 f8 mov -0x8(%rbp),%rax 0.00 : 7c936: 48 8d 55 f0 lea -0x10(%rbp),%rdx 0.00 : 7c93a: a8 02 test $0x2,%al 0.00 : 7c93c: 75 7a jne 7c9b8 <__libc_realloc+0x1a8> 0.00 : 7c93e: a8 04 test $0x4,%al 0.00 : 7c940: 48 8d 0d 59 75 2f 00 lea 0x2f7559(%rip),%rcx # 373ea0 0.00 : 7c947: 0f 85 bb 00 00 00 jne 7ca08 <__libc_realloc+0x1f8> 14.29 : 7c94d: 48 39 cb cmp %rcx,%rbx 0.00 : 7c950: 74 66 je 7c9b8 <__libc_realloc+0x1a8> 0.00 : 7c952: 48 8d 0d 23 f5 0b 00 lea 0xbf523(%rip),%rcx # 13be7c <__func__.13722> 0.00 : 7c959: 48 8d 35 e2 f1 0b 00 lea 0xbf1e2(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7c960: 48 8d 3d 29 37 0c 00 lea 0xc3729(%rip),%rdi # 140090 <__PRETTY_FUNCTION__.11129+0x26b7> 0.00 : 7c967: ba ec 0e 00 00 mov $0xeec,%edx 0.00 : 7c96c: 49 89 ec mov %rbp,%r12 0.00 : 7c96f: e8 4c 9e ff ff callq 767c0 <__malloc_assert> 0.00 : 7c974: eb 45 jmp 7c9bb <__libc_realloc+0x1ab> 0.00 : 7c976: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7c97d: 00 00 00 0.00 : 7c980: 48 85 ff test %rdi,%rdi 0.00 : 7c983: 0f 84 17 01 00 00 je 7caa0 <__libc_realloc+0x290> 0.00 : 7c989: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7c990: e8 5b ec ff ff callq 7b5f0 <__libc_free> 0.00 : 7c995: 45 31 e4 xor %r12d,%r12d 0.00 : 7c998: eb 21 jmp 7c9bb <__libc_realloc+0x1ab> 0.00 : 7c99a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7c9a0: 4c 89 f0 mov %r14,%rax 0.00 : 7c9a3: 48 25 00 00 00 fc and $0xfffffffffc000000,%rax 0.00 : 7c9a9: 48 8b 18 mov (%rax),%rbx 0.00 : 7c9ac: e9 0f ff ff ff jmpq 7c8c0 <__libc_realloc+0xb0> 0.00 : 7c9b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7c9b8: 49 89 ec mov %rbp,%r12 0.00 : 7c9bb: 4c 89 e0 mov %r12,%rax 0.00 : 7c9be: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7c9c3: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7c9c8: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7c9cd: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7c9d2: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 7c9d7: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 7c9dc: 48 83 c4 38 add $0x38,%rsp 0.00 : 7c9e0: c3 retq 0.00 : 7c9e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7c9e8: 48 89 ee mov %rbp,%rsi 0.00 : 7c9eb: 4c 89 f7 mov %r14,%rdi 0.00 : 7c9ee: e8 6d fc ff ff callq 7c660 0.00 : 7c9f3: 48 85 c0 test %rax,%rax 0.00 : 7c9f6: 0f 84 d4 00 00 00 je 7cad0 <__libc_realloc+0x2c0> 0.00 : 7c9fc: 4c 8d 60 10 lea 0x10(%rax),%r12 0.00 : 7ca00: eb b9 jmp 7c9bb <__libc_realloc+0x1ab> 0.00 : 7ca02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7ca08: 48 81 e2 00 00 00 fc and $0xfffffffffc000000,%rdx 0.00 : 7ca0f: 48 8b 0a mov (%rdx),%rcx 0.00 : 7ca12: 48 39 cb cmp %rcx,%rbx 0.00 : 7ca15: 0f 85 37 ff ff ff jne 7c952 <__libc_realloc+0x142> 0.00 : 7ca1b: eb 9b jmp 7c9b8 <__libc_realloc+0x1a8> 0.00 : 7ca1d: 0f 1f 00 nopl (%rax) 0.00 : 7ca20: 4c 89 ef mov %r13,%rdi 0.00 : 7ca23: e8 a8 ec ff ff callq 7b6d0 <__libc_malloc> 0.00 : 7ca28: 48 85 c0 test %rax,%rax 0.00 : 7ca2b: 48 89 c5 mov %rax,%rbp 0.00 : 7ca2e: 66 90 xchg %ax,%ax 0.00 : 7ca30: 0f 84 fa 00 00 00 je 7cb30 <__libc_realloc+0x320> 0.00 : 7ca36: 49 8d 57 f8 lea -0x8(%r15),%rdx 0.00 : 7ca3a: 4c 89 e6 mov %r12,%rsi 0.00 : 7ca3d: 48 89 c7 mov %rax,%rdi 0.00 : 7ca40: e8 0b 7d 00 00 callq 84750 0.00 : 7ca45: be 01 00 00 00 mov $0x1,%esi 0.00 : 7ca4a: 31 c0 xor %eax,%eax 0.00 : 7ca4c: 83 3d 61 ac 2f 00 00 cmpl $0x0,0x2fac61(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7ca53: 74 0c je 7ca61 <__libc_realloc+0x251> 0.00 : 7ca55: f0 0f b1 33 lock cmpxchg %esi,(%rbx) 0.00 : 7ca59: 0f 85 ac 0b 00 00 jne 7d60b <_L_lock_11967> 0.00 : 7ca5f: eb 09 jmp 7ca6a <__libc_realloc+0x25a> 0.00 : 7ca61: 0f b1 33 cmpxchg %esi,(%rbx) 0.00 : 7ca64: 0f 85 a1 0b 00 00 jne 7d60b <_L_lock_11967> 0.00 : 7ca6a: 4c 89 f6 mov %r14,%rsi 0.00 : 7ca6d: 48 89 df mov %rbx,%rdi 0.00 : 7ca70: e8 2b b0 ff ff callq 77aa0 <_int_free> 0.00 : 7ca75: 83 3d 38 ac 2f 00 00 cmpl $0x0,0x2fac38(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7ca7c: 74 0b je 7ca89 <__libc_realloc+0x279> 0.00 : 7ca7e: f0 ff 0b lock decl (%rbx) 0.00 : 7ca81: 0f 85 9f 0b 00 00 jne 7d626 <_L_unlock_11978> 0.00 : 7ca87: eb 08 jmp 7ca91 <__libc_realloc+0x281> 0.00 : 7ca89: ff 0b decl (%rbx) 0.00 : 7ca8b: 0f 85 95 0b 00 00 jne 7d626 <_L_unlock_11978> 0.00 : 7ca91: 49 89 ec mov %rbp,%r12 0.00 : 7ca94: e9 22 ff ff ff jmpq 7c9bb <__libc_realloc+0x1ab> 0.00 : 7ca99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7caa0: 4c 89 ef mov %r13,%rdi 0.00 : 7caa3: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 14.29 : 7caa8: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7caad: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7cab2: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7cab7: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 7cabc: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 7cac1: 48 83 c4 38 add $0x38,%rsp 0.00 : 7cac5: e9 06 ec ff ff jmpq 7b6d0 <__libc_malloc> 0.00 : 7caca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7cad0: 49 8d 47 f8 lea -0x8(%r15),%rax 0.00 : 7cad4: 48 39 c5 cmp %rax,%rbp 0.00 : 7cad7: 0f 86 de fe ff ff jbe 7c9bb <__libc_realloc+0x1ab> 0.00 : 7cadd: 4c 89 ef mov %r13,%rdi 0.00 : 7cae0: e8 eb eb ff ff callq 7b6d0 <__libc_malloc> 0.00 : 7cae5: 48 85 c0 test %rax,%rax 0.00 : 7cae8: 48 89 c3 mov %rax,%rbx 0.00 : 7caeb: 74 43 je 7cb30 <__libc_realloc+0x320> 0.00 : 7caed: 49 8d 57 f0 lea -0x10(%r15),%rdx 0.00 : 7caf1: 4c 89 e6 mov %r12,%rsi 0.00 : 7caf4: 48 89 c7 mov %rax,%rdi 0.00 : 7caf7: 49 89 dc mov %rbx,%r12 0.00 : 7cafa: e8 51 7c 00 00 callq 84750 0.00 : 7caff: 4c 89 f7 mov %r14,%rdi 0.00 : 7cb02: e8 c9 ae ff ff callq 779d0 0.00 : 7cb07: e9 af fe ff ff jmpq 7c9bb <__libc_realloc+0x1ab> 0.00 : 7cb0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7cb10: 48 8b 15 21 53 2f 00 mov 0x2f5321(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 7cb17: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7cb1e: 00 00 0.00 : 7cb20: 45 31 e4 xor %r12d,%r12d 0.00 : 7cb23: c7 04 10 0c 00 00 00 movl $0xc,(%rax,%rdx,1) 0.00 : 7cb2a: e9 8c fe ff ff jmpq 7c9bb <__libc_realloc+0x1ab> 0.00 : 7cb2f: 90 nop 0.00 : 7cb30: 45 31 e4 xor %r12d,%r12d 0.00 : 7cb33: e9 83 fe ff ff jmpq 7c9bb <__libc_realloc+0x1ab> 0.00 : 7cb38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7cb3f: 00 0.00 : 7cb40: 8b 3d c2 55 2f 00 mov 0x2f55c2(%rip),%edi # 372108 0.00 : 7cb46: 48 8d 35 9e f2 0b 00 lea 0xbf29e(%rip),%rsi # 13bdeb <__PRETTY_FUNCTION__.14063+0x384> 0.00 : 7cb4d: 4c 89 e2 mov %r12,%rdx 0.00 : 7cb50: 45 31 e4 xor %r12d,%r12d 0.00 : 7cb53: e8 08 9a ff ff callq 76560 0.00 : 7cb58: e9 5e fe ff ff jmpq 7c9bb <__libc_realloc+0x1ab> 0.00 : 7cb5d: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 7cb62: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7cb67: 49 89 c3 mov %rax,%r11 0.00 : 7cb6a: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7cb6f: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7cb74: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7cb79: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 7cb7e: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 7cb83: 48 83 c4 38 add $0x38,%rsp 0.00 : 7cb87: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000083f90 <__mempcpy>: 0.00 : 83f90: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 83f94: 73 7a jae 84010 <__mempcpy+0x80> 0.00 : 83f96: f6 c2 01 test $0x1,%dl 0.00 : 83f99: 74 0b je 83fa6 <__mempcpy+0x16> 0.00 : 83f9b: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 83f9e: 88 0f mov %cl,(%rdi) 0.00 : 83fa0: 48 ff c6 inc %rsi 0.00 : 83fa3: 48 ff c7 inc %rdi 0.00 : 83fa6: f6 c2 02 test $0x2,%dl 0.00 : 83fa9: 74 0e je 83fb9 <__mempcpy+0x29> 0.00 : 83fab: 0f b7 0e movzwl (%rsi),%ecx 0.00 : 83fae: 66 89 0f mov %cx,(%rdi) 0.00 : 83fb1: 48 83 c6 02 add $0x2,%rsi 0.00 : 83fb5: 48 83 c7 02 add $0x2,%rdi 0.00 : 83fb9: f6 c2 04 test $0x4,%dl 0.00 : 83fbc: 74 0c je 83fca <__mempcpy+0x3a> 0.00 : 83fbe: 8b 0e mov (%rsi),%ecx 0.00 : 83fc0: 89 0f mov %ecx,(%rdi) 14.29 : 83fc2: 48 83 c6 04 add $0x4,%rsi 0.00 : 83fc6: 48 83 c7 04 add $0x4,%rdi 0.00 : 83fca: f6 c2 08 test $0x8,%dl 0.00 : 83fcd: 74 11 je 83fe0 <__mempcpy+0x50> 0.00 : 83fcf: 48 8b 0e mov (%rsi),%rcx 0.00 : 83fd2: 48 89 0f mov %rcx,(%rdi) 0.00 : 83fd5: 48 83 c6 08 add $0x8,%rsi 0.00 : 83fd9: 48 83 c7 08 add $0x8,%rdi 0.00 : 83fdd: 0f 1f 00 nopl (%rax) 0.00 : 83fe0: 81 e2 f0 00 00 00 and $0xf0,%edx 0.00 : 83fe6: 74 23 je 8400b <__mempcpy+0x7b> 0.00 : 83fe8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83fef: 00 0.00 : 83ff0: 48 8b 0e mov (%rsi),%rcx 14.29 : 83ff3: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 83ff7: 48 89 0f mov %rcx,(%rdi) 0.00 : 83ffa: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 83ffe: 83 ea 10 sub $0x10,%edx 0.00 : 84001: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.00 : 84005: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 84009: 75 e5 jne 83ff0 <__mempcpy+0x60> 0.00 : 8400b: 48 89 f8 mov %rdi,%rax 14.29 : 8400e: c3 retq 0.00 : 8400f: 90 nop 28.57 : 84010: 89 f1 mov %esi,%ecx 0.00 : 84012: 83 e1 07 and $0x7,%ecx 0.00 : 84015: 74 29 je 84040 <__mempcpy+0xb0> 0.00 : 84017: 48 8d 54 11 f8 lea -0x8(%rcx,%rdx,1),%rdx 0.00 : 8401c: 83 e9 08 sub $0x8,%ecx 0.00 : 8401f: 90 nop 0.00 : 84020: 0f b6 06 movzbl (%rsi),%eax 0.00 : 84023: 88 07 mov %al,(%rdi) 14.29 : 84025: ff c1 inc %ecx 0.00 : 84027: 48 8d 76 01 lea 0x1(%rsi),%rsi 0.00 : 8402b: 48 8d 7f 01 lea 0x1(%rdi),%rdi 0.00 : 8402f: 75 ef jne 84020 <__mempcpy+0x90> 0.00 : 84031: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 84038: 0f 1f 84 00 00 00 00 0.00 : 8403f: 00 0.00 : 84040: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 84047: 77 77 ja 840c0 <__mempcpy+0x130> 0.00 : 84049: 89 d1 mov %edx,%ecx 0.00 : 8404b: c1 e9 05 shr $0x5,%ecx 0.00 : 8404e: 74 60 je 840b0 <__mempcpy+0x120> 0.00 : 84050: ff c9 dec %ecx 0.00 : 84052: 48 8b 06 mov (%rsi),%rax 0.00 : 84055: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 84059: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8405d: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84061: 48 89 07 mov %rax,(%rdi) 0.00 : 84064: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 84068: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 8406c: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 84070: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 84074: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 84078: 74 36 je 840b0 <__mempcpy+0x120> 0.00 : 8407a: ff c9 dec %ecx 0.00 : 8407c: 48 8b 06 mov (%rsi),%rax 0.00 : 8407f: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 84083: 4c 8b 4e 10 mov 0x10(%rsi),%r9 14.29 : 84087: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 8408b: 48 89 07 mov %rax,(%rdi) 0.00 : 8408e: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 84092: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 84096: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8409a: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 8409e: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 840a2: 75 ac jne 84050 <__mempcpy+0xc0> 0.00 : 840a4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 840ab: 00 00 00 00 00 0.00 : 840b0: 83 e2 1f and $0x1f,%edx 0.00 : 840b3: 0f 85 dd fe ff ff jne 83f96 <__mempcpy+0x6> 0.00 : 840b9: 48 89 f8 mov %rdi,%rax 0.00 : 840bc: c3 retq 0.00 : 840bd: 0f 1f 00 nopl (%rax) 0.00 : 840c0: 4c 8b 1d 49 e0 2e 00 mov 0x2ee049(%rip),%r11 # 372110 <__x86_64_data_cache_size_half> 0.00 : 840c7: 49 39 d3 cmp %rdx,%r11 0.00 : 840ca: 4c 0f 47 da cmova %rdx,%r11 0.00 : 840ce: 4c 89 d9 mov %r11,%rcx 0.00 : 840d1: 49 83 e3 f8 and $0xfffffffffffffff8,%r11 0.00 : 840d5: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 840d9: 74 05 je 840e0 <__mempcpy+0x150> 0.00 : 840db: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 840de: 66 90 xchg %ax,%ax 0.00 : 840e0: 4c 29 da sub %r11,%rdx 0.00 : 840e3: 48 f7 c2 f8 ff ff ff test $0xfffffffffffffff8,%rdx 0.00 : 840ea: 75 14 jne 84100 <__mempcpy+0x170> 0.00 : 840ec: 83 e2 07 and $0x7,%edx 0.00 : 840ef: 0f 85 a1 fe ff ff jne 83f96 <__mempcpy+0x6> 0.00 : 840f5: 48 89 f8 mov %rdi,%rax 0.00 : 840f8: c3 retq 0.00 : 840f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 84100: 4c 8b 05 29 e0 2e 00 mov 0x2ee029(%rip),%r8 # 372130 <__x86_64_shared_cache_size_half> 0.00 : 84107: 49 39 d0 cmp %rdx,%r8 0.00 : 8410a: 4c 0f 47 c2 cmova %rdx,%r8 0.00 : 8410e: 4c 89 c1 mov %r8,%rcx 0.00 : 84111: 49 83 e0 c0 and $0xffffffffffffffc0,%r8 0.00 : 84115: 48 c1 e9 06 shr $0x6,%rcx 0.00 : 84119: 0f 84 ab 01 00 00 je 842ca <__mempcpy+0x33a> 0.00 : 8411f: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 84124: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 84129: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 8412e: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 84133: 83 3d d6 32 2f 00 00 cmpl $0x0,0x2f32d6(%rip) # 377410 <__x86_64_prefetchw> 0.00 : 8413a: 0f 84 c0 00 00 00 je 84200 <__mempcpy+0x270> 0.00 : 84140: 48 ff c9 dec %rcx 0.00 : 84143: 48 8b 06 mov (%rsi),%rax 0.00 : 84146: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 8414a: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8414e: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84152: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84156: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 8415a: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 8415e: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 84162: 0f 18 8e 80 03 00 00 prefetcht0 0x380(%rsi) 0.00 : 84169: 0f 18 8e c0 03 00 00 prefetcht0 0x3c0(%rsi) 0.00 : 84170: 48 89 07 mov %rax,(%rdi) 0.00 : 84173: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84177: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 8417b: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8417f: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 84183: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 84187: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 8418b: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 8418f: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84193: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84197: 0f 84 19 01 00 00 je 842b6 <__mempcpy+0x326> 0.00 : 8419d: 48 ff c9 dec %rcx 0.00 : 841a0: 48 8b 06 mov (%rsi),%rax 0.00 : 841a3: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 841a7: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 841ab: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 841af: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 841b3: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 841b7: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 841bb: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 841bf: 48 89 07 mov %rax,(%rdi) 0.00 : 841c2: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 841c6: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 841ca: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 841ce: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 841d2: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 841d6: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 841da: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 841de: 0f 0d 8f 40 03 00 00 prefetchw 0x340(%rdi) 0.00 : 841e5: 0f 0d 8f 80 03 00 00 prefetchw 0x380(%rdi) 0.00 : 841ec: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 841f0: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 841f4: 0f 85 46 ff ff ff jne 84140 <__mempcpy+0x1b0> 0.00 : 841fa: e9 b7 00 00 00 jmpq 842b6 <__mempcpy+0x326> 0.00 : 841ff: 90 nop 0.00 : 84200: 48 ff c9 dec %rcx 0.00 : 84203: 48 8b 06 mov (%rsi),%rax 0.00 : 84206: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 8420a: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8420e: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84212: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84216: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 8421a: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 8421e: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 84222: 0f 18 8e 80 03 00 00 prefetcht0 0x380(%rsi) 0.00 : 84229: 0f 18 8e c0 03 00 00 prefetcht0 0x3c0(%rsi) 0.00 : 84230: 48 89 07 mov %rax,(%rdi) 0.00 : 84233: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84237: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 8423b: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8423f: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 84243: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 84247: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 8424b: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 8424f: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84253: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84257: 74 5d je 842b6 <__mempcpy+0x326> 0.00 : 84259: 48 ff c9 dec %rcx 0.00 : 8425c: 48 8b 06 mov (%rsi),%rax 0.00 : 8425f: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 84263: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 84267: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 8426b: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 8426f: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84273: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 84277: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 8427b: 0f 18 8f 40 03 00 00 prefetcht0 0x340(%rdi) 0.00 : 84282: 0f 18 8f 80 03 00 00 prefetcht0 0x380(%rdi) 0.00 : 84289: 48 89 07 mov %rax,(%rdi) 0.00 : 8428c: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84290: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 84294: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 84298: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 8429c: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 842a0: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 842a4: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 842a8: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 842ac: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 842b0: 0f 85 4a ff ff ff jne 84200 <__mempcpy+0x270> 0.00 : 842b6: 48 8b 5c 24 e0 mov -0x20(%rsp),%rbx 0.00 : 842bb: 4c 8b 64 24 e8 mov -0x18(%rsp),%r12 0.00 : 842c0: 4c 8b 6c 24 f0 mov -0x10(%rsp),%r13 0.00 : 842c5: 4c 8b 74 24 f8 mov -0x8(%rsp),%r14 0.00 : 842ca: 4c 29 c2 sub %r8,%rdx 0.00 : 842cd: 48 f7 c2 c0 ff ff ff test $0xffffffffffffffc0,%rdx 0.00 : 842d4: 75 1a jne 842f0 <__mempcpy+0x360> 0.00 : 842d6: 83 e2 3f and $0x3f,%edx 0.00 : 842d9: 0f 85 b7 fc ff ff jne 83f96 <__mempcpy+0x6> 0.00 : 842df: 48 89 f8 mov %rdi,%rax 0.00 : 842e2: c3 retq 0.00 : 842e3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 842ea: 84 00 00 00 00 00 0.00 : 842f0: 48 89 d1 mov %rdx,%rcx 0.00 : 842f3: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 842f7: 0f 84 d8 00 00 00 je 843d5 <__mempcpy+0x445> 0.00 : 842fd: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 84302: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 84307: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 8430c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 84310: 0f 18 86 00 03 00 00 prefetchnta 0x300(%rsi) 0.00 : 84317: 0f 18 86 40 03 00 00 prefetchnta 0x340(%rsi) 0.00 : 8431e: 48 ff c9 dec %rcx 0.00 : 84321: 48 8b 06 mov (%rsi),%rax 0.00 : 84324: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 84328: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8432c: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84330: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84334: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84338: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 8433c: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 84340: 48 0f c3 07 movnti %rax,(%rdi) 0.00 : 84344: 4c 0f c3 47 08 movnti %r8,0x8(%rdi) 0.00 : 84349: 4c 0f c3 4f 10 movnti %r9,0x10(%rdi) 0.00 : 8434e: 4c 0f c3 57 18 movnti %r10,0x18(%rdi) 0.00 : 84353: 4c 0f c3 5f 20 movnti %r11,0x20(%rdi) 0.00 : 84358: 4c 0f c3 67 28 movnti %r12,0x28(%rdi) 0.00 : 8435d: 4c 0f c3 6f 30 movnti %r13,0x30(%rdi) 0.00 : 84362: 4c 0f c3 77 38 movnti %r14,0x38(%rdi) 0.00 : 84367: 48 8b 46 40 mov 0x40(%rsi),%rax 0.00 : 8436b: 4c 8b 46 48 mov 0x48(%rsi),%r8 0.00 : 8436f: 4c 8b 4e 50 mov 0x50(%rsi),%r9 0.00 : 84373: 4c 8b 56 58 mov 0x58(%rsi),%r10 0.00 : 84377: 4c 8b 5e 60 mov 0x60(%rsi),%r11 0.00 : 8437b: 4c 8b 66 68 mov 0x68(%rsi),%r12 0.00 : 8437f: 4c 8b 6e 70 mov 0x70(%rsi),%r13 0.00 : 84383: 4c 8b 76 78 mov 0x78(%rsi),%r14 0.00 : 84387: 48 0f c3 47 40 movnti %rax,0x40(%rdi) 0.00 : 8438c: 4c 0f c3 47 48 movnti %r8,0x48(%rdi) 0.00 : 84391: 4c 0f c3 4f 50 movnti %r9,0x50(%rdi) 0.00 : 84396: 4c 0f c3 57 58 movnti %r10,0x58(%rdi) 0.00 : 8439b: 4c 0f c3 5f 60 movnti %r11,0x60(%rdi) 0.00 : 843a0: 4c 0f c3 67 68 movnti %r12,0x68(%rdi) 0.00 : 843a5: 4c 0f c3 6f 70 movnti %r13,0x70(%rdi) 0.00 : 843aa: 4c 0f c3 77 78 movnti %r14,0x78(%rdi) 0.00 : 843af: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 843b6: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 843bd: 0f 85 4d ff ff ff jne 84310 <__mempcpy+0x380> 0.00 : 843c3: 0f ae f8 sfence 0.00 : 843c6: 4c 8b 64 24 e8 mov -0x18(%rsp),%r12 0.00 : 843cb: 4c 8b 6c 24 f0 mov -0x10(%rsp),%r13 0.00 : 843d0: 4c 8b 74 24 f8 mov -0x8(%rsp),%r14 0.00 : 843d5: 83 e2 7f and $0x7f,%edx 0.00 : 843d8: 0f 85 b8 fb ff ff jne 83f96 <__mempcpy+0x6> 0.00 : 843de: 48 89 f8 mov %rdi,%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000876d0 <__strcoll_l>: 0.00 : 876d0: 55 push %rbp 0.00 : 876d1: 48 89 e5 mov %rsp,%rbp 0.00 : 876d4: 41 57 push %r15 0.00 : 876d6: 41 56 push %r14 0.00 : 876d8: 41 55 push %r13 0.00 : 876da: 41 54 push %r12 0.00 : 876dc: 53 push %rbx 0.00 : 876dd: 48 81 ec 58 01 00 00 sub $0x158,%rsp 0.00 : 876e4: 48 89 bd c0 fe ff ff mov %rdi,-0x140(%rbp) 0.00 : 876eb: 48 89 b5 b8 fe ff ff mov %rsi,-0x148(%rbp) 0.00 : 876f2: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 876f6: 44 8b 70 40 mov 0x40(%rax),%r14d 0.00 : 876fa: 4d 85 f6 test %r14,%r14 0.00 : 876fd: 0f 84 ed 04 00 00 je 87bf0 <__strcoll_l+0x520> 0.00 : 87703: 48 8b 50 50 mov 0x50(%rax),%rdx 0.00 : 87707: 4c 8b 78 48 mov 0x48(%rax),%r15 0.00 : 8770b: 48 89 95 d0 fe ff ff mov %rdx,-0x130(%rbp) 0.00 : 87712: 48 8b 48 60 mov 0x60(%rax),%rcx 0.00 : 87716: 83 e2 03 and $0x3,%edx 0.00 : 87719: 4c 8b 60 58 mov 0x58(%rax),%r12 0.00 : 8771d: 48 89 8d d8 fe ff ff mov %rcx,-0x128(%rbp) 0.00 : 87724: 48 8b 40 68 mov 0x68(%rax),%rax 0.00 : 87728: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp) 0.00 : 8772f: 0f 85 7a 06 00 00 jne 87daf <__strcoll_l+0x6df> 0.00 : 87735: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : 8773c: 83 e0 03 and $0x3,%eax 0.00 : 8773f: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) 0.00 : 87746: 0f 85 44 06 00 00 jne 87d90 <__strcoll_l+0x6c0> 0.00 : 8774c: 48 8b bd c0 fe ff ff mov -0x140(%rbp),%rdi 0.00 : 87753: e8 58 94 ff ff callq 80bb0 <__GI_strlen> 0.00 : 87758: 48 8b bd b8 fe ff ff mov -0x148(%rbp),%rdi 0.00 : 8775f: 48 89 c3 mov %rax,%rbx 0.00 : 87762: e8 49 94 ff ff callq 80bb0 <__GI_strlen> 0.00 : 87767: 48 85 db test %rbx,%rbx 0.00 : 8776a: 49 89 c5 mov %rax,%r13 0.00 : 8776d: 0f 84 f7 05 00 00 je 87d6a <__strcoll_l+0x69a> 0.00 : 87773: 48 85 c0 test %rax,%rax 0.00 : 87776: 0f 84 ee 05 00 00 je 87d6a <__strcoll_l+0x69a> 0.00 : 8777c: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 87783: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 8778a: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 8778f: 49 39 dd cmp %rbx,%r13 0.00 : 87792: 48 89 d7 mov %rdx,%rdi 0.00 : 87795: 48 89 95 a0 fe ff ff mov %rdx,-0x160(%rbp) 0.00 : 8779c: 48 ba 33 33 33 33 33 movabs $0x3333333333333333,%rdx 0.00 : 877a3: 33 33 33 0.00 : 877a6: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 877a9: 48 89 d9 mov %rbx,%rcx 0.00 : 877ac: 49 0f 46 cd cmovbe %r13,%rcx 0.00 : 877b0: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 877b7: 48 39 d1 cmp %rdx,%rcx 0.00 : 877ba: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) 0.00 : 877c1: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 877c8: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 877cf: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 877d6: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) 0.00 : 877dd: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 877e4: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 877eb: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 877ef: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 877f6: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 877fa: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) 0.00 : 87801: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 87805: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) 0.00 : 8780c: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 87810: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) 0.00 : 87817: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 8781b: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) 0.00 : 87822: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 87826: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 8782d: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 87831: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 87838: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 8783c: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) 0.00 : 87843: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 87847: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 8784e: 0f 86 dc 02 00 00 jbe 87b30 <__strcoll_l+0x460> 0.00 : 87854: c6 85 e3 fe ff ff 00 movb $0x0,-0x11d(%rbp) 0.00 : 8785b: 48 8d 8d f0 fe ff ff lea -0x110(%rbp),%rcx 0.00 : 87862: 31 c0 xor %eax,%eax 0.00 : 87864: 31 d2 xor %edx,%edx 0.00 : 87866: 48 c7 85 e8 fe ff ff movq $0x0,-0x118(%rbp) 0.00 : 8786d: 00 00 00 00 0.00 : 87871: 48 89 8d a8 fe ff ff mov %rcx,-0x158(%rbp) 0.00 : 87878: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : 8787f: 48 98 cltq 0.00 : 87881: 49 8d 14 17 lea (%r15,%rdx,1),%rdx 0.00 : 87885: 49 0f af c6 imul %r14,%rax 0.00 : 87889: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 87890: 00 0.00 : 87891: c7 45 b4 00 00 00 00 movl $0x0,-0x4c(%rbp) 0.00 : 87898: c7 85 44 ff ff ff 00 movl $0x0,-0xbc(%rbp) 0.00 : 8789f: 00 00 00 0.00 : 878a2: 48 c7 45 90 ff ff ff movq $0xffffffffffffffff,-0x70(%rbp) 0.00 : 878a9: ff 0.00 : 878aa: 48 89 4d 98 mov %rcx,-0x68(%rbp) 0.00 : 878ae: 48 8b 8d b8 fe ff ff mov -0x148(%rbp),%rcx 0.00 : 878b5: 48 c7 45 88 ff ff ff movq $0xffffffffffffffff,-0x78(%rbp) 0.00 : 878bc: ff 0.00 : 878bd: 48 c7 85 10 ff ff ff movq $0x0,-0xf0(%rbp) 0.00 : 878c4: 00 00 00 00 0.00 : 878c8: 48 c7 85 20 ff ff ff movq $0xffffffffffffffff,-0xe0(%rbp) 0.00 : 878cf: ff ff ff ff 0.00 : 878d3: 48 c7 85 18 ff ff ff movq $0xffffffffffffffff,-0xe8(%rbp) 0.00 : 878da: ff ff ff ff 0.00 : 878de: 48 89 8d 28 ff ff ff mov %rcx,-0xd8(%rbp) 0.00 : 878e5: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 878e9: 44 8b ad e8 fe ff ff mov -0x118(%rbp),%r13d 0.00 : 878f0: 83 e2 04 and $0x4,%edx 0.00 : 878f3: 89 95 e4 fe ff ff mov %edx,-0x11c(%rbp) 0.00 : 878f9: e9 eb 00 00 00 jmpq 879e9 <__strcoll_l+0x319> 0.00 : 878fe: 66 90 xchg %ax,%ax 0.00 : 87900: 48 8b 8d c8 fe ff ff mov -0x138(%rbp),%rcx 0.00 : 87907: 4c 8b 8d d8 fe ff ff mov -0x128(%rbp),%r9 0.00 : 8790e: 4c 89 fa mov %r15,%rdx 0.00 : 87911: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 87918: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 8791f: 44 89 f6 mov %r14d,%esi 0.00 : 87922: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 87926: 4c 89 e1 mov %r12,%rcx 0.00 : 87929: e8 c2 f2 ff ff callq 86bf0 0.00 : 8792e: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : 87935: 4c 8b 8d d8 fe ff ff mov -0x128(%rbp),%r9 0.00 : 8793c: 4c 89 e1 mov %r12,%rcx 0.00 : 8793f: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 87946: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 8794d: 4c 89 fa mov %r15,%rdx 0.00 : 87950: 44 89 f6 mov %r14d,%esi 0.00 : 87953: 48 89 04 24 mov %rax,(%rsp) 0.00 : 87957: e8 94 f2 ff ff callq 86bf0 0.00 : 8795c: 44 8b 85 60 ff ff ff mov -0xa0(%rbp),%r8d 0.00 : 87963: 45 85 c0 test %r8d,%r8d 0.00 : 87966: 0f 84 d1 00 00 00 je 87a3d <__strcoll_l+0x36d> 33.33 : 8796c: 44 8b 8d f0 fe ff ff mov -0x110(%rbp),%r9d 0.00 : 87973: 45 85 c9 test %r9d,%r9d 0.00 : 87976: 0f 84 74 01 00 00 je 87af0 <__strcoll_l+0x420> 0.00 : 8797c: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 87980: 48 85 f6 test %rsi,%rsi 0.00 : 87983: 0f 84 3a 03 00 00 je 87cc3 <__strcoll_l+0x5f3> 0.00 : 87989: 44 8b 95 e4 fe ff ff mov -0x11c(%rbp),%r10d 0.00 : 87990: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 87997: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 8799e: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : 879a5: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 879ac: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 879b3: 45 85 d2 test %r10d,%r10d 0.00 : 879b6: 0f 95 c3 setne %bl 33.33 : 879b9: 0f 84 c1 00 00 00 je 87a80 <__strcoll_l+0x3b0> 0.00 : 879bf: 48 39 d1 cmp %rdx,%rcx 0.00 : 879c2: 0f 84 b8 00 00 00 je 87a80 <__strcoll_l+0x3b0> 0.00 : 879c8: 48 39 ca cmp %rcx,%rdx 0.00 : 879cb: 19 db sbb %ebx,%ebx 0.00 : 879cd: 83 e3 02 and $0x2,%ebx 0.00 : 879d0: 83 eb 01 sub $0x1,%ebx 0.00 : 879d3: 44 89 85 60 ff ff ff mov %r8d,-0xa0(%rbp) 0.00 : 879da: 44 89 8d f0 fe ff ff mov %r9d,-0x110(%rbp) 0.00 : 879e1: 85 db test %ebx,%ebx 0.00 : 879e3: 0f 85 0f 01 00 00 jne 87af8 <__strcoll_l+0x428> 0.00 : 879e9: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : 879ee: 0f 84 64 02 00 00 je 87c58 <__strcoll_l+0x588> 0.00 : 879f4: 45 85 ed test %r13d,%r13d 0.00 : 879f7: 0f 84 03 ff ff ff je 87900 <__strcoll_l+0x230> 0.00 : 879fd: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 87a04: 4d 89 e0 mov %r12,%r8 0.00 : 87a07: 4c 89 f9 mov %r15,%rcx 0.00 : 87a0a: 44 89 ea mov %r13d,%edx 0.00 : 87a0d: 44 89 f6 mov %r14d,%esi 0.00 : 87a10: e8 6b f0 ff ff callq 86a80 0.00 : 87a15: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 87a1c: 4d 89 e0 mov %r12,%r8 0.00 : 87a1f: 4c 89 f9 mov %r15,%rcx 0.00 : 87a22: 44 89 ea mov %r13d,%edx 0.00 : 87a25: 44 89 f6 mov %r14d,%esi 0.00 : 87a28: e8 53 f0 ff ff callq 86a80 0.00 : 87a2d: 44 8b 85 60 ff ff ff mov -0xa0(%rbp),%r8d 0.00 : 87a34: 45 85 c0 test %r8d,%r8d 0.00 : 87a37: 0f 85 2f ff ff ff jne 8796c <__strcoll_l+0x29c> 0.00 : 87a3d: 8b 9d f0 fe ff ff mov -0x110(%rbp),%ebx 0.00 : 87a43: 85 db test %ebx,%ebx 0.00 : 87a45: 0f 85 99 03 00 00 jne 87de4 <__strcoll_l+0x714> 0.00 : 87a4b: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 87a4f: 48 85 c0 test %rax,%rax 0.00 : 87a52: 0f 84 83 03 00 00 je 87ddb <__strcoll_l+0x70b> 0.00 : 87a58: 0f b6 00 movzbl (%rax),%eax 0.00 : 87a5b: 48 83 85 e8 fe ff ff addq $0x1,-0x118(%rbp) 0.00 : 87a62: 01 0.00 : 87a63: 4c 3b b5 e8 fe ff ff cmp -0x118(%rbp),%r14 0.00 : 87a6a: 0f 86 12 03 00 00 jbe 87d82 <__strcoll_l+0x6b2> 0.00 : 87a70: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : 87a77: e9 fc fd ff ff jmpq 87878 <__strcoll_l+0x1a8> 0.00 : 87a7c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 87a80: 48 98 cltq 0.00 : 87a82: 4c 8d 14 86 lea (%rsi,%rax,4),%r10 0.00 : 87a86: 48 63 c7 movslq %edi,%rax 0.00 : 87a89: 49 8d 3c 83 lea (%r11,%rax,4),%rdi 0.00 : 87a8d: 8b 17 mov (%rdi),%edx 0.00 : 87a8f: 41 8b 0a mov (%r10),%ecx 0.00 : 87a92: 48 63 c1 movslq %ecx,%rax 33.33 : 87a95: 41 0f b6 34 04 movzbl (%r12,%rax,1),%esi 0.00 : 87a9a: 48 63 c2 movslq %edx,%rax 0.00 : 87a9d: 41 0f b6 04 04 movzbl (%r12,%rax,1),%eax 0.00 : 87aa2: 40 38 c6 cmp %al,%sil 0.00 : 87aa5: 75 79 jne 87b20 <__strcoll_l+0x450> 0.00 : 87aa7: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : 87aaa: 41 83 e8 01 sub $0x1,%r8d 0.00 : 87aae: 41 83 e9 01 sub $0x1,%r9d 0.00 : 87ab2: 45 85 c0 test %r8d,%r8d 0.00 : 87ab5: 41 89 02 mov %eax,(%r10) 0.00 : 87ab8: 8b 07 mov (%rdi),%eax 0.00 : 87aba: 8d 50 01 lea 0x1(%rax),%edx 0.00 : 87abd: 89 17 mov %edx,(%rdi) 0.00 : 87abf: 7e 05 jle 87ac6 <__strcoll_l+0x3f6> 0.00 : 87ac1: 45 85 c9 test %r9d,%r9d 0.00 : 87ac4: 7f c9 jg 87a8f <__strcoll_l+0x3bf> 0.00 : 87ac6: 84 db test %bl,%bl 0.00 : 87ac8: 74 16 je 87ae0 <__strcoll_l+0x410> 0.00 : 87aca: 45 39 c8 cmp %r9d,%r8d 0.00 : 87acd: 0f 1f 00 nopl (%rax) 0.00 : 87ad0: 74 0e je 87ae0 <__strcoll_l+0x410> 0.00 : 87ad2: 44 89 c3 mov %r8d,%ebx 0.00 : 87ad5: 44 29 cb sub %r9d,%ebx 0.00 : 87ad8: e9 f6 fe ff ff jmpq 879d3 <__strcoll_l+0x303> 0.00 : 87add: 0f 1f 00 nopl (%rax) 0.00 : 87ae0: 31 db xor %ebx,%ebx 0.00 : 87ae2: e9 ec fe ff ff jmpq 879d3 <__strcoll_l+0x303> 0.00 : 87ae7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 87aee: 00 00 0.00 : 87af0: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 87af5: 0f 1f 00 nopl (%rax) 0.00 : 87af8: 80 bd e3 fe ff ff 00 cmpb $0x0,-0x11d(%rbp) 0.00 : 87aff: 0f 85 db 00 00 00 jne 87be0 <__strcoll_l+0x510> 0.00 : 87b05: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 87b09: 89 d8 mov %ebx,%eax 0.00 : 87b0b: 5b pop %rbx 0.00 : 87b0c: 41 5c pop %r12 0.00 : 87b0e: 41 5d pop %r13 0.00 : 87b10: 41 5e pop %r14 0.00 : 87b12: 41 5f pop %r15 0.00 : 87b14: c9 leaveq 0.00 : 87b15: c3 retq 0.00 : 87b16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 87b1d: 00 00 00 0.00 : 87b20: 40 0f b6 de movzbl %sil,%ebx 0.00 : 87b24: 0f b6 c0 movzbl %al,%eax 0.00 : 87b27: 29 c3 sub %eax,%ebx 0.00 : 87b29: e9 a5 fe ff ff jmpq 879d3 <__strcoll_l+0x303> 0.00 : 87b2e: 66 90 xchg %ax,%ax 0.00 : 87b30: 49 39 dd cmp %rbx,%r13 0.00 : 87b33: 48 89 d8 mov %rbx,%rax 0.00 : 87b36: 49 0f 43 c5 cmovae %r13,%rax 0.00 : 87b3a: 48 29 ca sub %rcx,%rdx 0.00 : 87b3d: 48 39 d0 cmp %rdx,%rax 0.00 : 87b40: 0f 87 0e fd ff ff ja 87854 <__strcoll_l+0x184> 0.00 : 87b46: 49 8d 44 1d 00 lea 0x0(%r13,%rbx,1),%rax 0.00 : 87b4b: 4c 8d 04 80 lea (%rax,%rax,4),%r8 0.00 : 87b4f: 49 81 f8 00 10 00 00 cmp $0x1000,%r8 0.00 : 87b56: 0f 87 a0 00 00 00 ja 87bfc <__strcoll_l+0x52c> 0.00 : 87b5c: 48 8d 04 9d 1e 00 00 lea 0x1e(,%rbx,4),%rax 0.00 : 87b63: 00 0.00 : 87b64: c6 85 e3 fe ff ff 00 movb $0x0,-0x11d(%rbp) 0.00 : 87b6b: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87b6f: 48 29 c4 sub %rax,%rsp 0.00 : 87b72: 48 8d 44 24 1f lea 0x1f(%rsp),%rax 0.00 : 87b77: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87b7b: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 87b7f: 4a 8d 04 ad 1e 00 00 lea 0x1e(,%r13,4),%rax 0.00 : 87b86: 00 0.00 : 87b87: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87b8b: 48 29 c4 sub %rax,%rsp 0.00 : 87b8e: 48 8d 44 24 1f lea 0x1f(%rsp),%rax 0.00 : 87b93: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87b97: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) 0.00 : 87b9e: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 87ba2: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87ba6: 48 29 c4 sub %rax,%rsp 0.00 : 87ba9: 48 8d 44 24 1f lea 0x1f(%rsp),%rax 0.00 : 87bae: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87bb2: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 87bb6: 49 8d 45 1e lea 0x1e(%r13),%rax 0.00 : 87bba: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87bbe: 48 29 c4 sub %rax,%rsp 0.00 : 87bc1: 48 8d 44 24 1f lea 0x1f(%rsp),%rax 0.00 : 87bc6: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 87bca: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 87bd1: e9 85 fc ff ff jmpq 8785b <__strcoll_l+0x18b> 0.00 : 87bd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 87bdd: 00 00 00 0.00 : 87be0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 87be4: e8 b7 6c f9 ff callq 1e8a0 0.00 : 87be9: e9 17 ff ff ff jmpq 87b05 <__strcoll_l+0x435> 0.00 : 87bee: 66 90 xchg %ax,%ax 0.00 : 87bf0: e8 5b 75 ff ff callq 7f150 <__GI_strcmp> 0.00 : 87bf5: 89 c3 mov %eax,%ebx 0.00 : 87bf7: e9 09 ff ff ff jmpq 87b05 <__strcoll_l+0x435> 0.00 : 87bfc: 4c 89 c7 mov %r8,%rdi 0.00 : 87bff: 4c 89 85 98 fe ff ff mov %r8,-0x168(%rbp) 0.00 : 87c06: e8 b5 ff 05 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 87c0b: 85 c0 test %eax,%eax 0.00 : 87c0d: 4c 8b 85 98 fe ff ff mov -0x168(%rbp),%r8 0.00 : 87c14: 0f 85 42 ff ff ff jne 87b5c <__strcoll_l+0x48c> 0.00 : 87c1a: 4c 89 c7 mov %r8,%rdi 0.00 : 87c1d: e8 2e 6c f9 ff callq 1e850 0.00 : 87c22: 48 85 c0 test %rax,%rax 0.00 : 87c25: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 87c29: 0f 84 25 fc ff ff je 87854 <__strcoll_l+0x184> 0.00 : 87c2f: 48 8d 04 98 lea (%rax,%rbx,4),%rax 0.00 : 87c33: c6 85 e3 fe ff ff 01 movb $0x1,-0x11d(%rbp) 0.00 : 87c3a: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) 0.00 : 87c41: 4a 8d 04 a8 lea (%rax,%r13,4),%rax 0.00 : 87c45: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 87c49: 48 01 d8 add %rbx,%rax 0.00 : 87c4c: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 87c53: e9 03 fc ff ff jmpq 8785b <__strcoll_l+0x18b> 0.00 : 87c58: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : 87c5f: 4c 8b 8d d8 fe ff ff mov -0x128(%rbp),%r9 0.00 : 87c66: 4c 89 e1 mov %r12,%rcx 0.00 : 87c69: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 87c70: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 87c77: 4c 89 fa mov %r15,%rdx 0.00 : 87c7a: 44 89 f6 mov %r14d,%esi 0.00 : 87c7d: 44 89 6c 24 08 mov %r13d,0x8(%rsp) 0.00 : 87c82: 48 89 04 24 mov %rax,(%rsp) 0.00 : 87c86: e8 85 f3 ff ff callq 87010 0.00 : 87c8b: 48 8b 95 c8 fe ff ff mov -0x138(%rbp),%rdx 0.00 : 87c92: 4c 8b 8d d8 fe ff ff mov -0x128(%rbp),%r9 0.00 : 87c99: 4c 89 e1 mov %r12,%rcx 0.00 : 87c9c: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 87ca3: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 87caa: 44 89 f6 mov %r14d,%esi 0.00 : 87cad: 44 89 6c 24 08 mov %r13d,0x8(%rsp) 0.00 : 87cb2: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 87cb6: 4c 89 fa mov %r15,%rdx 0.00 : 87cb9: e8 52 f3 ff ff callq 87010 0.00 : 87cbe: e9 99 fc ff ff jmpq 8795c <__strcoll_l+0x28c> 0.00 : 87cc3: 44 8b 9d e4 fe ff ff mov -0x11c(%rbp),%r11d 0.00 : 87cca: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 87cd1: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 87cd8: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 87cdb: 44 8b 95 44 ff ff ff mov -0xbc(%rbp),%r10d 0.00 : 87ce2: 45 85 db test %r11d,%r11d 0.00 : 87ce5: 41 0f 95 c3 setne %r11b 0.00 : 87ce9: 74 2d je 87d18 <__strcoll_l+0x648> 0.00 : 87ceb: 48 39 d0 cmp %rdx,%rax 0.00 : 87cee: 74 28 je 87d18 <__strcoll_l+0x648> 0.00 : 87cf0: 48 39 c2 cmp %rax,%rdx 0.00 : 87cf3: 19 db sbb %ebx,%ebx 0.00 : 87cf5: 83 e3 02 and $0x2,%ebx 0.00 : 87cf8: 83 eb 01 sub $0x1,%ebx 0.00 : 87cfb: 44 89 85 60 ff ff ff mov %r8d,-0xa0(%rbp) 0.00 : 87d02: 44 89 8d f0 fe ff ff mov %r9d,-0x110(%rbp) 0.00 : 87d09: 89 7d b4 mov %edi,-0x4c(%rbp) 0.00 : 87d0c: 44 89 95 44 ff ff ff mov %r10d,-0xbc(%rbp) 0.00 : 87d13: e9 c9 fc ff ff jmpq 879e1 <__strcoll_l+0x311> 0.00 : 87d18: 48 63 c7 movslq %edi,%rax 0.00 : 87d1b: 49 8d 34 04 lea (%r12,%rax,1),%rsi 0.00 : 87d1f: 49 63 c2 movslq %r10d,%rax 0.00 : 87d22: 49 8d 0c 04 lea (%r12,%rax,1),%rcx 0.00 : 87d26: 0f b6 06 movzbl (%rsi),%eax 0.00 : 87d29: 0f b6 11 movzbl (%rcx),%edx 0.00 : 87d2c: 38 d0 cmp %dl,%al 0.00 : 87d2e: 0f 85 9a 00 00 00 jne 87dce <__strcoll_l+0x6fe> 0.00 : 87d34: 41 83 e8 01 sub $0x1,%r8d 0.00 : 87d38: 83 c7 01 add $0x1,%edi 0.00 : 87d3b: 41 83 c2 01 add $0x1,%r10d 0.00 : 87d3f: 41 83 e9 01 sub $0x1,%r9d 0.00 : 87d43: 48 83 c6 01 add $0x1,%rsi 0.00 : 87d47: 48 83 c1 01 add $0x1,%rcx 0.00 : 87d4b: 45 85 c0 test %r8d,%r8d 0.00 : 87d4e: 7e 05 jle 87d55 <__strcoll_l+0x685> 0.00 : 87d50: 45 85 c9 test %r9d,%r9d 0.00 : 87d53: 7f d1 jg 87d26 <__strcoll_l+0x656> 0.00 : 87d55: 45 84 db test %r11b,%r11b 0.00 : 87d58: 74 2f je 87d89 <__strcoll_l+0x6b9> 0.00 : 87d5a: 45 39 c8 cmp %r9d,%r8d 0.00 : 87d5d: 0f 1f 00 nopl (%rax) 0.00 : 87d60: 74 27 je 87d89 <__strcoll_l+0x6b9> 0.00 : 87d62: 44 89 c3 mov %r8d,%ebx 0.00 : 87d65: 44 29 cb sub %r9d,%ebx 0.00 : 87d68: eb 91 jmp 87cfb <__strcoll_l+0x62b> 0.00 : 87d6a: 48 85 db test %rbx,%rbx 0.00 : 87d6d: 0f 95 c0 setne %al 0.00 : 87d70: 0f b6 d8 movzbl %al,%ebx 0.00 : 87d73: 31 c0 xor %eax,%eax 0.00 : 87d75: 4d 85 ed test %r13,%r13 0.00 : 87d78: 0f 95 c0 setne %al 0.00 : 87d7b: 29 c3 sub %eax,%ebx 0.00 : 87d7d: e9 83 fd ff ff jmpq 87b05 <__strcoll_l+0x435> 0.00 : 87d82: 31 db xor %ebx,%ebx 0.00 : 87d84: e9 6f fd ff ff jmpq 87af8 <__strcoll_l+0x428> 0.00 : 87d89: 31 db xor %ebx,%ebx 0.00 : 87d8b: e9 6b ff ff ff jmpq 87cfb <__strcoll_l+0x62b> 0.00 : 87d90: 48 8d 0d ef 41 0b 00 lea 0xb41ef(%rip),%rcx # 13bf86 <__PRETTY_FUNCTION__.9525> 0.00 : 87d97: 48 8d 35 ea 42 0b 00 lea 0xb42ea(%rip),%rsi # 13c088 <__PRETTY_FUNCTION__.11271+0x17> 0.00 : 87d9e: 48 8d 3d 0b 85 0b 00 lea 0xb850b(%rip),%rdi # 1402b0 <__PRETTY_FUNCTION__.11129+0x28d7> 0.00 : 87da5: ba f5 01 00 00 mov $0x1f5,%edx 0.00 : 87daa: e8 71 3b fa ff callq 2b920 <__assert_fail> 0.00 : 87daf: 48 8d 0d d0 41 0b 00 lea 0xb41d0(%rip),%rcx # 13bf86 <__PRETTY_FUNCTION__.9525> 0.00 : 87db6: 48 8d 35 cb 42 0b 00 lea 0xb42cb(%rip),%rsi # 13c088 <__PRETTY_FUNCTION__.11271+0x17> 0.00 : 87dbd: 48 8d 3d b4 84 0b 00 lea 0xb84b4(%rip),%rdi # 140278 <__PRETTY_FUNCTION__.11129+0x289f> 0.00 : 87dc4: ba f2 01 00 00 mov $0x1f2,%edx 0.00 : 87dc9: e8 52 3b fa ff callq 2b920 <__assert_fail> 0.00 : 87dce: 0f b6 d8 movzbl %al,%ebx 0.00 : 87dd1: 0f b6 c2 movzbl %dl,%eax 0.00 : 87dd4: 29 c3 sub %eax,%ebx 0.00 : 87dd6: e9 20 ff ff ff jmpq 87cfb <__strcoll_l+0x62b> 0.00 : 87ddb: 0f b6 45 b0 movzbl -0x50(%rbp),%eax 0.00 : 87ddf: e9 77 fc ff ff jmpq 87a5b <__strcoll_l+0x38b> 0.00 : 87de4: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 87de9: e9 0a fd ff ff jmpq 87af8 <__strcoll_l+0x428> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b8320 : 0.00 : b8320: 41 57 push %r15 0.00 : b8322: 41 56 push %r14 0.00 : b8324: 41 55 push %r13 0.00 : b8326: 41 54 push %r12 0.00 : b8328: 55 push %rbp 0.00 : b8329: 53 push %rbx 0.00 : b832a: 48 83 ec 78 sub $0x78,%rsp 0.00 : b832e: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : b8333: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : b8338: 48 8d 4c 24 60 lea 0x60(%rsp),%rcx 0.00 : b833d: 8b 46 14 mov 0x14(%rsi),%eax 0.00 : b8340: 48 89 cf mov %rcx,%rdi 0.00 : b8343: 89 44 24 24 mov %eax,0x24(%rsp) 0.00 : b8347: 8b 76 10 mov 0x10(%rsi),%esi 0.00 : b834a: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : b834e: e8 0d 96 ff ff callq b1960 0.00 : b8353: 85 c0 test %eax,%eax 0.00 : b8355: 89 c3 mov %eax,%ebx 0.00 : b8357: 0f 85 12 03 00 00 jne b866f 0.00 : b835d: 48 8b 0c 24 mov (%rsp),%rcx 0.00 : b8361: 8b 54 24 24 mov 0x24(%rsp),%edx 0.00 : b8365: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : b836a: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : b836f: e8 2c 03 00 00 callq b86a0 0.00 : b8374: 85 c0 test %eax,%eax 0.00 : b8376: 89 c3 mov %eax,%ebx 0.00 : b8378: 0f 85 e7 02 00 00 jne b8665 0.00 : b837e: 8b 5c 24 24 mov 0x24(%rsp),%ebx 0.00 : b8382: 85 db test %ebx,%ebx 0.00 : b8384: 0f 8e c9 02 00 00 jle b8653 0.00 : b838a: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : b838f: c7 44 24 20 00 00 00 movl $0x0,0x20(%rsp) 0.00 : b8396: 00 0.00 : b8397: 48 83 c0 18 add $0x18,%rax 0.00 : b839b: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : b83a0: 48 63 44 24 24 movslq 0x24(%rsp),%rax 0.00 : b83a5: 48 c1 e0 03 shl $0x3,%rax 0.00 : b83a9: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : b83ae: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : b83b2: 83 e8 01 sub $0x1,%eax 0.00 : b83b5: 48 98 cltq 0.00 : b83b7: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : b83be: 00 0.00 : b83bf: 48 8d 04 c5 08 00 00 lea 0x8(,%rax,8),%rax 0.00 : b83c6: 00 0.00 : b83c7: 48 89 54 24 50 mov %rdx,0x50(%rsp) 0.00 : b83cc: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : b83d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b83d8: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : b83dd: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : b83e1: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : b83e6: 48 8b 39 mov (%rcx),%rdi 0.00 : b83e9: 83 c0 01 add $0x1,%eax 0.00 : b83ec: b9 00 00 00 00 mov $0x0,%ecx 0.00 : b83f1: 48 83 3c 17 00 cmpq $0x0,(%rdi,%rdx,1) 0.00 : b83f6: 0f 44 c8 cmove %eax,%ecx 0.00 : b83f9: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : b83fe: 89 4c 24 20 mov %ecx,0x20(%rsp) 0.00 : b8402: 3b 88 a8 00 00 00 cmp 0xa8(%rax),%ecx 0.00 : b8408: 0f 8f 72 02 00 00 jg b8680 0.00 : b840e: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : b8413: 83 6c 24 24 01 subl $0x1,0x24(%rsp) 0.00 : b8418: c7 44 24 64 00 00 00 movl $0x0,0x64(%rsp) 0.00 : b841f: 00 0.00 : b8420: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : b8425: 48 8b 82 88 00 00 00 mov 0x88(%rdx),%rax 0.00 : b842c: 48 8b 04 08 mov (%rax,%rcx,1),%rax 0.00 : b8430: 48 85 c0 test %rax,%rax 0.00 : b8433: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : b8438: 0f 84 da 01 00 00 je b8618 0.00 : b843e: 48 8b 42 70 mov 0x70(%rdx),%rax 0.00 : b8442: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : b8447: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : b844c: 8b 42 1c mov 0x1c(%rdx),%eax 33.33 : b844f: 85 c0 test %eax,%eax 0.00 : b8451: 0f 8e c1 01 00 00 jle b8618 0.00 : b8457: 45 31 ff xor %r15d,%r15d 0.00 : b845a: 45 31 f6 xor %r14d,%r14d 0.00 : b845d: e9 94 00 00 00 jmpq b84f6 0.00 : b8462: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b8468: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : b846d: 8b 54 24 24 mov 0x24(%rsp),%edx 0.00 : b8471: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : b8476: 48 03 18 add (%rax),%rbx 0.00 : b8479: 48 89 de mov %rbx,%rsi 0.00 : b847c: e8 5f ba ff ff callq b3ee0 33.33 : b8481: 85 c0 test %eax,%eax 0.00 : b8483: 74 5a je b84df 0.00 : b8485: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : b848a: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : b848f: 48 8b 02 mov (%rdx),%rax 0.00 : b8492: 48 8b 14 08 mov (%rax,%rcx,1),%rdx 0.00 : b8496: 48 85 d2 test %rdx,%rdx 0.00 : b8499: 74 44 je b84df 0.00 : b849b: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : b84a0: 48 8d 7a 08 lea 0x8(%rdx),%rdi 0.00 : b84a4: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : b84a8: 42 8b 34 a8 mov (%rax,%r13,4),%esi 0.00 : b84ac: e8 6f 89 ff ff callq b0e20 0.00 : b84b1: 85 c0 test %eax,%eax 0.00 : b84b3: 74 2a je b84df 0.00 : b84b5: bd 01 00 00 00 mov $0x1,%ebp 0.00 : b84ba: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : b84bf: 8b 40 1c mov 0x1c(%rax),%eax 0.00 : b84c2: 85 c0 test %eax,%eax 0.00 : b84c4: 0f 85 ee 00 00 00 jne b85b8 0.00 : b84ca: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : b84ce: 44 89 e6 mov %r12d,%esi 0.00 : b84d1: e8 6a a4 ff ff callq b2940 0.00 : b84d6: 83 c0 01 add $0x1,%eax 0.00 : b84d9: 0f 84 81 01 00 00 je b8660 0.00 : b84df: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx 0.00 : b84e4: 41 83 c7 01 add $0x1,%r15d 0.00 : b84e8: 49 83 c6 04 add $0x4,%r14 0.00 : b84ec: 44 3b 79 1c cmp 0x1c(%rcx),%r15d 0.00 : b84f0: 0f 8d 22 01 00 00 jge b8618 0.00 : b84f6: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx 0.00 : b84fb: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : b8500: 48 8b 41 20 mov 0x20(%rcx),%rax 33.33 : b8504: 46 8b 24 30 mov (%rax,%r14,1),%r12d 0.00 : b8508: 48 8b 02 mov (%rdx),%rax 0.00 : b850b: 4d 63 ec movslq %r12d,%r13 0.00 : b850e: 4c 89 eb mov %r13,%rbx 0.00 : b8511: 48 c1 e3 04 shl $0x4,%rbx 0.00 : b8515: f6 44 18 0a 10 testb $0x10,0xa(%rax,%rbx,1) 0.00 : b851a: 0f 84 48 ff ff ff je b8468 0.00 : b8520: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : b8525: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : b852a: 44 89 e6 mov %r12d,%esi 0.00 : b852d: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : b8532: 8b 49 14 mov 0x14(%rcx),%ecx 0.00 : b8535: 89 4c 24 44 mov %ecx,0x44(%rsp) 0.00 : b8539: 48 8b 40 70 mov 0x70(%rax),%rax 0.00 : b853d: 8b 4c 24 24 mov 0x24(%rsp),%ecx 0.00 : b8541: 48 89 c7 mov %rax,%rdi 0.00 : b8544: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : b8549: e8 e2 de ff ff callq b6430 0.00 : b854e: 83 f8 00 cmp $0x0,%eax 0.00 : b8551: 89 c5 mov %eax,%ebp 0.00 : b8553: 0f 8e 9f 00 00 00 jle b85f8 0.00 : b8559: 8b 54 24 24 mov 0x24(%rsp),%edx 0.00 : b855d: 8d 44 15 00 lea 0x0(%rbp,%rdx,1),%eax 0.00 : b8561: 39 44 24 44 cmp %eax,0x44(%rsp) 0.00 : b8565: 0f 8c 4f ff ff ff jl b84ba 0.00 : b856b: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : b8570: 48 63 d0 movslq %eax,%rdx 0.00 : b8573: 48 8b 01 mov (%rcx),%rax 0.00 : b8576: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : b857a: 48 85 d2 test %rdx,%rdx 0.00 : b857d: 0f 84 e5 fe ff ff je b8468 0.00 : b8583: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : b8588: 48 8d 7a 08 lea 0x8(%rdx),%rdi 0.00 : b858c: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : b8590: 42 8b 34 a8 mov (%rax,%r13,4),%esi 0.00 : b8594: e8 87 88 ff ff callq b0e20 0.00 : b8599: 85 c0 test %eax,%eax 0.00 : b859b: 0f 84 c7 fe ff ff je b8468 0.00 : b85a1: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : b85a6: 8b 40 1c mov 0x1c(%rax),%eax 0.00 : b85a9: 85 c0 test %eax,%eax 0.00 : b85ab: 0f 84 19 ff ff ff je b84ca 0.00 : b85b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b85b8: 8b 54 24 24 mov 0x24(%rsp),%edx 0.00 : b85bc: 44 8b 4c 24 24 mov 0x24(%rsp),%r9d 0.00 : b85c1: 45 89 e0 mov %r12d,%r8d 0.00 : b85c4: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : b85c9: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : b85ce: 8d 4c 15 00 lea 0x0(%rbp,%rdx,1),%ecx 0.00 : b85d2: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : b85d7: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : b85db: 42 8b 14 a8 mov (%rax,%r13,4),%edx 0.00 : b85df: e8 7c 91 ff ff callq b1760 0.00 : b85e4: 85 c0 test %eax,%eax 0.00 : b85e6: 0f 85 f3 fe ff ff jne b84df 0.00 : b85ec: e9 d9 fe ff ff jmpq b84ca 0.00 : b85f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b85f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b85ff: 00 0.00 : b8600: 0f 85 b4 fe ff ff jne b84ba 0.00 : b8606: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b860d: 00 00 00 0.00 : b8610: e9 53 fe ff ff jmpq b8468 0.00 : b8615: 0f 1f 00 nopl (%rax) 0.00 : b8618: 48 8b 0c 24 mov (%rsp),%rcx 0.00 : b861c: 8b 54 24 24 mov 0x24(%rsp),%edx 0.00 : b8620: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : b8625: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : b862a: e8 71 00 00 00 callq b86a0 0.00 : b862f: 85 c0 test %eax,%eax 0.00 : b8631: 75 62 jne b8695 0.00 : b8633: 44 8b 5c 24 24 mov 0x24(%rsp),%r11d 0.00 : b8638: 48 83 6c 24 48 08 subq $0x8,0x48(%rsp) 0.00 : b863e: 48 83 6c 24 50 08 subq $0x8,0x50(%rsp) 0.00 : b8644: 48 83 6c 24 58 08 subq $0x8,0x58(%rsp) 0.00 : b864a: 45 85 db test %r11d,%r11d 0.00 : b864d: 0f 8f 85 fd ff ff jg b83d8 0.00 : b8653: 31 db xor %ebx,%ebx 0.00 : b8655: eb 0e jmp b8665 0.00 : b8657: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b865e: 00 00 0.00 : b8660: bb 0c 00 00 00 mov $0xc,%ebx 0.00 : b8665: 48 8b 7c 24 68 mov 0x68(%rsp),%rdi 0.00 : b866a: e8 31 62 f6 ff callq 1e8a0 0.00 : b866f: 48 83 c4 78 add $0x78,%rsp 0.00 : b8673: 89 d8 mov %ebx,%eax 0.00 : b8675: 5b pop %rbx 0.00 : b8676: 5d pop %rbp 0.00 : b8677: 41 5c pop %r12 0.00 : b8679: 41 5d pop %r13 0.00 : b867b: 41 5e pop %r14 0.00 : b867d: 41 5f pop %r15 0.00 : b867f: c3 retq 0.00 : b8680: 31 f6 xor %esi,%esi 0.00 : b8682: 31 db xor %ebx,%ebx 0.00 : b8684: e8 e7 ad fc ff callq 83470 <__GI_memset> 0.00 : b8689: 48 8b 7c 24 68 mov 0x68(%rsp),%rdi 0.00 : b868e: e8 0d 62 f6 ff callq 1e8a0 0.00 : b8693: eb da jmp b866f 0.00 : b8695: 89 c3 mov %eax,%ebx 0.00 : b8697: eb cc jmp b8665 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000e84d0 <__unregister_atfork>: 66.67 : e84d0: 55 push %rbp 33.33 : e84d1: 48 89 e5 mov %rsp,%rbp 0.00 : e84d4: 53 push %rbx 0.00 : e84d5: 48 89 fb mov %rdi,%rbx 0.00 : e84d8: 48 83 ec 08 sub $0x8,%rsp 0.00 : e84dc: 4c 8b 15 8d ef 28 00 mov 0x28ef8d(%rip),%r10 # 377470 <__fork_handlers> 0.00 : e84e3: 4d 85 d2 test %r10,%r10 0.00 : e84e6: 74 25 je e850d <__unregister_atfork+0x3d> 0.00 : e84e8: 45 31 c9 xor %r9d,%r9d 0.00 : e84eb: 49 39 7a 20 cmp %rdi,0x20(%r10) 0.00 : e84ef: 75 11 jne e8502 <__unregister_atfork+0x32> 0.00 : e84f1: eb 23 jmp e8516 <__unregister_atfork+0x46> 0.00 : e84f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : e84f8: 49 39 5a 20 cmp %rbx,0x20(%r10) 0.00 : e84fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : e8500: 74 11 je e8513 <__unregister_atfork+0x43> 0.00 : e8502: 4c 89 d0 mov %r10,%rax 0.00 : e8505: 4d 8b 12 mov (%r10),%r10 0.00 : e8508: 4d 85 d2 test %r10,%r10 0.00 : e850b: 75 eb jne e84f8 <__unregister_atfork+0x28> 0.00 : e850d: 48 8b 5d f8 mov -0x8(%rbp),%rbx 0.00 : e8511: c9 leaveq 0.00 : e8512: c3 retq 0.00 : e8513: 49 89 c1 mov %rax,%r9 0.00 : e8516: ba 01 00 00 00 mov $0x1,%edx 0.00 : e851b: 31 c0 xor %eax,%eax 0.00 : e851d: 89 d6 mov %edx,%esi 0.00 : e851f: 83 3d 8e f1 28 00 00 cmpl $0x0,0x28f18e(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : e8526: 74 10 je e8538 <__unregister_atfork+0x68> 0.00 : e8528: f0 0f b1 35 90 d2 28 lock cmpxchg %esi,0x28d290(%rip) # 3757c0 <__fork_lock> 0.00 : e852f: 00 0.00 : e8530: 0f 85 0e 01 00 00 jne e8644 <_L_lock_64> 0.00 : e8536: eb 0d jmp e8545 <__unregister_atfork+0x75> 0.00 : e8538: 0f b1 35 81 d2 28 00 cmpxchg %esi,0x28d281(%rip) # 3757c0 <__fork_lock> 0.00 : e853f: 0f 85 ff 00 00 00 jne e8644 <_L_lock_64> 0.00 : e8545: 45 31 c0 xor %r8d,%r8d 0.00 : e8548: eb 11 jmp e855b <__unregister_atfork+0x8b> 0.00 : e854a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : e8550: 4d 89 d1 mov %r10,%r9 0.00 : e8553: 4d 8b 12 mov (%r10),%r10 0.00 : e8556: 4d 85 d2 test %r10,%r10 0.00 : e8559: 74 34 je e858f <__unregister_atfork+0xbf> 0.00 : e855b: 49 39 5a 20 cmp %rbx,0x20(%r10) 0.00 : e855f: 75 ef jne e8550 <__unregister_atfork+0x80> 0.00 : e8561: 4d 85 c9 test %r9,%r9 0.00 : e8564: 0f 84 ab 00 00 00 je e8615 <__unregister_atfork+0x145> 0.00 : e856a: 49 8b 02 mov (%r10),%rax 0.00 : e856d: 49 89 01 mov %rax,(%r9) 0.00 : e8570: 48 83 ec 20 sub $0x20,%rsp 0.00 : e8574: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : e8579: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : e857d: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : e8581: 4c 89 10 mov %r10,(%rax) 0.00 : e8584: 49 89 c0 mov %rax,%r8 0.00 : e8587: 4d 8b 12 mov (%r10),%r10 0.00 : e858a: 4d 85 d2 test %r10,%r10 0.00 : e858d: 75 cc jne e855b <__unregister_atfork+0x8b> 0.00 : e858f: 83 3d 1e f1 28 00 00 cmpl $0x0,0x28f11e(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : e8596: 74 0f je e85a7 <__unregister_atfork+0xd7> 0.00 : e8598: f0 ff 0d 21 d2 28 00 lock decl 0x28d221(%rip) # 3757c0 <__fork_lock> 0.00 : e859f: 0f 85 be 00 00 00 jne e8663 <_L_unlock_111> 0.00 : e85a5: eb 0c jmp e85b3 <__unregister_atfork+0xe3> 0.00 : e85a7: ff 0d 13 d2 28 00 decl 0x28d213(%rip) # 3757c0 <__fork_lock> 0.00 : e85ad: 0f 85 b0 00 00 00 jne e8663 <_L_unlock_111> 0.00 : e85b3: 4d 85 c0 test %r8,%r8 0.00 : e85b6: 0f 84 51 ff ff ff je e850d <__unregister_atfork+0x3d> 0.00 : e85bc: 41 b9 ca 00 00 00 mov $0xca,%r9d 0.00 : e85c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : e85c8: 49 8b 00 mov (%r8),%rax 0.00 : e85cb: c7 40 2c 01 00 00 00 movl $0x1,0x2c(%rax) 0.00 : e85d2: 49 8b 00 mov (%r8),%rax 0.00 : e85d5: f0 ff 48 28 lock decl 0x28(%rax) 0.00 : e85d9: 49 8b 00 mov (%r8),%rax 0.00 : e85dc: 8b 50 28 mov 0x28(%rax),%edx 0.00 : e85df: 85 d2 test %edx,%edx 0.00 : e85e1: 74 23 je e8606 <__unregister_atfork+0x136> 0.00 : e85e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : e85e8: 45 31 d2 xor %r10d,%r10d 0.00 : e85eb: 64 8b 34 25 48 00 00 mov %fs:0x48,%esi 0.00 : e85f2: 00 0.00 : e85f3: 48 8d 78 28 lea 0x28(%rax),%rdi 0.00 : e85f7: 44 89 c8 mov %r9d,%eax 0.00 : e85fa: 0f 05 syscall 0.00 : e85fc: 49 8b 00 mov (%r8),%rax 0.00 : e85ff: 8b 50 28 mov 0x28(%rax),%edx 0.00 : e8602: 85 d2 test %edx,%edx 0.00 : e8604: 75 e2 jne e85e8 <__unregister_atfork+0x118> 0.00 : e8606: 4d 8b 40 08 mov 0x8(%r8),%r8 0.00 : e860a: 4d 85 c0 test %r8,%r8 0.00 : e860d: 75 b9 jne e85c8 <__unregister_atfork+0xf8> 0.00 : e860f: 48 8b 5d f8 mov -0x8(%rbp),%rbx 0.00 : e8613: c9 leaveq 0.00 : e8614: c3 retq 0.00 : e8615: 49 8b 12 mov (%r10),%rdx 0.00 : e8618: 4c 89 d0 mov %r10,%rax 0.00 : e861b: 64 83 3c 25 18 00 00 cmpl $0x0,%fs:0x18 0.00 : e8622: 00 00 0.00 : e8624: 74 01 je e8627 <__unregister_atfork+0x157> 0.00 : e8626: f0 48 0f b1 15 41 ee lock cmpxchg %rdx,0x28ee41(%rip) # 377470 <__fork_handlers> 0.00 : e862d: 28 00 0.00 : e862f: 49 39 c2 cmp %rax,%r10 0.00 : e8632: 0f 84 38 ff ff ff je e8570 <__unregister_atfork+0xa0> 0.00 : e8638: 4c 8b 15 31 ee 28 00 mov 0x28ee31(%rip),%r10 # 377470 <__fork_handlers> 0.00 : e863f: e9 17 ff ff ff jmpq e855b <__unregister_atfork+0x8b> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000b60 : 100.00 : b60: 83 47 04 01 addl $0x1,0x4(%rdi) Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 57.14 ??:0 28.57 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000088c0 <_dl_cache_libcmp>: 0.00 : 88c0: 0f b6 0f movzbl (%rdi),%ecx 0.00 : 88c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 88c8: 84 c9 test %cl,%cl 0.00 : 88ca: 0f 84 b2 00 00 00 je 8982 <_dl_cache_libcmp+0xc2> 0.00 : 88d0: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 88d3: 3c 09 cmp $0x9,%al 0.00 : 88d5: 0f 87 89 00 00 00 ja 8964 <_dl_cache_libcmp+0xa4> 0.00 : 88db: 0f b6 16 movzbl (%rsi),%edx 0.00 : 88de: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 88e1: 3c 09 cmp $0x9,%al 0.00 : 88e3: 0f 87 a1 00 00 00 ja 898a <_dl_cache_libcmp+0xca> 0.00 : 88e9: 48 83 c7 01 add $0x1,%rdi 0.00 : 88ed: 0f be c1 movsbl %cl,%eax 0.00 : 88f0: 48 83 c6 01 add $0x1,%rsi 0.00 : 88f4: 0f b6 0f movzbl (%rdi),%ecx 0.00 : 88f7: 44 8d 48 d0 lea -0x30(%rax),%r9d 0.00 : 88fb: 0f be c2 movsbl %dl,%eax 0.00 : 88fe: 44 8d 40 d0 lea -0x30(%rax),%r8d 0.00 : 8902: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 8905: 3c 09 cmp $0x9,%al 0.00 : 8907: 77 3f ja 8948 <_dl_cache_libcmp+0x88> 0.00 : 8909: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8910: 48 83 c7 01 add $0x1,%rdi 0.00 : 8914: 0f be d1 movsbl %cl,%edx 0.00 : 8917: 43 8d 04 89 lea (%r9,%r9,4),%eax 0.00 : 891b: 0f b6 0f movzbl (%rdi),%ecx 0.00 : 891e: 44 8d 4c 42 d0 lea -0x30(%rdx,%rax,2),%r9d 0.00 : 8923: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 8926: 3c 09 cmp $0x9,%al 0.00 : 8928: 76 e6 jbe 8910 <_dl_cache_libcmp+0x50> 0.00 : 892a: 0f b6 16 movzbl (%rsi),%edx 0.00 : 892d: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 8930: 3c 09 cmp $0x9,%al 0.00 : 8932: 77 1e ja 8952 <_dl_cache_libcmp+0x92> 0.00 : 8934: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8938: 43 8d 04 80 lea (%r8,%r8,4),%eax 0.00 : 893c: 0f be d2 movsbl %dl,%edx 0.00 : 893f: 48 83 c6 01 add $0x1,%rsi 0.00 : 8943: 44 8d 44 42 d0 lea -0x30(%rdx,%rax,2),%r8d 0.00 : 8948: 0f b6 16 movzbl (%rsi),%edx 0.00 : 894b: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 894e: 3c 09 cmp $0x9,%al 0.00 : 8950: 76 e6 jbe 8938 <_dl_cache_libcmp+0x78> 0.00 : 8952: 45 39 c1 cmp %r8d,%r9d 0.00 : 8955: 0f 84 6d ff ff ff je 88c8 <_dl_cache_libcmp+0x8> 0.00 : 895b: 44 89 ca mov %r9d,%edx 0.00 : 895e: 44 29 c2 sub %r8d,%edx 0.00 : 8961: 89 d0 mov %edx,%eax 0.00 : 8963: c3 retq 57.14 : 8964: 44 0f b6 06 movzbl (%rsi),%r8d 28.57 : 8968: 41 8d 40 d0 lea -0x30(%r8),%eax 0.00 : 896c: 3c 09 cmp $0x9,%al 0.00 : 896e: 76 2d jbe 899d <_dl_cache_libcmp+0xdd> 14.29 : 8970: 44 38 c1 cmp %r8b,%cl 0.00 : 8973: 75 1d jne 8992 <_dl_cache_libcmp+0xd2> 0.00 : 8975: 48 83 c7 01 add $0x1,%rdi 0.00 : 8979: 48 83 c6 01 add $0x1,%rsi 0.00 : 897d: e9 3e ff ff ff jmpq 88c0 <_dl_cache_libcmp> 0.00 : 8982: 0f be 16 movsbl (%rsi),%edx 0.00 : 8985: f7 da neg %edx 0.00 : 8987: 89 d0 mov %edx,%eax 0.00 : 8989: c3 retq 0.00 : 898a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 898f: 89 d0 mov %edx,%eax 0.00 : 8991: c3 retq 0.00 : 8992: 0f be d1 movsbl %cl,%edx 0.00 : 8995: 41 0f be c0 movsbl %r8b,%eax 0.00 : 8999: 29 c2 sub %eax,%edx 0.00 : 899b: eb c4 jmp 8961 <_dl_cache_libcmp+0xa1> 0.00 : 899d: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 89a2: eb bd jmp 8961 <_dl_cache_libcmp+0xa1> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 22.22 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000c240 <_dl_map_object_deps>: 11.11 : c240: 55 push %rbp 22.22 : c241: 41 89 d3 mov %edx,%r11d 0.00 : c244: 41 8d 43 02 lea 0x2(%r11),%eax 0.00 : c248: 48 89 e5 mov %rsp,%rbp 0.00 : c24b: 41 57 push %r15 0.00 : c24d: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : c251: 41 56 push %r14 0.00 : c253: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : c25a: 00 0.00 : c25b: 41 55 push %r13 0.00 : c25d: 48 c1 e8 04 shr $0x4,%rax 0.00 : c261: 41 54 push %r12 0.00 : c263: 48 c1 e0 04 shl $0x4,%rax 0.00 : c267: 53 push %rbx 0.00 : c268: 48 81 ec 18 01 00 00 sub $0x118,%rsp 0.00 : c26f: 48 89 bd 08 ff ff ff mov %rdi,-0xf8(%rbp) 0.00 : c276: 89 8d 04 ff ff ff mov %ecx,-0xfc(%rbp) 0.00 : c27c: 48 29 c4 sub %rax,%rsp 0.00 : c27f: 44 89 85 00 ff ff ff mov %r8d,-0x100(%rbp) 0.00 : c286: 4c 8d 54 24 0f lea 0xf(%rsp),%r10 0.00 : c28b: 49 83 e2 f0 and $0xfffffffffffffff0,%r10 0.00 : c28f: 49 8d 42 18 lea 0x18(%r10),%rax 0.00 : c293: 4c 89 95 28 ff ff ff mov %r10,-0xd8(%rbp) 0.00 : c29a: 41 c7 02 00 00 00 00 movl $0x0,(%r10) 0.00 : c2a1: 49 89 7a 08 mov %rdi,0x8(%r10) 0.00 : c2a5: 49 89 42 10 mov %rax,0x10(%r10) 0.00 : c2a9: 0f b6 87 14 03 00 00 movzbl 0x314(%rdi),%eax 0.00 : c2b0: 83 e0 9f and $0xffffff9f,%eax 0.00 : c2b3: 83 c8 20 or $0x20,%eax 0.00 : c2b6: 45 85 db test %r11d,%r11d 0.00 : c2b9: 88 87 14 03 00 00 mov %al,0x314(%rdi) 0.00 : c2bf: b8 01 00 00 00 mov $0x1,%eax 0.00 : c2c4: c7 45 88 01 00 00 00 movl $0x1,-0x78(%rbp) 0.00 : c2cb: 74 63 je c330 <_dl_map_object_deps+0xf0> 0.00 : c2cd: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : c2d3: 45 31 c0 xor %r8d,%r8d 0.00 : c2d6: bf 01 00 00 00 mov $0x1,%edi 0.00 : c2db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c2e0: 41 83 c1 01 add $0x1,%r9d 0.00 : c2e4: 48 8d 14 7f lea (%rdi,%rdi,2),%rdx 0.00 : c2e8: 4a 8b 0c c6 mov (%rsi,%r8,8),%rcx 0.00 : c2ec: 44 89 cf mov %r9d,%edi 0.00 : c2ef: 49 83 c0 01 add $0x1,%r8 0.00 : c2f3: 48 8d 04 7f lea (%rdi,%rdi,2),%rax 0.00 : c2f7: 49 8d 14 d2 lea (%r10,%rdx,8),%rdx 0.00 : c2fb: 49 8d 04 c2 lea (%r10,%rax,8),%rax 0.00 : c2ff: c7 02 00 00 00 00 movl $0x0,(%rdx) 0.00 : c305: 48 89 4a 08 mov %rcx,0x8(%rdx) 0.00 : c309: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : c30d: 0f b6 81 14 03 00 00 movzbl 0x314(%rcx),%eax 0.00 : c314: 83 e0 9f and $0xffffff9f,%eax 0.00 : c317: 83 c8 20 or $0x20,%eax 0.00 : c31a: 45 39 c3 cmp %r8d,%r11d 0.00 : c31d: 88 81 14 03 00 00 mov %al,0x314(%rcx) 0.00 : c323: 77 bb ja c2e0 <_dl_map_object_deps+0xa0> 0.00 : c325: 41 83 c3 01 add $0x1,%r11d 0.00 : c329: 44 89 5d 88 mov %r11d,-0x78(%rbp) 0.00 : c32d: 44 89 d8 mov %r11d,%eax 0.00 : c330: 83 e8 01 sub $0x1,%eax 0.00 : c333: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : c337: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : c33b: 49 8d 04 c2 lea (%r10,%rax,8),%rax 0.00 : c33f: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) 0.00 : c346: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : c34d: 00 0.00 : c34e: 48 8d 45 90 lea -0x70(%rbp),%rax 0.00 : c352: 8b 1d 2c 3e 21 00 mov 0x213e2c(%rip),%ebx # 220184 0.00 : c358: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : c35f: 00 0.00 : c360: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) 0.00 : c367: 48 8d 45 b8 lea -0x48(%rbp),%rax 0.00 : c36b: c7 05 0f 3e 21 00 00 movl $0x0,0x213e0f(%rip) # 220184 0.00 : c372: 00 00 00 0.00 : c375: 4c 89 55 80 mov %r10,-0x80(%rbp) 0.00 : c379: 48 89 95 e8 fe ff ff mov %rdx,-0x118(%rbp) 0.00 : c380: 89 9d 3c ff ff ff mov %ebx,-0xc4(%rbp) 0.00 : c386: 48 8d 5d c0 lea -0x40(%rbp),%rbx 0.00 : c38a: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) 0.00 : c391: 48 89 9d e0 fe ff ff mov %rbx,-0x120(%rbp) 11.11 : c398: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : c39c: 4c 8b 7a 08 mov 0x8(%rdx),%r15 0.00 : c3a0: c7 02 01 00 00 00 movl $0x1,(%rdx) 0.00 : c3a6: 49 83 bf b8 02 00 00 cmpq $0x0,0x2b8(%r15) 0.00 : c3ad: 00 11.11 : c3ae: 0f 84 30 0a 00 00 je cde4 <_dl_map_object_deps+0xba4> 0.00 : c3b4: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : c3bb: 00 00 00 00 0.00 : c3bf: 49 83 7f 48 00 cmpq $0x0,0x48(%r15) 0.00 : c3c4: 0f 84 44 01 00 00 je c50e <_dl_map_object_deps+0x2ce> 0.00 : c3ca: 49 8b 47 68 mov 0x68(%r15),%rax 0.00 : c3ce: 8b 95 00 ff ff ff mov -0x100(%rbp),%edx 0.00 : c3d4: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : c3d8: 4c 89 7d 90 mov %r15,-0x70(%rbp) 0.00 : c3dc: 89 55 9c mov %edx,-0x64(%rbp) 0.00 : c3df: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : c3e6: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : c3ea: 8b 85 04 ff ff ff mov -0xfc(%rbp),%eax 0.00 : c3f0: 89 45 98 mov %eax,-0x68(%rbp) 0.00 : c3f3: 4d 8b 67 10 mov 0x10(%r15),%r12 0.00 : c3f7: 49 8b 04 24 mov (%r12),%rax 0.00 : c3fb: 48 85 c0 test %rax,%rax 0.00 : c3fe: 0f 84 26 01 00 00 je c52a <_dl_map_object_deps+0x2ea> 0.00 : c404: 48 8b 5d 80 mov -0x80(%rbp),%rbx 0.00 : c408: 45 31 f6 xor %r14d,%r14d 0.00 : c40b: 48 89 9d 58 ff ff ff mov %rbx,-0xa8(%rbp) 0.00 : c412: eb 31 jmp c445 <_dl_map_object_deps+0x205> 0.00 : c414: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : c418: 48 83 bd 48 ff ff ff cmpq $0x0,-0xb8(%rbp) 0.00 : c41f: 00 0.00 : c420: 74 12 je c434 <_dl_map_object_deps+0x1f4> 0.00 : c422: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : c429: 44 89 f0 mov %r14d,%eax 0.00 : c42c: 41 83 c6 01 add $0x1,%r14d 0.00 : c430: 48 89 0c c2 mov %rcx,(%rdx,%rax,8) 0.00 : c434: 49 83 c4 10 add $0x10,%r12 0.00 : c438: 49 8b 04 24 mov (%r12),%rax 0.00 : c43c: 48 85 c0 test %rax,%rax 0.00 : c43f: 0f 84 e8 00 00 00 je c52d <_dl_map_object_deps+0x2ed> 0.00 : c445: 48 83 f8 01 cmp $0x1,%rax 0.00 : c449: 0f 85 f2 05 00 00 jne ca41 <_dl_map_object_deps+0x801> 0.00 : c44f: 48 8b 9d 50 ff ff ff mov -0xb0(%rbp),%rbx 0.00 : c456: 49 03 5c 24 08 add 0x8(%r12),%rbx 0.00 : c45b: be 24 00 00 00 mov $0x24,%esi 0.00 : c460: 48 89 df mov %rbx,%rdi 0.00 : c463: e8 78 a1 00 00 callq 165e0 0.00 : c468: 48 85 c0 test %rax,%rax 0.00 : c46b: 0f 85 b6 04 00 00 jne c927 <_dl_map_object_deps+0x6e7> 0.00 : c471: 48 89 d8 mov %rbx,%rax 0.00 : c474: 4c 8b 85 f0 fe ff ff mov -0x110(%rbp),%r8 0.00 : c47b: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : c482: 48 8d 0d 77 0f 00 00 lea 0xf77(%rip),%rcx # d400 0.00 : c489: 48 8b b5 e0 fe ff ff mov -0x120(%rbp),%rsi 0.00 : c490: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : c497: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : c49b: e8 70 19 00 00 callq de10 <_dl_catch_error> 0.00 : c4a0: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : c4a4: 41 89 c5 mov %eax,%r13d 0.00 : c4a7: 48 85 db test %rbx,%rbx 0.00 : c4aa: 0f 85 3a 07 00 00 jne cbea <_dl_map_object_deps+0x9aa> 0.00 : c4b0: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : c4b4: f6 81 14 03 00 00 60 testb $0x60,0x314(%rcx) 0.00 : c4bb: 0f 85 57 ff ff ff jne c418 <_dl_map_object_deps+0x1d8> 0.00 : c4c1: 48 83 ec 30 sub $0x30,%rsp 0.00 : c4c5: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : c4ca: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : c4ce: 48 89 4a 08 mov %rcx,0x8(%rdx) 0.00 : c4d2: c7 02 00 00 00 00 movl $0x0,(%rdx) 0.00 : c4d8: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : c4df: 00 0.00 : c4e0: 48 8b 9d 30 ff ff ff mov -0xd0(%rbp),%rbx 0.00 : c4e7: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : c4eb: 83 45 88 01 addl $0x1,-0x78(%rbp) 0.00 : c4ef: 0f b6 81 14 03 00 00 movzbl 0x314(%rcx),%eax 0.00 : c4f6: 83 e0 9f and $0xffffff9f,%eax 0.00 : c4f9: 83 c8 20 or $0x20,%eax 0.00 : c4fc: 88 81 14 03 00 00 mov %al,0x314(%rcx) 0.00 : c502: 48 89 95 30 ff ff ff mov %rdx,-0xd0(%rbp) 0.00 : c509: e9 0a ff ff ff jmpq c418 <_dl_map_object_deps+0x1d8> 0.00 : c50e: 49 83 bf e0 01 00 00 cmpq $0x0,0x1e0(%r15) 0.00 : c515: 00 0.00 : c516: 0f 85 ae fe ff ff jne c3ca <_dl_map_object_deps+0x18a> 0.00 : c51c: 49 83 bf d0 01 00 00 cmpq $0x0,0x1d0(%r15) 0.00 : c523: 00 0.00 : c524: 0f 85 a0 fe ff ff jne c3ca <_dl_map_object_deps+0x18a> 0.00 : c52a: 45 31 f6 xor %r14d,%r14d 0.00 : c52d: 48 83 bd 48 ff ff ff cmpq $0x0,-0xb8(%rbp) 0.00 : c534: 00 0.00 : c535: 74 73 je c5aa <_dl_map_object_deps+0x36a> 0.00 : c537: 45 8d 66 01 lea 0x1(%r14),%r12d 0.00 : c53b: 48 8b 9d 48 ff ff ff mov -0xb8(%rbp),%rbx 0.00 : c542: 44 89 f0 mov %r14d,%eax 0.00 : c545: 43 8d 7c 24 01 lea 0x1(%r12,%r12,1),%edi 0.00 : c54a: 48 c7 04 c3 00 00 00 movq $0x0,(%rbx,%rax,8) 0.00 : c551: 00 0.00 : c552: 48 c1 e7 03 shl $0x3,%rdi 0.00 : c556: e8 55 45 ff ff callq ab0 0.00 : c55b: 48 85 c0 test %rax,%rax 0.00 : c55e: 48 89 c3 mov %rax,%rbx 0.00 : c561: 0f 84 eb 0d 00 00 je d352 <_dl_map_object_deps+0x1112> 0.00 : c567: 4c 89 38 mov %r15,(%rax) 0.00 : c56a: 44 89 e0 mov %r12d,%eax 0.00 : c56d: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : c574: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : c57b: 00 0.00 : c57c: 48 8d 7b 08 lea 0x8(%rbx),%rdi 0.00 : c580: 4c 89 e2 mov %r12,%rdx 0.00 : c583: e8 68 ad 00 00 callq 172f0 0.00 : c588: 41 8d 7e 02 lea 0x2(%r14),%edi 0.00 : c58c: 4c 89 e2 mov %r12,%rdx 0.00 : c58f: 48 89 de mov %rbx,%rsi 0.00 : c592: 48 8d 3c fb lea (%rbx,%rdi,8),%rdi 0.00 : c596: e8 55 ad 00 00 callq 172f0 0.00 : c59b: 41 80 8f 15 03 00 00 orb $0x80,0x315(%r15) 0.00 : c5a2: 80 0.00 : c5a3: 49 89 9f b8 03 00 00 mov %rbx,0x3b8(%r15) 0.00 : c5aa: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : c5ae: 44 8b 12 mov (%rdx),%r10d 0.00 : c5b1: 45 85 d2 test %r10d,%r10d 0.00 : c5b4: 0f 84 de fd ff ff je c398 <_dl_map_object_deps+0x158> 0.00 : c5ba: eb 10 jmp c5cc <_dl_map_object_deps+0x38c> 0.00 : c5bc: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : c5c0: 44 8b 08 mov (%rax),%r9d 0.00 : c5c3: 45 85 c9 test %r9d,%r9d 0.00 : c5c6: 0f 84 cc fd ff ff je c398 <_dl_map_object_deps+0x158> 0.00 : c5cc: 48 8b 5d 80 mov -0x80(%rbp),%rbx 0.00 : c5d0: 48 8b 5b 10 mov 0x10(%rbx),%rbx 0.00 : c5d4: 48 85 db test %rbx,%rbx 0.00 : c5d7: 48 89 5d 80 mov %rbx,-0x80(%rbp) 0.00 : c5db: 75 df jne c5bc <_dl_map_object_deps+0x37c> 0.00 : c5dd: 31 ff xor %edi,%edi 0.00 : c5df: 44 8b 05 9e 3b 21 00 mov 0x213b9e(%rip),%r8d # 220184 0.00 : c5e6: 45 85 c0 test %r8d,%r8d 0.00 : c5e9: 0f 84 28 07 00 00 je cd17 <_dl_map_object_deps+0xad7> 0.00 : c5ef: 85 ff test %edi,%edi 0.00 : c5f1: 0f 85 41 0d 00 00 jne d338 <_dl_map_object_deps+0x10f8> 0.00 : c5f7: 48 8b 9d 08 ff ff ff mov -0xf8(%rbp),%rbx 0.00 : c5fe: 48 8b 9b b8 03 00 00 mov 0x3b8(%rbx),%rbx 0.00 : c605: 48 85 db test %rbx,%rbx 0.00 : c608: 48 89 9d 40 ff ff ff mov %rbx,-0xc0(%rbp) 0.00 : c60f: 74 24 je c635 <_dl_map_object_deps+0x3f5> 0.00 : c611: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : c618: 0f b6 82 14 03 00 00 movzbl 0x314(%rdx),%eax 0.00 : c61f: 83 e0 03 and $0x3,%eax 0.00 : c622: 3c 02 cmp $0x2,%al 0.00 : c624: 0f 84 0c 07 00 00 je cd36 <_dl_map_object_deps+0xaf6> 0.00 : c62a: 48 c7 85 40 ff ff ff movq $0x0,-0xc0(%rbp) 0.00 : c631: 00 00 00 00 0.00 : c635: 8b 5d 88 mov -0x78(%rbp),%ebx 0.00 : c638: 8d 7c 1b 01 lea 0x1(%rbx,%rbx,1),%edi 0.00 : c63c: 48 c1 e7 03 shl $0x3,%rdi 0.00 : c640: e8 6b 44 ff ff callq ab0 0.00 : c645: 48 85 c0 test %rax,%rax 0.00 : c648: 49 89 c7 mov %rax,%r15 0.00 : c64b: 0f 84 64 0d 00 00 je d3b5 <_dl_map_object_deps+0x1175> 0.00 : c651: 8b 45 88 mov -0x78(%rbp),%eax 0.00 : c654: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : c65b: 45 31 c9 xor %r9d,%r9d 0.00 : c65e: 83 c0 01 add $0x1,%eax 0.00 : c661: 49 8d 04 c7 lea (%r15,%rax,8),%rax 0.00 : c665: 48 89 82 b8 02 00 00 mov %rax,0x2b8(%rdx) 0.00 : c66c: 8b 5d 88 mov -0x78(%rbp),%ebx 0.00 : c66f: 89 9a c0 02 00 00 mov %ebx,0x2c0(%rdx) 0.00 : c675: 8b 8d 04 ff ff ff mov -0xfc(%rbp),%ecx 0.00 : c67b: 85 c9 test %ecx,%ecx 0.00 : c67d: 0f 85 8d 08 00 00 jne cf10 <_dl_map_object_deps+0xcd0> 0.00 : c683: 48 8b 9d 28 ff ff ff mov -0xd8(%rbp),%rbx 0.00 : c68a: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : c68e: 48 8b 9d 08 ff ff ff mov -0xf8(%rbp),%rbx 0.00 : c695: 44 89 ca mov %r9d,%edx 0.00 : c698: 41 83 c1 01 add $0x1,%r9d 0.00 : c69c: 48 8b 83 b8 02 00 00 mov 0x2b8(%rbx),%rax 0.00 : c6a3: 48 89 0c d0 mov %rcx,(%rax,%rdx,8) 11.11 : c6a7: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : c6ae: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : c6b2: 80 a0 14 03 00 00 9f andb $0x9f,0x314(%rax) 0.00 : c6b9: 48 8b 5a 10 mov 0x10(%rdx),%rbx 0.00 : c6bd: 48 85 db test %rbx,%rbx 0.00 : c6c0: 48 89 9d 28 ff ff ff mov %rbx,-0xd8(%rbp) 0.00 : c6c7: 75 ac jne c675 <_dl_map_object_deps+0x435> 0.00 : c6c9: f6 05 51 25 21 00 04 testb $0x4,0x212551(%rip) # 21ec21 <_rtld_global_ro+0x1> 0.00 : c6d0: 0f 85 c7 09 00 00 jne d09d <_dl_map_object_deps+0xe5d> 0.00 : c6d6: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : c6dd: 48 8b b2 b8 02 00 00 mov 0x2b8(%rdx),%rsi 0.00 : c6e4: 48 8b 1e mov (%rsi),%rbx 0.00 : c6e7: 48 39 d3 cmp %rdx,%rbx 0.00 : c6ea: 48 89 9d 20 ff ff ff mov %rbx,-0xe0(%rbp) 0.00 : c6f1: 0f 85 9f 0c 00 00 jne d396 <_dl_map_object_deps+0x1156> 0.00 : c6f7: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : c6fe: 4c 8b a0 c8 03 00 00 mov 0x3c8(%rax),%r12 0.00 : c705: 4d 85 e4 test %r12,%r12 0.00 : c708: 0f 84 2a 07 00 00 je ce38 <_dl_map_object_deps+0xbf8> 0.00 : c70e: 41 83 f9 01 cmp $0x1,%r9d 0.00 : c712: 76 4d jbe c761 <_dl_map_object_deps+0x521> 0.00 : c714: 41 8d 41 fe lea -0x2(%r9),%eax 0.00 : c718: b9 08 00 00 00 mov $0x8,%ecx 0.00 : c71d: 48 8d 34 c5 10 00 00 lea 0x10(,%rax,8),%rsi 0.00 : c724: 00 0.00 : c725: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : c72c: 48 8b 82 b8 02 00 00 mov 0x2b8(%rdx),%rax 0.00 : c733: 48 8b 14 08 mov (%rax,%rcx,1),%rdx 0.00 : c737: 48 83 c1 08 add $0x8,%rcx 0.00 : c73b: 0f b6 82 14 03 00 00 movzbl 0x314(%rdx),%eax 0.00 : c742: 83 e0 9f and $0xffffff9f,%eax 0.00 : c745: 83 c8 20 or $0x20,%eax 0.00 : c748: 48 39 f1 cmp %rsi,%rcx 0.00 : c74b: 88 82 14 03 00 00 mov %al,0x314(%rdx) 0.00 : c751: 75 d2 jne c725 <_dl_map_object_deps+0x4e5> 0.00 : c753: 48 8b 9d 20 ff ff ff mov -0xe0(%rbp),%rbx 0.00 : c75a: 4c 8b a3 c8 03 00 00 mov 0x3c8(%rbx),%r12 0.00 : c761: 49 8d 44 24 08 lea 0x8(%r12),%rax 0.00 : c766: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : c76d: 41 8b 04 24 mov (%r12),%eax 0.00 : c771: 85 c0 test %eax,%eax 0.00 : c773: 74 2e je c7a3 <_dl_map_object_deps+0x563> 0.00 : c775: 31 db xor %ebx,%ebx 0.00 : c777: 41 89 dd mov %ebx,%r13d 0.00 : c77a: 4b 8b 44 ec 08 mov 0x8(%r12,%r13,8),%rax 0.00 : c77f: f6 80 14 03 00 00 60 testb $0x60,0x314(%rax) 0.00 : c786: 0f 85 e4 04 00 00 jne cc70 <_dl_map_object_deps+0xa30> 0.00 : c78c: 89 da mov %ebx,%edx 0.00 : c78e: 8d 5a 01 lea 0x1(%rdx),%ebx 0.00 : c791: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : c798: 48 8b 82 c8 03 00 00 mov 0x3c8(%rdx),%rax 0.00 : c79f: 39 18 cmp %ebx,(%rax) 0.00 : c7a1: 77 d4 ja c777 <_dl_map_object_deps+0x537> 0.00 : c7a3: 41 83 f9 01 cmp $0x1,%r9d 0.00 : c7a7: 0f 86 c4 08 00 00 jbe d071 <_dl_map_object_deps+0xe31> 0.00 : c7ad: 41 8d 41 fe lea -0x2(%r9),%eax 0.00 : c7b1: ba 08 00 00 00 mov $0x8,%edx 0.00 : c7b6: 48 8d 0c c5 10 00 00 lea 0x10(,%rax,8),%rcx 0.00 : c7bd: 00 0.00 : c7be: 48 8b 9d 20 ff ff ff mov -0xe0(%rbp),%rbx 0.00 : c7c5: 48 8b 83 b8 02 00 00 mov 0x2b8(%rbx),%rax 0.00 : c7cc: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : c7d0: 48 83 c2 08 add $0x8,%rdx 0.00 : c7d4: 80 a0 14 03 00 00 9f andb $0x9f,0x314(%rax) 0.00 : c7db: 48 39 ca cmp %rcx,%rdx 0.00 : c7de: 75 de jne c7be <_dl_map_object_deps+0x57e> 0.00 : c7e0: 44 89 c8 mov %r9d,%eax 0.00 : c7e3: 4c 89 ff mov %r15,%rdi 0.00 : c7e6: 48 c1 e0 03 shl $0x3,%rax 0.00 : c7ea: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : c7f1: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : c7f8: 48 8b 95 10 ff ff ff mov -0xf0(%rbp),%rdx 0.00 : c7ff: 48 8b b0 b8 02 00 00 mov 0x2b8(%rax),%rsi 0.00 : c806: 44 89 8d c8 fe ff ff mov %r9d,-0x138(%rbp) 0.00 : c80d: e8 de aa 00 00 callq 172f0 0.00 : c812: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : c819: 49 8d 57 08 lea 0x8(%r15),%rdx 0.00 : c81d: c7 45 8c 01 00 00 00 movl $0x1,-0x74(%rbp) 0.00 : c824: 48 c7 85 78 ff ff ff movq $0x8,-0x88(%rbp) 0.00 : c82b: 08 00 00 00 0.00 : c82f: 48 89 95 70 ff ff ff mov %rdx,-0x90(%rbp) 0.00 : c836: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : c83d: 48 8b 9d 78 ff ff ff mov -0x88(%rbp),%rbx 0.00 : c844: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : c84a: 48 8b 82 b8 02 00 00 mov 0x2b8(%rdx),%rax 0.00 : c851: ba 01 00 00 00 mov $0x1,%edx 0.00 : c856: 4c 8b 24 18 mov (%rax,%rbx,1),%r12 0.00 : c85a: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : c861: 4c 39 20 cmp %r12,(%rax) 0.00 : c864: 74 18 je c87e <_dl_map_object_deps+0x63e> 0.00 : c866: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : c86d: 00 00 00 0.00 : c870: 83 c2 01 add $0x1,%edx 0.00 : c873: 89 d0 mov %edx,%eax 0.00 : c875: 4d 39 24 c7 cmp %r12,(%r15,%rax,8) 0.00 : c879: 75 f5 jne c870 <_dl_map_object_deps+0x630> 11.11 : c87b: 41 89 d0 mov %edx,%r8d 0.00 : c87e: 44 8d 6a 01 lea 0x1(%rdx),%r13d 0.00 : c882: 45 39 e9 cmp %r13d,%r9d 0.00 : c885: 76 3f jbe c8c6 <_dl_map_object_deps+0x686> 0.00 : c887: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : c88e: 00 00 0.00 : c890: 44 89 e8 mov %r13d,%eax 0.00 : c893: 4d 8b 34 c7 mov (%r15,%rax,8),%r14 0.00 : c897: 49 8b 96 b8 03 00 00 mov 0x3b8(%r14),%rdx 0.00 : c89e: 48 85 d2 test %rdx,%rdx 0.00 : c8a1: 75 12 jne c8b5 <_dl_map_object_deps+0x675> 0.00 : c8a3: eb 18 jmp c8bd <_dl_map_object_deps+0x67d> 0.00 : c8a5: 0f 1f 00 nopl (%rax) 11.11 : c8a8: 49 39 c4 cmp %rax,%r12 0.00 : c8ab: 0f 84 cf 04 00 00 je cd80 <_dl_map_object_deps+0xb40> 0.00 : c8b1: 48 83 c2 08 add $0x8,%rdx 0.00 : c8b5: 48 8b 02 mov (%rdx),%rax 0.00 : c8b8: 48 85 c0 test %rax,%rax 0.00 : c8bb: 75 eb jne c8a8 <_dl_map_object_deps+0x668> 0.00 : c8bd: 41 83 c5 01 add $0x1,%r13d 0.00 : c8c1: 45 39 e9 cmp %r13d,%r9d 0.00 : c8c4: 77 ca ja c890 <_dl_map_object_deps+0x650> 11.11 : c8c6: 83 45 8c 01 addl $0x1,-0x74(%rbp) 0.00 : c8ca: 48 83 85 78 ff ff ff addq $0x8,-0x88(%rbp) 0.00 : c8d1: 08 0.00 : c8d2: 44 3b 4d 8c cmp -0x74(%rbp),%r9d 0.00 : c8d6: 0f 87 5a ff ff ff ja c836 <_dl_map_object_deps+0x5f6> 0.00 : c8dc: 48 8b 95 10 ff ff ff mov -0xf0(%rbp),%rdx 0.00 : c8e3: 49 c7 04 17 00 00 00 movq $0x0,(%r15,%rdx,1) 0.00 : c8ea: 00 0.00 : c8eb: 48 8b 9d 20 ff ff ff mov -0xe0(%rbp),%rbx 0.00 : c8f2: 80 8b 15 03 00 00 80 orb $0x80,0x315(%rbx) 0.00 : c8f9: 4c 89 bb b8 03 00 00 mov %r15,0x3b8(%rbx) 0.00 : c900: 48 83 bd 40 ff ff ff cmpq $0x0,-0xc0(%rbp) 0.00 : c907: 00 0.00 : c908: 74 0e je c918 <_dl_map_object_deps+0x6d8> 0.00 : c90a: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : c911: 48 89 83 c0 03 00 00 mov %rax,0x3c0(%rbx) 0.00 : c918: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : c91c: 5b pop %rbx 0.00 : c91d: 41 5c pop %r12 0.00 : c91f: 41 5d pop %r13 0.00 : c921: 41 5e pop %r14 0.00 : c923: 41 5f pop %r15 0.00 : c925: c9 leaveq 0.00 : c926: c3 retq 0.00 : c927: 31 f6 xor %esi,%esi 0.00 : c929: 48 89 c7 mov %rax,%rdi 0.00 : c92c: e8 ff 84 ff ff callq 4e30 <_dl_dst_count> 0.00 : c931: 48 85 c0 test %rax,%rax 0.00 : c934: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : c93b: 0f 84 30 fb ff ff je c471 <_dl_map_object_deps+0x231> 0.00 : c941: 44 8b 2d 08 25 21 00 mov 0x212508(%rip),%r13d # 21ee50 <__libc_enable_secure> 0.00 : c948: 45 85 ed test %r13d,%r13d 0.00 : c94b: 0f 85 80 04 00 00 jne cdd1 <_dl_map_object_deps+0xb91> 0.00 : c951: 48 89 df mov %rbx,%rdi 0.00 : c954: e8 17 9e 00 00 callq 16770 <__GI_strlen> 0.00 : c959: 49 8b bf 38 03 00 00 mov 0x338(%r15),%rdi 0.00 : c960: 49 89 c5 mov %rax,%r13 0.00 : c963: 48 85 ff test %rdi,%rdi 0.00 : c966: 0f 84 8c 00 00 00 je c9f8 <_dl_map_object_deps+0x7b8> 0.00 : c96c: 48 83 ff ff cmp $0xffffffffffffffff,%rdi 0.00 : c970: 0f 84 b4 00 00 00 je ca2a <_dl_map_object_deps+0x7ea> 0.00 : c976: e8 f5 9d 00 00 callq 16770 <__GI_strlen> 0.00 : c97b: 48 89 c2 mov %rax,%rdx 0.00 : c97e: 48 83 3d aa 22 21 00 cmpq $0x5,0x2122aa(%rip) # 21ec30 <_rtld_global_ro+0x10> 0.00 : c985: 05 0.00 : c986: b8 05 00 00 00 mov $0x5,%eax 0.00 : c98b: 48 89 de mov %rbx,%rsi 0.00 : c98e: 48 0f 43 05 9a 22 21 cmovae 0x21229a(%rip),%rax # 21ec30 <_rtld_global_ro+0x10> 0.00 : c995: 00 0.00 : c996: 4c 89 ff mov %r15,%rdi 0.00 : c999: 48 39 d0 cmp %rdx,%rax 0.00 : c99c: 48 0f 42 c2 cmovb %rdx,%rax 0.00 : c9a0: 31 c9 xor %ecx,%ecx 0.00 : c9a2: 48 83 e8 04 sub $0x4,%rax 0.00 : c9a6: 48 0f af 85 60 ff ff imul -0xa0(%rbp),%rax 0.00 : c9ad: ff 0.00 : c9ae: 49 8d 44 05 1e lea 0x1e(%r13,%rax,1),%rax 0.00 : c9b3: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : c9b7: 48 29 c4 sub %rax,%rsp 0.00 : c9ba: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : c9bf: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : c9c3: e8 b8 a9 ff ff callq 7380 <_dl_dst_substitute> 0.00 : c9c8: 80 38 00 cmpb $0x0,(%rax) 0.00 : c9cb: 0f 85 a3 fa ff ff jne c474 <_dl_map_object_deps+0x234> 0.00 : c9d1: f6 05 48 22 21 00 01 testb $0x1,0x212248(%rip) # 21ec20 <_rtld_global_ro> 0.00 : c9d8: 0f 84 56 fa ff ff je c434 <_dl_map_object_deps+0x1f4> 0.00 : c9de: 48 8d 3d 93 f2 00 00 lea 0xf293(%rip),%rdi # 1bc78 <__PRETTY_FUNCTION__.3644+0x1907> 0.00 : c9e5: 48 89 de mov %rbx,%rsi 0.00 : c9e8: 31 c0 xor %eax,%eax 0.00 : c9ea: e8 61 29 00 00 callq f350 <_dl_debug_printf> 0.00 : c9ef: e9 40 fa ff ff jmpq c434 <_dl_map_object_deps+0x1f4> 0.00 : c9f4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : c9f8: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : c9fc: 80 38 00 cmpb $0x0,(%rax) 0.00 : c9ff: 74 10 je ca11 <_dl_map_object_deps+0x7d1> 0.00 : ca01: 48 8d 05 c8 2f 21 00 lea 0x212fc8(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : ca08: 49 39 c7 cmp %rax,%r15 0.00 : ca0b: 0f 85 74 08 00 00 jne d285 <_dl_map_object_deps+0x1045> 0.00 : ca11: e8 9a 4d 00 00 callq 117b0 <_dl_get_origin> 0.00 : ca16: 48 89 c2 mov %rax,%rdx 0.00 : ca19: 49 89 87 38 03 00 00 mov %rax,0x338(%r15) 0.00 : ca20: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : ca24: 48 83 f8 fd cmp $0xfffffffffffffffd,%rax 0.00 : ca28: 76 07 jbe ca31 <_dl_map_object_deps+0x7f1> 0.00 : ca2a: 31 d2 xor %edx,%edx 0.00 : ca2c: e9 4d ff ff ff jmpq c97e <_dl_map_object_deps+0x73e> 0.00 : ca31: 48 89 d7 mov %rdx,%rdi 0.00 : ca34: e8 37 9d 00 00 callq 16770 <__GI_strlen> 0.00 : ca39: 48 89 c2 mov %rax,%rdx 0.00 : ca3c: e9 3d ff ff ff jmpq c97e <_dl_map_object_deps+0x73e> 0.00 : ca41: 48 3d fd ff ff 7f cmp $0x7ffffffd,%rax 0.00 : ca47: 74 0d je ca56 <_dl_map_object_deps+0x816> 0.00 : ca49: 48 3d ff ff ff 7f cmp $0x7fffffff,%rax 0.00 : ca4f: 90 nop 0.00 : ca50: 0f 85 de f9 ff ff jne c434 <_dl_map_object_deps+0x1f4> 0.00 : ca56: 48 8b 9d 50 ff ff ff mov -0xb0(%rbp),%rbx 0.00 : ca5d: 49 03 5c 24 08 add 0x8(%r12),%rbx 0.00 : ca62: be 24 00 00 00 mov $0x24,%esi 0.00 : ca67: 48 89 df mov %rbx,%rdi 0.00 : ca6a: e8 71 9b 00 00 callq 165e0 0.00 : ca6f: 48 85 c0 test %rax,%rax 0.00 : ca72: 48 89 c7 mov %rax,%rdi 0.00 : ca75: 0f 85 c0 04 00 00 jne cf3b <_dl_map_object_deps+0xcfb> 0.00 : ca7b: 48 89 de mov %rbx,%rsi 0.00 : ca7e: 48 89 75 a8 mov %rsi,-0x58(%rbp) 0.00 : ca82: 49 81 3c 24 fd ff ff cmpq $0x7ffffffd,(%r12) 0.00 : ca89: 7f 0.00 : ca8a: 0f 84 20 04 00 00 je ceb0 <_dl_map_object_deps+0xc70> 0.00 : ca90: f6 05 89 21 21 00 01 testb $0x1,0x212189(%rip) # 21ec20 <_rtld_global_ro> 0.00 : ca97: 0f 85 c2 07 00 00 jne d25f <_dl_map_object_deps+0x101f> 0.00 : ca9d: 4c 8b 85 f0 fe ff ff mov -0x110(%rbp),%r8 0.00 : caa4: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : caab: 48 8d 0d 4e 09 00 00 lea 0x94e(%rip),%rcx # d400 0.00 : cab2: 48 8b b5 e0 fe ff ff mov -0x120(%rbp),%rsi 0.00 : cab9: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : cac0: e8 4b 13 00 00 callq de10 <_dl_catch_error> 0.00 : cac5: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : cac9: 41 89 c5 mov %eax,%r13d 0.00 : cacc: 48 85 db test %rbx,%rbx 0.00 : cacf: 0f 85 3b 07 00 00 jne d210 <_dl_map_object_deps+0xfd0> 0.00 : cad5: 48 8b 9d 58 ff ff ff mov -0xa8(%rbp),%rbx 0.00 : cadc: 48 83 ec 30 sub $0x30,%rsp 0.00 : cae0: 48 8d 4c 24 0f lea 0xf(%rsp),%rcx 0.00 : cae5: 48 8b 03 mov (%rbx),%rax 0.00 : cae8: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : caec: 48 89 01 mov %rax,(%rcx) 0.00 : caef: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : caf3: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : caf7: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : cafb: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : caff: c7 03 00 00 00 00 movl $0x0,(%rbx) 0.00 : cb05: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : cb09: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : cb0d: 48 83 bd 48 ff ff ff cmpq $0x0,-0xb8(%rbp) 0.00 : cb14: 00 0.00 : cb15: 74 16 je cb2d <_dl_map_object_deps+0x8ed> 0.00 : cb17: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : cb1b: 48 8b 9d 48 ff ff ff mov -0xb8(%rbp),%rbx 0.00 : cb22: 44 89 f2 mov %r14d,%edx 0.00 : cb25: 41 83 c6 01 add $0x1,%r14d 0.00 : cb29: 48 89 04 d3 mov %rax,(%rbx,%rdx,8) 0.00 : cb2d: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : cb31: 48 89 ca mov %rcx,%rdx 0.00 : cb34: f6 86 14 03 00 00 60 testb $0x60,0x314(%rsi) 0.00 : cb3b: 0f 85 3c 03 00 00 jne ce7d <_dl_map_object_deps+0xc3d> 0.00 : cb41: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : cb48: 48 89 48 10 mov %rcx,0x10(%rax) 0.00 : cb4c: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : cb50: 0f b6 82 14 03 00 00 movzbl 0x314(%rdx),%eax 0.00 : cb57: 83 e0 9f and $0xffffff9f,%eax 0.00 : cb5a: 83 c8 20 or $0x20,%eax 0.00 : cb5d: 88 82 14 03 00 00 mov %al,0x314(%rdx) 0.00 : cb63: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : cb67: 48 8b 72 20 mov 0x20(%rdx),%rsi 0.00 : cb6b: 48 85 f6 test %rsi,%rsi 0.00 : cb6e: 74 0c je cb7c <_dl_map_object_deps+0x93c> 0.00 : cb70: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : cb74: 48 89 46 18 mov %rax,0x18(%rsi) 0.00 : cb78: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : cb7c: 48 8b 72 18 mov 0x18(%rdx),%rsi 0.00 : cb80: 48 85 f6 test %rsi,%rsi 0.00 : cb83: 74 0c je cb91 <_dl_map_object_deps+0x951> 0.00 : cb85: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : cb89: 48 89 46 20 mov %rax,0x20(%rsi) 0.00 : cb8d: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : cb91: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : cb95: 48 8b 40 20 mov 0x20(%rax),%rax 0.00 : cb99: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : cb9d: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : cba1: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : cba5: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : cba9: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : cbad: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : cbb1: 48 85 c0 test %rax,%rax 0.00 : cbb4: 74 08 je cbbe <_dl_map_object_deps+0x97e> 0.00 : cbb6: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : cbba: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : cbbe: 83 45 88 01 addl $0x1,-0x78(%rbp) 0.00 : cbc2: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : cbc6: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : cbca: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : cbd1: 48 39 95 58 ff ff ff cmp %rdx,-0xa8(%rbp) 0.00 : cbd8: 0f 84 6e 06 00 00 je d24c <_dl_map_object_deps+0x100c> 0.00 : cbde: 48 89 8d 58 ff ff ff mov %rcx,-0xa8(%rbp) 0.00 : cbe5: e9 4a f8 ff ff jmpq c434 <_dl_map_object_deps+0x1f4> 0.00 : cbea: 48 89 df mov %rbx,%rdi 0.00 : cbed: e8 7e 9b 00 00 callq 16770 <__GI_strlen> 0.00 : cbf2: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : cbf6: 48 83 c0 1f add $0x1f,%rax 0.00 : cbfa: 48 89 de mov %rbx,%rsi 0.00 : cbfd: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : cc01: 48 29 c4 sub %rax,%rsp 0.00 : cc04: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : cc09: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : cc0d: e8 de a6 00 00 callq 172f0 0.00 : cc12: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : cc16: 49 89 c4 mov %rax,%r12 0.00 : cc19: 48 89 df mov %rbx,%rdi 0.00 : cc1c: e8 4f 9b 00 00 callq 16770 <__GI_strlen> 0.00 : cc21: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : cc25: 48 83 c0 1f add $0x1f,%rax 0.00 : cc29: 48 89 de mov %rbx,%rsi 0.00 : cc2c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : cc30: 48 29 c4 sub %rax,%rsp 0.00 : cc33: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : cc38: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : cc3c: e8 af a6 00 00 callq 172f0 0.00 : cc41: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : cc45: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : cc49: 0f 85 19 01 00 00 jne cd68 <_dl_map_object_deps+0xb28> 0.00 : cc4f: 45 85 ed test %r13d,%r13d 0.00 : cc52: 4c 89 65 c0 mov %r12,-0x40(%rbp) 0.00 : cc56: 44 89 ef mov %r13d,%edi 0.00 : cc59: 0f 85 80 f9 ff ff jne c5df <_dl_map_object_deps+0x39f> 0.00 : cc5f: bf ff ff ff ff mov $0xffffffff,%edi 0.00 : cc64: e9 76 f9 ff ff jmpq c5df <_dl_map_object_deps+0x39f> 0.00 : cc69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : cc70: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : cc77: 8b ba d0 03 00 00 mov 0x3d0(%rdx),%edi 0.00 : cc7d: 44 89 8d c8 fe ff ff mov %r9d,-0x138(%rbp) 0.00 : cc84: 48 8d 3c fd 08 00 00 lea 0x8(,%rdi,8),%rdi 0.00 : cc8b: 00 0.00 : cc8c: e8 1f 3e ff ff callq ab0 0.00 : cc91: 48 85 c0 test %rax,%rax 0.00 : cc94: 49 89 c6 mov %rax,%r14 0.00 : cc97: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : cc9e: 0f 84 e8 fa ff ff je c78c <_dl_map_object_deps+0x54c> 0.00 : cca4: 48 8b b5 68 ff ff ff mov -0x98(%rbp),%rsi 0.00 : ccab: 48 8d 78 08 lea 0x8(%rax),%rdi 0.00 : ccaf: 4a 8d 14 ed 00 00 00 lea 0x0(,%r13,8),%rdx 0.00 : ccb6: 00 0.00 : ccb7: e8 34 a6 00 00 callq 172f0 0.00 : ccbc: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : ccc3: 8d 53 01 lea 0x1(%rbx),%edx 0.00 : ccc6: 89 df mov %ebx,%edi 0.00 : ccc8: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : cccf: 48 8b b0 c8 03 00 00 mov 0x3c8(%rax),%rsi 0.00 : ccd6: 39 16 cmp %edx,(%rsi) 0.00 : ccd8: 76 35 jbe cd0f <_dl_map_object_deps+0xacf> 0.00 : ccda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : cce0: 89 d0 mov %edx,%eax 0.00 : cce2: 49 8b 4c c4 08 mov 0x8(%r12,%rax,8),%rcx 0.00 : cce7: f6 81 14 03 00 00 60 testb $0x60,0x314(%rcx) 0.00 : ccee: 75 18 jne cd08 <_dl_map_object_deps+0xac8> 0.00 : ccf0: 89 f8 mov %edi,%eax 0.00 : ccf2: 83 c7 01 add $0x1,%edi 0.00 : ccf5: 49 89 4c c6 08 mov %rcx,0x8(%r14,%rax,8) 0.00 : ccfa: 48 8b 9d 20 ff ff ff mov -0xe0(%rbp),%rbx 0.00 : cd01: 48 8b b3 c8 03 00 00 mov 0x3c8(%rbx),%rsi 0.00 : cd08: 83 c2 01 add $0x1,%edx 0.00 : cd0b: 39 16 cmp %edx,(%rsi) 0.00 : cd0d: 77 d1 ja cce0 <_dl_map_object_deps+0xaa0> 0.00 : cd0f: 41 89 3e mov %edi,(%r14) 0.00 : cd12: e9 77 fa ff ff jmpq c78e <_dl_map_object_deps+0x54e> 0.00 : cd17: 8b b5 3c ff ff ff mov -0xc4(%rbp),%esi 0.00 : cd1d: 85 f6 test %esi,%esi 0.00 : cd1f: 0f 84 ca f8 ff ff je c5ef <_dl_map_object_deps+0x3af> 0.00 : cd25: 8b 95 3c ff ff ff mov -0xc4(%rbp),%edx 0.00 : cd2b: 89 15 53 34 21 00 mov %edx,0x213453(%rip) # 220184 0.00 : cd31: e9 b9 f8 ff ff jmpq c5ef <_dl_map_object_deps+0x3af> 0.00 : cd36: 48 83 ba b8 02 00 00 cmpq $0x0,0x2b8(%rdx) 0.00 : cd3d: 00 0.00 : cd3e: 0f 84 f1 f8 ff ff je c635 <_dl_map_object_deps+0x3f5> 0.00 : cd44: 48 8d 0d 85 fa 00 00 lea 0xfa85(%rip),%rcx # 1c7d0 <__PRETTY_FUNCTION__.11357> 0.00 : cd4b: 48 8d 35 cd cf 00 00 lea 0xcfcd(%rip),%rsi # 19d1f <__PRETTY_FUNCTION__.12494+0x40> 0.00 : cd52: 48 8d 3d 17 f0 00 00 lea 0xf017(%rip),%rdi # 1bd70 <__PRETTY_FUNCTION__.3644+0x19ff> 0.00 : cd59: ba f8 01 00 00 mov $0x1f8,%edx 0.00 : cd5e: e8 0d 80 00 00 callq 14d70 <__GI___assert_fail> 0.00 : cd63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : cd68: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : cd6c: e8 7f 3d ff ff callq af0 0.00 : cd71: e9 d9 fe ff ff jmpq cc4f <_dl_map_object_deps+0xa0f> 0.00 : cd76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : cd7d: 00 00 00 0.00 : cd80: 44 89 c3 mov %r8d,%ebx 0.00 : cd83: 44 89 ea mov %r13d,%edx 0.00 : cd86: 44 89 85 d0 fe ff ff mov %r8d,-0x130(%rbp) 0.00 : cd8d: 44 29 c2 sub %r8d,%edx 0.00 : cd90: 49 8d 34 df lea (%r15,%rbx,8),%rsi 0.00 : cd94: 49 8d 7c df 08 lea 0x8(%r15,%rbx,8),%rdi 0.00 : cd99: 48 c1 e2 03 shl $0x3,%rdx 0.00 : cd9d: 44 89 8d c8 fe ff ff mov %r9d,-0x138(%rbp) 0.00 : cda4: 41 83 c5 01 add $0x1,%r13d 0.00 : cda8: e8 33 9c 00 00 callq 169e0 0.00 : cdad: 4d 89 34 df mov %r14,(%r15,%rbx,8) 0.00 : cdb1: 44 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8d 0.00 : cdb8: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : cdbf: 41 83 c0 01 add $0x1,%r8d 0.00 : cdc3: 45 39 e9 cmp %r13d,%r9d 0.00 : cdc6: 0f 87 c4 fa ff ff ja c890 <_dl_map_object_deps+0x650> 0.00 : cdcc: e9 f5 fa ff ff jmpq c8c6 <_dl_map_object_deps+0x686> 0.00 : cdd1: 48 8d 0d 78 ee 00 00 lea 0xee78(%rip),%rcx # 1bc50 <__PRETTY_FUNCTION__.3644+0x18df> 0.00 : cdd8: 31 d2 xor %edx,%edx 0.00 : cdda: 48 89 de mov %rbx,%rsi 0.00 : cddd: 31 ff xor %edi,%edi 0.00 : cddf: e8 1c 11 00 00 callq df00 <_dl_signal_error> 0.00 : cde4: 49 83 bf b8 03 00 00 cmpq $0x0,0x3b8(%r15) 0.00 : cdeb: 00 0.00 : cdec: 0f 85 c2 f5 ff ff jne c3b4 <_dl_map_object_deps+0x174> 0.00 : cdf2: 4c 3b bd 08 ff ff ff cmp -0xf8(%rbp),%r15 0.00 : cdf9: 0f 84 b5 f5 ff ff je c3b4 <_dl_map_object_deps+0x174> 0.00 : cdff: 41 0f b7 87 b2 02 00 movzwl 0x2b2(%r15),%eax 0.00 : ce06: 00 0.00 : ce07: 66 85 c0 test %ax,%ax 0.00 : ce0a: 0f 84 a4 f5 ff ff je c3b4 <_dl_map_object_deps+0x174> 0.00 : ce10: 0f b7 c0 movzwl %ax,%eax 0.00 : ce13: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : ce1a: 00 0.00 : ce1b: 25 f0 ff 1f 00 and $0x1ffff0,%eax 0.00 : ce20: 48 29 c4 sub %rax,%rsp 0.00 : ce23: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : ce28: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : ce2c: 48 89 9d 48 ff ff ff mov %rbx,-0xb8(%rbp) 0.00 : ce33: e9 87 f5 ff ff jmpq c3bf <_dl_map_object_deps+0x17f> 0.00 : ce38: 44 89 c8 mov %r9d,%eax 0.00 : ce3b: 4c 89 ff mov %r15,%rdi 0.00 : ce3e: 44 89 8d c8 fe ff ff mov %r9d,-0x138(%rbp) 0.00 : ce45: 48 c1 e0 03 shl $0x3,%rax 0.00 : ce49: 48 89 c2 mov %rax,%rdx 0.00 : ce4c: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : ce53: e8 98 a4 00 00 callq 172f0 0.00 : ce58: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : ce5f: 41 83 f9 01 cmp $0x1,%r9d 0.00 : ce63: 0f 86 73 fa ff ff jbe c8dc <_dl_map_object_deps+0x69c> 0.00 : ce69: e9 ab f9 ff ff jmpq c819 <_dl_map_object_deps+0x5d9> 0.00 : ce6e: 66 90 xchg %ax,%ax 0.00 : ce70: 48 3b 70 08 cmp 0x8(%rax),%rsi 0.00 : ce74: 0f 84 2a 04 00 00 je d2a4 <_dl_map_object_deps+0x1064> 0.00 : ce7a: 48 89 c2 mov %rax,%rdx 0.00 : ce7d: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : ce81: 48 85 c0 test %rax,%rax 0.00 : ce84: 75 ea jne ce70 <_dl_map_object_deps+0xc30> 0.00 : ce86: 48 8b 01 mov (%rcx),%rax 0.00 : ce89: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : ce90: 48 89 02 mov %rax,(%rdx) 0.00 : ce93: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : ce97: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : ce9b: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : ce9f: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : cea3: e9 8c f5 ff ff jmpq c434 <_dl_map_object_deps+0x1f4> 0.00 : cea8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : ceaf: 00 0.00 : ceb0: f6 05 69 1d 21 00 01 testb $0x1,0x211d69(%rip) # 21ec20 <_rtld_global_ro> 0.00 : ceb7: 0f 85 b3 04 00 00 jne d370 <_dl_map_object_deps+0x1130> 0.00 : cebd: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : cec4: 4c 8b 85 f0 fe ff ff mov -0x110(%rbp),%r8 0.00 : cecb: 48 8d 0d 2e 05 00 00 lea 0x52e(%rip),%rcx # d400 0.00 : ced2: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : ced9: 48 8b b5 e0 fe ff ff mov -0x120(%rbp),%rsi 0.00 : cee0: e8 2b 0f 00 00 callq de10 <_dl_catch_error> 0.00 : cee5: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : cee9: 48 85 ff test %rdi,%rdi 0.00 : ceec: 0f 84 e3 fb ff ff je cad5 <_dl_map_object_deps+0x895> 0.00 : cef2: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : cef6: 0f 84 38 f5 ff ff je c434 <_dl_map_object_deps+0x1f4> 0.00 : cefc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : cf00: e8 eb 3b ff ff callq af0 0.00 : cf05: e9 2a f5 ff ff jmpq c434 <_dl_map_object_deps+0x1f4> 0.00 : cf0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : cf10: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : cf17: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : cf1b: f6 81 15 03 00 00 02 testb $0x2,0x315(%rcx) 0.00 : cf22: 0f 84 66 f7 ff ff je c68e <_dl_map_object_deps+0x44e> 0.00 : cf28: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : cf2f: 83 aa c0 02 00 00 01 subl $0x1,0x2c0(%rdx) 0.00 : cf36: e9 6c f7 ff ff jmpq c6a7 <_dl_map_object_deps+0x467> 0.00 : cf3b: 31 f6 xor %esi,%esi 0.00 : cf3d: e8 ee 7e ff ff callq 4e30 <_dl_dst_count> 0.00 : cf42: 48 85 c0 test %rax,%rax 0.00 : cf45: 49 89 c5 mov %rax,%r13 0.00 : cf48: 0f 84 2d fb ff ff je ca7b <_dl_map_object_deps+0x83b> 0.00 : cf4e: 44 8b 1d fb 1e 21 00 mov 0x211efb(%rip),%r11d # 21ee50 <__libc_enable_secure> 0.00 : cf55: 45 85 db test %r11d,%r11d 0.00 : cf58: 0f 85 73 fe ff ff jne cdd1 <_dl_map_object_deps+0xb91> 0.00 : cf5e: 48 89 df mov %rbx,%rdi 0.00 : cf61: e8 0a 98 00 00 callq 16770 <__GI_strlen> 0.00 : cf66: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : cf6d: 49 8b bf 38 03 00 00 mov 0x338(%r15),%rdi 0.00 : cf74: 48 85 ff test %rdi,%rdi 0.00 : cf77: 0f 84 9a 00 00 00 je d017 <_dl_map_object_deps+0xdd7> 0.00 : cf7d: 48 83 ff ff cmp $0xffffffffffffffff,%rdi 0.00 : cf81: 0f 84 89 00 00 00 je d010 <_dl_map_object_deps+0xdd0> 0.00 : cf87: e8 e4 97 00 00 callq 16770 <__GI_strlen> 0.00 : cf8c: 48 89 c2 mov %rax,%rdx 0.00 : cf8f: 48 83 3d 99 1c 21 00 cmpq $0x5,0x211c99(%rip) # 21ec30 <_rtld_global_ro+0x10> 0.00 : cf96: 05 0.00 : cf97: b8 05 00 00 00 mov $0x5,%eax 0.00 : cf9c: 48 89 de mov %rbx,%rsi 0.00 : cf9f: 48 0f 43 05 89 1c 21 cmovae 0x211c89(%rip),%rax # 21ec30 <_rtld_global_ro+0x10> 0.00 : cfa6: 00 0.00 : cfa7: 4c 89 ff mov %r15,%rdi 0.00 : cfaa: 48 39 d0 cmp %rdx,%rax 0.00 : cfad: 48 0f 42 c2 cmovb %rdx,%rax 0.00 : cfb1: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : cfb8: 31 c9 xor %ecx,%ecx 0.00 : cfba: 48 83 e8 04 sub $0x4,%rax 0.00 : cfbe: 49 0f af c5 imul %r13,%rax 0.00 : cfc2: 48 8d 44 02 1e lea 0x1e(%rdx,%rax,1),%rax 0.00 : cfc7: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : cfcb: 48 29 c4 sub %rax,%rsp 0.00 : cfce: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : cfd3: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : cfd7: e8 a4 a3 ff ff callq 7380 <_dl_dst_substitute> 0.00 : cfdc: 80 38 00 cmpb $0x0,(%rax) 0.00 : cfdf: 48 89 c6 mov %rax,%rsi 0.00 : cfe2: 0f 85 96 fa ff ff jne ca7e <_dl_map_object_deps+0x83e> 0.00 : cfe8: 49 81 3c 24 fd ff ff cmpq $0x7ffffffd,(%r12) 0.00 : cfef: 7f 0.00 : cff0: 0f 85 db f9 ff ff jne c9d1 <_dl_map_object_deps+0x791> 0.00 : cff6: 48 8d 0d cb ec 00 00 lea 0xeccb(%rip),%rcx # 1bcc8 <__PRETTY_FUNCTION__.3644+0x1957> 0.00 : cffd: 31 d2 xor %edx,%edx 0.00 : cfff: 48 89 de mov %rbx,%rsi 0.00 : d002: 31 ff xor %edi,%edi 0.00 : d004: e8 f7 0e 00 00 callq df00 <_dl_signal_error> 0.00 : d009: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : d010: 31 d2 xor %edx,%edx 0.00 : d012: e9 78 ff ff ff jmpq cf8f <_dl_map_object_deps+0xd4f> 0.00 : d017: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : d01b: 80 38 00 cmpb $0x0,(%rax) 0.00 : d01e: 74 0c je d02c <_dl_map_object_deps+0xdec> 0.00 : d020: 48 8d 05 a9 29 21 00 lea 0x2129a9(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : d027: 49 39 c7 cmp %rax,%r15 0.00 : d02a: 75 26 jne d052 <_dl_map_object_deps+0xe12> 0.00 : d02c: e8 7f 47 00 00 callq 117b0 <_dl_get_origin> 0.00 : d031: 48 89 c7 mov %rax,%rdi 0.00 : d034: 49 89 87 38 03 00 00 mov %rax,0x338(%r15) 0.00 : d03b: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : d03f: 48 83 f8 fd cmp $0xfffffffffffffffd,%rax 0.00 : d043: 77 cb ja d010 <_dl_map_object_deps+0xdd0> 0.00 : d045: e8 26 97 00 00 callq 16770 <__GI_strlen> 0.00 : d04a: 48 89 c2 mov %rax,%rdx 0.00 : d04d: e9 3d ff ff ff jmpq cf8f <_dl_map_object_deps+0xd4f> 0.00 : d052: 48 8d 0d 77 f7 00 00 lea 0xf777(%rip),%rcx # 1c7d0 <__PRETTY_FUNCTION__.11357> 0.00 : d059: 48 8d 35 bf cc 00 00 lea 0xccbf(%rip),%rsi # 19d1f <__PRETTY_FUNCTION__.12494+0x40> 0.00 : d060: 48 8d 3d 81 e4 00 00 lea 0xe481(%rip),%rdi # 1b4e8 <__PRETTY_FUNCTION__.3644+0x1177> 0.00 : d067: ba 26 01 00 00 mov $0x126,%edx 0.00 : d06c: e8 ff 7c 00 00 callq 14d70 <__GI___assert_fail> 0.00 : d071: 48 8b 9d 20 ff ff ff mov -0xe0(%rbp),%rbx 0.00 : d078: 44 89 c8 mov %r9d,%eax 0.00 : d07b: 4c 89 ff mov %r15,%rdi 0.00 : d07e: 48 c1 e0 03 shl $0x3,%rax 0.00 : d082: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : d089: 48 89 c2 mov %rax,%rdx 0.00 : d08c: 48 8b b3 b8 02 00 00 mov 0x2b8(%rbx),%rsi 0.00 : d093: e8 58 a2 00 00 callq 172f0 0.00 : d098: e9 3f f8 ff ff jmpq c8dc <_dl_map_object_deps+0x69c> 0.00 : d09d: 48 8b 05 bc 1f 21 00 mov 0x211fbc(%rip),%rax # 21f060 <_rtld_global> 0.00 : d0a4: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : d0ab: 48 39 d0 cmp %rdx,%rax 0.00 : d0ae: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) 0.00 : d0b5: 0f 85 1b f6 ff ff jne c6d6 <_dl_map_object_deps+0x496> 0.00 : d0bb: 45 85 c9 test %r9d,%r9d 0.00 : d0be: 0f 84 12 f6 ff ff je c6d6 <_dl_map_object_deps+0x496> 0.00 : d0c4: c7 85 38 ff ff ff 00 movl $0x0,-0xc8(%rbp) 0.00 : d0cb: 00 00 00 0.00 : d0ce: 45 31 f6 xor %r14d,%r14d 0.00 : d0d1: 48 8b 9d 18 ff ff ff mov -0xe8(%rbp),%rbx 0.00 : d0d8: 48 8b 83 b8 02 00 00 mov 0x2b8(%rbx),%rax 0.00 : d0df: 4a 8b 1c 30 mov (%rax,%r14,1),%rbx 0.00 : d0e3: 48 39 9d 18 ff ff ff cmp %rbx,-0xe8(%rbp) 0.00 : d0ea: 0f 84 e4 00 00 00 je d1d4 <_dl_map_object_deps+0xf94> 0.00 : d0f0: 48 8b 83 88 03 00 00 mov 0x388(%rbx),%rax 0.00 : d0f7: 48 85 c0 test %rax,%rax 0.00 : d0fa: 74 0b je d107 <_dl_map_object_deps+0xec7> 0.00 : d0fc: 8b 50 08 mov 0x8(%rax),%edx 0.00 : d0ff: 85 d2 test %edx,%edx 0.00 : d101: 0f 85 cd 00 00 00 jne d1d4 <_dl_map_object_deps+0xf94> 0.00 : d107: 48 83 bb e0 01 00 00 cmpq $0x0,0x1e0(%rbx) 0.00 : d10e: 00 0.00 : d10f: 0f 85 be 02 00 00 jne d3d3 <_dl_map_object_deps+0x1193> 0.00 : d115: 48 83 bb d0 01 00 00 cmpq $0x0,0x1d0(%rbx) 0.00 : d11c: 00 0.00 : d11d: 0f 85 b0 02 00 00 jne d3d3 <_dl_map_object_deps+0x1193> 0.00 : d123: 48 89 de mov %rbx,%rsi 0.00 : d126: 4c 89 ff mov %r15,%rdi 0.00 : d129: 44 89 8d c8 fe ff ff mov %r9d,-0x138(%rbp) 0.00 : d130: e8 8b f0 ff ff callq c1c0 <_dl_build_local_scope> 0.00 : d135: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : d13c: 41 89 c4 mov %eax,%r12d 0.00 : d13f: 41 39 c1 cmp %eax,%r9d 0.00 : d142: 0f 82 a9 00 00 00 jb d1f1 <_dl_map_object_deps+0xfb1> 0.00 : d148: 85 c0 test %eax,%eax 0.00 : d14a: 4c 89 fa mov %r15,%rdx 0.00 : d14d: 74 1d je d16c <_dl_map_object_deps+0xf2c> 0.00 : d14f: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : d154: 49 8d 4c c7 08 lea 0x8(%r15,%rax,8),%rcx 0.00 : d159: 48 8b 02 mov (%rdx),%rax 0.00 : d15c: 48 83 c2 08 add $0x8,%rdx 0.00 : d160: 80 a0 14 03 00 00 9f andb $0x9f,0x314(%rax) 0.00 : d167: 48 39 ca cmp %rcx,%rdx 0.00 : d16a: 75 ed jne d159 <_dl_map_object_deps+0xf19> 0.00 : d16c: 45 89 e5 mov %r12d,%r13d 0.00 : d16f: 44 89 8d c8 fe ff ff mov %r9d,-0x138(%rbp) 0.00 : d176: 4a 8d 3c ed 10 00 00 lea 0x10(,%r13,8),%rdi 0.00 : d17d: 00 0.00 : d17e: e8 2d 39 ff ff callq ab0 0.00 : d183: 48 85 c0 test %rax,%rax 0.00 : d186: 48 89 83 88 03 00 00 mov %rax,0x388(%rbx) 0.00 : d18d: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : d194: 0f 84 50 02 00 00 je d3ea <_dl_map_object_deps+0x11aa> 0.00 : d19a: 44 89 60 08 mov %r12d,0x8(%rax) 0.00 : d19e: 48 8b 93 88 03 00 00 mov 0x388(%rbx),%rdx 0.00 : d1a5: 4c 89 fe mov %r15,%rsi 0.00 : d1a8: 48 8d 42 10 lea 0x10(%rdx),%rax 0.00 : d1ac: 48 89 02 mov %rax,(%rdx) 0.00 : d1af: 48 8b 83 88 03 00 00 mov 0x388(%rbx),%rax 0.00 : d1b6: 4a 8d 14 ed 00 00 00 lea 0x0(,%r13,8),%rdx 0.00 : d1bd: 00 0.00 : d1be: 48 8b 38 mov (%rax),%rdi 0.00 : d1c1: 44 89 8d c8 fe ff ff mov %r9d,-0x138(%rbp) 0.00 : d1c8: e8 23 a1 00 00 callq 172f0 0.00 : d1cd: 44 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9d 0.00 : d1d4: 83 85 38 ff ff ff 01 addl $0x1,-0xc8(%rbp) 0.00 : d1db: 49 83 c6 08 add $0x8,%r14 0.00 : d1df: 44 3b 8d 38 ff ff ff cmp -0xc8(%rbp),%r9d 0.00 : d1e6: 0f 87 e5 fe ff ff ja d0d1 <_dl_map_object_deps+0xe91> 0.00 : d1ec: e9 e5 f4 ff ff jmpq c6d6 <_dl_map_object_deps+0x496> 0.00 : d1f1: 48 8d 0d d8 f5 00 00 lea 0xf5d8(%rip),%rcx # 1c7d0 <__PRETTY_FUNCTION__.11357> 0.00 : d1f8: 48 8d 35 20 cb 00 00 lea 0xcb20(%rip),%rsi # 19d1f <__PRETTY_FUNCTION__.12494+0x40> 0.00 : d1ff: 48 8d 3d 23 cb 00 00 lea 0xcb23(%rip),%rdi # 19d29 <__PRETTY_FUNCTION__.12494+0x4a> 0.00 : d206: ba 30 02 00 00 mov $0x230,%edx 0.00 : d20b: e8 60 7b 00 00 callq 14d70 <__GI___assert_fail> 0.00 : d210: 48 89 df mov %rbx,%rdi 0.00 : d213: e8 58 95 00 00 callq 16770 <__GI_strlen> 0.00 : d218: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : d21c: 48 83 c0 1f add $0x1f,%rax 0.00 : d220: 48 89 de mov %rbx,%rsi 0.00 : d223: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : d227: 48 29 c4 sub %rax,%rsp 0.00 : d22a: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : d22f: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : d233: e8 b8 a0 00 00 callq 172f0 0.00 : d238: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : d23c: 49 89 c4 mov %rax,%r12 0.00 : d23f: 48 89 df mov %rbx,%rdi 0.00 : d242: e8 29 95 00 00 callq 16770 <__GI_strlen> 0.00 : d247: e9 d5 f9 ff ff jmpq cc21 <_dl_map_object_deps+0x9e1> 0.00 : d24c: 48 89 8d 30 ff ff ff mov %rcx,-0xd0(%rbp) 0.00 : d253: 48 89 8d 58 ff ff ff mov %rcx,-0xa8(%rbp) 0.00 : d25a: e9 d5 f1 ff ff jmpq c434 <_dl_map_object_deps+0x1f4> 0.00 : d25f: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : d263: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : d266: 75 0a jne d272 <_dl_map_object_deps+0x1032> 0.00 : d268: 48 8b 05 99 19 21 00 mov 0x211999(%rip),%rax # 21ec08 <_dl_argv> 0.00 : d26f: 48 8b 10 mov (%rax),%rdx 0.00 : d272: 48 8d 3d a7 ea 00 00 lea 0xeaa7(%rip),%rdi # 1bd20 <__PRETTY_FUNCTION__.3644+0x19af> 0.00 : d279: 31 c0 xor %eax,%eax 0.00 : d27b: e8 d0 20 00 00 callq f350 <_dl_debug_printf> 0.00 : d280: e9 18 f8 ff ff jmpq ca9d <_dl_map_object_deps+0x85d> 0.00 : d285: 48 8d 0d 44 f5 00 00 lea 0xf544(%rip),%rcx # 1c7d0 <__PRETTY_FUNCTION__.11357> 0.00 : d28c: 48 8d 35 8c ca 00 00 lea 0xca8c(%rip),%rsi # 19d1f <__PRETTY_FUNCTION__.12494+0x40> 0.00 : d293: 48 8d 3d 4e e2 00 00 lea 0xe24e(%rip),%rdi # 1b4e8 <__PRETTY_FUNCTION__.3644+0x1177> 0.00 : d29a: ba f2 00 00 00 mov $0xf2,%edx 0.00 : d29f: e8 cc 7a 00 00 callq 14d70 <__GI___assert_fail> 0.00 : d2a4: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : d2ab: 48 89 48 10 mov %rcx,0x10(%rax) 0.00 : d2af: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : d2b3: 48 3b 85 30 ff ff ff cmp -0xd0(%rbp),%rax 0.00 : d2ba: 48 8b 9d 30 ff ff ff mov -0xd0(%rbp),%rbx 0.00 : d2c1: 48 0f 44 da cmove %rdx,%rbx 0.00 : d2c5: 48 89 9d 30 ff ff ff mov %rbx,-0xd0(%rbp) 0.00 : d2cc: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : d2d0: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : d2d4: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : d2d8: 48 8b 72 20 mov 0x20(%rdx),%rsi 0.00 : d2dc: 48 85 f6 test %rsi,%rsi 0.00 : d2df: 74 0c je d2ed <_dl_map_object_deps+0x10ad> 0.00 : d2e1: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : d2e5: 48 89 46 18 mov %rax,0x18(%rsi) 0.00 : d2e9: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : d2ed: 48 8b 72 18 mov 0x18(%rdx),%rsi 0.00 : d2f1: 48 85 f6 test %rsi,%rsi 0.00 : d2f4: 74 0c je d302 <_dl_map_object_deps+0x10c2> 0.00 : d2f6: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : d2fa: 48 89 46 20 mov %rax,0x20(%rsi) 0.00 : d2fe: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : d302: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : d306: 48 8b 40 20 mov 0x20(%rax),%rax 0.00 : d30a: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : d30e: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : d312: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : d316: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : d31a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : d31e: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : d322: 48 85 c0 test %rax,%rax 0.00 : d325: 0f 84 97 f8 ff ff je cbc2 <_dl_map_object_deps+0x982> 0.00 : d32b: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : d32f: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : d333: e9 8a f8 ff ff jmpq cbc2 <_dl_map_object_deps+0x982> 0.00 : d338: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : d33c: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : d340: 83 ff ff cmp $0xffffffff,%edi 0.00 : d343: b8 00 00 00 00 mov $0x0,%eax 0.00 : d348: 0f 44 f8 cmove %eax,%edi 0.00 : d34b: 31 d2 xor %edx,%edx 0.00 : d34d: e8 ae 0b 00 00 callq df00 <_dl_signal_error> 0.00 : d352: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : d359: 48 8d 0d f0 e9 00 00 lea 0xe9f0(%rip),%rcx # 1bd50 <__PRETTY_FUNCTION__.3644+0x19df> 0.00 : d360: 31 d2 xor %edx,%edx 0.00 : d362: bf 0c 00 00 00 mov $0xc,%edi 0.00 : d367: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : d36b: e8 90 0b 00 00 callq df00 <_dl_signal_error> 0.00 : d370: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : d374: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : d377: 75 0a jne d383 <_dl_map_object_deps+0x1143> 0.00 : d379: 48 8b 05 88 18 21 00 mov 0x211888(%rip),%rax # 21ec08 <_dl_argv> 0.00 : d380: 48 8b 10 mov (%rax),%rdx 0.00 : d383: 48 8d 3d 66 e9 00 00 lea 0xe966(%rip),%rdi # 1bcf0 <__PRETTY_FUNCTION__.3644+0x197f> 0.00 : d38a: 31 c0 xor %eax,%eax 0.00 : d38c: e8 bf 1f 00 00 callq f350 <_dl_debug_printf> 0.00 : d391: e9 27 fb ff ff jmpq cebd <_dl_map_object_deps+0xc7d> 0.00 : d396: 48 8d 0d 33 f4 00 00 lea 0xf433(%rip),%rcx # 1c7d0 <__PRETTY_FUNCTION__.11357> 0.00 : d39d: 48 8d 35 7b c9 00 00 lea 0xc97b(%rip),%rsi # 19d1f <__PRETTY_FUNCTION__.12494+0x40> 0.00 : d3a4: 48 8d 3d 45 ea 00 00 lea 0xea45(%rip),%rdi # 1bdf0 <__PRETTY_FUNCTION__.3644+0x1a7f> 0.00 : d3ab: ba 44 02 00 00 mov $0x244,%edx 0.00 : d3b0: e8 bb 79 00 00 callq 14d70 <__GI___assert_fail> 0.00 : d3b5: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : d3bc: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : d3c0: 48 8d 0d d1 e9 00 00 lea 0xe9d1(%rip),%rcx # 1bd98 <__PRETTY_FUNCTION__.3644+0x1a27> 0.00 : d3c7: 31 d2 xor %edx,%edx 0.00 : d3c9: bf 0c 00 00 00 mov $0xc,%edi 0.00 : d3ce: e8 2d 0b 00 00 callq df00 <_dl_signal_error> 0.00 : d3d3: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : d3d7: 48 8d 0d e2 e9 00 00 lea 0xe9e2(%rip),%rcx # 1bdc0 <__PRETTY_FUNCTION__.3644+0x1a4f> 0.00 : d3de: 31 d2 xor %edx,%edx 0.00 : d3e0: bf 16 00 00 00 mov $0x16,%edi 0.00 : d3e5: e8 16 0b 00 00 callq df00 <_dl_signal_error> 0.00 : d3ea: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : d3f1: eb c9 jmp d3bc <_dl_map_object_deps+0x117c> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000013c90 <_dl_runtime_resolve>: 25.00 : 13c90: 48 83 ec 38 sub $0x38,%rsp 25.00 : 13c94: 48 89 04 24 mov %rax,(%rsp) 25.00 : 13c98: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 13c9d: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 13ca2: 48 89 74 24 18 mov %rsi,0x18(%rsp) 0.00 : 13ca7: 48 89 7c 24 20 mov %rdi,0x20(%rsp) 0.00 : 13cac: 4c 89 44 24 28 mov %r8,0x28(%rsp) 0.00 : 13cb1: 4c 89 4c 24 30 mov %r9,0x30(%rsp) 0.00 : 13cb6: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : 13cbb: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 13cc0: e8 bb 9e ff ff callq db80 <_dl_fixup> 0.00 : 13cc5: 49 89 c3 mov %rax,%r11 0.00 : 13cc8: 4c 8b 4c 24 30 mov 0x30(%rsp),%r9 25.00 : 13ccd: 4c 8b 44 24 28 mov 0x28(%rsp),%r8 0.00 : 13cd2: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 13cd7: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : 13cdc: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 13ce1: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 13ce6: 48 8b 04 24 mov (%rsp),%rax 0.00 : 13cea: 48 83 c4 48 add $0x48,%rsp 0.00 : 13cee: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 40.00 /home/Computational/mark/src/dbt3/src/dbgen/print.c:246 20.00 /home/Computational/mark/src/dbt3/src/dbgen/print.c:214 20.00 /home/Computational/mark/src/dbt3/src/dbgen/print.c:230 20.00 /home/Computational/mark/src/dbt3/src/dbgen/print.c:250 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004051b0 : : /* : * print an order's lineitems : */ : int : pr_line(order_t *o, int mode) : { 0.00 : 4051b0: 41 56 push %r14 /home/Computational/mark/src/dbt3/src/dbgen/print.c:214 20.00 : 4051b2: 41 55 push %r13 0.00 : 4051b4: 41 54 push %r12 0.00 : 4051b6: 49 89 fc mov %rdi,%r12 : static FILE *fp_l = NULL; : static int last_mode = 0; : long i; : : if (fp_l == NULL || mode != last_mode) 0.00 : 4051b9: 48 8b 3d b0 62 20 00 mov 0x2062b0(%rip),%rdi # 60b470 : /* : * print an order's lineitems : */ : int : pr_line(order_t *o, int mode) : { 0.00 : 4051c0: 55 push %rbp : static FILE *fp_l = NULL; : static int last_mode = 0; : long i; : : if (fp_l == NULL || mode != last_mode) 0.00 : 4051c1: 48 85 ff test %rdi,%rdi : /* : * print an order's lineitems : */ : int : pr_line(order_t *o, int mode) : { 0.00 : 4051c4: 53 push %rbx 0.00 : 4051c5: 89 f3 mov %esi,%ebx : static FILE *fp_l = NULL; : static int last_mode = 0; : long i; : : if (fp_l == NULL || mode != last_mode) 0.00 : 4051c7: 74 0d je 4051d6 0.00 : 4051c9: 3b 35 99 62 20 00 cmp 0x206299(%rip),%esi # 60b468 0.00 : 4051cf: 74 1e je 4051ef : { : if (fp_l) : fclose(fp_l); 0.00 : 4051d1: e8 fa bb ff ff callq 400dd0 : fp_l = print_prep(LINE, mode); 0.00 : 4051d6: 89 de mov %ebx,%esi 0.00 : 4051d8: bf 05 00 00 00 mov $0x5,%edi 0.00 : 4051dd: e8 ce f5 ff ff callq 4047b0 : last_mode = mode; 0.00 : 4051e2: 89 1d 80 62 20 00 mov %ebx,0x206280(%rip) # 60b468 : : if (fp_l == NULL || mode != last_mode) : { : if (fp_l) : fclose(fp_l); : fp_l = print_prep(LINE, mode); 0.00 : 4051e8: 48 89 05 81 62 20 00 mov %rax,0x206281(%rip) # 60b470 : last_mode = mode; : } : : for (i = 0; i < o->lines; i++) 0.00 : 4051ef: 49 83 7c 24 60 00 cmpq $0x0,0x60(%r12) 0.00 : 4051f5: 0f 8e 5b 02 00 00 jle 405456 0.00 : 4051fb: 4d 89 e6 mov %r12,%r14 0.00 : 4051fe: 45 31 ed xor %r13d,%r13d 0.00 : 405201: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : PR_STRT(fp_l); : PR_HUGE(fp_l, &o->l[i].okey); 0.00 : 405208: 4b 8d 5c ad 00 lea 0x0(%r13,%r13,4),%rbx /home/Computational/mark/src/dbt3/src/dbgen/print.c:230 20.00 : 40520d: 48 8b 35 5c 62 20 00 mov 0x20625c(%rip),%rsi # 60b470 0.00 : 405214: 31 c9 xor %ecx,%ecx 0.00 : 405216: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40521c: bf 03 00 00 00 mov $0x3,%edi 0.00 : 405221: 48 8d 1c 9b lea (%rbx,%rbx,4),%rbx 0.00 : 405225: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 405229: 49 8d ac 1c c0 00 00 lea 0xc0(%r12,%rbx,1),%rbp 0.00 : 405230: 00 0.00 : 405231: 48 89 ea mov %rbp,%rdx 0.00 : 405234: e8 87 f4 ff ff callq 4046c0 : PR_HUGE(fp_l, &o->l[i].partkey); 0.00 : 405239: 48 8b 35 30 62 20 00 mov 0x206230(%rip),%rsi # 60b470 0.00 : 405240: 48 8d 55 08 lea 0x8(%rbp),%rdx 0.00 : 405244: 31 c9 xor %ecx,%ecx 0.00 : 405246: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40524c: bf 03 00 00 00 mov $0x3,%edi : PR_HUGE(fp_l, &o->l[i].suppkey); 0.00 : 405251: 49 8d ac 1c d0 00 00 lea 0xd0(%r12,%rbx,1),%rbp 0.00 : 405258: 00 : : for (i = 0; i < o->lines; i++) : { : PR_STRT(fp_l); : PR_HUGE(fp_l, &o->l[i].okey); : PR_HUGE(fp_l, &o->l[i].partkey); 0.00 : 405259: e8 62 f4 ff ff callq 4046c0 : PR_HUGE(fp_l, &o->l[i].suppkey); 0.00 : 40525e: 48 8b 35 0b 62 20 00 mov 0x20620b(%rip),%rsi # 60b470 0.00 : 405265: 31 c9 xor %ecx,%ecx 0.00 : 405267: 48 89 ea mov %rbp,%rdx 0.00 : 40526a: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 405270: bf 03 00 00 00 mov $0x3,%edi 0.00 : 405275: e8 46 f4 ff ff callq 4046c0 : PR_HUGE(fp_l, &o->l[i].lcnt); 0.00 : 40527a: 48 8b 35 ef 61 20 00 mov 0x2061ef(%rip),%rsi # 60b470 0.00 : 405281: 48 8d 55 08 lea 0x8(%rbp),%rdx 0.00 : 405285: 31 c9 xor %ecx,%ecx 0.00 : 405287: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40528d: bf 03 00 00 00 mov $0x3,%edi : PR_HUGE(fp_l, &o->l[i].quantity); 0.00 : 405292: 49 8d ac 1c e0 00 00 lea 0xe0(%r12,%rbx,1),%rbp 0.00 : 405299: 00 : { : PR_STRT(fp_l); : PR_HUGE(fp_l, &o->l[i].okey); : PR_HUGE(fp_l, &o->l[i].partkey); : PR_HUGE(fp_l, &o->l[i].suppkey); : PR_HUGE(fp_l, &o->l[i].lcnt); 0.00 : 40529a: e8 21 f4 ff ff callq 4046c0 : PR_HUGE(fp_l, &o->l[i].quantity); 0.00 : 40529f: 48 8b 35 ca 61 20 00 mov 0x2061ca(%rip),%rsi # 60b470 0.00 : 4052a6: 31 c9 xor %ecx,%ecx 0.00 : 4052a8: 48 89 ea mov %rbp,%rdx 0.00 : 4052ab: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4052b1: bf 03 00 00 00 mov $0x3,%edi 0.00 : 4052b6: e8 05 f4 ff ff callq 4046c0 : PR_MONEY(fp_l, &o->l[i].eprice); 0.00 : 4052bb: 48 8b 35 ae 61 20 00 mov 0x2061ae(%rip),%rsi # 60b470 0.00 : 4052c2: 48 8d 55 08 lea 0x8(%rbp),%rdx 0.00 : 4052c6: 31 c9 xor %ecx,%ecx 0.00 : 4052c8: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4052ce: bf 05 00 00 00 mov $0x5,%edi : PR_MONEY(fp_l, &o->l[i].discount); 0.00 : 4052d3: 49 8d ac 1c f0 00 00 lea 0xf0(%r12,%rbx,1),%rbp 0.00 : 4052da: 00 : PR_HUGE(fp_l, &o->l[i].okey); : PR_HUGE(fp_l, &o->l[i].partkey); : PR_HUGE(fp_l, &o->l[i].suppkey); : PR_HUGE(fp_l, &o->l[i].lcnt); : PR_HUGE(fp_l, &o->l[i].quantity); : PR_MONEY(fp_l, &o->l[i].eprice); 0.00 : 4052db: e8 e0 f3 ff ff callq 4046c0 : PR_MONEY(fp_l, &o->l[i].discount); 0.00 : 4052e0: 48 8b 35 89 61 20 00 mov 0x206189(%rip),%rsi # 60b470 0.00 : 4052e7: 31 c9 xor %ecx,%ecx 0.00 : 4052e9: 48 89 ea mov %rbp,%rdx 0.00 : 4052ec: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4052f2: bf 05 00 00 00 mov $0x5,%edi 0.00 : 4052f7: e8 c4 f3 ff ff callq 4046c0 : PR_MONEY(fp_l, &o->l[i].tax); 0.00 : 4052fc: 48 8b 35 6d 61 20 00 mov 0x20616d(%rip),%rsi # 60b470 0.00 : 405303: 48 8d 55 08 lea 0x8(%rbp),%rdx 0.00 : 405307: 31 c9 xor %ecx,%ecx 0.00 : 405309: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40530f: bf 05 00 00 00 mov $0x5,%edi : PR_CHR(fp_l, &o->l[i].rflag[0]); 0.00 : 405314: 49 8d ac 1c 00 01 00 lea 0x100(%r12,%rbx,1),%rbp 0.00 : 40531b: 00 : PR_HUGE(fp_l, &o->l[i].suppkey); : PR_HUGE(fp_l, &o->l[i].lcnt); : PR_HUGE(fp_l, &o->l[i].quantity); : PR_MONEY(fp_l, &o->l[i].eprice); : PR_MONEY(fp_l, &o->l[i].discount); : PR_MONEY(fp_l, &o->l[i].tax); 0.00 : 40531c: e8 9f f3 ff ff callq 4046c0 : PR_CHR(fp_l, &o->l[i].rflag[0]); 0.00 : 405321: 48 8b 35 48 61 20 00 mov 0x206148(%rip),%rsi # 60b470 0.00 : 405328: 31 c9 xor %ecx,%ecx 0.00 : 40532a: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 405330: 48 89 ea mov %rbp,%rdx 0.00 : 405333: bf 06 00 00 00 mov $0x6,%edi 0.00 : 405338: e8 83 f3 ff ff callq 4046c0 : PR_CHR(fp_l, &o->l[i].lstatus[0]); 0.00 : 40533d: 48 8b 35 2c 61 20 00 mov 0x20612c(%rip),%rsi # 60b470 0.00 : 405344: 48 8d 55 01 lea 0x1(%rbp),%rdx 0.00 : 405348: 31 c9 xor %ecx,%ecx 0.00 : 40534a: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 405350: bf 06 00 00 00 mov $0x6,%edi 0.00 : 405355: e8 66 f3 ff ff callq 4046c0 : PR_STR(fp_l, o->l[i].sdate, DATE_LEN); 0.00 : 40535a: 48 8b 35 0f 61 20 00 mov 0x20610f(%rip),%rsi # 60b470 0.00 : 405361: 48 8d 55 0f lea 0xf(%rbp),%rdx 0.00 : 405365: 31 ff xor %edi,%edi 0.00 : 405367: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40536d: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 405372: e8 49 f3 ff ff callq 4046c0 : PR_STR(fp_l, o->l[i].cdate, DATE_LEN); 0.00 : 405377: 48 8b 35 f2 60 20 00 mov 0x2060f2(%rip),%rsi # 60b470 0.00 : 40537e: 48 8d 55 02 lea 0x2(%rbp),%rdx 0.00 : 405382: 31 ff xor %edi,%edi 0.00 : 405384: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40538a: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 40538f: e8 2c f3 ff ff callq 4046c0 : PR_STR(fp_l, o->l[i].rdate, DATE_LEN); 0.00 : 405394: 48 8b 35 d5 60 20 00 mov 0x2060d5(%rip),%rsi # 60b470 0.00 : 40539b: 49 8d 94 1c 1c 01 00 lea 0x11c(%r12,%rbx,1),%rdx 0.00 : 4053a2: 00 0.00 : 4053a3: 31 ff xor %edi,%edi 0.00 : 4053a5: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4053ab: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 4053b0: e8 0b f3 ff ff callq 4046c0 : PR_STR(fp_l, o->l[i].shipinstruct, L_INST_LEN); 0.00 : 4053b5: 48 8b 35 b4 60 20 00 mov 0x2060b4(%rip),%rsi # 60b470 0.00 : 4053bc: 49 8d 94 1c 29 01 00 lea 0x129(%r12,%rbx,1),%rdx 0.00 : 4053c3: 00 0.00 : 4053c4: 31 ff xor %edi,%edi 0.00 : 4053c6: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4053cc: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 4053d1: e8 ea f2 ff ff callq 4046c0 : PR_STR(fp_l, o->l[i].shipmode, L_SMODE_LEN); 0.00 : 4053d6: 48 8b 35 93 60 20 00 mov 0x206093(%rip),%rsi # 60b470 0.00 : 4053dd: 49 8d 94 1c 3e 01 00 lea 0x13e(%r12,%rbx,1),%rdx 0.00 : 4053e4: 00 0.00 : 4053e5: 31 ff xor %edi,%edi 0.00 : 4053e7: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4053ed: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 4053f2: e8 c9 f2 ff ff callq 4046c0 : PR_VSTR_LAST(fp_l, o->l[i].comment,o->l[i].clen); 0.00 : 4053f7: 41 8b 8e 80 01 00 00 mov 0x180(%r14),%ecx 0.00 : 4053fe: 48 8b 35 6b 60 20 00 mov 0x20606b(%rip),%rsi # 60b470 0.00 : 405405: 49 8d 94 1c 53 01 00 lea 0x153(%r12,%rbx,1),%rdx 0.00 : 40540c: 00 0.00 : 40540d: 45 31 c0 xor %r8d,%r8d 0.00 : 405410: 31 ff xor %edi,%edi 0.00 : 405412: e8 a9 f2 ff ff callq 4046c0 : PR_END(fp_l); 0.00 : 405417: 48 8b 3d 52 60 20 00 mov 0x206052(%rip),%rdi # 60b470 0.00 : 40541e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 405423: 48 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%rsi : fclose(fp_l); : fp_l = print_prep(LINE, mode); : last_mode = mode; : } : : for (i = 0; i < o->lines; i++) 0.00 : 40542a: 49 83 c5 01 add $0x1,%r13 0.00 : 40542e: 49 81 c6 c8 00 00 00 add $0xc8,%r14 : PR_STR(fp_l, o->l[i].cdate, DATE_LEN); : PR_STR(fp_l, o->l[i].rdate, DATE_LEN); : PR_STR(fp_l, o->l[i].shipinstruct, L_INST_LEN); : PR_STR(fp_l, o->l[i].shipmode, L_SMODE_LEN); : PR_VSTR_LAST(fp_l, o->l[i].comment,o->l[i].clen); : PR_END(fp_l); 0.00 : 405435: e8 76 ba ff ff callq 400eb0 0.00 : 40543a: 48 8b 35 2f 60 20 00 mov 0x20602f(%rip),%rsi # 60b470 /home/Computational/mark/src/dbt3/src/dbgen/print.c:246 40.00 : 405441: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 405446: e8 d5 b9 ff ff callq 400e20 : fclose(fp_l); : fp_l = print_prep(LINE, mode); : last_mode = mode; : } : : for (i = 0; i < o->lines; i++) 0.00 : 40544b: 4d 39 6c 24 60 cmp %r13,0x60(%r12) 0.00 : 405450: 0f 8f b2 fd ff ff jg 405208 : PR_VSTR_LAST(fp_l, o->l[i].comment,o->l[i].clen); : PR_END(fp_l); : } : : return(0); : } /home/Computational/mark/src/dbt3/src/dbgen/print.c:250 20.00 : 405456: 5b pop %rbx 0.00 : 405457: 5d pop %rbp 0.00 : 405458: 41 5c pop %r12 0.00 : 40545a: 41 5d pop %r13 0.00 : 40545c: 31 c0 xor %eax,%eax 0.00 : 40545e: 41 5e pop %r14 Sorted summary for file /bin/bash ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000422440 : 0.00 : 422440: 55 push %rbp 0.00 : 422441: 48 89 fd mov %rdi,%rbp 0.00 : 422444: 53 push %rbx 0.00 : 422445: 48 83 ec 08 sub $0x8,%rsp 0.00 : 422449: 48 85 ff test %rdi,%rdi 0.00 : 42244c: 74 07 je 422455 0.00 : 42244e: 0f b6 1f movzbl (%rdi),%ebx ??:0 33.33 : 422451: 84 db test %bl,%bl 0.00 : 422453: 75 0b jne 422460 0.00 : 422455: 31 c0 xor %eax,%eax 0.00 : 422457: 48 83 c4 08 add $0x8,%rsp 0.00 : 42245b: 5b pop %rbx 0.00 : 42245c: 5d pop %rbp 0.00 : 42245d: c3 retq 0.00 : 42245e: 66 90 xchg %ax,%ax 0.00 : 422460: e8 2b 40 ff ff callq 416490 <__ctype_b_loc@plt> 0.00 : 422465: 48 8b 30 mov (%rax),%rsi 0.00 : 422468: 0f b6 c3 movzbl %bl,%eax 33.33 : 42246b: f6 44 46 01 04 testb $0x4,0x1(%rsi,%rax,2) 33.33 : 422470: 74 2e je 4224a0 0.00 : 422472: 0f b6 55 01 movzbl 0x1(%rbp),%edx 0.00 : 422476: 48 8d 4d 01 lea 0x1(%rbp),%rcx 0.00 : 42247a: 84 d2 test %dl,%dl 0.00 : 42247c: 75 0d jne 42248b 0.00 : 42247e: eb 38 jmp 4224b8 0.00 : 422480: 48 83 c1 01 add $0x1,%rcx 0.00 : 422484: 0f b6 11 movzbl (%rcx),%edx 0.00 : 422487: 84 d2 test %dl,%dl 0.00 : 422489: 74 2d je 4224b8 0.00 : 42248b: 0f b6 c2 movzbl %dl,%eax 0.00 : 42248e: f6 04 46 08 testb $0x8,(%rsi,%rax,2) 0.00 : 422492: 75 ec jne 422480 0.00 : 422494: 80 fa 5f cmp $0x5f,%dl 0.00 : 422497: 75 bc jne 422455 0.00 : 422499: eb e5 jmp 422480 0.00 : 42249b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4224a0: 80 fb 5f cmp $0x5f,%bl 0.00 : 4224a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4224a8: 75 ab jne 422455 0.00 : 4224aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4224b0: eb c0 jmp 422472 0.00 : 4224b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4224b8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4224bd: 0f 1f 00 nopl (%rax) 0.00 : 4224c0: eb 95 jmp 422457 Sorted summary for file /bin/bash ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000423560 : ??:0 20.00 : 423560: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 40.00 : 423565: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 42356a: 48 89 fb mov %rdi,%rbx 0.00 : 42356d: 48 83 ec 18 sub $0x18,%rsp 0.00 : 423571: e8 7a fa ff ff callq 422ff0 0.00 : 423576: 80 3b 00 cmpb $0x0,(%rbx) 20.00 : 423579: 48 89 c5 mov %rax,%rbp 0.00 : 42357c: 75 2a jne 4235a8 0.00 : 42357e: bf 01 00 00 00 mov $0x1,%edi 0.00 : 423583: e8 38 4d 03 00 callq 4582c0 0.00 : 423588: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 42358c: c6 00 00 movb $0x0,(%rax) 0.00 : 42358f: 48 89 e8 mov %rbp,%rax 0.00 : 423592: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 423597: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 42359c: 48 83 c4 18 add $0x18,%rsp 0.00 : 4235a0: c3 retq 0.00 : 4235a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4235a8: 48 89 df mov %rbx,%rdi 0.00 : 4235ab: e8 40 2e ff ff callq 4163f0 0.00 : 4235b0: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 4235b4: e8 07 4d 03 00 callq 4582c0 0.00 : 4235b9: 48 89 de mov %rbx,%rsi 0.00 : 4235bc: 48 89 c7 mov %rax,%rdi 20.00 : 4235bf: e8 ac 33 ff ff callq 416970 0.00 : 4235c4: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 4235c8: eb c5 jmp 42358f Sorted summary for file /bin/bash ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042dc40 : ??:0 66.67 : 42dc40: 41 55 push %r13 33.33 : 42dc42: 41 89 d5 mov %edx,%r13d 0.00 : 42dc45: 41 54 push %r12 0.00 : 42dc47: 49 89 f4 mov %rsi,%r12 0.00 : 42dc4a: 55 push %rbp 0.00 : 42dc4b: 48 89 fd mov %rdi,%rbp 0.00 : 42dc4e: 53 push %rbx 0.00 : 42dc4f: 48 83 ec 08 sub $0x8,%rsp 0.00 : 42dc53: 48 83 3d 0d 6d 26 00 cmpq $0x0,0x266d0d(%rip) # 694968 0.00 : 42dc5a: 00 0.00 : 42dc5b: 0f 84 dc 00 00 00 je 42dd3d 0.00 : 42dc61: 48 8b 35 20 6d 26 00 mov 0x266d20(%rip),%rsi # 694988 0.00 : 42dc68: 48 85 f6 test %rsi,%rsi 0.00 : 42dc6b: 74 5c je 42dcc9 0.00 : 42dc6d: 31 d2 xor %edx,%edx 0.00 : 42dc6f: 48 89 ef mov %rbp,%rdi 0.00 : 42dc72: e8 99 6a 01 00 callq 444710 0.00 : 42dc77: 48 85 c0 test %rax,%rax 0.00 : 42dc7a: 74 4d je 42dcc9 0.00 : 42dc7c: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 42dc80: 48 85 db test %rbx,%rbx 0.00 : 42dc83: 74 44 je 42dcc9 0.00 : 42dc85: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 42dc89: 48 85 ff test %rdi,%rdi 0.00 : 42dc8c: 74 05 je 42dc93 0.00 : 42dc8e: e8 2d 87 fe ff callq 4163c0 0.00 : 42dc93: 4c 89 e7 mov %r12,%rdi 0.00 : 42dc96: e8 55 87 fe ff callq 4163f0 0.00 : 42dc9b: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 42dc9f: e8 1c a6 02 00 callq 4582c0 0.00 : 42dca4: 4c 89 e6 mov %r12,%rsi 0.00 : 42dca7: 48 89 c7 mov %rax,%rdi 0.00 : 42dcaa: e8 c1 8c fe ff callq 416970 0.00 : 42dcaf: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 42dcb3: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 42dcb7: 48 85 ff test %rdi,%rdi 0.00 : 42dcba: 74 0d je 42dcc9 0.00 : 42dcbc: e8 ff 86 fe ff callq 4163c0 0.00 : 42dcc1: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 42dcc8: 00 0.00 : 42dcc9: 48 8b 1d 98 6c 26 00 mov 0x266c98(%rip),%rbx # 694968 0.00 : 42dcd0: 48 85 db test %rbx,%rbx 0.00 : 42dcd3: 75 14 jne 42dce9 0.00 : 42dcd5: eb 41 jmp 42dd18 0.00 : 42dcd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42dcde: 00 00 0.00 : 42dce0: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 42dce4: 48 85 db test %rbx,%rbx 0.00 : 42dce7: 74 2f je 42dd18 0.00 : 42dce9: f6 43 0c 0c testb $0xc,0xc(%rbx) 0.00 : 42dced: 0f 1f 00 nopl (%rax) 0.00 : 42dcf0: 74 ee je 42dce0 0.00 : 42dcf2: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 42dcf6: 31 d2 xor %edx,%edx 0.00 : 42dcf8: 48 89 ef mov %rbp,%rdi 0.00 : 42dcfb: e8 10 6a 01 00 callq 444710 0.00 : 42dd00: 48 85 c0 test %rax,%rax 0.00 : 42dd03: 74 db je 42dce0 0.00 : 42dd05: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 42dd0a: 74 d4 je 42dce0 0.00 : 42dd0c: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 42dd10: eb 11 jmp 42dd23 0.00 : 42dd12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42dd18: 48 8b 05 41 6c 26 00 mov 0x266c41(%rip),%rax # 694960 0.00 : 42dd1f: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 42dd23: 48 83 c4 08 add $0x8,%rsp 0.00 : 42dd27: 48 89 ef mov %rbp,%rdi 0.00 : 42dd2a: 4c 89 e6 mov %r12,%rsi 0.00 : 42dd2d: 5b pop %rbx 0.00 : 42dd2e: 5d pop %rbp 0.00 : 42dd2f: 41 5c pop %r12 0.00 : 42dd31: 45 89 e8 mov %r13d,%r8d 0.00 : 42dd34: 31 c9 xor %ecx,%ecx 0.00 : 42dd36: 41 5d pop %r13 0.00 : 42dd38: e9 13 fb ff ff jmpq 42d850 0.00 : 42dd3d: e8 ee e4 ff ff callq 42c230 0.00 : 42dd42: e9 1a ff ff ff jmpq 42dc61 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042fc20 : ??:0 50.00 : 42fc20: 41 54 push %r12 0.00 : 42fc22: 8b 05 d8 b1 25 00 mov 0x25b1d8(%rip),%eax # 68ae00 0.00 : 42fc28: 55 push %rbp 0.00 : 42fc29: 85 c0 test %eax,%eax 0.00 : 42fc2b: 53 push %rbx 0.00 : 42fc2c: 0f 84 23 01 00 00 je 42fd55 0.00 : 42fc32: 48 8b 3d 5f 4d 26 00 mov 0x264d5f(%rip),%rdi # 694998 0.00 : 42fc39: 48 85 ff test %rdi,%rdi 0.00 : 42fc3c: 74 05 je 42fc43 0.00 : 42fc3e: e8 4d c3 03 00 callq 46bf90 0.00 : 42fc43: 48 8b 0d 1e 4d 26 00 mov 0x264d1e(%rip),%rcx # 694968 0.00 : 42fc4a: 31 f6 xor %esi,%esi 0.00 : 42fc4c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 42fc51: 48 85 c9 test %rcx,%rcx 0.00 : 42fc54: 74 26 je 42fc7c 0.00 : 42fc56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 42fc5d: 00 00 00 0.00 : 42fc60: 48 8b 51 20 mov 0x20(%rcx),%rdx 0.00 : 42fc64: 31 c0 xor %eax,%eax 0.00 : 42fc66: 48 85 d2 test %rdx,%rdx 0.00 : 42fc69: 74 03 je 42fc6e 0.00 : 42fc6b: 8b 42 0c mov 0xc(%rdx),%eax 0.00 : 42fc6e: 48 8b 49 18 mov 0x18(%rcx),%rcx 0.00 : 42fc72: 01 c6 add %eax,%esi 0.00 : 42fc74: 48 85 c9 test %rcx,%rcx 0.00 : 42fc77: 75 e7 jne 42fc60 0.00 : 42fc79: 8d 7e 01 lea 0x1(%rsi),%edi 0.00 : 42fc7c: 48 8b 15 ed 4c 26 00 mov 0x264ced(%rip),%rdx # 694970 0.00 : 42fc83: 31 c0 xor %eax,%eax 0.00 : 42fc85: 48 85 d2 test %rdx,%rdx 0.00 : 42fc88: 74 03 je 42fc8d 0.00 : 42fc8a: 8b 42 0c mov 0xc(%rdx),%eax 0.00 : 42fc8d: 48 8b 15 f4 4c 26 00 mov 0x264cf4(%rip),%rdx # 694988 0.00 : 42fc94: 31 c9 xor %ecx,%ecx 0.00 : 42fc96: 48 85 d2 test %rdx,%rdx 0.00 : 42fc99: 74 03 je 42fc9e 0.00 : 42fc9b: 8b 4a 0c mov 0xc(%rdx),%ecx 0.00 : 42fc9e: 01 f8 add %edi,%eax 0.00 : 42fca0: 8d 34 08 lea (%rax,%rcx,1),%esi 0.00 : 42fca3: 3b 35 13 4d 26 00 cmp 0x264d13(%rip),%esi # 6949bc 0.00 : 42fca9: 0f 8f b1 00 00 00 jg 42fd60 0.00 : 42fcaf: 48 83 3d d1 4c 26 00 cmpq $0x0,0x264cd1(%rip) # 694988 0.00 : 42fcb6: 00 0.00 : 42fcb7: 48 8b 05 da 4c 26 00 mov 0x264cda(%rip),%rax # 694998 0.00 : 42fcbe: c7 05 f0 4c 26 00 00 movl $0x0,0x264cf0(%rip) # 6949b8 0.00 : 42fcc5: 00 00 00 0.00 : 42fcc8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 42fccf: 0f 84 b3 00 00 00 je 42fd88 0.00 : 42fcd5: 31 f6 xor %esi,%esi 0.00 : 42fcd7: 31 ff xor %edi,%edi 0.00 : 42fcd9: e8 c2 c4 ff ff callq 42c1a0 0.00 : 42fcde: 48 89 c5 mov %rax,%rbp 0.00 : 42fce1: 48 8b 05 a0 4c 26 00 mov 0x264ca0(%rip),%rax # 694988 0.00 : 42fce8: 48 89 45 20 mov %rax,0x20(%rbp) 0.00 : 42fcec: 48 8b 05 75 4c 26 00 mov 0x264c75(%rip),%rax # 694968 0.00 : 42fcf3: 48 89 45 18 mov %rax,0x18(%rbp) 0.00 : 42fcf7: 48 89 ee mov %rbp,%rsi 0.00 : 42fcfa: bf 20 b2 42 00 mov $0x42b220,%edi 0.00 : 42fcff: e8 ac c3 ff ff callq 42c0b0 0.00 : 42fd04: 48 85 c0 test %rax,%rax 0.00 : 42fd07: 48 89 c3 mov %rax,%rbx 0.00 : 42fd0a: 74 24 je 42fd30 0.00 : 42fd0c: 48 89 c7 mov %rax,%rdi 0.00 : 42fd0f: e8 1c fd ff ff callq 42fa30 0.00 : 42fd14: 48 89 df mov %rbx,%rdi 0.00 : 42fd17: 49 89 c4 mov %rax,%r12 0.00 : 42fd1a: e8 a1 66 fe ff callq 4163c0 0.00 : 42fd1f: 4d 85 e4 test %r12,%r12 0.00 : 42fd22: 74 0c je 42fd30 0.00 : 42fd24: 31 d2 xor %edx,%edx 0.00 : 42fd26: 31 f6 xor %esi,%esi 0.00 : 42fd28: 4c 89 e7 mov %r12,%rdi 0.00 : 42fd2b: e8 30 cc ff ff callq 42c960 0.00 : 42fd30: 48 3b 2d 31 4c 26 00 cmp 0x264c31(%rip),%rbp # 694968 0.00 : 42fd37: 74 08 je 42fd41 0.00 : 42fd39: 48 89 ef mov %rbp,%rdi 0.00 : 42fd3c: e8 7f 66 fe ff callq 4163c0 0.00 : 42fd41: 8b 05 ed 4d 26 00 mov 0x264ded(%rip),%eax # 694b34 0.00 : 42fd47: 85 c0 test %eax,%eax 0.00 : 42fd49: 74 4d je 42fd98 25.00 : 42fd4b: c7 05 ab b0 25 00 00 movl $0x0,0x25b0ab(%rip) # 68ae00 0.00 : 42fd52: 00 00 00 25.00 : 42fd55: 5b pop %rbx 0.00 : 42fd56: 5d pop %rbp 0.00 : 42fd57: 41 5c pop %r12 0.00 : 42fd59: c3 retq 0.00 : 42fd5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42fd60: 48 8b 3d 31 4c 26 00 mov 0x264c31(%rip),%rdi # 694998 0.00 : 42fd67: 89 35 4f 4c 26 00 mov %esi,0x264c4f(%rip) # 6949bc 0.00 : 42fd6d: e8 6e c6 03 00 callq 46c3e0 0.00 : 42fd72: 48 89 05 1f 4c 26 00 mov %rax,0x264c1f(%rip) # 694998 0.00 : 42fd79: 48 89 05 a0 03 26 00 mov %rax,0x2603a0(%rip) # 690120 <__environ> 0.00 : 42fd80: e9 2a ff ff ff jmpq 42fcaf 0.00 : 42fd85: 0f 1f 00 nopl (%rax) 0.00 : 42fd88: 48 8b 2d d9 4b 26 00 mov 0x264bd9(%rip),%rbp # 694968 0.00 : 42fd8f: e9 63 ff ff ff jmpq 42fcf7 0.00 : 42fd94: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42fd98: bf 20 b2 42 00 mov $0x42b220,%edi 0.00 : 42fd9d: e8 9e c2 ff ff callq 42c040 0.00 : 42fda2: 48 85 c0 test %rax,%rax 0.00 : 42fda5: 48 89 c3 mov %rax,%rbx 0.00 : 42fda8: 74 a1 je 42fd4b 0.00 : 42fdaa: 48 89 c7 mov %rax,%rdi 0.00 : 42fdad: e8 7e fc ff ff callq 42fa30 0.00 : 42fdb2: 48 89 df mov %rbx,%rdi 0.00 : 42fdb5: 48 89 c5 mov %rax,%rbp 0.00 : 42fdb8: e8 03 66 fe ff callq 4163c0 0.00 : 42fdbd: 48 85 ed test %rbp,%rbp 0.00 : 42fdc0: 74 89 je 42fd4b 0.00 : 42fdc2: 31 d2 xor %edx,%edx 0.00 : 42fdc4: 31 f6 xor %esi,%esi 0.00 : 42fdc6: 48 89 ef mov %rbp,%rdi 0.00 : 42fdc9: e8 92 cb ff ff callq 42c960 0.00 : 42fdce: e9 78 ff ff ff jmpq 42fd4b Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000435fe0 : ??:0 50.00 : 435fe0: 41 55 push %r13 0.00 : 435fe2: 41 54 push %r12 0.00 : 435fe4: 41 89 fc mov %edi,%r12d 0.00 : 435fe7: 55 push %rbp 0.00 : 435fe8: 53 push %rbx 0.00 : 435fe9: 48 81 ec 08 01 00 00 sub $0x108,%rsp 0.00 : 435ff0: 48 8d 9c 24 80 00 00 lea 0x80(%rsp),%rbx 0.00 : 435ff7: 00 0.00 : 435ff8: 48 89 df mov %rbx,%rdi 0.00 : 435ffb: e8 40 0b fe ff callq 416b40 25.00 : 436000: be 11 00 00 00 mov $0x11,%esi 25.00 : 436005: 48 89 df mov %rbx,%rdi 0.00 : 436008: e8 a3 08 fe ff callq 4168b0 0.00 : 43600d: 48 89 e7 mov %rsp,%rdi 0.00 : 436010: e8 2b 0b fe ff callq 416b40 0.00 : 436015: 31 ff xor %edi,%edi 0.00 : 436017: 48 89 e2 mov %rsp,%rdx 0.00 : 43601a: 48 89 de mov %rbx,%rsi 0.00 : 43601d: e8 be 05 fe ff callq 4165e0 0.00 : 436022: 83 3d f3 51 25 00 00 cmpl $0x0,0x2551f3(%rip) # 68b21c 0.00 : 436029: 74 7d je 4360a8 0.00 : 43602b: c7 05 ff 51 25 00 ff movl $0xffffffff,0x2551ff(%rip) # 68b234 0.00 : 436032: ff ff ff 0.00 : 436035: c7 05 f1 51 25 00 ff movl $0xffffffff,0x2551f1(%rip) # 68b230 0.00 : 43603c: ff ff ff 0.00 : 43603f: 7e 40 jle 436081 0.00 : 436041: 31 db xor %ebx,%ebx 0.00 : 436043: 31 ed xor %ebp,%ebp 0.00 : 436045: 0f 1f 00 nopl (%rax) 0.00 : 436048: 48 8b 05 29 eb 25 00 mov 0x25eb29(%rip),%rax # 694b78 0.00 : 43604f: 48 8b 04 28 mov (%rax,%rbp,1),%rax 0.00 : 436053: 48 85 c0 test %rax,%rax 0.00 : 436056: 74 1a je 436072 0.00 : 436058: 45 85 e4 test %r12d,%r12d 0.00 : 43605b: 74 09 je 436066 0.00 : 43605d: 44 8b 68 14 mov 0x14(%rax),%r13d 0.00 : 436061: 45 85 ed test %r13d,%r13d 0.00 : 436064: 75 0c jne 436072 0.00 : 436066: be 01 00 00 00 mov $0x1,%esi 0.00 : 43606b: 89 df mov %ebx,%edi 0.00 : 43606d: e8 4e fb ff ff callq 435bc0 0.00 : 436072: 83 c3 01 add $0x1,%ebx 0.00 : 436075: 48 83 c5 08 add $0x8,%rbp 0.00 : 436079: 39 1d 9d 51 25 00 cmp %ebx,0x25519d(%rip) # 68b21c 0.00 : 43607f: 7f c7 jg 436048 0.00 : 436081: 45 85 e4 test %r12d,%r12d 0.00 : 436084: 74 7a je 436100 0.00 : 436086: 48 89 e6 mov %rsp,%rsi 0.00 : 436089: 31 d2 xor %edx,%edx 0.00 : 43608b: bf 02 00 00 00 mov $0x2,%edi 0.00 : 436090: e8 4b 05 fe ff callq 4165e0 0.00 : 436095: 48 81 c4 08 01 00 00 add $0x108,%rsp 0.00 : 43609c: 5b pop %rbx 0.00 : 43609d: 5d pop %rbp 0.00 : 43609e: 41 5c pop %r12 0.00 : 4360a0: 41 5d pop %r13 0.00 : 4360a2: c3 retq 0.00 : 4360a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4360a8: 45 85 e4 test %r12d,%r12d 0.00 : 4360ab: 75 d9 jne 436086 0.00 : 4360ad: 48 8b 3d ac ea 25 00 mov 0x25eaac(%rip),%rdi # 694b60 0.00 : 4360b4: 48 85 ff test %rdi,%rdi 0.00 : 4360b7: 75 32 jne 4360eb 0.00 : 4360b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4360c0: 48 c7 05 9d ea 25 00 movq $0x0,0x25ea9d(%rip) # 694b68 0.00 : 4360c7: 00 00 00 00 0.00 : 4360cb: 48 c7 05 8a ea 25 00 movq $0x0,0x25ea8a(%rip) # 694b60 0.00 : 4360d2: 00 00 00 00 0.00 : 4360d6: c7 05 90 ea 25 00 00 movl $0x0,0x25ea90(%rip) # 694b70 0.00 : 4360dd: 00 00 00 0.00 : 4360e0: eb a4 jmp 436086 0.00 : 4360e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4360e8: 48 89 df mov %rbx,%rdi 0.00 : 4360eb: 48 8b 1f mov (%rdi),%rbx 0.00 : 4360ee: e8 cd 02 fe ff callq 4163c0 0.00 : 4360f3: 48 85 db test %rbx,%rbx 0.00 : 4360f6: 75 f0 jne 4360e8 0.00 : 4360f8: eb c6 jmp 4360c0 0.00 : 4360fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 436100: 48 8b 3d 71 ea 25 00 mov 0x25ea71(%rip),%rdi # 694b78 0.00 : 436107: e8 b4 02 fe ff callq 4163c0 0.00 : 43610c: 48 8b 3d 4d ea 25 00 mov 0x25ea4d(%rip),%rdi # 694b60 0.00 : 436113: c7 05 ff 50 25 00 00 movl $0x0,0x2550ff(%rip) # 68b21c 0.00 : 43611a: 00 00 00 0.00 : 43611d: c7 05 01 51 25 00 00 movl $0x0,0x255101(%rip) # 68b228 0.00 : 436124: 00 00 00 0.00 : 436127: c7 05 ef 50 25 00 00 movl $0x0,0x2550ef(%rip) # 68b220 0.00 : 43612e: 00 00 00 0.00 : 436131: c7 05 e9 50 25 00 00 movl $0x0,0x2550e9(%rip) # 68b224 0.00 : 436138: 00 00 00 0.00 : 43613b: 48 85 ff test %rdi,%rdi 0.00 : 43613e: 75 ab jne 4360eb 0.00 : 436140: e9 7b ff ff ff jmpq 4360c0 Sorted summary for file /bin/bash ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004362b0 : 0.00 : 4362b0: 41 57 push %r15 0.00 : 4362b2: 41 56 push %r14 0.00 : 4362b4: 41 89 fe mov %edi,%r14d 0.00 : 4362b7: 41 55 push %r13 0.00 : 4362b9: 41 54 push %r12 0.00 : 4362bb: 55 push %rbp 0.00 : 4362bc: 53 push %rbx 0.00 : 4362bd: 48 81 ec 08 01 00 00 sub $0x108,%rsp 0.00 : 4362c4: 48 8d 9c 24 80 00 00 lea 0x80(%rsp),%rbx 0.00 : 4362cb: 00 0.00 : 4362cc: 48 89 df mov %rbx,%rdi 0.00 : 4362cf: e8 6c 08 fe ff callq 416b40 0.00 : 4362d4: be 11 00 00 00 mov $0x11,%esi 0.00 : 4362d9: 48 89 df mov %rbx,%rdi 0.00 : 4362dc: e8 cf 05 fe ff callq 4168b0 0.00 : 4362e1: 48 89 e7 mov %rsp,%rdi 0.00 : 4362e4: e8 57 08 fe ff callq 416b40 0.00 : 4362e9: 31 ff xor %edi,%edi 0.00 : 4362eb: 48 89 e2 mov %rsp,%rdx 0.00 : 4362ee: 48 89 de mov %rbx,%rsi 0.00 : 4362f1: e8 ea 02 fe ff callq 4165e0 0.00 : 4362f6: 44 8b 15 6b 4f 25 00 mov 0x254f6b(%rip),%r10d # 68b268 ??:0 25.00 : 4362fd: c7 05 b5 f9 25 00 00 movl $0x0,0x25f9b5(%rip) # 695cbc 0.00 : 436304: 00 00 00 0.00 : 436307: 45 85 d2 test %r10d,%r10d 0.00 : 43630a: 0f 84 70 01 00 00 je 436480 0.00 : 436310: f6 05 81 08 26 00 04 testb $0x4,0x260881(%rip) # 696b98 0.00 : 436317: 0f 85 63 01 00 00 jne 436480 0.00 : 43631d: 44 8b 0d b0 d0 25 00 mov 0x25d0b0(%rip),%r9d # 6933d4 25.00 : 436324: 45 85 c9 test %r9d,%r9d 0.00 : 436327: 74 10 je 436339 0.00 : 436329: 44 8b 05 38 4f 25 00 mov 0x254f38(%rip),%r8d # 68b268 0.00 : 436330: 45 85 c0 test %r8d,%r8d 0.00 : 436333: 0f 84 27 02 00 00 je 436560 0.00 : 436339: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 43633f: 90 nop 0.00 : 436340: 31 d2 xor %edx,%edx 0.00 : 436342: 31 f6 xor %esi,%esi 0.00 : 436344: 44 89 f7 mov %r14d,%edi 0.00 : 436347: e8 94 cb ff ff callq 432ee0 0.00 : 43634c: 48 85 c0 test %rax,%rax 0.00 : 43634f: 48 89 c3 mov %rax,%rbx 0.00 : 436352: 0f 84 a8 02 00 00 je 436600 0.00 : 436358: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 43635c: 0f 84 56 01 00 00 je 4364b8 0.00 : 436362: 83 7b 10 01 cmpl $0x1,0x10(%rbx) 0.00 : 436366: 74 1f je 436387 0.00 : 436368: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 43636c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 436370: 74 41 je 4363b3 0.00 : 436372: 48 8b 15 ff e7 25 00 mov 0x25e7ff(%rip),%rdx # 694b78 0.00 : 436379: 49 63 c5 movslq %r13d,%rax 0.00 : 43637c: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 436380: 8b 78 14 mov 0x14(%rax),%edi 0.00 : 436383: 85 ff test %edi,%edi 0.00 : 436385: 75 2c jne 4363b3 0.00 : 436387: be 01 00 00 00 mov $0x1,%esi 0.00 : 43638c: 44 89 f7 mov %r14d,%edi 0.00 : 43638f: c7 05 77 f8 25 00 01 movl $0x1,0x25f877(%rip) # 695c10 0.00 : 436396: 00 00 00 0.00 : 436399: e8 12 e0 ff ff callq 4343b0 0.00 : 43639e: 83 f8 ff cmp $0xffffffff,%eax 25.00 : 4363a1: 89 c5 mov %eax,%ebp 0.00 : 4363a3: c7 05 63 f8 25 00 00 movl $0x0,0x25f863(%rip) # 695c10 0.00 : 4363aa: 00 00 00 25.00 : 4363ad: 0f 84 3d 01 00 00 je 4364f0 0.00 : 4363b3: 8b 35 1b d0 25 00 mov 0x25d01b(%rip),%esi # 6933d4 0.00 : 4363b9: 85 f6 test %esi,%esi 0.00 : 4363bb: 74 2b je 4363e8 0.00 : 4363bd: 8b 0d a5 4e 25 00 mov 0x254ea5(%rip),%ecx # 68b268 0.00 : 4363c3: 85 c9 test %ecx,%ecx 0.00 : 4363c5: 75 21 jne 4363e8 0.00 : 4363c7: 8b 05 73 fb 25 00 mov 0x25fb73(%rip),%eax # 695f40 0.00 : 4363cd: 85 c0 test %eax,%eax 0.00 : 4363cf: 0f 85 0b 01 00 00 jne 4364e0 0.00 : 4363d5: 8b 05 5d fb 25 00 mov 0x25fb5d(%rip),%eax # 695f38 0.00 : 4363db: 85 c0 test %eax,%eax 0.00 : 4363dd: 0f 85 ed 00 00 00 jne 4364d0 0.00 : 4363e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4363e8: 83 7b 10 01 cmpl $0x1,0x10(%rbx) 0.00 : 4363ec: 0f 84 4e ff ff ff je 436340 0.00 : 4363f2: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 4363f6: 0f 84 64 02 00 00 je 436660 0.00 : 4363fc: 4c 8b 25 75 e7 25 00 mov 0x25e775(%rip),%r12 # 694b78 0.00 : 436403: 49 63 c5 movslq %r13d,%rax 0.00 : 436406: 4c 8d 3c c5 00 00 00 lea 0x0(,%rax,8),%r15 0.00 : 43640d: 00 0.00 : 43640e: 49 8b 04 c4 mov (%r12,%rax,8),%rax 0.00 : 436412: 8b 50 14 mov 0x14(%rax),%edx 0.00 : 436415: 85 d2 test %edx,%edx 0.00 : 436417: 0f 84 23 ff ff ff je 436340 0.00 : 43641d: 44 8b 0d 24 e7 25 00 mov 0x25e724(%rip),%r9d # 694b48 0.00 : 436424: 45 85 c9 test %r9d,%r9d 0.00 : 436427: 0f 84 59 01 00 00 je 436586 0.00 : 43642d: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 436431: 31 d2 xor %edx,%edx 0.00 : 436433: 48 89 c8 mov %rcx,%rax 0.00 : 436436: eb 0a jmp 436442 0.00 : 436438: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43643f: 00 0.00 : 436440: 89 fa mov %edi,%edx 0.00 : 436442: 8b 78 0c mov 0xc(%rax),%edi 0.00 : 436445: 48 8b 00 mov (%rax),%rax 0.00 : 436448: 85 ff test %edi,%edi 0.00 : 43644a: 0f 44 fa cmove %edx,%edi 0.00 : 43644d: 48 39 c1 cmp %rax,%rcx 0.00 : 436450: 75 ee jne 436440 0.00 : 436452: 48 89 c8 mov %rcx,%rax 0.00 : 436455: 31 d2 xor %edx,%edx 0.00 : 436457: eb 09 jmp 436462 0.00 : 436459: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 436460: 89 ea mov %ebp,%edx 0.00 : 436462: 8b 68 0c mov 0xc(%rax),%ebp 0.00 : 436465: 48 8b 00 mov (%rax),%rax 0.00 : 436468: 85 ed test %ebp,%ebp 0.00 : 43646a: 0f 44 ea cmove %edx,%ebp 0.00 : 43646d: 48 39 c1 cmp %rax,%rcx 0.00 : 436470: 75 ee jne 436460 0.00 : 436472: e8 29 cb ff ff callq 432fa0 0.00 : 436477: 41 89 c6 mov %eax,%r14d 0.00 : 43647a: e9 3f 01 00 00 jmpq 4365be 0.00 : 43647f: 90 nop 0.00 : 436480: be f0 56 43 00 mov $0x4356f0,%esi 0.00 : 436485: bf 02 00 00 00 mov $0x2,%edi 0.00 : 43648a: e8 d1 15 01 00 callq 447a60 0.00 : 43648f: 48 89 05 e2 4d 25 00 mov %rax,0x254de2(%rip) # 68b278 0.00 : 436496: 48 83 e8 01 sub $0x1,%rax 0.00 : 43649a: 0f 85 7d fe ff ff jne 43631d 0.00 : 4364a0: be 01 00 00 00 mov $0x1,%esi 0.00 : 4364a5: bf 02 00 00 00 mov $0x2,%edi 0.00 : 4364aa: e8 b1 15 01 00 callq 447a60 0.00 : 4364af: e9 69 fe ff ff jmpq 43631d 0.00 : 4364b4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4364b8: 31 d2 xor %edx,%edx 0.00 : 4364ba: 31 f6 xor %esi,%esi 0.00 : 4364bc: 44 89 f7 mov %r14d,%edi 0.00 : 4364bf: e8 9c c9 ff ff callq 432e60 0.00 : 4364c4: 41 89 c5 mov %eax,%r13d 0.00 : 4364c7: e9 96 fe ff ff jmpq 436362 0.00 : 4364cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4364d0: e8 bb 18 01 00 callq 447d90 0.00 : 4364d5: e9 0e ff ff ff jmpq 4363e8 0.00 : 4364da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4364e0: 8b 3d 5a fa 25 00 mov 0x25fa5a(%rip),%edi # 695f40 0.00 : 4364e6: e8 a5 16 01 00 callq 447b90 0.00 : 4364eb: e9 e5 fe ff ff jmpq 4363d5 0.00 : 4364f0: e8 4b 03 fe ff callq 416840 <__errno_location@plt> 0.00 : 4364f5: 83 38 0a cmpl $0xa,(%rax) 0.00 : 4364f8: 0f 85 b5 fe ff ff jne 4363b3 0.00 : 4364fe: 48 81 3d 4f fe 25 00 cmpq $0x4651b0,0x25fe4f(%rip) # 696358 0.00 : 436505: b0 51 46 00 0.00 : 436509: 0f 84 b1 03 00 00 je 4368c0 0.00 : 43650f: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 436513: c7 43 10 00 00 00 00 movl $0x0,0x10(%rbx) 0.00 : 43651a: c7 43 0c 00 00 00 00 movl $0x0,0xc(%rbx) 0.00 : 436521: c7 05 dd 4c 25 00 00 movl $0x0,0x254cdd(%rip) # 68b208 0.00 : 436528: 00 00 00 0.00 : 43652b: 0f 84 82 fe ff ff je 4363b3 0.00 : 436531: 48 8b 15 40 e6 25 00 mov 0x25e640(%rip),%rdx # 694b78 0.00 : 436538: 49 63 c5 movslq %r13d,%rax 0.00 : 43653b: 83 05 ca 4c 25 00 01 addl $0x1,0x254cca(%rip) # 68b20c 0.00 : 436542: 83 05 e3 4c 25 00 01 addl $0x1,0x254ce3(%rip) # 68b22c 0.00 : 436549: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 43654d: c7 40 14 02 00 00 00 movl $0x2,0x14(%rax) 0.00 : 436554: e9 5a fe ff ff jmpq 4363b3 0.00 : 436559: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 436560: 8b 05 da f9 25 00 mov 0x25f9da(%rip),%eax # 695f40 0.00 : 436566: 85 c0 test %eax,%eax 0.00 : 436568: 0f 85 46 02 00 00 jne 4367b4 0.00 : 43656e: 8b 05 c4 f9 25 00 mov 0x25f9c4(%rip),%eax # 695f38 0.00 : 436574: 85 c0 test %eax,%eax 0.00 : 436576: 0f 84 bd fd ff ff je 436339 0.00 : 43657c: e8 0f 18 01 00 callq 447d90 0.00 : 436581: e9 b3 fd ff ff jmpq 436339 0.00 : 436586: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 43658a: 48 89 d0 mov %rdx,%rax 0.00 : 43658d: 0f 1f 00 nopl (%rax) 0.00 : 436590: 48 89 c1 mov %rax,%rcx 0.00 : 436593: 48 8b 00 mov (%rax),%rax 0.00 : 436596: 48 39 c2 cmp %rax,%rdx 0.00 : 436599: 75 f5 jne 436590 0.00 : 43659b: 8b 79 0c mov 0xc(%rcx),%edi 0.00 : 43659e: 48 89 d0 mov %rdx,%rax 0.00 : 4365a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4365a8: 48 89 c5 mov %rax,%rbp 0.00 : 4365ab: 48 8b 00 mov (%rax),%rax 0.00 : 4365ae: 48 39 c2 cmp %rax,%rdx 0.00 : 4365b1: 75 f5 jne 4365a8 0.00 : 4365b3: e8 e8 c9 ff ff callq 432fa0 0.00 : 4365b8: 8b 6d 0c mov 0xc(%rbp),%ebp 0.00 : 4365bb: 41 89 c6 mov %eax,%r14d 0.00 : 4365be: 89 e8 mov %ebp,%eax 0.00 : 4365c0: 31 d2 xor %edx,%edx 0.00 : 4365c2: 83 e0 7f and $0x7f,%eax 0.00 : 4365c5: 83 c0 01 add $0x1,%eax 0.00 : 4365c8: d0 f8 sar %al 0.00 : 4365ca: 84 c0 test %al,%al 0.00 : 4365cc: 7e 05 jle 4365d3 0.00 : 4365ce: 89 ea mov %ebp,%edx 0.00 : 4365d0: 83 e2 7f and $0x7f,%edx 0.00 : 4365d3: 4b 8b 04 3c mov (%r12,%r15,1),%rax 0.00 : 4365d7: 89 15 c3 04 26 00 mov %edx,0x2604c3(%rip) # 696aa0 0.00 : 4365dd: 83 78 14 01 cmpl $0x1,0x14(%rax) 0.00 : 4365e1: 0f 85 a1 00 00 00 jne 436688 0.00 : 4365e7: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 4365ea: 0f b6 c4 movzbl %ah,%eax 0.00 : 4365ed: 44 8d b0 80 00 00 00 lea 0x80(%rax),%r14d 0.00 : 4365f4: e9 9a 00 00 00 jmpq 436693 0.00 : 4365f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 436600: 8b 3d 46 4c 25 00 mov 0x254c46(%rip),%edi # 68b24c 0.00 : 436606: 31 f6 xor %esi,%esi 0.00 : 436608: e8 23 e7 ff ff callq 434d30 0.00 : 43660d: 31 d2 xor %edx,%edx 0.00 : 43660f: 48 89 e6 mov %rsp,%rsi 0.00 : 436612: bf 02 00 00 00 mov $0x2,%edi 0.00 : 436617: e8 c4 ff fd ff callq 4165e0 0.00 : 43661c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 436621: be 50 5b 47 00 mov $0x475b50,%esi 0.00 : 436626: 31 ff xor %edi,%edi 0.00 : 436628: e8 53 02 fe ff callq 416880 0.00 : 43662d: 49 63 f6 movslq %r14d,%rsi 0.00 : 436630: 48 89 c7 mov %rax,%rdi 0.00 : 436633: 41 be 7f 00 00 00 mov $0x7f,%r14d 0.00 : 436639: 31 c0 xor %eax,%eax 0.00 : 43663b: e8 80 a5 ff ff callq 430bc0 0.00 : 436640: e8 1b ca ff ff callq 433060 0.00 : 436645: 48 81 c4 08 01 00 00 add $0x108,%rsp 0.00 : 43664c: 44 89 f0 mov %r14d,%eax 0.00 : 43664f: 5b pop %rbx 0.00 : 436650: 5d pop %rbp 0.00 : 436651: 41 5c pop %r12 0.00 : 436653: 41 5d pop %r13 0.00 : 436655: 41 5e pop %r14 0.00 : 436657: 41 5f pop %r15 0.00 : 436659: c3 retq 0.00 : 43665a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 436660: 8b 6b 0c mov 0xc(%rbx),%ebp 0.00 : 436663: 89 ef mov %ebp,%edi 0.00 : 436665: e8 36 c9 ff ff callq 432fa0 0.00 : 43666a: 41 89 c6 mov %eax,%r14d 0.00 : 43666d: 89 e8 mov %ebp,%eax 0.00 : 43666f: 83 e0 7f and $0x7f,%eax 0.00 : 436672: 83 c0 01 add $0x1,%eax 0.00 : 436675: d0 f8 sar %al 0.00 : 436677: 84 c0 test %al,%al 0.00 : 436679: 0f 8e bc 01 00 00 jle 43683b 0.00 : 43667f: 83 e5 7f and $0x7f,%ebp 0.00 : 436682: 89 2d 18 04 26 00 mov %ebp,0x260418(%rip) # 696aa0 0.00 : 436688: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 43668b: 3c 7f cmp $0x7f,%al 0.00 : 43668d: 0f 84 57 ff ff ff je 4365ea 0.00 : 436693: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 436697: 0f 84 48 01 00 00 je 4367e5 0.00 : 43669d: 4c 8b 25 d4 e4 25 00 mov 0x25e4d4(%rip),%r12 # 694b78 0.00 : 4366a4: 4d 63 fd movslq %r13d,%r15 0.00 : 4366a7: 4b 8b 04 fc mov (%r12,%r15,8),%rax 0.00 : 4366ab: f6 40 18 04 testb $0x4,0x18(%rax) 0.00 : 4366af: 74 14 je 4366c5 0.00 : 4366b1: 8b 3d 95 4b 25 00 mov 0x254b95(%rip),%edi # 68b24c 0.00 : 4366b7: 31 f6 xor %esi,%esi 0.00 : 4366b9: e8 72 e6 ff ff callq 434d30 0.00 : 4366be: 4c 8b 25 b3 e4 25 00 mov 0x25e4b3(%rip),%r12 # 694b78 0.00 : 4366c5: 8b 05 0d cd 25 00 mov 0x25cd0d(%rip),%eax # 6933d8 0.00 : 4366cb: 85 c0 test %eax,%eax 0.00 : 4366cd: 0f 84 9d 00 00 00 je 436770 0.00 : 4366d3: 8b 05 bf 04 26 00 mov 0x2604bf(%rip),%eax # 696b98 0.00 : 4366d9: 85 c0 test %eax,%eax 0.00 : 4366db: 0f 85 8f 00 00 00 jne 436770 0.00 : 4366e1: 4b 8b 04 fc mov (%r12,%r15,8),%rax 0.00 : 4366e5: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 4366e9: 48 89 ca mov %rcx,%rdx 0.00 : 4366ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4366f0: 8b 6a 0c mov 0xc(%rdx),%ebp 0.00 : 4366f3: 89 e8 mov %ebp,%eax 0.00 : 4366f5: 83 e0 7f and $0x7f,%eax 0.00 : 4366f8: 8d 58 01 lea 0x1(%rax),%ebx 0.00 : 4366fb: d0 fb sar %bl 0.00 : 4366fd: 84 db test %bl,%bl 0.00 : 4366ff: 0f 8f f2 00 00 00 jg 4367f7 0.00 : 436705: 40 80 fd 7f cmp $0x7f,%bpl 0.00 : 436709: 0f 84 e8 00 00 00 je 4367f7 0.00 : 43670f: 48 8b 12 mov (%rdx),%rdx 0.00 : 436712: 48 39 d1 cmp %rdx,%rcx 0.00 : 436715: 75 d9 jne 4366f0 0.00 : 436717: e8 54 f1 ff ff callq 435870 0.00 : 43671c: 4c 8b 25 55 e4 25 00 mov 0x25e455(%rip),%r12 # 694b78 0.00 : 436723: 8b 05 3f 4b 25 00 mov 0x254b3f(%rip),%eax # 68b268 0.00 : 436729: 85 c0 test %eax,%eax 0.00 : 43672b: 74 13 je 436740 0.00 : 43672d: 4b 8b 04 fc mov (%r12,%r15,8),%rax 0.00 : 436731: 8b 40 18 mov 0x18(%rax),%eax 0.00 : 436734: 83 e0 05 and $0x5,%eax 0.00 : 436737: 83 f8 05 cmp $0x5,%eax 0.00 : 43673a: 0f 84 34 01 00 00 je 436874 0.00 : 436740: 4b 8b 04 fc mov (%r12,%r15,8),%rax 0.00 : 436744: 83 78 14 02 cmpl $0x2,0x14(%rax) 0.00 : 436748: 74 7b je 4367c5 0.00 : 43674a: e8 11 fb ff ff callq 436260 0.00 : 43674f: 31 d2 xor %edx,%edx 0.00 : 436751: 48 89 e6 mov %rsp,%rsi 0.00 : 436754: bf 02 00 00 00 mov $0x2,%edi 0.00 : 436759: e8 82 fe fd ff callq 4165e0 0.00 : 43675e: e8 fd c8 ff ff callq 433060 0.00 : 436763: e9 dd fe ff ff jmpq 436645 0.00 : 436768: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43676f: 00 0.00 : 436770: f6 05 21 04 26 00 04 testb $0x4,0x260421(%rip) # 696b98 0.00 : 436777: 74 c7 je 436740 0.00 : 436779: 44 8b 15 3c f5 25 00 mov 0x25f53c(%rip),%r10d # 695cbc 0.00 : 436780: 45 85 d2 test %r10d,%r10d 0.00 : 436783: 74 bb je 436740 0.00 : 436785: 4b 8b 04 fc mov (%r12,%r15,8),%rax 0.00 : 436789: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 43678d: 48 89 f1 mov %rsi,%rcx 0.00 : 436790: 8b 51 0c mov 0xc(%rcx),%edx 0.00 : 436793: 89 d0 mov %edx,%eax 0.00 : 436795: 83 e0 7f and $0x7f,%eax 0.00 : 436798: 83 c0 01 add $0x1,%eax 0.00 : 43679b: d0 f8 sar %al 0.00 : 43679d: 84 c0 test %al,%al 0.00 : 43679f: 0f 8f a5 00 00 00 jg 43684a 0.00 : 4367a5: 80 fa 7f cmp $0x7f,%dl 0.00 : 4367a8: 74 96 je 436740 0.00 : 4367aa: 48 8b 09 mov (%rcx),%rcx 0.00 : 4367ad: 48 39 ce cmp %rcx,%rsi 0.00 : 4367b0: 75 de jne 436790 0.00 : 4367b2: eb 8c jmp 436740 0.00 : 4367b4: 8b 3d 86 f7 25 00 mov 0x25f786(%rip),%edi # 695f40 0.00 : 4367ba: e8 d1 13 01 00 callq 447b90 0.00 : 4367bf: 90 nop 0.00 : 4367c0: e9 a9 fd ff ff jmpq 43656e 0.00 : 4367c5: f6 40 18 01 testb $0x1,0x18(%rax) 0.00 : 4367c9: 0f 84 7b ff ff ff je 43674a 0.00 : 4367cf: 44 89 ef mov %r13d,%edi 0.00 : 4367d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4367d8: e8 43 ee ff ff callq 435620 0.00 : 4367dd: 0f 1f 00 nopl (%rax) 0.00 : 4367e0: e9 65 ff ff ff jmpq 43674a 0.00 : 4367e5: 8b 3d 61 4a 25 00 mov 0x254a61(%rip),%edi # 68b24c 0.00 : 4367eb: 31 f6 xor %esi,%esi 0.00 : 4367ed: e8 3e e5 ff ff callq 434d30 0.00 : 4367f2: e9 58 ff ff ff jmpq 43674f 0.00 : 4367f7: e8 f4 ef ff ff callq 4357f0 0.00 : 4367fc: 8b 05 6a 4a 25 00 mov 0x254a6a(%rip),%eax # 68b26c 0.00 : 436802: 85 c0 test %eax,%eax 0.00 : 436804: 74 29 je 43682f 0.00 : 436806: 44 39 2d 23 4a 25 00 cmp %r13d,0x254a23(%rip) # 68b230 0.00 : 43680d: 74 15 je 436824 0.00 : 43680f: 4c 8b 25 62 e3 25 00 mov 0x25e362(%rip),%r12 # 694b78 0.00 : 436816: 4b 8b 04 fc mov (%r12,%r15,8),%rax 0.00 : 43681a: f6 40 18 01 testb $0x1,0x18(%rax) 0.00 : 43681e: 0f 84 ff fe ff ff je 436723 0.00 : 436824: 31 d2 xor %edx,%edx 0.00 : 436826: 31 f6 xor %esi,%esi 0.00 : 436828: 31 ff xor %edi,%edi 0.00 : 43682a: e8 61 76 03 00 callq 46de90 0.00 : 43682f: 4c 8b 25 42 e3 25 00 mov 0x25e342(%rip),%r12 # 694b78 0.00 : 436836: e9 e8 fe ff ff jmpq 436723 0.00 : 43683b: c7 05 5b 02 26 00 00 movl $0x0,0x26025b(%rip) # 696aa0 0.00 : 436842: 00 00 00 0.00 : 436845: e9 3e fe ff ff jmpq 436688 0.00 : 43684a: 83 e2 7f and $0x7f,%edx 0.00 : 43684d: 83 fa 02 cmp $0x2,%edx 0.00 : 436850: 0f 85 ea fe ff ff jne 436740 0.00 : 436856: bf 02 00 00 00 mov $0x2,%edi 0.00 : 43685b: e8 50 ea 00 00 callq 4452b0 0.00 : 436860: 85 c0 test %eax,%eax 0.00 : 436862: 0f 84 89 00 00 00 je 4368f1 0.00 : 436868: 4c 8b 25 09 e3 25 00 mov 0x25e309(%rip),%r12 # 694b78 0.00 : 43686f: e9 cc fe ff ff jmpq 436740 0.00 : 436874: 84 db test %bl,%bl 0.00 : 436876: 0f 8e c4 fe ff ff jle 436740 0.00 : 43687c: 83 e5 7f and $0x7f,%ebp 0.00 : 43687f: 83 fd 02 cmp $0x2,%ebp 0.00 : 436882: 0f 85 b8 fe ff ff jne 436740 0.00 : 436888: bf 02 00 00 00 mov $0x2,%edi 0.00 : 43688d: e8 1e ea 00 00 callq 4452b0 0.00 : 436892: 85 c0 test %eax,%eax 0.00 : 436894: 75 32 jne 4368c8 0.00 : 436896: 44 8b 1d 9b fa 25 00 mov 0x25fa9b(%rip),%r11d # 696338 0.00 : 43689d: 45 85 db test %r11d,%r11d 0.00 : 4368a0: 74 26 je 4368c8 0.00 : 4368a2: 8b 05 90 f6 25 00 mov 0x25f690(%rip),%eax # 695f38 0.00 : 4368a8: 4c 8b 25 c9 e2 25 00 mov 0x25e2c9(%rip),%r12 # 694b78 0.00 : 4368af: 83 c0 01 add $0x1,%eax 0.00 : 4368b2: 89 05 80 f6 25 00 mov %eax,0x25f680(%rip) # 695f38 0.00 : 4368b8: e9 83 fe ff ff jmpq 436740 0.00 : 4368bd: 0f 1f 00 nopl (%rax) 0.00 : 4368c0: 41 89 ee mov %ebp,%r14d 0.00 : 4368c3: e9 87 fe ff ff jmpq 43674f 0.00 : 4368c8: 48 8b 35 d1 ca 25 00 mov 0x25cad1(%rip),%rsi # 6933a0 0.00 : 4368cf: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 4368d4: e8 17 04 fe ff callq 416cf0 <_IO_putc@plt> 0.00 : 4368d9: 48 8b 3d c0 ca 25 00 mov 0x25cac0(%rip),%rdi # 6933a0 0.00 : 4368e0: e8 4b 04 fe ff callq 416d30 0.00 : 4368e5: 4c 8b 25 8c e2 25 00 mov 0x25e28c(%rip),%r12 # 694b78 0.00 : 4368ec: e9 4f fe ff ff jmpq 436740 0.00 : 4368f1: 31 d2 xor %edx,%edx 0.00 : 4368f3: 48 89 e6 mov %rsp,%rsi 0.00 : 4368f6: bf 02 00 00 00 mov $0x2,%edi 0.00 : 4368fb: e8 e0 fc fd ff callq 4165e0 0.00 : 436900: e8 5b c7 ff ff callq 433060 0.00 : 436905: 31 f6 xor %esi,%esi 0.00 : 436907: bf 02 00 00 00 mov $0x2,%edi 0.00 : 43690c: e8 4f 11 01 00 callq 447a60 0.00 : 436911: 48 89 05 60 49 25 00 mov %rax,0x254960(%rip) # 68b278 0.00 : 436918: 48 83 e8 01 sub $0x1,%rax 0.00 : 43691c: 74 16 je 436934 0.00 : 43691e: e8 4d f9 fd ff callq 416270 0.00 : 436923: be 02 00 00 00 mov $0x2,%esi 0.00 : 436928: 89 c7 mov %eax,%edi 0.00 : 43692a: e8 71 fc fd ff callq 4165a0 0.00 : 43692f: e9 34 ff ff ff jmpq 436868 0.00 : 436934: e8 27 c7 ff ff callq 433060 0.00 : 436939: 4c 8b 25 38 e2 25 00 mov 0x25e238(%rip),%r12 # 694b78 0.00 : 436940: e9 fb fd ff ff jmpq 436740 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043a730 : ??:0 25.00 : 43a730: 41 57 push %r15 0.00 : 43a732: 41 56 push %r14 0.00 : 43a734: 41 55 push %r13 0.00 : 43a736: 41 54 push %r12 0.00 : 43a738: 55 push %rbp 0.00 : 43a739: 53 push %rbx 0.00 : 43a73a: 48 89 fb mov %rdi,%rbx 0.00 : 43a73d: 48 83 ec 18 sub $0x18,%rsp 0.00 : 43a741: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 43a748: 00 0.00 : 43a749: e8 a2 bc fd ff callq 4163f0 0.00 : 43a74e: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 43a752: 48 89 c5 mov %rax,%rbp 0.00 : 43a755: e8 66 db 01 00 callq 4582c0 0.00 : 43a75a: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 43a75e: 49 89 c6 mov %rax,%r14 0.00 : 43a761: 41 80 fc 7f cmp $0x7f,%r12b 0.00 : 43a765: 75 0a jne 43a771 0.00 : 43a767: 80 7b 01 00 cmpb $0x0,0x1(%rbx) 0.00 : 43a76b: 0f 84 cd 00 00 00 je 43a83e 0.00 : 43a771: be 01 00 00 00 mov $0x1,%esi 0.00 : 43a776: 48 89 df mov %rbx,%rdi 0.00 : 43a779: 4c 8d 2c 2b lea (%rbx,%rbp,1),%r13 0.00 : 43a77d: e8 fe bf fd ff callq 416780 0.00 : 43a782: 48 85 c0 test %rax,%rax 0.00 : 43a785: 4c 89 f5 mov %r14,%rbp 0.00 : 43a788: 0f 84 b5 00 00 00 je 43a843 0.00 : 43a78e: 45 84 e4 test %r12b,%r12b 0.00 : 43a791: 74 75 je 43a808 0.00 : 43a793: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43a798: 41 80 ec 01 sub $0x1,%r12b 0.00 : 43a79c: 75 09 jne 43a7a7 0.00 : 43a79e: 48 83 c3 01 add $0x1,%rbx 0.00 : 43a7a2: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 43a7a5: 74 61 je 43a808 0.00 : 43a7a7: e8 b4 bc fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43a7ac: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43a7b0: 76 6e jbe 43a820 0.00 : 43a7b2: 4c 89 ea mov %r13,%rdx 0.00 : 43a7b5: 48 89 e1 mov %rsp,%rcx 0.00 : 43a7b8: 31 ff xor %edi,%edi 0.00 : 43a7ba: 48 29 da sub %rbx,%rdx 0.00 : 43a7bd: 48 89 de mov %rbx,%rsi 0.00 : 43a7c0: 4c 8b 24 24 mov (%rsp),%r12 0.00 : 43a7c4: e8 87 b6 fd ff callq 415e50 0.00 : 43a7c9: 48 89 c1 mov %rax,%rcx 0.00 : 43a7cc: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 43a7d0: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43a7d4: 76 62 jbe 43a838 0.00 : 43a7d6: 48 85 c9 test %rcx,%rcx 0.00 : 43a7d9: 75 05 jne 43a7e0 0.00 : 43a7db: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 43a7e0: 31 d2 xor %edx,%edx 0.00 : 43a7e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43a7e8: 0f b6 03 movzbl (%rbx),%eax 0.00 : 43a7eb: 48 83 c2 01 add $0x1,%rdx 0.00 : 43a7ef: 48 83 c3 01 add $0x1,%rbx 0.00 : 43a7f3: 88 45 00 mov %al,0x0(%rbp) 0.00 : 43a7f6: 48 83 c5 01 add $0x1,%rbp 50.00 : 43a7fa: 48 39 ca cmp %rcx,%rdx 0.00 : 43a7fd: 72 e9 jb 43a7e8 25.00 : 43a7ff: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 43a803: 45 84 e4 test %r12b,%r12b 0.00 : 43a806: 75 90 jne 43a798 0.00 : 43a808: c6 45 00 00 movb $0x0,0x0(%rbp) 0.00 : 43a80c: 48 83 c4 18 add $0x18,%rsp 0.00 : 43a810: 4c 89 f0 mov %r14,%rax 0.00 : 43a813: 5b pop %rbx 0.00 : 43a814: 5d pop %rbp 0.00 : 43a815: 41 5c pop %r12 0.00 : 43a817: 41 5d pop %r13 0.00 : 43a819: 41 5e pop %r14 0.00 : 43a81b: 41 5f pop %r15 0.00 : 43a81d: c3 retq 0.00 : 43a81e: 66 90 xchg %ax,%ax 0.00 : 43a820: 0f b6 03 movzbl (%rbx),%eax 0.00 : 43a823: 48 83 c3 01 add $0x1,%rbx 0.00 : 43a827: 88 45 00 mov %al,0x0(%rbp) 0.00 : 43a82a: 48 83 c5 01 add $0x1,%rbp 0.00 : 43a82e: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 43a832: eb cf jmp 43a803 0.00 : 43a834: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43a838: 4c 89 24 24 mov %r12,(%rsp) 0.00 : 43a83c: eb 9d jmp 43a7db 0.00 : 43a83e: c6 00 00 movb $0x0,(%rax) 0.00 : 43a841: eb c9 jmp 43a80c 0.00 : 43a843: 4c 89 f7 mov %r14,%rdi 0.00 : 43a846: 48 89 de mov %rbx,%rsi 0.00 : 43a849: e8 22 c1 fd ff callq 416970 0.00 : 43a84e: 49 89 c6 mov %rax,%r14 0.00 : 43a851: eb b9 jmp 43a80c Sorted summary for file /bin/bash ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000044d360 : ??:0 66.67 : 44d360: c7 05 96 e3 23 00 00 movl $0x0,0x23e396(%rip) # 68b700 0.00 : 44d367: 00 00 00 33.33 : 44d36a: c7 05 7c a1 24 00 01 movl $0x1,0x24a17c(%rip) # 6974f0 0.00 : 44d371: 00 00 00 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000455a00 : ??:0 50.00 : 455a00: 41 55 push %r13 0.00 : 455a02: 41 54 push %r12 0.00 : 455a04: 41 89 f4 mov %esi,%r12d 0.00 : 455a07: 55 push %rbp 0.00 : 455a08: 53 push %rbx 0.00 : 455a09: 48 89 fb mov %rdi,%rbx 0.00 : 455a0c: 48 83 ec 08 sub $0x8,%rsp 0.00 : 455a10: 40 f6 c6 02 test $0x2,%sil 0.00 : 455a14: 74 2b je 455a41 0.00 : 455a16: 48 8b 3d fb ee 23 00 mov 0x23eefb(%rip),%rdi # 694918 25.00 : 455a1d: 48 85 ff test %rdi,%rdi 0.00 : 455a20: 74 10 je 455a32 0.00 : 455a22: e8 29 ff fc ff callq 425950 0.00 : 455a27: 48 c7 05 e6 ee 23 00 movq $0x0,0x23eee6(%rip) # 694918 0.00 : 455a2e: 00 00 00 00 0.00 : 455a32: 48 83 3d e6 ee 23 00 cmpq $0x0,0x23eee6(%rip) # 694920 0.00 : 455a39: 00 0.00 : 455a3a: 74 05 je 455a41 0.00 : 455a3c: e8 2f 0b fd ff callq 426570 0.00 : 455a41: 45 31 ed xor %r13d,%r13d 0.00 : 455a44: 31 ed xor %ebp,%ebp 0.00 : 455a46: 48 85 db test %rbx,%rbx 0.00 : 455a49: 75 0d jne 455a58 0.00 : 455a4b: eb 4a jmp 455a97 0.00 : 455a4d: 0f 1f 00 nopl (%rax) 0.00 : 455a50: 48 8b 1b mov (%rbx),%rbx 0.00 : 455a53: 48 85 db test %rbx,%rbx 0.00 : 455a56: 74 3c je 455a94 0.00 : 455a58: 44 89 e6 mov %r12d,%esi 0.00 : 455a5b: 48 89 df mov %rbx,%rdi 0.00 : 455a5e: c7 05 a4 08 24 00 00 movl $0x0,0x2408a4(%rip) # 69630c 0.00 : 455a65: 00 00 00 0.00 : 455a68: e8 23 f0 ff ff callq 454a90 0.00 : 455a6d: 85 c0 test %eax,%eax 0.00 : 455a6f: 89 c5 mov %eax,%ebp 0.00 : 455a71: 75 35 jne 455aa8 0.00 : 455a73: 8b 35 93 08 24 00 mov 0x240893(%rip),%esi # 69630c 0.00 : 455a79: 85 f6 test %esi,%esi 0.00 : 455a7b: 74 d3 je 455a50 0.00 : 455a7d: 48 89 df mov %rbx,%rdi 0.00 : 455a80: e8 1b fd ff ff callq 4557a0 0.00 : 455a85: 48 8b 1b mov (%rbx),%rbx 0.00 : 455a88: 44 8b 2d 7d 08 24 00 mov 0x24087d(%rip),%r13d # 69630c 0.00 : 455a8f: 48 85 db test %rbx,%rbx 0.00 : 455a92: 75 c4 jne 455a58 0.00 : 455a94: 44 89 ed mov %r13d,%ebp 25.00 : 455a97: 48 83 c4 08 add $0x8,%rsp 0.00 : 455a9b: 89 e8 mov %ebp,%eax 0.00 : 455a9d: 5b pop %rbx 0.00 : 455a9e: 5d pop %rbp 0.00 : 455a9f: 41 5c pop %r12 0.00 : 455aa1: 41 5d pop %r13 0.00 : 455aa3: c3 retq 0.00 : 455aa4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 455aa8: 89 c6 mov %eax,%esi 0.00 : 455aaa: 48 89 df mov %rbx,%rdi 0.00 : 455aad: e8 ee fc ff ff callq 4557a0 0.00 : 455ab2: 48 83 c4 08 add $0x8,%rsp 0.00 : 455ab6: 89 e8 mov %ebp,%eax 0.00 : 455ab8: 5b pop %rbx 0.00 : 455ab9: 5d pop %rbp 0.00 : 455aba: 41 5c pop %r12 0.00 : 455abc: 41 5d pop %r13 Sorted summary for file /bin/bash ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000458230 : ??:0 33.33 : 458230: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 66.67 : 458235: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 45823a: 49 89 f4 mov %rsi,%r12 0.00 : 45823d: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 458242: 48 83 ec 18 sub $0x18,%rsp 0.00 : 458246: 48 85 ff test %rdi,%rdi 0.00 : 458249: 74 25 je 458270 0.00 : 45824b: e8 40 e9 fb ff callq 416b90 0.00 : 458250: 48 89 c5 mov %rax,%rbp 0.00 : 458253: 48 85 ed test %rbp,%rbp 0.00 : 458256: 74 28 je 458280 0.00 : 458258: 48 89 e8 mov %rbp,%rax 0.00 : 45825b: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 45825f: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 458264: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 458269: 48 83 c4 18 add $0x18,%rsp 0.00 : 45826d: c3 retq 0.00 : 45826e: 66 90 xchg %ax,%ax 0.00 : 458270: 48 89 f7 mov %rsi,%rdi 0.00 : 458273: e8 a8 de fb ff callq 416120 0.00 : 458278: 48 89 c5 mov %rax,%rbp 0.00 : 45827b: eb d6 jmp 458253 0.00 : 45827d: 0f 1f 00 nopl (%rax) 0.00 : 458280: 31 c0 xor %eax,%eax 0.00 : 458282: e8 69 ff ff ff callq 4581f0 0.00 : 458287: 31 ff xor %edi,%edi 0.00 : 458289: 48 89 c3 mov %rax,%rbx 0.00 : 45828c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 458291: be a8 74 47 00 mov $0x4774a8,%esi 0.00 : 458296: 48 89 05 93 e0 23 00 mov %rax,0x23e093(%rip) # 696330 0.00 : 45829d: e8 de e5 fb ff callq 416880 0.00 : 4582a2: 48 89 da mov %rbx,%rdx 0.00 : 4582a5: 48 89 c7 mov %rax,%rdi 0.00 : 4582a8: 4c 89 e6 mov %r12,%rsi 0.00 : 4582ab: 31 c0 xor %eax,%eax 0.00 : 4582ad: e8 de 89 fd ff callq 430c90 0.00 : 4582b2: eb a4 jmp 458258 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 37.50 ??:0 37.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000017790 : ??:0 75.00 : 17790: 48 83 ec 28 sub $0x28,%rsp 0.00 : 177c4: 83 e2 mov %eax,%ebx 0.00 : 177c6: 01 4c mov %eax,%ebp 0.00 : 177c8: 89 64 jbe 17800 12.50 : 177ca: 24 18 mov %ebp,%eax 0.00 : 177cc: 4c 89 6c 24 20 mov 0x8(%rsp),%rbx 0.00 : 177d1: 49 89 fc 48 89 mov 0x10(%rsp),%rbp 0.00 : 177d6: 5c 24 08 48 89 mov 0x18(%rsp),%r12 0.00 : 177db: 6c 24 10 41 89 mov 0x20(%rsp),%r13 0.00 : 177e0: f5 75 35 be add $0x28,%rsp 0.00 : 177e4: 00 retq 0.00 : 177e5: 80 00 00 nopl (%rax) 0.00 : 177e8: e8 43 fc ff ff 48 3d mov 0x238(%rdi),%rax 12.50 : 177ef: 00 f0 ff ff 48 mov $0xfffffff6,%ebp 0.00 : 177f4: 89 c3 89 test %rax,%rax 0.00 : 177f7: c5 76 jne 177ca 0.00 : 177f9: 36 89 e8 48 8b mov $0xfffffff5,%ebp 0.00 : 177fe: 5c 24 jmp 177ca 0.00 : 17800: 08 48 8b test %rax,%rax 0.00 : 17803: 6c 24 je 177f9 0.00 : 17805: 10 4c 8b mov %r12,%rdi 0.00 : 17808: 64 24 18 mov %r13d,%edx 0.00 : 1780b: 4c 8b 6c mov %rax,%rsi 0.00 : 1780e: 24 20 48 83 c4 callq 17813 0.00 : 17813: 28 c3 0f mov %rbx,%rdi 0.00 : 17816: 1f 00 mov %eax,%ebp 0.00 : 17818: 48 8b 87 38 02 callq 16dd0 0.00 : 1781d: 00 00 jmp 177ca : 1781f: bd nop : 17820: f6 ff ff ff sub $0x38,%rsp : 17824: 48 85 c0 75 d1 mov %rbp,0x18(%rsp) : 17829: bd f5 ff ff ff mov %r12,0x20(%rsp) : 1782e: eb ca xor %ebp,%ebp : 17830: 48 85 c0 74 f4 mov %r14,0x30(%rsp) : 17835: 4c 89 e7 44 89 mov %rbx,0x10(%rsp) : 1783a: ea 48 89 mov %rdi,%r14 : 1783d: c6 e8 00 00 00 mov %r13,0x28(%rsp) : 17842: 00 48 89 movzwl (%rsi),%ebx : 17845: df 89 c5 mov %rsi,%r12 : 17848: e8 b3 mov %ebx,%eax : 1784a: f5 ff ff eb ab and $0xf000,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469620 : 100.00 : 469620: ff 25 52 db 6f 00 jmpq *0x6fdb52(%rip) # b67178 <_GLOBAL_OFFSET_TABLE_+0x178> 0.00 : 469626: 68 2c 00 00 00 pushq $0x2c 0.00 : 46962b: e9 20 fd ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:289 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:289 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:295 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:259 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:262 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a4ca0 : : systable_beginscan(Relation heapRelation, : Oid indexId, : bool indexOK, : Snapshot snapshot, : int nkeys, ScanKey key) : { 0.00 : 4a4ca0: 55 push %rbp 0.00 : 4a4ca1: 48 89 e5 mov %rsp,%rbp 0.00 : 4a4ca4: 41 57 push %r15 0.00 : 4a4ca6: 49 89 ff mov %rdi,%r15 0.00 : 4a4ca9: 41 56 push %r14 0.00 : 4a4cab: 49 89 ce mov %rcx,%r14 0.00 : 4a4cae: 41 55 push %r13 0.00 : 4a4cb0: 41 54 push %r12 0.00 : 4a4cb2: 41 89 f4 mov %esi,%r12d 0.00 : 4a4cb5: 53 push %rbx 0.00 : 4a4cb6: 44 89 c3 mov %r8d,%ebx 0.00 : 4a4cb9: 48 83 ec 08 sub $0x8,%rsp : SysScanDesc sysscan; : Relation irel; : : if (indexOK && 0.00 : 4a4cbd: 84 d2 test %dl,%dl : systable_beginscan(Relation heapRelation, : Oid indexId, : bool indexOK, : Snapshot snapshot, : int nkeys, ScanKey key) : { 0.00 : 4a4cbf: 4c 89 4d d0 mov %r9,-0x30(%rbp) : SysScanDesc sysscan; : Relation irel; : : if (indexOK && 0.00 : 4a4cc3: 74 0d je 4a4cd2 0.00 : 4a4cc5: 80 3d 1c 54 71 00 00 cmpb $0x0,0x71541c(%rip) # bba0e8 0.00 : 4a4ccc: 0f 84 24 01 00 00 je 4a4df6 0.00 : 4a4cd2: 45 31 e4 xor %r12d,%r12d : !ReindexIsProcessingIndex(indexId)) : irel = index_open(indexId, AccessShareLock); : else : irel = NULL; : : sysscan = (SysScanDesc) palloc(sizeof(SysScanDescData)); 0.00 : 4a4cd5: bf 28 00 00 00 mov $0x28,%edi 0.00 : 4a4cda: e8 71 40 2f 00 callq 798d50 : : sysscan->heap_rel = heapRelation; : sysscan->irel = irel; : : if (snapshot == NULL) 0.00 : 4a4cdf: 4d 85 f6 test %r14,%r14 : !ReindexIsProcessingIndex(indexId)) : irel = index_open(indexId, AccessShareLock); : else : irel = NULL; : : sysscan = (SysScanDesc) palloc(sizeof(SysScanDescData)); 0.00 : 4a4ce2: 49 89 c5 mov %rax,%r13 : : sysscan->heap_rel = heapRelation; 0.00 : 4a4ce5: 4c 89 38 mov %r15,(%rax) : sysscan->irel = irel; 0.00 : 4a4ce8: 4c 89 60 08 mov %r12,0x8(%rax) : : if (snapshot == NULL) 0.00 : 4a4cec: 0f 84 28 01 00 00 je 4a4e1a : sysscan->snapshot = snapshot; : } : else : { : /* Caller is responsible for any snapshot. */ : sysscan->snapshot = NULL; 0.00 : 4a4cf2: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 4a4cf9: 00 : } : : if (irel) 0.00 : 4a4cfa: 4d 85 e4 test %r12,%r12 0.00 : 4a4cfd: 0f 84 34 01 00 00 je 4a4e37 : { : int i; : : /* Change attribute numbers to be index column numbers. */ : for (i = 0; i < nkeys; i++) 0.00 : 4a4d03: 85 db test %ebx,%ebx 0.00 : 4a4d05: 7e 62 jle 4a4d69 0.00 : 4a4d07: 4d 8b 94 24 a0 00 00 mov 0xa0(%r12),%r10 0.00 : 4a4d0e: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:289 20.00 : 4a4d0f: 4c 8b 4d d0 mov -0x30(%rbp),%r9 0.00 : 4a4d13: 45 31 db xor %r11d,%r11d 0.00 : 4a4d16: 41 0f bf 72 08 movswl 0x8(%r10),%esi 0.00 : 4a4d1b: 49 83 c1 04 add $0x4,%r9 0.00 : 4a4d1f: 90 nop : { : int j; : : for (j = 0; j < irel->rd_index->indnatts; j++) 0.00 : 4a4d20: 45 31 c0 xor %r8d,%r8d 0.00 : 4a4d23: 85 f6 test %esi,%esi 0.00 : 4a4d25: 7e 30 jle 4a4d57 : { : if (key[i].sk_attno == irel->rd_index->indkey.values[j]) 0.00 : 4a4d27: 41 0f b7 39 movzwl (%r9),%edi 0.00 : 4a4d2b: 31 c9 xor %ecx,%ecx 0.00 : 4a4d2d: 45 31 c0 xor %r8d,%r8d 0.00 : 4a4d30: 66 41 3b 7a 2c cmp 0x2c(%r10),%di 0.00 : 4a4d35: 4c 89 d2 mov %r10,%rdx 0.00 : 4a4d38: 75 13 jne 4a4d4d 0.00 : 4a4d3a: eb 77 jmp 4a4db3 0.00 : 4a4d3c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4a4d40: 0f b7 42 2e movzwl 0x2e(%rdx),%eax 0.00 : 4a4d44: 48 83 c2 02 add $0x2,%rdx 0.00 : 4a4d48: 66 39 f8 cmp %di,%ax 0.00 : 4a4d4b: 74 63 je 4a4db0 : /* Change attribute numbers to be index column numbers. */ : for (i = 0; i < nkeys; i++) : { : int j; : : for (j = 0; j < irel->rd_index->indnatts; j++) 0.00 : 4a4d4d: 83 c1 01 add $0x1,%ecx 0.00 : 4a4d50: 39 f1 cmp %esi,%ecx 0.00 : 4a4d52: 7c ec jl 4a4d40 0.00 : 4a4d54: 41 89 c8 mov %ecx,%r8d : { : key[i].sk_attno = j + 1; : break; : } : } : if (j == irel->rd_index->indnatts) 0.00 : 4a4d57: 44 39 c6 cmp %r8d,%esi 0.00 : 4a4d5a: 74 70 je 4a4dcc : if (irel) : { : int i; : : /* Change attribute numbers to be index column numbers. */ : for (i = 0; i < nkeys; i++) 0.00 : 4a4d5c: 41 83 c3 01 add $0x1,%r11d 0.00 : 4a4d60: 49 83 c1 48 add $0x48,%r9 20.00 : 4a4d64: 44 39 db cmp %r11d,%ebx 0.00 : 4a4d67: 7f b7 jg 4a4d20 : } : if (j == irel->rd_index->indnatts) : elog(ERROR, "column is not in index"); : } : : sysscan->iscan = index_beginscan(heapRelation, irel, 0.00 : 4a4d69: 45 31 c0 xor %r8d,%r8d 0.00 : 4a4d6c: 89 d9 mov %ebx,%ecx 0.00 : 4a4d6e: 4c 89 f2 mov %r14,%rdx 0.00 : 4a4d71: 4c 89 e6 mov %r12,%rsi 0.00 : 4a4d74: 4c 89 ff mov %r15,%rdi 0.00 : 4a4d77: e8 84 0c 00 00 callq 4a5a00 0.00 : 4a4d7c: 49 89 45 18 mov %rax,0x18(%r13) : snapshot, nkeys, 0); : index_rescan(sysscan->iscan, key, nkeys, NULL, 0); 0.00 : 4a4d80: 48 8b 75 d0 mov -0x30(%rbp),%rsi : } : if (j == irel->rd_index->indnatts) : elog(ERROR, "column is not in index"); : } : : sysscan->iscan = index_beginscan(heapRelation, irel, 0.00 : 4a4d84: 48 89 c7 mov %rax,%rdi : snapshot, nkeys, 0); : index_rescan(sysscan->iscan, key, nkeys, NULL, 0); 0.00 : 4a4d87: 45 31 c0 xor %r8d,%r8d 0.00 : 4a4d8a: 31 c9 xor %ecx,%ecx 0.00 : 4a4d8c: 89 da mov %ebx,%edx 0.00 : 4a4d8e: e8 7d 0a 00 00 callq 4a5810 : sysscan->scan = NULL; 0.00 : 4a4d93: 49 c7 45 10 00 00 00 movq $0x0,0x10(%r13) 0.00 : 4a4d9a: 00 : true, false); : sysscan->iscan = NULL; : } : : return sysscan; : } 0.00 : 4a4d9b: 48 83 c4 08 add $0x8,%rsp 0.00 : 4a4d9f: 4c 89 e8 mov %r13,%rax 0.00 : 4a4da2: 5b pop %rbx 0.00 : 4a4da3: 41 5c pop %r12 0.00 : 4a4da5: 41 5d pop %r13 0.00 : 4a4da7: 41 5e pop %r14 0.00 : 4a4da9: 41 5f pop %r15 0.00 : 4a4dab: c9 leaveq 0.00 : 4a4dac: c3 retq 0.00 : 4a4dad: 0f 1f 00 nopl (%rax) : { : int j; : : for (j = 0; j < irel->rd_index->indnatts; j++) : { : if (key[i].sk_attno == irel->rd_index->indkey.values[j]) /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:295 20.00 : 4a4db0: 41 89 c8 mov %ecx,%r8d : { : key[i].sk_attno = j + 1; 0.00 : 4a4db3: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : 4a4db6: 66 41 89 01 mov %ax,(%r9) 0.00 : 4a4dba: 4d 8b 94 24 a0 00 00 mov 0xa0(%r12),%r10 0.00 : 4a4dc1: 00 0.00 : 4a4dc2: 41 0f bf 72 08 movswl 0x8(%r10),%esi : break; : } : } : if (j == irel->rd_index->indnatts) 0.00 : 4a4dc7: 44 39 c6 cmp %r8d,%esi 0.00 : 4a4dca: 75 90 jne 4a4d5c : elog(ERROR, "column is not in index"); 0.00 : 4a4dcc: ba 20 3b 7b 00 mov $0x7b3b20,%edx 0.00 : 4a4dd1: be 2e 01 00 00 mov $0x12e,%esi 0.00 : 4a4dd6: bf d4 39 7b 00 mov $0x7b39d4,%edi 0.00 : 4a4ddb: e8 40 66 2d 00 callq 77b420 0.00 : 4a4de0: be dc 39 7b 00 mov $0x7b39dc,%esi 0.00 : 4a4de5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a4dea: 31 c0 xor %eax,%eax 0.00 : 4a4dec: e8 3f 64 2d 00 callq 77b230 0.00 : 4a4df1: e8 da 46 fc ff callq 4694d0 : int nkeys, ScanKey key) : { : SysScanDesc sysscan; : Relation irel; : : if (indexOK && 0.00 : 4a4df6: 89 f7 mov %esi,%edi 0.00 : 4a4df8: e8 33 40 04 00 callq 4e8e30 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:259 20.00 : 4a4dfd: 84 c0 test %al,%al 0.00 : 4a4dff: 0f 85 cd fe ff ff jne 4a4cd2 : !IgnoreSystemIndexes && : !ReindexIsProcessingIndex(indexId)) : irel = index_open(indexId, AccessShareLock); 0.00 : 4a4e05: 44 89 e7 mov %r12d,%edi 0.00 : 4a4e08: be 01 00 00 00 mov $0x1,%esi 0.00 : 4a4e0d: e8 4e 0d 00 00 callq 4a5b60 /home/Computational/mark/src/postgres-andres/src/backend/access/index/genam.c:262 20.00 : 4a4e12: 49 89 c4 mov %rax,%r12 : int nkeys, ScanKey key) : { : SysScanDesc sysscan; : Relation irel; : : if (indexOK && 0.00 : 4a4e15: e9 bb fe ff ff jmpq 4a4cd5 : : if (snapshot == NULL) : { : Oid relid = RelationGetRelid(heapRelation); : : snapshot = RegisterSnapshot(GetCatalogSnapshot(relid)); 0.00 : 4a4e1a: 41 8b 7f 40 mov 0x40(%r15),%edi 0.00 : 4a4e1e: e8 cd 27 30 00 callq 7a75f0 0.00 : 4a4e23: 48 89 c7 mov %rax,%rdi 0.00 : 4a4e26: e8 55 26 30 00 callq 7a7480 0.00 : 4a4e2b: 49 89 c6 mov %rax,%r14 : sysscan->snapshot = snapshot; 0.00 : 4a4e2e: 49 89 45 20 mov %rax,0x20(%r13) 0.00 : 4a4e32: e9 c3 fe ff ff jmpq 4a4cfa : * catalog. In most cases the desired rows are near the front, so : * that the unpredictable start point of a syncscan is a serious : * disadvantage; and there are no compensating advantages, because : * it's unlikely that such scans will occur in parallel. : */ : sysscan->scan = heap_beginscan_strat(heapRelation, snapshot, 0.00 : 4a4e37: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 4a4e3b: 45 31 c9 xor %r9d,%r9d 0.00 : 4a4e3e: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4a4e44: 89 da mov %ebx,%edx 0.00 : 4a4e46: 4c 89 f6 mov %r14,%rsi 0.00 : 4a4e49: 4c 89 ff mov %r15,%rdi 0.00 : 4a4e4c: e8 9f 8a ff ff callq 49d8f0 : nkeys, key, : true, false); : sysscan->iscan = NULL; 0.00 : 4a4e51: 49 c7 45 18 00 00 00 movq $0x0,0x18(%r13) 0.00 : 4a4e58: 00 : * catalog. In most cases the desired rows are near the front, so : * that the unpredictable start point of a syncscan is a serious : * disadvantage; and there are no compensating advantages, because : * it's unlikely that such scans will occur in parallel. : */ : sysscan->scan = heap_beginscan_strat(heapRelation, snapshot, 0.00 : 4a4e59: 49 89 45 10 mov %rax,0x10(%r13) 0.00 : 4a4e5d: e9 39 ff ff ff jmpq 4a4d9b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 60.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1399 20.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1392 20.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1405 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b4ad0 : : * UpdateChangedParamSet : * Add changed parameters to a plan node's chgParam set : */ : void : UpdateChangedParamSet(PlanState *node, Bitmapset *newchg) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1392 20.00 : 5b4ad0: 55 push %rbp 0.00 : 5b4ad1: 48 89 e5 mov %rsp,%rbp 0.00 : 5b4ad4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 5b4ad8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 5b4adc: 48 83 ec 10 sub $0x10,%rsp : : /* : * The plan node only depends on params listed in its allParam set. Don't : * include anything else into its chgParam set. : */ : parmset = bms_intersect(node->plan->allParam, newchg); 0.00 : 5b4ae0: 48 8b 47 08 mov 0x8(%rdi),%rax : * UpdateChangedParamSet : * Add changed parameters to a plan node's chgParam set : */ : void : UpdateChangedParamSet(PlanState *node, Bitmapset *newchg) : { 0.00 : 5b4ae4: 49 89 fc mov %rdi,%r12 : : /* : * The plan node only depends on params listed in its allParam set. Don't : * include anything else into its chgParam set. : */ : parmset = bms_intersect(node->plan->allParam, newchg); 0.00 : 5b4ae7: 48 8b 78 58 mov 0x58(%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1399 60.00 : 5b4aeb: e8 60 e7 02 00 callq 5e3250 : : /* : * Keep node->chgParam == NULL if there's not actually any members; this : * allows the simplest possible tests in executor node files. : */ : if (!bms_is_empty(parmset)) 0.00 : 5b4af0: 48 89 c7 mov %rax,%rdi : : /* : * The plan node only depends on params listed in its allParam set. Don't : * include anything else into its chgParam set. : */ : parmset = bms_intersect(node->plan->allParam, newchg); 0.00 : 5b4af3: 48 89 c3 mov %rax,%rbx : : /* : * Keep node->chgParam == NULL if there's not actually any members; this : * allows the simplest possible tests in executor node files. : */ : if (!bms_is_empty(parmset)) 0.00 : 5b4af6: e8 55 e0 02 00 callq 5e2b50 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1405 20.00 : 5b4afb: 84 c0 test %al,%al 0.00 : 5b4afd: 74 19 je 5b4b18 : node->chgParam = bms_join(node->chgParam, parmset); : else : bms_free(parmset); 0.00 : 5b4aff: 48 89 df mov %rbx,%rdi : } 0.00 : 5b4b02: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5b4b07: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5b4b0b: c9 leaveq : * allows the simplest possible tests in executor node files. : */ : if (!bms_is_empty(parmset)) : node->chgParam = bms_join(node->chgParam, parmset); : else : bms_free(parmset); 0.00 : 5b4b0c: e9 9f e2 02 00 jmpq 5e2db0 0.00 : 5b4b11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Keep node->chgParam == NULL if there's not actually any members; this : * allows the simplest possible tests in executor node files. : */ : if (!bms_is_empty(parmset)) : node->chgParam = bms_join(node->chgParam, parmset); 0.00 : 5b4b18: 49 8b 7c 24 50 mov 0x50(%r12),%rdi 0.00 : 5b4b1d: 48 89 de mov %rbx,%rsi 0.00 : 5b4b20: e8 8b e1 02 00 callq 5e2cb0 0.00 : 5b4b25: 49 89 44 24 50 mov %rax,0x50(%r12) : else : bms_free(parmset); : } 0.00 : 5b4b2a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5b4b2e: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5b4b33: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2553 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2538 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000073c450 : : */ : static double : eqjoinsel_semi(Oid operator, : VariableStatData *vardata1, VariableStatData *vardata2, : RelOptInfo *inner_rel) : { 0.00 : 73c450: 55 push %rbp 0.00 : 73c451: 48 89 e5 mov %rsp,%rbp 0.00 : 73c454: 41 57 push %r15 0.00 : 73c456: 41 56 push %r14 0.00 : 73c458: 41 55 push %r13 0.00 : 73c45a: 41 89 fd mov %edi,%r13d 0.00 : 73c45d: 41 54 push %r12 0.00 : 73c45f: 53 push %rbx 0.00 : 73c460: 48 89 cb mov %rcx,%rbx 0.00 : 73c463: 48 81 ec 18 01 00 00 sub $0x118,%rsp 0.00 : 73c46a: 48 89 b5 18 ff ff ff mov %rsi,-0xe8(%rbp) : Datum *values2 = NULL; : int nvalues2 = 0; : float4 *numbers2 = NULL; : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); 0.00 : 73c471: 48 8b bd 18 ff ff ff mov -0xe8(%rbp),%rdi 0.00 : 73c478: 48 8d 75 cf lea -0x31(%rbp),%rsi : */ : static double : eqjoinsel_semi(Oid operator, : VariableStatData *vardata1, VariableStatData *vardata2, : RelOptInfo *inner_rel) : { 0.00 : 73c47c: 48 89 95 10 ff ff ff mov %rdx,-0xf0(%rbp) : double nd2; : bool isdefault1; : bool isdefault2; : Form_pg_statistic stats1 = NULL; : bool have_mcvs1 = false; : Datum *values1 = NULL; 0.00 : 73c483: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 73c48a: 00 : int nvalues1 = 0; 0.00 : 73c48b: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : float4 *numbers1 = NULL; 0.00 : 73c492: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 73c499: 00 : int nnumbers1 = 0; 0.00 : 73c49a: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : bool have_mcvs2 = false; : Datum *values2 = NULL; 0.00 : 73c4a1: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 73c4a8: 00 : int nvalues2 = 0; 0.00 : 73c4a9: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) : float4 *numbers2 = NULL; 0.00 : 73c4b0: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 73c4b7: 00 : int nnumbers2 = 0; 0.00 : 73c4b8: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); 0.00 : 73c4bf: e8 ec be ff ff callq 7383b0 : nd2 = get_variable_numdistinct(vardata2, &isdefault2); 0.00 : 73c4c4: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 73c4cb: 48 8d 75 ce lea -0x32(%rbp),%rsi : Datum *values2 = NULL; : int nvalues2 = 0; : float4 *numbers2 = NULL; : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); 0.00 : 73c4cf: f2 0f 11 85 30 ff ff movsd %xmm0,-0xd0(%rbp) 0.00 : 73c4d6: ff : nd2 = get_variable_numdistinct(vardata2, &isdefault2); 0.00 : 73c4d7: e8 d4 be ff ff callq 7383b0 : * : * We can apply this clamping both with respect to the base relation from : * which the join variable comes (if there is just one), and to the : * immediate inner input relation of the current join. : */ : if (vardata2->rel) 0.00 : 73c4dc: 48 8b 95 10 ff ff ff mov -0xf0(%rbp),%rdx : int nvalues2 = 0; : float4 *numbers2 = NULL; : int nnumbers2 = 0; : : nd1 = get_variable_numdistinct(vardata1, &isdefault1); : nd2 = get_variable_numdistinct(vardata2, &isdefault2); 0.00 : 73c4e3: f2 0f 11 85 38 ff ff movsd %xmm0,-0xc8(%rbp) 0.00 : 73c4ea: ff : * : * We can apply this clamping both with respect to the base relation from : * which the join variable comes (if there is just one), and to the : * immediate inner input relation of the current join. : */ : if (vardata2->rel) 0.00 : 73c4eb: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 73c4ef: 48 85 c0 test %rax,%rax 0.00 : 73c4f2: 74 0d je 73c501 : nd2 = Min(nd2, vardata2->rel->rows); 0.00 : 73c4f4: f2 0f 5d 40 10 minsd 0x10(%rax),%xmm0 0.00 : 73c4f9: f2 0f 11 85 38 ff ff movsd %xmm0,-0xc8(%rbp) 0.00 : 73c500: ff : nd2 = Min(nd2, inner_rel->rows); 0.00 : 73c501: f2 0f 10 85 38 ff ff movsd -0xc8(%rbp),%xmm0 0.00 : 73c508: ff : : if (HeapTupleIsValid(vardata1->statsTuple)) 0.00 : 73c509: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : 73c510: 45 31 e4 xor %r12d,%r12d : * which the join variable comes (if there is just one), and to the : * immediate inner input relation of the current join. : */ : if (vardata2->rel) : nd2 = Min(nd2, vardata2->rel->rows); : nd2 = Min(nd2, inner_rel->rows); 0.00 : 73c513: f2 0f 5d 43 10 minsd 0x10(%rbx),%xmm0 : : if (HeapTupleIsValid(vardata1->statsTuple)) 0.00 : 73c518: 31 db xor %ebx,%ebx : * which the join variable comes (if there is just one), and to the : * immediate inner input relation of the current join. : */ : if (vardata2->rel) : nd2 = Min(nd2, vardata2->rel->rows); : nd2 = Min(nd2, inner_rel->rows); 0.00 : 73c51a: f2 0f 11 85 38 ff ff movsd %xmm0,-0xc8(%rbp) 0.00 : 73c521: ff : : if (HeapTupleIsValid(vardata1->statsTuple)) 0.00 : 73c522: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 73c526: 48 85 ff test %rdi,%rdi 0.00 : 73c529: 74 4e je 73c579 : { : stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); 0.00 : 73c52b: 48 8b 57 10 mov 0x10(%rdi),%rdx : have_mcvs1 = get_attstatsslot(vardata1->statsTuple, 0.00 : 73c52f: 48 8b 9d 18 ff ff ff mov -0xe8(%rbp),%rbx 0.00 : 73c536: 45 31 c9 xor %r9d,%r9d 0.00 : 73c539: 45 31 c0 xor %r8d,%r8d 0.00 : 73c53c: b9 01 00 00 00 mov $0x1,%ecx : nd2 = Min(nd2, vardata2->rel->rows); : nd2 = Min(nd2, inner_rel->rows); : : if (HeapTupleIsValid(vardata1->statsTuple)) : { : stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); 0.00 : 73c541: 0f b6 42 16 movzbl 0x16(%rdx),%eax : have_mcvs1 = get_attstatsslot(vardata1->statsTuple, 0.00 : 73c545: 8b 73 24 mov 0x24(%rbx),%esi : nd2 = Min(nd2, vardata2->rel->rows); : nd2 = Min(nd2, inner_rel->rows); : : if (HeapTupleIsValid(vardata1->statsTuple)) : { : stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); 0.00 : 73c548: 4c 8d 24 02 lea (%rdx,%rax,1),%r12 : have_mcvs1 = get_attstatsslot(vardata1->statsTuple, 0.00 : 73c54c: 48 8d 45 c4 lea -0x3c(%rbp),%rax 0.00 : 73c550: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 73c553: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 73c558: 48 8d 45 a8 lea -0x58(%rbp),%rax 0.00 : 73c55c: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 73c561: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : 73c565: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 73c56a: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 73c56e: 48 89 04 24 mov %rax,(%rsp) 0.00 : 73c572: e8 59 72 03 00 callq 7737d0 0.00 : 73c577: 89 c3 mov %eax,%ebx : NULL, : &values1, &nvalues1, : &numbers1, &nnumbers1); : } : : if (HeapTupleIsValid(vardata2->statsTuple)) 0.00 : 73c579: 48 8b 85 10 ff ff ff mov -0xf0(%rbp),%rax 0.00 : 73c580: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 73c584: 48 85 ff test %rdi,%rdi 0.00 : 73c587: 0f 84 a2 03 00 00 je 73c92f : { : have_mcvs2 = get_attstatsslot(vardata2->statsTuple, 0.00 : 73c58d: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 73c590: 8b 70 24 mov 0x24(%rax),%esi 0.00 : 73c593: 48 8d 45 bc lea -0x44(%rbp),%rax 0.00 : 73c597: 45 31 c9 xor %r9d,%r9d 0.00 : 73c59a: 45 31 c0 xor %r8d,%r8d 0.00 : 73c59d: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 73c5a2: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 73c5a7: 48 8d 45 98 lea -0x68(%rbp),%rax 0.00 : 73c5ab: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 73c5b0: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 73c5b4: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 73c5b9: 48 8d 45 a0 lea -0x60(%rbp),%rax 0.00 : 73c5bd: 48 89 04 24 mov %rax,(%rsp) 0.00 : 73c5c1: e8 0a 72 03 00 callq 7737d0 : NULL, : &values2, &nvalues2, : &numbers2, &nnumbers2); : } : : if (have_mcvs1 && have_mcvs2 && OidIsValid(operator)) 0.00 : 73c5c6: 84 db test %bl,%bl : &numbers1, &nnumbers1); : } : : if (HeapTupleIsValid(vardata2->statsTuple)) : { : have_mcvs2 = get_attstatsslot(vardata2->statsTuple, 0.00 : 73c5c8: 88 85 47 ff ff ff mov %al,-0xb9(%rbp) : NULL, : &values2, &nvalues2, : &numbers2, &nnumbers2); : } : : if (have_mcvs1 && have_mcvs2 && OidIsValid(operator)) 0.00 : 73c5ce: 0f 85 b7 00 00 00 jne 73c68b : { : /* : * Without MCV lists for both sides, we can only use the heuristic : * about nd1 vs nd2. : */ : double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; 0.00 : 73c5d4: 4d 85 e4 test %r12,%r12 0.00 : 73c5d7: 0f 84 62 03 00 00 je 73c93f 0.00 : 73c5dd: f3 41 0f 10 44 24 08 movss 0x8(%r12),%xmm0 0.00 : 73c5e4: f2 0f 10 0d 6c 2b 07 movsd 0x72b6c(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 73c5eb: 00 0.00 : 73c5ec: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73c5ef: f2 0f 5c c8 subsd %xmm0,%xmm1 : : if (!isdefault1 && !isdefault2) 0.00 : 73c5f3: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 73c5f7: 74 5d je 73c656 : selec = 1.0 - nullfrac1; : else : selec = (nd2 / nd1) * (1.0 - nullfrac1); : } : else : selec = 0.5 * (1.0 - nullfrac1); 0.00 : 73c5f9: f2 0f 59 0d e7 b3 13 mulsd 0x13b3e7(%rip),%xmm1 # 8779e8 <__func__.20024+0x28> 0.00 : 73c600: 00 : } : : if (have_mcvs1) 0.00 : 73c601: 84 db test %bl,%bl 0.00 : 73c603: 0f 85 f3 02 00 00 jne 73c8fc : free_attstatsslot(vardata1->atttype, values1, nvalues1, : numbers1, nnumbers1); : if (have_mcvs2) 0.00 : 73c609: 80 bd 47 ff ff ff 00 cmpb $0x0,-0xb9(%rbp) 0.00 : 73c610: 74 2e je 73c640 : free_attstatsslot(vardata2->atttype, values2, nvalues2, 0.00 : 73c612: 48 8b 9d 10 ff ff ff mov -0xf0(%rbp),%rbx 0.00 : 73c619: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 73c61d: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 73c620: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 73c624: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 73c628: 8b 7b 24 mov 0x24(%rbx),%edi 0.00 : 73c62b: f2 0f 11 8d f0 fe ff movsd %xmm1,-0x110(%rbp) 0.00 : 73c632: ff 0.00 : 73c633: e8 48 66 03 00 callq 772c80 0.00 : 73c638: f2 0f 10 8d f0 fe ff movsd -0x110(%rbp),%xmm1 0.00 : 73c63f: ff : numbers2, nnumbers2); : : return selec; : } 0.00 : 73c640: 48 81 c4 18 01 00 00 add $0x118,%rsp 0.00 : 73c647: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 73c64b: 5b pop %rbx 0.00 : 73c64c: 41 5c pop %r12 0.00 : 73c64e: 41 5d pop %r13 0.00 : 73c650: 41 5e pop %r14 0.00 : 73c652: 41 5f pop %r15 0.00 : 73c654: c9 leaveq 0.00 : 73c655: c3 retq : * Without MCV lists for both sides, we can only use the heuristic : * about nd1 vs nd2. : */ : double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; : : if (!isdefault1 && !isdefault2) 0.00 : 73c656: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) 0.00 : 73c65a: 75 9d jne 73c5f9 : { : if (nd1 <= nd2 || nd2 < 0) 0.00 : 73c65c: f2 0f 10 85 38 ff ff movsd -0xc8(%rbp),%xmm0 0.00 : 73c663: ff 0.00 : 73c664: 66 0f 2e 85 30 ff ff ucomisd -0xd0(%rbp),%xmm0 0.00 : 73c66b: ff 0.00 : 73c66c: 73 93 jae 73c601 0.00 : 73c66e: 66 0f 2e 05 62 5c 07 ucomisd 0x75c62(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 73c675: 00 0.00 : 73c676: 7a 02 jp 73c67a 0.00 : 73c678: 72 87 jb 73c601 : selec = 1.0 - nullfrac1; : else : selec = (nd2 / nd1) * (1.0 - nullfrac1); 0.00 : 73c67a: f2 0f 5e 85 30 ff ff divsd -0xd0(%rbp),%xmm0 0.00 : 73c681: ff 0.00 : 73c682: f2 0f 59 c8 mulsd %xmm0,%xmm1 0.00 : 73c686: e9 76 ff ff ff jmpq 73c601 : NULL, : &values2, &nvalues2, : &numbers2, &nnumbers2); : } : : if (have_mcvs1 && have_mcvs2 && OidIsValid(operator)) 0.00 : 73c68b: 84 c0 test %al,%al 0.00 : 73c68d: 0f 84 41 ff ff ff je 73c5d4 0.00 : 73c693: 45 85 ed test %r13d,%r13d 0.00 : 73c696: 0f 84 38 ff ff ff je 73c5d4 : * nvalues2; in which case, we assume that precisely the nd2 most : * common values in the relation will appear in the join input, and so : * compare to only the first nd2 members of the MCV list. Of course : * this is frequently wrong, but it's the best bet we can make. : */ : clamped_nvalues2 = Min(nvalues2, nd2); 0.00 : 73c69c: f2 0f 10 8d 38 ff ff movsd -0xc8(%rbp),%xmm1 0.00 : 73c6a3: ff : * in a skewed distribution this gives us a big leg up in accuracy. : */ : FmgrInfo eqproc; : bool *hasmatch1; : bool *hasmatch2; : double nullfrac1 = stats1->stanullfrac; 0.00 : 73c6a4: f3 41 0f 10 44 24 08 movss 0x8(%r12),%xmm0 0.00 : 73c6ab: f3 0f 11 85 24 ff ff movss %xmm0,-0xdc(%rbp) 0.00 : 73c6b2: ff : * nvalues2; in which case, we assume that precisely the nd2 most : * common values in the relation will appear in the join input, and so : * compare to only the first nd2 members of the MCV list. Of course : * this is frequently wrong, but it's the best bet we can make. : */ : clamped_nvalues2 = Min(nvalues2, nd2); 0.00 : 73c6b3: f2 0f 2a 45 c0 cvtsi2sdl -0x40(%rbp),%xmm0 0.00 : 73c6b8: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 73c6bc: 0f 87 8a 02 00 00 ja 73c94c 0.00 : 73c6c2: f2 0f 10 85 38 ff ff movsd -0xc8(%rbp),%xmm0 0.00 : 73c6c9: ff 0.00 : 73c6ca: f2 44 0f 2c f0 cvttsd2si %xmm0,%r14d : : fmgr_info(get_opcode(operator), &eqproc); 0.00 : 73c6cf: 44 89 ef mov %r13d,%edi 0.00 : 73c6d2: e8 e9 60 03 00 callq 7727c0 0.00 : 73c6d7: 48 8d b5 60 ff ff ff lea -0xa0(%rbp),%rsi 0.00 : 73c6de: 89 c7 mov %eax,%edi 0.00 : 73c6e0: e8 7b 39 04 00 callq 780060 : hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); 0.00 : 73c6e5: 48 63 7d c8 movslq -0x38(%rbp),%rdi 0.00 : 73c6e9: e8 82 c8 05 00 callq 798f70 : hasmatch2 = (bool *) palloc0(clamped_nvalues2 * sizeof(bool)); 0.00 : 73c6ee: 49 63 fe movslq %r14d,%rdi : * this is frequently wrong, but it's the best bet we can make. : */ : clamped_nvalues2 = Min(nvalues2, nd2); : : fmgr_info(get_opcode(operator), &eqproc); : hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); 0.00 : 73c6f1: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : hasmatch2 = (bool *) palloc0(clamped_nvalues2 * sizeof(bool)); 0.00 : 73c6f8: e8 73 c8 05 00 callq 798f70 : * other MCV list. If the operator isn't really equality, there could : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : nmatches = 0; : for (i = 0; i < nvalues1; i++) 0.00 : 73c6fd: 8b 75 c8 mov -0x38(%rbp),%esi : */ : clamped_nvalues2 = Min(nvalues2, nd2); : : fmgr_info(get_opcode(operator), &eqproc); : hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); : hasmatch2 = (bool *) palloc0(clamped_nvalues2 * sizeof(bool)); 0.00 : 73c700: 49 89 c5 mov %rax,%r13 : * other MCV list. If the operator isn't really equality, there could : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : nmatches = 0; : for (i = 0; i < nvalues1; i++) 0.00 : 73c703: c7 85 50 ff ff ff 00 movl $0x0,-0xb0(%rbp) 0.00 : 73c70a: 00 00 00 0.00 : 73c70d: c7 85 54 ff ff ff 00 movl $0x0,-0xac(%rbp) 0.00 : 73c714: 00 00 00 0.00 : 73c717: 85 f6 test %esi,%esi 0.00 : 73c719: 0f 8e 5e 02 00 00 jle 73c97d 0.00 : 73c71f: 90 nop : { : int j; : : for (j = 0; j < clamped_nvalues2; j++) 0.00 : 73c720: 45 85 f6 test %r14d,%r14d 0.00 : 73c723: 7e 74 jle 73c799 : { : if (hasmatch2[j]) : continue; : if (DatumGetBool(FunctionCall2Coll(&eqproc, 0.00 : 73c725: 48 63 9d 50 ff ff ff movslq -0xb0(%rbp),%rbx 0.00 : 73c72c: 49 89 df mov %rbx,%r15 0.00 : 73c72f: 48 89 9d 28 ff ff ff mov %rbx,-0xd8(%rbp) 0.00 : 73c736: 31 db xor %ebx,%ebx 0.00 : 73c738: 49 c1 e7 03 shl $0x3,%r15 0.00 : 73c73c: eb 0b jmp 73c749 0.00 : 73c73e: 66 90 xchg %ax,%ax : values1[i], : values2[j]))) : { : hasmatch1[i] = hasmatch2[j] = true; : nmatches++; : break; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2553 66.67 : 73c740: 48 83 c3 01 add $0x1,%rbx : nmatches = 0; : for (i = 0; i < nvalues1; i++) : { : int j; : : for (j = 0; j < clamped_nvalues2; j++) 0.00 : 73c744: 41 39 de cmp %ebx,%r14d 0.00 : 73c747: 7e 50 jle 73c799 : { : if (hasmatch2[j]) 0.00 : 73c749: 41 80 7c 1d 00 00 cmpb $0x0,0x0(%r13,%rbx,1) : * other MCV list. If the operator isn't really equality, there could : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : nmatches = 0; : for (i = 0; i < nvalues1; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:2538 33.33 : 73c74f: 4d 8d 64 1d 00 lea 0x0(%r13,%rbx,1),%r12 : { : int j; : : for (j = 0; j < clamped_nvalues2; j++) : { : if (hasmatch2[j]) 0.00 : 73c754: 75 ea jne 73c740 : continue; : if (DatumGetBool(FunctionCall2Coll(&eqproc, 0.00 : 73c756: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 73c75a: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi 0.00 : 73c761: be 64 00 00 00 mov $0x64,%esi 0.00 : 73c766: 48 8b 0c d8 mov (%rax,%rbx,8),%rcx 0.00 : 73c76a: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 73c76e: 4a 8b 14 38 mov (%rax,%r15,1),%rdx 0.00 : 73c772: e8 b9 18 04 00 callq 77e030 0.00 : 73c777: 84 c0 test %al,%al 0.00 : 73c779: 74 c5 je 73c740 : DEFAULT_COLLATION_OID, : values1[i], : values2[j]))) : { : hasmatch1[i] = hasmatch2[j] = true; 0.00 : 73c77b: 41 c6 04 24 01 movb $0x1,(%r12) 0.00 : 73c780: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 73c787: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 73c78e: c6 04 02 01 movb $0x1,(%rdx,%rax,1) : nmatches++; 0.00 : 73c792: 83 85 54 ff ff ff 01 addl $0x1,-0xac(%rbp) : * other MCV list. If the operator isn't really equality, there could : * be multiple matches --- but we don't look for them, both for speed : * and because the math wouldn't add up... : */ : nmatches = 0; : for (i = 0; i < nvalues1; i++) 0.00 : 73c799: 83 85 50 ff ff ff 01 addl $0x1,-0xb0(%rbp) 0.00 : 73c7a0: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73c7a3: 3b 95 50 ff ff ff cmp -0xb0(%rbp),%edx 0.00 : 73c7a9: 0f 8f 71 ff ff ff jg 73c720 : } : } : } : /* Sum up frequencies of matched MCVs */ : matchfreq1 = 0.0; : for (i = 0; i < nvalues1; i++) 0.00 : 73c7af: 85 d2 test %edx,%edx 0.00 : 73c7b1: 0f 8e d0 01 00 00 jle 73c987 : { : if (hasmatch1[i]) : matchfreq1 += numbers1[i]; 0.00 : 73c7b7: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 73c7bb: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 73c7bf: 31 c0 xor %eax,%eax 0.00 : 73c7c1: f2 0f 11 85 08 ff ff movsd %xmm0,-0xf8(%rbp) 0.00 : 73c7c8: ff 0.00 : 73c7c9: 66 0f 28 d0 movapd %xmm0,%xmm2 0.00 : 73c7cd: 0f 1f 00 nopl (%rax) : } : /* Sum up frequencies of matched MCVs */ : matchfreq1 = 0.0; : for (i = 0; i < nvalues1; i++) : { : if (hasmatch1[i]) 0.00 : 73c7d0: 48 8b 9d 48 ff ff ff mov -0xb8(%rbp),%rbx 0.00 : 73c7d7: 80 3c 03 00 cmpb $0x0,(%rbx,%rax,1) 0.00 : 73c7db: 74 0c je 73c7e9 : matchfreq1 += numbers1[i]; 0.00 : 73c7dd: f3 0f 10 04 81 movss (%rcx,%rax,4),%xmm0 0.00 : 73c7e2: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73c7e5: f2 0f 58 d0 addsd %xmm0,%xmm2 0.00 : 73c7e9: 48 83 c0 01 add $0x1,%rax : } : } : } : /* Sum up frequencies of matched MCVs */ : matchfreq1 = 0.0; : for (i = 0; i < nvalues1; i++) 0.00 : 73c7ed: 39 c2 cmp %eax,%edx 0.00 : 73c7ef: 7f df jg 73c7d0 : { : if (hasmatch1[i]) : matchfreq1 += numbers1[i]; : } : CLAMP_PROBABILITY(matchfreq1); 0.00 : 73c7f1: f2 0f 10 85 08 ff ff movsd -0xf8(%rbp),%xmm0 0.00 : 73c7f8: ff 0.00 : 73c7f9: 66 0f 2e c2 ucomisd %xmm2,%xmm0 0.00 : 73c7fd: 0f 87 59 01 00 00 ja 73c95c 0.00 : 73c803: f2 0f 10 1d 4d 29 07 movsd 0x7294d(%rip),%xmm3 # 7af158 <__func__.15777+0x10> 0.00 : 73c80a: 00 0.00 : 73c80b: 66 0f 28 c2 movapd %xmm2,%xmm0 0.00 : 73c80f: f2 0f 11 9d 00 ff ff movsd %xmm3,-0x100(%rbp) 0.00 : 73c816: ff 0.00 : 73c817: 66 0f 2e d3 ucomisd %xmm3,%xmm2 0.00 : 73c81b: 0f 86 86 01 00 00 jbe 73c9a7 0.00 : 73c821: f2 0f 10 85 08 ff ff movsd -0xf8(%rbp),%xmm0 0.00 : 73c828: ff 0.00 : 73c829: f2 0f 10 95 00 ff ff movsd -0x100(%rbp),%xmm2 0.00 : 73c830: ff 0.00 : 73c831: f2 0f 11 85 58 ff ff movsd %xmm0,-0xa8(%rbp) 0.00 : 73c838: ff : pfree(hasmatch1); 0.00 : 73c839: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 73c840: f2 0f 11 95 e0 fe ff movsd %xmm2,-0x120(%rbp) 0.00 : 73c847: ff 0.00 : 73c848: e8 33 c3 05 00 callq 798b80 : pfree(hasmatch2); 0.00 : 73c84d: 4c 89 ef mov %r13,%rdi 0.00 : 73c850: e8 2b c3 05 00 callq 798b80 : * Crude as the above is, it's completely useless if we don't have : * reliable ndistinct values for both sides. Hence, if either nd1 or : * nd2 is default, punt and assume half of the uncertain rows have : * join partners. : */ : if (!isdefault1 && !isdefault2) 0.00 : 73c855: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 73c859: f2 0f 10 95 e0 fe ff movsd -0x120(%rbp),%xmm2 0.00 : 73c860: ff 0.00 : 73c861: 75 50 jne 73c8b3 0.00 : 73c863: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) 0.00 : 73c867: 75 4a jne 73c8b3 : { : nd1 -= nmatches; 0.00 : 73c869: f2 0f 10 8d 30 ff ff movsd -0xd0(%rbp),%xmm1 0.00 : 73c870: ff 0.00 : 73c871: f2 0f 2a 85 54 ff ff cvtsi2sdl -0xac(%rbp),%xmm0 0.00 : 73c878: ff : nd2 -= nmatches; 0.00 : 73c879: f2 0f 10 9d 38 ff ff movsd -0xc8(%rbp),%xmm3 0.00 : 73c880: ff : * nd2 is default, punt and assume half of the uncertain rows have : * join partners. : */ : if (!isdefault1 && !isdefault2) : { : nd1 -= nmatches; 0.00 : 73c881: f2 0f 5c c8 subsd %xmm0,%xmm1 : nd2 -= nmatches; 0.00 : 73c885: f2 0f 5c d8 subsd %xmm0,%xmm3 0.00 : 73c889: 66 0f 28 c3 movapd %xmm3,%xmm0 : if (nd1 <= nd2 || nd2 < 0) 0.00 : 73c88d: 66 0f 2e d9 ucomisd %xmm1,%xmm3 0.00 : 73c891: 0f 83 29 01 00 00 jae 73c9c0 0.00 : 73c897: f2 0f 10 9d 08 ff ff movsd -0xf8(%rbp),%xmm3 0.00 : 73c89e: ff 0.00 : 73c89f: 66 0f 2e d8 ucomisd %xmm0,%xmm3 0.00 : 73c8a3: 0f 87 17 01 00 00 ja 73c9c0 : uncertainfrac = 1.0; : else : uncertainfrac = nd2 / nd1; 0.00 : 73c8a9: f2 0f 5e c1 divsd %xmm1,%xmm0 0.00 : 73c8ad: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 73c8b1: eb 08 jmp 73c8bb 0.00 : 73c8b3: f2 0f 10 0d 2d b1 13 movsd 0x13b12d(%rip),%xmm1 # 8779e8 <__func__.20024+0x28> 0.00 : 73c8ba: 00 : } : else : uncertainfrac = 0.5; : uncertain = 1.0 - matchfreq1 - nullfrac1; 0.00 : 73c8bb: f3 0f 10 85 24 ff ff movss -0xdc(%rbp),%xmm0 0.00 : 73c8c2: ff 0.00 : 73c8c3: f2 0f 10 9d 58 ff ff movsd -0xa8(%rbp),%xmm3 0.00 : 73c8ca: ff 0.00 : 73c8cb: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 73c8ce: f2 0f 5c d8 subsd %xmm0,%xmm3 0.00 : 73c8d2: 66 0f 28 c3 movapd %xmm3,%xmm0 : CLAMP_PROBABILITY(uncertain); 0.00 : 73c8d6: f2 0f 10 9d 08 ff ff movsd -0xf8(%rbp),%xmm3 0.00 : 73c8dd: ff 0.00 : 73c8de: 66 0f 2e d8 ucomisd %xmm0,%xmm3 0.00 : 73c8e2: 77 72 ja 73c956 0.00 : 73c8e4: f2 0f 10 9d 00 ff ff movsd -0x100(%rbp),%xmm3 0.00 : 73c8eb: ff 0.00 : 73c8ec: f2 0f 5d d8 minsd %xmm0,%xmm3 0.00 : 73c8f0: 66 0f 28 c3 movapd %xmm3,%xmm0 : selec = matchfreq1 + uncertainfrac * uncertain; 0.00 : 73c8f4: f2 0f 59 c8 mulsd %xmm0,%xmm1 0.00 : 73c8f8: f2 0f 58 ca addsd %xmm2,%xmm1 : else : selec = 0.5 * (1.0 - nullfrac1); : } : : if (have_mcvs1) : free_attstatsslot(vardata1->atttype, values1, nvalues1, 0.00 : 73c8fc: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : 73c903: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 73c907: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73c90a: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 73c90e: 44 8b 45 c4 mov -0x3c(%rbp),%r8d 0.00 : 73c912: 8b 78 24 mov 0x24(%rax),%edi 0.00 : 73c915: f2 0f 11 8d f0 fe ff movsd %xmm1,-0x110(%rbp) 0.00 : 73c91c: ff 0.00 : 73c91d: e8 5e 63 03 00 callq 772c80 0.00 : 73c922: f2 0f 10 8d f0 fe ff movsd -0x110(%rbp),%xmm1 0.00 : 73c929: ff 0.00 : 73c92a: e9 da fc ff ff jmpq 73c609 : { : /* : * Without MCV lists for both sides, we can only use the heuristic : * about nd1 vs nd2. : */ : double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; 0.00 : 73c92f: 4d 85 e4 test %r12,%r12 : } : else : uncertainfrac = 0.5; : uncertain = 1.0 - matchfreq1 - nullfrac1; : CLAMP_PROBABILITY(uncertain); : selec = matchfreq1 + uncertainfrac * uncertain; 0.00 : 73c932: c6 85 47 ff ff ff 00 movb $0x0,-0xb9(%rbp) : { : /* : * Without MCV lists for both sides, we can only use the heuristic : * about nd1 vs nd2. : */ : double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; 0.00 : 73c939: 0f 85 9e fc ff ff jne 73c5dd 0.00 : 73c93f: f2 0f 10 0d 11 28 07 movsd 0x72811(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 73c946: 00 0.00 : 73c947: e9 a7 fc ff ff jmpq 73c5f3 : * nvalues2; in which case, we assume that precisely the nd2 most : * common values in the relation will appear in the join input, and so : * compare to only the first nd2 members of the MCV list. Of course : * this is frequently wrong, but it's the best bet we can make. : */ : clamped_nvalues2 = Min(nvalues2, nd2); 0.00 : 73c94c: f2 44 0f 2c f0 cvttsd2si %xmm0,%r14d 0.00 : 73c951: e9 79 fd ff ff jmpq 73c6cf : uncertainfrac = nd2 / nd1; : } : else : uncertainfrac = 0.5; : uncertain = 1.0 - matchfreq1 - nullfrac1; : CLAMP_PROBABILITY(uncertain); 0.00 : 73c956: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 73c95a: eb 98 jmp 73c8f4 : for (i = 0; i < nvalues1; i++) : { : if (hasmatch1[i]) : matchfreq1 += numbers1[i]; : } : CLAMP_PROBABILITY(matchfreq1); 0.00 : 73c95c: f2 0f 10 0d f4 27 07 movsd 0x727f4(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 73c963: 00 0.00 : 73c964: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 73c968: f2 0f 11 8d 00 ff ff movsd %xmm1,-0x100(%rbp) 0.00 : 73c96f: ff 0.00 : 73c970: f2 0f 11 8d 58 ff ff movsd %xmm1,-0xa8(%rbp) 0.00 : 73c977: ff 0.00 : 73c978: e9 bc fe ff ff jmpq 73c839 : : if (have_mcvs1) : free_attstatsslot(vardata1->atttype, values1, nvalues1, : numbers1, nnumbers1); : if (have_mcvs2) : free_attstatsslot(vardata2->atttype, values2, nvalues2, 0.00 : 73c97d: c7 85 54 ff ff ff 00 movl $0x0,-0xac(%rbp) 0.00 : 73c984: 00 00 00 0.00 : 73c987: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 73c98b: f2 0f 10 0d c5 27 07 movsd 0x727c5(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 73c992: 00 0.00 : 73c993: f2 0f 11 85 08 ff ff movsd %xmm0,-0xf8(%rbp) 0.00 : 73c99a: ff 0.00 : 73c99b: 66 0f 28 d0 movapd %xmm0,%xmm2 0.00 : 73c99f: f2 0f 11 8d 00 ff ff movsd %xmm1,-0x100(%rbp) 0.00 : 73c9a6: ff : for (i = 0; i < nvalues1; i++) : { : if (hasmatch1[i]) : matchfreq1 += numbers1[i]; : } : CLAMP_PROBABILITY(matchfreq1); 0.00 : 73c9a7: f2 0f 10 8d 00 ff ff movsd -0x100(%rbp),%xmm1 0.00 : 73c9ae: ff 0.00 : 73c9af: f2 0f 5c c8 subsd %xmm0,%xmm1 0.00 : 73c9b3: f2 0f 11 8d 58 ff ff movsd %xmm1,-0xa8(%rbp) 0.00 : 73c9ba: ff 0.00 : 73c9bb: e9 79 fe ff ff jmpq 73c839 : nd1 -= nmatches; : nd2 -= nmatches; : if (nd1 <= nd2 || nd2 < 0) : uncertainfrac = 1.0; : else : uncertainfrac = nd2 / nd1; 0.00 : 73c9c0: f2 0f 10 8d 00 ff ff movsd -0x100(%rbp),%xmm1 0.00 : 73c9c7: ff 0.00 : 73c9c8: e9 ee fe ff ff jmpq 73c8bb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1168 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1176 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1193 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079ef20 : : * : * If the Datum is pass-by-ref type, the value will be copied. : */ : void : tuplesort_putdatum(Tuplesortstate *state, Datum val, bool isNull) : { 0.00 : 79ef20: 55 push %rbp 0.00 : 79ef21: 48 89 f1 mov %rsi,%rcx 0.00 : 79ef24: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1168 20.00 : 79ef27: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 79ef2b: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 79ef2f: 49 89 fc mov %rdi,%r12 0.00 : 79ef32: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 79ef36: 48 83 ec 40 sub $0x40,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 79ef3a: 48 8b 47 28 mov 0x28(%rdi),%rax : : /* : * If it's a pass-by-reference value, copy it into memory we control, and : * decrease availMem. Then call the common code. : */ : if (isNull || state->datumTypeByVal) 0.00 : 79ef3e: 84 d2 test %dl,%dl : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 40.00 : 79ef40: 4c 8b 2d 19 b9 41 00 mov 0x41b919(%rip),%r13 # bba860 : : CurrentMemoryContext = context; 0.00 : 79ef47: 48 89 05 12 b9 41 00 mov %rax,0x41b912(%rip) # bba860 0.00 : 79ef4e: 75 09 jne 79ef59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1176 20.00 : 79ef50: 80 bf 40 01 00 00 00 cmpb $0x0,0x140(%rdi) 0.00 : 79ef57: 74 37 je 79ef90 : { : stup.datum1 = val; 0.00 : 79ef59: 48 89 4d c8 mov %rcx,-0x38(%rbp) : stup.isnull1 = isNull; 0.00 : 79ef5d: 88 55 d0 mov %dl,-0x30(%rbp) : stup.tuple = NULL; /* no separate storage */ 0.00 : 79ef60: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 79ef67: 00 : stup.isnull1 = false; : stup.tuple = DatumGetPointer(stup.datum1); : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); : } : : puttuple_common(state, &stup); 0.00 : 79ef68: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 79ef6c: 4c 89 e7 mov %r12,%rdi 0.00 : 79ef6f: e8 bc f8 ff ff callq 79e830 0.00 : 79ef74: 4c 89 2d e5 b8 41 00 mov %r13,0x41b8e5(%rip) # bba860 : : MemoryContextSwitchTo(oldcontext); : } 0.00 : 79ef7b: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 79ef7f: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 79ef83: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 79ef87: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1193 20.00 : 79ef88: c3 retq 0.00 : 79ef89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : stup.isnull1 = isNull; : stup.tuple = NULL; /* no separate storage */ : } : else : { : stup.datum1 = datumCopy(val, false, state->datumTypeLen); 0.00 : 79ef90: 8b 97 3c 01 00 00 mov 0x13c(%rdi),%edx 0.00 : 79ef96: 31 f6 xor %esi,%esi 0.00 : 79ef98: 48 89 cf mov %rcx,%rdi 0.00 : 79ef9b: e8 d0 0f f3 ff callq 6cff70 : stup.isnull1 = false; : stup.tuple = DatumGetPointer(stup.datum1); : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); 0.00 : 79efa0: 49 8b 5c 24 10 mov 0x10(%r12),%rbx : stup.isnull1 = isNull; : stup.tuple = NULL; /* no separate storage */ : } : else : { : stup.datum1 = datumCopy(val, false, state->datumTypeLen); 0.00 : 79efa5: 48 89 c7 mov %rax,%rdi 0.00 : 79efa8: 48 89 45 c8 mov %rax,-0x38(%rbp) : stup.isnull1 = false; 0.00 : 79efac: c6 45 d0 00 movb $0x0,-0x30(%rbp) : stup.tuple = DatumGetPointer(stup.datum1); 0.00 : 79efb0: 48 89 45 c0 mov %rax,-0x40(%rbp) : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); 0.00 : 79efb4: e8 d7 9a ff ff callq 798a90 0.00 : 79efb9: 48 29 c3 sub %rax,%rbx 0.00 : 79efbc: 49 89 5c 24 10 mov %rbx,0x10(%r12) 0.00 : 79efc1: eb a5 jmp 79ef68 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001dbf0 : : /* : * Returns the display length of a multibyte character. : */ : int : pg_encoding_dsplen(int encoding, const char *mbstr) : { 0.00 : 1dbf0: 55 push %rbp : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dbf1: 83 ff 29 cmp $0x29,%edi : /* : * Returns the display length of a multibyte character. : */ : int : pg_encoding_dsplen(int encoding, const char *mbstr) : { 0.00 : 1dbf4: 48 89 e5 mov %rsp,%rbp : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dbf7: 76 17 jbe 1dc10 0.00 : 1dbf9: 48 8b 05 d8 a3 20 00 mov 0x20a3d8(%rip),%rax # 227fd8 <_DYNAMIC+0x1f8> 0.00 : 1dc00: 48 89 f7 mov %rsi,%rdi 0.00 : 1dc03: 4c 8b 58 18 mov 0x18(%rax),%r11 : ((*pg_wchar_table[encoding].dsplen) ((const unsigned char *) mbstr)) : : ((*pg_wchar_table[PG_SQL_ASCII].dsplen) ((const unsigned char *) mbstr))); : } 0.00 : 1dc07: c9 leaveq : * Returns the display length of a multibyte character. : */ : int : pg_encoding_dsplen(int encoding, const char *mbstr) : { : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dc08: 41 ff e3 jmpq *%r11 0.00 : 1dc0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1dc10: 48 63 c7 movslq %edi,%rax ??:0 20.00 : 1dc13: 48 89 f7 mov %rsi,%rdi 0.00 : 1dc16: 48 8d 44 40 01 lea 0x1(%rax,%rax,2),%rax 0.00 : 1dc1b: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1dc1f: 48 03 05 b2 a3 20 00 add 0x20a3b2(%rip),%rax # 227fd8 <_DYNAMIC+0x1f8> 20.00 : 1dc26: 4c 8b 58 08 mov 0x8(%rax),%r11 : ((*pg_wchar_table[encoding].dsplen) ((const unsigned char *) mbstr)) : : ((*pg_wchar_table[PG_SQL_ASCII].dsplen) ((const unsigned char *) mbstr))); : } 60.00 : 1dc2a: c9 leaveq : * Returns the display length of a multibyte character. : */ : int : pg_encoding_dsplen(int encoding, const char *mbstr) : { : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dc2b: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000201b0 <__gconv_compare_alias>: 0.00 : 201b0: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) ??:0 66.67 : 201b5: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 201ba: 48 89 f3 mov %rsi,%rbx 0.00 : 201bd: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 201c2: 48 83 ec 38 sub $0x38,%rsp 0.00 : 201c6: 8b 35 e4 74 35 00 mov 0x3574e4(%rip),%esi # 3776b0 <__libc_pthread_functions_init> 0.00 : 201cc: 48 89 fd mov %rdi,%rbp 0.00 : 201cf: 85 f6 test %esi,%esi 0.00 : 201d1: 0f 85 b9 00 00 00 jne 20290 <__gconv_compare_alias+0xe0> 0.00 : 201d7: 8b 0d c3 2d 35 00 mov 0x352dc3(%rip),%ecx # 372fa0 0.00 : 201dd: 85 c9 test %ecx,%ecx 0.00 : 201df: 74 2f je 20210 <__gconv_compare_alias+0x60> 33.33 : 201e1: 48 8d 54 24 1c lea 0x1c(%rsp),%rdx 0.00 : 201e6: 48 89 de mov %rbx,%rsi 0.00 : 201e9: 48 89 ef mov %rbp,%rdi 0.00 : 201ec: e8 3f 83 00 00 callq 28530 <__gconv_compare_alias_cache> 0.00 : 201f1: 85 c0 test %eax,%eax 0.00 : 201f3: 75 2b jne 20220 <__gconv_compare_alias+0x70> 0.00 : 201f5: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 201f9: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 201fe: 48 8b 6c 24 28 mov 0x28(%rsp),%rbp 0.00 : 20203: 4c 8b 64 24 30 mov 0x30(%rsp),%r12 0.00 : 20208: 48 83 c4 38 add $0x38,%rsp 0.00 : 2020c: c3 retq 0.00 : 2020d: 0f 1f 00 nopl (%rax) 0.00 : 20210: e8 2b 19 00 00 callq 21b40 <__gconv_read_conf> 0.00 : 20215: 83 0d 84 2d 35 00 02 orl $0x2,0x352d84(%rip) # 372fa0 0.00 : 2021c: eb c3 jmp 201e1 <__gconv_compare_alias+0x31> 0.00 : 2021e: 66 90 xchg %ax,%ax 0.00 : 20220: 48 8d 15 79 ff ff ff lea -0x87(%rip),%rdx # 201a0 <__gconv_alias_compare> 0.00 : 20227: 48 8d 35 5a 70 35 00 lea 0x35705a(%rip),%rsi # 377288 <__gconv_alias_db> 0.00 : 2022e: 48 89 e7 mov %rsp,%rdi 0.00 : 20231: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 20235: e8 26 8e 0b 00 callq d9060 0.00 : 2023a: 48 85 c0 test %rax,%rax 0.00 : 2023d: 74 0e je 2024d <__gconv_compare_alias+0x9d> 0.00 : 2023f: 48 8b 00 mov (%rax),%rax 0.00 : 20242: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 20246: 48 85 c0 test %rax,%rax 0.00 : 20249: 48 0f 45 d8 cmovne %rax,%rbx 0.00 : 2024d: 48 8d 15 4c ff ff ff lea -0xb4(%rip),%rdx # 201a0 <__gconv_alias_compare> 0.00 : 20254: 48 8d 35 2d 70 35 00 lea 0x35702d(%rip),%rsi # 377288 <__gconv_alias_db> 0.00 : 2025b: 48 89 e7 mov %rsp,%rdi 0.00 : 2025e: 48 89 2c 24 mov %rbp,(%rsp) 0.00 : 20262: e8 f9 8d 0b 00 callq d9060 0.00 : 20267: 48 85 c0 test %rax,%rax 0.00 : 2026a: 74 0e je 2027a <__gconv_compare_alias+0xca> 0.00 : 2026c: 48 8b 00 mov (%rax),%rax 0.00 : 2026f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 20273: 48 85 c0 test %rax,%rax 0.00 : 20276: 48 0f 45 e8 cmovne %rax,%rbp 0.00 : 2027a: 48 89 de mov %rbx,%rsi 0.00 : 2027d: 48 89 ef mov %rbp,%rdi 0.00 : 20280: e8 cb ee 05 00 callq 7f150 <__GI_strcmp> 0.00 : 20285: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : 20289: e9 67 ff ff ff jmpq 201f5 <__gconv_compare_alias+0x45> 0.00 : 2028e: 66 90 xchg %ax,%ax 0.00 : 20290: 48 8b 05 a1 73 35 00 mov 0x3573a1(%rip),%rax # 377638 <__libc_pthread_functions+0x138> 0.00 : 20297: 48 8d 35 a2 18 00 00 lea 0x18a2(%rip),%rsi # 21b40 <__gconv_read_conf> 0.00 : 2029e: 48 8d 3d fb 2c 35 00 lea 0x352cfb(%rip),%rdi # 372fa0 0.00 : 202a5: 48 c1 c8 11 ror $0x11,%rax 0.00 : 202a9: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 202b0: 00 00 0.00 : 202b2: ff d0 callq *%rax 0.00 : 202b4: e9 28 ff ff ff jmpq 201e1 <__gconv_compare_alias+0x31> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000029240 : ??:0 16.67 : 29240: 55 push %rbp 0.00 : 29241: 48 89 e5 mov %rsp,%rbp 0.00 : 29244: 41 57 push %r15 0.00 : 29246: 41 89 ff mov %edi,%r15d 0.00 : 29249: 41 56 push %r14 0.00 : 2924b: 4c 63 f7 movslq %edi,%r14 0.00 : 2924e: 41 55 push %r13 0.00 : 29250: 49 89 f5 mov %rsi,%r13 0.00 : 29253: 41 54 push %r12 0.00 : 29255: 53 push %rbx 0.00 : 29256: 48 81 ec 28 01 00 00 sub $0x128,%rsp 0.00 : 2925d: 49 83 fe 0c cmp $0xc,%r14 0.00 : 29261: 0f 87 4f 05 00 00 ja 297b6 0.00 : 29267: 48 85 f6 test %rsi,%rsi 0.00 : 2926a: 0f 84 18 04 00 00 je 29688 0.00 : 29270: 44 8b 0d 39 e4 34 00 mov 0x34e439(%rip),%r9d # 3776b0 <__libc_pthread_functions_init> 0.00 : 29277: 45 85 c9 test %r9d,%r9d 0.00 : 2927a: 0f 85 98 01 00 00 jne 29418 0.00 : 29280: 48 8d 05 39 93 34 00 lea 0x349339(%rip),%rax # 3725c0 <_nl_global_locale> 0.00 : 29287: 4d 8d 66 10 lea 0x10(%r14),%r12 0.00 : 2928b: 4c 89 ef mov %r13,%rdi 0.00 : 2928e: 4a 8b 1c e0 mov (%rax,%r12,8),%rbx 16.67 : 29292: 48 89 de mov %rbx,%rsi 0.00 : 29295: e8 b6 5e 05 00 callq 7f150 <__GI_strcmp> 0.00 : 2929a: 85 c0 test %eax,%eax 0.00 : 2929c: 75 52 jne 292f0 0.00 : 2929e: 44 8b 05 0b e4 34 00 mov 0x34e40b(%rip),%r8d # 3776b0 <__libc_pthread_functions_init> 0.00 : 292a5: 45 85 c0 test %r8d,%r8d 0.00 : 292a8: 75 16 jne 292c0 0.00 : 292aa: 49 89 dd mov %rbx,%r13 0.00 : 292ad: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 292b1: 4c 89 e8 mov %r13,%rax 0.00 : 292b4: 5b pop %rbx 0.00 : 292b5: 41 5c pop %r12 0.00 : 292b7: 41 5d pop %r13 0.00 : 292b9: 41 5e pop %r14 0.00 : 292bb: 41 5f pop %r15 0.00 : 292bd: c9 leaveq 0.00 : 292be: c3 retq 0.00 : 292bf: 90 nop 0.00 : 292c0: 48 8b 05 89 e3 34 00 mov 0x34e389(%rip),%rax # 377650 <__libc_pthread_functions+0x150> 0.00 : 292c7: 48 8d 3d 32 9d 34 00 lea 0x349d32(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 292ce: 48 c1 c8 11 ror $0x11,%rax 0.00 : 292d2: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 292d9: 00 00 0.00 : 292db: ff d0 callq *%rax 0.00 : 292dd: 48 8d 15 dc 92 34 00 lea 0x3492dc(%rip),%rdx # 3725c0 <_nl_global_locale> 0.00 : 292e4: 4a 8b 1c e2 mov (%rdx,%r12,8),%rbx 0.00 : 292e8: eb c0 jmp 292aa 0.00 : 292ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 292f0: 48 8d 3d 9c 15 11 00 lea 0x11159c(%rip),%rdi # 13a893 0.00 : 292f7: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 292fe: 00 0.00 : 292ff: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 29306: 00 0.00 : 29307: e8 44 bb 00 00 callq 34e50 0.00 : 2930c: 48 85 c0 test %rax,%rax 0.00 : 2930f: 74 09 je 2931a 0.00 : 29311: 80 38 00 cmpb $0x0,(%rax) 0.00 : 29314: 0f 85 f6 02 00 00 jne 29610 0.00 : 2931a: 41 83 ff 06 cmp $0x6,%r15d 0.00 : 2931e: 66 90 xchg %ax,%ax 0.00 : 29320: 0f 84 1a 01 00 00 je 29440 0.00 : 29326: 48 8d b5 50 ff ff ff lea -0xb0(%rbp),%rsi 0.00 : 2932d: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 29331: 44 89 fa mov %r15d,%edx 0.00 : 29334: 4c 89 ad 50 ff ff ff mov %r13,-0xb0(%rbp) 0.00 : 2933b: 48 89 b5 c8 fe ff ff mov %rsi,-0x138(%rbp) 0.00 : 29342: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 29346: 48 8b 8d c8 fe ff ff mov -0x138(%rbp),%rcx 0.00 : 2934d: e8 be 06 00 00 callq 29a10 <_nl_find_locale> 0.00 : 29352: 48 85 c0 test %rax,%rax 0.00 : 29355: 48 89 c3 mov %rax,%rbx 0.00 : 29358: 0f 84 6a 03 00 00 je 296c8 0.00 : 2935e: 83 78 30 ff cmpl $0xffffffff,0x30(%rax) 0.00 : 29362: 74 07 je 2936b 0.00 : 29364: c7 40 30 ff ff ff ff movl $0xffffffff,0x30(%rax) 0.00 : 2936b: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 29372: 4c 8d 2d cd 2d 11 00 lea 0x112dcd(%rip),%r13 # 13c146 <_nl_C_name> 0.00 : 29379: 4c 39 ef cmp %r13,%rdi 0.00 : 2937c: 74 15 je 29393 0.00 : 2937e: e8 2d 75 05 00 callq 808b0 <__strdup> 0.00 : 29383: 48 85 c0 test %rax,%rax 0.00 : 29386: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 2938d: 0f 84 35 03 00 00 je 296c8 0.00 : 29393: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : 2939a: 44 89 ff mov %r15d,%edi 0.00 : 2939d: e8 8e fc ff ff callq 29030 0.00 : 293a2: 48 85 c0 test %rax,%rax 0.00 : 293a5: 49 89 c4 mov %rax,%r12 0.00 : 293a8: 0f 84 09 03 00 00 je 296b7 0.00 : 293ae: 48 8d 05 0b 92 34 00 lea 0x34920b(%rip),%rax # 3725c0 <_nl_global_locale> 0.00 : 293b5: 4a 89 1c f0 mov %rbx,(%rax,%r14,8) 0.00 : 293b9: 48 8d 05 00 69 34 00 lea 0x346900(%rip),%rax # 36fcc0 <_nl_category_postload> 0.00 : 293c0: 4a 8b 04 f0 mov (%rax,%r14,8),%rax 0.00 : 293c4: 48 85 c0 test %rax,%rax 0.00 : 293c7: 74 02 je 293cb 0.00 : 293c9: ff d0 callq *%rax 0.00 : 293cb: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 293d2: 44 89 ff mov %r15d,%edi 0.00 : 293d5: e8 f6 fb ff ff callq 28fd0 0.00 : 293da: 4c 89 e6 mov %r12,%rsi 0.00 : 293dd: bf 06 00 00 00 mov $0x6,%edi 0.00 : 293e2: e8 e9 fb ff ff callq 28fd0 0.00 : 293e7: 48 8b 05 e2 8a 34 00 mov 0x348ae2(%rip),%rax # 371ed0 <_DYNAMIC+0x370> 0.00 : 293ee: 83 00 01 addl $0x1,(%rax) 0.00 : 293f1: 8b 05 b9 e2 34 00 mov 0x34e2b9(%rip),%eax # 3776b0 <__libc_pthread_functions_init> 0.00 : 293f7: 85 c0 test %eax,%eax 0.00 : 293f9: 0f 85 e1 02 00 00 jne 296e0 0.00 : 293ff: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 29403: e8 98 54 ff ff callq 1e8a0 0.00 : 29408: 4c 8b ad 50 ff ff ff mov -0xb0(%rbp),%r13 0.00 : 2940f: e9 99 fe ff ff jmpq 292ad 0.00 : 29414: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 29418: 48 8b 05 29 e2 34 00 mov 0x34e229(%rip),%rax # 377648 <__libc_pthread_functions+0x148> 0.00 : 2941f: 48 8d 3d da 9b 34 00 lea 0x349bda(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 29426: 48 c1 c8 11 ror $0x11,%rax 0.00 : 2942a: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 29431: 00 00 0.00 : 29433: ff d0 callq *%rax 0.00 : 29435: e9 46 fe ff ff jmpq 29280 0.00 : 2943a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 29440: 31 d2 xor %edx,%edx 0.00 : 29442: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 29447: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2944e: 00 00 0.00 : 29450: 83 fa 06 cmp $0x6,%edx 0.00 : 29453: 0f 44 d1 cmove %ecx,%edx 0.00 : 29456: 48 63 c2 movslq %edx,%rax 0.00 : 29459: 83 c2 01 add $0x1,%edx 0.00 : 2945c: 83 fa 0c cmp $0xc,%edx 0.00 : 2945f: 4c 89 ac c5 50 ff ff mov %r13,-0xb0(%rbp,%rax,8) 0.00 : 29466: ff 0.00 : 29467: 7e e7 jle 29450 0.00 : 29469: be 3b 00 00 00 mov $0x3b,%esi 0.00 : 2946e: 4c 89 ef mov %r13,%rdi 0.00 : 29471: e8 1a 5c 05 00 callq 7f090 <__GI_strchr> 16.67 : 29476: 48 85 c0 test %rax,%rax 0.00 : 29479: 0f 85 56 03 00 00 jne 297d5 0.00 : 2947f: 48 8d 8d 50 ff ff ff lea -0xb0(%rbp),%rcx 0.00 : 29486: c7 85 d8 fe ff ff 0d movl $0xd,-0x128(%rbp) 0.00 : 2948d: 00 00 00 0.00 : 29490: bb 0c 00 00 00 mov $0xc,%ebx 0.00 : 29495: c7 85 d4 fe ff ff 0b movl $0xb,-0x12c(%rbp) 0.00 : 2949c: 00 00 00 0.00 : 2949f: 49 89 cf mov %rcx,%r15 0.00 : 294a2: 48 89 8d c8 fe ff ff mov %rcx,-0x138(%rbp) 0.00 : 294a9: 49 83 c7 60 add $0x60,%r15 0.00 : 294ad: eb 2b jmp 294da 0.00 : 294af: 90 nop 0.00 : 294b0: 4e 89 b4 ed 50 ff ff mov %r14,-0xb0(%rbp,%r13,8) 0.00 : 294b7: ff 0.00 : 294b8: 85 db test %ebx,%ebx 0.00 : 294ba: 0f 8e e0 01 00 00 jle 296a0 0.00 : 294c0: 8b 95 dc fe ff ff mov -0x124(%rbp),%edx 16.67 : 294c6: 83 ad d4 fe ff ff 01 subl $0x1,-0x12c(%rbp) 0.00 : 294cd: 83 eb 01 sub $0x1,%ebx 0.00 : 294d0: 49 83 ef 08 sub $0x8,%r15 0.00 : 294d4: 89 95 d8 fe ff ff mov %edx,-0x128(%rbp) 0.00 : 294da: 83 fb 06 cmp $0x6,%ebx 0.00 : 294dd: 89 9d dc fe ff ff mov %ebx,-0x124(%rbp) 0.00 : 294e3: 74 db je 294c0 0.00 : 294e5: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 294e9: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 294ed: 4c 89 f9 mov %r15,%rcx 0.00 : 294f0: 89 da mov %ebx,%edx 0.00 : 294f2: 4c 63 eb movslq %ebx,%r13 0.00 : 294f5: e8 16 05 00 00 callq 29a10 <_nl_find_locale> 0.00 : 294fa: 48 85 c0 test %rax,%rax 0.00 : 294fd: 4a 89 84 ed e0 fe ff mov %rax,-0x120(%rbp,%r13,8) 0.00 : 29504: ff 0.00 : 29505: 74 61 je 29568 0.00 : 29507: 83 78 30 ff cmpl $0xffffffff,0x30(%rax) 0.00 : 2950b: 74 07 je 29514 0.00 : 2950d: c7 40 30 ff ff ff ff movl $0xffffffff,0x30(%rax) 0.00 : 29514: 4e 8b a4 ed 50 ff ff mov -0xb0(%rbp,%r13,8),%r12 0.00 : 2951b: ff 0.00 : 2951c: 48 8d 0d 23 2c 11 00 lea 0x112c23(%rip),%rcx # 13c146 <_nl_C_name> 0.00 : 29523: 49 39 cc cmp %rcx,%r12 0.00 : 29526: 74 90 je 294b8 16.67 : 29528: 48 8d 35 91 90 34 00 lea 0x349091(%rip),%rsi # 3725c0 <_nl_global_locale> 0.00 : 2952f: 4c 89 e7 mov %r12,%rdi 0.00 : 29532: 4e 8b b4 ee 80 00 00 mov 0x80(%rsi,%r13,8),%r14 0.00 : 29539: 00 0.00 : 2953a: 4c 89 f6 mov %r14,%rsi 0.00 : 2953d: e8 0e 5c 05 00 callq 7f150 <__GI_strcmp> 0.00 : 29542: 85 c0 test %eax,%eax 0.00 : 29544: 0f 84 66 ff ff ff je 294b0 0.00 : 2954a: 4c 89 e7 mov %r12,%rdi 0.00 : 2954d: e8 5e 73 05 00 callq 808b0 <__strdup> 0.00 : 29552: 48 85 c0 test %rax,%rax 0.00 : 29555: 4a 89 84 ed 50 ff ff mov %rax,-0xb0(%rbp,%r13,8) 0.00 : 2955c: ff 16.67 : 2955d: 0f 85 55 ff ff ff jne 294b8 0.00 : 29563: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 29568: 8b 8d dc fe ff ff mov -0x124(%rbp),%ecx 0.00 : 2956e: 85 c9 test %ecx,%ecx 0.00 : 29570: 0f 88 8c 01 00 00 js 29702 0.00 : 29576: 83 bd d8 fe ff ff 0d cmpl $0xd,-0x128(%rbp) 0.00 : 2957d: 74 51 je 295d0 0.00 : 2957f: 8b 9d d8 fe ff ff mov -0x128(%rbp),%ebx 0.00 : 29585: 4c 8d 2d ba 2b 11 00 lea 0x112bba(%rip),%r13 # 13c146 <_nl_C_name> 0.00 : 2958c: 44 8d 63 01 lea 0x1(%rbx),%r12d 0.00 : 29590: eb 0d jmp 2959f 0.00 : 29592: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 29598: 83 c3 01 add $0x1,%ebx 0.00 : 2959b: 41 83 c4 01 add $0x1,%r12d 0.00 : 2959f: 83 fb 06 cmp $0x6,%ebx 0.00 : 295a2: 74 f4 je 29598 0.00 : 295a4: 48 63 c3 movslq %ebx,%rax 0.00 : 295a7: 48 8b bc c5 50 ff ff mov -0xb0(%rbp,%rax,8),%rdi 0.00 : 295ae: ff 0.00 : 295af: 4c 39 ef cmp %r13,%rdi 0.00 : 295b2: 74 16 je 295ca 0.00 : 295b4: 48 8d 0d 05 90 34 00 lea 0x349005(%rip),%rcx # 3725c0 <_nl_global_locale> 0.00 : 295bb: 48 3b bc c1 80 00 00 cmp 0x80(%rcx,%rax,8),%rdi 0.00 : 295c2: 00 0.00 : 295c3: 74 05 je 295ca 0.00 : 295c5: e8 d6 52 ff ff callq 1e8a0 0.00 : 295ca: 41 83 fc 0d cmp $0xd,%r12d 0.00 : 295ce: 75 c8 jne 29598 0.00 : 295d0: 45 31 ed xor %r13d,%r13d 0.00 : 295d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 295d8: 8b 15 d2 e0 34 00 mov 0x34e0d2(%rip),%edx # 3776b0 <__libc_pthread_functions_init> 0.00 : 295de: 85 d2 test %edx,%edx 0.00 : 295e0: 74 1d je 295ff 0.00 : 295e2: 48 8b 05 67 e0 34 00 mov 0x34e067(%rip),%rax # 377650 <__libc_pthread_functions+0x150> 0.00 : 295e9: 48 8d 3d 10 9a 34 00 lea 0x349a10(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 295f0: 48 c1 c8 11 ror $0x11,%rax 0.00 : 295f4: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 295fb: 00 00 0.00 : 295fd: ff d0 callq *%rax 0.00 : 295ff: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 29603: e8 98 52 ff ff callq 1e8a0 0.00 : 29608: e9 a0 fc ff ff jmpq 292ad 0.00 : 2960d: 0f 1f 00 nopl (%rax) 0.00 : 29610: 48 8d 5d c0 lea -0x40(%rbp),%rbx 0.00 : 29614: 4c 8d 65 c8 lea -0x38(%rbp),%r12 0.00 : 29618: be 3a 00 00 00 mov $0x3a,%esi 0.00 : 2961d: 48 89 c7 mov %rax,%rdi 0.00 : 29620: 48 89 d9 mov %rbx,%rcx 0.00 : 29623: 4c 89 e2 mov %r12,%rdx 0.00 : 29626: e8 05 c8 05 00 callq 85e30 0.00 : 2962b: 85 c0 test %eax,%eax 0.00 : 2962d: 75 1f jne 2964e 0.00 : 2962f: 48 8d 15 9a 91 11 00 lea 0x11919a(%rip),%rdx # 1427d0 <_nl_default_locale_path> 0.00 : 29636: b9 3a 00 00 00 mov $0x3a,%ecx 0.00 : 2963b: 48 89 de mov %rbx,%rsi 0.00 : 2963e: 4c 89 e7 mov %r12,%rdi 0.00 : 29641: e8 da cb 05 00 callq 86220 0.00 : 29646: 85 c0 test %eax,%eax 0.00 : 29648: 0f 84 cc fc ff ff je 2931a 0.00 : 2964e: 8b 3d 5c e0 34 00 mov 0x34e05c(%rip),%edi # 3776b0 <__libc_pthread_functions_init> 0.00 : 29654: 45 31 ed xor %r13d,%r13d 0.00 : 29657: 85 ff test %edi,%edi 0.00 : 29659: 0f 84 4e fc ff ff je 292ad 0.00 : 2965f: 48 8b 05 ea df 34 00 mov 0x34dfea(%rip),%rax # 377650 <__libc_pthread_functions+0x150> 0.00 : 29666: 48 8d 3d 93 99 34 00 lea 0x349993(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 2966d: 45 31 ed xor %r13d,%r13d 0.00 : 29670: 48 c1 c8 11 ror $0x11,%rax 0.00 : 29674: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 2967b: 00 00 0.00 : 2967d: ff d0 callq *%rax 0.00 : 2967f: e9 29 fc ff ff jmpq 292ad 0.00 : 29684: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 29688: 48 8d 05 31 8f 34 00 lea 0x348f31(%rip),%rax # 3725c0 <_nl_global_locale> 0.00 : 2968f: 4e 8b ac f0 80 00 00 mov 0x80(%rax,%r14,8),%r13 0.00 : 29696: 00 0.00 : 29697: e9 11 fc ff ff jmpq 292ad 0.00 : 2969c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 296a0: 8b 85 d4 fe ff ff mov -0x12c(%rbp),%eax 0.00 : 296a6: 89 9d d8 fe ff ff mov %ebx,-0x128(%rbp) 0.00 : 296ac: 89 85 dc fe ff ff mov %eax,-0x124(%rbp) 0.00 : 296b2: e9 b1 fe ff ff jmpq 29568 0.00 : 296b7: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 296be: 4c 39 ef cmp %r13,%rdi 0.00 : 296c1: 74 05 je 296c8 0.00 : 296c3: e8 d8 51 ff ff callq 1e8a0 0.00 : 296c8: 48 c7 85 50 ff ff ff movq $0x0,-0xb0(%rbp) 0.00 : 296cf: 00 00 00 00 0.00 : 296d3: e9 19 fd ff ff jmpq 293f1 0.00 : 296d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 296df: 00 0.00 : 296e0: 48 8b 05 69 df 34 00 mov 0x34df69(%rip),%rax # 377650 <__libc_pthread_functions+0x150> 0.00 : 296e7: 48 8d 3d 12 99 34 00 lea 0x349912(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 296ee: 48 c1 c8 11 ror $0x11,%rax 0.00 : 296f2: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 296f9: 00 00 0.00 : 296fb: ff d0 callq *%rax 0.00 : 296fd: e9 fd fc ff ff jmpq 293ff 0.00 : 29702: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : 29709: bf 06 00 00 00 mov $0x6,%edi 0.00 : 2970e: e8 1d f9 ff ff callq 29030 0.00 : 29713: 48 85 c0 test %rax,%rax 0.00 : 29716: 49 89 c5 mov %rax,%r13 0.00 : 29719: 0f 84 57 fe ff ff je 29576 0.00 : 2971f: 4c 8d 3d 9a 65 34 00 lea 0x34659a(%rip),%r15 # 36fcc0 <_nl_category_postload> 0.00 : 29726: 45 31 e4 xor %r12d,%r12d 0.00 : 29729: 41 be 07 00 00 00 mov $0x7,%r14d 0.00 : 2972f: 90 nop 0.00 : 29730: 41 83 fc 06 cmp $0x6,%r12d 0.00 : 29734: 48 8d 15 85 8e 34 00 lea 0x348e85(%rip),%rdx # 3725c0 <_nl_global_locale> 0.00 : 2973b: 45 0f 44 e6 cmove %r14d,%r12d 0.00 : 2973f: 49 63 dc movslq %r12d,%rbx 0.00 : 29742: 48 8b 84 dd e0 fe ff mov -0x120(%rbp,%rbx,8),%rax 0.00 : 29749: ff 0.00 : 2974a: 48 89 04 da mov %rax,(%rdx,%rbx,8) 0.00 : 2974e: 49 8b 04 df mov (%r15,%rbx,8),%rax 0.00 : 29752: 48 85 c0 test %rax,%rax 0.00 : 29755: 74 02 je 29759 0.00 : 29757: ff d0 callq *%rax 0.00 : 29759: 48 8b b4 dd 50 ff ff mov -0xb0(%rbp,%rbx,8),%rsi 0.00 : 29760: ff 0.00 : 29761: 44 89 e7 mov %r12d,%edi 0.00 : 29764: 41 83 c4 01 add $0x1,%r12d 0.00 : 29768: e8 63 f8 ff ff callq 28fd0 0.00 : 2976d: 41 83 fc 0c cmp $0xc,%r12d 0.00 : 29771: 7e bd jle 29730 0.00 : 29773: 4c 89 ee mov %r13,%rsi 0.00 : 29776: bf 06 00 00 00 mov $0x6,%edi 0.00 : 2977b: e8 50 f8 ff ff callq 28fd0 0.00 : 29780: 48 8b 05 49 87 34 00 mov 0x348749(%rip),%rax # 371ed0 <_DYNAMIC+0x370> 0.00 : 29787: 83 00 01 addl $0x1,(%rax) 0.00 : 2978a: e9 49 fe ff ff jmpq 295d8 0.00 : 2978f: 8b 35 1b df 34 00 mov 0x34df1b(%rip),%esi # 3776b0 <__libc_pthread_functions_init> 0.00 : 29795: 85 f6 test %esi,%esi 0.00 : 29797: 74 1d je 297b6 0.00 : 29799: 48 8b 05 b0 de 34 00 mov 0x34deb0(%rip),%rax # 377650 <__libc_pthread_functions+0x150> 0.00 : 297a0: 48 8d 3d 59 98 34 00 lea 0x349859(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 297a7: 48 c1 c8 11 ror $0x11,%rax 0.00 : 297ab: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 297b2: 00 00 0.00 : 297b4: ff d0 callq *%rax 0.00 : 297b6: 48 8b 15 7b 86 34 00 mov 0x34867b(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 297bd: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 297c4: 00 00 0.00 : 297c6: 45 31 ed xor %r13d,%r13d 0.00 : 297c9: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 297d0: e9 d8 fa ff ff jmpq 292ad 0.00 : 297d5: 4c 89 ef mov %r13,%rdi 0.00 : 297d8: 4c 8d 25 b7 d2 0f 00 lea 0xfd2b7(%rip),%r12 # 126a96 <_nl_category_name_sizes> 0.00 : 297df: 4c 8d 3d a3 d2 0f 00 lea 0xfd2a3(%rip),%r15 # 126a89 <_nl_category_name_idxs> 0.00 : 297e6: e8 c5 73 05 00 callq 80bb0 <__GI_strlen> 0.00 : 297eb: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 297ef: 48 83 c0 1f add $0x1f,%rax 0.00 : 297f3: 4c 89 ee mov %r13,%rsi 0.00 : 297f6: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 297fa: 41 be 07 00 00 00 mov $0x7,%r14d 0.00 : 29800: 48 29 c4 sub %rax,%rsp 0.00 : 29803: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : 29808: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 2980c: e8 3f af 05 00 callq 84750 0.00 : 29811: 48 89 c3 mov %rax,%rbx 0.00 : 29814: be 3d 00 00 00 mov $0x3d,%esi 0.00 : 29819: 48 89 df mov %rbx,%rdi 0.00 : 2981c: e8 6f 58 05 00 callq 7f090 <__GI_strchr> 0.00 : 29821: 48 85 c0 test %rax,%rax 0.00 : 29824: 49 89 c1 mov %rax,%r9 0.00 : 29827: 0f 84 a1 00 00 00 je 298ce 0.00 : 2982d: 49 89 c0 mov %rax,%r8 0.00 : 29830: 45 31 db xor %r11d,%r11d 0.00 : 29833: 49 29 d8 sub %rbx,%r8 0.00 : 29836: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 2983d: 00 00 00 0.00 : 29840: 41 83 fb 06 cmp $0x6,%r11d 0.00 : 29844: 45 0f 44 de cmove %r14d,%r11d 0.00 : 29848: 49 63 f3 movslq %r11d,%rsi 0.00 : 2984b: 41 0f b6 04 34 movzbl (%r12,%rsi,1),%eax 0.00 : 29850: 48 89 b5 b8 fe ff ff mov %rsi,-0x148(%rbp) 0.00 : 29857: 49 39 c0 cmp %rax,%r8 0.00 : 2985a: 74 54 je 298b0 0.00 : 2985c: 41 83 c3 01 add $0x1,%r11d 0.00 : 29860: 41 83 fb 0c cmp $0xc,%r11d 0.00 : 29864: 7e da jle 29840 0.00 : 29866: 41 83 fb 0d cmp $0xd,%r11d 0.00 : 2986a: 0f 84 1f ff ff ff je 2978f 0.00 : 29870: 4d 63 db movslq %r11d,%r11 0.00 : 29873: 4c 89 9d b8 fe ff ff mov %r11,-0x148(%rbp) 0.00 : 2987a: 48 8b 85 b8 fe ff ff mov -0x148(%rbp),%rax 0.00 : 29881: 49 8d 79 01 lea 0x1(%r9),%rdi 0.00 : 29885: be 3b 00 00 00 mov $0x3b,%esi 0.00 : 2988a: 48 89 bc c5 50 ff ff mov %rdi,-0xb0(%rbp,%rax,8) 0.00 : 29891: ff 0.00 : 29892: e8 f9 57 05 00 callq 7f090 <__GI_strchr> 0.00 : 29897: 48 85 c0 test %rax,%rax 0.00 : 2989a: 74 32 je 298ce 0.00 : 2989c: c6 00 00 movb $0x0,(%rax) 0.00 : 2989f: 48 8d 58 01 lea 0x1(%rax),%rbx 0.00 : 298a3: e9 6c ff ff ff jmpq 29814 0.00 : 298a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 298af: 00 0.00 : 298b0: 41 0f b6 3c 37 movzbl (%r15,%rsi,1),%edi 0.00 : 298b5: 48 8d 05 44 d1 0f 00 lea 0xfd144(%rip),%rax # 126a00 <_nl_category_names> 0.00 : 298bc: 48 89 de mov %rbx,%rsi 0.00 : 298bf: 4c 89 c1 mov %r8,%rcx 0.00 : 298c2: 48 01 c7 add %rax,%rdi 0.00 : 298c5: 4d 39 c0 cmp %r8,%r8 0.00 : 298c8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 298ca: 75 90 jne 2985c 0.00 : 298cc: eb ac jmp 2987a 0.00 : 298ce: 31 d2 xor %edx,%edx 0.00 : 298d0: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 298d5: 83 fa 06 cmp $0x6,%edx 0.00 : 298d8: 0f 44 d1 cmove %ecx,%edx 0.00 : 298db: 48 63 c2 movslq %edx,%rax 0.00 : 298de: 4c 39 ac c5 50 ff ff cmp %r13,-0xb0(%rbp,%rax,8) 0.00 : 298e5: ff 0.00 : 298e6: 0f 84 a3 fe ff ff je 2978f 0.00 : 298ec: 83 c2 01 add $0x1,%edx 0.00 : 298ef: 83 fa 0c cmp $0xc,%edx 0.00 : 298f2: 7e e1 jle 298d5 0.00 : 298f4: e9 86 fb ff ff jmpq 2947f Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000715d0 : ??:0 33.33 : 715d0: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 715d5: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 715da: 48 89 d3 mov %rdx,%rbx 0.00 : 715dd: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 715e2: 48 83 ec 18 sub $0x18,%rsp 0.00 : 715e6: 85 f6 test %esi,%esi 33.33 : 715e8: 48 89 fd mov %rdi,%rbp 0.00 : 715eb: 7e 7b jle 71668 0.00 : 715ed: 83 fe 01 cmp $0x1,%esi 0.00 : 715f0: 0f 84 94 00 00 00 je 7168a 0.00 : 715f6: 44 8b 22 mov (%rdx),%r12d 0.00 : 715f9: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 715ff: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 71604: 44 89 e0 mov %r12d,%eax 0.00 : 71607: 83 e0 df and $0xffffffdf,%eax 0.00 : 7160a: 89 02 mov %eax,(%rdx) 0.00 : 7160c: 8d 56 ff lea -0x1(%rsi),%edx 33.33 : 7160f: 48 89 fe mov %rdi,%rsi 0.00 : 71612: 48 89 df mov %rbx,%rdi 0.00 : 71615: 48 63 d2 movslq %edx,%rdx 0.00 : 71618: e8 53 68 ff ff callq 67e70 <_IO_getline> 0.00 : 7161d: 48 85 c0 test %rax,%rax 0.00 : 71620: 48 89 c6 mov %rax,%rsi 0.00 : 71623: 75 2b jne 71650 0.00 : 71625: 8b 0b mov (%rbx),%ecx 0.00 : 71627: 31 ff xor %edi,%edi 0.00 : 71629: 41 83 e4 20 and $0x20,%r12d 0.00 : 7162d: 48 89 fd mov %rdi,%rbp 0.00 : 71630: 44 09 e1 or %r12d,%ecx 0.00 : 71633: 89 0b mov %ecx,(%rbx) 0.00 : 71635: 48 89 e8 mov %rbp,%rax 0.00 : 71638: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7163c: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 71641: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 71646: 48 83 c4 18 add $0x18,%rsp 0.00 : 7164a: c3 retq 0.00 : 7164b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 71650: 8b 0b mov (%rbx),%ecx 0.00 : 71652: f6 c1 20 test $0x20,%cl 0.00 : 71655: 75 19 jne 71670 0.00 : 71657: c6 44 35 00 00 movb $0x0,0x0(%rbp,%rsi,1) 0.00 : 7165c: 48 89 ef mov %rbp,%rdi 0.00 : 7165f: 8b 0b mov (%rbx),%ecx 0.00 : 71661: eb c6 jmp 71629 0.00 : 71663: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 71668: 31 ed xor %ebp,%ebp 0.00 : 7166a: eb c9 jmp 71635 0.00 : 7166c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 71670: 48 8b 15 c1 07 30 00 mov 0x3007c1(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 71677: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7167e: 00 00 0.00 : 71680: 31 ff xor %edi,%edi 0.00 : 71682: 83 3c 10 0b cmpl $0xb,(%rax,%rdx,1) 0.00 : 71686: 75 a1 jne 71629 0.00 : 71688: eb cd jmp 71657 0.00 : 7168a: c6 07 00 movb $0x0,(%rdi) 0.00 : 7168d: eb a6 jmp 71635 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074cd0 <_IO_setb>: 0.00 : 74cd0: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 74cd5: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 74cda: 48 89 fb mov %rdi,%rbx 0.00 : 74cdd: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 74ce2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 74ce7: 48 83 ec 28 sub $0x28,%rsp 0.00 : 74ceb: 48 8b 7f 38 mov 0x38(%rdi),%rdi 0.00 : 74cef: 48 89 f5 mov %rsi,%rbp 0.00 : 74cf2: 49 89 d4 mov %rdx,%r12 0.00 : 74cf5: 41 89 cd mov %ecx,%r13d 0.00 : 74cf8: 48 85 ff test %rdi,%rdi 0.00 : 74cfb: 74 05 je 74d02 <_IO_setb+0x32> 0.00 : 74cfd: f6 03 01 testb $0x1,(%rbx) 0.00 : 74d00: 74 36 je 74d38 <_IO_setb+0x68> 20.00 : 74d02: 45 85 ed test %r13d,%r13d 20.00 : 74d05: 48 89 6b 38 mov %rbp,0x38(%rbx) 20.00 : 74d09: 4c 89 63 40 mov %r12,0x40(%rbx) 0.00 : 74d0d: 75 21 jne 74d30 <_IO_setb+0x60> 0.00 : 74d0f: 83 0b 01 orl $0x1,(%rbx) 20.00 : 74d12: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 74d17: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 74d1c: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 74d21: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 74d26: 48 83 c4 28 add $0x28,%rsp 0.00 : 74d2a: c3 retq 0.00 : 74d2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 74d30: 83 23 fe andl $0xfffffffe,(%rbx) 0.00 : 74d33: eb dd jmp 74d12 <_IO_setb+0x42> 0.00 : 74d35: 0f 1f 00 nopl (%rax) 0.00 : 74d38: 48 8b 73 40 mov 0x40(%rbx),%rsi 0.00 : 74d3c: 48 81 c6 ff 0f 00 00 add $0xfff,%rsi 0.00 : 74d43: 48 29 fe sub %rdi,%rsi 0.00 : 74d46: 48 81 e6 00 f0 ff ff and $0xfffffffffffff000,%rsi 0.00 : 74d4d: e8 2e 2f 06 00 callq d7c80 20.00 : 74d52: eb ae jmp 74d02 <_IO_setb+0x32> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cc750 <__xstat>: 33.33 : cc750: 83 ff 01 cmp $0x1,%edi 0.00 : cc753: 48 89 f0 mov %rsi,%rax 0.00 : cc756: 77 20 ja cc778 <__xstat+0x28> 66.67 : cc758: 48 89 c7 mov %rax,%rdi 0.00 : cc75b: 48 89 d6 mov %rdx,%rsi 0.00 : cc75e: b8 04 00 00 00 mov $0x4,%eax 0.00 : cc763: 0f 05 syscall 0.00 : cc765: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : cc76b: 89 c2 mov %eax,%edx 0.00 : cc76d: 77 28 ja cc797 <__xstat+0x47> 0.00 : cc76f: 89 d0 mov %edx,%eax 0.00 : cc771: c3 retq 0.00 : cc772: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : cc778: 48 8b 15 b9 56 2a 00 mov 0x2a56b9(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cc77f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : cc786: 00 00 0.00 : cc788: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : cc78f: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : cc794: 89 d0 mov %edx,%eax 0.00 : cc796: c3 retq 0.00 : cc797: 89 c1 mov %eax,%ecx 0.00 : cc799: 48 8b 15 98 56 2a 00 mov 0x2a5698(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cc7a0: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : cc7a7: 00 00 0.00 : cc7a9: f7 d9 neg %ecx 0.00 : cc7ab: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : cc7ae: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : cc7b3: eb ba jmp cc76f <__xstat+0x1f> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 33.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cc7c0 <__fxstat>: 50.00 : cc7c0: 83 ff 01 cmp $0x1,%edi 33.33 : cc7c3: 89 f0 mov %esi,%eax 0.00 : cc7c5: 77 21 ja cc7e8 <__fxstat+0x28> 0.00 : cc7c7: 48 63 f8 movslq %eax,%rdi 0.00 : cc7ca: 48 89 d6 mov %rdx,%rsi 0.00 : cc7cd: b8 05 00 00 00 mov $0x5,%eax 0.00 : cc7d2: 0f 05 syscall 16.67 : cc7d4: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : cc7da: 89 c2 mov %eax,%edx 0.00 : cc7dc: 77 29 ja cc807 <__fxstat+0x47> 0.00 : cc7de: 89 d0 mov %edx,%eax 0.00 : cc7e0: c3 retq 0.00 : cc7e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : cc7e8: 48 8b 15 49 56 2a 00 mov 0x2a5649(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cc7ef: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : cc7f6: 00 00 0.00 : cc7f8: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : cc7ff: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : cc804: 89 d0 mov %edx,%eax 0.00 : cc806: c3 retq 0.00 : cc807: 89 c1 mov %eax,%ecx 0.00 : cc809: 48 8b 15 28 56 2a 00 mov 0x2a5628(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cc810: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : cc817: 00 00 0.00 : cc819: f7 d9 neg %ecx 0.00 : cc81b: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : cc81e: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : cc823: eb b9 jmp cc7de <__fxstat+0x1e> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cd1d0 <__open>: 0.00 : cd1d0: 83 3d dd a4 2a 00 00 cmpl $0x0,0x2aa4dd(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : cd1d7: 75 10 jne cd1e9 <__open_nocancel+0x10> : : 00000000000cd1d9 <__open_nocancel>: 20.00 : cd1d9: b8 02 00 00 00 mov $0x2,%eax 20.00 : cd1de: 0f 05 syscall 20.00 : cd1e0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd1e6: 73 31 jae cd219 <__open_nocancel+0x40> 0.00 : cd1e8: c3 retq 0.00 : cd1e9: 48 83 ec 08 sub $0x8,%rsp 0.00 : cd1ed: e8 3e b0 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : cd1f2: 48 89 04 24 mov %rax,(%rsp) 0.00 : cd1f6: b8 02 00 00 00 mov $0x2,%eax 0.00 : cd1fb: 0f 05 syscall 0.00 : cd1fd: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : cd201: 48 89 c2 mov %rax,%rdx 0.00 : cd204: e8 87 b0 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : cd209: 48 89 d0 mov %rdx,%rax 0.00 : cd20c: 48 83 c4 08 add $0x8,%rsp 0.00 : cd210: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd216: 73 01 jae cd219 <__open_nocancel+0x40> 0.00 : cd218: c3 retq 20.00 : cd219: 48 8b 0d 18 4c 2a 00 mov 0x2a4c18(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 20.00 : cd220: 31 d2 xor %edx,%edx 0.00 : cd222: 48 29 c2 sub %rax,%rdx 0.00 : cd225: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cd228: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cd22c: eb ea jmp cd218 <__open_nocancel+0x3f> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 18.18 ??:0 18.18 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000060a0 <_dl_map_object_from_fd>: 0.00 : 60a0: 55 push %rbp 0.00 : 60a1: 48 89 e5 mov %rsp,%rbp 0.00 : 60a4: 41 57 push %r15 0.00 : 60a6: 45 89 cf mov %r9d,%r15d 0.00 : 60a9: 41 56 push %r14 0.00 : 60ab: 4d 89 c6 mov %r8,%r14 0.00 : 60ae: 41 55 push %r13 0.00 : 60b0: 41 54 push %r12 0.00 : 60b2: 49 89 d4 mov %rdx,%r12 0.00 : 60b5: 53 push %rbx 0.00 : 60b6: 48 81 ec 68 01 00 00 sub $0x168,%rsp 0.00 : 60bd: 89 b5 d4 fe ff ff mov %esi,-0x12c(%rbp) 0.00 : 60c3: 48 8b 75 20 mov 0x20(%rbp),%rsi 0.00 : 60c7: 48 89 bd d8 fe ff ff mov %rdi,-0x128(%rbp) 0.00 : 60ce: 31 ff xor %edi,%edi 0.00 : 60d0: 48 89 8d c8 fe ff ff mov %rcx,-0x138(%rbp) 0.00 : 60d7: e8 84 89 00 00 callq ea60 <_dl_debug_initialize> 0.00 : 60dc: 8b b5 d4 fe ff ff mov -0x12c(%rbp),%esi 0.00 : 60e2: 48 8d 95 40 ff ff ff lea -0xc0(%rbp),%rdx 0.00 : 60e9: bf 01 00 00 00 mov $0x1,%edi 0.00 : 60ee: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) 0.00 : 60f5: e8 06 fe 00 00 callq 15f00 <__GI___fxstat> 0.00 : 60fa: 85 c0 test %eax,%eax 0.00 : 60fc: 0f 88 1b 0f 00 00 js 701d <_dl_map_object_from_fd+0xf7d> 0.00 : 6102: 48 8b 55 20 mov 0x20(%rbp),%rdx 0.00 : 6106: 48 8d 0d 53 8f 21 00 lea 0x218f53(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 610d: 48 8d 04 d2 lea (%rdx,%rdx,8),%rax 0.00 : 6111: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6115: 4c 8b 2c 01 mov (%rcx,%rax,1),%r13 0.00 : 6119: 4d 85 ed test %r13,%r13 0.00 : 611c: 74 72 je 6190 <_dl_map_object_from_fd+0xf0> 0.00 : 611e: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 6125: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 612c: eb 0b jmp 6139 <_dl_map_object_from_fd+0x99> 0.00 : 612e: 66 90 xchg %ax,%ax 0.00 : 6130: 4d 8b 6d 18 mov 0x18(%r13),%r13 0.00 : 6134: 4d 85 ed test %r13,%r13 0.00 : 6137: 74 57 je 6190 <_dl_map_object_from_fd+0xf0> 0.00 : 6139: 41 f6 85 15 03 00 00 testb $0x20,0x315(%r13) 0.00 : 6140: 20 0.00 : 6141: 75 ed jne 6130 <_dl_map_object_from_fd+0x90> 0.00 : 6143: 49 39 85 a0 03 00 00 cmp %rax,0x3a0(%r13) 0.00 : 614a: 75 e4 jne 6130 <_dl_map_object_from_fd+0x90> 0.00 : 614c: 49 39 95 98 03 00 00 cmp %rdx,0x398(%r13) 0.00 : 6153: 75 db jne 6130 <_dl_map_object_from_fd+0x90> 0.00 : 6155: 8b bd d4 fe ff ff mov -0x12c(%rbp),%edi 0.00 : 615b: e8 20 fe 00 00 callq 15f80 <__close> 0.00 : 6160: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 6167: e8 84 a9 ff ff callq af0 0.00 : 616c: 48 8b b5 d8 fe ff ff mov -0x128(%rbp),%rsi 0.00 : 6173: 4c 89 ef mov %r13,%rdi 0.00 : 6176: e8 b5 f1 ff ff callq 5330 0.00 : 617b: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 617f: 4c 89 e8 mov %r13,%rax 0.00 : 6182: 5b pop %rbx 0.00 : 6183: 41 5c pop %r12 0.00 : 6185: 41 5d pop %r13 0.00 : 6187: 41 5e pop %r14 0.00 : 6189: 41 5f pop %r15 0.00 : 618b: c9 leaveq 0.00 : 618c: c3 retq 0.00 : 618d: 0f 1f 00 nopl (%rax) 0.00 : 6190: 48 83 7d 20 00 cmpq $0x0,0x20(%rbp) 0.00 : 6195: 0f 85 e5 0d 00 00 jne 6f80 <_dl_map_object_from_fd+0xee0> 0.00 : 619b: f6 45 10 04 testb $0x4,0x10(%rbp) 0.00 : 619f: 0f 85 5f 0c 00 00 jne 6e04 <_dl_map_object_from_fd+0xd64> 0.00 : 61a5: f6 05 74 8a 21 00 40 testb $0x40,0x218a74(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 61ac: 0f 85 81 0e 00 00 jne 7033 <_dl_map_object_from_fd+0xf93> 0.00 : 61b2: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 61b9: 8b 42 18 mov 0x18(%rdx),%eax 0.00 : 61bc: 85 c0 test %eax,%eax 0.00 : 61be: 0f 84 14 02 00 00 je 63d8 <_dl_map_object_from_fd+0x338> 0.00 : 61c4: 83 e8 01 sub $0x1,%eax 0.00 : 61c7: c6 85 0f ff ff ff 00 movb $0x0,-0xf1(%rbp) 0.00 : 61ce: 0f 85 67 0f 00 00 jne 713b <_dl_map_object_from_fd+0x109b> 0.00 : 61d4: 4c 8b 4d 20 mov 0x20(%rbp),%r9 0.00 : 61d8: 44 8b 45 10 mov 0x10(%rbp),%r8d 0.00 : 61dc: 44 89 fa mov %r15d,%edx 0.00 : 61df: 48 8b b5 d8 fe ff ff mov -0x128(%rbp),%rsi 0.00 : 61e6: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 61ed: 4c 89 f1 mov %r14,%rcx 0.00 : 61f0: e8 7b 48 00 00 callq aa70 <_dl_new_object> 0.00 : 61f5: 48 85 c0 test %rax,%rax 0.00 : 61f8: 49 89 c5 mov %rax,%r13 0.00 : 61fb: 48 8d 15 5e 50 01 00 lea 0x1505e(%rip),%rdx # 1b260 <__PRETTY_FUNCTION__.3644+0xeef> 0.00 : 6202: 0f 84 24 05 00 00 je 672c <_dl_map_object_from_fd+0x68c> 0.00 : 6208: 49 8d 7c 24 08 lea 0x8(%r12),%rdi 0.00 : 620d: 48 89 bd e0 fe ff ff mov %rdi,-0x120(%rbp) 0.00 : 6214: 48 8b 47 18 mov 0x18(%rdi),%rax 0.00 : 6218: 49 89 85 a8 02 00 00 mov %rax,0x2a8(%r13) 0.00 : 621f: 0f b7 47 10 movzwl 0x10(%rdi),%eax 0.00 : 6223: 66 89 85 ee fe ff ff mov %ax,-0x112(%rbp) 0.00 : 622a: 0f b7 47 38 movzwl 0x38(%rdi),%eax 0.00 : 622e: 66 41 89 85 b0 02 00 mov %ax,0x2b0(%r13) 0.00 : 6235: 00 0.00 : 6236: 0f b7 47 38 movzwl 0x38(%rdi),%eax 0.00 : 623a: 48 8b 4f 20 mov 0x20(%rdi),%rcx 0.00 : 623e: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 6245: 00 0.00 : 6246: 48 89 c3 mov %rax,%rbx 0.00 : 6249: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 624d: 48 29 d3 sub %rdx,%rbx 0.00 : 6250: 48 8d 04 0b lea (%rbx,%rcx,1),%rax 0.00 : 6254: 49 3b 04 24 cmp (%r12),%rax 0.00 : 6258: 0f 87 0f 05 00 00 ja 676d <_dl_map_object_from_fd+0x6cd> 0.00 : 625e: 49 89 fa mov %rdi,%r10 0.00 : 6261: 49 01 ca add %rcx,%r10 0.00 : 6264: 48 89 a5 f0 fe ff ff mov %rsp,-0x110(%rbp) 0.00 : 626b: 41 0f b7 8d b0 02 00 movzwl 0x2b0(%r13),%ecx 0.00 : 6272: 00 0.00 : 6273: 48 8d 04 49 lea (%rcx,%rcx,2),%rax 0.00 : 6277: 48 8d 14 cd 00 00 00 lea 0x0(,%rcx,8),%rdx 0.00 : 627e: 00 0.00 : 627f: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6283: 48 83 c0 1e add $0x1e,%rax 0.00 : 6287: 25 f0 ff ff 00 and $0xfffff0,%eax 0.00 : 628c: 48 29 c4 sub %rax,%rsp 0.00 : 628f: 48 89 c8 mov %rcx,%rax 0.00 : 6292: 48 c1 e0 06 shl $0x6,%rax 0.00 : 6296: 4c 8d 7c 24 47 lea 0x47(%rsp),%r15 0.00 : 629b: 48 29 d0 sub %rdx,%rax 0.00 : 629e: 49 8d 04 02 lea (%r10,%rax,1),%rax 0.00 : 62a2: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 62a6: 49 39 c2 cmp %rax,%r10 0.00 : 62a9: 0f 83 7d 0e 00 00 jae 712c <_dl_map_object_from_fd+0x108c> 0.00 : 62af: 8b 55 10 mov 0x10(%rbp),%edx 0.00 : 62b2: 4c 89 d3 mov %r10,%rbx 0.00 : 62b5: 48 c7 85 10 ff ff ff movq $0x7,-0xf0(%rbp) 0.00 : 62bc: 07 00 00 00 0.00 : 62c0: 45 31 e4 xor %r12d,%r12d 0.00 : 62c3: c6 85 20 ff ff ff 00 movb $0x0,-0xe0(%rbp) 0.00 : 62ca: 81 e2 00 00 00 08 and $0x8000000,%edx 0.00 : 62d0: 89 95 c4 fe ff ff mov %edx,-0x13c(%rbp) 0.00 : 62d6: eb 43 jmp 631b <_dl_map_object_from_fd+0x27b> 0.00 : 62d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 62df: 00 0.00 : 62e0: 83 f8 01 cmp $0x1,%eax 0.00 : 62e3: 0f 84 57 01 00 00 je 6440 <_dl_map_object_from_fd+0x3a0> 0.00 : 62e9: 83 f8 02 cmp $0x2,%eax 0.00 : 62ec: 0f 84 2e 01 00 00 je 6420 <_dl_map_object_from_fd+0x380> 0.00 : 62f2: 4d 89 e6 mov %r12,%r14 0.00 : 62f5: 48 8d 14 cd 00 00 00 lea 0x0(,%rcx,8),%rdx 0.00 : 62fc: 00 0.00 : 62fd: 48 89 c8 mov %rcx,%rax 0.00 : 6300: 48 83 c3 38 add $0x38,%rbx 0.00 : 6304: 48 c1 e0 06 shl $0x6,%rax 0.00 : 6308: 48 29 d0 sub %rdx,%rax 0.00 : 630b: 49 8d 04 02 lea (%r10,%rax,1),%rax 0.00 : 630f: 48 39 c3 cmp %rax,%rbx 0.00 : 6312: 0f 83 68 02 00 00 jae 6580 <_dl_map_object_from_fd+0x4e0> 0.00 : 6318: 4d 89 f4 mov %r14,%r12 0.00 : 631b: 8b 03 mov (%rbx),%eax 9.09 : 631d: 83 f8 06 cmp $0x6,%eax 0.00 : 6320: 0f 84 e2 00 00 00 je 6408 <_dl_map_object_from_fd+0x368> 0.00 : 6326: 76 b8 jbe 62e0 <_dl_map_object_from_fd+0x240> 0.00 : 6328: 3d 51 e5 74 64 cmp $0x6474e551,%eax 0.00 : 632d: 0f 1f 00 nopl (%rax) 0.00 : 6330: 0f 84 1a 02 00 00 je 6550 <_dl_map_object_from_fd+0x4b0> 0.00 : 6336: 3d 52 e5 74 64 cmp $0x6474e552,%eax 0.00 : 633b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6340: 0f 84 ea 01 00 00 je 6530 <_dl_map_object_from_fd+0x490> 0.00 : 6346: 83 f8 07 cmp $0x7,%eax 0.00 : 6349: 75 a7 jne 62f2 <_dl_map_object_from_fd+0x252> 0.00 : 634b: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 634f: 48 85 c0 test %rax,%rax 0.00 : 6352: 74 9e je 62f2 <_dl_map_object_from_fd+0x252> 0.00 : 6354: 49 89 85 30 04 00 00 mov %rax,0x430(%r13) 0.00 : 635b: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 635f: 49 89 85 38 04 00 00 mov %rax,0x438(%r13) 0.00 : 6366: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 636a: 48 85 c0 test %rax,%rax 0.00 : 636d: 0f 85 f5 01 00 00 jne 6568 <_dl_map_object_from_fd+0x4c8> 0.00 : 6373: 49 c7 85 40 04 00 00 movq $0x0,0x440(%r13) 0.00 : 637a: 00 00 00 00 0.00 : 637e: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 6382: 49 89 85 28 04 00 00 mov %rax,0x428(%r13) 0.00 : 6389: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 638d: 49 89 85 20 04 00 00 mov %rax,0x420(%r13) 0.00 : 6394: 41 0f b6 85 14 03 00 movzbl 0x314(%r13),%eax 0.00 : 639b: 00 0.00 : 639c: 83 e0 03 and $0x3,%eax 0.00 : 639f: 2c 01 sub $0x1,%al 0.00 : 63a1: 0f 85 0d 0b 00 00 jne 6eb4 <_dl_map_object_from_fd+0xe14> 0.00 : 63a7: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 63ae: 4d 89 e6 mov %r12,%r14 0.00 : 63b1: e8 2a a6 00 00 callq 109e0 <_dl_next_tls_modid> 0.00 : 63b6: 41 0f b7 8d b0 02 00 movzwl 0x2b0(%r13),%ecx 0.00 : 63bd: 00 0.00 : 63be: 49 89 85 50 04 00 00 mov %rax,0x450(%r13) 0.00 : 63c5: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 63cc: e9 24 ff ff ff jmpq 62f5 <_dl_map_object_from_fd+0x255> 0.00 : 63d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 63d8: f7 45 10 00 00 00 08 testl $0x8000000,0x10(%rbp) 0.00 : 63df: 0f 84 ac 08 00 00 je 6c91 <_dl_map_object_from_fd+0xbf1> 0.00 : 63e5: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 63ec: c7 46 18 01 00 00 00 movl $0x1,0x18(%rsi) 0.00 : 63f3: e8 f8 86 00 00 callq eaf0 <_dl_debug_state> 0.00 : 63f8: c6 85 0f ff ff ff 01 movb $0x1,-0xf1(%rbp) 0.00 : 63ff: e9 d0 fd ff ff jmpq 61d4 <_dl_map_object_from_fd+0x134> 0.00 : 6404: 0f 1f 40 00 nopl 0x0(%rax) 9.09 : 6408: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 640c: 4d 89 e6 mov %r12,%r14 0.00 : 640f: 49 89 85 a0 02 00 00 mov %rax,0x2a0(%r13) 0.00 : 6416: e9 da fe ff ff jmpq 62f5 <_dl_map_object_from_fd+0x255> 0.00 : 641b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6420: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 6424: 4d 89 e6 mov %r12,%r14 0.00 : 6427: 49 89 45 10 mov %rax,0x10(%r13) 0.00 : 642b: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 642f: 48 c1 e8 04 shr $0x4,%rax 0.00 : 6433: 66 41 89 85 b2 02 00 mov %ax,0x2b2(%r13) 0.00 : 643a: 00 0.00 : 643b: e9 b5 fe ff ff jmpq 62f5 <_dl_map_object_from_fd+0x255> 0.00 : 6440: 48 8b 35 f1 87 21 00 mov 0x2187f1(%rip),%rsi # 21ec38 <_rtld_global_ro+0x18> 18.18 : 6447: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 644b: 48 8d 46 ff lea -0x1(%rsi),%rax 0.00 : 644f: 48 85 d0 test %rdx,%rax 0.00 : 6452: 0f 85 8a 09 00 00 jne 6de2 <_dl_map_object_from_fd+0xd42> 0.00 : 6458: 4c 8b 43 10 mov 0x10(%rbx),%r8 0.00 : 645c: 48 83 ea 01 sub $0x1,%rdx 0.00 : 6460: 4c 89 c0 mov %r8,%rax 0.00 : 6463: 48 2b 43 08 sub 0x8(%rbx),%rax 0.00 : 6467: 48 85 c2 test %rax,%rdx 0.00 : 646a: 0f 85 88 09 00 00 jne 6df8 <_dl_map_object_from_fd+0xd58> 0.00 : 6470: 4b 8d 0c 64 lea (%r12,%r12,2),%rcx 0.00 : 6474: 48 f7 de neg %rsi 0.00 : 6477: 4d 8d 74 24 01 lea 0x1(%r12),%r14 0.00 : 647c: 4c 21 c6 and %r8,%rsi 0.00 : 647f: 48 89 cf mov %rcx,%rdi 0.00 : 6482: 48 83 c1 01 add $0x1,%rcx 0.00 : 6486: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 648a: 48 c1 e1 04 shl $0x4,%rcx 9.09 : 648e: 4a 89 34 3f mov %rsi,(%rdi,%r15,1) 0.00 : 6492: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 6496: 49 8d 34 3f lea (%r15,%rdi,1),%rsi 0.00 : 649a: 48 03 43 20 add 0x20(%rbx),%rax 0.00 : 649e: 48 8b 15 93 87 21 00 mov 0x218793(%rip),%rdx # 21ec38 <_rtld_global_ro+0x18> 0.00 : 64a5: 48 8d 44 02 ff lea -0x1(%rdx,%rax,1),%rax 0.00 : 64aa: 48 f7 da neg %rdx 0.00 : 64ad: 48 21 d0 and %rdx,%rax 0.00 : 64b0: 48 89 46 08 mov %rax,0x8(%rsi) 0.00 : 64b4: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 64b8: 48 03 43 10 add 0x10(%rbx),%rax 0.00 : 64bc: 4a 89 04 39 mov %rax,(%rcx,%r15,1) 0.00 : 64c0: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 64c4: 48 03 43 10 add 0x10(%rbx),%rax 0.00 : 64c8: 49 89 44 0f 08 mov %rax,0x8(%r15,%rcx,1) 0.00 : 64cd: 48 8b 05 64 87 21 00 mov 0x218764(%rip),%rax # 21ec38 <_rtld_global_ro+0x18> 0.00 : 64d4: 48 f7 d8 neg %rax 0.00 : 64d7: 48 23 43 08 and 0x8(%rbx),%rax 0.00 : 64db: 49 83 fe 01 cmp $0x1,%r14 0.00 : 64df: 48 89 46 20 mov %rax,0x20(%rsi) 0.00 : 64e3: 76 1e jbe 6503 <_dl_map_object_from_fd+0x463> 0.00 : 64e5: 4a 8b 0c 3f mov (%rdi,%r15,1),%rcx 0.00 : 64e9: 0f b6 85 20 ff ff ff movzbl -0xe0(%rbp),%eax 0.00 : 64f0: ba 01 00 00 00 mov $0x1,%edx 0.00 : 64f5: 49 39 4c 3f d8 cmp %rcx,-0x28(%r15,%rdi,1) 0.00 : 64fa: 0f 44 d0 cmove %eax,%edx 0.00 : 64fd: 88 95 20 ff ff ff mov %dl,-0xe0(%rbp) 0.00 : 6503: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : 6506: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 650a: ba 40 62 51 73 mov $0x73516240,%edx 0.00 : 650f: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6513: 83 e1 07 and $0x7,%ecx 0.00 : 6516: c1 e1 02 shl $0x2,%ecx 0.00 : 6519: d3 fa sar %cl,%edx 0.00 : 651b: 83 e2 0f and $0xf,%edx 0.00 : 651e: 41 89 54 07 28 mov %edx,0x28(%r15,%rax,1) 0.00 : 6523: 41 0f b7 8d b0 02 00 movzwl 0x2b0(%r13),%ecx 0.00 : 652a: 00 0.00 : 652b: e9 c5 fd ff ff jmpq 62f5 <_dl_map_object_from_fd+0x255> 0.00 : 6530: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 6534: 4d 89 e6 mov %r12,%r14 0.00 : 6537: 49 89 85 58 04 00 00 mov %rax,0x458(%r13) 0.00 : 653e: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 6542: 49 89 85 60 04 00 00 mov %rax,0x460(%r13) 0.00 : 6549: e9 a7 fd ff ff jmpq 62f5 <_dl_map_object_from_fd+0x255> 0.00 : 654e: 66 90 xchg %ax,%ax 0.00 : 6550: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6553: 4d 89 e6 mov %r12,%r14 0.00 : 6556: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 655d: e9 93 fd ff ff jmpq 62f5 <_dl_map_object_from_fd+0x255> 0.00 : 6562: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6568: 48 83 e8 01 sub $0x1,%rax 0.00 : 656c: 48 23 43 10 and 0x10(%rbx),%rax 0.00 : 6570: 49 89 85 40 04 00 00 mov %rax,0x440(%r13) 0.00 : 6577: e9 02 fe ff ff jmpq 637e <_dl_map_object_from_fd+0x2de> 0.00 : 657c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6580: 4d 85 f6 test %r14,%r14 0.00 : 6583: 0f 84 a3 0b 00 00 je 712c <_dl_map_object_from_fd+0x108c> 0.00 : 6589: 4d 8d 66 ff lea -0x1(%r14),%r12 0.00 : 658d: 0f b7 95 ee fe ff ff movzwl -0x112(%rbp),%edx 0.00 : 6594: 4c 89 fb mov %r15,%rbx 0.00 : 6597: 4b 8d 44 64 01 lea 0x1(%r12,%r12,2),%rax 0.00 : 659c: 48 c1 e0 04 shl $0x4,%rax 0.00 : 65a0: 89 95 fc fe ff ff mov %edx,-0x104(%rbp) 0.00 : 65a6: 49 8b 3f mov (%r15),%rdi 0.00 : 65a9: 49 8b 44 07 08 mov 0x8(%r15,%rax,1),%rax 0.00 : 65ae: 48 29 f8 sub %rdi,%rax 0.00 : 65b1: 83 fa 03 cmp $0x3,%edx 0.00 : 65b4: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) 0.00 : 65bb: 0f 85 06 0b 00 00 jne 70c7 <_dl_map_object_from_fd+0x1027> 0.00 : 65c1: 48 23 3d d0 86 21 00 and 0x2186d0(%rip),%rdi # 21ec98 <_rtld_global_ro+0x78> 0.00 : 65c8: 41 8b 57 28 mov 0x28(%r15),%edx 0.00 : 65cc: b9 02 08 00 00 mov $0x802,%ecx 0.00 : 65d1: 4d 8b 4f 20 mov 0x20(%r15),%r9 0.00 : 65d5: 44 8b 85 d4 fe ff ff mov -0x12c(%rbp),%r8d 0.00 : 65dc: 48 89 c6 mov %rax,%rsi 0.00 : 65df: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 65e6: e8 e5 fb 00 00 callq 161d0 <__mmap> 0.00 : 65eb: 49 89 85 40 03 00 00 mov %rax,0x340(%r13) 0.00 : 65f2: 48 83 c0 01 add $0x1,%rax 0.00 : 65f6: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 65fd: 0f 84 1b 01 00 00 je 671e <_dl_map_object_from_fd+0x67e> 0.00 : 6603: 8b 05 57 86 21 00 mov 0x218657(%rip),%eax # 21ec60 <_rtld_global_ro+0x40> 0.00 : 6609: 85 c0 test %eax,%eax 0.00 : 660b: 0f 85 59 06 00 00 jne 6c6a <_dl_map_object_from_fd+0xbca> 0.00 : 6611: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 6618: 49 03 85 40 03 00 00 add 0x340(%r13),%rax 0.00 : 661f: 49 8b 95 40 03 00 00 mov 0x340(%r13),%rdx 0.00 : 6626: 49 89 85 48 03 00 00 mov %rax,0x348(%r13) 0.00 : 662d: 49 2b 17 sub (%r15),%rdx 0.00 : 6630: 49 89 55 00 mov %rdx,0x0(%r13) 0.00 : 6634: 80 bd 20 ff ff ff 00 cmpb $0x0,-0xe0(%rbp) 0.00 : 663b: 0f 85 f8 05 00 00 jne 6c39 <_dl_map_object_from_fd+0xb99> 0.00 : 6641: 41 80 8d 15 03 00 00 orb $0x40,0x315(%r13) 0.00 : 6648: 40 0.00 : 6649: f6 43 28 04 testb $0x4,0x28(%rbx) 0.00 : 664d: 74 0f je 665e <_dl_map_object_from_fd+0x5be> 0.00 : 664f: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 6653: 49 03 45 00 add 0x0(%r13),%rax 0.00 : 6657: 49 89 85 50 03 00 00 mov %rax,0x350(%r13) 0.00 : 665e: 49 83 bd a0 02 00 00 cmpq $0x0,0x2a0(%r13) 0.00 : 6665: 00 0.00 : 6666: 0f 84 c4 06 00 00 je 6d30 <_dl_map_object_from_fd+0xc90> 0.00 : 666c: 48 8b 4b 18 mov 0x18(%rbx),%rcx 0.00 : 6670: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 6674: 48 39 d1 cmp %rdx,%rcx 0.00 : 6677: 76 45 jbe 66be <_dl_map_object_from_fd+0x61e> 0.00 : 6679: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 667d: 48 8b 35 b4 85 21 00 mov 0x2185b4(%rip),%rsi # 21ec38 <_rtld_global_ro+0x18> 0.00 : 6684: 4c 8d 24 10 lea (%rax,%rdx,1),%r12 0.00 : 6688: 4c 8d 1c 08 lea (%rax,%rcx,1),%r11 0.00 : 668c: 48 89 f7 mov %rsi,%rdi 0.00 : 668f: 48 f7 df neg %rdi 0.00 : 6692: 4a 8d 44 26 ff lea -0x1(%rsi,%r12,1),%rax 0.00 : 6697: 48 21 f8 and %rdi,%rax 0.00 : 669a: 4c 39 d8 cmp %r11,%rax 0.00 : 669d: 49 0f 47 c3 cmova %r11,%rax 0.00 : 66a1: 49 39 c4 cmp %rax,%r12 0.00 : 66a4: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 66ab: 0f 82 6f 01 00 00 jb 6820 <_dl_map_object_from_fd+0x780> 0.00 : 66b1: 4c 3b 9d 38 ff ff ff cmp -0xc8(%rbp),%r11 0.00 : 66b8: 0f 87 11 01 00 00 ja 67cf <_dl_map_object_from_fd+0x72f> 0.00 : 66be: 48 83 c3 30 add $0x30,%rbx 0.00 : 66c2: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 66c6: 48 c1 e0 04 shl $0x4,%rax 0.00 : 66ca: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : 66ce: 48 39 c3 cmp %rax,%rbx 0.00 : 66d1: 0f 83 b9 01 00 00 jae 6890 <_dl_map_object_from_fd+0x7f0> 0.00 : 66d7: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 66db: 48 8b 3b mov (%rbx),%rdi 0.00 : 66de: 48 39 fe cmp %rdi,%rsi 0.00 : 66e1: 0f 86 62 ff ff ff jbe 6649 <_dl_map_object_from_fd+0x5a9> 0.00 : 66e7: 48 29 fe sub %rdi,%rsi 0.00 : 66ea: 49 03 7d 00 add 0x0(%r13),%rdi 0.00 : 66ee: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 66f1: 4c 8b 4b 20 mov 0x20(%rbx),%r9 0.00 : 66f5: 44 8b 85 d4 fe ff ff mov -0x12c(%rbp),%r8d 0.00 : 66fc: b9 12 08 00 00 mov $0x812,%ecx 0.00 : 6701: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 6708: e8 c3 fa 00 00 callq 161d0 <__mmap> 0.00 : 670d: 48 83 c0 01 add $0x1,%rax 0.00 : 6711: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 6718: 0f 85 2b ff ff ff jne 6649 <_dl_map_object_from_fd+0x5a9> 0.00 : 671e: 48 8d 15 6b 4c 01 00 lea 0x14c6b(%rip),%rdx # 1b390 <__PRETTY_FUNCTION__.3644+0x101f> 0.00 : 6725: 48 8b a5 f0 fe ff ff mov -0x110(%rbp),%rsp 0.00 : 672c: 44 8b 1d 51 9a 21 00 mov 0x219a51(%rip),%r11d # 220184 0.00 : 6733: 80 bd 0f ff ff ff 00 cmpb $0x0,-0xf1(%rbp) 0.00 : 673a: b8 00 00 00 00 mov $0x0,%eax 0.00 : 673f: 49 89 d1 mov %rdx,%r9 0.00 : 6742: 48 0f 45 85 00 ff ff cmovne -0x100(%rbp),%rax 0.00 : 6749: ff 0.00 : 674a: 4d 89 e8 mov %r13,%r8 0.00 : 674d: 44 89 df mov %r11d,%edi 0.00 : 6750: 48 89 04 24 mov %rax,(%rsp) 0.00 : 6754: 48 8b 8d c8 fe ff ff mov -0x138(%rbp),%rcx 0.00 : 675b: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 6762: 8b b5 d4 fe ff ff mov -0x12c(%rbp),%esi 0.00 : 6768: e8 c3 ef ff ff callq 5730 0.00 : 676d: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 6771: 8b bd d4 fe ff ff mov -0x12c(%rbp),%edi 0.00 : 6777: 31 d2 xor %edx,%edx 0.00 : 6779: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 677d: 48 29 c4 sub %rax,%rsp 0.00 : 6780: 48 8d 74 24 47 lea 0x47(%rsp),%rsi 0.00 : 6785: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 6789: 49 89 f2 mov %rsi,%r10 0.00 : 678c: 48 89 ce mov %rcx,%rsi 0.00 : 678f: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 6796: e8 c5 fa 00 00 callq 16260 <__libc_lseek> 0.00 : 679b: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 67a2: 8b bd d4 fe ff ff mov -0x12c(%rbp),%edi 0.00 : 67a8: 48 89 da mov %rbx,%rdx 0.00 : 67ab: 4c 89 d6 mov %r10,%rsi 0.00 : 67ae: e8 fd f7 00 00 callq 15fb0 <__libc_read> 0.00 : 67b3: 48 39 d8 cmp %rbx,%rax 0.00 : 67b6: 48 8d 15 cc 31 01 00 lea 0x131cc(%rip),%rdx # 19989 <__PRETTY_FUNCTION__.12417+0x87> 0.00 : 67bd: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 67c4: 0f 85 62 ff ff ff jne 672c <_dl_map_object_from_fd+0x68c> 0.00 : 67ca: e9 95 fa ff ff jmpq 6264 <_dl_map_object_from_fd+0x1c4> 0.00 : 67cf: 4c 2b 9d 38 ff ff ff sub -0xc8(%rbp),%r11 0.00 : 67d6: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 67d9: 45 31 c9 xor %r9d,%r9d 0.00 : 67dc: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 67e3: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 67e9: b9 32 00 00 00 mov $0x32,%ecx 0.00 : 67ee: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 67f5: 4c 89 de mov %r11,%rsi 0.00 : 67f8: e8 d3 f9 00 00 callq 161d0 <__mmap> 0.00 : 67fd: 48 83 c0 01 add $0x1,%rax 0.00 : 6801: 48 8d 15 55 32 01 00 lea 0x13255(%rip),%rdx # 19a5d <__PRETTY_FUNCTION__.12417+0x15b> 0.00 : 6808: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 680f: 0f 85 a9 fe ff ff jne 66be <_dl_map_object_from_fd+0x61e> 0.00 : 6815: e9 0b ff ff ff jmpq 6725 <_dl_map_object_from_fd+0x685> 0.00 : 681a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6820: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 6823: f6 c2 02 test $0x2,%dl 0.00 : 6826: 0f 84 d6 0a 00 00 je 7302 <_dl_map_object_from_fd+0x1262> 0.00 : 682c: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 6833: 31 f6 xor %esi,%esi 0.00 : 6835: 4c 89 e7 mov %r12,%rdi 0.00 : 6838: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 683f: 4c 89 9d b0 fe ff ff mov %r11,-0x150(%rbp) 0.00 : 6846: 4c 29 e2 sub %r12,%rdx 0.00 : 6849: e8 22 03 01 00 callq 16b70 0.00 : 684e: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 6851: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 6858: 4c 8b 9d b0 fe ff ff mov -0x150(%rbp),%r11 9.09 : 685f: f6 c2 02 test $0x2,%dl 0.00 : 6862: 0f 85 49 fe ff ff jne 66b1 <_dl_map_object_from_fd+0x611> 0.00 : 6868: 48 8b 35 c9 83 21 00 mov 0x2183c9(%rip),%rsi # 21ec38 <_rtld_global_ro+0x18> 0.00 : 686f: 48 89 f7 mov %rsi,%rdi 0.00 : 6872: 48 f7 df neg %rdi 0.00 : 6875: 4c 21 e7 and %r12,%rdi 0.00 : 6878: e8 b3 f9 00 00 callq 16230 <__mprotect> 0.00 : 687d: 4c 8b 9d b0 fe ff ff mov -0x150(%rbp),%r11 0.00 : 6884: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 688b: e9 21 fe ff ff jmpq 66b1 <_dl_map_object_from_fd+0x611> 0.00 : 6890: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 6894: 48 8b a5 f0 fe ff ff mov -0x110(%rbp),%rsp 0.00 : 689b: 48 85 c0 test %rax,%rax 0.00 : 689e: 0f 84 bc 06 00 00 je 6f60 <_dl_map_object_from_fd+0xec0> 0.00 : 68a4: 48 89 c1 mov %rax,%rcx 0.00 : 68a7: 49 03 4d 00 add 0x0(%r13),%rcx 0.00 : 68ab: 48 85 c9 test %rcx,%rcx 0.00 : 68ae: 49 89 4d 10 mov %rcx,0x10(%r13) 0.00 : 68b2: 0f 84 8e 01 00 00 je 6a46 <_dl_map_object_from_fd+0x9a6> 0.00 : 68b8: 48 8b 11 mov (%rcx),%rdx 18.18 : 68bb: 48 85 d2 test %rdx,%rdx 0.00 : 68be: 74 66 je 6926 <_dl_map_object_from_fd+0x886> 0.00 : 68c0: be ff ff ff 6f mov $0x6fffffff,%esi 0.00 : 68c5: 41 b8 ff fd ff 6f mov $0x6ffffdff,%r8d 0.00 : 68cb: 41 b9 ff fe ff 6f mov $0x6ffffeff,%r9d 0.00 : 68d1: bb 48 ff ff 6f mov $0x6fffff48,%ebx 0.00 : 68d6: 41 bb 3c fe ff 6f mov $0x6ffffe3c,%r11d 0.00 : 68dc: bf 29 00 00 70 mov $0x70000029,%edi 0.00 : 68e1: eb 16 jmp 68f9 <_dl_map_object_from_fd+0x859> 0.00 : 68e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68e8: 49 89 4c d5 40 mov %rcx,0x40(%r13,%rdx,8) 0.00 : 68ed: 48 83 c1 10 add $0x10,%rcx 0.00 : 68f1: 48 8b 11 mov (%rcx),%rdx 0.00 : 68f4: 48 85 d2 test %rdx,%rdx 0.00 : 68f7: 74 2d je 6926 <_dl_map_object_from_fd+0x886> 0.00 : 68f9: 48 83 fa 21 cmp $0x21,%rdx 0.00 : 68fd: 76 e9 jbe 68e8 <_dl_map_object_from_fd+0x848> 0.00 : 68ff: 48 89 f0 mov %rsi,%rax 0.00 : 6902: 48 29 d0 sub %rdx,%rax 0.00 : 6905: 48 83 f8 0f cmp $0xf,%rax 0.00 : 6909: 0f 87 f1 02 00 00 ja 6c00 <_dl_map_object_from_fd+0xb60> 0.00 : 690f: 48 89 f8 mov %rdi,%rax 0.00 : 6912: 48 29 d0 sub %rdx,%rax 0.00 : 6915: 49 89 4c c5 00 mov %rcx,0x0(%r13,%rax,8) 0.00 : 691a: 48 83 c1 10 add $0x10,%rcx 0.00 : 691e: 48 8b 11 mov (%rcx),%rdx 0.00 : 6921: 48 85 d2 test %rdx,%rdx 0.00 : 6924: 75 d3 jne 68f9 <_dl_map_object_from_fd+0x859> 0.00 : 6926: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 692a: 48 85 d2 test %rdx,%rdx 0.00 : 692d: 74 71 je 69a0 <_dl_map_object_from_fd+0x900> 0.00 : 692f: 49 8b 45 60 mov 0x60(%r13),%rax 0.00 : 6933: 48 85 c0 test %rax,%rax 0.00 : 6936: 74 04 je 693c <_dl_map_object_from_fd+0x89c> 9.09 : 6938: 48 01 50 08 add %rdx,0x8(%rax) 9.09 : 693c: 49 8b 45 58 mov 0x58(%r13),%rax 0.00 : 6940: 48 85 c0 test %rax,%rax 0.00 : 6943: 74 04 je 6949 <_dl_map_object_from_fd+0x8a9> 0.00 : 6945: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 6949: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 694d: 48 85 c0 test %rax,%rax 0.00 : 6950: 74 04 je 6956 <_dl_map_object_from_fd+0x8b6> 0.00 : 6952: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 6956: 49 8b 45 70 mov 0x70(%r13),%rax 0.00 : 695a: 48 85 c0 test %rax,%rax 0.00 : 695d: 74 04 je 6963 <_dl_map_object_from_fd+0x8c3> 0.00 : 695f: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 6963: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 6967: 48 85 c0 test %rax,%rax 0.00 : 696a: 74 04 je 6970 <_dl_map_object_from_fd+0x8d0> 0.00 : 696c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 6970: 49 8b 85 f8 00 00 00 mov 0xf8(%r13),%rax 0.00 : 6977: 48 85 c0 test %rax,%rax 0.00 : 697a: 74 04 je 6980 <_dl_map_object_from_fd+0x8e0> 0.00 : 697c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 6980: 49 8b 85 c8 01 00 00 mov 0x1c8(%r13),%rax 0.00 : 6987: 48 85 c0 test %rax,%rax 0.00 : 698a: 74 04 je 6990 <_dl_map_object_from_fd+0x8f0> 0.00 : 698c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 6990: 49 8b 85 98 02 00 00 mov 0x298(%r13),%rax 0.00 : 6997: 48 85 c0 test %rax,%rax 0.00 : 699a: 74 04 je 69a0 <_dl_map_object_from_fd+0x900> 0.00 : 699c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 69a0: 49 8b 85 e0 00 00 00 mov 0xe0(%r13),%rax 0.00 : 69a7: 48 85 c0 test %rax,%rax 0.00 : 69aa: 74 0b je 69b7 <_dl_map_object_from_fd+0x917> 0.00 : 69ac: 48 83 78 08 07 cmpq $0x7,0x8(%rax) 0.00 : 69b1: 0f 85 a5 09 00 00 jne 735c <_dl_map_object_from_fd+0x12bc> 0.00 : 69b7: 49 83 7d 78 00 cmpq $0x0,0x78(%r13) 0.00 : 69bc: 74 12 je 69d0 <_dl_map_object_from_fd+0x930> 0.00 : 69be: 49 8b 85 88 00 00 00 mov 0x88(%r13),%rax 0.00 : 69c5: 48 83 78 08 18 cmpq $0x18,0x8(%rax) 0.00 : 69ca: 0f 85 6d 09 00 00 jne 733d <_dl_map_object_from_fd+0x129d> 0.00 : 69d0: 49 8b 95 30 01 00 00 mov 0x130(%r13),%rdx 0.00 : 69d7: 48 85 d2 test %rdx,%rdx 0.00 : 69da: 74 33 je 6a0f <_dl_map_object_from_fd+0x96f> 0.00 : 69dc: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 69e0: a8 02 test $0x2,%al 0.00 : 69e2: 41 89 85 e0 03 00 00 mov %eax,0x3e0(%r13) 0.00 : 69e9: 74 07 je 69f2 <_dl_map_object_from_fd+0x952> 0.00 : 69eb: 49 89 95 c0 00 00 00 mov %rdx,0xc0(%r13) 0.00 : 69f2: 41 8b 85 e0 03 00 00 mov 0x3e0(%r13),%eax 0.00 : 69f9: a8 04 test $0x4,%al 0.00 : 69fb: 74 07 je 6a04 <_dl_map_object_from_fd+0x964> 0.00 : 69fd: 49 89 95 f0 00 00 00 mov %rdx,0xf0(%r13) 0.00 : 6a04: a8 08 test $0x8,%al 0.00 : 6a06: 74 07 je 6a0f <_dl_map_object_from_fd+0x96f> 0.00 : 6a08: 49 89 95 00 01 00 00 mov %rdx,0x100(%r13) 0.00 : 6a0f: 49 8b 95 70 01 00 00 mov 0x170(%r13),%rdx 0.00 : 6a16: 48 85 d2 test %rdx,%rdx 0.00 : 6a19: 74 16 je 6a31 <_dl_map_object_from_fd+0x991> 0.00 : 6a1b: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 6a1f: a8 01 test $0x1,%al 0.00 : 6a21: 41 89 85 dc 03 00 00 mov %eax,0x3dc(%r13) 0.00 : 6a28: 74 07 je 6a31 <_dl_map_object_from_fd+0x991> 0.00 : 6a2a: 49 89 95 00 01 00 00 mov %rdx,0x100(%r13) 0.00 : 6a31: 49 83 bd 28 01 00 00 cmpq $0x0,0x128(%r13) 0.00 : 6a38: 00 0.00 : 6a39: 74 0b je 6a46 <_dl_map_object_from_fd+0x9a6> 0.00 : 6a3b: 49 c7 85 b8 00 00 00 movq $0x0,0xb8(%r13) 0.00 : 6a42: 00 00 00 00 0.00 : 6a46: 41 f6 85 dc 03 00 00 testb $0x40,0x3dc(%r13) 0.00 : 6a4d: 40 0.00 : 6a4e: 74 0d je 6a5d <_dl_map_object_from_fd+0x9bd> 0.00 : 6a50: 44 8b 65 10 mov 0x10(%rbp),%r12d 0.00 : 6a54: 45 85 e4 test %r12d,%r12d 0.00 : 6a57: 0f 88 2a 03 00 00 js 6d87 <_dl_map_object_from_fd+0xce7> 0.00 : 6a5d: 49 8b 85 a0 02 00 00 mov 0x2a0(%r13),%rax 0.00 : 6a64: 48 85 c0 test %rax,%rax 0.00 : 6a67: 0f 84 e4 05 00 00 je 7051 <_dl_map_object_from_fd+0xfb1> 0.00 : 6a6d: 49 03 45 00 add 0x0(%r13),%rax 0.00 : 6a71: 49 89 85 a0 02 00 00 mov %rax,0x2a0(%r13) 0.00 : 6a78: 8b 05 da 94 21 00 mov 0x2194da(%rip),%eax # 21ff58 <_rtld_global+0xef8> 0.00 : 6a7e: f7 d0 not %eax 0.00 : 6a80: 48 21 85 10 ff ff ff and %rax,-0xf0(%rbp) 0.00 : 6a87: f6 85 10 ff ff ff 01 testb $0x1,-0xf0(%rbp) 0.00 : 6a8e: 0f 85 31 07 00 00 jne 71c5 <_dl_map_object_from_fd+0x1125> 0.00 : 6a94: 49 8b 85 20 04 00 00 mov 0x420(%r13),%rax 0.00 : 6a9b: 48 85 c0 test %rax,%rax 0.00 : 6a9e: 74 0b je 6aab <_dl_map_object_from_fd+0xa0b> 0.00 : 6aa0: 49 03 45 00 add 0x0(%r13),%rax 0.00 : 6aa4: 49 89 85 20 04 00 00 mov %rax,0x420(%r13) 0.00 : 6aab: 8b bd d4 fe ff ff mov -0x12c(%rbp),%edi 0.00 : 6ab1: e8 ca f4 00 00 callq 15f80 <__close> 0.00 : 6ab6: 85 c0 test %eax,%eax 0.00 : 6ab8: 48 8d 15 c8 2f 01 00 lea 0x12fc8(%rip),%rdx # 19a87 <__PRETTY_FUNCTION__.12417+0x185> 0.00 : 6abf: 0f 85 67 fc ff ff jne 672c <_dl_map_object_from_fd+0x68c> 0.00 : 6ac5: 41 0f b6 95 14 03 00 movzbl 0x314(%r13),%edx 0.00 : 6acc: 00 0.00 : 6acd: 89 d0 mov %edx,%eax 0.00 : 6acf: 83 e0 03 and $0x3,%eax 0.00 : 6ad2: 2c 01 sub $0x1,%al 0.00 : 6ad4: 0f 84 be 03 00 00 je 6e98 <_dl_map_object_from_fd+0xdf8> 0.00 : 6ada: 49 8b 4d 00 mov 0x0(%r13),%rcx 0.00 : 6ade: 49 03 8d a8 02 00 00 add 0x2a8(%r13),%rcx 0.00 : 6ae5: 49 89 8d a8 02 00 00 mov %rcx,0x2a8(%r13) 0.00 : 6aec: f6 05 2d 81 21 00 40 testb $0x40,0x21812d(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 6af3: 0f 85 61 06 00 00 jne 715a <_dl_map_object_from_fd+0x10ba> 0.00 : 6af9: 4c 89 ef mov %r13,%rdi 0.00 : 6afc: e8 3f 25 00 00 callq 9040 <_dl_setup_hash> 0.00 : 6b01: f6 45 10 08 testb $0x8,0x10(%rbp) 0.00 : 6b05: 0f 84 18 03 00 00 je 6e23 <_dl_map_object_from_fd+0xd83> 0.00 : 6b0b: 41 f6 85 dc 03 00 00 testb $0x20,0x3dc(%r13) 0.00 : 6b12: 20 0.00 : 6b13: 48 8b 05 7e 8e 21 00 mov 0x218e7e(%rip),%rax # 21f998 <_rtld_global+0x938> 0.00 : 6b1a: 49 0f 45 c5 cmovne %r13,%rax 0.00 : 6b1e: 48 89 05 73 8e 21 00 mov %rax,0x218e73(%rip) # 21f998 <_rtld_global+0x938> 0.00 : 6b25: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 6b2c: 49 89 85 98 03 00 00 mov %rax,0x398(%r13) 0.00 : 6b33: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 6b3a: 49 89 85 a0 03 00 00 mov %rax,0x3a0(%r13) 0.00 : 6b41: 48 83 3d 57 81 21 00 cmpq $0x0,0x218157(%rip) # 21eca0 <_rtld_global_ro+0x80> 0.00 : 6b48: 00 0.00 : 6b49: 0f 85 ce 06 00 00 jne 721d <_dl_map_object_from_fd+0x117d> 0.00 : 6b4f: 48 8b 75 20 mov 0x20(%rbp),%rsi 0.00 : 6b53: 4c 89 ef mov %r13,%rdi 0.00 : 6b56: e8 a5 3e 00 00 callq aa00 <_dl_add_to_namespace_list> 0.00 : 6b5b: 44 8b 1d d6 81 21 00 mov 0x2181d6(%rip),%r11d # 21ed38 <_rtld_global_ro+0x118> 0.00 : 6b62: 45 85 db test %r11d,%r11d 0.00 : 6b65: 0f 84 10 f6 ff ff je 617b <_dl_map_object_from_fd+0xdb> 0.00 : 6b6b: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : 6b6f: 48 8d 35 ea 84 21 00 lea 0x2184ea(%rip),%rsi # 21f060 <_rtld_global> 0.00 : 6b76: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 6b7a: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6b7e: 48 8b 04 06 mov (%rsi,%rax,1),%rax 0.00 : 6b82: f6 80 15 03 00 00 08 testb $0x8,0x315(%rax) 0.00 : 6b89: 0f 85 ec f5 ff ff jne 617b <_dl_map_object_from_fd+0xdb> 0.00 : 6b8f: 4c 8b 35 9a 81 21 00 mov 0x21819a(%rip),%r14 # 21ed30 <_rtld_global_ro+0x110> 0.00 : 6b96: 45 31 e4 xor %r12d,%r12d 0.00 : 6b99: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 6b9d: 48 85 c0 test %rax,%rax 0.00 : 6ba0: 74 44 je 6be6 <_dl_map_object_from_fd+0xb46> 0.00 : 6ba2: 44 89 e3 mov %r12d,%ebx 0.00 : 6ba5: 48 8b 75 20 mov 0x20(%rbp),%rsi 0.00 : 6ba9: 4c 89 ef mov %r13,%rdi 0.00 : 6bac: 48 83 c3 47 add $0x47,%rbx 0.00 : 6bb0: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 6bb4: 49 8d 54 1d 00 lea 0x0(%r13,%rbx,1),%rdx 0.00 : 6bb9: ff d0 callq *%rax 0.00 : 6bbb: 42 89 44 2b 08 mov %eax,0x8(%rbx,%r13,1) 0.00 : 6bc0: 41 0f b6 95 15 03 00 movzbl 0x315(%r13),%edx 0.00 : 6bc7: 00 0.00 : 6bc8: 85 c0 test %eax,%eax 0.00 : 6bca: 0f 95 c1 setne %cl 0.00 : 6bcd: 89 d0 mov %edx,%eax 0.00 : 6bcf: 83 e2 ef and $0xffffffef,%edx 0.00 : 6bd2: c0 e8 04 shr $0x4,%al 0.00 : 6bd5: 83 e0 01 and $0x1,%eax 0.00 : 6bd8: 09 c1 or %eax,%ecx 0.00 : 6bda: c1 e1 04 shl $0x4,%ecx 0.00 : 6bdd: 09 ca or %ecx,%edx 0.00 : 6bdf: 41 88 95 15 03 00 00 mov %dl,0x315(%r13) 0.00 : 6be6: 41 83 c4 01 add $0x1,%r12d 0.00 : 6bea: 44 39 25 47 81 21 00 cmp %r12d,0x218147(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 6bf1: 4d 8b 76 40 mov 0x40(%r14),%r14 0.00 : 6bf5: 77 a2 ja 6b99 <_dl_map_object_from_fd+0xaf9> 0.00 : 6bf7: e9 7f f5 ff ff jmpq 617b <_dl_map_object_from_fd+0xdb> 0.00 : 6bfc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6c00: 8d 04 12 lea (%rdx,%rdx,1),%eax 0.00 : 6c03: d1 f8 sar %eax 0.00 : 6c05: 83 f8 fc cmp $0xfffffffc,%eax 0.00 : 6c08: 76 0f jbe 6c19 <_dl_map_object_from_fd+0xb79> 0.00 : 6c0a: f7 d0 not %eax 0.00 : 6c0c: 83 c0 32 add $0x32,%eax 0.00 : 6c0f: 49 89 4c c5 40 mov %rcx,0x40(%r13,%rax,8) 0.00 : 6c14: e9 d4 fc ff ff jmpq 68ed <_dl_map_object_from_fd+0x84d> 0.00 : 6c19: 4c 89 c0 mov %r8,%rax 0.00 : 6c1c: 48 29 d0 sub %rdx,%rax 0.00 : 6c1f: 48 83 f8 0b cmp $0xb,%rax 0.00 : 6c23: 0f 87 e7 00 00 00 ja 6d10 <_dl_map_object_from_fd+0xc70> 0.00 : 6c29: 4c 89 d8 mov %r11,%rax 0.00 : 6c2c: 48 29 d0 sub %rdx,%rax 0.00 : 6c2f: 49 89 4c c5 00 mov %rcx,0x0(%r13,%rax,8) 0.00 : 6c34: e9 b4 fc ff ff jmpq 68ed <_dl_map_object_from_fd+0x84d> 0.00 : 6c39: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 6c3d: 49 8b 7f 08 mov 0x8(%r15),%rdi 0.00 : 6c41: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6c45: 4a 8b 34 38 mov (%rax,%r15,1),%rsi 0.00 : 6c49: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 6c50: 48 29 fe sub %rdi,%rsi 0.00 : 6c53: 48 8d 3c 3a lea (%rdx,%rdi,1),%rdi 0.00 : 6c57: 31 d2 xor %edx,%edx 0.00 : 6c59: e8 d2 f5 00 00 callq 16230 <__mprotect> 0.00 : 6c5e: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 6c65: e9 d7 f9 ff ff jmpq 6641 <_dl_map_object_from_fd+0x5a1> 9.09 : 6c6a: 49 8b 77 20 mov 0x20(%r15),%rsi 0.00 : 6c6e: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 6c75: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 6c7a: 8b bd d4 fe ff ff mov -0x12c(%rbp),%edi 0.00 : 6c80: e8 2b f5 00 00 callq 161b0 0.00 : 6c85: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 6c8c: e9 80 f9 ff ff jmpq 6611 <_dl_map_object_from_fd+0x571> 0.00 : 6c91: 8b 05 a1 80 21 00 mov 0x2180a1(%rip),%eax # 21ed38 <_rtld_global_ro+0x118> 0.00 : 6c97: 85 c0 test %eax,%eax 0.00 : 6c99: 0f 84 46 f7 ff ff je 63e5 <_dl_map_object_from_fd+0x345> 0.00 : 6c9f: 48 8b 4d 20 mov 0x20(%rbp),%rcx 0.00 : 6ca3: 48 8d 35 b6 83 21 00 lea 0x2183b6(%rip),%rsi # 21f060 <_rtld_global> 0.00 : 6caa: 48 8d 04 c9 lea (%rcx,%rcx,8),%rax 0.00 : 6cae: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6cb2: 48 8b 04 06 mov (%rsi,%rax,1),%rax 0.00 : 6cb6: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) 0.00 : 6cbd: f6 80 15 03 00 00 08 testb $0x8,0x315(%rax) 0.00 : 6cc4: 0f 85 1b f7 ff ff jne 63e5 <_dl_map_object_from_fd+0x345> 0.00 : 6cca: 4c 8b 2d 5f 80 21 00 mov 0x21805f(%rip),%r13 # 21ed30 <_rtld_global_ro+0x110> 0.00 : 6cd1: 31 db xor %ebx,%ebx 0.00 : 6cd3: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 6cd7: 48 85 d2 test %rdx,%rdx 0.00 : 6cda: 74 1c je 6cf8 <_dl_map_object_from_fd+0xc58> 0.00 : 6cdc: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 6ce3: 89 d8 mov %ebx,%eax 0.00 : 6ce5: be 01 00 00 00 mov $0x1,%esi 0.00 : 6cea: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6cee: 48 8d bc 01 70 04 00 lea 0x470(%rcx,%rax,1),%rdi 0.00 : 6cf5: 00 0.00 : 6cf6: ff d2 callq *%rdx 0.00 : 6cf8: 83 c3 01 add $0x1,%ebx 0.00 : 6cfb: 39 1d 37 80 21 00 cmp %ebx,0x218037(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 6d01: 4d 8b 6d 40 mov 0x40(%r13),%r13 0.00 : 6d05: 77 cc ja 6cd3 <_dl_map_object_from_fd+0xc33> 0.00 : 6d07: e9 d9 f6 ff ff jmpq 63e5 <_dl_map_object_from_fd+0x345> 0.00 : 6d0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6d10: 4c 89 c8 mov %r9,%rax 0.00 : 6d13: 48 29 d0 sub %rdx,%rax 0.00 : 6d16: 48 83 f8 0a cmp $0xa,%rax 0.00 : 6d1a: 0f 87 cd fb ff ff ja 68ed <_dl_map_object_from_fd+0x84d> 0.00 : 6d20: 48 89 d8 mov %rbx,%rax 0.00 : 6d23: 48 29 d0 sub %rdx,%rax 0.00 : 6d26: 49 89 4c c5 00 mov %rcx,0x0(%r13,%rax,8) 0.00 : 6d2b: e9 bd fb ff ff jmpq 68ed <_dl_map_object_from_fd+0x84d> 0.00 : 6d30: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : 6d37: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 6d3b: 48 8b 71 20 mov 0x20(%rcx),%rsi 0.00 : 6d3f: 48 39 f7 cmp %rsi,%rdi 0.00 : 6d42: 0f 87 24 f9 ff ff ja 666c <_dl_map_object_from_fd+0x5cc> 0.00 : 6d48: 0f b7 51 38 movzwl 0x38(%rcx),%edx 0.00 : 6d4c: 4c 8b 03 mov (%rbx),%r8 0.00 : 6d4f: 48 89 f8 mov %rdi,%rax 0.00 : 6d52: 4c 29 c0 sub %r8,%rax 0.00 : 6d55: 48 03 43 08 add 0x8(%rbx),%rax 0.00 : 6d59: 48 8d 0c d5 00 00 00 lea 0x0(,%rdx,8),%rcx 0.00 : 6d60: 00 0.00 : 6d61: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 6d65: 48 29 ca sub %rcx,%rdx 0.00 : 6d68: 48 01 f2 add %rsi,%rdx 0.00 : 6d6b: 48 39 d0 cmp %rdx,%rax 0.00 : 6d6e: 0f 82 f8 f8 ff ff jb 666c <_dl_map_object_from_fd+0x5cc> 0.00 : 6d74: 49 8d 04 30 lea (%r8,%rsi,1),%rax 0.00 : 6d78: 48 29 f8 sub %rdi,%rax 0.00 : 6d7b: 49 89 85 a0 02 00 00 mov %rax,0x2a0(%r13) 0.00 : 6d82: e9 e5 f8 ff ff jmpq 666c <_dl_map_object_from_fd+0x5cc> 0.00 : 6d87: 49 8b bd 40 03 00 00 mov 0x340(%r13),%rdi 0.00 : 6d8e: 49 8b b5 48 03 00 00 mov 0x348(%r13),%rsi 0.00 : 6d95: 48 29 fe sub %rdi,%rsi 0.00 : 6d98: e8 63 f4 00 00 callq 16200 <__munmap> 0.00 : 6d9d: 49 8b 7d 38 mov 0x38(%r13),%rdi 0.00 : 6da1: 8b 5f 10 mov 0x10(%rdi),%ebx 0.00 : 6da4: 85 db test %ebx,%ebx 0.00 : 6da6: 74 33 je 6ddb <_dl_map_object_from_fd+0xd3b> 0.00 : 6da8: 45 31 db xor %r11d,%r11d 0.00 : 6dab: 41 80 bd 14 03 00 00 cmpb $0x0,0x314(%r13) 0.00 : 6db2: 00 0.00 : 6db3: 48 8d 15 2e 46 01 00 lea 0x1462e(%rip),%rdx # 1b3e8 <__PRETTY_FUNCTION__.3644+0x1077> 0.00 : 6dba: 0f 89 73 f9 ff ff jns 6733 <_dl_map_object_from_fd+0x693> 0.00 : 6dc0: 49 8b bd a0 02 00 00 mov 0x2a0(%r13),%rdi 0.00 : 6dc7: e8 24 9d ff ff callq af0 0.00 : 6dcc: 48 8d 15 15 46 01 00 lea 0x14615(%rip),%rdx # 1b3e8 <__PRETTY_FUNCTION__.3644+0x1077> 0.00 : 6dd3: 45 31 db xor %r11d,%r11d 0.00 : 6dd6: e9 58 f9 ff ff jmpq 6733 <_dl_map_object_from_fd+0x693> 0.00 : 6ddb: e8 10 9d ff ff callq af0 0.00 : 6de0: eb c6 jmp 6da8 <_dl_map_object_from_fd+0xd08> 0.00 : 6de2: 48 8d 15 4f 45 01 00 lea 0x1454f(%rip),%rdx # 1b338 <__PRETTY_FUNCTION__.3644+0xfc7> 0.00 : 6de9: 45 31 db xor %r11d,%r11d 0.00 : 6dec: 48 8b a5 f0 fe ff ff mov -0x110(%rbp),%rsp 0.00 : 6df3: e9 3b f9 ff ff jmpq 6733 <_dl_map_object_from_fd+0x693> 0.00 : 6df8: 48 8d 15 b1 44 01 00 lea 0x144b1(%rip),%rdx # 1b2b0 <__PRETTY_FUNCTION__.3644+0xf3f> 0.00 : 6dff: 45 31 db xor %r11d,%r11d 0.00 : 6e02: eb e8 jmp 6dec <_dl_map_object_from_fd+0xd4c> 0.00 : 6e04: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 6e0b: 45 31 ed xor %r13d,%r13d 0.00 : 6e0e: e8 dd 9c ff ff callq af0 0.00 : 6e13: 8b bd d4 fe ff ff mov -0x12c(%rbp),%edi 0.00 : 6e19: e8 62 f1 00 00 callq 15f80 <__close> 0.00 : 6e1e: e9 58 f3 ff ff jmpq 617b <_dl_map_object_from_fd+0xdb> 0.00 : 6e23: 49 83 bd c0 00 00 00 cmpq $0x0,0xc0(%r13) 0.00 : 6e2a: 00 0.00 : 6e2b: 0f 84 da fc ff ff je 6b0b <_dl_map_object_from_fd+0xa6b> 0.00 : 6e31: 49 8b 85 80 03 00 00 mov 0x380(%r13),%rax 0.00 : 6e38: 49 8d 95 b8 02 00 00 lea 0x2b8(%r13),%rdx 0.00 : 6e3f: 48 39 10 cmp %rdx,(%rax) 0.00 : 6e42: 0f 84 c3 fc ff ff je 6b0b <_dl_map_object_from_fd+0xa6b> 0.00 : 6e48: 49 8b 85 c8 02 00 00 mov 0x2c8(%r13),%rax 0.00 : 6e4f: 4c 89 28 mov %r13,(%rax) 0.00 : 6e52: 49 8b b5 80 03 00 00 mov 0x380(%r13),%rsi 0.00 : 6e59: 49 8b 95 78 03 00 00 mov 0x378(%r13),%rdx 0.00 : 6e60: 41 c7 85 d0 02 00 00 movl $0x1,0x2d0(%r13) 0.00 : 6e67: 01 00 00 00 0.00 : 6e6b: 48 8d 7e 08 lea 0x8(%rsi),%rdi 0.00 : 6e6f: 48 8d 14 d5 f8 ff ff lea -0x8(,%rdx,8),%rdx 0.00 : 6e76: ff 0.00 : 6e77: e8 64 fb 00 00 callq 169e0 0.00 : 6e7c: 49 8b 95 80 03 00 00 mov 0x380(%r13),%rdx 0.00 : 6e83: 49 8d 85 c8 02 00 00 lea 0x2c8(%r13),%rax 0.00 : 6e8a: 48 89 02 mov %rax,(%rdx) 0.00 : 6e8d: e9 79 fc ff ff jmpq 6b0b <_dl_map_object_from_fd+0xa6b> 0.00 : 6e92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6e98: 83 bd fc fe ff ff 02 cmpl $0x2,-0x104(%rbp) 0.00 : 6e9f: 0f 85 35 fc ff ff jne 6ada <_dl_map_object_from_fd+0xa3a> 0.00 : 6ea5: 83 e2 fc and $0xfffffffc,%edx 0.00 : 6ea8: 41 88 95 14 03 00 00 mov %dl,0x314(%r13) 0.00 : 6eaf: e9 26 fc ff ff jmpq 6ada <_dl_map_object_from_fd+0xa3a> 0.00 : 6eb4: 48 83 3d ac 90 21 00 cmpq $0x0,0x2190ac(%rip) # 21ff68 <_rtld_global+0xf08> 0.00 : 6ebb: 00 0.00 : 6ebc: 0f 85 e5 f4 ff ff jne 63a7 <_dl_map_object_from_fd+0x307> 0.00 : 6ec2: 49 83 7d 20 00 cmpq $0x0,0x20(%r13) 0.00 : 6ec7: 0f 84 25 f4 ff ff je 62f2 <_dl_map_object_from_fd+0x252> 0.00 : 6ecd: 8b 85 c4 fe ff ff mov -0x13c(%rbp),%eax 0.00 : 6ed3: 85 c0 test %eax,%eax 0.00 : 6ed5: 0f 85 17 f4 ff ff jne 62f2 <_dl_map_object_from_fd+0x252> 0.00 : 6edb: 48 8d 0d 6e 9c ff ff lea -0x6392(%rip),%rcx # b50 <_dl_initial_error_catch_tsd> 0.00 : 6ee2: 48 39 0d df 8a 21 00 cmp %rcx,0x218adf(%rip) # 21f9c8 <_rtld_global+0x968> 0.00 : 6ee9: 0f 85 db 03 00 00 jne 72ca <_dl_map_object_from_fd+0x122a> 0.00 : 6eef: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 6ef6: e8 05 a8 00 00 callq 11700 <_dl_tls_setup> 0.00 : 6efb: 85 c0 test %eax,%eax 0.00 : 6efd: 0f 85 b5 03 00 00 jne 72b8 <_dl_map_object_from_fd+0x1218> 0.00 : 6f03: 31 ff xor %edi,%edi 0.00 : 6f05: e8 a6 a5 00 00 callq 114b0 <_dl_allocate_tls> 0.00 : 6f0a: 48 85 c0 test %rax,%rax 0.00 : 6f0d: 48 89 c2 mov %rax,%rdx 0.00 : 6f10: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 6f17: 0f 84 9b 03 00 00 je 72b8 <_dl_map_object_from_fd+0x1218> 0.00 : 6f1d: 48 89 02 mov %rax,(%rdx) 0.00 : 6f20: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 6f24: bf 02 10 00 00 mov $0x1002,%edi 0.00 : 6f29: b8 9e 00 00 00 mov $0x9e,%eax 0.00 : 6f2e: 48 89 d6 mov %rdx,%rsi 0.00 : 6f31: 0f 05 syscall 0.00 : 6f33: 85 c0 test %eax,%eax 0.00 : 6f35: 0f 84 9e 03 00 00 je 72d9 <_dl_map_object_from_fd+0x1239> 0.00 : 6f3b: 48 89 d7 mov %rdx,%rdi 0.00 : 6f3e: be 01 00 00 00 mov $0x1,%esi 0.00 : 6f43: e8 48 a0 00 00 callq 10f90 <_dl_deallocate_tls> 0.00 : 6f48: 48 8d 15 19 39 01 00 lea 0x13919(%rip),%rdx # 1a868 <__PRETTY_FUNCTION__.3644+0x4f7> 0.00 : 6f4f: 45 31 db xor %r11d,%r11d 0.00 : 6f52: e9 95 fe ff ff jmpq 6dec <_dl_map_object_from_fd+0xd4c> 0.00 : 6f57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6f5e: 00 00 0.00 : 6f60: 45 31 db xor %r11d,%r11d 0.00 : 6f63: 83 bd fc fe ff ff 03 cmpl $0x3,-0x104(%rbp) 0.00 : 6f6a: 48 8d 15 4f 44 01 00 lea 0x1444f(%rip),%rdx # 1b3c0 <__PRETTY_FUNCTION__.3644+0x104f> 0.00 : 6f71: 0f 85 cf fa ff ff jne 6a46 <_dl_map_object_from_fd+0x9a6> 0.00 : 6f77: e9 b7 f7 ff ff jmpq 6733 <_dl_map_object_from_fd+0x693> 0.00 : 6f7c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6f80: 48 8b 35 e9 8d 21 00 mov 0x218de9(%rip),%rsi # 21fd70 <_rtld_global+0xd10> 0.00 : 6f87: 48 39 b5 48 ff ff ff cmp %rsi,-0xb8(%rbp) 0.00 : 6f8e: 75 10 jne 6fa0 <_dl_map_object_from_fd+0xf00> 0.00 : 6f90: 48 8b 3d d1 8d 21 00 mov 0x218dd1(%rip),%rdi # 21fd68 <_rtld_global+0xd08> 0.00 : 6f97: 48 39 bd 40 ff ff ff cmp %rdi,-0xc0(%rbp) 0.00 : 6f9e: 74 1b je 6fbb <_dl_map_object_from_fd+0xf1b> 0.00 : 6fa0: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : 6fa7: 48 8d 35 22 8a 21 00 lea 0x218a22(%rip),%rsi # 21f9d0 <_rtld_global+0x970> 0.00 : 6fae: e8 cd 7b 00 00 callq eb80 <_dl_name_match_p> 0.00 : 6fb3: 85 c0 test %eax,%eax 0.00 : 6fb5: 0f 84 e0 f1 ff ff je 619b <_dl_map_object_from_fd+0xfb> 0.00 : 6fbb: 4c 8b 4d 20 mov 0x20(%rbp),%r9 0.00 : 6fbf: 44 8b 45 10 mov 0x10(%rbp),%r8d 0.00 : 6fc3: 44 89 fa mov %r15d,%edx 0.00 : 6fc6: 48 8b b5 d8 fe ff ff mov -0x128(%rbp),%rsi 0.00 : 6fcd: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 6fd4: 4c 89 f1 mov %r14,%rcx 0.00 : 6fd7: e8 94 3a 00 00 callq aa70 <_dl_new_object> 0.00 : 6fdc: 48 85 c0 test %rax,%rax 0.00 : 6fdf: 49 89 c5 mov %rax,%r13 0.00 : 6fe2: 48 8d 15 77 42 01 00 lea 0x14277(%rip),%rdx # 1b260 <__PRETTY_FUNCTION__.3644+0xeef> 0.00 : 6fe9: c6 85 0f ff ff ff 00 movb $0x0,-0xf1(%rbp) 0.00 : 6ff0: 0f 84 36 f7 ff ff je 672c <_dl_map_object_from_fd+0x68c> 0.00 : 6ff6: 48 8d 05 d3 89 21 00 lea 0x2189d3(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 6ffd: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 7001: 8b bd d4 fe ff ff mov -0x12c(%rbp),%edi 0.00 : 7007: e8 74 ef 00 00 callq 15f80 <__close> 0.00 : 700c: 48 8b 75 20 mov 0x20(%rbp),%rsi 0.00 : 7010: 4c 89 ef mov %r13,%rdi 0.00 : 7013: e8 e8 39 00 00 callq aa00 <_dl_add_to_namespace_list> 0.00 : 7018: e9 5e f1 ff ff jmpq 617b <_dl_map_object_from_fd+0xdb> 0.00 : 701d: 45 31 ed xor %r13d,%r13d 0.00 : 7020: 48 8d 15 f0 29 01 00 lea 0x129f0(%rip),%rdx # 19a17 <__PRETTY_FUNCTION__.12417+0x115> 0.00 : 7027: c6 85 0f ff ff ff 00 movb $0x0,-0xf1(%rbp) 0.00 : 702e: e9 f9 f6 ff ff jmpq 672c <_dl_map_object_from_fd+0x68c> 0.00 : 7033: 48 8b 55 20 mov 0x20(%rbp),%rdx 0.00 : 7037: 48 8b b5 d8 fe ff ff mov -0x128(%rbp),%rsi 0.00 : 703e: 48 8d 3d 43 42 01 00 lea 0x14243(%rip),%rdi # 1b288 <__PRETTY_FUNCTION__.3644+0xf17> 0.00 : 7045: 31 c0 xor %eax,%eax 0.00 : 7047: e8 04 83 00 00 callq f350 <_dl_debug_printf> 0.00 : 704c: e9 61 f1 ff ff jmpq 61b2 <_dl_map_object_from_fd+0x112> 0.00 : 7051: 48 8b b5 e0 fe ff ff mov -0x120(%rbp),%rsi 0.00 : 7058: 0f b7 7e 38 movzwl 0x38(%rsi),%edi 0.00 : 705c: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 7063: 48 8d 04 fd 00 00 00 lea 0x0(,%rdi,8),%rax 0.00 : 706a: 00 0.00 : 706b: 48 c1 e7 06 shl $0x6,%rdi 0.00 : 706f: 48 29 c7 sub %rax,%rdi 0.00 : 7072: e8 39 9a ff ff callq ab0 0.00 : 7077: 48 85 c0 test %rax,%rax 0.00 : 707a: 48 89 c7 mov %rax,%rdi 0.00 : 707d: 48 8d 15 8c 43 01 00 lea 0x1438c(%rip),%rdx # 1b410 <__PRETTY_FUNCTION__.3644+0x109f> 0.00 : 7084: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 708b: 0f 84 9b f6 ff ff je 672c <_dl_map_object_from_fd+0x68c> 0.00 : 7091: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 7098: 4c 89 d6 mov %r10,%rsi 0.00 : 709b: 0f b7 50 38 movzwl 0x38(%rax),%edx 0.00 : 709f: 48 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%rax 0.00 : 70a6: 00 0.00 : 70a7: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 70ab: 48 29 c2 sub %rax,%rdx 0.00 : 70ae: e8 3d 02 01 00 callq 172f0 0.00 : 70b3: 41 80 8d 14 03 00 00 orb $0x80,0x314(%r13) 0.00 : 70ba: 80 0.00 : 70bb: 49 89 85 a0 02 00 00 mov %rax,0x2a0(%r13) 0.00 : 70c2: e9 b1 f9 ff ff jmpq 6a78 <_dl_map_object_from_fd+0x9d8> 0.00 : 70c7: 45 31 db xor %r11d,%r11d 0.00 : 70ca: f7 45 10 00 00 00 20 testl $0x20000000,0x10(%rbp) 0.00 : 70d1: 48 8d 15 10 42 01 00 lea 0x14210(%rip),%rdx # 1b2e8 <__PRETTY_FUNCTION__.3644+0xf77> 0.00 : 70d8: 0f 84 0e fd ff ff je 6dec <_dl_map_object_from_fd+0xd4c> 0.00 : 70de: 48 89 f8 mov %rdi,%rax 0.00 : 70e1: 49 03 45 00 add 0x0(%r13),%rax 0.00 : 70e5: 49 89 85 40 03 00 00 mov %rax,0x340(%r13) 0.00 : 70ec: 48 03 85 30 ff ff ff add -0xd0(%rbp),%rax 0.00 : 70f3: 49 89 85 48 03 00 00 mov %rax,0x348(%r13) 0.00 : 70fa: 80 b5 20 ff ff ff 01 xorb $0x1,-0xe0(%rbp) 0.00 : 7101: 80 a5 20 ff ff ff 01 andb $0x1,-0xe0(%rbp) 0.00 : 7108: c0 a5 20 ff ff ff 06 shlb $0x6,-0xe0(%rbp) 0.00 : 710f: 41 0f b6 85 15 03 00 movzbl 0x315(%r13),%eax 0.00 : 7116: 00 0.00 : 7117: 83 e0 bf and $0xffffffbf,%eax 0.00 : 711a: 0a 85 20 ff ff ff or -0xe0(%rbp),%al 0.00 : 7120: 41 88 85 15 03 00 00 mov %al,0x315(%r13) 0.00 : 7127: e9 96 f5 ff ff jmpq 66c2 <_dl_map_object_from_fd+0x622> 0.00 : 712c: 48 8d 15 35 42 01 00 lea 0x14235(%rip),%rdx # 1b368 <__PRETTY_FUNCTION__.3644+0xff7> 0.00 : 7133: 45 31 db xor %r11d,%r11d 0.00 : 7136: e9 b1 fc ff ff jmpq 6dec <_dl_map_object_from_fd+0xd4c> 0.00 : 713b: 48 8d 0d 0e 56 01 00 lea 0x1560e(%rip),%rcx # 1c750 <__PRETTY_FUNCTION__.12425> 0.00 : 7142: 48 8d 35 f2 27 01 00 lea 0x127f2(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 7149: 48 8d 3d e1 28 01 00 lea 0x128e1(%rip),%rdi # 19a31 <__PRETTY_FUNCTION__.12417+0x12f> 0.00 : 7150: ba 19 04 00 00 mov $0x419,%edx 0.00 : 7155: e8 16 dc 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 715a: 41 0f b7 85 b0 02 00 movzwl 0x2b0(%r13),%eax 0.00 : 7161: 00 0.00 : 7162: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : 7166: 48 8d 3d 13 43 01 00 lea 0x14313(%rip),%rdi # 1b480 <__PRETTY_FUNCTION__.3644+0x110f> 0.00 : 716d: c7 44 24 28 10 00 00 movl $0x10,0x28(%rsp) 0.00 : 7174: 00 0.00 : 7175: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : 717b: be 10 00 00 00 mov $0x10,%esi 0.00 : 7180: 89 44 24 30 mov %eax,0x30(%rsp) 0.00 : 7184: 49 8b 85 a0 02 00 00 mov 0x2a0(%r13),%rax 0.00 : 718b: c7 44 24 18 10 00 00 movl $0x10,0x18(%rsp) 0.00 : 7192: 00 0.00 : 7193: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 7198: c7 44 24 08 10 00 00 movl $0x10,0x8(%rsp) 0.00 : 719f: 00 0.00 : 71a0: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 71a5: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 71ac: 31 c0 xor %eax,%eax 0.00 : 71ae: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 71b2: 4d 8b 45 00 mov 0x0(%r13),%r8 0.00 : 71b6: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 71bb: e8 90 81 00 00 callq f350 <_dl_debug_printf> 0.00 : 71c0: e9 34 f9 ff ff jmpq 6af9 <_dl_map_object_from_fd+0xa59> 0.00 : 71c5: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 71c9: be 08 00 00 00 mov $0x8,%esi 0.00 : 71ce: ff 15 34 7b 21 00 callq *0x217b34(%rip) # 21ed08 <_rtld_global_ro+0xe8> 0.00 : 71d4: 45 31 db xor %r11d,%r11d 0.00 : 71d7: 85 c0 test %eax,%eax 0.00 : 71d9: 48 8d 15 98 28 01 00 lea 0x12898(%rip),%rdx # 19a78 <__PRETTY_FUNCTION__.12417+0x176> 0.00 : 71e0: 0f 85 4d f5 ff ff jne 6733 <_dl_map_object_from_fd+0x693> 0.00 : 71e6: 8b 45 10 mov 0x10(%rbp),%eax 0.00 : 71e9: 25 00 00 00 88 and $0x88000000,%eax 0.00 : 71ee: 3d 00 00 00 80 cmp $0x80000000,%eax 0.00 : 71f3: 74 51 je 7246 <_dl_map_object_from_fd+0x11a6> 0.00 : 71f5: 83 0d 04 7c 21 00 07 orl $0x7,0x217c04(%rip) # 21ee00 <__stack_prot> 0.00 : 71fc: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 7200: ff 15 4a 8d 21 00 callq *0x218d4a(%rip) # 21ff50 <_rtld_global+0xef0> 0.00 : 7206: 85 c0 test %eax,%eax 0.00 : 7208: 41 89 c3 mov %eax,%r11d 0.00 : 720b: 48 8d 15 2e 42 01 00 lea 0x1422e(%rip),%rdx # 1b440 <__PRETTY_FUNCTION__.3644+0x10cf> 0.00 : 7212: 0f 85 1b f5 ff ff jne 6733 <_dl_map_object_from_fd+0x693> 0.00 : 7218: e9 77 f8 ff ff jmpq 6a94 <_dl_map_object_from_fd+0x9f4> 0.00 : 721d: 49 8b 95 b0 00 00 00 mov 0xb0(%r13),%rdx 0.00 : 7224: 48 85 d2 test %rdx,%rdx 0.00 : 7227: 0f 84 22 f9 ff ff je 6b4f <_dl_map_object_from_fd+0xaaf> 0.00 : 722d: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 7231: 4c 89 ef mov %r13,%rdi 0.00 : 7234: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 7238: 48 03 72 08 add 0x8(%rdx),%rsi 0.00 : 723c: e8 ef e0 ff ff callq 5330 0.00 : 7241: e9 09 f9 ff ff jmpq 6b4f <_dl_map_object_from_fd+0xaaf> 0.00 : 7246: 48 8b 15 eb 79 21 00 mov 0x2179eb(%rip),%rdx # 21ec38 <_rtld_global_ro+0x18> 0.00 : 724d: 48 8d 05 ac 7b 21 00 lea 0x217bac(%rip),%rax # 21ee00 <__stack_prot> 0.00 : 7254: 48 8d 1d a9 7b 21 00 lea 0x217ba9(%rip),%rbx # 21ee04 <__stack_prot+0x4> 0.00 : 725b: 48 f7 da neg %rdx 0.00 : 725e: 49 89 d4 mov %rdx,%r12 0.00 : 7261: 49 21 c4 and %rax,%r12 0.00 : 7264: 48 8b 05 bd 8b 21 00 mov 0x218bbd(%rip),%rax # 21fe28 <_rtld_global+0xdc8> 0.00 : 726b: 48 03 05 5e 87 21 00 add 0x21875e(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 7272: 48 03 05 b7 8b 21 00 add 0x218bb7(%rip),%rax # 21fe30 <_rtld_global+0xdd0> 0.00 : 7279: 4c 29 e3 sub %r12,%rbx 0.00 : 727c: 48 21 d0 and %rdx,%rax 0.00 : 727f: 4a 8d 14 23 lea (%rbx,%r12,1),%rdx 0.00 : 7283: 48 39 d0 cmp %rdx,%rax 0.00 : 7286: 0f 82 69 ff ff ff jb 71f5 <_dl_map_object_from_fd+0x1155> 0.00 : 728c: 48 89 de mov %rbx,%rsi 0.00 : 728f: 4c 89 e7 mov %r12,%rdi 0.00 : 7292: ba 03 00 00 00 mov $0x3,%edx 0.00 : 7297: e8 94 ef 00 00 callq 16230 <__mprotect> 0.00 : 729c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72a1: 48 89 de mov %rbx,%rsi 0.00 : 72a4: 4c 89 e7 mov %r12,%rdi 0.00 : 72a7: 83 0d 52 7b 21 00 07 orl $0x7,0x217b52(%rip) # 21ee00 <__stack_prot> 0.00 : 72ae: e8 7d ef 00 00 callq 16230 <__mprotect> 0.00 : 72b3: e9 44 ff ff ff jmpq 71fc <_dl_map_object_from_fd+0x115c> 0.00 : 72b8: 48 8d 15 71 35 01 00 lea 0x13571(%rip),%rdx # 1a830 <__PRETTY_FUNCTION__.3644+0x4bf> 0.00 : 72bf: 41 bb 0c 00 00 00 mov $0xc,%r11d 0.00 : 72c5: e9 22 fb ff ff jmpq 6dec <_dl_map_object_from_fd+0xd4c> 0.00 : 72ca: 48 8d 15 75 27 01 00 lea 0x12775(%rip),%rdx # 19a46 <__PRETTY_FUNCTION__.12417+0x144> 0.00 : 72d1: 45 31 db xor %r11d,%r11d 0.00 : 72d4: e9 13 fb ff ff jmpq 6dec <_dl_map_object_from_fd+0xd4c> 0.00 : 72d9: 48 8b 05 80 8c 21 00 mov 0x218c80(%rip),%rax # 21ff60 <_rtld_global+0xf00> 0.00 : 72e0: 4d 89 e6 mov %r12,%r14 0.00 : 72e3: 48 83 c0 01 add $0x1,%rax 0.00 : 72e7: 48 89 05 72 8c 21 00 mov %rax,0x218c72(%rip) # 21ff60 <_rtld_global+0xf00> 0.00 : 72ee: 49 89 85 50 04 00 00 mov %rax,0x450(%r13) 0.00 : 72f5: 41 0f b7 8d b0 02 00 movzwl 0x2b0(%r13),%ecx 0.00 : 72fc: 00 0.00 : 72fd: e9 f3 ef ff ff jmpq 62f5 <_dl_map_object_from_fd+0x255> 0.00 : 7302: 83 ca 02 or $0x2,%edx 0.00 : 7305: 4c 21 e7 and %r12,%rdi 0.00 : 7308: 4c 89 95 b8 fe ff ff mov %r10,-0x148(%rbp) 0.00 : 730f: 4c 89 9d b0 fe ff ff mov %r11,-0x150(%rbp) 0.00 : 7316: e8 15 ef 00 00 callq 16230 <__mprotect> 0.00 : 731b: 85 c0 test %eax,%eax 0.00 : 731d: 48 8d 15 ec 3f 01 00 lea 0x13fec(%rip),%rdx # 1b310 <__PRETTY_FUNCTION__.3644+0xf9f> 0.00 : 7324: 4c 8b 95 b8 fe ff ff mov -0x148(%rbp),%r10 0.00 : 732b: 4c 8b 9d b0 fe ff ff mov -0x150(%rbp),%r11 0.00 : 7332: 0f 89 f4 f4 ff ff jns 682c <_dl_map_object_from_fd+0x78c> 0.00 : 7338: e9 e8 f3 ff ff jmpq 6725 <_dl_map_object_from_fd+0x685> 0.00 : 733d: 48 8d 0d 2c 53 01 00 lea 0x1532c(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 7344: 48 8d 35 c3 21 01 00 lea 0x121c3(%rip),%rsi # 1950e 0.00 : 734b: 48 8d 3d 6e 31 01 00 lea 0x1316e(%rip),%rdi # 1a4c0 <__PRETTY_FUNCTION__.3644+0x14f> 0.00 : 7352: ba c3 00 00 00 mov $0xc3,%edx 0.00 : 7357: e8 14 da 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 735c: 48 8d 0d 0d 53 01 00 lea 0x1530d(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 7363: 48 8d 35 a4 21 01 00 lea 0x121a4(%rip),%rsi # 1950e 0.00 : 736a: 48 8d 3d ac 21 01 00 lea 0x121ac(%rip),%rdi # 1951d 0.00 : 7371: ba bb 00 00 00 mov $0xbb,%edx 0.00 : 7376: e8 f5 d9 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 20.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007b80 <_dl_map_object>: 10.00 : 7b80: 41 57 push %r15 10.00 : 7b82: 41 56 push %r14 0.00 : 7b84: 49 89 fe mov %rdi,%r14 0.00 : 7b87: 41 55 push %r13 0.00 : 7b89: 4d 89 cd mov %r9,%r13 0.00 : 7b8c: 41 54 push %r12 0.00 : 7b8e: 55 push %rbp 0.00 : 7b8f: 48 89 f5 mov %rsi,%rbp 0.00 : 7b92: 53 push %rbx 0.00 : 7b93: 48 81 ec d8 03 00 00 sub $0x3d8,%rsp 0.00 : 7b9a: 4d 85 c9 test %r9,%r9 0.00 : 7b9d: 89 54 24 54 mov %edx,0x54(%rsp) 0.00 : 7ba1: 89 4c 24 50 mov %ecx,0x50(%rsp) 0.00 : 7ba5: 44 89 44 24 4c mov %r8d,0x4c(%rsp) 0.00 : 7baa: 0f 88 13 06 00 00 js 81c3 <_dl_map_object+0x643> 0.00 : 7bb0: 4c 3b 0d a9 7d 21 00 cmp 0x217da9(%rip),%r9 # 21f960 <_rtld_global+0x900> 0.00 : 7bb7: 0f 83 e7 05 00 00 jae 81a4 <_dl_map_object+0x624> 0.00 : 7bbd: 4b 8d 04 c9 lea (%r9,%r9,8),%rax 0.00 : 7bc1: 48 8d 15 98 74 21 00 lea 0x217498(%rip),%rdx # 21f060 <_rtld_global> 0.00 : 7bc8: 48 c1 e0 04 shl $0x4,%rax 0.00 : 7bcc: 48 8b 1c 02 mov (%rdx,%rax,1),%rbx 0.00 : 7bd0: 48 85 db test %rbx,%rbx 0.00 : 7bd3: 75 21 jne 7bf6 <_dl_map_object+0x76> 0.00 : 7bd5: eb 59 jmp 7c30 <_dl_map_object+0xb0> 0.00 : 7bd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7bde: 00 00 0.00 : 7be0: f6 83 15 03 00 00 01 testb $0x1,0x315(%rbx) 0.00 : 7be7: 0f 84 9f 01 00 00 je 7d8c <_dl_map_object+0x20c> 10.00 : 7bed: 48 8b 5b 18 mov 0x18(%rbx),%rbx 10.00 : 7bf1: 48 85 db test %rbx,%rbx 0.00 : 7bf4: 74 3a je 7c30 <_dl_map_object+0xb0> 0.00 : 7bf6: 0f b6 83 15 03 00 00 movzbl 0x315(%rbx),%eax 10.00 : 7bfd: a8 02 test $0x2,%al 0.00 : 7bff: 75 ec jne 7bed <_dl_map_object+0x6d> 0.00 : 7c01: a8 20 test $0x20,%al 0.00 : 7c03: 75 e8 jne 7bed <_dl_map_object+0x6d> 0.00 : 7c05: 48 89 de mov %rbx,%rsi 0.00 : 7c08: 48 89 ef mov %rbp,%rdi 0.00 : 7c0b: e8 70 6f 00 00 callq eb80 <_dl_name_match_p> 0.00 : 7c10: 85 c0 test %eax,%eax 0.00 : 7c12: 74 cc je 7be0 <_dl_map_object+0x60> 0.00 : 7c14: 48 81 c4 d8 03 00 00 add $0x3d8,%rsp 0.00 : 7c1b: 48 89 d8 mov %rbx,%rax 0.00 : 7c1e: 5b pop %rbx 0.00 : 7c1f: 5d pop %rbp 0.00 : 7c20: 41 5c pop %r12 0.00 : 7c22: 41 5d pop %r13 0.00 : 7c24: 41 5e pop %r14 0.00 : 7c26: 41 5f pop %r15 0.00 : 7c28: c3 retq 0.00 : 7c29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7c30: 4d 85 f6 test %r14,%r14 0.00 : 7c33: 41 0f 95 c7 setne %r15b 0.00 : 7c37: f6 05 e2 6f 21 00 40 testb $0x40,0x216fe2(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 7c3e: 0f 85 f4 00 00 00 jne 7d38 <_dl_map_object+0x1b8> 0.00 : 7c44: 8b 3d ee 70 21 00 mov 0x2170ee(%rip),%edi # 21ed38 <_rtld_global_ro+0x118> 0.00 : 7c4a: 85 ff test %edi,%edi 0.00 : 7c4c: 0f 85 3e 03 00 00 jne 7f90 <_dl_map_object+0x410> 0.00 : 7c52: c6 84 24 cf 03 00 00 movb $0x0,0x3cf(%rsp) 0.00 : 7c59: 00 0.00 : 7c5a: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 7c5f: 48 89 ef mov %rbp,%rdi 0.00 : 7c62: e8 79 e9 00 00 callq 165e0 0.00 : 7c67: 48 85 c0 test %rax,%rax 0.00 : 7c6a: 0f 84 91 01 00 00 je 7e01 <_dl_map_object+0x281> 0.00 : 7c70: 45 84 ff test %r15b,%r15b 0.00 : 7c73: 0f 84 5f 01 00 00 je 7dd8 <_dl_map_object+0x258> 0.00 : 7c79: 4c 89 f7 mov %r14,%rdi 0.00 : 7c7c: 31 d2 xor %edx,%edx 0.00 : 7c7e: 48 89 ee mov %rbp,%rsi 0.00 : 7c81: e8 da f9 ff ff callq 7660 0.00 : 7c86: 48 89 c7 mov %rax,%rdi 0.00 : 7c89: 48 85 ff test %rdi,%rdi 0.00 : 7c8c: 48 89 bc 24 c0 03 00 mov %rdi,0x3c0(%rsp) 0.00 : 7c93: 00 0.00 : 7c94: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 7c99: 74 31 je 7ccc <_dl_map_object+0x14c> 0.00 : 7c9b: 45 84 ff test %r15b,%r15b 0.00 : 7c9e: 4c 89 f2 mov %r14,%rdx 0.00 : 7ca1: 0f 84 41 01 00 00 je 7de8 <_dl_map_object+0x268> 0.00 : 7ca7: 48 8d 74 24 70 lea 0x70(%rsp),%rsi 0.00 : 7cac: 4c 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%r8 0.00 : 7cb3: 00 0.00 : 7cb4: 31 c9 xor %ecx,%ecx 0.00 : 7cb6: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 7cbc: e8 ef da ff ff callq 57b0 0.00 : 7cc1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 7cc4: 89 c3 mov %eax,%ebx 0.00 : 7cc6: 0f 84 fd 05 00 00 je 82c9 <_dl_map_object+0x749> 0.00 : 7ccc: f7 44 24 4c 00 00 00 testl $0x10000000,0x4c(%rsp) 0.00 : 7cd3: 10 0.00 : 7cd4: b8 00 00 00 00 mov $0x0,%eax 0.00 : 7cd9: 4c 0f 45 f0 cmovne %rax,%r14 0.00 : 7cdd: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 7ce0: 0f 84 ba 05 00 00 je 82a0 <_dl_map_object+0x720> 0.00 : 7ce6: 48 8b 05 6b 71 21 00 mov 0x21716b(%rip),%rax # 21ee58 <__libc_stack_end> 0.00 : 7ced: 48 8b 8c 24 c0 03 00 mov 0x3c0(%rsp),%rcx 0.00 : 7cf4: 00 0.00 : 7cf5: 48 8d 54 24 70 lea 0x70(%rsp),%rdx 0.00 : 7cfa: 44 8b 4c 24 54 mov 0x54(%rsp),%r9d 0.00 : 7cff: 89 de mov %ebx,%esi 0.00 : 7d01: 4d 89 f0 mov %r14,%r8 0.00 : 7d04: 48 89 ef mov %rbp,%rdi 0.00 : 7d07: 4c 89 6c 24 10 mov %r13,0x10(%rsp) 0.00 : 7d0c: 48 89 84 24 b8 03 00 mov %rax,0x3b8(%rsp) 0.00 : 7d13: 00 0.00 : 7d14: 48 8d 84 24 b8 03 00 lea 0x3b8(%rsp),%rax 0.00 : 7d1b: 00 0.00 : 7d1c: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 7d21: 8b 44 24 4c mov 0x4c(%rsp),%eax 0.00 : 7d25: 89 04 24 mov %eax,(%rsp) 0.00 : 7d28: e8 73 e3 ff ff callq 60a0 <_dl_map_object_from_fd> 0.00 : 7d2d: 48 89 c3 mov %rax,%rbx 0.00 : 7d30: e9 df fe ff ff jmpq 7c14 <_dl_map_object+0x94> 0.00 : 7d35: 0f 1f 00 nopl (%rax) 0.00 : 7d38: 45 84 ff test %r15b,%r15b 0.00 : 7d3b: 0f 84 03 ff ff ff je 7c44 <_dl_map_object+0xc4> 0.00 : 7d41: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 7d45: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 7d49: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 7d4c: 74 32 je 7d80 <_dl_map_object+0x200> 0.00 : 7d4e: 48 8d 3d fb 37 01 00 lea 0x137fb(%rip),%rdi # 1b550 <__PRETTY_FUNCTION__.3644+0x11df> 0.00 : 7d55: 49 89 d0 mov %rdx,%r8 0.00 : 7d58: 31 c0 xor %eax,%eax 0.00 : 7d5a: 4c 89 ea mov %r13,%rdx 0.00 : 7d5d: 48 89 ee mov %rbp,%rsi 0.00 : 7d60: e8 eb 75 00 00 callq f350 <_dl_debug_printf> 0.00 : 7d65: 8b 3d cd 6f 21 00 mov 0x216fcd(%rip),%edi # 21ed38 <_rtld_global_ro+0x118> 0.00 : 7d6b: 85 ff test %edi,%edi 0.00 : 7d6d: 0f 84 df fe ff ff je 7c52 <_dl_map_object+0xd2> 0.00 : 7d73: e9 18 02 00 00 jmpq 7f90 <_dl_map_object+0x410> 0.00 : 7d78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7d7f: 00 0.00 : 7d80: 48 8b 05 81 6e 21 00 mov 0x216e81(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 7d87: 48 8b 08 mov (%rax),%rcx 0.00 : 7d8a: eb c2 jmp 7d4e <_dl_map_object+0x1ce> 0.00 : 7d8c: 48 8b 93 b0 00 00 00 mov 0xb0(%rbx),%rdx 0.00 : 7d93: 48 85 d2 test %rdx,%rdx 0.00 : 7d96: 0f 84 51 fe ff ff je 7bed <_dl_map_object+0x6d> 0.00 : 7d9c: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 7da0: 48 89 ef mov %rbp,%rdi 0.00 : 7da3: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 7da7: 4c 03 62 08 add 0x8(%rdx),%r12 10.00 : 7dab: 4c 89 e6 mov %r12,%rsi 0.00 : 7dae: e8 ad e8 00 00 callq 16660 0.00 : 7db3: 85 c0 test %eax,%eax 0.00 : 7db5: 0f 85 32 fe ff ff jne 7bed <_dl_map_object+0x6d> 0.00 : 7dbb: 4c 89 e6 mov %r12,%rsi 0.00 : 7dbe: 48 89 df mov %rbx,%rdi 0.00 : 7dc1: e8 6a d5 ff ff callq 5330 0.00 : 7dc6: 80 8b 15 03 00 00 01 orb $0x1,0x315(%rbx) 0.00 : 7dcd: e9 42 fe ff ff jmpq 7c14 <_dl_map_object+0x94> 0.00 : 7dd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7dd8: 48 89 ef mov %rbp,%rdi 0.00 : 7ddb: e8 00 d1 ff ff callq 4ee0 0.00 : 7de0: 48 89 c7 mov %rax,%rdi 0.00 : 7de3: e9 a1 fe ff ff jmpq 7c89 <_dl_map_object+0x109> 0.00 : 7de8: 4b 8d 44 ed 00 lea 0x0(%r13,%r13,8),%rax 0.00 : 7ded: 48 8d 0d 6c 72 21 00 lea 0x21726c(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 7df4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 7df8: 48 8b 14 01 mov (%rcx,%rax,1),%rdx 0.00 : 7dfc: e9 a6 fe ff ff jmpq 7ca7 <_dl_map_object+0x127> 0.00 : 7e01: 48 89 ef mov %rbp,%rdi 0.00 : 7e04: e8 67 e9 00 00 callq 16770 <__GI_strlen> 0.00 : 7e09: 48 83 c0 01 add $0x1,%rax 0.00 : 7e0d: f6 05 0c 6e 21 00 01 testb $0x1,0x216e0c(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 7e14: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 7e19: 0f 85 be 05 00 00 jne 83dd <_dl_map_object+0x85d> 0.00 : 7e1f: 4d 85 f6 test %r14,%r14 0.00 : 7e22: 0f 84 9e 02 00 00 je 80c6 <_dl_map_object+0x546> 0.00 : 7e28: 49 83 be 28 01 00 00 cmpq $0x0,0x128(%r14) 0.00 : 7e2f: 00 0.00 : 7e30: 0f 84 90 02 00 00 je 80c6 <_dl_map_object+0x546> 0.00 : 7e36: 48 83 3d d2 6f 21 00 cmpq $0xffffffffffffffff,0x216fd2(%rip) # 21ee10 0.00 : 7e3d: ff 0.00 : 7e3e: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 7e43: b8 01 00 00 00 mov $0x1,%eax 0.00 : 7e48: 74 5a je 7ea4 <_dl_map_object+0x324> 0.00 : 7e4a: 48 8b 05 0f 72 21 00 mov 0x21720f(%rip),%rax # 21f060 <_rtld_global> 0.00 : 7e51: 8b 54 24 4c mov 0x4c(%rsp),%edx 0.00 : 7e55: 48 8d 8c 24 cf 03 00 lea 0x3cf(%rsp),%rcx 0.00 : 7e5c: 00 0.00 : 7e5d: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 7e62: 45 84 ff test %r15b,%r15b 0.00 : 7e65: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 7e6a: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 7e6f: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 7e76: 00 0.00 : 7e77: 48 8d 0d 92 6f 21 00 lea 0x216f92(%rip),%rcx # 21ee10 0.00 : 7e7e: 49 0f 45 c6 cmovne %r14,%rax 0.00 : 7e82: 48 89 ef mov %rbp,%rdi 0.00 : 7e85: 81 e2 00 00 00 04 and $0x4000000,%edx 0.00 : 7e8b: c7 44 24 08 02 00 00 movl $0x2,0x8(%rsp) 0.00 : 7e92: 00 0.00 : 7e93: 48 89 04 24 mov %rax,(%rsp) 0.00 : 7e97: e8 a4 dd ff ff callq 5c40 0.00 : 7e9c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 7e9f: 89 c3 mov %eax,%ebx 0.00 : 7ea1: 0f 94 c0 sete %al 0.00 : 7ea4: 45 84 ff test %r15b,%r15b 0.00 : 7ea7: 0f 84 90 01 00 00 je 803d <_dl_map_object+0x4bd> 0.00 : 7ead: 84 c0 test %al,%al 0.00 : 7eaf: 0f 84 88 01 00 00 je 803d <_dl_map_object+0x4bd> 10.00 : 7eb5: 49 8d 9e a8 03 00 00 lea 0x3a8(%r14),%rbx 0.00 : 7ebc: 48 8d 0d ed 1b 01 00 lea 0x11bed(%rip),%rcx # 19ab0 <__PRETTY_FUNCTION__.12417+0x1ae> 0.00 : 7ec3: ba 1d 00 00 00 mov $0x1d,%edx 0.00 : 7ec8: 4c 89 f7 mov %r14,%rdi 0.00 : 7ecb: 48 89 de mov %rbx,%rsi 0.00 : 7ece: e8 8d fa ff ff callq 7960 0.00 : 7ed3: 84 c0 test %al,%al 0.00 : 7ed5: 0f 85 20 01 00 00 jne 7ffb <_dl_map_object+0x47b> 0.00 : 7edb: 8b 44 24 4c mov 0x4c(%rsp),%eax 0.00 : 7edf: 25 00 00 00 04 and $0x4000000,%eax 0.00 : 7ee4: 89 44 24 6c mov %eax,0x6c(%rsp) 0.00 : 7ee8: 0f 85 08 05 00 00 jne 83f6 <_dl_map_object+0x876> 20.00 : 7eee: 48 89 ef mov %rbp,%rdi 0.00 : 7ef1: e8 fa 0a 00 00 callq 89f0 <_dl_load_cache_lookup> 0.00 : 7ef6: 48 85 c0 test %rax,%rax 0.00 : 7ef9: 49 89 c4 mov %rax,%r12 0.00 : 7efc: 0f 84 53 01 00 00 je 8055 <_dl_map_object+0x4d5> 0.00 : 7f02: 45 84 ff test %r15b,%r15b 0.00 : 7f05: 4c 89 f2 mov %r14,%rdx 0.00 : 7f08: 0f 84 b5 04 00 00 je 83c3 <_dl_map_object+0x843> 0.00 : 7f0e: f6 82 dd 03 00 00 08 testb $0x8,0x3dd(%rdx) 0.00 : 7f15: 0f 85 75 04 00 00 jne 8390 <_dl_map_object+0x810> 0.00 : 7f1b: 45 84 ff test %r15b,%r15b 0.00 : 7f1e: 4c 89 f2 mov %r14,%rdx 0.00 : 7f21: 0f 84 50 04 00 00 je 8377 <_dl_map_object+0x7f7> 0.00 : 7f27: 48 8d 74 24 70 lea 0x70(%rsp),%rsi 0.00 : 7f2c: 4c 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%r8 0.00 : 7f33: 00 0.00 : 7f34: 45 31 c9 xor %r9d,%r9d 0.00 : 7f37: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 7f3c: 4c 89 e7 mov %r12,%rdi 0.00 : 7f3f: e8 6c d8 ff ff callq 57b0 10.00 : 7f44: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 7f47: 89 c3 mov %eax,%ebx 0.00 : 7f49: 0f 84 06 01 00 00 je 8055 <_dl_map_object+0x4d5> 0.00 : 7f4f: 4c 89 e7 mov %r12,%rdi 0.00 : 7f52: e8 89 cf ff ff callq 4ee0 0.00 : 7f57: 48 85 c0 test %rax,%rax 0.00 : 7f5a: 48 89 84 24 c0 03 00 mov %rax,0x3c0(%rsp) 0.00 : 7f61: 00 0.00 : 7f62: 0f 84 e3 00 00 00 je 804b <_dl_map_object+0x4cb> 0.00 : 7f68: f6 05 b1 6c 21 00 01 testb $0x1,0x216cb1(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 7f6f: 0f 84 57 fd ff ff je 7ccc <_dl_map_object+0x14c> 0.00 : 7f75: 48 8d 3d 60 18 01 00 lea 0x11860(%rip),%rdi # 197dc 0.00 : 7f7c: 31 c0 xor %eax,%eax 0.00 : 7f7e: e8 cd 73 00 00 callq f350 <_dl_debug_printf> 0.00 : 7f83: e9 44 fd ff ff jmpq 7ccc <_dl_map_object+0x14c> 0.00 : 7f88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7f8f: 00 0.00 : 7f90: 4d 85 f6 test %r14,%r14 0.00 : 7f93: 74 11 je 7fa6 <_dl_map_object+0x426> 0.00 : 7f95: 41 f6 86 15 03 00 00 testb $0x8,0x315(%r14) 0.00 : 7f9c: 08 0.00 : 7f9d: 0f 1f 00 nopl (%rax) 0.00 : 7fa0: 0f 85 ac fc ff ff jne 7c52 <_dl_map_object+0xd2> 0.00 : 7fa6: 4c 8b 25 83 6d 21 00 mov 0x216d83(%rip),%r12 # 21ed30 <_rtld_global_ro+0x110> 0.00 : 7fad: 31 db xor %ebx,%ebx 0.00 : 7faf: eb 17 jmp 7fc8 <_dl_map_object+0x448> 0.00 : 7fb1: 48 89 c5 mov %rax,%rbp 0.00 : 7fb4: 83 c3 01 add $0x1,%ebx 0.00 : 7fb7: 39 1d 7b 6d 21 00 cmp %ebx,0x216d7b(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 7fbd: 4d 8b 64 24 40 mov 0x40(%r12),%r12 0.00 : 7fc2: 0f 86 8a fc ff ff jbe 7c52 <_dl_map_object+0xd2> 0.00 : 7fc8: 49 8b 4c 24 08 mov 0x8(%r12),%rcx 0.00 : 7fcd: 48 85 c9 test %rcx,%rcx 0.00 : 7fd0: 74 e2 je 7fb4 <_dl_map_object+0x434> 0.00 : 7fd2: 89 d8 mov %ebx,%eax 0.00 : 7fd4: ba 01 00 00 00 mov $0x1,%edx 0.00 : 7fd9: 48 89 ef mov %rbp,%rdi 0.00 : 7fdc: 48 c1 e0 04 shl $0x4,%rax 0.00 : 7fe0: 49 8d b4 06 70 04 00 lea 0x470(%r14,%rax,1),%rsi 0.00 : 7fe7: 00 0.00 : 7fe8: ff d1 callq *%rcx 0.00 : 7fea: 48 85 c0 test %rax,%rax 0.00 : 7fed: 75 c2 jne 7fb1 <_dl_map_object+0x431> 0.00 : 7fef: 31 ed xor %ebp,%ebp 0.00 : 7ff1: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 7ff6: e9 d1 fc ff ff jmpq 7ccc <_dl_map_object+0x14c> 0.00 : 7ffb: 8b 54 24 4c mov 0x4c(%rsp),%edx 0.00 : 7fff: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 8004: 48 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%rax 0.00 : 800b: 00 0.00 : 800c: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 8011: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 8018: 00 0.00 : 8019: 48 89 d9 mov %rbx,%rcx 0.00 : 801c: 48 89 ef mov %rbp,%rdi 0.00 : 801f: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 8024: c7 44 24 08 04 00 00 movl $0x4,0x8(%rsp) 0.00 : 802b: 00 0.00 : 802c: 81 e2 00 00 00 04 and $0x4000000,%edx 0.00 : 8032: 4c 89 34 24 mov %r14,(%rsp) 0.00 : 8036: e8 05 dc ff ff callq 5c40 0.00 : 803b: 89 c3 mov %eax,%ebx 0.00 : 803d: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 8040: 0f 85 22 ff ff ff jne 7f68 <_dl_map_object+0x3e8> 0.00 : 8046: e9 90 fe ff ff jmpq 7edb <_dl_map_object+0x35b> 0.00 : 804b: 89 df mov %ebx,%edi 0.00 : 804d: 0f 1f 00 nopl (%rax) 0.00 : 8050: e8 2b df 00 00 callq 15f80 <__close> 0.00 : 8055: 45 84 ff test %r15b,%r15b 0.00 : 8058: 4c 89 f2 mov %r14,%rdx 0.00 : 805b: 0f 84 7a 02 00 00 je 82db <_dl_map_object+0x75b> 0.00 : 8061: 48 85 d2 test %rdx,%rdx 0.00 : 8064: 74 0d je 8073 <_dl_map_object+0x4f3> 0.00 : 8066: f6 82 dd 03 00 00 08 testb $0x8,0x3dd(%rdx) 0.00 : 806d: 0f 85 fa 02 00 00 jne 836d <_dl_map_object+0x7ed> 0.00 : 8073: 48 83 3d c5 6d 21 00 cmpq $0xffffffffffffffff,0x216dc5(%rip) # 21ee40 0.00 : 807a: ff 0.00 : 807b: 0f 84 ec 02 00 00 je 836d <_dl_map_object+0x7ed> 0.00 : 8081: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 8085: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 808a: 48 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%rax 0.00 : 8091: 00 0.00 : 8092: 8b 54 24 6c mov 0x6c(%rsp),%edx 0.00 : 8096: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 809b: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 80a2: 00 0.00 : 80a3: 48 8d 0d 96 6d 21 00 lea 0x216d96(%rip),%rcx # 21ee40 0.00 : 80aa: 48 89 ef mov %rbp,%rdi 0.00 : 80ad: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 80b2: c7 44 24 08 40 00 00 movl $0x40,0x8(%rsp) 0.00 : 80b9: 00 0.00 : 80ba: e8 81 db ff ff callq 5c40 0.00 : 80bf: 89 c3 mov %eax,%ebx 0.00 : 80c1: e9 a2 fe ff ff jmpq 7f68 <_dl_map_object+0x3e8> 0.00 : 80c6: 48 8b 0d 93 6f 21 00 mov 0x216f93(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 80cd: 45 84 ff test %r15b,%r15b 0.00 : 80d0: 48 89 4c 24 60 mov %rcx,0x60(%rsp) 0.00 : 80d5: 0f 84 12 01 00 00 je 81ed <_dl_map_object+0x66d> 0.00 : 80db: 48 8d 44 24 70 lea 0x70(%rsp),%rax 0.00 : 80e0: 8b 4c 24 4c mov 0x4c(%rsp),%ecx 0.00 : 80e4: 48 8d 94 24 c0 03 00 lea 0x3c0(%rsp),%rdx 0.00 : 80eb: 00 0.00 : 80ec: 4d 89 f4 mov %r14,%r12 0.00 : 80ef: c6 44 24 6b 00 movb $0x0,0x6b(%rsp) 0.00 : 80f4: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 80f9: 48 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%rax 0.00 : 8100: 00 0.00 : 8101: 48 89 54 24 38 mov %rdx,0x38(%rsp) 0.00 : 8106: 81 e1 00 00 00 04 and $0x4000000,%ecx 0.00 : 810c: 89 4c 24 34 mov %ecx,0x34(%rsp) 0.00 : 8110: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 8115: eb 1a jmp 8131 <_dl_map_object+0x5b1> 0.00 : 8117: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 811e: 00 00 0.00 : 8120: 4d 8b a4 24 d8 02 00 mov 0x2d8(%r12),%r12 0.00 : 8127: 00 0.00 : 8128: 4d 85 e4 test %r12,%r12 0.00 : 812b: 0f 84 b1 00 00 00 je 81e2 <_dl_map_object+0x662> 0.00 : 8131: 49 8d 9c 24 18 03 00 lea 0x318(%r12),%rbx 0.00 : 8138: 00 0.00 : 8139: 48 8d 0d 6a 19 01 00 lea 0x1196a(%rip),%rcx # 19aaa <__PRETTY_FUNCTION__.12417+0x1a8> 0.00 : 8140: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 8145: 4c 89 e7 mov %r12,%rdi 0.00 : 8148: 48 89 de mov %rbx,%rsi 0.00 : 814b: e8 10 f8 ff ff callq 7960 0.00 : 8150: 84 c0 test %al,%al 0.00 : 8152: 74 cc je 8120 <_dl_map_object+0x5a0> 0.00 : 8154: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 8159: 4c 8b 4c 24 40 mov 0x40(%rsp),%r9 0.00 : 815e: 48 89 d9 mov %rbx,%rcx 0.00 : 8161: 4c 8b 44 24 38 mov 0x38(%rsp),%r8 0.00 : 8166: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 816b: 48 89 ef mov %rbp,%rdi 0.00 : 816e: c7 44 24 08 04 00 00 movl $0x4,0x8(%rsp) 0.00 : 8175: 00 0.00 : 8176: 4c 89 34 24 mov %r14,(%rsp) 0.00 : 817a: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 817f: 8b 54 24 34 mov 0x34(%rsp),%edx 0.00 : 8183: e8 b8 da ff ff callq 5c40 0.00 : 8188: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 818b: 89 c3 mov %eax,%ebx 0.00 : 818d: 0f 85 d5 fd ff ff jne 7f68 <_dl_map_object+0x3e8> 0.00 : 8193: 4c 3b 64 24 60 cmp 0x60(%rsp),%r12 0.00 : 8198: 0f 94 c0 sete %al 0.00 : 819b: 08 44 24 6b or %al,0x6b(%rsp) 0.00 : 819f: e9 7c ff ff ff jmpq 8120 <_dl_map_object+0x5a0> 0.00 : 81a4: 48 8d 0d a7 19 01 00 lea 0x119a7(%rip),%rcx # 19b52 <__PRETTY_FUNCTION__.13089> 0.00 : 81ab: 48 8d 35 89 17 01 00 lea 0x11789(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 81b2: 48 8d 3d 09 19 01 00 lea 0x11909(%rip),%rdi # 19ac2 <__PRETTY_FUNCTION__.12417+0x1c0> 0.00 : 81b9: ba 07 08 00 00 mov $0x807,%edx 0.00 : 81be: e8 ad cb 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 81c3: 48 8d 0d 88 19 01 00 lea 0x11988(%rip),%rcx # 19b52 <__PRETTY_FUNCTION__.13089> 0.00 : 81ca: 48 8d 35 6a 17 01 00 lea 0x1176a(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 81d1: 48 8d 3d e0 18 01 00 lea 0x118e0(%rip),%rdi # 19ab8 <__PRETTY_FUNCTION__.12417+0x1b6> 0.00 : 81d8: ba 06 08 00 00 mov $0x806,%edx 0.00 : 81dd: e8 8e cb 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 81e2: 80 7c 24 6b 00 cmpb $0x0,0x6b(%rsp) 0.00 : 81e7: 0f 85 49 fc ff ff jne 7e36 <_dl_map_object+0x2b6> 0.00 : 81ed: 48 83 7c 24 60 00 cmpq $0x0,0x60(%rsp) 0.00 : 81f3: 0f 84 3d fc ff ff je 7e36 <_dl_map_object+0x2b6> 0.00 : 81f9: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : 81fe: 0f b6 81 14 03 00 00 movzbl 0x314(%rcx),%eax 0.00 : 8205: 83 e0 03 and $0x3,%eax 0.00 : 8208: 3c 02 cmp $0x2,%al 0.00 : 820a: 0f 84 26 fc ff ff je 7e36 <_dl_map_object+0x2b6> 0.00 : 8210: 48 89 cb mov %rcx,%rbx 0.00 : 8213: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : 8218: 48 8d 0d 8b 18 01 00 lea 0x1188b(%rip),%rcx # 19aaa <__PRETTY_FUNCTION__.12417+0x1a8> 0.00 : 821f: 48 81 c3 18 03 00 00 add $0x318,%rbx 0.00 : 8226: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 822b: 48 89 de mov %rbx,%rsi 0.00 : 822e: e8 2d f7 ff ff callq 7960 0.00 : 8233: 84 c0 test %al,%al 0.00 : 8235: 0f 84 fb fb ff ff je 7e36 <_dl_map_object+0x2b6> 0.00 : 823b: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : 8240: 8b 54 24 4c mov 0x4c(%rsp),%edx 0.00 : 8244: 48 8d 8c 24 cf 03 00 lea 0x3cf(%rsp),%rcx 0.00 : 824b: 00 0.00 : 824c: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 8251: 45 84 ff test %r15b,%r15b 0.00 : 8254: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 8259: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 8260: 00 0.00 : 8261: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 8266: 48 89 ef mov %rbp,%rdi 0.00 : 8269: 49 0f 45 c6 cmovne %r14,%rax 0.00 : 826d: 48 89 d9 mov %rbx,%rcx 0.00 : 8270: 81 e2 00 00 00 04 and $0x4000000,%edx 0.00 : 8276: c7 44 24 08 04 00 00 movl $0x4,0x8(%rsp) 0.00 : 827d: 00 0.00 : 827e: 48 89 04 24 mov %rax,(%rsp) 0.00 : 8282: e8 b9 d9 ff ff callq 5c40 0.00 : 8287: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 828a: 89 c3 mov %eax,%ebx 0.00 : 828c: 0f 85 d6 fc ff ff jne 7f68 <_dl_map_object+0x3e8> 0.00 : 8292: e9 9f fb ff ff jmpq 7e36 <_dl_map_object+0x2b6> 0.00 : 8297: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 829e: 00 00 0.00 : 82a0: 8b 4c 24 50 mov 0x50(%rsp),%ecx 0.00 : 82a4: 85 c9 test %ecx,%ecx 0.00 : 82a6: 75 4c jne 82f4 <_dl_map_object+0x774> 0.00 : 82a8: 80 bc 24 cf 03 00 00 cmpb $0x0,0x3cf(%rsp) 0.00 : 82af: 00 0.00 : 82b0: 0f 84 53 01 00 00 je 8409 <_dl_map_object+0x889> 0.00 : 82b6: 48 8d 0d 20 18 01 00 lea 0x11820(%rip),%rcx # 19add <__PRETTY_FUNCTION__.12417+0x1db> 0.00 : 82bd: 31 d2 xor %edx,%edx 0.00 : 82bf: 48 89 ee mov %rbp,%rsi 0.00 : 82c2: 31 ff xor %edi,%edi 0.00 : 82c4: e8 37 5c 00 00 callq df00 <_dl_signal_error> 0.00 : 82c9: 48 8b bc 24 c0 03 00 mov 0x3c0(%rsp),%rdi 0.00 : 82d0: 00 0.00 : 82d1: e8 1a 88 ff ff callq af0 0.00 : 82d6: e9 f1 f9 ff ff jmpq 7ccc <_dl_map_object+0x14c> 0.00 : 82db: 4b 8d 44 ed 00 lea 0x0(%r13,%r13,8),%rax 0.00 : 82e0: 48 8d 0d 79 6d 21 00 lea 0x216d79(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 82e7: 48 c1 e0 04 shl $0x4,%rax 0.00 : 82eb: 48 8b 14 01 mov (%rcx,%rax,1),%rdx 0.00 : 82ef: e9 6d fd ff ff jmpq 8061 <_dl_map_object+0x4e1> 0.00 : 82f4: f6 05 26 69 21 00 04 testb $0x4,0x216926(%rip) # 21ec21 <_rtld_global_ro+0x1> 0.00 : 82fb: 75 ab jne 82a8 <_dl_map_object+0x728> 0.00 : 82fd: 48 89 ef mov %rbp,%rdi 0.00 : 8300: e8 db cb ff ff callq 4ee0 0.00 : 8305: 48 85 c0 test %rax,%rax 0.00 : 8308: 49 89 c4 mov %rax,%r12 0.00 : 830b: 0f 84 0f 01 00 00 je 8420 <_dl_map_object+0x8a0> 0.00 : 8311: 44 8b 44 24 4c mov 0x4c(%rsp),%r8d 0.00 : 8316: 8b 54 24 54 mov 0x54(%rsp),%edx 0.00 : 831a: 4d 89 e9 mov %r13,%r9 0.00 : 831d: 4c 89 f1 mov %r14,%rcx 0.00 : 8320: 48 89 ee mov %rbp,%rsi 0.00 : 8323: 48 89 c7 mov %rax,%rdi 0.00 : 8326: e8 45 27 00 00 callq aa70 <_dl_new_object> 0.00 : 832b: 48 85 c0 test %rax,%rax 0.00 : 832e: 48 89 c3 mov %rax,%rbx 0.00 : 8331: 0f 84 e9 00 00 00 je 8420 <_dl_map_object+0x8a0> 0.00 : 8337: 80 88 15 03 00 00 02 orb $0x2,0x315(%rax) 0.00 : 833e: 48 8d 05 8b 46 01 00 lea 0x1468b(%rip),%rax # 1c9d0 0.00 : 8345: c7 83 ec 02 00 00 01 movl $0x1,0x2ec(%rbx) 0.00 : 834c: 00 00 00 0.00 : 834f: 80 8b 14 03 00 00 04 orb $0x4,0x314(%rbx) 0.00 : 8356: 4c 89 ee mov %r13,%rsi 0.00 : 8359: 48 89 df mov %rbx,%rdi 0.00 : 835c: 48 89 83 08 03 00 00 mov %rax,0x308(%rbx) 0.00 : 8363: e8 98 26 00 00 callq aa00 <_dl_add_to_namespace_list> 0.00 : 8368: e9 a7 f8 ff ff jmpq 7c14 <_dl_map_object+0x94> 0.00 : 836d: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 8372: e9 f1 fb ff ff jmpq 7f68 <_dl_map_object+0x3e8> 0.00 : 8377: 4b 8d 44 ed 00 lea 0x0(%r13,%r13,8),%rax 0.00 : 837c: 48 8d 0d dd 6c 21 00 lea 0x216cdd(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 8383: 48 c1 e0 04 shl $0x4,%rax 0.00 : 8387: 48 8b 14 01 mov (%rcx,%rax,1),%rdx 0.00 : 838b: e9 97 fb ff ff jmpq 7f27 <_dl_map_object+0x3a7> 0.00 : 8390: 48 8d 3d 49 06 01 00 lea 0x10649(%rip),%rdi # 189e0 0.00 : 8397: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 839c: 4c 89 e6 mov %r12,%rsi 0.00 : 839f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 83a1: 0f 84 ae fc ff ff je 8055 <_dl_map_object+0x4d5> 0.00 : 83a7: 48 8d 3d 3a 06 01 00 lea 0x1063a(%rip),%rdi # 189e8 0.00 : 83ae: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 83b3: 4c 89 e6 mov %r12,%rsi 0.00 : 83b6: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 83b8: 0f 85 5d fb ff ff jne 7f1b <_dl_map_object+0x39b> 0.00 : 83be: e9 92 fc ff ff jmpq 8055 <_dl_map_object+0x4d5> 0.00 : 83c3: 48 8b 15 96 6c 21 00 mov 0x216c96(%rip),%rdx # 21f060 <_rtld_global> 0.00 : 83ca: 48 8d 05 ff 75 21 00 lea 0x2175ff(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 83d1: 48 85 d2 test %rdx,%rdx 0.00 : 83d4: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 83d8: e9 31 fb ff ff jmpq 7f0e <_dl_map_object+0x38e> 0.00 : 83dd: 48 8d 3d 94 31 01 00 lea 0x13194(%rip),%rdi # 1b578 <__PRETTY_FUNCTION__.3644+0x1207> 0.00 : 83e4: 4c 89 ea mov %r13,%rdx 0.00 : 83e7: 48 89 ee mov %rbp,%rsi 0.00 : 83ea: 31 c0 xor %eax,%eax 0.00 : 83ec: e8 5f 6f 00 00 callq f350 <_dl_debug_printf> 0.00 : 83f1: e9 29 fa ff ff jmpq 7e1f <_dl_map_object+0x29f> 0.00 : 83f6: 8b 35 54 6a 21 00 mov 0x216a54(%rip),%esi # 21ee50 <__libc_enable_secure> 0.00 : 83fc: 85 f6 test %esi,%esi 0.00 : 83fe: 0f 85 51 fc ff ff jne 8055 <_dl_map_object+0x4d5> 0.00 : 8404: e9 e5 fa ff ff jmpq 7eee <_dl_map_object+0x36e> 0.00 : 8409: 8b 3d 75 7d 21 00 mov 0x217d75(%rip),%edi # 220184 0.00 : 840f: 48 8d 0d 8a 31 01 00 lea 0x1318a(%rip),%rcx # 1b5a0 <__PRETTY_FUNCTION__.3644+0x122f> 0.00 : 8416: 31 d2 xor %edx,%edx 0.00 : 8418: 48 89 ee mov %rbp,%rsi 0.00 : 841b: e8 e0 5a 00 00 callq df00 <_dl_signal_error> 0.00 : 8420: 4c 89 e7 mov %r12,%rdi 0.00 : 8423: e8 c8 86 ff ff callq af0 0.00 : 8428: 48 8d 0d 31 2e 01 00 lea 0x12e31(%rip),%rcx # 1b260 <__PRETTY_FUNCTION__.3644+0xeef> 0.00 : 842f: 31 d2 xor %edx,%edx 0.00 : 8431: 48 89 ee mov %rbp,%rsi 0.00 : 8434: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 8439: e8 c2 5a 00 00 callq df00 <_dl_signal_error> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000f8e0 <_dl_check_map_versions>: 0.00 : f8e0: 55 push %rbp 0.00 : f8e1: 48 89 e5 mov %rsp,%rbp 0.00 : f8e4: 41 57 push %r15 0.00 : f8e6: 41 56 push %r14 0.00 : f8e8: 49 89 fe mov %rdi,%r14 0.00 : f8eb: 41 55 push %r13 0.00 : f8ed: 41 54 push %r12 0.00 : f8ef: 53 push %rbx 0.00 : f8f0: 48 83 ec 68 sub $0x68,%rsp 0.00 : f8f4: 89 75 88 mov %esi,-0x78(%rbp) 0.00 : f8f7: 89 55 84 mov %edx,-0x7c(%rbp) 0.00 : f8fa: 48 8b 47 68 mov 0x68(%rdi),%rax 0.00 : f8fe: 48 85 c0 test %rax,%rax 0.00 : f901: 0f 84 75 03 00 00 je fc7c <_dl_check_map_versions+0x39c> 0.00 : f907: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : f90b: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : f90f: 48 8b 87 58 01 00 00 mov 0x158(%rdi),%rax 0.00 : f916: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : f91a: 48 8b 97 68 01 00 00 mov 0x168(%rdi),%rdx 0.00 : f921: 48 85 c0 test %rax,%rax 0.00 : f924: 48 89 55 a0 mov %rdx,-0x60(%rbp) 0.00 : f928: 0f 84 82 01 00 00 je fab0 <_dl_check_map_versions+0x1d0> 0.00 : f92e: 48 8b 40 08 mov 0x8(%rax),%rax 14.29 : f932: 48 8b 17 mov (%rdi),%rdx 0.00 : f935: 45 31 ed xor %r13d,%r13d 0.00 : f938: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : f93f: 48 01 d0 add %rdx,%rax 0.00 : f942: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : f946: 66 83 38 01 cmpw $0x1,(%rax) 0.00 : f94a: 0f 85 4c 03 00 00 jne fc9c <_dl_check_map_versions+0x3bc> 0.00 : f950: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : f954: 4c 8b 7d 90 mov -0x70(%rbp),%r15 0.00 : f958: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : f95b: 48 8d 15 fe f6 20 00 lea 0x20f6fe(%rip),%rdx # 21f060 <_rtld_global> 0.00 : f962: 49 01 c7 add %rax,%r15 0.00 : f965: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : f969: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : f96d: 48 c1 e0 04 shl $0x4,%rax 0.00 : f971: 4c 8b 24 02 mov (%rdx,%rax,1),%r12 0.00 : f975: 4d 85 e4 test %r12,%r12 0.00 : f978: 75 14 jne f98e <_dl_check_map_versions+0xae> 0.00 : f97a: e9 c1 00 00 00 jmpq fa40 <_dl_check_map_versions+0x160> 0.00 : f97f: 90 nop 0.00 : f980: 4d 8b 64 24 18 mov 0x18(%r12),%r12 0.00 : f985: 4d 85 e4 test %r12,%r12 0.00 : f988: 0f 84 b2 00 00 00 je fa40 <_dl_check_map_versions+0x160> 0.00 : f98e: 4c 89 e6 mov %r12,%rsi 0.00 : f991: 4c 89 ff mov %r15,%rdi 0.00 : f994: e8 e7 f1 ff ff callq eb80 <_dl_name_match_p> 0.00 : f999: 85 c0 test %eax,%eax 0.00 : f99b: 74 e3 je f980 <_dl_check_map_versions+0xa0> 0.00 : f99d: 44 8b 7d 84 mov -0x7c(%rbp),%r15d 0.00 : f9a1: 45 85 ff test %r15d,%r15d 0.00 : f9a4: 0f 85 de 02 00 00 jne fc88 <_dl_check_map_versions+0x3a8> 0.00 : f9aa: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : f9ae: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : f9b1: 48 89 d3 mov %rdx,%rbx 0.00 : f9b4: 48 01 c3 add %rax,%rbx 0.00 : f9b7: eb 0c jmp f9c5 <_dl_check_map_versions+0xe5> 0.00 : f9b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : f9c0: 89 c0 mov %eax,%eax 0.00 : f9c2: 48 01 c3 add %rax,%rbx 0.00 : f9c5: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : f9c9: 44 0f b7 4b 04 movzwl 0x4(%rbx),%r9d 14.29 : f9ce: 4d 8b 44 24 28 mov 0x28(%r12),%r8 28.57 : f9d3: 8b 4b 08 mov 0x8(%rbx),%ecx 14.29 : f9d6: 8b 13 mov (%rbx),%edx 0.00 : f9d8: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : f9dc: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : f9df: 75 0a jne f9eb <_dl_check_map_versions+0x10b> 0.00 : f9e1: 48 8b 05 20 f2 20 00 mov 0x20f220(%rip),%rax # 21ec08 <_dl_argv> 0.00 : f9e8: 48 8b 38 mov (%rax),%rdi 0.00 : f9eb: 89 c9 mov %ecx,%ecx 0.00 : f9ed: 48 03 4d 90 add -0x70(%rbp),%rcx 0.00 : f9f1: 44 89 c8 mov %r9d,%eax 0.00 : f9f4: 44 8b 4d 88 mov -0x78(%rbp),%r9d 0.00 : f9f8: 83 e0 02 and $0x2,%eax 0.00 : f9fb: 89 04 24 mov %eax,(%rsp) 0.00 : f9fe: e8 bd fa ff ff callq f4c0 0.00 : fa03: 09 45 8c or %eax,-0x74(%rbp) 0.00 : fa06: 0f b7 43 06 movzwl 0x6(%rbx),%eax 0.00 : fa0a: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : fa0f: 41 39 c5 cmp %eax,%r13d 0.00 : fa12: 44 0f 42 e8 cmovb %eax,%r13d 0.00 : fa16: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : fa19: 85 c0 test %eax,%eax 0.00 : fa1b: 75 a3 jne f9c0 <_dl_check_map_versions+0xe0> 0.00 : fa1d: 48 8b 55 a8 mov -0x58(%rbp),%rdx 14.29 : fa21: 8b 42 0c mov 0xc(%rdx),%eax 0.00 : fa24: 85 c0 test %eax,%eax 0.00 : fa26: 0f 84 8e 00 00 00 je faba <_dl_check_map_versions+0x1da> 0.00 : fa2c: 89 c0 mov %eax,%eax 0.00 : fa2e: 48 01 c2 add %rax,%rdx 0.00 : fa31: 48 89 55 a8 mov %rdx,-0x58(%rbp) 0.00 : fa35: e9 16 ff ff ff jmpq f950 <_dl_check_map_versions+0x70> 0.00 : fa3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : fa40: 41 8b 86 c0 02 00 00 mov 0x2c0(%r14),%eax 0.00 : fa47: 85 c0 test %eax,%eax 0.00 : fa49: 74 46 je fa91 <_dl_check_map_versions+0x1b1> 0.00 : fa4b: 31 db xor %ebx,%ebx 0.00 : fa4d: eb 0d jmp fa5c <_dl_check_map_versions+0x17c> 0.00 : fa4f: 90 nop 0.00 : fa50: 83 c3 01 add $0x1,%ebx 0.00 : fa53: 41 3b 9e c0 02 00 00 cmp 0x2c0(%r14),%ebx 0.00 : fa5a: 73 35 jae fa91 <_dl_check_map_versions+0x1b1> 0.00 : fa5c: 49 8b 86 b8 02 00 00 mov 0x2b8(%r14),%rax 0.00 : fa63: 89 da mov %ebx,%edx 0.00 : fa65: 4c 89 ff mov %r15,%rdi 0.00 : fa68: 4c 8d 24 d5 00 00 00 lea 0x0(,%rdx,8),%r12 0.00 : fa6f: 00 0.00 : fa70: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : fa74: e8 07 f1 ff ff callq eb80 <_dl_name_match_p> 0.00 : fa79: 85 c0 test %eax,%eax 0.00 : fa7b: 74 d3 je fa50 <_dl_check_map_versions+0x170> 0.00 : fa7d: 49 8b 86 b8 02 00 00 mov 0x2b8(%r14),%rax 0.00 : fa84: 4e 8b 24 20 mov (%rax,%r12,1),%r12 0.00 : fa88: 4d 85 e4 test %r12,%r12 0.00 : fa8b: 0f 85 0c ff ff ff jne f99d <_dl_check_map_versions+0xbd> 0.00 : fa91: 48 8d 0d 98 cd 00 00 lea 0xcd98(%rip),%rcx # 1c830 <__PRETTY_FUNCTION__.10520> 0.00 : fa98: 48 8d 35 dd a3 00 00 lea 0xa3dd(%rip),%rsi # 19e7c <__PRETTY_FUNCTION__.10195+0x3f> 0.00 : fa9f: 48 8d 3d 1c a4 00 00 lea 0xa41c(%rip),%rdi # 19ec2 <__PRETTY_FUNCTION__.10195+0x85> 0.00 : faa6: ba e6 00 00 00 mov $0xe6,%edx 0.00 : faab: e8 c0 52 00 00 callq 14d70 <__GI___assert_fail> 0.00 : fab0: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : fab7: 45 31 ed xor %r13d,%r13d 0.00 : faba: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : fabf: 74 2b je faec <_dl_check_map_versions+0x20c> 14.29 : fac1: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : fac5: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : fac9: 49 03 16 add (%r14),%rdx 0.00 : facc: eb 07 jmp fad5 <_dl_check_map_versions+0x1f5> 0.00 : face: 66 90 xchg %ax,%ax 0.00 : fad0: 89 c0 mov %eax,%eax 0.00 : fad2: 48 01 c2 add %rax,%rdx 0.00 : fad5: 0f b7 42 04 movzwl 0x4(%rdx),%eax 0.00 : fad9: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : fade: 41 39 c5 cmp %eax,%r13d 0.00 : fae1: 44 0f 42 e8 cmovb %eax,%r13d 0.00 : fae5: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : fae8: 85 c0 test %eax,%eax 0.00 : faea: 75 e4 jne fad0 <_dl_check_map_versions+0x1f0> 0.00 : faec: 45 85 ed test %r13d,%r13d 0.00 : faef: 75 12 jne fb03 <_dl_check_map_versions+0x223> 0.00 : faf1: 8b 45 8c mov -0x74(%rbp),%eax 0.00 : faf4: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : faf8: 5b pop %rbx 0.00 : faf9: 41 5c pop %r12 0.00 : fafb: 41 5d pop %r13 0.00 : fafd: 41 5e pop %r14 0.00 : faff: 41 5f pop %r15 0.00 : fb01: c9 leaveq 0.00 : fb02: c3 retq 0.00 : fb03: 41 8d 5d 01 lea 0x1(%r13),%ebx 0.00 : fb07: be 18 00 00 00 mov $0x18,%esi 0.00 : fb0c: 89 df mov %ebx,%edi 0.00 : fb0e: e8 bd 0f ff ff callq ad0 0.00 : fb13: 48 85 c0 test %rax,%rax 0.00 : fb16: 49 89 86 e0 02 00 00 mov %rax,0x2e0(%r14) 0.00 : fb1d: 48 8d 0d 54 c4 00 00 lea 0xc454(%rip),%rcx # 1bf78 <__PRETTY_FUNCTION__.3644+0x1c07> 0.00 : fb24: bf 0c 00 00 00 mov $0xc,%edi 0.00 : fb29: 0f 84 26 02 00 00 je fd55 <_dl_check_map_versions+0x475> 0.00 : fb2f: 49 8b 86 c8 01 00 00 mov 0x1c8(%r14),%rax 0.00 : fb36: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp) 0.00 : fb3b: 41 89 9e e8 02 00 00 mov %ebx,0x2e8(%r14) 0.00 : fb42: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : fb46: 49 89 86 30 03 00 00 mov %rax,0x330(%r14) 0.00 : fb4d: 0f 84 a6 00 00 00 je fbf9 <_dl_check_map_versions+0x319> 0.00 : fb53: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : fb57: 4c 8b 42 08 mov 0x8(%rdx),%r8 0.00 : fb5b: 4d 03 06 add (%r14),%r8 0.00 : fb5e: 66 90 xchg %ax,%ax 0.00 : fb60: 41 8b 40 08 mov 0x8(%r8),%eax 0.00 : fb64: 49 8d 3c 00 lea (%r8,%rax,1),%rdi 0.00 : fb68: eb 0b jmp fb75 <_dl_check_map_versions+0x295> 0.00 : fb6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : fb70: 89 c0 mov %eax,%eax 0.00 : fb72: 48 01 c7 add %rax,%rdi 0.00 : fb75: 0f b7 57 06 movzwl 0x6(%rdi),%edx 0.00 : fb79: 66 81 e2 ff 7f and $0x7fff,%dx 0.00 : fb7e: 0f b7 c2 movzwl %dx,%eax 0.00 : fb81: 41 3b 86 e8 02 00 00 cmp 0x2e8(%r14),%eax 0.00 : fb88: 73 56 jae fbe0 <_dl_check_map_versions+0x300> 0.00 : fb8a: 0f b7 ca movzwl %dx,%ecx 0.00 : fb8d: 8b 07 mov (%rdi),%eax 0.00 : fb8f: 49 8b 96 e0 02 00 00 mov 0x2e0(%r14),%rdx 0.00 : fb96: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : fb9a: 48 8d 34 cd 00 00 00 lea 0x0(,%rcx,8),%rsi 0.00 : fba1: 00 0.00 : fba2: 89 44 32 08 mov %eax,0x8(%rdx,%rsi,1) 0.00 : fba6: 0f b7 47 06 movzwl 0x6(%rdi),%eax 0.00 : fbaa: 49 8b 96 e0 02 00 00 mov 0x2e0(%r14),%rdx 0.00 : fbb1: 25 00 80 00 00 and $0x8000,%eax 0.00 : fbb6: 89 44 32 0c mov %eax,0xc(%rdx,%rsi,1) 0.00 : fbba: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : fbbd: 48 03 45 90 add -0x70(%rbp),%rax 0.00 : fbc1: 49 8b 96 e0 02 00 00 mov 0x2e0(%r14),%rdx 0.00 : fbc8: 48 89 04 ca mov %rax,(%rdx,%rcx,8) 0.00 : fbcc: 41 8b 40 04 mov 0x4(%r8),%eax 0.00 : fbd0: 48 03 45 90 add -0x70(%rbp),%rax 0.00 : fbd4: 49 8b 96 e0 02 00 00 mov 0x2e0(%r14),%rdx 0.00 : fbdb: 48 89 44 32 10 mov %rax,0x10(%rdx,%rsi,1) 0.00 : fbe0: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : fbe3: 85 c0 test %eax,%eax 0.00 : fbe5: 75 89 jne fb70 <_dl_check_map_versions+0x290> 0.00 : fbe7: 41 8b 40 0c mov 0xc(%r8),%eax 0.00 : fbeb: 85 c0 test %eax,%eax 0.00 : fbed: 74 0a je fbf9 <_dl_check_map_versions+0x319> 0.00 : fbef: 89 c0 mov %eax,%eax 0.00 : fbf1: 49 01 c0 add %rax,%r8 0.00 : fbf4: e9 67 ff ff ff jmpq fb60 <_dl_check_map_versions+0x280> 0.00 : fbf9: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : fbfe: 0f 84 ed fe ff ff je faf1 <_dl_check_map_versions+0x211> 0.00 : fc04: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : fc08: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : fc0c: 49 03 3e add (%r14),%rdi 0.00 : fc0f: eb 0c jmp fc1d <_dl_check_map_versions+0x33d> 0.00 : fc11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : fc18: 89 c0 mov %eax,%eax 0.00 : fc1a: 48 01 c7 add %rax,%rdi 0.00 : fc1d: f6 47 02 01 testb $0x1,0x2(%rdi) 0.00 : fc21: 44 8b 47 0c mov 0xc(%rdi),%r8d 0.00 : fc25: 75 49 jne fc70 <_dl_check_map_versions+0x390> 0.00 : fc27: 0f b7 57 04 movzwl 0x4(%rdi),%edx 0.00 : fc2b: 49 8b 8e e0 02 00 00 mov 0x2e0(%r14),%rcx 0.00 : fc32: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : fc35: 81 e2 ff 7f 00 00 and $0x7fff,%edx 0.00 : fc3b: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : fc3f: 48 8d 34 d5 00 00 00 lea 0x0(,%rdx,8),%rsi 0.00 : fc46: 00 0.00 : fc47: 89 44 31 08 mov %eax,0x8(%rcx,%rsi,1) 0.00 : fc4b: 44 89 c0 mov %r8d,%eax 0.00 : fc4e: 49 8b 8e e0 02 00 00 mov 0x2e0(%r14),%rcx 0.00 : fc55: 8b 04 07 mov (%rdi,%rax,1),%eax 0.00 : fc58: 48 03 45 90 add -0x70(%rbp),%rax 0.00 : fc5c: 48 89 04 d1 mov %rax,(%rcx,%rdx,8) 0.00 : fc60: 49 8b 86 e0 02 00 00 mov 0x2e0(%r14),%rax 0.00 : fc67: 48 c7 44 30 10 00 00 movq $0x0,0x10(%rax,%rsi,1) 0.00 : fc6e: 00 00 0.00 : fc70: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : fc73: 85 c0 test %eax,%eax 0.00 : fc75: 75 a1 jne fc18 <_dl_check_map_versions+0x338> 0.00 : fc77: e9 75 fe ff ff jmpq faf1 <_dl_check_map_versions+0x211> 0.00 : fc7c: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : fc83: e9 69 fe ff ff jmpq faf1 <_dl_check_map_versions+0x211> 0.00 : fc88: 41 f6 84 24 15 03 00 testb $0x2,0x315(%r12) 0.00 : fc8f: 00 02 0.00 : fc91: 0f 84 13 fd ff ff je f9aa <_dl_check_map_versions+0xca> 0.00 : fc97: e9 81 fd ff ff jmpq fa1d <_dl_check_map_versions+0x13d> 0.00 : fc9c: c6 45 c3 00 movb $0x0,-0x3d(%rbp) 0.00 : fca0: 0f b7 08 movzwl (%rax),%ecx 0.00 : fca3: 4c 8d 65 c3 lea -0x3d(%rbp),%r12 0.00 : fca7: 48 8d 35 d2 93 00 00 lea 0x93d2(%rip),%rsi # 19080 <_itoa_lower_digits_internal> 0.00 : fcae: 48 bf cd cc cc cc cc movabs $0xcccccccccccccccd,%rdi 0.00 : fcb5: cc cc cc 0.00 : fcb8: 48 89 c8 mov %rcx,%rax 0.00 : fcbb: 49 83 ec 01 sub $0x1,%r12 0.00 : fcbf: 48 f7 e7 mul %rdi 0.00 : fcc2: 48 c1 ea 03 shr $0x3,%rdx 0.00 : fcc6: 48 8d 04 92 lea (%rdx,%rdx,4),%rax 0.00 : fcca: 48 01 c0 add %rax,%rax 0.00 : fccd: 48 29 c1 sub %rax,%rcx 0.00 : fcd0: 48 85 d2 test %rdx,%rdx 0.00 : fcd3: 0f b6 04 0e movzbl (%rsi,%rcx,1),%eax 0.00 : fcd7: 48 89 d1 mov %rdx,%rcx 0.00 : fcda: 41 88 04 24 mov %al,(%r12) 0.00 : fcde: 75 d8 jne fcb8 <_dl_check_map_versions+0x3d8> 0.00 : fce0: 4c 89 e7 mov %r12,%rdi 0.00 : fce3: e8 88 6a 00 00 callq 16770 <__GI_strlen> 0.00 : fce8: 48 83 c0 46 add $0x46,%rax 0.00 : fcec: 48 bf 75 6e 73 75 70 movabs $0x726f707075736e75,%rdi 0.00 : fcf3: 70 6f 72 0.00 : fcf6: 48 be 74 65 64 20 76 movabs $0x7372657620646574,%rsi 0.00 : fcfd: 65 72 73 0.00 : fd00: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : fd04: 48 29 c4 sub %rax,%rsp 0.00 : fd07: 48 8d 5c 24 17 lea 0x17(%rsp),%rbx 0.00 : fd0c: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : fd10: 48 89 3b mov %rdi,(%rbx) 0.00 : fd13: 48 8d 7b 14 lea 0x14(%rbx),%rdi 0.00 : fd17: 48 89 73 08 mov %rsi,0x8(%rbx) 0.00 : fd1b: c7 43 10 69 6f 6e 20 movl $0x206e6f69,0x10(%rbx) 0.00 : fd22: c6 43 14 00 movb $0x0,0x14(%rbx) 0.00 : fd26: 4c 89 e6 mov %r12,%rsi 0.00 : fd29: e8 e2 74 00 00 callq 17210 <__stpcpy> 0.00 : fd2e: 48 b9 20 6f 66 20 56 movabs $0x6e72655620666f20,%rcx 0.00 : fd35: 65 72 6e 0.00 : fd38: 48 ba 65 65 64 20 72 movabs $0x6f63657220646565,%rdx 0.00 : fd3f: 65 63 6f 0.00 : fd42: c7 40 10 72 64 0a 00 movl $0xa6472,0x10(%rax) 0.00 : fd49: 48 89 08 mov %rcx,(%rax) 0.00 : fd4c: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : fd50: 48 89 d9 mov %rbx,%rcx 0.00 : fd53: 31 ff xor %edi,%edi 0.00 : fd55: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : fd59: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : fd5c: 75 0a jne fd68 <_dl_check_map_versions+0x488> 0.00 : fd5e: 48 8b 05 a3 ee 20 00 mov 0x20eea3(%rip),%rax # 21ec08 <_dl_argv> 0.00 : fd65: 48 8b 30 mov (%rax),%rsi 0.00 : fd68: 31 d2 xor %edx,%edx 0.00 : fd6a: e8 91 e1 ff ff callq df00 <_dl_signal_error> Sorted summary for file /bin/bash ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046a7e0 : 0.00 : 46a7e0: 41 57 push %r15 25.00 : 46a7e2: 49 89 f7 mov %rsi,%r15 0.00 : 46a7e5: 41 56 push %r14 25.00 : 46a7e7: 49 89 fe mov %rdi,%r14 0.00 : 46a7ea: 41 55 push %r13 0.00 : 46a7ec: 41 89 d5 mov %edx,%r13d 0.00 : 46a7ef: 41 54 push %r12 0.00 : 46a7f1: 55 push %rbp 0.00 : 46a7f2: 53 push %rbx 0.00 : 46a7f3: 48 83 ec 08 sub $0x8,%rsp 0.00 : 46a7f7: 48 85 ff test %rdi,%rdi 0.00 : 46a7fa: 74 2c je 46a828 0.00 : 46a7fc: 0f b6 07 movzbl (%rdi),%eax 0.00 : 46a7ff: 84 c0 test %al,%al 0.00 : 46a801: 74 25 je 46a828 0.00 : 46a803: f6 c2 01 test $0x1,%dl 0.00 : 46a806: 74 08 je 46a810 0.00 : 46a808: 3c 7e cmp $0x7e,%al 0.00 : 46a80a: 0f 84 27 01 00 00 je 46a937 0.00 : 46a810: 4c 89 f5 mov %r14,%rbp 25.00 : 46a813: 48 89 ef mov %rbp,%rdi 0.00 : 46a816: e8 d5 bb fa ff callq 4163f0 0.00 : 46a81b: 44 8d 60 02 lea 0x2(%rax),%r12d 0.00 : 46a81f: eb 2b jmp 46a84c 0.00 : 46a821: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 46a828: 41 f6 c5 02 test $0x2,%r13b 0.00 : 46a82c: 0f 85 be 00 00 00 jne 46a8f0 0.00 : 46a832: bf 02 00 00 00 mov $0x2,%edi 0.00 : 46a837: 41 bc 03 00 00 00 mov $0x3,%r12d 0.00 : 46a83d: e8 7e da fe ff callq 4582c0 0.00 : 46a842: 48 89 c5 mov %rax,%rbp 0.00 : 46a845: c6 00 2e movb $0x2e,(%rax) 0.00 : 46a848: c6 40 01 00 movb $0x0,0x1(%rax) 0.00 : 46a84c: 4c 89 ff mov %r15,%rdi 0.00 : 46a84f: 4c 89 fb mov %r15,%rbx 0.00 : 46a852: e8 99 bb fa ff callq 4163f0 0.00 : 46a857: 41 83 e5 04 and $0x4,%r13d 0.00 : 46a85b: 74 0a je 46a867 0.00 : 46a85d: 41 80 3f 2e cmpb $0x2e,(%r15) 0.00 : 46a861: 0f 84 b1 00 00 00 je 46a918 0.00 : 46a867: 42 8d 3c 20 lea (%rax,%r12,1),%edi 0.00 : 46a86b: 48 63 ff movslq %edi,%rdi 0.00 : 46a86e: e8 4d da fe ff callq 4582c0 0.00 : 46a873: 49 89 c4 mov %rax,%r12 0.00 : 46a876: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 46a87a: 48 89 ea mov %rbp,%rdx 0.00 : 46a87d: 4c 89 e1 mov %r12,%rcx 0.00 : 46a880: 84 c0 test %al,%al 0.00 : 46a882: 0f 84 a7 00 00 00 je 46a92f 0.00 : 46a888: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46a88f: 00 0.00 : 46a890: 48 83 c2 01 add $0x1,%rdx 0.00 : 46a894: 88 01 mov %al,(%rcx) 0.00 : 46a896: 48 83 c1 01 add $0x1,%rcx 0.00 : 46a89a: 0f b6 02 movzbl (%rdx),%eax 0.00 : 46a89d: 84 c0 test %al,%al 0.00 : 46a89f: 75 ef jne 46a890 0.00 : 46a8a1: 48 89 c8 mov %rcx,%rax 0.00 : 46a8a4: 80 7a ff 2f cmpb $0x2f,-0x1(%rdx) 0.00 : 46a8a8: 74 07 je 46a8b1 0.00 : 46a8aa: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 46a8ae: c6 00 2f movb $0x2f,(%rax) 0.00 : 46a8b1: 31 d2 xor %edx,%edx 0.00 : 46a8b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46a8b8: 0f b6 04 13 movzbl (%rbx,%rdx,1),%eax 0.00 : 46a8bc: 88 04 11 mov %al,(%rcx,%rdx,1) 0.00 : 46a8bf: 48 83 c2 01 add $0x1,%rdx 0.00 : 46a8c3: 84 c0 test %al,%al 0.00 : 46a8c5: 75 f1 jne 46a8b8 0.00 : 46a8c7: 4c 39 f5 cmp %r14,%rbp 0.00 : 46a8ca: 74 08 je 46a8d4 0.00 : 46a8cc: 48 89 ef mov %rbp,%rdi 0.00 : 46a8cf: e8 ec ba fa ff callq 4163c0 0.00 : 46a8d4: 48 83 c4 08 add $0x8,%rsp 0.00 : 46a8d8: 4c 89 e0 mov %r12,%rax 0.00 : 46a8db: 5b pop %rbx 25.00 : 46a8dc: 5d pop %rbp 0.00 : 46a8dd: 41 5c pop %r12 0.00 : 46a8df: 41 5d pop %r13 0.00 : 46a8e1: 41 5e pop %r14 0.00 : 46a8e3: 41 5f pop %r15 0.00 : 46a8e5: c3 retq 0.00 : 46a8e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46a8ed: 00 00 00 0.00 : 46a8f0: bf 54 b9 47 00 mov $0x47b954,%edi 0.00 : 46a8f5: e8 f6 f4 fe ff callq 459df0 0.00 : 46a8fa: 48 85 c0 test %rax,%rax 0.00 : 46a8fd: 48 89 c5 mov %rax,%rbp 0.00 : 46a900: 74 44 je 46a946 0.00 : 46a902: 48 89 ef mov %rbp,%rdi 0.00 : 46a905: e8 e6 ba fa ff callq 4163f0 0.00 : 46a90a: 44 8d 60 02 lea 0x2(%rax),%r12d 0.00 : 46a90e: e9 39 ff ff ff jmpq 46a84c 0.00 : 46a913: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46a918: 41 80 7f 01 2f cmpb $0x2f,0x1(%r15) 0.00 : 46a91d: 0f 85 44 ff ff ff jne 46a867 0.00 : 46a923: 48 83 c3 02 add $0x2,%rbx 0.00 : 46a927: 83 e8 02 sub $0x2,%eax 0.00 : 46a92a: e9 38 ff ff ff jmpq 46a867 0.00 : 46a92f: 4c 89 e0 mov %r12,%rax 0.00 : 46a932: e9 6d ff ff ff jmpq 46a8a4 0.00 : 46a937: 31 f6 xor %esi,%esi 0.00 : 46a939: e8 92 73 fb ff callq 421cd0 0.00 : 46a93e: 48 89 c5 mov %rax,%rbp 0.00 : 46a941: e9 cd fe ff ff jmpq 46a813 0.00 : 46a946: bf 37 42 47 00 mov $0x474237,%edi 0.00 : 46a94b: e8 90 39 fc ff callq 42e2e0 0.00 : 46a950: 48 85 c0 test %rax,%rax 0.00 : 46a953: 48 89 c3 mov %rax,%rbx 0.00 : 46a956: 0f 84 d6 fe ff ff je 46a832 0.00 : 46a95c: 48 89 c7 mov %rax,%rdi 0.00 : 46a95f: e8 8c ba fa ff callq 4163f0 0.00 : 46a964: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 46a968: e8 53 d9 fe ff callq 4582c0 0.00 : 46a96d: 48 89 de mov %rbx,%rsi 0.00 : 46a970: 48 89 c7 mov %rax,%rdi 0.00 : 46a973: e8 f8 bf fa ff callq 416970 0.00 : 46a978: 48 85 c0 test %rax,%rax 0.00 : 46a97b: 48 89 c5 mov %rax,%rbp 0.00 : 46a97e: 0f 84 ae fe ff ff je 46a832 0.00 : 46a984: e9 79 ff ff ff jmpq 46a902 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000030e0 : 80.00 : 30e0: 48 83 ec 28 sub $0x28,%rsp 0.00 : 3114: 48 89 5c movslq -0xa(%rcx),%eax 0.00 : 3117: 24 08 48 rex.RB cmp $0x2,%al 0.00 : 311a: 89 6c je 3127 0.00 : 311c: 24 10 48 89 fd 4c mov 0x230(%rbp),%eax 0.00 : 3122: 89 64 24 sub $0x1,%eax 0.00 : 3125: 18 4c je 3190 0.00 : 3127: 89 6c 24 20 mov 0x18(%rbp),%rax 0.00 : 312b: 4c 8d a7 20 ff ff ff mov 0x338(%rax),%rax 0.00 : 3132: 48 8b 87 78 mov 0x68(%rax),%rax 0.00 : 3136: ff ff ff 49 testb $0x20,0x5c(%rax) 20.00 : 313a: 89 f5 je 3156 0.00 : 313c: 49 8d 5c 24 58 a8 08 testb $0x10,-0xa3(%rbp) 0.00 : 3143: 75 63 je 3156 0.00 : 3145: 41 f6 45 3c 02 74 0b mov 0xa0(%r13),%rdi 0.00 : 314c: 8b 85 30 test %rdi,%rdi 0.00 : 314f: 02 00 je 3156 0.00 : 3151: 00 83 e8 01 74 callq 3156 0.00 : 3156: 69 48 xor %eax,%eax 0.00 : 3158: 8b 45 18 48 8b mov 0x8(%rsp),%rbx 0.00 : 315d: 80 38 03 00 00 mov 0x10(%rsp),%rbp 0.00 : 3162: 48 8b 40 68 f6 mov 0x18(%rsp),%r12 0.00 : 3167: 40 5c 20 74 1a mov 0x20(%rsp),%r13 0.00 : 316c: f6 85 5d ff add $0x28,%rsp 0.00 : 3170: ff retq 0.00 : 3171: ff 10 74 11 49 8b bd nopl 0x0(%rax) 0.00 : 3178: a0 00 00 00 48 85 ff mov 0x148(%rdi),%rdi 0.00 : 317f: 74 05 e8 00 00 callq 3184 0.00 : 3184: 00 00 31 c0 48 8b 5c lock andb $0xf7,-0x88(%rbp) 0.00 : 318b: 24 0.00 : 318c: 08 48 jmp 3115 0.00 : 318e: 8b 6c xchg %ax,%ax 0.00 : 3190: 24 10 4c 8b 64 24 18 lea 0xb8(%r12),%rbx 0.00 : 3197: 4c 0.00 : 3198: 8b 6c 24 mov %rbx,%rdi 0.00 : 319b: 20 48 83 c4 28 callq 31a0 0.00 : 31a0: c3 0f 1f mov %rbp,%rdi 0.00 : 31a3: 80 00 00 00 00 callq 31a8 0.00 : 31a8: 48 8b bf mov %rbx,%rdi 0.00 : 31ab: 48 01 00 00 e8 callq 31b0 0.00 : 31b0: 00 00 00 00 f0 jmpq 3127 : 31b5: 80 a5 78 ff ff ff f7 nopw %cs:0x0(%rax,%rax,1) : 31bc: eb 87 66 : 31bf: 90 nop : 31c0: 49 8d 9c 24 sub $0x28,%rsp : 31c4: b8 00 00 mov %rdx,%r8 : 31c7: 00 48 89 df mov %rbx,(%rsp) : 31cb: e8 00 00 00 00 mov %r13,0x18(%rsp) : 31d0: 48 89 xor %ebx,%ebx : 31d2: ef e8 00 00 00 mov %rbp,0x8(%rsp) : 31d7: 00 48 89 df e8 mov %r12,0x10(%rsp) : 31dc: 00 00 00 mov %ecx,%r13d : 31df: 00 e9 72 ff ff mov %r14,0x20(%rsp) Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000aa70 <_dl_new_object>: 0.00 : aa70: 41 57 push %r15 0.00 : aa72: 4d 89 cf mov %r9,%r15 0.00 : aa75: 41 56 push %r14 0.00 : aa77: 41 55 push %r13 0.00 : aa79: 49 89 cd mov %rcx,%r13 0.00 : aa7c: 41 54 push %r12 0.00 : aa7e: 55 push %rbp 0.00 : aa7f: 53 push %rbx 0.00 : aa80: 48 83 ec 28 sub $0x28,%rsp 0.00 : aa84: 48 89 7c 24 18 mov %rdi,0x18(%rsp) 0.00 : aa89: 48 89 74 24 10 mov %rsi,0x10(%rsp) 0.00 : aa8e: 48 89 f7 mov %rsi,%rdi 0.00 : aa91: 89 54 24 0c mov %edx,0xc(%rsp) 0.00 : aa95: 44 89 44 24 08 mov %r8d,0x8(%rsp) 0.00 : aa9a: e8 d1 bc 00 00 callq 16770 <__GI_strlen> 0.00 : aa9f: 44 8b 35 92 42 21 00 mov 0x214292(%rip),%r14d # 21ed38 <_rtld_global_ro+0x118> 0.00 : aaa6: 48 83 c0 01 add $0x1,%rax 0.00 : aaaa: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : aaaf: 45 85 f6 test %r14d,%r14d 0.00 : aab2: 0f 84 10 02 00 00 je acc8 <_dl_new_object+0x258> 0.00 : aab8: 44 89 f3 mov %r14d,%ebx 0.00 : aabb: 48 c1 e3 04 shl $0x4,%rbx 0.00 : aabf: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : aac4: be 01 00 00 00 mov $0x1,%esi 0.00 : aac9: 48 8d bc 03 90 04 00 lea 0x490(%rbx,%rax,1),%rdi 0.00 : aad0: 00 0.00 : aad1: e8 fa 5f ff ff callq ad0 0.00 : aad6: 48 85 c0 test %rax,%rax 0.00 : aad9: 48 89 c5 mov %rax,%rbp 0.00 : aadc: 0f 84 cd 01 00 00 je acaf <_dl_new_object+0x23f> 0.00 : aae2: 48 8d 9c 18 70 04 00 lea 0x470(%rax,%rbx,1),%rbx 0.00 : aae9: 00 25.00 : aaea: 48 89 45 28 mov %rax,0x28(%rbp) 0.00 : aaee: 4c 8d 63 08 lea 0x8(%rbx),%r12 0.00 : aaf2: 48 89 98 c8 02 00 00 mov %rbx,0x2c8(%rax) 0.00 : aaf9: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.00 : aafd: 4c 89 60 38 mov %r12,0x38(%rax) 0.00 : ab01: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : ab06: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 0.00 : ab0b: e8 e0 c7 00 00 callq 172f0 0.00 : ab10: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : ab14: 41 c7 44 24 10 01 00 movl $0x1,0x10(%r12) 0.00 : ab1b: 00 00 0.00 : ab1d: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : ab22: 0f b6 54 24 0c movzbl 0xc(%rsp),%edx 0.00 : ab27: 48 89 45 08 mov %rax,0x8(%rbp) 0.00 : ab2b: 0f b6 85 14 03 00 00 movzbl 0x314(%rbp),%eax 0.00 : ab32: 83 e2 03 and $0x3,%edx 0.00 : ab35: 83 e0 fc and $0xfffffffc,%eax 25.00 : ab38: 09 d0 or %edx,%eax 0.00 : ab3a: f6 05 e0 40 21 00 01 testb $0x1,0x2140e0(%rip) # 21ec21 <_rtld_global_ro+0x1> 0.00 : ab41: 88 85 14 03 00 00 mov %al,0x314(%rbp) 0.00 : ab47: 0f 84 bb 01 00 00 je ad08 <_dl_new_object+0x298> 0.00 : ab4d: 45 85 f6 test %r14d,%r14d 0.00 : ab50: 4c 89 ad d8 02 00 00 mov %r13,0x2d8(%rbp) 0.00 : ab57: 4c 89 7d 30 mov %r15,0x30(%rbp) 0.00 : ab5b: 74 24 je ab81 <_dl_new_object+0x111> 0.00 : ab5d: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : ab61: 31 d2 xor %edx,%edx 0.00 : ab63: 48 83 c0 01 add $0x1,%rax 0.00 : ab67: 48 c1 e0 04 shl $0x4,%rax 0.00 : ab6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : ab70: 48 89 ac 15 70 04 00 mov %rbp,0x470(%rbp,%rdx,1) 0.00 : ab77: 00 0.00 : ab78: 48 83 c2 10 add $0x10,%rdx 0.00 : ab7c: 48 39 c2 cmp %rax,%rdx 0.00 : ab7f: 75 ef jne ab70 <_dl_new_object+0x100> 0.00 : ab81: 48 8d 85 58 03 00 00 lea 0x358(%rbp),%rax 0.00 : ab88: 48 8d 15 d1 44 21 00 lea 0x2144d1(%rip),%rdx # 21f060 <_rtld_global> 0.00 : ab8f: 48 c7 85 78 03 00 00 movq $0x4,0x378(%rbp) 0.00 : ab96: 04 00 00 00 0.00 : ab9a: 48 89 85 80 03 00 00 mov %rax,0x380(%rbp) 0.00 : aba1: 4b 8d 04 ff lea (%r15,%r15,8),%rax 0.00 : aba5: 48 c1 e0 04 shl $0x4,%rax 0.00 : aba9: 48 8b 04 02 mov (%rdx,%rax,1),%rax 25.00 : abad: 31 d2 xor %edx,%edx 0.00 : abaf: 48 85 c0 test %rax,%rax 0.00 : abb2: 74 12 je abc6 <_dl_new_object+0x156> 0.00 : abb4: 48 05 b8 02 00 00 add $0x2b8,%rax 0.00 : abba: ba 01 00 00 00 mov $0x1,%edx 0.00 : abbf: 48 89 85 58 03 00 00 mov %rax,0x358(%rbp) 0.00 : abc6: 4d 85 ed test %r13,%r13 0.00 : abc9: 75 08 jne abd3 <_dl_new_object+0x163> 0.00 : abcb: e9 47 01 00 00 jmpq ad17 <_dl_new_object+0x2a7> 0.00 : abd0: 49 89 cd mov %rcx,%r13 0.00 : abd3: 49 8b 8d d8 02 00 00 mov 0x2d8(%r13),%rcx 0.00 : abda: 48 85 c9 test %rcx,%rcx 0.00 : abdd: 75 f1 jne abd0 <_dl_new_object+0x160> 0.00 : abdf: 85 d2 test %edx,%edx 0.00 : abe1: 0f 84 09 01 00 00 je acf0 <_dl_new_object+0x280> 0.00 : abe7: 48 8b 95 80 03 00 00 mov 0x380(%rbp),%rdx 0.00 : abee: 49 8d 8d b8 02 00 00 lea 0x2b8(%r13),%rcx 0.00 : abf5: 48 8b 32 mov (%rdx),%rsi 0.00 : abf8: 48 39 ce cmp %rcx,%rsi 0.00 : abfb: 74 1d je ac1a <_dl_new_object+0x1aa> 0.00 : abfd: f6 44 24 08 08 testb $0x8,0x8(%rsp) 0.00 : ac02: b8 08 00 00 00 mov $0x8,%eax 0.00 : ac07: 74 0d je ac16 <_dl_new_object+0x1a6> 0.00 : ac09: 48 89 72 08 mov %rsi,0x8(%rdx) 0.00 : ac0d: 48 8b 95 80 03 00 00 mov 0x380(%rbp),%rdx 0.00 : ac14: 31 c0 xor %eax,%eax 0.00 : ac16: 48 89 0c 02 mov %rcx,(%rdx,%rax,1) 0.00 : ac1a: 48 8d 85 b8 02 00 00 lea 0x2b8(%rbp),%rax 0.00 : ac21: 48 89 85 88 03 00 00 mov %rax,0x388(%rbp) 0.00 : ac28: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : ac2d: 0f b6 18 movzbl (%rax),%ebx 0.00 : ac30: 84 db test %bl,%bl 0.00 : ac32: 74 7b je acaf <_dl_new_object+0x23f> 0.00 : ac34: 48 89 c7 mov %rax,%rdi 0.00 : ac37: e8 34 bb 00 00 callq 16770 <__GI_strlen> 0.00 : ac3c: 80 fb 2f cmp $0x2f,%bl 0.00 : ac3f: 4c 8d 78 01 lea 0x1(%rax),%r15 0.00 : ac43: 0f 84 db 00 00 00 je ad24 <_dl_new_object+0x2b4> 0.00 : ac49: 4d 89 fd mov %r15,%r13 0.00 : ac4c: 45 31 f6 xor %r14d,%r14d 0.00 : ac4f: 41 bc 80 00 00 00 mov $0x80,%r12d 0.00 : ac55: 0f 1f 00 nopl (%rax) 0.00 : ac58: 49 83 ed 80 sub $0xffffffffffffff80,%r13 0.00 : ac5c: 4c 89 f7 mov %r14,%rdi 0.00 : ac5f: 4c 89 ee mov %r13,%rsi 0.00 : ac62: e8 79 5e ff ff callq ae0 0.00 : ac67: 48 85 c0 test %rax,%rax 0.00 : ac6a: 48 89 c3 mov %rax,%rbx 0.00 : ac6d: 74 24 je ac93 <_dl_new_object+0x223> 0.00 : ac6f: 4c 89 e6 mov %r12,%rsi 0.00 : ac72: 48 89 c7 mov %rax,%rdi 0.00 : ac75: e8 d6 b4 00 00 callq 16150 <__getcwd> 0.00 : ac7a: 48 85 c0 test %rax,%rax 0.00 : ac7d: 0f 85 e9 00 00 00 jne ad6c <_dl_new_object+0x2fc> 0.00 : ac83: 49 83 ec 80 sub $0xffffffffffffff80,%r12 0.00 : ac87: 83 3d f6 54 21 00 22 cmpl $0x22,0x2154f6(%rip) # 220184 0.00 : ac8e: 49 89 de mov %rbx,%r14 0.00 : ac91: 74 c5 je ac58 <_dl_new_object+0x1e8> 0.00 : ac93: 4c 89 f7 mov %r14,%rdi 0.00 : ac96: e8 55 5e ff ff callq af0 0.00 : ac9b: 49 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%r14 0.00 : aca2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : aca8: 4c 89 b5 38 03 00 00 mov %r14,0x338(%rbp) 0.00 : acaf: 48 83 c4 28 add $0x28,%rsp 0.00 : acb3: 48 89 e8 mov %rbp,%rax 0.00 : acb6: 5b pop %rbx 0.00 : acb7: 5d pop %rbp 0.00 : acb8: 41 5c pop %r12 0.00 : acba: 41 5d pop %r13 0.00 : acbc: 41 5e pop %r14 0.00 : acbe: 41 5f pop %r15 0.00 : acc0: c3 retq 0.00 : acc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : acc8: 8b 44 24 08 mov 0x8(%rsp),%eax 0.00 : accc: 25 00 00 00 20 and $0x20000000,%eax 25.00 : acd1: 83 f8 01 cmp $0x1,%eax 0.00 : acd4: 48 19 db sbb %rbx,%rbx 0.00 : acd7: 48 f7 d3 not %rbx 0.00 : acda: 81 e3 00 01 00 00 and $0x100,%ebx 0.00 : ace0: 85 c0 test %eax,%eax 0.00 : ace2: b8 10 00 00 00 mov $0x10,%eax 0.00 : ace7: 44 0f 45 f0 cmovne %eax,%r14d 0.00 : aceb: e9 cf fd ff ff jmpq aabf <_dl_new_object+0x4f> 0.00 : acf0: 48 8b 95 80 03 00 00 mov 0x380(%rbp),%rdx 0.00 : acf7: 31 c0 xor %eax,%eax 0.00 : acf9: 49 8d 8d b8 02 00 00 lea 0x2b8(%r13),%rcx 0.00 : ad00: e9 11 ff ff ff jmpq ac16 <_dl_new_object+0x1a6> 0.00 : ad05: 0f 1f 00 nopl (%rax) 0.00 : ad08: c7 85 d4 03 00 00 01 movl $0x1,0x3d4(%rbp) 0.00 : ad0f: 00 00 00 0.00 : ad12: e9 36 fe ff ff jmpq ab4d <_dl_new_object+0xdd> 0.00 : ad17: 85 d2 test %edx,%edx 0.00 : ad19: 49 89 ed mov %rbp,%r13 0.00 : ad1c: 0f 85 c5 fe ff ff jne abe7 <_dl_new_object+0x177> 0.00 : ad22: eb cc jmp acf0 <_dl_new_object+0x280> 0.00 : ad24: 4c 89 ff mov %r15,%rdi 0.00 : ad27: e8 84 5d ff ff callq ab0 0.00 : ad2c: 48 85 c0 test %rax,%rax 0.00 : ad2f: 49 89 c6 mov %rax,%r14 0.00 : ad32: 48 89 c7 mov %rax,%rdi 0.00 : ad35: 0f 84 60 ff ff ff je ac9b <_dl_new_object+0x22b> 0.00 : ad3b: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : ad40: 4c 89 fa mov %r15,%rdx 0.00 : ad43: e8 78 c3 00 00 callq 170c0 <__mempcpy> 0.00 : ad48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : ad4f: 00 0.00 : ad50: 48 89 c2 mov %rax,%rdx 0.00 : ad53: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : ad57: 80 7a ff 2f cmpb $0x2f,-0x1(%rdx) 0.00 : ad5b: 75 f3 jne ad50 <_dl_new_object+0x2e0> 0.00 : ad5d: 4c 39 f0 cmp %r14,%rax 0.00 : ad60: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : ad64: c6 02 00 movb $0x0,(%rdx) 0.00 : ad67: e9 3c ff ff ff jmpq aca8 <_dl_new_object+0x238> 0.00 : ad6c: 31 f6 xor %esi,%esi 0.00 : ad6e: 48 89 df mov %rbx,%rdi 0.00 : ad71: 49 89 de mov %rbx,%r14 0.00 : ad74: e8 67 b8 00 00 callq 165e0 0.00 : ad79: 80 78 ff 2f cmpb $0x2f,-0x1(%rax) 0.00 : ad7d: 48 89 c7 mov %rax,%rdi 0.00 : ad80: 74 b9 je ad3b <_dl_new_object+0x2cb> 0.00 : ad82: c6 00 2f movb $0x2f,(%rax) 0.00 : ad85: 48 83 c7 01 add $0x1,%rdi 0.00 : ad89: eb b0 jmp ad3b <_dl_new_object+0x2cb> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000844a0 <__GI___stpcpy>: 40.00 : 844a0: 48 89 f1 mov %rsi,%rcx 0.00 : 844a3: 83 e1 07 and $0x7,%ecx 0.00 : 844a6: 48 89 fa mov %rdi,%rdx 0.00 : 844a9: 74 1b je 844c6 <__GI___stpcpy+0x26> 0.00 : 844ab: f7 d9 neg %ecx 0.00 : 844ad: 83 c1 08 add $0x8,%ecx 0.00 : 844b0: 8a 06 mov (%rsi),%al 20.00 : 844b2: 84 c0 test %al,%al 0.00 : 844b4: 88 02 mov %al,(%rdx) 0.00 : 844b6: 0f 84 bc 00 00 00 je 84578 <__GI___stpcpy+0xd8> 0.00 : 844bc: 48 ff c6 inc %rsi 0.00 : 844bf: 48 ff c2 inc %rdx 0.00 : 844c2: ff c9 dec %ecx 0.00 : 844c4: 75 ea jne 844b0 <__GI___stpcpy+0x10> 20.00 : 844c6: 49 b8 ff fe fe fe fe movabs $0xfefefefefefefeff,%r8 0.00 : 844cd: fe fe fe 0.00 : 844d0: 48 8b 06 mov (%rsi),%rax 0.00 : 844d3: 48 83 c6 08 add $0x8,%rsi 0.00 : 844d7: 49 89 c1 mov %rax,%r9 0.00 : 844da: 4d 01 c1 add %r8,%r9 0.00 : 844dd: 0f 83 7d 00 00 00 jae 84560 <__GI___stpcpy+0xc0> 0.00 : 844e3: 49 31 c1 xor %rax,%r9 0.00 : 844e6: 4d 09 c1 or %r8,%r9 0.00 : 844e9: 49 ff c1 inc %r9 0.00 : 844ec: 75 72 jne 84560 <__GI___stpcpy+0xc0> 0.00 : 844ee: 48 89 02 mov %rax,(%rdx) 0.00 : 844f1: 48 83 c2 08 add $0x8,%rdx 0.00 : 844f5: 48 8b 06 mov (%rsi),%rax 0.00 : 844f8: 48 83 c6 08 add $0x8,%rsi 0.00 : 844fc: 49 89 c1 mov %rax,%r9 0.00 : 844ff: 4d 01 c1 add %r8,%r9 0.00 : 84502: 73 5c jae 84560 <__GI___stpcpy+0xc0> 0.00 : 84504: 49 31 c1 xor %rax,%r9 0.00 : 84507: 4d 09 c1 or %r8,%r9 0.00 : 8450a: 49 ff c1 inc %r9 0.00 : 8450d: 75 51 jne 84560 <__GI___stpcpy+0xc0> 0.00 : 8450f: 48 89 02 mov %rax,(%rdx) 0.00 : 84512: 48 83 c2 08 add $0x8,%rdx 0.00 : 84516: 48 8b 06 mov (%rsi),%rax 0.00 : 84519: 48 83 c6 08 add $0x8,%rsi 0.00 : 8451d: 49 89 c1 mov %rax,%r9 0.00 : 84520: 4d 01 c1 add %r8,%r9 0.00 : 84523: 73 3b jae 84560 <__GI___stpcpy+0xc0> 0.00 : 84525: 49 31 c1 xor %rax,%r9 0.00 : 84528: 4d 09 c1 or %r8,%r9 0.00 : 8452b: 49 ff c1 inc %r9 0.00 : 8452e: 75 30 jne 84560 <__GI___stpcpy+0xc0> 0.00 : 84530: 48 89 02 mov %rax,(%rdx) 0.00 : 84533: 48 83 c2 08 add $0x8,%rdx 0.00 : 84537: 48 8b 06 mov (%rsi),%rax 0.00 : 8453a: 48 83 c6 08 add $0x8,%rsi 0.00 : 8453e: 49 89 c1 mov %rax,%r9 0.00 : 84541: 4d 01 c1 add %r8,%r9 0.00 : 84544: 73 1a jae 84560 <__GI___stpcpy+0xc0> 0.00 : 84546: 49 31 c1 xor %rax,%r9 0.00 : 84549: 4d 09 c1 or %r8,%r9 0.00 : 8454c: 49 ff c1 inc %r9 0.00 : 8454f: 75 0f jne 84560 <__GI___stpcpy+0xc0> 0.00 : 84551: 48 89 02 mov %rax,(%rdx) 0.00 : 84554: 48 83 c2 08 add $0x8,%rdx 0.00 : 84558: e9 73 ff ff ff jmpq 844d0 <__GI___stpcpy+0x30> 0.00 : 8455d: 0f 1f 00 nopl (%rax) 0.00 : 84560: 88 02 mov %al,(%rdx) 0.00 : 84562: 84 c0 test %al,%al 0.00 : 84564: 74 12 je 84578 <__GI___stpcpy+0xd8> 0.00 : 84566: 48 ff c2 inc %rdx 0.00 : 84569: 88 22 mov %ah,(%rdx) 20.00 : 8456b: 84 e4 test %ah,%ah 0.00 : 8456d: 74 09 je 84578 <__GI___stpcpy+0xd8> 0.00 : 8456f: 48 ff c2 inc %rdx 0.00 : 84572: 48 c1 e8 10 shr $0x10,%rax 0.00 : 84576: eb e8 jmp 84560 <__GI___stpcpy+0xc0> 0.00 : 84578: 48 89 d0 mov %rdx,%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008c9e0 : 0.00 : 8c9e0: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 8c9e5: 89 fd mov %edi,%ebp 0.00 : 8c9e7: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 25.00 : 8c9ec: 8d 85 80 00 00 00 lea 0x80(%rbp),%eax 0.00 : 8c9f2: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 8c9f7: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 8c9fc: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 8ca03: 89 fa mov %edi,%edx 0.00 : 8ca05: 3d 7f 01 00 00 cmp $0x17f,%eax 0.00 : 8ca0a: 0f 87 98 00 00 00 ja 8caa8 0.00 : 8ca10: 83 ff ff cmp $0xffffffff,%edi 0.00 : 8ca13: 0f 84 8f 00 00 00 je 8caa8 0.00 : 8ca19: f7 c7 80 ff ff ff test $0xffffff80,%edi 0.00 : 8ca1f: 74 60 je 8ca81 0.00 : 8ca21: 48 8b 05 60 53 2e 00 mov 0x2e5360(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 8ca28: 64 48 8b 14 25 00 00 mov %fs:0x0,%rdx 0.00 : 8ca2f: 00 00 0.00 : 8ca31: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 8ca35: 48 8b 18 mov (%rax),%rbx 0.00 : 8ca38: 4c 8b 63 28 mov 0x28(%rbx),%r12 25.00 : 8ca3c: 4d 85 e4 test %r12,%r12 0.00 : 8ca3f: 74 6f je 8cab0 0.00 : 8ca41: 49 83 7c 24 08 01 cmpq $0x1,0x8(%r12) 0.00 : 8ca47: 49 8b 04 24 mov (%r12),%rax 0.00 : 8ca4b: 48 8b 58 30 mov 0x30(%rax),%rbx 0.00 : 8ca4f: 0f 85 83 00 00 00 jne 8cad8 0.00 : 8ca55: 48 85 db test %rbx,%rbx 0.00 : 8ca58: 74 7e je 8cad8 0.00 : 8ca5a: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 8ca5e: 74 0d je 8ca6d 0.00 : 8ca60: 48 c1 cb 11 ror $0x11,%rbx 0.00 : 8ca64: 64 48 33 1c 25 30 00 xor %fs:0x30,%rbx 0.00 : 8ca6b: 00 00 0.00 : 8ca6d: 48 89 df mov %rbx,%rdi 0.00 : 8ca70: e8 9b 62 08 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 8ca75: 40 0f b6 f5 movzbl %bpl,%esi 0.00 : 8ca79: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 8ca7d: ff d3 callq *%rbx 0.00 : 8ca7f: 89 c2 mov %eax,%edx 25.00 : 8ca81: 89 d0 mov %edx,%eax 25.00 : 8ca83: 48 8b 5c 24 68 mov 0x68(%rsp),%rbx 0.00 : 8ca88: 48 8b 6c 24 70 mov 0x70(%rsp),%rbp 0.00 : 8ca8d: 4c 8b 64 24 78 mov 0x78(%rsp),%r12 0.00 : 8ca92: 4c 8b ac 24 80 00 00 mov 0x80(%rsp),%r13 0.00 : 8ca99: 00 0.00 : 8ca9a: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 8caa1: c3 retq 0.00 : 8caa2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8caa8: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 8caad: eb d2 jmp 8ca81 0.00 : 8caaf: 90 nop 0.00 : 8cab0: 48 8d 05 89 32 2e 00 lea 0x2e3289(%rip),%rax # 36fd40 <_nl_C_LC_CTYPE> 0.00 : 8cab7: 4c 8d 25 42 29 2e 00 lea 0x2e2942(%rip),%r12 # 36f400 <__wcsmbs_gconv_fcts_c> 0.00 : 8cabe: 48 39 c3 cmp %rax,%rbx 0.00 : 8cac1: 0f 84 7a ff ff ff je 8ca41 0.00 : 8cac7: 48 89 df mov %rbx,%rdi 0.00 : 8caca: e8 21 a8 00 00 callq 972f0 <__wcsmbs_load_conv> 0.00 : 8cacf: 4c 8b 63 28 mov 0x28(%rbx),%r12 0.00 : 8cad3: e9 69 ff ff ff jmpq 8ca41 0.00 : 8cad8: 48 8d 44 24 5f lea 0x5f(%rsp),%rax 0.00 : 8cadd: 4c 8d 6c 24 10 lea 0x10(%rsp),%r13 0.00 : 8cae2: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 8cae9: 00 0.00 : 8caea: c7 44 24 28 01 00 00 movl $0x1,0x28(%rsp) 0.00 : 8caf1: 00 0.00 : 8caf2: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 8caf9: 00 0.00 : 8cafa: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 8caff: 48 8d 44 24 58 lea 0x58(%rsp),%rax 0.00 : 8cb04: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : 8cb0b: 00 00 0.00 : 8cb0d: 48 c7 44 24 38 00 00 movq $0x0,0x38(%rsp) 0.00 : 8cb14: 00 00 0.00 : 8cb16: 40 88 6c 24 5f mov %bpl,0x5f(%rsp) 0.00 : 8cb1b: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 8cb20: 48 83 c0 04 add $0x4,%rax 0.00 : 8cb24: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 8cb29: 49 8d 45 28 lea 0x28(%r13),%rax 0.00 : 8cb2d: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 8cb32: 49 8b 04 24 mov (%r12),%rax 0.00 : 8cb36: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 8cb3a: 48 8b 58 28 mov 0x28(%rax),%rbx 0.00 : 8cb3e: 74 0d je 8cb4d 0.00 : 8cb40: 48 c1 cb 11 ror $0x11,%rbx 0.00 : 8cb44: 64 48 33 1c 25 30 00 xor %fs:0x30,%rbx 0.00 : 8cb4b: 00 00 0.00 : 8cb4d: 48 89 df mov %rbx,%rdi 0.00 : 8cb50: e8 bb 61 08 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 8cb55: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : 8cb5a: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 8cb61: 00 0.00 : 8cb62: 45 31 c0 xor %r8d,%r8d 0.00 : 8cb65: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 8cb6c: 48 8d 54 24 50 lea 0x50(%rsp),%rdx 0.00 : 8cb71: 4c 8d 4c 24 48 lea 0x48(%rsp),%r9 0.00 : 8cb76: 4c 89 ee mov %r13,%rsi 0.00 : 8cb79: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 8cb7d: 48 83 c1 01 add $0x1,%rcx 0.00 : 8cb81: ff d3 callq *%rbx 0.00 : 8cb83: 85 c0 test %eax,%eax 0.00 : 8cb85: 74 13 je 8cb9a 0.00 : 8cb87: 83 f8 05 cmp $0x5,%eax 0.00 : 8cb8a: 74 0e je 8cb9a 0.00 : 8cb8c: 83 f8 04 cmp $0x4,%eax 0.00 : 8cb8f: 90 nop 0.00 : 8cb90: 74 08 je 8cb9a 0.00 : 8cb92: c7 44 24 58 ff ff ff movl $0xffffffff,0x58(%rsp) 0.00 : 8cb99: ff 0.00 : 8cb9a: 8b 54 24 58 mov 0x58(%rsp),%edx 0.00 : 8cb9e: e9 de fe ff ff jmpq 8ca81 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000bcca0 : 0.00 : bcca0: 41 57 push %r15 0.00 : bcca2: 45 89 c7 mov %r8d,%r15d 0.00 : bcca5: 4c 8d 05 78 b3 07 00 lea 0x7b378(%rip),%r8 # 138024 <__mon_yday+0x1204> 0.00 : bccac: 41 56 push %r14 0.00 : bccae: 41 55 push %r13 0.00 : bccb0: 49 89 cd mov %rcx,%r13 0.00 : bccb3: 41 83 e5 10 and $0x10,%r13d 0.00 : bccb7: 41 54 push %r12 0.00 : bccb9: 49 89 cc mov %rcx,%r12 0.00 : bccbc: 41 83 e4 20 and $0x20,%r12d 0.00 : bccc0: 55 push %rbp 0.00 : bccc1: 48 89 cd mov %rcx,%rbp 0.00 : bccc4: 81 e5 00 00 00 01 and $0x1000000,%ebp 0.00 : bccca: 53 push %rbx 0.00 : bcccb: 48 89 f3 mov %rsi,%rbx 0.00 : bccce: 48 81 ec e8 01 00 00 sub $0x1e8,%rsp 0.00 : bccd5: 48 89 bc 24 90 00 00 mov %rdi,0x90(%rsp) 0.00 : bccdc: 00 0.00 : bccdd: 48 89 94 24 88 00 00 mov %rdx,0x88(%rsp) 0.00 : bcce4: 00 0.00 : bcce5: 48 89 8c 24 80 00 00 mov %rcx,0x80(%rsp) 0.00 : bccec: 00 0.00 : bcced: 4c 89 4c 24 78 mov %r9,0x78(%rsp) 0.00 : bccf2: 0f b6 52 08 movzbl 0x8(%rdx),%edx 0.00 : bccf6: 80 fa 24 cmp $0x24,%dl 0.00 : bccf9: 4c 8b 33 mov (%rbx),%r14 0.00 : bccfc: 76 1f jbe bcd1d 0.00 : bccfe: 45 31 e4 xor %r12d,%r12d 0.00 : bcd01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bcd08: 48 81 c4 e8 01 00 00 add $0x1e8,%rsp 0.00 : bcd0f: 4c 89 e0 mov %r12,%rax 0.00 : bcd12: 5b pop %rbx 0.00 : bcd13: 5d pop %rbp 0.00 : bcd14: 41 5c pop %r12 0.00 : bcd16: 41 5d pop %r13 0.00 : bcd18: 41 5e pop %r14 0.00 : bcd1a: 41 5f pop %r15 0.00 : bcd1c: c3 retq 0.00 : bcd1d: 0f b6 c2 movzbl %dl,%eax 0.00 : bcd20: 49 63 04 80 movslq (%r8,%rax,4),%rax 0.00 : bcd24: 4c 01 c0 add %r8,%rax 0.00 : bcd27: ff e0 jmpq *%rax 0.00 : bcd29: 80 fa 09 cmp $0x9,%dl 0.00 : bcd2c: 0f 84 be 0f 00 00 je bdcf0 0.00 : bcd32: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : bcd39: 00 0.00 : bcd3a: 31 f6 xor %esi,%esi 0.00 : bcd3c: 4c 89 f7 mov %r14,%rdi 0.00 : bcd3f: c6 42 08 01 movb $0x1,0x8(%rdx) 0.00 : bcd43: 48 89 d1 mov %rdx,%rcx 0.00 : bcd46: 31 d2 xor %edx,%edx 0.00 : bcd48: e8 73 4c ff ff callq b19c0 0.00 : bcd4d: 48 85 c0 test %rax,%rax 0.00 : bcd50: 49 89 c4 mov %rax,%r12 0.00 : bcd53: 0f 84 8f 17 00 00 je be4e8 0.00 : bcd59: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bcd60: 00 0.00 : bcd61: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bcd68: 00 0.00 : bcd69: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bcd70: 00 0.00 : bcd71: e8 ea 7a ff ff callq b4860 0.00 : bcd76: 48 8b 9c 24 88 00 00 mov 0x88(%rsp),%rbx 0.00 : bcd7d: 00 0.00 : bcd7e: 48 8b b4 24 80 00 00 mov 0x80(%rsp),%rsi 0.00 : bcd85: 00 0.00 : bcd86: 48 8b 84 24 80 00 00 mov 0x80(%rsp),%rax 0.00 : bcd8d: 00 0.00 : bcd8e: 0f b6 53 08 movzbl 0x8(%rbx),%edx 0.00 : bcd92: 81 e6 00 00 20 00 and $0x200000,%esi 0.00 : bcd98: 25 00 00 00 01 and $0x1000000,%eax 0.00 : bcd9d: 48 89 74 24 50 mov %rsi,0x50(%rsp) 0.00 : bcda2: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : bcda7: 80 fa 0b cmp $0xb,%dl 0.00 : bcdaa: 0f 84 f8 07 00 00 je bd5a8 0.00 : bcdb0: 80 fa 12 cmp $0x12,%dl 0.00 : bcdb3: 0f 84 ef 07 00 00 je bd5a8 0.00 : bcdb9: 80 fa 13 cmp $0x13,%dl 0.00 : bcdbc: 0f 84 66 08 00 00 je bd628 0.00 : bcdc2: 80 fa 17 cmp $0x17,%dl 0.00 : bcdc5: 0f 85 3d ff ff ff jne bcd08 0.00 : bcdcb: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : bcdd2: 00 0.00 : bcdd3: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bcdda: 00 0.00 : bcddb: 48 8b 02 mov (%rdx),%rax 0.00 : bcdde: 8b 5e 38 mov 0x38(%rsi),%ebx 0.00 : bcde1: 48 89 84 24 70 01 00 mov %rax,0x170(%rsp) 0.00 : bcde8: 00 0.00 : bcde9: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : bcded: 48 89 84 24 78 01 00 mov %rax,0x178(%rsp) 0.00 : bcdf4: 00 0.00 : bcdf5: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bcdfc: 00 0.00 : bcdfd: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bce04: 00 0.00 : bce05: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : bce0c: 00 0.00 : bce0d: e8 7e 7a ff ff callq b4890 0.00 : bce12: 83 f8 ff cmp $0xffffffff,%eax 0.00 : bce15: 89 c5 mov %eax,%ebp 0.00 : bce17: 0f 85 e3 06 00 00 jne bd500 0.00 : bce1d: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax 0.00 : bce24: 00 0.00 : bce25: 80 78 08 01 cmpb $0x1,0x8(%rax) 0.00 : bce29: 75 09 jne bce34 0.00 : bce2b: 80 38 2c cmpb $0x2c,(%rax) 0.00 : bce2e: 0f 84 28 09 00 00 je bd75c 0.00 : bce34: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : bce39: 45 31 e4 xor %r12d,%r12d 0.00 : bce3c: c7 02 0a 00 00 00 movl $0xa,(%rdx) 0.00 : bce42: e9 c1 fe ff ff jmpq bcd08 0.00 : bce47: 48 85 ed test %rbp,%rbp 0.00 : bce4a: 0f 85 de 16 00 00 jne be52e 0.00 : bce50: 4d 85 e4 test %r12,%r12 0.00 : bce53: 0f 85 7c 16 00 00 jne be4d5 0.00 : bce59: 4d 85 ed test %r13,%r13 0.00 : bce5c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bce60: 0f 84 c3 fe ff ff je bcd29 0.00 : bce66: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bce6d: 00 0.00 : bce6e: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bce75: 00 0.00 : bce76: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bce7d: 00 0.00 : bce7e: 4c 89 44 24 20 mov %r8,0x20(%rsp) 0.00 : bce83: e8 d8 79 ff ff callq b4860 0.00 : bce88: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bce8f: 00 0.00 : bce90: 4c 8b 44 24 20 mov 0x20(%rsp),%r8 0.00 : bce95: 0f b6 56 08 movzbl 0x8(%rsi),%edx 0.00 : bce99: 8d 42 f7 lea -0x9(%rdx),%eax 0.00 : bce9c: 3c 01 cmp $0x1,%al 0.00 : bce9e: 0f 87 52 fe ff ff ja bccf6 0.00 : bcea4: e9 55 fe ff ff jmpq bccfe 0.00 : bcea9: 48 8b 9c 24 88 00 00 mov 0x88(%rsp),%rbx 0.00 : bceb0: 00 0.00 : bceb1: 8b 13 mov (%rbx),%edx 0.00 : bceb3: f7 c2 0f 03 00 00 test $0x30f,%edx 0.00 : bceb9: 0f 84 b3 00 00 00 je bcf72 0.00 : bcebf: 41 0f b6 86 a0 00 00 movzbl 0xa0(%r14),%eax 0.00 : bcec6: 00 0.00 : bcec7: a8 10 test $0x10,%al 0.00 : bcec9: 0f 85 a3 00 00 00 jne bcf72 0.00 : bcecf: 83 c8 10 or $0x10,%eax 0.00 : bced2: 48 8b 3d f7 4e 2b 00 mov 0x2b4ef7(%rip),%rdi # 371dd0 <_DYNAMIC+0x270> 0.00 : bced9: 31 f6 xor %esi,%esi 0.00 : bcedb: 41 88 86 a0 00 00 00 mov %al,0xa0(%r14) 0.00 : bcee2: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : bcee9: 00 00 0.00 : bceeb: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : bcef1: 48 89 44 24 60 mov %rax,0x60(%rsp) 0.00 : bcef6: 48 89 f2 mov %rsi,%rdx 0.00 : bcef9: 31 c9 xor %ecx,%ecx 0.00 : bcefb: 44 8d 04 f5 00 00 00 lea 0x0(,%rsi,8),%r8d 0.00 : bcf02: 00 0.00 : bcf03: 48 c1 e2 04 shl $0x4,%rdx 0.00 : bcf07: eb 1c jmp bcf25 0.00 : bcf09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bcf10: 41 8d 04 08 lea (%r8,%rcx,1),%eax 0.00 : bcf14: 83 f8 5f cmp $0x5f,%eax 0.00 : bcf17: 74 2b je bcf44 0.00 : bcf19: 83 c1 01 add $0x1,%ecx 0.00 : bcf1c: 48 83 c2 02 add $0x2,%rdx 0.00 : bcf20: 83 f9 40 cmp $0x40,%ecx 0.00 : bcf23: 74 39 je bcf5e 0.00 : bcf25: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : bcf2a: 48 83 3c 3b 00 cmpq $0x0,(%rbx,%rdi,1) 0.00 : bcf2f: 0f 84 e0 10 00 00 je be015 0.00 : bcf35: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : bcf3a: 48 8b 04 3b mov (%rbx,%rdi,1),%rax 0.00 : bcf3e: f6 04 10 08 testb $0x8,(%rax,%rdx,1) 0.00 : bcf42: 74 cc je bcf10 0.00 : bcf44: 4c 89 c8 mov %r9,%rax 0.00 : bcf47: 48 83 c2 02 add $0x2,%rdx 0.00 : bcf4b: 48 d3 e0 shl %cl,%rax 0.00 : bcf4e: 83 c1 01 add $0x1,%ecx 0.00 : bcf51: 49 09 84 36 a8 00 00 or %rax,0xa8(%r14,%rsi,1) 0.00 : bcf58: 00 0.00 : bcf59: 83 f9 40 cmp $0x40,%ecx 0.00 : bcf5c: 75 c7 jne bcf25 0.00 : bcf5e: 48 83 c6 08 add $0x8,%rsi 0.00 : bcf62: 48 83 fe 20 cmp $0x20,%rsi 0.00 : bcf66: 75 8e jne bcef6 0.00 : bcf68: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bcf6f: 00 0.00 : bcf70: 8b 16 mov (%rsi),%edx 0.00 : bcf72: 81 fa 00 01 00 00 cmp $0x100,%edx 0.00 : bcf78: 0f 85 33 0d 00 00 jne bdcb1 0.00 : bcf7e: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bcf85: 00 0.00 : bcf86: 31 f6 xor %esi,%esi 0.00 : bcf88: 31 d2 xor %edx,%edx 0.00 : bcf8a: 4c 89 f7 mov %r14,%rdi 0.00 : bcf8d: c7 01 06 00 00 00 movl $0x6,(%rcx) 0.00 : bcf93: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bcf9a: 00 0.00 : bcf9b: e8 20 4a ff ff callq b19c0 0.00 : bcfa0: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bcfa7: 00 0.00 : bcfa8: 48 89 c3 mov %rax,%rbx 0.00 : bcfab: c7 06 09 00 00 00 movl $0x9,(%rsi) 0.00 : bcfb1: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bcfb8: 00 0.00 : bcfb9: 31 d2 xor %edx,%edx 0.00 : bcfbb: 31 f6 xor %esi,%esi 0.00 : bcfbd: 4c 89 f7 mov %r14,%rdi 0.00 : bcfc0: e8 fb 49 ff ff callq b19c0 0.00 : bcfc5: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : bcfca: 48 89 c2 mov %rax,%rdx 0.00 : bcfcd: 48 89 de mov %rbx,%rsi 0.00 : bcfd0: 4c 89 f7 mov %r14,%rdi 0.00 : bcfd3: 48 89 c5 mov %rax,%rbp 0.00 : bcfd6: e8 a5 4b ff ff callq b1b80 0.00 : bcfdb: 48 85 db test %rbx,%rbx 0.00 : bcfde: 49 89 c4 mov %rax,%r12 0.00 : bcfe1: 0f 84 33 07 00 00 je bd71a 0.00 : bcfe7: 48 85 ed test %rbp,%rbp 0.00 : bcfea: 0f 84 2a 07 00 00 je bd71a 0.00 : bcff0: 48 85 c0 test %rax,%rax 0.00 : bcff3: 0f 84 21 07 00 00 je bd71a 0.00 : bcff9: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bd000: 00 0.00 : bd001: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd008: 00 0.00 : bd009: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bd010: 00 0.00 : bd011: e8 4a 78 ff ff callq b4860 0.00 : bd016: e9 ed fc ff ff jmpq bcd08 0.00 : bd01b: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi 0.00 : bd022: 00 00 0.00 : bd024: 48 8b 15 5d 4d 2b 00 mov 0x2b4d5d(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : bd02b: c7 84 24 cc 01 00 00 movl $0x0,0x1cc(%rsp) 0.00 : bd032: 00 00 00 00 0.00 : bd036: 48 89 74 24 60 mov %rsi,0x60(%rsp) 0.00 : bd03b: 48 8b 04 16 mov (%rsi,%rdx,1),%rax 0.00 : bd03f: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : bd043: 48 8b 88 c0 00 00 00 mov 0xc0(%rax),%rcx 0.00 : bd04a: 48 89 8c 24 e0 00 00 mov %rcx,0xe0(%rsp) 0.00 : bd051: 00 0.00 : bd052: 8b 58 40 mov 0x40(%rax),%ebx 0.00 : bd055: 85 db test %ebx,%ebx 0.00 : bd057: 89 9c 24 ec 00 00 00 mov %ebx,0xec(%rsp) 0.00 : bd05e: 0f 85 0e 0c 00 00 jne bdc72 0.00 : bd064: 48 c7 84 24 98 00 00 movq $0x0,0x98(%rsp) 0.00 : bd06b: 00 00 00 00 00 0.00 : bd070: c7 84 24 a4 00 00 00 movl $0x0,0xa4(%rsp) 0.00 : bd077: 00 00 00 00 0.00 : bd07b: 48 c7 84 24 a8 00 00 movq $0x0,0xa8(%rsp) 0.00 : bd082: 00 00 00 00 00 0.00 : bd087: 48 c7 84 24 b0 00 00 movq $0x0,0xb0(%rsp) 0.00 : bd08e: 00 00 00 00 00 0.00 : bd093: be 01 00 00 00 mov $0x1,%esi 0.00 : bd098: bf 20 00 00 00 mov $0x20,%edi 0.00 : bd09d: e8 ee 17 f6 ff callq 1e890 0.00 : bd0a2: be 01 00 00 00 mov $0x1,%esi 0.00 : bd0a7: bf 48 00 00 00 mov $0x48,%edi 0.00 : bd0ac: 48 89 84 24 d8 00 00 mov %rax,0xd8(%rsp) 0.00 : bd0b3: 00 0.00 : bd0b4: e8 d7 17 f6 ff callq 1e890 0.00 : bd0b9: 48 83 bc 24 d8 00 00 cmpq $0x0,0xd8(%rsp) 0.00 : bd0c0: 00 00 0.00 : bd0c2: 49 89 c7 mov %rax,%r15 0.00 : bd0c5: 0f 84 55 1c 00 00 je bed20 0.00 : bd0cb: 48 85 c0 test %rax,%rax 0.00 : bd0ce: 0f 84 4c 1c 00 00 je bed20 0.00 : bd0d4: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd0db: 00 0.00 : bd0dc: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bd0e3: 00 0.00 : bd0e4: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bd0eb: 00 0.00 : bd0ec: e8 6f 3f ff ff callq b1060 0.00 : bd0f1: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bd0f8: 00 0.00 : bd0f9: 89 84 24 c0 00 00 00 mov %eax,0xc0(%rsp) 0.00 : bd100: 0f b6 46 08 movzbl 0x8(%rsi),%eax 0.00 : bd104: 3c 02 cmp $0x2,%al 0.00 : bd106: 0f 84 7c 10 00 00 je be188 0.00 : bd10c: 3c 19 cmp $0x19,%al 0.00 : bd10e: c7 84 24 c4 00 00 00 movl $0x0,0xc4(%rsp) 0.00 : bd115: 00 00 00 00 0.00 : bd119: 0f 84 f7 0f 00 00 je be116 20.00 : bd11f: 3c 15 cmp $0x15,%al 0.00 : bd121: 0f 84 31 13 00 00 je be458 0.00 : bd127: 48 8d 8c 24 50 01 00 lea 0x150(%rsp),%rcx 0.00 : bd12e: 00 0.00 : bd12f: 8b 84 24 a4 00 00 00 mov 0xa4(%rsp),%eax 0.00 : bd136: 48 8d 9c 24 a0 01 00 lea 0x1a0(%rsp),%rbx 0.00 : bd13d: 00 0.00 : bd13e: 48 8d b4 24 cc 01 00 lea 0x1cc(%rsp),%rsi 0.00 : bd145: 00 0.00 : bd146: 48 8d ac 24 d0 01 00 lea 0x1d0(%rsp),%rbp 0.00 : bd14d: 00 0.00 : bd14e: c7 84 24 d0 00 00 00 movl $0x0,0xd0(%rsp) 0.00 : bd155: 00 00 00 00 0.00 : bd159: 48 89 4c 24 58 mov %rcx,0x58(%rsp) 0.00 : bd15e: 48 8d 8c 24 80 01 00 lea 0x180(%rsp),%rcx 0.00 : bd165: 00 0.00 : bd166: c7 84 24 d4 00 00 00 movl $0x0,0xd4(%rsp) 0.00 : bd16d: 00 00 00 00 0.00 : bd171: 83 e8 02 sub $0x2,%eax 0.00 : bd174: ba 01 00 00 00 mov $0x1,%edx 0.00 : bd179: c7 84 24 cc 00 00 00 movl $0x0,0xcc(%rsp) 0.00 : bd180: 00 00 00 00 0.00 : bd184: c7 84 24 c8 00 00 00 movl $0x0,0xc8(%rsp) 0.00 : bd18b: 00 00 00 00 0.00 : bd18f: 48 89 5c 24 68 mov %rbx,0x68(%rsp) 0.00 : bd194: 48 89 74 24 38 mov %rsi,0x38(%rsp) 0.00 : bd199: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : bd19d: 48 89 4c 24 28 mov %rcx,0x28(%rsp) 0.00 : bd1a2: 48 8b 5c 24 58 mov 0x58(%rsp),%rbx 0.00 : bd1a7: 89 14 24 mov %edx,(%rsp) 0.00 : bd1aa: 4d 89 f0 mov %r14,%r8 0.00 : bd1ad: 4c 8b 8c 24 80 00 00 mov 0x80(%rsp),%r9 0.00 : bd1b4: 00 0.00 : bd1b5: 8b 8c 24 c0 00 00 00 mov 0xc0(%rsp),%ecx 0.00 : bd1bc: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : bd1c3: 00 0.00 : bd1c4: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd1cb: 00 0.00 : bd1cc: 48 8b 7c 24 68 mov 0x68(%rsp),%rdi 0.00 : bd1d1: 48 89 9c 24 a8 01 00 mov %rbx,0x1a8(%rsp) 0.00 : bd1d8: 00 0.00 : bd1d9: e8 d2 3f ff ff callq b11b0 0.00 : bd1de: 85 c0 test %eax,%eax 0.00 : bd1e0: 0f 85 c5 1a 00 00 jne becab 0.00 : bd1e6: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bd1ed: 00 0.00 : bd1ee: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd1f5: 00 0.00 : bd1f6: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bd1fd: 00 0.00 : bd1fe: e8 5d 3e ff ff callq b1060 0.00 : bd203: 89 84 24 c0 00 00 00 mov %eax,0xc0(%rsp) 0.00 : bd20a: 8b 84 24 a0 01 00 00 mov 0x1a0(%rsp),%eax 0.00 : bd211: 83 f8 04 cmp $0x4,%eax 0.00 : bd214: 74 23 je bd239 0.00 : bd216: 83 f8 02 cmp $0x2,%eax 0.00 : bd219: 74 1e je bd239 0.00 : bd21b: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd222: 00 0.00 : bd223: 0f b6 51 08 movzbl 0x8(%rcx),%edx 0.00 : bd227: 80 fa 02 cmp $0x2,%dl 0.00 : bd22a: 0f 84 8f 18 00 00 je beabf 0.00 : bd230: 80 fa 16 cmp $0x16,%dl 0.00 : bd233: 0f 84 67 0f 00 00 je be1a0 0.00 : bd239: 83 f8 04 cmp $0x4,%eax 0.00 : bd23c: 0f 86 a7 05 00 00 jbe bd7e9 0.00 : bd242: 48 8d 0d 87 59 08 00 lea 0x85987(%rip),%rcx # 142bd0 <__PRETTY_FUNCTION__.15596> 0.00 : bd249: 48 8d 35 f2 f1 07 00 lea 0x7f1f2(%rip),%rsi # 13c442 <__PRETTY_FUNCTION__.10792+0x1d> 0.00 : bd250: 48 8d 3d 2b f8 07 00 lea 0x7f82b(%rip),%rdi # 13ca82 <__PRETTY_FUNCTION__.12623+0x25> 0.00 : bd257: ba 83 0c 00 00 mov $0xc83,%edx 0.00 : bd25c: e8 bf e6 f6 ff callq 2b920 <__assert_fail> 20.00 : bd261: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd268: 00 0.00 : bd269: 31 d2 xor %edx,%edx 0.00 : bd26b: 31 f6 xor %esi,%esi 0.00 : bd26d: 4c 89 f7 mov %r14,%rdi 0.00 : bd270: e8 4b 47 ff ff callq b19c0 0.00 : bd275: 48 85 c0 test %rax,%rax 20.00 : bd278: 49 89 c4 mov %rax,%r12 0.00 : bd27b: 0f 84 5c 0a 00 00 je bdcdd 0.00 : bd281: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : bd288: 01 0.00 : bd289: 0f 8e ca fa ff ff jle bcd59 0.00 : bd28f: 48 8b 9c 24 90 00 00 mov 0x90(%rsp),%rbx 0.00 : bd296: 00 0.00 : bd297: 8b 43 38 mov 0x38(%rbx),%eax 0.00 : bd29a: 39 43 48 cmp %eax,0x48(%rbx) 0.00 : bd29d: 0f 8e b6 fa ff ff jle bcd59 0.00 : bd2a3: 3b 43 2c cmp 0x2c(%rbx),%eax 0.00 : bd2a6: 0f 84 ad fa ff ff je bcd59 0.00 : bd2ac: 48 63 d0 movslq %eax,%rdx 0.00 : bd2af: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : bd2b3: 83 3c 90 ff cmpl $0xffffffff,(%rax,%rdx,4) 0.00 : bd2b7: 0f 85 9c fa ff ff jne bcd59 0.00 : bd2bd: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bd2c4: 00 0.00 : bd2c5: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd2cc: 00 0.00 : bd2cd: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bd2d4: 00 0.00 : bd2d5: e8 86 75 ff ff callq b4860 0.00 : bd2da: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd2e1: 00 0.00 : bd2e2: 31 d2 xor %edx,%edx 0.00 : bd2e4: 31 f6 xor %esi,%esi 0.00 : bd2e6: 4c 89 f7 mov %r14,%rdi 0.00 : bd2e9: e8 d2 46 ff ff callq b19c0 0.00 : bd2ee: 4c 89 e6 mov %r12,%rsi 0.00 : bd2f1: 48 89 c3 mov %rax,%rbx 0.00 : bd2f4: b9 10 00 00 00 mov $0x10,%ecx 0.00 : bd2f9: 48 89 c2 mov %rax,%rdx 0.00 : bd2fc: 4c 89 f7 mov %r14,%rdi 0.00 : bd2ff: e8 7c 48 ff ff callq b1b80 0.00 : bd304: 48 85 db test %rbx,%rbx 0.00 : bd307: 49 89 c4 mov %rax,%r12 0.00 : bd30a: 74 09 je bd315 0.00 : bd30c: 48 85 c0 test %rax,%rax 0.00 : bd30f: 0f 85 7a ff ff ff jne bd28f 0.00 : bd315: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : bd31a: 45 31 e4 xor %r12d,%r12d 0.00 : bd31d: c7 01 0c 00 00 00 movl $0xc,(%rcx) 0.00 : bd323: e9 e0 f9 ff ff jmpq bcd08 0.00 : bd328: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bd32f: 00 0.00 : bd330: 48 8b 9c 24 88 00 00 mov 0x88(%rsp),%rbx 0.00 : bd337: 00 0.00 : bd338: b8 01 00 00 00 mov $0x1,%eax 0.00 : bd33d: 8b 0b mov (%rbx),%ecx 0.00 : bd33f: d3 e0 shl %cl,%eax 0.00 : bd341: 48 98 cltq 0.00 : bd343: 49 85 86 98 00 00 00 test %rax,0x98(%r14) 0.00 : bd34a: 0f 84 17 13 00 00 je be667 0.00 : bd350: 49 09 86 90 00 00 00 or %rax,0x90(%r14) 0.00 : bd357: 31 d2 xor %edx,%edx 0.00 : bd359: 31 f6 xor %esi,%esi 0.00 : bd35b: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd362: 00 0.00 : bd363: 4c 89 f7 mov %r14,%rdi 0.00 : bd366: e8 55 46 ff ff callq b19c0 0.00 : bd36b: 48 85 c0 test %rax,%rax 0.00 : bd36e: 49 89 c4 mov %rax,%r12 0.00 : bd371: 0f 84 e0 12 00 00 je be657 0.00 : bd377: 41 83 86 8c 00 00 00 addl $0x1,0x8c(%r14) 0.00 : bd37e: 01 0.00 : bd37f: 41 80 8e a0 00 00 00 orb $0x2,0xa0(%r14) 0.00 : bd386: 02 0.00 : bd387: e9 cd f9 ff ff jmpq bcd59 0.00 : bd38c: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd393: 00 0.00 : bd394: 31 d2 xor %edx,%edx 0.00 : bd396: 31 f6 xor %esi,%esi 0.00 : bd398: 4c 89 f7 mov %r14,%rdi 0.00 : bd39b: e8 20 46 ff ff callq b19c0 0.00 : bd3a0: 48 85 c0 test %rax,%rax 0.00 : bd3a3: 49 89 c4 mov %rax,%r12 0.00 : bd3a6: 0f 84 3c 11 00 00 je be4e8 0.00 : bd3ac: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : bd3b3: 01 0.00 : bd3b4: 0f 8e 9f f9 ff ff jle bcd59 0.00 : bd3ba: 41 80 8e a0 00 00 00 orb $0x2,0xa0(%r14) 0.00 : bd3c1: 02 0.00 : bd3c2: e9 92 f9 ff ff jmpq bcd59 0.00 : bd3c7: 48 8b 6b 30 mov 0x30(%rbx),%rbp 0.00 : bd3cb: 48 8d 45 01 lea 0x1(%rbp),%rax 0.00 : bd3cf: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : bd3d3: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bd3da: 00 0.00 : bd3db: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd3e2: 00 0.00 : bd3e3: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bd3ea: 00 0.00 : bd3eb: 48 81 ca 00 00 80 00 or $0x800000,%rdx 0.00 : bd3f2: e8 69 74 ff ff callq b4860 0.00 : bd3f7: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bd3fe: 00 0.00 : bd3ff: 31 ff xor %edi,%edi 0.00 : bd401: 80 7e 08 09 cmpb $0x9,0x8(%rsi) 0.00 : bd405: 0f 85 e1 11 00 00 jne be5ec 0.00 : bd40b: 48 83 fd 08 cmp $0x8,%rbp 0.00 : bd40f: 77 12 ja bd423 0.00 : bd411: b8 01 00 00 00 mov $0x1,%eax 0.00 : bd416: 89 e9 mov %ebp,%ecx 0.00 : bd418: d3 e0 shl %cl,%eax 0.00 : bd41a: 48 98 cltq 0.00 : bd41c: 49 09 86 98 00 00 00 or %rax,0x98(%r14) 0.00 : bd423: 31 d2 xor %edx,%edx 0.00 : bd425: 48 89 fe mov %rdi,%rsi 0.00 : bd428: b9 11 00 00 00 mov $0x11,%ecx 0.00 : bd42d: 4c 89 f7 mov %r14,%rdi 0.00 : bd430: e8 4b 47 ff ff callq b1b80 0.00 : bd435: 48 85 c0 test %rax,%rax 0.00 : bd438: 49 89 c4 mov %rax,%r12 0.00 : bd43b: 0f 84 9b 11 00 00 je be5dc 0.00 : bd441: 89 68 28 mov %ebp,0x28(%rax) 0.00 : bd444: e9 10 f9 ff ff jmpq bcd59 0.00 : bd449: 48 8b 9c 24 90 00 00 mov 0x90(%rsp),%rbx 0.00 : bd450: 00 0.00 : bd451: 80 fa 21 cmp $0x21,%dl 0.00 : bd454: 4c 8b 4c 24 78 mov 0x78(%rsp),%r9 0.00 : bd459: 41 0f 94 c0 sete %r8b 0.00 : bd45d: 48 8d 0d fe e6 07 00 lea 0x7e6fe(%rip),%rcx # 13bb62 <__PRETTY_FUNCTION__.14063+0xfb> 0.00 : bd464: 48 8d 15 76 f0 07 00 lea 0x7f076(%rip),%rdx # 13c4e1 <__PRETTY_FUNCTION__.10792+0xbc> 0.00 : bd46b: 41 83 e0 01 and $0x1,%r8d 0.00 : bd46f: 4c 89 f7 mov %r14,%rdi 0.00 : bd472: 48 8b 73 50 mov 0x50(%rbx),%rsi 0.00 : bd476: e8 35 f6 ff ff callq bcab0 0.00 : bd47b: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : bd480: 49 89 c4 mov %rax,%r12 0.00 : bd483: 44 8b 16 mov (%rsi),%r10d 0.00 : bd486: 45 85 d2 test %r10d,%r10d 0.00 : bd489: 0f 84 ca f8 ff ff je bcd59 0.00 : bd48f: 4d 85 e4 test %r12,%r12 0.00 : bd492: 0f 85 c1 f8 ff ff jne bcd59 0.00 : bd498: e9 61 f8 ff ff jmpq bccfe 0.00 : bd49d: 48 8b 84 24 90 00 00 mov 0x90(%rsp),%rax 0.00 : bd4a4: 00 0.00 : bd4a5: 80 fa 23 cmp $0x23,%dl 0.00 : bd4a8: 4c 8b 4c 24 78 mov 0x78(%rsp),%r9 0.00 : bd4ad: 41 0f 94 c0 sete %r8b 0.00 : bd4b1: 48 8d 15 35 f0 07 00 lea 0x7f035(%rip),%rdx # 13c4ed <__PRETTY_FUNCTION__.10792+0xc8> 0.00 : bd4b8: 48 8d 0d 81 d5 07 00 lea 0x7d581(%rip),%rcx # 13aa40 0.00 : bd4bf: 41 83 e0 01 and $0x1,%r8d 0.00 : bd4c3: 4c 89 f7 mov %r14,%rdi 0.00 : bd4c6: 48 8b 70 50 mov 0x50(%rax),%rsi 0.00 : bd4ca: e8 e1 f5 ff ff callq bcab0 0.00 : bd4cf: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : bd4d4: 49 89 c4 mov %rax,%r12 0.00 : bd4d7: 44 8b 0a mov (%rdx),%r9d 0.00 : bd4da: 45 85 c9 test %r9d,%r9d 0.00 : bd4dd: 0f 84 76 f8 ff ff je bcd59 0.00 : bd4e3: eb aa jmp bd48f 0.00 : bd4e5: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : bd4ea: 45 31 e4 xor %r12d,%r12d 0.00 : bd4ed: c7 01 05 00 00 00 movl $0x5,(%rcx) 0.00 : bd4f3: e9 10 f8 ff ff jmpq bcd08 0.00 : bd4f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bd4ff: 00 0.00 : bd500: 83 f8 fe cmp $0xfffffffe,%eax 0.00 : bd503: 74 1f je bd524 0.00 : bd505: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd50c: 00 0.00 : bd50d: 41 89 ed mov %ebp,%r13d 0.00 : bd510: 0f b6 41 08 movzbl 0x8(%rcx),%eax 0.00 : bd514: 3c 18 cmp $0x18,%al 0.00 : bd516: 0f 84 64 02 00 00 je bd780 0.00 : bd51c: 2c 01 sub $0x1,%al 0.00 : bd51e: 0f 84 9b 10 00 00 je be5bf 0.00 : bd524: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : bd52a: 0f 84 9f 15 00 00 je beacf 0.00 : bd530: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd537: 00 0.00 : bd538: 89 5e 38 mov %ebx,0x38(%rsi) 0.00 : bd53b: 48 8b 84 24 70 01 00 mov 0x170(%rsp),%rax 0.00 : bd542: 00 0.00 : bd543: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : bd54a: 00 0.00 : bd54b: 48 89 02 mov %rax,(%rdx) 0.00 : bd54e: 48 8b 84 24 78 01 00 mov 0x178(%rsp),%rax 0.00 : bd555: 00 0.00 : bd556: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : bd55a: 31 c0 xor %eax,%eax 0.00 : bd55c: 4d 85 e4 test %r12,%r12 0.00 : bd55f: c6 42 08 01 movb $0x1,0x8(%rdx) 0.00 : bd563: 0f 94 c0 sete %al 0.00 : bd566: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : bd56d: 00 00 00 0.00 : bd570: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : bd575: 44 8b 02 mov (%rdx),%r8d 0.00 : bd578: 45 85 c0 test %r8d,%r8d 0.00 : bd57b: 74 08 je bd585 0.00 : bd57d: 85 c0 test %eax,%eax 0.00 : bd57f: 0f 85 79 f7 ff ff jne bccfe 0.00 : bd585: 4d 89 e7 mov %r12,%r15 0.00 : bd588: 48 83 7c 24 48 00 cmpq $0x0,0x48(%rsp) 0.00 : bd58e: 75 68 jne bd5f8 0.00 : bd590: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd597: 00 0.00 : bd598: 0f b6 51 08 movzbl 0x8(%rcx),%edx 0.00 : bd59c: 80 fa 0b cmp $0xb,%dl 0.00 : bd59f: 4d 89 fc mov %r15,%r12 0.00 : bd5a2: 0f 85 08 f8 ff ff jne bcdb0 0.00 : bd5a8: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bd5af: 00 0.00 : bd5b0: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : bd5b7: 00 0.00 : bd5b8: 80 fa 17 cmp $0x17,%dl 0.00 : bd5bb: 48 8b 06 mov (%rsi),%rax 0.00 : bd5be: 8b 59 38 mov 0x38(%rcx),%ebx 0.00 : bd5c1: 48 89 84 24 70 01 00 mov %rax,0x170(%rsp) 0.00 : bd5c8: 00 0.00 : bd5c9: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : bd5cd: 48 89 84 24 78 01 00 mov %rax,0x178(%rsp) 0.00 : bd5d4: 00 0.00 : bd5d5: 0f 84 1a f8 ff ff je bcdf5 0.00 : bd5db: 31 ed xor %ebp,%ebp 0.00 : bd5dd: 80 fa 12 cmp $0x12,%dl 0.00 : bd5e0: 40 0f 94 c5 sete %bpl 0.00 : bd5e4: 45 31 ed xor %r13d,%r13d 0.00 : bd5e7: 80 fa 13 cmp $0x13,%dl 0.00 : bd5ea: 41 0f 94 c5 sete %r13b 0.00 : bd5ee: 47 8d 6c 2d ff lea -0x1(%r13,%r13,1),%r13d 0.00 : bd5f3: eb 5a jmp bd64f 0.00 : bd5f5: 0f 1f 00 nopl (%rax) 0.00 : bd5f8: 48 8b 9c 24 88 00 00 mov 0x88(%rsp),%rbx 0.00 : bd5ff: 00 0.00 : bd600: 0f b6 53 08 movzbl 0x8(%rbx),%edx 0.00 : bd604: 80 fa 0b cmp $0xb,%dl 0.00 : bd607: 74 05 je bd60e 0.00 : bd609: 80 fa 17 cmp $0x17,%dl 0.00 : bd60c: 75 8e jne bd59c 0.00 : bd60e: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : bd613: 45 31 e4 xor %r12d,%r12d 0.00 : bd616: c7 06 0d 00 00 00 movl $0xd,(%rsi) 0.00 : bd61c: e9 e7 f6 ff ff jmpq bcd08 0.00 : bd621: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bd628: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd62f: 00 0.00 : bd630: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : bd636: 31 ed xor %ebp,%ebp 0.00 : bd638: 48 8b 01 mov (%rcx),%rax 0.00 : bd63b: 48 89 84 24 70 01 00 mov %rax,0x170(%rsp) 0.00 : bd642: 00 0.00 : bd643: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : bd647: 48 89 84 24 78 01 00 mov %rax,0x178(%rsp) 0.00 : bd64e: 00 0.00 : bd64f: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bd656: 00 0.00 : bd657: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : bd65e: 00 0.00 : bd65f: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : bd666: 00 0.00 : bd667: e8 f4 71 ff ff callq b4860 0.00 : bd66c: 4d 85 e4 test %r12,%r12 0.00 : bd66f: 0f 84 d4 05 00 00 je bdc49 0.00 : bd675: 44 89 ee mov %r13d,%esi 0.00 : bd678: 09 ee or %ebp,%esi 0.00 : bd67a: 0f 84 ab 05 00 00 je bdc2b 0.00 : bd680: 45 31 ff xor %r15d,%r15d 0.00 : bd683: 85 ed test %ebp,%ebp 0.00 : bd685: 0f 8f 3d 05 00 00 jg bdbc8 0.00 : bd68b: 41 80 7c 24 30 11 cmpb $0x11,0x30(%r12) 0.00 : bd691: 0f 84 31 01 00 00 je bd7c8 0.00 : bd697: 31 c9 xor %ecx,%ecx 0.00 : bd699: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : bd69d: 4c 89 e6 mov %r12,%rsi 0.00 : bd6a0: 0f 94 c1 sete %cl 0.00 : bd6a3: 4c 89 f7 mov %r14,%rdi 0.00 : bd6a6: 31 d2 xor %edx,%edx 0.00 : bd6a8: 83 c1 0a add $0xa,%ecx 0.00 : bd6ab: e8 d0 44 ff ff callq b1b80 0.00 : bd6b0: 48 85 c0 test %rax,%rax 0.00 : bd6b3: 48 89 c3 mov %rax,%rbx 0.00 : bd6b6: 74 62 je bd71a 0.00 : bd6b8: 83 c5 02 add $0x2,%ebp 0.00 : bd6bb: 41 39 ed cmp %ebp,%r13d 0.00 : bd6be: 7d 34 jge bd6f4 0.00 : bd6c0: eb 6e jmp bd730 0.00 : bd6c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bd6c8: 48 85 c0 test %rax,%rax 0.00 : bd6cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bd6d0: 74 48 je bd71a 0.00 : bd6d2: 31 d2 xor %edx,%edx 0.00 : bd6d4: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : bd6d9: 48 89 c6 mov %rax,%rsi 0.00 : bd6dc: 4c 89 f7 mov %r14,%rdi 0.00 : bd6df: e8 9c 44 ff ff callq b1b80 0.00 : bd6e4: 48 85 c0 test %rax,%rax 0.00 : bd6e7: 48 89 c3 mov %rax,%rbx 0.00 : bd6ea: 74 2e je bd71a 0.00 : bd6ec: 83 c5 01 add $0x1,%ebp 0.00 : bd6ef: 41 39 ed cmp %ebp,%r13d 0.00 : bd6f2: 7c 3c jl bd730 0.00 : bd6f4: 4c 89 e7 mov %r12,%rdi 0.00 : bd6f7: 4c 89 f6 mov %r14,%rsi 0.00 : bd6fa: e8 d1 43 ff ff callq b1ad0 0.00 : bd6ff: b9 10 00 00 00 mov $0x10,%ecx 0.00 : bd704: 49 89 c4 mov %rax,%r12 0.00 : bd707: 48 89 c2 mov %rax,%rdx 0.00 : bd70a: 48 89 de mov %rbx,%rsi 0.00 : bd70d: 4c 89 f7 mov %r14,%rdi 0.00 : bd710: e8 6b 44 ff ff callq b1b80 0.00 : bd715: 4d 85 e4 test %r12,%r12 0.00 : bd718: 75 ae jne bd6c8 0.00 : bd71a: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : bd71f: 45 31 e4 xor %r12d,%r12d 0.00 : bd722: c7 00 0c 00 00 00 movl $0xc,(%rax) 0.00 : bd728: e9 db f5 ff ff jmpq bcd08 0.00 : bd72d: 0f 1f 00 nopl (%rax) 0.00 : bd730: 4d 85 ff test %r15,%r15 0.00 : bd733: 0f 84 a8 00 00 00 je bd7e1 0.00 : bd739: b9 10 00 00 00 mov $0x10,%ecx 0.00 : bd73e: 48 89 da mov %rbx,%rdx 0.00 : bd741: 4c 89 fe mov %r15,%rsi 0.00 : bd744: 4c 89 f7 mov %r14,%rdi 0.00 : bd747: e8 34 44 ff ff callq b1b80 0.00 : bd74c: 49 89 c4 mov %rax,%r12 0.00 : bd74f: 31 c0 xor %eax,%eax 0.00 : bd751: 4d 85 e4 test %r12,%r12 0.00 : bd754: 0f 94 c0 sete %al 0.00 : bd757: e9 14 fe ff ff jmpq bd570 0.00 : bd75c: 31 ed xor %ebp,%ebp 0.00 : bd75e: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : bd765: 00 0.00 : bd766: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : bd76d: 00 0.00 : bd76e: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : bd775: 00 0.00 : bd776: e8 15 71 ff ff callq b4890 0.00 : bd77b: 41 89 c5 mov %eax,%r13d 0.00 : bd77e: 66 90 xchg %ax,%ax 0.00 : bd780: 41 83 fd fe cmp $0xfffffffe,%r13d 0.00 : bd784: 0f 84 9a fd ff ff je bd524 0.00 : bd78a: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : bd78e: 74 20 je bd7b0 0.00 : bd790: 44 39 ed cmp %r13d,%ebp 0.00 : bd793: 7e 1b jle bd7b0 0.00 : bd795: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : bd79a: 45 31 e4 xor %r12d,%r12d 0.00 : bd79d: c7 03 0a 00 00 00 movl $0xa,(%rbx) 0.00 : bd7a3: e9 60 f5 ff ff jmpq bcd08 0.00 : bd7a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bd7af: 00 0.00 : bd7b0: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bd7b7: 00 0.00 : bd7b8: 80 79 08 18 cmpb $0x18,0x8(%rcx) 0.00 : bd7bc: 0f 84 8d fe ff ff je bd64f 0.00 : bd7c2: eb d1 jmp bd795 0.00 : bd7c4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bd7c8: 49 63 54 24 28 movslq 0x28(%r12),%rdx 0.00 : bd7cd: 48 8d 35 bc 3c ff ff lea -0xc344(%rip),%rsi # b1490 0.00 : bd7d4: 4c 89 e7 mov %r12,%rdi 0.00 : bd7d7: e8 b4 36 ff ff callq b0e90 0.00 : bd7dc: e9 b6 fe ff ff jmpq bd697 0.00 : bd7e1: 49 89 df mov %rbx,%r15 0.00 : bd7e4: e9 9f fd ff ff jmpq bd588 0.00 : bd7e9: 48 8d 15 c8 a8 07 00 lea 0x7a8c8(%rip),%rdx # 1380b8 <__mon_yday+0x1298> 0.00 : bd7f0: 89 c0 mov %eax,%eax 0.00 : bd7f2: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : bd7f6: 48 01 d0 add %rdx,%rax 0.00 : bd7f9: ff e0 jmpq *%rax 0.00 : bd7fb: 48 8b 9c 24 90 00 00 mov 0x90(%rsp),%rbx 0.00 : bd802: 00 0.00 : bd803: 48 8b b4 24 d8 00 00 mov 0xd8(%rsp),%rsi 0.00 : bd80a: 00 0.00 : bd80b: 4c 89 fa mov %r15,%rdx 0.00 : bd80e: 4c 8b 8c 24 80 00 00 mov 0x80(%rsp),%r9 0.00 : bd815: 00 0.00 : bd816: 4c 8b 84 24 a8 01 00 mov 0x1a8(%rsp),%r8 0.00 : bd81d: 00 0.00 : bd81e: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : bd823: 48 8b 7b 50 mov 0x50(%rbx),%rdi 0.00 : bd827: e8 14 e5 ff ff callq bbd40 0.00 : bd82c: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : bd831: 85 c0 test %eax,%eax 0.00 : bd833: 89 06 mov %eax,(%rsi) 0.00 : bd835: 0f 85 51 01 00 00 jne bd98c 0.00 : bd83b: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : bd842: 00 0.00 : bd843: 0f b6 42 08 movzbl 0x8(%rdx),%eax 0.00 : bd847: 3c 02 cmp $0x2,%al 0.00 : bd849: 0f 84 03 0d 00 00 je be552 0.00 : bd84f: 31 d2 xor %edx,%edx 0.00 : bd851: 3c 15 cmp $0x15,%al 0.00 : bd853: 0f 85 49 f9 ff ff jne bd1a2 0.00 : bd859: 48 8b 9c 24 90 00 00 mov 0x90(%rsp),%rbx 0.00 : bd860: 00 0.00 : bd861: 8b b4 24 c0 00 00 00 mov 0xc0(%rsp),%esi 0.00 : bd868: 01 73 38 add %esi,0x38(%rbx) 0.00 : bd86b: 44 8b ac 24 c4 00 00 mov 0xc4(%rsp),%r13d 0.00 : bd872: 00 0.00 : bd873: 45 85 ed test %r13d,%r13d 0.00 : bd876: 74 18 je bd890 0.00 : bd878: 48 8b 84 24 d8 00 00 mov 0xd8(%rsp),%rax 0.00 : bd87f: 00 0.00 : bd880: 48 8d 50 20 lea 0x20(%rax),%rdx 0.00 : bd884: 48 f7 10 notq (%rax) 0.00 : bd887: 48 83 c0 08 add $0x8,%rax 0.00 : bd88b: 48 39 d0 cmp %rdx,%rax 0.00 : bd88e: 75 f4 jne bd884 0.00 : bd890: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : bd897: 01 0.00 : bd898: 7e 20 jle bd8ba 0.00 : bd89a: 49 8b 4e 78 mov 0x78(%r14),%rcx 0.00 : bd89e: 31 d2 xor %edx,%edx 0.00 : bd8a0: 48 8b 9c 24 d8 00 00 mov 0xd8(%rsp),%rbx 0.00 : bd8a7: 00 0.00 : bd8a8: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : bd8ac: 48 21 04 13 and %rax,(%rbx,%rdx,1) 0.00 : bd8b0: 48 83 c2 08 add $0x8,%rdx 0.00 : bd8b4: 48 83 fa 20 cmp $0x20,%rdx 0.00 : bd8b8: 75 e6 jne bd8a0 0.00 : bd8ba: 45 8b 67 34 mov 0x34(%r15),%r12d 0.00 : bd8be: 45 85 e4 test %r12d,%r12d 0.00 : bd8c1: 0f 85 e6 05 00 00 jne bdead 0.00 : bd8c7: 49 83 7f 38 00 cmpq $0x0,0x38(%r15) 0.00 : bd8cc: 0f 85 db 05 00 00 jne bdead 0.00 : bd8d2: 41 8b 6f 40 mov 0x40(%r15),%ebp 0.00 : bd8d6: 85 ed test %ebp,%ebp 0.00 : bd8d8: 0f 85 cf 05 00 00 jne bdead 0.00 : bd8de: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : bd8e5: 01 0.00 : bd8e6: 7e 17 jle bd8ff 0.00 : bd8e8: 41 8b 5f 44 mov 0x44(%r15),%ebx 0.00 : bd8ec: 85 db test %ebx,%ebx 0.00 : bd8ee: 0f 85 b9 05 00 00 jne bdead 0.00 : bd8f4: 41 f6 47 30 01 testb $0x1,0x30(%r15) 0.00 : bd8f9: 0f 85 ae 05 00 00 jne bdead 0.00 : bd8ff: 4c 89 ff mov %r15,%rdi 0.00 : bd902: e8 c9 46 ff ff callq b1fd0 0.00 : bd907: 48 8b 84 24 d8 00 00 mov 0xd8(%rsp),%rax 0.00 : bd90e: 00 0.00 : bd90f: 48 8d 8c 24 b0 01 00 lea 0x1b0(%rsp),%rcx 0.00 : bd916: 00 0.00 : bd917: 31 d2 xor %edx,%edx 0.00 : bd919: 31 f6 xor %esi,%esi 0.00 : bd91b: 4c 89 f7 mov %r14,%rdi 0.00 : bd91e: c6 84 24 b8 01 00 00 movb $0x3,0x1b8(%rsp) 0.00 : bd925: 03 0.00 : bd926: 48 89 84 24 b0 01 00 mov %rax,0x1b0(%rsp) 0.00 : bd92d: 00 0.00 : bd92e: e8 8d 40 ff ff callq b19c0 0.00 : bd933: 48 85 c0 test %rax,%rax 0.00 : bd936: 49 89 c4 mov %rax,%r12 0.00 : bd939: 0f 85 1a f4 ff ff jne bcd59 0.00 : bd93f: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : bd944: c7 02 0c 00 00 00 movl $0xc,(%rdx) 0.00 : bd94a: eb 40 jmp bd98c 0.00 : bd94c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bd950: 48 8b 9c 24 a8 01 00 mov 0x1a8(%rsp),%rbx 0.00 : bd957: 00 0.00 : bd958: 48 89 df mov %rbx,%rdi 0.00 : bd95b: e8 50 32 fc ff callq 80bb0 <__GI_strlen> 0.00 : bd960: 8b 94 24 ec 00 00 00 mov 0xec(%rsp),%edx 0.00 : bd967: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : bd96c: 85 d2 test %edx,%edx 0.00 : bd96e: 0f 85 a4 03 00 00 jne bdd18 0.00 : bd974: 48 83 7c 24 10 01 cmpq $0x1,0x10(%rsp) 0.00 : bd97a: 0f 84 16 0c 00 00 je be596 0.00 : bd980: b8 03 00 00 00 mov $0x3,%eax 0.00 : bd985: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : bd98a: 89 01 mov %eax,(%rcx) 0.00 : bd98c: 48 8b bc 24 d8 00 00 mov 0xd8(%rsp),%rdi 0.00 : bd993: 00 0.00 : bd994: e8 07 0f f6 ff callq 1e8a0 0.00 : bd999: 4c 89 ff mov %r15,%rdi 0.00 : bd99c: e8 2f 46 ff ff callq b1fd0 0.00 : bd9a1: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : bd9a6: 44 8b 19 mov (%rcx),%r11d 0.00 : bd9a9: 45 85 db test %r11d,%r11d 0.00 : bd9ac: 0f 85 4c f3 ff ff jne bccfe 0.00 : bd9b2: 45 31 e4 xor %r12d,%r12d 0.00 : bd9b5: e9 9f f3 ff ff jmpq bcd59 0.00 : bd9ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bd9c0: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : bd9c5: 48 8b 15 bc 43 2b 00 mov 0x2b43bc(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : bd9cc: 48 8b 9c 24 a8 01 00 mov 0x1a8(%rsp),%rbx 0.00 : bd9d3: 00 0.00 : bd9d4: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : bd9d8: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : bd9dc: 8b 48 40 mov 0x40(%rax),%ecx 0.00 : bd9df: 85 c9 test %ecx,%ecx 0.00 : bd9e1: 0f 84 84 04 00 00 je bde6b 0.00 : bd9e7: 48 8b 70 50 mov 0x50(%rax),%rsi 0.00 : bd9eb: 4c 8d 63 01 lea 0x1(%rbx),%r12 0.00 : bd9ef: 48 89 b4 24 20 01 00 mov %rsi,0x120(%rsp) 0.00 : bd9f6: 00 0.00 : bd9f7: 48 8b 50 58 mov 0x58(%rax),%rdx 0.00 : bd9fb: 48 89 94 24 08 01 00 mov %rdx,0x108(%rsp) 0.00 : bda02: 00 0.00 : bda03: 48 8b 48 60 mov 0x60(%rax),%rcx 0.00 : bda07: 48 89 8c 24 18 01 00 mov %rcx,0x118(%rsp) 0.00 : bda0e: 00 0.00 : bda0f: 48 8b 40 68 mov 0x68(%rax),%rax 0.00 : bda13: 48 89 84 24 10 01 00 mov %rax,0x110(%rsp) 0.00 : bda1a: 00 0.00 : bda1b: 0f b6 03 movzbl (%rbx),%eax 0.00 : bda1e: 44 8b 2c 86 mov (%rsi,%rax,4),%r13d 0.00 : bda22: 49 63 c5 movslq %r13d,%rax 0.00 : bda25: 48 85 c0 test %rax,%rax 0.00 : bda28: 0f 88 c6 10 00 00 js beaf4 0.00 : bda2e: 45 85 ed test %r13d,%r13d 0.00 : bda31: 0f 84 0a 0b 00 00 je be541 0.00 : bda37: 48 89 df mov %rbx,%rdi 0.00 : bda3a: e8 71 31 fc ff callq 80bb0 <__GI_strlen> 0.00 : bda3f: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : bda43: 49 39 c4 cmp %rax,%r12 0.00 : bda46: 0f 82 f5 0a 00 00 jb be541 0.00 : bda4c: 48 8b 9c 24 08 01 00 mov 0x108(%rsp),%rbx 0.00 : bda53: 00 0.00 : bda54: 4c 89 e8 mov %r13,%rax 0.00 : bda57: c6 84 24 d1 01 00 00 movb $0x0,0x1d1(%rsp) 0.00 : bda5e: 00 0.00 : bda5f: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : bda64: 44 89 ee mov %r13d,%esi 0.00 : bda67: 45 31 e4 xor %r12d,%r12d 0.00 : bda6a: c1 fe 18 sar $0x18,%esi 0.00 : bda6d: 0f b6 04 03 movzbl (%rbx,%rax,1),%eax 0.00 : bda71: 89 b4 24 04 01 00 00 mov %esi,0x104(%rsp) 0.00 : bda78: 48 89 84 24 f8 00 00 mov %rax,0xf8(%rsp) 0.00 : bda7f: 00 0.00 : bda80: 4c 89 e8 mov %r13,%rax 0.00 : bda83: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : bda88: 48 8d 44 03 01 lea 0x1(%rbx,%rax,1),%rax 0.00 : bda8d: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : bda92: eb 3b jmp bdacf 0.00 : bda94: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bda98: 85 d2 test %edx,%edx 0.00 : bda9a: 74 22 je bdabe 0.00 : bda9c: 48 8b 9c 24 08 01 00 mov 0x108(%rsp),%rbx 0.00 : bdaa3: 00 0.00 : bdaa4: 48 89 d0 mov %rdx,%rax 0.00 : bdaa7: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : bdaac: 0f b6 04 03 movzbl (%rbx,%rax,1),%eax 0.00 : bdab0: 48 39 84 24 f8 00 00 cmp %rax,0xf8(%rsp) 0.00 : bdab7: 00 0.00 : bdab8: 0f 84 78 05 00 00 je be036 0.00 : bdabe: 41 83 c4 01 add $0x1,%r12d 0.00 : bdac2: 41 81 fc 00 01 00 00 cmp $0x100,%r12d 0.00 : bdac9: 0f 84 61 09 00 00 je be430 0.00 : bdacf: 48 8b 8c 24 20 01 00 mov 0x120(%rsp),%rcx 0.00 : bdad6: 00 0.00 : bdad7: 41 0f b6 c4 movzbl %r12b,%eax 0.00 : bdadb: 44 88 a4 24 d0 01 00 mov %r12b,0x1d0(%rsp) 0.00 : bdae2: 00 0.00 : bdae3: 8b 14 81 mov (%rcx,%rax,4),%edx 0.00 : bdae6: 48 63 c2 movslq %edx,%rax 0.00 : bdae9: 48 85 c0 test %rax,%rax 0.00 : bdaec: 79 aa jns bda98 0.00 : bdaee: 48 8b bc 24 18 01 00 mov 0x118(%rsp),%rdi 0.00 : bdaf5: 00 0.00 : bdaf6: 44 0f b6 9c 24 d1 01 movzbl 0x1d1(%rsp),%r11d 0.00 : bdafd: 00 00 0.00 : bdaff: 48 29 c7 sub %rax,%rdi 0.00 : bdb02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bdb08: 8b 17 mov (%rdi),%edx 0.00 : bdb0a: 44 0f b6 47 04 movzbl 0x4(%rdi),%r8d 0.00 : bdb0f: 4c 8d 57 05 lea 0x5(%rdi),%r10 0.00 : bdb13: 48 63 da movslq %edx,%rbx 0.00 : bdb16: 48 85 db test %rbx,%rbx 0.00 : bdb19: 0f 88 01 04 00 00 js bdf20 0.00 : bdb1f: 4d 85 c0 test %r8,%r8 0.00 : bdb22: 0f 84 70 ff ff ff je bda98 0.00 : bdb28: 31 c9 xor %ecx,%ecx 0.00 : bdb2a: 45 3a 1a cmp (%r10),%r11b 0.00 : bdb2d: 74 14 je bdb43 0.00 : bdb2f: 90 nop 0.00 : bdb30: eb 23 jmp bdb55 0.00 : bdb32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bdb38: 0f b6 44 0f 05 movzbl 0x5(%rdi,%rcx,1),%eax 0.00 : bdb3d: 3a 44 0d 01 cmp 0x1(%rbp,%rcx,1),%al 0.00 : bdb41: 75 09 jne bdb4c 0.00 : bdb43: 48 83 c1 01 add $0x1,%rcx 0.00 : bdb47: 49 39 c8 cmp %rcx,%r8 0.00 : bdb4a: 77 ec ja bdb38 0.00 : bdb4c: 49 39 c8 cmp %rcx,%r8 0.00 : bdb4f: 0f 84 43 ff ff ff je bda98 0.00 : bdb55: 49 8d 40 01 lea 0x1(%r8),%rax 0.00 : bdb59: 4b 8d 3c 02 lea (%r10,%r8,1),%rdi 0.00 : bdb5d: 83 e0 03 and $0x3,%eax 0.00 : bdb60: 74 a6 je bdb08 0.00 : bdb62: bb 04 00 00 00 mov $0x4,%ebx 0.00 : bdb67: 48 29 c3 sub %rax,%rbx 0.00 : bdb6a: 48 01 df add %rbx,%rdi 0.00 : bdb6d: eb 99 jmp bdb08 0.00 : bdb6f: 41 8b 77 34 mov 0x34(%r15),%esi 0.00 : bdb73: 3b b4 24 cc 00 00 00 cmp 0xcc(%rsp),%esi 0.00 : bdb7a: 0f 84 78 09 00 00 je be4f8 0.00 : bdb80: 8b 84 24 a8 01 00 00 mov 0x1a8(%rsp),%eax 0.00 : bdb87: 49 8b 17 mov (%r15),%rdx 0.00 : bdb8a: 48 63 ce movslq %esi,%rcx 0.00 : bdb8d: 89 04 8a mov %eax,(%rdx,%rcx,4) 0.00 : bdb90: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : bdb93: 41 89 47 34 mov %eax,0x34(%r15) 0.00 : bdb97: e9 9f fc ff ff jmpq bd83b 0.00 : bdb9c: 0f b6 8c 24 a8 01 00 movzbl 0x1a8(%rsp),%ecx 0.00 : bdba3: 00 0.00 : bdba4: 48 8b 9c 24 d8 00 00 mov 0xd8(%rsp),%rbx 0.00 : bdbab: 00 0.00 : bdbac: b8 01 00 00 00 mov $0x1,%eax 0.00 : bdbb1: 89 ca mov %ecx,%edx 0.00 : bdbb3: 83 e1 3f and $0x3f,%ecx 0.00 : bdbb6: c0 ea 06 shr $0x6,%dl 0.00 : bdbb9: 48 d3 e0 shl %cl,%rax 0.00 : bdbbc: 0f b6 d2 movzbl %dl,%edx 0.00 : bdbbf: 48 09 04 d3 or %rax,(%rbx,%rdx,8) 0.00 : bdbc3: e9 73 fc ff ff jmpq bd83b 0.00 : bdbc8: 83 fd 01 cmp $0x1,%ebp 0.00 : bdbcb: 4c 89 e3 mov %r12,%rbx 0.00 : bdbce: c7 84 24 2c 01 00 00 movl $0x2,0x12c(%rsp) 0.00 : bdbd5: 02 00 00 00 0.00 : bdbd9: 4d 89 e7 mov %r12,%r15 0.00 : bdbdc: 75 1f jne bdbfd 0.00 : bdbde: eb 76 jmp bdc56 0.00 : bdbe0: 48 85 c0 test %rax,%rax 0.00 : bdbe3: 0f 84 31 fb ff ff je bd71a 0.00 : bdbe9: 83 84 24 2c 01 00 00 addl $0x1,0x12c(%rsp) 0.00 : bdbf0: 01 0.00 : bdbf1: 3b ac 24 2c 01 00 00 cmp 0x12c(%rsp),%ebp 0.00 : bdbf8: 7c 59 jl bdc53 0.00 : bdbfa: 49 89 c4 mov %rax,%r12 0.00 : bdbfd: 48 89 df mov %rbx,%rdi 0.00 : bdc00: 4c 89 f6 mov %r14,%rsi 0.00 : bdc03: e8 c8 3e ff ff callq b1ad0 0.00 : bdc08: b9 10 00 00 00 mov $0x10,%ecx 0.00 : bdc0d: 48 89 c3 mov %rax,%rbx 0.00 : bdc10: 48 89 c2 mov %rax,%rdx 0.00 : bdc13: 4c 89 e6 mov %r12,%rsi 0.00 : bdc16: 4c 89 f7 mov %r14,%rdi 0.00 : bdc19: e8 62 3f ff ff callq b1b80 0.00 : bdc1e: 48 85 db test %rbx,%rbx 0.00 : bdc21: 49 89 c7 mov %rax,%r15 0.00 : bdc24: 75 ba jne bdbe0 0.00 : bdc26: e9 ef fa ff ff jmpq bd71a 0.00 : bdc2b: 48 8d 35 1e 44 ff ff lea -0xbbe2(%rip),%rsi # b2050 0.00 : bdc32: 4c 89 e7 mov %r12,%rdi 0.00 : bdc35: 31 d2 xor %edx,%edx 0.00 : bdc37: 45 31 e4 xor %r12d,%r12d 0.00 : bdc3a: e8 51 32 ff ff callq b0e90 0.00 : bdc3f: b8 01 00 00 00 mov $0x1,%eax 0.00 : bdc44: e9 27 f9 ff ff jmpq bd570 0.00 : bdc49: b8 01 00 00 00 mov $0x1,%eax 0.00 : bdc4e: e9 1d f9 ff ff jmpq bd570 0.00 : bdc53: 49 89 dc mov %rbx,%r12 0.00 : bdc56: 44 39 ed cmp %r13d,%ebp 0.00 : bdc59: 0f 84 29 f9 ff ff je bd588 0.00 : bdc5f: 4c 89 e7 mov %r12,%rdi 0.00 : bdc62: 4c 89 f6 mov %r14,%rsi 0.00 : bdc65: e8 66 3e ff ff callq b1ad0 0.00 : bdc6a: 49 89 c4 mov %rax,%r12 0.00 : bdc6d: e9 19 fa ff ff jmpq bd68b 0.00 : bdc72: 48 8b b0 c8 00 00 00 mov 0xc8(%rax),%rsi 0.00 : bdc79: 48 89 b4 24 98 00 00 mov %rsi,0x98(%rsp) 0.00 : bdc80: 00 0.00 : bdc81: 8b 90 a8 00 00 00 mov 0xa8(%rax),%edx 0.00 : bdc87: 89 94 24 a4 00 00 00 mov %edx,0xa4(%rsp) 0.00 : bdc8e: 48 8b 88 b0 00 00 00 mov 0xb0(%rax),%rcx 0.00 : bdc95: 48 89 8c 24 a8 00 00 mov %rcx,0xa8(%rsp) 0.00 : bdc9c: 00 0.00 : bdc9d: 48 8b 80 b8 00 00 00 mov 0xb8(%rax),%rax 0.00 : bdca4: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) 0.00 : bdcab: 00 0.00 : bdcac: e9 e2 f3 ff ff jmpq bd093 0.00 : bdcb1: 81 fa 00 02 00 00 cmp $0x200,%edx 0.00 : bdcb7: 0f 84 7b 01 00 00 je bde38 0.00 : bdcbd: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx 0.00 : bdcc4: 00 0.00 : bdcc5: 31 d2 xor %edx,%edx 0.00 : bdcc7: 31 f6 xor %esi,%esi 0.00 : bdcc9: 4c 89 f7 mov %r14,%rdi 0.00 : bdccc: e8 ef 3c ff ff callq b19c0 0.00 : bdcd1: 48 85 c0 test %rax,%rax 0.00 : bdcd4: 49 89 c4 mov %rax,%r12 0.00 : bdcd7: 0f 85 1c f3 ff ff jne bcff9 0.00 : bdcdd: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : bdce2: c7 02 0c 00 00 00 movl $0xc,(%rdx) 0.00 : bdce8: e9 1b f0 ff ff jmpq bcd08 0.00 : bdced: 0f 1f 00 nopl (%rax) 0.00 : bdcf0: 48 f7 84 24 80 00 00 testq $0x20000,0x80(%rsp) 0.00 : bdcf7: 00 00 00 02 00 0.00 : bdcfc: 0f 85 30 f0 ff ff jne bcd32 0.00 : bdd02: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : bdd07: 45 31 e4 xor %r12d,%r12d 0.00 : bdd0a: c7 00 10 00 00 00 movl $0x10,(%rax) 0.00 : bdd10: e9 f3 ef ff ff jmpq bcd08 0.00 : bdd15: 0f 1f 00 nopl (%rax) 0.00 : bdd18: 48 85 c0 test %rax,%rax 0.00 : bdd1b: 41 89 c0 mov %eax,%r8d 0.00 : bdd1e: 7e 17 jle bdd37 0.00 : bdd20: 48 8d 0c 03 lea (%rbx,%rax,1),%rcx 0.00 : bdd24: 48 89 da mov %rbx,%rdx 0.00 : bdd27: 0f be 02 movsbl (%rdx),%eax 0.00 : bdd2a: 48 83 c2 01 add $0x1,%rdx 0.00 : bdd2e: 48 39 ca cmp %rcx,%rdx 0.00 : bdd31: 46 8d 04 c0 lea (%rax,%r8,8),%r8d 0.00 : bdd35: 75 f0 jne bdd27 0.00 : bdd37: 44 89 c2 mov %r8d,%edx 0.00 : bdd3a: 44 89 c0 mov %r8d,%eax 0.00 : bdd3d: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : bdd44: 00 0.00 : bdd45: c1 fa 1f sar $0x1f,%edx 0.00 : bdd48: f7 bc 24 a4 00 00 00 idivl 0xa4(%rsp) 0.00 : bdd4f: 41 89 d1 mov %edx,%r9d 0.00 : bdd52: 43 8d 04 09 lea (%r9,%r9,1),%eax 0.00 : bdd56: 48 63 f8 movslq %eax,%rdi 0.00 : bdd59: 8b 0c be mov (%rsi,%rdi,4),%ecx 0.00 : bdd5c: 85 c9 test %ecx,%ecx 0.00 : bdd5e: 0f 84 87 0f 00 00 je beceb 0.00 : bdd64: 44 89 c2 mov %r8d,%edx 0.00 : bdd67: 44 89 c0 mov %r8d,%eax 0.00 : bdd6a: c1 fa 1f sar $0x1f,%edx 0.00 : bdd6d: f7 7c 24 34 idivl 0x34(%rsp) 0.00 : bdd71: 8d 44 12 02 lea 0x2(%rdx,%rdx,1),%eax 0.00 : bdd75: 41 8d 54 11 01 lea 0x1(%r9,%rdx,1),%edx 0.00 : bdd7a: 4c 8d 4c be 04 lea 0x4(%rsi,%rdi,4),%r9 0.00 : bdd7f: 01 d2 add %edx,%edx 0.00 : bdd81: 48 98 cltq 0.00 : bdd83: 48 63 d2 movslq %edx,%rdx 0.00 : bdd86: 4c 8d 1c 85 00 00 00 lea 0x0(,%rax,4),%r11 0.00 : bdd8d: 00 0.00 : bdd8e: 4c 8d 14 96 lea (%rsi,%rdx,4),%r10 0.00 : bdd92: eb 15 jmp bdda9 0.00 : bdd94: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bdd98: 41 8b 0a mov (%r10),%ecx 0.00 : bdd9b: 4d 01 d9 add %r11,%r9 0.00 : bdd9e: 4d 01 da add %r11,%r10 0.00 : bdda1: 85 c9 test %ecx,%ecx 0.00 : bdda3: 0f 84 42 0f 00 00 je beceb 0.00 : bdda9: 41 39 c8 cmp %ecx,%r8d 0.00 : bddac: 75 ea jne bdd98 0.00 : bddae: 45 8b 21 mov (%r9),%r12d 0.00 : bddb1: 48 8b 84 24 b0 00 00 mov 0xb0(%rsp),%rax 0.00 : bddb8: 00 0.00 : bddb9: 49 63 d4 movslq %r12d,%rdx 0.00 : bddbc: 44 0f b6 2c 10 movzbl (%rax,%rdx,1),%r13d 0.00 : bddc1: 41 0f b6 c5 movzbl %r13b,%eax 0.00 : bddc5: 48 39 44 24 10 cmp %rax,0x10(%rsp) 0.00 : bddca: 75 cc jne bdd98 0.00 : bddcc: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : bddd3: 00 0.00 : bddd4: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 0.00 : bddd9: 48 8d 7c 11 01 lea 0x1(%rcx,%rdx,1),%rdi 0.00 : bddde: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : bdde3: 48 39 f6 cmp %rsi,%rsi 0.00 : bdde6: 48 89 de mov %rbx,%rsi 0.00 : bdde9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : bddeb: 75 ab jne bdd98 0.00 : bdded: 45 85 c0 test %r8d,%r8d 0.00 : bddf0: 0f 84 f5 0e 00 00 je beceb 0.00 : bddf6: 41 8b 77 38 mov 0x38(%r15),%esi 0.00 : bddfa: 3b b4 24 d4 00 00 00 cmp 0xd4(%rsp),%esi 0.00 : bde01: 0f 84 5b 07 00 00 je be562 0.00 : bde07: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : bde0b: 41 0f b6 c5 movzbl %r13b,%eax 0.00 : bde0f: 48 63 ce movslq %esi,%rcx 0.00 : bde12: 41 8d 44 04 01 lea 0x1(%r12,%rax,1),%eax 0.00 : bde17: 89 04 8a mov %eax,(%rdx,%rcx,4) 0.00 : bde1a: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : bde1d: 41 89 47 38 mov %eax,0x38(%r15) 0.00 : bde21: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : bde26: c7 01 00 00 00 00 movl $0x0,(%rcx) 0.00 : bde2c: e9 0a fa ff ff jmpq bd83b 0.00 : bde31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bde38: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax 0.00 : bde3f: 00 0.00 : bde40: 31 d2 xor %edx,%edx 0.00 : bde42: 31 f6 xor %esi,%esi 0.00 : bde44: 4c 89 f7 mov %r14,%rdi 0.00 : bde47: c7 00 05 00 00 00 movl $0x5,(%rax) 0.00 : bde4d: 48 89 c1 mov %rax,%rcx 0.00 : bde50: e8 6b 3b ff ff callq b19c0 0.00 : bde55: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : bde5c: 00 0.00 : bde5d: 48 89 c3 mov %rax,%rbx 0.00 : bde60: c7 02 0a 00 00 00 movl $0xa,(%rdx) 0.00 : bde66: e9 46 f1 ff ff jmpq bcfb1 0.00 : bde6b: 48 89 df mov %rbx,%rdi 0.00 : bde6e: e8 3d 2d fc ff callq 80bb0 <__GI_strlen> 0.00 : bde73: 48 83 f8 01 cmp $0x1,%rax 0.00 : bde77: 48 89 c2 mov %rax,%rdx 0.00 : bde7a: 0f 85 c1 06 00 00 jne be541 0.00 : bde80: 0f b6 0b movzbl (%rbx),%ecx 0.00 : bde83: 89 c8 mov %ecx,%eax 0.00 : bde85: 83 e1 3f and $0x3f,%ecx 0.00 : bde88: 48 d3 e2 shl %cl,%rdx 0.00 : bde8b: 48 8b 8c 24 d8 00 00 mov 0xd8(%rsp),%rcx 0.00 : bde92: 00 0.00 : bde93: c0 e8 06 shr $0x6,%al 0.00 : bde96: 0f b6 c0 movzbl %al,%eax 0.00 : bde99: 48 09 14 c1 or %rdx,(%rcx,%rax,8) 0.00 : bde9d: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : bdea2: c7 02 00 00 00 00 movl $0x0,(%rdx) 0.00 : bdea8: e9 8e f9 ff ff jmpq bd83b 0.00 : bdead: 41 80 8e a0 00 00 00 orb $0x2,0xa0(%r14) 0.00 : bdeb4: 02 0.00 : bdeb5: 48 8d 9c 24 b0 01 00 lea 0x1b0(%rsp),%rbx 0.00 : bdebc: 00 0.00 : bdebd: 31 d2 xor %edx,%edx 0.00 : bdebf: 31 f6 xor %esi,%esi 0.00 : bdec1: 4c 89 f7 mov %r14,%rdi 0.00 : bdec4: c6 84 24 b8 01 00 00 movb $0x6,0x1b8(%rsp) 0.00 : bdecb: 06 0.00 : bdecc: 48 89 d9 mov %rbx,%rcx 0.00 : bdecf: 4c 89 bc 24 b0 01 00 mov %r15,0x1b0(%rsp) 0.00 : bded6: 00 0.00 : bded7: e8 e4 3a ff ff callq b19c0 0.00 : bdedc: 48 85 c0 test %rax,%rax 0.00 : bdedf: 49 89 c4 mov %rax,%r12 0.00 : bdee2: 0f 84 57 fa ff ff je bd93f 0.00 : bdee8: 48 8b 94 24 d8 00 00 mov 0xd8(%rsp),%rdx 0.00 : bdeef: 00 0.00 : bdef0: 31 c0 xor %eax,%eax 0.00 : bdef2: 48 83 3a 00 cmpq $0x0,(%rdx) 0.00 : bdef6: 0f 85 dd 04 00 00 jne be3d9 0.00 : bdefc: 83 c0 01 add $0x1,%eax 0.00 : bdeff: 48 83 c2 08 add $0x8,%rdx 0.00 : bdf03: 83 f8 04 cmp $0x4,%eax 0.00 : bdf06: 75 ea jne bdef2 0.00 : bdf08: 48 8b bc 24 d8 00 00 mov 0xd8(%rsp),%rdi 0.00 : bdf0f: 00 0.00 : bdf10: e8 8b 09 f6 ff callq 1e8a0 0.00 : bdf15: e9 3f ee ff ff jmpq bcd59 0.00 : bdf1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bdf20: 4d 85 c0 test %r8,%r8 0.00 : bdf23: 0f 84 85 01 00 00 je be0ae 0.00 : bdf29: 41 0f b6 12 movzbl (%r10),%edx 0.00 : bdf2d: 31 c0 xor %eax,%eax 0.00 : bdf2f: 44 38 da cmp %r11b,%dl 0.00 : bdf32: 74 1b je bdf4f 0.00 : bdf34: e9 6b 01 00 00 jmpq be0a4 0.00 : bdf39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bdf40: 0f b6 74 07 05 movzbl 0x5(%rdi,%rax,1),%esi 0.00 : bdf45: 0f b6 4c 05 01 movzbl 0x1(%rbp,%rax,1),%ecx 0.00 : bdf4a: 40 38 ce cmp %cl,%sil 0.00 : bdf4d: 75 1c jne bdf6b 0.00 : bdf4f: 48 83 c0 01 add $0x1,%rax 0.00 : bdf53: 49 39 c0 cmp %rax,%r8 0.00 : bdf56: 77 e8 ja bdf40 0.00 : bdf58: 0f 84 50 01 00 00 je be0ae 0.00 : bdf5e: 41 0f b6 34 02 movzbl (%r10,%rax,1),%esi 0.00 : bdf63: 0f b6 8c 04 d1 01 00 movzbl 0x1d1(%rsp,%rax,1),%ecx 0.00 : bdf6a: 00 0.00 : bdf6b: 40 38 ce cmp %cl,%sil 0.00 : bdf6e: 0f 87 7c 00 00 00 ja bdff0 0.00 : bdf74: 47 0f b6 0c 02 movzbl (%r10,%r8,1),%r9d 0.00 : bdf79: 31 c9 xor %ecx,%ecx 0.00 : bdf7b: 4a 8d 74 07 06 lea 0x6(%rdi,%r8,1),%rsi 0.00 : bdf80: 45 38 d9 cmp %r11b,%r9b 0.00 : bdf83: 74 1d je bdfa2 0.00 : bdf85: e9 84 01 00 00 jmpq be10e 0.00 : bdf8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bdf90: 44 0f b6 0e movzbl (%rsi),%r9d 0.00 : bdf94: 0f b6 44 0d 01 movzbl 0x1(%rbp,%rcx,1),%eax 0.00 : bdf99: 48 83 c6 01 add $0x1,%rsi 0.00 : bdf9d: 41 38 c1 cmp %al,%r9b 0.00 : bdfa0: 75 20 jne bdfc2 0.00 : bdfa2: 48 83 c1 01 add $0x1,%rcx 0.00 : bdfa6: 49 39 c8 cmp %rcx,%r8 0.00 : bdfa9: 77 e5 ja bdf90 0.00 : bdfab: 0f 84 12 01 00 00 je be0c3 0.00 : bdfb1: 49 8d 04 0a lea (%r10,%rcx,1),%rax 0.00 : bdfb5: 46 0f b6 0c 00 movzbl (%rax,%r8,1),%r9d 0.00 : bdfba: 0f b6 84 0c d1 01 00 movzbl 0x1d1(%rsp,%rcx,1),%eax 0.00 : bdfc1: 00 0.00 : bdfc2: 41 38 c1 cmp %al,%r9b 0.00 : bdfc5: 0f 83 f8 00 00 00 jae be0c3 0.00 : bdfcb: 4b 8d 04 00 lea (%r8,%r8,1),%rax 0.00 : bdfcf: 49 8d 3c 02 lea (%r10,%rax,1),%rdi 0.00 : bdfd3: 48 83 c0 01 add $0x1,%rax 0.00 : bdfd7: 83 e0 03 and $0x3,%eax 0.00 : bdfda: 0f 84 28 fb ff ff je bdb08 0.00 : bdfe0: ba 04 00 00 00 mov $0x4,%edx 0.00 : bdfe5: 48 29 c2 sub %rax,%rdx 0.00 : bdfe8: 48 01 d7 add %rdx,%rdi 0.00 : bdfeb: e9 18 fb ff ff jmpq bdb08 0.00 : bdff0: 4b 8d 04 00 lea (%r8,%r8,1),%rax 0.00 : bdff4: 49 8d 3c 02 lea (%r10,%rax,1),%rdi 0.00 : bdff8: 48 83 c0 01 add $0x1,%rax 0.00 : bdffc: 83 e0 03 and $0x3,%eax 0.00 : bdfff: 0f 84 03 fb ff ff je bdb08 0.00 : be005: be 04 00 00 00 mov $0x4,%esi 0.00 : be00a: 48 29 c6 sub %rax,%rsi 0.00 : be00d: 48 01 f7 add %rsi,%rdi 0.00 : be010: e9 f3 fa ff ff jmpq bdb08 0.00 : be015: 48 8b 05 6c 3d 2b 00 mov 0x2b3d6c(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : be01c: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : be020: 48 8b 00 mov (%rax),%rax 0.00 : be023: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : be027: 48 05 00 01 00 00 add $0x100,%rax 0.00 : be02d: 48 89 04 3b mov %rax,(%rbx,%rdi,1) 0.00 : be031: e9 ff ee ff ff jmpq bcf35 0.00 : be036: 89 d0 mov %edx,%eax 0.00 : be038: c1 f8 18 sar $0x18,%eax 0.00 : be03b: 39 84 24 04 01 00 00 cmp %eax,0x104(%rsp) 0.00 : be042: 0f 85 76 fa ff ff jne bdabe 0.00 : be048: 48 89 d0 mov %rdx,%rax 0.00 : be04b: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : be050: 31 c9 xor %ecx,%ecx 0.00 : be052: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : be057: 48 8d 54 03 01 lea 0x1(%rbx,%rax,1),%rdx 0.00 : be05c: 0f b6 06 movzbl (%rsi),%eax 0.00 : be05f: 3a 02 cmp (%rdx),%al 0.00 : be061: 0f 85 57 fa ff ff jne bdabe 0.00 : be067: 48 83 c1 01 add $0x1,%rcx 0.00 : be06b: 48 83 c6 01 add $0x1,%rsi 0.00 : be06f: 48 83 c2 01 add $0x1,%rdx 0.00 : be073: 48 3b 8c 24 f8 00 00 cmp 0xf8(%rsp),%rcx 0.00 : be07a: 00 0.00 : be07b: 76 df jbe be05c 0.00 : be07d: 44 89 e0 mov %r12d,%eax 0.00 : be080: 48 8b b4 24 d8 00 00 mov 0xd8(%rsp),%rsi 0.00 : be087: 00 0.00 : be088: 44 89 e1 mov %r12d,%ecx 0.00 : be08b: c1 e8 06 shr $0x6,%eax 0.00 : be08e: 83 e1 3f and $0x3f,%ecx 0.00 : be091: ba 01 00 00 00 mov $0x1,%edx 0.00 : be096: 89 c0 mov %eax,%eax 0.00 : be098: 48 d3 e2 shl %cl,%rdx 0.00 : be09b: 48 09 14 c6 or %rdx,(%rsi,%rax,8) 0.00 : be09f: e9 1a fa ff ff jmpq bdabe 0.00 : be0a4: 89 d6 mov %edx,%esi 0.00 : be0a6: 44 89 d9 mov %r11d,%ecx 0.00 : be0a9: e9 bd fe ff ff jmpq bdf6b 0.00 : be0ae: 31 c0 xor %eax,%eax 0.00 : be0b0: 48 8b 8c 24 10 01 00 mov 0x110(%rsp),%rcx 0.00 : be0b7: 00 0.00 : be0b8: 48 29 d8 sub %rbx,%rax 0.00 : be0bb: 8b 14 81 mov (%rcx,%rax,4),%edx 0.00 : be0be: e9 d5 f9 ff ff jmpq bda98 0.00 : be0c3: 31 f6 xor %esi,%esi 0.00 : be0c5: 41 38 d3 cmp %dl,%r11b 0.00 : be0c8: 75 10 jne be0da 0.00 : be0ca: 48 83 c6 01 add $0x1,%rsi 0.00 : be0ce: 44 0f b6 5c 35 01 movzbl 0x1(%rbp,%rsi,1),%r11d 0.00 : be0d4: 45 38 1c 32 cmp %r11b,(%r10,%rsi,1) 0.00 : be0d8: 74 f0 je be0ca 0.00 : be0da: 49 8d 3c 32 lea (%r10,%rsi,1),%rdi 0.00 : be0de: 31 c0 xor %eax,%eax 0.00 : be0e0: eb 09 jmp be0eb 0.00 : be0e2: 44 0f b6 9c 34 d1 01 movzbl 0x1d1(%rsp,%rsi,1),%r11d 0.00 : be0e9: 00 00 0.00 : be0eb: 0f b6 0f movzbl (%rdi),%ecx 0.00 : be0ee: 41 0f b6 d3 movzbl %r11b,%edx 0.00 : be0f2: 48 83 c6 01 add $0x1,%rsi 0.00 : be0f6: 48 c1 e0 08 shl $0x8,%rax 0.00 : be0fa: 48 83 c7 01 add $0x1,%rdi 0.00 : be0fe: 29 ca sub %ecx,%edx 0.00 : be100: 49 39 f0 cmp %rsi,%r8 0.00 : be103: 48 63 d2 movslq %edx,%rdx 0.00 : be106: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : be10a: 77 d6 ja be0e2 0.00 : be10c: eb a2 jmp be0b0 0.00 : be10e: 44 89 d8 mov %r11d,%eax 0.00 : be111: e9 ac fe ff ff jmpq bdfc2 0.00 : be116: 41 80 4f 30 01 orb $0x1,0x30(%r15) 0.00 : be11b: 48 f7 84 24 80 00 00 testq $0x100,0x80(%rsp) 0.00 : be122: 00 00 01 00 00 0.00 : be127: 74 0f je be138 0.00 : be129: 48 8b 94 24 d8 00 00 mov 0xd8(%rsp),%rdx 0.00 : be130: 00 0.00 : be131: 48 81 0a 00 04 00 00 orq $0x400,(%rdx) 0.00 : be138: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : be13f: 00 0.00 : be140: 8b 9c 24 c0 00 00 00 mov 0xc0(%rsp),%ebx 0.00 : be147: 01 59 38 add %ebx,0x38(%rcx) 0.00 : be14a: 48 89 ce mov %rcx,%rsi 0.00 : be14d: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : be154: 00 0.00 : be155: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : be15c: 00 0.00 : be15d: e8 fe 2e ff ff callq b1060 0.00 : be162: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : be169: 00 0.00 : be16a: 89 84 24 c0 00 00 00 mov %eax,0xc0(%rsp) 0.00 : be171: 0f b6 46 08 movzbl 0x8(%rsi),%eax 0.00 : be175: c7 84 24 c4 00 00 00 movl $0x1,0xc4(%rsp) 0.00 : be17c: 01 00 00 00 0.00 : be180: 3c 02 cmp $0x2,%al 0.00 : be182: 0f 85 97 ef ff ff jne bd11f 0.00 : be188: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : be18d: c7 00 02 00 00 00 movl $0x2,(%rax) 0.00 : be193: e9 f4 f7 ff ff jmpq bd98c 0.00 : be198: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : be19f: 00 0.00 : be1a0: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : be1a7: 00 0.00 : be1a8: 8b 84 24 c0 00 00 00 mov 0xc0(%rsp),%eax 0.00 : be1af: 01 46 38 add %eax,0x38(%rsi) 0.00 : be1b2: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : be1b9: 00 0.00 : be1ba: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : be1c1: 00 0.00 : be1c2: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : be1c7: e8 94 2e ff ff callq b1060 0.00 : be1cc: 89 c1 mov %eax,%ecx 0.00 : be1ce: 0f b6 84 24 88 01 00 movzbl 0x188(%rsp),%eax 0.00 : be1d5: 00 0.00 : be1d6: 3c 02 cmp $0x2,%al 0.00 : be1d8: 0f 84 d1 08 00 00 je beaaf 0.00 : be1de: 3c 15 cmp $0x15,%al 0.00 : be1e0: 0f 84 8f 06 00 00 je be875 0.00 : be1e6: 4c 8b 8c 24 80 00 00 mov 0x80(%rsp),%r9 0.00 : be1ed: 00 0.00 : be1ee: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : be1f3: 48 8d 84 24 30 01 00 lea 0x130(%rsp),%rax 0.00 : be1fa: 00 0.00 : be1fb: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : be202: 00 0.00 : be203: 48 8d bc 24 90 01 00 lea 0x190(%rsp),%rdi 0.00 : be20a: 00 0.00 : be20b: 4d 89 f0 mov %r14,%r8 0.00 : be20e: 48 89 84 24 98 01 00 mov %rax,0x198(%rsp) 0.00 : be215: 00 0.00 : be216: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : be21d: e8 8e 2f ff ff callq b11b0 0.00 : be222: 85 c0 test %eax,%eax 0.00 : be224: 0f 85 3f 06 00 00 jne be869 0.00 : be22a: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : be231: 00 0.00 : be232: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : be239: 00 0.00 : be23a: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : be241: 00 0.00 : be242: e8 19 2e ff ff callq b1060 0.00 : be247: 89 84 24 c0 00 00 00 mov %eax,0xc0(%rsp) 0.00 : be24e: 8b 84 24 a0 01 00 00 mov 0x1a0(%rsp),%eax 0.00 : be255: 83 f8 02 cmp $0x2,%eax 0.00 : be258: 0f 84 3a 04 00 00 je be698 0.00 : be25e: 83 f8 04 cmp $0x4,%eax 0.00 : be261: 0f 84 31 04 00 00 je be698 0.00 : be267: 8b 9c 24 90 01 00 00 mov 0x190(%rsp),%ebx 0.00 : be26e: 83 fb 02 cmp $0x2,%ebx 0.00 : be271: 0f 84 21 04 00 00 je be698 0.00 : be277: 83 fb 04 cmp $0x4,%ebx 0.00 : be27a: 0f 84 18 04 00 00 je be698 0.00 : be280: 85 c0 test %eax,%eax 0.00 : be282: 0f 85 f2 03 00 00 jne be67a 0.00 : be288: 8b 84 24 ec 00 00 00 mov 0xec(%rsp),%eax 0.00 : be28f: 85 c0 test %eax,%eax 0.00 : be291: 0f 85 16 07 00 00 jne be9ad 0.00 : be297: 0f b6 84 24 a8 01 00 movzbl 0x1a8(%rsp),%eax 0.00 : be29e: 00 0.00 : be29f: 48 8b 8c 24 e0 00 00 mov 0xe0(%rsp),%rcx 0.00 : be2a6: 00 0.00 : be2a7: 0f b6 04 01 movzbl (%rcx,%rax,1),%eax 0.00 : be2ab: 89 84 24 bc 00 00 00 mov %eax,0xbc(%rsp) 0.00 : be2b2: 85 db test %ebx,%ebx 0.00 : be2b4: 0f 85 e5 05 00 00 jne be89f 0.00 : be2ba: 8b 9c 24 ec 00 00 00 mov 0xec(%rsp),%ebx 0.00 : be2c1: 85 db test %ebx,%ebx 0.00 : be2c3: 0f 85 c0 06 00 00 jne be989 0.00 : be2c9: 0f b6 84 24 98 01 00 movzbl 0x198(%rsp),%eax 0.00 : be2d0: 00 0.00 : be2d1: 48 8b 8c 24 e0 00 00 mov 0xe0(%rsp),%rcx 0.00 : be2d8: 00 0.00 : be2d9: 44 0f b6 24 01 movzbl (%rcx,%rax,1),%r12d 0.00 : be2de: 83 bc 24 bc 00 00 00 cmpl $0xffffffff,0xbc(%rsp) 0.00 : be2e5: ff 0.00 : be2e6: 0f 84 94 f6 ff ff je bd980 0.00 : be2ec: 41 83 fc ff cmp $0xffffffff,%r12d 0.00 : be2f0: 0f 84 8a f6 ff ff je bd980 0.00 : be2f6: 48 f7 84 24 80 00 00 testq $0x10000,0x80(%rsp) 0.00 : be2fd: 00 00 00 01 00 0.00 : be302: 74 0e je be312 0.00 : be304: 44 39 a4 24 bc 00 00 cmp %r12d,0xbc(%rsp) 0.00 : be30b: 00 0.00 : be30c: 0f 87 86 03 00 00 ja be698 0.00 : be312: 8b bc 24 ec 00 00 00 mov 0xec(%rsp),%edi 0.00 : be319: 85 ff test %edi,%edi 0.00 : be31b: 75 0a jne be327 0.00 : be31d: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : be324: 01 0.00 : be325: 7e 38 jle be35f 0.00 : be327: 41 8b 47 40 mov 0x40(%r15),%eax 0.00 : be32b: 3b 84 24 d0 00 00 00 cmp 0xd0(%rsp),%eax 0.00 : be332: 0f 84 31 01 00 00 je be469 0.00 : be338: 8b 8c 24 bc 00 00 00 mov 0xbc(%rsp),%ecx 0.00 : be33f: 48 63 d0 movslq %eax,%rdx 0.00 : be342: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : be346: 89 0c 90 mov %ecx,(%rax,%rdx,4) 0.00 : be349: 41 8b 47 40 mov 0x40(%r15),%eax 0.00 : be34d: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : be351: 48 63 c8 movslq %eax,%rcx 0.00 : be354: 83 c0 01 add $0x1,%eax 0.00 : be357: 44 89 24 8a mov %r12d,(%rdx,%rcx,4) 0.00 : be35b: 41 89 47 40 mov %eax,0x40(%r15) 0.00 : be35f: 4c 8b ac 24 e0 00 00 mov 0xe0(%rsp),%r13 0.00 : be366: 00 0.00 : be367: 31 db xor %ebx,%ebx 0.00 : be369: eb 4b jmp be3b6 0.00 : be36b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : be370: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : be375: 39 84 24 bc 00 00 00 cmp %eax,0xbc(%rsp) 0.00 : be37c: 77 25 ja be3a3 0.00 : be37e: 41 39 c4 cmp %eax,%r12d 0.00 : be381: 72 20 jb be3a3 0.00 : be383: 89 d8 mov %ebx,%eax 0.00 : be385: 48 8b 94 24 d8 00 00 mov 0xd8(%rsp),%rdx 0.00 : be38c: 00 0.00 : be38d: 89 d9 mov %ebx,%ecx 0.00 : be38f: c1 e8 06 shr $0x6,%eax 0.00 : be392: 83 e1 3f and $0x3f,%ecx 0.00 : be395: be 01 00 00 00 mov $0x1,%esi 0.00 : be39a: 89 c0 mov %eax,%eax 0.00 : be39c: 48 d3 e6 shl %cl,%rsi 0.00 : be39f: 48 09 34 c2 or %rsi,(%rdx,%rax,8) 0.00 : be3a3: 83 c3 01 add $0x1,%ebx 0.00 : be3a6: 49 83 c5 01 add $0x1,%r13 0.00 : be3aa: 81 fb 00 01 00 00 cmp $0x100,%ebx 0.00 : be3b0: 0f 84 05 01 00 00 je be4bb 0.00 : be3b6: 8b b4 24 ec 00 00 00 mov 0xec(%rsp),%esi 20.00 : be3bd: 85 f6 test %esi,%esi 0.00 : be3bf: 74 af je be370 0.00 : be3c1: 89 df mov %ebx,%edi 0.00 : be3c3: e8 18 e6 fc ff callq 8c9e0 0.00 : be3c8: 48 8b bc 24 98 00 00 mov 0x98(%rsp),%rdi 0.00 : be3cf: 00 0.00 : be3d0: 89 c6 mov %eax,%esi 0.00 : be3d2: e8 f9 d4 f6 ff callq 2b8d0 <__collseq_table_lookup> 20.00 : be3d7: eb 9c jmp be375 0.00 : be3d9: 48 8b b4 24 d8 00 00 mov 0xd8(%rsp),%rsi 0.00 : be3e0: 00 0.00 : be3e1: 31 d2 xor %edx,%edx 0.00 : be3e3: 48 89 d9 mov %rbx,%rcx 0.00 : be3e6: 4c 89 f7 mov %r14,%rdi 0.00 : be3e9: c6 84 24 b8 01 00 00 movb $0x3,0x1b8(%rsp) 0.00 : be3f0: 03 0.00 : be3f1: 48 89 b4 24 b0 01 00 mov %rsi,0x1b0(%rsp) 0.00 : be3f8: 00 0.00 : be3f9: 31 f6 xor %esi,%esi 0.00 : be3fb: e8 c0 35 ff ff callq b19c0 0.00 : be400: 48 85 c0 test %rax,%rax 0.00 : be403: 48 89 c6 mov %rax,%rsi 0.00 : be406: 0f 84 33 f5 ff ff je bd93f 0.00 : be40c: 4c 89 e2 mov %r12,%rdx 0.00 : be40f: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : be414: 4c 89 f7 mov %r14,%rdi 0.00 : be417: e8 64 37 ff ff callq b1b80 0.00 : be41c: 48 85 c0 test %rax,%rax 0.00 : be41f: 49 89 c4 mov %rax,%r12 0.00 : be422: 0f 85 31 e9 ff ff jne bcd59 0.00 : be428: e9 12 f5 ff ff jmpq bd93f 0.00 : be42d: 0f 1f 00 nopl (%rax) 0.00 : be430: 41 8b 4f 3c mov 0x3c(%r15),%ecx 0.00 : be434: 3b 8c 24 c8 00 00 00 cmp 0xc8(%rsp),%ecx 0.00 : be43b: 0f 84 76 08 00 00 je becb7 0.00 : be441: 49 8b 57 10 mov 0x10(%r15),%rdx 0.00 : be445: 48 63 c1 movslq %ecx,%rax 0.00 : be448: 44 89 2c 82 mov %r13d,(%rdx,%rax,4) 0.00 : be44c: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : be44f: 41 89 47 3c mov %eax,0x3c(%r15) 0.00 : be453: e9 45 fa ff ff jmpq bde9d 0.00 : be458: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : be45f: 00 0.00 : be460: c6 42 08 01 movb $0x1,0x8(%rdx) 0.00 : be464: e9 be ec ff ff jmpq bd127 0.00 : be469: 8b 84 24 d0 00 00 00 mov 0xd0(%rsp),%eax 0.00 : be470: 8d 44 00 01 lea 0x1(%rax,%rax,1),%eax 0.00 : be474: 89 84 24 d0 00 00 00 mov %eax,0xd0(%rsp) 0.00 : be47b: 48 98 cltq 0.00 : be47d: 49 8b 7f 18 mov 0x18(%r15),%rdi 0.00 : be481: 48 8d 1c 85 00 00 00 lea 0x0(,%rax,4),%rbx 0.00 : be488: 00 0.00 : be489: 48 89 de mov %rbx,%rsi 0.00 : be48c: e8 af 03 f6 ff callq 1e840 0.00 : be491: 49 8b 7f 20 mov 0x20(%r15),%rdi 0.00 : be495: 49 89 c5 mov %rax,%r13 0.00 : be498: 48 89 de mov %rbx,%rsi 0.00 : be49b: e8 a0 03 f6 ff callq 1e840 0.00 : be4a0: 4d 85 ed test %r13,%r13 0.00 : be4a3: 74 26 je be4cb 0.00 : be4a5: 48 85 c0 test %rax,%rax 0.00 : be4a8: 74 21 je be4cb 0.00 : be4aa: 49 89 47 20 mov %rax,0x20(%r15) 0.00 : be4ae: 4d 89 6f 18 mov %r13,0x18(%r15) 0.00 : be4b2: 41 8b 47 40 mov 0x40(%r15),%eax 0.00 : be4b6: e9 7d fe ff ff jmpq be338 0.00 : be4bb: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : be4c0: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : be4c6: e9 70 f3 ff ff jmpq bd83b 0.00 : be4cb: b8 0c 00 00 00 mov $0xc,%eax 0.00 : be4d0: e9 b0 f4 ff ff jmpq bd985 0.00 : be4d5: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : be4da: 45 31 e4 xor %r12d,%r12d 0.00 : be4dd: c7 01 0d 00 00 00 movl $0xd,(%rcx) 0.00 : be4e3: e9 20 e8 ff ff jmpq bcd08 0.00 : be4e8: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : be4ed: c7 01 0c 00 00 00 movl $0xc,(%rcx) 0.00 : be4f3: e9 10 e8 ff ff jmpq bcd08 0.00 : be4f8: 8b b4 24 cc 00 00 00 mov 0xcc(%rsp),%esi 0.00 : be4ff: 8d 74 36 01 lea 0x1(%rsi,%rsi,1),%esi 0.00 : be503: 89 b4 24 cc 00 00 00 mov %esi,0xcc(%rsp) 0.00 : be50a: 49 8b 3f mov (%r15),%rdi 0.00 : be50d: 48 63 f6 movslq %esi,%rsi 0.00 : be510: 48 c1 e6 02 shl $0x2,%rsi 0.00 : be514: e8 27 03 f6 ff callq 1e840 0.00 : be519: 48 85 c0 test %rax,%rax 0.00 : be51c: 0f 84 1d f4 ff ff je bd93f 0.00 : be522: 49 89 07 mov %rax,(%r15) 0.00 : be525: 41 8b 77 34 mov 0x34(%r15),%esi 0.00 : be529: e9 52 f6 ff ff jmpq bdb80 0.00 : be52e: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : be533: 45 31 e4 xor %r12d,%r12d 0.00 : be536: c7 02 0d 00 00 00 movl $0xd,(%rdx) 0.00 : be53c: e9 c7 e7 ff ff jmpq bcd08 0.00 : be541: b8 03 00 00 00 mov $0x3,%eax 0.00 : be546: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : be54b: 89 03 mov %eax,(%rbx) 0.00 : be54d: e9 3a f4 ff ff jmpq bd98c 0.00 : be552: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : be557: c7 01 07 00 00 00 movl $0x7,(%rcx) 0.00 : be55d: e9 2a f4 ff ff jmpq bd98c 0.00 : be562: 8b 9c 24 d4 00 00 00 mov 0xd4(%rsp),%ebx 0.00 : be569: 8d 5c 1b 01 lea 0x1(%rbx,%rbx,1),%ebx 0.00 : be56d: 89 9c 24 d4 00 00 00 mov %ebx,0xd4(%rsp) 0.00 : be574: 49 8b 7f 08 mov 0x8(%r15),%rdi 0.00 : be578: 48 63 f3 movslq %ebx,%rsi 0.00 : be57b: 48 c1 e6 02 shl $0x2,%rsi 0.00 : be57f: e8 bc 02 f6 ff callq 1e840 0.00 : be584: 48 85 c0 test %rax,%rax 0.00 : be587: 74 4c je be5d5 0.00 : be589: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : be58d: 41 8b 77 38 mov 0x38(%r15),%esi 0.00 : be591: e9 71 f8 ff ff jmpq bde07 0.00 : be596: 0f b6 0b movzbl (%rbx),%ecx 0.00 : be599: 48 8b b4 24 d8 00 00 mov 0xd8(%rsp),%rsi 0.00 : be5a0: 00 0.00 : be5a1: 89 c8 mov %ecx,%eax 0.00 : be5a3: 83 e1 3f and $0x3f,%ecx 0.00 : be5a6: 48 d3 64 24 10 shlq %cl,0x10(%rsp) 0.00 : be5ab: c0 e8 06 shr $0x6,%al 0.00 : be5ae: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : be5b3: 0f b6 c0 movzbl %al,%eax 0.00 : be5b6: 48 09 14 c6 or %rdx,(%rsi,%rax,8) 0.00 : be5ba: e9 62 f8 ff ff jmpq bde21 0.00 : be5bf: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : be5c6: 00 0.00 : be5c7: 80 3e 2c cmpb $0x2c,(%rsi) 0.00 : be5ca: 0f 85 54 ef ff ff jne bd524 0.00 : be5d0: e9 89 f1 ff ff jmpq bd75e 0.00 : be5d5: b0 0c mov $0xc,%al 0.00 : be5d7: e9 a9 f3 ff ff jmpq bd985 0.00 : be5dc: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : be5e1: c7 03 0c 00 00 00 movl $0xc,(%rbx) 0.00 : be5e7: e9 1c e7 ff ff jmpq bcd08 0.00 : be5ec: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : be5f3: 00 0.00 : be5f4: 4c 8b 4c 24 78 mov 0x78(%rsp),%r9 0.00 : be5f9: 45 8d 47 01 lea 0x1(%r15),%r8d 0.00 : be5fd: 48 8b 8c 24 80 00 00 mov 0x80(%rsp),%rcx 0.00 : be604: 00 0.00 : be605: 48 89 f2 mov %rsi,%rdx 0.00 : be608: 48 89 de mov %rbx,%rsi 0.00 : be60b: e8 a0 08 00 00 callq beeb0 0.00 : be610: 48 89 c7 mov %rax,%rdi 0.00 : be613: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : be618: 8b 00 mov (%rax),%eax 0.00 : be61a: 85 c0 test %eax,%eax 0.00 : be61c: 0f 85 dc e6 ff ff jne bccfe 0.00 : be622: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : be629: 00 0.00 : be62a: 80 7a 08 09 cmpb $0x9,0x8(%rdx) 0.00 : be62e: 0f 84 d7 ed ff ff je bd40b 0.00 : be634: 48 85 ff test %rdi,%rdi 0.00 : be637: 74 0e je be647 0.00 : be639: 48 8d 35 10 3a ff ff lea -0xc5f0(%rip),%rsi # b2050 0.00 : be640: 31 d2 xor %edx,%edx 0.00 : be642: e8 49 28 ff ff callq b0e90 0.00 : be647: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : be64c: c7 01 08 00 00 00 movl $0x8,(%rcx) 0.00 : be652: e9 a7 e6 ff ff jmpq bccfe 0.00 : be657: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : be65c: c7 00 0c 00 00 00 movl $0xc,(%rax) 0.00 : be662: e9 a1 e6 ff ff jmpq bcd08 0.00 : be667: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : be66c: 45 31 e4 xor %r12d,%r12d 0.00 : be66f: c7 06 06 00 00 00 movl $0x6,(%rsi) 0.00 : be675: e9 8e e6 ff ff jmpq bcd08 0.00 : be67a: 83 f8 01 cmp $0x1,%eax 0.00 : be67d: 0f 84 fe 00 00 00 je be781 0.00 : be683: 83 f8 03 cmp $0x3,%eax 0.00 : be686: 74 1a je be6a2 0.00 : be688: c7 84 24 bc 00 00 00 movl $0xffffffff,0xbc(%rsp) 0.00 : be68f: ff ff ff ff 0.00 : be693: e9 1a fc ff ff jmpq be2b2 0.00 : be698: b8 0b 00 00 00 mov $0xb,%eax 0.00 : be69d: e9 e3 f2 ff ff jmpq bd985 0.00 : be6a2: 4c 8b a4 24 a8 01 00 mov 0x1a8(%rsp),%r12 0.00 : be6a9: 00 0.00 : be6aa: 4c 89 e7 mov %r12,%rdi 0.00 : be6ad: e8 fe 24 fc ff callq 80bb0 <__GI_strlen> 0.00 : be6b2: 49 89 c0 mov %rax,%r8 0.00 : be6b5: 8b 84 24 ec 00 00 00 mov 0xec(%rsp),%eax 0.00 : be6bc: 85 c0 test %eax,%eax 0.00 : be6be: 0f 84 f3 00 00 00 je be7b7 0.00 : be6c4: 4d 85 c0 test %r8,%r8 0.00 : be6c7: 44 89 44 24 1c mov %r8d,0x1c(%rsp) 0.00 : be6cc: 7e 1e jle be6ec 0.00 : be6ce: 4b 8d 0c 04 lea (%r12,%r8,1),%rcx 0.00 : be6d2: 4c 89 e2 mov %r12,%rdx 0.00 : be6d5: 0f be 02 movsbl (%rdx),%eax 0.00 : be6d8: 8b 74 24 1c mov 0x1c(%rsp),%esi 0.00 : be6dc: 48 83 c2 01 add $0x1,%rdx 0.00 : be6e0: 48 39 ca cmp %rcx,%rdx 0.00 : be6e3: 8d 04 f0 lea (%rax,%rsi,8),%eax 0.00 : be6e6: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : be6ea: 75 e9 jne be6d5 0.00 : be6ec: 8b 54 24 1c mov 0x1c(%rsp),%edx 0.00 : be6f0: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : be6f7: 00 0.00 : be6f8: 89 d0 mov %edx,%eax 0.00 : be6fa: c1 fa 1f sar $0x1f,%edx 0.00 : be6fd: f7 bc 24 a4 00 00 00 idivl 0xa4(%rsp) 0.00 : be704: 41 89 d1 mov %edx,%r9d 0.00 : be707: 43 8d 04 09 lea (%r9,%r9,1),%eax 0.00 : be70b: 48 63 f8 movslq %eax,%rdi 0.00 : be70e: 8b 0c be mov (%rsi,%rdi,4),%ecx 0.00 : be711: 85 c9 test %ecx,%ecx 0.00 : be713: 74 45 je be75a 0.00 : be715: 8b 54 24 1c mov 0x1c(%rsp),%edx 0.00 : be719: 89 d0 mov %edx,%eax 0.00 : be71b: c1 fa 1f sar $0x1f,%edx 0.00 : be71e: f7 7c 24 34 idivl 0x34(%rsp) 0.00 : be722: 8d 44 12 02 lea 0x2(%rdx,%rdx,1),%eax 0.00 : be726: 41 8d 54 11 01 lea 0x1(%r9,%rdx,1),%edx 0.00 : be72b: 4c 8d 4c be 04 lea 0x4(%rsi,%rdi,4),%r9 0.00 : be730: 01 d2 add %edx,%edx 0.00 : be732: 48 98 cltq 0.00 : be734: 48 63 d2 movslq %edx,%rdx 0.00 : be737: 4c 8d 1c 85 00 00 00 lea 0x0(,%rax,4),%r11 0.00 : be73e: 00 0.00 : be73f: 4c 8d 14 96 lea (%rsi,%rdx,4),%r10 0.00 : be743: 39 4c 24 1c cmp %ecx,0x1c(%rsp) 0.00 : be747: 0f 84 91 00 00 00 je be7de 0.00 : be74d: 41 8b 0a mov (%r10),%ecx 0.00 : be750: 4d 01 d9 add %r11,%r9 0.00 : be753: 4d 01 da add %r11,%r10 0.00 : be756: 85 c9 test %ecx,%ecx 0.00 : be758: 75 e9 jne be743 0.00 : be75a: 49 83 e8 01 sub $0x1,%r8 0.00 : be75e: 0f 85 24 ff ff ff jne be688 0.00 : be764: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : be769: 48 8b b4 24 e0 00 00 mov 0xe0(%rsp),%rsi 0.00 : be770: 00 0.00 : be771: 0f b6 04 06 movzbl (%rsi,%rax,1),%eax 0.00 : be775: 89 84 24 bc 00 00 00 mov %eax,0xbc(%rsp) 0.00 : be77c: e9 31 fb ff ff jmpq be2b2 0.00 : be781: 8b 84 24 ec 00 00 00 mov 0xec(%rsp),%eax 0.00 : be788: 85 c0 test %eax,%eax 0.00 : be78a: 0f 84 f8 fe ff ff je be688 0.00 : be790: 8b b4 24 a8 01 00 00 mov 0x1a8(%rsp),%esi 0.00 : be797: 48 8b bc 24 98 00 00 mov 0x98(%rsp),%rdi 0.00 : be79e: 00 0.00 : be79f: e8 2c d1 f6 ff callq 2b8d0 <__collseq_table_lookup> 0.00 : be7a4: 8b 9c 24 90 01 00 00 mov 0x190(%rsp),%ebx 0.00 : be7ab: 89 84 24 bc 00 00 00 mov %eax,0xbc(%rsp) 0.00 : be7b2: e9 fb fa ff ff jmpq be2b2 0.00 : be7b7: 49 83 e8 01 sub $0x1,%r8 0.00 : be7bb: 0f 85 c7 fe ff ff jne be688 0.00 : be7c1: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : be7c6: 48 8b 94 24 e0 00 00 mov 0xe0(%rsp),%rdx 0.00 : be7cd: 00 0.00 : be7ce: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : be7d2: 89 84 24 bc 00 00 00 mov %eax,0xbc(%rsp) 0.00 : be7d9: e9 d4 fa ff ff jmpq be2b2 0.00 : be7de: 45 8b 29 mov (%r9),%r13d 0.00 : be7e1: 48 8b 84 24 b0 00 00 mov 0xb0(%rsp),%rax 0.00 : be7e8: 00 0.00 : be7e9: 49 63 d5 movslq %r13d,%rdx 0.00 : be7ec: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : be7f0: 88 44 24 1b mov %al,0x1b(%rsp) 0.00 : be7f4: 0f b6 c0 movzbl %al,%eax 0.00 : be7f7: 49 39 c0 cmp %rax,%r8 0.00 : be7fa: 0f 85 4d ff ff ff jne be74d 0.00 : be800: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : be807: 00 0.00 : be808: 4d 39 c0 cmp %r8,%r8 0.00 : be80b: 4c 89 e6 mov %r12,%rsi 0.00 : be80e: 48 8d 7c 11 01 lea 0x1(%rcx,%rdx,1),%rdi 0.00 : be813: 4c 89 c1 mov %r8,%rcx 0.00 : be816: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : be818: 0f 85 2f ff ff ff jne be74d 0.00 : be81e: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : be822: 85 c0 test %eax,%eax 0.00 : be824: 0f 84 30 ff ff ff je be75a 0.00 : be82a: 0f b6 44 24 1b movzbl 0x1b(%rsp),%eax 0.00 : be82f: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : be836: 00 0.00 : be837: 41 8d 44 05 01 lea 0x1(%r13,%rax,1),%eax 0.00 : be83c: 48 63 d0 movslq %eax,%rdx 0.00 : be83f: 0f b6 14 11 movzbl (%rcx,%rdx,1),%edx 0.00 : be843: 8d 44 10 04 lea 0x4(%rax,%rdx,1),%eax 0.00 : be847: 83 e0 fc and $0xfffffffc,%eax 0.00 : be84a: 83 c0 04 add $0x4,%eax 0.00 : be84d: 48 63 d0 movslq %eax,%rdx 0.00 : be850: 8b 14 11 mov (%rcx,%rdx,1),%edx 0.00 : be853: 8d 54 90 04 lea 0x4(%rax,%rdx,4),%edx 0.00 : be857: 48 63 d2 movslq %edx,%rdx 0.00 : be85a: 8b 14 11 mov (%rcx,%rdx,1),%edx 0.00 : be85d: 89 94 24 bc 00 00 00 mov %edx,0xbc(%rsp) 0.00 : be864: e9 49 fa ff ff jmpq be2b2 0.00 : be869: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : be86e: 89 02 mov %eax,(%rdx) 0.00 : be870: e9 17 f1 ff ff jmpq bd98c 0.00 : be875: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : be87c: 00 0.00 : be87d: 8b 9c 24 c0 00 00 00 mov 0xc0(%rsp),%ebx 0.00 : be884: 29 59 38 sub %ebx,0x38(%rcx) 0.00 : be887: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : be88e: 00 0.00 : be88f: c6 46 08 01 movb $0x1,0x8(%rsi) 0.00 : be893: 8b 84 24 a0 01 00 00 mov 0x1a0(%rsp),%eax 0.00 : be89a: e9 9a e9 ff ff jmpq bd239 0.00 : be89f: 83 fb 01 cmp $0x1,%ebx 0.00 : be8a2: 0f 84 53 01 00 00 je be9fb 0.00 : be8a8: 83 fb 03 cmp $0x3,%ebx 0.00 : be8ab: 0f 85 cf f0 ff ff jne bd980 0.00 : be8b1: 48 8b 9c 24 98 01 00 mov 0x198(%rsp),%rbx 0.00 : be8b8: 00 0.00 : be8b9: 48 89 df mov %rbx,%rdi 0.00 : be8bc: e8 ef 22 fc ff callq 80bb0 <__GI_strlen> 0.00 : be8c1: 44 8b 94 24 ec 00 00 mov 0xec(%rsp),%r10d 0.00 : be8c8: 00 0.00 : be8c9: 49 89 c0 mov %rax,%r8 0.00 : be8cc: 45 85 d2 test %r10d,%r10d 0.00 : be8cf: 0f 84 07 01 00 00 je be9dc 0.00 : be8d5: 48 85 c0 test %rax,%rax 0.00 : be8d8: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : be8dc: 7e 1e jle be8fc 0.00 : be8de: 48 8d 0c 03 lea (%rbx,%rax,1),%rcx 0.00 : be8e2: 48 89 da mov %rbx,%rdx 0.00 : be8e5: 0f be 02 movsbl (%rdx),%eax 0.00 : be8e8: 8b 74 24 1c mov 0x1c(%rsp),%esi 0.00 : be8ec: 48 83 c2 01 add $0x1,%rdx 0.00 : be8f0: 48 39 ca cmp %rcx,%rdx 0.00 : be8f3: 8d 04 f0 lea (%rax,%rsi,8),%eax 0.00 : be8f6: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : be8fa: 75 e9 jne be8e5 0.00 : be8fc: 8b 54 24 1c mov 0x1c(%rsp),%edx 0.00 : be900: 48 8b b4 24 a8 00 00 mov 0xa8(%rsp),%rsi 0.00 : be907: 00 0.00 : be908: 89 d0 mov %edx,%eax 0.00 : be90a: c1 fa 1f sar $0x1f,%edx 0.00 : be90d: f7 bc 24 a4 00 00 00 idivl 0xa4(%rsp) 0.00 : be914: 41 89 d1 mov %edx,%r9d 0.00 : be917: 43 8d 04 09 lea (%r9,%r9,1),%eax 0.00 : be91b: 48 63 f8 movslq %eax,%rdi 0.00 : be91e: 8b 0c be mov (%rsi,%rdi,4),%ecx 0.00 : be921: 85 c9 test %ecx,%ecx 0.00 : be923: 74 45 je be96a 0.00 : be925: 8b 54 24 1c mov 0x1c(%rsp),%edx 0.00 : be929: 4c 8d 54 be 04 lea 0x4(%rsi,%rdi,4),%r10 0.00 : be92e: 89 d0 mov %edx,%eax 0.00 : be930: c1 fa 1f sar $0x1f,%edx 0.00 : be933: f7 7c 24 34 idivl 0x34(%rsp) 0.00 : be937: 8d 44 12 02 lea 0x2(%rdx,%rdx,1),%eax 0.00 : be93b: 41 8d 54 11 01 lea 0x1(%r9,%rdx,1),%edx 0.00 : be940: 01 d2 add %edx,%edx 0.00 : be942: 48 98 cltq 0.00 : be944: 48 63 d2 movslq %edx,%rdx 0.00 : be947: 4c 8d 1c 85 00 00 00 lea 0x0(,%rax,4),%r11 0.00 : be94e: 00 0.00 : be94f: 4c 8d 0c 96 lea (%rsi,%rdx,4),%r9 0.00 : be953: 39 4c 24 1c cmp %ecx,0x1c(%rsp) 0.00 : be957: 0f 84 cb 00 00 00 je bea28 0.00 : be95d: 41 8b 09 mov (%r9),%ecx 0.00 : be960: 4d 01 da add %r11,%r10 0.00 : be963: 4d 01 d9 add %r11,%r9 0.00 : be966: 85 c9 test %ecx,%ecx 0.00 : be968: 75 e9 jne be953 0.00 : be96a: 49 83 e8 01 sub $0x1,%r8 0.00 : be96e: 0f 85 0c f0 ff ff jne bd980 0.00 : be974: 0f b6 03 movzbl (%rbx),%eax 0.00 : be977: 48 8b 9c 24 e0 00 00 mov 0xe0(%rsp),%rbx 0.00 : be97e: 00 0.00 : be97f: 44 0f b6 24 03 movzbl (%rbx,%rax,1),%r12d 0.00 : be984: e9 55 f9 ff ff jmpq be2de 0.00 : be989: 0f b6 bc 24 98 01 00 movzbl 0x198(%rsp),%edi 0.00 : be990: 00 0.00 : be991: e8 4a e0 fc ff callq 8c9e0 0.00 : be996: 48 8b bc 24 98 00 00 mov 0x98(%rsp),%rdi 0.00 : be99d: 00 0.00 : be99e: 89 c6 mov %eax,%esi 0.00 : be9a0: e8 2b cf f6 ff callq 2b8d0 <__collseq_table_lookup> 0.00 : be9a5: 41 89 c4 mov %eax,%r12d 0.00 : be9a8: e9 31 f9 ff ff jmpq be2de 0.00 : be9ad: 0f b6 bc 24 a8 01 00 movzbl 0x1a8(%rsp),%edi 0.00 : be9b4: 00 0.00 : be9b5: e8 26 e0 fc ff callq 8c9e0 0.00 : be9ba: 48 8b bc 24 98 00 00 mov 0x98(%rsp),%rdi 0.00 : be9c1: 00 0.00 : be9c2: 89 c6 mov %eax,%esi 0.00 : be9c4: e8 07 cf f6 ff callq 2b8d0 <__collseq_table_lookup> 0.00 : be9c9: 8b 9c 24 90 01 00 00 mov 0x190(%rsp),%ebx 0.00 : be9d0: 89 84 24 bc 00 00 00 mov %eax,0xbc(%rsp) 0.00 : be9d7: e9 d6 f8 ff ff jmpq be2b2 0.00 : be9dc: 49 83 e8 01 sub $0x1,%r8 0.00 : be9e0: 0f 85 9a ef ff ff jne bd980 0.00 : be9e6: 0f b6 03 movzbl (%rbx),%eax 0.00 : be9e9: 48 8b b4 24 e0 00 00 mov 0xe0(%rsp),%rsi 0.00 : be9f0: 00 0.00 : be9f1: 44 0f b6 24 06 movzbl (%rsi,%rax,1),%r12d 0.00 : be9f6: e9 e3 f8 ff ff jmpq be2de 0.00 : be9fb: 44 8b 9c 24 ec 00 00 mov 0xec(%rsp),%r11d 0.00 : bea02: 00 0.00 : bea03: 45 85 db test %r11d,%r11d 0.00 : bea06: 0f 84 74 ef ff ff je bd980 0.00 : bea0c: 8b b4 24 98 01 00 00 mov 0x198(%rsp),%esi 0.00 : bea13: 48 8b bc 24 98 00 00 mov 0x98(%rsp),%rdi 0.00 : bea1a: 00 0.00 : bea1b: e8 b0 ce f6 ff callq 2b8d0 <__collseq_table_lookup> 0.00 : bea20: 41 89 c4 mov %eax,%r12d 0.00 : bea23: e9 b6 f8 ff ff jmpq be2de 0.00 : bea28: 45 8b 22 mov (%r10),%r12d 0.00 : bea2b: 48 8b 84 24 b0 00 00 mov 0xb0(%rsp),%rax 0.00 : bea32: 00 0.00 : bea33: 49 63 d4 movslq %r12d,%rdx 0.00 : bea36: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : bea3a: 88 44 24 1b mov %al,0x1b(%rsp) 0.00 : bea3e: 0f b6 c0 movzbl %al,%eax 0.00 : bea41: 49 39 c0 cmp %rax,%r8 0.00 : bea44: 0f 85 13 ff ff ff jne be95d 0.00 : bea4a: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : bea51: 00 0.00 : bea52: 4d 39 c0 cmp %r8,%r8 0.00 : bea55: 48 89 de mov %rbx,%rsi 0.00 : bea58: 48 8d 7c 11 01 lea 0x1(%rcx,%rdx,1),%rdi 0.00 : bea5d: 4c 89 c1 mov %r8,%rcx 0.00 : bea60: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : bea62: 0f 85 f5 fe ff ff jne be95d 0.00 : bea68: 44 8b 4c 24 1c mov 0x1c(%rsp),%r9d 0.00 : bea6d: 45 85 c9 test %r9d,%r9d 0.00 : bea70: 0f 84 f4 fe ff ff je be96a 0.00 : bea76: 0f b6 44 24 1b movzbl 0x1b(%rsp),%eax 0.00 : bea7b: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : bea82: 00 0.00 : bea83: 41 8d 44 04 01 lea 0x1(%r12,%rax,1),%eax 0.00 : bea88: 48 63 d0 movslq %eax,%rdx 0.00 : bea8b: 0f b6 14 11 movzbl (%rcx,%rdx,1),%edx 0.00 : bea8f: 8d 44 10 04 lea 0x4(%rax,%rdx,1),%eax 0.00 : bea93: 83 e0 fc and $0xfffffffc,%eax 0.00 : bea96: 83 c0 04 add $0x4,%eax 0.00 : bea99: 48 63 d0 movslq %eax,%rdx 0.00 : bea9c: 8b 14 11 mov (%rcx,%rdx,1),%edx 0.00 : bea9f: 8d 54 90 04 lea 0x4(%rax,%rdx,4),%edx 0.00 : beaa3: 48 63 d2 movslq %edx,%rdx 0.00 : beaa6: 44 8b 24 11 mov (%rcx,%rdx,1),%r12d 0.00 : beaaa: e9 2f f8 ff ff jmpq be2de 0.00 : beaaf: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : beab4: c7 02 07 00 00 00 movl $0x7,(%rdx) 0.00 : beaba: e9 cd ee ff ff jmpq bd98c 0.00 : beabf: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : beac4: c7 03 07 00 00 00 movl $0x7,(%rbx) 0.00 : beaca: e9 bd ee ff ff jmpq bd98c 0.00 : beacf: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax 0.00 : bead6: 00 0.00 : bead7: 80 78 08 02 cmpb $0x2,0x8(%rax) 0.00 : beadb: 0f 84 76 02 00 00 je bed57 0.00 : beae1: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : beae6: 45 31 e4 xor %r12d,%r12d 0.00 : beae9: c7 01 0a 00 00 00 movl $0xa,(%rcx) 0.00 : beaef: e9 14 e2 ff ff jmpq bcd08 0.00 : beaf4: 48 89 ce mov %rcx,%rsi 0.00 : beaf7: 48 29 c6 sub %rax,%rsi 0.00 : beafa: 44 8b 2e mov (%rsi),%r13d 0.00 : beafd: 4c 8d 56 05 lea 0x5(%rsi),%r10 0.00 : beb01: 49 63 c5 movslq %r13d,%rax 0.00 : beb04: 48 85 c0 test %rax,%rax 0.00 : beb07: 48 89 84 24 f0 00 00 mov %rax,0xf0(%rsp) 0.00 : beb0e: 00 0.00 : beb0f: 0f b6 7e 04 movzbl 0x4(%rsi),%edi 0.00 : beb13: 78 52 js beb67 0.00 : beb15: 48 85 ff test %rdi,%rdi 0.00 : beb18: 0f 84 31 02 00 00 je bed4f 0.00 : beb1e: 41 0f b6 02 movzbl (%r10),%eax 0.00 : beb22: 31 d2 xor %edx,%edx 0.00 : beb24: 41 3a 04 24 cmp (%r12),%al 0.00 : beb28: 74 11 je beb3b 0.00 : beb2a: eb 21 jmp beb4d 0.00 : beb2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : beb30: 0f b6 44 16 05 movzbl 0x5(%rsi,%rdx,1),%eax 0.00 : beb35: 3a 44 13 01 cmp 0x1(%rbx,%rdx,1),%al 0.00 : beb39: 75 09 jne beb44 0.00 : beb3b: 48 83 c2 01 add $0x1,%rdx 0.00 : beb3f: 48 39 d7 cmp %rdx,%rdi 0.00 : beb42: 77 ec ja beb30 0.00 : beb44: 48 39 d7 cmp %rdx,%rdi 0.00 : beb47: 0f 84 02 02 00 00 je bed4f 0.00 : beb4d: 48 8d 47 01 lea 0x1(%rdi),%rax 0.00 : beb51: 49 8d 34 3a lea (%r10,%rdi,1),%rsi 0.00 : beb55: 83 e0 03 and $0x3,%eax 0.00 : beb58: 74 a0 je beafa 0.00 : beb5a: ba 04 00 00 00 mov $0x4,%edx 0.00 : beb5f: 48 29 c2 sub %rax,%rdx 0.00 : beb62: 48 01 d6 add %rdx,%rsi 0.00 : beb65: eb 93 jmp beafa 0.00 : beb67: 48 85 ff test %rdi,%rdi 0.00 : beb6a: 0f 84 fa 01 00 00 je bed6a 0.00 : beb70: 45 0f b6 1a movzbl (%r10),%r11d 0.00 : beb74: 45 0f b6 0c 24 movzbl (%r12),%r9d 0.00 : beb79: 31 c0 xor %eax,%eax 0.00 : beb7b: 45 38 cb cmp %r9b,%r11b 0.00 : beb7e: 74 16 je beb96 0.00 : beb80: e9 1b 01 00 00 jmpq beca0 0.00 : beb85: 0f 1f 00 nopl (%rax) 0.00 : beb88: 0f b6 4c 06 05 movzbl 0x5(%rsi,%rax,1),%ecx 0.00 : beb8d: 0f b6 54 03 01 movzbl 0x1(%rbx,%rax,1),%edx 0.00 : beb92: 38 d1 cmp %dl,%cl 0.00 : beb94: 75 19 jne bebaf 0.00 : beb96: 48 83 c0 01 add $0x1,%rax 0.00 : beb9a: 48 39 c7 cmp %rax,%rdi 0.00 : beb9d: 77 e9 ja beb88 0.00 : beb9f: 0f 84 c5 01 00 00 je bed6a 0.00 : beba5: 41 0f b6 0c 02 movzbl (%r10,%rax,1),%ecx 0.00 : bebaa: 41 0f b6 14 04 movzbl (%r12,%rax,1),%edx 0.00 : bebaf: 38 d1 cmp %dl,%cl 0.00 : bebb1: 77 66 ja bec19 0.00 : bebb3: 45 0f b6 04 3a movzbl (%r10,%rdi,1),%r8d 0.00 : bebb8: 31 d2 xor %edx,%edx 0.00 : bebba: 44 89 c8 mov %r9d,%eax 0.00 : bebbd: 48 8d 4c 3e 06 lea 0x6(%rsi,%rdi,1),%rcx 0.00 : bebc2: 45 38 c8 cmp %r9b,%r8b 0.00 : bebc5: 74 1a je bebe1 0.00 : bebc7: eb 31 jmp bebfa 0.00 : bebc9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bebd0: 0f b6 31 movzbl (%rcx),%esi 0.00 : bebd3: 0f b6 44 13 01 movzbl 0x1(%rbx,%rdx,1),%eax 0.00 : bebd8: 48 83 c1 01 add $0x1,%rcx 0.00 : bebdc: 40 38 c6 cmp %al,%sil 0.00 : bebdf: 75 5d jne bec3e 0.00 : bebe1: 48 83 c2 01 add $0x1,%rdx 0.00 : bebe5: 48 39 d7 cmp %rdx,%rdi 0.00 : bebe8: 77 e6 ja bebd0 0.00 : bebea: 74 5a je bec46 0.00 : bebec: 49 8d 04 3a lea (%r10,%rdi,1),%rax 0.00 : bebf0: 44 0f b6 04 10 movzbl (%rax,%rdx,1),%r8d 0.00 : bebf5: 41 0f b6 04 14 movzbl (%r12,%rdx,1),%eax 0.00 : bebfa: 44 38 c0 cmp %r8b,%al 0.00 : bebfd: 76 44 jbe bec43 0.00 : bebff: 48 8d 04 3f lea (%rdi,%rdi,1),%rax 0.00 : bec03: 49 8d 34 02 lea (%r10,%rax,1),%rsi 0.00 : bec07: 48 83 c0 01 add $0x1,%rax 0.00 : bec0b: 83 e0 03 and $0x3,%eax 0.00 : bec0e: 0f 84 e6 fe ff ff je beafa 0.00 : bec14: e9 41 ff ff ff jmpq beb5a 0.00 : bec19: 48 8d 04 3f lea (%rdi,%rdi,1),%rax 0.00 : bec1d: 49 8d 34 02 lea (%r10,%rax,1),%rsi 0.00 : bec21: 48 83 c0 01 add $0x1,%rax 0.00 : bec25: 83 e0 03 and $0x3,%eax 0.00 : bec28: 0f 84 cc fe ff ff je beafa 0.00 : bec2e: b9 04 00 00 00 mov $0x4,%ecx 0.00 : bec33: 48 29 c1 sub %rax,%rcx 0.00 : bec36: 48 01 ce add %rcx,%rsi 0.00 : bec39: e9 bc fe ff ff jmpq beafa 0.00 : bec3e: 41 89 f0 mov %esi,%r8d 0.00 : bec41: eb b7 jmp bebfa 0.00 : bec43: 45 89 c8 mov %r9d,%r8d 0.00 : bec46: 31 f6 xor %esi,%esi 0.00 : bec48: 45 38 d8 cmp %r11b,%r8b 0.00 : bec4b: 75 10 jne bec5d 0.00 : bec4d: 48 83 c6 01 add $0x1,%rsi 0.00 : bec51: 44 0f b6 4c 33 01 movzbl 0x1(%rbx,%rsi,1),%r9d 0.00 : bec57: 45 38 0c 32 cmp %r9b,(%r10,%rsi,1) 0.00 : bec5b: 74 f0 je bec4d 0.00 : bec5d: 31 d2 xor %edx,%edx 0.00 : bec5f: 45 31 c0 xor %r8d,%r8d 0.00 : bec62: 49 01 f2 add %rsi,%r10 0.00 : bec65: 4c 8d 1c 33 lea (%rbx,%rsi,1),%r11 0.00 : bec69: eb 0b jmp bec76 0.00 : bec6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bec70: 47 0f b6 4c 03 01 movzbl 0x1(%r11,%r8,1),%r9d 0.00 : bec76: 48 89 d1 mov %rdx,%rcx 0.00 : bec79: 43 0f b6 14 02 movzbl (%r10,%r8,1),%edx 0.00 : bec7e: 41 0f b6 c1 movzbl %r9b,%eax 0.00 : bec82: 48 c1 e1 08 shl $0x8,%rcx 0.00 : bec86: 49 83 c0 01 add $0x1,%r8 0.00 : bec8a: 29 d0 sub %edx,%eax 0.00 : bec8c: 48 98 cltq 0.00 : bec8e: 48 8d 14 08 lea (%rax,%rcx,1),%rdx 0.00 : bec92: 49 8d 04 30 lea (%r8,%rsi,1),%rax 0.00 : bec96: 48 39 c7 cmp %rax,%rdi 0.00 : bec99: 77 d5 ja bec70 0.00 : bec9b: e9 cc 00 00 00 jmpq bed6c 0.00 : beca0: 44 89 d9 mov %r11d,%ecx 0.00 : beca3: 44 89 ca mov %r9d,%edx 0.00 : beca6: e9 04 ff ff ff jmpq bebaf 0.00 : becab: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : becb0: 89 06 mov %eax,(%rsi) 0.00 : becb2: e9 d5 ec ff ff jmpq bd98c 0.00 : becb7: 8b 84 24 c8 00 00 00 mov 0xc8(%rsp),%eax 0.00 : becbe: 8d 44 00 01 lea 0x1(%rax,%rax,1),%eax 0.00 : becc2: 89 84 24 c8 00 00 00 mov %eax,0xc8(%rsp) 0.00 : becc9: 49 8b 7f 10 mov 0x10(%r15),%rdi 0.00 : beccd: 48 63 f0 movslq %eax,%rsi 0.00 : becd0: 48 c1 e6 02 shl $0x2,%rsi 0.00 : becd4: e8 67 fb f5 ff callq 1e840 0.00 : becd9: 48 85 c0 test %rax,%rax 0.00 : becdc: 74 6a je bed48 0.00 : becde: 49 89 47 10 mov %rax,0x10(%r15) 0.00 : bece2: 41 8b 4f 3c mov 0x3c(%r15),%ecx 0.00 : bece6: e9 56 f7 ff ff jmpq be441 0.00 : beceb: 48 83 7c 24 10 01 cmpq $0x1,0x10(%rsp) 0.00 : becf1: 0f 85 89 ec ff ff jne bd980 0.00 : becf7: 0f b6 0b movzbl (%rbx),%ecx 0.00 : becfa: 48 8b 94 24 d8 00 00 mov 0xd8(%rsp),%rdx 0.00 : bed01: 00 0.00 : bed02: 89 c8 mov %ecx,%eax 0.00 : bed04: 83 e1 3f and $0x3f,%ecx 0.00 : bed07: 48 d3 64 24 10 shlq %cl,0x10(%rsp) 0.00 : bed0c: c0 e8 06 shr $0x6,%al 0.00 : bed0f: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : bed14: 0f b6 c0 movzbl %al,%eax 0.00 : bed17: 48 09 0c c2 or %rcx,(%rdx,%rax,8) 0.00 : bed1b: e9 01 f1 ff ff jmpq bde21 0.00 : bed20: 48 8b bc 24 d8 00 00 mov 0xd8(%rsp),%rdi 0.00 : bed27: 00 0.00 : bed28: 45 31 e4 xor %r12d,%r12d 0.00 : bed2b: e8 70 fb f5 ff callq 1e8a0 0.00 : bed30: 4c 89 ff mov %r15,%rdi 0.00 : bed33: e8 68 fb f5 ff callq 1e8a0 0.00 : bed38: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : bed3d: c7 03 0c 00 00 00 movl $0xc,(%rbx) 0.00 : bed43: e9 c0 df ff ff jmpq bcd08 0.00 : bed48: b0 0c mov $0xc,%al 0.00 : bed4a: e9 f7 f7 ff ff jmpq be546 0.00 : bed4f: 49 01 fc add %rdi,%r12 0.00 : bed52: e9 d7 ec ff ff jmpq bda2e 0.00 : bed57: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : bed5c: 45 31 e4 xor %r12d,%r12d 0.00 : bed5f: c7 02 09 00 00 00 movl $0x9,(%rdx) 0.00 : bed65: e9 9e df ff ff jmpq bcd08 0.00 : bed6a: 31 d2 xor %edx,%edx 0.00 : bed6c: 48 2b 94 24 f0 00 00 sub 0xf0(%rsp),%rdx 0.00 : bed73: 00 0.00 : bed74: 48 8b 8c 24 10 01 00 mov 0x110(%rsp),%rcx 0.00 : bed7b: 00 0.00 : bed7c: 49 01 fc add %rdi,%r12 0.00 : bed7f: 44 8b 2c 91 mov (%rcx,%rdx,4),%r13d 0.00 : bed83: e9 a6 ec ff ff jmpq bda2e Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000014120 <_dl_important_hwcaps>: 25.00 : 14120: 55 push %rbp 0.00 : 14121: 48 89 e5 mov %rsp,%rbp 0.00 : 14124: 41 57 push %r15 0.00 : 14126: 41 56 push %r14 0.00 : 14128: 41 55 push %r13 0.00 : 1412a: 41 54 push %r12 0.00 : 1412c: 45 31 e4 xor %r12d,%r12d 0.00 : 1412f: 53 push %rbx 0.00 : 14130: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 14137: 48 89 55 80 mov %rdx,-0x80(%rbp) 0.00 : 1413b: 48 8b 15 3e ab 20 00 mov 0x20ab3e(%rip),%rdx # 21ec80 <_rtld_global_ro+0x60> 0.00 : 14142: 48 85 ff test %rdi,%rdi 0.00 : 14145: 48 89 7d 90 mov %rdi,-0x70(%rbp) 0.00 : 14149: 48 89 75 88 mov %rsi,-0x78(%rbp) 0.00 : 1414d: 41 0f 95 c4 setne %r12b 0.00 : 14151: 48 89 8d 78 ff ff ff mov %rcx,-0x88(%rbp) 0.00 : 14158: 49 89 d6 mov %rdx,%r14 0.00 : 1415b: 4c 23 35 16 ab 20 00 and 0x20ab16(%rip),%r14 # 21ec78 <_rtld_global_ro+0x58> 0.00 : 14162: 74 30 je 14194 <_dl_important_hwcaps+0x74> 0.00 : 14164: 31 d2 xor %edx,%edx 0.00 : 14166: 31 c9 xor %ecx,%ecx 0.00 : 14168: be 01 00 00 00 mov $0x1,%esi 0.00 : 1416d: 0f 1f 00 nopl (%rax) 0.00 : 14170: 4c 89 f0 mov %r14,%rax 0.00 : 14173: 48 d3 e8 shr %cl,%rax 0.00 : 14176: 83 e0 01 and $0x1,%eax 0.00 : 14179: 83 f8 01 cmp $0x1,%eax 0.00 : 1417c: 48 89 f0 mov %rsi,%rax 0.00 : 1417f: 49 83 dc ff sbb $0xffffffffffffffff,%r12 0.00 : 14183: 48 83 c2 01 add $0x1,%rdx 0.00 : 14187: 89 d1 mov %edx,%ecx 0.00 : 14189: 48 d3 e0 shl %cl,%rax 0.00 : 1418c: 48 f7 d8 neg %rax 0.00 : 1418f: 4c 85 f0 test %r14,%rax 0.00 : 14192: 75 dc jne 14170 <_dl_important_hwcaps+0x50> 0.00 : 14194: 4c 8b 2d 3d ab 20 00 mov 0x20ab3d(%rip),%r13 # 21ecd8 <_rtld_global_ro+0xb8> 0.00 : 1419b: 4d 85 ed test %r13,%r13 0.00 : 1419e: 0f 84 d7 05 00 00 je 1477b <_dl_important_hwcaps+0x65b> 0.00 : 141a4: 41 0f b7 95 b0 02 00 movzwl 0x2b0(%r13),%edx 0.00 : 141ab: 00 0.00 : 141ac: 49 8b 85 a0 02 00 00 mov 0x2a0(%r13),%rax 0.00 : 141b3: 48 85 d2 test %rdx,%rdx 0.00 : 141b6: 48 89 95 50 ff ff ff mov %rdx,-0xb0(%rbp) 0.00 : 141bd: 0f 84 b8 05 00 00 je 1477b <_dl_important_hwcaps+0x65b> 0.00 : 141c3: 49 89 c3 mov %rax,%r11 0.00 : 141c6: 31 db xor %ebx,%ebx 0.00 : 141c8: 4c 8d 3d 0f 60 00 00 lea 0x600f(%rip),%r15 # 1a1de <__PRETTY_FUNCTION__.12953+0x25> 0.00 : 141cf: eb 1c jmp 141ed <_dl_important_hwcaps+0xcd> 0.00 : 141d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 141d8: 48 83 c3 01 add $0x1,%rbx 0.00 : 141dc: 49 83 c3 38 add $0x38,%r11 0.00 : 141e0: 48 3b 9d 50 ff ff ff cmp -0xb0(%rbp),%rbx 0.00 : 141e7: 0f 83 8e 05 00 00 jae 1477b <_dl_important_hwcaps+0x65b> 0.00 : 141ed: 41 83 3b 04 cmpl $0x4,(%r11) 0.00 : 141f1: 75 e5 jne 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 141f3: 4d 8b 4d 00 mov 0x0(%r13),%r9 0.00 : 141f7: 4d 03 4b 10 add 0x10(%r11),%r9 0.00 : 141fb: 4c 89 8d 58 ff ff ff mov %r9,-0xa8(%rbp) 0.00 : 14202: 4d 8b 53 28 mov 0x28(%r11),%r10 0.00 : 14206: 49 83 fa 0c cmp $0xc,%r10 0.00 : 1420a: 77 45 ja 14251 <_dl_important_hwcaps+0x131> 0.00 : 1420c: eb ca jmp 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 1420e: 66 90 xchg %ax,%ax 0.00 : 14210: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 14217: 44 8b 07 mov (%rdi),%r8d 0.00 : 1421a: 8b 57 04 mov 0x4(%rdi),%edx 0.00 : 1421d: 44 89 c0 mov %r8d,%eax 0.00 : 14220: 89 d2 mov %edx,%edx 0.00 : 14222: 48 83 c0 03 add $0x3,%rax 0.00 : 14226: 48 83 c2 03 add $0x3,%rdx 0.00 : 1422a: 48 83 e0 fc and $0xfffffffffffffffc,%rax 0.00 : 1422e: 48 83 e2 fc and $0xfffffffffffffffc,%rdx 0.00 : 14232: 48 8d 44 10 0c lea 0xc(%rax,%rdx,1),%rax 0.00 : 14237: 48 01 85 58 ff ff ff add %rax,-0xa8(%rbp) 0.00 : 1423e: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 14245: 48 83 c0 0c add $0xc,%rax 0.00 : 14249: 4c 29 c8 sub %r9,%rax 0.00 : 1424c: 4c 39 d0 cmp %r10,%rax 0.00 : 1424f: 73 87 jae 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 14251: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 14258: 83 79 08 02 cmpl $0x2,0x8(%rcx) 0.00 : 1425c: 75 b2 jne 14210 <_dl_important_hwcaps+0xf0> 0.00 : 1425e: 44 8b 01 mov (%rcx),%r8d 0.00 : 14261: 41 83 f8 04 cmp $0x4,%r8d 0.00 : 14265: 74 09 je 14270 <_dl_important_hwcaps+0x150> 0.00 : 14267: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 1426a: eb b1 jmp 1421d <_dl_important_hwcaps+0xfd> 0.00 : 1426c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 14270: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 14277: 4c 89 ff mov %r15,%rdi 0.00 : 1427a: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 1427f: 48 83 c6 0c add $0xc,%rsi 0.00 : 14283: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 14285: 74 11 je 14298 <_dl_important_hwcaps+0x178> 0.00 : 14287: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 1428e: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 14291: eb 8a jmp 1421d <_dl_important_hwcaps+0xfd> 0.00 : 14293: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14298: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 1429f: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 142a2: 83 fa 0a cmp $0xa,%edx 0.00 : 142a5: 0f 86 72 ff ff ff jbe 1421d <_dl_important_hwcaps+0xfd> 0.00 : 142ab: 8b 41 10 mov 0x10(%rcx),%eax 0.00 : 142ae: 49 89 c8 mov %rcx,%r8 0.00 : 142b1: 48 89 ce mov %rcx,%rsi 0.00 : 142b4: 49 83 c0 14 add $0x14,%r8 0.00 : 142b8: 49 01 c4 add %rax,%r12 0.00 : 142bb: 89 d0 mov %edx,%eax 0.00 : 142bd: 48 83 c6 18 add $0x18,%rsi 0.00 : 142c1: 48 8d 50 f8 lea -0x8(%rax),%rdx 0.00 : 142c5: 0f 84 0d ff ff ff je 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 142cb: 49 83 c4 01 add $0x1,%r12 0.00 : 142cf: 48 8d 14 16 lea (%rsi,%rdx,1),%rdx 0.00 : 142d3: 45 31 ed xor %r13d,%r13d 0.00 : 142d6: 4c 89 e0 mov %r12,%rax 0.00 : 142d9: 4c 89 65 a8 mov %r12,-0x58(%rbp) 0.00 : 142dd: 48 89 f3 mov %rsi,%rbx 0.00 : 142e0: 48 c1 e0 04 shl $0x4,%rax 0.00 : 142e4: 48 83 c0 10 add $0x10,%rax 0.00 : 142e8: 48 29 c4 sub %rax,%rsp 0.00 : 142eb: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 142f0: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 142f4: 4c 89 7d b0 mov %r15,-0x50(%rbp) 0.00 : 142f8: 45 8b 00 mov (%r8),%r8d 0.00 : 142fb: 48 89 55 98 mov %rdx,-0x68(%rbp) 0.00 : 142ff: 44 89 c0 mov %r8d,%eax 0.00 : 14302: 48 09 05 6f a9 20 00 or %rax,0x20a96f(%rip) # 21ec78 <_rtld_global_ro+0x58> 0.00 : 14309: 48 09 05 70 a9 20 00 or %rax,0x20a970(%rip) # 21ec80 <_rtld_global_ro+0x60> 0.00 : 14310: 48 39 d6 cmp %rdx,%rsi 0.00 : 14313: 44 89 45 bc mov %r8d,-0x44(%rbp) 0.00 : 14317: 73 4a jae 14363 <_dl_important_hwcaps+0x243> 0.00 : 14319: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 14320: 4c 8d 63 01 lea 0x1(%rbx),%r12 0.00 : 14324: 4c 89 e7 mov %r12,%rdi 0.00 : 14327: e8 44 24 00 00 callq 16770 <__GI_strlen> 0.00 : 1432c: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 1432f: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 14334: 48 89 c2 mov %rax,%rdx 0.00 : 14337: d3 e3 shl %cl,%ebx 0.00 : 14339: 85 5d bc test %ebx,-0x44(%rbp) 0.00 : 1433c: 0f 84 f6 04 00 00 je 14838 <_dl_important_hwcaps+0x718> 0.00 : 14342: 4c 89 e8 mov %r13,%rax 0.00 : 14345: 49 83 c5 01 add $0x1,%r13 0.00 : 14349: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1434d: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : 14351: 4c 89 20 mov %r12,(%rax) 0.00 : 14354: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 14358: 49 8d 5c 14 01 lea 0x1(%r12,%rdx,1),%rbx 0.00 : 1435d: 48 3b 5d 98 cmp -0x68(%rbp),%rbx 0.00 : 14361: 72 bd jb 14320 <_dl_important_hwcaps+0x200> 0.00 : 14363: 4d 85 f6 test %r14,%r14 0.00 : 14366: 74 54 je 143bc <_dl_important_hwcaps+0x29c> 0.00 : 14368: 31 d2 xor %edx,%edx 0.00 : 1436a: be 01 00 00 00 mov $0x1,%esi 0.00 : 1436f: eb 10 jmp 14381 <_dl_important_hwcaps+0x261> 0.00 : 14371: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 14378: 4d 85 f6 test %r14,%r14 0.00 : 1437b: 74 3f je 143bc <_dl_important_hwcaps+0x29c> 0.00 : 1437d: 48 83 c2 01 add $0x1,%rdx 0.00 : 14381: 89 d1 mov %edx,%ecx 0.00 : 14383: 4c 89 f0 mov %r14,%rax 0.00 : 14386: 48 d3 e8 shr %cl,%rax 0.00 : 14389: a8 01 test $0x1,%al 0.00 : 1438b: 74 eb je 14378 <_dl_important_hwcaps+0x258> 0.00 : 1438d: 4c 89 e8 mov %r13,%rax 0.00 : 14390: 48 8d 3d 46 54 00 00 lea 0x5446(%rip),%rdi # 197dd 0.00 : 14397: 49 83 c5 01 add $0x1,%r13 0.00 : 1439b: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1439f: 48 03 45 b0 add -0x50(%rbp),%rax 0.00 : 143a3: 48 89 38 mov %rdi,(%rax) 0.00 : 143a6: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 143ad: 00 0.00 : 143ae: 48 89 f0 mov %rsi,%rax 0.00 : 143b1: 48 d3 e0 shl %cl,%rax 0.00 : 143b4: 49 31 c6 xor %rax,%r14 0.00 : 143b7: 4d 85 f6 test %r14,%r14 0.00 : 143ba: 75 c1 jne 1437d <_dl_important_hwcaps+0x25d> 0.00 : 143bc: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 143c1: 4c 89 ea mov %r13,%rdx 0.00 : 143c4: 74 1e je 143e4 <_dl_important_hwcaps+0x2c4> 0.00 : 143c6: 4c 89 e8 mov %r13,%rax 0.00 : 143c9: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 143cd: 48 83 c2 01 add $0x1,%rdx 0.00 : 143d1: 48 c1 e0 04 shl $0x4,%rax 0.00 : 143d5: 48 03 45 b0 add -0x50(%rbp),%rax 0.00 : 143d9: 48 89 08 mov %rcx,(%rax) 0.00 : 143dc: 48 8b 5d 88 mov -0x78(%rbp),%rbx 0.00 : 143e0: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 143e4: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 143e8: 48 89 d1 mov %rdx,%rcx 0.00 : 143eb: 48 8d 3d 15 55 00 00 lea 0x5515(%rip),%rdi # 19907 <__PRETTY_FUNCTION__.12417+0x5> 0.00 : 143f2: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 143f6: 48 01 c8 add %rcx,%rax 0.00 : 143f9: 48 89 38 mov %rdi,(%rax) 25.00 : 143fc: 48 c7 40 08 03 00 00 movq $0x3,0x8(%rax) 0.00 : 14403: 00 0.00 : 14404: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 14408: 48 3b 45 a8 cmp -0x58(%rbp),%rax 0.00 : 1440c: 0f 85 30 04 00 00 jne 14842 <_dl_important_hwcaps+0x722> 0.00 : 14412: 48 83 7d a8 01 cmpq $0x1,-0x58(%rbp) 0.00 : 14417: 0f 84 4d 03 00 00 je 1476a <_dl_important_hwcaps+0x64a> 0.00 : 1441d: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 14421: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 14425: 48 03 44 0b 08 add 0x8(%rbx,%rcx,1),%rax 0.00 : 1442a: 48 83 c0 02 add $0x2,%rax 0.00 : 1442e: 48 83 7d a8 02 cmpq $0x2,-0x58(%rbp) 0.00 : 14433: 76 7c jbe 144b1 <_dl_important_hwcaps+0x391> 0.00 : 14435: 48 8d 34 00 lea (%rax,%rax,1),%rsi 0.00 : 14439: ba 02 00 00 00 mov $0x2,%edx 0.00 : 1443e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 14443: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14448: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 1444c: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14450: 48 8b 44 07 08 mov 0x8(%rdi,%rax,1),%rax 0.00 : 14455: 48 8d 74 06 01 lea 0x1(%rsi,%rax,1),%rsi 0.00 : 1445a: 48 89 d0 mov %rdx,%rax 0.00 : 1445d: 48 83 c2 01 add $0x1,%rdx 0.00 : 14461: 48 39 55 a8 cmp %rdx,-0x58(%rbp) 0.00 : 14465: 77 e1 ja 14448 <_dl_important_hwcaps+0x328> 0.00 : 14467: 48 83 7d a8 03 cmpq $0x3,-0x58(%rbp) 0.00 : 1446c: ba 03 00 00 00 mov $0x3,%edx 0.00 : 14471: 74 35 je 144a8 <_dl_important_hwcaps+0x388> 0.00 : 14473: 48 83 7d a8 3f cmpq $0x3f,-0x58(%rbp) 0.00 : 14478: 77 19 ja 14493 <_dl_important_hwcaps+0x373> 0.00 : 1447a: 8b 55 a8 mov -0x58(%rbp),%edx 0.00 : 1447d: 48 8d 86 80 00 00 00 lea 0x80(%rsi),%rax 0.00 : 14484: b9 43 00 00 00 mov $0x43,%ecx 0.00 : 14489: 29 d1 sub %edx,%ecx 0.00 : 1448b: 48 d3 e8 shr %cl,%rax 0.00 : 1448e: 48 85 c0 test %rax,%rax 0.00 : 14491: 74 15 je 144a8 <_dl_important_hwcaps+0x388> 0.00 : 14493: 48 8d 0d 64 5d 00 00 lea 0x5d64(%rip),%rcx # 1a1fe <__PRETTY_FUNCTION__.12953+0x45> 0.00 : 1449a: 31 d2 xor %edx,%edx 0.00 : 1449c: 31 f6 xor %esi,%esi 0.00 : 1449e: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 144a3: e8 58 9a ff ff callq df00 <_dl_signal_error> 0.00 : 144a8: 8d 4a fd lea -0x3(%rdx),%ecx 0.00 : 144ab: 48 89 f0 mov %rsi,%rax 0.00 : 144ae: 48 d3 e0 shl %cl,%rax 0.00 : 144b1: 8b 55 a8 mov -0x58(%rbp),%edx 0.00 : 144b4: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 144b9: 89 df mov %ebx,%edi 0.00 : 144bb: 89 d1 mov %edx,%ecx 0.00 : 144bd: 89 55 a0 mov %edx,-0x60(%rbp) 0.00 : 144c0: d3 e7 shl %cl,%edi 0.00 : 144c2: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 144c6: 48 63 d7 movslq %edi,%rdx 0.00 : 144c9: 89 7d a4 mov %edi,-0x5c(%rbp) 0.00 : 144cc: 48 89 d7 mov %rdx,%rdi 0.00 : 144cf: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 144d3: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 144d7: 48 89 11 mov %rdx,(%rcx) 0.00 : 144da: 48 8d 3c 38 lea (%rax,%rdi,1),%rdi 0.00 : 144de: e8 cd c5 fe ff callq ab0 0.00 : 144e3: 48 85 c0 test %rax,%rax 0.00 : 144e6: 49 89 c7 mov %rax,%r15 0.00 : 144e9: 74 a8 je 14493 <_dl_important_hwcaps+0x373> 0.00 : 144eb: 48 83 7d a8 01 cmpq $0x1,-0x58(%rbp) 0.00 : 144f0: 0f 84 eb 02 00 00 je 147e1 <_dl_important_hwcaps+0x6c1> 0.00 : 144f6: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 144fa: 48 8b 07 mov (%rdi),%rax 0.00 : 144fd: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14501: 49 8d 3c 07 lea (%r15,%rax,1),%rdi 0.00 : 14505: 49 89 3f mov %rdi,(%r15) 0.00 : 14508: 49 89 7f 10 mov %rdi,0x10(%r15) 0.00 : 1450c: 48 83 7d a8 02 cmpq $0x2,-0x58(%rbp) 0.00 : 14511: 0f 84 8f 02 00 00 je 147a6 <_dl_important_hwcaps+0x686> 0.00 : 14517: 8b 4d a8 mov -0x58(%rbp),%ecx 0.00 : 1451a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 1451e: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 14524: 83 e9 01 sub $0x1,%ecx 0.00 : 14527: d3 e3 shl %cl,%ebx 0.00 : 14529: 4c 63 eb movslq %ebx,%r13 0.00 : 1452c: 48 8b 5d a8 mov -0x58(%rbp),%rbx 0.00 : 14530: 48 83 eb 01 sub $0x1,%rbx 0.00 : 14534: 48 89 d8 mov %rbx,%rax 0.00 : 14537: 48 89 9d 68 ff ff ff mov %rbx,-0x98(%rbp) 0.00 : 1453e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14542: 48 03 45 b0 add -0x50(%rbp),%rax 0.00 : 14546: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 1454a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 1454e: 48 83 e8 02 sub $0x2,%rax 0.00 : 14552: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 14556: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 1455a: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1455e: 48 8d 44 02 e8 lea -0x18(%rdx,%rax,1),%rax 0.00 : 14563: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 1456a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 14570: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 14574: 49 83 ed 02 sub $0x2,%r13 0.00 : 14578: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 1457c: 48 8b 31 mov (%rcx),%rsi 0.00 : 1457f: e8 3c 2b 00 00 callq 170c0 <__mempcpy> 0.00 : 14584: c6 00 2f movb $0x2f,(%rax) 0.00 : 14587: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : 1458c: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 14590: 74 45 je 145d7 <_dl_important_hwcaps+0x4b7> 0.00 : 14592: 4c 8b a5 60 ff ff ff mov -0xa0(%rbp),%r12 0.00 : 14599: 48 8b 5d c8 mov -0x38(%rbp),%rbx 0.00 : 1459d: eb 0b jmp 145aa <_dl_important_hwcaps+0x48a> 0.00 : 1459f: 90 nop 0.00 : 145a0: 49 83 ec 10 sub $0x10,%r12 0.00 : 145a4: 48 83 eb 01 sub $0x1,%rbx 0.00 : 145a8: 74 2d je 145d7 <_dl_important_hwcaps+0x4b7> 0.00 : 145aa: 44 89 f0 mov %r14d,%eax 0.00 : 145ad: 89 d9 mov %ebx,%ecx 0.00 : 145af: d3 e0 shl %cl,%eax 0.00 : 145b1: 48 98 cltq 0.00 : 145b3: 4c 85 e8 test %r13,%rax 0.00 : 145b6: 74 e8 je 145a0 <_dl_important_hwcaps+0x480> 0.00 : 145b8: 49 8b 74 24 f8 mov -0x8(%r12),%rsi 0.00 : 145bd: 49 8b 14 24 mov (%r12),%rdx 0.00 : 145c1: 49 83 ec 10 sub $0x10,%r12 0.00 : 145c5: e8 f6 2a 00 00 callq 170c0 <__mempcpy> 0.00 : 145ca: 48 83 eb 01 sub $0x1,%rbx 0.00 : 145ce: c6 00 2f movb $0x2f,(%rax) 0.00 : 145d1: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 145d5: 75 d3 jne 145aa <_dl_important_hwcaps+0x48a> 0.00 : 145d7: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 145db: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 145df: 48 8b 33 mov (%rbx),%rsi 0.00 : 145e2: e8 d9 2a 00 00 callq 170c0 <__mempcpy> 0.00 : 145e7: 4d 85 ed test %r13,%r13 0.00 : 145ea: c6 00 2f movb $0x2f,(%rax) 0.00 : 145ed: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 145f1: 0f 85 79 ff ff ff jne 14570 <_dl_important_hwcaps+0x450> 0.00 : 145f7: 0f b6 4d a0 movzbl -0x60(%rbp),%ecx 0.00 : 145fb: be 01 00 00 00 mov $0x1,%esi 0.00 : 14600: 31 d2 xor %edx,%edx 0.00 : 14602: 48 d3 e6 shl %cl,%rsi 0.00 : 14605: 48 85 f6 test %rsi,%rsi 0.00 : 14608: 74 1f je 14629 <_dl_important_hwcaps+0x509> 0.00 : 1460a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 14610: 48 89 d0 mov %rdx,%rax 25.00 : 14613: 48 83 c2 01 add $0x1,%rdx 0.00 : 14617: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1461b: 48 39 f2 cmp %rsi,%rdx 0.00 : 1461e: 49 c7 44 07 08 00 00 movq $0x0,0x8(%r15,%rax,1) 0.00 : 14625: 00 00 0.00 : 14627: 72 e7 jb 14610 <_dl_important_hwcaps+0x4f0> 0.00 : 14629: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 1462d: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 14631: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 14637: 4c 8b 45 a8 mov -0x58(%rbp),%r8 0.00 : 1463b: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1463f: 48 8d 7c 02 f8 lea -0x8(%rdx,%rax,1),%rdi 0.00 : 14644: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 14648: 49 83 e8 01 sub $0x1,%r8 0.00 : 1464c: 44 89 c8 mov %r9d,%eax 0.00 : 1464f: 44 89 c1 mov %r8d,%ecx 0.00 : 14652: d3 e0 shl %cl,%eax 0.00 : 14654: 48 83 7d d0 00 cmpq $0x0,-0x30(%rbp) 0.00 : 14659: 48 63 f0 movslq %eax,%rsi 0.00 : 1465c: 74 33 je 14691 <_dl_important_hwcaps+0x571> 0.00 : 1465e: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 14662: 4c 89 f9 mov %r15,%rcx 0.00 : 14665: eb 1c jmp 14683 <_dl_important_hwcaps+0x563> 0.00 : 14667: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1466e: 00 00 0.00 : 14670: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 14674: 48 03 07 add (%rdi),%rax 0.00 : 14677: 48 83 c0 01 add $0x1,%rax 0.00 : 1467b: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 1467f: 48 83 c1 10 add $0x10,%rcx 0.00 : 14683: 48 83 ea 01 sub $0x1,%rdx 0.00 : 14687: 48 85 f2 test %rsi,%rdx 0.00 : 1468a: 75 e4 jne 14670 <_dl_important_hwcaps+0x550> 0.00 : 1468c: 48 85 d2 test %rdx,%rdx 0.00 : 1468f: 75 ee jne 1467f <_dl_important_hwcaps+0x55f> 0.00 : 14691: 48 83 ef 10 sub $0x10,%rdi 0.00 : 14695: 4d 85 c0 test %r8,%r8 0.00 : 14698: 75 ae jne 14648 <_dl_important_hwcaps+0x528> 0.00 : 1469a: 8b 45 a4 mov -0x5c(%rbp),%eax 0.00 : 1469d: 8b 4d a8 mov -0x58(%rbp),%ecx 0.00 : 146a0: 41 b0 01 mov $0x1,%r8b 0.00 : 146a3: 4d 8d 4f 20 lea 0x20(%r15),%r9 0.00 : 146a7: 83 e8 02 sub $0x2,%eax 0.00 : 146aa: 83 e9 01 sub $0x1,%ecx 0.00 : 146ad: 48 63 f8 movslq %eax,%rdi 0.00 : 146b0: 49 d3 e0 shl %cl,%r8 0.00 : 146b3: 49 39 f8 cmp %rdi,%r8 0.00 : 146b6: 74 4d je 14705 <_dl_important_hwcaps+0x5e5> 0.00 : 146b8: 48 89 fe mov %rdi,%rsi 0.00 : 146bb: 4c 89 ca mov %r9,%rdx 0.00 : 146be: eb 14 jmp 146d4 <_dl_important_hwcaps+0x5b4> 0.00 : 146c0: 48 8b 42 e0 mov -0x20(%rdx),%rax 0.00 : 146c4: 48 03 42 e8 add -0x18(%rdx),%rax 0.00 : 146c8: 48 89 02 mov %rax,(%rdx) 0.00 : 146cb: 48 83 c2 10 add $0x10,%rdx 0.00 : 146cf: 49 39 f0 cmp %rsi,%r8 0.00 : 146d2: 74 1a je 146ee <_dl_important_hwcaps+0x5ce> 0.00 : 146d4: 48 83 ee 01 sub $0x1,%rsi 0.00 : 146d8: 40 f6 c6 01 test $0x1,%sil 0.00 : 146dc: 75 e2 jne 146c0 <_dl_important_hwcaps+0x5a0> 0.00 : 146de: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 146e2: 48 89 02 mov %rax,(%rdx) 0.00 : 146e5: 48 83 c2 10 add $0x10,%rdx 0.00 : 146e9: 49 39 f0 cmp %rsi,%r8 0.00 : 146ec: 75 e6 jne 146d4 <_dl_important_hwcaps+0x5b4> 0.00 : 146ee: 48 89 f8 mov %rdi,%rax 0.00 : 146f1: 4c 29 c0 sub %r8,%rax 0.00 : 146f4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 146f8: 49 01 c1 add %rax,%r9 0.00 : 146fb: 4a 8d 04 07 lea (%rdi,%r8,1),%rax 0.00 : 146ff: 48 29 f8 sub %rdi,%rax 0.00 : 14702: 48 89 c7 mov %rax,%rdi 25.00 : 14705: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 1470a: 48 c1 a5 68 ff ff ff shlq $0x4,-0x98(%rbp) 0.00 : 14711: 04 0.00 : 14712: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 14716: d3 e0 shl %cl,%eax 0.00 : 14718: 48 03 b5 68 ff ff ff add -0x98(%rbp),%rsi 0.00 : 1471f: 31 d2 xor %edx,%edx 0.00 : 14721: 48 98 cltq 0.00 : 14723: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14727: 49 8d 0c 01 lea (%r9,%rax,1),%rcx 0.00 : 1472b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14730: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 14734: 48 83 c0 01 add $0x1,%rax 0.00 : 14738: 48 03 04 11 add (%rcx,%rdx,1),%rax 0.00 : 1473c: 49 89 04 11 mov %rax,(%r9,%rdx,1) 0.00 : 14740: 48 83 c2 10 add $0x10,%rdx 0.00 : 14744: 48 83 ef 01 sub $0x1,%rdi 0.00 : 14748: 75 e6 jne 14730 <_dl_important_hwcaps+0x610> 0.00 : 1474a: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 1474e: 48 8b 9d 78 ff ff ff mov -0x88(%rbp),%rbx 0.00 : 14755: 48 89 03 mov %rax,(%rbx) 0.00 : 14758: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 1475c: 4c 89 f8 mov %r15,%rax 0.00 : 1475f: 5b pop %rbx 0.00 : 14760: 41 5c pop %r12 0.00 : 14762: 41 5d pop %r13 0.00 : 14764: 41 5e pop %r14 0.00 : 14766: 41 5f pop %r15 0.00 : 14768: c9 leaveq 0.00 : 14769: c3 retq 0.00 : 1476a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 1476e: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14772: 48 83 c0 01 add $0x1,%rax 0.00 : 14776: e9 36 fd ff ff jmpq 144b1 <_dl_important_hwcaps+0x391> 0.00 : 1477b: 49 83 c4 01 add $0x1,%r12 0.00 : 1477f: 45 31 ed xor %r13d,%r13d 0.00 : 14782: 4c 89 e0 mov %r12,%rax 0.00 : 14785: 4c 89 65 a8 mov %r12,-0x58(%rbp) 0.00 : 14789: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1478d: 48 83 c0 10 add $0x10,%rax 0.00 : 14791: 48 29 c4 sub %rax,%rsp 0.00 : 14794: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 14799: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 1479d: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 147a1: e9 bd fb ff ff jmpq 14363 <_dl_important_hwcaps+0x243> 0.00 : 147a6: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 147aa: 48 8b 50 18 mov 0x18(%rax),%rdx 0.00 : 147ae: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 147b2: e8 09 29 00 00 callq 170c0 <__mempcpy> 0.00 : 147b7: c6 00 2f movb $0x2f,(%rax) 0.00 : 147ba: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 147be: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 147c2: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 147c6: 48 8b 31 mov (%rcx),%rsi 0.00 : 147c9: e8 f2 28 00 00 callq 170c0 <__mempcpy> 0.00 : 147ce: c6 00 2f movb $0x2f,(%rax) 0.00 : 147d1: 48 c7 85 68 ff ff ff movq $0x1,-0x98(%rbp) 0.00 : 147d8: 01 00 00 00 0.00 : 147dc: e9 16 fe ff ff jmpq 145f7 <_dl_important_hwcaps+0x4d7> 0.00 : 147e1: 48 8b 5d 80 mov -0x80(%rbp),%rbx 0.00 : 147e5: 48 8b 3b mov (%rbx),%rdi 0.00 : 147e8: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 147ec: 48 8d 3c 38 lea (%rax,%rdi,1),%rdi 0.00 : 147f0: 48 89 38 mov %rdi,(%rax) 0.00 : 147f3: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 147f7: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 147fb: 49 89 7f 10 mov %rdi,0x10(%r15) 0.00 : 147ff: 49 c7 47 18 00 00 00 movq $0x0,0x18(%r15) 0.00 : 14806: 00 0.00 : 14807: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 1480b: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 1480f: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 14813: 48 8b 31 mov (%rcx),%rsi 0.00 : 14816: e8 a5 28 00 00 callq 170c0 <__mempcpy> 0.00 : 1481b: c6 00 2f movb $0x2f,(%rax) 0.00 : 1481e: 48 c7 03 02 00 00 00 movq $0x2,(%rbx) 0.00 : 14825: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 14829: 48 8b 9d 78 ff ff ff mov -0x88(%rbp),%rbx 0.00 : 14830: 48 89 03 mov %rax,(%rbx) 0.00 : 14833: e9 20 ff ff ff jmpq 14758 <_dl_important_hwcaps+0x638> 0.00 : 14838: 48 83 6d a8 01 subq $0x1,-0x58(%rbp) 0.00 : 1483d: e9 16 fb ff ff jmpq 14358 <_dl_important_hwcaps+0x238> 0.00 : 14842: 48 8d 0d 27 81 00 00 lea 0x8127(%rip),%rcx # 1c970 <__PRETTY_FUNCTION__.11989> 0.00 : 14849: 48 8d 35 92 59 00 00 lea 0x5992(%rip),%rsi # 1a1e2 <__PRETTY_FUNCTION__.12953+0x29> 0.00 : 14850: 48 8d 3d 9e 59 00 00 lea 0x599e(%rip),%rdi # 1a1f5 <__PRETTY_FUNCTION__.12953+0x3c> 0.00 : 14857: ba d5 01 00 00 mov $0x1d5,%edx 0.00 : 1485c: e8 0f 05 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /bin/gawk ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043a5b0 : 33.33 : 43a5b0: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 43a5b5: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 43a5ba: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 43a5bf: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 43a5c4: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 43a5c9: 48 81 ec 88 01 00 00 sub $0x188,%rsp 0.00 : 43a5d0: 48 c7 05 85 5d 21 00 movq $0x0,0x215d85(%rip) # 650360 0.00 : 43a5d7: 00 00 00 00 0.00 : 43a5db: 48 89 7c 24 48 mov %rdi,0x48(%rsp) 0.00 : 43a5e0: 48 c7 84 24 50 01 00 movq $0x0,0x150(%rsp) 0.00 : 43a5e7: 00 00 00 00 00 0.00 : 43a5ec: c7 84 24 5c 01 00 00 movl $0x1,0x15c(%rsp) 0.00 : 43a5f3: 01 00 00 00 0.00 : 43a5f7: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 43a5fc: c7 05 52 5d 21 00 00 movl $0x0,0x215d52(%rip) # 650358 0.00 : 43a603: 00 00 00 0.00 : 43a606: 48 85 c0 test %rax,%rax 0.00 : 43a609: 0f 84 d1 00 00 00 je 43a6e0 0.00 : 43a60f: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43a614: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 43a619: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 43a61e: 0f bf 77 20 movswl 0x20(%rdi),%esi 33.33 : 43a622: 8b 42 38 mov 0x38(%rdx),%eax 0.00 : 43a625: 89 35 2d 5d 21 00 mov %esi,0x215d2d(%rip) # 650358 0.00 : 43a62b: 48 8b 4b 18 mov 0x18(%rbx),%rcx 0.00 : 43a62f: 83 e8 23 sub $0x23,%eax 0.00 : 43a632: 83 f8 1c cmp $0x1c,%eax 0.00 : 43a635: 48 89 0d 24 5d 21 00 mov %rcx,0x215d24(%rip) # 650360 0.00 : 43a63c: 0f 86 d6 00 00 00 jbe 43a718 0.00 : 43a642: 44 8b 35 b7 5c 21 00 mov 0x215cb7(%rip),%r14d # 650300 0.00 : 43a649: 45 85 f6 test %r14d,%r14d 0.00 : 43a64c: 0f 85 83 0a 00 00 jne 43b0d5 0.00 : 43a652: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43a657: 48 85 ff test %rdi,%rdi 0.00 : 43a65a: 0f 84 a7 0d 00 00 je 43b407 0.00 : 43a660: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 43a663: 83 f8 47 cmp $0x47,%eax 0.00 : 43a666: 0f 84 f7 09 00 00 je 43b063 0.00 : 43a66c: 83 f8 49 cmp $0x49,%eax 0.00 : 43a66f: 0f 84 7b 0d 00 00 je 43b3f0 0.00 : 43a675: 31 f6 xor %esi,%esi 0.00 : 43a677: e8 44 dc ff ff callq 4382c0 0.00 : 43a67c: 48 89 84 24 50 01 00 mov %rax,0x150(%rsp) 0.00 : 43a683: 00 0.00 : 43a684: 48 8b ac 24 50 01 00 mov 0x150(%rsp),%rbp 0.00 : 43a68b: 00 0.00 : 43a68c: 48 85 ed test %rbp,%rbp 0.00 : 43a68f: 74 4f je 43a6e0 0.00 : 43a691: 48 8b bc 24 50 01 00 mov 0x150(%rsp),%rdi 0.00 : 43a698: 00 0.00 : 43a699: f6 47 3c 02 testb $0x2,0x3c(%rdi) 0.00 : 43a69d: 74 41 je 43a6e0 0.00 : 43a69f: e8 bc a0 ff ff callq 434760 0.00 : 43a6a4: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43a6a9: eb 3a jmp 43a6e5 0.00 : 43a6ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43a6b0: e8 6b ce ff ff callq 437520 0.00 : 43a6b5: 48 83 3d 2b 5f 21 00 cmpq $0x0,0x215f2b(%rip) # 6505e8 0.00 : 43a6bc: 00 0.00 : 43a6bd: 75 ec jne 43a6ab 0.00 : 43a6bf: 48 83 3d 61 30 21 00 cmpq $0x0,0x213061(%rip) # 64d728 0.00 : 43a6c6: 00 0.00 : 43a6c7: 78 17 js 43a6e0 0.00 : 43a6c9: e8 a2 cf ff ff callq 437670 0.00 : 43a6ce: 48 83 3d 52 30 21 00 cmpq $0x0,0x213052(%rip) # 64d728 0.00 : 43a6d5: 00 0.00 : 43a6d6: 79 f1 jns 43a6c9 0.00 : 43a6d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43a6df: 00 0.00 : 43a6e0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43a6e5: 48 8b 9c 24 60 01 00 mov 0x160(%rsp),%rbx 0.00 : 43a6ec: 00 0.00 : 43a6ed: 48 8b ac 24 68 01 00 mov 0x168(%rsp),%rbp 0.00 : 43a6f4: 00 0.00 : 43a6f5: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 43a6fc: 00 0.00 : 43a6fd: 4c 8b ac 24 78 01 00 mov 0x178(%rsp),%r13 0.00 : 43a704: 00 0.00 : 43a705: 4c 8b b4 24 80 01 00 mov 0x180(%rsp),%r14 0.00 : 43a70c: 00 0.00 : 43a70d: 48 81 c4 88 01 00 00 add $0x188,%rsp 0.00 : 43a714: c3 retq 0.00 : 43a715: 0f 1f 00 nopl (%rax) 33.33 : 43a718: 89 c5 mov %eax,%ebp 0.00 : 43a71a: ff 24 ed 50 7f 44 00 jmpq *0x447f50(,%rbp,8) 0.00 : 43a721: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43a728: c7 84 24 5c 01 00 00 movl $0x0,0x15c(%rsp) 0.00 : 43a72f: 00 00 00 00 0.00 : 43a733: 4c 8b 4c 24 48 mov 0x48(%rsp),%r9 0.00 : 43a738: 4c 89 8c 24 50 01 00 mov %r9,0x150(%rsp) 0.00 : 43a73f: 00 0.00 : 43a740: 4c 8b 84 24 50 01 00 mov 0x150(%rsp),%r8 0.00 : 43a747: 00 0.00 : 43a748: 4d 85 c0 test %r8,%r8 0.00 : 43a74b: 74 93 je 43a6e0 0.00 : 43a74d: 44 8b 94 24 5c 01 00 mov 0x15c(%rsp),%r10d 0.00 : 43a754: 00 0.00 : 43a755: 45 85 d2 test %r10d,%r10d 0.00 : 43a758: 74 11 je 43a76b 0.00 : 43a75a: 4c 8b a4 24 50 01 00 mov 0x150(%rsp),%r12 0.00 : 43a761: 00 0.00 : 43a762: 4d 8b 1c 24 mov (%r12),%r11 0.00 : 43a766: 4c 89 5c 24 48 mov %r11,0x48(%rsp) 0.00 : 43a76b: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 43a770: 4c 8b 74 24 48 mov 0x48(%rsp),%r14 0.00 : 43a775: bf 40 06 65 00 mov $0x650640,%edi 0.00 : 43a77a: 0f bf 42 20 movswl 0x20(%rdx),%eax 0.00 : 43a77e: 89 05 d4 5b 21 00 mov %eax,0x215bd4(%rip) # 650358 0.00 : 43a784: 4d 8b 6e 18 mov 0x18(%r14),%r13 0.00 : 43a788: 4c 89 2d d1 5b 21 00 mov %r13,0x215bd1(%rip) # 650360 0.00 : 43a78f: e8 5c c3 fc ff callq 406af0 <_setjmp@plt> 0.00 : 43a794: 83 f8 01 cmp $0x1,%eax 0.00 : 43a797: 0f 84 18 ff ff ff je 43a6b5 0.00 : 43a79d: 83 f8 02 cmp $0x2,%eax 0.00 : 43a7a0: 0f 84 41 0b 00 00 je 43b2e7 0.00 : 43a7a6: 85 c0 test %eax,%eax 0.00 : 43a7a8: 0f 84 3a 01 00 00 je 43a8e8 0.00 : 43a7ae: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43a7b3: be 19 02 00 00 mov $0x219,%esi 0.00 : 43a7b8: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43a7bd: 31 c0 xor %eax,%eax 0.00 : 43a7bf: e8 06 6d fd ff callq 4114ca 0.00 : 43a7c4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43a7c8: 4c 8b 64 24 48 mov 0x48(%rsp),%r12 0.00 : 43a7cd: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 43a7d1: e8 6a fc ff ff callq 43a440 0.00 : 43a7d6: 85 c0 test %eax,%eax 0.00 : 43a7d8: 0f 85 52 04 00 00 jne 43ac30 0.00 : 43a7de: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 43a7e3: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 43a7e7: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 43a7eb: e8 c0 fd ff ff callq 43a5b0 0.00 : 43a7f0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43a7f5: e9 eb fe ff ff jmpq 43a6e5 0.00 : 43a7fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43a800: 4c 8b 5c 24 48 mov 0x48(%rsp),%r11 0.00 : 43a805: 4c 89 9c 24 50 01 00 mov %r11,0x150(%rsp) 0.00 : 43a80c: 00 0.00 : 43a80d: 4c 8b 94 24 50 01 00 mov 0x150(%rsp),%r10 0.00 : 43a814: 00 0.00 : 43a815: 4d 85 d2 test %r10,%r10 0.00 : 43a818: 0f 84 c2 fe ff ff je 43a6e0 0.00 : 43a81e: 48 8b 9c 24 50 01 00 mov 0x150(%rsp),%rbx 0.00 : 43a825: 00 0.00 : 43a826: 48 8b 3b mov (%rbx),%rdi 0.00 : 43a829: e8 82 fd ff ff callq 43a5b0 0.00 : 43a82e: 48 8b 84 24 50 01 00 mov 0x150(%rsp),%rax 0.00 : 43a835: 00 0.00 : 43a836: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 43a83a: 48 89 b4 24 50 01 00 mov %rsi,0x150(%rsp) 0.00 : 43a841: 00 0.00 : 43a842: 48 8b 8c 24 50 01 00 mov 0x150(%rsp),%rcx 0.00 : 43a849: 00 0.00 : 43a84a: 48 85 c9 test %rcx,%rcx 0.00 : 43a84d: 75 cf jne 43a81e 0.00 : 43a84f: e9 8c fe ff ff jmpq 43a6e0 0.00 : 43a854: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43a858: 4c 8b 64 24 48 mov 0x48(%rsp),%r12 0.00 : 43a85d: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 43a861: 48 85 ff test %rdi,%rdi 0.00 : 43a864: 0f 84 19 07 00 00 je 43af83 0.00 : 43a86a: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 43a86d: 83 f8 47 cmp $0x47,%eax 0.00 : 43a870: 0f 84 e3 0a 00 00 je 43b359 0.00 : 43a876: 83 f8 49 cmp $0x49,%eax 0.00 : 43a879: 0f 84 1a 07 00 00 je 43af99 0.00 : 43a87f: 31 f6 xor %esi,%esi 0.00 : 43a881: e8 3a da ff ff callq 4382c0 0.00 : 43a886: 48 89 c7 mov %rax,%rdi 0.00 : 43a889: 48 89 bc 24 50 01 00 mov %rdi,0x150(%rsp) 0.00 : 43a890: 00 0.00 : 43a891: 48 8b bc 24 50 01 00 mov 0x150(%rsp),%rdi 0.00 : 43a898: 00 0.00 : 43a899: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 43a89d: a8 06 test $0x6,%al 0.00 : 43a89f: 0f 85 ab 03 00 00 jne 43ac50 0.00 : 43a8a5: 48 8b bc 24 50 01 00 mov 0x150(%rsp),%rdi 0.00 : 43a8ac: 00 0.00 : 43a8ad: e8 7e ab ff ff callq 435430 0.00 : 43a8b2: 66 83 48 3c 02 orw $0x2,0x3c(%rax) 0.00 : 43a8b7: 48 89 05 7a a2 21 00 mov %rax,0x21a27a(%rip) # 654b38 0.00 : 43a8be: be 03 00 00 00 mov $0x3,%esi 0.00 : 43a8c3: bf 40 28 65 00 mov $0x652840,%edi 0.00 : 43a8c8: e8 83 c1 fc ff callq 406a50 <__longjmp_chk@plt> 0.00 : 43a8cd: 0f 1f 00 nopl (%rax) 0.00 : 43a8d0: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43a8d5: e8 16 4a fe ff callq 41f2f0 0.00 : 43a8da: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43a8df: e9 01 fe ff ff jmpq 43a6e5 0.00 : 43a8e4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43a8e8: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 43a8ed: 48 83 39 00 cmpq $0x0,(%rcx) 0.00 : 43a8f1: 74 4d je 43a940 0.00 : 43a8f3: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 43a8f8: 48 8b 3b mov (%rbx),%rdi 0.00 : 43a8fb: e8 40 fb ff ff callq 43a440 0.00 : 43a900: 85 c0 test %eax,%eax 0.00 : 43a902: 75 3c jne 43a940 0.00 : 43a904: 8b bc 24 5c 01 00 00 mov 0x15c(%rsp),%edi 0.00 : 43a90b: 85 ff test %edi,%edi 0.00 : 43a90d: 0f 84 cd fd ff ff je 43a6e0 0.00 : 43a913: 4c 8b 8c 24 50 01 00 mov 0x150(%rsp),%r9 0.00 : 43a91a: 00 0.00 : 43a91b: 4d 8b 41 08 mov 0x8(%r9),%r8 0.00 : 43a91f: 4c 89 84 24 50 01 00 mov %r8,0x150(%rsp) 0.00 : 43a926: 00 0.00 : 43a927: 48 8b ac 24 50 01 00 mov 0x150(%rsp),%rbp 0.00 : 43a92e: 00 0.00 : 43a92f: 48 85 ed test %rbp,%rbp 0.00 : 43a932: 0f 85 15 fe ff ff jne 43a74d 0.00 : 43a938: e9 a3 fd ff ff jmpq 43a6e0 0.00 : 43a93d: 0f 1f 00 nopl (%rax) 0.00 : 43a940: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 43a945: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 43a94a: 48 8b 7e 08 mov 0x8(%rsi),%rdi 0.00 : 43a94e: e8 5d fc ff ff callq 43a5b0 0.00 : 43a953: eb af jmp 43a904 0.00 : 43a955: 0f 1f 00 nopl (%rax) 0.00 : 43a958: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43a95d: e8 be 47 fe ff callq 41f120 0.00 : 43a962: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43a967: e9 79 fd ff ff jmpq 43a6e5 0.00 : 43a96c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43a970: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43a975: e8 d6 a6 fe ff callq 425050 0.00 : 43a97a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43a97f: e9 61 fd ff ff jmpq 43a6e5 0.00 : 43a984: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43a988: c7 84 24 58 01 00 00 movl $0x0,0x158(%rsp) 0.00 : 43a98f: 00 00 00 00 0.00 : 43a993: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 43a998: be 01 00 00 00 mov $0x1,%esi 0.00 : 43a99d: 48 c7 84 24 38 01 00 movq $0x0,0x138(%rsp) 0.00 : 43a9a4: 00 00 00 00 00 0.00 : 43a9a9: 8b 2d 81 59 21 00 mov 0x215981(%rip),%ebp # 650330 0.00 : 43a9af: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 43a9b3: 4c 8b 72 08 mov 0x8(%rdx),%r14 0.00 : 43a9b7: 4d 8b 6e 10 mov 0x10(%r14),%r13 0.00 : 43a9bb: 4c 89 ac 24 28 01 00 mov %r13,0x128(%rsp) 0.00 : 43a9c2: 00 0.00 : 43a9c3: 48 8b bc 24 28 01 00 mov 0x128(%rsp),%rdi 0.00 : 43a9ca: 00 0.00 : 43a9cb: e8 50 a0 fd ff callq 414a20 0.00 : 43a9d0: 48 89 84 24 30 01 00 mov %rax,0x130(%rsp) 0.00 : 43a9d7: 00 0.00 : 43a9d8: 4c 8b a4 24 30 01 00 mov 0x130(%rsp),%r12 0.00 : 43a9df: 00 0.00 : 43a9e0: 49 83 7c 24 08 00 cmpq $0x0,0x8(%r12) 0.00 : 43a9e6: 0f 84 f4 fc ff ff je 43a6e0 0.00 : 43a9ec: 48 8b 84 24 30 01 00 mov 0x130(%rsp),%rax 0.00 : 43a9f3: 00 0.00 : 43a9f4: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 43a9f9: 0f 84 e1 fc ff ff je 43a6e0 0.00 : 43a9ff: 4c 8b 8c 24 30 01 00 mov 0x130(%rsp),%r9 0.00 : 43aa06: 00 0.00 : 43aa07: 4d 8b 41 10 mov 0x10(%r9),%r8 0.00 : 43aa0b: 4c 89 84 24 18 01 00 mov %r8,0x118(%rsp) 0.00 : 43aa12: 00 0.00 : 43aa13: 48 8b bc 24 18 01 00 mov 0x118(%rsp),%rdi 0.00 : 43aa1a: 00 0.00 : 43aa1b: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 43aa1f: e8 7c c1 fc ff callq 406ba0 0.00 : 43aa24: 48 85 c0 test %rax,%rax 0.00 : 43aa27: 49 89 c6 mov %rax,%r14 0.00 : 43aa2a: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 43aa2f: 0f 84 e8 0e 00 00 je 43b91d 0.00 : 43aa35: 48 c7 84 24 20 01 00 movq $0x0,0x120(%rsp) 0.00 : 43aa3c: 00 00 00 00 00 0.00 : 43aa41: 4c 8b 9c 24 30 01 00 mov 0x130(%rsp),%r11 0.00 : 43aa48: 00 0.00 : 43aa49: 4c 8b 94 24 20 01 00 mov 0x120(%rsp),%r10 0.00 : 43aa50: 00 0.00 : 43aa51: 4d 39 13 cmp %r10,(%r11) 0.00 : 43aa54: 0f 86 0e 02 00 00 jbe 43ac68 0.00 : 43aa5a: 45 31 ed xor %r13d,%r13d 0.00 : 43aa5d: eb 2e jmp 43aa8d 0.00 : 43aa5f: 90 nop 0.00 : 43aa60: 4c 8b 84 24 20 01 00 mov 0x120(%rsp),%r8 0.00 : 43aa67: 00 0.00 : 43aa68: 49 83 c0 01 add $0x1,%r8 0.00 : 43aa6c: 4c 89 84 24 20 01 00 mov %r8,0x120(%rsp) 0.00 : 43aa73: 00 0.00 : 43aa74: 48 8b 84 24 30 01 00 mov 0x130(%rsp),%rax 0.00 : 43aa7b: 00 0.00 : 43aa7c: 48 8b 9c 24 20 01 00 mov 0x120(%rsp),%rbx 0.00 : 43aa83: 00 0.00 : 43aa84: 48 39 18 cmp %rbx,(%rax) 0.00 : 43aa87: 0f 86 db 01 00 00 jbe 43ac68 0.00 : 43aa8d: 48 8b bc 24 30 01 00 mov 0x130(%rsp),%rdi 0.00 : 43aa94: 00 0.00 : 43aa95: 48 8b b4 24 20 01 00 mov 0x120(%rsp),%rsi 0.00 : 43aa9c: 00 0.00 : 43aa9d: 48 8b 4f 08 mov 0x8(%rdi),%rcx 0.00 : 43aaa1: 48 8b 1c f1 mov (%rcx,%rsi,8),%rbx 0.00 : 43aaa5: 48 85 db test %rbx,%rbx 0.00 : 43aaa8: 74 b6 je 43aa60 0.00 : 43aaaa: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 43aaaf: 4e 8d 24 ea lea (%rdx,%r13,8),%r12 0.00 : 43aab3: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 43aab7: a8 06 test $0x6,%al 0.00 : 43aab9: 0f 85 0a 05 00 00 jne 43afc9 0.00 : 43aabf: 48 89 df mov %rbx,%rdi 0.00 : 43aac2: e8 99 a5 ff ff callq 435060 0.00 : 43aac7: 49 83 c5 01 add $0x1,%r13 0.00 : 43aacb: 48 39 d8 cmp %rbx,%rax 0.00 : 43aace: 49 89 04 24 mov %rax,(%r12) 0.00 : 43aad2: 0f 85 d8 04 00 00 jne 43afb0 0.00 : 43aad8: 48 8b 1b mov (%rbx),%rbx 0.00 : 43aadb: 49 83 c4 08 add $0x8,%r12 0.00 : 43aadf: 48 85 db test %rbx,%rbx 0.00 : 43aae2: 0f 84 78 ff ff ff je 43aa60 0.00 : 43aae8: eb c9 jmp 43aab3 0.00 : 43aaea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43aaf0: 8b 0d 12 5b 21 00 mov 0x215b12(%rip),%ecx # 650608 0.00 : 43aaf6: 85 c9 test %ecx,%ecx 0.00 : 43aaf8: 0f 84 70 08 00 00 je 43b36e 0.00 : 43aafe: be 01 00 00 00 mov $0x1,%esi 0.00 : 43ab03: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43ab08: e8 43 bf fc ff callq 406a50 <__longjmp_chk@plt> 0.00 : 43ab0d: 0f 1f 00 nopl (%rax) 0.00 : 43ab10: 48 8d 7c 24 50 lea 0x50(%rsp),%rdi 0.00 : 43ab15: be 60 27 65 00 mov $0x652760,%esi 0.00 : 43ab1a: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43ab1f: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43ab22: 83 05 df 5a 21 00 01 addl $0x1,0x215adf(%rip) # 650608 0.00 : 43ab29: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 43ab2e: 4c 8b 72 08 mov 0x8(%rdx),%r14 0.00 : 43ab32: 4d 8b 6e 08 mov 0x8(%r14),%r13 0.00 : 43ab36: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 43ab3a: e8 71 fa ff ff callq 43a5b0 0.00 : 43ab3f: 4c 8b 64 24 48 mov 0x48(%rsp),%r12 0.00 : 43ab44: 4c 89 a4 24 40 01 00 mov %r12,0x140(%rsp) 0.00 : 43ab4b: 00 0.00 : 43ab4c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43ab50: 4c 8b 9c 24 40 01 00 mov 0x140(%rsp),%r11 0.00 : 43ab57: 00 0.00 : 43ab58: 4d 8b 53 08 mov 0x8(%r11),%r10 0.00 : 43ab5c: 4d 8b 4a 08 mov 0x8(%r10),%r9 0.00 : 43ab60: 49 8b 79 08 mov 0x8(%r9),%rdi 0.00 : 43ab64: e8 d7 f8 ff ff callq 43a440 0.00 : 43ab69: 85 c0 test %eax,%eax 0.00 : 43ab6b: 0f 84 2a 03 00 00 je 43ae9b 0.00 : 43ab71: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43ab76: e8 75 bf fc ff callq 406af0 <_setjmp@plt> 0.00 : 43ab7b: 83 f8 01 cmp $0x1,%eax 0.00 : 43ab7e: 0f 84 8c 00 00 00 je 43ac10 0.00 : 43ab84: 83 f8 02 cmp $0x2,%eax 0.00 : 43ab87: 0f 84 41 03 00 00 je 43aece 0.00 : 43ab8d: 85 c0 test %eax,%eax 0.00 : 43ab8f: 90 nop 0.00 : 43ab90: 74 6e je 43ac00 0.00 : 43ab92: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43ab97: be d2 02 00 00 mov $0x2d2,%esi 0.00 : 43ab9c: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43aba1: 31 c0 xor %eax,%eax 0.00 : 43aba3: e8 22 69 fd ff callq 4114ca 0.00 : 43aba8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43abaf: 00 0.00 : 43abb0: 44 8b 15 51 5a 21 00 mov 0x215a51(%rip),%r10d # 650608 0.00 : 43abb7: 45 85 d2 test %r10d,%r10d 0.00 : 43abba: 0f 84 31 03 00 00 je 43aef1 0.00 : 43abc0: be 02 00 00 00 mov $0x2,%esi 0.00 : 43abc5: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43abca: e8 81 be fc ff callq 406a50 <__longjmp_chk@plt> 0.00 : 43abcf: 90 nop 0.00 : 43abd0: 44 8b 15 51 57 21 00 mov 0x215751(%rip),%r10d # 650328 0.00 : 43abd7: 45 85 d2 test %r10d,%r10d 0.00 : 43abda: 0f 85 5b 07 00 00 jne 43b33b 0.00 : 43abe0: 44 8b 1d 45 57 21 00 mov 0x215745(%rip),%r11d # 65032c 0.00 : 43abe7: 45 85 db test %r11d,%r11d 0.00 : 43abea: 0f 85 2d 07 00 00 jne 43b31d 0.00 : 43abf0: be 01 00 00 00 mov $0x1,%esi 0.00 : 43abf5: bf 40 06 65 00 mov $0x650640,%edi 0.00 : 43abfa: e8 51 be fc ff callq 406a50 <__longjmp_chk@plt> 0.00 : 43abff: 90 nop 0.00 : 43ac00: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 43ac07: 00 0.00 : 43ac08: 48 8b 3b mov (%rbx),%rdi 0.00 : 43ac0b: e8 a0 f9 ff ff callq 43a5b0 0.00 : 43ac10: 4c 8b 84 24 40 01 00 mov 0x140(%rsp),%r8 0.00 : 43ac17: 00 0.00 : 43ac18: 49 8b 68 08 mov 0x8(%r8),%rbp 0.00 : 43ac1c: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : 43ac20: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 43ac24: e8 87 f9 ff ff callq 43a5b0 0.00 : 43ac29: e9 22 ff ff ff jmpq 43ab50 0.00 : 43ac2e: 66 90 xchg %ax,%ax 0.00 : 43ac30: 4c 8b 74 24 48 mov 0x48(%rsp),%r14 0.00 : 43ac35: 4d 8b 6e 08 mov 0x8(%r14),%r13 0.00 : 43ac39: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 43ac3d: e8 6e f9 ff ff callq 43a5b0 0.00 : 43ac42: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43ac47: e9 99 fa ff ff jmpq 43a6e5 0.00 : 43ac4c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43ac50: 48 8b 9c 24 50 01 00 mov 0x150(%rsp),%rbx 0.00 : 43ac57: 00 0.00 : 43ac58: 48 89 1d d9 9e 21 00 mov %rbx,0x219ed9(%rip) # 654b38 0.00 : 43ac5f: e9 5a fc ff ff jmpq 43a8be 0.00 : 43ac64: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43ac68: 85 ed test %ebp,%ebp 0.00 : 43ac6a: 0f 85 8e 0c 00 00 jne 43b8fe 0.00 : 43ac70: 48 83 3d a0 59 21 00 cmpq $0x0,0x2159a0(%rip) # 650618 0.00 : 43ac77: 00 0.00 : 43ac78: 4c 8b a4 24 18 01 00 mov 0x118(%rsp),%r12 0.00 : 43ac7f: 00 0.00 : 43ac80: 4c 8b ac 24 30 01 00 mov 0x130(%rsp),%r13 0.00 : 43ac87: 00 0.00 : 43ac88: 49 8b 5d 18 mov 0x18(%r13),%rbx 0.00 : 43ac8c: 0f 84 74 0b 00 00 je 43b806 0.00 : 43ac92: 48 8b 05 4f 59 21 00 mov 0x21594f(%rip),%rax # 6505e8 0.00 : 43ac99: 48 3b 05 40 59 21 00 cmp 0x215940(%rip),%rax # 6505e0 0.00 : 43aca0: 0f 84 cb 0a 00 00 je 43b771 0.00 : 43aca6: 4c 8b 2d 3b 59 21 00 mov 0x21593b(%rip),%r13 # 6505e8 0.00 : 43acad: 48 8b 15 64 59 21 00 mov 0x215964(%rip),%rdx # 650618 0.00 : 43acb4: 48 8d 7c 24 50 lea 0x50(%rsp),%rdi 0.00 : 43acb9: be 60 27 65 00 mov $0x652760,%esi 0.00 : 43acbe: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43acc3: 83 05 3e 59 21 00 01 addl $0x1,0x21593e(%rip) # 650608 0.00 : 43acca: 4b 8d 44 6d 00 lea 0x0(%r13,%r13,2),%rax 0.00 : 43accf: 4c 8d 04 c5 00 00 00 lea 0x0(,%rax,8),%r8 0.00 : 43acd6: 00 0.00 : 43acd7: 48 89 1c c2 mov %rbx,(%rdx,%rax,8) 0.00 : 43acdb: 4d 89 64 10 10 mov %r12,0x10(%r8,%rdx,1) 0.00 : 43ace0: 4d 89 74 10 08 mov %r14,0x8(%r8,%rdx,1) 0.00 : 43ace5: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43ace8: 48 83 05 f8 58 21 00 addq $0x1,0x2158f8(%rip) # 6505e8 0.00 : 43acef: 01 0.00 : 43acf0: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 43acf5: 48 8b 4e 08 mov 0x8(%rsi),%rcx 0.00 : 43acf9: 4c 8b 59 08 mov 0x8(%rcx),%r11 0.00 : 43acfd: 4d 8b 13 mov (%r11),%r10 0.00 : 43ad00: 41 83 7a 38 47 cmpl $0x47,0x38(%r10) 0.00 : 43ad05: 0f 84 30 0a 00 00 je 43b73b 0.00 : 43ad0b: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 43ad10: 48 8d b4 24 38 01 00 lea 0x138(%rsp),%rsi 0.00 : 43ad17: 00 0.00 : 43ad18: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 43ad1c: 31 d2 xor %edx,%edx 0.00 : 43ad1e: 4c 8b 47 08 mov 0x8(%rdi),%r8 0.00 : 43ad22: 49 8b 38 mov (%r8),%rdi 0.00 : 43ad25: e8 46 ef ff ff callq 439c70 0.00 : 43ad2a: 48 89 84 24 48 01 00 mov %rax,0x148(%rsp) 0.00 : 43ad31: 00 0.00 : 43ad32: 4c 8b 6c 24 48 mov 0x48(%rsp),%r13 0.00 : 43ad37: 4c 89 ac 24 40 01 00 mov %r13,0x140(%rsp) 0.00 : 43ad3e: 00 0.00 : 43ad3f: 48 c7 84 24 20 01 00 movq $0x0,0x120(%rsp) 0.00 : 43ad46: 00 00 00 00 00 0.00 : 43ad4b: 48 8b 84 24 20 01 00 mov 0x120(%rsp),%rax 0.00 : 43ad52: 00 0.00 : 43ad53: 48 8b b4 24 18 01 00 mov 0x118(%rsp),%rsi 0.00 : 43ad5a: 00 0.00 : 43ad5b: 48 39 f0 cmp %rsi,%rax 0.00 : 43ad5e: 0f 83 d1 00 00 00 jae 43ae35 0.00 : 43ad64: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43ad68: 4c 8b 9c 24 48 01 00 mov 0x148(%rsp),%r11 0.00 : 43ad6f: 00 0.00 : 43ad70: 49 8b 3b mov (%r11),%rdi 0.00 : 43ad73: e8 e8 99 ff ff callq 434760 0.00 : 43ad78: 48 8b 9c 24 48 01 00 mov 0x148(%rsp),%rbx 0.00 : 43ad7f: 00 0.00 : 43ad80: 4c 8b 4c 24 30 mov 0x30(%rsp),%r9 0.00 : 43ad85: 31 d2 xor %edx,%edx 0.00 : 43ad87: 4c 8b 94 24 20 01 00 mov 0x120(%rsp),%r10 0.00 : 43ad8e: 00 0.00 : 43ad8f: 4c 8b a4 24 20 01 00 mov 0x120(%rsp),%r12 0.00 : 43ad96: 00 0.00 : 43ad97: 4b 8b 2c d1 mov (%r9,%r10,8),%rbp 0.00 : 43ad9b: 4f 8b 34 e1 mov (%r9,%r12,8),%r14 0.00 : 43ad9f: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 43ada3: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 43ada7: e8 f4 a6 ff ff callq 4354a0 0.00 : 43adac: 48 89 03 mov %rax,(%rbx) 0.00 : 43adaf: 48 8b 84 24 38 01 00 mov 0x138(%rsp),%rax 0.00 : 43adb6: 00 0.00 : 43adb7: 48 85 c0 test %rax,%rax 0.00 : 43adba: 0f 85 74 09 00 00 jne 43b734 0.00 : 43adc0: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43adc5: e8 26 bd fc ff callq 406af0 <_setjmp@plt> 0.00 : 43adca: 83 f8 01 cmp $0x1,%eax 0.00 : 43adcd: 74 39 je 43ae08 0.00 : 43adcf: 83 f8 02 cmp $0x2,%eax 0.00 : 43add2: 0f 84 9b 0b 00 00 je 43b973 0.00 : 43add8: 85 c0 test %eax,%eax 0.00 : 43adda: 74 1c je 43adf8 0.00 : 43addc: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43ade1: be 19 03 00 00 mov $0x319,%esi 0.00 : 43ade6: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43adeb: 31 c0 xor %eax,%eax 0.00 : 43aded: e8 d8 66 fd ff callq 4114ca 0.00 : 43adf2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43adf8: 48 8b 8c 24 40 01 00 mov 0x140(%rsp),%rcx 0.00 : 43adff: 00 0.00 : 43ae00: 48 8b 39 mov (%rcx),%rdi 0.00 : 43ae03: e8 a8 f7 ff ff callq 43a5b0 0.00 : 43ae08: 48 8b 94 24 20 01 00 mov 0x120(%rsp),%rdx 0.00 : 43ae0f: 00 0.00 : 43ae10: 48 83 c2 01 add $0x1,%rdx 0.00 : 43ae14: 48 89 94 24 20 01 00 mov %rdx,0x120(%rsp) 0.00 : 43ae1b: 00 0.00 : 43ae1c: 48 8b bc 24 20 01 00 mov 0x120(%rsp),%rdi 0.00 : 43ae23: 00 0.00 : 43ae24: 4c 8b 84 24 18 01 00 mov 0x118(%rsp),%r8 0.00 : 43ae2b: 00 0.00 : 43ae2c: 4c 39 c7 cmp %r8,%rdi 0.00 : 43ae2f: 0f 82 33 ff ff ff jb 43ad68 0.00 : 43ae35: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43ae3a: 48 8d 74 24 50 lea 0x50(%rsp),%rsi 0.00 : 43ae3f: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43ae44: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43ae47: 83 2d ba 57 21 00 01 subl $0x1,0x2157ba(%rip) # 650608 0.00 : 43ae4e: e8 cd c6 ff ff callq 437520 0.00 : 43ae53: 8b 35 a7 54 21 00 mov 0x2154a7(%rip),%esi # 650300 0.00 : 43ae59: 85 f6 test %esi,%esi 0.00 : 43ae5b: 0f 85 22 0b 00 00 jne 43b983 0.00 : 43ae61: 8b 84 24 58 01 00 00 mov 0x158(%rsp),%eax 0.00 : 43ae68: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43ae6d: e9 73 f8 ff ff jmpq 43a6e5 0.00 : 43ae72: 4c 8b 94 24 40 01 00 mov 0x140(%rsp),%r10 0.00 : 43ae79: 00 0.00 : 43ae7a: 49 8b 7a 08 mov 0x8(%r10),%rdi 0.00 : 43ae7e: e8 2d f7 ff ff callq 43a5b0 0.00 : 43ae83: 4c 8b 9c 24 40 01 00 mov 0x140(%rsp),%r11 0.00 : 43ae8a: 00 0.00 : 43ae8b: 49 8b 3b mov (%r11),%rdi 0.00 : 43ae8e: e8 ad f5 ff ff callq 43a440 0.00 : 43ae93: 85 c0 test %eax,%eax 0.00 : 43ae95: 0f 85 0d 04 00 00 jne 43b2a8 0.00 : 43ae9b: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43aea0: 48 8d 74 24 50 lea 0x50(%rsp),%rsi 0.00 : 43aea5: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43aeaa: 83 2d 57 57 21 00 01 subl $0x1,0x215757(%rip) # 650608 0.00 : 43aeb1: b0 01 mov $0x1,%al 0.00 : 43aeb3: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43aeb6: e9 2a f8 ff ff jmpq 43a6e5 0.00 : 43aebb: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 43aec0: f6 40 3c 02 testb $0x2,0x3c(%rax) 0.00 : 43aec4: 74 08 je 43aece 0.00 : 43aec6: 48 89 c7 mov %rax,%rdi 0.00 : 43aec9: e8 92 98 ff ff callq 434760 0.00 : 43aece: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43aed3: 48 8d 74 24 50 lea 0x50(%rsp),%rsi 0.00 : 43aed8: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43aedd: 83 2d 24 57 21 00 01 subl $0x1,0x215724(%rip) # 650608 0.00 : 43aee4: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43aee9: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43aeec: e9 f4 f7 ff ff jmpq 43a6e5 0.00 : 43aef1: 44 8b 1d 08 54 21 00 mov 0x215408(%rip),%r11d # 650300 0.00 : 43aef8: 45 85 db test %r11d,%r11d 0.00 : 43aefb: 74 42 je 43af3f 0.00 : 43aefd: 66 83 3d 1d 57 21 00 cmpw $0x0,0x21571d(%rip) # 650622 0.00 : 43af04: 00 0.00 : 43af05: 75 38 jne 43af3f 0.00 : 43af07: be 37 03 00 00 mov $0x337,%esi 0.00 : 43af0c: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43af11: e8 32 64 fd ff callq 411348 0.00 : 43af16: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43af1b: be c0 70 44 00 mov $0x4470c0,%esi 0.00 : 43af20: 31 ff xor %edi,%edi 0.00 : 43af22: 4c 8b 2d a7 26 21 00 mov 0x2126a7(%rip),%r13 # 64d5d0 0.00 : 43af29: e8 f2 c0 fc ff callq 407020 0.00 : 43af2e: 48 89 c7 mov %rax,%rdi 0.00 : 43af31: 31 c0 xor %eax,%eax 0.00 : 43af33: 41 ff d5 callq *%r13 0.00 : 43af36: 66 c7 05 e3 56 21 00 movw $0x1,0x2156e3(%rip) # 650622 0.00 : 43af3d: 01 00 0.00 : 43af3f: 44 8b 05 b2 53 21 00 mov 0x2153b2(%rip),%r8d # 6502f8 0.00 : 43af46: 45 85 c0 test %r8d,%r8d 0.00 : 43af49: 74 0e je 43af59 0.00 : 43af4b: 8b 15 ab 53 21 00 mov 0x2153ab(%rip),%edx # 6502fc 0.00 : 43af51: 85 d2 test %edx,%edx 0.00 : 43af53: 0f 84 97 fc ff ff je 43abf0 0.00 : 43af59: be 3b 03 00 00 mov $0x33b,%esi 0.00 : 43af5e: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43af63: e8 e0 63 fd ff callq 411348 0.00 : 43af68: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43af6d: be e8 70 44 00 mov $0x4470e8,%esi 0.00 : 43af72: 31 ff xor %edi,%edi 0.00 : 43af74: e8 a7 c0 fc ff callq 407020 0.00 : 43af79: 48 89 c7 mov %rax,%rdi 0.00 : 43af7c: 31 c0 xor %eax,%eax 0.00 : 43af7e: e8 47 65 fd ff callq 4114ca 0.00 : 43af83: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43af88: be a8 03 00 00 mov $0x3a8,%esi 0.00 : 43af8d: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43af92: 31 c0 xor %eax,%eax 0.00 : 43af94: e8 31 65 fd ff callq 4114ca 0.00 : 43af99: f6 47 3d 08 testb $0x8,0x3d(%rdi) 0.00 : 43af9d: 0f 84 e6 f8 ff ff je 43a889 0.00 : 43afa3: e8 08 b1 ff ff callq 4360b0 0.00 : 43afa8: 48 89 c7 mov %rax,%rdi 0.00 : 43afab: e9 d9 f8 ff ff jmpq 43a889 0.00 : 43afb0: b9 7c 80 44 00 mov $0x44807c,%ecx 0.00 : 43afb5: ba fa 02 00 00 mov $0x2fa,%edx 0.00 : 43afba: be 0c 66 44 00 mov $0x44660c,%esi 0.00 : 43afbf: bf 33 67 44 00 mov $0x446733,%edi 0.00 : 43afc4: e8 57 bb fc ff callq 406b20 <__assert_fail@plt> 0.00 : 43afc9: 83 e0 fd and $0xfffffffd,%eax 0.00 : 43afcc: 83 c8 01 or $0x1,%eax 0.00 : 43afcf: 66 89 43 3c mov %ax,0x3c(%rbx) 0.00 : 43afd3: 48 89 d8 mov %rbx,%rax 0.00 : 43afd6: e9 ec fa ff ff jmpq 43aac7 0.00 : 43afdb: 48 8d 7c 24 50 lea 0x50(%rsp),%rdi 0.00 : 43afe0: be 60 27 65 00 mov $0x652760,%esi 0.00 : 43afe5: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43afea: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43afed: 83 05 14 56 21 00 01 addl $0x1,0x215614(%rip) # 650608 0.00 : 43aff4: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 43aff9: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 43b000: 00 0.00 : 43b001: 4c 8b 84 24 40 01 00 mov 0x140(%rsp),%r8 0.00 : 43b008: 00 0.00 : 43b009: 49 8b 38 mov (%r8),%rdi 0.00 : 43b00c: e8 2f f4 ff ff callq 43a440 0.00 : 43b011: 85 c0 test %eax,%eax 0.00 : 43b013: 0f 84 82 fe ff ff je 43ae9b 0.00 : 43b019: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43b01e: e8 cd ba fc ff callq 406af0 <_setjmp@plt> 0.00 : 43b023: 83 f8 01 cmp $0x1,%eax 0.00 : 43b026: 74 d9 je 43b001 0.00 : 43b028: 83 f8 02 cmp $0x2,%eax 0.00 : 43b02b: 0f 84 9d fe ff ff je 43aece 0.00 : 43b031: 85 c0 test %eax,%eax 0.00 : 43b033: 74 1b je 43b050 0.00 : 43b035: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43b03a: be a6 02 00 00 mov $0x2a6,%esi 0.00 : 43b03f: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43b044: 31 c0 xor %eax,%eax 0.00 : 43b046: e8 7f 64 fd ff callq 4114ca 0.00 : 43b04b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43b050: 48 8b ac 24 40 01 00 mov 0x140(%rsp),%rbp 0.00 : 43b057: 00 0.00 : 43b058: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 43b05c: e8 4f f5 ff ff callq 43a5b0 0.00 : 43b061: eb 9e jmp 43b001 0.00 : 43b063: 48 89 fa mov %rdi,%rdx 0.00 : 43b066: 48 8b 3f mov (%rdi),%rdi 0.00 : 43b069: 48 3b 3d 70 99 21 00 cmp 0x219970(%rip),%rdi # 6549e0 0.00 : 43b070: 0f 84 a5 00 00 00 je 43b11b 0.00 : 43b076: 48 89 bc 24 50 01 00 mov %rdi,0x150(%rsp) 0.00 : 43b07d: 00 0.00 : 43b07e: 4c 8b 9c 24 50 01 00 mov 0x150(%rsp),%r11 0.00 : 43b085: 00 0.00 : 43b086: 4d 85 db test %r11,%r11 0.00 : 43b089: 0f 85 02 f6 ff ff jne 43a691 0.00 : 43b08f: e9 4c f6 ff ff jmpq 43a6e0 0.00 : 43b094: 4c 8b 74 24 48 mov 0x48(%rsp),%r14 0.00 : 43b099: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 43b09e: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : 43b0a2: 48 8b 3b mov (%rbx),%rdi 0.00 : 43b0a5: e8 34 d0 fc ff callq 4080de 0.00 : 43b0aa: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43b0af: e9 31 f6 ff ff jmpq 43a6e5 0.00 : 43b0b4: 4c 8b 4c 24 48 mov 0x48(%rsp),%r9 0.00 : 43b0b9: 48 8b 6c 24 48 mov 0x48(%rsp),%rbp 0.00 : 43b0be: 49 8b 71 08 mov 0x8(%r9),%rsi 0.00 : 43b0c2: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 43b0c6: e8 f5 95 fd ff callq 4146c0 0.00 : 43b0cb: b8 01 00 00 00 mov $0x1,%eax 0.00 : 43b0d0: e9 10 f6 ff ff jmpq 43a6e5 0.00 : 43b0d5: 4c 8b 4c 24 48 mov 0x48(%rsp),%r9 0.00 : 43b0da: 41 83 79 38 47 cmpl $0x47,0x38(%r9) 0.00 : 43b0df: 0f 84 95 07 00 00 je 43b87a 0.00 : 43b0e5: 4c 8b 54 24 48 mov 0x48(%rsp),%r10 0.00 : 43b0ea: 41 83 7a 38 46 cmpl $0x46,0x38(%r10) 0.00 : 43b0ef: 0f 84 85 07 00 00 je 43b87a 0.00 : 43b0f5: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43b0fa: 48 85 ff test %rdi,%rdi 0.00 : 43b0fd: 0f 84 04 03 00 00 je 43b407 0.00 : 43b103: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 43b106: 83 f8 47 cmp $0x47,%eax 0.00 : 43b109: 0f 84 54 ff ff ff je 43b063 0.00 : 43b10f: 83 f8 49 cmp $0x49,%eax 0.00 : 43b112: 48 89 fa mov %rdi,%rdx 0.00 : 43b115: 0f 84 d5 02 00 00 je 43b3f0 0.00 : 43b11b: 48 89 d7 mov %rdx,%rdi 0.00 : 43b11e: 31 f6 xor %esi,%esi 0.00 : 43b120: e8 9b d1 ff ff callq 4382c0 0.00 : 43b125: 48 89 c7 mov %rax,%rdi 0.00 : 43b128: e9 49 ff ff ff jmpq 43b076 0.00 : 43b12d: 44 8b 2d f4 51 21 00 mov 0x2151f4(%rip),%r13d # 650328 0.00 : 43b134: 45 85 ed test %r13d,%r13d 0.00 : 43b137: 0f 85 11 01 00 00 jne 43b24e 0.00 : 43b13d: 44 8b 05 e8 51 21 00 mov 0x2151e8(%rip),%r8d # 65032c 0.00 : 43b144: 45 85 c0 test %r8d,%r8d 0.00 : 43b147: 0f 84 f0 00 00 00 je 43b23d 0.00 : 43b14d: be 7f 03 00 00 mov $0x37f,%esi 0.00 : 43b152: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b157: e8 ec 61 fd ff callq 411348 0.00 : 43b15c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b161: be 00 72 44 00 mov $0x447200,%esi 0.00 : 43b166: e9 07 fe ff ff jmpq 43af72 0.00 : 43b16b: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 43b170: c7 05 6e 51 21 00 01 movl $0x1,0x21516e(%rip) # 6502e8 0.00 : 43b177: 00 00 00 0.00 : 43b17a: 48 83 3a 00 cmpq $0x0,(%rdx) 0.00 : 43b17e: 74 63 je 43b1e3 0.00 : 43b180: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 43b185: 48 8b 39 mov (%rcx),%rdi 0.00 : 43b188: 48 85 ff test %rdi,%rdi 0.00 : 43b18b: 0f 84 81 00 00 00 je 43b212 0.00 : 43b191: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 43b194: 83 f8 47 cmp $0x47,%eax 0.00 : 43b197: 0f 84 8b 00 00 00 je 43b228 0.00 : 43b19d: 83 f8 49 cmp $0x49,%eax 0.00 : 43b1a0: 74 57 je 43b1f9 0.00 : 43b1a2: 31 f6 xor %esi,%esi 0.00 : 43b1a4: e8 17 d1 ff ff callq 4382c0 0.00 : 43b1a9: 48 89 c7 mov %rax,%rdi 0.00 : 43b1ac: 48 89 bc 24 50 01 00 mov %rdi,0x150(%rsp) 0.00 : 43b1b3: 00 0.00 : 43b1b4: 48 8b bc 24 50 01 00 mov 0x150(%rsp),%rdi 0.00 : 43b1bb: 00 0.00 : 43b1bc: f6 47 3c 20 testb $0x20,0x3c(%rdi) 0.00 : 43b1c0: 74 30 je 43b1f2 0.00 : 43b1c2: f2 0f 10 07 movsd (%rdi),%xmm0 0.00 : 43b1c6: f2 0f 2c f0 cvttsd2si %xmm0,%esi 0.00 : 43b1ca: 48 8b bc 24 50 01 00 mov 0x150(%rsp),%rdi 0.00 : 43b1d1: 00 0.00 : 43b1d2: f6 47 3c 02 testb $0x2,0x3c(%rdi) 0.00 : 43b1d6: 89 35 10 51 21 00 mov %esi,0x215110(%rip) # 6502ec 0.00 : 43b1dc: 74 05 je 43b1e3 0.00 : 43b1de: e8 7d 95 ff ff callq 434760 0.00 : 43b1e3: be 02 00 00 00 mov $0x2,%esi 0.00 : 43b1e8: bf 40 06 65 00 mov $0x650640,%edi 0.00 : 43b1ed: e8 5e b8 fc ff callq 406a50 <__longjmp_chk@plt> 0.00 : 43b1f2: e8 b9 a5 ff ff callq 4357b0 0.00 : 43b1f7: eb cd jmp 43b1c6 0.00 : 43b1f9: f6 47 3d 08 testb $0x8,0x3d(%rdi) 0.00 : 43b1fd: 0f 1f 00 nopl (%rax) 0.00 : 43b200: 74 aa je 43b1ac 0.00 : 43b202: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43b208: e8 a3 ae ff ff callq 4360b0 0.00 : 43b20d: 48 89 c7 mov %rax,%rdi 0.00 : 43b210: eb 9a jmp 43b1ac 0.00 : 43b212: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43b217: be 97 03 00 00 mov $0x397,%esi 0.00 : 43b21c: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43b221: 31 c0 xor %eax,%eax 0.00 : 43b223: e8 a2 62 fd ff callq 4114ca 0.00 : 43b228: 48 8b 07 mov (%rdi),%rax 0.00 : 43b22b: 48 3b 05 ae 97 21 00 cmp 0x2197ae(%rip),%rax # 6549e0 0.00 : 43b232: 0f 85 71 ff ff ff jne 43b1a9 0.00 : 43b238: e9 65 ff ff ff jmpq 43b1a2 0.00 : 43b23d: 48 83 3d a3 53 21 00 cmpq $0x0,0x2153a3(%rip) # 6505e8 0.00 : 43b244: 00 0.00 : 43b245: 74 25 je 43b26c 0.00 : 43b247: e8 d4 c2 ff ff callq 437520 0.00 : 43b24c: eb ef jmp 43b23d 0.00 : 43b24e: be 7d 03 00 00 mov $0x37d,%esi 0.00 : 43b253: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b258: e8 eb 60 fd ff callq 411348 0.00 : 43b25d: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b262: be d0 71 44 00 mov $0x4471d0,%esi 0.00 : 43b267: e9 06 fd ff ff jmpq 43af72 0.00 : 43b26c: 48 83 3d b4 24 21 00 cmpq $0x0,0x2124b4(%rip) # 64d728 0.00 : 43b273: 00 0.00 : 43b274: 0f 88 88 00 00 00 js 43b302 0.00 : 43b27a: e8 f1 c3 ff ff callq 437670 0.00 : 43b27f: 90 nop 0.00 : 43b280: eb ea jmp 43b26c 0.00 : 43b282: 48 8d 7c 24 50 lea 0x50(%rsp),%rdi 0.00 : 43b287: be 60 27 65 00 mov $0x652760,%esi 0.00 : 43b28c: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43b291: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43b294: 83 05 6d 53 21 00 01 addl $0x1,0x21536d(%rip) # 650608 0.00 : 43b29b: 4c 8b 4c 24 48 mov 0x48(%rsp),%r9 0.00 : 43b2a0: 4c 89 8c 24 40 01 00 mov %r9,0x140(%rsp) 0.00 : 43b2a7: 00 0.00 : 43b2a8: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43b2ad: e8 3e b8 fc ff callq 406af0 <_setjmp@plt> 0.00 : 43b2b2: 83 f8 01 cmp $0x1,%eax 0.00 : 43b2b5: 0f 84 c8 fb ff ff je 43ae83 0.00 : 43b2bb: 83 f8 02 cmp $0x2,%eax 0.00 : 43b2be: 0f 84 0a fc ff ff je 43aece 0.00 : 43b2c4: 85 c0 test %eax,%eax 0.00 : 43b2c6: 0f 84 a6 fb ff ff je 43ae72 0.00 : 43b2cc: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43b2d1: be bb 02 00 00 mov $0x2bb,%esi 0.00 : 43b2d6: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43b2db: 31 c0 xor %eax,%eax 0.00 : 43b2dd: e8 e8 61 fd ff callq 4114ca 0.00 : 43b2e2: e8 39 c2 ff ff callq 437520 0.00 : 43b2e7: 48 83 3d f9 52 21 00 cmpq $0x0,0x2152f9(%rip) # 6505e8 0.00 : 43b2ee: 00 0.00 : 43b2ef: 75 f1 jne 43b2e2 0.00 : 43b2f1: 48 83 3d 2f 24 21 00 cmpq $0x0,0x21242f(%rip) # 64d728 0.00 : 43b2f8: 00 0.00 : 43b2f9: 79 0c jns 43b307 0.00 : 43b2fb: 31 c0 xor %eax,%eax 0.00 : 43b2fd: e9 e3 f3 ff ff jmpq 43a6e5 0.00 : 43b302: e8 73 49 fd ff callq 40fc7a 0.00 : 43b307: e8 64 c3 ff ff callq 437670 0.00 : 43b30c: 48 83 3d 14 24 21 00 cmpq $0x0,0x212414(%rip) # 64d728 0.00 : 43b313: 00 0.00 : 43b314: 79 f1 jns 43b307 0.00 : 43b316: 31 c0 xor %eax,%eax 0.00 : 43b318: e9 c8 f3 ff ff jmpq 43a6e5 0.00 : 43b31d: be 74 03 00 00 mov $0x374,%esi 0.00 : 43b322: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b327: e8 1c 60 fd ff callq 411348 0.00 : 43b32c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b331: be a0 71 44 00 mov $0x4471a0,%esi 0.00 : 43b336: e9 37 fc ff ff jmpq 43af72 0.00 : 43b33b: be 72 03 00 00 mov $0x372,%esi 0.00 : 43b340: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b345: e8 fe 5f fd ff callq 411348 0.00 : 43b34a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b34f: be 70 71 44 00 mov $0x447170,%esi 0.00 : 43b354: e9 19 fc ff ff jmpq 43af72 0.00 : 43b359: 48 8b 07 mov (%rdi),%rax 0.00 : 43b35c: 48 3b 05 7d 96 21 00 cmp 0x21967d(%rip),%rax # 6549e0 0.00 : 43b363: 0f 85 1d f5 ff ff jne 43a886 0.00 : 43b369: e9 11 f5 ff ff jmpq 43a87f 0.00 : 43b36e: 8b 35 8c 4f 21 00 mov 0x214f8c(%rip),%esi # 650300 0.00 : 43b374: 85 f6 test %esi,%esi 0.00 : 43b376: 74 42 je 43b3ba 0.00 : 43b378: 66 83 3d a0 52 21 00 cmpw $0x0,0x2152a0(%rip) # 650620 0.00 : 43b37f: 00 0.00 : 43b380: 75 38 jne 43b3ba 0.00 : 43b382: be 4c 03 00 00 mov $0x34c,%esi 0.00 : 43b387: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b38c: e8 b7 5f fd ff callq 411348 0.00 : 43b391: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b396: be 10 71 44 00 mov $0x447110,%esi 0.00 : 43b39b: 31 ff xor %edi,%edi 0.00 : 43b39d: 4c 8b 25 2c 22 21 00 mov 0x21222c(%rip),%r12 # 64d5d0 0.00 : 43b3a4: e8 77 bc fc ff callq 407020 0.00 : 43b3a9: 48 89 c7 mov %rax,%rdi 0.00 : 43b3ac: 31 c0 xor %eax,%eax 0.00 : 43b3ae: 41 ff d4 callq *%r12 0.00 : 43b3b1: 66 c7 05 66 52 21 00 movw $0x1,0x215266(%rip) # 650620 0.00 : 43b3b8: 01 00 0.00 : 43b3ba: 8b 3d 38 4f 21 00 mov 0x214f38(%rip),%edi # 6502f8 0.00 : 43b3c0: 85 ff test %edi,%edi 0.00 : 43b3c2: 74 0e je 43b3d2 0.00 : 43b3c4: 8b 05 32 4f 21 00 mov 0x214f32(%rip),%eax # 6502fc 0.00 : 43b3ca: 85 c0 test %eax,%eax 0.00 : 43b3cc: 0f 84 1e f8 ff ff je 43abf0 0.00 : 43b3d2: be 50 03 00 00 mov $0x350,%esi 0.00 : 43b3d7: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b3dc: e8 67 5f fd ff callq 411348 0.00 : 43b3e1: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b3e6: be 40 71 44 00 mov $0x447140,%esi 0.00 : 43b3eb: e9 82 fb ff ff jmpq 43af72 0.00 : 43b3f0: f6 47 3d 08 testb $0x8,0x3d(%rdi) 0.00 : 43b3f4: 0f 84 7c fc ff ff je 43b076 0.00 : 43b3fa: e8 b1 ac ff ff callq 4360b0 0.00 : 43b3ff: 48 89 c7 mov %rax,%rdi 0.00 : 43b402: e9 6f fc ff ff jmpq 43b076 0.00 : 43b407: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43b40c: be ba 03 00 00 mov $0x3ba,%esi 0.00 : 43b411: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43b416: 31 c0 xor %eax,%eax 0.00 : 43b418: e8 ad 60 fd ff callq 4114ca 0.00 : 43b41d: 48 8d 7c 24 50 lea 0x50(%rsp),%rdi 0.00 : 43b422: be 60 27 65 00 mov $0x652760,%esi 0.00 : 43b427: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43b42c: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43b42f: 83 05 d2 51 21 00 01 addl $0x1,0x2151d2(%rip) # 650608 0.00 : 43b436: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 43b43b: 48 89 9c 24 40 01 00 mov %rbx,0x140(%rsp) 0.00 : 43b442: 00 0.00 : 43b443: 48 8b 8c 24 40 01 00 mov 0x140(%rsp),%rcx 0.00 : 43b44a: 00 0.00 : 43b44b: 48 8b 01 mov (%rcx),%rax 0.00 : 43b44e: 48 85 c0 test %rax,%rax 0.00 : 43b451: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 43b456: 0f 84 0a 04 00 00 je 43b866 0.00 : 43b45c: 48 8b 6c 24 28 mov 0x28(%rsp),%rbp 0.00 : 43b461: 8b 45 38 mov 0x38(%rbp),%eax 0.00 : 43b464: 83 f8 47 cmp $0x47,%eax 0.00 : 43b467: 0f 84 da 03 00 00 je 43b847 0.00 : 43b46d: 83 f8 49 cmp $0x49,%eax 0.00 : 43b470: 0f 84 ff 01 00 00 je 43b675 0.00 : 43b476: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 43b47b: 31 f6 xor %esi,%esi 0.00 : 43b47d: e8 3e ce ff ff callq 4382c0 0.00 : 43b482: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 43b487: 4c 8b a4 24 40 01 00 mov 0x140(%rsp),%r12 0.00 : 43b48e: 00 0.00 : 43b48f: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 43b494: 4d 8b 5c 24 08 mov 0x8(%r12),%r11 0.00 : 43b499: 4d 8b 0b mov (%r11),%r9 0.00 : 43b49c: 4c 89 4c 24 08 mov %r9,0x8(%rsp) 0.00 : 43b4a1: 4d 8b 53 08 mov 0x8(%r11),%r10 0.00 : 43b4a5: 4d 85 c9 test %r9,%r9 0.00 : 43b4a8: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 43b4af: 00 0.00 : 43b4b0: 4c 89 54 24 10 mov %r10,0x10(%rsp) 0.00 : 43b4b5: 0f 84 02 01 00 00 je 43b5bd 0.00 : 43b4bb: 4c 8b 74 24 08 mov 0x8(%rsp),%r14 0.00 : 43b4c0: 44 8b 6c 24 24 mov 0x24(%rsp),%r13d 0.00 : 43b4c5: 49 8b 0e mov (%r14),%rcx 0.00 : 43b4c8: 45 85 ed test %r13d,%r13d 0.00 : 43b4cb: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 43b4d0: 0f 85 19 02 00 00 jne 43b6ef 0.00 : 43b4d6: 83 79 38 2e cmpl $0x2e,0x38(%rcx) 0.00 : 43b4da: 0f 84 bb 00 00 00 je 43b59b 0.00 : 43b4e0: 48 8b 39 mov (%rcx),%rdi 0.00 : 43b4e3: 83 7f 38 50 cmpl $0x50,0x38(%rdi) 0.00 : 43b4e7: 0f 85 68 01 00 00 jne 43b655 0.00 : 43b4ed: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 43b4f2: 0f b7 42 3c movzwl 0x3c(%rdx),%eax 0.00 : 43b4f6: f6 c4 08 test $0x8,%ah 0.00 : 43b4f9: 0f 85 43 01 00 00 jne 43b642 0.00 : 43b4ff: a8 10 test $0x10,%al 0.00 : 43b501: 74 1d je 43b520 0.00 : 43b503: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 43b508: 8b 42 20 mov 0x20(%rdx),%eax 0.00 : 43b50b: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 43b50e: 0f 84 9a 03 00 00 je 43b8ae 0.00 : 43b514: 3b 05 26 96 21 00 cmp 0x219626(%rip),%eax # 654b40 0.00 : 43b51a: 0f 84 8e 03 00 00 je 43b8ae 0.00 : 43b520: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 43b525: e8 86 ab ff ff callq 4360b0 0.00 : 43b52a: 49 89 c4 mov %rax,%r12 0.00 : 43b52d: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 43b532: 48 8b 38 mov (%rax),%rdi 0.00 : 43b535: e8 b6 b4 ff ff callq 4369f0 0.00 : 43b53a: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43b53f: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 43b544: 48 89 c3 mov %rax,%rbx 0.00 : 43b547: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 43b54c: e8 ff ab ff ff callq 436150 0.00 : 43b551: 49 8b 4c 24 10 mov 0x10(%r12),%rcx 0.00 : 43b556: 85 c0 test %eax,%eax 0.00 : 43b558: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 43b55d: 41 0f 95 c0 setne %r8b 0.00 : 43b561: 48 89 df mov %rbx,%rdi 0.00 : 43b564: 31 d2 xor %edx,%edx 0.00 : 43b566: 41 83 e0 01 and $0x1,%r8d 0.00 : 43b56a: e8 a1 ad ff ff callq 436310 0.00 : 43b56f: f7 d0 not %eax 0.00 : 43b571: c1 e8 1f shr $0x1f,%eax 0.00 : 43b574: 4c 39 64 24 28 cmp %r12,0x28(%rsp) 0.00 : 43b579: 89 44 24 24 mov %eax,0x24(%rsp) 0.00 : 43b57d: 74 10 je 43b58f 0.00 : 43b57f: 41 f6 44 24 3c 02 testb $0x2,0x3c(%r12) 0.00 : 43b585: 74 08 je 43b58f 0.00 : 43b587: 4c 89 e7 mov %r12,%rdi 0.00 : 43b58a: e8 d1 91 ff ff callq 434760 0.00 : 43b58f: 8b 7c 24 24 mov 0x24(%rsp),%edi 0.00 : 43b593: 85 ff test %edi,%edi 0.00 : 43b595: 0f 85 4c 01 00 00 jne 43b6e7 0.00 : 43b59b: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 0.00 : 43b5a0: 4d 8b 41 08 mov 0x8(%r9),%r8 0.00 : 43b5a4: 4d 85 c0 test %r8,%r8 0.00 : 43b5a7: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 43b5ac: 0f 85 09 ff ff ff jne 43b4bb 0.00 : 43b5b2: 44 8b 54 24 24 mov 0x24(%rsp),%r10d 0.00 : 43b5b7: 45 85 d2 test %r10d,%r10d 0.00 : 43b5ba: 0f 94 c3 sete %bl 0.00 : 43b5bd: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 43b5c2: f6 41 3c 02 testb $0x2,0x3c(%rcx) 0.00 : 43b5c6: 74 08 je 43b5d0 0.00 : 43b5c8: 48 89 cf mov %rcx,%rdi 0.00 : 43b5cb: e8 90 91 ff ff callq 434760 0.00 : 43b5d0: 48 83 7c 24 10 00 cmpq $0x0,0x10(%rsp) 0.00 : 43b5d6: 0f 84 f2 f8 ff ff je 43aece 0.00 : 43b5dc: 84 db test %bl,%bl 0.00 : 43b5de: 0f 84 ea f8 ff ff je 43aece 0.00 : 43b5e4: 4c 8b 5c 24 10 mov 0x10(%rsp),%r11 0.00 : 43b5e9: 4c 89 5c 24 40 mov %r11,0x40(%rsp) 0.00 : 43b5ee: 4c 8b 6c 24 40 mov 0x40(%rsp),%r13 0.00 : 43b5f3: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43b5f8: 4d 8b 65 00 mov 0x0(%r13),%r12 0.00 : 43b5fc: 4c 89 64 24 38 mov %r12,0x38(%rsp) 0.00 : 43b601: e8 ea b4 fc ff callq 406af0 <_setjmp@plt> 0.00 : 43b606: 83 f8 01 cmp $0x1,%eax 0.00 : 43b609: 0f 84 b0 00 00 00 je 43b6bf 0.00 : 43b60f: 83 f8 02 cmp $0x2,%eax 0.00 : 43b612: 0f 84 b6 f8 ff ff je 43aece 0.00 : 43b618: 85 c0 test %eax,%eax 0.00 : 43b61a: 75 7a jne 43b696 0.00 : 43b61c: 48 8b 5c 24 38 mov 0x38(%rsp),%rbx 0.00 : 43b621: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 43b625: e8 86 ef ff ff callq 43a5b0 0.00 : 43b62a: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : 43b62f: 4c 8b 72 08 mov 0x8(%rdx),%r14 0.00 : 43b633: 4d 85 f6 test %r14,%r14 0.00 : 43b636: 4c 89 74 24 40 mov %r14,0x40(%rsp) 0.00 : 43b63b: 75 b1 jne 43b5ee 0.00 : 43b63d: e9 8c f8 ff ff jmpq 43aece 0.00 : 43b642: 48 89 d7 mov %rdx,%rdi 0.00 : 43b645: e8 66 aa ff ff callq 4360b0 0.00 : 43b64a: 49 89 c4 mov %rax,%r12 0.00 : 43b64d: 0f 1f 00 nopl (%rax) 0.00 : 43b650: e9 d8 fe ff ff jmpq 43b52d 0.00 : 43b655: 48 89 fe mov %rdi,%rsi 0.00 : 43b658: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 43b65d: e8 fe b8 ff ff callq 436f60 0.00 : 43b662: 85 c0 test %eax,%eax 0.00 : 43b664: 40 0f 94 c6 sete %sil 0.00 : 43b668: 40 0f b6 ce movzbl %sil,%ecx 0.00 : 43b66c: 89 4c 24 24 mov %ecx,0x24(%rsp) 0.00 : 43b670: e9 1a ff ff ff jmpq 43b58f 0.00 : 43b675: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 43b67a: f6 41 3d 08 testb $0x8,0x3d(%rcx) 0.00 : 43b67e: 0f 84 03 fe ff ff je 43b487 0.00 : 43b684: 48 89 cf mov %rcx,%rdi 0.00 : 43b687: e8 24 aa ff ff callq 4360b0 0.00 : 43b68c: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 43b691: e9 f1 fd ff ff jmpq 43b487 0.00 : 43b696: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43b69b: be 8d 02 00 00 mov $0x28d,%esi 0.00 : 43b6a0: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43b6a5: 31 c0 xor %eax,%eax 0.00 : 43b6a7: e8 1e 5e fd ff callq 4114ca 0.00 : 43b6ac: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 43b6b1: f6 41 3c 02 testb $0x2,0x3c(%rcx) 0.00 : 43b6b5: 74 08 je 43b6bf 0.00 : 43b6b7: 48 89 cf mov %rcx,%rdi 0.00 : 43b6ba: e8 a1 90 ff ff callq 434760 0.00 : 43b6bf: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43b6c4: 48 8d 74 24 50 lea 0x50(%rsp),%rsi 0.00 : 43b6c9: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43b6ce: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43b6d1: be 01 00 00 00 mov $0x1,%esi 0.00 : 43b6d6: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43b6db: 83 2d 26 4f 21 00 01 subl $0x1,0x214f26(%rip) # 650608 0.00 : 43b6e2: e8 69 b3 fc ff callq 406a50 <__longjmp_chk@plt> 0.00 : 43b6e7: c7 44 24 24 01 00 00 movl $0x1,0x24(%rsp) 0.00 : 43b6ee: 00 0.00 : 43b6ef: bf 60 27 65 00 mov $0x652760,%edi 0.00 : 43b6f4: e8 f7 b3 fc ff callq 406af0 <_setjmp@plt> 0.00 : 43b6f9: 83 f8 01 cmp $0x1,%eax 0.00 : 43b6fc: 74 ae je 43b6ac 0.00 : 43b6fe: 83 f8 02 cmp $0x2,%eax 0.00 : 43b701: 0f 84 b4 f7 ff ff je 43aebb 0.00 : 43b707: 85 c0 test %eax,%eax 0.00 : 43b709: 75 13 jne 43b71e 0.00 : 43b70b: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp 0.00 : 43b710: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 43b714: e8 97 ee ff ff callq 43a5b0 0.00 : 43b719: e9 7d fe ff ff jmpq 43b59b 0.00 : 43b71e: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43b723: be 6f 02 00 00 mov $0x26f,%esi 0.00 : 43b728: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43b72d: 31 c0 xor %eax,%eax 0.00 : 43b72f: e8 96 5d fd ff callq 4114ca 0.00 : 43b734: ff d0 callq *%rax 0.00 : 43b736: e9 85 f6 ff ff jmpq 43adc0 0.00 : 43b73b: 48 8b 6c 24 48 mov 0x48(%rsp),%rbp 0.00 : 43b740: 4c 8b 35 99 92 21 00 mov 0x219299(%rip),%r14 # 6549e0 0.00 : 43b747: 4c 8b 4d 08 mov 0x8(%rbp),%r9 0.00 : 43b74b: 4d 8b 61 08 mov 0x8(%r9),%r12 0.00 : 43b74f: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 43b753: 4c 39 33 cmp %r14,(%rbx) 0.00 : 43b756: 0f 84 af f5 ff ff je 43ad0b 0.00 : 43b75c: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 43b761: 4c 8b 59 08 mov 0x8(%rcx),%r11 0.00 : 43b765: 4d 8b 53 08 mov 0x8(%r11),%r10 0.00 : 43b769: 49 8b 02 mov (%r10),%rax 0.00 : 43b76c: e9 b9 f5 ff ff jmpq 43ad2a 0.00 : 43b771: 48 8b 3d a0 4e 21 00 mov 0x214ea0(%rip),%rdi # 650618 0.00 : 43b778: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : 43b77c: 48 89 15 5d 4e 21 00 mov %rdx,0x214e5d(%rip) # 6505e0 0.00 : 43b783: 48 85 ff test %rdi,%rdi 0.00 : 43b786: 0f 84 a9 00 00 00 je 43b835 0.00 : 43b78c: 48 8d 34 82 lea (%rdx,%rax,4),%rsi 0.00 : 43b790: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 43b794: e8 87 ba fc ff callq 407220 0.00 : 43b799: 48 85 c0 test %rax,%rax 0.00 : 43b79c: 48 89 05 75 4e 21 00 mov %rax,0x214e75(%rip) # 650618 0.00 : 43b7a3: 0f 85 fd f4 ff ff jne 43aca6 0.00 : 43b7a9: be 9f 06 00 00 mov $0x69f,%esi 0.00 : 43b7ae: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b7b3: e8 90 5b fd ff callq 411348 0.00 : 43b7b8: e8 33 b8 fc ff callq 406ff0 <__errno_location@plt> 0.00 : 43b7bd: 8b 38 mov (%rax),%edi 0.00 : 43b7bf: e8 fc b6 fc ff callq 406ec0 0.00 : 43b7c4: 48 8b 2d 15 4e 21 00 mov 0x214e15(%rip),%rbp # 6505e0 0.00 : 43b7cb: 49 89 c4 mov %rax,%r12 0.00 : 43b7ce: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b7d3: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 43b7d8: 31 ff xor %edi,%edi 0.00 : 43b7da: 4c 8d 4c 6d 00 lea 0x0(%rbp,%rbp,2),%r9 0.00 : 43b7df: 4e 8d 34 cd 00 00 00 lea 0x0(,%r9,8),%r14 0.00 : 43b7e6: 00 0.00 : 43b7e7: e8 34 b8 fc ff callq 407020 0.00 : 43b7ec: 4d 89 e0 mov %r12,%r8 0.00 : 43b7ef: 48 89 c7 mov %rax,%rdi 0.00 : 43b7f2: 4c 89 f1 mov %r14,%rcx 0.00 : 43b7f5: ba 42 67 44 00 mov $0x446742,%edx 0.00 : 43b7fa: be 4d 67 44 00 mov $0x44674d,%esi 0.00 : 43b7ff: 31 c0 xor %eax,%eax 0.00 : 43b801: e8 c4 5c fd ff callq 4114ca 0.00 : 43b806: bf 60 00 00 00 mov $0x60,%edi 0.00 : 43b80b: 48 c7 05 ca 4d 21 00 movq $0x4,0x214dca(%rip) # 6505e0 0.00 : 43b812: 04 00 00 00 0.00 : 43b816: e8 85 b3 fc ff callq 406ba0 0.00 : 43b81b: 48 85 c0 test %rax,%rax 0.00 : 43b81e: 48 89 05 f3 4d 21 00 mov %rax,0x214df3(%rip) # 650618 0.00 : 43b825: be 9a 06 00 00 mov $0x69a,%esi 0.00 : 43b82a: 0f 85 76 f4 ff ff jne 43aca6 0.00 : 43b830: e9 79 ff ff ff jmpq 43b7ae 0.00 : 43b835: 48 8d 3c 82 lea (%rdx,%rax,4),%rdi 0.00 : 43b839: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 43b83d: e8 5e b3 fc ff callq 406ba0 0.00 : 43b842: e9 52 ff ff ff jmpq 43b799 0.00 : 43b847: 4c 8b 44 24 28 mov 0x28(%rsp),%r8 0.00 : 43b84c: 49 8b 38 mov (%r8),%rdi 0.00 : 43b84f: 48 3b 3d 8a 91 21 00 cmp 0x21918a(%rip),%rdi # 6549e0 0.00 : 43b856: 0f 84 1a fc ff ff je 43b476 0.00 : 43b85c: 48 89 7c 24 28 mov %rdi,0x28(%rsp) 0.00 : 43b861: e9 21 fc ff ff jmpq 43b487 0.00 : 43b866: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43b86b: be 3d 02 00 00 mov $0x23d,%esi 0.00 : 43b870: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43b875: e8 50 5c fd ff callq 4114ca 0.00 : 43b87a: be b8 03 00 00 mov $0x3b8,%esi 0.00 : 43b87f: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b884: e8 bf 5a fd ff callq 411348 0.00 : 43b889: 31 ff xor %edi,%edi 0.00 : 43b88b: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b890: be 5a 67 44 00 mov $0x44675a,%esi 0.00 : 43b895: 4c 8b 2d 34 1d 21 00 mov 0x211d34(%rip),%r13 # 64d5d0 0.00 : 43b89c: e8 7f b7 fc ff callq 407020 0.00 : 43b8a1: 48 89 c7 mov %rax,%rdi 0.00 : 43b8a4: 31 c0 xor %eax,%eax 0.00 : 43b8a6: 41 ff d5 callq *%r13 0.00 : 43b8a9: e9 47 f8 ff ff jmpq 43b0f5 0.00 : 43b8ae: 66 90 xchg %ax,%ax 0.00 : 43b8b0: e8 3b b1 ff ff callq 4369f0 0.00 : 43b8b5: 4c 8b 44 24 28 mov 0x28(%rsp),%r8 0.00 : 43b8ba: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi 0.00 : 43b8bf: 49 89 c4 mov %rax,%r12 0.00 : 43b8c2: 49 8b 50 10 mov 0x10(%r8),%rdx 0.00 : 43b8c6: 49 8b 70 08 mov 0x8(%r8),%rsi 0.00 : 43b8ca: e8 81 a8 ff ff callq 436150 0.00 : 43b8cf: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 43b8d4: 85 c0 test %eax,%eax 0.00 : 43b8d6: 4c 89 e7 mov %r12,%rdi 0.00 : 43b8d9: 41 0f 95 c0 setne %r8b 0.00 : 43b8dd: 41 83 e0 01 and $0x1,%r8d 0.00 : 43b8e1: 48 8b 4a 10 mov 0x10(%rdx),%rcx 0.00 : 43b8e5: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 43b8e9: 31 d2 xor %edx,%edx 0.00 : 43b8eb: e8 20 aa ff ff callq 436310 0.00 : 43b8f0: f7 d0 not %eax 0.00 : 43b8f2: c1 e8 1f shr $0x1f,%eax 0.00 : 43b8f5: 89 44 24 24 mov %eax,0x24(%rsp) 0.00 : 43b8f9: e9 91 fc ff ff jmpq 43b58f 0.00 : 43b8fe: 48 8b b4 24 18 01 00 mov 0x118(%rsp),%rsi 0.00 : 43b905: 00 0.00 : 43b906: b9 10 6f 43 00 mov $0x436f10,%ecx 0.00 : 43b90b: ba 08 00 00 00 mov $0x8,%edx 0.00 : 43b910: 4c 89 f7 mov %r14,%rdi 0.00 : 43b913: e8 e8 b6 fc ff callq 407000 0.00 : 43b918: e9 53 f3 ff ff jmpq 43ac70 0.00 : 43b91d: be ef 02 00 00 mov $0x2ef,%esi 0.00 : 43b922: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b927: e8 1c 5a fd ff callq 411348 0.00 : 43b92c: e8 bf b6 fc ff callq 406ff0 <__errno_location@plt> 0.00 : 43b931: 8b 38 mov (%rax),%edi 0.00 : 43b933: e8 88 b5 fc ff callq 406ec0 0.00 : 43b938: 48 8b ac 24 18 01 00 mov 0x118(%rsp),%rbp 0.00 : 43b93f: 00 0.00 : 43b940: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b945: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 43b94a: 31 ff xor %edi,%edi 0.00 : 43b94c: 49 89 c4 mov %rax,%r12 0.00 : 43b94f: e8 cc b6 fc ff callq 407020 0.00 : 43b954: 48 8d 0c ed 00 00 00 lea 0x0(,%rbp,8),%rcx 0.00 : 43b95b: 00 0.00 : 43b95c: 48 89 c7 mov %rax,%rdi 0.00 : 43b95f: 4d 89 e0 mov %r12,%r8 0.00 : 43b962: ba ac 69 44 00 mov $0x4469ac,%edx 0.00 : 43b967: be 2c c1 43 00 mov $0x43c12c,%esi 0.00 : 43b96c: 31 c0 xor %eax,%eax 0.00 : 43b96e: e8 57 5b fd ff callq 4114ca 0.00 : 43b973: c7 84 24 58 01 00 00 movl $0x1,0x158(%rsp) 0.00 : 43b97a: 01 00 00 00 0.00 : 43b97e: e9 b2 f4 ff ff jmpq 43ae35 0.00 : 43b983: 4c 8b ac 24 30 01 00 mov 0x130(%rsp),%r13 0.00 : 43b98a: 00 0.00 : 43b98b: 48 8b 84 24 18 01 00 mov 0x118(%rsp),%rax 0.00 : 43b992: 00 0.00 : 43b993: 49 39 45 10 cmp %rax,0x10(%r13) 0.00 : 43b997: 0f 84 c4 f4 ff ff je 43ae61 0.00 : 43b99d: be 22 03 00 00 mov $0x322,%esi 0.00 : 43b9a2: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43b9a7: e8 9c 59 fd ff callq 411348 0.00 : 43b9ac: 4c 8b 8c 24 30 01 00 mov 0x130(%rsp),%r9 0.00 : 43b9b3: 00 0.00 : 43b9b4: 4c 8b b4 24 18 01 00 mov 0x118(%rsp),%r14 0.00 : 43b9bb: 00 0.00 : 43b9bc: 48 8b bc 24 28 01 00 mov 0x128(%rsp),%rdi 0.00 : 43b9c3: 00 0.00 : 43b9c4: 4c 8b 25 05 1c 21 00 mov 0x211c05(%rip),%r12 # 64d5d0 0.00 : 43b9cb: 49 8b 69 10 mov 0x10(%r9),%rbp 0.00 : 43b9cf: e8 1d c5 fc ff callq 407ef1 0.00 : 43b9d4: 31 ff xor %edi,%edi 0.00 : 43b9d6: 48 89 c3 mov %rax,%rbx 0.00 : 43b9d9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43b9de: be 78 70 44 00 mov $0x447078,%esi 0.00 : 43b9e3: e8 38 b6 fc ff callq 407020 0.00 : 43b9e8: 48 89 e9 mov %rbp,%rcx 0.00 : 43b9eb: 48 89 c7 mov %rax,%rdi 0.00 : 43b9ee: 4c 89 f2 mov %r14,%rdx 0.00 : 43b9f1: 48 89 de mov %rbx,%rsi 0.00 : 43b9f4: 31 c0 xor %eax,%eax 0.00 : 43b9f6: 41 ff d4 callq *%r12 0.00 : 43b9f9: e9 63 f4 ff ff jmpq 43ae61 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000017400 : 42.86 : 17400: 41 57 push %r15 0.00 : 17432: 41 89 f7 41 56 41 add %al,-0x38b80000(%rax) 0.00 : 17438: 55 retq 0.00 : 17439: 41 (bad) 0.00 : 1743a: 54 (bad) 0.00 : 1743b: 49 (bad) 0.00 : 1743c: 89 fc 55 decl -0x73(%rax) 0.00 : 1743f: 53 scas %es:(%rdi),%eax 0.00 : 17440: 31 db cmp %al,(%rdx) 0.00 : 17442: 48 83 add %al,(%rax) 0.00 : 17444: ec 08 je 17467 14.29 : 17446: 48 8b 47 18 add $0x8,%rsp 0.00 : 1744a: 48 8b 80 mov %rbx,%rax 0.00 : 1744d: 38 pop %rbx 0.00 : 1744e: 03 pop %rbp 0.00 : 1744f: 00 00 pop %r12 14.29 : 17451: 66 83 pop %r13 0.00 : 17453: 78 78 pop %r14 0.00 : 17455: 00 79 pop %r15 0.00 : 17457: 1e retq 0.00 : 17458: 81 fe 00 40 00 00 74 nopl 0x0(%rax,%rax,1) 0.00 : 1745f: 30 0.00 : 17460: 81 fe 00 80 00 00 48 lea 0x240(%rdi),%rbp 0.00 : 17467: c7 c3 ea ff mov 0x0(%rbp),%rbx 28.57 : 1746b: ff ff 48 test %rbx,%rbx 0.00 : 1746e: 8d af je 17446 0.00 : 17470: 38 02 00 00 74 lea 0x20(%r12),%r13 0.00 : 17475: 21 48 83 mov %r13,%rdi 0.00 : 17478: c4 08 48 89 d8 callq 1747d 0.00 : 1747d: 5b 5d 41 5c mov 0x0(%rbp),%rbx 0.00 : 17481: 41 5d 41 5e cmp $0xffffffffffffffff,%rbx 0.00 : 17485: 41 5f je 1748f 0.00 : 17487: c3 0f 1f test %rbx,%rbx 0.00 : 1748a: 84 00 je 1748f 0.00 : 1748c: 00 00 00 lock incl (%rbx) 0.00 : 1748f: 00 48 8d af 40 02 incw 0x20(%r12) 0.00 : 17495: 00 00 48 8b cmp $0xffffffffffffffff,%rbx 0.00 : 17499: 5d 00 jne 17446 0.00 : 1749b: 48 85 db 74 d6 4d 8d cmp $0x4000,%r15d 0.00 : 174a2: 6c 24 20 4c 89 ef je 17558 0.00 : 174a8: e8 00 00 00 00 48 8b cmp $0x8000,%r15d 0.00 : 174af: 5d 00 je 174b8 0.00 : 174b1: 48 83 ud2 0.00 : 174b3: fb ff jmp 174b3 0.00 : 174b5: 74 08 48 nopl (%rax) 0.00 : 174b8: 85 db 74 03 f0 ff mov $0x2,%r13d 0.00 : 174be: 03 66 41 xor %r8d,%r8d 0.00 : 174c1: ff 44 xor %ecx,%ecx 0.00 : 174c3: 24 20 48 83 fb ff 75 mov $0x0,%rdx 0.00 : 174ca: ab 41 81 mov %r13d,%esi 0.00 : 174cd: ff 00 40 mov %r12,%rdi 0.00 : 174d0: 00 00 0f 84 b0 callq 174d5 0.00 : 174d5: 00 00 test %eax,%eax 0.00 : 174d7: 00 41 81 ff 00 80 jle 17568 0.00 : 174dd: 00 00 74 movslq %eax,%r14 0.00 : 174e0: 07 0f 0b eb fe mov $0x50,%esi 0.00 : 174e5: 0f 1f 00 41 bd 02 00 mov $0xfffffffffffffff4,%rbx 0.00 : 174ec: 00 00 45 mov %r14,%rdi 0.00 : 174ef: 31 c0 31 c9 48 callq 174f4 0.00 : 174f4: c7 c2 00 test %rax,%rax 0.00 : 174f7: 00 00 00 mov %rax,%rbp 0.00 : 174fa: 44 89 ee 4c 89 e7 je 17446 0.00 : 17500: e8 00 00 mov %r14,%r8 0.00 : 17503: 00 00 85 mov %rax,%rcx 0.00 : 17506: c0 0f 8e 8b 00 00 00 mov $0x0,%rdx 0.00 : 1750d: 4c 63 f0 mov %r13d,%esi 0.00 : 17510: be 50 00 mov %r12,%rdi 0.00 : 17513: 00 00 48 c7 c3 callq 17518 0.00 : 17518: f4 ff test %eax,%eax 0.00 : 1751a: ff ff jle 1756a 0.00 : 1751c: 4c 89 f7 movslq %eax,%rsi 0.00 : 1751f: e8 00 00 mov %rbp,%rdi 0.00 : 17522: 00 00 48 85 c0 callq 16ed0 0.00 : 17527: 48 89 c5 mov %rax,%rbx 0.00 : 1752a: 0f 84 46 mov %rbp,%rdi 0.00 : 1752d: ff ff ff 4d 89 callq 17532 0.00 : 17532: f0 48 89 c1 48 c7 c2 cmp $0xfffffffffffff000,%rbx 0.00 : 17539: 00 00 00 00 44 89 ja 17446 0.00 : 1753f: ee 4c 89 mov %rbx,%rdx 0.00 : 17542: e7 e8 00 mov %r15d,%esi 0.00 : 17545: 00 00 00 mov %r12,%rdi 0.00 : 17548: 85 c0 7e 4e 48 callq 17040 0.00 : 1754d: 63 f0 48 89 ef jmpq 17446 0.00 : 17552: e8 a9 f9 ff ff 48 nopw 0x0(%rax,%rax,1) 0.00 : 17558: 89 c3 48 89 ef e8 mov $0x3,%r13d 0.00 : 1755e: 00 00 00 00 48 jmpq 174be 0.00 : 17563: 81 fb 00 f0 ff nopl 0x0(%rax,%rax,1) 0.00 : 17568: ff 0f xor %ebp,%ebp 0.00 : 1756a: 87 07 ff cmp $0xffffffc3,%eax 0.00 : 1756d: ff ff 48 nopl (%rax) 0.00 : 17570: 89 da je 17580 0.00 : 17572: 44 89 fe cmp $0xffffffda,%eax 0.00 : 17575: 4c 89 je 17580 0.00 : 17577: e7 e8 f3 movslq %eax,%rbx 0.00 : 1757a: fa ff jmp 1752a 0.00 : 1757c: ff e9 f4 fe nopl 0x0(%rax) 0.00 : 17580: ff ff 66 mov %rbp,%rdi 0.00 : 17583: 0f 1f xor %ebx,%ebx 0.00 : 17585: 44 00 00 41 bd callq 1758a 0.00 : 1758a: 03 00 jmp 1753f : 1758c: 00 00 e9 5b nopl 0x0(%rax) : 17590: ff ff ff 0f sub $0x28,%rsp : 17594: 1f 44 00 00 31 mov %rbx,0x8(%rsp) : 17599: ed 83 f8 c3 0f mov %rbp,0x10(%rsp) : 1759e: 1f 00 74 0e 83 mov $0xffffffea,%ebx : 175a3: f8 da 74 09 48 mov %r12,0x18(%rsp) : 175a8: 63 d8 eb ae 0f mov %r13,0x20(%rsp) : 175ad: 1f 40 00 mov %rdx,%r12 : 175b0: 48 89 ef cmpb $0x0,(%rsi) : 175b3: 31 db e8 mov %rcx,%rbp : 175b6: 00 00 je 175d8 : 175b8: 00 00 mov %ebx,%eax : 175ba: eb b3 0f 1f 40 mov 0x10(%rsp),%rbp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469cc0 <__errno_location@plt>: 100.00 : 469cc0: ff 25 02 d8 6f 00 jmpq *0x6fd802(%rip) # b674c8 <_GLOBAL_OFFSET_TABLE_+0x4c8> 0.00 : 469cc6: 68 96 00 00 00 pushq $0x96 0.00 : 469ccb: e9 80 f6 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2347 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2355 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2412 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2550 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4060 : : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4060: 55 push %rbp 0.00 : 4d4061: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4064: 41 57 push %r15 0.00 : 4d4066: 41 56 push %r14 0.00 : 4d4068: 41 55 push %r13 : /* : * Within the loop, curridx is the cache block index of the page to : * consider writing. Begin at the buffer containing the next unwritten : * page, or last partially written page. : */ : curridx = XLogRecPtrToBufIdx(LogwrtResult.Write); 0.00 : 4d406a: 45 31 ed xor %r13d,%r13d : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d406d: 41 54 push %r12 0.00 : 4d406f: 53 push %rbx 0.00 : 4d4070: 48 83 ec 48 sub $0x48,%rsp 0.00 : 4d4074: 48 89 75 98 mov %rsi,-0x68(%rbp) 0.00 : 4d4078: 48 89 75 c0 mov %rsi,-0x40(%rbp) : Assert(CritSectionCount > 0); : : /* : * Update local LogwrtResult (caller probably did this already, but...) : */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d407c: 48 8b 35 15 51 6a 00 mov 0x6a5115(%rip),%rsi # b79198 : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4083: 48 89 7d a0 mov %rdi,-0x60(%rbp) 0.00 : 4d4087: 48 89 7d b8 mov %rdi,-0x48(%rbp) 0.00 : 4d408b: 88 55 97 mov %dl,-0x69(%rbp) : Assert(CritSectionCount > 0); : : /* : * Update local LogwrtResult (caller probably did this already, but...) : */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d408e: 48 8b 96 28 01 00 00 mov 0x128(%rsi),%rdx 0.00 : 4d4095: 48 89 15 14 51 6a 00 mov %rdx,0x6a5114(%rip) # b791b0 0.00 : 4d409c: 48 8b 86 30 01 00 00 mov 0x130(%rsi),%rax : /* : * Within the loop, curridx is the cache block index of the page to : * consider writing. Begin at the buffer containing the next unwritten : * page, or last partially written page. : */ : curridx = XLogRecPtrToBufIdx(LogwrtResult.Write); 0.00 : 4d40a3: 48 89 d1 mov %rdx,%rcx 0.00 : 4d40a6: 48 c1 ea 0d shr $0xd,%rdx : Assert(CritSectionCount > 0); : : /* : * Update local LogwrtResult (caller probably did this already, but...) : */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d40aa: 48 89 05 07 51 6a 00 mov %rax,0x6a5107(%rip) # b791b8 : /* : * Within the loop, curridx is the cache block index of the page to : * consider writing. Begin at the buffer containing the next unwritten : * page, or last partially written page. : */ : curridx = XLogRecPtrToBufIdx(LogwrtResult.Write); 0.00 : 4d40b1: 8b 86 50 01 00 00 mov 0x150(%rsi),%eax 0.00 : 4d40b7: c7 45 b0 00 00 00 00 movl $0x0,-0x50(%rbp) 0.00 : 4d40be: c7 45 b4 00 00 00 00 movl $0x0,-0x4c(%rbp) 0.00 : 4d40c5: 83 c0 01 add $0x1,%eax 0.00 : 4d40c8: 48 63 f8 movslq %eax,%rdi 0.00 : 4d40cb: 48 89 d0 mov %rdx,%rax 0.00 : 4d40ce: 31 d2 xor %edx,%edx 0.00 : 4d40d0: 48 f7 f7 div %rdi 0.00 : 4d40d3: 89 55 ac mov %edx,-0x54(%rbp) 0.00 : 4d40d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d40dd: 00 00 00 : : while (LogwrtResult.Write < WriteRqst.Write) 0.00 : 4d40e0: 48 3b 4d a0 cmp -0x60(%rbp),%rcx 0.00 : 4d40e4: 0f 83 ef 01 00 00 jae 4d42d9 : /* : * Make sure we're not ahead of the insert process. This could happen : * if we're passed a bogus WriteRqst.Write that is past the end of the : * last page that's been initialized by AdvanceXLInsertBuffer. : */ : XLogRecPtr EndPtr = XLogCtl->xlblocks[curridx]; 0.00 : 4d40ea: 48 63 55 ac movslq -0x54(%rbp),%rdx 0.00 : 4d40ee: 48 8b 86 48 01 00 00 mov 0x148(%rsi),%rax 0.00 : 4d40f5: 48 8b 1c d0 mov (%rax,%rdx,8),%rbx : : if (LogwrtResult.Write >= EndPtr) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2347 25.00 : 4d40f9: 48 39 cb cmp %rcx,%rbx 0.00 : 4d40fc: 0f 86 90 04 00 00 jbe 4d4592 : (uint32) LogwrtResult.Write, : (uint32) (EndPtr >> 32), (uint32) EndPtr); : : /* Advance LogwrtResult.Write to end of current buffer page */ : LogwrtResult.Write = EndPtr; : ispartialpage = WriteRqst.Write < LogwrtResult.Write; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2355 25.00 : 4d4102: 48 3b 5d a0 cmp -0x60(%rbp),%rbx : : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) 0.00 : 4d4106: 48 8d 43 ff lea -0x1(%rbx),%rax : (uint32) (LogwrtResult.Write >> 32), : (uint32) LogwrtResult.Write, : (uint32) (EndPtr >> 32), (uint32) EndPtr); : : /* Advance LogwrtResult.Write to end of current buffer page */ : LogwrtResult.Write = EndPtr; 0.00 : 4d410a: 48 89 1d 9f 50 6a 00 mov %rbx,0x6a509f(%rip) # b791b0 : ispartialpage = WriteRqst.Write < LogwrtResult.Write; 0.00 : 4d4111: 0f 97 45 ab seta -0x55(%rbp) : : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) 0.00 : 4d4115: 48 c1 e8 18 shr $0x18,%rax 0.00 : 4d4119: 48 3b 05 b0 50 6a 00 cmp 0x6a50b0(%rip),%rax # b791d0 0.00 : 4d4120: 74 49 je 4d416b : /* : * Switch to new logfile segment. We cannot have any pending : * pages here (since we dump what we have at segment end). : */ : Assert(npages == 0); : if (openLogFile >= 0) 0.00 : 4d4122: 44 8b 1d 2b 3d 69 00 mov 0x693d2b(%rip),%r11d # b67e54 0.00 : 4d4129: 45 85 db test %r11d,%r11d 0.00 : 4d412c: 78 05 js 4d4133 : XLogFileClose(); 0.00 : 4d412e: e8 bd a2 ff ff callq 4ce3f0 : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d4133: 48 8b 3d 76 50 6a 00 mov 0x6a5076(%rip),%rdi # b791b0 : : /* create/use new log file */ : use_existent = true; : openLogFile = XLogFileInit(openLogSegNo, &use_existent, true); 0.00 : 4d413a: 48 8d 75 d7 lea -0x29(%rbp),%rsi 0.00 : 4d413e: ba 01 00 00 00 mov $0x1,%edx : if (openLogFile >= 0) : XLogFileClose(); : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : : /* create/use new log file */ : use_existent = true; 0.00 : 4d4143: c6 45 d7 01 movb $0x1,-0x29(%rbp) : * pages here (since we dump what we have at segment end). : */ : Assert(npages == 0); : if (openLogFile >= 0) : XLogFileClose(); : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d4147: 48 83 ef 01 sub $0x1,%rdi 0.00 : 4d414b: 48 c1 ef 18 shr $0x18,%rdi 0.00 : 4d414f: 48 89 3d 7a 50 6a 00 mov %rdi,0x6a507a(%rip) # b791d0 : : /* create/use new log file */ : use_existent = true; : openLogFile = XLogFileInit(openLogSegNo, &use_existent, true); 0.00 : 4d4156: e8 e5 d5 ff ff callq 4d1740 : openLogOff = 0; 0.00 : 4d415b: c7 05 a7 50 6a 00 00 movl $0x0,0x6a50a7(%rip) # b7920c 0.00 : 4d4162: 00 00 00 : XLogFileClose(); : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : : /* create/use new log file */ : use_existent = true; : openLogFile = XLogFileInit(openLogSegNo, &use_existent, true); 0.00 : 4d4165: 89 05 e9 3c 69 00 mov %eax,0x693ce9(%rip) # b67e54 : openLogOff = 0; : } : : /* Make sure we have the current logfile open */ : if (openLogFile < 0) 0.00 : 4d416b: 44 8b 15 e2 3c 69 00 mov 0x693ce2(%rip),%r10d # b67e54 0.00 : 4d4172: 45 85 d2 test %r10d,%r10d 0.00 : 4d4175: 0f 88 b5 03 00 00 js 4d4530 : openLogFile = XLogFileOpen(openLogSegNo); : openLogOff = 0; : } : : /* Add current page to the set of pending pages-to-dump */ : if (npages == 0) 0.00 : 4d417b: 45 85 ed test %r13d,%r13d 0.00 : 4d417e: 0f 84 b4 02 00 00 je 4d4438 0.00 : 4d4184: 48 8b 15 25 50 6a 00 mov 0x6a5025(%rip),%rdx # b791b0 : { : /* first of group */ : startidx = curridx; : startoffset = (LogwrtResult.Write - XLOG_BLCKSZ) % XLogSegSize; : } : npages++; 0.00 : 4d418b: 41 83 c5 01 add $0x1,%r13d : * contiguous in memory), or if we are at the end of the logfile : * segment. : */ : last_iteration = WriteRqst.Write <= LogwrtResult.Write; : : finishing_seg = !ispartialpage && 0.00 : 4d418f: 45 31 ff xor %r15d,%r15d 0.00 : 4d4192: 80 7d ab 00 cmpb $0x0,-0x55(%rbp) 0.00 : 4d4196: 75 12 jne 4d41aa 0.00 : 4d4198: 44 89 e8 mov %r13d,%eax 0.00 : 4d419b: c1 e0 0d shl $0xd,%eax 0.00 : 4d419e: 03 45 b4 add -0x4c(%rbp),%eax 0.00 : 4d41a1: 3d ff ff ff 00 cmp $0xffffff,%eax 0.00 : 4d41a6: 41 0f 97 c7 seta %r15b : (startoffset + npages * XLOG_BLCKSZ) >= XLogSegSize; : : if (last_iteration || 0.00 : 4d41aa: 48 39 55 a0 cmp %rdx,-0x60(%rbp) 0.00 : 4d41ae: 76 1b jbe 4d41cb 0.00 : 4d41b0: 48 8b 05 e1 4f 6a 00 mov 0x6a4fe1(%rip),%rax # b79198 0.00 : 4d41b7: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 4d41ba: 39 90 50 01 00 00 cmp %edx,0x150(%rax) 0.00 : 4d41c0: 74 09 je 4d41cb 0.00 : 4d41c2: 45 84 ff test %r15b,%r15b 0.00 : 4d41c5: 0f 84 d0 00 00 00 je 4d429b : Size nbytes; : Size nleft; : int written; : : /* Need to seek in the file? */ : if (openLogOff != startoffset) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2412 25.00 : 4d41cb: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 4d41ce: 39 05 38 50 6a 00 cmp %eax,0x6a5038(%rip) # b7920c 0.00 : 4d41d4: 74 21 je 4d41f7 : { : if (lseek(openLogFile, (off_t) startoffset, SEEK_SET) < 0) 0.00 : 4d41d6: 8b 3d 78 3c 69 00 mov 0x693c78(%rip),%edi # b67e54 0.00 : 4d41dc: 31 d2 xor %edx,%edx 0.00 : 4d41de: 89 c6 mov %eax,%esi 0.00 : 4d41e0: e8 8b 59 f9 ff callq 469b70 0.00 : 4d41e5: 48 85 c0 test %rax,%rax 0.00 : 4d41e8: 0f 88 e6 03 00 00 js 4d45d4 : ereport(PANIC, : (errcode_for_file_access(), : errmsg("could not seek in log file %s to offset %u: %m", : XLogFileNameP(ThisTimeLineID, openLogSegNo), : startoffset))); : openLogOff = startoffset; 0.00 : 4d41ee: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 4d41f1: 89 15 15 50 6a 00 mov %edx,0x6a5015(%rip) # b7920c : } : : /* OK to write the page(s) */ : from = XLogCtl->pages + startidx * (Size) XLOG_BLCKSZ; 0.00 : 4d41f7: 4c 63 65 b0 movslq -0x50(%rbp),%r12 0.00 : 4d41fb: 48 8b 05 96 4f 6a 00 mov 0x6a4f96(%rip),%rax # b79198 : nbytes = npages * (Size) XLOG_BLCKSZ; 0.00 : 4d4202: 4d 63 f5 movslq %r13d,%r14 0.00 : 4d4205: 49 c1 e6 0d shl $0xd,%r14 : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4209: 4c 89 f3 mov %r14,%rbx : startoffset))); : openLogOff = startoffset; : } : : /* OK to write the page(s) */ : from = XLogCtl->pages + startidx * (Size) XLOG_BLCKSZ; 0.00 : 4d420c: 49 c1 e4 0d shl $0xd,%r12 0.00 : 4d4210: 4c 03 a0 40 01 00 00 add 0x140(%rax),%r12 : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4217: e8 a4 5a f9 ff callq 469cc0 <__errno_location@plt> 0.00 : 4d421c: 49 89 c5 mov %rax,%r13 0.00 : 4d421f: eb 14 jmp 4d4235 0.00 : 4d4221: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : errmsg("could not write to log file %s " : "at offset %u, length %zu: %m", : XLogFileNameP(ThisTimeLineID, openLogSegNo), : openLogOff, nbytes))); : } : nleft -= written; 0.00 : 4d4228: 48 98 cltq 0.00 : 4d422a: 48 29 c3 sub %rax,%rbx : from += written; 0.00 : 4d422d: 49 01 c4 add %rax,%r12 : } while (nleft > 0); 0.00 : 4d4230: 48 85 db test %rbx,%rbx 0.00 : 4d4233: 74 53 je 4d4288 : from = XLogCtl->pages + startidx * (Size) XLOG_BLCKSZ; : nbytes = npages * (Size) XLOG_BLCKSZ; : nleft = nbytes; : do : { : errno = 0; 0.00 : 4d4235: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 4d423c: 00 : written = write(openLogFile, from, nleft); 0.00 : 4d423d: 8b 3d 11 3c 69 00 mov 0x693c11(%rip),%edi # b67e54 0.00 : 4d4243: 48 89 da mov %rbx,%rdx 0.00 : 4d4246: 4c 89 e6 mov %r12,%rsi 0.00 : 4d4249: e8 42 5e f9 ff callq 46a090 : if (written <= 0) 0.00 : 4d424e: 85 c0 test %eax,%eax 0.00 : 4d4250: 7f d6 jg 4d4228 : { : if (errno == EINTR) 0.00 : 4d4252: 41 83 7d 00 04 cmpl $0x4,0x0(%r13) 0.00 : 4d4257: 74 d7 je 4d4230 : continue; : ereport(PANIC, 0.00 : 4d4259: 45 31 c0 xor %r8d,%r8d 0.00 : 4d425c: b9 3b d6 7b 00 mov $0x7bd63b,%ecx 0.00 : 4d4261: ba 88 09 00 00 mov $0x988,%edx 0.00 : 4d4266: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d426b: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d4270: e8 4b 68 2a 00 callq 77aac0 0.00 : 4d4275: 84 c0 test %al,%al 0.00 : 4d4277: 0f 85 b6 03 00 00 jne 4d4633 0.00 : 4d427d: e8 4e 52 f9 ff callq 4694d0 0.00 : 4d4282: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : nleft -= written; : from += written; : } while (nleft > 0); : : /* Update state for write */ : openLogOff += nbytes; 0.00 : 4d4288: 44 01 35 7d 4f 6a 00 add %r14d,0x6a4f7d(%rip) # b7920c : * segment is ready to copy to archival storage, and to update the : * timer for archive_timeout, and to signal for a checkpoint if : * too many logfile segments have been used since the last : * checkpoint. : */ : if (finishing_seg) 0.00 : 4d428f: 45 84 ff test %r15b,%r15b 0.00 : 4d4292: 0f 85 c8 01 00 00 jne 4d4460 : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) : { : (void) GetRedoRecPtr(); : if (XLogCheckpointNeeded(openLogSegNo)) : RequestCheckpoint(CHECKPOINT_CAUSE_XLOG); 0.00 : 4d4298: 45 31 ed xor %r13d,%r13d : } : } : } : : if (ispartialpage) 0.00 : 4d429b: 80 7d ab 00 cmpb $0x0,-0x55(%rbp) 0.00 : 4d429f: 0f 85 dd 02 00 00 jne 4d4582 : { : /* Only asked to write a partial page */ : LogwrtResult.Write = WriteRqst.Write; : break; : } : curridx = NextBufIdx(curridx); 0.00 : 4d42a5: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 4d42a8: 48 8b 35 e9 4e 6a 00 mov 0x6a4ee9(%rip),%rsi # b79198 0.00 : 4d42af: 8b 45 ac mov -0x54(%rbp),%eax 0.00 : 4d42b2: 83 c2 01 add $0x1,%edx 0.00 : 4d42b5: 39 86 50 01 00 00 cmp %eax,0x150(%rsi) 0.00 : 4d42bb: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4d42c0: 0f 45 c2 cmovne %edx,%eax : : /* If flexible, break out of loop as soon as we wrote something */ : if (flexible && npages == 0) 0.00 : 4d42c3: 80 7d 97 00 cmpb $0x0,-0x69(%rbp) : { : /* Only asked to write a partial page */ : LogwrtResult.Write = WriteRqst.Write; : break; : } : curridx = NextBufIdx(curridx); 0.00 : 4d42c7: 89 45 ac mov %eax,-0x54(%rbp) : : /* If flexible, break out of loop as soon as we wrote something */ : if (flexible && npages == 0) 0.00 : 4d42ca: 0f 84 58 01 00 00 je 4d4428 0.00 : 4d42d0: 45 85 ed test %r13d,%r13d 0.00 : 4d42d3: 0f 85 4f 01 00 00 jne 4d4428 : Assert(npages == 0); : : /* : * If asked to flush, do so : */ : if (LogwrtResult.Flush < WriteRqst.Flush && 0.00 : 4d42d9: 48 8b 15 d8 4e 6a 00 mov 0x6a4ed8(%rip),%rdx # b791b8 0.00 : 4d42e0: 48 3b 55 98 cmp -0x68(%rbp),%rdx 0.00 : 4d42e4: 0f 83 9e 00 00 00 jae 4d4388 0.00 : 4d42ea: 48 8b 05 bf 4e 6a 00 mov 0x6a4ebf(%rip),%rax # b791b0 0.00 : 4d42f1: 48 39 c2 cmp %rax,%rdx 0.00 : 4d42f4: 0f 83 8e 00 00 00 jae 4d4388 : /* : * Could get here without iterating above loop, in which case we might : * have no open file or the wrong one. However, we do not need to : * fsync more than one file. : */ : if (sync_method != SYNC_METHOD_OPEN && 0.00 : 4d42fa: 8b 15 4c 3b 69 00 mov 0x693b4c(%rip),%edx # b67e4c 0.00 : 4d4300: 83 fa 02 cmp $0x2,%edx 0.00 : 4d4303: 74 75 je 4d437a 0.00 : 4d4305: 83 fa 04 cmp $0x4,%edx 0.00 : 4d4308: 74 70 je 4d437a : sync_method != SYNC_METHOD_OPEN_DSYNC) : { : if (openLogFile >= 0 && 0.00 : 4d430a: 44 8b 05 43 3b 69 00 mov 0x693b43(%rip),%r8d # b67e54 0.00 : 4d4311: 45 85 c0 test %r8d,%r8d 0.00 : 4d4314: 78 27 js 4d433d 0.00 : 4d4316: 48 83 e8 01 sub $0x1,%rax 0.00 : 4d431a: 48 c1 e8 18 shr $0x18,%rax 0.00 : 4d431e: 48 3b 05 ab 4e 6a 00 cmp 0x6a4eab(%rip),%rax # b791d0 0.00 : 4d4325: 74 3a je 4d4361 : !XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : XLogFileClose(); 0.00 : 4d4327: e8 c4 a0 ff ff callq 4ce3f0 : if (openLogFile < 0) 0.00 : 4d432c: 8b 3d 22 3b 69 00 mov 0x693b22(%rip),%edi # b67e54 0.00 : 4d4332: 85 ff test %edi,%edi 0.00 : 4d4334: 79 2b jns 4d4361 0.00 : 4d4336: 48 8b 05 73 4e 6a 00 mov 0x6a4e73(%rip),%rax # b791b0 : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d433d: 48 8d 78 ff lea -0x1(%rax),%rdi 0.00 : 4d4341: 48 c1 ef 18 shr $0x18,%rdi 0.00 : 4d4345: 48 89 3d 84 4e 6a 00 mov %rdi,0x6a4e84(%rip) # b791d0 : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d434c: e8 8f b1 ff ff callq 4cf4e0 : openLogOff = 0; 0.00 : 4d4351: c7 05 b1 4e 6a 00 00 movl $0x0,0x6a4eb1(%rip) # b7920c 0.00 : 4d4358: 00 00 00 : !XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : XLogFileClose(); : if (openLogFile < 0) : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d435b: 89 05 f3 3a 69 00 mov %eax,0x693af3(%rip) # b67e54 : openLogOff = 0; : } : : issue_xlog_fsync(openLogFile, openLogSegNo); 0.00 : 4d4361: 48 8b 35 68 4e 6a 00 mov 0x6a4e68(%rip),%rsi # b791d0 0.00 : 4d4368: 8b 3d e6 3a 69 00 mov 0x693ae6(%rip),%edi # b67e54 0.00 : 4d436e: e8 0d 9e ff ff callq 4ce180 0.00 : 4d4373: 48 8b 05 36 4e 6a 00 mov 0x6a4e36(%rip),%rax # b791b0 : } : : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); 0.00 : 4d437a: c6 05 48 8a 6a 00 01 movb $0x1,0x6a8a48(%rip) # b7cdc9 : : LogwrtResult.Flush = LogwrtResult.Write; 0.00 : 4d4381: 48 89 05 30 4e 6a 00 mov %rax,0x6a4e30(%rip) # b791b8 : * We make sure that the shared 'request' values do not fall behind the : * 'result' values. This is not absolutely essential, but it saves some : * code in a couple of places. : */ : { : SpinLockAcquire(&XLogCtl->info_lck); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2550 25.00 : 4d4388: 48 8b 15 09 4e 6a 00 mov 0x6a4e09(%rip),%rdx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d438f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d4394: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d439b: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d439e: 84 c0 test %al,%al 0.00 : 4d43a0: 0f 85 ba 01 00 00 jne 4d4560 : XLogCtl->LogwrtResult = LogwrtResult; 0.00 : 4d43a6: 48 8b 05 eb 4d 6a 00 mov 0x6a4deb(%rip),%rax # b79198 0.00 : 4d43ad: 48 8b 15 fc 4d 6a 00 mov 0x6a4dfc(%rip),%rdx # b791b0 0.00 : 4d43b4: 48 89 90 28 01 00 00 mov %rdx,0x128(%rax) 0.00 : 4d43bb: 48 8b 15 f6 4d 6a 00 mov 0x6a4df6(%rip),%rdx # b791b8 0.00 : 4d43c2: 48 89 90 30 01 00 00 mov %rdx,0x130(%rax) : if (XLogCtl->LogwrtRqst.Write < LogwrtResult.Write) 0.00 : 4d43c9: 48 8b 35 c8 4d 6a 00 mov 0x6a4dc8(%rip),%rsi # b79198 0.00 : 4d43d0: 48 8b 05 d9 4d 6a 00 mov 0x6a4dd9(%rip),%rax # b791b0 0.00 : 4d43d7: 48 39 86 d8 00 00 00 cmp %rax,0xd8(%rsi) 0.00 : 4d43de: 73 0e jae 4d43ee : XLogCtl->LogwrtRqst.Write = LogwrtResult.Write; 0.00 : 4d43e0: 48 89 86 d8 00 00 00 mov %rax,0xd8(%rsi) 0.00 : 4d43e7: 48 8b 35 aa 4d 6a 00 mov 0x6a4daa(%rip),%rsi # b79198 : if (XLogCtl->LogwrtRqst.Flush < LogwrtResult.Flush) 0.00 : 4d43ee: 48 8b 05 c3 4d 6a 00 mov 0x6a4dc3(%rip),%rax # b791b8 0.00 : 4d43f5: 48 39 86 e0 00 00 00 cmp %rax,0xe0(%rsi) 0.00 : 4d43fc: 73 07 jae 4d4405 : XLogCtl->LogwrtRqst.Flush = LogwrtResult.Flush; 0.00 : 4d43fe: 48 89 86 e0 00 00 00 mov %rax,0xe0(%rsi) : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4405: 48 8b 05 8c 4d 6a 00 mov 0x6a4d8c(%rip),%rax # b79198 0.00 : 4d440c: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : } : } 0.00 : 4d4413: 48 83 c4 48 add $0x48,%rsp 0.00 : 4d4417: 5b pop %rbx 0.00 : 4d4418: 41 5c pop %r12 0.00 : 4d441a: 41 5d pop %r13 0.00 : 4d441c: 41 5e pop %r14 0.00 : 4d441e: 41 5f pop %r15 0.00 : 4d4420: c9 leaveq 0.00 : 4d4421: c3 retq 0.00 : 4d4422: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : curridx = NextBufIdx(curridx); : : /* If flexible, break out of loop as soon as we wrote something */ : if (flexible && npages == 0) : break; 0.00 : 4d4428: 48 8b 0d 81 4d 6a 00 mov 0x6a4d81(%rip),%rcx # b791b0 0.00 : 4d442f: e9 ac fc ff ff jmpq 4d40e0 0.00 : 4d4434: 0f 1f 40 00 nopl 0x0(%rax) : /* Add current page to the set of pending pages-to-dump */ : if (npages == 0) : { : /* first of group */ : startidx = curridx; : startoffset = (LogwrtResult.Write - XLOG_BLCKSZ) % XLogSegSize; 0.00 : 4d4438: 48 8b 15 71 4d 6a 00 mov 0x6a4d71(%rip),%rdx # b791b0 0.00 : 4d443f: 8d 82 00 e0 ff ff lea -0x2000(%rdx),%eax 0.00 : 4d4445: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : 4d444a: 89 45 b4 mov %eax,-0x4c(%rbp) 0.00 : 4d444d: 8b 45 ac mov -0x54(%rbp),%eax 0.00 : 4d4450: 89 45 b0 mov %eax,-0x50(%rbp) 0.00 : 4d4453: e9 33 fd ff ff jmpq 4d418b 0.00 : 4d4458: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4d445f: 00 : * too many logfile segments have been used since the last : * checkpoint. : */ : if (finishing_seg) : { : issue_xlog_fsync(openLogFile, openLogSegNo); 0.00 : 4d4460: 48 8b 35 69 4d 6a 00 mov 0x6a4d69(%rip),%rsi # b791d0 0.00 : 4d4467: 8b 3d e7 39 69 00 mov 0x6939e7(%rip),%edi # b67e54 0.00 : 4d446d: e8 0e 9d ff ff callq 4ce180 : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); : : LogwrtResult.Flush = LogwrtResult.Write; /* end of page */ : : if (XLogArchivingActive()) 0.00 : 4d4472: 80 3d cf 4c 6a 00 00 cmpb $0x0,0x6a4ccf(%rip) # b79148 : issue_xlog_fsync(openLogFile, openLogSegNo); : : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); : : LogwrtResult.Flush = LogwrtResult.Write; /* end of page */ 0.00 : 4d4479: 48 8b 05 30 4d 6a 00 mov 0x6a4d30(%rip),%rax # b791b0 : if (finishing_seg) : { : issue_xlog_fsync(openLogFile, openLogSegNo); : : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); 0.00 : 4d4480: c6 05 42 89 6a 00 01 movb $0x1,0x6a8942(%rip) # b7cdc9 : : LogwrtResult.Flush = LogwrtResult.Write; /* end of page */ 0.00 : 4d4487: 48 89 05 2a 4d 6a 00 mov %rax,0x6a4d2a(%rip) # b791b8 : : if (XLogArchivingActive()) 0.00 : 4d448e: 74 18 je 4d44a8 0.00 : 4d4490: 44 8b 0d c5 4c 6a 00 mov 0x6a4cc5(%rip),%r9d # b7915c 0.00 : 4d4497: 45 85 c9 test %r9d,%r9d 0.00 : 4d449a: 7e 0c jle 4d44a8 : XLogArchiveNotifySeg(openLogSegNo); 0.00 : 4d449c: 48 8b 3d 2d 4d 6a 00 mov 0x6a4d2d(%rip),%rdi # b791d0 0.00 : 4d44a3: e8 a8 75 00 00 callq 4dba50 : : XLogCtl->lastSegSwitchTime = (pg_time_t) time(NULL); 0.00 : 4d44a8: 48 8b 1d e9 4c 6a 00 mov 0x6a4ce9(%rip),%rbx # b79198 0.00 : 4d44af: 31 ff xor %edi,%edi 0.00 : 4d44b1: e8 ea 5c f9 ff callq 46a1a0 0.00 : 4d44b6: 48 89 83 20 01 00 00 mov %rax,0x120(%rbx) : * the last one. For speed, we first check using the local : * copy of RedoRecPtr, which might be out of date; if it looks : * like a checkpoint is needed, forcibly update RedoRecPtr and : * recheck. : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) 0.00 : 4d44bd: 80 3d f9 5b 6e 00 00 cmpb $0x0,0x6e5bf9(%rip) # bba0bd 0.00 : 4d44c4: 0f 84 ce fd ff ff je 4d4298 : { : XLogSegNo old_segno; : : XLByteToSeg(RedoRecPtr, old_segno); : : if (new_segno >= old_segno + (uint64) (CheckPointSegments - 1)) 0.00 : 4d44ca: 8b 05 70 39 69 00 mov 0x693970(%rip),%eax # b67e40 0.00 : 4d44d0: 48 8b 15 01 4f 6a 00 mov 0x6a4f01(%rip),%rdx # b793d8 0.00 : 4d44d7: 83 e8 01 sub $0x1,%eax 0.00 : 4d44da: 48 c1 ea 18 shr $0x18,%rdx 0.00 : 4d44de: 48 98 cltq 0.00 : 4d44e0: 48 01 d0 add %rdx,%rax 0.00 : 4d44e3: 48 39 05 e6 4c 6a 00 cmp %rax,0x6a4ce6(%rip) # b791d0 0.00 : 4d44ea: 0f 82 a8 fd ff ff jb 4d4298 : * like a checkpoint is needed, forcibly update RedoRecPtr and : * recheck. : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) : { : (void) GetRedoRecPtr(); 0.00 : 4d44f0: e8 2b 8f ff ff callq 4cd420 : { : XLogSegNo old_segno; : : XLByteToSeg(RedoRecPtr, old_segno); : : if (new_segno >= old_segno + (uint64) (CheckPointSegments - 1)) 0.00 : 4d44f5: 8b 05 45 39 69 00 mov 0x693945(%rip),%eax # b67e40 0.00 : 4d44fb: 48 8b 15 d6 4e 6a 00 mov 0x6a4ed6(%rip),%rdx # b793d8 0.00 : 4d4502: 83 e8 01 sub $0x1,%eax 0.00 : 4d4505: 48 c1 ea 18 shr $0x18,%rdx 0.00 : 4d4509: 48 98 cltq 0.00 : 4d450b: 48 01 d0 add %rdx,%rax 0.00 : 4d450e: 48 39 05 bb 4c 6a 00 cmp %rax,0x6a4cbb(%rip) # b791d0 0.00 : 4d4515: 0f 82 7d fd ff ff jb 4d4298 : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) : { : (void) GetRedoRecPtr(); : if (XLogCheckpointNeeded(openLogSegNo)) : RequestCheckpoint(CHECKPOINT_CAUSE_XLOG); 0.00 : 4d451b: bf 20 00 00 00 mov $0x20,%edi 0.00 : 4d4520: 45 31 ed xor %r13d,%r13d 0.00 : 4d4523: e8 68 9b 16 00 callq 63e090 0.00 : 4d4528: e9 6e fd ff ff jmpq 4d429b 0.00 : 4d452d: 0f 1f 00 nopl (%rax) : } : : /* Make sure we have the current logfile open */ : if (openLogFile < 0) : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d4530: 48 8b 3d 79 4c 6a 00 mov 0x6a4c79(%rip),%rdi # b791b0 0.00 : 4d4537: 48 83 ef 01 sub $0x1,%rdi 0.00 : 4d453b: 48 c1 ef 18 shr $0x18,%rdi 0.00 : 4d453f: 48 89 3d 8a 4c 6a 00 mov %rdi,0x6a4c8a(%rip) # b791d0 : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d4546: e8 95 af ff ff callq 4cf4e0 : openLogOff = 0; 0.00 : 4d454b: c7 05 b7 4c 6a 00 00 movl $0x0,0x6a4cb7(%rip) # b7920c 0.00 : 4d4552: 00 00 00 : : /* Make sure we have the current logfile open */ : if (openLogFile < 0) : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d4555: 89 05 f9 38 69 00 mov %eax,0x6938f9(%rip) # b67e54 0.00 : 4d455b: e9 1b fc ff ff jmpq 4d417b : * We make sure that the shared 'request' values do not fall behind the : * 'result' values. This is not absolutely essential, but it saves some : * code in a couple of places. : */ : { : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4560: 48 8b 3d 31 4c 6a 00 mov 0x6a4c31(%rip),%rdi # b79198 0.00 : 4d4567: ba f6 09 00 00 mov $0x9f6,%edx 0.00 : 4d456c: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4571: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4578: e8 c3 ba 1b 00 callq 690040 0.00 : 4d457d: e9 24 fe ff ff jmpq 4d43a6 : } : : if (ispartialpage) : { : /* Only asked to write a partial page */ : LogwrtResult.Write = WriteRqst.Write; 0.00 : 4d4582: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 4d4586: 48 89 05 23 4c 6a 00 mov %rax,0x6a4c23(%rip) # b791b0 : break; 0.00 : 4d458d: e9 47 fd ff ff jmpq 4d42d9 : * last page that's been initialized by AdvanceXLInsertBuffer. : */ : XLogRecPtr EndPtr = XLogCtl->xlblocks[curridx]; : : if (LogwrtResult.Write >= EndPtr) : elog(PANIC, "xlog write request %X/%X is past end of log %X/%X", 0.00 : 4d4592: ba 3b d6 7b 00 mov $0x7bd63b,%edx 0.00 : 4d4597: be 2f 09 00 00 mov $0x92f,%esi 0.00 : 4d459c: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d45a1: e8 7a 6e 2a 00 callq 77b420 0.00 : 4d45a6: 48 8b 0d 03 4c 6a 00 mov 0x6a4c03(%rip),%rcx # b791b0 0.00 : 4d45ad: 49 89 d8 mov %rbx,%r8 0.00 : 4d45b0: 41 89 d9 mov %ebx,%r9d 0.00 : 4d45b3: 49 c1 e8 20 shr $0x20,%r8 0.00 : 4d45b7: be f8 b6 7b 00 mov $0x7bb6f8,%esi 0.00 : 4d45bc: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d45c1: 31 c0 xor %eax,%eax 0.00 : 4d45c3: 48 89 ca mov %rcx,%rdx 0.00 : 4d45c6: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d45ca: e8 61 6c 2a 00 callq 77b230 0.00 : 4d45cf: e8 fc 4e f9 ff callq 4694d0 : : /* Need to seek in the file? */ : if (openLogOff != startoffset) : { : if (lseek(openLogFile, (off_t) startoffset, SEEK_SET) < 0) : ereport(PANIC, 0.00 : 4d45d4: 45 31 c0 xor %r8d,%r8d 0.00 : 4d45d7: b9 3b d6 7b 00 mov $0x7bd63b,%ecx 0.00 : 4d45dc: ba 73 09 00 00 mov $0x973,%edx 0.00 : 4d45e1: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d45e6: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d45eb: e8 d0 64 2a 00 callq 77aac0 0.00 : 4d45f0: 84 c0 test %al,%al 0.00 : 4d45f2: 0f 84 85 fc ff ff je 4d427d 0.00 : 4d45f8: 48 8b 35 d1 4b 6a 00 mov 0x6a4bd1(%rip),%rsi # b791d0 0.00 : 4d45ff: 8b 3d 5f 4b 6a 00 mov 0x6a4b5f(%rip),%edi # b79164 0.00 : 4d4605: e8 d6 99 ff ff callq 4cdfe0 0.00 : 4d460a: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 4d460d: 48 89 c6 mov %rax,%rsi 0.00 : 4d4610: bf 30 b7 7b 00 mov $0x7bb730,%edi 0.00 : 4d4615: 31 c0 xor %eax,%eax 0.00 : 4d4617: e8 84 82 2a 00 callq 77c8a0 : written = write(openLogFile, from, nleft); : if (written <= 0) : { : if (errno == EINTR) : continue; : ereport(PANIC, 0.00 : 4d461c: 89 c3 mov %eax,%ebx 0.00 : 4d461e: e8 cd 84 2a 00 callq 77caf0 0.00 : 4d4623: 89 de mov %ebx,%esi 0.00 : 4d4625: 89 c7 mov %eax,%edi 0.00 : 4d4627: 31 c0 xor %eax,%eax 0.00 : 4d4629: e8 b2 5f 2a 00 callq 77a5e0 0.00 : 4d462e: e9 4a fc ff ff jmpq 4d427d 0.00 : 4d4633: 8b 1d d3 4b 6a 00 mov 0x6a4bd3(%rip),%ebx # b7920c 0.00 : 4d4639: 48 8b 35 90 4b 6a 00 mov 0x6a4b90(%rip),%rsi # b791d0 0.00 : 4d4640: 8b 3d 1e 4b 6a 00 mov 0x6a4b1e(%rip),%edi # b79164 0.00 : 4d4646: e8 95 99 ff ff callq 4cdfe0 0.00 : 4d464b: 4c 89 f1 mov %r14,%rcx 0.00 : 4d464e: 48 89 c6 mov %rax,%rsi 0.00 : 4d4651: 89 da mov %ebx,%edx 0.00 : 4d4653: bf 60 b7 7b 00 mov $0x7bb760,%edi 0.00 : 4d4658: 31 c0 xor %eax,%eax 0.00 : 4d465a: e8 41 82 2a 00 callq 77c8a0 0.00 : 4d465f: eb bb jmp 4d461c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2717 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2735 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2878 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4b50 : : * NOTE: this differs from XLogWrite mainly in that the WALWriteLock is not : * already held, and we try to avoid acquiring it if possible. : */ : void : XLogFlush(XLogRecPtr record) : { 0.00 : 4d4b50: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2717 50.00 : 4d4b51: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4b54: 41 56 push %r14 0.00 : 4d4b56: 41 55 push %r13 0.00 : 4d4b58: 49 89 fd mov %rdi,%r13 0.00 : 4d4b5b: 41 54 push %r12 0.00 : 4d4b5d: 53 push %rbx 0.00 : 4d4b5e: 48 83 ec 10 sub $0x10,%rsp : * trying to flush the WAL, we should update minRecoveryPoint instead. We : * test XLogInsertAllowed(), not InRecovery, because we need checkpointer : * to act this way too, and because when it tries to write the : * end-of-recovery checkpoint, it should indeed flush. : */ : if (!XLogInsertAllowed()) 0.00 : 4d4b62: e8 a9 89 ff ff callq 4cd510 0.00 : 4d4b67: 84 c0 test %al,%al 0.00 : 4d4b69: 0f 84 c1 01 00 00 je 4d4d30 : UpdateMinRecoveryPoint(record, false); : return; : } : : /* Quick exit if already known flushed */ : if (record <= LogwrtResult.Flush) 0.00 : 4d4b6f: 4c 3b 2d 42 46 6a 00 cmp 0x6a4642(%rip),%r13 # b791b8 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2735 25.00 : 4d4b76: 0f 86 9d 01 00 00 jbe 4d4d19 : (uint32) (record >> 32), (uint32) record, : (uint32) (LogwrtResult.Write >> 32), (uint32) LogwrtResult.Write, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : #endif : : START_CRIT_SECTION(); 0.00 : 4d4b7c: 8b 05 1a 55 6e 00 mov 0x6e551a(%rip),%eax # bba09c 0.00 : 4d4b82: 4c 89 eb mov %r13,%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d4b85: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4d4b8b: 83 c0 01 add $0x1,%eax 0.00 : 4d4b8e: 89 05 08 55 6e 00 mov %eax,0x6e5508(%rip) # bba09c 0.00 : 4d4b94: eb 7a jmp 4d4c10 0.00 : 4d4b96: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d4b9d: 00 00 00 : { : XLogRecPtr insertpos; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : if (WriteRqstPtr < XLogCtl->LogwrtRqst.Write) 0.00 : 4d4ba0: 48 8b 05 f1 45 6a 00 mov 0x6a45f1(%rip),%rax # b79198 : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4ba7: 48 8b 90 28 01 00 00 mov 0x128(%rax),%rdx : { : XLogRecPtr insertpos; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : if (WriteRqstPtr < XLogCtl->LogwrtRqst.Write) 0.00 : 4d4bae: 48 8b 88 d8 00 00 00 mov 0xd8(%rax),%rcx : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4bb5: 48 89 15 f4 45 6a 00 mov %rdx,0x6a45f4(%rip) # b791b0 0.00 : 4d4bbc: 48 8b 80 30 01 00 00 mov 0x130(%rax),%rax 0.00 : 4d4bc3: 48 89 05 ee 45 6a 00 mov %rax,0x6a45ee(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4bca: 48 8b 05 c7 45 6a 00 mov 0x6a45c7(%rip),%rax # b79198 0.00 : 4d4bd1: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : : /* done already? */ : if (record <= LogwrtResult.Flush) 0.00 : 4d4bd8: 4c 3b 2d d9 45 6a 00 cmp 0x6a45d9(%rip),%r13 # b791b8 0.00 : 4d4bdf: 0f 86 fb 00 00 00 jbe 4d4ce0 : break; 0.00 : 4d4be5: 48 39 cb cmp %rcx,%rbx 0.00 : 4d4be8: 48 0f 42 d9 cmovb %rcx,%rbx : : /* : * Before actually performing the write, wait for all in-flight : * insertions to the pages we're about to write to finish. : */ : insertpos = WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d4bec: 48 89 df mov %rbx,%rdi 0.00 : 4d4bef: e8 1c f3 ff ff callq 4d3f10 : * until it's released, and recheck if we still need to do the flush : * or if the backend that held the lock did it for us already. This : * helps to maintain a good rate of group committing when the system : * is bottlenecked by the speed of fsyncing. : */ : if (!LWLockAcquireOrWait(WALWriteLock, LW_EXCLUSIVE)) 0.00 : 4d4bf4: 48 8b 3d 05 8e 6a 00 mov 0x6a8e05(%rip),%rdi # b7da00 0.00 : 4d4bfb: 31 f6 xor %esi,%esi : : /* : * Before actually performing the write, wait for all in-flight : * insertions to the pages we're about to write to finish. : */ : insertpos = WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d4bfd: 49 89 c4 mov %rax,%r12 : * until it's released, and recheck if we still need to do the flush : * or if the backend that held the lock did it for us already. This : * helps to maintain a good rate of group committing when the system : * is bottlenecked by the speed of fsyncing. : */ : if (!LWLockAcquireOrWait(WALWriteLock, LW_EXCLUSIVE)) 0.00 : 4d4c00: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d4c07: e8 64 ad 1b 00 callq 68f970 0.00 : 4d4c0c: 84 c0 test %al,%al 0.00 : 4d4c0e: 75 40 jne 4d4c50 : for (;;) : { : XLogRecPtr insertpos; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4c10: 48 8b 15 81 45 6a 00 mov 0x6a4581(%rip),%rdx # b79198 0.00 : 4d4c17: 44 89 f0 mov %r14d,%eax 0.00 : 4d4c1a: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d4c21: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d4c24: 84 c0 test %al,%al 0.00 : 4d4c26: 0f 84 74 ff ff ff je 4d4ba0 0.00 : 4d4c2c: 48 8b 3d 65 45 6a 00 mov 0x6a4565(%rip),%rdi # b79198 0.00 : 4d4c33: ba d0 0a 00 00 mov $0xad0,%edx 0.00 : 4d4c38: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4c3d: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4c44: e8 f7 b3 1b 00 callq 690040 0.00 : 4d4c49: e9 52 ff ff ff jmpq 4d4ba0 0.00 : 4d4c4e: 66 90 xchg %ax,%ax : */ : continue; : } : : /* Got the lock; recheck whether request is satisfied */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4c50: 48 8b 05 41 45 6a 00 mov 0x6a4541(%rip),%rax # b79198 0.00 : 4d4c57: 48 8b 90 28 01 00 00 mov 0x128(%rax),%rdx 0.00 : 4d4c5e: 48 89 15 4b 45 6a 00 mov %rdx,0x6a454b(%rip) # b791b0 0.00 : 4d4c65: 48 8b 80 30 01 00 00 mov 0x130(%rax),%rax : if (record <= LogwrtResult.Flush) 0.00 : 4d4c6c: 49 39 c5 cmp %rax,%r13 : */ : continue; : } : : /* Got the lock; recheck whether request is satisfied */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4c6f: 48 89 05 42 45 6a 00 mov %rax,0x6a4542(%rip) # b791b8 : if (record <= LogwrtResult.Flush) 0.00 : 4d4c76: 76 55 jbe 4d4ccd : * at the risk of increasing transaction latency. : * : * We do not sleep if enableFsync is not turned on, nor if there are : * fewer than CommitSiblings other backends with active transactions. : */ : if (CommitDelay > 0 && enableFsync && 0.00 : 4d4c78: 8b 05 e2 44 6a 00 mov 0x6a44e2(%rip),%eax # b79160 0.00 : 4d4c7e: 85 c0 test %eax,%eax 0.00 : 4d4c80: 7e 36 jle 4d4cb8 0.00 : 4d4c82: 80 3d 8b 3e 69 00 00 cmpb $0x0,0x693e8b(%rip) # b68b14 0.00 : 4d4c89: 74 2d je 4d4cb8 0.00 : 4d4c8b: 8b 3d bf 31 69 00 mov 0x6931bf(%rip),%edi # b67e50 0.00 : 4d4c91: e8 ea a8 1a 00 callq 67f580 0.00 : 4d4c96: 84 c0 test %al,%al 0.00 : 4d4c98: 74 1e je 4d4cb8 : MinimumActiveBackends(CommitSiblings)) : { : pg_usleep(CommitDelay); 0.00 : 4d4c9a: 48 63 3d bf 44 6a 00 movslq 0x6a44bf(%rip),%rdi # b79160 0.00 : 4d4ca1: e8 aa 7a 2d 00 callq 7ac750 : * the insertions up to insertpos have already finished, because : * that's what the earlier WaitXLogInsertionsToFinish() returned. : * We're only calling it again to allow insertpos to be moved : * further forward, not to actually wait for anyone. : */ : insertpos = WaitXLogInsertionsToFinish(insertpos); 0.00 : 4d4ca6: 4c 89 e7 mov %r12,%rdi 0.00 : 4d4ca9: e8 62 f2 ff ff callq 4d3f10 0.00 : 4d4cae: 49 89 c4 mov %rax,%r12 0.00 : 4d4cb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : : /* try to write/flush later additions to XLOG as well */ : WriteRqst.Write = insertpos; 0.00 : 4d4cb8: 4c 89 65 d0 mov %r12,-0x30(%rbp) : WriteRqst.Flush = insertpos; 0.00 : 4d4cbc: 4c 89 65 d8 mov %r12,-0x28(%rbp) : : XLogWrite(WriteRqst, false); 0.00 : 4d4cc0: 31 d2 xor %edx,%edx 0.00 : 4d4cc2: 4c 89 e7 mov %r12,%rdi 0.00 : 4d4cc5: 4c 89 e6 mov %r12,%rsi 0.00 : 4d4cc8: e8 93 f3 ff ff callq 4d4060 : : LWLockRelease(WALWriteLock); 0.00 : 4d4ccd: 48 8b 3d 2c 8d 6a 00 mov 0x6a8d2c(%rip),%rdi # b7da00 0.00 : 4d4cd4: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d4cdb: e8 c0 a6 1b 00 callq 68f3a0 : /* done */ : break; : } : : END_CRIT_SECTION(); 0.00 : 4d4ce0: 8b 05 b6 53 6e 00 mov 0x6e53b6(%rip),%eax # bba09c 0.00 : 4d4ce6: 83 e8 01 sub $0x1,%eax : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4ce9: 80 3d d9 80 6a 00 00 cmpb $0x0,0x6a80d9(%rip) # b7cdc9 : LWLockRelease(WALWriteLock); : /* done */ : break; : } : : END_CRIT_SECTION(); 0.00 : 4d4cf0: 89 05 a6 53 6e 00 mov %eax,0x6e53a6(%rip) # bba09c : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4cf6: 74 18 je 4d4d10 0.00 : 4d4cf8: 44 8b 35 c5 80 6a 00 mov 0x6a80c5(%rip),%r14d # b7cdc4 0.00 : 4d4cff: c6 05 c3 80 6a 00 00 movb $0x0,0x6a80c3(%rip) # b7cdc9 0.00 : 4d4d06: 45 85 f6 test %r14d,%r14d 0.00 : 4d4d09: 7e 05 jle 4d4d10 0.00 : 4d4d0b: e8 d0 bd 18 00 callq 660ae0 : * Note that for calls from xact.c, the ERROR will be promoted to PANIC : * since xact.c calls this routine inside a critical section. However, : * calls from bufmgr.c are not within critical sections and so we will not : * force a restart for a bad LSN on a data page. : */ : if (LogwrtResult.Flush < record) 0.00 : 4d4d10: 4c 3b 2d a1 44 6a 00 cmp 0x6a44a1(%rip),%r13 # b791b8 0.00 : 4d4d17: 77 2d ja 4d4d46 : elog(ERROR, : "xlog flush request %X/%X is not satisfied --- flushed only to %X/%X", : (uint32) (record >> 32), (uint32) record, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2878 25.00 : 4d4d19: 48 83 c4 10 add $0x10,%rsp 0.00 : 4d4d1d: 5b pop %rbx 0.00 : 4d4d1e: 41 5c pop %r12 0.00 : 4d4d20: 41 5d pop %r13 0.00 : 4d4d22: 41 5e pop %r14 0.00 : 4d4d24: c9 leaveq 0.00 : 4d4d25: c3 retq 0.00 : 4d4d26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d4d2d: 00 00 00 0.00 : 4d4d30: 48 83 c4 10 add $0x10,%rsp : * to act this way too, and because when it tries to write the : * end-of-recovery checkpoint, it should indeed flush. : */ : if (!XLogInsertAllowed()) : { : UpdateMinRecoveryPoint(record, false); 0.00 : 4d4d34: 4c 89 ef mov %r13,%rdi 0.00 : 4d4d37: 31 f6 xor %esi,%esi : if (LogwrtResult.Flush < record) : elog(ERROR, : "xlog flush request %X/%X is not satisfied --- flushed only to %X/%X", : (uint32) (record >> 32), (uint32) record, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : } 0.00 : 4d4d39: 5b pop %rbx 0.00 : 4d4d3a: 41 5c pop %r12 0.00 : 4d4d3c: 41 5d pop %r13 0.00 : 4d4d3e: 41 5e pop %r14 0.00 : 4d4d40: c9 leaveq : * to act this way too, and because when it tries to write the : * end-of-recovery checkpoint, it should indeed flush. : */ : if (!XLogInsertAllowed()) : { : UpdateMinRecoveryPoint(record, false); 0.00 : 4d4d41: e9 8a be ff ff jmpq 4d0bd0 : * since xact.c calls this routine inside a critical section. However, : * calls from bufmgr.c are not within critical sections and so we will not : * force a restart for a bad LSN on a data page. : */ : if (LogwrtResult.Flush < record) : elog(ERROR, 0.00 : 4d4d46: ba 45 d6 7b 00 mov $0x7bd645,%edx 0.00 : 4d4d4b: be 3d 0b 00 00 mov $0xb3d,%esi 0.00 : 4d4d50: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d4d55: e8 c6 66 2a 00 callq 77b420 0.00 : 4d4d5a: 4c 8b 05 57 44 6a 00 mov 0x6a4457(%rip),%r8 # b791b8 0.00 : 4d4d61: 4c 89 ea mov %r13,%rdx 0.00 : 4d4d64: 44 89 e9 mov %r13d,%ecx 0.00 : 4d4d67: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d4d6b: be a0 b7 7b 00 mov $0x7bb7a0,%esi 0.00 : 4d4d70: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d4d75: 31 c0 xor %eax,%eax 0.00 : 4d4d77: 45 89 c1 mov %r8d,%r9d 0.00 : 4d4d7a: 49 c1 e8 20 shr $0x20,%r8 0.00 : 4d4d7e: e8 ad 64 2a 00 callq 77b230 0.00 : 4d4d83: e8 48 47 f9 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:556 25.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:566 25.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:566 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b3fb0 : : * however the "system columns" of the result will not be meaningful. : * -------------------------------- : */ : HeapTuple : ExecCopySlotTuple(TupleTableSlot *slot) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:556 50.00 : 5b3fb0: 55 push %rbp 0.00 : 5b3fb1: 48 89 f9 mov %rdi,%rcx : Assert(!slot->tts_isempty); : : /* : * If we have a physical tuple (either format) then just copy it. : */ : if (TTS_HAS_PHYSICAL_TUPLE(slot)) 0.00 : 5b3fb4: 48 8b 7f 08 mov 0x8(%rdi),%rdi : * however the "system columns" of the result will not be meaningful. : * -------------------------------- : */ : HeapTuple : ExecCopySlotTuple(TupleTableSlot *slot) : { 0.00 : 5b3fb8: 48 89 e5 mov %rsp,%rbp : Assert(!slot->tts_isempty); : : /* : * If we have a physical tuple (either format) then just copy it. : */ : if (TTS_HAS_PHYSICAL_TUPLE(slot)) 0.00 : 5b3fbb: 48 85 ff test %rdi,%rdi 0.00 : 5b3fbe: 74 10 je 5b3fd0 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:566 25.00 : 5b3fc0: 48 8d 41 40 lea 0x40(%rcx),%rax 25.00 : 5b3fc4: 48 39 c7 cmp %rax,%rdi 0.00 : 5b3fc7: 74 07 je 5b3fd0 : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_tuple(slot->tts_tupleDescriptor, : slot->tts_values, : slot->tts_isnull); : } 0.00 : 5b3fc9: c9 leaveq : : /* : * If we have a physical tuple (either format) then just copy it. : */ : if (TTS_HAS_PHYSICAL_TUPLE(slot)) : return heap_copytuple(slot->tts_tuple); 0.00 : 5b3fca: e9 d1 ab eb ff jmpq 46eba0 0.00 : 5b3fcf: 90 nop : if (slot->tts_mintuple) 0.00 : 5b3fd0: 48 8b 79 38 mov 0x38(%rcx),%rdi 0.00 : 5b3fd4: 48 85 ff test %rdi,%rdi 0.00 : 5b3fd7: 74 07 je 5b3fe0 : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_tuple(slot->tts_tupleDescriptor, : slot->tts_values, : slot->tts_isnull); : } 0.00 : 5b3fd9: c9 leaveq : * If we have a physical tuple (either format) then just copy it. : */ : if (TTS_HAS_PHYSICAL_TUPLE(slot)) : return heap_copytuple(slot->tts_tuple); : if (slot->tts_mintuple) : return heap_tuple_from_minimal_tuple(slot->tts_mintuple); 0.00 : 5b3fda: e9 41 ac eb ff jmpq 46ec20 0.00 : 5b3fdf: 90 nop : : /* : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_tuple(slot->tts_tupleDescriptor, 0.00 : 5b3fe0: 48 8b 51 30 mov 0x30(%rcx),%rdx 0.00 : 5b3fe4: 48 8b 71 28 mov 0x28(%rcx),%rsi 0.00 : 5b3fe8: 48 8b 79 10 mov 0x10(%rcx),%rdi : slot->tts_values, : slot->tts_isnull); : } 0.00 : 5b3fec: c9 leaveq : return heap_tuple_from_minimal_tuple(slot->tts_mintuple); : : /* : * Otherwise we need to build a tuple from the Datum array. : */ : return heap_form_tuple(slot->tts_tupleDescriptor, 0.00 : 5b3fed: e9 6e c6 eb ff jmpq 470660 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:4635 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:5014 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000643b20 : : * The argc/argv parameters are valid only in EXEC_BACKEND case. : * ---------- : */ : NON_EXEC_STATIC void : PgstatCollectorMain(int argc, char *argv[]) : { 0.00 : 643b20: 55 push %rbp 0.00 : 643b21: 48 89 e5 mov %rsp,%rbp 0.00 : 643b24: 41 57 push %r15 0.00 : 643b26: 41 56 push %r14 0.00 : 643b28: 41 55 push %r13 0.00 : 643b2a: 41 54 push %r12 0.00 : 643b2c: 53 push %rbx 0.00 : 643b2d: 48 81 ec 18 08 00 00 sub $0x818,%rsp : int len; : PgStat_Msg msg; : int wr; : : IsUnderPostmaster = true; /* we are a postmaster subprocess now */ 0.00 : 643b34: c6 05 82 65 57 00 01 movb $0x1,0x576582(%rip) # bba0bd : : MyProcPid = getpid(); /* reset MyProcPid */ 0.00 : 643b3b: e8 10 5c e2 ff callq 469750 : : MyStartTime = time(NULL); /* record Start Time for logging */ 0.00 : 643b40: 31 ff xor %edi,%edi : PgStat_Msg msg; : int wr; : : IsUnderPostmaster = true; /* we are a postmaster subprocess now */ : : MyProcPid = getpid(); /* reset MyProcPid */ 0.00 : 643b42: 89 05 9c c1 57 00 mov %eax,0x57c19c(%rip) # bbfce4 : : MyStartTime = time(NULL); /* record Start Time for logging */ 0.00 : 643b48: e8 53 66 e2 ff callq 46a1a0 0.00 : 643b4d: 48 89 05 b4 c9 57 00 mov %rax,0x57c9b4(%rip) # bc0508 : * can signal any child processes too. (pgstat probably never has any : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) 0.00 : 643b54: e8 07 59 e2 ff callq 469460 0.00 : 643b59: 85 c0 test %eax,%eax 0.00 : 643b5b: 0f 88 56 0d 00 00 js 6448b7 : elog(FATAL, "setsid() failed: %m"); : #endif : : InitializeLatchSupport(); /* needed for latch waits */ 0.00 : 643b61: e8 fa 59 ff ff callq 639560 : : /* Initialize private latch for use by signal handlers */ : InitLatch(&pgStatLatch); 0.00 : 643b66: bf 58 bd b7 00 mov $0xb7bd58,%edi : */ : #ifdef WIN32 : pgwin32_noblock = 1; : #endif : : len = recv(pgStatSock, (char *) &msg, 0.00 : 643b6b: 4c 8d ad e0 fb ff ff lea -0x420(%rbp),%r13 : #endif : : InitializeLatchSupport(); /* needed for latch waits */ : : /* Initialize private latch for use by signal handlers */ : InitLatch(&pgStatLatch); 0.00 : 643b72: e8 79 54 ff ff callq 638ff0 : /* : * Ignore all signals usually bound to some action in the postmaster, : * except SIGHUP and SIGQUIT. Note we don't need a SIGUSR1 handler to : * support latch operations, because pgStatLatch is local not shared. : */ : pqsignal(SIGHUP, pgstat_sighup_handler); 0.00 : 643b77: be e0 49 64 00 mov $0x6449e0,%esi 0.00 : 643b7c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 643b81: e8 7a 8f 16 00 callq 7acb00 : pqsignal(SIGINT, SIG_IGN); 0.00 : 643b86: be 01 00 00 00 mov $0x1,%esi 0.00 : 643b8b: bf 02 00 00 00 mov $0x2,%edi 0.00 : 643b90: e8 6b 8f 16 00 callq 7acb00 : pqsignal(SIGTERM, SIG_IGN); 0.00 : 643b95: be 01 00 00 00 mov $0x1,%esi 0.00 : 643b9a: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 643b9f: e8 5c 8f 16 00 callq 7acb00 : pqsignal(SIGQUIT, pgstat_exit); 0.00 : 643ba4: be a0 49 64 00 mov $0x6449a0,%esi 0.00 : 643ba9: bf 03 00 00 00 mov $0x3,%edi 0.00 : 643bae: e8 4d 8f 16 00 callq 7acb00 : pqsignal(SIGALRM, SIG_IGN); 0.00 : 643bb3: be 01 00 00 00 mov $0x1,%esi 0.00 : 643bb8: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 643bbd: e8 3e 8f 16 00 callq 7acb00 : pqsignal(SIGPIPE, SIG_IGN); 0.00 : 643bc2: be 01 00 00 00 mov $0x1,%esi 0.00 : 643bc7: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 643bcc: e8 2f 8f 16 00 callq 7acb00 : pqsignal(SIGUSR1, SIG_IGN); 0.00 : 643bd1: be 01 00 00 00 mov $0x1,%esi 0.00 : 643bd6: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 643bdb: e8 20 8f 16 00 callq 7acb00 : pqsignal(SIGUSR2, SIG_IGN); 0.00 : 643be0: be 01 00 00 00 mov $0x1,%esi 0.00 : 643be5: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 643bea: e8 11 8f 16 00 callq 7acb00 : pqsignal(SIGCHLD, SIG_DFL); 0.00 : 643bef: 31 f6 xor %esi,%esi 0.00 : 643bf1: bf 11 00 00 00 mov $0x11,%edi 0.00 : 643bf6: e8 05 8f 16 00 callq 7acb00 : pqsignal(SIGTTIN, SIG_DFL); 0.00 : 643bfb: 31 f6 xor %esi,%esi 0.00 : 643bfd: bf 15 00 00 00 mov $0x15,%edi 0.00 : 643c02: e8 f9 8e 16 00 callq 7acb00 : pqsignal(SIGTTOU, SIG_DFL); 0.00 : 643c07: 31 f6 xor %esi,%esi 0.00 : 643c09: bf 16 00 00 00 mov $0x16,%edi 0.00 : 643c0e: e8 ed 8e 16 00 callq 7acb00 : pqsignal(SIGCONT, SIG_DFL); 0.00 : 643c13: 31 f6 xor %esi,%esi 0.00 : 643c15: bf 12 00 00 00 mov $0x12,%edi 0.00 : 643c1a: e8 e1 8e 16 00 callq 7acb00 : pqsignal(SIGWINCH, SIG_DFL); 0.00 : 643c1f: 31 f6 xor %esi,%esi 0.00 : 643c21: bf 1c 00 00 00 mov $0x1c,%edi 0.00 : 643c26: e8 d5 8e 16 00 callq 7acb00 : PG_SETMASK(&UnBlockSig); 0.00 : 643c2b: 31 d2 xor %edx,%edx 0.00 : 643c2d: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 643c32: bf 02 00 00 00 mov $0x2,%edi 0.00 : 643c37: e8 84 5e e2 ff callq 469ac0 : : /* : * Identify myself via ps : */ : init_ps_display("stats collector process", "", "", ""); 0.00 : 643c3c: b9 96 16 8e 00 mov $0x8e1696,%ecx 0.00 : 643c41: bf 7d f0 89 00 mov $0x89f07d,%edi 0.00 : 643c46: 48 89 ca mov %rcx,%rdx 0.00 : 643c49: 48 89 ce mov %rcx,%rsi 0.00 : 643c4c: e8 8f 20 15 00 callq 795ce0 : /* : * Read in an existing statistics stats file or initialize the stats to : * zero. : */ : pgStatRunningInCollector = true; : pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true); 0.00 : 643c51: ba 01 00 00 00 mov $0x1,%edx 0.00 : 643c56: be 01 00 00 00 mov $0x1,%esi 0.00 : 643c5b: 31 ff xor %edi,%edi : : /* : * Read in an existing statistics stats file or initialize the stats to : * zero. : */ : pgStatRunningInCollector = true; 0.00 : 643c5d: c6 05 24 80 53 00 01 movb $0x1,0x538024(%rip) # b7bc88 : pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true); 0.00 : 643c64: e8 97 d4 ff ff callq 641100 : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 643c69: 49 8d 55 09 lea 0x9(%r13),%rdx : /* : * Read in an existing statistics stats file or initialize the stats to : * zero. : */ : pgStatRunningInCollector = true; : pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true); 0.00 : 643c6d: 48 89 05 64 7f 53 00 mov %rax,0x537f64(%rip) # b7bbd8 : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 643c74: 49 8d 45 10 lea 0x10(%r13),%rax : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 643c78: 48 89 95 c8 f7 ff ff mov %rdx,-0x838(%rbp) : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 643c7f: 48 89 85 d0 f7 ff ff mov %rax,-0x830(%rbp) 0.00 : 643c86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 643c8d: 00 00 00 : * action. : */ : for (;;) : { : /* Clear any already-pending wakeups */ : ResetLatch(&pgStatLatch); 0.00 : 643c90: bf 58 bd b7 00 mov $0xb7bd58,%edi 0.00 : 643c95: e8 a6 53 ff ff callq 639040 : : /* : * Quit if we get SIGQUIT from the postmaster. : */ : if (need_exit) 0.00 : 643c9a: 0f b6 05 a7 80 53 00 movzbl 0x5380a7(%rip),%eax # b7bd48 0.00 : 643ca1: 84 c0 test %al,%al 0.00 : 643ca3: 74 40 je 643ce5 0.00 : 643ca5: e9 aa 00 00 00 jmpq 643d54 0.00 : 643caa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * ---------- : */ : static bool : pgstat_write_statsfile_needed(void) : { : if (!slist_is_empty(&last_statrequests)) 0.00 : 643cb0: 48 83 3d 98 80 53 00 cmpq $0x0,0x538098(%rip) # b7bd50 0.00 : 643cb7: 00 0.00 : 643cb8: 74 09 je 643cc3 : /* : * Write the stats file if a new request has arrived that is not : * satisfied by existing file. : */ : if (pgstat_write_statsfile_needed()) : pgstat_write_statsfiles(false, false); 0.00 : 643cba: 31 f6 xor %esi,%esi 0.00 : 643cbc: 31 ff xor %edi,%edi 0.00 : 643cbe: e8 1d fb ff ff callq 6437e0 : */ : #ifdef WIN32 : pgwin32_noblock = 1; : #endif : : len = recv(pgStatSock, (char *) &msg, 0.00 : 643cc3: 8b 3d 47 49 52 00 mov 0x524947(%rip),%edi # b68610 0.00 : 643cc9: 31 c9 xor %ecx,%ecx 0.00 : 643ccb: ba e8 03 00 00 mov $0x3e8,%edx 0.00 : 643cd0: 4c 89 ee mov %r13,%rsi 0.00 : 643cd3: e8 88 59 e2 ff callq 469660 : : #ifdef WIN32 : pgwin32_noblock = 0; : #endif : : if (len < 0) 0.00 : 643cd8: 85 c0 test %eax,%eax 0.00 : 643cda: 0f 88 90 00 00 00 js 643d70 : } : : /* : * We ignore messages that are smaller than our common header : */ : if (len < sizeof(PgStat_MsgHdr)) 0.00 : 643ce0: 83 f8 07 cmp $0x7,%eax 0.00 : 643ce3: 77 2b ja 643d10 : : /* : * Inner loop iterates as long as we keep getting messages, or until : * need_exit becomes set. : */ : while (!need_exit) 0.00 : 643ce5: 0f b6 05 5c 80 53 00 movzbl 0x53805c(%rip),%eax # b7bd48 0.00 : 643cec: 84 c0 test %al,%al 0.00 : 643cee: 75 40 jne 643d30 : { : /* : * Reload configuration if we got SIGHUP from the postmaster. : */ : if (got_SIGHUP) 0.00 : 643cf0: 0f b6 05 52 80 53 00 movzbl 0x538052(%rip),%eax # b7bd49 0.00 : 643cf7: 84 c0 test %al,%al 0.00 : 643cf9: 74 b5 je 643cb0 : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); 0.00 : 643cfb: bf 02 00 00 00 mov $0x2,%edi : /* : * Reload configuration if we got SIGHUP from the postmaster. : */ : if (got_SIGHUP) : { : got_SIGHUP = false; 0.00 : 643d00: c6 05 42 80 53 00 00 movb $0x0,0x538042(%rip) # b7bd49 : ProcessConfigFile(PGC_SIGHUP); 0.00 : 643d07: e8 f4 0a 15 00 callq 794800 0.00 : 643d0c: eb a2 jmp 643cb0 0.00 : 643d0e: 66 90 xchg %ax,%ax : continue; : : /* : * The received length must match the length in the header : */ : if (msg.msg_hdr.m_size != len) 0.00 : 643d10: 39 85 e4 fb ff ff cmp %eax,-0x41c(%rbp) 0.00 : 643d16: 75 cd jne 643ce5 : continue; : : /* : * O.K. - we accept this message. Process it. : */ : switch (msg.msg_hdr.m_type) 0.00 : 643d18: 83 bd e0 fb ff ff 11 cmpl $0x11,-0x420(%rbp) 0.00 : 643d1f: 77 c4 ja 643ce5 0.00 : 643d21: 8b 85 e0 fb ff ff mov -0x420(%rbp),%eax 0.00 : 643d27: ff 24 c5 80 f7 89 00 jmpq *0x89f780(,%rax,8) 0.00 : 643d2e: 66 90 xchg %ax,%ax : } : } /* end of inner message-processing loop */ : : /* Sleep until there's something to do */ : #ifndef WIN32 : wr = WaitLatchOrSocket(&pgStatLatch, 0.00 : 643d30: 8b 15 da 48 52 00 mov 0x5248da(%rip),%edx # b68610 0.00 : 643d36: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx 0.00 : 643d3d: be 13 00 00 00 mov $0x13,%esi 0.00 : 643d42: bf 58 bd b7 00 mov $0xb7bd58,%edi 0.00 : 643d47: e8 04 54 ff ff callq 639150 : : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (wr & WL_POSTMASTER_DEATH) 0.00 : 643d4c: a8 10 test $0x10,%al 0.00 : 643d4e: 0f 84 3c ff ff ff je 643c90 : } /* end of outer loop */ : : /* : * Save the final stats to reuse at next startup. : */ : pgstat_write_statsfiles(true, true); 0.00 : 643d54: bf 01 00 00 00 mov $0x1,%edi 0.00 : 643d59: be 01 00 00 00 mov $0x1,%esi 0.00 : 643d5e: e8 7d fa ff ff callq 6437e0 : : exit(0); 0.00 : 643d63: 31 ff xor %edi,%edi 0.00 : 643d65: e8 26 58 e2 ff callq 469590 0.00 : 643d6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : pgwin32_noblock = 0; : #endif : : if (len < 0) : { : if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) 0.00 : 643d70: e8 4b 5f e2 ff callq 469cc0 <__errno_location@plt> 0.00 : 643d75: 8b 00 mov (%rax),%eax 0.00 : 643d77: 83 f8 0b cmp $0xb,%eax 0.00 : 643d7a: 74 b4 je 643d30 0.00 : 643d7c: 83 f8 04 cmp $0x4,%eax 0.00 : 643d7f: 90 nop 0.00 : 643d80: 74 ae je 643d30 : break; /* out of inner loop */ : ereport(ERROR, 0.00 : 643d82: 45 31 c0 xor %r8d,%r8d 0.00 : 643d85: b9 60 f9 89 00 mov $0x89f960,%ecx 0.00 : 643d8a: ba d0 0c 00 00 mov $0xcd0,%edx 0.00 : 643d8f: be 88 ef 89 00 mov $0x89ef88,%esi 0.00 : 643d94: bf 14 00 00 00 mov $0x14,%edi 0.00 : 643d99: e8 22 6d 13 00 callq 77aac0 0.00 : 643d9e: 84 c0 test %al,%al 0.00 : 643da0: 0f 85 af 0a 00 00 jne 644855 : hash_destroy(dbentry->functions); : : if (hash_search(pgStatDBHash, : (void *) &dbid, : HASH_REMOVE, NULL) == NULL) : ereport(ERROR, 0.00 : 643da6: e8 25 57 e2 ff callq 4694d0 : static void : pgstat_recv_deadlock(PgStat_MsgDeadlock *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 643dab: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 643db1: be 01 00 00 00 mov $0x1,%esi 0.00 : 643db6: e8 55 d1 ff ff callq 640f10 : : dbentry->n_deadlocks++; 0.00 : 643dbb: 48 83 80 90 00 00 00 addq $0x1,0x90(%rax) 0.00 : 643dc2: 01 : pgstat_recv_recoveryconflict((PgStat_MsgRecoveryConflict *) &msg, len); : break; : : case PGSTAT_MTYPE_DEADLOCK: : pgstat_recv_deadlock((PgStat_MsgDeadlock *) &msg, len); : break; 0.00 : 643dc3: e9 1d ff ff ff jmpq 643ce5 : { : slist_iter iter; : DBWriteRequest *newreq; : PgStat_StatDBEntry *dbentry; : : elog(DEBUG2, "received inquiry for %d", msg->databaseid); 0.00 : 643dc8: ba 80 f9 89 00 mov $0x89f980,%edx 0.00 : 643dcd: be bf 11 00 00 mov $0x11bf,%esi 0.00 : 643dd2: bf 88 ef 89 00 mov $0x89ef88,%edi 0.00 : 643dd7: e8 44 76 13 00 callq 77b420 0.00 : 643ddc: 8b 95 f8 fb ff ff mov -0x408(%rbp),%edx 0.00 : 643de2: 31 c0 xor %eax,%eax 0.00 : 643de4: be 95 f0 89 00 mov $0x89f095,%esi 0.00 : 643de9: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 643dee: e8 3d 74 13 00 callq 77b230 : * Note that if a request is found, we return early and skip the below : * check for clock skew. This is okay, since the only way for a DB : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) 0.00 : 643df3: 48 8b 05 56 7f 53 00 mov 0x537f56(%rip),%rax # b7bd50 0.00 : 643dfa: 48 85 c0 test %rax,%rax 0.00 : 643dfd: 74 2e je 643e2d : { : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); : : if (req->databaseid != msg->databaseid) 0.00 : 643dff: 8b 8d f8 fb ff ff mov -0x408(%rbp),%ecx 0.00 : 643e05: 39 48 f0 cmp %ecx,-0x10(%rax) : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) : { : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); 0.00 : 643e08: 48 8d 50 f0 lea -0x10(%rax),%rdx : : if (req->databaseid != msg->databaseid) 0.00 : 643e0c: 75 17 jne 643e25 0.00 : 643e0e: e9 5f 09 00 00 jmpq 644772 0.00 : 643e13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 643e18: 39 48 f0 cmp %ecx,-0x10(%rax) : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) : { : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); 0.00 : 643e1b: 48 8d 50 f0 lea -0x10(%rax),%rdx : : if (req->databaseid != msg->databaseid) 0.00 : 643e1f: 0f 84 4d 09 00 00 je 644772 : * Note that if a request is found, we return early and skip the below : * check for clock skew. This is okay, since the only way for a DB : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) 0.00 : 643e25: 48 8b 00 mov (%rax),%rax 0.00 : 643e28: 48 85 c0 test %rax,%rax 0.00 : 643e2b: 75 eb jne 643e18 : } : : /* : * There's no request for this DB yet, so create one. : */ : newreq = palloc(sizeof(DBWriteRequest)); 0.00 : 643e2d: bf 18 00 00 00 mov $0x18,%edi 0.00 : 643e32: e8 19 4f 15 00 callq 798d50 0.00 : 643e37: 48 89 85 d8 f7 ff ff mov %rax,-0x828(%rbp) : : newreq->databaseid = msg->databaseid; 0.00 : 643e3e: 8b 85 f8 fb ff ff mov -0x408(%rbp),%eax : * the more likely explanation is just delayed message receipt. It is : * worth expending a GetCurrentTimestamp call to be sure, since a large : * retreat in the system clock reading could otherwise cause us to neglect : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); 0.00 : 643e44: 31 f6 xor %esi,%esi : /* : * There's no request for this DB yet, so create one. : */ : newreq = palloc(sizeof(DBWriteRequest)); : : newreq->databaseid = msg->databaseid; 0.00 : 643e46: 48 8b 95 d8 f7 ff ff mov -0x828(%rbp),%rdx 0.00 : 643e4d: 89 02 mov %eax,(%rdx) : newreq->request_time = msg->clock_time; 0.00 : 643e4f: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax 0.00 : 643e56: 48 89 42 08 mov %rax,0x8(%rdx) : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : slist_push_head(slist_head *head, slist_node *node) : { : node->next = head->head.next; 0.00 : 643e5a: 48 8b 05 ef 7e 53 00 mov 0x537eef(%rip),%rax # b7bd50 0.00 : 643e61: 48 89 42 10 mov %rax,0x10(%rdx) : * the more likely explanation is just delayed message receipt. It is : * worth expending a GetCurrentTimestamp call to be sure, since a large : * retreat in the system clock reading could otherwise cause us to neglect : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); 0.00 : 643e65: 8b bd f8 fb ff ff mov -0x408(%rbp),%edi : head->head.next = node; 0.00 : 643e6b: 48 89 d0 mov %rdx,%rax 0.00 : 643e6e: 48 83 c0 10 add $0x10,%rax 0.00 : 643e72: 48 89 05 d7 7e 53 00 mov %rax,0x537ed7(%rip) # b7bd50 0.00 : 643e79: e8 92 d0 ff ff callq 640f10 : if ((dbentry != NULL) && (msg->clock_time < dbentry->stats_timestamp)) 0.00 : 643e7e: 48 85 c0 test %rax,%rax : * the more likely explanation is just delayed message receipt. It is : * worth expending a GetCurrentTimestamp call to be sure, since a large : * retreat in the system clock reading could otherwise cause us to neglect : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); 0.00 : 643e81: 49 89 c6 mov %rax,%r14 : if ((dbentry != NULL) && (msg->clock_time < dbentry->stats_timestamp)) 0.00 : 643e84: 0f 84 5b fe ff ff je 643ce5 0.00 : 643e8a: 48 8b 80 b0 00 00 00 mov 0xb0(%rax),%rax 0.00 : 643e91: 48 39 85 e8 fb ff ff cmp %rax,-0x418(%rbp) 0.00 : 643e98: 0f 8d 47 fe ff ff jge 643ce5 : { : TimestampTz cur_ts = GetCurrentTimestamp(); 0.00 : 643e9e: e8 cd 24 10 00 callq 746370 : : if (cur_ts < dbentry->stats_timestamp) 0.00 : 643ea3: 49 8b be b0 00 00 00 mov 0xb0(%r14),%rdi : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); : if ((dbentry != NULL) && (msg->clock_time < dbentry->stats_timestamp)) : { : TimestampTz cur_ts = GetCurrentTimestamp(); 0.00 : 643eaa: 49 89 c7 mov %rax,%r15 : : if (cur_ts < dbentry->stats_timestamp) 0.00 : 643ead: 48 39 f8 cmp %rdi,%rax 0.00 : 643eb0: 0f 8d 2f fe ff ff jge 643ce5 : */ : char *writetime; : char *mytime; : : /* Copy because timestamptz_to_str returns a static buffer */ : writetime = pstrdup(timestamptz_to_str(dbentry->stats_timestamp)); 0.00 : 643eb6: e8 f5 23 10 00 callq 7462b0 0.00 : 643ebb: 48 89 c7 mov %rax,%rdi 0.00 : 643ebe: e8 8d 50 15 00 callq 798f50 : mytime = pstrdup(timestamptz_to_str(cur_ts)); 0.00 : 643ec3: 4c 89 ff mov %r15,%rdi : */ : char *writetime; : char *mytime; : : /* Copy because timestamptz_to_str returns a static buffer */ : writetime = pstrdup(timestamptz_to_str(dbentry->stats_timestamp)); 0.00 : 643ec6: 49 89 c4 mov %rax,%r12 : mytime = pstrdup(timestamptz_to_str(cur_ts)); 0.00 : 643ec9: e8 e2 23 10 00 callq 7462b0 0.00 : 643ece: 48 89 c7 mov %rax,%rdi 0.00 : 643ed1: e8 7a 50 15 00 callq 798f50 : elog(LOG, 0.00 : 643ed6: ba 80 f9 89 00 mov $0x89f980,%edx 0.00 : 643edb: be fa 11 00 00 mov $0x11fa,%esi 0.00 : 643ee0: bf 88 ef 89 00 mov $0x89ef88,%edi : char *writetime; : char *mytime; : : /* Copy because timestamptz_to_str returns a static buffer */ : writetime = pstrdup(timestamptz_to_str(dbentry->stats_timestamp)); : mytime = pstrdup(timestamptz_to_str(cur_ts)); 0.00 : 643ee5: 48 89 c3 mov %rax,%rbx : elog(LOG, 0.00 : 643ee8: e8 33 75 13 00 callq 77b420 0.00 : 643eed: 45 8b 06 mov (%r14),%r8d 0.00 : 643ef0: 4c 89 e2 mov %r12,%rdx 0.00 : 643ef3: 31 c0 xor %eax,%eax 0.00 : 643ef5: 48 89 d9 mov %rbx,%rcx 0.00 : 643ef8: be c0 f3 89 00 mov $0x89f3c0,%esi 0.00 : 643efd: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 643f02: e8 29 73 13 00 callq 77b230 : "stats_timestamp %s is later than collector's time %s for db %d", : writetime, mytime, dbentry->databaseid); : pfree(writetime); 0.00 : 643f07: 4c 89 e7 mov %r12,%rdi 0.00 : 643f0a: e8 71 4c 15 00 callq 798b80 : pfree(mytime); 0.00 : 643f0f: 48 89 df mov %rbx,%rdi 0.00 : 643f12: e8 69 4c 15 00 callq 798b80 : : newreq->request_time = cur_ts; 0.00 : 643f17: 48 8b 95 d8 f7 ff ff mov -0x828(%rbp),%rdx : dbentry->stats_timestamp = cur_ts - 1; 0.00 : 643f1e: 49 8d 47 ff lea -0x1(%r15),%rax : "stats_timestamp %s is later than collector's time %s for db %d", : writetime, mytime, dbentry->databaseid); : pfree(writetime); : pfree(mytime); : : newreq->request_time = cur_ts; 0.00 : 643f22: 4c 89 7a 08 mov %r15,0x8(%rdx) : dbentry->stats_timestamp = cur_ts - 1; 0.00 : 643f26: 49 89 86 b0 00 00 00 mov %rax,0xb0(%r14) 0.00 : 643f2d: e9 b3 fd ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : PgStat_StatTabEntry *tabentry; : int i; : bool found; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 643f32: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 643f38: be 01 00 00 00 mov $0x1,%esi 0.00 : 643f3d: e8 ce cf ff ff callq 640f10 0.00 : 643f42: 49 89 c4 mov %rax,%r12 : : /* : * Update database-wide stats. : */ : dbentry->n_xact_commit += (PgStat_Counter) (msg->m_xact_commit); 0.00 : 643f45: 48 63 85 f0 fb ff ff movslq -0x410(%rbp),%rax 0.00 : 643f4c: 49 01 44 24 08 add %rax,0x8(%r12) : dbentry->n_xact_rollback += (PgStat_Counter) (msg->m_xact_rollback); 0.00 : 643f51: 48 63 85 f4 fb ff ff movslq -0x40c(%rbp),%rax 0.00 : 643f58: 49 01 44 24 10 add %rax,0x10(%r12) : dbentry->n_block_read_time += msg->m_block_read_time; 0.00 : 643f5d: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 643f64: 49 01 84 24 98 00 00 add %rax,0x98(%r12) 0.00 : 643f6b: 00 : dbentry->n_block_write_time += msg->m_block_write_time; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:4635 50.00 : 643f6c: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 643f73: 49 01 84 24 a0 00 00 add %rax,0xa0(%r12) 0.00 : 643f7a: 00 : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 643f7b: 44 8b 9d ec fb ff ff mov -0x414(%rbp),%r11d 0.00 : 643f82: 45 85 db test %r11d,%r11d 0.00 : 643f85: 0f 8e 5a fd ff ff jle 643ce5 0.00 : 643f8b: 45 31 ff xor %r15d,%r15d 0.00 : 643f8e: e9 7d 01 00 00 jmpq 644110 : { : /* : * If it's a new table entry, initialize counters to the values we : * just got. : */ : tabentry->numscans = tabmsg->t_counts.t_numscans; 0.00 : 643f93: 48 8b 84 1d 10 fc ff mov -0x3f0(%rbp,%rbx,1),%rax 0.00 : 643f9a: ff 0.00 : 643f9b: 48 89 42 08 mov %rax,0x8(%rdx) : tabentry->tuples_returned = tabmsg->t_counts.t_tuples_returned; 0.00 : 643f9f: 48 8b 84 1d 18 fc ff mov -0x3e8(%rbp,%rbx,1),%rax 0.00 : 643fa6: ff 0.00 : 643fa7: 48 89 42 10 mov %rax,0x10(%rdx) : tabentry->tuples_fetched = tabmsg->t_counts.t_tuples_fetched; 0.00 : 643fab: 48 8b 84 1d 20 fc ff mov -0x3e0(%rbp,%rbx,1),%rax 0.00 : 643fb2: ff 0.00 : 643fb3: 48 89 42 18 mov %rax,0x18(%rdx) : tabentry->tuples_inserted = tabmsg->t_counts.t_tuples_inserted; 0.00 : 643fb7: 48 8b 84 1d 28 fc ff mov -0x3d8(%rbp,%rbx,1),%rax 0.00 : 643fbe: ff 0.00 : 643fbf: 48 89 42 20 mov %rax,0x20(%rdx) : tabentry->tuples_updated = tabmsg->t_counts.t_tuples_updated; 0.00 : 643fc3: 48 8b 84 1d 30 fc ff mov -0x3d0(%rbp,%rbx,1),%rax 0.00 : 643fca: ff 0.00 : 643fcb: 48 89 42 28 mov %rax,0x28(%rdx) : tabentry->tuples_deleted = tabmsg->t_counts.t_tuples_deleted; 0.00 : 643fcf: 48 8b 84 1d 38 fc ff mov -0x3c8(%rbp,%rbx,1),%rax 0.00 : 643fd6: ff 0.00 : 643fd7: 48 89 42 30 mov %rax,0x30(%rdx) : tabentry->tuples_hot_updated = tabmsg->t_counts.t_tuples_hot_updated; 0.00 : 643fdb: 48 8b 84 1d 40 fc ff mov -0x3c0(%rbp,%rbx,1),%rax 0.00 : 643fe2: ff 0.00 : 643fe3: 48 89 42 38 mov %rax,0x38(%rdx) : tabentry->n_live_tuples = tabmsg->t_counts.t_delta_live_tuples; 0.00 : 643fe7: 48 8b 84 1d 48 fc ff mov -0x3b8(%rbp,%rbx,1),%rax 0.00 : 643fee: ff 0.00 : 643fef: 48 89 42 40 mov %rax,0x40(%rdx) : tabentry->n_dead_tuples = tabmsg->t_counts.t_delta_dead_tuples; 0.00 : 643ff3: 48 8b 84 1d 50 fc ff mov -0x3b0(%rbp,%rbx,1),%rax 0.00 : 643ffa: ff 0.00 : 643ffb: 48 89 42 48 mov %rax,0x48(%rdx) : tabentry->changes_since_analyze = tabmsg->t_counts.t_changed_tuples; 0.00 : 643fff: 48 8b 84 1d 58 fc ff mov -0x3a8(%rbp,%rbx,1),%rax 0.00 : 644006: ff 0.00 : 644007: 48 89 42 50 mov %rax,0x50(%rdx) : tabentry->blocks_fetched = tabmsg->t_counts.t_blocks_fetched; 0.00 : 64400b: 48 8b 84 1d 60 fc ff mov -0x3a0(%rbp,%rbx,1),%rax 0.00 : 644012: ff 0.00 : 644013: 48 89 42 58 mov %rax,0x58(%rdx) : tabentry->blocks_hit = tabmsg->t_counts.t_blocks_hit; 0.00 : 644017: 48 8b 84 1d 68 fc ff mov -0x398(%rbp,%rbx,1),%rax 0.00 : 64401e: ff : : tabentry->vacuum_timestamp = 0; 0.00 : 64401f: 48 c7 42 68 00 00 00 movq $0x0,0x68(%rdx) 0.00 : 644026: 00 : tabentry->vacuum_count = 0; 0.00 : 644027: 48 c7 42 70 00 00 00 movq $0x0,0x70(%rdx) 0.00 : 64402e: 00 : tabentry->autovac_vacuum_timestamp = 0; 0.00 : 64402f: 48 c7 42 78 00 00 00 movq $0x0,0x78(%rdx) 0.00 : 644036: 00 : tabentry->autovac_vacuum_count = 0; 0.00 : 644037: 48 c7 82 80 00 00 00 movq $0x0,0x80(%rdx) 0.00 : 64403e: 00 00 00 00 : tabentry->tuples_hot_updated = tabmsg->t_counts.t_tuples_hot_updated; : tabentry->n_live_tuples = tabmsg->t_counts.t_delta_live_tuples; : tabentry->n_dead_tuples = tabmsg->t_counts.t_delta_dead_tuples; : tabentry->changes_since_analyze = tabmsg->t_counts.t_changed_tuples; : tabentry->blocks_fetched = tabmsg->t_counts.t_blocks_fetched; : tabentry->blocks_hit = tabmsg->t_counts.t_blocks_hit; 0.00 : 644042: 48 89 42 60 mov %rax,0x60(%rdx) : : tabentry->vacuum_timestamp = 0; : tabentry->vacuum_count = 0; : tabentry->autovac_vacuum_timestamp = 0; : tabentry->autovac_vacuum_count = 0; : tabentry->analyze_timestamp = 0; 0.00 : 644046: 48 c7 82 88 00 00 00 movq $0x0,0x88(%rdx) 0.00 : 64404d: 00 00 00 00 : tabentry->analyze_count = 0; 0.00 : 644051: 48 c7 82 90 00 00 00 movq $0x0,0x90(%rdx) 0.00 : 644058: 00 00 00 00 : tabentry->autovac_analyze_timestamp = 0; 0.00 : 64405c: 48 c7 82 98 00 00 00 movq $0x0,0x98(%rdx) 0.00 : 644063: 00 00 00 00 : tabentry->autovac_analyze_count = 0; 0.00 : 644067: 48 c7 82 a0 00 00 00 movq $0x0,0xa0(%rdx) 0.00 : 64406e: 00 00 00 00 : tabentry->blocks_fetched += tabmsg->t_counts.t_blocks_fetched; : tabentry->blocks_hit += tabmsg->t_counts.t_blocks_hit; : } : : /* Clamp n_live_tuples in case of negative delta_live_tuples */ : tabentry->n_live_tuples = Max(tabentry->n_live_tuples, 0); 0.00 : 644072: 48 83 7a 40 00 cmpq $0x0,0x40(%rdx) 0.00 : 644077: b8 00 00 00 00 mov $0x0,%eax 0.00 : 64407c: 48 0f 49 42 40 cmovns 0x40(%rdx),%rax : /* Likewise for n_dead_tuples */ : tabentry->n_dead_tuples = Max(tabentry->n_dead_tuples, 0); 0.00 : 644081: 48 83 7a 48 00 cmpq $0x0,0x48(%rdx) : tabentry->blocks_fetched += tabmsg->t_counts.t_blocks_fetched; : tabentry->blocks_hit += tabmsg->t_counts.t_blocks_hit; : } : : /* Clamp n_live_tuples in case of negative delta_live_tuples */ : tabentry->n_live_tuples = Max(tabentry->n_live_tuples, 0); 0.00 : 644086: 48 89 42 40 mov %rax,0x40(%rdx) : /* Likewise for n_dead_tuples */ : tabentry->n_dead_tuples = Max(tabentry->n_dead_tuples, 0); 0.00 : 64408a: b8 00 00 00 00 mov $0x0,%eax 0.00 : 64408f: 48 0f 49 42 48 cmovns 0x48(%rdx),%rax : dbentry->n_block_write_time += msg->m_block_write_time; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 644094: 41 83 c7 01 add $0x1,%r15d : } : : /* Clamp n_live_tuples in case of negative delta_live_tuples */ : tabentry->n_live_tuples = Max(tabentry->n_live_tuples, 0); : /* Likewise for n_dead_tuples */ : tabentry->n_dead_tuples = Max(tabentry->n_dead_tuples, 0); 0.00 : 644098: 48 89 42 48 mov %rax,0x48(%rdx) : : /* : * Add per-table stats to the per-database entry, too. : */ : dbentry->n_tuples_returned += tabmsg->t_counts.t_tuples_returned; 0.00 : 64409c: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 6440a0: 49 8d 04 86 lea (%r14,%rax,4),%rax 0.00 : 6440a4: 48 c1 e0 03 shl $0x3,%rax 0.00 : 6440a8: 48 8b 94 05 18 fc ff mov -0x3e8(%rbp,%rax,1),%rdx 0.00 : 6440af: ff 0.00 : 6440b0: 49 01 54 24 28 add %rdx,0x28(%r12) : dbentry->n_tuples_fetched += tabmsg->t_counts.t_tuples_fetched; 0.00 : 6440b5: 48 8b 94 05 20 fc ff mov -0x3e0(%rbp,%rax,1),%rdx 0.00 : 6440bc: ff 0.00 : 6440bd: 49 01 54 24 30 add %rdx,0x30(%r12) : dbentry->n_tuples_inserted += tabmsg->t_counts.t_tuples_inserted; 0.00 : 6440c2: 48 8b 94 05 28 fc ff mov -0x3d8(%rbp,%rax,1),%rdx 0.00 : 6440c9: ff 0.00 : 6440ca: 49 01 54 24 38 add %rdx,0x38(%r12) : dbentry->n_tuples_updated += tabmsg->t_counts.t_tuples_updated; 0.00 : 6440cf: 48 8b 94 05 30 fc ff mov -0x3d0(%rbp,%rax,1),%rdx 0.00 : 6440d6: ff 0.00 : 6440d7: 49 01 54 24 40 add %rdx,0x40(%r12) : dbentry->n_tuples_deleted += tabmsg->t_counts.t_tuples_deleted; 0.00 : 6440dc: 48 8b 94 05 38 fc ff mov -0x3c8(%rbp,%rax,1),%rdx 0.00 : 6440e3: ff 0.00 : 6440e4: 49 01 54 24 48 add %rdx,0x48(%r12) : dbentry->n_blocks_fetched += tabmsg->t_counts.t_blocks_fetched; 0.00 : 6440e9: 48 8b 94 05 60 fc ff mov -0x3a0(%rbp,%rax,1),%rdx 0.00 : 6440f0: ff 0.00 : 6440f1: 49 01 54 24 18 add %rdx,0x18(%r12) : dbentry->n_blocks_hit += tabmsg->t_counts.t_blocks_hit; 0.00 : 6440f6: 48 8b 84 05 68 fc ff mov -0x398(%rbp,%rax,1),%rax 0.00 : 6440fd: ff 0.00 : 6440fe: 49 01 44 24 20 add %rax,0x20(%r12) : dbentry->n_block_write_time += msg->m_block_write_time; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 644103: 44 3b bd ec fb ff ff cmp -0x414(%rbp),%r15d 0.00 : 64410a: 0f 8d d5 fb ff ff jge 643ce5 : { : PgStat_TableEntry *tabmsg = &(msg->m_entry[i]); 0.00 : 644110: 4d 63 f7 movslq %r15d,%r14 : : tabentry = (PgStat_StatTabEntry *) hash_search(dbentry->tables, 0.00 : 644113: 49 8b bc 24 b8 00 00 mov 0xb8(%r12),%rdi 0.00 : 64411a: 00 0.00 : 64411b: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 64411f: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 644123: ba 01 00 00 00 mov $0x1,%edx 0.00 : 644128: 49 8d 04 86 lea (%r14,%rax,4),%rax 0.00 : 64412c: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 644133: 00 0.00 : 644134: 49 8d 74 1d 28 lea 0x28(%r13,%rbx,1),%rsi 0.00 : 644139: e8 62 05 14 00 callq 7846a0 : (void *) &(tabmsg->t_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 64413e: 80 7d cc 00 cmpb $0x0,-0x34(%rbp) : */ : for (i = 0; i < msg->m_nentries; i++) : { : PgStat_TableEntry *tabmsg = &(msg->m_entry[i]); : : tabentry = (PgStat_StatTabEntry *) hash_search(dbentry->tables, 0.00 : 644142: 48 89 c2 mov %rax,%rdx : (void *) &(tabmsg->t_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 644145: 0f 84 48 fe ff ff je 643f93 : else : { : /* : * Otherwise add the values to the existing entry. : */ : tabentry->numscans += tabmsg->t_counts.t_numscans; 0.00 : 64414b: 48 8b 84 1d 10 fc ff mov -0x3f0(%rbp,%rbx,1),%rax 0.00 : 644152: ff 0.00 : 644153: 48 01 42 08 add %rax,0x8(%rdx) : tabentry->tuples_returned += tabmsg->t_counts.t_tuples_returned; 0.00 : 644157: 48 8b 84 1d 18 fc ff mov -0x3e8(%rbp,%rbx,1),%rax 0.00 : 64415e: ff 0.00 : 64415f: 48 01 42 10 add %rax,0x10(%rdx) : tabentry->tuples_fetched += tabmsg->t_counts.t_tuples_fetched; 0.00 : 644163: 48 8b 84 1d 20 fc ff mov -0x3e0(%rbp,%rbx,1),%rax 0.00 : 64416a: ff 0.00 : 64416b: 48 01 42 18 add %rax,0x18(%rdx) : tabentry->tuples_inserted += tabmsg->t_counts.t_tuples_inserted; 0.00 : 64416f: 48 8b 84 1d 28 fc ff mov -0x3d8(%rbp,%rbx,1),%rax 0.00 : 644176: ff 0.00 : 644177: 48 01 42 20 add %rax,0x20(%rdx) : tabentry->tuples_updated += tabmsg->t_counts.t_tuples_updated; 0.00 : 64417b: 48 8b 84 1d 30 fc ff mov -0x3d0(%rbp,%rbx,1),%rax 0.00 : 644182: ff 0.00 : 644183: 48 01 42 28 add %rax,0x28(%rdx) : tabentry->tuples_deleted += tabmsg->t_counts.t_tuples_deleted; 0.00 : 644187: 48 8b 84 1d 38 fc ff mov -0x3c8(%rbp,%rbx,1),%rax 0.00 : 64418e: ff 0.00 : 64418f: 48 01 42 30 add %rax,0x30(%rdx) : tabentry->tuples_hot_updated += tabmsg->t_counts.t_tuples_hot_updated; 0.00 : 644193: 48 8b 84 1d 40 fc ff mov -0x3c0(%rbp,%rbx,1),%rax 0.00 : 64419a: ff 0.00 : 64419b: 48 01 42 38 add %rax,0x38(%rdx) : tabentry->n_live_tuples += tabmsg->t_counts.t_delta_live_tuples; 0.00 : 64419f: 48 8b 84 1d 48 fc ff mov -0x3b8(%rbp,%rbx,1),%rax 0.00 : 6441a6: ff 0.00 : 6441a7: 48 01 42 40 add %rax,0x40(%rdx) : tabentry->n_dead_tuples += tabmsg->t_counts.t_delta_dead_tuples; 0.00 : 6441ab: 48 8b 84 1d 50 fc ff mov -0x3b0(%rbp,%rbx,1),%rax 0.00 : 6441b2: ff 0.00 : 6441b3: 48 01 42 48 add %rax,0x48(%rdx) : tabentry->changes_since_analyze += tabmsg->t_counts.t_changed_tuples; 0.00 : 6441b7: 48 8b 84 1d 58 fc ff mov -0x3a8(%rbp,%rbx,1),%rax 0.00 : 6441be: ff 0.00 : 6441bf: 48 01 42 50 add %rax,0x50(%rdx) : tabentry->blocks_fetched += tabmsg->t_counts.t_blocks_fetched; 0.00 : 6441c3: 48 8b 84 1d 60 fc ff mov -0x3a0(%rbp,%rbx,1),%rax 0.00 : 6441ca: ff 0.00 : 6441cb: 48 01 42 58 add %rax,0x58(%rdx) : tabentry->blocks_hit += tabmsg->t_counts.t_blocks_hit; 0.00 : 6441cf: 48 8b 84 1d 68 fc ff mov -0x398(%rbp,%rbx,1),%rax 0.00 : 6441d6: ff 0.00 : 6441d7: 48 01 42 60 add %rax,0x60(%rdx) 0.00 : 6441db: e9 92 fe ff ff jmpq 644072 : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 6441e0: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6441e6: be 01 00 00 00 mov $0x1,%esi 0.00 : 6441eb: e8 20 cd ff ff callq 640f10 : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 6441f0: 8b b5 ec fb ff ff mov -0x414(%rbp),%esi 0.00 : 6441f6: ba 01 00 00 00 mov $0x1,%edx : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 6441fb: 48 89 c7 mov %rax,%rdi : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 6441fe: e8 6d cd ff ff callq 640f70 0.00 : 644203: 48 89 c2 mov %rax,%rdx : : tabentry->n_live_tuples = msg->m_live_tuples; 0.00 : 644206: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 64420d: 48 89 42 40 mov %rax,0x40(%rdx) : tabentry->n_dead_tuples = msg->m_dead_tuples; 0.00 : 644211: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 644218: 48 89 42 48 mov %rax,0x48(%rdx) : : if (msg->m_autovacuum) 0.00 : 64421c: 80 bd f0 fb ff ff 00 cmpb $0x0,-0x410(%rbp) 0.00 : 644223: 0f 84 e0 05 00 00 je 644809 : { : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644229: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->autovac_vacuum_count++; 0.00 : 644230: 48 83 82 80 00 00 00 addq $0x1,0x80(%rdx) 0.00 : 644237: 01 : tabentry->n_live_tuples = msg->m_live_tuples; : tabentry->n_dead_tuples = msg->m_dead_tuples; : : if (msg->m_autovacuum) : { : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644238: 48 89 42 78 mov %rax,0x78(%rdx) 0.00 : 64423c: e9 a4 fa ff ff jmpq 643ce5 : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 644241: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644247: be 01 00 00 00 mov $0x1,%esi 0.00 : 64424c: e8 bf cc ff ff callq 640f10 : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 644251: 8b b5 ec fb ff ff mov -0x414(%rbp),%esi 0.00 : 644257: ba 01 00 00 00 mov $0x1,%edx : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64425c: 48 89 c7 mov %rax,%rdi : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 64425f: e8 0c cd ff ff callq 640f70 0.00 : 644264: 48 89 c2 mov %rax,%rdx : : tabentry->n_live_tuples = msg->m_live_tuples; 0.00 : 644267: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 64426e: 48 89 42 40 mov %rax,0x40(%rdx) : tabentry->n_dead_tuples = msg->m_dead_tuples; 0.00 : 644272: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax : : /* : * We reset changes_since_analyze to zero, forgetting any changes that : * occurred while the ANALYZE was in progress. : */ : tabentry->changes_since_analyze = 0; 0.00 : 644279: 48 c7 42 50 00 00 00 movq $0x0,0x50(%rdx) 0.00 : 644280: 00 : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); : : tabentry->n_live_tuples = msg->m_live_tuples; : tabentry->n_dead_tuples = msg->m_dead_tuples; 0.00 : 644281: 48 89 42 48 mov %rax,0x48(%rdx) : * We reset changes_since_analyze to zero, forgetting any changes that : * occurred while the ANALYZE was in progress. : */ : tabentry->changes_since_analyze = 0; : : if (msg->m_autovacuum) 0.00 : 644285: 80 bd f0 fb ff ff 00 cmpb $0x0,-0x410(%rbp) 0.00 : 64428c: 0f 84 5c 05 00 00 je 6447ee : { : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; 0.00 : 644292: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->autovac_analyze_count++; 0.00 : 644299: 48 83 82 a0 00 00 00 addq $0x1,0xa0(%rdx) 0.00 : 6442a0: 01 : */ : tabentry->changes_since_analyze = 0; : : if (msg->m_autovacuum) : { : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; 0.00 : 6442a1: 48 89 82 98 00 00 00 mov %rax,0x98(%rdx) 0.00 : 6442a8: e9 38 fa ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. Nothing to do if not there. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6442ad: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6442b3: 31 f6 xor %esi,%esi 0.00 : 6442b5: e8 56 cc ff ff callq 640f10 : : if (!dbentry) 0.00 : 6442ba: 48 85 c0 test %rax,%rax : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. Nothing to do if not there. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6442bd: 48 89 c3 mov %rax,%rbx : : if (!dbentry) 0.00 : 6442c0: 0f 84 1f fa ff ff je 643ce5 : : /* : * We simply throw away all the database's table entries by recreating a : * new hash table for them. : */ : if (dbentry->tables != NULL) 0.00 : 6442c6: 48 8b b8 b8 00 00 00 mov 0xb8(%rax),%rdi 0.00 : 6442cd: 48 85 ff test %rdi,%rdi 0.00 : 6442d0: 74 05 je 6442d7 : hash_destroy(dbentry->tables); 0.00 : 6442d2: e8 29 04 14 00 callq 784700 : if (dbentry->functions != NULL) 0.00 : 6442d7: 48 8b bb c0 00 00 00 mov 0xc0(%rbx),%rdi 0.00 : 6442de: 48 85 ff test %rdi,%rdi 0.00 : 6442e1: 74 05 je 6442e8 : hash_destroy(dbentry->functions); 0.00 : 6442e3: e8 18 04 14 00 callq 784700 : : dbentry->tables = NULL; 0.00 : 6442e8: 48 c7 83 b8 00 00 00 movq $0x0,0xb8(%rbx) 0.00 : 6442ef: 00 00 00 00 : dbentry->functions = NULL; 0.00 : 6442f3: 48 c7 83 c0 00 00 00 movq $0x0,0xc0(%rbx) 0.00 : 6442fa: 00 00 00 00 : : /* : * Reset database-level stats, too. This creates empty hash tables for : * tables and functions. : */ : reset_dbentry_counters(dbentry); 0.00 : 6442fe: 48 89 df mov %rbx,%rdi 0.00 : 644301: e8 7a ca ff ff callq 640d80 0.00 : 644306: e9 da f9 ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : PgStat_StatFuncEntry *funcentry; : int i; : bool found; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64430b: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644311: be 01 00 00 00 mov $0x1,%esi 0.00 : 644316: e8 f5 cb ff ff callq 640f10 : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 64431b: 44 8b 8d ec fb ff ff mov -0x414(%rbp),%r9d : PgStat_StatDBEntry *dbentry; : PgStat_StatFuncEntry *funcentry; : int i; : bool found; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 644322: 49 89 c6 mov %rax,%r14 : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 644325: 45 85 c9 test %r9d,%r9d 0.00 : 644328: 0f 8e b7 f9 ff ff jle 643ce5 0.00 : 64432e: 48 8b 9d d0 f7 ff ff mov -0x830(%rbp),%rbx 0.00 : 644335: 45 31 e4 xor %r12d,%r12d 0.00 : 644338: eb 2d jmp 644367 : { : /* : * If it's a new function entry, initialize counters to the values : * we just got. : */ : funcentry->f_numcalls = funcmsg->f_numcalls; 0.00 : 64433a: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 64433e: 48 89 42 08 mov %rax,0x8(%rdx) : funcentry->f_total_time = funcmsg->f_total_time; 0.00 : 644342: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 644346: 48 89 42 10 mov %rax,0x10(%rdx) : funcentry->f_self_time = funcmsg->f_self_time; 0.00 : 64434a: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 64434e: 48 89 42 18 mov %rax,0x18(%rdx) : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 644352: 41 83 c4 01 add $0x1,%r12d 0.00 : 644356: 44 3b a5 ec fb ff ff cmp -0x414(%rbp),%r12d 0.00 : 64435d: 0f 8d 82 f9 ff ff jge 643ce5 0.00 : 644363: 48 83 c3 20 add $0x20,%rbx : { : funcentry = (PgStat_StatFuncEntry *) hash_search(dbentry->functions, 0.00 : 644367: 49 8b be c0 00 00 00 mov 0xc0(%r14),%rdi 0.00 : 64436e: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 644372: ba 01 00 00 00 mov $0x1,%edx 0.00 : 644377: 48 89 de mov %rbx,%rsi 0.00 : 64437a: e8 21 03 14 00 callq 7846a0 : (void *) &(funcmsg->f_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 64437f: 80 7d cc 00 cmpb $0x0,-0x34(%rbp) : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) : { : funcentry = (PgStat_StatFuncEntry *) hash_search(dbentry->functions, 0.00 : 644383: 48 89 c2 mov %rax,%rdx : (void *) &(funcmsg->f_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 644386: 74 b2 je 64433a : else : { : /* : * Otherwise add the values to the existing entry. : */ : funcentry->f_numcalls += funcmsg->f_numcalls; 0.00 : 644388: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 64438c: 48 01 42 08 add %rax,0x8(%rdx) : funcentry->f_total_time += funcmsg->f_total_time; 0.00 : 644390: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 644394: 48 01 42 10 add %rax,0x10(%rdx) : funcentry->f_self_time += funcmsg->f_self_time; 0.00 : 644398: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 64439c: 48 01 42 18 add %rax,0x18(%rdx) 0.00 : 6443a0: eb b0 jmp 644352 : pgstat_recv_funcpurge(PgStat_MsgFuncpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6443a2: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6443a8: 31 f6 xor %esi,%esi 0.00 : 6443aa: e8 61 cb ff ff callq 640f10 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->functions) 0.00 : 6443af: 48 85 c0 test %rax,%rax : pgstat_recv_funcpurge(PgStat_MsgFuncpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6443b2: 49 89 c4 mov %rax,%r12 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->functions) 0.00 : 6443b5: 0f 84 2a f9 ff ff je 643ce5 0.00 : 6443bb: 48 8b b8 c0 00 00 00 mov 0xc0(%rax),%rdi 0.00 : 6443c2: 48 85 ff test %rdi,%rdi 0.00 : 6443c5: 0f 84 1a f9 ff ff je 643ce5 : return; : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6443cb: 44 8b 85 ec fb ff ff mov -0x414(%rbp),%r8d 0.00 : 6443d2: 45 85 c0 test %r8d,%r8d 0.00 : 6443d5: 0f 8e 0a f9 ff ff jle 643ce5 0.00 : 6443db: 31 db xor %ebx,%ebx 0.00 : 6443dd: eb 09 jmp 6443e8 0.00 : 6443df: 90 nop 0.00 : 6443e0: 49 8b bc 24 c0 00 00 mov 0xc0(%r12),%rdi 0.00 : 6443e7: 00 : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->functions, 0.00 : 6443e8: 48 63 f3 movslq %ebx,%rsi 0.00 : 6443eb: 31 c9 xor %ecx,%ecx 0.00 : 6443ed: ba 02 00 00 00 mov $0x2,%edx 0.00 : 6443f2: 49 8d 74 b5 10 lea 0x10(%r13,%rsi,4),%rsi : return; : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6443f7: 83 c3 01 add $0x1,%ebx : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->functions, 0.00 : 6443fa: e8 a1 02 14 00 callq 7846a0 : return; : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6443ff: 3b 9d ec fb ff ff cmp -0x414(%rbp),%ebx 0.00 : 644405: 7c d9 jl 6443e0 0.00 : 644407: e9 d9 f8 ff ff jmpq 643ce5 : static void : pgstat_recv_recoveryconflict(PgStat_MsgRecoveryConflict *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64440c: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644412: be 01 00 00 00 mov $0x1,%esi 0.00 : 644417: e8 f4 ca ff ff callq 640f10 0.00 : 64441c: 48 89 c2 mov %rax,%rdx : : switch (msg->m_reason) 0.00 : 64441f: 8b 85 ec fb ff ff mov -0x414(%rbp),%eax 0.00 : 644425: 83 e8 03 sub $0x3,%eax 0.00 : 644428: 83 f8 04 cmp $0x4,%eax 0.00 : 64442b: 0f 87 b4 f8 ff ff ja 643ce5 0.00 : 644431: 89 c0 mov %eax,%eax 0.00 : 644433: ff 24 c5 10 f8 89 00 jmpq *0x89f810(,%rax,8) : static void : pgstat_recv_tempfile(PgStat_MsgTempFile *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64443a: 41 8b 7d 08 mov 0x8(%r13),%edi 0.00 : 64443e: be 01 00 00 00 mov $0x1,%esi 0.00 : 644443: e8 c8 ca ff ff callq 640f10 : : dbentry->n_temp_bytes += msg->m_filesize; 0.00 : 644448: 49 8b 55 10 mov 0x10(%r13),%rdx : dbentry->n_temp_files += 1; 0.00 : 64444c: 48 83 80 80 00 00 00 addq $0x1,0x80(%rax) 0.00 : 644453: 01 : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : dbentry->n_temp_bytes += msg->m_filesize; 0.00 : 644454: 48 01 90 88 00 00 00 add %rdx,0x88(%rax) 0.00 : 64445b: e9 85 f8 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_archiver(PgStat_MsgArchiver *msg, int len) : { : if (msg->m_failed) 0.00 : 644460: 80 bd e8 fb ff ff 00 cmpb $0x0,-0x418(%rbp) 0.00 : 644467: 0f 84 1f 03 00 00 je 64478c : { : /* Failed archival attempt */ : ++archiverStats.failed_count; : memcpy(archiverStats.last_failed_wal, msg->m_xlog, 0.00 : 64446d: 48 8b 95 c8 f7 ff ff mov -0x838(%rbp),%rdx : pgstat_recv_archiver(PgStat_MsgArchiver *msg, int len) : { : if (msg->m_failed) : { : /* Failed archival attempt */ : ++archiverStats.failed_count; 0.00 : 644474: 48 83 05 e4 79 53 00 addq $0x1,0x5379e4(%rip) # b7be60 0.00 : 64447b: 01 : memcpy(archiverStats.last_failed_wal, msg->m_xlog, 0.00 : 64447c: 48 8b 02 mov (%rdx),%rax 0.00 : 64447f: 48 89 05 e2 79 53 00 mov %rax,0x5379e2(%rip) # b7be68 0.00 : 644486: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 64448a: 48 89 05 df 79 53 00 mov %rax,0x5379df(%rip) # b7be70 0.00 : 644491: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 644495: 48 89 05 dc 79 53 00 mov %rax,0x5379dc(%rip) # b7be78 0.00 : 64449c: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 6444a0: 48 89 05 d9 79 53 00 mov %rax,0x5379d9(%rip) # b7be80 0.00 : 6444a7: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 6444ab: 48 89 05 d6 79 53 00 mov %rax,0x5379d6(%rip) # b7be88 0.00 : 6444b2: 0f b6 42 28 movzbl 0x28(%rdx),%eax 0.00 : 6444b6: 88 05 d4 79 53 00 mov %al,0x5379d4(%rip) # b7be90 : sizeof(archiverStats.last_failed_wal)); : archiverStats.last_failed_timestamp = msg->m_timestamp; 0.00 : 6444bc: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax 0.00 : 6444c3: 48 89 05 ce 79 53 00 mov %rax,0x5379ce(%rip) # b7be98 0.00 : 6444ca: e9 16 f8 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_bgwriter(PgStat_MsgBgWriter *msg, int len) : { : globalStats.timed_checkpoints += msg->m_timed_checkpoints; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:5014 50.00 : 6444cf: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax 0.00 : 6444d6: 48 01 05 eb 79 53 00 add %rax,0x5379eb(%rip) # b7bec8 : globalStats.requested_checkpoints += msg->m_requested_checkpoints; 0.00 : 6444dd: 48 8b 85 f0 fb ff ff mov -0x410(%rbp),%rax 0.00 : 6444e4: 48 01 05 e5 79 53 00 add %rax,0x5379e5(%rip) # b7bed0 : globalStats.checkpoint_write_time += msg->m_checkpoint_write_time; 0.00 : 6444eb: 48 8b 85 28 fc ff ff mov -0x3d8(%rbp),%rax 0.00 : 6444f2: 48 01 05 df 79 53 00 add %rax,0x5379df(%rip) # b7bed8 : globalStats.checkpoint_sync_time += msg->m_checkpoint_sync_time; 0.00 : 6444f9: 48 8b 85 30 fc ff ff mov -0x3d0(%rbp),%rax 0.00 : 644500: 48 01 05 d9 79 53 00 add %rax,0x5379d9(%rip) # b7bee0 : globalStats.buf_written_checkpoints += msg->m_buf_written_checkpoints; 0.00 : 644507: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 64450e: 48 01 05 d3 79 53 00 add %rax,0x5379d3(%rip) # b7bee8 : globalStats.buf_written_clean += msg->m_buf_written_clean; 0.00 : 644515: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 64451c: 48 01 05 cd 79 53 00 add %rax,0x5379cd(%rip) # b7bef0 : globalStats.maxwritten_clean += msg->m_maxwritten_clean; 0.00 : 644523: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 64452a: 48 01 05 c7 79 53 00 add %rax,0x5379c7(%rip) # b7bef8 : globalStats.buf_written_backend += msg->m_buf_written_backend; 0.00 : 644531: 48 8b 85 10 fc ff ff mov -0x3f0(%rbp),%rax 0.00 : 644538: 48 01 05 c1 79 53 00 add %rax,0x5379c1(%rip) # b7bf00 : globalStats.buf_fsync_backend += msg->m_buf_fsync_backend; 0.00 : 64453f: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax 0.00 : 644546: 48 01 05 bb 79 53 00 add %rax,0x5379bb(%rip) # b7bf08 : globalStats.buf_alloc += msg->m_buf_alloc; 0.00 : 64454d: 48 8b 85 20 fc ff ff mov -0x3e0(%rbp),%rax 0.00 : 644554: 48 01 05 b5 79 53 00 add %rax,0x5379b5(%rip) # b7bf10 : pgstat_recv_archiver((PgStat_MsgArchiver *) &msg, len); : break; : : case PGSTAT_MTYPE_BGWRITER: : pgstat_recv_bgwriter((PgStat_MsgBgWriter *) &msg, len); : break; 0.00 : 64455b: e9 85 f7 ff ff jmpq 643ce5 : pgstat_recv_tabpurge(PgStat_MsgTabpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 644560: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644566: 31 f6 xor %esi,%esi 0.00 : 644568: e8 a3 c9 ff ff callq 640f10 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->tables) 0.00 : 64456d: 48 85 c0 test %rax,%rax : pgstat_recv_tabpurge(PgStat_MsgTabpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 644570: 49 89 c4 mov %rax,%r12 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->tables) 0.00 : 644573: 0f 84 6c f7 ff ff je 643ce5 0.00 : 644579: 48 8b b8 b8 00 00 00 mov 0xb8(%rax),%rdi 0.00 : 644580: 48 85 ff test %rdi,%rdi 0.00 : 644583: 0f 84 5c f7 ff ff je 643ce5 : return; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 644589: 44 8b 95 ec fb ff ff mov -0x414(%rbp),%r10d 0.00 : 644590: 45 85 d2 test %r10d,%r10d 0.00 : 644593: 0f 8e 4c f7 ff ff jle 643ce5 0.00 : 644599: 31 db xor %ebx,%ebx 0.00 : 64459b: eb 0b jmp 6445a8 0.00 : 64459d: 0f 1f 00 nopl (%rax) 0.00 : 6445a0: 49 8b bc 24 b8 00 00 mov 0xb8(%r12),%rdi 0.00 : 6445a7: 00 : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->tables, 0.00 : 6445a8: 48 63 f3 movslq %ebx,%rsi 0.00 : 6445ab: 31 c9 xor %ecx,%ecx 0.00 : 6445ad: ba 02 00 00 00 mov $0x2,%edx 0.00 : 6445b2: 49 8d 74 b5 10 lea 0x10(%r13,%rsi,4),%rsi : return; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6445b7: 83 c3 01 add $0x1,%ebx : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->tables, 0.00 : 6445ba: e8 e1 00 14 00 callq 7846a0 : return; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6445bf: 3b 9d ec fb ff ff cmp -0x414(%rbp),%ebx 0.00 : 6445c5: 7c d9 jl 6445a0 0.00 : 6445c7: e9 19 f7 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_dropdb(PgStat_MsgDropdb *msg, int len) : { : Oid dbid = msg->m_databaseid; 0.00 : 6445cc: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. : */ : dbentry = pgstat_get_db_entry(dbid, false); 0.00 : 6445d2: 31 f6 xor %esi,%esi : * ---------- : */ : static void : pgstat_recv_dropdb(PgStat_MsgDropdb *msg, int len) : { : Oid dbid = msg->m_databaseid; 0.00 : 6445d4: 89 7d cc mov %edi,-0x34(%rbp) : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. : */ : dbentry = pgstat_get_db_entry(dbid, false); 0.00 : 6445d7: e8 34 c9 ff ff callq 640f10 : : /* : * If found, remove it (along with the db statfile). : */ : if (dbentry) 0.00 : 6445dc: 48 85 c0 test %rax,%rax : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. : */ : dbentry = pgstat_get_db_entry(dbid, false); 0.00 : 6445df: 48 89 c3 mov %rax,%rbx : : /* : * If found, remove it (along with the db statfile). : */ : if (dbentry) 0.00 : 6445e2: 0f 84 fd f6 ff ff je 643ce5 : { : char statfile[MAXPGPATH]; : : get_dbstat_filename(false, false, dbid, statfile, MAXPGPATH); 0.00 : 6445e8: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 6445eb: 48 8d 8d e0 f7 ff ff lea -0x820(%rbp),%rcx 0.00 : 6445f2: 41 b8 00 04 00 00 mov $0x400,%r8d 0.00 : 6445f8: 31 f6 xor %esi,%esi 0.00 : 6445fa: 31 ff xor %edi,%edi 0.00 : 6445fc: e8 7f ca ff ff callq 641080 : : elog(DEBUG2, "removing %s", statfile); 0.00 : 644601: ba a0 f9 89 00 mov $0x89f9a0,%edx 0.00 : 644606: be a5 12 00 00 mov $0x12a5,%esi 0.00 : 64460b: bf 88 ef 89 00 mov $0x89ef88,%edi 0.00 : 644610: e8 0b 6e 13 00 callq 77b420 0.00 : 644615: 48 8d 95 e0 f7 ff ff lea -0x820(%rbp),%rdx 0.00 : 64461c: 31 c0 xor %eax,%eax 0.00 : 64461e: be ad f0 89 00 mov $0x89f0ad,%esi 0.00 : 644623: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 644628: e8 03 6c 13 00 callq 77b230 : unlink(statfile); 0.00 : 64462d: 48 8d bd e0 f7 ff ff lea -0x820(%rbp),%rdi 0.00 : 644634: e8 77 50 e2 ff callq 4696b0 : : if (dbentry->tables != NULL) 0.00 : 644639: 48 8b bb b8 00 00 00 mov 0xb8(%rbx),%rdi 0.00 : 644640: 48 85 ff test %rdi,%rdi 0.00 : 644643: 74 05 je 64464a : hash_destroy(dbentry->tables); 0.00 : 644645: e8 b6 00 14 00 callq 784700 : if (dbentry->functions != NULL) 0.00 : 64464a: 48 8b bb c0 00 00 00 mov 0xc0(%rbx),%rdi 0.00 : 644651: 48 85 ff test %rdi,%rdi 0.00 : 644654: 74 05 je 64465b : hash_destroy(dbentry->functions); 0.00 : 644656: e8 a5 00 14 00 callq 784700 : : if (hash_search(pgStatDBHash, 0.00 : 64465b: 48 8b 3d 76 75 53 00 mov 0x537576(%rip),%rdi # b7bbd8 0.00 : 644662: 48 8d 75 cc lea -0x34(%rbp),%rsi 0.00 : 644666: 31 c9 xor %ecx,%ecx 0.00 : 644668: ba 02 00 00 00 mov $0x2,%edx 0.00 : 64466d: e8 2e 00 14 00 callq 7846a0 0.00 : 644672: 48 85 c0 test %rax,%rax 0.00 : 644675: 0f 85 6a f6 ff ff jne 643ce5 : (void *) &dbid, : HASH_REMOVE, NULL) == NULL) : ereport(ERROR, 0.00 : 64467b: 45 31 c0 xor %r8d,%r8d 0.00 : 64467e: b9 a0 f9 89 00 mov $0x89f9a0,%ecx 0.00 : 644683: ba b1 12 00 00 mov $0x12b1,%edx 0.00 : 644688: be 88 ef 89 00 mov $0x89ef88,%esi 0.00 : 64468d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 644692: e8 29 64 13 00 callq 77aac0 0.00 : 644697: 84 c0 test %al,%al 0.00 : 644699: 0f 84 07 f7 ff ff je 643da6 0.00 : 64469f: bf 00 f4 89 00 mov $0x89f400,%edi 0.00 : 6446a4: 31 c0 xor %eax,%eax 0.00 : 6446a6: e8 f5 81 13 00 callq 77c8a0 0.00 : 6446ab: 89 c7 mov %eax,%edi 0.00 : 6446ad: 31 c0 xor %eax,%eax 0.00 : 6446af: e8 2c 5f 13 00 callq 77a5e0 0.00 : 6446b4: e9 ed f6 ff ff jmpq 643da6 0.00 : 6446b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static void : pgstat_recv_resetsinglecounter(PgStat_MsgResetsinglecounter *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6446c0: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6446c6: 31 f6 xor %esi,%esi 0.00 : 6446c8: e8 43 c8 ff ff callq 640f10 : : if (!dbentry) 0.00 : 6446cd: 48 85 c0 test %rax,%rax : static void : pgstat_recv_resetsinglecounter(PgStat_MsgResetsinglecounter *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6446d0: 48 89 c3 mov %rax,%rbx : : if (!dbentry) 0.00 : 6446d3: 0f 84 0c f6 ff ff je 643ce5 : return; : : /* Set the reset timestamp for the whole database */ : dbentry->stat_reset_timestamp = GetCurrentTimestamp(); 0.00 : 6446d9: e8 92 1c 10 00 callq 746370 0.00 : 6446de: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) : : /* Remove object if it exists, ignore it if not */ : if (msg->m_resettype == RESET_TABLE) 0.00 : 6446e5: 8b 85 ec fb ff ff mov -0x414(%rbp),%eax 0.00 : 6446eb: 85 c0 test %eax,%eax 0.00 : 6446ed: 0f 84 a5 01 00 00 je 644898 : (void) hash_search(dbentry->tables, (void *) &(msg->m_objectid), : HASH_REMOVE, NULL); : else if (msg->m_resettype == RESET_FUNCTION) 0.00 : 6446f3: 83 e8 01 sub $0x1,%eax 0.00 : 6446f6: 0f 85 e9 f5 ff ff jne 643ce5 : (void) hash_search(dbentry->functions, (void *) &(msg->m_objectid), 0.00 : 6446fc: 48 8b bb c0 00 00 00 mov 0xc0(%rbx),%rdi 0.00 : 644703: 48 8b b5 d0 f7 ff ff mov -0x830(%rbp),%rsi 0.00 : 64470a: 31 c9 xor %ecx,%ecx 0.00 : 64470c: ba 02 00 00 00 mov $0x2,%edx 0.00 : 644711: e8 8a ff 13 00 callq 7846a0 0.00 : 644716: e9 ca f5 ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : : /* : * Store the last autovacuum time in the database's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64471b: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644721: be 01 00 00 00 mov $0x1,%esi 0.00 : 644726: e8 e5 c7 ff ff callq 640f10 : : dbentry->last_autovac_time = msg->m_start_time; 0.00 : 64472b: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 644732: 48 89 50 50 mov %rdx,0x50(%rax) : len); : break; : : case PGSTAT_MTYPE_AUTOVAC_START: : pgstat_recv_autovac((PgStat_MsgAutovacStart *) &msg, len); : break; 0.00 : 644736: e9 aa f5 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_resetsharedcounter(PgStat_MsgResetsharedcounter *msg, int len) : { : if (msg->m_resettarget == RESET_BGWRITER) 0.00 : 64473b: 8b 85 e8 fb ff ff mov -0x418(%rbp),%eax 0.00 : 644741: 83 f8 01 cmp $0x1,%eax 0.00 : 644744: 0f 84 2e 01 00 00 je 644878 : { : /* Reset the global background writer statistics for the cluster. */ : memset(&globalStats, 0, sizeof(globalStats)); : globalStats.stat_reset_timestamp = GetCurrentTimestamp(); : } : else if (msg->m_resettarget == RESET_ARCHIVER) 0.00 : 64474a: 85 c0 test %eax,%eax 0.00 : 64474c: 0f 85 93 f5 ff ff jne 643ce5 : { : /* Reset the archiver statistics for the cluster. */ : memset(&archiverStats, 0, sizeof(archiverStats)); 0.00 : 644752: 31 c0 xor %eax,%eax 0.00 : 644754: bf 20 be b7 00 mov $0xb7be20,%edi 0.00 : 644759: b9 11 00 00 00 mov $0x11,%ecx 0.00 : 64475e: f3 48 ab rep stos %rax,%es:(%rdi) : archiverStats.stat_reset_timestamp = GetCurrentTimestamp(); 0.00 : 644761: e8 0a 1c 10 00 callq 746370 0.00 : 644766: 48 89 05 33 77 53 00 mov %rax,0x537733(%rip) # b7bea0 0.00 : 64476d: e9 73 f5 ff ff jmpq 643ce5 : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); : : if (req->databaseid != msg->databaseid) : continue; : : if (msg->cutoff_time > req->request_time) 0.00 : 644772: 48 8b 85 f0 fb ff ff mov -0x410(%rbp),%rax 0.00 : 644779: 48 3b 42 08 cmp 0x8(%rdx),%rax 0.00 : 64477d: 0f 8e 62 f5 ff ff jle 643ce5 : req->request_time = msg->cutoff_time; 0.00 : 644783: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 644787: e9 59 f5 ff ff jmpq 643ce5 : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 64478c: 48 8b 95 c8 f7 ff ff mov -0x838(%rbp),%rdx : archiverStats.last_failed_timestamp = msg->m_timestamp; : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; 0.00 : 644793: 48 83 05 85 76 53 00 addq $0x1,0x537685(%rip) # b7be20 0.00 : 64479a: 01 : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 64479b: 48 8b 02 mov (%rdx),%rax 0.00 : 64479e: 48 89 05 83 76 53 00 mov %rax,0x537683(%rip) # b7be28 0.00 : 6447a5: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 6447a9: 48 89 05 80 76 53 00 mov %rax,0x537680(%rip) # b7be30 0.00 : 6447b0: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 6447b4: 48 89 05 7d 76 53 00 mov %rax,0x53767d(%rip) # b7be38 0.00 : 6447bb: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 6447bf: 48 89 05 7a 76 53 00 mov %rax,0x53767a(%rip) # b7be40 0.00 : 6447c6: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 6447ca: 48 89 05 77 76 53 00 mov %rax,0x537677(%rip) # b7be48 0.00 : 6447d1: 0f b6 42 28 movzbl 0x28(%rdx),%eax 0.00 : 6447d5: 88 05 75 76 53 00 mov %al,0x537675(%rip) # b7be50 : sizeof(archiverStats.last_archived_wal)); : archiverStats.last_archived_timestamp = msg->m_timestamp; 0.00 : 6447db: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax 0.00 : 6447e2: 48 89 05 6f 76 53 00 mov %rax,0x53766f(%rip) # b7be58 0.00 : 6447e9: e9 f7 f4 ff ff jmpq 643ce5 : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; : tabentry->autovac_analyze_count++; : } : else : { : tabentry->analyze_timestamp = msg->m_analyzetime; 0.00 : 6447ee: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->analyze_count++; 0.00 : 6447f5: 48 83 82 90 00 00 00 addq $0x1,0x90(%rdx) 0.00 : 6447fc: 01 : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; : tabentry->autovac_analyze_count++; : } : else : { : tabentry->analyze_timestamp = msg->m_analyzetime; 0.00 : 6447fd: 48 89 82 88 00 00 00 mov %rax,0x88(%rdx) 0.00 : 644804: e9 dc f4 ff ff jmpq 643ce5 : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; : tabentry->autovac_vacuum_count++; : } : else : { : tabentry->vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644809: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->vacuum_count++; 0.00 : 644810: 48 83 42 70 01 addq $0x1,0x70(%rdx) : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; : tabentry->autovac_vacuum_count++; : } : else : { : tabentry->vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644815: 48 89 42 68 mov %rax,0x68(%rdx) 0.00 : 644819: e9 c7 f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_SNAPSHOT: : dbentry->n_conflict_snapshot++; : break; : case PROCSIG_RECOVERY_CONFLICT_BUFFERPIN: : dbentry->n_conflict_bufferpin++; 0.00 : 64481e: 48 83 42 70 01 addq $0x1,0x70(%rdx) 0.00 : 644823: e9 bd f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_LOCK: : dbentry->n_conflict_lock++; : break; : case PROCSIG_RECOVERY_CONFLICT_SNAPSHOT: : dbentry->n_conflict_snapshot++; 0.00 : 644828: 48 83 42 68 01 addq $0x1,0x68(%rdx) 0.00 : 64482d: e9 b3 f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_TABLESPACE: : dbentry->n_conflict_tablespace++; : break; : case PROCSIG_RECOVERY_CONFLICT_LOCK: : dbentry->n_conflict_lock++; 0.00 : 644832: 48 83 42 60 01 addq $0x1,0x60(%rdx) 0.00 : 644837: e9 a9 f4 ff ff jmpq 643ce5 : * Since we drop the information about the database as soon as it : * replicates, there is no point in counting these conflicts. : */ : break; : case PROCSIG_RECOVERY_CONFLICT_TABLESPACE: : dbentry->n_conflict_tablespace++; 0.00 : 64483c: 48 83 42 58 01 addq $0x1,0x58(%rdx) 0.00 : 644841: e9 9f f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_BUFFERPIN: : dbentry->n_conflict_bufferpin++; : break; : case PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK: : dbentry->n_conflict_startup_deadlock++; 0.00 : 644846: 48 83 42 78 01 addq $0x1,0x78(%rdx) 0.00 : 64484b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 644850: e9 90 f4 ff ff jmpq 643ce5 : : if (len < 0) : { : if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) : break; /* out of inner loop */ : ereport(ERROR, 0.00 : 644855: bf 98 f3 89 00 mov $0x89f398,%edi 0.00 : 64485a: 31 c0 xor %eax,%eax 0.00 : 64485c: e8 3f 80 13 00 callq 77c8a0 0.00 : 644861: 89 c3 mov %eax,%ebx 0.00 : 644863: e8 e8 81 13 00 callq 77ca50 0.00 : 644868: 89 de mov %ebx,%esi 0.00 : 64486a: 89 c7 mov %eax,%edi 0.00 : 64486c: 31 c0 xor %eax,%eax 0.00 : 64486e: e8 6d 5d 13 00 callq 77a5e0 0.00 : 644873: e9 2e f5 ff ff jmpq 643da6 : pgstat_recv_resetsharedcounter(PgStat_MsgResetsharedcounter *msg, int len) : { : if (msg->m_resettarget == RESET_BGWRITER) : { : /* Reset the global background writer statistics for the cluster. */ : memset(&globalStats, 0, sizeof(globalStats)); 0.00 : 644878: 31 c0 xor %eax,%eax 0.00 : 64487a: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 64487f: bf c0 be b7 00 mov $0xb7bec0,%edi 0.00 : 644884: f3 48 ab rep stos %rax,%es:(%rdi) : globalStats.stat_reset_timestamp = GetCurrentTimestamp(); 0.00 : 644887: e8 e4 1a 10 00 callq 746370 0.00 : 64488c: 48 89 05 85 76 53 00 mov %rax,0x537685(%rip) # b7bf18 0.00 : 644893: e9 4d f4 ff ff jmpq 643ce5 : /* Set the reset timestamp for the whole database */ : dbentry->stat_reset_timestamp = GetCurrentTimestamp(); : : /* Remove object if it exists, ignore it if not */ : if (msg->m_resettype == RESET_TABLE) : (void) hash_search(dbentry->tables, (void *) &(msg->m_objectid), 0.00 : 644898: 48 8b bb b8 00 00 00 mov 0xb8(%rbx),%rdi 0.00 : 64489f: 48 8b b5 d0 f7 ff ff mov -0x830(%rbp),%rsi 0.00 : 6448a6: 31 c9 xor %ecx,%ecx 0.00 : 6448a8: ba 02 00 00 00 mov $0x2,%edx 0.00 : 6448ad: e8 ee fd 13 00 callq 7846a0 0.00 : 6448b2: e9 2e f4 ff ff jmpq 643ce5 : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) : elog(FATAL, "setsid() failed: %m"); 0.00 : 6448b7: ba 60 f9 89 00 mov $0x89f960,%edx 0.00 : 6448bc: be 60 0c 00 00 mov $0xc60,%esi 0.00 : 6448c1: bf 88 ef 89 00 mov $0x89ef88,%edi 0.00 : 6448c6: e8 55 6b 13 00 callq 77b420 0.00 : 6448cb: be 83 fe 7b 00 mov $0x7bfe83,%esi 0.00 : 6448d0: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6448d5: 31 c0 xor %eax,%eax 0.00 : 6448d7: e8 54 69 13 00 callq 77b230 0.00 : 6448dc: e8 ef 4b e2 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:1563 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:3745 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000646ff0 : : * : * NB: Needs to be called with signals blocked : */ : static int : ServerLoop(void) : { 0.00 : 646ff0: 55 push %rbp : fd_set readmask; : int nSockets; : time_t now, : last_touch_time; : : last_touch_time = time(NULL); 0.00 : 646ff1: 31 ff xor %edi,%edi : * : * NB: Needs to be called with signals blocked : */ : static int : ServerLoop(void) : { 0.00 : 646ff3: 48 89 e5 mov %rsp,%rbp 0.00 : 646ff6: 41 57 push %r15 0.00 : 646ff8: 41 56 push %r14 0.00 : 646ffa: 41 55 push %r13 0.00 : 646ffc: 41 54 push %r12 0.00 : 646ffe: 53 push %rbx 0.00 : 646fff: 48 81 ec 78 01 00 00 sub $0x178,%rsp : fd_set readmask; : int nSockets; : time_t now, : last_touch_time; : : last_touch_time = time(NULL); 0.00 : 647006: e8 95 31 e2 ff callq 46a1a0 : initMasks(fd_set *rmask) : { : int maxsock = -1; : int i; : : FD_ZERO(rmask); 0.00 : 64700b: 48 8d bd 00 ff ff ff lea -0x100(%rbp),%rdi : fd_set readmask; : int nSockets; : time_t now, : last_touch_time; : : last_touch_time = time(NULL); 0.00 : 647012: 48 89 85 70 fe ff ff mov %rax,-0x190(%rbp) : initMasks(fd_set *rmask) : { : int maxsock = -1; : int i; : : FD_ZERO(rmask); 0.00 : 647019: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 64701e: 31 c0 xor %eax,%eax 0.00 : 647020: fc cld 0.00 : 647021: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 647024: 41 b8 a0 bf b7 00 mov $0xb7bfa0,%r8d 0.00 : 64702a: bf ff ff ff ff mov $0xffffffff,%edi : { : int fd = ListenSocket[i]; : : if (fd == PGINVALID_SOCKET) : break; : FD_SET(fd, rmask); 0.00 : 64702f: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 647035: eb 47 jmp 64707e 0.00 : 647037: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 64703e: 00 00 0.00 : 647040: 8d 56 3f lea 0x3f(%rsi),%edx 0.00 : 647043: 85 f6 test %esi,%esi 0.00 : 647045: 89 f0 mov %esi,%eax 0.00 : 647047: 0f 49 d6 cmovns %esi,%edx 0.00 : 64704a: c1 f8 1f sar $0x1f,%eax 0.00 : 64704d: c1 e8 1a shr $0x1a,%eax 0.00 : 647050: c1 fa 06 sar $0x6,%edx 0.00 : 647053: 8d 0c 06 lea (%rsi,%rax,1),%ecx 0.00 : 647056: 48 63 d2 movslq %edx,%rdx 0.00 : 647059: 83 e1 3f and $0x3f,%ecx 0.00 : 64705c: 29 c1 sub %eax,%ecx 0.00 : 64705e: 4c 89 c8 mov %r9,%rax 0.00 : 647061: 48 d3 e0 shl %cl,%rax 0.00 : 647064: 48 09 84 d5 00 ff ff or %rax,-0x100(%rbp,%rdx,8) 0.00 : 64706b: ff 0.00 : 64706c: 39 f7 cmp %esi,%edi 0.00 : 64706e: 0f 4c fe cmovl %esi,%edi 0.00 : 647071: 49 83 c0 04 add $0x4,%r8 : int maxsock = -1; : int i; : : FD_ZERO(rmask); : : for (i = 0; i < MAXLISTEN; i++) 0.00 : 647075: 49 81 f8 a0 c0 b7 00 cmp $0xb7c0a0,%r8 0.00 : 64707c: 74 08 je 647086 : { : int fd = ListenSocket[i]; 0.00 : 64707e: 41 8b 30 mov (%r8),%esi : : if (fd == PGINVALID_SOCKET) 0.00 : 647081: 83 fe ff cmp $0xffffffff,%esi 0.00 : 647084: 75 ba jne 647040 : : if (fd > maxsock) : maxsock = fd; : } : : return maxsock + 1; 0.00 : 647086: 83 c7 01 add $0x1,%edi : * We use % 255, sacrificing one possible byte value, so as to ensure that : * all bits of the random() value participate in the result. While at it, : * add one to avoid generating any null bytes. : */ : rand = PostmasterRandom(); : md5Salt[0] = (rand % 255) + 1; 0.00 : 647089: 49 bf 81 80 80 80 80 movabs $0x8080808080808081,%r15 0.00 : 647090: 80 80 80 : : if (fd > maxsock) : maxsock = fd; : } : : return maxsock + 1; 0.00 : 647093: 89 bd 6c fe ff ff mov %edi,-0x194(%rbp) 0.00 : 647099: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * do nontrivial work. : * : * If we are in PM_WAIT_DEAD_END state, then we don't want to accept : * any new connections, so we don't call select(), and just sleep. : */ : memcpy((char *) &rmask, (char *) &readmask, sizeof(fd_set)); 0.00 : 6470a0: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax : : if (pmState == PM_WAIT_DEAD_END) 0.00 : 6470a7: 83 3d b6 4e 53 00 0a cmpl $0xa,0x534eb6(%rip) # b7bf64 : * do nontrivial work. : * : * If we are in PM_WAIT_DEAD_END state, then we don't want to accept : * any new connections, so we don't call select(), and just sleep. : */ : memcpy((char *) &rmask, (char *) &readmask, sizeof(fd_set)); 0.00 : 6470ae: 48 89 85 80 fe ff ff mov %rax,-0x180(%rbp) 0.00 : 6470b5: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 6470bc: 48 89 85 88 fe ff ff mov %rax,-0x178(%rbp) 0.00 : 6470c3: 48 8b 85 10 ff ff ff mov -0xf0(%rbp),%rax 0.00 : 6470ca: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) 0.00 : 6470d1: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : 6470d8: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) 0.00 : 6470df: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 6470e6: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) 0.00 : 6470ed: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 6470f4: 48 89 85 a8 fe ff ff mov %rax,-0x158(%rbp) 0.00 : 6470fb: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 647102: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) 0.00 : 647109: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 647110: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) 0.00 : 647117: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 64711e: 48 89 85 c0 fe ff ff mov %rax,-0x140(%rbp) 0.00 : 647125: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 64712c: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp) 0.00 : 647133: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 64713a: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp) 0.00 : 647141: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 647148: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) 0.00 : 64714f: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 647156: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.00 : 64715d: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 647164: 48 89 85 e8 fe ff ff mov %rax,-0x118(%rbp) 0.00 : 64716b: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 647172: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) 0.00 : 647179: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 647180: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) : : if (pmState == PM_WAIT_DEAD_END) 0.00 : 647187: 0f 84 23 05 00 00 je 6476b0 : : /* : * Normal case: either there are no background workers at all, or we're in : * a shutdown sequence (during which we ignore bgworkers altogether). : */ : if (Shutdown > NoShutdown || 0.00 : 64718d: 8b 05 fd 4d 53 00 mov 0x534dfd(%rip),%eax # b7bf90 0.00 : 647193: 85 c0 test %eax,%eax 0.00 : 647195: 0f 8e 85 05 00 00 jle 647720 : (!StartWorkerNeeded && !HaveCrashedWorker)) : { : if (AbortStartTime > 0) 0.00 : 64719b: 48 8b 1d fe 52 53 00 mov 0x5352fe(%rip),%rbx # b7c4a0 0.00 : 6471a2: 48 85 db test %rbx,%rbx 0.00 : 6471a5: 0f 8e ed 04 00 00 jle 647698 : { : /* time left to abort; clamp to 0 in case it already expired */ : timeout->tv_sec = Max(SIGKILL_CHILDREN_AFTER_SECS - 0.00 : 6471ab: 31 ff xor %edi,%edi 0.00 : 6471ad: e8 ee 2f e2 ff callq 46a1a0 0.00 : 6471b2: 48 8d 53 05 lea 0x5(%rbx),%rdx 0.00 : 6471b6: 31 c9 xor %ecx,%ecx 0.00 : 6471b8: 48 29 c2 sub %rax,%rdx 0.00 : 6471bb: 48 85 d2 test %rdx,%rdx 0.00 : 6471be: 7e 15 jle 6471d5 0.00 : 6471c0: 48 8b 1d d9 52 53 00 mov 0x5352d9(%rip),%rbx # b7c4a0 0.00 : 6471c7: 31 ff xor %edi,%edi 0.00 : 6471c9: e8 d2 2f e2 ff callq 46a1a0 0.00 : 6471ce: 48 8d 4b 05 lea 0x5(%rbx),%rcx 0.00 : 6471d2: 48 29 c1 sub %rax,%rcx 0.00 : 6471d5: 48 89 4d a0 mov %rcx,-0x60(%rbp) : (time(NULL) - AbortStartTime), 0); : timeout->tv_usec = 0; 0.00 : 6471d9: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 6471e0: 00 : struct timeval timeout; : : /* Needs to run with blocked signals! */ : DetermineSleepTime(&timeout); : : PG_SETMASK(&UnBlockSig); 0.00 : 6471e1: 31 d2 xor %edx,%edx 0.00 : 6471e3: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 6471e8: bf 02 00 00 00 mov $0x2,%edi 0.00 : 6471ed: e8 ce 28 e2 ff callq 469ac0 : : selres = select(nSockets, &rmask, NULL, NULL, &timeout); 0.00 : 6471f2: 8b bd 6c fe ff ff mov -0x194(%rbp),%edi 0.00 : 6471f8: 4c 8d 45 a0 lea -0x60(%rbp),%r8 0.00 : 6471fc: 48 8d b5 80 fe ff ff lea -0x180(%rbp),%rsi 0.00 : 647203: 31 c9 xor %ecx,%ecx 0.00 : 647205: 31 d2 xor %edx,%edx 0.00 : 647207: e8 64 23 e2 ff callq 469570 : : PG_SETMASK(&BlockSig); 0.00 : 64720c: 31 d2 xor %edx,%edx : /* Needs to run with blocked signals! */ : DetermineSleepTime(&timeout); : : PG_SETMASK(&UnBlockSig); : : selres = select(nSockets, &rmask, NULL, NULL, &timeout); 0.00 : 64720e: 89 c3 mov %eax,%ebx : : PG_SETMASK(&BlockSig); 0.00 : 647210: be c0 f8 bb 00 mov $0xbbf8c0,%esi 0.00 : 647215: bf 02 00 00 00 mov $0x2,%edi 0.00 : 64721a: e8 a1 28 e2 ff callq 469ac0 : } : : /* Now check the select() result */ : if (selres < 0) 0.00 : 64721f: 83 fb 00 cmp $0x0,%ebx 0.00 : 647222: 0f 8c f8 05 00 00 jl 647820 : : /* : * New connection pending on any of our sockets? If so, fork a child : * process to deal with it. : */ : if (selres > 0) 0.00 : 647228: 0f 84 22 02 00 00 je 647450 0.00 : 64722e: 41 be a0 bf b7 00 mov $0xb7bfa0,%r14d 0.00 : 647234: eb 1b jmp 647251 0.00 : 647236: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 64723d: 00 00 00 : #ifdef USE_SSL : secure_close(conn); : #endif : if (conn->gss) : free(conn->gss); : free(conn); 0.00 : 647240: 49 83 c6 04 add $0x4,%r14 : */ : if (selres > 0) : { : int i; : : for (i = 0; i < MAXLISTEN; i++) 0.00 : 647244: 49 81 fe a0 c0 b7 00 cmp $0xb7c0a0,%r14 0.00 : 64724b: 0f 84 ff 01 00 00 je 647450 : { : if (ListenSocket[i] == PGINVALID_SOCKET) 0.00 : 647251: 41 8b 1e mov (%r14),%ebx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:1563 50.00 : 647254: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 647257: 0f 84 f3 01 00 00 je 647450 : break; : if (FD_ISSET(ListenSocket[i], &rmask)) 0.00 : 64725d: 8d 53 3f lea 0x3f(%rbx),%edx 0.00 : 647260: 85 db test %ebx,%ebx 0.00 : 647262: 89 d8 mov %ebx,%eax 0.00 : 647264: 0f 49 d3 cmovns %ebx,%edx 0.00 : 647267: c1 f8 1f sar $0x1f,%eax 0.00 : 64726a: c1 e8 1a shr $0x1a,%eax 0.00 : 64726d: c1 fa 06 sar $0x6,%edx 0.00 : 647270: 8d 0c 03 lea (%rbx,%rax,1),%ecx 0.00 : 647273: 48 63 d2 movslq %edx,%rdx 0.00 : 647276: 83 e1 3f and $0x3f,%ecx 0.00 : 647279: 29 c1 sub %eax,%ecx 0.00 : 64727b: 48 8b 84 d5 80 fe ff mov -0x180(%rbp,%rdx,8),%rax 0.00 : 647282: ff 0.00 : 647283: 48 d3 f8 sar %cl,%rax 0.00 : 647286: a8 01 test $0x1,%al 0.00 : 647288: 74 b6 je 647240 : static Port * : ConnCreate(int serverFd) : { : Port *port; : : if (!(port = (Port *) calloc(1, sizeof(Port)))) 0.00 : 64728a: be a0 01 00 00 mov $0x1a0,%esi 0.00 : 64728f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 647294: e8 57 2b e2 ff callq 469df0 0.00 : 647299: 48 85 c0 test %rax,%rax 0.00 : 64729c: 49 89 c5 mov %rax,%r13 0.00 : 64729f: 0f 84 f9 06 00 00 je 64799e : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : ExitPostmaster(1); : } : : if (StreamConnection(serverFd, port) != STATUS_OK) 0.00 : 6472a5: 48 89 c6 mov %rax,%rsi 0.00 : 6472a8: 89 df mov %ebx,%edi 0.00 : 6472aa: e8 71 50 f9 ff callq 5dc320 0.00 : 6472af: 85 c0 test %eax,%eax 0.00 : 6472b1: 0f 85 51 04 00 00 jne 647708 : /* : * We use % 255, sacrificing one possible byte value, so as to ensure that : * all bits of the random() value participate in the result. While at it, : * add one to avoid generating any null bytes. : */ : rand = PostmasterRandom(); 0.00 : 6472b7: e8 24 e1 ff ff callq 6453e0 0.00 : 6472bc: 48 89 c6 mov %rax,%rsi : md5Salt[0] = (rand % 255) + 1; 0.00 : 6472bf: 49 f7 ef imul %r15 0.00 : 6472c2: 48 89 f1 mov %rsi,%rcx 0.00 : 6472c5: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 6472c9: 48 01 f2 add %rsi,%rdx 0.00 : 6472cc: 48 c1 fa 07 sar $0x7,%rdx 0.00 : 6472d0: 48 29 ca sub %rcx,%rdx 0.00 : 6472d3: 8d 44 16 01 lea 0x1(%rsi,%rdx,1),%eax 0.00 : 6472d7: 41 88 85 70 01 00 00 mov %al,0x170(%r13) : rand = PostmasterRandom(); 0.00 : 6472de: e8 fd e0 ff ff callq 6453e0 0.00 : 6472e3: 48 89 c6 mov %rax,%rsi : md5Salt[1] = (rand % 255) + 1; 0.00 : 6472e6: 49 f7 ef imul %r15 0.00 : 6472e9: 48 89 f1 mov %rsi,%rcx 0.00 : 6472ec: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 6472f0: 48 01 f2 add %rsi,%rdx 0.00 : 6472f3: 48 c1 fa 07 sar $0x7,%rdx 0.00 : 6472f7: 48 29 ca sub %rcx,%rdx 0.00 : 6472fa: 8d 44 16 01 lea 0x1(%rsi,%rdx,1),%eax 0.00 : 6472fe: 41 88 85 71 01 00 00 mov %al,0x171(%r13) : rand = PostmasterRandom(); 0.00 : 647305: e8 d6 e0 ff ff callq 6453e0 0.00 : 64730a: 48 89 c6 mov %rax,%rsi : md5Salt[2] = (rand % 255) + 1; 0.00 : 64730d: 49 f7 ef imul %r15 0.00 : 647310: 48 89 f1 mov %rsi,%rcx 0.00 : 647313: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 647317: 48 01 f2 add %rsi,%rdx 0.00 : 64731a: 48 c1 fa 07 sar $0x7,%rdx 0.00 : 64731e: 48 29 ca sub %rcx,%rdx 0.00 : 647321: 8d 44 16 01 lea 0x1(%rsi,%rdx,1),%eax 0.00 : 647325: 41 88 85 72 01 00 00 mov %al,0x172(%r13) : rand = PostmasterRandom(); 0.00 : 64732c: e8 af e0 ff ff callq 6453e0 0.00 : 647331: 48 89 c6 mov %rax,%rsi : : /* : * Create backend data structure. Better before the fork() so we can : * handle failure cleanly. : */ : bn = (Backend *) malloc(sizeof(Backend)); 0.00 : 647334: bf 30 00 00 00 mov $0x30,%edi : rand = PostmasterRandom(); : md5Salt[1] = (rand % 255) + 1; : rand = PostmasterRandom(); : md5Salt[2] = (rand % 255) + 1; : rand = PostmasterRandom(); : md5Salt[3] = (rand % 255) + 1; 0.00 : 647339: 49 f7 ef imul %r15 0.00 : 64733c: 48 89 f1 mov %rsi,%rcx 0.00 : 64733f: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 647343: 48 01 f2 add %rsi,%rdx 0.00 : 647346: 48 c1 fa 07 sar $0x7,%rdx 0.00 : 64734a: 48 29 ca sub %rcx,%rdx 0.00 : 64734d: 8d 44 16 01 lea 0x1(%rsi,%rdx,1),%eax 0.00 : 647351: 41 88 85 73 01 00 00 mov %al,0x173(%r13) : : /* : * Create backend data structure. Better before the fork() so we can : * handle failure cleanly. : */ : bn = (Backend *) malloc(sizeof(Backend)); 0.00 : 647358: e8 d3 22 e2 ff callq 469630 : if (!bn) 0.00 : 64735d: 48 85 c0 test %rax,%rax : : /* : * Create backend data structure. Better before the fork() so we can : * handle failure cleanly. : */ : bn = (Backend *) malloc(sizeof(Backend)); 0.00 : 647360: 48 89 c3 mov %rax,%rbx : if (!bn) 0.00 : 647363: 0f 84 8e 08 00 00 je 647bf7 : /* : * Compute the cancel key that will be assigned to this backend. The : * backend will have its own copy in the forked-off process' value of : * MyCancelKey, so that it can transmit the key to the frontend. : */ : MyCancelKey = PostmasterRandom(); 0.00 : 647369: e8 72 e0 ff ff callq 6453e0 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:3745 50.00 : 64736e: 48 89 05 8b 91 57 00 mov %rax,0x57918b(%rip) # bc0500 : bn->cancel_key = MyCancelKey; 0.00 : 647375: 48 89 43 08 mov %rax,0x8(%rbx) : : /* Pass down canAcceptConnections state */ : port->canAcceptConnections = canAcceptConnections(); 0.00 : 647379: e8 42 e6 ff ff callq 6459c0 : bn->dead_end = (port->canAcceptConnections != CAC_OK && 0.00 : 64737e: 85 c0 test %eax,%eax : */ : MyCancelKey = PostmasterRandom(); : bn->cancel_key = MyCancelKey; : : /* Pass down canAcceptConnections state */ : port->canAcceptConnections = canAcceptConnections(); 0.00 : 647380: 41 89 85 40 01 00 00 mov %eax,0x140(%r13) : bn->dead_end = (port->canAcceptConnections != CAC_OK && 0.00 : 647387: 0f 95 c2 setne %dl 0.00 : 64738a: 83 f8 05 cmp $0x5,%eax 0.00 : 64738d: 0f 95 c0 setne %al 0.00 : 647390: 0f b6 c0 movzbl %al,%eax 0.00 : 647393: 21 d0 and %edx,%eax : port->canAcceptConnections != CAC_WAITBACKUP); : : /* : * Unless it's a dead_end child, assign it a child slot number : */ : if (!bn->dead_end) 0.00 : 647395: 85 c0 test %eax,%eax : MyCancelKey = PostmasterRandom(); : bn->cancel_key = MyCancelKey; : : /* Pass down canAcceptConnections state */ : port->canAcceptConnections = canAcceptConnections(); : bn->dead_end = (port->canAcceptConnections != CAC_OK && 0.00 : 647397: 88 43 18 mov %al,0x18(%rbx) : port->canAcceptConnections != CAC_WAITBACKUP); : : /* : * Unless it's a dead_end child, assign it a child slot number : */ : if (!bn->dead_end) 0.00 : 64739a: 0f 84 30 02 00 00 je 6475d0 : bn->child_slot = MyPMChildSlot = AssignPostmasterChildSlot(); : else : bn->child_slot = 0; 0.00 : 6473a0: c7 43 10 00 00 00 00 movl $0x0,0x10(%rbx) : : /* Hasn't asked to be notified about any bgworkers yet */ : bn->bgworker_notify = false; 0.00 : 6473a7: c6 43 19 00 movb $0x0,0x19(%rbx) : : #ifdef EXEC_BACKEND : pid = backend_forkexec(port); : #else /* !EXEC_BACKEND */ : pid = fork_process(); 0.00 : 6473ab: e8 60 7a ff ff callq 63ee10 : if (pid == 0) /* child */ 0.00 : 6473b0: 83 f8 00 cmp $0x0,%eax : bn->bgworker_notify = false; : : #ifdef EXEC_BACKEND : pid = backend_forkexec(port); : #else /* !EXEC_BACKEND */ : pid = fork_process(); 0.00 : 6473b3: 41 89 c4 mov %eax,%r12d : if (pid == 0) /* child */ 0.00 : 6473b6: 0f 84 69 06 00 00 je 647a25 : /* And run the backend */ : BackendRun(port); : } : #endif /* EXEC_BACKEND */ : : if (pid < 0) 0.00 : 6473bc: 0f 8c 7d 05 00 00 jl 64793f : report_fork_failure_to_client(port, save_errno); : return STATUS_ERROR; : } : : /* in parent, successful fork */ : ereport(DEBUG2, 0.00 : 6473c2: 45 31 c0 xor %r8d,%r8d 0.00 : 6473c5: b9 e8 0f 8a 00 mov $0x8a0fe8,%ecx 0.00 : 6473ca: ba e7 0e 00 00 mov $0xee7,%edx 0.00 : 6473cf: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6473d4: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 6473d9: e8 e2 36 13 00 callq 77aac0 0.00 : 6473de: 84 c0 test %al,%al 0.00 : 6473e0: 0f 85 02 02 00 00 jne 6475e8 : : /* : * Everything's been successful, it's safe to add this backend to our list : * of backends. : */ : bn->pid = pid; 0.00 : 6473e6: 44 89 23 mov %r12d,(%rbx) : bn->bkend_type = BACKEND_TYPE_NORMAL; /* Can change later to WALSND */ 0.00 : 6473e9: c7 43 14 01 00 00 00 movl $0x1,0x14(%rbx) : dlist_push_head(&BackendList, &bn->elem); 0.00 : 6473f0: 48 8d 53 20 lea 0x20(%rbx),%rdx : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 6473f4: 48 8b 05 3d 12 52 00 mov 0x52123d(%rip),%rax # b68638 0.00 : 6473fb: 48 85 c0 test %rax,%rax 0.00 : 6473fe: 0f 84 44 02 00 00 je 647648 : dlist_init(head); : : node->next = head->head.next; 0.00 : 647404: 48 89 43 28 mov %rax,0x28(%rbx) : node->prev = &head->head; 0.00 : 647408: 48 c7 43 20 30 86 b6 movq $0xb68630,0x20(%rbx) 0.00 : 64740f: 00 : node->next->prev = node; 0.00 : 647410: 48 89 10 mov %rdx,(%rax) : head->head.next = node; 0.00 : 647413: 48 89 15 1e 12 52 00 mov %rdx,0x52121e(%rip) # b68638 : : /* : * We no longer need the open socket or port structure : * in this process : */ : StreamClose(port->sock); 0.00 : 64741a: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 64741e: e8 ed 4e f9 ff callq 5dc310 : ConnFree(Port *conn) : { : #ifdef USE_SSL : secure_close(conn); : #endif : if (conn->gss) 0.00 : 647423: 49 8b bd 98 01 00 00 mov 0x198(%r13),%rdi 0.00 : 64742a: 48 85 ff test %rdi,%rdi 0.00 : 64742d: 74 05 je 647434 : free(conn->gss); 0.00 : 64742f: e8 ec 23 e2 ff callq 469820 : free(conn); 0.00 : 647434: 4c 89 ef mov %r13,%rdi 0.00 : 647437: 49 83 c6 04 add $0x4,%r14 0.00 : 64743b: e8 e0 23 e2 ff callq 469820 : */ : if (selres > 0) : { : int i; : : for (i = 0; i < MAXLISTEN; i++) 0.00 : 647440: 49 81 fe a0 c0 b7 00 cmp $0xb7c0a0,%r14 0.00 : 647447: 0f 85 04 fe ff ff jne 647251 0.00 : 64744d: 0f 1f 00 nopl (%rax) : } : } : } : : /* If we have lost the log collector, try to start a new one */ : if (SysLoggerPID == 0 && Logging_collector) 0.00 : 647450: 8b 05 06 4b 53 00 mov 0x534b06(%rip),%eax # b7bf5c 0.00 : 647456: 85 c0 test %eax,%eax 0.00 : 647458: 75 0d jne 647467 0.00 : 64745a: 80 3d 7f 50 53 00 00 cmpb $0x0,0x53507f(%rip) # b7c4e0 0.00 : 647461: 0f 85 11 04 00 00 jne 647878 : /* : * If no background writer process is running, and we are not in a : * state that prevents it, start one. It doesn't matter if this : * fails, we'll just try again later. Likewise for the checkpointer. : */ : if (pmState == PM_RUN || pmState == PM_RECOVERY || 0.00 : 647467: 8b 05 f7 4a 53 00 mov 0x534af7(%rip),%eax # b7bf64 0.00 : 64746d: 83 f8 04 cmp $0x4,%eax 0.00 : 647470: 0f 84 9a 01 00 00 je 647610 0.00 : 647476: 83 f8 02 cmp $0x2,%eax 0.00 : 647479: 0f 84 91 01 00 00 je 647610 0.00 : 64747f: 83 f8 03 cmp $0x3,%eax 0.00 : 647482: 0f 84 88 01 00 00 je 647610 : /* : * Likewise, if we have lost the walwriter process, try to start a new : * one. But this is needed only in normal operation (else we cannot : * be writing any new WAL). : */ : if (WalWriterPID == 0 && pmState == PM_RUN) 0.00 : 647488: 44 8b 2d e9 4a 53 00 mov 0x534ae9(%rip),%r13d # b7bf78 0.00 : 64748f: 45 85 ed test %r13d,%r13d 0.00 : 647492: 75 0d jne 6474a1 0.00 : 647494: 83 3d c9 4a 53 00 04 cmpl $0x4,0x534ac9(%rip) # b7bf64 0.00 : 64749b: 0f 84 64 04 00 00 je 647905 : * If we have lost the autovacuum launcher, try to start a new one. We : * don't want autovacuum to run in binary upgrade mode because : * autovacuum might update relfrozenxid for empty tables before the : * physical files are put in place. : */ : if (!IsBinaryUpgrade && AutoVacPID == 0 && 0.00 : 6474a1: 80 3d 16 2c 57 00 00 cmpb $0x0,0x572c16(%rip) # bba0be 0.00 : 6474a8: 75 10 jne 6474ba 0.00 : 6474aa: 44 8b 25 cb 4a 53 00 mov 0x534acb(%rip),%r12d # b7bf7c 0.00 : 6474b1: 45 85 e4 test %r12d,%r12d 0.00 : 6474b4: 0f 84 d6 03 00 00 je 647890 : if (AutoVacPID != 0) : start_autovac_launcher = false; /* signal processed */ : } : : /* If we have lost the archiver, try to start a new one */ : if (XLogArchivingActive() && PgArchPID == 0 && pmState == PM_RUN) 0.00 : 6474ba: 80 3d 87 1c 53 00 00 cmpb $0x0,0x531c87(%rip) # b79148 0.00 : 6474c1: 74 2d je 6474f0 0.00 : 6474c3: 8b 1d 93 1c 53 00 mov 0x531c93(%rip),%ebx # b7915c 0.00 : 6474c9: 85 db test %ebx,%ebx 0.00 : 6474cb: 7e 23 jle 6474f0 0.00 : 6474cd: 44 8b 1d b0 4a 53 00 mov 0x534ab0(%rip),%r11d # b7bf84 0.00 : 6474d4: 45 85 db test %r11d,%r11d 0.00 : 6474d7: 75 17 jne 6474f0 0.00 : 6474d9: 83 3d 84 4a 53 00 04 cmpl $0x4,0x534a84(%rip) # b7bf64 0.00 : 6474e0: 0f 84 2f 05 00 00 je 647a15 0.00 : 6474e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6474ed: 00 00 00 : PgArchPID = pgarch_start(); : : /* If we have lost the stats collector, try to start a new one */ : if (PgStatPID == 0 && pmState == PM_RUN) 0.00 : 6474f0: 44 8b 15 91 4a 53 00 mov 0x534a91(%rip),%r10d # b7bf88 0.00 : 6474f7: 45 85 d2 test %r10d,%r10d 0.00 : 6474fa: 75 0d jne 647509 0.00 : 6474fc: 83 3d 61 4a 53 00 04 cmpl $0x4,0x534a61(%rip) # b7bf64 0.00 : 647503: 0f 84 11 04 00 00 je 64791a : PgStatPID = pgstat_start(); : : /* If we need to signal the autovacuum launcher, do so now */ : if (avlauncher_needs_signal) 0.00 : 647509: 0f b6 05 7c 4a 53 00 movzbl 0x534a7c(%rip),%eax # b7bf8c 0.00 : 647510: 84 c0 test %al,%al 0.00 : 647512: 74 15 je 647529 : { : avlauncher_needs_signal = false; : if (AutoVacPID != 0) 0.00 : 647514: 8b 3d 62 4a 53 00 mov 0x534a62(%rip),%edi # b7bf7c : PgStatPID = pgstat_start(); : : /* If we need to signal the autovacuum launcher, do so now */ : if (avlauncher_needs_signal) : { : avlauncher_needs_signal = false; 0.00 : 64751a: c6 05 6b 4a 53 00 00 movb $0x0,0x534a6b(%rip) # b7bf8c : if (AutoVacPID != 0) 0.00 : 647521: 85 ff test %edi,%edi 0.00 : 647523: 0f 85 b7 03 00 00 jne 6478e0 : kill(AutoVacPID, SIGUSR2); : } : : /* Get other worker processes running, if needed */ : if (StartWorkerNeeded || HaveCrashedWorker) 0.00 : 647529: 0f b6 05 11 11 52 00 movzbl 0x521111(%rip),%eax # b68641 0.00 : 647530: 84 c0 test %al,%al 0.00 : 647532: 75 0b jne 64753f 0.00 : 647534: 0f b6 05 2e 4a 53 00 movzbl 0x534a2e(%rip),%eax # b7bf69 0.00 : 64753b: 84 c0 test %al,%al 0.00 : 64753d: 74 05 je 647544 : maybe_start_bgworker(); 0.00 : 64753f: e8 fc de ff ff callq 645440 : /* : * Touch Unix socket and lock files every 58 minutes, to ensure that : * they are not removed by overzealous /tmp-cleaning tasks. We assume : * no one runs cleaners with cutoff times of less than an hour ... : */ : now = time(NULL); 0.00 : 647544: 31 ff xor %edi,%edi 0.00 : 647546: e8 55 2c e2 ff callq 46a1a0 0.00 : 64754b: 48 89 c3 mov %rax,%rbx : if (now - last_touch_time >= 58 * SECS_PER_MINUTE) 0.00 : 64754e: 48 2b 85 70 fe ff ff sub -0x190(%rbp),%rax 0.00 : 647555: 48 3d 97 0d 00 00 cmp $0xd97,%rax 0.00 : 64755b: 0f 8f 87 01 00 00 jg 6476e8 : * normally, but under certain conditions backends can get stuck while : * shutting down. This is a last measure to get them unwedged. : * : * Note we also do this during recovery from a process crash. : */ : if ((Shutdown >= ImmediateShutdown || (FatalError && !SendStop)) && 0.00 : 647561: 83 3d 28 4a 53 00 02 cmpl $0x2,0x534a28(%rip) # b7bf90 0.00 : 647568: 7f 1d jg 647587 0.00 : 64756a: 80 3d f7 49 53 00 00 cmpb $0x0,0x5349f7(%rip) # b7bf68 0.00 : 647571: 0f 84 29 fb ff ff je 6470a0 0.00 : 647577: 44 8b 0d da 49 53 00 mov 0x5349da(%rip),%r9d # b7bf58 0.00 : 64757e: 45 85 c9 test %r9d,%r9d 0.00 : 647581: 0f 85 19 fb ff ff jne 6470a0 0.00 : 647587: 48 8b 05 12 4f 53 00 mov 0x534f12(%rip),%rax # b7c4a0 0.00 : 64758e: 48 85 c0 test %rax,%rax 0.00 : 647591: 0f 8e 09 fb ff ff jle 6470a0 0.00 : 647597: 48 29 c3 sub %rax,%rbx 0.00 : 64759a: 48 83 fb 04 cmp $0x4,%rbx 0.00 : 64759e: 0f 8e fc fa ff ff jle 6470a0 : AbortStartTime > 0 && : now - AbortStartTime >= SIGKILL_CHILDREN_AFTER_SECS) : { : /* We were gentle with them before. Not anymore */ : TerminateChildren(SIGKILL); 0.00 : 6475a4: bf 09 00 00 00 mov $0x9,%edi 0.00 : 6475a9: e8 e2 e5 ff ff callq 645b90 : : /* : * Additionally, unless we're recovering from a process crash, : * it's now the time for postmaster to abandon ship. : */ : if (!FatalError) 0.00 : 6475ae: 80 3d b3 49 53 00 00 cmpb $0x0,0x5349b3(%rip) # b7bf68 : now - AbortStartTime >= SIGKILL_CHILDREN_AFTER_SECS) : { : /* We were gentle with them before. Not anymore */ : TerminateChildren(SIGKILL); : /* reset flag so we don't SIGKILL again */ : AbortStartTime = 0; 0.00 : 6475b5: 48 c7 05 e0 4e 53 00 movq $0x0,0x534ee0(%rip) # b7c4a0 0.00 : 6475bc: 00 00 00 00 : : /* : * Additionally, unless we're recovering from a process crash, : * it's now the time for postmaster to abandon ship. : */ : if (!FatalError) 0.00 : 6475c0: 0f 85 da fa ff ff jne 6470a0 : * backends all be killed? probably not. : * : * MUST -- vadim 05-10-1999 : */ : : proc_exit(status); 0.00 : 6475c6: bf 01 00 00 00 mov $0x1,%edi 0.00 : 6475cb: e8 50 77 03 00 callq 67ed20 : : /* : * Unless it's a dead_end child, assign it a child slot number : */ : if (!bn->dead_end) : bn->child_slot = MyPMChildSlot = AssignPostmasterChildSlot(); 0.00 : 6475d0: e8 5b 7d 03 00 callq 67f330 0.00 : 6475d5: 89 05 3d 8f 57 00 mov %eax,0x578f3d(%rip) # bc0518 0.00 : 6475db: 89 43 10 mov %eax,0x10(%rbx) 0.00 : 6475de: e9 c4 fd ff ff jmpq 6473a7 0.00 : 6475e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : report_fork_failure_to_client(port, save_errno); : return STATUS_ERROR; : } : : /* in parent, successful fork */ : ereport(DEBUG2, 0.00 : 6475e8: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 6475ec: 44 89 e6 mov %r12d,%esi 0.00 : 6475ef: bf 78 04 8a 00 mov $0x8a0478,%edi 0.00 : 6475f4: 31 c0 xor %eax,%eax 0.00 : 6475f6: e8 15 33 13 00 callq 77a910 0.00 : 6475fb: 89 c7 mov %eax,%edi 0.00 : 6475fd: 31 c0 xor %eax,%eax 0.00 : 6475ff: e8 dc 2f 13 00 callq 77a5e0 0.00 : 647604: e9 dd fd ff ff jmpq 6473e6 0.00 : 647609: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * fails, we'll just try again later. Likewise for the checkpointer. : */ : if (pmState == PM_RUN || pmState == PM_RECOVERY || : pmState == PM_HOT_STANDBY) : { : if (CheckpointerPID == 0) 0.00 : 647610: 8b 05 5a 49 53 00 mov 0x53495a(%rip),%eax # b7bf70 0.00 : 647616: 85 c0 test %eax,%eax 0.00 : 647618: 0f 84 ea 01 00 00 je 647808 : CheckpointerPID = StartCheckpointer(); : if (BgWriterPID == 0) 0.00 : 64761e: 44 8b 35 4f 49 53 00 mov 0x53494f(%rip),%r14d # b7bf74 0.00 : 647625: 45 85 f6 test %r14d,%r14d 0.00 : 647628: 0f 85 5a fe ff ff jne 647488 : BgWriterPID = StartBackgroundWriter(); 0.00 : 64762e: bf 03 00 00 00 mov $0x3,%edi 0.00 : 647633: e8 f8 e8 ff ff callq 645f30 0.00 : 647638: 89 05 36 49 53 00 mov %eax,0x534936(%rip) # b7bf74 0.00 : 64763e: e9 45 fe ff ff jmpq 647488 0.00 : 647643: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 647648: 48 c7 05 dd 0f 52 00 movq $0xb68630,0x520fdd(%rip) # b68630 0.00 : 64764f: 30 86 b6 00 0.00 : 647653: b8 30 86 b6 00 mov $0xb68630,%eax 0.00 : 647658: e9 a7 fd ff ff jmpq 647404 : if (next_wakeup == 0 || this_wakeup < next_wakeup) : next_wakeup = this_wakeup; : } : } : : if (next_wakeup != 0) 0.00 : 64765d: 4d 85 e4 test %r12,%r12 0.00 : 647660: 74 36 je 647698 : { : long secs; : int microsecs; : : TimestampDifference(GetCurrentTimestamp(), next_wakeup, 0.00 : 647662: e8 09 ed 0f 00 callq 746370 0.00 : 647667: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 64766b: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 64766f: 48 89 c7 mov %rax,%rdi 0.00 : 647672: 4c 89 e6 mov %r12,%rsi 0.00 : 647675: e8 b6 8f 0f 00 callq 740630 : &secs, µsecs); : timeout->tv_sec = secs; 0.00 : 64767a: 48 8b 55 c0 mov -0x40(%rbp),%rdx : timeout->tv_usec = microsecs; 0.00 : 64767e: 48 63 45 cc movslq -0x34(%rbp),%rax : : /* Ensure we don't exceed one minute */ : if (timeout->tv_sec > 60) 0.00 : 647682: 48 83 fa 3c cmp $0x3c,%rdx : long secs; : int microsecs; : : TimestampDifference(GetCurrentTimestamp(), next_wakeup, : &secs, µsecs); : timeout->tv_sec = secs; 0.00 : 647686: 48 89 55 a0 mov %rdx,-0x60(%rbp) : timeout->tv_usec = microsecs; 0.00 : 64768a: 48 89 45 a8 mov %rax,-0x58(%rbp) : : /* Ensure we don't exceed one minute */ : if (timeout->tv_sec > 60) 0.00 : 64768e: 0f 8e 4d fb ff ff jle 6471e1 0.00 : 647694: 0f 1f 40 00 nopl 0x0(%rax) : timeout->tv_usec = 0; : } : } : else : { : timeout->tv_sec = 60; 0.00 : 647698: 48 c7 45 a0 3c 00 00 movq $0x3c,-0x60(%rbp) 0.00 : 64769f: 00 : timeout->tv_usec = 0; 0.00 : 6476a0: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 6476a7: 00 0.00 : 6476a8: e9 34 fb ff ff jmpq 6471e1 0.00 : 6476ad: 0f 1f 00 nopl (%rax) : */ : memcpy((char *) &rmask, (char *) &readmask, sizeof(fd_set)); : : if (pmState == PM_WAIT_DEAD_END) : { : PG_SETMASK(&UnBlockSig); 0.00 : 6476b0: 31 d2 xor %edx,%edx 0.00 : 6476b2: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 6476b7: bf 02 00 00 00 mov $0x2,%edi 0.00 : 6476bc: e8 ff 23 e2 ff callq 469ac0 : : pg_usleep(100000L); /* 100 msec seems reasonable */ 0.00 : 6476c1: bf a0 86 01 00 mov $0x186a0,%edi 0.00 : 6476c6: e8 85 50 16 00 callq 7ac750 : selres = 0; : : PG_SETMASK(&BlockSig); 0.00 : 6476cb: 31 d2 xor %edx,%edx 0.00 : 6476cd: be c0 f8 bb 00 mov $0xbbf8c0,%esi 0.00 : 6476d2: bf 02 00 00 00 mov $0x2,%edi 0.00 : 6476d7: e8 e4 23 e2 ff callq 469ac0 0.00 : 6476dc: e9 6f fd ff ff jmpq 647450 0.00 : 6476e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * no one runs cleaners with cutoff times of less than an hour ... : */ : now = time(NULL); : if (now - last_touch_time >= 58 * SECS_PER_MINUTE) : { : TouchSocketFiles(); 0.00 : 6476e8: e8 e3 4b f9 ff callq 5dc2d0 0.00 : 6476ed: 0f 1f 00 nopl (%rax) : TouchSocketLockFiles(); 0.00 : 6476f0: e8 ab e2 13 00 callq 7859a0 0.00 : 6476f5: 48 89 9d 70 fe ff ff mov %rbx,-0x190(%rbp) 0.00 : 6476fc: e9 60 fe ff ff jmpq 647561 0.00 : 647701: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : ExitPostmaster(1); : } : : if (StreamConnection(serverFd, port) != STATUS_OK) : { : if (port->sock != PGINVALID_SOCKET) 0.00 : 647708: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 64770c: 83 ff ff cmp $0xffffffff,%edi 0.00 : 64770f: 0f 84 0e fd ff ff je 647423 0.00 : 647715: e9 04 fd ff ff jmpq 64741e 0.00 : 64771a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Normal case: either there are no background workers at all, or we're in : * a shutdown sequence (during which we ignore bgworkers altogether). : */ : if (Shutdown > NoShutdown || 0.00 : 647720: 0f b6 05 1a 0f 52 00 movzbl 0x520f1a(%rip),%eax # b68641 0.00 : 647727: 84 c0 test %al,%al 0.00 : 647729: 75 0f jne 64773a 0.00 : 64772b: 0f b6 05 37 48 53 00 movzbl 0x534837(%rip),%eax # b7bf69 0.00 : 647732: 84 c0 test %al,%al 0.00 : 647734: 0f 84 61 fa ff ff je 64719b : timeout->tv_usec = 0; : } : return; : } : : if (StartWorkerNeeded) 0.00 : 64773a: 0f b6 05 00 0f 52 00 movzbl 0x520f00(%rip),%eax # b68641 0.00 : 647741: 84 c0 test %al,%al 0.00 : 647743: 0f 85 e1 01 00 00 jne 64792a : timeout->tv_sec = 0; : timeout->tv_usec = 0; : return; : } : : if (HaveCrashedWorker) 0.00 : 647749: 0f b6 05 19 48 53 00 movzbl 0x534819(%rip),%eax # b7bf69 0.00 : 647750: 84 c0 test %al,%al 0.00 : 647752: 0f 84 40 ff ff ff je 647698 : * When there are crashed bgworkers, we sleep just long enough that : * they are restarted when they request to be. Scan the list to : * determine the minimum of all wakeup times according to most recent : * crash time and requested restart interval. : */ : slist_foreach_modify(siter, &BackgroundWorkerList) 0.00 : 647758: 48 8b 05 81 43 53 00 mov 0x534381(%rip),%rax # b7bae0 0.00 : 64775f: 31 d2 xor %edx,%edx 0.00 : 647761: 48 c7 45 90 e0 ba b7 movq $0xb7bae0,-0x70(%rbp) 0.00 : 647768: 00 0.00 : 647769: 48 85 c0 test %rax,%rax 0.00 : 64776c: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 647770: 74 03 je 647775 0.00 : 647772: 48 8b 10 mov (%rax),%rdx 0.00 : 647775: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.00 : 647779: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 64777d: 48 85 d2 test %rdx,%rdx 0.00 : 647780: 0f 84 12 ff ff ff je 647698 0.00 : 647786: 31 db xor %ebx,%ebx 0.00 : 647788: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 64778f: 00 : RegisteredBgWorker *rw; : TimestampTz this_wakeup; : : rw = slist_container(RegisteredBgWorker, rw_lnode, siter.cur); : : if (rw->rw_crashed_at == 0) 0.00 : 647790: 48 8b 4a f0 mov -0x10(%rdx),%rcx : slist_foreach_modify(siter, &BackgroundWorkerList) : { : RegisteredBgWorker *rw; : TimestampTz this_wakeup; : : rw = slist_container(RegisteredBgWorker, rw_lnode, siter.cur); 0.00 : 647794: 48 8d b2 f8 fe ff ff lea -0x108(%rdx),%rsi : : if (rw->rw_crashed_at == 0) 0.00 : 64779b: 48 85 c9 test %rcx,%rcx 0.00 : 64779e: 74 60 je 647800 : continue; : : if (rw->rw_worker.bgw_restart_time == BGW_NEVER_RESTART 0.00 : 6477a0: 8b 82 40 ff ff ff mov -0xc0(%rdx),%eax 0.00 : 6477a6: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 6477a9: 0f 84 41 01 00 00 je 6478f0 0.00 : 6477af: 80 be 04 01 00 00 00 cmpb $0x0,0x104(%rsi) 0.00 : 6477b6: 0f 85 34 01 00 00 jne 6478f0 : { : ForgetBackgroundWorker(&siter); : continue; : } : : this_wakeup = TimestampTzPlusMilliseconds(rw->rw_crashed_at, 0.00 : 6477bc: 48 98 cltq 0.00 : 6477be: 48 69 c0 40 42 0f 00 imul $0xf4240,%rax,%rax : 1000L * rw->rw_worker.bgw_restart_time); : if (next_wakeup == 0 || this_wakeup < next_wakeup) 0.00 : 6477c5: 48 85 db test %rbx,%rbx : { : ForgetBackgroundWorker(&siter); : continue; : } : : this_wakeup = TimestampTzPlusMilliseconds(rw->rw_crashed_at, 0.00 : 6477c8: 4c 8d 24 08 lea (%rax,%rcx,1),%r12 : 1000L * rw->rw_worker.bgw_restart_time); : if (next_wakeup == 0 || this_wakeup < next_wakeup) 0.00 : 6477cc: 74 0a je 6477d8 0.00 : 6477ce: 49 39 dc cmp %rbx,%r12 0.00 : 6477d1: 7d 2d jge 647800 0.00 : 6477d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * When there are crashed bgworkers, we sleep just long enough that : * they are restarted when they request to be. Scan the list to : * determine the minimum of all wakeup times according to most recent : * crash time and requested restart interval. : */ : slist_foreach_modify(siter, &BackgroundWorkerList) 0.00 : 6477d8: 48 89 55 90 mov %rdx,-0x70(%rbp) 0.00 : 6477dc: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 6477e0: 31 c0 xor %eax,%eax 0.00 : 6477e2: 48 85 d2 test %rdx,%rdx 0.00 : 6477e5: 48 89 55 80 mov %rdx,-0x80(%rbp) 0.00 : 6477e9: 74 03 je 6477ee 0.00 : 6477eb: 48 8b 02 mov (%rdx),%rax 0.00 : 6477ee: 48 85 d2 test %rdx,%rdx 0.00 : 6477f1: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 6477f5: 0f 84 62 fe ff ff je 64765d 0.00 : 6477fb: 4c 89 e3 mov %r12,%rbx 0.00 : 6477fe: eb 90 jmp 647790 : continue; : } : : this_wakeup = TimestampTzPlusMilliseconds(rw->rw_crashed_at, : 1000L * rw->rw_worker.bgw_restart_time); : if (next_wakeup == 0 || this_wakeup < next_wakeup) 0.00 : 647800: 49 89 dc mov %rbx,%r12 0.00 : 647803: eb d3 jmp 6477d8 0.00 : 647805: 0f 1f 00 nopl (%rax) : */ : if (pmState == PM_RUN || pmState == PM_RECOVERY || : pmState == PM_HOT_STANDBY) : { : if (CheckpointerPID == 0) : CheckpointerPID = StartCheckpointer(); 0.00 : 647808: bf 04 00 00 00 mov $0x4,%edi 0.00 : 64780d: 0f 1f 00 nopl (%rax) 0.00 : 647810: e8 1b e7 ff ff callq 645f30 0.00 : 647815: 89 05 55 47 53 00 mov %eax,0x534755(%rip) # b7bf70 0.00 : 64781b: e9 fe fd ff ff jmpq 64761e : } : : /* Now check the select() result */ : if (selres < 0) : { : if (errno != EINTR && errno != EWOULDBLOCK) 0.00 : 647820: e8 9b 24 e2 ff callq 469cc0 <__errno_location@plt> 0.00 : 647825: 8b 00 mov (%rax),%eax 0.00 : 647827: 83 f8 04 cmp $0x4,%eax 0.00 : 64782a: 0f 84 20 fc ff ff je 647450 0.00 : 647830: 83 f8 0b cmp $0xb,%eax 0.00 : 647833: 0f 84 17 fc ff ff je 647450 : { : ereport(LOG, 0.00 : 647839: 45 31 c0 xor %r8d,%r8d 0.00 : 64783c: b9 d2 0f 8a 00 mov $0x8a0fd2,%ecx 0.00 : 647841: ba 0c 06 00 00 mov $0x60c,%edx 0.00 : 647846: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 64784b: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 647850: e8 6b 32 13 00 callq 77aac0 0.00 : 647855: 84 c0 test %al,%al 0.00 : 647857: 0f 85 13 04 00 00 jne 647c70 : */ : if (!FatalError) : ExitPostmaster(1); : } : } : } 0.00 : 64785d: 48 81 c4 78 01 00 00 add $0x178,%rsp 0.00 : 647864: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 647869: 5b pop %rbx 0.00 : 64786a: 41 5c pop %r12 0.00 : 64786c: 41 5d pop %r13 0.00 : 64786e: 41 5e pop %r14 0.00 : 647870: 41 5f pop %r15 0.00 : 647872: c9 leaveq 0.00 : 647873: c3 retq 0.00 : 647874: 0f 1f 40 00 nopl 0x0(%rax) : } : } : : /* If we have lost the log collector, try to start a new one */ : if (SysLoggerPID == 0 && Logging_collector) : SysLoggerPID = SysLogger_Start(); 0.00 : 647878: e8 f3 48 00 00 callq 64c170 0.00 : 64787d: 89 05 d9 46 53 00 mov %eax,0x5346d9(%rip) # b7bf5c 0.00 : 647883: e9 df fb ff ff jmpq 647467 0.00 : 647888: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 64788f: 00 : * If we have lost the autovacuum launcher, try to start a new one. We : * don't want autovacuum to run in binary upgrade mode because : * autovacuum might update relfrozenxid for empty tables before the : * physical files are put in place. : */ : if (!IsBinaryUpgrade && AutoVacPID == 0 && 0.00 : 647890: e8 1b 1e ff ff callq 6396b0 0.00 : 647895: 84 c0 test %al,%al 0.00 : 647897: 75 0e jne 6478a7 0.00 : 647899: 8b 05 e1 46 53 00 mov 0x5346e1(%rip),%eax # b7bf80 0.00 : 64789f: 85 c0 test %eax,%eax 0.00 : 6478a1: 0f 84 13 fc ff ff je 6474ba 0.00 : 6478a7: 83 3d b6 46 53 00 04 cmpl $0x4,0x5346b6(%rip) # b7bf64 0.00 : 6478ae: 0f 85 06 fc ff ff jne 6474ba : (AutoVacuumingActive() || start_autovac_launcher) && : pmState == PM_RUN) : { : AutoVacPID = StartAutoVacLauncher(); 0.00 : 6478b4: e8 27 4b ff ff callq 63c3e0 : if (AutoVacPID != 0) 0.00 : 6478b9: 85 c0 test %eax,%eax : */ : if (!IsBinaryUpgrade && AutoVacPID == 0 && : (AutoVacuumingActive() || start_autovac_launcher) && : pmState == PM_RUN) : { : AutoVacPID = StartAutoVacLauncher(); 0.00 : 6478bb: 89 05 bb 46 53 00 mov %eax,0x5346bb(%rip) # b7bf7c : if (AutoVacPID != 0) 0.00 : 6478c1: 0f 84 f3 fb ff ff je 6474ba : start_autovac_launcher = false; /* signal processed */ 0.00 : 6478c7: c7 05 af 46 53 00 00 movl $0x0,0x5346af(%rip) # b7bf80 0.00 : 6478ce: 00 00 00 0.00 : 6478d1: e9 e4 fb ff ff jmpq 6474ba 0.00 : 6478d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6478dd: 00 00 00 : /* If we need to signal the autovacuum launcher, do so now */ : if (avlauncher_needs_signal) : { : avlauncher_needs_signal = false; : if (AutoVacPID != 0) : kill(AutoVacPID, SIGUSR2); 0.00 : 6478e0: be 0c 00 00 00 mov $0xc,%esi 0.00 : 6478e5: e8 a6 21 e2 ff callq 469a90 0.00 : 6478ea: e9 3a fc ff ff jmpq 647529 0.00 : 6478ef: 90 nop : continue; : : if (rw->rw_worker.bgw_restart_time == BGW_NEVER_RESTART : || rw->rw_terminate) : { : ForgetBackgroundWorker(&siter); 0.00 : 6478f0: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 6478f4: 49 89 dc mov %rbx,%r12 0.00 : 6478f7: e8 b4 58 ff ff callq 63d1b0 0.00 : 6478fc: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 647900: e9 d3 fe ff ff jmpq 6477d8 : * Likewise, if we have lost the walwriter process, try to start a new : * one. But this is needed only in normal operation (else we cannot : * be writing any new WAL). : */ : if (WalWriterPID == 0 && pmState == PM_RUN) : WalWriterPID = StartWalWriter(); 0.00 : 647905: bf 05 00 00 00 mov $0x5,%edi 0.00 : 64790a: e8 21 e6 ff ff callq 645f30 0.00 : 64790f: 89 05 63 46 53 00 mov %eax,0x534663(%rip) # b7bf78 0.00 : 647915: e9 87 fb ff ff jmpq 6474a1 : if (XLogArchivingActive() && PgArchPID == 0 && pmState == PM_RUN) : PgArchPID = pgarch_start(); : : /* If we have lost the stats collector, try to start a new one */ : if (PgStatPID == 0 && pmState == PM_RUN) : PgStatPID = pgstat_start(); 0.00 : 64791a: e8 d1 cf ff ff callq 6448f0 0.00 : 64791f: 89 05 63 46 53 00 mov %eax,0x534663(%rip) # b7bf88 0.00 : 647925: e9 df fb ff ff jmpq 647509 : return; : } : : if (StartWorkerNeeded) : { : timeout->tv_sec = 0; 0.00 : 64792a: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 647931: 00 : timeout->tv_usec = 0; 0.00 : 647932: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 647939: 00 0.00 : 64793a: e9 a2 f8 ff ff jmpq 6471e1 : #endif /* EXEC_BACKEND */ : : if (pid < 0) : { : /* in parent, fork failed */ : int save_errno = errno; 0.00 : 64793f: e8 7c 23 e2 ff callq 469cc0 <__errno_location@plt> 0.00 : 647944: 49 89 c4 mov %rax,%r12 0.00 : 647947: 8b 00 mov (%rax),%eax 0.00 : 647949: 89 85 7c fe ff ff mov %eax,-0x184(%rbp) : : if (!bn->dead_end) 0.00 : 64794f: 80 7b 18 00 cmpb $0x0,0x18(%rbx) 0.00 : 647953: 0f 84 ad 00 00 00 je 647a06 : (void) ReleasePostmasterChildSlot(bn->child_slot); : free(bn); 0.00 : 647959: 48 89 df mov %rbx,%rdi 0.00 : 64795c: e8 bf 1e e2 ff callq 469820 : errno = save_errno; 0.00 : 647961: 8b 85 7c fe ff ff mov -0x184(%rbp),%eax : ereport(LOG, 0.00 : 647967: 45 31 c0 xor %r8d,%r8d 0.00 : 64796a: b9 e8 0f 8a 00 mov $0x8a0fe8,%ecx 0.00 : 64796f: ba df 0e 00 00 mov $0xedf,%edx 0.00 : 647974: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 647979: bf 0f 00 00 00 mov $0xf,%edi : int save_errno = errno; : : if (!bn->dead_end) : (void) ReleasePostmasterChildSlot(bn->child_slot); : free(bn); : errno = save_errno; 0.00 : 64797e: 41 89 04 24 mov %eax,(%r12) : ereport(LOG, 0.00 : 647982: e8 39 31 13 00 callq 77aac0 0.00 : 647987: 84 c0 test %al,%al 0.00 : 647989: 75 64 jne 6479ef : (errmsg("could not fork new process for connection: %m"))); : report_fork_failure_to_client(port, save_errno); 0.00 : 64798b: 8b b5 7c fe ff ff mov -0x184(%rbp),%esi 0.00 : 647991: 4c 89 ef mov %r13,%rdi 0.00 : 647994: e8 97 f5 ff ff callq 646f30 0.00 : 647999: e9 7c fa ff ff jmpq 64741a : { : Port *port; : : if (!(port = (Port *) calloc(1, sizeof(Port)))) : { : ereport(LOG, 0.00 : 64799e: 45 31 c0 xor %r8d,%r8d 0.00 : 6479a1: b9 dd 0f 8a 00 mov $0x8a0fdd,%ecx 0.00 : 6479a6: ba 79 08 00 00 mov $0x879,%edx 0.00 : 6479ab: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6479b0: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 6479b5: e8 06 31 13 00 callq 77aac0 0.00 : 6479ba: 84 c0 test %al,%al 0.00 : 6479bc: 0f 84 04 fc ff ff je 6475c6 0.00 : 6479c2: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 6479c7: 31 c0 xor %eax,%eax 0.00 : 6479c9: e8 d2 4e 13 00 callq 77c8a0 0.00 : 6479ce: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 6479d3: 89 c3 mov %eax,%ebx 0.00 : 6479d5: e8 76 53 13 00 callq 77cd50 0.00 : 6479da: 89 de mov %ebx,%esi 0.00 : 6479dc: 89 c7 mov %eax,%edi 0.00 : 6479de: 31 c0 xor %eax,%eax 0.00 : 6479e0: e8 fb 2b 13 00 callq 77a5e0 : * backends all be killed? probably not. : * : * MUST -- vadim 05-10-1999 : */ : : proc_exit(status); 0.00 : 6479e5: bf 01 00 00 00 mov $0x1,%edi 0.00 : 6479ea: e8 31 73 03 00 callq 67ed20 : : if (!bn->dead_end) : (void) ReleasePostmasterChildSlot(bn->child_slot); : free(bn); : errno = save_errno; : ereport(LOG, 0.00 : 6479ef: bf 48 04 8a 00 mov $0x8a0448,%edi 0.00 : 6479f4: 31 c0 xor %eax,%eax 0.00 : 6479f6: e8 a5 4e 13 00 callq 77c8a0 0.00 : 6479fb: 89 c7 mov %eax,%edi 0.00 : 6479fd: 31 c0 xor %eax,%eax 0.00 : 6479ff: e8 dc 2b 13 00 callq 77a5e0 0.00 : 647a04: eb 85 jmp 64798b : { : /* in parent, fork failed */ : int save_errno = errno; : : if (!bn->dead_end) : (void) ReleasePostmasterChildSlot(bn->child_slot); 0.00 : 647a06: 8b 7b 10 mov 0x10(%rbx),%edi 0.00 : 647a09: e8 92 77 03 00 callq 67f1a0 0.00 : 647a0e: 66 90 xchg %ax,%ax 0.00 : 647a10: e9 44 ff ff ff jmpq 647959 : start_autovac_launcher = false; /* signal processed */ : } : : /* If we have lost the archiver, try to start a new one */ : if (XLogArchivingActive() && PgArchPID == 0 && pmState == PM_RUN) : PgArchPID = pgarch_start(); 0.00 : 647a15: e8 16 7b ff ff callq 63f530 0.00 : 647a1a: 89 05 64 45 53 00 mov %eax,0x534564(%rip) # b7bf84 0.00 : 647a20: e9 cb fa ff ff jmpq 6474f0 : pid = backend_forkexec(port); : #else /* !EXEC_BACKEND */ : pid = fork_process(); : if (pid == 0) /* child */ : { : free(bn); 0.00 : 647a25: 48 89 df mov %rbx,%rdi 0.00 : 647a28: e8 f3 1d e2 ff callq 469820 : /* : * Let's clean up ourselves as the postmaster child, and close the : * postmaster's listen sockets. (In EXEC_BACKEND case this is all : * done in SubPostmasterMain.) : */ : IsUnderPostmaster = true; /* we are a postmaster subprocess now */ 0.00 : 647a2d: c6 05 89 26 57 00 01 movb $0x1,0x572689(%rip) # bba0bd : : MyProcPid = getpid(); /* reset MyProcPid */ 0.00 : 647a34: e8 17 1d e2 ff callq 469750 : : MyStartTime = time(NULL); 0.00 : 647a39: 31 ff xor %edi,%edi : * postmaster's listen sockets. (In EXEC_BACKEND case this is all : * done in SubPostmasterMain.) : */ : IsUnderPostmaster = true; /* we are a postmaster subprocess now */ : : MyProcPid = getpid(); /* reset MyProcPid */ 0.00 : 647a3b: 89 05 a3 82 57 00 mov %eax,0x5782a3(%rip) # bbfce4 : : MyStartTime = time(NULL); 0.00 : 647a41: e8 5a 27 e2 ff callq 46a1a0 0.00 : 647a46: 48 89 05 bb 8a 57 00 mov %rax,0x578abb(%rip) # bc0508 : : /* We don't want the postmaster's proc_exit() handlers */ : on_exit_reset(); 0.00 : 647a4d: e8 ee 6e 03 00 callq 67e940 : : /* Close the postmaster's sockets */ : ClosePostmasterPorts(false); 0.00 : 647a52: 31 ff xor %edi,%edi 0.00 : 647a54: e8 c7 d8 ff ff callq 645320 : : /* Perform additional initialization and collect startup packet */ : BackendInitialize(port); 0.00 : 647a59: 4c 89 ef mov %r13,%rdi 0.00 : 647a5c: e8 af f0 ff ff callq 646b10 : /* : * Don't want backend to be able to see the postmaster random number : * generator state. We have to clobber the static random_seed *and* start : * a new random sequence in the random() library function. : */ : random_seed = 0; 0.00 : 647a61: c7 05 01 45 53 00 00 movl $0x0,0x534501(%rip) # b7bf6c 0.00 : 647a68: 00 00 00 : random_start_time.tv_usec = 0; 0.00 : 647a6b: 48 c7 05 42 4a 53 00 movq $0x0,0x534a42(%rip) # b7c4b8 0.00 : 647a72: 00 00 00 00 : /* slightly hacky way to convert timestamptz into integers */ : TimestampDifference(0, port->SessionStartTime, &secs, &usecs); 0.00 : 647a76: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 647a7a: 49 8b b5 78 01 00 00 mov 0x178(%r13),%rsi 0.00 : 647a81: 48 8d 55 b8 lea -0x48(%rbp),%rdx 0.00 : 647a85: 31 ff xor %edi,%edi 0.00 : 647a87: e8 a4 8b 0f 00 callq 740630 : srandom((unsigned int) (MyProcPid ^ (usecs << 12) ^ secs)); 0.00 : 647a8c: 8b 7d c0 mov -0x40(%rbp),%edi 0.00 : 647a8f: c1 e7 0c shl $0xc,%edi 0.00 : 647a92: 33 7d b8 xor -0x48(%rbp),%edi 0.00 : 647a95: 33 3d 49 82 57 00 xor 0x578249(%rip),%edi # bbfce4 0.00 : 647a9b: e8 a0 1c e2 ff callq 469740 : * The maximum possible number of commandline arguments that could come : * from ExtraOptions is (strlen(ExtraOptions) + 1) / 2; see : * pg_split_opts(). : */ : maxac = 2; /* for fixed args supplied below */ : maxac += (strlen(ExtraOptions) + 1) / 2; 0.00 : 647aa0: b9 a0 c0 b7 00 mov $0xb7c0a0,%ecx 0.00 : 647aa5: 8b 01 mov (%rcx),%eax 0.00 : 647aa7: 48 83 c1 04 add $0x4,%rcx 0.00 : 647aab: 8d 90 ff fe fe fe lea -0x1010101(%rax),%edx 0.00 : 647ab1: f7 d0 not %eax 0.00 : 647ab3: 21 c2 and %eax,%edx 0.00 : 647ab5: 81 e2 80 80 80 80 and $0x80808080,%edx 0.00 : 647abb: 74 e8 je 647aa5 0.00 : 647abd: 89 d0 mov %edx,%eax : : av = (char **) MemoryContextAlloc(TopMemoryContext, 0.00 : 647abf: 48 8b 3d a2 2d 57 00 mov 0x572da2(%rip),%rdi # bba868 : * The maximum possible number of commandline arguments that could come : * from ExtraOptions is (strlen(ExtraOptions) + 1) / 2; see : * pg_split_opts(). : */ : maxac = 2; /* for fixed args supplied below */ : maxac += (strlen(ExtraOptions) + 1) / 2; 0.00 : 647ac6: c1 e8 10 shr $0x10,%eax 0.00 : 647ac9: f7 c2 80 80 00 00 test $0x8080,%edx 0.00 : 647acf: 0f 44 d0 cmove %eax,%edx 0.00 : 647ad2: 48 8d 41 02 lea 0x2(%rcx),%rax 0.00 : 647ad6: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 647ada: 00 d2 add %dl,%dl 0.00 : 647adc: 48 83 d9 03 sbb $0x3,%rcx : : av = (char **) MemoryContextAlloc(TopMemoryContext, 0.00 : 647ae0: 48 81 e9 9f c0 b7 00 sub $0xb7c09f,%rcx 0.00 : 647ae7: 48 d1 e9 shr %rcx 0.00 : 647aea: 8d 71 02 lea 0x2(%rcx),%esi 0.00 : 647aed: 48 63 f6 movslq %esi,%rsi 0.00 : 647af0: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 647af4: e8 97 13 15 00 callq 798e90 : : /* : * Pass any backend switches specified with -o on the postmaster's own : * command line. We assume these are secure. : */ : pg_split_opts(av, &ac, ExtraOptions); 0.00 : 647af9: 48 8d 75 cc lea -0x34(%rbp),%rsi : : av = (char **) MemoryContextAlloc(TopMemoryContext, : maxac * sizeof(char *)); : ac = 0; : : av[ac++] = "postgres"; 0.00 : 647afd: 48 c7 00 40 fa 89 00 movq $0x89fa40,(%rax) : : /* : * Pass any backend switches specified with -o on the postmaster's own : * command line. We assume these are secure. : */ : pg_split_opts(av, &ac, ExtraOptions); 0.00 : 647b04: 48 89 c7 mov %rax,%rdi 0.00 : 647b07: ba a0 c0 b7 00 mov $0xb7c0a0,%edx : * pg_split_opts(). : */ : maxac = 2; /* for fixed args supplied below */ : maxac += (strlen(ExtraOptions) + 1) / 2; : : av = (char **) MemoryContextAlloc(TopMemoryContext, 0.00 : 647b0c: 49 89 c4 mov %rax,%r12 : maxac * sizeof(char *)); : ac = 0; : : av[ac++] = "postgres"; 0.00 : 647b0f: c7 45 cc 01 00 00 00 movl $0x1,-0x34(%rbp) : : /* : * Pass any backend switches specified with -o on the postmaster's own : * command line. We assume these are secure. : */ : pg_split_opts(av, &ac, ExtraOptions); 0.00 : 647b16: e8 55 ed 13 00 callq 786870 : : av[ac] = NULL; 0.00 : 647b1b: 48 63 45 cc movslq -0x34(%rbp),%rax : Assert(ac < maxac); : : /* : * Debug: print arguments being passed to backend : */ : ereport(DEBUG3, 0.00 : 647b1f: 45 31 c0 xor %r8d,%r8d 0.00 : 647b22: b9 62 10 8a 00 mov $0x8a1062,%ecx 0.00 : 647b27: ba 09 10 00 00 mov $0x1009,%edx 0.00 : 647b2c: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 647b31: bf 0c 00 00 00 mov $0xc,%edi : * Pass any backend switches specified with -o on the postmaster's own : * command line. We assume these are secure. : */ : pg_split_opts(av, &ac, ExtraOptions); : : av[ac] = NULL; 0.00 : 647b36: 49 c7 04 c4 00 00 00 movq $0x0,(%r12,%rax,8) 0.00 : 647b3d: 00 : Assert(ac < maxac); : : /* : * Debug: print arguments being passed to backend : */ : ereport(DEBUG3, 0.00 : 647b3e: e8 7d 2f 13 00 callq 77aac0 0.00 : 647b43: 84 c0 test %al,%al 0.00 : 647b45: 0f 85 fd 00 00 00 jne 647c48 : (errmsg_internal("%s child[%d]: starting with (", : progname, (int) getpid()))); : for (i = 0; i < ac; ++i) 0.00 : 647b4b: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 647b4e: 85 c0 test %eax,%eax 0.00 : 647b50: 7e 5a jle 647bac 0.00 : 647b52: 31 db xor %ebx,%ebx 0.00 : 647b54: eb 12 jmp 647b68 0.00 : 647b56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 647b5d: 00 00 00 0.00 : 647b60: 83 c3 01 add $0x1,%ebx 0.00 : 647b63: 3b 5d cc cmp -0x34(%rbp),%ebx 0.00 : 647b66: 7d 44 jge 647bac : ereport(DEBUG3, 0.00 : 647b68: 45 31 c0 xor %r8d,%r8d 0.00 : 647b6b: b9 62 10 8a 00 mov $0x8a1062,%ecx 0.00 : 647b70: ba 0c 10 00 00 mov $0x100c,%edx 0.00 : 647b75: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 647b7a: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 647b7f: e8 3c 2f 13 00 callq 77aac0 0.00 : 647b84: 84 c0 test %al,%al 0.00 : 647b86: 74 d8 je 647b60 0.00 : 647b88: 48 63 c3 movslq %ebx,%rax 0.00 : 647b8b: bf 18 fb 89 00 mov $0x89fb18,%edi : * Debug: print arguments being passed to backend : */ : ereport(DEBUG3, : (errmsg_internal("%s child[%d]: starting with (", : progname, (int) getpid()))); : for (i = 0; i < ac; ++i) 0.00 : 647b90: 83 c3 01 add $0x1,%ebx : ereport(DEBUG3, 0.00 : 647b93: 49 8b 34 c4 mov (%r12,%rax,8),%rsi 0.00 : 647b97: 31 c0 xor %eax,%eax 0.00 : 647b99: e8 72 2d 13 00 callq 77a910 0.00 : 647b9e: 89 c7 mov %eax,%edi 0.00 : 647ba0: 31 c0 xor %eax,%eax 0.00 : 647ba2: e8 39 2a 13 00 callq 77a5e0 : * Debug: print arguments being passed to backend : */ : ereport(DEBUG3, : (errmsg_internal("%s child[%d]: starting with (", : progname, (int) getpid()))); : for (i = 0; i < ac; ++i) 0.00 : 647ba7: 3b 5d cc cmp -0x34(%rbp),%ebx 0.00 : 647baa: 7c bc jl 647b68 : ereport(DEBUG3, : (errmsg_internal("\t%s", av[i]))); : ereport(DEBUG3, 0.00 : 647bac: 45 31 c0 xor %r8d,%r8d 0.00 : 647baf: b9 62 10 8a 00 mov $0x8a1062,%ecx 0.00 : 647bb4: ba 0e 10 00 00 mov $0x100e,%edx 0.00 : 647bb9: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 647bbe: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 647bc3: e8 f8 2e 13 00 callq 77aac0 0.00 : 647bc8: 84 c0 test %al,%al 0.00 : 647bca: 0f 85 c3 00 00 00 jne 647c93 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 647bd0: 48 8b 05 91 2c 57 00 mov 0x572c91(%rip),%rax # bba868 : * Make sure we aren't in PostmasterContext anymore. (We can't delete it : * just yet, though, because InitPostgres will need the HBA data.) : */ : MemoryContextSwitchTo(TopMemoryContext); : : PostgresMain(ac, av, port->database_name, port->user_name); 0.00 : 647bd7: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 647bda: 4c 89 e6 mov %r12,%rsi 0.00 : 647bdd: 48 89 05 7c 2c 57 00 mov %rax,0x572c7c(%rip) # bba860 0.00 : 647be4: 49 8b 8d 50 01 00 00 mov 0x150(%r13),%rcx 0.00 : 647beb: 49 8b 95 48 01 00 00 mov 0x148(%r13),%rdx 0.00 : 647bf2: e8 99 6a 05 00 callq 69e690 : * handle failure cleanly. : */ : bn = (Backend *) malloc(sizeof(Backend)); : if (!bn) : { : ereport(LOG, 0.00 : 647bf7: 45 31 c0 xor %r8d,%r8d 0.00 : 647bfa: b9 e8 0f 8a 00 mov $0x8a0fe8,%ecx 0.00 : 647bff: ba 98 0e 00 00 mov $0xe98,%edx 0.00 : 647c04: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 647c09: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 647c0e: e8 ad 2e 13 00 callq 77aac0 0.00 : 647c13: 84 c0 test %al,%al 0.00 : 647c15: 0f 84 ff f7 ff ff je 64741a 0.00 : 647c1b: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 647c20: 31 c0 xor %eax,%eax 0.00 : 647c22: e8 79 4c 13 00 callq 77c8a0 0.00 : 647c27: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 647c2c: 89 c3 mov %eax,%ebx 0.00 : 647c2e: e8 1d 51 13 00 callq 77cd50 0.00 : 647c33: 89 de mov %ebx,%esi 0.00 : 647c35: 89 c7 mov %eax,%edi 0.00 : 647c37: 31 c0 xor %eax,%eax 0.00 : 647c39: e8 a2 29 13 00 callq 77a5e0 0.00 : 647c3e: e9 d7 f7 ff ff jmpq 64741a 0.00 : 647c43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Assert(ac < maxac); : : /* : * Debug: print arguments being passed to backend : */ : ereport(DEBUG3, 0.00 : 647c48: e8 03 1b e2 ff callq 469750 0.00 : 647c4d: 48 8b 35 6c 7d 57 00 mov 0x577d6c(%rip),%rsi # bbf9c0 0.00 : 647c54: 89 c2 mov %eax,%edx 0.00 : 647c56: bf fa fa 89 00 mov $0x89fafa,%edi 0.00 : 647c5b: 31 c0 xor %eax,%eax 0.00 : 647c5d: e8 ae 2c 13 00 callq 77a910 0.00 : 647c62: 89 c7 mov %eax,%edi 0.00 : 647c64: 31 c0 xor %eax,%eax 0.00 : 647c66: e8 75 29 13 00 callq 77a5e0 0.00 : 647c6b: e9 db fe ff ff jmpq 647b4b : /* Now check the select() result */ : if (selres < 0) : { : if (errno != EINTR && errno != EWOULDBLOCK) : { : ereport(LOG, 0.00 : 647c70: bf 20 04 8a 00 mov $0x8a0420,%edi 0.00 : 647c75: 31 c0 xor %eax,%eax 0.00 : 647c77: e8 24 4c 13 00 callq 77c8a0 0.00 : 647c7c: 89 c3 mov %eax,%ebx 0.00 : 647c7e: e8 cd 4d 13 00 callq 77ca50 0.00 : 647c83: 89 de mov %ebx,%esi 0.00 : 647c85: 89 c7 mov %eax,%edi 0.00 : 647c87: 31 c0 xor %eax,%eax 0.00 : 647c89: e8 52 29 13 00 callq 77a5e0 0.00 : 647c8e: e9 ca fb ff ff jmpq 64785d : (errmsg_internal("%s child[%d]: starting with (", : progname, (int) getpid()))); : for (i = 0; i < ac; ++i) : ereport(DEBUG3, : (errmsg_internal("\t%s", av[i]))); : ereport(DEBUG3, 0.00 : 647c93: bf 45 0d 88 00 mov $0x880d45,%edi 0.00 : 647c98: 31 c0 xor %eax,%eax 0.00 : 647c9a: e8 71 2c 13 00 callq 77a910 0.00 : 647c9f: 89 c7 mov %eax,%edi 0.00 : 647ca1: 31 c0 xor %eax,%eax 0.00 : 647ca3: e8 38 29 13 00 callq 77a5e0 0.00 : 647ca8: e9 23 ff ff ff jmpq 647bd0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/port/atomics/generic.h:50 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000677430 : : * allocs if non-NULL pointers are passed. The alloc count is reset after : * being read. : */ : int : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { 0.00 : 677430: 55 push %rbp : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677431: 48 8b 15 c8 5c 50 00 mov 0x505cc8(%rip),%rdx # b7d100 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 50.00 : 677438: b8 01 00 00 00 mov $0x1,%eax : * allocs if non-NULL pointers are passed. The alloc count is reset after : * being read. : */ : int : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { 0.00 : 67743d: 48 89 e5 mov %rsp,%rbp 0.00 : 677440: 41 54 push %r12 0.00 : 677442: 49 89 f4 mov %rsi,%r12 0.00 : 677445: 53 push %rbx 0.00 : 677446: 48 89 fb mov %rdi,%rbx 0.00 : 677449: f0 86 02 lock xchg %al,(%rdx) : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 67744c: 84 c0 test %al,%al 0.00 : 67744e: 75 60 jne 6774b0 : result = pg_atomic_read_u32(&StrategyControl->nextVictimBuffer) % NBuffers; 0.00 : 677450: 48 8b 15 a9 5c 50 00 mov 0x505ca9(%rip),%rdx # b7d100 : if (complete_passes) 0.00 : 677457: 48 85 db test %rbx,%rbx : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : result = pg_atomic_read_u32(&StrategyControl->nextVictimBuffer) % NBuffers; 0.00 : 67745a: 8b 3d c0 16 4f 00 mov 0x4f16c0(%rip),%edi # b68b20 : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/port/atomics/generic.h:50 50.00 : 677460: 44 8b 42 04 mov 0x4(%rdx),%r8d : if (complete_passes) 0.00 : 677464: 74 05 je 67746b 0.00 : 677466: 8b 42 10 mov 0x10(%rdx),%eax : *complete_passes = pg_atomic_read_u32(&StrategyControl->completePasses); 0.00 : 677469: 89 03 mov %eax,(%rbx) : if (num_buf_alloc) 0.00 : 67746b: 4d 85 e4 test %r12,%r12 0.00 : 67746e: 74 25 je 677495 : { : *num_buf_alloc = pg_atomic_exchange_u32(&StrategyControl->numBufferAllocs, 0); 0.00 : 677470: 48 83 c2 14 add $0x14,%rdx : : /* : * Perform cmpxchg and use the zero flag which it implicitly sets when : * equal to measure the success. : */ : __asm__ __volatile__( 0.00 : 677474: 31 f6 xor %esi,%esi 0.00 : 677476: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67747d: 00 00 00 0.00 : 677480: 8b 0a mov (%rdx),%ecx 0.00 : 677482: 89 c8 mov %ecx,%eax 0.00 : 677484: f0 0f b1 32 lock cmpxchg %esi,(%rdx) 0.00 : 677488: 41 0f 94 c1 sete %r9b : { : uint32 old; : while (true) : { : old = pg_atomic_read_u32_impl(ptr); : if (pg_atomic_compare_exchange_u32_impl(ptr, &old, xchg_)) 0.00 : 67748c: 45 84 c9 test %r9b,%r9b 0.00 : 67748f: 74 ef je 677480 0.00 : 677491: 41 89 04 24 mov %eax,(%r12) : } : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 677495: 48 8b 05 64 5c 50 00 mov 0x505c64(%rip),%rax # b7d100 0.00 : 67749c: 31 d2 xor %edx,%edx 0.00 : 67749e: c6 00 00 movb $0x0,(%rax) 0.00 : 6774a1: 44 89 c0 mov %r8d,%eax 0.00 : 6774a4: f7 f7 div %edi : return result; : } 0.00 : 6774a6: 5b pop %rbx 0.00 : 6774a7: 41 5c pop %r12 0.00 : 6774a9: c9 leaveq 0.00 : 6774aa: 89 d0 mov %edx,%eax 0.00 : 6774ac: c3 retq 0.00 : 6774ad: 0f 1f 00 nopl (%rax) : int : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 6774b0: 48 8b 3d 49 5c 50 00 mov 0x505c49(%rip),%rdi # b7d100 0.00 : 6774b7: ba 39 01 00 00 mov $0x139,%edx 0.00 : 6774bc: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 6774c1: e8 7a 8b 01 00 callq 690040 0.00 : 6774c6: eb 88 jmp 677450 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000dbe70 : 0.00 : dbe70: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : dbe75: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : dbe7a: 89 cb mov %ecx,%ebx 0.00 : dbe7c: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : dbe81: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : dbe86: 49 89 f4 mov %rsi,%r12 0.00 : dbe89: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : dbe8e: 48 83 ec 28 sub $0x28,%rsp 0.00 : dbe92: 8b 05 1c b8 29 00 mov 0x29b81c(%rip),%eax # 3776b4 <__libc_multiple_threads> 50.00 : dbe98: 41 89 fd mov %edi,%r13d 0.00 : dbe9b: 48 89 d5 mov %rdx,%rbp 0.00 : dbe9e: 85 c0 test %eax,%eax 0.00 : dbea0: 75 3e jne dbee0 0.00 : dbea2: 45 31 c9 xor %r9d,%r9d 0.00 : dbea5: 45 31 c0 xor %r8d,%r8d 0.00 : dbea8: 4c 63 d1 movslq %ecx,%r10 0.00 : dbeab: 48 63 ff movslq %edi,%rdi 0.00 : dbeae: b8 2d 00 00 00 mov $0x2d,%eax 0.00 : dbeb3: 0f 05 syscall 0.00 : dbeb5: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : dbebb: 48 89 c3 mov %rax,%rbx 0.00 : dbebe: 77 56 ja dbf16 0.00 : dbec0: 48 89 d8 mov %rbx,%rax 0.00 : dbec3: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : dbec8: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : dbecc: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : dbed1: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : dbed6: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : dbedb: 48 83 c4 28 add $0x28,%rsp 0.00 : dbedf: c3 retq 0.00 : dbee0: e8 4b c3 00 00 callq e8230 <__libc_enable_asynccancel> 0.00 : dbee5: 45 31 c9 xor %r9d,%r9d 0.00 : dbee8: 41 89 c6 mov %eax,%r14d 0.00 : dbeeb: 45 31 c0 xor %r8d,%r8d 0.00 : dbeee: 4c 63 d3 movslq %ebx,%r10 0.00 : dbef1: 48 89 ea mov %rbp,%rdx 0.00 : dbef4: 4c 89 e6 mov %r12,%rsi 0.00 : dbef7: 49 63 fd movslq %r13d,%rdi 0.00 : dbefa: b8 2d 00 00 00 mov $0x2d,%eax 0.00 : dbeff: 0f 05 syscall 0.00 : dbf01: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : dbf07: 48 89 c3 mov %rax,%rbx 0.00 : dbf0a: 77 2a ja dbf36 0.00 : dbf0c: 44 89 f7 mov %r14d,%edi 0.00 : dbf0f: e8 7c c3 00 00 callq e8290 <__libc_disable_asynccancel> 0.00 : dbf14: eb aa jmp dbec0 0.00 : dbf16: 89 c1 mov %eax,%ecx 0.00 : dbf18: 48 8b 15 19 5f 29 00 mov 0x295f19(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : dbf1f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : dbf26: 00 00 50.00 : dbf28: f7 d9 neg %ecx 0.00 : dbf2a: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : dbf31: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : dbf34: eb 8a jmp dbec0 0.00 : dbf36: 89 c1 mov %eax,%ecx 0.00 : dbf38: 48 8b 15 f9 5e 29 00 mov 0x295ef9(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : dbf3f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : dbf46: 00 00 0.00 : dbf48: f7 d9 neg %ecx 0.00 : dbf4a: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : dbf51: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : dbf54: eb b6 jmp dbf0c Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005f40 : 100.00 : 5f40: 53 push %rbx : 5f71: 48 89 d3 48 8b mov %r12,0x30(%rsp) : 5f76: 02 f0 ff mov %rdi,%rbp : 5f79: 40 60 e8 mov %rsi,%rbx : 5f7c: f0 fb ff ff 48 callq 5f81 : 5f81: 8b 13 test %eax,%eax : 5f83: f0 ff jne 5f93 : 5f85: 4a 60 5b mov %rsp,%rdx Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000000 : 100.00 : 0: 0f b7 47 24 movzwl 0x24(%rdi),%eax : 34: 0f b6 57 26 add 0x4(%rcx,%rax,1),%ecx : 38: 0f b7 f6 49 add $0xc,%r8 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/cpufreq/mperf.ko ---------------------------------------------- 57.14 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/cpufreq/mperf.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000000a0 : 100.00 : a0: 48 83 ec 38 sub $0x38,%rsp 0.00 : d4: 48 8b add %al,(%rax) 0.00 : d6: 15 00 add %al,(%rax) 0.00 : d8: 00 00 je 120 0.00 : da: 00 48 b8 00 00 lea 0x14(%rsp),%r13 0.00 : df: 00 00 00 00 00 mov $0xe8,%eax 0.00 : e4: 10 48 89 mov %rax,%rdi 0.00 : e7: 5c 24 18 mov %r13,%rsi 0.00 : ea: 48 89 6c 24 20 48 89 callq *0x0 0.00 : f1: fb 4c 89 64 24 mov $0xe7,%edi 0.00 : f6: 28 4c 89 mov %rax,(%rbx) 0.00 : f9: 6c 24 30 mov %r13,%rsi 0.00 : fc: 48 85 c2 75 09 80 3d callq *0x0 0.00 : 103: 00 00 00 00 mov %rax,0x8(%rbx) 0.00 : 107: 00 74 46 4c 8d mov 0x20(%rsp),%rbp 0.00 : 10c: 6c 24 14 b8 e8 mov 0x18(%rsp),%rbx 0.00 : 111: 00 00 00 48 89 mov 0x28(%rsp),%r12 0.00 : 116: c7 4c 89 ee ff mov 0x30(%rsp),%r13 0.00 : 11b: 14 25 00 00 add $0x38,%rsp 0.00 : 11f: 00 retq 0.00 : 120: 00 bf e7 00 00 mov $0x3d6,%esi 0.00 : 125: 00 48 89 03 4c 89 ee mov $0x0,%rdi 0.00 : 12c: ff 14 25 00 00 callq 131 0.00 : 131: 00 00 48 89 43 08 48 movb $0x1,0x0(%rip) # 138 0.00 : 138: 8b 6c jmp da : 13a: 24 20 xchg %ax,%ax : 13c: Address 0x000000000000013c is out of bounds. : Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000002740 : 0.00 : 2740: 41 57 push %r15 0.00 : 2772: 41 56 jne 2781 0.00 : 2774: 49 89 add %al,(%rax) 0.00 : 2776: fe 41 55 41 54 cmpq $0x0,0x58(%r14) 0.00 : 277b: 55 53 48 81 ec c8 jne 34e7 0.00 : 2781: 00 00 00 48 mov 0xc(%r13),%eax 0.00 : 2785: 8b 87 test %eax,%eax 0.00 : 2787: 08 02 00 00 48 89 jne 34d4 0.00 : 278d: 44 24 28 f6 07 08 mov 0x0(%rip),%eax # 2793 0.00 : 2793: 0f 85 test %eax,%eax 0.00 : 2795: 6f 0d je 27be 0.00 : 2797: 00 00 4d 8b 6e 50 4d mov 0x0(%rip),%rbx # 279e 0.00 : 279e: 85 ed 0f test %rbx,%rbx 0.00 : 27a1: 84 75 je 27be 0.00 : 27a3: 0d 00 00 mov (%rbx),%rax 0.00 : 27a6: 49 83 7e 58 mov 0x8(%rbx),%rdi 0.00 : 27aa: 00 0f 85 66 add $0x10,%rbx 0.00 : 27ae: 0d 00 00 mov %r13,%rdx 0.00 : 27b1: 41 8b 45 mov %r14,%rsi 0.00 : 27b4: 0c 85 callq *%rax 0.00 : 27b6: c0 0f 85 mov (%rbx),%rax 0.00 : 27b9: 47 0d 00 test %rax,%rax 0.00 : 27bc: 00 8b jne 27a6 0.00 : 27be: 05 00 00 00 lea 0x24(%r14),%rdx 0.00 : 27c2: 00 85 c0 mov %rdx,%rdi 0.00 : 27c5: 74 27 48 8b 1d mov %rdx,0x10(%rsp) 0.00 : 27ca: 00 00 00 00 48 callq 27cf 0.00 : 27cf: 85 db 74 1b 48 8b 03 movl $0x1,0xc(%r13) 0.00 : 27d6: 48 0.00 : 27d7: 8b 7b 08 48 83 c3 mov 0x0(%rip),%eax # 27dd 0.00 : 27dd: 10 4c test %eax,%eax 0.00 : 27df: 89 ea je 2808 0.00 : 27e1: 4c 89 f6 ff d0 48 8b mov 0x0(%rip),%rbx # 27e8 0.00 : 27e8: 03 48 85 test %rbx,%rbx 0.00 : 27eb: c0 75 je 2808 0.00 : 27ed: e8 49 8d mov (%rbx),%rax 0.00 : 27f0: 56 24 48 89 mov 0x8(%rbx),%rdi 0.00 : 27f4: d7 48 89 54 add $0x10,%rbx 0.00 : 27f8: 24 10 e8 mov %r13,%rdx 0.00 : 27fb: 00 00 00 mov %r14,%rsi 0.00 : 27fe: 00 41 callq *%rax 0.00 : 2800: c7 45 0c mov (%rbx),%rax 0.00 : 2803: 01 00 00 test %rax,%rax 0.00 : 2806: 00 8b jne 27f0 0.00 : 2808: 05 00 00 00 lea 0x68(%r13),%rbx 0.00 : 280c: 00 85 c0 mov %rbx,%rdi 0.00 : 280f: 74 27 48 8b 1d callq 2814 0.00 : 2814: 00 00 00 00 mov 0x6c(%r13),%eax 0.00 : 2818: 48 85 test %eax,%eax 0.00 : 281a: db 74 1b 48 8b 03 je 28cc 0.00 : 2820: 48 8b 7b 08 48 83 c3 lea 0x80(%rsp),%r12 0.00 : 2827: 10 0.00 : 2828: 4c 89 ea 4c 89 f6 ff lea 0xe0(%r14),%rbp 0.00 : 282f: d0 48 8b 03 48 85 c0 mov %gs:0x0,%rsi 0.00 : 2836: 75 e8 0.00 : 2838: 49 8d 5d 68 48 lea 0x18(%r12),%r15 0.00 : 283d: 89 df e8 00 00 mov %rsi,0x8(%rsp) 0.00 : 2842: 00 00 jmp 2858 0.00 : 2844: 41 8b 45 mov %r12,%rsi 0.00 : 2847: 6c 85 c0 mov %rbp,%rdi 0.00 : 284a: 0f 84 ac 00 00 callq 284f 0.00 : 284f: 00 4c 8d a4 mov 0x6c(%r13),%r11d 0.00 : 2853: 24 80 00 test %r11d,%r11d 0.00 : 2856: 00 00 je 28cc 0.00 : 2858: 49 8d ae e0 00 mov 0x8(%rsp),%rax 0.00 : 285d: 00 00 65 48 8b mov $0x2,%edx 0.00 : 2862: 34 25 00 mov %r12,%rsi 0.00 : 2865: 00 00 00 mov %rbp,%rdi 0.00 : 2868: 4d 8d 7c 24 18 48 89 movq $0x0,0x80(%rsp) 0.00 : 286f: 74 24 08 eb 14 0.00 : 2874: 4c 89 e6 48 89 ef e8 movq $0x0,0x90(%rsp) 0.00 : 287b: 00 00 00 00 45 0.00 : 2880: 8b 5d 6c 45 85 db 74 mov %r15,0x98(%rsp) 0.00 : 2887: 74 0.00 : 2888: 48 8b 44 24 08 ba 02 mov %r15,0xa0(%rsp) 0.00 : 288f: 00 0.00 : 2890: 00 00 4c 89 e6 48 89 mov %rax,0x88(%rsp) 0.00 : 2897: ef 0.00 : 2898: 48 c7 84 24 80 callq 289d 0.00 : 289d: 00 00 00 00 mov 0x6c(%r13),%eax 0.00 : 28a1: 00 00 test %eax,%eax 0.00 : 28a3: 00 48 je 2844 0.00 : 28a5: c7 84 24 incw (%rbx) 0.00 : 28a8: 90 00 00 00 00 mov 0x10(%rsp),%rdx 0.00 : 28ad: 00 00 00 incw (%rdx) 0.00 : 28b0: 4c 89 bc 24 98 callq 28b5 0.00 : 28b5: 00 00 00 4c 89 mov 0x10(%rsp),%rdi 0.00 : 28ba: bc 24 a0 00 00 callq 28bf 0.00 : 28bf: 00 48 89 mov %rbx,%rdi 0.00 : 28c2: 84 24 88 00 00 callq 28c7 0.00 : 28c7: 00 e8 00 00 00 jmpq 2844 0.00 : 28cc: 00 41 8b 45 6c incw 0x68(%r13) 0.00 : 28d1: 85 c0 74 9f mov 0x70(%r13),%eax 0.00 : 28d5: 66 ff 03 48 8b 54 24 cmp 0x188(%r14),%eax 0.00 : 28dc: 10 66 ff 02 e8 00 jg 34ef 0.00 : 28e2: 00 00 00 48 mov 0x18(%r13),%rbp 0.00 : 28e6: 8b 7c 24 test %rbp,%rbp 0.00 : 28e9: 10 e8 je 2966 0.00 : 28eb: 00 00 00 00 48 cmpq $0x0,0x20(%rbp) 0.00 : 28f0: 89 df je 2952 0.00 : 28f2: e8 00 00 00 mov 0x0(%rbp),%rbx 0.00 : 28f6: 00 e9 78 ff ff lock btsl $0x14,(%rbx) 0.00 : 28fb: ff 66 sbb %eax,%eax 0.00 : 28fd: 41 ff test %eax,%eax 0.00 : 28ff: 45 68 je 291f 0.00 : 2901: 41 8b 45 70 41 3b 86 nopl 0x0(%rax) 0.00 : 2908: 88 01 pause 0.00 : 290a: 00 00 0f mov (%rbx),%rax 0.00 : 290d: 8f 0d 0c 00 00 test $0x100000,%eax 0.00 : 2912: 49 8b jne 2908 0.00 : 2914: 6d 18 48 85 ed lock btsl $0x14,(%rbx) 0.00 : 2919: 74 7b sbb %eax,%eax 0.00 : 291b: 48 83 test %eax,%eax 0.00 : 291d: 7d 20 jne 2901 0.00 : 291f: 00 74 60 48 mov 0x20(%rbx),%rax 0.00 : 2923: 8b 5d 00 f0 mov 0x20(%rbp),%rdi 0.00 : 2927: 0f ba 2b 14 19 mov $0xffffffff,%esi 0.00 : 292c: c0 85 c0 74 sub $0x1,%rax 0.00 : 2930: 1e 0f 1f 80 shr $0xb,%rax 0.00 : 2934: 00 00 00 add $0x1,%esi 0.00 : 2937: 00 f3 90 shr %rax 0.00 : 293a: 48 8b jne 2934 0.00 : 293c: 03 a9 00 00 10 callq 2941 0.00 : 2941: 00 75 f4 f0 0f ba 2b movq $0x0,0x20(%rbp) 0.00 : 2948: 14 0.00 : 2949: 19 c0 85 c0 lea 0x2(%rbx),%rax 0.00 : 294d: 75 e2 48 8b 43 lock andb $0xef,0x2(%rbx) 0.00 : 2952: 20 48 8b mov %rbp,%rsi 0.00 : 2955: 7d 20 be mov %r14,%rdi 0.00 : 2958: ff ff ff ff 48 callq 295d 0.00 : 295d: 83 e8 01 48 mov 0x18(%r13),%rbp 0.00 : 2961: c1 e8 0b test %rbp,%rbp 0.00 : 2964: 83 c6 jne 28eb 0.00 : 2966: 01 48 d1 e8 75 f8 e8 lea 0x14c(%r14),%r15 0.00 : 296d: 00 00 00 mov %r15,%rdi 0.00 : 2970: 00 48 c7 45 20 callq 2975 0.00 : 2975: 00 00 00 mov %r14,%rdi 0.00 : 2978: 00 48 8d 43 02 callq 297d 0.00 : 297d: f0 80 63 02 ef 48 89 incw 0x14c(%r14) 0.00 : 2984: ee 0.00 : 2985: 4c 89 f7 mov %r14,%rdi 0.00 : 2988: e8 00 00 00 00 callq 298d 0.00 : 298d: 49 8b 6d mov %r14,%rdi 0.00 : 2990: 18 48 85 ed 75 callq 2995 0.00 : 2995: 85 4d 8d be 4c 01 mov 0x0(%rip),%eax # 299b 0.00 : 299b: 00 00 test %eax,%eax 0.00 : 299d: 4c 89 je 29c6 0.00 : 299f: ff e8 00 00 00 00 4c mov 0x0(%rip),%rbx # 29a6 0.00 : 29a6: 89 f7 e8 test %rbx,%rbx 0.00 : 29a9: 00 00 je 29c6 0.00 : 29ab: 00 00 66 mov (%rbx),%rax 0.00 : 29ae: 41 ff 86 4c mov 0x8(%rbx),%rdi 0.00 : 29b2: 01 00 00 4c add $0x10,%rbx 0.00 : 29b6: 89 f7 e8 mov %r13,%rdx 0.00 : 29b9: 00 00 00 mov %r14,%rsi 0.00 : 29bc: 00 4c callq *%rax 0.00 : 29be: 89 f7 e8 mov (%rbx),%rax 0.00 : 29c1: 00 00 00 test %rax,%rax 0.00 : 29c4: 00 8b jne 29ae 0.00 : 29c6: 05 00 00 00 00 85 c0 movl $0x2,0xc(%r13) 0.00 : 29cd: 74 0.00 : 29ce: 27 48 8b 1d mov %r13,0x58(%r14) 0.00 : 29d2: 00 00 00 00 48 85 db movq $0x0,0x50(%r14) 0.00 : 29d9: 74 0.00 : 29da: 1b 48 8b 03 48 callq 29df 0.00 : 29df: 8b 7b 08 48 83 mov %rax,0x18(%rsp) 0.00 : 29e4: c3 10 4c 89 ea 4c 89 mov 0x118(%r14),%eax 0.00 : 29eb: f6 ff d0 48 lea 0x68(%r14),%rdi 0.00 : 29ef: 8b 03 xor %ecx,%ecx 0.00 : 29f1: 48 85 c0 75 e8 mov $0x1,%edx 0.00 : 29f6: 41 c7 45 0c 02 mov $0x3,%esi 0.00 : 29fb: 00 00 00 4d mov %eax,0x10(%r13) 0.00 : 29ff: 89 6e 58 49 c7 callq 2a04 0.00 : 2a04: 46 50 00 00 00 mov 0x10(%rsp),%rbx 0.00 : 2a09: 00 e8 00 00 00 incw 0x24(%r14) 0.00 : 2a0e: 00 48 89 44 mov 0x8(%r13),%eax 0.00 : 2a12: 24 18 41 8b 86 18 01 mov 0x168(%r14),%esi 0.00 : 2a19: 00 00 49 8d 7e lea 0x50(%rsp),%rdi 0.00 : 2a1e: 68 31 sub %eax,%esi 0.00 : 2a20: c9 ba 01 sar $0x1f,%esi 0.00 : 2a23: 00 00 00 be and $0x70,%sil 0.00 : 2a27: 03 00 00 00 41 89 add $0x91,%esi 0.00 : 2a2d: 45 10 e8 00 mov %esi,0x4c(%rsp) 0.00 : 2a31: 00 00 00 48 8b callq 2a36 0.00 : 2a36: 5c 24 10 66 mov 0x4c(%rsp),%edx 0.00 : 2a3a: 41 ff 46 mov %r13,%rsi 0.00 : 2a3d: 24 41 8b mov %r14,%rdi 0.00 : 2a40: 45 08 41 8b b6 callq 2380 0.00 : 2a45: 68 01 00 00 48 lea 0x50(%rsp),%rdi 0.00 : 2a4a: 8d 7c 24 50 mov %eax,0x34(%rsp) 0.00 : 2a4e: 29 c6 c1 fe 1f callq 2a53 0.00 : 2a53: 40 80 e6 mov %r15,%rdi 0.00 : 2a56: 70 81 c6 91 00 callq 2a5b 0.00 : 2a5b: 00 00 89 74 mov 0x20(%r13),%rax 0.00 : 2a5f: 24 4c e8 test %rax,%rax 0.00 : 2a62: 00 00 je 2ace 0.00 : 2a64: 00 00 8b 54 mov 0x40(%rax),%rbp 0.00 : 2a68: 24 4c 4c 89 mov 0x0(%rbp),%rbx 0.00 : 2a6c: ee 4c 89 f7 lea 0x60(%rbx),%r12 0.00 : 2a70: e8 3b f9 ff lock incl 0x60(%rbx) 0.00 : 2a74: ff 48 8d mov (%rbx),%rax 0.00 : 2a77: 7c 24 test $0x4,%al 0.00 : 2a79: 50 89 je 2a96 0.00 : 2a7b: 44 24 34 e8 incw (%r15) 0.00 : 2a7f: 00 00 00 mov (%rbx),%rax 0.00 : 2a82: 00 4c test $0x4,%al 0.00 : 2a84: 89 ff je 2a8e 0.00 : 2a86: e8 00 00 mov %rbx,%rdi 0.00 : 2a89: 00 00 49 8b 45 callq 2a8e 0.00 : 2a8e: 20 48 85 mov %r15,%rdi 0.00 : 2a91: c0 74 6a 48 8b callq 2a96 0.00 : 2a96: 68 40 48 mov (%rbx),%rax 0.00 : 2a99: 8b 5d test $0x1,%al 0.00 : 2a9b: 00 4c 8d 63 60 f0 je 34f3 0.00 : 2aa1: ff 43 60 48 8b lock btsl $0x14,(%rbx) 0.00 : 2aa6: 03 a8 sbb %eax,%eax 0.00 : 2aa8: 04 74 test %eax,%eax 0.00 : 2aaa: 1b 66 41 ff 07 48 je 2e51 0.00 : 2ab0: 8b 03 a8 04 incw (%r15) 0.00 : 2ab4: 74 08 48 89 df callq 2ab9 0.00 : 2ab9: e8 00 00 00 lock decl 0x60(%rbx) 0.00 : 2abd: 00 4c 89 mov %r15,%rdi 0.00 : 2ac0: ff e8 00 00 00 callq 2ac5 0.00 : 2ac5: 00 48 8b 03 mov 0x20(%r13),%rax 0.00 : 2ac9: a8 01 0f test %rax,%rax 0.00 : 2acc: 84 52 jne 2a64 0.00 : 2ace: 0a 00 00 f0 0f ba 2b incw 0x14c(%r14) 0.00 : 2ad5: 14 0.00 : 2ad6: 19 c0 85 c0 0f mov 0x34(%rsp),%r10d 0.00 : 2adb: 84 a1 03 test %r10d,%r10d 0.00 : 2ade: 00 00 66 41 ff 07 jne 3490 0.00 : 2ae4: e8 00 00 00 00 lea 0x50(%rsp),%rdi 0.00 : 2ae9: f0 ff 4b 60 4c callq 2aee 0.00 : 2aee: 89 ff e8 00 mov 0x4c(%rsp),%edx 0.00 : 2af2: 00 00 00 mov %r13,%rsi 0.00 : 2af5: 49 8b 45 mov %r14,%rdi 0.00 : 2af8: 20 48 85 c0 75 callq 2afd 0.00 : 2afd: 96 66 41 ff 86 cmpq $0x0,0x30(%r13) 0.00 : 2b02: 4c 01 00 00 44 8b jne 348c 0.00 : 2b08: 54 24 34 45 85 mov 0x10(%rsp),%rdi 0.00 : 2b0d: d2 0f 85 ac 09 callq 2b12 0.00 : 2b12: 00 00 48 8d 7c 24 50 movl $0x3,0xc(%r13) 0.00 : 2b19: e8 0.00 : 2b1a: 00 00 00 00 8b mov 0x10(%rsp),%rdx 0.00 : 2b1f: 54 24 4c 4c 89 incw 0x24(%r14) 0.00 : 2b24: ee 4c 89 f7 e8 00 mov 0x0(%rip),%eax # 2b2a 0.00 : 2b2a: 00 00 test %eax,%eax 0.00 : 2b2c: 00 49 je 2b55 0.00 : 2b2e: 83 7d 30 00 0f 85 84 mov 0x0(%rip),%rbx # 2b35 0.00 : 2b35: 09 00 00 test %rbx,%rbx 0.00 : 2b38: 48 8b je 2b55 0.00 : 2b3a: 7c 24 10 mov (%rbx),%rax 0.00 : 2b3d: e8 00 00 00 mov 0x8(%rbx),%rdi 0.00 : 2b41: 00 41 c7 45 add $0x10,%rbx 0.00 : 2b45: 0c 03 00 mov %r13,%rdx 0.00 : 2b48: 00 00 48 mov %r14,%rsi 0.00 : 2b4b: 8b 54 callq *%rax 0.00 : 2b4d: 24 10 66 mov (%rbx),%rax 0.00 : 2b50: 41 ff 46 test %rax,%rax 0.00 : 2b53: 24 8b jne 2b3d 0.00 : 2b55: 05 00 00 00 mov 0x14(%r13),%eax 0.00 : 2b59: 00 85 c0 74 cmp 0x70(%r13),%eax 0.00 : 2b5d: 27 48 8b 1d 00 00 jg 3488 0.00 : 2b63: 00 00 48 85 db 74 1b lea 0x16c(%r14),%rbx 0.00 : 2b6a: 48 8b xor %ebp,%ebp 0.00 : 2b6c: 03 48 8b xor %r12d,%r12d 0.00 : 2b6f: 7b 08 48 83 c3 10 4c movq $0x0,0x38(%rsp) 0.00 : 2b76: 89 ea 0.00 : 2b78: 4c 89 f6 ff d0 48 8b movl $0x0,0x44(%rsp) 0.00 : 2b7f: 03 0.00 : 2b80: 48 85 c0 75 e8 mov %rbx,0x20(%rsp) 0.00 : 2b85: 41 8b 45 14 41 3b 45 movl $0x0,0x48(%rsp) 0.00 : 2b8c: 70 0.00 : 2b8d: 0f 8f 25 09 mov 0x28(%r13),%rbx 0.00 : 2b91: 00 00 49 test %rbx,%rbx 0.00 : 2b94: 8d 9e je 2bd8 0.00 : 2b96: 6c 01 00 00 testb $0x2,(%r14) 0.00 : 2b9a: 31 ed 45 31 e4 48 jne 2fdd 0.00 : 2ba0: c7 44 24 test %rbp,%rbp 0.00 : 2ba3: 38 00 00 00 00 c7 je 303d 0.00 : 2ba9: 44 24 44 00 00 00 00 lea 0xbc(%rsp),%rsi 0.00 : 2bb0: 48 0.00 : 2bb1: 89 5c 24 mov %r14,%rdi 0.00 : 2bb4: 20 c7 44 24 48 callq 2bb9 0.00 : 2bb9: 00 00 test %eax,%eax 0.00 : 2bbb: 00 00 49 8b mov %eax,0x34(%rsp) 0.00 : 2bbf: 5d 28 48 85 db 74 je 2eb0 0.00 : 2bc5: 42 41 mov %eax,%esi 0.00 : 2bc7: f6 06 02 mov %r14,%rdi 0.00 : 2bca: 0f 85 3d 04 00 callq 2bcf 0.00 : 2bcf: 00 48 85 ed mov 0x28(%r13),%rbx 0.00 : 2bd3: 0f 84 94 test %rbx,%rbx 0.00 : 2bd6: 04 00 jne 2b96 0.00 : 2bd8: 00 48 8d b4 24 lea 0x50(%rsp),%rdi 0.00 : 2bdd: bc 00 00 00 4c 89 mov $0xfffffffb,%r12d 0.00 : 2be3: f7 e8 00 00 00 callq 2be8 0.00 : 2be8: 00 85 c0 89 mov 0x50(%r13),%rdx 0.00 : 2bec: 44 24 34 test %rdx,%rdx 0.00 : 2bef: 0f 84 je 2c1c 0.00 : 2bf1: eb 02 00 00 mov 0x40(%rdx),%rbp 0.00 : 2bf5: 89 c6 4c 89 mov 0x0(%rbp),%rbx 0.00 : 2bf9: f7 e8 00 mov (%rbx),%rax 0.00 : 2bfc: 00 00 test $0x4,%al 0.00 : 2bfe: 00 49 8b 5d 28 48 je 30c7 0.00 : 2c04: 85 db 75 mov (%rbx),%rax 0.00 : 2c07: be 48 test $0x4,%al 0.00 : 2c09: 8d 7c je 2bec 0.00 : 2c0b: 24 50 41 mov %rbx,%rdi 0.00 : 2c0e: bc fb ff ff ff callq 2c13 0.00 : 2c13: e8 00 00 00 mov 0x50(%r13),%rdx 0.00 : 2c17: 00 49 8b test %rdx,%rdx 0.00 : 2c1a: 55 50 jne 2bf1 0.00 : 2c1c: 48 85 d2 74 2b cmpq $0x0,0x58(%r13) 0.00 : 2c21: 48 8b 6a 40 48 8b jne 3455 0.00 : 2c27: 5d 00 48 8b mov 0x60(%r13),%rdx 0.00 : 2c2b: 03 a8 04 0f 84 c3 mov $0xfffffffb,%r12d 0.00 : 2c31: 04 00 00 test %rdx,%rdx 0.00 : 2c34: 48 8b je 2c61 0.00 : 2c36: 03 a8 04 74 mov 0x40(%rdx),%rbp 0.00 : 2c3a: e1 48 89 df mov 0x0(%rbp),%rbx 0.00 : 2c3e: e8 00 00 mov (%rbx),%rax 0.00 : 2c41: 00 00 test $0x4,%al 0.00 : 2c43: 49 8b 55 50 48 85 je 316f 0.00 : 2c49: d2 75 d5 mov (%rbx),%rax 0.00 : 2c4c: 49 83 test $0x4,%al 0.00 : 2c4e: 7d 58 je 2c31 0.00 : 2c50: 00 0f 85 mov %rbx,%rdi 0.00 : 2c53: 2e 08 00 00 49 callq 2c58 0.00 : 2c58: 8b 55 60 41 mov 0x60(%r13),%rdx 0.00 : 2c5c: bc fb ff test %rdx,%rdx 0.00 : 2c5f: ff ff jne 2c36 0.00 : 2c61: 48 85 d2 74 mov 0x34(%rsp),%edi 0.00 : 2c65: 2b 48 test %edi,%edi 0.00 : 2c67: 8b 6a 40 48 8b 5d jne 3441 0.00 : 2c6d: 00 48 8b 03 a8 mov 0x10(%rsp),%rdi 0.00 : 2c72: 04 0f 84 26 05 callq 2c77 0.00 : 2c77: 00 00 48 8b 03 cmpl $0x3,0xc(%r13) 0.00 : 2c7c: a8 04 74 e1 48 89 jne 3459 0.00 : 2c82: df e8 00 00 00 00 49 movl $0x4,0xc(%r13) 0.00 : 2c89: 8b 0.00 : 2c8a: 55 60 48 85 d2 mov 0x10(%rsp),%rbx 0.00 : 2c8f: 75 d5 8b 7c 24 incw 0x24(%r14) 0.00 : 2c94: 34 85 ff 0f testb $0x2,(%r14) 0.00 : 2c98: 85 d4 07 00 00 48 je 33cb 0.00 : 2c9e: 8b 7c 24 10 mov 0x34(%rsp),%esi 0.00 : 2ca2: e8 00 test %esi,%esi 0.00 : 2ca4: 00 00 00 41 83 7d jne 3430 0.00 : 2caa: 0c 03 0f 85 d7 cmpq $0x0,0x30(%r13) 0.00 : 2caf: 07 00 00 41 c7 45 jne 33c7 0.00 : 2cb5: 0c 04 00 00 00 cmpq $0x0,0x28(%r13) 0.00 : 2cba: 48 8b 5c 24 10 66 jne 33c3 0.00 : 2cc0: 41 ff 46 24 41 cmpq $0x0,0x40(%r13) 0.00 : 2cc5: f6 06 02 0f 84 2d jne 33bf 0.00 : 2ccb: 07 00 00 8b 74 cmpq $0x0,0x50(%r13) 0.00 : 2cd0: 24 34 85 f6 0f 85 jne 337b 0.00 : 2cd6: 86 07 00 00 49 cmpq $0x0,0x58(%r13) 0.00 : 2cdb: 83 7d 30 00 0f nopl 0x0(%rax,%rax,1) 0.00 : 2ce0: 85 12 07 00 00 49 jne 3373 0.00 : 2ce6: 83 7d 28 00 0f cmpq $0x0,0x60(%r13) 0.00 : 2ceb: 85 03 07 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2cf0: 49 83 7d 40 00 0f jne 3377 0.00 : 2cf6: 85 f4 06 mov %r15,%rdi 0.00 : 2cf9: 00 00 49 83 7d callq 2cfe 0.00 : 2cfe: 50 00 0f 85 mov 0x38(%r13),%rbp 0.00 : 2d02: a5 06 00 test %rbp,%rbp 0.00 : 2d05: 00 49 83 7d 58 00 je 2e1f 0.00 : 2d0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2d10: 0f 85 8d 06 incw (%r15) 0.00 : 2d14: 00 00 49 83 mov 0x0(%rbp),%rbx 0.00 : 2d18: 7d 60 00 0f 1f lock btsl $0x14,(%rbx) 0.00 : 2d1d: 44 00 sbb %eax,%eax 0.00 : 2d1f: 00 0f test %eax,%eax 0.00 : 2d21: 85 81 je 2d47 0.00 : 2d23: 06 00 00 4c 89 nopl 0x0(%rax,%rax,1) 0.00 : 2d28: ff e8 00 00 00 00 49 nopl 0x0(%rax,%rax,1) 0.00 : 2d2f: 8b 0.00 : 2d30: 6d 38 pause 0.00 : 2d32: 48 85 ed mov (%rbx),%rax 0.00 : 2d35: 0f 84 14 01 00 test $0x100000,%eax 0.00 : 2d3a: 00 0f jne 2d30 0.00 : 2d3c: 1f 44 00 00 66 lock btsl $0x14,(%rbx) 0.00 : 2d41: 41 ff sbb %eax,%eax 0.00 : 2d43: 07 48 test %eax,%eax 0.00 : 2d45: 8b 5d jne 2d28 0.00 : 2d47: 00 f0 0f ba mov 0x28(%rbp),%rax 0.00 : 2d4b: 2b 14 19 cmp %rax,%r13 0.00 : 2d4e: c0 85 c0 74 24 0f jne 3260 0.00 : 2d54: 1f 44 00 00 mov 0x20(%rbp),%rdi 0.00 : 2d58: 0f 1f 84 test %rdi,%rdi 0.00 : 2d5b: 00 00 00 00 00 f3 je 31db 0.00 : 2d61: 90 48 8b 03 mov 0x20(%rbx),%rax 0.00 : 2d65: a9 00 00 10 00 mov $0xffffffff,%esi 0.00 : 2d6a: 75 f4 f0 0f sub $0x1,%rax 0.00 : 2d6e: ba 2b 14 19 shr $0xb,%rax 0.00 : 2d72: c0 85 c0 75 e1 48 nopw 0x0(%rax,%rax,1) 0.00 : 2d78: 8b 45 28 add $0x1,%esi 0.00 : 2d7b: 49 39 c5 shr %rax 0.00 : 2d7e: 0f 85 jne 2d78 0.00 : 2d80: 0c 05 00 00 48 callq 2d85 0.00 : 2d85: 8b 7d 20 48 mov 0x18(%rbp),%rax 0.00 : 2d89: 85 ff 0f 84 7a 04 00 movq $0x0,0x20(%rbp) 0.00 : 2d90: 00 0.00 : 2d91: 48 8b 43 test %rax,%rax 0.00 : 2d94: 20 be je 2da2 0.00 : 2d96: ff ff ff ff mov %rax,0x20(%rbp) 0.00 : 2d9a: 48 83 e8 01 48 c1 e8 movq $0x0,0x18(%rbp) 0.00 : 2da1: 0b 0.00 : 2da2: 66 0f 1f mov %r15,%rdi 0.00 : 2da5: 44 00 00 83 c6 callq 2daa 0.00 : 2daa: 01 48 d1 e8 75 cmpq $0x0,0x48(%rbp) 0.00 : 2daf: f8 e8 je 2db9 0.00 : 2db1: 00 00 00 mov %rbp,%rdi 0.00 : 2db4: 00 48 8b 45 18 callq 2db9 0.00 : 2db9: 48 c7 45 mov (%rbx),%rax 0.00 : 2dbc: 20 00 00 00 lea 0x2(%rbx),%r12 0.00 : 2dc0: 00 48 85 c0 74 test $0x10000,%eax 0.00 : 2dc5: 0c 48 je 2dd9 0.00 : 2dc7: 89 45 20 48 c7 cmpq $0x0,0x30(%rbp) 0.00 : 2dcc: 45 18 00 00 00 00 4c movl $0x0,0x10(%rbp) 0.00 : 2dd3: 89 ff e8 00 00 00 je 321a 0.00 : 2dd9: 00 48 83 mov (%rbx),%rax 0.00 : 2ddc: 7d 48 00 74 08 test $0x80000,%eax 0.00 : 2de1: 48 89 ef e8 00 00 je 31b7 0.00 : 2de7: 00 00 48 mov %r13,%rsi 0.00 : 2dea: 8b 03 4c mov %rbp,%rdi 0.00 : 2ded: 8d 63 02 a9 00 callq 2df2 0.00 : 2df2: 00 01 00 74 testb $0x2,(%r14) 0.00 : 2df6: 12 48 je 2dfd 0.00 : 2df8: 83 7d 30 00 c7 lock andb $0xf7,0x2(%rbx) 0.00 : 2dfd: 45 10 00 mov %rbp,%rdi 0.00 : 2e00: 00 00 00 0f 84 callq 2e05 0.00 : 2e05: 41 04 00 00 48 lock andb $0xef,0x2(%rbx) 50.00 : 2e0a: 8b 03 a9 mov %r15,%rdi 0.00 : 2e0d: 00 00 08 00 0f callq 2e12 0.00 : 2e12: 84 d0 03 00 mov 0x38(%r13),%rbp 0.00 : 2e16: 00 4c 89 test %rbp,%rbp 0.00 : 2e19: ee 48 89 ef e8 00 jne 2d10 0.00 : 2e1f: 00 00 00 41 incw (%r15) 0.00 : 2e23: f6 06 02 74 05 mov 0x10(%rsp),%rdi 0.00 : 2e28: f0 80 63 02 f7 callq 2e2d 0.00 : 2e2d: 48 89 ef mov %r15,%rdi 0.00 : 2e30: e8 00 00 00 00 callq 2e35 0.00 : 2e35: f0 80 63 02 ef cmpq $0x0,0x38(%r13) 0.00 : 2e3a: 4c 89 ff e8 00 00 je 326e 0.00 : 2e40: 00 00 49 8b incw (%r15) 0.00 : 2e44: 6d 38 48 85 ed mov 0x10(%rsp),%rsi 0.00 : 2e49: 0f 85 f1 incw (%rsi) 0.00 : 2e4c: fe ff ff 66 41 jmpq 2cf6 0.00 : 2e51: ff 07 48 mov (%rbx),%rax 0.00 : 2e54: 8b 7c 24 test $0x40,%ah 0.00 : 2e57: 10 e8 je 2e5f 0.00 : 2e59: 00 00 00 00 cmp 0x40(%rbx),%rbp 0.00 : 2e5d: 4c 89 je 2e7d 0.00 : 2e5f: ff e8 00 00 lea 0x2(%rbx),%rax 0.00 : 2e63: 00 00 49 83 7d lock andb $0xef,0x2(%rbx) 0.00 : 2e68: 38 00 0f mov %rbx,%rdi 0.00 : 2e6b: 84 2e 04 00 00 callq 2310 0.00 : 2e70: 66 41 ff mov %r15,%rdi 0.00 : 2e73: 07 48 8b 74 24 callq 2e78 0.00 : 2e78: 10 66 ff 06 e9 jmpq 2a5b 0.00 : 2e7d: a5 fe ff ff cmp 0x28(%rbp),%r13 0.00 : 2e81: 48 8b jne 2e5f 0.00 : 2e83: 03 f6 c4 40 cmpl $0x8,0xc(%rbp) 0.00 : 2e87: 74 nop 0.00 : 2e88: 06 48 jne 2e5f 0.00 : 2e8a: 3b 6b 40 mov %rbp,%rdi 0.00 : 2e8d: 74 1e 48 nopl (%rax) 0.00 : 2e90: 8d 43 02 f0 80 callq 2e95 0.00 : 2e95: 63 02 ef 48 lea 0x2(%rbx),%rax 0.00 : 2e99: 89 df e8 a0 f4 lock andb $0xef,0x2(%rbx) 0.00 : 2e9e: ff ff 4c mov %rbx,%rdi 0.00 : 2ea1: 89 ff e8 00 00 callq 2ea6 0.00 : 2ea6: 00 00 e9 de lock decl 0x60(%rbx) 0.00 : 2eaa: fb ff jmp 2e68 0.00 : 2eac: ff 4c 3b 6d nopl 0x0(%rax) 0.00 : 2eb0: 28 75 dc 83 7d subl $0x1,0x70(%r13) 0.00 : 2eb5: 0c 08 90 mov (%rbx),%rax 0.00 : 2eb8: 75 d5 48 89 lock incl 0x60(%rax) 0.00 : 2ebc: ef 0f 1f mov (%rbx),%rdx 0.00 : 2ebf: 00 e8 00 00 lea 0x1(%rdx),%rax 0.00 : 2ec3: 00 00 48 8d 43 lock orb $0x80,0x1(%rdx) 0.00 : 2ec8: 02 f0 80 63 02 ef 48 mov 0xbc(%rsp),%ecx 0.00 : 2ecf: 89 df e8 00 00 00 00 lea 0xb0(%rsp),%rdx 0.00 : 2ed6: f0 0.00 : 2ed7: ff 4b 60 mov %rbx,%rsi 0.00 : 2eda: eb bc 0f mov %r13,%rdi 0.00 : 2edd: 1f 40 00 41 83 callq 2ee2 0.00 : 2ee2: 6d 70 01 48 8b 03 f0 mov 0xb0(%rsp),%rdx 0.00 : 2ee9: ff 0.00 : 2eea: 40 60 48 mov (%rdx),%rcx 0.00 : 2eed: 8b 13 48 8d lea 0x1(%rcx),%rdx 0.00 : 2ef1: 42 01 f0 80 4a lock orb $0x80,0x1(%rcx) 0.00 : 2ef6: 01 80 8b 8c 24 bc 00 mov 0xb0(%rsp),%rdx 0.00 : 2efd: 00 0.00 : 2efe: 00 48 8d 94 24 mov 0x28(%rsp),%rsi 0.00 : 2f03: b0 00 00 movslq %r12d,%rcx 0.00 : 2f06: 00 48 89 and $0x1,%eax 0.00 : 2f09: de 4c 89 ef add $0x1,%r12d 0.00 : 2f0d: e8 00 00 mov (%rdx),%rdx 0.00 : 2f10: 00 00 48 8b mov %rdx,(%rsi,%rcx,8) 0.00 : 2f14: 94 24 b0 00 00 mov 0x48(%rsp),%r9d 0.00 : 2f19: 00 48 mov %eax,%edx 0.00 : 2f1b: 8b 0a 48 or $0x2,%edx 0.00 : 2f1e: 8d 51 01 f0 80 mov 0x38(%rsp),%rcx 0.00 : 2f23: 49 01 80 test %r9d,%r9d 0.00 : 2f26: 48 8b 94 cmove %edx,%eax 0.00 : 2f29: 24 b0 00 mov (%rbx),%rdx 0.00 : 2f2c: 00 00 bswap %eax 0.00 : 2f2e: 48 8b 74 24 mov 0x18(%rdx),%rdx 0.00 : 2f32: 28 49 bswap %edx 0.00 : 2f34: 63 cc mov %edx,(%rcx) 0.00 : 2f36: 83 e0 01 41 83 mov 0x38(%rsp),%rdx 0.00 : 2f3b: c4 01 48 mov %eax,0x4(%rdx) 0.00 : 2f3e: 8b 12 48 89 14 mov 0x48(%rsp),%r8d 0.00 : 2f43: ce 44 8b 4c add $0x8,%rdx 0.00 : 2f47: 24 48 89 c2 83 subl $0x8,0x44(%rsp) 0.00 : 2f4c: ca 02 48 8b 4c mov %rdx,0x38(%rsp) 0.00 : 2f51: 24 38 45 test %r8d,%r8d 0.00 : 2f54: 85 c9 0f 44 c2 48 jne 3017 0.00 : 2f5a: 8b 13 0f c8 48 8b 52 cmp %r12d,0x210(%r14) 0.00 : 2f61: 18 0f je 2f7d 0.00 : 2f63: ca 89 11 48 8b cmpq $0x0,0x28(%r13) 0.00 : 2f68: 54 24 je 2f7d 0.00 : 2f6a: 38 89 42 04 44 cmpl $0x17,0x44(%rsp) 0.00 : 2f6f: 8b 44 24 48 48 83 c2 movl $0x0,0x48(%rsp) 0.00 : 2f76: 08 0.00 : 2f77: 83 6c 24 44 08 48 ja 2b8d 0.00 : 2f7d: 89 54 24 38 45 85 c0 orl $0x8000000,0x4(%rcx) 0.00 : 2f84: 0f 85 bd 00 00 00 45 movl $0x0,0x48(%rsp) 0.00 : 2f8b: 39 0.00 : 2f8c: a6 10 02 test %r12d,%r12d 0.00 : 2f8f: 00 00 je 3001 0.00 : 2f91: 74 1a xor %ebp,%ebp 0.00 : 2f93: 49 83 jmp 2fbf 0.00 : 2f95: 7d 28 00 74 lock andb $0xfd,(%rbx) 50.00 : 2f99: 13 83 7c 24 lock orb $0x1,(%rbx) 0.00 : 2f9d: 44 17 c7 44 24 48 00 movq $0x0,0x38(%rbx) 0.00 : 2fa4: 00 0.00 : 2fa5: 00 00 0f 87 mov 0x4c(%rsp),%edi 0.00 : 2fa9: 10 fc ff ff 81 mov $0x2000,%edx 0.00 : 2fae: 49 04 00 mov %rbx,%rsi 0.00 : 2fb1: 00 00 08 c7 add $0x1,%rbp 0.00 : 2fb5: 44 24 48 00 00 callq 2fba 0.00 : 2fba: 00 00 45 cmp %ebp,%r12d 0.00 : 2fbd: 85 e4 jle 3001 0.00 : 2fbf: 74 70 31 ed eb mov 0x28(%rsp),%rsi 0.00 : 2fc4: 2a f0 80 23 mov (%rsi,%rbp,8),%rbx 0.00 : 2fc8: fd f0 80 0b 01 lock btsl $0x2,(%rbx) 0.00 : 2fcd: 48 c7 sbb %eax,%eax 0.00 : 2fcf: 43 38 test %eax,%eax 0.00 : 2fd1: 00 00 je 2f95 0.00 : 2fd3: 00 00 8b mov %rbx,%rdi 0.00 : 2fd6: 7c 24 4c ba 00 callq 2fdb 0.00 : 2fdb: 20 00 jmp 2f95 0.00 : 2fdd: 00 48 89 mov (%rbx),%rdx 0.00 : 2fe0: de 48 83 c5 lea 0x2(%rdx),%rax 0.00 : 2fe4: 01 e8 00 00 00 lock andb $0xf7,0x2(%rdx) 0.00 : 2fe9: 00 41 39 mov %rbx,%rsi 0.00 : 2fec: ec 7e 42 mov %r14,%rdi 0.00 : 2fef: 48 8b 74 24 28 callq 2ff4 0.00 : 2ff4: 48 8b 1c ee f0 cmpq $0x0,0x28(%r13) 0.00 : 2ff9: 0f ba 2b 02 19 c0 jne 2b8d 0.00 : 2fff: 85 c0 jmp 2f8c 0.00 : 3001: 74 c2 48 89 df e8 00 nopl 0x0(%rax) 0.00 : 3008: 00 00 00 eb b8 callq 300d 0.00 : 300d: 48 8b xor %ebp,%ebp 0.00 : 300f: 13 48 8d xor %r12d,%r12d 0.00 : 3012: 42 02 f0 80 62 jmpq 2b8d 0.00 : 3017: 02 f7 48 89 de mov 0x20(%rsp),%rbx 0.00 : 301c: 4c 89 f7 mov (%rbx),%rax 0.00 : 301f: e8 00 00 mov %rax,(%rdx) 0.00 : 3022: 00 00 49 83 mov 0x8(%rbx),%rax 0.00 : 3026: 7d 28 00 0f mov %rax,0x8(%rdx) 0.00 : 302a: 85 8e fb ff add $0x10,%rdx 0.00 : 302e: ff eb 8b 0f 1f subl $0x10,0x44(%rsp) 0.00 : 3033: 80 00 00 00 00 mov %rdx,0x38(%rsp) 0.00 : 3038: e8 00 00 00 00 jmpq 2f5a 0.00 : 303d: 31 ed 45 test %r12d,%r12d 0.00 : 3040: 31 e4 e9 76 fb ff jne 3484 0.00 : 3046: ff 48 8b mov %r14,%rdi 0.00 : 3049: 5c 24 20 48 8b callq 304e 0.00 : 304e: 03 48 89 test %rax,%rax 0.00 : 3051: 02 48 8b mov %rax,%rbp 0.00 : 3054: 43 08 48 89 42 08 je 3472 0.00 : 305a: 48 83 c2 mov (%rax),%rdx 0.00 : 305d: 10 83 6c 24 mov 0x28(%rdx),%rcx 0.00 : 3061: 44 10 48 89 54 24 movl $0x98393bc0,(%rcx) 0.00 : 3067: 38 e9 1d ff ff ff 45 movl $0x1000000,0x4(%rcx) 0.00 : 306e: 85 e4 0f 85 mov 0x8(%r13),%eax 0.00 : 3072: 3e 04 bswap %eax 0.00 : 3074: 00 00 4c mov %eax,0x8(%rcx) 0.00 : 3077: 89 f7 e8 00 mov 0x28(%rdx),%rax 0.00 : 307b: 00 00 00 48 add $0xc,%rax 0.00 : 307f: 85 c0 48 89 c5 mov %rax,0x38(%rsp) 0.00 : 3084: 0f 84 18 04 mov 0x20(%rdx),%rax 0.00 : 3088: 00 00 48 sub $0xc,%eax 0.00 : 308b: 8b 10 48 8b mov %eax,0x44(%rsp) 0.00 : 308f: 4a 28 c7 01 lea 0x1(%rdx),%rax 0.00 : 3093: c0 3b 39 98 c7 lock orb $0x80,0x1(%rdx) 0.00 : 3098: 41 04 00 00 lock orb $0x2,(%rdx) 0.00 : 309c: 00 01 41 8b 45 mov 0x28(%rsp),%rsi 0.00 : 30a1: 08 0f c8 mov %rbp,%rdi 0.00 : 30a4: 89 41 08 48 8b 42 mov $0x1,%r12d 0.00 : 30aa: 28 48 83 mov %rdx,(%rsi) 0.00 : 30ad: c0 0c 48 89 44 mov $0x6,%edx 0.00 : 30b2: 24 38 48 mov %r13,%rsi 0.00 : 30b5: 8b 42 20 83 e8 callq 30ba 0.00 : 30ba: 0c 89 44 24 44 48 8d movl $0x1,0x48(%rsp) 0.00 : 30c1: 42 0.00 : 30c2: 01 f0 80 4a 01 jmpq 2ba9 0.00 : 30c7: 80 f0 80 0a 02 callq 30cc 0.00 : 30cc: 48 8b test %eax,%eax 0.00 : 30ce: 74 24 xchg %ax,%ax 0.00 : 30d0: 28 48 je 30db 0.00 : 30d2: 89 ef 41 bc mov 0x50(%r13),%rdx 0.00 : 30d6: 01 00 00 00 48 jmpq 2bec 0.00 : 30db: 89 16 ba mov (%rbx),%rax 0.00 : 30de: 06 00 test $0x1,%al 0.00 : 30e0: 00 00 4c 89 mov 0x34(%rsp),%eax 0.00 : 30e4: ee e8 00 00 cmove %r12d,%eax 0.00 : 30e8: 00 00 c7 44 mov %eax,0x34(%rsp) 0.00 : 30ec: 24 48 01 00 lea 0x1(%rbx),%rax 0.00 : 30f0: 00 00 e9 e2 fa lock andb $0x7f,0x1(%rbx) 0.00 : 30f5: ff ff e8 mov %rbp,%rsi 0.00 : 30f8: 00 00 00 mov %r14,%rdi 0.00 : 30fb: 00 85 c0 66 90 callq 3100 0.00 : 3100: 74 09 49 mov %rbp,%rdi 0.00 : 3103: 8b 55 50 e9 11 callq 3108 0.00 : 3108: fb ff ff mov %rbx,%rdi 0.00 : 310b: 48 8b 03 a8 01 callq 3110 0.00 : 3110: 8b 44 24 mov 0x60(%rbx),%eax 0.00 : 3113: 34 41 test %eax,%eax 0.00 : 3115: 0f 44 c4 89 44 24 jne 346e 0.00 : 311b: 34 48 8d mov %rbx,%rdi 0.00 : 311e: 43 01 f0 80 63 callq 3123 0.00 : 3123: 01 7f 48 89 mov 0x58(%r13),%rax 0.00 : 3127: ee 4c 89 f7 mov 0x40(%rax),%rdi 0.00 : 312b: e8 00 00 mov (%rdi),%rbx 0.00 : 312e: 00 00 48 89 lea 0x1(%rbx),%rax 0.00 : 3132: ef e8 00 00 00 lock andb $0x7f,0x1(%rbx) 0.00 : 3137: 00 48 89 mov (%rbx),%rax 0.00 : 313a: df e8 00 00 00 test $0x80000,%eax 0.00 : 313f: 00 8b 43 60 85 c0 je 346a 0.00 : 3145: 0f 85 53 03 00 mov $0x3,%edx 0.00 : 314a: 00 48 89 mov %r13,%rsi 0.00 : 314d: df e8 00 00 00 callq 3152 0.00 : 3152: 00 49 8b mfence 0.00 : 3155: 45 58 48 8b 78 mov $0x16,%esi 0.00 : 315a: 40 48 8b mov %rbx,%rdi 0.00 : 315d: 1f 48 8d 43 01 callq 3162 0.00 : 3162: f0 80 63 mov %rbx,%rdi 0.00 : 3165: 01 7f 48 8b 03 callq 316a 0.00 : 316a: a9 00 00 08 00 jmpq 30d2 0.00 : 316f: 0f nop 0.00 : 3170: 84 25 03 00 00 callq 3175 0.00 : 3175: ba 03 test %eax,%eax 0.00 : 3177: 00 00 jne 31ae 0.00 : 3179: 00 4c 89 mov (%rbx),%rax 0.00 : 317c: ee e8 00 00 mov 0x34(%rsp),%edx 0.00 : 3180: 00 00 test $0x1,%al 0.00 : 3182: 0f ae f0 be lea 0x1(%rbx),%rax 0.00 : 3186: 16 00 00 00 cmove %r12d,%edx 0.00 : 318a: 48 89 df e8 mov %edx,0x34(%rsp) 0.00 : 318e: 00 00 00 00 48 lock andb $0x7f,0x1(%rbx) 0.00 : 3193: 89 df e8 mov %rbp,%rsi 0.00 : 3196: 00 00 00 mov %r14,%rdi 0.00 : 3199: 00 e9 63 ff ff callq 319e 0.00 : 319e: ff 90 e8 mov %rbp,%rdi 0.00 : 31a1: 00 00 00 00 85 callq 31a6 0.00 : 31a6: c0 75 35 mov %rbx,%rdi 0.00 : 31a9: 48 8b 03 8b 54 callq 31ae 0.00 : 31ae: 24 34 a8 01 mov 0x60(%r13),%rdx 0.00 : 31b2: 48 8d 43 01 41 jmpq 2c31 0.00 : 31b7: 0f 44 d4 mov (%rbx),%rax 0.00 : 31ba: 89 54 test $0x2,%al 0.00 : 31bc: 24 34 f0 80 63 01 jne 3257 0.00 : 31c2: 7f 48 89 mov %rbp,%rdi 0.00 : 31c5: ee 4c 89 f7 e8 callq 31ca 0.00 : 31ca: 00 00 00 00 48 cmpq $0x0,0x28(%rbp) 0.00 : 31cf: 89 ef je 323d 0.00 : 31d1: e8 00 00 00 00 lock andb $0xef,0x2(%rbx) 0.00 : 31d6: 48 89 df e8 00 jmpq 2e0a 0.00 : 31db: 00 00 00 49 mov 0x18(%rbp),%rdi 0.00 : 31df: 8b 55 60 test %rdi,%rdi 0.00 : 31e2: e9 7a fa ff ff 48 je 2da2 0.00 : 31e8: 8b 03 a8 02 mov 0x20(%rbx),%rax 0.00 : 31ec: 0f 85 95 00 00 mov $0xffffffff,%esi 0.00 : 31f1: 00 48 89 ef sub $0x1,%rax 0.00 : 31f5: e8 00 00 00 shr $0xb,%rax 0.00 : 31f9: 00 48 83 7d 28 00 74 nopl 0x0(%rax) 0.00 : 3200: 6c f0 80 add $0x1,%esi 0.00 : 3203: 63 02 ef shr %rax 0.00 : 3206: e9 2f jne 3200 0.00 : 3208: fc ff ff 48 8b callq 320d 0.00 : 320d: 7d 18 48 85 ff 0f 84 movq $0x0,0x18(%rbp) 0.00 : 3214: ba 0.00 : 3215: fb ff ff 48 8b jmpq 2da2 0.00 : 321a: 43 20 be ff ff lock andb $0xfe,0x2(%rbx) 0.00 : 321f: ff ff 48 83 e8 lock andb $0xf7,0x2(%rbx) 0.00 : 3224: 01 48 c1 e8 lock andb $0xdf,(%rbx) 0.00 : 3228: 0b 0f 1f 80 lock andb $0xbf,(%rbx) 0.00 : 322c: 00 00 00 00 lock andb $0xf7,(%rbx) 0.00 : 3230: 83 c6 01 48 d1 e8 75 movq $0x0,0x30(%rbx) 0.00 : 3237: f8 0.00 : 3238: e8 00 00 00 00 jmpq 2dd9 0.00 : 323d: 48 c7 45 18 00 lock andb $0xef,0x2(%rbx) 0.00 : 3242: 00 00 00 mov %rbx,%rdi 0.00 : 3245: e9 88 fb ff ff callq 324a 0.00 : 324a: f0 80 63 mov %rbx,%rdi 0.00 : 324d: 02 fe f0 80 63 callq 2260 0.00 : 3252: 02 f7 f0 80 23 jmpq 2e0a 0.00 : 3257: df f0 ud2 0.00 : 3259: 80 23 jmp 3259 0.00 : 325b: bf f0 80 23 f7 nopl 0x0(%rax,%rax,1) 0.00 : 3260: 48 c7 43 30 cmp 0x50(%r14),%rax 0.00 : 3264: 00 00 00 00 e9 9c je 2d54 0.00 : 326a: fb ff ud2 0.00 : 326c: ff f0 jmp 326c 0.00 : 326e: 80 63 02 ef 48 cmpl $0x4,0xc(%r13) 0.00 : 3273: 89 df e8 00 00 00 jne 33bb 0.00 : 3279: 00 48 89 df e8 0e f0 movl $0x5,0xc(%r13) 0.00 : 3280: ff 0.00 : 3281: ff e9 b3 fb cmp 0x58(%r14),%r13 0.00 : 3285: ff ff 0f 0b eb fe jne 33b7 0.00 : 328b: 0f 1f 44 00 mov 0x8(%r13),%eax 0.00 : 328f: 00 49 3b 46 50 0f 84 movq $0x0,0x58(%r14) 0.00 : 3296: ea 0.00 : 3297: fa ff ff 0f 0b eb fe mov %eax,0x160(%r14) 0.00 : 329e: 41 83 7d 0c 04 callq 32a3 0.00 : 32a3: 0f 85 42 01 00 00 41 mov 0x218(%r14),%rdx 0.00 : 32aa: c7 45 0c 05 00 sub 0x18(%rsp),%rax 0.00 : 32af: 00 00 4d test %rdx,%rdx 0.00 : 32b2: 3b 6e 58 0f 85 2c je 33ab 0.00 : 32b8: 01 00 00 41 lea (%rax,%rax,2),%rax 0.00 : 32bc: 8b 45 08 add %rdx,%rax 0.00 : 32bf: 49 c7 46 58 shr $0x2,%rax 0.00 : 32c3: 00 00 00 00 41 89 86 mov %rax,0x218(%r14) 0.00 : 32ca: 60 01 00 00 e8 mov 0x10(%rsp),%rax 0.00 : 32cf: 00 00 00 00 49 incw 0x24(%r14) 0.00 : 32d4: 8b 96 18 02 00 cmpq $0x0,0x40(%r13) 0.00 : 32d9: 00 48 2b 44 24 18 je 3390 0.00 : 32df: 48 85 d2 0f mov 0x60(%r14),%rdx 0.00 : 32e3: 84 f3 00 test %rdx,%rdx 0.00 : 32e6: 00 00 48 8d 04 40 je 337f 0.00 : 32ec: 48 01 d0 48 mov %rdx,0x78(%r13) 0.00 : 32f0: c1 e8 02 49 89 86 18 mov 0x80(%rdx),%rax 0.00 : 32f7: 02 00 00 48 8b 44 24 mov %rax,0x80(%r13) 0.00 : 32fe: 10 66 41 ff 46 24 49 mov %r13,0x80(%rdx) 0.00 : 3305: 83 7d 40 00 0f 84 b1 mov 0x80(%r13),%rax 0.00 : 330c: 00 00 00 49 mov %r13,0x78(%rax) 0.00 : 3310: 8b 56 60 48 85 d2 0f incw 0x14c(%r14) 0.00 : 3317: 84 0.00 : 3318: 93 00 00 00 49 89 mov 0x0(%rip),%eax # 331e 0.00 : 331e: 55 78 test %eax,%eax 0.00 : 3320: 48 8b je 3349 0.00 : 3322: 82 80 00 00 00 49 89 mov 0x0(%rip),%rbx # 3329 0.00 : 3329: 85 80 00 test %rbx,%rbx 0.00 : 332c: 00 00 je 3349 0.00 : 332e: 4c 89 aa mov (%rbx),%rax 0.00 : 3331: 80 00 00 00 mov 0x8(%rbx),%rdi 0.00 : 3335: 49 8b 85 80 add $0x10,%rbx 0.00 : 3339: 00 00 00 mov %r13,%rdx 0.00 : 333c: 4c 89 68 mov %r14,%rsi 0.00 : 333f: 78 66 callq *%rax 0.00 : 3341: 41 ff 86 mov (%rbx),%rax 0.00 : 3344: 4c 01 00 test %rax,%rax 0.00 : 3347: 00 8b jne 3331 0.00 : 3349: 05 00 00 00 00 85 c0 lea 0x98(%r14),%rdi 0.00 : 3350: 74 27 xor %ecx,%ecx 0.00 : 3352: 48 8b 1d 00 00 mov $0x1,%edx 0.00 : 3357: 00 00 48 85 db mov $0x3,%esi 0.00 : 335c: 74 1b 48 8b 03 callq 3361 0.00 : 3361: 48 8b 7b 08 48 83 c3 add $0xc8,%rsp 0.00 : 3368: 10 pop %rbx 0.00 : 3369: 4c pop %rbp 0.00 : 336a: 89 ea pop %r12 0.00 : 336c: 4c 89 pop %r13 0.00 : 336e: f6 ff pop %r14 0.00 : 3370: d0 48 pop %r15 0.00 : 3372: 8b retq 0.00 : 3373: 03 48 ud2 0.00 : 3375: 85 c0 jmp 3375 0.00 : 3377: 75 e8 ud2 0.00 : 3379: 49 8d jmp 3379 0.00 : 337b: be 98 ud2 0.00 : 337d: 00 00 jmp 337d 0.00 : 337f: 00 31 c9 ba mov %r13,0x60(%r14) 0.00 : 3383: 01 00 00 00 mov %r13,0x78(%r13) 0.00 : 3387: be 03 00 00 00 e8 00 mov %r13,0x80(%r13) 0.00 : 338e: 00 00 jmp 3310 0.00 : 3390: 00 48 81 c4 c8 cmpq $0x0,0x48(%r13) 0.00 : 3395: 00 00 00 5b 5d 41 jne 32df 0.00 : 339b: 5c 41 5d mov %r13,%rsi 0.00 : 339e: 41 5e 41 mov %r14,%rdi 0.00 : 33a1: 5f c3 0f 0b eb callq 33a6 0.00 : 33a6: fe 0f 0b eb fe jmpq 3310 0.00 : 33ab: 0f 0b eb fe 4d 89 6e mov %rax,0x218(%r14) 0.00 : 33b2: 60 4d 89 6d 78 jmpq 32ca 0.00 : 33b7: 4d 89 ud2 0.00 : 33b9: ad 80 jmp 33b9 0.00 : 33bb: 00 00 ud2 0.00 : 33bd: 00 eb jmp 33bd 0.00 : 33bf: 80 49 ud2 0.00 : 33c1: 83 7d jmp 33c1 0.00 : 33c3: 48 00 ud2 0.00 : 33c5: 0f 85 jmp 33c5 0.00 : 33c7: 44 ff ud2 0.00 : 33c9: ff ff jmp 33c9 0.00 : 33cb: 4c 89 ee mov %r14,%rdi 0.00 : 33ce: 4c 89 f7 e8 00 callq 33d3 0.00 : 33d3: 00 00 00 test %rax,%rax 0.00 : 33d6: e9 65 ff mov %rax,%rbp 0.00 : 33d9: ff ff je 3428 0.00 : 33db: 49 89 86 mov (%rax),%rbx 0.00 : 33de: 18 02 00 00 mov 0x28(%rbx),%rdx 0.00 : 33e2: e9 13 ff ff ff 0f movl $0x98393bc0,(%rdx) 0.00 : 33e8: 0b eb fe 0f 0b eb fe movl $0x2000000,0x4(%rdx) 0.00 : 33ef: 0f 0b eb fe mov 0x8(%r13),%eax 0.00 : 33f3: 0f 0b bswap %eax 0.00 : 33f5: eb fe 0f mov %eax,0x8(%rdx) 0.00 : 33f8: 0b eb fe 4c lock orb $0x2,(%rbx) 0.00 : 33fc: 89 f7 e8 00 testb $0x20,(%r14) 0.00 : 3400: 00 00 je 345d 0.00 : 3402: 00 48 85 c0 48 mov $0x801091,%esi 0.00 : 3407: 89 c5 74 mov %rbx,%rdi 0.00 : 340a: 4d 48 8b 18 48 callq 340f 0.00 : 340f: 8b 53 28 mov %eax,%r12d 0.00 : 3412: c7 02 c0 3b lock decl 0x60(%rbx) 0.00 : 3416: 39 98 c7 mov %rbp,%rdi 0.00 : 3419: 42 04 00 00 00 callq 341e 0.00 : 341e: 02 41 8b 45 cmp $0xfffffffb,%r12d 0.00 : 3422: 08 0f c8 89 42 08 jne 2c9e 0.00 : 3428: f0 80 0b 02 41 f6 06 movl $0xfffffffb,0x34(%rsp) 0.00 : 342f: 20 0.00 : 3430: 74 5b be 91 mov 0x34(%rsp),%esi 0.00 : 3434: 10 80 00 mov %r14,%rdi 0.00 : 3437: 48 89 df e8 00 callq 343c 0.00 : 343c: 00 00 00 41 89 jmpq 2caa 0.00 : 3441: c4 f0 ff 4b mov 0x34(%rsp),%esi 0.00 : 3445: 60 48 89 mov %r14,%rdi 0.00 : 3448: ef e8 00 00 00 callq 344d 0.00 : 344d: 00 41 83 nopl (%rax) 0.00 : 3450: fc fb 0f 85 76 jmpq 2c6d 0.00 : 3455: f8 ff ud2 0.00 : 3457: ff c7 jmp 3457 0.00 : 3459: 44 24 ud2 0.00 : 345b: 34 fb jmp 345b 0.00 : 345d: ff ff ff mov %rbx,%rdi 0.00 : 3460: 8b 74 24 34 4c callq 3465 0.00 : 3465: 89 f7 e8 mov %eax,%r12d 0.00 : 3468: 00 00 jmp 3412 0.00 : 346a: 00 00 ud2 0.00 : 346c: e9 69 jmp 346c 0.00 : 346e: f8 ff ud2 0.00 : 3470: ff 8b jmp 3470 0.00 : 3472: 74 24 34 4c 89 mov $0xfffffffb,%esi 0.00 : 3477: f7 e8 00 mov %r14,%rdi 0.00 : 347a: 00 00 00 0f 1f callq 347f 0.00 : 347f: 00 e9 18 f8 ff jmpq 2b8d 0.00 : 3484: ff 0f ud2 0.00 : 3486: 0b eb jmp 3486 0.00 : 3488: fe 0f ud2 0.00 : 348a: 0b eb jmp 348a 0.00 : 348c: fe 48 ud2 0.00 : 348e: 89 df jmp 348e 0.00 : 3490: e8 00 00 00 00 41 89 mov 0x140(%r14),%rdi 0.00 : 3497: c4 eb a8 0f 0b eb fe lea 0x80(%rsp),%rsi 0.00 : 349e: 0f 0.00 : 349f: 0b eb fe be fb callq 34a4 0.00 : 34a4: ff ff ff 4c 89 f7 e8 mov $0x0,%rdi 0.00 : 34ab: 00 00 00 mov %rax,%rsi 0.00 : 34ae: 00 e9 xor %eax,%eax 0.00 : 34b0: 09 f7 ff ff 0f callq 34b5 0.00 : 34b5: 0b eb fe 0f testb $0x40,(%r14) 0.00 : 34b9: 0b eb je 34c7 0.00 : 34bb: fe 0f 0b eb mov 0x34(%rsp),%esi 0.00 : 34bf: fe 49 8b mov %r14,%rdi 0.00 : 34c2: be 40 01 00 00 callq 34c7 0.00 : 34c7: 48 8d b4 24 80 00 00 movl $0x0,0x34(%rsp) 0.00 : 34ce: 00 0.00 : 34cf: e8 00 00 00 00 jmpq 2ae4 0.00 : 34d4: 48 c7 ud2 0.00 : 34d6: c7 00 jmp 34d6 0.00 : 34d8: 00 00 00 48 89 mov $0x1,%esi 0.00 : 34dd: c6 31 c0 e8 00 callq 34e2 0.00 : 34e2: 00 00 00 41 f6 jmpq 2769 0.00 : 34e7: 06 40 ud2 0.00 : 34e9: 74 0c jmp 34e9 0.00 : 34eb: 8b 74 ud2 0.00 : 34ed: 24 34 jmp 34ed 0.00 : 34ef: 4c 89 ud2 0.00 : 34f1: f7 e8 jmp 34f1 0.00 : 34f3: 00 00 00 00 mov 0x10(%rbx),%rax 0.00 : 34f7: c7 44 24 34 00 lock btsl $0x0,(%rax) 0.00 : 34fc: 00 00 sbb %edx,%edx 0.00 : 34fe: 00 e9 test %edx,%edx 0.00 : 3500: 10 f6 je 3522 0.00 : 3502: ff ff 0f 0b incw (%r15) 0.00 : 3506: eb fe be 01 mov 0x10(%rbx),%rdi 0.00 : 350a: 00 00 00 e8 00 lock btsl $0x0,(%rdi) 0.00 : 350f: 00 00 sbb %eax,%eax 0.00 : 3511: 00 e9 test %eax,%eax 0.00 : 3513: 82 f2 je 351a 0.00 : 3515: ff ff 0f 0b eb callq 351a 0.00 : 351a: fe 0f 0b mov %r15,%rdi 0.00 : 351d: eb fe 0f 0b eb callq 3522 0.00 : 3522: fe 48 8b 43 mov 0x10(%rbx),%rdi 0.00 : 3526: 10 f0 0f ba mov 0x18(%rdi),%rdx 0.00 : 352a: 28 00 19 test %rdx,%rdx 0.00 : 352d: d2 85 je 353c 0.00 : 352f: d2 74 20 66 lea 0x7a(%rdx),%rax 0.00 : 3533: 41 ff 07 48 8b lock orb $0x80,0x7a(%rdx) 0.00 : 3538: 7b 10 f0 0f mov 0x10(%rbx),%rdi 0.00 : 353c: ba 2f 00 19 c0 callq 3541 0.00 : 3541: 85 c0 74 05 mov 0x10(%rbx),%rax 0.00 : 3545: e8 00 00 00 lock orb $0x4,(%rax) 0.00 : 3549: 00 4c 89 ff e8 00 00 movl $0xfffffffb,0x34(%rsp) 0.00 : 3550: 00 0.00 : 3551: 00 48 8b 7b 10 jmpq 2aa1 : 3556: 48 8b 57 18 48 85 d2 nopw %cs:0x0(%rax,%rax,1) : 355d: 74 0d 48 : 3560: 8d 42 7a test %rdi,%rdi : 3563: f0 80 je 3570 : 3565: 4a 7a 80 48 8b jmpq 356a : 356a: 7b 10 e8 00 00 00 nopw 0x0(%rax,%rax,1) : 3570: 00 48 repz retq : 3572: 8b 43 10 f0 80 08 04 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 3579: c7 44 24 34 fb ff ff : 3580: ff e9 push %r15 : 3582: 4b f5 ff ff 66 mov $0x20000,%edx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002a2f0 <_nl_load_locale>: 0.00 : 2a2f0: 55 push %rbp 25.00 : 2a2f1: 31 c0 xor %eax,%eax 0.00 : 2a2f3: 48 89 e5 mov %rsp,%rbp 0.00 : 2a2f6: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 2a2fa: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 2a2fe: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 2a302: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 2a306: 49 89 fe mov %rdi,%r14 0.00 : 2a309: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 2a30d: 48 81 ec e0 00 00 00 sub $0xe0,%rsp 0.00 : 2a314: 89 b5 30 ff ff ff mov %esi,-0xd0(%rbp) 0.00 : 2a31a: c7 47 08 01 00 00 00 movl $0x1,0x8(%rdi) 0.00 : 2a321: 48 c7 47 10 00 00 00 movq $0x0,0x10(%rdi) 0.00 : 2a328: 00 0.00 : 2a329: 31 f6 xor %esi,%esi 0.00 : 2a32b: 48 8b 3f mov (%rdi),%rdi 0.00 : 2a32e: e8 a6 2e 0a 00 callq cd1d9 <__open_nocancel> 0.00 : 2a333: 48 63 d8 movslq %eax,%rbx 0.00 : 2a336: 41 89 c4 mov %eax,%r12d 0.00 : 2a339: 48 85 db test %rbx,%rbx 0.00 : 2a33c: 0f 88 c1 00 00 00 js 2a403 <_nl_load_locale+0x113> 0.00 : 2a342: 4c 8d ad 40 ff ff ff lea -0xc0(%rbp),%r13 0.00 : 2a349: 89 c6 mov %eax,%esi 0.00 : 2a34b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 2a350: 4c 89 ea mov %r13,%rdx 0.00 : 2a353: e8 68 24 0a 00 callq cc7c0 <__fxstat> 0.00 : 2a358: 85 c0 test %eax,%eax 0.00 : 2a35a: 0f 88 e8 00 00 00 js 2a448 <_nl_load_locale+0x158> 0.00 : 2a360: 8b 85 58 ff ff ff mov -0xa8(%rbp),%eax 0.00 : 2a366: 25 00 f0 00 00 and $0xf000,%eax 0.00 : 2a36b: 3d 00 40 00 00 cmp $0x4000,%eax 0.00 : 2a370: 0f 84 7e 01 00 00 je 2a4f4 <_nl_load_locale+0x204> 0.00 : 2a376: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 2a37d: 00 00 0.00 : 2a37f: 48 8b 15 b2 7a 34 00 mov 0x347ab2(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 2a386: 45 31 c9 xor %r9d,%r9d 0.00 : 2a389: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 2a390: 31 ff xor %edi,%edi 0.00 : 2a392: 45 89 e0 mov %r12d,%r8d 0.00 : 2a395: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 2a39a: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 2a3a0: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) 0.00 : 2a3a7: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 2a3aa: 89 95 34 ff ff ff mov %edx,-0xcc(%rbp) 0.00 : 2a3b0: ba 01 00 00 00 mov $0x1,%edx 0.00 : 2a3b5: e8 96 d8 0a 00 callq d7c50 0.00 : 2a3ba: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 2a3be: 48 89 c3 mov %rax,%rbx 0.00 : 2a3c1: 0f 84 8d 00 00 00 je 2a454 <_nl_load_locale+0x164> 0.00 : 2a3c7: 49 63 fc movslq %r12d,%rdi 0.00 : 2a3ca: b8 03 00 00 00 mov $0x3,%eax 0.00 : 2a3cf: 0f 05 syscall 0.00 : 2a3d1: 48 85 db test %rbx,%rbx 0.00 : 2a3d4: 74 2d je 2a403 <_nl_load_locale+0x113> 0.00 : 2a3d6: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 25.00 : 2a3dd: 8b bd 30 ff ff ff mov -0xd0(%rbp),%edi 0.00 : 2a3e3: 48 89 de mov %rbx,%rsi 0.00 : 2a3e6: e8 75 fb ff ff callq 29f60 <_nl_intern_locale_data> 0.00 : 2a3eb: 48 85 c0 test %rax,%rax 0.00 : 2a3ee: 0f 84 b4 01 00 00 je 2a5a8 <_nl_load_locale+0x2b8> 0.00 : 2a3f4: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 2a3fb: 44 89 68 18 mov %r13d,0x18(%rax) 0.00 : 2a3ff: 49 89 46 10 mov %rax,0x10(%r14) 0.00 : 2a403: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 2a407: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 2a40b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 2a40f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 2a413: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 2a417: c9 leaveq 0.00 : 2a418: c3 retq 0.00 : 2a419: 48 89 df mov %rbx,%rdi 0.00 : 2a41c: 49 63 dc movslq %r12d,%rbx 0.00 : 2a41f: e8 7c 44 ff ff callq 1e8a0 0.00 : 2a424: 4d 85 ed test %r13,%r13 0.00 : 2a427: 75 1f jne 2a448 <_nl_load_locale+0x158> 0.00 : 2a429: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 2a430: 48 8b 15 01 7a 34 00 mov 0x347a01(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 2a437: 49 63 dc movslq %r12d,%rbx 0.00 : 2a43a: c7 04 11 16 00 00 00 movl $0x16,(%rcx,%rdx,1) 0.00 : 2a441: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2a448: 48 89 df mov %rbx,%rdi 0.00 : 2a44b: b8 03 00 00 00 mov $0x3,%eax 0.00 : 2a450: 0f 05 syscall 0.00 : 2a452: eb af jmp 2a403 <_nl_load_locale+0x113> 0.00 : 2a454: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 2a45b: 48 8b 0d d6 79 34 00 mov 0x3479d6(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 2a462: 31 db xor %ebx,%ebx 0.00 : 2a464: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 2a46a: 83 3c 08 26 cmpl $0x26,(%rax,%rcx,1) 0.00 : 2a46e: 0f 85 53 ff ff ff jne 2a3c7 <_nl_load_locale+0xd7> 0.00 : 2a474: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 2a47b: 45 31 ed xor %r13d,%r13d 0.00 : 2a47e: e8 cd 43 ff ff callq 1e850 0.00 : 2a483: 48 85 c0 test %rax,%rax 0.00 : 2a486: 48 89 c3 mov %rax,%rbx 0.00 : 2a489: 0f 84 38 ff ff ff je 2a3c7 <_nl_load_locale+0xd7> 0.00 : 2a48f: 4c 8b bd 70 ff ff ff mov -0x90(%rbp),%r15 0.00 : 2a496: 4d 85 ff test %r15,%r15 0.00 : 2a499: 7e 3a jle 2a4d5 <_nl_load_locale+0x1e5> 0.00 : 2a49b: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 2a4a2: eb 0b jmp 2a4af <_nl_load_locale+0x1bf> 0.00 : 2a4a4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 2a4a8: 4c 01 ad 38 ff ff ff add %r13,-0xc8(%rbp) 0.00 : 2a4af: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 2a4b6: 4c 89 fa mov %r15,%rdx 0.00 : 2a4b9: 44 89 e7 mov %r12d,%edi 0.00 : 2a4bc: e8 08 31 0a 00 callq cd5c9 <__read_nocancel> 0.00 : 2a4c1: 4c 63 e8 movslq %eax,%r13 0.00 : 2a4c4: 4d 85 ed test %r13,%r13 0.00 : 2a4c7: 0f 8e 4c ff ff ff jle 2a419 <_nl_load_locale+0x129> 0.00 : 2a4cd: 4d 29 ef sub %r13,%r15 0.00 : 2a4d0: 4d 85 ff test %r15,%r15 0.00 : 2a4d3: 7f d3 jg 2a4a8 <_nl_load_locale+0x1b8> 0.00 : 2a4d5: 8b 8d 34 ff ff ff mov -0xcc(%rbp),%ecx 0.00 : 2a4db: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : 2a4e2: 45 31 ed xor %r13d,%r13d 0.00 : 2a4e5: 48 8b 05 4c 79 34 00 mov 0x34794c(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 2a4ec: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 2a4ef: e9 d3 fe ff ff jmpq 2a3c7 <_nl_load_locale+0xd7> 25.00 : 2a4f4: 48 89 df mov %rbx,%rdi 0.00 : 2a4f7: 66 b8 03 00 mov $0x3,%ax 0.00 : 2a4fb: 0f 05 syscall 25.00 : 2a4fd: 49 8b 3e mov (%r14),%rdi 0.00 : 2a500: e8 ab 66 05 00 callq 80bb0 <__GI_strlen> 0.00 : 2a505: 48 63 8d 30 ff ff ff movslq -0xd0(%rbp),%rcx 0.00 : 2a50c: 48 8d 15 83 c5 0f 00 lea 0xfc583(%rip),%rdx # 126a96 <_nl_category_name_sizes> 0.00 : 2a513: 49 8b 36 mov (%r14),%rsi 0.00 : 2a516: 44 0f b6 3c 0a movzbl (%rdx,%rcx,1),%r15d 0.00 : 2a51b: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 2a51f: 48 8d 54 10 24 lea 0x24(%rax,%rdx,1),%rdx 0.00 : 2a524: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 2a528: 48 29 d4 sub %rdx,%rsp 0.00 : 2a52b: 48 8d 15 57 c5 0f 00 lea 0xfc557(%rip),%rdx # 126a89 <_nl_category_name_idxs> 0.00 : 2a532: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 2a537: 0f b6 0c 0a movzbl (%rdx,%rcx,1),%ecx 0.00 : 2a53b: 48 8d 15 be c4 0f 00 lea 0xfc4be(%rip),%rdx # 126a00 <_nl_category_names> 0.00 : 2a542: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 2a546: 48 89 df mov %rbx,%rdi 0.00 : 2a549: 4c 8d 24 11 lea (%rcx,%rdx,1),%r12 0.00 : 2a54d: 48 89 c2 mov %rax,%rdx 0.00 : 2a550: e8 3b 9a 05 00 callq 83f90 <__mempcpy> 0.00 : 2a555: 49 8d 57 01 lea 0x1(%r15),%rdx 0.00 : 2a559: 48 8d 78 05 lea 0x5(%rax),%rdi 0.00 : 2a55d: 4c 89 e6 mov %r12,%rsi 0.00 : 2a560: c7 00 2f 53 59 53 movl $0x5359532f,(%rax) 0.00 : 2a566: c6 40 04 5f movb $0x5f,0x4(%rax) 0.00 : 2a56a: e8 e1 a1 05 00 callq 84750 0.00 : 2a56f: 31 f6 xor %esi,%esi 0.00 : 2a571: 31 c0 xor %eax,%eax 0.00 : 2a573: 48 89 df mov %rbx,%rdi 0.00 : 2a576: e8 5e 2c 0a 00 callq cd1d9 <__open_nocancel> 0.00 : 2a57b: 85 c0 test %eax,%eax 0.00 : 2a57d: 41 89 c4 mov %eax,%r12d 0.00 : 2a580: 0f 88 7d fe ff ff js 2a403 <_nl_load_locale+0x113> 0.00 : 2a586: 4c 89 ea mov %r13,%rdx 0.00 : 2a589: 89 c6 mov %eax,%esi 0.00 : 2a58b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 2a590: e8 2b 22 0a 00 callq cc7c0 <__fxstat> 0.00 : 2a595: 85 c0 test %eax,%eax 0.00 : 2a597: 49 63 dc movslq %r12d,%rbx 0.00 : 2a59a: 0f 89 d6 fd ff ff jns 2a376 <_nl_load_locale+0x86> 0.00 : 2a5a0: e9 a3 fe ff ff jmpq 2a448 <_nl_load_locale+0x158> 0.00 : 2a5a5: 0f 1f 00 nopl (%rax) 0.00 : 2a5a8: 41 83 ed 01 sub $0x1,%r13d 0.00 : 2a5ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 2a5b0: 0f 85 4d fe ff ff jne 2a403 <_nl_load_locale+0x113> 0.00 : 2a5b6: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 2a5bd: 48 89 df mov %rbx,%rdi 0.00 : 2a5c0: e8 bb d6 0a 00 callq d7c80 0.00 : 2a5c5: e9 39 fe ff ff jmpq 2a403 <_nl_load_locale+0x113> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/src/dbt3/src/dbgen/qgen ---------------------------------------------- 50.00 /home/Computational/mark/src/dbt3/src/dbgen/build.c:419 50.00 /home/Computational/mark/src/dbt3/src/dbgen/build.c:428 Percent | Source code & Disassembly of /home/Computational/mark/src/dbt3/src/dbgen/qgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000401290 : : } : }; : : long : mk_time(DSS_HUGE index, dss_time_t * t) : { 0.00 : 401290: 41 57 push %r15 : long m = 0; : long y; : long d; : : t->timekey = index + JDAY_BASE; 0.00 : 401292: 48 8d 87 63 1f 00 00 lea 0x1f63(%rdi),%rax : } : }; : : long : mk_time(DSS_HUGE index, dss_time_t * t) : { 0.00 : 401299: 41 56 push %r14 0.00 : 40129b: 41 55 push %r13 0.00 : 40129d: 41 54 push %r12 0.00 : 40129f: 55 push %rbp : long m = 0; : long y; : long d; : : t->timekey = index + JDAY_BASE; : y = julian(index + STARTDATE - 1) / 1000; 0.00 : 4012a0: 48 bd cf f7 53 e3 a5 movabs $0x20c49ba5e353f7cf,%rbp 0.00 : 4012a7: 9b c4 20 : } : }; : : long : mk_time(DSS_HUGE index, dss_time_t * t) : { 0.00 : 4012aa: 53 push %rbx 0.00 : 4012ab: 48 89 fb mov %rdi,%rbx : long m = 0; : long y; : long d; : : t->timekey = index + JDAY_BASE; : y = julian(index + STARTDATE - 1) / 1000; 0.00 : 4012ae: 48 81 c3 60 67 01 00 add $0x16760,%rbx : } : }; : : long : mk_time(DSS_HUGE index, dss_time_t * t) : { 0.00 : 4012b5: 48 83 ec 08 sub $0x8,%rsp : long m = 0; : long y; : long d; : : t->timekey = index + JDAY_BASE; : y = julian(index + STARTDATE - 1) / 1000; 0.00 : 4012b9: 48 89 df mov %rbx,%rdi : { : long m = 0; : long y; : long d; : : t->timekey = index + JDAY_BASE; 0.00 : 4012bc: 48 89 06 mov %rax,(%rsi) : } : }; : : long : mk_time(DSS_HUGE index, dss_time_t * t) : { 0.00 : 4012bf: 48 89 34 24 mov %rsi,(%rsp) : long m = 0; : long y; : long d; : : t->timekey = index + JDAY_BASE; : y = julian(index + STARTDATE - 1) / 1000; 0.00 : 4012c3: e8 38 0f 00 00 callq 402200 0.00 : 4012c8: 48 89 c1 mov %rax,%rcx : d = julian(index + STARTDATE - 1) % 1000; 0.00 : 4012cb: 48 89 df mov %rbx,%rdi : long m = 0; : long y; : long d; : : t->timekey = index + JDAY_BASE; : y = julian(index + STARTDATE - 1) / 1000; 0.00 : 4012ce: 48 f7 ed imul %rbp 0.00 : 4012d1: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 4012d5: 49 89 d4 mov %rdx,%r12 0.00 : 4012d8: 49 c1 fc 07 sar $0x7,%r12 0.00 : 4012dc: 49 29 cc sub %rcx,%r12 : d = julian(index + STARTDATE - 1) % 1000; 0.00 : 4012df: e8 1c 0f 00 00 callq 402200 0.00 : 4012e4: 48 89 c6 mov %rax,%rsi 0.00 : 4012e7: 4d 89 e5 mov %r12,%r13 0.00 : 4012ea: 48 f7 ed imul %rbp 0.00 : 4012ed: 48 89 f5 mov %rsi,%rbp : while (d > months[m].dcnt + LEAP_ADJ(y, m)) 0.00 : 4012f0: 4c 89 e0 mov %r12,%rax : long y; : long d; : : t->timekey = index + JDAY_BASE; : y = julian(index + STARTDATE - 1) / 1000; : d = julian(index + STARTDATE - 1) % 1000; 0.00 : 4012f3: 41 83 e5 03 and $0x3,%r13d 0.00 : 4012f7: 48 89 d1 mov %rdx,%rcx 0.00 : 4012fa: 48 89 f2 mov %rsi,%rdx 0.00 : 4012fd: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 401301: 48 c1 f9 07 sar $0x7,%rcx 0.00 : 401305: 48 29 d1 sub %rdx,%rcx 0.00 : 401308: 48 69 d1 e8 03 00 00 imul $0x3e8,%rcx,%rdx 0.00 : 40130f: 48 29 d5 sub %rdx,%rbp : while (d > months[m].dcnt + LEAP_ADJ(y, m)) 0.00 : 401312: 48 ba 0b d7 a3 70 3d movabs $0xa3d70a3d70a3d70b,%rdx 0.00 : 401319: 0a d7 a3 0.00 : 40131c: 48 f7 ea imul %rdx 0.00 : 40131f: 4c 89 e0 mov %r12,%rax 0.00 : 401322: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 401326: 4c 01 e2 add %r12,%rdx 0.00 : 401329: 48 c1 fa 06 sar $0x6,%rdx 0.00 : 40132d: 48 29 c2 sub %rax,%rdx 0.00 : 401330: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 401334: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 401338: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 40133c: 49 39 d4 cmp %rdx,%r12 0.00 : 40133f: ba 70 81 60 00 mov $0x608170,%edx 0.00 : 401344: 41 0f 95 c7 setne %r15b 0.00 : 401348: 31 db xor %ebx,%ebx 0.00 : 40134a: eb 08 jmp 401354 0.00 : 40134c: 0f 1f 40 00 nopl 0x0(%rax) : m++; /home/Computational/mark/src/dbt3/src/dbgen/build.c:419 50.00 : 401350: 48 83 c3 01 add $0x1,%rbx : long d; : : t->timekey = index + JDAY_BASE; : y = julian(index + STARTDATE - 1) / 1000; : d = julian(index + STARTDATE - 1) % 1000; : while (d > months[m].dcnt + LEAP_ADJ(y, m)) 0.00 : 401354: 31 c0 xor %eax,%eax 0.00 : 401356: 4d 85 ed test %r13,%r13 0.00 : 401359: 48 8b 0a mov (%rdx),%rcx 0.00 : 40135c: 75 0d jne 40136b 0.00 : 40135e: 48 83 fb 01 cmp $0x1,%rbx 0.00 : 401362: 0f 9f c0 setg %al 0.00 : 401365: 44 21 f8 and %r15d,%eax 0.00 : 401368: 0f b6 c0 movzbl %al,%eax 0.00 : 40136b: 48 01 c8 add %rcx,%rax 0.00 : 40136e: 48 83 c2 18 add $0x18,%rdx 0.00 : 401372: 48 39 c5 cmp %rax,%rbp 0.00 : 401375: 7f d9 jg 401350 : m++; : PR_DATE(t->alpha, y, m, 0.00 : 401377: 4c 8d 73 ff lea -0x1(%rbx),%r14 0.00 : 40137b: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 40137f: 48 8b 14 c5 70 81 60 mov 0x608170(,%rax,8),%rdx 0.00 : 401386: 00 0.00 : 401387: 31 c0 xor %eax,%eax 0.00 : 401389: 4d 85 ed test %r13,%r13 0.00 : 40138c: 75 0d jne 40139b 0.00 : 40138e: 48 83 fb 02 cmp $0x2,%rbx 0.00 : 401392: 0f 9f c0 setg %al 0.00 : 401395: 44 21 f8 and %r15d,%eax 0.00 : 401398: 0f b6 c0 movzbl %al,%eax 0.00 : 40139b: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 40139f: 49 89 e8 mov %rbp,%r8 0.00 : 4013a2: 48 89 d9 mov %rbx,%rcx 0.00 : 4013a5: 49 29 d0 sub %rdx,%r8 0.00 : 4013a8: be 04 61 40 00 mov $0x406104,%esi 0.00 : 4013ad: 4c 89 e2 mov %r12,%rdx 0.00 : 4013b0: 49 29 c0 sub %rax,%r8 0.00 : 4013b3: 31 c0 xor %eax,%eax 0.00 : 4013b5: 48 83 c7 08 add $0x8,%rdi 0.00 : 4013b9: e8 32 fc ff ff callq 400ff0 : d - months[m - 1].dcnt - ((LEAP(y) && m > 2) ? 1 : 0)); : t->year = 1900 + y; 0.00 : 4013be: 48 8b 14 24 mov (%rsp),%rdx 0.00 : 4013c2: 49 8d 84 24 6c 07 00 lea 0x76c(%r12),%rax 0.00 : 4013c9: 00 : t->month = m + 12 * y + JMNTH_BASE; : t->week = (d + T_START_DAY - 1) / 7 + 1; 0.00 : 4013ca: 48 8d 4d 02 lea 0x2(%rbp),%rcx : d = julian(index + STARTDATE - 1) % 1000; : while (d > months[m].dcnt + LEAP_ADJ(y, m)) : m++; : PR_DATE(t->alpha, y, m, : d - months[m - 1].dcnt - ((LEAP(y) && m > 2) ? 1 : 0)); : t->year = 1900 + y; 0.00 : 4013ce: 48 89 42 18 mov %rax,0x18(%rdx) : t->month = m + 12 * y + JMNTH_BASE; 0.00 : 4013d2: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 4013d6: 48 8d 84 83 b8 fc ff lea -0x348(%rbx,%rax,4),%rax 0.00 : 4013dd: ff 0.00 : 4013de: 48 89 42 20 mov %rax,0x20(%rdx) : t->week = (d + T_START_DAY - 1) / 7 + 1; 0.00 : 4013e2: 48 89 c8 mov %rcx,%rax 0.00 : 4013e5: 48 ba 25 49 92 24 49 movabs $0x4924924924924925,%rdx 0.00 : 4013ec: 92 24 49 0.00 : 4013ef: 48 f7 ea imul %rdx 0.00 : 4013f2: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 4013f6: 48 8b 04 24 mov (%rsp),%rax 0.00 : 4013fa: 48 d1 fa sar %rdx 0.00 : 4013fd: 48 29 ca sub %rcx,%rdx 0.00 : 401400: 48 83 c2 01 add $0x1,%rdx 0.00 : 401404: 48 89 50 28 mov %rdx,0x28(%rax) : t->day = d - months[m - 1].dcnt - LEAP_ADJ(y, m - 1); 0.00 : 401408: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 40140c: 48 8b 14 c5 70 81 60 mov 0x608170(,%rax,8),%rdx 0.00 : 401413: 00 0.00 : 401414: 31 c0 xor %eax,%eax 0.00 : 401416: 4d 85 ed test %r13,%r13 0.00 : 401419: 75 0d jne 401428 0.00 : 40141b: 48 83 fb 02 cmp $0x2,%rbx 0.00 : 40141f: 0f 9f c0 setg %al 0.00 : 401422: 44 21 f8 and %r15d,%eax 0.00 : 401425: 0f b6 c0 movzbl %al,%eax 0.00 : 401428: 48 29 d5 sub %rdx,%rbp 0.00 : 40142b: 48 8b 14 24 mov (%rsp),%rdx 0.00 : 40142f: 48 29 c5 sub %rax,%rbp : : return (0); : } /home/Computational/mark/src/dbt3/src/dbgen/build.c:428 50.00 : 401432: 31 c0 xor %eax,%eax : PR_DATE(t->alpha, y, m, : d - months[m - 1].dcnt - ((LEAP(y) && m > 2) ? 1 : 0)); : t->year = 1900 + y; : t->month = m + 12 * y + JMNTH_BASE; : t->week = (d + T_START_DAY - 1) / 7 + 1; : t->day = d - months[m - 1].dcnt - LEAP_ADJ(y, m - 1); 0.00 : 401434: 48 89 6a 30 mov %rbp,0x30(%rdx) : : return (0); : } 0.00 : 401438: 48 83 c4 08 add $0x8,%rsp 0.00 : 40143c: 5b pop %rbx 0.00 : 40143d: 5d pop %rbp 0.00 : 40143e: 41 5c pop %r12 0.00 : 401440: 41 5d pop %r13 0.00 : 401442: 41 5e pop %r14 0.00 : 401444: 41 5f pop %r15 Sorted summary for file /home/Computational/mark/src/dbt3/src/dbgen/qgen ---------------------------------------------- 40.00 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:275 40.00 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:276 20.00 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:274 Percent | Source code & Disassembly of /home/Computational/mark/src/dbt3/src/dbgen/qgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000402200 : : long offset; : long result; : long yr; : long yend; : : offset = date - STARTDATE; 0.00 : 402200: 48 81 ef 61 67 01 00 sub $0x16761,%rdi 0.00 : 402207: be 61 67 01 00 mov $0x16761,%esi : while (1) : { : #ifdef WIN32 : #pragma warning(default:4127) : #endif : yr = result / 1000; 0.00 : 40220c: 49 b8 cf f7 53 e3 a5 movabs $0x20c49ba5e353f7cf,%r8 0.00 : 402213: 9b c4 20 : yend = yr * 1000 + 365 + LEAP(yr); 0.00 : 402216: 49 b9 0b d7 a3 70 3d movabs $0xa3d70a3d70a3d70b,%r9 0.00 : 40221d: 0a d7 a3 0.00 : 402220: eb 16 jmp 402238 0.00 : 402222: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (result + offset > yend) /* overflow into next year */ : { : offset -= yend - result + 1; 0.00 : 402228: 48 29 f0 sub %rsi,%rax : result += 1000; 0.00 : 40222b: 48 81 c6 e8 03 00 00 add $0x3e8,%rsi : #endif : yr = result / 1000; : yend = yr * 1000 + 365 + LEAP(yr); : if (result + offset > yend) /* overflow into next year */ : { : offset -= yend - result + 1; 0.00 : 402232: 48 f7 d0 not %rax 0.00 : 402235: 48 01 c7 add %rax,%rdi : while (1) : { : #ifdef WIN32 : #pragma warning(default:4127) : #endif : yr = result / 1000; 0.00 : 402238: 48 89 f0 mov %rsi,%rax 0.00 : 40223b: 49 f7 e8 imul %r8 0.00 : 40223e: 48 89 f0 mov %rsi,%rax 0.00 : 402241: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 402245: 48 89 d1 mov %rdx,%rcx : yend = yr * 1000 + 365 + LEAP(yr); 0.00 : 402248: 31 d2 xor %edx,%edx : while (1) : { : #ifdef WIN32 : #pragma warning(default:4127) : #endif : yr = result / 1000; 0.00 : 40224a: 48 c1 f9 07 sar $0x7,%rcx /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:274 20.00 : 40224e: 48 29 c1 sub %rax,%rcx : yend = yr * 1000 + 365 + LEAP(yr); /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:275 40.00 : 402251: f6 c1 03 test $0x3,%cl 0.00 : 402254: 75 2c jne 402282 0.00 : 402256: 48 89 c8 mov %rcx,%rax 0.00 : 402259: 49 f7 e9 imul %r9 0.00 : 40225c: 48 89 c8 mov %rcx,%rax 0.00 : 40225f: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 402263: 48 01 ca add %rcx,%rdx 0.00 : 402266: 48 c1 fa 06 sar $0x6,%rdx 0.00 : 40226a: 48 29 c2 sub %rax,%rdx 0.00 : 40226d: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 402271: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 402275: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 402279: 48 39 d1 cmp %rdx,%rcx 0.00 : 40227c: 0f 95 c0 setne %al 0.00 : 40227f: 0f b6 d0 movzbl %al,%edx 0.00 : 402282: 48 69 c1 e8 03 00 00 imul $0x3e8,%rcx,%rax 0.00 : 402289: 48 8d 84 02 6d 01 00 lea 0x16d(%rdx,%rax,1),%rax 0.00 : 402290: 00 : if (result + offset > yend) /* overflow into next year */ /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:276 40.00 : 402291: 48 8d 14 3e lea (%rsi,%rdi,1),%rdx 0.00 : 402295: 48 39 d0 cmp %rdx,%rax 0.00 : 402298: 7c 8e jl 402228 : } : else : break; : } : return (result + offset); : } 0.00 : 40229a: 48 89 d0 mov %rdx,%rax Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/bin/psql/print.c:302 33.33 /home/Computational/mark/src/postgres-andres/src/bin/psql/print.c:663 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000417210 : : /* : * Print pretty boxes around cells. : */ : static void : print_aligned_text(const printTableContent *cont, FILE *fout) : { 0.00 : 417210: 55 push %rbp 0.00 : 417211: 48 89 e5 mov %rsp,%rbp 0.00 : 417214: 41 57 push %r15 0.00 : 417216: 41 56 push %r14 0.00 : 417218: 41 55 push %r13 0.00 : 41721a: 41 54 push %r12 0.00 : 41721c: 53 push %rbx 0.00 : 41721d: 48 81 ec 68 01 00 00 sub $0x168,%rsp 0.00 : 417224: 48 89 bd a8 fe ff ff mov %rdi,-0x158(%rbp) 0.00 : 41722b: 48 89 75 a8 mov %rsi,-0x58(%rbp) : bool opt_tuples_only = cont->opt->tuples_only; 0.00 : 41722f: 48 8b 07 mov (%rdi),%rax 0.00 : 417232: 0f b6 48 0a movzbl 0xa(%rax),%ecx 0.00 : 417236: 88 8d cb fe ff ff mov %cl,-0x135(%rbp) : int encoding = cont->opt->encoding; 0.00 : 41723c: 8b 58 50 mov 0x50(%rax),%ebx 0.00 : 41723f: 89 9d cc fe ff ff mov %ebx,-0x134(%rbp) : unsigned short opt_border = cont->opt->border; 0.00 : 417245: 0f b7 50 06 movzwl 0x6(%rax),%edx : /* : * Note: this function mainly exists to preserve the convention that a : * printTableOpt struct can be initialized to zeroes to get default : * behavior. : */ : if (opt->line_style != NULL) 0.00 : 417249: 48 8b 40 18 mov 0x18(%rax),%rax : : bool *header_done; /* Have all header lines been output? */ : int *bytes_output; /* Bytes output for column value */ : printTextLineWrap *wrap; /* Wrap status for each column */ : int output_columns = 0; /* Width of interactive console */ : bool is_pager = false; 0.00 : 41724d: c6 45 cf 00 movb $0x0,-0x31(%rbp) : /* : * Note: this function mainly exists to preserve the convention that a : * printTableOpt struct can be initialized to zeroes to get default : * behavior. : */ : if (opt->line_style != NULL) 0.00 : 417251: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp) 0.00 : 417258: 48 85 c0 test %rax,%rax 0.00 : 41725b: b8 20 7c 44 00 mov $0x447c20,%eax 0.00 : 417260: 48 0f 45 85 d0 fe ff cmovne -0x130(%rbp),%rax 0.00 : 417267: ff 0.00 : 417268: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp) : int *bytes_output; /* Bytes output for column value */ : printTextLineWrap *wrap; /* Wrap status for each column */ : int output_columns = 0; /* Width of interactive console */ : bool is_pager = false; : : if (cancel_pressed) 0.00 : 41726f: 0f b6 05 4a 3c 25 00 movzbl 0x253c4a(%rip),%eax # 66aec0 0.00 : 417276: 84 c0 test %al,%al 0.00 : 417278: 0f 85 c7 02 00 00 jne 417545 : return; 0.00 : 41727e: 66 83 fa 02 cmp $0x2,%dx 0.00 : 417282: b8 02 00 00 00 mov $0x2,%eax 0.00 : 417287: 0f 46 c2 cmovbe %edx,%eax 0.00 : 41728a: 66 89 45 90 mov %ax,-0x70(%rbp) : : if (opt_border > 2) : opt_border = 2; : : if (cont->ncolumns > 0) 0.00 : 41728e: 8b 57 10 mov 0x10(%rdi),%edx 0.00 : 417291: 85 d2 test %edx,%edx 0.00 : 417293: 89 95 b4 fe ff ff mov %edx,-0x14c(%rbp) 0.00 : 417299: 0f 8e b8 02 00 00 jle 417557 : { : col_count = cont->ncolumns; 0.00 : 41729f: 8b 8d b4 fe ff ff mov -0x14c(%rbp),%ecx : width_header = pg_malloc0(col_count * sizeof(*width_header)); 0.00 : 4172a5: 89 cb mov %ecx,%ebx : if (opt_border > 2) : opt_border = 2; : : if (cont->ncolumns > 0) : { : col_count = cont->ncolumns; 0.00 : 4172a7: 89 8d dc fe ff ff mov %ecx,-0x124(%rbp) : width_header = pg_malloc0(col_count * sizeof(*width_header)); 0.00 : 4172ad: 4c 8d 24 9d 00 00 00 lea 0x0(,%rbx,4),%r12 0.00 : 4172b4: 00 : width_average = pg_malloc0(col_count * sizeof(*width_average)); : max_width = pg_malloc0(col_count * sizeof(*max_width)); : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); 0.00 : 4172b5: 4c 8d 2c dd 00 00 00 lea 0x0(,%rbx,8),%r13 0.00 : 4172bc: 00 : opt_border = 2; : : if (cont->ncolumns > 0) : { : col_count = cont->ncolumns; : width_header = pg_malloc0(col_count * sizeof(*width_header)); 0.00 : 4172bd: 4c 89 e7 mov %r12,%rdi 0.00 : 4172c0: e8 cb cc 01 00 callq 433f90 : width_average = pg_malloc0(col_count * sizeof(*width_average)); 0.00 : 4172c5: 4c 89 e7 mov %r12,%rdi : opt_border = 2; : : if (cont->ncolumns > 0) : { : col_count = cont->ncolumns; : width_header = pg_malloc0(col_count * sizeof(*width_header)); 0.00 : 4172c8: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) 0.00 : 4172cf: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) : width_average = pg_malloc0(col_count * sizeof(*width_average)); 0.00 : 4172d6: e8 b5 cc 01 00 callq 433f90 : max_width = pg_malloc0(col_count * sizeof(*max_width)); 0.00 : 4172db: 4c 89 e7 mov %r12,%rdi : : if (cont->ncolumns > 0) : { : col_count = cont->ncolumns; : width_header = pg_malloc0(col_count * sizeof(*width_header)); : width_average = pg_malloc0(col_count * sizeof(*width_average)); 0.00 : 4172de: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) : max_width = pg_malloc0(col_count * sizeof(*max_width)); 0.00 : 4172e5: e8 a6 cc 01 00 callq 433f90 : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); 0.00 : 4172ea: 4c 89 e7 mov %r12,%rdi : if (cont->ncolumns > 0) : { : col_count = cont->ncolumns; : width_header = pg_malloc0(col_count * sizeof(*width_header)); : width_average = pg_malloc0(col_count * sizeof(*width_average)); : max_width = pg_malloc0(col_count * sizeof(*max_width)); 0.00 : 4172ed: 48 89 85 c0 fe ff ff mov %rax,-0x140(%rbp) 0.00 : 4172f4: 48 89 85 e8 fe ff ff mov %rax,-0x118(%rbp) : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); 0.00 : 4172fb: e8 90 cc 01 00 callq 433f90 : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); 0.00 : 417300: 4c 89 e7 mov %r12,%rdi : { : col_count = cont->ncolumns; : width_header = pg_malloc0(col_count * sizeof(*width_header)); : width_average = pg_malloc0(col_count * sizeof(*width_average)); : max_width = pg_malloc0(col_count * sizeof(*max_width)); : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); 0.00 : 417303: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); 0.00 : 41730a: e8 81 cc 01 00 callq 433f90 : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); 0.00 : 41730f: 4c 89 e7 mov %r12,%rdi : col_count = cont->ncolumns; : width_header = pg_malloc0(col_count * sizeof(*width_header)); : width_average = pg_malloc0(col_count * sizeof(*width_average)); : max_width = pg_malloc0(col_count * sizeof(*max_width)); : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); 0.00 : 417312: 49 89 c7 mov %rax,%r15 0.00 : 417315: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); 0.00 : 41731c: e8 6f cc 01 00 callq 433f90 : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); 0.00 : 417321: 4c 89 ef mov %r13,%rdi : width_header = pg_malloc0(col_count * sizeof(*width_header)); : width_average = pg_malloc0(col_count * sizeof(*width_average)); : max_width = pg_malloc0(col_count * sizeof(*max_width)); : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); 0.00 : 417324: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); 0.00 : 41732b: e8 60 cc 01 00 callq 433f90 : max_bytes = pg_malloc0(col_count * sizeof(*max_bytes)); 0.00 : 417330: 4c 89 e7 mov %r12,%rdi : width_average = pg_malloc0(col_count * sizeof(*width_average)); : max_width = pg_malloc0(col_count * sizeof(*max_width)); : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); 0.00 : 417333: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : max_bytes = pg_malloc0(col_count * sizeof(*max_bytes)); 0.00 : 41733a: e8 51 cc 01 00 callq 433f90 : format_buf = pg_malloc0(col_count * sizeof(*format_buf)); 0.00 : 41733f: 4c 89 ef mov %r13,%rdi : max_width = pg_malloc0(col_count * sizeof(*max_width)); : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); : max_bytes = pg_malloc0(col_count * sizeof(*max_bytes)); 0.00 : 417342: 49 89 c6 mov %rax,%r14 0.00 : 417345: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) : format_buf = pg_malloc0(col_count * sizeof(*format_buf)); 0.00 : 41734c: e8 3f cc 01 00 callq 433f90 : header_done = pg_malloc0(col_count * sizeof(*header_done)); 0.00 : 417351: 48 89 df mov %rbx,%rdi : width_wrap = pg_malloc0(col_count * sizeof(*width_wrap)); : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); : max_bytes = pg_malloc0(col_count * sizeof(*max_bytes)); : format_buf = pg_malloc0(col_count * sizeof(*format_buf)); 0.00 : 417354: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) 0.00 : 41735b: 48 8d 5d c4 lea -0x3c(%rbp),%rbx : header_done = pg_malloc0(col_count * sizeof(*header_done)); 0.00 : 41735f: e8 2c cc 01 00 callq 433f90 : bytes_output = pg_malloc0(col_count * sizeof(*bytes_output)); 0.00 : 417364: 4c 89 e7 mov %r12,%rdi : max_nl_lines = pg_malloc0(col_count * sizeof(*max_nl_lines)); : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); : max_bytes = pg_malloc0(col_count * sizeof(*max_bytes)); : format_buf = pg_malloc0(col_count * sizeof(*format_buf)); : header_done = pg_malloc0(col_count * sizeof(*header_done)); 0.00 : 417367: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : bytes_output = pg_malloc0(col_count * sizeof(*bytes_output)); : wrap = pg_malloc0(col_count * sizeof(*wrap)); 0.00 : 41736e: 45 31 ed xor %r13d,%r13d : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); : max_bytes = pg_malloc0(col_count * sizeof(*max_bytes)); : format_buf = pg_malloc0(col_count * sizeof(*format_buf)); : header_done = pg_malloc0(col_count * sizeof(*header_done)); : bytes_output = pg_malloc0(col_count * sizeof(*bytes_output)); 0.00 : 417371: e8 1a cc 01 00 callq 433f90 : wrap = pg_malloc0(col_count * sizeof(*wrap)); 0.00 : 417376: 4c 89 e7 mov %r12,%rdi : curr_nl_line = pg_malloc0(col_count * sizeof(*curr_nl_line)); : col_lineptrs = pg_malloc0(col_count * sizeof(*col_lineptrs)); : max_bytes = pg_malloc0(col_count * sizeof(*max_bytes)); : format_buf = pg_malloc0(col_count * sizeof(*format_buf)); : header_done = pg_malloc0(col_count * sizeof(*header_done)); : bytes_output = pg_malloc0(col_count * sizeof(*bytes_output)); 0.00 : 417379: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) : wrap = pg_malloc0(col_count * sizeof(*wrap)); 0.00 : 417380: 45 31 e4 xor %r12d,%r12d 0.00 : 417383: e8 08 cc 01 00 callq 433f90 0.00 : 417388: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 41738c: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 417393: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 417397: c7 45 84 00 00 00 00 movl $0x0,-0x7c(%rbp) 0.00 : 41739e: 48 89 9d 90 fe ff ff mov %rbx,-0x170(%rbp) 0.00 : 4173a5: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) 0.00 : 4173ac: 48 89 95 88 fe ff ff mov %rdx,-0x178(%rbp) : { : int width, : nl_lines, : bytes_required; : : pg_wcssize((const unsigned char *) cont->headers[i], strlen(cont->headers[i]), 0.00 : 4173b3: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4173ba: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 4173be: 4a 8b 1c 60 mov (%rax,%r12,2),%rbx 0.00 : 4173c2: 48 89 df mov %rbx,%rdi 0.00 : 4173c5: e8 b6 c4 fe ff callq 403880 0.00 : 4173ca: 4c 8b 8d 90 fe ff ff mov -0x170(%rbp),%r9 0.00 : 4173d1: 4c 8b 85 98 fe ff ff mov -0x168(%rbp),%r8 0.00 : 4173d8: 48 89 c6 mov %rax,%rsi 0.00 : 4173db: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 4173e2: 8b 95 cc fe ff ff mov -0x134(%rbp),%edx 0.00 : 4173e8: 48 89 df mov %rbx,%rdi 0.00 : 4173eb: e8 70 55 01 00 callq 42c960 : encoding, &width, &nl_lines, &bytes_required); : if (width > max_width[i]) 0.00 : 4173f0: 48 8b 9d c0 fe ff ff mov -0x140(%rbp),%rbx 0.00 : 4173f7: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 4173fa: 42 3b 04 23 cmp (%rbx,%r12,1),%eax 0.00 : 4173fe: 76 04 jbe 417404 : max_width[i] = width; 0.00 : 417400: 42 89 04 23 mov %eax,(%rbx,%r12,1) : if (nl_lines > max_nl_lines[i]) 0.00 : 417404: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 417407: 43 3b 04 27 cmp (%r15,%r12,1),%eax 0.00 : 41740b: 76 04 jbe 417411 : max_nl_lines[i] = nl_lines; 0.00 : 41740d: 43 89 04 27 mov %eax,(%r15,%r12,1) : if (bytes_required > max_bytes[i]) 0.00 : 417411: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 417414: 43 3b 04 26 cmp (%r14,%r12,1),%eax 0.00 : 417418: 76 04 jbe 41741e : max_bytes[i] = bytes_required; 0.00 : 41741a: 43 89 04 26 mov %eax,(%r14,%r12,1) 0.00 : 41741e: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 417421: 39 45 84 cmp %eax,-0x7c(%rbp) 0.00 : 417424: 0f 43 45 84 cmovae -0x7c(%rbp),%eax : if (nl_lines > extra_row_output_lines) : extra_row_output_lines = nl_lines; : : width_header[i] = width; 0.00 : 417428: 48 8b 95 b8 fe ff ff mov -0x148(%rbp),%rdx : bytes_output = NULL; : wrap = NULL; : } : : /* scan all column headers, find maximum width and max max_nl_lines */ : for (i = 0; i < col_count; i++) 0.00 : 41742f: 41 83 c5 01 add $0x1,%r13d : if (width > max_width[i]) : max_width[i] = width; : if (nl_lines > max_nl_lines[i]) : max_nl_lines[i] = nl_lines; : if (bytes_required > max_bytes[i]) : max_bytes[i] = bytes_required; 0.00 : 417433: 89 45 84 mov %eax,-0x7c(%rbp) : if (nl_lines > extra_row_output_lines) : extra_row_output_lines = nl_lines; : : width_header[i] = width; 0.00 : 417436: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 417439: 42 89 04 22 mov %eax,(%rdx,%r12,1) : bytes_output = NULL; : wrap = NULL; : } : : /* scan all column headers, find maximum width and max max_nl_lines */ : for (i = 0; i < col_count; i++) 0.00 : 41743d: 49 83 c4 04 add $0x4,%r12 0.00 : 417441: 44 39 ad b4 fe ff ff cmp %r13d,-0x14c(%rbp) 0.00 : 417448: 0f 87 65 ff ff ff ja 4173b3 0.00 : 41744e: e9 99 01 00 00 jmpq 4175ec : fputc('\n', fout); : : } while (more_lines); : } : : if (cont->opt->stop_table) 0.00 : 417453: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 41745a: 48 8b 02 mov (%rdx),%rax 0.00 : 41745d: 80 78 0c 00 cmpb $0x0,0xc(%rax) 0.00 : 417461: 0f 85 ee 0d 00 00 jne 418255 : fputc('\n', fout); : } : : cleanup: : /* clean up */ : for (i = 0; i < col_count; i++) 0.00 : 417467: 80 bd ca fe ff ff 00 cmpb $0x0,-0x136(%rbp) 0.00 : 41746e: 74 36 je 4174a6 0.00 : 417470: 45 31 e4 xor %r12d,%r12d 0.00 : 417473: 31 db xor %ebx,%ebx : { : free(col_lineptrs[i]); 0.00 : 417475: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx : fputc('\n', fout); : } : : cleanup: : /* clean up */ : for (i = 0; i < col_count; i++) 0.00 : 41747c: 41 83 c4 01 add $0x1,%r12d : { : free(col_lineptrs[i]); 0.00 : 417480: 48 8b 3c 19 mov (%rcx,%rbx,1),%rdi 0.00 : 417484: e8 f7 c1 fe ff callq 403680 : free(format_buf[i]); 0.00 : 417489: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : 417490: 48 8b 3c 18 mov (%rax,%rbx,1),%rdi : fputc('\n', fout); : } : : cleanup: : /* clean up */ : for (i = 0; i < col_count; i++) 0.00 : 417494: 48 83 c3 08 add $0x8,%rbx : { : free(col_lineptrs[i]); : free(format_buf[i]); 0.00 : 417498: e8 e3 c1 fe ff callq 403680 : fputc('\n', fout); : } : : cleanup: : /* clean up */ : for (i = 0; i < col_count; i++) 0.00 : 41749d: 44 3b a5 dc fe ff ff cmp -0x124(%rbp),%r12d 0.00 : 4174a4: 72 cf jb 417475 : { : free(col_lineptrs[i]); : free(format_buf[i]); : } : free(width_header); 0.00 : 4174a6: 48 8b bd e0 fe ff ff mov -0x120(%rbp),%rdi 0.00 : 4174ad: e8 ce c1 fe ff callq 403680 : free(width_average); 0.00 : 4174b2: 48 8b bd f8 fe ff ff mov -0x108(%rbp),%rdi 0.00 : 4174b9: e8 c2 c1 fe ff callq 403680 : free(max_width); 0.00 : 4174be: 48 8b bd e8 fe ff ff mov -0x118(%rbp),%rdi 0.00 : 4174c5: e8 b6 c1 fe ff callq 403680 : free(width_wrap); 0.00 : 4174ca: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 4174d1: e8 aa c1 fe ff callq 403680 : free(max_nl_lines); 0.00 : 4174d6: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 4174dd: e8 9e c1 fe ff callq 403680 : free(curr_nl_line); 0.00 : 4174e2: 48 8b bd 08 ff ff ff mov -0xf8(%rbp),%rdi 0.00 : 4174e9: e8 92 c1 fe ff callq 403680 : free(col_lineptrs); 0.00 : 4174ee: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 4174f5: e8 86 c1 fe ff callq 403680 : free(max_bytes); 0.00 : 4174fa: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 417501: e8 7a c1 fe ff callq 403680 : free(format_buf); 0.00 : 417506: 48 8b bd 18 ff ff ff mov -0xe8(%rbp),%rdi 0.00 : 41750d: e8 6e c1 fe ff callq 403680 : free(header_done); 0.00 : 417512: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 417519: e8 62 c1 fe ff callq 403680 : free(bytes_output); 0.00 : 41751e: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 417525: e8 56 c1 fe ff callq 403680 : free(wrap); 0.00 : 41752a: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 417531: e8 4a c1 fe ff callq 403680 : : if (is_pager) 0.00 : 417536: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 41753a: 74 09 je 417545 : ClosePager(fout); 0.00 : 41753c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 417540: e8 0b eb ff ff callq 416050 : } 0.00 : 417545: 48 81 c4 68 01 00 00 add $0x168,%rsp 0.00 : 41754c: 5b pop %rbx 0.00 : 41754d: 41 5c pop %r12 0.00 : 41754f: 41 5d pop %r13 0.00 : 417551: 41 5e pop %r14 0.00 : 417553: 41 5f pop %r15 0.00 : 417555: c9 leaveq 0.00 : 417556: c3 retq : return; : : if (opt_border > 2) : opt_border = 2; : : if (cont->ncolumns > 0) 0.00 : 417557: c7 45 84 00 00 00 00 movl $0x0,-0x7c(%rbp) 0.00 : 41755e: c7 85 dc fe ff ff 00 movl $0x0,-0x124(%rbp) 0.00 : 417565: 00 00 00 0.00 : 417568: 48 c7 85 e0 fe ff ff movq $0x0,-0x120(%rbp) 0.00 : 41756f: 00 00 00 00 0.00 : 417573: 48 c7 85 e8 fe ff ff movq $0x0,-0x118(%rbp) 0.00 : 41757a: 00 00 00 00 0.00 : 41757e: 48 c7 85 f0 fe ff ff movq $0x0,-0x110(%rbp) 0.00 : 417585: 00 00 00 00 0.00 : 417589: 48 c7 85 f8 fe ff ff movq $0x0,-0x108(%rbp) 0.00 : 417590: 00 00 00 00 0.00 : 417594: 48 c7 85 00 ff ff ff movq $0x0,-0x100(%rbp) 0.00 : 41759b: 00 00 00 00 0.00 : 41759f: 48 c7 85 08 ff ff ff movq $0x0,-0xf8(%rbp) 0.00 : 4175a6: 00 00 00 00 0.00 : 4175aa: 48 c7 85 10 ff ff ff movq $0x0,-0xf0(%rbp) 0.00 : 4175b1: 00 00 00 00 0.00 : 4175b5: 48 c7 85 18 ff ff ff movq $0x0,-0xe8(%rbp) 0.00 : 4175bc: 00 00 00 00 0.00 : 4175c0: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 4175c7: 00 00 00 00 0.00 : 4175cb: 48 c7 85 30 ff ff ff movq $0x0,-0xd0(%rbp) 0.00 : 4175d2: 00 00 00 00 0.00 : 4175d6: 48 c7 85 38 ff ff ff movq $0x0,-0xc8(%rbp) 0.00 : 4175dd: 00 00 00 00 0.00 : 4175e1: 48 c7 85 40 ff ff ff movq $0x0,-0xc0(%rbp) 0.00 : 4175e8: 00 00 00 00 : /* Add height of tallest header column */ : extra_output_lines += extra_row_output_lines; : extra_row_output_lines = 0; : : /* scan all cells, find maximum width, compute cell_count */ : for (i = 0, ptr = cont->cells; *ptr; ptr++, i++, cell_count++) /home/Computational/mark/src/postgres-andres/src/bin/psql/print.c:663 33.33 : 4175ec: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4175f3: 4c 8b 69 28 mov 0x28(%rcx),%r13 0.00 : 4175f7: 49 8b 5d 00 mov 0x0(%r13),%rbx 0.00 : 4175fb: 48 85 db test %rbx,%rbx 0.00 : 4175fe: 0f 84 c8 0f 00 00 je 4185cc 0.00 : 417604: 48 8d 45 c4 lea -0x3c(%rbp),%rax 0.00 : 417608: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 41760c: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 417610: 45 31 e4 xor %r12d,%r12d 0.00 : 417613: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) 0.00 : 41761a: 48 89 95 98 fe ff ff mov %rdx,-0x168(%rbp) 0.00 : 417621: 48 89 8d 88 fe ff ff mov %rcx,-0x178(%rbp) : { : int width, : nl_lines, : bytes_required; : : pg_wcssize((const unsigned char *) *ptr, strlen(*ptr), encoding, 0.00 : 417628: 48 89 df mov %rbx,%rdi 0.00 : 41762b: e8 50 c2 fe ff callq 403880 0.00 : 417630: 48 8b 8d 90 fe ff ff mov -0x170(%rbp),%rcx 0.00 : 417637: 8b 95 cc fe ff ff mov -0x134(%rbp),%edx 0.00 : 41763d: 48 89 c6 mov %rax,%rsi 0.00 : 417640: 4c 8b 8d 88 fe ff ff mov -0x178(%rbp),%r9 0.00 : 417647: 4c 8b 85 98 fe ff ff mov -0x168(%rbp),%r8 0.00 : 41764e: 48 89 df mov %rbx,%rdi 0.00 : 417651: e8 0a 53 01 00 callq 42c960 : &width, &nl_lines, &bytes_required); : : if (width > max_width[i % col_count]) 0.00 : 417656: 31 d2 xor %edx,%edx 0.00 : 417658: 44 89 e0 mov %r12d,%eax 0.00 : 41765b: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 41765e: f7 b5 dc fe ff ff divl -0x124(%rbp) 0.00 : 417664: 48 8b 85 e8 fe ff ff mov -0x118(%rbp),%rax 0.00 : 41766b: 89 d2 mov %edx,%edx 0.00 : 41766d: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 417671: 48 01 d0 add %rdx,%rax 0.00 : 417674: 3b 08 cmp (%rax),%ecx 0.00 : 417676: 76 02 jbe 41767a : max_width[i % col_count] = width; 0.00 : 417678: 89 08 mov %ecx,(%rax) : if (nl_lines > max_nl_lines[i % col_count]) 0.00 : 41767a: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 417681: 8b 4d c0 mov -0x40(%rbp),%ecx 0.00 : 417684: 48 01 d0 add %rdx,%rax 0.00 : 417687: 3b 08 cmp (%rax),%ecx 0.00 : 417689: 76 02 jbe 41768d : max_nl_lines[i % col_count] = nl_lines; 0.00 : 41768b: 89 08 mov %ecx,(%rax) : if (bytes_required > max_bytes[i % col_count]) 0.00 : 41768d: 48 8b 85 10 ff ff ff mov -0xf0(%rbp),%rax 0.00 : 417694: 8b 4d c8 mov -0x38(%rbp),%ecx 0.00 : 417697: 48 01 d0 add %rdx,%rax 0.00 : 41769a: 3b 08 cmp (%rax),%ecx 0.00 : 41769c: 76 02 jbe 4176a0 : max_bytes[i % col_count] = bytes_required; 0.00 : 41769e: 89 08 mov %ecx,(%rax) : : width_average[i % col_count] += width; 0.00 : 4176a0: 48 8b 9d f8 fe ff ff mov -0x108(%rbp),%rbx : /* Add height of tallest header column */ : extra_output_lines += extra_row_output_lines; : extra_row_output_lines = 0; : : /* scan all cells, find maximum width, compute cell_count */ : for (i = 0, ptr = cont->cells; *ptr; ptr++, i++, cell_count++) 0.00 : 4176a7: 49 83 c5 08 add $0x8,%r13 : if (nl_lines > max_nl_lines[i % col_count]) : max_nl_lines[i % col_count] = nl_lines; : if (bytes_required > max_bytes[i % col_count]) : max_bytes[i % col_count] = bytes_required; : : width_average[i % col_count] += width; 0.00 : 4176ab: 8b 45 c4 mov -0x3c(%rbp),%eax : /* Add height of tallest header column */ : extra_output_lines += extra_row_output_lines; : extra_row_output_lines = 0; : : /* scan all cells, find maximum width, compute cell_count */ : for (i = 0, ptr = cont->cells; *ptr; ptr++, i++, cell_count++) 0.00 : 4176ae: 41 83 c4 01 add $0x1,%r12d : if (nl_lines > max_nl_lines[i % col_count]) : max_nl_lines[i % col_count] = nl_lines; : if (bytes_required > max_bytes[i % col_count]) : max_bytes[i % col_count] = bytes_required; : : width_average[i % col_count] += width; 0.00 : 4176b2: 01 04 13 add %eax,(%rbx,%rdx,1) : /* Add height of tallest header column */ : extra_output_lines += extra_row_output_lines; : extra_row_output_lines = 0; : : /* scan all cells, find maximum width, compute cell_count */ : for (i = 0, ptr = cont->cells; *ptr; ptr++, i++, cell_count++) 0.00 : 4176b5: 49 8b 5d 00 mov 0x0(%r13),%rbx 0.00 : 4176b9: 48 85 db test %rbx,%rbx 0.00 : 4176bc: 0f 85 66 ff ff ff jne 417628 : : width_average[i % col_count] += width; : } : : /* If we have rows, compute average */ : if (col_count != 0 && cell_count != 0) 0.00 : 4176c2: 8b 85 dc fe ff ff mov -0x124(%rbp),%eax 0.00 : 4176c8: 85 c0 test %eax,%eax 0.00 : 4176ca: 0f 95 85 ca fe ff ff setne -0x136(%rbp) 0.00 : 4176d1: 74 3b je 41770e 0.00 : 4176d3: 45 85 e4 test %r12d,%r12d 0.00 : 4176d6: 74 36 je 41770e : { : int rows = cell_count / col_count; 0.00 : 4176d8: 44 89 e0 mov %r12d,%eax 0.00 : 4176db: 31 d2 xor %edx,%edx 0.00 : 4176dd: 4c 8b 85 f8 fe ff ff mov -0x108(%rbp),%r8 0.00 : 4176e4: f7 b5 dc fe ff ff divl -0x124(%rbp) 0.00 : 4176ea: 31 c9 xor %ecx,%ecx 0.00 : 4176ec: 89 c6 mov %eax,%esi : : for (i = 0; i < col_count; i++) : width_average[i] /= rows; 0.00 : 4176ee: 41 8b 00 mov (%r8),%eax 0.00 : 4176f1: 31 d2 xor %edx,%edx : /* If we have rows, compute average */ : if (col_count != 0 && cell_count != 0) : { : int rows = cell_count / col_count; : : for (i = 0; i < col_count; i++) 0.00 : 4176f3: 83 c1 01 add $0x1,%ecx : width_average[i] /= rows; 0.00 : 4176f6: f7 f6 div %esi 0.00 : 4176f8: 41 89 00 mov %eax,(%r8) : /* If we have rows, compute average */ : if (col_count != 0 && cell_count != 0) : { : int rows = cell_count / col_count; : : for (i = 0; i < col_count; i++) 0.00 : 4176fb: 49 83 c0 04 add $0x4,%r8 0.00 : 4176ff: 3b 8d dc fe ff ff cmp -0x124(%rbp),%ecx 0.00 : 417705: 72 e7 jb 4176ee 0.00 : 417707: c6 85 ca fe ff ff 01 movb $0x1,-0x136(%rbp) : width_average[i] /= rows; : } : : /* adjust the total display width based on border style */ : if (opt_border == 0) 0.00 : 41770e: 66 83 7d 90 00 cmpw $0x0,-0x70(%rbp) 0.00 : 417713: 44 8b ad dc fe ff ff mov -0x124(%rbp),%r13d 0.00 : 41771a: 74 18 je 417734 : width_total = col_count; : else if (opt_border == 1) : width_total = col_count * 3 - 1; 0.00 : 41771c: 8b 8d dc fe ff ff mov -0x124(%rbp),%ecx : } : : /* adjust the total display width based on border style */ : if (opt_border == 0) : width_total = col_count; : else if (opt_border == 1) 0.00 : 417722: 66 83 7d 90 01 cmpw $0x1,-0x70(%rbp) : width_total = col_count * 3 - 1; 0.00 : 417727: 44 8d 6c 49 ff lea -0x1(%rcx,%rcx,2),%r13d 0.00 : 41772c: 8d 44 49 01 lea 0x1(%rcx,%rcx,2),%eax 0.00 : 417730: 44 0f 45 e8 cmovne %eax,%r13d : else : width_total = col_count * 3 + 1; : total_header_width = width_total; : : for (i = 0; i < col_count; i++) 0.00 : 417734: 80 bd ca fe ff ff 00 cmpb $0x0,-0x136(%rbp) 0.00 : 41773b: 45 89 ee mov %r13d,%r14d 0.00 : 41773e: 0f 84 b5 00 00 00 je 4177f9 0.00 : 417744: 45 89 ee mov %r13d,%r14d 0.00 : 417747: 31 d2 xor %edx,%edx 0.00 : 417749: 31 c0 xor %eax,%eax : { : width_total += max_width[i]; 0.00 : 41774b: 48 8b 9d e8 fe ff ff mov -0x118(%rbp),%rbx : total_header_width += width_header[i]; 0.00 : 417752: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx : width_total = col_count * 3 - 1; : else : width_total = col_count * 3 + 1; : total_header_width = width_total; : : for (i = 0; i < col_count; i++) 0.00 : 417759: 83 c2 01 add $0x1,%edx : { : width_total += max_width[i]; 0.00 : 41775c: 44 03 2c 03 add (%rbx,%rax,1),%r13d : total_header_width += width_header[i]; 0.00 : 417760: 44 03 34 01 add (%rcx,%rax,1),%r14d : width_total = col_count * 3 - 1; : else : width_total = col_count * 3 + 1; : total_header_width = width_total; : : for (i = 0; i < col_count; i++) 0.00 : 417764: 48 83 c0 04 add $0x4,%rax 0.00 : 417768: 3b 95 dc fe ff ff cmp -0x124(%rbp),%edx 0.00 : 41776e: 72 db jb 41774b 0.00 : 417770: 45 31 e4 xor %r12d,%r12d 0.00 : 417773: 31 db xor %ebx,%ebx : * for line pointers. : */ : for (i = 0; i < col_count; i++) : { : /* Add entry for ptr == NULL array termination */ : col_lineptrs[i] = pg_malloc0((max_nl_lines[i] + 1) * 0.00 : 417775: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax : * max_nl_lines[] contains the max number of lines in each column, : * max_bytes[] contains the maximum storage space for formatting strings, : * width_total contains the giant width sum. Now we allocate some memory : * for line pointers. : */ : for (i = 0; i < col_count; i++) 0.00 : 41777c: 41 83 c4 01 add $0x1,%r12d : { : /* Add entry for ptr == NULL array termination */ : col_lineptrs[i] = pg_malloc0((max_nl_lines[i] + 1) * 0.00 : 417780: 8b 3c 18 mov (%rax,%rbx,1),%edi 0.00 : 417783: 83 c7 01 add $0x1,%edi 0.00 : 417786: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 41778a: e8 01 c8 01 00 callq 433f90 0.00 : 41778f: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : 417796: 48 89 04 5a mov %rax,(%rdx,%rbx,2) : sizeof(**col_lineptrs)); : : format_buf[i] = pg_malloc(max_bytes[i] + 1); 0.00 : 41779a: 48 8b 8d 10 ff ff ff mov -0xf0(%rbp),%rcx 0.00 : 4177a1: 8b 3c 19 mov (%rcx,%rbx,1),%edi 0.00 : 4177a4: 83 c7 01 add $0x1,%edi 0.00 : 4177a7: e8 84 c7 01 00 callq 433f30 0.00 : 4177ac: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 4177b3: 48 89 04 5a mov %rax,(%rdx,%rbx,2) : : col_lineptrs[i]->ptr = format_buf[i]; 0.00 : 4177b7: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 4177be: 48 8b 14 59 mov (%rcx,%rbx,2),%rdx : * max_nl_lines[] contains the max number of lines in each column, : * max_bytes[] contains the maximum storage space for formatting strings, : * width_total contains the giant width sum. Now we allocate some memory : * for line pointers. : */ : for (i = 0; i < col_count; i++) 0.00 : 4177c2: 48 83 c3 04 add $0x4,%rbx : col_lineptrs[i] = pg_malloc0((max_nl_lines[i] + 1) * : sizeof(**col_lineptrs)); : : format_buf[i] = pg_malloc(max_bytes[i] + 1); : : col_lineptrs[i]->ptr = format_buf[i]; 0.00 : 4177c6: 48 89 02 mov %rax,(%rdx) : * max_nl_lines[] contains the max number of lines in each column, : * max_bytes[] contains the maximum storage space for formatting strings, : * width_total contains the giant width sum. Now we allocate some memory : * for line pointers. : */ : for (i = 0; i < col_count; i++) 0.00 : 4177c9: 44 3b a5 dc fe ff ff cmp -0x124(%rbp),%r12d 0.00 : 4177d0: 72 a3 jb 417775 0.00 : 4177d2: 31 c9 xor %ecx,%ecx 0.00 : 4177d4: 31 d2 xor %edx,%edx : col_lineptrs[i]->ptr = format_buf[i]; : } : : /* Default word wrap to the full width, i.e. no word wrap */ : for (i = 0; i < col_count; i++) : width_wrap[i] = max_width[i]; 0.00 : 4177d6: 48 8b 9d e8 fe ff ff mov -0x118(%rbp),%rbx : : col_lineptrs[i]->ptr = format_buf[i]; : } : : /* Default word wrap to the full width, i.e. no word wrap */ : for (i = 0; i < col_count; i++) 0.00 : 4177dd: 83 c1 01 add $0x1,%ecx : width_wrap[i] = max_width[i]; 0.00 : 4177e0: 8b 04 13 mov (%rbx,%rdx,1),%eax 0.00 : 4177e3: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 4177ea: 89 04 13 mov %eax,(%rbx,%rdx,1) : : col_lineptrs[i]->ptr = format_buf[i]; : } : : /* Default word wrap to the full width, i.e. no word wrap */ : for (i = 0; i < col_count; i++) 0.00 : 4177ed: 48 83 c2 04 add $0x4,%rdx 0.00 : 4177f1: 3b 8d dc fe ff ff cmp -0x124(%rbp),%ecx 0.00 : 4177f7: 72 dd jb 4177d6 : width_wrap[i] = max_width[i]; : : /* : * Choose target output width: \pset columns, or $COLUMNS, or ioctl : */ : if (cont->opt->columns > 0) 0.00 : 4177f9: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 417800: 48 8b 02 mov (%rdx),%rax 0.00 : 417803: 8b 78 58 mov 0x58(%rax),%edi 0.00 : 417806: 85 ff test %edi,%edi 0.00 : 417808: 0f 8e 55 0c 00 00 jle 418463 : else : { : struct winsize screen_size; : : if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) != -1) : output_columns = screen_size.ws_col; 0.00 : 41780e: 41 b9 01 00 00 00 mov $0x1,%r9d : } : #endif : } : : if (cont->opt->format == PRINT_WRAPPED) 0.00 : 417814: 83 38 03 cmpl $0x3,(%rax) 0.00 : 417817: 0f 84 d3 0a 00 00 je 4182f0 : : /* : * If in expanded auto mode, we have now calculated the expected width, so : * we can now escape to vertical mode if necessary. : */ : if (cont->opt->expanded == 2 && output_columns > 0 && 0.00 : 41781d: 66 83 78 04 02 cmpw $0x2,0x4(%rax) 0.00 : 417822: 0f 84 90 0a 00 00 je 4182b8 : print_aligned_vertical(cont, fout); : goto cleanup; : } : : /* If we wrapped beyond the display width, use the pager */ : if (!is_pager && fout == stdout && output_columns > 0 && 0.00 : 417828: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 41782c: 0f 85 04 01 00 00 jne 417936 0.00 : 417832: 48 8b 1d 17 32 25 00 mov 0x253217(%rip),%rbx # 66aa50 0.00 : 417839: 48 39 5d a8 cmp %rbx,-0x58(%rbp) 0.00 : 41783d: 0f 84 9b 0c 00 00 je 4184de : : /* Check if newlines or our wrapping now need the pager */ : if (!is_pager) : { : /* scan all cells, find maximum width, compute cell_count */ : for (i = 0, ptr = cont->cells; *ptr; ptr++, cell_count++) 0.00 : 417843: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 41784a: 8b 4d 84 mov -0x7c(%rbp),%ecx 0.00 : 41784d: 4c 8b 7a 28 mov 0x28(%rdx),%r15 0.00 : 417851: 49 8b 1f mov (%r15),%rbx 0.00 : 417854: 89 8d 24 ff ff ff mov %ecx,-0xdc(%rbp) 0.00 : 41785a: 48 85 db test %rbx,%rbx 0.00 : 41785d: 0f 84 ad 00 00 00 je 417910 : /* If we wrapped beyond the display width, use the pager */ : if (!is_pager && fout == stdout && output_columns > 0 && : (output_columns < total_header_width || output_columns < width_total)) : { : fout = PageOutput(INT_MAX, cont->opt->pager); /* force pager */ : is_pager = true; 0.00 : 417863: 8b 4d 84 mov -0x7c(%rbp),%ecx 0.00 : 417866: 48 8d 45 c4 lea -0x3c(%rbp),%rax 0.00 : 41786a: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 41786e: 45 31 f6 xor %r14d,%r14d 0.00 : 417871: 45 31 e4 xor %r12d,%r12d 0.00 : 417874: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) 0.00 : 41787b: 48 89 95 98 fe ff ff mov %rdx,-0x168(%rbp) 0.00 : 417882: 89 8d 24 ff ff ff mov %ecx,-0xdc(%rbp) 0.00 : 417888: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 41788c: 48 89 8d 88 fe ff ff mov %rcx,-0x178(%rbp) : { : int width, : nl_lines, : bytes_required; : : pg_wcssize((const unsigned char *) *ptr, strlen(*ptr), encoding, 0.00 : 417893: 48 89 df mov %rbx,%rdi 0.00 : 417896: e8 e5 bf fe ff callq 403880 0.00 : 41789b: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 4178a2: 4c 8b 8d 90 fe ff ff mov -0x170(%rbp),%r9 0.00 : 4178a9: 48 89 c6 mov %rax,%rsi 0.00 : 4178ac: 4c 8b 85 98 fe ff ff mov -0x168(%rbp),%r8 0.00 : 4178b3: 8b 95 cc fe ff ff mov -0x134(%rbp),%edx 0.00 : 4178b9: 48 89 df mov %rbx,%rdi 0.00 : 4178bc: e8 9f 50 01 00 callq 42c960 : : /* : * A row can have both wrapping and newlines that cause it to : * display across multiple lines. We check for both cases below. : */ : if (width > 0 && width_wrap[i]) 0.00 : 4178c1: 8b 4d c8 mov -0x38(%rbp),%ecx 0.00 : 4178c4: 85 c9 test %ecx,%ecx 0.00 : 4178c6: 7e 22 jle 4178ea 0.00 : 4178c8: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 4178cf: 44 89 f0 mov %r14d,%eax 0.00 : 4178d2: 8b 34 83 mov (%rbx,%rax,4),%esi 0.00 : 4178d5: 85 f6 test %esi,%esi 0.00 : 4178d7: 74 11 je 4178ea 0.00 : 4178d9: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 4178dc: 31 d2 xor %edx,%edx 0.00 : 4178de: f7 f6 div %esi 0.00 : 4178e0: 03 45 c0 add -0x40(%rbp),%eax 0.00 : 4178e3: 41 39 c4 cmp %eax,%r12d 0.00 : 4178e6: 44 0f 42 e0 cmovb %eax,%r12d : if (extra_lines > extra_row_output_lines) : extra_row_output_lines = extra_lines; : } : : /* i is the current column number: increment with wrap */ : if (++i >= col_count) 0.00 : 4178ea: 41 83 c6 01 add $0x1,%r14d 0.00 : 4178ee: 44 3b b5 dc fe ff ff cmp -0x124(%rbp),%r14d 0.00 : 4178f5: 72 0d jb 417904 : { : i = 0; : /* At last column of each row, add tallest column height */ : extra_output_lines += extra_row_output_lines; 0.00 : 4178f7: 44 01 a5 24 ff ff ff add %r12d,-0xdc(%rbp) 0.00 : 4178fe: 45 31 f6 xor %r14d,%r14d 0.00 : 417901: 45 31 e4 xor %r12d,%r12d : : /* Check if newlines or our wrapping now need the pager */ : if (!is_pager) : { : /* scan all cells, find maximum width, compute cell_count */ : for (i = 0, ptr = cont->cells; *ptr; ptr++, cell_count++) 0.00 : 417904: 49 83 c7 08 add $0x8,%r15 0.00 : 417908: 49 8b 1f mov (%r15),%rbx 0.00 : 41790b: 48 85 db test %rbx,%rbx 0.00 : 41790e: 75 83 jne 417893 : /* At last column of each row, add tallest column height */ : extra_output_lines += extra_row_output_lines; : extra_row_output_lines = 0; : } : } : IsPagerNeeded(cont, extra_output_lines, false, &fout, &is_pager); 0.00 : 417910: 8b b5 24 ff ff ff mov -0xdc(%rbp),%esi 0.00 : 417916: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 41791d: 48 8d 4d a8 lea -0x58(%rbp),%rcx 0.00 : 417921: 4c 8d 45 cf lea -0x31(%rbp),%r8 0.00 : 417925: 31 d2 xor %edx,%edx 0.00 : 417927: e8 74 e8 ff ff callq 4161a0 0.00 : 41792c: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 417933: 48 8b 01 mov (%rcx),%rax : } : : /* time to output */ : if (cont->opt->start_table) 0.00 : 417936: 80 78 0b 00 cmpb $0x0,0xb(%rax) 0.00 : 41793a: 0f 84 a5 02 00 00 je 417be5 : { : /* print title */ : if (cont->title && !opt_tuples_only) 0.00 : 417940: 48 8b 85 a8 fe ff ff mov -0x158(%rbp),%rax 0.00 : 417947: 80 bd cb fe ff ff 00 cmpb $0x0,-0x135(%rbp) 0.00 : 41794e: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 417952: 0f 94 c0 sete %al 0.00 : 417955: 48 85 db test %rbx,%rbx 0.00 : 417958: 0f 84 08 0c 00 00 je 418566 0.00 : 41795e: 84 c0 test %al,%al 0.00 : 417960: 0f 84 7f 02 00 00 je 417be5 : { : int width, : height; : : pg_wcssize((const unsigned char *) cont->title, strlen(cont->title), 0.00 : 417966: 48 89 df mov %rbx,%rdi 0.00 : 417969: e8 12 bf fe ff callq 403880 0.00 : 41796e: 8b 95 cc fe ff ff mov -0x134(%rbp),%edx 0.00 : 417974: 48 8d 4d c4 lea -0x3c(%rbp),%rcx 0.00 : 417978: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 41797c: 48 89 c6 mov %rax,%rsi 0.00 : 41797f: 45 31 c9 xor %r9d,%r9d 0.00 : 417982: 48 89 df mov %rbx,%rdi 0.00 : 417985: e8 d6 4f 01 00 callq 42c960 : encoding, &width, &height, NULL); : if (width >= width_total) 0.00 : 41798a: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 41798d: 41 39 c5 cmp %eax,%r13d 0.00 : 417990: 0f 87 08 0c 00 00 ja 41859e : /* Aligned */ : fprintf(fout, "%s\n", cont->title); 0.00 : 417996: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 41799d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4179a1: be d4 59 43 00 mov $0x4359d4,%esi 0.00 : 4179a6: 31 c0 xor %eax,%eax 0.00 : 4179a8: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 4179ac: e8 2f c2 fe ff callq 403be0 : if (!opt_tuples_only) : { : int more_col_wrapping; : int curr_nl_line; : : if (opt_border == 2) 0.00 : 4179b1: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) 0.00 : 4179b6: 0f 84 b9 0b 00 00 je 418575 : _print_horizontal_line(col_count, width_wrap, opt_border, : PRINT_RULE_TOP, format, fout); : : for (i = 0; i < col_count; i++) 0.00 : 4179bc: 80 bd ca fe ff ff 00 cmpb $0x0,-0x136(%rbp) 0.00 : 4179c3: 74 55 je 417a1a 0.00 : 4179c5: 45 31 ed xor %r13d,%r13d 0.00 : 4179c8: 45 31 e4 xor %r12d,%r12d : pg_wcsformat((const unsigned char *) cont->headers[i], 0.00 : 4179cb: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx : : if (opt_border == 2) : _print_horizontal_line(col_count, width_wrap, opt_border, : PRINT_RULE_TOP, format, fout); : : for (i = 0; i < col_count; i++) 0.00 : 4179d2: 41 83 c5 01 add $0x1,%r13d : pg_wcsformat((const unsigned char *) cont->headers[i], 0.00 : 4179d6: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 4179da: 4a 8b 1c 60 mov (%rax,%r12,2),%rbx 0.00 : 4179de: 48 89 df mov %rbx,%rdi 0.00 : 4179e1: e8 9a be fe ff callq 403880 0.00 : 4179e6: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 4179ed: 48 89 c6 mov %rax,%rsi 0.00 : 4179f0: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 4179f7: 48 89 df mov %rbx,%rdi 0.00 : 4179fa: 46 8b 04 22 mov (%rdx,%r12,1),%r8d 0.00 : 4179fe: 4a 8b 0c 60 mov (%rax,%r12,2),%rcx : : if (opt_border == 2) : _print_horizontal_line(col_count, width_wrap, opt_border, : PRINT_RULE_TOP, format, fout); : : for (i = 0; i < col_count; i++) 0.00 : 417a02: 49 83 c4 04 add $0x4,%r12 : pg_wcsformat((const unsigned char *) cont->headers[i], 0.00 : 417a06: 8b 95 cc fe ff ff mov -0x134(%rbp),%edx 0.00 : 417a0c: e8 6f 51 01 00 callq 42cb80 : : if (opt_border == 2) : _print_horizontal_line(col_count, width_wrap, opt_border, : PRINT_RULE_TOP, format, fout); : : for (i = 0; i < col_count; i++) 0.00 : 417a11: 44 3b ad dc fe ff ff cmp -0x124(%rbp),%r13d 0.00 : 417a18: 72 b1 jb 4179cb : pg_wcsformat((const unsigned char *) cont->headers[i], : strlen(cont->headers[i]), encoding, : col_lineptrs[i], max_nl_lines[i]); : : more_col_wrapping = col_count; 0.00 : 417a1a: 8b 8d dc fe ff ff mov -0x124(%rbp),%ecx : curr_nl_line = 0; : memset(header_done, false, col_count * sizeof(bool)); 0.00 : 417a20: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 417a27: 31 f6 xor %esi,%esi 0.00 : 417a29: 89 ca mov %ecx,%edx : for (i = 0; i < col_count; i++) : pg_wcsformat((const unsigned char *) cont->headers[i], : strlen(cont->headers[i]), encoding, : col_lineptrs[i], max_nl_lines[i]); : : more_col_wrapping = col_count; 0.00 : 417a2b: 89 8d 48 ff ff ff mov %ecx,-0xb8(%rbp) : curr_nl_line = 0; : memset(header_done, false, col_count * sizeof(bool)); 0.00 : 417a31: e8 da bf fe ff callq 403a10 : while (more_col_wrapping) 0.00 : 417a36: 8b 85 dc fe ff ff mov -0x124(%rbp),%eax 0.00 : 417a3c: 85 c0 test %eax,%eax 0.00 : 417a3e: 0f 84 7b 01 00 00 je 417bbf : : if (opt_border != 0 || format->wrap_right_border) : fputs(!header_done[i] ? format->header_nl_right : " ", : fout); : : if (opt_border != 0 && i < col_count - 1) 0.00 : 417a44: 8b 9d dc fe ff ff mov -0x124(%rbp),%ebx : col_lineptrs[i], max_nl_lines[i]); : : more_col_wrapping = col_count; : curr_nl_line = 0; : memset(header_done, false, col_count * sizeof(bool)); : while (more_col_wrapping) 0.00 : 417a4a: c7 85 4c ff ff ff 00 movl $0x0,-0xb4(%rbp) 0.00 : 417a51: 00 00 00 : : if (opt_border != 0 || format->wrap_right_border) : fputs(!header_done[i] ? format->header_nl_right : " ", : fout); : : if (opt_border != 0 && i < col_count - 1) 0.00 : 417a54: 83 eb 01 sub $0x1,%ebx 0.00 : 417a57: 89 9d 80 fe ff ff mov %ebx,-0x180(%rbp) : more_col_wrapping = col_count; : curr_nl_line = 0; : memset(header_done, false, col_count * sizeof(bool)); : while (more_col_wrapping) : { : if (opt_border == 2) 0.00 : 417a5d: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) 0.00 : 417a62: 0f 84 c9 09 00 00 je 418431 : fputs(dformat->leftvrule, fout); : : for (i = 0; i < cont->ncolumns; i++) 0.00 : 417a68: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 417a6f: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 417a72: 85 c0 test %eax,%eax 0.00 : 417a74: 0f 84 77 09 00 00 je 4183f1 0.00 : 417a7a: 4c 63 bd 4c ff ff ff movslq -0xb4(%rbp),%r15 0.00 : 417a81: 45 31 f6 xor %r14d,%r14d 0.00 : 417a84: 49 c1 e7 04 shl $0x4,%r15 0.00 : 417a88: e9 a8 00 00 00 jmpq 417b35 : fputs(curr_nl_line ? format->header_nl_left : " ", : fout); : : if (!header_done[i]) : { : nbspace = width_wrap[i] - this_line->width; 0.00 : 417a8d: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx : if (opt_border == 2) : fputs(dformat->leftvrule, fout); : : for (i = 0; i < cont->ncolumns; i++) : { : struct lineptr *this_line = col_lineptrs[i] + curr_nl_line; 0.00 : 417a94: 4c 01 fb add %r15,%rbx : if (!header_done[i]) : { : nbspace = width_wrap[i] - this_line->width; : : /* centered */ : fprintf(fout, "%-*s%s%-*s", 0.00 : 417a97: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 417a9b: 31 c0 xor %eax,%eax 0.00 : 417a9d: be 9e 76 44 00 mov $0x44769e,%esi : fputs(curr_nl_line ? format->header_nl_left : " ", : fout); : : if (!header_done[i]) : { : nbspace = width_wrap[i] - this_line->width; 0.00 : 417aa2: 42 8b 14 a1 mov (%rcx,%r12,4),%edx 0.00 : 417aa6: 2b 53 08 sub 0x8(%rbx),%edx : : /* centered */ : fprintf(fout, "%-*s%s%-*s", 0.00 : 417aa9: b9 17 69 43 00 mov $0x436917,%ecx 0.00 : 417aae: 48 c7 04 24 17 69 43 movq $0x436917,(%rsp) 0.00 : 417ab5: 00 0.00 : 417ab6: 4c 8b 03 mov (%rbx),%r8 0.00 : 417ab9: 44 8d 4a 01 lea 0x1(%rdx),%r9d 0.00 : 417abd: d1 ea shr %edx 0.00 : 417abf: 41 d1 e9 shr %r9d 0.00 : 417ac2: e8 19 c1 fe ff callq 403be0 : nbspace / 2, "", this_line->ptr, (nbspace + 1) / 2, ""); : : if (!(this_line + 1)->ptr) 0.00 : 417ac7: 48 83 7b 10 00 cmpq $0x0,0x10(%rbx) 0.00 : 417acc: 0f 84 4e 09 00 00 je 418420 : } : } : else : fprintf(fout, "%*s", width_wrap[i], ""); : : if (opt_border != 0 || format->wrap_right_border) 0.00 : 417ad2: 66 83 7d 90 00 cmpw $0x0,-0x70(%rbp) 0.00 : 417ad7: 75 10 jne 417ae9 0.00 : 417ad9: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 417ae0: 80 b8 d0 00 00 00 00 cmpb $0x0,0xd0(%rax) 0.00 : 417ae7: 74 37 je 417b20 : fputs(!header_done[i] ? format->header_nl_right : " ", 0.00 : 417ae9: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 0.00 : 417aee: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 417af2: bf e4 80 44 00 mov $0x4480e4,%edi 0.00 : 417af7: 75 0e jne 417b07 0.00 : 417af9: 48 8b 95 d0 fe ff ff mov -0x130(%rbp),%rdx 0.00 : 417b00: 48 8b ba a8 00 00 00 mov 0xa8(%rdx),%rdi 0.00 : 417b07: e8 f4 be fe ff callq 403a00 : fout); : : if (opt_border != 0 && i < col_count - 1) 0.00 : 417b0c: 66 83 7d 90 00 cmpw $0x0,-0x70(%rbp) 0.00 : 417b11: 74 0d je 417b20 0.00 : 417b13: 44 3b b5 80 fe ff ff cmp -0x180(%rbp),%r14d 0.00 : 417b1a: 0f 82 b8 08 00 00 jb 4183d8 : while (more_col_wrapping) : { : if (opt_border == 2) : fputs(dformat->leftvrule, fout); : : for (i = 0; i < cont->ncolumns; i++) 0.00 : 417b20: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 417b27: 41 83 c6 01 add $0x1,%r14d 0.00 : 417b2b: 44 39 73 10 cmp %r14d,0x10(%rbx) 0.00 : 417b2f: 0f 86 bc 08 00 00 jbe 4183f1 : { : struct lineptr *this_line = col_lineptrs[i] + curr_nl_line; : unsigned int nbspace; : : if (opt_border != 0 || 0.00 : 417b35: 66 83 7d 90 00 cmpw $0x0,-0x70(%rbp) : if (opt_border == 2) : fputs(dformat->leftvrule, fout); : : for (i = 0; i < cont->ncolumns; i++) : { : struct lineptr *this_line = col_lineptrs[i] + curr_nl_line; 0.00 : 417b3a: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 417b41: 45 89 f4 mov %r14d,%r12d 0.00 : 417b44: 4a 8b 1c e1 mov (%rcx,%r12,8),%rbx : unsigned int nbspace; : : if (opt_border != 0 || 0.00 : 417b48: 75 15 jne 417b5f 0.00 : 417b4a: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 417b51: 80 b8 d0 00 00 00 00 cmpb $0x0,0xd0(%rax) 0.00 : 417b58: 75 2b jne 417b85 0.00 : 417b5a: 45 85 f6 test %r14d,%r14d 0.00 : 417b5d: 74 26 je 417b85 : (!format->wrap_right_border && i > 0)) : fputs(curr_nl_line ? format->header_nl_left : " ", 0.00 : 417b5f: 8b 85 4c ff ff ff mov -0xb4(%rbp),%eax 0.00 : 417b65: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 417b69: bf e4 80 44 00 mov $0x4480e4,%edi 0.00 : 417b6e: 85 c0 test %eax,%eax 0.00 : 417b70: 74 0e je 417b80 0.00 : 417b72: 48 8b 95 d0 fe ff ff mov -0x130(%rbp),%rdx 0.00 : 417b79: 48 8b ba a0 00 00 00 mov 0xa0(%rdx),%rdi 0.00 : 417b80: e8 7b be fe ff callq 403a00 : fout); : : if (!header_done[i]) 0.00 : 417b85: 4c 8b ad 30 ff ff ff mov -0xd0(%rbp),%r13 0.00 : 417b8c: 4d 01 e5 add %r12,%r13 0.00 : 417b8f: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 0.00 : 417b94: 0f 84 f3 fe ff ff je 417a8d : more_col_wrapping--; : header_done[i] = 1; : } : } : else : fprintf(fout, "%*s", width_wrap[i], ""); 0.00 : 417b9a: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 417ba1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 417ba5: b9 17 69 43 00 mov $0x436917,%ecx 0.00 : 417baa: be 89 76 44 00 mov $0x447689,%esi 0.00 : 417baf: 31 c0 xor %eax,%eax 0.00 : 417bb1: 42 8b 14 a3 mov (%rbx,%r12,4),%edx 0.00 : 417bb5: e8 26 c0 fe ff callq 403be0 0.00 : 417bba: e9 13 ff ff ff jmpq 417ad2 : if (opt_border == 2) : fputs(dformat->rightvrule, fout); : fputc('\n', fout); : } : : _print_horizontal_line(col_count, width_wrap, opt_border, 0.00 : 417bbf: 0f b7 55 90 movzwl -0x70(%rbp),%edx 0.00 : 417bc3: 4c 8b 4d a8 mov -0x58(%rbp),%r9 0.00 : 417bc7: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 417bcc: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 417bd3: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 417bda: 8b bd dc fe ff ff mov -0x124(%rbp),%edi 0.00 : 417be0: e8 6b cf ff ff callq 414b50 <_print_horizontal_line> : PRINT_RULE_MIDDLE, format, fout); : } : } : : /* print cells, one loop per row */ : for (i = 0, ptr = cont->cells; *ptr; i += col_count, ptr += col_count) 0.00 : 417be5: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 417bec: 4c 8b 72 28 mov 0x28(%rdx),%r14 0.00 : 417bf0: 49 83 3e 00 cmpq $0x0,(%r14) 0.00 : 417bf4: 0f 84 59 f8 ff ff je 417453 : { : bool more_lines; : : if (cancel_pressed) 0.00 : 417bfa: 0f b6 05 bf 32 25 00 movzbl 0x2532bf(%rip),%eax # 66aec0 0.00 : 417c01: 84 c0 test %al,%al 0.00 : 417c03: 0f 85 4a f8 ff ff jne 417453 0.00 : 417c09: 8b 85 dc fe ff ff mov -0x124(%rbp),%eax : { : /* We have a valid array element, so index it */ : struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]]; : int bytes_to_output; : int chars_to_output = width_wrap[j]; : bool finalspaces = (opt_border == 2 || j < col_count - 1); 0.00 : 417c0f: 8b 9d dc fe ff ff mov -0x124(%rbp),%ebx 0.00 : 417c15: 83 eb 01 sub $0x1,%ebx : /* print cells, one loop per row */ : for (i = 0, ptr = cont->cells; *ptr; i += col_count, ptr += col_count) : { : bool more_lines; : : if (cancel_pressed) 0.00 : 417c18: 48 8d 0c 85 00 00 00 lea 0x0(,%rax,4),%rcx 0.00 : 417c1f: 00 : PRINT_RULE_MIDDLE, format, fout); : } : } : : /* print cells, one loop per row */ : for (i = 0, ptr = cont->cells; *ptr; i += col_count, ptr += col_count) 0.00 : 417c20: 48 c1 e0 03 shl $0x3,%rax : { : /* We have a valid array element, so index it */ : struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]]; : int bytes_to_output; : int chars_to_output = width_wrap[j]; : bool finalspaces = (opt_border == 2 || j < col_count - 1); 0.00 : 417c24: 89 9d 84 fe ff ff mov %ebx,-0x17c(%rbp) : PRINT_RULE_MIDDLE, format, fout); : } : } : : /* print cells, one loop per row */ : for (i = 0, ptr = cont->cells; *ptr; i += col_count, ptr += col_count) 0.00 : 417c2a: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 417c2e: 4c 01 f0 add %r14,%rax : { : bool more_lines; : : if (cancel_pressed) 0.00 : 417c31: 48 89 8d 68 ff ff ff mov %rcx,-0x98(%rbp) : PRINT_RULE_MIDDLE, format, fout); : } : } : : /* print cells, one loop per row */ : for (i = 0, ptr = cont->cells; *ptr; i += col_count, ptr += col_count) 0.00 : 417c38: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) 0.00 : 417c3f: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : break; : : /* : * Format each cell. : */ : for (j = 0; j < col_count; j++) 0.00 : 417c46: 80 bd ca fe ff ff 00 cmpb $0x0,-0x136(%rbp) 0.00 : 417c4d: 74 5c je 417cab 0.00 : 417c4f: 45 31 ed xor %r13d,%r13d 0.00 : 417c52: 45 31 e4 xor %r12d,%r12d 0.00 : 417c55: 0f 1f 00 nopl (%rax) : { : pg_wcsformat((const unsigned char *) ptr[j], strlen(ptr[j]), encoding, 0.00 : 417c58: 4b 8b 1c 66 mov (%r14,%r12,2),%rbx : break; : : /* : * Format each cell. : */ : for (j = 0; j < col_count; j++) 0.00 : 417c5c: 41 83 c5 01 add $0x1,%r13d : { : pg_wcsformat((const unsigned char *) ptr[j], strlen(ptr[j]), encoding, 0.00 : 417c60: 48 89 df mov %rbx,%rdi 0.00 : 417c63: e8 18 bc fe ff callq 403880 0.00 : 417c68: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 417c6f: 48 89 c6 mov %rax,%rsi 0.00 : 417c72: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 417c79: 48 89 df mov %rbx,%rdi 0.00 : 417c7c: 4a 8b 0c 60 mov (%rax,%r12,2),%rcx 0.00 : 417c80: 46 8b 04 22 mov (%rdx,%r12,1),%r8d 0.00 : 417c84: 8b 95 cc fe ff ff mov -0x134(%rbp),%edx 0.00 : 417c8a: e8 f1 4e 01 00 callq 42cb80 : col_lineptrs[j], max_nl_lines[j]); : curr_nl_line[j] = 0; 0.00 : 417c8f: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 417c96: 42 c7 04 21 00 00 00 movl $0x0,(%rcx,%r12,1) 0.00 : 417c9d: 00 : break; : : /* : * Format each cell. : */ : for (j = 0; j < col_count; j++) 0.00 : 417c9e: 49 83 c4 04 add $0x4,%r12 0.00 : 417ca2: 44 3b ad dc fe ff ff cmp -0x124(%rbp),%r13d 0.00 : 417ca9: 72 ad jb 417c58 : pg_wcsformat((const unsigned char *) ptr[j], strlen(ptr[j]), encoding, : col_lineptrs[j], max_nl_lines[j]); : curr_nl_line[j] = 0; : } : : memset(bytes_output, 0, col_count * sizeof(int)); 0.00 : 417cab: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 417cb2: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 417cb9: 31 f6 xor %esi,%esi 0.00 : 417cbb: e8 50 bd fe ff callq 403a10 : do : { : more_lines = false; : : /* left border */ : if (opt_border == 2) 0.00 : 417cc0: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) 0.00 : 417cc5: 0f 84 71 05 00 00 je 41823c : fputs(dformat->leftvrule, fout); : : /* for each column */ : for (j = 0; j < col_count; j++) 0.00 : 417ccb: 80 bd ca fe ff ff 00 cmpb $0x0,-0x136(%rbp) 0.00 : 417cd2: c6 85 50 ff ff ff 00 movb $0x0,-0xb0(%rbp) 0.00 : 417cd9: 0f 84 79 02 00 00 je 417f58 0.00 : 417cdf: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 417ce6: c6 85 50 ff ff ff 00 movb $0x0,-0xb0(%rbp) 0.00 : 417ced: 45 31 f6 xor %r14d,%r14d 0.00 : 417cf0: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 417cf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 417cfe: 00 00 : { : /* We have a valid array element, so index it */ : struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]]; 0.00 : 417d00: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 417d07: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx : int bytes_to_output; : int chars_to_output = width_wrap[j]; 0.00 : 417d0e: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx : : /* for each column */ : for (j = 0; j < col_count; j++) : { : /* We have a valid array element, so index it */ : struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]]; 0.00 : 417d15: 46 8b 3c b2 mov (%rdx,%r14,4),%r15d : int bytes_to_output; : int chars_to_output = width_wrap[j]; 0.00 : 417d19: 42 8b 04 b3 mov (%rbx,%r14,4),%eax : : /* for each column */ : for (j = 0; j < col_count; j++) : { : /* We have a valid array element, so index it */ : struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]]; 0.00 : 417d1d: 49 c1 e7 04 shl $0x4,%r15 0.00 : 417d21: 4e 03 3c f1 add (%rcx,%r14,8),%r15 : int bytes_to_output; : int chars_to_output = width_wrap[j]; : bool finalspaces = (opt_border == 2 || j < col_count - 1); 0.00 : 417d25: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) : for (j = 0; j < col_count; j++) : { : /* We have a valid array element, so index it */ : struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]]; : int bytes_to_output; : int chars_to_output = width_wrap[j]; 0.00 : 417d2a: 89 45 c0 mov %eax,-0x40(%rbp) : bool finalspaces = (opt_border == 2 || j < col_count - 1); 0.00 : 417d2d: c6 85 67 ff ff ff 01 movb $0x1,-0x99(%rbp) 0.00 : 417d34: 0f 84 f6 02 00 00 je 418030 0.00 : 417d3a: 44 39 b5 84 fe ff ff cmp %r14d,-0x17c(%rbp) 0.00 : 417d41: 0f 97 85 67 ff ff ff seta -0x99(%rbp) : : /* Print left-hand wrap or newline mark */ : if (opt_border != 0) 0.00 : 417d48: 66 83 7d 90 00 cmpw $0x0,-0x70(%rbp) 0.00 : 417d4d: 0f 85 dd 02 00 00 jne 418030 : fputs(format->nl_left, fout); : else : fputc(' ', fout); : } : : if (!this_line->ptr) 0.00 : 417d53: 49 8b 07 mov (%r15),%rax 0.00 : 417d56: 48 85 c0 test %rax,%rax 0.00 : 417d59: 0f 84 08 03 00 00 je 418067 : fprintf(fout, "%*s", chars_to_output, ""); : } : else : { : /* Get strlen() of the characters up to width_wrap */ : bytes_to_output = 0.00 : 417d5f: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 417d66: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 417d6a: 48 63 3a movslq (%rdx),%rdi 0.00 : 417d6d: 8b 95 cc fe ff ff mov -0x134(%rbp),%edx 0.00 : 417d73: 48 8d 3c 38 lea (%rax,%rdi,1),%rdi 0.00 : 417d77: e8 b4 d7 ff ff callq 415530 : * If we exceeded width_wrap, it means the display width : * of a single character was wider than our target width. : * In that case, we have to pretend we are only printing : * the target display width and make the best of it. : */ : if (chars_to_output > width_wrap[j]) 0.00 : 417d7c: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx : fprintf(fout, "%*s", chars_to_output, ""); : } : else : { : /* Get strlen() of the characters up to width_wrap */ : bytes_to_output = 0.00 : 417d83: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : * the target display width and make the best of it. : */ : if (chars_to_output > width_wrap[j]) : chars_to_output = width_wrap[j]; : : if (cont->aligns[j] == 'r') /* Right aligned cell */ 0.00 : 417d89: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx : * If we exceeded width_wrap, it means the display width : * of a single character was wider than our target width. : * In that case, we have to pretend we are only printing : * the target display width and make the best of it. : */ : if (chars_to_output > width_wrap[j]) 0.00 : 417d90: 42 8b 04 b1 mov (%rcx,%r14,4),%eax : chars_to_output = width_wrap[j]; 0.00 : 417d94: 39 45 c0 cmp %eax,-0x40(%rbp) 0.00 : 417d97: 8b 4d c0 mov -0x40(%rbp),%ecx 0.00 : 417d9a: 0f 47 c8 cmova %eax,%ecx 0.00 : 417d9d: 89 4d c0 mov %ecx,-0x40(%rbp) : : if (cont->aligns[j] == 'r') /* Right aligned cell */ 0.00 : 417da0: 48 8b 43 58 mov 0x58(%rbx),%rax 0.00 : 417da4: 42 80 3c 30 72 cmpb $0x72,(%rax,%r14,1) 0.00 : 417da9: 0f 84 91 03 00 00 je 418140 : bytes_to_output); : } : else /* Left aligned cell */ : { : /* spaces second */ : fputnbytes(fout, 0.00 : 417daf: 4c 63 a5 60 ff ff ff movslq -0xa0(%rbp),%r12 0.00 : 417db6: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 417dbd: 49 8b 17 mov (%r15),%rdx 0.00 : 417dc0: 4c 8b 6d a8 mov -0x58(%rbp),%r13 0.00 : 417dc4: 8b 01 mov (%rcx),%eax : * is not valid in what libc thinks is the prevailing encoding. : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) 0.00 : 417dc6: 4d 85 e4 test %r12,%r12 0.00 : 417dc9: 74 2b je 417df6 : bytes_to_output); : } : else /* Left aligned cell */ : { : /* spaces second */ : fputnbytes(fout, 0.00 : 417dcb: 48 98 cltq 0.00 : 417dcd: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx 0.00 : 417dd1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) : fputc(*str++, f); /home/Computational/mark/src/postgres-andres/src/bin/psql/print.c:302 66.67 : 417dd8: 0f be 3b movsbl (%rbx),%edi 0.00 : 417ddb: 4c 89 ee mov %r13,%rsi 0.00 : 417dde: 48 83 c3 01 add $0x1,%rbx 0.00 : 417de2: e8 d9 bc fe ff callq 403ac0 : * is not valid in what libc thinks is the prevailing encoding. : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) 0.00 : 417de7: 49 83 ec 01 sub $0x1,%r12 0.00 : 417deb: 75 eb jne 417dd8 0.00 : 417ded: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 417df4: 8b 03 mov (%rbx),%eax : fputnbytes(fout, : (char *) (this_line->ptr + bytes_output[j]), : bytes_to_output); : } : : bytes_output[j] += bytes_to_output; 0.00 : 417df6: 03 85 60 ff ff ff add -0xa0(%rbp),%eax 0.00 : 417dfc: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 417e03: 89 02 mov %eax,(%rdx) : : /* Do we have more text to wrap? */ : if (*(this_line->ptr + bytes_output[j]) != '\0') 0.00 : 417e05: 49 8b 17 mov (%r15),%rdx 0.00 : 417e08: 48 98 cltq 0.00 : 417e0a: 80 3c 02 00 cmpb $0x0,(%rdx,%rax,1) 0.00 : 417e0e: 0f 84 9c 02 00 00 je 4180b0 0.00 : 417e14: c6 85 50 ff ff ff 01 movb $0x1,-0xb0(%rbp) : bytes_output[j] = 0; : } : } : : /* Determine next line's wrap status for this column */ : wrap[j] = PRINT_LINE_WRAP_NONE; 0.00 : 417e1b: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 417e22: 42 c7 04 b3 00 00 00 movl $0x0,(%rbx,%r14,4) 0.00 : 417e29: 00 : if (col_lineptrs[j][curr_nl_line[j]].ptr != NULL) 0.00 : 417e2a: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 417e31: 48 8b 9d 28 ff ff ff mov -0xd8(%rbp),%rbx 0.00 : 417e38: 42 8b 0c b0 mov (%rax,%r14,4),%ecx 0.00 : 417e3c: 4a 8b 14 f3 mov (%rbx,%r14,8),%rdx 0.00 : 417e40: 89 c8 mov %ecx,%eax 0.00 : 417e42: 48 c1 e0 04 shl $0x4,%rax 0.00 : 417e46: 48 83 3c 02 00 cmpq $0x0,(%rdx,%rax,1) 0.00 : 417e4b: 74 20 je 417e6d : { : if (bytes_output[j] != 0) 0.00 : 417e4d: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 417e54: 8b 00 mov (%rax),%eax 0.00 : 417e56: 85 c0 test %eax,%eax 0.00 : 417e58: 0f 84 32 02 00 00 je 418090 : wrap[j] = PRINT_LINE_WRAP_WRAP; 0.00 : 417e5e: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 417e65: 42 c7 04 b2 01 00 00 movl $0x1,(%rdx,%r14,4) 0.00 : 417e6c: 00 : : /* : * If left-aligned, pad out remaining space if needed (not : * last column, and/or wrap marks required). : */ : if (cont->aligns[j] != 'r') /* Left aligned cell */ 0.00 : 417e6d: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 417e74: 48 8b 43 58 mov 0x58(%rbx),%rax 0.00 : 417e78: 42 80 3c 30 72 cmpb $0x72,(%rax,%r14,1) 0.00 : 417e7d: 0f 84 70 01 00 00 je 417ff3 : { : if (finalspaces || 0.00 : 417e83: 80 bd 67 ff ff ff 00 cmpb $0x0,-0x99(%rbp) 0.00 : 417e8a: 0f 85 40 01 00 00 jne 417fd0 0.00 : 417e90: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 417e97: 42 8b 04 b2 mov (%rdx,%r14,4),%eax 0.00 : 417e9b: 83 f8 01 cmp $0x1,%eax 0.00 : 417e9e: 0f 84 2c 01 00 00 je 417fd0 0.00 : 417ea4: 83 f8 02 cmp $0x2,%eax 0.00 : 417ea7: 0f 84 23 01 00 00 je 417fd0 : /* Print right-hand wrap or newline mark */ : if (wrap[j] == PRINT_LINE_WRAP_WRAP) : fputs(format->wrap_right, fout); : else if (wrap[j] == PRINT_LINE_WRAP_NEWLINE) : fputs(format->nl_right, fout); : else if (opt_border == 2 || j < col_count - 1) 0.00 : 417ead: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) 0.00 : 417eb2: 74 09 je 417ebd 0.00 : 417eb4: 44 39 b5 84 fe ff ff cmp %r14d,-0x17c(%rbp) 0.00 : 417ebb: 76 0e jbe 417ecb : fputc(' ', fout); 0.00 : 417ebd: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 417ec1: bf 20 00 00 00 mov $0x20,%edi 0.00 : 417ec6: e8 f5 bb fe ff callq 403ac0 : : /* Print column divider, if not the last column */ : if (opt_border != 0 && j < col_count - 1) 0.00 : 417ecb: 66 83 7d 90 00 cmpw $0x0,-0x70(%rbp) 0.00 : 417ed0: 41 8d 5e 01 lea 0x1(%r14),%ebx 0.00 : 417ed4: 74 6a je 417f40 0.00 : 417ed6: 44 3b b5 84 fe ff ff cmp -0x17c(%rbp),%r14d 0.00 : 417edd: 44 89 f0 mov %r14d,%eax 0.00 : 417ee0: 8d 58 01 lea 0x1(%rax),%ebx 0.00 : 417ee3: 73 5b jae 417f40 0.00 : 417ee5: 8d 58 01 lea 0x1(%rax),%ebx : { : if (wrap[j + 1] == PRINT_LINE_WRAP_WRAP) 0.00 : 417ee8: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 417eef: 89 da mov %ebx,%edx 0.00 : 417ef1: 8b 04 91 mov (%rcx,%rdx,4),%eax 0.00 : 417ef4: 83 f8 01 cmp $0x1,%eax 0.00 : 417ef7: 0f 84 cf 02 00 00 je 4181cc : fputs(format->midvrule_wrap, fout); : else if (wrap[j + 1] == PRINT_LINE_WRAP_NEWLINE) 0.00 : 417efd: 83 f8 02 cmp $0x2,%eax 0.00 : 417f00: 0f 84 e2 02 00 00 je 4181e8 : fputs(format->midvrule_nl, fout); : else if (col_lineptrs[j + 1][curr_nl_line[j + 1]].ptr == NULL) 0.00 : 417f06: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 417f0d: 8b 04 91 mov (%rcx,%rdx,4),%eax 0.00 : 417f10: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 417f17: 48 8b 14 d1 mov (%rcx,%rdx,8),%rdx 0.00 : 417f1b: 48 c1 e0 04 shl $0x4,%rax 0.00 : 417f1f: 48 83 3c 02 00 cmpq $0x0,(%rdx,%rax,1) 0.00 : 417f24: 0f 84 da 02 00 00 je 418204 : fputs(format->midvrule_blank, fout); : else : fputs(dformat->midvrule, fout); 0.00 : 417f2a: 48 8b 95 d0 fe ff ff mov -0x130(%rbp),%rdx 0.00 : 417f31: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 417f35: 48 8b 7a 78 mov 0x78(%rdx),%rdi 0.00 : 417f39: e8 c2 ba fe ff callq 403a00 0.00 : 417f3e: 66 90 xchg %ax,%ax 0.00 : 417f40: 49 83 c6 01 add $0x1,%r14 0.00 : 417f44: 48 83 85 70 ff ff ff addq $0x4,-0x90(%rbp) 0.00 : 417f4b: 04 : /* left border */ : if (opt_border == 2) : fputs(dformat->leftvrule, fout); : : /* for each column */ : for (j = 0; j < col_count; j++) 0.00 : 417f4c: 3b 9d dc fe ff ff cmp -0x124(%rbp),%ebx 0.00 : 417f52: 0f 82 a8 fd ff ff jb 417d00 : fputs(dformat->midvrule, fout); : } : } : : /* end-of-row border */ : if (opt_border == 2) 0.00 : 417f58: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) 0.00 : 417f5d: 0f 84 bd 02 00 00 je 418220 : fputs(dformat->rightvrule, fout); : fputc('\n', fout); 0.00 : 417f63: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 417f67: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 417f6c: e8 4f bb fe ff callq 403ac0 : : } while (more_lines); 0.00 : 417f71: 80 bd 50 ff ff ff 00 cmpb $0x0,-0xb0(%rbp) 0.00 : 417f78: 0f 85 42 fd ff ff jne 417cc0 : PRINT_RULE_MIDDLE, format, fout); : } : } : : /* print cells, one loop per row */ : for (i = 0, ptr = cont->cells; *ptr; i += col_count, ptr += col_count) 0.00 : 417f7e: 48 8b 9d 78 ff ff ff mov -0x88(%rbp),%rbx 0.00 : 417f85: 4c 8b b5 a0 fe ff ff mov -0x160(%rbp),%r14 0.00 : 417f8c: 48 83 3b 00 cmpq $0x0,(%rbx) 0.00 : 417f90: 0f 84 bd f4 ff ff je 417453 : { : bool more_lines; : : if (cancel_pressed) 0.00 : 417f96: 0f b6 05 23 2f 25 00 movzbl 0x252f23(%rip),%eax # 66aec0 0.00 : 417f9d: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 417fa1: 48 01 95 78 ff ff ff add %rdx,-0x88(%rbp) 0.00 : 417fa8: 84 c0 test %al,%al 0.00 : 417faa: 0f 85 a3 f4 ff ff jne 417453 0.00 : 417fb0: 48 8b 8d a0 fe ff ff mov -0x160(%rbp),%rcx 0.00 : 417fb7: 48 01 d1 add %rdx,%rcx 0.00 : 417fba: 48 89 8d a0 fe ff ff mov %rcx,-0x160(%rbp) 0.00 : 417fc1: e9 80 fc ff ff jmpq 417c46 0.00 : 417fc6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 417fcd: 00 00 00 : if (cont->aligns[j] != 'r') /* Left aligned cell */ : { : if (finalspaces || : wrap[j] == PRINT_LINE_WRAP_WRAP || : wrap[j] == PRINT_LINE_WRAP_NEWLINE) : fprintf(fout, "%*s", 0.00 : 417fd0: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 417fd7: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 417fdb: be 89 76 44 00 mov $0x447689,%esi 0.00 : 417fe0: 31 c0 xor %eax,%eax 0.00 : 417fe2: 42 8b 14 b1 mov (%rcx,%r14,4),%edx 0.00 : 417fe6: 2b 55 c0 sub -0x40(%rbp),%edx 0.00 : 417fe9: b9 17 69 43 00 mov $0x436917,%ecx 0.00 : 417fee: e8 ed bb fe ff callq 403be0 : width_wrap[j] - chars_to_output, ""); : } : : /* Print right-hand wrap or newline mark */ : if (wrap[j] == PRINT_LINE_WRAP_WRAP) 0.00 : 417ff3: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 417ffa: 42 8b 04 b3 mov (%rbx,%r14,4),%eax 0.00 : 417ffe: 83 f8 01 cmp $0x1,%eax 0.00 : 418001: 0f 84 f9 00 00 00 je 418100 : fputs(format->wrap_right, fout); : else if (wrap[j] == PRINT_LINE_WRAP_NEWLINE) 0.00 : 418007: 83 f8 02 cmp $0x2,%eax 0.00 : 41800a: 0f 85 9d fe ff ff jne 417ead : fputs(format->nl_right, fout); 0.00 : 418010: 48 8b 95 d0 fe ff ff mov -0x130(%rbp),%rdx 0.00 : 418017: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 41801b: 48 8b ba b8 00 00 00 mov 0xb8(%rdx),%rdi 0.00 : 418022: e8 d9 b9 fe ff callq 403a00 0.00 : 418027: e9 9f fe ff ff jmpq 417ecb 0.00 : 41802c: 0f 1f 40 00 nopl 0x0(%rax) : bool finalspaces = (opt_border == 2 || j < col_count - 1); : : /* Print left-hand wrap or newline mark */ : if (opt_border != 0) : { : if (wrap[j] == PRINT_LINE_WRAP_WRAP) 0.00 : 418030: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 418037: 42 8b 04 b2 mov (%rdx,%r14,4),%eax 0.00 : 41803b: 83 f8 01 cmp $0x1,%eax 0.00 : 41803e: 0f 84 6c 01 00 00 je 4181b0 : fputs(format->wrap_left, fout); : else if (wrap[j] == PRINT_LINE_WRAP_NEWLINE) 0.00 : 418044: 83 f8 02 cmp $0x2,%eax 0.00 : 418047: 0f 84 d3 00 00 00 je 418120 : fputs(format->nl_left, fout); : else : fputc(' ', fout); 0.00 : 41804d: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 418051: bf 20 00 00 00 mov $0x20,%edi 0.00 : 418056: e8 65 ba fe ff callq 403ac0 : } : : if (!this_line->ptr) 0.00 : 41805b: 49 8b 07 mov (%r15),%rax 0.00 : 41805e: 48 85 c0 test %rax,%rax 0.00 : 418061: 0f 85 f8 fc ff ff jne 417d5f : { : /* Past newline lines so just pad for other columns */ : if (finalspaces) 0.00 : 418067: 80 bd 67 ff ff ff 00 cmpb $0x0,-0x99(%rbp) 0.00 : 41806e: 0f 84 a7 fd ff ff je 417e1b : fprintf(fout, "%*s", chars_to_output, ""); 0.00 : 418074: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 418077: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 41807b: b9 17 69 43 00 mov $0x436917,%ecx 0.00 : 418080: be 89 76 44 00 mov $0x447689,%esi 0.00 : 418085: e8 56 bb fe ff callq 403be0 0.00 : 41808a: e9 8c fd ff ff jmpq 417e1b 0.00 : 41808f: 90 nop : wrap[j] = PRINT_LINE_WRAP_NONE; : if (col_lineptrs[j][curr_nl_line[j]].ptr != NULL) : { : if (bytes_output[j] != 0) : wrap[j] = PRINT_LINE_WRAP_WRAP; : else if (curr_nl_line[j] != 0) 0.00 : 418090: 85 c9 test %ecx,%ecx 0.00 : 418092: 0f 84 d5 fd ff ff je 417e6d : wrap[j] = PRINT_LINE_WRAP_NEWLINE; 0.00 : 418098: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 41809f: 42 c7 04 b1 02 00 00 movl $0x2,(%rcx,%r14,4) 0.00 : 4180a6: 00 0.00 : 4180a7: e9 c1 fd ff ff jmpq 417e6d 0.00 : 4180ac: 0f 1f 40 00 nopl 0x0(%rax) : if (*(this_line->ptr + bytes_output[j]) != '\0') : more_lines = true; : else : { : /* Advance to next newline line */ : curr_nl_line[j]++; 0.00 : 4180b0: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 4180b7: 42 8b 04 b1 mov (%rcx,%r14,4),%eax 0.00 : 4180bb: 83 c0 01 add $0x1,%eax 0.00 : 4180be: 42 89 04 b1 mov %eax,(%rcx,%r14,4) : if (col_lineptrs[j][curr_nl_line[j]].ptr != NULL) 0.00 : 4180c2: 48 8b 9d 28 ff ff ff mov -0xd8(%rbp),%rbx 0.00 : 4180c9: 89 c0 mov %eax,%eax 0.00 : 4180cb: 48 c1 e0 04 shl $0x4,%rax : more_lines = true; : bytes_output[j] = 0; 0.00 : 4180cf: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : more_lines = true; : else : { : /* Advance to next newline line */ : curr_nl_line[j]++; : if (col_lineptrs[j][curr_nl_line[j]].ptr != NULL) 0.00 : 4180d6: 4a 8b 14 f3 mov (%rbx,%r14,8),%rdx 0.00 : 4180da: 48 83 3c 02 00 cmpq $0x0,(%rdx,%rax,1) 0.00 : 4180df: 0f b6 85 50 ff ff ff movzbl -0xb0(%rbp),%eax 0.00 : 4180e6: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4180eb: 0f 44 d0 cmove %eax,%edx 0.00 : 4180ee: 88 95 50 ff ff ff mov %dl,-0xb0(%rbp) : more_lines = true; : bytes_output[j] = 0; 0.00 : 4180f4: c7 01 00 00 00 00 movl $0x0,(%rcx) 0.00 : 4180fa: e9 1c fd ff ff jmpq 417e1b 0.00 : 4180ff: 90 nop : width_wrap[j] - chars_to_output, ""); : } : : /* Print right-hand wrap or newline mark */ : if (wrap[j] == PRINT_LINE_WRAP_WRAP) : fputs(format->wrap_right, fout); 0.00 : 418100: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 418107: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 41810b: 48 8b b8 c8 00 00 00 mov 0xc8(%rax),%rdi 0.00 : 418112: e8 e9 b8 fe ff callq 403a00 0.00 : 418117: e9 af fd ff ff jmpq 417ecb 0.00 : 41811c: 0f 1f 40 00 nopl 0x0(%rax) : if (opt_border != 0) : { : if (wrap[j] == PRINT_LINE_WRAP_WRAP) : fputs(format->wrap_left, fout); : else if (wrap[j] == PRINT_LINE_WRAP_NEWLINE) : fputs(format->nl_left, fout); 0.00 : 418120: 48 8b 9d d0 fe ff ff mov -0x130(%rbp),%rbx 0.00 : 418127: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 41812b: 48 8b bb b0 00 00 00 mov 0xb0(%rbx),%rdi 0.00 : 418132: e8 c9 b8 fe ff callq 403a00 0.00 : 418137: e9 17 fc ff ff jmpq 417d53 0.00 : 41813c: 0f 1f 40 00 nopl 0x0(%rax) : chars_to_output = width_wrap[j]; : : if (cont->aligns[j] == 'r') /* Right aligned cell */ : { : /* spaces first */ : fprintf(fout, "%*s", width_wrap[j] - chars_to_output, ""); 0.00 : 418140: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : 418147: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 41814b: be 89 76 44 00 mov $0x447689,%esi 0.00 : 418150: 42 8b 14 b0 mov (%rax,%r14,4),%edx 0.00 : 418154: 31 c0 xor %eax,%eax 0.00 : 418156: 29 ca sub %ecx,%edx 0.00 : 418158: b9 17 69 43 00 mov $0x436917,%ecx 0.00 : 41815d: e8 7e ba fe ff callq 403be0 : fputnbytes(fout, 0.00 : 418162: 4c 63 a5 60 ff ff ff movslq -0xa0(%rbp),%r12 0.00 : 418169: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 418170: 49 8b 17 mov (%r15),%rdx 0.00 : 418173: 4c 8b 6d a8 mov -0x58(%rbp),%r13 0.00 : 418177: 8b 01 mov (%rcx),%eax : * is not valid in what libc thinks is the prevailing encoding. : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) 0.00 : 418179: 4d 85 e4 test %r12,%r12 0.00 : 41817c: 0f 84 74 fc ff ff je 417df6 : : if (cont->aligns[j] == 'r') /* Right aligned cell */ : { : /* spaces first */ : fprintf(fout, "%*s", width_wrap[j] - chars_to_output, ""); : fputnbytes(fout, 0.00 : 418182: 48 98 cltq 0.00 : 418184: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx 0.00 : 418188: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41818f: 00 : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) : fputc(*str++, f); 0.00 : 418190: 0f be 3b movsbl (%rbx),%edi 0.00 : 418193: 4c 89 ee mov %r13,%rsi 0.00 : 418196: 48 83 c3 01 add $0x1,%rbx 0.00 : 41819a: e8 21 b9 fe ff callq 403ac0 : * is not valid in what libc thinks is the prevailing encoding. : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) 0.00 : 41819f: 49 83 ec 01 sub $0x1,%r12 0.00 : 4181a3: 75 eb jne 418190 0.00 : 4181a5: e9 43 fc ff ff jmpq 417ded 0.00 : 4181aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* Print left-hand wrap or newline mark */ : if (opt_border != 0) : { : if (wrap[j] == PRINT_LINE_WRAP_WRAP) : fputs(format->wrap_left, fout); 0.00 : 4181b0: 48 8b 8d d0 fe ff ff mov -0x130(%rbp),%rcx 0.00 : 4181b7: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4181bb: 48 8b b9 c0 00 00 00 mov 0xc0(%rcx),%rdi 0.00 : 4181c2: e8 39 b8 fe ff callq 403a00 0.00 : 4181c7: e9 87 fb ff ff jmpq 417d53 : : /* Print column divider, if not the last column */ : if (opt_border != 0 && j < col_count - 1) : { : if (wrap[j + 1] == PRINT_LINE_WRAP_WRAP) : fputs(format->midvrule_wrap, fout); 0.00 : 4181cc: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 4181d3: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4181d7: 48 8b b8 90 00 00 00 mov 0x90(%rax),%rdi 0.00 : 4181de: e8 1d b8 fe ff callq 403a00 0.00 : 4181e3: e9 58 fd ff ff jmpq 417f40 : else if (wrap[j + 1] == PRINT_LINE_WRAP_NEWLINE) : fputs(format->midvrule_nl, fout); 0.00 : 4181e8: 48 8b 95 d0 fe ff ff mov -0x130(%rbp),%rdx 0.00 : 4181ef: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4181f3: 48 8b ba 88 00 00 00 mov 0x88(%rdx),%rdi 0.00 : 4181fa: e8 01 b8 fe ff callq 403a00 0.00 : 4181ff: e9 3c fd ff ff jmpq 417f40 : else if (col_lineptrs[j + 1][curr_nl_line[j + 1]].ptr == NULL) : fputs(format->midvrule_blank, fout); 0.00 : 418204: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 41820b: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 41820f: 48 8b b8 98 00 00 00 mov 0x98(%rax),%rdi 0.00 : 418216: e8 e5 b7 fe ff callq 403a00 0.00 : 41821b: e9 20 fd ff ff jmpq 417f40 : } : } : : /* end-of-row border */ : if (opt_border == 2) : fputs(dformat->rightvrule, fout); 0.00 : 418220: 48 8b 8d d0 fe ff ff mov -0x130(%rbp),%rcx 0.00 : 418227: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 41822b: 48 8b b9 80 00 00 00 mov 0x80(%rcx),%rdi 0.00 : 418232: e8 c9 b7 fe ff callq 403a00 0.00 : 418237: e9 27 fd ff ff jmpq 417f63 : { : more_lines = false; : : /* left border */ : if (opt_border == 2) : fputs(dformat->leftvrule, fout); 0.00 : 41823c: 48 8b 9d d0 fe ff ff mov -0x130(%rbp),%rbx 0.00 : 418243: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 418247: 48 8b 7b 70 mov 0x70(%rbx),%rdi 0.00 : 41824b: e8 b0 b7 fe ff callq 403a00 0.00 : 418250: e9 76 fa ff ff jmpq 417ccb : } while (more_lines); : } : : if (cont->opt->stop_table) : { : printTableFooter *footers = footers_with_default(cont); 0.00 : 418255: 48 89 d7 mov %rdx,%rdi 0.00 : 418258: e8 a3 ca ff ff callq 414d00 : : if (opt_border == 2 && !cancel_pressed) 0.00 : 41825d: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) : } while (more_lines); : } : : if (cont->opt->stop_table) : { : printTableFooter *footers = footers_with_default(cont); 0.00 : 418262: 48 89 c3 mov %rax,%rbx : : if (opt_border == 2 && !cancel_pressed) 0.00 : 418265: 0f 84 c0 02 00 00 je 41852b : _print_horizontal_line(col_count, width_wrap, opt_border, : PRINT_RULE_BOTTOM, format, fout); : : /* print footers */ : if (footers && !opt_tuples_only && !cancel_pressed) 0.00 : 41826b: 48 85 db test %rbx,%rbx 0.00 : 41826e: 74 14 je 418284 0.00 : 418270: 80 bd cb fe ff ff 00 cmpb $0x0,-0x135(%rbp) 0.00 : 418277: 75 0b jne 418284 0.00 : 418279: 0f b6 05 40 2c 25 00 movzbl 0x252c40(%rip),%eax # 66aec0 0.00 : 418280: 84 c0 test %al,%al 0.00 : 418282: 74 13 je 418297 : : for (f = footers; f; f = f->next) : fprintf(fout, "%s\n", f->data); : } : : fputc('\n', fout); 0.00 : 418284: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 418288: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 41828d: e8 2e b8 fe ff callq 403ac0 0.00 : 418292: e9 d0 f1 ff ff jmpq 417467 : if (footers && !opt_tuples_only && !cancel_pressed) : { : printTableFooter *f; : : for (f = footers; f; f = f->next) : fprintf(fout, "%s\n", f->data); 0.00 : 418297: 48 8b 13 mov (%rbx),%rdx 0.00 : 41829a: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 41829e: 31 c0 xor %eax,%eax 0.00 : 4182a0: be d4 59 43 00 mov $0x4359d4,%esi 0.00 : 4182a5: e8 36 b9 fe ff callq 403be0 : /* print footers */ : if (footers && !opt_tuples_only && !cancel_pressed) : { : printTableFooter *f; : : for (f = footers; f; f = f->next) 0.00 : 4182aa: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 4182ae: 48 85 db test %rbx,%rbx 0.00 : 4182b1: 75 e4 jne 418297 0.00 : 4182b3: eb cf jmp 418284 0.00 : 4182b5: 0f 1f 00 nopl (%rax) : : /* : * If in expanded auto mode, we have now calculated the expected width, so : * we can now escape to vertical mode if necessary. : */ : if (cont->opt->expanded == 2 && output_columns > 0 && 0.00 : 4182b8: 45 84 c9 test %r9b,%r9b 0.00 : 4182bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4182c0: 0f 84 62 f5 ff ff je 417828 0.00 : 4182c6: 44 39 f7 cmp %r14d,%edi 0.00 : 4182c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4182d0: 0f 83 fa 01 00 00 jae 4184d0 : (output_columns < total_header_width || output_columns < width_total)) : { : print_aligned_vertical(cont, fout); 0.00 : 4182d6: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4182da: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4182e1: e8 5a df ff ff callq 416240 : goto cleanup; 0.00 : 4182e6: e9 7c f1 ff ff jmpq 417467 0.00 : 4182eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * ratio. Slighly bias against wider columns. (Increases chance a : * narrow column will fit in its cell.) If available columns is : * positive... and greater than the width of the unshrinkable column : * headers : */ : if (output_columns > 0 && output_columns >= total_header_width) 0.00 : 4182f0: 44 39 f7 cmp %r14d,%edi 0.00 : 4182f3: 0f 82 24 f5 ff ff jb 41781d 0.00 : 4182f9: 45 84 c9 test %r9b,%r9b 0.00 : 4182fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 418300: 0f 84 17 f5 ff ff je 41781d : { : /* While there is still excess width... */ : while (width_total > output_columns) 0.00 : 418306: 44 39 ef cmp %r13d,%edi 0.00 : 418309: 0f 83 0e f5 ff ff jae 41781d : * Find column that has the highest ratio of its maximum width : * compared to its average width. This tells us which column : * will produce the fewest wrapped values if shortened. : * width_wrap starts as equal to max_width. : */ : for (i = 0; i < col_count; i++) 0.00 : 41830f: 80 bd ca fe ff ff 00 cmpb $0x0,-0x136(%rbp) 0.00 : 418316: 0f 84 01 f5 ff ff je 41781d 0.00 : 41831c: 66 0f 57 db xorpd %xmm3,%xmm3 : if (width_average[i] && width_wrap[i] > width_header[i]) : { : /* Penalize wide columns by 1% of their width */ : double ratio; : : ratio = (double) width_wrap[i] / width_average[i] + 0.00 : 418320: f2 0f 10 25 18 fc 02 movsd 0x2fc18(%rip),%xmm4 # 447f40 0.00 : 418327: 00 : * headers : */ : if (output_columns > 0 && output_columns >= total_header_width) : { : /* While there is still excess width... */ : while (width_total > output_columns) 0.00 : 418328: 66 0f 28 d3 movapd %xmm3,%xmm2 0.00 : 41832c: 31 f6 xor %esi,%esi 0.00 : 41832e: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 418334: 31 d2 xor %edx,%edx : * will produce the fewest wrapped values if shortened. : * width_wrap starts as equal to max_width. : */ : for (i = 0; i < col_count; i++) : { : if (width_average[i] && width_wrap[i] > width_header[i]) 0.00 : 418336: 48 8b 9d f8 fe ff ff mov -0x108(%rbp),%rbx 0.00 : 41833d: 8b 0c 13 mov (%rbx,%rdx,1),%ecx 0.00 : 418340: 85 c9 test %ecx,%ecx 0.00 : 418342: 74 4c je 418390 0.00 : 418344: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 41834b: 8b 04 13 mov (%rbx,%rdx,1),%eax 0.00 : 41834e: 48 8b 9d e0 fe ff ff mov -0x120(%rbp),%rbx 0.00 : 418355: 3b 04 13 cmp (%rbx,%rdx,1),%eax 0.00 : 418358: 76 36 jbe 418390 : { : /* Penalize wide columns by 1% of their width */ : double ratio; : : ratio = (double) width_wrap[i] / width_average[i] + 0.00 : 41835a: 89 c0 mov %eax,%eax 0.00 : 41835c: f2 48 0f 2a c8 cvtsi2sd %rax,%xmm1 0.00 : 418361: 89 c8 mov %ecx,%eax 0.00 : 418363: 48 8b 8d e8 fe ff ff mov -0x118(%rbp),%rcx 0.00 : 41836a: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 41836f: 8b 04 11 mov (%rcx,%rdx,1),%eax 0.00 : 418372: f2 0f 5e c8 divsd %xmm0,%xmm1 0.00 : 418376: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 41837b: f2 0f 59 c4 mulsd %xmm4,%xmm0 0.00 : 41837f: f2 0f 58 c8 addsd %xmm0,%xmm1 : max_width[i] * 0.01; : if (ratio > max_ratio) 0.00 : 418383: 66 0f 2e ca ucomisd %xmm2,%xmm1 0.00 : 418387: 76 07 jbe 418390 0.00 : 418389: 66 0f 28 d1 movapd %xmm1,%xmm2 0.00 : 41838d: 41 89 f0 mov %esi,%r8d : * Find column that has the highest ratio of its maximum width : * compared to its average width. This tells us which column : * will produce the fewest wrapped values if shortened. : * width_wrap starts as equal to max_width. : */ : for (i = 0; i < col_count; i++) 0.00 : 418390: 83 c6 01 add $0x1,%esi 0.00 : 418393: 48 83 c2 04 add $0x4,%rdx 0.00 : 418397: 3b b5 dc fe ff ff cmp -0x124(%rbp),%esi 0.00 : 41839d: 72 97 jb 418336 : } : } : } : : /* Exit loop if we can't squeeze any more. */ : if (worst_col == -1) 0.00 : 41839f: 41 83 f8 ff cmp $0xffffffff,%r8d 0.00 : 4183a3: 0f 84 7b 02 00 00 je 418624 : break; : : /* Decrease width of target column by one. */ : width_wrap[worst_col]--; 0.00 : 4183a9: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 4183b0: 49 63 c0 movslq %r8d,%rax : width_total--; 0.00 : 4183b3: 41 83 ed 01 sub $0x1,%r13d : /* Exit loop if we can't squeeze any more. */ : if (worst_col == -1) : break; : : /* Decrease width of target column by one. */ : width_wrap[worst_col]--; 0.00 : 4183b7: 83 2c 82 01 subl $0x1,(%rdx,%rax,4) : * headers : */ : if (output_columns > 0 && output_columns >= total_header_width) : { : /* While there is still excess width... */ : while (width_total > output_columns) 0.00 : 4183bb: 44 39 ef cmp %r13d,%edi 0.00 : 4183be: 0f 82 64 ff ff ff jb 418328 0.00 : 4183c4: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4183cb: 48 8b 01 mov (%rcx),%rax 0.00 : 4183ce: e9 4a f4 ff ff jmpq 41781d 0.00 : 4183d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (opt_border != 0 || format->wrap_right_border) : fputs(!header_done[i] ? format->header_nl_right : " ", : fout); : : if (opt_border != 0 && i < col_count - 1) : fputs(dformat->midvrule, fout); 0.00 : 4183d8: 48 8b 8d d0 fe ff ff mov -0x130(%rbp),%rcx 0.00 : 4183df: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4183e3: 48 8b 79 78 mov 0x78(%rcx),%rdi 0.00 : 4183e7: e8 14 b6 fe ff callq 403a00 0.00 : 4183ec: e9 2f f7 ff ff jmpq 417b20 : } : curr_nl_line++; : : if (opt_border == 2) 0.00 : 4183f1: 66 83 7d 90 02 cmpw $0x2,-0x70(%rbp) 0.00 : 4183f6: 74 52 je 41844a : fputs(dformat->rightvrule, fout); : fputc('\n', fout); 0.00 : 4183f8: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4183fc: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 418401: e8 ba b6 fe ff callq 403ac0 : col_lineptrs[i], max_nl_lines[i]); : : more_col_wrapping = col_count; : curr_nl_line = 0; : memset(header_done, false, col_count * sizeof(bool)); : while (more_col_wrapping) 0.00 : 418406: 8b 85 48 ff ff ff mov -0xb8(%rbp),%eax 0.00 : 41840c: 85 c0 test %eax,%eax 0.00 : 41840e: 0f 84 ab f7 ff ff je 417bbf : fout); : : if (opt_border != 0 && i < col_count - 1) : fputs(dformat->midvrule, fout); : } : curr_nl_line++; 0.00 : 418414: 83 85 4c ff ff ff 01 addl $0x1,-0xb4(%rbp) 0.00 : 41841b: e9 3d f6 ff ff jmpq 417a5d : fprintf(fout, "%-*s%s%-*s", : nbspace / 2, "", this_line->ptr, (nbspace + 1) / 2, ""); : : if (!(this_line + 1)->ptr) : { : more_col_wrapping--; 0.00 : 418420: 83 ad 48 ff ff ff 01 subl $0x1,-0xb8(%rbp) : header_done[i] = 1; 0.00 : 418427: 41 c6 45 00 01 movb $0x1,0x0(%r13) 0.00 : 41842c: e9 a1 f6 ff ff jmpq 417ad2 : curr_nl_line = 0; : memset(header_done, false, col_count * sizeof(bool)); : while (more_col_wrapping) : { : if (opt_border == 2) : fputs(dformat->leftvrule, fout); 0.00 : 418431: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 418438: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 41843c: 48 8b 78 70 mov 0x70(%rax),%rdi 0.00 : 418440: e8 bb b5 fe ff callq 403a00 0.00 : 418445: e9 1e f6 ff ff jmpq 417a68 : fputs(dformat->midvrule, fout); : } : curr_nl_line++; : : if (opt_border == 2) : fputs(dformat->rightvrule, fout); 0.00 : 41844a: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 418451: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 418455: 48 8b b8 80 00 00 00 mov 0x80(%rax),%rdi 0.00 : 41845c: e8 9f b5 fe ff callq 403a00 0.00 : 418461: eb 95 jmp 4183f8 : /* : * Choose target output width: \pset columns, or $COLUMNS, or ioctl : */ : if (cont->opt->columns > 0) : output_columns = cont->opt->columns; : else if ((fout == stdout && isatty(fileno(stdout))) || is_pager) 0.00 : 418463: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 418467: 48 3b 3d e2 25 25 00 cmp 0x2525e2(%rip),%rdi # 66aa50 0.00 : 41846e: 0f 84 6e 01 00 00 je 4185e2 0.00 : 418474: 31 ff xor %edi,%edi 0.00 : 418476: 45 31 c9 xor %r9d,%r9d 0.00 : 418479: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 41847d: 0f 84 91 f3 ff ff je 417814 : { : if (cont->opt->env_columns > 0) 0.00 : 418483: 8b 78 54 mov 0x54(%rax),%edi 0.00 : 418486: 85 ff test %edi,%edi 0.00 : 418488: 0f 8f 80 f3 ff ff jg 41780e : #ifdef TIOCGWINSZ : else : { : struct winsize screen_size; : : if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) != -1) 0.00 : 41848e: 48 8b 3d bb 25 25 00 mov 0x2525bb(%rip),%rdi # 66aa50 0.00 : 418495: e8 d6 b7 fe ff callq 403c70 0.00 : 41849a: 48 8d 55 b0 lea -0x50(%rbp),%rdx 0.00 : 41849e: 89 c7 mov %eax,%edi 0.00 : 4184a0: be 13 54 00 00 mov $0x5413,%esi 0.00 : 4184a5: 31 c0 xor %eax,%eax 0.00 : 4184a7: e8 94 b5 fe ff callq 403a40 0.00 : 4184ac: 83 c0 01 add $0x1,%eax 0.00 : 4184af: 0f 84 4c 01 00 00 je 418601 : output_columns = screen_size.ws_col; 0.00 : 4184b5: 0f b7 7d b2 movzwl -0x4e(%rbp),%edi 0.00 : 4184b9: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4184c0: 48 8b 01 mov (%rcx),%rax 0.00 : 4184c3: 85 ff test %edi,%edi 0.00 : 4184c5: 41 0f 9f c1 setg %r9b 0.00 : 4184c9: e9 46 f3 ff ff jmpq 417814 0.00 : 4184ce: 66 90 xchg %ax,%ax : : /* : * If in expanded auto mode, we have now calculated the expected width, so : * we can now escape to vertical mode if necessary. : */ : if (cont->opt->expanded == 2 && output_columns > 0 && 0.00 : 4184d0: 41 39 fd cmp %edi,%r13d 0.00 : 4184d3: 0f 86 4f f3 ff ff jbe 417828 0.00 : 4184d9: e9 f8 fd ff ff jmpq 4182d6 : print_aligned_vertical(cont, fout); : goto cleanup; : } : : /* If we wrapped beyond the display width, use the pager */ : if (!is_pager && fout == stdout && output_columns > 0 && 0.00 : 4184de: 45 84 c9 test %r9b,%r9b 0.00 : 4184e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4184e8: 0f 84 55 f3 ff ff je 417843 0.00 : 4184ee: 44 39 f7 cmp %r14d,%edi 0.00 : 4184f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4184f8: 73 26 jae 418520 : (output_columns < total_header_width || output_columns < width_total)) : { : fout = PageOutput(INT_MAX, cont->opt->pager); /* force pager */ 0.00 : 4184fa: 0f b7 70 08 movzwl 0x8(%rax),%esi 0.00 : 4184fe: bf ff ff ff 7f mov $0x7fffffff,%edi 0.00 : 418503: e8 b8 db ff ff callq 4160c0 0.00 : 418508: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 41850f: 48 89 45 a8 mov %rax,-0x58(%rbp) : is_pager = true; 0.00 : 418513: c6 45 cf 01 movb $0x1,-0x31(%rbp) 0.00 : 418517: 48 8b 02 mov (%rdx),%rax 0.00 : 41851a: e9 17 f4 ff ff jmpq 417936 0.00 : 41851f: 90 nop : print_aligned_vertical(cont, fout); : goto cleanup; : } : : /* If we wrapped beyond the display width, use the pager */ : if (!is_pager && fout == stdout && output_columns > 0 && 0.00 : 418520: 41 39 fd cmp %edi,%r13d 0.00 : 418523: 0f 86 1a f3 ff ff jbe 417843 0.00 : 418529: eb cf jmp 4184fa : : if (cont->opt->stop_table) : { : printTableFooter *footers = footers_with_default(cont); : : if (opt_border == 2 && !cancel_pressed) 0.00 : 41852b: 0f b6 05 8e 29 25 00 movzbl 0x25298e(%rip),%eax # 66aec0 0.00 : 418532: 84 c0 test %al,%al 0.00 : 418534: 0f 85 31 fd ff ff jne 41826b : _print_horizontal_line(col_count, width_wrap, opt_border, 0.00 : 41853a: 4c 8b 4d a8 mov -0x58(%rbp),%r9 0.00 : 41853e: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 418545: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 41854a: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 418551: 8b bd dc fe ff ff mov -0x124(%rbp),%edi 0.00 : 418557: ba 02 00 00 00 mov $0x2,%edx 0.00 : 41855c: e8 ef c5 ff ff callq 414b50 <_print_horizontal_line> 0.00 : 418561: e9 05 fd ff ff jmpq 41826b : fprintf(fout, "%-*s%s\n", (width_total - width) / 2, "", : cont->title); : } : : /* print headers */ : if (!opt_tuples_only) 0.00 : 418566: 84 c0 test %al,%al 0.00 : 418568: 0f 85 43 f4 ff ff jne 4179b1 0.00 : 41856e: 66 90 xchg %ax,%ax 0.00 : 418570: e9 70 f6 ff ff jmpq 417be5 : { : int more_col_wrapping; : int curr_nl_line; : : if (opt_border == 2) : _print_horizontal_line(col_count, width_wrap, opt_border, 0.00 : 418575: 4c 8b 4d a8 mov -0x58(%rbp),%r9 0.00 : 418579: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 418580: 31 c9 xor %ecx,%ecx 0.00 : 418582: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 418589: 8b bd dc fe ff ff mov -0x124(%rbp),%edi 0.00 : 41858f: ba 02 00 00 00 mov $0x2,%edx 0.00 : 418594: e8 b7 c5 ff ff callq 414b50 <_print_horizontal_line> 0.00 : 418599: e9 1e f4 ff ff jmpq 4179bc : if (width >= width_total) : /* Aligned */ : fprintf(fout, "%s\n", cont->title); : else : /* Centered */ : fprintf(fout, "%-*s%s\n", (width_total - width) / 2, "", 0.00 : 41859e: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 4185a5: 41 29 c5 sub %eax,%r13d 0.00 : 4185a8: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4185ac: 41 d1 ed shr %r13d 0.00 : 4185af: b9 17 69 43 00 mov $0x436917,%ecx 0.00 : 4185b4: be 96 76 44 00 mov $0x447696,%esi 0.00 : 4185b9: 44 89 ea mov %r13d,%edx 0.00 : 4185bc: 31 c0 xor %eax,%eax 0.00 : 4185be: 4c 8b 43 08 mov 0x8(%rbx),%r8 0.00 : 4185c2: e8 19 b6 fe ff callq 403be0 0.00 : 4185c7: e9 e5 f3 ff ff jmpq 4179b1 : : width_average[i % col_count] += width; : } : : /* If we have rows, compute average */ : if (col_count != 0 && cell_count != 0) 0.00 : 4185cc: 44 8b bd dc fe ff ff mov -0x124(%rbp),%r15d 0.00 : 4185d3: 45 85 ff test %r15d,%r15d 0.00 : 4185d6: 0f 95 85 ca fe ff ff setne -0x136(%rbp) 0.00 : 4185dd: e9 2c f1 ff ff jmpq 41770e : /* : * Choose target output width: \pset columns, or $COLUMNS, or ioctl : */ : if (cont->opt->columns > 0) : output_columns = cont->opt->columns; : else if ((fout == stdout && isatty(fileno(stdout))) || is_pager) 0.00 : 4185e2: e8 89 b6 fe ff callq 403c70 0.00 : 4185e7: 89 c7 mov %eax,%edi 0.00 : 4185e9: e8 52 b1 fe ff callq 403740 0.00 : 4185ee: 85 c0 test %eax,%eax 0.00 : 4185f0: 75 23 jne 418615 0.00 : 4185f2: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4185f9: 48 8b 01 mov (%rcx),%rax 0.00 : 4185fc: e9 73 fe ff ff jmpq 418474 : #ifdef TIOCGWINSZ : else : { : struct winsize screen_size; : : if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) != -1) 0.00 : 418601: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 418608: 31 ff xor %edi,%edi 0.00 : 41860a: 45 31 c9 xor %r9d,%r9d 0.00 : 41860d: 48 8b 02 mov (%rdx),%rax 0.00 : 418610: e9 ff f1 ff ff jmpq 417814 0.00 : 418615: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 41861c: 48 8b 03 mov (%rbx),%rax 0.00 : 41861f: e9 5f fe ff ff jmpq 418483 : } : } : : /* Exit loop if we can't squeeze any more. */ : if (worst_col == -1) : break; 0.00 : 418624: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 41862b: 48 8b 03 mov (%rbx),%rax 0.00 : 41862e: e9 ea f1 ff ff jmpq 41781d Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:223 25.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:222 25.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:220 25.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:220 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042c960 : : * This MUST be kept in sync with pg_wcsformat! : */ : void : pg_wcssize(const unsigned char *pwcs, size_t len, int encoding, : int *result_width, int *result_height, int *result_format_size) : { 0.00 : 42c960: 55 push %rbp 0.00 : 42c961: 48 89 e5 mov %rsp,%rbp 0.00 : 42c964: 41 57 push %r15 0.00 : 42c966: 41 56 push %r14 0.00 : 42c968: 41 55 push %r13 0.00 : 42c96a: 41 54 push %r12 0.00 : 42c96c: 49 89 fc mov %rdi,%r12 0.00 : 42c96f: 53 push %rbx 0.00 : 42c970: 48 83 ec 38 sub $0x38,%rsp 0.00 : 42c974: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 42c978: 89 55 c4 mov %edx,-0x3c(%rbp) 0.00 : 42c97b: 48 89 4d b8 mov %rcx,-0x48(%rbp) 0.00 : 42c97f: 4c 89 45 b0 mov %r8,-0x50(%rbp) 0.00 : 42c983: 4c 89 4d a8 mov %r9,-0x58(%rbp) : linewidth = 0; : int width = 0; : int height = 1; : int format_size = 0; : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42c987: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 42c98a: 75 54 jne 42c9e0 0.00 : 42c98c: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%rbp) 0.00 : 42c993: 31 c0 xor %eax,%eax 0.00 : 42c995: ba 01 00 00 00 mov $0x1,%edx 0.00 : 42c99a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (linewidth > width) : width = linewidth; : format_size += 1; /* For NUL char */ : : /* Set results */ : if (result_width) 0.00 : 42c9a0: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) 0.00 : 42c9a5: 74 06 je 42c9ad : *result_width = width; 0.00 : 42c9a7: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 42c9ab: 89 01 mov %eax,(%rcx) : if (result_height) 0.00 : 42c9ad: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 0.00 : 42c9b2: 74 09 je 42c9bd : *result_height = height; 0.00 : 42c9b4: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.00 : 42c9b7: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 42c9bb: 89 08 mov %ecx,(%rax) : if (result_format_size) 0.00 : 42c9bd: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) 0.00 : 42c9c2: 74 06 je 42c9ca : *result_format_size = format_size; 0.00 : 42c9c4: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 42c9c8: 89 10 mov %edx,(%rax) : } 0.00 : 42c9ca: 48 83 c4 38 add $0x38,%rsp 0.00 : 42c9ce: 5b pop %rbx 0.00 : 42c9cf: 41 5c pop %r12 0.00 : 42c9d1: 41 5d pop %r13 0.00 : 42c9d3: 41 5e pop %r14 0.00 : 42c9d5: 41 5f pop %r15 0.00 : 42c9d7: c9 leaveq 0.00 : 42c9d8: c3 retq 0.00 : 42c9d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : linewidth = 0; : int width = 0; : int height = 1; : int format_size = 0; : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42c9e0: 48 85 f6 test %rsi,%rsi 0.00 : 42c9e3: 74 a7 je 42c98c 0.00 : 42c9e5: 45 31 ed xor %r13d,%r13d 0.00 : 42c9e8: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%rbp) 0.00 : 42c9ef: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%rbp) 0.00 : 42c9f6: 45 31 ff xor %r15d,%r15d : { : chlen = PQmblen((const char *) pwcs, encoding); 0.00 : 42c9f9: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 42c9fc: 4c 89 e7 mov %r12,%rdi 0.00 : 42c9ff: e8 8c 6d fd ff callq 403790 : if (len < (size_t) chlen) /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:223 25.00 : 42ca04: 4c 63 f0 movslq %eax,%r14 0.00 : 42ca07: 4c 3b 75 c8 cmp -0x38(%rbp),%r14 : int height = 1; : int format_size = 0; : : for (; *pwcs && len > 0; pwcs += chlen) : { : chlen = PQmblen((const char *) pwcs, encoding); /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:222 25.00 : 42ca0b: 89 c3 mov %eax,%ebx : if (len < (size_t) chlen) 0.00 : 42ca0d: 77 2c ja 42ca3b : break; : w = PQdsplen((const char *) pwcs, encoding); 0.00 : 42ca0f: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 42ca12: 4c 89 e7 mov %r12,%rdi 0.00 : 42ca15: e8 86 70 fd ff callq 403aa0 : : if (chlen == 1) /* single-byte char */ 0.00 : 42ca1a: 83 fb 01 cmp $0x1,%ebx 0.00 : 42ca1d: 74 51 je 42ca70 : { : linewidth += w; : format_size += 1; : } : } : else if (w < 0) /* Non-ascii control char */ 0.00 : 42ca1f: 85 c0 test %eax,%eax 0.00 : 42ca21: 0f 88 99 00 00 00 js 42cac0 : linewidth += 6; /* \u0000 */ : format_size += 6; : } : else /* All other chars */ : { : linewidth += w; 0.00 : 42ca27: 41 01 c5 add %eax,%r13d : format_size += chlen; 0.00 : 42ca2a: 41 01 df add %ebx,%r15d : linewidth = 0; : int width = 0; : int height = 1; : int format_size = 0; : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42ca2d: 4d 01 f4 add %r14,%r12 : else /* All other chars */ : { : linewidth += w; : format_size += chlen; : } : len -= chlen; 0.00 : 42ca30: 4c 29 75 c8 sub %r14,-0x38(%rbp) : linewidth = 0; : int width = 0; : int height = 1; : int format_size = 0; : : for (; *pwcs && len > 0; pwcs += chlen) /home/Computational/mark/src/postgres-andres/src/bin/psql/mbprint.c:220 25.00 : 42ca34: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 42ca39: 75 25 jne 42ca60 0.00 : 42ca3b: 8b 45 d0 mov -0x30(%rbp),%eax : linewidth += w; : format_size += chlen; : } : len -= chlen; : } : if (linewidth > width) 0.00 : 42ca3e: 41 8d 57 01 lea 0x1(%r15),%edx 0.00 : 42ca42: 41 39 c5 cmp %eax,%r13d 0.00 : 42ca45: 0f 8e 55 ff ff ff jle 42c9a0 0.00 : 42ca4b: 41 8d 57 01 lea 0x1(%r15),%edx 0.00 : 42ca4f: 44 89 e8 mov %r13d,%eax 0.00 : 42ca52: e9 49 ff ff ff jmpq 42c9a0 0.00 : 42ca57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42ca5e: 00 00 : linewidth = 0; : int width = 0; : int height = 1; : int format_size = 0; : : for (; *pwcs && len > 0; pwcs += chlen) 0.00 : 42ca60: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 25.00 : 42ca65: 75 92 jne 42c9f9 0.00 : 42ca67: eb d2 jmp 42ca3b 0.00 : 42ca69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : w = PQdsplen((const char *) pwcs, encoding); : : if (chlen == 1) /* single-byte char */ : { : if (*pwcs == '\n') /* Newline */ 0.00 : 42ca70: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 42ca75: 80 fa 0a cmp $0xa,%dl 0.00 : 42ca78: 74 56 je 42cad0 : width = linewidth; : linewidth = 0; : height += 1; : format_size += 1; /* For NUL char */ : } : else if (*pwcs == '\r') /* Linefeed */ 0.00 : 42ca7a: 80 fa 0d cmp $0xd,%dl 0.00 : 42ca7d: 0f 1f 00 nopl (%rax) 0.00 : 42ca80: 74 6e je 42caf0 : { : linewidth += 2; : format_size += 2; : } : else if (*pwcs == '\t') /* Tab */ 0.00 : 42ca82: 80 fa 09 cmp $0x9,%dl 0.00 : 42ca85: 74 11 je 42ca98 : { : linewidth++; : format_size++; : } while (linewidth % 8 != 0); : } : else if (w < 0) /* Other control char */ 0.00 : 42ca87: 85 c0 test %eax,%eax 0.00 : 42ca89: 78 75 js 42cb00 : linewidth += 4; : format_size += 4; : } : else /* Output it as-is */ : { : linewidth += w; 0.00 : 42ca8b: 41 01 c5 add %eax,%r13d : format_size += 1; 0.00 : 42ca8e: 41 83 c7 01 add $0x1,%r15d 0.00 : 42ca92: eb 99 jmp 42ca2d 0.00 : 42ca94: 0f 1f 40 00 nopl 0x0(%rax) : } : else if (*pwcs == '\t') /* Tab */ : { : do : { : linewidth++; 0.00 : 42ca98: 41 83 c5 01 add $0x1,%r13d : format_size++; 0.00 : 42ca9c: 41 83 c7 01 add $0x1,%r15d : } while (linewidth % 8 != 0); 0.00 : 42caa0: 41 f6 c5 07 test $0x7,%r13b 0.00 : 42caa4: 74 87 je 42ca2d : } : else if (*pwcs == '\t') /* Tab */ : { : do : { : linewidth++; 0.00 : 42caa6: 41 83 c5 01 add $0x1,%r13d : format_size++; 0.00 : 42caaa: 41 83 c7 01 add $0x1,%r15d : } while (linewidth % 8 != 0); 0.00 : 42caae: 41 f6 c5 07 test $0x7,%r13b 0.00 : 42cab2: 75 e4 jne 42ca98 0.00 : 42cab4: e9 74 ff ff ff jmpq 42ca2d 0.00 : 42cab9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : format_size += 1; : } : } : else if (w < 0) /* Non-ascii control char */ : { : linewidth += 6; /* \u0000 */ 0.00 : 42cac0: 41 83 c5 06 add $0x6,%r13d : format_size += 6; 0.00 : 42cac4: 41 83 c7 06 add $0x6,%r15d 0.00 : 42cac8: e9 60 ff ff ff jmpq 42ca2d 0.00 : 42cacd: 0f 1f 00 nopl (%rax) : break; : w = PQdsplen((const char *) pwcs, encoding); : : if (chlen == 1) /* single-byte char */ : { : if (*pwcs == '\n') /* Newline */ 0.00 : 42cad0: 44 39 6d d0 cmp %r13d,-0x30(%rbp) 0.00 : 42cad4: 44 0f 4d 6d d0 cmovge -0x30(%rbp),%r13d : { : if (linewidth > width) : width = linewidth; : linewidth = 0; : height += 1; 0.00 : 42cad9: 83 45 d4 01 addl $0x1,-0x2c(%rbp) : format_size += 1; /* For NUL char */ 0.00 : 42cadd: 41 83 c7 01 add $0x1,%r15d : break; : w = PQdsplen((const char *) pwcs, encoding); : : if (chlen == 1) /* single-byte char */ : { : if (*pwcs == '\n') /* Newline */ 0.00 : 42cae1: 44 89 6d d0 mov %r13d,-0x30(%rbp) : { : if (linewidth > width) : width = linewidth; : linewidth = 0; : height += 1; : format_size += 1; /* For NUL char */ 0.00 : 42cae5: 45 31 ed xor %r13d,%r13d 0.00 : 42cae8: e9 40 ff ff ff jmpq 42ca2d 0.00 : 42caed: 0f 1f 00 nopl (%rax) : } : else if (*pwcs == '\r') /* Linefeed */ : { : linewidth += 2; 0.00 : 42caf0: 41 83 c5 02 add $0x2,%r13d : format_size += 2; 0.00 : 42caf4: 41 83 c7 02 add $0x2,%r15d 0.00 : 42caf8: e9 30 ff ff ff jmpq 42ca2d 0.00 : 42cafd: 0f 1f 00 nopl (%rax) : format_size++; : } while (linewidth % 8 != 0); : } : else if (w < 0) /* Other control char */ : { : linewidth += 4; 0.00 : 42cb00: 41 83 c5 04 add $0x4,%r13d : format_size += 4; 0.00 : 42cb04: 41 83 c7 04 add $0x4,%r15d 0.00 : 42cb08: e9 20 ff ff ff jmpq 42ca2d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469730 <__isinff@plt>: ??:0 100.00 : 469730: ff 25 ca da 6f 00 jmpq *0x6fdaca(%rip) # b67200 <_GLOBAL_OFFSET_TABLE_+0x200> 0.00 : 469736: 68 3d 00 00 00 pushq $0x3d 0.00 : 46973b: e9 10 fc ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_tuple.c:521 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_tuple.c:428 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046d2e0 : : * Note we don't need the "on disk tupdesc" here; we rely on our own routine to : * deconstruct the tuple from the on-disk format. : */ : DeformedBrTuple * : brin_deform_tuple(BrinDesc *brdesc, BrTuple *tuple) : { 0.00 : 46d2e0: 55 push %rbp 0.00 : 46d2e1: 48 89 e5 mov %rsp,%rbp 0.00 : 46d2e4: 41 57 push %r15 0.00 : 46d2e6: 49 89 ff mov %rdi,%r15 0.00 : 46d2e9: 41 56 push %r14 0.00 : 46d2eb: 41 55 push %r13 0.00 : 46d2ed: 41 54 push %r12 0.00 : 46d2ef: 53 push %rbx 0.00 : 46d2f0: 48 89 f3 mov %rsi,%rbx 0.00 : 46d2f3: 48 83 ec 58 sub $0x58,%rsp : char *tp; : bits8 *nullbits; : int keyno; : int valueno; : : dtup = brin_new_dtuple(brdesc); 0.00 : 46d2f7: e8 64 ff ff ff callq 46d260 0.00 : 46d2fc: 48 89 45 a8 mov %rax,-0x58(%rbp) : : if (BrinTupleIsPlaceholder(tuple)) 0.00 : 46d300: f6 43 04 40 testb $0x40,0x4(%rbx) 0.00 : 46d304: 74 03 je 46d309 : dtup->dt_placeholder = true; 0.00 : 46d306: c6 00 01 movb $0x1,(%rax) : : values = palloc(sizeof(Datum) * brdesc->bd_totalstored); 0.00 : 46d309: 49 63 7f 20 movslq 0x20(%r15),%rdi 0.00 : 46d30d: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 46d311: e8 3a ba 32 00 callq 798d50 0.00 : 46d316: 48 89 45 b0 mov %rax,-0x50(%rbp) : allnulls = palloc(sizeof(bool) * brdesc->bd_tupdesc->natts); 0.00 : 46d31a: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 46d31e: 48 63 38 movslq (%rax),%rdi 0.00 : 46d321: e8 2a ba 32 00 callq 798d50 0.00 : 46d326: 48 89 45 b8 mov %rax,-0x48(%rbp) : hasnulls = palloc(sizeof(bool) * brdesc->bd_tupdesc->natts); 0.00 : 46d32a: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 46d32e: 48 63 38 movslq (%rax),%rdi 0.00 : 46d331: e8 1a ba 32 00 callq 798d50 0.00 : 46d336: 48 89 45 c0 mov %rax,-0x40(%rbp) : : tp = (char *) tuple + BrinTupleDataOffset(tuple); 0.00 : 46d33a: 44 0f b6 4b 04 movzbl 0x4(%rbx),%r9d : : if (BrinTupleHasNulls(tuple)) 0.00 : 46d33f: 45 31 c0 xor %r8d,%r8d : : values = palloc(sizeof(Datum) * brdesc->bd_totalstored); : allnulls = palloc(sizeof(bool) * brdesc->bd_tupdesc->natts); : hasnulls = palloc(sizeof(bool) * brdesc->bd_tupdesc->natts); : : tp = (char *) tuple + BrinTupleDataOffset(tuple); 0.00 : 46d342: 4c 89 c8 mov %r9,%rax 0.00 : 46d345: 83 e0 1f and $0x1f,%eax : : if (BrinTupleHasNulls(tuple)) 0.00 : 46d348: 45 84 c9 test %r9b,%r9b : : values = palloc(sizeof(Datum) * brdesc->bd_totalstored); : allnulls = palloc(sizeof(bool) * brdesc->bd_tupdesc->natts); : hasnulls = palloc(sizeof(bool) * brdesc->bd_tupdesc->natts); : : tp = (char *) tuple + BrinTupleDataOffset(tuple); 0.00 : 46d34b: 4c 8d 34 03 lea (%rbx,%rax,1),%r14 : : if (BrinTupleHasNulls(tuple)) 0.00 : 46d34f: 48 8d 43 05 lea 0x5(%rbx),%rax 0.00 : 46d353: 4c 0f 48 c0 cmovs %rax,%r8 : * First iterate to natts to obtain both null flags for each attribute. : * Note that we reverse the sense of the att_isnull test, because we store : * 1 for a null value (rather than a 1 for a not null value as is the : * att_isnull convention used elsewhere.) See brin_form_tuple. : */ : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d357: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 46d35b: 44 8b 10 mov (%rax),%r10d 0.00 : 46d35e: 45 85 d2 test %r10d,%r10d 0.00 : 46d361: 7e 6d jle 46d3d0 0.00 : 46d363: 31 d2 xor %edx,%edx 0.00 : 46d365: 0f 1f 00 nopl (%rax) : /* : * the "all nulls" bit means that all values in the page range for : * this column are nulls. Therefore there are no values in the tuple : * data area. : */ : allnulls[attnum] = nulls && !att_isnull(attnum, nullbits); 0.00 : 46d368: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 46d36c: 48 63 f2 movslq %edx,%rsi 0.00 : 46d36f: 48 01 f7 add %rsi,%rdi 0.00 : 46d372: 45 84 c9 test %r9b,%r9b 0.00 : 46d375: 0f 89 75 01 00 00 jns 46d4f0 0.00 : 46d37b: 89 d0 mov %edx,%eax 0.00 : 46d37d: 89 d1 mov %edx,%ecx 0.00 : 46d37f: c1 f8 03 sar $0x3,%eax 0.00 : 46d382: 83 e1 07 and $0x7,%ecx 0.00 : 46d385: 48 98 cltq 0.00 : 46d387: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax 0.00 : 46d38c: d3 f8 sar %cl,%eax 0.00 : 46d38e: a8 01 test $0x1,%al 0.00 : 46d390: 0f 85 8a 03 00 00 jne 46d720 0.00 : 46d396: c6 07 00 movb $0x0,(%rdi) : * have not-null values. Therefore we know the tuple contains data : * for this column. : * : * The hasnulls bits follow the allnulls bits in the same bitmask. : */ : hasnulls[attnum] = 0.00 : 46d399: 48 03 75 c0 add -0x40(%rbp),%rsi 0.00 : 46d39d: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 46d3a1: 89 d1 mov %edx,%ecx 0.00 : 46d3a3: 03 08 add (%rax),%ecx 0.00 : 46d3a5: 89 c8 mov %ecx,%eax 0.00 : 46d3a7: 83 e1 07 and $0x7,%ecx 0.00 : 46d3aa: c1 f8 03 sar $0x3,%eax 0.00 : 46d3ad: 48 98 cltq 0.00 : 46d3af: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax 0.00 : 46d3b4: d3 f8 sar %cl,%eax 0.00 : 46d3b6: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 46d3bb: a8 01 test $0x1,%al 0.00 : 46d3bd: 0f 84 34 01 00 00 je 46d4f7 0.00 : 46d3c3: 88 0e mov %cl,(%rsi) : * First iterate to natts to obtain both null flags for each attribute. : * Note that we reverse the sense of the att_isnull test, because we store : * 1 for a null value (rather than a 1 for a not null value as is the : * att_isnull convention used elsewhere.) See brin_form_tuple. : */ : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d3c5: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 46d3c9: 83 c2 01 add $0x1,%edx 0.00 : 46d3cc: 3b 10 cmp (%rax),%edx 0.00 : 46d3ce: 7c 98 jl 46d368 : /* : * Iterate to obtain each attribute's stored values. Note that since we : * may reuse attribute entries for more than one column, we cannot cache : * offsets here. : */ : diskdsc = brtuple_disk_tupdesc(brdesc); 0.00 : 46d3d0: 4c 89 ff mov %r15,%rdi 0.00 : 46d3d3: e8 d8 fc ff ff callq 46d0b0 : stored = 0; : off = 0; : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d3d8: 49 8b 4f 10 mov 0x10(%r15),%rcx : /* : * Iterate to obtain each attribute's stored values. Note that since we : * may reuse attribute entries for more than one column, we cannot cache : * offsets here. : */ : diskdsc = brtuple_disk_tupdesc(brdesc); 0.00 : 46d3dc: 49 89 c2 mov %rax,%r10 : stored = 0; : off = 0; : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d3df: 8b 39 mov (%rcx),%edi 0.00 : 46d3e1: 85 ff test %edi,%edi 0.00 : 46d3e3: 0f 8e 59 02 00 00 jle 46d642 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_tuple.c:521 50.00 : 46d3e9: 45 31 c0 xor %r8d,%r8d 0.00 : 46d3ec: 45 31 ed xor %r13d,%r13d 0.00 : 46d3ef: 31 db xor %ebx,%ebx 0.00 : 46d3f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : int datumno; : : if (allnulls[attnum]) 0.00 : 46d3f8: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 46d3fc: 49 63 c0 movslq %r8d,%rax 0.00 : 46d3ff: 80 3c 02 00 cmpb $0x0,(%rdx,%rax,1) 0.00 : 46d403: 0f 85 d7 02 00 00 jne 46d6e0 : stored += brdesc->bd_info[attnum]->oi_nstored; : continue; : } : : for (datumno = 0; : datumno < brdesc->bd_info[attnum]->oi_nstored; 0.00 : 46d409: 48 83 c0 04 add $0x4,%rax : { : int datumno; : : if (allnulls[attnum]) : { : stored += brdesc->bd_info[attnum]->oi_nstored; 0.00 : 46d40d: 45 31 e4 xor %r12d,%r12d : continue; : } : : for (datumno = 0; : datumno < brdesc->bd_info[attnum]->oi_nstored; 0.00 : 46d410: 49 8b 54 c7 08 mov 0x8(%r15,%rax,8),%rdx 0.00 : 46d415: 49 89 c1 mov %rax,%r9 0.00 : 46d418: 66 83 3a 00 cmpw $0x0,(%rdx) 0.00 : 46d41c: 0f 85 8f 00 00 00 jne 46d4b1 0.00 : 46d422: e9 1d 01 00 00 jmpq 46d544 0.00 : 46d427: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46d42e: 00 00 : tp + off); : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); 0.00 : 46d430: 0f b6 50 5e movzbl 0x5e(%rax),%edx 0.00 : 46d434: 80 fa 69 cmp $0x69,%dl 0.00 : 46d437: 0f 84 a3 00 00 00 je 46d4e0 0.00 : 46d43d: 80 fa 63 cmp $0x63,%dl 0.00 : 46d440: 74 11 je 46d453 0.00 : 46d442: 80 fa 64 cmp $0x64,%dl 0.00 : 46d445: 0f 84 65 02 00 00 je 46d6b0 0.00 : 46d44b: 48 83 c3 01 add $0x1,%rbx 0.00 : 46d44f: 48 83 e3 fe and $0xfffffffffffffffe,%rbx : } : : values[stored++] = fetchatt(thisatt, tp + off); 0.00 : 46d453: 80 78 5c 00 cmpb $0x0,0x5c(%rax) 0.00 : 46d457: 49 8d 14 1e lea (%r14,%rbx,1),%rdx 0.00 : 46d45b: 74 23 je 46d480 0.00 : 46d45d: 66 83 f9 08 cmp $0x8,%cx 0.00 : 46d461: 0f 84 09 02 00 00 je 46d670 0.00 : 46d467: 66 83 f9 04 cmp $0x4,%cx 0.00 : 46d46b: 0f 84 4f 02 00 00 je 46d6c0 0.00 : 46d471: 66 83 f9 02 cmp $0x2,%cx 0.00 : 46d475: 0f 84 85 02 00 00 je 46d700 0.00 : 46d47b: 41 0f b6 14 1e movzbl (%r14,%rbx,1),%edx 0.00 : 46d480: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 46d484: 41 83 c5 01 add $0x1,%r13d 0.00 : 46d488: 48 89 14 f1 mov %rdx,(%rcx,%rsi,8) : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46d48c: 0f b7 40 4c movzwl 0x4c(%rax),%eax 0.00 : 46d490: 66 85 c0 test %ax,%ax 0.00 : 46d493: 7e 7b jle 46d510 0.00 : 46d495: 48 0f bf c0 movswq %ax,%rax 0.00 : 46d499: 48 01 c3 add %rax,%rbx : stored += brdesc->bd_info[attnum]->oi_nstored; : continue; : } : : for (datumno = 0; : datumno < brdesc->bd_info[attnum]->oi_nstored; 0.00 : 46d49c: 4b 8b 44 cf 08 mov 0x8(%r15,%r9,8),%rax : datumno++) 0.00 : 46d4a1: 41 83 c4 01 add $0x1,%r12d : stored += brdesc->bd_info[attnum]->oi_nstored; : continue; : } : : for (datumno = 0; : datumno < brdesc->bd_info[attnum]->oi_nstored; 0.00 : 46d4a5: 0f b7 00 movzwl (%rax),%eax 0.00 : 46d4a8: 41 39 c4 cmp %eax,%r12d 0.00 : 46d4ab: 0f 8d 8f 00 00 00 jge 46d540 : datumno++) : { : Form_pg_attribute thisatt = diskdsc->attrs[stored]; 0.00 : 46d4b1: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 46d4b5: 49 63 f5 movslq %r13d,%rsi 0.00 : 46d4b8: 48 8b 04 f0 mov (%rax,%rsi,8),%rax : : if (thisatt->attlen == -1) 0.00 : 46d4bc: 0f b7 48 4c movzwl 0x4c(%rax),%ecx 0.00 : 46d4c0: 66 83 f9 ff cmp $0xffff,%cx 0.00 : 46d4c4: 0f 85 66 ff ff ff jne 46d430 : { : off = att_align_pointer(off, thisatt->attalign, -1, 0.00 : 46d4ca: 41 80 3c 1e 00 cmpb $0x0,(%r14,%rbx,1) 0.00 : 46d4cf: 75 82 jne 46d453 : tp + off); : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); 0.00 : 46d4d1: 0f b6 50 5e movzbl 0x5e(%rax),%edx 0.00 : 46d4d5: 80 fa 69 cmp $0x69,%dl 0.00 : 46d4d8: 0f 85 5f ff ff ff jne 46d43d 0.00 : 46d4de: 66 90 xchg %ax,%ax 0.00 : 46d4e0: 48 83 c3 03 add $0x3,%rbx 0.00 : 46d4e4: 48 83 e3 fc and $0xfffffffffffffffc,%rbx 0.00 : 46d4e8: e9 66 ff ff ff jmpq 46d453 0.00 : 46d4ed: 0f 1f 00 nopl (%rax) : /* : * the "all nulls" bit means that all values in the page range for : * this column are nulls. Therefore there are no values in the tuple : * data area. : */ : allnulls[attnum] = nulls && !att_isnull(attnum, nullbits); 0.00 : 46d4f0: c6 07 00 movb $0x0,(%rdi) : * have not-null values. Therefore we know the tuple contains data : * for this column. : * : * The hasnulls bits follow the allnulls bits in the same bitmask. : */ : hasnulls[attnum] = 0.00 : 46d4f3: 48 03 75 c0 add -0x40(%rbp),%rsi 0.00 : 46d4f7: 31 c9 xor %ecx,%ecx : * First iterate to natts to obtain both null flags for each attribute. : * Note that we reverse the sense of the att_isnull test, because we store : * 1 for a null value (rather than a 1 for a not null value as is the : * att_isnull convention used elsewhere.) See brin_form_tuple. : */ : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d4f9: 83 c2 01 add $0x1,%edx : * have not-null values. Therefore we know the tuple contains data : * for this column. : * : * The hasnulls bits follow the allnulls bits in the same bitmask. : */ : hasnulls[attnum] = 0.00 : 46d4fc: 88 0e mov %cl,(%rsi) : * First iterate to natts to obtain both null flags for each attribute. : * Note that we reverse the sense of the att_isnull test, because we store : * 1 for a null value (rather than a 1 for a not null value as is the : * att_isnull convention used elsewhere.) See brin_form_tuple. : */ : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d4fe: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 46d502: 3b 10 cmp (%rax),%edx 0.00 : 46d504: 0f 8c 5e fe ff ff jl 46d368 0.00 : 46d50a: e9 c1 fe ff ff jmpq 46d3d0 0.00 : 46d50f: 90 nop : off = att_align_nominal(off, thisatt->attalign); : } : : values[stored++] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46d510: 66 83 c0 01 add $0x1,%ax 0.00 : 46d514: 0f 85 66 01 00 00 jne 46d680 0.00 : 46d51a: 41 0f b6 04 1e movzbl (%r14,%rbx,1),%eax 0.00 : 46d51f: 3c 01 cmp $0x1,%al 0.00 : 46d521: 0f 84 09 02 00 00 je 46d730 0.00 : 46d527: a8 01 test $0x1,%al 0.00 : 46d529: 0f 84 e1 01 00 00 je 46d710 0.00 : 46d52f: d0 e8 shr %al 0.00 : 46d531: 0f b6 c0 movzbl %al,%eax 0.00 : 46d534: 48 8d 1c 18 lea (%rax,%rbx,1),%rbx 0.00 : 46d538: e9 5f ff ff ff jmpq 46d49c 0.00 : 46d53d: 0f 1f 00 nopl (%rax) 0.00 : 46d540: 49 8b 4f 10 mov 0x10(%r15),%rcx : * offsets here. : */ : diskdsc = brtuple_disk_tupdesc(brdesc); : stored = 0; : off = 0; : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d544: 8b 01 mov (%rcx),%eax 0.00 : 46d546: 41 83 c0 01 add $0x1,%r8d 0.00 : 46d54a: 41 39 c0 cmp %eax,%r8d 0.00 : 46d54d: 0f 8c a5 fe ff ff jl 46d3f8 : : /* : * Iterate to assign each of the values to the corresponding item in the : * values array of each column. : */ : for (valueno = 0, keyno = 0; keyno < brdesc->bd_tupdesc->natts; keyno++) 0.00 : 46d553: 85 c0 test %eax,%eax 0.00 : 46d555: 0f 8e e7 00 00 00 jle 46d642 0.00 : 46d55b: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) 0.00 : 46d562: 45 31 ed xor %r13d,%r13d 0.00 : 46d565: 0f 1f 00 nopl (%rax) : { : int i; : : if (allnulls[keyno]) 0.00 : 46d568: 4c 63 75 cc movslq -0x34(%rbp),%r14 0.00 : 46d56c: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 46d570: 42 80 3c 33 00 cmpb $0x0,(%rbx,%r14,1) 0.00 : 46d575: 0f 85 55 01 00 00 jne 46d6d0 : /* : * We would like to skip datumCopy'ing the values datum in some cases, : * caller permitting, but this would make life harder for : * brin_free_dtuple and brin_dtuple_initialize, so refrain. : */ : for (i = 0; i < brdesc->bd_info[keyno]->oi_nstored; i++) 0.00 : 46d57b: 49 8d 56 04 lea 0x4(%r14),%rdx 0.00 : 46d57f: 49 8b 44 d7 08 mov 0x8(%r15,%rdx,8),%rax 0.00 : 46d584: 66 83 38 00 cmpw $0x0,(%rax) 0.00 : 46d588: 0f 84 84 00 00 00 je 46d612 : int i; : : if (allnulls[keyno]) : { : valueno += brdesc->bd_info[keyno]->oi_nstored; : continue; 0.00 : 46d58e: 4a 8d 04 f5 00 00 00 lea 0x0(,%r14,8),%rax 0.00 : 46d595: 00 : * We would like to skip datumCopy'ing the values datum in some cases, : * caller permitting, but this would make life harder for : * brin_free_dtuple and brin_dtuple_initialize, so refrain. : */ : for (i = 0; i < brdesc->bd_info[keyno]->oi_nstored; i++) : dtup->dt_columns[keyno].values[i] = 0.00 : 46d596: 48 8b 5d a8 mov -0x58(%rbp),%rbx : int i; : : if (allnulls[keyno]) : { : valueno += brdesc->bd_info[keyno]->oi_nstored; : continue; 0.00 : 46d59a: 45 31 e4 xor %r12d,%r12d : /* : * We would like to skip datumCopy'ing the values datum in some cases, : * caller permitting, but this would make life harder for : * brin_free_dtuple and brin_dtuple_initialize, so refrain. : */ : for (i = 0; i < brdesc->bd_info[keyno]->oi_nstored; i++) 0.00 : 46d59d: 48 89 55 98 mov %rdx,-0x68(%rbp) : int i; : : if (allnulls[keyno]) : { : valueno += brdesc->bd_info[keyno]->oi_nstored; : continue; 0.00 : 46d5a1: 48 89 45 d0 mov %rax,-0x30(%rbp) : * We would like to skip datumCopy'ing the values datum in some cases, : * caller permitting, but this would make life harder for : * brin_free_dtuple and brin_dtuple_initialize, so refrain. : */ : for (i = 0; i < brdesc->bd_info[keyno]->oi_nstored; i++) : dtup->dt_columns[keyno].values[i] = 0.00 : 46d5a5: 4c 89 f0 mov %r14,%rax 0.00 : 46d5a8: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46d5ac: 48 8d 44 03 10 lea 0x10(%rbx,%rax,1),%rax 0.00 : 46d5b1: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 46d5b5: eb 0d jmp 46d5c4 0.00 : 46d5b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46d5be: 00 00 0.00 : 46d5c0: 49 8b 4f 10 mov 0x10(%r15),%rcx 0.00 : 46d5c4: 48 8b 45 a0 mov -0x60(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_tuple.c:428 50.00 : 46d5c8: 49 63 dc movslq %r12d,%rbx 0.00 : 46d5cb: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 46d5cf: 48 c1 e3 03 shl $0x3,%rbx : /* : * We would like to skip datumCopy'ing the values datum in some cases, : * caller permitting, but this would make life harder for : * brin_free_dtuple and brin_dtuple_initialize, so refrain. : */ : for (i = 0; i < brdesc->bd_info[keyno]->oi_nstored; i++) 0.00 : 46d5d3: 41 83 c4 01 add $0x1,%r12d : dtup->dt_columns[keyno].values[i] = 0.00 : 46d5d7: 48 03 18 add (%rax),%rbx 0.00 : 46d5da: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 46d5de: 48 8b 0c 10 mov (%rax,%rdx,1),%rcx 0.00 : 46d5e2: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 46d5e6: 49 63 c5 movslq %r13d,%rax 0.00 : 46d5e9: 41 83 c5 01 add $0x1,%r13d 0.00 : 46d5ed: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 46d5f1: 0f be 71 5c movsbl 0x5c(%rcx),%esi 0.00 : 46d5f5: 0f bf 51 4c movswl 0x4c(%rcx),%edx 0.00 : 46d5f9: e8 72 29 26 00 callq 6cff70 0.00 : 46d5fe: 48 89 03 mov %rax,(%rbx) : /* : * We would like to skip datumCopy'ing the values datum in some cases, : * caller permitting, but this would make life harder for : * brin_free_dtuple and brin_dtuple_initialize, so refrain. : */ : for (i = 0; i < brdesc->bd_info[keyno]->oi_nstored; i++) 0.00 : 46d601: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 46d605: 49 8b 44 cf 08 mov 0x8(%r15,%rcx,8),%rax 0.00 : 46d60a: 0f b7 00 movzwl (%rax),%eax 0.00 : 46d60d: 44 39 e0 cmp %r12d,%eax 0.00 : 46d610: 7f ae jg 46d5c0 : dtup->dt_columns[keyno].values[i] = : datumCopy(values[valueno++], : brdesc->bd_tupdesc->attrs[keyno]->attbyval, : brdesc->bd_tupdesc->attrs[keyno]->attlen); : : dtup->dt_columns[keyno].hasnulls = hasnulls[keyno]; 0.00 : 46d612: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 46d616: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 46d61a: 4c 89 f2 mov %r14,%rdx 0.00 : 46d61d: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 46d621: 42 0f b6 04 33 movzbl (%rbx,%r14,1),%eax : dtup->dt_columns[keyno].allnulls = false; 0.00 : 46d626: c6 44 0a 0b 00 movb $0x0,0xb(%rdx,%rcx,1) : dtup->dt_columns[keyno].values[i] = : datumCopy(values[valueno++], : brdesc->bd_tupdesc->attrs[keyno]->attbyval, : brdesc->bd_tupdesc->attrs[keyno]->attlen); : : dtup->dt_columns[keyno].hasnulls = hasnulls[keyno]; 0.00 : 46d62b: 88 44 0a 0a mov %al,0xa(%rdx,%rcx,1) 0.00 : 46d62f: 49 8b 4f 10 mov 0x10(%r15),%rcx : : /* : * Iterate to assign each of the values to the corresponding item in the : * values array of each column. : */ : for (valueno = 0, keyno = 0; keyno < brdesc->bd_tupdesc->natts; keyno++) 0.00 : 46d633: 83 45 cc 01 addl $0x1,-0x34(%rbp) 0.00 : 46d637: 8b 5d cc mov -0x34(%rbp),%ebx 0.00 : 46d63a: 39 19 cmp %ebx,(%rcx) 0.00 : 46d63c: 0f 8f 26 ff ff ff jg 46d568 : : dtup->dt_columns[keyno].hasnulls = hasnulls[keyno]; : dtup->dt_columns[keyno].allnulls = false; : } : : pfree(values); 0.00 : 46d642: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 46d646: e8 35 b5 32 00 callq 798b80 : pfree(allnulls); 0.00 : 46d64b: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 46d64f: e8 2c b5 32 00 callq 798b80 : pfree(hasnulls); 0.00 : 46d654: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 46d658: e8 23 b5 32 00 callq 798b80 : : return dtup; : } 0.00 : 46d65d: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 46d661: 48 83 c4 58 add $0x58,%rsp 0.00 : 46d665: 5b pop %rbx 0.00 : 46d666: 41 5c pop %r12 0.00 : 46d668: 41 5d pop %r13 0.00 : 46d66a: 41 5e pop %r14 0.00 : 46d66c: 41 5f pop %r15 0.00 : 46d66e: c9 leaveq 0.00 : 46d66f: c3 retq : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); : } : : values[stored++] = fetchatt(thisatt, tp + off); 0.00 : 46d670: 49 8b 14 1e mov (%r14,%rbx,1),%rdx 0.00 : 46d674: e9 07 fe ff ff jmpq 46d480 0.00 : 46d679: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46d680: 49 8d 3c 1e lea (%r14,%rbx,1),%rdi 0.00 : 46d684: 44 89 45 90 mov %r8d,-0x70(%rbp) 0.00 : 46d688: 4c 89 4d 88 mov %r9,-0x78(%rbp) 0.00 : 46d68c: 4c 89 55 80 mov %r10,-0x80(%rbp) 0.00 : 46d690: e8 bb c1 ff ff callq 469850 0.00 : 46d695: 4c 8b 55 80 mov -0x80(%rbp),%r10 0.00 : 46d699: 48 8d 5c 03 01 lea 0x1(%rbx,%rax,1),%rbx 0.00 : 46d69e: 4c 8b 4d 88 mov -0x78(%rbp),%r9 0.00 : 46d6a2: 44 8b 45 90 mov -0x70(%rbp),%r8d 0.00 : 46d6a6: e9 f1 fd ff ff jmpq 46d49c 0.00 : 46d6ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : tp + off); : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); 0.00 : 46d6b0: 48 83 c3 07 add $0x7,%rbx 0.00 : 46d6b4: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 46d6b8: e9 96 fd ff ff jmpq 46d453 0.00 : 46d6bd: 0f 1f 00 nopl (%rax) : } : : values[stored++] = fetchatt(thisatt, tp + off); 0.00 : 46d6c0: 41 8b 14 1e mov (%r14,%rbx,1),%edx 0.00 : 46d6c4: e9 b7 fd ff ff jmpq 46d480 0.00 : 46d6c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : int i; : : if (allnulls[keyno]) : { : valueno += brdesc->bd_info[keyno]->oi_nstored; 0.00 : 46d6d0: 4b 8b 44 f7 28 mov 0x28(%r15,%r14,8),%rax 0.00 : 46d6d5: 0f b7 00 movzwl (%rax),%eax 0.00 : 46d6d8: 41 01 c5 add %eax,%r13d : continue; 0.00 : 46d6db: e9 53 ff ff ff jmpq 46d633 : { : int datumno; : : if (allnulls[attnum]) : { : stored += brdesc->bd_info[attnum]->oi_nstored; 0.00 : 46d6e0: 49 8b 44 c7 28 mov 0x28(%r15,%rax,8),%rax : * offsets here. : */ : diskdsc = brtuple_disk_tupdesc(brdesc); : stored = 0; : off = 0; : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d6e5: 41 83 c0 01 add $0x1,%r8d : { : int datumno; : : if (allnulls[attnum]) : { : stored += brdesc->bd_info[attnum]->oi_nstored; 0.00 : 46d6e9: 0f b7 00 movzwl (%rax),%eax 0.00 : 46d6ec: 41 01 c5 add %eax,%r13d : * offsets here. : */ : diskdsc = brtuple_disk_tupdesc(brdesc); : stored = 0; : off = 0; : for (attnum = 0; attnum < brdesc->bd_tupdesc->natts; attnum++) 0.00 : 46d6ef: 8b 01 mov (%rcx),%eax 0.00 : 46d6f1: 41 39 c0 cmp %eax,%r8d 0.00 : 46d6f4: 0f 8c fe fc ff ff jl 46d3f8 0.00 : 46d6fa: e9 54 fe ff ff jmpq 46d553 0.00 : 46d6ff: 90 nop : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); : } : : values[stored++] = fetchatt(thisatt, tp + off); 0.00 : 46d700: 41 0f b7 14 1e movzwl (%r14,%rbx,1),%edx 0.00 : 46d705: e9 76 fd ff ff jmpq 46d480 0.00 : 46d70a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46d710: 41 8b 04 1e mov (%r14,%rbx,1),%eax 0.00 : 46d714: c1 e8 02 shr $0x2,%eax 0.00 : 46d717: 89 c0 mov %eax,%eax 0.00 : 46d719: e9 16 fe ff ff jmpq 46d534 0.00 : 46d71e: 66 90 xchg %ax,%ax : /* : * the "all nulls" bit means that all values in the page range for : * this column are nulls. Therefore there are no values in the tuple : * data area. : */ : allnulls[attnum] = nulls && !att_isnull(attnum, nullbits); 0.00 : 46d720: c6 07 01 movb $0x1,(%rdi) : * have not-null values. Therefore we know the tuple contains data : * for this column. : * : * The hasnulls bits follow the allnulls bits in the same bitmask. : */ : hasnulls[attnum] = 0.00 : 46d723: 48 03 75 c0 add -0x40(%rbp),%rsi 0.00 : 46d727: e9 71 fc ff ff jmpq 46d39d 0.00 : 46d72c: 0f 1f 40 00 nopl 0x0(%rax) : off = att_align_nominal(off, thisatt->attalign); : } : : values[stored++] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46d730: 41 0f b6 54 1e 01 movzbl 0x1(%r14,%rbx,1),%edx 0.00 : 46d736: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 46d73b: 80 fa 01 cmp $0x1,%dl 0.00 : 46d73e: 0f 84 f0 fd ff ff je 46d534 0.00 : 46d744: 80 fa 12 cmp $0x12,%dl 0.00 : 46d747: b8 03 00 00 00 mov $0x3,%eax 0.00 : 46d74c: ba 12 00 00 00 mov $0x12,%edx 0.00 : 46d751: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 46d755: e9 da fd ff ff jmpq 46d534 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/tupdesc.c:176 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/tupdesc.c:176 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000474f70 : : * This function creates a new TupleDesc by copying from an existing : * TupleDesc (including its constraints and defaults). : */ : TupleDesc : CreateTupleDescCopyConstr(TupleDesc tupdesc) : { 0.00 : 474f70: 55 push %rbp 0.00 : 474f71: 48 89 e5 mov %rsp,%rbp 0.00 : 474f74: 41 57 push %r15 0.00 : 474f76: 41 56 push %r14 0.00 : 474f78: 41 55 push %r13 0.00 : 474f7a: 41 54 push %r12 0.00 : 474f7c: 53 push %rbx 0.00 : 474f7d: 48 83 ec 28 sub $0x28,%rsp 0.00 : 474f81: 48 89 7d c8 mov %rdi,-0x38(%rbp) : TupleDesc desc; : TupleConstr *constr = tupdesc->constr; 0.00 : 474f85: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 474f89: 48 89 45 d0 mov %rax,-0x30(%rbp) : int i; : : desc = CreateTemplateTupleDesc(tupdesc->natts, tupdesc->tdhasoid); 0.00 : 474f8d: 0f be 77 20 movsbl 0x20(%rdi),%esi 0.00 : 474f91: 8b 3f mov (%rdi),%edi 0.00 : 474f93: e8 58 fb ff ff callq 474af0 : : for (i = 0; i < desc->natts; i++) 0.00 : 474f98: 8b 10 mov (%rax),%edx : { : TupleDesc desc; : TupleConstr *constr = tupdesc->constr; : int i; : : desc = CreateTemplateTupleDesc(tupdesc->natts, tupdesc->tdhasoid); 0.00 : 474f9a: 49 89 c6 mov %rax,%r14 : : for (i = 0; i < desc->natts; i++) 0.00 : 474f9d: 85 d2 test %edx,%edx 0.00 : 474f9f: 0f 8e 9a 00 00 00 jle 47503f 0.00 : 474fa5: 31 f6 xor %esi,%esi 0.00 : 474fa7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 474fae: 00 00 : { : memcpy(desc->attrs[i], tupdesc->attrs[i], ATTRIBUTE_FIXED_PART_SIZE); 0.00 : 474fb0: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 474fb4: 48 8b 5d c8 mov -0x38(%rbp),%rbx 0.00 : 474fb8: 48 63 d6 movslq %esi,%rdx : TupleConstr *constr = tupdesc->constr; : int i; : : desc = CreateTemplateTupleDesc(tupdesc->natts, tupdesc->tdhasoid); : : for (i = 0; i < desc->natts; i++) 0.00 : 474fbb: 83 c6 01 add $0x1,%esi : { : memcpy(desc->attrs[i], tupdesc->attrs[i], ATTRIBUTE_FIXED_PART_SIZE); 0.00 : 474fbe: 48 8b 0c d0 mov (%rax,%rdx,8),%rcx 0.00 : 474fc2: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 474fc6: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 474fca: 48 8b 02 mov (%rdx),%rax 0.00 : 474fcd: 48 89 01 mov %rax,(%rcx) 0.00 : 474fd0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 474fd4: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 474fd8: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 474fdc: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : 474fe0: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 474fe4: 48 89 41 18 mov %rax,0x18(%rcx) 0.00 : 474fe8: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 474fec: 48 89 41 20 mov %rax,0x20(%rcx) 0.00 : 474ff0: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 474ff4: 48 89 41 28 mov %rax,0x28(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/tupdesc.c:176 50.00 : 474ff8: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 474ffc: 48 89 41 30 mov %rax,0x30(%rcx) 0.00 : 475000: 48 8b 42 38 mov 0x38(%rdx),%rax 0.00 : 475004: 48 89 41 38 mov %rax,0x38(%rcx) 50.00 : 475008: 48 8b 42 40 mov 0x40(%rdx),%rax 0.00 : 47500c: 48 89 41 40 mov %rax,0x40(%rcx) 0.00 : 475010: 48 8b 42 48 mov 0x48(%rdx),%rax 0.00 : 475014: 48 89 41 48 mov %rax,0x48(%rcx) 0.00 : 475018: 48 8b 42 50 mov 0x50(%rdx),%rax 0.00 : 47501c: 48 89 41 50 mov %rax,0x50(%rcx) 0.00 : 475020: 48 8b 42 58 mov 0x58(%rdx),%rax 0.00 : 475024: 48 89 41 58 mov %rax,0x58(%rcx) 0.00 : 475028: 48 8b 42 60 mov 0x60(%rdx),%rax 0.00 : 47502c: 48 89 41 60 mov %rax,0x60(%rcx) 0.00 : 475030: 8b 42 68 mov 0x68(%rdx),%eax 0.00 : 475033: 89 41 68 mov %eax,0x68(%rcx) : TupleConstr *constr = tupdesc->constr; : int i; : : desc = CreateTemplateTupleDesc(tupdesc->natts, tupdesc->tdhasoid); : : for (i = 0; i < desc->natts; i++) 0.00 : 475036: 41 39 36 cmp %esi,(%r14) 0.00 : 475039: 0f 8f 71 ff ff ff jg 474fb0 : { : memcpy(desc->attrs[i], tupdesc->attrs[i], ATTRIBUTE_FIXED_PART_SIZE); : } : : if (constr) 0.00 : 47503f: 48 83 7d d0 00 cmpq $0x0,-0x30(%rbp) 0.00 : 475044: 74 41 je 475087 : { : TupleConstr *cpy = (TupleConstr *) palloc0(sizeof(TupleConstr)); 0.00 : 475046: bf 18 00 00 00 mov $0x18,%edi 0.00 : 47504b: e8 20 3f 32 00 callq 798f70 : : cpy->has_not_null = constr->has_not_null; 0.00 : 475050: 48 8b 55 d0 mov -0x30(%rbp),%rdx : memcpy(desc->attrs[i], tupdesc->attrs[i], ATTRIBUTE_FIXED_PART_SIZE); : } : : if (constr) : { : TupleConstr *cpy = (TupleConstr *) palloc0(sizeof(TupleConstr)); 0.00 : 475054: 49 89 c5 mov %rax,%r13 : : cpy->has_not_null = constr->has_not_null; 0.00 : 475057: 0f b6 42 14 movzbl 0x14(%rdx),%eax 0.00 : 47505b: 41 88 45 14 mov %al,0x14(%r13) : : if ((cpy->num_defval = constr->num_defval) > 0) 0.00 : 47505f: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 475063: 66 85 c0 test %ax,%ax 0.00 : 475066: 66 41 89 45 10 mov %ax,0x10(%r13) 0.00 : 47506b: 75 43 jne 4750b0 : if (constr->defval[i].adbin) : cpy->defval[i].adbin = pstrdup(constr->defval[i].adbin); : } : } : : if ((cpy->num_check = constr->num_check) > 0) 0.00 : 47506d: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 475071: 0f b7 42 12 movzwl 0x12(%rdx),%eax 0.00 : 475075: 66 85 c0 test %ax,%ax 0.00 : 475078: 66 41 89 45 12 mov %ax,0x12(%r13) 0.00 : 47507d: 0f 85 ad 00 00 00 jne 475130 : cpy->check[i].ccvalid = constr->check[i].ccvalid; : cpy->check[i].ccnoinherit = constr->check[i].ccnoinherit; : } : } : : desc->constr = cpy; 0.00 : 475083: 4d 89 6e 10 mov %r13,0x10(%r14) : } : : desc->tdtypeid = tupdesc->tdtypeid; 0.00 : 475087: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 47508b: 8b 42 18 mov 0x18(%rdx),%eax 0.00 : 47508e: 41 89 46 18 mov %eax,0x18(%r14) : desc->tdtypmod = tupdesc->tdtypmod; 0.00 : 475092: 8b 42 1c mov 0x1c(%rdx),%eax 0.00 : 475095: 41 89 46 1c mov %eax,0x1c(%r14) : : return desc; : } 0.00 : 475099: 48 83 c4 28 add $0x28,%rsp 0.00 : 47509d: 4c 89 f0 mov %r14,%rax 0.00 : 4750a0: 5b pop %rbx 0.00 : 4750a1: 41 5c pop %r12 0.00 : 4750a3: 41 5d pop %r13 0.00 : 4750a5: 41 5e pop %r14 0.00 : 4750a7: 41 5f pop %r15 0.00 : 4750a9: c9 leaveq 0.00 : 4750aa: c3 retq 0.00 : 4750ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : cpy->has_not_null = constr->has_not_null; : : if ((cpy->num_defval = constr->num_defval) > 0) : { : cpy->defval = (AttrDefault *) palloc(cpy->num_defval * sizeof(AttrDefault)); 0.00 : 4750b0: 0f b7 f8 movzwl %ax,%edi 0.00 : 4750b3: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 4750b7: e8 94 3c 32 00 callq 798d50 0.00 : 4750bc: 49 89 45 00 mov %rax,0x0(%r13) : memcpy(cpy->defval, constr->defval, cpy->num_defval * sizeof(AttrDefault)); 0.00 : 4750c0: 48 8b 4d d0 mov -0x30(%rbp),%rcx : : cpy->has_not_null = constr->has_not_null; : : if ((cpy->num_defval = constr->num_defval) > 0) : { : cpy->defval = (AttrDefault *) palloc(cpy->num_defval * sizeof(AttrDefault)); 0.00 : 4750c4: 48 89 c7 mov %rax,%rdi : memcpy(cpy->defval, constr->defval, cpy->num_defval * sizeof(AttrDefault)); 0.00 : 4750c7: 41 0f b7 55 10 movzwl 0x10(%r13),%edx 0.00 : 4750cc: 48 8b 31 mov (%rcx),%rsi 0.00 : 4750cf: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 4750d3: e8 18 4b ff ff callq 469bf0 : for (i = cpy->num_defval - 1; i >= 0; i--) 0.00 : 4750d8: 41 0f b7 45 10 movzwl 0x10(%r13),%eax 0.00 : 4750dd: 83 e8 01 sub $0x1,%eax 0.00 : 4750e0: 78 8b js 47506d : * This function creates a new TupleDesc by copying from an existing : * TupleDesc (including its constraints and defaults). : */ : TupleDesc : CreateTupleDescCopyConstr(TupleDesc tupdesc) : { 0.00 : 4750e2: 89 45 b4 mov %eax,-0x4c(%rbp) : : if ((cpy->num_defval = constr->num_defval) > 0) : { : cpy->defval = (AttrDefault *) palloc(cpy->num_defval * sizeof(AttrDefault)); : memcpy(cpy->defval, constr->defval, cpy->num_defval * sizeof(AttrDefault)); : for (i = cpy->num_defval - 1; i >= 0; i--) 0.00 : 4750e5: 89 c0 mov %eax,%eax 0.00 : 4750e7: 45 31 e4 xor %r12d,%r12d 0.00 : 4750ea: 4c 8d 78 01 lea 0x1(%rax),%r15 0.00 : 4750ee: 66 90 xchg %ax,%ax : { : if (constr->defval[i].adbin) 0.00 : 4750f0: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 4750f3: 48 8b 5d d0 mov -0x30(%rbp),%rbx 0.00 : 4750f7: 44 29 e0 sub %r12d,%eax 0.00 : 4750fa: 48 63 d0 movslq %eax,%rdx 0.00 : 4750fd: 48 8b 03 mov (%rbx),%rax 0.00 : 475100: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 475104: 48 8b 7c 10 08 mov 0x8(%rax,%rdx,1),%rdi 0.00 : 475109: 48 85 ff test %rdi,%rdi 0.00 : 47510c: 74 10 je 47511e : cpy->defval[i].adbin = pstrdup(constr->defval[i].adbin); 0.00 : 47510e: 48 89 d3 mov %rdx,%rbx 0.00 : 475111: 49 03 5d 00 add 0x0(%r13),%rbx 0.00 : 475115: e8 36 3e 32 00 callq 798f50 0.00 : 47511a: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 47511e: 49 83 c4 01 add $0x1,%r12 : : if ((cpy->num_defval = constr->num_defval) > 0) : { : cpy->defval = (AttrDefault *) palloc(cpy->num_defval * sizeof(AttrDefault)); : memcpy(cpy->defval, constr->defval, cpy->num_defval * sizeof(AttrDefault)); : for (i = cpy->num_defval - 1; i >= 0; i--) 0.00 : 475122: 4d 39 fc cmp %r15,%r12 0.00 : 475125: 75 c9 jne 4750f0 0.00 : 475127: e9 41 ff ff ff jmpq 47506d 0.00 : 47512c: 0f 1f 40 00 nopl 0x0(%rax) : } : } : : if ((cpy->num_check = constr->num_check) > 0) : { : cpy->check = (ConstrCheck *) palloc(cpy->num_check * sizeof(ConstrCheck)); 0.00 : 475130: 0f b7 f8 movzwl %ax,%edi 0.00 : 475133: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 475137: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 47513b: e8 10 3c 32 00 callq 798d50 : memcpy(cpy->check, constr->check, cpy->num_check * sizeof(ConstrCheck)); 0.00 : 475140: 41 0f b7 55 12 movzwl 0x12(%r13),%edx : } : } : : if ((cpy->num_check = constr->num_check) > 0) : { : cpy->check = (ConstrCheck *) palloc(cpy->num_check * sizeof(ConstrCheck)); 0.00 : 475145: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 475149: 48 89 c7 mov %rax,%rdi : memcpy(cpy->check, constr->check, cpy->num_check * sizeof(ConstrCheck)); 0.00 : 47514c: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 475150: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 475154: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 475158: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 47515c: e8 8f 4a ff ff callq 469bf0 : for (i = cpy->num_check - 1; i >= 0; i--) 0.00 : 475161: 41 0f b7 45 12 movzwl 0x12(%r13),%eax 0.00 : 475166: 83 e8 01 sub $0x1,%eax 0.00 : 475169: 0f 88 14 ff ff ff js 475083 : * This function creates a new TupleDesc by copying from an existing : * TupleDesc (including its constraints and defaults). : */ : TupleDesc : CreateTupleDescCopyConstr(TupleDesc tupdesc) : { 0.00 : 47516f: 89 45 c4 mov %eax,-0x3c(%rbp) : : if ((cpy->num_check = constr->num_check) > 0) : { : cpy->check = (ConstrCheck *) palloc(cpy->num_check * sizeof(ConstrCheck)); : memcpy(cpy->check, constr->check, cpy->num_check * sizeof(ConstrCheck)); : for (i = cpy->num_check - 1; i >= 0; i--) 0.00 : 475172: 89 c0 mov %eax,%eax 0.00 : 475174: 45 31 ff xor %r15d,%r15d 0.00 : 475177: 48 83 c0 01 add $0x1,%rax 0.00 : 47517b: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 47517f: 90 nop : { : if (constr->check[i].ccname) 0.00 : 475180: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 475183: 48 8b 5d d0 mov -0x30(%rbp),%rbx 0.00 : 475187: 44 29 f8 sub %r15d,%eax 0.00 : 47518a: 48 98 cltq 0.00 : 47518c: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 475190: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : 475197: 00 0.00 : 475198: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 47519c: 4c 01 e0 add %r12,%rax 0.00 : 47519f: 48 8b 38 mov (%rax),%rdi 0.00 : 4751a2: 48 85 ff test %rdi,%rdi 0.00 : 4751a5: 74 1a je 4751c1 : cpy->check[i].ccname = pstrdup(constr->check[i].ccname); 0.00 : 4751a7: 49 8b 5d 08 mov 0x8(%r13),%rbx 0.00 : 4751ab: e8 a0 3d 32 00 callq 798f50 0.00 : 4751b0: 4c 01 e3 add %r12,%rbx 0.00 : 4751b3: 48 89 03 mov %rax,(%rbx) 0.00 : 4751b6: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 4751ba: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4751be: 4c 01 e0 add %r12,%rax : if (constr->check[i].ccbin) 0.00 : 4751c1: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 4751c5: 48 85 ff test %rdi,%rdi 0.00 : 4751c8: 74 1b je 4751e5 : cpy->check[i].ccbin = pstrdup(constr->check[i].ccbin); 0.00 : 4751ca: 49 8b 5d 08 mov 0x8(%r13),%rbx 0.00 : 4751ce: e8 7d 3d 32 00 callq 798f50 0.00 : 4751d3: 4c 01 e3 add %r12,%rbx 0.00 : 4751d6: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4751da: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 4751de: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4751e2: 4c 01 e0 add %r12,%rax : cpy->check[i].ccvalid = constr->check[i].ccvalid; 0.00 : 4751e5: 0f b6 40 10 movzbl 0x10(%rax),%eax 0.00 : 4751e9: 49 8b 55 08 mov 0x8(%r13),%rdx : cpy->check[i].ccnoinherit = constr->check[i].ccnoinherit; 0.00 : 4751ed: 49 83 c7 01 add $0x1,%r15 : { : if (constr->check[i].ccname) : cpy->check[i].ccname = pstrdup(constr->check[i].ccname); : if (constr->check[i].ccbin) : cpy->check[i].ccbin = pstrdup(constr->check[i].ccbin); : cpy->check[i].ccvalid = constr->check[i].ccvalid; 0.00 : 4751f1: 42 88 44 22 10 mov %al,0x10(%rdx,%r12,1) : cpy->check[i].ccnoinherit = constr->check[i].ccnoinherit; 0.00 : 4751f6: 48 8b 5d d0 mov -0x30(%rbp),%rbx 0.00 : 4751fa: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 4751fe: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 475202: 42 0f b6 44 20 11 movzbl 0x11(%rax,%r12,1),%eax 0.00 : 475208: 42 88 44 22 11 mov %al,0x11(%rdx,%r12,1) : : if ((cpy->num_check = constr->num_check) > 0) : { : cpy->check = (ConstrCheck *) palloc(cpy->num_check * sizeof(ConstrCheck)); : memcpy(cpy->check, constr->check, cpy->num_check * sizeof(ConstrCheck)); : for (i = cpy->num_check - 1; i >= 0; i--) 0.00 : 47520d: 4c 3b 7d b8 cmp -0x48(%rbp),%r15 0.00 : 475211: 0f 85 69 ff ff ff jne 475180 0.00 : 475217: e9 67 fe ff ff jmpq 475083 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2280 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2286 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049ab60 : : * the original tuple. : */ : static HeapTuple : heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId xid, : CommandId cid, int options) : { 0.00 : 49ab60: 55 push %rbp 0.00 : 49ab61: 41 89 c9 mov %ecx,%r9d 0.00 : 49ab64: 48 89 e5 mov %rsp,%rbp 0.00 : 49ab67: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 49ab6b: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 49ab6f: 48 89 f3 mov %rsi,%rbx 0.00 : 49ab72: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 49ab76: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 49ab7a: 49 89 fd mov %rdi,%r13 0.00 : 49ab7d: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 49ab81: 48 83 ec 40 sub $0x40,%rsp : if (relation->rd_rel->relhasoids) 0.00 : 49ab85: 48 8b 47 30 mov 0x30(%rdi),%rax : * the original tuple. : */ : static HeapTuple : heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId xid, : CommandId cid, int options) : { 0.00 : 49ab89: 41 89 d7 mov %edx,%r15d : if (relation->rd_rel->relhasoids) 0.00 : 49ab8c: 80 78 74 00 cmpb $0x0,0x74(%rax) 0.00 : 49ab90: 0f 85 ca 00 00 00 jne 49ac60 0.00 : 49ab96: 4c 8b 66 10 mov 0x10(%rsi),%r12 0.00 : 49ab9a: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx : { : /* check there is not space for an OID */ : Assert(!(tup->t_data->t_infomask & HEAP_HASOID)); : } : : tup->t_data->t_infomask &= ~(HEAP_XACT_MASK); 0.00 : 49aba0: 83 e2 0f and $0xf,%edx 0.00 : 49aba3: 66 41 89 54 24 14 mov %dx,0x14(%r12) : tup->t_data->t_infomask2 &= ~(HEAP2_XACT_MASK); 50.00 : 49aba9: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abad: 66 81 60 12 ff 1f andw $0x1fff,0x12(%rax) : tup->t_data->t_infomask |= HEAP_XMAX_INVALID; 0.00 : 49abb3: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abb7: 66 81 48 14 00 08 orw $0x800,0x14(%rax) : HeapTupleHeaderSetXmin(tup->t_data, xid); : if (options & HEAP_INSERT_FROZEN) 0.00 : 49abbd: 41 f6 c0 04 test $0x4,%r8b : } : : tup->t_data->t_infomask &= ~(HEAP_XACT_MASK); : tup->t_data->t_infomask2 &= ~(HEAP2_XACT_MASK); : tup->t_data->t_infomask |= HEAP_XMAX_INVALID; : HeapTupleHeaderSetXmin(tup->t_data, xid); 0.00 : 49abc1: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abc5: 44 89 38 mov %r15d,(%rax) : if (options & HEAP_INSERT_FROZEN) 0.00 : 49abc8: 74 0a je 49abd4 : HeapTupleHeaderSetXminFrozen(tup->t_data); 0.00 : 49abca: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abce: 66 81 48 14 00 03 orw $0x300,0x14(%rax) : : HeapTupleHeaderSetCmin(tup->t_data, cid); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2286 50.00 : 49abd4: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abd8: 44 89 48 08 mov %r9d,0x8(%rax) 0.00 : 49abdc: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abe0: 66 83 60 14 df andw $0xffdf,0x14(%rax) : HeapTupleHeaderSetXmax(tup->t_data, 0); /* for cleanliness */ 0.00 : 49abe5: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abe9: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : tup->t_tableOid = RelationGetRelid(relation); 0.00 : 49abf0: 41 8b 45 40 mov 0x40(%r13),%eax 0.00 : 49abf4: 89 43 0c mov %eax,0xc(%rbx) : : /* : * If the new tuple is too big for storage or contains already toasted : * out-of-line attributes from some other relation, invoke the toaster. : */ : if (relation->rd_rel->relkind != RELKIND_RELATION && 0.00 : 49abf7: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : 49abfb: 0f b6 40 6f movzbl 0x6f(%rax),%eax 0.00 : 49abff: 3c 72 cmp $0x72,%al 0.00 : 49ac01: 74 1d je 49ac20 0.00 : 49ac03: 3c 6d cmp $0x6d,%al 0.00 : 49ac05: 74 19 je 49ac20 : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); : else : return tup; : } 0.00 : 49ac07: 48 89 d8 mov %rbx,%rax 0.00 : 49ac0a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 49ac0e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 49ac12: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 49ac16: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 49ac1a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 49ac1e: c9 leaveq 0.00 : 49ac1f: c3 retq : { : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) 0.00 : 49ac20: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49ac24: f6 40 14 04 testb $0x4,0x14(%rax) 0.00 : 49ac28: 75 08 jne 49ac32 0.00 : 49ac2a: 81 3b f0 07 00 00 cmpl $0x7f0,(%rbx) 0.00 : 49ac30: 76 d5 jbe 49ac07 : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac32: 48 89 de mov %rbx,%rsi 0.00 : 49ac35: 4c 89 ef mov %r13,%rdi : else : return tup; : } 0.00 : 49ac38: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 49ac3c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 49ac40: 4c 8b 6d e8 mov -0x18(%rbp),%r13 : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac44: 44 89 c1 mov %r8d,%ecx : else : return tup; : } 0.00 : 49ac47: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 49ac4b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac4f: 31 d2 xor %edx,%edx : else : return tup; : } 0.00 : 49ac51: c9 leaveq : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac52: e9 89 85 00 00 jmpq 4a31e0 0.00 : 49ac57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49ac5e: 00 00 : * creation, the backend program sets oids for tuples. When we define : * an index, we set the oid. Finally, in the future, we may allow : * users to set their own object ids in order to support a persistent : * object store (objects need to contain pointers to one another). : */ : if (!OidIsValid(HeapTupleGetOid(tup))) 0.00 : 49ac60: 4c 8b 66 10 mov 0x10(%rsi),%r12 0.00 : 49ac64: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx 0.00 : 49ac6a: f6 c2 08 test $0x8,%dl 0.00 : 49ac6d: 75 39 jne 49aca8 : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac6f: 41 0f b6 44 24 16 movzbl 0x16(%r12),%eax 0.00 : 49ac75: 4c 8d 70 fc lea -0x4(%rax),%r14 : * an index, we set the oid. Finally, in the future, we may allow : * users to set their own object ids in order to support a persistent : * object store (objects need to contain pointers to one another). : */ : if (!OidIsValid(HeapTupleGetOid(tup))) : HeapTupleSetOid(tup, GetNewOid(relation)); 0.00 : 49ac79: 44 89 45 d0 mov %r8d,-0x30(%rbp) 0.00 : 49ac7d: 44 89 4d c8 mov %r9d,-0x38(%rbp) 0.00 : 49ac81: 4c 89 ef mov %r13,%rdi 0.00 : 49ac84: e8 e7 81 04 00 callq 4e2e70 0.00 : 49ac89: 43 89 04 34 mov %eax,(%r12,%r14,1) 0.00 : 49ac8d: 4c 8b 63 10 mov 0x10(%rbx),%r12 0.00 : 49ac91: 44 8b 45 d0 mov -0x30(%rbp),%r8d 0.00 : 49ac95: 44 8b 4d c8 mov -0x38(%rbp),%r9d 0.00 : 49ac99: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx 0.00 : 49ac9f: e9 fc fe ff ff jmpq 49aba0 0.00 : 49aca4: 0f 1f 40 00 nopl 0x0(%rax) : * creation, the backend program sets oids for tuples. When we define : * an index, we set the oid. Finally, in the future, we may allow : * users to set their own object ids in order to support a persistent : * object store (objects need to contain pointers to one another). : */ : if (!OidIsValid(HeapTupleGetOid(tup))) 0.00 : 49aca8: 41 0f b6 44 24 16 movzbl 0x16(%r12),%eax 0.00 : 49acae: 45 8b 5c 04 fc mov -0x4(%r12,%rax,1),%r11d 0.00 : 49acb3: 4c 8d 70 fc lea -0x4(%rax),%r14 0.00 : 49acb7: 45 85 db test %r11d,%r11d 0.00 : 49acba: 74 bd je 49ac79 0.00 : 49acbc: e9 df fe ff ff jmpq 49aba0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:219 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:469 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e170 : : Buffer : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:219 50.00 : 49e170: 55 push %rbp : saveFreeSpace; : BlockNumber targetBlock, : otherBlock; : bool needLock; : : len = MAXALIGN(len); /* be conservative */ 0.00 : 49e171: 48 83 c6 07 add $0x7,%rsi : Buffer : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { 0.00 : 49e175: 48 89 e5 mov %rsp,%rbp 0.00 : 49e178: 41 57 push %r15 0.00 : 49e17a: 41 89 d7 mov %edx,%r15d 0.00 : 49e17d: 41 56 push %r14 0.00 : 49e17f: 41 55 push %r13 0.00 : 49e181: 41 54 push %r12 0.00 : 49e183: 41 89 cc mov %ecx,%r12d 0.00 : 49e186: 53 push %rbx 0.00 : 49e187: 48 83 ec 48 sub $0x48,%rsp : saveFreeSpace; : BlockNumber targetBlock, : otherBlock; : bool needLock; : : len = MAXALIGN(len); /* be conservative */ 0.00 : 49e18b: 48 89 75 c0 mov %rsi,-0x40(%rbp) 0.00 : 49e18f: 48 83 65 c0 f8 andq $0xfffffffffffffff8,-0x40(%rbp) : Assert(otherBuffer == InvalidBuffer || !bistate); : : /* : * If we're gonna fail for oversize tuple, do it right away : */ : if (len > MaxHeapTupleSize) 0.00 : 49e194: 48 81 7d c0 e0 1f 00 cmpq $0x1fe0,-0x40(%rbp) 0.00 : 49e19b: 00 : Buffer : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { 0.00 : 49e19c: 48 89 7d a8 mov %rdi,-0x58(%rbp) 0.00 : 49e1a0: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 49e1a4: 4c 89 4d 98 mov %r9,-0x68(%rbp) : Assert(otherBuffer == InvalidBuffer || !bistate); : : /* : * If we're gonna fail for oversize tuple, do it right away : */ : if (len > MaxHeapTupleSize) 0.00 : 49e1a8: 0f 87 da 05 00 00 ja 49e788 : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("row is too big: size %zu, maximum size %zu", : len, MaxHeapTupleSize))); : : /* Compute desired extra freespace due to fillfactor option */ : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, 0.00 : 49e1ae: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 49e1b2: 31 db xor %ebx,%ebx 0.00 : 49e1b4: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 49e1bb: 48 85 d2 test %rdx,%rdx 0.00 : 49e1be: 74 1f je 49e1df 0.00 : 49e1c0: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 49e1c5: 2b 4a 04 sub 0x4(%rdx),%ecx 0.00 : 49e1c8: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 49e1cd: c1 e1 0d shl $0xd,%ecx 0.00 : 49e1d0: 89 c8 mov %ecx,%eax 0.00 : 49e1d2: c1 f9 1f sar $0x1f,%ecx 0.00 : 49e1d5: f7 ea imul %edx 0.00 : 49e1d7: c1 fa 05 sar $0x5,%edx 0.00 : 49e1da: 29 ca sub %ecx,%edx 0.00 : 49e1dc: 48 63 da movslq %edx,%rbx : HEAP_DEFAULT_FILLFACTOR); : : if (otherBuffer != InvalidBuffer) 0.00 : 49e1df: 45 85 ff test %r15d,%r15d 0.00 : 49e1e2: c7 45 bc ff ff ff ff movl $0xffffffff,-0x44(%rbp) 0.00 : 49e1e9: 0f 85 f1 04 00 00 jne 49e6e0 : * a page with enough free space, we give up and extend the relation. : * : * When use_fsm is false, we either put the tuple onto the existing target : * page or extend the relation. : */ : if (len + saveFreeSpace > MaxHeapTupleSize) 0.00 : 49e1ef: 48 03 5d c0 add -0x40(%rbp),%rbx 0.00 : 49e1f3: 48 81 fb e0 1f 00 00 cmp $0x1fe0,%rbx 0.00 : 49e1fa: 48 89 5d b0 mov %rbx,-0x50(%rbp) 0.00 : 49e1fe: 0f 87 54 02 00 00 ja 49e458 : { : /* can't fit, don't bother asking FSM */ : targetBlock = InvalidBlockNumber; : use_fsm = false; : } : else if (bistate && bistate->current_buf != InvalidBuffer) 0.00 : 49e204: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : 49e209: 74 0f je 49e21a 0.00 : 49e20b: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49e20f: 8b 7a 08 mov 0x8(%rdx),%edi 0.00 : 49e212: 85 ff test %edi,%edi 0.00 : 49e214: 0f 85 f6 04 00 00 jne 49e710 : targetBlock = BufferGetBlockNumber(bistate->current_buf); : else : targetBlock = RelationGetTargetBlock(relation); 0.00 : 49e21a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 49e21e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 49e224: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 49e228: b8 01 00 00 00 mov $0x1,%eax 0.00 : 49e22d: 48 85 d2 test %rdx,%rdx 0.00 : 49e230: 74 0b je 49e23d 0.00 : 49e232: 44 8b 6a 18 mov 0x18(%rdx),%r13d 0.00 : 49e236: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 49e23a: 0f 94 c0 sete %al : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { : bool use_fsm = !(options & HEAP_INSERT_SKIP_FSM); 0.00 : 49e23d: 41 d1 ec shr %r12d 0.00 : 49e240: 41 83 f4 01 xor $0x1,%r12d : else if (bistate && bistate->current_buf != InvalidBuffer) : targetBlock = BufferGetBlockNumber(bistate->current_buf); : else : targetBlock = RelationGetTargetBlock(relation); : : if (targetBlock == InvalidBlockNumber && use_fsm) 0.00 : 49e244: 44 89 e2 mov %r12d,%edx 0.00 : 49e247: 83 e2 01 and $0x1,%edx 0.00 : 49e24a: 88 55 bb mov %dl,-0x45(%rbp) 0.00 : 49e24d: 0f 85 cd 01 00 00 jne 49e420 : if (nblocks > 0) : targetBlock = nblocks - 1; : } : } : : while (targetBlock != InvalidBlockNumber) 0.00 : 49e253: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 49e257: 0f 84 fb 01 00 00 je 49e458 : } : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e25d: 44 89 f8 mov %r15d,%eax 0.00 : 49e260: f7 d0 not %eax 0.00 : 49e262: 48 98 cltq 0.00 : 49e264: 48 c1 e0 03 shl $0x3,%rax 0.00 : 49e268: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 49e26c: 41 8d 47 ff lea -0x1(%r15),%eax 0.00 : 49e270: 48 98 cltq 0.00 : 49e272: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e276: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 49e27a: e9 09 01 00 00 jmpq 49e388 0.00 : 49e27f: 90 nop : buffer = ReadBufferBI(relation, targetBlock, bistate); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else if (otherBlock == targetBlock) 0.00 : 49e280: 44 39 6d bc cmp %r13d,-0x44(%rbp) 0.00 : 49e284: 0f 84 3e 03 00 00 je 49e5c8 : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else if (otherBlock < targetBlock) 0.00 : 49e28a: 0f 83 e0 02 00 00 jae 49e570 : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e290: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e294: 44 89 ee mov %r13d,%esi 0.00 : 49e297: e8 04 84 1d 00 callq 6766a0 : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e29c: 85 c0 test %eax,%eax : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else if (otherBlock < targetBlock) : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e29e: 41 89 c4 mov %eax,%r12d : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e2a1: 0f 88 d1 03 00 00 js 49e678 0.00 : 49e2a7: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e2ac: 48 98 cltq 0.00 : 49e2ae: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e2b2: 48 03 05 3f 18 72 00 add 0x72183f(%rip),%rax # bbfaf8 0.00 : 49e2b9: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49e2bd: 0f 85 85 03 00 00 jne 49e648 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e2c3: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e2c8: 44 89 ff mov %r15d,%edi 0.00 : 49e2cb: e8 40 64 1d 00 callq 674710 : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e2d0: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e2d5: 44 89 e7 mov %r12d,%edi 0.00 : 49e2d8: e8 33 64 1d 00 callq 674710 : * retake the buffer locks, the visibility map bit will have been : * cleared by some other backend anyway. In that case, we'll have : * done a bit of extra work for no gain, but there's no real harm : * done. : */ : if (otherBuffer == InvalidBuffer || buffer <= otherBuffer) 0.00 : 49e2dd: 45 39 fc cmp %r15d,%r12d 0.00 : 49e2e0: 0f 8e 5d 05 00 00 jle 49e843 : GetVisibilityMapPins(relation, buffer, otherBuffer, : targetBlock, otherBlock, vmbuffer, : vmbuffer_other); : else : GetVisibilityMapPins(relation, otherBuffer, buffer, 0.00 : 49e2e6: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e2ea: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 49e2ee: 45 89 e8 mov %r13d,%r8d 0.00 : 49e2f1: 8b 4d bc mov -0x44(%rbp),%ecx 0.00 : 49e2f4: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e2f8: 44 89 fe mov %r15d,%esi 0.00 : 49e2fb: 45 31 f6 xor %r14d,%r14d 0.00 : 49e2fe: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 49e302: 44 89 e2 mov %r12d,%edx 0.00 : 49e305: e8 a6 fb ff ff callq 49deb0 : : /* : * Now we can check to see if there's enough free space here. If so, : * we're done. : */ : page = BufferGetPage(buffer); 0.00 : 49e30a: 45 85 e4 test %r12d,%r12d 0.00 : 49e30d: 0f 88 f4 00 00 00 js 49e407 0.00 : 49e313: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e318: 48 63 f8 movslq %eax,%rdi 0.00 : 49e31b: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 49e31f: 48 03 3d d2 17 72 00 add 0x7217d2(%rip),%rdi # bbfaf8 : pageFreeSpace = PageGetHeapFreeSpace(page); 0.00 : 49e326: e8 35 6a 1f 00 callq 694d60 : if (len + saveFreeSpace <= pageFreeSpace) 0.00 : 49e32b: 48 39 45 b0 cmp %rax,-0x50(%rbp) : /* : * Now we can check to see if there's enough free space here. If so, : * we're done. : */ : page = BufferGetPage(buffer); : pageFreeSpace = PageGetHeapFreeSpace(page); 0.00 : 49e32f: 48 89 c3 mov %rax,%rbx : if (len + saveFreeSpace <= pageFreeSpace) 0.00 : 49e332: 0f 86 88 03 00 00 jbe 49e6c0 : * Not enough space, so we must give up our page locks and pin (if : * any) and prepare to look elsewhere. We don't care which order we : * unlock the two buffers in, so this can be slightly simpler than the : * code above. : */ : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49e338: 31 f6 xor %esi,%esi 0.00 : 49e33a: 44 89 e7 mov %r12d,%edi 0.00 : 49e33d: e8 ce 63 1d 00 callq 674710 : if (otherBuffer == InvalidBuffer) 0.00 : 49e342: 45 84 f6 test %r14b,%r14b 0.00 : 49e345: 75 10 jne 49e357 : ReleaseBuffer(buffer); : else if (otherBlock != targetBlock) 0.00 : 49e347: 44 39 6d bc cmp %r13d,-0x44(%rbp) 0.00 : 49e34b: 74 12 je 49e35f : { : LockBuffer(otherBuffer, BUFFER_LOCK_UNLOCK); 0.00 : 49e34d: 31 f6 xor %esi,%esi 0.00 : 49e34f: 44 89 ff mov %r15d,%edi 0.00 : 49e352: e8 b9 63 1d 00 callq 674710 : ReleaseBuffer(buffer); 0.00 : 49e357: 44 89 e7 mov %r12d,%edi 0.00 : 49e35a: e8 01 6b 1d 00 callq 674e60 : } : : /* Without FSM, always fall out of the loop and extend */ : if (!use_fsm) 0.00 : 49e35f: 80 7d bb 00 cmpb $0x0,-0x45(%rbp) 0.00 : 49e363: 0f 84 ef 00 00 00 je 49e458 : : /* : * Update FSM as to condition of this page, and ask for another page : * to try. : */ : targetBlock = RecordAndGetPageWithFreeSpace(relation, 0.00 : 49e369: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 49e36d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e371: 44 89 ee mov %r13d,%esi 0.00 : 49e374: 48 89 da mov %rbx,%rdx 0.00 : 49e377: e8 c4 e5 1d 00 callq 67c940 : if (nblocks > 0) : targetBlock = nblocks - 1; : } : } : : while (targetBlock != InvalidBlockNumber) 0.00 : 49e37c: 83 f8 ff cmp $0xffffffff,%eax : : /* : * Update FSM as to condition of this page, and ask for another page : * to try. : */ : targetBlock = RecordAndGetPageWithFreeSpace(relation, 0.00 : 49e37f: 41 89 c5 mov %eax,%r13d : if (nblocks > 0) : targetBlock = nblocks - 1; : } : } : : while (targetBlock != InvalidBlockNumber) 0.00 : 49e382: 0f 84 d0 00 00 00 je 49e458 : * want to do any I/O while in that state. So we check the bit here : * before taking the lock, and pin the page if it appears necessary. : * Checking without the lock creates a risk of getting the wrong : * answer, so we'll have to recheck after acquiring the lock. : */ : if (otherBuffer == InvalidBuffer) 0.00 : 49e388: 45 85 ff test %r15d,%r15d 0.00 : 49e38b: 0f 85 ef fe ff ff jne 49e280 : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); 0.00 : 49e391: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49e395: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e399: 44 89 ee mov %r13d,%esi 0.00 : 49e39c: e8 1f fd ff ff callq 49e0c0 : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e3a1: 85 c0 test %eax,%eax : * answer, so we'll have to recheck after acquiring the lock. : */ : if (otherBuffer == InvalidBuffer) : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); 0.00 : 49e3a3: 41 89 c4 mov %eax,%r12d : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e3a6: 0f 88 6c 02 00 00 js 49e618 0.00 : 49e3ac: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e3b1: 48 98 cltq 0.00 : 49e3b3: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e3b7: 48 03 05 3a 17 72 00 add 0x72173a(%rip),%rax # bbfaf8 0.00 : 49e3be: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49e3c2: 0f 85 38 02 00 00 jne 49e600 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e3c8: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e3cd: 44 89 e7 mov %r12d,%edi 0.00 : 49e3d0: e8 3b 63 1d 00 callq 674710 : * retake the buffer locks, the visibility map bit will have been : * cleared by some other backend anyway. In that case, we'll have : * done a bit of extra work for no gain, but there's no real harm : * done. : */ : if (otherBuffer == InvalidBuffer || buffer <= otherBuffer) 0.00 : 49e3d5: 45 85 ff test %r15d,%r15d 0.00 : 49e3d8: 41 0f 94 c6 sete %r14b : GetVisibilityMapPins(relation, buffer, otherBuffer, 0.00 : 49e3dc: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 49e3e0: 4c 8b 4d 98 mov -0x68(%rbp),%r9 0.00 : 49e3e4: 44 89 e9 mov %r13d,%ecx 0.00 : 49e3e7: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 49e3eb: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e3ef: 44 89 fa mov %r15d,%edx 0.00 : 49e3f2: 44 89 e6 mov %r12d,%esi 0.00 : 49e3f5: 48 89 04 24 mov %rax,(%rsp) 0.00 : 49e3f9: e8 b2 fa ff ff callq 49deb0 : : /* : * Now we can check to see if there's enough free space here. If so, : * we're done. : */ : page = BufferGetPage(buffer); 0.00 : 49e3fe: 45 85 e4 test %r12d,%r12d 0.00 : 49e401: 0f 89 0c ff ff ff jns 49e313 0.00 : 49e407: 44 89 e0 mov %r12d,%eax 0.00 : 49e40a: 48 8b 15 07 ed 6d 00 mov 0x6ded07(%rip),%rdx # b7d118 0.00 : 49e411: f7 d0 not %eax 0.00 : 49e413: 48 98 cltq 0.00 : 49e415: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 49e419: e9 08 ff ff ff jmpq 49e326 0.00 : 49e41e: 66 90 xchg %ax,%ax : else if (bistate && bistate->current_buf != InvalidBuffer) : targetBlock = BufferGetBlockNumber(bistate->current_buf); : else : targetBlock = RelationGetTargetBlock(relation); : : if (targetBlock == InvalidBlockNumber && use_fsm) 0.00 : 49e420: 84 c0 test %al,%al 0.00 : 49e422: 0f 84 2b fe ff ff je 49e253 : { : /* : * We have no cached target page, so ask the FSM for an initial : * target. : */ : targetBlock = GetPageWithFreeSpace(relation, len + saveFreeSpace); 0.00 : 49e428: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 49e42c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e430: e8 ab e5 1d 00 callq 67c9e0 : /* : * If the FSM knows nothing of the rel, try the last page before we : * give up and extend. This avoids one-tuple-per-page syndrome during : * bootstrapping or in a recently-started system. : */ : if (targetBlock == InvalidBlockNumber) 0.00 : 49e435: 83 f8 ff cmp $0xffffffff,%eax : { : /* : * We have no cached target page, so ask the FSM for an initial : * target. : */ : targetBlock = GetPageWithFreeSpace(relation, len + saveFreeSpace); 0.00 : 49e438: 41 89 c5 mov %eax,%r13d : /* : * If the FSM knows nothing of the rel, try the last page before we : * give up and extend. This avoids one-tuple-per-page syndrome during : * bootstrapping or in a recently-started system. : */ : if (targetBlock == InvalidBlockNumber) 0.00 : 49e43b: 0f 85 1c fe ff ff jne 49e25d : { : BlockNumber nblocks = RelationGetNumberOfBlocks(relation); 0.00 : 49e441: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e445: 31 f6 xor %esi,%esi 0.00 : 49e447: e8 44 72 1d 00 callq 675690 : : if (nblocks > 0) 0.00 : 49e44c: 85 c0 test %eax,%eax 0.00 : 49e44e: 0f 85 cf 02 00 00 jne 49e723 0.00 : 49e454: 0f 1f 40 00 nopl 0x0(%rax) : * We have to use a lock to ensure no one else is extending the rel at the : * same time, else we will both try to initialize the same new page. We : * can skip locking for new or temp relations, however, since no one else : * could be accessing them. : */ : needLock = !RELATION_IS_LOCAL(relation); 0.00 : 49e458: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e45c: 48 b8 ff 00 00 00 ff movabs $0xffffffff000000ff,%rax 0.00 : 49e463: ff ff ff 0.00 : 49e466: 48 85 42 20 test %rax,0x20(%rdx) : : if (needLock) 0.00 : 49e46a: 0f 94 c3 sete %bl 0.00 : 49e46d: 0f 84 e5 00 00 00 je 49e558 : * XXX This does an lseek - rather expensive - but at the moment it is the : * only way to accurately determine how many blocks are in a relation. Is : * it worth keeping an accurate file length in shared memory someplace, : * rather than relying on the kernel to do it for us? : */ : buffer = ReadBufferBI(relation, P_NEW, bistate); 0.00 : 49e473: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49e477: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e47b: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 49e480: e8 3b fc ff ff callq 49e0c0 : : /* : * We can be certain that locking the otherBuffer first is OK, since it : * must have a lower page number. : */ : if (otherBuffer != InvalidBuffer) 0.00 : 49e485: 45 85 ff test %r15d,%r15d : * XXX This does an lseek - rather expensive - but at the moment it is the : * only way to accurately determine how many blocks are in a relation. Is : * it worth keeping an accurate file length in shared memory someplace, : * rather than relying on the kernel to do it for us? : */ : buffer = ReadBufferBI(relation, P_NEW, bistate); 0.00 : 49e488: 41 89 c4 mov %eax,%r12d : : /* : * We can be certain that locking the otherBuffer first is OK, since it : * must have a lower page number. : */ : if (otherBuffer != InvalidBuffer) 0.00 : 49e48b: 0f 85 af 00 00 00 jne 49e540 : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); : : /* : * Now acquire lock on the new page. : */ : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e491: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e496: 44 89 e7 mov %r12d,%edi 0.00 : 49e499: e8 72 62 1d 00 callq 674710 : * Release the file-extension lock; it's now OK for someone else to extend : * the relation some more. Note that we cannot release this lock before : * we have buffer lock on the new page, or we risk a race condition : * against vacuumlazy.c --- see comments therein. : */ : if (needLock) 0.00 : 49e49e: 84 db test %bl,%bl 0.00 : 49e4a0: 75 7e jne 49e520 : /* : * We need to initialize the empty new page. Double-check that it really : * is empty (this should never happen, but if it does we don't want to : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); 0.00 : 49e4a2: 45 85 e4 test %r12d,%r12d 0.00 : 49e4a5: 0f 88 45 02 00 00 js 49e6f0 0.00 : 49e4ab: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e4b0: 48 63 d8 movslq %eax,%rbx 0.00 : 49e4b3: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 49e4b7: 48 03 1d 3a 16 72 00 add 0x72163a(%rip),%rbx # bbfaf8 : : if (!PageIsNew(page)) 0.00 : 49e4be: 66 83 7b 0e 00 cmpw $0x0,0xe(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:469 50.00 : 49e4c3: 0f 85 3e 03 00 00 jne 49e807 : elog(ERROR, "page %u of relation \"%s\" should be empty but is not", : BufferGetBlockNumber(buffer), : RelationGetRelationName(relation)); : : PageInit(page, BufferGetPageSize(buffer), 0); 0.00 : 49e4c9: 31 d2 xor %edx,%edx 0.00 : 49e4cb: be 00 20 00 00 mov $0x2000,%esi 0.00 : 49e4d0: 48 89 df mov %rbx,%rdi 0.00 : 49e4d3: e8 68 7d 1f 00 callq 696240 : : if (len > PageGetHeapFreeSpace(page)) 0.00 : 49e4d8: 48 89 df mov %rbx,%rdi 0.00 : 49e4db: e8 80 68 1f 00 callq 694d60 0.00 : 49e4e0: 48 39 45 c0 cmp %rax,-0x40(%rbp) 0.00 : 49e4e4: 0f 87 ef 02 00 00 ja 49e7d9 : * or just keep it for this backend's exclusive use in the short run : * (until VACUUM sees it)? Seems to depend on whether you expect the : * current backend to make more insertions or not, which is probably a : * good bet most of the time. So for now, don't add it to FSM yet. : */ : RelationSetTargetBlock(relation, BufferGetBlockNumber(buffer)); 0.00 : 49e4ea: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e4ee: 48 8b 5a 10 mov 0x10(%rdx),%rbx 0.00 : 49e4f2: 48 85 db test %rbx,%rbx 0.00 : 49e4f5: 0f 84 31 02 00 00 je 49e72c 0.00 : 49e4fb: 44 89 e7 mov %r12d,%edi 0.00 : 49e4fe: e8 2d 5b 1d 00 callq 674030 0.00 : 49e503: 89 43 18 mov %eax,0x18(%rbx) : : return buffer; : } 0.00 : 49e506: 48 83 c4 48 add $0x48,%rsp 0.00 : 49e50a: 44 89 e0 mov %r12d,%eax 0.00 : 49e50d: 5b pop %rbx 0.00 : 49e50e: 41 5c pop %r12 0.00 : 49e510: 41 5d pop %r13 0.00 : 49e512: 41 5e pop %r14 0.00 : 49e514: 41 5f pop %r15 0.00 : 49e516: c9 leaveq 0.00 : 49e517: c3 retq 0.00 : 49e518: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49e51f: 00 : * the relation some more. Note that we cannot release this lock before : * we have buffer lock on the new page, or we risk a race condition : * against vacuumlazy.c --- see comments therein. : */ : if (needLock) : UnlockRelationForExtension(relation, ExclusiveLock); 0.00 : 49e520: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e524: be 07 00 00 00 mov $0x7,%esi 0.00 : 49e529: e8 62 96 1e 00 callq 687b90 : /* : * We need to initialize the empty new page. Double-check that it really : * is empty (this should never happen, but if it does we don't want to : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); 0.00 : 49e52e: 45 85 e4 test %r12d,%r12d 0.00 : 49e531: 0f 89 74 ff ff ff jns 49e4ab 0.00 : 49e537: e9 b4 01 00 00 jmpq 49e6f0 0.00 : 49e53c: 0f 1f 40 00 nopl 0x0(%rax) : /* : * We can be certain that locking the otherBuffer first is OK, since it : * must have a lower page number. : */ : if (otherBuffer != InvalidBuffer) : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e540: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e545: 44 89 ff mov %r15d,%edi 0.00 : 49e548: e8 c3 61 1d 00 callq 674710 0.00 : 49e54d: 0f 1f 00 nopl (%rax) 0.00 : 49e550: e9 3c ff ff ff jmpq 49e491 0.00 : 49e555: 0f 1f 00 nopl (%rax) : * could be accessing them. : */ : needLock = !RELATION_IS_LOCAL(relation); : : if (needLock) : LockRelationForExtension(relation, ExclusiveLock); 0.00 : 49e558: be 07 00 00 00 mov $0x7,%esi 0.00 : 49e55d: 48 89 d7 mov %rdx,%rdi 0.00 : 49e560: e8 db 98 1e 00 callq 687e40 0.00 : 49e565: e9 09 ff ff ff jmpq 49e473 0.00 : 49e56a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e570: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e574: 44 89 ee mov %r13d,%esi 0.00 : 49e577: e8 24 81 1d 00 callq 6766a0 : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e57c: 85 c0 test %eax,%eax : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e57e: 41 89 c4 mov %eax,%r12d : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e581: 0f 88 d9 00 00 00 js 49e660 0.00 : 49e587: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e58c: 48 98 cltq 0.00 : 49e58e: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e592: 48 03 05 5f 15 72 00 add 0x72155f(%rip),%rax # bbfaf8 0.00 : 49e599: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49e59d: 0f 85 8d 00 00 00 jne 49e630 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e5a3: 44 89 e7 mov %r12d,%edi 0.00 : 49e5a6: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e5ab: e8 60 61 1d 00 callq 674710 : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e5b0: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e5b5: 44 89 ff mov %r15d,%edi 0.00 : 49e5b8: e8 53 61 1d 00 callq 674710 0.00 : 49e5bd: e9 1b fd ff ff jmpq 49e2dd 0.00 : 49e5c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e5c8: 45 85 ff test %r15d,%r15d 0.00 : 49e5cb: 0f 88 d7 00 00 00 js 49e6a8 0.00 : 49e5d1: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 49e5d5: 48 03 05 1c 15 72 00 add 0x72151c(%rip),%rax # bbfaf8 0.00 : 49e5dc: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49e5e0: 0f 85 aa 00 00 00 jne 49e690 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e5e6: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e5eb: 44 89 ff mov %r15d,%edi 0.00 : 49e5ee: 45 89 fc mov %r15d,%r12d 0.00 : 49e5f1: e8 1a 61 1d 00 callq 674710 0.00 : 49e5f6: e9 da fd ff ff jmpq 49e3d5 0.00 : 49e5fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (otherBuffer == InvalidBuffer) : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e600: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e604: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e608: 44 89 ee mov %r13d,%esi 0.00 : 49e60b: e8 b0 5e 00 00 callq 4a44c0 0.00 : 49e610: e9 b3 fd ff ff jmpq 49e3c8 0.00 : 49e615: 0f 1f 00 nopl (%rax) : */ : if (otherBuffer == InvalidBuffer) : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e618: 48 8b 15 f9 ea 6d 00 mov 0x6deaf9(%rip),%rdx # b7d118 0.00 : 49e61f: f7 d0 not %eax 0.00 : 49e621: 48 98 cltq 0.00 : 49e623: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 49e627: e9 92 fd ff ff jmpq 49e3be 0.00 : 49e62c: 0f 1f 40 00 nopl 0x0(%rax) : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e630: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e634: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e638: 44 89 ee mov %r13d,%esi 0.00 : 49e63b: e8 80 5e 00 00 callq 4a44c0 0.00 : 49e640: e9 5e ff ff ff jmpq 49e5a3 0.00 : 49e645: 0f 1f 00 nopl (%rax) : else if (otherBlock < targetBlock) : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e648: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e64c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e650: 44 89 ee mov %r13d,%esi 0.00 : 49e653: e8 68 5e 00 00 callq 4a44c0 0.00 : 49e658: e9 66 fc ff ff jmpq 49e2c3 0.00 : 49e65d: 0f 1f 00 nopl (%rax) : } : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e660: 48 8b 15 b1 ea 6d 00 mov 0x6deab1(%rip),%rdx # b7d118 0.00 : 49e667: f7 d0 not %eax 0.00 : 49e669: 48 98 cltq 0.00 : 49e66b: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 49e66f: e9 25 ff ff ff jmpq 49e599 0.00 : 49e674: 0f 1f 40 00 nopl 0x0(%rax) : } : else if (otherBlock < targetBlock) : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e678: 48 8b 15 99 ea 6d 00 mov 0x6dea99(%rip),%rdx # b7d118 0.00 : 49e67f: f7 d0 not %eax 0.00 : 49e681: 48 98 cltq 0.00 : 49e683: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 49e687: e9 2d fc ff ff jmpq 49e2b9 0.00 : 49e68c: 0f 1f 40 00 nopl 0x0(%rax) : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e690: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e694: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e698: 44 89 ee mov %r13d,%esi 0.00 : 49e69b: e8 20 5e 00 00 callq 4a44c0 0.00 : 49e6a0: e9 41 ff ff ff jmpq 49e5e6 0.00 : 49e6a5: 0f 1f 00 nopl (%rax) : } : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e6a8: 48 8b 05 69 ea 6d 00 mov 0x6dea69(%rip),%rax # b7d118 0.00 : 49e6af: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 49e6b3: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 49e6b7: e9 20 ff ff ff jmpq 49e5dc 0.00 : 49e6bc: 0f 1f 40 00 nopl 0x0(%rax) : page = BufferGetPage(buffer); : pageFreeSpace = PageGetHeapFreeSpace(page); : if (len + saveFreeSpace <= pageFreeSpace) : { : /* use this page as future insert target, too */ : RelationSetTargetBlock(relation, targetBlock); 0.00 : 49e6c0: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e6c4: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 49e6c8: 48 85 c0 test %rax,%rax 0.00 : 49e6cb: 0f 84 89 00 00 00 je 49e75a 0.00 : 49e6d1: 44 89 68 18 mov %r13d,0x18(%rax) : * good bet most of the time. So for now, don't add it to FSM yet. : */ : RelationSetTargetBlock(relation, BufferGetBlockNumber(buffer)); : : return buffer; : } 0.00 : 49e6d5: e9 2c fe ff ff jmpq 49e506 0.00 : 49e6da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* Compute desired extra freespace due to fillfactor option */ : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : if (otherBuffer != InvalidBuffer) : otherBlock = BufferGetBlockNumber(otherBuffer); 0.00 : 49e6e0: 44 89 ff mov %r15d,%edi 0.00 : 49e6e3: e8 48 59 1d 00 callq 674030 0.00 : 49e6e8: 89 45 bc mov %eax,-0x44(%rbp) 0.00 : 49e6eb: e9 ff fa ff ff jmpq 49e1ef : /* : * We need to initialize the empty new page. Double-check that it really : * is empty (this should never happen, but if it does we don't want to : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); 0.00 : 49e6f0: 44 89 e0 mov %r12d,%eax 0.00 : 49e6f3: 48 8b 15 1e ea 6d 00 mov 0x6dea1e(%rip),%rdx # b7d118 0.00 : 49e6fa: f7 d0 not %eax 0.00 : 49e6fc: 48 98 cltq 0.00 : 49e6fe: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 49e702: e9 b7 fd ff ff jmpq 49e4be 0.00 : 49e707: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49e70e: 00 00 : /* can't fit, don't bother asking FSM */ : targetBlock = InvalidBlockNumber; : use_fsm = false; : } : else if (bistate && bistate->current_buf != InvalidBuffer) : targetBlock = BufferGetBlockNumber(bistate->current_buf); 0.00 : 49e710: e8 1b 59 1d 00 callq 674030 0.00 : 49e715: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 49e718: 41 89 c5 mov %eax,%r13d 0.00 : 49e71b: 0f 94 c0 sete %al : { : /* can't fit, don't bother asking FSM */ : targetBlock = InvalidBlockNumber; : use_fsm = false; : } : else if (bistate && bistate->current_buf != InvalidBuffer) 0.00 : 49e71e: e9 1a fb ff ff jmpq 49e23d : if (targetBlock == InvalidBlockNumber) : { : BlockNumber nblocks = RelationGetNumberOfBlocks(relation); : : if (nblocks > 0) : targetBlock = nblocks - 1; 0.00 : 49e723: 44 8d 68 ff lea -0x1(%rax),%r13d 0.00 : 49e727: e9 27 fb ff ff jmpq 49e253 : * or just keep it for this backend's exclusive use in the short run : * (until VACUUM sees it)? Seems to depend on whether you expect the : * current backend to make more insertions or not, which is probably a : * good bet most of the time. So for now, don't add it to FSM yet. : */ : RelationSetTargetBlock(relation, BufferGetBlockNumber(buffer)); 0.00 : 49e72c: 48 89 d0 mov %rdx,%rax 0.00 : 49e72f: 8b 52 1c mov 0x1c(%rdx),%edx 0.00 : 49e732: 48 8b 38 mov (%rax),%rdi 0.00 : 49e735: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 49e738: e8 f3 b2 1f 00 callq 699a30 0.00 : 49e73d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e741: 48 89 c6 mov %rax,%rsi 0.00 : 49e744: 48 83 c7 10 add $0x10,%rdi 0.00 : 49e748: e8 b3 ab 1f 00 callq 699300 0.00 : 49e74d: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e751: 48 8b 5a 10 mov 0x10(%rdx),%rbx 0.00 : 49e755: e9 a1 fd ff ff jmpq 49e4fb : page = BufferGetPage(buffer); : pageFreeSpace = PageGetHeapFreeSpace(page); : if (len + saveFreeSpace <= pageFreeSpace) : { : /* use this page as future insert target, too */ : RelationSetTargetBlock(relation, targetBlock); 0.00 : 49e75a: 48 89 d0 mov %rdx,%rax 0.00 : 49e75d: 8b 52 1c mov 0x1c(%rdx),%edx 0.00 : 49e760: 48 8b 38 mov (%rax),%rdi 0.00 : 49e763: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 49e766: e8 c5 b2 1f 00 callq 699a30 0.00 : 49e76b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e76f: 48 89 c6 mov %rax,%rsi 0.00 : 49e772: 48 83 c7 10 add $0x10,%rdi 0.00 : 49e776: e8 85 ab 1f 00 callq 699300 0.00 : 49e77b: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e77f: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 49e783: e9 49 ff ff ff jmpq 49e6d1 : : /* : * If we're gonna fail for oversize tuple, do it right away : */ : if (len > MaxHeapTupleSize) : ereport(ERROR, 0.00 : 49e788: 45 31 c0 xor %r8d,%r8d 0.00 : 49e78b: b9 20 30 7b 00 mov $0x7b3020,%ecx 0.00 : 49e790: ba f1 00 00 00 mov $0xf1,%edx 0.00 : 49e795: be 70 2f 7b 00 mov $0x7b2f70,%esi 0.00 : 49e79a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 49e79f: e8 1c c3 2d 00 callq 77aac0 0.00 : 49e7a4: 84 c0 test %al,%al 0.00 : 49e7a6: 74 2c je 49e7d4 0.00 : 49e7a8: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 49e7ac: ba e0 1f 00 00 mov $0x1fe0,%edx 0.00 : 49e7b1: bf b0 2f 7b 00 mov $0x7b2fb0,%edi 0.00 : 49e7b6: 31 c0 xor %eax,%eax 0.00 : 49e7b8: e8 e3 e0 2d 00 callq 77c8a0 0.00 : 49e7bd: bf 05 01 00 00 mov $0x105,%edi 0.00 : 49e7c2: 89 c3 mov %eax,%ebx 0.00 : 49e7c4: e8 87 e5 2d 00 callq 77cd50 0.00 : 49e7c9: 89 de mov %ebx,%esi 0.00 : 49e7cb: 89 c7 mov %eax,%edi 0.00 : 49e7cd: 31 c0 xor %eax,%eax 0.00 : 49e7cf: e8 0c be 2d 00 callq 77a5e0 : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); : : if (!PageIsNew(page)) : elog(ERROR, "page %u of relation \"%s\" should be empty but is not", 0.00 : 49e7d4: e8 f7 ac fc ff callq 4694d0 : PageInit(page, BufferGetPageSize(buffer), 0); : : if (len > PageGetHeapFreeSpace(page)) : { : /* We should not get here given the test at the top */ : elog(PANIC, "tuple is too big: size %zu", len); 0.00 : 49e7d9: ba 20 30 7b 00 mov $0x7b3020,%edx 0.00 : 49e7de: be df 01 00 00 mov $0x1df,%esi 0.00 : 49e7e3: bf 70 2f 7b 00 mov $0x7b2f70,%edi 0.00 : 49e7e8: e8 33 cc 2d 00 callq 77b420 0.00 : 49e7ed: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 49e7f1: be 76 2f 7b 00 mov $0x7b2f76,%esi 0.00 : 49e7f6: bf 16 00 00 00 mov $0x16,%edi 0.00 : 49e7fb: 31 c0 xor %eax,%eax 0.00 : 49e7fd: e8 2e ca 2d 00 callq 77b230 0.00 : 49e802: e8 c9 ac fc ff callq 4694d0 : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); : : if (!PageIsNew(page)) : elog(ERROR, "page %u of relation \"%s\" should be empty but is not", 0.00 : 49e807: ba 20 30 7b 00 mov $0x7b3020,%edx 0.00 : 49e80c: be d8 01 00 00 mov $0x1d8,%esi 0.00 : 49e811: bf 70 2f 7b 00 mov $0x7b2f70,%edi 0.00 : 49e816: e8 05 cc 2d 00 callq 77b420 0.00 : 49e81b: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 49e81f: 44 89 e7 mov %r12d,%edi 0.00 : 49e822: 48 8b 58 30 mov 0x30(%rax),%rbx 0.00 : 49e826: e8 05 58 1d 00 callq 674030 0.00 : 49e82b: be e0 2f 7b 00 mov $0x7b2fe0,%esi 0.00 : 49e830: 89 c2 mov %eax,%edx 0.00 : 49e832: bf 14 00 00 00 mov $0x14,%edi 0.00 : 49e837: 48 89 d9 mov %rbx,%rcx 0.00 : 49e83a: 31 c0 xor %eax,%eax 0.00 : 49e83c: e8 ef c9 2d 00 callq 77b230 0.00 : 49e841: eb 91 jmp 49e7d4 : * retake the buffer locks, the visibility map bit will have been : * cleared by some other backend anyway. In that case, we'll have : * done a bit of extra work for no gain, but there's no real harm : * done. : */ : if (otherBuffer == InvalidBuffer || buffer <= otherBuffer) 0.00 : 49e843: 45 31 f6 xor %r14d,%r14d 0.00 : 49e846: e9 91 fb ff ff jmpq 49e3dc Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2203 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2203 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2203 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a7ea0 <_bt_isequal>: : * Rule is simple: NOT_NULL not equal NULL, NULL not equal NULL too. : */ : static bool : _bt_isequal(TupleDesc itupdesc, Page page, OffsetNumber offnum, : int keysz, ScanKey scankey) : { 0.00 : 4a7ea0: 55 push %rbp : int i; : : /* Better be comparing to a leaf item */ : Assert(P_ISLEAF((BTPageOpaque) PageGetSpecialPointer(page))); : : itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); 0.00 : 4a7ea1: 0f b7 d2 movzwl %dx,%edx : * Rule is simple: NOT_NULL not equal NULL, NULL not equal NULL too. : */ : static bool : _bt_isequal(TupleDesc itupdesc, Page page, OffsetNumber offnum, : int keysz, ScanKey scankey) : { 0.00 : 4a7ea4: 48 89 e5 mov %rsp,%rbp 0.00 : 4a7ea7: 41 57 push %r15 0.00 : 4a7ea9: 41 89 cf mov %ecx,%r15d 0.00 : 4a7eac: 41 56 push %r14 0.00 : 4a7eae: 49 89 fe mov %rdi,%r14 0.00 : 4a7eb1: 41 55 push %r13 0.00 : 4a7eb3: 41 54 push %r12 0.00 : 4a7eb5: 53 push %rbx 0.00 : 4a7eb6: 4c 89 c3 mov %r8,%rbx 0.00 : 4a7eb9: 48 83 ec 08 sub $0x8,%rsp : int i; : : /* Better be comparing to a leaf item */ : Assert(P_ISLEAF((BTPageOpaque) PageGetSpecialPointer(page))); : : itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); 0.00 : 4a7ebd: 0f b7 44 96 14 movzwl 0x14(%rsi,%rdx,4),%eax 0.00 : 4a7ec2: 25 ff 7f 00 00 and $0x7fff,%eax : : for (i = 1; i <= keysz; i++) 0.00 : 4a7ec7: 85 c9 test %ecx,%ecx : int i; : : /* Better be comparing to a leaf item */ : Assert(P_ISLEAF((BTPageOpaque) PageGetSpecialPointer(page))); : : itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); 0.00 : 4a7ec9: 4c 8d 24 06 lea (%rsi,%rax,1),%r12 : : for (i = 1; i <= keysz; i++) 0.00 : 4a7ecd: 0f 8e 2d 01 00 00 jle 4a8000 <_bt_isequal+0x160> 0.00 : 4a7ed3: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4a7ed9: eb 55 jmp 4a7f30 <_bt_isequal+0x90> 0.00 : 4a7edb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : bool isNull; : int32 result; : : attno = scankey->sk_attno; : Assert(attno == i); : datum = index_getattr(itup, attno, itupdesc, &isNull); 0.00 : 4a7ee0: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 4a7ee4: 48 0f bf d1 movswq %cx,%rdx 0.00 : 4a7ee8: 48 8b 7c d0 f8 mov -0x8(%rax,%rdx,8),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:2203 33.33 : 4a7eed: 8b 77 54 mov 0x54(%rdi),%esi 0.00 : 4a7ef0: 85 f6 test %esi,%esi 0.00 : 4a7ef2: 0f 88 b8 00 00 00 js 4a7fb0 <_bt_isequal+0x110> 0.00 : 4a7ef8: 80 7f 5c 00 cmpb $0x0,0x5c(%rdi) 0.00 : 4a7efc: 48 63 c6 movslq %esi,%rax 0.00 : 4a7eff: 49 8d 54 04 08 lea 0x8(%r12,%rax,1),%rdx 0.00 : 4a7f04: 75 7a jne 4a7f80 <_bt_isequal+0xe0> : : /* NULLs are never equal to anything */ : if (isNull || (scankey->sk_flags & SK_ISNULL)) 0.00 : 4a7f06: f6 03 01 testb $0x1,(%rbx) 0.00 : 4a7f09: 75 4e jne 4a7f59 <_bt_isequal+0xb9> : return false; : : result = DatumGetInt32(FunctionCall2Coll(&scankey->sk_func, 0.00 : 4a7f0b: 48 8b 4b 40 mov 0x40(%rbx),%rcx 0.00 : 4a7f0f: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 4a7f12: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 4a7f16: e8 15 61 2d 00 callq 77e030 : scankey->sk_collation, : datum, : scankey->sk_argument)); : : if (result != 0) 0.00 : 4a7f1b: 85 c0 test %eax,%eax 0.00 : 4a7f1d: 75 3a jne 4a7f59 <_bt_isequal+0xb9> : /* Better be comparing to a leaf item */ : Assert(P_ISLEAF((BTPageOpaque) PageGetSpecialPointer(page))); : : itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); : : for (i = 1; i <= keysz; i++) 0.00 : 4a7f1f: 41 83 c5 01 add $0x1,%r13d 0.00 : 4a7f23: 45 39 ef cmp %r13d,%r15d 0.00 : 4a7f26: 0f 8c d4 00 00 00 jl 4a8000 <_bt_isequal+0x160> : scankey->sk_argument)); : : if (result != 0) : return false; : : scankey++; 0.00 : 4a7f2c: 48 83 c3 48 add $0x48,%rbx : bool isNull; : int32 result; : : attno = scankey->sk_attno; : Assert(attno == i); : datum = index_getattr(itup, attno, itupdesc, &isNull); 33.33 : 4a7f30: 66 41 83 7c 24 06 00 cmpw $0x0,0x6(%r12) : AttrNumber attno; : Datum datum; : bool isNull; : int32 result; : : attno = scankey->sk_attno; 0.00 : 4a7f37: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx : Assert(attno == i); : datum = index_getattr(itup, attno, itupdesc, &isNull); 0.00 : 4a7f3b: 79 a3 jns 4a7ee0 <_bt_isequal+0x40> 0.00 : 4a7f3d: 0f bf f1 movswl %cx,%esi 0.00 : 4a7f40: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4a7f43: 89 c8 mov %ecx,%eax 0.00 : 4a7f45: 83 e1 07 and $0x7,%ecx 0.00 : 4a7f48: c1 f8 03 sar $0x3,%eax 0.00 : 4a7f4b: 48 98 cltq 0.00 : 4a7f4d: 41 0f be 44 04 08 movsbl 0x8(%r12,%rax,1),%eax 0.00 : 4a7f53: d3 f8 sar %cl,%eax 0.00 : 4a7f55: a8 01 test $0x1,%al 0.00 : 4a7f57: 75 17 jne 4a7f70 <_bt_isequal+0xd0> : scankey++; : } : : /* if we get here, the keys are equal */ : return true; : } 0.00 : 4a7f59: 48 83 c4 08 add $0x8,%rsp : scankey->sk_argument)); : : if (result != 0) : return false; : : scankey++; 0.00 : 4a7f5d: 31 c0 xor %eax,%eax : } : : /* if we get here, the keys are equal */ : return true; : } 0.00 : 4a7f5f: 5b pop %rbx 0.00 : 4a7f60: 41 5c pop %r12 0.00 : 4a7f62: 41 5d pop %r13 0.00 : 4a7f64: 41 5e pop %r14 0.00 : 4a7f66: 41 5f pop %r15 0.00 : 4a7f68: c9 leaveq 0.00 : 4a7f69: c3 retq 0.00 : 4a7f6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : bool isNull; : int32 result; : : attno = scankey->sk_attno; : Assert(attno == i); : datum = index_getattr(itup, attno, itupdesc, &isNull); 0.00 : 4a7f70: 4c 89 f2 mov %r14,%rdx 0.00 : 4a7f73: 4c 89 e7 mov %r12,%rdi 0.00 : 4a7f76: e8 e5 8b fc ff callq 470b60 0.00 : 4a7f7b: 48 89 c2 mov %rax,%rdx 0.00 : 4a7f7e: eb 86 jmp 4a7f06 <_bt_isequal+0x66> 33.33 : 4a7f80: 0f b7 47 4c movzwl 0x4c(%rdi),%eax 0.00 : 4a7f84: 66 83 f8 08 cmp $0x8,%ax 0.00 : 4a7f88: 74 46 je 4a7fd0 <_bt_isequal+0x130> 0.00 : 4a7f8a: 66 83 f8 04 cmp $0x4,%ax 0.00 : 4a7f8e: 66 90 xchg %ax,%ax 0.00 : 4a7f90: 74 4e je 4a7fe0 <_bt_isequal+0x140> 0.00 : 4a7f92: 66 83 f8 02 cmp $0x2,%ax 0.00 : 4a7f96: 74 58 je 4a7ff0 <_bt_isequal+0x150> 0.00 : 4a7f98: 48 63 c6 movslq %esi,%rax 0.00 : 4a7f9b: 41 0f b6 54 04 08 movzbl 0x8(%r12,%rax,1),%edx 0.00 : 4a7fa1: e9 60 ff ff ff jmpq 4a7f06 <_bt_isequal+0x66> 0.00 : 4a7fa6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4a7fad: 00 00 00 0.00 : 4a7fb0: 4c 89 f2 mov %r14,%rdx 0.00 : 4a7fb3: 0f bf f1 movswl %cx,%esi 0.00 : 4a7fb6: 4c 89 e7 mov %r12,%rdi 0.00 : 4a7fb9: e8 a2 8b fc ff callq 470b60 0.00 : 4a7fbe: 48 89 c2 mov %rax,%rdx 0.00 : 4a7fc1: e9 40 ff ff ff jmpq 4a7f06 <_bt_isequal+0x66> 0.00 : 4a7fc6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4a7fcd: 00 00 00 0.00 : 4a7fd0: 48 63 c6 movslq %esi,%rax 0.00 : 4a7fd3: 49 8b 54 04 08 mov 0x8(%r12,%rax,1),%rdx 0.00 : 4a7fd8: e9 29 ff ff ff jmpq 4a7f06 <_bt_isequal+0x66> 0.00 : 4a7fdd: 0f 1f 00 nopl (%rax) 0.00 : 4a7fe0: 48 63 c6 movslq %esi,%rax 0.00 : 4a7fe3: 41 8b 54 04 08 mov 0x8(%r12,%rax,1),%edx 0.00 : 4a7fe8: e9 19 ff ff ff jmpq 4a7f06 <_bt_isequal+0x66> 0.00 : 4a7fed: 0f 1f 00 nopl (%rax) 0.00 : 4a7ff0: 48 63 c6 movslq %esi,%rax 0.00 : 4a7ff3: 41 0f b7 54 04 08 movzwl 0x8(%r12,%rax,1),%edx 0.00 : 4a7ff9: e9 08 ff ff ff jmpq 4a7f06 <_bt_isequal+0x66> 0.00 : 4a7ffe: 66 90 xchg %ax,%ax : scankey++; : } : : /* if we get here, the keys are equal */ : return true; : } 0.00 : 4a8000: 48 83 c4 08 add $0x8,%rsp : scankey->sk_argument)); : : if (result != 0) : return false; : : scankey++; 0.00 : 4a8004: b8 01 00 00 00 mov $0x1,%eax : } : : /* if we get here, the keys are equal */ : return true; : } 0.00 : 4a8009: 5b pop %rbx 0.00 : 4a800a: 41 5c pop %r12 0.00 : 4a800c: 41 5d pop %r13 0.00 : 4a800e: 41 5e pop %r14 0.00 : 4a8010: 41 5f pop %r15 0.00 : 4a8012: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:391 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:402 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:408 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004abc70 : : /* : * btbeginscan() -- start a scan on a btree index : */ : Datum : btbeginscan(PG_FUNCTION_ARGS) : { 33.33 : 4abc70: 55 push %rbp 0.00 : 4abc71: 48 89 e5 mov %rsp,%rbp 0.00 : 4abc74: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 4abc78: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 4abc7c: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 4abc80: 48 83 ec 20 sub $0x20,%rsp : Relation rel = (Relation) PG_GETARG_POINTER(0); 0.00 : 4abc84: 4c 8b 6f 20 mov 0x20(%rdi),%r13 : : /* no order by operators allowed */ : Assert(norderbys == 0); : : /* get the scan */ : scan = RelationGetIndexScan(rel, nkeys, norderbys); 0.00 : 4abc88: 48 8b 57 30 mov 0x30(%rdi),%rdx 0.00 : 4abc8c: 48 8b 77 28 mov 0x28(%rdi),%rsi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:402 33.33 : 4abc90: 4c 89 ef mov %r13,%rdi 0.00 : 4abc93: e8 c8 92 ff ff callq 4a4f60 : : /* allocate private workspace */ : so = (BTScanOpaque) palloc(sizeof(BTScanOpaqueData)); 0.00 : 4abc98: bf 70 20 00 00 mov $0x2070,%edi : : /* no order by operators allowed */ : Assert(norderbys == 0); : : /* get the scan */ : scan = RelationGetIndexScan(rel, nkeys, norderbys); 0.00 : 4abc9d: 49 89 c4 mov %rax,%r12 : : /* allocate private workspace */ : so = (BTScanOpaque) palloc(sizeof(BTScanOpaqueData)); 0.00 : 4abca0: e8 ab d0 2e 00 callq 798d50 0.00 : 4abca5: 48 89 c3 mov %rax,%rbx : so->currPos.buf = so->markPos.buf = InvalidBuffer; 0.00 : 4abca8: c7 80 60 10 00 00 00 movl $0x0,0x1060(%rax) 0.00 : 4abcaf: 00 00 00 0.00 : 4abcb2: c7 40 54 00 00 00 00 movl $0x0,0x54(%rax) : if (scan->numberOfKeys > 0) 0.00 : 4abcb9: 41 8b 44 24 18 mov 0x18(%r12),%eax 0.00 : 4abcbe: 85 c0 test %eax,%eax 0.00 : 4abcc0: 7f 7e jg 4abd40 : so->keyData = (ScanKey) palloc(scan->numberOfKeys * sizeof(ScanKeyData)); : else : so->keyData = NULL; 0.00 : 4abcc2: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 4abcc9: 00 : : so->arrayKeyData = NULL; /* assume no array keys for now */ 0.00 : 4abcca: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 4abcd1: 00 : so->numArrayKeys = 0; 0.00 : 4abcd2: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) : so->arrayKeys = NULL; 0.00 : 4abcd9: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 4abce0: 00 : so->arrayContext = NULL; 0.00 : 4abce1: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 4abce8: 00 : : so->killedItems = NULL; /* until needed */ 0.00 : 4abce9: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 4abcf0: 00 : so->numKilled = 0; 0.00 : 4abcf1: c7 43 38 00 00 00 00 movl $0x0,0x38(%rbx) : /* : * We don't know yet whether the scan will be index-only, so we do not : * allocate the tuple workspace arrays until btrescan. However, we set up : * scan->xs_itupdesc whether we'll need it or not, since that's so cheap. : */ : so->currTuples = so->markTuples = NULL; 0.00 : 4abcf8: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 4abcff: 00 0.00 : 4abd00: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 4abd07: 00 : so->currPos.nextTupleOffset = 0; 0.00 : 4abd08: c7 43 60 00 00 00 00 movl $0x0,0x60(%rbx) : so->markPos.nextTupleOffset = 0; 0.00 : 4abd0f: c7 83 6c 10 00 00 00 movl $0x0,0x106c(%rbx) 0.00 : 4abd16: 00 00 00 : : scan->xs_itupdesc = RelationGetDescr(rel); 0.00 : 4abd19: 49 8b 45 38 mov 0x38(%r13),%rax : : scan->opaque = so; 0.00 : 4abd1d: 49 89 5c 24 38 mov %rbx,0x38(%r12) : */ : so->currTuples = so->markTuples = NULL; : so->currPos.nextTupleOffset = 0; : so->markPos.nextTupleOffset = 0; : : scan->xs_itupdesc = RelationGetDescr(rel); 0.00 : 4abd22: 49 89 44 24 48 mov %rax,0x48(%r12) : : scan->opaque = so; : : PG_RETURN_POINTER(scan); : } 0.00 : 4abd27: 4c 89 e0 mov %r12,%rax 0.00 : 4abd2a: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 4abd2e: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 4abd32: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 4abd36: c9 leaveq 0.00 : 4abd37: c3 retq 0.00 : 4abd38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4abd3f: 00 : : /* allocate private workspace */ : so = (BTScanOpaque) palloc(sizeof(BTScanOpaqueData)); : so->currPos.buf = so->markPos.buf = InvalidBuffer; : if (scan->numberOfKeys > 0) : so->keyData = (ScanKey) palloc(scan->numberOfKeys * sizeof(ScanKeyData)); 0.00 : 4abd40: 48 63 f8 movslq %eax,%rdi 0.00 : 4abd43: 48 8d 3c ff lea (%rdi,%rdi,8),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:408 33.33 : 4abd47: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 4abd4b: e8 00 d0 2e 00 callq 798d50 0.00 : 4abd50: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4abd54: e9 71 ff ff ff jmpq 4abcca Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:353 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:353 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:357 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:357 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0070 : : /* : * TransactionIdFollowsOrEquals --- is id1 logically >= id2? : */ : bool : TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2) : { 0.00 : 4c0070: 55 push %rbp : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:353 40.00 : 4c0071: 83 ff 02 cmp $0x2,%edi : /* : * TransactionIdFollowsOrEquals --- is id1 logically >= id2? : */ : bool : TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2) : { 0.00 : 4c0074: 48 89 e5 mov %rsp,%rbp : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) 20.00 : 4c0077: 76 17 jbe 4c0090 0.00 : 4c0079: 83 fe 02 cmp $0x2,%esi 0.00 : 4c007c: 76 12 jbe 4c0090 : return (id1 >= id2); : : diff = (int32) (id1 - id2); : return (diff >= 0); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:357 20.00 : 4c007e: 29 f7 sub %esi,%edi : } 0.00 : 4c0080: c9 leaveq : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 >= id2); : : diff = (int32) (id1 - id2); : return (diff >= 0); 20.00 : 4c0081: f7 d7 not %edi 0.00 : 4c0083: 89 f8 mov %edi,%eax 0.00 : 4c0085: c1 e8 1f shr $0x1f,%eax : } 0.00 : 4c0088: c3 retq 0.00 : 4c0089: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2) : { : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 >= id2); 0.00 : 4c0090: 39 f7 cmp %esi,%edi : : diff = (int32) (id1 - id2); : return (diff >= 0); : } 0.00 : 4c0092: c9 leaveq : TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2) : { : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 >= id2); 0.00 : 4c0093: 0f 93 c0 setae %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:53 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0140 : : /* : * TransactionLogFetch --- fetch commit status of specified transaction id : */ : static XidStatus : TransactionLogFetch(TransactionId transactionId) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:53 100.00 : 4c0140: 55 push %rbp 0.00 : 4c0141: 48 89 e5 mov %rsp,%rbp 0.00 : 4c0144: 53 push %rbx 0.00 : 4c0145: 89 fb mov %edi,%ebx 0.00 : 4c0147: 48 83 ec 18 sub $0x18,%rsp : : /* : * Before going to the commit log manager, check our single item cache to : * see if we didn't just check the transaction status a moment ago. : */ : if (TransactionIdEquals(transactionId, cachedFetchXid)) 0.00 : 4c014b: 3b 3d 27 8c 6b 00 cmp 0x6b8c27(%rip),%edi # b78d78 0.00 : 4c0151: 74 55 je 4c01a8 : return cachedFetchXidStatus; : : /* : * Also, check to see if the transaction ID is a permanent one. : */ : if (!TransactionIdIsNormal(transactionId)) 0.00 : 4c0153: 83 ff 02 cmp $0x2,%edi 0.00 : 4c0156: 77 18 ja 4c0170 : { : if (TransactionIdEquals(transactionId, BootstrapTransactionId)) 0.00 : 4c0158: 83 ff 01 cmp $0x1,%edi 0.00 : 4c015b: 74 63 je 4c01c0 : return TRANSACTION_STATUS_COMMITTED; : if (TransactionIdEquals(transactionId, FrozenTransactionId)) 0.00 : 4c015d: 83 ff 02 cmp $0x2,%edi 0.00 : 4c0160: ba 02 00 00 00 mov $0x2,%edx 0.00 : 4c0165: 74 59 je 4c01c0 : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; : } : : return xidstatus; : } 0.00 : 4c0167: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c016b: 89 d0 mov %edx,%eax 0.00 : 4c016d: 5b pop %rbx 0.00 : 4c016e: c9 leaveq 0.00 : 4c016f: c3 retq : } : : /* : * Get the transaction status. : */ : xidstatus = TransactionIdGetStatus(transactionId, &xidlsn); 0.00 : 4c0170: 48 8d 75 f0 lea -0x10(%rbp),%rsi 0.00 : 4c0174: e8 a7 fd ff ff callq 4bff20 : : /* : * Cache it, but DO NOT cache status for unfinished or sub-committed : * transactions! We only cache status that is guaranteed not to change. : */ : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && 0.00 : 4c0179: 85 c0 test %eax,%eax : } : : /* : * Get the transaction status. : */ : xidstatus = TransactionIdGetStatus(transactionId, &xidlsn); 0.00 : 4c017b: 89 c2 mov %eax,%edx : : /* : * Cache it, but DO NOT cache status for unfinished or sub-committed : * transactions! We only cache status that is guaranteed not to change. : */ : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && 0.00 : 4c017d: 74 e8 je 4c0167 0.00 : 4c017f: 83 f8 03 cmp $0x3,%eax 0.00 : 4c0182: 74 e3 je 4c0167 : xidstatus != TRANSACTION_STATUS_SUB_COMMITTED) : { : cachedFetchXid = transactionId; : cachedFetchXidStatus = xidstatus; 0.00 : 4c0184: 89 05 f2 8b 6b 00 mov %eax,0x6b8bf2(%rip) # b78d7c : cachedCommitLSN = xidlsn; 0.00 : 4c018a: 48 8b 45 f0 mov -0x10(%rbp),%rax : * transactions! We only cache status that is guaranteed not to change. : */ : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && : xidstatus != TRANSACTION_STATUS_SUB_COMMITTED) : { : cachedFetchXid = transactionId; 0.00 : 4c018e: 89 1d e4 8b 6b 00 mov %ebx,0x6b8be4(%rip) # b78d78 : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; 0.00 : 4c0194: 48 89 05 e5 8b 6b 00 mov %rax,0x6b8be5(%rip) # b78d80 : } : : return xidstatus; : } 0.00 : 4c019b: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c019f: 89 d0 mov %edx,%eax 0.00 : 4c01a1: 5b pop %rbx 0.00 : 4c01a2: c9 leaveq 0.00 : 4c01a3: c3 retq 0.00 : 4c01a4: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Before going to the commit log manager, check our single item cache to : * see if we didn't just check the transaction status a moment ago. : */ : if (TransactionIdEquals(transactionId, cachedFetchXid)) : return cachedFetchXidStatus; 0.00 : 4c01a8: 8b 15 ce 8b 6b 00 mov 0x6b8bce(%rip),%edx # b78d7c : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; : } : : return xidstatus; : } 0.00 : 4c01ae: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c01b2: 5b pop %rbx 0.00 : 4c01b3: c9 leaveq 0.00 : 4c01b4: 89 d0 mov %edx,%eax 0.00 : 4c01b6: c3 retq 0.00 : 4c01b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4c01be: 00 00 : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && : xidstatus != TRANSACTION_STATUS_SUB_COMMITTED) : { : cachedFetchXid = transactionId; : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; 0.00 : 4c01c0: ba 01 00 00 00 mov $0x1,%edx : } : : return xidstatus; : } 0.00 : 4c01c5: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c01c9: 89 d0 mov %edx,%eax 0.00 : 4c01cb: 5b pop %rbx 0.00 : 4c01cc: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:4073 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0e90 : : /* : * TransactionBlockStatusCode - return status code to send in ReadyForQuery : */ : char : TransactionBlockStatusCode(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:4073 100.00 : 4c0e90: 55 push %rbp 0.00 : 4c0e91: 48 89 e5 mov %rsp,%rbp 0.00 : 4c0e94: 53 push %rbx 0.00 : 4c0e95: 48 83 ec 08 sub $0x8,%rsp : TransactionState s = CurrentTransactionState; 0.00 : 4c0e99: 48 8b 1d 88 6f 6a 00 mov 0x6a6f88(%rip),%rbx # b67e28 : : switch (s->blockState) 0.00 : 4c0ea0: 83 7b 18 11 cmpl $0x11,0x18(%rbx) 0.00 : 4c0ea4: 76 3a jbe 4c0ee0 : case TBLOCK_SUBABORT_RESTART: : return 'E'; /* in failed transaction */ : } : : /* should never get here */ : elog(FATAL, "invalid transaction block state: %s", 0.00 : 4c0ea6: ba 40 71 7b 00 mov $0x7b7140,%edx 0.00 : 4c0eab: be 07 10 00 00 mov $0x1007,%esi 0.00 : 4c0eb0: bf f6 82 7b 00 mov $0x7b82f6,%edi 0.00 : 4c0eb5: e8 66 a5 2b 00 callq 77b420 0.00 : 4c0eba: 8b 7b 18 mov 0x18(%rbx),%edi 0.00 : 4c0ebd: e8 5e fe ff ff callq 4c0d20 0.00 : 4c0ec2: be 08 75 7b 00 mov $0x7b7508,%esi 0.00 : 4c0ec7: 48 89 c2 mov %rax,%rdx 0.00 : 4c0eca: bf 15 00 00 00 mov $0x15,%edi 0.00 : 4c0ecf: 31 c0 xor %eax,%eax 0.00 : 4c0ed1: e8 5a a3 2b 00 callq 77b230 0.00 : 4c0ed6: e8 f5 85 fa ff callq 4694d0 0.00 : 4c0edb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : char : TransactionBlockStatusCode(void) : { : TransactionState s = CurrentTransactionState; : : switch (s->blockState) 0.00 : 4c0ee0: 48 63 4b 18 movslq 0x18(%rbx),%rcx 0.00 : 4c0ee4: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4c0ee9: b8 45 00 00 00 mov $0x45,%eax 0.00 : 4c0eee: 48 d3 e2 shl %cl,%rdx 0.00 : 4c0ef1: f7 c2 e0 e0 03 00 test $0x3e0e0,%edx 0.00 : 4c0ef7: 74 07 je 4c0f00 : : /* should never get here */ : elog(FATAL, "invalid transaction block state: %s", : BlockStateAsString(s->blockState)); : return 0; /* keep compiler quiet */ : } 0.00 : 4c0ef9: 48 83 c4 08 add $0x8,%rsp 0.00 : 4c0efd: 5b pop %rbx 0.00 : 4c0efe: c9 leaveq 0.00 : 4c0eff: c3 retq : char : TransactionBlockStatusCode(void) : { : TransactionState s = CurrentTransactionState; : : switch (s->blockState) 0.00 : 4c0f00: f7 c2 1c 1f 00 00 test $0x1f1c,%edx 0.00 : 4c0f06: b8 54 00 00 00 mov $0x54,%eax 0.00 : 4c0f0b: 75 ec jne 4c0ef9 0.00 : 4c0f0d: 83 e2 03 and $0x3,%edx : case TBLOCK_SUBABORT_RESTART: : return 'E'; /* in failed transaction */ : } : : /* should never get here */ : elog(FATAL, "invalid transaction block state: %s", 0.00 : 4c0f10: b8 49 00 00 00 mov $0x49,%eax : char : TransactionBlockStatusCode(void) : { : TransactionState s = CurrentTransactionState; : : switch (s->blockState) 0.00 : 4c0f15: 75 e2 jne 4c0ef9 0.00 : 4c0f17: eb 8d jmp 4c0ea6 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/multixact.c:596 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/multixact.c:632 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c6e70 : : * The value to set is the next-to-be-assigned MultiXactId, so this is meant to : * be called just before doing any such possibly-MultiXactId-able operation. : */ : void : MultiXactIdSetOldestMember(void) : { 0.00 : 4c6e70: 55 push %rbp : if (!MultiXactIdIsValid(OldestMemberMXactId[MyBackendId])) 0.00 : 4c6e71: 48 63 15 90 1c 6a 00 movslq 0x6a1c90(%rip),%rdx # b68b08 0.00 : 4c6e78: 48 8b 05 61 22 6b 00 mov 0x6b2261(%rip),%rax # b790e0 : * The value to set is the next-to-be-assigned MultiXactId, so this is meant to : * be called just before doing any such possibly-MultiXactId-able operation. : */ : void : MultiXactIdSetOldestMember(void) : { 0.00 : 4c6e7f: 48 89 e5 mov %rsp,%rbp : if (!MultiXactIdIsValid(OldestMemberMXactId[MyBackendId])) 0.00 : 4c6e82: 8b 04 90 mov (%rax,%rdx,4),%eax 50.00 : 4c6e85: 85 c0 test %eax,%eax 0.00 : 4c6e87: 74 07 je 4c6e90 : LWLockRelease(MultiXactGenLock); : : debug_elog4(DEBUG2, "MultiXact: setting OldestMember[%d] = %u", : MyBackendId, nextMXact); : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/multixact.c:632 50.00 : 4c6e89: c9 leaveq 0.00 : 4c6e8a: c3 retq 0.00 : 4c6e8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Note that a shared lock is sufficient, because it's enough to stop : * someone from advancing nextMXact; and nobody else could be trying : * to write to our OldestMember entry, only reading (and we assume : * storing it is atomic.) : */ : LWLockAcquire(MultiXactGenLock, LW_SHARED); 0.00 : 4c6e90: 48 8b 3d 69 6b 6b 00 mov 0x6b6b69(%rip),%rdi # b7da00 0.00 : 4c6e97: be 01 00 00 00 mov $0x1,%esi 0.00 : 4c6e9c: 48 81 c7 a0 01 00 00 add $0x1a0,%rdi 0.00 : 4c6ea3: e8 48 8c 1c 00 callq 68faf0 : /* : * We have to beware of the possibility that nextMXact is in the : * wrapped-around state. We don't fix the counter itself here, but we : * must be sure to store a valid value in our array entry. : */ : nextMXact = MultiXactState->nextMXact; 0.00 : 4c6ea8: 48 8b 05 29 22 6b 00 mov 0x6b2229(%rip),%rax # b790d8 : if (nextMXact < FirstMultiXactId) : nextMXact = FirstMultiXactId; : : OldestMemberMXactId[MyBackendId] = nextMXact; 0.00 : 4c6eaf: 48 63 0d 52 1c 6a 00 movslq 0x6a1c52(%rip),%rcx # b68b08 : /* : * We have to beware of the possibility that nextMXact is in the : * wrapped-around state. We don't fix the counter itself here, but we : * must be sure to store a valid value in our array entry. : */ : nextMXact = MultiXactState->nextMXact; 0.00 : 4c6eb6: 8b 10 mov (%rax),%edx : if (nextMXact < FirstMultiXactId) 0.00 : 4c6eb8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4c6ebd: 85 d2 test %edx,%edx 0.00 : 4c6ebf: 0f 44 d0 cmove %eax,%edx : nextMXact = FirstMultiXactId; : : OldestMemberMXactId[MyBackendId] = nextMXact; 0.00 : 4c6ec2: 48 8b 05 17 22 6b 00 mov 0x6b2217(%rip),%rax # b790e0 0.00 : 4c6ec9: 89 14 88 mov %edx,(%rax,%rcx,4) : : LWLockRelease(MultiXactGenLock); 0.00 : 4c6ecc: 48 8b 3d 2d 6b 6b 00 mov 0x6b6b2d(%rip),%rdi # b7da00 : : debug_elog4(DEBUG2, "MultiXact: setting OldestMember[%d] = %u", : MyBackendId, nextMXact); : } : } 0.00 : 4c6ed3: c9 leaveq : if (nextMXact < FirstMultiXactId) : nextMXact = FirstMultiXactId; : : OldestMemberMXactId[MyBackendId] = nextMXact; : : LWLockRelease(MultiXactGenLock); 0.00 : 4c6ed4: 48 81 c7 a0 01 00 00 add $0x1a0,%rdi 0.00 : 4c6edb: e9 c0 84 1c 00 jmpq 68f3a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 33.33 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 33.33 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1732 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e9280 : : FormIndexDatum(IndexInfo *indexInfo, : TupleTableSlot *slot, : EState *estate, : Datum *values, : bool *isnull) : { 0.00 : 4e9280: 55 push %rbp 0.00 : 4e9281: 48 89 e5 mov %rsp,%rbp 0.00 : 4e9284: 41 57 push %r15 0.00 : 4e9286: 4d 89 c7 mov %r8,%r15 0.00 : 4e9289: 41 56 push %r14 0.00 : 4e928b: 49 89 d6 mov %rdx,%r14 0.00 : 4e928e: 41 55 push %r13 0.00 : 4e9290: 49 89 fd mov %rdi,%r13 0.00 : 4e9293: 41 54 push %r12 0.00 : 4e9295: 53 push %rbx 0.00 : 4e9296: 48 83 ec 28 sub $0x28,%rsp 0.00 : 4e929a: 48 89 75 c0 mov %rsi,-0x40(%rbp) 0.00 : 4e929e: 48 89 4d b8 mov %rcx,-0x48(%rbp) : ListCell *indexpr_item; : int i; : : if (indexInfo->ii_Expressions != NIL && 0.00 : 4e92a2: 48 8b 7f 48 mov 0x48(%rdi),%rdi 0.00 : 4e92a6: 48 85 ff test %rdi,%rdi 0.00 : 4e92a9: 0f 84 b1 00 00 00 je 4e9360 0.00 : 4e92af: 49 8b 45 50 mov 0x50(%r13),%rax 0.00 : 4e92b3: 48 85 c0 test %rax,%rax 0.00 : 4e92b6: 0f 84 98 00 00 00 je 4e9354 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 4e92bc: 4c 8b 60 08 mov 0x8(%rax),%r12 : /* Check caller has set up context correctly */ : Assert(GetPerTupleExprContext(estate)->ecxt_scantuple == slot); : } : indexpr_item = list_head(indexInfo->ii_ExpressionsState); : : for (i = 0; i < indexInfo->ii_NumIndexAttrs; i++) 0.00 : 4e92c0: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 4e92c4: 85 d2 test %edx,%edx 0.00 : 4e92c6: 7e 78 jle 4e9340 0.00 : 4e92c8: 31 db xor %ebx,%ebx 0.00 : 4e92ca: eb 4a jmp 4e9316 0.00 : 4e92cc: 0f 1f 40 00 nopl 0x0(%rax) : else : { : /* : * Index expression --- need to evaluate it. : */ : if (indexpr_item == NULL) 0.00 : 4e92d0: 4d 85 e4 test %r12,%r12 0.00 : 4e92d3: 0f 84 9c 00 00 00 je 4e9375 : elog(ERROR, "wrong number of index expressions"); : iDatum = ExecEvalExprSwitchContext((ExprState *) lfirst(indexpr_item), 0.00 : 4e92d9: 49 8b b6 c8 00 00 00 mov 0xc8(%r14),%rsi 0.00 : 4e92e0: 48 85 f6 test %rsi,%rsi 0.00 : 4e92e3: 74 4b je 4e9330 0.00 : 4e92e5: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 4e92e9: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 4e92ed: 31 c9 xor %ecx,%ecx 0.00 : 4e92ef: e8 ec 3b 0c 00 callq 5acee0 : GetPerTupleExprContext(estate), : &isNull, : NULL); : indexpr_item = lnext(indexpr_item); 0.00 : 4e92f4: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : } : values[i] = iDatum; 0.00 : 4e92f9: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 4e92fd: 48 89 04 da mov %rax,(%rdx,%rbx,8) : isnull[i] = isNull; /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 33.33 : 4e9301: 0f b6 45 d7 movzbl -0x29(%rbp),%eax 33.33 : 4e9305: 41 88 04 1f mov %al,(%r15,%rbx,1) 0.00 : 4e9309: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : 4e930c: 48 83 c3 01 add $0x1,%rbx : /* Check caller has set up context correctly */ : Assert(GetPerTupleExprContext(estate)->ecxt_scantuple == slot); : } : indexpr_item = list_head(indexInfo->ii_ExpressionsState); : : for (i = 0; i < indexInfo->ii_NumIndexAttrs; i++) 0.00 : 4e9310: 41 39 45 04 cmp %eax,0x4(%r13) 0.00 : 4e9314: 7e 2a jle 4e9340 : { : int keycol = indexInfo->ii_KeyAttrNumbers[i]; 0.00 : 4e9316: 41 0f bf 74 5d 08 movswl 0x8(%r13,%rbx,2),%esi : Datum iDatum; : bool isNull; : : if (keycol != 0) 0.00 : 4e931c: 85 f6 test %esi,%esi 0.00 : 4e931e: 74 b0 je 4e92d0 : { : /* : * Plain index column; get the value we need directly from the : * heap tuple. : */ : iDatum = slot_getattr(slot, keycol, &isNull); 0.00 : 4e9320: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4e9324: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 4e9328: e8 d3 60 f8 ff callq 46f400 0.00 : 4e932d: eb ca jmp 4e92f9 0.00 : 4e932f: 90 nop : /* : * Index expression --- need to evaluate it. : */ : if (indexpr_item == NULL) : elog(ERROR, "wrong number of index expressions"); : iDatum = ExecEvalExprSwitchContext((ExprState *) lfirst(indexpr_item), 0.00 : 4e9330: 4c 89 f7 mov %r14,%rdi 0.00 : 4e9333: e8 78 c2 0c 00 callq 5b55b0 0.00 : 4e9338: 48 89 c6 mov %rax,%rsi 0.00 : 4e933b: eb a8 jmp 4e92e5 0.00 : 4e933d: 0f 1f 00 nopl (%rax) : } : values[i] = iDatum; : isnull[i] = isNull; : } : : if (indexpr_item != NULL) 0.00 : 4e9340: 4d 85 e4 test %r12,%r12 0.00 : 4e9343: 75 5a jne 4e939f : elog(ERROR, "wrong number of index expressions"); : } 0.00 : 4e9345: 48 83 c4 28 add $0x28,%rsp 0.00 : 4e9349: 5b pop %rbx 0.00 : 4e934a: 41 5c pop %r12 0.00 : 4e934c: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1732 33.33 : 4e934e: 41 5e pop %r14 0.00 : 4e9350: 41 5f pop %r15 0.00 : 4e9352: c9 leaveq 0.00 : 4e9353: c3 retq : : if (indexInfo->ii_Expressions != NIL && : indexInfo->ii_ExpressionsState == NIL) : { : /* First time through, set up expression evaluation state */ : indexInfo->ii_ExpressionsState = (List *) 0.00 : 4e9354: 48 89 d6 mov %rdx,%rsi 0.00 : 4e9357: e8 f4 5b 0c 00 callq 5aef50 0.00 : 4e935c: 49 89 45 50 mov %rax,0x50(%r13) : ExecPrepareExpr((Expr *) indexInfo->ii_Expressions, : estate); : /* Check caller has set up context correctly */ : Assert(GetPerTupleExprContext(estate)->ecxt_scantuple == slot); : } : indexpr_item = list_head(indexInfo->ii_ExpressionsState); 0.00 : 4e9360: 49 8b 45 50 mov 0x50(%r13),%rax 0.00 : 4e9364: 45 31 e4 xor %r12d,%r12d 0.00 : 4e9367: 48 85 c0 test %rax,%rax 0.00 : 4e936a: 0f 84 50 ff ff ff je 4e92c0 0.00 : 4e9370: e9 47 ff ff ff jmpq 4e92bc : { : /* : * Index expression --- need to evaluate it. : */ : if (indexpr_item == NULL) : elog(ERROR, "wrong number of index expressions"); 0.00 : 4e9375: ba a3 24 7c 00 mov $0x7c24a3,%edx 0.00 : 4e937a: be b7 06 00 00 mov $0x6b7,%esi : values[i] = iDatum; : isnull[i] = isNull; : } : : if (indexpr_item != NULL) : elog(ERROR, "wrong number of index expressions"); 0.00 : 4e937f: bf ca 1d 7c 00 mov $0x7c1dca,%edi 0.00 : 4e9384: e8 97 20 29 00 callq 77b420 0.00 : 4e9389: be 98 1e 7c 00 mov $0x7c1e98,%esi 0.00 : 4e938e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4e9393: 31 c0 xor %eax,%eax 0.00 : 4e9395: e8 96 1e 29 00 callq 77b230 0.00 : 4e939a: e8 31 01 f8 ff callq 4694d0 0.00 : 4e939f: ba a3 24 7c 00 mov $0x7c24a3,%edx 0.00 : 4e93a4: be c3 06 00 00 mov $0x6c3,%esi 0.00 : 4e93a9: eb d4 jmp 4e937f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_expr.c:126 50.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_expr.c:126 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000534820 : : return result; : } : : static Node * : transformExprRecurse(ParseState *pstate, Node *expr) : { /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_expr.c:126 50.00 : 534820: 55 push %rbp 50.00 : 534821: 48 89 e5 mov %rsp,%rbp 0.00 : 534824: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 534828: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 53482c: 49 89 f5 mov %rsi,%r13 0.00 : 53482f: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 534833: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 534837: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 53483b: 48 83 c4 80 add $0xffffffffffffff80,%rsp : Node *result; : : if (expr == NULL) 0.00 : 53483f: 48 85 f6 test %rsi,%rsi : return result; : } : : static Node * : transformExprRecurse(ParseState *pstate, Node *expr) : { 0.00 : 534842: 48 89 7d 90 mov %rdi,-0x70(%rbp) : Node *result; : : if (expr == NULL) 0.00 : 534846: 0f 84 74 01 00 00 je 5349c0 : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); 0.00 : 53484c: e8 8f 71 16 00 callq 69b9e0 : : switch (nodeTag(expr)) 0.00 : 534851: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 534855: 3d 4e 01 00 00 cmp $0x14e,%eax 0.00 : 53485a: 0f 84 c0 06 00 00 je 534f20 0.00 : 534860: 0f 86 1a 01 00 00 jbe 534980 0.00 : 534866: 3d 86 03 00 00 cmp $0x386,%eax 0.00 : 53486b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534870: 0f 84 12 04 00 00 je 534c88 0.00 : 534876: 66 90 xchg %ax,%ax 0.00 : 534878: 0f 87 e2 01 00 00 ja 534a60 0.00 : 53487e: 3d 53 01 00 00 cmp $0x153,%eax 0.00 : 534883: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534888: 0f 86 52 04 00 00 jbe 534ce0 0.00 : 53488e: 3d 84 03 00 00 cmp $0x384,%eax 0.00 : 534893: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534898: 0f 84 42 07 00 00 je 534fe0 0.00 : 53489e: 66 90 xchg %ax,%ax 0.00 : 5348a0: 0f 87 92 06 00 00 ja 534f38 0.00 : 5348a6: 3d 54 01 00 00 cmp $0x154,%eax 0.00 : 5348ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5348b0: 0f 85 5a 04 00 00 jne 534d10 : { : int sublevels_up; : : /* CURRENT OF can only appear at top level of UPDATE/DELETE */ : Assert(pstate->p_target_rangetblentry != NULL); : cexpr->cvarno = RTERangeTablePosn(pstate, 0.00 : 5348b6: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 5348ba: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 5348be: 48 8b b0 88 00 00 00 mov 0x88(%rax),%rsi 0.00 : 5348c5: 48 89 c7 mov %rax,%rdi 0.00 : 5348c8: e8 53 83 00 00 callq 53cc20 : /* : * Check to see if the cursor name matches a parameter of type REFCURSOR. : * If so, replace the raw name reference with a parameter reference. (This : * is a hack for the convenience of plpgsql.) : */ : if (cexpr->cursor_name != NULL) /* in case already transformed */ 0.00 : 5348cd: 49 83 7d 08 00 cmpq $0x0,0x8(%r13) : { : int sublevels_up; : : /* CURRENT OF can only appear at top level of UPDATE/DELETE */ : Assert(pstate->p_target_rangetblentry != NULL); : cexpr->cvarno = RTERangeTablePosn(pstate, 0.00 : 5348d2: 41 89 45 04 mov %eax,0x4(%r13) : /* : * Check to see if the cursor name matches a parameter of type REFCURSOR. : * If so, replace the raw name reference with a parameter reference. (This : * is a hack for the convenience of plpgsql.) : */ : if (cexpr->cursor_name != NULL) /* in case already transformed */ 0.00 : 5348d6: 0f 84 74 01 00 00 je 534a50 : { : ColumnRef *cref = makeNode(ColumnRef); 0.00 : 5348dc: 48 8b 3d 7d 5f 68 00 mov 0x685f7d(%rip),%rdi # bba860 0.00 : 5348e3: be 18 00 00 00 mov $0x18,%esi 0.00 : 5348e8: e8 23 45 26 00 callq 798e10 0.00 : 5348ed: c7 00 85 03 00 00 movl $0x385,(%rax) : Node *node = NULL; : : /* Build an unqualified ColumnRef with the given name */ : cref->fields = list_make1(makeString(cexpr->cursor_name)); 0.00 : 5348f3: 49 8b 7d 08 mov 0x8(%r13),%rdi : * If so, replace the raw name reference with a parameter reference. (This : * is a hack for the convenience of plpgsql.) : */ : if (cexpr->cursor_name != NULL) /* in case already transformed */ : { : ColumnRef *cref = makeNode(ColumnRef); 0.00 : 5348f7: 48 89 c3 mov %rax,%rbx : Node *node = NULL; : : /* Build an unqualified ColumnRef with the given name */ : cref->fields = list_make1(makeString(cexpr->cursor_name)); 0.00 : 5348fa: e8 f1 ad 0c 00 callq 5ff6f0 0.00 : 5348ff: 31 f6 xor %esi,%esi 0.00 : 534901: 48 89 c7 mov %rax,%rdi 0.00 : 534904: e8 47 cf 0a 00 callq 5e1850 : cref->location = -1; 0.00 : 534909: c7 43 10 ff ff ff ff movl $0xffffffff,0x10(%rbx) : { : ColumnRef *cref = makeNode(ColumnRef); : Node *node = NULL; : : /* Build an unqualified ColumnRef with the given name */ : cref->fields = list_make1(makeString(cexpr->cursor_name)); 0.00 : 534910: 48 89 43 08 mov %rax,0x8(%rbx) : cref->location = -1; : : /* See if there is a translation available from a parser hook */ : if (pstate->p_pre_columnref_hook != NULL) 0.00 : 534914: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 534918: 48 8b 82 90 00 00 00 mov 0x90(%rdx),%rax 0.00 : 53491f: 48 85 c0 test %rax,%rax 0.00 : 534922: 0f 84 00 01 00 00 je 534a28 : node = (*pstate->p_pre_columnref_hook) (pstate, cref); 0.00 : 534928: 48 89 de mov %rbx,%rsi 0.00 : 53492b: 48 89 d7 mov %rdx,%rdi 0.00 : 53492e: ff d0 callq *%rax : if (node == NULL && pstate->p_post_columnref_hook != NULL) 0.00 : 534930: 48 85 c0 test %rax,%rax 0.00 : 534933: 0f 84 ef 00 00 00 je 534a28 : /* : * XXX Should we throw an error if we get a translation that isn't a : * refcursor Param? For now it seems best to silently ignore false : * matches. : */ : if (node != NULL && IsA(node, Param)) 0.00 : 534939: 81 38 31 01 00 00 cmpl $0x131,(%rax) 0.00 : 53493f: 90 nop 0.00 : 534940: 0f 85 0a 01 00 00 jne 534a50 : { : Param *p = (Param *) node; : : if (p->paramkind == PARAM_EXTERN && 0.00 : 534946: 44 8b 40 04 mov 0x4(%rax),%r8d 0.00 : 53494a: 45 85 c0 test %r8d,%r8d 0.00 : 53494d: 0f 1f 00 nopl (%rax) 0.00 : 534950: 0f 85 fa 00 00 00 jne 534a50 0.00 : 534956: 81 78 0c fe 06 00 00 cmpl $0x6fe,0xc(%rax) 0.00 : 53495d: 0f 1f 00 nopl (%rax) 0.00 : 534960: 0f 85 ea 00 00 00 jne 534a50 : p->paramtype == REFCURSOROID) : { : /* Matches, so convert CURRENT OF to a param reference */ : cexpr->cursor_name = NULL; 0.00 : 534966: 49 c7 45 08 00 00 00 movq $0x0,0x8(%r13) 0.00 : 53496d: 00 : cexpr->cursor_param = p->paramid; 0.00 : 53496e: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 534971: 4d 89 ec mov %r13,%r12 0.00 : 534974: 41 89 45 10 mov %eax,0x10(%r13) 0.00 : 534978: eb 49 jmp 5349c3 0.00 : 53497a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 534980: 3d 45 01 00 00 cmp $0x145,%eax 0.00 : 534985: 76 59 jbe 5349e0 0.00 : 534987: 3d 49 01 00 00 cmp $0x149,%eax 0.00 : 53498c: 0f 87 fe 01 00 00 ja 534b90 0.00 : 534992: 3d 48 01 00 00 cmp $0x148,%eax 0.00 : 534997: 0f 83 b3 00 00 00 jae 534a50 0.00 : 53499d: 3d 46 01 00 00 cmp $0x146,%eax 0.00 : 5349a2: 0f 85 68 03 00 00 jne 534d10 : case T_SubLink: : result = transformSubLink(pstate, (SubLink *) expr); : break; : : case T_CaseExpr: : result = transformCaseExpr(pstate, (CaseExpr *) expr); 0.00 : 5349a8: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5349ac: 4c 89 ee mov %r13,%rsi 0.00 : 5349af: e8 9c 26 00 00 callq 537050 0.00 : 5349b4: 49 89 c4 mov %rax,%r12 : break; 0.00 : 5349b7: eb 0a jmp 5349c3 0.00 : 5349b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : } : : default: : /* should not reach here */ : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(expr)); 0.00 : 5349c0: 45 31 e4 xor %r12d,%r12d : result = NULL; /* keep compiler quiet */ : break; : } : : return result; : } 0.00 : 5349c3: 4c 89 e0 mov %r12,%rax 0.00 : 5349c6: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5349ca: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5349ce: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5349d2: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5349d6: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5349da: c9 leaveq 0.00 : 5349db: c3 retq 0.00 : 5349dc: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 5349e0: 3d 3f 01 00 00 cmp $0x13f,%eax 0.00 : 5349e5: 73 69 jae 534a50 0.00 : 5349e7: 3d 3a 01 00 00 cmp $0x13a,%eax 0.00 : 5349ec: 0f 87 8e 03 00 00 ja 534d80 0.00 : 5349f2: 3d 37 01 00 00 cmp $0x137,%eax 0.00 : 5349f7: 73 57 jae 534a50 0.00 : 5349f9: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 5349fe: 66 90 xchg %ax,%ax 0.00 : 534a00: 0f 82 0a 03 00 00 jb 534d10 0.00 : 534a06: 3d 35 01 00 00 cmp $0x135,%eax 0.00 : 534a0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534a10: 76 3e jbe 534a50 : : case T_NamedArgExpr: : { : NamedArgExpr *na = (NamedArgExpr *) expr; : : na->arg = (Expr *) transformExprRecurse(pstate, (Node *) na->arg); 0.00 : 534a12: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 534a16: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534a1a: 4d 89 ec mov %r13,%r12 0.00 : 534a1d: e8 fe fd ff ff callq 534820 0.00 : 534a22: 49 89 45 08 mov %rax,0x8(%r13) : result = expr; : break; 0.00 : 534a26: eb 9b jmp 5349c3 : cref->location = -1; : : /* See if there is a translation available from a parser hook */ : if (pstate->p_pre_columnref_hook != NULL) : node = (*pstate->p_pre_columnref_hook) (pstate, cref); : if (node == NULL && pstate->p_post_columnref_hook != NULL) 0.00 : 534a28: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 534a2c: 48 8b 86 98 00 00 00 mov 0x98(%rsi),%rax 0.00 : 534a33: 48 85 c0 test %rax,%rax 0.00 : 534a36: 74 18 je 534a50 : node = (*pstate->p_post_columnref_hook) (pstate, cref, NULL); 0.00 : 534a38: 31 d2 xor %edx,%edx 0.00 : 534a3a: 48 89 de mov %rbx,%rsi 0.00 : 534a3d: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534a41: ff d0 callq *%rax : /* : * XXX Should we throw an error if we get a translation that isn't a : * refcursor Param? For now it seems best to silently ignore false : * matches. : */ : if (node != NULL && IsA(node, Param)) 0.00 : 534a43: 48 85 c0 test %rax,%rax 0.00 : 534a46: 0f 85 ed fe ff ff jne 534939 0.00 : 534a4c: 0f 1f 40 00 nopl 0x0(%rax) : break; : } : : default: : /* should not reach here */ : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(expr)); 0.00 : 534a50: 4d 89 ec mov %r13,%r12 0.00 : 534a53: e9 6b ff ff ff jmpq 5349c3 0.00 : 534a58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534a5f: 00 : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 534a60: 3d 8c 03 00 00 cmp $0x38c,%eax 0.00 : 534a65: 0f 84 75 03 00 00 je 534de0 0.00 : 534a6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534a70: 0f 87 ca 02 00 00 ja 534d40 0.00 : 534a76: 3d 88 03 00 00 cmp $0x388,%eax 0.00 : 534a7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534a80: 0f 84 78 03 00 00 je 534dfe 0.00 : 534a86: 66 90 xchg %ax,%ax 0.00 : 534a88: 0f 82 72 04 00 00 jb 534f00 0.00 : 534a8e: 3d 8b 03 00 00 cmp $0x38b,%eax 0.00 : 534a93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534a98: 0f 85 72 02 00 00 jne 534d10 : : case T_A_Indirection: : { : A_Indirection *ind = (A_Indirection *) expr; : : result = transformExprRecurse(pstate, ind->arg); 0.00 : 534a9e: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 534aa2: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534aa6: e8 75 fd ff ff callq 534820 : result = transformIndirection(pstate, result, 0.00 : 534aab: 49 8b 5d 10 mov 0x10(%r13),%rbx : static Node * : transformIndirection(ParseState *pstate, Node *basenode, List *indirection) : { : Node *result = basenode; : List *subscripts = NIL; : int location = exprLocation(basenode); 0.00 : 534aaf: 48 89 c7 mov %rax,%rdi : : case T_A_Indirection: : { : A_Indirection *ind = (A_Indirection *) expr; : : result = transformExprRecurse(pstate, ind->arg); 0.00 : 534ab2: 49 89 c4 mov %rax,%r12 : static Node * : transformIndirection(ParseState *pstate, Node *basenode, List *indirection) : { : Node *result = basenode; : List *subscripts = NIL; : int location = exprLocation(basenode); 0.00 : 534ab5: e8 56 96 0a 00 callq 5de110 0.00 : 534aba: 89 45 ac mov %eax,-0x54(%rbp) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 534abd: 48 85 db test %rbx,%rbx 0.00 : 534ac0: 0f 84 fd fe ff ff je 5349c3 0.00 : 534ac6: 4c 8b 7b 08 mov 0x8(%rbx),%r15 : /* : * We have to split any field-selection operations apart from : * subscripting. Adjacent A_Indices nodes have to be treated as a single : * multidimensional subscript operation. : */ : foreach(i, indirection) 0.00 : 534aca: 4d 85 ff test %r15,%r15 0.00 : 534acd: 0f 84 f0 fe ff ff je 5349c3 0.00 : 534ad3: 45 31 ed xor %r13d,%r13d 0.00 : 534ad6: e9 92 00 00 00 jmpq 534b6d 0.00 : 534adb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Node *n = lfirst(i); : : if (IsA(n, A_Indices)) : subscripts = lappend(subscripts, n); : else if (IsA(n, A_Star)) 0.00 : 534ae0: 3d 89 03 00 00 cmp $0x389,%eax 0.00 : 534ae5: 0f 84 03 0a 00 00 je 5354ee : Node *newresult; : : Assert(IsA(n, String)); : : /* process subscripts before this field selection */ : if (subscripts) 0.00 : 534aeb: 4d 85 ed test %r13,%r13 0.00 : 534aee: 66 90 xchg %ax,%ax 0.00 : 534af0: 74 33 je 534b25 : result = (Node *) transformArraySubscripts(pstate, 0.00 : 534af2: 4c 89 e7 mov %r12,%rdi 0.00 : 534af5: e8 f6 c4 0a 00 callq 5e0ff0 0.00 : 534afa: 4c 89 e7 mov %r12,%rdi 0.00 : 534afd: 89 c3 mov %eax,%ebx 0.00 : 534aff: e8 cc c1 0a 00 callq 5e0cd0 0.00 : 534b04: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534b08: 4c 89 e6 mov %r12,%rsi 0.00 : 534b0b: 4d 89 e9 mov %r13,%r9 0.00 : 534b0e: 41 89 d8 mov %ebx,%r8d 0.00 : 534b11: 31 c9 xor %ecx,%ecx 0.00 : 534b13: 89 c2 mov %eax,%edx 0.00 : 534b15: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 534b1c: 00 0.00 : 534b1d: e8 7e 5b 00 00 callq 53a6a0 0.00 : 534b22: 49 89 c4 mov %rax,%r12 : exprTypmod(result), : subscripts, : NULL); : subscripts = NIL; : : newresult = ParseFuncOrColumn(pstate, 0.00 : 534b25: 31 f6 xor %esi,%esi 0.00 : 534b27: 4c 89 e7 mov %r12,%rdi 0.00 : 534b2a: e8 21 cd 0a 00 callq 5e1850 0.00 : 534b2f: 31 f6 xor %esi,%esi 0.00 : 534b31: 4c 89 f7 mov %r14,%rdi 0.00 : 534b34: 48 89 c3 mov %rax,%rbx 0.00 : 534b37: e8 14 cd 0a 00 callq 5e1850 0.00 : 534b3c: 44 8b 45 ac mov -0x54(%rbp),%r8d 0.00 : 534b40: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534b44: 31 c9 xor %ecx,%ecx 0.00 : 534b46: 48 89 c6 mov %rax,%rsi 0.00 : 534b49: 48 89 da mov %rbx,%rdx 0.00 : 534b4c: e8 df 3d 00 00 callq 538930 : list_make1(n), : list_make1(result), : NULL, : location); : if (newresult == NULL) 0.00 : 534b51: 48 85 c0 test %rax,%rax 0.00 : 534b54: 0f 84 c6 04 00 00 je 535020 : (errcode(ERRCODE_UNDEFINED_COLUMN), : errmsg("could not identify column \"%s\" in record data type", : attname), : parser_errposition(pstate, location))); : else : ereport(ERROR, 0.00 : 534b5a: 49 89 c4 mov %rax,%r12 0.00 : 534b5d: 45 31 ed xor %r13d,%r13d : /* : * We have to split any field-selection operations apart from : * subscripting. Adjacent A_Indices nodes have to be treated as a single : * multidimensional subscript operation. : */ : foreach(i, indirection) 0.00 : 534b60: 4d 8b 7f 08 mov 0x8(%r15),%r15 0.00 : 534b64: 4d 85 ff test %r15,%r15 0.00 : 534b67: 0f 84 93 07 00 00 je 535300 : { : Node *n = lfirst(i); 0.00 : 534b6d: 4d 8b 37 mov (%r15),%r14 : : if (IsA(n, A_Indices)) 0.00 : 534b70: 41 8b 06 mov (%r14),%eax 0.00 : 534b73: 3d 8a 03 00 00 cmp $0x38a,%eax 0.00 : 534b78: 0f 85 62 ff ff ff jne 534ae0 : subscripts = lappend(subscripts, n); 0.00 : 534b7e: 4c 89 ef mov %r13,%rdi 0.00 : 534b81: 4c 89 f6 mov %r14,%rsi 0.00 : 534b84: e8 f7 d2 0a 00 callq 5e1e80 0.00 : 534b89: 49 89 c5 mov %rax,%r13 0.00 : 534b8c: eb d2 jmp 534b60 0.00 : 534b8e: 66 90 xchg %ax,%ax : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 534b90: 3d 4c 01 00 00 cmp $0x14c,%eax 0.00 : 534b95: 0f 84 15 02 00 00 je 534db0 0.00 : 534b9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534ba0: 0f 87 22 02 00 00 ja 534dc8 0.00 : 534ba6: 3d 4a 01 00 00 cmp $0x14a,%eax 0.00 : 534bab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534bb0: 0f 85 5a 01 00 00 jne 534d10 : char fname[16]; : int fnum; : ListCell *lc; : : /* If we already transformed this node, do nothing */ : if (OidIsValid(r->row_typeid)) 0.00 : 534bb6: 45 8b 4d 10 mov 0x10(%r13),%r9d 0.00 : 534bba: 45 85 c9 test %r9d,%r9d 0.00 : 534bbd: 0f 1f 00 nopl (%rax) 0.00 : 534bc0: 0f 85 8a fe ff ff jne 534a50 : return (Node *) r; : : newr = makeNode(RowExpr); 0.00 : 534bc6: 48 8b 3d 93 5c 68 00 mov 0x685c93(%rip),%rdi # bba860 0.00 : 534bcd: be 28 00 00 00 mov $0x28,%esi 0.00 : 534bd2: e8 39 42 26 00 callq 798e10 0.00 : 534bd7: 49 89 c4 mov %rax,%r12 0.00 : 534bda: c7 00 4a 01 00 00 movl $0x14a,(%rax) : : /* Transform the field expressions */ : newr->args = transformExpressionList(pstate, r->args, pstate->p_expr_kind); 0.00 : 534be0: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 534be4: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 534be8: 8b 50 58 mov 0x58(%rax),%edx 0.00 : 534beb: 48 89 c7 mov %rax,%rdi 0.00 : 534bee: e8 8d da 00 00 callq 542680 0.00 : 534bf3: 48 85 c0 test %rax,%rax 0.00 : 534bf6: 49 89 44 24 08 mov %rax,0x8(%r12) : : /* Barring later casting, we consider the type RECORD */ : newr->row_typeid = RECORDOID; 0.00 : 534bfb: 41 c7 44 24 10 c9 08 movl $0x8c9,0x10(%r12) 0.00 : 534c02: 00 00 : newr->row_format = COERCE_IMPLICIT_CAST; 0.00 : 534c04: 41 c7 44 24 14 02 00 movl $0x2,0x14(%r12) 0.00 : 534c0b: 00 00 : : /* ROW() has anonymous columns, so invent some field names */ : newr->colnames = NIL; 0.00 : 534c0d: 49 c7 44 24 18 00 00 movq $0x0,0x18(%r12) 0.00 : 534c14: 00 00 0.00 : 534c16: 74 5e je 534c76 0.00 : 534c18: 48 8b 58 08 mov 0x8(%rax),%rbx : fnum = 1; : foreach(lc, newr->args) 0.00 : 534c1c: 48 85 db test %rbx,%rbx 0.00 : 534c1f: 74 55 je 534c76 0.00 : 534c21: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 534c26: 4c 8d 7d b0 lea -0x50(%rbp),%r15 0.00 : 534c2a: eb 07 jmp 534c33 0.00 : 534c2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 534c30: 44 89 f1 mov %r14d,%ecx : { : snprintf(fname, sizeof(fname), "f%d", fnum++); 0.00 : 534c33: ba c2 31 87 00 mov $0x8731c2,%edx 0.00 : 534c38: be 10 00 00 00 mov $0x10,%esi 0.00 : 534c3d: 4c 89 ff mov %r15,%rdi 0.00 : 534c40: 31 c0 xor %eax,%eax 0.00 : 534c42: 44 8d 71 01 lea 0x1(%rcx),%r14d 0.00 : 534c46: e8 05 48 f3 ff callq 469450 : newr->colnames = lappend(newr->colnames, makeString(pstrdup(fname))); 0.00 : 534c4b: 4c 89 ff mov %r15,%rdi 0.00 : 534c4e: e8 fd 42 26 00 callq 798f50 0.00 : 534c53: 48 89 c7 mov %rax,%rdi 0.00 : 534c56: e8 95 aa 0c 00 callq 5ff6f0 0.00 : 534c5b: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 534c60: 48 89 c6 mov %rax,%rsi 0.00 : 534c63: e8 18 d2 0a 00 callq 5e1e80 0.00 : 534c68: 49 89 44 24 18 mov %rax,0x18(%r12) : newr->row_format = COERCE_IMPLICIT_CAST; : : /* ROW() has anonymous columns, so invent some field names */ : newr->colnames = NIL; : fnum = 1; : foreach(lc, newr->args) 0.00 : 534c6d: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 534c71: 48 85 db test %rbx,%rbx 0.00 : 534c74: 75 ba jne 534c30 : { : snprintf(fname, sizeof(fname), "f%d", fnum++); : newr->colnames = lappend(newr->colnames, makeString(pstrdup(fname))); : } : : newr->location = r->location; 0.00 : 534c76: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 534c7a: 41 89 44 24 20 mov %eax,0x20(%r12) 0.00 : 534c7f: e9 3f fd ff ff jmpq 5349c3 0.00 : 534c84: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * The core parser knows nothing about Params. If a hook is supplied, : * call it. If not, or if the hook returns NULL, throw a generic error. : */ : if (pstate->p_paramref_hook != NULL) 0.00 : 534c88: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 534c8c: 48 8b 86 a0 00 00 00 mov 0xa0(%rsi),%rax 0.00 : 534c93: 48 85 c0 test %rax,%rax 0.00 : 534c96: 74 15 je 534cad : result = (*pstate->p_paramref_hook) (pstate, pref); 0.00 : 534c98: 4c 89 ee mov %r13,%rsi 0.00 : 534c9b: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534c9f: ff d0 callq *%rax : else : result = NULL; : : if (result == NULL) 0.00 : 534ca1: 48 85 c0 test %rax,%rax : /* : * The core parser knows nothing about Params. If a hook is supplied, : * call it. If not, or if the hook returns NULL, throw a generic error. : */ : if (pstate->p_paramref_hook != NULL) : result = (*pstate->p_paramref_hook) (pstate, pref); 0.00 : 534ca4: 49 89 c4 mov %rax,%r12 : else : result = NULL; : : if (result == NULL) 0.00 : 534ca7: 0f 85 16 fd ff ff jne 5349c3 : ereport(ERROR, 0.00 : 534cad: 45 31 c0 xor %r8d,%r8d 0.00 : 534cb0: b9 c0 34 87 00 mov $0x8734c0,%ecx 0.00 : 534cb5: ba 35 03 00 00 mov $0x335,%edx 0.00 : 534cba: be 37 31 87 00 mov $0x873137,%esi 0.00 : 534cbf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 534cc4: e8 f7 5d 24 00 callq 77aac0 0.00 : 534cc9: 84 c0 test %al,%al 0.00 : 534ccb: 0f 85 5f 0d 00 00 jne 535a30 0.00 : 534cd1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : } : : default: : /* should not reach here */ : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(expr)); 0.00 : 534cd8: e8 f3 47 f3 ff callq 4694d0 0.00 : 534cdd: 0f 1f 00 nopl (%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 534ce0: 3d 51 01 00 00 cmp $0x151,%eax 0.00 : 534ce5: 0f 83 65 fd ff ff jae 534a50 0.00 : 534ceb: 3d 4f 01 00 00 cmp $0x14f,%eax 0.00 : 534cf0: 0f 84 30 01 00 00 je 534e26 0.00 : 534cf6: 3d 50 01 00 00 cmp $0x150,%eax 0.00 : 534cfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534d00: 0f 84 0c 01 00 00 je 534e12 0.00 : 534d06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 534d0d: 00 00 00 : break; : } : : default: : /* should not reach here */ : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(expr)); 0.00 : 534d10: ba 80 34 87 00 mov $0x873480,%edx 0.00 : 534d15: be 66 01 00 00 mov $0x166,%esi 0.00 : 534d1a: bf 37 31 87 00 mov $0x873137,%edi 0.00 : 534d1f: e8 fc 66 24 00 callq 77b420 0.00 : 534d24: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 534d28: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 534d2d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 534d32: 31 c0 xor %eax,%eax 0.00 : 534d34: e8 f7 64 24 00 callq 77b230 0.00 : 534d39: eb 9d jmp 534cd8 0.00 : 534d3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 534d40: 3d 8f 03 00 00 cmp $0x38f,%eax 0.00 : 534d45: 0f 84 07 01 00 00 je 534e52 0.00 : 534d4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534d50: 0f 87 0a 04 00 00 ja 535160 0.00 : 534d56: 3d 8e 03 00 00 cmp $0x38e,%eax 0.00 : 534d5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534d60: 75 ae jne 534d10 : case T_FuncCall: : result = transformFuncCall(pstate, (FuncCall *) expr); : break; : : case T_MultiAssignRef: : result = transformMultiAssignRef(pstate, (MultiAssignRef *) expr); 0.00 : 534d62: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534d66: 4c 89 ee mov %r13,%rsi 0.00 : 534d69: e8 12 1d 00 00 callq 536a80 0.00 : 534d6e: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534d71: e9 4d fc ff ff jmpq 5349c3 0.00 : 534d76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 534d7d: 00 00 00 : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 534d80: 3d 3b 01 00 00 cmp $0x13b,%eax 0.00 : 534d85: 0f 84 59 01 00 00 je 534ee4 0.00 : 534d8b: 3d 3c 01 00 00 cmp $0x13c,%eax 0.00 : 534d90: 0f 85 7a ff ff ff jne 534d10 : result = expr; : break; : } : : case T_SubLink: : result = transformSubLink(pstate, (SubLink *) expr); 0.00 : 534d96: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534d9a: 4c 89 ee mov %r13,%rsi 0.00 : 534d9d: e8 6e 1e 00 00 callq 536c10 0.00 : 534da2: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534da5: e9 19 fc ff ff jmpq 5349c3 0.00 : 534daa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_RowExpr: : result = transformRowExpr(pstate, (RowExpr *) expr); : break; : : case T_CoalesceExpr: : result = transformCoalesceExpr(pstate, (CoalesceExpr *) expr); 0.00 : 534db0: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534db4: 4c 89 ee mov %r13,%rsi 0.00 : 534db7: e8 84 25 00 00 callq 537340 0.00 : 534dbc: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534dbf: e9 ff fb ff ff jmpq 5349c3 0.00 : 534dc4: 0f 1f 40 00 nopl 0x0(%rax) : : case T_MinMaxExpr: : result = transformMinMaxExpr(pstate, (MinMaxExpr *) expr); 0.00 : 534dc8: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534dcc: 4c 89 ee mov %r13,%rsi 0.00 : 534dcf: e8 7c 26 00 00 callq 537450 0.00 : 534dd4: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534dd7: e9 e7 fb ff ff jmpq 5349c3 0.00 : 534ddc: 0f 1f 40 00 nopl 0x0(%rax) : ind->indirection); : break; : } : : case T_A_ArrayExpr: : result = transformArrayExpr(pstate, (A_ArrayExpr *) expr, 0.00 : 534de0: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534de4: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 534dea: 31 c9 xor %ecx,%ecx 0.00 : 534dec: 31 d2 xor %edx,%edx 0.00 : 534dee: 4c 89 ee mov %r13,%rsi 0.00 : 534df1: e8 6a 0d 00 00 callq 535b60 0.00 : 534df6: 49 89 c4 mov %rax,%r12 : InvalidOid, InvalidOid, -1); : break; 0.00 : 534df9: e9 c5 fb ff ff jmpq 5349c3 : case T_BoolExpr: : result = transformBoolExpr(pstate, (BoolExpr *) expr); : break; : : case T_FuncCall: : result = transformFuncCall(pstate, (FuncCall *) expr); 0.00 : 534dfe: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534e02: 4c 89 ee mov %r13,%rsi 0.00 : 534e05: e8 a6 1b 00 00 callq 5369b0 0.00 : 534e0a: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534e0d: e9 b1 fb ff ff jmpq 5349c3 : result = expr; : break; : } : : case T_BooleanTest: : result = transformBooleanTest(pstate, (BooleanTest *) expr); 0.00 : 534e12: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534e16: 4c 89 ee mov %r13,%rsi 0.00 : 534e19: e8 62 27 00 00 callq 537580 0.00 : 534e1e: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534e21: e9 9d fb ff ff jmpq 5349c3 : : case T_NullTest: : { : NullTest *n = (NullTest *) expr; : : n->arg = (Expr *) transformExprRecurse(pstate, (Node *) n->arg); 0.00 : 534e26: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 534e2a: 48 8b 7d 90 mov -0x70(%rbp),%rdi : /* the argument can be any type, so don't coerce it */ : n->argisrow = type_is_rowtype(exprType((Node *) n->arg)); 0.00 : 534e2e: 4d 89 ec mov %r13,%r12 : : case T_NullTest: : { : NullTest *n = (NullTest *) expr; : : n->arg = (Expr *) transformExprRecurse(pstate, (Node *) n->arg); 0.00 : 534e31: e8 ea f9 ff ff callq 534820 0.00 : 534e36: 48 89 c7 mov %rax,%rdi 0.00 : 534e39: 49 89 45 08 mov %rax,0x8(%r13) : /* the argument can be any type, so don't coerce it */ : n->argisrow = type_is_rowtype(exprType((Node *) n->arg)); 0.00 : 534e3d: e8 8e be 0a 00 callq 5e0cd0 0.00 : 534e42: 89 c7 mov %eax,%edi 0.00 : 534e44: e8 47 d5 23 00 callq 772390 0.00 : 534e49: 41 88 45 14 mov %al,0x14(%r13) : result = expr; : break; 0.00 : 534e4d: e9 71 fb ff ff jmpq 5349c3 : * the target type is an array type, we invoke : * transformArrayExpr() directly so that we can pass down the : * type information. This avoids some cases where : * transformArrayExpr() might not infer the correct type. : */ : if (IsA(tc->arg, A_ArrayExpr)) 0.00 : 534e52: 49 8b 75 08 mov 0x8(%r13),%rsi : InvalidOid, InvalidOid, -1); : break; : : case T_TypeCast: : { : TypeCast *tc = (TypeCast *) expr; 0.00 : 534e56: 4d 89 ef mov %r13,%r15 : * the target type is an array type, we invoke : * transformArrayExpr() directly so that we can pass down the : * type information. This avoids some cases where : * transformArrayExpr() might not infer the correct type. : */ : if (IsA(tc->arg, A_ArrayExpr)) 0.00 : 534e59: 81 3e 8c 03 00 00 cmpl $0x38c,(%rsi) 0.00 : 534e5f: 0f 84 dc 04 00 00 je 535341 0.00 : 534e65: 48 8d 5d c8 lea -0x38(%rbp),%rbx 0.00 : 534e69: 4c 8d 75 cc lea -0x34(%rbp),%r14 : */ : static Node * : transformTypeCast(ParseState *pstate, TypeCast *tc) : { : Node *result; : Node *expr = transformExprRecurse(pstate, tc->arg); 0.00 : 534e6d: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534e71: e8 aa f9 ff ff callq 534820 : Oid inputType = exprType(expr); 0.00 : 534e76: 48 89 c7 mov %rax,%rdi : */ : static Node * : transformTypeCast(ParseState *pstate, TypeCast *tc) : { : Node *result; : Node *expr = transformExprRecurse(pstate, tc->arg); 0.00 : 534e79: 49 89 c4 mov %rax,%r12 : Oid inputType = exprType(expr); 0.00 : 534e7c: e8 4f be 0a 00 callq 5e0cd0 : Oid targetType; : int32 targetTypmod; : int location; : : typenameTypeIdAndMod(pstate, tc->typeName, &targetType, &targetTypmod); 0.00 : 534e81: 49 8b 77 10 mov 0x10(%r15),%rsi 0.00 : 534e85: 48 8b 7d 90 mov -0x70(%rbp),%rdi : static Node * : transformTypeCast(ParseState *pstate, TypeCast *tc) : { : Node *result; : Node *expr = transformExprRecurse(pstate, tc->arg); : Oid inputType = exprType(expr); 0.00 : 534e89: 41 89 c5 mov %eax,%r13d : Oid targetType; : int32 targetTypmod; : int location; : : typenameTypeIdAndMod(pstate, tc->typeName, &targetType, &targetTypmod); 0.00 : 534e8c: 4c 89 f1 mov %r14,%rcx 0.00 : 534e8f: 48 89 da mov %rbx,%rdx 0.00 : 534e92: e8 69 ea 00 00 callq 543900 : : if (inputType == InvalidOid) 0.00 : 534e97: 45 85 ed test %r13d,%r13d 0.00 : 534e9a: 0f 84 23 fb ff ff je 5349c3 : /* : * Location of the coercion is preferentially the location of the :: or : * CAST symbol, but if there is none then use the location of the type : * name (this can happen in TypeName 'string' syntax, for instance). : */ : location = tc->location; 0.00 : 534ea0: 41 8b 5f 18 mov 0x18(%r15),%ebx : if (location < 0) 0.00 : 534ea4: 85 db test %ebx,%ebx 0.00 : 534ea6: 0f 88 d9 04 00 00 js 535385 : location = tc->typeName->location; : : result = coerce_to_target_type(pstate, expr, inputType, 0.00 : 534eac: 8b 4d c8 mov -0x38(%rbp),%ecx 0.00 : 534eaf: 44 8b 45 cc mov -0x34(%rbp),%r8d 0.00 : 534eb3: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 534eb9: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534ebd: 44 89 ea mov %r13d,%edx 0.00 : 534ec0: 4c 89 e6 mov %r12,%rsi 0.00 : 534ec3: 89 5c 24 08 mov %ebx,0x8(%rsp) 0.00 : 534ec7: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : 534ece: e8 5d c7 ff ff callq 531630 : targetType, targetTypmod, : COERCION_EXPLICIT, : COERCE_EXPLICIT_CAST, : location); : if (result == NULL) 0.00 : 534ed3: 48 85 c0 test %rax,%rax 0.00 : 534ed6: 0f 84 4b 09 00 00 je 535827 : { : case AEXPR_OP: : result = transformAExprOp(pstate, a); : break; : case AEXPR_OP_ANY: : result = transformAExprOpAny(pstate, a); 0.00 : 534edc: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534edf: e9 df fa ff ff jmpq 5349c3 : } : break; : } : : case T_BoolExpr: : result = transformBoolExpr(pstate, (BoolExpr *) expr); 0.00 : 534ee4: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534ee8: 4c 89 ee mov %r13,%rsi 0.00 : 534eeb: e8 c0 19 00 00 callq 5368b0 0.00 : 534ef0: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534ef3: e9 cb fa ff ff jmpq 5349c3 0.00 : 534ef8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534eff: 00 : case T_A_Const: : { : A_Const *con = (A_Const *) expr; : Value *val = &con->val; : : result = (Node *) make_const(pstate, val, con->location); 0.00 : 534f00: 41 8b 55 18 mov 0x18(%r13),%edx 0.00 : 534f04: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534f08: 49 8d 75 08 lea 0x8(%r13),%rsi 0.00 : 534f0c: e8 cf 53 00 00 callq 53a2e0 0.00 : 534f11: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534f14: e9 aa fa ff ff jmpq 5349c3 0.00 : 534f19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case T_MinMaxExpr: : result = transformMinMaxExpr(pstate, (MinMaxExpr *) expr); : break; : : case T_XmlExpr: : result = transformXmlExpr(pstate, (XmlExpr *) expr); 0.00 : 534f20: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534f24: 4c 89 ee mov %r13,%rsi 0.00 : 534f27: e8 f4 f4 ff ff callq 534420 0.00 : 534f2c: 49 89 c4 mov %rax,%r12 : break; 0.00 : 534f2f: e9 8f fa ff ff jmpq 5349c3 0.00 : 534f34: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Give the PreParseColumnRefHook, if any, first shot. If it returns : * non-null then that's all, folks. : */ : if (pstate->p_pre_columnref_hook != NULL) 0.00 : 534f38: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 534f3c: 48 8b 82 90 00 00 00 mov 0x90(%rdx),%rax 0.00 : 534f43: 48 85 c0 test %rax,%rax 0.00 : 534f46: 74 14 je 534f5c : { : node = (*pstate->p_pre_columnref_hook) (pstate, cref); 0.00 : 534f48: 4c 89 ee mov %r13,%rsi 0.00 : 534f4b: 48 89 d7 mov %rdx,%rdi 0.00 : 534f4e: ff d0 callq *%rax : if (node != NULL) 0.00 : 534f50: 48 85 c0 test %rax,%rax : * Give the PreParseColumnRefHook, if any, first shot. If it returns : * non-null then that's all, folks. : */ : if (pstate->p_pre_columnref_hook != NULL) : { : node = (*pstate->p_pre_columnref_hook) (pstate, cref); 0.00 : 534f53: 49 89 c4 mov %rax,%r12 : if (node != NULL) 0.00 : 534f56: 0f 85 67 fa ff ff jne 5349c3 : * : * Currently, if a catalog name is given then it must equal the current : * database name; we check it here and then discard it. : *---------- : */ : switch (list_length(cref->fields)) 0.00 : 534f5c: 49 8b 55 08 mov 0x8(%r13),%rdx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 534f60: 48 85 d2 test %rdx,%rdx 0.00 : 534f63: 74 1b je 534f80 0.00 : 534f65: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 534f68: 83 f8 02 cmp $0x2,%eax 0.00 : 534f6b: 0f 84 c8 05 00 00 je 535539 0.00 : 534f71: 0f 8f 4a 04 00 00 jg 5353c1 0.00 : 534f77: 83 e8 01 sub $0x1,%eax 0.00 : 534f7a: 0f 84 2d 05 00 00 je 5354ad : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); : node = ParseFuncOrColumn(pstate, 0.00 : 534f80: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 534f86: 45 31 ff xor %r15d,%r15d 0.00 : 534f89: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 534f90: 00 0.00 : 534f91: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 534f98: 00 0.00 : 534f99: 31 db xor %ebx,%ebx : * just translates anyway, we'll throw an error, because we can't undo : * whatever effects the preceding steps may have had on the pstate.) If it : * returns NULL, use the standard translation, or throw a suitable error : * if there is none. : */ : if (pstate->p_post_columnref_hook != NULL) 0.00 : 534f9b: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 534f9f: 48 8b 82 98 00 00 00 mov 0x98(%rdx),%rax 0.00 : 534fa6: 48 85 c0 test %rax,%rax 0.00 : 534fa9: 0f 84 e2 03 00 00 je 535391 : { : Node *hookresult; : : hookresult = (*pstate->p_post_columnref_hook) (pstate, cref, node); 0.00 : 534faf: 48 89 da mov %rbx,%rdx 0.00 : 534fb2: 4c 89 ee mov %r13,%rsi 0.00 : 534fb5: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 534fb9: ff d0 callq *%rax : if (node == NULL) 0.00 : 534fbb: 48 85 db test %rbx,%rbx : */ : if (pstate->p_post_columnref_hook != NULL) : { : Node *hookresult; : : hookresult = (*pstate->p_post_columnref_hook) (pstate, cref, node); 0.00 : 534fbe: 49 89 c4 mov %rax,%r12 : if (node == NULL) 0.00 : 534fc1: 0f 84 cd 03 00 00 je 535394 : node = hookresult; : else if (hookresult != NULL) 0.00 : 534fc7: 48 85 c0 test %rax,%rax 0.00 : 534fca: 0f 85 c8 09 00 00 jne 535998 : errmsg("cross-database references are not implemented: %s", : NameListToString(cref->fields)), : parser_errposition(pstate, cref->location))); : break; : case CRERR_TOO_MANY: : ereport(ERROR, 0.00 : 534fd0: 49 89 dc mov %rbx,%r12 0.00 : 534fd3: e9 eb f9 ff ff jmpq 5349c3 0.00 : 534fd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 534fdf: 00 : : case T_A_Expr: : { : A_Expr *a = (A_Expr *) expr; : : switch (a->kind) 0.00 : 534fe0: 41 83 7d 04 06 cmpl $0x6,0x4(%r13) 0.00 : 534fe5: 0f 86 dd 00 00 00 jbe 5350c8 : break; : case AEXPR_IN: : result = transformAExprIn(pstate, a); : break; : default: : elog(ERROR, "unrecognized A_Expr kind: %d", a->kind); 0.00 : 534feb: ba 80 34 87 00 mov $0x873480,%edx 0.00 : 534ff0: be f5 00 00 00 mov $0xf5,%esi 0.00 : 534ff5: bf 37 31 87 00 mov $0x873137,%edi 0.00 : 534ffa: e8 21 64 24 00 callq 77b420 0.00 : 534fff: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 535003: be a5 31 87 00 mov $0x8731a5,%esi 0.00 : 535008: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53500d: 31 c0 xor %eax,%eax 0.00 : 53500f: e8 1c 62 24 00 callq 77b230 0.00 : 535014: e8 b7 44 f3 ff callq 4694d0 0.00 : 535019: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : unknown_attribute(ParseState *pstate, Node *relref, char *attname, : int location) : { : RangeTblEntry *rte; : : if (IsA(relref, Var) && 0.00 : 535020: 41 81 3c 24 2f 01 00 cmpl $0x12f,(%r12) 0.00 : 535027: 00 : list_make1(n), : list_make1(result), : NULL, : location); : if (newresult == NULL) : unknown_attribute(pstate, result, strVal(n), location); 0.00 : 535028: 4d 8b 6e 08 mov 0x8(%r14),%r13 : unknown_attribute(ParseState *pstate, Node *relref, char *attname, : int location) : { : RangeTblEntry *rte; : : if (IsA(relref, Var) && 0.00 : 53502c: 75 0d jne 53503b 0.00 : 53502e: 66 41 83 7c 24 08 00 cmpw $0x0,0x8(%r12) 0.00 : 535035: 0f 84 21 0a 00 00 je 535a5c : parser_errposition(pstate, location))); : } : else : { : /* Have to do it by reference to the type of the expression */ : Oid relTypeId = exprType(relref); 0.00 : 53503b: 4c 89 e7 mov %r12,%rdi 0.00 : 53503e: e8 8d bc 0a 00 callq 5e0cd0 : : if (ISCOMPLEX(relTypeId)) 0.00 : 535043: 89 c7 mov %eax,%edi : parser_errposition(pstate, location))); : } : else : { : /* Have to do it by reference to the type of the expression */ : Oid relTypeId = exprType(relref); 0.00 : 535045: 89 c3 mov %eax,%ebx : : if (ISCOMPLEX(relTypeId)) 0.00 : 535047: e8 14 d9 00 00 callq 542960 0.00 : 53504c: 85 c0 test %eax,%eax 0.00 : 53504e: 0f 85 ec 08 00 00 jne 535940 : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_COLUMN), : errmsg("column \"%s\" not found in data type %s", : attname, format_type_be(relTypeId)), : parser_errposition(pstate, location))); : else if (relTypeId == RECORDOID) 0.00 : 535054: 81 fb c9 08 00 00 cmp $0x8c9,%ebx 0.00 : 53505a: 0f 85 84 08 00 00 jne 5358e4 : ereport(ERROR, 0.00 : 535060: 45 31 c0 xor %r8d,%r8d 0.00 : 535063: b9 00 35 87 00 mov $0x873500,%ecx 0.00 : 535068: ba 97 01 00 00 mov $0x197,%edx 0.00 : 53506d: be 37 31 87 00 mov $0x873137,%esi 0.00 : 535072: bf 14 00 00 00 mov $0x14,%edi 0.00 : 535077: e8 44 5a 24 00 callq 77aac0 0.00 : 53507c: 84 c0 test %al,%al 0.00 : 53507e: 0f 84 54 fc ff ff je 534cd8 0.00 : 535084: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 535087: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53508b: e8 e0 55 00 00 callq 53a670 0.00 : 535090: bf a8 39 87 00 mov $0x8739a8,%edi 0.00 : 535095: 41 89 c4 mov %eax,%r12d 0.00 : 535098: 4c 89 ee mov %r13,%rsi 0.00 : 53509b: 31 c0 xor %eax,%eax 0.00 : 53509d: e8 fe 77 24 00 callq 77c8a0 0.00 : 5350a2: bf 84 70 00 03 mov $0x3007084,%edi 0.00 : 5350a7: 89 c3 mov %eax,%ebx : TEXTOID, targetType, targetTypmod, : COERCION_IMPLICIT, : COERCE_IMPLICIT_CAST, : -1); : if (result == NULL) : ereport(ERROR, 0.00 : 5350a9: e8 a2 7c 24 00 callq 77cd50 0.00 : 5350ae: 44 89 e2 mov %r12d,%edx 0.00 : 5350b1: 89 c7 mov %eax,%edi 0.00 : 5350b3: 89 de mov %ebx,%esi 0.00 : 5350b5: 31 c0 xor %eax,%eax 0.00 : 5350b7: e8 24 55 24 00 callq 77a5e0 0.00 : 5350bc: e9 17 fc ff ff jmpq 534cd8 0.00 : 5350c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : case T_A_Expr: : { : A_Expr *a = (A_Expr *) expr; : : switch (a->kind) 0.00 : 5350c8: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 5350cc: ff 24 c5 c8 33 87 00 jmpq *0x8733c8(,%rax,8) : break; : case AEXPR_OF: : result = transformAExprOf(pstate, a); : break; : case AEXPR_IN: : result = transformAExprIn(pstate, a); 0.00 : 5350d3: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5350d7: 4c 89 ee mov %r13,%rsi 0.00 : 5350da: e8 d1 14 00 00 callq 5365b0 0.00 : 5350df: 49 89 c4 mov %rax,%r12 : break; 0.00 : 5350e2: e9 dc f8 ff ff jmpq 5349c3 : break; : case AEXPR_NULLIF: : result = transformAExprNullIf(pstate, a); : break; : case AEXPR_OF: : result = transformAExprOf(pstate, a); 0.00 : 5350e7: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5350eb: 4c 89 ee mov %r13,%rsi 0.00 : 5350ee: e8 fd 13 00 00 callq 5364f0 0.00 : 5350f3: 49 89 c4 mov %rax,%r12 : break; 0.00 : 5350f6: e9 c8 f8 ff ff jmpq 5349c3 : break; : case AEXPR_DISTINCT: : result = transformAExprDistinct(pstate, a); : break; : case AEXPR_NULLIF: : result = transformAExprNullIf(pstate, a); 0.00 : 5350fb: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5350ff: 4c 89 ee mov %r13,%rsi 0.00 : 535102: e8 f9 12 00 00 callq 536400 0.00 : 535107: 49 89 c4 mov %rax,%r12 : break; 0.00 : 53510a: e9 b4 f8 ff ff jmpq 5349c3 : break; : case AEXPR_OP_ALL: : result = transformAExprOpAll(pstate, a); : break; : case AEXPR_DISTINCT: : result = transformAExprDistinct(pstate, a); 0.00 : 53510f: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535113: 4c 89 ee mov %r13,%rsi 0.00 : 535116: e8 05 11 00 00 callq 536220 0.00 : 53511b: 49 89 c4 mov %rax,%r12 : break; 0.00 : 53511e: e9 a0 f8 ff ff jmpq 5349c3 : break; : case AEXPR_OP_ANY: : result = transformAExprOpAny(pstate, a); : break; : case AEXPR_OP_ALL: : result = transformAExprOpAll(pstate, a); 0.00 : 535123: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535127: 4c 89 ee mov %r13,%rsi 0.00 : 53512a: e8 91 10 00 00 callq 5361c0 0.00 : 53512f: 49 89 c4 mov %rax,%r12 : break; 0.00 : 535132: e9 8c f8 ff ff jmpq 5349c3 : { : case AEXPR_OP: : result = transformAExprOp(pstate, a); : break; : case AEXPR_OP_ANY: : result = transformAExprOpAny(pstate, a); 0.00 : 535137: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53513b: 4c 89 ee mov %r13,%rsi 0.00 : 53513e: e8 1d 10 00 00 callq 536160 0.00 : 535143: e9 94 fd ff ff jmpq 534edc : A_Expr *a = (A_Expr *) expr; : : switch (a->kind) : { : case AEXPR_OP: : result = transformAExprOp(pstate, a); 0.00 : 535148: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53514c: 4c 89 ee mov %r13,%rsi 0.00 : 53514f: e8 ec 0d 00 00 callq 535f40 0.00 : 535154: 49 89 c4 mov %rax,%r12 : break; 0.00 : 535157: e9 67 f8 ff ff jmpq 5349c3 0.00 : 53515c: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(expr)) 0.00 : 535160: 3d 90 03 00 00 cmp $0x390,%eax 0.00 : 535165: 0f 84 1d 01 00 00 je 535288 0.00 : 53516b: 3d a7 03 00 00 cmp $0x3a7,%eax 0.00 : 535170: 0f 85 9a fb ff ff jne 534d10 : Node *result; : XmlExpr *xexpr; : Oid targetType; : int32 targetTypmod; : : xexpr = makeNode(XmlExpr); 0.00 : 535176: 48 8b 3d e3 56 68 00 mov 0x6856e3(%rip),%rdi # bba860 0.00 : 53517d: be 38 00 00 00 mov $0x38,%esi 0.00 : 535182: e8 89 3c 26 00 callq 798e10 0.00 : 535187: c7 00 4e 01 00 00 movl $0x14e,(%rax) : xexpr->op = IS_XMLSERIALIZE; 0.00 : 53518d: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : Node *result; : XmlExpr *xexpr; : Oid targetType; : int32 targetTypmod; : : xexpr = makeNode(XmlExpr); 0.00 : 535194: 48 89 c3 mov %rax,%rbx : xexpr->op = IS_XMLSERIALIZE; : xexpr->args = list_make1(coerce_to_specific_type(pstate, 0.00 : 535197: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 53519b: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53519f: e8 7c f6 ff ff callq 534820 0.00 : 5351a4: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5351a8: b9 c6 31 87 00 mov $0x8731c6,%ecx 0.00 : 5351ad: ba 8e 00 00 00 mov $0x8e,%edx 0.00 : 5351b2: 48 89 c6 mov %rax,%rsi 0.00 : 5351b5: e8 b6 c5 ff ff callq 531770 0.00 : 5351ba: 31 f6 xor %esi,%esi 0.00 : 5351bc: 48 89 c7 mov %rax,%rdi 0.00 : 5351bf: e8 8c c6 0a 00 callq 5e1850 0.00 : 5351c4: 48 89 43 20 mov %rax,0x20(%rbx) : transformExprRecurse(pstate, xs->expr), : XMLOID, : "XMLSERIALIZE")); : : typenameTypeIdAndMod(pstate, xs->typeName, &targetType, &targetTypmod); 0.00 : 5351c8: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 5351cc: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 5351d0: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5351d4: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 5351d8: e8 23 e7 00 00 callq 543900 : : xexpr->xmloption = xs->xmloption; 0.00 : 5351dd: 41 8b 45 04 mov 0x4(%r13),%eax : * The actual target type is determined this way. SQL allows char and : * varchar as target types. We allow anything that can be cast implicitly : * from text. This way, user-defined text-like data types automatically : * fit in. : */ : result = coerce_to_target_type(pstate, (Node *) xexpr, 0.00 : 5351e1: 45 31 c9 xor %r9d,%r9d 0.00 : 5351e4: ba 19 00 00 00 mov $0x19,%edx 0.00 : 5351e9: 48 89 de mov %rbx,%rsi : XMLOID, : "XMLSERIALIZE")); : : typenameTypeIdAndMod(pstate, xs->typeName, &targetType, &targetTypmod); : : xexpr->xmloption = xs->xmloption; 0.00 : 5351ec: 89 43 28 mov %eax,0x28(%rbx) : xexpr->location = xs->location; 0.00 : 5351ef: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5351f3: 89 43 34 mov %eax,0x34(%rbx) : /* We actually only need these to be able to parse back the expression. */ : xexpr->type = targetType; 0.00 : 5351f6: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 5351f9: 89 43 2c mov %eax,0x2c(%rbx) : xexpr->typmod = targetTypmod; 0.00 : 5351fc: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 5351ff: 89 43 30 mov %eax,0x30(%rbx) : * The actual target type is determined this way. SQL allows char and : * varchar as target types. We allow anything that can be cast implicitly : * from text. This way, user-defined text-like data types automatically : * fit in. : */ : result = coerce_to_target_type(pstate, (Node *) xexpr, 0.00 : 535202: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : 535205: 44 8b 45 c8 mov -0x38(%rbp),%r8d 0.00 : 535209: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53520d: c7 44 24 08 ff ff ff movl $0xffffffff,0x8(%rsp) 0.00 : 535214: ff 0.00 : 535215: c7 04 24 02 00 00 00 movl $0x2,(%rsp) 0.00 : 53521c: e8 0f c4 ff ff callq 531630 : TEXTOID, targetType, targetTypmod, : COERCION_IMPLICIT, : COERCE_IMPLICIT_CAST, : -1); : if (result == NULL) 0.00 : 535221: 48 85 c0 test %rax,%rax : * The actual target type is determined this way. SQL allows char and : * varchar as target types. We allow anything that can be cast implicitly : * from text. This way, user-defined text-like data types automatically : * fit in. : */ : result = coerce_to_target_type(pstate, (Node *) xexpr, 0.00 : 535224: 49 89 c4 mov %rax,%r12 : TEXTOID, targetType, targetTypmod, : COERCION_IMPLICIT, : COERCE_IMPLICIT_CAST, : -1); : if (result == NULL) 0.00 : 535227: 0f 85 96 f7 ff ff jne 5349c3 : ereport(ERROR, 0.00 : 53522d: 45 31 c0 xor %r8d,%r8d 0.00 : 535230: b9 80 36 87 00 mov $0x873680,%ecx 0.00 : 535235: ba 5e 08 00 00 mov $0x85e,%edx 0.00 : 53523a: be 37 31 87 00 mov $0x873137,%esi 0.00 : 53523f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 535244: e8 77 58 24 00 callq 77aac0 0.00 : 535249: 84 c0 test %al,%al 0.00 : 53524b: 0f 84 87 fa ff ff je 534cd8 0.00 : 535251: 8b 73 34 mov 0x34(%rbx),%esi 0.00 : 535254: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535258: e8 13 54 00 00 callq 53a670 0.00 : 53525d: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 535260: 41 89 c4 mov %eax,%r12d 0.00 : 535263: e8 b8 41 1a 00 callq 6d9420 0.00 : 535268: bf 50 3a 87 00 mov $0x873a50,%edi 0.00 : 53526d: 48 89 c6 mov %rax,%rsi 0.00 : 535270: 31 c0 xor %eax,%eax 0.00 : 535272: e8 29 76 24 00 callq 77c8a0 0.00 : 535277: bf 84 80 10 06 mov $0x6108084,%edi 0.00 : 53527c: 89 c3 mov %eax,%ebx 0.00 : 53527e: e9 26 fe ff ff jmpq 5350a9 0.00 : 535283: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : transformCollateClause(ParseState *pstate, CollateClause *c) : { : CollateExpr *newc; : Oid argtype; : : newc = makeNode(CollateExpr); 0.00 : 535288: 48 8b 3d d1 55 68 00 mov 0x6855d1(%rip),%rdi # bba860 0.00 : 53528f: be 18 00 00 00 mov $0x18,%esi 0.00 : 535294: e8 77 3b 26 00 callq 798e10 0.00 : 535299: c7 00 45 01 00 00 movl $0x145,(%rax) : newc->arg = (Expr *) transformExprRecurse(pstate, c->arg); 0.00 : 53529f: 49 8b 75 08 mov 0x8(%r13),%rsi : transformCollateClause(ParseState *pstate, CollateClause *c) : { : CollateExpr *newc; : Oid argtype; : : newc = makeNode(CollateExpr); 0.00 : 5352a3: 48 89 c3 mov %rax,%rbx : newc->arg = (Expr *) transformExprRecurse(pstate, c->arg); 0.00 : 5352a6: 48 8b 7d 90 mov -0x70(%rbp),%rdi : transformCollateClause(ParseState *pstate, CollateClause *c) : { : CollateExpr *newc; : Oid argtype; : : newc = makeNode(CollateExpr); 0.00 : 5352aa: 49 89 c4 mov %rax,%r12 : newc->arg = (Expr *) transformExprRecurse(pstate, c->arg); 0.00 : 5352ad: e8 6e f5 ff ff callq 534820 0.00 : 5352b2: 48 89 c7 mov %rax,%rdi 0.00 : 5352b5: 48 89 43 08 mov %rax,0x8(%rbx) : : argtype = exprType((Node *) newc->arg); 0.00 : 5352b9: e8 12 ba 0a 00 callq 5e0cd0 : : /* : * The unknown type is not collatable, but coerce_type() takes care of it : * separately, so we'll let it go here. : */ : if (!type_is_collatable(argtype) && argtype != UNKNOWNOID) 0.00 : 5352be: 89 c7 mov %eax,%edi : Oid argtype; : : newc = makeNode(CollateExpr); : newc->arg = (Expr *) transformExprRecurse(pstate, c->arg); : : argtype = exprType((Node *) newc->arg); 0.00 : 5352c0: 41 89 c6 mov %eax,%r14d : : /* : * The unknown type is not collatable, but coerce_type() takes care of it : * separately, so we'll let it go here. : */ : if (!type_is_collatable(argtype) && argtype != UNKNOWNOID) 0.00 : 5352c3: e8 78 ce 23 00 callq 772140 0.00 : 5352c8: 84 c0 test %al,%al 0.00 : 5352ca: 75 0d jne 5352d9 0.00 : 5352cc: 41 81 fe c1 02 00 00 cmp $0x2c1,%r14d 0.00 : 5352d3: 0f 85 b4 05 00 00 jne 53588d : (errcode(ERRCODE_DATATYPE_MISMATCH), : errmsg("collations are not supported by type %s", : format_type_be(argtype)), : parser_errposition(pstate, c->location))); : : newc->collOid = LookupCollation(pstate, c->collname, c->location); 0.00 : 5352d9: 41 8b 55 18 mov 0x18(%r13),%edx 0.00 : 5352dd: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 5352e1: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5352e5: e8 06 d8 00 00 callq 542af0 0.00 : 5352ea: 89 43 10 mov %eax,0x10(%rbx) : newc->location = c->location; 0.00 : 5352ed: 41 8b 45 18 mov 0x18(%r13),%eax 0.00 : 5352f1: 89 43 14 mov %eax,0x14(%rbx) : break; : } : : case T_CollateClause: : result = transformCollateClause(pstate, (CollateClause *) expr); : break; 0.00 : 5352f4: e9 ca f6 ff ff jmpq 5349c3 0.00 : 5352f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : unknown_attribute(pstate, result, strVal(n), location); : result = newresult; : } : } : /* process trailing subscripts, if any */ : if (subscripts) 0.00 : 535300: 4d 85 ed test %r13,%r13 0.00 : 535303: 0f 84 ba f6 ff ff je 5349c3 : result = (Node *) transformArraySubscripts(pstate, 0.00 : 535309: 4c 89 e7 mov %r12,%rdi 0.00 : 53530c: e8 df bc 0a 00 callq 5e0ff0 0.00 : 535311: 4c 89 e7 mov %r12,%rdi 0.00 : 535314: 89 c3 mov %eax,%ebx 0.00 : 535316: e8 b5 b9 0a 00 callq 5e0cd0 0.00 : 53531b: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53531f: 4c 89 e6 mov %r12,%rsi 0.00 : 535322: 4d 89 e9 mov %r13,%r9 0.00 : 535325: 41 89 d8 mov %ebx,%r8d 0.00 : 535328: 31 c9 xor %ecx,%ecx 0.00 : 53532a: 89 c2 mov %eax,%edx 0.00 : 53532c: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 535333: 00 0.00 : 535334: e8 67 53 00 00 callq 53a6a0 0.00 : 535339: 49 89 c4 mov %rax,%r12 0.00 : 53533c: e9 82 f6 ff ff jmpq 5349c3 : { : Oid targetType; : Oid elementType; : int32 targetTypmod; : : typenameTypeIdAndMod(pstate, tc->typeName, 0.00 : 535341: 48 8d 5d c8 lea -0x38(%rbp),%rbx 0.00 : 535345: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 535349: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53534d: 4c 8d 75 cc lea -0x34(%rbp),%r14 0.00 : 535351: 48 89 d9 mov %rbx,%rcx 0.00 : 535354: 4c 89 f2 mov %r14,%rdx 0.00 : 535357: e8 a4 e5 00 00 callq 543900 : * If target is a domain over array, work with the base : * array type here. transformTypeCast below will cast the : * array type to the domain. In the usual case that the : * target is not a domain, transformTypeCast is a no-op. : */ : targetType = getBaseTypeAndTypmod(targetType, 0.00 : 53535c: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 53535f: 48 89 de mov %rbx,%rsi 0.00 : 535362: e8 59 da 23 00 callq 772dc0 0.00 : 535367: 89 c7 mov %eax,%edi 0.00 : 535369: 89 45 cc mov %eax,-0x34(%rbp) : &targetTypmod); : elementType = get_element_type(targetType); 0.00 : 53536c: e8 ff ce 23 00 callq 772270 : if (OidIsValid(elementType)) 0.00 : 535371: 85 c0 test %eax,%eax : * array type to the domain. In the usual case that the : * target is not a domain, transformTypeCast is a no-op. : */ : targetType = getBaseTypeAndTypmod(targetType, : &targetTypmod); : elementType = get_element_type(targetType); 0.00 : 535373: 41 89 c4 mov %eax,%r12d : if (OidIsValid(elementType)) 0.00 : 535376: 0f 85 8c 02 00 00 jne 535608 0.00 : 53537c: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 535380: e9 e8 fa ff ff jmpq 534e6d : * CAST symbol, but if there is none then use the location of the type : * name (this can happen in TypeName 'string' syntax, for instance). : */ : location = tc->location; : if (location < 0) : location = tc->typeName->location; 0.00 : 535385: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 535389: 8b 58 30 mov 0x30(%rax),%ebx 0.00 : 53538c: e9 1b fb ff ff jmpq 534eac : : hookresult = (*pstate->p_post_columnref_hook) (pstate, cref, node); : if (node == NULL) : node = hookresult; : else if (hookresult != NULL) : ereport(ERROR, 0.00 : 535391: 49 89 dc mov %rbx,%r12 : } : : /* : * Throw error if no translation found. : */ : if (node == NULL) 0.00 : 535394: 4d 85 e4 test %r12,%r12 0.00 : 535397: 0f 85 26 f6 ff ff jne 5349c3 : { : switch (crerr) 0.00 : 53539d: 41 83 fe 01 cmp $0x1,%r14d 0.00 : 5353a1: 0f 84 77 03 00 00 je 53571e 0.00 : 5353a7: 0f 83 de 02 00 00 jae 53568b : { : case CRERR_NO_COLUMN: : errorMissingColumn(pstate, relname, colname, cref->location); 0.00 : 5353ad: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 5353b1: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 5353b5: 4c 89 fa mov %r15,%rdx 0.00 : 5353b8: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5353bc: e8 5f ac 00 00 callq 540020 : * : * Currently, if a catalog name is given then it must equal the current : * database name; we check it here and then discard it. : *---------- : */ : switch (list_length(cref->fields)) 0.00 : 5353c1: 83 f8 03 cmp $0x3,%eax 0.00 : 5353c4: 74 67 je 53542d 0.00 : 5353c6: 83 f8 04 cmp $0x4,%eax 0.00 : 5353c9: 0f 85 b1 fb ff ff jne 534f80 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5353cf: 48 8b 52 08 mov 0x8(%rdx),%rdx : relname = strVal(field3); : : /* : * We check the catalog name and then ignore it. : */ : if (strcmp(catname, get_database_name(MyDatabaseId)) != 0) 0.00 : 5353d3: 8b 3d cf 4c 68 00 mov 0x684ccf(%rip),%edi # bba0a8 : break; : } : case 4: : { : Node *field1 = (Node *) linitial(cref->fields); : Node *field2 = (Node *) lsecond(cref->fields); 0.00 : 5353d9: 48 8b 4a 08 mov 0x8(%rdx),%rcx : Node *field3 = (Node *) lthird(cref->fields); 0.00 : 5353dd: 48 8b 71 08 mov 0x8(%rcx),%rsi : Node *field4 = (Node *) lfourth(cref->fields); 0.00 : 5353e1: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 5353e5: 4c 8b 30 mov (%rax),%r14 : char *catname; : : Assert(IsA(field1, String)); : catname = strVal(field1); 0.00 : 5353e8: 48 8b 02 mov (%rdx),%rax 0.00 : 5353eb: 48 8b 58 08 mov 0x8(%rax),%rbx : Assert(IsA(field2, String)); : nspname = strVal(field2); 0.00 : 5353ef: 48 8b 01 mov (%rcx),%rax 0.00 : 5353f2: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5353f6: 48 89 45 a0 mov %rax,-0x60(%rbp) : Assert(IsA(field3, String)); : relname = strVal(field3); 0.00 : 5353fa: 48 8b 06 mov (%rsi),%rax 0.00 : 5353fd: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 535401: 48 89 45 98 mov %rax,-0x68(%rbp) : : /* : * We check the catalog name and then ignore it. : */ : if (strcmp(catname, get_database_name(MyDatabaseId)) != 0) 0.00 : 535405: e8 86 58 02 00 callq 55ac90 0.00 : 53540a: 48 89 df mov %rbx,%rdi 0.00 : 53540d: 48 89 c6 mov %rax,%rsi 0.00 : 535410: e8 1b 49 f3 ff callq 469d30 0.00 : 535415: 85 c0 test %eax,%eax 0.00 : 535417: 0f 84 37 02 00 00 je 535654 0.00 : 53541d: 41 be 02 00 00 00 mov $0x2,%r14d 0.00 : 535423: 45 31 ff xor %r15d,%r15d 0.00 : 535426: 31 db xor %ebx,%ebx 0.00 : 535428: e9 6e fb ff ff jmpq 534f9b 0.00 : 53542d: 48 8b 52 08 mov 0x8(%rdx),%rdx : nspname = strVal(field1); : Assert(IsA(field2, String)); : relname = strVal(field2); : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 535431: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535435: 4c 8d 45 c8 lea -0x38(%rbp),%r8 : break; : } : case 3: : { : Node *field1 = (Node *) linitial(cref->fields); : Node *field2 = (Node *) lsecond(cref->fields); 0.00 : 535439: 48 8b 4a 08 mov 0x8(%rdx),%rcx : Node *field3 = (Node *) lthird(cref->fields); 0.00 : 53543d: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 535441: 48 8b 18 mov (%rax),%rbx : : Assert(IsA(field1, String)); : nspname = strVal(field1); 0.00 : 535444: 48 8b 02 mov (%rdx),%rax 0.00 : 535447: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 53544b: 48 89 45 a0 mov %rax,-0x60(%rbp) : Assert(IsA(field2, String)); : relname = strVal(field2); 0.00 : 53544f: 48 8b 01 mov (%rcx),%rax : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 535452: 48 8b 75 a0 mov -0x60(%rbp),%rsi : Node *field3 = (Node *) lthird(cref->fields); : : Assert(IsA(field1, String)); : nspname = strVal(field1); : Assert(IsA(field2, String)); : relname = strVal(field2); 0.00 : 535456: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 53545a: 48 89 45 98 mov %rax,-0x68(%rbp) : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 53545e: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 535462: 48 89 c2 mov %rax,%rdx 0.00 : 535465: e8 86 ae 00 00 callq 5402f0 : cref->location, : &levels_up); : if (rte == NULL) 0.00 : 53546a: 48 85 c0 test %rax,%rax : nspname = strVal(field1); : Assert(IsA(field2, String)); : relname = strVal(field2); : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 53546d: 49 89 c4 mov %rax,%r12 : cref->location, : &levels_up); : if (rte == NULL) 0.00 : 535470: 0f 84 c5 02 00 00 je 53573b : crerr = CRERR_NO_RTE; : break; : } : : /* Whole-row reference? */ : if (IsA(field3, A_Star)) 0.00 : 535476: 81 3b 89 03 00 00 cmpl $0x389,(%rbx) 0.00 : 53547c: 0f 84 b4 01 00 00 je 535636 : node = transformWholeRowRef(pstate, rte, cref->location); : break; : } : : Assert(IsA(field3, String)); : colname = strVal(field3); 0.00 : 535482: 4c 8b 7b 08 mov 0x8(%rbx),%r15 : : Assert(IsA(field4, String)); : colname = strVal(field4); : : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); 0.00 : 535486: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 53548a: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53548e: 4c 89 fa mov %r15,%rdx 0.00 : 535491: 4c 89 e6 mov %r12,%rsi 0.00 : 535494: e8 a7 a9 00 00 callq 53fe40 : if (node == NULL) 0.00 : 535499: 48 85 c0 test %rax,%rax : : Assert(IsA(field4, String)); : colname = strVal(field4); : : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); 0.00 : 53549c: 48 89 c3 mov %rax,%rbx : if (node == NULL) 0.00 : 53549f: 0f 84 2b 06 00 00 je 535ad0 : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); : node = ParseFuncOrColumn(pstate, 0.00 : 5354a5: 45 31 f6 xor %r14d,%r14d 0.00 : 5354a8: e9 ee fa ff ff jmpq 534f9b : case 1: : { : Node *field1 = (Node *) linitial(cref->fields); : : Assert(IsA(field1, String)); : colname = strVal(field1); 0.00 : 5354ad: 48 8b 42 08 mov 0x8(%rdx),%rax : : /* Try to identify as an unqualified column */ : node = colNameToVar(pstate, colname, false, cref->location); 0.00 : 5354b1: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 5354b5: 31 d2 xor %edx,%edx 0.00 : 5354b7: 48 8b 7d 90 mov -0x70(%rbp),%rdi : case 1: : { : Node *field1 = (Node *) linitial(cref->fields); : : Assert(IsA(field1, String)); : colname = strVal(field1); 0.00 : 5354bb: 48 8b 00 mov (%rax),%rax 0.00 : 5354be: 4c 8b 78 08 mov 0x8(%rax),%r15 : : /* Try to identify as an unqualified column */ : node = colNameToVar(pstate, colname, false, cref->location); 0.00 : 5354c2: 4c 89 fe mov %r15,%rsi 0.00 : 5354c5: e8 e6 ac 00 00 callq 5401b0 : : if (node == NULL) 0.00 : 5354ca: 48 85 c0 test %rax,%rax : : Assert(IsA(field1, String)); : colname = strVal(field1); : : /* Try to identify as an unqualified column */ : node = colNameToVar(pstate, colname, false, cref->location); 0.00 : 5354cd: 48 89 c3 mov %rax,%rbx : : if (node == NULL) 0.00 : 5354d0: 0f 84 75 02 00 00 je 53574b : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); : node = ParseFuncOrColumn(pstate, 0.00 : 5354d6: 45 31 f6 xor %r14d,%r14d 0.00 : 5354d9: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 5354e0: 00 0.00 : 5354e1: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5354e8: 00 0.00 : 5354e9: e9 ad fa ff ff jmpq 534f9b : : if (IsA(n, A_Indices)) : subscripts = lappend(subscripts, n); : else if (IsA(n, A_Star)) : { : ereport(ERROR, 0.00 : 5354ee: 45 31 c0 xor %r8d,%r8d 0.00 : 5354f1: b9 e0 34 87 00 mov $0x8734e0,%ecx 0.00 : 5354f6: ba ba 01 00 00 mov $0x1ba,%edx 0.00 : 5354fb: be 37 31 87 00 mov $0x873137,%esi 0.00 : 535500: bf 14 00 00 00 mov $0x14,%edi 0.00 : 535505: e8 b6 55 24 00 callq 77aac0 0.00 : 53550a: 84 c0 test %al,%al 0.00 : 53550c: 0f 84 c6 f7 ff ff je 534cd8 0.00 : 535512: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 535515: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535519: e8 52 51 00 00 callq 53a670 0.00 : 53551e: bf 50 39 87 00 mov $0x873950,%edi 0.00 : 535523: 41 89 c4 mov %eax,%r12d 0.00 : 535526: 31 c0 xor %eax,%eax 0.00 : 535528: e8 73 73 24 00 callq 77c8a0 0.00 : 53552d: bf 40 04 00 00 mov $0x440,%edi 0.00 : 535532: 89 c3 mov %eax,%ebx 0.00 : 535534: e9 70 fb ff ff jmpq 5350a9 0.00 : 535539: 48 8b 52 08 mov 0x8(%rdx),%rdx : : Assert(IsA(field1, String)); : relname = strVal(field1); : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 53553d: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535541: 4c 8d 45 c8 lea -0x38(%rbp),%r8 0.00 : 535545: 31 f6 xor %esi,%esi : break; : } : case 2: : { : Node *field1 = (Node *) linitial(cref->fields); : Node *field2 = (Node *) lsecond(cref->fields); 0.00 : 535547: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 53554b: 48 8b 18 mov (%rax),%rbx : : Assert(IsA(field1, String)); : relname = strVal(field1); 0.00 : 53554e: 48 8b 02 mov (%rdx),%rax 0.00 : 535551: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 535555: 48 89 45 98 mov %rax,-0x68(%rbp) : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 535559: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 53555d: 48 89 c2 mov %rax,%rdx 0.00 : 535560: e8 8b ad 00 00 callq 5402f0 : cref->location, : &levels_up); : if (rte == NULL) 0.00 : 535565: 48 85 c0 test %rax,%rax : : Assert(IsA(field1, String)); : relname = strVal(field1); : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 535568: 49 89 c4 mov %rax,%r12 : cref->location, : &levels_up); : if (rte == NULL) 0.00 : 53556b: 0f 84 9e 02 00 00 je 53580f : crerr = CRERR_NO_RTE; : break; : } : : /* Whole-row reference? */ : if (IsA(field2, A_Star)) 0.00 : 535571: 81 3b 89 03 00 00 cmpl $0x389,(%rbx) 0.00 : 535577: 0f 84 7b 01 00 00 je 5356f8 : node = transformWholeRowRef(pstate, rte, cref->location); : break; : } : : Assert(IsA(field2, String)); : colname = strVal(field2); 0.00 : 53557d: 4c 8b 7b 08 mov 0x8(%rbx),%r15 : : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); 0.00 : 535581: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 535585: 48 89 c6 mov %rax,%rsi 0.00 : 535588: 48 8b 7d 90 mov -0x70(%rbp),%rdi : if (node == NULL) 0.00 : 53558c: 45 31 f6 xor %r14d,%r14d : : Assert(IsA(field2, String)); : colname = strVal(field2); : : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); 0.00 : 53558f: 4c 89 fa mov %r15,%rdx 0.00 : 535592: e8 a9 a8 00 00 callq 53fe40 : if (node == NULL) 0.00 : 535597: 48 85 c0 test %rax,%rax : : Assert(IsA(field2, String)); : colname = strVal(field2); : : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); 0.00 : 53559a: 48 89 c3 mov %rax,%rbx : if (node == NULL) 0.00 : 53559d: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5355a4: 00 0.00 : 5355a5: 0f 85 f0 f9 ff ff jne 534f9b : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 5355ab: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5355af: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5355b3: 4c 89 e6 mov %r12,%rsi : node = ParseFuncOrColumn(pstate, 0.00 : 5355b6: 45 31 f6 xor %r14d,%r14d : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 5355b9: e8 b2 e7 ff ff callq 533d70 : node = ParseFuncOrColumn(pstate, 0.00 : 5355be: 31 f6 xor %esi,%esi : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 5355c0: 48 89 c7 mov %rax,%rdi : node = ParseFuncOrColumn(pstate, 0.00 : 5355c3: 45 8b 65 10 mov 0x10(%r13),%r12d 0.00 : 5355c7: e8 84 c2 0a 00 callq 5e1850 0.00 : 5355cc: 4c 89 ff mov %r15,%rdi 0.00 : 5355cf: 48 89 c3 mov %rax,%rbx 0.00 : 5355d2: e8 19 a1 0c 00 callq 5ff6f0 0.00 : 5355d7: 31 f6 xor %esi,%esi 0.00 : 5355d9: 48 89 c7 mov %rax,%rdi 0.00 : 5355dc: e8 6f c2 0a 00 callq 5e1850 0.00 : 5355e1: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5355e5: 48 89 da mov %rbx,%rdx 0.00 : 5355e8: 48 89 c6 mov %rax,%rsi 0.00 : 5355eb: 45 89 e0 mov %r12d,%r8d 0.00 : 5355ee: 31 c9 xor %ecx,%ecx 0.00 : 5355f0: e8 3b 33 00 00 callq 538930 0.00 : 5355f5: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5355fc: 00 0.00 : 5355fd: 48 89 c3 mov %rax,%rbx 0.00 : 535600: e9 96 f9 ff ff jmpq 534f9b 0.00 : 535605: 0f 1f 00 nopl (%rax) : targetType = getBaseTypeAndTypmod(targetType, : &targetTypmod); : elementType = get_element_type(targetType); : if (OidIsValid(elementType)) : { : tc = copyObject(tc); 0.00 : 535608: 4c 89 ef mov %r13,%rdi 0.00 : 53560b: e8 80 eb 0a 00 callq 5e4190 : tc->arg = transformArrayExpr(pstate, 0.00 : 535610: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 535613: 48 8b 70 08 mov 0x8(%rax),%rsi : targetType = getBaseTypeAndTypmod(targetType, : &targetTypmod); : elementType = get_element_type(targetType); : if (OidIsValid(elementType)) : { : tc = copyObject(tc); 0.00 : 535617: 49 89 c7 mov %rax,%r15 : tc->arg = transformArrayExpr(pstate, 0.00 : 53561a: 44 8b 45 c8 mov -0x38(%rbp),%r8d 0.00 : 53561e: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535622: 44 89 e1 mov %r12d,%ecx 0.00 : 535625: e8 36 05 00 00 callq 535b60 0.00 : 53562a: 48 89 c6 mov %rax,%rsi 0.00 : 53562d: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 535631: e9 37 f8 ff ff jmpq 534e6d : } : : /* Whole-row reference? */ : if (IsA(field4, A_Star)) : { : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 535636: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 53563a: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53563e: 4c 89 e6 mov %r12,%rsi 0.00 : 535641: 45 31 f6 xor %r14d,%r14d 0.00 : 535644: 45 31 ff xor %r15d,%r15d 0.00 : 535647: e8 24 e7 ff ff callq 533d70 0.00 : 53564c: 48 89 c3 mov %rax,%rbx 0.00 : 53564f: e9 47 f9 ff ff jmpq 534f9b : crerr = CRERR_WRONG_DB; : break; : } : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 535654: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 535658: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 53565c: 4c 8d 45 c8 lea -0x38(%rbp),%r8 0.00 : 535660: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 535664: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535668: e8 83 ac 00 00 callq 5402f0 : cref->location, : &levels_up); : if (rte == NULL) 0.00 : 53566d: 48 85 c0 test %rax,%rax : crerr = CRERR_WRONG_DB; : break; : } : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, 0.00 : 535670: 49 89 c4 mov %rax,%r12 : cref->location, : &levels_up); : if (rte == NULL) 0.00 : 535673: 0f 84 c2 00 00 00 je 53573b : crerr = CRERR_NO_RTE; : break; : } : : /* Whole-row reference? */ : if (IsA(field4, A_Star)) 0.00 : 535679: 41 81 3e 89 03 00 00 cmpl $0x389,(%r14) 0.00 : 535680: 74 b4 je 535636 : node = transformWholeRowRef(pstate, rte, cref->location); : break; : } : : Assert(IsA(field4, String)); : colname = strVal(field4); 0.00 : 535682: 4d 8b 7e 08 mov 0x8(%r14),%r15 0.00 : 535686: e9 fb fd ff ff jmpq 535486 : /* : * Throw error if no translation found. : */ : if (node == NULL) : { : switch (crerr) 0.00 : 53568b: 41 83 fe 02 cmp $0x2,%r14d 0.00 : 53568f: 90 nop 0.00 : 535690: 0f 84 21 01 00 00 je 5357b7 0.00 : 535696: 41 83 fe 03 cmp $0x3,%r14d 0.00 : 53569a: 0f 85 23 f3 ff ff jne 5349c3 : errmsg("cross-database references are not implemented: %s", : NameListToString(cref->fields)), : parser_errposition(pstate, cref->location))); : break; : case CRERR_TOO_MANY: : ereport(ERROR, 0.00 : 5356a0: 45 31 c0 xor %r8d,%r8d 0.00 : 5356a3: b9 a0 34 87 00 mov $0x8734a0,%ecx 0.00 : 5356a8: ba 1b 03 00 00 mov $0x31b,%edx 0.00 : 5356ad: be 37 31 87 00 mov $0x873137,%esi 0.00 : 5356b2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5356b7: e8 04 54 24 00 callq 77aac0 0.00 : 5356bc: 84 c0 test %al,%al 0.00 : 5356be: 0f 84 14 f6 ff ff je 534cd8 0.00 : 5356c4: 41 8b 75 10 mov 0x10(%r13),%esi 0.00 : 5356c8: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5356cc: e8 9f 4f 00 00 callq 53a670 0.00 : 5356d1: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5356d5: 41 89 c4 mov %eax,%r12d 0.00 : 5356d8: e8 43 94 fb ff callq 4eeb20 0.00 : 5356dd: bf b0 29 7c 00 mov $0x7c29b0,%edi 0.00 : 5356e2: 48 89 c6 mov %rax,%rsi 0.00 : 5356e5: 31 c0 xor %eax,%eax 0.00 : 5356e7: e8 b4 71 24 00 callq 77c8a0 0.00 : 5356ec: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 5356f1: 89 c3 mov %eax,%ebx 0.00 : 5356f3: e9 b1 f9 ff ff jmpq 5350a9 : } : : /* Whole-row reference? */ : if (IsA(field2, A_Star)) : { : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 5356f8: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5356fc: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535700: 48 89 c6 mov %rax,%rsi 0.00 : 535703: 45 31 f6 xor %r14d,%r14d 0.00 : 535706: 45 31 ff xor %r15d,%r15d 0.00 : 535709: e8 62 e6 ff ff callq 533d70 0.00 : 53570e: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 535715: 00 0.00 : 535716: 48 89 c3 mov %rax,%rbx 0.00 : 535719: e9 7d f8 ff ff jmpq 534f9b : { : case CRERR_NO_COLUMN: : errorMissingColumn(pstate, relname, colname, cref->location); : break; : case CRERR_NO_RTE: : errorMissingRTE(pstate, makeRangeVar(nspname, relname, 0.00 : 53571e: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 535722: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 535726: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 53572a: e8 51 bf 0b 00 callq 5f1680 0.00 : 53572f: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535733: 48 89 c6 mov %rax,%rsi 0.00 : 535736: e8 f5 ad 00 00 callq 540530 : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); : node = ParseFuncOrColumn(pstate, 0.00 : 53573b: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 535741: 45 31 ff xor %r15d,%r15d 0.00 : 535744: 31 db xor %ebx,%ebx 0.00 : 535746: e9 50 f8 ff ff jmpq 534f9b : * Consider the possibility that it's VALUE in a domain : * check expression. (We handle VALUE as a name, not a : * keyword, to avoid breaking a lot of applications that : * have used VALUE as a column name in the past.) : */ : if (pstate->p_value_substitute != NULL && 0.00 : 53574b: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 53574f: 4c 8b 46 70 mov 0x70(%rsi),%r8 0.00 : 535753: 4d 85 c0 test %r8,%r8 0.00 : 535756: 74 15 je 53576d : strcmp(colname, "value") == 0) 0.00 : 535758: bf 7b 38 8c 00 mov $0x8c387b,%edi 0.00 : 53575d: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 535762: 4c 89 fe mov %r15,%rsi : * Consider the possibility that it's VALUE in a domain : * check expression. (We handle VALUE as a name, not a : * keyword, to avoid breaking a lot of applications that : * have used VALUE as a column name in the past.) : */ : if (pstate->p_value_substitute != NULL && 0.00 : 535765: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 535767: 0f 84 83 02 00 00 je 5359f0 : * : * This is a hack for backwards compatibility with : * PostQUEL-inspired syntax. The preferred form now is : * "rel.*". : */ : rte = refnameRangeTblEntry(pstate, NULL, colname, 0.00 : 53576d: 41 8b 4d 10 mov 0x10(%r13),%ecx 0.00 : 535771: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535775: 4c 8d 45 c8 lea -0x38(%rbp),%r8 0.00 : 535779: 31 f6 xor %esi,%esi 0.00 : 53577b: 4c 89 fa mov %r15,%rdx 0.00 : 53577e: e8 6d ab 00 00 callq 5402f0 : cref->location, : &levels_up); : if (rte) 0.00 : 535783: 48 85 c0 test %rax,%rax : * : * This is a hack for backwards compatibility with : * PostQUEL-inspired syntax. The preferred form now is : * "rel.*". : */ : rte = refnameRangeTblEntry(pstate, NULL, colname, 0.00 : 535786: 48 89 c6 mov %rax,%rsi : cref->location, : &levels_up); : if (rte) 0.00 : 535789: 0f 84 47 fd ff ff je 5354d6 : node = transformWholeRowRef(pstate, rte, 0.00 : 53578f: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 535793: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535797: 45 31 f6 xor %r14d,%r14d 0.00 : 53579a: e8 d1 e5 ff ff callq 533d70 0.00 : 53579f: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 5357a6: 00 0.00 : 5357a7: 48 89 c3 mov %rax,%rbx 0.00 : 5357aa: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5357b1: 00 0.00 : 5357b2: e9 e4 f7 ff ff jmpq 534f9b : case CRERR_NO_RTE: : errorMissingRTE(pstate, makeRangeVar(nspname, relname, : cref->location)); : break; : case CRERR_WRONG_DB: : ereport(ERROR, 0.00 : 5357b7: 45 31 c0 xor %r8d,%r8d 0.00 : 5357ba: b9 a0 34 87 00 mov $0x8734a0,%ecx 0.00 : 5357bf: ba 14 03 00 00 mov $0x314,%edx 0.00 : 5357c4: be 37 31 87 00 mov $0x873137,%esi 0.00 : 5357c9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5357ce: e8 ed 52 24 00 callq 77aac0 0.00 : 5357d3: 84 c0 test %al,%al 0.00 : 5357d5: 0f 84 fd f4 ff ff je 534cd8 0.00 : 5357db: 41 8b 75 10 mov 0x10(%r13),%esi 0.00 : 5357df: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5357e3: e8 88 4e 00 00 callq 53a670 0.00 : 5357e8: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5357ec: 41 89 c4 mov %eax,%r12d 0.00 : 5357ef: e8 2c 93 fb ff callq 4eeb20 0.00 : 5357f4: bf 78 29 7c 00 mov $0x7c2978,%edi 0.00 : 5357f9: 48 89 c6 mov %rax,%rsi 0.00 : 5357fc: 31 c0 xor %eax,%eax 0.00 : 5357fe: e8 9d 70 24 00 callq 77c8a0 0.00 : 535803: bf 40 04 00 00 mov $0x440,%edi 0.00 : 535808: 89 c3 mov %eax,%ebx 0.00 : 53580a: e9 9a f8 ff ff jmpq 5350a9 : : /* Locate the referenced RTE */ : rte = refnameRangeTblEntry(pstate, nspname, relname, : cref->location, : &levels_up); : if (rte == NULL) 0.00 : 53580f: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 535815: 45 31 ff xor %r15d,%r15d 0.00 : 535818: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 53581f: 00 0.00 : 535820: 31 db xor %ebx,%ebx 0.00 : 535822: e9 74 f7 ff ff jmpq 534f9b : targetType, targetTypmod, : COERCION_EXPLICIT, : COERCE_EXPLICIT_CAST, : location); : if (result == NULL) : ereport(ERROR, 0.00 : 535827: 45 31 c0 xor %r8d,%r8d 0.00 : 53582a: b9 40 35 87 00 mov $0x873540,%ecx 0.00 : 53582f: ba 09 09 00 00 mov $0x909,%edx 0.00 : 535834: be 37 31 87 00 mov $0x873137,%esi 0.00 : 535839: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53583e: e8 7d 52 24 00 callq 77aac0 0.00 : 535843: 84 c0 test %al,%al 0.00 : 535845: 0f 84 8d f4 ff ff je 534cd8 0.00 : 53584b: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53584f: 4c 89 e2 mov %r12,%rdx 0.00 : 535852: 89 de mov %ebx,%esi 0.00 : 535854: e8 f7 a9 ff ff callq 530250 0.00 : 535859: 8b 7d c8 mov -0x38(%rbp),%edi 0.00 : 53585c: 41 89 c4 mov %eax,%r12d 0.00 : 53585f: e8 bc 3b 1a 00 callq 6d9420 0.00 : 535864: 44 89 ef mov %r13d,%edi 0.00 : 535867: 48 89 c3 mov %rax,%rbx 0.00 : 53586a: e8 b1 3b 1a 00 callq 6d9420 0.00 : 53586f: 48 89 da mov %rbx,%rdx 0.00 : 535872: 48 89 c6 mov %rax,%rsi 0.00 : 535875: bf 42 21 87 00 mov $0x872142,%edi 0.00 : 53587a: 31 c0 xor %eax,%eax 0.00 : 53587c: e8 1f 70 24 00 callq 77c8a0 0.00 : 535881: bf 84 80 10 06 mov $0x6108084,%edi 0.00 : 535886: 89 c3 mov %eax,%ebx 0.00 : 535888: e9 1c f8 ff ff jmpq 5350a9 : /* : * The unknown type is not collatable, but coerce_type() takes care of it : * separately, so we'll let it go here. : */ : if (!type_is_collatable(argtype) && argtype != UNKNOWNOID) : ereport(ERROR, 0.00 : 53588d: 45 31 c0 xor %r8d,%r8d 0.00 : 535890: b9 60 35 87 00 mov $0x873560,%ecx 0.00 : 535895: ba 27 09 00 00 mov $0x927,%edx 0.00 : 53589a: be 37 31 87 00 mov $0x873137,%esi 0.00 : 53589f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5358a4: e8 17 52 24 00 callq 77aac0 0.00 : 5358a9: 84 c0 test %al,%al 0.00 : 5358ab: 0f 84 27 f4 ff ff je 534cd8 0.00 : 5358b1: 41 8b 75 18 mov 0x18(%r13),%esi 0.00 : 5358b5: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5358b9: e8 b2 4d 00 00 callq 53a670 0.00 : 5358be: 44 89 f7 mov %r14d,%edi 0.00 : 5358c1: 41 89 c4 mov %eax,%r12d 0.00 : 5358c4: e8 57 3b 1a 00 callq 6d9420 0.00 : 5358c9: bf 28 3a 87 00 mov $0x873a28,%edi 0.00 : 5358ce: 48 89 c6 mov %rax,%rsi 0.00 : 5358d1: 31 c0 xor %eax,%eax 0.00 : 5358d3: e8 c8 6f 24 00 callq 77c8a0 0.00 : 5358d8: bf 84 80 00 04 mov $0x4008084,%edi 0.00 : 5358dd: 89 c3 mov %eax,%ebx 0.00 : 5358df: e9 c5 f7 ff ff jmpq 5350a9 : (errcode(ERRCODE_UNDEFINED_COLUMN), : errmsg("could not identify column \"%s\" in record data type", : attname), : parser_errposition(pstate, location))); : else : ereport(ERROR, 0.00 : 5358e4: 45 31 c0 xor %r8d,%r8d 0.00 : 5358e7: b9 00 35 87 00 mov $0x873500,%ecx 0.00 : 5358ec: ba 9e 01 00 00 mov $0x19e,%edx 0.00 : 5358f1: be 37 31 87 00 mov $0x873137,%esi 0.00 : 5358f6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5358fb: e8 c0 51 24 00 callq 77aac0 0.00 : 535900: 84 c0 test %al,%al 0.00 : 535902: 0f 84 d0 f3 ff ff je 534cd8 0.00 : 535908: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 53590b: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53590f: e8 5c 4d 00 00 callq 53a670 0.00 : 535914: 89 df mov %ebx,%edi 0.00 : 535916: 41 89 c4 mov %eax,%r12d 0.00 : 535919: e8 02 3b 1a 00 callq 6d9420 0.00 : 53591e: bf e0 39 87 00 mov $0x8739e0,%edi 0.00 : 535923: 48 89 c2 mov %rax,%rdx 0.00 : 535926: 4c 89 ee mov %r13,%rsi 0.00 : 535929: 31 c0 xor %eax,%eax 0.00 : 53592b: e8 70 6f 24 00 callq 77c8a0 0.00 : 535930: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 535935: 89 c3 mov %eax,%ebx 0.00 : 535937: e9 6d f7 ff ff jmpq 5350a9 0.00 : 53593c: 0f 1f 40 00 nopl 0x0(%rax) : { : /* Have to do it by reference to the type of the expression */ : Oid relTypeId = exprType(relref); : : if (ISCOMPLEX(relTypeId)) : ereport(ERROR, 0.00 : 535940: 45 31 c0 xor %r8d,%r8d 0.00 : 535943: b9 00 35 87 00 mov $0x873500,%ecx 0.00 : 535948: ba 91 01 00 00 mov $0x191,%edx 0.00 : 53594d: be 37 31 87 00 mov $0x873137,%esi 0.00 : 535952: bf 14 00 00 00 mov $0x14,%edi 0.00 : 535957: e8 64 51 24 00 callq 77aac0 0.00 : 53595c: 84 c0 test %al,%al 0.00 : 53595e: 0f 84 74 f3 ff ff je 534cd8 0.00 : 535964: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 535967: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 53596b: e8 00 4d 00 00 callq 53a670 0.00 : 535970: 89 df mov %ebx,%edi 0.00 : 535972: 41 89 c4 mov %eax,%r12d 0.00 : 535975: e8 a6 3a 1a 00 callq 6d9420 0.00 : 53597a: bf 80 39 87 00 mov $0x873980,%edi 0.00 : 53597f: 48 89 c2 mov %rax,%rdx 0.00 : 535982: 4c 89 ee mov %r13,%rsi 0.00 : 535985: 31 c0 xor %eax,%eax 0.00 : 535987: e8 14 6f 24 00 callq 77c8a0 0.00 : 53598c: bf 84 70 00 03 mov $0x3007084,%edi 0.00 : 535991: 89 c3 mov %eax,%ebx 0.00 : 535993: e9 11 f7 ff ff jmpq 5350a9 : : hookresult = (*pstate->p_post_columnref_hook) (pstate, cref, node); : if (node == NULL) : node = hookresult; : else if (hookresult != NULL) : ereport(ERROR, 0.00 : 535998: 45 31 c0 xor %r8d,%r8d 0.00 : 53599b: b9 a0 34 87 00 mov $0x8734a0,%ecx 0.00 : 5359a0: ba fe 02 00 00 mov $0x2fe,%edx 0.00 : 5359a5: be 37 31 87 00 mov $0x873137,%esi 0.00 : 5359aa: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5359af: e8 0c 51 24 00 callq 77aac0 0.00 : 5359b4: 84 c0 test %al,%al 0.00 : 5359b6: 0f 84 1c f3 ff ff je 534cd8 0.00 : 5359bc: 41 8b 75 10 mov 0x10(%r13),%esi 0.00 : 5359c0: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 5359c4: e8 a7 4c 00 00 callq 53a670 0.00 : 5359c9: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 5359cd: 41 89 c4 mov %eax,%r12d 0.00 : 5359d0: e8 4b 91 fb ff callq 4eeb20 0.00 : 5359d5: bf 28 39 87 00 mov $0x873928,%edi 0.00 : 5359da: 48 89 c6 mov %rax,%rsi 0.00 : 5359dd: 31 c0 xor %eax,%eax 0.00 : 5359df: e8 bc 6e 24 00 callq 77c8a0 0.00 : 5359e4: bf 84 70 00 02 mov $0x2007084,%edi 0.00 : 5359e9: 89 c3 mov %eax,%ebx 0.00 : 5359eb: e9 b9 f6 ff ff jmpq 5350a9 : * have used VALUE as a column name in the past.) : */ : if (pstate->p_value_substitute != NULL && : strcmp(colname, "value") == 0) : { : node = (Node *) copyObject(pstate->p_value_substitute); 0.00 : 5359f0: 4c 89 c7 mov %r8,%rdi 0.00 : 5359f3: e8 98 e7 0a 00 callq 5e4190 : /* : * Try to propagate location knowledge. This should : * be extended if p_value_substitute can ever take on : * other node types. : */ : if (IsA(node, CoerceToDomainValue)) 0.00 : 5359f8: 81 38 52 01 00 00 cmpl $0x152,(%rax) : * have used VALUE as a column name in the past.) : */ : if (pstate->p_value_substitute != NULL && : strcmp(colname, "value") == 0) : { : node = (Node *) copyObject(pstate->p_value_substitute); 0.00 : 5359fe: 48 89 c3 mov %rax,%rbx : /* : * Try to propagate location knowledge. This should : * be extended if p_value_substitute can ever take on : * other node types. : */ : if (IsA(node, CoerceToDomainValue)) 0.00 : 535a01: 0f 85 cf fa ff ff jne 5354d6 : ((CoerceToDomainValue *) node)->location = cref->location; 0.00 : 535a07: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 535a0b: 45 31 f6 xor %r14d,%r14d 0.00 : 535a0e: 89 43 10 mov %eax,0x10(%rbx) 0.00 : 535a11: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 535a18: 00 0.00 : 535a19: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 535a20: 00 0.00 : 535a21: e9 75 f5 ff ff jmpq 534f9b 0.00 : 535a26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 535a2d: 00 00 00 : result = (*pstate->p_paramref_hook) (pstate, pref); : else : result = NULL; : : if (result == NULL) : ereport(ERROR, 0.00 : 535a30: 41 8b 75 08 mov 0x8(%r13),%esi 0.00 : 535a34: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535a38: e8 33 4c 00 00 callq 53a670 0.00 : 535a3d: 41 8b 75 04 mov 0x4(%r13),%esi 0.00 : 535a41: bf 6f 31 87 00 mov $0x87316f,%edi 0.00 : 535a46: 41 89 c4 mov %eax,%r12d 0.00 : 535a49: 31 c0 xor %eax,%eax 0.00 : 535a4b: e8 50 6e 24 00 callq 77c8a0 0.00 : 535a50: bf 84 00 02 02 mov $0x2020084,%edi 0.00 : 535a55: 89 c3 mov %eax,%ebx 0.00 : 535a57: e9 4d f6 ff ff jmpq 5350a9 : : if (IsA(relref, Var) && : ((Var *) relref)->varattno == InvalidAttrNumber) : { : /* Reference the RTE by alias not by actual table name */ : rte = GetRTEByRangeTablePosn(pstate, 0.00 : 535a5c: 41 8b 54 24 18 mov 0x18(%r12),%edx 0.00 : 535a61: 41 8b 74 24 04 mov 0x4(%r12),%esi 0.00 : 535a66: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535a6a: e8 11 75 00 00 callq 53cf80 : ((Var *) relref)->varno, : ((Var *) relref)->varlevelsup); : ereport(ERROR, 0.00 : 535a6f: 45 31 c0 xor %r8d,%r8d 0.00 : 535a72: b9 00 35 87 00 mov $0x873500,%ecx 0.00 : 535a77: ba 85 01 00 00 mov $0x185,%edx 0.00 : 535a7c: be 37 31 87 00 mov $0x873137,%esi 0.00 : 535a81: bf 14 00 00 00 mov $0x14,%edi : : if (IsA(relref, Var) && : ((Var *) relref)->varattno == InvalidAttrNumber) : { : /* Reference the RTE by alias not by actual table name */ : rte = GetRTEByRangeTablePosn(pstate, 0.00 : 535a86: 48 89 c3 mov %rax,%rbx : ((Var *) relref)->varno, : ((Var *) relref)->varlevelsup); : ereport(ERROR, 0.00 : 535a89: e8 32 50 24 00 callq 77aac0 0.00 : 535a8e: 84 c0 test %al,%al 0.00 : 535a90: 0f 84 42 f2 ff ff je 534cd8 0.00 : 535a96: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 535a99: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535a9d: e8 ce 4b 00 00 callq 53a670 0.00 : 535aa2: 41 89 c4 mov %eax,%r12d 0.00 : 535aa5: 48 8b 43 78 mov 0x78(%rbx),%rax 0.00 : 535aa9: bf 89 31 87 00 mov $0x873189,%edi 0.00 : 535aae: 4c 89 ea mov %r13,%rdx 0.00 : 535ab1: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 535ab5: 31 c0 xor %eax,%eax 0.00 : 535ab7: e8 e4 6d 24 00 callq 77c8a0 0.00 : 535abc: bf 84 70 00 03 mov $0x3007084,%edi 0.00 : 535ac1: 89 c3 mov %eax,%ebx 0.00 : 535ac3: e9 e1 f5 ff ff jmpq 5350a9 0.00 : 535ac8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 535acf: 00 : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 535ad0: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 535ad4: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535ad8: 4c 89 e6 mov %r12,%rsi : node = ParseFuncOrColumn(pstate, 0.00 : 535adb: 45 31 f6 xor %r14d,%r14d : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 535ade: e8 8d e2 ff ff callq 533d70 : node = ParseFuncOrColumn(pstate, 0.00 : 535ae3: 31 f6 xor %esi,%esi : /* Try to identify as a column of the RTE */ : node = scanRTEForColumn(pstate, rte, colname, cref->location); : if (node == NULL) : { : /* Try it as a function call on the whole row */ : node = transformWholeRowRef(pstate, rte, cref->location); 0.00 : 535ae5: 48 89 c7 mov %rax,%rdi : node = ParseFuncOrColumn(pstate, 0.00 : 535ae8: 45 8b 65 10 mov 0x10(%r13),%r12d 0.00 : 535aec: e8 5f bd 0a 00 callq 5e1850 0.00 : 535af1: 4c 89 ff mov %r15,%rdi 0.00 : 535af4: 48 89 c3 mov %rax,%rbx 0.00 : 535af7: e8 f4 9b 0c 00 callq 5ff6f0 0.00 : 535afc: 31 f6 xor %esi,%esi 0.00 : 535afe: 48 89 c7 mov %rax,%rdi 0.00 : 535b01: e8 4a bd 0a 00 callq 5e1850 0.00 : 535b06: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 535b0a: 48 89 da mov %rbx,%rdx 0.00 : 535b0d: 48 89 c6 mov %rax,%rsi 0.00 : 535b10: 45 89 e0 mov %r12d,%r8d 0.00 : 535b13: 31 c9 xor %ecx,%ecx 0.00 : 535b15: e8 16 2e 00 00 callq 538930 0.00 : 535b1a: 48 89 c3 mov %rax,%rbx 0.00 : 535b1d: e9 79 f4 ff ff jmpq 534f9b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2504 50.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2508 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005588f0 : : CopyFromInsertBatch(CopyState cstate, EState *estate, CommandId mycid, : int hi_options, ResultRelInfo *resultRelInfo, : TupleTableSlot *myslot, BulkInsertState bistate, : int nBufferedTuples, HeapTuple *bufferedTuples, : int firstBufferedLineNo) : { 0.00 : 5588f0: 55 push %rbp 0.00 : 5588f1: 41 89 d2 mov %edx,%r10d 0.00 : 5588f4: 48 89 e5 mov %rsp,%rbp 0.00 : 5588f7: 41 57 push %r15 0.00 : 5588f9: 49 89 ff mov %rdi,%r15 0.00 : 5588fc: 41 56 push %r14 0.00 : 5588fe: 41 55 push %r13 0.00 : 558900: 49 89 f5 mov %rsi,%r13 0.00 : 558903: 41 54 push %r12 0.00 : 558905: 41 89 cc mov %ecx,%r12d 0.00 : 558908: 53 push %rbx 0.00 : 558909: 48 83 ec 28 sub $0x28,%rsp 0.00 : 55890d: 4c 89 45 c8 mov %r8,-0x38(%rbp) 0.00 : 558911: 4c 89 4d c0 mov %r9,-0x40(%rbp) : /* : * Print error context information correctly, if one of the operations : * below fail. : */ : cstate->line_buf_valid = false; : save_cur_lineno = cstate->cur_lineno; 0.00 : 558915: 8b 87 d8 00 00 00 mov 0xd8(%rdi),%eax : CopyFromInsertBatch(CopyState cstate, EState *estate, CommandId mycid, : int hi_options, ResultRelInfo *resultRelInfo, : TupleTableSlot *myslot, BulkInsertState bistate, : int nBufferedTuples, HeapTuple *bufferedTuples, : int firstBufferedLineNo) : { 0.00 : 55891b: 4c 8b 75 20 mov 0x20(%rbp),%r14 : : /* : * Print error context information correctly, if one of the operations : * below fail. : */ : cstate->line_buf_valid = false; 0.00 : 55891f: c6 87 b1 01 00 00 00 movb $0x0,0x1b1(%rdi) : save_cur_lineno = cstate->cur_lineno; 0.00 : 558926: 89 45 d4 mov %eax,-0x2c(%rbp) : : /* : * heap_multi_insert leaks memory, so switch to short-lived memory context : * before calling it. : */ : oldcontext = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 558929: 48 8b 86 c8 00 00 00 mov 0xc8(%rsi),%rax 0.00 : 558930: 48 85 c0 test %rax,%rax 0.00 : 558933: 0f 84 1f 01 00 00 je 558a58 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 558939: 48 8b 40 28 mov 0x28(%rax),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 55893d: 48 8b 1d 1c 1f 66 00 mov 0x661f1c(%rip),%rbx # bba860 : heap_multi_insert(cstate->rel, 0.00 : 558944: 45 89 e0 mov %r12d,%r8d 0.00 : 558947: 8b 55 18 mov 0x18(%rbp),%edx 0.00 : 55894a: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 55894e: 44 89 d1 mov %r10d,%ecx 0.00 : 558951: 4c 89 f6 mov %r14,%rsi : : CurrentMemoryContext = context; 0.00 : 558954: 48 89 05 05 1f 66 00 mov %rax,0x661f05(%rip) # bba860 0.00 : 55895b: 49 8b 7f 28 mov 0x28(%r15),%rdi 0.00 : 55895f: e8 6c 23 f4 ff callq 49acd0 : : /* : * If there are any indexes, update them for all the inserted tuples, and : * run AFTER ROW INSERT triggers. : */ : if (resultRelInfo->ri_NumIndices > 0) 0.00 : 558964: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 558968: 48 89 1d f1 1e 66 00 mov %rbx,0x661ef1(%rip) # bba860 0.00 : 55896f: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 558972: 85 c0 test %eax,%eax 0.00 : 558974: 0f 8e 8e 00 00 00 jle 558a08 : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 55897a: 44 8b 65 18 mov 0x18(%rbp),%r12d 0.00 : 55897e: 45 85 e4 test %r12d,%r12d 0.00 : 558981: 7e 67 jle 5589ea 0.00 : 558983: 45 31 e4 xor %r12d,%r12d 0.00 : 558986: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55898d: 00 00 00 : { : List *recheckIndexes; : : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 558990: 8b 45 28 mov 0x28(%rbp),%eax : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); 50.00 : 558993: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 558997: 31 c9 xor %ecx,%ecx 0.00 : 558999: 31 d2 xor %edx,%edx : { : for (i = 0; i < nBufferedTuples; i++) : { : List *recheckIndexes; : : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 55899b: 44 01 e0 add %r12d,%eax 0.00 : 55899e: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); 0.00 : 5589a5: 4b 8b 3c e6 mov (%r14,%r12,8),%rdi 0.00 : 5589a9: e8 d2 ba 05 00 callq 5b4480 : recheckIndexes = 0.00 : 5589ae: 4b 8b 34 e6 mov (%r14,%r12,8),%rsi 0.00 : 5589b2: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 5589b6: 4c 89 ea mov %r13,%rdx 0.00 : 5589b9: 48 83 c6 04 add $0x4,%rsi 0.00 : 5589bd: e8 2e d1 05 00 callq 5b5af0 : ExecInsertIndexTuples(myslot, &(bufferedTuples[i]->t_self), : estate); : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 5589c2: 4b 8b 14 e6 mov (%r14,%r12,8),%rdx /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2508 50.00 : 5589c6: 48 8b 75 c8 mov -0x38(%rbp),%rsi : { : List *recheckIndexes; : : cstate->cur_lineno = firstBufferedLineNo + i; : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); : recheckIndexes = 0.00 : 5589ca: 48 89 c3 mov %rax,%rbx : ExecInsertIndexTuples(myslot, &(bufferedTuples[i]->t_self), : estate); : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 5589cd: 48 89 c1 mov %rax,%rcx 0.00 : 5589d0: 4c 89 ef mov %r13,%rdi : bufferedTuples[i], : recheckIndexes); : list_free(recheckIndexes); 0.00 : 5589d3: 49 83 c4 01 add $0x1,%r12 : cstate->cur_lineno = firstBufferedLineNo + i; : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); : recheckIndexes = : ExecInsertIndexTuples(myslot, &(bufferedTuples[i]->t_self), : estate); : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 5589d7: e8 b4 a2 03 00 callq 592c90 : bufferedTuples[i], : recheckIndexes); : list_free(recheckIndexes); 0.00 : 5589dc: 48 89 df mov %rbx,%rdi 0.00 : 5589df: e8 6c 97 08 00 callq 5e2150 : * If there are any indexes, update them for all the inserted tuples, and : * run AFTER ROW INSERT triggers. : */ : if (resultRelInfo->ri_NumIndices > 0) : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 5589e4: 44 39 65 18 cmp %r12d,0x18(%rbp) 0.00 : 5589e8: 7f a6 jg 558990 : NIL); : } : } : : /* reset cur_lineno to where we were */ : cstate->cur_lineno = save_cur_lineno; 0.00 : 5589ea: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 5589ed: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : } 0.00 : 5589f4: 48 83 c4 28 add $0x28,%rsp 0.00 : 5589f8: 5b pop %rbx 0.00 : 5589f9: 41 5c pop %r12 0.00 : 5589fb: 41 5d pop %r13 0.00 : 5589fd: 41 5e pop %r14 0.00 : 5589ff: 41 5f pop %r15 0.00 : 558a01: c9 leaveq 0.00 : 558a02: c3 retq 0.00 : 558a03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * There's no indexes, but see if we need to run AFTER ROW INSERT triggers : * anyway. : */ : else if (resultRelInfo->ri_TrigDesc != NULL && 0.00 : 558a08: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 558a0c: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 558a10: 48 85 c0 test %rax,%rax 0.00 : 558a13: 74 d5 je 5589ea 0.00 : 558a15: 80 78 0d 00 cmpb $0x0,0xd(%rax) 0.00 : 558a19: 74 cf je 5589ea : resultRelInfo->ri_TrigDesc->trig_insert_after_row) : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 558a1b: 8b 5d 18 mov 0x18(%rbp),%ebx 0.00 : 558a1e: 85 db test %ebx,%ebx 0.00 : 558a20: 7e c8 jle 5589ea 0.00 : 558a22: 31 db xor %ebx,%ebx 0.00 : 558a24: 0f 1f 40 00 nopl 0x0(%rax) : { : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 558a28: 8b 45 28 mov 0x28(%rbp),%eax : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 558a2b: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 558a2f: 31 c9 xor %ecx,%ecx 0.00 : 558a31: 4c 89 ef mov %r13,%rdi : else if (resultRelInfo->ri_TrigDesc != NULL && : resultRelInfo->ri_TrigDesc->trig_insert_after_row) : { : for (i = 0; i < nBufferedTuples; i++) : { : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 558a34: 01 d8 add %ebx,%eax 0.00 : 558a36: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 558a3d: 49 8b 14 de mov (%r14,%rbx,8),%rdx 0.00 : 558a41: 48 83 c3 01 add $0x1,%rbx 0.00 : 558a45: e8 46 a2 03 00 callq 592c90 : * anyway. : */ : else if (resultRelInfo->ri_TrigDesc != NULL && : resultRelInfo->ri_TrigDesc->trig_insert_after_row) : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 558a4a: 39 5d 18 cmp %ebx,0x18(%rbp) 0.00 : 558a4d: 7f d9 jg 558a28 0.00 : 558a4f: eb 99 jmp 5589ea 0.00 : 558a51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * heap_multi_insert leaks memory, so switch to short-lived memory context : * before calling it. : */ : oldcontext = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 558a58: 48 89 f7 mov %rsi,%rdi 0.00 : 558a5b: 89 55 b8 mov %edx,-0x48(%rbp) 0.00 : 558a5e: 66 90 xchg %ax,%ax 0.00 : 558a60: e8 4b cb 05 00 callq 5b55b0 0.00 : 558a65: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 558a69: e9 cb fe ff ff jmpq 558939 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/commands/trigger.c:2060 33.33 /home/Computational/mark/src/postgres-andres/src/backend/commands/trigger.c:2063 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000592c90 : : } : : void : ExecARInsertTriggers(EState *estate, ResultRelInfo *relinfo, : HeapTuple trigtuple, List *recheckIndexes) : { 0.00 : 592c90: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/commands/trigger.c:2060 66.67 : 592c91: 48 89 e5 mov %rsp,%rbp 0.00 : 592c94: 48 83 ec 10 sub $0x10,%rsp : TriggerDesc *trigdesc = relinfo->ri_TrigDesc; 0.00 : 592c98: 48 8b 46 28 mov 0x28(%rsi),%rax : : if (trigdesc && trigdesc->trig_insert_after_row) /home/Computational/mark/src/postgres-andres/src/backend/commands/trigger.c:2063 33.33 : 592c9c: 48 85 c0 test %rax,%rax 0.00 : 592c9f: 74 06 je 592ca7 0.00 : 592ca1: 80 78 0d 00 cmpb $0x0,0xd(%rax) 0.00 : 592ca5: 75 09 jne 592cb0 : AfterTriggerSaveEvent(estate, relinfo, TRIGGER_EVENT_INSERT, : true, NULL, trigtuple, recheckIndexes, NULL); : } 0.00 : 592ca7: c9 leaveq 0.00 : 592ca8: c3 retq 0.00 : 592ca9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : HeapTuple trigtuple, List *recheckIndexes) : { : TriggerDesc *trigdesc = relinfo->ri_TrigDesc; : : if (trigdesc && trigdesc->trig_insert_after_row) : AfterTriggerSaveEvent(estate, relinfo, TRIGGER_EVENT_INSERT, 0.00 : 592cb0: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 592cb4: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 592cbb: 00 00 0.00 : 592cbd: 49 89 d1 mov %rdx,%r9 0.00 : 592cc0: 45 31 c0 xor %r8d,%r8d 0.00 : 592cc3: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 592cc8: 31 d2 xor %edx,%edx 0.00 : 592cca: e8 91 f9 ff ff callq 592660 : true, NULL, trigtuple, recheckIndexes, NULL); : } 0.00 : 592ccf: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:336 33.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:339 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005cd2e0 : : : /* Conditional push: push only if we're inside a SPI procedure */ : bool : SPI_push_conditional(void) : { : bool pushed = (_SPI_curid != _SPI_connected); 0.00 : 5cd2e0: 8b 05 8e b1 59 00 mov 0x59b18e(%rip),%eax # b68474 <_SPI_curid> 0.00 : 5cd2e6: 3b 05 8c b1 59 00 cmp 0x59b18c(%rip),%eax # b68478 <_SPI_connected> : } : : /* Conditional push: push only if we're inside a SPI procedure */ : bool : SPI_push_conditional(void) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:336 66.67 : 5cd2ec: 55 push %rbp 0.00 : 5cd2ed: 48 89 e5 mov %rsp,%rbp : bool pushed = (_SPI_curid != _SPI_connected); : : if (pushed) 0.00 : 5cd2f0: 0f 95 c2 setne %dl /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:339 33.33 : 5cd2f3: 74 09 je 5cd2fe : { : _SPI_curid++; 0.00 : 5cd2f5: 83 c0 01 add $0x1,%eax 0.00 : 5cd2f8: 89 05 76 b1 59 00 mov %eax,0x59b176(%rip) # b68474 <_SPI_curid> : /* We should now be in a state where SPI_connect would succeed */ : Assert(_SPI_curid == _SPI_connected); : } : return pushed; : } 0.00 : 5cd2fe: 89 d0 mov %edx,%eax 0.00 : 5cd300: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:262 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:275 33.33 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:264 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3250 : : /* : * bms_intersect - set intersection : */ : Bitmapset * : bms_intersect(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e3250: 55 push %rbp : const Bitmapset *other; : int resultlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL || b == NULL) 0.00 : 5e3251: 48 85 ff test %rdi,%rdi : /* : * bms_intersect - set intersection : */ : Bitmapset * : bms_intersect(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e3254: 48 89 e5 mov %rsp,%rbp 0.00 : 5e3257: 41 54 push %r12 0.00 : 5e3259: 49 89 fc mov %rdi,%r12 0.00 : 5e325c: 53 push %rbx 0.00 : 5e325d: 48 89 f3 mov %rsi,%rbx : const Bitmapset *other; : int resultlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL || b == NULL) 0.00 : 5e3260: 74 4e je 5e32b0 0.00 : 5e3262: 48 85 f6 test %rsi,%rsi 0.00 : 5e3265: 74 49 je 5e32b0 : return NULL; : /* Identify shorter and longer input; copy the shorter one */ : if (a->nwords <= b->nwords) 0.00 : 5e3267: 8b 07 mov (%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:262 33.33 : 5e3269: 3b 06 cmp (%rsi),%eax 0.00 : 5e326b: 7e 33 jle 5e32a0 : result = bms_copy(a); : other = b; : } : else : { : result = bms_copy(b); 0.00 : 5e326d: 48 89 f7 mov %rsi,%rdi 0.00 : 5e3270: e8 8b fe ff ff callq 5e3100 0.00 : 5e3275: 4c 89 e7 mov %r12,%rdi 0.00 : 5e3278: 48 89 c1 mov %rax,%rcx : other = a; : } : /* And intersect the longer input with the result */ : resultlen = result->nwords; 0.00 : 5e327b: 8b 31 mov (%rcx),%esi : for (i = 0; i < resultlen; i++) 0.00 : 5e327d: 85 f6 test %esi,%esi 0.00 : 5e327f: 7e 17 jle 5e3298 0.00 : 5e3281: 31 d2 xor %edx,%edx 0.00 : 5e3283: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : result->words[i] &= other->words[i]; 0.00 : 5e3288: 8b 44 97 04 mov 0x4(%rdi,%rdx,4),%eax 0.00 : 5e328c: 21 44 91 04 and %eax,0x4(%rcx,%rdx,4) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:275 33.33 : 5e3290: 48 83 c2 01 add $0x1,%rdx : result = bms_copy(b); : other = a; : } : /* And intersect the longer input with the result */ : resultlen = result->nwords; : for (i = 0; i < resultlen; i++) 0.00 : 5e3294: 39 d6 cmp %edx,%esi 0.00 : 5e3296: 7f f0 jg 5e3288 : result->words[i] &= other->words[i]; : return result; : } 0.00 : 5e3298: 5b pop %rbx 0.00 : 5e3299: 48 89 c8 mov %rcx,%rax 0.00 : 5e329c: 41 5c pop %r12 0.00 : 5e329e: c9 leaveq 0.00 : 5e329f: c3 retq : if (a == NULL || b == NULL) : return NULL; : /* Identify shorter and longer input; copy the shorter one */ : if (a->nwords <= b->nwords) : { : result = bms_copy(a); /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:264 33.33 : 5e32a0: e8 5b fe ff ff callq 5e3100 0.00 : 5e32a5: 48 89 df mov %rbx,%rdi 0.00 : 5e32a8: 48 89 c1 mov %rax,%rcx 0.00 : 5e32ab: eb ce jmp 5e327b 0.00 : 5e32ad: 0f 1f 00 nopl (%rax) : /* And intersect the longer input with the result */ : resultlen = result->nwords; : for (i = 0; i < resultlen; i++) : result->words[i] &= other->words[i]; : return result; : } 0.00 : 5e32b0: 5b pop %rbx : const Bitmapset *other; : int resultlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL || b == NULL) 0.00 : 5e32b1: 31 c9 xor %ecx,%ecx : /* And intersect the longer input with the result */ : resultlen = result->nwords; : for (i = 0; i < resultlen; i++) : result->words[i] &= other->words[i]; : return result; : } 0.00 : 5e32b3: 48 89 c8 mov %rcx,%rax 0.00 : 5e32b6: 41 5c pop %r12 0.00 : 5e32b8: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:825 50.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:890 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000060cda0 : : static List * : build_index_paths(PlannerInfo *root, RelOptInfo *rel, : IndexOptInfo *index, IndexClauseSet *clauses, : bool useful_predicate, : SaOpControl saop_control, ScanTypeControl scantype) : { /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:825 50.00 : 60cda0: 55 push %rbp 0.00 : 60cda1: 48 89 e5 mov %rsp,%rbp 0.00 : 60cda4: 41 57 push %r15 0.00 : 60cda6: 41 56 push %r14 0.00 : 60cda8: 41 55 push %r13 0.00 : 60cdaa: 41 54 push %r12 0.00 : 60cdac: 53 push %rbx 0.00 : 60cdad: 48 81 ec e8 00 00 00 sub $0xe8,%rsp : int indexcol; : : /* : * Check that index supports the desired scan type(s) : */ : switch (scantype) 0.00 : 60cdb4: 8b 45 10 mov 0x10(%rbp),%eax : static List * : build_index_paths(PlannerInfo *root, RelOptInfo *rel, : IndexOptInfo *index, IndexClauseSet *clauses, : bool useful_predicate, : SaOpControl saop_control, ScanTypeControl scantype) : { 0.00 : 60cdb7: 48 89 bd 40 ff ff ff mov %rdi,-0xc0(%rbp) 0.00 : 60cdbe: 48 89 b5 38 ff ff ff mov %rsi,-0xc8(%rbp) 0.00 : 60cdc5: 48 89 95 30 ff ff ff mov %rdx,-0xd0(%rbp) 0.00 : 60cdcc: 48 89 8d 28 ff ff ff mov %rcx,-0xd8(%rbp) 0.00 : 60cdd3: 44 89 8d 20 ff ff ff mov %r9d,-0xe0(%rbp) : int indexcol; : : /* : * Check that index supports the desired scan type(s) : */ : switch (scantype) 0.00 : 60cdda: 85 c0 test %eax,%eax : static List * : build_index_paths(PlannerInfo *root, RelOptInfo *rel, : IndexOptInfo *index, IndexClauseSet *clauses, : bool useful_predicate, : SaOpControl saop_control, ScanTypeControl scantype) : { 0.00 : 60cddc: 44 88 85 27 ff ff ff mov %r8b,-0xd9(%rbp) : int indexcol; : : /* : * Check that index supports the desired scan type(s) : */ : switch (scantype) 0.00 : 60cde3: 0f 85 cc 03 00 00 jne 60d1b5 : { : case ST_INDEXSCAN: : if (!index->amhasgettuple) 0.00 : 60cde9: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 60cdf0: 80 b8 91 00 00 00 00 cmpb $0x0,0x91(%rax) 0.00 : 60cdf7: 0f 84 d6 03 00 00 je 60d1d3 : */ : index_clauses = NIL; : clause_columns = NIL; : found_clause = false; : found_lower_saop_clause = false; : outer_relids = bms_copy(rel->lateral_relids); 0.00 : 60cdfd: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:890 50.00 : 60ce04: 48 8b b9 80 00 00 00 mov 0x80(%rcx),%rdi 0.00 : 60ce0b: e8 f0 62 fd ff callq 5e3100 0.00 : 60ce10: 49 89 c7 mov %rax,%r15 : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60ce13: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 60ce1a: 8b 40 2c mov 0x2c(%rax),%eax 0.00 : 60ce1d: 85 c0 test %eax,%eax 0.00 : 60ce1f: 0f 8e ab 04 00 00 jle 60d2d0 0.00 : 60ce25: 45 31 ed xor %r13d,%r13d 0.00 : 60ce28: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 60ce2f: 00 00 00 00 0.00 : 60ce33: c6 85 6e ff ff ff 00 movb $0x0,-0x92(%rbp) 0.00 : 60ce3a: c6 85 6f ff ff ff 00 movb $0x0,-0x91(%rbp) 0.00 : 60ce41: 45 31 f6 xor %r14d,%r14d 0.00 : 60ce44: 0f 1f 40 00 nopl 0x0(%rax) : { : ListCell *lc; : : foreach(lc, clauses->indexclauses[indexcol]) 0.00 : 60ce48: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : 60ce4f: 49 63 c6 movslq %r14d,%rax 0.00 : 60ce52: 48 8b 44 c2 08 mov 0x8(%rdx,%rax,8),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 60ce57: 48 85 c0 test %rax,%rax 0.00 : 60ce5a: 0f 84 a0 00 00 00 je 60cf00 0.00 : 60ce60: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 60ce64: 4d 85 e4 test %r12,%r12 0.00 : 60ce67: 75 54 jne 60cebd 0.00 : 60ce69: e9 92 00 00 00 jmpq 60cf00 0.00 : 60ce6e: 66 90 xchg %ax,%ax : if (indexcol > 0) : found_lower_saop_clause = true; : } : else : { : if (saop_control != SAOP_REQUIRE) 0.00 : 60ce70: 83 bd 20 ff ff ff 02 cmpl $0x2,-0xe0(%rbp) 0.00 : 60ce77: 74 07 je 60ce80 0.00 : 60ce79: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) : found_clause = true; : } : index_clauses = lappend(index_clauses, rinfo); 0.00 : 60ce80: 4c 89 ef mov %r13,%rdi 0.00 : 60ce83: 48 89 de mov %rbx,%rsi 0.00 : 60ce86: e8 f5 4f fd ff callq 5e1e80 : clause_columns = lappend_int(clause_columns, indexcol); 0.00 : 60ce8b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 60ce92: 44 89 f6 mov %r14d,%esi : else : { : if (saop_control != SAOP_REQUIRE) : found_clause = true; : } : index_clauses = lappend(index_clauses, rinfo); 0.00 : 60ce95: 49 89 c5 mov %rax,%r13 : clause_columns = lappend_int(clause_columns, indexcol); 0.00 : 60ce98: e8 a3 4d fd ff callq 5e1c40 0.00 : 60ce9d: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : outer_relids = bms_add_members(outer_relids, 0.00 : 60cea4: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 60cea8: 4c 89 ff mov %r15,%rdi 0.00 : 60ceab: e8 b0 62 fd ff callq 5e3160 0.00 : 60ceb0: 49 89 c7 mov %rax,%r15 : outer_relids = bms_copy(rel->lateral_relids); : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) : { : ListCell *lc; : : foreach(lc, clauses->indexclauses[indexcol]) 0.00 : 60ceb3: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 60ceb8: 4d 85 e4 test %r12,%r12 0.00 : 60cebb: 74 43 je 60cf00 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 60cebd: 49 8b 1c 24 mov (%r12),%rbx : : if (IsA(rinfo->clause, ScalarArrayOpExpr)) 0.00 : 60cec1: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 60cec5: 81 38 3a 01 00 00 cmpl $0x13a,(%rax) 0.00 : 60cecb: 75 a3 jne 60ce70 : { : /* Ignore if not supported by index */ : if (saop_control == SAOP_PER_AM && !index->amsearcharray) 0.00 : 60cecd: 8b 85 20 ff ff ff mov -0xe0(%rbp),%eax 0.00 : 60ced3: 85 c0 test %eax,%eax 0.00 : 60ced5: 75 10 jne 60cee7 0.00 : 60ced7: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 60cede: 80 b9 8f 00 00 00 00 cmpb $0x0,0x8f(%rcx) 0.00 : 60cee5: 74 cc je 60ceb3 : continue; : found_clause = true; : if (indexcol > 0) 0.00 : 60cee7: 45 85 f6 test %r14d,%r14d 0.00 : 60ceea: 7e 8d jle 60ce79 0.00 : 60ceec: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) 0.00 : 60cef3: c6 85 6f ff ff ff 01 movb $0x1,-0x91(%rbp) 0.00 : 60cefa: eb 84 jmp 60ce80 0.00 : 60cefc: 0f 1f 40 00 nopl 0x0(%rax) : * amoptionalkey = false unless there's at least one index clause. : * (When working on columns after the first, this test cannot fail. It : * is always okay for columns after the first to not have any : * clauses.) : */ : if (index_clauses == NIL && !index->amoptionalkey) 0.00 : 60cf00: 4d 85 ed test %r13,%r13 : outer_relids = bms_copy(rel->lateral_relids); : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) : { : ListCell *lc; : : foreach(lc, clauses->indexclauses[indexcol]) 0.00 : 60cf03: 4c 89 6d b8 mov %r13,-0x48(%rbp) : * amoptionalkey = false unless there's at least one index clause. : * (When working on columns after the first, this test cannot fail. It : * is always okay for columns after the first to not have any : * clauses.) : */ : if (index_clauses == NIL && !index->amoptionalkey) 0.00 : 60cf07: 0f 84 cd 02 00 00 je 60d1da : index_clauses = NIL; : clause_columns = NIL; : found_clause = false; : found_lower_saop_clause = false; : outer_relids = bms_copy(rel->lateral_relids); : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60cf0d: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 60cf14: 41 83 c6 01 add $0x1,%r14d 0.00 : 60cf18: 44 39 72 2c cmp %r14d,0x2c(%rdx) 0.00 : 60cf1c: 0f 8f 26 ff ff ff jg 60ce48 0.00 : 60cf22: 0f b6 9d 6f ff ff ff movzbl -0x91(%rbp),%ebx 0.00 : 60cf29: 83 f3 01 xor $0x1,%ebx : if (index_clauses == NIL && !index->amoptionalkey) : return NIL; : } : : /* We do not want the index's rel itself listed in outer_relids */ : outer_relids = bms_del_member(outer_relids, rel->relid); 0.00 : 60cf2c: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 60cf33: 4c 89 ff mov %r15,%rdi 0.00 : 60cf36: 8b 71 58 mov 0x58(%rcx),%esi 0.00 : 60cf39: e8 92 5e fd ff callq 5e2dd0 : /* Enforce convention that outer_relids is exactly NULL if empty */ : if (bms_is_empty(outer_relids)) 0.00 : 60cf3e: 48 89 c7 mov %rax,%rdi : if (index_clauses == NIL && !index->amoptionalkey) : return NIL; : } : : /* We do not want the index's rel itself listed in outer_relids */ : outer_relids = bms_del_member(outer_relids, rel->relid); 0.00 : 60cf41: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : /* Enforce convention that outer_relids is exactly NULL if empty */ : if (bms_is_empty(outer_relids)) 0.00 : 60cf48: e8 03 5c fd ff callq 5e2b50 0.00 : 60cf4d: 84 c0 test %al,%al 0.00 : 60cf4f: b8 00 00 00 00 mov $0x0,%eax 0.00 : 60cf54: 48 0f 44 85 50 ff ff cmove -0xb0(%rbp),%rax 0.00 : 60cf5b: ff : outer_relids = NULL; : : /* Compute loop_count for cost estimation purposes */ : loop_count = get_loop_count(root, outer_relids); 0.00 : 60cf5c: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60cf63: 48 89 c6 mov %rax,%rsi : } : : /* We do not want the index's rel itself listed in outer_relids */ : outer_relids = bms_del_member(outer_relids, rel->relid); : /* Enforce convention that outer_relids is exactly NULL if empty */ : if (bms_is_empty(outer_relids)) 0.00 : 60cf66: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : outer_relids = NULL; : : /* Compute loop_count for cost estimation purposes */ : loop_count = get_loop_count(root, outer_relids); 0.00 : 60cf6d: e8 2e fd ff ff callq 60cca0 : * 2. Compute pathkeys describing index's ordering, if any, then see how : * many of them are actually useful for this query. This is not relevant : * if we are only trying to build bitmap indexscans, nor if we have to : * assume the scan is unordered. : */ : pathkeys_possibly_useful = (scantype != ST_BITMAPSCAN && 0.00 : 60cf72: 83 7d 10 01 cmpl $0x1,0x10(%rbp) : /* Enforce convention that outer_relids is exactly NULL if empty */ : if (bms_is_empty(outer_relids)) : outer_relids = NULL; : : /* Compute loop_count for cost estimation purposes */ : loop_count = get_loop_count(root, outer_relids); 0.00 : 60cf76: f2 0f 11 85 58 ff ff movsd %xmm0,-0xa8(%rbp) 0.00 : 60cf7d: ff : * 2. Compute pathkeys describing index's ordering, if any, then see how : * many of them are actually useful for this query. This is not relevant : * if we are only trying to build bitmap indexscans, nor if we have to : * assume the scan is unordered. : */ : pathkeys_possibly_useful = (scantype != ST_BITMAPSCAN && 0.00 : 60cf7e: 0f 84 d0 01 00 00 je 60d154 0.00 : 60cf84: 84 db test %bl,%bl 0.00 : 60cf86: 0f 84 c8 01 00 00 je 60d154 0.00 : 60cf8c: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 60cf93: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60cf9a: e8 d1 49 00 00 callq 611970 0.00 : 60cf9f: 84 c0 test %al,%al 0.00 : 60cfa1: 0f 84 ad 01 00 00 je 60d154 : !found_lower_saop_clause && : has_useful_pathkeys(root, rel)); : index_is_ordered = (index->sortopfamily != NULL); 0.00 : 60cfa7: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 60cfae: 48 83 78 50 00 cmpq $0x0,0x50(%rax) : if (index_is_ordered && pathkeys_possibly_useful) 0.00 : 60cfb3: 0f 95 85 70 ff ff ff setne -0x90(%rbp) 0.00 : 60cfba: 0f 84 34 03 00 00 je 60d2f4 : { : index_pathkeys = build_index_pathkeys(root, index, 0.00 : 60cfc0: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60cfc7: ba 01 00 00 00 mov $0x1,%edx 0.00 : 60cfcc: 48 89 c6 mov %rax,%rsi : ForwardScanDirection); : useful_pathkeys = truncate_useless_pathkeys(root, rel, 0.00 : 60cfcf: 45 31 f6 xor %r14d,%r14d : !found_lower_saop_clause && : has_useful_pathkeys(root, rel)); : index_is_ordered = (index->sortopfamily != NULL); : if (index_is_ordered && pathkeys_possibly_useful) : { : index_pathkeys = build_index_pathkeys(root, index, 0.00 : 60cfd2: e8 b9 57 00 00 callq 612790 : ForwardScanDirection); : useful_pathkeys = truncate_useless_pathkeys(root, rel, 0.00 : 60cfd7: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 60cfde: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60cfe5: 48 89 c2 mov %rax,%rdx 0.00 : 60cfe8: e8 b3 49 00 00 callq 6119a0 0.00 : 60cfed: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 60cff4: 00 00 00 00 0.00 : 60cff8: 49 89 c5 mov %rax,%r13 : * don't have to match left-to-right as you might expect. This is : * correct for GiST, which is the sole existing AM supporting : * amcanorderbyop. We might need different logic in future for : * other implementations. : */ : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60cffb: 41 bf 01 00 00 00 mov $0x1,%r15d : Bitmapset *index_attrs = NULL; : ListCell *lc; : int i; : : /* Index-only scans must be enabled, and index must be capable of them */ : if (!enable_indexonlyscan) 0.00 : 60d001: 80 3d a2 b5 55 00 00 cmpb $0x0,0x55b5a2(%rip) # b685aa : */ : static bool : check_index_only(RelOptInfo *rel, IndexOptInfo *index) : { : bool result; : Bitmapset *attrs_used = NULL; 0.00 : 60d008: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 60d00f: 00 : Bitmapset *index_attrs = NULL; : ListCell *lc; : int i; : : /* Index-only scans must be enabled, and index must be capable of them */ : if (!enable_indexonlyscan) 0.00 : 60d010: 74 14 je 60d026 : return false; : if (!index->canreturn) 0.00 : 60d012: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 60d019: 80 b8 8c 00 00 00 00 cmpb $0x0,0x8c(%rax) 0.00 : 60d020: 0f 85 d2 01 00 00 jne 60d1f8 : /* : * 3. Check if an index-only scan is possible. If we're not building : * plain indexscans, this isn't relevant since bitmap scans don't support : * index data retrieval anyway. : */ : index_only_scan = (scantype != ST_BITMAPSCAN && 0.00 : 60d026: 45 31 e4 xor %r12d,%r12d : * 4. Generate an indexscan path if there are relevant restriction clauses : * in the current clauses, OR the index ordering is potentially useful for : * later merging or final output ordering, OR the index has a useful : * predicate, OR an index-only scan is possible. : */ : if (found_clause || useful_pathkeys != NIL || useful_predicate || 0.00 : 60d029: 80 bd 6e ff ff ff 00 cmpb $0x0,-0x92(%rbp) 0.00 : 60d030: 0f 84 5f 01 00 00 je 60d195 : index_only_scan) : { : ipath = create_index_path(root, index, 0.00 : 60d036: 48 8b 8d 50 ff ff ff mov -0xb0(%rbp),%rcx 0.00 : 60d03d: 41 0f be c4 movsbl %r12b,%eax 0.00 : 60d041: 4c 8b 8d 60 ff ff ff mov -0xa0(%rbp),%r9 0.00 : 60d048: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 60d04c: 0f b6 85 70 ff ff ff movzbl -0x90(%rbp),%eax 0.00 : 60d053: 4d 89 f0 mov %r14,%r8 0.00 : 60d056: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 60d05a: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 60d061: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 60d066: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60d06d: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 60d074: f2 0f 10 85 58 ff ff movsd -0xa8(%rbp),%xmm0 0.00 : 60d07b: ff 0.00 : 60d07c: 83 e0 01 and $0x1,%eax 0.00 : 60d07f: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 60d083: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 60d087: e8 54 44 02 00 callq 6314e0 : ForwardScanDirection : : NoMovementScanDirection, : index_only_scan, : outer_relids, : loop_count); : result = lappend(result, ipath); 0.00 : 60d08c: 31 ff xor %edi,%edi : * predicate, OR an index-only scan is possible. : */ : if (found_clause || useful_pathkeys != NIL || useful_predicate || : index_only_scan) : { : ipath = create_index_path(root, index, 0.00 : 60d08e: 48 89 c6 mov %rax,%rsi : ForwardScanDirection : : NoMovementScanDirection, : index_only_scan, : outer_relids, : loop_count); : result = lappend(result, ipath); 0.00 : 60d091: e8 ea 4d fd ff callq 5e1e80 0.00 : 60d096: 48 89 c3 mov %rax,%rbx : } : : /* : * 5. If the index is ordered, a backwards scan might be interesting. : */ : if (index_is_ordered && pathkeys_possibly_useful) 0.00 : 60d099: 80 bd 70 ff ff ff 00 cmpb $0x0,-0x90(%rbp) 0.00 : 60d0a0: 0f 84 99 00 00 00 je 60d13f 0.00 : 60d0a6: 45 84 ff test %r15b,%r15b 0.00 : 60d0a9: 0f 84 90 00 00 00 je 60d13f : { : index_pathkeys = build_index_pathkeys(root, index, 0.00 : 60d0af: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 60d0b6: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60d0bd: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 60d0c2: e8 c9 56 00 00 callq 612790 : BackwardScanDirection); : useful_pathkeys = truncate_useless_pathkeys(root, rel, 0.00 : 60d0c7: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 60d0ce: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60d0d5: 48 89 c2 mov %rax,%rdx 0.00 : 60d0d8: e8 c3 48 00 00 callq 6119a0 : index_pathkeys); : if (useful_pathkeys != NIL) 0.00 : 60d0dd: 48 85 c0 test %rax,%rax : */ : if (index_is_ordered && pathkeys_possibly_useful) : { : index_pathkeys = build_index_pathkeys(root, index, : BackwardScanDirection); : useful_pathkeys = truncate_useless_pathkeys(root, rel, 0.00 : 60d0e0: 48 89 c2 mov %rax,%rdx : index_pathkeys); : if (useful_pathkeys != NIL) 0.00 : 60d0e3: 74 5a je 60d13f : { : ipath = create_index_path(root, index, 0.00 : 60d0e5: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 60d0ec: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 60d0f0: 45 31 c9 xor %r9d,%r9d 0.00 : 60d0f3: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 60d0fa: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 60d0fe: 45 31 c0 xor %r8d,%r8d 0.00 : 60d101: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 60d108: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 60d10f: f2 0f 10 85 58 ff ff movsd -0xa8(%rbp),%xmm0 0.00 : 60d116: ff 0.00 : 60d117: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 60d11c: 41 0f be c4 movsbl %r12b,%eax 0.00 : 60d120: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 60d124: c7 44 24 08 ff ff ff movl $0xffffffff,0x8(%rsp) 0.00 : 60d12b: ff 0.00 : 60d12c: e8 af 43 02 00 callq 6314e0 : useful_pathkeys, : BackwardScanDirection, : index_only_scan, : outer_relids, : loop_count); : result = lappend(result, ipath); 0.00 : 60d131: 48 89 df mov %rbx,%rdi : BackwardScanDirection); : useful_pathkeys = truncate_useless_pathkeys(root, rel, : index_pathkeys); : if (useful_pathkeys != NIL) : { : ipath = create_index_path(root, index, 0.00 : 60d134: 48 89 c6 mov %rax,%rsi : useful_pathkeys, : BackwardScanDirection, : index_only_scan, : outer_relids, : loop_count); : result = lappend(result, ipath); 0.00 : 60d137: e8 44 4d fd ff callq 5e1e80 0.00 : 60d13c: 48 89 c3 mov %rax,%rbx : } : } : : return result; : } 0.00 : 60d13f: 48 81 c4 e8 00 00 00 add $0xe8,%rsp 0.00 : 60d146: 48 89 d8 mov %rbx,%rax 0.00 : 60d149: 5b pop %rbx 0.00 : 60d14a: 41 5c pop %r12 0.00 : 60d14c: 41 5d pop %r13 0.00 : 60d14e: 41 5e pop %r14 0.00 : 60d150: 41 5f pop %r15 0.00 : 60d152: c9 leaveq 0.00 : 60d153: c3 retq : * assume the scan is unordered. : */ : pathkeys_possibly_useful = (scantype != ST_BITMAPSCAN && : !found_lower_saop_clause && : has_useful_pathkeys(root, rel)); : index_is_ordered = (index->sortopfamily != NULL); 0.00 : 60d154: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 60d15b: 48 83 7a 50 00 cmpq $0x0,0x50(%rdx) 0.00 : 60d160: 0f 95 85 70 ff ff ff setne -0x90(%rbp) : /* : * 3. Check if an index-only scan is possible. If we're not building : * plain indexscans, this isn't relevant since bitmap scans don't support : * index data retrieval anyway. : */ : index_only_scan = (scantype != ST_BITMAPSCAN && 0.00 : 60d167: 83 7d 10 01 cmpl $0x1,0x10(%rbp) 0.00 : 60d16b: 0f 85 67 05 00 00 jne 60d6d8 0.00 : 60d171: 45 31 e4 xor %r12d,%r12d 0.00 : 60d174: 45 31 ed xor %r13d,%r13d 0.00 : 60d177: 45 31 f6 xor %r14d,%r14d 0.00 : 60d17a: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 60d181: 00 00 00 00 0.00 : 60d185: 45 31 ff xor %r15d,%r15d : * 4. Generate an indexscan path if there are relevant restriction clauses : * in the current clauses, OR the index ordering is potentially useful for : * later merging or final output ordering, OR the index has a useful : * predicate, OR an index-only scan is possible. : */ : if (found_clause || useful_pathkeys != NIL || useful_predicate || 0.00 : 60d188: 80 bd 6e ff ff ff 00 cmpb $0x0,-0x92(%rbp) 0.00 : 60d18f: 0f 85 a1 fe ff ff jne 60d036 0.00 : 60d195: 4d 85 ed test %r13,%r13 0.00 : 60d198: 0f 85 98 fe ff ff jne 60d036 0.00 : 60d19e: 0f b6 95 27 ff ff ff movzbl -0xd9(%rbp),%edx 0.00 : 60d1a5: 31 db xor %ebx,%ebx 0.00 : 60d1a7: 44 08 e2 or %r12b,%dl 0.00 : 60d1aa: 0f 84 e9 fe ff ff je 60d099 0.00 : 60d1b0: e9 81 fe ff ff jmpq 60d036 : int indexcol; : : /* : * Check that index supports the desired scan type(s) : */ : switch (scantype) 0.00 : 60d1b5: 83 7d 10 01 cmpl $0x1,0x10(%rbp) 0.00 : 60d1b9: 0f 85 3e fc ff ff jne 60cdfd : case ST_INDEXSCAN: : if (!index->amhasgettuple) : return NIL; : break; : case ST_BITMAPSCAN: : if (!index->amhasgetbitmap) 0.00 : 60d1bf: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 60d1c6: 80 ba 92 00 00 00 00 cmpb $0x0,0x92(%rdx) 0.00 : 60d1cd: 0f 85 2a fc ff ff jne 60cdfd : useful_pathkeys, : BackwardScanDirection, : index_only_scan, : outer_relids, : loop_count); : result = lappend(result, ipath); 0.00 : 60d1d3: 31 db xor %ebx,%ebx 0.00 : 60d1d5: e9 65 ff ff ff jmpq 60d13f : * amoptionalkey = false unless there's at least one index clause. : * (When working on columns after the first, this test cannot fail. It : * is always okay for columns after the first to not have any : * clauses.) : */ : if (index_clauses == NIL && !index->amoptionalkey) 0.00 : 60d1da: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 60d1e1: 80 b8 8e 00 00 00 00 cmpb $0x0,0x8e(%rax) 0.00 : 60d1e8: 0f 85 1f fd ff ff jne 60cf0d : useful_pathkeys, : BackwardScanDirection, : index_only_scan, : outer_relids, : loop_count); : result = lappend(result, ipath); 0.00 : 60d1ee: 31 db xor %ebx,%ebx 0.00 : 60d1f0: e9 4a ff ff ff jmpq 60d13f 0.00 : 60d1f5: 0f 1f 00 nopl (%rax) : /* : * Add all the attributes needed for joins or final output. Note: we must : * look at reltargetlist, not the attr_needed data, because attr_needed : * isn't computed for inheritance child rels. : */ : pull_varattnos((Node *) rel->reltargetlist, rel->relid, &attrs_used); 0.00 : 60d1f8: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 60d1ff: 4c 8d 65 c8 lea -0x38(%rbp),%r12 0.00 : 60d203: 8b 72 58 mov 0x58(%rdx),%esi 0.00 : 60d206: 48 8b 7a 20 mov 0x20(%rdx),%rdi 0.00 : 60d20a: 4c 89 e2 mov %r12,%rdx 0.00 : 60d20d: e8 ce a9 02 00 callq 637be0 : : /* Add all the attributes used by restriction clauses. */ : foreach(lc, rel->baserestrictinfo) 0.00 : 60d212: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 60d219: 48 8b 81 d8 00 00 00 mov 0xd8(%rcx),%rax 0.00 : 60d220: 48 85 c0 test %rax,%rax 0.00 : 60d223: 74 2b je 60d250 0.00 : 60d225: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 60d229: 48 85 db test %rbx,%rbx 0.00 : 60d22c: 74 22 je 60d250 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); : : pull_varattnos((Node *) rinfo->clause, rel->relid, &attrs_used); 0.00 : 60d22e: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 60d235: 4c 89 e2 mov %r12,%rdx 0.00 : 60d238: 8b 70 58 mov 0x58(%rax),%esi 0.00 : 60d23b: 48 8b 03 mov (%rbx),%rax 0.00 : 60d23e: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60d242: e8 99 a9 02 00 callq 637be0 : * isn't computed for inheritance child rels. : */ : pull_varattnos((Node *) rel->reltargetlist, rel->relid, &attrs_used); : : /* Add all the attributes used by restriction clauses. */ : foreach(lc, rel->baserestrictinfo) 0.00 : 60d247: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 60d24b: 48 85 db test %rbx,%rbx 0.00 : 60d24e: 75 de jne 60d22e : : pull_varattnos((Node *) rinfo->clause, rel->relid, &attrs_used); : } : : /* Construct a bitmapset of columns stored in the index. */ : for (i = 0; i < index->ncolumns; i++) 0.00 : 60d250: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 60d257: 31 db xor %ebx,%ebx 0.00 : 60d259: 45 31 e4 xor %r12d,%r12d 0.00 : 60d25c: 8b 42 2c mov 0x2c(%rdx),%eax 0.00 : 60d25f: 85 c0 test %eax,%eax 0.00 : 60d261: 7f 14 jg 60d277 0.00 : 60d263: eb 37 jmp 60d29c 0.00 : 60d265: 0f 1f 00 nopl (%rax) 0.00 : 60d268: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 60d26f: 83 c3 01 add $0x1,%ebx 0.00 : 60d272: 3b 58 2c cmp 0x2c(%rax),%ebx 0.00 : 60d275: 7d 25 jge 60d29c : { : int attno = index->indexkeys[i]; 0.00 : 60d277: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 60d27e: 48 63 d3 movslq %ebx,%rdx 0.00 : 60d281: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 60d285: 8b 04 90 mov (%rax,%rdx,4),%eax : : /* : * For the moment, we just ignore index expressions. It might be nice : * to do something with them, later. : */ : if (attno == 0) 0.00 : 60d288: 85 c0 test %eax,%eax 0.00 : 60d28a: 74 dc je 60d268 : continue; : : index_attrs = 0.00 : 60d28c: 8d 70 08 lea 0x8(%rax),%esi 0.00 : 60d28f: 4c 89 e7 mov %r12,%rdi 0.00 : 60d292: e8 69 5d fd ff callq 5e3000 0.00 : 60d297: 49 89 c4 mov %rax,%r12 0.00 : 60d29a: eb cc jmp 60d268 : bms_add_member(index_attrs, : attno - FirstLowInvalidHeapAttributeNumber); : } : : /* Do we have all the necessary attributes? */ : result = bms_is_subset(attrs_used, index_attrs); 0.00 : 60d29c: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 60d2a0: 4c 89 e6 mov %r12,%rsi 0.00 : 60d2a3: e8 78 54 fd ff callq 5e2720 : : bms_free(attrs_used); 0.00 : 60d2a8: 48 8b 7d c8 mov -0x38(%rbp),%rdi : bms_add_member(index_attrs, : attno - FirstLowInvalidHeapAttributeNumber); : } : : /* Do we have all the necessary attributes? */ : result = bms_is_subset(attrs_used, index_attrs); 0.00 : 60d2ac: 89 c3 mov %eax,%ebx : : bms_free(attrs_used); 0.00 : 60d2ae: e8 fd 5a fd ff callq 5e2db0 : bms_free(index_attrs); 0.00 : 60d2b3: 4c 89 e7 mov %r12,%rdi : /* : * 3. Check if an index-only scan is possible. If we're not building : * plain indexscans, this isn't relevant since bitmap scans don't support : * index data retrieval anyway. : */ : index_only_scan = (scantype != ST_BITMAPSCAN && 0.00 : 60d2b6: 41 bc 01 00 00 00 mov $0x1,%r12d : : /* Do we have all the necessary attributes? */ : result = bms_is_subset(attrs_used, index_attrs); : : bms_free(attrs_used); : bms_free(index_attrs); 0.00 : 60d2bc: e8 ef 5a fd ff callq 5e2db0 : /* : * 3. Check if an index-only scan is possible. If we're not building : * plain indexscans, this isn't relevant since bitmap scans don't support : * index data retrieval anyway. : */ : index_only_scan = (scantype != ST_BITMAPSCAN && 0.00 : 60d2c1: 84 db test %bl,%bl 0.00 : 60d2c3: 0f 85 bf fe ff ff jne 60d188 0.00 : 60d2c9: e9 58 fd ff ff jmpq 60d026 0.00 : 60d2ce: 66 90 xchg %ax,%ax : index_clauses = NIL; : clause_columns = NIL; : found_clause = false; : found_lower_saop_clause = false; : outer_relids = bms_copy(rel->lateral_relids); : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60d2d0: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 60d2d7: 00 0.00 : 60d2d8: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 60d2df: 00 00 00 00 0.00 : 60d2e3: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 60d2e8: c6 85 6e ff ff ff 00 movb $0x0,-0x92(%rbp) 0.00 : 60d2ef: e9 38 fc ff ff jmpq 60cf2c : useful_pathkeys = truncate_useless_pathkeys(root, rel, : index_pathkeys); : orderbyclauses = NIL; : orderbyclausecols = NIL; : } : else if (index->amcanorderbyop && pathkeys_possibly_useful) 0.00 : 60d2f4: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 60d2fb: 80 ba 8d 00 00 00 00 cmpb $0x0,0x8d(%rdx) 0.00 : 60d302: 0f 84 54 03 00 00 je 60d65c : { : /* see if we can generate ordering operators for query_pathkeys */ : match_pathkeys_to_index(index, root->query_pathkeys, 0.00 : 60d308: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 60d30f: 48 8b 81 e0 00 00 00 mov 0xe0(%rcx),%rax 0.00 : 60d316: 48 85 c0 test %rax,%rax 0.00 : 60d319: 0f 84 3d 03 00 00 je 60d65c 0.00 : 60d31f: 48 8b 40 08 mov 0x8(%rax),%rax : : /* Only indexes with the amcanorderbyop property are interesting here */ : if (!index->amcanorderbyop) : return; : : foreach(lc1, pathkeys) 0.00 : 60d323: 48 85 c0 test %rax,%rax 0.00 : 60d326: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 60d32a: 0f 84 2c 03 00 00 je 60d65c : { : PathKey *pathkey = (PathKey *) lfirst(lc1); 0.00 : 60d330: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 60d334: 4c 8b 32 mov (%rdx),%r14 : * Note: for any failure to match, we just return NIL immediately. : * There is no value in matching just some of the pathkeys. : */ : : /* Pathkey must request default sort order for the target opfamily */ : if (pathkey->pk_strategy != BTLessStrategyNumber || 0.00 : 60d337: 41 83 7e 14 01 cmpl $0x1,0x14(%r14) 0.00 : 60d33c: 0f 85 1a 03 00 00 jne 60d65c 0.00 : 60d342: 41 80 7e 18 00 cmpb $0x0,0x18(%r14) 0.00 : 60d347: 0f 85 0f 03 00 00 jne 60d65c : pathkey->pk_nulls_first) : return; : : /* If eclass is volatile, no hope of using an indexscan */ : if (pathkey->pk_eclass->ec_has_volatile) 0.00 : 60d34d: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 60d351: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 60d358: 00 0.00 : 60d359: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 60d360: 00 00 00 00 0.00 : 60d364: 80 78 39 00 cmpb $0x0,0x39(%rax) 0.00 : 60d368: 0f 85 ee 02 00 00 jne 60d65c : * relation. (Unlike regular members, the same expression could be a : * child member of more than one EC. Therefore, the same index could : * be considered to match more than one pathkey list, which is OK : * here. See also get_eclass_for_sort_expr.) : */ : foreach(lc2, pathkey->pk_eclass->ec_members) 0.00 : 60d36e: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 60d372: 48 85 c0 test %rax,%rax 0.00 : 60d375: 0f 84 e1 02 00 00 je 60d65c 0.00 : 60d37b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 60d37f: 48 85 c0 test %rax,%rax 0.00 : 60d382: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 60d386: 0f 84 d0 02 00 00 je 60d65c 0.00 : 60d38c: 0f 1f 40 00 nopl 0x0(%rax) : { : EquivalenceMember *member = (EquivalenceMember *) lfirst(lc2); 0.00 : 60d390: 48 8b 55 88 mov -0x78(%rbp),%rdx : int indexcol; : : /* No possibility of match if it references other relations */ : if (!bms_equal(member->em_relids, index->rel->relids)) 0.00 : 60d394: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx : * be considered to match more than one pathkey list, which is OK : * here. See also get_eclass_for_sort_expr.) : */ : foreach(lc2, pathkey->pk_eclass->ec_members) : { : EquivalenceMember *member = (EquivalenceMember *) lfirst(lc2); 0.00 : 60d39b: 4c 8b 02 mov (%rdx),%r8 : int indexcol; : : /* No possibility of match if it references other relations */ : if (!bms_equal(member->em_relids, index->rel->relids)) 0.00 : 60d39e: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 60d3a2: 49 8b 78 10 mov 0x10(%r8),%rdi 0.00 : 60d3a6: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 60d3aa: 4c 89 85 18 ff ff ff mov %r8,-0xe8(%rbp) 0.00 : 60d3b1: e8 6a 52 fd ff callq 5e2620 0.00 : 60d3b6: 84 c0 test %al,%al 0.00 : 60d3b8: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d3bf: 0f 84 b3 02 00 00 je 60d678 : * don't have to match left-to-right as you might expect. This is : * correct for GiST, which is the sole existing AM supporting : * amcanorderbyop. We might need different logic in future for : * other implementations. : */ : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60d3c5: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 60d3cc: 8b 40 2c mov 0x2c(%rax),%eax 0.00 : 60d3cf: 85 c0 test %eax,%eax 0.00 : 60d3d1: 0f 8e a1 02 00 00 jle 60d678 0.00 : 60d3d7: 45 31 e4 xor %r12d,%r12d 0.00 : 60d3da: eb 19 jmp 60d3f5 0.00 : 60d3dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 60d3e0: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 60d3e7: 41 83 c4 01 add $0x1,%r12d 0.00 : 60d3eb: 44 3b 61 2c cmp 0x2c(%rcx),%r12d 0.00 : 60d3ef: 0f 8d 83 02 00 00 jge 60d678 : match_clause_to_ordering_op(IndexOptInfo *index, : int indexcol, : Expr *clause, : Oid pk_opfamily) : { : Oid opfamily = index->opfamily[indexcol]; 0.00 : 60d3f5: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 60d3fc: 49 63 c4 movslq %r12d,%rax : */ : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) : { : Expr *expr; : : expr = match_clause_to_ordering_op(index, 0.00 : 60d3ff: 4d 8b 68 08 mov 0x8(%r8),%r13 0.00 : 60d403: 45 8b 4e 10 mov 0x10(%r14),%r9d : match_clause_to_ordering_op(IndexOptInfo *index, : int indexcol, : Expr *clause, : Oid pk_opfamily) : { : Oid opfamily = index->opfamily[indexcol]; 0.00 : 60d407: 48 8b 51 40 mov 0x40(%rcx),%rdx : bool commuted; : : /* : * Clause must be a binary opclause. : */ : if (!is_opclause(clause)) 0.00 : 60d40b: 4d 85 ed test %r13,%r13 : match_clause_to_ordering_op(IndexOptInfo *index, : int indexcol, : Expr *clause, : Oid pk_opfamily) : { : Oid opfamily = index->opfamily[indexcol]; 0.00 : 60d40e: 44 8b 3c 82 mov (%rdx,%rax,4),%r15d : Oid idxcollation = index->indexcollations[indexcol]; 0.00 : 60d412: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 60d416: 8b 1c 82 mov (%rdx,%rax,4),%ebx : bool commuted; : : /* : * Clause must be a binary opclause. : */ : if (!is_opclause(clause)) 0.00 : 60d419: 74 c5 je 60d3e0 0.00 : 60d41b: 41 81 7d 00 37 01 00 cmpl $0x137,0x0(%r13) 0.00 : 60d422: 00 0.00 : 60d423: 75 bb jne 60d3e0 : return NULL; : leftop = get_leftop(clause); 0.00 : 60d425: 4c 89 ef mov %r13,%rdi 0.00 : 60d428: 4c 89 85 18 ff ff ff mov %r8,-0xe8(%rbp) 0.00 : 60d42f: 44 89 8d 10 ff ff ff mov %r9d,-0xf0(%rbp) 0.00 : 60d436: e8 b5 d6 01 00 callq 62aaf0 : rightop = get_rightop(clause); 0.00 : 60d43b: 4c 89 ef mov %r13,%rdi : /* : * Clause must be a binary opclause. : */ : if (!is_opclause(clause)) : return NULL; : leftop = get_leftop(clause); 0.00 : 60d43e: 48 89 45 a8 mov %rax,-0x58(%rbp) : rightop = get_rightop(clause); 0.00 : 60d442: e8 c9 d6 01 00 callq 62ab10 : if (!leftop || !rightop) 0.00 : 60d447: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) : * Clause must be a binary opclause. : */ : if (!is_opclause(clause)) : return NULL; : leftop = get_leftop(clause); : rightop = get_rightop(clause); 0.00 : 60d44c: 48 89 45 a0 mov %rax,-0x60(%rbp) : if (!leftop || !rightop) 0.00 : 60d450: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d457: 44 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9d 0.00 : 60d45e: 74 80 je 60d3e0 0.00 : 60d460: 48 85 c0 test %rax,%rax 0.00 : 60d463: 0f 84 77 ff ff ff je 60d3e0 : return NULL; : expr_op = ((OpExpr *) clause)->opno; 0.00 : 60d469: 41 8b 45 04 mov 0x4(%r13),%eax : expr_coll = ((OpExpr *) clause)->inputcollid; : : /* : * We can forget the whole thing right away if wrong collation. : */ : if (!IndexCollMatchesExprColl(idxcollation, expr_coll)) 0.00 : 60d46d: 85 db test %ebx,%ebx : return NULL; : leftop = get_leftop(clause); : rightop = get_rightop(clause); : if (!leftop || !rightop) : return NULL; : expr_op = ((OpExpr *) clause)->opno; 0.00 : 60d46f: 89 45 9c mov %eax,-0x64(%rbp) : expr_coll = ((OpExpr *) clause)->inputcollid; : : /* : * We can forget the whole thing right away if wrong collation. : */ : if (!IndexCollMatchesExprColl(idxcollation, expr_coll)) 0.00 : 60d472: 74 0a je 60d47e 0.00 : 60d474: 41 3b 5d 18 cmp 0x18(%r13),%ebx 0.00 : 60d478: 0f 85 62 ff ff ff jne 60d3e0 : : /* : * Check for clauses of the form: (indexkey operator constant) or : * (constant operator indexkey). : */ : if (match_index_to_operand(leftop, indexcol, index) && 0.00 : 60d47e: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 60d485: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 60d489: 44 89 e6 mov %r12d,%esi 0.00 : 60d48c: 4c 89 85 18 ff ff ff mov %r8,-0xe8(%rbp) 0.00 : 60d493: 44 89 8d 10 ff ff ff mov %r9d,-0xf0(%rbp) 0.00 : 60d49a: e8 f1 d7 ff ff callq 60ac90 0.00 : 60d49f: 84 c0 test %al,%al 0.00 : 60d4a1: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d4a8: 44 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9d 0.00 : 60d4af: 74 1f je 60d4d0 0.00 : 60d4b1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 60d4b5: e8 a6 a6 02 00 callq 637b60 0.00 : 60d4ba: 84 c0 test %al,%al 0.00 : 60d4bc: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d4c3: 44 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9d 0.00 : 60d4ca: 0f 84 e2 01 00 00 je 60d6b2 : !contain_var_clause(rightop) && : !contain_volatile_functions(rightop)) : { : commuted = false; : } : else if (match_index_to_operand(rightop, indexcol, index) && 0.00 : 60d4d0: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 60d4d7: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 60d4db: 44 89 e6 mov %r12d,%esi 0.00 : 60d4de: 4c 89 85 18 ff ff ff mov %r8,-0xe8(%rbp) 0.00 : 60d4e5: 44 89 8d 10 ff ff ff mov %r9d,-0xf0(%rbp) 0.00 : 60d4ec: e8 9f d7 ff ff callq 60ac90 0.00 : 60d4f1: 84 c0 test %al,%al 0.00 : 60d4f3: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d4fa: 0f 84 e0 fe ff ff je 60d3e0 0.00 : 60d500: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 60d504: e8 57 a6 02 00 callq 637b60 0.00 : 60d509: 84 c0 test %al,%al 0.00 : 60d50b: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d512: 0f 85 c8 fe ff ff jne 60d3e0 0.00 : 60d518: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 60d51c: e8 5f f6 01 00 callq 62cb80 0.00 : 60d521: 84 c0 test %al,%al 0.00 : 60d523: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d52a: 0f 85 b0 fe ff ff jne 60d3e0 : !contain_var_clause(leftop) && : !contain_volatile_functions(leftop)) : { : /* Might match, but we need a commuted operator */ : expr_op = get_commutator(expr_op); 0.00 : 60d530: 8b 7d 9c mov -0x64(%rbp),%edi 0.00 : 60d533: e8 38 52 16 00 callq 772770 : if (expr_op == InvalidOid) 0.00 : 60d538: 85 c0 test %eax,%eax : else if (match_index_to_operand(rightop, indexcol, index) && : !contain_var_clause(leftop) && : !contain_volatile_functions(leftop)) : { : /* Might match, but we need a commuted operator */ : expr_op = get_commutator(expr_op); 0.00 : 60d53a: 89 45 9c mov %eax,-0x64(%rbp) : if (expr_op == InvalidOid) 0.00 : 60d53d: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d544: 44 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9d 0.00 : 60d54b: 0f 84 8f fe ff ff je 60d3e0 0.00 : 60d551: bb 01 00 00 00 mov $0x1,%ebx : : /* : * Is the (commuted) operator an ordering operator for the opfamily? And : * if so, does it yield the right sorting semantics? : */ : sortfamily = get_op_opfamily_sortfamily(expr_op, opfamily); 0.00 : 60d556: 8b 7d 9c mov -0x64(%rbp),%edi 0.00 : 60d559: 44 89 fe mov %r15d,%esi 0.00 : 60d55c: 4c 89 85 18 ff ff ff mov %r8,-0xe8(%rbp) 0.00 : 60d563: 44 89 8d 10 ff ff ff mov %r9d,-0xf0(%rbp) 0.00 : 60d56a: e8 e1 53 16 00 callq 772950 : if (sortfamily != pk_opfamily) 0.00 : 60d56f: 44 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9d 0.00 : 60d576: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d57d: 41 39 c1 cmp %eax,%r9d 0.00 : 60d580: 0f 85 5a fe ff ff jne 60d3e0 : return NULL; : : /* We have a match. Return clause or a commuted version thereof. */ : if (commuted) 0.00 : 60d586: 84 db test %bl,%bl 0.00 : 60d588: 74 74 je 60d5fe : { : OpExpr *newclause = makeNode(OpExpr); 0.00 : 60d58a: 48 8b 3d cf d2 5a 00 mov 0x5ad2cf(%rip),%rdi # bba860 0.00 : 60d591: be 30 00 00 00 mov $0x30,%esi 0.00 : 60d596: e8 75 b8 18 00 callq 798e10 0.00 : 60d59b: c7 00 37 01 00 00 movl $0x137,(%rax) 0.00 : 60d5a1: 48 89 c3 mov %rax,%rbx : : /* flat-copy all the fields of clause */ : memcpy(newclause, clause, sizeof(OpExpr)); 0.00 : 60d5a4: 49 8b 45 00 mov 0x0(%r13),%rax : : /* commute it */ : newclause->opno = expr_op; : newclause->opfuncid = InvalidOid; : newclause->args = list_make2(rightop, leftop); 0.00 : 60d5a8: 31 f6 xor %esi,%esi : if (commuted) : { : OpExpr *newclause = makeNode(OpExpr); : : /* flat-copy all the fields of clause */ : memcpy(newclause, clause, sizeof(OpExpr)); 0.00 : 60d5aa: 48 89 03 mov %rax,(%rbx) 0.00 : 60d5ad: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 60d5b1: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 60d5b5: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 60d5b9: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 60d5bd: 49 8b 45 18 mov 0x18(%r13),%rax 0.00 : 60d5c1: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 60d5c5: 49 8b 45 20 mov 0x20(%r13),%rax 0.00 : 60d5c9: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 60d5cd: 49 8b 45 28 mov 0x28(%r13),%rax : /* commute it */ : newclause->opno = expr_op; : newclause->opfuncid = InvalidOid; : newclause->args = list_make2(rightop, leftop); : : clause = (Expr *) newclause; 0.00 : 60d5d1: 49 89 dd mov %rbx,%r13 : if (commuted) : { : OpExpr *newclause = makeNode(OpExpr); : : /* flat-copy all the fields of clause */ : memcpy(newclause, clause, sizeof(OpExpr)); 0.00 : 60d5d4: 48 89 43 28 mov %rax,0x28(%rbx) : : /* commute it */ : newclause->opno = expr_op; 0.00 : 60d5d8: 8b 55 9c mov -0x64(%rbp),%edx : newclause->opfuncid = InvalidOid; 0.00 : 60d5db: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : : /* flat-copy all the fields of clause */ : memcpy(newclause, clause, sizeof(OpExpr)); : : /* commute it */ : newclause->opno = expr_op; 0.00 : 60d5e2: 89 53 04 mov %edx,0x4(%rbx) : newclause->opfuncid = InvalidOid; : newclause->args = list_make2(rightop, leftop); 0.00 : 60d5e5: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 60d5e9: e8 62 42 fd ff callq 5e1850 0.00 : 60d5ee: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 60d5f2: 48 89 c6 mov %rax,%rsi 0.00 : 60d5f5: e8 56 42 fd ff callq 5e1850 0.00 : 60d5fa: 48 89 43 20 mov %rax,0x20(%rbx) : indexcol, : member->em_expr, : pathkey->pk_opfamily); : if (expr) : { : orderby_clauses = lappend(orderby_clauses, expr); 0.00 : 60d5fe: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 60d602: 4c 89 ee mov %r13,%rsi 0.00 : 60d605: e8 76 48 fd ff callq 5e1e80 : clause_columns = lappend_int(clause_columns, indexcol); 0.00 : 60d60a: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 60d611: 44 89 e6 mov %r12d,%esi : indexcol, : member->em_expr, : pathkey->pk_opfamily); : if (expr) : { : orderby_clauses = lappend(orderby_clauses, expr); 0.00 : 60d614: 48 89 45 b0 mov %rax,-0x50(%rbp) : clause_columns = lappend_int(clause_columns, indexcol); 0.00 : 60d618: e8 23 46 fd ff callq 5e1c40 : : /* Only indexes with the amcanorderbyop property are interesting here */ : if (!index->amcanorderbyop) : return; : : foreach(lc1, pathkeys) 0.00 : 60d61d: 48 8b 4d 90 mov -0x70(%rbp),%rcx : member->em_expr, : pathkey->pk_opfamily); : if (expr) : { : orderby_clauses = lappend(orderby_clauses, expr); : clause_columns = lappend_int(clause_columns, indexcol); 0.00 : 60d621: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : : /* Only indexes with the amcanorderbyop property are interesting here */ : if (!index->amcanorderbyop) : return; : : foreach(lc1, pathkeys) 0.00 : 60d628: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 60d62c: 48 85 c9 test %rcx,%rcx 0.00 : 60d62f: 48 89 4d 90 mov %rcx,-0x70(%rbp) 0.00 : 60d633: 0f 84 56 00 00 00 je 60d68f : { : PathKey *pathkey = (PathKey *) lfirst(lc1); 0.00 : 60d639: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 60d63d: 4c 8b 30 mov (%rax),%r14 : * Note: for any failure to match, we just return NIL immediately. : * There is no value in matching just some of the pathkeys. : */ : : /* Pathkey must request default sort order for the target opfamily */ : if (pathkey->pk_strategy != BTLessStrategyNumber || 0.00 : 60d640: 41 83 7e 14 01 cmpl $0x1,0x14(%r14) 0.00 : 60d645: 75 15 jne 60d65c 0.00 : 60d647: 41 80 7e 18 00 cmpb $0x0,0x18(%r14) 0.00 : 60d64c: 75 0e jne 60d65c : pathkey->pk_nulls_first) : return; : : /* If eclass is volatile, no hope of using an indexscan */ : if (pathkey->pk_eclass->ec_has_volatile) 0.00 : 60d64e: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 60d652: 80 78 39 00 cmpb $0x0,0x39(%rax) 0.00 : 60d656: 0f 84 12 fd ff ff je 60d36e : * don't have to match left-to-right as you might expect. This is : * correct for GiST, which is the sole existing AM supporting : * amcanorderbyop. We might need different logic in future for : * other implementations. : */ : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60d65c: 45 31 ed xor %r13d,%r13d 0.00 : 60d65f: 45 31 f6 xor %r14d,%r14d 0.00 : 60d662: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 60d669: 00 00 00 00 0.00 : 60d66d: e9 89 f9 ff ff jmpq 60cffb 0.00 : 60d672: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * relation. (Unlike regular members, the same expression could be a : * child member of more than one EC. Therefore, the same index could : * be considered to match more than one pathkey list, which is OK : * here. See also get_eclass_for_sort_expr.) : */ : foreach(lc2, pathkey->pk_eclass->ec_members) 0.00 : 60d678: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 60d67c: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 60d680: 48 85 c0 test %rax,%rax 0.00 : 60d683: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 60d687: 0f 85 03 fd ff ff jne 60d390 0.00 : 60d68d: eb cd jmp 60d65c : if (pathkey->pk_strategy != BTLessStrategyNumber || : pathkey->pk_nulls_first) : return; : : /* If eclass is volatile, no hope of using an indexscan */ : if (pathkey->pk_eclass->ec_has_volatile) 0.00 : 60d68f: 4c 8b 75 b0 mov -0x50(%rbp),%r14 : { : /* see if we can generate ordering operators for query_pathkeys */ : match_pathkeys_to_index(index, root->query_pathkeys, : &orderbyclauses, : &orderbyclausecols); : if (orderbyclauses) 0.00 : 60d693: 45 31 ed xor %r13d,%r13d 0.00 : 60d696: 4d 85 f6 test %r14,%r14 0.00 : 60d699: 0f 84 5c f9 ff ff je 60cffb : useful_pathkeys = root->query_pathkeys; 0.00 : 60d69f: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 60d6a6: 4c 8b a9 e0 00 00 00 mov 0xe0(%rcx),%r13 0.00 : 60d6ad: e9 49 f9 ff ff jmpq 60cffb : : /* : * Check for clauses of the form: (indexkey operator constant) or : * (constant operator indexkey). : */ : if (match_index_to_operand(leftop, indexcol, index) && 0.00 : 60d6b2: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 60d6b6: 31 db xor %ebx,%ebx 0.00 : 60d6b8: e8 c3 f4 01 00 callq 62cb80 0.00 : 60d6bd: 84 c0 test %al,%al 0.00 : 60d6bf: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 60d6c6: 44 8b 8d 10 ff ff ff mov -0xf0(%rbp),%r9d 0.00 : 60d6cd: 0f 84 83 fe ff ff je 60d556 0.00 : 60d6d3: e9 f8 fd ff ff jmpq 60d4d0 : /* see if we can generate ordering operators for query_pathkeys */ : match_pathkeys_to_index(index, root->query_pathkeys, : &orderbyclauses, : &orderbyclausecols); : if (orderbyclauses) : useful_pathkeys = root->query_pathkeys; 0.00 : 60d6d8: 45 31 ed xor %r13d,%r13d 0.00 : 60d6db: 45 31 f6 xor %r14d,%r14d 0.00 : 60d6de: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 60d6e5: 00 00 00 00 0.00 : 60d6e9: 45 31 ff xor %r15d,%r15d 0.00 : 60d6ec: e9 10 f9 ff ff jmpq 60d001 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1648 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1659 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000642320 : : * same relation is touched repeatedly within a transaction. : * ---------- : */ : void : pgstat_initstats(Relation rel) : { 0.00 : 642320: 55 push %rbp 0.00 : 642321: 48 89 e5 mov %rsp,%rbp 0.00 : 642324: 53 push %rbx 0.00 : 642325: 48 89 fb mov %rdi,%rbx 0.00 : 642328: 48 83 ec 08 sub $0x8,%rsp : Oid rel_id = rel->rd_id; : char relkind = rel->rd_rel->relkind; 0.00 : 64232c: 48 8b 53 30 mov 0x30(%rbx),%rdx : * ---------- : */ : void : pgstat_initstats(Relation rel) : { : Oid rel_id = rel->rd_id; 0.00 : 642330: 8b 7f 40 mov 0x40(%rdi),%edi : char relkind = rel->rd_rel->relkind; 0.00 : 642333: 0f b6 42 6f movzbl 0x6f(%rdx),%eax : : /* We only count stats for things that have storage */ : if (!(relkind == RELKIND_RELATION || 0.00 : 642337: 3c 72 cmp $0x72,%al 0.00 : 642339: 74 25 je 642360 0.00 : 64233b: 3c 6d cmp $0x6d,%al 0.00 : 64233d: 74 21 je 642360 0.00 : 64233f: 3c 69 cmp $0x69,%al 0.00 : 642341: 74 1d je 642360 0.00 : 642343: 3c 74 cmp $0x74,%al 0.00 : 642345: 74 19 je 642360 0.00 : 642347: 3c 53 cmp $0x53,%al 0.00 : 642349: 74 15 je 642360 : } : : if (pgStatSock == PGINVALID_SOCKET || !pgstat_track_counts) : { : /* We're not counting at all */ : rel->pgstat_info = NULL; 0.00 : 64234b: 48 c7 83 38 01 00 00 movq $0x0,0x138(%rbx) 0.00 : 642352: 00 00 00 00 : rel->pgstat_info->t_id == rel_id) : return; : : /* Else find or make the PgStat_TableStatus entry, and update link */ : rel->pgstat_info = get_tabstat_entry(rel_id, rel->rd_rel->relisshared); : } 0.00 : 642356: 48 83 c4 08 add $0x8,%rsp 0.00 : 64235a: 5b pop %rbx 0.00 : 64235b: c9 leaveq 0.00 : 64235c: c3 retq 0.00 : 64235d: 0f 1f 00 nopl (%rax) : { : rel->pgstat_info = NULL; : return; : } : : if (pgStatSock == PGINVALID_SOCKET || !pgstat_track_counts) 0.00 : 642360: 83 3d a9 62 52 00 ff cmpl $0xffffffff,0x5262a9(%rip) # b68610 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1648 50.00 : 642367: 74 e2 je 64234b 0.00 : 642369: 80 3d 31 98 53 00 00 cmpb $0x0,0x539831(%rip) # b7bba1 0.00 : 642370: 74 d9 je 64234b : : /* : * If we already set up this relation in the current transaction, nothing : * to do. : */ : if (rel->pgstat_info != NULL && 0.00 : 642372: 48 8b 83 38 01 00 00 mov 0x138(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1659 50.00 : 642379: 48 85 c0 test %rax,%rax 0.00 : 64237c: 74 04 je 642382 0.00 : 64237e: 39 38 cmp %edi,(%rax) 0.00 : 642380: 74 d4 je 642356 : rel->pgstat_info->t_id == rel_id) : return; : : /* Else find or make the PgStat_TableStatus entry, and update link */ : rel->pgstat_info = get_tabstat_entry(rel_id, rel->rd_rel->relisshared); 0.00 : 642382: 0f be 72 6d movsbl 0x6d(%rdx),%esi 0.00 : 642386: e8 b5 fd ff ff callq 642140 0.00 : 64238b: 48 89 83 38 01 00 00 mov %rax,0x138(%rbx) : } 0.00 : 642392: 48 83 c4 08 add $0x8,%rsp 0.00 : 642396: 5b pop %rbx 0.00 : 642397: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:88 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:77 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006884a0 : : * Lock a relation given only its OID. This should generally be used : * before attempting to open the relation's relcache entry. : */ : void : LockRelationOid(Oid relid, LOCKMODE lockmode) : { 0.00 : 6884a0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:88 50.00 : 6884a1: 48 89 e5 mov %rsp,%rbp 0.00 : 6884a4: 41 54 push %r12 0.00 : 6884a6: 41 89 f4 mov %esi,%r12d 0.00 : 6884a9: 53 push %rbx 0.00 : 6884aa: 89 fb mov %edi,%ebx 0.00 : 6884ac: 48 83 ec 10 sub $0x10,%rsp : static inline void : SetLocktagRelationOid(LOCKTAG *tag, Oid relid) : { : Oid dbid; : : if (IsSharedRelation(relid)) 0.00 : 6884b0: e8 db a6 e5 ff callq 4e2b90 0.00 : 6884b5: 31 d2 xor %edx,%edx 0.00 : 6884b7: 84 c0 test %al,%al 0.00 : 6884b9: 0f 44 15 e8 1b 53 00 cmove 0x531be8(%rip),%edx # bba0a8 : LOCKTAG tag; : LockAcquireResult res; : : SetLocktagRelationOid(&tag, relid); : : res = LockAcquire(&tag, lockmode, false, false); 0.00 : 6884c0: 48 8d 7d e0 lea -0x20(%rbp),%rdi 0.00 : 6884c4: 31 c9 xor %ecx,%ecx 0.00 : 6884c6: 44 89 e6 mov %r12d,%esi : if (IsSharedRelation(relid)) : dbid = InvalidOid; : else : dbid = MyDatabaseId; : : SET_LOCKTAG_RELATION(*tag, dbid, relid); 0.00 : 6884c9: 89 5d e4 mov %ebx,-0x1c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:77 50.00 : 6884cc: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%rbp) 0.00 : 6884d3: 66 c7 45 ec 00 00 movw $0x0,-0x14(%rbp) 0.00 : 6884d9: c6 45 ee 00 movb $0x0,-0x12(%rbp) 0.00 : 6884dd: 89 55 e0 mov %edx,-0x20(%rbp) : LOCKTAG tag; : LockAcquireResult res; : : SetLocktagRelationOid(&tag, relid); : : res = LockAcquire(&tag, lockmode, false, false); 0.00 : 6884e0: 31 d2 xor %edx,%edx : if (IsSharedRelation(relid)) : dbid = InvalidOid; : else : dbid = MyDatabaseId; : : SET_LOCKTAG_RELATION(*tag, dbid, relid); 0.00 : 6884e2: c6 45 ef 01 movb $0x1,-0x11(%rbp) : LOCKTAG tag; : LockAcquireResult res; : : SetLocktagRelationOid(&tag, relid); : : res = LockAcquire(&tag, lockmode, false, false); 0.00 : 6884e6: e8 05 3b 00 00 callq 68bff0 : * being requested, since then no one else could have modified the : * relcache entry in an undesirable way. (In the case where our own xact : * modifies the rel, the relcache update happens via : * CommandCounterIncrement, not here.) : */ : if (res != LOCKACQUIRE_ALREADY_HELD) 0.00 : 6884eb: 83 f8 02 cmp $0x2,%eax 0.00 : 6884ee: 74 05 je 6884f5 : AcceptInvalidationMessages(); 0.00 : 6884f0: e8 1b f6 0d 00 callq 767b10 : } 0.00 : 6884f5: 48 83 c4 10 add $0x10,%rsp 0.00 : 6884f9: 5b pop %rbx 0.00 : 6884fa: 41 5c pop %r12 0.00 : 6884fc: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:134 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:164 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9b10 : : /* date_in() : * Given date text string, convert to internal date format. : */ : Datum : date_in(PG_FUNCTION_ARGS) : { 0.00 : 6c9b10: 55 push %rbp : int dterr; : char *field[MAXDATEFIELDS]; : int ftype[MAXDATEFIELDS]; : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), 0.00 : 6c9b11: 41 b9 19 00 00 00 mov $0x19,%r9d 0.00 : 6c9b17: ba 81 00 00 00 mov $0x81,%edx : /* date_in() : * Given date text string, convert to internal date format. : */ : Datum : date_in(PG_FUNCTION_ARGS) : { 0.00 : 6c9b1c: 48 89 e5 mov %rsp,%rbp 0.00 : 6c9b1f: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 6c9b23: 4c 89 6d f0 mov %r13,-0x10(%rbp) : int dterr; : char *field[MAXDATEFIELDS]; : int ftype[MAXDATEFIELDS]; : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), 0.00 : 6c9b27: 4c 8d a5 20 ff ff ff lea -0xe0(%rbp),%r12 : /* date_in() : * Given date text string, convert to internal date format. : */ : Datum : date_in(PG_FUNCTION_ARGS) : { 0.00 : 6c9b2e: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 25.00 : 6c9b32: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 6c9b36: 48 81 ec 50 02 00 00 sub $0x250,%rsp : char *str = PG_GETARG_CSTRING(0); 0.00 : 6c9b3d: 48 8b 5f 20 mov 0x20(%rdi),%rbx : int dterr; : char *field[MAXDATEFIELDS]; : int ftype[MAXDATEFIELDS]; : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), 0.00 : 6c9b41: 4c 8d ad c0 fd ff ff lea -0x240(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 25.00 : 6c9b48: 48 8d 45 d0 lea -0x30(%rbp),%rax 0.00 : 6c9b4c: 48 8d b5 90 fe ff ff lea -0x170(%rbp),%rsi 0.00 : 6c9b53: 4d 89 e0 mov %r12,%r8 0.00 : 6c9b56: 4c 89 e9 mov %r13,%rcx 0.00 : 6c9b59: 48 89 04 24 mov %rax,(%rsp) 0.00 : 6c9b5d: 48 89 df mov %rbx,%rdi 0.00 : 6c9b60: e8 cb 5b 00 00 callq 6cf730 : field, ftype, MAXDATEFIELDS, &nf); : if (dterr == 0) 0.00 : 6c9b65: 85 c0 test %eax,%eax 0.00 : 6c9b67: 74 17 je 6c9b80 : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); 0.00 : 6c9b69: ba 10 72 8e 00 mov $0x8e7210,%edx 0.00 : 6c9b6e: 48 89 de mov %rbx,%rsi 0.00 : 6c9b71: 89 c7 mov %eax,%edi 0.00 : 6c9b73: e8 e8 21 00 00 callq 6cbd60 0.00 : 6c9b78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9b7f: 00 : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), : field, ftype, MAXDATEFIELDS, &nf); : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); 0.00 : 6c9b80: 4c 8d 75 90 lea -0x70(%rbp),%r14 0.00 : 6c9b84: 8b 55 d0 mov -0x30(%rbp),%edx 0.00 : 6c9b87: 48 8d 45 d8 lea -0x28(%rbp),%rax 0.00 : 6c9b8b: 48 8d 4d d4 lea -0x2c(%rbp),%rcx 0.00 : 6c9b8f: 4c 8d 4d dc lea -0x24(%rbp),%r9 0.00 : 6c9b93: 4c 89 e6 mov %r12,%rsi 0.00 : 6c9b96: 4d 89 f0 mov %r14,%r8 0.00 : 6c9b99: 4c 89 ef mov %r13,%rdi 0.00 : 6c9b9c: 48 89 04 24 mov %rax,(%rsp) 0.00 : 6c9ba0: e8 9b 4e 00 00 callq 6cea40 : if (dterr != 0) 0.00 : 6c9ba5: 85 c0 test %eax,%eax 0.00 : 6c9ba7: 75 c0 jne 6c9b69 : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 0.00 : 6c9ba9: 83 7d d4 0b cmpl $0xb,-0x2c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:134 25.00 : 6c9bad: 76 19 jbe 6c9bc8 : case DTK_EARLY: : DATE_NOBEGIN(date); : PG_RETURN_DATEADT(date); : : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); 0.00 : 6c9baf: ba 10 72 8e 00 mov $0x8e7210,%edx 0.00 : 6c9bb4: 48 89 de mov %rbx,%rsi 0.00 : 6c9bb7: bf ff ff ff ff mov $0xffffffff,%edi 0.00 : 6c9bbc: e8 9f 21 00 00 callq 6cbd60 0.00 : 6c9bc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 0.00 : 6c9bc8: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 6c9bcb: ff 24 c5 68 99 8b 00 jmpq *0x8b9968(,%rax,8) 0.00 : 6c9bd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : GetCurrentDateTime(tm); : break; : : case DTK_EPOCH: : GetEpochTime(tm); 0.00 : 6c9bd8: 4c 89 f7 mov %r14,%rdi 0.00 : 6c9bdb: e8 30 98 07 00 callq 743410 : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6c9be0: 8b 7d a4 mov -0x5c(%rbp),%edi 0.00 : 6c9be3: 81 ff 97 ed ff ff cmp $0xffffed97,%edi 0.00 : 6c9be9: 7f 35 jg 6c9c20 0.00 : 6c9beb: 0f 84 ef 00 00 00 je 6c9ce0 : ereport(ERROR, 0.00 : 6c9bf1: 45 31 c0 xor %r8d,%r8d 0.00 : 6c9bf4: b9 a2 9b 8b 00 mov $0x8b9ba2,%ecx 0.00 : 6c9bf9: ba a7 00 00 00 mov $0xa7,%edx 0.00 : 6c9bfe: be d3 94 8b 00 mov $0x8b94d3,%esi 0.00 : 6c9c03: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6c9c08: e8 b3 0e 0b 00 callq 77aac0 0.00 : 6c9c0d: 84 c0 test %al,%al 0.00 : 6c9c0f: 0f 85 ab 00 00 00 jne 6c9cc0 0.00 : 6c9c15: e8 b6 f8 d9 ff callq 4694d0 0.00 : 6c9c1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:164 25.00 : 6c9c20: 81 ff d1 a4 59 00 cmp $0x59a4d1,%edi 0.00 : 6c9c26: 7f c9 jg 6c9bf1 0.00 : 6c9c28: 8b 75 a0 mov -0x60(%rbp),%esi 0.00 : 6c9c2b: 8b 55 9c mov -0x64(%rbp),%edx : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("date out of range: \"%s\"", str))); : : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - POSTGRES_EPOCH_JDATE; 0.00 : 6c9c2e: e8 ed 00 00 00 callq 6c9d20 : : PG_RETURN_DATEADT(date); 0.00 : 6c9c33: 2d 59 68 25 00 sub $0x256859,%eax : } 0.00 : 6c9c38: eb 0b jmp 6c9c45 0.00 : 6c9c3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 0.00 : 6c9c40: b8 ff ff ff 7f mov $0x7fffffff,%eax : errmsg("date out of range: \"%s\"", str))); : : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - POSTGRES_EPOCH_JDATE; : : PG_RETURN_DATEADT(date); : } 0.00 : 6c9c45: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 6c9c49: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 6c9c4d: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 6c9c51: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 6c9c55: c9 leaveq 0.00 : 6c9c56: c3 retq 0.00 : 6c9c57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6c9c5e: 00 00 : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 0.00 : 6c9c60: b8 00 00 00 80 mov $0x80000000,%eax 0.00 : 6c9c65: eb de jmp 6c9c45 0.00 : 6c9c67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6c9c6e: 00 00 : { : case DTK_DATE: : break; : : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6c9c70: 45 31 c0 xor %r8d,%r8d 0.00 : 6c9c73: b9 a2 9b 8b 00 mov $0x8b9ba2,%ecx 0.00 : 6c9c78: ba 8e 00 00 00 mov $0x8e,%edx 0.00 : 6c9c7d: be d3 94 8b 00 mov $0x8b94d3,%esi 0.00 : 6c9c82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6c9c87: e8 34 0e 0b 00 callq 77aac0 0.00 : 6c9c8c: 84 c0 test %al,%al 0.00 : 6c9c8e: 74 85 je 6c9c15 0.00 : 6c9c90: bf c8 97 8b 00 mov $0x8b97c8,%edi 0.00 : 6c9c95: 31 c0 xor %eax,%eax 0.00 : 6c9c97: e8 04 2c 0b 00 callq 77c8a0 0.00 : 6c9c9c: bf 40 04 00 00 mov $0x440,%edi 0.00 : 6c9ca1: 89 c3 mov %eax,%ebx : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) : ereport(ERROR, 0.00 : 6c9ca3: e8 a8 30 0b 00 callq 77cd50 0.00 : 6c9ca8: 89 de mov %ebx,%esi 0.00 : 6c9caa: 89 c7 mov %eax,%edi 0.00 : 6c9cac: 31 c0 xor %eax,%eax 0.00 : 6c9cae: e8 2d 09 0b 00 callq 77a5e0 0.00 : 6c9cb3: e9 5d ff ff ff jmpq 6c9c15 0.00 : 6c9cb8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9cbf: 00 0.00 : 6c9cc0: 48 89 de mov %rbx,%rsi 0.00 : 6c9cc3: bf 74 95 8b 00 mov $0x8b9574,%edi 0.00 : 6c9cc8: 31 c0 xor %eax,%eax 0.00 : 6c9cca: e8 d1 2b 0b 00 callq 77c8a0 0.00 : 6c9ccf: bf 82 00 00 08 mov $0x8000082,%edi 0.00 : 6c9cd4: 89 c3 mov %eax,%ebx 0.00 : 6c9cd6: eb cb jmp 6c9ca3 0.00 : 6c9cd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9cdf: 00 : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6c9ce0: 8b 75 a0 mov -0x60(%rbp),%esi 0.00 : 6c9ce3: 83 fe 0b cmp $0xb,%esi 0.00 : 6c9ce6: 7f 20 jg 6c9d08 0.00 : 6c9ce8: 0f 85 03 ff ff ff jne 6c9bf1 0.00 : 6c9cee: 8b 55 9c mov -0x64(%rbp),%edx 0.00 : 6c9cf1: 83 fa 17 cmp $0x17,%edx 0.00 : 6c9cf4: 0f 8e f7 fe ff ff jle 6c9bf1 0.00 : 6c9cfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6c9d00: e9 29 ff ff ff jmpq 6c9c2e 0.00 : 6c9d05: 0f 1f 00 nopl (%rax) : ereport(ERROR, 0.00 : 6c9d08: 8b 55 9c mov -0x64(%rbp),%edx 0.00 : 6c9d0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9d10: e9 19 ff ff ff jmpq 6c9c2e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1400 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:841 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cea40 : : * 1997-05-27 : */ : int : DecodeDateTime(char **field, int *ftype, int nf, : int *dtype, struct pg_tm * tm, fsec_t *fsec, int *tzp) : { 0.00 : 6cea40: 55 push %rbp 0.00 : 6cea41: 48 89 e5 mov %rsp,%rbp 0.00 : 6cea44: 41 57 push %r15 0.00 : 6cea46: 41 56 push %r14 0.00 : 6cea48: 41 55 push %r13 0.00 : 6cea4a: 4d 89 c5 mov %r8,%r13 0.00 : 6cea4d: 41 54 push %r12 0.00 : 6cea4f: 53 push %rbx 0.00 : 6cea50: 48 81 ec d8 00 00 00 sub $0xd8,%rsp 0.00 : 6cea57: 4c 89 8d 20 ff ff ff mov %r9,-0xe0(%rbp) 0.00 : 6cea5e: 89 95 34 ff ff ff mov %edx,-0xcc(%rbp) 0.00 : 6cea64: 48 89 8d 28 ff ff ff mov %rcx,-0xd8(%rbp) : int val; : int dterr; : int mer = HR24; : bool haveTextMonth = FALSE; : bool isjulian = FALSE; : bool is2digits = FALSE; 0.00 : 6cea6b: c6 45 cf 00 movb $0x0,-0x31(%rbp) : : /* : * We'll insist on at least all of the date fields, but initialize the : * remaining fields in case they are not set later... : */ : *dtype = DTK_DATE; 0.00 : 6cea6f: c7 01 02 00 00 00 movl $0x2,(%rcx) : tm->tm_hour = 0; 0.00 : 6cea75: 41 c7 40 08 00 00 00 movl $0x0,0x8(%r8) 0.00 : 6cea7c: 00 : tm->tm_min = 0; 0.00 : 6cea7d: 41 c7 40 04 00 00 00 movl $0x0,0x4(%r8) 0.00 : 6cea84: 00 : tm->tm_sec = 0; 0.00 : 6cea85: 41 c7 00 00 00 00 00 movl $0x0,(%r8) : *fsec = 0; 0.00 : 6cea8c: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 6cea93: c7 00 00 00 00 00 movl $0x0,(%rax) : /* don't know daylight savings time status apriori */ : tm->tm_isdst = -1; 0.00 : 6cea99: 41 c7 40 20 ff ff ff movl $0xffffffff,0x20(%r8) 0.00 : 6ceaa0: ff : if (tzp != NULL) 0.00 : 6ceaa1: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6ceaa6: 74 0a je 6ceab2 : *tzp = 0; 0.00 : 6ceaa8: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6ceaac: c7 02 00 00 00 00 movl $0x0,(%rdx) : : for (i = 0; i < nf; i++) 0.00 : 6ceab2: 44 8b 85 34 ff ff ff mov -0xcc(%rbp),%r8d 0.00 : 6ceab9: 45 85 c0 test %r8d,%r8d 0.00 : 6ceabc: 0f 8e f1 08 00 00 jle 6cf3b3 : errno = 0; : val = strtoi(field[i], &cp, 10); : if (errno == ERANGE || val < 0) : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6ceac2: 49 8d 55 14 lea 0x14(%r13),%rdx 0.00 : 6ceac6: 49 8d 4d 0c lea 0xc(%r13),%rcx 0.00 : 6ceaca: 49 8d 45 10 lea 0x10(%r13),%rax : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.00 : 6ceace: 48 89 b5 78 ff ff ff mov %rsi,-0x88(%rbp) 0.00 : 6cead5: 49 89 ff mov %rdi,%r15 0.00 : 6cead8: 45 31 f6 xor %r14d,%r14d : errno = 0; : val = strtoi(field[i], &cp, 10); : if (errno == ERANGE || val < 0) : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6ceadb: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || 0.00 : 6ceae2: 8b 95 34 ff ff ff mov -0xcc(%rbp),%edx : errno = 0; : val = strtoi(field[i], &cp, 10); : if (errno == ERANGE || val < 0) : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:841 16.67 : 6ceae8: 48 89 8d 38 ff ff ff mov %rcx,-0xc8(%rbp) 0.00 : 6ceaef: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.00 : 6ceaf6: 49 8d 4d 04 lea 0x4(%r13),%rcx 0.00 : 6ceafa: 49 8d 45 08 lea 0x8(%r13),%rax 0.00 : 6ceafe: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6ceb05: 00 00 00 0.00 : 6ceb08: c7 85 64 ff ff ff 00 movl $0x0,-0x9c(%rbp) 0.00 : 6ceb0f: 00 00 00 : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || 0.00 : 6ceb12: 83 ea 01 sub $0x1,%edx : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.00 : 6ceb15: 48 89 8d 50 ff ff ff mov %rcx,-0xb0(%rbp) 0.00 : 6ceb1c: c7 85 68 ff ff ff 02 movl $0x2,-0x98(%rbp) 0.00 : 6ceb23: 00 00 00 0.00 : 6ceb26: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 0.00 : 6ceb2d: c6 85 6d ff ff ff 00 movb $0x0,-0x93(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 33.33 : 6ceb34: c6 85 6e ff ff ff 00 movb $0x0,-0x92(%rbp) 0.00 : 6ceb3b: c6 85 6f ff ff ff 00 movb $0x0,-0x91(%rbp) 0.00 : 6ceb42: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : 6ceb49: 00 00 00 00 : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || 0.00 : 6ceb4d: 89 95 14 ff ff ff mov %edx,-0xec(%rbp) : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) : { : switch (ftype[i]) 0.00 : 6ceb53: 48 8b 8d 78 ff ff ff mov -0x88(%rbp),%rcx 0.00 : 6ceb5a: 83 39 06 cmpl $0x6,(%rcx) 0.00 : 6ceb5d: 76 21 jbe 6ceb80 : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6ceb5f: bb ff ff ff ff mov $0xffffffff,%ebx : } : } : : return 0; : } 0.00 : 6ceb64: 48 81 c4 d8 00 00 00 add $0xd8,%rsp 0.00 : 6ceb6b: 89 d8 mov %ebx,%eax 0.00 : 6ceb6d: 5b pop %rbx 0.00 : 6ceb6e: 41 5c pop %r12 0.00 : 6ceb70: 41 5d pop %r13 0.00 : 6ceb72: 41 5e pop %r14 0.00 : 6ceb74: 41 5f pop %r15 0.00 : 6ceb76: c9 leaveq 0.00 : 6ceb77: c3 retq 0.00 : 6ceb78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6ceb7f: 00 : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) : { : switch (ftype[i]) 0.00 : 6ceb80: 8b 01 mov (%rcx),%eax 0.00 : 6ceb82: ff 24 c5 78 a2 8b 00 jmpq *0x8ba278(,%rax,8) 0.00 : 6ceb89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : case DTK_TZ: : { : int tz; : : if (tzp == NULL) 0.00 : 6ceb90: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6ceb95: 74 c8 je 6ceb5f : return DTERR_BAD_FORMAT; : : dterr = DecodeTimezone(field[i], &tz); 0.00 : 6ceb97: 49 8b 3f mov (%r15),%rdi 0.00 : 6ceb9a: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 6ceb9e: e8 5d e7 ff ff callq 6cd300 : if (dterr) 0.00 : 6ceba3: 85 c0 test %eax,%eax : int tz; : : if (tzp == NULL) : return DTERR_BAD_FORMAT; : : dterr = DecodeTimezone(field[i], &tz); 0.00 : 6ceba5: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6ceba7: 75 bb jne 6ceb64 : return dterr; : *tzp = tz; 0.00 : 6ceba9: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 6cebac: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cebb0: 89 02 mov %eax,(%rdx) : tmask = DTK_M(TZ); 0.00 : 6cebb2: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) : : default: : return DTERR_BAD_FORMAT; : } : : if (tmask & fmask) 0.00 : 6cebb9: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 6cebbc: 41 85 c6 test %eax,%r14d 0.00 : 6cebbf: 75 9e jne 6ceb5f : return DTERR_BAD_FORMAT; : fmask |= tmask; 0.00 : 6cebc1: 41 09 c6 or %eax,%r14d : /* don't know daylight savings time status apriori */ : tm->tm_isdst = -1; : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) 0.00 : 6cebc4: 83 85 64 ff ff ff 01 addl $0x1,-0x9c(%rbp) 0.00 : 6cebcb: 48 83 85 78 ff ff ff addq $0x4,-0x88(%rbp) 0.00 : 6cebd2: 04 0.00 : 6cebd3: 49 83 c7 08 add $0x8,%r15 0.00 : 6cebd7: 8b 95 64 ff ff ff mov -0x9c(%rbp),%edx 0.00 : 6cebdd: 39 95 34 ff ff ff cmp %edx,-0xcc(%rbp) 0.00 : 6cebe3: 0f 8f 6a ff ff ff jg 6ceb53 0.00 : 6cebe9: 0f be 8d 6f ff ff ff movsbl -0x91(%rbp),%ecx 0.00 : 6cebf0: 0f be b5 6e ff ff ff movsbl -0x92(%rbp),%esi : return DTERR_BAD_FORMAT; : fmask |= tmask; : } /* end loop over fields */ : : /* do final checking/adjustment of Y/M/D fields */ : dterr = ValidateDate(fmask, isjulian, is2digits, bc, tm); 0.00 : 6cebf7: 0f be 55 cf movsbl -0x31(%rbp),%edx 0.00 : 6cebfb: 4d 89 e8 mov %r13,%r8 0.00 : 6cebfe: 44 89 f7 mov %r14d,%edi 0.00 : 6cec01: e8 ea b2 ff ff callq 6c9ef0 : if (dterr) 0.00 : 6cec06: 85 c0 test %eax,%eax : return DTERR_BAD_FORMAT; : fmask |= tmask; : } /* end loop over fields */ : : /* do final checking/adjustment of Y/M/D fields */ : dterr = ValidateDate(fmask, isjulian, is2digits, bc, tm); 0.00 : 6cec08: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cec0a: 0f 85 54 ff ff ff jne 6ceb64 : return dterr; : : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) 0.00 : 6cec10: 83 bd 68 ff ff ff 02 cmpl $0x2,-0x98(%rbp) 0.00 : 6cec17: 0f 85 bb 08 00 00 jne 6cf4d8 : tm->tm_hour = 0; : else if (mer == PM && tm->tm_hour != HOURS_PER_DAY / 2) : tm->tm_hour += HOURS_PER_DAY / 2; : : /* do additional checking for full date specs... */ : if (*dtype == DTK_DATE) 0.00 : 6cec1d: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1400 33.33 : 6cec24: 83 39 02 cmpl $0x2,(%rcx) 0.00 : 6cec27: 0f 85 37 ff ff ff jne 6ceb64 : { : if ((fmask & DTK_DATE_M) != DTK_DATE_M) 0.00 : 6cec2d: 44 89 f0 mov %r14d,%eax 0.00 : 6cec30: 83 e0 0e and $0xe,%eax 0.00 : 6cec33: 83 f8 0e cmp $0xe,%eax 0.00 : 6cec36: 0f 84 4f 08 00 00 je 6cf48b : { : if ((fmask & DTK_TIME_M) == DTK_TIME_M) 0.00 : 6cec3c: 41 81 e6 00 7c 00 00 and $0x7c00,%r14d 0.00 : 6cec43: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 6cec48: 41 81 fe 00 7c 00 00 cmp $0x7c00,%r14d 0.00 : 6cec4f: 0f 84 0f ff ff ff je 6ceb64 0.00 : 6cec55: e9 05 ff ff ff jmpq 6ceb5f 0.00 : 6cec5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case DTK_TIME: : : /* : * This might be an ISO time following a "t" field. : */ : if (ptype != 0) 0.00 : 6cec60: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 6cec66: 85 c0 test %eax,%eax 0.00 : 6cec68: 0f 85 52 03 00 00 jne 6cefc0 : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) : return DTERR_BAD_FORMAT; : ptype = 0; : } : dterr = DecodeTime(field[i], fmask, INTERVAL_FULL_RANGE, 0.00 : 6cec6e: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cec75: 49 8b 3f mov (%r15),%rdi 0.00 : 6cec78: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cec7c: 4d 89 e8 mov %r13,%r8 0.00 : 6cec7f: ba ff 7f 00 00 mov $0x7fff,%edx 0.00 : 6cec84: 44 89 f6 mov %r14d,%esi 0.00 : 6cec87: e8 74 db ff ff callq 6cc800 : &tmask, tm, fsec); : if (dterr) 0.00 : 6cec8c: 85 c0 test %eax,%eax : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) : return DTERR_BAD_FORMAT; : ptype = 0; : } : dterr = DecodeTime(field[i], fmask, INTERVAL_FULL_RANGE, 0.00 : 6cec8e: 89 c3 mov %eax,%ebx : &tmask, tm, fsec); : if (dterr) 0.00 : 6cec90: 0f 85 ce fe ff ff jne 6ceb64 : /* : * Check upper limit on hours; other limits checked in : * DecodeTime() : */ : /* test for > 24:00:00 */ : if (tm->tm_hour > HOURS_PER_DAY || 0.00 : 6cec96: 41 83 7d 08 18 cmpl $0x18,0x8(%r13) 0.00 : 6cec9b: 7f 2e jg 6ceccb 0.00 : 6cec9d: 0f 1f 00 nopl (%rax) 0.00 : 6ceca0: 0f 85 13 ff ff ff jne 6cebb9 0.00 : 6ceca6: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 6cecaa: 85 c0 test %eax,%eax 0.00 : 6cecac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cecb0: 7f 19 jg 6ceccb 0.00 : 6cecb2: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 6cecb6: 85 c0 test %eax,%eax 0.00 : 6cecb8: 7f 11 jg 6ceccb 0.00 : 6cecba: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 6cecc1: 8b 01 mov (%rcx),%eax 0.00 : 6cecc3: 85 c0 test %eax,%eax 0.00 : 6cecc5: 0f 8e ee fe ff ff jle 6cebb9 : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6ceccb: bb fe ff ff ff mov $0xfffffffe,%ebx 0.00 : 6cecd0: e9 8f fe ff ff jmpq 6ceb64 0.00 : 6cecd5: 0f 1f 00 nopl (%rax) : /* : * Integral julian day with attached time zone? All other : * forms with JD will be separated into distinct fields, so we : * handle just this case here. : */ : if (ptype == DTK_JULIAN) 0.00 : 6cecd8: 83 bd 60 ff ff ff 1f cmpl $0x1f,-0xa0(%rbp) 0.00 : 6cecdf: 0f 84 ef 06 00 00 je 6cf3d4 : * : * We consider it a time zone if we already have month & day. : * This is to allow the form "mmm dd hhmmss tz year", which : * we've historically accepted. : */ : else if (ptype != 0 || 0.00 : 6cece5: 8b 8d 60 ff ff ff mov -0xa0(%rbp),%ecx 0.00 : 6ceceb: 85 c9 test %ecx,%ecx 0.00 : 6ceced: 75 0f jne 6cecfe 0.00 : 6cecef: 44 89 f0 mov %r14d,%eax 0.00 : 6cecf2: 83 e0 0a and $0xa,%eax 0.00 : 6cecf5: 83 f8 0a cmp $0xa,%eax 0.00 : 6cecf8: 0f 85 a2 01 00 00 jne 6ceea0 : ((fmask & (DTK_M(MONTH) | DTK_M(DAY))) == : (DTK_M(MONTH) | DTK_M(DAY)))) : { : /* No time zone accepted? Then quit... */ : if (tzp == NULL) 0.00 : 6cecfe: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6ced03: 0f 84 56 fe ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : if (isdigit((unsigned char) *field[i]) || ptype != 0) 0.00 : 6ced09: e8 b2 ab d9 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 6ced0e: 49 8b 3f mov (%r15),%rdi 0.00 : 6ced11: 48 8b 00 mov (%rax),%rax 0.00 : 6ced14: 0f b6 17 movzbl (%rdi),%edx 0.00 : 6ced17: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6ced1b: 25 00 08 00 00 and $0x800,%eax 0.00 : 6ced20: 0b 85 60 ff ff ff or -0xa0(%rbp),%eax 0.00 : 6ced26: 0f 84 64 02 00 00 je 6cef90 : { : char *cp; : : if (ptype != 0) 0.00 : 6ced2c: 8b 95 60 ff ff ff mov -0xa0(%rbp),%edx 0.00 : 6ced32: 85 d2 test %edx,%edx 0.00 : 6ced34: 0f 85 fe 01 00 00 jne 6cef38 : /* : * Starts with a digit but we already have a time : * field? Then we are in trouble with a date and time : * already... : */ : if ((fmask & DTK_TIME_M) == DTK_TIME_M) 0.00 : 6ced3a: 44 89 f0 mov %r14d,%eax 0.00 : 6ced3d: 25 00 7c 00 00 and $0x7c00,%eax 0.00 : 6ced42: 3d 00 7c 00 00 cmp $0x7c00,%eax 0.00 : 6ced47: 0f 84 12 fe ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : if ((cp = strchr(field[i], '-')) == NULL) 0.00 : 6ced4d: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 6ced52: e8 f9 ae d9 ff callq 469c50 0.00 : 6ced57: 48 85 c0 test %rax,%rax 0.00 : 6ced5a: 49 89 c4 mov %rax,%r12 0.00 : 6ced5d: 0f 84 fc fd ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6ced63: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6ced67: 48 89 c7 mov %rax,%rdi 0.00 : 6ced6a: e8 91 e5 ff ff callq 6cd300 : if (dterr) 0.00 : 6ced6f: 85 c0 test %eax,%eax : : if ((cp = strchr(field[i], '-')) == NULL) : return DTERR_BAD_FORMAT; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6ced71: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6ced73: 0f 85 eb fd ff ff jne 6ceb64 : return dterr; : *cp = '\0'; 0.00 : 6ced79: 41 c6 04 24 00 movb $0x0,(%r12) : : /* : * Then read the rest of the field as a concatenated : * time : */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6ced7e: 49 8b 1f mov (%r15),%rbx 0.00 : 6ced81: 48 89 df mov %rbx,%rdi 0.00 : 6ced84: e8 c7 aa d9 ff callq 469850 0.00 : 6ced89: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 6ced8d: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6ced94: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6ced98: 48 89 de mov %rbx,%rsi 0.00 : 6ced9b: 4d 89 e8 mov %r13,%r8 0.00 : 6ced9e: 89 c7 mov %eax,%edi 0.00 : 6ceda0: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 6ceda4: 44 89 f2 mov %r14d,%edx 0.00 : 6ceda7: e8 04 e7 ff ff callq 6cd4b0 : fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cedac: 85 c0 test %eax,%eax : : /* : * Then read the rest of the field as a concatenated : * time : */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6cedae: 89 c3 mov %eax,%ebx : fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cedb0: 0f 88 ae fd ff ff js 6ceb64 : : /* : * modify tmask after returning from : * DecodeNumberField() : */ : tmask |= DTK_M(TZ); 0.00 : 6cedb6: 83 4d c8 20 orl $0x20,-0x38(%rbp) 0.00 : 6cedba: e9 fa fd ff ff jmpq 6cebb9 0.00 : 6cedbf: 90 nop : } : break; : : case DTK_STRING: : case DTK_SPECIAL: : type = DecodeSpecial(i, field[i], &val); 0.00 : 6cedc0: 49 8b 37 mov (%r15),%rsi 0.00 : 6cedc3: 8b bd 64 ff ff ff mov -0x9c(%rbp),%edi 0.00 : 6cedc9: 48 8d 55 c4 lea -0x3c(%rbp),%rdx 0.00 : 6cedcd: e8 9e bb ff ff callq 6ca970 : if (type == IGNORE_DTF) 0.00 : 6cedd2: 83 f8 08 cmp $0x8,%eax 0.00 : 6cedd5: 0f 84 e9 fd ff ff je 6cebc4 : continue; : : tmask = DTK_M(type); 0.00 : 6ceddb: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6cede0: 89 c1 mov %eax,%ecx 0.00 : 6cede2: d3 e2 shl %cl,%edx : switch (type) 0.00 : 6cede4: 83 f8 1f cmp $0x1f,%eax : case DTK_SPECIAL: : type = DecodeSpecial(i, field[i], &val); : if (type == IGNORE_DTF) : continue; : : tmask = DTK_M(type); 0.00 : 6cede7: 89 55 c8 mov %edx,-0x38(%rbp) : switch (type) 0.00 : 6cedea: 0f 87 6f fd ff ff ja 6ceb5f 0.00 : 6cedf0: 89 c0 mov %eax,%eax 0.00 : 6cedf2: ff 24 c5 b0 a2 8b 00 jmpq *0x8ba2b0(,%rax,8) 0.00 : 6cedf9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * Was this an "ISO date" with embedded field labels? An : * example is "y2001m02d04" - thomas 2001-02-04 : */ : if (ptype != 0) 0.00 : 6cee00: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 6cee06: 85 c0 test %eax,%eax 0.00 : 6cee08: 0f 85 7a 03 00 00 jne 6cf188 : else : { : char *cp; : int flen; : : flen = strlen(field[i]); 0.00 : 6cee0e: 49 8b 1f mov (%r15),%rbx 0.00 : 6cee11: 48 89 df mov %rbx,%rdi 0.00 : 6cee14: e8 37 aa d9 ff callq 469850 : cp = strchr(field[i], '.'); 0.00 : 6cee19: be 2e 00 00 00 mov $0x2e,%esi : else : { : char *cp; : int flen; : : flen = strlen(field[i]); 0.00 : 6cee1e: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) : cp = strchr(field[i], '.'); 0.00 : 6cee25: 48 89 df mov %rbx,%rdi : else : { : char *cp; : int flen; : : flen = strlen(field[i]); 0.00 : 6cee28: 41 89 c4 mov %eax,%r12d : cp = strchr(field[i], '.'); 0.00 : 6cee2b: e8 20 ae d9 ff callq 469c50 : : /* Embedded decimal and no date yet? */ : if (cp != NULL && !(fmask & DTK_DATE_M)) 0.00 : 6cee30: 48 85 c0 test %rax,%rax 0.00 : 6cee33: 74 22 je 6cee57 0.00 : 6cee35: 41 f6 c6 0e test $0xe,%r14b 0.00 : 6cee39: 0f 84 d1 00 00 00 je 6cef10 : &tmask, &is2digits, tm); : if (dterr) : return dterr; : } : /* embedded decimal and several digits before? */ : else if (cp != NULL && flen - strlen(cp) > 2) 0.00 : 6cee3f: 48 89 c7 mov %rax,%rdi 0.00 : 6cee42: e8 09 aa d9 ff callq 469850 0.00 : 6cee47: 49 63 d4 movslq %r12d,%rdx 0.00 : 6cee4a: 48 29 c2 sub %rax,%rdx 0.00 : 6cee4d: 48 83 fa 02 cmp $0x2,%rdx 0.00 : 6cee51: 0f 87 01 01 00 00 ja 6cef58 : * more digits, we assume it is YMD or HMS unless no date : * and no time values have been specified. This forces 6+ : * digit years to be at the end of the string, or to use : * the ISO date specification. : */ : else if (flen >= 6 && (!(fmask & DTK_DATE_M) || 0.00 : 6cee57: 41 83 fc 05 cmp $0x5,%r12d 0.00 : 6cee5b: 7e 6b jle 6ceec8 0.00 : 6cee5d: 41 f6 c6 0e test $0xe,%r14b 0.00 : 6cee61: 74 09 je 6cee6c 0.00 : 6cee63: 41 f7 c6 00 7c 00 00 test $0x7c00,%r14d 0.00 : 6cee6a: 75 5c jne 6ceec8 : !(fmask & DTK_TIME_M))) : { : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cee6c: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6cee70: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cee77: 48 89 de mov %rbx,%rsi 0.00 : 6cee7a: 4d 89 e8 mov %r13,%r8 0.00 : 6cee7d: 44 89 f2 mov %r14d,%edx 0.00 : 6cee80: 44 89 e7 mov %r12d,%edi 0.00 : 6cee83: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6cee87: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cee8b: e8 20 e6 ff ff callq 6cd4b0 : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cee90: 85 c0 test %eax,%eax : * the ISO date specification. : */ : else if (flen >= 6 && (!(fmask & DTK_DATE_M) || : !(fmask & DTK_TIME_M))) : { : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cee92: 89 c3 mov %eax,%ebx : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cee94: 0f 89 1f fd ff ff jns 6cebb9 0.00 : 6cee9a: e9 c5 fc ff ff jmpq 6ceb64 0.00 : 6cee9f: 90 nop : tmask = DTK_M(TZ); : } : } : else : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6ceea0: 49 8b 3f mov (%r15),%rdi 0.00 : 6ceea3: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6ceea7: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 6ceeab: 4d 89 e8 mov %r13,%r8 0.00 : 6ceeae: 44 89 f6 mov %r14d,%esi 0.00 : 6ceeb1: e8 fa e9 ff ff callq 6cd8b0 : &tmask, &is2digits, tm); : if (dterr) 0.00 : 6ceeb6: 85 c0 test %eax,%eax : tmask = DTK_M(TZ); : } : } : else : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6ceeb8: 89 c3 mov %eax,%ebx : &tmask, &is2digits, tm); : if (dterr) 0.00 : 6ceeba: 0f 84 f9 fc ff ff je 6cebb9 0.00 : 6ceec0: e9 9f fc ff ff jmpq 6ceb64 0.00 : 6ceec5: 0f 1f 00 nopl (%rax) : return dterr; : } : /* otherwise it is a single date/time field... */ : else : { : dterr = DecodeNumber(flen, field[i], 0.00 : 6ceec8: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 6ceecf: 0f be 95 6d ff ff ff movsbl -0x93(%rbp),%edx 0.00 : 6ceed6: 48 8d 45 cf lea -0x31(%rbp),%rax 0.00 : 6ceeda: 4c 8d 45 c8 lea -0x38(%rbp),%r8 0.00 : 6ceede: 48 89 de mov %rbx,%rsi 0.00 : 6ceee1: 4d 89 e9 mov %r13,%r9 0.00 : 6ceee4: 44 89 e7 mov %r12d,%edi 0.00 : 6ceee7: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 6ceeec: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6ceef0: 44 89 f1 mov %r14d,%ecx 0.00 : 6ceef3: e8 a8 e7 ff ff callq 6cd6a0 : haveTextMonth, fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr) 0.00 : 6ceef8: 85 c0 test %eax,%eax : return dterr; : } : /* otherwise it is a single date/time field... */ : else : { : dterr = DecodeNumber(flen, field[i], 0.00 : 6ceefa: 89 c3 mov %eax,%ebx : haveTextMonth, fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr) 0.00 : 6ceefc: 0f 84 b7 fc ff ff je 6cebb9 0.00 : 6cef02: e9 5d fc ff ff jmpq 6ceb64 0.00 : 6cef07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cef0e: 00 00 : cp = strchr(field[i], '.'); : : /* Embedded decimal and no date yet? */ : if (cp != NULL && !(fmask & DTK_DATE_M)) : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6cef10: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6cef14: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 6cef18: 48 89 df mov %rbx,%rdi 0.00 : 6cef1b: 4d 89 e8 mov %r13,%r8 0.00 : 6cef1e: 44 89 f6 mov %r14d,%esi 0.00 : 6cef21: e8 8a e9 ff ff callq 6cd8b0 : &tmask, &is2digits, tm); : if (dterr) 0.00 : 6cef26: 85 c0 test %eax,%eax : cp = strchr(field[i], '.'); : : /* Embedded decimal and no date yet? */ : if (cp != NULL && !(fmask & DTK_DATE_M)) : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6cef28: 89 c3 mov %eax,%ebx : &tmask, &is2digits, tm); : if (dterr) 0.00 : 6cef2a: 0f 84 89 fc ff ff je 6cebb9 0.00 : 6cef30: e9 2f fc ff ff jmpq 6ceb64 0.00 : 6cef35: 0f 1f 00 nopl (%rax) : char *cp; : : if (ptype != 0) : { : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) 0.00 : 6cef38: 83 bd 60 ff ff ff 03 cmpl $0x3,-0xa0(%rbp) 0.00 : 6cef3f: 90 nop 0.00 : 6cef40: 0f 85 19 fc ff ff jne 6ceb5f 0.00 : 6cef46: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cef4d: 00 00 00 0.00 : 6cef50: e9 e5 fd ff ff jmpq 6ced3a 0.00 : 6cef55: 0f 1f 00 nopl (%rax) : /* : * Interpret as a concatenated date or time Set the : * type field to allow decoding other fields later. : * Example: 20011223 or 040506 : */ : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cef58: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 6cef5c: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cef63: 8b bd 18 ff ff ff mov -0xe8(%rbp),%edi 0.00 : 6cef69: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cef6d: 48 89 de mov %rbx,%rsi 0.00 : 6cef70: 4d 89 e8 mov %r13,%r8 0.00 : 6cef73: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 6cef77: 44 89 f2 mov %r14d,%edx 0.00 : 6cef7a: e8 31 e5 ff ff callq 6cd4b0 : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cef7f: 85 c0 test %eax,%eax : /* : * Interpret as a concatenated date or time Set the : * type field to allow decoding other fields later. : * Example: 20011223 or 040506 : */ : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cef81: 89 c3 mov %eax,%ebx : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cef83: 0f 89 30 fc ff ff jns 6cebb9 0.00 : 6cef89: e9 d6 fb ff ff jmpq 6ceb64 0.00 : 6cef8e: 66 90 xchg %ax,%ax : */ : tmask |= DTK_M(TZ); : } : else : { : namedTz = pg_tzset(field[i]); 0.00 : 6cef90: e8 ab bb 0d 00 callq 7aab40 : if (!namedTz) 0.00 : 6cef95: 48 85 c0 test %rax,%rax : */ : tmask |= DTK_M(TZ); : } : else : { : namedTz = pg_tzset(field[i]); 0.00 : 6cef98: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : if (!namedTz) 0.00 : 6cef9f: 0f 84 de 06 00 00 je 6cf683 : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("time zone \"%s\" not recognized", : field[i]))); : } : /* we'll apply the zone setting below */ : tmask = DTK_M(TZ); 0.00 : 6cefa5: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) 0.00 : 6cefac: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cefb3: 00 00 00 0.00 : 6cefb6: e9 fe fb ff ff jmpq 6cebb9 0.00 : 6cefbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * This might be an ISO time following a "t" field. : */ : if (ptype != 0) : { : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) 0.00 : 6cefc0: 83 bd 60 ff ff ff 03 cmpl $0x3,-0xa0(%rbp) 0.00 : 6cefc7: 0f 85 92 fb ff ff jne 6ceb5f 0.00 : 6cefcd: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cefd4: 00 00 00 0.00 : 6cefd7: e9 92 fc ff ff jmpq 6cec6e : : /* : * Before giving up and declaring error, check to see : * if it is an all-alpha timezone name. : */ : namedTz = pg_tzset(field[i]); 0.00 : 6cefdc: 49 8b 3f mov (%r15),%rdi 0.00 : 6cefdf: e8 5c bb 0d 00 callq 7aab40 : if (!namedTz) 0.00 : 6cefe4: 48 85 c0 test %rax,%rax : : /* : * Before giving up and declaring error, check to see : * if it is an all-alpha timezone name. : */ : namedTz = pg_tzset(field[i]); 0.00 : 6cefe7: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : if (!namedTz) 0.00 : 6cefee: 0f 84 6b fb ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : /* we'll apply the zone setting below */ : tmask = DTK_M(TZ); 0.00 : 6ceff4: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) : break; 0.00 : 6ceffb: e9 b9 fb ff ff jmpq 6cebb9 : * field is time. Try to verify that this is sensible. : */ : tmask = 0; : : /* No preceding date? Then quit... */ : if ((fmask & DTK_DATE_M) != DTK_DATE_M) 0.00 : 6cf000: 44 89 f0 mov %r14d,%eax : : /* : * This is a filler field "t" indicating that the next : * field is time. Try to verify that this is sensible. : */ : tmask = 0; 0.00 : 6cf003: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : : /* No preceding date? Then quit... */ : if ((fmask & DTK_DATE_M) != DTK_DATE_M) 0.00 : 6cf00a: 83 e0 0e and $0xe,%eax 0.00 : 6cf00d: 83 f8 0e cmp $0xe,%eax 0.00 : 6cf010: 0f 85 49 fb ff ff jne 6ceb5f : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || 0.00 : 6cf016: 8b 95 14 ff ff ff mov -0xec(%rbp),%edx 0.00 : 6cf01c: 39 95 64 ff ff ff cmp %edx,-0x9c(%rbp) 0.00 : 6cf022: 0f 8d 37 fb ff ff jge 6ceb5f 0.00 : 6cf028: 48 8b 8d 78 ff ff ff mov -0x88(%rbp),%rcx 0.00 : 6cf02f: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 6cf032: 85 c0 test %eax,%eax 0.00 : 6cf034: 74 0e je 6cf044 0.00 : 6cf036: 83 f8 03 cmp $0x3,%eax 0.00 : 6cf039: 74 09 je 6cf044 0.00 : 6cf03b: 83 f8 02 cmp $0x2,%eax 0.00 : 6cf03e: 0f 85 1b fb ff ff jne 6ceb5f : (ftype[i + 1] != DTK_NUMBER && : ftype[i + 1] != DTK_TIME && : ftype[i + 1] != DTK_DATE)) : return DTERR_BAD_FORMAT; : : ptype = val; 0.00 : 6cf044: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf047: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6cf04d: 31 c0 xor %eax,%eax 0.00 : 6cf04f: e9 6d fb ff ff jmpq 6cebc1 : case AMPM: : mer = val; : break; : : case ADBC: : bc = (val == BC); 0.00 : 6cf054: 83 7d c4 01 cmpl $0x1,-0x3c(%rbp) 0.00 : 6cf058: 0f 94 85 6f ff ff ff sete -0x91(%rbp) : break; 0.00 : 6cf05f: e9 55 fb ff ff jmpq 6cebb9 : tm->tm_wday = val; : break; : : case UNITS: : tmask = 0; : ptype = val; 0.00 : 6cf064: 8b 45 c4 mov -0x3c(%rbp),%eax : case DOW: : tm->tm_wday = val; : break; : : case UNITS: : tmask = 0; 0.00 : 6cf067: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : ptype = val; 0.00 : 6cf06e: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6cf074: 31 c0 xor %eax,%eax 0.00 : 6cf076: e9 46 fb ff ff jmpq 6cebc1 : case ADBC: : bc = (val == BC); : break; : : case DOW: : tm->tm_wday = val; 0.00 : 6cf07b: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf07e: 41 89 45 18 mov %eax,0x18(%r13) : break; 0.00 : 6cf082: e9 32 fb ff ff jmpq 6cebb9 : : case IGNORE_DTF: : break; : : case AMPM: : mer = val; 0.00 : 6cf087: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 6cf08a: 89 8d 68 ff ff ff mov %ecx,-0x98(%rbp) : break; 0.00 : 6cf090: e9 24 fb ff ff jmpq 6cebb9 : : /* : * daylight savings time modifier (solves "MET DST" : * syntax) : */ : tmask |= DTK_M(DTZ); 0.00 : 6cf095: 89 d0 mov %edx,%eax : tm->tm_isdst = 1; 0.00 : 6cf097: 41 c7 45 20 01 00 00 movl $0x1,0x20(%r13) 0.00 : 6cf09e: 00 : : /* : * daylight savings time modifier (solves "MET DST" : * syntax) : */ : tmask |= DTK_M(DTZ); 0.00 : 6cf09f: 83 c8 40 or $0x40,%eax : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0a2: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : : /* : * daylight savings time modifier (solves "MET DST" : * syntax) : */ : tmask |= DTK_M(DTZ); 0.00 : 6cf0a7: 89 45 c8 mov %eax,-0x38(%rbp) : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0aa: 0f 84 af fa ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : *tzp += val * MINS_PER_HOUR; 0.00 : 6cf0b0: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf0b3: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf0b7: 41 bc 3c 00 00 00 mov $0x3c,%r12d 0.00 : 6cf0bd: 41 0f af c4 imul %r12d,%eax 0.00 : 6cf0c1: 01 02 add %eax,(%rdx) : break; 0.00 : 6cf0c3: e9 f1 fa ff ff jmpq 6cebb9 : : /* : * set mask for TZ here _or_ check for DTZ later when : * getting default timezone : */ : tmask |= DTK_M(TZ); 0.00 : 6cf0c8: 89 d0 mov %edx,%eax : tm->tm_isdst = 1; 0.00 : 6cf0ca: 41 c7 45 20 01 00 00 movl $0x1,0x20(%r13) 0.00 : 6cf0d1: 00 : : /* : * set mask for TZ here _or_ check for DTZ later when : * getting default timezone : */ : tmask |= DTK_M(TZ); 0.00 : 6cf0d2: 83 c8 20 or $0x20,%eax : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0d5: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : : /* : * set mask for TZ here _or_ check for DTZ later when : * getting default timezone : */ : tmask |= DTK_M(TZ); 0.00 : 6cf0da: 89 45 c8 mov %eax,-0x38(%rbp) : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0dd: 0f 84 7c fa ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : *tzp = val * MINS_PER_HOUR; 0.00 : 6cf0e3: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf0e6: bb 3c 00 00 00 mov $0x3c,%ebx 0.00 : 6cf0eb: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 6cf0ef: 0f af c3 imul %ebx,%eax 0.00 : 6cf0f2: 89 01 mov %eax,(%rcx) : break; 0.00 : 6cf0f4: e9 c0 fa ff ff jmpq 6cebb9 : : case TZ: : tm->tm_isdst = 0; : if (tzp == NULL) 0.00 : 6cf0f9: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : return DTERR_BAD_FORMAT; : *tzp = val * MINS_PER_HOUR; : break; : : case TZ: : tm->tm_isdst = 0; 0.00 : 6cf0fe: 41 c7 45 20 00 00 00 movl $0x0,0x20(%r13) 0.00 : 6cf105: 00 : if (tzp == NULL) 0.00 : 6cf106: 0f 84 53 fa ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : *tzp = val * MINS_PER_HOUR; 0.00 : 6cf10c: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf10f: 41 bb 3c 00 00 00 mov $0x3c,%r11d 0.00 : 6cf115: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf119: 41 0f af c3 imul %r11d,%eax 0.00 : 6cf11d: 89 02 mov %eax,(%rdx) : break; 0.00 : 6cf11f: e9 95 fa ff ff jmpq 6cebb9 : : /* : * already have a (numeric) month? then see if we can : * substitute... : */ : if ((fmask & DTK_M(MONTH)) && !haveTextMonth && 0.00 : 6cf124: 41 f6 c6 02 test $0x2,%r14b 0.00 : 6cf128: 74 27 je 6cf151 0.00 : 6cf12a: 80 bd 6d ff ff ff 00 cmpb $0x0,-0x93(%rbp) 0.00 : 6cf131: 75 1e jne 6cf151 0.00 : 6cf133: 41 f6 c6 08 test $0x8,%r14b 0.00 : 6cf137: 75 18 jne 6cf151 0.00 : 6cf139: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 6cf13d: 85 c0 test %eax,%eax 0.00 : 6cf13f: 7e 10 jle 6cf151 0.00 : 6cf141: 83 f8 1f cmp $0x1f,%eax 0.00 : 6cf144: 7f 0b jg 6cf151 : !(fmask & DTK_M(DAY)) && tm->tm_mon >= 1 && : tm->tm_mon <= 31) : { : tm->tm_mday = tm->tm_mon; 0.00 : 6cf146: 41 89 45 0c mov %eax,0xc(%r13) : tmask = DTK_M(DAY); 0.00 : 6cf14a: c7 45 c8 08 00 00 00 movl $0x8,-0x38(%rbp) : } : haveTextMonth = TRUE; : tm->tm_mon = val; 0.00 : 6cf151: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf154: c6 85 6d ff ff ff 01 movb $0x1,-0x93(%rbp) 0.00 : 6cf15b: 41 89 45 10 mov %eax,0x10(%r13) : break; 0.00 : 6cf15f: e9 55 fa ff ff jmpq 6cebb9 : : tmask = DTK_M(type); : switch (type) : { : case RESERV: : switch (val) 0.00 : 6cf164: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 6cf167: 8d 42 f8 lea -0x8(%rdx),%eax 0.00 : 6cf16a: 83 f8 08 cmp $0x8,%eax 0.00 : 6cf16d: 0f 86 98 03 00 00 jbe 6cf50b : if (tzp != NULL) : *tzp = 0; : break; : : default: : *dtype = val; 0.00 : 6cf173: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 6cf17a: 89 10 mov %edx,(%rax) 0.00 : 6cf17c: e9 38 fa ff ff jmpq 6cebb9 0.00 : 6cf181: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (ptype != 0) : { : char *cp; : int val; : : errno = 0; 0.00 : 6cf188: e8 33 ab d9 ff callq 469cc0 <__errno_location@plt> 0.00 : 6cf18d: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtoi(field[i], &cp, 10); 0.00 : 6cf193: 49 8b 3f mov (%r15),%rdi 0.00 : 6cf196: 48 8d 75 b8 lea -0x48(%rbp),%rsi : if (ptype != 0) : { : char *cp; : int val; : : errno = 0; 0.00 : 6cf19a: 48 89 c3 mov %rax,%rbx : val = strtoi(field[i], &cp, 10); 0.00 : 6cf19d: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 6cf1a2: e8 29 d6 ff ff callq 6cc7d0 : if (errno == ERANGE) 0.00 : 6cf1a7: 83 3b 22 cmpl $0x22,(%rbx) : { : char *cp; : int val; : : errno = 0; : val = strtoi(field[i], &cp, 10); 0.00 : 6cf1aa: 41 89 c0 mov %eax,%r8d : if (errno == ERANGE) 0.00 : 6cf1ad: 0f 84 18 fb ff ff je 6ceccb : : /* : * only a few kinds are allowed to have an embedded : * decimal : */ : if (*cp == '.') 0.00 : 6cf1b3: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 6cf1b7: 0f b6 07 movzbl (%rdi),%eax 0.00 : 6cf1ba: 3c 2e cmp $0x2e,%al 0.00 : 6cf1bc: 0f 84 9d 02 00 00 je 6cf45f : break; : default: : return DTERR_BAD_FORMAT; : break; : } : else if (*cp != '\0') 0.00 : 6cf1c2: 84 c0 test %al,%al 0.00 : 6cf1c4: 0f 85 95 f9 ff ff jne 6ceb5f : return DTERR_BAD_FORMAT; : : switch (ptype) 0.00 : 6cf1ca: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 6cf1d0: 83 e8 03 sub $0x3,%eax 0.00 : 6cf1d3: 83 f8 1c cmp $0x1c,%eax 0.00 : 6cf1d6: 0f 87 83 f9 ff ff ja 6ceb5f 0.00 : 6cf1dc: 89 c0 mov %eax,%eax 0.00 : 6cf1de: ff 24 c5 b0 a3 8b 00 jmpq *0x8ba3b0(,%rax,8) : tm->tm_hour = val; : tmask = DTK_M(HOUR); : break; : : case DTK_MINUTE: : tm->tm_min = val; 0.00 : 6cf1e5: 45 89 45 04 mov %r8d,0x4(%r13) : tmask = DTK_M(MINUTE); 0.00 : 6cf1e9: c7 45 c8 00 08 00 00 movl $0x800,-0x38(%rbp) : return DTERR_BAD_FORMAT; : break; : } : : ptype = 0; : *dtype = DTK_DATE; 0.00 : 6cf1f0: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 6cf1f7: c7 00 02 00 00 00 movl $0x2,(%rax) 0.00 : 6cf1fd: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cf204: 00 00 00 0.00 : 6cf207: e9 ad f9 ff ff jmpq 6cebb9 : tm->tm_min = val; : tmask = DTK_M(MINUTE); : break; : : case DTK_SECOND: : tm->tm_sec = val; 0.00 : 6cf20c: 45 89 45 00 mov %r8d,0x0(%r13) : tmask = DTK_M(SECOND); 0.00 : 6cf210: c7 45 c8 00 10 00 00 movl $0x1000,-0x38(%rbp) : if (*cp == '.') 0.00 : 6cf217: 80 3f 2e cmpb $0x2e,(%rdi) 0.00 : 6cf21a: 75 d4 jne 6cf1f0 : { : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cf21c: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 6cf223: e8 28 d5 ff ff callq 6cc750 : if (dterr) 0.00 : 6cf228: 85 c0 test %eax,%eax : case DTK_SECOND: : tm->tm_sec = val; : tmask = DTK_M(SECOND); : if (*cp == '.') : { : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cf22a: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cf22c: 0f 85 32 f9 ff ff jne 6ceb64 : return dterr; : tmask = DTK_ALL_SECS_M; 0.00 : 6cf232: c7 45 c8 00 70 00 00 movl $0x7000,-0x38(%rbp) 0.00 : 6cf239: eb b5 jmp 6cf1f0 : } : break; : : case DTK_TZ: : tmask = DTK_M(TZ); 0.00 : 6cf23b: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) : dterr = DecodeTimezone(field[i], tzp); 0.00 : 6cf242: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6cf246: 49 8b 3f mov (%r15),%rdi 0.00 : 6cf249: e8 b2 e0 ff ff callq 6cd300 : if (dterr) 0.00 : 6cf24e: 85 c0 test %eax,%eax : } : break; : : case DTK_TZ: : tmask = DTK_M(TZ); : dterr = DecodeTimezone(field[i], tzp); 0.00 : 6cf250: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cf252: 74 9c je 6cf1f0 0.00 : 6cf254: e9 0b f9 ff ff jmpq 6ceb64 0.00 : 6cf259: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : break; : : case DTK_TIME: : /* previous field was "t" for ISO time */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6cf260: 49 8b 1f mov (%r15),%rbx 0.00 : 6cf263: 48 89 df mov %rbx,%rdi 0.00 : 6cf266: e8 e5 a5 d9 ff callq 469850 0.00 : 6cf26b: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6cf26f: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cf276: 44 89 f2 mov %r14d,%edx 0.00 : 6cf279: 83 ca 0e or $0xe,%edx 0.00 : 6cf27c: 48 89 de mov %rbx,%rsi 0.00 : 6cf27f: 4d 89 e8 mov %r13,%r8 0.00 : 6cf282: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6cf286: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cf28a: 89 c7 mov %eax,%edi 0.00 : 6cf28c: e8 1f e2 ff ff callq 6cd4b0 : (fmask | DTK_DATE_M), : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cf291: 85 c0 test %eax,%eax : } : break; : : case DTK_TIME: : /* previous field was "t" for ISO time */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6cf293: 89 c3 mov %eax,%ebx : (fmask | DTK_DATE_M), : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cf295: 0f 88 c9 f8 ff ff js 6ceb64 : return dterr; : if (tmask != DTK_TIME_M) 0.00 : 6cf29b: 81 7d c8 00 7c 00 00 cmpl $0x7c00,-0x38(%rbp) 0.00 : 6cf2a2: 0f 84 48 ff ff ff je 6cf1f0 0.00 : 6cf2a8: e9 b2 f8 ff ff jmpq 6ceb5f 0.00 : 6cf2ad: 0f 1f 00 nopl (%rax) : return dterr; : break; : : case DTK_JULIAN: : /* previous field was a label for "julian date" */ : if (val < 0) 0.00 : 6cf2b0: 45 85 c0 test %r8d,%r8d 0.00 : 6cf2b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cf2b8: 0f 88 0d fa ff ff js 6ceccb : return DTERR_FIELD_OVERFLOW; : tmask = DTK_DATE_M; : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6cf2be: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf2c5: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf2cc: 44 89 c7 mov %r8d,%edi 0.00 : 6cf2cf: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi : : case DTK_JULIAN: : /* previous field was a label for "julian date" */ : if (val < 0) : return DTERR_FIELD_OVERFLOW; : tmask = DTK_DATE_M; 0.00 : 6cf2d6: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6cf2dd: e8 ce aa ff ff callq 6c9db0 : isjulian = TRUE; : : /* fractional Julian Day? */ : if (*cp == '.') 0.00 : 6cf2e2: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6cf2e6: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) 0.00 : 6cf2ed: 80 38 2e cmpb $0x2e,(%rax) 0.00 : 6cf2f0: 0f 85 fa fe ff ff jne 6cf1f0 : { : double time; : : errno = 0; 0.00 : 6cf2f6: c7 03 00 00 00 00 movl $0x0,(%rbx) : time = strtod(cp, &cp); 0.00 : 6cf2fc: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 6cf300: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 6cf304: e8 77 ae d9 ff callq 46a180 : if (*cp != '\0' || errno != 0) 0.00 : 6cf309: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6cf30d: 80 38 00 cmpb $0x0,(%rax) 0.00 : 6cf310: 0f 85 49 f8 ff ff jne 6ceb5f 0.00 : 6cf316: 8b 03 mov (%rbx),%eax 0.00 : 6cf318: 85 c0 test %eax,%eax 0.00 : 6cf31a: 0f 85 3f f8 ff ff jne 6ceb5f : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.00 : 6cf320: f2 0f 59 05 98 a8 1e mulsd 0x1ea898(%rip),%xmm0 # 8b9bc0 <__func__.15194+0x1e> 0.00 : 6cf327: 00 0.00 : 6cf328: 4c 8b 85 20 ff ff ff mov -0xe0(%rbp),%r8 0.00 : 6cf32f: 4c 89 e9 mov %r13,%rcx 0.00 : 6cf332: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 6cf339: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 6cf340: f2 48 0f 2c f8 cvttsd2si %xmm0,%rdi 0.00 : 6cf345: e8 a6 13 07 00 callq 7406f0 : &tm->tm_hour, &tm->tm_min, : &tm->tm_sec, fsec); : tmask |= DTK_TIME_M; 0.00 : 6cf34a: 81 4d c8 00 7c 00 00 orl $0x7c00,-0x38(%rbp) 0.00 : 6cf351: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) 0.00 : 6cf358: e9 93 fe ff ff jmpq 6cf1f0 0.00 : 6cf35d: 0f 1f 00 nopl (%rax) : return DTERR_BAD_FORMAT; : : switch (ptype) : { : case DTK_YEAR: : tm->tm_year = val; 0.00 : 6cf360: 45 89 45 14 mov %r8d,0x14(%r13) : tmask = DTK_M(YEAR); 0.00 : 6cf364: c7 45 c8 04 00 00 00 movl $0x4,-0x38(%rbp) : break; 0.00 : 6cf36b: e9 80 fe ff ff jmpq 6cf1f0 : : /* : * already have a month and hour? then assume : * minutes : */ : if ((fmask & DTK_M(MONTH)) != 0 && 0.00 : 6cf370: 44 89 f0 mov %r14d,%eax 0.00 : 6cf373: 25 02 04 00 00 and $0x402,%eax 0.00 : 6cf378: 3d 02 04 00 00 cmp $0x402,%eax 0.00 : 6cf37d: 0f 84 62 fe ff ff je 6cf1e5 : tm->tm_min = val; : tmask = DTK_M(MINUTE); : } : else : { : tm->tm_mon = val; 0.00 : 6cf383: 45 89 45 10 mov %r8d,0x10(%r13) : tmask = DTK_M(MONTH); 0.00 : 6cf387: c7 45 c8 02 00 00 00 movl $0x2,-0x38(%rbp) 0.00 : 6cf38e: e9 5d fe ff ff jmpq 6cf1f0 : } : break; : : case DTK_DAY: : tm->tm_mday = val; 0.00 : 6cf393: 45 89 45 0c mov %r8d,0xc(%r13) : tmask = DTK_M(DAY); 0.00 : 6cf397: c7 45 c8 08 00 00 00 movl $0x8,-0x38(%rbp) : break; 0.00 : 6cf39e: e9 4d fe ff ff jmpq 6cf1f0 : : case DTK_HOUR: : tm->tm_hour = val; 0.00 : 6cf3a3: 45 89 45 08 mov %r8d,0x8(%r13) : tmask = DTK_M(HOUR); 0.00 : 6cf3a7: c7 45 c8 00 04 00 00 movl $0x400,-0x38(%rbp) : break; 0.00 : 6cf3ae: e9 3d fe ff ff jmpq 6cf1f0 : /* don't know daylight savings time status apriori */ : tm->tm_isdst = -1; : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) 0.00 : 6cf3b3: 45 31 f6 xor %r14d,%r14d 0.00 : 6cf3b6: c7 85 68 ff ff ff 02 movl $0x2,-0x98(%rbp) 0.00 : 6cf3bd: 00 00 00 0.00 : 6cf3c0: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : 6cf3c7: 00 00 00 00 0.00 : 6cf3cb: 31 c9 xor %ecx,%ecx 0.00 : 6cf3cd: 31 f6 xor %esi,%esi 0.00 : 6cf3cf: e9 23 f8 ff ff jmpq 6cebf7 : if (ptype == DTK_JULIAN) : { : char *cp; : int val; : : if (tzp == NULL) 0.00 : 6cf3d4: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6cf3d9: 0f 84 80 f7 ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : errno = 0; 0.00 : 6cf3df: e8 dc a8 d9 ff callq 469cc0 <__errno_location@plt> 0.00 : 6cf3e4: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtoi(field[i], &cp, 10); 0.00 : 6cf3ea: 49 8b 3f mov (%r15),%rdi 0.00 : 6cf3ed: 48 8d 75 b8 lea -0x48(%rbp),%rsi : int val; : : if (tzp == NULL) : return DTERR_BAD_FORMAT; : : errno = 0; 0.00 : 6cf3f1: 48 89 c3 mov %rax,%rbx : val = strtoi(field[i], &cp, 10); 0.00 : 6cf3f4: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 6cf3f9: e8 d2 d3 ff ff callq 6cc7d0 : if (errno == ERANGE || val < 0) 0.00 : 6cf3fe: 83 3b 22 cmpl $0x22,(%rbx) : : if (tzp == NULL) : return DTERR_BAD_FORMAT; : : errno = 0; : val = strtoi(field[i], &cp, 10); 0.00 : 6cf401: 89 c7 mov %eax,%edi : if (errno == ERANGE || val < 0) 0.00 : 6cf403: 0f 84 c2 f8 ff ff je 6ceccb 0.00 : 6cf409: 85 c0 test %eax,%eax 0.00 : 6cf40b: 0f 88 ba f8 ff ff js 6ceccb : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6cf411: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf418: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf41f: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 6cf426: e8 85 a9 ff ff callq 6c9db0 : isjulian = TRUE; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6cf42b: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 6cf42f: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6cf433: e8 c8 de ff ff callq 6cd300 : if (dterr) 0.00 : 6cf438: 85 c0 test %eax,%eax : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : isjulian = TRUE; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6cf43a: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cf43c: 0f 85 22 f7 ff ff jne 6ceb64 : return dterr; : : tmask = DTK_DATE_M | DTK_TIME_M | DTK_M(TZ); 0.00 : 6cf442: c7 45 c8 2e 7c 00 00 movl $0x7c2e,-0x38(%rbp) 0.00 : 6cf449: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cf450: 00 00 00 0.00 : 6cf453: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) : ptype = 0; : break; 0.00 : 6cf45a: e9 5a f7 ff ff jmpq 6cebb9 : /* : * only a few kinds are allowed to have an embedded : * decimal : */ : if (*cp == '.') : switch (ptype) 0.00 : 6cf45f: 83 bd 60 ff ff ff 1f cmpl $0x1f,-0xa0(%rbp) 0.00 : 6cf466: 0f 87 f3 f6 ff ff ja 6ceb5f 0.00 : 6cf46c: 0f b6 8d 60 ff ff ff movzbl -0xa0(%rbp),%ecx 0.00 : 6cf473: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6cf478: 48 d3 e0 shl %cl,%rax 0.00 : 6cf47b: a9 08 00 04 80 test $0x80040008,%eax 0.00 : 6cf480: 0f 85 44 fd ff ff jne 6cf1ca 0.00 : 6cf486: e9 d4 f6 ff ff jmpq 6ceb5f : : /* : * If we had a full timezone spec, compute the offset (we could not do : * it before, because we need the date to resolve DST status). : */ : if (namedTz != NULL) 0.00 : 6cf48b: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 6cf492: 00 0.00 : 6cf493: 0f 85 32 02 00 00 jne 6cf6cb : : *tzp = DetermineTimeZoneOffset(tm, namedTz); : } : : /* timezone not specified? then find local timezone if possible */ : if (tzp != NULL && !(fmask & DTK_M(TZ))) 0.00 : 6cf499: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6cf49e: 66 90 xchg %ax,%ax 0.00 : 6cf4a0: 0f 84 be f6 ff ff je 6ceb64 0.00 : 6cf4a6: 41 f6 c6 20 test $0x20,%r14b 0.00 : 6cf4aa: 0f 85 b4 f6 ff ff jne 6ceb64 : { : /* : * daylight savings time modifier but no standard timezone? then : * error : */ : if (fmask & DTK_M(DTZMOD)) 0.00 : 6cf4b0: 45 84 f6 test %r14b,%r14b 0.00 : 6cf4b3: 0f 88 a6 f6 ff ff js 6ceb5f : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6cf4b9: 48 8b 35 80 fc 4e 00 mov 0x4efc80(%rip),%rsi # bbf140 0.00 : 6cf4c0: 4c 89 ef mov %r13,%rdi 0.00 : 6cf4c3: e8 a8 e6 ff ff callq 6cdb70 0.00 : 6cf4c8: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 6cf4cc: 89 01 mov %eax,(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 16.67 : 6cf4ce: e9 91 f6 ff ff jmpq 6ceb64 0.00 : 6cf4d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : dterr = ValidateDate(fmask, isjulian, is2digits, bc, tm); : if (dterr) : return dterr; : : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) 0.00 : 6cf4d8: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 6cf4dc: 83 f8 0c cmp $0xc,%eax 0.00 : 6cf4df: 0f 8f e6 f7 ff ff jg 6ceccb : return DTERR_FIELD_OVERFLOW; : if (mer == AM && tm->tm_hour == HOURS_PER_DAY / 2) 0.00 : 6cf4e5: 44 8b 95 68 ff ff ff mov -0x98(%rbp),%r10d 0.00 : 6cf4ec: 45 85 d2 test %r10d,%r10d 0.00 : 6cf4ef: 0f 85 f9 01 00 00 jne 6cf6ee 0.00 : 6cf4f5: 83 f8 0c cmp $0xc,%eax 0.00 : 6cf4f8: 0f 85 1f f7 ff ff jne 6cec1d : tm->tm_hour = 0; 0.00 : 6cf4fe: 41 c7 45 08 00 00 00 movl $0x0,0x8(%r13) 0.00 : 6cf505: 00 : return dterr; : : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) : return DTERR_FIELD_OVERFLOW; : if (mer == AM && tm->tm_hour == HOURS_PER_DAY / 2) 0.00 : 6cf506: e9 12 f7 ff ff jmpq 6cec1d : : tmask = DTK_M(type); : switch (type) : { : case RESERV: : switch (val) 0.00 : 6cf50b: 89 c0 mov %eax,%eax 0.00 : 6cf50d: 0f 1f 00 nopl (%rax) 0.00 : 6cf510: ff 24 c5 98 a4 8b 00 jmpq *0x8ba498(,%rax,8) : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_ZULU: : tmask = (DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; 0.00 : 6cf517: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) + 1, : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_ZULU: : tmask = (DTK_TIME_M | DTK_M(TZ)); 0.00 : 6cf51e: c7 45 c8 20 7c 00 00 movl $0x7c20,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf525: c7 02 02 00 00 00 movl $0x2,(%rdx) : tm->tm_hour = 0; : tm->tm_min = 0; : tm->tm_sec = 0; : if (tzp != NULL) 0.00 : 6cf52b: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : break; : : case DTK_ZULU: : tmask = (DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; : tm->tm_hour = 0; 0.00 : 6cf530: 41 c7 45 08 00 00 00 movl $0x0,0x8(%r13) 0.00 : 6cf537: 00 : tm->tm_min = 0; 0.00 : 6cf538: 41 c7 45 04 00 00 00 movl $0x0,0x4(%r13) 0.00 : 6cf53f: 00 : tm->tm_sec = 0; 0.00 : 6cf540: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 6cf547: 00 : if (tzp != NULL) 0.00 : 6cf548: 0f 84 6b f6 ff ff je 6cebb9 : *tzp = 0; 0.00 : 6cf54e: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 6cf552: c7 01 00 00 00 00 movl $0x0,(%rcx) 0.00 : 6cf558: e9 5c f6 ff ff jmpq 6cebb9 : tm->tm_mday = cur_tm.tm_mday; : break; : : case DTK_TOMORROW: : tmask = DTK_DATE_M; : *dtype = DTK_DATE; 0.00 : 6cf55d: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax : GetCurrentDateTime(&cur_tm); 0.00 : 6cf564: 48 8d 7d 80 lea -0x80(%rbp),%rdi : tm->tm_mon = cur_tm.tm_mon; : tm->tm_mday = cur_tm.tm_mday; : break; : : case DTK_TOMORROW: : tmask = DTK_DATE_M; 0.00 : 6cf568: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf56f: c7 00 02 00 00 00 movl $0x2,(%rax) : GetCurrentDateTime(&cur_tm); 0.00 : 6cf575: e8 c6 ab ff ff callq 6ca140 : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) + 1, 0.00 : 6cf57a: 8b 55 8c mov -0x74(%rbp),%edx 0.00 : 6cf57d: 8b 75 90 mov -0x70(%rbp),%esi 0.00 : 6cf580: 8b 7d 94 mov -0x6c(%rbp),%edi 0.00 : 6cf583: e8 98 a7 ff ff callq 6c9d20 0.00 : 6cf588: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf58f: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf596: 8d 78 01 lea 0x1(%rax),%edi 0.00 : 6cf599: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 6cf5a0: e8 0b a8 ff ff callq 6c9db0 : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; 0.00 : 6cf5a5: e9 0f f6 ff ff jmpq 6cebb9 : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_TODAY: : tmask = DTK_DATE_M; : *dtype = DTK_DATE; 0.00 : 6cf5aa: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5b1: 48 8d 7d 80 lea -0x80(%rbp),%rdi : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) - 1, : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_TODAY: : tmask = DTK_DATE_M; 0.00 : 6cf5b5: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf5bc: c7 01 02 00 00 00 movl $0x2,(%rcx) : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5c2: e8 79 ab ff ff callq 6ca140 : tm->tm_year = cur_tm.tm_year; 0.00 : 6cf5c7: 8b 45 94 mov -0x6c(%rbp),%eax 0.00 : 6cf5ca: 41 89 45 14 mov %eax,0x14(%r13) : tm->tm_mon = cur_tm.tm_mon; 0.00 : 6cf5ce: 8b 45 90 mov -0x70(%rbp),%eax 0.00 : 6cf5d1: 41 89 45 10 mov %eax,0x10(%r13) : tm->tm_mday = cur_tm.tm_mday; 0.00 : 6cf5d5: 8b 45 8c mov -0x74(%rbp),%eax 0.00 : 6cf5d8: 41 89 45 0c mov %eax,0xc(%r13) : break; 0.00 : 6cf5dc: e9 d8 f5 ff ff jmpq 6cebb9 : GetCurrentTimeUsec(tm, fsec, tzp); : break; : : case DTK_YESTERDAY: : tmask = DTK_DATE_M; : *dtype = DTK_DATE; 0.00 : 6cf5e1: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5e8: 48 8d 7d 80 lea -0x80(%rbp),%rdi : *dtype = DTK_DATE; : GetCurrentTimeUsec(tm, fsec, tzp); : break; : : case DTK_YESTERDAY: : tmask = DTK_DATE_M; 0.00 : 6cf5ec: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf5f3: c7 02 02 00 00 00 movl $0x2,(%rdx) : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5f9: e8 42 ab ff ff callq 6ca140 : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) - 1, 0.00 : 6cf5fe: 8b 55 8c mov -0x74(%rbp),%edx 0.00 : 6cf601: 8b 75 90 mov -0x70(%rbp),%esi 0.00 : 6cf604: 8b 7d 94 mov -0x6c(%rbp),%edi 0.00 : 6cf607: e8 14 a7 ff ff callq 6c9d20 0.00 : 6cf60c: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf613: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf61a: 8d 78 ff lea -0x1(%rax),%edi 0.00 : 6cf61d: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 6cf624: e8 87 a7 ff ff callq 6c9db0 : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; 0.00 : 6cf629: e9 8b f5 ff ff jmpq 6cebb9 : return DTERR_BAD_FORMAT; : break; : : case DTK_NOW: : tmask = (DTK_DATE_M | DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; 0.00 : 6cf62e: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax : : return DTERR_BAD_FORMAT; : break; : : case DTK_NOW: : tmask = (DTK_DATE_M | DTK_TIME_M | DTK_M(TZ)); 0.00 : 6cf635: c7 45 c8 2e 7c 00 00 movl $0x7c2e,-0x38(%rbp) : *dtype = DTK_DATE; : GetCurrentTimeUsec(tm, fsec, tzp); 0.00 : 6cf63c: 4c 89 ef mov %r13,%rdi : return DTERR_BAD_FORMAT; : break; : : case DTK_NOW: : tmask = (DTK_DATE_M | DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; 0.00 : 6cf63f: c7 00 02 00 00 00 movl $0x2,(%rax) : GetCurrentTimeUsec(tm, fsec, tzp); 0.00 : 6cf645: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf649: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 6cf650: e8 8b aa ff ff callq 6ca0e0 : break; 0.00 : 6cf655: e9 5f f5 ff ff jmpq 6cebb9 : { : case RESERV: : switch (val) : { : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6cf65a: 45 31 c0 xor %r8d,%r8d 0.00 : 6cf65d: b9 e2 ac 8b 00 mov $0x8bace2,%ecx 0.00 : 6cf662: ba ba 04 00 00 mov $0x4ba,%edx 0.00 : 6cf667: be f2 9b 8b 00 mov $0x8b9bf2,%esi 0.00 : 6cf66c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6cf671: e8 4a b4 0a 00 callq 77aac0 0.00 : 6cf676: 84 c0 test %al,%al 0.00 : 6cf678: 0f 85 92 00 00 00 jne 6cf710 0.00 : 6cf67e: e8 4d 9e d9 ff callq 4694d0 : /* : * We should return an error code instead of : * ereport'ing directly, but then there is no way : * to report the bad time zone name. : */ : ereport(ERROR, 0.00 : 6cf683: 45 31 c0 xor %r8d,%r8d 0.00 : 6cf686: b9 e2 ac 8b 00 mov $0x8bace2,%ecx 0.00 : 6cf68b: ba a3 03 00 00 mov $0x3a3,%edx 0.00 : 6cf690: be f2 9b 8b 00 mov $0x8b9bf2,%esi 0.00 : 6cf695: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6cf69a: e8 21 b4 0a 00 callq 77aac0 0.00 : 6cf69f: 84 c0 test %al,%al 0.00 : 6cf6a1: 74 db je 6cf67e 0.00 : 6cf6a3: 49 8b 37 mov (%r15),%rsi 0.00 : 6cf6a6: bf da 94 8b 00 mov $0x8b94da,%edi 0.00 : 6cf6ab: 31 c0 xor %eax,%eax 0.00 : 6cf6ad: e8 ee d1 0a 00 callq 77c8a0 0.00 : 6cf6b2: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 6cf6b7: 89 c3 mov %eax,%ebx : { : case RESERV: : switch (val) : { : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6cf6b9: e8 92 d6 0a 00 callq 77cd50 0.00 : 6cf6be: 89 de mov %ebx,%esi 0.00 : 6cf6c0: 89 c7 mov %eax,%edi 0.00 : 6cf6c2: 31 c0 xor %eax,%eax 0.00 : 6cf6c4: e8 17 af 0a 00 callq 77a5e0 0.00 : 6cf6c9: eb b3 jmp 6cf67e : * it before, because we need the date to resolve DST status). : */ : if (namedTz != NULL) : { : /* daylight savings time modifier disallowed with full TZ */ : if (fmask & DTK_M(DTZMOD)) 0.00 : 6cf6cb: 45 84 f6 test %r14b,%r14b 0.00 : 6cf6ce: 0f 88 8b f4 ff ff js 6ceb5f : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, namedTz); 0.00 : 6cf6d4: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 6cf6db: 4c 89 ef mov %r13,%rdi 0.00 : 6cf6de: e8 8d e4 ff ff callq 6cdb70 0.00 : 6cf6e3: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf6e7: 89 02 mov %eax,(%rdx) 0.00 : 6cf6e9: e9 ab fd ff ff jmpq 6cf499 : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) : return DTERR_FIELD_OVERFLOW; : if (mer == AM && tm->tm_hour == HOURS_PER_DAY / 2) : tm->tm_hour = 0; : else if (mer == PM && tm->tm_hour != HOURS_PER_DAY / 2) 0.00 : 6cf6ee: 83 bd 68 ff ff ff 01 cmpl $0x1,-0x98(%rbp) 0.00 : 6cf6f5: 0f 85 22 f5 ff ff jne 6cec1d 0.00 : 6cf6fb: 83 f8 0c cmp $0xc,%eax 0.00 : 6cf6fe: 0f 84 19 f5 ff ff je 6cec1d : tm->tm_hour += HOURS_PER_DAY / 2; 0.00 : 6cf704: 83 c0 0c add $0xc,%eax 0.00 : 6cf707: 41 89 45 08 mov %eax,0x8(%r13) 0.00 : 6cf70b: e9 0d f5 ff ff jmpq 6cec1d : { : case RESERV: : switch (val) : { : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6cf710: bf c8 97 8b 00 mov $0x8b97c8,%edi 0.00 : 6cf715: 31 c0 xor %eax,%eax 0.00 : 6cf717: e8 84 d1 0a 00 callq 77c8a0 0.00 : 6cf71c: bf 40 04 00 00 mov $0x440,%edi 0.00 : 6cf721: 89 c3 mov %eax,%ebx 0.00 : 6cf723: eb 94 jmp 6cf6b9 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:957 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7f60 : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) >= 0); : } : : Datum : btfloat4cmp(PG_FUNCTION_ARGS) : { 0.00 : 6d7f60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 66.67 : 6d7f61: 48 89 e5 mov %rsp,%rbp 0.00 : 6d7f64: 53 push %rbx 0.00 : 6d7f65: 48 89 fb mov %rdi,%rbx 0.00 : 6d7f68: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d7f6c: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d7f70: e8 3b 5a 0a 00 callq 77d9b0 : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d7f75: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : btfloat4cmp(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:957 33.33 : 6d7f79: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d7f7e: e8 2d 5a 0a 00 callq 77d9b0 : : PG_RETURN_INT32(float4_cmp_internal(arg1, arg2)); 0.00 : 6d7f83: 0f 28 c8 movaps %xmm0,%xmm1 0.00 : 6d7f86: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 0.00 : 6d7f8b: e8 20 ff ff ff callq 6d7eb0 : } 0.00 : 6d7f90: 48 83 c4 08 add $0x8,%rsp : btfloat4cmp(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float4 arg2 = PG_GETARG_FLOAT4(1); : : PG_RETURN_INT32(float4_cmp_internal(arg1, arg2)); 0.00 : 6d7f94: 89 c0 mov %eax,%eax : } 0.00 : 6d7f96: 5b pop %rbx 0.00 : 6d7f97: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:282 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:286 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ebc80 : : /* : * int4in - converts "num" to int4 : */ : Datum : int4in(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:282 33.33 : 6ebc80: 55 push %rbp : char *num = PG_GETARG_CSTRING(0); : : PG_RETURN_INT32(pg_atoi(num, sizeof(int32), '\0')); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 33.33 : 6ebc81: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6ebc85: 31 d2 xor %edx,%edx 0.00 : 6ebc87: be 04 00 00 00 mov $0x4,%esi : /* : * int4in - converts "num" to int4 : */ : Datum : int4in(PG_FUNCTION_ARGS) : { 0.00 : 6ebc8c: 48 89 e5 mov %rsp,%rbp : char *num = PG_GETARG_CSTRING(0); : : PG_RETURN_INT32(pg_atoi(num, sizeof(int32), '\0')); 0.00 : 6ebc8f: e8 3c 1f 02 00 callq 70dbd0 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:286 33.33 : 6ebc94: c9 leaveq : Datum : int4in(PG_FUNCTION_ARGS) : { : char *num = PG_GETARG_CSTRING(0); : : PG_RETURN_INT32(pg_atoi(num, sizeof(int32), '\0')); 0.00 : 6ebc95: 89 c0 mov %eax,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:6246 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:6251 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007060c0 : : * ---------- : */ : static int : cmp_abs_common(const NumericDigit *var1digits, int var1ndigits, int var1weight, : const NumericDigit *var2digits, int var2ndigits, int var2weight) : { 0.00 : 7060c0: 55 push %rbp : int i1 = 0; : int i2 = 0; : : /* Check any digits before the first common digit */ : : while (var1weight > var2weight && i1 < var1ndigits) 0.00 : 7060c1: 44 39 ca cmp %r9d,%edx : * ---------- : */ : static int : cmp_abs_common(const NumericDigit *var1digits, int var1ndigits, int var1weight, : const NumericDigit *var2digits, int var2ndigits, int var2weight) : { 0.00 : 7060c4: 48 89 e5 mov %rsp,%rbp : int i1 = 0; : int i2 = 0; : : /* Check any digits before the first common digit */ : : while (var1weight > var2weight && i1 < var1ndigits) 0.00 : 7060c7: 0f 8f 93 00 00 00 jg 706160 0.00 : 7060cd: 45 31 d2 xor %r10d,%r10d : { : if (var1digits[i1++] != 0) : return 1; : var1weight--; : } : while (var2weight > var1weight && i2 < var2ndigits) 0.00 : 7060d0: 41 39 d1 cmp %edx,%r9d 0.00 : 7060d3: 0f 8e 77 01 00 00 jle 706250 0.00 : 7060d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7060e0: 45 85 c0 test %r8d,%r8d 0.00 : 7060e3: 0f 8e 67 01 00 00 jle 706250 : { : if (var2digits[i2++] != 0) 0.00 : 7060e9: 66 83 39 00 cmpw $0x0,(%rcx) 0.00 : 7060ed: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 7060f3: 0f 85 0f 01 00 00 jne 706208 0.00 : 7060f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return -1; : var2weight--; 0.00 : 706100: 41 83 e9 01 sub $0x1,%r9d : { : if (var1digits[i1++] != 0) : return 1; : var1weight--; : } : while (var2weight > var1weight && i2 < var2ndigits) 0.00 : 706104: 41 39 d1 cmp %edx,%r9d 0.00 : 706107: 0f 8f a3 00 00 00 jg 7061b0 : var2weight--; : } : : /* At this point, either w1 == w2 or we've run out of digits */ : : if (var1weight == var2weight) 0.00 : 70610d: 44 39 ca cmp %r9d,%edx 0.00 : 706110: 75 0f jne 706121 0.00 : 706112: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : while (i1 < var1ndigits && i2 < var2ndigits) 0.00 : 706118: 41 39 f2 cmp %esi,%r10d 0.00 : 70611b: 0f 8c ef 00 00 00 jl 706210 : : /* : * At this point, we've run out of digits on one side or the other; so any : * remaining nonzero digits imply that side is larger : */ : while (i1 < var1ndigits) 0.00 : 706121: 44 39 d6 cmp %r10d,%esi 0.00 : 706124: 0f 8e a7 00 00 00 jle 7061d1 : { : if (var1digits[i1++] != 0) 0.00 : 70612a: 49 63 c2 movslq %r10d,%rax 0.00 : 70612d: 41 8d 52 01 lea 0x1(%r10),%edx 0.00 : 706131: 66 83 3c 47 00 cmpw $0x0,(%rdi,%rax,2) 0.00 : 706136: 74 0b je 706143 0.00 : 706138: eb 1e jmp 706158 0.00 : 70613a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 706140: 83 c2 01 add $0x1,%edx : : /* : * At this point, we've run out of digits on one side or the other; so any : * remaining nonzero digits imply that side is larger : */ : while (i1 < var1ndigits) 0.00 : 706143: 39 d6 cmp %edx,%esi 0.00 : 706145: 0f 8e 86 00 00 00 jle 7061d1 : { : if (var1digits[i1++] != 0) 0.00 : 70614b: 48 63 c2 movslq %edx,%rax 0.00 : 70614e: 66 83 3c 47 00 cmpw $0x0,(%rdi,%rax,2) 0.00 : 706153: 74 eb je 706140 0.00 : 706155: 0f 1f 00 nopl (%rax) : return 1; : } : while (i2 < var2ndigits) : { : if (var2digits[i2++] != 0) 0.00 : 706158: b8 01 00 00 00 mov $0x1,%eax : return -1; : } : : return 0; : } 0.00 : 70615d: c9 leaveq 0.00 : 70615e: c3 retq 0.00 : 70615f: 90 nop : int i1 = 0; : int i2 = 0; : : /* Check any digits before the first common digit */ : : while (var1weight > var2weight && i1 < var1ndigits) 0.00 : 706160: 85 f6 test %esi,%esi 0.00 : 706162: 0f 8e 65 ff ff ff jle 7060cd : { : if (var1digits[i1++] != 0) 0.00 : 706168: 66 83 3f 00 cmpw $0x0,(%rdi) 0.00 : 70616c: 41 ba 01 00 00 00 mov $0x1,%r10d 0.00 : 706172: 74 23 je 706197 0.00 : 706174: eb e2 jmp 706158 0.00 : 706176: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 70617d: 00 00 00 : int i1 = 0; : int i2 = 0; : : /* Check any digits before the first common digit */ : : while (var1weight > var2weight && i1 < var1ndigits) 0.00 : 706180: 44 39 d6 cmp %r10d,%esi 0.00 : 706183: 0f 8e 47 ff ff ff jle 7060d0 : { : if (var1digits[i1++] != 0) 0.00 : 706189: 49 63 c2 movslq %r10d,%rax 0.00 : 70618c: 66 83 3c 47 00 cmpw $0x0,(%rdi,%rax,2) 0.00 : 706191: 75 c5 jne 706158 0.00 : 706193: 41 83 c2 01 add $0x1,%r10d : return 1; : var1weight--; 0.00 : 706197: 83 ea 01 sub $0x1,%edx : int i1 = 0; : int i2 = 0; : : /* Check any digits before the first common digit */ : : while (var1weight > var2weight && i1 < var1ndigits) 0.00 : 70619a: 41 39 d1 cmp %edx,%r9d 0.00 : 70619d: 7c e1 jl 706180 : { : if (var1digits[i1++] != 0) : return 1; : var1weight--; : } : while (var2weight > var1weight && i2 < var2ndigits) 0.00 : 70619f: 41 39 d1 cmp %edx,%r9d 0.00 : 7061a2: 0f 8e a8 00 00 00 jle 706250 0.00 : 7061a8: e9 33 ff ff ff jmpq 7060e0 0.00 : 7061ad: 0f 1f 00 nopl (%rax) 0.00 : 7061b0: 45 39 d8 cmp %r11d,%r8d 0.00 : 7061b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7061b8: 0f 8e 4f ff ff ff jle 70610d : { : if (var2digits[i2++] != 0) 0.00 : 7061be: 49 63 c3 movslq %r11d,%rax 0.00 : 7061c1: 66 83 3c 41 00 cmpw $0x0,(%rcx,%rax,2) 0.00 : 7061c6: 75 40 jne 706208 0.00 : 7061c8: 41 83 c3 01 add $0x1,%r11d 0.00 : 7061cc: e9 2f ff ff ff jmpq 706100 : while (i1 < var1ndigits) : { : if (var1digits[i1++] != 0) : return 1; : } : while (i2 < var2ndigits) 0.00 : 7061d1: 45 39 d8 cmp %r11d,%r8d 0.00 : 7061d4: 0f 8e 83 00 00 00 jle 70625d : { : if (var2digits[i2++] != 0) 0.00 : 7061da: 49 63 c3 movslq %r11d,%rax 0.00 : 7061dd: 41 8d 53 01 lea 0x1(%r11),%edx 0.00 : 7061e1: 66 83 3c 41 00 cmpw $0x0,(%rcx,%rax,2) 0.00 : 7061e6: 74 0b je 7061f3 0.00 : 7061e8: eb 1e jmp 706208 0.00 : 7061ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7061f0: 83 c2 01 add $0x1,%edx : while (i1 < var1ndigits) : { : if (var1digits[i1++] != 0) : return 1; : } : while (i2 < var2ndigits) 0.00 : 7061f3: 41 39 d0 cmp %edx,%r8d 0.00 : 7061f6: 7e 65 jle 70625d : { : if (var2digits[i2++] != 0) 0.00 : 7061f8: 48 63 c2 movslq %edx,%rax 0.00 : 7061fb: 66 83 3c 41 00 cmpw $0x0,(%rcx,%rax,2) 0.00 : 706200: 74 ee je 7061f0 0.00 : 706202: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:6246 50.00 : 706208: b8 ff ff ff ff mov $0xffffffff,%eax : return -1; : } : : return 0; : } 0.00 : 70620d: c9 leaveq 0.00 : 70620e: c3 retq 0.00 : 70620f: 90 nop : : /* At this point, either w1 == w2 or we've run out of digits */ : : if (var1weight == var2weight) : { : while (i1 < var1ndigits && i2 < var2ndigits) 0.00 : 706210: 45 39 c3 cmp %r8d,%r11d 0.00 : 706213: 0f 8d 08 ff ff ff jge 706121 : { : int stat = var1digits[i1++] - var2digits[i2++]; 0.00 : 706219: 49 63 c2 movslq %r10d,%rax 0.00 : 70621c: 49 63 d3 movslq %r11d,%rdx 0.00 : 70621f: 0f bf 04 47 movswl (%rdi,%rax,2),%eax 0.00 : 706223: 0f bf 14 51 movswl (%rcx,%rdx,2),%edx 0.00 : 706227: 29 d0 sub %edx,%eax : : if (stat) 0.00 : 706229: 83 f8 00 cmp $0x0,%eax 0.00 : 70622c: 75 0d jne 70623b : : if (var1weight == var2weight) : { : while (i1 < var1ndigits && i2 < var2ndigits) : { : int stat = var1digits[i1++] - var2digits[i2++]; 0.00 : 70622e: 41 83 c2 01 add $0x1,%r10d 0.00 : 706232: 41 83 c3 01 add $0x1,%r11d 0.00 : 706236: e9 dd fe ff ff jmpq 706118 : : if (stat) : { : if (stat > 0) 0.00 : 70623b: 0f 8f 17 ff ff ff jg 706158 0.00 : 706241: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 706248: eb be jmp 706208 0.00 : 70624a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (var1digits[i1++] != 0) : return 1; : var1weight--; : } : while (var2weight > var1weight && i2 < var2ndigits) 0.00 : 706250: 45 31 db xor %r11d,%r11d 0.00 : 706253: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 706258: e9 b0 fe ff ff jmpq 70610d : if (var1digits[i1++] != 0) : return 1; : } : while (i2 < var2ndigits) : { : if (var2digits[i2++] != 0) 0.00 : 70625d: 31 c0 xor %eax,%eax : return -1; : } : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:6251 50.00 : 70625f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1494 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1487 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1487 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1487 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000706350 : : PG_RETURN_BOOL(result); : } : : static int : cmp_numerics(Numeric num1, Numeric num2) : { 0.00 : 706350: 55 push %rbp 0.00 : 706351: 49 89 fa mov %rdi,%r10 0.00 : 706354: 48 89 e5 mov %rsp,%rbp 0.00 : 706357: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 70635b: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 70635f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 706363: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 706367: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 70636b: 48 83 ec 38 sub $0x38,%rsp : /* : * We consider all NANs to be equal and larger than any non-NAN. This is : * somewhat arbitrary; the important thing is to have a consistent sort : * order. : */ : if (NUMERIC_IS_NAN(num1)) 0.00 : 70636f: 0f b7 7f 04 movzwl 0x4(%rdi),%edi 0.00 : 706373: 41 89 fb mov %edi,%r11d 0.00 : 706376: 41 81 e3 00 c0 00 00 and $0xc000,%r11d 0.00 : 70637d: 41 81 fb 00 c0 00 00 cmp $0xc000,%r11d 0.00 : 706384: 75 2a jne 7063b0 0.00 : 706386: 0f b7 46 04 movzwl 0x4(%rsi),%eax 0.00 : 70638a: 25 00 c0 00 00 and $0xc000,%eax 0.00 : 70638f: 3d 00 c0 00 00 cmp $0xc000,%eax 0.00 : 706394: 0f 95 c0 setne %al 0.00 : 706397: 0f b6 c0 movzbl %al,%eax : NUMERIC_DIGITS(num2), NUMERIC_NDIGITS(num2), : NUMERIC_WEIGHT(num2), NUMERIC_SIGN(num2)); : } : : return result; : } 0.00 : 70639a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 70639e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 7063a2: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 7063a6: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 7063aa: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 7063ae: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1494 25.00 : 7063af: c3 retq : if (NUMERIC_IS_NAN(num2)) : result = 0; /* NAN = NAN */ : else : result = 1; /* NAN > non-NAN */ : } : else if (NUMERIC_IS_NAN(num2)) 0.00 : 7063b0: 0f b7 4e 04 movzwl 0x4(%rsi),%ecx 0.00 : 7063b4: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 7063b9: 41 89 c8 mov %ecx,%r8d 0.00 : 7063bc: 41 81 e0 00 c0 00 00 and $0xc000,%r8d 0.00 : 7063c3: 41 81 f8 00 c0 00 00 cmp $0xc000,%r8d 0.00 : 7063ca: 74 ce je 70639a : { : result = -1; /* non-NAN < NAN */ : } : else : { : result = cmp_var_common(NUMERIC_DIGITS(num1), NUMERIC_NDIGITS(num1), 0.00 : 7063cc: 41 81 f8 00 80 00 00 cmp $0x8000,%r8d 0.00 : 7063d3: 0f 84 9f 00 00 00 je 706478 0.00 : 7063d9: 44 0f bf 66 06 movswl 0x6(%rsi),%r12d 0.00 : 7063de: 45 89 c7 mov %r8d,%r15d 0.00 : 7063e1: 48 0f bf c9 movswq %cx,%rcx 0.00 : 7063e5: 4c 8d 76 06 lea 0x6(%rsi),%r14 0.00 : 7063e9: 48 8d 46 08 lea 0x8(%rsi),%rax 0.00 : 7063ed: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 7063f1: 44 8b 0e mov (%rsi),%r9d 0.00 : 7063f4: 48 83 e1 fe and $0xfffffffffffffffe,%rcx 0.00 : 7063f8: 48 83 c1 08 add $0x8,%rcx 0.00 : 7063fc: 41 81 f8 00 80 00 00 cmp $0x8000,%r8d 0.00 : 706403: 4c 0f 45 f0 cmovne %rax,%r14 0.00 : 706407: 41 81 fb 00 80 00 00 cmp $0x8000,%r11d 0.00 : 70640e: 0f 84 a4 00 00 00 je 7064b8 0.00 : 706414: 41 0f bf 5a 06 movswl 0x6(%r10),%ebx 0.00 : 706419: 45 89 dd mov %r11d,%r13d 0.00 : 70641c: 48 0f bf c7 movswq %di,%rax 0.00 : 706420: 41 8b 32 mov (%r10),%esi 0.00 : 706423: 49 8d 52 08 lea 0x8(%r10),%rdx 0.00 : 706427: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 70642b: 49 8d 7a 06 lea 0x6(%r10),%rdi 0.00 : 70642f: 4d 89 f0 mov %r14,%r8 0.00 : 706432: 48 83 e0 fe and $0xfffffffffffffffe,%rax 0.00 : 706436: 44 89 7c 24 08 mov %r15d,0x8(%rsp) 0.00 : 70643b: 44 89 24 24 mov %r12d,(%rsp) 0.00 : 70643f: 48 83 c0 08 add $0x8,%rax 0.00 : 706443: 41 81 fb 00 80 00 00 cmp $0x8000,%r11d 0.00 : 70644a: 48 0f 45 fa cmovne %rdx,%rdi 0.00 : 70644e: 41 c1 e9 02 shr $0x2,%r9d 0.00 : 706452: c1 ee 02 shr $0x2,%esi 0.00 : 706455: 45 89 c9 mov %r9d,%r9d 0.00 : 706458: 89 f6 mov %esi,%esi 0.00 : 70645a: 89 da mov %ebx,%edx 0.00 : 70645c: 49 29 c9 sub %rcx,%r9 0.00 : 70645f: 48 29 c6 sub %rax,%rsi 0.00 : 706462: 44 89 e9 mov %r13d,%ecx 0.00 : 706465: 48 d1 ee shr %rsi 0.00 : 706468: 49 d1 e9 shr %r9 0.00 : 70646b: e8 00 fe ff ff callq 706270 0.00 : 706470: e9 25 ff ff ff jmpq 70639a 0.00 : 706475: 0f 1f 00 nopl (%rax) 0.00 : 706478: 0f b7 46 04 movzwl 0x4(%rsi),%eax 0.00 : 70647c: 89 c2 mov %eax,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:1487 25.00 : 70647e: 81 e2 00 20 00 00 and $0x2000,%edx 0.00 : 706484: 83 fa 01 cmp $0x1,%edx 0.00 : 706487: 89 c2 mov %eax,%edx 0.00 : 706489: 45 19 ff sbb %r15d,%r15d 0.00 : 70648c: 83 e2 40 and $0x40,%edx 0.00 : 70648f: 41 f7 d7 not %r15d 0.00 : 706492: 41 81 e7 00 40 00 00 and $0x4000,%r15d 0.00 : 706499: 83 fa 01 cmp $0x1,%edx 0.00 : 70649c: 45 19 e4 sbb %r12d,%r12d 0.00 : 70649f: 83 e0 3f and $0x3f,%eax 0.00 : 7064a2: 41 f7 d4 not %r12d 0.00 : 7064a5: 41 83 e4 c0 and $0xffffffc0,%r12d 25.00 : 7064a9: 41 09 c4 or %eax,%r12d 0.00 : 7064ac: e9 30 ff ff ff jmpq 7063e1 0.00 : 7064b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7064b8: 41 0f b7 42 04 movzwl 0x4(%r10),%eax 0.00 : 7064bd: 89 c2 mov %eax,%edx 0.00 : 7064bf: 81 e2 00 20 00 00 and $0x2000,%edx 0.00 : 7064c5: 83 fa 01 cmp $0x1,%edx 0.00 : 7064c8: 89 c2 mov %eax,%edx 0.00 : 7064ca: 45 19 ed sbb %r13d,%r13d 0.00 : 7064cd: 83 e2 40 and $0x40,%edx 25.00 : 7064d0: 41 f7 d5 not %r13d 0.00 : 7064d3: 41 81 e5 00 40 00 00 and $0x4000,%r13d 0.00 : 7064da: 83 fa 01 cmp $0x1,%edx 0.00 : 7064dd: 19 db sbb %ebx,%ebx 0.00 : 7064df: 83 e0 3f and $0x3f,%eax 0.00 : 7064e2: f7 d3 not %ebx 0.00 : 7064e4: 83 e3 c0 and $0xffffffc0,%ebx 0.00 : 7064e7: 09 c3 or %eax,%ebx 0.00 : 7064e9: e9 2e ff ff ff jmpq 70641c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3750 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3767 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070bb40 : : * cp is the place to actually start parsing; str is what to use in error : * reports. (Typically cp would be the same except advanced over spaces.) : */ : static const char * : set_var_from_str(const char *str, const char *cp, NumericVar *dest) : { 0.00 : 70bb40: 55 push %rbp 0.00 : 70bb41: 48 89 e5 mov %rsp,%rbp 0.00 : 70bb44: 41 57 push %r15 0.00 : 70bb46: 41 56 push %r14 0.00 : 70bb48: 41 55 push %r13 0.00 : 70bb4a: 49 89 f5 mov %rsi,%r13 0.00 : 70bb4d: 41 54 push %r12 0.00 : 70bb4f: 53 push %rbx 0.00 : 70bb50: 48 83 ec 38 sub $0x38,%rsp 0.00 : 70bb54: 48 89 7d b8 mov %rdi,-0x48(%rbp) 0.00 : 70bb58: 48 89 55 b0 mov %rdx,-0x50(%rbp) : : /* : * We first parse the string to extract decimal digits and determine the : * correct decimal weight. Then convert to NBASE representation. : */ : switch (*cp) 0.00 : 70bb5c: 44 0f b6 26 movzbl (%rsi),%r12d 0.00 : 70bb60: 41 80 fc 2b cmp $0x2b,%r12b 0.00 : 70bb64: 0f 84 56 02 00 00 je 70bdc0 0.00 : 70bb6a: 41 80 fc 2d cmp $0x2d,%r12b 0.00 : 70bb6e: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) 0.00 : 70bb75: 75 10 jne 70bb87 : cp++; : break; : : case '-': : sign = NUMERIC_NEG; : cp++; 0.00 : 70bb77: 49 83 c5 01 add $0x1,%r13 0.00 : 70bb7b: 45 0f b6 65 00 movzbl 0x0(%r13),%r12d 0.00 : 70bb80: c7 45 c4 00 40 00 00 movl $0x4000,-0x3c(%rbp) : break; : } : : if (*cp == '.') 0.00 : 70bb87: 31 db xor %ebx,%ebx 0.00 : 70bb89: 41 80 fc 2e cmp $0x2e,%r12b 0.00 : 70bb8d: 0f 84 49 02 00 00 je 70bddc : { : have_dp = TRUE; : cp++; : } : : if (!isdigit((unsigned char) *cp)) 0.00 : 70bb93: e8 28 dd d5 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 70bb98: 49 89 c7 mov %rax,%r15 0.00 : 70bb9b: 48 8b 00 mov (%rax),%rax 0.00 : 70bb9e: 41 0f b6 d4 movzbl %r12b,%edx 0.00 : 70bba2: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 70bba7: 0f 84 ae 02 00 00 je 70be5b : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", str))); : : decdigits = (unsigned char *) palloc(strlen(cp) + DEC_DIGITS * 2); 0.00 : 70bbad: 4c 89 ef mov %r13,%rdi : : /* leading padding for digit alignment later */ : memset(decdigits, 0, DEC_DIGITS); 0.00 : 70bbb0: 41 be ff ff ff ff mov $0xffffffff,%r14d : if (!isdigit((unsigned char) *cp)) : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", str))); : : decdigits = (unsigned char *) palloc(strlen(cp) + DEC_DIGITS * 2); 0.00 : 70bbb6: e8 95 dc d5 ff callq 469850 0.00 : 70bbbb: 48 8d 78 08 lea 0x8(%rax),%rdi 0.00 : 70bbbf: e8 8c d1 08 00 callq 798d50 : : /* leading padding for digit alignment later */ : memset(decdigits, 0, DEC_DIGITS); 0.00 : 70bbc4: 49 8d 75 01 lea 0x1(%r13),%rsi : if (!isdigit((unsigned char) *cp)) : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", str))); : : decdigits = (unsigned char *) palloc(strlen(cp) + DEC_DIGITS * 2); 0.00 : 70bbc8: 49 89 c4 mov %rax,%r12 : : /* leading padding for digit alignment later */ : memset(decdigits, 0, DEC_DIGITS); 0.00 : 70bbcb: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : 70bbd1: 41 bd 04 00 00 00 mov $0x4,%r13d 0.00 : 70bbd7: 45 31 c0 xor %r8d,%r8d : i = DEC_DIGITS; : : while (*cp) 0.00 : 70bbda: eb 1e jmp 70bbfa 0.00 : 70bbdc: 0f 1f 40 00 nopl 0x0(%rax) : { : if (isdigit((unsigned char) *cp)) : { : decdigits[i++] = *cp++ - '0'; 0.00 : 70bbe0: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 70bbe3: 49 63 d5 movslq %r13d,%rdx 0.00 : 70bbe6: 41 83 c5 01 add $0x1,%r13d : if (!have_dp) 0.00 : 70bbea: 84 db test %bl,%bl : : while (*cp) : { : if (isdigit((unsigned char) *cp)) : { : decdigits[i++] = *cp++ - '0'; 0.00 : 70bbec: 41 88 04 14 mov %al,(%r12,%rdx,1) : if (!have_dp) 0.00 : 70bbf0: 75 3e jne 70bc30 : dweight++; 0.00 : 70bbf2: 41 83 c6 01 add $0x1,%r14d : dscale++; : } : else if (*cp == '.') : { : if (have_dp) : ereport(ERROR, 0.00 : 70bbf6: 48 83 c6 01 add $0x1,%rsi : : /* leading padding for digit alignment later */ : memset(decdigits, 0, DEC_DIGITS); : i = DEC_DIGITS; : : while (*cp) 0.00 : 70bbfa: 0f b6 4e ff movzbl -0x1(%rsi),%ecx : dscale++; : } : else if (*cp == '.') : { : if (have_dp) : ereport(ERROR, 0.00 : 70bbfe: 4c 8d 4e ff lea -0x1(%rsi),%r9 : : /* leading padding for digit alignment later */ : memset(decdigits, 0, DEC_DIGITS); : i = DEC_DIGITS; : : while (*cp) 0.00 : 70bc02: 84 c9 test %cl,%cl 0.00 : 70bc04: 74 3a je 70bc40 : { : if (isdigit((unsigned char) *cp)) 0.00 : 70bc06: 49 8b 07 mov (%r15),%rax 0.00 : 70bc09: 0f b6 d1 movzbl %cl,%edx 0.00 : 70bc0c: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 70bc11: 75 cd jne 70bbe0 : if (!have_dp) : dweight++; : else : dscale++; : } : else if (*cp == '.') 0.00 : 70bc13: 80 f9 2e cmp $0x2e,%cl 0.00 : 70bc16: 75 28 jne 70bc40 : { : if (have_dp) 0.00 : 70bc18: 84 db test %bl,%bl 0.00 : 70bc1a: 0f 85 ed 01 00 00 jne 70be0d : ereport(ERROR, 0.00 : 70bc20: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 70bc25: eb cf jmp 70bbf6 0.00 : 70bc27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 70bc2e: 00 00 : { : decdigits[i++] = *cp++ - '0'; : if (!have_dp) : dweight++; : else : dscale++; 0.00 : 70bc30: 41 83 c0 01 add $0x1,%r8d 0.00 : 70bc34: eb c0 jmp 70bbf6 0.00 : 70bc36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 70bc3d: 00 00 00 : break; : } : : ddigits = i - DEC_DIGITS; : /* trailing padding for digit alignment later */ : memset(decdigits + i, 0, DEC_DIGITS - 1); 0.00 : 70bc40: 49 63 c5 movslq %r13d,%rax 0.00 : 70bc43: 49 8d 04 04 lea (%r12,%rax,1),%rax 0.00 : 70bc47: 66 c7 00 00 00 movw $0x0,(%rax) 0.00 : 70bc4c: c6 40 02 00 movb $0x0,0x2(%rax) : : /* Handle exponent, if any */ : if (*cp == 'e' || *cp == 'E') 0.00 : 70bc50: 41 0f b6 01 movzbl (%r9),%eax 0.00 : 70bc54: 3c 65 cmp $0x65,%al 0.00 : 70bc56: 0f 84 04 01 00 00 je 70bd60 0.00 : 70bc5c: 3c 45 cmp $0x45,%al 0.00 : 70bc5e: 0f 84 fc 00 00 00 je 70bd60 : * Okay, convert pure-decimal representation to base NBASE. First we need : * to determine the converted weight and ndigits. offset is the number of : * decimal zeroes to insert before the first given digit to have a : * correctly aligned first NBASE digit. : */ : if (dweight >= 0) 0.00 : 70bc64: 45 85 f6 test %r14d,%r14d 0.00 : 70bc67: 0f 88 83 01 00 00 js 70bdf0 : weight = (dweight + 1 + DEC_DIGITS - 1) / DEC_DIGITS - 1; 0.00 : 70bc6d: 41 8d 56 07 lea 0x7(%r14),%edx 0.00 : 70bc71: 44 89 f0 mov %r14d,%eax 0.00 : 70bc74: 83 c0 04 add $0x4,%eax 0.00 : 70bc77: 0f 48 c2 cmovs %edx,%eax 0.00 : 70bc7a: 44 89 f2 mov %r14d,%edx 0.00 : 70bc7d: c1 f8 02 sar $0x2,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3750 50.00 : 70bc80: f7 d2 not %edx 0.00 : 70bc82: 44 8d 78 ff lea -0x1(%rax),%r15d : else : weight = -((-dweight - 1) / DEC_DIGITS + 1); : offset = (weight + 1) * DEC_DIGITS - (dweight + 1); 0.00 : 70bc86: 46 8d 74 ba 04 lea 0x4(%rdx,%r15,4),%r14d : ndigits = (ddigits + offset + DEC_DIGITS - 1) / DEC_DIGITS; : : alloc_var(dest, ndigits); 0.00 : 70bc8b: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 70bc8f: 44 89 45 a8 mov %r8d,-0x58(%rbp) 0.00 : 70bc93: 4c 89 4d a0 mov %r9,-0x60(%rbp) : if (dweight >= 0) : weight = (dweight + 1 + DEC_DIGITS - 1) / DEC_DIGITS - 1; : else : weight = -((-dweight - 1) / DEC_DIGITS + 1); : offset = (weight + 1) * DEC_DIGITS - (dweight + 1); : ndigits = (ddigits + offset + DEC_DIGITS - 1) / DEC_DIGITS; 0.00 : 70bc97: 43 8d 44 2e ff lea -0x1(%r14,%r13,1),%eax 0.00 : 70bc9c: 8d 50 03 lea 0x3(%rax),%edx 0.00 : 70bc9f: 85 c0 test %eax,%eax 0.00 : 70bca1: 89 c3 mov %eax,%ebx 0.00 : 70bca3: 0f 48 da cmovs %edx,%ebx 0.00 : 70bca6: c1 fb 02 sar $0x2,%ebx : : alloc_var(dest, ndigits); 0.00 : 70bca9: 89 de mov %ebx,%esi 0.00 : 70bcab: e8 60 b3 ff ff callq 707010 : dest->sign = sign; 0.00 : 70bcb0: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 70bcb3: 48 8b 45 b0 mov -0x50(%rbp),%rax : dest->dscale = dscale; : : i = DEC_DIGITS - offset; : digits = dest->digits; : : while (ndigits-- > 0) 0.00 : 70bcb7: 85 db test %ebx,%ebx : weight = -((-dweight - 1) / DEC_DIGITS + 1); : offset = (weight + 1) * DEC_DIGITS - (dweight + 1); : ndigits = (ddigits + offset + DEC_DIGITS - 1) / DEC_DIGITS; : : alloc_var(dest, ndigits); : dest->sign = sign; 0.00 : 70bcb9: 89 50 08 mov %edx,0x8(%rax) : dest->weight = weight; 0.00 : 70bcbc: 44 89 78 04 mov %r15d,0x4(%rax) : dest->dscale = dscale; 0.00 : 70bcc0: 44 8b 45 a8 mov -0x58(%rbp),%r8d 0.00 : 70bcc4: 44 89 40 0c mov %r8d,0xc(%rax) : : i = DEC_DIGITS - offset; : digits = dest->digits; 0.00 : 70bcc8: 48 8b 55 b0 mov -0x50(%rbp),%rdx : : while (ndigits-- > 0) 0.00 : 70bccc: 4c 8b 4d a0 mov -0x60(%rbp),%r9 : dest->sign = sign; : dest->weight = weight; : dest->dscale = dscale; : : i = DEC_DIGITS - offset; : digits = dest->digits; 0.00 : 70bcd0: 48 8b 42 18 mov 0x18(%rdx),%rax : : while (ndigits-- > 0) 0.00 : 70bcd4: 7e 56 jle 70bd2c : alloc_var(dest, ndigits); : dest->sign = sign; : dest->weight = weight; : dest->dscale = dscale; : : i = DEC_DIGITS - offset; 0.00 : 70bcd6: 48 89 c7 mov %rax,%rdi : digits = dest->digits; : : while (ndigits-- > 0) 0.00 : 70bcd9: 8d 43 ff lea -0x1(%rbx),%eax : alloc_var(dest, ndigits); : dest->sign = sign; : dest->weight = weight; : dest->dscale = dscale; : : i = DEC_DIGITS - offset; 0.00 : 70bcdc: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : 70bce2: 45 29 f0 sub %r14d,%r8d : digits = dest->digits; : : while (ndigits-- > 0) 0.00 : 70bce5: 48 8d 74 47 02 lea 0x2(%rdi,%rax,2),%rsi 0.00 : 70bcea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : #if DEC_DIGITS == 4 : *digits++ = ((decdigits[i] * 10 + decdigits[i + 1]) * 10 + /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3767 50.00 : 70bcf0: 49 63 c8 movslq %r8d,%rcx : #elif DEC_DIGITS == 1 : *digits++ = decdigits[i]; : #else : #error unsupported NBASE : #endif : i += DEC_DIGITS; 0.00 : 70bcf3: 41 83 c0 04 add $0x4,%r8d : digits = dest->digits; : : while (ndigits-- > 0) : { : #if DEC_DIGITS == 4 : *digits++ = ((decdigits[i] * 10 + decdigits[i + 1]) * 10 + 0.00 : 70bcf7: 41 0f b6 04 0c movzbl (%r12,%rcx,1),%eax 0.00 : 70bcfc: 41 0f b6 54 0c 01 movzbl 0x1(%r12,%rcx,1),%edx 0.00 : 70bd02: 8d 04 80 lea (%rax,%rax,4),%eax 0.00 : 70bd05: 8d 04 42 lea (%rdx,%rax,2),%eax 0.00 : 70bd08: 41 0f b6 54 0c 02 movzbl 0x2(%r12,%rcx,1),%edx 0.00 : 70bd0e: 8d 04 80 lea (%rax,%rax,4),%eax 0.00 : 70bd11: 8d 04 42 lea (%rdx,%rax,2),%eax 0.00 : 70bd14: 41 0f b6 54 0c 03 movzbl 0x3(%r12,%rcx,1),%edx 0.00 : 70bd1a: 8d 04 80 lea (%rax,%rax,4),%eax 0.00 : 70bd1d: 8d 04 42 lea (%rdx,%rax,2),%eax 0.00 : 70bd20: 66 89 07 mov %ax,(%rdi) 0.00 : 70bd23: 48 83 c7 02 add $0x2,%rdi : dest->dscale = dscale; : : i = DEC_DIGITS - offset; : digits = dest->digits; : : while (ndigits-- > 0) 0.00 : 70bd27: 48 39 f7 cmp %rsi,%rdi 0.00 : 70bd2a: 75 c4 jne 70bcf0 : #error unsupported NBASE : #endif : i += DEC_DIGITS; : } : : pfree(decdigits); 0.00 : 70bd2c: 4c 89 e7 mov %r12,%rdi 0.00 : 70bd2f: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 70bd33: e8 48 ce 08 00 callq 798b80 : : /* Strip any leading/trailing zeroes, and normalize weight if zero */ : strip_var(dest); 0.00 : 70bd38: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 70bd3c: e8 5f a9 ff ff callq 7066a0 : : /* Return end+1 position for caller */ : return cp; : } 0.00 : 70bd41: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 70bd45: 48 83 c4 38 add $0x38,%rsp 0.00 : 70bd49: 5b pop %rbx 0.00 : 70bd4a: 41 5c pop %r12 0.00 : 70bd4c: 41 5d pop %r13 0.00 : 70bd4e: 41 5e pop %r14 0.00 : 70bd50: 4c 89 c8 mov %r9,%rax 0.00 : 70bd53: 41 5f pop %r15 0.00 : 70bd55: c9 leaveq 0.00 : 70bd56: c3 retq 0.00 : 70bd57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 70bd5e: 00 00 : if (*cp == 'e' || *cp == 'E') : { : long exponent; : char *endptr; : : cp++; 0.00 : 70bd60: 49 8d 59 01 lea 0x1(%r9),%rbx : exponent = strtol(cp, &endptr, 10); 0.00 : 70bd64: 48 8d 75 d0 lea -0x30(%rbp),%rsi 0.00 : 70bd68: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 70bd6d: 44 89 45 a8 mov %r8d,-0x58(%rbp) 0.00 : 70bd71: 48 89 df mov %rbx,%rdi 0.00 : 70bd74: e8 17 de d5 ff callq 469b90 : if (endptr == cp) 0.00 : 70bd79: 48 8b 4d d0 mov -0x30(%rbp),%rcx : { : long exponent; : char *endptr; : : cp++; : exponent = strtol(cp, &endptr, 10); 0.00 : 70bd7d: 48 89 c2 mov %rax,%rdx : if (endptr == cp) 0.00 : 70bd80: 44 8b 45 a8 mov -0x58(%rbp),%r8d 0.00 : 70bd84: 48 39 d9 cmp %rbx,%rcx 0.00 : 70bd87: 0f 84 dd 00 00 00 je 70be6a : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : cp = endptr; : if (exponent > NUMERIC_MAX_PRECISION || 0.00 : 70bd8d: 48 8d 80 e8 03 00 00 lea 0x3e8(%rax),%rax 0.00 : 70bd94: 48 3d d0 07 00 00 cmp $0x7d0,%rax 0.00 : 70bd9a: 0f 87 d9 00 00 00 ja 70be79 : exponent < -NUMERIC_MAX_PRECISION) : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : dweight += (int) exponent; 0.00 : 70bda0: 89 d0 mov %edx,%eax : dscale -= (int) exponent; : if (dscale < 0) 0.00 : 70bda2: 41 29 d0 sub %edx,%r8d 0.00 : 70bda5: 49 89 c9 mov %rcx,%r9 : exponent < -NUMERIC_MAX_PRECISION) : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : dweight += (int) exponent; 0.00 : 70bda8: 46 8d 34 30 lea (%rax,%r14,1),%r14d : dscale -= (int) exponent; : if (dscale < 0) 0.00 : 70bdac: 0f 89 b2 fe ff ff jns 70bc64 0.00 : 70bdb2: 45 31 c0 xor %r8d,%r8d 0.00 : 70bdb5: e9 aa fe ff ff jmpq 70bc64 0.00 : 70bdba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : switch (*cp) : { : case '+': : sign = NUMERIC_POS; : cp++; 0.00 : 70bdc0: 49 83 c5 01 add $0x1,%r13 : sign = NUMERIC_NEG; : cp++; : break; : } : : if (*cp == '.') 0.00 : 70bdc4: 31 db xor %ebx,%ebx : */ : switch (*cp) : { : case '+': : sign = NUMERIC_POS; : cp++; 0.00 : 70bdc6: 45 0f b6 65 00 movzbl 0x0(%r13),%r12d 0.00 : 70bdcb: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : sign = NUMERIC_NEG; : cp++; : break; : } : : if (*cp == '.') 0.00 : 70bdd2: 41 80 fc 2e cmp $0x2e,%r12b 0.00 : 70bdd6: 0f 85 b7 fd ff ff jne 70bb93 : { : have_dp = TRUE; : cp++; 0.00 : 70bddc: 49 83 c5 01 add $0x1,%r13 0.00 : 70bde0: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 70bde5: 45 0f b6 65 00 movzbl 0x0(%r13),%r12d 0.00 : 70bdea: e9 a4 fd ff ff jmpq 70bb93 0.00 : 70bdef: 90 nop : * correctly aligned first NBASE digit. : */ : if (dweight >= 0) : weight = (dweight + 1 + DEC_DIGITS - 1) / DEC_DIGITS - 1; : else : weight = -((-dweight - 1) / DEC_DIGITS + 1); 0.00 : 70bdf0: 44 89 f2 mov %r14d,%edx 0.00 : 70bdf3: f7 d2 not %edx 0.00 : 70bdf5: 8d 42 03 lea 0x3(%rdx),%eax 0.00 : 70bdf8: 85 d2 test %edx,%edx 0.00 : 70bdfa: 41 89 d7 mov %edx,%r15d 0.00 : 70bdfd: 44 0f 48 f8 cmovs %eax,%r15d 0.00 : 70be01: 41 c1 ff 02 sar $0x2,%r15d 0.00 : 70be05: 41 f7 d7 not %r15d 0.00 : 70be08: e9 79 fe ff ff jmpq 70bc86 : dscale++; : } : else if (*cp == '.') : { : if (have_dp) : ereport(ERROR, 0.00 : 70be0d: 45 31 c0 xor %r8d,%r8d 0.00 : 70be10: b9 90 41 8c 00 mov $0x8c4190,%ecx 0.00 : 70be15: ba 79 0e 00 00 mov $0xe79,%edx : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : cp = endptr; : if (exponent > NUMERIC_MAX_PRECISION || : exponent < -NUMERIC_MAX_PRECISION) : ereport(ERROR, 0.00 : 70be1a: be e5 3c 8c 00 mov $0x8c3ce5,%esi 0.00 : 70be1f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70be24: e8 97 ec 06 00 callq 77aac0 0.00 : 70be29: 84 c0 test %al,%al 0.00 : 70be2b: 75 05 jne 70be32 0.00 : 70be2d: e8 9e d6 d5 ff callq 4694d0 0.00 : 70be32: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 70be36: bf d0 3e 8c 00 mov $0x8c3ed0,%edi 0.00 : 70be3b: 31 c0 xor %eax,%eax 0.00 : 70be3d: e8 5e 0a 07 00 callq 77c8a0 0.00 : 70be42: bf 82 00 02 02 mov $0x2020082,%edi 0.00 : 70be47: 89 c3 mov %eax,%ebx 0.00 : 70be49: e8 02 0f 07 00 callq 77cd50 0.00 : 70be4e: 89 de mov %ebx,%esi 0.00 : 70be50: 89 c7 mov %eax,%edi 0.00 : 70be52: 31 c0 xor %eax,%eax 0.00 : 70be54: e8 87 e7 06 00 callq 77a5e0 0.00 : 70be59: eb d2 jmp 70be2d : have_dp = TRUE; : cp++; : } : : if (!isdigit((unsigned char) *cp)) : ereport(ERROR, 0.00 : 70be5b: 45 31 c0 xor %r8d,%r8d 0.00 : 70be5e: b9 90 41 8c 00 mov $0x8c4190,%ecx 0.00 : 70be63: ba 61 0e 00 00 mov $0xe61,%edx 0.00 : 70be68: eb b0 jmp 70be1a : char *endptr; : : cp++; : exponent = strtol(cp, &endptr, 10); : if (endptr == cp) : ereport(ERROR, 0.00 : 70be6a: 45 31 c0 xor %r8d,%r8d 0.00 : 70be6d: b9 90 41 8c 00 mov $0x8c4190,%ecx 0.00 : 70be72: ba 91 0e 00 00 mov $0xe91,%edx 0.00 : 70be77: eb a1 jmp 70be1a : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : cp = endptr; : if (exponent > NUMERIC_MAX_PRECISION || : exponent < -NUMERIC_MAX_PRECISION) : ereport(ERROR, 0.00 : 70be79: 45 31 c0 xor %r8d,%r8d 0.00 : 70be7c: b9 90 41 8c 00 mov $0x8c4190,%ecx 0.00 : 70be81: ba 98 0e 00 00 mov $0xe98,%edx 0.00 : 70be86: eb 92 jmp 70be1a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:4839 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:4846 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007394b0 : : * be "<" not ">", as only the former is likely to be found in pg_statistic. : */ : static bool : get_variable_range(PlannerInfo *root, VariableStatData *vardata, Oid sortop, : Datum *min, Datum *max) : { 0.00 : 7394b0: 55 push %rbp 0.00 : 7394b1: 48 89 e5 mov %rsp,%rbp 0.00 : 7394b4: 41 57 push %r15 0.00 : 7394b6: 41 56 push %r14 0.00 : 7394b8: 49 89 f6 mov %rsi,%r14 0.00 : 7394bb: 41 55 push %r13 0.00 : 7394bd: 41 54 push %r12 : #ifdef NOT_USED : if (get_actual_variable_range(root, vardata, sortop, min, max)) : return true; : #endif : : if (!HeapTupleIsValid(vardata->statsTuple)) 0.00 : 7394bf: 45 31 e4 xor %r12d,%r12d : * be "<" not ">", as only the former is likely to be found in pg_statistic. : */ : static bool : get_variable_range(PlannerInfo *root, VariableStatData *vardata, Oid sortop, : Datum *min, Datum *max) : { 0.00 : 7394c2: 53 push %rbx 0.00 : 7394c3: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 7394ca: 89 95 7c ff ff ff mov %edx,-0x84(%rbp) 0.00 : 7394d0: 48 89 8d 70 ff ff ff mov %rcx,-0x90(%rbp) 0.00 : 7394d7: 4c 89 85 68 ff ff ff mov %r8,-0x98(%rbp) : #ifdef NOT_USED : if (get_actual_variable_range(root, vardata, sortop, min, max)) : return true; : #endif : : if (!HeapTupleIsValid(vardata->statsTuple)) 0.00 : 7394de: 48 83 7e 10 00 cmpq $0x0,0x10(%rsi) 0.00 : 7394e3: 0f 84 0e 01 00 00 je 7395f7 : { : /* no stats available, so default result */ : return false; : } : : get_typlenbyval(vardata->atttype, &typLen, &typByVal); 0.00 : 7394e9: 41 8b 7e 24 mov 0x24(%r14),%edi 0.00 : 7394ed: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 7394f1: 48 8d 75 cc lea -0x34(%rbp),%rsi : * : * If there is a histogram that is sorted with some other operator than : * the one we want, fail --- this suggests that there is data we can't : * use. : */ : if (get_attstatsslot(vardata->statsTuple, 0.00 : 7394f5: 4c 8d 7d c8 lea -0x38(%rbp),%r15 0.00 : 7394f9: 48 8d 5d c0 lea -0x40(%rbp),%rbx : { : /* no stats available, so default result */ : return false; : } : : get_typlenbyval(vardata->atttype, &typLen, &typByVal); 0.00 : 7394fd: e8 1e 9a 03 00 callq 772f20 : * : * If there is a histogram that is sorted with some other operator than : * the one we want, fail --- this suggests that there is data we can't : * use. : */ : if (get_attstatsslot(vardata->statsTuple, 0.00 : 739502: 41 8b 56 28 mov 0x28(%r14),%edx 0.00 : 739506: 41 8b 76 24 mov 0x24(%r14),%esi 0.00 : 73950a: 45 31 c9 xor %r9d,%r9d 0.00 : 73950d: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 739511: 44 8b 85 7c ff ff ff mov -0x84(%rbp),%r8d 0.00 : 739518: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 73951d: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 739524: 00 00 0.00 : 739526: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 73952d: 00 00 0.00 : 73952f: 4c 89 7c 24 08 mov %r15,0x8(%rsp) 0.00 : 739534: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 739538: e8 93 a2 03 00 callq 7737d0 0.00 : 73953d: 84 c0 test %al,%al 0.00 : 73953f: 0f 84 e3 00 00 00 je 739628 : STATISTIC_KIND_HISTOGRAM, sortop, : NULL, : &values, &nvalues, : NULL, NULL)) : { : if (nvalues > 0) 0.00 : 739545: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 739548: 85 c0 test %eax,%eax 0.00 : 73954a: 0f 8e c0 00 00 00 jle 739610 : { : tmin = datumCopy(values[0], typByVal, typLen); 0.00 : 739550: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 739554: 0f bf 55 cc movswl -0x34(%rbp),%edx : tmax = datumCopy(values[nvalues - 1], typByVal, typLen); 0.00 : 739558: 41 bc 01 00 00 00 mov $0x1,%r12d : &values, &nvalues, : NULL, NULL)) : { : if (nvalues > 0) : { : tmin = datumCopy(values[0], typByVal, typLen); 0.00 : 73955e: 0f be 75 cf movsbl -0x31(%rbp),%esi 0.00 : 739562: 48 8b 38 mov (%rax),%rdi 0.00 : 739565: e8 06 6a f9 ff callq 6cff70 : tmax = datumCopy(values[nvalues - 1], typByVal, typLen); 0.00 : 73956a: 48 63 4d c8 movslq -0x38(%rbp),%rcx : &values, &nvalues, : NULL, NULL)) : { : if (nvalues > 0) : { : tmin = datumCopy(values[0], typByVal, typLen); 0.00 : 73956e: 48 89 45 80 mov %rax,-0x80(%rbp) : tmax = datumCopy(values[nvalues - 1], typByVal, typLen); 0.00 : 739572: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 739576: 0f bf 55 cc movswl -0x34(%rbp),%edx 0.00 : 73957a: 0f be 75 cf movsbl -0x31(%rbp),%esi 0.00 : 73957e: 48 8b 7c c8 f8 mov -0x8(%rax,%rcx,8),%rdi 0.00 : 739583: e8 e8 69 f9 ff callq 6cff70 0.00 : 739588: 49 89 c5 mov %rax,%r13 : have_data = true; : } : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); 0.00 : 73958b: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73958e: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 739592: 45 31 c0 xor %r8d,%r8d 0.00 : 739595: 41 8b 7e 24 mov 0x24(%r14),%edi 0.00 : 739599: 31 c9 xor %ecx,%ecx 0.00 : 73959b: e8 e0 96 03 00 callq 772c80 : * If we have most-common-values info, look for extreme MCVs. This is : * needed even if we also have a histogram, since the histogram excludes : * the MCVs. However, usually the MCVs will not be the extreme values, so : * avoid unnecessary data copying. : */ : if (get_attstatsslot(vardata->statsTuple, 0.00 : 7395a0: 41 8b 56 28 mov 0x28(%r14),%edx 0.00 : 7395a4: 41 8b 76 24 mov 0x24(%r14),%esi 0.00 : 7395a8: 45 31 c9 xor %r9d,%r9d 0.00 : 7395ab: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 7395af: 45 31 c0 xor %r8d,%r8d 0.00 : 7395b2: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 7395b7: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 7395be: 00 00 0.00 : 7395c0: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 7395c7: 00 00 0.00 : 7395c9: 4c 89 7c 24 08 mov %r15,0x8(%rsp) 0.00 : 7395ce: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 7395d2: e8 f9 a1 03 00 callq 7737d0 0.00 : 7395d7: 84 c0 test %al,%al 0.00 : 7395d9: 0f 85 a1 00 00 00 jne 739680 : if (tmax_is_mcv) : tmax = datumCopy(tmax, typByVal, typLen); : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); : } : : *min = tmin; 0.00 : 7395df: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 7395e6: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 7395ea: 48 89 10 mov %rdx,(%rax) : *max = tmax; 0.00 : 7395ed: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 7395f4: 4c 89 28 mov %r13,(%rax) : return have_data; : } 0.00 : 7395f7: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 7395fe: 44 89 e0 mov %r12d,%eax 0.00 : 739601: 5b pop %rbx 0.00 : 739602: 41 5c pop %r12 0.00 : 739604: 41 5d pop %r13 0.00 : 739606: 41 5e pop %r14 0.00 : 739608: 41 5f pop %r15 0.00 : 73960a: c9 leaveq 0.00 : 73960b: c3 retq 0.00 : 73960c: 0f 1f 40 00 nopl 0x0(%rax) : STATISTIC_KIND_HISTOGRAM, sortop, : NULL, : &values, &nvalues, : NULL, NULL)) : { : if (nvalues > 0) 0.00 : 739610: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 739617: 00 0.00 : 739618: 45 31 ed xor %r13d,%r13d 0.00 : 73961b: 45 31 e4 xor %r12d,%r12d 0.00 : 73961e: e9 68 ff ff ff jmpq 73958b 0.00 : 739623: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : tmax = datumCopy(values[nvalues - 1], typByVal, typLen); : have_data = true; : } : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); : } : else if (get_attstatsslot(vardata->statsTuple, 0.00 : 739628: 41 8b 56 28 mov 0x28(%r14),%edx 0.00 : 73962c: 41 8b 76 24 mov 0x24(%r14),%esi 0.00 : 739630: 45 31 c9 xor %r9d,%r9d 0.00 : 739633: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 739637: 45 31 c0 xor %r8d,%r8d 0.00 : 73963a: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 73963f: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 739646: 00 00 0.00 : 739648: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 73964f: 00 00 0.00 : 739651: 4c 89 7c 24 08 mov %r15,0x8(%rsp) 0.00 : 739656: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 73965a: e8 71 a1 03 00 callq 7737d0 0.00 : 73965f: 84 c0 test %al,%al 0.00 : 739661: 0f 85 21 01 00 00 jne 739788 : STATISTIC_KIND_HISTOGRAM, InvalidOid, : NULL, : &values, &nvalues, : NULL, NULL)) : { : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); 0.00 : 739667: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 73966e: 00 0.00 : 73966f: 45 31 ed xor %r13d,%r13d 0.00 : 739672: 45 31 e4 xor %r12d,%r12d 0.00 : 739675: e9 26 ff ff ff jmpq 7395a0 0.00 : 73967a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : bool tmin_is_mcv = false; : bool tmax_is_mcv = false; : FmgrInfo opproc; : : fmgr_info(get_opcode(sortop), &opproc); 0.00 : 739680: 8b bd 7c ff ff ff mov -0x84(%rbp),%edi 0.00 : 739686: e8 35 91 03 00 callq 7727c0 0.00 : 73968b: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 73968f: 89 c7 mov %eax,%edi 0.00 : 739691: e8 ca 69 04 00 callq 780060 : : for (i = 0; i < nvalues; i++) 0.00 : 739696: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 739699: 85 c0 test %eax,%eax 0.00 : 73969b: 0f 8e c6 00 00 00 jle 739767 0.00 : 7396a1: 31 db xor %ebx,%ebx 0.00 : 7396a3: 45 31 ff xor %r15d,%r15d : { : if (!have_data) 0.00 : 7396a6: 45 84 e4 test %r12b,%r12b : bool tmax_is_mcv = false; : FmgrInfo opproc; : : fmgr_info(get_opcode(sortop), &opproc); : : for (i = 0; i < nvalues; i++) 0.00 : 7396a9: c6 45 8f 00 movb $0x0,-0x71(%rbp) : { : if (!have_data) 0.00 : 7396ad: 75 1d jne 7396cc : { : tmin = tmax = values[i]; 0.00 : 7396af: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 7396b3: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 7396b9: 4c 8b 28 mov (%rax),%r13 0.00 : 7396bc: c6 45 8f 01 movb $0x1,-0x71(%rbp) 0.00 : 7396c0: 4c 89 6d 80 mov %r13,-0x80(%rbp) : bool tmax_is_mcv = false; : FmgrInfo opproc; : : fmgr_info(get_opcode(sortop), &opproc); : : for (i = 0; i < nvalues; i++) 0.00 : 7396c4: 83 c3 01 add $0x1,%ebx 0.00 : 7396c7: 39 5d c8 cmp %ebx,-0x38(%rbp) 0.00 : 7396ca: 7e 5c jle 739728 : { : tmin = tmax = values[i]; : tmin_is_mcv = tmax_is_mcv = have_data = true; : continue; : } : if (DatumGetBool(FunctionCall2Coll(&opproc, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:4839 50.00 : 7396cc: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 7396d0: 4c 63 e3 movslq %ebx,%r12 0.00 : 7396d3: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 7396d7: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 7396db: be 64 00 00 00 mov $0x64,%esi 0.00 : 7396e0: 4a 8b 14 e0 mov (%rax,%r12,8),%rdx 0.00 : 7396e4: e8 47 49 04 00 callq 77e030 0.00 : 7396e9: 84 c0 test %al,%al 0.00 : 7396eb: 0f 85 b7 00 00 00 jne 7397a8 0.00 : 7396f1: 48 8b 45 c0 mov -0x40(%rbp),%rax : values[i], tmin))) : { : tmin = values[i]; : tmin_is_mcv = true; : } : if (DatumGetBool(FunctionCall2Coll(&opproc, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:4846 50.00 : 7396f5: 4a 8b 0c e0 mov (%rax,%r12,8),%rcx 0.00 : 7396f9: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 7396fd: 4c 89 ea mov %r13,%rdx 0.00 : 739700: be 64 00 00 00 mov $0x64,%esi 0.00 : 739705: e8 26 49 04 00 callq 77e030 0.00 : 73970a: 84 c0 test %al,%al 0.00 : 73970c: 74 b6 je 7396c4 : bool tmax_is_mcv = false; : FmgrInfo opproc; : : fmgr_info(get_opcode(sortop), &opproc); : : for (i = 0; i < nvalues; i++) 0.00 : 73970e: 83 c3 01 add $0x1,%ebx 0.00 : 739711: 39 5d c8 cmp %ebx,-0x38(%rbp) : } : if (DatumGetBool(FunctionCall2Coll(&opproc, : DEFAULT_COLLATION_OID, : tmax, values[i]))) : { : tmax = values[i]; 0.00 : 739714: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 739718: 4e 8b 2c e0 mov (%rax,%r12,8),%r13 0.00 : 73971c: c6 45 8f 01 movb $0x1,-0x71(%rbp) : bool tmax_is_mcv = false; : FmgrInfo opproc; : : fmgr_info(get_opcode(sortop), &opproc); : : for (i = 0; i < nvalues; i++) 0.00 : 739720: 7f aa jg 7396cc 0.00 : 739722: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : tmax = values[i]; : tmax_is_mcv = true; : } : } : if (tmin_is_mcv) 0.00 : 739728: 45 84 ff test %r15b,%r15b 0.00 : 73972b: 74 15 je 739742 : tmin = datumCopy(tmin, typByVal, typLen); 0.00 : 73972d: 0f bf 55 cc movswl -0x34(%rbp),%edx 0.00 : 739731: 0f be 75 cf movsbl -0x31(%rbp),%esi 0.00 : 739735: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 739739: e8 32 68 f9 ff callq 6cff70 0.00 : 73973e: 48 89 45 80 mov %rax,-0x80(%rbp) : if (tmax_is_mcv) 0.00 : 739742: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 739746: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 73974c: 74 19 je 739767 : tmax = datumCopy(tmax, typByVal, typLen); 0.00 : 73974e: 0f bf 55 cc movswl -0x34(%rbp),%edx 0.00 : 739752: 0f be 75 cf movsbl -0x31(%rbp),%esi 0.00 : 739756: 4c 89 ef mov %r13,%rdi 0.00 : 739759: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 73975f: e8 0c 68 f9 ff callq 6cff70 0.00 : 739764: 49 89 c5 mov %rax,%r13 : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); 0.00 : 739767: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73976a: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73976e: 45 31 c0 xor %r8d,%r8d 0.00 : 739771: 41 8b 7e 24 mov 0x24(%r14),%edi 0.00 : 739775: 31 c9 xor %ecx,%ecx 0.00 : 739777: e8 04 95 03 00 callq 772c80 0.00 : 73977c: e9 5e fe ff ff jmpq 7395df 0.00 : 739781: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : STATISTIC_KIND_HISTOGRAM, InvalidOid, : NULL, : &values, &nvalues, : NULL, NULL)) : { : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); 0.00 : 739788: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73978b: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73978f: 45 31 c0 xor %r8d,%r8d 0.00 : 739792: 41 8b 7e 24 mov 0x24(%r14),%edi 0.00 : 739796: 31 c9 xor %ecx,%ecx 0.00 : 739798: 45 31 e4 xor %r12d,%r12d 0.00 : 73979b: e8 e0 94 03 00 callq 772c80 : } : : *min = tmin; : *max = tmax; : return have_data; : } 0.00 : 7397a0: e9 52 fe ff ff jmpq 7395f7 0.00 : 7397a5: 0f 1f 00 nopl (%rax) : } : if (DatumGetBool(FunctionCall2Coll(&opproc, : DEFAULT_COLLATION_OID, : values[i], tmin))) : { : tmin = values[i]; 0.00 : 7397a8: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 7397ac: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 7397b2: 4a 8b 14 e0 mov (%rax,%r12,8),%rdx 0.00 : 7397b6: 48 89 55 80 mov %rdx,-0x80(%rbp) 0.00 : 7397ba: e9 36 ff ff ff jmpq 7396f5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:129 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:135 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007590d0 : : * If the input string is too long, raise an error, unless the extra : * characters are spaces, in which case they're truncated. (per SQL) : */ : static BpChar * : bpchar_input(const char *s, size_t len, int32 atttypmod) : { 0.00 : 7590d0: 55 push %rbp 0.00 : 7590d1: 48 89 e5 mov %rsp,%rbp 0.00 : 7590d4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 7590d8: 4c 89 6d f0 mov %r13,-0x10(%rbp) : BpChar *result; : char *r; : size_t maxlen; : : /* If typmod is -1 (or invalid), use the actual string length */ : if (atttypmod < (int32) VARHDRSZ) 0.00 : 7590dc: 48 89 f3 mov %rsi,%rbx : * If the input string is too long, raise an error, unless the extra : * characters are spaces, in which case they're truncated. (per SQL) : */ : static BpChar * : bpchar_input(const char *s, size_t len, int32 atttypmod) : { 0.00 : 7590df: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 7590e3: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 7590e7: 48 83 ec 20 sub $0x20,%rsp : BpChar *result; : char *r; : size_t maxlen; : : /* If typmod is -1 (or invalid), use the actual string length */ : if (atttypmod < (int32) VARHDRSZ) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:129 50.00 : 7590eb: 83 fa 03 cmp $0x3,%edx : * If the input string is too long, raise an error, unless the extra : * characters are spaces, in which case they're truncated. (per SQL) : */ : static BpChar * : bpchar_input(const char *s, size_t len, int32 atttypmod) : { 0.00 : 7590ee: 49 89 fe mov %rdi,%r14 0.00 : 7590f1: 49 89 f5 mov %rsi,%r13 : BpChar *result; : char *r; : size_t maxlen; : : /* If typmod is -1 (or invalid), use the actual string length */ : if (atttypmod < (int32) VARHDRSZ) 0.00 : 7590f4: 0f 8e b0 00 00 00 jle 7591aa : maxlen = len; : else : { : size_t charlen; /* number of CHARACTERS in the input */ : : maxlen = atttypmod - VARHDRSZ; 0.00 : 7590fa: 44 8d 62 fc lea -0x4(%rdx),%r12d : charlen = pg_mbstrlen_with_len(s, len); 0.00 : 7590fe: e8 7d f9 02 00 callq 788a80 : maxlen = len; : else : { : size_t charlen; /* number of CHARACTERS in the input */ : : maxlen = atttypmod - VARHDRSZ; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:135 50.00 : 759103: 49 63 dc movslq %r12d,%rbx : charlen = pg_mbstrlen_with_len(s, len); 0.00 : 759106: 48 98 cltq : if (charlen > maxlen) 0.00 : 759108: 48 39 c3 cmp %rax,%rbx 0.00 : 75910b: 72 53 jb 759160 : { : /* : * Now we set maxlen to the necessary byte length, not the number : * of CHARACTERS! : */ : maxlen = len + (maxlen - charlen); 0.00 : 75910d: 4c 01 eb add %r13,%rbx 0.00 : 759110: 48 29 c3 sub %rax,%rbx : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); 0.00 : 759113: 48 8d 7b 04 lea 0x4(%rbx),%rdi 0.00 : 759117: e8 34 fc 03 00 callq 798d50 0.00 : 75911c: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(result, maxlen + VARHDRSZ); 0.00 : 75911f: 8d 04 9d 10 00 00 00 lea 0x10(,%rbx,4),%eax : r = VARDATA(result); : memcpy(r, s, len); 0.00 : 759126: 4c 89 ea mov %r13,%rdx 0.00 : 759129: 49 8d 7c 24 04 lea 0x4(%r12),%rdi 0.00 : 75912e: 4c 89 f6 mov %r14,%rsi : maxlen = len + (maxlen - charlen); : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); : SET_VARSIZE(result, maxlen + VARHDRSZ); 0.00 : 759131: 41 89 04 24 mov %eax,(%r12) : r = VARDATA(result); : memcpy(r, s, len); 0.00 : 759135: e8 b6 0a d1 ff callq 469bf0 : : /* blank pad the string if necessary */ : if (maxlen > len) 0.00 : 75913a: 49 39 dd cmp %rbx,%r13 0.00 : 75913d: 0f 83 8e 00 00 00 jae 7591d1 : memset(r + len, ' ', maxlen - len); 0.00 : 759143: 4c 29 eb sub %r13,%rbx 0.00 : 759146: 4b 8d 7c 2c 04 lea 0x4(%r12,%r13,1),%rdi 0.00 : 75914b: be 20 00 00 00 mov $0x20,%esi 0.00 : 759150: 48 89 da mov %rbx,%rdx 0.00 : 759153: e8 c8 02 d1 ff callq 469420 0.00 : 759158: eb 77 jmp 7591d1 0.00 : 75915a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : maxlen = atttypmod - VARHDRSZ; : charlen = pg_mbstrlen_with_len(s, len); : if (charlen > maxlen) : { : /* Verify that extra characters are spaces, and clip them off */ : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); 0.00 : 759160: 44 89 ee mov %r13d,%esi 0.00 : 759163: 44 89 e2 mov %r12d,%edx 0.00 : 759166: 4c 89 f7 mov %r14,%rdi 0.00 : 759169: e8 42 f8 02 00 callq 7889b0 0.00 : 75916e: 48 63 f0 movslq %eax,%rsi : /* : * at this point, len is the actual BYTE length of the input : * string, maxlen is the max number of CHARACTERS allowed for this : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) 0.00 : 759171: 49 39 f5 cmp %rsi,%r13 0.00 : 759174: 76 2e jbe 7591a4 : { : if (s[j] != ' ') 0.00 : 759176: 41 80 3c 36 20 cmpb $0x20,(%r14,%rsi,1) : ereport(ERROR, 0.00 : 75917b: 49 8d 4c 36 01 lea 0x1(%r14,%rsi,1),%rcx 0.00 : 759180: 48 89 f2 mov %rsi,%rdx : * string, maxlen is the max number of CHARACTERS allowed for this : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') 0.00 : 759183: 74 16 je 75919b 0.00 : 759185: eb 69 jmp 7591f0 0.00 : 759187: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 75918e: 00 00 0.00 : 759190: 0f b6 01 movzbl (%rcx),%eax 0.00 : 759193: 48 83 c1 01 add $0x1,%rcx 0.00 : 759197: 3c 20 cmp $0x20,%al 0.00 : 759199: 75 55 jne 7591f0 : /* : * at this point, len is the actual BYTE length of the input : * string, maxlen is the max number of CHARACTERS allowed for this : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) 0.00 : 75919b: 48 83 c2 01 add $0x1,%rdx 0.00 : 75919f: 49 39 d5 cmp %rdx,%r13 0.00 : 7591a2: 77 ec ja 759190 : r = VARDATA(result); : memcpy(r, s, len); : : /* blank pad the string if necessary */ : if (maxlen > len) : memset(r + len, ' ', maxlen - len); 0.00 : 7591a4: 49 89 f5 mov %rsi,%r13 0.00 : 7591a7: 48 89 f3 mov %rsi,%rbx : */ : maxlen = len + (maxlen - charlen); : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); 0.00 : 7591aa: 48 8d 7b 04 lea 0x4(%rbx),%rdi 0.00 : 7591ae: e8 9d fb 03 00 callq 798d50 0.00 : 7591b3: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(result, maxlen + VARHDRSZ); 0.00 : 7591b6: 8d 04 9d 10 00 00 00 lea 0x10(,%rbx,4),%eax : r = VARDATA(result); : memcpy(r, s, len); 0.00 : 7591bd: 4c 89 ea mov %r13,%rdx 0.00 : 7591c0: 49 8d 7c 24 04 lea 0x4(%r12),%rdi 0.00 : 7591c5: 4c 89 f6 mov %r14,%rsi : maxlen = len + (maxlen - charlen); : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); : SET_VARSIZE(result, maxlen + VARHDRSZ); 0.00 : 7591c8: 41 89 04 24 mov %eax,(%r12) : r = VARDATA(result); : memcpy(r, s, len); 0.00 : 7591cc: e8 1f 0a d1 ff callq 469bf0 : /* blank pad the string if necessary */ : if (maxlen > len) : memset(r + len, ' ', maxlen - len); : : return result; : } 0.00 : 7591d1: 4c 89 e0 mov %r12,%rax 0.00 : 7591d4: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7591d8: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 7591dd: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 7591e2: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 7591e7: c9 leaveq 0.00 : 7591e8: c3 retq 0.00 : 7591e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') : ereport(ERROR, 0.00 : 7591f0: 45 31 c0 xor %r8d,%r8d 0.00 : 7591f3: b9 7e bb 8c 00 mov $0x8cbb7e,%ecx 0.00 : 7591f8: ba 9a 00 00 00 mov $0x9a,%edx 0.00 : 7591fd: be e1 ba 8c 00 mov $0x8cbae1,%esi 0.00 : 759202: bf 14 00 00 00 mov $0x14,%edi 0.00 : 759207: e8 b4 18 02 00 callq 77aac0 0.00 : 75920c: 84 c0 test %al,%al 0.00 : 75920e: 75 05 jne 759215 0.00 : 759210: e8 bb 02 d1 ff callq 4694d0 0.00 : 759215: 44 89 e6 mov %r12d,%esi 0.00 : 759218: bf 20 bb 8c 00 mov $0x8cbb20,%edi 0.00 : 75921d: 31 c0 xor %eax,%eax 0.00 : 75921f: e8 7c 36 02 00 callq 77c8a0 0.00 : 759224: bf 82 00 00 01 mov $0x1000082,%edi 0.00 : 759229: 89 c3 mov %eax,%ebx 0.00 : 75922b: e8 20 3b 02 00 callq 77cd50 0.00 : 759230: 89 de mov %ebx,%esi 0.00 : 759232: 89 c7 mov %eax,%edi 0.00 : 759234: 31 c0 xor %eax,%eax 0.00 : 759236: e8 a5 13 02 00 callq 77a5e0 0.00 : 75923b: eb d3 jmp 759210 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000759290 : : * Convert a C string to CHARACTER internal representation. atttypmod : * is the declared length of the type plus VARHDRSZ. : */ : Datum : bpcharin(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 33.33 : 759290: 55 push %rbp 66.67 : 759291: 48 89 e5 mov %rsp,%rbp 0.00 : 759294: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 759298: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 75929c: 48 83 ec 10 sub $0x10,%rsp : char *s = PG_GETARG_CSTRING(0); 0.00 : 7592a0: 4c 8b 67 20 mov 0x20(%rdi),%r12 : * Convert a C string to CHARACTER internal representation. atttypmod : * is the declared length of the type plus VARHDRSZ. : */ : Datum : bpcharin(PG_FUNCTION_ARGS) : { 0.00 : 7592a4: 48 89 fb mov %rdi,%rbx : Oid typelem = PG_GETARG_OID(1); : #endif : int32 atttypmod = PG_GETARG_INT32(2); : BpChar *result; : : result = bpchar_input(s, strlen(s), atttypmod); 0.00 : 7592a7: 4c 89 e7 mov %r12,%rdi 0.00 : 7592aa: e8 a1 05 d1 ff callq 469850 0.00 : 7592af: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 7592b3: 4c 89 e7 mov %r12,%rdi : PG_RETURN_BPCHAR_P(result); : } 0.00 : 7592b6: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7592ba: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 7592bf: c9 leaveq : Oid typelem = PG_GETARG_OID(1); : #endif : int32 atttypmod = PG_GETARG_INT32(2); : BpChar *result; : : result = bpchar_input(s, strlen(s), atttypmod); 0.00 : 7592c0: 48 89 c6 mov %rax,%rsi 0.00 : 7592c3: e9 08 fe ff ff jmpq 7590d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1400 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1463 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1543 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000765920 : : int nkeys, : Datum v1, : Datum v2, : Datum v3, : Datum v4) : { 0.00 : 765920: 55 push %rbp 0.00 : 765921: 48 89 e5 mov %rsp,%rbp 0.00 : 765924: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1400 33.33 : 765926: 4d 89 cf mov %r9,%r15 0.00 : 765929: 41 56 push %r14 0.00 : 76592b: 4d 89 c6 mov %r8,%r14 0.00 : 76592e: 41 55 push %r13 0.00 : 765930: 49 89 cd mov %rcx,%r13 0.00 : 765933: 41 54 push %r12 0.00 : 765935: 49 89 d4 mov %rdx,%r12 0.00 : 765938: 53 push %rbx 0.00 : 765939: 48 81 ec 68 02 00 00 sub $0x268,%rsp 0.00 : 765940: 48 89 bd 80 fd ff ff mov %rdi,-0x280(%rbp) 0.00 : 765947: 89 b5 7c fd ff ff mov %esi,-0x284(%rbp) : int i; : : /* : * one-time startup overhead for each cache : */ : if (cache->cc_tupdesc == NULL) 0.00 : 76594d: 48 83 7f 28 00 cmpq $0x0,0x28(%rdi) 0.00 : 765952: 0f 84 29 07 00 00 je 766081 : #endif : : /* : * initialize the search key information : */ : memcpy(cur_skey, cache->cc_skey, sizeof(cur_skey)); 0.00 : 765958: 48 8b b5 80 fd ff ff mov -0x280(%rbp),%rsi 0.00 : 76595f: 48 8d 9d d0 fd ff ff lea -0x230(%rbp),%rbx 0.00 : 765966: b9 24 00 00 00 mov $0x24,%ecx 0.00 : 76596b: 48 89 df mov %rbx,%rdi : /* : * compute a hash value of the given keys for faster search. We don't : * presently divide the CatCList items into buckets, but this still lets : * us skip non-matching items quickly most of the time. : */ : lHashValue = CatalogCacheComputeHashValue(cache, nkeys, cur_skey); 0.00 : 76596e: 48 89 da mov %rbx,%rdx : #endif : : /* : * initialize the search key information : */ : memcpy(cur_skey, cache->cc_skey, sizeof(cur_skey)); 0.00 : 765971: 48 83 c6 70 add $0x70,%rsi 0.00 : 765975: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : cur_skey[0].sk_argument = v1; : cur_skey[1].sk_argument = v2; 0.00 : 765978: 4c 89 ad 58 fe ff ff mov %r13,-0x1a8(%rbp) : : /* : * initialize the search key information : */ : memcpy(cur_skey, cache->cc_skey, sizeof(cur_skey)); : cur_skey[0].sk_argument = v1; 0.00 : 76597f: 4c 89 a5 10 fe ff ff mov %r12,-0x1f0(%rbp) : cur_skey[1].sk_argument = v2; : cur_skey[2].sk_argument = v3; 0.00 : 765986: 4c 89 b5 a0 fe ff ff mov %r14,-0x160(%rbp) : cur_skey[3].sk_argument = v4; 0.00 : 76598d: 4c 89 bd e8 fe ff ff mov %r15,-0x118(%rbp) : /* : * compute a hash value of the given keys for faster search. We don't : * presently divide the CatCList items into buckets, but this still lets : * us skip non-matching items quickly most of the time. : */ : lHashValue = CatalogCacheComputeHashValue(cache, nkeys, cur_skey); 0.00 : 765994: 8b b5 7c fd ff ff mov -0x284(%rbp),%esi 0.00 : 76599a: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi 0.00 : 7659a1: e8 4a ef ff ff callq 7648f0 0.00 : 7659a6: 89 85 9c fd ff ff mov %eax,-0x264(%rbp) : * scan the items until we find a match or exhaust our list : * : * Note: it's okay to use dlist_foreach here, even though we modify the : * dlist within the loop, because we don't continue the loop afterwards. : */ : dlist_foreach(iter, &cache->cc_lists) 0.00 : 7659ac: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 7659b3: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 7659ba: 48 05 98 01 00 00 add $0x198,%rax 0.00 : 7659c0: 48 89 85 c8 fd ff ff mov %rax,-0x238(%rbp) 0.00 : 7659c7: 4c 8b aa a0 01 00 00 mov 0x1a0(%rdx),%r13 0.00 : 7659ce: 4d 85 ed test %r13,%r13 0.00 : 7659d1: 0f 84 60 01 00 00 je 765b37 0.00 : 7659d7: 4c 39 e8 cmp %r13,%rax 0.00 : 7659da: 0f 84 57 01 00 00 je 765b37 : /* : * see if the cached list matches our key. : */ : if (cl->nkeys != nkeys) : continue; : HeapKeyTest(&cl->tuple, 0.00 : 7659e0: 8b 8d 7c fd ff ff mov -0x284(%rbp),%ecx 0.00 : 7659e6: 83 e9 01 sub $0x1,%ecx 0.00 : 7659e9: 89 8d 78 fd ff ff mov %ecx,-0x288(%rbp) 0.00 : 7659ef: eb 18 jmp 765a09 0.00 : 7659f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * scan the items until we find a match or exhaust our list : * : * Note: it's okay to use dlist_foreach here, even though we modify the : * dlist within the loop, because we don't continue the loop afterwards. : */ : dlist_foreach(iter, &cache->cc_lists) 0.00 : 7659f8: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 7659fc: 4c 39 ad c8 fd ff ff cmp %r13,-0x238(%rbp) 0.00 : 765a03: 0f 84 2e 01 00 00 je 765b37 : { : bool res; : : cl = dlist_container(CatCList, cache_elem, iter.cur); 0.00 : 765a09: 49 8d 5d f0 lea -0x10(%r13),%rbx : : if (cl->dead) 0.00 : 765a0d: 80 7b 24 00 cmpb $0x0,0x24(%rbx) 0.00 : 765a11: 75 e5 jne 7659f8 : continue; /* ignore dead entries */ : : if (cl->hash_value != lHashValue) 0.00 : 765a13: 8b 85 9c fd ff ff mov -0x264(%rbp),%eax 0.00 : 765a19: 3b 43 28 cmp 0x28(%rbx),%eax 0.00 : 765a1c: 75 da jne 7659f8 : continue; /* quickly skip entry if wrong hash val */ : : /* : * see if the cached list matches our key. : */ : if (cl->nkeys != nkeys) /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1463 33.33 : 765a1e: 0f bf 43 26 movswl 0x26(%rbx),%eax 0.00 : 765a22: 3b 85 7c fd ff ff cmp -0x284(%rbp),%eax 0.00 : 765a28: 75 ce jne 7659f8 : continue; : HeapKeyTest(&cl->tuple, 0.00 : 765a2a: 8b 95 7c fd ff ff mov -0x284(%rbp),%edx 0.00 : 765a30: 85 d2 test %edx,%edx 0.00 : 765a32: 0f 84 76 05 00 00 je 765fae 0.00 : 765a38: f6 85 d0 fd ff ff 01 testb $0x1,-0x230(%rbp) 0.00 : 765a3f: 75 b7 jne 7659f8 0.00 : 765a41: 4c 8d a5 d0 fd ff ff lea -0x230(%rbp),%r12 0.00 : 765a48: 44 8b b5 78 fd ff ff mov -0x288(%rbp),%r14d 0.00 : 765a4f: 4d 8d 7d 20 lea 0x20(%r13),%r15 0.00 : 765a53: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 765a59: 66 85 c0 test %ax,%ax 0.00 : 765a5c: 0f 8e e0 02 00 00 jle 765d42 0.00 : 765a62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 765a68: 0f bf d0 movswl %ax,%edx 0.00 : 765a6b: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 765a6f: 0f b7 40 12 movzwl 0x12(%rax),%eax 0.00 : 765a73: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 765a78: 39 c2 cmp %eax,%edx 0.00 : 765a7a: 0f 8f a2 00 00 00 jg 765b22 0.00 : 765a80: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 765a84: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 765a88: f6 47 14 01 testb $0x1,0x14(%rdi) 0.00 : 765a8c: 75 72 jne 765b00 0.00 : 765a8e: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 765a95: 41 0f b7 4c 24 04 movzwl 0x4(%r12),%ecx 0.00 : 765a9b: 4c 8b 42 28 mov 0x28(%rdx),%r8 0.00 : 765a9f: 48 0f bf d1 movswq %cx,%rdx 0.00 : 765aa3: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : 765aa7: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 765aac: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 765aaf: 85 c0 test %eax,%eax 0.00 : 765ab1: 0f 88 bd 04 00 00 js 765f74 0.00 : 765ab7: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 765abb: 0f 84 a0 02 00 00 je 765d61 0.00 : 765ac1: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 765ac5: 66 83 fa 08 cmp $0x8,%dx 0.00 : 765ac9: 0f 84 bb 04 00 00 je 765f8a 0.00 : 765acf: 66 83 fa 04 cmp $0x4,%dx 0.00 : 765ad3: 0f 84 d2 02 00 00 je 765dab 0.00 : 765ad9: 66 83 fa 02 cmp $0x2,%dx 0.00 : 765add: 0f 1f 00 nopl (%rax) 0.00 : 765ae0: 0f 84 88 05 00 00 je 76606e 0.00 : 765ae6: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 765aea: 48 98 cltq 0.00 : 765aec: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 765af0: 0f b6 14 10 movzbl (%rax,%rdx,1),%edx 0.00 : 765af4: e9 02 02 00 00 jmpq 765cfb 0.00 : 765af9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 765b00: 41 0f bf 74 24 04 movswl 0x4(%r12),%esi 0.00 : 765b06: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 765b09: 89 c8 mov %ecx,%eax 0.00 : 765b0b: 83 e1 07 and $0x7,%ecx 0.00 : 765b0e: c1 f8 03 sar $0x3,%eax 0.00 : 765b11: 48 98 cltq 0.00 : 765b13: 0f b6 44 07 17 movzbl 0x17(%rdi,%rax,1),%eax 0.00 : 765b18: d3 f8 sar %cl,%eax 0.00 : 765b1a: a8 01 test $0x1,%al 0.00 : 765b1c: 0f 85 b9 01 00 00 jne 765cdb 0.00 : 765b22: c6 45 cf 01 movb $0x1,-0x31(%rbp) : * scan the items until we find a match or exhaust our list : * : * Note: it's okay to use dlist_foreach here, even though we modify the : * dlist within the loop, because we don't continue the loop afterwards. : */ : dlist_foreach(iter, &cache->cc_lists) 0.00 : 765b26: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 765b2a: 4c 39 ad c8 fd ff ff cmp %r13,-0x238(%rbp) 0.00 : 765b31: 0f 85 d2 fe ff ff jne 765a09 : * We have to bump the member refcounts temporarily to ensure they won't : * get dropped from the cache while loading other members. We use a PG_TRY : * block to ensure we can undo those refcounts if we get an error before : * we finish constructing the CatCList. : */ : ResourceOwnerEnlargeCatCacheListRefs(CurrentResourceOwner); 0.00 : 765b37: 48 8b 3d 82 4d 45 00 mov 0x454d82(%rip),%rdi # bba8c0 0.00 : 765b3e: e8 0d 52 03 00 callq 79ad50 : : ctlist = NIL; : : PG_TRY(); 0.00 : 765b43: 48 8b 15 fe 3a 45 00 mov 0x453afe(%rip),%rdx # bb9648 0.00 : 765b4a: 48 8b 0d ef 3a 45 00 mov 0x453aef(%rip),%rcx # bb9640 0.00 : 765b51: 48 8d bd f0 fe ff ff lea -0x110(%rbp),%rdi 0.00 : 765b58: 31 f6 xor %esi,%esi : * block to ensure we can undo those refcounts if we get an error before : * we finish constructing the CatCList. : */ : ResourceOwnerEnlargeCatCacheListRefs(CurrentResourceOwner); : : ctlist = NIL; 0.00 : 765b5a: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 765b61: 00 : : PG_TRY(); 0.00 : 765b62: 48 89 95 a8 fd ff ff mov %rdx,-0x258(%rbp) 0.00 : 765b69: 48 89 8d b0 fd ff ff mov %rcx,-0x250(%rbp) 0.00 : 765b70: e8 db 44 d0 ff callq 46a050 <__sigsetjmp@plt> 0.00 : 765b75: 85 c0 test %eax,%eax 0.00 : 765b77: 0f 85 2f 05 00 00 jne 7660ac 0.00 : 765b7d: 48 8d 85 f0 fe ff ff lea -0x110(%rbp),%rax : { : Relation relation; : SysScanDesc scandesc; : : relation = heap_open(cache->cc_reloid, AccessShareLock); 0.00 : 765b84: be 01 00 00 00 mov $0x1,%esi : */ : ResourceOwnerEnlargeCatCacheListRefs(CurrentResourceOwner); : : ctlist = NIL; : : PG_TRY(); 0.00 : 765b89: 48 89 05 b8 3a 45 00 mov %rax,0x453ab8(%rip) # bb9648 : { : Relation relation; : SysScanDesc scandesc; : : relation = heap_open(cache->cc_reloid, AccessShareLock); 0.00 : 765b90: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 765b97: 8b 78 18 mov 0x18(%rax),%edi 0.00 : 765b9a: e8 c1 7f d3 ff callq 49db60 : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 765b9f: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx : PG_TRY(); : { : Relation relation; : SysScanDesc scandesc; : : relation = heap_open(cache->cc_reloid, AccessShareLock); 0.00 : 765ba6: 48 89 85 b8 fd ff ff mov %rax,-0x248(%rbp) : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 765bad: 83 3a 20 cmpl $0x20,(%rdx) 0.00 : 765bb0: 0f 86 ba 01 00 00 jbe 765d70 0.00 : 765bb6: ba 01 00 00 00 mov $0x1,%edx : Relation relation; : SysScanDesc scandesc; : : relation = heap_open(cache->cc_reloid, AccessShareLock); : : scandesc = systable_beginscan(relation, 0.00 : 765bbb: 48 8b 8d 80 fd ff ff mov -0x280(%rbp),%rcx 0.00 : 765bc2: 44 8b 85 7c fd ff ff mov -0x284(%rbp),%r8d 0.00 : 765bc9: 4c 8d 8d d0 fd ff ff lea -0x230(%rbp),%r9 0.00 : 765bd0: 48 8b bd b8 fd ff ff mov -0x248(%rbp),%rdi 0.00 : 765bd7: 8b 71 1c mov 0x1c(%rcx),%esi 0.00 : 765bda: 31 c9 xor %ecx,%ecx 0.00 : 765bdc: e8 bf f0 d3 ff callq 4a4ca0 0.00 : 765be1: 48 89 85 c0 fd ff ff mov %rax,-0x240(%rbp) : NULL, : nkeys, : cur_skey); : : /* The list will be ordered iff we are doing an index scan */ : ordered = (scandesc->irel != NULL); 0.00 : 765be8: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 765bec: 48 89 85 88 fd ff ff mov %rax,-0x278(%rbp) 0.00 : 765bf3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) 0.00 : 765bf8: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 765bff: e8 1c f0 d3 ff callq 4a4c20 0.00 : 765c04: 48 85 c0 test %rax,%rax 0.00 : 765c07: 48 89 85 a0 fd ff ff mov %rax,-0x260(%rbp) 0.00 : 765c0e: 0f 84 d0 01 00 00 je 765de4 : : /* : * See if there's an entry for this tuple already. : */ : ct = NULL; : hashValue = CatalogCacheComputeTupleHashValue(cache, ntp); 0.00 : 765c14: 48 8b b5 a0 fd ff ff mov -0x260(%rbp),%rsi 0.00 : 765c1b: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi 0.00 : 765c22: e8 e9 ed ff ff callq 764a10 : hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); 0.00 : 765c27: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx : : /* : * See if there's an entry for this tuple already. : */ : ct = NULL; : hashValue = CatalogCacheComputeTupleHashValue(cache, ntp); 0.00 : 765c2e: 41 89 c6 mov %eax,%r14d : hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); 0.00 : 765c31: 8b 42 34 mov 0x34(%rdx),%eax 0.00 : 765c34: 44 8d 78 ff lea -0x1(%rax),%r15d 0.00 : 765c38: 45 21 f7 and %r14d,%r15d : : bucket = &cache->cc_bucket[hashIndex]; 0.00 : 765c3b: 44 89 f8 mov %r15d,%eax 0.00 : 765c3e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 765c42: 48 03 82 a8 01 00 00 add 0x1a8(%rdx),%rax : dlist_foreach(iter, bucket) 0.00 : 765c49: 48 8b 58 08 mov 0x8(%rax),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:1543 33.33 : 765c4d: 48 85 db test %rbx,%rbx 0.00 : 765c50: 0f 84 6a 01 00 00 je 765dc0 0.00 : 765c56: 48 39 d8 cmp %rbx,%rax 0.00 : 765c59: 49 89 c5 mov %rax,%r13 0.00 : 765c5c: 0f 84 5e 01 00 00 je 765dc0 : continue; /* ignore dead and negative entries */ : : if (ct->hash_value != hashValue) : continue; /* quickly skip entry if wrong hash val */ : : if (!ItemPointerEquals(&(ct->tuple.t_self), &(ntp->t_self))) 0.00 : 765c62: 48 8b 8d a0 fd ff ff mov -0x260(%rbp),%rcx 0.00 : 765c69: 48 83 c1 04 add $0x4,%rcx 0.00 : 765c6d: 48 89 8d 90 fd ff ff mov %rcx,-0x270(%rbp) 0.00 : 765c74: eb 17 jmp 765c8d 0.00 : 765c76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 765c7d: 00 00 00 : ct = NULL; : hashValue = CatalogCacheComputeTupleHashValue(cache, ntp); : hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); : : bucket = &cache->cc_bucket[hashIndex]; : dlist_foreach(iter, bucket) 0.00 : 765c80: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 765c84: 49 39 dd cmp %rbx,%r13 0.00 : 765c87: 0f 84 33 01 00 00 je 765dc0 : { : ct = dlist_container(CatCTup, cache_elem, iter.cur); 0.00 : 765c8d: 4c 8d 63 f0 lea -0x10(%rbx),%r12 : : if (ct->dead || ct->negative) 0.00 : 765c91: 66 41 83 7c 24 2c 00 cmpw $0x0,0x2c(%r12) 0.00 : 765c98: 75 e6 jne 765c80 : continue; /* ignore dead and negative entries */ : : if (ct->hash_value != hashValue) 0.00 : 765c9a: 45 3b 74 24 30 cmp 0x30(%r12),%r14d 0.00 : 765c9f: 75 df jne 765c80 : continue; /* quickly skip entry if wrong hash val */ : : if (!ItemPointerEquals(&(ct->tuple.t_self), &(ntp->t_self))) 0.00 : 765ca1: 48 8b b5 90 fd ff ff mov -0x270(%rbp),%rsi 0.00 : 765ca8: 48 8d 7b 2c lea 0x2c(%rbx),%rdi 0.00 : 765cac: e8 af 15 f3 ff callq 697260 0.00 : 765cb1: 84 c0 test %al,%al 0.00 : 765cb3: 74 cb je 765c80 : : /* : * Found a match, but can't use it if it belongs to another : * list already : */ : if (ct->c_list) 0.00 : 765cb5: 49 83 7c 24 20 00 cmpq $0x0,0x20(%r12) 0.00 : 765cbb: 75 c3 jne 765c80 0.00 : 765cbd: 0f 1f 00 nopl (%rax) : false); : } : : /* Careful here: add entry to ctlist, then bump its refcount */ : /* This way leaves state correct if lappend runs out of memory */ : ctlist = lappend(ctlist, ct); 0.00 : 765cc0: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 765cc4: 4c 89 e6 mov %r12,%rsi 0.00 : 765cc7: e8 b4 c1 e7 ff callq 5e1e80 0.00 : 765ccc: 48 89 45 c0 mov %rax,-0x40(%rbp) : ct->refcount++; 0.00 : 765cd0: 41 83 44 24 28 01 addl $0x1,0x28(%r12) 0.00 : 765cd6: e9 1d ff ff ff jmpq 765bf8 : /* : * see if the cached list matches our key. : */ : if (cl->nkeys != nkeys) : continue; : HeapKeyTest(&cl->tuple, 0.00 : 765cdb: 48 8b 8d 80 fd ff ff mov -0x280(%rbp),%rcx 0.00 : 765ce2: 4c 89 ff mov %r15,%rdi 0.00 : 765ce5: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 765ce9: e8 a2 9c d0 ff callq 46f990 0.00 : 765cee: 48 89 c2 mov %rax,%rdx 0.00 : 765cf1: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 765cf5: 0f 85 fd fc ff ff jne 7659f8 0.00 : 765cfb: 49 8b 4c 24 40 mov 0x40(%r12),%rcx 0.00 : 765d00: 41 8b 74 24 0c mov 0xc(%r12),%esi 0.00 : 765d05: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : 765d0a: e8 21 83 01 00 callq 77e030 0.00 : 765d0f: 84 c0 test %al,%al 0.00 : 765d11: 0f 84 e1 fc ff ff je 7659f8 0.00 : 765d17: 45 85 f6 test %r14d,%r14d 0.00 : 765d1a: 0f 84 8e 02 00 00 je 765fae 0.00 : 765d20: 49 83 c4 48 add $0x48,%r12 0.00 : 765d24: 41 f6 04 24 01 testb $0x1,(%r12) 0.00 : 765d29: 0f 85 c9 fc ff ff jne 7659f8 0.00 : 765d2f: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 765d35: 41 83 ee 01 sub $0x1,%r14d 0.00 : 765d39: 66 85 c0 test %ax,%ax 0.00 : 765d3c: 0f 8f 26 fd ff ff jg 765a68 0.00 : 765d42: 48 8b 8d 80 fd ff ff mov -0x280(%rbp),%rcx 0.00 : 765d49: 0f bf f0 movswl %ax,%esi 0.00 : 765d4c: 4c 89 ff mov %r15,%rdi 0.00 : 765d4f: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 765d53: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 765d57: e8 74 8f d0 ff callq 46ecd0 0.00 : 765d5c: 48 89 c2 mov %rax,%rdx 0.00 : 765d5f: eb 90 jmp 765cf1 0.00 : 765d61: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 765d65: 48 98 cltq 0.00 : 765d67: 48 01 d0 add %rdx,%rax 0.00 : 765d6a: 48 8d 14 07 lea (%rdi,%rax,1),%rdx 0.00 : 765d6e: eb 8b jmp 765cfb : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 765d70: 48 63 0a movslq (%rdx),%rcx 0.00 : 765d73: be 01 00 00 00 mov $0x1,%esi 0.00 : 765d78: 48 d3 e6 shl %cl,%rsi 0.00 : 765d7b: f7 c6 00 0d 00 00 test $0xd00,%esi 0.00 : 765d81: 0f 85 16 02 00 00 jne 765f9d 0.00 : 765d87: 48 b8 00 00 00 00 01 movabs $0x100000000,%rax 0.00 : 765d8e: 00 00 00 0.00 : 765d91: 48 85 c6 test %rax,%rsi 0.00 : 765d94: 0f 84 a1 02 00 00 je 76603b 0.00 : 765d9a: 31 d2 xor %edx,%edx 0.00 : 765d9c: 80 3d 3d 27 45 00 00 cmpb $0x0,0x45273d(%rip) # bb84e0 0.00 : 765da3: 0f 95 c2 setne %dl 0.00 : 765da6: e9 10 fe ff ff jmpq 765bbb : /* : * see if the cached list matches our key. : */ : if (cl->nkeys != nkeys) : continue; : HeapKeyTest(&cl->tuple, 0.00 : 765dab: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 765daf: 48 98 cltq 0.00 : 765db1: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 765db5: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 765db8: e9 3e ff ff ff jmpq 765cfb 0.00 : 765dbd: 0f 1f 00 nopl (%rax) : } : : if (!found) : { : /* We didn't find a usable entry, so make a new one */ : ct = CatalogCacheCreateEntry(cache, ntp, 0.00 : 765dc0: 48 8b b5 a0 fd ff ff mov -0x260(%rbp),%rsi 0.00 : 765dc7: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi 0.00 : 765dce: 45 31 c0 xor %r8d,%r8d 0.00 : 765dd1: 44 89 f9 mov %r15d,%ecx 0.00 : 765dd4: 44 89 f2 mov %r14d,%edx 0.00 : 765dd7: e8 04 f7 ff ff callq 7654e0 0.00 : 765ddc: 49 89 c4 mov %rax,%r12 0.00 : 765ddf: e9 dc fe ff ff jmpq 765cc0 : /* This way leaves state correct if lappend runs out of memory */ : ctlist = lappend(ctlist, ct); : ct->refcount++; : } : : systable_endscan(scandesc); 0.00 : 765de4: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 765deb: 45 31 e4 xor %r12d,%r12d 0.00 : 765dee: e8 2d ed d3 ff callq 4a4b20 : : heap_close(relation, AccessShareLock); 0.00 : 765df3: 48 8b bd b8 fd ff ff mov -0x248(%rbp),%rdi 0.00 : 765dfa: be 01 00 00 00 mov $0x1,%esi 0.00 : 765dff: e8 bc 7b d3 ff callq 49d9c0 : : /* : * Now we can build the CatCList entry. First we need a dummy tuple : * containing the key values... : */ : ntp = build_dummy_tuple(cache, nkeys, cur_skey); 0.00 : 765e04: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi 0.00 : 765e0b: 8b b5 7c fd ff ff mov -0x284(%rbp),%esi 0.00 : 765e11: 48 8d 95 d0 fd ff ff lea -0x230(%rbp),%rdx 0.00 : 765e18: e8 53 f9 ff ff callq 765770 0.00 : 765e1d: 49 89 c5 mov %rax,%r13 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 765e20: 48 8b 05 59 4a 45 00 mov 0x454a59(%rip),%rax # bba880 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 765e27: 4c 8b 35 32 4a 45 00 mov 0x454a32(%rip),%r14 # bba860 0.00 : 765e2e: bf 58 00 00 00 mov $0x58,%edi : : CurrentMemoryContext = context; 0.00 : 765e33: 48 89 05 26 4a 45 00 mov %rax,0x454a26(%rip) # bba860 : oldcxt = MemoryContextSwitchTo(CacheMemoryContext); : nmembers = list_length(ctlist); 0.00 : 765e3a: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 765e3e: 48 85 c0 test %rax,%rax 0.00 : 765e41: 74 0f je 765e52 0.00 : 765e43: 44 8b 60 04 mov 0x4(%rax),%r12d 0.00 : 765e47: 49 63 c4 movslq %r12d,%rax 0.00 : 765e4a: 48 8d 3c c5 58 00 00 lea 0x58(,%rax,8),%rdi 0.00 : 765e51: 00 : cl = (CatCList *) 0.00 : 765e52: e8 f9 2e 03 00 callq 798d50 : palloc(sizeof(CatCList) + nmembers * sizeof(CatCTup *)); : heap_copytuple_with_tuple(ntp, &cl->tuple); 0.00 : 765e57: 48 8d 70 30 lea 0x30(%rax),%rsi 0.00 : 765e5b: 4c 89 ef mov %r13,%rdi : * containing the key values... : */ : ntp = build_dummy_tuple(cache, nkeys, cur_skey); : oldcxt = MemoryContextSwitchTo(CacheMemoryContext); : nmembers = list_length(ctlist); : cl = (CatCList *) 0.00 : 765e5e: 48 89 c3 mov %rax,%rbx : palloc(sizeof(CatCList) + nmembers * sizeof(CatCTup *)); : heap_copytuple_with_tuple(ntp, &cl->tuple); 0.00 : 765e61: e8 ba 8c d0 ff callq 46eb20 : MemoryContextSwitchTo(oldcxt); : heap_freetuple(ntp); 0.00 : 765e66: 4c 89 ef mov %r13,%rdi 0.00 : 765e69: 4c 89 35 f0 49 45 00 mov %r14,0x4549f0(%rip) # bba860 0.00 : 765e70: e8 4b 8e d0 ff callq 46ecc0 : CatCacheRemoveCTup(cache, ct); : } : : PG_RE_THROW(); : } : PG_END_TRY(); 0.00 : 765e75: 48 8b 85 a8 fd ff ff mov -0x258(%rbp),%rax 0.00 : 765e7c: 48 8b 95 b0 fd ff ff mov -0x250(%rbp),%rdx 0.00 : 765e83: 48 89 05 be 37 45 00 mov %rax,0x4537be(%rip) # bb9648 0.00 : 765e8a: 48 89 15 af 37 45 00 mov %rdx,0x4537af(%rip) # bb9640 : : cl->cl_magic = CL_MAGIC; 0.00 : 765e91: c7 03 03 51 76 52 movl $0x52765103,(%rbx) : cl->my_cache = cache; 0.00 : 765e97: 48 8b 8d 80 fd ff ff mov -0x280(%rbp),%rcx : cl->refcount = 0; /* for the moment */ 0.00 : 765e9e: c7 43 20 00 00 00 00 movl $0x0,0x20(%rbx) : cl->dead = false; 0.00 : 765ea5: c6 43 24 00 movb $0x0,0x24(%rbx) : PG_RE_THROW(); : } : PG_END_TRY(); : : cl->cl_magic = CL_MAGIC; : cl->my_cache = cache; 0.00 : 765ea9: 48 89 4b 08 mov %rcx,0x8(%rbx) : cl->refcount = 0; /* for the moment */ : cl->dead = false; : cl->ordered = ordered; 0.00 : 765ead: 48 83 bd 88 fd ff ff cmpq $0x0,-0x278(%rbp) 0.00 : 765eb4: 00 0.00 : 765eb5: 0f 95 43 25 setne 0x25(%rbx) : cl->nkeys = nkeys; 0.00 : 765eb9: 0f b7 85 7c fd ff ff movzwl -0x284(%rbp),%eax 0.00 : 765ec0: 66 89 43 26 mov %ax,0x26(%rbx) : cl->hash_value = lHashValue; 0.00 : 765ec4: 8b 95 9c fd ff ff mov -0x264(%rbp),%edx : cl->n_members = nmembers; 0.00 : 765eca: 44 89 63 48 mov %r12d,0x48(%rbx) : cl->my_cache = cache; : cl->refcount = 0; /* for the moment */ : cl->dead = false; : cl->ordered = ordered; : cl->nkeys = nkeys; : cl->hash_value = lHashValue; 0.00 : 765ece: 89 53 28 mov %edx,0x28(%rbx) : cl->n_members = nmembers; : : i = 0; : foreach(ctlist_item, ctlist) 0.00 : 765ed1: 48 8b 45 c0 mov -0x40(%rbp),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 765ed5: 48 85 c0 test %rax,%rax 0.00 : 765ed8: 74 37 je 765f11 0.00 : 765eda: 48 8b 48 08 mov 0x8(%rax),%rcx : ct->refcount == 0 && : (ct->c_list == NULL || ct->c_list->refcount == 0)) : CatCacheRemoveCTup(cache, ct); : } : : PG_RE_THROW(); 0.00 : 765ede: 31 f6 xor %esi,%esi : cl->nkeys = nkeys; : cl->hash_value = lHashValue; : cl->n_members = nmembers; : : i = 0; : foreach(ctlist_item, ctlist) 0.00 : 765ee0: 48 85 c9 test %rcx,%rcx 0.00 : 765ee3: 74 2c je 765f11 0.00 : 765ee5: 0f 1f 00 nopl (%rax) : { : cl->members[i++] = ct = (CatCTup *) lfirst(ctlist_item); 0.00 : 765ee8: 48 8b 01 mov (%rcx),%rax 0.00 : 765eeb: 48 63 d6 movslq %esi,%rdx 0.00 : 765eee: 83 c6 01 add $0x1,%esi 0.00 : 765ef1: 48 89 44 d3 50 mov %rax,0x50(%rbx,%rdx,8) : Assert(ct->c_list == NULL); : ct->c_list = cl; : /* release the temporary refcount on the member */ : Assert(ct->refcount > 0); : ct->refcount--; 0.00 : 765ef6: 83 68 28 01 subl $0x1,0x28(%rax) : /* mark list dead if any members already dead */ : if (ct->dead) 0.00 : 765efa: 80 78 2c 00 cmpb $0x0,0x2c(%rax) : i = 0; : foreach(ctlist_item, ctlist) : { : cl->members[i++] = ct = (CatCTup *) lfirst(ctlist_item); : Assert(ct->c_list == NULL); : ct->c_list = cl; 0.00 : 765efe: 48 89 58 20 mov %rbx,0x20(%rax) : /* release the temporary refcount on the member */ : Assert(ct->refcount > 0); : ct->refcount--; : /* mark list dead if any members already dead */ : if (ct->dead) 0.00 : 765f02: 74 04 je 765f08 : cl->dead = true; 0.00 : 765f04: c6 43 24 01 movb $0x1,0x24(%rbx) : cl->nkeys = nkeys; : cl->hash_value = lHashValue; : cl->n_members = nmembers; : : i = 0; : foreach(ctlist_item, ctlist) 0.00 : 765f08: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 765f0c: 48 85 c9 test %rcx,%rcx 0.00 : 765f0f: 75 d7 jne 765ee8 : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 765f11: 48 8b 8d 80 fd ff ff mov -0x280(%rbp),%rcx : if (ct->dead) : cl->dead = true; : } : Assert(i == nmembers); : : dlist_push_head(&cache->cc_lists, &cl->cache_elem); 0.00 : 765f18: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.00 : 765f1c: 48 8b 81 a0 01 00 00 mov 0x1a0(%rcx),%rax 0.00 : 765f23: 48 85 c0 test %rax,%rax 0.00 : 765f26: 0f 84 21 01 00 00 je 76604d : dlist_init(head); : : node->next = head->head.next; 0.00 : 765f2c: 48 89 43 18 mov %rax,0x18(%rbx) : node->prev = &head->head; 0.00 : 765f30: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx : : /* Finally, bump the list's refcount and return it */ : cl->refcount++; : ResourceOwnerRememberCatCacheListRef(CurrentResourceOwner, cl); 0.00 : 765f37: 48 89 de mov %rbx,%rsi 0.00 : 765f3a: 48 89 4b 10 mov %rcx,0x10(%rbx) : node->next->prev = node; 0.00 : 765f3e: 48 89 10 mov %rdx,(%rax) : head->head.next = node; 0.00 : 765f41: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 765f48: 48 89 90 a0 01 00 00 mov %rdx,0x1a0(%rax) : Assert(i == nmembers); : : dlist_push_head(&cache->cc_lists, &cl->cache_elem); : : /* Finally, bump the list's refcount and return it */ : cl->refcount++; 0.00 : 765f4f: 83 43 20 01 addl $0x1,0x20(%rbx) : ResourceOwnerRememberCatCacheListRef(CurrentResourceOwner, cl); 0.00 : 765f53: 48 8b 3d 66 49 45 00 mov 0x454966(%rip),%rdi # bba8c0 0.00 : 765f5a: e8 b1 42 03 00 callq 79a210 : : CACHE3_elog(DEBUG2, "SearchCatCacheList(%s): made list of %d members", : cache->cc_relname, nmembers); : : return cl; : } 0.00 : 765f5f: 48 81 c4 68 02 00 00 add $0x268,%rsp 0.00 : 765f66: 48 89 d8 mov %rbx,%rax 0.00 : 765f69: 5b pop %rbx 0.00 : 765f6a: 41 5c pop %r12 0.00 : 765f6c: 41 5d pop %r13 0.00 : 765f6e: 41 5e pop %r14 0.00 : 765f70: 41 5f pop %r15 0.00 : 765f72: c9 leaveq 0.00 : 765f73: c3 retq : /* : * see if the cached list matches our key. : */ : if (cl->nkeys != nkeys) : continue; : HeapKeyTest(&cl->tuple, 0.00 : 765f74: 4c 89 c2 mov %r8,%rdx 0.00 : 765f77: 0f bf f1 movswl %cx,%esi 0.00 : 765f7a: 4c 89 ff mov %r15,%rdi 0.00 : 765f7d: e8 0e 9a d0 ff callq 46f990 0.00 : 765f82: 48 89 c2 mov %rax,%rdx 0.00 : 765f85: e9 67 fd ff ff jmpq 765cf1 0.00 : 765f8a: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 765f8e: 48 98 cltq 0.00 : 765f90: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 765f94: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 765f98: e9 5e fd ff ff jmpq 765cfb : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 765f9d: 31 d2 xor %edx,%edx 0.00 : 765f9f: 80 3d 3b 25 45 00 00 cmpb $0x0,0x45253b(%rip) # bb84e1 0.00 : 765fa6: 0f 95 c2 setne %dl 0.00 : 765fa9: e9 0d fc ff ff jmpq 765bbb : */ : STATIC_IF_INLINE void : dlist_move_head(dlist_head *head, dlist_node *node) : { : /* fast path if it's already at the head */ : if (head->head.next == node) 0.00 : 765fae: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx : * cache's list-of-lists, to speed subsequent searches. (We do not : * move the members to the fronts of their hashbucket lists, however, : * since there's no point in that unless they are searched for : * individually.) : */ : dlist_move_head(&cache->cc_lists, &cl->cache_elem); 0.00 : 765fb5: 48 8d 4b 10 lea 0x10(%rbx),%rcx : : dlist_push_head(&cache->cc_lists, &cl->cache_elem); : : /* Finally, bump the list's refcount and return it */ : cl->refcount++; : ResourceOwnerRememberCatCacheListRef(CurrentResourceOwner, cl); 0.00 : 765fb9: 49 89 dc mov %rbx,%r12 0.00 : 765fbc: 48 3b 8a a0 01 00 00 cmp 0x1a0(%rdx),%rcx 0.00 : 765fc3: 74 50 je 766015 : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 765fc5: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 765fc9: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 765fcd: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.00 : 765fd1: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 765fd5: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 765fd9: 48 89 02 mov %rax,(%rdx) : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 765fdc: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 765fe3: 48 8b 82 a0 01 00 00 mov 0x1a0(%rdx),%rax 0.00 : 765fea: 48 85 c0 test %rax,%rax 0.00 : 765fed: 0f 84 98 00 00 00 je 76608b : dlist_init(head); : : node->next = head->head.next; 0.00 : 765ff3: 49 89 44 24 18 mov %rax,0x18(%r12) : node->prev = &head->head; 0.00 : 765ff8: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 765fff: 49 89 54 24 10 mov %rdx,0x10(%r12) : node->next->prev = node; 0.00 : 766004: 48 89 08 mov %rcx,(%rax) : head->head.next = node; 0.00 : 766007: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 76600e: 48 89 88 a0 01 00 00 mov %rcx,0x1a0(%rax) : * individually.) : */ : dlist_move_head(&cache->cc_lists, &cl->cache_elem); : : /* Bump the list's refcount and return it */ : ResourceOwnerEnlargeCatCacheListRefs(CurrentResourceOwner); 0.00 : 766015: 48 8b 3d a4 48 45 00 mov 0x4548a4(%rip),%rdi # bba8c0 0.00 : 76601c: e8 2f 4d 03 00 callq 79ad50 : cl->refcount++; 0.00 : 766021: 41 83 44 24 20 01 addl $0x1,0x20(%r12) : ResourceOwnerRememberCatCacheListRef(CurrentResourceOwner, cl); 0.00 : 766027: 4c 89 e6 mov %r12,%rsi 0.00 : 76602a: 48 8b 3d 8f 48 45 00 mov 0x45488f(%rip),%rdi # bba8c0 0.00 : 766031: e8 da 41 03 00 callq 79a210 : : CACHE3_elog(DEBUG2, "SearchCatCacheList(%s): made list of %d members", : cache->cc_relname, nmembers); : : return cl; : } 0.00 : 766036: e9 24 ff ff ff jmpq 765f5f : * we don't yet have relcache entries for those catalogs' indexes. : */ : static bool : IndexScanOK(CatCache *cache, ScanKey cur_skey) : { : switch (cache->id) 0.00 : 76603b: 31 d2 xor %edx,%edx 0.00 : 76603d: 83 e6 06 and $0x6,%esi 0.00 : 766040: 0f 85 75 fb ff ff jne 765bbb 0.00 : 766046: 66 90 xchg %ax,%ax 0.00 : 766048: e9 69 fb ff ff jmpq 765bb6 : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 76604d: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 766054: 48 89 81 98 01 00 00 mov %rax,0x198(%rcx) 0.00 : 76605b: 48 89 81 a0 01 00 00 mov %rax,0x1a0(%rcx) 0.00 : 766062: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 766069: e9 be fe ff ff jmpq 765f2c : /* : * see if the cached list matches our key. : */ : if (cl->nkeys != nkeys) : continue; : HeapKeyTest(&cl->tuple, 0.00 : 76606e: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 766072: 48 98 cltq 0.00 : 766074: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 766078: 0f b7 14 10 movzwl (%rax,%rdx,1),%edx 0.00 : 76607c: e9 7a fc ff ff jmpq 765cfb : : /* : * one-time startup overhead for each cache : */ : if (cache->cc_tupdesc == NULL) : CatalogCacheInitializeCache(cache); 0.00 : 766081: e8 7a e5 ff ff callq 764600 0.00 : 766086: e9 cd f8 ff ff jmpq 765958 0.00 : 76608b: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 766092: 48 89 82 98 01 00 00 mov %rax,0x198(%rdx) 0.00 : 766099: 48 89 82 a0 01 00 00 mov %rax,0x1a0(%rdx) 0.00 : 7660a0: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 7660a7: e9 47 ff ff ff jmpq 765ff3 : * we'd better do so before we start marking the members as belonging : * to the list. : */ : : } : PG_CATCH(); 0.00 : 7660ac: 48 8b 85 b0 fd ff ff mov -0x250(%rbp),%rax 0.00 : 7660b3: 48 8b 8d a8 fd ff ff mov -0x258(%rbp),%rcx 0.00 : 7660ba: 48 89 05 7f 35 45 00 mov %rax,0x45357f(%rip) # bb9640 : { : foreach(ctlist_item, ctlist) 0.00 : 7660c1: 48 8b 45 c0 mov -0x40(%rbp),%rax : * we'd better do so before we start marking the members as belonging : * to the list. : */ : : } : PG_CATCH(); 0.00 : 7660c5: 48 89 0d 7c 35 45 00 mov %rcx,0x45357c(%rip) # bb9648 0.00 : 7660cc: 48 85 c0 test %rax,%rax 0.00 : 7660cf: 74 44 je 766115 0.00 : 7660d1: 48 8b 58 08 mov 0x8(%rax),%rbx : { : foreach(ctlist_item, ctlist) 0.00 : 7660d5: 48 85 db test %rbx,%rbx 0.00 : 7660d8: 74 3b je 766115 : { : ct = (CatCTup *) lfirst(ctlist_item); 0.00 : 7660da: 48 8b 33 mov (%rbx),%rsi : Assert(ct->c_list == NULL); : Assert(ct->refcount > 0); : ct->refcount--; 0.00 : 7660dd: 8b 46 28 mov 0x28(%rsi),%eax 0.00 : 7660e0: 83 e8 01 sub $0x1,%eax : if ( 0.00 : 7660e3: 80 7e 2c 00 cmpb $0x0,0x2c(%rsi) : foreach(ctlist_item, ctlist) : { : ct = (CatCTup *) lfirst(ctlist_item); : Assert(ct->c_list == NULL); : Assert(ct->refcount > 0); : ct->refcount--; 0.00 : 7660e7: 89 46 28 mov %eax,0x28(%rsi) : if ( 0.00 : 7660ea: 74 20 je 76610c 0.00 : 7660ec: 85 c0 test %eax,%eax 0.00 : 7660ee: 75 1c jne 76610c 0.00 : 7660f0: 48 8b 46 20 mov 0x20(%rsi),%rax 0.00 : 7660f4: 48 85 c0 test %rax,%rax 0.00 : 7660f7: 74 07 je 766100 0.00 : 7660f9: 8b 40 20 mov 0x20(%rax),%eax 0.00 : 7660fc: 85 c0 test %eax,%eax 0.00 : 7660fe: 75 0c jne 76610c : #ifndef CATCACHE_FORCE_RELEASE : ct->dead && : #endif : ct->refcount == 0 && : (ct->c_list == NULL || ct->c_list->refcount == 0)) : CatCacheRemoveCTup(cache, ct); 0.00 : 766100: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi 0.00 : 766107: e8 a4 f0 ff ff callq 7651b0 : */ : : } : PG_CATCH(); : { : foreach(ctlist_item, ctlist) 0.00 : 76610c: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 766110: 48 85 db test %rbx,%rbx 0.00 : 766113: 75 c5 jne 7660da : ct->refcount == 0 && : (ct->c_list == NULL || ct->c_list->refcount == 0)) : CatCacheRemoveCTup(cache, ct); : } : : PG_RE_THROW(); 0.00 : 766115: e8 36 47 01 00 callq 77a850 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:209 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:221 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000774920 : : * additional effort on ensuring consistency. : */ : bool : get_ordering_op_properties(Oid opno, : Oid *opfamily, Oid *opcintype, int16 *strategy) : { 0.00 : 774920: 55 push %rbp : : /* : * Search pg_amop to see if the target operator is registered as the "<" : * or ">" operator of any btree opfamily. : */ : catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(opno)); 0.00 : 774921: 45 31 c0 xor %r8d,%r8d 0.00 : 774924: 45 31 c9 xor %r9d,%r9d : * additional effort on ensuring consistency. : */ : bool : get_ordering_op_properties(Oid opno, : Oid *opfamily, Oid *opcintype, int16 *strategy) : { 0.00 : 774927: 48 89 e5 mov %rsp,%rbp 0.00 : 77492a: 41 55 push %r13 0.00 : 77492c: 49 89 cd mov %rcx,%r13 0.00 : 77492f: 41 54 push %r12 0.00 : 774931: 49 89 d4 mov %rdx,%r12 0.00 : 774934: 53 push %rbx 0.00 : 774935: 48 89 f3 mov %rsi,%rbx 0.00 : 774938: 48 83 ec 08 sub $0x8,%rsp : bool result = false; : CatCList *catlist; : int i; : : /* ensure outputs are initialized on failure */ : *opfamily = InvalidOid; 0.00 : 77493c: c7 06 00 00 00 00 movl $0x0,(%rsi) : *opcintype = InvalidOid; /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:209 50.00 : 774942: c7 02 00 00 00 00 movl $0x0,(%rdx) : : /* : * Search pg_amop to see if the target operator is registered as the "<" : * or ">" operator of any btree opfamily. : */ : catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(opno)); 0.00 : 774948: be 01 00 00 00 mov $0x1,%esi : int i; : : /* ensure outputs are initialized on failure */ : *opfamily = InvalidOid; : *opcintype = InvalidOid; : *strategy = 0; 0.00 : 77494d: 66 c7 01 00 00 movw $0x0,(%rcx) : : /* : * Search pg_amop to see if the target operator is registered as the "<" : * or ">" operator of any btree opfamily. : */ : catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(opno)); 0.00 : 774952: 89 fa mov %edi,%edx 0.00 : 774954: 31 c9 xor %ecx,%ecx 0.00 : 774956: bf 03 00 00 00 mov $0x3,%edi 0.00 : 77495b: e8 30 d0 ff ff callq 771990 : : for (i = 0; i < catlist->n_members; i++) 0.00 : 774960: 44 8b 40 48 mov 0x48(%rax),%r8d : : /* : * Search pg_amop to see if the target operator is registered as the "<" : * or ">" operator of any btree opfamily. : */ : catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(opno)); 0.00 : 774964: 48 89 c7 mov %rax,%rdi : : for (i = 0; i < catlist->n_members; i++) 0.00 : 774967: 45 85 c0 test %r8d,%r8d 0.00 : 77496a: 7e 64 jle 7749d0 0.00 : 77496c: 48 89 c6 mov %rax,%rsi 0.00 : 77496f: 31 c9 xor %ecx,%ecx 0.00 : 774971: eb 11 jmp 774984 0.00 : 774973: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 774978: 83 c1 01 add $0x1,%ecx 0.00 : 77497b: 48 83 c6 08 add $0x8,%rsi 0.00 : 77497f: 44 39 c1 cmp %r8d,%ecx 0.00 : 774982: 7d 4c jge 7749d0 : { : HeapTuple tuple = &catlist->members[i]->tuple; : Form_pg_amop aform = (Form_pg_amop) GETSTRUCT(tuple); 0.00 : 774984: 48 8b 46 50 mov 0x50(%rsi),%rax 0.00 : 774988: 48 8b 50 48 mov 0x48(%rax),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:221 50.00 : 77498c: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 774990: 48 01 c2 add %rax,%rdx : : /* must be btree */ : if (aform->amopmethod != BTREE_AM_OID) 0.00 : 774993: 81 7a 14 93 01 00 00 cmpl $0x193,0x14(%rdx) 0.00 : 77499a: 75 dc jne 774978 : continue; : : if (aform->amopstrategy == BTLessStrategyNumber || 0.00 : 77499c: 0f b7 42 0c movzwl 0xc(%rdx),%eax 0.00 : 7749a0: 66 83 f8 01 cmp $0x1,%ax 0.00 : 7749a4: 74 06 je 7749ac 0.00 : 7749a6: 66 83 f8 05 cmp $0x5,%ax 0.00 : 7749aa: 75 cc jne 774978 : aform->amopstrategy == BTGreaterStrategyNumber) : { : /* Found it ... should have consistent input types */ : if (aform->amoplefttype == aform->amoprighttype) 0.00 : 7749ac: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 7749af: 3b 42 08 cmp 0x8(%rdx),%eax 0.00 : 7749b2: 75 c4 jne 774978 : { : /* Found a suitable opfamily, return info */ : *opfamily = aform->amopfamily; 0.00 : 7749b4: 8b 02 mov (%rdx),%eax 0.00 : 7749b6: 89 03 mov %eax,(%rbx) : *opcintype = aform->amoplefttype; 0.00 : 7749b8: 8b 42 04 mov 0x4(%rdx),%eax : *strategy = aform->amopstrategy; 0.00 : 7749bb: bb 01 00 00 00 mov $0x1,%ebx : /* Found it ... should have consistent input types */ : if (aform->amoplefttype == aform->amoprighttype) : { : /* Found a suitable opfamily, return info */ : *opfamily = aform->amopfamily; : *opcintype = aform->amoplefttype; 0.00 : 7749c0: 41 89 04 24 mov %eax,(%r12) : *strategy = aform->amopstrategy; 0.00 : 7749c4: 0f b7 42 0c movzwl 0xc(%rdx),%eax 0.00 : 7749c8: 66 41 89 45 00 mov %ax,0x0(%r13) : result = true; : break; 0.00 : 7749cd: eb 03 jmp 7749d2 0.00 : 7749cf: 90 nop : * Search pg_amop to see if the target operator is registered as the "<" : * or ">" operator of any btree opfamily. : */ : catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(opno)); : : for (i = 0; i < catlist->n_members; i++) 0.00 : 7749d0: 31 db xor %ebx,%ebx : break; : } : } : } : : ReleaseSysCacheList(catlist); 0.00 : 7749d2: e8 69 08 ff ff callq 765240 : : return result; : } 0.00 : 7749d7: 48 83 c4 08 add $0x8,%rsp 0.00 : 7749db: 89 d8 mov %ebx,%eax 0.00 : 7749dd: 5b pop %rbx 0.00 : 7749de: 41 5c pop %r12 0.00 : 7749e0: 41 5d pop %r13 0.00 : 7749e2: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:527 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1576 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:340 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007848b0 : : * on the small side and let the table grow if it's exceeded. An overly : * large nelem will penalize hash_seq_search speed without buying much. : */ : HTAB * : hash_create(const char *tabname, long nelem, HASHCTL *info, int flags) : { 0.00 : 7848b0: 55 push %rbp : * a memory context created specially for the hash table --- this makes : * hash_destroy very simple. The memory context is made a child of either : * a context specified by the caller, or TopMemoryContext if nothing is : * specified. : */ : if (flags & HASH_SHARED_MEM) 0.00 : 7848b1: 89 c8 mov %ecx,%eax : * on the small side and let the table grow if it's exceeded. An overly : * large nelem will penalize hash_seq_search speed without buying much. : */ : HTAB * : hash_create(const char *tabname, long nelem, HASHCTL *info, int flags) : { 0.00 : 7848b3: 48 89 e5 mov %rsp,%rbp 0.00 : 7848b6: 41 57 push %r15 0.00 : 7848b8: 41 56 push %r14 0.00 : 7848ba: 41 55 push %r13 0.00 : 7848bc: 41 54 push %r12 0.00 : 7848be: 49 89 fc mov %rdi,%r12 0.00 : 7848c1: 53 push %rbx 0.00 : 7848c2: 48 89 d3 mov %rdx,%rbx 0.00 : 7848c5: 48 83 ec 18 sub $0x18,%rsp : * a memory context created specially for the hash table --- this makes : * hash_destroy very simple. The memory context is made a child of either : * a context specified by the caller, or TopMemoryContext if nothing is : * specified. : */ : if (flags & HASH_SHARED_MEM) 0.00 : 7848c9: 83 e0 40 and $0x40,%eax : * on the small side and let the table grow if it's exceeded. An overly : * large nelem will penalize hash_seq_search speed without buying much. : */ : HTAB * : hash_create(const char *tabname, long nelem, HASHCTL *info, int flags) : { 0.00 : 7848cc: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 7848d0: 89 4d c4 mov %ecx,-0x3c(%rbp) : * a memory context created specially for the hash table --- this makes : * hash_destroy very simple. The memory context is made a child of either : * a context specified by the caller, or TopMemoryContext if nothing is : * specified. : */ : if (flags & HASH_SHARED_MEM) 0.00 : 7848d3: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 7848d6: 0f 84 d4 03 00 00 je 784cb0 : { : /* Set up to allocate the hash header */ : CurrentDynaHashCxt = TopMemoryContext; 0.00 : 7848dc: 48 8b 05 85 5f 43 00 mov 0x435f85(%rip),%rax # bba868 0.00 : 7848e3: 48 89 05 de 52 43 00 mov %rax,0x4352de(%rip) # bb9bc8 : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); 0.00 : 7848ea: 4c 89 e7 mov %r12,%rdi 0.00 : 7848ed: e8 5e 4f ce ff callq 469850 : : static void * : DynaHashAlloc(Size size) : { : Assert(MemoryContextIsValid(CurrentDynaHashCxt)); : return MemoryContextAlloc(CurrentDynaHashCxt, size); 0.00 : 7848f2: 48 8b 3d cf 52 43 00 mov 0x4352cf(%rip),%rdi # bb9bc8 0.00 : 7848f9: 48 8d 70 61 lea 0x61(%rax),%rsi 0.00 : 7848fd: e8 8e 45 01 00 callq 798e90 : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); : MemSet(hashp, 0, sizeof(HTAB)); 0.00 : 784902: a8 07 test $0x7,%al : : static void * : DynaHashAlloc(Size size) : { : Assert(MemoryContextIsValid(CurrentDynaHashCxt)); : return MemoryContextAlloc(CurrentDynaHashCxt, size); 0.00 : 784904: 49 89 c5 mov %rax,%r13 : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); : MemSet(hashp, 0, sizeof(HTAB)); 0.00 : 784907: 0f 85 23 03 00 00 jne 784c30 0.00 : 78490d: 49 8d 7d 60 lea 0x60(%r13),%rdi 0.00 : 784911: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 784918: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 78491f: 48 83 c0 08 add $0x8,%rax 0.00 : 784923: 48 39 f8 cmp %rdi,%rax 0.00 : 784926: 75 f0 jne 784918 : : hashp->tabname = (char *) (hashp + 1); 0.00 : 784928: 49 89 7d 38 mov %rdi,0x38(%r13) : strcpy(hashp->tabname, tabname); 0.00 : 78492c: 4c 89 e6 mov %r12,%rsi 0.00 : 78492f: e8 4c 54 ce ff callq 469d80 : : if (flags & HASH_FUNCTION) 0.00 : 784934: f6 45 c4 10 testb $0x10,-0x3c(%rbp) 0.00 : 784938: 0f 84 e2 03 00 00 je 784d20 : hashp->hash = info->hash; 0.00 : 78493e: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 784942: 49 89 45 10 mov %rax,0x10(%r13) : /* : * If you don't specify a match function, it defaults to string_compare if : * you used string_hash (either explicitly or by default) and to memcmp : * otherwise. (Prior to PostgreSQL 7.4, memcmp was always used.) : */ : if (flags & HASH_COMPARE) 0.00 : 784946: f7 45 c4 00 04 00 00 testl $0x400,-0x3c(%rbp) 0.00 : 78494d: 0f 84 a5 03 00 00 je 784cf8 : hashp->match = info->match; 0.00 : 784953: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 784957: 49 89 45 18 mov %rax,0x18(%r13) : hashp->match = memcmp; : : /* : * Similarly, the key-copying function defaults to strlcpy or memcpy. : */ : if (flags & HASH_KEYCOPY) 0.00 : 78495b: f7 45 c4 00 08 00 00 testl $0x800,-0x3c(%rbp) 0.00 : 784962: 0f 84 28 03 00 00 je 784c90 : hashp->keycopy = info->keycopy; 0.00 : 784968: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 78496c: 49 89 45 20 mov %rax,0x20(%r13) : else if (hashp->hash == string_hash) : hashp->keycopy = (HashCopyFunc) strlcpy; : else : hashp->keycopy = memcpy; : : if (flags & HASH_ALLOC) 0.00 : 784970: f7 45 c4 00 01 00 00 testl $0x100,-0x3c(%rbp) 0.00 : 784977: 0f 84 d3 02 00 00 je 784c50 : hashp->alloc = info->alloc; 0.00 : 78497d: 48 8b 43 50 mov 0x50(%rbx),%rax 0.00 : 784981: 49 89 45 28 mov %rax,0x28(%r13) : else : hashp->alloc = DynaHashAlloc; : : if (flags & HASH_SHARED_MEM) 0.00 : 784985: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.00 : 784988: 85 c9 test %ecx,%ecx 0.00 : 78498a: 0f 84 d3 02 00 00 je 784c63 : /* : * ctl structure and directory are preallocated for shared memory : * tables. Note that HASH_DIRSIZE and HASH_ALLOC had better be set as : * well. : */ : hashp->hctl = info->hctl; 0.00 : 784990: 48 8b 53 60 mov 0x60(%rbx),%rdx 0.00 : 784994: 49 89 55 00 mov %rdx,0x0(%r13) : hashp->dir = (HASHSEGMENT *) (((char *) info->hctl) + sizeof(HASHHDR)); 0.00 : 784998: 48 8b 43 60 mov 0x60(%rbx),%rax : hashp->hcxt = NULL; 0.00 : 78499c: 49 c7 45 30 00 00 00 movq $0x0,0x30(%r13) 0.00 : 7849a3: 00 : hashp->isshared = true; 0.00 : 7849a4: 41 c6 45 40 01 movb $0x1,0x40(%r13) : * ctl structure and directory are preallocated for shared memory : * tables. Note that HASH_DIRSIZE and HASH_ALLOC had better be set as : * well. : */ : hashp->hctl = info->hctl; : hashp->dir = (HASHSEGMENT *) (((char *) info->hctl) + sizeof(HASHHDR)); 0.00 : 7849a9: 48 83 c0 70 add $0x70,%rax 0.00 : 7849ad: 49 89 45 08 mov %rax,0x8(%r13) : hashp->hcxt = NULL; : hashp->isshared = true; : : /* hash table already exists, we're just attaching to it */ : if (flags & HASH_ATTACH) 0.00 : 7849b1: 80 7d c4 00 cmpb $0x0,-0x3c(%rbp) 0.00 : 7849b5: 0f 88 d5 03 00 00 js 784d90 : hashp->dir = NULL; : hashp->hcxt = CurrentDynaHashCxt; : hashp->isshared = false; : } : : if (!hashp->hctl) 0.00 : 7849bb: 49 83 7d 00 00 cmpq $0x0,0x0(%r13) 0.00 : 7849c0: 0f 84 9a 04 00 00 je 784e60 : * Set default HASHHDR parameters. : */ : static void : hdefault(HTAB *hashp) : { : HASHHDR *hctl = hashp->hctl; 0.00 : 7849c6: 49 8b 75 00 mov 0x0(%r13),%rsi : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : hashp->frozen = false; 0.00 : 7849ca: 41 c6 45 42 00 movb $0x0,0x42(%r13) : static void : hdefault(HTAB *hashp) : { : HASHHDR *hctl = hashp->hctl; : : MemSet(hctl, 0, sizeof(HASHHDR)); 0.00 : 7849cf: 40 f6 c6 07 test $0x7,%sil 0.00 : 7849d3: 0f 85 e7 03 00 00 jne 784dc0 0.00 : 7849d9: 48 8d 56 70 lea 0x70(%rsi),%rdx 0.00 : 7849dd: 48 89 f0 mov %rsi,%rax 0.00 : 7849e0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 7849e7: 48 83 c0 08 add $0x8,%rax 0.00 : 7849eb: 48 39 c2 cmp %rax,%rdx 0.00 : 7849ee: 75 f0 jne 7849e0 : : hctl->nentries = 0; 0.00 : 7849f0: 48 c7 46 08 00 00 00 movq $0x0,0x8(%rsi) 0.00 : 7849f7: 00 : hctl->freeList = NULL; 0.00 : 7849f8: 48 c7 46 10 00 00 00 movq $0x0,0x10(%rsi) 0.00 : 7849ff: 00 : : hctl->dsize = DEF_DIRSIZE; 0.00 : 784a00: 48 c7 46 18 00 01 00 movq $0x100,0x18(%rsi) 0.00 : 784a07: 00 : hctl->nsegs = 0; 0.00 : 784a08: 48 c7 46 20 00 00 00 movq $0x0,0x20(%rsi) 0.00 : 784a0f: 00 : : /* rather pointless defaults for key & entry size */ : hctl->keysize = sizeof(char *); 0.00 : 784a10: 48 c7 46 38 08 00 00 movq $0x8,0x38(%rsi) 0.00 : 784a17: 00 : hctl->entrysize = 2 * sizeof(char *); 0.00 : 784a18: 48 c7 46 40 10 00 00 movq $0x10,0x40(%rsi) 0.00 : 784a1f: 00 : : hctl->num_partitions = 0; /* not partitioned */ 0.00 : 784a20: 48 c7 46 48 00 00 00 movq $0x0,0x48(%rsi) 0.00 : 784a27: 00 : : hctl->ffactor = DEF_FFACTOR; 0.00 : 784a28: 48 c7 46 50 01 00 00 movq $0x1,0x50(%rsi) 0.00 : 784a2f: 00 : : /* table has no fixed maximum size */ : hctl->max_dsize = NO_MAX_DSIZE; 0.00 : 784a30: 48 c7 46 58 ff ff ff movq $0xffffffffffffffff,0x58(%rsi) 0.00 : 784a37: ff : : hctl->ssize = DEF_SEGSIZE; 0.00 : 784a38: 48 c7 46 60 00 01 00 movq $0x100,0x60(%rsi) 0.00 : 784a3f: 00 : hctl->sshift = DEF_SEGSIZE_SHIFT; 0.00 : 784a40: c7 46 68 08 00 00 00 movl $0x8,0x68(%rsi) : : hdefault(hashp); : : hctl = hashp->hctl; : : if (flags & HASH_PARTITION) 0.00 : 784a47: f6 45 c4 01 testb $0x1,-0x3c(%rbp) : : hashp->frozen = false; : : hdefault(hashp); : : hctl = hashp->hctl; 0.00 : 784a4b: 4d 8b 7d 00 mov 0x0(%r13),%r15 : : if (flags & HASH_PARTITION) 0.00 : 784a4f: 74 07 je 784a58 : * be less than INT_MAX (see init_htab()), so call the int version of : * next_pow2. : */ : Assert(info->num_partitions == next_pow2_int(info->num_partitions)); : : hctl->num_partitions = info->num_partitions; 0.00 : 784a51: 48 8b 03 mov (%rbx),%rax 0.00 : 784a54: 49 89 47 48 mov %rax,0x48(%r15) : } : : if (flags & HASH_SEGMENT) 0.00 : 784a58: f6 45 c4 02 testb $0x2,-0x3c(%rbp) 0.00 : 784a5c: 74 41 je 784a9f : { : hctl->ssize = info->ssize; 0.00 : 784a5e: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 784a62: 49 89 47 60 mov %rax,0x60(%r15) : hctl->sshift = my_log2(info->ssize); 0.00 : 784a66: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 784a6a: 48 b8 ff ff ff ff ff movabs $0x3fffffffffffffff,%rax 0.00 : 784a71: ff ff 3f 0.00 : 784a74: 48 89 c1 mov %rax,%rcx 0.00 : 784a77: 48 39 c2 cmp %rax,%rdx : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784a7a: b8 01 00 00 00 mov $0x1,%eax : } : : if (flags & HASH_SEGMENT) : { : hctl->ssize = info->ssize; : hctl->sshift = my_log2(info->ssize); 0.00 : 784a7f: 48 0f 4e ca cmovle %rdx,%rcx : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784a83: 31 d2 xor %edx,%edx 0.00 : 784a85: 48 83 f9 01 cmp $0x1,%rcx 0.00 : 784a89: 7e 10 jle 784a9b 0.00 : 784a8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 784a90: 48 01 c0 add %rax,%rax 0.00 : 784a93: 83 c2 01 add $0x1,%edx 0.00 : 784a96: 48 39 c8 cmp %rcx,%rax 0.00 : 784a99: 7c f5 jl 784a90 : } : : if (flags & HASH_SEGMENT) : { : hctl->ssize = info->ssize; : hctl->sshift = my_log2(info->ssize); 0.00 : 784a9b: 41 89 57 68 mov %edx,0x68(%r15) : /* ssize had better be a power of 2 */ : Assert(hctl->ssize == (1L << hctl->sshift)); : } : if (flags & HASH_FFACTOR) 0.00 : 784a9f: f6 45 c4 08 testb $0x8,-0x3c(%rbp) 0.00 : 784aa3: 74 08 je 784aad : hctl->ffactor = info->ffactor; 0.00 : 784aa5: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 784aa9: 49 89 47 50 mov %rax,0x50(%r15) : : /* : * SHM hash tables have fixed directory size passed by the caller. : */ : if (flags & HASH_DIRSIZE) 0.00 : 784aad: f6 45 c4 04 testb $0x4,-0x3c(%rbp) 0.00 : 784ab1: 74 10 je 784ac3 : { : hctl->max_dsize = info->max_dsize; 0.00 : 784ab3: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 784ab7: 49 89 47 58 mov %rax,0x58(%r15) : hctl->dsize = info->dsize; 0.00 : 784abb: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 784abf: 49 89 47 18 mov %rax,0x18(%r15) : : /* : * hash table now allocates space for key and data but you have to say how : * much space to allocate : */ : if (flags & HASH_ELEM) 0.00 : 784ac3: f6 45 c4 20 testb $0x20,-0x3c(%rbp) 0.00 : 784ac7: 74 10 je 784ad9 : { : Assert(info->entrysize >= info->keysize); : hctl->keysize = info->keysize; 0.00 : 784ac9: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 784acd: 49 89 47 38 mov %rax,0x38(%r15) : hctl->entrysize = info->entrysize; 0.00 : 784ad1: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 784ad5: 49 89 47 40 mov %rax,0x40(%r15) : } : : /* make local copies of heavily-used constant fields */ : hashp->keysize = hctl->keysize; 0.00 : 784ad9: 49 8b 47 38 mov 0x38(%r15),%rax : * arrays : */ : static bool : init_htab(HTAB *hashp, long nelem) : { : HASHHDR *hctl = hashp->hctl; 0.00 : 784add: 4d 8b 65 00 mov 0x0(%r13),%r12 : hctl->keysize = info->keysize; : hctl->entrysize = info->entrysize; : } : : /* make local copies of heavily-used constant fields */ : hashp->keysize = hctl->keysize; 0.00 : 784ae1: 49 89 45 48 mov %rax,0x48(%r13) : hashp->ssize = hctl->ssize; 0.00 : 784ae5: 49 8b 47 60 mov 0x60(%r15),%rax 0.00 : 784ae9: 49 89 45 50 mov %rax,0x50(%r13) : hashp->sshift = hctl->sshift; 0.00 : 784aed: 41 8b 47 68 mov 0x68(%r15),%eax 0.00 : 784af1: 41 89 45 58 mov %eax,0x58(%r13) : int nsegs; : : /* : * initialize mutex if it's a partitioned table : */ : if (IS_PARTITIONED(hctl)) 0.00 : 784af5: 49 83 7c 24 48 00 cmpq $0x0,0x48(%r12) 0.00 : 784afb: 0f 85 6f 02 00 00 jne 784d70 : /* : * Divide number of elements by the fill factor to determine a desired : * number of buckets. Allocate space for the next greater power of two : * number of buckets : */ : nbuckets = next_pow2_int((nelem - 1) / hctl->ffactor + 1); 0.00 : 784b01: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 784b05: 48 83 ea 01 sub $0x1,%rdx 0.00 : 784b09: 48 89 d0 mov %rdx,%rax 0.00 : 784b0c: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 784b10: 49 f7 7c 24 50 idivq 0x50(%r12) 0.00 : 784b15: ba ff ff ff 3f mov $0x3fffffff,%edx 0.00 : 784b1a: 48 83 c0 01 add $0x1,%rax 0.00 : 784b1e: 48 3d ff ff ff 3f cmp $0x3fffffff,%rax 0.00 : 784b24: 48 0f 4e d0 cmovle %rax,%rdx : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784b28: 31 c9 xor %ecx,%ecx 0.00 : 784b2a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 784b2f: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 784b33: 0f 8e 0c 03 00 00 jle 784e45 0.00 : 784b39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 784b40: 48 01 c0 add %rax,%rax 0.00 : 784b43: 83 c1 01 add $0x1,%ecx 0.00 : 784b46: 48 39 d0 cmp %rdx,%rax 0.00 : 784b49: 7c f5 jl 784b40 0.00 : 784b4b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 784b50: d3 e2 shl %cl,%edx 0.00 : 784b52: 8d 04 12 lea (%rdx,%rdx,1),%eax 0.00 : 784b55: 48 63 f2 movslq %edx,%rsi : * In a partitioned table, nbuckets must be at least equal to : * num_partitions; were it less, keys with apparently different partition : * numbers would map to the same bucket, breaking partition independence. : * (Normally nbuckets will be much bigger; this is just a safety check.) : */ : while (nbuckets < hctl->num_partitions) 0.00 : 784b58: 49 8b 4c 24 48 mov 0x48(%r12),%rcx 0.00 : 784b5d: 48 39 f1 cmp %rsi,%rcx 0.00 : 784b60: 7e 13 jle 784b75 0.00 : 784b62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : nbuckets <<= 1; 0.00 : 784b68: 01 d2 add %edx,%edx : * In a partitioned table, nbuckets must be at least equal to : * num_partitions; were it less, keys with apparently different partition : * numbers would map to the same bucket, breaking partition independence. : * (Normally nbuckets will be much bigger; this is just a safety check.) : */ : while (nbuckets < hctl->num_partitions) 0.00 : 784b6a: 48 63 c2 movslq %edx,%rax 0.00 : 784b6d: 48 39 c8 cmp %rcx,%rax 0.00 : 784b70: 7c f6 jl 784b68 0.00 : 784b72: 8d 04 12 lea (%rdx,%rdx,1),%eax : nbuckets <<= 1; : : hctl->max_bucket = hctl->low_mask = nbuckets - 1; 0.00 : 784b75: 83 ea 01 sub $0x1,%edx : hctl->high_mask = (nbuckets << 1) - 1; 0.00 : 784b78: 83 e8 01 sub $0x1,%eax : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784b7b: be ff ff ff 3f mov $0x3fffffff,%esi : * (Normally nbuckets will be much bigger; this is just a safety check.) : */ : while (nbuckets < hctl->num_partitions) : nbuckets <<= 1; : : hctl->max_bucket = hctl->low_mask = nbuckets - 1; 0.00 : 784b80: 41 89 54 24 30 mov %edx,0x30(%r12) 0.00 : 784b85: 41 89 54 24 28 mov %edx,0x28(%r12) : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784b8a: 48 63 d2 movslq %edx,%rdx : */ : while (nbuckets < hctl->num_partitions) : nbuckets <<= 1; : : hctl->max_bucket = hctl->low_mask = nbuckets - 1; : hctl->high_mask = (nbuckets << 1) - 1; 0.00 : 784b8d: 41 89 44 24 2c mov %eax,0x2c(%r12) : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784b92: 48 89 d0 mov %rdx,%rax 0.00 : 784b95: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 784b99: 49 f7 7c 24 60 idivq 0x60(%r12) : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1576 25.00 : 784b9e: 41 be 01 00 00 00 mov $0x1,%r14d : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784ba4: 83 c0 01 add $0x1,%eax 0.00 : 784ba7: 48 98 cltq 0.00 : 784ba9: 48 3d ff ff ff 3f cmp $0x3fffffff,%rax 0.00 : 784baf: 48 0f 4e f0 cmovle %rax,%rsi : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784bb3: 31 c9 xor %ecx,%ecx 0.00 : 784bb5: b8 01 00 00 00 mov $0x1,%eax 0.00 : 784bba: 48 83 fe 01 cmp $0x1,%rsi 0.00 : 784bbe: 7e 15 jle 784bd5 0.00 : 784bc0: 48 01 c0 add %rax,%rax 0.00 : 784bc3: 83 c1 01 add $0x1,%ecx 0.00 : 784bc6: 48 39 f0 cmp %rsi,%rax 0.00 : 784bc9: 7c f5 jl 784bc0 0.00 : 784bcb: b8 01 00 00 00 mov $0x1,%eax 0.00 : 784bd0: d3 e0 shl %cl,%eax 0.00 : 784bd2: 4c 63 f0 movslq %eax,%r14 : : /* : * Make sure directory is big enough. If pre-allocated directory is too : * small, choke (caller screwed up). : */ : if (nsegs > hctl->dsize) 0.00 : 784bd5: 4d 3b 74 24 18 cmp 0x18(%r12),%r14 0.00 : 784bda: 0f 8f 50 01 00 00 jg 784d30 : else : return false; : } : : /* Allocate a directory */ : if (!(hashp->dir)) 0.00 : 784be0: 49 8b 5d 08 mov 0x8(%r13),%rbx 0.00 : 784be4: 48 85 db test %rbx,%rbx 0.00 : 784be7: 0f 84 db 02 00 00 je 784ec8 : if (!hashp->dir) : return false; : } : : /* Allocate initial segments */ : for (segp = hashp->dir; hctl->nsegs < nsegs; hctl->nsegs++, segp++) 0.00 : 784bed: 4d 39 74 24 20 cmp %r14,0x20(%r12) 0.00 : 784bf2: 7c 27 jl 784c1b 0.00 : 784bf4: e9 df 01 00 00 jmpq 784dd8 0.00 : 784bf9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 784c00: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 784c05: 48 83 c0 01 add $0x1,%rax 0.00 : 784c09: 49 39 c6 cmp %rax,%r14 0.00 : 784c0c: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 784c11: 0f 8e c1 01 00 00 jle 784dd8 0.00 : 784c17: 48 83 c3 08 add $0x8,%rbx : { : *segp = seg_alloc(hashp); 0.00 : 784c1b: 4c 89 ef mov %r13,%rdi 0.00 : 784c1e: e8 ad f3 ff ff callq 783fd0 : if (*segp == NULL) 0.00 : 784c23: 48 85 c0 test %rax,%rax : } : : /* Allocate initial segments */ : for (segp = hashp->dir; hctl->nsegs < nsegs; hctl->nsegs++, segp++) : { : *segp = seg_alloc(hashp); 0.00 : 784c26: 48 89 03 mov %rax,(%rbx) : if (*segp == NULL) 0.00 : 784c29: 75 d5 jne 784c00 0.00 : 784c2b: e9 0b 01 00 00 jmpq 784d3b : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); : MemSet(hashp, 0, sizeof(HTAB)); 0.00 : 784c30: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 784c35: 31 c0 xor %eax,%eax 0.00 : 784c37: 4c 89 ef mov %r13,%rdi 0.00 : 784c3a: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 784c3d: 49 8d 7d 60 lea 0x60(%r13),%rdi 0.00 : 784c41: e9 e2 fc ff ff jmpq 784928 0.00 : 784c46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 784c4d: 00 00 00 : hashp->keycopy = memcpy; : : if (flags & HASH_ALLOC) : hashp->alloc = info->alloc; : else : hashp->alloc = DynaHashAlloc; 0.00 : 784c50: 49 c7 45 28 90 48 78 movq $0x784890,0x28(%r13) 0.00 : 784c57: 00 : : if (flags & HASH_SHARED_MEM) 0.00 : 784c58: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.00 : 784c5b: 85 c9 test %ecx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:340 25.00 : 784c5d: 0f 85 2d fd ff ff jne 784990 : } : } : else : { : /* setup hash table defaults */ : hashp->hctl = NULL; 0.00 : 784c63: 49 c7 45 00 00 00 00 movq $0x0,0x0(%r13) 0.00 : 784c6a: 00 : hashp->dir = NULL; 0.00 : 784c6b: 49 c7 45 08 00 00 00 movq $0x0,0x8(%r13) 0.00 : 784c72: 00 : hashp->hcxt = CurrentDynaHashCxt; 0.00 : 784c73: 48 8b 05 4e 4f 43 00 mov 0x434f4e(%rip),%rax # bb9bc8 : hashp->isshared = false; 0.00 : 784c7a: 41 c6 45 40 00 movb $0x0,0x40(%r13) : else : { : /* setup hash table defaults */ : hashp->hctl = NULL; : hashp->dir = NULL; : hashp->hcxt = CurrentDynaHashCxt; 0.00 : 784c7f: 49 89 45 30 mov %rax,0x30(%r13) 0.00 : 784c83: e9 33 fd ff ff jmpq 7849bb 0.00 : 784c88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 784c8f: 00 : * Similarly, the key-copying function defaults to strlcpy or memcpy. : */ : if (flags & HASH_KEYCOPY) : hashp->keycopy = info->keycopy; : else if (hashp->hash == string_hash) : hashp->keycopy = (HashCopyFunc) strlcpy; 0.00 : 784c90: 49 81 7d 10 70 4f 78 cmpq $0x784f70,0x10(%r13) 0.00 : 784c97: 00 0.00 : 784c98: b8 a0 b2 7a 00 mov $0x7ab2a0,%eax 0.00 : 784c9d: ba f0 9b 46 00 mov $0x469bf0,%edx 0.00 : 784ca2: 48 0f 45 c2 cmovne %rdx,%rax 0.00 : 784ca6: 49 89 45 20 mov %rax,0x20(%r13) 0.00 : 784caa: e9 c1 fc ff ff jmpq 784970 0.00 : 784caf: 90 nop : CurrentDynaHashCxt = TopMemoryContext; : } : else : { : /* Create the hash table's private memory context */ : if (flags & HASH_CONTEXT) 0.00 : 784cb0: f7 45 c4 00 02 00 00 testl $0x200,-0x3c(%rbp) 0.00 : 784cb7: 0f 85 c3 00 00 00 jne 784d80 : CurrentDynaHashCxt = info->hcxt; : else : CurrentDynaHashCxt = TopMemoryContext; 0.00 : 784cbd: 48 8b 05 a4 5b 43 00 mov 0x435ba4(%rip),%rax # bba868 0.00 : 784cc4: 48 89 05 fd 4e 43 00 mov %rax,0x434efd(%rip) # bb9bc8 : CurrentDynaHashCxt = AllocSetContextCreate(CurrentDynaHashCxt, 0.00 : 784ccb: 48 8b 3d f6 4e 43 00 mov 0x434ef6(%rip),%rdi # bb9bc8 0.00 : 784cd2: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 784cd8: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 784cdd: 31 d2 xor %edx,%edx 0.00 : 784cdf: 4c 89 e6 mov %r12,%rsi 0.00 : 784ce2: e8 a9 32 01 00 callq 797f90 0.00 : 784ce7: 48 89 05 da 4e 43 00 mov %rax,0x434eda(%rip) # bb9bc8 0.00 : 784cee: e9 f7 fb ff ff jmpq 7848ea 0.00 : 784cf3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * otherwise. (Prior to PostgreSQL 7.4, memcmp was always used.) : */ : if (flags & HASH_COMPARE) : hashp->match = info->match; : else if (hashp->hash == string_hash) : hashp->match = (HashCompareFunc) string_compare; 0.00 : 784cf8: 49 81 7d 10 70 4f 78 cmpq $0x784f70,0x10(%r13) 0.00 : 784cff: 00 0.00 : 784d00: b8 10 4f 78 00 mov $0x784f10,%eax 0.00 : 784d05: ba e0 9d 46 00 mov $0x469de0,%edx 0.00 : 784d0a: 48 0f 45 c2 cmovne %rdx,%rax 0.00 : 784d0e: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : 784d12: e9 44 fc ff ff jmpq 78495b 0.00 : 784d17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 784d1e: 00 00 : strcpy(hashp->tabname, tabname); : : if (flags & HASH_FUNCTION) : hashp->hash = info->hash; : else : hashp->hash = string_hash; /* default hash function */ 0.00 : 784d20: 49 c7 45 10 70 4f 78 movq $0x784f70,0x10(%r13) 0.00 : 784d27: 00 0.00 : 784d28: e9 19 fc ff ff jmpq 784946 0.00 : 784d2d: 0f 1f 00 nopl (%rax) : * Make sure directory is big enough. If pre-allocated directory is too : * small, choke (caller screwed up). : */ : if (nsegs > hctl->dsize) : { : if (!(hashp->dir)) 0.00 : 784d30: 49 83 7d 08 00 cmpq $0x0,0x8(%r13) 0.00 : 784d35: 0f 84 1b 01 00 00 je 784e56 : hashp->ssize = hctl->ssize; : hashp->sshift = hctl->sshift; : : /* Build the hash directory structure */ : if (!init_htab(hashp, nelem)) : elog(ERROR, "failed to initialize hash table \"%s\"", hashp->tabname); 0.00 : 784d3b: ba 0c 5c 8d 00 mov $0x8d5c0c,%edx 0.00 : 784d40: be b8 01 00 00 mov $0x1b8,%esi 0.00 : 784d45: bf 33 59 8d 00 mov $0x8d5933,%edi 0.00 : 784d4a: e8 d1 66 ff ff callq 77b420 0.00 : 784d4f: 49 8b 55 38 mov 0x38(%r13),%rdx 0.00 : 784d53: be 18 5b 8d 00 mov $0x8d5b18,%esi 0.00 : 784d58: bf 14 00 00 00 mov $0x14,%edi 0.00 : 784d5d: 31 c0 xor %eax,%eax 0.00 : 784d5f: e8 cc 64 ff ff callq 77b230 0.00 : 784d64: e8 67 47 ce ff callq 4694d0 0.00 : 784d69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * initialize mutex if it's a partitioned table : */ : if (IS_PARTITIONED(hctl)) : SpinLockInit(&hctl->mutex); 0.00 : 784d70: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 784d75: e9 87 fd ff ff jmpq 784b01 0.00 : 784d7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else : { : /* Create the hash table's private memory context */ : if (flags & HASH_CONTEXT) : CurrentDynaHashCxt = info->hcxt; 0.00 : 784d80: 48 8b 42 58 mov 0x58(%rdx),%rax 0.00 : 784d84: 48 89 05 3d 4e 43 00 mov %rax,0x434e3d(%rip) # bb9bc8 0.00 : 784d8b: e9 3b ff ff ff jmpq 784ccb : /* hash table already exists, we're just attaching to it */ : if (flags & HASH_ATTACH) : { : /* make local copies of some heavily-used values */ : hctl = hashp->hctl; : hashp->keysize = hctl->keysize; 0.00 : 784d90: 48 8b 42 38 mov 0x38(%rdx),%rax 0.00 : 784d94: 49 89 45 48 mov %rax,0x48(%r13) : hashp->ssize = hctl->ssize; 0.00 : 784d98: 48 8b 42 60 mov 0x60(%rdx),%rax 0.00 : 784d9c: 49 89 45 50 mov %rax,0x50(%r13) : hashp->sshift = hctl->sshift; 0.00 : 784da0: 8b 42 68 mov 0x68(%rdx),%eax 0.00 : 784da3: 41 89 45 58 mov %eax,0x58(%r13) : } : : if (flags & HASH_FIXED_SIZE) : hashp->isfixed = true; : return hashp; : } 0.00 : 784da7: 48 83 c4 18 add $0x18,%rsp 0.00 : 784dab: 4c 89 e8 mov %r13,%rax 0.00 : 784dae: 5b pop %rbx 0.00 : 784daf: 41 5c pop %r12 0.00 : 784db1: 41 5d pop %r13 0.00 : 784db3: 41 5e pop %r14 0.00 : 784db5: 41 5f pop %r15 0.00 : 784db7: c9 leaveq 0.00 : 784db8: c3 retq 0.00 : 784db9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static void : hdefault(HTAB *hashp) : { : HASHHDR *hctl = hashp->hctl; : : MemSet(hctl, 0, sizeof(HASHHDR)); 0.00 : 784dc0: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : 784dc5: 31 c0 xor %eax,%eax 0.00 : 784dc7: 48 89 f7 mov %rsi,%rdi 0.00 : 784dca: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 784dcd: e9 1e fc ff ff jmpq 7849f0 0.00 : 784dd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Size elementSize; : Size allocSize; : : /* Each element has a HASHELEMENT header plus user data. */ : /* NB: this had better match element_alloc() */ : elementSize = MAXALIGN(sizeof(HASHELEMENT)) + MAXALIGN(entrysize); 0.00 : 784dd8: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 784ddd: bf 80 00 00 00 mov $0x80,%edi 0.00 : 784de2: 48 83 c0 07 add $0x7,%rax 0.00 : 784de6: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 784dea: 48 8d 48 10 lea 0x10(%rax),%rcx 0.00 : 784dee: 66 90 xchg %ax,%ax : * as much as half the allocated space. : */ : allocSize = 32 * 4; /* assume elementSize at least 8 */ : do : { : allocSize <<= 1; 0.00 : 784df0: 48 01 ff add %rdi,%rdi : nelem_alloc = allocSize / elementSize; 0.00 : 784df3: 31 d2 xor %edx,%edx 0.00 : 784df5: 48 89 f8 mov %rdi,%rax 0.00 : 784df8: 48 f7 f1 div %rcx : } while (nelem_alloc < 32); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:527 50.00 : 784dfb: 83 f8 1f cmp $0x1f,%eax 0.00 : 784dfe: 7e f0 jle 784df0 : if (*segp == NULL) : return false; : } : : /* Choose number of entries to allocate at a time */ : hctl->nelem_alloc = choose_nelem_alloc(hctl->entrysize); 0.00 : 784e00: 41 89 44 24 6c mov %eax,0x6c(%r12) : * : * For a non-shared hash table, preallocate the requested number of : * elements if it's less than our chosen nelem_alloc. This avoids wasting : * space if the caller correctly estimates a small table size. : */ : if ((flags & HASH_SHARED_MEM) || 0.00 : 784e05: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 784e08: 85 d2 test %edx,%edx 0.00 : 784e0a: 75 0a jne 784e16 0.00 : 784e0c: 49 63 47 6c movslq 0x6c(%r15),%rax 0.00 : 784e10: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 784e14: 7d 13 jge 784e29 : nelem < hctl->nelem_alloc) : { : if (!element_alloc(hashp, (int) nelem)) 0.00 : 784e16: 8b 75 c8 mov -0x38(%rbp),%esi 0.00 : 784e19: 4c 89 ef mov %r13,%rdi 0.00 : 784e1c: e8 9f f0 ff ff callq 783ec0 0.00 : 784e21: 84 c0 test %al,%al 0.00 : 784e23: 0f 84 cc 00 00 00 je 784ef5 : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : if (flags & HASH_FIXED_SIZE) 0.00 : 784e29: f7 45 c4 00 10 00 00 testl $0x1000,-0x3c(%rbp) 0.00 : 784e30: 0f 84 71 ff ff ff je 784da7 : hashp->isfixed = true; 0.00 : 784e36: 41 c6 45 41 01 movb $0x1,0x41(%r13) 0.00 : 784e3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 784e40: e9 62 ff ff ff jmpq 784da7 : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784e45: ba 01 00 00 00 mov $0x1,%edx 0.00 : 784e4a: be 01 00 00 00 mov $0x1,%esi 0.00 : 784e4f: b0 02 mov $0x2,%al 0.00 : 784e51: e9 02 fd ff ff jmpq 784b58 : * small, choke (caller screwed up). : */ : if (nsegs > hctl->dsize) : { : if (!(hashp->dir)) : hctl->dsize = nsegs; 0.00 : 784e56: 4d 89 74 24 18 mov %r14,0x18(%r12) 0.00 : 784e5b: e9 80 fd ff ff jmpq 784be0 : hashp->isshared = false; : } : : if (!hashp->hctl) : { : hashp->hctl = (HASHHDR *) hashp->alloc(sizeof(HASHHDR)); 0.00 : 784e60: bf 70 00 00 00 mov $0x70,%edi 0.00 : 784e65: 41 ff 55 28 callq *0x28(%r13) : if (!hashp->hctl) 0.00 : 784e69: 48 85 c0 test %rax,%rax : hashp->isshared = false; : } : : if (!hashp->hctl) : { : hashp->hctl = (HASHHDR *) hashp->alloc(sizeof(HASHHDR)); 0.00 : 784e6c: 49 89 45 00 mov %rax,0x0(%r13) : if (!hashp->hctl) 0.00 : 784e70: 0f 85 50 fb ff ff jne 7849c6 : ereport(ERROR, 0.00 : 784e76: 45 31 c0 xor %r8d,%r8d 0.00 : 784e79: b9 0c 5c 8d 00 mov $0x8d5c0c,%ecx 0.00 : 784e7e: ba 7b 01 00 00 mov $0x17b,%edx : */ : if ((flags & HASH_SHARED_MEM) || : nelem < hctl->nelem_alloc) : { : if (!element_alloc(hashp, (int) nelem)) : ereport(ERROR, 0.00 : 784e83: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 784e88: bf 14 00 00 00 mov $0x14,%edi 0.00 : 784e8d: e8 2e 5c ff ff callq 77aac0 0.00 : 784e92: 84 c0 test %al,%al 0.00 : 784e94: 0f 84 ca fe ff ff je 784d64 0.00 : 784e9a: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 784e9f: 31 c0 xor %eax,%eax 0.00 : 784ea1: e8 fa 79 ff ff callq 77c8a0 0.00 : 784ea6: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 784eab: 89 c3 mov %eax,%ebx 0.00 : 784ead: e8 9e 7e ff ff callq 77cd50 0.00 : 784eb2: 89 de mov %ebx,%esi 0.00 : 784eb4: 89 c7 mov %eax,%edi 0.00 : 784eb6: 31 c0 xor %eax,%eax 0.00 : 784eb8: e8 23 57 ff ff callq 77a5e0 0.00 : 784ebd: e9 a2 fe ff ff jmpq 784d64 0.00 : 784ec2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : /* Allocate a directory */ : if (!(hashp->dir)) : { : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 784ec8: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : 784ecc: 48 89 05 f5 4c 43 00 mov %rax,0x434cf5(%rip) # bb9bc8 : hashp->dir = (HASHSEGMENT *) 0.00 : 784ed3: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 784ed8: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 784edc: 41 ff 55 28 callq *0x28(%r13) : hashp->alloc(hctl->dsize * sizeof(HASHSEGMENT)); : if (!hashp->dir) 0.00 : 784ee0: 48 85 c0 test %rax,%rax : : /* Allocate a directory */ : if (!(hashp->dir)) : { : CurrentDynaHashCxt = hashp->hcxt; : hashp->dir = (HASHSEGMENT *) 0.00 : 784ee3: 48 89 c3 mov %rax,%rbx 0.00 : 784ee6: 49 89 45 08 mov %rax,0x8(%r13) : hashp->alloc(hctl->dsize * sizeof(HASHSEGMENT)); : if (!hashp->dir) 0.00 : 784eea: 0f 85 fd fc ff ff jne 784bed 0.00 : 784ef0: e9 46 fe ff ff jmpq 784d3b : */ : if ((flags & HASH_SHARED_MEM) || : nelem < hctl->nelem_alloc) : { : if (!element_alloc(hashp, (int) nelem)) : ereport(ERROR, 0.00 : 784ef5: 45 31 c0 xor %r8d,%r8d 0.00 : 784ef8: b9 0c 5c 8d 00 mov $0x8d5c0c,%ecx 0.00 : 784efd: ba c8 01 00 00 mov $0x1c8,%edx 0.00 : 784f02: e9 7c ff ff ff jmpq 784e83 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:4055 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000078bad0 : : /* : * comparator for qsorting and bsearching guc_variables array : */ : static int : guc_var_compare(const void *a, const void *b) : { 0.00 : 78bad0: 55 push %rbp : const struct config_generic *confa = *(struct config_generic * const *) a; : const struct config_generic *confb = *(struct config_generic * const *) b; : : return guc_name_compare(confa->name, confb->name); 0.00 : 78bad1: 48 8b 06 mov (%rsi),%rax 0.00 : 78bad4: 48 8b 17 mov (%rdi),%rdx : /* : * comparator for qsorting and bsearching guc_variables array : */ : static int : guc_var_compare(const void *a, const void *b) : { 0.00 : 78bad7: 48 89 e5 mov %rsp,%rbp : const struct config_generic *confa = *(struct config_generic * const *) a; : const struct config_generic *confb = *(struct config_generic * const *) b; : : return guc_name_compare(confa->name, confb->name); 0.00 : 78bada: 48 8b 30 mov (%rax),%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:4055 100.00 : 78badd: 48 8b 3a mov (%rdx),%rdi : } 0.00 : 78bae0: c9 leaveq : guc_var_compare(const void *a, const void *b) : { : const struct config_generic *confa = *(struct config_generic * const *) a; : const struct config_generic *confb = *(struct config_generic * const *) b; : : return guc_name_compare(confa->name, confb->name); 0.00 : 78bae1: e9 6a ff ff ff jmpq 78ba50 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:756 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:763 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a7c0 : : /* : * Forget that a catcache reference is owned by a ResourceOwner : */ : void : ResourceOwnerForgetCatCacheRef(ResourceOwner owner, HeapTuple tuple) : { 0.00 : 79a7c0: 55 push %rbp 0.00 : 79a7c1: 48 89 e5 mov %rsp,%rbp 0.00 : 79a7c4: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:756 50.00 : 79a7c6: 49 89 fc mov %rdi,%r12 0.00 : 79a7c9: 53 push %rbx : HeapTuple *catrefs = owner->catrefs; : int nc1 = owner->ncatrefs - 1; 0.00 : 79a7ca: 8b 87 b0 00 00 00 mov 0xb0(%rdi),%eax : /* : * Forget that a catcache reference is owned by a ResourceOwner : */ : void : ResourceOwnerForgetCatCacheRef(ResourceOwner owner, HeapTuple tuple) : { 0.00 : 79a7d0: 48 89 f3 mov %rsi,%rbx : HeapTuple *catrefs = owner->catrefs; 0.00 : 79a7d3: 48 8b b7 b8 00 00 00 mov 0xb8(%rdi),%rsi : int nc1 = owner->ncatrefs - 1; : int i; : : for (i = nc1; i >= 0; i--) 0.00 : 79a7da: 89 c7 mov %eax,%edi 0.00 : 79a7dc: 83 ef 01 sub $0x1,%edi 0.00 : 79a7df: 78 4f js 79a830 : { : if (catrefs[i] == tuple) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:763 50.00 : 79a7e1: 48 63 c7 movslq %edi,%rax : while (i < nc1) : { : catrefs[i] = catrefs[i + 1]; : i++; : } : owner->ncatrefs = nc1; 0.00 : 79a7e4: 89 fa mov %edi,%edx : int nc1 = owner->ncatrefs - 1; : int i; : : for (i = nc1; i >= 0; i--) : { : if (catrefs[i] == tuple) 0.00 : 79a7e6: 48 39 1c c6 cmp %rbx,(%rsi,%rax,8) 0.00 : 79a7ea: 74 2f je 79a81b 0.00 : 79a7ec: 0f 1f 40 00 nopl 0x0(%rax) : { : HeapTuple *catrefs = owner->catrefs; : int nc1 = owner->ncatrefs - 1; : int i; : : for (i = nc1; i >= 0; i--) 0.00 : 79a7f0: 83 ea 01 sub $0x1,%edx 0.00 : 79a7f3: 78 3b js 79a830 : { : if (catrefs[i] == tuple) 0.00 : 79a7f5: 48 63 ca movslq %edx,%rcx 0.00 : 79a7f8: 48 39 1c ce cmp %rbx,(%rsi,%rcx,8) 0.00 : 79a7fc: 75 f2 jne 79a7f0 : { : while (i < nc1) 0.00 : 79a7fe: 39 d7 cmp %edx,%edi 0.00 : 79a800: 7f 09 jg 79a80b 0.00 : 79a802: eb 17 jmp 79a81b 0.00 : 79a804: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79a808: 48 63 ca movslq %edx,%rcx : { : catrefs[i] = catrefs[i + 1]; 0.00 : 79a80b: 48 8b 44 ce 08 mov 0x8(%rsi,%rcx,8),%rax : i++; 0.00 : 79a810: 83 c2 01 add $0x1,%edx : : for (i = nc1; i >= 0; i--) : { : if (catrefs[i] == tuple) : { : while (i < nc1) 0.00 : 79a813: 39 d7 cmp %edx,%edi : { : catrefs[i] = catrefs[i + 1]; 0.00 : 79a815: 48 89 04 ce mov %rax,(%rsi,%rcx,8) : : for (i = nc1; i >= 0; i--) : { : if (catrefs[i] == tuple) : { : while (i < nc1) 0.00 : 79a819: 7f ed jg 79a808 : return; : } : } : elog(ERROR, "catcache reference %p is not owned by resource owner %s", : tuple, owner->name); : } 0.00 : 79a81b: 5b pop %rbx : while (i < nc1) : { : catrefs[i] = catrefs[i + 1]; : i++; : } : owner->ncatrefs = nc1; 0.00 : 79a81c: 41 89 bc 24 b0 00 00 mov %edi,0xb0(%r12) 0.00 : 79a823: 00 : return; : } : } : elog(ERROR, "catcache reference %p is not owned by resource owner %s", : tuple, owner->name); : } 0.00 : 79a824: 41 5c pop %r12 0.00 : 79a826: c9 leaveq 0.00 : 79a827: c3 retq 0.00 : 79a828: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79a82f: 00 : } : owner->ncatrefs = nc1; : return; : } : } : elog(ERROR, "catcache reference %p is not owned by resource owner %s", 0.00 : 79a830: ba 30 27 8e 00 mov $0x8e2730,%edx 0.00 : 79a835: be 07 03 00 00 mov $0x307,%esi 0.00 : 79a83a: bf 90 22 8e 00 mov $0x8e2290,%edi 0.00 : 79a83f: e8 dc 0b fe ff callq 77b420 0.00 : 79a844: 49 8b 4c 24 18 mov 0x18(%r12),%rcx 0.00 : 79a849: 48 89 da mov %rbx,%rdx 0.00 : 79a84c: be 48 24 8e 00 mov $0x8e2448,%esi 0.00 : 79a851: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79a856: 31 c0 xor %eax,%eax 0.00 : 79a858: e8 d3 09 fe ff callq 77b230 0.00 : 79a85d: e8 6e ec cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:909 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:961 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079f1e0 : : * pointing to garbage. Be careful not to attempt to use or free such : * pointers afterwards! : */ : void : tuplesort_end(Tuplesortstate *state) : { 0.00 : 79f1e0: 55 push %rbp 0.00 : 79f1e1: 48 89 e5 mov %rsp,%rbp 0.00 : 79f1e4: 41 55 push %r13 0.00 : 79f1e6: 41 54 push %r12 0.00 : 79f1e8: 53 push %rbx 0.00 : 79f1e9: 48 89 fb mov %rdi,%rbx 0.00 : 79f1ec: 48 83 ec 08 sub $0x8,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 79f1f0: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 79f1f4: 4c 8b 2d 65 b6 41 00 mov 0x41b665(%rip),%r13 # bba860 : : CurrentMemoryContext = context; 0.00 : 79f1fb: 48 89 05 5e b6 41 00 mov %rax,0x41b65e(%rip) # bba860 : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : : #ifdef TRACE_SORT : long spaceUsed; : : if (state->tapeset) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:909 50.00 : 79f202: 48 8b 7f 30 mov 0x30(%rdi),%rdi 0.00 : 79f206: 48 85 ff test %rdi,%rdi 0.00 : 79f209: 0f 84 b1 00 00 00 je 79f2c0 : spaceUsed = LogicalTapeSetBlocks(state->tapeset); 0.00 : 79f20f: e8 4c c4 ff ff callq 79b660 : * Delete temporary "tape" files, if any. : * : * Note: want to include this in reported total cost of sort, hence need : * for two #ifdef TRACE_SORT sections. : */ : if (state->tapeset) 0.00 : 79f214: 48 8b 7b 30 mov 0x30(%rbx),%rdi : : #ifdef TRACE_SORT : long spaceUsed; : : if (state->tapeset) : spaceUsed = LogicalTapeSetBlocks(state->tapeset); 0.00 : 79f218: 49 89 c4 mov %rax,%r12 : * Delete temporary "tape" files, if any. : * : * Note: want to include this in reported total cost of sort, hence need : * for two #ifdef TRACE_SORT sections. : */ : if (state->tapeset) 0.00 : 79f21b: 48 85 ff test %rdi,%rdi 0.00 : 79f21e: 74 05 je 79f225 : LogicalTapeSetClose(state->tapeset); 0.00 : 79f220: e8 8b d4 ff ff callq 79c6b0 : : #ifdef TRACE_SORT : if (trace_sort) 0.00 : 79f225: 80 3d b4 b6 41 00 00 cmpb $0x0,0x41b6b4(%rip) # bba8e0 0.00 : 79f22c: 74 42 je 79f270 : { : if (state->tapeset) 0.00 : 79f22e: 48 83 7b 30 00 cmpq $0x0,0x30(%rbx) 0.00 : 79f233: 0f 84 b7 00 00 00 je 79f2f0 : elog(LOG, "external sort ended, %ld disk blocks used: %s", 0.00 : 79f239: ba f9 2e 8e 00 mov $0x8e2ef9,%edx 0.00 : 79f23e: be a1 03 00 00 mov $0x3a1,%esi 0.00 : 79f243: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79f248: e8 d3 c1 fd ff callq 77b420 0.00 : 79f24d: 48 8d bb 48 01 00 00 lea 0x148(%rbx),%rdi 0.00 : 79f254: e8 37 68 ff ff callq 795a90 0.00 : 79f259: 4c 89 e2 mov %r12,%rdx 0.00 : 79f25c: 48 89 c1 mov %rax,%rcx 0.00 : 79f25f: be e8 2b 8e 00 mov $0x8e2be8,%esi 0.00 : 79f264: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 79f269: 31 c0 xor %eax,%eax 0.00 : 79f26b: e8 c0 bf fd ff callq 77b230 : */ : TRACE_POSTGRESQL_SORT_DONE(state->tapeset != NULL, 0L); : #endif : : /* Free any execution state created for CLUSTER case */ : if (state->estate != NULL) 0.00 : 79f270: 48 8b bb 10 01 00 00 mov 0x110(%rbx),%rdi 0.00 : 79f277: 48 85 ff test %rdi,%rdi 0.00 : 79f27a: 74 25 je 79f2a1 : { : ExprContext *econtext = GetPerTupleExprContext(state->estate); 0.00 : 79f27c: 48 8b 87 c8 00 00 00 mov 0xc8(%rdi),%rax 0.00 : 79f283: 48 85 c0 test %rax,%rax 0.00 : 79f286: 0f 84 a4 00 00 00 je 79f330 : : ExecDropSingleTupleTableSlot(econtext->ecxt_scantuple); 0.00 : 79f28c: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 79f290: e8 cb 50 e1 ff callq 5b4360 : FreeExecutorState(state->estate); 0.00 : 79f295: 48 8b bb 10 01 00 00 mov 0x110(%rbx),%rdi 0.00 : 79f29c: e8 6f 5f e1 ff callq 5b5210 0.00 : 79f2a1: 4c 89 2d b8 b5 41 00 mov %r13,0x41b5b8(%rip) # bba860 : : /* : * Free the per-sort memory context, thereby releasing all working memory, : * including the Tuplesortstate struct itself. : */ : MemoryContextDelete(state->sortcontext); 0.00 : 79f2a8: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } 0.00 : 79f2ac: 48 83 c4 08 add $0x8,%rsp 0.00 : 79f2b0: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:961 50.00 : 79f2b1: 41 5c pop %r12 0.00 : 79f2b3: 41 5d pop %r13 0.00 : 79f2b5: c9 leaveq : : /* : * Free the per-sort memory context, thereby releasing all working memory, : * including the Tuplesortstate struct itself. : */ : MemoryContextDelete(state->sortcontext); 0.00 : 79f2b6: e9 e5 98 ff ff jmpq 798ba0 0.00 : 79f2bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : long spaceUsed; : : if (state->tapeset) : spaceUsed = LogicalTapeSetBlocks(state->tapeset); : else : spaceUsed = (state->allowedMem - state->availMem + 1023) / 1024; 0.00 : 79f2c0: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 79f2c4: 48 05 ff 03 00 00 add $0x3ff,%rax 0.00 : 79f2ca: 48 2b 43 10 sub 0x10(%rbx),%rax 0.00 : 79f2ce: 48 8d 90 ff 03 00 00 lea 0x3ff(%rax),%rdx 0.00 : 79f2d5: 48 85 c0 test %rax,%rax 0.00 : 79f2d8: 49 89 c4 mov %rax,%r12 0.00 : 79f2db: 4c 0f 48 e2 cmovs %rdx,%r12 0.00 : 79f2df: 49 c1 fc 0a sar $0xa,%r12 0.00 : 79f2e3: e9 3d ff ff ff jmpq 79f225 0.00 : 79f2e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79f2ef: 00 : { : if (state->tapeset) : elog(LOG, "external sort ended, %ld disk blocks used: %s", : spaceUsed, pg_rusage_show(&state->ru_start)); : else : elog(LOG, "internal sort ended, %ld KB used: %s", 0.00 : 79f2f0: ba f9 2e 8e 00 mov $0x8e2ef9,%edx 0.00 : 79f2f5: be a4 03 00 00 mov $0x3a4,%esi 0.00 : 79f2fa: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79f2ff: e8 1c c1 fd ff callq 77b420 0.00 : 79f304: 48 8d bb 48 01 00 00 lea 0x148(%rbx),%rdi 0.00 : 79f30b: e8 80 67 ff ff callq 795a90 0.00 : 79f310: 4c 89 e2 mov %r12,%rdx 0.00 : 79f313: 48 89 c1 mov %rax,%rcx 0.00 : 79f316: be 18 2c 8e 00 mov $0x8e2c18,%esi 0.00 : 79f31b: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 79f320: 31 c0 xor %eax,%eax 0.00 : 79f322: e8 09 bf fd ff callq 77b230 0.00 : 79f327: e9 44 ff ff ff jmpq 79f270 0.00 : 79f32c: 0f 1f 40 00 nopl 0x0(%rax) : #endif : : /* Free any execution state created for CLUSTER case */ : if (state->estate != NULL) : { : ExprContext *econtext = GetPerTupleExprContext(state->estate); 0.00 : 79f330: e8 7b 62 e1 ff callq 5b55b0 0.00 : 79f335: 0f 1f 00 nopl (%rax) 0.00 : 79f338: e9 4f ff ff ff jmpq 79f28c Sorted summary for file /lib64/librt-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/librt-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000002300 <__do_global_dtors_aux>: 0.00 : 2300: 55 push %rbp 0.00 : 2301: 80 3d 98 5f 20 00 00 cmpb $0x0,0x205f98(%rip) # 2082a0 ??:0 50.00 : 2308: 48 89 e5 mov %rsp,%rbp 0.00 : 230b: 41 54 push %r12 0.00 : 230d: 53 push %rbx 0.00 : 230e: 75 62 jne 2372 <__do_global_dtors_aux+0x72> 0.00 : 2310: 48 83 3d e0 5c 20 00 cmpq $0x0,0x205ce0(%rip) # 207ff8 <_DYNAMIC+0x230> 0.00 : 2317: 00 0.00 : 2318: 74 0c je 2326 <__do_global_dtors_aux+0x26> 0.00 : 231a: 48 8b 3d df 5e 20 00 mov 0x205edf(%rip),%rdi # 208200 <__dso_handle> 50.00 : 2321: e8 8a ff ff ff callq 22b0 <__cxa_finalize@plt> 0.00 : 2326: 48 8d 05 7b 5a 20 00 lea 0x205a7b(%rip),%rax # 207da8 <__DTOR_END__> 0.00 : 232d: 4c 8d 25 6c 5a 20 00 lea 0x205a6c(%rip),%r12 # 207da0 <__DTOR_LIST__> 0.00 : 2334: 48 8b 15 6d 5f 20 00 mov 0x205f6d(%rip),%rdx # 2082a8 0.00 : 233b: 4c 29 e0 sub %r12,%rax 0.00 : 233e: 48 c1 f8 03 sar $0x3,%rax 0.00 : 2342: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 2346: 48 39 da cmp %rbx,%rdx 0.00 : 2349: 73 20 jae 236b <__do_global_dtors_aux+0x6b> 0.00 : 234b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2350: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 2354: 48 89 05 4d 5f 20 00 mov %rax,0x205f4d(%rip) # 2082a8 0.00 : 235b: 41 ff 14 c4 callq *(%r12,%rax,8) 0.00 : 235f: 48 8b 15 42 5f 20 00 mov 0x205f42(%rip),%rdx # 2082a8 0.00 : 2366: 48 39 da cmp %rbx,%rdx 0.00 : 2369: 72 e5 jb 2350 <__do_global_dtors_aux+0x50> 0.00 : 236b: c6 05 2e 5f 20 00 01 movb $0x1,0x205f2e(%rip) # 2082a0 0.00 : 2372: 5b pop %rbx 0.00 : 2373: 41 5c pop %r12 0.00 : 2375: c9 leaveq 0.00 : 2376: c3 retq 0.00 : 2377: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 237e: 00 00 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000115c0 : : * returns the display length of the word beginning s, using the : * specified encoding. : */ : int : PQdsplen(const char *s, int encoding) : { 0.00 : 115c0: 55 push %rbp 0.00 : 115c1: 89 f0 mov %esi,%eax : return pg_encoding_dsplen(encoding, s); 0.00 : 115c3: 48 89 fe mov %rdi,%rsi 0.00 : 115c6: 89 c7 mov %eax,%edi : * returns the display length of the word beginning s, using the : * specified encoding. : */ : int : PQdsplen(const char *s, int encoding) : { 0.00 : 115c8: 48 89 e5 mov %rsp,%rbp : return pg_encoding_dsplen(encoding, s); : } 0.00 : 115cb: c9 leaveq : * specified encoding. : */ : int : PQdsplen(const char *s, int encoding) : { : return pg_encoding_dsplen(encoding, s); ??:0 100.00 : 115cc: e9 1f c6 00 00 jmpq 1dbf0 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001c590 : : return 1; : } : : static int : pg_ascii_dsplen(const unsigned char *s) : { ??:0 20.00 : 1c590: 55 push %rbp : if (*s == '\0') 0.00 : 1c591: 0f b6 17 movzbl (%rdi),%edx 0.00 : 1c594: 31 c0 xor %eax,%eax : return 1; : } : : static int : pg_ascii_dsplen(const unsigned char *s) : { 0.00 : 1c596: 48 89 e5 mov %rsp,%rbp : if (*s == '\0') 20.00 : 1c599: 84 d2 test %dl,%dl 0.00 : 1c59b: 75 03 jne 1c5a0 : return 0; : if (*s < 0x20 || *s == 0x7f) : return -1; : : return 1; : } 0.00 : 1c59d: c9 leaveq 40.00 : 1c59e: c3 retq 0.00 : 1c59f: 90 nop : static int : pg_ascii_dsplen(const unsigned char *s) : { : if (*s == '\0') : return 0; : if (*s < 0x20 || *s == 0x7f) 0.00 : 1c5a0: 80 fa 1f cmp $0x1f,%dl 0.00 : 1c5a3: 76 0d jbe 1c5b2 0.00 : 1c5a5: 80 fa 7f cmp $0x7f,%dl 20.00 : 1c5a8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 1c5ad: 0f 1f 00 nopl (%rax) 0.00 : 1c5b0: 75 eb jne 1c59d 0.00 : 1c5b2: b8 ff ff ff ff mov $0xffffffff,%eax : return -1; : : return 1; : } 0.00 : 1c5b7: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000028430 : ??:0 20.00 : 28430: 41 57 push %r15 0.00 : 28432: 41 56 push %r14 0.00 : 28434: 41 55 push %r13 0.00 : 28436: 41 54 push %r12 0.00 : 28438: 55 push %rbp 0.00 : 28439: 53 push %rbx 0.00 : 2843a: 48 83 ec 28 sub $0x28,%rsp 0.00 : 2843e: 48 8b 1d 7b ab 34 00 mov 0x34ab7b(%rip),%rbx # 372fc0 0.00 : 28445: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 2844a: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : 2844f: 0f b7 43 04 movzwl 0x4(%rbx),%eax 0.00 : 28453: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 28457: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 2845c: 0f b7 43 06 movzwl 0x6(%rbx),%eax 0.00 : 28460: 48 8d 04 03 lea (%rbx,%rax,1),%rax 20.00 : 28464: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 28469: e8 02 8d 00 00 callq 31170 <__hash_string> 20.00 : 2846e: 44 0f b7 73 08 movzwl 0x8(%rbx),%r14d 0.00 : 28473: 31 d2 xor %edx,%edx 0.00 : 28475: 89 c6 mov %eax,%esi 0.00 : 28477: 41 f7 f6 div %r14d 40.00 : 2847a: 89 f0 mov %esi,%eax 0.00 : 2847c: 41 89 d4 mov %edx,%r12d 0.00 : 2847f: 41 8d 56 fe lea -0x2(%r14),%edx 0.00 : 28483: 89 d1 mov %edx,%ecx 0.00 : 28485: 31 d2 xor %edx,%edx 0.00 : 28487: f7 f1 div %ecx 0.00 : 28489: 48 8b 05 38 ab 34 00 mov 0x34ab38(%rip),%rax # 372fc8 0.00 : 28490: 41 89 c7 mov %eax,%r15d 0.00 : 28493: 8d 6a 01 lea 0x1(%rdx),%ebp 0.00 : 28496: 0f b7 53 04 movzwl 0x4(%rbx),%edx 0.00 : 2849a: 41 29 d7 sub %edx,%r15d 0.00 : 2849d: 42 8d 5c 25 00 lea 0x0(%rbp,%r12,1),%ebx 0.00 : 284a2: eb 12 jmp 284b6 0.00 : 284a4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 284a8: 01 eb add %ebp,%ebx 0.00 : 284aa: 41 01 ec add %ebp,%r12d 0.00 : 284ad: 89 d8 mov %ebx,%eax 0.00 : 284af: 29 e8 sub %ebp,%eax 0.00 : 284b1: 41 39 c6 cmp %eax,%r14d 0.00 : 284b4: 76 5a jbe 28510 0.00 : 284b6: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 284bb: 44 89 e0 mov %r12d,%eax 0.00 : 284be: 4c 8d 2c 81 lea (%rcx,%rax,4),%r13 0.00 : 284c2: 41 0f b7 55 00 movzwl 0x0(%r13),%edx 0.00 : 284c7: 66 85 d2 test %dx,%dx 0.00 : 284ca: 74 4c je 28518 0.00 : 284cc: 0f b7 c2 movzwl %dx,%eax 0.00 : 284cf: 41 39 c7 cmp %eax,%r15d 0.00 : 284d2: 76 d4 jbe 284a8 0.00 : 284d4: 0f b7 f2 movzwl %dx,%esi 0.00 : 284d7: 48 03 74 24 18 add 0x18(%rsp),%rsi 0.00 : 284dc: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 284e1: e8 6a 6c 05 00 callq 7f150 <__GI_strcmp> 0.00 : 284e6: 85 c0 test %eax,%eax 0.00 : 284e8: 75 be jne 284a8 0.00 : 284ea: 41 0f b7 45 02 movzwl 0x2(%r13),%eax 0.00 : 284ef: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : 284f4: 48 89 02 mov %rax,(%rdx) 0.00 : 284f7: 48 83 c4 28 add $0x28,%rsp 0.00 : 284fb: 31 c0 xor %eax,%eax 0.00 : 284fd: 5b pop %rbx 0.00 : 284fe: 5d pop %rbp 0.00 : 284ff: 41 5c pop %r12 0.00 : 28501: 41 5d pop %r13 0.00 : 28503: 41 5e pop %r14 0.00 : 28505: 41 5f pop %r15 0.00 : 28507: c3 retq 0.00 : 28508: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2850f: 00 0.00 : 28510: 45 29 f4 sub %r14d,%r12d 0.00 : 28513: eb 88 jmp 2849d 0.00 : 28515: 0f 1f 00 nopl (%rax) 0.00 : 28518: 48 83 c4 28 add $0x28,%rsp 0.00 : 2851c: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 28521: 5b pop %rbx 0.00 : 28522: 5d pop %rbp 0.00 : 28523: 41 5c pop %r12 0.00 : 28525: 41 5d pop %r13 0.00 : 28527: 41 5e pop %r14 0.00 : 28529: 41 5f pop %r15 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002fdb0 <_nl_normalize_codeset>: 0.00 : 2fdb0: 41 54 push %r12 0.00 : 2fdb2: 48 85 f6 test %rsi,%rsi 0.00 : 2fdb5: 49 89 fc mov %rdi,%r12 0.00 : 2fdb8: bf 04 00 00 00 mov $0x4,%edi 0.00 : 2fdbd: 55 push %rbp 0.00 : 2fdbe: 48 89 f5 mov %rsi,%rbp 0.00 : 2fdc1: 53 push %rbx 0.00 : 2fdc2: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 2fdc7: 0f 84 9d 00 00 00 je 2fe6a <_nl_normalize_codeset+0xba> 0.00 : 2fdcd: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi 0.00 : 2fdd4: 00 00 0.00 : 2fdd6: 48 8b 05 ab 1f 34 00 mov 0x341fab(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2fddd: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 2fde2: 31 c9 xor %ecx,%ecx 0.00 : 2fde4: 45 31 c9 xor %r9d,%r9d 0.00 : 2fde7: 48 8b 3d e2 1f 34 00 mov 0x341fe2(%rip),%rdi # 371dd0 <_DYNAMIC+0x270> 0.00 : 2fdee: 45 31 d2 xor %r10d,%r10d 0.00 : 2fdf1: 4c 8b 1c 06 mov (%rsi,%rax,1),%r11 0.00 : 2fdf5: eb 40 jmp 2fe37 <_nl_normalize_codeset+0x87> 0.00 : 2fdf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2fdfe: 00 00 0.00 : 2fe00: 41 0f b6 04 0c movzbl (%r12,%rcx,1),%eax 0.00 : 2fe05: 48 8b 14 3e mov (%rsi,%rdi,1),%rdx ??:0 20.00 : 2fe09: f6 04 42 08 testb $0x8,(%rdx,%rax,2) 20.00 : 2fe0d: 4c 8d 04 00 lea (%rax,%rax,1),%r8 0.00 : 2fe11: 74 1b je 2fe2e <_nl_normalize_codeset+0x7e> 0.00 : 2fe13: 41 83 c1 01 add $0x1,%r9d 0.00 : 2fe17: 48 85 d2 test %rdx,%rdx 0.00 : 2fe1a: 0f 84 10 01 00 00 je 2ff30 <_nl_normalize_codeset+0x180> 0.00 : 2fe20: 48 8b 04 3e mov (%rsi,%rdi,1),%rax 0.00 : 2fe24: 42 f6 44 00 01 04 testb $0x4,0x1(%rax,%r8,1) 0.00 : 2fe2a: 41 0f 45 da cmovne %r10d,%ebx 0.00 : 2fe2e: 48 83 c1 01 add $0x1,%rcx 0.00 : 2fe32: 48 39 cd cmp %rcx,%rbp 0.00 : 2fe35: 76 21 jbe 2fe58 <_nl_normalize_codeset+0xa8> 0.00 : 2fe37: 48 83 3c 3e 00 cmpq $0x0,(%rsi,%rdi,1) 0.00 : 2fe3c: 75 c2 jne 2fe00 <_nl_normalize_codeset+0x50> 0.00 : 2fe3e: 49 8b 03 mov (%r11),%rax 0.00 : 2fe41: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2fe45: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2fe4b: 48 89 04 3e mov %rax,(%rsi,%rdi,1) 0.00 : 2fe4f: eb af jmp 2fe00 <_nl_normalize_codeset+0x50> 0.00 : 2fe51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2fe58: 41 8d 41 01 lea 0x1(%r9),%eax 0.00 : 2fe5c: 85 db test %ebx,%ebx 0.00 : 2fe5e: 48 63 f8 movslq %eax,%rdi 0.00 : 2fe61: 74 07 je 2fe6a <_nl_normalize_codeset+0xba> 0.00 : 2fe63: 41 8d 41 04 lea 0x4(%r9),%eax 0.00 : 2fe67: 48 63 f8 movslq %eax,%rdi 20.00 : 2fe6a: e8 e1 e9 fe ff callq 1e850 0.00 : 2fe6f: 48 85 c0 test %rax,%rax 0.00 : 2fe72: 49 89 c2 mov %rax,%r10 0.00 : 2fe75: 0f 84 87 00 00 00 je 2ff02 <_nl_normalize_codeset+0x152> 0.00 : 2fe7b: 85 db test %ebx,%ebx 0.00 : 2fe7d: 49 89 c1 mov %rax,%r9 0.00 : 2fe80: 0f 85 fa 00 00 00 jne 2ff80 <_nl_normalize_codeset+0x1d0> 20.00 : 2fe86: 48 85 ed test %rbp,%rbp 0.00 : 2fe89: 74 73 je 2fefe <_nl_normalize_codeset+0x14e> 0.00 : 2fe8b: 45 31 c0 xor %r8d,%r8d 0.00 : 2fe8e: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi 0.00 : 2fe95: 00 00 0.00 : 2fe97: 48 8b 3d 32 1f 34 00 mov 0x341f32(%rip),%rdi # 371dd0 <_DYNAMIC+0x270> 0.00 : 2fe9e: eb 29 jmp 2fec9 <_nl_normalize_codeset+0x119> 0.00 : 2fea0: 48 8b 15 59 20 34 00 mov 0x342059(%rip),%rdx # 371f00 <_DYNAMIC+0x3a0> 0.00 : 2fea7: 48 83 3c 16 00 cmpq $0x0,(%rsi,%rdx,1) 0.00 : 2feac: 0f 84 9e 00 00 00 je 2ff50 <_nl_normalize_codeset+0x1a0> 0.00 : 2feb2: 48 8b 04 16 mov (%rsi,%rdx,1),%rax 20.00 : 2feb6: 8b 04 88 mov (%rax,%rcx,4),%eax 0.00 : 2feb9: 41 88 01 mov %al,(%r9) 0.00 : 2febc: 49 83 c1 01 add $0x1,%r9 0.00 : 2fec0: 49 83 c0 01 add $0x1,%r8 0.00 : 2fec4: 4c 39 c5 cmp %r8,%rbp 0.00 : 2fec7: 76 35 jbe 2fefe <_nl_normalize_codeset+0x14e> 0.00 : 2fec9: 48 83 3c 3e 00 cmpq $0x0,(%rsi,%rdi,1) 0.00 : 2fece: 74 40 je 2ff10 <_nl_normalize_codeset+0x160> 0.00 : 2fed0: 43 0f b6 14 04 movzbl (%r12,%r8,1),%edx 0.00 : 2fed5: 48 8b 04 3e mov (%rsi,%rdi,1),%rax 0.00 : 2fed9: 0f b6 ca movzbl %dl,%ecx 0.00 : 2fedc: f6 44 48 01 04 testb $0x4,0x1(%rax,%rcx,2) 0.00 : 2fee1: 75 bd jne 2fea0 <_nl_normalize_codeset+0xf0> 0.00 : 2fee3: 0f b6 c2 movzbl %dl,%eax 0.00 : 2fee6: 83 e8 30 sub $0x30,%eax 0.00 : 2fee9: 83 f8 09 cmp $0x9,%eax 0.00 : 2feec: 77 d2 ja 2fec0 <_nl_normalize_codeset+0x110> 0.00 : 2feee: 49 83 c0 01 add $0x1,%r8 0.00 : 2fef2: 41 88 11 mov %dl,(%r9) 0.00 : 2fef5: 49 83 c1 01 add $0x1,%r9 0.00 : 2fef9: 4c 39 c5 cmp %r8,%rbp 0.00 : 2fefc: 77 cb ja 2fec9 <_nl_normalize_codeset+0x119> 0.00 : 2fefe: 41 c6 01 00 movb $0x0,(%r9) 0.00 : 2ff02: 5b pop %rbx 0.00 : 2ff03: 5d pop %rbp 0.00 : 2ff04: 4c 89 d0 mov %r10,%rax 0.00 : 2ff07: 41 5c pop %r12 0.00 : 2ff09: c3 retq 0.00 : 2ff0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2ff10: 48 8b 05 71 1e 34 00 mov 0x341e71(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2ff17: 48 8b 04 06 mov (%rsi,%rax,1),%rax 0.00 : 2ff1b: 48 8b 00 mov (%rax),%rax 0.00 : 2ff1e: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2ff22: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2ff28: 48 89 04 3e mov %rax,(%rsi,%rdi,1) 0.00 : 2ff2c: eb a2 jmp 2fed0 <_nl_normalize_codeset+0x120> 0.00 : 2ff2e: 66 90 xchg %ax,%ax 0.00 : 2ff30: 49 8b 03 mov (%r11),%rax 0.00 : 2ff33: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2ff37: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2ff3d: 48 89 04 3e mov %rax,(%rsi,%rdi,1) 0.00 : 2ff41: 41 0f b6 04 0c movzbl (%r12,%rcx,1),%eax 0.00 : 2ff46: 4c 8d 04 00 lea (%rax,%rax,1),%r8 0.00 : 2ff4a: e9 d1 fe ff ff jmpq 2fe20 <_nl_normalize_codeset+0x70> 0.00 : 2ff4f: 90 nop 0.00 : 2ff50: 48 8b 05 31 1e 34 00 mov 0x341e31(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2ff57: 48 8b 04 06 mov (%rsi,%rax,1),%rax 0.00 : 2ff5b: 48 8b 00 mov (%rax),%rax 0.00 : 2ff5e: 48 8b 40 58 mov 0x58(%rax),%rax 0.00 : 2ff62: 48 05 00 02 00 00 add $0x200,%rax 0.00 : 2ff68: 48 89 04 16 mov %rax,(%rsi,%rdx,1) 0.00 : 2ff6c: 43 0f b6 0c 04 movzbl (%r12,%r8,1),%ecx 0.00 : 2ff71: e9 3c ff ff ff jmpq 2feb2 <_nl_normalize_codeset+0x102> 0.00 : 2ff76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 2ff7d: 00 00 00 0.00 : 2ff80: c7 00 69 73 6f 00 movl $0x6f7369,(%rax) 0.00 : 2ff86: 4c 8d 48 03 lea 0x3(%rax),%r9 0.00 : 2ff8a: e9 f7 fe ff ff jmpq 2fe86 <_nl_normalize_codeset+0xd6> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000031170 <__hash_string>: 33.33 : 31170: 31 c0 xor %eax,%eax 0.00 : 31172: eb 2b jmp 3119f <__hash_string+0x2f> 0.00 : 31174: 0f 1f 40 00 nopl 0x0(%rax) 33.33 : 31178: 48 89 c2 mov %rax,%rdx 0.00 : 3117b: 0f b6 c1 movzbl %cl,%eax 0.00 : 3117e: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 31182: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 31186: 48 89 c2 mov %rax,%rdx 0.00 : 31189: 81 e2 00 00 00 f0 and $0xf0000000,%edx 0.00 : 3118f: 74 0a je 3119b <__hash_string+0x2b> 0.00 : 31191: 48 31 d0 xor %rdx,%rax 0.00 : 31194: 48 c1 ea 18 shr $0x18,%rdx 0.00 : 31198: 48 31 d0 xor %rdx,%rax 0.00 : 3119b: 48 83 c7 01 add $0x1,%rdi 0.00 : 3119f: 0f b6 0f movzbl (%rdi),%ecx 33.33 : 311a2: 84 c9 test %cl,%cl 0.00 : 311a4: 75 d2 jne 31178 <__hash_string+0x8> 0.00 : 311a6: f3 c3 repz retq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000033630 : ??:0 50.00 : 33630: 48 85 ff test %rdi,%rdi 0.00 : 33633: 74 23 je 33658 0.00 : 33635: 85 f6 test %esi,%esi 0.00 : 33637: 7e 1f jle 33658 0.00 : 33639: 83 fe 40 cmp $0x40,%esi 0.00 : 3363c: 7f 1a jg 33658 0.00 : 3363e: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 33641: b8 01 00 00 00 mov $0x1,%eax 0.00 : 33646: 83 e1 3f and $0x3f,%ecx 0.00 : 33649: 48 d3 e0 shl %cl,%rax 0.00 : 3364c: 48 09 07 or %rax,(%rdi) 50.00 : 3364f: 31 c0 xor %eax,%eax 0.00 : 33651: c3 retq 0.00 : 33652: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 33658: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3365f: 00 00 0.00 : 33661: 48 8b 15 d0 e7 33 00 mov 0x33e7d0(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 33668: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 3366f: b8 ff ff ff ff mov $0xffffffff,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035830 : ??:0 33.33 : 35830: 48 8d 35 b1 cc 33 00 lea 0x33ccb1(%rip),%rsi # 3724e8 <__exit_funcs> 66.67 : 35837: 48 83 ec 08 sub $0x8,%rsp 0.00 : 3583b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 35840: e8 db fe ff ff callq 35720 <__run_exit_handlers> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000039d00 : 0.00 : 39d00: 41 57 push %r15 0.00 : 39d02: 49 89 d7 mov %rdx,%r15 0.00 : 39d05: 41 56 push %r14 0.00 : 39d07: 49 89 ce mov %rcx,%r14 0.00 : 39d0a: 41 55 push %r13 0.00 : 39d0c: 41 54 push %r12 0.00 : 39d0e: 41 89 f4 mov %esi,%r12d 0.00 : 39d11: 55 push %rbp 0.00 : 39d12: 48 89 fd mov %rdi,%rbp 0.00 : 39d15: 53 push %rbx 0.00 : 39d16: 48 83 ec 18 sub $0x18,%rsp 0.00 : 39d1a: 85 f6 test %esi,%esi 0.00 : 39d1c: 4c 89 44 24 10 mov %r8,0x10(%rsp) ??:0 33.33 : 39d21: 4c 8b 6c 24 58 mov 0x58(%rsp),%r13 0.00 : 39d26: 4c 8b 44 24 50 mov 0x50(%rsp),%r8 0.00 : 39d2b: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 39d32: 0f 8e 52 02 00 00 jle 39f8a 0.00 : 39d38: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 39d3c: 31 f6 xor %esi,%esi 0.00 : 39d3e: 31 db xor %ebx,%ebx 0.00 : 39d40: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 39d45: 0f 1f 00 nopl (%rax) 0.00 : 39d48: 0f b6 4d 00 movzbl 0x0(%rbp),%ecx 0.00 : 39d4c: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 39d4f: 3c 09 cmp $0x9,%al 0.00 : 39d51: 76 16 jbe 39d69 0.00 : 39d53: 4d 85 ed test %r13,%r13 0.00 : 39d56: 74 0a je 39d62 0.00 : 39d58: 41 3a 4d 00 cmp 0x0(%r13),%cl 0.00 : 39d5c: 0f 84 a6 00 00 00 je 39e08 0.00 : 39d62: 4c 01 c5 add %r8,%rbp 0.00 : 39d65: 0f b6 4d 00 movzbl 0x0(%rbp),%ecx 33.33 : 39d69: 48 8d 14 9b lea (%rbx,%rbx,4),%rdx 0.00 : 39d6d: 41 83 ec 01 sub $0x1,%r12d 0.00 : 39d71: 48 0f be c1 movsbq %cl,%rax 33.33 : 39d75: 48 83 c5 01 add $0x1,%rbp 0.00 : 39d79: 83 c6 01 add $0x1,%esi 0.00 : 39d7c: 45 85 e4 test %r12d,%r12d 0.00 : 39d7f: 48 8d 5c 50 d0 lea -0x30(%rax,%rdx,2),%rbx 0.00 : 39d84: 7e 2a jle 39db0 0.00 : 39d86: 83 fe 13 cmp $0x13,%esi 0.00 : 39d89: 75 bd jne 39d48 0.00 : 39d8b: 49 8b 16 mov (%r14),%rdx 0.00 : 39d8e: 48 85 d2 test %rdx,%rdx 0.00 : 39d91: 0f 85 b9 00 00 00 jne 39e50 0.00 : 39d97: 49 89 1f mov %rbx,(%r15) 0.00 : 39d9a: 40 30 f6 xor %sil,%sil 0.00 : 39d9d: 49 c7 06 01 00 00 00 movq $0x1,(%r14) 0.00 : 39da4: 31 db xor %ebx,%ebx 0.00 : 39da6: eb a0 jmp 39d48 0.00 : 39da8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 39daf: 00 0.00 : 39db0: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 39db5: 48 8b 38 mov (%rax),%rdi 0.00 : 39db8: 48 85 ff test %rdi,%rdi 0.00 : 39dbb: 7e 12 jle 39dcf 0.00 : 39dbd: b8 13 00 00 00 mov $0x13,%eax 0.00 : 39dc2: 29 f0 sub %esi,%eax 0.00 : 39dc4: 48 98 cltq 0.00 : 39dc6: 48 39 c7 cmp %rax,%rdi 0.00 : 39dc9: 0f 8e 11 01 00 00 jle 39ee0 0.00 : 39dcf: 48 8b 05 a2 7f 33 00 mov 0x337fa2(%rip),%rax # 371d78 <_DYNAMIC+0x218> 0.00 : 39dd6: 48 63 d6 movslq %esi,%rdx 0.00 : 39dd9: 48 8b 0c d0 mov (%rax,%rdx,8),%rcx 0.00 : 39ddd: 49 8b 16 mov (%r14),%rdx 0.00 : 39de0: 48 85 d2 test %rdx,%rdx 0.00 : 39de3: 0f 85 25 01 00 00 jne 39f0e 0.00 : 39de9: 49 89 1f mov %rbx,(%r15) 0.00 : 39dec: 49 c7 06 01 00 00 00 movq $0x1,(%r14) 0.00 : 39df3: 48 83 c4 18 add $0x18,%rsp 0.00 : 39df7: 48 89 e8 mov %rbp,%rax 0.00 : 39dfa: 5b pop %rbx 0.00 : 39dfb: 5d pop %rbp 0.00 : 39dfc: 41 5c pop %r12 0.00 : 39dfe: 41 5d pop %r13 0.00 : 39e00: 41 5e pop %r14 0.00 : 39e02: 41 5f pop %r15 0.00 : 39e04: c3 retq 0.00 : 39e05: 0f 1f 00 nopl (%rax) 0.00 : 39e08: 41 0f b6 45 01 movzbl 0x1(%r13),%eax 0.00 : 39e0d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 39e12: 84 c0 test %al,%al 0.00 : 39e14: 74 2d je 39e43 0.00 : 39e16: 3a 45 01 cmp 0x1(%rbp),%al 0.00 : 39e19: ba 02 00 00 00 mov $0x2,%edx 0.00 : 39e1e: 74 19 je 39e39 0.00 : 39e20: e9 3d ff ff ff jmpq 39d62 0.00 : 39e25: 0f 1f 00 nopl (%rax) 0.00 : 39e28: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 39e2d: 48 83 c2 01 add $0x1,%rdx 0.00 : 39e31: 38 c1 cmp %al,%cl 0.00 : 39e33: 0f 85 29 ff ff ff jne 39d62 0.00 : 39e39: 41 0f b6 4c 15 00 movzbl 0x0(%r13,%rdx,1),%ecx 0.00 : 39e3f: 84 c9 test %cl,%cl 0.00 : 39e41: 75 e5 jne 39e28 0.00 : 39e43: 48 01 d5 add %rdx,%rbp 0.00 : 39e46: 0f b6 4d 00 movzbl 0x0(%rbp),%ecx 0.00 : 39e4a: e9 1a ff ff ff jmpq 39d69 0.00 : 39e4f: 90 nop 0.00 : 39e50: 48 b9 00 00 e8 89 04 movabs $0x8ac7230489e80000,%rcx 0.00 : 39e57: 23 c7 8a 0.00 : 39e5a: 4c 89 fe mov %r15,%rsi 0.00 : 39e5d: 4c 89 ff mov %r15,%rdi 0.00 : 39e60: 4c 89 04 24 mov %r8,(%rsp) 0.00 : 39e64: e8 d7 8b 00 00 callq 42a40 <__mpn_mul_1> 0.00 : 39e69: 49 8b 17 mov (%r15),%rdx 0.00 : 39e6c: 48 89 c7 mov %rax,%rdi 0.00 : 39e6f: 49 8b 36 mov (%r14),%rsi 0.00 : 39e72: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 39e77: 4c 8b 04 24 mov (%rsp),%r8 0.00 : 39e7b: 48 8d 04 13 lea (%rbx,%rdx,1),%rax 0.00 : 39e7f: 48 39 c2 cmp %rax,%rdx 0.00 : 39e82: 49 89 07 mov %rax,(%r15) 0.00 : 39e85: 76 27 jbe 39eae 0.00 : 39e87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 39e8e: 00 00 0.00 : 39e90: 48 83 ee 01 sub $0x1,%rsi 0.00 : 39e94: 0f 84 df 00 00 00 je 39f79 0.00 : 39e9a: 48 8b 01 mov (%rcx),%rax 0.00 : 39e9d: 48 83 c1 08 add $0x8,%rcx 0.00 : 39ea1: 48 83 c0 01 add $0x1,%rax 0.00 : 39ea5: 48 85 c0 test %rax,%rax 0.00 : 39ea8: 48 89 41 f8 mov %rax,-0x8(%rcx) 0.00 : 39eac: 74 e2 je 39e90 0.00 : 39eae: 31 c0 xor %eax,%eax 0.00 : 39eb0: 48 89 c2 mov %rax,%rdx 0.00 : 39eb3: 31 f6 xor %esi,%esi 0.00 : 39eb5: 31 db xor %ebx,%ebx 0.00 : 39eb7: 48 01 fa add %rdi,%rdx 0.00 : 39eba: 0f 84 88 fe ff ff je 39d48 0.00 : 39ec0: 49 8b 06 mov (%r14),%rax 0.00 : 39ec3: 48 83 f8 13 cmp $0x13,%rax 0.00 : 39ec7: 0f 8f dc 00 00 00 jg 39fa9 0.00 : 39ecd: 49 89 14 c7 mov %rdx,(%r15,%rax,8) 0.00 : 39ed1: 31 f6 xor %esi,%esi 0.00 : 39ed3: 49 83 06 01 addq $0x1,(%r14) 0.00 : 39ed7: 31 db xor %ebx,%ebx 0.00 : 39ed9: e9 6a fe ff ff jmpq 39d48 0.00 : 39ede: 66 90 xchg %ax,%ax 0.00 : 39ee0: 48 8b 15 91 7e 33 00 mov 0x337e91(%rip),%rdx # 371d78 <_DYNAMIC+0x218> 0.00 : 39ee7: 48 63 c6 movslq %esi,%rax 0.00 : 39eea: 48 01 f8 add %rdi,%rax 0.00 : 39eed: 48 8b 0c c2 mov (%rdx,%rax,8),%rcx 0.00 : 39ef1: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 39ef6: 48 0f af 1c fa imul (%rdx,%rdi,8),%rbx 0.00 : 39efb: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 39f02: 49 8b 16 mov (%r14),%rdx 0.00 : 39f05: 48 85 d2 test %rdx,%rdx 0.00 : 39f08: 0f 84 db fe ff ff je 39de9 0.00 : 39f0e: 4c 89 fe mov %r15,%rsi 0.00 : 39f11: 4c 89 ff mov %r15,%rdi 0.00 : 39f14: e8 27 8b 00 00 callq 42a40 <__mpn_mul_1> 0.00 : 39f19: 49 8b 17 mov (%r15),%rdx 0.00 : 39f1c: 48 89 c7 mov %rax,%rdi 0.00 : 39f1f: 49 8b 36 mov (%r14),%rsi 0.00 : 39f22: 49 8d 4f 08 lea 0x8(%r15),%rcx 0.00 : 39f26: 48 8d 04 13 lea (%rbx,%rdx,1),%rax 0.00 : 39f2a: 48 39 c2 cmp %rax,%rdx 0.00 : 39f2d: 49 89 07 mov %rax,(%r15) 0.00 : 39f30: 76 20 jbe 39f52 0.00 : 39f32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 39f38: 48 83 ee 01 sub $0x1,%rsi 0.00 : 39f3c: 74 45 je 39f83 0.00 : 39f3e: 48 8b 01 mov (%rcx),%rax 0.00 : 39f41: 48 83 c1 08 add $0x8,%rcx 0.00 : 39f45: 48 83 c0 01 add $0x1,%rax 0.00 : 39f49: 48 85 c0 test %rax,%rax 0.00 : 39f4c: 48 89 41 f8 mov %rax,-0x8(%rcx) 0.00 : 39f50: 74 e6 je 39f38 0.00 : 39f52: 31 c0 xor %eax,%eax 0.00 : 39f54: 48 89 c2 mov %rax,%rdx 0.00 : 39f57: 48 01 fa add %rdi,%rdx 0.00 : 39f5a: 0f 84 93 fe ff ff je 39df3 0.00 : 39f60: 49 8b 06 mov (%r14),%rax 0.00 : 39f63: 48 83 f8 13 cmp $0x13,%rax 0.00 : 39f67: 7f 5f jg 39fc8 0.00 : 39f69: 49 89 14 c7 mov %rdx,(%r15,%rax,8) 0.00 : 39f6d: 48 83 c0 01 add $0x1,%rax 0.00 : 39f71: 49 89 06 mov %rax,(%r14) 0.00 : 39f74: e9 7a fe ff ff jmpq 39df3 0.00 : 39f79: b8 01 00 00 00 mov $0x1,%eax 0.00 : 39f7e: e9 2d ff ff ff jmpq 39eb0 0.00 : 39f83: b8 01 00 00 00 mov $0x1,%eax 0.00 : 39f88: eb ca jmp 39f54 0.00 : 39f8a: 48 8d 0d 7a 0c 10 00 lea 0x100c7a(%rip),%rcx # 13ac0b <__PRETTY_FUNCTION__.12046> 0.00 : 39f91: 48 8d 35 88 0c 10 00 lea 0x100c88(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 39f98: 48 8d 3d ec 0b 10 00 lea 0x100bec(%rip),%rdi # 13ab8b <__PRETTY_FUNCTION__.8908+0xd> 0.00 : 39f9f: ba 25 01 00 00 mov $0x125,%edx 0.00 : 39fa4: e8 77 19 ff ff callq 2b920 <__assert_fail> 0.00 : 39fa9: 48 8d 0d 5b 0c 10 00 lea 0x100c5b(%rip),%rcx # 13ac0b <__PRETTY_FUNCTION__.12046> 0.00 : 39fb0: 48 8d 35 69 0c 10 00 lea 0x100c69(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 39fb7: 48 8d 3d c2 45 10 00 lea 0x1045c2(%rip),%rdi # 13e580 <__PRETTY_FUNCTION__.11129+0xba7> 0.00 : 39fbe: ba 36 01 00 00 mov $0x136,%edx 0.00 : 39fc3: e8 58 19 ff ff callq 2b920 <__assert_fail> 0.00 : 39fc8: 48 8d 0d 3c 0c 10 00 lea 0x100c3c(%rip),%rcx # 13ac0b <__PRETTY_FUNCTION__.12046> 0.00 : 39fcf: 48 8d 35 4a 0c 10 00 lea 0x100c4a(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 39fd6: 48 8d 3d a3 45 10 00 lea 0x1045a3(%rip),%rdi # 13e580 <__PRETTY_FUNCTION__.11129+0xba7> 0.00 : 39fdd: ba 6e 01 00 00 mov $0x16e,%edx 0.00 : 39fe2: e8 39 19 ff ff callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000039ff0 : ??:0 33.33 : 39ff0: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 39ff5: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 39ffa: 44 89 cd mov %r9d,%ebp 0.00 : 39ffd: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 3a002: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 3a007: 49 89 cc mov %rcx,%r12 0.00 : 3a00a: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 3a00f: 48 83 ec 28 sub $0x28,%rsp 0.00 : 3a013: 48 81 fe 02 fc ff ff cmp $0xfffffffffffffc02,%rsi 0.00 : 3a01a: 49 89 fd mov %rdi,%r13 0.00 : 3a01d: 41 89 d6 mov %edx,%r14d 0.00 : 3a020: 4c 89 c1 mov %r8,%rcx 0.00 : 3a023: 7d 5b jge 3a080 0.00 : 3a025: 48 81 fe cd fb ff ff cmp $0xfffffffffffffbcd,%rsi 0.00 : 3a02c: 0f 8c 9e 00 00 00 jl 3a0d0 0.00 : 3a032: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3a037: 48 c7 c3 02 fc ff ff mov $0xfffffffffffffc02,%rbx 0.00 : 3a03e: 48 d3 e0 shl %cl,%rax 0.00 : 3a041: 48 29 f3 sub %rsi,%rbx 0.00 : 3a044: 48 83 e8 01 sub $0x1,%rax 0.00 : 3a048: 4c 85 e0 test %r12,%rax 0.00 : 3a04b: 0f 95 c0 setne %al 0.00 : 3a04e: 0f b6 c0 movzbl %al,%eax 0.00 : 3a051: 09 c5 or %eax,%ebp 0.00 : 3a053: 48 83 fb 35 cmp $0x35,%rbx 0.00 : 3a057: 0f 84 93 00 00 00 je 3a0f0 0.00 : 3a05d: 89 d9 mov %ebx,%ecx 0.00 : 3a05f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3a064: 48 89 fe mov %rdi,%rsi 0.00 : 3a067: 4c 8b 27 mov (%rdi),%r12 0.00 : 3a06a: e8 91 85 00 00 callq 42600 <__mpn_rshift> 0.00 : 3a06f: 8d 4b ff lea -0x1(%rbx),%ecx 0.00 : 3a072: e9 92 00 00 00 jmpq 3a109 0.00 : 3a077: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a07e: 00 00 0.00 : 3a080: 48 81 fe 00 04 00 00 cmp $0x400,%rsi 0.00 : 3a087: 0f 8e 9a 00 00 00 jle 3a127 0.00 : 3a08d: 45 85 f6 test %r14d,%r14d 0.00 : 3a090: 75 2e jne 3a0c0 0.00 : 3a092: f2 0f 10 05 8e 99 10 movsd 0x10998e(%rip),%xmm0 # 143a28 0.00 : 3a099: 00 0.00 : 3a09a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 3a09e: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 3a0a3: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 3a0a8: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 3a0ad: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 3a0b2: 48 83 c4 28 add $0x28,%rsp 0.00 : 3a0b6: c3 retq 0.00 : 3a0b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a0be: 00 00 0.00 : 3a0c0: f2 0f 10 05 98 99 10 movsd 0x109998(%rip),%xmm0 # 143a60 0.00 : 3a0c7: 00 0.00 : 3a0c8: eb d0 jmp 3a09a 0.00 : 3a0ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a0d0: 48 8b 15 61 7d 33 00 mov 0x337d61(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3a0d7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3a0de: 00 00 0.00 : 3a0e0: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3a0e4: c7 04 10 21 00 00 00 movl $0x21,(%rax,%rdx,1) 0.00 : 3a0eb: eb ad jmp 3a09a 0.00 : 3a0ed: 0f 1f 00 nopl (%rax) 0.00 : 3a0f0: 4c 8b 27 mov (%rdi),%r12 0.00 : 3a0f3: 31 c0 xor %eax,%eax 0.00 : 3a0f5: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 3a0fc: b9 34 00 00 00 mov $0x34,%ecx 0.00 : 3a101: 4d 85 e4 test %r12,%r12 0.00 : 3a104: 0f 95 c0 setne %al 0.00 : 3a107: 09 c5 or %eax,%ebp 0.00 : 3a109: 48 8b 15 28 7d 33 00 mov 0x337d28(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3a110: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3a117: 00 00 0.00 : 3a119: 48 c7 c6 01 fc ff ff mov $0xfffffffffffffc01,%rsi 0.00 : 3a120: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 33.33 : 3a127: 4c 89 e0 mov %r12,%rax 0.00 : 3a12a: 89 f7 mov %esi,%edi 0.00 : 3a12c: 48 d3 e8 shr %cl,%rax 0.00 : 3a12f: a8 01 test $0x1,%al 0.00 : 3a131: 74 2e je 3a161 0.00 : 3a133: 85 ed test %ebp,%ebp 0.00 : 3a135: 74 59 je 3a190 0.00 : 3a137: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 3a13b: 48 83 c2 01 add $0x1,%rdx 33.33 : 3a13f: 48 b8 00 00 00 00 00 movabs $0x20000000000000,%rax 0.00 : 3a146: 00 20 00 0.00 : 3a149: 48 85 c2 test %rax,%rdx 0.00 : 3a14c: 49 89 55 00 mov %rdx,0x0(%r13) 0.00 : 3a150: 75 5e jne 3a1b0 0.00 : 3a152: 48 81 fe 01 fc ff ff cmp $0xfffffffffffffc01,%rsi 0.00 : 3a159: 89 f7 mov %esi,%edi 0.00 : 3a15b: 0f 84 8f 00 00 00 je 3a1f0 0.00 : 3a161: 44 89 f2 mov %r14d,%edx 0.00 : 3a164: 89 fe mov %edi,%esi 0.00 : 3a166: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 3a16a: 4c 89 ef mov %r13,%rdi 0.00 : 3a16d: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 3a172: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 3a177: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 3a17c: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 3a181: 48 83 c4 28 add $0x28,%rsp 0.00 : 3a185: e9 c6 95 00 00 jmpq 43750 <__mpn_construct_double> 0.00 : 3a18a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a190: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 3a194: f6 c2 01 test $0x1,%dl 0.00 : 3a197: 75 a2 jne 3a13b 0.00 : 3a199: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3a19e: 48 d3 e0 shl %cl,%rax 0.00 : 3a1a1: 48 83 e8 01 sub $0x1,%rax 0.00 : 3a1a5: 4c 85 e0 test %r12,%rax 0.00 : 3a1a8: 74 b7 je 3a161 0.00 : 3a1aa: eb 8f jmp 3a13b 0.00 : 3a1ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 3a1b0: 48 8d 5e 01 lea 0x1(%rsi),%rbx 0.00 : 3a1b4: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 3a1b9: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3a1be: 4c 89 ee mov %r13,%rsi 0.00 : 3a1c1: 4c 89 ef mov %r13,%rdi 0.00 : 3a1c4: e8 37 84 00 00 callq 42600 <__mpn_rshift> 0.00 : 3a1c9: 48 b8 00 00 00 00 00 movabs $0x10000000000000,%rax 0.00 : 3a1d0: 00 10 00 0.00 : 3a1d3: 49 09 45 00 or %rax,0x0(%r13) 0.00 : 3a1d7: 48 81 fb 01 04 00 00 cmp $0x401,%rbx 0.00 : 3a1de: 0f 84 a9 fe ff ff je 3a08d 0.00 : 3a1e4: 89 df mov %ebx,%edi 0.00 : 3a1e6: e9 76 ff ff ff jmpq 3a161 0.00 : 3a1eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a1f0: 48 b8 00 00 00 00 00 movabs $0x10000000000000,%rax 0.00 : 3a1f7: 00 10 00 0.00 : 3a1fa: 48 21 c2 and %rax,%rdx 0.00 : 3a1fd: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 3a201: 19 ff sbb %edi,%edi 0.00 : 3a203: 81 ef fe 03 00 00 sub $0x3fe,%edi 0.00 : 3a209: e9 53 ff ff ff jmpq 3a161 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000004ee60 : 0.00 : 4ee60: 48 81 ec d8 00 00 00 sub $0xd8,%rsp 50.00 : 4ee67: 48 89 54 24 30 mov %rdx,0x30(%rsp) 25.00 : 4ee6c: 0f b6 d0 movzbl %al,%edx 0.00 : 4ee6f: 48 89 4c 24 38 mov %rcx,0x38(%rsp) 0.00 : 4ee74: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : 4ee7b: 00 0.00 : 4ee7c: 48 8d 15 37 00 00 00 lea 0x37(%rip),%rdx # 4eeba 0.00 : 4ee83: 4c 89 44 24 40 mov %r8,0x40(%rsp) 25.00 : 4ee88: 4c 89 4c 24 48 mov %r9,0x48(%rsp) 0.00 : 4ee8d: 48 29 c2 sub %rax,%rdx 0.00 : 4ee90: 48 8d 84 24 cf 00 00 lea 0xcf(%rsp),%rax 0.00 : 4ee97: 00 0.00 : 4ee98: ff e2 jmpq *%rdx 0.00 : 4ee9a: 0f 29 78 f1 movaps %xmm7,-0xf(%rax) 0.00 : 4ee9e: 0f 29 70 e1 movaps %xmm6,-0x1f(%rax) 0.00 : 4eea2: 0f 29 68 d1 movaps %xmm5,-0x2f(%rax) 0.00 : 4eea6: 0f 29 60 c1 movaps %xmm4,-0x3f(%rax) 0.00 : 4eeaa: 0f 29 58 b1 movaps %xmm3,-0x4f(%rax) 0.00 : 4eeae: 0f 29 50 a1 movaps %xmm2,-0x5f(%rax) 0.00 : 4eeb2: 0f 29 48 91 movaps %xmm1,-0x6f(%rax) 0.00 : 4eeb6: 0f 29 40 81 movaps %xmm0,-0x7f(%rax) 0.00 : 4eeba: 48 8d 84 24 e0 00 00 lea 0xe0(%rsp),%rax 0.00 : 4eec1: 00 0.00 : 4eec2: 48 89 e2 mov %rsp,%rdx 0.00 : 4eec5: c7 04 24 10 00 00 00 movl $0x10,(%rsp) 0.00 : 4eecc: c7 44 24 04 30 00 00 movl $0x30,0x4(%rsp) 0.00 : 4eed3: 00 0.00 : 4eed4: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 4eed9: 48 8d 44 24 20 lea 0x20(%rsp),%rax 0.00 : 4eede: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 4eee3: e8 d8 53 ff ff callq 442c0 <_IO_vfprintf> 0.00 : 4eee8: 48 81 c4 d8 00 00 00 add $0xd8,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000066b00 <_IO_fgets>: 0.00 : 66b00: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 66b05: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 66b0a: 48 89 d3 mov %rdx,%rbx 0.00 : 66b0d: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 66b12: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 66b17: 48 83 ec 28 sub $0x28,%rsp 0.00 : 66b1b: 85 f6 test %esi,%esi 0.00 : 66b1d: 48 89 fd mov %rdi,%rbp 0.00 : 66b20: 41 89 f5 mov %esi,%r13d 0.00 : 66b23: 0f 8e f7 00 00 00 jle 66c20 <_IO_fgets+0x120> 0.00 : 66b29: 83 fe 01 cmp $0x1,%esi 0.00 : 66b2c: 0f 84 4a 01 00 00 je 66c7c <_IO_fgets+0x17c> 0.00 : 66b32: 8b 02 mov (%rdx),%eax 0.00 : 66b34: 66 85 c0 test %ax,%ax 0.00 : 66b37: 78 5c js 66b95 <_IO_fgets+0x95> 0.00 : 66b39: 4c 8b 92 88 00 00 00 mov 0x88(%rdx),%r10 0.00 : 66b40: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 66b47: 00 00 0.00 : 66b49: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 66b4d: 74 3f je 66b8e <_IO_fgets+0x8e> 50.00 : 66b4f: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 66b55: 31 d2 xor %edx,%edx 0.00 : 66b57: 44 89 e6 mov %r12d,%esi 0.00 : 66b5a: 89 d0 mov %edx,%eax 0.00 : 66b5c: 83 3d 51 0b 31 00 00 cmpl $0x0,0x310b51(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66b63: 74 0d je 66b72 <_IO_fgets+0x72> 0.00 : 66b65: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 66b6a: 0f 85 68 01 00 00 jne 66cd8 <_L_lock_51> 0.00 : 66b70: eb 0a jmp 66b7c <_IO_fgets+0x7c> 0.00 : 66b72: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : 66b76: 0f 85 5c 01 00 00 jne 66cd8 <_L_lock_51> 0.00 : 66b7c: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 66b83: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 66b87: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 66b8e: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : 66b93: 8b 03 mov (%rbx),%eax 0.00 : 66b95: 41 8d 55 ff lea -0x1(%r13),%edx 0.00 : 66b99: 41 89 c4 mov %eax,%r12d 0.00 : 66b9c: 83 e0 df and $0xffffffdf,%eax 0.00 : 66b9f: 89 03 mov %eax,(%rbx) 0.00 : 66ba1: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 66ba7: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 66bac: 48 63 d2 movslq %edx,%rdx 0.00 : 66baf: 48 89 ee mov %rbp,%rsi 0.00 : 66bb2: 48 89 df mov %rbx,%rdi 0.00 : 66bb5: 41 83 e4 20 and $0x20,%r12d 0.00 : 66bb9: e8 b2 12 00 00 callq 67e70 <_IO_getline> 0.00 : 66bbe: 48 85 c0 test %rax,%rax 0.00 : 66bc1: 48 89 c1 mov %rax,%rcx 0.00 : 66bc4: 75 4a jne 66c10 <_IO_fgets+0x110> 0.00 : 66bc6: 45 31 c0 xor %r8d,%r8d 0.00 : 66bc9: 44 89 e0 mov %r12d,%eax 0.00 : 66bcc: 0b 03 or (%rbx),%eax 0.00 : 66bce: 66 85 c0 test %ax,%ax 0.00 : 66bd1: 89 03 mov %eax,(%rbx) 0.00 : 66bd3: 78 14 js 66be9 <_IO_fgets+0xe9> 0.00 : 66bd5: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 66bdc: 8b 42 04 mov 0x4(%rdx),%eax 50.00 : 66bdf: 83 e8 01 sub $0x1,%eax 0.00 : 66be2: 85 c0 test %eax,%eax 0.00 : 66be4: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 66be7: 74 3f je 66c28 <_IO_fgets+0x128> 0.00 : 66be9: 4c 89 c5 mov %r8,%rbp 0.00 : 66bec: 48 89 e8 mov %rbp,%rax 0.00 : 66bef: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 66bf4: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 66bf9: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 66bfe: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 66c03: 48 83 c4 28 add $0x28,%rsp 0.00 : 66c07: c3 retq 0.00 : 66c08: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 66c0f: 00 0.00 : 66c10: f6 03 20 testb $0x20,(%rbx) 0.00 : 66c13: 75 4b jne 66c60 <_IO_fgets+0x160> 0.00 : 66c15: c6 44 0d 00 00 movb $0x0,0x0(%rbp,%rcx,1) 0.00 : 66c1a: 49 89 e8 mov %rbp,%r8 0.00 : 66c1d: eb aa jmp 66bc9 <_IO_fgets+0xc9> 0.00 : 66c1f: 90 nop 0.00 : 66c20: 31 ed xor %ebp,%ebp 0.00 : 66c22: eb c8 jmp 66bec <_IO_fgets+0xec> 0.00 : 66c24: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 66c28: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 66c2f: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 66c36: 00 0.00 : 66c37: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 66c3e: 83 3d 6f 0a 31 00 00 cmpl $0x0,0x310a6f(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66c45: 74 0b je 66c52 <_IO_fgets+0x152> 0.00 : 66c47: f0 ff 0a lock decl (%rdx) 0.00 : 66c4a: 0f 85 a3 00 00 00 jne 66cf3 <_L_unlock_200> 0.00 : 66c50: eb 08 jmp 66c5a <_IO_fgets+0x15a> 0.00 : 66c52: ff 0a decl (%rdx) 0.00 : 66c54: 0f 85 99 00 00 00 jne 66cf3 <_L_unlock_200> 0.00 : 66c5a: 4c 89 c5 mov %r8,%rbp 0.00 : 66c5d: eb 8d jmp 66bec <_IO_fgets+0xec> 0.00 : 66c5f: 90 nop 0.00 : 66c60: 48 8b 15 d1 b1 30 00 mov 0x30b1d1(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 66c67: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 66c6e: 00 00 0.00 : 66c70: 83 3c 10 0b cmpl $0xb,(%rax,%rdx,1) 0.00 : 66c74: 0f 85 4c ff ff ff jne 66bc6 <_IO_fgets+0xc6> 0.00 : 66c7a: eb 99 jmp 66c15 <_IO_fgets+0x115> 0.00 : 66c7c: c6 07 00 movb $0x0,(%rdi) 0.00 : 66c7f: e9 68 ff ff ff jmpq 66bec <_IO_fgets+0xec> 0.00 : 66c84: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 66c88: 49 89 c0 mov %rax,%r8 0.00 : 66c8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 66c90: 78 3e js 66cd0 <_IO_fgets+0x1d0> 0.00 : 66c92: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 66c99: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 66c9c: 83 e8 01 sub $0x1,%eax 0.00 : 66c9f: 85 c0 test %eax,%eax 0.00 : 66ca1: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 66ca4: 75 2a jne 66cd0 <_IO_fgets+0x1d0> 0.00 : 66ca6: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 66cad: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 66cb4: 00 0.00 : 66cb5: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 66cbc: 83 3d f1 09 31 00 00 cmpl $0x0,0x3109f1(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66cc3: 74 07 je 66ccc <_IO_fgets+0x1cc> 0.00 : 66cc5: f0 ff 0a lock decl (%rdx) 0.00 : 66cc8: 75 44 jne 66d0e <_L_unlock_258> 0.00 : 66cca: eb 04 jmp 66cd0 <_IO_fgets+0x1d0> 0.00 : 66ccc: ff 0a decl (%rdx) 0.00 : 66cce: 75 3e jne 66d0e <_L_unlock_258> 0.00 : 66cd0: 4c 89 c7 mov %r8,%rdi 0.00 : 66cd3: e8 88 82 fb ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000068240 <_IO_padn>: 0.00 : 68240: 41 57 push %r15 0.00 : 68242: 49 89 d7 mov %rdx,%r15 0.00 : 68245: 41 56 push %r14 0.00 : 68247: 4c 8d 35 e2 dd 0c 00 lea 0xcdde2(%rip),%r14 # 136030 33.33 : 6824e: 41 55 push %r13 0.00 : 68250: 49 89 fd mov %rdi,%r13 0.00 : 68253: 41 54 push %r12 0.00 : 68255: 55 push %rbp 33.33 : 68256: 53 push %rbx 0.00 : 68257: 48 83 ec 18 sub $0x18,%rsp 0.00 : 6825b: 83 fe 20 cmp $0x20,%esi 0.00 : 6825e: 74 2e je 6828e <_IO_padn+0x4e> 0.00 : 68260: 83 fe 30 cmp $0x30,%esi 0.00 : 68263: 4c 8d 35 d6 dd 0c 00 lea 0xcddd6(%rip),%r14 # 136040 0.00 : 6826a: 74 22 je 6828e <_IO_padn+0x4e> 0.00 : 6826c: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 68271: 48 8d 4c 24 ff lea -0x1(%rsp),%rcx 0.00 : 68276: 89 f2 mov %esi,%edx 0.00 : 68278: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6827f: 00 0.00 : 68280: 88 10 mov %dl,(%rax) 0.00 : 68282: 48 83 e8 01 sub $0x1,%rax 0.00 : 68286: 48 39 c8 cmp %rcx,%rax 0.00 : 68289: 75 f5 jne 68280 <_IO_padn+0x40> 0.00 : 6828b: 49 89 e6 mov %rsp,%r14 0.00 : 6828e: 45 31 e4 xor %r12d,%r12d 0.00 : 68291: 31 db xor %ebx,%ebx 0.00 : 68293: 31 c0 xor %eax,%eax 0.00 : 68295: 41 83 ff 0f cmp $0xf,%r15d 0.00 : 68299: 44 89 fd mov %r15d,%ebp 0.00 : 6829c: 7f 18 jg 682b6 <_IO_padn+0x76> 0.00 : 6829e: eb 53 jmp 682f3 <_IO_padn+0xb3> 0.00 : 682a0: 48 83 c3 01 add $0x1,%rbx 0.00 : 682a4: 44 89 fa mov %r15d,%edx 0.00 : 682a7: 83 ed 10 sub $0x10,%ebp 0.00 : 682aa: 89 d8 mov %ebx,%eax 0.00 : 682ac: c1 e0 04 shl $0x4,%eax 0.00 : 682af: 29 c2 sub %eax,%edx 0.00 : 682b1: 83 fa 0f cmp $0xf,%edx 0.00 : 682b4: 7e 3a jle 682f0 <_IO_padn+0xb0> 0.00 : 682b6: 49 8b 85 d8 00 00 00 mov 0xd8(%r13),%rax 0.00 : 682bd: ba 10 00 00 00 mov $0x10,%edx 0.00 : 682c2: 4c 89 f6 mov %r14,%rsi 0.00 : 682c5: 4c 89 ef mov %r13,%rdi 0.00 : 682c8: ff 50 38 callq *0x38(%rax) 0.00 : 682cb: 49 01 c4 add %rax,%r12 0.00 : 682ce: 48 83 f8 10 cmp $0x10,%rax 0.00 : 682d2: 74 cc je 682a0 <_IO_padn+0x60> 0.00 : 682d4: 4c 89 e0 mov %r12,%rax 0.00 : 682d7: 48 83 c4 18 add $0x18,%rsp 0.00 : 682db: 5b pop %rbx 0.00 : 682dc: 5d pop %rbp 0.00 : 682dd: 41 5c pop %r12 0.00 : 682df: 41 5d pop %r13 0.00 : 682e1: 41 5e pop %r14 0.00 : 682e3: 41 5f pop %r15 0.00 : 682e5: c3 retq 0.00 : 682e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 682ed: 00 00 00 0.00 : 682f0: 4c 89 e0 mov %r12,%rax 0.00 : 682f3: 85 ed test %ebp,%ebp 0.00 : 682f5: 7e e0 jle 682d7 <_IO_padn+0x97> 0.00 : 682f7: 49 8b 85 d8 00 00 00 mov 0xd8(%r13),%rax 33.33 : 682fe: 48 63 d5 movslq %ebp,%rdx 0.00 : 68301: 4c 89 f6 mov %r14,%rsi 0.00 : 68304: 4c 89 ef mov %r13,%rdi 0.00 : 68307: ff 50 38 callq *0x38(%rax) 0.00 : 6830a: 48 83 c4 18 add $0x18,%rsp 0.00 : 6830e: 4c 01 e0 add %r12,%rax 0.00 : 68311: 5b pop %rbx 0.00 : 68312: 5d pop %rbp 0.00 : 68313: 41 5c pop %r12 0.00 : 68315: 41 5d pop %r13 0.00 : 68317: 41 5e pop %r14 0.00 : 68319: 41 5f pop %r15 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000068cd0 <_IO_seekoff_unlocked>: 0.00 : 68cd0: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 66.67 : 68cd5: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 68cda: 48 89 fb mov %rdi,%rbx 0.00 : 68cdd: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 68ce2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 68ce7: 48 83 ec 28 sub $0x28,%rsp 0.00 : 68ceb: 83 fa 02 cmp $0x2,%edx 0.00 : 68cee: 49 89 f4 mov %rsi,%r12 0.00 : 68cf1: 89 d5 mov %edx,%ebp 0.00 : 68cf3: 41 89 cd mov %ecx,%r13d 0.00 : 68cf6: 0f 87 9c 00 00 00 ja 68d98 <_IO_seekoff_unlocked+0xc8> 0.00 : 68cfc: 85 c9 test %ecx,%ecx 0.00 : 68cfe: 74 2e je 68d2e <_IO_seekoff_unlocked+0x5e> 0.00 : 68d00: 8b 97 c0 00 00 00 mov 0xc0(%rdi),%edx 0.00 : 68d06: 83 fa 00 cmp $0x0,%edx 0.00 : 68d09: 7c 55 jl 68d60 <_IO_seekoff_unlocked+0x90> 0.00 : 68d0b: 74 21 je 68d2e <_IO_seekoff_unlocked+0x5e> 0.00 : 68d0d: 48 8b 87 a0 00 00 00 mov 0xa0(%rdi),%rax 0.00 : 68d14: 48 83 78 40 00 cmpq $0x0,0x40(%rax) 0.00 : 68d19: 74 13 je 68d2e <_IO_seekoff_unlocked+0x5e> 0.00 : 68d1b: 83 fd 01 cmp $0x1,%ebp 0.00 : 68d1e: 66 90 xchg %ax,%ax 0.00 : 68d20: 74 4a je 68d6c <_IO_seekoff_unlocked+0x9c> 0.00 : 68d22: 85 d2 test %edx,%edx 0.00 : 68d24: 78 62 js 68d88 <_IO_seekoff_unlocked+0xb8> 0.00 : 68d26: 48 89 df mov %rbx,%rdi 0.00 : 68d29: e8 82 2a 00 00 callq 6b7b0 <_IO_free_wbackup_area> 0.00 : 68d2e: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 68d35: 44 89 e9 mov %r13d,%ecx 0.00 : 68d38: 89 ea mov %ebp,%edx 0.00 : 68d3a: 4c 89 e6 mov %r12,%rsi 0.00 : 68d3d: 48 89 df mov %rbx,%rdi 0.00 : 68d40: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 68d45: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 68d4a: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 33.33 : 68d4f: 4c 8b 58 48 mov 0x48(%rax),%r11 0.00 : 68d53: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 68d58: 48 83 c4 28 add $0x28,%rsp 0.00 : 68d5c: 41 ff e3 jmpq *%r11 0.00 : 68d5f: 90 nop 0.00 : 68d60: 48 83 7f 48 00 cmpq $0x0,0x48(%rdi) 0.00 : 68d65: 74 c7 je 68d2e <_IO_seekoff_unlocked+0x5e> 0.00 : 68d67: 83 fd 01 cmp $0x1,%ebp 0.00 : 68d6a: 75 b6 jne 68d22 <_IO_seekoff_unlocked+0x52> 0.00 : 68d6c: 8b 03 mov (%rbx),%eax 0.00 : 68d6e: f6 c4 01 test $0x1,%ah 0.00 : 68d71: 74 af je 68d22 <_IO_seekoff_unlocked+0x52> 0.00 : 68d73: 85 d2 test %edx,%edx 0.00 : 68d75: 7f 58 jg 68dcf <_IO_seekoff_unlocked+0xff> 0.00 : 68d77: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 68d7b: 48 2b 43 10 sub 0x10(%rbx),%rax 0.00 : 68d7f: 4e 8d 24 20 lea (%rax,%r12,1),%r12 0.00 : 68d83: eb 9d jmp 68d22 <_IO_seekoff_unlocked+0x52> 0.00 : 68d85: 0f 1f 00 nopl (%rax) 0.00 : 68d88: 48 89 df mov %rbx,%rdi 0.00 : 68d8b: e8 50 c0 00 00 callq 74de0 <_IO_free_backup_area> 0.00 : 68d90: eb 9c jmp 68d2e <_IO_seekoff_unlocked+0x5e> 0.00 : 68d92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68d98: 48 8b 15 99 90 30 00 mov 0x309099(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 68d9f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 68da6: 00 00 0.00 : 68da8: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 68daf: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 68db6: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 68dbb: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 68dc0: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 68dc5: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 68dca: 48 83 c4 28 add $0x28,%rsp 0.00 : 68dce: c3 retq 0.00 : 68dcf: e8 dc b1 fc ff callq 33fb0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000696e0 <_IO_vsprintf>: 0.00 : 696e0: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 696e5: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 696ea: 48 89 fb mov %rdi,%rbx 0.00 : 696ed: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 696f2: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 696f7: 48 81 ec 18 01 00 00 sub $0x118,%rsp 0.00 : 696fe: 45 31 c0 xor %r8d,%r8d 0.00 : 69701: 31 c9 xor %ecx,%ecx 0.00 : 69703: 49 89 f5 mov %rsi,%r13 0.00 : 69706: 49 89 d4 mov %rdx,%r12 0.00 : 69709: be 00 80 00 00 mov $0x8000,%esi 0.00 : 6970e: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 69713: 48 89 e7 mov %rsp,%rdi 0.00 : 69716: 48 c7 84 24 88 00 00 movq $0x0,0x88(%rsp) 0.00 : 6971d: 00 00 00 00 00 0.00 : 69722: e8 e9 a8 00 00 callq 74010 <_IO_no_init> 0.00 : 69727: 48 8d 05 32 80 30 00 lea 0x308032(%rip),%rax # 371760 <_IO_str_jumps> 0.00 : 6972e: 48 89 d9 mov %rbx,%rcx 0.00 : 69731: 48 89 de mov %rbx,%rsi 0.00 : 69734: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 6973b: 48 89 e7 mov %rsp,%rdi 0.00 : 6973e: 48 89 84 24 d8 00 00 mov %rax,0xd8(%rsp) 0.00 : 69745: 00 0.00 : 69746: e8 b5 c5 00 00 callq 75d00 <_IO_str_init_static_internal> 0.00 : 6974b: 4c 89 e2 mov %r12,%rdx 0.00 : 6974e: 4c 89 ee mov %r13,%rsi 0.00 : 69751: 48 89 e7 mov %rsp,%rdi 0.00 : 69754: e8 67 ab fd ff callq 442c0 <_IO_vfprintf> 50.00 : 69759: 89 c3 mov %eax,%ebx 0.00 : 6975b: 48 8b 44 24 28 mov 0x28(%rsp),%rax 50.00 : 69760: 48 3b 44 24 30 cmp 0x30(%rsp),%rax 0.00 : 69765: 73 2d jae 69794 <_IO_vsprintf+0xb4> 0.00 : 69767: c6 00 00 movb $0x0,(%rax) 0.00 : 6976a: 89 d8 mov %ebx,%eax 0.00 : 6976c: 48 8b ac 24 00 01 00 mov 0x100(%rsp),%rbp 0.00 : 69773: 00 0.00 : 69774: 48 8b 9c 24 f8 00 00 mov 0xf8(%rsp),%rbx 0.00 : 6977b: 00 0.00 : 6977c: 4c 8b a4 24 08 01 00 mov 0x108(%rsp),%r12 0.00 : 69783: 00 0.00 : 69784: 4c 8b ac 24 10 01 00 mov 0x110(%rsp),%r13 0.00 : 6978b: 00 0.00 : 6978c: 48 81 c4 18 01 00 00 add $0x118,%rsp 0.00 : 69793: c3 retq 0.00 : 69794: 31 f6 xor %esi,%esi 0.00 : 69796: 48 89 e7 mov %rsp,%rdi 0.00 : 69799: e8 02 a6 00 00 callq 73da0 <__overflow> 0.00 : 6979e: eb ca jmp 6976a <_IO_vsprintf+0x8a> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072050 : 0.00 : 72050: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 72055: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 7205a: 48 89 fb mov %rdi,%rbx 0.00 : 7205d: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 72062: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 72067: 48 83 ec 28 sub $0x28,%rsp 0.00 : 7206b: 8b 07 mov (%rdi),%eax 0.00 : 7206d: 49 89 f5 mov %rsi,%r13 0.00 : 72070: 49 89 d4 mov %rdx,%r12 0.00 : 72073: f6 c4 10 test $0x10,%ah 0.00 : 72076: 0f 84 84 00 00 00 je 72100 0.00 : 7207c: 48 c7 87 90 00 00 00 movq $0xffffffffffffffff,0x90(%rdi) 0.00 : 72083: ff ff ff ff 0.00 : 72087: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 7208e: 4c 89 e2 mov %r12,%rdx 0.00 : 72091: 4c 89 ee mov %r13,%rsi 0.00 : 72094: 48 89 df mov %rbx,%rdi 0.00 : 72097: ff 50 78 callq *0x78(%rax) 0.00 : 7209a: 48 89 c5 mov %rax,%rbp 0.00 : 7209d: 0f b7 83 80 00 00 00 movzwl 0x80(%rbx),%eax 0.00 : 720a4: 66 85 c0 test %ax,%ax 0.00 : 720a7: 0f 85 93 00 00 00 jne 72140 0.00 : 720ad: 44 8b 83 c0 00 00 00 mov 0xc0(%rbx),%r8d 0.00 : 720b4: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 720b8: 45 85 c0 test %r8d,%r8d 0.00 : 720bb: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 720bf: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 720c3: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 720c7: 48 89 43 28 mov %rax,0x28(%rbx) 33.33 : 720cb: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 720cf: 0f 8e 9b 00 00 00 jle 72170 0.00 : 720d5: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 720d9: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 720dd: 48 89 e8 mov %rbp,%rax 0.00 : 720e0: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 720e5: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 720ea: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 720ef: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 720f4: 48 83 c4 28 add $0x28,%rsp 0.00 : 720f8: c3 retq 0.00 : 720f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 66.67 : 72100: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 72104: 48 8b 77 20 mov 0x20(%rdi),%rsi 0.00 : 72108: 48 39 f2 cmp %rsi,%rdx 0.00 : 7210b: 0f 84 76 ff ff ff je 72087 0.00 : 72111: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 72118: 48 29 d6 sub %rdx,%rsi 0.00 : 7211b: 31 ed xor %ebp,%ebp 0.00 : 7211d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72122: ff 90 80 00 00 00 callq *0x80(%rax) 0.00 : 72128: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 7212c: 74 af je 720dd 0.00 : 7212e: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) 0.00 : 72135: e9 4d ff ff ff jmpq 72087 0.00 : 7213a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72140: 48 85 ed test %rbp,%rbp 0.00 : 72143: 0f 84 64 ff ff ff je 720ad 0.00 : 72149: 0f b7 f8 movzwl %ax,%edi 0.00 : 7214c: 89 ea mov %ebp,%edx 0.00 : 7214e: 4c 89 ee mov %r13,%rsi 0.00 : 72151: 83 ef 01 sub $0x1,%edi 0.00 : 72154: e8 87 20 00 00 callq 741e0 <_IO_adjust_column> 0.00 : 72159: 83 c0 01 add $0x1,%eax 0.00 : 7215c: 66 89 83 80 00 00 00 mov %ax,0x80(%rbx) 0.00 : 72163: e9 45 ff ff ff jmpq 720ad 0.00 : 72168: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7216f: 00 0.00 : 72170: f7 03 02 02 00 00 testl $0x202,(%rbx) 0.00 : 72176: 0f 85 5d ff ff ff jne 720d9 0.00 : 7217c: e9 54 ff ff ff jmpq 720d5 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073810 <_IO_un_link>: 0.00 : 73810: 55 push %rbp 50.00 : 73811: 53 push %rbx 0.00 : 73812: 48 89 fb mov %rdi,%rbx 0.00 : 73815: 48 83 ec 28 sub $0x28,%rsp 0.00 : 73819: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 7381c: 0f 89 8d 01 00 00 jns 739af <_IO_un_link+0x19f> 0.00 : 73822: 8b 2d 88 3e 30 00 mov 0x303e88(%rip),%ebp # 3776b0 <__libc_pthread_functions_init> 0.00 : 73828: 85 ed test %ebp,%ebp 0.00 : 7382a: 0f 85 b8 01 00 00 jne 739e8 <_IO_un_link+0x1d8> 0.00 : 73830: 48 8d 05 39 ff ff ff lea -0xc7(%rip),%rax # 73770 0.00 : 73837: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 7383e: 00 00 0.00 : 73840: 48 89 04 24 mov %rax,(%rsp) 0.00 : 73844: 64 48 8b 14 25 10 00 mov %fs:0x10,%rdx 0.00 : 7384b: 00 00 0.00 : 7384d: 48 3b 15 c4 05 30 00 cmp 0x3005c4(%rip),%rdx # 373e18 50.00 : 73854: 74 34 je 7388a <_IO_un_link+0x7a> 0.00 : 73856: be 01 00 00 00 mov $0x1,%esi 0.00 : 7385b: 31 c0 xor %eax,%eax 0.00 : 7385d: 83 3d 50 3e 30 00 00 cmpl $0x0,0x303e50(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 73864: 74 10 je 73876 <_IO_un_link+0x66> 0.00 : 73866: f0 0f b1 35 a2 05 30 lock cmpxchg %esi,0x3005a2(%rip) # 373e10 0.00 : 7386d: 00 0.00 : 7386e: 0f 85 51 1c 00 00 jne 754c5 <_L_lock_93> 0.00 : 73874: eb 0d jmp 73883 <_IO_un_link+0x73> 0.00 : 73876: 0f b1 35 93 05 30 00 cmpxchg %esi,0x300593(%rip) # 373e10 0.00 : 7387d: 0f 85 42 1c 00 00 jne 754c5 <_L_lock_93> 0.00 : 73883: 48 89 15 8e 05 30 00 mov %rdx,0x30058e(%rip) # 373e18 0.00 : 7388a: 83 05 83 05 30 00 01 addl $0x1,0x300583(%rip) # 373e14 0.00 : 73891: 48 89 1d 90 05 30 00 mov %rbx,0x300590(%rip) # 373e28 0.00 : 73898: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 7389c: 78 56 js 738f4 <_IO_un_link+0xe4> 0.00 : 7389e: 4c 8b 8b 88 00 00 00 mov 0x88(%rbx),%r9 0.00 : 738a5: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 738ac: 00 00 0.00 : 738ae: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 738b2: 74 3b je 738ef <_IO_un_link+0xdf> 0.00 : 738b4: 31 d2 xor %edx,%edx 0.00 : 738b6: be 01 00 00 00 mov $0x1,%esi 0.00 : 738bb: 89 d0 mov %edx,%eax 0.00 : 738bd: 83 3d f0 3d 30 00 00 cmpl $0x0,0x303df0(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 738c4: 74 0d je 738d3 <_IO_un_link+0xc3> 0.00 : 738c6: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 738cb: 0f 85 13 1c 00 00 jne 754e4 <_L_lock_129> 0.00 : 738d1: eb 0a jmp 738dd <_IO_un_link+0xcd> 0.00 : 738d3: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 738d7: 0f 85 07 1c 00 00 jne 754e4 <_L_lock_129> 0.00 : 738dd: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 738e4: 4c 89 50 08 mov %r10,0x8(%rax) 0.00 : 738e8: 4c 8b 8b 88 00 00 00 mov 0x88(%rbx),%r9 0.00 : 738ef: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 738f4: 48 8b 15 85 f0 2f 00 mov 0x2ff085(%rip),%rdx # 372980 <_IO_list_all> 0.00 : 738fb: 48 85 d2 test %rdx,%rdx 0.00 : 738fe: 74 3b je 7393b <_IO_un_link+0x12b> 0.00 : 73900: 48 39 d3 cmp %rdx,%rbx 0.00 : 73903: 0f 84 5f 01 00 00 je 73a68 <_IO_un_link+0x258> 0.00 : 73909: 48 8b 42 68 mov 0x68(%rdx),%rax 0.00 : 7390d: 48 85 c0 test %rax,%rax 0.00 : 73910: 74 29 je 7393b <_IO_un_link+0x12b> 0.00 : 73912: 48 39 c3 cmp %rax,%rbx 0.00 : 73915: 75 17 jne 7392e <_IO_un_link+0x11e> 0.00 : 73917: e9 2b 01 00 00 jmpq 73a47 <_IO_un_link+0x237> 0.00 : 7391c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 73920: 48 39 c3 cmp %rax,%rbx 0.00 : 73923: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 73928: 0f 84 22 01 00 00 je 73a50 <_IO_un_link+0x240> 0.00 : 7392e: 48 8d 50 68 lea 0x68(%rax),%rdx 0.00 : 73932: 48 8b 40 68 mov 0x68(%rax),%rax 0.00 : 73936: 48 85 c0 test %rax,%rax 0.00 : 73939: 75 e5 jne 73920 <_IO_un_link+0x110> 0.00 : 7393b: 8b 03 mov (%rbx),%eax 0.00 : 7393d: 24 7f and $0x7f,%al 0.00 : 7393f: 66 85 c0 test %ax,%ax 0.00 : 73942: 89 03 mov %eax,(%rbx) 0.00 : 73944: 78 18 js 7395e <_IO_un_link+0x14e> 0.00 : 73946: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 7394d: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 73950: 83 e8 01 sub $0x1,%eax 0.00 : 73953: 85 c0 test %eax,%eax 0.00 : 73955: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 73958: 0f 84 b2 00 00 00 je 73a10 <_IO_un_link+0x200> 0.00 : 7395e: 8b 05 b0 04 30 00 mov 0x3004b0(%rip),%eax # 373e14 0.00 : 73964: 48 c7 05 b9 04 30 00 movq $0x0,0x3004b9(%rip) # 373e28 0.00 : 7396b: 00 00 00 00 0.00 : 7396f: 83 e8 01 sub $0x1,%eax 0.00 : 73972: 85 c0 test %eax,%eax 0.00 : 73974: 89 05 9a 04 30 00 mov %eax,0x30049a(%rip) # 373e14 0.00 : 7397a: 75 2f jne 739ab <_IO_un_link+0x19b> 0.00 : 7397c: 48 c7 05 91 04 30 00 movq $0x0,0x300491(%rip) # 373e18 0.00 : 73983: 00 00 00 00 0.00 : 73987: 83 3d 26 3d 30 00 00 cmpl $0x0,0x303d26(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7398e: 74 0f je 7399f <_IO_un_link+0x18f> 0.00 : 73990: f0 ff 0d 79 04 30 00 lock decl 0x300479(%rip) # 373e10 0.00 : 73997: 0f 85 62 1b 00 00 jne 754ff <_L_unlock_211> 0.00 : 7399d: eb 0c jmp 739ab <_IO_un_link+0x19b> 0.00 : 7399f: ff 0d 6b 04 30 00 decl 0x30046b(%rip) # 373e10 0.00 : 739a5: 0f 85 54 1b 00 00 jne 754ff <_L_unlock_211> 0.00 : 739ab: 85 ed test %ebp,%ebp 0.00 : 739ad: 75 11 jne 739c0 <_IO_un_link+0x1b0> 0.00 : 739af: 48 83 c4 28 add $0x28,%rsp 0.00 : 739b3: 5b pop %rbx 0.00 : 739b4: 5d pop %rbp 0.00 : 739b5: c3 retq 0.00 : 739b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 739bd: 00 00 00 0.00 : 739c0: 48 8b 05 b1 3c 30 00 mov 0x303cb1(%rip),%rax # 377678 <__libc_pthread_functions+0x178> 0.00 : 739c7: 48 89 e7 mov %rsp,%rdi 0.00 : 739ca: 31 f6 xor %esi,%esi 0.00 : 739cc: 48 c1 c8 11 ror $0x11,%rax 0.00 : 739d0: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 739d7: 00 00 0.00 : 739d9: ff d0 callq *%rax 0.00 : 739db: 48 83 c4 28 add $0x28,%rsp 0.00 : 739df: 5b pop %rbx 0.00 : 739e0: 5d pop %rbp 0.00 : 739e1: c3 retq 0.00 : 739e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 739e8: 48 8b 05 81 3c 30 00 mov 0x303c81(%rip),%rax # 377670 <__libc_pthread_functions+0x170> 0.00 : 739ef: 48 89 e7 mov %rsp,%rdi 0.00 : 739f2: 31 d2 xor %edx,%edx 0.00 : 739f4: 48 c1 c8 11 ror $0x11,%rax 0.00 : 739f8: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 739ff: 00 00 0.00 : 73a01: 48 8d 35 68 fd ff ff lea -0x298(%rip),%rsi # 73770 0.00 : 73a08: ff d0 callq *%rax 0.00 : 73a0a: e9 35 fe ff ff jmpq 73844 <_IO_un_link+0x34> 0.00 : 73a0f: 90 nop 0.00 : 73a10: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 73a17: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 73a1e: 00 0.00 : 73a1f: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 73a26: 83 3d 87 3c 30 00 00 cmpl $0x0,0x303c87(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 73a2d: 74 0b je 73a3a <_IO_un_link+0x22a> 0.00 : 73a2f: f0 ff 0a lock decl (%rdx) 0.00 : 73a32: 0f 85 e6 1a 00 00 jne 7551e <_L_unlock_296> 0.00 : 73a38: eb 08 jmp 73a42 <_IO_un_link+0x232> 0.00 : 73a3a: ff 0a decl (%rdx) 0.00 : 73a3c: 0f 85 dc 1a 00 00 jne 7551e <_L_unlock_296> 0.00 : 73a42: e9 17 ff ff ff jmpq 7395e <_IO_un_link+0x14e> 0.00 : 73a47: 48 83 c2 68 add $0x68,%rdx 0.00 : 73a4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 73a50: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 73a54: 48 89 02 mov %rax,(%rdx) 0.00 : 73a57: 83 05 c2 03 30 00 01 addl $0x1,0x3003c2(%rip) # 373e20 <_IO_list_all_stamp> 0.00 : 73a5e: e9 d8 fe ff ff jmpq 7393b <_IO_un_link+0x12b> 0.00 : 73a63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 73a68: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 73a6c: 83 05 ad 03 30 00 01 addl $0x1,0x3003ad(%rip) # 373e20 <_IO_list_all_stamp> 0.00 : 73a73: 48 89 05 06 ef 2f 00 mov %rax,0x2fef06(%rip) # 372980 <_IO_list_all> 0.00 : 73a7a: e9 bc fe ff ff jmpq 7393b <_IO_un_link+0x12b> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073da0 <__overflow>: 50.00 : 73da0: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 0.00 : 73da6: 85 c0 test %eax,%eax 0.00 : 73da8: 75 0a jne 73db4 <__overflow+0x14> 0.00 : 73daa: c7 87 c0 00 00 00 ff movl $0xffffffff,0xc0(%rdi) 0.00 : 73db1: ff ff ff 0.00 : 73db4: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 73dbb: 4c 8b 58 18 mov 0x18(%rax),%r11 50.00 : 73dbf: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073e60 <_IO_sgetn>: 50.00 : 73e60: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 73e67: 4c 8b 58 40 mov 0x40(%rax),%r11 50.00 : 73e6b: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073e70 <_IO_default_setbuf>: 50.00 : 73e70: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 73e75: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 73e7a: 48 89 fb mov %rdi,%rbx 0.00 : 73e7d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 73e82: 48 83 ec 18 sub $0x18,%rsp 0.00 : 73e86: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 73e8d: 48 89 f5 mov %rsi,%rbp 0.00 : 73e90: 49 89 d4 mov %rdx,%r12 0.00 : 73e93: ff 50 60 callq *0x60(%rax) 0.00 : 73e96: 83 c0 01 add $0x1,%eax 0.00 : 73e99: 0f 84 91 00 00 00 je 73f30 <_IO_default_setbuf+0xc0> 0.00 : 73e9f: 48 85 ed test %rbp,%rbp 0.00 : 73ea2: 74 05 je 73ea9 <_IO_default_setbuf+0x39> 0.00 : 73ea4: 4d 85 e4 test %r12,%r12 0.00 : 73ea7: 75 67 jne 73f10 <_IO_default_setbuf+0xa0> 0.00 : 73ea9: 83 0b 02 orl $0x2,(%rbx) 50.00 : 73eac: 48 8d 93 84 00 00 00 lea 0x84(%rbx),%rdx 0.00 : 73eb3: 48 8d b3 83 00 00 00 lea 0x83(%rbx),%rsi 0.00 : 73eba: 31 c9 xor %ecx,%ecx 0.00 : 73ebc: 48 89 df mov %rbx,%rdi 0.00 : 73ebf: e8 0c 0e 00 00 callq 74cd0 <_IO_setb> 0.00 : 73ec4: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 73ecb: 00 0.00 : 73ecc: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 73ed3: 00 0.00 : 73ed4: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 73edb: 00 0.00 : 73edc: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 73ee3: 00 0.00 : 73ee4: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 73eeb: 00 0.00 : 73eec: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 73ef3: 00 0.00 : 73ef4: 48 89 d8 mov %rbx,%rax 0.00 : 73ef7: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 73efc: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 73f00: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 73f05: 48 83 c4 18 add $0x18,%rsp 0.00 : 73f09: c3 retq 0.00 : 73f0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73f10: 83 23 fd andl $0xfffffffd,(%rbx) 0.00 : 73f13: 4a 8d 54 25 00 lea 0x0(%rbp,%r12,1),%rdx 0.00 : 73f18: 31 c9 xor %ecx,%ecx 0.00 : 73f1a: 48 89 ee mov %rbp,%rsi 0.00 : 73f1d: 48 89 df mov %rbx,%rdi 0.00 : 73f20: e8 ab 0d 00 00 callq 74cd0 <_IO_setb> 0.00 : 73f25: eb 9d jmp 73ec4 <_IO_default_setbuf+0x54> 0.00 : 73f27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73f2e: 00 00 0.00 : 73f30: 31 db xor %ebx,%ebx 0.00 : 73f32: eb c0 jmp 73ef4 <_IO_default_setbuf+0x84> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073f60 <_IO_old_init>: 0.00 : 73f60: 48 8b 87 88 00 00 00 mov 0x88(%rdi),%rax 0.00 : 73f67: 81 ce 00 00 ad fb or $0xfbad0000,%esi 0.00 : 73f6d: c7 47 74 00 00 00 00 movl $0x0,0x74(%rdi) 0.00 : 73f74: 89 37 mov %esi,(%rdi) 0.00 : 73f76: 48 c7 47 38 00 00 00 movq $0x0,0x38(%rdi) 0.00 : 73f7d: 00 0.00 : 73f7e: 48 c7 47 40 00 00 00 movq $0x0,0x40(%rdi) 0.00 : 73f85: 00 0.00 : 73f86: 48 c7 47 18 00 00 00 movq $0x0,0x18(%rdi) 0.00 : 73f8d: 00 0.00 : 73f8e: 48 85 c0 test %rax,%rax 0.00 : 73f91: 48 c7 47 08 00 00 00 movq $0x0,0x8(%rdi) 0.00 : 73f98: 00 0.00 : 73f99: 48 c7 47 10 00 00 00 movq $0x0,0x10(%rdi) 0.00 : 73fa0: 00 25.00 : 73fa1: 48 c7 47 20 00 00 00 movq $0x0,0x20(%rdi) 0.00 : 73fa8: 00 25.00 : 73fa9: 48 c7 47 28 00 00 00 movq $0x0,0x28(%rdi) 0.00 : 73fb0: 00 0.00 : 73fb1: 48 c7 47 30 00 00 00 movq $0x0,0x30(%rdi) 0.00 : 73fb8: 00 25.00 : 73fb9: 48 c7 47 68 00 00 00 movq $0x0,0x68(%rdi) 0.00 : 73fc0: 00 0.00 : 73fc1: 48 c7 47 48 00 00 00 movq $0x0,0x48(%rdi) 0.00 : 73fc8: 00 0.00 : 73fc9: 48 c7 47 50 00 00 00 movq $0x0,0x50(%rdi) 0.00 : 73fd0: 00 0.00 : 73fd1: 48 c7 47 58 00 00 00 movq $0x0,0x58(%rdi) 0.00 : 73fd8: 00 0.00 : 73fd9: 48 c7 47 60 00 00 00 movq $0x0,0x60(%rdi) 0.00 : 73fe0: 00 25.00 : 73fe1: 66 c7 87 80 00 00 00 movw $0x0,0x80(%rdi) 0.00 : 73fe8: 00 00 0.00 : 73fea: 74 15 je 74001 <_IO_old_init+0xa1> 0.00 : 73fec: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : 73ff2: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) 0.00 : 73ff9: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 74000: 00 0.00 : 74001: f3 c3 repz retq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074700 <_IO_cleanup>: 0.00 : 74700: 41 56 push %r14 0.00 : 74702: 41 55 push %r13 0.00 : 74704: 41 54 push %r12 0.00 : 74706: 55 push %rbp 0.00 : 74707: 53 push %rbx 0.00 : 74708: 48 83 ec 20 sub $0x20,%rsp 0.00 : 7470c: e8 6f a1 fa ff callq 1e880 <_IO_flush_all@plt> 0.00 : 74711: 44 8b 25 98 2f 30 00 mov 0x302f98(%rip),%r12d # 3776b0 <__libc_pthread_functions_init> 0.00 : 74718: 41 89 c5 mov %eax,%r13d 0.00 : 7471b: 45 85 e4 test %r12d,%r12d 0.00 : 7471e: 0f 85 5c 02 00 00 jne 74980 <_IO_cleanup+0x280> 0.00 : 74724: 48 8d 05 45 f0 ff ff lea -0xfbb(%rip),%rax # 73770 0.00 : 7472b: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 74732: 00 00 0.00 : 74734: 48 89 04 24 mov %rax,(%rsp) 0.00 : 74738: 64 48 8b 14 25 10 00 mov %fs:0x10,%rdx 0.00 : 7473f: 00 00 0.00 : 74741: 48 3b 15 d0 f6 2f 00 cmp 0x2ff6d0(%rip),%rdx # 373e18 0.00 : 74748: 74 34 je 7477e <_IO_cleanup+0x7e> 0.00 : 7474a: be 01 00 00 00 mov $0x1,%esi 0.00 : 7474f: 31 c0 xor %eax,%eax 0.00 : 74751: 83 3d 5c 2f 30 00 00 cmpl $0x0,0x302f5c(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 74758: 74 10 je 7476a <_IO_cleanup+0x6a> 0.00 : 7475a: f0 0f b1 35 ae f6 2f lock cmpxchg %esi,0x2ff6ae(%rip) # 373e10 0.00 : 74761: 00 0.00 : 74762: 0f 85 2d 0f 00 00 jne 75695 <_L_lock_1846> 0.00 : 74768: eb 0d jmp 74777 <_IO_cleanup+0x77> 0.00 : 7476a: 0f b1 35 9f f6 2f 00 cmpxchg %esi,0x2ff69f(%rip) # 373e10 0.00 : 74771: 0f 85 1e 0f 00 00 jne 75695 <_L_lock_1846> 0.00 : 74777: 48 89 15 9a f6 2f 00 mov %rdx,0x2ff69a(%rip) # 373e18 0.00 : 7477e: 48 8b 1d fb e1 2f 00 mov 0x2fe1fb(%rip),%rbx # 372980 <_IO_list_all> 0.00 : 74785: 83 05 88 f6 2f 00 01 addl $0x1,0x2ff688(%rip) # 373e14 0.00 : 7478c: 48 85 db test %rbx,%rbx 0.00 : 7478f: 0f 84 fa 00 00 00 je 7488f <_IO_cleanup+0x18f> 0.00 : 74795: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 7479b: 64 48 8b 2c 25 10 00 mov %fs:0x10,%rbp 0.00 : 747a2: 00 00 0.00 : 747a4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 747a8: 8b 03 mov (%rbx),%eax 0.00 : 747aa: 89 c2 mov %eax,%edx 0.00 : 747ac: 83 e2 02 and $0x2,%edx 0.00 : 747af: 0f 85 c3 00 00 00 jne 74878 <_IO_cleanup+0x178> 0.00 : 747b5: 25 08 10 00 00 and $0x1008,%eax 0.00 : 747ba: 83 f8 08 cmp $0x8,%eax 0.00 : 747bd: 0f 84 b5 00 00 00 je 74878 <_IO_cleanup+0x178> 0.00 : 747c3: 8b b3 c0 00 00 00 mov 0xc0(%rbx),%esi 0.00 : 747c9: 85 f6 test %esi,%esi 0.00 : 747cb: 0f 84 a7 00 00 00 je 74878 <_IO_cleanup+0x178> 0.00 : 747d1: 48 89 1d 50 f6 2f 00 mov %rbx,0x2ff650(%rip) # 373e28 0.00 : 747d8: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 747dc: 78 49 js 74827 <_IO_cleanup+0x127> 0.00 : 747de: 4c 8b 83 88 00 00 00 mov 0x88(%rbx),%r8 0.00 : 747e5: 49 3b 68 08 cmp 0x8(%r8),%rbp 0.00 : 747e9: 74 37 je 74822 <_IO_cleanup+0x122> 0.00 : 747eb: 44 89 f6 mov %r14d,%esi 0.00 : 747ee: 89 d0 mov %edx,%eax 0.00 : 747f0: 83 3d bd 2e 30 00 00 cmpl $0x0,0x302ebd(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 747f7: 74 0d je 74806 <_IO_cleanup+0x106> 0.00 : 747f9: f0 41 0f b1 30 lock cmpxchg %esi,(%r8) 0.00 : 747fe: 0f 85 b0 0e 00 00 jne 756b4 <_L_lock_1909> 0.00 : 74804: eb 0a jmp 74810 <_IO_cleanup+0x110> 0.00 : 74806: 41 0f b1 30 cmpxchg %esi,(%r8) 0.00 : 7480a: 0f 85 a4 0e 00 00 jne 756b4 <_L_lock_1909> 0.00 : 74810: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 74817: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 7481b: 4c 8b 83 88 00 00 00 mov 0x88(%rbx),%r8 0.00 : 74822: 41 83 40 04 01 addl $0x1,0x4(%r8) 0.00 : 74827: 80 3d 02 f6 2f 00 00 cmpb $0x0,0x2ff602(%rip) # 373e30 0.00 : 7482e: 75 0a jne 7483a <_IO_cleanup+0x13a> 33.33 : 74830: 8b 03 mov (%rbx),%eax 0.00 : 74832: a8 01 test $0x1,%al 0.00 : 74834: 0f 84 06 01 00 00 je 74940 <_IO_cleanup+0x240> 0.00 : 7483a: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 33.33 : 74841: 31 d2 xor %edx,%edx 0.00 : 74843: 31 f6 xor %esi,%esi 0.00 : 74845: 48 89 df mov %rbx,%rdi 0.00 : 74848: ff 50 58 callq *0x58(%rax) 0.00 : 7484b: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 7484f: 78 18 js 74869 <_IO_cleanup+0x169> 0.00 : 74851: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 74858: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 7485b: 83 e8 01 sub $0x1,%eax 0.00 : 7485e: 85 c0 test %eax,%eax 0.00 : 74860: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 74863: 0f 84 9f 00 00 00 je 74908 <_IO_cleanup+0x208> 0.00 : 74869: 48 c7 05 b4 f5 2f 00 movq $0x0,0x2ff5b4(%rip) # 373e28 0.00 : 74870: 00 00 00 00 0.00 : 74874: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 74878: c7 83 c0 00 00 00 ff movl $0xffffffff,0xc0(%rbx) 0.00 : 7487f: ff ff ff 0.00 : 74882: 48 8b 5b 68 mov 0x68(%rbx),%rbx 0.00 : 74886: 48 85 db test %rbx,%rbx 0.00 : 74889: 0f 85 19 ff ff ff jne 747a8 <_IO_cleanup+0xa8> 0.00 : 7488f: 8b 05 7f f5 2f 00 mov 0x2ff57f(%rip),%eax # 373e14 0.00 : 74895: 83 e8 01 sub $0x1,%eax 0.00 : 74898: 85 c0 test %eax,%eax 0.00 : 7489a: 89 05 74 f5 2f 00 mov %eax,0x2ff574(%rip) # 373e14 0.00 : 748a0: 75 2f jne 748d1 <_IO_cleanup+0x1d1> 0.00 : 748a2: 48 c7 05 6b f5 2f 00 movq $0x0,0x2ff56b(%rip) # 373e18 0.00 : 748a9: 00 00 00 00 0.00 : 748ad: 83 3d 00 2e 30 00 00 cmpl $0x0,0x302e00(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 748b4: 74 0f je 748c5 <_IO_cleanup+0x1c5> 0.00 : 748b6: f0 ff 0d 53 f5 2f 00 lock decl 0x2ff553(%rip) # 373e10 0.00 : 748bd: 0f 85 0c 0e 00 00 jne 756cf <_L_unlock_1981> 0.00 : 748c3: eb 0c jmp 748d1 <_IO_cleanup+0x1d1> 0.00 : 748c5: ff 0d 45 f5 2f 00 decl 0x2ff545(%rip) # 373e10 0.00 : 748cb: 0f 85 fe 0d 00 00 jne 756cf <_L_unlock_1981> 0.00 : 748d1: 45 85 e4 test %r12d,%r12d 0.00 : 748d4: 74 1b je 748f1 <_IO_cleanup+0x1f1> 0.00 : 748d6: 48 8b 05 9b 2d 30 00 mov 0x302d9b(%rip),%rax # 377678 <__libc_pthread_functions+0x178> 0.00 : 748dd: 48 89 e7 mov %rsp,%rdi 0.00 : 748e0: 31 f6 xor %esi,%esi 0.00 : 748e2: 48 c1 c8 11 ror $0x11,%rax 0.00 : 748e6: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 748ed: 00 00 0.00 : 748ef: ff d0 callq *%rax 0.00 : 748f1: 48 83 c4 20 add $0x20,%rsp 0.00 : 748f5: 44 89 e8 mov %r13d,%eax 0.00 : 748f8: 5b pop %rbx 0.00 : 748f9: 5d pop %rbp 0.00 : 748fa: 41 5c pop %r12 0.00 : 748fc: 41 5d pop %r13 0.00 : 748fe: 41 5e pop %r14 0.00 : 74900: c3 retq 0.00 : 74901: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 74908: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 7490f: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 74916: 00 0.00 : 74917: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 7491e: 83 3d 8f 2d 30 00 00 cmpl $0x0,0x302d8f(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 74925: 74 0b je 74932 <_IO_cleanup+0x232> 0.00 : 74927: f0 ff 0a lock decl (%rdx) 0.00 : 7492a: 0f 85 be 0d 00 00 jne 756ee <_L_unlock_2050> 0.00 : 74930: eb 08 jmp 7493a <_IO_cleanup+0x23a> 0.00 : 74932: ff 0a decl (%rdx) 0.00 : 74934: 0f 85 b4 0d 00 00 jne 756ee <_L_unlock_2050> 0.00 : 7493a: e9 2a ff ff ff jmpq 74869 <_IO_cleanup+0x169> 0.00 : 7493f: 90 nop 33.33 : 74940: 83 c8 01 or $0x1,%eax 0.00 : 74943: 89 03 mov %eax,(%rbx) 0.00 : 74945: 48 8b 05 ec f4 2f 00 mov 0x2ff4ec(%rip),%rax # 373e38 0.00 : 7494c: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) 0.00 : 74953: 48 89 1d de f4 2f 00 mov %rbx,0x2ff4de(%rip) # 373e38 0.00 : 7495a: 48 8b 53 38 mov 0x38(%rbx),%rdx 0.00 : 7495e: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 74962: 48 29 d0 sub %rdx,%rax 0.00 : 74965: 48 89 93 b0 00 00 00 mov %rdx,0xb0(%rbx) 0.00 : 7496c: 48 89 83 b8 00 00 00 mov %rax,0xb8(%rbx) 0.00 : 74973: e9 c2 fe ff ff jmpq 7483a <_IO_cleanup+0x13a> 0.00 : 74978: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7497f: 00 0.00 : 74980: 48 8b 05 e9 2c 30 00 mov 0x302ce9(%rip),%rax # 377670 <__libc_pthread_functions+0x170> 0.00 : 74987: 48 89 e7 mov %rsp,%rdi 0.00 : 7498a: 31 d2 xor %edx,%edx 0.00 : 7498c: 48 c1 c8 11 ror $0x11,%rax 0.00 : 74990: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 74997: 00 00 0.00 : 74999: 48 8d 35 d0 ed ff ff lea -0x1230(%rip),%rsi # 73770 0.00 : 749a0: ff d0 callq *%rax 0.00 : 749a2: e9 91 fd ff ff jmpq 74738 <_IO_cleanup+0x38> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000082de0 : 0.00 : 82de0: 66 0f 6e ce movd %esi,%xmm1 0.00 : 82de4: 48 89 f9 mov %rdi,%rcx 0.00 : 82de7: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 20.00 : 82deb: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 82def: 48 85 d2 test %rdx,%rdx 0.00 : 82df2: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 82df6: 74 44 je 82e3c 0.00 : 82df8: 83 ce ff or $0xffffffff,%esi 0.00 : 82dfb: 66 0f 6f 07 movdqa (%rdi),%xmm0 20.00 : 82dff: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 82e04: 48 29 f9 sub %rdi,%rcx 0.00 : 82e07: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 82e0b: 48 01 ca add %rcx,%rdx 0.00 : 82e0e: d3 e6 shl %cl,%esi 0.00 : 82e10: 66 0f d7 c8 pmovmskb %xmm0,%ecx 0.00 : 82e14: 21 f1 and %esi,%ecx 20.00 : 82e16: be 10 00 00 00 mov $0x10,%esi 0.00 : 82e1b: 75 22 jne 82e3f 0.00 : 82e1d: 48 39 f2 cmp %rsi,%rdx 0.00 : 82e20: 76 1a jbe 82e3c 0.00 : 82e22: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 82e27: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.00 : 82e2b: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 82e2f: 66 0f d7 c8 pmovmskb %xmm0,%ecx 0.00 : 82e33: 85 c9 test %ecx,%ecx 0.00 : 82e35: 75 08 jne 82e3f 0.00 : 82e37: 48 39 f2 cmp %rsi,%rdx 0.00 : 82e3a: 77 e6 ja 82e22 0.00 : 82e3c: 31 c0 xor %eax,%eax 0.00 : 82e3e: c3 retq 20.00 : 82e3f: 48 8d 44 37 f0 lea -0x10(%rdi,%rsi,1),%rax 0.00 : 82e44: 0f bc c9 bsf %ecx,%ecx 0.00 : 82e47: 48 01 c8 add %rcx,%rax 0.00 : 82e4a: 48 8d 74 0e f0 lea -0x10(%rsi,%rcx,1),%rsi 20.00 : 82e4f: 48 39 f2 cmp %rsi,%rdx 0.00 : 82e52: 76 e8 jbe 82e3c Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000086bf0 : 0.00 : 86bf0: 41 57 push %r15 0.00 : 86bf2: 41 56 push %r14 0.00 : 86bf4: 41 55 push %r13 0.00 : 86bf6: 41 54 push %r12 0.00 : 86bf8: 55 push %rbp 0.00 : 86bf9: 53 push %rbx 0.00 : 86bfa: 48 89 7c 24 b0 mov %rdi,-0x50(%rsp) 0.00 : 86bff: 48 89 54 24 a0 mov %rdx,-0x60(%rsp) 0.00 : 86c04: 89 74 24 ac mov %esi,-0x54(%rsp) 0.00 : 86c08: 48 89 4c 24 98 mov %rcx,-0x68(%rsp) 0.00 : 86c0d: 4c 89 44 24 90 mov %r8,-0x70(%rsp) 0.00 : 86c12: 4c 89 4c 24 88 mov %r9,-0x78(%rsp) 0.00 : 86c17: 48 c7 47 08 00 00 00 movq $0x0,0x8(%rdi) 0.00 : 86c1e: 00 0.00 : 86c1f: 48 8b 54 24 b0 mov -0x50(%rsp),%rdx 20.00 : 86c24: 48 8b 4a 30 mov 0x30(%rdx),%rcx 0.00 : 86c28: 8b 02 mov (%rdx),%eax 0.00 : 86c2a: 48 89 4c 24 c0 mov %rcx,-0x40(%rsp) 0.00 : 86c2f: 48 8b 5a 28 mov 0x28(%rdx),%rbx 0.00 : 86c33: 85 c0 test %eax,%eax 0.00 : 86c35: 48 8b 4c 24 b0 mov -0x50(%rsp),%rcx 0.00 : 86c3a: 48 89 5c 24 c8 mov %rbx,-0x38(%rsp) 0.00 : 86c3f: 4c 8b 52 20 mov 0x20(%rdx),%r10 0.00 : 86c43: 4c 8b 6a 18 mov 0x18(%rdx),%r13 0.00 : 86c47: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 86c4b: 48 8b 5c 24 b0 mov -0x50(%rsp),%rbx 0.00 : 86c50: 48 89 54 24 d8 mov %rdx,-0x28(%rsp) 0.00 : 86c55: 48 8b 49 48 mov 0x48(%rcx),%rcx 0.00 : 86c59: 48 8b 54 24 b0 mov -0x50(%rsp),%rdx 0.00 : 86c5e: 48 89 4c 24 e0 mov %rcx,-0x20(%rsp) 0.00 : 86c63: 48 8b 5b 40 mov 0x40(%rbx),%rbx 20.00 : 86c67: 89 c1 mov %eax,%ecx 0.00 : 86c69: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 86c6e: 48 8b 7a 38 mov 0x38(%rdx),%rdi 0.00 : 86c72: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 86c77: 48 c7 44 24 b8 00 00 movq $0x0,-0x48(%rsp) 0.00 : 86c7e: 00 00 0.00 : 86c80: 74 5c je 86cde 0.00 : 86c82: e9 7d 02 00 00 jmpq 86f04 0.00 : 86c87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 86c8e: 00 00 0.00 : 86c90: 48 8b 5c 24 c0 mov -0x40(%rsp),%rbx 0.00 : 86c95: 48 39 5c 24 c8 cmp %rbx,-0x38(%rsp) 0.00 : 86c9a: 0f 84 1a 03 00 00 je 86fba 0.00 : 86ca0: 48 83 6c 24 c8 01 subq $0x1,-0x38(%rsp) 0.00 : 86ca6: 48 8b 44 24 c8 mov -0x38(%rsp),%rax 0.00 : 86cab: 48 89 44 24 d8 mov %rax,-0x28(%rsp) 0.00 : 86cb0: 48 8b 54 24 d8 mov -0x28(%rsp),%rdx 0.00 : 86cb5: 48 8b 4c 24 e8 mov -0x18(%rsp),%rcx 0.00 : 86cba: 48 8b 5c 24 98 mov -0x68(%rsp),%rbx 0.00 : 86cbf: 48 8d 04 91 lea (%rcx,%rdx,4),%rax 0.00 : 86cc3: 8b 10 mov (%rax),%edx 0.00 : 86cc5: 48 63 ca movslq %edx,%rcx 0.00 : 86cc8: 83 c2 01 add $0x1,%edx 0.00 : 86ccb: 0f b6 0c 0b movzbl (%rbx,%rcx,1),%ecx 0.00 : 86ccf: 89 10 mov %edx,(%rax) 0.00 : 86cd1: 85 c9 test %ecx,%ecx 0.00 : 86cd3: 0f 85 2b 02 00 00 jne 86f04 0.00 : 86cd9: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 20.00 : 86cde: 48 83 44 24 b8 01 addq $0x1,-0x48(%rsp) 0.00 : 86ce4: 48 83 7c 24 c0 ff cmpq $0xffffffffffffffff,-0x40(%rsp) 0.00 : 86cea: 75 a4 jne 86c90 0.00 : 86cec: 4c 8b 74 24 e0 mov -0x20(%rsp),%r14 0.00 : 86cf1: 48 8b 4c 24 e8 mov -0x18(%rsp),%rcx 0.00 : 86cf6: 4c 89 6c 24 d0 mov %r13,-0x30(%rsp) 0.00 : 86cfb: 4d 01 ee add %r13,%r14 0.00 : 86cfe: 4e 8d 3c a9 lea (%rcx,%r13,4),%r15 0.00 : 86d02: eb 42 jmp 86d46 20.00 : 86d04: 48 89 df mov %rbx,%rdi 0.00 : 86d07: 89 c8 mov %ecx,%eax 0.00 : 86d09: 81 e1 ff ff ff 00 and $0xffffff,%ecx 0.00 : 86d0f: 49 83 c5 01 add $0x1,%r13 0.00 : 86d13: c1 f8 18 sar $0x18,%eax 0.00 : 86d16: 4d 89 ea mov %r13,%r10 0.00 : 86d19: 41 88 06 mov %al,(%r14) 0.00 : 86d1c: 41 89 0f mov %ecx,(%r15) 0.00 : 86d1f: 49 83 c7 04 add $0x4,%r15 0.00 : 86d23: 41 0f b6 06 movzbl (%r14),%eax 20.00 : 86d27: 48 8b 54 24 a0 mov -0x60(%rsp),%rdx 0.00 : 86d2c: 49 83 c6 01 add $0x1,%r14 0.00 : 86d30: 0f af 44 24 ac imul -0x54(%rsp),%eax 0.00 : 86d35: 48 98 cltq 0.00 : 86d37: f6 04 02 02 testb $0x2,(%rdx,%rax,1) 0.00 : 86d3b: 0f 84 97 01 00 00 je 86ed8 0.00 : 86d41: 4c 89 6c 24 d0 mov %r13,-0x30(%rsp) 0.00 : 86d46: 0f b6 07 movzbl (%rdi),%eax 0.00 : 86d49: 84 c0 test %al,%al 0.00 : 86d4b: 0f 84 8c 01 00 00 je 86edd 0.00 : 86d51: 48 8b 54 24 90 mov -0x70(%rsp),%rdx 0.00 : 86d56: 0f b6 c0 movzbl %al,%eax 0.00 : 86d59: 48 8d 5f 01 lea 0x1(%rdi),%rbx 0.00 : 86d5d: 8b 0c 82 mov (%rdx,%rax,4),%ecx 0.00 : 86d60: 48 63 c1 movslq %ecx,%rax 0.00 : 86d63: 48 85 c0 test %rax,%rax 0.00 : 86d66: 79 9c jns 86d04 0.00 : 86d68: 4c 8b 54 24 88 mov -0x78(%rsp),%r10 0.00 : 86d6d: 49 29 c2 sub %rax,%r10 0.00 : 86d70: 41 8b 0a mov (%r10),%ecx 0.00 : 86d73: 45 0f b6 5a 04 movzbl 0x4(%r10),%r11d 0.00 : 86d78: 4d 8d 42 05 lea 0x5(%r10),%r8 0.00 : 86d7c: 4c 63 e1 movslq %ecx,%r12 0.00 : 86d7f: 4d 85 e4 test %r12,%r12 0.00 : 86d82: 78 5c js 86de0 0.00 : 86d84: 4d 85 db test %r11,%r11 0.00 : 86d87: 0f 84 38 01 00 00 je 86ec5 0.00 : 86d8d: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 86d91: 31 d2 xor %edx,%edx 0.00 : 86d93: 3a 03 cmp (%rbx),%al 0.00 : 86d95: 74 15 je 86dac 0.00 : 86d97: eb 25 jmp 86dbe 0.00 : 86d99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 86da0: 41 0f b6 44 12 05 movzbl 0x5(%r10,%rdx,1),%eax 0.00 : 86da6: 3a 44 17 01 cmp 0x1(%rdi,%rdx,1),%al 0.00 : 86daa: 75 09 jne 86db5 0.00 : 86dac: 48 83 c2 01 add $0x1,%rdx 0.00 : 86db0: 49 39 d3 cmp %rdx,%r11 0.00 : 86db3: 77 eb ja 86da0 0.00 : 86db5: 49 39 d3 cmp %rdx,%r11 0.00 : 86db8: 0f 84 07 01 00 00 je 86ec5 0.00 : 86dbe: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 86dc2: 4f 8d 14 18 lea (%r8,%r11,1),%r10 0.00 : 86dc6: 83 e0 03 and $0x3,%eax 0.00 : 86dc9: 74 a5 je 86d70 0.00 : 86dcb: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 86dd0: 48 29 c1 sub %rax,%rcx 0.00 : 86dd3: 49 01 ca add %rcx,%r10 0.00 : 86dd6: eb 98 jmp 86d70 0.00 : 86dd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 86ddf: 00 0.00 : 86de0: 4d 85 db test %r11,%r11 0.00 : 86de3: 0f 84 5d 01 00 00 je 86f46 0.00 : 86de9: 41 0f b6 28 movzbl (%r8),%ebp 0.00 : 86ded: 44 0f b6 0b movzbl (%rbx),%r9d 0.00 : 86df1: 31 c0 xor %eax,%eax 0.00 : 86df3: 44 38 cd cmp %r9b,%bpl 0.00 : 86df6: 74 17 je 86e0f 0.00 : 86df8: e9 d1 00 00 00 jmpq 86ece 0.00 : 86dfd: 0f 1f 00 nopl (%rax) 0.00 : 86e00: 41 0f b6 4c 02 05 movzbl 0x5(%r10,%rax,1),%ecx 0.00 : 86e06: 0f b6 54 07 01 movzbl 0x1(%rdi,%rax,1),%edx 0.00 : 86e0b: 38 d1 cmp %dl,%cl 0.00 : 86e0d: 75 18 jne 86e27 0.00 : 86e0f: 48 83 c0 01 add $0x1,%rax 0.00 : 86e13: 49 39 c3 cmp %rax,%r11 0.00 : 86e16: 77 e8 ja 86e00 0.00 : 86e18: 0f 84 28 01 00 00 je 86f46 0.00 : 86e1e: 41 0f b6 0c 00 movzbl (%r8,%rax,1),%ecx 0.00 : 86e23: 0f b6 14 03 movzbl (%rbx,%rax,1),%edx 0.00 : 86e27: 38 ca cmp %cl,%dl 0.00 : 86e29: 72 75 jb 86ea0 0.00 : 86e2b: 43 0f b6 34 18 movzbl (%r8,%r11,1),%esi 0.00 : 86e30: 31 d2 xor %edx,%edx 0.00 : 86e32: 4b 8d 4c 1a 06 lea 0x6(%r10,%r11,1),%rcx 0.00 : 86e37: 41 38 f1 cmp %sil,%r9b 0.00 : 86e3a: 74 1d je 86e59 0.00 : 86e3c: e9 1b 01 00 00 jmpq 86f5c 0.00 : 86e41: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 86e48: 0f b6 31 movzbl (%rcx),%esi 0.00 : 86e4b: 0f b6 44 17 01 movzbl 0x1(%rdi,%rdx,1),%eax 0.00 : 86e50: 48 83 c1 01 add $0x1,%rcx 0.00 : 86e54: 40 38 c6 cmp %al,%sil 0.00 : 86e57: 75 1c jne 86e75 0.00 : 86e59: 48 83 c2 01 add $0x1,%rdx 0.00 : 86e5d: 49 39 d3 cmp %rdx,%r11 0.00 : 86e60: 77 e6 ja 86e48 0.00 : 86e62: 0f 84 00 01 00 00 je 86f68 0.00 : 86e68: 49 8d 04 10 lea (%r8,%rdx,1),%rax 0.00 : 86e6c: 42 0f b6 34 18 movzbl (%rax,%r11,1),%esi 0.00 : 86e71: 0f b6 04 13 movzbl (%rbx,%rdx,1),%eax 0.00 : 86e75: 40 38 c6 cmp %al,%sil 0.00 : 86e78: 0f 83 ea 00 00 00 jae 86f68 0.00 : 86e7e: 4b 8d 04 1b lea (%r11,%r11,1),%rax 0.00 : 86e82: 4d 8d 14 00 lea (%r8,%rax,1),%r10 0.00 : 86e86: 48 83 c0 01 add $0x1,%rax 0.00 : 86e8a: 83 e0 03 and $0x3,%eax 0.00 : 86e8d: 0f 84 dd fe ff ff je 86d70 0.00 : 86e93: e9 33 ff ff ff jmpq 86dcb 0.00 : 86e98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 86e9f: 00 0.00 : 86ea0: 4b 8d 04 1b lea (%r11,%r11,1),%rax 0.00 : 86ea4: 4d 8d 14 00 lea (%r8,%rax,1),%r10 0.00 : 86ea8: 48 83 c0 01 add $0x1,%rax 0.00 : 86eac: 83 e0 03 and $0x3,%eax 0.00 : 86eaf: 0f 84 bb fe ff ff je 86d70 0.00 : 86eb5: ba 04 00 00 00 mov $0x4,%edx 0.00 : 86eba: 48 29 c2 sub %rax,%rdx 0.00 : 86ebd: 49 01 d2 add %rdx,%r10 0.00 : 86ec0: e9 ab fe ff ff jmpq 86d70 0.00 : 86ec5: 4a 8d 3c 1b lea (%rbx,%r11,1),%rdi 0.00 : 86ec9: e9 39 fe ff ff jmpq 86d07 0.00 : 86ece: 89 e9 mov %ebp,%ecx 0.00 : 86ed0: 44 89 ca mov %r9d,%edx 0.00 : 86ed3: e9 4f ff ff ff jmpq 86e27 0.00 : 86ed8: 4c 8b 54 24 d0 mov -0x30(%rsp),%r10 0.00 : 86edd: 4c 3b 54 24 f0 cmp -0x10(%rsp),%r10 0.00 : 86ee2: 0f 87 f7 00 00 00 ja 86fdf 0.00 : 86ee8: 4d 39 ea cmp %r13,%r10 0.00 : 86eeb: 74 0b je 86ef8 0.00 : 86eed: 4c 3b 54 24 f0 cmp -0x10(%rsp),%r10 0.00 : 86ef2: 0f 83 dd 00 00 00 jae 86fd5 0.00 : 86ef8: 48 8b 4c 24 f0 mov -0x10(%rsp),%rcx 0.00 : 86efd: 48 89 4c 24 c0 mov %rcx,-0x40(%rsp) 0.00 : 86f02: 31 c9 xor %ecx,%ecx 0.00 : 86f04: 48 8b 5c 24 b8 mov -0x48(%rsp),%rbx 0.00 : 86f09: 48 8b 54 24 b0 mov -0x50(%rsp),%rdx 0.00 : 86f0e: 48 89 5a 08 mov %rbx,0x8(%rdx) 0.00 : 86f12: 89 0a mov %ecx,(%rdx) 0.00 : 86f14: 48 8b 44 24 c0 mov -0x40(%rsp),%rax 0.00 : 86f19: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 86f1d: 48 8b 4c 24 c8 mov -0x38(%rsp),%rcx 0.00 : 86f22: 4c 89 52 20 mov %r10,0x20(%rdx) 0.00 : 86f26: 4c 89 6a 18 mov %r13,0x18(%rdx) 0.00 : 86f2a: 48 89 4a 28 mov %rcx,0x28(%rdx) 0.00 : 86f2e: 48 8b 5c 24 d8 mov -0x28(%rsp),%rbx 0.00 : 86f33: 48 89 7a 38 mov %rdi,0x38(%rdx) 0.00 : 86f37: 48 89 5a 10 mov %rbx,0x10(%rdx) 0.00 : 86f3b: 5b pop %rbx 0.00 : 86f3c: 5d pop %rbp 0.00 : 86f3d: 41 5c pop %r12 0.00 : 86f3f: 41 5d pop %r13 0.00 : 86f41: 41 5e pop %r14 0.00 : 86f43: 41 5f pop %r15 0.00 : 86f45: c3 retq 0.00 : 86f46: 31 d2 xor %edx,%edx 0.00 : 86f48: 4a 8d 3c 1b lea (%rbx,%r11,1),%rdi 0.00 : 86f4c: 48 8b 5c 24 38 mov 0x38(%rsp),%rbx 0.00 : 86f51: 4c 29 e2 sub %r12,%rdx 0.00 : 86f54: 8b 0c 93 mov (%rbx,%rdx,4),%ecx 0.00 : 86f57: e9 ab fd ff ff jmpq 86d07 0.00 : 86f5c: 44 89 c8 mov %r9d,%eax 0.00 : 86f5f: 40 38 c6 cmp %al,%sil 0.00 : 86f62: 0f 82 16 ff ff ff jb 86e7e 0.00 : 86f68: 45 31 d2 xor %r10d,%r10d 0.00 : 86f6b: 41 38 e9 cmp %bpl,%r9b 0.00 : 86f6e: 75 10 jne 86f80 0.00 : 86f70: 49 83 c2 01 add $0x1,%r10 0.00 : 86f74: 46 0f b6 4c 17 01 movzbl 0x1(%rdi,%r10,1),%r9d 0.00 : 86f7a: 47 38 0c 10 cmp %r9b,(%r8,%r10,1) 0.00 : 86f7e: 74 f0 je 86f70 0.00 : 86f80: 31 d2 xor %edx,%edx 0.00 : 86f82: 31 ed xor %ebp,%ebp 0.00 : 86f84: 4b 8d 34 10 lea (%r8,%r10,1),%rsi 0.00 : 86f88: 4c 01 d7 add %r10,%rdi 0.00 : 86f8b: eb 06 jmp 86f93 0.00 : 86f8d: 44 0f b6 4c 2f 01 movzbl 0x1(%rdi,%rbp,1),%r9d 0.00 : 86f93: 48 89 d1 mov %rdx,%rcx 0.00 : 86f96: 0f b6 14 2e movzbl (%rsi,%rbp,1),%edx 0.00 : 86f9a: 41 0f b6 c1 movzbl %r9b,%eax 0.00 : 86f9e: 48 c1 e1 08 shl $0x8,%rcx 0.00 : 86fa2: 48 83 c5 01 add $0x1,%rbp 0.00 : 86fa6: 29 d0 sub %edx,%eax 0.00 : 86fa8: 48 98 cltq 0.00 : 86faa: 48 8d 14 08 lea (%rax,%rcx,1),%rdx 0.00 : 86fae: 4a 8d 44 15 00 lea 0x0(%rbp,%r10,1),%rax 0.00 : 86fb3: 49 39 c3 cmp %rax,%r11 0.00 : 86fb6: 77 d5 ja 86f8d 0.00 : 86fb8: eb 8e jmp 86f48 0.00 : 86fba: 4d 39 ea cmp %r13,%r10 0.00 : 86fbd: 73 3d jae 86ffc 0.00 : 86fbf: 4c 89 54 24 d8 mov %r10,-0x28(%rsp) 0.00 : 86fc4: 48 c7 44 24 c0 ff ff movq $0xffffffffffffffff,-0x40(%rsp) 0.00 : 86fcb: ff ff 0.00 : 86fcd: 0f 1f 00 nopl (%rax) 0.00 : 86fd0: e9 db fc ff ff jmpq 86cb0 0.00 : 86fd5: 4c 89 54 24 d8 mov %r10,-0x28(%rsp) 0.00 : 86fda: e9 d1 fc ff ff jmpq 86cb0 0.00 : 86fdf: 48 8b 44 24 f0 mov -0x10(%rsp),%rax 0.00 : 86fe4: 49 8d 5a ff lea -0x1(%r10),%rbx 0.00 : 86fe8: 48 89 5c 24 c8 mov %rbx,-0x38(%rsp) 0.00 : 86fed: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 86ff2: 48 89 44 24 c0 mov %rax,-0x40(%rsp) 0.00 : 86ff7: e9 b4 fc ff ff jmpq 86cb0 0.00 : 86ffc: 48 8b 44 24 c8 mov -0x38(%rsp),%rax 0.00 : 87001: 31 c9 xor %ecx,%ecx 0.00 : 87003: 48 89 44 24 c0 mov %rax,-0x40(%rsp) 0.00 : 87008: e9 f7 fe ff ff jmpq 86f04 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b5ed0 : 0.00 : b5ed0: 41 57 push %r15 0.00 : b5ed2: 49 89 ff mov %rdi,%r15 0.00 : b5ed5: 41 56 push %r14 0.00 : b5ed7: 49 89 f6 mov %rsi,%r14 0.00 : b5eda: 41 55 push %r13 0.00 : b5edc: 41 54 push %r12 0.00 : b5ede: 49 89 d4 mov %rdx,%r12 0.00 : b5ee1: 55 push %rbp 0.00 : b5ee2: 53 push %rbx 0.00 : b5ee3: 48 83 ec 08 sub $0x8,%rsp 0.00 : b5ee7: 44 8b 52 04 mov 0x4(%rdx),%r10d 0.00 : b5eeb: 41 83 fa 00 cmp $0x0,%r10d 0.00 : b5eef: 0f 84 f6 01 00 00 je b60eb 0.00 : b5ef5: 44 89 d5 mov %r10d,%ebp 0.00 : b5ef8: 7e 12 jle b5f0c 0.00 : b5efa: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : b5efe: 31 c0 xor %eax,%eax 0.00 : b5f00: 03 2c 82 add (%rdx,%rax,4),%ebp 0.00 : b5f03: 48 83 c0 01 add $0x1,%rax 0.00 : b5f07: 41 39 c2 cmp %eax,%r10d 0.00 : b5f0a: 7f f4 jg b5f00 0.00 : b5f0c: 89 e8 mov %ebp,%eax 0.00 : b5f0e: 41 23 86 84 00 00 00 and 0x84(%r14),%eax 0.00 : b5f15: 48 c1 e0 04 shl $0x4,%rax 0.00 : b5f19: 49 03 46 40 add 0x40(%r14),%rax 0.00 : b5f1d: 44 8b 18 mov (%rax),%r11d 0.00 : b5f20: 45 85 db test %r11d,%r11d 0.00 : b5f23: 7e 4a jle b5f6f 0.00 : b5f25: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : b5f29: 41 8d 42 ff lea -0x1(%r10),%eax 0.00 : b5f2d: 31 f6 xor %esi,%esi 0.00 : b5f2f: 48 98 cltq 0.00 : b5f31: 48 8d 1c 85 00 00 00 lea 0x0(,%rax,4),%rbx 0.00 : b5f38: 00 0.00 : b5f39: eb 11 jmp b5f4c 0.00 : b5f3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b5f40: 83 c6 01 add $0x1,%esi 0.00 : b5f43: 48 83 c7 08 add $0x8,%rdi 0.00 : b5f47: 44 39 de cmp %r11d,%esi 0.00 : b5f4a: 7d 23 jge b5f6f 0.00 : b5f4c: 48 8b 0f mov (%rdi),%rcx 0.00 : b5f4f: 39 29 cmp %ebp,(%rcx) 0.00 : b5f51: 75 ed jne b5f40 0.00 : b5f53: 44 3b 51 0c cmp 0xc(%rcx),%r10d 0.00 : b5f57: 49 89 d8 mov %rbx,%r8 0.00 : b5f5a: 45 89 d1 mov %r10d,%r9d 0.00 : b5f5d: 0f 84 1a 01 00 00 je b607d 0.00 : b5f63: 83 c6 01 add $0x1,%esi 0.00 : b5f66: 48 83 c7 08 add $0x8,%rdi 0.00 : b5f6a: 44 39 de cmp %r11d,%esi 0.00 : b5f6d: 7c dd jl b5f4c 0.00 : b5f6f: be 01 00 00 00 mov $0x1,%esi 0.00 : b5f74: bf 58 00 00 00 mov $0x58,%edi 0.00 : b5f79: e8 12 89 f6 ff callq 1e890 0.00 : b5f7e: 48 85 c0 test %rax,%rax 0.00 : b5f81: 48 89 c3 mov %rax,%rbx 0.00 : b5f84: 0f 84 43 01 00 00 je b60cd 0.00 : b5f8a: 4c 8d 68 08 lea 0x8(%rax),%r13 0.00 : b5f8e: 4c 89 e6 mov %r12,%rsi 0.00 : b5f91: 4c 89 ef mov %r13,%rdi 0.00 : b5f94: e8 67 cf ff ff callq b2f00 0.00 : b5f99: 85 c0 test %eax,%eax 0.00 : b5f9b: 0f 85 54 01 00 00 jne b60f5 0.00 : b5fa1: 4c 89 6b 38 mov %r13,0x38(%rbx) 0.00 : b5fa5: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : b5faa: 85 c0 test %eax,%eax 0.00 : b5fac: 0f 8e ff 00 00 00 jle b60b1 0.00 : b5fb2: 45 31 c9 xor %r9d,%r9d 0.00 : b5fb5: 45 31 c0 xor %r8d,%r8d 0.00 : b5fb8: 4d 8b 54 24 08 mov 0x8(%r12),%r10 0.00 : b5fbd: eb 5f jmp b601e 0.00 : b5fbf: 90 nop 0.00 : b5fc0: 0f b6 73 50 movzbl 0x50(%rbx),%esi 0.00 : b5fc4: 0f b6 51 0a movzbl 0xa(%rcx),%edx 0.00 : b5fc8: 89 f0 mov %esi,%eax 0.00 : b5fca: c0 ea 04 shr $0x4,%dl 0.00 : b5fcd: c0 e8 05 shr $0x5,%al 0.00 : b5fd0: 09 d0 or %edx,%eax 0.00 : b5fd2: 89 f2 mov %esi,%edx 0.00 : b5fd4: 83 e0 01 and $0x1,%eax 0.00 : b5fd7: 83 e2 df and $0xffffffdf,%edx 0.00 : b5fda: c1 e0 05 shl $0x5,%eax 0.00 : b5fdd: 09 c2 or %eax,%edx 0.00 : b5fdf: 83 ff 02 cmp $0x2,%edi 0.00 : b5fe2: 89 d6 mov %edx,%esi 0.00 : b5fe4: 88 53 50 mov %dl,0x50(%rbx) 0.00 : b5fe7: 0f 84 ab 00 00 00 je b6098 0.00 : b5fed: 83 ff 04 cmp $0x4,%edi 0.00 : b5ff0: 0f 84 ea 00 00 00 je b60e0 0.00 : b5ff6: 83 ff 0c cmp $0xc,%edi 0.00 : b5ff9: 74 09 je b6004 0.00 : b5ffb: f7 41 08 00 ff 03 00 testl $0x3ff00,0x8(%rcx) 0.00 : b6002: 74 07 je b600b 0.00 : b6004: 83 ce 80 or $0xffffff80,%esi 0.00 : b6007: 40 88 73 50 mov %sil,0x50(%rbx) 0.00 : b600b: 41 83 c1 01 add $0x1,%r9d 0.00 : b600f: 49 83 c0 04 add $0x4,%r8 0.00 : b6013: 45 3b 4c 24 04 cmp 0x4(%r12),%r9d 0.00 : b6018: 0f 8d 93 00 00 00 jge b60b1 0.00 : b601e: 4b 63 0c 02 movslq (%r10,%r8,1),%rcx 0.00 : b6022: 48 c1 e1 04 shl $0x4,%rcx 0.00 : b6026: 49 03 0e add (%r14),%rcx 0.00 : b6029: 0f b6 79 08 movzbl 0x8(%rcx),%edi 0.00 : b602d: 83 ff 01 cmp $0x1,%edi 0.00 : b6030: 75 8e jne b5fc0 0.00 : b6032: f7 41 08 00 ff 03 00 testl $0x3ff00,0x8(%rcx) 0.00 : b6039: 74 d0 je b600b 0.00 : b603b: 0f b6 73 50 movzbl 0x50(%rbx),%esi 0.00 : b603f: 0f b6 41 0a movzbl 0xa(%rcx),%eax 0.00 : b6043: 89 f2 mov %esi,%edx 0.00 : b6045: c0 e8 04 shr $0x4,%al 0.00 : b6048: 83 e6 df and $0xffffffdf,%esi 0.00 : b604b: c0 ea 05 shr $0x5,%dl 0.00 : b604e: 09 d0 or %edx,%eax 0.00 : b6050: 83 e0 01 and $0x1,%eax 0.00 : b6053: c1 e0 05 shl $0x5,%eax 0.00 : b6056: 09 c6 or %eax,%esi 0.00 : b6058: 40 88 73 50 mov %sil,0x50(%rbx) 0.00 : b605c: eb 9d jmp b5ffb 0.00 : b605e: 66 90 xchg %ax,%ax 0.00 : b6060: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : b6064: 42 8b 14 00 mov (%rax,%r8,1),%edx 100.00 : b6068: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : b606d: 42 8b 04 00 mov (%rax,%r8,1),%eax 0.00 : b6071: 49 83 e8 04 sub $0x4,%r8 0.00 : b6075: 39 c2 cmp %eax,%edx 0.00 : b6077: 0f 85 c3 fe ff ff jne b5f40 0.00 : b607d: 41 83 e9 01 sub $0x1,%r9d 0.00 : b6081: 79 dd jns b6060 0.00 : b6083: 48 83 c4 08 add $0x8,%rsp 0.00 : b6087: 48 89 c8 mov %rcx,%rax 0.00 : b608a: 5b pop %rbx 0.00 : b608b: 5d pop %rbp 0.00 : b608c: 41 5c pop %r12 0.00 : b608e: 41 5d pop %r13 0.00 : b6090: 41 5e pop %r14 0.00 : b6092: 41 5f pop %r15 0.00 : b6094: c3 retq 0.00 : b6095: 0f 1f 00 nopl (%rax) 0.00 : b6098: 83 ca 10 or $0x10,%edx 0.00 : b609b: 41 83 c1 01 add $0x1,%r9d 0.00 : b609f: 49 83 c0 04 add $0x4,%r8 0.00 : b60a3: 88 53 50 mov %dl,0x50(%rbx) 0.00 : b60a6: 45 3b 4c 24 04 cmp 0x4(%r12),%r9d 0.00 : b60ab: 0f 8c 6d ff ff ff jl b601e 0.00 : b60b1: 89 ea mov %ebp,%edx 0.00 : b60b3: 48 89 de mov %rbx,%rsi 0.00 : b60b6: 4c 89 f7 mov %r14,%rdi 0.00 : b60b9: e8 a2 c5 ff ff callq b2660 0.00 : b60be: 85 c0 test %eax,%eax 0.00 : b60c0: 48 89 d9 mov %rbx,%rcx 0.00 : b60c3: 74 be je b6083 0.00 : b60c5: 48 89 df mov %rbx,%rdi 0.00 : b60c8: e8 13 bd ff ff callq b1de0 0.00 : b60cd: 41 c7 07 0c 00 00 00 movl $0xc,(%r15) 0.00 : b60d4: 31 c9 xor %ecx,%ecx 0.00 : b60d6: eb ab jmp b6083 0.00 : b60d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b60df: 00 0.00 : b60e0: 83 ca 40 or $0x40,%edx 0.00 : b60e3: 88 53 50 mov %dl,0x50(%rbx) 0.00 : b60e6: e9 20 ff ff ff jmpq b600b 0.00 : b60eb: c7 07 00 00 00 00 movl $0x0,(%rdi) 0.00 : b60f1: 31 c9 xor %ecx,%ecx 0.00 : b60f3: eb 8e jmp b6083 0.00 : b60f5: 48 89 df mov %rbx,%rdi 0.00 : b60f8: e8 a3 87 f6 ff callq 1e8a0 0.00 : b60fd: eb ce jmp b60cd Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000eed50 <__printf_chk>: 33.33 : eed50: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : eed55: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : eed5a: 41 89 fc mov %edi,%r12d 0.00 : eed5d: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : eed62: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : eed67: 48 81 ec f8 00 00 00 sub $0xf8,%rsp 0.00 : eed6e: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.00 : eed73: 0f b6 d0 movzbl %al,%edx 0.00 : eed76: 48 8b 2d ab 31 28 00 mov 0x2831ab(%rip),%rbp # 371f28 <_DYNAMIC+0x3c8> 0.00 : eed7d: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : eed84: 00 0.00 : eed85: 48 8d 15 3f 00 00 00 lea 0x3f(%rip),%rdx # eedcb <__printf_chk+0x7b> 0.00 : eed8c: 4c 89 44 24 40 mov %r8,0x40(%rsp) 0.00 : eed91: 48 89 4c 24 38 mov %rcx,0x38(%rsp) 0.00 : eed96: 4c 89 4c 24 48 mov %r9,0x48(%rsp) 0.00 : eed9b: 49 89 f0 mov %rsi,%r8 0.00 : eed9e: 48 29 c2 sub %rax,%rdx 0.00 : eeda1: 48 8d 84 24 cf 00 00 lea 0xcf(%rsp),%rax 0.00 : eeda8: 00 0.00 : eeda9: ff e2 jmpq *%rdx 0.00 : eedab: 0f 29 78 f1 movaps %xmm7,-0xf(%rax) 0.00 : eedaf: 0f 29 70 e1 movaps %xmm6,-0x1f(%rax) 0.00 : eedb3: 0f 29 68 d1 movaps %xmm5,-0x2f(%rax) 0.00 : eedb7: 0f 29 60 c1 movaps %xmm4,-0x3f(%rax) 0.00 : eedbb: 0f 29 58 b1 movaps %xmm3,-0x4f(%rax) 0.00 : eedbf: 0f 29 50 a1 movaps %xmm2,-0x5f(%rax) 0.00 : eedc3: 0f 29 48 91 movaps %xmm1,-0x6f(%rax) 0.00 : eedc7: 0f 29 40 81 movaps %xmm0,-0x7f(%rax) 0.00 : eedcb: 48 8b 5d 00 mov 0x0(%rbp),%rbx 0.00 : eedcf: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : eedd3: 78 56 js eee2b <__printf_chk+0xdb> 33.33 : eedd5: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : eeddc: 64 4c 8b 2c 25 10 00 mov %fs:0x10,%r13 0.00 : eede3: 00 00 0.00 : eede5: 4d 3b 6a 08 cmp 0x8(%r10),%r13 0.00 : eede9: 74 3b je eee26 <__printf_chk+0xd6> 33.33 : eedeb: 31 d2 xor %edx,%edx 0.00 : eeded: be 01 00 00 00 mov $0x1,%esi 0.00 : eedf2: 89 d0 mov %edx,%eax 0.00 : eedf4: 83 3d b9 88 28 00 00 cmpl $0x0,0x2888b9(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : eedfb: 74 0d je eee0a <__printf_chk+0xba> 0.00 : eedfd: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : eee02: 0f 85 45 01 00 00 jne eef4d <_L_lock_52> 0.00 : eee08: eb 0a jmp eee14 <__printf_chk+0xc4> 0.00 : eee0a: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : eee0e: 0f 85 39 01 00 00 jne eef4d <_L_lock_52> 0.00 : eee14: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : eee1b: 4c 89 68 08 mov %r13,0x8(%rax) 0.00 : eee1f: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : eee26: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : eee2b: 45 85 e4 test %r12d,%r12d 0.00 : eee2e: 7e 08 jle eee38 <__printf_chk+0xe8> 0.00 : eee30: 48 8b 45 00 mov 0x0(%rbp),%rax 0.00 : eee34: 83 48 74 04 orl $0x4,0x74(%rax) 0.00 : eee38: 48 8d 7c 24 20 lea 0x20(%rsp),%rdi 0.00 : eee3d: 48 8d 84 24 00 01 00 lea 0x100(%rsp),%rax 0.00 : eee44: 00 0.00 : eee45: c7 04 24 10 00 00 00 movl $0x10,(%rsp) 0.00 : eee4c: c7 44 24 04 30 00 00 movl $0x30,0x4(%rsp) 0.00 : eee53: 00 0.00 : eee54: 48 89 e2 mov %rsp,%rdx 0.00 : eee57: 4c 89 c6 mov %r8,%rsi 0.00 : eee5a: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : eee5f: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : eee64: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : eee68: e8 53 54 f5 ff callq 442c0 <_IO_vfprintf> 0.00 : eee6d: 45 85 e4 test %r12d,%r12d 0.00 : eee70: 89 c6 mov %eax,%esi 0.00 : eee72: 7e 08 jle eee7c <__printf_chk+0x12c> 0.00 : eee74: 48 8b 45 00 mov 0x0(%rbp),%rax 0.00 : eee78: 83 60 74 fb andl $0xfffffffb,0x74(%rax) 0.00 : eee7c: 83 63 74 eb andl $0xffffffeb,0x74(%rbx) 0.00 : eee80: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : eee84: 78 4a js eeed0 <__printf_chk+0x180> 0.00 : eee86: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : eee8d: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : eee90: 83 e8 01 sub $0x1,%eax 0.00 : eee93: 85 c0 test %eax,%eax 0.00 : eee95: 89 42 04 mov %eax,0x4(%rdx) 0.00 : eee98: 75 36 jne eeed0 <__printf_chk+0x180> 0.00 : eee9a: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : eeea1: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : eeea8: 00 0.00 : eeea9: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : eeeb0: 83 3d fd 87 28 00 00 cmpl $0x0,0x2887fd(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : eeeb7: 74 0b je eeec4 <__printf_chk+0x174> 0.00 : eeeb9: f0 ff 0a lock decl (%rdx) 0.00 : eeebc: 0f 85 a6 00 00 00 jne eef68 <_L_unlock_120> 0.00 : eeec2: eb 08 jmp eeecc <__printf_chk+0x17c> 0.00 : eeec4: ff 0a decl (%rdx) 0.00 : eeec6: 0f 85 9c 00 00 00 jne eef68 <_L_unlock_120> 0.00 : eeecc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : eeed0: 89 f0 mov %esi,%eax 0.00 : eeed2: 48 8b 9c 24 d8 00 00 mov 0xd8(%rsp),%rbx 0.00 : eeed9: 00 0.00 : eeeda: 48 8b ac 24 e0 00 00 mov 0xe0(%rsp),%rbp 0.00 : eeee1: 00 0.00 : eeee2: 4c 8b a4 24 e8 00 00 mov 0xe8(%rsp),%r12 0.00 : eeee9: 00 0.00 : eeeea: 4c 8b ac 24 f0 00 00 mov 0xf0(%rsp),%r13 0.00 : eeef1: 00 0.00 : eeef2: 48 81 c4 f8 00 00 00 add $0xf8,%rsp 0.00 : eeef9: c3 retq 0.00 : eeefa: 83 63 74 eb andl $0xffffffeb,0x74(%rbx) 0.00 : eeefe: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : eef02: 49 89 c0 mov %rax,%r8 0.00 : eef05: 78 3e js eef45 <__printf_chk+0x1f5> 0.00 : eef07: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : eef0e: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : eef11: 83 e8 01 sub $0x1,%eax 0.00 : eef14: 85 c0 test %eax,%eax 0.00 : eef16: 89 42 04 mov %eax,0x4(%rdx) 0.00 : eef19: 75 2a jne eef45 <__printf_chk+0x1f5> 0.00 : eef1b: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : eef22: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : eef29: 00 0.00 : eef2a: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : eef31: 83 3d 7c 87 28 00 00 cmpl $0x0,0x28877c(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : eef38: 74 07 je eef41 <__printf_chk+0x1f1> 0.00 : eef3a: f0 ff 0a lock decl (%rdx) 0.00 : eef3d: 75 44 jne eef83 <_L_unlock_171> 0.00 : eef3f: eb 04 jmp eef45 <__printf_chk+0x1f5> 0.00 : eef41: ff 0a decl (%rdx) 0.00 : eef43: 75 3e jne eef83 <_L_unlock_171> 0.00 : eef45: 4c 89 c7 mov %r8,%rdi 0.00 : eef48: e8 13 00 f3 ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000115f10 <__strrchr_sse42>: 33.33 : 115f10: 40 84 f6 test %sil,%sil 0.00 : 115f13: 0f 84 e7 0d 00 00 je 116d00 <__strend_sse4> 33.33 : 115f19: 31 c0 xor %eax,%eax 0.00 : 115f1b: 66 0f 6e ce movd %esi,%xmm1 0.00 : 115f1f: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 115f23: 89 fe mov %edi,%esi 0.00 : 115f25: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 115f29: 83 e6 0f and $0xf,%esi 0.00 : 115f2c: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 115f31: 49 89 f8 mov %rdi,%r8 0.00 : 115f34: 74 5a je 115f90 <__strrchr_sse42+0x80> 0.00 : 115f36: 48 8d 15 a3 dc 02 00 lea 0x2dca3(%rip),%rdx # 143be0 0.00 : 115f3d: 49 83 e0 f0 and $0xfffffffffffffff0,%r8 0.00 : 115f41: 4c 63 0c b2 movslq (%rdx,%rsi,4),%r9 0.00 : 115f45: 66 41 0f 6f 00 movdqa (%r8),%xmm0 0.00 : 115f4a: 49 01 d1 add %rdx,%r9 0.00 : 115f4d: 41 ff e1 jmpq *%r9 0.00 : 115f50: 66 0f 73 d8 01 psrldq $0x1,%xmm0 0.00 : 115f55: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115f5c: 00 00 00 00 0.00 : 115f60: 66 0f 3a 63 c1 4a pcmpistri $0x4a,%xmm1,%xmm0 16.67 : 115f66: 73 04 jae 115f6c <__strrchr_sse42+0x5c> 0.00 : 115f68: 48 8d 04 0f lea (%rdi,%rcx,1),%rax 0.00 : 115f6c: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115f72: ba 10 00 00 00 mov $0x10,%edx 0.00 : 115f77: 29 f2 sub %esi,%edx 0.00 : 115f79: 39 ca cmp %ecx,%edx 0.00 : 115f7b: 7f 43 jg 115fc0 <__strrchr_sse42+0xb0> 0.00 : 115f7d: 49 83 c0 10 add $0x10,%r8 0.00 : 115f81: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115f88: 0f 1f 84 00 00 00 00 0.00 : 115f8f: 00 0.00 : 115f90: 66 41 0f 3a 63 08 4a pcmpistri $0x4a,(%r8),%xmm1 0.00 : 115f97: 76 07 jbe 115fa0 <__strrchr_sse42+0x90> 0.00 : 115f99: 49 83 c0 10 add $0x10,%r8 0.00 : 115f9d: eb f1 jmp 115f90 <__strrchr_sse42+0x80> 0.00 : 115f9f: 90 nop 0.00 : 115fa0: 74 0e je 115fb0 <__strrchr_sse42+0xa0> 0.00 : 115fa2: 49 8d 04 08 lea (%r8,%rcx,1),%rax 0.00 : 115fa6: 49 83 c0 10 add $0x10,%r8 0.00 : 115faa: eb e4 jmp 115f90 <__strrchr_sse42+0x80> 0.00 : 115fac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 115fb0: 73 0e jae 115fc0 <__strrchr_sse42+0xb0> 0.00 : 115fb2: 49 8d 04 08 lea (%r8,%rcx,1),%rax 0.00 : 115fb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115fbd: 00 00 00 0.00 : 115fc0: c3 retq 0.00 : 115fc1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115fc8: 0f 1f 84 00 00 00 00 0.00 : 115fcf: 00 0.00 : 115fd0: 66 0f 73 d8 0f psrldq $0xf,%xmm0 0.00 : 115fd5: eb 89 jmp 115f60 <__strrchr_sse42+0x50> 0.00 : 115fd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 115fde: 00 00 0.00 : 115fe0: 66 0f 73 d8 0e psrldq $0xe,%xmm0 0.00 : 115fe5: e9 76 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 115fea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 115ff0: 66 0f 73 d8 0d psrldq $0xd,%xmm0 0.00 : 115ff5: e9 66 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 115ffa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116000: 66 0f 73 d8 0c psrldq $0xc,%xmm0 0.00 : 116005: e9 56 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11600a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116010: 66 0f 73 d8 0b psrldq $0xb,%xmm0 0.00 : 116015: e9 46 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11601a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116020: 66 0f 73 d8 0a psrldq $0xa,%xmm0 0.00 : 116025: e9 36 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11602a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116030: 66 0f 73 d8 09 psrldq $0x9,%xmm0 0.00 : 116035: e9 26 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11603a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116040: 66 0f 73 d8 08 psrldq $0x8,%xmm0 16.67 : 116045: e9 16 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11604a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116050: 66 0f 73 d8 07 psrldq $0x7,%xmm0 0.00 : 116055: e9 06 ff ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11605a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116060: 66 0f 73 d8 06 psrldq $0x6,%xmm0 0.00 : 116065: e9 f6 fe ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11606a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116070: 66 0f 73 d8 05 psrldq $0x5,%xmm0 0.00 : 116075: e9 e6 fe ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11607a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116080: 66 0f 73 d8 04 psrldq $0x4,%xmm0 0.00 : 116085: e9 d6 fe ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11608a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 116090: 66 0f 73 d8 03 psrldq $0x3,%xmm0 0.00 : 116095: e9 c6 fe ff ff jmpq 115f60 <__strrchr_sse42+0x50> 0.00 : 11609a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1160a0: 66 0f 73 d8 02 psrldq $0x2,%xmm0 0.00 : 1160a5: e9 b6 fe ff ff jmpq 115f60 <__strrchr_sse42+0x50> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000057b0 : 20.00 : 57b0: 55 push %rbp 20.00 : 57b1: 48 89 e5 mov %rsp,%rbp 0.00 : 57b4: 41 57 push %r15 0.00 : 57b6: 41 56 push %r14 0.00 : 57b8: 41 89 ce mov %ecx,%r14d 0.00 : 57bb: 41 55 push %r13 0.00 : 57bd: 49 89 d5 mov %rdx,%r13 0.00 : 57c0: 41 54 push %r12 0.00 : 57c2: 53 push %rbx 0.00 : 57c3: 48 83 ec 48 sub $0x48,%rsp 0.00 : 57c7: 48 89 75 c0 mov %rsi,-0x40(%rbp) 0.00 : 57cb: 8b 35 67 95 21 00 mov 0x219567(%rip),%esi # 21ed38 <_rtld_global_ro+0x118> 0.00 : 57d1: 48 89 7d c8 mov %rdi,-0x38(%rbp) 0.00 : 57d5: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 57d9: 44 88 4d b7 mov %r9b,-0x49(%rbp) 0.00 : 57dd: 85 f6 test %esi,%esi 0.00 : 57df: 74 5f je 5840 0.00 : 57e1: 85 c9 test %ecx,%ecx 0.00 : 57e3: 74 5b je 5840 0.00 : 57e5: f6 82 15 03 00 00 08 testb $0x8,0x315(%rdx) 0.00 : 57ec: 75 52 jne 5840 0.00 : 57ee: 4c 8b 25 3b 95 21 00 mov 0x21953b(%rip),%r12 # 21ed30 <_rtld_global_ro+0x110> 0.00 : 57f5: 31 db xor %ebx,%ebx 0.00 : 57f7: eb 17 jmp 5810 0.00 : 57f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5800: 83 c3 01 add $0x1,%ebx 0.00 : 5803: 39 1d 2f 95 21 00 cmp %ebx,0x21952f(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 5809: 4d 8b 64 24 40 mov 0x40(%r12),%r12 0.00 : 580e: 76 30 jbe 5840 0.00 : 5810: 49 8b 4c 24 08 mov 0x8(%r12),%rcx 0.00 : 5815: 48 85 c9 test %rcx,%rcx 0.00 : 5818: 74 e6 je 5800 0.00 : 581a: 89 d8 mov %ebx,%eax 0.00 : 581c: 44 89 f2 mov %r14d,%edx 0.00 : 581f: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5823: 48 c1 e0 04 shl $0x4,%rax 0.00 : 5827: 49 8d b4 05 70 04 00 lea 0x470(%r13,%rax,1),%rsi 0.00 : 582e: 00 0.00 : 582f: ff d1 callq *%rcx 0.00 : 5831: 48 85 c0 test %rax,%rax 0.00 : 5834: 0f 84 f4 01 00 00 je 5a2e 0.00 : 583a: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 583e: eb c0 jmp 5800 0.00 : 5840: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5844: 31 f6 xor %esi,%esi 0.00 : 5846: 31 c0 xor %eax,%eax 0.00 : 5848: e8 03 07 01 00 callq 15f50 <__libc_open> 0.00 : 584d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5850: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 5853: 0f 84 df 01 00 00 je 5a38 0.00 : 5859: 4c 8b 7d c0 mov -0x40(%rbp),%r15 0.00 : 585d: ba 40 03 00 00 mov $0x340,%edx 0.00 : 5862: 89 c7 mov %eax,%edi 0.00 : 5864: c7 05 16 a9 21 00 00 movl $0x0,0x21a916(%rip) # 220184 0.00 : 586b: 00 00 00 0.00 : 586e: 49 83 c7 08 add $0x8,%r15 0.00 : 5872: 4c 89 fe mov %r15,%rsi 0.00 : 5875: e8 36 07 01 00 callq 15fb0 <__libc_read> 0.00 : 587a: 49 89 c0 mov %rax,%r8 0.00 : 587d: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 5881: 49 83 f8 3f cmp $0x3f,%r8 0.00 : 5885: 4c 89 00 mov %r8,(%rax) 0.00 : 5888: 0f 8e c6 02 00 00 jle 5b54 0.00 : 588e: 48 8d 3d 8b 31 01 00 lea 0x1318b(%rip),%rdi # 18a20 0.00 : 5895: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 589a: 4c 89 fe mov %r15,%rsi 0.00 : 589d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 589f: 0f 85 d0 02 00 00 jne 5b75 0.00 : 58a5: 45 31 e4 xor %r12d,%r12d 0.00 : 58a8: 41 83 7f 14 01 cmpl $0x1,0x14(%r15) 0.00 : 58ad: 4c 8d 2d 24 59 01 00 lea 0x15924(%rip),%r13 # 1b1d8 <__PRETTY_FUNCTION__.3644+0xe67> 0.00 : 58b4: 0f 85 e3 01 00 00 jne 5a9d 0.00 : 58ba: 66 41 83 7f 12 3e cmpw $0x3e,0x12(%r15) 0.00 : 58c0: 0f 85 56 01 00 00 jne 5a1c 0.00 : 58c6: 41 0f b7 47 10 movzwl 0x10(%r15),%eax 0.00 : 58cb: 48 83 f8 03 cmp $0x3,%rax 0.00 : 58cf: 0f 85 eb 02 00 00 jne 5bc0 0.00 : 58d5: 45 31 e4 xor %r12d,%r12d 0.00 : 58d8: 66 41 83 7f 36 38 cmpw $0x38,0x36(%r15) 0.00 : 58de: 4c 8d 2d 4b 59 01 00 lea 0x1594b(%rip),%r13 # 1b230 <__PRETTY_FUNCTION__.3644+0xebf> 0.00 : 58e5: 0f 85 b2 01 00 00 jne 5a9d 0.00 : 58eb: 41 0f b7 4f 38 movzwl 0x38(%r15),%ecx 0.00 : 58f0: 49 8b 77 20 mov 0x20(%r15),%rsi 0.00 : 58f4: 4d 8d 34 37 lea (%r15,%rsi,1),%r14 0.00 : 58f8: 48 8d 04 cd 00 00 00 lea 0x0(,%rcx,8),%rax 0.00 : 58ff: 00 0.00 : 5900: 48 89 cb mov %rcx,%rbx 0.00 : 5903: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 5907: 48 29 c3 sub %rax,%rbx 0.00 : 590a: 48 8d 04 33 lea (%rbx,%rsi,1),%rax 0.00 : 590e: 4c 39 c0 cmp %r8,%rax 0.00 : 5911: 0f 87 b1 01 00 00 ja 5ac8 0.00 : 5917: 49 8d 04 1e lea (%r14,%rbx,1),%rax 0.00 : 591b: 49 39 c6 cmp %rax,%r14 0.00 : 591e: 0f 83 14 01 00 00 jae 5a38 0.00 : 5924: 4d 89 f4 mov %r14,%r12 20.00 : 5927: 4c 8d 0d e2 30 01 00 lea 0x130e2(%rip),%r9 # 18a10 0.00 : 592e: 41 b8 10 00 00 00 mov $0x10,%r8d 0.00 : 5934: eb 2d jmp 5963 0.00 : 5936: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 593d: 00 00 00 0.00 : 5940: 48 8d 14 cd 00 00 00 lea 0x0(,%rcx,8),%rdx 0.00 : 5947: 00 0.00 : 5948: 48 89 c8 mov %rcx,%rax 0.00 : 594b: 49 83 c4 38 add $0x38,%r12 0.00 : 594f: 48 c1 e0 06 shl $0x6,%rax 0.00 : 5953: 48 29 d0 sub %rdx,%rax 0.00 : 5956: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 595a: 49 39 c4 cmp %rax,%r12 0.00 : 595d: 0f 83 d5 00 00 00 jae 5a38 20.00 : 5963: 41 83 3c 24 04 cmpl $0x4,(%r12) 0.00 : 5968: 75 d6 jne 5940 0.00 : 596a: 4d 8b 6c 24 20 mov 0x20(%r12),%r13 20.00 : 596f: 49 83 fd 1f cmp $0x1f,%r13 0.00 : 5973: 76 cb jbe 5940 0.00 : 5975: 49 83 7c 24 30 03 cmpq $0x3,0x30(%r12) 0.00 : 597b: 76 c3 jbe 5940 0.00 : 597d: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 5982: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 5986: 4a 8d 04 2e lea (%rsi,%r13,1),%rax 0.00 : 598a: 48 3b 02 cmp (%rdx),%rax 0.00 : 598d: 49 8d 1c 37 lea (%r15,%rsi,1),%rbx 0.00 : 5991: 76 36 jbe 59c9 0.00 : 5993: e9 b2 00 00 00 jmpq 5a4a 0.00 : 5998: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 599f: 00 0.00 : 59a0: 8b 03 mov (%rbx),%eax 0.00 : 59a2: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 59a5: 48 83 c0 03 add $0x3,%rax 0.00 : 59a9: 48 83 c2 03 add $0x3,%rdx 0.00 : 59ad: 48 83 e0 fc and $0xfffffffffffffffc,%rax 0.00 : 59b1: 48 83 e2 fc and $0xfffffffffffffffc,%rdx 0.00 : 59b5: 48 8d 54 10 0c lea 0xc(%rax,%rdx,1),%rdx 0.00 : 59ba: 49 8d 45 e0 lea -0x20(%r13),%rax 0.00 : 59be: 48 39 c2 cmp %rax,%rdx 0.00 : 59c1: 77 18 ja 59db 0.00 : 59c3: 49 29 d5 sub %rdx,%r13 0.00 : 59c6: 48 01 d3 add %rdx,%rbx 0.00 : 59c9: 48 89 de mov %rbx,%rsi 0.00 : 59cc: 4c 89 cf mov %r9,%rdi 0.00 : 59cf: 4c 89 c1 mov %r8,%rcx 0.00 : 59d2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 59d4: 75 ca jne 59a0 0.00 : 59d6: 4d 85 ed test %r13,%r13 0.00 : 59d9: 75 0a jne 59e5 0.00 : 59db: 41 0f b7 4f 38 movzwl 0x38(%r15),%ecx 0.00 : 59e0: e9 5b ff ff ff jmpq 5940 0.00 : 59e5: 8b 4b 10 mov 0x10(%rbx),%ecx 0.00 : 59e8: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 59eb: 8b 53 18 mov 0x18(%rbx),%edx 0.00 : 59ee: 8b 73 1c mov 0x1c(%rbx),%esi 0.00 : 59f1: 85 c9 test %ecx,%ecx 0.00 : 59f3: 75 27 jne 5a1c 0.00 : 59f5: 8b 0d 29 92 21 00 mov 0x219229(%rip),%ecx # 21ec24 <_rtld_global_ro+0x4> 0.00 : 59fb: 85 c9 test %ecx,%ecx 0.00 : 59fd: 74 39 je 5a38 0.00 : 59ff: 25 ff 00 00 00 and $0xff,%eax 0.00 : 5a04: 81 e2 ff 00 00 00 and $0xff,%edx 0.00 : 5a0a: c1 e0 08 shl $0x8,%eax 0.00 : 5a0d: 01 d0 add %edx,%eax 0.00 : 5a0f: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 5a13: c1 e0 08 shl $0x8,%eax 0.00 : 5a16: 01 d0 add %edx,%eax 0.00 : 5a18: 39 c8 cmp %ecx,%eax 0.00 : 5a1a: 76 1c jbe 5a38 0.00 : 5a1c: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5a1f: e8 5c 05 01 00 callq 15f80 <__close> 0.00 : 5a24: c7 05 56 a7 21 00 02 movl $0x2,0x21a756(%rip) # 220184 0.00 : 5a2b: 00 00 00 0.00 : 5a2e: c7 45 d4 ff ff ff ff movl $0xffffffff,-0x2c(%rbp) 0.00 : 5a35: 0f 1f 00 nopl (%rax) 0.00 : 5a38: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 5a3b: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 5a3f: 5b pop %rbx 0.00 : 5a40: 41 5c pop %r12 0.00 : 5a42: 41 5d pop %r13 0.00 : 5a44: 41 5e pop %r14 0.00 : 5a46: 41 5f pop %r15 0.00 : 5a48: c9 leaveq 0.00 : 5a49: c3 retq 0.00 : 5a4a: 49 8d 45 1e lea 0x1e(%r13),%rax 0.00 : 5a4e: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5a51: 31 d2 xor %edx,%edx 0.00 : 5a53: 4c 89 45 a8 mov %r8,-0x58(%rbp) 0.00 : 5a57: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 5a5b: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5a5f: 48 29 c4 sub %rax,%rsp 0.00 : 5a62: 48 8d 5c 24 17 lea 0x17(%rsp),%rbx 0.00 : 5a67: e8 f4 07 01 00 callq 16260 <__libc_lseek> 0.00 : 5a6c: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5a6f: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5a73: 4c 89 ea mov %r13,%rdx 0.00 : 5a76: 48 89 de mov %rbx,%rsi 0.00 : 5a79: e8 32 05 01 00 callq 15fb0 <__libc_read> 0.00 : 5a7e: 49 39 c5 cmp %rax,%r13 0.00 : 5a81: 4c 8b 45 a8 mov -0x58(%rbp),%r8 0.00 : 5a85: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 5a89: 0f 84 3a ff ff ff je 59c9 0.00 : 5a8f: 44 8b 25 ee a6 21 00 mov 0x21a6ee(%rip),%r12d # 220184 0.00 : 5a96: 4c 8d 2d ec 3e 01 00 lea 0x13eec(%rip),%r13 # 19989 <__PRETTY_FUNCTION__.12417+0x87> 0.00 : 5a9d: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5aa1: 75 72 jne 5b15 0.00 : 5aa3: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 5aa7: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 5aaa: 4d 89 e9 mov %r13,%r9 0.00 : 5aad: 45 31 c0 xor %r8d,%r8d 0.00 : 5ab0: 31 c9 xor %ecx,%ecx 0.00 : 5ab2: 44 89 e7 mov %r12d,%edi 0.00 : 5ab5: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 5abc: 00 0.00 : 5abd: e8 6e fc ff ff callq 5730 0.00 : 5ac2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ac8: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 5acc: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5acf: 31 d2 xor %edx,%edx 0.00 : 5ad1: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5ad5: 48 29 c4 sub %rax,%rsp 0.00 : 5ad8: 4c 8d 74 24 17 lea 0x17(%rsp),%r14 0.00 : 5add: e8 7e 07 01 00 callq 16260 <__libc_lseek> 0.00 : 5ae2: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5ae5: 49 83 e6 f0 and $0xfffffffffffffff0,%r14 0.00 : 5ae9: 48 89 da mov %rbx,%rdx 0.00 : 5aec: 4c 89 f6 mov %r14,%rsi 0.00 : 5aef: e8 bc 04 01 00 callq 15fb0 <__libc_read> 0.00 : 5af4: 48 39 d8 cmp %rbx,%rax 0.00 : 5af7: 75 96 jne 5a8f 0.00 : 5af9: 41 0f b7 4f 38 movzwl 0x38(%r15),%ecx 0.00 : 5afe: 48 8d 04 cd 00 00 00 lea 0x0(,%rcx,8),%rax 0.00 : 5b05: 00 0.00 : 5b06: 48 89 cb mov %rcx,%rbx 0.00 : 5b09: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 5b0d: 48 29 c3 sub %rax,%rbx 0.00 : 5b10: e9 02 fe ff ff jmpq 5917 0.00 : 5b15: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5b19: e8 52 0c 01 00 callq 16770 <__GI_strlen> 0.00 : 5b1e: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 5b22: 48 83 c0 1f add $0x1f,%rax 0.00 : 5b26: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 5b2a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b2e: 48 29 c4 sub %rax,%rsp 0.00 : 5b31: 48 8d 7c 24 17 lea 0x17(%rsp),%rdi 0.00 : 5b36: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 5b3a: e8 b1 17 01 00 callq 172f0 0.00 : 5b3f: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5b43: 48 89 c3 mov %rax,%rbx 0.00 : 5b46: e8 a5 af ff ff callq af0 0.00 : 5b4b: 48 89 5d c8 mov %rbx,-0x38(%rbp) 0.00 : 5b4f: e9 4f ff ff ff jmpq 5aa3 0.00 : 5b54: 44 8b 25 29 a6 21 00 mov 0x21a629(%rip),%r12d # 220184 0.00 : 5b5b: 4c 8d 2d 27 3e 01 00 lea 0x13e27(%rip),%r13 # 19989 <__PRETTY_FUNCTION__.12417+0x87> 0.00 : 5b62: 48 8d 05 36 3e 01 00 lea 0x13e36(%rip),%rax # 1999f <__PRETTY_FUNCTION__.12417+0x9d> 0.00 : 5b69: 45 85 e4 test %r12d,%r12d 0.00 : 5b6c: 4c 0f 44 e8 cmove %rax,%r13 0.00 : 5b70: e9 28 ff ff ff jmpq 5a9d 0.00 : 5b75: 48 8d 3d ad 2e 01 00 lea 0x12ead(%rip),%rdi # 18a29 0.00 : 5b7c: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 5b81: 4c 89 fe mov %r15,%rsi 0.00 : 5b84: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5b86: 0f 84 19 fd ff ff je 58a5 0.00 : 5b8c: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 5b90: 45 31 e4 xor %r12d,%r12d 0.00 : 5b93: 4c 8d 2d 14 3e 01 00 lea 0x13e14(%rip),%r13 # 199ae <__PRETTY_FUNCTION__.12417+0xac> 0.00 : 5b9a: 81 7a 08 7f 45 4c 46 cmpl $0x464c457f,0x8(%rdx) 0.00 : 5ba1: 0f 85 f6 fe ff ff jne 5a9d 0.00 : 5ba7: 41 80 7f 04 02 cmpb $0x2,0x4(%r15) 0.00 : 5bac: 74 2b je 5bd9 0.00 : 5bae: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 5bb2: c6 00 01 movb $0x1,(%rax) 0.00 : 5bb5: e9 62 fe ff ff jmpq 5a1c 0.00 : 5bba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5bc0: 45 31 e4 xor %r12d,%r12d 0.00 : 5bc3: 48 83 f8 02 cmp $0x2,%rax 0.00 : 5bc7: 4c 8d 2d 3a 56 01 00 lea 0x1563a(%rip),%r13 # 1b208 <__PRETTY_FUNCTION__.3644+0xe97> 0.00 : 5bce: 0f 84 01 fd ff ff je 58d5 0.00 : 5bd4: e9 c4 fe ff ff jmpq 5a9d 0.00 : 5bd9: 45 31 e4 xor %r12d,%r12d 0.00 : 5bdc: 41 80 7f 05 01 cmpb $0x1,0x5(%r15) 0.00 : 5be1: 4c 8d 2d 88 55 01 00 lea 0x15588(%rip),%r13 # 1b170 <__PRETTY_FUNCTION__.3644+0xdff> 0.00 : 5be8: 0f 85 af fe ff ff jne 5a9d 0.00 : 5bee: 45 31 e4 xor %r12d,%r12d 0.00 : 5bf1: 41 80 7f 06 01 cmpb $0x1,0x6(%r15) 0.00 : 5bf6: 4c 8d 2d a3 55 01 00 lea 0x155a3(%rip),%r13 # 1b1a0 <__PRETTY_FUNCTION__.3644+0xe2f> 0.00 : 5bfd: 0f 85 9a fe ff ff jne 5a9d 0.00 : 5c03: 41 0f b6 47 07 movzbl 0x7(%r15),%eax 0.00 : 5c08: 84 c0 test %al,%al 0.00 : 5c0a: 74 12 je 5c1e 0.00 : 5c0c: 45 31 e4 xor %r12d,%r12d 0.00 : 5c0f: 3c 03 cmp $0x3,%al 0.00 : 5c11: 4c 8d 2d a9 3d 01 00 lea 0x13da9(%rip),%r13 # 199c1 <__PRETTY_FUNCTION__.12417+0xbf> 0.00 : 5c18: 0f 85 7f fe ff ff jne 5a9d 0.00 : 5c1e: 41 80 7f 08 00 cmpb $0x0,0x8(%r15) 0.00 : 5c23: 4c 8d 2d af 3d 01 00 lea 0x13daf(%rip),%r13 # 199d9 <__PRETTY_FUNCTION__.12417+0xd7> 0.00 : 5c2a: 48 8d 05 b7 3d 01 00 lea 0x13db7(%rip),%rax # 199e8 <__PRETTY_FUNCTION__.12417+0xe6> 0.00 : 5c31: 4c 0f 45 e8 cmovne %rax,%r13 0.00 : 5c35: 45 31 e4 xor %r12d,%r12d 0.00 : 5c38: e9 60 fe ff ff jmpq 5a9d Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009040 <_dl_setup_hash>: 16.67 : 9040: 48 83 ec 08 sub $0x8,%rsp 0.00 : 9044: 48 8b 87 98 02 00 00 mov 0x298(%rdi),%rax 0.00 : 904b: 48 85 c0 test %rax,%rax 0.00 : 904e: 74 62 je 90b2 <_dl_setup_hash+0x72> 0.00 : 9050: 48 8b 50 08 mov 0x8(%rax),%rdx 50.00 : 9054: 8b 02 mov (%rdx),%eax 16.67 : 9056: 89 87 ec 02 00 00 mov %eax,0x2ec(%rdi) 0.00 : 905c: 8b 4a 08 mov 0x8(%rdx),%ecx 16.67 : 905f: 8b 72 04 mov 0x4(%rdx),%esi 0.00 : 9062: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 9065: 85 c8 test %ecx,%eax 0.00 : 9067: 75 76 jne 90df <_dl_setup_hash+0x9f> 0.00 : 9069: 89 87 f0 02 00 00 mov %eax,0x2f0(%rdi) 0.00 : 906f: 8b 42 0c mov 0xc(%rdx),%eax 0.00 : 9072: 48 83 c2 10 add $0x10,%rdx 0.00 : 9076: 48 89 97 f8 02 00 00 mov %rdx,0x2f8(%rdi) 0.00 : 907d: 89 87 f4 02 00 00 mov %eax,0x2f4(%rdi) 0.00 : 9083: 8d 04 09 lea (%rcx,%rcx,1),%eax 0.00 : 9086: 89 c0 mov %eax,%eax 0.00 : 9088: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 908c: 8b 97 ec 02 00 00 mov 0x2ec(%rdi),%edx 0.00 : 9092: 48 89 87 00 03 00 00 mov %rax,0x300(%rdi) 0.00 : 9099: 48 8d 14 90 lea (%rax,%rdx,4),%rdx 0.00 : 909d: 89 f0 mov %esi,%eax 0.00 : 909f: 48 c1 e0 02 shl $0x2,%rax 0.00 : 90a3: 48 29 c2 sub %rax,%rdx 0.00 : 90a6: 48 89 97 08 03 00 00 mov %rdx,0x308(%rdi) 0.00 : 90ad: 48 83 c4 08 add $0x8,%rsp 0.00 : 90b1: c3 retq 0.00 : 90b2: 48 8b 47 60 mov 0x60(%rdi),%rax 0.00 : 90b6: 48 85 c0 test %rax,%rax 0.00 : 90b9: 74 f2 je 90ad <_dl_setup_hash+0x6d> 0.00 : 90bb: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 90bf: 8b 02 mov (%rdx),%eax 0.00 : 90c1: 48 83 c2 08 add $0x8,%rdx 0.00 : 90c5: 48 89 97 08 03 00 00 mov %rdx,0x308(%rdi) 0.00 : 90cc: 89 87 ec 02 00 00 mov %eax,0x2ec(%rdi) 0.00 : 90d2: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 90d6: 48 89 87 00 03 00 00 mov %rax,0x300(%rdi) 0.00 : 90dd: eb ce jmp 90ad <_dl_setup_hash+0x6d> 0.00 : 90df: 48 8d 0d d2 0b 01 00 lea 0x10bd2(%rip),%rcx # 19cb8 <__PRETTY_FUNCTION__.12775> 0.00 : 90e6: 48 8d 35 e7 0a 01 00 lea 0x10ae7(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 90ed: 48 8d 3d ec 24 01 00 lea 0x124ec(%rip),%rdi # 1b5e0 <__PRETTY_FUNCTION__.3644+0x126f> 0.00 : 90f4: ba 6d 03 00 00 mov $0x36d,%edx 0.00 : 90f9: e8 72 bc 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000ea60 <_dl_debug_initialize>: 100.00 : ea60: 48 85 f6 test %rsi,%rsi 0.00 : ea63: 75 5b jne eac0 <_dl_debug_initialize+0x60> 0.00 : ea65: 48 8b 0d 84 05 21 00 mov 0x210584(%rip),%rcx # 21eff0 <_DYNAMIC+0x180> 0.00 : ea6c: 48 85 ff test %rdi,%rdi 0.00 : ea6f: 0f 95 c0 setne %al 0.00 : ea72: 48 83 79 08 00 cmpq $0x0,0x8(%rcx) 0.00 : ea77: 74 0f je ea88 <_dl_debug_initialize+0x28> 0.00 : ea79: 84 c0 test %al,%al 0.00 : ea7b: 75 0b jne ea88 <_dl_debug_initialize+0x28> 0.00 : ea7d: 48 89 c8 mov %rcx,%rax 0.00 : ea80: c3 retq 0.00 : ea81: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : ea88: 84 c0 test %al,%al 0.00 : ea8a: c7 01 01 00 00 00 movl $0x1,(%rcx) 0.00 : ea90: 74 4e je eae0 <_dl_debug_initialize+0x80> 0.00 : ea92: 48 8d 04 f6 lea (%rsi,%rsi,8),%rax 0.00 : ea96: 48 8d 15 c3 05 21 00 lea 0x2105c3(%rip),%rdx # 21f060 <_rtld_global> 0.00 : ea9d: 48 89 79 20 mov %rdi,0x20(%rcx) 0.00 : eaa1: 48 c1 e0 04 shl $0x4,%rax 0.00 : eaa5: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : eaa9: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : eaad: 48 8d 05 3c 00 00 00 lea 0x3c(%rip),%rax # eaf0 <_dl_debug_state> 0.00 : eab4: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : eab8: 48 89 c8 mov %rcx,%rax 0.00 : eabb: c3 retq 0.00 : eabc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : eac0: 48 8d 04 f6 lea (%rsi,%rsi,8),%rax 0.00 : eac4: 48 8d 15 95 05 21 00 lea 0x210595(%rip),%rdx # 21f060 <_rtld_global> 0.00 : eacb: 48 c1 e0 04 shl $0x4,%rax 0.00 : eacf: 48 8d 4c 02 68 lea 0x68(%rdx,%rax,1),%rcx 0.00 : ead4: eb 96 jmp ea6c <_dl_debug_initialize+0xc> 0.00 : ead6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : eadd: 00 00 00 0.00 : eae0: 48 8b 05 09 05 21 00 mov 0x210509(%rip),%rax # 21eff0 <_DYNAMIC+0x180> 0.00 : eae7: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : eaeb: eb a5 jmp ea92 <_dl_debug_initialize+0x32> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416930 : 100.00 : 416930: ff 25 b2 3c 27 00 jmpq *0x273cb2(%rip) # 68a5e8 0.00 : 416936: 68 ba 00 00 00 pushq $0xba 0.00 : 41693b: e9 40 f4 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000416fb0 : 0.00 : 416fb0: 48 83 ec 08 sub $0x8,%rsp 0.00 : 416fb4: 85 ff test %edi,%edi 0.00 : 416fb6: 75 38 jne 416ff0 0.00 : 416fb8: 8b 35 e2 3a 27 00 mov 0x273ae2(%rip),%esi # 68aaa0 0.00 : 416fbe: 85 f6 test %esi,%esi 0.00 : 416fc0: 7e 1f jle 416fe1 0.00 : 416fc2: 8b 3d d8 3a 27 00 mov 0x273ad8(%rip),%edi # 68aaa0 0.00 : 416fc8: e8 73 f7 02 00 callq 446740 0.00 : 416fcd: c7 05 79 fa 27 00 ff movl $0xffffffff,0x27fa79(%rip) # 696a50 0.00 : 416fd4: ff ff ff 100.00 : 416fd7: c7 05 bf 3a 27 00 ff movl $0xffffffff,0x273abf(%rip) # 68aaa0 0.00 : 416fde: ff ff ff 0.00 : 416fe1: 48 83 c4 08 add $0x8,%rsp 0.00 : 416fe5: c3 retq 0.00 : 416fe6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 416fed: 00 00 00 0.00 : 416ff0: 8b 3d aa 3a 27 00 mov 0x273aaa(%rip),%edi # 68aaa0 0.00 : 416ff6: 85 ff test %edi,%edi 0.00 : 416ff8: 79 c8 jns 416fc2 0.00 : 416ffa: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042b990 : 50.00 : 42b990: 44 8b 05 8d bb 26 00 mov 0x26bb8d(%rip),%r8d # 697524 50.00 : 42b997: 31 f6 xor %esi,%esi 0.00 : 42b999: 45 85 c0 test %r8d,%r8d 0.00 : 42b99c: 75 0e jne 42b9ac 0.00 : 42b99e: 31 f6 xor %esi,%esi 0.00 : 42b9a0: 48 83 3d b0 a9 26 00 cmpq $0x0,0x26a9b0(%rip) # 696358 0.00 : 42b9a7: 00 0.00 : 42b9a8: 40 0f 95 c6 setne %sil 0.00 : 42b9ac: e9 5f ff ff ff jmpq 42b910 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000431700 : 0.00 : 431700: 48 81 ec e8 00 00 00 sub $0xe8,%rsp 0.00 : 431707: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 43170c: c7 05 02 33 26 00 00 movl $0x0,0x263302(%rip) # 694a18 0.00 : 431713: 00 00 00 0.00 : 431716: 48 89 7c 24 08 mov %rdi,0x8(%rsp) 0.00 : 43171b: 48 89 34 24 mov %rsi,(%rsp) 0.00 : 43171f: 48 8d 7c 24 10 lea 0x10(%rsp),%rdi 0.00 : 431724: be 20 4a 69 00 mov $0x694a20,%esi 100.00 : 431729: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 43172c: be 01 00 00 00 mov $0x1,%esi 0.00 : 431731: bf 20 4a 69 00 mov $0x694a20,%edi 0.00 : 431736: e8 75 54 fe ff callq 416bb0 <__sigsetjmp@plt> 0.00 : 43173b: 85 c0 test %eax,%eax 0.00 : 43173d: 74 61 je 4317a0 0.00 : 43173f: 48 8b 3d c2 32 26 00 mov 0x2632c2(%rip),%rdi # 694a08 0.00 : 431746: 48 85 ff test %rdi,%rdi 0.00 : 431749: 74 05 je 431750 0.00 : 43174b: e8 70 4c fe ff callq 4163c0 0.00 : 431750: 48 8b 3d 89 32 26 00 mov 0x263289(%rip),%rdi # 6949e0 0.00 : 431757: 48 85 ff test %rdi,%rdi 0.00 : 43175a: 74 05 je 431761 0.00 : 43175c: e8 5f 4c fe ff callq 4163c0 0.00 : 431761: 48 c7 05 74 32 26 00 movq $0x0,0x263274(%rip) # 6949e0 0.00 : 431768: 00 00 00 00 0.00 : 43176c: 48 c7 05 91 32 26 00 movq $0x0,0x263291(%rip) # 694a08 0.00 : 431773: 00 00 00 00 0.00 : 431777: e8 64 f8 ff ff callq 430fe0 0.00 : 43177c: 31 c0 xor %eax,%eax 0.00 : 43177e: 48 83 3c 24 00 cmpq $0x0,(%rsp) 0.00 : 431783: 74 0c je 431791 0.00 : 431785: 48 8b 04 24 mov (%rsp),%rax 0.00 : 431789: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : 43178f: 31 c0 xor %eax,%eax 0.00 : 431791: 48 81 c4 e8 00 00 00 add $0xe8,%rsp 0.00 : 431798: c3 retq 0.00 : 431799: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4317a0: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 4317a5: e8 c6 fc ff ff callq 431470 0.00 : 4317aa: 48 83 3c 24 00 cmpq $0x0,(%rsp) 0.00 : 4317af: 74 0a je 4317bb 0.00 : 4317b1: 48 8b 14 24 mov (%rsp),%rdx 0.00 : 4317b5: c7 02 01 00 00 00 movl $0x1,(%rdx) 0.00 : 4317bb: 48 8d 74 24 10 lea 0x10(%rsp),%rsi 0.00 : 4317c0: bf 20 4a 69 00 mov $0x694a20,%edi 0.00 : 4317c5: b9 19 00 00 00 mov $0x19,%ecx 0.00 : 4317ca: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 4317cd: 48 81 c4 e8 00 00 00 add $0xe8,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000435bc0 : 0.00 : 435bc0: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 435bc5: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 435bca: 41 89 f4 mov %esi,%r12d 0.00 : 435bcd: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 435bd2: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 435bd7: 41 89 fd mov %edi,%r13d 0.00 : 435bda: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 435bdf: 48 83 ec 28 sub $0x28,%rsp 0.00 : 435be3: 8b 1d 33 56 25 00 mov 0x255633(%rip),%ebx # 68b21c 0.00 : 435be9: 85 db test %ebx,%ebx 0.00 : 435beb: 0f 84 ff 00 00 00 je 435cf0 0.00 : 435bf1: 44 8b 1d 44 00 26 00 mov 0x260044(%rip),%r11d # 695c3c 0.00 : 435bf8: 45 85 db test %r11d,%r11d 0.00 : 435bfb: 0f 85 ef 00 00 00 jne 435cf0 50.00 : 435c01: 40 f6 c6 01 test $0x1,%sil 0.00 : 435c05: 0f 85 05 01 00 00 jne 435d10 0.00 : 435c0b: 49 63 c5 movslq %r13d,%rax 0.00 : 435c0e: 48 8b 15 63 ef 25 00 mov 0x25ef63(%rip),%rdx # 694b78 0.00 : 435c15: 4c 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%r14 0.00 : 435c1c: 00 0.00 : 435c1d: 4a 8b 2c 32 mov (%rdx,%r14,1),%rbp 0.00 : 435c21: 48 85 ed test %rbp,%rbp 0.00 : 435c24: 0f 84 c6 00 00 00 je 435cf0 0.00 : 435c2a: 41 83 e4 02 and $0x2,%r12d 0.00 : 435c2e: 0f 84 0c 02 00 00 je 435e40 0.00 : 435c34: 4a c7 04 32 00 00 00 movq $0x0,(%rdx,%r14,1) 0.00 : 435c3b: 00 0.00 : 435c3c: 48 39 2d f5 55 25 00 cmp %rbp,0x2555f5(%rip) # 68b238 0.00 : 435c43: 0f 84 df 02 00 00 je 435f28 0.00 : 435c49: 48 39 2d f0 55 25 00 cmp %rbp,0x2555f0(%rip) # 68b240 0.00 : 435c50: 0f 84 a2 02 00 00 je 435ef8 0.00 : 435c56: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 435c5a: e8 61 07 fe ff callq 4163c0 0.00 : 435c5f: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 435c63: e8 b8 ef ff ff callq 434c20 0.00 : 435c68: 29 05 a2 55 25 00 sub %eax,0x2555a2(%rip) # 68b210 0.00 : 435c6e: 83 7d 14 02 cmpl $0x2,0x14(%rbp) 0.00 : 435c72: 89 c2 mov %eax,%edx 0.00 : 435c74: 0f 84 96 01 00 00 je 435e10 0.00 : 435c7a: 48 8b 7d 20 mov 0x20(%rbp),%rdi 0.00 : 435c7e: 48 85 ff test %rdi,%rdi 0.00 : 435c81: 74 05 je 435c88 0.00 : 435c83: e8 28 fe fe ff callq 425ab0 0.00 : 435c88: 48 89 ef mov %rbp,%rdi 0.00 : 435c8b: e8 30 07 fe ff callq 4163c0 0.00 : 435c90: 8b 05 92 55 25 00 mov 0x255592(%rip),%eax # 68b228 0.00 : 435c96: 83 e8 01 sub $0x1,%eax 0.00 : 435c99: 85 c0 test %eax,%eax 0.00 : 435c9b: 89 05 87 55 25 00 mov %eax,0x255587(%rip) # 68b228 0.00 : 435ca1: 0f 85 d1 00 00 00 jne 435d78 0.00 : 435ca7: c7 05 6f 55 25 00 00 movl $0x0,0x25556f(%rip) # 68b220 0.00 : 435cae: 00 00 00 0.00 : 435cb1: c7 05 69 55 25 00 00 movl $0x0,0x255569(%rip) # 68b224 0.00 : 435cb8: 00 00 00 0.00 : 435cbb: 44 39 2d 6e 55 25 00 cmp %r13d,0x25556e(%rip) # 68b230 0.00 : 435cc2: 74 09 je 435ccd 0.00 : 435cc4: 44 39 2d 69 55 25 00 cmp %r13d,0x255569(%rip) # 68b234 0.00 : 435ccb: 75 23 jne 435cf0 0.00 : 435ccd: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 435cd1: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 435cd6: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 435cdb: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 435ce0: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 435ce5: 48 83 c4 28 add $0x28,%rsp 0.00 : 435ce9: e9 42 d6 ff ff jmpq 433330 0.00 : 435cee: 66 90 xchg %ax,%ax 0.00 : 435cf0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 435cf4: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 435cf9: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 435cfe: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 435d03: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 435d08: 48 83 c4 28 add $0x28,%rsp 0.00 : 435d0c: c3 retq 0.00 : 435d0d: 0f 1f 00 nopl (%rax) 0.00 : 435d10: 44 8b 15 81 0e 26 00 mov 0x260e81(%rip),%r10d # 696b98 0.00 : 435d17: 45 85 d2 test %r10d,%r10d 0.00 : 435d1a: 0f 85 eb fe ff ff jne 435c0b 0.00 : 435d20: 48 8b 15 51 ee 25 00 mov 0x25ee51(%rip),%rdx # 694b78 0.00 : 435d27: 48 63 c7 movslq %edi,%rax 0.00 : 435d2a: 4c 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%r14 0.00 : 435d31: 00 0.00 : 435d32: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 435d36: 83 78 14 01 cmpl $0x1,0x14(%rax) 0.00 : 435d3a: 0f 85 dd fe ff ff jne 435c1d 0.00 : 435d40: 48 63 58 10 movslq 0x10(%rax),%rbx 0.00 : 435d44: ba 05 00 00 00 mov $0x5,%edx 0.00 : 435d49: be 20 5b 47 00 mov $0x475b20,%esi 0.00 : 435d4e: 31 ff xor %edi,%edi 0.00 : 435d50: e8 2b 0b fe ff callq 416880 0.00 : 435d55: 41 8d 75 01 lea 0x1(%r13),%esi 0.00 : 435d59: 48 89 c7 mov %rax,%rdi 0.00 : 435d5c: 31 c0 xor %eax,%eax 0.00 : 435d5e: 48 89 da mov %rbx,%rdx 0.00 : 435d61: e8 8a b1 ff ff callq 430ef0 0.00 : 435d66: 48 8b 15 0b ee 25 00 mov 0x25ee0b(%rip),%rdx # 694b78 0.00 : 435d6d: e9 ab fe ff ff jmpq 435c1d 0.00 : 435d72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 435d78: 8b 0d a6 54 25 00 mov 0x2554a6(%rip),%ecx # 68b224 0.00 : 435d7e: 48 8b 35 f3 ed 25 00 mov 0x25edf3(%rip),%rsi # 694b78 0.00 : 435d85: 48 63 c1 movslq %ecx,%rax 0.00 : 435d88: 48 83 3c c6 00 cmpq $0x0,(%rsi,%rax,8) 0.00 : 435d8d: 0f 84 ad 01 00 00 je 435f40 0.00 : 435d93: 8b 15 87 54 25 00 mov 0x255487(%rip),%edx # 68b220 0.00 : 435d99: 48 63 c2 movslq %edx,%rax 0.00 : 435d9c: 48 83 3c c6 00 cmpq $0x0,(%rsi,%rax,8) 0.00 : 435da1: 0f 85 14 ff ff ff jne 435cbb 0.00 : 435da7: 8d 4a ff lea -0x1(%rdx),%ecx 0.00 : 435daa: 31 ff xor %edi,%edi 0.00 : 435dac: 85 d2 test %edx,%edx 0.00 : 435dae: 0f 49 fa cmovns %edx,%edi 0.00 : 435db1: 39 f9 cmp %edi,%ecx 0.00 : 435db3: 89 0d 67 54 25 00 mov %ecx,0x255467(%rip) # 68b220 0.00 : 435db9: 0f 84 03 02 00 00 je 435fc2 0.00 : 435dbf: 8b 05 57 54 25 00 mov 0x255457(%rip),%eax # 68b21c 0.00 : 435dc5: 44 8d 40 ff lea -0x1(%rax),%r8d 0.00 : 435dc9: eb 32 jmp 435dfd 0.00 : 435dcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 435dd0: 8b 15 4a 54 25 00 mov 0x25544a(%rip),%edx # 68b220 0.00 : 435dd6: 48 63 c2 movslq %edx,%rax 0.00 : 435dd9: 48 83 3c c6 00 cmpq $0x0,(%rsi,%rax,8) 0.00 : 435dde: 0f 85 d6 01 00 00 jne 435fba 0.00 : 435de4: 39 fa cmp %edi,%edx 0.00 : 435de6: 0f 84 d6 01 00 00 je 435fc2 0.00 : 435dec: 8d 4a ff lea -0x1(%rdx),%ecx 0.00 : 435def: 39 f9 cmp %edi,%ecx 0.00 : 435df1: 89 0d 29 54 25 00 mov %ecx,0x255429(%rip) # 68b220 0.00 : 435df7: 0f 84 c5 01 00 00 je 435fc2 0.00 : 435dfd: 85 c9 test %ecx,%ecx 0.00 : 435dff: 79 cf jns 435dd0 0.00 : 435e01: 44 89 05 18 54 25 00 mov %r8d,0x255418(%rip) # 68b220 0.00 : 435e08: eb c6 jmp 435dd0 0.00 : 435e0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 435e10: 8b 05 f6 53 25 00 mov 0x2553f6(%rip),%eax # 68b20c 0.00 : 435e16: 83 2d 0f 54 25 00 01 subl $0x1,0x25540f(%rip) # 68b22c 0.00 : 435e1d: 29 d0 sub %edx,%eax 0.00 : 435e1f: 85 c0 test %eax,%eax 0.00 : 435e21: 89 05 e5 53 25 00 mov %eax,0x2553e5(%rip) # 68b20c 0.00 : 435e27: 0f 89 4d fe ff ff jns 435c7a 0.00 : 435e2d: c7 05 d5 53 25 00 00 movl $0x0,0x2553d5(%rip) # 68b20c 0.00 : 435e34: 00 00 00 0.00 : 435e37: e9 3e fe ff ff jmpq 435c7a 0.00 : 435e3c: 0f 1f 40 00 nopl 0x0(%rax) 50.00 : 435e40: 31 f6 xor %esi,%esi 0.00 : 435e42: 44 89 ef mov %r13d,%edi 0.00 : 435e45: e8 86 d5 ff ff callq 4333d0 0.00 : 435e4a: 48 85 c0 test %rax,%rax 0.00 : 435e4d: 48 89 c3 mov %rax,%rbx 0.00 : 435e50: 0f 84 92 00 00 00 je 435ee8 0.00 : 435e56: 8b 78 0c mov 0xc(%rax),%edi 0.00 : 435e59: e8 42 d1 ff ff callq 432fa0 0.00 : 435e5e: bf 10 00 00 00 mov $0x10,%edi 0.00 : 435e63: 41 89 c4 mov %eax,%r12d 0.00 : 435e66: 8b 5b 08 mov 0x8(%rbx),%ebx 0.00 : 435e69: e8 52 24 02 00 callq 4582c0 0.00 : 435e6e: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 435e75: 48 83 3d e3 ec 25 00 cmpq $0x0,0x25ece3(%rip) # 694b60 0.00 : 435e7c: 00 0.00 : 435e7d: 48 89 c2 mov %rax,%rdx 0.00 : 435e80: 89 58 08 mov %ebx,0x8(%rax) 0.00 : 435e83: 44 89 60 0c mov %r12d,0xc(%rax) 0.00 : 435e87: 74 7f je 435f08 0.00 : 435e89: 48 8b 05 d8 ec 25 00 mov 0x25ecd8(%rip),%rax # 694b68 0.00 : 435e90: 48 89 10 mov %rdx,(%rax) 0.00 : 435e93: 48 89 15 ce ec 25 00 mov %rdx,0x25ecce(%rip) # 694b68 0.00 : 435e9a: 8b 05 d0 ec 25 00 mov 0x25ecd0(%rip),%eax # 694b70 0.00 : 435ea0: 83 c0 01 add $0x1,%eax 0.00 : 435ea3: 89 05 c7 ec 25 00 mov %eax,0x25ecc7(%rip) # 694b70 0.00 : 435ea9: 48 98 cltq 0.00 : 435eab: 48 3b 05 4e 53 25 00 cmp 0x25534e(%rip),%rax # 68b200 0.00 : 435eb2: 7e 34 jle 435ee8 0.00 : 435eb4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 435eb8: 48 8b 3d a1 ec 25 00 mov 0x25eca1(%rip),%rdi # 694b60 0.00 : 435ebf: 48 8b 07 mov (%rdi),%rax 0.00 : 435ec2: 48 89 05 97 ec 25 00 mov %rax,0x25ec97(%rip) # 694b60 0.00 : 435ec9: e8 f2 04 fe ff callq 4163c0 0.00 : 435ece: 8b 05 9c ec 25 00 mov 0x25ec9c(%rip),%eax # 694b70 0.00 : 435ed4: 83 e8 01 sub $0x1,%eax 0.00 : 435ed7: 89 05 93 ec 25 00 mov %eax,0x25ec93(%rip) # 694b70 0.00 : 435edd: 48 98 cltq 0.00 : 435edf: 48 3b 05 1a 53 25 00 cmp 0x25531a(%rip),%rax # 68b200 0.00 : 435ee6: 7f d0 jg 435eb8 0.00 : 435ee8: 48 8b 15 89 ec 25 00 mov 0x25ec89(%rip),%rdx # 694b78 0.00 : 435eef: e9 40 fd ff ff jmpq 435c34 0.00 : 435ef4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 435ef8: 48 c7 05 3d 53 25 00 movq $0x0,0x25533d(%rip) # 68b240 0.00 : 435eff: 00 00 00 00 0.00 : 435f03: e9 4e fd ff ff jmpq 435c56 0.00 : 435f08: 48 89 05 59 ec 25 00 mov %rax,0x25ec59(%rip) # 694b68 0.00 : 435f0f: 48 89 05 4a ec 25 00 mov %rax,0x25ec4a(%rip) # 694b60 0.00 : 435f16: c7 05 50 ec 25 00 00 movl $0x0,0x25ec50(%rip) # 694b70 0.00 : 435f1d: 00 00 00 0.00 : 435f20: e9 75 ff ff ff jmpq 435e9a 0.00 : 435f25: 0f 1f 00 nopl (%rax) 0.00 : 435f28: 48 c7 05 05 53 25 00 movq $0x0,0x255305(%rip) # 68b238 0.00 : 435f2f: 00 00 00 00 0.00 : 435f33: e9 1e fd ff ff jmpq 435c56 0.00 : 435f38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 435f3f: 00 0.00 : 435f40: 8b 3d d6 52 25 00 mov 0x2552d6(%rip),%edi # 68b21c 0.00 : 435f46: 8d 51 01 lea 0x1(%rcx),%edx 0.00 : 435f49: 89 15 d5 52 25 00 mov %edx,0x2552d5(%rip) # 68b224 0.00 : 435f4f: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 435f52: 39 f9 cmp %edi,%ecx 0.00 : 435f54: 0f 4d c8 cmovge %eax,%ecx 0.00 : 435f57: 39 ca cmp %ecx,%edx 0.00 : 435f59: 75 16 jne 435f71 0.00 : 435f5b: eb 3a jmp 435f97 0.00 : 435f5d: 0f 1f 00 nopl (%rax) 0.00 : 435f60: 39 ca cmp %ecx,%edx 0.00 : 435f62: 74 33 je 435f97 0.00 : 435f64: 83 c2 01 add $0x1,%edx 0.00 : 435f67: 39 ca cmp %ecx,%edx 0.00 : 435f69: 89 15 b5 52 25 00 mov %edx,0x2552b5(%rip) # 68b224 0.00 : 435f6f: 74 26 je 435f97 0.00 : 435f71: 39 d7 cmp %edx,%edi 0.00 : 435f73: 7f 0a jg 435f7f 0.00 : 435f75: c7 05 a5 52 25 00 00 movl $0x0,0x2552a5(%rip) # 68b224 0.00 : 435f7c: 00 00 00 0.00 : 435f7f: 8b 15 9f 52 25 00 mov 0x25529f(%rip),%edx # 68b224 0.00 : 435f85: 48 63 c2 movslq %edx,%rax 0.00 : 435f88: 48 83 3c c6 00 cmpq $0x0,(%rsi,%rax,8) 0.00 : 435f8d: 74 d1 je 435f60 0.00 : 435f8f: 39 d1 cmp %edx,%ecx 0.00 : 435f91: 0f 85 fc fd ff ff jne 435d93 0.00 : 435f97: c7 05 87 52 25 00 00 movl $0x0,0x255287(%rip) # 68b228 0.00 : 435f9e: 00 00 00 0.00 : 435fa1: c7 05 75 52 25 00 00 movl $0x0,0x255275(%rip) # 68b220 0.00 : 435fa8: 00 00 00 0.00 : 435fab: c7 05 6f 52 25 00 00 movl $0x0,0x25526f(%rip) # 68b224 0.00 : 435fb2: 00 00 00 0.00 : 435fb5: e9 d9 fd ff ff jmpq 435d93 0.00 : 435fba: 39 d7 cmp %edx,%edi 0.00 : 435fbc: 0f 85 f9 fc ff ff jne 435cbb 0.00 : 435fc2: c7 05 5c 52 25 00 00 movl $0x0,0x25525c(%rip) # 68b228 0.00 : 435fc9: 00 00 00 0.00 : 435fcc: e9 d6 fc ff ff jmpq 435ca7 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000436260 : 50.00 : 436260: 48 83 ec 08 sub $0x8,%rsp 0.00 : 436264: 44 8b 05 d1 f9 25 00 mov 0x25f9d1(%rip),%r8d # 695c3c 50.00 : 43626b: 45 85 c0 test %r8d,%r8d 0.00 : 43626e: 75 28 jne 436298 0.00 : 436270: 8b 3d 5e d1 25 00 mov 0x25d15e(%rip),%edi # 6933d4 0.00 : 436276: 85 ff test %edi,%edi 0.00 : 436278: 75 0a jne 436284 0.00 : 43627a: 8b 35 58 d1 25 00 mov 0x25d158(%rip),%esi # 6933d8 0.00 : 436280: 85 f6 test %esi,%esi 0.00 : 436282: 75 1c jne 4362a0 0.00 : 436284: e8 17 dc ff ff callq 433ea0 0.00 : 436289: 48 83 c4 08 add $0x8,%rsp 0.00 : 43628d: e9 be fe ff ff jmpq 436150 0.00 : 436292: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 436298: 48 83 c4 08 add $0x8,%rsp 0.00 : 43629c: c3 retq 0.00 : 43629d: 0f 1f 00 nopl (%rax) 0.00 : 4362a0: 8b 0d ca 00 26 00 mov 0x2600ca(%rip),%ecx # 696370 0.00 : 4362a6: 85 c9 test %ecx,%ecx 0.00 : 4362a8: 74 df je 436289 0.00 : 4362aa: eb d8 jmp 436284 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000437360 : 0.00 : 437360: 41 57 push %r15 0.00 : 437362: 41 89 ff mov %edi,%r15d 0.00 : 437365: 41 56 push %r14 0.00 : 437367: 41 55 push %r13 0.00 : 437369: 41 54 push %r12 0.00 : 43736b: 55 push %rbp 0.00 : 43736c: 53 push %rbx 0.00 : 43736d: 48 81 ec 18 02 00 00 sub $0x218,%rsp 0.00 : 437374: 48 8d 9c 24 90 01 00 lea 0x190(%rsp),%rbx 0.00 : 43737b: 00 0.00 : 43737c: 4c 8d b4 24 10 01 00 lea 0x110(%rsp),%r14 0.00 : 437383: 00 0.00 : 437384: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 437389: 48 89 df mov %rbx,%rdi 0.00 : 43738c: e8 af f7 fd ff callq 416b40 0.00 : 437391: be 11 00 00 00 mov $0x11,%esi 0.00 : 437396: 48 89 df mov %rbx,%rdi 0.00 : 437399: e8 12 f5 fd ff callq 4168b0 0.00 : 43739e: 4c 89 f7 mov %r14,%rdi 0.00 : 4373a1: e8 9a f7 fd ff callq 416b40 0.00 : 4373a6: 48 89 de mov %rbx,%rsi 0.00 : 4373a9: 4c 89 f2 mov %r14,%rdx 0.00 : 4373ac: 31 ff xor %edi,%edi 0.00 : 4373ae: e8 2d f2 fd ff callq 4165e0 0.00 : 4373b3: bf 58 b2 68 00 mov $0x68b258,%edi 0.00 : 4373b8: e8 53 bc ff ff callq 433010 0.00 : 4373bd: e8 8e ed ff ff callq 436150 0.00 : 4373c2: 8b 1d 54 3e 25 00 mov 0x253e54(%rip),%ebx # 68b21c 0.00 : 4373c8: 85 db test %ebx,%ebx 0.00 : 4373ca: 0f 84 00 05 00 00 je 4378d0 0.00 : 4373d0: 8b 05 fe bf 25 00 mov 0x25bffe(%rip),%eax # 6933d4 0.00 : 4373d6: 85 c0 test %eax,%eax 0.00 : 4373d8: 0f 84 42 02 00 00 je 437620 0.00 : 4373de: 85 db test %ebx,%ebx 0.00 : 4373e0: 0f 84 15 06 00 00 je 4379fb 0.00 : 4373e6: 48 8b 15 8b d7 25 00 mov 0x25d78b(%rip),%rdx # 694b78 0.00 : 4373ed: 48 63 c3 movslq %ebx,%rax 0.00 : 4373f0: 48 83 7c c2 f8 00 cmpq $0x0,-0x8(%rdx,%rax,8) 0.00 : 4373f6: 0f 85 ff 05 00 00 jne 4379fb 0.00 : 4373fc: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 4373ff: 89 dd mov %ebx,%ebp 0.00 : 437401: 48 98 cltq 0.00 : 437403: 48 8d 54 c2 f8 lea -0x8(%rdx,%rax,8),%rdx 0.00 : 437408: eb 12 jmp 43741c 0.00 : 43740a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437410: 48 8b 02 mov (%rdx),%rax 0.00 : 437413: 48 83 ea 08 sub $0x8,%rdx 0.00 : 437417: 48 85 c0 test %rax,%rax 0.00 : 43741a: 75 05 jne 437421 0.00 : 43741c: 83 ed 01 sub $0x1,%ebp 0.00 : 43741f: 75 ef jne 437410 0.00 : 437421: 44 8b 2d b0 bf 25 00 mov 0x25bfb0(%rip),%r13d # 6933d8 0.00 : 437428: 45 85 ed test %r13d,%r13d 0.00 : 43742b: 74 10 je 43743d 0.00 : 43742d: 44 8b 25 64 f7 25 00 mov 0x25f764(%rip),%r12d # 696b98 0.00 : 437434: 45 85 e4 test %r12d,%r12d 0.00 : 437437: 0f 84 5b 04 00 00 je 437898 0.00 : 43743d: 39 dd cmp %ebx,%ebp 0.00 : 43743f: 0f 84 7b 02 00 00 je 4376c0 0.00 : 437445: 45 31 e4 xor %r12d,%r12d 0.00 : 437448: 48 83 3d 38 d7 25 00 cmpq $0x0,0x25d738(%rip) # 694b88 0.00 : 43744f: 00 0.00 : 437450: 0f 84 66 01 00 00 je 4375bc 0.00 : 437456: bf 38 00 00 00 mov $0x38,%edi 0.00 : 43745b: e8 60 0e 02 00 callq 4582c0 0.00 : 437460: 48 8b 3d 21 d7 25 00 mov 0x25d721(%rip),%rdi # 694b88 0.00 : 437467: 49 89 c4 mov %rax,%r12 0.00 : 43746a: 48 8b 17 mov (%rdi),%rdx 0.00 : 43746d: 48 39 d7 cmp %rdx,%rdi 0.00 : 437470: 0f 84 77 05 00 00 je 4379ed 50.00 : 437476: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 43747c: eb 05 jmp 437483 0.00 : 43747e: 66 90 xchg %ax,%ax 0.00 : 437480: 48 89 c2 mov %rax,%rdx 0.00 : 437483: 48 8b 02 mov (%rdx),%rax 0.00 : 437486: 41 83 c5 01 add $0x1,%r13d 0.00 : 43748a: 48 39 c7 cmp %rax,%rdi 0.00 : 43748d: 75 f1 jne 437480 0.00 : 43748f: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 437496: 48 83 3f 00 cmpq $0x0,(%rdi) 0.00 : 43749a: 74 0a je 4374a6 0.00 : 43749c: 31 c0 xor %eax,%eax 0.00 : 43749e: e8 2d b4 01 00 callq 4528d0 0.00 : 4374a3: 48 89 c7 mov %rax,%rdi 0.00 : 4374a6: 49 89 7c 24 08 mov %rdi,0x8(%r12) 0.00 : 4374ab: 48 89 f8 mov %rdi,%rax 0.00 : 4374ae: 66 90 xchg %ax,%ax 0.00 : 4374b0: 48 89 c2 mov %rax,%rdx 0.00 : 4374b3: 48 8b 00 mov (%rax),%rax 0.00 : 4374b6: 48 85 c0 test %rax,%rax 0.00 : 4374b9: 75 f5 jne 4374b0 0.00 : 4374bb: 44 8b 15 a6 3d 25 00 mov 0x253da6(%rip),%r10d # 68b268 0.00 : 4374c2: 8b 05 b8 d6 25 00 mov 0x25d6b8(%rip),%eax # 694b80 0.00 : 4374c8: 48 89 3a mov %rdi,(%rdx) 0.00 : 4374cb: 48 c7 05 b2 d6 25 00 movq $0x0,0x25d6b2(%rip) # 694b88 0.00 : 4374d2: 00 00 00 00 0.00 : 4374d6: 45 85 d2 test %r10d,%r10d 0.00 : 4374d9: 41 89 44 24 10 mov %eax,0x10(%r12) 0.00 : 4374de: c7 05 98 d6 25 00 00 movl $0x0,0x25d698(%rip) # 694b80 0.00 : 4374e5: 00 00 00 0.00 : 4374e8: 41 c7 44 24 18 00 00 movl $0x0,0x18(%r12) 0.00 : 4374ef: 00 00 0.00 : 4374f1: 0f 85 b9 01 00 00 jne 4376b0 0.00 : 4374f7: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 4374fc: 31 c9 xor %ecx,%ecx 0.00 : 4374fe: 31 f6 xor %esi,%esi 0.00 : 437500: 48 89 fa mov %rdi,%rdx 0.00 : 437503: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 437508: 31 c0 xor %eax,%eax 0.00 : 43750a: 83 7a 10 01 cmpl $0x1,0x10(%rdx) 0.00 : 43750e: 0f 94 c0 sete %al 0.00 : 437511: 09 c1 or %eax,%ecx 0.00 : 437513: 31 c0 xor %eax,%eax 0.00 : 437515: 80 7a 0c 7f cmpb $0x7f,0xc(%rdx) 0.00 : 437519: 48 8b 12 mov (%rdx),%rdx 0.00 : 43751c: 0f 94 c0 sete %al 0.00 : 43751f: 09 c6 or %eax,%esi 0.00 : 437521: 48 39 d7 cmp %rdx,%rdi 0.00 : 437524: 75 e2 jne 437508 0.00 : 437526: 31 c0 xor %eax,%eax 0.00 : 437528: 85 c9 test %ecx,%ecx 0.00 : 43752a: 0f 84 68 01 00 00 je 437698 0.00 : 437530: 41 89 44 24 14 mov %eax,0x14(%r12) 0.00 : 437535: bf 37 42 47 00 mov $0x474237,%edi 0.00 : 43753a: e8 a1 6d ff ff callq 42e2e0 0.00 : 43753f: 48 85 c0 test %rax,%rax 0.00 : 437542: 48 89 c3 mov %rax,%rbx 0.00 : 437545: 0f 84 6d 04 00 00 je 4379b8 0.00 : 43754b: 48 89 c7 mov %rax,%rdi 0.00 : 43754e: e8 9d ee fd ff callq 4163f0 0.00 : 437553: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 437557: e8 64 0d 02 00 callq 4582c0 0.00 : 43755c: 48 89 de mov %rbx,%rsi 0.00 : 43755f: 48 89 c7 mov %rax,%rdi 0.00 : 437562: e8 09 f4 fd ff callq 416970 0.00 : 437567: 49 89 04 24 mov %rax,(%r12) 0.00 : 43756b: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 437570: 48 63 d5 movslq %ebp,%rdx 0.00 : 437573: 41 83 7c 24 14 02 cmpl $0x2,0x14(%r12) 0.00 : 437579: 49 c7 44 24 28 00 00 movq $0x0,0x28(%r12) 0.00 : 437580: 00 00 0.00 : 437582: 49 c7 44 24 30 00 00 movq $0x0,0x30(%r12) 0.00 : 437589: 00 00 0.00 : 43758b: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 437590: 48 8b 05 e1 d5 25 00 mov 0x25d5e1(%rip),%rax # 694b78 0.00 : 437597: 4c 89 24 d0 mov %r12,(%rax,%rdx,8) 0.00 : 43759b: 0f 84 0f 03 00 00 je 4378b0 0.00 : 4375a1: 44 01 2d 68 3c 25 00 add %r13d,0x253c68(%rip) # 68b210 50.00 : 4375a8: 83 05 79 3c 25 00 01 addl $0x1,0x253c79(%rip) # 68b228 0.00 : 4375af: 89 2d 6b 3c 25 00 mov %ebp,0x253c6b(%rip) # 68b220 0.00 : 4375b5: 4c 89 25 7c 3c 25 00 mov %r12,0x253c7c(%rip) # 68b238 0.00 : 4375bc: 45 85 ff test %r15d,%r15d 0.00 : 4375bf: 0f 84 bb 00 00 00 je 437680 0.00 : 4375c5: 4d 85 e4 test %r12,%r12 0.00 : 4375c8: 74 17 je 4375e1 0.00 : 4375ca: 41 8b 44 24 18 mov 0x18(%r12),%eax 0.00 : 4375cf: 4c 89 25 6a 3c 25 00 mov %r12,0x253c6a(%rip) # 68b240 0.00 : 4375d6: 83 e0 fe and $0xfffffffe,%eax 0.00 : 4375d9: 83 c8 20 or $0x20,%eax 0.00 : 4375dc: 41 89 44 24 18 mov %eax,0x18(%r12) 0.00 : 4375e1: e8 4a bd ff ff callq 433330 0.00 : 4375e6: 4c 89 f6 mov %r14,%rsi 0.00 : 4375e9: 31 d2 xor %edx,%edx 0.00 : 4375eb: bf 02 00 00 00 mov $0x2,%edi 0.00 : 4375f0: c7 05 96 d5 25 00 00 movl $0x0,0x25d596(%rip) # 694b90 0.00 : 4375f7: 00 00 00 0.00 : 4375fa: e8 e1 ef fd ff callq 4165e0 0.00 : 4375ff: 8b 05 2b 3c 25 00 mov 0x253c2b(%rip),%eax # 68b230 0.00 : 437605: 48 81 c4 18 02 00 00 add $0x218,%rsp 0.00 : 43760c: 5b pop %rbx 0.00 : 43760d: 5d pop %rbp 0.00 : 43760e: 41 5c pop %r12 0.00 : 437610: 41 5d pop %r13 0.00 : 437612: 41 5e pop %r14 0.00 : 437614: 41 5f pop %r15 0.00 : 437616: c3 retq 0.00 : 437617: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43761e: 00 00 0.00 : 437620: 8b 05 fa 3b 25 00 mov 0x253bfa(%rip),%eax # 68b220 0.00 : 437626: 31 ed xor %ebp,%ebp 0.00 : 437628: 8d 50 01 lea 0x1(%rax),%edx 0.00 : 43762b: 85 c0 test %eax,%eax 0.00 : 43762d: 0f 45 ea cmovne %edx,%ebp 0.00 : 437630: 39 dd cmp %ebx,%ebp 0.00 : 437632: 0f 8d e9 fd ff ff jge 437421 0.00 : 437638: 48 8b 15 39 d5 25 00 mov 0x25d539(%rip),%rdx # 694b78 0.00 : 43763f: 48 63 c5 movslq %ebp,%rax 0.00 : 437642: 48 83 3c c2 00 cmpq $0x0,(%rdx,%rax,8) 0.00 : 437647: 0f 84 d4 fd ff ff je 437421 0.00 : 43764d: 8d 45 01 lea 0x1(%rbp),%eax 0.00 : 437650: 48 98 cltq 0.00 : 437652: 48 8d 14 c2 lea (%rdx,%rax,8),%rdx 0.00 : 437656: eb 18 jmp 437670 0.00 : 437658: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43765f: 00 0.00 : 437660: 48 8b 02 mov (%rdx),%rax 0.00 : 437663: 48 83 c2 08 add $0x8,%rdx 0.00 : 437667: 48 85 c0 test %rax,%rax 0.00 : 43766a: 0f 84 b1 fd ff ff je 437421 0.00 : 437670: 83 c5 01 add $0x1,%ebp 0.00 : 437673: 39 dd cmp %ebx,%ebp 0.00 : 437675: 7c e9 jl 437660 0.00 : 437677: e9 a5 fd ff ff jmpq 437421 0.00 : 43767c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 437680: 4d 85 e4 test %r12,%r12 0.00 : 437683: 0f 84 5d ff ff ff je 4375e6 0.00 : 437689: 41 83 4c 24 18 01 orl $0x1,0x18(%r12) 0.00 : 43768f: 90 nop 0.00 : 437690: e9 51 ff ff ff jmpq 4375e6 0.00 : 437695: 0f 1f 00 nopl (%rax) 0.00 : 437698: 83 fe 01 cmp $0x1,%esi 0.00 : 43769b: 19 c0 sbb %eax,%eax 0.00 : 43769d: f7 d0 not %eax 0.00 : 43769f: 83 c0 02 add $0x2,%eax 0.00 : 4376a2: e9 89 fe ff ff jmpq 437530 0.00 : 4376a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4376ae: 00 00 0.00 : 4376b0: 41 c7 44 24 18 04 00 movl $0x4,0x18(%r12) 0.00 : 4376b7: 00 00 0.00 : 4376b9: e9 39 fe ff ff jmpq 4374f7 0.00 : 4376be: 66 90 xchg %ax,%ax 0.00 : 4376c0: 81 fd ff 0f 00 00 cmp $0xfff,%ebp 0.00 : 4376c6: 0f 8e 74 02 00 00 jle 437940 0.00 : 4376cc: 44 8b 1d 69 e5 25 00 mov 0x25e569(%rip),%r11d # 695c3c 0.00 : 4376d3: 45 85 db test %r11d,%r11d 0.00 : 4376d6: 0f 85 64 02 00 00 jne 437940 0.00 : 4376dc: e8 5f eb ff ff callq 436240 0.00 : 4376e1: 8b 05 41 3b 25 00 mov 0x253b41(%rip),%eax # 68b228 0.00 : 4376e7: 89 c2 mov %eax,%edx 0.00 : 4376e9: 8d 48 0e lea 0xe(%rax),%ecx 0.00 : 4376ec: 83 c2 07 add $0x7,%edx 0.00 : 4376ef: 41 89 d4 mov %edx,%r12d 0.00 : 4376f2: 89 c2 mov %eax,%edx 0.00 : 4376f4: 44 0f 48 e1 cmovs %ecx,%r12d 0.00 : 4376f8: c1 fa 1f sar $0x1f,%edx 0.00 : 4376fb: c1 ea 1d shr $0x1d,%edx 0.00 : 4376fe: 41 83 e4 f8 and $0xfffffff8,%r12d 0.00 : 437702: 01 d0 add %edx,%eax 0.00 : 437704: 83 e0 07 and $0x7,%eax 0.00 : 437707: 29 d0 sub %edx,%eax 0.00 : 437709: 74 05 je 437710 0.00 : 43770b: 83 f8 04 cmp $0x4,%eax 0.00 : 43770e: 7e 04 jle 437714 0.00 : 437710: 41 83 c4 08 add $0x8,%r12d 0.00 : 437714: 48 8d 9c 24 90 00 00 lea 0x90(%rsp),%rbx 0.00 : 43771b: 00 0.00 : 43771c: 48 89 df mov %rbx,%rdi 0.00 : 43771f: e8 1c f4 fd ff callq 416b40 0.00 : 437724: be 11 00 00 00 mov $0x11,%esi 0.00 : 437729: 48 89 df mov %rbx,%rdi 0.00 : 43772c: e8 7f f1 fd ff callq 4168b0 0.00 : 437731: 48 8d 7c 24 10 lea 0x10(%rsp),%rdi 0.00 : 437736: e8 05 f4 fd ff callq 416b40 0.00 : 43773b: 48 8d 54 24 10 lea 0x10(%rsp),%rdx 0.00 : 437740: 31 ff xor %edi,%edi 0.00 : 437742: 48 89 de mov %rbx,%rsi 0.00 : 437745: e8 96 ee fd ff callq 4165e0 0.00 : 43774a: 8b 05 cc 3a 25 00 mov 0x253acc(%rip),%eax # 68b21c 0.00 : 437750: 44 39 e0 cmp %r12d,%eax 0.00 : 437753: 0f 84 a9 02 00 00 je 437a02 0.00 : 437759: 49 63 fc movslq %r12d,%rdi 0.00 : 43775c: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 437760: e8 5b 0b 02 00 callq 4582c0 0.00 : 437765: 48 8b 0d 0c d4 25 00 mov 0x25d40c(%rip),%rcx # 694b78 0.00 : 43776c: 49 89 c5 mov %rax,%r13 0.00 : 43776f: 8b 05 a7 3a 25 00 mov 0x253aa7(%rip),%eax # 68b21c 0.00 : 437775: 85 c0 test %eax,%eax 0.00 : 437777: 0f 8e 94 02 00 00 jle 437a11 0.00 : 43777d: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 437782: 31 f6 xor %esi,%esi 0.00 : 437784: 31 d2 xor %edx,%edx 0.00 : 437786: 89 dd mov %ebx,%ebp 0.00 : 437788: 31 ff xor %edi,%edi 0.00 : 43778a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437790: 4c 8b 04 39 mov (%rcx,%rdi,1),%r8 0.00 : 437794: 4d 85 c0 test %r8,%r8 0.00 : 437797: 74 1d je 4377b6 0.00 : 437799: 3b 35 91 3a 25 00 cmp 0x253a91(%rip),%esi # 68b230 0.00 : 43779f: 48 63 c2 movslq %edx,%rax 0.00 : 4377a2: 4d 89 44 c5 00 mov %r8,0x0(%r13,%rax,8) 0.00 : 4377a7: 0f 44 da cmove %edx,%ebx 0.00 : 4377aa: 3b 35 84 3a 25 00 cmp 0x253a84(%rip),%esi # 68b234 0.00 : 4377b0: 0f 44 ea cmove %edx,%ebp 0.00 : 4377b3: 83 c2 01 add $0x1,%edx 0.00 : 4377b6: 83 c6 01 add $0x1,%esi 0.00 : 4377b9: 48 83 c7 08 add $0x8,%rdi 0.00 : 4377bd: 3b 35 59 3a 25 00 cmp 0x253a59(%rip),%esi # 68b21c 0.00 : 4377c3: 7c cb jl 437790 0.00 : 4377c5: 31 c0 xor %eax,%eax 0.00 : 4377c7: 85 d2 test %edx,%edx 0.00 : 4377c9: 89 d6 mov %edx,%esi 0.00 : 4377cb: c7 05 4f 3a 25 00 00 movl $0x0,0x253a4f(%rip) # 68b224 0.00 : 4377d2: 00 00 00 0.00 : 4377d5: 74 05 je 4377dc 0.00 : 4377d7: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 4377da: 89 d6 mov %edx,%esi 0.00 : 4377dc: 41 39 d4 cmp %edx,%r12d 0.00 : 4377df: 89 05 3b 3a 25 00 mov %eax,0x253a3b(%rip) # 68b220 0.00 : 4377e5: 89 35 3d 3a 25 00 mov %esi,0x253a3d(%rip) # 68b228 0.00 : 4377eb: 44 89 25 2a 3a 25 00 mov %r12d,0x253a2a(%rip) # 68b21c 0.00 : 4377f2: 7e 1f jle 437813 0.00 : 4377f4: 48 63 c2 movslq %edx,%rax 0.00 : 4377f7: 49 8d 44 c5 00 lea 0x0(%r13,%rax,8),%rax 0.00 : 4377fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 437800: 83 c2 01 add $0x1,%edx 0.00 : 437803: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 43780a: 48 83 c0 08 add $0x8,%rax 0.00 : 43780e: 41 39 d4 cmp %edx,%r12d 0.00 : 437811: 7f ed jg 437800 0.00 : 437813: 49 39 cd cmp %rcx,%r13 0.00 : 437816: 74 0f je 437827 0.00 : 437818: 48 89 cf mov %rcx,%rdi 0.00 : 43781b: e8 a0 eb fd ff callq 4163c0 0.00 : 437820: 4c 89 2d 51 d3 25 00 mov %r13,0x25d351(%rip) # 694b78 0.00 : 437827: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 43782a: 74 06 je 437832 0.00 : 43782c: 89 1d fe 39 25 00 mov %ebx,0x2539fe(%rip) # 68b230 0.00 : 437832: 83 fd ff cmp $0xffffffff,%ebp 0.00 : 437835: 74 06 je 43783d 0.00 : 437837: 89 2d f7 39 25 00 mov %ebp,0x2539f7(%rip) # 68b234 0.00 : 43783d: 8b 15 ed 39 25 00 mov 0x2539ed(%rip),%edx # 68b230 0.00 : 437843: 83 fa ff cmp $0xffffffff,%edx 0.00 : 437846: 74 19 je 437861 0.00 : 437848: 8b 0d e6 39 25 00 mov 0x2539e6(%rip),%ecx # 68b234 0.00 : 43784e: 83 f9 ff cmp $0xffffffff,%ecx 0.00 : 437851: 74 0e je 437861 0.00 : 437853: 8b 05 c7 39 25 00 mov 0x2539c7(%rip),%eax # 68b220 0.00 : 437859: 39 c2 cmp %eax,%edx 0.00 : 43785b: 7f 04 jg 437861 0.00 : 43785d: 39 c1 cmp %eax,%ecx 0.00 : 43785f: 7e 05 jle 437866 0.00 : 437861: e8 ca ba ff ff callq 433330 0.00 : 437866: 48 8d 74 24 10 lea 0x10(%rsp),%rsi 0.00 : 43786b: 31 d2 xor %edx,%edx 0.00 : 43786d: bf 02 00 00 00 mov $0x2,%edi 0.00 : 437872: e8 69 ed fd ff callq 4165e0 0.00 : 437877: 8b 15 a3 39 25 00 mov 0x2539a3(%rip),%edx # 68b220 0.00 : 43787d: 85 d2 test %edx,%edx 0.00 : 43787f: 75 0f jne 437890 0.00 : 437881: 48 8b 05 f0 d2 25 00 mov 0x25d2f0(%rip),%rax # 694b78 0.00 : 437888: 31 ed xor %ebp,%ebp 0.00 : 43788a: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 43788e: 74 08 je 437898 0.00 : 437890: 8d 6a 01 lea 0x1(%rdx),%ebp 0.00 : 437893: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 437898: 8b 1d 7e 39 25 00 mov 0x25397e(%rip),%ebx # 68b21c 0.00 : 43789e: 39 eb cmp %ebp,%ebx 0.00 : 4378a0: 0f 85 9f fb ff ff jne 437445 0.00 : 4378a6: e9 97 00 00 00 jmpq 437942 0.00 : 4378ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4378b0: 41 f6 44 24 18 01 testb $0x1,0x18(%r12) 0.00 : 4378b6: 0f 85 e0 00 00 00 jne 43799c 0.00 : 4378bc: 44 01 2d 49 39 25 00 add %r13d,0x253949(%rip) # 68b20c 0.00 : 4378c3: 83 05 62 39 25 00 01 addl $0x1,0x253962(%rip) # 68b22c 0.00 : 4378ca: e9 d2 fc ff ff jmpq 4375a1 0.00 : 4378cf: 90 nop 0.00 : 4378d0: bf 40 00 00 00 mov $0x40,%edi 0.00 : 4378d5: c7 05 3d 39 25 00 08 movl $0x8,0x25393d(%rip) # 68b21c 0.00 : 4378dc: 00 00 00 0.00 : 4378df: e8 dc 09 02 00 callq 4582c0 0.00 : 4378e4: 8b 15 32 39 25 00 mov 0x253932(%rip),%edx # 68b21c 0.00 : 4378ea: 48 89 05 87 d2 25 00 mov %rax,0x25d287(%rip) # 694b78 0.00 : 4378f1: 85 d2 test %edx,%edx 0.00 : 4378f3: 7e 22 jle 437917 0.00 : 4378f5: 31 d2 xor %edx,%edx 0.00 : 4378f7: 48 89 c1 mov %rax,%rcx 0.00 : 4378fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 437900: 48 c7 04 11 00 00 00 movq $0x0,(%rcx,%rdx,1) 0.00 : 437907: 00 0.00 : 437908: 83 c3 01 add $0x1,%ebx 0.00 : 43790b: 48 83 c2 08 add $0x8,%rdx 0.00 : 43790f: 39 1d 07 39 25 00 cmp %ebx,0x253907(%rip) # 68b21c 0.00 : 437915: 7f e9 jg 437900 0.00 : 437917: c7 05 07 39 25 00 00 movl $0x0,0x253907(%rip) # 68b228 0.00 : 43791e: 00 00 00 0.00 : 437921: c7 05 f5 38 25 00 00 movl $0x0,0x2538f5(%rip) # 68b220 0.00 : 437928: 00 00 00 0.00 : 43792b: c7 05 ef 38 25 00 00 movl $0x0,0x2538ef(%rip) # 68b224 0.00 : 437932: 00 00 00 0.00 : 437935: 8b 1d e1 38 25 00 mov 0x2538e1(%rip),%ebx # 68b21c 0.00 : 43793b: e9 90 fa ff ff jmpq 4373d0 0.00 : 437940: 89 eb mov %ebp,%ebx 0.00 : 437942: 8d 73 08 lea 0x8(%rbx),%esi 0.00 : 437945: 48 8b 3d 2c d2 25 00 mov 0x25d22c(%rip),%rdi # 694b78 0.00 : 43794c: 89 35 ca 38 25 00 mov %esi,0x2538ca(%rip) # 68b21c 0.00 : 437952: 48 63 f6 movslq %esi,%rsi 0.00 : 437955: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 437959: e8 d2 08 02 00 callq 458230 0.00 : 43795e: 39 1d b8 38 25 00 cmp %ebx,0x2538b8(%rip) # 68b21c 0.00 : 437964: 48 89 c2 mov %rax,%rdx 0.00 : 437967: 48 89 05 0a d2 25 00 mov %rax,0x25d20a(%rip) # 694b78 0.00 : 43796e: 0f 8e d1 fa ff ff jle 437445 0.00 : 437974: 48 63 c3 movslq %ebx,%rax 0.00 : 437977: 48 89 d1 mov %rdx,%rcx 0.00 : 43797a: 48 c1 e0 03 shl $0x3,%rax 0.00 : 43797e: 66 90 xchg %ax,%ax 0.00 : 437980: 48 c7 04 01 00 00 00 movq $0x0,(%rcx,%rax,1) 0.00 : 437987: 00 0.00 : 437988: 83 c3 01 add $0x1,%ebx 0.00 : 43798b: 48 83 c0 08 add $0x8,%rax 0.00 : 43798f: 39 1d 87 38 25 00 cmp %ebx,0x253887(%rip) # 68b21c 0.00 : 437995: 7f e9 jg 437980 0.00 : 437997: e9 a9 fa ff ff jmpq 437445 0.00 : 43799c: 89 ef mov %ebp,%edi 0.00 : 43799e: e8 7d dc ff ff callq 435620 0.00 : 4379a3: 41 83 7c 24 14 02 cmpl $0x2,0x14(%r12) 0.00 : 4379a9: 0f 84 0d ff ff ff je 4378bc 0.00 : 4379af: 90 nop 0.00 : 4379b0: e9 ec fb ff ff jmpq 4375a1 0.00 : 4379b5: 0f 1f 00 nopl (%rax) 0.00 : 4379b8: bf 62 5a 47 00 mov $0x475a62,%edi 0.00 : 4379bd: e8 2e 24 02 00 callq 459df0 0.00 : 4379c2: 48 85 c0 test %rax,%rax 0.00 : 4379c5: 0f 85 9c fb ff ff jne 437567 0.00 : 4379cb: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 4379d0: e8 eb 08 02 00 callq 4582c0 0.00 : 4379d5: 49 b9 3c 75 6e 6b 6e movabs $0x6e776f6e6b6e753c,%r9 0.00 : 4379dc: 6f 77 6e 0.00 : 4379df: 66 c7 40 08 3e 00 movw $0x3e,0x8(%rax) 0.00 : 4379e5: 4c 89 08 mov %r9,(%rax) 0.00 : 4379e8: e9 7a fb ff ff jmpq 437567 0.00 : 4379ed: 48 89 fa mov %rdi,%rdx 0.00 : 4379f0: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4379f6: e9 94 fa ff ff jmpq 43748f 0.00 : 4379fb: 89 dd mov %ebx,%ebp 0.00 : 4379fd: e9 1f fa ff ff jmpq 437421 0.00 : 437a02: 48 8b 0d 6f d1 25 00 mov 0x25d16f(%rip),%rcx # 694b78 0.00 : 437a09: 49 89 cd mov %rcx,%r13 0.00 : 437a0c: e9 64 fd ff ff jmpq 437775 0.00 : 437a11: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 437a16: c7 05 04 38 25 00 00 movl $0x0,0x253804(%rip) # 68b224 0.00 : 437a1d: 00 00 00 0.00 : 437a20: 31 c0 xor %eax,%eax 0.00 : 437a22: 31 f6 xor %esi,%esi 0.00 : 437a24: 89 dd mov %ebx,%ebp 0.00 : 437a26: 31 d2 xor %edx,%edx 0.00 : 437a28: e9 af fd ff ff jmpq 4377dc Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000445300 : 50.00 : 445300: 48 63 ff movslq %edi,%rdi 0.00 : 445303: 8b 04 bd 60 5d 69 00 mov 0x695d60(,%rdi,4),%eax 50.00 : 44530a: 83 e0 10 and $0x10,%eax Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000445660 : 100.00 : 445660: bf 10 53 44 00 mov $0x445310,%edi 0.00 : 445665: e9 26 ff ff ff jmpq 445590 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000446e40 : 0.00 : 446e40: 48 83 3d e0 f0 24 00 cmpq $0x0,0x24f0e0(%rip) # 695f28 0.00 : 446e47: 00 0.00 : 446e48: 53 push %rbx 0.00 : 446e49: 74 1f je 446e6a 50.00 : 446e4b: 8b 1d f3 f0 24 00 mov 0x24f0f3(%rip),%ebx # 695f44 0.00 : 446e51: 31 f6 xor %esi,%esi 0.00 : 446e53: 31 c0 xor %eax,%eax 50.00 : 446e55: c7 05 e5 f0 24 00 00 movl $0x0,0x24f0e5(%rip) # 695f44 0.00 : 446e5c: 00 00 00 0.00 : 446e5f: e8 5c 03 00 00 callq 4471c0 0.00 : 446e64: 89 1d da f0 24 00 mov %ebx,0x24f0da(%rip) # 695f44 0.00 : 446e6a: 5b pop %rbx Sorted summary for file /bin/bash ---------------------------------------------- 80.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000446ec0 : 80.00 : 446ec0: 48 89 fe mov %rdi,%rsi 20.00 : 446ec3: 31 c0 xor %eax,%eax 0.00 : 446ec5: 31 ff xor %edi,%edi 0.00 : 446ec7: e9 d4 ff ff ff jmpq 446ea0 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000044a0a0 : 0.00 : 44a0a0: 48 85 ff test %rdi,%rdi 0.00 : 44a0a3: 75 0b jne 44a0b0 0.00 : 44a0a5: 31 c0 xor %eax,%eax 0.00 : 44a0a7: c3 retq 0.00 : 44a0a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 44a0af: 00 0.00 : 44a0b0: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) 50.00 : 44a0b5: 74 ee je 44a0a5 0.00 : 44a0b7: 48 8b 57 18 mov 0x18(%rdi),%rdx 0.00 : 44a0bb: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 44a0bf: 48 39 c2 cmp %rax,%rdx 0.00 : 44a0c2: 75 15 jne 44a0d9 0.00 : 44a0c4: eb df jmp 44a0a5 0.00 : 44a0c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 44a0cd: 00 00 00 0.00 : 44a0d0: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 44a0d4: 48 39 c2 cmp %rax,%rdx 0.00 : 44a0d7: 74 cc je 44a0a5 0.00 : 44a0d9: 48 39 30 cmp %rsi,(%rax) 50.00 : 44a0dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 44a0e0: 75 ee jne 44a0d0 0.00 : 44a0e2: 48 8b 40 08 mov 0x8(%rax),%rax Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000044a7c0 : 50.00 : 44a7c0: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 44a7c5: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 44a7ca: 48 89 fb mov %rdi,%rbx 0.00 : 44a7cd: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 44a7d2: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 44a7d7: 48 83 ec 28 sub $0x28,%rsp 0.00 : 44a7db: 48 85 ff test %rdi,%rdi 0.00 : 44a7de: 48 89 f5 mov %rsi,%rbp 0.00 : 44a7e1: 49 89 d5 mov %rdx,%r13 0.00 : 44a7e4: 74 6a je 44a850 0.00 : 44a7e6: 48 89 d6 mov %rdx,%rsi 0.00 : 44a7e9: 48 89 ef mov %rbp,%rdi 0.00 : 44a7ec: e8 ff fc ff ff callq 44a4f0 0.00 : 44a7f1: 48 3b 6b 08 cmp 0x8(%rbx),%rbp 0.00 : 44a7f5: 48 89 c2 mov %rax,%rdx 0.00 : 44a7f8: 7e 66 jle 44a860 0.00 : 44a7fa: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 44a7fe: 48 83 43 10 01 addq $0x1,0x10(%rbx) 50.00 : 44a803: 48 89 6b 08 mov %rbp,0x8(%rbx) 0.00 : 44a807: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 44a80b: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 44a80f: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 44a813: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 44a817: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 44a81b: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 44a81f: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 44a823: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 44a827: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 44a82b: 31 c0 xor %eax,%eax 0.00 : 44a82d: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44a832: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 44a837: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 44a83c: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 44a841: 48 83 c4 28 add $0x28,%rsp 0.00 : 44a845: c3 retq 0.00 : 44a846: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 44a84d: 00 00 00 0.00 : 44a850: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 44a855: eb d6 jmp 44a82d 0.00 : 44a857: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44a85e: 00 00 0.00 : 44a860: 48 8b 4b 18 mov 0x18(%rbx),%rcx 0.00 : 44a864: 4c 8b 61 10 mov 0x10(%rcx),%r12 0.00 : 44a868: 4c 39 e1 cmp %r12,%rcx 0.00 : 44a86b: 75 1a jne 44a887 0.00 : 44a86d: 0f 1f 00 nopl (%rax) 0.00 : 44a870: eb de jmp 44a850 0.00 : 44a872: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44a878: 48 39 c5 cmp %rax,%rbp 0.00 : 44a87b: 7c 54 jl 44a8d1 0.00 : 44a87d: 4d 8b 64 24 10 mov 0x10(%r12),%r12 0.00 : 44a882: 4c 39 e1 cmp %r12,%rcx 0.00 : 44a885: 74 c9 je 44a850 0.00 : 44a887: 49 8b 04 24 mov (%r12),%rax 0.00 : 44a88b: 48 39 e8 cmp %rbp,%rax 0.00 : 44a88e: 75 e8 jne 44a878 0.00 : 44a890: 48 89 d7 mov %rdx,%rdi 0.00 : 44a893: e8 58 f8 ff ff callq 44a0f0 0.00 : 44a898: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 44a89d: e8 1e bb fc ff callq 4163c0 0.00 : 44a8a2: 31 c0 xor %eax,%eax 0.00 : 44a8a4: 4d 85 ed test %r13,%r13 0.00 : 44a8a7: 74 1c je 44a8c5 0.00 : 44a8a9: 4c 89 ef mov %r13,%rdi 0.00 : 44a8ac: e8 3f bb fc ff callq 4163f0 0.00 : 44a8b1: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 44a8b5: e8 06 da 00 00 callq 4582c0 0.00 : 44a8ba: 4c 89 ee mov %r13,%rsi 0.00 : 44a8bd: 48 89 c7 mov %rax,%rdi 0.00 : 44a8c0: e8 ab c0 fc ff callq 416970 0.00 : 44a8c5: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 44a8ca: 31 c0 xor %eax,%eax 0.00 : 44a8cc: e9 5c ff ff ff jmpq 44a82d 0.00 : 44a8d1: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 44a8d6: 48 83 43 10 01 addq $0x1,0x10(%rbx) 0.00 : 44a8db: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 44a8df: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 44a8e3: 31 c0 xor %eax,%eax 0.00 : 44a8e5: 49 89 54 24 18 mov %rdx,0x18(%r12) 0.00 : 44a8ea: 4c 89 62 10 mov %r12,0x10(%rdx) 0.00 : 44a8ee: e9 3a ff ff ff jmpq 44a82d Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000044c830 : 0.00 : 44c830: 41 57 push %r15 0.00 : 44c832: 41 56 push %r14 0.00 : 44c834: 49 89 fe mov %rdi,%r14 0.00 : 44c837: 41 55 push %r13 0.00 : 44c839: 41 54 push %r12 0.00 : 44c83b: 55 push %rbp 0.00 : 44c83c: 53 push %rbx 0.00 : 44c83d: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 44c844: 48 c7 44 24 60 00 00 movq $0x0,0x60(%rsp) 0.00 : 44c84b: 00 00 50.00 : 44c84d: 4c 8d 6c 24 7c lea 0x7c(%rsp),%r13 0.00 : 44c852: 48 8d 6c 24 78 lea 0x78(%rsp),%rbp 0.00 : 44c857: e8 94 9b fc ff callq 4163f0 0.00 : 44c85c: c7 44 24 7c 00 00 00 movl $0x0,0x7c(%rsp) 0.00 : 44c863: 00 0.00 : 44c864: 48 89 c3 mov %rax,%rbx 0.00 : 44c867: eb 2e jmp 44c897 0.00 : 44c869: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 44c870: 8b 44 24 7c mov 0x7c(%rsp),%eax 0.00 : 44c874: b9 7d 00 00 00 mov $0x7d,%ecx 0.00 : 44c879: 48 89 ea mov %rbp,%rdx 0.00 : 44c87c: 48 89 de mov %rbx,%rsi 0.00 : 44c87f: 4c 89 f7 mov %r14,%rdi 0.00 : 44c882: 83 c0 01 add $0x1,%eax 0.00 : 44c885: 89 44 24 78 mov %eax,0x78(%rsp) 0.00 : 44c889: e8 e2 fb ff ff callq 44c470 0.00 : 44c88e: 85 c0 test %eax,%eax 0.00 : 44c890: 75 1f jne 44c8b1 0.00 : 44c892: 83 44 24 7c 01 addl $0x1,0x7c(%rsp) 0.00 : 44c897: b9 7b 00 00 00 mov $0x7b,%ecx 0.00 : 44c89c: 4c 89 ea mov %r13,%rdx 0.00 : 44c89f: 48 89 de mov %rbx,%rsi 0.00 : 44c8a2: 4c 89 f7 mov %r14,%rdi 0.00 : 44c8a5: e8 c6 fb ff ff callq 44c470 0.00 : 44c8aa: 85 c0 test %eax,%eax 0.00 : 44c8ac: 41 89 c4 mov %eax,%r12d 0.00 : 44c8af: 75 bf jne 44c870 0.00 : 44c8b1: 8b 7c 24 7c mov 0x7c(%rsp),%edi 0.00 : 44c8b5: 83 c7 01 add $0x1,%edi 0.00 : 44c8b8: 48 63 ff movslq %edi,%rdi 0.00 : 44c8bb: e8 00 ba 00 00 callq 4582c0 0.00 : 44c8c0: 48 63 54 24 7c movslq 0x7c(%rsp),%rdx 0.00 : 44c8c5: 4c 89 f6 mov %r14,%rsi 0.00 : 44c8c8: 48 89 c7 mov %rax,%rdi 0.00 : 44c8cb: 49 89 c7 mov %rax,%r15 0.00 : 44c8ce: e8 7d a1 fc ff callq 416a50 0.00 : 44c8d3: 48 63 44 24 7c movslq 0x7c(%rsp),%rax 0.00 : 44c8d8: bf 10 00 00 00 mov $0x10,%edi 0.00 : 44c8dd: 41 c6 04 07 00 movb $0x0,(%r15,%rax,1) 50.00 : 44c8e2: e8 d9 b9 00 00 callq 4582c0 0.00 : 44c8e7: 41 83 fc 7b cmp $0x7b,%r12d 0.00 : 44c8eb: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 44c8f0: 4c 89 38 mov %r15,(%rax) 0.00 : 44c8f3: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 44c8fa: 00 0.00 : 44c8fb: 74 1b je 44c918 0.00 : 44c8fd: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 44c902: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 44c909: 5b pop %rbx 0.00 : 44c90a: 5d pop %rbp 0.00 : 44c90b: 41 5c pop %r12 0.00 : 44c90d: 41 5d pop %r13 0.00 : 44c90f: 41 5e pop %r14 0.00 : 44c911: 41 5f pop %r15 0.00 : 44c913: c3 retq 0.00 : 44c914: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 44c918: 8b 44 24 7c mov 0x7c(%rsp),%eax 0.00 : 44c91c: b9 7d 00 00 00 mov $0x7d,%ecx 0.00 : 44c921: 4c 89 ea mov %r13,%rdx 0.00 : 44c924: 48 89 de mov %rbx,%rsi 0.00 : 44c927: 4c 89 f7 mov %r14,%rdi 0.00 : 44c92a: 8d 68 01 lea 0x1(%rax),%ebp 0.00 : 44c92d: 89 6c 24 7c mov %ebp,0x7c(%rsp) 0.00 : 44c931: e8 3a fb ff ff callq 44c470 0.00 : 44c936: 85 c0 test %eax,%eax 0.00 : 44c938: 0f 84 f2 00 00 00 je 44ca30 0.00 : 44c93e: 8b 54 24 7c mov 0x7c(%rsp),%edx 0.00 : 44c942: 89 ee mov %ebp,%esi 0.00 : 44c944: 4c 89 f7 mov %r14,%rdi 0.00 : 44c947: e8 04 65 00 00 callq 452e50 0.00 : 44c94c: 44 8b 64 24 7c mov 0x7c(%rsp),%r12d 0.00 : 44c951: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 44c956: 48 c7 44 24 60 00 00 movq $0x0,0x60(%rsp) 0.00 : 44c95d: 00 00 0.00 : 44c95f: c7 44 24 78 00 00 00 movl $0x0,0x78(%rsp) 0.00 : 44c966: 00 0.00 : 44c967: 41 29 ec sub %ebp,%r12d 0.00 : 44c96a: 49 63 cc movslq %r12d,%rcx 0.00 : 44c96d: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 44c972: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44c978: 8b 54 24 78 mov 0x78(%rsp),%edx 0.00 : 44c97c: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 44c981: 48 63 c2 movslq %edx,%rax 0.00 : 44c984: 0f b6 04 01 movzbl (%rcx,%rax,1),%eax 0.00 : 44c988: 84 c0 test %al,%al 0.00 : 44c98a: 0f 84 d8 00 00 00 je 44ca68 0.00 : 44c990: 3c 5c cmp $0x5c,%al 0.00 : 44c992: 74 5c je 44c9f0 0.00 : 44c994: 0f be c8 movsbl %al,%ecx 0.00 : 44c997: 3b 0d 4b ed 23 00 cmp 0x23ed4b(%rip),%ecx # 68b6e8 0.00 : 44c99d: 0f 84 55 01 00 00 je 44caf8 0.00 : 44c9a3: e8 b8 9a fc ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 44c9a8: 48 83 f8 01 cmp $0x1,%rax 0.00 : 44c9ac: 76 5a jbe 44ca08 0.00 : 44c9ae: 48 63 74 24 78 movslq 0x78(%rsp),%rsi 0.00 : 44c9b3: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 44c9b8: 48 8d 4c 24 60 lea 0x60(%rsp),%rcx 0.00 : 44c9bd: 31 ff xor %edi,%edi 0.00 : 44c9bf: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 44c9c4: 48 29 f2 sub %rsi,%rdx 0.00 : 44c9c7: 48 03 74 24 08 add 0x8(%rsp),%rsi 0.00 : 44c9cc: e8 7f 94 fc ff callq 415e50 0.00 : 44c9d1: 48 89 c2 mov %rax,%rdx 0.00 : 44c9d4: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 44c9d8: 48 83 f8 01 cmp $0x1,%rax 0.00 : 44c9dc: 76 3a jbe 44ca18 0.00 : 44c9de: 48 85 d2 test %rdx,%rdx 0.00 : 44c9e1: 74 25 je 44ca08 0.00 : 44c9e3: 01 54 24 78 add %edx,0x78(%rsp) 0.00 : 44c9e7: eb 8f jmp 44c978 0.00 : 44c9e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 44c9f0: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 44c9f3: 89 44 24 78 mov %eax,0x78(%rsp) 0.00 : 44c9f7: e8 64 9a fc ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 44c9fc: 48 83 f8 01 cmp $0x1,%rax 0.00 : 44ca00: 77 ac ja 44c9ae 0.00 : 44ca02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44ca08: 83 44 24 78 01 addl $0x1,0x78(%rsp) 0.00 : 44ca0d: e9 66 ff ff ff jmpq 44c978 0.00 : 44ca12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44ca18: 48 89 5c 24 60 mov %rbx,0x60(%rsp) 0.00 : 44ca1d: 83 44 24 78 01 addl $0x1,0x78(%rsp) 0.00 : 44ca22: e9 51 ff ff ff jmpq 44c978 0.00 : 44ca27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44ca2e: 00 00 0.00 : 44ca30: 4c 89 ff mov %r15,%rdi 0.00 : 44ca33: e8 88 99 fc ff callq 4163c0 0.00 : 44ca38: 4c 89 f7 mov %r14,%rdi 0.00 : 44ca3b: e8 b0 99 fc ff callq 4163f0 0.00 : 44ca40: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 44ca44: e8 77 b8 00 00 callq 4582c0 0.00 : 44ca49: 4c 89 f6 mov %r14,%rsi 0.00 : 44ca4c: 48 89 c7 mov %rax,%rdi 0.00 : 44ca4f: e8 1c 9f fc ff callq 416970 0.00 : 44ca54: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 44ca59: 48 89 02 mov %rax,(%rdx) 0.00 : 44ca5c: e9 9c fe ff ff jmpq 44c8fd 0.00 : 44ca61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 44ca68: be d1 75 47 00 mov $0x4775d1,%esi 0.00 : 44ca6d: 48 89 cf mov %rcx,%rdi 0.00 : 44ca70: e8 4b 9b fc ff callq 4165c0 0.00 : 44ca75: 48 85 c0 test %rax,%rax 0.00 : 44ca78: 74 5a je 44cad4 0.00 : 44ca7a: 89 c3 mov %eax,%ebx 0.00 : 44ca7c: 2b 5c 24 08 sub 0x8(%rsp),%ebx 0.00 : 44ca80: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44ca85: 31 f6 xor %esi,%esi 0.00 : 44ca87: 89 da mov %ebx,%edx 0.00 : 44ca89: e8 c2 63 00 00 callq 452e50 0.00 : 44ca8e: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44ca93: 8d 73 02 lea 0x2(%rbx),%esi 0.00 : 44ca96: 44 89 e2 mov %r12d,%edx 0.00 : 44ca99: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 44ca9e: e8 ad 63 00 00 callq 452e50 0.00 : 44caa3: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 44caa8: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 44caad: 80 38 00 cmpb $0x0,(%rax) 0.00 : 44cab0: 74 0e je 44cac0 0.00 : 44cab2: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 44cab7: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 44caba: 0f 85 4e 02 00 00 jne 44cd0e 0.00 : 44cac0: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 44cac5: e8 f6 98 fc ff callq 4163c0 0.00 : 44caca: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 44cacf: e8 ec 98 fc ff callq 4163c0 0.00 : 44cad4: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44cad9: e8 e2 98 fc ff callq 4163c0 0.00 : 44cade: 4c 89 ff mov %r15,%rdi 0.00 : 44cae1: e8 da 98 fc ff callq 4163c0 0.00 : 44cae6: 4c 89 f7 mov %r14,%rdi 0.00 : 44cae9: e8 02 99 fc ff callq 4163f0 0.00 : 44caee: e9 4d ff ff ff jmpq 44ca40 0.00 : 44caf3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 44caf8: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 0.00 : 44cafd: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44cb02: 48 8d 54 24 74 lea 0x74(%rsp),%rdx 0.00 : 44cb07: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : 44cb0e: 00 00 0.00 : 44cb10: c7 44 24 74 00 00 00 movl $0x0,0x74(%rsp) 0.00 : 44cb17: 00 0.00 : 44cb18: e8 53 f9 ff ff callq 44c470 0.00 : 44cb1d: 8b 54 24 74 mov 0x74(%rsp),%edx 0.00 : 44cb21: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44cb26: 31 f6 xor %esi,%esi 0.00 : 44cb28: 89 44 24 3c mov %eax,0x3c(%rsp) 0.00 : 44cb2c: e8 1f 63 00 00 callq 452e50 0.00 : 44cb31: 48 89 c7 mov %rax,%rdi 0.00 : 44cb34: 49 89 c7 mov %rax,%r15 0.00 : 44cb37: e8 f4 fc ff ff callq 44c830 0.00 : 44cb3c: 48 89 c5 mov %rax,%rbp 0.00 : 44cb3f: 90 nop 0.00 : 44cb40: 4c 89 ff mov %r15,%rdi 0.00 : 44cb43: e8 78 98 fc ff callq 4163c0 0.00 : 44cb48: e8 13 99 fc ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 44cb4d: 48 83 f8 01 cmp $0x1,%rax 0.00 : 44cb51: 0f 86 11 01 00 00 jbe 44cc68 0.00 : 44cb57: 48 63 74 24 74 movslq 0x74(%rsp),%rsi 0.00 : 44cb5c: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 44cb61: 48 8d 4c 24 40 lea 0x40(%rsp),%rcx 0.00 : 44cb66: 31 ff xor %edi,%edi 0.00 : 44cb68: 48 8b 5c 24 40 mov 0x40(%rsp),%rbx 0.00 : 44cb6d: 48 29 f2 sub %rsi,%rdx 0.00 : 44cb70: 48 03 74 24 08 add 0x8(%rsp),%rsi 0.00 : 44cb75: e8 d6 92 fc ff callq 415e50 0.00 : 44cb7a: 48 89 c2 mov %rax,%rdx 0.00 : 44cb7d: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 44cb81: 48 83 f8 01 cmp $0x1,%rax 0.00 : 44cb85: 0f 86 6d 01 00 00 jbe 44ccf8 0.00 : 44cb8b: 48 85 d2 test %rdx,%rdx 0.00 : 44cb8e: 0f 84 d4 00 00 00 je 44cc68 0.00 : 44cb94: 01 54 24 74 add %edx,0x74(%rsp) 0.00 : 44cb98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 44cb9f: 00 0.00 : 44cba0: 44 8b 44 24 3c mov 0x3c(%rsp),%r8d 0.00 : 44cba5: 8b 5c 24 74 mov 0x74(%rsp),%ebx 0.00 : 44cba9: 45 85 c0 test %r8d,%r8d 0.00 : 44cbac: 0f 84 ee 00 00 00 je 44cca0 0.00 : 44cbb2: 8b 0d 30 eb 23 00 mov 0x23eb30(%rip),%ecx # 68b6e8 0.00 : 44cbb8: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 0.00 : 44cbbd: 48 8d 54 24 74 lea 0x74(%rsp),%rdx 0.00 : 44cbc2: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44cbc7: e8 a4 f8 ff ff callq 44c470 0.00 : 44cbcc: 8b 54 24 74 mov 0x74(%rsp),%edx 0.00 : 44cbd0: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44cbd5: 89 de mov %ebx,%esi 0.00 : 44cbd7: 89 44 24 3c mov %eax,0x3c(%rsp) 0.00 : 44cbdb: e8 70 62 00 00 callq 452e50 0.00 : 44cbe0: 48 89 c7 mov %rax,%rdi 0.00 : 44cbe3: 49 89 c7 mov %rax,%r15 0.00 : 44cbe6: e8 45 fc ff ff callq 44c830 0.00 : 44cbeb: 48 85 ed test %rbp,%rbp 0.00 : 44cbee: 49 89 c4 mov %rax,%r12 0.00 : 44cbf1: 74 6a je 44cc5d 0.00 : 44cbf3: 48 89 ef mov %rbp,%rdi 0.00 : 44cbf6: e8 65 f3 01 00 callq 46bf60 0.00 : 44cbfb: 4c 89 e7 mov %r12,%rdi 0.00 : 44cbfe: 41 89 c5 mov %eax,%r13d 0.00 : 44cc01: e8 5a f3 01 00 callq 46bf60 0.00 : 44cc06: 89 c3 mov %eax,%ebx 0.00 : 44cc08: 48 89 ef mov %rbp,%rdi 0.00 : 44cc0b: 42 8d 74 2b 01 lea 0x1(%rbx,%r13,1),%esi 0.00 : 44cc10: e8 cb f7 01 00 callq 46c3e0 0.00 : 44cc15: 85 db test %ebx,%ebx 0.00 : 44cc17: 48 89 c5 mov %rax,%rbp 0.00 : 44cc1a: 0f 8e e7 00 00 00 jle 44cd07 0.00 : 44cc20: 49 63 c5 movslq %r13d,%rax 0.00 : 44cc23: 31 d2 xor %edx,%edx 0.00 : 44cc25: 48 8d 4c c5 00 lea 0x0(%rbp,%rax,8),%rcx 0.00 : 44cc2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44cc30: 49 8b 04 d4 mov (%r12,%rdx,8),%rax 0.00 : 44cc34: 48 83 c2 01 add $0x1,%rdx 0.00 : 44cc38: 48 89 01 mov %rax,(%rcx) 0.00 : 44cc3b: 48 83 c1 08 add $0x8,%rcx 0.00 : 44cc3f: 39 d3 cmp %edx,%ebx 0.00 : 44cc41: 7f ed jg 44cc30 0.00 : 44cc43: 42 8d 04 2b lea (%rbx,%r13,1),%eax 0.00 : 44cc47: 4c 89 e7 mov %r12,%rdi 0.00 : 44cc4a: 49 89 ec mov %rbp,%r12 0.00 : 44cc4d: 48 98 cltq 0.00 : 44cc4f: 48 c7 44 c5 00 00 00 movq $0x0,0x0(%rbp,%rax,8) 0.00 : 44cc56: 00 00 0.00 : 44cc58: e8 63 97 fc ff callq 4163c0 0.00 : 44cc5d: 4c 89 e5 mov %r12,%rbp 0.00 : 44cc60: e9 db fe ff ff jmpq 44cb40 0.00 : 44cc65: 0f 1f 00 nopl (%rax) 0.00 : 44cc68: 83 44 24 74 01 addl $0x1,0x74(%rsp) 0.00 : 44cc6d: e9 2e ff ff ff jmpq 44cba0 0.00 : 44cc72: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 44cc77: 48 63 c3 movslq %ebx,%rax 0.00 : 44cc7a: 48 c7 44 c5 00 00 00 movq $0x0,0x0(%rbp,%rax,8) 0.00 : 44cc81: 00 00 0.00 : 44cc83: e8 38 97 fc ff callq 4163c0 0.00 : 44cc88: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 44cc8d: e8 2e 97 fc ff callq 4163c0 0.00 : 44cc92: 48 85 ed test %rbp,%rbp 0.00 : 44cc95: 0f 84 39 fe ff ff je 44cad4 0.00 : 44cc9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 44cca0: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 44cca5: 48 89 ee mov %rbp,%rsi 0.00 : 44cca8: e8 53 f6 ff ff callq 44c300 0.00 : 44ccad: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 44ccb2: 49 89 c4 mov %rax,%r12 0.00 : 44ccb5: e8 06 97 fc ff callq 4163c0 0.00 : 44ccba: 48 89 ef mov %rbp,%rdi 0.00 : 44ccbd: e8 fe f2 01 00 callq 46bfc0 0.00 : 44ccc2: 48 63 44 24 7c movslq 0x7c(%rsp),%rax 0.00 : 44ccc7: 49 8d 7c 06 01 lea 0x1(%r14,%rax,1),%rdi 0.00 : 44cccc: e8 5f fb ff ff callq 44c830 0.00 : 44ccd1: 4c 89 e7 mov %r12,%rdi 0.00 : 44ccd4: 48 89 c3 mov %rax,%rbx 0.00 : 44ccd7: 48 89 c6 mov %rax,%rsi 0.00 : 44ccda: e8 21 f6 ff ff callq 44c300 0.00 : 44ccdf: 48 89 df mov %rbx,%rdi 0.00 : 44cce2: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 44cce7: e8 d4 f2 01 00 callq 46bfc0 0.00 : 44ccec: e9 0c fc ff ff jmpq 44c8fd 0.00 : 44ccf1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 44ccf8: 48 89 5c 24 40 mov %rbx,0x40(%rsp) 0.00 : 44ccfd: 83 44 24 74 01 addl $0x1,0x74(%rsp) 0.00 : 44cd02: e9 99 fe ff ff jmpq 44cba0 0.00 : 44cd07: 31 db xor %ebx,%ebx 0.00 : 44cd09: e9 35 ff ff ff jmpq 44cc43 0.00 : 44cd0e: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 44cd13: 48 8d 74 24 58 lea 0x58(%rsp),%rsi 0.00 : 44cd18: 31 db xor %ebx,%ebx 0.00 : 44cd1a: e8 51 59 fd ff callq 422670 0.00 : 44cd1f: 85 c0 test %eax,%eax 0.00 : 44cd21: c7 44 24 24 01 00 00 movl $0x1,0x24(%rsp) 0.00 : 44cd28: 00 0.00 : 44cd29: 0f 84 e7 00 00 00 je 44ce16 0.00 : 44cd2f: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 44cd34: 48 8d 74 24 50 lea 0x50(%rsp),%rsi 0.00 : 44cd39: e8 32 59 fd ff callq 422670 0.00 : 44cd3e: 85 c0 test %eax,%eax 0.00 : 44cd40: ba 01 00 00 00 mov $0x1,%edx 0.00 : 44cd45: 0f 84 0b 01 00 00 je 44ce56 0.00 : 44cd4b: 39 54 24 24 cmp %edx,0x24(%rsp) 0.00 : 44cd4f: 0f 85 6b fd ff ff jne 44cac0 0.00 : 44cd55: 84 db test %bl,%bl 0.00 : 44cd57: 0f 85 63 fd ff ff jne 44cac0 0.00 : 44cd5d: 83 7c 24 24 02 cmpl $0x2,0x24(%rsp) 0.00 : 44cd62: 0f 84 1c 01 00 00 je 44ce84 0.00 : 44cd68: 8b 4c 24 50 mov 0x50(%rsp),%ecx 0.00 : 44cd6c: 44 8b 64 24 58 mov 0x58(%rsp),%r12d 0.00 : 44cd71: 89 4c 24 20 mov %ecx,0x20(%rsp) 0.00 : 44cd75: 8b 7c 24 20 mov 0x20(%rsp),%edi 0.00 : 44cd79: 45 31 ed xor %r13d,%r13d 0.00 : 44cd7c: 44 29 e7 sub %r12d,%edi 0.00 : 44cd7f: 89 f8 mov %edi,%eax 0.00 : 44cd81: c1 f8 1f sar $0x1f,%eax 0.00 : 44cd84: 31 c7 xor %eax,%edi 0.00 : 44cd86: 29 c7 sub %eax,%edi 0.00 : 44cd88: 83 c7 02 add $0x2,%edi 0.00 : 44cd8b: e8 90 f3 01 00 callq 46c120 0.00 : 44cd90: 44 3b 64 24 20 cmp 0x20(%rsp),%r12d 0.00 : 44cd95: 48 89 c5 mov %rax,%rbp 0.00 : 44cd98: 41 0f 9e c5 setle %r13b 0.00 : 44cd9c: 31 db xor %ebx,%ebx 0.00 : 44cd9e: 47 8d 6c 2d ff lea -0x1(%r13,%r13,1),%r13d 0.00 : 44cda3: eb 3e jmp 44cde3 0.00 : 44cda5: 0f 1f 00 nopl (%rax) 0.00 : 44cda8: 8b 05 8a 91 24 00 mov 0x24918a(%rip),%eax # 695f38 0.00 : 44cdae: 85 c0 test %eax,%eax 0.00 : 44cdb0: 75 5d jne 44ce0f 0.00 : 44cdb2: 83 7c 24 24 01 cmpl $0x1,0x24(%rsp) 0.00 : 44cdb7: 74 41 je 44cdfa 0.00 : 44cdb9: bf 02 00 00 00 mov $0x2,%edi 0.00 : 44cdbe: e8 fd b4 00 00 callq 4582c0 0.00 : 44cdc3: 48 63 d3 movslq %ebx,%rdx 0.00 : 44cdc6: 44 88 20 mov %r12b,(%rax) 0.00 : 44cdc9: c6 40 01 00 movb $0x0,0x1(%rax) 0.00 : 44cdcd: 83 c3 01 add $0x1,%ebx 0.00 : 44cdd0: 48 89 44 d5 00 mov %rax,0x0(%rbp,%rdx,8) 0.00 : 44cdd5: 44 39 64 24 20 cmp %r12d,0x20(%rsp) 0.00 : 44cdda: 0f 84 92 fe ff ff je 44cc72 0.00 : 44cde0: 45 01 ec add %r13d,%r12d 0.00 : 44cde3: 8b 05 57 91 24 00 mov 0x249157(%rip),%eax # 695f40 0.00 : 44cde9: 85 c0 test %eax,%eax 0.00 : 44cdeb: 74 bb je 44cda8 0.00 : 44cded: 8b 3d 4d 91 24 00 mov 0x24914d(%rip),%edi # 695f40 0.00 : 44cdf3: e8 98 ad ff ff callq 447b90 0.00 : 44cdf8: eb ae jmp 44cda8 0.00 : 44cdfa: 49 63 fc movslq %r12d,%rdi 0.00 : 44cdfd: e8 3e c8 01 00 callq 469640 0.00 : 44ce02: 48 63 d3 movslq %ebx,%rdx 0.00 : 44ce05: 83 c3 01 add $0x1,%ebx 0.00 : 44ce08: 48 89 44 d5 00 mov %rax,0x0(%rbp,%rdx,8) 0.00 : 44ce0d: eb c6 jmp 44cdd5 0.00 : 44ce0f: e8 7c af ff ff callq 447d90 0.00 : 44ce14: eb 9c jmp 44cdb2 0.00 : 44ce16: 66 90 xchg %ax,%ax 0.00 : 44ce18: e8 73 96 fc ff callq 416490 <__ctype_b_loc@plt> 0.00 : 44ce1d: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 44ce22: 48 8b 00 mov (%rax),%rax 0.00 : 44ce25: 48 0f be 11 movsbq (%rcx),%rdx 0.00 : 44ce29: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 44ce2e: 74 14 je 44ce44 0.00 : 44ce30: c7 44 24 24 02 00 00 movl $0x2,0x24(%rsp) 0.00 : 44ce37: 00 0.00 : 44ce38: 31 db xor %ebx,%ebx 0.00 : 44ce3a: 80 79 01 00 cmpb $0x0,0x1(%rcx) 0.00 : 44ce3e: 0f 84 eb fe ff ff je 44cd2f 0.00 : 44ce44: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 44ce4b: 00 0.00 : 44ce4c: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 44ce51: e9 d9 fe ff ff jmpq 44cd2f 0.00 : 44ce56: e8 35 96 fc ff callq 416490 <__ctype_b_loc@plt> 0.00 : 44ce5b: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 44ce60: 48 8b 00 mov (%rax),%rax 0.00 : 44ce63: 48 0f be 11 movsbq (%rcx),%rdx 0.00 : 44ce67: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 44ce6c: 74 0f je 44ce7d 0.00 : 44ce6e: 80 79 01 00 cmpb $0x0,0x1(%rcx) 0.00 : 44ce72: ba 02 00 00 00 mov $0x2,%edx 0.00 : 44ce77: 0f 84 ce fe ff ff je 44cd4b 0.00 : 44ce7d: 31 d2 xor %edx,%edx 0.00 : 44ce7f: e9 c7 fe ff ff jmpq 44cd4b 0.00 : 44ce84: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 44ce89: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 44ce8e: 0f b6 12 movzbl (%rdx),%edx 0.00 : 44ce91: 44 0f b6 20 movzbl (%rax),%r12d 0.00 : 44ce95: 89 54 24 20 mov %edx,0x20(%rsp) 0.00 : 44ce99: e9 d7 fe ff ff jmpq 44cd75 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046b320 : 0.00 : 46b320: 41 57 push %r15 0.00 : 46b322: 41 56 push %r14 0.00 : 46b324: 41 be 85 b9 47 00 mov $0x47b985,%r14d 0.00 : 46b32a: 41 55 push %r13 0.00 : 46b32c: 41 54 push %r12 0.00 : 46b32e: 49 89 fc mov %rdi,%r12 0.00 : 46b331: bf 01 10 00 00 mov $0x1001,%edi 0.00 : 46b336: 55 push %rbp 0.00 : 46b337: 53 push %rbx 0.00 : 46b338: 89 f3 mov %esi,%ebx 0.00 : 46b33a: 41 89 df mov %ebx,%r15d 0.00 : 46b33d: 48 83 ec 28 sub $0x28,%rsp 0.00 : 46b341: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 46b346: e8 75 cf fe ff callq 4582c0 0.00 : 46b34b: 89 df mov %ebx,%edi 0.00 : 46b34d: 49 89 c5 mov %rax,%r13 0.00 : 46b350: e8 eb fe ff ff callq 46b240 0.00 : 46b355: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 46b35a: 48 89 c7 mov %rax,%rdi 0.00 : 46b35d: e8 8e b0 fa ff callq 4163f0 0.00 : 46b362: 4d 85 e4 test %r12,%r12 0.00 : 46b365: 89 44 24 20 mov %eax,0x20(%rsp) 0.00 : 46b369: 89 d8 mov %ebx,%eax 0.00 : 46b36b: 4d 0f 45 f4 cmovne %r12,%r14 0.00 : 46b36f: 83 e0 04 and $0x4,%eax 0.00 : 46b372: 41 83 e7 02 and $0x2,%r15d 0.00 : 46b376: 89 44 24 24 mov %eax,0x24(%rsp) 0.00 : 46b37a: e9 9c 00 00 00 jmpq 46b41b 0.00 : 46b37f: 90 nop 0.00 : 46b380: 8b 05 2a b4 22 00 mov 0x22b42a(%rip),%eax # 6967b0 0.00 : 46b386: 48 63 c8 movslq %eax,%rcx 0.00 : 46b389: 83 c0 01 add $0x1,%eax 0.00 : 46b38c: 89 05 1e b4 22 00 mov %eax,0x22b41e(%rip) # 6967b0 0.00 : 46b392: 48 8d 54 2d 00 lea 0x0(%rbp,%rbp,1),%rdx 0.00 : 46b397: 49 63 c4 movslq %r12d,%rax 0.00 : 46b39a: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 46b39f: 4d 89 f1 mov %r14,%r9 0.00 : 46b3a2: be 01 00 00 00 mov $0x1,%esi 0.00 : 46b3a7: 4c 89 ef mov %r13,%rdi 0.00 : 46b3aa: 48 31 d0 xor %rdx,%rax 0.00 : 46b3ad: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 46b3b4: 48 31 d8 xor %rbx,%rax 0.00 : 46b3b7: 48 31 c8 xor %rcx,%rax 0.00 : 46b3ba: b9 8b b9 47 00 mov $0x47b98b,%ecx 0.00 : 46b3bf: 48 89 05 82 20 22 00 mov %rax,0x222082(%rip) # 68d448 0.00 : 46b3c6: 48 89 04 24 mov %rax,(%rsp) 0.00 : 46b3ca: 31 c0 xor %eax,%eax 0.00 : 46b3cc: e8 0f b7 fa ff callq 416ae0 <__sprintf_chk@plt> 0.00 : 46b3d1: 8b 15 79 20 22 00 mov 0x222079(%rip),%edx # 68d450 0.00 : 46b3d7: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 46b3da: 83 f8 1e cmp $0x1e,%eax 0.00 : 46b3dd: 77 10 ja 46b3ef 0.00 : 46b3df: 8b 4c 24 20 mov 0x20(%rsp),%ecx 0.00 : 46b3e3: 8d 44 11 01 lea 0x1(%rcx,%rdx,1),%eax 0.00 : 46b3e7: 48 98 cltq 0.00 : 46b3e9: 41 c6 44 05 00 00 movb $0x0,0x0(%r13,%rax,1) 0.00 : 46b3ef: 41 83 ff 01 cmp $0x1,%r15d 0.00 : 46b3f3: ba 80 01 00 00 mov $0x180,%edx 0.00 : 46b3f8: 4c 89 ef mov %r13,%rdi 0.00 : 46b3fb: 19 f6 sbb %esi,%esi 0.00 : 46b3fd: 31 c0 xor %eax,%eax 0.00 : 46b3ff: 81 c6 c2 02 00 00 add $0x2c2,%esi 0.00 : 46b405: e8 d6 b8 fa ff callq 416ce0 0.00 : 46b40a: 85 c0 test %eax,%eax 0.00 : 46b40c: 41 89 c4 mov %eax,%r12d 0.00 : 46b40f: 79 3f jns 46b450 0.00 : 46b411: e8 2a b4 fa ff callq 416840 <__errno_location@plt> 0.00 : 46b416: 83 38 11 cmpl $0x11,(%rax) 0.00 : 46b419: 75 35 jne 46b450 50.00 : 46b41b: 31 ff xor %edi,%edi 0.00 : 46b41d: 48 8b 2d 24 20 22 00 mov 0x222024(%rip),%rbp # 68d448 0.00 : 46b424: e8 f7 b8 fa ff callq 416d20 0.00 : 46b429: 48 89 c3 mov %rax,%rbx 0.00 : 46b42c: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 46b430: 44 8b 25 7d b8 22 00 mov 0x22b87d(%rip),%r12d # 696cb4 0.00 : 46b437: 85 c0 test %eax,%eax 0.00 : 46b439: 0f 84 41 ff ff ff je 46b380 0.00 : 46b43f: e8 ec 32 fc ff callq 42e730 50.00 : 46b444: 48 63 c8 movslq %eax,%rcx 0.00 : 46b447: e9 46 ff ff ff jmpq 46b392 0.00 : 46b44c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 46b450: 48 83 7c 24 10 00 cmpq $0x0,0x10(%rsp) 0.00 : 46b456: 74 20 je 46b478 0.00 : 46b458: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 46b45d: 4c 89 28 mov %r13,(%rax) 0.00 : 46b460: 48 83 c4 28 add $0x28,%rsp 0.00 : 46b464: 44 89 e0 mov %r12d,%eax 0.00 : 46b467: 5b pop %rbx 0.00 : 46b468: 5d pop %rbp 0.00 : 46b469: 41 5c pop %r12 0.00 : 46b46b: 41 5d pop %r13 0.00 : 46b46d: 41 5e pop %r14 0.00 : 46b46f: 41 5f pop %r15 0.00 : 46b471: c3 retq 0.00 : 46b472: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46b478: 4c 89 ef mov %r13,%rdi 0.00 : 46b47b: e8 40 af fa ff callq 4163c0 0.00 : 46b480: eb de jmp 46b460 Sorted summary for file /bin/bash ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046bfc0 : 60.00 : 46bfc0: 48 85 ff test %rdi,%rdi 20.00 : 46bfc3: 53 push %rbx 0.00 : 46bfc4: 48 89 fb mov %rdi,%rbx 0.00 : 46bfc7: 74 17 je 46bfe0 0.00 : 46bfc9: e8 c2 ff ff ff callq 46bf90 0.00 : 46bfce: 48 89 df mov %rbx,%rdi 0.00 : 46bfd1: 5b pop %rbx 0.00 : 46bfd2: e9 e9 a3 fa ff jmpq 4163c0 0.00 : 46bfd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46bfde: 00 00 20.00 : 46bfe0: 5b pop %rbx Sorted summary for file /bin/bash ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000471ae0 : 0.00 : 471ae0: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 471ae5: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 471aea: 48 89 d3 mov %rdx,%rbx 0.00 : 471aed: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 471af2: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 471af7: 48 89 fd mov %rdi,%rbp 0.00 : 471afa: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 471aff: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 471b04: 48 83 ec 78 sub $0x78,%rsp 0.00 : 471b08: 48 85 d2 test %rdx,%rdx 0.00 : 471b0b: 48 89 74 24 10 mov %rsi,0x10(%rsp) 0.00 : 471b10: 0f 84 42 01 00 00 je 471c58 0.00 : 471b16: 48 85 ff test %rdi,%rdi 0.00 : 471b19: 0f 84 09 01 00 00 je 471c28 0.00 : 471b1f: bf 80 00 00 00 mov $0x80,%edi 0.00 : 471b24: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) 0.00 : 471b2b: 00 00 0.00 : 471b2d: e8 ee 45 fa ff callq 416120 0.00 : 471b32: 48 85 c0 test %rax,%rax 0.00 : 471b35: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 471b3a: 0f 84 e0 00 00 00 je 471c20 0.00 : 471b40: bf 00 01 00 00 mov $0x100,%edi 0.00 : 471b45: e8 d6 45 fa ff callq 416120 0.00 : 471b4a: 48 85 c0 test %rax,%rax 0.00 : 471b4d: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 471b52: 0f 84 90 01 00 00 je 471ce8 0.00 : 471b58: 49 89 df mov %rbx,%r15 0.00 : 471b5b: 48 c7 44 24 28 20 00 movq $0x20,0x28(%rsp) 0.00 : 471b62: 00 00 0.00 : 471b64: 31 db xor %ebx,%ebx 0.00 : 471b66: 45 31 f6 xor %r14d,%r14d 0.00 : 471b69: eb 4e jmp 471bb9 0.00 : 471b6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 471b70: c7 44 24 3c 00 00 00 movl $0x0,0x3c(%rsp) 0.00 : 471b77: 00 0.00 : 471b78: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 471b7e: 4c 8d 43 01 lea 0x1(%rbx),%r8 0.00 : 471b82: 4c 39 44 24 28 cmp %r8,0x28(%rsp) 0.00 : 471b87: 0f 82 d3 00 00 00 jb 471c60 33.33 : 471b8d: 8b 44 24 3c mov 0x3c(%rsp),%eax 0.00 : 471b91: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 471b96: 42 89 04 32 mov %eax,(%rdx,%r14,1) 33.33 : 471b9a: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 471b9f: 4e 89 3c 70 mov %r15,(%rax,%r14,2) 0.00 : 471ba3: 8b 44 24 3c mov 0x3c(%rsp),%eax 0.00 : 471ba7: 49 83 c6 04 add $0x4,%r14 0.00 : 471bab: 85 c0 test %eax,%eax 0.00 : 471bad: 0f 84 0d 01 00 00 je 471cc0 0.00 : 471bb3: 4d 01 ef add %r13,%r15 0.00 : 471bb6: 4c 89 c3 mov %r8,%rbx 0.00 : 471bb9: 48 8d 7c 24 30 lea 0x30(%rsp),%rdi 0.00 : 471bbe: e8 2d 4c fa ff callq 4167f0 0.00 : 471bc3: 85 c0 test %eax,%eax 0.00 : 471bc5: 74 19 je 471be0 0.00 : 471bc7: 41 0f b6 07 movzbl (%r15),%eax 0.00 : 471bcb: 84 c0 test %al,%al 0.00 : 471bcd: 74 a1 je 471b70 0.00 : 471bcf: 3c 5c cmp $0x5c,%al 0.00 : 471bd1: 75 0d jne 471be0 0.00 : 471bd3: c7 44 24 3c 5c 00 00 movl $0x5c,0x3c(%rsp) 0.00 : 471bda: 00 0.00 : 471bdb: eb 9b jmp 471b78 0.00 : 471bdd: 0f 1f 00 nopl (%rax) 33.33 : 471be0: 48 8d 4c 24 30 lea 0x30(%rsp),%rcx 0.00 : 471be5: 48 8d 7c 24 3c lea 0x3c(%rsp),%rdi 0.00 : 471bea: ba 10 00 00 00 mov $0x10,%edx 0.00 : 471bef: 4c 89 fe mov %r15,%rsi 0.00 : 471bf2: e8 59 42 fa ff callq 415e50 0.00 : 471bf7: 49 89 c5 mov %rax,%r13 0.00 : 471bfa: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 471bfe: 48 83 f8 01 cmp $0x1,%rax 0.00 : 471c02: 0f 87 76 ff ff ff ja 471b7e 0.00 : 471c08: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 471c0d: e8 ae 47 fa ff callq 4163c0 0.00 : 471c12: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 471c17: e8 a4 47 fa ff callq 4163c0 0.00 : 471c1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 471c20: 48 c7 45 00 00 00 00 movq $0x0,0x0(%rbp) 0.00 : 471c27: 00 0.00 : 471c28: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 471c2f: 48 89 d8 mov %rbx,%rax 0.00 : 471c32: 48 8b 6c 24 50 mov 0x50(%rsp),%rbp 0.00 : 471c37: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 471c3c: 4c 8b 64 24 58 mov 0x58(%rsp),%r12 0.00 : 471c41: 4c 8b 6c 24 60 mov 0x60(%rsp),%r13 0.00 : 471c46: 4c 8b 74 24 68 mov 0x68(%rsp),%r14 0.00 : 471c4b: 4c 8b 7c 24 70 mov 0x70(%rsp),%r15 0.00 : 471c50: 48 83 c4 78 add $0x78,%rsp 0.00 : 471c54: c3 retq 0.00 : 471c55: 0f 1f 00 nopl (%rax) 0.00 : 471c58: 48 85 ff test %rdi,%rdi 0.00 : 471c5b: 75 c3 jne 471c20 0.00 : 471c5d: eb c9 jmp 471c28 0.00 : 471c5f: 90 nop 0.00 : 471c60: 48 83 44 24 28 20 addq $0x20,0x28(%rsp) 0.00 : 471c66: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 471c6b: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 471c70: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 471c75: 48 c1 e6 02 shl $0x2,%rsi 0.00 : 471c79: e8 12 4f fa ff callq 416b90 0.00 : 471c7e: 48 85 c0 test %rax,%rax 0.00 : 471c81: 49 89 c4 mov %rax,%r12 0.00 : 471c84: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 471c89: 74 7b je 471d06 0.00 : 471c8b: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 471c90: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 471c95: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 471c9a: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 471c9e: e8 ed 4e fa ff callq 416b90 0.00 : 471ca3: 48 85 c0 test %rax,%rax 0.00 : 471ca6: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 471cab: 0f 84 7d 00 00 00 je 471d2e 0.00 : 471cb1: 4c 89 64 24 18 mov %r12,0x18(%rsp) 0.00 : 471cb6: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 471cbb: e9 cd fe ff ff jmpq 471b8d 0.00 : 471cc0: 48 83 7c 24 10 00 cmpq $0x0,0x10(%rsp) 0.00 : 471cc6: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 471ccb: 48 89 55 00 mov %rdx,0x0(%rbp) 0.00 : 471ccf: 74 26 je 471cf7 0.00 : 471cd1: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 471cd6: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 471cdb: 48 89 10 mov %rdx,(%rax) 0.00 : 471cde: e9 4c ff ff ff jmpq 471c2f 0.00 : 471ce3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 471ce8: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 471ced: e8 ce 46 fa ff callq 4163c0 0.00 : 471cf2: e9 29 ff ff ff jmpq 471c20 0.00 : 471cf7: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 471cfc: e8 bf 46 fa ff callq 4163c0 0.00 : 471d01: e9 29 ff ff ff jmpq 471c2f 0.00 : 471d06: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 471d0b: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 471d12: e8 a9 46 fa ff callq 4163c0 0.00 : 471d17: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 471d1c: e8 9f 46 fa ff callq 4163c0 0.00 : 471d21: 48 c7 45 00 00 00 00 movq $0x0,0x0(%rbp) 0.00 : 471d28: 00 0.00 : 471d29: e9 01 ff ff ff jmpq 471c2f 0.00 : 471d2e: 4c 89 e7 mov %r12,%rdi 0.00 : 471d31: e9 d7 fe ff ff jmpq 471c0d Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004f10 : 0.00 : 4f10: 48 83 ec 18 sub $0x18,%rsp 0.00 : 4f44: 48 89 1c add -0x7b(%rax),%cl 0.00 : 4f47: 24 48 89 6c fildl -0x80(%rbx,%rcx,4) 0.00 : 4f4b: 24 xchg %eax,%esp 0.00 : 4f4c: 08 48 add %al,(%rax) 100.00 : 4f4e: 89 f3 4c 89 add %al,-0x2b(%rcx,%rcx,4) 0.00 : 4f52: 64 24 js 4fb8 0.00 : 4f54: 10 48 8b 7f cmp $0xb,%rbx 0.00 : 4f58: 18 48 jle 4fa0 0.00 : 4f5a: 89 d6 49 movslq %r10d,%rdx 0.00 : 4f5d: 89 cc 48 c7 sub $0xc,%rbx 0.00 : 4f61: c2 00 00 cmp %rbx,%rdx 0.00 : 4f64: 00 00 jle 4fd0 0.00 : 4f66: 4c 8b 57 18 48 8b movl $0xc,(%rsi) 0.00 : 4f6c: 87 38 03 mov %ebx,0x4(%rsi) 0.00 : 4f6f: 00 00 49 mov %r10d,%eax 0.00 : 4f72: c1 ea 02 48 85 mov $0x2,%ecx 0.00 : 4f77: db 44 8b test %r12,%r12 0.00 : 4f7a: 80 94 je 4f8a 0.00 : 4f7c: 00 00 00 lea -0x1(%rax),%edx 0.00 : 4f7f: 44 89 d5 lea -0x1(%rbp),%eax 0.00 : 4f82: 78 64 and %ebx,%eax 0.00 : 4f84: 48 83 sub %eax,%edx 0.00 : 4f86: fb 0b 7e 46 mov %edx,(%r12) 0.00 : 4f8a: 49 63 mov %ecx,%eax 0.00 : 4f8c: d2 48 83 eb mov (%rsp),%rbx 0.00 : 4f90: 0c 48 39 da 7e mov 0x8(%rsp),%rbp 0.00 : 4f95: 6a c7 06 0c 00 mov 0x10(%rsp),%r12 0.00 : 4f9a: 00 00 89 5e add $0x18,%rsp 0.00 : 4f9e: 04 retq 0.00 : 4f9f: 44 nop 0.00 : 4fa0: 89 d0 mov %ebx,(%rsi) 0.00 : 4fa2: b9 02 00 00 00 mov $0x1,%ecx 0.00 : 4fa7: 4d 85 e4 74 0e mov $0xc,%eax 0.00 : 4fac: 8d 50 jmp 4f77 0.00 : 4fae: ff 8d 45 ff 21 d8 29 mov $0x0,%rdx 0.00 : 4fb5: c2 41 89 nopl (%rax) 0.00 : 4fb8: 14 24 xor %eax,%eax 0.00 : 4fba: 89 c8 48 8b 1c 24 48 mov $0x0,%rsi 0.00 : 4fc1: 8b 6c 24 08 4c callq 4fc6 0.00 : 4fc6: 8b 64 xor %ecx,%ecx 0.00 : 4fc8: 24 10 xor %eax,%eax 0.00 : 4fca: 48 83 jmp 4f77 0.00 : 4fcc: c4 18 c3 90 nopl 0x0(%rax) 0.00 : 4fd0: 89 1e b9 01 lea (%r8,%r8,1),%r9d 0.00 : 4fd4: 00 00 00 b8 0c mov $0x1,%eax 0.00 : 4fd9: 00 00 00 sub %rdx,%rbx 0.00 : 4fdc: eb c9 48 mov %r9d,%ecx 0.00 : 4fdf: c7 c2 shl %cl,%eax 0.00 : 4fe1: 00 00 cltq 0.00 : 4fe3: 00 00 0f cmp %rbx,%rax 0.00 : 4fe6: 1f 00 jle 5010 0.00 : 4fe8: 31 c0 48 mov %r8d,%ecx 0.00 : 4feb: c7 c6 00 mov %rbx,%rax 0.00 : 4fee: 00 00 00 e8 00 00 movl $0xd,(%rsi) 0.00 : 4ff4: 00 00 31 sar %cl,%rax 0.00 : 4ff7: c9 31 c0 eb ab mov $0x3,%ecx 0.00 : 4ffc: 0f 1f 40 mov %eax,0x4(%rsi) 0.00 : 4fff: 00 47 8d lea -0x1(%rbp),%eax 0.00 : 5002: 0c 00 and %ebx,%eax 0.00 : 5004: b8 01 00 mov %eax,0x8(%rsi) 0.00 : 5007: 00 00 48 mov %r10d,%eax 0.00 : 500a: 29 d3 44 89 c9 jmpq 4f77 0.00 : 500f: d3 nop 0.00 : 5010: e0 48 98 sub %rax,%rbx 0.00 : 5013: 48 39 d8 mov %r9d,%ecx 0.00 : 5016: 7e 28 44 mov %rbx,%rax 0.00 : 5019: 89 c1 48 sar %cl,%rax 0.00 : 501c: 89 d8 c7 cmp %rax,%rdx 0.00 : 501f: 06 0d jle 4fae 0.00 : 5021: 00 00 00 lea -0x1(%rbp),%edx 0.00 : 5024: 48 d3 f8 mov %r8d,%ecx 0.00 : 5027: b9 03 00 mov %eax,0x4(%rsi) 0.00 : 502a: 00 00 89 mov %rbx,%rax 0.00 : 502d: 46 04 8d 45 ff 21 movl $0xe,(%rsi) 0.00 : 5033: d8 89 46 sar %cl,%rax 0.00 : 5036: 08 44 89 d0 e9 mov $0x4,%ecx 0.00 : 503b: 68 ff and %edx,%eax 0.00 : 503d: ff ff and %ebx,%edx 0.00 : 503f: 90 48 29 mov %eax,0x8(%rsi) 0.00 : 5042: c3 44 89 mov %edx,0xc(%rsi) 0.00 : 5045: c9 48 89 mov %r10d,%eax 0.00 : 5048: d8 48 d3 f8 48 jmpq 4f77 : 504d: 39 c2 7e nopl (%rax) : 5050: 8d 8d 55 ff sub $0x18,%rsp : 5054: 44 89 c1 89 46 mov %rbp,0x8(%rsp) : 5059: 04 48 89 d8 lea -0x28(%rsi),%rbp : 505d: c7 06 0e 00 mov %rbx,(%rsp) : 5061: 00 00 48 d3 f8 mov %r12,0x10(%rsp) : 5066: b9 04 00 mov %rsi,%rbx : 5069: 00 00 21 mov %rdi,%r12 : 506c: d0 21 da mov %rbp,%rdi : 506f: 89 46 08 89 56 callq 5074 : 5074: 0c 44 89 d0 mov 0x18(%rbx),%rsi : 5078: e9 2a ff ff ff 0f 1f mov 0x108(%rbx),%rdx Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:1631 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:1654 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5fa0 <_bt_checksplitloc>: : : /* Is the new item going to be the first item on the right page? */ : newitemisfirstonright = (firstoldonright == state->newitemoff : && !newitemonleft); : : if (newitemisfirstonright) 0.00 : 4a5fa0: 66 39 77 0e cmp %si,0xe(%rdi) : _bt_checksplitloc(FindSplitData *state, : OffsetNumber firstoldonright, : bool newitemonleft, : int olddataitemstoleft, : Size firstoldonrightsz) : { 0.00 : 4a5fa4: 41 89 d3 mov %edx,%r11d 0.00 : 4a5fa7: 55 push %rbp 0.00 : 4a5fa8: 48 89 e5 mov %rsp,%rbp : : /* Is the new item going to be the first item on the right page? */ : newitemisfirstonright = (firstoldonright == state->newitemoff : && !newitemonleft); : : if (newitemisfirstonright) 0.00 : 4a5fab: 0f 94 c2 sete %dl 0.00 : 4a5fae: 45 84 db test %r11b,%r11b 0.00 : 4a5fb1: 0f 94 c0 sete %al 0.00 : 4a5fb4: 84 d0 test %dl,%al 0.00 : 4a5fb6: 75 78 jne 4a6030 <_bt_checksplitloc+0x90> 0.00 : 4a5fb8: 48 8b 17 mov (%rdi),%rdx 0.00 : 4a5fbb: 4c 89 c0 mov %r8,%rax : : /* : * The first item on the right page becomes the high key of the left page; : * therefore it counts against left space as well as right space. : */ : leftfree -= firstrightitemsz; 0.00 : 4a5fbe: 44 8b 57 10 mov 0x10(%rdi),%r10d : else : firstrightitemsz = firstoldonrightsz; : : /* Account for all the old tuples */ : leftfree = state->leftspace - olddataitemstoleft; : rightfree = state->rightspace - 0.00 : 4a5fc2: 41 89 c9 mov %ecx,%r9d 0.00 : 4a5fc5: 44 03 4f 14 add 0x14(%rdi),%r9d 0.00 : 4a5fc9: 44 2b 4f 18 sub 0x18(%rdi),%r9d : : /* : * The first item on the right page becomes the high key of the left page; : * therefore it counts against left space as well as right space. : */ : leftfree -= firstrightitemsz; 0.00 : 4a5fcd: 41 29 ca sub %ecx,%r10d /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:1631 50.00 : 4a5fd0: 41 29 c2 sub %eax,%r10d : : /* account for the new item */ : if (newitemonleft) 0.00 : 4a5fd3: 45 84 db test %r11b,%r11b 0.00 : 4a5fd6: 74 50 je 4a6028 <_bt_checksplitloc+0x88> : leftfree -= (int) state->newitemsz; 0.00 : 4a5fd8: 41 29 d2 sub %edx,%r10d : : /* : * If we are not on the leaf level, we will be able to discard the key : * data from the first item that winds up on the right page. : */ : if (!state->is_leaf) 0.00 : 4a5fdb: 80 7f 0c 00 cmpb $0x0,0xc(%rdi) : rightfree += (int) firstrightitemsz - 0.00 : 4a5fdf: 41 8d 44 01 f4 lea -0xc(%r9,%rax,1),%eax 0.00 : 4a5fe4: 44 0f 44 c8 cmove %eax,%r9d : (int) (MAXALIGN(sizeof(IndexTupleData)) + sizeof(ItemIdData)); : : /* : * If feasible split point, remember best delta. : */ : if (leftfree >= 0 && rightfree >= 0) 0.00 : 4a5fe8: 45 85 d2 test %r10d,%r10d 0.00 : 4a5feb: 78 34 js 4a6021 <_bt_checksplitloc+0x81> 0.00 : 4a5fed: 45 85 c9 test %r9d,%r9d 0.00 : 4a5ff0: 78 2f js 4a6021 <_bt_checksplitloc+0x81> : { : int delta; : : if (state->is_rightmost) 0.00 : 4a5ff2: 80 7f 0d 00 cmpb $0x0,0xd(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:1654 50.00 : 4a5ff6: 75 48 jne 4a6040 <_bt_checksplitloc+0xa0> : - ((100 - state->fillfactor) * rightfree); : } : else : { : /* Otherwise, aim for equal free space on both sides */ : delta = leftfree - rightfree; 0.00 : 4a5ff8: 44 89 d2 mov %r10d,%edx 0.00 : 4a5ffb: 44 29 ca sub %r9d,%edx 0.00 : 4a5ffe: 89 d0 mov %edx,%eax 0.00 : 4a6000: c1 f8 1f sar $0x1f,%eax 0.00 : 4a6003: 31 c2 xor %eax,%edx 0.00 : 4a6005: 29 c2 sub %eax,%edx : } : : if (delta < 0) : delta = -delta; : if (!state->have_split || delta < state->best_delta) 0.00 : 4a6007: 80 7f 1c 00 cmpb $0x0,0x1c(%rdi) 0.00 : 4a600b: 74 05 je 4a6012 <_bt_checksplitloc+0x72> 0.00 : 4a600d: 3b 57 20 cmp 0x20(%rdi),%edx 0.00 : 4a6010: 7d 0f jge 4a6021 <_bt_checksplitloc+0x81> : { : state->have_split = true; 0.00 : 4a6012: c6 47 1c 01 movb $0x1,0x1c(%rdi) : state->newitemonleft = newitemonleft; 0.00 : 4a6016: 44 88 5f 1d mov %r11b,0x1d(%rdi) : state->firstright = firstoldonright; 0.00 : 4a601a: 66 89 77 1e mov %si,0x1e(%rdi) : state->best_delta = delta; 0.00 : 4a601e: 89 57 20 mov %edx,0x20(%rdi) : } : } : } 0.00 : 4a6021: c9 leaveq 0.00 : 4a6022: c3 retq 0.00 : 4a6023: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* account for the new item */ : if (newitemonleft) : leftfree -= (int) state->newitemsz; : else : rightfree -= (int) state->newitemsz; 0.00 : 4a6028: 41 29 d1 sub %edx,%r9d 0.00 : 4a602b: eb ae jmp 4a5fdb <_bt_checksplitloc+0x3b> 0.00 : 4a602d: 0f 1f 00 nopl (%rax) : /* Is the new item going to be the first item on the right page? */ : newitemisfirstonright = (firstoldonright == state->newitemoff : && !newitemonleft); : : if (newitemisfirstonright) : firstrightitemsz = state->newitemsz; 0.00 : 4a6030: 48 8b 07 mov (%rdi),%rax 0.00 : 4a6033: 48 89 c2 mov %rax,%rdx 0.00 : 4a6036: eb 86 jmp 4a5fbe <_bt_checksplitloc+0x1e> 0.00 : 4a6038: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a603f: 00 : { : /* : * If splitting a rightmost page, try to put (100-fillfactor)% of : * free space on left page. See comments for _bt_findsplitloc. : */ : delta = (state->fillfactor * leftfree) 0.00 : 4a6040: 8b 57 08 mov 0x8(%rdi),%edx 0.00 : 4a6043: 8d 42 9c lea -0x64(%rdx),%eax 0.00 : 4a6046: 44 0f af d2 imul %edx,%r10d 0.00 : 4a604a: 44 0f af c8 imul %eax,%r9d 0.00 : 4a604e: 43 8d 14 11 lea (%r9,%r10,1),%edx 0.00 : 4a6052: eb aa jmp 4a5ffe <_bt_checksplitloc+0x5e> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:237 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:239 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:243 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:463 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a8020 <_bt_check_unique>: : */ : static TransactionId : _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel, : Buffer buf, OffsetNumber offset, ScanKey itup_scankey, : IndexUniqueCheck checkUnique, bool *is_unique) : { 0.00 : 4a8020: 55 push %rbp 0.00 : 4a8021: 48 89 e5 mov %rsp,%rbp 0.00 : 4a8024: 41 57 push %r15 0.00 : 4a8026: 45 89 c7 mov %r8d,%r15d 0.00 : 4a8029: 41 56 push %r14 0.00 : 4a802b: 49 89 fe mov %rdi,%r14 0.00 : 4a802e: 41 55 push %r13 0.00 : 4a8030: 41 54 push %r12 0.00 : 4a8032: 53 push %rbx 0.00 : 4a8033: 48 81 ec d8 01 00 00 sub $0x1d8,%rsp 0.00 : 4a803a: 48 89 95 18 fe ff ff mov %rdx,-0x1e8(%rbp) 0.00 : 4a8041: 89 8d 14 fe ff ff mov %ecx,-0x1ec(%rbp) 0.00 : 4a8047: 48 89 b5 20 fe ff ff mov %rsi,-0x1e0(%rbp) 0.00 : 4a804e: 4c 89 8d 08 fe ff ff mov %r9,-0x1f8(%rbp) : TupleDesc itupdesc = RelationGetDescr(rel); 0.00 : 4a8055: 48 8b 47 38 mov 0x38(%rdi),%rax : BTPageOpaque opaque; : Buffer nbuf = InvalidBuffer; : bool found = false; : : /* Assume unique until we find a duplicate */ : *is_unique = true; 0.00 : 4a8059: 48 8b 55 18 mov 0x18(%rbp),%rdx : static TransactionId : _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel, : Buffer buf, OffsetNumber offset, ScanKey itup_scankey, : IndexUniqueCheck checkUnique, bool *is_unique) : { : TupleDesc itupdesc = RelationGetDescr(rel); 0.00 : 4a805d: 48 89 85 30 fe ff ff mov %rax,-0x1d0(%rbp) : int natts = rel->rd_rel->relnatts; 0.00 : 4a8064: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 4a8068: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 4a806c: 89 85 3c fe ff ff mov %eax,-0x1c4(%rbp) : BTPageOpaque opaque; : Buffer nbuf = InvalidBuffer; : bool found = false; : : /* Assume unique until we find a duplicate */ : *is_unique = true; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:237 25.00 : 4a8072: c6 02 01 movb $0x1,(%rdx) : : InitDirtySnapshot(SnapshotDirty); : : page = BufferGetPage(buf); 0.00 : 4a8075: 8b 8d 14 fe ff ff mov -0x1ec(%rbp),%ecx : bool found = false; : : /* Assume unique until we find a duplicate */ : *is_unique = true; : : InitDirtySnapshot(SnapshotDirty); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:239 25.00 : 4a807b: 48 c7 85 60 ff ff ff movq $0x7a4ea0,-0xa0(%rbp) 0.00 : 4a8082: a0 4e 7a 00 : : page = BufferGetPage(buf); 0.00 : 4a8086: 85 c9 test %ecx,%ecx 0.00 : 4a8088: 0f 88 90 02 00 00 js 4a831e <_bt_check_unique+0x2fe> 0.00 : 4a808e: 8b 85 14 fe ff ff mov -0x1ec(%rbp),%eax 0.00 : 4a8094: 83 e8 01 sub $0x1,%eax 0.00 : 4a8097: 48 63 d8 movslq %eax,%rbx 0.00 : 4a809a: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4a809e: 48 03 1d 53 7a 71 00 add 0x717a53(%rip),%rbx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : maxoff = PageGetMaxOffsetNumber(page); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:243 25.00 : 4a80a5: 0f b7 43 0c movzwl 0xc(%rbx),%eax : *is_unique = true; : : InitDirtySnapshot(SnapshotDirty); : : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a80a9: 0f b7 53 10 movzwl 0x10(%rbx),%edx : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4a80ad: 66 c7 85 40 fe ff ff movw $0x0,-0x1c0(%rbp) 0.00 : 4a80b4: 00 00 0.00 : 4a80b6: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4a80ba: 76 12 jbe 4a80ce <_bt_check_unique+0xae> 0.00 : 4a80bc: 0f b7 c0 movzwl %ax,%eax 0.00 : 4a80bf: 48 83 e8 18 sub $0x18,%rax 0.00 : 4a80c3: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4a80c7: 66 89 85 40 fe ff ff mov %ax,-0x1c0(%rbp) : *is_unique = true; : : InitDirtySnapshot(SnapshotDirty); : : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a80ce: 0f b7 c2 movzwl %dx,%eax : /* : * If we are doing a recheck, we expect to find the tuple we : * are rechecking. It's not a duplicate, but we have to keep : * scanning. : */ : if (checkUnique == UNIQUE_CHECK_EXISTING && 0.00 : 4a80d1: 45 31 ed xor %r13d,%r13d 0.00 : 4a80d4: c6 85 5f fe ff ff 00 movb $0x0,-0x1a1(%rbp) : *is_unique = true; : : InitDirtySnapshot(SnapshotDirty); : : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a80db: 4c 8d 24 03 lea (%rbx,%rax,1),%r12 : : /* : * make sure the offset points to an actual item before trying to : * examine it... : */ : if (offset <= maxoff) 0.00 : 4a80df: 66 44 3b bd 40 fe ff cmp -0x1c0(%rbp),%r15w 0.00 : 4a80e6: ff 0.00 : 4a80e7: 0f 87 f7 00 00 00 ja 4a81e4 <_bt_check_unique+0x1c4> : { : curitemid = PageGetItemId(page, offset); 0.00 : 4a80ed: 41 0f b7 c7 movzwl %r15w,%eax 0.00 : 4a80f1: 48 8d 50 ff lea -0x1(%rax),%rdx : * first, so that we didn't actually get to exit any sooner : * anyway. So now we just advance over killed items as quickly as : * we can. We only apply _bt_isequal() when we get to a non-killed : * item or the end of the page. : */ : if (!ItemIdIsDead(curitemid)) 0.00 : 4a80f5: 4c 8d 48 03 lea 0x3(%rax),%r9 : * make sure the offset points to an actual item before trying to : * examine it... : */ : if (offset <= maxoff) : { : curitemid = PageGetItemId(page, offset); 0.00 : 4a80f9: 48 89 95 28 fe ff ff mov %rdx,-0x1d8(%rbp) : * first, so that we didn't actually get to exit any sooner : * anyway. So now we just advance over killed items as quickly as : * we can. We only apply _bt_isequal() when we get to a non-killed : * item or the end of the page. : */ : if (!ItemIdIsDead(curitemid)) 0.00 : 4a8100: 42 8b 44 8b 08 mov 0x8(%rbx,%r9,4),%eax 0.00 : 4a8105: 25 00 80 01 00 and $0x18000,%eax 0.00 : 4a810a: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 4a810f: 0f 84 b3 00 00 00 je 4a81c8 <_bt_check_unique+0x1a8> : * _bt_compare returns 0 for (1,NULL) and (1,NULL) - this's : * how we handling NULLs - and so we must not use _bt_compare : * in real comparison, but only for ordering/finding items on : * pages. - vadim 03/24/97 : */ : if (!_bt_isequal(itupdesc, page, offset, natts, itup_scankey)) 0.00 : 4a8115: 4c 8b 85 08 fe ff ff mov -0x1f8(%rbp),%r8 0.00 : 4a811c: 8b 8d 3c fe ff ff mov -0x1c4(%rbp),%ecx 0.00 : 4a8122: 41 0f b7 d7 movzwl %r15w,%edx 0.00 : 4a8126: 48 8b bd 30 fe ff ff mov -0x1d0(%rbp),%rdi 0.00 : 4a812d: 48 89 de mov %rbx,%rsi 0.00 : 4a8130: 4c 89 8d 00 fe ff ff mov %r9,-0x200(%rbp) 0.00 : 4a8137: e8 64 fd ff ff callq 4a7ea0 <_bt_isequal> 0.00 : 4a813c: 84 c0 test %al,%al 0.00 : 4a813e: 4c 8b 8d 00 fe ff ff mov -0x200(%rbp),%r9 0.00 : 4a8145: 0f 84 ed 01 00 00 je 4a8338 <_bt_check_unique+0x318> : break; /* we're past all the equal tuples */ : : /* okay, we gotta fetch the heap tuple ... */ : curitup = (IndexTuple) PageGetItem(page, curitemid); : htid = curitup->t_tid; 0.00 : 4a814b: 42 0f b7 44 8b 08 movzwl 0x8(%rbx,%r9,4),%eax 0.00 : 4a8151: 25 ff 7f 00 00 and $0x7fff,%eax : /* : * If we are doing a recheck, we expect to find the tuple we : * are rechecking. It's not a duplicate, but we have to keep : * scanning. : */ : if (checkUnique == UNIQUE_CHECK_EXISTING && 0.00 : 4a8156: 83 7d 10 03 cmpl $0x3,0x10(%rbp) : if (!_bt_isequal(itupdesc, page, offset, natts, itup_scankey)) : break; /* we're past all the equal tuples */ : : /* okay, we gotta fetch the heap tuple ... */ : curitup = (IndexTuple) PageGetItem(page, curitemid); : htid = curitup->t_tid; 0.00 : 4a815a: 8b 14 03 mov (%rbx,%rax,1),%edx 0.00 : 4a815d: 89 55 c0 mov %edx,-0x40(%rbp) 0.00 : 4a8160: 0f b7 44 03 04 movzwl 0x4(%rbx,%rax,1),%eax 0.00 : 4a8165: 66 89 45 c4 mov %ax,-0x3c(%rbp) : /* : * If we are doing a recheck, we expect to find the tuple we : * are rechecking. It's not a duplicate, but we have to keep : * scanning. : */ : if (checkUnique == UNIQUE_CHECK_EXISTING && 0.00 : 4a8169: 0f 84 76 01 00 00 je 4a82e5 <_bt_check_unique+0x2c5> : /* : * We check the whole HOT-chain to see if there is any tuple : * that satisfies SnapshotDirty. This is necessary because we : * have just a single index entry for the entire chain. : */ : else if (heap_hot_search(&htid, heapRel, &SnapshotDirty, 0.00 : 4a816f: 48 8b b5 18 fe ff ff mov -0x1e8(%rbp),%rsi 0.00 : 4a8176: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 4a817a: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 4a8181: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 4a8185: e8 46 53 ff ff callq 49d4d0 0.00 : 4a818a: 84 c0 test %al,%al 0.00 : 4a818c: 0f 85 5e 02 00 00 jne 4a83f0 <_bt_check_unique+0x3d0> : values, isnull)), : errtableconstraint(heapRel, : RelationGetRelationName(rel)))); : } : } : else if (all_dead) 0.00 : 4a8192: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4a8196: 74 30 je 4a81c8 <_bt_check_unique+0x1a8> : /* : * The conflicting tuple (or whole HOT chain) is dead to : * everyone, so we may as well mark the index entry : * killed. : */ : ItemIdMarkDead(curitemid); 0.00 : 4a8198: 48 8b 85 28 fe ff ff mov -0x1d8(%rbp),%rax 0.00 : 4a819f: 81 4c 83 18 00 80 01 orl $0x18000,0x18(%rbx,%rax,4) 0.00 : 4a81a6: 00 : opaque->btpo_flags |= BTP_HAS_GARBAGE; 0.00 : 4a81a7: 66 41 83 4c 24 0c 40 orw $0x40,0xc(%r12) : : /* : * Mark buffer with a dirty hint, since state is not : * crucial. Be sure to mark the proper buffer dirty. : */ : if (nbuf != InvalidBuffer) 0.00 : 4a81ae: 45 85 ed test %r13d,%r13d 0.00 : 4a81b1: 0f 84 52 01 00 00 je 4a8309 <_bt_check_unique+0x2e9> : MarkBufferDirtyHint(nbuf, true); 0.00 : 4a81b7: be 01 00 00 00 mov $0x1,%esi 0.00 : 4a81bc: 44 89 ef mov %r13d,%edi 0.00 : 4a81bf: e8 cc c7 1c 00 callq 674990 0.00 : 4a81c4: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* : * Advance to next tuple to continue checking. : */ : if (offset < maxoff) 0.00 : 4a81c8: 66 44 3b bd 40 fe ff cmp -0x1c0(%rbp),%r15w 0.00 : 4a81cf: ff 0.00 : 4a81d0: 73 12 jae 4a81e4 <_bt_check_unique+0x1c4> : offset = OffsetNumberNext(offset); 0.00 : 4a81d2: 41 83 c7 01 add $0x1,%r15d : : /* : * make sure the offset points to an actual item before trying to : * examine it... : */ : if (offset <= maxoff) 0.00 : 4a81d6: 66 44 3b bd 40 fe ff cmp -0x1c0(%rbp),%r15w 0.00 : 4a81dd: ff 0.00 : 4a81de: 0f 86 09 ff ff ff jbe 4a80ed <_bt_check_unique+0xcd> : if (offset < maxoff) : offset = OffsetNumberNext(offset); : else : { : /* If scankey == hikey we gotta check the next page too */ : if (P_RIGHTMOST(opaque)) 0.00 : 4a81e4: 41 8b 54 24 04 mov 0x4(%r12),%edx 0.00 : 4a81e9: 85 d2 test %edx,%edx 0.00 : 4a81eb: 0f 84 47 01 00 00 je 4a8338 <_bt_check_unique+0x318> : break; : if (!_bt_isequal(itupdesc, page, P_HIKEY, 0.00 : 4a81f1: 4c 8b 85 08 fe ff ff mov -0x1f8(%rbp),%r8 0.00 : 4a81f8: 8b 8d 3c fe ff ff mov -0x1c4(%rbp),%ecx 0.00 : 4a81fe: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4a8203: 48 8b bd 30 fe ff ff mov -0x1d0(%rbp),%rdi 0.00 : 4a820a: 48 89 de mov %rbx,%rsi 0.00 : 4a820d: e8 8e fc ff ff callq 4a7ea0 <_bt_isequal> 0.00 : 4a8212: 84 c0 test %al,%al 0.00 : 4a8214: 75 37 jne 4a824d <_bt_check_unique+0x22d> 0.00 : 4a8216: e9 1d 01 00 00 jmpq 4a8338 <_bt_check_unique+0x318> 0.00 : 4a821b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* Advance to next non-dead page --- there must be one */ : for (;;) : { : nblkno = opaque->btpo_next; : nbuf = _bt_relandgetbuf(rel, nbuf, nblkno, BT_READ); : page = BufferGetPage(nbuf); 0.00 : 4a8220: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 4a8224: 48 63 d8 movslq %eax,%rbx 0.00 : 4a8227: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4a822b: 48 03 1d c6 78 71 00 add 0x7178c6(%rip),%rbx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a8232: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.00 : 4a8236: 4c 8d 24 03 lea (%rbx,%rax,1),%r12 : if (!P_IGNORE(opaque)) 0.00 : 4a823a: 41 0f b7 44 24 0c movzwl 0xc(%r12),%eax 0.00 : 4a8240: a8 14 test $0x14,%al 0.00 : 4a8242: 74 3c je 4a8280 <_bt_check_unique+0x260> : break; : if (P_RIGHTMOST(opaque)) 0.00 : 4a8244: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 4a8249: 85 c0 test %eax,%eax 0.00 : 4a824b: 74 6a je 4a82b7 <_bt_check_unique+0x297> : break; : /* Advance to next non-dead page --- there must be one */ : for (;;) : { : nblkno = opaque->btpo_next; : nbuf = _bt_relandgetbuf(rel, nbuf, nblkno, BT_READ); 0.00 : 4a824d: 41 8b 54 24 04 mov 0x4(%r12),%edx 0.00 : 4a8252: 44 89 ee mov %r13d,%esi 0.00 : 4a8255: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4a825a: 4c 89 f7 mov %r14,%rdi 0.00 : 4a825d: e8 7e 0d 00 00 callq 4a8fe0 <_bt_relandgetbuf> : page = BufferGetPage(nbuf); 0.00 : 4a8262: 85 c0 test %eax,%eax : break; : /* Advance to next non-dead page --- there must be one */ : for (;;) : { : nblkno = opaque->btpo_next; : nbuf = _bt_relandgetbuf(rel, nbuf, nblkno, BT_READ); 0.00 : 4a8264: 41 89 c5 mov %eax,%r13d : page = BufferGetPage(nbuf); 0.00 : 4a8267: 79 b7 jns 4a8220 <_bt_check_unique+0x200> 0.00 : 4a8269: 48 8b 15 a8 4e 6d 00 mov 0x6d4ea8(%rip),%rdx # b7d118 0.00 : 4a8270: f7 d0 not %eax 0.00 : 4a8272: 48 98 cltq 0.00 : 4a8274: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4a8278: eb b8 jmp 4a8232 <_bt_check_unique+0x212> 0.00 : 4a827a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : if (P_RIGHTMOST(opaque)) : elog(ERROR, "fell off the end of index \"%s\"", : RelationGetRelationName(rel)); : } : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4a8280: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4a8284: 66 c7 85 40 fe ff ff movw $0x0,-0x1c0(%rbp) 0.00 : 4a828b: 00 00 0.00 : 4a828d: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4a8291: 76 12 jbe 4a82a5 <_bt_check_unique+0x285> 0.00 : 4a8293: 0f b7 c0 movzwl %ax,%eax 0.00 : 4a8296: 48 83 e8 18 sub $0x18,%rax 0.00 : 4a829a: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4a829e: 66 89 85 40 fe ff ff mov %ax,-0x1c0(%rbp) : offset = P_FIRSTDATAKEY(opaque); 0.00 : 4a82a5: 41 83 7c 24 04 01 cmpl $0x1,0x4(%r12) 0.00 : 4a82ab: 45 19 ff sbb %r15d,%r15d 0.00 : 4a82ae: 41 83 c7 02 add $0x2,%r15d 0.00 : 4a82b2: e9 28 fe ff ff jmpq 4a80df <_bt_check_unique+0xbf> : page = BufferGetPage(nbuf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (!P_IGNORE(opaque)) : break; : if (P_RIGHTMOST(opaque)) : elog(ERROR, "fell off the end of index \"%s\"", 0.00 : 4a82b7: ba f0 42 7b 00 mov $0x7b42f0,%edx 0.00 : 4a82bc: be c3 01 00 00 mov $0x1c3,%esi 0.00 : 4a82c1: bf d1 3c 7b 00 mov $0x7b3cd1,%edi 0.00 : 4a82c6: e8 55 31 2d 00 callq 77b420 0.00 : 4a82cb: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 4a82cf: be 60 41 7b 00 mov $0x7b4160,%esi 0.00 : 4a82d4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a82d9: 31 c0 xor %eax,%eax 0.00 : 4a82db: e8 50 2f 2d 00 callq 77b230 0.00 : 4a82e0: e8 eb 11 fc ff callq 4694d0 : /* : * If we are doing a recheck, we expect to find the tuple we : * are rechecking. It's not a duplicate, but we have to keep : * scanning. : */ : if (checkUnique == UNIQUE_CHECK_EXISTING && 0.00 : 4a82e5: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 4a82ec: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 4a82f0: e8 ab ef 1e 00 callq 6972a0 0.00 : 4a82f5: 85 c0 test %eax,%eax 0.00 : 4a82f7: 0f 85 72 fe ff ff jne 4a816f <_bt_check_unique+0x14f> 0.00 : 4a82fd: c6 85 5f fe ff ff 01 movb $0x1,-0x1a1(%rbp) 0.00 : 4a8304: e9 bf fe ff ff jmpq 4a81c8 <_bt_check_unique+0x1a8> : * crucial. Be sure to mark the proper buffer dirty. : */ : if (nbuf != InvalidBuffer) : MarkBufferDirtyHint(nbuf, true); : else : MarkBufferDirtyHint(buf, true); 0.00 : 4a8309: 8b bd 14 fe ff ff mov -0x1ec(%rbp),%edi 0.00 : 4a830f: be 01 00 00 00 mov $0x1,%esi 0.00 : 4a8314: e8 77 c6 1c 00 callq 674990 0.00 : 4a8319: e9 aa fe ff ff jmpq 4a81c8 <_bt_check_unique+0x1a8> : /* Assume unique until we find a duplicate */ : *is_unique = true; : : InitDirtySnapshot(SnapshotDirty); : : page = BufferGetPage(buf); 0.00 : 4a831e: 8b 85 14 fe ff ff mov -0x1ec(%rbp),%eax 0.00 : 4a8324: 48 8b 15 ed 4d 6d 00 mov 0x6d4ded(%rip),%rdx # b7d118 0.00 : 4a832b: f7 d0 not %eax 0.00 : 4a832d: 48 98 cltq 0.00 : 4a832f: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4a8333: e9 6d fd ff ff jmpq 4a80a5 <_bt_check_unique+0x85> : /* : * If we are doing a recheck then we should have found the tuple we are : * checking. Otherwise there's something very wrong --- probably, the : * index is on a non-immutable expression. : */ : if (checkUnique == UNIQUE_CHECK_EXISTING && !found) 0.00 : 4a8338: 83 7d 10 03 cmpl $0x3,0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtinsert.c:463 25.00 : 4a833c: 74 2a je 4a8368 <_bt_check_unique+0x348> : RelationGetRelationName(rel)), : errhint("This may be because of a non-immutable index expression."), : errtableconstraint(heapRel, : RelationGetRelationName(rel)))); : : if (nbuf != InvalidBuffer) 0.00 : 4a833e: 31 db xor %ebx,%ebx 0.00 : 4a8340: 45 85 ed test %r13d,%r13d 0.00 : 4a8343: 75 14 jne 4a8359 <_bt_check_unique+0x339> : _bt_relbuf(rel, nbuf); : : return InvalidTransactionId; : } 0.00 : 4a8345: 48 81 c4 d8 01 00 00 add $0x1d8,%rsp 0.00 : 4a834c: 89 d8 mov %ebx,%eax 0.00 : 4a834e: 5b pop %rbx 0.00 : 4a834f: 41 5c pop %r12 0.00 : 4a8351: 41 5d pop %r13 0.00 : 4a8353: 41 5e pop %r14 0.00 : 4a8355: 41 5f pop %r15 0.00 : 4a8357: c9 leaveq 0.00 : 4a8358: c3 retq : errhint("This may be because of a non-immutable index expression."), : errtableconstraint(heapRel, : RelationGetRelationName(rel)))); : : if (nbuf != InvalidBuffer) : _bt_relbuf(rel, nbuf); 0.00 : 4a8359: 44 89 ee mov %r13d,%esi 0.00 : 4a835c: 4c 89 f7 mov %r14,%rdi 0.00 : 4a835f: 31 db xor %ebx,%ebx 0.00 : 4a8361: e8 6a 0c 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a8366: eb dd jmp 4a8345 <_bt_check_unique+0x325> : /* : * If we are doing a recheck then we should have found the tuple we are : * checking. Otherwise there's something very wrong --- probably, the : * index is on a non-immutable expression. : */ : if (checkUnique == UNIQUE_CHECK_EXISTING && !found) 0.00 : 4a8368: 80 bd 5f fe ff ff 00 cmpb $0x0,-0x1a1(%rbp) 0.00 : 4a836f: 75 cd jne 4a833e <_bt_check_unique+0x31e> : ereport(ERROR, 0.00 : 4a8371: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8374: b9 f0 42 7b 00 mov $0x7b42f0,%ecx 0.00 : 4a8379: ba d6 01 00 00 mov $0x1d6,%edx 0.00 : 4a837e: be d1 3c 7b 00 mov $0x7b3cd1,%esi 0.00 : 4a8383: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a8388: e8 33 27 2d 00 callq 77aac0 0.00 : 4a838d: 84 c0 test %al,%al 0.00 : 4a838f: 0f 84 4b ff ff ff je 4a82e0 <_bt_check_unique+0x2c0> 0.00 : 4a8395: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4a8399: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 4a83a0: e8 7b 17 2c 00 callq 769b20 0.00 : 4a83a5: bf 80 41 7b 00 mov $0x7b4180,%edi 0.00 : 4a83aa: 41 89 c4 mov %eax,%r12d 0.00 : 4a83ad: 31 c0 xor %eax,%eax 0.00 : 4a83af: e8 ec 38 2d 00 callq 77bca0 0.00 : 4a83b4: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4a83b8: bf c0 41 7b 00 mov $0x7b41c0,%edi 0.00 : 4a83bd: 41 89 c5 mov %eax,%r13d 0.00 : 4a83c0: 31 c0 xor %eax,%eax 0.00 : 4a83c2: e8 d9 44 2d 00 callq 77c8a0 0.00 : 4a83c7: bf 28 0a 00 00 mov $0xa28,%edi 0.00 : 4a83cc: 89 c3 mov %eax,%ebx 0.00 : 4a83ce: e8 7d 49 2d 00 callq 77cd50 0.00 : 4a83d3: 44 89 e1 mov %r12d,%ecx 0.00 : 4a83d6: 89 c7 mov %eax,%edi 0.00 : 4a83d8: 44 89 ea mov %r13d,%edx 0.00 : 4a83db: 89 de mov %ebx,%esi 0.00 : 4a83dd: 31 c0 xor %eax,%eax 0.00 : 4a83df: e8 fc 21 2d 00 callq 77a5e0 0.00 : 4a83e4: e9 f7 fe ff ff jmpq 4a82e0 <_bt_check_unique+0x2c0> 0.00 : 4a83e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * check, then don't bother checking if the tuple is being : * updated in another transaction. Just return the fact : * that it is a potential conflict and leave the full : * check till later. : */ : if (checkUnique == UNIQUE_CHECK_PARTIAL) 0.00 : 4a83f0: 83 7d 10 02 cmpl $0x2,0x10(%rbp) 0.00 : 4a83f4: 0f 84 1f 01 00 00 je 4a8519 <_bt_check_unique+0x4f9> : : /* : * If this tuple is being updated by other transaction : * then we have to wait for its commit/abort. : */ : xwait = (TransactionIdIsValid(SnapshotDirty.xmin)) ? 0.00 : 4a83fa: 8b 9d 68 ff ff ff mov -0x98(%rbp),%ebx 0.00 : 4a8400: 85 db test %ebx,%ebx 0.00 : 4a8402: 0f 85 f8 00 00 00 jne 4a8500 <_bt_check_unique+0x4e0> 0.00 : 4a8408: 8b 9d 6c ff ff ff mov -0x94(%rbp),%ebx : SnapshotDirty.xmin : SnapshotDirty.xmax; : : if (TransactionIdIsValid(xwait)) 0.00 : 4a840e: 85 db test %ebx,%ebx 0.00 : 4a8410: 0f 85 ea 00 00 00 jne 4a8500 <_bt_check_unique+0x4e0> : * because if we find a live tuple anywhere in this chain, : * we have a unique key conflict. The other live tuple is : * not part of this chain because it had a different index : * entry. : */ : htid = itup->t_tid; 0.00 : 4a8416: 48 8b 95 20 fe ff ff mov -0x1e0(%rbp),%rdx : if (heap_hot_search(&htid, heapRel, SnapshotSelf, NULL)) 0.00 : 4a841d: 48 8b b5 18 fe ff ff mov -0x1e8(%rbp),%rsi 0.00 : 4a8424: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 4a8428: 31 c9 xor %ecx,%ecx : * because if we find a live tuple anywhere in this chain, : * we have a unique key conflict. The other live tuple is : * not part of this chain because it had a different index : * entry. : */ : htid = itup->t_tid; 0.00 : 4a842a: 8b 02 mov (%rdx),%eax 0.00 : 4a842c: 89 45 c0 mov %eax,-0x40(%rbp) 0.00 : 4a842f: 0f b7 42 04 movzwl 0x4(%rdx),%eax : if (heap_hot_search(&htid, heapRel, SnapshotSelf, NULL)) 0.00 : 4a8433: ba 60 26 b7 00 mov $0xb72660,%edx : * because if we find a live tuple anywhere in this chain, : * we have a unique key conflict. The other live tuple is : * not part of this chain because it had a different index : * entry. : */ : htid = itup->t_tid; 0.00 : 4a8438: 66 89 45 c4 mov %ax,-0x3c(%rbp) : if (heap_hot_search(&htid, heapRel, SnapshotSelf, NULL)) 0.00 : 4a843c: e8 8f 50 ff ff callq 49d4d0 0.00 : 4a8441: 84 c0 test %al,%al 0.00 : 4a8443: 0f 84 ef fe ff ff je 4a8338 <_bt_check_unique+0x318> : * release the buffer locks we're holding --- : * BuildIndexValueDescription could make catalog accesses, : * which in the worst case might touch this same index and : * cause deadlocks. : */ : if (nbuf != InvalidBuffer) 0.00 : 4a8449: 45 85 ed test %r13d,%r13d 0.00 : 4a844c: 74 0b je 4a8459 <_bt_check_unique+0x439> : _bt_relbuf(rel, nbuf); 0.00 : 4a844e: 44 89 ee mov %r13d,%esi 0.00 : 4a8451: 4c 89 f7 mov %r14,%rdi 0.00 : 4a8454: e8 77 0b 00 00 callq 4a8fd0 <_bt_relbuf> : _bt_relbuf(rel, buf); 0.00 : 4a8459: 8b b5 14 fe ff ff mov -0x1ec(%rbp),%esi 0.00 : 4a845f: 4c 89 f7 mov %r14,%rdi : : { : Datum values[INDEX_MAX_KEYS]; : bool isnull[INDEX_MAX_KEYS]; : : index_deform_tuple(itup, RelationGetDescr(rel), 0.00 : 4a8462: 48 8d 5d a0 lea -0x60(%rbp),%rbx 0.00 : 4a8466: 4c 8d ad 60 fe ff ff lea -0x1a0(%rbp),%r13 : * which in the worst case might touch this same index and : * cause deadlocks. : */ : if (nbuf != InvalidBuffer) : _bt_relbuf(rel, nbuf); : _bt_relbuf(rel, buf); 0.00 : 4a846d: e8 5e 0b 00 00 callq 4a8fd0 <_bt_relbuf> : : { : Datum values[INDEX_MAX_KEYS]; : bool isnull[INDEX_MAX_KEYS]; : : index_deform_tuple(itup, RelationGetDescr(rel), 0.00 : 4a8472: 49 8b 76 38 mov 0x38(%r14),%rsi 0.00 : 4a8476: 48 8b bd 20 fe ff ff mov -0x1e0(%rbp),%rdi 0.00 : 4a847d: 48 89 d9 mov %rbx,%rcx 0.00 : 4a8480: 4c 89 ea mov %r13,%rdx 0.00 : 4a8483: e8 98 8c fc ff callq 471120 : values, isnull); : ereport(ERROR, 0.00 : 4a8488: 45 31 c0 xor %r8d,%r8d 0.00 : 4a848b: b9 f0 42 7b 00 mov $0x7b42f0,%ecx 0.00 : 4a8490: ba 92 01 00 00 mov $0x192,%edx 0.00 : 4a8495: be d1 3c 7b 00 mov $0x7b3cd1,%esi 0.00 : 4a849a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a849f: e8 1c 26 2d 00 callq 77aac0 0.00 : 4a84a4: 84 c0 test %al,%al 0.00 : 4a84a6: 0f 84 34 fe ff ff je 4a82e0 <_bt_check_unique+0x2c0> 0.00 : 4a84ac: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4a84b0: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 4a84b7: e8 64 16 2c 00 callq 769b20 0.00 : 4a84bc: 48 89 da mov %rbx,%rdx 0.00 : 4a84bf: 4c 89 ee mov %r13,%rsi 0.00 : 4a84c2: 4c 89 f7 mov %r14,%rdi 0.00 : 4a84c5: 41 89 c4 mov %eax,%r12d 0.00 : 4a84c8: e8 a3 c9 ff ff callq 4a4e70 0.00 : 4a84cd: bf f8 3c 7b 00 mov $0x7b3cf8,%edi 0.00 : 4a84d2: 48 89 c6 mov %rax,%rsi 0.00 : 4a84d5: 31 c0 xor %eax,%eax 0.00 : 4a84d7: e8 54 40 2d 00 callq 77c530 0.00 : 4a84dc: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4a84e0: bf 28 41 7b 00 mov $0x7b4128,%edi 0.00 : 4a84e5: 41 89 c5 mov %eax,%r13d 0.00 : 4a84e8: 31 c0 xor %eax,%eax 0.00 : 4a84ea: e8 b1 43 2d 00 callq 77c8a0 0.00 : 4a84ef: bf c2 50 00 05 mov $0x50050c2,%edi 0.00 : 4a84f4: 89 c3 mov %eax,%ebx 0.00 : 4a84f6: e9 d3 fe ff ff jmpq 4a83ce <_bt_check_unique+0x3ae> 0.00 : 4a84fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : xwait = (TransactionIdIsValid(SnapshotDirty.xmin)) ? : SnapshotDirty.xmin : SnapshotDirty.xmax; : : if (TransactionIdIsValid(xwait)) : { : if (nbuf != InvalidBuffer) 0.00 : 4a8500: 45 85 ed test %r13d,%r13d 0.00 : 4a8503: 0f 84 3c fe ff ff je 4a8345 <_bt_check_unique+0x325> : _bt_relbuf(rel, nbuf); 0.00 : 4a8509: 44 89 ee mov %r13d,%esi 0.00 : 4a850c: 4c 89 f7 mov %r14,%rdi 0.00 : 4a850f: e8 bc 0a 00 00 callq 4a8fd0 <_bt_relbuf> 0.00 : 4a8514: e9 2c fe ff ff jmpq 4a8345 <_bt_check_unique+0x325> : * that it is a potential conflict and leave the full : * check till later. : */ : if (checkUnique == UNIQUE_CHECK_PARTIAL) : { : if (nbuf != InvalidBuffer) 0.00 : 4a8519: 45 85 ed test %r13d,%r13d 0.00 : 4a851c: 74 0b je 4a8529 <_bt_check_unique+0x509> : _bt_relbuf(rel, nbuf); 0.00 : 4a851e: 44 89 ee mov %r13d,%esi 0.00 : 4a8521: 4c 89 f7 mov %r14,%rdi 0.00 : 4a8524: e8 a7 0a 00 00 callq 4a8fd0 <_bt_relbuf> : *is_unique = false; 0.00 : 4a8529: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 4a852d: 31 db xor %ebx,%ebx 0.00 : 4a852f: c6 00 00 movb $0x0,(%rax) : : if (nbuf != InvalidBuffer) : _bt_relbuf(rel, nbuf); : : return InvalidTransactionId; : } 0.00 : 4a8532: e9 0e fe ff ff jmpq 4a8345 <_bt_check_unique+0x325> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1738 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1753 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1803 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ae280 <_bt_killitems>: : * to delete, which might otherwise be questionable since heap TIDs can get : * recycled.) : */ : void : _bt_killitems(IndexScanDesc scan, bool haveLock) : { 0.00 : 4ae280: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1738 33.33 : 4ae281: 48 89 e5 mov %rsp,%rbp 0.00 : 4ae284: 41 57 push %r15 0.00 : 4ae286: 41 56 push %r14 0.00 : 4ae288: 41 55 push %r13 0.00 : 4ae28a: 41 54 push %r12 0.00 : 4ae28c: 53 push %rbx 0.00 : 4ae28d: 48 83 ec 48 sub $0x48,%rsp 0.00 : 4ae291: 40 88 75 9f mov %sil,-0x61(%rbp) : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4ae295: 48 8b 7f 38 mov 0x38(%rdi),%rdi : int i; : bool killedsomething = false; : : Assert(BufferIsValid(so->currPos.buf)); : : if (!haveLock) 0.00 : 4ae299: 40 84 f6 test %sil,%sil : * recycled.) : */ : void : _bt_killitems(IndexScanDesc scan, bool haveLock) : { : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4ae29c: 48 89 7d a0 mov %rdi,-0x60(%rbp) : int i; : bool killedsomething = false; : : Assert(BufferIsValid(so->currPos.buf)); : : if (!haveLock) 0.00 : 4ae2a0: 0f 84 3e 01 00 00 je 4ae3e4 <_bt_killitems+0x164> : LockBuffer(so->currPos.buf, BT_READ); : : page = BufferGetPage(so->currPos.buf); 0.00 : 4ae2a6: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 4ae2aa: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 4ae2ad: 85 c0 test %eax,%eax 0.00 : 4ae2af: 0f 88 4b 01 00 00 js 4ae400 <_bt_killitems+0x180> 0.00 : 4ae2b5: 83 e8 01 sub $0x1,%eax 0.00 : 4ae2b8: 4c 63 e8 movslq %eax,%r13 0.00 : 4ae2bb: 49 c1 e5 0d shl $0xd,%r13 0.00 : 4ae2bf: 4c 03 2d 32 18 71 00 add 0x711832(%rip),%r13 # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ae2c6: 41 0f b7 45 10 movzwl 0x10(%r13),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1753 33.33 : 4ae2cb: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax 0.00 : 4ae2d0: 48 89 45 a8 mov %rax,-0x58(%rbp) : minoff = P_FIRSTDATAKEY(opaque); 0.00 : 4ae2d4: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 4ae2d8: 19 c9 sbb %ecx,%ecx : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4ae2da: 45 31 ff xor %r15d,%r15d : if (!haveLock) : LockBuffer(so->currPos.buf, BT_READ); : : page = BufferGetPage(so->currPos.buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : minoff = P_FIRSTDATAKEY(opaque); 0.00 : 4ae2dd: 83 c1 02 add $0x2,%ecx 0.00 : 4ae2e0: 66 89 4d b0 mov %cx,-0x50(%rbp) : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4ae2e4: 41 0f b7 45 0c movzwl 0xc(%r13),%eax 0.00 : 4ae2e9: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ae2ed: 76 0e jbe 4ae2fd <_bt_killitems+0x7d> 0.00 : 4ae2ef: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ae2f2: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ae2f6: 49 89 c7 mov %rax,%r15 0.00 : 4ae2f9: 49 c1 ef 02 shr $0x2,%r15 : : for (i = 0; i < so->numKilled; i++) 0.00 : 4ae2fd: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 4ae301: 8b 48 38 mov 0x38(%rax),%ecx 0.00 : 4ae304: 85 c9 test %ecx,%ecx 0.00 : 4ae306: 0f 8e aa 00 00 00 jle 4ae3b6 <_bt_killitems+0x136> 0.00 : 4ae30c: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) 0.00 : 4ae313: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 4ae317: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae31e: 00 00 : { : int itemIndex = so->killedItems[i]; : BTScanPosItem *kitem = &so->currPos.items[itemIndex]; 0.00 : 4ae320: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 4ae324: 48 63 55 c8 movslq -0x38(%rbp),%rdx 0.00 : 4ae328: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 4ae32c: 48 63 04 90 movslq (%rax,%rdx,4),%rax : OffsetNumber offnum = kitem->indexOffset; 0.00 : 4ae330: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 4ae334: 48 01 c0 add %rax,%rax 0.00 : 4ae337: 0f b7 5c 01 76 movzwl 0x76(%rcx,%rax,1),%ebx : : Assert(itemIndex >= so->currPos.firstItem && : itemIndex <= so->currPos.lastItem); : if (offnum < minoff) 0.00 : 4ae33c: 66 39 5d b0 cmp %bx,-0x50(%rbp) 0.00 : 4ae340: 77 48 ja 4ae38a <_bt_killitems+0x10a> : continue; /* pure paranoia */ : while (offnum <= maxoff) 0.00 : 4ae342: 66 41 39 df cmp %bx,%r15w 0.00 : 4ae346: 72 42 jb 4ae38a <_bt_killitems+0x10a> : { : ItemId iid = PageGetItemId(page, offnum); : IndexTuple ituple = (IndexTuple) PageGetItem(page, iid); : : if (ItemPointerEquals(&ituple->t_tid, &kitem->heapTid)) 0.00 : 4ae348: 4c 8d 74 01 70 lea 0x70(%rcx,%rax,1),%r14 0.00 : 4ae34d: eb 0a jmp 4ae359 <_bt_killitems+0xd9> 0.00 : 4ae34f: 90 nop : { : /* found the item */ : ItemIdMarkDead(iid); : killedsomething = true; : break; /* out of inner search loop */ 0.00 : 4ae350: 83 c3 01 add $0x1,%ebx : : Assert(itemIndex >= so->currPos.firstItem && : itemIndex <= so->currPos.lastItem); : if (offnum < minoff) : continue; /* pure paranoia */ : while (offnum <= maxoff) 0.00 : 4ae353: 66 41 39 df cmp %bx,%r15w 0.00 : 4ae357: 72 31 jb 4ae38a <_bt_killitems+0x10a> : { : ItemId iid = PageGetItemId(page, offnum); 0.00 : 4ae359: 0f b7 c3 movzwl %bx,%eax : IndexTuple ituple = (IndexTuple) PageGetItem(page, iid); : : if (ItemPointerEquals(&ituple->t_tid, &kitem->heapTid)) 0.00 : 4ae35c: 4c 89 f6 mov %r14,%rsi 0.00 : 4ae35f: 4c 8d 60 03 lea 0x3(%rax),%r12 0.00 : 4ae363: 43 0f b7 7c a5 08 movzwl 0x8(%r13,%r12,4),%edi 0.00 : 4ae369: 81 e7 ff 7f 00 00 and $0x7fff,%edi 0.00 : 4ae36f: 49 8d 7c 3d 00 lea 0x0(%r13,%rdi,1),%rdi 0.00 : 4ae374: e8 e7 8e 1e 00 callq 697260 0.00 : 4ae379: 84 c0 test %al,%al 0.00 : 4ae37b: 74 d3 je 4ae350 <_bt_killitems+0xd0> : { : /* found the item */ : ItemIdMarkDead(iid); 0.00 : 4ae37d: 43 81 4c a5 08 00 80 orl $0x18000,0x8(%r13,%r12,4) 0.00 : 4ae384: 01 00 0.00 : 4ae386: c6 45 cf 01 movb $0x1,-0x31(%rbp) : page = BufferGetPage(so->currPos.buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : minoff = P_FIRSTDATAKEY(opaque); : maxoff = PageGetMaxOffsetNumber(page); : : for (i = 0; i < so->numKilled; i++) 0.00 : 4ae38a: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 4ae38e: 83 45 c8 01 addl $0x1,-0x38(%rbp) 0.00 : 4ae392: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 4ae395: 39 50 38 cmp %edx,0x38(%rax) 0.00 : 4ae398: 7f 86 jg 4ae320 <_bt_killitems+0xa0> : * Since this can be redone later if needed, mark as dirty hint. : * : * Whenever we mark anything LP_DEAD, we also set the page's : * BTP_HAS_GARBAGE flag, which is likewise just a hint. : */ : if (killedsomething) 0.00 : 4ae39a: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4ae39e: 74 16 je 4ae3b6 <_bt_killitems+0x136> : { : opaque->btpo_flags |= BTP_HAS_GARBAGE; 0.00 : 4ae3a0: 48 8b 4d a8 mov -0x58(%rbp),%rcx : MarkBufferDirtyHint(so->currPos.buf, true); 0.00 : 4ae3a4: be 01 00 00 00 mov $0x1,%esi : * Whenever we mark anything LP_DEAD, we also set the page's : * BTP_HAS_GARBAGE flag, which is likewise just a hint. : */ : if (killedsomething) : { : opaque->btpo_flags |= BTP_HAS_GARBAGE; 0.00 : 4ae3a9: 66 83 49 0c 40 orw $0x40,0xc(%rcx) : MarkBufferDirtyHint(so->currPos.buf, true); 0.00 : 4ae3ae: 8b 78 54 mov 0x54(%rax),%edi 0.00 : 4ae3b1: e8 da 65 1c 00 callq 674990 : } : : if (!haveLock) 0.00 : 4ae3b6: 80 7d 9f 00 cmpb $0x0,-0x61(%rbp) 0.00 : 4ae3ba: 75 0e jne 4ae3ca <_bt_killitems+0x14a> : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); 0.00 : 4ae3bc: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 4ae3c0: 31 f6 xor %esi,%esi 0.00 : 4ae3c2: 8b 78 54 mov 0x54(%rax),%edi 0.00 : 4ae3c5: e8 46 63 1c 00 callq 674710 : : /* : * Always reset the scan state, so we don't look for same items on other : * pages. : */ : so->numKilled = 0; 0.00 : 4ae3ca: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 4ae3ce: c7 42 38 00 00 00 00 movl $0x0,0x38(%rdx) : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1803 33.33 : 4ae3d5: 48 83 c4 48 add $0x48,%rsp 0.00 : 4ae3d9: 5b pop %rbx 0.00 : 4ae3da: 41 5c pop %r12 0.00 : 4ae3dc: 41 5d pop %r13 0.00 : 4ae3de: 41 5e pop %r14 0.00 : 4ae3e0: 41 5f pop %r15 0.00 : 4ae3e2: c9 leaveq 0.00 : 4ae3e3: c3 retq : bool killedsomething = false; : : Assert(BufferIsValid(so->currPos.buf)); : : if (!haveLock) : LockBuffer(so->currPos.buf, BT_READ); 0.00 : 4ae3e4: 8b 7f 54 mov 0x54(%rdi),%edi 0.00 : 4ae3e7: be 01 00 00 00 mov $0x1,%esi 0.00 : 4ae3ec: e8 1f 63 1c 00 callq 674710 : : page = BufferGetPage(so->currPos.buf); 0.00 : 4ae3f1: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 4ae3f5: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 4ae3f8: 85 c0 test %eax,%eax 0.00 : 4ae3fa: 0f 89 b5 fe ff ff jns 4ae2b5 <_bt_killitems+0x35> 0.00 : 4ae400: f7 d0 not %eax 0.00 : 4ae402: 48 63 d0 movslq %eax,%rdx 0.00 : 4ae405: 48 8b 05 0c ed 6c 00 mov 0x6ced0c(%rip),%rax # b7d118 0.00 : 4ae40c: 4c 8b 2c d0 mov (%rax,%rdx,8),%r13 0.00 : 4ae410: e9 b1 fe ff ff jmpq 4ae2c6 <_bt_killitems+0x46> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1952 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cce10 : : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce10: 48 89 f8 mov %rdi,%rax 0.00 : 4cce13: 48 ba 47 25 ad 36 42 movabs $0x8060504236ad2547,%rdx 0.00 : 4cce1a: 50 60 80 : * not to where the first xlog record on that page would go to. This is used : * when converting a pointer to the end of a record. : */ : static XLogRecPtr : XLogBytePosToEndRecPtr(uint64 bytepos) : { 0.00 : 4cce1d: 55 push %rbp : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce1e: 48 f7 e2 mul %rdx 0.00 : 4cce21: 48 89 f8 mov %rdi,%rax : * not to where the first xlog record on that page would go to. This is used : * when converting a pointer to the end of a record. : */ : static XLogRecPtr : XLogBytePosToEndRecPtr(uint64 bytepos) : { 0.00 : 4cce24: 48 89 e5 mov %rsp,%rbp : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce27: 48 c1 ea 17 shr $0x17,%rdx 0.00 : 4cce2b: 48 69 d2 f0 3f ff 00 imul $0xff3ff0,%rdx,%rdx 0.00 : 4cce32: 48 29 d0 sub %rdx,%rax : : if (bytesleft < XLOG_BLCKSZ - SizeOfXLogLongPHD) 0.00 : 4cce35: 48 3d d7 1f 00 00 cmp $0x1fd7,%rax : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce3b: 48 89 c2 mov %rax,%rdx : : if (bytesleft < XLOG_BLCKSZ - SizeOfXLogLongPHD) 0.00 : 4cce3e: 77 30 ja 4cce70 : { : /* fits on first page of segment */ : if (bytesleft == 0) 0.00 : 4cce40: 8d 40 28 lea 0x28(%rax),%eax 0.00 : 4cce43: 31 c9 xor %ecx,%ecx 0.00 : 4cce45: 48 85 d2 test %rdx,%rdx 0.00 : 4cce48: 48 0f 45 c8 cmovne %rax,%rcx : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; : : fullpages = bytesleft / UsableBytesInPage; : bytesleft = bytesleft % UsableBytesInPage; : : if (bytesleft == 0) 0.00 : 4cce4c: 48 89 f8 mov %rdi,%rax 0.00 : 4cce4f: 48 ba 47 25 ad 36 42 movabs $0x8060504236ad2547,%rdx 0.00 : 4cce56: 50 60 80 0.00 : 4cce59: 48 f7 e2 mul %rdx : } : : XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result); : : return result; : } 0.00 : 4cce5c: c9 leaveq : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; : : fullpages = bytesleft / UsableBytesInPage; : bytesleft = bytesleft % UsableBytesInPage; : : if (bytesleft == 0) 0.00 : 4cce5d: 48 c1 ea 17 shr $0x17,%rdx 0.00 : 4cce61: 48 c1 e2 18 shl $0x18,%rdx 0.00 : 4cce65: 48 8d 04 11 lea (%rcx,%rdx,1),%rax : } : : XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result); : : return result; : } 0.00 : 4cce69: c3 retq 0.00 : 4cce6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else : { : /* account for the first page on segment with long header */ : seg_offset = XLOG_BLCKSZ; : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; 0.00 : 4cce70: 48 8d b0 28 e0 ff ff lea -0x1fd8(%rax),%rsi : : fullpages = bytesleft / UsableBytesInPage; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1952 100.00 : 4cce77: 48 b8 b7 9d 27 8a 0d movabs $0x2018120d8a279db7,%rax 0.00 : 4cce7e: 12 18 20 0.00 : 4cce81: 48 89 f1 mov %rsi,%rcx 0.00 : 4cce84: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 4cce88: 48 f7 e1 mul %rcx 0.00 : 4cce8b: 48 89 d1 mov %rdx,%rcx 0.00 : 4cce8e: 48 c1 e9 07 shr $0x7,%rcx : bytesleft = bytesleft % UsableBytesInPage; 0.00 : 4cce92: 48 69 c1 e8 1f 00 00 imul $0x1fe8,%rcx,%rax : : if (bytesleft == 0) 0.00 : 4cce99: 48 29 c6 sub %rax,%rsi 0.00 : 4cce9c: 74 12 je 4cceb0 0.00 : 4cce9e: 48 89 ca mov %rcx,%rdx 0.00 : 4ccea1: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ccea5: 8d 8c 16 18 20 00 00 lea 0x2018(%rsi,%rdx,1),%ecx 0.00 : 4cceac: eb 9e jmp 4cce4c 0.00 : 4cceae: 66 90 xchg %ax,%ax 0.00 : 4cceb0: 48 89 ca mov %rcx,%rdx 0.00 : 4cceb3: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4cceb7: 81 c2 00 20 00 00 add $0x2000,%edx 0.00 : 4ccebd: 89 d1 mov %edx,%ecx 0.00 : 4ccebf: eb 8b jmp 4cce4c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2309 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2295 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000559170 : : * Do not allow the copy if user doesn't have proper permission to access : * the table or the specifically requested columns. : */ : Oid : DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed) : { 0.00 : 559170: 55 push %rbp 0.00 : 559171: 48 89 e5 mov %rsp,%rbp 0.00 : 559174: 41 57 push %r15 0.00 : 559176: 49 89 f7 mov %rsi,%r15 0.00 : 559179: 41 56 push %r14 0.00 : 55917b: 49 89 fe mov %rdi,%r14 0.00 : 55917e: 41 55 push %r13 0.00 : 559180: 41 54 push %r12 0.00 : 559182: 53 push %rbx 0.00 : 559183: 48 81 ec 68 01 00 00 sub $0x168,%rsp 0.00 : 55918a: 48 89 95 98 fe ff ff mov %rdx,-0x168(%rbp) : CopyState cstate; : bool is_from = stmt->is_from; 0.00 : 559191: 0f b6 47 20 movzbl 0x20(%rdi),%eax 0.00 : 559195: 88 85 af fe ff ff mov %al,-0x151(%rbp) : Relation rel; : Oid relid; : Node *query = NULL; : : /* Disallow COPY to/from file or program except to superusers. */ : if (!pipe && !superuser()) 0.00 : 55919b: 48 83 7f 28 00 cmpq $0x0,0x28(%rdi) 0.00 : 5591a0: 74 3e je 5591e0 0.00 : 5591a2: e8 c9 d9 23 00 callq 796b70 0.00 : 5591a7: 84 c0 test %al,%al 0.00 : 5591a9: 75 35 jne 5591e0 : { : if (stmt->is_program) 0.00 : 5591ab: 41 80 7e 21 00 cmpb $0x0,0x21(%r14) 0.00 : 5591b0: 0f 84 9c 0c 00 00 je 559e52 : ereport(ERROR, 0.00 : 5591b6: 45 31 c0 xor %r8d,%r8d 0.00 : 5591b9: b9 e3 9d 87 00 mov $0x879de3,%ecx 0.00 : 5591be: ba 1f 03 00 00 mov $0x31f,%edx 0.00 : 5591c3: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5591c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5591cd: e8 ee 18 22 00 callq 77aac0 0.00 : 5591d2: 84 c0 test %al,%al 0.00 : 5591d4: 0f 85 16 05 00 00 jne 5596f0 : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); : if (S_ISDIR(st.st_mode)) : ereport(ERROR, 0.00 : 5591da: e8 f1 02 f1 ff callq 4694d0 0.00 : 5591df: 90 nop : errmsg("must be superuser to COPY to or from a file"), : errhint("Anyone can COPY to stdout or from stdin. " : "psql's \\copy command also works for anyone."))); : } : : if (stmt->relation) 0.00 : 5591e0: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 5591e4: 48 85 ff test %rdi,%rdi 0.00 : 5591e7: 0f 84 43 05 00 00 je 559730 : { : TupleDesc tupDesc; : AclMode required_access = (is_from ? ACL_INSERT : ACL_SELECT); 0.00 : 5591ed: 80 bd af fe ff ff 01 cmpb $0x1,-0x151(%rbp) 0.00 : 5591f4: 19 f6 sbb %esi,%esi 0.00 : 5591f6: 83 e6 fe and $0xfffffffe,%esi 0.00 : 5591f9: 83 c6 03 add $0x3,%esi 0.00 : 5591fc: 80 bd af fe ff ff 01 cmpb $0x1,-0x151(%rbp) 0.00 : 559203: 19 db sbb %ebx,%ebx : ListCell *cur; : : Assert(!stmt->query); : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, 0.00 : 559205: e8 f6 4b f4 ff callq 49de00 : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); 0.00 : 55920a: 48 8b 3d 4f 16 66 00 mov 0x66164f(%rip),%rdi # bba860 : ListCell *cur; : : Assert(!stmt->query); : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, 0.00 : 559211: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); 0.00 : 559218: be a8 00 00 00 mov $0xa8,%esi : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); 0.00 : 55921d: 8b 50 40 mov 0x40(%rax),%edx : } : : if (stmt->relation) : { : TupleDesc tupDesc; : AclMode required_access = (is_from ? ACL_INSERT : ACL_SELECT); 0.00 : 559220: f7 d3 not %ebx 0.00 : 559222: 83 c3 02 add $0x2,%ebx : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); 0.00 : 559225: 89 95 bc fe ff ff mov %edx,-0x144(%rbp) : : rte = makeNode(RangeTblEntry); 0.00 : 55922b: e8 e0 fb 23 00 callq 798e10 0.00 : 559230: c7 00 9a 03 00 00 movl $0x39a,(%rax) : rte->rtekind = RTE_RELATION; 0.00 : 559236: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : rel = heap_openrv(stmt->relation, : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); 0.00 : 55923d: 49 89 c4 mov %rax,%r12 : rte->rtekind = RTE_RELATION; : rte->relid = RelationGetRelid(rel); 0.00 : 559240: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559247: 8b 46 40 mov 0x40(%rsi),%eax 0.00 : 55924a: 41 89 44 24 08 mov %eax,0x8(%r12) : rte->relkind = rel->rd_rel->relkind; 0.00 : 55924f: 48 8b 46 30 mov 0x30(%rsi),%rax 0.00 : 559253: 0f b6 40 6f movzbl 0x6f(%rax),%eax : rte->requiredPerms = required_access; 0.00 : 559257: 41 89 9c 24 84 00 00 mov %ebx,0x84(%r12) 0.00 : 55925e: 00 : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); : rte->rtekind = RTE_RELATION; : rte->relid = RelationGetRelid(rel); : rte->relkind = rel->rd_rel->relkind; 0.00 : 55925f: 41 88 44 24 0c mov %al,0xc(%r12) : rte->requiredPerms = required_access; : : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); 0.00 : 559264: 48 8b 7e 38 mov 0x38(%rsi),%rdi 0.00 : 559268: 49 8b 56 18 mov 0x18(%r14),%rdx 0.00 : 55926c: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559273: e8 b8 d5 ff ff callq 556830 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 559278: 48 85 c0 test %rax,%rax 0.00 : 55927b: 74 5d je 5592da 0.00 : 55927d: 48 8b 58 08 mov 0x8(%rax),%rbx : foreach(cur, attnums) 0.00 : 559281: 48 85 db test %rbx,%rbx 0.00 : 559284: 75 28 jne 5592ae 0.00 : 559286: eb 52 jmp 5592da 0.00 : 559288: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 55928f: 00 : { : int attno = lfirst_int(cur) - : FirstLowInvalidHeapAttributeNumber; : : if (is_from) : rte->modifiedCols = bms_add_member(rte->modifiedCols, attno); 0.00 : 559290: 49 8b bc 24 98 00 00 mov 0x98(%r12),%rdi 0.00 : 559297: 00 0.00 : 559298: e8 63 9d 08 00 callq 5e3000 0.00 : 55929d: 49 89 84 24 98 00 00 mov %rax,0x98(%r12) 0.00 : 5592a4: 00 : rte->relkind = rel->rd_rel->relkind; : rte->requiredPerms = required_access; : : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); : foreach(cur, attnums) 0.00 : 5592a5: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5592a9: 48 85 db test %rbx,%rbx 0.00 : 5592ac: 74 2c je 5592da : { : int attno = lfirst_int(cur) - : FirstLowInvalidHeapAttributeNumber; : : if (is_from) 0.00 : 5592ae: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); : foreach(cur, attnums) : { : int attno = lfirst_int(cur) - : FirstLowInvalidHeapAttributeNumber; 0.00 : 5592b5: 8b 03 mov (%rbx),%eax 0.00 : 5592b7: 8d 70 08 lea 0x8(%rax),%esi : : if (is_from) 0.00 : 5592ba: 75 d4 jne 559290 : rte->modifiedCols = bms_add_member(rte->modifiedCols, attno); : else : rte->selectedCols = bms_add_member(rte->selectedCols, attno); 0.00 : 5592bc: 49 8b bc 24 90 00 00 mov 0x90(%r12),%rdi 0.00 : 5592c3: 00 0.00 : 5592c4: e8 37 9d 08 00 callq 5e3000 0.00 : 5592c9: 49 89 84 24 90 00 00 mov %rax,0x90(%r12) 0.00 : 5592d0: 00 : rte->relkind = rel->rd_rel->relkind; : rte->requiredPerms = required_access; : : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); : foreach(cur, attnums) 0.00 : 5592d1: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5592d5: 48 85 db test %rbx,%rbx 0.00 : 5592d8: 75 d4 jne 5592ae : if (is_from) : rte->modifiedCols = bms_add_member(rte->modifiedCols, attno); : else : rte->selectedCols = bms_add_member(rte->selectedCols, attno); : } : ExecCheckRTPerms(list_make1(rte), true); 0.00 : 5592da: 31 f6 xor %esi,%esi 0.00 : 5592dc: 4c 89 e7 mov %r12,%rdi 0.00 : 5592df: e8 6c 85 08 00 callq 5e1850 0.00 : 5592e4: be 01 00 00 00 mov $0x1,%esi 0.00 : 5592e9: 48 89 c7 mov %rax,%rdi 0.00 : 5592ec: e8 3f 20 05 00 callq 5ab330 : * handle the policies. : * : * If RLS is not enabled for this, then just fall through to the : * normal non-filtering relation handling. : */ : if (check_enable_rls(rte->relid, InvalidOid) == RLS_ENABLED) 0.00 : 5592f1: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 5592f6: 31 f6 xor %esi,%esi 0.00 : 5592f8: e8 a3 a2 11 00 callq 6735a0 0.00 : 5592fd: 31 d2 xor %edx,%edx 0.00 : 5592ff: 83 f8 02 cmp $0x2,%eax 0.00 : 559302: 0f 84 10 01 00 00 je 559418 : query = stmt->query; : relid = InvalidOid; : rel = NULL; : } : : if (is_from) 0.00 : 559308: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) 0.00 : 55930f: 0f 84 43 0a 00 00 je 559d58 : { : Assert(rel); : : /* check read-only transaction */ : if (XactReadOnly && !rel->rd_islocaltemp) 0.00 : 559315: 80 3d 5c 62 66 00 00 cmpb $0x0,0x66625c(%rip) # bbf578 0.00 : 55931c: 74 11 je 55932f 0.00 : 55931e: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 559325: 80 7a 20 00 cmpb $0x0,0x20(%rdx) 0.00 : 559329: 0f 84 f9 02 00 00 je 559628 : PreventCommandIfReadOnly("COPY FROM"); : : cstate = BeginCopyFrom(rel, stmt->filename, stmt->is_program, 0.00 : 55932f: 41 0f be 56 21 movsbl 0x21(%r14),%edx 0.00 : 559334: 49 8b 4e 18 mov 0x18(%r14),%rcx 0.00 : 559338: 49 8b 76 28 mov 0x28(%r14),%rsi 0.00 : 55933c: 4d 8b 46 30 mov 0x30(%r14),%r8 0.00 : 559340: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 559347: e8 04 ed ff ff callq 558050 0.00 : 55934c: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) : HeapTuple tuple; : TupleDesc tupDesc; : Datum *values; : bool *nulls; : ResultRelInfo *resultRelInfo; : EState *estate = CreateExecutorState(); /* for ExecConstraints() */ 0.00 : 559353: e8 c8 bf 05 00 callq 5b5320 : ExprContext *econtext; : TupleTableSlot *myslot; : MemoryContext oldcontext = CurrentMemoryContext; 0.00 : 559358: 48 8b 35 01 15 66 00 mov 0x661501(%rip),%rsi # bba860 : : ErrorContextCallback errcallback; : CommandId mycid = GetCurrentCommandId(true); 0.00 : 55935f: bf 01 00 00 00 mov $0x1,%edi : HeapTuple tuple; : TupleDesc tupDesc; : Datum *values; : bool *nulls; : ResultRelInfo *resultRelInfo; : EState *estate = CreateExecutorState(); /* for ExecConstraints() */ 0.00 : 559364: 49 89 c7 mov %rax,%r15 : ExprContext *econtext; : TupleTableSlot *myslot; : MemoryContext oldcontext = CurrentMemoryContext; 0.00 : 559367: 48 89 b5 08 ff ff ff mov %rsi,-0xf8(%rbp) : : ErrorContextCallback errcallback; : CommandId mycid = GetCurrentCommandId(true); 0.00 : 55936e: e8 9d 78 f6 ff callq 4c0c10 0.00 : 559373: 89 85 04 ff ff ff mov %eax,-0xfc(%rbp) : Size bufferedTuplesSize = 0; : int firstBufferedLineNo = 0; : : Assert(cstate->rel); : : if (cstate->rel->rd_rel->relkind != RELKIND_RELATION) 0.00 : 559379: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 559380: 48 8b 50 28 mov 0x28(%rax),%rdx 0.00 : 559384: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 559388: 0f b6 40 6f movzbl 0x6f(%rax),%eax 0.00 : 55938c: 3c 72 cmp $0x72,%al 0.00 : 55938e: 0f 84 ac 02 00 00 je 559640 : { : if (cstate->rel->rd_rel->relkind == RELKIND_VIEW) 0.00 : 559394: 3c 76 cmp $0x76,%al 0.00 : 559396: 0f 84 97 0b 00 00 je 559f33 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_MATVIEW) 0.00 : 55939c: 3c 6d cmp $0x6d,%al 0.00 : 55939e: 0f 84 da 0b 00 00 je 559f7e : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to materialized view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) 0.00 : 5593a4: 3c 66 cmp $0x66,%al 0.00 : 5593a6: 0f 84 3c 0b 00 00 je 559ee8 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to foreign table \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_SEQUENCE) 0.00 : 5593ac: 3c 53 cmp $0x53,%al 0.00 : 5593ae: 66 90 xchg %ax,%ax 0.00 : 5593b0: 0f 85 e7 0a 00 00 jne 559e9d : ereport(ERROR, 0.00 : 5593b6: 45 31 c0 xor %r8d,%r8d 0.00 : 5593b9: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 5593be: ba 6d 08 00 00 mov $0x86d,%edx 0.00 : 5593c3: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5593c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5593cd: e8 ee 16 22 00 callq 77aac0 0.00 : 5593d2: 84 c0 test %al,%al 0.00 : 5593d4: 0f 84 00 fe ff ff je 5591da 0.00 : 5593da: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 5593e1: bf f8 8a 87 00 mov $0x878af8,%edi 0.00 : 5593e6: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 5593ea: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 5593ee: 31 c0 xor %eax,%eax 0.00 : 5593f0: e8 ab 34 22 00 callq 77c8a0 0.00 : 5593f5: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 5593fa: 89 c3 mov %eax,%ebx : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); : if (S_ISDIR(st.st_mode)) : ereport(ERROR, 0.00 : 5593fc: e8 4f 39 22 00 callq 77cd50 0.00 : 559401: 89 de mov %ebx,%esi 0.00 : 559403: 89 c7 mov %eax,%edi 0.00 : 559405: 31 c0 xor %eax,%eax 0.00 : 559407: e8 d4 11 22 00 callq 77a5e0 0.00 : 55940c: e9 c9 fd ff ff jmpq 5591da 0.00 : 559411: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : SelectStmt *select; : ColumnRef *cr; : ResTarget *target; : RangeVar *from; : : if (is_from) 0.00 : 559418: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) 0.00 : 55941f: 0f 85 a4 0b 00 00 jne 559fc9 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("COPY FROM not supported with row security."), : errhint("Use direct INSERT statements instead."))); : : /* Build target list */ : cr = makeNode(ColumnRef); 0.00 : 559425: 48 8b 3d 34 14 66 00 mov 0x661434(%rip),%rdi # bba860 0.00 : 55942c: be 18 00 00 00 mov $0x18,%esi 0.00 : 559431: e8 da f9 23 00 callq 798e10 0.00 : 559436: 49 89 c4 mov %rax,%r12 0.00 : 559439: c7 00 85 03 00 00 movl $0x385,(%rax) : : if (!stmt->attlist) 0.00 : 55943f: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 559443: 48 85 c0 test %rax,%rax 0.00 : 559446: 0f 84 c7 09 00 00 je 559e13 : cr->fields = list_make1(makeNode(A_Star)); : else : cr->fields = stmt->attlist; 0.00 : 55944c: 49 89 44 24 08 mov %rax,0x8(%r12) : : cr->location = 1; 0.00 : 559451: 41 c7 44 24 10 01 00 movl $0x1,0x10(%r12) 0.00 : 559458: 00 00 : : target = makeNode(ResTarget); 0.00 : 55945a: 48 8b 3d ff 13 66 00 mov 0x6613ff(%rip),%rdi # bba860 0.00 : 559461: be 28 00 00 00 mov $0x28,%esi 0.00 : 559466: e8 a5 f9 23 00 callq 798e10 0.00 : 55946b: 48 89 c3 mov %rax,%rbx : target->name = NULL; : target->indirection = NIL; : target->val = (Node *) cr; 0.00 : 55946e: 4c 89 60 18 mov %r12,0x18(%rax) : else : cr->fields = stmt->attlist; : : cr->location = 1; : : target = makeNode(ResTarget); 0.00 : 559472: c7 00 8d 03 00 00 movl $0x38d,(%rax) : target->name = NULL; 0.00 : 559478: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 55947f: 00 : target->indirection = NIL; 0.00 : 559480: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 559487: 00 : target->val = (Node *) cr; : target->location = 1; : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); 0.00 : 559488: ba 01 00 00 00 mov $0x1,%edx : : target = makeNode(ResTarget); : target->name = NULL; : target->indirection = NIL; : target->val = (Node *) cr; : target->location = 1; 0.00 : 55948d: c7 40 20 01 00 00 00 movl $0x1,0x20(%rax) : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); 0.00 : 559494: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55949b: 31 ff xor %edi,%edi 0.00 : 55949d: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 5594a1: e8 da 81 09 00 callq 5f1680 : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594a6: 48 8b 3d b3 13 66 00 mov 0x6613b3(%rip),%rdi # bba860 0.00 : 5594ad: be 90 00 00 00 mov $0x90,%esi : target->indirection = NIL; : target->val = (Node *) cr; : target->location = 1; : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); 0.00 : 5594b2: 49 89 c5 mov %rax,%r13 : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594b5: e8 56 f9 23 00 callq 798e10 : select->targetList = list_make1(target); 0.00 : 5594ba: 48 89 df mov %rbx,%rdi : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594bd: 49 89 c4 mov %rax,%r12 : select->targetList = list_make1(target); 0.00 : 5594c0: 31 f6 xor %esi,%esi : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594c2: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : select->targetList = list_make1(target); 0.00 : 5594c8: e8 83 83 08 00 callq 5e1850 : select->fromClause = list_make1(from); 0.00 : 5594cd: 4c 89 ef mov %r13,%rdi 0.00 : 5594d0: 31 f6 xor %esi,%esi : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); : : /* Build query */ : select = makeNode(SelectStmt); : select->targetList = list_make1(target); 0.00 : 5594d2: 49 89 44 24 18 mov %rax,0x18(%r12) : select->fromClause = list_make1(from); 0.00 : 5594d7: e8 74 83 08 00 callq 5e1850 0.00 : 5594dc: 49 89 44 24 20 mov %rax,0x20(%r12) : query = (Node*) select; : : relid = InvalidOid; : : /* Close the handle to the relation as it is no longer needed. */ : heap_close(rel, (is_from ? RowExclusiveLock : AccessShareLock)); 0.00 : 5594e1: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 5594e8: be 01 00 00 00 mov $0x1,%esi 0.00 : 5594ed: e8 ce 44 f4 ff callq 49d9c0 : *processed = CopyFrom(cstate); /* copy from file to database */ : EndCopyFrom(cstate); : } : else : { : cstate = BeginCopyTo(rel, query, queryString, 0.00 : 5594f2: 4d 8b 4e 30 mov 0x30(%r14),%r9 0.00 : 5594f6: 49 8b 4e 18 mov 0x18(%r14),%rcx 0.00 : 5594fa: 4c 89 e2 mov %r12,%rdx 0.00 : 5594fd: 45 0f b6 6e 21 movzbl 0x21(%r14),%r13d 0.00 : 559502: 49 8b 5e 28 mov 0x28(%r14),%rbx 0.00 : 559506: 48 c7 85 b0 fe ff ff movq $0x0,-0x150(%rbp) 0.00 : 55950d: 00 00 00 00 0.00 : 559511: c7 85 bc fe ff ff 00 movl $0x0,-0x144(%rbp) 0.00 : 559518: 00 00 00 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from non-table relation \"%s\"", : RelationGetRelationName(rel)))); : } : : cstate = BeginCopy(false, rel, query, queryString, attnamelist, options); 0.00 : 55951b: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559522: 49 89 c8 mov %rcx,%r8 0.00 : 559525: 31 ff xor %edi,%edi 0.00 : 559527: 4c 89 f9 mov %r15,%rcx 0.00 : 55952a: e8 e1 e4 ff ff callq 557a10 0.00 : 55952f: 49 89 c4 mov %rax,%r12 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 559532: 48 8b 80 f0 00 00 00 mov 0xf0(%rax),%rax : oldcontext = MemoryContextSwitchTo(cstate->copycontext); : : if (pipe) 0.00 : 559539: 48 85 db test %rbx,%rbx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 55953c: 4c 8b 35 1d 13 66 00 mov 0x66131d(%rip),%r14 # bba860 : : CurrentMemoryContext = context; 0.00 : 559543: 48 89 05 16 13 66 00 mov %rax,0x661316(%rip) # bba860 0.00 : 55954a: 0f 84 a5 08 00 00 je 559df5 : if (whereToSendOutput != DestRemote) : cstate->copy_file = stdout; : } : else : { : cstate->filename = pstrdup(filename); 0.00 : 559550: 48 89 df mov %rbx,%rdi 0.00 : 559553: e8 f8 f9 23 00 callq 798f50 : cstate->is_program = is_program; : : if (is_program) 0.00 : 559558: 45 84 ed test %r13b,%r13b : if (whereToSendOutput != DestRemote) : cstate->copy_file = stdout; : } : else : { : cstate->filename = pstrdup(filename); 0.00 : 55955b: 49 89 44 24 40 mov %rax,0x40(%r12) : cstate->is_program = is_program; 0.00 : 559560: 45 88 6c 24 48 mov %r13b,0x48(%r12) : : if (is_program) 0.00 : 559565: 0f 85 8a 07 00 00 jne 559cf5 : : /* : * Prevent write to relative path ... too easy to shoot oneself in : * the foot by overwriting a database file ... : */ : if (!is_absolute_path(filename)) 0.00 : 55956b: 80 3b 2f cmpb $0x2f,(%rbx) 0.00 : 55956e: 0f 85 e9 0b 00 00 jne 55a15d : ereport(ERROR, : (errcode(ERRCODE_INVALID_NAME), : errmsg("relative path not allowed for COPY to file"))); : : oumask = umask(S_IWGRP | S_IWOTH); 0.00 : 559574: bf 12 00 00 00 mov $0x12,%edi 0.00 : 559579: e8 72 0b f1 ff callq 46a0f0 : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); 0.00 : 55957e: 49 8b 7c 24 40 mov 0x40(%r12),%rdi : if (!is_absolute_path(filename)) : ereport(ERROR, : (errcode(ERRCODE_INVALID_NAME), : errmsg("relative path not allowed for COPY to file"))); : : oumask = umask(S_IWGRP | S_IWOTH); 0.00 : 559583: 89 c3 mov %eax,%ebx : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); 0.00 : 559585: be 67 55 88 00 mov $0x885567,%esi 0.00 : 55958a: e8 91 fc 11 00 callq 679220 : umask(oumask); 0.00 : 55958f: 89 df mov %ebx,%edi : ereport(ERROR, : (errcode(ERRCODE_INVALID_NAME), : errmsg("relative path not allowed for COPY to file"))); : : oumask = umask(S_IWGRP | S_IWOTH); : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); 0.00 : 559591: 49 89 44 24 08 mov %rax,0x8(%r12) : umask(oumask); 0.00 : 559596: e8 55 0b f1 ff callq 46a0f0 : if (cstate->copy_file == NULL) 0.00 : 55959b: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 5595a0: 48 85 ff test %rdi,%rdi 0.00 : 5595a3: 0f 84 3f 0c 00 00 je 55a1e8 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); 0.00 : 5595a9: e8 12 fe f0 ff callq 4693c0 : # endif : : __extern_inline int : __NTH (fstat (int __fd, struct stat *__statbuf)) : { : return __fxstat (_STAT_VER, __fd, __statbuf); 0.00 : 5595ae: 48 8d 95 30 ff ff ff lea -0xd0(%rbp),%rdx 0.00 : 5595b5: 89 c6 mov %eax,%esi 0.00 : 5595b7: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5595bc: e8 df 06 f1 ff callq 469ca0 <__fxstat@plt> : if (S_ISDIR(st.st_mode)) 0.00 : 5595c1: 8b 85 48 ff ff ff mov -0xb8(%rbp),%eax 0.00 : 5595c7: 25 00 f0 00 00 and $0xf000,%eax 0.00 : 5595cc: 3d 00 40 00 00 cmp $0x4000,%eax 0.00 : 5595d1: 0f 84 c9 0b 00 00 je 55a1a0 : else : { : cstate = BeginCopyTo(rel, query, queryString, : stmt->filename, stmt->is_program, : stmt->attlist, stmt->options); : *processed = DoCopyTo(cstate); /* copy from database to file */ 0.00 : 5595d7: 4c 89 e7 mov %r12,%rdi 0.00 : 5595da: 4c 89 35 7f 12 66 00 mov %r14,0x66127f(%rip) # bba860 0.00 : 5595e1: e8 8a f4 ff ff callq 558a70 0.00 : 5595e6: 48 8b 95 98 fe ff ff mov -0x168(%rbp),%rdx 0.00 : 5595ed: 48 89 02 mov %rax,(%rdx) : * Clean up storage and release resources for COPY TO. : */ : static void : EndCopyTo(CopyState cstate) : { : if (cstate->queryDesc != NULL) 0.00 : 5595f0: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 5595f5: 48 85 ff test %rdi,%rdi 0.00 : 5595f8: 74 1e je 559618 : { : /* Close down the query and free resources. */ : ExecutorFinish(cstate->queryDesc); 0.00 : 5595fa: e8 81 22 05 00 callq 5ab880 : ExecutorEnd(cstate->queryDesc); 0.00 : 5595ff: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 559604: e8 57 21 05 00 callq 5ab760 : FreeQueryDesc(cstate->queryDesc); 0.00 : 559609: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 55960e: e8 7d 73 14 00 callq 6a0990 : PopActiveSnapshot(); 0.00 : 559613: e8 e8 dc 24 00 callq 7a7300 : } : : /* Clean up storage */ : EndCopy(cstate); 0.00 : 559618: 4c 89 e7 mov %r12,%rdi 0.00 : 55961b: e8 30 b4 ff ff callq 554a50 0.00 : 559620: e9 1a 06 00 00 jmpq 559c3f 0.00 : 559625: 0f 1f 00 nopl (%rax) : { : Assert(rel); : : /* check read-only transaction */ : if (XactReadOnly && !rel->rd_islocaltemp) : PreventCommandIfReadOnly("COPY FROM"); 0.00 : 559628: bf d5 8a 87 00 mov $0x878ad5,%edi 0.00 : 55962d: e8 8e 93 14 00 callq 6a29c0 0.00 : 559632: e9 f8 fc ff ff jmpq 55932f 0.00 : 559637: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55963e: 00 00 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to non-table relation \"%s\"", : RelationGetRelationName(cstate->rel)))); : } : : tupDesc = RelationGetDescr(cstate->rel); 0.00 : 559640: 48 8b 72 38 mov 0x38(%rdx),%rsi 0.00 : 559644: 48 89 b5 28 ff ff ff mov %rsi,-0xd8(%rbp) : * must be the case if we have a new table or new relfilenode, so we need : * no additional work to enforce that. : *---------- : */ : /* createSubid is creation check, newRelfilenodeSubid is truncation check */ : if (cstate->rel->rd_createSubid != InvalidSubTransactionId || 0.00 : 55964b: 8b 42 24 mov 0x24(%rdx),%eax 0.00 : 55964e: 85 c0 test %eax,%eax 0.00 : 559650: 75 7e jne 5596d0 0.00 : 559652: c7 85 00 ff ff ff 00 movl $0x0,-0x100(%rbp) 0.00 : 559659: 00 00 00 0.00 : 55965c: 8b 42 28 mov 0x28(%rdx),%eax 0.00 : 55965f: 85 c0 test %eax,%eax 0.00 : 559661: 75 6d jne 5596d0 : * earlier scan or command. This ensures that if this subtransaction : * aborts then the frozen rows won't be visible after xact cleanup. Note : * that the stronger test of exactly which subtransaction created it is : * crucial for correctness of this optimisation. : */ : if (cstate->freeze) 0.00 : 559663: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 55966a: 80 78 4b 00 cmpb $0x0,0x4b(%rax) 0.00 : 55966e: 0f 84 13 01 00 00 je 559787 : { : if (!ThereAreNoPriorRegisteredSnapshots() || !ThereAreNoReadyPortals()) 0.00 : 559674: e8 b7 c9 24 00 callq 7a6030 0.00 : 559679: 84 c0 test %al,%al 0.00 : 55967b: 74 10 je 55968d 0.00 : 55967d: 0f 1f 00 nopl (%rax) 0.00 : 559680: e8 bb fc 23 00 callq 799340 0.00 : 559685: 84 c0 test %al,%al 0.00 : 559687: 0f 85 c1 00 00 00 jne 55974e : ereport(ERROR, 0.00 : 55968d: 45 31 c0 xor %r8d,%r8d 0.00 : 559690: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559695: ba b0 08 00 00 mov $0x8b0,%edx 0.00 : 55969a: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55969f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5596a4: e8 17 14 22 00 callq 77aac0 0.00 : 5596a9: 84 c0 test %al,%al 0.00 : 5596ab: 0f 84 29 fb ff ff je 5591da 0.00 : 5596b1: bf 30 97 87 00 mov $0x879730,%edi 0.00 : 5596b6: 31 c0 xor %eax,%eax 0.00 : 5596b8: e8 e3 31 22 00 callq 77c8a0 0.00 : 5596bd: bf 42 01 00 00 mov $0x142,%edi 0.00 : 5596c2: 89 c6 mov %eax,%esi 0.00 : 5596c4: 31 c0 xor %eax,%eax 0.00 : 5596c6: e8 15 0f 22 00 callq 77a5e0 0.00 : 5596cb: e9 0a fb ff ff jmpq 5591da : /* createSubid is creation check, newRelfilenodeSubid is truncation check */ : if (cstate->rel->rd_createSubid != InvalidSubTransactionId || : cstate->rel->rd_newRelfilenodeSubid != InvalidSubTransactionId) : { : hi_options |= HEAP_INSERT_SKIP_FSM; : if (!XLogIsNeeded()) 0.00 : 5596d0: 31 c0 xor %eax,%eax 0.00 : 5596d2: 83 3d 83 fa 61 00 00 cmpl $0x0,0x61fa83(%rip) # b7915c 0.00 : 5596d9: 0f 9e c0 setle %al 0.00 : 5596dc: 83 c0 02 add $0x2,%eax 0.00 : 5596df: 89 85 00 ff ff ff mov %eax,-0x100(%rbp) 0.00 : 5596e5: e9 79 ff ff ff jmpq 559663 0.00 : 5596ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* Disallow COPY to/from file or program except to superusers. */ : if (!pipe && !superuser()) : { : if (stmt->is_program) : ereport(ERROR, 0.00 : 5596f0: bf 98 95 87 00 mov $0x879598,%edi 0.00 : 5596f5: 31 c0 xor %eax,%eax 0.00 : 5596f7: e8 a4 25 22 00 callq 77bca0 0.00 : 5596fc: bf f0 95 87 00 mov $0x8795f0,%edi 0.00 : 559701: 41 89 c4 mov %eax,%r12d 0.00 : 559704: 31 c0 xor %eax,%eax 0.00 : 559706: e8 95 31 22 00 callq 77c8a0 0.00 : 55970b: bf 84 50 00 01 mov $0x1005084,%edi 0.00 : 559710: 89 c3 mov %eax,%ebx : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from materialized view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) : ereport(ERROR, 0.00 : 559712: e8 39 36 22 00 callq 77cd50 0.00 : 559717: 44 89 e2 mov %r12d,%edx 0.00 : 55971a: 89 c7 mov %eax,%edi 0.00 : 55971c: 89 de mov %ebx,%esi 0.00 : 55971e: 31 c0 xor %eax,%eax 0.00 : 559720: e8 bb 0e 22 00 callq 77a5e0 0.00 : 559725: e9 b0 fa ff ff jmpq 5591da 0.00 : 55972a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else : { : Assert(stmt->query); : : query = stmt->query; 0.00 : 559730: 49 8b 56 10 mov 0x10(%r14),%rdx 0.00 : 559734: 48 c7 85 b0 fe ff ff movq $0x0,-0x150(%rbp) 0.00 : 55973b: 00 00 00 00 0.00 : 55973f: c7 85 bc fe ff ff 00 movl $0x0,-0x144(%rbp) 0.00 : 559746: 00 00 00 0.00 : 559749: e9 ba fb ff ff jmpq 559308 : if (!ThereAreNoPriorRegisteredSnapshots() || !ThereAreNoReadyPortals()) : ereport(ERROR, : (ERRCODE_INVALID_TRANSACTION_STATE, : errmsg("cannot perform FREEZE because of prior transaction activity"))); : : if (cstate->rel->rd_createSubid != GetCurrentSubTransactionId() && 0.00 : 55974e: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559755: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559759: 8b 58 24 mov 0x24(%rax),%ebx 0.00 : 55975c: e8 5f 74 f6 ff callq 4c0bc0 0.00 : 559761: 39 c3 cmp %eax,%ebx 0.00 : 559763: 74 1b je 559780 0.00 : 559765: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 55976c: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 559770: 8b 58 28 mov 0x28(%rax),%ebx 0.00 : 559773: e8 48 74 f6 ff callq 4c0bc0 0.00 : 559778: 39 c3 cmp %eax,%ebx 0.00 : 55977a: 0f 85 b2 0a 00 00 jne 55a232 : cstate->rel->rd_newRelfilenodeSubid != GetCurrentSubTransactionId()) : ereport(ERROR, : (ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE, : errmsg("cannot perform FREEZE because the table was not created or truncated in the current subtransaction"))); : : hi_options |= HEAP_INSERT_FROZEN; 0.00 : 559780: 83 8d 00 ff ff ff 04 orl $0x4,-0x100(%rbp) : /* : * We need a ResultRelInfo so we can use the regular executor's : * index-entry-making machinery. (There used to be a huge amount of code : * here that basically duplicated execUtils.c ...) : */ : resultRelInfo = makeNode(ResultRelInfo); 0.00 : 559787: 48 8b 3d d2 10 66 00 mov 0x6610d2(%rip),%rdi # bba860 0.00 : 55978e: be 80 00 00 00 mov $0x80,%esi 0.00 : 559793: e8 78 f6 23 00 callq 798e10 0.00 : 559798: 49 89 c5 mov %rax,%r13 0.00 : 55979b: c7 00 0e 00 00 00 movl $0xe,(%rax) : InitResultRelInfo(resultRelInfo, 0.00 : 5597a1: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 5597a8: 31 c9 xor %ecx,%ecx 0.00 : 5597aa: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5597af: 4c 89 ef mov %r13,%rdi 0.00 : 5597b2: 48 8b 70 28 mov 0x28(%rax),%rsi 0.00 : 5597b6: e8 e5 13 05 00 callq 5aaba0 : cstate->rel, : 1, /* dummy rangetable index */ : 0); : : ExecOpenIndices(resultRelInfo); 0.00 : 5597bb: 4c 89 ef mov %r13,%rdi 0.00 : 5597be: e8 cd b3 05 00 callq 5b4b90 : estate->es_result_relations = resultRelInfo; : estate->es_num_result_relations = 1; : estate->es_result_relation_info = resultRelInfo; : : /* Set up a tuple slot too */ : myslot = ExecInitExtraTupleSlot(estate); 0.00 : 5597c3: 4c 89 ff mov %r15,%rdi : 1, /* dummy rangetable index */ : 0); : : ExecOpenIndices(resultRelInfo); : : estate->es_result_relations = resultRelInfo; 0.00 : 5597c6: 4d 89 6f 38 mov %r13,0x38(%r15) : estate->es_num_result_relations = 1; 0.00 : 5597ca: 41 c7 47 40 01 00 00 movl $0x1,0x40(%r15) 0.00 : 5597d1: 00 : estate->es_result_relation_info = resultRelInfo; 0.00 : 5597d2: 4d 89 6f 48 mov %r13,0x48(%r15) : : /* Set up a tuple slot too */ : myslot = ExecInitExtraTupleSlot(estate); 0.00 : 5597d6: e8 75 b0 05 00 callq 5b4850 : ExecSetSlotDescriptor(myslot, tupDesc); 0.00 : 5597db: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi 0.00 : 5597e2: 48 89 c7 mov %rax,%rdi : estate->es_result_relations = resultRelInfo; : estate->es_num_result_relations = 1; : estate->es_result_relation_info = resultRelInfo; : : /* Set up a tuple slot too */ : myslot = ExecInitExtraTupleSlot(estate); 0.00 : 5597e5: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp) : ExecSetSlotDescriptor(myslot, tupDesc); 0.00 : 5597ec: e8 bf ad 05 00 callq 5b45b0 : /* Triggers might need a slot as well */ : estate->es_trig_tuple_slot = ExecInitExtraTupleSlot(estate); 0.00 : 5597f1: 4c 89 ff mov %r15,%rdi 0.00 : 5597f4: e8 57 b0 05 00 callq 5b4850 0.00 : 5597f9: 49 89 47 58 mov %rax,0x58(%r15) : * BEFORE/INSTEAD OF triggers, or we need to evaluate volatile default : * expressions. Such triggers or expressions might query the table we're : * inserting to, and act differently if the tuples that have already been : * processed and prepared for insertion are not there. : */ : if ((resultRelInfo->ri_TrigDesc != NULL && 0.00 : 5597fd: 49 8b 45 28 mov 0x28(%r13),%rax 0.00 : 559801: 48 85 c0 test %rax,%rax 0.00 : 559804: 0f 84 d6 01 00 00 je 5599e0 0.00 : 55980a: f7 40 0c ff 00 ff 00 testl $0xff00ff,0xc(%rax) 0.00 : 559811: 0f 84 c9 01 00 00 je 5599e0 : useHeapMultiInsert = false; : } : else : { : useHeapMultiInsert = true; : bufferedTuples = palloc(MAX_BUFFERED_TUPLES * sizeof(HeapTuple)); 0.00 : 559817: 48 c7 85 e0 fe ff ff movq $0x0,-0x120(%rbp) 0.00 : 55981e: 00 00 00 00 0.00 : 559822: c6 85 ef fe ff ff 00 movb $0x0,-0x111(%rbp) : } : : /* Prepare to catch AFTER triggers. */ : AfterTriggerBeginQuery(); 0.00 : 559829: e8 a2 8a 03 00 callq 5922d0 : * Check BEFORE STATEMENT insertion triggers. It's debatable whether we : * should do this for COPY, since it's not really an "INSERT" statement as : * such. However, executing these triggers maintains consistency with the : * EACH ROW triggers that we already fire on COPY. : */ : ExecBSInsertTriggers(estate, resultRelInfo); 0.00 : 55982e: 4c 89 ee mov %r13,%rsi 0.00 : 559831: 4c 89 ff mov %r15,%rdi 0.00 : 559834: e8 97 9d 03 00 callq 5935d0 : : values = (Datum *) palloc(tupDesc->natts * sizeof(Datum)); 0.00 : 559839: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi 0.00 : 559840: 48 63 3e movslq (%rsi),%rdi 0.00 : 559843: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 559847: e8 04 f5 23 00 callq 798d50 0.00 : 55984c: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : nulls = (bool *) palloc(tupDesc->natts * sizeof(bool)); 0.00 : 559853: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 55985a: 48 63 38 movslq (%rax),%rdi 0.00 : 55985d: e8 ee f4 23 00 callq 798d50 0.00 : 559862: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) : : bistate = GetBulkInsertState(); 0.00 : 559869: e8 b2 21 f4 ff callq 49ba20 0.00 : 55986e: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) : econtext = GetPerTupleExprContext(estate); 0.00 : 559875: 49 8b 97 c8 00 00 00 mov 0xc8(%r15),%rdx 0.00 : 55987c: 48 85 d2 test %rdx,%rdx 0.00 : 55987f: 48 89 95 10 ff ff ff mov %rdx,-0xf0(%rbp) 0.00 : 559886: 0f 84 b2 05 00 00 je 559e3e : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; : errcallback.previous = error_context_stack; 0.00 : 55988c: 48 8b 05 ad fd 65 00 mov 0x65fdad(%rip),%rax # bb9640 : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; 0.00 : 559893: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; 0.00 : 55989a: 45 31 f6 xor %r14d,%r14d : : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; 0.00 : 55989d: 48 c7 85 38 ff ff ff movq $0x556b00,-0xc8(%rbp) 0.00 : 5598a4: 00 6b 55 00 : errcallback.arg = (void *) cstate; : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; 0.00 : 5598a8: c7 85 d4 fe ff ff 00 movl $0x0,-0x12c(%rbp) 0.00 : 5598af: 00 00 00 0.00 : 5598b2: 48 c7 85 d8 fe ff ff movq $0x0,-0x128(%rbp) 0.00 : 5598b9: 00 00 00 00 0.00 : 5598bd: 48 c7 85 f0 fe ff ff movq $0x0,-0x110(%rbp) 0.00 : 5598c4: 00 00 00 00 : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; : errcallback.previous = error_context_stack; 0.00 : 5598c8: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : error_context_stack = &errcallback; 0.00 : 5598cf: 48 8d 85 30 ff ff ff lea -0xd0(%rbp),%rax : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; 0.00 : 5598d6: 48 89 b5 40 ff ff ff mov %rsi,-0xc0(%rbp) : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; 0.00 : 5598dd: 48 89 05 5c fd 65 00 mov %rax,0x65fd5c(%rip) # bb9640 0.00 : 5598e4: 0f 1f 40 00 nopl 0x0(%rax) : { : TupleTableSlot *slot; : bool skip_tuple; : Oid loaded_oid = InvalidOid; : : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2309 25.00 : 5598e8: 0f b6 05 a1 07 66 00 movzbl 0x6607a1(%rip),%eax # bba090 : : for (;;) : { : TupleTableSlot *slot; : bool skip_tuple; : Oid loaded_oid = InvalidOid; 0.00 : 5598ef: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : : CHECK_FOR_INTERRUPTS(); 0.00 : 5598f6: 84 c0 test %al,%al 0.00 : 5598f8: 0f 85 1a 01 00 00 jne 559a18 : : if (nBufferedTuples == 0) 0.00 : 5598fe: 45 85 f6 test %r14d,%r14d 0.00 : 559901: 75 19 jne 55991c : /* : * Reset the per-tuple exprcontext. We can only do this if the : * tuple buffer is empty. (Calling the context the per-tuple : * memory context is a bit of a misnomer now.) : */ : ResetPerTupleExprContext(estate); 0.00 : 559903: 49 8b 87 c8 00 00 00 mov 0xc8(%r15),%rax 0.00 : 55990a: 48 85 c0 test %rax,%rax 0.00 : 55990d: 0f 84 25 02 00 00 je 559b38 0.00 : 559913: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 559917: e8 94 f0 23 00 callq 7989b0 : } : : /* Switch into its memory context */ : MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 55991c: 49 8b 87 c8 00 00 00 mov 0xc8(%r15),%rax 0.00 : 559923: 48 85 c0 test %rax,%rax 0.00 : 559926: 0f 84 0c 02 00 00 je 559b38 0.00 : 55992c: 48 8b 40 28 mov 0x28(%rax),%rax : : if (!NextCopyFrom(cstate, econtext, values, nulls, &loaded_oid)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 25.00 : 559930: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 559937: 4c 8d 45 cc lea -0x34(%rbp),%r8 0.00 : 55993b: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : 559942: 48 8b b5 10 ff ff ff mov -0xf0(%rbp),%rsi 0.00 : 559949: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559950: 48 89 05 09 0f 66 00 mov %rax,0x660f09(%rip) # bba860 0.00 : 559957: e8 c4 c7 ff ff callq 556120 0.00 : 55995c: 84 c0 test %al,%al 0.00 : 55995e: 0f 84 e4 01 00 00 je 559b48 : break; : : /* And now we can form the input tuple. */ : tuple = heap_form_tuple(tupDesc, values, nulls); 0.00 : 559964: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 55996b: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 559972: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 559979: e8 e2 6c f1 ff callq 470660 : : if (loaded_oid != InvalidOid) 0.00 : 55997e: 8b 4d cc mov -0x34(%rbp),%ecx : : if (!NextCopyFrom(cstate, econtext, values, nulls, &loaded_oid)) : break; : : /* And now we can form the input tuple. */ : tuple = heap_form_tuple(tupDesc, values, nulls); 0.00 : 559981: 48 89 c3 mov %rax,%rbx : : if (loaded_oid != InvalidOid) 0.00 : 559984: 85 c9 test %ecx,%ecx 0.00 : 559986: 74 0c je 559994 : HeapTupleSetOid(tuple, loaded_oid); 0.00 : 559988: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 55998c: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 559990: 89 4c 02 fc mov %ecx,-0x4(%rdx,%rax,1) : : /* : * Constraints might reference the tableoid column, so initialize : * t_tableOid before evaluating them. : */ : tuple->t_tableOid = RelationGetRelid(resultRelInfo->ri_RelationDesc); 0.00 : 559994: 49 8b 45 08 mov 0x8(%r13),%rax : /* Triggers and stuff need to be invoked in query context. */ : MemoryContextSwitchTo(oldcontext); : : /* Place tuple in tuple slot --- but slot shouldn't free it */ : slot = myslot; : ExecStoreTuple(tuple, slot, InvalidBuffer, false); 0.00 : 559998: 31 c9 xor %ecx,%ecx 0.00 : 55999a: 31 d2 xor %edx,%edx 0.00 : 55999c: 48 89 df mov %rbx,%rdi : : /* : * Constraints might reference the tableoid column, so initialize : * t_tableOid before evaluating them. : */ : tuple->t_tableOid = RelationGetRelid(resultRelInfo->ri_RelationDesc); 0.00 : 55999f: 8b 40 40 mov 0x40(%rax),%eax 0.00 : 5599a2: 89 43 0c mov %eax,0xc(%rbx) 0.00 : 5599a5: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax : /* Triggers and stuff need to be invoked in query context. */ : MemoryContextSwitchTo(oldcontext); : : /* Place tuple in tuple slot --- but slot shouldn't free it */ : slot = myslot; : ExecStoreTuple(tuple, slot, InvalidBuffer, false); 0.00 : 5599ac: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : 5599b3: 48 89 05 a6 0e 66 00 mov %rax,0x660ea6(%rip) # bba860 0.00 : 5599ba: e8 c1 aa 05 00 callq 5b4480 : : skip_tuple = false; : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5599bf: 49 8b 45 28 mov 0x28(%r13),%rax 0.00 : 5599c3: 48 85 c0 test %rax,%rax 0.00 : 5599c6: 74 06 je 5599ce 0.00 : 5599c8: 80 78 0c 00 cmpb $0x0,0xc(%rax) 0.00 : 5599cc: 75 5a jne 559a28 : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); : : if (slot == NULL) /* "do nothing" */ : skip_tuple = true; : else /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5599ce: 4c 8b a5 c8 fe ff ff mov -0x138(%rbp),%r12 0.00 : 5599d5: eb 7a jmp 559a51 0.00 : 5599d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5599de: 00 00 : * BEFORE/INSTEAD OF triggers, or we need to evaluate volatile default : * expressions. Such triggers or expressions might query the table we're : * inserting to, and act differently if the tuples that have already been : * processed and prepared for insertion are not there. : */ : if ((resultRelInfo->ri_TrigDesc != NULL && 0.00 : 5599e0: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 5599e7: 80 ba 68 01 00 00 00 cmpb $0x0,0x168(%rdx) 0.00 : 5599ee: 0f 85 23 fe ff ff jne 559817 : useHeapMultiInsert = false; : } : else : { : useHeapMultiInsert = true; : bufferedTuples = palloc(MAX_BUFFERED_TUPLES * sizeof(HeapTuple)); 0.00 : 5599f4: bf 40 1f 00 00 mov $0x1f40,%edi 0.00 : 5599f9: e8 52 f3 23 00 callq 798d50 0.00 : 5599fe: c6 85 ef fe ff ff 01 movb $0x1,-0x111(%rbp) 0.00 : 559a05: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.00 : 559a0c: e9 18 fe ff ff jmpq 559829 0.00 : 559a11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : TupleTableSlot *slot; : bool skip_tuple; : Oid loaded_oid = InvalidOid; : : CHECK_FOR_INTERRUPTS(); 0.00 : 559a18: e8 83 28 14 00 callq 69c2a0 0.00 : 559a1d: e9 dc fe ff ff jmpq 5598fe 0.00 : 559a22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_insert_before_row) : { : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 559a28: 48 8b 95 c8 fe ff ff mov -0x138(%rbp),%rdx 0.00 : 559a2f: 4c 89 ee mov %r13,%rsi 0.00 : 559a32: 4c 89 ff mov %r15,%rdi 0.00 : 559a35: e8 06 9a 03 00 callq 593440 : : if (slot == NULL) /* "do nothing" */ 0.00 : 559a3a: 48 85 c0 test %rax,%rax : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_insert_before_row) : { : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 559a3d: 49 89 c4 mov %rax,%r12 : : if (slot == NULL) /* "do nothing" */ 0.00 : 559a40: 0f 84 a2 fe ff ff je 5598e8 : skip_tuple = true; : else /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); 0.00 : 559a46: 48 89 c7 mov %rax,%rdi 0.00 : 559a49: e8 b2 a5 05 00 callq 5b4000 0.00 : 559a4e: 48 89 c3 mov %rax,%rbx : } : : if (!skip_tuple) : { : /* Check the constraints of the tuple */ : if (cstate->rel->rd_att->constr) 0.00 : 559a51: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559a58: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559a5c: 48 8b 40 38 mov 0x38(%rax),%rax 0.00 : 559a60: 48 83 78 10 00 cmpq $0x0,0x10(%rax) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 25.00 : 559a65: 74 0e je 559a75 : ExecConstraints(resultRelInfo, slot, estate); 0.00 : 559a67: 4c 89 fa mov %r15,%rdx 0.00 : 559a6a: 4c 89 e6 mov %r12,%rsi 0.00 : 559a6d: 4c 89 ef mov %r13,%rdi 0.00 : 559a70: e8 3b 0e 05 00 callq 5aa8b0 : : if (useHeapMultiInsert) 0.00 : 559a75: 80 bd ef fe ff ff 00 cmpb $0x0,-0x111(%rbp) 0.00 : 559a7c: 0f 84 fe 01 00 00 je 559c80 : { : /* Add this tuple to the tuple buffer */ : if (nBufferedTuples == 0) 0.00 : 559a82: 45 85 f6 test %r14d,%r14d 0.00 : 559a85: 75 13 jne 559a9a : firstBufferedLineNo = cstate->cur_lineno; 0.00 : 559a87: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 559a8e: 8b b6 d8 00 00 00 mov 0xd8(%rsi),%esi 0.00 : 559a94: 89 b5 d4 fe ff ff mov %esi,-0x12c(%rbp) : bufferedTuples[nBufferedTuples++] = tuple; 0.00 : 559a9a: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 559aa1: 49 63 c6 movslq %r14d,%rax 0.00 : 559aa4: 41 83 c6 01 add $0x1,%r14d 0.00 : 559aa8: 48 89 1c c2 mov %rbx,(%rdx,%rax,8) : bufferedTuplesSize += tuple->t_len; 0.00 : 559aac: 8b 03 mov (%rbx),%eax 0.00 : 559aae: 48 01 85 d8 fe ff ff add %rax,-0x128(%rbp) : * If the buffer filled up, flush it. Also flush if the total : * size of all the tuples in the buffer becomes large, to : * avoid using large amounts of memory for the buffers when : * the tuples are exceptionally wide. : */ : if (nBufferedTuples == MAX_BUFFERED_TUPLES || 0.00 : 559ab5: 41 81 fe e8 03 00 00 cmp $0x3e8,%r14d 0.00 : 559abc: 74 0d je 559acb 0.00 : 559abe: 48 81 bd d8 fe ff ff cmpq $0xffff,-0x128(%rbp) 0.00 : 559ac5: ff ff 00 00 0.00 : 559ac9: 76 59 jbe 559b24 : bufferedTuplesSize > 65535) : { : CopyFromInsertBatch(cstate, estate, mycid, hi_options, 0.00 : 559acb: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 559ad2: 8b b5 d4 fe ff ff mov -0x12c(%rbp),%esi 0.00 : 559ad8: 4d 89 e8 mov %r13,%r8 0.00 : 559adb: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 559ae2: 4c 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9 0.00 : 559ae9: 8b 8d 00 ff ff ff mov -0x100(%rbp),%ecx 0.00 : 559aef: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559af6: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 559afa: 8b 95 04 ff ff ff mov -0xfc(%rbp),%edx 0.00 : 559b00: 89 74 24 18 mov %esi,0x18(%rsp) 0.00 : 559b04: 4c 89 fe mov %r15,%rsi 0.00 : 559b07: 44 89 74 24 08 mov %r14d,0x8(%rsp) 0.00 : 559b0c: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 559b11: 45 31 f6 xor %r14d,%r14d 0.00 : 559b14: e8 d7 ed ff ff callq 5588f0 0.00 : 559b19: 48 c7 85 d8 fe ff ff movq $0x0,-0x128(%rbp) 0.00 : 559b20: 00 00 00 00 : /* : * We count only tuples not suppressed by a BEFORE INSERT trigger; : * this is the same definition used by execMain.c for counting : * tuples inserted by an INSERT command. : */ : processed++; 0.00 : 559b24: 48 83 85 f0 fe ff ff addq $0x1,-0x110(%rbp) 0.00 : 559b2b: 01 0.00 : 559b2c: e9 b7 fd ff ff jmpq 5598e8 0.00 : 559b31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : ResetPerTupleExprContext(estate); : } : : /* Switch into its memory context */ : MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 559b38: 4c 89 ff mov %r15,%rdi 0.00 : 559b3b: e8 70 ba 05 00 callq 5b55b0 0.00 : 559b40: e9 e7 fd ff ff jmpq 55992c 0.00 : 559b45: 0f 1f 00 nopl (%rax) : processed++; : } : } : : /* Flush any remaining buffered tuples */ : if (nBufferedTuples > 0) 0.00 : 559b48: 45 85 f6 test %r14d,%r14d 0.00 : 559b4b: 7e 4b jle 559b98 : CopyFromInsertBatch(cstate, estate, mycid, hi_options, 0.00 : 559b4d: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 559b54: 48 8b b5 f8 fe ff ff mov -0x108(%rbp),%rsi 0.00 : 559b5b: 4d 89 e8 mov %r13,%r8 0.00 : 559b5e: 8b 85 d4 fe ff ff mov -0x12c(%rbp),%eax 0.00 : 559b64: 4c 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9 0.00 : 559b6b: 8b 8d 00 ff ff ff mov -0x100(%rbp),%ecx 0.00 : 559b71: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559b78: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 559b7d: 8b 95 04 ff ff ff mov -0xfc(%rbp),%edx 0.00 : 559b83: 48 89 34 24 mov %rsi,(%rsp) 0.00 : 559b87: 4c 89 fe mov %r15,%rsi 0.00 : 559b8a: 89 44 24 18 mov %eax,0x18(%rsp) 0.00 : 559b8e: 44 89 74 24 08 mov %r14d,0x8(%rsp) 0.00 : 559b93: e8 58 ed ff ff callq 5588f0 : resultRelInfo, myslot, bistate, : nBufferedTuples, bufferedTuples, : firstBufferedLineNo); : : /* Done, clean up */ : error_context_stack = errcallback.previous; 0.00 : 559b98: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax : : FreeBulkInsertState(bistate); 0.00 : 559b9f: 48 8b bd f8 fe ff ff mov -0x108(%rbp),%rdi : resultRelInfo, myslot, bistate, : nBufferedTuples, bufferedTuples, : firstBufferedLineNo); : : /* Done, clean up */ : error_context_stack = errcallback.previous; 0.00 : 559ba6: 48 89 05 93 fa 65 00 mov %rax,0x65fa93(%rip) # bb9640 : : FreeBulkInsertState(bistate); 0.00 : 559bad: e8 3e 1e f4 ff callq 49b9f0 0.00 : 559bb2: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax : : MemoryContextSwitchTo(oldcontext); : : /* Execute AFTER STATEMENT insertion triggers */ : ExecASInsertTriggers(estate, resultRelInfo); 0.00 : 559bb9: 4c 89 ee mov %r13,%rsi 0.00 : 559bbc: 4c 89 ff mov %r15,%rdi 0.00 : 559bbf: 48 89 05 9a 0c 66 00 mov %rax,0x660c9a(%rip) # bba860 0.00 : 559bc6: e8 15 91 03 00 callq 592ce0 : : /* Handle queued AFTER triggers */ : AfterTriggerEndQuery(estate); 0.00 : 559bcb: 4c 89 ff mov %r15,%rdi 0.00 : 559bce: e8 4d 84 03 00 callq 592020 : : pfree(values); 0.00 : 559bd3: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi 0.00 : 559bda: e8 a1 ef 23 00 callq 798b80 : pfree(nulls); 0.00 : 559bdf: 48 8b bd 18 ff ff ff mov -0xe8(%rbp),%rdi 0.00 : 559be6: e8 95 ef 23 00 callq 798b80 : : ExecResetTupleTable(estate->es_tupleTable, false); 0.00 : 559beb: 49 8b bf 88 00 00 00 mov 0x88(%r15),%rdi 0.00 : 559bf2: 31 f6 xor %esi,%esi 0.00 : 559bf4: e8 47 aa 05 00 callq 5b4640 : : ExecCloseIndices(resultRelInfo); 0.00 : 559bf9: 4c 89 ef mov %r13,%rdi 0.00 : 559bfc: e8 3f af 05 00 callq 5b4b40 : : FreeExecutorState(estate); 0.00 : 559c01: 4c 89 ff mov %r15,%rdi 0.00 : 559c04: e8 07 b6 05 00 callq 5b5210 : : /* : * If we skipped writing WAL, then we need to sync the heap (but not : * indexes since those use WAL anyway) : */ : if (hi_options & HEAP_INSERT_SKIP_WAL) 0.00 : 559c09: f6 85 00 ff ff ff 01 testb $0x1,-0x100(%rbp) 0.00 : 559c10: 74 10 je 559c22 : heap_sync(cstate->rel); 0.00 : 559c12: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559c19: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.00 : 559c1d: e8 ee 3f f4 ff callq 49dc10 : if (XactReadOnly && !rel->rd_islocaltemp) : PreventCommandIfReadOnly("COPY FROM"); : : cstate = BeginCopyFrom(rel, stmt->filename, stmt->is_program, : stmt->attlist, stmt->options); : *processed = CopyFrom(cstate); /* copy from file to database */ 0.00 : 559c22: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : 559c29: 48 8b b5 98 fe ff ff mov -0x168(%rbp),%rsi 0.00 : 559c30: 48 89 06 mov %rax,(%rsi) : void : EndCopyFrom(CopyState cstate) : { : /* No COPY FROM related resources except memory. */ : : EndCopy(cstate); 0.00 : 559c33: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559c3a: e8 11 ae ff ff callq 554a50 : /* : * Close the relation. If reading, we can release the AccessShareLock we : * got; if writing, we should hold the lock until end of transaction to : * ensure that updates will be committed before lock is released. : */ : if (rel != NULL) 0.00 : 559c3f: 48 83 bd b0 fe ff ff cmpq $0x0,-0x150(%rbp) 0.00 : 559c46: 00 0.00 : 559c47: 74 19 je 559c62 : heap_close(rel, (is_from ? NoLock : AccessShareLock)); 0.00 : 559c49: 31 f6 xor %esi,%esi 0.00 : 559c4b: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) 0.00 : 559c52: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 559c59: 40 0f 94 c6 sete %sil 0.00 : 559c5d: e8 5e 3d f4 ff callq 49d9c0 : : return relid; : } 0.00 : 559c62: 8b 85 bc fe ff ff mov -0x144(%rbp),%eax 0.00 : 559c68: 48 81 c4 68 01 00 00 add $0x168,%rsp 0.00 : 559c6f: 5b pop %rbx 0.00 : 559c70: 41 5c pop %r12 0.00 : 559c72: 41 5d pop %r13 0.00 : 559c74: 41 5e pop %r14 0.00 : 559c76: 41 5f pop %r15 0.00 : 559c78: c9 leaveq 0.00 : 559c79: c3 retq 0.00 : 559c7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : { : List *recheckIndexes = NIL; : : /* OK, store the tuple and create index entries for it */ : heap_insert(cstate->rel, tuple, mycid, hi_options, bistate); 0.00 : 559c80: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 559c87: 4c 8b 85 f8 fe ff ff mov -0x108(%rbp),%r8 0.00 : 559c8e: 8b 8d 00 ff ff ff mov -0x100(%rbp),%ecx 0.00 : 559c94: 8b 95 04 ff ff ff mov -0xfc(%rbp),%edx 0.00 : 559c9a: 48 8b 7e 28 mov 0x28(%rsi),%rdi 0.00 : 559c9e: 48 89 de mov %rbx,%rsi 0.00 : 559ca1: e8 9a 18 f4 ff callq 49b540 : : if (resultRelInfo->ri_NumIndices > 0) 0.00 : 559ca6: 48 c7 85 c0 fe ff ff movq $0x0,-0x140(%rbp) 0.00 : 559cad: 00 00 00 00 0.00 : 559cb1: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 559cb5: 85 c0 test %eax,%eax 0.00 : 559cb7: 7e 16 jle 559ccf : recheckIndexes = ExecInsertIndexTuples(slot, &(tuple->t_self), 0.00 : 559cb9: 48 8d 73 04 lea 0x4(%rbx),%rsi 0.00 : 559cbd: 4c 89 fa mov %r15,%rdx 0.00 : 559cc0: 4c 89 e7 mov %r12,%rdi 0.00 : 559cc3: e8 28 be 05 00 callq 5b5af0 0.00 : 559cc8: 48 89 85 c0 fe ff ff mov %rax,-0x140(%rbp) : estate); : : /* AFTER ROW INSERT Triggers */ : ExecARInsertTriggers(estate, resultRelInfo, tuple, 0.00 : 559ccf: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : 559cd6: 4c 89 ff mov %r15,%rdi 0.00 : 559cd9: 48 89 da mov %rbx,%rdx 0.00 : 559cdc: 4c 89 ee mov %r13,%rsi 0.00 : 559cdf: e8 ac 8f 03 00 callq 592c90 : recheckIndexes); : : list_free(recheckIndexes); 0.00 : 559ce4: 48 8b bd c0 fe ff ff mov -0x140(%rbp),%rdi 0.00 : 559ceb: e8 60 84 08 00 callq 5e2150 0.00 : 559cf0: e9 2f fe ff ff jmpq 559b24 : cstate->filename = pstrdup(filename); : cstate->is_program = is_program; : : if (is_program) : { : cstate->copy_file = OpenPipeStream(cstate->filename, PG_BINARY_W); 0.00 : 559cf5: be 67 55 88 00 mov $0x885567,%esi 0.00 : 559cfa: 48 89 c7 mov %rax,%rdi 0.00 : 559cfd: e8 7e f3 11 00 callq 679080 : if (cstate->copy_file == NULL) 0.00 : 559d02: 48 85 c0 test %rax,%rax : cstate->filename = pstrdup(filename); : cstate->is_program = is_program; : : if (is_program) : { : cstate->copy_file = OpenPipeStream(cstate->filename, PG_BINARY_W); 0.00 : 559d05: 49 89 44 24 08 mov %rax,0x8(%r12) : if (cstate->copy_file == NULL) 0.00 : 559d0a: 0f 85 c7 f8 ff ff jne 5595d7 : ereport(ERROR, 0.00 : 559d10: 45 31 c0 xor %r8d,%r8d 0.00 : 559d13: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 559d18: ba 7a 06 00 00 mov $0x67a,%edx 0.00 : 559d1d: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559d22: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559d27: e8 94 0d 22 00 callq 77aac0 0.00 : 559d2c: 84 c0 test %al,%al 0.00 : 559d2e: 0f 84 a6 f4 ff ff je 5591da 0.00 : 559d34: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 559d39: bf 60 94 87 00 mov $0x879460,%edi 0.00 : 559d3e: 31 c0 xor %eax,%eax 0.00 : 559d40: e8 5b 2b 22 00 callq 77c8a0 0.00 : 559d45: 89 c7 mov %eax,%edi 0.00 : 559d47: 31 c0 xor %eax,%eax 0.00 : 559d49: e8 92 08 22 00 callq 77a5e0 0.00 : 559d4e: e9 87 f4 ff ff jmpq 5591da 0.00 : 559d53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : CopyState cstate; : bool pipe = (filename == NULL); : MemoryContext oldcontext; : : if (rel != NULL && rel->rd_rel->relkind != RELKIND_RELATION) 0.00 : 559d58: 48 83 bd b0 fe ff ff cmpq $0x0,-0x150(%rbp) 0.00 : 559d5f: 00 : *processed = CopyFrom(cstate); /* copy from file to database */ : EndCopyFrom(cstate); : } : else : { : cstate = BeginCopyTo(rel, query, queryString, 0.00 : 559d60: 4d 8b 4e 30 mov 0x30(%r14),%r9 0.00 : 559d64: 49 8b 4e 18 mov 0x18(%r14),%rcx 0.00 : 559d68: 45 0f b6 6e 21 movzbl 0x21(%r14),%r13d 0.00 : 559d6d: 49 8b 5e 28 mov 0x28(%r14),%rbx : { : CopyState cstate; : bool pipe = (filename == NULL); : MemoryContext oldcontext; : : if (rel != NULL && rel->rd_rel->relkind != RELKIND_RELATION) 0.00 : 559d71: 0f 84 a4 f7 ff ff je 55951b 0.00 : 559d77: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559d7e: 48 8b 46 30 mov 0x30(%rsi),%rax 0.00 : 559d82: 0f b6 40 6f movzbl 0x6f(%rax),%eax 0.00 : 559d86: 3c 72 cmp $0x72,%al 0.00 : 559d88: 0f 84 8d f7 ff ff je 55951b : { : if (rel->rd_rel->relkind == RELKIND_VIEW) 0.00 : 559d8e: 3c 76 cmp $0x76,%al 0.00 : 559d90: 0f 84 71 03 00 00 je 55a107 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_MATVIEW) 0.00 : 559d96: 3c 6d cmp $0x6d,%al 0.00 : 559d98: 0f 84 13 03 00 00 je 55a0b1 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from materialized view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) 0.00 : 559d9e: 3c 66 cmp $0x66,%al 0.00 : 559da0: 0f 84 b5 02 00 00 je 55a05b : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from foreign table \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_SEQUENCE) 0.00 : 559da6: 3c 53 cmp $0x53,%al 0.00 : 559da8: 0f 85 66 02 00 00 jne 55a014 : ereport(ERROR, 0.00 : 559dae: 45 31 c0 xor %r8d,%r8d 0.00 : 559db1: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 559db6: ba 5e 06 00 00 mov $0x65e,%edx 0.00 : 559dbb: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559dc0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559dc5: e8 f6 0c 22 00 callq 77aac0 0.00 : 559dca: 84 c0 test %al,%al 0.00 : 559dcc: 0f 84 08 f4 ff ff je 5591da 0.00 : 559dd2: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 559dd9: bf 50 98 87 00 mov $0x879850,%edi 0.00 : 559dde: 31 c0 xor %eax,%eax 0.00 : 559de0: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : 559de4: e8 b7 2a 22 00 callq 77c8a0 0.00 : 559de9: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559dee: 89 c3 mov %eax,%ebx 0.00 : 559df0: e9 07 f6 ff ff jmpq 5593fc : oldcontext = MemoryContextSwitchTo(cstate->copycontext); : : if (pipe) : { : Assert(!is_program); /* the grammar does not allow this */ : if (whereToSendOutput != DestRemote) 0.00 : 559df5: 83 3d ac e9 60 00 02 cmpl $0x2,0x60e9ac(%rip) # b687a8 0.00 : 559dfc: 0f 84 d5 f7 ff ff je 5595d7 : cstate->copy_file = stdout; 0.00 : 559e02: 48 8b 05 67 8c 61 00 mov 0x618c67(%rip),%rax # b72a70 0.00 : 559e09: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 559e0e: e9 c4 f7 ff ff jmpq 5595d7 : : /* Build target list */ : cr = makeNode(ColumnRef); : : if (!stmt->attlist) : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 559e13: 48 8b 3d 46 0a 66 00 mov 0x660a46(%rip),%rdi # bba860 0.00 : 559e1a: be 04 00 00 00 mov $0x4,%esi 0.00 : 559e1f: e8 fc f1 23 00 callq 799020 0.00 : 559e24: 31 f6 xor %esi,%esi 0.00 : 559e26: 48 89 c7 mov %rax,%rdi 0.00 : 559e29: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 559e2f: e8 1c 7a 08 00 callq 5e1850 0.00 : 559e34: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 559e39: e9 13 f6 ff ff jmpq 559451 : : values = (Datum *) palloc(tupDesc->natts * sizeof(Datum)); : nulls = (bool *) palloc(tupDesc->natts * sizeof(bool)); : : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2295 25.00 : 559e3e: 4c 89 ff mov %r15,%rdi 0.00 : 559e41: e8 6a b7 05 00 callq 5b55b0 0.00 : 559e46: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 559e4d: e9 3a fa ff ff jmpq 55988c : (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), : errmsg("must be superuser to COPY to or from an external program"), : errhint("Anyone can COPY to stdout or from stdin. " : "psql's \\copy command also works for anyone."))); : else : ereport(ERROR, 0.00 : 559e52: 45 31 c0 xor %r8d,%r8d 0.00 : 559e55: b9 e3 9d 87 00 mov $0x879de3,%ecx 0.00 : 559e5a: ba 25 03 00 00 mov $0x325,%edx 0.00 : 559e5f: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559e64: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559e69: e8 52 0c 22 00 callq 77aac0 0.00 : 559e6e: 84 c0 test %al,%al 0.00 : 559e70: 0f 84 64 f3 ff ff je 5591da 0.00 : 559e76: bf 98 95 87 00 mov $0x879598,%edi 0.00 : 559e7b: 31 c0 xor %eax,%eax 0.00 : 559e7d: e8 1e 1e 22 00 callq 77bca0 0.00 : 559e82: bf 30 96 87 00 mov $0x879630,%edi 0.00 : 559e87: 41 89 c4 mov %eax,%r12d 0.00 : 559e8a: 31 c0 xor %eax,%eax 0.00 : 559e8c: e8 0f 2a 22 00 callq 77c8a0 0.00 : 559e91: bf 84 50 00 01 mov $0x1005084,%edi 0.00 : 559e96: 89 c3 mov %eax,%ebx 0.00 : 559e98: e9 75 f8 ff ff jmpq 559712 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to sequence \"%s\"", : RelationGetRelationName(cstate->rel)))); : else : ereport(ERROR, 0.00 : 559e9d: 45 31 c0 xor %r8d,%r8d 0.00 : 559ea0: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559ea5: ba 72 08 00 00 mov $0x872,%edx 0.00 : 559eaa: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559eaf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559eb4: e8 07 0c 22 00 callq 77aac0 0.00 : 559eb9: 84 c0 test %al,%al 0.00 : 559ebb: 0f 84 19 f3 ff ff je 5591da 0.00 : 559ec1: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559ec8: bf 08 97 87 00 mov $0x879708,%edi 0.00 : 559ecd: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559ed1: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559ed5: 31 c0 xor %eax,%eax 0.00 : 559ed7: e8 c4 29 22 00 callq 77c8a0 0.00 : 559edc: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559ee1: 89 c3 mov %eax,%ebx 0.00 : 559ee3: e9 14 f5 ff ff jmpq 5593fc : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to materialized view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) : ereport(ERROR, 0.00 : 559ee8: 45 31 c0 xor %r8d,%r8d 0.00 : 559eeb: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559ef0: ba 68 08 00 00 mov $0x868,%edx 0.00 : 559ef5: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559efa: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559eff: e8 bc 0b 22 00 callq 77aac0 0.00 : 559f04: 84 c0 test %al,%al 0.00 : 559f06: 0f 84 ce f2 ff ff je 5591da 0.00 : 559f0c: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559f13: bf e0 96 87 00 mov $0x8796e0,%edi 0.00 : 559f18: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559f1c: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559f20: 31 c0 xor %eax,%eax 0.00 : 559f22: e8 79 29 22 00 callq 77c8a0 0.00 : 559f27: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559f2c: 89 c3 mov %eax,%ebx 0.00 : 559f2e: e9 c9 f4 ff ff jmpq 5593fc : Assert(cstate->rel); : : if (cstate->rel->rd_rel->relkind != RELKIND_RELATION) : { : if (cstate->rel->rd_rel->relkind == RELKIND_VIEW) : ereport(ERROR, 0.00 : 559f33: 45 31 c0 xor %r8d,%r8d 0.00 : 559f36: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559f3b: ba 5e 08 00 00 mov $0x85e,%edx 0.00 : 559f40: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559f45: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559f4a: e8 71 0b 22 00 callq 77aac0 0.00 : 559f4f: 84 c0 test %al,%al 0.00 : 559f51: 0f 84 83 f2 ff ff je 5591da 0.00 : 559f57: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559f5e: bf df 8a 87 00 mov $0x878adf,%edi 0.00 : 559f63: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559f67: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559f6b: 31 c0 xor %eax,%eax 0.00 : 559f6d: e8 2e 29 22 00 callq 77c8a0 0.00 : 559f72: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559f77: 89 c3 mov %eax,%ebx 0.00 : 559f79: e9 7e f4 ff ff jmpq 5593fc : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_MATVIEW) : ereport(ERROR, 0.00 : 559f7e: 45 31 c0 xor %r8d,%r8d 0.00 : 559f81: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559f86: ba 63 08 00 00 mov $0x863,%edx 0.00 : 559f8b: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559f90: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559f95: e8 26 0b 22 00 callq 77aac0 0.00 : 559f9a: 84 c0 test %al,%al 0.00 : 559f9c: 0f 84 38 f2 ff ff je 5591da 0.00 : 559fa2: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 559fa9: bf b8 96 87 00 mov $0x8796b8,%edi 0.00 : 559fae: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 559fb2: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559fb6: 31 c0 xor %eax,%eax 0.00 : 559fb8: e8 e3 28 22 00 callq 77c8a0 0.00 : 559fbd: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559fc2: 89 c3 mov %eax,%ebx 0.00 : 559fc4: e9 33 f4 ff ff jmpq 5593fc : ColumnRef *cr; : ResTarget *target; : RangeVar *from; : : if (is_from) : ereport(ERROR, 0.00 : 559fc9: 45 31 c0 xor %r8d,%r8d 0.00 : 559fcc: b9 e3 9d 87 00 mov $0x879de3,%ecx 0.00 : 559fd1: ba 65 03 00 00 mov $0x365,%edx 0.00 : 559fd6: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559fdb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559fe0: e8 db 0a 22 00 callq 77aac0 0.00 : 559fe5: 84 c0 test %al,%al 0.00 : 559fe7: 0f 84 ed f1 ff ff je 5591da 0.00 : 559fed: bf 60 96 87 00 mov $0x879660,%edi 0.00 : 559ff2: 31 c0 xor %eax,%eax 0.00 : 559ff4: e8 a7 1c 22 00 callq 77bca0 0.00 : 559ff9: bf 88 96 87 00 mov $0x879688,%edi 0.00 : 559ffe: 41 89 c4 mov %eax,%r12d 0.00 : 55a001: 31 c0 xor %eax,%eax 0.00 : 55a003: e8 98 28 22 00 callq 77c8a0 0.00 : 55a008: bf 40 04 00 00 mov $0x440,%edi 0.00 : 55a00d: 89 c3 mov %eax,%ebx 0.00 : 55a00f: e9 fe f6 ff ff jmpq 559712 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from sequence \"%s\"", : RelationGetRelationName(rel)))); : else : ereport(ERROR, 0.00 : 55a014: 45 31 c0 xor %r8d,%r8d 0.00 : 55a017: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a01c: ba 63 06 00 00 mov $0x663,%edx 0.00 : 55a021: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a026: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a02b: e8 90 0a 22 00 callq 77aac0 0.00 : 55a030: 84 c0 test %al,%al 0.00 : 55a032: 0f 84 a2 f1 ff ff je 5591da 0.00 : 55a038: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55a03f: bf 70 98 87 00 mov $0x879870,%edi 0.00 : 55a044: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 55a048: 31 c0 xor %eax,%eax 0.00 : 55a04a: e8 51 28 22 00 callq 77c8a0 0.00 : 55a04f: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a054: 89 c3 mov %eax,%ebx 0.00 : 55a056: e9 a1 f3 ff ff jmpq 5593fc : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from materialized view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) : ereport(ERROR, 0.00 : 55a05b: 45 31 c0 xor %r8d,%r8d 0.00 : 55a05e: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a063: ba 59 06 00 00 mov $0x659,%edx 0.00 : 55a068: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a06d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a072: e8 49 0a 22 00 callq 77aac0 0.00 : 55a077: 84 c0 test %al,%al 0.00 : 55a079: 0f 84 5b f1 ff ff je 5591da 0.00 : 55a07f: bf d8 97 87 00 mov $0x8797d8,%edi 0.00 : 55a084: 31 c0 xor %eax,%eax 0.00 : 55a086: e8 15 1c 22 00 callq 77bca0 0.00 : 55a08b: 41 89 c4 mov %eax,%r12d 0.00 : 55a08e: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55a095: bf 28 98 87 00 mov $0x879828,%edi 0.00 : 55a09a: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 55a09e: 31 c0 xor %eax,%eax 0.00 : 55a0a0: e8 fb 27 22 00 callq 77c8a0 0.00 : 55a0a5: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a0aa: 89 c3 mov %eax,%ebx 0.00 : 55a0ac: e9 61 f6 ff ff jmpq 559712 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_MATVIEW) : ereport(ERROR, 0.00 : 55a0b1: 45 31 c0 xor %r8d,%r8d 0.00 : 55a0b4: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a0b9: ba 53 06 00 00 mov $0x653,%edx 0.00 : 55a0be: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a0c3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a0c8: e8 f3 09 22 00 callq 77aac0 0.00 : 55a0cd: 84 c0 test %al,%al 0.00 : 55a0cf: 0f 84 05 f1 ff ff je 5591da 0.00 : 55a0d5: bf d8 97 87 00 mov $0x8797d8,%edi 0.00 : 55a0da: 31 c0 xor %eax,%eax 0.00 : 55a0dc: e8 bf 1b 22 00 callq 77bca0 0.00 : 55a0e1: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 55a0e8: bf 00 98 87 00 mov $0x879800,%edi 0.00 : 55a0ed: 41 89 c4 mov %eax,%r12d 0.00 : 55a0f0: 31 c0 xor %eax,%eax 0.00 : 55a0f2: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : 55a0f6: e8 a5 27 22 00 callq 77c8a0 0.00 : 55a0fb: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a100: 89 c3 mov %eax,%ebx 0.00 : 55a102: e9 0b f6 ff ff jmpq 559712 : MemoryContext oldcontext; : : if (rel != NULL && rel->rd_rel->relkind != RELKIND_RELATION) : { : if (rel->rd_rel->relkind == RELKIND_VIEW) : ereport(ERROR, 0.00 : 55a107: 45 31 c0 xor %r8d,%r8d 0.00 : 55a10a: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a10f: ba 4d 06 00 00 mov $0x64d,%edx 0.00 : 55a114: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a119: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a11e: e8 9d 09 22 00 callq 77aac0 0.00 : 55a123: 84 c0 test %al,%al 0.00 : 55a125: 0f 84 af f0 ff ff je 5591da 0.00 : 55a12b: bf d8 97 87 00 mov $0x8797d8,%edi 0.00 : 55a130: 31 c0 xor %eax,%eax 0.00 : 55a132: e8 69 1b 22 00 callq 77bca0 0.00 : 55a137: 41 89 c4 mov %eax,%r12d 0.00 : 55a13a: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55a141: bf 15 8b 87 00 mov $0x878b15,%edi 0.00 : 55a146: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 55a14a: 31 c0 xor %eax,%eax 0.00 : 55a14c: e8 4f 27 22 00 callq 77c8a0 0.00 : 55a151: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a156: 89 c3 mov %eax,%ebx 0.00 : 55a158: e9 b5 f5 ff ff jmpq 559712 : /* : * Prevent write to relative path ... too easy to shoot oneself in : * the foot by overwriting a database file ... : */ : if (!is_absolute_path(filename)) : ereport(ERROR, 0.00 : 55a15d: 45 31 c0 xor %r8d,%r8d 0.00 : 55a160: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a165: ba 88 06 00 00 mov $0x688,%edx 0.00 : 55a16a: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a16f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a174: e8 47 09 22 00 callq 77aac0 0.00 : 55a179: 84 c0 test %al,%al 0.00 : 55a17b: 0f 84 59 f0 ff ff je 5591da 0.00 : 55a181: bf a0 98 87 00 mov $0x8798a0,%edi 0.00 : 55a186: 31 c0 xor %eax,%eax 0.00 : 55a188: e8 13 27 22 00 callq 77c8a0 0.00 : 55a18d: bf 84 60 00 02 mov $0x2006084,%edi 0.00 : 55a192: 89 c3 mov %eax,%ebx 0.00 : 55a194: e9 63 f2 ff ff jmpq 5593fc 0.00 : 55a199: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); : if (S_ISDIR(st.st_mode)) : ereport(ERROR, 0.00 : 55a1a0: 45 31 c0 xor %r8d,%r8d 0.00 : 55a1a3: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a1a8: ba 97 06 00 00 mov $0x697,%edx 0.00 : 55a1ad: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a1b2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a1b7: e8 04 09 22 00 callq 77aac0 0.00 : 55a1bc: 84 c0 test %al,%al 0.00 : 55a1be: 0f 84 16 f0 ff ff je 5591da 0.00 : 55a1c4: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 55a1c9: bf b6 8a 87 00 mov $0x878ab6,%edi 0.00 : 55a1ce: 31 c0 xor %eax,%eax 0.00 : 55a1d0: e8 cb 26 22 00 callq 77c8a0 0.00 : 55a1d5: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a1da: 89 c3 mov %eax,%ebx 0.00 : 55a1dc: e9 1b f2 ff ff jmpq 5593fc 0.00 : 55a1e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : oumask = umask(S_IWGRP | S_IWOTH); : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); : umask(oumask); : if (cstate->copy_file == NULL) : ereport(ERROR, 0.00 : 55a1e8: 45 31 c0 xor %r8d,%r8d 0.00 : 55a1eb: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a1f0: ba 91 06 00 00 mov $0x691,%edx 0.00 : 55a1f5: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a1fa: 40 b7 14 mov $0x14,%dil 0.00 : 55a1fd: e8 be 08 22 00 callq 77aac0 0.00 : 55a202: 84 c0 test %al,%al 0.00 : 55a204: 0f 84 d0 ef ff ff je 5591da 0.00 : 55a20a: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 55a20f: bf d0 98 87 00 mov $0x8798d0,%edi 0.00 : 55a214: 31 c0 xor %eax,%eax 0.00 : 55a216: e8 85 26 22 00 callq 77c8a0 0.00 : 55a21b: 89 c3 mov %eax,%ebx 0.00 : 55a21d: e8 ce 28 22 00 callq 77caf0 0.00 : 55a222: 89 de mov %ebx,%esi 0.00 : 55a224: 89 c7 mov %eax,%edi 0.00 : 55a226: 31 c0 xor %eax,%eax 0.00 : 55a228: e8 b3 03 22 00 callq 77a5e0 0.00 : 55a22d: e9 a8 ef ff ff jmpq 5591da : (ERRCODE_INVALID_TRANSACTION_STATE, : errmsg("cannot perform FREEZE because of prior transaction activity"))); : : if (cstate->rel->rd_createSubid != GetCurrentSubTransactionId() && : cstate->rel->rd_newRelfilenodeSubid != GetCurrentSubTransactionId()) : ereport(ERROR, 0.00 : 55a232: 45 31 c0 xor %r8d,%r8d 0.00 : 55a235: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 55a23a: ba b6 08 00 00 mov $0x8b6,%edx 0.00 : 55a23f: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a244: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a249: e8 72 08 22 00 callq 77aac0 0.00 : 55a24e: 84 c0 test %al,%al 0.00 : 55a250: 0f 84 84 ef ff ff je 5591da 0.00 : 55a256: bf 70 97 87 00 mov $0x879770,%edi 0.00 : 55a25b: 31 c0 xor %eax,%eax 0.00 : 55a25d: e8 3e 26 22 00 callq 77c8a0 0.00 : 55a262: bf 45 01 00 00 mov $0x145,%edi 0.00 : 55a267: 89 c6 mov %eax,%esi 0.00 : 55a269: 31 c0 xor %eax,%eax 0.00 : 55a26b: e8 70 03 22 00 callq 77a5e0 0.00 : 55a270: e9 65 ef ff ff jmpq 5591da Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execMain.c:1609 33.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execMain.c:1609 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005aa8b0 : : } : : void : ExecConstraints(ResultRelInfo *resultRelInfo, : TupleTableSlot *slot, EState *estate) : { 0.00 : 5aa8b0: 55 push %rbp 0.00 : 5aa8b1: 48 89 e5 mov %rsp,%rbp 0.00 : 5aa8b4: 41 57 push %r15 0.00 : 5aa8b6: 41 56 push %r14 0.00 : 5aa8b8: 41 55 push %r13 0.00 : 5aa8ba: 41 54 push %r12 0.00 : 5aa8bc: 53 push %rbx 0.00 : 5aa8bd: 48 83 ec 38 sub $0x38,%rsp 0.00 : 5aa8c1: 48 89 7d b0 mov %rdi,-0x50(%rbp) 0.00 : 5aa8c5: 48 89 75 a8 mov %rsi,-0x58(%rbp) 0.00 : 5aa8c9: 48 89 55 a0 mov %rdx,-0x60(%rbp) : Relation rel = resultRelInfo->ri_RelationDesc; 0.00 : 5aa8cd: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 5aa8d1: 48 89 45 b8 mov %rax,-0x48(%rbp) : TupleDesc tupdesc = RelationGetDescr(rel); 0.00 : 5aa8d5: 4c 8b 78 38 mov 0x38(%rax),%r15 : TupleConstr *constr = tupdesc->constr; 0.00 : 5aa8d9: 4d 8b 6f 10 mov 0x10(%r15),%r13 : : Assert(constr); : : if (constr->has_not_null) 0.00 : 5aa8dd: 41 80 7d 14 00 cmpb $0x0,0x14(%r13) 0.00 : 5aa8e2: 74 74 je 5aa958 : { : int natts = tupdesc->natts; 0.00 : 5aa8e4: 45 8b 27 mov (%r15),%r12d : int attrChk; : : for (attrChk = 1; attrChk <= natts; attrChk++) 0.00 : 5aa8e7: 45 85 e4 test %r12d,%r12d 0.00 : 5aa8ea: 7e 6c jle 5aa958 0.00 : 5aa8ec: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5aa8f1: eb 0d jmp 5aa900 0.00 : 5aa8f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5aa8f8: 83 c3 01 add $0x1,%ebx 0.00 : 5aa8fb: 41 39 dc cmp %ebx,%r12d 0.00 : 5aa8fe: 7c 58 jl 5aa958 : { : if (tupdesc->attrs[attrChk - 1]->attnotnull && 0.00 : 5aa900: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : 5aa904: 48 63 c3 movslq %ebx,%rax /home/Computational/mark/src/postgres-andres/src/backend/executor/execMain.c:1609 33.33 : 5aa907: 48 83 e8 01 sub $0x1,%rax 0.00 : 5aa90b: 4c 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%r14 0.00 : 5aa912: 00 0.00 : 5aa913: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 5aa917: 80 78 5f 00 cmpb $0x0,0x5f(%rax) 66.67 : 5aa91b: 74 db je 5aa8f8 0.00 : 5aa91d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5aa921: 89 de mov %ebx,%esi 0.00 : 5aa923: e8 18 45 ec ff callq 46ee40 0.00 : 5aa928: 84 c0 test %al,%al 0.00 : 5aa92a: 74 cc je 5aa8f8 : slot_attisnull(slot, attrChk)) : ereport(ERROR, 0.00 : 5aa92c: 45 31 c0 xor %r8d,%r8d 0.00 : 5aa92f: b9 f0 9f 88 00 mov $0x889ff0,%ecx 0.00 : 5aa934: ba 53 06 00 00 mov $0x653,%edx 0.00 : 5aa939: be 96 96 88 00 mov $0x889696,%esi 0.00 : 5aa93e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aa943: e8 78 01 1d 00 callq 77aac0 0.00 : 5aa948: 84 c0 test %al,%al 0.00 : 5aa94a: 0f 85 f2 01 00 00 jne 5aab42 : if (constr->num_check > 0) : { : const char *failed; : : if ((failed = ExecRelCheck(resultRelInfo, slot, estate)) != NULL) : ereport(ERROR, 0.00 : 5aa950: e8 7b eb eb ff callq 4694d0 0.00 : 5aa955: 0f 1f 00 nopl (%rax) : 64)), : errtablecol(rel, attrChk))); : } : } : : if (constr->num_check > 0) 0.00 : 5aa958: 66 41 83 7d 12 00 cmpw $0x0,0x12(%r13) 0.00 : 5aa95e: 66 90 xchg %ax,%ax 0.00 : 5aa960: 75 16 jne 5aa978 : ExecBuildSlotValueDescription(slot, : tupdesc, : 64)), : errtableconstraint(rel, failed))); : } : } 0.00 : 5aa962: 48 83 c4 38 add $0x38,%rsp 0.00 : 5aa966: 5b pop %rbx 0.00 : 5aa967: 41 5c pop %r12 0.00 : 5aa969: 41 5d pop %r13 0.00 : 5aa96b: 41 5e pop %r14 0.00 : 5aa96d: 41 5f pop %r15 0.00 : 5aa96f: c9 leaveq 0.00 : 5aa970: c3 retq 0.00 : 5aa971: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static const char * : ExecRelCheck(ResultRelInfo *resultRelInfo, : TupleTableSlot *slot, EState *estate) : { : Relation rel = resultRelInfo->ri_RelationDesc; : int ncheck = rel->rd_att->constr->num_check; 0.00 : 5aa978: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 5aa97c: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5aa980: 48 8b 40 38 mov 0x38(%rax),%rax 0.00 : 5aa984: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 5aa988: 44 0f b7 68 12 movzwl 0x12(%rax),%r13d : ConstrCheck *check = rel->rd_att->constr->check; 0.00 : 5aa98d: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5aa991: 48 89 45 d0 mov %rax,-0x30(%rbp) : /* : * If first time through for this result relation, build expression : * nodetrees for rel's constraint expressions. Keep them in the per-query : * memory context so they'll survive throughout the query. : */ : if (resultRelInfo->ri_ConstraintExprs == NULL) 0.00 : 5aa995: 48 83 7a 68 00 cmpq $0x0,0x68(%rdx) 0.00 : 5aa99a: 0f 84 fa 00 00 00 je 5aaa9a : : /* : * We will use the EState's per-tuple context for evaluating constraint : * expressions (creating it if it's not already there). : */ : econtext = GetPerTupleExprContext(estate); 0.00 : 5aa9a0: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 5aa9a4: 4c 8b a2 c8 00 00 00 mov 0xc8(%rdx),%r12 0.00 : 5aa9ab: 4d 85 e4 test %r12,%r12 0.00 : 5aa9ae: 0f 84 7e 01 00 00 je 5aab32 : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 5aa9b4: 48 8b 45 a8 mov -0x58(%rbp),%rax : : /* And evaluate the constraints */ : for (i = 0; i < ncheck; i++) 0.00 : 5aa9b8: 45 85 ed test %r13d,%r13d : * expressions (creating it if it's not already there). : */ : econtext = GetPerTupleExprContext(estate); : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 5aa9bb: 49 89 44 24 08 mov %rax,0x8(%r12) : : /* And evaluate the constraints */ : for (i = 0; i < ncheck; i++) 0.00 : 5aa9c0: 74 a0 je 5aa962 0.00 : 5aa9c2: 31 db xor %ebx,%ebx 0.00 : 5aa9c4: eb 13 jmp 5aa9d9 0.00 : 5aa9c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5aa9cd: 00 00 00 : : if (constr->num_check > 0) : { : const char *failed; : : if ((failed = ExecRelCheck(resultRelInfo, slot, estate)) != NULL) 0.00 : 5aa9d0: 48 83 c3 01 add $0x1,%rbx : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; : : /* And evaluate the constraints */ : for (i = 0; i < ncheck; i++) 0.00 : 5aa9d4: 41 39 dd cmp %ebx,%r13d 0.00 : 5aa9d7: 7e 89 jle 5aa962 : /* : * NOTE: SQL specifies that a NULL result from a constraint expression : * is not to be treated as a failure. Therefore, tell ExecQual to : * return TRUE for NULL. : */ : if (!ExecQual(qual, econtext, true)) 0.00 : 5aa9d9: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 5aa9dd: 4c 89 e6 mov %r12,%rsi 0.00 : 5aa9e0: 48 8b 42 68 mov 0x68(%rdx),%rax 0.00 : 5aa9e4: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5aa9e9: 48 8b 3c d8 mov (%rax,%rbx,8),%rdi 0.00 : 5aa9ed: e8 1e 25 00 00 callq 5acf10 0.00 : 5aa9f2: 84 c0 test %al,%al 0.00 : 5aa9f4: 75 da jne 5aa9d0 : return check[i].ccname; 0.00 : 5aa9f6: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 5aa9fa: 48 8d 04 5b lea (%rbx,%rbx,2),%rax 0.00 : 5aa9fe: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx : : if (constr->num_check > 0) : { : const char *failed; : : if ((failed = ExecRelCheck(resultRelInfo, slot, estate)) != NULL) 0.00 : 5aaa02: 48 85 db test %rbx,%rbx 0.00 : 5aaa05: 0f 84 57 ff ff ff je 5aa962 : ereport(ERROR, 0.00 : 5aaa0b: 45 31 c0 xor %r8d,%r8d 0.00 : 5aaa0e: b9 f0 9f 88 00 mov $0x889ff0,%ecx 0.00 : 5aaa13: ba 64 06 00 00 mov $0x664,%edx 0.00 : 5aaa18: be 96 96 88 00 mov $0x889696,%esi 0.00 : 5aaa1d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aaa22: e8 99 00 1d 00 callq 77aac0 0.00 : 5aaa27: 84 c0 test %al,%al 0.00 : 5aaa29: 0f 84 21 ff ff ff je 5aa950 0.00 : 5aaa2f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 5aaa33: 48 89 de mov %rbx,%rsi 0.00 : 5aaa36: e8 e5 f0 1b 00 callq 769b20 0.00 : 5aaa3b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5aaa3f: ba 40 00 00 00 mov $0x40,%edx 0.00 : 5aaa44: 4c 89 fe mov %r15,%rsi 0.00 : 5aaa47: 41 89 c4 mov %eax,%r12d 0.00 : 5aaa4a: e8 11 fc ff ff callq 5aa660 0.00 : 5aaa4f: bf dc 96 88 00 mov $0x8896dc,%edi 0.00 : 5aaa54: 48 89 c6 mov %rax,%rsi 0.00 : 5aaa57: 31 c0 xor %eax,%eax 0.00 : 5aaa59: e8 d2 1a 1d 00 callq 77c530 0.00 : 5aaa5e: 41 89 c5 mov %eax,%r13d 0.00 : 5aaa61: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 5aaa65: 48 89 da mov %rbx,%rdx 0.00 : 5aaa68: bf 00 99 88 00 mov $0x889900,%edi 0.00 : 5aaa6d: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 5aaa71: 31 c0 xor %eax,%eax 0.00 : 5aaa73: e8 28 1e 1d 00 callq 77c8a0 0.00 : 5aaa78: bf c2 50 04 04 mov $0x40450c2,%edi 0.00 : 5aaa7d: 89 c3 mov %eax,%ebx 0.00 : 5aaa7f: e8 cc 22 1d 00 callq 77cd50 0.00 : 5aaa84: 44 89 e1 mov %r12d,%ecx 0.00 : 5aaa87: 89 c7 mov %eax,%edi 0.00 : 5aaa89: 44 89 ea mov %r13d,%edx 0.00 : 5aaa8c: 89 de mov %ebx,%esi 0.00 : 5aaa8e: 31 c0 xor %eax,%eax 0.00 : 5aaa90: e8 4b fb 1c 00 callq 77a5e0 0.00 : 5aaa95: e9 b6 fe ff ff jmpq 5aa950 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5aaa9a: 48 8b 05 bf fd 60 00 mov 0x60fdbf(%rip),%rax # bba860 : : CurrentMemoryContext = context; 0.00 : 5aaaa1: 48 8b 55 a0 mov -0x60(%rbp),%rdx : * memory context so they'll survive throughout the query. : */ : if (resultRelInfo->ri_ConstraintExprs == NULL) : { : oldContext = MemoryContextSwitchTo(estate->es_query_cxt); : resultRelInfo->ri_ConstraintExprs = 0.00 : 5aaaa5: 49 63 fd movslq %r13d,%rdi 0.00 : 5aaaa8: 48 c1 e7 03 shl $0x3,%rdi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5aaaac: 48 89 45 c8 mov %rax,-0x38(%rbp) : : CurrentMemoryContext = context; 0.00 : 5aaab0: 48 8b 82 80 00 00 00 mov 0x80(%rdx),%rax 0.00 : 5aaab7: 48 89 05 a2 fd 60 00 mov %rax,0x60fda2(%rip) # bba860 0.00 : 5aaabe: e8 8d e2 1e 00 callq 798d50 0.00 : 5aaac3: 48 8b 55 b0 mov -0x50(%rbp),%rdx : (List **) palloc(ncheck * sizeof(List *)); : for (i = 0; i < ncheck; i++) 0.00 : 5aaac7: 45 85 ed test %r13d,%r13d : * memory context so they'll survive throughout the query. : */ : if (resultRelInfo->ri_ConstraintExprs == NULL) : { : oldContext = MemoryContextSwitchTo(estate->es_query_cxt); : resultRelInfo->ri_ConstraintExprs = 0.00 : 5aaaca: 48 89 42 68 mov %rax,0x68(%rdx) : (List **) palloc(ncheck * sizeof(List *)); : for (i = 0; i < ncheck; i++) 0.00 : 5aaace: 74 52 je 5aab22 0.00 : 5aaad0: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) 0.00 : 5aaad7: 45 31 f6 xor %r14d,%r14d 0.00 : 5aaada: 45 31 e4 xor %r12d,%r12d 0.00 : 5aaadd: 0f 1f 00 nopl (%rax) : { : /* ExecQual wants implicit-AND form */ : qual = make_ands_implicit(stringToNode(check[i].ccbin)); 0.00 : 5aaae0: 48 8b 45 d0 mov -0x30(%rbp),%rax : resultRelInfo->ri_ConstraintExprs[i] = (List *) 0.00 : 5aaae4: 4c 89 e3 mov %r12,%rbx : if (resultRelInfo->ri_ConstraintExprs == NULL) : { : oldContext = MemoryContextSwitchTo(estate->es_query_cxt); : resultRelInfo->ri_ConstraintExprs = : (List **) palloc(ncheck * sizeof(List *)); : for (i = 0; i < ncheck; i++) 0.00 : 5aaae7: 49 83 c4 08 add $0x8,%r12 : { : /* ExecQual wants implicit-AND form */ : qual = make_ands_implicit(stringToNode(check[i].ccbin)); 0.00 : 5aaaeb: 4a 8b 7c 30 08 mov 0x8(%rax,%r14,1),%rdi : if (resultRelInfo->ri_ConstraintExprs == NULL) : { : oldContext = MemoryContextSwitchTo(estate->es_query_cxt); : resultRelInfo->ri_ConstraintExprs = : (List **) palloc(ncheck * sizeof(List *)); : for (i = 0; i < ncheck; i++) 0.00 : 5aaaf0: 49 83 c6 18 add $0x18,%r14 : { : /* ExecQual wants implicit-AND form */ : qual = make_ands_implicit(stringToNode(check[i].ccbin)); 0.00 : 5aaaf4: e8 67 4a 05 00 callq 5ff560 0.00 : 5aaaf9: 48 89 c7 mov %rax,%rdi 0.00 : 5aaafc: e8 0f 05 08 00 callq 62b010 : resultRelInfo->ri_ConstraintExprs[i] = (List *) 0.00 : 5aab01: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 5aab05: 48 8b 75 a0 mov -0x60(%rbp),%rsi : resultRelInfo->ri_ConstraintExprs = : (List **) palloc(ncheck * sizeof(List *)); : for (i = 0; i < ncheck; i++) : { : /* ExecQual wants implicit-AND form */ : qual = make_ands_implicit(stringToNode(check[i].ccbin)); 0.00 : 5aab09: 48 89 c7 mov %rax,%rdi : resultRelInfo->ri_ConstraintExprs[i] = (List *) 0.00 : 5aab0c: 48 03 5a 68 add 0x68(%rdx),%rbx 0.00 : 5aab10: e8 3b 44 00 00 callq 5aef50 0.00 : 5aab15: 48 89 03 mov %rax,(%rbx) : if (resultRelInfo->ri_ConstraintExprs == NULL) : { : oldContext = MemoryContextSwitchTo(estate->es_query_cxt); : resultRelInfo->ri_ConstraintExprs = : (List **) palloc(ncheck * sizeof(List *)); : for (i = 0; i < ncheck; i++) 0.00 : 5aab18: 83 45 c4 01 addl $0x1,-0x3c(%rbp) 0.00 : 5aab1c: 44 3b 6d c4 cmp -0x3c(%rbp),%r13d 0.00 : 5aab20: 7f be jg 5aaae0 0.00 : 5aab22: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 5aab26: 48 89 05 33 fd 60 00 mov %rax,0x60fd33(%rip) # bba860 0.00 : 5aab2d: e9 6e fe ff ff jmpq 5aa9a0 : : /* : * We will use the EState's per-tuple context for evaluating constraint : * expressions (creating it if it's not already there). : */ : econtext = GetPerTupleExprContext(estate); 0.00 : 5aab32: 48 89 d7 mov %rdx,%rdi 0.00 : 5aab35: e8 76 aa 00 00 callq 5b55b0 0.00 : 5aab3a: 49 89 c4 mov %rax,%r12 0.00 : 5aab3d: e9 72 fe ff ff jmpq 5aa9b4 : : for (attrChk = 1; attrChk <= natts; attrChk++) : { : if (tupdesc->attrs[attrChk - 1]->attnotnull && : slot_attisnull(slot, attrChk)) : ereport(ERROR, 0.00 : 5aab42: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 5aab46: 89 de mov %ebx,%esi 0.00 : 5aab48: e8 33 f0 1b 00 callq 769b80 0.00 : 5aab4d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 5aab51: ba 40 00 00 00 mov $0x40,%edx 0.00 : 5aab56: 4c 89 fe mov %r15,%rsi 0.00 : 5aab59: 41 89 c4 mov %eax,%r12d 0.00 : 5aab5c: e8 ff fa ff ff callq 5aa660 0.00 : 5aab61: bf dc 96 88 00 mov $0x8896dc,%edi 0.00 : 5aab66: 48 89 c6 mov %rax,%rsi 0.00 : 5aab69: 31 c0 xor %eax,%eax 0.00 : 5aab6b: e8 c0 19 1d 00 callq 77c530 0.00 : 5aab70: 41 89 c5 mov %eax,%r13d 0.00 : 5aab73: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 5aab77: bf c8 98 88 00 mov $0x8898c8,%edi 0.00 : 5aab7c: 4a 8b 34 30 mov (%rax,%r14,1),%rsi 0.00 : 5aab80: 31 c0 xor %eax,%eax 0.00 : 5aab82: 48 83 c6 04 add $0x4,%rsi 0.00 : 5aab86: e8 15 1d 1d 00 callq 77c8a0 0.00 : 5aab8b: bf c2 50 00 02 mov $0x20050c2,%edi 0.00 : 5aab90: 89 c3 mov %eax,%ebx 0.00 : 5aab92: e9 e8 fe ff ff jmpq 5aaa7f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5036 50.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4521 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005adac0 : : * associated with a plan tree. (If so, it can't have aggs or subplans.) : * This case should usually come through ExecPrepareExpr, not directly here. : */ : ExprState * : ExecInitExpr(Expr *node, PlanState *parent) : { 0.00 : 5adac0: 55 push %rbp : ExprState *state; : : if (node == NULL) 0.00 : 5adac1: 31 c0 xor %eax,%eax : * associated with a plan tree. (If so, it can't have aggs or subplans.) : * This case should usually come through ExecPrepareExpr, not directly here. : */ : ExprState * : ExecInitExpr(Expr *node, PlanState *parent) : { 0.00 : 5adac3: 48 89 e5 mov %rsp,%rbp 0.00 : 5adac6: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5adaca: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5adace: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 5adad2: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 5adad6: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5adada: 48 83 ec 70 sub $0x70,%rsp : ExprState *state; : : if (node == NULL) 0.00 : 5adade: 48 85 ff test %rdi,%rdi : * associated with a plan tree. (If so, it can't have aggs or subplans.) : * This case should usually come through ExecPrepareExpr, not directly here. : */ : ExprState * : ExecInitExpr(Expr *node, PlanState *parent) : { 0.00 : 5adae1: 48 89 7d 98 mov %rdi,-0x68(%rbp) 0.00 : 5adae5: 48 89 75 90 mov %rsi,-0x70(%rbp) : ExprState *state; : : if (node == NULL) 0.00 : 5adae9: 0f 84 49 01 00 00 je 5adc38 : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); 0.00 : 5adaef: e8 ec de 0e 00 callq 69b9e0 : : switch (nodeTag(node)) 0.00 : 5adaf4: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5adaf8: 8b 02 mov (%rdx),%eax 0.00 : 5adafa: 3d 42 01 00 00 cmp $0x142,%eax 0.00 : 5adaff: 0f 84 eb 06 00 00 je 5ae1f0 0.00 : 5adb05: 0f 86 dd 00 00 00 jbe 5adbe8 0.00 : 5adb0b: 3d 4d 01 00 00 cmp $0x14d,%eax 0.00 : 5adb10: 0f 84 ba 02 00 00 je 5addd0 0.00 : 5adb16: 66 90 xchg %ax,%ax 0.00 : 5adb18: 0f 87 ba 01 00 00 ja 5adcd8 0.00 : 5adb1e: 3d 48 01 00 00 cmp $0x148,%eax 0.00 : 5adb23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adb28: 0f 84 92 0d 00 00 je 5ae8c0 0.00 : 5adb2e: 66 90 xchg %ax,%ax 0.00 : 5adb30: 0f 86 3a 03 00 00 jbe 5ade70 0.00 : 5adb36: 3d 4a 01 00 00 cmp $0x14a,%eax 0.00 : 5adb3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adb40: 0f 84 d9 0a 00 00 je 5ae61f 0.00 : 5adb46: 66 90 xchg %ax,%ax 0.00 : 5adb48: 0f 82 42 0a 00 00 jb 5ae590 0.00 : 5adb4e: 3d 4b 01 00 00 cmp $0x14b,%eax 0.00 : 5adb53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adb58: 0f 84 11 08 00 00 je 5ae36f 0.00 : 5adb5e: 3d 4c 01 00 00 cmp $0x14c,%eax 0.00 : 5adb63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adb68: 0f 85 32 03 00 00 jne 5adea0 : } : break; : case T_CoalesceExpr: : { : CoalesceExpr *coalesceexpr = (CoalesceExpr *) node; : CoalesceExprState *cstate = makeNode(CoalesceExprState); 0.00 : 5adb6e: 48 8b 3d eb cc 60 00 mov 0x60cceb(%rip),%rdi # bba860 0.00 : 5adb75: be 20 00 00 00 mov $0x20,%esi 0.00 : 5adb7a: e8 91 b2 1e 00 callq 798e10 0.00 : 5adb7f: c7 00 a5 01 00 00 movl $0x1a5,(%rax) : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoalesce; 0.00 : 5adb85: 48 c7 40 10 d0 cc 5a movq $0x5accd0,0x10(%rax) 0.00 : 5adb8c: 00 : } : break; : case T_CoalesceExpr: : { : CoalesceExpr *coalesceexpr = (CoalesceExpr *) node; : CoalesceExprState *cstate = makeNode(CoalesceExprState); 0.00 : 5adb8d: 49 89 c5 mov %rax,%r13 : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoalesce; : foreach(l, coalesceexpr->args) 0.00 : 5adb90: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5adb94: 48 8b 42 10 mov 0x10(%rdx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5adb98: 48 85 c0 test %rax,%rax 0.00 : 5adb9b: 0f 84 c6 12 00 00 je 5aee67 0.00 : 5adba1: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5adba5: 48 85 db test %rbx,%rbx 0.00 : 5adba8: 0f 84 b9 12 00 00 je 5aee67 0.00 : 5adbae: 45 31 e4 xor %r12d,%r12d 0.00 : 5adbb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5adbb8: 48 8b 3b mov (%rbx),%rdi 0.00 : 5adbbb: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5adbbf: e8 fc fe ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5adbc4: 4c 89 e7 mov %r12,%rdi : foreach(l, coalesceexpr->args) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5adbc7: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5adbca: e8 b1 42 03 00 callq 5e1e80 : CoalesceExprState *cstate = makeNode(CoalesceExprState); : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoalesce; : foreach(l, coalesceexpr->args) 0.00 : 5adbcf: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); 0.00 : 5adbd3: 49 89 c4 mov %rax,%r12 : CoalesceExprState *cstate = makeNode(CoalesceExprState); : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoalesce; : foreach(l, coalesceexpr->args) 0.00 : 5adbd6: 48 85 db test %rbx,%rbx 0.00 : 5adbd9: 75 dd jne 5adbb8 : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : cstate->args = outlist; 0.00 : 5adbdb: 4d 89 65 18 mov %r12,0x18(%r13) : state = (ExprState *) cstate; 0.00 : 5adbdf: 4c 89 e8 mov %r13,%rax : } : break; 0.00 : 5adbe2: eb 4c jmp 5adc30 0.00 : 5adbe4: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5adbe8: 3d 38 01 00 00 cmp $0x138,%eax 0.00 : 5adbed: 75 61 jne 5adc50 : } : break; : case T_DistinctExpr: : { : DistinctExpr *distinctexpr = (DistinctExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); 0.00 : 5adbef: 48 8b 3d 6a cc 60 00 mov 0x60cc6a(%rip),%rdi # bba860 0.00 : 5adbf6: be 18 04 00 00 mov $0x418,%esi 0.00 : 5adbfb: e8 20 b4 1e 00 callq 799020 0.00 : 5adc00: c7 00 96 01 00 00 movl $0x196,(%rax) : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalDistinct; 0.00 : 5adc06: 48 c7 40 10 f0 12 5b movq $0x5b12f0,0x10(%rax) 0.00 : 5adc0d: 00 : } : break; : case T_DistinctExpr: : { : DistinctExpr *distinctexpr = (DistinctExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); 0.00 : 5adc0e: 48 89 c3 mov %rax,%rbx : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalDistinct; : fstate->args = (List *) 0.00 : 5adc11: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5adc15: 48 8b 7a 20 mov 0x20(%rdx),%rdi : { : OpExpr *opexpr = (OpExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalOper; : fstate->args = (List *) 0.00 : 5adc19: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5adc1d: e8 9e fe ff ff callq 5adac0 : ExecInitExpr((Expr *) opexpr->args, parent); : fstate->func.fn_oid = InvalidOid; /* not initialized */ 0.00 : 5adc22: c7 43 28 00 00 00 00 movl $0x0,0x28(%rbx) : { : OpExpr *opexpr = (OpExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalOper; : fstate->args = (List *) 0.00 : 5adc29: 48 89 43 18 mov %rax,0x18(%rbx) : ExecInitExpr((Expr *) opexpr->args, parent); : fstate->func.fn_oid = InvalidOid; /* not initialized */ : state = (ExprState *) fstate; 0.00 : 5adc2d: 48 89 d8 mov %rbx,%rax : state = NULL; /* keep compiler quiet */ : break; : } : : /* Common code for all state-node types */ : state->expr = node; 0.00 : 5adc30: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5adc34: 48 89 50 08 mov %rdx,0x8(%rax) : : return state; : } 0.00 : 5adc38: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5adc3c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5adc40: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5adc44: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5adc48: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5adc4c: c9 leaveq 0.00 : 5adc4d: c3 retq 0.00 : 5adc4e: 66 90 xchg %ax,%ax : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5adc50: 0f 87 e2 00 00 00 ja 5add38 0.00 : 5adc56: 3d 32 01 00 00 cmp $0x132,%eax 0.00 : 5adc5b: 0f 84 07 0e 00 00 je 5aea68 0.00 : 5adc61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5adc68: 0f 86 62 02 00 00 jbe 5aded0 0.00 : 5adc6e: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 5adc73: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adc78: 0f 84 95 0b 00 00 je 5ae813 0.00 : 5adc7e: 66 90 xchg %ax,%ax 0.00 : 5adc80: 0f 82 2a 0b 00 00 jb 5ae7b0 0.00 : 5adc86: 3d 35 01 00 00 cmp $0x135,%eax 0.00 : 5adc8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adc90: 0f 84 e1 0a 00 00 je 5ae777 0.00 : 5adc96: 3d 37 01 00 00 cmp $0x137,%eax 0.00 : 5adc9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adca0: 0f 85 fa 01 00 00 jne 5adea0 : } : break; : case T_OpExpr: : { : OpExpr *opexpr = (OpExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); 0.00 : 5adca6: 48 8b 3d b3 cb 60 00 mov 0x60cbb3(%rip),%rdi # bba860 0.00 : 5adcad: be 18 04 00 00 mov $0x418,%esi 0.00 : 5adcb2: e8 69 b3 1e 00 callq 799020 0.00 : 5adcb7: 48 89 c3 mov %rax,%rbx 0.00 : 5adcba: c7 00 96 01 00 00 movl $0x196,(%rax) : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalOper; 0.00 : 5adcc0: 48 c7 40 10 e0 1e 5b movq $0x5b1ee0,0x10(%rax) 0.00 : 5adcc7: 00 : fstate->args = (List *) 0.00 : 5adcc8: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5adccc: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 5adcd0: e9 44 ff ff ff jmpq 5adc19 0.00 : 5adcd5: 0f 1f 00 nopl (%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5adcd8: 3d 51 01 00 00 cmp $0x151,%eax 0.00 : 5adcdd: 0f 84 3d 06 00 00 je 5ae320 0.00 : 5adce3: 0f 86 c7 02 00 00 jbe 5adfb0 0.00 : 5adce9: 3d 54 01 00 00 cmp $0x154,%eax 0.00 : 5adcee: 66 90 xchg %ax,%ax 0.00 : 5adcf0: 0f 84 50 04 00 00 je 5ae146 0.00 : 5adcf6: 66 90 xchg %ax,%ax 0.00 : 5adcf8: 0f 87 f2 0d 00 00 ja 5aeaf0 0.00 : 5adcfe: 3d 52 01 00 00 cmp $0x152,%eax 0.00 : 5add03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5add08: 0f 85 92 01 00 00 jne 5adea0 : (int) ((Param *) node)->paramkind); : break; : } : break; : case T_CoerceToDomainValue: : state = (ExprState *) makeNode(ExprState); 0.00 : 5add0e: 48 8b 3d 4b cb 60 00 mov 0x60cb4b(%rip),%rdi # bba860 0.00 : 5add15: be 18 00 00 00 mov $0x18,%esi 0.00 : 5add1a: e8 f1 b0 1e 00 callq 798e10 0.00 : 5add1f: c7 00 90 01 00 00 movl $0x190,(%rax) : state->evalfunc = ExecEvalCoerceToDomainValue; 0.00 : 5add25: 48 c7 40 10 a0 ce 5a movq $0x5acea0,0x10(%rax) 0.00 : 5add2c: 00 : break; 0.00 : 5add2d: e9 fe fe ff ff jmpq 5adc30 0.00 : 5add32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5add38: 3d 3d 01 00 00 cmp $0x13d,%eax 0.00 : 5add3d: 0f 84 9d 05 00 00 je 5ae2e0 0.00 : 5add43: 0f 87 f7 01 00 00 ja 5adf40 0.00 : 5add49: 3d 3a 01 00 00 cmp $0x13a,%eax 0.00 : 5add4e: 66 90 xchg %ax,%ax 0.00 : 5add50: 0f 84 49 04 00 00 je 5ae19f 0.00 : 5add56: 66 90 xchg %ax,%ax 0.00 : 5add58: 0f 82 12 04 00 00 jb 5ae170 0.00 : 5add5e: 3d 3b 01 00 00 cmp $0x13b,%eax 0.00 : 5add63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5add68: 0f 85 32 01 00 00 jne 5adea0 : } : break; : case T_BoolExpr: : { : BoolExpr *boolexpr = (BoolExpr *) node; : BoolExprState *bstate = makeNode(BoolExprState); 0.00 : 5add6e: 48 8b 3d eb ca 60 00 mov 0x60caeb(%rip),%rdi # bba860 0.00 : 5add75: be 20 00 00 00 mov $0x20,%esi 0.00 : 5add7a: e8 91 b0 1e 00 callq 798e10 0.00 : 5add7f: c7 00 98 01 00 00 movl $0x198,(%rax) : : switch (boolexpr->boolop) 0.00 : 5add85: 48 8b 55 98 mov -0x68(%rbp),%rdx : } : break; : case T_BoolExpr: : { : BoolExpr *boolexpr = (BoolExpr *) node; : BoolExprState *bstate = makeNode(BoolExprState); 0.00 : 5add89: 48 89 c3 mov %rax,%rbx : : switch (boolexpr->boolop) 0.00 : 5add8c: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 5add8f: 83 f8 01 cmp $0x1,%eax 0.00 : 5add92: 0f 84 9b 0e 00 00 je 5aec33 0.00 : 5add98: 0f 83 30 0e 00 00 jae 5aebce : { : case AND_EXPR: : bstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalAnd; 0.00 : 5add9e: 48 c7 43 10 20 cb 5a movq $0x5acb20,0x10(%rbx) 0.00 : 5adda5: 00 0.00 : 5adda6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5addad: 00 00 00 : { : TargetEntry *tle = (TargetEntry *) node; : GenericExprState *gstate = makeNode(GenericExprState); : : gstate->xprstate.evalfunc = NULL; /* not used */ : gstate->arg = ExecInitExpr(tle->expr, parent); 0.00 : 5addb0: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5addb4: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5addb8: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5addbc: e8 ff fc ff ff callq 5adac0 0.00 : 5addc1: 48 89 43 18 mov %rax,0x18(%rbx) : state = (ExprState *) gstate; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5036 50.00 : 5addc5: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5addc8: e9 63 fe ff ff jmpq 5adc30 0.00 : 5addcd: 0f 1f 00 nopl (%rax) : } : break; : case T_MinMaxExpr: : { : MinMaxExpr *minmaxexpr = (MinMaxExpr *) node; : MinMaxExprState *mstate = makeNode(MinMaxExprState); 0.00 : 5addd0: 48 8b 3d 89 ca 60 00 mov 0x60ca89(%rip),%rdi # bba860 0.00 : 5addd7: be 50 00 00 00 mov $0x50,%esi 0.00 : 5adddc: e8 2f b0 1e 00 callq 798e10 0.00 : 5adde1: c7 00 a6 01 00 00 movl $0x1a6,(%rax) : List *outlist = NIL; : ListCell *l; : TypeCacheEntry *typentry; : : mstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalMinMax; 0.00 : 5adde7: 48 c7 40 10 50 cd 5a movq $0x5acd50,0x10(%rax) 0.00 : 5addee: 00 : } : break; : case T_MinMaxExpr: : { : MinMaxExpr *minmaxexpr = (MinMaxExpr *) node; : MinMaxExprState *mstate = makeNode(MinMaxExprState); 0.00 : 5addef: 49 89 c5 mov %rax,%r13 : List *outlist = NIL; : ListCell *l; : TypeCacheEntry *typentry; : : mstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalMinMax; : foreach(l, minmaxexpr->args) 0.00 : 5addf2: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5addf6: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 5addfa: 48 85 c0 test %rax,%rax 0.00 : 5addfd: 0f 84 44 10 00 00 je 5aee47 0.00 : 5ade03: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5ade07: 48 85 db test %rbx,%rbx 0.00 : 5ade0a: 0f 84 37 10 00 00 je 5aee47 0.00 : 5ade10: 45 31 e4 xor %r12d,%r12d 0.00 : 5ade13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ade18: 48 8b 3b mov (%rbx),%rdi 0.00 : 5ade1b: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ade1f: e8 9c fc ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5ade24: 4c 89 e7 mov %r12,%rdi : foreach(l, minmaxexpr->args) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ade27: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5ade2a: e8 51 40 03 00 callq 5e1e80 : List *outlist = NIL; : ListCell *l; : TypeCacheEntry *typentry; : : mstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalMinMax; : foreach(l, minmaxexpr->args) 0.00 : 5ade2f: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); 0.00 : 5ade33: 49 89 c4 mov %rax,%r12 : List *outlist = NIL; : ListCell *l; : TypeCacheEntry *typentry; : : mstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalMinMax; : foreach(l, minmaxexpr->args) 0.00 : 5ade36: 48 85 db test %rbx,%rbx 0.00 : 5ade39: 75 dd jne 5ade18 : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : mstate->args = outlist; 0.00 : 5ade3b: 4d 89 65 18 mov %r12,0x18(%r13) : /* Look up the btree comparison function for the datatype */ : typentry = lookup_type_cache(minmaxexpr->minmaxtype, 0.00 : 5ade3f: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ade43: be 08 00 00 00 mov $0x8,%esi 0.00 : 5ade48: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 5ade4b: e8 40 78 1c 00 callq 775690 : TYPECACHE_CMP_PROC); : if (!OidIsValid(typentry->cmp_proc)) 0.00 : 5ade50: 8b 78 2c mov 0x2c(%rax),%edi 0.00 : 5ade53: 85 ff test %edi,%edi 0.00 : 5ade55: 0f 84 14 10 00 00 je 5aee6f : * If we enforced permissions checks on index support : * functions, we'd need to make a check here. But the index : * support machinery doesn't do that, and neither does this : * code. : */ : fmgr_info(typentry->cmp_proc, &(mstate->cfunc)); 0.00 : 5ade5b: 49 8d 75 20 lea 0x20(%r13),%rsi 0.00 : 5ade5f: e8 fc 21 1d 00 callq 780060 : state = (ExprState *) mstate; 0.00 : 5ade64: 4c 89 e8 mov %r13,%rax : } : break; 0.00 : 5ade67: e9 c4 fd ff ff jmpq 5adc30 0.00 : 5ade6c: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5ade70: 3d 44 01 00 00 cmp $0x144,%eax 0.00 : 5ade75: 0f 84 c0 0b 00 00 je 5aea3b 0.00 : 5ade7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ade80: 0f 82 4a 0b 00 00 jb 5ae9d0 0.00 : 5ade86: 3d 46 01 00 00 cmp $0x146,%eax 0.00 : 5ade8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ade90: 0f 84 4e 0a 00 00 je 5ae8e4 0.00 : 5ade96: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ade9d: 00 00 00 : } : /* Don't fall through to the "common" code below */ : return (ExprState *) outlist; : } : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5adea0: ba ff ad 88 00 mov $0x88adff,%edx 0.00 : 5adea5: be bf 13 00 00 mov $0x13bf,%esi 0.00 : 5adeaa: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5adeaf: e8 6c d5 1c 00 callq 77b420 0.00 : 5adeb4: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5adeb8: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5adebd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5adec2: 31 c0 xor %eax,%eax 0.00 : 5adec4: 8b 13 mov (%rbx),%edx 0.00 : 5adec6: e8 65 d3 1c 00 callq 77b230 0.00 : 5adecb: e8 00 b6 eb ff callq 4694d0 : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5aded0: 3d 30 01 00 00 cmp $0x130,%eax 0.00 : 5aded5: 0f 84 db 03 00 00 je 5ae2b6 0.00 : 5adedb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adee0: 0f 87 9a 03 00 00 ja 5ae280 0.00 : 5adee6: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 5adeeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adef0: 75 ae jne 5adea0 : { : case T_Var: : /* varattno == InvalidAttrNumber means it's a whole-row Var */ : if (((Var *) node)->varattno == InvalidAttrNumber) 0.00 : 5adef2: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5adef6: 66 83 7b 08 00 cmpw $0x0,0x8(%rbx) 0.00 : 5adefb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adf00: 0f 85 6a 0c 00 00 jne 5aeb70 : { : WholeRowVarExprState *wstate = makeNode(WholeRowVarExprState); 0.00 : 5adf06: 48 8b 3d 53 c9 60 00 mov 0x60c953(%rip),%rdi # bba860 0.00 : 5adf0d: be 28 00 00 00 mov $0x28,%esi 0.00 : 5adf12: e8 f9 ae 1e 00 callq 798e10 0.00 : 5adf17: c7 00 92 01 00 00 movl $0x192,(%rax) : : wstate->parent = parent; 0.00 : 5adf1d: 48 8b 55 90 mov -0x70(%rbp),%rdx : wstate->wrv_junkFilter = NULL; 0.00 : 5adf21: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5adf28: 00 : state = (ExprState *) wstate; : state->evalfunc = (ExprStateEvalFunc) ExecEvalWholeRowVar; 0.00 : 5adf29: 48 c7 40 10 80 26 5b movq $0x5b2680,0x10(%rax) 0.00 : 5adf30: 00 : /* varattno == InvalidAttrNumber means it's a whole-row Var */ : if (((Var *) node)->varattno == InvalidAttrNumber) : { : WholeRowVarExprState *wstate = makeNode(WholeRowVarExprState); : : wstate->parent = parent; 0.00 : 5adf31: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 5adf35: e9 f6 fc ff ff jmpq 5adc30 0.00 : 5adf3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5adf40: 3d 3f 01 00 00 cmp $0x13f,%eax 0.00 : 5adf45: 0f 84 c2 00 00 00 je 5ae00d 0.00 : 5adf4b: 0f 82 9f 00 00 00 jb 5adff0 0.00 : 5adf51: 3d 40 01 00 00 cmp $0x140,%eax 0.00 : 5adf56: 66 90 xchg %ax,%ax 0.00 : 5adf58: 0f 84 bd 07 00 00 je 5ae71b 0.00 : 5adf5e: 3d 41 01 00 00 cmp $0x141,%eax 0.00 : 5adf63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adf68: 0f 85 32 ff ff ff jne 5adea0 : } : break; : case T_RelabelType: : { : RelabelType *relabel = (RelabelType *) node; : GenericExprState *gstate = makeNode(GenericExprState); 0.00 : 5adf6e: 48 8b 3d eb c8 60 00 mov 0x60c8eb(%rip),%rdi # bba860 0.00 : 5adf75: be 20 00 00 00 mov $0x20,%esi 0.00 : 5adf7a: e8 91 ae 1e 00 callq 798e10 0.00 : 5adf7f: 48 89 c3 mov %rax,%rbx 0.00 : 5adf82: c7 00 91 01 00 00 movl $0x191,(%rax) : : gstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRelabelType; 0.00 : 5adf88: 48 c7 40 10 c0 ce 5a movq $0x5acec0,0x10(%rax) 0.00 : 5adf8f: 00 : { : BooleanTest *btest = (BooleanTest *) node; : GenericExprState *gstate = makeNode(GenericExprState); : : gstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalBooleanTest; : gstate->arg = ExecInitExpr(btest->arg, parent); 0.00 : 5adf90: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5adf94: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5adf98: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 5adf9c: e8 1f fb ff ff callq 5adac0 0.00 : 5adfa1: 48 89 43 18 mov %rax,0x18(%rbx) : state = (ExprState *) gstate; 0.00 : 5adfa5: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5adfa8: e9 83 fc ff ff jmpq 5adc30 0.00 : 5adfad: 0f 1f 00 nopl (%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5adfb0: 3d 4f 01 00 00 cmp $0x14f,%eax 0.00 : 5adfb5: 0f 84 64 01 00 00 je 5ae11f 0.00 : 5adfbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5adfc0: 0f 86 92 00 00 00 jbe 5ae058 : } : break; : case T_BooleanTest: : { : BooleanTest *btest = (BooleanTest *) node; : GenericExprState *gstate = makeNode(GenericExprState); 0.00 : 5adfc6: 48 8b 3d 93 c8 60 00 mov 0x60c893(%rip),%rdi # bba860 0.00 : 5adfcd: be 20 00 00 00 mov $0x20,%esi 0.00 : 5adfd2: e8 39 ae 1e 00 callq 798e10 0.00 : 5adfd7: 48 89 c3 mov %rax,%rbx 0.00 : 5adfda: c7 00 91 01 00 00 movl $0x191,(%rax) : : gstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalBooleanTest; 0.00 : 5adfe0: 48 c7 40 10 00 d5 5a movq $0x5ad500,0x10(%rax) 0.00 : 5adfe7: 00 0.00 : 5adfe8: eb a6 jmp 5adf90 0.00 : 5adfea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_AlternativeSubPlan: : { : AlternativeSubPlan *asplan = (AlternativeSubPlan *) node; : AlternativeSubPlanState *asstate; : : if (!parent) 0.00 : 5adff0: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 5adff5: 0f 84 bd 0e 00 00 je 5aeeb8 : elog(ERROR, "AlternativeSubPlan found with no parent plan"); : : asstate = ExecInitAlternativeSubPlan(asplan, parent); 0.00 : 5adffb: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5adfff: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 5ae003: e8 18 93 01 00 callq 5c7320 : : state = (ExprState *) asstate; : } : break; 0.00 : 5ae008: e9 23 fc ff ff jmpq 5adc30 : case T_FieldSelect: : { : FieldSelect *fselect = (FieldSelect *) node; : FieldSelectState *fstate = makeNode(FieldSelectState); 0.00 : 5ae00d: 48 8b 3d 4c c8 60 00 mov 0x60c84c(%rip),%rdi # bba860 0.00 : 5ae014: be 28 00 00 00 mov $0x28,%esi 0.00 : 5ae019: e8 f2 ad 1e 00 callq 798e10 0.00 : 5ae01e: 48 89 c3 mov %rax,%rbx 0.00 : 5ae021: c7 00 9b 01 00 00 movl $0x19b,(%rax) : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalFieldSelect; 0.00 : 5ae027: 48 c7 40 10 60 06 5b movq $0x5b0660,0x10(%rax) 0.00 : 5ae02e: 00 : { : NullTest *ntest = (NullTest *) node; : NullTestState *nstate = makeNode(NullTestState); : : nstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalNullTest; : nstate->arg = ExecInitExpr(ntest->arg, parent); 0.00 : 5ae02f: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae033: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae037: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5ae03b: e8 80 fa ff ff callq 5adac0 : nstate->argdesc = NULL; 0.00 : 5ae040: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 5ae047: 00 : { : NullTest *ntest = (NullTest *) node; : NullTestState *nstate = makeNode(NullTestState); : : nstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalNullTest; : nstate->arg = ExecInitExpr(ntest->arg, parent); 0.00 : 5ae048: 48 89 43 18 mov %rax,0x18(%rbx) : nstate->argdesc = NULL; : state = (ExprState *) nstate; 0.00 : 5ae04c: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5ae04f: e9 dc fb ff ff jmpq 5adc30 0.00 : 5ae054: 0f 1f 40 00 nopl 0x0(%rax) : } : break; : case T_XmlExpr: : { : XmlExpr *xexpr = (XmlExpr *) node; : XmlExprState *xstate = makeNode(XmlExprState); 0.00 : 5ae058: 48 8b 3d 01 c8 60 00 mov 0x60c801(%rip),%rdi # bba860 0.00 : 5ae05f: be 28 00 00 00 mov $0x28,%esi 0.00 : 5ae064: e8 a7 ad 1e 00 callq 798e10 0.00 : 5ae069: c7 00 a7 01 00 00 movl $0x1a7,(%rax) : List *outlist; : ListCell *arg; : : xstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalXml; 0.00 : 5ae06f: 48 c7 40 10 d0 f3 5a movq $0x5af3d0,0x10(%rax) 0.00 : 5ae076: 00 : } : break; : case T_XmlExpr: : { : XmlExpr *xexpr = (XmlExpr *) node; : XmlExprState *xstate = makeNode(XmlExprState); 0.00 : 5ae077: 49 89 c5 mov %rax,%r13 : List *outlist; : ListCell *arg; : : xstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalXml; : outlist = NIL; : foreach(arg, xexpr->named_args) 0.00 : 5ae07a: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5ae07e: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 5ae082: 48 85 c0 test %rax,%rax 0.00 : 5ae085: 0f 84 b4 0d 00 00 je 5aee3f 0.00 : 5ae08b: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5ae08f: 48 85 db test %rbx,%rbx 0.00 : 5ae092: 0f 84 a7 0d 00 00 je 5aee3f 0.00 : 5ae098: 45 31 e4 xor %r12d,%r12d 0.00 : 5ae09b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Expr *e = (Expr *) lfirst(arg); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae0a0: 48 8b 3b mov (%rbx),%rdi 0.00 : 5ae0a3: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae0a7: e8 14 fa ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5ae0ac: 4c 89 e7 mov %r12,%rdi : foreach(arg, xexpr->named_args) : { : Expr *e = (Expr *) lfirst(arg); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae0af: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5ae0b2: e8 c9 3d 03 00 callq 5e1e80 : List *outlist; : ListCell *arg; : : xstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalXml; : outlist = NIL; : foreach(arg, xexpr->named_args) 0.00 : 5ae0b7: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : Expr *e = (Expr *) lfirst(arg); : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); 0.00 : 5ae0bb: 49 89 c4 mov %rax,%r12 : List *outlist; : ListCell *arg; : : xstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalXml; : outlist = NIL; : foreach(arg, xexpr->named_args) 0.00 : 5ae0be: 48 85 db test %rbx,%rbx 0.00 : 5ae0c1: 75 dd jne 5ae0a0 : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : xstate->named_args = outlist; 0.00 : 5ae0c3: 4d 89 65 18 mov %r12,0x18(%r13) : : outlist = NIL; : foreach(arg, xexpr->args) 0.00 : 5ae0c7: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae0cb: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 5ae0cf: 48 85 c0 test %rax,%rax 0.00 : 5ae0d2: 0f 84 5f 0d 00 00 je 5aee37 0.00 : 5ae0d8: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5ae0dc: 48 85 db test %rbx,%rbx 0.00 : 5ae0df: 0f 84 52 0d 00 00 je 5aee37 0.00 : 5ae0e5: 45 31 e4 xor %r12d,%r12d 0.00 : 5ae0e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ae0ef: 00 : { : Expr *e = (Expr *) lfirst(arg); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae0f0: 48 8b 3b mov (%rbx),%rdi 0.00 : 5ae0f3: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae0f7: e8 c4 f9 ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5ae0fc: 4c 89 e7 mov %r12,%rdi : foreach(arg, xexpr->args) : { : Expr *e = (Expr *) lfirst(arg); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae0ff: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5ae102: e8 79 3d 03 00 callq 5e1e80 : outlist = lappend(outlist, estate); : } : xstate->named_args = outlist; : : outlist = NIL; : foreach(arg, xexpr->args) 0.00 : 5ae107: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : Expr *e = (Expr *) lfirst(arg); : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); 0.00 : 5ae10b: 49 89 c4 mov %rax,%r12 : outlist = lappend(outlist, estate); : } : xstate->named_args = outlist; : : outlist = NIL; : foreach(arg, xexpr->args) 0.00 : 5ae10e: 48 85 db test %rbx,%rbx 0.00 : 5ae111: 75 dd jne 5ae0f0 : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : xstate->args = outlist; 0.00 : 5ae113: 4d 89 65 20 mov %r12,0x20(%r13) : : state = (ExprState *) xstate; 0.00 : 5ae117: 4c 89 e8 mov %r13,%rax : } : break; 0.00 : 5ae11a: e9 11 fb ff ff jmpq 5adc30 : case T_NullTest: : { : NullTest *ntest = (NullTest *) node; : NullTestState *nstate = makeNode(NullTestState); 0.00 : 5ae11f: 48 8b 3d 3a c7 60 00 mov 0x60c73a(%rip),%rdi # bba860 0.00 : 5ae126: be 28 00 00 00 mov $0x28,%esi 0.00 : 5ae12b: e8 e0 ac 1e 00 callq 798e10 0.00 : 5ae130: 48 89 c3 mov %rax,%rbx 0.00 : 5ae133: c7 00 a8 01 00 00 movl $0x1a8,(%rax) : : nstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalNullTest; 0.00 : 5ae139: 48 c7 40 10 40 f2 5a movq $0x5af240,0x10(%rax) 0.00 : 5ae140: 00 0.00 : 5ae141: e9 e9 fe ff ff jmpq 5ae02f : cstate->constraints = GetDomainConstraints(ctest->resulttype); : state = (ExprState *) cstate; : } : break; : case T_CurrentOfExpr: : state = (ExprState *) makeNode(ExprState); 0.00 : 5ae146: 48 8b 3d 13 c7 60 00 mov 0x60c713(%rip),%rdi # bba860 0.00 : 5ae14d: be 18 00 00 00 mov $0x18,%esi 0.00 : 5ae152: e8 b9 ac 1e 00 callq 798e10 0.00 : 5ae157: c7 00 90 01 00 00 movl $0x190,(%rax) : state->evalfunc = ExecEvalCurrentOfExpr; 0.00 : 5ae15d: 48 c7 40 10 d0 d3 5a movq $0x5ad3d0,0x10(%rax) 0.00 : 5ae164: 00 : break; 0.00 : 5ae165: e9 c6 fa ff ff jmpq 5adc30 0.00 : 5ae16a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : break; : case T_NullIfExpr: : { : NullIfExpr *nullifexpr = (NullIfExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); 0.00 : 5ae170: 48 8b 3d e9 c6 60 00 mov 0x60c6e9(%rip),%rdi # bba860 0.00 : 5ae177: be 18 04 00 00 mov $0x418,%esi 0.00 : 5ae17c: e8 9f ae 1e 00 callq 799020 0.00 : 5ae181: 48 89 c3 mov %rax,%rbx 0.00 : 5ae184: c7 00 96 01 00 00 movl $0x196,(%rax) : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalNullIf; 0.00 : 5ae18a: 48 c7 40 10 e0 11 5b movq $0x5b11e0,0x10(%rax) 0.00 : 5ae191: 00 : fstate->args = (List *) 0.00 : 5ae192: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae196: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 5ae19a: e9 7a fa ff ff jmpq 5adc19 : } : break; : case T_ScalarArrayOpExpr: : { : ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) node; : ScalarArrayOpExprState *sstate = makeNode(ScalarArrayOpExprState); 0.00 : 5ae19f: 48 8b 3d ba c6 60 00 mov 0x60c6ba(%rip),%rdi # bba860 0.00 : 5ae1a6: be 20 04 00 00 mov $0x420,%esi 0.00 : 5ae1ab: e8 70 ae 1e 00 callq 799020 0.00 : 5ae1b0: c7 00 97 01 00 00 movl $0x197,(%rax) : : sstate->fxprstate.xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalScalarArrayOp; 0.00 : 5ae1b6: 48 c7 40 10 90 0d 5b movq $0x5b0d90,0x10(%rax) 0.00 : 5ae1bd: 00 : } : break; : case T_ScalarArrayOpExpr: : { : ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) node; : ScalarArrayOpExprState *sstate = makeNode(ScalarArrayOpExprState); 0.00 : 5ae1be: 48 89 c3 mov %rax,%rbx : : sstate->fxprstate.xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalScalarArrayOp; : sstate->fxprstate.args = (List *) 0.00 : 5ae1c1: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae1c5: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae1c9: 48 8b 7a 18 mov 0x18(%rdx),%rdi 0.00 : 5ae1cd: e8 ee f8 ff ff callq 5adac0 : ExecInitExpr((Expr *) opexpr->args, parent); : sstate->fxprstate.func.fn_oid = InvalidOid; /* not initialized */ 0.00 : 5ae1d2: c7 43 28 00 00 00 00 movl $0x0,0x28(%rbx) : { : ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) node; : ScalarArrayOpExprState *sstate = makeNode(ScalarArrayOpExprState); : : sstate->fxprstate.xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalScalarArrayOp; : sstate->fxprstate.args = (List *) 0.00 : 5ae1d9: 48 89 43 18 mov %rax,0x18(%rbx) : ExecInitExpr((Expr *) opexpr->args, parent); : sstate->fxprstate.func.fn_oid = InvalidOid; /* not initialized */ : sstate->element_type = InvalidOid; /* ditto */ : state = (ExprState *) sstate; 0.00 : 5ae1dd: 48 89 d8 mov %rbx,%rax : : sstate->fxprstate.xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalScalarArrayOp; : sstate->fxprstate.args = (List *) : ExecInitExpr((Expr *) opexpr->args, parent); : sstate->fxprstate.func.fn_oid = InvalidOid; /* not initialized */ : sstate->element_type = InvalidOid; /* ditto */ 0.00 : 5ae1e0: c7 83 18 04 00 00 00 movl $0x0,0x418(%rbx) 0.00 : 5ae1e7: 00 00 00 : state = (ExprState *) sstate; : } : break; 0.00 : 5ae1ea: e9 41 fa ff ff jmpq 5adc30 0.00 : 5ae1ef: 90 nop : } : break; : case T_CoerceViaIO: : { : CoerceViaIO *iocoerce = (CoerceViaIO *) node; : CoerceViaIOState *iostate = makeNode(CoerceViaIOState); 0.00 : 5ae1f0: 48 8b 3d 69 c6 60 00 mov 0x60c669(%rip),%rdi # bba860 0.00 : 5ae1f7: be 88 00 00 00 mov $0x88,%esi : bool typisvarlena; : : iostate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoerceViaIO; : iostate->arg = ExecInitExpr(iocoerce->arg, parent); : /* lookup the result type's input function */ : getTypeInputInfo(iocoerce->resulttype, &iofunc, 0.00 : 5ae1fc: 4c 8d 65 d4 lea -0x2c(%rbp),%r12 : } : break; : case T_CoerceViaIO: : { : CoerceViaIO *iocoerce = (CoerceViaIO *) node; : CoerceViaIOState *iostate = makeNode(CoerceViaIOState); 0.00 : 5ae200: e8 0b ac 1e 00 callq 798e10 0.00 : 5ae205: 48 89 c3 mov %rax,%rbx 0.00 : 5ae208: c7 00 9d 01 00 00 movl $0x19d,(%rax) : Oid iofunc; : bool typisvarlena; : : iostate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoerceViaIO; 0.00 : 5ae20e: 48 c7 40 10 00 04 5b movq $0x5b0400,0x10(%rax) 0.00 : 5ae215: 00 : iostate->arg = ExecInitExpr(iocoerce->arg, parent); 0.00 : 5ae216: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae21a: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae21e: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5ae222: e8 99 f8 ff ff callq 5adac0 0.00 : 5ae227: 48 89 43 18 mov %rax,0x18(%rbx) : /* lookup the result type's input function */ : getTypeInputInfo(iocoerce->resulttype, &iofunc, 0.00 : 5ae22b: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae22f: 48 8d 93 80 00 00 00 lea 0x80(%rbx),%rdx 0.00 : 5ae236: 4c 89 e6 mov %r12,%rsi 0.00 : 5ae239: 8b 78 10 mov 0x10(%rax),%edi 0.00 : 5ae23c: e8 2f 5d 1c 00 callq 773f70 : &iostate->intypioparam); : fmgr_info(iofunc, &iostate->infunc); 0.00 : 5ae241: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5ae244: 48 8d 73 50 lea 0x50(%rbx),%rsi 0.00 : 5ae248: e8 13 1e 1d 00 callq 780060 : /* lookup the input type's output function */ : getTypeOutputInfo(exprType((Node *) iocoerce->arg), 0.00 : 5ae24d: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae251: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 5ae255: e8 76 2a 03 00 callq 5e0cd0 0.00 : 5ae25a: 48 8d 55 d0 lea -0x30(%rbp),%rdx 0.00 : 5ae25e: 89 c7 mov %eax,%edi 0.00 : 5ae260: 4c 89 e6 mov %r12,%rsi 0.00 : 5ae263: e8 c8 5b 1c 00 callq 773e30 : &iofunc, &typisvarlena); : fmgr_info(iofunc, &iostate->outfunc); 0.00 : 5ae268: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 5ae26b: 48 8d 73 20 lea 0x20(%rbx),%rsi 0.00 : 5ae26f: e8 ec 1d 1d 00 callq 780060 : state = (ExprState *) iostate; 0.00 : 5ae274: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5ae277: e9 b4 f9 ff ff jmpq 5adc30 0.00 : 5ae27c: 0f 1f 40 00 nopl 0x0(%rax) : case T_Const: : state = (ExprState *) makeNode(ExprState); : state->evalfunc = ExecEvalConst; : break; : case T_Param: : state = (ExprState *) makeNode(ExprState); 0.00 : 5ae280: 48 8b 3d d9 c5 60 00 mov 0x60c5d9(%rip),%rdi # bba860 0.00 : 5ae287: be 18 00 00 00 mov $0x18,%esi 0.00 : 5ae28c: e8 7f ab 1e 00 callq 798e10 0.00 : 5ae291: c7 00 90 01 00 00 movl $0x190,(%rax) : switch (((Param *) node)->paramkind) 0.00 : 5ae297: 48 8b 5d 98 mov -0x68(%rbp),%rbx : case T_Const: : state = (ExprState *) makeNode(ExprState); : state->evalfunc = ExecEvalConst; : break; : case T_Param: : state = (ExprState *) makeNode(ExprState); 0.00 : 5ae29b: 48 89 c2 mov %rax,%rdx : switch (((Param *) node)->paramkind) 0.00 : 5ae29e: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : 5ae2a1: 85 c9 test %ecx,%ecx 0.00 : 5ae2a3: 0f 85 ef 08 00 00 jne 5aeb98 : { : case PARAM_EXEC: : state->evalfunc = ExecEvalParamExec; : break; : case PARAM_EXTERN: : state->evalfunc = ExecEvalParamExtern; 0.00 : 5ae2a9: 48 c7 42 10 40 d9 5a movq $0x5ad940,0x10(%rdx) 0.00 : 5ae2b0: 00 : break; 0.00 : 5ae2b1: e9 7a f9 ff ff jmpq 5adc30 : state = (ExprState *) makeNode(ExprState); : state->evalfunc = ExecEvalScalarVar; : } : break; : case T_Const: : state = (ExprState *) makeNode(ExprState); 0.00 : 5ae2b6: 48 8b 3d a3 c5 60 00 mov 0x60c5a3(%rip),%rdi # bba860 0.00 : 5ae2bd: be 18 00 00 00 mov $0x18,%esi 0.00 : 5ae2c2: e8 49 ab 1e 00 callq 798e10 0.00 : 5ae2c7: c7 00 90 01 00 00 movl $0x190,(%rax) : state->evalfunc = ExecEvalConst; 0.00 : 5ae2cd: 48 c7 40 10 20 ca 5a movq $0x5aca20,0x10(%rax) 0.00 : 5ae2d4: 00 : break; 0.00 : 5ae2d5: e9 56 f9 ff ff jmpq 5adc30 0.00 : 5ae2da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_SubPlan: : { : SubPlan *subplan = (SubPlan *) node; : SubPlanState *sstate; : : if (!parent) 0.00 : 5ae2e0: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 5ae2e5: 0f 84 33 0c 00 00 je 5aef1e : elog(ERROR, "SubPlan found with no parent plan"); : : sstate = ExecInitSubPlan(subplan, parent); 0.00 : 5ae2eb: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae2ef: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 5ae2f3: e8 38 a4 01 00 callq 5c8730 : : /* Add SubPlanState nodes to parent->subPlan */ : parent->subPlan = lappend(parent->subPlan, sstate); 0.00 : 5ae2f8: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 5ae2fc: 48 89 c6 mov %rax,%rsi : SubPlanState *sstate; : : if (!parent) : elog(ERROR, "SubPlan found with no parent plan"); : : sstate = ExecInitSubPlan(subplan, parent); 0.00 : 5ae2ff: 48 89 c3 mov %rax,%rbx : : /* Add SubPlanState nodes to parent->subPlan */ : parent->subPlan = lappend(parent->subPlan, sstate); 0.00 : 5ae302: 48 8b 7a 48 mov 0x48(%rdx),%rdi 0.00 : 5ae306: e8 75 3b 03 00 callq 5e1e80 0.00 : 5ae30b: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 5ae30f: 48 89 42 48 mov %rax,0x48(%rdx) : : state = (ExprState *) sstate; 0.00 : 5ae313: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5ae316: e9 15 f9 ff ff jmpq 5adc30 0.00 : 5ae31b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : break; : case T_CoerceToDomain: : { : CoerceToDomain *ctest = (CoerceToDomain *) node; : CoerceToDomainState *cstate = makeNode(CoerceToDomainState); 0.00 : 5ae320: 48 8b 3d 39 c5 60 00 mov 0x60c539(%rip),%rdi # bba860 0.00 : 5ae327: be 28 00 00 00 mov $0x28,%esi 0.00 : 5ae32c: e8 df aa 1e 00 callq 798e10 0.00 : 5ae331: 48 89 c3 mov %rax,%rbx 0.00 : 5ae334: c7 00 a9 01 00 00 movl $0x1a9,(%rax) : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoerceToDomain; 0.00 : 5ae33a: 48 c7 40 10 90 ef 5a movq $0x5aef90,0x10(%rax) 0.00 : 5ae341: 00 : cstate->arg = ExecInitExpr(ctest->arg, parent); 0.00 : 5ae342: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae346: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae34a: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5ae34e: e8 6d f7 ff ff callq 5adac0 0.00 : 5ae353: 48 89 43 18 mov %rax,0x18(%rbx) : cstate->constraints = GetDomainConstraints(ctest->resulttype); 0.00 : 5ae357: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae35b: 8b 7a 10 mov 0x10(%rdx),%edi 0.00 : 5ae35e: e8 8d c4 fe ff callq 59a7f0 0.00 : 5ae363: 48 89 43 20 mov %rax,0x20(%rbx) : state = (ExprState *) cstate; 0.00 : 5ae367: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5ae36a: e9 c1 f8 ff ff jmpq 5adc30 : } : break; : case T_RowCompareExpr: : { : RowCompareExpr *rcexpr = (RowCompareExpr *) node; : RowCompareExprState *rstate = makeNode(RowCompareExprState); 0.00 : 5ae36f: 48 8b 3d ea c4 60 00 mov 0x60c4ea(%rip),%rdi # bba860 0.00 : 5ae376: be 38 00 00 00 mov $0x38,%esi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5ae37b: 31 db xor %ebx,%ebx 0.00 : 5ae37d: e8 8e aa 1e 00 callq 798e10 0.00 : 5ae382: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 5ae386: c7 00 a4 01 00 00 movl $0x1a4,(%rax) : int nopers = list_length(rcexpr->opnos); 0.00 : 5ae38c: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae390: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5ae394: 48 85 c0 test %rax,%rax 0.00 : 5ae397: 74 03 je 5ae39c 0.00 : 5ae399: 8b 58 04 mov 0x4(%rax),%ebx : ListCell *l; : ListCell *l2; : ListCell *l3; : int i; : : rstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRowCompare; 0.00 : 5ae39c: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 5ae3a0: 48 c7 40 10 20 d6 5a movq $0x5ad620,0x10(%rax) 0.00 : 5ae3a7: 00 : Assert(list_length(rcexpr->largs) == nopers); : outlist = NIL; : foreach(l, rcexpr->largs) 0.00 : 5ae3a8: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae3ac: 48 8b 42 20 mov 0x20(%rdx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5ae3b0: 48 85 c0 test %rax,%rax 0.00 : 5ae3b3: 0f 84 a6 0a 00 00 je 5aee5f 0.00 : 5ae3b9: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5ae3bd: 4d 85 e4 test %r12,%r12 0.00 : 5ae3c0: 0f 84 99 0a 00 00 je 5aee5f 0.00 : 5ae3c6: 45 31 ed xor %r13d,%r13d 0.00 : 5ae3c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae3d0: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 5ae3d4: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae3d8: e8 e3 f6 ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5ae3dd: 4c 89 ef mov %r13,%rdi : foreach(l, rcexpr->largs) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae3e0: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5ae3e3: e8 98 3a 03 00 callq 5e1e80 : int i; : : rstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRowCompare; : Assert(list_length(rcexpr->largs) == nopers); : outlist = NIL; : foreach(l, rcexpr->largs) 0.00 : 5ae3e8: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); 0.00 : 5ae3ed: 49 89 c5 mov %rax,%r13 : int i; : : rstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRowCompare; : Assert(list_length(rcexpr->largs) == nopers); : outlist = NIL; : foreach(l, rcexpr->largs) 0.00 : 5ae3f0: 4d 85 e4 test %r12,%r12 0.00 : 5ae3f3: 75 db jne 5ae3d0 : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : rstate->largs = outlist; 0.00 : 5ae3f5: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 5ae3f9: 4c 89 68 18 mov %r13,0x18(%rax) : Assert(list_length(rcexpr->rargs) == nopers); : outlist = NIL; : foreach(l, rcexpr->rargs) 0.00 : 5ae3fd: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae401: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 5ae405: 48 85 c0 test %rax,%rax 0.00 : 5ae408: 0f 84 49 0a 00 00 je 5aee57 0.00 : 5ae40e: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5ae412: 4d 85 e4 test %r12,%r12 0.00 : 5ae415: 0f 84 3c 0a 00 00 je 5aee57 0.00 : 5ae41b: 45 31 ed xor %r13d,%r13d 0.00 : 5ae41e: 66 90 xchg %ax,%ax : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae420: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 5ae424: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae428: e8 93 f6 ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5ae42d: 4c 89 ef mov %r13,%rdi : foreach(l, rcexpr->rargs) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae430: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5ae433: e8 48 3a 03 00 callq 5e1e80 : outlist = lappend(outlist, estate); : } : rstate->largs = outlist; : Assert(list_length(rcexpr->rargs) == nopers); : outlist = NIL; : foreach(l, rcexpr->rargs) 0.00 : 5ae438: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); 0.00 : 5ae43d: 49 89 c5 mov %rax,%r13 : outlist = lappend(outlist, estate); : } : rstate->largs = outlist; : Assert(list_length(rcexpr->rargs) == nopers); : outlist = NIL; : foreach(l, rcexpr->rargs) 0.00 : 5ae440: 4d 85 e4 test %r12,%r12 0.00 : 5ae443: 75 db jne 5ae420 : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : rstate->rargs = outlist; 0.00 : 5ae445: 48 8b 45 a8 mov -0x58(%rbp),%rax : Assert(list_length(rcexpr->opfamilies) == nopers); : rstate->funcs = (FmgrInfo *) palloc(nopers * sizeof(FmgrInfo)); 0.00 : 5ae449: 48 63 db movslq %ebx,%rbx 0.00 : 5ae44c: 48 8d 3c 5b lea (%rbx,%rbx,2),%rdi : rstate->collations = (Oid *) palloc(nopers * sizeof(Oid)); 0.00 : 5ae450: 48 c1 e3 02 shl $0x2,%rbx : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : rstate->rargs = outlist; : Assert(list_length(rcexpr->opfamilies) == nopers); : rstate->funcs = (FmgrInfo *) palloc(nopers * sizeof(FmgrInfo)); 0.00 : 5ae454: 48 c1 e7 04 shl $0x4,%rdi : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : rstate->rargs = outlist; 0.00 : 5ae458: 4c 89 68 20 mov %r13,0x20(%rax) : Assert(list_length(rcexpr->opfamilies) == nopers); : rstate->funcs = (FmgrInfo *) palloc(nopers * sizeof(FmgrInfo)); 0.00 : 5ae45c: e8 ef a8 1e 00 callq 798d50 0.00 : 5ae461: 48 8b 55 a8 mov -0x58(%rbp),%rdx : rstate->collations = (Oid *) palloc(nopers * sizeof(Oid)); 0.00 : 5ae465: 48 89 df mov %rbx,%rdi : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : rstate->rargs = outlist; : Assert(list_length(rcexpr->opfamilies) == nopers); : rstate->funcs = (FmgrInfo *) palloc(nopers * sizeof(FmgrInfo)); 0.00 : 5ae468: 48 89 42 28 mov %rax,0x28(%rdx) : rstate->collations = (Oid *) palloc(nopers * sizeof(Oid)); 0.00 : 5ae46c: e8 df a8 1e 00 callq 798d50 0.00 : 5ae471: 48 8b 5d a8 mov -0x58(%rbp),%rbx 0.00 : 5ae475: 31 c9 xor %ecx,%ecx 0.00 : 5ae477: 48 89 43 30 mov %rax,0x30(%rbx) : i = 0; : forthree(l, rcexpr->opnos, l2, rcexpr->opfamilies, l3, rcexpr->inputcollids) 0.00 : 5ae47b: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae47f: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5ae483: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 5ae48a: 00 0.00 : 5ae48b: 48 85 c0 test %rax,%rax 0.00 : 5ae48e: 74 0e je 5ae49e 0.00 : 5ae490: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5ae494: 48 85 c0 test %rax,%rax 0.00 : 5ae497: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 5ae49b: 0f 95 c1 setne %cl 0.00 : 5ae49e: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5ae4a2: 45 31 ff xor %r15d,%r15d 0.00 : 5ae4a5: 31 d2 xor %edx,%edx 0.00 : 5ae4a7: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 5ae4ab: 48 85 c0 test %rax,%rax 0.00 : 5ae4ae: 74 0a je 5ae4ba 0.00 : 5ae4b0: 4c 8b 78 08 mov 0x8(%rax),%r15 0.00 : 5ae4b4: 4d 85 ff test %r15,%r15 0.00 : 5ae4b7: 0f 95 c2 setne %dl 0.00 : 5ae4ba: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5ae4be: 45 31 ed xor %r13d,%r13d 0.00 : 5ae4c1: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 5ae4c5: 48 85 c0 test %rax,%rax 0.00 : 5ae4c8: 74 04 je 5ae4ce 0.00 : 5ae4ca: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 5ae4ce: 84 c9 test %cl,%cl 0.00 : 5ae4d0: 0f 84 a7 00 00 00 je 5ae57d 0.00 : 5ae4d6: 84 d2 test %dl,%dl 0.00 : 5ae4d8: 0f 84 9f 00 00 00 je 5ae57d 0.00 : 5ae4de: 4d 85 ed test %r13,%r13 0.00 : 5ae4e1: 0f 84 96 00 00 00 je 5ae57d 0.00 : 5ae4e7: 45 31 f6 xor %r14d,%r14d 0.00 : 5ae4ea: eb 16 jmp 5ae502 0.00 : 5ae4ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5ae4f0: 4d 85 ff test %r15,%r15 0.00 : 5ae4f3: 0f 84 84 00 00 00 je 5ae57d 0.00 : 5ae4f9: 4d 85 ed test %r13,%r13 0.00 : 5ae4fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5ae500: 74 7b je 5ae57d : int strategy; : Oid lefttype; : Oid righttype; : Oid proc; : : get_op_opfamily_properties(opno, opfamily, false, 0.00 : 5ae502: 48 8b 45 c0 mov -0x40(%rbp),%rax : rstate->collations = (Oid *) palloc(nopers * sizeof(Oid)); : i = 0; : forthree(l, rcexpr->opnos, l2, rcexpr->opfamilies, l3, rcexpr->inputcollids) : { : Oid opno = lfirst_oid(l); : Oid opfamily = lfirst_oid(l2); 0.00 : 5ae506: 41 8b 1f mov (%r15),%ebx : int strategy; : Oid lefttype; : Oid righttype; : Oid proc; : : get_op_opfamily_properties(opno, opfamily, false, 0.00 : 5ae509: 4c 8d 4d cc lea -0x34(%rbp),%r9 0.00 : 5ae50d: 4c 8d 45 d0 lea -0x30(%rbp),%r8 0.00 : 5ae511: 48 8d 4d d4 lea -0x2c(%rbp),%rcx 0.00 : 5ae515: 31 d2 xor %edx,%edx : i = 0; : forthree(l, rcexpr->opnos, l2, rcexpr->opfamilies, l3, rcexpr->inputcollids) : { : Oid opno = lfirst_oid(l); : Oid opfamily = lfirst_oid(l2); : Oid inputcollid = lfirst_oid(l3); 0.00 : 5ae517: 45 8b 65 00 mov 0x0(%r13),%r12d : int strategy; : Oid lefttype; : Oid righttype; : Oid proc; : : get_op_opfamily_properties(opno, opfamily, false, 0.00 : 5ae51b: 8b 38 mov (%rax),%edi 0.00 : 5ae51d: 89 de mov %ebx,%esi 0.00 : 5ae51f: e8 ec 51 1c 00 callq 773710 : &strategy, : &lefttype, : &righttype); : proc = get_opfamily_proc(opfamily, 0.00 : 5ae524: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 5ae527: 8b 75 d0 mov -0x30(%rbp),%esi 0.00 : 5ae52a: 89 df mov %ebx,%edi 0.00 : 5ae52c: b9 01 00 00 00 mov $0x1,%ecx : * If we enforced permissions checks on index support : * functions, we'd need to make a check here. But the : * index support machinery doesn't do that, and neither : * does this code. : */ : fmgr_info(proc, &(rstate->funcs[i])); 0.00 : 5ae531: 49 63 de movslq %r14d,%rbx : rstate->collations[i] = inputcollid; : i++; 0.00 : 5ae534: 41 83 c6 01 add $0x1,%r14d : : get_op_opfamily_properties(opno, opfamily, false, : &strategy, : &lefttype, : &righttype); : proc = get_opfamily_proc(opfamily, 0.00 : 5ae538: e8 73 43 1c 00 callq 7728b0 : * If we enforced permissions checks on index support : * functions, we'd need to make a check here. But the : * index support machinery doesn't do that, and neither : * does this code. : */ : fmgr_info(proc, &(rstate->funcs[i])); 0.00 : 5ae53d: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5ae541: 48 8d 34 5b lea (%rbx,%rbx,2),%rsi : : get_op_opfamily_properties(opno, opfamily, false, : &strategy, : &lefttype, : &righttype); : proc = get_opfamily_proc(opfamily, 0.00 : 5ae545: 89 c7 mov %eax,%edi : * If we enforced permissions checks on index support : * functions, we'd need to make a check here. But the : * index support machinery doesn't do that, and neither : * does this code. : */ : fmgr_info(proc, &(rstate->funcs[i])); 0.00 : 5ae547: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 5ae54b: 48 03 72 28 add 0x28(%rdx),%rsi 0.00 : 5ae54f: e8 0c 1b 1d 00 callq 780060 : rstate->collations[i] = inputcollid; 0.00 : 5ae554: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5ae558: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 5ae55c: 44 89 24 98 mov %r12d,(%rax,%rbx,4) : rstate->rargs = outlist; : Assert(list_length(rcexpr->opfamilies) == nopers); : rstate->funcs = (FmgrInfo *) palloc(nopers * sizeof(FmgrInfo)); : rstate->collations = (Oid *) palloc(nopers * sizeof(Oid)); : i = 0; : forthree(l, rcexpr->opnos, l2, rcexpr->opfamilies, l3, rcexpr->inputcollids) 0.00 : 5ae560: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 5ae564: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5ae568: 48 85 db test %rbx,%rbx 0.00 : 5ae56b: 48 89 5d c0 mov %rbx,-0x40(%rbp) 0.00 : 5ae56f: 4d 8b 7f 08 mov 0x8(%r15),%r15 0.00 : 5ae573: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 5ae577: 0f 85 73 ff ff ff jne 5ae4f0 : */ : fmgr_info(proc, &(rstate->funcs[i])); : rstate->collations[i] = inputcollid; : i++; : } : state = (ExprState *) rstate; 0.00 : 5ae57d: 48 8b 45 a8 mov -0x58(%rbp),%rax : } : break; 0.00 : 5ae581: e9 aa f6 ff ff jmpq 5adc30 0.00 : 5ae586: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ae58d: 00 00 00 : } : break; : case T_ArrayExpr: : { : ArrayExpr *arrayexpr = (ArrayExpr *) node; : ArrayExprState *astate = makeNode(ArrayExprState); 0.00 : 5ae590: 48 8b 3d c9 c2 60 00 mov 0x60c2c9(%rip),%rdi # bba860 0.00 : 5ae597: be 28 00 00 00 mov $0x28,%esi 0.00 : 5ae59c: e8 6f a8 1e 00 callq 798e10 0.00 : 5ae5a1: c7 00 a2 01 00 00 movl $0x1a2,(%rax) : List *outlist = NIL; : ListCell *l; : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArray; 0.00 : 5ae5a7: 48 c7 40 10 70 f9 5a movq $0x5af970,0x10(%rax) 0.00 : 5ae5ae: 00 : } : break; : case T_ArrayExpr: : { : ArrayExpr *arrayexpr = (ArrayExpr *) node; : ArrayExprState *astate = makeNode(ArrayExprState); 0.00 : 5ae5af: 49 89 c5 mov %rax,%r13 : List *outlist = NIL; : ListCell *l; : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArray; : foreach(l, arrayexpr->elements) 0.00 : 5ae5b2: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae5b6: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 5ae5ba: 48 85 c0 test %rax,%rax 0.00 : 5ae5bd: 0f 84 8c 08 00 00 je 5aee4f 0.00 : 5ae5c3: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5ae5c7: 48 85 db test %rbx,%rbx 0.00 : 5ae5ca: 0f 84 7f 08 00 00 je 5aee4f 0.00 : 5ae5d0: 45 31 e4 xor %r12d,%r12d 0.00 : 5ae5d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae5d8: 48 8b 3b mov (%rbx),%rdi 0.00 : 5ae5db: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae5df: e8 dc f4 ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5ae5e4: 4c 89 e7 mov %r12,%rdi : foreach(l, arrayexpr->elements) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); 0.00 : 5ae5e7: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5ae5ea: e8 91 38 03 00 callq 5e1e80 : ArrayExprState *astate = makeNode(ArrayExprState); : List *outlist = NIL; : ListCell *l; : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArray; : foreach(l, arrayexpr->elements) 0.00 : 5ae5ef: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); 0.00 : 5ae5f3: 49 89 c4 mov %rax,%r12 : ArrayExprState *astate = makeNode(ArrayExprState); : List *outlist = NIL; : ListCell *l; : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArray; : foreach(l, arrayexpr->elements) 0.00 : 5ae5f6: 48 85 db test %rbx,%rbx 0.00 : 5ae5f9: 75 dd jne 5ae5d8 : ExprState *estate; : : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : } : astate->elements = outlist; 0.00 : 5ae5fb: 4d 89 65 18 mov %r12,0x18(%r13) : /* do one-time catalog lookup for type info */ : get_typlenbyvalalign(arrayexpr->element_typeid, 0.00 : 5ae5ff: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5ae603: 49 8d 4d 23 lea 0x23(%r13),%rcx 0.00 : 5ae607: 49 8d 55 22 lea 0x22(%r13),%rdx 0.00 : 5ae60b: 49 8d 75 20 lea 0x20(%r13),%rsi 0.00 : 5ae60f: 8b 7b 0c mov 0xc(%rbx),%edi 0.00 : 5ae612: e8 59 48 1c 00 callq 772e70 : &astate->elemlength, : &astate->elembyval, : &astate->elemalign); : state = (ExprState *) astate; 0.00 : 5ae617: 4c 89 e8 mov %r13,%rax : } : break; 0.00 : 5ae61a: e9 11 f6 ff ff jmpq 5adc30 : case T_RowExpr: : { : RowExpr *rowexpr = (RowExpr *) node; : RowExprState *rstate = makeNode(RowExprState); 0.00 : 5ae61f: 48 8b 3d 3a c2 60 00 mov 0x60c23a(%rip),%rdi # bba860 0.00 : 5ae626: be 28 00 00 00 mov $0x28,%esi 0.00 : 5ae62b: e8 e0 a7 1e 00 callq 798e10 0.00 : 5ae630: 48 89 45 a0 mov %rax,-0x60(%rbp) : Form_pg_attribute *attrs; : List *outlist = NIL; : ListCell *l; : int i; : : rstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRow; 0.00 : 5ae634: 48 c7 40 10 80 f8 5a movq $0x5af880,0x10(%rax) 0.00 : 5ae63b: 00 : } : break; : case T_RowExpr: : { : RowExpr *rowexpr = (RowExpr *) node; : RowExprState *rstate = makeNode(RowExprState); 0.00 : 5ae63c: c7 00 a3 01 00 00 movl $0x1a3,(%rax) : ListCell *l; : int i; : : rstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRow; : /* Build tupdesc to describe result tuples */ : if (rowexpr->row_typeid == RECORDOID) 0.00 : 5ae642: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae646: 8b 78 10 mov 0x10(%rax),%edi 0.00 : 5ae649: 81 ff c9 08 00 00 cmp $0x8c9,%edi 0.00 : 5ae64f: 0f 84 bc 05 00 00 je 5aec11 : /* we won't need to redo this at runtime */ : } : else : { : /* it's been cast to a named type, use that */ : rstate->tupdesc = lookup_rowtype_tupdesc_copy(rowexpr->row_typeid, -1); 0.00 : 5ae655: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5ae65a: e8 d1 7b 1c 00 callq 776230 0.00 : 5ae65f: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 5ae663: 48 89 43 20 mov %rax,0x20(%rbx) : } : /* Set up evaluation, skipping any deleted columns */ : Assert(list_length(rowexpr->args) <= rstate->tupdesc->natts); : attrs = rstate->tupdesc->attrs; 0.00 : 5ae667: 48 8b 55 a0 mov -0x60(%rbp),%rdx : i = 0; : foreach(l, rowexpr->args) 0.00 : 5ae66b: 48 8b 5d 98 mov -0x68(%rbp),%rbx : /* it's been cast to a named type, use that */ : rstate->tupdesc = lookup_rowtype_tupdesc_copy(rowexpr->row_typeid, -1); : } : /* Set up evaluation, skipping any deleted columns */ : Assert(list_length(rowexpr->args) <= rstate->tupdesc->natts); : attrs = rstate->tupdesc->attrs; 0.00 : 5ae66f: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 5ae673: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5ae677: 48 89 45 b0 mov %rax,-0x50(%rbp) : i = 0; : foreach(l, rowexpr->args) 0.00 : 5ae67b: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 5ae67f: 48 85 c0 test %rax,%rax 0.00 : 5ae682: 0f 84 43 04 00 00 je 5aeacb 0.00 : 5ae688: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5ae68c: 4d 85 e4 test %r12,%r12 0.00 : 5ae68f: 0f 84 36 04 00 00 je 5aeacb 0.00 : 5ae695: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 5ae69c: 00 0.00 : 5ae69d: 45 31 f6 xor %r14d,%r14d 0.00 : 5ae6a0: eb 4b jmp 5ae6ed 0.00 : 5ae6a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Guard against ALTER COLUMN TYPE on rowtype since : * the RowExpr was created. XXX should we check : * typmod too? Not sure we can be sure it'll be the : * same. : */ : if (exprType((Node *) e) != attrs[i]->atttypid) 0.00 : 5ae6a8: 4c 89 ff mov %r15,%rdi : Assert(list_length(rowexpr->args) <= rstate->tupdesc->natts); : attrs = rstate->tupdesc->attrs; : i = 0; : foreach(l, rowexpr->args) : { : Expr *e = (Expr *) lfirst(l); 0.00 : 5ae6ab: 4d 89 fd mov %r15,%r13 : * Guard against ALTER COLUMN TYPE on rowtype since : * the RowExpr was created. XXX should we check : * typmod too? Not sure we can be sure it'll be the : * same. : */ : if (exprType((Node *) e) != attrs[i]->atttypid) 0.00 : 5ae6ae: e8 1d 26 03 00 callq 5e0cd0 0.00 : 5ae6b3: 48 8b 13 mov (%rbx),%rdx 0.00 : 5ae6b6: 3b 42 44 cmp 0x44(%rdx),%eax 0.00 : 5ae6b9: 0f 85 11 07 00 00 jne 5aedd0 : * don't really care what type of NULL it is, so : * always make an int4 NULL. : */ : e = (Expr *) makeNullConst(INT4OID, -1, InvalidOid); : } : estate = ExecInitExpr(e, parent); 0.00 : 5ae6bf: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae6c3: 4c 89 ef mov %r13,%rdi 0.00 : 5ae6c6: e8 f5 f3 ff ff callq 5adac0 : outlist = lappend(outlist, estate); 0.00 : 5ae6cb: 48 8b 7d b8 mov -0x48(%rbp),%rdi : * don't really care what type of NULL it is, so : * always make an int4 NULL. : */ : e = (Expr *) makeNullConst(INT4OID, -1, InvalidOid); : } : estate = ExecInitExpr(e, parent); 0.00 : 5ae6cf: 48 89 c6 mov %rax,%rsi : outlist = lappend(outlist, estate); 0.00 : 5ae6d2: e8 a9 37 03 00 callq 5e1e80 0.00 : 5ae6d7: 48 89 45 b8 mov %rax,-0x48(%rbp) : } : /* Set up evaluation, skipping any deleted columns */ : Assert(list_length(rowexpr->args) <= rstate->tupdesc->natts); : attrs = rstate->tupdesc->attrs; : i = 0; : foreach(l, rowexpr->args) 0.00 : 5ae6db: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5ae6e0: 4d 85 e4 test %r12,%r12 0.00 : 5ae6e3: 0f 84 ef 03 00 00 je 5aead8 : */ : e = (Expr *) makeNullConst(INT4OID, -1, InvalidOid); : } : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : i++; 0.00 : 5ae6e9: 41 83 c6 01 add $0x1,%r14d : foreach(l, rowexpr->args) : { : Expr *e = (Expr *) lfirst(l); : ExprState *estate; : : if (!attrs[i]->attisdropped) 0.00 : 5ae6ed: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 5ae6f1: 49 63 c6 movslq %r14d,%rax : Assert(list_length(rowexpr->args) <= rstate->tupdesc->natts); : attrs = rstate->tupdesc->attrs; : i = 0; : foreach(l, rowexpr->args) : { : Expr *e = (Expr *) lfirst(l); 0.00 : 5ae6f4: 4d 8b 3c 24 mov (%r12),%r15 : ExprState *estate; : : if (!attrs[i]->attisdropped) 0.00 : 5ae6f8: 48 8d 1c c2 lea (%rdx,%rax,8),%rbx 0.00 : 5ae6fc: 48 8b 03 mov (%rbx),%rax 0.00 : 5ae6ff: 80 78 61 00 cmpb $0x0,0x61(%rax) 0.00 : 5ae703: 74 a3 je 5ae6a8 : /* : * Ignore original expression and insert a NULL. We : * don't really care what type of NULL it is, so : * always make an int4 NULL. : */ : e = (Expr *) makeNullConst(INT4OID, -1, InvalidOid); 0.00 : 5ae705: 31 d2 xor %edx,%edx 0.00 : 5ae707: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5ae70c: bf 17 00 00 00 mov $0x17,%edi 0.00 : 5ae711: e8 4a 34 04 00 callq 5f1b60 0.00 : 5ae716: 49 89 c5 mov %rax,%r13 0.00 : 5ae719: eb a4 jmp 5ae6bf : } : break; : case T_FieldStore: : { : FieldStore *fstore = (FieldStore *) node; : FieldStoreState *fstate = makeNode(FieldStoreState); 0.00 : 5ae71b: 48 8b 3d 3e c1 60 00 mov 0x60c13e(%rip),%rdi # bba860 0.00 : 5ae722: be 30 00 00 00 mov $0x30,%esi 0.00 : 5ae727: e8 e4 a6 1e 00 callq 798e10 0.00 : 5ae72c: c7 00 9c 01 00 00 movl $0x19c,(%rax) : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalFieldStore; 0.00 : 5ae732: 48 c7 40 10 90 04 5b movq $0x5b0490,0x10(%rax) 0.00 : 5ae739: 00 : } : break; : case T_FieldStore: : { : FieldStore *fstore = (FieldStore *) node; : FieldStoreState *fstate = makeNode(FieldStoreState); 0.00 : 5ae73a: 48 89 c3 mov %rax,%rbx : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalFieldStore; : fstate->arg = ExecInitExpr(fstore->arg, parent); 0.00 : 5ae73d: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae741: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae745: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 5ae749: e8 72 f3 ff ff callq 5adac0 0.00 : 5ae74e: 48 89 43 18 mov %rax,0x18(%rbx) : fstate->newvals = (List *) ExecInitExpr((Expr *) fstore->newvals, parent); 0.00 : 5ae752: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae756: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae75a: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 5ae75e: e8 5d f3 ff ff callq 5adac0 : fstate->argdesc = NULL; 0.00 : 5ae763: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 5ae76a: 00 : FieldStore *fstore = (FieldStore *) node; : FieldStoreState *fstate = makeNode(FieldStoreState); : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalFieldStore; : fstate->arg = ExecInitExpr(fstore->arg, parent); : fstate->newvals = (List *) ExecInitExpr((Expr *) fstore->newvals, parent); 0.00 : 5ae76b: 48 89 43 20 mov %rax,0x20(%rbx) : fstate->argdesc = NULL; : state = (ExprState *) fstate; 0.00 : 5ae76f: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5ae772: e9 b9 f4 ff ff jmpq 5adc30 : } : break; : case T_FuncExpr: : { : FuncExpr *funcexpr = (FuncExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); 0.00 : 5ae777: 48 8b 3d e2 c0 60 00 mov 0x60c0e2(%rip),%rdi # bba860 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4521 50.00 : 5ae77e: be 18 04 00 00 mov $0x418,%esi 0.00 : 5ae783: e8 98 a8 1e 00 callq 799020 0.00 : 5ae788: c7 00 96 01 00 00 movl $0x196,(%rax) : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalFunc; 0.00 : 5ae78e: 48 c7 40 10 a0 1f 5b movq $0x5b1fa0,0x10(%rax) 0.00 : 5ae795: 00 : } : break; : case T_FuncExpr: : { : FuncExpr *funcexpr = (FuncExpr *) node; : FuncExprState *fstate = makeNode(FuncExprState); 0.00 : 5ae796: 48 89 c3 mov %rax,%rbx : : fstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalFunc; : fstate->args = (List *) 0.00 : 5ae799: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae79d: 48 8b 7a 20 mov 0x20(%rdx),%rdi 0.00 : 5ae7a1: e9 73 f4 ff ff jmpq 5adc19 0.00 : 5ae7a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ae7ad: 00 00 00 : } : break; : case T_WindowFunc: : { : WindowFunc *wfunc = (WindowFunc *) node; : WindowFuncExprState *wfstate = makeNode(WindowFuncExprState); 0.00 : 5ae7b0: 48 8b 3d a9 c0 60 00 mov 0x60c0a9(%rip),%rdi # bba860 0.00 : 5ae7b7: be 30 00 00 00 mov $0x30,%esi 0.00 : 5ae7bc: e8 4f a6 1e 00 callq 798e10 0.00 : 5ae7c1: c7 00 94 01 00 00 movl $0x194,(%rax) : : wfstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalWindowFunc; 0.00 : 5ae7c7: 48 c7 40 10 80 d8 5a movq $0x5ad880,0x10(%rax) 0.00 : 5ae7ce: 00 : } : break; : case T_WindowFunc: : { : WindowFunc *wfunc = (WindowFunc *) node; : WindowFuncExprState *wfstate = makeNode(WindowFuncExprState); 0.00 : 5ae7cf: 48 89 c3 mov %rax,%rbx : : wfstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalWindowFunc; : if (parent && IsA(parent, WindowAggState)) 0.00 : 5ae7d2: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 5ae7d7: 74 10 je 5ae7e9 0.00 : 5ae7d9: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 5ae7dd: 81 38 e5 00 00 00 cmpl $0xe5,(%rax) 0.00 : 5ae7e3: 0f 84 64 04 00 00 je 5aec4d : errmsg("window function calls cannot be nested"))); : } : else : { : /* planner messed up */ : elog(ERROR, "WindowFunc found in non-WindowAgg plan node"); 0.00 : 5ae7e9: ba ff ad 88 00 mov $0x88adff,%edx 0.00 : 5ae7ee: be 8b 11 00 00 mov $0x118b,%esi 0.00 : 5ae7f3: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5ae7f8: e8 23 cc 1c 00 callq 77b420 0.00 : 5ae7fd: be d8 a5 88 00 mov $0x88a5d8,%esi 0.00 : 5ae802: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ae807: 31 c0 xor %eax,%eax 0.00 : 5ae809: e8 22 ca 1c 00 callq 77b230 0.00 : 5ae80e: e8 bd ac eb ff callq 4694d0 : } : break; : case T_ArrayRef: : { : ArrayRef *aref = (ArrayRef *) node; : ArrayRefExprState *astate = makeNode(ArrayRefExprState); 0.00 : 5ae813: 48 8b 3d 46 c0 60 00 mov 0x60c046(%rip),%rdi # bba860 0.00 : 5ae81a: be 40 00 00 00 mov $0x40,%esi 0.00 : 5ae81f: e8 ec a5 1e 00 callq 798e10 0.00 : 5ae824: 48 89 c3 mov %rax,%rbx 0.00 : 5ae827: c7 00 95 01 00 00 movl $0x195,(%rax) : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArrayRef; 0.00 : 5ae82d: 48 c7 40 10 60 20 5b movq $0x5b2060,0x10(%rax) 0.00 : 5ae834: 00 : astate->refupperindexpr = (List *) 0.00 : 5ae835: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae839: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae83d: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 5ae841: e8 7a f2 ff ff callq 5adac0 0.00 : 5ae846: 48 89 43 18 mov %rax,0x18(%rbx) : ExecInitExpr((Expr *) aref->refupperindexpr, parent); : astate->reflowerindexpr = (List *) 0.00 : 5ae84a: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae84e: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae852: 48 8b 7a 20 mov 0x20(%rdx),%rdi 0.00 : 5ae856: e8 65 f2 ff ff callq 5adac0 0.00 : 5ae85b: 48 89 43 20 mov %rax,0x20(%rbx) : ExecInitExpr((Expr *) aref->reflowerindexpr, parent); : astate->refexpr = ExecInitExpr(aref->refexpr, parent); 0.00 : 5ae85f: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae863: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae867: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 5ae86b: e8 50 f2 ff ff callq 5adac0 0.00 : 5ae870: 48 89 43 28 mov %rax,0x28(%rbx) : astate->refassgnexpr = ExecInitExpr(aref->refassgnexpr, 0.00 : 5ae874: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae878: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae87c: 48 8b 7a 30 mov 0x30(%rdx),%rdi 0.00 : 5ae880: e8 3b f2 ff ff callq 5adac0 0.00 : 5ae885: 48 89 43 30 mov %rax,0x30(%rbx) : parent); : /* do one-time catalog lookups for type info */ : astate->refattrlength = get_typlen(aref->refarraytype); 0.00 : 5ae889: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae88d: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 5ae890: e8 bb 3b 1c 00 callq 772450 0.00 : 5ae895: 66 89 43 38 mov %ax,0x38(%rbx) : get_typlenbyvalalign(aref->refelemtype, 0.00 : 5ae899: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae89d: 48 8d 4b 3d lea 0x3d(%rbx),%rcx 0.00 : 5ae8a1: 48 8d 53 3c lea 0x3c(%rbx),%rdx 0.00 : 5ae8a5: 48 8d 73 3a lea 0x3a(%rbx),%rsi 0.00 : 5ae8a9: 8b 78 08 mov 0x8(%rax),%edi 0.00 : 5ae8ac: e8 bf 45 1c 00 callq 772e70 : &astate->refelemlength, : &astate->refelembyval, : &astate->refelemalign); : state = (ExprState *) astate; 0.00 : 5ae8b1: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5ae8b4: e9 77 f3 ff ff jmpq 5adc30 0.00 : 5ae8b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case T_CoerceToDomainValue: : state = (ExprState *) makeNode(ExprState); : state->evalfunc = ExecEvalCoerceToDomainValue; : break; : case T_CaseTestExpr: : state = (ExprState *) makeNode(ExprState); 0.00 : 5ae8c0: 48 8b 3d 99 bf 60 00 mov 0x60bf99(%rip),%rdi # bba860 0.00 : 5ae8c7: be 18 00 00 00 mov $0x18,%esi 0.00 : 5ae8cc: e8 3f a5 1e 00 callq 798e10 0.00 : 5ae8d1: c7 00 90 01 00 00 movl $0x190,(%rax) : state->evalfunc = ExecEvalCaseTestExpr; 0.00 : 5ae8d7: 48 c7 40 10 b0 cc 5a movq $0x5accb0,0x10(%rax) 0.00 : 5ae8de: 00 : break; 0.00 : 5ae8df: e9 4c f3 ff ff jmpq 5adc30 : } : break; : case T_CaseExpr: : { : CaseExpr *caseexpr = (CaseExpr *) node; : CaseExprState *cstate = makeNode(CaseExprState); 0.00 : 5ae8e4: 48 8b 3d 75 bf 60 00 mov 0x60bf75(%rip),%rdi # bba860 0.00 : 5ae8eb: be 30 00 00 00 mov $0x30,%esi 0.00 : 5ae8f0: e8 1b a5 1e 00 callq 798e10 0.00 : 5ae8f5: c7 00 a0 01 00 00 movl $0x1a0,(%rax) : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCase; 0.00 : 5ae8fb: 48 c7 40 10 c0 cb 5a movq $0x5acbc0,0x10(%rax) 0.00 : 5ae902: 00 : } : break; : case T_CaseExpr: : { : CaseExpr *caseexpr = (CaseExpr *) node; : CaseExprState *cstate = makeNode(CaseExprState); 0.00 : 5ae903: 49 89 c7 mov %rax,%r15 : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCase; : cstate->arg = ExecInitExpr(caseexpr->arg, parent); 0.00 : 5ae906: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5ae90a: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae90e: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 5ae912: e8 a9 f1 ff ff callq 5adac0 0.00 : 5ae917: 49 89 47 18 mov %rax,0x18(%r15) : foreach(l, caseexpr->args) 0.00 : 5ae91b: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5ae91f: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 5ae923: 48 85 c0 test %rax,%rax 0.00 : 5ae926: 0f 84 03 05 00 00 je 5aee2f 0.00 : 5ae92c: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 5ae930: 4d 85 ed test %r13,%r13 0.00 : 5ae933: 0f 84 f6 04 00 00 je 5aee2f 0.00 : 5ae939: 45 31 f6 xor %r14d,%r14d 0.00 : 5ae93c: 0f 1f 40 00 nopl 0x0(%rax) : { : CaseWhen *when = (CaseWhen *) lfirst(l); 0.00 : 5ae940: 4d 8b 65 00 mov 0x0(%r13),%r12 : CaseWhenState *wstate = makeNode(CaseWhenState); 0.00 : 5ae944: 48 8b 3d 15 bf 60 00 mov 0x60bf15(%rip),%rdi # bba860 0.00 : 5ae94b: be 28 00 00 00 mov $0x28,%esi 0.00 : 5ae950: e8 bb a4 1e 00 callq 798e10 0.00 : 5ae955: c7 00 a1 01 00 00 movl $0x1a1,(%rax) : : Assert(IsA(when, CaseWhen)); : wstate->xprstate.evalfunc = NULL; /* not used */ 0.00 : 5ae95b: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5ae962: 00 : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCase; : cstate->arg = ExecInitExpr(caseexpr->arg, parent); : foreach(l, caseexpr->args) : { : CaseWhen *when = (CaseWhen *) lfirst(l); : CaseWhenState *wstate = makeNode(CaseWhenState); 0.00 : 5ae963: 48 89 c3 mov %rax,%rbx : : Assert(IsA(when, CaseWhen)); : wstate->xprstate.evalfunc = NULL; /* not used */ : wstate->xprstate.expr = (Expr *) when; 0.00 : 5ae966: 4c 89 60 08 mov %r12,0x8(%rax) : wstate->expr = ExecInitExpr(when->expr, parent); 0.00 : 5ae96a: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 5ae96f: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae973: e8 48 f1 ff ff callq 5adac0 0.00 : 5ae978: 48 89 43 18 mov %rax,0x18(%rbx) : wstate->result = ExecInitExpr(when->result, parent); 0.00 : 5ae97c: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 5ae981: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae985: e8 36 f1 ff ff callq 5adac0 : outlist = lappend(outlist, wstate); 0.00 : 5ae98a: 4c 89 f7 mov %r14,%rdi : : Assert(IsA(when, CaseWhen)); : wstate->xprstate.evalfunc = NULL; /* not used */ : wstate->xprstate.expr = (Expr *) when; : wstate->expr = ExecInitExpr(when->expr, parent); : wstate->result = ExecInitExpr(when->result, parent); 0.00 : 5ae98d: 48 89 43 20 mov %rax,0x20(%rbx) : outlist = lappend(outlist, wstate); 0.00 : 5ae991: 48 89 de mov %rbx,%rsi 0.00 : 5ae994: e8 e7 34 03 00 callq 5e1e80 : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCase; : cstate->arg = ExecInitExpr(caseexpr->arg, parent); : foreach(l, caseexpr->args) 0.00 : 5ae999: 4d 8b 6d 08 mov 0x8(%r13),%r13 : Assert(IsA(when, CaseWhen)); : wstate->xprstate.evalfunc = NULL; /* not used */ : wstate->xprstate.expr = (Expr *) when; : wstate->expr = ExecInitExpr(when->expr, parent); : wstate->result = ExecInitExpr(when->result, parent); : outlist = lappend(outlist, wstate); 0.00 : 5ae99d: 49 89 c6 mov %rax,%r14 : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCase; : cstate->arg = ExecInitExpr(caseexpr->arg, parent); : foreach(l, caseexpr->args) 0.00 : 5ae9a0: 4d 85 ed test %r13,%r13 0.00 : 5ae9a3: 75 9b jne 5ae940 : wstate->xprstate.expr = (Expr *) when; : wstate->expr = ExecInitExpr(when->expr, parent); : wstate->result = ExecInitExpr(when->result, parent); : outlist = lappend(outlist, wstate); : } : cstate->args = outlist; 0.00 : 5ae9a5: 4d 89 77 20 mov %r14,0x20(%r15) : cstate->defresult = ExecInitExpr(caseexpr->defresult, parent); 0.00 : 5ae9a9: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae9ad: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae9b1: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 5ae9b5: e8 06 f1 ff ff callq 5adac0 0.00 : 5ae9ba: 49 89 47 28 mov %rax,0x28(%r15) : state = (ExprState *) cstate; 0.00 : 5ae9be: 4c 89 f8 mov %r15,%rax : } : break; 0.00 : 5ae9c1: e9 6a f2 ff ff jmpq 5adc30 0.00 : 5ae9c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ae9cd: 00 00 00 : } : break; : case T_ArrayCoerceExpr: : { : ArrayCoerceExpr *acoerce = (ArrayCoerceExpr *) node; : ArrayCoerceExprState *astate = makeNode(ArrayCoerceExprState); 0.00 : 5ae9d0: 48 8b 3d 89 be 60 00 mov 0x60be89(%rip),%rdi # bba860 0.00 : 5ae9d7: be 60 00 00 00 mov $0x60,%esi 0.00 : 5ae9dc: e8 2f a4 1e 00 callq 798e10 0.00 : 5ae9e1: 48 89 c3 mov %rax,%rbx 0.00 : 5ae9e4: c7 00 9e 01 00 00 movl $0x19e,(%rax) : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArrayCoerceExpr; 0.00 : 5ae9ea: 48 c7 40 10 50 02 5b movq $0x5b0250,0x10(%rax) 0.00 : 5ae9f1: 00 : astate->arg = ExecInitExpr(acoerce->arg, parent); 0.00 : 5ae9f2: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5ae9f6: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5ae9fa: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5ae9fe: e8 bd f0 ff ff callq 5adac0 0.00 : 5aea03: 48 89 43 18 mov %rax,0x18(%rbx) : astate->resultelemtype = get_element_type(acoerce->resulttype); 0.00 : 5aea07: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5aea0b: 8b 7a 14 mov 0x14(%rdx),%edi 0.00 : 5aea0e: e8 5d 38 1c 00 callq 772270 : if (astate->resultelemtype == InvalidOid) 0.00 : 5aea13: 85 c0 test %eax,%eax : ArrayCoerceExpr *acoerce = (ArrayCoerceExpr *) node; : ArrayCoerceExprState *astate = makeNode(ArrayCoerceExprState); : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArrayCoerceExpr; : astate->arg = ExecInitExpr(acoerce->arg, parent); : astate->resultelemtype = get_element_type(acoerce->resulttype); 0.00 : 5aea15: 89 43 20 mov %eax,0x20(%rbx) : if (astate->resultelemtype == InvalidOid) 0.00 : 5aea18: 0f 84 c4 04 00 00 je 5aeee2 : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("target type is not an array"))); : /* Arrays over domains aren't supported yet */ : Assert(getBaseType(astate->resultelemtype) == : astate->resultelemtype); : astate->elemfunc.fn_oid = InvalidOid; /* not initialized */ 0.00 : 5aea1e: c7 43 30 00 00 00 00 movl $0x0,0x30(%rbx) : astate->amstate = (ArrayMapState *) palloc0(sizeof(ArrayMapState)); 0.00 : 5aea25: bf 90 00 00 00 mov $0x90,%edi 0.00 : 5aea2a: e8 41 a5 1e 00 callq 798f70 0.00 : 5aea2f: 48 89 43 58 mov %rax,0x58(%rbx) : state = (ExprState *) astate; 0.00 : 5aea33: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5aea36: e9 f5 f1 ff ff jmpq 5adc30 : case T_ConvertRowtypeExpr: : { : ConvertRowtypeExpr *convert = (ConvertRowtypeExpr *) node; : ConvertRowtypeExprState *cstate = makeNode(ConvertRowtypeExprState); 0.00 : 5aea3b: 48 8b 3d 1e be 60 00 mov 0x60be1e(%rip),%rdi # bba860 0.00 : 5aea42: be 40 00 00 00 mov $0x40,%esi 0.00 : 5aea47: e8 c4 a3 1e 00 callq 798e10 0.00 : 5aea4c: 48 89 c3 mov %rax,%rbx 0.00 : 5aea4f: c7 00 9f 01 00 00 movl $0x19f,(%rax) : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalConvertRowtype; 0.00 : 5aea55: 48 c7 40 10 00 01 5b movq $0x5b0100,0x10(%rax) 0.00 : 5aea5c: 00 0.00 : 5aea5d: e9 4e f3 ff ff jmpq 5addb0 0.00 : 5aea62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : state->evalfunc = ExecEvalCaseTestExpr; : break; : case T_Aggref: : { : Aggref *aggref = (Aggref *) node; : AggrefExprState *astate = makeNode(AggrefExprState); 0.00 : 5aea68: 48 8b 3d f1 bd 60 00 mov 0x60bdf1(%rip),%rdi # bba860 0.00 : 5aea6f: be 38 00 00 00 mov $0x38,%esi 0.00 : 5aea74: e8 97 a3 1e 00 callq 798e10 0.00 : 5aea79: c7 00 93 01 00 00 movl $0x193,(%rax) : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalAggref; 0.00 : 5aea7f: 48 c7 40 10 e0 d8 5a movq $0x5ad8e0,0x10(%rax) 0.00 : 5aea86: 00 : state->evalfunc = ExecEvalCaseTestExpr; : break; : case T_Aggref: : { : Aggref *aggref = (Aggref *) node; : AggrefExprState *astate = makeNode(AggrefExprState); 0.00 : 5aea87: 49 89 c4 mov %rax,%r12 : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalAggref; : if (parent && IsA(parent, AggState)) 0.00 : 5aea8a: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 5aea8f: 74 10 je 5aeaa1 0.00 : 5aea91: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 5aea95: 81 3a e4 00 00 00 cmpl $0xe4,(%rdx) 0.00 : 5aea9b: 0f 84 72 02 00 00 je 5aed13 : errmsg("aggregate function calls cannot be nested"))); : } : else : { : /* planner messed up */ : elog(ERROR, "Aggref found in non-Agg plan node"); 0.00 : 5aeaa1: ba ff ad 88 00 mov $0x88adff,%edx 0.00 : 5aeaa6: be 63 11 00 00 mov $0x1163,%esi 0.00 : 5aeaab: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5aeab0: e8 6b c9 1c 00 callq 77b420 0.00 : 5aeab5: be b0 a5 88 00 mov $0x88a5b0,%esi 0.00 : 5aeaba: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aeabf: 31 c0 xor %eax,%eax 0.00 : 5aeac1: e8 6a c7 1c 00 callq 77b230 0.00 : 5aeac6: e9 00 f4 ff ff jmpq 5adecb : */ : e = (Expr *) makeNullConst(INT4OID, -1, InvalidOid); : } : estate = ExecInitExpr(e, parent); : outlist = lappend(outlist, estate); : i++; 0.00 : 5aeacb: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 5aead2: 00 0.00 : 5aead3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : rstate->args = outlist; 0.00 : 5aead8: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 5aeadc: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 5aeae0: 48 89 43 18 mov %rax,0x18(%rbx) : state = (ExprState *) rstate; 0.00 : 5aeae4: 48 89 d8 mov %rbx,%rax : } : break; 0.00 : 5aeae7: e9 44 f1 ff ff jmpq 5adc30 0.00 : 5aeaec: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5aeaf0: 3d 55 01 00 00 cmp $0x155,%eax 0.00 : 5aeaf5: 74 51 je 5aeb48 0.00 : 5aeaf7: 3d 90 02 00 00 cmp $0x290,%eax 0.00 : 5aeafc: 0f 85 9e f3 ff ff jne 5adea0 0.00 : 5aeb02: 48 8b 55 98 mov -0x68(%rbp),%rdx : case T_List: : { : List *outlist = NIL; : ListCell *l; : : foreach(l, (List *) node) 0.00 : 5aeb06: 45 31 e4 xor %r12d,%r12d 0.00 : 5aeb09: 31 c0 xor %eax,%eax 0.00 : 5aeb0b: 48 8b 5a 08 mov 0x8(%rdx),%rbx 0.00 : 5aeb0f: 48 85 db test %rbx,%rbx 0.00 : 5aeb12: 0f 84 20 f1 ff ff je 5adc38 0.00 : 5aeb18: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5aeb1f: 00 : { : outlist = lappend(outlist, 0.00 : 5aeb20: 48 8b 3b mov (%rbx),%rdi 0.00 : 5aeb23: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5aeb27: e8 94 ef ff ff callq 5adac0 0.00 : 5aeb2c: 4c 89 e7 mov %r12,%rdi 0.00 : 5aeb2f: 48 89 c6 mov %rax,%rsi 0.00 : 5aeb32: e8 49 33 03 00 callq 5e1e80 : case T_List: : { : List *outlist = NIL; : ListCell *l; : : foreach(l, (List *) node) 0.00 : 5aeb37: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : outlist = lappend(outlist, 0.00 : 5aeb3b: 49 89 c4 mov %rax,%r12 : case T_List: : { : List *outlist = NIL; : ListCell *l; : : foreach(l, (List *) node) 0.00 : 5aeb3e: 48 85 db test %rbx,%rbx 0.00 : 5aeb41: 75 dd jne 5aeb20 0.00 : 5aeb43: e9 f0 f0 ff ff jmpq 5adc38 : state->evalfunc = ExecEvalCurrentOfExpr; : break; : case T_TargetEntry: : { : TargetEntry *tle = (TargetEntry *) node; : GenericExprState *gstate = makeNode(GenericExprState); 0.00 : 5aeb48: 48 8b 3d 11 bd 60 00 mov 0x60bd11(%rip),%rdi # bba860 0.00 : 5aeb4f: be 20 00 00 00 mov $0x20,%esi 0.00 : 5aeb54: e8 b7 a2 1e 00 callq 798e10 0.00 : 5aeb59: 48 89 c3 mov %rax,%rbx 0.00 : 5aeb5c: c7 00 91 01 00 00 movl $0x191,(%rax) : : gstate->xprstate.evalfunc = NULL; /* not used */ 0.00 : 5aeb62: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5aeb69: 00 0.00 : 5aeb6a: e9 41 f2 ff ff jmpq 5addb0 0.00 : 5aeb6f: 90 nop : state = (ExprState *) wstate; : state->evalfunc = (ExprStateEvalFunc) ExecEvalWholeRowVar; : } : else : { : state = (ExprState *) makeNode(ExprState); 0.00 : 5aeb70: 48 8b 3d e9 bc 60 00 mov 0x60bce9(%rip),%rdi # bba860 0.00 : 5aeb77: be 18 00 00 00 mov $0x18,%esi 0.00 : 5aeb7c: e8 8f a2 1e 00 callq 798e10 0.00 : 5aeb81: c7 00 90 01 00 00 movl $0x190,(%rax) : state->evalfunc = ExecEvalScalarVar; 0.00 : 5aeb87: 48 c7 40 10 30 15 5b movq $0x5b1530,0x10(%rax) 0.00 : 5aeb8e: 00 0.00 : 5aeb8f: e9 9c f0 ff ff jmpq 5adc30 0.00 : 5aeb94: 0f 1f 40 00 nopl 0x0(%rax) : state = (ExprState *) makeNode(ExprState); : state->evalfunc = ExecEvalConst; : break; : case T_Param: : state = (ExprState *) makeNode(ExprState); : switch (((Param *) node)->paramkind) 0.00 : 5aeb98: 83 e9 01 sub $0x1,%ecx 0.00 : 5aeb9b: 74 67 je 5aec04 : break; : case PARAM_EXTERN: : state->evalfunc = ExecEvalParamExtern; : break; : default: : elog(ERROR, "unrecognized paramkind: %d", 0.00 : 5aeb9d: ba ff ad 88 00 mov $0x88adff,%edx 0.00 : 5aeba2: be 34 11 00 00 mov $0x1134,%esi 0.00 : 5aeba7: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5aebac: e8 6f c8 1c 00 callq 77b420 0.00 : 5aebb1: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5aebb5: be 07 a4 88 00 mov $0x88a407,%esi 0.00 : 5aebba: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aebbf: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 5aebc2: 31 c0 xor %eax,%eax 0.00 : 5aebc4: e8 67 c6 1c 00 callq 77b230 0.00 : 5aebc9: e8 02 a9 eb ff callq 4694d0 : case T_BoolExpr: : { : BoolExpr *boolexpr = (BoolExpr *) node; : BoolExprState *bstate = makeNode(BoolExprState); : : switch (boolexpr->boolop) 0.00 : 5aebce: 83 f8 02 cmp $0x2,%eax 0.00 : 5aebd1: 74 6d je 5aec40 : break; : case NOT_EXPR: : bstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalNot; : break; : default: : elog(ERROR, "unrecognized boolop: %d", 0.00 : 5aebd3: ba ff ad 88 00 mov $0x88adff,%edx 0.00 : 5aebd8: be f5 11 00 00 mov $0x11f5,%esi 0.00 : 5aebdd: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5aebe2: e8 39 c8 1c 00 callq 77b420 0.00 : 5aebe7: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 5aebeb: be dd 31 87 00 mov $0x8731dd,%esi 0.00 : 5aebf0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aebf5: 31 c0 xor %eax,%eax 0.00 : 5aebf7: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 5aebfa: e8 31 c6 1c 00 callq 77b230 0.00 : 5aebff: e8 cc a8 eb ff callq 4694d0 : case T_Param: : state = (ExprState *) makeNode(ExprState); : switch (((Param *) node)->paramkind) : { : case PARAM_EXEC: : state->evalfunc = ExecEvalParamExec; 0.00 : 5aec04: 48 c7 42 10 30 26 5b movq $0x5b2630,0x10(%rdx) 0.00 : 5aec0b: 00 : break; 0.00 : 5aec0c: e9 1f f0 ff ff jmpq 5adc30 : rstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRow; : /* Build tupdesc to describe result tuples */ : if (rowexpr->row_typeid == RECORDOID) : { : /* generic record, use runtime type assignment */ : rstate->tupdesc = ExecTypeFromExprList(rowexpr->args, 0.00 : 5aec11: 48 8b 70 18 mov 0x18(%rax),%rsi 0.00 : 5aec15: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5aec19: e8 e2 50 00 00 callq 5b3d00 0.00 : 5aec1e: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 5aec22: 48 89 c7 mov %rax,%rdi 0.00 : 5aec25: 48 89 42 20 mov %rax,0x20(%rdx) : rowexpr->colnames); : BlessTupleDesc(rstate->tupdesc); 0.00 : 5aec29: e8 82 4f 00 00 callq 5b3bb0 0.00 : 5aec2e: e9 34 fa ff ff jmpq 5ae667 : { : case AND_EXPR: : bstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalAnd; : break; : case OR_EXPR: : bstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalOr; 0.00 : 5aec33: 48 c7 43 10 90 ca 5a movq $0x5aca90,0x10(%rbx) 0.00 : 5aec3a: 00 : break; 0.00 : 5aec3b: e9 70 f1 ff ff jmpq 5addb0 : case NOT_EXPR: : bstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalNot; 0.00 : 5aec40: 48 c7 43 10 40 ca 5a movq $0x5aca40,0x10(%rbx) 0.00 : 5aec47: 00 : break; 0.00 : 5aec48: e9 63 f1 ff ff jmpq 5addb0 : if (parent && IsA(parent, WindowAggState)) : { : WindowAggState *winstate = (WindowAggState *) parent; : int nfuncs; : : winstate->funcs = lcons(wfstate, winstate->funcs); 0.00 : 5aec4d: 48 8b b0 90 00 00 00 mov 0x90(%rax),%rsi 0.00 : 5aec54: 48 89 df mov %rbx,%rdi 0.00 : 5aec57: e8 f4 2b 03 00 callq 5e1850 0.00 : 5aec5c: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 5aec60: 48 89 82 90 00 00 00 mov %rax,0x90(%rdx) : nfuncs = ++winstate->numfuncs; 0.00 : 5aec67: 8b 82 98 00 00 00 mov 0x98(%rdx),%eax 0.00 : 5aec6d: 44 8d 60 01 lea 0x1(%rax),%r12d 0.00 : 5aec71: 44 89 a2 98 00 00 00 mov %r12d,0x98(%rdx) : if (wfunc->winagg) 0.00 : 5aec78: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5aec7c: 80 78 2d 00 cmpb $0x0,0x2d(%rax) 0.00 : 5aec80: 74 07 je 5aec89 : winstate->numaggs++; 0.00 : 5aec82: 83 82 9c 00 00 00 01 addl $0x1,0x9c(%rdx) : : wfstate->args = (List *) ExecInitExpr((Expr *) wfunc->args, 0.00 : 5aec89: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5aec8d: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5aec91: 48 8b 7a 18 mov 0x18(%rdx),%rdi 0.00 : 5aec95: e8 26 ee ff ff callq 5adac0 0.00 : 5aec9a: 48 89 43 18 mov %rax,0x18(%rbx) : parent); : wfstate->aggfilter = ExecInitExpr(wfunc->aggfilter, 0.00 : 5aec9e: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5aeca2: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5aeca6: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 5aecaa: e8 11 ee ff ff callq 5adac0 0.00 : 5aecaf: 48 89 43 20 mov %rax,0x20(%rbx) : * Complain if the windowfunc's arguments contain any : * windowfuncs; nested window functions are semantically : * nonsensical. (This should have been caught earlier, : * but we defend against it here anyway.) : */ : if (nfuncs != winstate->numfuncs) 0.00 : 5aecb3: 48 8b 55 90 mov -0x70(%rbp),%rdx : else : { : /* planner messed up */ : elog(ERROR, "WindowFunc found in non-WindowAgg plan node"); : } : state = (ExprState *) wfstate; 0.00 : 5aecb7: 48 89 d8 mov %rbx,%rax : * Complain if the windowfunc's arguments contain any : * windowfuncs; nested window functions are semantically : * nonsensical. (This should have been caught earlier, : * but we defend against it here anyway.) : */ : if (nfuncs != winstate->numfuncs) 0.00 : 5aecba: 44 3b a2 98 00 00 00 cmp 0x98(%rdx),%r12d 0.00 : 5aecc1: 0f 84 69 ef ff ff je 5adc30 : ereport(ERROR, 0.00 : 5aecc7: 45 31 c0 xor %r8d,%r8d 0.00 : 5aecca: b9 ff ad 88 00 mov $0x88adff,%ecx 0.00 : 5aeccf: ba 86 11 00 00 mov $0x1186,%edx 0.00 : 5aecd4: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5aecd9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aecde: e8 dd bd 1c 00 callq 77aac0 0.00 : 5aece3: 84 c0 test %al,%al 0.00 : 5aece5: 0f 84 e0 f1 ff ff je 5adecb 0.00 : 5aeceb: bf 20 0d 87 00 mov $0x870d20,%edi 0.00 : 5aecf0: 31 c0 xor %eax,%eax 0.00 : 5aecf2: e8 a9 db 1c 00 callq 77c8a0 0.00 : 5aecf7: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 5aecfc: 89 c3 mov %eax,%ebx : * the RowExpr was created. XXX should we check : * typmod too? Not sure we can be sure it'll be the : * same. : */ : if (exprType((Node *) e) != attrs[i]->atttypid) : ereport(ERROR, 0.00 : 5aecfe: e8 4d e0 1c 00 callq 77cd50 0.00 : 5aed03: 89 de mov %ebx,%esi 0.00 : 5aed05: 89 c7 mov %eax,%edi 0.00 : 5aed07: 31 c0 xor %eax,%eax 0.00 : 5aed09: e8 d2 b8 1c 00 callq 77a5e0 0.00 : 5aed0e: e9 b8 f1 ff ff jmpq 5adecb : if (parent && IsA(parent, AggState)) : { : AggState *aggstate = (AggState *) parent; : int naggs; : : aggstate->aggs = lcons(astate, aggstate->aggs); 0.00 : 5aed13: 48 8b b2 90 00 00 00 mov 0x90(%rdx),%rsi 0.00 : 5aed1a: 48 89 c7 mov %rax,%rdi 0.00 : 5aed1d: e8 2e 2b 03 00 callq 5e1850 0.00 : 5aed22: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 5aed26: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) : naggs = ++aggstate->numaggs; 0.00 : 5aed2d: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 5aed31: 8b 98 98 00 00 00 mov 0x98(%rax),%ebx : : astate->aggdirectargs = (List *) ExecInitExpr((Expr *) aggref->aggdirectargs, 0.00 : 5aed37: 48 89 c6 mov %rax,%rsi : { : AggState *aggstate = (AggState *) parent; : int naggs; : : aggstate->aggs = lcons(astate, aggstate->aggs); : naggs = ++aggstate->numaggs; 0.00 : 5aed3a: 83 c3 01 add $0x1,%ebx 0.00 : 5aed3d: 89 98 98 00 00 00 mov %ebx,0x98(%rax) : : astate->aggdirectargs = (List *) ExecInitExpr((Expr *) aggref->aggdirectargs, 0.00 : 5aed43: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5aed47: 48 8b 7a 18 mov 0x18(%rdx),%rdi 0.00 : 5aed4b: e8 70 ed ff ff callq 5adac0 0.00 : 5aed50: 49 89 44 24 18 mov %rax,0x18(%r12) : parent); : astate->args = (List *) ExecInitExpr((Expr *) aggref->args, 0.00 : 5aed55: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5aed59: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5aed5d: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 5aed61: e8 5a ed ff ff callq 5adac0 0.00 : 5aed66: 49 89 44 24 20 mov %rax,0x20(%r12) : parent); : astate->aggfilter = ExecInitExpr(aggref->aggfilter, 0.00 : 5aed6b: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5aed6f: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5aed73: 48 8b 7a 38 mov 0x38(%rdx),%rdi 0.00 : 5aed77: e8 44 ed ff ff callq 5adac0 0.00 : 5aed7c: 49 89 44 24 28 mov %rax,0x28(%r12) : * Complain if the aggregate's arguments contain any : * aggregates; nested agg functions are semantically : * nonsensical. (This should have been caught earlier, : * but we defend against it here anyway.) : */ : if (naggs != aggstate->numaggs) 0.00 : 5aed81: 48 8b 55 90 mov -0x70(%rbp),%rdx : else : { : /* planner messed up */ : elog(ERROR, "Aggref found in non-Agg plan node"); : } : state = (ExprState *) astate; 0.00 : 5aed85: 4c 89 e0 mov %r12,%rax : * Complain if the aggregate's arguments contain any : * aggregates; nested agg functions are semantically : * nonsensical. (This should have been caught earlier, : * but we defend against it here anyway.) : */ : if (naggs != aggstate->numaggs) 0.00 : 5aed88: 3b 9a 98 00 00 00 cmp 0x98(%rdx),%ebx 0.00 : 5aed8e: 0f 84 9c ee ff ff je 5adc30 : ereport(ERROR, 0.00 : 5aed94: 45 31 c0 xor %r8d,%r8d 0.00 : 5aed97: b9 ff ad 88 00 mov $0x88adff,%ecx 0.00 : 5aed9c: ba 5e 11 00 00 mov $0x115e,%edx 0.00 : 5aeda1: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5aeda6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aedab: e8 10 bd 1c 00 callq 77aac0 0.00 : 5aedb0: 84 c0 test %al,%al 0.00 : 5aedb2: 0f 84 13 f1 ff ff je 5adecb 0.00 : 5aedb8: bf 28 10 87 00 mov $0x871028,%edi 0.00 : 5aedbd: 31 c0 xor %eax,%eax 0.00 : 5aedbf: e8 dc da 1c 00 callq 77c8a0 0.00 : 5aedc4: bf 84 80 00 03 mov $0x3008084,%edi 0.00 : 5aedc9: 89 c3 mov %eax,%ebx 0.00 : 5aedcb: e9 2e ff ff ff jmpq 5aecfe : * the RowExpr was created. XXX should we check : * typmod too? Not sure we can be sure it'll be the : * same. : */ : if (exprType((Node *) e) != attrs[i]->atttypid) : ereport(ERROR, 0.00 : 5aedd0: 45 31 c0 xor %r8d,%r8d 0.00 : 5aedd3: b9 ff ad 88 00 mov $0x88adff,%ecx 0.00 : 5aedd8: ba ce 12 00 00 mov $0x12ce,%edx 0.00 : 5aeddd: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5aede2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aede7: e8 d4 bc 1c 00 callq 77aac0 0.00 : 5aedec: 84 c0 test %al,%al 0.00 : 5aedee: 0f 84 d7 f0 ff ff je 5adecb 0.00 : 5aedf4: 48 8b 03 mov (%rbx),%rax 0.00 : 5aedf7: 8b 78 44 mov 0x44(%rax),%edi 0.00 : 5aedfa: e8 21 a6 12 00 callq 6d9420 0.00 : 5aedff: 4c 89 ff mov %r15,%rdi 0.00 : 5aee02: 48 89 c3 mov %rax,%rbx 0.00 : 5aee05: e8 c6 1e 03 00 callq 5e0cd0 0.00 : 5aee0a: 89 c7 mov %eax,%edi 0.00 : 5aee0c: e8 0f a6 12 00 callq 6d9420 0.00 : 5aee11: 48 89 da mov %rbx,%rdx 0.00 : 5aee14: 48 89 c6 mov %rax,%rsi 0.00 : 5aee17: bf 60 a6 88 00 mov $0x88a660,%edi 0.00 : 5aee1c: 31 c0 xor %eax,%eax 0.00 : 5aee1e: e8 7d da 1c 00 callq 77c8a0 0.00 : 5aee23: bf 84 80 00 04 mov $0x4008084,%edi 0.00 : 5aee28: 89 c3 mov %eax,%ebx 0.00 : 5aee2a: e9 cf fe ff ff jmpq 5aecfe : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCase; : cstate->arg = ExecInitExpr(caseexpr->arg, parent); : foreach(l, caseexpr->args) 0.00 : 5aee2f: 45 31 f6 xor %r14d,%r14d 0.00 : 5aee32: e9 6e fb ff ff jmpq 5ae9a5 : outlist = lappend(outlist, estate); : } : xstate->named_args = outlist; : : outlist = NIL; : foreach(arg, xexpr->args) 0.00 : 5aee37: 45 31 e4 xor %r12d,%r12d 0.00 : 5aee3a: e9 d4 f2 ff ff jmpq 5ae113 : List *outlist; : ListCell *arg; : : xstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalXml; : outlist = NIL; : foreach(arg, xexpr->named_args) 0.00 : 5aee3f: 45 31 e4 xor %r12d,%r12d 0.00 : 5aee42: e9 7c f2 ff ff jmpq 5ae0c3 : List *outlist = NIL; : ListCell *l; : TypeCacheEntry *typentry; : : mstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalMinMax; : foreach(l, minmaxexpr->args) 0.00 : 5aee47: 45 31 e4 xor %r12d,%r12d 0.00 : 5aee4a: e9 ec ef ff ff jmpq 5ade3b : ArrayExprState *astate = makeNode(ArrayExprState); : List *outlist = NIL; : ListCell *l; : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArray; : foreach(l, arrayexpr->elements) 0.00 : 5aee4f: 45 31 e4 xor %r12d,%r12d 0.00 : 5aee52: e9 a4 f7 ff ff jmpq 5ae5fb : outlist = lappend(outlist, estate); : } : rstate->largs = outlist; : Assert(list_length(rcexpr->rargs) == nopers); : outlist = NIL; : foreach(l, rcexpr->rargs) 0.00 : 5aee57: 45 31 ed xor %r13d,%r13d 0.00 : 5aee5a: e9 e6 f5 ff ff jmpq 5ae445 : int i; : : rstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalRowCompare; : Assert(list_length(rcexpr->largs) == nopers); : outlist = NIL; : foreach(l, rcexpr->largs) 0.00 : 5aee5f: 45 31 ed xor %r13d,%r13d 0.00 : 5aee62: e9 8e f5 ff ff jmpq 5ae3f5 : CoalesceExprState *cstate = makeNode(CoalesceExprState); : List *outlist = NIL; : ListCell *l; : : cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoalesce; : foreach(l, coalesceexpr->args) 0.00 : 5aee67: 45 31 e4 xor %r12d,%r12d 0.00 : 5aee6a: e9 6c ed ff ff jmpq 5adbdb : mstate->args = outlist; : /* Look up the btree comparison function for the datatype */ : typentry = lookup_type_cache(minmaxexpr->minmaxtype, : TYPECACHE_CMP_PROC); : if (!OidIsValid(typentry->cmp_proc)) : ereport(ERROR, 0.00 : 5aee6f: 45 31 c0 xor %r8d,%r8d 0.00 : 5aee72: b9 ff ad 88 00 mov $0x88adff,%ecx 0.00 : 5aee77: ba 54 13 00 00 mov $0x1354,%edx 0.00 : 5aee7c: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5aee81: 40 b7 14 mov $0x14,%dil 0.00 : 5aee84: e8 37 bc 1c 00 callq 77aac0 0.00 : 5aee89: 84 c0 test %al,%al 0.00 : 5aee8b: 0f 84 3a f0 ff ff je 5adecb 0.00 : 5aee91: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5aee95: 8b 7a 04 mov 0x4(%rdx),%edi 0.00 : 5aee98: e8 83 a5 12 00 callq 6d9420 0.00 : 5aee9d: bf 90 a6 88 00 mov $0x88a690,%edi 0.00 : 5aeea2: 48 89 c6 mov %rax,%rsi 0.00 : 5aeea5: 31 c0 xor %eax,%eax 0.00 : 5aeea7: e8 f4 d9 1c 00 callq 77c8a0 0.00 : 5aeeac: bf 84 80 20 03 mov $0x3208084,%edi 0.00 : 5aeeb1: 89 c3 mov %eax,%ebx 0.00 : 5aeeb3: e9 46 fe ff ff jmpq 5aecfe : { : AlternativeSubPlan *asplan = (AlternativeSubPlan *) node; : AlternativeSubPlanState *asstate; : : if (!parent) : elog(ERROR, "AlternativeSubPlan found with no parent plan"); 0.00 : 5aeeb8: ba ff ad 88 00 mov $0x88adff,%edx 0.00 : 5aeebd: be 13 12 00 00 mov $0x1213,%esi 0.00 : 5aeec2: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5aeec7: e8 54 c5 1c 00 callq 77b420 0.00 : 5aeecc: be 30 a6 88 00 mov $0x88a630,%esi 0.00 : 5aeed1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aeed6: 31 c0 xor %eax,%eax 0.00 : 5aeed8: e8 53 c3 1c 00 callq 77b230 0.00 : 5aeedd: e8 ee a5 eb ff callq 4694d0 : : astate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalArrayCoerceExpr; : astate->arg = ExecInitExpr(acoerce->arg, parent); : astate->resultelemtype = get_element_type(acoerce->resulttype); : if (astate->resultelemtype == InvalidOid) : ereport(ERROR, 0.00 : 5aeee2: 45 31 c0 xor %r8d,%r8d 0.00 : 5aeee5: b9 ff ad 88 00 mov $0x88adff,%ecx 0.00 : 5aeeea: ba 5a 12 00 00 mov $0x125a,%edx 0.00 : 5aeeef: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5aeef4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aeef9: e8 c2 bb 1c 00 callq 77aac0 0.00 : 5aeefe: 84 c0 test %al,%al 0.00 : 5aef00: 0f 84 c5 ef ff ff je 5adecb 0.00 : 5aef06: bf 22 a4 88 00 mov $0x88a422,%edi 0.00 : 5aef0b: 31 c0 xor %eax,%eax 0.00 : 5aef0d: e8 8e d9 1c 00 callq 77c8a0 0.00 : 5aef12: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 5aef17: 89 c3 mov %eax,%ebx 0.00 : 5aef19: e9 e0 fd ff ff jmpq 5aecfe : { : SubPlan *subplan = (SubPlan *) node; : SubPlanState *sstate; : : if (!parent) : elog(ERROR, "SubPlan found with no parent plan"); 0.00 : 5aef1e: ba ff ad 88 00 mov $0x88adff,%edx 0.00 : 5aef23: be 03 12 00 00 mov $0x1203,%esi 0.00 : 5aef28: bf fc a3 88 00 mov $0x88a3fc,%edi 0.00 : 5aef2d: e8 ee c4 1c 00 callq 77b420 0.00 : 5aef32: be 08 a6 88 00 mov $0x88a608,%esi 0.00 : 5aef37: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5aef3c: 31 c0 xor %eax,%eax 0.00 : 5aef3e: e8 ed c2 1c 00 callq 77b230 0.00 : 5aef43: e8 88 a5 eb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:574 50.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:614 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3520 : : * of the bitmap. However, you can call this multiple times to scan the : * contents repeatedly, including parallel scans. : */ : TBMIterator * : tbm_begin_iterate(TIDBitmap *tbm) : { 0.00 : 5e3520: 55 push %rbp 0.00 : 5e3521: 48 89 e5 mov %rsp,%rbp 0.00 : 5e3524: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5e3528: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 5e352c: 48 89 fb mov %rdi,%rbx 0.00 : 5e352f: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5e3533: 4c 89 6d e8 mov %r13,-0x18(%rbp) : : /* : * Create the TBMIterator struct, with enough trailing space to serve the : * needs of the TBMIterateResult sub-struct. : */ : iterator = (TBMIterator *) palloc(sizeof(TBMIterator) + 0.00 : 5e3537: bf 66 02 00 00 mov $0x266,%edi : * of the bitmap. However, you can call this multiple times to scan the : * contents repeatedly, including parallel scans. : */ : TBMIterator * : tbm_begin_iterate(TIDBitmap *tbm) : { 0.00 : 5e353c: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5e3540: 48 83 ec 50 sub $0x50,%rsp : : /* : * Create the TBMIterator struct, with enough trailing space to serve the : * needs of the TBMIterateResult sub-struct. : */ : iterator = (TBMIterator *) palloc(sizeof(TBMIterator) + /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:574 50.00 : 5e3544: e8 07 58 1b 00 callq 798d50 : MAX_TUPLES_PER_PAGE * sizeof(OffsetNumber)); : iterator->tbm = tbm; 0.00 : 5e3549: 48 89 18 mov %rbx,(%rax) : : /* : * Initialize iteration pointers. : */ : iterator->spageptr = 0; 0.00 : 5e354c: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : : /* : * Create the TBMIterator struct, with enough trailing space to serve the : * needs of the TBMIterateResult sub-struct. : */ : iterator = (TBMIterator *) palloc(sizeof(TBMIterator) + 0.00 : 5e3553: 49 89 c6 mov %rax,%r14 : : /* : * Initialize iteration pointers. : */ : iterator->spageptr = 0; : iterator->schunkptr = 0; 0.00 : 5e3556: c7 40 0c 00 00 00 00 movl $0x0,0xc(%rax) : iterator->schunkbit = 0; 0.00 : 5e355d: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : * If we have a hashtable, create and fill the sorted page lists, unless : * we already did that for a previous iterator. Note that the lists are : * attached to the bitmap not the iterator, so they can be used by more : * than one iterator. : */ : if (tbm->status == TBM_HASH && !tbm->iterating) 0.00 : 5e3564: 83 7b 10 02 cmpl $0x2,0x10(%rbx) 0.00 : 5e3568: 74 26 je 5e3590 : if (nchunks > 1) : qsort(tbm->schunks, nchunks, sizeof(PagetableEntry *), : tbm_comparator); : } : : tbm->iterating = true; 0.00 : 5e356a: c6 43 30 01 movb $0x1,0x30(%rbx) : : return iterator; : } 0.00 : 5e356e: 4c 89 f0 mov %r14,%rax 0.00 : 5e3571: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e3575: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e3579: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e357d: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e3581: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e3585: c9 leaveq 0.00 : 5e3586: c3 retq 0.00 : 5e3587: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e358e: 00 00 : * If we have a hashtable, create and fill the sorted page lists, unless : * we already did that for a previous iterator. Note that the lists are : * attached to the bitmap not the iterator, so they can be used by more : * than one iterator. : */ : if (tbm->status == TBM_HASH && !tbm->iterating) 0.00 : 5e3590: 80 7b 30 00 cmpb $0x0,0x30(%rbx) 0.00 : 5e3594: 75 d4 jne 5e356a : HASH_SEQ_STATUS status; : PagetableEntry *page; : int npages; : int nchunks; : : if (!tbm->spages && tbm->npages > 0) 0.00 : 5e3596: 48 83 7b 68 00 cmpq $0x0,0x68(%rbx) 0.00 : 5e359b: 0f 84 af 00 00 00 je 5e3650 : tbm->spages = (PagetableEntry **) : MemoryContextAlloc(tbm->mcxt, : tbm->npages * sizeof(PagetableEntry *)); : if (!tbm->schunks && tbm->nchunks > 0) 0.00 : 5e35a1: 48 83 7b 70 00 cmpq $0x0,0x70(%rbx) 0.00 : 5e35a6: 0f 84 cc 00 00 00 je 5e3678 : tbm->schunks = (PagetableEntry **) : MemoryContextAlloc(tbm->mcxt, : tbm->nchunks * sizeof(PagetableEntry *)); : : hash_seq_init(&status, tbm->pagetable); 0.00 : 5e35ac: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 5e35b0: 4c 8d 7d b0 lea -0x50(%rbp),%r15 0.00 : 5e35b4: 45 31 e4 xor %r12d,%r12d 0.00 : 5e35b7: 45 31 ed xor %r13d,%r13d 0.00 : 5e35ba: 4c 89 ff mov %r15,%rdi 0.00 : 5e35bd: e8 6e 08 1a 00 callq 783e30 0.00 : 5e35c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : npages = nchunks = 0; : while ((page = (PagetableEntry *) hash_seq_search(&status)) != NULL) 0.00 : 5e35c8: 4c 89 ff mov %r15,%rdi 0.00 : 5e35cb: e8 f0 04 1a 00 callq 783ac0 0.00 : 5e35d0: 48 85 c0 test %rax,%rax 0.00 : 5e35d3: 48 89 c1 mov %rax,%rcx 0.00 : 5e35d6: 74 30 je 5e3608 : { : if (page->ischunk) 0.00 : 5e35d8: 80 79 04 00 cmpb $0x0,0x4(%rcx) 0.00 : 5e35dc: 74 12 je 5e35f0 : tbm->schunks[nchunks++] = page; 0.00 : 5e35de: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 5e35e2: 49 63 d5 movslq %r13d,%rdx 0.00 : 5e35e5: 41 83 c5 01 add $0x1,%r13d 0.00 : 5e35e9: 48 89 0c d0 mov %rcx,(%rax,%rdx,8) 0.00 : 5e35ed: eb d9 jmp 5e35c8 0.00 : 5e35ef: 90 nop : else : tbm->spages[npages++] = page; 0.00 : 5e35f0: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 5e35f4: 49 63 d4 movslq %r12d,%rdx 0.00 : 5e35f7: 41 83 c4 01 add $0x1,%r12d 0.00 : 5e35fb: 48 89 0c d0 mov %rcx,(%rax,%rdx,8) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:614 50.00 : 5e35ff: eb c7 jmp 5e35c8 0.00 : 5e3601: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : Assert(npages == tbm->npages); : Assert(nchunks == tbm->nchunks); : if (npages > 1) 0.00 : 5e3608: 41 83 fc 01 cmp $0x1,%r12d 0.00 : 5e360c: 7e 16 jle 5e3624 : qsort(tbm->spages, npages, sizeof(PagetableEntry *), 0.00 : 5e360e: 48 8b 7b 68 mov 0x68(%rbx),%rdi 0.00 : 5e3612: 49 63 f4 movslq %r12d,%rsi 0.00 : 5e3615: b9 f0 34 5e 00 mov $0x5e34f0,%ecx 0.00 : 5e361a: ba 08 00 00 00 mov $0x8,%edx 0.00 : 5e361f: e8 4c 96 1c 00 callq 7acc70 : tbm_comparator); : if (nchunks > 1) 0.00 : 5e3624: 41 83 fd 01 cmp $0x1,%r13d 0.00 : 5e3628: 0f 8e 3c ff ff ff jle 5e356a : qsort(tbm->schunks, nchunks, sizeof(PagetableEntry *), 0.00 : 5e362e: 48 8b 7b 70 mov 0x70(%rbx),%rdi 0.00 : 5e3632: 49 63 f5 movslq %r13d,%rsi 0.00 : 5e3635: b9 f0 34 5e 00 mov $0x5e34f0,%ecx 0.00 : 5e363a: ba 08 00 00 00 mov $0x8,%edx 0.00 : 5e363f: e8 2c 96 1c 00 callq 7acc70 0.00 : 5e3644: e9 21 ff ff ff jmpq 5e356a 0.00 : 5e3649: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : HASH_SEQ_STATUS status; : PagetableEntry *page; : int npages; : int nchunks; : : if (!tbm->spages && tbm->npages > 0) 0.00 : 5e3650: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 5e3653: 85 c0 test %eax,%eax 0.00 : 5e3655: 0f 8e 46 ff ff ff jle 5e35a1 : tbm->spages = (PagetableEntry **) 0.00 : 5e365b: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5e365f: 48 63 f0 movslq %eax,%rsi 0.00 : 5e3662: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 5e3666: e8 25 58 1b 00 callq 798e90 0.00 : 5e366b: 48 89 43 68 mov %rax,0x68(%rbx) 0.00 : 5e366f: e9 2d ff ff ff jmpq 5e35a1 0.00 : 5e3674: 0f 1f 40 00 nopl 0x0(%rax) : MemoryContextAlloc(tbm->mcxt, : tbm->npages * sizeof(PagetableEntry *)); : if (!tbm->schunks && tbm->nchunks > 0) 0.00 : 5e3678: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 5e367b: 85 c0 test %eax,%eax 0.00 : 5e367d: 0f 8e 29 ff ff ff jle 5e35ac : tbm->schunks = (PagetableEntry **) 0.00 : 5e3683: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5e3687: 48 63 f0 movslq %eax,%rsi 0.00 : 5e368a: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 5e368e: e8 fd 57 1b 00 callq 798e90 0.00 : 5e3693: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : 5e3697: e9 10 ff ff ff jmpq 5e35ac Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:123 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a4aa0 : : * InvalidTransactionId if no check is needed. : */ : static inline void : SetHintBits(HeapTupleHeader tuple, Buffer buffer, : uint16 infomask, TransactionId xid) : { 0.00 : 7a4aa0: 55 push %rbp 0.00 : 7a4aa1: 48 89 e5 mov %rsp,%rbp 0.00 : 7a4aa4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 7a4aa8: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 7a4aac: 48 89 fb mov %rdi,%rbx 0.00 : 7a4aaf: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 7a4ab3: 48 83 ec 20 sub $0x20,%rsp : if (TransactionIdIsValid(xid)) 0.00 : 7a4ab7: 85 c9 test %ecx,%ecx : * InvalidTransactionId if no check is needed. : */ : static inline void : SetHintBits(HeapTupleHeader tuple, Buffer buffer, : uint16 infomask, TransactionId xid) : { 0.00 : 7a4ab9: 41 89 f5 mov %esi,%r13d 0.00 : 7a4abc: 41 89 d4 mov %edx,%r12d : if (TransactionIdIsValid(xid)) 0.00 : 7a4abf: 74 13 je 7a4ad4 : { : /* NB: xid must be known committed here! */ : XLogRecPtr commitLSN = TransactionIdGetCommitLSN(xid); 0.00 : 7a4ac1: 89 cf mov %ecx,%edi 0.00 : 7a4ac3: e8 28 b6 d1 ff callq 4c00f0 0.00 : 7a4ac8: 48 89 c7 mov %rax,%rdi : : if (XLogNeedsFlush(commitLSN) && BufferIsPermanent(buffer)) 0.00 : 7a4acb: e8 e0 f2 d2 ff callq 4d3db0 0.00 : 7a4ad0: 84 c0 test %al,%al 0.00 : 7a4ad2: 75 24 jne 7a4af8 : return; /* not flushed yet, so don't set hint */ : } : : tuple->t_infomask |= infomask; 0.00 : 7a4ad4: 66 44 09 63 14 or %r12w,0x14(%rbx) : MarkBufferDirtyHint(buffer, true); 100.00 : 7a4ad9: 44 89 ef mov %r13d,%edi 0.00 : 7a4adc: be 01 00 00 00 mov $0x1,%esi : } 0.00 : 7a4ae1: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 7a4ae5: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 7a4ae9: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 7a4aed: c9 leaveq : if (XLogNeedsFlush(commitLSN) && BufferIsPermanent(buffer)) : return; /* not flushed yet, so don't set hint */ : } : : tuple->t_infomask |= infomask; : MarkBufferDirtyHint(buffer, true); 0.00 : 7a4aee: e9 9d fe ec ff jmpq 674990 0.00 : 7a4af3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (TransactionIdIsValid(xid)) : { : /* NB: xid must be known committed here! */ : XLogRecPtr commitLSN = TransactionIdGetCommitLSN(xid); : : if (XLogNeedsFlush(commitLSN) && BufferIsPermanent(buffer)) 0.00 : 7a4af8: 44 89 ef mov %r13d,%edi 0.00 : 7a4afb: e8 c0 f5 ec ff callq 6740c0 0.00 : 7a4b00: 84 c0 test %al,%al 0.00 : 7a4b02: 74 d0 je 7a4ad4 : return; /* not flushed yet, so don't set hint */ : } : : tuple->t_infomask |= infomask; : MarkBufferDirtyHint(buffer, true); : } 0.00 : 7a4b04: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 7a4b08: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 7a4b0c: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 7a4b10: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002a5d0 <_nl_load_locale_from_archive>: ??:0 33.33 : 2a5d0: 55 push %rbp 0.00 : 2a5d1: 48 89 e5 mov %rsp,%rbp 0.00 : 2a5d4: 41 57 push %r15 0.00 : 2a5d6: 41 56 push %r14 0.00 : 2a5d8: 41 55 push %r13 0.00 : 2a5da: 41 54 push %r12 33.33 : 2a5dc: 53 push %rbx 0.00 : 2a5dd: 48 81 ec 18 01 00 00 sub $0x118,%rsp 0.00 : 2a5e4: 89 bd e4 fe ff ff mov %edi,-0x11c(%rbp) 0.00 : 2a5ea: 48 89 b5 d8 fe ff ff mov %rsi,-0x128(%rbp) 0.00 : 2a5f1: 48 8b 06 mov (%rsi),%rax 0.00 : 2a5f4: bf 1e 00 00 00 mov $0x1e,%edi 0.00 : 2a5f9: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) 0.00 : 2a600: e8 5b fe 07 00 callq aa460 <__sysconf> 0.00 : 2a605: 48 8b 1d 04 8b 34 00 mov 0x348b04(%rip),%rbx # 373110 0.00 : 2a60c: 48 85 db test %rbx,%rbx 0.00 : 2a60f: 75 22 jne 2a633 <_nl_load_locale_from_archive+0x63> 0.00 : 2a611: eb 55 jmp 2a668 <_nl_load_locale_from_archive+0x98> 0.00 : 2a613: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2a618: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 2a61f: 4c 89 e6 mov %r12,%rsi 0.00 : 2a622: e8 29 4b 05 00 callq 7f150 <__GI_strcmp> 0.00 : 2a627: 85 c0 test %eax,%eax 0.00 : 2a629: 74 15 je 2a640 <_nl_load_locale_from_archive+0x70> 0.00 : 2a62b: 48 8b 1b mov (%rbx),%rbx 0.00 : 2a62e: 48 85 db test %rbx,%rbx 0.00 : 2a631: 74 35 je 2a668 <_nl_load_locale_from_archive+0x98> 0.00 : 2a633: 4c 8b 63 08 mov 0x8(%rbx),%r12 0.00 : 2a637: 4c 3b a5 f0 fe ff ff cmp -0x110(%rbp),%r12 0.00 : 2a63e: 75 d8 jne 2a618 <_nl_load_locale_from_archive+0x48> 0.00 : 2a640: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 2a647: 4c 89 22 mov %r12,(%rdx) 0.00 : 2a64a: 48 63 85 e4 fe ff ff movslq -0x11c(%rbp),%rax 0.00 : 2a651: 48 8b 44 c3 10 mov 0x10(%rbx,%rax,8),%rax 0.00 : 2a656: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 2a65a: 5b pop %rbx 0.00 : 2a65b: 41 5c pop %r12 0.00 : 2a65d: 41 5d pop %r13 0.00 : 2a65f: 41 5e pop %r14 0.00 : 2a661: 41 5f pop %r15 0.00 : 2a663: c9 leaveq 0.00 : 2a664: c3 retq 0.00 : 2a665: 0f 1f 00 nopl (%rax) 0.00 : 2a668: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 2a66f: be 2e 00 00 00 mov $0x2e,%esi 0.00 : 2a674: e8 17 4a 05 00 callq 7f090 <__GI_strchr> 0.00 : 2a679: 48 85 c0 test %rax,%rax 0.00 : 2a67c: 74 14 je 2a692 <_nl_load_locale_from_archive+0xc2> 0.00 : 2a67e: 48 8d 58 01 lea 0x1(%rax),%rbx 0.00 : 2a682: 0f b6 40 01 movzbl 0x1(%rax),%eax 0.00 : 2a686: 3c 40 cmp $0x40,%al 0.00 : 2a688: 74 08 je 2a692 <_nl_load_locale_from_archive+0xc2> 0.00 : 2a68a: 84 c0 test %al,%al 0.00 : 2a68c: 0f 85 97 02 00 00 jne 2a929 <_nl_load_locale_from_archive+0x359> 0.00 : 2a692: 48 83 3d a6 89 34 00 cmpq $0x0,0x3489a6(%rip) # 373040 0.00 : 2a699: 00 0.00 : 2a69a: 0f 84 47 03 00 00 je 2a9e7 <_nl_load_locale_from_archive+0x417> 0.00 : 2a6a0: 48 8b 05 a9 89 34 00 mov 0x3489a9(%rip),%rax # 373050 0.00 : 2a6a7: 48 85 c0 test %rax,%rax 0.00 : 2a6aa: 48 89 85 e8 fe ff ff mov %rax,-0x118(%rbp) 0.00 : 2a6b1: 0f 84 61 02 00 00 je 2a918 <_nl_load_locale_from_archive+0x348> 0.00 : 2a6b7: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 2a6be: e8 ed 64 05 00 callq 80bb0 <__GI_strlen> 0.00 : 2a6c3: 48 85 c0 test %rax,%rax 0.00 : 2a6c6: 48 89 c6 mov %rax,%rsi 0.00 : 2a6c9: 89 c2 mov %eax,%edx 0.00 : 2a6cb: 74 1c je 2a6e9 <_nl_load_locale_from_archive+0x119> 0.00 : 2a6cd: 31 c9 xor %ecx,%ecx 0.00 : 2a6cf: 90 nop 0.00 : 2a6d0: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 2a6d7: c1 ca 17 ror $0x17,%edx 0.00 : 2a6da: 0f be 04 0b movsbl (%rbx,%rcx,1),%eax 0.00 : 2a6de: 48 83 c1 01 add $0x1,%rcx 0.00 : 2a6e2: 01 c2 add %eax,%edx 0.00 : 2a6e4: 48 39 ce cmp %rcx,%rsi 0.00 : 2a6e7: 77 e7 ja 2a6d0 <_nl_load_locale_from_archive+0x100> 0.00 : 2a6e9: 85 d2 test %edx,%edx 0.00 : 2a6eb: 89 d0 mov %edx,%eax 0.00 : 2a6ed: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : 2a6f4: 41 be ff ff ff ff mov $0xffffffff,%r14d 0.00 : 2a6fa: 4c 0f 45 f0 cmovne %rax,%r14 0.00 : 2a6fe: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 2a701: 48 01 d0 add %rdx,%rax 0.00 : 2a704: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 2a70b: 8b 72 10 mov 0x10(%rdx),%esi 0.00 : 2a70e: 4c 89 f0 mov %r14,%rax 0.00 : 2a711: 31 d2 xor %edx,%edx 0.00 : 2a713: 41 89 f7 mov %esi,%r15d 0.00 : 2a716: 83 ee 02 sub $0x2,%esi 0.00 : 2a719: 49 f7 f7 div %r15 0.00 : 2a71c: 4c 89 f0 mov %r14,%rax 0.00 : 2a71f: 48 89 d1 mov %rdx,%rcx 0.00 : 2a722: 31 d2 xor %edx,%edx 0.00 : 2a724: 48 f7 f6 div %rsi 0.00 : 2a727: 4c 8d 6a 01 lea 0x1(%rdx),%r13 0.00 : 2a72b: 4b 8d 44 6d 00 lea 0x0(%r13,%r13,2),%rax 0.00 : 2a730: 4c 8d 0c 85 00 00 00 lea 0x0(,%rax,4),%r9 0.00 : 2a737: 00 0.00 : 2a738: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 2a73f: 48 8d 04 49 lea (%rcx,%rcx,2),%rax 0.00 : 2a743: 4d 8d 64 0d 00 lea 0x0(%r13,%rcx,1),%r12 0.00 : 2a748: 48 8d 5c 82 04 lea 0x4(%rdx,%rax,4),%rbx 0.00 : 2a74d: eb 1a jmp 2a769 <_nl_load_locale_from_archive+0x199> 0.00 : 2a74f: 90 nop 0.00 : 2a750: 4b 8d 14 2c lea (%r12,%r13,1),%rdx 0.00 : 2a754: 4c 01 cb add %r9,%rbx 0.00 : 2a757: 48 89 d0 mov %rdx,%rax 0.00 : 2a75a: 4c 29 e8 sub %r13,%rax 0.00 : 2a75d: 49 39 c7 cmp %rax,%r15 0.00 : 2a760: 0f 86 a2 01 00 00 jbe 2a908 <_nl_load_locale_from_archive+0x338> 0.00 : 2a766: 49 89 d4 mov %rdx,%r12 0.00 : 2a769: 8b 13 mov (%rbx),%edx 0.00 : 2a76b: 4c 8d 43 fc lea -0x4(%rbx),%r8 0.00 : 2a76f: 85 d2 test %edx,%edx 0.00 : 2a771: 0f 84 a1 01 00 00 je 2a918 <_nl_load_locale_from_archive+0x348> 0.00 : 2a777: 8b 43 fc mov -0x4(%rbx),%eax 0.00 : 2a77a: 4c 39 f0 cmp %r14,%rax 0.00 : 2a77d: 75 d1 jne 2a750 <_nl_load_locale_from_archive+0x180> 0.00 : 2a77f: 89 d6 mov %edx,%esi 0.00 : 2a781: 48 03 b5 e8 fe ff ff add -0x118(%rbp),%rsi 0.00 : 2a788: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 2a78f: 4c 89 85 d0 fe ff ff mov %r8,-0x130(%rbp) 0.00 : 2a796: 4c 89 8d c8 fe ff ff mov %r9,-0x138(%rbp) 0.00 : 2a79d: e8 ae 49 05 00 callq 7f150 <__GI_strcmp> 0.00 : 2a7a2: 85 c0 test %eax,%eax 0.00 : 2a7a4: 4c 8b 85 d0 fe ff ff mov -0x130(%rbp),%r8 0.00 : 2a7ab: 4c 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9 0.00 : 2a7b2: 75 9c jne 2a750 <_nl_load_locale_from_archive+0x180> 0.00 : 2a7b4: 41 8b 40 08 mov 0x8(%r8),%eax 0.00 : 2a7b8: 85 c0 test %eax,%eax 0.00 : 2a7ba: 0f 84 58 01 00 00 je 2a918 <_nl_load_locale_from_archive+0x348> 0.00 : 2a7c0: 4c 8b 85 e8 fe ff ff mov -0x118(%rbp),%r8 0.00 : 2a7c7: 44 8b 0d 8e 88 34 00 mov 0x34888e(%rip),%r9d # 37305c 0.00 : 2a7ce: 89 c0 mov %eax,%eax 0.00 : 2a7d0: 31 c9 xor %ecx,%ecx 0.00 : 2a7d2: 41 ba 07 00 00 00 mov $0x7,%r10d 0.00 : 2a7d8: 49 01 c0 add %rax,%r8 0.00 : 2a7db: 44 89 c8 mov %r9d,%eax 0.00 : 2a7de: 48 3b 05 cb 88 34 00 cmp 0x3488cb(%rip),%rax # 3730b0 0.00 : 2a7e5: 0f 85 e0 02 00 00 jne 2aacb <_nl_load_locale_from_archive+0x4fb> 0.00 : 2a7eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2a7f0: 83 f9 06 cmp $0x6,%ecx 0.00 : 2a7f3: 41 0f 44 ca cmove %r10d,%ecx 0.00 : 2a7f7: 48 63 d1 movslq %ecx,%rdx 0.00 : 2a7fa: 41 8b 74 d0 04 mov 0x4(%r8,%rdx,8),%esi 0.00 : 2a7ff: 41 8b 7c d0 08 mov 0x8(%r8,%rdx,8),%edi 0.00 : 2a804: 8d 04 37 lea (%rdi,%rsi,1),%eax 0.00 : 2a807: 41 39 c1 cmp %eax,%r9d 0.00 : 2a80a: 0f 82 08 01 00 00 jb 2a918 <_nl_load_locale_from_archive+0x348> 0.00 : 2a810: 89 f0 mov %esi,%eax 0.00 : 2a812: 48 03 85 e8 fe ff ff add -0x118(%rbp),%rax 0.00 : 2a819: 83 c1 01 add $0x1,%ecx 0.00 : 2a81c: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 2a820: 89 ff mov %edi,%edi 0.00 : 2a822: 83 f9 0c cmp $0xc,%ecx 0.00 : 2a825: 48 89 bc 15 08 ff ff mov %rdi,-0xf8(%rbp,%rdx,1) 0.00 : 2a82c: ff 0.00 : 2a82d: 48 89 84 15 00 ff ff mov %rax,-0x100(%rbp,%rdx,1) 0.00 : 2a834: ff 0.00 : 2a835: 7e b9 jle 2a7f0 <_nl_load_locale_from_archive+0x220> 0.00 : 2a837: bf 78 00 00 00 mov $0x78,%edi 0.00 : 2a83c: e8 0f 40 ff ff callq 1e850 0.00 : 2a841: 48 85 c0 test %rax,%rax 0.00 : 2a844: 49 89 c5 mov %rax,%r13 0.00 : 2a847: 0f 84 cb 00 00 00 je 2a918 <_nl_load_locale_from_archive+0x348> 0.00 : 2a84d: 48 8b 9d d8 fe ff ff mov -0x128(%rbp),%rbx 0.00 : 2a854: 48 8b 3b mov (%rbx),%rdi 0.00 : 2a857: e8 54 60 05 00 callq 808b0 <__strdup> 0.00 : 2a85c: 48 85 c0 test %rax,%rax 0.00 : 2a85f: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 2a863: 0f 84 53 02 00 00 je 2aabc <_nl_load_locale_from_archive+0x4ec> 0.00 : 2a869: 48 8b 05 a0 88 34 00 mov 0x3488a0(%rip),%rax # 373110 0.00 : 2a870: 45 31 e4 xor %r12d,%r12d 0.00 : 2a873: 41 be 07 00 00 00 mov $0x7,%r14d 0.00 : 2a879: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 2a87d: 4c 89 2d 8c 88 34 00 mov %r13,0x34888c(%rip) # 373110 0.00 : 2a884: 41 83 fc 06 cmp $0x6,%r12d 0.00 : 2a888: 45 0f 44 e6 cmove %r14d,%r12d 0.00 : 2a88c: 49 63 dc movslq %r12d,%rbx 0.00 : 2a88f: 44 89 e7 mov %r12d,%edi 0.00 : 2a892: 48 89 d8 mov %rbx,%rax 0.00 : 2a895: 48 c1 e0 04 shl $0x4,%rax 0.00 : 2a899: 48 8b 94 05 08 ff ff mov -0xf8(%rbp,%rax,1),%rdx 0.00 : 2a8a0: ff 0.00 : 2a8a1: 48 8b b4 05 00 ff ff mov -0x100(%rbp,%rax,1),%rsi 0.00 : 2a8a8: ff 0.00 : 2a8a9: e8 b2 f6 ff ff callq 29f60 <_nl_intern_locale_data> 0.00 : 2a8ae: 48 8d 4b 02 lea 0x2(%rbx),%rcx 0.00 : 2a8b2: 48 85 c0 test %rax,%rax 0.00 : 2a8b5: 49 89 44 cd 00 mov %rax,0x0(%r13,%rcx,8) 0.00 : 2a8ba: 74 1f je 2a8db <_nl_load_locale_from_archive+0x30b> 0.00 : 2a8bc: c7 40 18 02 00 00 00 movl $0x2,0x18(%rax) 0.00 : 2a8c3: 49 8b 44 cd 00 mov 0x0(%r13,%rcx,8),%rax 0.00 : 2a8c8: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 2a8cc: 48 89 10 mov %rdx,(%rax) 0.00 : 2a8cf: 49 8b 44 cd 00 mov 0x0(%r13,%rcx,8),%rax 0.00 : 2a8d4: c7 40 30 ff ff ff ff movl $0xffffffff,0x30(%rax) 0.00 : 2a8db: 41 83 c4 01 add $0x1,%r12d 0.00 : 2a8df: 41 83 fc 0c cmp $0xc,%r12d 0.00 : 2a8e3: 7e 9f jle 2a884 <_nl_load_locale_from_archive+0x2b4> 0.00 : 2a8e5: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 2a8e9: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 2a8f0: 48 89 02 mov %rax,(%rdx) 0.00 : 2a8f3: 48 63 85 e4 fe ff ff movslq -0x11c(%rbp),%rax 0.00 : 2a8fa: 49 8b 44 c5 10 mov 0x10(%r13,%rax,8),%rax 0.00 : 2a8ff: e9 52 fd ff ff jmpq 2a656 <_nl_load_locale_from_archive+0x86> 0.00 : 2a904: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 2a908: 4c 89 e1 mov %r12,%rcx 0.00 : 2a90b: 4c 29 f9 sub %r15,%rcx 0.00 : 2a90e: e9 25 fe ff ff jmpq 2a738 <_nl_load_locale_from_archive+0x168> 0.00 : 2a913: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2a918: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 2a91c: 31 c0 xor %eax,%eax 0.00 : 2a91e: 5b pop %rbx 0.00 : 2a91f: 41 5c pop %r12 0.00 : 2a921: 41 5d pop %r13 0.00 : 2a923: 41 5e pop %r14 0.00 : 2a925: 41 5f pop %r15 0.00 : 2a927: c9 leaveq 0.00 : 2a928: c3 retq 0.00 : 2a929: be 40 00 00 00 mov $0x40,%esi 0.00 : 2a92e: 48 89 df mov %rbx,%rdi 0.00 : 2a931: e8 ca b2 05 00 callq 85c00 33.33 : 2a936: 49 89 c4 mov %rax,%r12 0.00 : 2a939: 48 89 df mov %rbx,%rdi 0.00 : 2a93c: 49 89 c7 mov %rax,%r15 0.00 : 2a93f: 49 29 dc sub %rbx,%r12 0.00 : 2a942: 4c 89 e6 mov %r12,%rsi 0.00 : 2a945: e8 66 54 00 00 callq 2fdb0 <_nl_normalize_codeset> 0.00 : 2a94a: 48 85 c0 test %rax,%rax 0.00 : 2a94d: 49 89 c6 mov %rax,%r14 0.00 : 2a950: 74 c6 je 2a918 <_nl_load_locale_from_archive+0x348> 0.00 : 2a952: 4c 89 e2 mov %r12,%rdx 0.00 : 2a955: 48 89 de mov %rbx,%rsi 0.00 : 2a958: 48 89 c7 mov %rax,%rdi 0.00 : 2a95b: e8 90 64 05 00 callq 80df0 <__GI_strncmp> 0.00 : 2a960: 85 c0 test %eax,%eax 0.00 : 2a962: 75 07 jne 2a96b <_nl_load_locale_from_archive+0x39b> 0.00 : 2a964: 43 80 3c 26 00 cmpb $0x0,(%r14,%r12,1) 0.00 : 2a969: 74 6f je 2a9da <_nl_load_locale_from_archive+0x40a> 0.00 : 2a96b: 4c 89 f7 mov %r14,%rdi 0.00 : 2a96e: 66 90 xchg %ax,%ax 0.00 : 2a970: e8 3b 62 05 00 callq 80bb0 <__GI_strlen> 0.00 : 2a975: 4c 89 ff mov %r15,%rdi 0.00 : 2a978: 49 89 c4 mov %rax,%r12 0.00 : 2a97b: e8 30 62 05 00 callq 80bb0 <__GI_strlen> 0.00 : 2a980: 48 89 da mov %rbx,%rdx 0.00 : 2a983: 4c 8d 68 01 lea 0x1(%rax),%r13 0.00 : 2a987: 48 2b 95 f0 fe ff ff sub -0x110(%rbp),%rdx 0.00 : 2a98e: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 2a995: 4b 8d 44 25 00 lea 0x0(%r13,%r12,1),%rax 0.00 : 2a99a: 48 8d 44 02 1e lea 0x1e(%rdx,%rax,1),%rax 0.00 : 2a99f: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 2a9a3: 48 29 c4 sub %rax,%rsp 0.00 : 2a9a6: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 2a9ab: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 2a9af: 48 89 df mov %rbx,%rdi 0.00 : 2a9b2: e8 d9 95 05 00 callq 83f90 <__mempcpy> 0.00 : 2a9b7: 4c 89 e2 mov %r12,%rdx 0.00 : 2a9ba: 48 89 c7 mov %rax,%rdi 0.00 : 2a9bd: 4c 89 f6 mov %r14,%rsi 0.00 : 2a9c0: e8 cb 95 05 00 callq 83f90 <__mempcpy> 0.00 : 2a9c5: 4c 89 ea mov %r13,%rdx 0.00 : 2a9c8: 48 89 c7 mov %rax,%rdi 0.00 : 2a9cb: 4c 89 fe mov %r15,%rsi 0.00 : 2a9ce: e8 7d 9d 05 00 callq 84750 0.00 : 2a9d3: 48 89 9d f0 fe ff ff mov %rbx,-0x110(%rbp) 0.00 : 2a9da: 4c 89 f7 mov %r14,%rdi 0.00 : 2a9dd: e8 be 3e ff ff callq 1e8a0 0.00 : 2a9e2: e9 ab fc ff ff jmpq 2a692 <_nl_load_locale_from_archive+0xc2> 0.00 : 2a9e7: 48 8d 1d 62 86 34 00 lea 0x348662(%rip),%rbx # 373050 0.00 : 2a9ee: 48 8d 3d 3b 7e 11 00 lea 0x117e3b(%rip),%rdi # 142830 0.00 : 2a9f5: 31 f6 xor %esi,%esi 0.00 : 2a9f7: 31 c0 xor %eax,%eax 0.00 : 2a9f9: 48 89 1d 40 86 34 00 mov %rbx,0x348640(%rip) # 373040 0.00 : 2aa00: e8 d4 27 0a 00 callq cd1d9 <__open_nocancel> 0.00 : 2aa05: 85 c0 test %eax,%eax 0.00 : 2aa07: 41 89 c4 mov %eax,%r12d 0.00 : 2aa0a: 0f 88 08 ff ff ff js 2a918 <_nl_load_locale_from_archive+0x348> 0.00 : 2aa10: 48 8d 15 69 86 34 00 lea 0x348669(%rip),%rdx # 373080 0.00 : 2aa17: 89 c6 mov %eax,%esi 0.00 : 2aa19: bf 01 00 00 00 mov $0x1,%edi 0.00 : 2aa1e: e8 9d 1d 0a 00 callq cc7c0 <__fxstat> 0.00 : 2aa23: 83 c0 01 add $0x1,%eax 0.00 : 2aa26: 75 11 jne 2aa39 <_nl_load_locale_from_archive+0x469> 0.00 : 2aa28: 49 63 fc movslq %r12d,%rdi 0.00 : 2aa2b: b8 03 00 00 00 mov $0x3,%eax 0.00 : 2aa30: 0f 05 syscall 0.00 : 2aa32: 31 c0 xor %eax,%eax 0.00 : 2aa34: e9 1d fc ff ff jmpq 2a656 <_nl_load_locale_from_archive+0x86> 0.00 : 2aa39: 48 8b 1d 70 86 34 00 mov 0x348670(%rip),%rbx # 3730b0 0.00 : 2aa40: 45 31 c9 xor %r9d,%r9d 0.00 : 2aa43: 45 89 e0 mov %r12d,%r8d 0.00 : 2aa46: 31 ff xor %edi,%edi 0.00 : 2aa48: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 2aa4d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 2aa52: 48 89 de mov %rbx,%rsi 0.00 : 2aa55: e8 f6 d1 0a 00 callq d7c50 0.00 : 2aa5a: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 2aa5e: 49 89 c0 mov %rax,%r8 0.00 : 2aa61: 74 c5 je 2aa28 <_nl_load_locale_from_archive+0x458> 0.00 : 2aa63: 8b 50 10 mov 0x10(%rax),%edx 0.00 : 2aa66: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 2aa69: 41 8b 48 20 mov 0x20(%r8),%ecx 0.00 : 2aa6d: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 2aa71: 48 8d 14 90 lea (%rax,%rdx,4),%rdx 0.00 : 2aa75: 41 8b 40 24 mov 0x24(%r8),%eax 0.00 : 2aa79: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 2aa7d: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 2aa81: 48 8d 04 81 lea (%rcx,%rax,4),%rax 0.00 : 2aa85: 48 39 c2 cmp %rax,%rdx 0.00 : 2aa88: 48 0f 4c d0 cmovl %rax,%rdx 0.00 : 2aa8c: 41 8b 40 18 mov 0x18(%r8),%eax 0.00 : 2aa90: 41 03 40 14 add 0x14(%r8),%eax 0.00 : 2aa94: 48 39 c2 cmp %rax,%rdx 0.00 : 2aa97: 48 0f 4c d0 cmovl %rax,%rdx 0.00 : 2aa9b: 48 39 d3 cmp %rdx,%rbx 0.00 : 2aa9e: 72 4a jb 2aaea <_nl_load_locale_from_archive+0x51a> 0.00 : 2aaa0: 49 63 fc movslq %r12d,%rdi 0.00 : 2aaa3: b8 03 00 00 00 mov $0x3,%eax 0.00 : 2aaa8: 0f 05 syscall 0.00 : 2aaaa: 4c 89 05 9f 85 34 00 mov %r8,0x34859f(%rip) # 373050 0.00 : 2aab1: 89 1d a5 85 34 00 mov %ebx,0x3485a5(%rip) # 37305c 0.00 : 2aab7: e9 e4 fb ff ff jmpq 2a6a0 <_nl_load_locale_from_archive+0xd0> 0.00 : 2aabc: 4c 89 ef mov %r13,%rdi 0.00 : 2aabf: e8 dc 3d ff ff callq 1e8a0 0.00 : 2aac4: 31 c0 xor %eax,%eax 0.00 : 2aac6: e9 8b fb ff ff jmpq 2a656 <_nl_load_locale_from_archive+0x86> 0.00 : 2aacb: 48 8d 0d 7e 7d 11 00 lea 0x117d7e(%rip),%rcx # 142850 <__PRETTY_FUNCTION__.10788> 0.00 : 2aad2: 48 8d 35 1d fe 10 00 lea 0x10fe1d(%rip),%rsi # 13a8f6 0.00 : 2aad9: 48 8d 3d 30 35 11 00 lea 0x113530(%rip),%rdi # 13e010 <__PRETTY_FUNCTION__.11129+0x637> 0.00 : 2aae0: ba 33 01 00 00 mov $0x133,%edx 0.00 : 2aae5: e8 36 0e 00 00 callq 2b920 <__assert_fail> 0.00 : 2aaea: 48 89 de mov %rbx,%rsi 0.00 : 2aaed: 4c 89 c7 mov %r8,%rdi 0.00 : 2aaf0: e8 8b d1 0a 00 callq d7c80 0.00 : 2aaf5: e9 2e ff ff ff jmpq 2aa28 <_nl_load_locale_from_archive+0x458> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035a30 <__internal_atexit>: ??:0 100.00 : 35a30: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 35a35: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 35a3a: 48 89 fb mov %rdi,%rbx 0.00 : 35a3d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 35a42: 48 89 cf mov %rcx,%rdi 0.00 : 35a45: 48 83 ec 18 sub $0x18,%rsp 0.00 : 35a49: 49 89 d4 mov %rdx,%r12 0.00 : 35a4c: 48 89 f5 mov %rsi,%rbp 0.00 : 35a4f: e8 5c fe ff ff callq 358b0 <__new_exitfn> 0.00 : 35a54: 48 85 c0 test %rax,%rax 0.00 : 35a57: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 35a5c: 74 22 je 35a80 <__internal_atexit+0x50> 0.00 : 35a5e: 64 48 33 1c 25 30 00 xor %fs:0x30,%rbx 0.00 : 35a65: 00 00 0.00 : 35a67: 48 c1 c3 11 rol $0x11,%rbx 0.00 : 35a6b: 48 89 68 10 mov %rbp,0x10(%rax) 0.00 : 35a6f: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 35a73: 4c 89 60 18 mov %r12,0x18(%rax) 0.00 : 35a77: 31 d2 xor %edx,%edx 0.00 : 35a79: 48 c7 00 04 00 00 00 movq $0x4,(%rax) 0.00 : 35a80: 89 d0 mov %edx,%eax 0.00 : 35a82: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 35a86: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 35a8b: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 35a90: 48 83 c4 18 add $0x18,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000420d0 <__mpn_divrem>: ??:0 33.33 : 420d0: 41 57 push %r15 0.00 : 420d2: 49 89 fa mov %rdi,%r10 0.00 : 420d5: 49 89 d3 mov %rdx,%r11 0.00 : 420d8: 49 89 cf mov %rcx,%r15 0.00 : 420db: 41 56 push %r14 0.00 : 420dd: 4d 89 ce mov %r9,%r14 0.00 : 420e0: 41 55 push %r13 0.00 : 420e2: 41 54 push %r12 0.00 : 420e4: 55 push %rbp 0.00 : 420e5: 53 push %rbx 0.00 : 420e6: 48 83 ec 68 sub $0x68,%rsp 0.00 : 420ea: 49 83 f9 01 cmp $0x1,%r9 0.00 : 420ee: 48 89 74 24 30 mov %rsi,0x30(%rsp) 0.00 : 420f3: 4c 89 44 24 28 mov %r8,0x28(%rsp) 0.00 : 420f8: 0f 84 d1 02 00 00 je 423cf <__mpn_divrem+0x2ff> 0.00 : 420fe: 49 83 f9 02 cmp $0x2,%r9 0.00 : 42102: 0f 84 04 02 00 00 je 4230c <__mpn_divrem+0x23c> 0.00 : 42108: 4d 85 c9 test %r9,%r9 0.00 : 4210b: 75 28 jne 42135 <__mpn_divrem+0x65> 0.00 : 4210d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 42112: 48 89 d0 mov %rdx,%rax 0.00 : 42115: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 42119: 49 f7 f9 idiv %r9 0.00 : 4211c: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 42121: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : 42126: 48 83 c4 68 add $0x68,%rsp 0.00 : 4212a: 5b pop %rbx 0.00 : 4212b: 5d pop %rbp 0.00 : 4212c: 41 5c pop %r12 0.00 : 4212e: 41 5d pop %r13 0.00 : 42130: 41 5e pop %r14 0.00 : 42132: 41 5f pop %r15 0.00 : 42134: c3 retq 0.00 : 42135: 49 8d 69 ff lea -0x1(%r9),%rbp 0.00 : 42139: 48 89 c8 mov %rcx,%rax 0.00 : 4213c: 4c 29 c8 sub %r9,%rax 0.00 : 4213f: 48 89 6c 24 18 mov %rbp,0x18(%rsp) 0.00 : 42144: 4c 8d 2c c2 lea (%rdx,%rax,8),%r13 0.00 : 42148: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 4214d: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 42152: 48 c1 e5 03 shl $0x3,%rbp 0.00 : 42156: 48 89 6c 24 38 mov %rbp,0x38(%rsp) 0.00 : 4215b: 48 8b 2c c2 mov (%rdx,%rax,8),%rbp 0.00 : 4215f: 49 8d 41 fe lea -0x2(%r9),%rax 0.00 : 42163: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 4216a: 00 0.00 : 4216b: 48 89 54 24 40 mov %rdx,0x40(%rsp) 0.00 : 42170: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 42175: 4c 8b 24 c2 mov (%rdx,%rax,8),%r12 0.00 : 42179: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 4217e: 4c 01 e8 add %r13,%rax 0.00 : 42181: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 42186: 4c 8b 00 mov (%rax),%r8 0.00 : 42189: 4c 39 c5 cmp %r8,%rbp 0.00 : 4218c: 0f 86 00 03 00 00 jbe 42492 <__mpn_divrem+0x3c2> 0.00 : 42192: 48 c7 44 24 50 00 00 movq $0x0,0x50(%rsp) 0.00 : 42199: 00 00 0.00 : 4219b: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 421a0: 4a 8d 44 3a ff lea -0x1(%rdx,%r15,1),%rax 0.00 : 421a5: 49 89 c7 mov %rax,%r15 0.00 : 421a8: 4d 29 f7 sub %r14,%r15 0.00 : 421ab: 0f 88 70 ff ff ff js 42121 <__mpn_divrem+0x51> 0.00 : 421b1: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 421b6: 4a 8d 04 f5 00 00 00 lea 0x0(,%r14,8),%rax 0.00 : 421bd: 00 0.00 : 421be: 4f 8d 14 fa lea (%r10,%r15,8),%r10 0.00 : 421c2: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : 421c7: 4c 89 54 24 60 mov %r10,0x60(%rsp) 0.00 : 421cc: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 421d0: 4c 39 7c 24 30 cmp %r15,0x30(%rsp) 0.00 : 421d5: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 421da: 0f 8f d9 00 00 00 jg 422b9 <__mpn_divrem+0x1e9> 0.00 : 421e0: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 421e5: 49 83 ed 08 sub $0x8,%r13 0.00 : 421e9: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 421ee: 49 8b 44 05 00 mov 0x0(%r13,%rax,1),%rax 0.00 : 421f3: 4c 01 ea add %r13,%rdx 0.00 : 421f6: 48 89 54 24 20 mov %rdx,0x20(%rsp) 0.00 : 421fb: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 42200: 49 39 e8 cmp %rbp,%r8 0.00 : 42203: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 4220a: 74 4e je 4225a <__mpn_divrem+0x18a> 0.00 : 4220c: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 42211: 48 8b 02 mov (%rdx),%rax 0.00 : 42214: 4c 89 c2 mov %r8,%rdx 0.00 : 42217: 48 f7 f5 div %rbp 0.00 : 4221a: 48 89 c3 mov %rax,%rbx 0.00 : 4221d: 48 89 d7 mov %rdx,%rdi 0.00 : 42220: 4c 89 e0 mov %r12,%rax 0.00 : 42223: 48 f7 e3 mul %rbx 0.00 : 42226: 48 89 d6 mov %rdx,%rsi 0.00 : 42229: 48 89 c1 mov %rax,%rcx 0.00 : 4222c: eb 10 jmp 4223e <__mpn_divrem+0x16e> 0.00 : 4222e: 66 90 xchg %ax,%ax 0.00 : 42230: 31 c0 xor %eax,%eax 0.00 : 42232: 4c 39 e1 cmp %r12,%rcx 0.00 : 42235: 0f 92 c0 setb %al 0.00 : 42238: 4c 29 e1 sub %r12,%rcx 0.00 : 4223b: 48 29 c6 sub %rax,%rsi 0.00 : 4223e: 48 39 fe cmp %rdi,%rsi 0.00 : 42241: 77 0e ja 42251 <__mpn_divrem+0x181> 0.00 : 42243: 75 15 jne 4225a <__mpn_divrem+0x18a> 0.00 : 42245: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : 4224a: 49 3b 4c 05 00 cmp 0x0(%r13,%rax,1),%rcx 0.00 : 4224f: 76 09 jbe 4225a <__mpn_divrem+0x18a> 0.00 : 42251: 48 83 eb 01 sub $0x1,%rbx 0.00 : 42255: 48 01 ef add %rbp,%rdi 0.00 : 42258: 73 d6 jae 42230 <__mpn_divrem+0x160> 0.00 : 4225a: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 4225f: 48 89 d9 mov %rbx,%rcx 0.00 : 42262: 4c 89 f2 mov %r14,%rdx 0.00 : 42265: 4c 89 ef mov %r13,%rdi 0.00 : 42268: e8 f3 12 00 00 callq 43560 <__mpn_submul_1> 0.00 : 4226d: 48 39 44 24 58 cmp %rax,0x58(%rsp) 0.00 : 42272: 74 17 je 4228b <__mpn_divrem+0x1bb> 0.00 : 42274: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 42279: 4c 89 f1 mov %r14,%rcx 0.00 : 4227c: 4c 89 ee mov %r13,%rsi 0.00 : 4227f: 4c 89 ef mov %r13,%rdi 0.00 : 42282: 48 83 eb 01 sub $0x1,%rbx 0.00 : 42286: e8 05 fd ff ff callq 41f90 <__mpn_add_n> 0.00 : 4228b: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 42290: 48 89 1a mov %rbx,(%rdx) 0.00 : 42293: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 42298: 48 83 ea 08 sub $0x8,%rdx 0.00 : 4229c: 49 83 ef 01 sub $0x1,%r15 0.00 : 422a0: 4c 8b 00 mov (%rax),%r8 0.00 : 422a3: 48 89 54 24 60 mov %rdx,0x60(%rsp) 0.00 : 422a8: 0f 88 73 fe ff ff js 42121 <__mpn_divrem+0x51> 0.00 : 422ae: 4c 39 7c 24 30 cmp %r15,0x30(%rsp) 0.00 : 422b3: 0f 8e 27 ff ff ff jle 421e0 <__mpn_divrem+0x110> 0.00 : 422b9: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 422be: 48 83 7c 24 18 00 cmpq $0x0,0x18(%rsp) 0.00 : 422c4: 48 8b 00 mov (%rax),%rax 0.00 : 422c7: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 422cc: 78 31 js 422ff <__mpn_divrem+0x22f> 0.00 : 422ce: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 422d3: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 422d8: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 422dd: 49 8d 74 15 00 lea 0x0(%r13,%rdx,1),%rsi 0.00 : 422e2: 31 d2 xor %edx,%edx 0.00 : 422e4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 422e8: 48 8b 06 mov (%rsi),%rax 0.00 : 422eb: 48 83 c2 01 add $0x1,%rdx 0.00 : 422ef: 48 83 ee 08 sub $0x8,%rsi 0.00 : 422f3: 48 89 01 mov %rax,(%rcx) 0.00 : 422f6: 48 83 e9 08 sub $0x8,%rcx 0.00 : 422fa: 4c 39 f2 cmp %r14,%rdx 0.00 : 422fd: 75 e9 jne 422e8 <__mpn_divrem+0x218> 0.00 : 422ff: 49 c7 45 00 00 00 00 movq $0x0,0x0(%r13) 0.00 : 42306: 00 0.00 : 42307: e9 f4 fe ff ff jmpq 42200 <__mpn_divrem+0x130> 0.00 : 4230c: 48 8b 6c 24 28 mov 0x28(%rsp),%rbp 0.00 : 42311: 48 8d 5c ca f0 lea -0x10(%rdx,%rcx,8),%rbx 0.00 : 42316: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 4231a: 48 8d 7b 08 lea 0x8(%rbx),%rdi 0.00 : 4231e: 48 8b 03 mov (%rbx),%rax 0.00 : 42321: 4c 8b 5d 08 mov 0x8(%rbp),%r11 0.00 : 42325: 48 8b 75 00 mov 0x0(%rbp),%rsi 0.00 : 42329: 49 39 d3 cmp %rdx,%r11 0.00 : 4232c: 0f 86 3e 01 00 00 jbe 42470 <__mpn_divrem+0x3a0> 0.00 : 42332: 48 c7 44 24 50 00 00 movq $0x0,0x50(%rsp) 0.00 : 42339: 00 00 0.00 : 4233b: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp 0.00 : 42340: 4a 8d 4c 3d fd lea -0x3(%rbp,%r15,1),%rcx 0.00 : 42345: 48 85 c9 test %rcx,%rcx 0.00 : 42348: 0f 88 13 02 00 00 js 42561 <__mpn_divrem+0x491> 0.00 : 4234e: 48 89 f5 mov %rsi,%rbp 0.00 : 42351: 49 8d 3c ca lea (%r10,%rcx,8),%rdi 0.00 : 42355: 48 f7 dd neg %rbp 0.00 : 42358: eb 29 jmp 42383 <__mpn_divrem+0x2b3> 0.00 : 4235a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42360: 0f 84 a2 01 00 00 je 42508 <__mpn_divrem+0x438> 0.00 : 42366: 4c 89 2f mov %r13,(%rdi) 0.00 : 42369: 4c 89 e2 mov %r12,%rdx 0.00 : 4236c: 4c 89 c0 mov %r8,%rax 0.00 : 4236f: 48 83 ef 08 sub $0x8,%rdi 0.00 : 42373: 4c 29 c8 sub %r9,%rax 0.00 : 42376: 4c 19 d2 sbb %r10,%rdx 0.00 : 42379: 48 83 e9 01 sub $0x1,%rcx 0.00 : 4237d: 0f 88 da 01 00 00 js 4255d <__mpn_divrem+0x48d> 0.00 : 42383: 48 39 4c 24 30 cmp %rcx,0x30(%rsp) 0.00 : 42388: 0f 8f 92 01 00 00 jg 42520 <__mpn_divrem+0x450> 0.00 : 4238e: 48 83 eb 08 sub $0x8,%rbx 0.00 : 42392: 4c 39 da cmp %r11,%rdx 0.00 : 42395: 0f 84 95 01 00 00 je 42530 <__mpn_divrem+0x460> 0.00 : 4239b: 49 f7 f3 div %r11 0.00 : 4239e: 49 89 c5 mov %rax,%r13 0.00 : 423a1: 49 89 d4 mov %rdx,%r12 0.00 : 423a4: 48 89 f0 mov %rsi,%rax 0.00 : 423a7: 49 f7 e5 mul %r13 0.00 : 423aa: 49 89 d2 mov %rdx,%r10 0.00 : 423ad: 49 89 c1 mov %rax,%r9 0.00 : 423b0: 4c 8b 03 mov (%rbx),%r8 0.00 : 423b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 423b8: 4d 39 e2 cmp %r12,%r10 0.00 : 423bb: 76 a3 jbe 42360 <__mpn_divrem+0x290> 0.00 : 423bd: 49 83 ed 01 sub $0x1,%r13 0.00 : 423c1: 49 29 f1 sub %rsi,%r9 0.00 : 423c4: 49 83 da 00 sbb $0x0,%r10 0.00 : 423c8: 4d 01 dc add %r11,%r12 0.00 : 423cb: 73 eb jae 423b8 <__mpn_divrem+0x2e8> 0.00 : 423cd: eb 97 jmp 42366 <__mpn_divrem+0x296> 0.00 : 423cf: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 423d4: 48 8b 32 mov (%rdx),%rsi 0.00 : 423d7: 49 8b 54 cb f8 mov -0x8(%r11,%rcx,8),%rdx 0.00 : 423dc: 48 c7 44 24 50 00 00 movq $0x0,0x50(%rsp) 0.00 : 423e3: 00 00 0.00 : 423e5: 48 39 d6 cmp %rdx,%rsi 0.00 : 423e8: 0f 86 03 01 00 00 jbe 424f1 <__mpn_divrem+0x421> 33.33 : 423ee: 4c 8b 44 24 30 mov 0x30(%rsp),%r8 0.00 : 423f3: 49 c1 e0 03 shl $0x3,%r8 0.00 : 423f7: 4b 8d 3c 02 lea (%r10,%r8,1),%rdi 0.00 : 423fb: 4d 89 fa mov %r15,%r10 0.00 : 423fe: 49 83 ea 02 sub $0x2,%r10 0.00 : 42402: 78 2b js 4242f <__mpn_divrem+0x35f> 0.00 : 42404: 4a 8d 04 d5 00 00 00 lea 0x0(,%r10,8),%rax 0.00 : 4240b: 00 0.00 : 4240c: 4d 8d 0c 03 lea (%r11,%rax,1),%r9 0.00 : 42410: 48 8d 0c 07 lea (%rdi,%rax,1),%rcx 0.00 : 42414: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42418: 49 8b 01 mov (%r9),%rax 0.00 : 4241b: 49 83 e9 08 sub $0x8,%r9 0.00 : 4241f: 48 f7 f6 div %rsi 33.33 : 42422: 48 89 01 mov %rax,(%rcx) 0.00 : 42425: 48 83 e9 08 sub $0x8,%rcx 0.00 : 42429: 49 83 ea 01 sub $0x1,%r10 0.00 : 4242d: 79 e9 jns 42418 <__mpn_divrem+0x348> 0.00 : 4242f: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 42434: 48 89 f9 mov %rdi,%rcx 0.00 : 42437: 4c 29 c1 sub %r8,%rcx 0.00 : 4243a: 48 83 e8 01 sub $0x1,%rax 0.00 : 4243e: 78 28 js 42468 <__mpn_divrem+0x398> 0.00 : 42440: 48 8d 3c c1 lea (%rcx,%rax,8),%rdi 0.00 : 42444: 45 31 c0 xor %r8d,%r8d 0.00 : 42447: 31 c9 xor %ecx,%ecx 0.00 : 42449: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 42450: 4c 89 c0 mov %r8,%rax 0.00 : 42453: 48 83 c1 01 add $0x1,%rcx 0.00 : 42457: 48 f7 f6 div %rsi 0.00 : 4245a: 48 89 07 mov %rax,(%rdi) 0.00 : 4245d: 48 83 ef 08 sub $0x8,%rdi 0.00 : 42461: 48 39 4c 24 30 cmp %rcx,0x30(%rsp) 0.00 : 42466: 75 e8 jne 42450 <__mpn_divrem+0x380> 0.00 : 42468: 49 89 13 mov %rdx,(%r11) 0.00 : 4246b: e9 b1 fc ff ff jmpq 42121 <__mpn_divrem+0x51> 0.00 : 42470: 4c 39 da cmp %r11,%rdx 0.00 : 42473: 77 09 ja 4247e <__mpn_divrem+0x3ae> 0.00 : 42475: 48 39 f0 cmp %rsi,%rax 0.00 : 42478: 0f 82 b4 fe ff ff jb 42332 <__mpn_divrem+0x262> 0.00 : 4247e: 48 29 f0 sub %rsi,%rax 0.00 : 42481: 4c 19 da sbb %r11,%rdx 0.00 : 42484: 48 c7 44 24 50 01 00 movq $0x1,0x50(%rsp) 0.00 : 4248b: 00 00 0.00 : 4248d: e9 a9 fe ff ff jmpq 4233b <__mpn_divrem+0x26b> 0.00 : 42492: 72 2c jb 424c0 <__mpn_divrem+0x3f0> 0.00 : 42494: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 42499: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 4249e: 4c 89 ef mov %r13,%rdi 0.00 : 424a1: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 424a6: 4c 89 14 24 mov %r10,(%rsp) 0.00 : 424aa: e8 51 fb ff ff callq 42000 <__mpn_cmp> 0.00 : 424af: 85 c0 test %eax,%eax 0.00 : 424b1: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 424b6: 4c 8b 14 24 mov (%rsp),%r10 0.00 : 424ba: 0f 88 d2 fc ff ff js 42192 <__mpn_divrem+0xc2> 0.00 : 424c0: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 424c5: 4c 89 f1 mov %r14,%rcx 0.00 : 424c8: 4c 89 ee mov %r13,%rsi 0.00 : 424cb: 4c 89 ef mov %r13,%rdi 0.00 : 424ce: 4c 89 14 24 mov %r10,(%rsp) 0.00 : 424d2: e8 59 10 00 00 callq 43530 <__mpn_sub_n> 0.00 : 424d7: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 424dc: 4c 8b 14 24 mov (%rsp),%r10 0.00 : 424e0: 4c 8b 02 mov (%rdx),%r8 0.00 : 424e3: 48 c7 44 24 50 01 00 movq $0x1,0x50(%rsp) 0.00 : 424ea: 00 00 0.00 : 424ec: e9 aa fc ff ff jmpq 4219b <__mpn_divrem+0xcb> 0.00 : 424f1: 48 29 f2 sub %rsi,%rdx 0.00 : 424f4: 48 c7 44 24 50 01 00 movq $0x1,0x50(%rsp) 0.00 : 424fb: 00 00 0.00 : 424fd: e9 ec fe ff ff jmpq 423ee <__mpn_divrem+0x31e> 0.00 : 42502: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42508: 4d 39 c1 cmp %r8,%r9 0.00 : 4250b: 0f 86 55 fe ff ff jbe 42366 <__mpn_divrem+0x296> 0.00 : 42511: e9 a7 fe ff ff jmpq 423bd <__mpn_divrem+0x2ed> 0.00 : 42516: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4251d: 00 00 00 0.00 : 42520: 4c 39 da cmp %r11,%rdx 0.00 : 42523: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 0.00 : 4252a: 0f 85 6b fe ff ff jne 4239b <__mpn_divrem+0x2cb> 0.00 : 42530: 49 89 d4 mov %rdx,%r12 0.00 : 42533: 49 01 c4 add %rax,%r12 0.00 : 42536: 73 38 jae 42570 <__mpn_divrem+0x4a0> 0.00 : 42538: 49 29 f4 sub %rsi,%r12 0.00 : 4253b: 48 8b 03 mov (%rbx),%rax 0.00 : 4253e: 48 c7 07 ff ff ff ff movq $0xffffffffffffffff,(%rdi) 0.00 : 42545: 4c 89 e2 mov %r12,%rdx 0.00 : 42548: 48 83 ef 08 sub $0x8,%rdi 0.00 : 4254c: 48 01 f0 add %rsi,%rax 0.00 : 4254f: 48 83 d2 00 adc $0x0,%rdx 0.00 : 42553: 48 83 e9 01 sub $0x1,%rcx 0.00 : 42557: 0f 89 26 fe ff ff jns 42383 <__mpn_divrem+0x2b3> 0.00 : 4255d: 48 8d 7b 08 lea 0x8(%rbx),%rdi 0.00 : 42561: 48 89 17 mov %rdx,(%rdi) 0.00 : 42564: 48 89 03 mov %rax,(%rbx) 0.00 : 42567: e9 b5 fb ff ff jmpq 42121 <__mpn_divrem+0x51> 0.00 : 4256c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42570: 31 c0 xor %eax,%eax 0.00 : 42572: 48 85 f6 test %rsi,%rsi 0.00 : 42575: 49 89 f2 mov %rsi,%r10 0.00 : 42578: 0f 95 c0 setne %al 0.00 : 4257b: 49 89 e9 mov %rbp,%r9 0.00 : 4257e: 49 c7 c5 ff ff ff ff mov $0xffffffffffffffff,%r13 0.00 : 42585: 49 29 c2 sub %rax,%r10 0.00 : 42588: e9 23 fe ff ff jmpq 423b0 <__mpn_divrem+0x2e0> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000066d70 <__fopen_internal>: 50.00 : 66d70: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 66d75: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 66d7a: 89 d5 mov %edx,%ebp 0.00 : 66d7c: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 66d81: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 66d86: 48 83 ec 28 sub $0x28,%rsp 0.00 : 66d8a: 49 89 fd mov %rdi,%r13 0.00 : 66d8d: bf 38 02 00 00 mov $0x238,%edi 0.00 : 66d92: 49 89 f4 mov %rsi,%r12 0.00 : 66d95: e8 b6 7a fb ff callq 1e850 0.00 : 66d9a: 48 85 c0 test %rax,%rax 0.00 : 66d9d: 48 89 c3 mov %rax,%rbx 0.00 : 66da0: 0f 84 8a 00 00 00 je 66e30 <__fopen_internal+0xc0> 0.00 : 66da6: 48 8d 80 e0 00 00 00 lea 0xe0(%rax),%rax 0.00 : 66dad: 48 8d 8b f0 00 00 00 lea 0xf0(%rbx),%rcx 0.00 : 66db4: 4c 8d 05 a5 a2 30 00 lea 0x30a2a5(%rip),%r8 # 371060 <_IO_wfile_jumps> 0.00 : 66dbb: 31 d2 xor %edx,%edx 0.00 : 66dbd: 31 f6 xor %esi,%esi 0.00 : 66dbf: 48 89 df mov %rbx,%rdi 0.00 : 66dc2: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) 0.00 : 66dc9: e8 42 d2 00 00 callq 74010 <_IO_no_init> 0.00 : 66dce: 48 8d 05 4b a7 30 00 lea 0x30a74b(%rip),%rax # 371520 <_IO_file_jumps> 0.00 : 66dd5: 48 89 df mov %rbx,%rdi 0.00 : 66dd8: 48 89 83 d8 00 00 00 mov %rax,0xd8(%rbx) 50.00 : 66ddf: e8 fc c6 00 00 callq 734e0 <_IO_file_init@@GLIBC_2.2.5> 0.00 : 66de4: 89 e9 mov %ebp,%ecx 0.00 : 66de6: 4c 89 e2 mov %r12,%rdx 0.00 : 66de9: 4c 89 ee mov %r13,%rsi 0.00 : 66dec: 48 89 df mov %rbx,%rdi 0.00 : 66def: e8 3c c2 00 00 callq 73030 <_IO_file_fopen@@GLIBC_2.2.5> 0.00 : 66df4: 48 85 c0 test %rax,%rax 0.00 : 66df7: 74 20 je 66e19 <__fopen_internal+0xa9> 0.00 : 66df9: 48 89 df mov %rbx,%rdi 0.00 : 66dfc: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 66e01: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 66e06: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 66e0b: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 66e10: 48 83 c4 28 add $0x28,%rsp 0.00 : 66e14: e9 17 ff ff ff jmpq 66d30 <__fopen_maybe_mmap> 0.00 : 66e19: 48 89 df mov %rbx,%rdi 0.00 : 66e1c: e8 ef c9 00 00 callq 73810 <_IO_un_link> 0.00 : 66e21: 48 89 df mov %rbx,%rdi 0.00 : 66e24: e8 77 7a fb ff callq 1e8a0 0.00 : 66e29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 66e30: 31 c0 xor %eax,%eax 0.00 : 66e32: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 66e37: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 66e3c: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 66e41: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 66e46: 48 83 c4 28 add $0x28,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000075200 <__uflow>: 0.00 : 75200: 53 push %rbx 0.00 : 75201: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 0.00 : 75207: 48 89 fb mov %rdi,%rbx 0.00 : 7520a: 85 c0 test %eax,%eax 0.00 : 7520c: 75 52 jne 75260 <__uflow+0x60> 0.00 : 7520e: c7 87 c0 00 00 00 ff movl $0xffffffff,0xc0(%rdi) 0.00 : 75215: ff ff ff 0.00 : 75218: 8b 03 mov (%rbx),%eax 33.33 : 7521a: f6 c4 08 test $0x8,%ah 0.00 : 7521d: 75 78 jne 75297 <__uflow+0x97> 0.00 : 7521f: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 75223: 48 3b 43 10 cmp 0x10(%rbx),%rax 0.00 : 75227: 72 5f jb 75288 <__uflow+0x88> 0.00 : 75229: 8b 03 mov (%rbx),%eax 0.00 : 7522b: f6 c4 01 test $0x1,%ah 0.00 : 7522e: 75 40 jne 75270 <__uflow+0x70> 33.33 : 75230: 48 83 7b 60 00 cmpq $0x0,0x60(%rbx) 0.00 : 75235: 75 79 jne 752b0 <__uflow+0xb0> 0.00 : 75237: 48 83 7b 48 00 cmpq $0x0,0x48(%rbx) 0.00 : 7523c: 74 08 je 75246 <__uflow+0x46> 0.00 : 7523e: 48 89 df mov %rbx,%rdi 0.00 : 75241: e8 9a fb ff ff callq 74de0 <_IO_free_backup_area> 33.33 : 75246: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 7524d: 48 89 df mov %rbx,%rdi 0.00 : 75250: 5b pop %rbx 0.00 : 75251: 4c 8b 58 28 mov 0x28(%rax),%r11 0.00 : 75255: 41 ff e3 jmpq *%r11 0.00 : 75258: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7525f: 00 0.00 : 75260: 83 c0 01 add $0x1,%eax 0.00 : 75263: 74 b3 je 75218 <__uflow+0x18> 0.00 : 75265: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 7526a: 89 d0 mov %edx,%eax 0.00 : 7526c: 5b pop %rbx 0.00 : 7526d: c3 retq 0.00 : 7526e: 66 90 xchg %ax,%ax 0.00 : 75270: 48 89 df mov %rbx,%rdi 0.00 : 75273: e8 48 ea ff ff callq 73cc0 <_IO_switch_to_main_get_area> 0.00 : 75278: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7527c: 48 3b 43 10 cmp 0x10(%rbx),%rax 0.00 : 75280: 73 ae jae 75230 <__uflow+0x30> 0.00 : 75282: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 75288: 0f b6 10 movzbl (%rax),%edx 0.00 : 7528b: 48 83 c0 01 add $0x1,%rax 0.00 : 7528f: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 75293: 5b pop %rbx 0.00 : 75294: 89 d0 mov %edx,%eax 0.00 : 75296: c3 retq 0.00 : 75297: 48 89 df mov %rbx,%rdi 0.00 : 7529a: e8 81 ea ff ff callq 73d20 <_IO_switch_to_get_mode> 0.00 : 7529f: 83 c0 01 add $0x1,%eax 0.00 : 752a2: 0f 85 77 ff ff ff jne 7521f <__uflow+0x1f> 0.00 : 752a8: eb bb jmp 75265 <__uflow+0x65> 0.00 : 752aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 752b0: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 752b4: 48 89 df mov %rbx,%rdi 0.00 : 752b7: e8 34 fc ff ff callq 74ef0 0.00 : 752bc: 85 c0 test %eax,%eax 0.00 : 752be: 66 90 xchg %ax,%ax 0.00 : 752c0: 74 84 je 75246 <__uflow+0x46> 0.00 : 752c2: eb a1 jmp 75265 <__uflow+0x65> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007c1d0 <_int_realloc>: 25.00 : 7c1d0: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 7c1d5: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 7c1da: 48 89 d3 mov %rdx,%rbx 0.00 : 7c1dd: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 7c1e2: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 7c1e7: 49 89 f5 mov %rsi,%r13 0.00 : 7c1ea: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 7c1ef: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 25.00 : 7c1f4: 48 83 ec 48 sub $0x48,%rsp 0.00 : 7c1f8: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 7c1fc: 49 89 ff mov %rdi,%r15 0.00 : 7c1ff: 49 89 ce mov %rcx,%r14 0.00 : 7c202: 48 83 f8 10 cmp $0x10,%rax 0.00 : 7c206: 0f 86 d4 03 00 00 jbe 7c5e0 <_int_realloc+0x410> 0.00 : 7c20c: 48 39 97 70 08 00 00 cmp %rdx,0x870(%rdi) 0.00 : 7c213: 0f 86 c7 03 00 00 jbe 7c5e0 <_int_realloc+0x410> 0.00 : 7c219: a8 02 test $0x2,%al 0.00 : 7c21b: 0f 85 8f 02 00 00 jne 7c4b0 <_int_realloc+0x2e0> 0.00 : 7c221: 49 8d 6c 1d 00 lea 0x0(%r13,%rbx,1),%rbp 0.00 : 7c226: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : 7c22a: 48 83 f8 10 cmp $0x10,%rax 0.00 : 7c22e: 0f 86 cc 03 00 00 jbe 7c600 <_int_realloc+0x430> 0.00 : 7c234: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 7c238: 49 3b 87 70 08 00 00 cmp 0x870(%r15),%rax 0.00 : 7c23f: 0f 83 bb 03 00 00 jae 7c600 <_int_realloc+0x430> 0.00 : 7c245: 4c 39 f3 cmp %r14,%rbx 0.00 : 7c248: 49 89 dc mov %rbx,%r12 0.00 : 7c24b: 0f 83 af 01 00 00 jae 7c400 <_int_realloc+0x230> 0.00 : 7c251: 49 39 6f 58 cmp %rbp,0x58(%r15) 0.00 : 7c255: 0f 84 cd 02 00 00 je 7c528 <_int_realloc+0x358> 0.00 : 7c25b: f6 44 05 08 01 testb $0x1,0x8(%rbp,%rax,1) 0.00 : 7c260: 75 0d jne 7c26f <_int_realloc+0x9f> 0.00 : 7c262: 4c 8d 24 03 lea (%rbx,%rax,1),%r12 0.00 : 7c266: 4d 39 e6 cmp %r12,%r14 0.00 : 7c269: 0f 86 c9 00 00 00 jbe 7c338 <_int_realloc+0x168> 0.00 : 7c26f: 49 8d 76 f1 lea -0xf(%r14),%rsi 0.00 : 7c273: 4c 89 ff mov %r15,%rdi 0.00 : 7c276: e8 a5 cb ff ff callq 78e20 <_int_malloc> 0.00 : 7c27b: 49 89 c4 mov %rax,%r12 0.00 : 7c27e: 31 c0 xor %eax,%eax 0.00 : 7c280: 4d 85 e4 test %r12,%r12 0.00 : 7c283: 0f 84 d2 01 00 00 je 7c45b <_int_realloc+0x28b> 0.00 : 7c289: 49 8d 44 24 f0 lea -0x10(%r12),%rax 0.00 : 7c28e: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 7c293: 48 39 6c 24 10 cmp %rbp,0x10(%rsp) 0.00 : 7c298: 49 8b 44 24 f8 mov -0x8(%r12),%rax 0.00 : 7c29d: 0f 84 dd 02 00 00 je 7c580 <_int_realloc+0x3b0> 0.00 : 7c2a3: 4c 8d 73 f8 lea -0x8(%rbx),%r14 0.00 : 7c2a7: 49 8d 5d 10 lea 0x10(%r13),%rbx 0.00 : 7c2ab: 4c 89 f5 mov %r14,%rbp 0.00 : 7c2ae: 48 c1 ed 03 shr $0x3,%rbp 0.00 : 7c2b2: 83 fd 02 cmp $0x2,%ebp 0.00 : 7c2b5: 0f 86 45 02 00 00 jbe 7c500 <_int_realloc+0x330> 0.00 : 7c2bb: 83 fd 09 cmp $0x9,%ebp 0.00 : 7c2be: 0f 87 14 02 00 00 ja 7c4d8 <_int_realloc+0x308> 0.00 : 7c2c4: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 7c2c8: 83 fd 04 cmp $0x4,%ebp 0.00 : 7c2cb: 49 89 04 24 mov %rax,(%r12) 0.00 : 7c2cf: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7c2d3: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 7c2d8: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 7c2dc: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 7c2e1: 0f 86 ff 01 00 00 jbe 7c4e6 <_int_realloc+0x316> 0.00 : 7c2e7: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 7c2eb: 83 fd 06 cmp $0x6,%ebp 0.00 : 7c2ee: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 7c2f3: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 7c2f7: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 7c2fc: 0f 86 e4 01 00 00 jbe 7c4e6 <_int_realloc+0x316> 0.00 : 7c302: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 7c306: 83 fd 09 cmp $0x9,%ebp 0.00 : 7c309: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 7c30e: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 7c312: 49 89 44 24 30 mov %rax,0x30(%r12) 0.00 : 7c317: 0f 85 c9 01 00 00 jne 7c4e6 <_int_realloc+0x316> 0.00 : 7c31d: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 7c321: 49 89 44 24 38 mov %rax,0x38(%r12) 0.00 : 7c326: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 7c32a: 49 89 44 24 40 mov %rax,0x40(%r12) 0.00 : 7c32f: e9 b2 01 00 00 jmpq 7c4e6 <_int_realloc+0x316> 0.00 : 7c334: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7c338: 4c 8b 45 10 mov 0x10(%rbp),%r8 0.00 : 7c33c: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 7c340: 49 8b 58 18 mov 0x18(%r8),%rbx 0.00 : 7c344: 48 39 eb cmp %rbp,%rbx 0.00 : 7c347: 0f 85 bc 02 00 00 jne 7c609 <_int_realloc+0x439> 0.00 : 7c34d: 48 3b 58 10 cmp 0x10(%rax),%rbx 0.00 : 7c351: 0f 85 b2 02 00 00 jne 7c609 <_int_realloc+0x439> 0.00 : 7c357: 49 89 40 18 mov %rax,0x18(%r8) 0.00 : 7c35b: 4c 89 40 10 mov %r8,0x10(%rax) 0.00 : 7c35f: 48 81 7b 08 ff 03 00 cmpq $0x3ff,0x8(%rbx) 0.00 : 7c366: 00 0.00 : 7c367: 0f 86 93 00 00 00 jbe 7c400 <_int_realloc+0x230> 0.00 : 7c36d: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 7c371: 48 85 c0 test %rax,%rax 0.00 : 7c374: 0f 84 86 00 00 00 je 7c400 <_int_realloc+0x230> 0.00 : 7c37a: 48 3b 58 28 cmp 0x28(%rax),%rbx 0.00 : 7c37e: 74 29 je 7c3a9 <_int_realloc+0x1d9> 0.00 : 7c380: 48 8d 0d 11 fb 0b 00 lea 0xbfb11(%rip),%rcx # 13be98 <__func__.14509> 0.00 : 7c387: 48 8d 35 b4 f7 0b 00 lea 0xbf7b4(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7c38e: 48 8d 3d e3 3b 0c 00 lea 0xc3be3(%rip),%rdi # 13ff78 <__PRETTY_FUNCTION__.11129+0x259f> 0.00 : 7c395: ba a4 14 00 00 mov $0x14a4,%edx 0.00 : 7c39a: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 7c39f: e8 1c a4 ff ff callq 767c0 <__malloc_assert> 0.00 : 7c3a4: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7c3a9: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 7c3ad: 48 3b 58 20 cmp 0x20(%rax),%rbx 0.00 : 7c3b1: 74 29 je 7c3dc <_int_realloc+0x20c> 0.00 : 7c3b3: 48 8d 0d de fa 0b 00 lea 0xbfade(%rip),%rcx # 13be98 <__func__.14509> 0.00 : 7c3ba: 48 8d 35 81 f7 0b 00 lea 0xbf781(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7c3c1: 48 8d 3d d8 3b 0c 00 lea 0xc3bd8(%rip),%rdi # 13ffa0 <__PRETTY_FUNCTION__.11129+0x25c7> 0.00 : 7c3c8: ba a4 14 00 00 mov $0x14a4,%edx 0.00 : 7c3cd: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 7c3d2: e8 e9 a3 ff ff callq 767c0 <__malloc_assert> 0.00 : 7c3d7: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7c3dc: 49 83 78 20 00 cmpq $0x0,0x20(%r8) 0.00 : 7c3e1: 0f 84 3c 02 00 00 je 7c623 <_int_realloc+0x453> 0.00 : 7c3e7: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 7c3eb: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 7c3ef: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 7c3f3: 48 8b 53 28 mov 0x28(%rbx),%rdx 0.00 : 7c3f7: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 7c3fb: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 7c3ff: 90 nop 0.00 : 7c400: 4c 89 e1 mov %r12,%rcx 0.00 : 7c403: 4c 29 f1 sub %r14,%rcx 0.00 : 7c406: 48 83 f9 1f cmp $0x1f,%rcx 0.00 : 7c40a: 76 74 jbe 7c480 <_int_realloc+0x2b0> 0.00 : 7c40c: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 7c410: 48 8d 05 89 7a 2f 00 lea 0x2f7a89(%rip),%rax # 373ea0 0.00 : 7c417: 4b 8d 74 35 00 lea 0x0(%r13,%r14,1),%rsi 0.00 : 7c41c: 83 e2 07 and $0x7,%edx 0.00 : 7c41f: 49 39 c7 cmp %rax,%r15 0.00 : 7c422: 0f 84 a0 01 00 00 je 7c5c8 <_int_realloc+0x3f8> 0.00 : 7c428: 48 89 d0 mov %rdx,%rax 0.00 : 7c42b: ba 04 00 00 00 mov $0x4,%edx 0.00 : 7c430: 48 83 c8 04 or $0x4,%rax 0.00 : 7c434: 4c 09 f0 or %r14,%rax 0.00 : 7c437: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 7c43b: 48 89 c8 mov %rcx,%rax 0.00 : 7c43e: 4c 89 ff mov %r15,%rdi 0.00 : 7c441: 48 83 c8 01 or $0x1,%rax 0.00 : 7c445: 48 09 d0 or %rdx,%rax 0.00 : 7c448: 48 89 46 08 mov %rax,0x8(%rsi) 0.00 : 7c44c: 48 83 4c 0e 08 01 orq $0x1,0x8(%rsi,%rcx,1) 0.00 : 7c452: e8 49 b6 ff ff callq 77aa0 <_int_free> 0.00 : 7c457: 49 8d 45 10 lea 0x10(%r13),%rax 0.00 : 7c45b: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 0.00 : 7c460: 48 8b 6c 24 20 mov 0x20(%rsp),%rbp 0.00 : 7c465: 4c 8b 64 24 28 mov 0x28(%rsp),%r12 0.00 : 7c46a: 4c 8b 6c 24 30 mov 0x30(%rsp),%r13 0.00 : 7c46f: 4c 8b 74 24 38 mov 0x38(%rsp),%r14 0.00 : 7c474: 4c 8b 7c 24 40 mov 0x40(%rsp),%r15 0.00 : 7c479: 48 83 c4 48 add $0x48,%rsp 0.00 : 7c47d: c3 retq 0.00 : 7c47e: 66 90 xchg %ax,%ax 0.00 : 7c480: 48 8d 15 19 7a 2f 00 lea 0x2f7a19(%rip),%rdx # 373ea0 0.00 : 7c487: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 7c48b: 49 39 d7 cmp %rdx,%r15 0.00 : 7c48e: 0f 95 c2 setne %dl 0.00 : 7c491: 83 e0 07 and $0x7,%eax 0.00 : 7c494: 0f b6 d2 movzbl %dl,%edx 0.00 : 7c497: 4c 09 e0 or %r12,%rax 0.00 : 7c49a: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 7c49e: 48 09 d0 or %rdx,%rax 0.00 : 7c4a1: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 7c4a5: 4b 83 4c 25 08 01 orq $0x1,0x8(%r13,%r12,1) 0.00 : 7c4ab: eb aa jmp 7c457 <_int_realloc+0x287> 0.00 : 7c4ad: 0f 1f 00 nopl (%rax) 0.00 : 7c4b0: 48 8d 0d e1 f9 0b 00 lea 0xbf9e1(%rip),%rcx # 13be98 <__func__.14509> 0.00 : 7c4b7: 48 8d 35 84 f6 0b 00 lea 0xbf684(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7c4be: 48 8d 3d ea f8 0b 00 lea 0xbf8ea(%rip),%rdi # 13bdaf <__PRETTY_FUNCTION__.14063+0x348> 0.00 : 7c4c5: ba 7f 14 00 00 mov $0x147f,%edx 0.00 : 7c4ca: e8 f1 a2 ff ff callq 767c0 <__malloc_assert> 0.00 : 7c4cf: e9 4d fd ff ff jmpq 7c221 <_int_realloc+0x51> 0.00 : 7c4d4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7c4d8: 4c 89 f2 mov %r14,%rdx 0.00 : 7c4db: 48 89 de mov %rbx,%rsi 0.00 : 7c4de: 4c 89 e7 mov %r12,%rdi 0.00 : 7c4e1: e8 6a 82 00 00 callq 84750 0.00 : 7c4e6: 4c 89 ee mov %r13,%rsi 0.00 : 7c4e9: 4c 89 ff mov %r15,%rdi 0.00 : 7c4ec: e8 af b5 ff ff callq 77aa0 <_int_free> 0.00 : 7c4f1: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 7c4f6: 48 83 c0 10 add $0x10,%rax 0.00 : 7c4fa: e9 5c ff ff ff jmpq 7c45b <_int_realloc+0x28b> 0.00 : 7c4ff: 90 nop 0.00 : 7c500: 48 8d 0d 91 f9 0b 00 lea 0xbf991(%rip),%rcx # 13be98 <__func__.14509> 0.00 : 7c507: 48 8d 35 34 f6 0b 00 lea 0xbf634(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7c50e: 48 8d 3d b0 f8 0b 00 lea 0xbf8b0(%rip),%rdi # 13bdc5 <__PRETTY_FUNCTION__.14063+0x35e> 0.00 : 7c515: ba c2 14 00 00 mov $0x14c2,%edx 0.00 : 7c51a: e8 a1 a2 ff ff callq 767c0 <__malloc_assert> 0.00 : 7c51f: e9 97 fd ff ff jmpq 7c2bb <_int_realloc+0xeb> 0.00 : 7c524: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7c528: 48 8d 0c 03 lea (%rbx,%rax,1),%rcx 0.00 : 7c52c: 49 8d 46 20 lea 0x20(%r14),%rax 0.00 : 7c530: 48 39 c1 cmp %rax,%rcx 0.00 : 7c533: 0f 82 36 fd ff ff jb 7c26f <_int_realloc+0x9f> 0.00 : 7c539: 48 8d 15 60 79 2f 00 lea 0x2f7960(%rip),%rdx # 373ea0 0.00 : 7c540: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 7c544: 49 39 d7 cmp %rdx,%r15 0.00 : 7c547: 0f 95 c2 setne %dl 0.00 : 7c54a: 83 e0 07 and $0x7,%eax 0.00 : 7c54d: 4c 29 f1 sub %r14,%rcx 0.00 : 7c550: 0f b6 d2 movzbl %dl,%edx 0.00 : 7c553: 4c 09 f0 or %r14,%rax 0.00 : 7c556: 48 83 c9 01 or $0x1,%rcx 0.00 : 7c55a: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 7c55e: 48 09 d0 or %rdx,%rax 0.00 : 7c561: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 7c565: 4b 8d 44 35 00 lea 0x0(%r13,%r14,1),%rax 0.00 : 7c56a: 49 89 47 58 mov %rax,0x58(%r15) 25.00 : 7c56e: 48 89 48 08 mov %rcx,0x8(%rax) 0.00 : 7c572: 49 8d 45 10 lea 0x10(%r13),%rax 0.00 : 7c576: e9 e0 fe ff ff jmpq 7c45b <_int_realloc+0x28b> 0.00 : 7c57b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7c580: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 7c584: 4c 8d 24 03 lea (%rbx,%rax,1),%r12 0.00 : 7c588: 4d 39 e6 cmp %r12,%r14 0.00 : 7c58b: 0f 86 6f fe ff ff jbe 7c400 <_int_realloc+0x230> 0.00 : 7c591: 48 8d 0d 00 f9 0b 00 lea 0xbf900(%rip),%rcx # 13be98 <__func__.14509> 0.00 : 7c598: 48 8d 35 a3 f5 0b 00 lea 0xbf5a3(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7c59f: 48 8d 3d 22 3a 0c 00 lea 0xc3a22(%rip),%rdi # 13ffc8 <__PRETTY_FUNCTION__.11129+0x25ef> 0.00 : 7c5a6: ba e6 14 00 00 mov $0x14e6,%edx 0.00 : 7c5ab: e8 10 a2 ff ff callq 767c0 <__malloc_assert> 0.00 : 7c5b0: 4c 89 e1 mov %r12,%rcx 0.00 : 7c5b3: 4c 29 f1 sub %r14,%rcx 0.00 : 7c5b6: 48 83 f9 1f cmp $0x1f,%rcx 0.00 : 7c5ba: 0f 87 4c fe ff ff ja 7c40c <_int_realloc+0x23c> 0.00 : 7c5c0: e9 bb fe ff ff jmpq 7c480 <_int_realloc+0x2b0> 0.00 : 7c5c5: 0f 1f 00 nopl (%rax) 25.00 : 7c5c8: 49 09 d6 or %rdx,%r14 0.00 : 7c5cb: 31 d2 xor %edx,%edx 0.00 : 7c5cd: 4d 89 75 08 mov %r14,0x8(%r13) 0.00 : 7c5d1: e9 65 fe ff ff jmpq 7c43b <_int_realloc+0x26b> 0.00 : 7c5d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7c5dd: 00 00 00 0.00 : 7c5e0: 48 8d 35 8f f7 0b 00 lea 0xbf78f(%rip),%rsi # 13bd76 <__PRETTY_FUNCTION__.14063+0x30f> 0.00 : 7c5e7: 8b 3d 1b 5b 2f 00 mov 0x2f5b1b(%rip),%edi # 372108 0.00 : 7c5ed: 49 8d 55 10 lea 0x10(%r13),%rdx 0.00 : 7c5f1: e8 6a 9f ff ff callq 76560 0.00 : 7c5f6: 31 c0 xor %eax,%eax 0.00 : 7c5f8: e9 5e fe ff ff jmpq 7c45b <_int_realloc+0x28b> 0.00 : 7c5fd: 0f 1f 00 nopl (%rax) 0.00 : 7c600: 48 8d 35 8b f7 0b 00 lea 0xbf78b(%rip),%rsi # 13bd92 <__PRETTY_FUNCTION__.14063+0x32b> 0.00 : 7c607: eb de jmp 7c5e7 <_int_realloc+0x417> 0.00 : 7c609: 8b 3d f9 5a 2f 00 mov 0x2f5af9(%rip),%edi # 372108 0.00 : 7c60f: 48 8d 35 0f f5 0b 00 lea 0xbf50f(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 7c616: 48 89 ea mov %rbp,%rdx 0.00 : 7c619: e8 42 9f ff ff callq 76560 0.00 : 7c61e: e9 dd fd ff ff jmpq 7c400 <_int_realloc+0x230> 0.00 : 7c623: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 7c627: 48 39 c3 cmp %rax,%rbx 0.00 : 7c62a: 74 21 je 7c64d <_int_realloc+0x47d> 0.00 : 7c62c: 49 89 40 20 mov %rax,0x20(%r8) 0.00 : 7c630: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 7c634: 49 89 40 28 mov %rax,0x28(%r8) 0.00 : 7c638: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 7c63c: 4c 89 40 28 mov %r8,0x28(%rax) 0.00 : 7c640: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 7c644: 4c 89 40 20 mov %r8,0x20(%rax) 0.00 : 7c648: e9 b3 fd ff ff jmpq 7c400 <_int_realloc+0x230> 0.00 : 7c64d: 4d 89 40 28 mov %r8,0x28(%r8) 0.00 : 7c651: 4d 89 40 20 mov %r8,0x20(%r8) 0.00 : 7c655: e9 a6 fd ff ff jmpq 7c400 <_int_realloc+0x230> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000085bb0 <__GI___rawmemchr>: 0.00 : 85bb0: 66 0f 6e ce movd %esi,%xmm1 0.00 : 85bb4: 48 89 f9 mov %rdi,%rcx 0.00 : 85bb7: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 85bbb: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 85bbf: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 85bc3: 83 ce ff or $0xffffffff,%esi 0.00 : 85bc6: 66 0f 6f 07 movdqa (%rdi),%xmm0 0.00 : 85bca: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 85bcf: 48 29 f9 sub %rdi,%rcx 33.33 : 85bd2: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 85bd6: d3 e6 shl %cl,%esi 0.00 : 85bd8: 66 0f d7 c8 pmovmskb %xmm0,%ecx 33.33 : 85bdc: 21 f1 and %esi,%ecx 0.00 : 85bde: 75 15 jne 85bf5 <__GI___rawmemchr+0x45> 0.00 : 85be0: 66 0f 6f 47 10 movdqa 0x10(%rdi),%xmm0 0.00 : 85be5: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 85be9: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 85bed: 66 0f d7 c8 pmovmskb %xmm0,%ecx 0.00 : 85bf1: 85 c9 test %ecx,%ecx 0.00 : 85bf3: 74 eb je 85be0 <__GI___rawmemchr+0x30> 0.00 : 85bf5: 0f bc c1 bsf %ecx,%eax 33.33 : 85bf8: 48 01 f8 add %rdi,%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 40.00 ??:0 40.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008b8b0 : 40.00 : 8b8b0: 0f b6 06 movzbl (%rsi),%eax 20.00 : 8b8b3: 31 d2 xor %edx,%edx 0.00 : 8b8b5: 38 07 cmp %al,(%rdi) 0.00 : 8b8b7: 74 05 je 8b8be 0.00 : 8b8b9: 19 d2 sbb %edx,%edx 0.00 : 8b8bb: 83 ca 01 or $0x1,%edx 40.00 : 8b8be: 89 d0 mov %edx,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 75.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000972f0 <__wcsmbs_load_conv>: 75.00 : 972f0: 55 push %rbp 0.00 : 972f1: 48 89 e5 mov %rsp,%rbp 0.00 : 972f4: 41 55 push %r13 0.00 : 972f6: 49 89 fd mov %rdi,%r13 0.00 : 972f9: 41 54 push %r12 0.00 : 972fb: 53 push %rbx 0.00 : 972fc: 48 83 ec 08 sub $0x8,%rsp 0.00 : 97300: 8b 15 aa 03 2e 00 mov 0x2e03aa(%rip),%edx # 3776b0 <__libc_pthread_functions_init> 0.00 : 97306: 85 d2 test %edx,%edx 0.00 : 97308: 0f 85 42 01 00 00 jne 97450 <__wcsmbs_load_conv+0x160> 0.00 : 9730e: 49 83 7d 28 00 cmpq $0x0,0x28(%r13) 0.00 : 97313: 0f 85 fd 00 00 00 jne 97416 <__wcsmbs_load_conv+0x126> 0.00 : 97319: bf 20 00 00 00 mov $0x20,%edi 0.00 : 9731e: e8 2d 75 f8 ff callq 1e850 0.00 : 97323: 48 85 c0 test %rax,%rax 0.00 : 97326: 49 89 c4 mov %rax,%r12 0.00 : 97329: 0f 84 6d 01 00 00 je 9749c <__wcsmbs_load_conv+0x1ac> 0.00 : 9732f: 45 8b 55 34 mov 0x34(%r13),%r10d 0.00 : 97333: 4d 8b 8d b0 00 00 00 mov 0xb0(%r13),%r9 0.00 : 9733a: 41 83 fa 01 cmp $0x1,%r10d 0.00 : 9733e: 4c 89 c9 mov %r9,%rcx 0.00 : 97341: 48 19 d2 sbb %rdx,%rdx 0.00 : 97344: 45 31 c0 xor %r8d,%r8d 0.00 : 97347: 48 f7 d2 not %rdx 0.00 : 9734a: 83 e2 08 and $0x8,%edx 0.00 : 9734d: eb 10 jmp 9735f <__wcsmbs_load_conv+0x6f> 0.00 : 9734f: 90 nop 0.00 : 97350: 3c 2f cmp $0x2f,%al 0.00 : 97352: 0f 94 c0 sete %al 0.00 : 97355: 48 83 c1 01 add $0x1,%rcx 0.00 : 97359: 0f b6 c0 movzbl %al,%eax 0.00 : 9735c: 49 01 c0 add %rax,%r8 0.00 : 9735f: 0f b6 01 movzbl (%rcx),%eax 0.00 : 97362: 84 c0 test %al,%al 0.00 : 97364: 75 ea jne 97350 <__wcsmbs_load_conv+0x60> 0.00 : 97366: 4c 29 c9 sub %r9,%rcx 0.00 : 97369: 48 8d 44 11 21 lea 0x21(%rcx,%rdx,1),%rax 0.00 : 9736e: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 97372: 48 29 c4 sub %rax,%rsp 0.00 : 97375: 41 0f b6 01 movzbl (%r9),%eax 0.00 : 97379: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 9737e: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 97382: 84 c0 test %al,%al 0.00 : 97384: 48 89 de mov %rbx,%rsi 0.00 : 97387: 48 89 df mov %rbx,%rdi 0.00 : 9738a: 74 2f je 973bb <__wcsmbs_load_conv+0xcb> 0.00 : 9738c: 48 8b 3d c5 97 2d 00 mov 0x2d97c5(%rip),%rdi # 370b58 <_nl_C_locobj+0x78> 0.00 : 97393: 48 89 de mov %rbx,%rsi 0.00 : 97396: 4c 89 c9 mov %r9,%rcx 0.00 : 97399: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 973a0: 48 0f be c0 movsbq %al,%rax 25.00 : 973a4: 48 83 c1 01 add $0x1,%rcx 0.00 : 973a8: 8b 04 87 mov (%rdi,%rax,4),%eax 0.00 : 973ab: 88 06 mov %al,(%rsi) 0.00 : 973ad: 0f b6 01 movzbl (%rcx),%eax 0.00 : 973b0: 48 83 c6 01 add $0x1,%rsi 0.00 : 973b4: 84 c0 test %al,%al 0.00 : 973b6: 75 e8 jne 973a0 <__wcsmbs_load_conv+0xb0> 0.00 : 973b8: 48 89 f7 mov %rsi,%rdi 0.00 : 973bb: 49 83 f8 01 cmp $0x1,%r8 0.00 : 973bf: 0f 86 eb 00 00 00 jbe 974b0 <__wcsmbs_load_conv+0x1c0> 0.00 : 973c5: c6 07 00 movb $0x0,(%rdi) 0.00 : 973c8: 49 8d 54 24 08 lea 0x8(%r12),%rdx 0.00 : 973cd: 48 8d 3d 9b 32 0a 00 lea 0xa329b(%rip),%rdi # 13a66f <__PRETTY_FUNCTION__.10885+0xf3> 0.00 : 973d4: 48 89 de mov %rbx,%rsi 0.00 : 973d7: e8 34 fe ff ff callq 97210 <__wcsmbs_getfct> 0.00 : 973dc: 48 85 c0 test %rax,%rax 0.00 : 973df: 49 89 04 24 mov %rax,(%r12) 0.00 : 973e3: 0f 84 8f 00 00 00 je 97478 <__wcsmbs_load_conv+0x188> 0.00 : 973e9: 49 8d 54 24 18 lea 0x18(%r12),%rdx 0.00 : 973ee: 48 8d 35 7a 32 0a 00 lea 0xa327a(%rip),%rsi # 13a66f <__PRETTY_FUNCTION__.10885+0xf3> 0.00 : 973f5: 48 89 df mov %rbx,%rdi 0.00 : 973f8: e8 13 fe ff ff callq 97210 <__wcsmbs_getfct> 0.00 : 973fd: 48 85 c0 test %rax,%rax 0.00 : 97400: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 97405: 74 7a je 97481 <__wcsmbs_load_conv+0x191> 0.00 : 97407: 48 8d 05 b2 fd ff ff lea -0x24e(%rip),%rax # 971c0 <_nl_cleanup_ctype> 0.00 : 9740e: 4d 89 65 28 mov %r12,0x28(%r13) 0.00 : 97412: 49 89 45 20 mov %rax,0x20(%r13) 0.00 : 97416: 8b 05 94 02 2e 00 mov 0x2e0294(%rip),%eax # 3776b0 <__libc_pthread_functions_init> 0.00 : 9741c: 85 c0 test %eax,%eax 0.00 : 9741e: 74 1d je 9743d <__wcsmbs_load_conv+0x14d> 0.00 : 97420: 48 8b 05 29 02 2e 00 mov 0x2e0229(%rip),%rax # 377650 <__libc_pthread_functions+0x150> 0.00 : 97427: 48 8d 3d d2 bb 2d 00 lea 0x2dbbd2(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 9742e: 48 c1 c8 11 ror $0x11,%rax 0.00 : 97432: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 97439: 00 00 0.00 : 9743b: ff d0 callq *%rax 0.00 : 9743d: 48 8d 65 e8 lea -0x18(%rbp),%rsp 0.00 : 97441: 5b pop %rbx 0.00 : 97442: 41 5c pop %r12 0.00 : 97444: 41 5d pop %r13 0.00 : 97446: c9 leaveq 0.00 : 97447: c3 retq 0.00 : 97448: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 9744f: 00 0.00 : 97450: 48 8b 05 f1 01 2e 00 mov 0x2e01f1(%rip),%rax # 377648 <__libc_pthread_functions+0x148> 0.00 : 97457: 48 8d 3d a2 bb 2d 00 lea 0x2dbba2(%rip),%rdi # 373000 <__libc_setlocale_lock> 0.00 : 9745e: 48 c1 c8 11 ror $0x11,%rax 0.00 : 97462: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 97469: 00 00 0.00 : 9746b: ff d0 callq *%rax 0.00 : 9746d: e9 9c fe ff ff jmpq 9730e <__wcsmbs_load_conv+0x1e> 0.00 : 97472: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 97478: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 9747f: 00 00 0.00 : 97481: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 97485: 48 85 ff test %rdi,%rdi 0.00 : 97488: 74 0a je 97494 <__wcsmbs_load_conv+0x1a4> 0.00 : 9748a: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 9748f: e8 fc 8e f8 ff callq 20390 <__gconv_close_transform> 0.00 : 97494: 4c 89 e7 mov %r12,%rdi 0.00 : 97497: e8 04 74 f8 ff callq 1e8a0 0.00 : 9749c: 48 8d 05 5d 7f 2d 00 lea 0x2d7f5d(%rip),%rax # 36f400 <__wcsmbs_gconv_fcts_c> 0.00 : 974a3: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 974a7: e9 6a ff ff ff jmpq 97416 <__wcsmbs_load_conv+0x126> 0.00 : 974ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 974b0: 4d 85 c0 test %r8,%r8 0.00 : 974b3: c6 06 2f movb $0x2f,(%rsi) 0.00 : 974b6: 48 8d 7e 01 lea 0x1(%rsi),%rdi 0.00 : 974ba: 0f 85 05 ff ff ff jne 973c5 <__wcsmbs_load_conv+0xd5> 0.00 : 974c0: 48 85 d2 test %rdx,%rdx 0.00 : 974c3: c6 46 01 2f movb $0x2f,0x1(%rsi) 0.00 : 974c7: 48 8d 7e 02 lea 0x2(%rsi),%rdi 0.00 : 974cb: 0f 84 f4 fe ff ff je 973c5 <__wcsmbs_load_conv+0xd5> 0.00 : 974d1: 48 8d 05 fa 4b 0a 00 lea 0xa4bfa(%rip),%rax # 13c0d2 <__PRETTY_FUNCTION__.9753+0x1c> 0.00 : 974d8: 48 8d 35 61 35 0a 00 lea 0xa3561(%rip),%rsi # 13aa40 0.00 : 974df: 45 85 d2 test %r10d,%r10d 0.00 : 974e2: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 974e6: e8 a5 ca fe ff callq 83f90 <__mempcpy> 0.00 : 974eb: 48 89 c7 mov %rax,%rdi 0.00 : 974ee: e9 d2 fe ff ff jmpq 973c5 <__wcsmbs_load_conv+0xd5> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000a9620 : 0.00 : a9620: b8 6c 00 00 00 mov $0x6c,%eax 100.00 : a9625: 0f 05 syscall Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b2cc0 : 0.00 : b2cc0: 41 55 push %r13 0.00 : b2cc2: 49 89 d5 mov %rdx,%r13 0.00 : b2cc5: 41 54 push %r12 0.00 : b2cc7: 49 89 f4 mov %rsi,%r12 0.00 : b2cca: 55 push %rbp 0.00 : b2ccb: 53 push %rbx 0.00 : b2ccc: 48 89 fb mov %rdi,%rbx 0.00 : b2ccf: 48 83 ec 08 sub $0x8,%rsp 0.00 : b2cd3: 8b 56 04 mov 0x4(%rsi),%edx 0.00 : b2cd6: 85 d2 test %edx,%edx 0.00 : b2cd8: 0f 84 e2 00 00 00 je b2dc0 0.00 : b2cde: 41 8b 4d 04 mov 0x4(%r13),%ecx 0.00 : b2ce2: 85 c9 test %ecx,%ecx 0.00 : b2ce4: 0f 84 d6 00 00 00 je b2dc0 0.00 : b2cea: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : b2ced: 44 8d 04 11 lea (%rcx,%rdx,1),%r8d 0.00 : b2cf1: 8b 33 mov (%rbx),%esi 0.00 : b2cf3: 41 8d 04 38 lea (%r8,%rdi,1),%eax 0.00 : b2cf7: 39 f0 cmp %esi,%eax 0.00 : b2cf9: 0f 8f 82 01 00 00 jg b2e81 0.00 : b2cff: 8d 04 0a lea (%rdx,%rcx,1),%eax 0.00 : b2d02: 44 8d 52 ff lea -0x1(%rdx),%r10d 0.00 : b2d06: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : b2d0b: 44 8d 49 ff lea -0x1(%rcx),%r9d 0.00 : b2d0f: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : b2d13: 8d 4f ff lea -0x1(%rdi),%ecx 0.00 : b2d16: 8d 2c 38 lea (%rax,%rdi,1),%ebp 0.00 : b2d19: 49 63 c2 movslq %r10d,%rax 0.00 : b2d1c: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b2d20: 44 8b 04 86 mov (%rsi,%rax,4),%r8d 0.00 : b2d24: 49 63 c1 movslq %r9d,%rax 0.00 : b2d27: 44 8b 1c 82 mov (%rdx,%rax,4),%r11d 0.00 : b2d2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b2d30: 45 39 d8 cmp %r11d,%r8d 0.00 : b2d33: 74 1d je b2d52 0.00 : b2d35: 0f 8d 95 00 00 00 jge b2dd0 0.00 : b2d3b: 41 83 e9 01 sub $0x1,%r9d 0.00 : b2d3f: 0f 88 ae 00 00 00 js b2df3 0.00 : b2d45: 49 63 c1 movslq %r9d,%rax 0.00 : b2d48: 44 8b 1c 82 mov (%rdx,%rax,4),%r11d 0.00 : b2d4c: 45 39 d8 cmp %r11d,%r8d 0.00 : b2d4f: 90 nop 0.00 : b2d50: 75 e3 jne b2d35 0.00 : b2d52: 85 c9 test %ecx,%ecx 0.00 : b2d54: 78 2d js b2d83 0.00 : b2d56: 48 63 c1 movslq %ecx,%rax 0.00 : b2d59: 44 39 04 87 cmp %r8d,(%rdi,%rax,4) 0.00 : b2d5d: 0f 8e 88 00 00 00 jle b2deb 0.00 : b2d63: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : b2d66: 48 98 cltq 0.00 : b2d68: 48 8d 14 87 lea (%rdi,%rax,4),%rdx 0.00 : b2d6c: eb 0d jmp b2d7b 0.00 : b2d6e: 66 90 xchg %ax,%ax 0.00 : b2d70: 8b 02 mov (%rdx),%eax 0.00 : b2d72: 48 83 ea 04 sub $0x4,%rdx 0.00 : b2d76: 44 39 c0 cmp %r8d,%eax 0.00 : b2d79: 7e 6d jle b2de8 0.00 : b2d7b: 83 e9 01 sub $0x1,%ecx 0.00 : b2d7e: 83 f9 ff cmp $0xffffffff,%ecx 0.00 : b2d81: 75 ed jne b2d70 0.00 : b2d83: 83 ed 01 sub $0x1,%ebp 0.00 : b2d86: 48 63 c5 movslq %ebp,%rax 0.00 : b2d89: 44 89 1c 87 mov %r11d,(%rdi,%rax,4) 0.00 : b2d8d: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b2d91: 41 83 ea 01 sub $0x1,%r10d 0.00 : b2d95: 78 5c js b2df3 0.00 : b2d97: 41 83 e9 01 sub $0x1,%r9d 0.00 : b2d9b: 78 56 js b2df3 0.00 : b2d9d: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : b2da2: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : b2da6: 49 63 c2 movslq %r10d,%rax 0.00 : b2da9: 44 8b 04 86 mov (%rsi,%rax,4),%r8d 0.00 : b2dad: 49 63 c1 movslq %r9d,%rax 0.00 : b2db0: 44 8b 1c 82 mov (%rdx,%rax,4),%r11d 0.00 : b2db4: e9 77 ff ff ff jmpq b2d30 0.00 : b2db9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b2dc0: 31 c0 xor %eax,%eax 0.00 : b2dc2: 48 83 c4 08 add $0x8,%rsp 0.00 : b2dc6: 5b pop %rbx 0.00 : b2dc7: 5d pop %rbp 0.00 : b2dc8: 41 5c pop %r12 0.00 : b2dca: 41 5d pop %r13 0.00 : b2dcc: c3 retq 0.00 : b2dcd: 0f 1f 00 nopl (%rax) 0.00 : b2dd0: 41 83 ea 01 sub $0x1,%r10d 0.00 : b2dd4: 78 1d js b2df3 0.00 : b2dd6: 49 63 c2 movslq %r10d,%rax 0.00 : b2dd9: 44 8b 04 86 mov (%rsi,%rax,4),%r8d 0.00 : b2ddd: e9 4e ff ff ff jmpq b2d30 0.00 : b2de2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b2de8: 48 63 c1 movslq %ecx,%rax 50.00 : b2deb: 44 39 1c 87 cmp %r11d,(%rdi,%rax,4) 0.00 : b2def: 75 92 jne b2d83 0.00 : b2df1: eb 9e jmp b2d91 0.00 : b2df3: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : b2df6: 89 d0 mov %edx,%eax 0.00 : b2df8: 41 03 44 24 04 add 0x4(%r12),%eax 0.00 : b2dfd: 44 8d 42 ff lea -0x1(%rdx),%r8d 0.00 : b2e01: 8d 70 ff lea -0x1(%rax),%esi 0.00 : b2e04: 41 03 75 04 add 0x4(%r13),%esi 0.00 : b2e08: 44 8d 4e 01 lea 0x1(%rsi),%r9d 0.00 : b2e0c: 41 29 e9 sub %ebp,%r9d 0.00 : b2e0f: 41 8d 14 11 lea (%r9,%rdx,1),%edx 0.00 : b2e13: 45 85 c9 test %r9d,%r9d 0.00 : b2e16: 89 53 04 mov %edx,0x4(%rbx) 0.00 : b2e19: 0f 8e 9e 00 00 00 jle b2ebd 0.00 : b2e1f: 45 85 c0 test %r8d,%r8d 0.00 : b2e22: 4c 63 de movslq %esi,%r11 0.00 : b2e25: 4d 63 d0 movslq %r8d,%r10 0.00 : b2e28: 0f 88 8f 00 00 00 js b2ebd 0.00 : b2e2e: 66 90 xchg %ax,%ax 0.00 : b2e30: 42 8b 0c 9f mov (%rdi,%r11,4),%ecx 0.00 : b2e34: 42 8b 14 97 mov (%rdi,%r10,4),%edx 0.00 : b2e38: 39 d1 cmp %edx,%ecx 0.00 : b2e3a: 7e 29 jle b2e65 0.00 : b2e3c: 43 8d 04 01 lea (%r9,%r8,1),%eax 0.00 : b2e40: 41 83 e9 01 sub $0x1,%r9d 0.00 : b2e44: 48 98 cltq 0.00 : b2e46: 89 0c 87 mov %ecx,(%rdi,%rax,4) 50.00 : b2e49: 0f 84 a3 00 00 00 je b2ef2 0.00 : b2e4f: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b2e53: 83 ee 01 sub $0x1,%esi 0.00 : b2e56: 4c 63 de movslq %esi,%r11 0.00 : b2e59: 42 8b 0c 9f mov (%rdi,%r11,4),%ecx 0.00 : b2e5d: 42 8b 14 97 mov (%rdi,%r10,4),%edx 0.00 : b2e61: 39 d1 cmp %edx,%ecx 0.00 : b2e63: 7f d7 jg b2e3c 0.00 : b2e65: 43 8d 04 01 lea (%r9,%r8,1),%eax 0.00 : b2e69: 41 83 e8 01 sub $0x1,%r8d 0.00 : b2e6d: 41 83 f8 ff cmp $0xffffffff,%r8d 0.00 : b2e71: 48 98 cltq 0.00 : b2e73: 89 14 87 mov %edx,(%rdi,%rax,4) 0.00 : b2e76: 74 69 je b2ee1 0.00 : b2e78: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b2e7c: 4d 63 d0 movslq %r8d,%r10 0.00 : b2e7f: eb af jmp b2e30 0.00 : b2e81: 41 8d 2c 30 lea (%r8,%rsi,1),%ebp 0.00 : b2e85: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b2e89: 48 63 f5 movslq %ebp,%rsi 0.00 : b2e8c: 48 c1 e6 02 shl $0x2,%rsi 0.00 : b2e90: e8 ab b9 f6 ff callq 1e840 0.00 : b2e95: 48 89 c2 mov %rax,%rdx 0.00 : b2e98: b8 0c 00 00 00 mov $0xc,%eax 0.00 : b2e9d: 48 85 d2 test %rdx,%rdx 0.00 : b2ea0: 0f 84 1c ff ff ff je b2dc2 0.00 : b2ea6: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : b2eaa: 89 2b mov %ebp,(%rbx) 0.00 : b2eac: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : b2eaf: 41 8b 54 24 04 mov 0x4(%r12),%edx 0.00 : b2eb4: 41 8b 4d 04 mov 0x4(%r13),%ecx 0.00 : b2eb8: e9 42 fe ff ff jmpq b2cff 0.00 : b2ebd: 49 63 c1 movslq %r9d,%rax 0.00 : b2ec0: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : b2ec7: 00 0.00 : b2ec8: 48 63 f5 movslq %ebp,%rsi 0.00 : b2ecb: 48 8d 34 b7 lea (%rdi,%rsi,4),%rsi 0.00 : b2ecf: e8 7c 18 fd ff callq 84750 0.00 : b2ed4: 48 83 c4 08 add $0x8,%rsp 0.00 : b2ed8: 31 c0 xor %eax,%eax 0.00 : b2eda: 5b pop %rbx 0.00 : b2edb: 5d pop %rbp 0.00 : b2edc: 41 5c pop %r12 0.00 : b2ede: 41 5d pop %r13 0.00 : b2ee0: c3 retq 0.00 : b2ee1: 49 63 c1 movslq %r9d,%rax 0.00 : b2ee4: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b2ee8: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : b2eef: 00 0.00 : b2ef0: eb d6 jmp b2ec8 0.00 : b2ef2: 31 d2 xor %edx,%edx 0.00 : b2ef4: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b2ef8: eb ce jmp b2ec8 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000c1620 <_getopt_internal_r>: 0.00 : c1620: 41 57 push %r15 0.00 : c1622: 41 56 push %r14 0.00 : c1624: 41 55 push %r13 0.00 : c1626: 41 54 push %r12 0.00 : c1628: 55 push %rbp 0.00 : c1629: 53 push %rbx 0.00 : c162a: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : c1631: 85 ff test %edi,%edi 0.00 : c1633: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c163a: 00 0.00 : c163b: 89 7c 24 38 mov %edi,0x38(%rsp) 0.00 : c163f: 48 89 74 24 30 mov %rsi,0x30(%rsp) 0.00 : c1644: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : c1649: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : c164e: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : c1653: 44 89 4c 24 14 mov %r9d,0x14(%rsp) 0.00 : c1658: 8b 40 04 mov 0x4(%rax),%eax 0.00 : c165b: 89 44 24 3c mov %eax,0x3c(%rsp) 0.00 : c165f: 0f 8e 87 01 00 00 jle c17ec <_getopt_internal_r+0x1cc> 0.00 : c1665: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c166c: 00 0.00 : c166d: 8b 02 mov (%rdx),%eax 0.00 : c166f: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : c1676: 00 0.00 : c1677: 85 c0 test %eax,%eax 0.00 : c1679: 0f 85 89 01 00 00 jne c1808 <_getopt_internal_r+0x1e8> 0.00 : c167f: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c1686: 00 0.00 : c1687: b8 01 00 00 00 mov $0x1,%eax 0.00 : c168c: c7 01 01 00 00 00 movl $0x1,(%rcx) 0.00 : c1692: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1699: 00 0.00 : c169a: 48 8d 3d 01 ad 07 00 lea 0x7ad01(%rip),%rdi # 13c3a2 <__PRETTY_FUNCTION__.12151+0xc> 0.00 : c16a1: 89 43 34 mov %eax,0x34(%rbx) 0.00 : c16a4: 89 43 30 mov %eax,0x30(%rbx) 0.00 : c16a7: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : c16ae: 00 0.00 : c16af: e8 9c 37 f7 ff callq 34e50 0.00 : c16b4: 48 85 c0 test %rax,%rax 0.00 : c16b7: 0f 95 c0 setne %al 0.00 : c16ba: 0f b6 c0 movzbl %al,%eax 0.00 : c16bd: 0b 84 24 d8 00 00 00 or 0xd8(%rsp),%eax 0.00 : c16c4: 89 43 2c mov %eax,0x2c(%rbx) 0.00 : c16c7: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : c16cc: 0f b6 11 movzbl (%rcx),%edx 0.00 : c16cf: 80 fa 2d cmp $0x2d,%dl 0.00 : c16d2: 0f 84 90 04 00 00 je c1b68 <_getopt_internal_r+0x548> 0.00 : c16d8: 80 fa 2b cmp $0x2b,%dl 0.00 : c16db: 0f 84 3f 05 00 00 je c1c20 <_getopt_internal_r+0x600> 0.00 : c16e1: 85 c0 test %eax,%eax 0.00 : c16e3: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c16ea: 00 0.00 : c16eb: 0f 94 c0 sete %al 0.00 : c16ee: 0f b6 c0 movzbl %al,%eax 0.00 : c16f1: 89 42 28 mov %eax,0x28(%rdx) 0.00 : c16f4: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c16fb: 00 0.00 : c16fc: c7 41 18 01 00 00 00 movl $0x1,0x18(%rcx) 0.00 : c1703: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : c1708: 0f b6 03 movzbl (%rbx),%eax 0.00 : c170b: 3c 3a cmp $0x3a,%al 0.00 : c170d: b8 00 00 00 00 mov $0x0,%eax 0.00 : c1712: 0f 45 44 24 3c cmovne 0x3c(%rsp),%eax 0.00 : c1717: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c171e: 00 0.00 : c171f: 89 44 24 3c mov %eax,0x3c(%rsp) 0.00 : c1723: 4c 8b 73 20 mov 0x20(%rbx),%r14 0.00 : c1727: 4d 85 f6 test %r14,%r14 0.00 : c172a: 74 10 je c173c <_getopt_internal_r+0x11c> 0.00 : c172c: 41 0f b6 06 movzbl (%r14),%eax 0.00 : c1730: 84 c0 test %al,%al 0.00 : c1732: 88 44 24 67 mov %al,0x67(%rsp) 0.00 : c1736: 0f 85 46 01 00 00 jne c1882 <_getopt_internal_r+0x262> 0.00 : c173c: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c1743: 00 0.00 : c1744: 8b 32 mov (%rdx),%esi 0.00 : c1746: 39 72 34 cmp %esi,0x34(%rdx) 0.00 : c1749: 7e 03 jle c174e <_getopt_internal_r+0x12e> 0.00 : c174b: 89 72 34 mov %esi,0x34(%rdx) 0.00 : c174e: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c1755: 00 0.00 : c1756: 39 71 30 cmp %esi,0x30(%rcx) 0.00 : c1759: 7e 03 jle c175e <_getopt_internal_r+0x13e> 0.00 : c175b: 89 71 30 mov %esi,0x30(%rcx) 0.00 : c175e: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1765: 00 0.00 : c1766: 83 7b 28 01 cmpl $0x1,0x28(%rbx) 50.00 : c176a: 0f 84 38 04 00 00 je c1ba8 <_getopt_internal_r+0x588> 0.00 : c1770: 3b 74 24 38 cmp 0x38(%rsp),%esi 0.00 : c1774: 74 62 je c17d8 <_getopt_internal_r+0x1b8> 0.00 : c1776: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : c177b: 48 63 c6 movslq %esi,%rax 0.00 : c177e: 48 8b 14 c1 mov (%rcx,%rax,8),%rdx 0.00 : c1782: 80 3a 2d cmpb $0x2d,(%rdx) 0.00 : c1785: 0f 85 b5 00 00 00 jne c1840 <_getopt_internal_r+0x220> 0.00 : c178b: 80 7a 01 2d cmpb $0x2d,0x1(%rdx) 0.00 : c178f: 0f 85 ab 00 00 00 jne c1840 <_getopt_internal_r+0x220> 0.00 : c1795: 80 7a 02 00 cmpb $0x0,0x2(%rdx) 0.00 : c1799: 0f 85 a1 00 00 00 jne c1840 <_getopt_internal_r+0x220> 0.00 : c179f: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c17a6: 00 0.00 : c17a7: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : c17aa: 8b 53 34 mov 0x34(%rbx),%edx 0.00 : c17ad: 39 53 30 cmp %edx,0x30(%rbx) 0.00 : c17b0: 89 03 mov %eax,(%rbx) 0.00 : c17b2: 0f 84 88 08 00 00 je c2040 <_getopt_internal_r+0xa20> 0.00 : c17b8: 39 d0 cmp %edx,%eax 0.00 : c17ba: 74 0b je c17c7 <_getopt_internal_r+0x1a7> 0.00 : c17bc: 48 89 de mov %rbx,%rsi 0.00 : c17bf: 48 89 cf mov %rcx,%rdi 0.00 : c17c2: e8 79 fd ff ff callq c1540 0.00 : c17c7: 8b 5c 24 38 mov 0x38(%rsp),%ebx 0.00 : c17cb: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c17d2: 00 0.00 : c17d3: 89 59 34 mov %ebx,0x34(%rcx) 0.00 : c17d6: 89 19 mov %ebx,(%rcx) 0.00 : c17d8: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c17df: 00 0.00 : c17e0: 8b 42 30 mov 0x30(%rdx),%eax 0.00 : c17e3: 3b 42 34 cmp 0x34(%rdx),%eax 0.00 : c17e6: 0f 85 41 08 00 00 jne c202d <_getopt_internal_r+0xa0d> 0.00 : c17ec: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : c17f1: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : c17f8: 5b pop %rbx 0.00 : c17f9: 5d pop %rbp 0.00 : c17fa: 41 5c pop %r12 0.00 : c17fc: 41 5d pop %r13 0.00 : c17fe: 41 5e pop %r14 0.00 : c1800: 41 5f pop %r15 0.00 : c1802: c3 retq 0.00 : c1803: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c1808: 8b 52 18 mov 0x18(%rdx),%edx 0.00 : c180b: 85 d2 test %edx,%edx 0.00 : c180d: 0f 84 7f fe ff ff je c1692 <_getopt_internal_r+0x72> 0.00 : c1813: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : c1818: 0f b6 02 movzbl (%rdx),%eax 0.00 : c181b: 3c 2d cmp $0x2d,%al 0.00 : c181d: 74 08 je c1827 <_getopt_internal_r+0x207> 0.00 : c181f: 3c 2b cmp $0x2b,%al 0.00 : c1821: 0f 85 e4 fe ff ff jne c170b <_getopt_internal_r+0xeb> 0.00 : c1827: 48 83 44 24 28 01 addq $0x1,0x28(%rsp) 0.00 : c182d: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : c1832: 0f b6 01 movzbl (%rcx),%eax 0.00 : c1835: e9 d1 fe ff ff jmpq c170b <_getopt_internal_r+0xeb> 0.00 : c183a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : c1840: 80 3a 2d cmpb $0x2d,(%rdx) 0.00 : c1843: 0f 85 3f 01 00 00 jne c1988 <_getopt_internal_r+0x368> 0.00 : c1849: 0f b6 42 01 movzbl 0x1(%rdx),%eax 0.00 : c184d: 4c 8d 72 01 lea 0x1(%rdx),%r14 0.00 : c1851: 84 c0 test %al,%al 0.00 : c1853: 0f 84 2f 01 00 00 je c1988 <_getopt_internal_r+0x368> 0.00 : c1859: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : c185f: 74 0d je c186e <_getopt_internal_r+0x24e> 0.00 : c1861: 3c 2d cmp $0x2d,%al 50.00 : c1863: 0f 94 c0 sete %al 0.00 : c1866: 0f b6 c0 movzbl %al,%eax 0.00 : c1869: 4c 8d 74 02 01 lea 0x1(%rdx,%rax,1),%r14 0.00 : c186e: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1875: 00 0.00 : c1876: 4c 89 73 20 mov %r14,0x20(%rbx) 0.00 : c187a: 41 0f b6 06 movzbl (%r14),%eax 0.00 : c187e: 88 44 24 67 mov %al,0x67(%rsp) 0.00 : c1882: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : c1888: 74 3f je c18c9 <_getopt_internal_r+0x2a9> 0.00 : c188a: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c1891: 00 0.00 : c1892: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : c1897: 8b 12 mov (%rdx),%edx 0.00 : c1899: 48 63 c2 movslq %edx,%rax 0.00 : c189c: 89 54 24 74 mov %edx,0x74(%rsp) 0.00 : c18a0: 48 8b 04 c1 mov (%rcx,%rax,8),%rax 0.00 : c18a4: 48 89 44 24 78 mov %rax,0x78(%rsp) 0.00 : c18a9: 0f b6 58 01 movzbl 0x1(%rax),%ebx 0.00 : c18ad: 80 fb 2d cmp $0x2d,%bl 0.00 : c18b0: 88 9c 24 87 00 00 00 mov %bl,0x87(%rsp) 0.00 : c18b7: 0f 84 23 01 00 00 je c19e0 <_getopt_internal_r+0x3c0> 0.00 : c18bd: 8b 44 24 14 mov 0x14(%rsp),%eax 0.00 : c18c1: 85 c0 test %eax,%eax 0.00 : c18c3: 0f 85 e7 00 00 00 jne c19b0 <_getopt_internal_r+0x390> 0.00 : c18c9: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c18d0: 00 0.00 : c18d1: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : c18d5: 0f be 28 movsbl (%rax),%ebp 0.00 : c18d8: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c18df: 00 0.00 : c18e0: 49 8d 46 01 lea 0x1(%r14),%rax 0.00 : c18e4: 89 ee mov %ebp,%esi 0.00 : c18e6: 48 89 41 20 mov %rax,0x20(%rcx) 0.00 : c18ea: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : c18ef: e8 9c d7 fb ff callq 7f090 <__GI_strchr> 0.00 : c18f4: 41 80 7e 01 00 cmpb $0x0,0x1(%r14) 0.00 : c18f9: 48 89 c2 mov %rax,%rdx 0.00 : c18fc: 75 0b jne c1909 <_getopt_internal_r+0x2e9> 0.00 : c18fe: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1905: 00 0.00 : c1906: 83 03 01 addl $0x1,(%rbx) 0.00 : c1909: 48 85 d2 test %rdx,%rdx 0.00 : c190c: 0f 84 2e 02 00 00 je c1b40 <_getopt_internal_r+0x520> 0.00 : c1912: 80 7c 24 67 3a cmpb $0x3a,0x67(%rsp) 0.00 : c1917: 0f 84 23 02 00 00 je c1b40 <_getopt_internal_r+0x520> 0.00 : c191d: 80 7c 24 67 3b cmpb $0x3b,0x67(%rsp) 0.00 : c1922: 0f 84 18 02 00 00 je c1b40 <_getopt_internal_r+0x520> 0.00 : c1928: 80 3a 57 cmpb $0x57,(%rdx) 0.00 : c192b: 0f 84 fa 05 00 00 je c1f2b <_getopt_internal_r+0x90b> 0.00 : c1931: 0f b6 4a 01 movzbl 0x1(%rdx),%ecx 0.00 : c1935: 80 f9 3a cmp $0x3a,%cl 0.00 : c1938: 0f be 44 24 67 movsbl 0x67(%rsp),%eax 0.00 : c193d: 0f 85 ae fe ff ff jne c17f1 <_getopt_internal_r+0x1d1> 0.00 : c1943: 80 7a 02 3a cmpb $0x3a,0x2(%rdx) 0.00 : c1947: 0f 84 cd 08 00 00 je c221a <_getopt_internal_r+0xbfa> 0.00 : c194d: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c1954: 00 0.00 : c1955: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : c1959: 80 38 00 cmpb $0x0,(%rax) 0.00 : c195c: 0f 84 7d 08 00 00 je c21df <_getopt_internal_r+0xbbf> 0.00 : c1962: 83 02 01 addl $0x1,(%rdx) 0.00 : c1965: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : c1969: 0f be 44 24 67 movsbl 0x67(%rsp),%eax 0.00 : c196e: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1975: 00 0.00 : c1976: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : c197d: 00 0.00 : c197e: e9 6e fe ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c1983: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c1988: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c198f: 00 0.00 : c1990: 8b 41 28 mov 0x28(%rcx),%eax 0.00 : c1993: 85 c0 test %eax,%eax 0.00 : c1995: 0f 84 51 fe ff ff je c17ec <_getopt_internal_r+0x1cc> 0.00 : c199b: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : c199e: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : c19a2: 89 01 mov %eax,(%rcx) 0.00 : c19a4: b8 01 00 00 00 mov $0x1,%eax 0.00 : c19a9: e9 43 fe ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c19ae: 66 90 xchg %ax,%ax 0.00 : c19b0: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : c19b5: 80 79 02 00 cmpb $0x0,0x2(%rcx) 0.00 : c19b9: 75 25 jne c19e0 <_getopt_internal_r+0x3c0> 0.00 : c19bb: 0f be b4 24 87 00 00 movsbl 0x87(%rsp),%esi 0.00 : c19c2: 00 0.00 : c19c3: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : c19c8: e8 c3 d6 fb ff callq 7f090 <__GI_strchr> 0.00 : c19cd: 48 85 c0 test %rax,%rax 0.00 : c19d0: 0f 85 de 04 00 00 jne c1eb4 <_getopt_internal_r+0x894> 0.00 : c19d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : c19dd: 00 00 00 0.00 : c19e0: 80 7c 24 67 00 cmpb $0x0,0x67(%rsp) 0.00 : c19e5: 0f 84 a5 04 00 00 je c1e90 <_getopt_internal_r+0x870> 0.00 : c19eb: 80 7c 24 67 3d cmpb $0x3d,0x67(%rsp) 0.00 : c19f0: 4c 89 f5 mov %r14,%rbp 0.00 : c19f3: 0f 84 97 04 00 00 je c1e90 <_getopt_internal_r+0x870> 0.00 : c19f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : c1a00: 48 83 c5 01 add $0x1,%rbp 0.00 : c1a04: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : c1a08: 84 c0 test %al,%al 0.00 : c1a0a: 0f 85 10 01 00 00 jne c1b20 <_getopt_internal_r+0x500> 0.00 : c1a10: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : c1a15: 48 8b 18 mov (%rax),%rbx 0.00 : c1a18: 48 85 db test %rbx,%rbx 0.00 : c1a1b: 0f 84 47 06 00 00 je c2068 <_getopt_internal_r+0xa48> 0.00 : c1a21: 89 ea mov %ebp,%edx 0.00 : c1a23: 49 89 ef mov %rbp,%r15 0.00 : c1a26: 49 89 c4 mov %rax,%r12 0.00 : c1a29: 44 29 f2 sub %r14d,%edx 0.00 : c1a2c: 4d 29 f7 sub %r14,%r15 0.00 : c1a2f: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : c1a36: 00 00 0.00 : c1a38: c7 44 24 48 00 00 00 movl $0x0,0x48(%rsp) 0.00 : c1a3f: 00 0.00 : c1a40: c7 44 24 4c ff ff ff movl $0xffffffff,0x4c(%rsp) 0.00 : c1a47: ff 0.00 : c1a48: 45 31 ed xor %r13d,%r13d 0.00 : c1a4b: 89 54 24 04 mov %edx,0x4(%rsp) 0.00 : c1a4f: eb 18 jmp c1a69 <_getopt_internal_r+0x449> 0.00 : c1a51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : c1a58: 49 83 c4 20 add $0x20,%r12 0.00 : c1a5c: 49 8b 1c 24 mov (%r12),%rbx 0.00 : c1a60: 48 85 db test %rbx,%rbx 0.00 : c1a63: 74 64 je c1ac9 <_getopt_internal_r+0x4a9> 0.00 : c1a65: 41 83 c5 01 add $0x1,%r13d 0.00 : c1a69: 4c 89 fa mov %r15,%rdx 0.00 : c1a6c: 4c 89 f6 mov %r14,%rsi 0.00 : c1a6f: 48 89 df mov %rbx,%rdi 0.00 : c1a72: e8 79 f3 fb ff callq 80df0 <__GI_strncmp> 0.00 : c1a77: 85 c0 test %eax,%eax 0.00 : c1a79: 75 dd jne c1a58 <_getopt_internal_r+0x438> 0.00 : c1a7b: 48 89 df mov %rbx,%rdi 0.00 : c1a7e: e8 2d f1 fb ff callq 80bb0 <__GI_strlen> 0.00 : c1a83: 39 44 24 04 cmp %eax,0x4(%rsp) 0.00 : c1a87: 0f 84 bb 01 00 00 je c1c48 <_getopt_internal_r+0x628> 0.00 : c1a8d: 48 83 7c 24 40 00 cmpq $0x0,0x40(%rsp) 0.00 : c1a93: 0f 84 97 00 00 00 je c1b30 <_getopt_internal_r+0x510> 0.00 : c1a99: 8b 44 24 14 mov 0x14(%rsp),%eax 0.00 : c1a9d: 85 c0 test %eax,%eax 0.00 : c1a9f: 75 13 jne c1ab4 <_getopt_internal_r+0x494> 0.00 : c1aa1: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : c1aa6: 8b 41 08 mov 0x8(%rcx),%eax 0.00 : c1aa9: 41 3b 44 24 08 cmp 0x8(%r12),%eax 0.00 : c1aae: 0f 84 cc 00 00 00 je c1b80 <_getopt_internal_r+0x560> 0.00 : c1ab4: 49 83 c4 20 add $0x20,%r12 0.00 : c1ab8: c7 44 24 48 01 00 00 movl $0x1,0x48(%rsp) 0.00 : c1abf: 00 0.00 : c1ac0: 49 8b 1c 24 mov (%r12),%rbx 0.00 : c1ac4: 48 85 db test %rbx,%rbx 0.00 : c1ac7: 75 9c jne c1a65 <_getopt_internal_r+0x445> 0.00 : c1ac9: 8b 44 24 48 mov 0x48(%rsp),%eax 0.00 : c1acd: 85 c0 test %eax,%eax 0.00 : c1acf: 0f 84 7d 01 00 00 je c1c52 <_getopt_internal_r+0x632> 0.00 : c1ad5: 44 8b 7c 24 3c mov 0x3c(%rsp),%r15d 0.00 : c1ada: 45 85 ff test %r15d,%r15d 0.00 : c1add: 0f 85 1d 03 00 00 jne c1e00 <_getopt_internal_r+0x7e0> 0.00 : c1ae3: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c1aea: 00 0.00 : c1aeb: 48 8b 5a 20 mov 0x20(%rdx),%rbx 0.00 : c1aef: 48 89 df mov %rbx,%rdi 0.00 : c1af2: e8 b9 f0 fb ff callq 80bb0 <__GI_strlen> 0.00 : c1af7: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c1afe: 00 0.00 : c1aff: 48 01 c3 add %rax,%rbx 0.00 : c1b02: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : c1b07: 48 89 59 20 mov %rbx,0x20(%rcx) 0.00 : c1b0b: 83 01 01 addl $0x1,(%rcx) 0.00 : c1b0e: c7 41 08 00 00 00 00 movl $0x0,0x8(%rcx) 0.00 : c1b15: e9 d7 fc ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c1b1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : c1b20: 3c 3d cmp $0x3d,%al 0.00 : c1b22: 0f 85 d8 fe ff ff jne c1a00 <_getopt_internal_r+0x3e0> 0.00 : c1b28: e9 e3 fe ff ff jmpq c1a10 <_getopt_internal_r+0x3f0> 0.00 : c1b2d: 0f 1f 00 nopl (%rax) 0.00 : c1b30: 4c 89 64 24 40 mov %r12,0x40(%rsp) 0.00 : c1b35: 44 89 6c 24 4c mov %r13d,0x4c(%rsp) 0.00 : c1b3a: e9 19 ff ff ff jmpq c1a58 <_getopt_internal_r+0x438> 0.00 : c1b3f: 90 nop 0.00 : c1b40: 44 8b 5c 24 3c mov 0x3c(%rsp),%r11d 0.00 : c1b45: 45 85 db test %r11d,%r11d 0.00 : c1b48: 0f 85 2a 02 00 00 jne c1d78 <_getopt_internal_r+0x758> 0.00 : c1b4e: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c1b55: 00 0.00 : c1b56: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : c1b5b: 89 6a 08 mov %ebp,0x8(%rdx) 0.00 : c1b5e: e9 8e fc ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c1b63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c1b68: 48 83 c1 01 add $0x1,%rcx 0.00 : c1b6c: c7 43 28 02 00 00 00 movl $0x2,0x28(%rbx) 0.00 : c1b73: 48 89 4c 24 28 mov %rcx,0x28(%rsp) 0.00 : c1b78: e9 77 fb ff ff jmpq c16f4 <_getopt_internal_r+0xd4> 0.00 : c1b7d: 0f 1f 00 nopl (%rax) 0.00 : c1b80: 49 8b 5c 24 10 mov 0x10(%r12),%rbx 0.00 : c1b85: 48 39 59 10 cmp %rbx,0x10(%rcx) 0.00 : c1b89: 0f 85 25 ff ff ff jne c1ab4 <_getopt_internal_r+0x494> 0.00 : c1b8f: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : c1b92: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : c1b97: 0f 85 17 ff ff ff jne c1ab4 <_getopt_internal_r+0x494> 0.00 : c1b9d: 0f 1f 00 nopl (%rax) 0.00 : c1ba0: e9 b3 fe ff ff jmpq c1a58 <_getopt_internal_r+0x438> 0.00 : c1ba5: 0f 1f 00 nopl (%rax) 0.00 : c1ba8: 8b 53 30 mov 0x30(%rbx),%edx 0.00 : c1bab: 8b 43 34 mov 0x34(%rbx),%eax 0.00 : c1bae: 39 c2 cmp %eax,%edx 0.00 : c1bb0: 0f 84 9a 04 00 00 je c2050 <_getopt_internal_r+0xa30> 0.00 : c1bb6: 3b 03 cmp (%rbx),%eax 0.00 : c1bb8: 0f 85 e2 02 00 00 jne c1ea0 <_getopt_internal_r+0x880> 0.00 : c1bbe: 39 74 24 38 cmp %esi,0x38(%rsp) 0.00 : c1bc2: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx 0.00 : c1bc7: 48 63 c6 movslq %esi,%rax 0.00 : c1bca: 89 f2 mov %esi,%edx 0.00 : c1bcc: 48 8d 0c c3 lea (%rbx,%rax,8),%rcx 0.00 : c1bd0: 7f 1d jg c1bef <_getopt_internal_r+0x5cf> 0.00 : c1bd2: eb 33 jmp c1c07 <_getopt_internal_r+0x5e7> 0.00 : c1bd4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : c1bd8: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c1bdf: 00 0.00 : c1be0: 83 c2 01 add $0x1,%edx 0.00 : c1be3: 48 83 c1 08 add $0x8,%rcx 0.00 : c1be7: 89 10 mov %edx,(%rax) 0.00 : c1be9: 39 54 24 38 cmp %edx,0x38(%rsp) 0.00 : c1bed: 7e 51 jle c1c40 <_getopt_internal_r+0x620> 0.00 : c1bef: 48 8b 01 mov (%rcx),%rax 0.00 : c1bf2: 80 38 2d cmpb $0x2d,(%rax) 0.00 : c1bf5: 75 e1 jne c1bd8 <_getopt_internal_r+0x5b8> 0.00 : c1bf7: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : c1bfb: 74 db je c1bd8 <_getopt_internal_r+0x5b8> 0.00 : c1bfd: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c1c04: 00 0.00 : c1c05: 8b 31 mov (%rcx),%esi 0.00 : c1c07: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1c0e: 00 0.00 : c1c0f: 89 53 34 mov %edx,0x34(%rbx) 0.00 : c1c12: e9 59 fb ff ff jmpq c1770 <_getopt_internal_r+0x150> 0.00 : c1c17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : c1c1e: 00 00 0.00 : c1c20: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1c27: 00 0.00 : c1c28: c7 43 28 00 00 00 00 movl $0x0,0x28(%rbx) 0.00 : c1c2f: 48 83 44 24 28 01 addq $0x1,0x28(%rsp) 0.00 : c1c35: e9 ba fa ff ff jmpq c16f4 <_getopt_internal_r+0xd4> 0.00 : c1c3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : c1c40: 89 d6 mov %edx,%esi 0.00 : c1c42: eb c3 jmp c1c07 <_getopt_internal_r+0x5e7> 0.00 : c1c44: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : c1c48: 4c 89 64 24 40 mov %r12,0x40(%rsp) 0.00 : c1c4d: 44 89 6c 24 4c mov %r13d,0x4c(%rsp) 0.00 : c1c52: 48 83 7c 24 40 00 cmpq $0x0,0x40(%rsp) 0.00 : c1c58: 0f 84 0a 04 00 00 je c2068 <_getopt_internal_r+0xa48> 0.00 : c1c5e: 8b 44 24 74 mov 0x74(%rsp),%eax 0.00 : c1c62: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1c69: 00 0.00 : c1c6a: 83 c0 01 add $0x1,%eax 0.00 : c1c6d: 89 03 mov %eax,(%rbx) 0.00 : c1c6f: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : c1c73: 0f 84 4f 02 00 00 je c1ec8 <_getopt_internal_r+0x8a8> 0.00 : c1c79: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : c1c7e: 44 8b 72 08 mov 0x8(%rdx),%r14d 0.00 : c1c82: 45 85 f6 test %r14d,%r14d 0.00 : c1c85: 0f 85 b3 04 00 00 jne c213e <_getopt_internal_r+0xb1e> 0.00 : c1c8b: 44 8b 6c 24 3c mov 0x3c(%rsp),%r13d 0.00 : c1c90: 45 85 ed test %r13d,%r13d 0.00 : c1c93: 0f 84 a4 00 00 00 je c1d3d <_getopt_internal_r+0x71d> 0.00 : c1c99: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : c1c9e: 48 98 cltq 0.00 : c1ca0: 48 8b 44 c1 f8 mov -0x8(%rcx,%rax,8),%rax 0.00 : c1ca5: 80 78 01 2d cmpb $0x2d,0x1(%rax) 0.00 : c1ca9: 0f 84 ce 05 00 00 je c227d <_getopt_internal_r+0xc5d> 0.00 : c1caf: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : c1cb4: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : c1cb9: 48 8d 35 48 f8 07 00 lea 0x7f848(%rip),%rsi # 141508 <__PRETTY_FUNCTION__.11129+0x3b2f> 0.00 : c1cc0: 44 0f be 20 movsbl (%rax),%r12d 0.00 : c1cc4: 48 8d 3d 10 8e 07 00 lea 0x78e10(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c1ccb: 48 8b 1a mov (%rdx),%rbx 0.00 : c1cce: 4c 8b 29 mov (%rcx),%r13 0.00 : c1cd1: ba 05 00 00 00 mov $0x5,%edx 0.00 : c1cd6: e8 45 aa f6 ff callq 2c720 <__dcgettext> 0.00 : c1cdb: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c1ce2: 00 0.00 : c1ce3: 48 89 c6 mov %rax,%rsi 0.00 : c1ce6: 44 89 e1 mov %r12d,%ecx 0.00 : c1ce9: 49 89 d8 mov %rbx,%r8 0.00 : c1cec: 4c 89 ea mov %r13,%rdx 0.00 : c1cef: 31 c0 xor %eax,%eax 0.00 : c1cf1: e8 ca d3 f8 ff callq 4f0c0 <__asprintf> 0.00 : c1cf6: 85 c0 test %eax,%eax 0.00 : c1cf8: 78 43 js c1d3d <_getopt_internal_r+0x71d> 0.00 : c1cfa: 48 8b 1d 5f 00 2b 00 mov 0x2b005f(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c1d01: 48 8d 35 2c af 07 00 lea 0x7af2c(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c1d08: 31 ff xor %edi,%edi 0.00 : c1d0a: 48 8b 13 mov (%rbx),%rdx 0.00 : c1d0d: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c1d11: 44 89 e0 mov %r12d,%eax 0.00 : c1d14: 83 c8 02 or $0x2,%eax 0.00 : c1d17: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c1d1a: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c1d21: 00 0.00 : c1d22: 31 c0 xor %eax,%eax 0.00 : c1d24: e8 67 42 fa ff callq 65f90 <__fxprintf> 0.00 : c1d29: 48 8b 03 mov (%rbx),%rax 0.00 : c1d2c: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c1d30: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c1d37: 00 0.00 : c1d38: e8 63 cb f5 ff callq 1e8a0 0.00 : c1d3d: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c1d44: 00 0.00 : c1d45: 48 8b 58 20 mov 0x20(%rax),%rbx 0.00 : c1d49: 48 89 df mov %rbx,%rdi 0.00 : c1d4c: e8 5f ee fb ff callq 80bb0 <__GI_strlen> 0.00 : c1d51: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c1d58: 00 0.00 : c1d59: 48 01 c3 add %rax,%rbx 0.00 : c1d5c: 48 89 5a 20 mov %rbx,0x20(%rdx) 0.00 : c1d60: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : c1d65: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : c1d68: 89 42 08 mov %eax,0x8(%rdx) 0.00 : c1d6b: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : c1d70: e9 7c fa ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c1d75: 0f 1f 00 nopl (%rax) 0.00 : c1d78: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : c1d7d: 48 8d 35 81 a8 07 00 lea 0x7a881(%rip),%rsi # 13c605 0.00 : c1d84: 48 8d 3d 50 8d 07 00 lea 0x78d50(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c1d8b: ba 05 00 00 00 mov $0x5,%edx 0.00 : c1d90: 48 8b 18 mov (%rax),%rbx 0.00 : c1d93: e8 88 a9 f6 ff callq 2c720 <__dcgettext> 0.00 : c1d98: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c1d9f: 00 0.00 : c1da0: 48 89 c6 mov %rax,%rsi 0.00 : c1da3: 89 e9 mov %ebp,%ecx 0.00 : c1da5: 31 c0 xor %eax,%eax 0.00 : c1da7: 48 89 da mov %rbx,%rdx 0.00 : c1daa: e8 11 d3 f8 ff callq 4f0c0 <__asprintf> 0.00 : c1daf: 85 c0 test %eax,%eax 0.00 : c1db1: 0f 88 97 fd ff ff js c1b4e <_getopt_internal_r+0x52e> 0.00 : c1db7: 4c 8b 25 a2 ff 2a 00 mov 0x2affa2(%rip),%r12 # 371d60 <_DYNAMIC+0x200> 0.00 : c1dbe: 48 8d 35 6f ae 07 00 lea 0x7ae6f(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c1dc5: 31 ff xor %edi,%edi 0.00 : c1dc7: 49 8b 14 24 mov (%r12),%rdx 0.00 : c1dcb: 8b 5a 74 mov 0x74(%rdx),%ebx 0.00 : c1dce: 89 d8 mov %ebx,%eax 0.00 : c1dd0: 83 c8 02 or $0x2,%eax 0.00 : c1dd3: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c1dd6: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c1ddd: 00 0.00 : c1dde: 31 c0 xor %eax,%eax 0.00 : c1de0: e8 ab 41 fa ff callq 65f90 <__fxprintf> 0.00 : c1de5: 49 8b 04 24 mov (%r12),%rax 0.00 : c1de9: 89 58 74 mov %ebx,0x74(%rax) 0.00 : c1dec: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c1df3: 00 0.00 : c1df4: e8 a7 ca f5 ff callq 1e8a0 0.00 : c1df9: e9 50 fd ff ff jmpq c1b4e <_getopt_internal_r+0x52e> 0.00 : c1dfe: 66 90 xchg %ax,%ax 0.00 : c1e00: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : c1e05: 48 8d 35 db a7 07 00 lea 0x7a7db(%rip),%rsi # 13c5e7 0.00 : c1e0c: 48 8d 3d c8 8c 07 00 lea 0x78cc8(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c1e13: ba 05 00 00 00 mov $0x5,%edx 0.00 : c1e18: 48 8b 18 mov (%rax),%rbx 0.00 : c1e1b: e8 00 a9 f6 ff callq 2c720 <__dcgettext> 0.00 : c1e20: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : c1e25: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c1e2c: 00 0.00 : c1e2d: 48 89 c6 mov %rax,%rsi 0.00 : c1e30: 48 89 da mov %rbx,%rdx 0.00 : c1e33: 31 c0 xor %eax,%eax 0.00 : c1e35: e8 86 d2 f8 ff callq 4f0c0 <__asprintf> 0.00 : c1e3a: 85 c0 test %eax,%eax 0.00 : c1e3c: 0f 88 a1 fc ff ff js c1ae3 <_getopt_internal_r+0x4c3> 0.00 : c1e42: 4c 8b 25 17 ff 2a 00 mov 0x2aff17(%rip),%r12 # 371d60 <_DYNAMIC+0x200> 0.00 : c1e49: 48 8d 35 e4 ad 07 00 lea 0x7ade4(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c1e50: 31 ff xor %edi,%edi 0.00 : c1e52: 49 8b 14 24 mov (%r12),%rdx 0.00 : c1e56: 8b 5a 74 mov 0x74(%rdx),%ebx 0.00 : c1e59: 89 d8 mov %ebx,%eax 0.00 : c1e5b: 83 c8 02 or $0x2,%eax 0.00 : c1e5e: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c1e61: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c1e68: 00 0.00 : c1e69: 31 c0 xor %eax,%eax 0.00 : c1e6b: e8 20 41 fa ff callq 65f90 <__fxprintf> 0.00 : c1e70: 49 8b 04 24 mov (%r12),%rax 0.00 : c1e74: 89 58 74 mov %ebx,0x74(%rax) 0.00 : c1e77: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c1e7e: 00 0.00 : c1e7f: e8 1c ca f5 ff callq 1e8a0 0.00 : c1e84: e9 5a fc ff ff jmpq c1ae3 <_getopt_internal_r+0x4c3> 0.00 : c1e89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : c1e90: 4c 89 f5 mov %r14,%rbp 0.00 : c1e93: e9 78 fb ff ff jmpq c1a10 <_getopt_internal_r+0x3f0> 0.00 : c1e98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c1e9f: 00 0.00 : c1ea0: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : c1ea5: 48 89 de mov %rbx,%rsi 0.00 : c1ea8: e8 93 f6 ff ff callq c1540 0.00 : c1ead: 8b 33 mov (%rbx),%esi 0.00 : c1eaf: e9 0a fd ff ff jmpq c1bbe <_getopt_internal_r+0x59e> 0.00 : c1eb4: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1ebb: 00 0.00 : c1ebc: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : c1ec0: 0f be 28 movsbl (%rax),%ebp 0.00 : c1ec3: e9 10 fa ff ff jmpq c18d8 <_getopt_internal_r+0x2b8> 0.00 : c1ec8: 48 8b 5c 24 40 mov 0x40(%rsp),%rbx 0.00 : c1ecd: 83 7b 08 01 cmpl $0x1,0x8(%rbx) 0.00 : c1ed1: 0f 84 74 02 00 00 je c214b <_getopt_internal_r+0xb2b> 0.00 : c1ed7: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c1ede: 00 0.00 : c1edf: 48 8b 58 20 mov 0x20(%rax),%rbx 0.00 : c1ee3: 48 89 df mov %rbx,%rdi 0.00 : c1ee6: e8 c5 ec fb ff callq 80bb0 <__GI_strlen> 0.00 : c1eeb: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c1ef2: 00 0.00 : c1ef3: 48 01 c3 add %rax,%rbx 0.00 : c1ef6: 48 89 5a 20 mov %rbx,0x20(%rdx) 0.00 : c1efa: 48 83 7c 24 18 00 cmpq $0x0,0x18(%rsp) 0.00 : c1f00: 74 0b je c1f0d <_getopt_internal_r+0x8ed> 0.00 : c1f02: 8b 5c 24 4c mov 0x4c(%rsp),%ebx 0.00 : c1f06: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx 0.00 : c1f0b: 89 19 mov %ebx,(%rcx) 0.00 : c1f0d: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : c1f12: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : c1f16: 48 85 d2 test %rdx,%rdx 0.00 : c1f19: 0f 84 57 02 00 00 je c2176 <_getopt_internal_r+0xb56> 0.00 : c1f1f: 8b 40 18 mov 0x18(%rax),%eax 0.00 : c1f22: 89 02 mov %eax,(%rdx) 0.00 : c1f24: 31 c0 xor %eax,%eax 0.00 : c1f26: e9 c6 f8 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c1f2b: 0f b6 4a 01 movzbl 0x1(%rdx),%ecx 0.00 : c1f2f: 80 f9 3b cmp $0x3b,%cl 0.00 : c1f32: 0f 85 fd f9 ff ff jne c1935 <_getopt_internal_r+0x315> 0.00 : c1f38: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c1f3f: 00 0.00 : c1f40: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : c1f44: 80 38 00 cmpb $0x0,(%rax) 0.00 : c1f47: 0f 84 c9 03 00 00 je c2316 <_getopt_internal_r+0xcf6> 0.00 : c1f4d: 83 01 01 addl $0x1,(%rcx) 0.00 : c1f50: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : c1f54: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c1f5b: 00 0.00 : c1f5c: 4c 8b 73 10 mov 0x10(%rbx),%r14 0.00 : c1f60: 4c 89 73 20 mov %r14,0x20(%rbx) 0.00 : c1f64: 45 0f b6 3e movzbl (%r14),%r15d 0.00 : c1f68: 45 84 ff test %r15b,%r15b 0.00 : c1f6b: 0f 85 14 04 00 00 jne c2385 <_getopt_internal_r+0xd65> 0.00 : c1f71: 4d 89 f5 mov %r14,%r13 0.00 : c1f74: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : c1f79: 48 8b 18 mov (%rax),%rbx 0.00 : c1f7c: 48 85 db test %rbx,%rbx 0.00 : c1f7f: 0f 84 03 07 00 00 je c2688 <_getopt_internal_r+0x1068> 0.00 : c1f85: 4c 89 ea mov %r13,%rdx 0.00 : c1f88: 44 89 e9 mov %r13d,%ecx 0.00 : c1f8b: 48 89 c5 mov %rax,%rbp 0.00 : c1f8e: 4c 29 f2 sub %r14,%rdx 0.00 : c1f91: 44 29 f1 sub %r14d,%ecx 0.00 : c1f94: 48 c7 44 24 50 00 00 movq $0x0,0x50(%rsp) 0.00 : c1f9b: 00 00 0.00 : c1f9d: 48 89 54 24 68 mov %rdx,0x68(%rsp) 0.00 : c1fa2: c7 44 24 5c 00 00 00 movl $0x0,0x5c(%rsp) 0.00 : c1fa9: 00 0.00 : c1faa: 45 31 e4 xor %r12d,%r12d 0.00 : c1fad: c7 44 24 60 00 00 00 movl $0x0,0x60(%rsp) 0.00 : c1fb4: 00 0.00 : c1fb5: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : c1fba: eb 19 jmp c1fd5 <_getopt_internal_r+0x9b5> 0.00 : c1fbc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : c1fc0: 48 83 c5 20 add $0x20,%rbp 0.00 : c1fc4: 48 8b 5d 00 mov 0x0(%rbp),%rbx 0.00 : c1fc8: 48 85 db test %rbx,%rbx 0.00 : c1fcb: 0f 84 ec 02 00 00 je c22bd <_getopt_internal_r+0xc9d> 0.00 : c1fd1: 41 83 c4 01 add $0x1,%r12d 0.00 : c1fd5: 48 8b 54 24 68 mov 0x68(%rsp),%rdx 0.00 : c1fda: 4c 89 f6 mov %r14,%rsi 0.00 : c1fdd: 48 89 df mov %rbx,%rdi 0.00 : c1fe0: e8 0b ee fb ff callq 80df0 <__GI_strncmp> 0.00 : c1fe5: 85 c0 test %eax,%eax 0.00 : c1fe7: 75 d7 jne c1fc0 <_getopt_internal_r+0x9a0> 0.00 : c1fe9: 48 89 df mov %rbx,%rdi 0.00 : c1fec: e8 bf eb fb ff callq 80bb0 <__GI_strlen> 0.00 : c1ff1: 48 39 44 24 08 cmp %rax,0x8(%rsp) 0.00 : c1ff6: 0f 84 f4 04 00 00 je c24f0 <_getopt_internal_r+0xed0> 0.00 : c1ffc: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : c2002: 0f 84 ff 02 00 00 je c2307 <_getopt_internal_r+0xce7> 0.00 : c2008: 44 8b 4c 24 14 mov 0x14(%rsp),%r9d 0.00 : c200d: 45 85 c9 test %r9d,%r9d 0.00 : c2010: 75 11 jne c2023 <_getopt_internal_r+0xa03> 0.00 : c2012: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : c2017: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : c201a: 3b 45 08 cmp 0x8(%rbp),%eax 0.00 : c201d: 0f 84 29 03 00 00 je c234c <_getopt_internal_r+0xd2c> 0.00 : c2023: c7 44 24 5c 01 00 00 movl $0x1,0x5c(%rsp) 0.00 : c202a: 00 0.00 : c202b: eb 93 jmp c1fc0 <_getopt_internal_r+0x9a0> 0.00 : c202d: 89 02 mov %eax,(%rdx) 0.00 : c202f: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : c2034: e9 b8 f7 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c2039: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : c2040: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c2047: 00 0.00 : c2048: 89 42 30 mov %eax,0x30(%rdx) 0.00 : c204b: e9 77 f7 ff ff jmpq c17c7 <_getopt_internal_r+0x1a7> 0.00 : c2050: 39 f2 cmp %esi,%edx 0.00 : c2052: 0f 84 66 fb ff ff je c1bbe <_getopt_internal_r+0x59e> 0.00 : c2058: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c205f: 00 0.00 : c2060: 89 70 30 mov %esi,0x30(%rax) 0.00 : c2063: e9 56 fb ff ff jmpq c1bbe <_getopt_internal_r+0x59e> 0.00 : c2068: 8b 6c 24 14 mov 0x14(%rsp),%ebp 0.00 : c206c: 85 ed test %ebp,%ebp 0.00 : c206e: 0f 85 dc 01 00 00 jne c2250 <_getopt_internal_r+0xc30> 0.00 : c2074: 8b 5c 24 3c mov 0x3c(%rsp),%ebx 0.00 : c2078: 85 db test %ebx,%ebx 0.00 : c207a: 0f 84 97 00 00 00 je c2117 <_getopt_internal_r+0xaf7> 0.00 : c2080: 80 bc 24 87 00 00 00 cmpb $0x2d,0x87(%rsp) 0.00 : c2087: 2d 0.00 : c2088: 0f 84 21 03 00 00 je c23af <_getopt_internal_r+0xd8f> 0.00 : c208e: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : c2093: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : c2098: 48 8d 35 e1 f4 07 00 lea 0x7f4e1(%rip),%rsi # 141580 <__PRETTY_FUNCTION__.11129+0x3ba7> 0.00 : c209f: 48 8d 3d 35 8a 07 00 lea 0x78a35(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c20a6: 0f be 1a movsbl (%rdx),%ebx 0.00 : c20a9: 4c 8b 21 mov (%rcx),%r12 0.00 : c20ac: ba 05 00 00 00 mov $0x5,%edx 0.00 : c20b1: e8 6a a6 f6 ff callq 2c720 <__dcgettext> 0.00 : c20b6: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c20bd: 00 0.00 : c20be: 48 89 c6 mov %rax,%rsi 0.00 : c20c1: 4d 89 f0 mov %r14,%r8 0.00 : c20c4: 4c 89 e2 mov %r12,%rdx 0.00 : c20c7: 31 c0 xor %eax,%eax 0.00 : c20c9: 89 d9 mov %ebx,%ecx 0.00 : c20cb: e8 f0 cf f8 ff callq 4f0c0 <__asprintf> 0.00 : c20d0: 85 c0 test %eax,%eax 0.00 : c20d2: 78 43 js c2117 <_getopt_internal_r+0xaf7> 0.00 : c20d4: 48 8b 1d 85 fc 2a 00 mov 0x2afc85(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c20db: 48 8d 35 52 ab 07 00 lea 0x7ab52(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c20e2: 31 ff xor %edi,%edi 0.00 : c20e4: 48 8b 13 mov (%rbx),%rdx 0.00 : c20e7: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c20eb: 44 89 e0 mov %r12d,%eax 0.00 : c20ee: 83 c8 02 or $0x2,%eax 0.00 : c20f1: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c20f4: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c20fb: 00 0.00 : c20fc: 31 c0 xor %eax,%eax 0.00 : c20fe: e8 8d 3e fa ff callq 65f90 <__fxprintf> 0.00 : c2103: 48 8b 03 mov (%rbx),%rax 0.00 : c2106: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c210a: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c2111: 00 0.00 : c2112: e8 89 c7 f5 ff callq 1e8a0 0.00 : c2117: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c211e: 00 0.00 : c211f: 48 8d 05 1a 89 07 00 lea 0x7891a(%rip),%rax # 13aa40 0.00 : c2126: 83 03 01 addl $0x1,(%rbx) 0.00 : c2129: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : c212d: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : c2132: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) 0.00 : c2139: e9 b3 f6 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c213e: 48 8d 45 01 lea 0x1(%rbp),%rax 0.00 : c2142: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : c2146: e9 8c fd ff ff jmpq c1ed7 <_getopt_internal_r+0x8b7> 0.00 : c214b: 39 44 24 38 cmp %eax,0x38(%rsp) 0.00 : c214f: 7e 32 jle c2183 <_getopt_internal_r+0xb63> 0.00 : c2151: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : c2156: 48 98 cltq 0.00 : c2158: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c215f: 00 0.00 : c2160: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : c2164: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : c2168: 8b 44 24 74 mov 0x74(%rsp),%eax 0.00 : c216c: 83 c0 02 add $0x2,%eax 0.00 : c216f: 89 01 mov %eax,(%rcx) 0.00 : c2171: e9 61 fd ff ff jmpq c1ed7 <_getopt_internal_r+0x8b7> 0.00 : c2176: 48 8b 5c 24 40 mov 0x40(%rsp),%rbx 0.00 : c217b: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : c217e: e9 6e f6 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c2183: 44 8b 64 24 3c mov 0x3c(%rsp),%r12d 0.00 : c2188: 45 85 e4 test %r12d,%r12d 0.00 : c218b: 0f 85 cf 02 00 00 jne c2460 <_getopt_internal_r+0xe40> 0.00 : c2191: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c2198: 00 0.00 : c2199: 48 8b 59 20 mov 0x20(%rcx),%rbx 0.00 : c219d: 48 89 df mov %rbx,%rdi 0.00 : c21a0: e8 0b ea fb ff callq 80bb0 <__GI_strlen> 0.00 : c21a5: 48 01 c3 add %rax,%rbx 0.00 : c21a8: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c21af: 00 0.00 : c21b0: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : c21b4: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : c21b9: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c21c0: 00 0.00 : c21c1: 8b 42 18 mov 0x18(%rdx),%eax 0.00 : c21c4: 89 41 08 mov %eax,0x8(%rcx) 0.00 : c21c7: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : c21cc: 80 3b 3a cmpb $0x3a,(%rbx) 0.00 : c21cf: 0f 84 81 02 00 00 je c2456 <_getopt_internal_r+0xe36> 0.00 : c21d5: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : c21da: e9 12 f6 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c21df: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c21e6: 00 0.00 : c21e7: 8b 11 mov (%rcx),%edx 0.00 : c21e9: 3b 54 24 38 cmp 0x38(%rsp),%edx 0.00 : c21ed: 0f 84 f9 01 00 00 je c23ec <_getopt_internal_r+0xdcc> 0.00 : c21f3: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx 0.00 : c21f8: 48 63 c2 movslq %edx,%rax 0.00 : c21fb: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c2202: 00 0.00 : c2203: 48 8b 04 c3 mov (%rbx,%rax,8),%rax 0.00 : c2207: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : c220b: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : c220e: 89 01 mov %eax,(%rcx) 0.00 : c2210: 0f be 44 24 67 movsbl 0x67(%rsp),%eax 0.00 : c2215: e9 54 f7 ff ff jmpq c196e <_getopt_internal_r+0x34e> 0.00 : c221a: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c2221: 00 0.00 : c2222: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : c2226: 80 38 00 cmpb $0x0,(%rax) 0.00 : c2229: 0f 84 41 01 00 00 je c2370 <_getopt_internal_r+0xd50> 0.00 : c222f: 83 02 01 addl $0x1,(%rdx) 0.00 : c2232: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : c2236: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c223d: 00 0.00 : c223e: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : c2245: 00 0.00 : c2246: 0f be 44 24 67 movsbl 0x67(%rsp),%eax 0.00 : c224b: e9 a1 f5 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c2250: 80 bc 24 87 00 00 00 cmpb $0x2d,0x87(%rsp) 0.00 : c2257: 2d 0.00 : c2258: 0f 84 16 fe ff ff je c2074 <_getopt_internal_r+0xa54> 0.00 : c225e: 0f be 6c 24 67 movsbl 0x67(%rsp),%ebp 0.00 : c2263: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : c2268: 89 ee mov %ebp,%esi 0.00 : c226a: e8 21 ce fb ff callq 7f090 <__GI_strchr> 0.00 : c226f: 48 85 c0 test %rax,%rax 0.00 : c2272: 0f 85 60 f6 ff ff jne c18d8 <_getopt_internal_r+0x2b8> 0.00 : c2278: e9 f7 fd ff ff jmpq c2074 <_getopt_internal_r+0xa54> 0.00 : c227d: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : c2282: 4c 8b 21 mov (%rcx),%r12 0.00 : c2285: 48 8d 35 4c f2 07 00 lea 0x7f24c(%rip),%rsi # 1414d8 <__PRETTY_FUNCTION__.11129+0x3aff> 0.00 : c228c: 48 8d 3d 48 88 07 00 lea 0x78848(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c2293: ba 05 00 00 00 mov $0x5,%edx 0.00 : c2298: 48 8b 18 mov (%rax),%rbx 0.00 : c229b: e8 80 a4 f6 ff callq 2c720 <__dcgettext> 0.00 : c22a0: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c22a7: 00 0.00 : c22a8: 48 89 c6 mov %rax,%rsi 0.00 : c22ab: 4c 89 e2 mov %r12,%rdx 0.00 : c22ae: 48 89 d9 mov %rbx,%rcx 0.00 : c22b1: 31 c0 xor %eax,%eax 0.00 : c22b3: e8 08 ce f8 ff callq 4f0c0 <__asprintf> 0.00 : c22b8: e9 39 fa ff ff jmpq c1cf6 <_getopt_internal_r+0x6d6> 0.00 : c22bd: 44 8b 44 24 5c mov 0x5c(%rsp),%r8d 0.00 : c22c2: 45 85 c0 test %r8d,%r8d 0.00 : c22c5: 0f 84 2f 02 00 00 je c24fa <_getopt_internal_r+0xeda> 0.00 : c22cb: 8b 7c 24 3c mov 0x3c(%rsp),%edi 0.00 : c22cf: 85 ff test %edi,%edi 0.00 : c22d1: 0f 85 81 02 00 00 jne c2558 <_getopt_internal_r+0xf38> 0.00 : c22d7: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c22de: 00 0.00 : c22df: 48 8b 59 20 mov 0x20(%rcx),%rbx 0.00 : c22e3: 48 89 df mov %rbx,%rdi 0.00 : c22e6: e8 c5 e8 fb ff callq 80bb0 <__GI_strlen> 0.00 : c22eb: 48 01 c3 add %rax,%rbx 0.00 : c22ee: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c22f5: 00 0.00 : c22f6: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : c22fa: 83 00 01 addl $0x1,(%rax) 0.00 : c22fd: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : c2302: e9 ea f4 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c2307: 48 89 6c 24 50 mov %rbp,0x50(%rsp) 0.00 : c230c: 44 89 64 24 60 mov %r12d,0x60(%rsp) 0.00 : c2311: e9 aa fc ff ff jmpq c1fc0 <_getopt_internal_r+0x9a0> 0.00 : c2316: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx 0.00 : c231d: 00 0.00 : c231e: 8b 13 mov (%rbx),%edx 0.00 : c2320: 3b 54 24 38 cmp 0x38(%rsp),%edx 0.00 : c2324: 0f 84 b6 02 00 00 je c25e0 <_getopt_internal_r+0xfc0> 0.00 : c232a: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx 0.00 : c232f: 48 63 c2 movslq %edx,%rax 0.00 : c2332: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c2339: 00 0.00 : c233a: 48 8b 04 c3 mov (%rbx,%rax,8),%rax 0.00 : c233e: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : c2342: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : c2345: 89 01 mov %eax,(%rcx) 0.00 : c2347: e9 08 fc ff ff jmpq c1f54 <_getopt_internal_r+0x934> 0.00 : c234c: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : c2350: 48 39 43 10 cmp %rax,0x10(%rbx) 0.00 : c2354: 0f 85 c9 fc ff ff jne c2023 <_getopt_internal_r+0xa03> 0.00 : c235a: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : c235d: 3b 45 18 cmp 0x18(%rbp),%eax 0.00 : c2360: 0f 85 bd fc ff ff jne c2023 <_getopt_internal_r+0xa03> 0.00 : c2366: e9 55 fc ff ff jmpq c1fc0 <_getopt_internal_r+0x9a0> 0.00 : c236b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c2370: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c2377: 00 0.00 : c2378: 48 c7 41 10 00 00 00 movq $0x0,0x10(%rcx) 0.00 : c237f: 00 0.00 : c2380: e9 b1 fe ff ff jmpq c2236 <_getopt_internal_r+0xc16> 0.00 : c2385: 41 80 ff 3d cmp $0x3d,%r15b 0.00 : c2389: 4d 89 f5 mov %r14,%r13 0.00 : c238c: 0f 84 df fb ff ff je c1f71 <_getopt_internal_r+0x951> 0.00 : c2392: 49 83 c5 01 add $0x1,%r13 0.00 : c2396: 45 0f b6 7d 00 movzbl 0x0(%r13),%r15d 0.00 : c239b: 45 84 ff test %r15b,%r15b 0.00 : c239e: 0f 84 d0 fb ff ff je c1f74 <_getopt_internal_r+0x954> 0.00 : c23a4: 41 80 ff 3d cmp $0x3d,%r15b 0.00 : c23a8: 75 e8 jne c2392 <_getopt_internal_r+0xd72> 0.00 : c23aa: e9 c5 fb ff ff jmpq c1f74 <_getopt_internal_r+0x954> 0.00 : c23af: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : c23b4: 48 8d 35 a5 f1 07 00 lea 0x7f1a5(%rip),%rsi # 141560 <__PRETTY_FUNCTION__.11129+0x3b87> 0.00 : c23bb: 48 8d 3d 19 87 07 00 lea 0x78719(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c23c2: ba 05 00 00 00 mov $0x5,%edx 0.00 : c23c7: 48 8b 18 mov (%rax),%rbx 0.00 : c23ca: e8 51 a3 f6 ff callq 2c720 <__dcgettext> 0.00 : c23cf: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c23d6: 00 0.00 : c23d7: 48 89 c6 mov %rax,%rsi 0.00 : c23da: 4c 89 f1 mov %r14,%rcx 0.00 : c23dd: 48 89 da mov %rbx,%rdx 0.00 : c23e0: 31 c0 xor %eax,%eax 0.00 : c23e2: e8 d9 cc f8 ff callq 4f0c0 <__asprintf> 0.00 : c23e7: e9 e4 fc ff ff jmpq c20d0 <_getopt_internal_r+0xab0> 0.00 : c23ec: 8b 44 24 3c mov 0x3c(%rsp),%eax 0.00 : c23f0: 85 c0 test %eax,%eax 0.00 : c23f2: 0f 85 aa 02 00 00 jne c26a2 <_getopt_internal_r+0x1082> 0.00 : c23f8: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c23ff: 00 0.00 : c2400: 31 c0 xor %eax,%eax 0.00 : c2402: 89 6a 08 mov %ebp,0x8(%rdx) 0.00 : c2405: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : c240a: 80 39 3a cmpb $0x3a,(%rcx) 0.00 : c240d: 0f 95 c0 setne %al 0.00 : c2410: 8d 44 80 3a lea 0x3a(%rax,%rax,4),%eax 0.00 : c2414: e9 55 f5 ff ff jmpq c196e <_getopt_internal_r+0x34e> 0.00 : c2419: 8b 54 24 3c mov 0x3c(%rsp),%edx 0.00 : c241d: 85 d2 test %edx,%edx 0.00 : c241f: 0f 85 5e 04 00 00 jne c2883 <_getopt_internal_r+0x1263> 0.00 : c2425: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c242c: 00 0.00 : c242d: 48 8b 59 20 mov 0x20(%rcx),%rbx 0.00 : c2431: 48 89 df mov %rbx,%rdi 0.00 : c2434: e8 77 e7 fb ff callq 80bb0 <__GI_strlen> 0.00 : c2439: 48 01 c3 add %rax,%rbx 0.00 : c243c: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c2443: 00 0.00 : c2444: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : c2448: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : c244d: 80 3a 3a cmpb $0x3a,(%rdx) 0.00 : c2450: 0f 85 7f fd ff ff jne c21d5 <_getopt_internal_r+0xbb5> 0.00 : c2456: b8 3a 00 00 00 mov $0x3a,%eax 0.00 : c245b: e9 91 f3 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c2460: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : c2465: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : c246a: 48 8d 35 c7 f0 07 00 lea 0x7f0c7(%rip),%rsi # 141538 <__PRETTY_FUNCTION__.11129+0x3b5f> 0.00 : c2471: 48 8d 3d 63 86 07 00 lea 0x78663(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c2478: 4c 8b 22 mov (%rdx),%r12 0.00 : c247b: 48 8b 18 mov (%rax),%rbx 0.00 : c247e: ba 05 00 00 00 mov $0x5,%edx 0.00 : c2483: e8 98 a2 f6 ff callq 2c720 <__dcgettext> 0.00 : c2488: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c248f: 00 0.00 : c2490: 48 89 c6 mov %rax,%rsi 0.00 : c2493: 31 c0 xor %eax,%eax 0.00 : c2495: 48 89 d9 mov %rbx,%rcx 0.00 : c2498: 4c 89 e2 mov %r12,%rdx 0.00 : c249b: e8 20 cc f8 ff callq 4f0c0 <__asprintf> 0.00 : c24a0: 85 c0 test %eax,%eax 0.00 : c24a2: 0f 88 e9 fc ff ff js c2191 <_getopt_internal_r+0xb71> 0.00 : c24a8: 48 8b 1d b1 f8 2a 00 mov 0x2af8b1(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c24af: 48 8d 35 7e a7 07 00 lea 0x7a77e(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c24b6: 31 ff xor %edi,%edi 0.00 : c24b8: 48 8b 13 mov (%rbx),%rdx 0.00 : c24bb: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c24bf: 44 89 e0 mov %r12d,%eax 0.00 : c24c2: 83 c8 02 or $0x2,%eax 0.00 : c24c5: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c24c8: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c24cf: 00 0.00 : c24d0: 31 c0 xor %eax,%eax 0.00 : c24d2: e8 b9 3a fa ff callq 65f90 <__fxprintf> 0.00 : c24d7: 48 8b 03 mov (%rbx),%rax 0.00 : c24da: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c24de: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c24e5: 00 0.00 : c24e6: e8 b5 c3 f5 ff callq 1e8a0 0.00 : c24eb: e9 a1 fc ff ff jmpq c2191 <_getopt_internal_r+0xb71> 0.00 : c24f0: 48 89 6c 24 50 mov %rbp,0x50(%rsp) 0.00 : c24f5: 44 89 64 24 60 mov %r12d,0x60(%rsp) 0.00 : c24fa: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : c2500: 0f 84 82 01 00 00 je c2688 <_getopt_internal_r+0x1068> 0.00 : c2506: 45 84 ff test %r15b,%r15b 0.00 : c2509: 0f 84 00 01 00 00 je c260f <_getopt_internal_r+0xfef> 0.00 : c250f: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : c2514: 8b 72 08 mov 0x8(%rdx),%esi 0.00 : c2517: 85 f6 test %esi,%esi 0.00 : c2519: 0f 85 91 02 00 00 jne c27b0 <_getopt_internal_r+0x1190> 0.00 : c251f: 8b 4c 24 3c mov 0x3c(%rsp),%ecx 0.00 : c2523: 85 c9 test %ecx,%ecx 0.00 : c2525: 0f 85 c8 02 00 00 jne c27f3 <_getopt_internal_r+0x11d3> 0.00 : c252b: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c2532: 00 0.00 : c2533: 48 8b 59 20 mov 0x20(%rcx),%rbx 0.00 : c2537: 48 89 df mov %rbx,%rdi 0.00 : c253a: e8 71 e6 fb ff callq 80bb0 <__GI_strlen> 0.00 : c253f: 48 01 c3 add %rax,%rbx 0.00 : c2542: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c2549: 00 0.00 : c254a: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : c254e: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : c2553: e9 99 f2 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c2558: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : c255d: 48 8d 35 6c f0 07 00 lea 0x7f06c(%rip),%rsi # 1415d0 <__PRETTY_FUNCTION__.11129+0x3bf7> 0.00 : c2564: 48 8d 3d 70 85 07 00 lea 0x78570(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c256b: 48 8b 1a mov (%rdx),%rbx 0.00 : c256e: ba 05 00 00 00 mov $0x5,%edx 0.00 : c2573: e8 a8 a1 f6 ff callq 2c720 <__dcgettext> 0.00 : c2578: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c257f: 00 0.00 : c2580: 48 89 c6 mov %rax,%rsi 0.00 : c2583: 4c 89 f1 mov %r14,%rcx 0.00 : c2586: 31 c0 xor %eax,%eax 0.00 : c2588: 48 89 da mov %rbx,%rdx 0.00 : c258b: e8 30 cb f8 ff callq 4f0c0 <__asprintf> 0.00 : c2590: 85 c0 test %eax,%eax 0.00 : c2592: 0f 88 3f fd ff ff js c22d7 <_getopt_internal_r+0xcb7> 0.00 : c2598: 48 8b 1d c1 f7 2a 00 mov 0x2af7c1(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c259f: 48 8d 35 8e a6 07 00 lea 0x7a68e(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c25a6: 31 ff xor %edi,%edi 0.00 : c25a8: 48 8b 13 mov (%rbx),%rdx 0.00 : c25ab: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c25af: 44 89 e0 mov %r12d,%eax 0.00 : c25b2: 83 c8 02 or $0x2,%eax 0.00 : c25b5: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c25b8: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c25bf: 00 0.00 : c25c0: 31 c0 xor %eax,%eax 0.00 : c25c2: e8 c9 39 fa ff callq 65f90 <__fxprintf> 0.00 : c25c7: 48 8b 03 mov (%rbx),%rax 0.00 : c25ca: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c25ce: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c25d5: 00 0.00 : c25d6: e8 c5 c2 f5 ff callq 1e8a0 0.00 : c25db: e9 f7 fc ff ff jmpq c22d7 <_getopt_internal_r+0xcb7> 0.00 : c25e0: 44 8b 54 24 3c mov 0x3c(%rsp),%r10d 0.00 : c25e5: 45 85 d2 test %r10d,%r10d 0.00 : c25e8: 0f 85 3b 01 00 00 jne c2729 <_getopt_internal_r+0x1109> 0.00 : c25ee: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c25f5: 00 0.00 : c25f6: 31 c0 xor %eax,%eax 0.00 : c25f8: 89 6a 08 mov %ebp,0x8(%rdx) 0.00 : c25fb: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : c2600: 80 39 3a cmpb $0x3a,(%rcx) 0.00 : c2603: 0f 95 c0 setne %al 0.00 : c2606: 8d 44 80 3a lea 0x3a(%rax,%rax,4),%eax 0.00 : c260a: e9 e2 f1 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c260f: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : c2614: 83 7a 08 01 cmpl $0x1,0x8(%rdx) 0.00 : c2618: 0f 84 a7 01 00 00 je c27c5 <_getopt_internal_r+0x11a5> 0.00 : c261e: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c2625: 00 0.00 : c2626: 48 c7 41 10 00 00 00 movq $0x0,0x10(%rcx) 0.00 : c262d: 00 0.00 : c262e: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c2635: 00 0.00 : c2636: 48 8b 58 20 mov 0x20(%rax),%rbx 0.00 : c263a: 48 89 df mov %rbx,%rdi 0.00 : c263d: e8 6e e5 fb ff callq 80bb0 <__GI_strlen> 0.00 : c2642: 48 8b 94 24 d0 00 00 mov 0xd0(%rsp),%rdx 0.00 : c2649: 00 0.00 : c264a: 48 01 c3 add %rax,%rbx 0.00 : c264d: 48 89 5a 20 mov %rbx,0x20(%rdx) 0.00 : c2651: 48 83 7c 24 18 00 cmpq $0x0,0x18(%rsp) 0.00 : c2657: 74 0b je c2664 <_getopt_internal_r+0x1044> 0.00 : c2659: 8b 5c 24 60 mov 0x60(%rsp),%ebx 0.00 : c265d: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx 0.00 : c2662: 89 19 mov %ebx,(%rcx) 0.00 : c2664: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : c2669: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : c266d: 48 85 d2 test %rdx,%rdx 0.00 : c2670: 0f 85 a9 f8 ff ff jne c1f1f <_getopt_internal_r+0x8ff> 0.00 : c2676: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : c267b: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : c267e: e9 6e f1 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c2683: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c2688: 48 8b 84 24 d0 00 00 mov 0xd0(%rsp),%rax 0.00 : c268f: 00 0.00 : c2690: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : c2697: 00 0.00 : c2698: b8 57 00 00 00 mov $0x57,%eax 0.00 : c269d: e9 4f f1 ff ff jmpq c17f1 <_getopt_internal_r+0x1d1> 0.00 : c26a2: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : c26a7: 48 8d 35 f2 ee 07 00 lea 0x7eef2(%rip),%rsi # 1415a0 <__PRETTY_FUNCTION__.11129+0x3bc7> 0.00 : c26ae: 48 8d 3d 26 84 07 00 lea 0x78426(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c26b5: ba 05 00 00 00 mov $0x5,%edx 0.00 : c26ba: 48 8b 18 mov (%rax),%rbx 0.00 : c26bd: e8 5e a0 f6 ff callq 2c720 <__dcgettext> 0.00 : c26c2: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c26c9: 00 0.00 : c26ca: 48 89 c6 mov %rax,%rsi 0.00 : c26cd: 89 e9 mov %ebp,%ecx 0.00 : c26cf: 31 c0 xor %eax,%eax 0.00 : c26d1: 48 89 da mov %rbx,%rdx 0.00 : c26d4: e8 e7 c9 f8 ff callq 4f0c0 <__asprintf> 0.00 : c26d9: 85 c0 test %eax,%eax 0.00 : c26db: 0f 88 17 fd ff ff js c23f8 <_getopt_internal_r+0xdd8> 0.00 : c26e1: 48 8b 1d 78 f6 2a 00 mov 0x2af678(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c26e8: 48 8d 35 45 a5 07 00 lea 0x7a545(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c26ef: 31 ff xor %edi,%edi 0.00 : c26f1: 48 8b 13 mov (%rbx),%rdx 0.00 : c26f4: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c26f8: 44 89 e0 mov %r12d,%eax 0.00 : c26fb: 83 c8 02 or $0x2,%eax 0.00 : c26fe: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c2701: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c2708: 00 0.00 : c2709: 31 c0 xor %eax,%eax 0.00 : c270b: e8 80 38 fa ff callq 65f90 <__fxprintf> 0.00 : c2710: 48 8b 03 mov (%rbx),%rax 0.00 : c2713: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c2717: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c271e: 00 0.00 : c271f: e8 7c c1 f5 ff callq 1e8a0 0.00 : c2724: e9 cf fc ff ff jmpq c23f8 <_getopt_internal_r+0xdd8> 0.00 : c2729: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : c272e: 48 8d 35 6b ee 07 00 lea 0x7ee6b(%rip),%rsi # 1415a0 <__PRETTY_FUNCTION__.11129+0x3bc7> 0.00 : c2735: 48 8d 3d 9f 83 07 00 lea 0x7839f(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c273c: ba 05 00 00 00 mov $0x5,%edx 0.00 : c2741: 48 8b 18 mov (%rax),%rbx 0.00 : c2744: e8 d7 9f f6 ff callq 2c720 <__dcgettext> 0.00 : c2749: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c2750: 00 0.00 : c2751: 48 89 c6 mov %rax,%rsi 0.00 : c2754: 89 e9 mov %ebp,%ecx 0.00 : c2756: 31 c0 xor %eax,%eax 0.00 : c2758: 48 89 da mov %rbx,%rdx 0.00 : c275b: e8 60 c9 f8 ff callq 4f0c0 <__asprintf> 0.00 : c2760: 85 c0 test %eax,%eax 0.00 : c2762: 0f 88 86 fe ff ff js c25ee <_getopt_internal_r+0xfce> 0.00 : c2768: 48 8b 1d f1 f5 2a 00 mov 0x2af5f1(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c276f: 48 8d 35 be a4 07 00 lea 0x7a4be(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c2776: 31 ff xor %edi,%edi 0.00 : c2778: 48 8b 13 mov (%rbx),%rdx 0.00 : c277b: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c277f: 44 89 e0 mov %r12d,%eax 0.00 : c2782: 83 c8 02 or $0x2,%eax 0.00 : c2785: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c2788: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c278f: 00 0.00 : c2790: 31 c0 xor %eax,%eax 0.00 : c2792: e8 f9 37 fa ff callq 65f90 <__fxprintf> 0.00 : c2797: 48 8b 03 mov (%rbx),%rax 0.00 : c279a: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c279e: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c27a5: 00 0.00 : c27a6: e8 f5 c0 f5 ff callq 1e8a0 0.00 : c27ab: e9 3e fe ff ff jmpq c25ee <_getopt_internal_r+0xfce> 0.00 : c27b0: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c27b7: 00 0.00 : c27b8: 49 8d 45 01 lea 0x1(%r13),%rax 0.00 : c27bc: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : c27c0: e9 69 fe ff ff jmpq c262e <_getopt_internal_r+0x100e> 0.00 : c27c5: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx 0.00 : c27cc: 00 0.00 : c27cd: 8b 11 mov (%rcx),%edx 0.00 : c27cf: 39 54 24 38 cmp %edx,0x38(%rsp) 0.00 : c27d3: 0f 8e 40 fc ff ff jle c2419 <_getopt_internal_r+0xdf9> 0.00 : c27d9: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx 0.00 : c27de: 48 63 c2 movslq %edx,%rax 0.00 : c27e1: 48 8b 04 c3 mov (%rbx,%rax,8),%rax 0.00 : c27e5: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : c27e9: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : c27ec: 89 01 mov %eax,(%rcx) 0.00 : c27ee: e9 3b fe ff ff jmpq c262e <_getopt_internal_r+0x100e> 0.00 : c27f3: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : c27f8: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : c27fd: 48 8d 35 f4 ed 07 00 lea 0x7edf4(%rip),%rsi # 1415f8 <__PRETTY_FUNCTION__.11129+0x3c1f> 0.00 : c2804: 48 8d 3d d0 82 07 00 lea 0x782d0(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c280b: 4c 8b 22 mov (%rdx),%r12 0.00 : c280e: 48 8b 18 mov (%rax),%rbx 0.00 : c2811: ba 05 00 00 00 mov $0x5,%edx 0.00 : c2816: e8 05 9f f6 ff callq 2c720 <__dcgettext> 0.00 : c281b: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c2822: 00 0.00 : c2823: 48 89 c6 mov %rax,%rsi 0.00 : c2826: 31 c0 xor %eax,%eax 0.00 : c2828: 48 89 d9 mov %rbx,%rcx 0.00 : c282b: 4c 89 e2 mov %r12,%rdx 0.00 : c282e: e8 8d c8 f8 ff callq 4f0c0 <__asprintf> 0.00 : c2833: 85 c0 test %eax,%eax 0.00 : c2835: 0f 88 f0 fc ff ff js c252b <_getopt_internal_r+0xf0b> 0.00 : c283b: 48 8b 1d 1e f5 2a 00 mov 0x2af51e(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c2842: 48 8d 35 eb a3 07 00 lea 0x7a3eb(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c2849: 31 ff xor %edi,%edi 0.00 : c284b: 48 8b 13 mov (%rbx),%rdx 0.00 : c284e: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c2852: 44 89 e0 mov %r12d,%eax 0.00 : c2855: 83 c8 02 or $0x2,%eax 0.00 : c2858: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c285b: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c2862: 00 0.00 : c2863: 31 c0 xor %eax,%eax 0.00 : c2865: e8 26 37 fa ff callq 65f90 <__fxprintf> 0.00 : c286a: 48 8b 03 mov (%rbx),%rax 0.00 : c286d: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c2871: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c2878: 00 0.00 : c2879: e8 22 c0 f5 ff callq 1e8a0 0.00 : c287e: e9 a8 fc ff ff jmpq c252b <_getopt_internal_r+0xf0b> 0.00 : c2883: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : c2888: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : c288d: 48 8d 35 94 ed 07 00 lea 0x7ed94(%rip),%rsi # 141628 <__PRETTY_FUNCTION__.11129+0x3c4f> 0.00 : c2894: 48 8d 3d 40 82 07 00 lea 0x78240(%rip),%rdi # 13aadb <_libc_intl_domainname> 0.00 : c289b: 4c 8b 22 mov (%rdx),%r12 0.00 : c289e: 48 8b 18 mov (%rax),%rbx 0.00 : c28a1: ba 05 00 00 00 mov $0x5,%edx 0.00 : c28a6: e8 75 9e f6 ff callq 2c720 <__dcgettext> 0.00 : c28ab: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : c28b2: 00 0.00 : c28b3: 48 89 c6 mov %rax,%rsi 0.00 : c28b6: 31 c0 xor %eax,%eax 0.00 : c28b8: 48 89 d9 mov %rbx,%rcx 0.00 : c28bb: 4c 89 e2 mov %r12,%rdx 0.00 : c28be: e8 fd c7 f8 ff callq 4f0c0 <__asprintf> 0.00 : c28c3: 85 c0 test %eax,%eax 0.00 : c28c5: 0f 88 5a fb ff ff js c2425 <_getopt_internal_r+0xe05> 0.00 : c28cb: 48 8b 1d 8e f4 2a 00 mov 0x2af48e(%rip),%rbx # 371d60 <_DYNAMIC+0x200> 0.00 : c28d2: 48 8d 35 5b a3 07 00 lea 0x7a35b(%rip),%rsi # 13cc34 <__PRETTY_FUNCTION__.4804+0x12d> 0.00 : c28d9: 31 ff xor %edi,%edi 0.00 : c28db: 48 8b 13 mov (%rbx),%rdx 0.00 : c28de: 44 8b 62 74 mov 0x74(%rdx),%r12d 0.00 : c28e2: 44 89 e0 mov %r12d,%eax 0.00 : c28e5: 83 c8 02 or $0x2,%eax 0.00 : c28e8: 89 42 74 mov %eax,0x74(%rdx) 0.00 : c28eb: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : c28f2: 00 0.00 : c28f3: 31 c0 xor %eax,%eax 0.00 : c28f5: e8 96 36 fa ff callq 65f90 <__fxprintf> 0.00 : c28fa: 48 8b 03 mov (%rbx),%rax 0.00 : c28fd: 44 89 60 74 mov %r12d,0x74(%rax) 0.00 : c2901: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : c2908: 00 0.00 : c2909: e8 92 bf f5 ff callq 1e8a0 0.00 : c290e: e9 12 fb ff ff jmpq c2425 <_getopt_internal_r+0xe05> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d3310 <__sbrk>: 50.00 : d3310: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 0.00 : d3315: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : d331a: 48 83 ec 18 sub $0x18,%rsp 0.00 : d331e: 48 8b 1d 63 eb 29 00 mov 0x29eb63(%rip),%rbx # 371e88 <_DYNAMIC+0x328> 0.00 : d3325: 48 89 fd mov %rdi,%rbp 0.00 : d3328: 48 83 3b 00 cmpq $0x0,(%rbx) 50.00 : d332c: 74 0a je d3338 <__sbrk+0x28> 0.00 : d332e: 8b 05 2c ed 29 00 mov 0x29ed2c(%rip),%eax # 372060 <__libc_multiple_libcs> 0.00 : d3334: 85 c0 test %eax,%eax 0.00 : d3336: 74 0b je d3343 <__sbrk+0x33> 0.00 : d3338: 31 ff xor %edi,%edi 0.00 : d333a: e8 61 ff ff ff callq d32a0 0.00 : d333f: 85 c0 test %eax,%eax 0.00 : d3341: 78 25 js d3368 <__sbrk+0x58> 0.00 : d3343: 48 83 fd 00 cmp $0x0,%rbp 0.00 : d3347: 74 2f je d3378 <__sbrk+0x68> 0.00 : d3349: 48 8b 1b mov (%rbx),%rbx 0.00 : d334c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : d3350: 7e 3e jle d3390 <__sbrk+0x80> 0.00 : d3352: 48 89 df mov %rbx,%rdi 0.00 : d3355: 48 01 ef add %rbp,%rdi 0.00 : d3358: 72 0e jb d3368 <__sbrk+0x58> 0.00 : d335a: e8 41 ff ff ff callq d32a0 0.00 : d335f: 85 c0 test %eax,%eax 0.00 : d3361: 79 18 jns d337b <__sbrk+0x6b> 0.00 : d3363: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : d3368: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : d336f: 90 nop 0.00 : d3370: eb 09 jmp d337b <__sbrk+0x6b> 0.00 : d3372: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : d3378: 48 8b 1b mov (%rbx),%rbx 0.00 : d337b: 48 89 d8 mov %rbx,%rax 0.00 : d337e: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : d3383: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : d3388: 48 83 c4 18 add $0x18,%rsp 0.00 : d338c: c3 retq 0.00 : d338d: 0f 1f 00 nopl (%rax) 0.00 : d3390: 48 89 e8 mov %rbp,%rax 0.00 : d3393: 48 f7 d8 neg %rax 0.00 : d3396: 48 39 c3 cmp %rax,%rbx 0.00 : d3399: 72 cd jb d3368 <__sbrk+0x58> 0.00 : d339b: 48 8d 3c 2b lea (%rbx,%rbp,1),%rdi 0.00 : d339f: eb b9 jmp d335a <__sbrk+0x4a> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d7c50 : 100.00 : d7c50: 49 89 ca mov %rcx,%r10 0.00 : d7c53: b8 09 00 00 00 mov $0x9,%eax 0.00 : d7c58: 0f 05 syscall 0.00 : d7c5a: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : d7c60: 73 01 jae d7c63 0.00 : d7c62: c3 retq 0.00 : d7c63: 48 8b 0d ce a1 29 00 mov 0x29a1ce(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d7c6a: 31 d2 xor %edx,%edx 0.00 : d7c6c: 48 29 c2 sub %rax,%rdx 0.00 : d7c6f: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : d7c72: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : d7c76: eb ea jmp d7c62 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001120 <_dl_start>: 16.67 : 1120: 55 push %rbp 0.00 : 1121: 48 89 e5 mov %rsp,%rbp 0.00 : 1124: 41 57 push %r15 0.00 : 1126: 41 56 push %r14 0.00 : 1128: 41 55 push %r13 0.00 : 112a: 41 54 push %r12 0.00 : 112c: 53 push %rbx 0.00 : 112d: 48 83 ec 28 sub $0x28,%rsp 0.00 : 1131: 48 89 7d b8 mov %rdi,-0x48(%rbp) 0.00 : 1135: 0f 31 rdtsc 0.00 : 1137: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 113b: 89 c0 mov %eax,%eax 0.00 : 113d: 48 09 c2 or %rax,%rdx 0.00 : 1140: 48 8d 05 d9 ff ff ff lea -0x27(%rip),%rax # 1120 <_dl_start> 16.67 : 1147: 48 2b 05 b2 da 21 00 sub 0x21dab2(%rip),%rax # 21ec00 0.00 : 114e: 48 89 c1 mov %rax,%rcx 0.00 : 1151: 48 03 0d 88 de 21 00 add 0x21de88(%rip),%rcx # 21efe0 <_DYNAMIC+0x170> 16.67 : 1158: 48 89 15 69 dc 21 00 mov %rdx,0x21dc69(%rip) # 21edc8 0.00 : 115f: 48 89 05 6a e8 21 00 mov %rax,0x21e86a(%rip) # 21f9d0 <_rtld_global+0x970> 0.00 : 1166: 48 89 0d 73 e8 21 00 mov %rcx,0x21e873(%rip) # 21f9e0 <_rtld_global+0x980> 0.00 : 116d: 48 8b 11 mov (%rcx),%rdx 0.00 : 1170: 48 85 d2 test %rdx,%rdx 0.00 : 1173: 74 6b je 11e0 <_dl_start+0xc0> 0.00 : 1175: 48 8d 35 e4 de 21 00 lea 0x21dee4(%rip),%rsi # 21f060 <_rtld_global> 0.00 : 117c: bf ff ff ff 6f mov $0x6fffffff,%edi 0.00 : 1181: 41 b9 ff fd ff 6f mov $0x6ffffdff,%r9d 0.00 : 1187: 41 bb ff fe ff 6f mov $0x6ffffeff,%r11d 0.00 : 118d: bb 76 00 00 70 mov $0x70000076,%ebx 0.00 : 1192: 41 ba 6a ff ff 6f mov $0x6fffff6a,%r10d 0.00 : 1198: 41 b8 57 01 00 70 mov $0x70000157,%r8d 0.00 : 119e: eb 14 jmp 11b4 <_dl_start+0x94> 0.00 : 11a0: 48 89 8c d6 b0 09 00 mov %rcx,0x9b0(%rsi,%rdx,8) 0.00 : 11a7: 00 0.00 : 11a8: 48 83 c1 10 add $0x10,%rcx 0.00 : 11ac: 48 8b 11 mov (%rcx),%rdx 0.00 : 11af: 48 85 d2 test %rdx,%rdx 0.00 : 11b2: 74 2c je 11e0 <_dl_start+0xc0> 0.00 : 11b4: 48 83 fa 21 cmp $0x21,%rdx 0.00 : 11b8: 76 e6 jbe 11a0 <_dl_start+0x80> 0.00 : 11ba: 48 89 f8 mov %rdi,%rax 0.00 : 11bd: 48 29 d0 sub %rdx,%rax 0.00 : 11c0: 48 83 f8 0f cmp $0xf,%rax 0.00 : 11c4: 0f 87 4e 02 00 00 ja 1418 <_dl_start+0x2f8> 0.00 : 11ca: 4c 89 c0 mov %r8,%rax 0.00 : 11cd: 48 29 d0 sub %rdx,%rax 0.00 : 11d0: 48 89 0c c6 mov %rcx,(%rsi,%rax,8) 0.00 : 11d4: 48 83 c1 10 add $0x10,%rcx 0.00 : 11d8: 48 8b 11 mov (%rcx),%rdx 0.00 : 11db: 48 85 d2 test %rdx,%rdx 0.00 : 11de: 75 d4 jne 11b4 <_dl_start+0x94> 16.67 : 11e0: 48 8b 15 e9 e7 21 00 mov 0x21e7e9(%rip),%rdx # 21f9d0 <_rtld_global+0x970> 0.00 : 11e7: 48 85 d2 test %rdx,%rdx 0.00 : 11ea: 0f 84 80 00 00 00 je 1270 <_dl_start+0x150> 0.00 : 11f0: 48 8b 05 39 e8 21 00 mov 0x21e839(%rip),%rax # 21fa30 <_rtld_global+0x9d0> 0.00 : 11f7: 48 85 c0 test %rax,%rax 0.00 : 11fa: 74 04 je 1200 <_dl_start+0xe0> 0.00 : 11fc: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1200: 48 8b 05 21 e8 21 00 mov 0x21e821(%rip),%rax # 21fa28 <_rtld_global+0x9c8> 0.00 : 1207: 48 85 c0 test %rax,%rax 0.00 : 120a: 74 04 je 1210 <_dl_start+0xf0> 0.00 : 120c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1210: 48 8b 05 21 e8 21 00 mov 0x21e821(%rip),%rax # 21fa38 <_rtld_global+0x9d8> 0.00 : 1217: 48 85 c0 test %rax,%rax 0.00 : 121a: 74 04 je 1220 <_dl_start+0x100> 0.00 : 121c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1220: 48 8b 05 19 e8 21 00 mov 0x21e819(%rip),%rax # 21fa40 <_rtld_global+0x9e0> 0.00 : 1227: 48 85 c0 test %rax,%rax 0.00 : 122a: 74 04 je 1230 <_dl_start+0x110> 0.00 : 122c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1230: 48 8b 05 11 e8 21 00 mov 0x21e811(%rip),%rax # 21fa48 <_rtld_global+0x9e8> 0.00 : 1237: 48 85 c0 test %rax,%rax 0.00 : 123a: 74 04 je 1240 <_dl_start+0x120> 0.00 : 123c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1240: 48 8b 05 81 e8 21 00 mov 0x21e881(%rip),%rax # 21fac8 <_rtld_global+0xa68> 0.00 : 1247: 48 85 c0 test %rax,%rax 0.00 : 124a: 74 04 je 1250 <_dl_start+0x130> 0.00 : 124c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1250: 48 8b 05 41 e9 21 00 mov 0x21e941(%rip),%rax # 21fb98 <_rtld_global+0xb38> 0.00 : 1257: 48 85 c0 test %rax,%rax 0.00 : 125a: 74 04 je 1260 <_dl_start+0x140> 0.00 : 125c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1260: 48 8b 05 01 ea 21 00 mov 0x21ea01(%rip),%rax # 21fc68 <_rtld_global+0xc08> 0.00 : 1267: 48 85 c0 test %rax,%rax 0.00 : 126a: 74 04 je 1270 <_dl_start+0x150> 0.00 : 126c: 48 01 50 08 add %rdx,0x8(%rax) 0.00 : 1270: 48 8b 0d 39 e8 21 00 mov 0x21e839(%rip),%rcx # 21fab0 <_rtld_global+0xa50> 0.00 : 1277: 48 85 c9 test %rcx,%rcx 0.00 : 127a: 74 0b je 1287 <_dl_start+0x167> 0.00 : 127c: 48 83 79 08 07 cmpq $0x7,0x8(%rcx) 0.00 : 1281: 0f 85 02 04 00 00 jne 1689 <_dl_start+0x569> 0.00 : 1287: 48 8b 15 ba e7 21 00 mov 0x21e7ba(%rip),%rdx # 21fa48 <_rtld_global+0x9e8> 0.00 : 128e: 48 85 d2 test %rdx,%rdx 0.00 : 1291: 74 12 je 12a5 <_dl_start+0x185> 0.00 : 1293: 48 8b 05 be e7 21 00 mov 0x21e7be(%rip),%rax # 21fa58 <_rtld_global+0x9f8> 0.00 : 129a: 48 83 78 08 18 cmpq $0x18,0x8(%rax) 0.00 : 129f: 0f 85 c5 03 00 00 jne 166a <_dl_start+0x54a> 0.00 : 12a5: 48 8b 05 94 e8 21 00 mov 0x21e894(%rip),%rax # 21fb40 <_rtld_global+0xae0> 0.00 : 12ac: 48 85 c0 test %rax,%rax 0.00 : 12af: 74 0b je 12bc <_dl_start+0x19c> 0.00 : 12b1: 48 83 78 08 01 cmpq $0x1,0x8(%rax) 0.00 : 12b6: 0f 85 8f 03 00 00 jne 164b <_dl_start+0x52b> 0.00 : 12bc: 48 8b 05 3d e8 21 00 mov 0x21e83d(%rip),%rax # 21fb00 <_rtld_global+0xaa0> 0.00 : 12c3: 48 85 c0 test %rax,%rax 0.00 : 12c6: 74 0b je 12d3 <_dl_start+0x1b3> 0.00 : 12c8: 48 83 78 08 08 cmpq $0x8,0x8(%rax) 0.00 : 12cd: 0f 85 d5 03 00 00 jne 16a8 <_dl_start+0x588> 0.00 : 12d3: 48 83 3d 1d e8 21 00 cmpq $0x0,0x21e81d(%rip) # 21faf8 <_rtld_global+0xa98> 0.00 : 12da: 00 0.00 : 12db: 0f 85 4b 03 00 00 jne 162c <_dl_start+0x50c> 0.00 : 12e1: 48 83 3d 9f e7 21 00 cmpq $0x0,0x21e79f(%rip) # 21fa88 <_rtld_global+0xa28> 0.00 : 12e8: 00 0.00 : 12e9: 0f 85 1e 03 00 00 jne 160d <_dl_start+0x4ed> 0.00 : 12ef: 4c 8b 25 da e6 21 00 mov 0x21e6da(%rip),%r12 # 21f9d0 <_rtld_global+0x970> 0.00 : 12f6: 4d 85 e4 test %r12,%r12 0.00 : 12f9: 0f 85 61 01 00 00 jne 1460 <_dl_start+0x340> 0.00 : 12ff: 48 83 3d 01 e9 21 00 cmpq $0x0,0x21e901(%rip) # 21fc08 <_rtld_global+0xba8> 0.00 : 1306: 00 0.00 : 1307: 0f 84 53 01 00 00 je 1460 <_dl_start+0x340> 0.00 : 130d: 80 0d d0 e9 21 00 04 orb $0x4,0x21e9d0(%rip) # 21fce4 <_rtld_global+0xc84> 0.00 : 1314: 48 83 3d ac d9 21 00 cmpq $0x0,0x21d9ac(%rip) # 21ecc8 <_rtld_global_ro+0xa8> 0.00 : 131b: 00 0.00 : 131c: 75 41 jne 135f <_dl_start+0x23f> 0.00 : 131e: bf 05 00 00 00 mov $0x5,%edi 0.00 : 1323: 48 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%rsi 0.00 : 132a: 0f 31 rdtsc 0.00 : 132c: 89 d1 mov %edx,%ecx 0.00 : 132e: 41 89 c0 mov %eax,%r8d 0.00 : 1331: 0f 31 rdtsc 0.00 : 1333: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 1337: 89 c0 mov %eax,%eax 0.00 : 1339: 48 09 c2 or %rax,%rdx 0.00 : 133c: 48 89 c8 mov %rcx,%rax 0.00 : 133f: 44 89 c1 mov %r8d,%ecx 0.00 : 1342: 48 c1 e0 20 shl $0x20,%rax 0.00 : 1346: 48 09 c8 or %rcx,%rax 0.00 : 1349: 48 29 c2 sub %rax,%rdx 0.00 : 134c: 48 39 d6 cmp %rdx,%rsi 0.00 : 134f: 48 0f 47 f2 cmova %rdx,%rsi 0.00 : 1353: 83 ef 01 sub $0x1,%edi 0.00 : 1356: 75 d2 jne 132a <_dl_start+0x20a> 0.00 : 1358: 48 89 35 69 d9 21 00 mov %rsi,0x21d969(%rip) # 21ecc8 <_rtld_global_ro+0xa8> 0.00 : 135f: 48 8d 3d 6a e6 21 00 lea 0x21e66a(%rip),%rdi # 21f9d0 <_rtld_global+0x970> 0.00 : 1366: e8 d5 7c 00 00 callq 9040 <_dl_setup_hash> 0.00 : 136b: 48 8d 05 5e e6 21 00 lea 0x21e65e(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 1372: 48 8d 15 87 ec ff ff lea -0x1379(%rip),%rdx # 0 0.00 : 1379: 48 89 05 78 e6 21 00 mov %rax,0x21e678(%rip) # 21f9f8 <_rtld_global+0x998> 0.00 : 1380: 48 89 15 89 e9 21 00 mov %rdx,0x21e989(%rip) # 21fd10 <_rtld_global+0xcb0> 0.00 : 1387: 48 8d 05 3a ee 21 00 lea 0x21ee3a(%rip),%rax # 2201c8 <_end> 0.00 : 138e: 48 8d 15 1d 72 01 00 lea 0x1721d(%rip),%rdx # 185b2 <_etext> 0.00 : 1395: 48 89 05 7c e9 21 00 mov %rax,0x21e97c(%rip) # 21fd18 <_rtld_global+0xcb8> 0.00 : 139c: 48 89 15 7d e9 21 00 mov %rdx,0x21e97d(%rip) # 21fd20 <_rtld_global+0xcc0> 0.00 : 13a3: 0f 31 rdtsc 0.00 : 13a5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 13a9: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 13ad: 89 c0 mov %eax,%eax 0.00 : 13af: 48 8d 35 ba 10 00 00 lea 0x10ba(%rip),%rsi # 2470 0.00 : 13b6: 48 09 c2 or %rax,%rdx 0.00 : 13b9: 48 89 2d 98 da 21 00 mov %rbp,0x21da98(%rip) # 21ee58 <__libc_stack_end> 0.00 : 13c0: 48 89 15 d9 e5 21 00 mov %rdx,0x21e5d9(%rip) # 21f9a0 <_rtld_global+0x940> 0.00 : 13c7: e8 24 36 01 00 callq 149f0 <_dl_sysdep_start> 0.00 : 13cc: 48 89 c3 mov %rax,%rbx 0.00 : 13cf: 0f 31 rdtsc 0.00 : 13d1: 80 3d 48 d8 21 00 00 cmpb $0x0,0x21d848(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 13d8: 89 c1 mov %eax,%ecx 0.00 : 13da: 48 8b 35 e7 d9 21 00 mov 0x21d9e7(%rip),%rsi # 21edc8 0.00 : 13e1: 79 1c jns 13ff <_dl_start+0x2df> 0.00 : 13e3: 48 89 d0 mov %rdx,%rax 0.00 : 13e6: 89 ca mov %ecx,%edx 0.00 : 13e8: 48 8d 7d c8 lea -0x38(%rbp),%rdi 0.00 : 13ec: 48 c1 e0 20 shl $0x20,%rax 0.00 : 13f0: 48 09 d0 or %rdx,%rax 0.00 : 13f3: 48 29 f0 sub %rsi,%rax 0.00 : 13f6: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 13fa: e8 41 f8 ff ff callq c40 0.00 : 13ff: 48 83 c4 28 add $0x28,%rsp 0.00 : 1403: 48 89 d8 mov %rbx,%rax 0.00 : 1406: 5b pop %rbx 0.00 : 1407: 41 5c pop %r12 0.00 : 1409: 41 5d pop %r13 0.00 : 140b: 41 5e pop %r14 0.00 : 140d: 41 5f pop %r15 0.00 : 140f: c9 leaveq 0.00 : 1410: c3 retq 0.00 : 1411: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1418: 8d 04 12 lea (%rdx,%rdx,1),%eax 0.00 : 141b: d1 f8 sar %eax 0.00 : 141d: 83 f8 fc cmp $0xfffffffc,%eax 0.00 : 1420: 76 16 jbe 1438 <_dl_start+0x318> 0.00 : 1422: f7 d0 not %eax 0.00 : 1424: 83 c0 32 add $0x32,%eax 0.00 : 1427: 48 89 8c c6 b0 09 00 mov %rcx,0x9b0(%rsi,%rax,8) 0.00 : 142e: 00 0.00 : 142f: e9 74 fd ff ff jmpq 11a8 <_dl_start+0x88> 0.00 : 1434: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 1438: 4c 89 c8 mov %r9,%rax 0.00 : 143b: 48 29 d0 sub %rdx,%rax 0.00 : 143e: 48 83 f8 0b cmp $0xb,%rax 0.00 : 1442: 0f 87 68 01 00 00 ja 15b0 <_dl_start+0x490> 0.00 : 1448: 4c 89 d0 mov %r10,%rax 0.00 : 144b: 48 29 d0 sub %rdx,%rax 0.00 : 144e: 48 89 0c c6 mov %rcx,(%rsi,%rax,8) 0.00 : 1452: e9 51 fd ff ff jmpq 11a8 <_dl_start+0x88> 0.00 : 1457: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 145e: 00 00 0.00 : 1460: 31 f6 xor %esi,%esi 0.00 : 1462: 31 ff xor %edi,%edi 0.00 : 1464: 48 85 d2 test %rdx,%rdx 0.00 : 1467: 74 0f je 1478 <_dl_start+0x358> 0.00 : 1469: 48 8b 05 e0 e5 21 00 mov 0x21e5e0(%rip),%rax # 21fa50 <_rtld_global+0x9f0> 0.00 : 1470: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 1474: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 1478: 48 85 c9 test %rcx,%rcx 0.00 : 147b: 74 20 je 149d <_dl_start+0x37d> 0.00 : 147d: 48 8b 05 44 e6 21 00 mov 0x21e644(%rip),%rax # 21fac8 <_rtld_global+0xa68> 0.00 : 1484: 48 8d 14 3e lea (%rsi,%rdi,1),%rdx 0.00 : 1488: 48 3b 50 08 cmp 0x8(%rax),%rdx 0.00 : 148c: 0f 85 54 02 00 00 jne 16e6 <_dl_start+0x5c6> 0.00 : 1492: 48 8b 05 87 e5 21 00 mov 0x21e587(%rip),%rax # 21fa20 <_rtld_global+0x9c0> 0.00 : 1499: 48 03 78 08 add 0x8(%rax),%rdi 0.00 : 149d: 48 8b 0d ac e6 21 00 mov 0x21e6ac(%rip),%rcx # 21fb50 <_rtld_global+0xaf0> 0.00 : 14a4: 48 8b 05 95 e5 21 00 mov 0x21e595(%rip),%rax # 21fa40 <_rtld_global+0x9e0> 0.00 : 14ab: 49 89 f0 mov %rsi,%r8 0.00 : 14ae: 48 85 c9 test %rcx,%rcx 0.00 : 14b1: 4c 8b 78 08 mov 0x8(%rax),%r15 0.00 : 14b5: 74 61 je 1518 <_dl_start+0x3f8> 0.00 : 14b7: 48 89 f8 mov %rdi,%rax 0.00 : 14ba: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : 14c1: aa aa aa 0.00 : 14c4: 48 f7 e2 mul %rdx 0.00 : 14c7: 8b 41 08 mov 0x8(%rcx),%eax 0.00 : 14ca: 48 c1 ea 04 shr $0x4,%rdx 0.00 : 14ce: 48 39 c2 cmp %rax,%rdx 0.00 : 14d1: 48 0f 47 d0 cmova %rax,%rdx 0.00 : 14d5: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 14d9: 48 8d 0c d6 lea (%rsi,%rdx,8),%rcx 0.00 : 14dd: 48 39 ce cmp %rcx,%rsi 0.00 : 14e0: 73 33 jae 1515 <_dl_start+0x3f5> 0.00 : 14e2: 83 7e 08 08 cmpl $0x8,0x8(%rsi) 0.00 : 14e6: 48 8b 06 mov (%rsi),%rax 0.00 : 14e9: 74 13 je 14fe <_dl_start+0x3de> 0.00 : 14eb: e9 df 00 00 00 jmpq 15cf <_dl_start+0x4af> 0.00 : 14f0: 41 83 78 08 08 cmpl $0x8,0x8(%r8) 16.67 : 14f5: 49 8b 00 mov (%r8),%rax 0.00 : 14f8: 0f 85 d1 00 00 00 jne 15cf <_dl_start+0x4af> 0.00 : 14fe: 4a 8d 14 20 lea (%rax,%r12,1),%rdx 0.00 : 1502: 4c 89 e0 mov %r12,%rax 0.00 : 1505: 49 03 40 10 add 0x10(%r8),%rax 0.00 : 1509: 49 83 c0 18 add $0x18,%r8 0.00 : 150d: 4c 39 c1 cmp %r8,%rcx 0.00 : 1510: 48 89 02 mov %rax,(%rdx) 0.00 : 1513: 77 db ja 14f0 <_dl_start+0x3d0> 0.00 : 1515: 49 89 c8 mov %rcx,%r8 0.00 : 1518: 48 83 3d 78 e6 21 00 cmpq $0x0,0x21e678(%rip) # 21fb98 <_rtld_global+0xb38> 0.00 : 151f: 00 0.00 : 1520: 0f 84 a1 01 00 00 je 16c7 <_dl_start+0x5a7> 0.00 : 1526: 4c 8d 34 37 lea (%rdi,%rsi,1),%r14 0.00 : 152a: 4d 39 c6 cmp %r8,%r14 0.00 : 152d: 77 2d ja 155c <_dl_start+0x43c> 0.00 : 152f: e9 d9 fd ff ff jmpq 130d <_dl_start+0x1ed> 0.00 : 1534: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 1538: 48 8d 43 fa lea -0x6(%rbx),%rax 0.00 : 153c: 48 83 f8 01 cmp $0x1,%rax 0.00 : 1540: 0f 87 a8 00 00 00 ja 15ee <_dl_start+0x4ce> 0.00 : 1546: 49 03 50 10 add 0x10(%r8),%rdx 0.00 : 154a: 4b 89 54 25 00 mov %rdx,0x0(%r13,%r12,1) 0.00 : 154f: 49 83 c0 18 add $0x18,%r8 0.00 : 1553: 4d 39 c6 cmp %r8,%r14 0.00 : 1556: 0f 86 b1 fd ff ff jbe 130d <_dl_start+0x1ed> 0.00 : 155c: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : 1560: 4d 8b 28 mov (%r8),%r13 0.00 : 1563: 48 89 c3 mov %rax,%rbx 0.00 : 1566: 83 e3 ff and $0xffffffff,%ebx 0.00 : 1569: 74 e4 je 154f <_dl_start+0x42f> 0.00 : 156b: 48 c1 e8 20 shr $0x20,%rax 0.00 : 156f: 31 d2 xor %edx,%edx 0.00 : 1571: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 1575: 49 8d 0c c7 lea (%r15,%rax,8),%rcx 0.00 : 1579: 48 85 c9 test %rcx,%rcx 0.00 : 157c: 74 ba je 1538 <_dl_start+0x418> 0.00 : 157e: 0f b6 41 04 movzbl 0x4(%rcx),%eax 16.67 : 1582: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 1586: 48 03 15 43 e4 21 00 add 0x21e443(%rip),%rdx # 21f9d0 <_rtld_global+0x970> 0.00 : 158d: 83 e0 0f and $0xf,%eax 0.00 : 1590: 83 f8 0a cmp $0xa,%eax 0.00 : 1593: 75 a3 jne 1538 <_dl_start+0x418> 0.00 : 1595: 66 83 79 06 00 cmpw $0x0,0x6(%rcx) 0.00 : 159a: 74 9c je 1538 <_dl_start+0x418> 0.00 : 159c: 4c 89 45 b0 mov %r8,-0x50(%rbp) 0.00 : 15a0: ff d2 callq *%rdx 0.00 : 15a2: 4c 8b 45 b0 mov -0x50(%rbp),%r8 0.00 : 15a6: 48 89 c2 mov %rax,%rdx 0.00 : 15a9: eb 8d jmp 1538 <_dl_start+0x418> 0.00 : 15ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 15b0: 4c 89 d8 mov %r11,%rax 0.00 : 15b3: 48 29 d0 sub %rdx,%rax 0.00 : 15b6: 48 83 f8 0a cmp $0xa,%rax 0.00 : 15ba: 0f 87 e8 fb ff ff ja 11a8 <_dl_start+0x88> 0.00 : 15c0: 48 89 d8 mov %rbx,%rax 0.00 : 15c3: 48 29 d0 sub %rdx,%rax 0.00 : 15c6: 48 89 0c c6 mov %rcx,(%rsi,%rax,8) 0.00 : 15ca: e9 d9 fb ff ff jmpq 11a8 <_dl_start+0x88> 0.00 : 15cf: 48 8d 0d da b0 01 00 lea 0x1b0da(%rip),%rcx # 1c6b0 <__PRETTY_FUNCTION__.11640> 0.00 : 15d6: 48 8d 35 0b 90 01 00 lea 0x1900b(%rip),%rsi # 1a5e8 <__PRETTY_FUNCTION__.3644+0x277> 0.00 : 15dd: 48 8d 3d 24 90 01 00 lea 0x19024(%rip),%rdi # 1a608 <__PRETTY_FUNCTION__.3644+0x297> 0.00 : 15e4: ba d2 01 00 00 mov $0x1d2,%edx 0.00 : 15e9: e8 82 37 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 15ee: 48 8d 0d db b0 01 00 lea 0x1b0db(%rip),%rcx # 1c6d0 <__PRETTY_FUNCTION__.12017> 0.00 : 15f5: 48 8d 35 ec 8f 01 00 lea 0x18fec(%rip),%rsi # 1a5e8 <__PRETTY_FUNCTION__.3644+0x277> 0.00 : 15fc: 48 8d 3d 74 7f 01 00 lea 0x17f74(%rip),%rdi # 19577 0.00 : 1603: ba 32 01 00 00 mov $0x132,%edx 0.00 : 1608: e8 63 37 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 160d: 48 8d 0d 5c b0 01 00 lea 0x1b05c(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 1614: 48 8d 35 f3 7e 01 00 lea 0x17ef3(%rip),%rsi # 1950e 0.00 : 161b: 48 8d 3d 2d 7f 01 00 lea 0x17f2d(%rip),%rdi # 1954f 0.00 : 1622: ba d1 00 00 00 mov $0xd1,%edx 0.00 : 1627: e8 44 37 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 162c: 48 8d 0d 3d b0 01 00 lea 0x1b03d(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 1633: 48 8d 35 d4 7e 01 00 lea 0x17ed4(%rip),%rsi # 1950e 0.00 : 163a: 48 8d 3d f6 7e 01 00 lea 0x17ef6(%rip),%rdi # 19537 0.00 : 1641: ba d0 00 00 00 mov $0xd0,%edx 0.00 : 1646: e8 25 37 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 164b: 48 8d 0d 1e b0 01 00 lea 0x1b01e(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 1652: 48 8d 35 b5 7e 01 00 lea 0x17eb5(%rip),%rsi # 1950e 0.00 : 1659: 48 8d 3d 90 8e 01 00 lea 0x18e90(%rip),%rdi # 1a4f0 <__PRETTY_FUNCTION__.3644+0x17f> 0.00 : 1660: ba cc 00 00 00 mov $0xcc,%edx 0.00 : 1665: e8 06 37 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 166a: 48 8d 0d ff af 01 00 lea 0x1afff(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 1671: 48 8d 35 96 7e 01 00 lea 0x17e96(%rip),%rsi # 1950e 0.00 : 1678: 48 8d 3d 41 8e 01 00 lea 0x18e41(%rip),%rdi # 1a4c0 <__PRETTY_FUNCTION__.3644+0x14f> 0.00 : 167f: ba c3 00 00 00 mov $0xc3,%edx 0.00 : 1684: e8 e7 36 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 1689: 48 8d 0d e0 af 01 00 lea 0x1afe0(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 1690: 48 8d 35 77 7e 01 00 lea 0x17e77(%rip),%rsi # 1950e 0.00 : 1697: 48 8d 3d 7f 7e 01 00 lea 0x17e7f(%rip),%rdi # 1951d 0.00 : 169e: ba bb 00 00 00 mov $0xbb,%edx 0.00 : 16a3: e8 c8 36 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 16a8: 48 8d 0d c1 af 01 00 lea 0x1afc1(%rip),%rcx # 1c670 <__PRETTY_FUNCTION__.11639> 0.00 : 16af: 48 8d 35 58 7e 01 00 lea 0x17e58(%rip),%rsi # 1950e 0.00 : 16b6: 48 8d 3d bb 8e 01 00 lea 0x18ebb(%rip),%rdi # 1a578 <__PRETTY_FUNCTION__.3644+0x207> 0.00 : 16bd: ba ce 00 00 00 mov $0xce,%edx 0.00 : 16c2: e8 a9 36 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 16c7: 48 8d 0d c2 af 01 00 lea 0x1afc2(%rip),%rcx # 1c690 <__PRETTY_FUNCTION__.12063> 0.00 : 16ce: 48 8d 35 99 7e 01 00 lea 0x17e99(%rip),%rsi # 1956e 0.00 : 16d5: 48 8d 3d 54 8f 01 00 lea 0x18f54(%rip),%rdi # 1a630 <__PRETTY_FUNCTION__.3644+0x2bf> 0.00 : 16dc: ba 6d 00 00 00 mov $0x6d,%edx 0.00 : 16e1: e8 8a 36 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 16e6: 48 8d 0d 03 82 01 00 lea 0x18203(%rip),%rcx # 198f0 <__PRETTY_FUNCTION__.12079> 0.00 : 16ed: 48 8d 35 73 7e 01 00 lea 0x17e73(%rip),%rsi # 19567 0.00 : 16f4: 48 8d 3d bd 8e 01 00 lea 0x18ebd(%rip),%rdi # 1a5b8 <__PRETTY_FUNCTION__.3644+0x247> 0.00 : 16fb: ba 20 02 00 00 mov $0x220,%edx 0.00 : 1700: e8 6b 36 01 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000f4c0 : 0.00 : f4c0: 55 push %rbp 0.00 : f4c1: 48 89 e5 mov %rsp,%rbp 0.00 : f4c4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : f4c8: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : f4cc: 41 89 d4 mov %edx,%r12d 0.00 : f4cf: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : f4d3: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : f4d7: 49 89 cd mov %rcx,%r13 0.00 : f4da: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : f4de: 48 83 ec 70 sub $0x70,%rsp 0.00 : f4e2: f6 05 37 f7 20 00 10 testb $0x10,0x20f737(%rip) # 21ec20 <_rtld_global_ro> 0.00 : f4e9: 48 89 7d 98 mov %rdi,-0x68(%rbp) 0.00 : f4ed: 44 89 4d 94 mov %r9d,-0x6c(%rbp) 0.00 : f4f1: 4d 89 c7 mov %r8,%r15 0.00 : f4f4: 49 8b 40 68 mov 0x68(%r8),%rax 0.00 : f4f8: 4c 8b 70 08 mov 0x8(%rax),%r14 0.00 : f4fc: 0f 85 bb 02 00 00 jne f7bd 0.00 : f502: 49 8b 87 68 01 00 00 mov 0x168(%r15),%rax 0.00 : f509: 48 85 c0 test %rax,%rax 0.00 : f50c: 0f 84 22 02 00 00 je f734 0.00 : f512: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : f516: 48 85 c0 test %rax,%rax 0.00 : f519: 0f 84 d2 02 00 00 je f7f1 0.00 : f51f: 48 89 c3 mov %rax,%rbx 0.00 : f522: 49 03 1f add (%r15),%rbx 0.00 : f525: 66 83 3b 01 cmpw $0x1,(%rbx) 0.00 : f529: 74 1b je f546 0.00 : f52b: e9 3e 01 00 00 jmpq f66e 33.33 : f530: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : f533: 85 c0 test %eax,%eax 0.00 : f535: 74 49 je f580 0.00 : f537: 89 c0 mov %eax,%eax 0.00 : f539: 48 01 c3 add %rax,%rbx 0.00 : f53c: 66 83 3b 01 cmpw $0x1,(%rbx) 33.33 : f540: 0f 85 28 01 00 00 jne f66e 0.00 : f546: 44 39 63 08 cmp %r12d,0x8(%rbx) 0.00 : f54a: 75 e4 jne f530 0.00 : f54c: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : f54f: 4c 89 ef mov %r13,%rdi 0.00 : f552: 8b 34 03 mov (%rbx,%rax,1),%esi 0.00 : f555: 49 8d 34 36 lea (%r14,%rsi,1),%rsi 0.00 : f559: e8 02 71 00 00 callq 16660 0.00 : f55e: 85 c0 test %eax,%eax 0.00 : f560: 75 ce jne f530 0.00 : f562: 31 db xor %ebx,%ebx 0.00 : f564: 89 d8 mov %ebx,%eax 33.33 : f566: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : f56a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : f56e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : f572: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : f576: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : f57a: c9 leaveq 0.00 : f57b: c3 retq 0.00 : f57c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : f580: 8b 55 10 mov 0x10(%rbp),%edx 0.00 : f583: 85 d2 test %edx,%edx 0.00 : f585: 0f 84 85 02 00 00 je f810 0.00 : f58b: 8b 45 94 mov -0x6c(%rbp),%eax 0.00 : f58e: 85 c0 test %eax,%eax 0.00 : f590: 74 d0 je f562 0.00 : f592: 48 8d 05 00 a9 00 00 lea 0xa900(%rip),%rax # 19e99 <__PRETTY_FUNCTION__.10195+0x5c> 0.00 : f599: 48 8d 3d f9 a8 00 00 lea 0xa8f9(%rip),%rdi # 19e99 <__PRETTY_FUNCTION__.10195+0x5c> 0.00 : f5a0: 4c 89 6d a8 mov %r13,-0x58(%rbp) 0.00 : f5a4: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : f5a8: 48 8d 05 f9 a8 00 00 lea 0xa8f9(%rip),%rax # 19ea8 <__PRETTY_FUNCTION__.10195+0x6b> 0.00 : f5af: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : f5b3: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : f5b7: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : f5bb: 48 8d 05 a3 aa 00 00 lea 0xaaa3(%rip),%rax # 1a065 0.00 : f5c2: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : f5c6: e8 a5 71 00 00 callq 16770 <__GI_strlen> 0.00 : f5cb: 4c 89 ef mov %r13,%rdi 0.00 : f5ce: 49 89 c6 mov %rax,%r14 0.00 : f5d1: e8 9a 71 00 00 callq 16770 <__GI_strlen> 0.00 : f5d6: 48 8d 3d cb a8 00 00 lea 0xa8cb(%rip),%rdi # 19ea8 <__PRETTY_FUNCTION__.10195+0x6b> 0.00 : f5dd: 49 89 c4 mov %rax,%r12 0.00 : f5e0: e8 8b 71 00 00 callq 16770 <__GI_strlen> 0.00 : f5e5: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : f5e9: 48 89 c3 mov %rax,%rbx 0.00 : f5ec: e8 7f 71 00 00 callq 16770 <__GI_strlen> 0.00 : f5f1: 4b 8d 54 26 02 lea 0x2(%r14,%r12,1),%rdx 0.00 : f5f6: 48 8d 35 9c a8 00 00 lea 0xa89c(%rip),%rsi # 19e99 <__PRETTY_FUNCTION__.10195+0x5c> 0.00 : f5fd: 48 01 da add %rbx,%rdx 0.00 : f600: 48 8d 44 02 1e lea 0x1e(%rdx,%rax,1),%rax 0.00 : f605: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : f609: 48 29 c4 sub %rax,%rsp 0.00 : f60c: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : f611: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : f615: 48 89 df mov %rbx,%rdi 0.00 : f618: e8 f3 7b 00 00 callq 17210 <__stpcpy> 0.00 : f61d: 4c 89 ee mov %r13,%rsi 0.00 : f620: 48 89 c7 mov %rax,%rdi 0.00 : f623: e8 e8 7b 00 00 callq 17210 <__stpcpy> 0.00 : f628: 48 8d 35 79 a8 00 00 lea 0xa879(%rip),%rsi # 19ea8 <__PRETTY_FUNCTION__.10195+0x6b> 0.00 : f62f: 48 89 c7 mov %rax,%rdi 0.00 : f632: e8 d9 7b 00 00 callq 17210 <__stpcpy> 0.00 : f637: 48 89 c7 mov %rax,%rdi 0.00 : f63a: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : f63e: e8 cd 7b 00 00 callq 17210 <__stpcpy> 0.00 : f643: 48 89 d9 mov %rbx,%rcx 0.00 : f646: 66 c7 00 29 00 movw $0x29,(%rax) 0.00 : f64b: 31 db xor %ebx,%ebx 0.00 : f64d: 49 8b 77 08 mov 0x8(%r15),%rsi 0.00 : f651: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : f654: 75 0a jne f660 0.00 : f656: 48 8b 05 ab f5 20 00 mov 0x20f5ab(%rip),%rax # 21ec08 <_dl_argv> 0.00 : f65d: 48 8b 30 mov (%rax),%rsi 0.00 : f660: 31 d2 xor %edx,%edx 0.00 : f662: 31 ff xor %edi,%edi 0.00 : f664: e8 37 ea ff ff callq e0a0 <_dl_signal_cerror> 0.00 : f669: e9 f6 fe ff ff jmpq f564 0.00 : f66e: c6 45 b3 00 movb $0x0,-0x4d(%rbp) 0.00 : f672: 0f b7 0b movzwl (%rbx),%ecx 0.00 : f675: 4c 8d 65 b3 lea -0x4d(%rbp),%r12 0.00 : f679: 48 8d 3d 00 9a 00 00 lea 0x9a00(%rip),%rdi # 19080 <_itoa_lower_digits_internal> 0.00 : f680: 48 be cd cc cc cc cc movabs $0xcccccccccccccccd,%rsi 0.00 : f687: cc cc cc 0.00 : f68a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : f690: 48 89 c8 mov %rcx,%rax 0.00 : f693: 49 83 ec 01 sub $0x1,%r12 0.00 : f697: 48 f7 e6 mul %rsi 0.00 : f69a: 48 c1 ea 03 shr $0x3,%rdx 0.00 : f69e: 48 8d 04 92 lea (%rdx,%rdx,4),%rax 0.00 : f6a2: 48 01 c0 add %rax,%rax 0.00 : f6a5: 48 29 c1 sub %rax,%rcx 0.00 : f6a8: 48 85 d2 test %rdx,%rdx 0.00 : f6ab: 0f b6 04 0f movzbl (%rdi,%rcx,1),%eax 0.00 : f6af: 48 89 d1 mov %rdx,%rcx 0.00 : f6b2: 41 88 04 24 mov %al,(%r12) 0.00 : f6b6: 75 d8 jne f690 0.00 : f6b8: 4c 89 e7 mov %r12,%rdi 0.00 : f6bb: e8 b0 70 00 00 callq 16770 <__GI_strlen> 0.00 : f6c0: 48 83 c0 44 add $0x44,%rax 0.00 : f6c4: 48 bf 74 65 64 20 76 movabs $0x7372657620646574,%rdi 0.00 : f6cb: 65 72 73 0.00 : f6ce: 49 b8 75 6e 73 75 70 movabs $0x726f707075736e75,%r8 0.00 : f6d5: 70 6f 72 0.00 : f6d8: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : f6dc: 4c 89 e6 mov %r12,%rsi 0.00 : f6df: 48 29 c4 sub %rax,%rsp 0.00 : f6e2: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : f6e7: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : f6eb: 48 89 7b 08 mov %rdi,0x8(%rbx) 0.00 : f6ef: 48 8d 7b 14 lea 0x14(%rbx),%rdi 0.00 : f6f3: 4c 89 03 mov %r8,(%rbx) 0.00 : f6f6: c7 43 10 69 6f 6e 20 movl $0x206e6f69,0x10(%rbx) 0.00 : f6fd: c6 43 14 00 movb $0x0,0x14(%rbx) 0.00 : f701: e8 0a 7b 00 00 callq 17210 <__stpcpy> 0.00 : f706: 48 b9 65 66 20 72 65 movabs $0x726f636572206665,%rcx 0.00 : f70d: 63 6f 72 0.00 : f710: 48 be 20 6f 66 20 56 movabs $0x6472655620666f20,%rsi 0.00 : f717: 65 72 64 0.00 : f71a: 66 c7 40 10 64 00 movw $0x64,0x10(%rax) 0.00 : f720: 48 89 48 08 mov %rcx,0x8(%rax) 0.00 : f724: 48 89 30 mov %rsi,(%rax) 0.00 : f727: 48 89 d9 mov %rbx,%rcx 0.00 : f72a: bb 01 00 00 00 mov $0x1,%ebx 0.00 : f72f: e9 19 ff ff ff jmpq f64d 0.00 : f734: 44 8b 75 94 mov -0x6c(%rbp),%r14d 0.00 : f738: 45 85 f6 test %r14d,%r14d 0.00 : f73b: 0f 84 21 fe ff ff je f562 0.00 : f741: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : f745: 49 bd 6e 6f 20 76 65 movabs $0x6973726576206f6e,%r13 0.00 : f74c: 72 73 69 0.00 : f74f: 49 bc 6f 6e 20 69 6e movabs $0x726f666e69206e6f,%r12 0.00 : f756: 66 6f 72 0.00 : f759: e8 12 70 00 00 callq 16770 <__GI_strlen> 0.00 : f75e: 48 83 c0 4e add $0x4e,%rax 0.00 : f762: 49 bb 6d 61 74 69 6f movabs $0x61206e6f6974616d,%r11 0.00 : f769: 6e 20 61 0.00 : f76c: 49 ba 76 61 69 6c 61 movabs $0x656c62616c696176,%r10 0.00 : f773: 62 6c 65 0.00 : f776: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : f77a: 49 b9 20 28 72 65 71 movabs $0x7269757165722820,%r9 0.00 : f781: 75 69 72 0.00 : f784: 48 29 c4 sub %rax,%rsp 0.00 : f787: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : f78c: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : f790: 4c 89 2b mov %r13,(%rbx) 0.00 : f793: 4c 89 63 08 mov %r12,0x8(%rbx) 0.00 : f797: 48 8d 7b 2e lea 0x2e(%rbx),%rdi 0.00 : f79b: 4c 89 5b 10 mov %r11,0x10(%rbx) 0.00 : f79f: 4c 89 53 18 mov %r10,0x18(%rbx) 0.00 : f7a3: 4c 89 4b 20 mov %r9,0x20(%rbx) 0.00 : f7a7: c7 43 28 65 64 20 62 movl $0x62206465,0x28(%rbx) 0.00 : f7ae: 66 c7 43 2c 79 20 movw $0x2079,0x2c(%rbx) 0.00 : f7b4: c6 43 2e 00 movb $0x0,0x2e(%rbx) 0.00 : f7b8: e9 7d fe ff ff jmpq f63a 0.00 : f7bd: 49 8b 50 08 mov 0x8(%r8),%rdx 0.00 : f7c1: 49 8b 48 30 mov 0x30(%r8),%rcx 0.00 : f7c5: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : f7c8: 75 0a jne f7d4 0.00 : f7ca: 48 8b 05 37 f4 20 00 mov 0x20f437(%rip),%rax # 21ec08 <_dl_argv> 0.00 : f7d1: 48 8b 10 mov (%rax),%rdx 0.00 : f7d4: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : f7d8: 48 8d 3d 51 c7 00 00 lea 0xc751(%rip),%rdi # 1bf30 <__PRETTY_FUNCTION__.3644+0x1bbf> 0.00 : f7df: 49 89 f1 mov %rsi,%r9 0.00 : f7e2: 31 c0 xor %eax,%eax 0.00 : f7e4: 4c 89 ee mov %r13,%rsi 0.00 : f7e7: e8 64 fb ff ff callq f350 <_dl_debug_printf> 0.00 : f7ec: e9 11 fd ff ff jmpq f502 0.00 : f7f1: 48 8d 0d e0 a6 00 00 lea 0xa6e0(%rip),%rcx # 19ed8 <__PRETTY_FUNCTION__.10385> 0.00 : f7f8: 48 8d 35 7d a6 00 00 lea 0xa67d(%rip),%rsi # 19e7c <__PRETTY_FUNCTION__.10195+0x3f> 0.00 : f7ff: 48 8d 3d 83 a6 00 00 lea 0xa683(%rip),%rdi # 19e89 <__PRETTY_FUNCTION__.10195+0x4c> 0.00 : f806: ba 71 00 00 00 mov $0x71,%edx 0.00 : f80b: e8 60 55 00 00 callq 14d70 <__GI___assert_fail> 0.00 : f810: 48 8d 05 87 a6 00 00 lea 0xa687(%rip),%rax # 19e9e <__PRETTY_FUNCTION__.10195+0x61> 0.00 : f817: 48 8d 3d 80 a6 00 00 lea 0xa680(%rip),%rdi # 19e9e <__PRETTY_FUNCTION__.10195+0x61> 0.00 : f81e: 4c 89 6d a8 mov %r13,-0x58(%rbp) 0.00 : f822: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : f826: 48 8d 05 7b a6 00 00 lea 0xa67b(%rip),%rax # 19ea8 <__PRETTY_FUNCTION__.10195+0x6b> 0.00 : f82d: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : f831: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : f835: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : f839: 48 8d 05 25 a8 00 00 lea 0xa825(%rip),%rax # 1a065 0.00 : f840: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : f844: e8 27 6f 00 00 callq 16770 <__GI_strlen> 0.00 : f849: 4c 89 ef mov %r13,%rdi 0.00 : f84c: 49 89 c6 mov %rax,%r14 0.00 : f84f: e8 1c 6f 00 00 callq 16770 <__GI_strlen> 0.00 : f854: 48 8d 3d 4d a6 00 00 lea 0xa64d(%rip),%rdi # 19ea8 <__PRETTY_FUNCTION__.10195+0x6b> 0.00 : f85b: 49 89 c4 mov %rax,%r12 0.00 : f85e: e8 0d 6f 00 00 callq 16770 <__GI_strlen> 0.00 : f863: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : f867: 48 89 c3 mov %rax,%rbx 0.00 : f86a: e8 01 6f 00 00 callq 16770 <__GI_strlen> 0.00 : f86f: 4b 8d 54 26 02 lea 0x2(%r14,%r12,1),%rdx 0.00 : f874: 48 8d 35 23 a6 00 00 lea 0xa623(%rip),%rsi # 19e9e <__PRETTY_FUNCTION__.10195+0x61> 0.00 : f87b: 48 01 da add %rbx,%rdx 0.00 : f87e: 48 8d 44 02 1e lea 0x1e(%rdx,%rax,1),%rax 0.00 : f883: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : f887: 48 29 c4 sub %rax,%rsp 0.00 : f88a: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : f88f: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : f893: 48 89 df mov %rbx,%rdi 0.00 : f896: e8 75 79 00 00 callq 17210 <__stpcpy> 0.00 : f89b: 4c 89 ee mov %r13,%rsi 0.00 : f89e: 48 89 c7 mov %rax,%rdi 0.00 : f8a1: e8 6a 79 00 00 callq 17210 <__stpcpy> 0.00 : f8a6: 48 8d 35 fb a5 00 00 lea 0xa5fb(%rip),%rsi # 19ea8 <__PRETTY_FUNCTION__.10195+0x6b> 0.00 : f8ad: 48 89 c7 mov %rax,%rdi 0.00 : f8b0: e8 5b 79 00 00 callq 17210 <__stpcpy> 0.00 : f8b5: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : f8b9: 48 89 c7 mov %rax,%rdi 0.00 : f8bc: e8 4f 79 00 00 callq 17210 <__stpcpy> 0.00 : f8c1: 48 89 d9 mov %rbx,%rcx 0.00 : f8c4: 66 c7 00 29 00 movw $0x29,(%rax) 0.00 : f8c9: bb 01 00 00 00 mov $0x1,%ebx 0.00 : f8ce: e9 7a fd ff ff jmpq f64d Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000014ca0 <_dl_next_ld_env_entry>: 0.00 : 14ca0: 48 8b 17 mov (%rdi),%rdx 0.00 : 14ca3: 48 8b 02 mov (%rdx),%rax 0.00 : 14ca6: 48 85 c0 test %rax,%rax 0.00 : 14ca9: 74 16 je 14cc1 <_dl_next_ld_env_entry+0x21> 0.00 : 14cab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14cb0: 80 38 4c cmpb $0x4c,(%rax) 0.00 : 14cb3: 74 12 je 14cc7 <_dl_next_ld_env_entry+0x27> 25.00 : 14cb5: 48 83 c2 08 add $0x8,%rdx 0.00 : 14cb9: 48 8b 02 mov (%rdx),%rax 25.00 : 14cbc: 48 85 c0 test %rax,%rax 0.00 : 14cbf: 75 ef jne 14cb0 <_dl_next_ld_env_entry+0x10> 0.00 : 14cc1: 31 c9 xor %ecx,%ecx 0.00 : 14cc3: 48 89 c8 mov %rcx,%rax 0.00 : 14cc6: c3 retq 25.00 : 14cc7: 80 78 01 44 cmpb $0x44,0x1(%rax) 25.00 : 14ccb: 75 e8 jne 14cb5 <_dl_next_ld_env_entry+0x15> 0.00 : 14ccd: 80 78 02 5f cmpb $0x5f,0x2(%rax) 0.00 : 14cd1: 75 e2 jne 14cb5 <_dl_next_ld_env_entry+0x15> 0.00 : 14cd3: 48 8d 48 03 lea 0x3(%rax),%rcx 0.00 : 14cd7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 14cdb: 48 89 07 mov %rax,(%rdi) 0.00 : 14cde: eb e3 jmp 14cc3 <_dl_next_ld_env_entry+0x23> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016770 <__GI_strlen>: 50.00 : 16770: 48 89 f9 mov %rdi,%rcx 50.00 : 16773: 83 e1 07 and $0x7,%ecx 0.00 : 16776: 48 89 f8 mov %rdi,%rax 0.00 : 16779: 74 15 je 16790 <__GI_strlen+0x20> 0.00 : 1677b: f7 d9 neg %ecx 0.00 : 1677d: 83 c1 08 add $0x8,%ecx 0.00 : 16780: 80 38 00 cmpb $0x0,(%rax) 0.00 : 16783: 0f 84 cc 00 00 00 je 16855 <__GI_strlen+0xe5> 0.00 : 16789: 48 ff c0 inc %rax 0.00 : 1678c: ff c9 dec %ecx 0.00 : 1678e: 75 f0 jne 16780 <__GI_strlen+0x10> 0.00 : 16790: 49 b8 ff fe fe fe fe movabs $0xfefefefefefefeff,%r8 0.00 : 16797: fe fe fe 0.00 : 1679a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 167a0: 48 8b 08 mov (%rax),%rcx 0.00 : 167a3: 48 83 c0 08 add $0x8,%rax 0.00 : 167a7: 4c 89 c2 mov %r8,%rdx 0.00 : 167aa: 48 01 ca add %rcx,%rdx 0.00 : 167ad: 73 61 jae 16810 <__GI_strlen+0xa0> 0.00 : 167af: 48 31 ca xor %rcx,%rdx 0.00 : 167b2: 4c 09 c2 or %r8,%rdx 0.00 : 167b5: 48 ff c2 inc %rdx 0.00 : 167b8: 75 56 jne 16810 <__GI_strlen+0xa0> 0.00 : 167ba: 48 8b 08 mov (%rax),%rcx 0.00 : 167bd: 48 83 c0 08 add $0x8,%rax 0.00 : 167c1: 4c 89 c2 mov %r8,%rdx 0.00 : 167c4: 48 01 ca add %rcx,%rdx 0.00 : 167c7: 73 47 jae 16810 <__GI_strlen+0xa0> 0.00 : 167c9: 48 31 ca xor %rcx,%rdx 0.00 : 167cc: 4c 09 c2 or %r8,%rdx 0.00 : 167cf: 48 ff c2 inc %rdx 0.00 : 167d2: 75 3c jne 16810 <__GI_strlen+0xa0> 0.00 : 167d4: 48 8b 08 mov (%rax),%rcx 0.00 : 167d7: 48 83 c0 08 add $0x8,%rax 0.00 : 167db: 4c 89 c2 mov %r8,%rdx 0.00 : 167de: 48 01 ca add %rcx,%rdx 0.00 : 167e1: 73 2d jae 16810 <__GI_strlen+0xa0> 0.00 : 167e3: 48 31 ca xor %rcx,%rdx 0.00 : 167e6: 4c 09 c2 or %r8,%rdx 0.00 : 167e9: 48 ff c2 inc %rdx 0.00 : 167ec: 75 22 jne 16810 <__GI_strlen+0xa0> 0.00 : 167ee: 48 8b 08 mov (%rax),%rcx 0.00 : 167f1: 48 83 c0 08 add $0x8,%rax 0.00 : 167f5: 4c 89 c2 mov %r8,%rdx 0.00 : 167f8: 48 01 ca add %rcx,%rdx 0.00 : 167fb: 73 13 jae 16810 <__GI_strlen+0xa0> 0.00 : 167fd: 48 31 ca xor %rcx,%rdx 0.00 : 16800: 4c 09 c2 or %r8,%rdx 0.00 : 16803: 48 ff c2 inc %rdx 0.00 : 16806: 74 98 je 167a0 <__GI_strlen+0x30> 0.00 : 16808: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1680f: 00 0.00 : 16810: 48 83 e8 08 sub $0x8,%rax 0.00 : 16814: 84 c9 test %cl,%cl 0.00 : 16816: 74 3d je 16855 <__GI_strlen+0xe5> 0.00 : 16818: 48 ff c0 inc %rax 0.00 : 1681b: 84 ed test %ch,%ch 0.00 : 1681d: 74 36 je 16855 <__GI_strlen+0xe5> 0.00 : 1681f: 48 ff c0 inc %rax 0.00 : 16822: f7 c1 00 00 ff 00 test $0xff0000,%ecx 0.00 : 16828: 74 2b je 16855 <__GI_strlen+0xe5> 0.00 : 1682a: 48 ff c0 inc %rax 0.00 : 1682d: f7 c1 00 00 00 ff test $0xff000000,%ecx 0.00 : 16833: 74 20 je 16855 <__GI_strlen+0xe5> 0.00 : 16835: 48 ff c0 inc %rax 0.00 : 16838: 48 c1 e9 20 shr $0x20,%rcx 0.00 : 1683c: 84 c9 test %cl,%cl 0.00 : 1683e: 74 15 je 16855 <__GI_strlen+0xe5> 0.00 : 16840: 48 ff c0 inc %rax 0.00 : 16843: 84 ed test %ch,%ch 0.00 : 16845: 74 0e je 16855 <__GI_strlen+0xe5> 0.00 : 16847: 48 ff c0 inc %rax 0.00 : 1684a: f7 c1 00 00 ff 00 test $0xff0000,%ecx 0.00 : 16850: 74 03 je 16855 <__GI_strlen+0xe5> 0.00 : 16852: 48 ff c0 inc %rax 0.00 : 16855: 48 29 f8 sub %rdi,%rax Sorted summary for file /bin/gawk ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004219b0 : 0.00 : 4219b0: 41 57 push %r15 0.00 : 4219b2: 41 56 push %r14 0.00 : 4219b4: 41 55 push %r13 0.00 : 4219b6: 41 54 push %r12 0.00 : 4219b8: 49 89 d4 mov %rdx,%r12 0.00 : 4219bb: 55 push %rbp 0.00 : 4219bc: 53 push %rbx 0.00 : 4219bd: 48 81 ec d8 01 00 00 sub $0x1d8,%rsp 0.00 : 4219c4: 48 89 bc 24 80 00 00 mov %rdi,0x80(%rsp) 0.00 : 4219cb: 00 0.00 : 4219cc: bf 00 02 00 00 mov $0x200,%edi 0.00 : 4219d1: 48 89 74 24 78 mov %rsi,0x78(%rsp) 0.00 : 4219d6: 48 89 4c 24 70 mov %rcx,0x70(%rsp) 0.00 : 4219db: e8 c0 51 fe ff callq 406ba0 0.00 : 4219e0: 48 85 c0 test %rax,%rax 0.00 : 4219e3: 48 89 44 24 68 mov %rax,0x68(%rsp) 0.00 : 4219e8: 49 89 c6 mov %rax,%r14 0.00 : 4219eb: 0f 84 64 2c 00 00 je 424655 0.00 : 4219f1: 8b 05 71 df 22 00 mov 0x22df71(%rip),%eax # 64f968 0.00 : 4219f7: 48 8d 8c 24 40 01 00 lea 0x140(%rsp),%rcx 0.00 : 4219fe: 00 0.00 : 4219ff: 48 8d 94 24 40 01 00 lea 0x140(%rsp),%rdx 0.00 : 421a06: 00 0.00 : 421a07: 48 c7 84 24 48 01 00 movq $0x1e,0x148(%rsp) 0.00 : 421a0e: 00 1e 00 00 00 0.00 : 421a13: 48 c7 84 24 78 01 00 movq $0x1e,0x178(%rsp) 0.00 : 421a1a: 00 1e 00 00 00 0.00 : 421a1f: 48 83 c1 10 add $0x10,%rcx 0.00 : 421a23: 48 83 c2 40 add $0x40,%rdx 0.00 : 421a27: 83 c0 01 add $0x1,%eax 0.00 : 421a2a: 48 89 8c 24 40 01 00 mov %rcx,0x140(%rsp) 0.00 : 421a31: 00 0.00 : 421a32: 48 89 94 24 70 01 00 mov %rdx,0x170(%rsp) 0.00 : 421a39: 00 0.00 : 421a3a: 89 05 28 df 22 00 mov %eax,0x22df28(%rip) # 64f968 0.00 : 421a40: 83 e8 01 sub $0x1,%eax 0.00 : 421a43: 0f 8f e7 14 00 00 jg 422f30 0.00 : 421a49: 48 8b 05 20 df 22 00 mov 0x22df20(%rip),%rax # 64f970 0.00 : 421a50: 48 85 c0 test %rax,%rax 0.00 : 421a53: 0f 84 5b 24 00 00 je 423eb4 0.00 : 421a59: 48 8b 6c 24 70 mov 0x70(%rsp),%rbp 0.00 : 421a5e: 48 83 c5 01 add $0x1,%rbp 0.00 : 421a62: 48 39 e8 cmp %rbp,%rax 0.00 : 421a65: 0f 82 14 24 00 00 jb 423e7f 0.00 : 421a6b: 48 c7 84 24 98 00 00 movq $0x0,0x98(%rsp) 0.00 : 421a72: 00 00 00 00 00 0.00 : 421a77: 48 c7 84 24 a0 00 00 movq $0x0,0xa0(%rsp) 0.00 : 421a7e: 00 00 00 00 00 0.00 : 421a83: 48 8b 54 24 70 mov 0x70(%rsp),%rdx 0.00 : 421a88: 48 8b 3d e9 de 22 00 mov 0x22dee9(%rip),%rdi # 64f978 0.00 : 421a8f: 31 f6 xor %esi,%esi 0.00 : 421a91: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 421a95: e8 46 4f fe ff callq 4069e0 0.00 : 421a9a: 4d 85 e4 test %r12,%r12 0.00 : 421a9d: 0f 84 6d 08 00 00 je 422310 0.00 : 421aa3: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 421aa7: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 421aad: 41 bf 08 00 00 00 mov $0x8,%r15d 0.00 : 421ab3: 48 85 ff test %rdi,%rdi 0.00 : 421ab6: 0f 84 05 04 00 00 je 421ec1 0.00 : 421abc: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 421abf: 83 f8 47 cmp $0x47,%eax 0.00 : 421ac2: 0f 84 18 18 00 00 je 4232e0 0.00 : 421ac8: 83 f8 49 cmp $0x49,%eax 0.00 : 421acb: 0f 84 ff 13 00 00 je 422ed0 0.00 : 421ad1: 31 f6 xor %esi,%esi 0.00 : 421ad3: e8 e8 67 01 00 callq 4382c0 0.00 : 421ad8: 48 89 c3 mov %rax,%rbx 0.00 : 421adb: 0f b7 40 3c movzwl 0x3c(%rax),%eax 0.00 : 421adf: 48 8b 2d 92 de 22 00 mov 0x22de92(%rip),%rbp # 64f978 0.00 : 421ae6: a8 06 test $0x6,%al 0.00 : 421ae8: 0f 85 72 10 00 00 jne 422b60 0.00 : 421aee: 48 89 df mov %rbx,%rdi 0.00 : 421af1: e8 6a 35 01 00 callq 435060 0.00 : 421af6: f6 43 3c 02 testb $0x2,0x3c(%rbx) 0.00 : 421afa: 4a 89 44 3d 00 mov %rax,0x0(%rbp,%r15,1) 0.00 : 421aff: 0f 85 77 10 00 00 jne 422b7c 0.00 : 421b05: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 421b0a: 41 83 c5 01 add $0x1,%r13d 0.00 : 421b0e: 4d 85 e4 test %r12,%r12 0.00 : 421b11: 0f 85 99 03 00 00 jne 421eb0 0.00 : 421b17: 49 63 ed movslq %r13d,%rbp 0.00 : 421b1a: 48 39 6c 24 70 cmp %rbp,0x70(%rsp) 0.00 : 421b1f: 48 89 ac 24 08 01 00 mov %rbp,0x108(%rsp) 0.00 : 421b26: 00 0.00 : 421b27: 0f 85 fb 07 00 00 jne 422328 0.00 : 421b2d: 4c 8d 9c 24 40 01 00 lea 0x140(%rsp),%r11 0.00 : 421b34: 00 0.00 : 421b35: 4c 8d a4 24 40 01 00 lea 0x140(%rsp),%r12 0.00 : 421b3c: 00 0.00 : 421b3d: 48 8d 94 24 40 01 00 lea 0x140(%rsp),%rdx 0.00 : 421b44: 00 0.00 : 421b45: 31 c0 xor %eax,%eax 0.00 : 421b47: 4c 8b 6c 24 68 mov 0x68(%rsp),%r13 0.00 : 421b4c: 48 8b ac 24 80 00 00 mov 0x80(%rsp),%rbp 0.00 : 421b53: 00 0.00 : 421b54: 49 83 c3 2e add $0x2e,%r11 0.00 : 421b58: 49 83 c4 10 add $0x10,%r12 0.00 : 421b5c: 48 83 c2 40 add $0x40,%rdx 0.00 : 421b60: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 421b66: 4c 8d 94 24 c8 01 00 lea 0x1c8(%rsp),%r10 0.00 : 421b6d: 00 0.00 : 421b6e: 48 c7 84 24 90 00 00 movq $0x1,0x90(%rsp) 0.00 : 421b75: 00 01 00 00 00 0.00 : 421b7a: 4c 89 ac 24 b0 00 00 mov %r13,0xb0(%rsp) 0.00 : 421b81: 00 0.00 : 421b82: bb 00 02 00 00 mov $0x200,%ebx 0.00 : 421b87: 49 89 ed mov %rbp,%r13 0.00 : 421b8a: 48 c7 84 24 c0 00 00 movq $0x1fe,0xc0(%rsp) 0.00 : 421b91: 00 fe 01 00 00 0.00 : 421b96: c7 84 24 d8 00 00 00 movl $0x0,0xd8(%rsp) 0.00 : 421b9d: 00 00 00 00 0.00 : 421ba1: c7 84 24 ec 00 00 00 movl $0x0,0xec(%rsp) 0.00 : 421ba8: 00 00 00 00 0.00 : 421bac: 4c 89 9c 24 20 01 00 mov %r11,0x120(%rsp) 0.00 : 421bb3: 00 0.00 : 421bb4: 4c 89 54 24 18 mov %r10,0x18(%rsp) 0.00 : 421bb9: 4c 89 64 24 48 mov %r12,0x48(%rsp) 0.00 : 421bbe: 48 89 54 24 40 mov %rdx,0x40(%rsp) 0.00 : 421bc3: 74 4d je 421c12 0.00 : 421bc5: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 421bcb: 41 80 7d 00 25 cmpb $0x25,0x0(%r13) 0.00 : 421bd0: 0f 84 9a 01 00 00 je 421d70 0.00 : 421bd6: 49 83 c5 01 add $0x1,%r13 0.00 : 421bda: 4c 89 b4 24 a8 00 00 mov %r14,0xa8(%rsp) 0.00 : 421be1: 00 0.00 : 421be2: 48 89 9c 24 b8 00 00 mov %rbx,0xb8(%rsp) 0.00 : 421be9: 00 0.00 : 421bea: 4c 89 ac 24 10 01 00 mov %r13,0x110(%rsp) 0.00 : 421bf1: 00 0.00 : 421bf2: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 421bf8: 4c 8b b4 24 a8 00 00 mov 0xa8(%rsp),%r14 0.00 : 421bff: 00 0.00 : 421c00: 48 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%rbx 0.00 : 421c07: 00 0.00 : 421c08: 4c 8b ac 24 10 01 00 mov 0x110(%rsp),%r13 0.00 : 421c0f: 00 0.00 : 421c10: 75 b3 jne 421bc5 0.00 : 421c12: 4c 89 b4 24 a8 00 00 mov %r14,0xa8(%rsp) 0.00 : 421c19: 00 0.00 : 421c1a: 48 89 9c 24 b8 00 00 mov %rbx,0xb8(%rsp) 0.00 : 421c21: 00 0.00 : 421c22: 4c 89 ac 24 10 01 00 mov %r13,0x110(%rsp) 0.00 : 421c29: 00 0.00 : 421c2a: 44 8b 0d cf e6 22 00 mov 0x22e6cf(%rip),%r9d # 650300 0.00 : 421c31: 45 85 c9 test %r9d,%r9d 0.00 : 421c34: 0f 85 74 2b 00 00 jne 4247ae 0.00 : 421c3a: 48 39 ac 24 10 01 00 cmp %rbp,0x110(%rsp) 0.00 : 421c41: 00 0.00 : 421c42: 0f 85 48 0f 00 00 jne 422b90 0.00 : 421c48: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 421c4f: 00 0.00 : 421c50: 48 29 ac 24 b0 00 00 sub %rbp,0xb0(%rsp) 0.00 : 421c57: 00 0.00 : 421c58: ba 02 00 00 00 mov $0x2,%edx 0.00 : 421c5d: 48 8b b4 24 b0 00 00 mov 0xb0(%rsp),%rsi 0.00 : 421c64: 00 0.00 : 421c65: 48 89 ef mov %rbp,%rdi 0.00 : 421c68: e8 33 38 01 00 callq 4354a0 0.00 : 421c6d: 66 83 48 3c 02 orw $0x2,0x3c(%rax) 0.00 : 421c72: 48 83 7c 24 70 01 cmpq $0x1,0x70(%rsp) 0.00 : 421c78: 48 89 c3 mov %rax,%rbx 0.00 : 421c7b: 0f 8e 7f 00 00 00 jle 421d00 0.00 : 421c81: 48 8b 15 f0 dc 22 00 mov 0x22dcf0(%rip),%rdx # 64f978 0.00 : 421c88: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 421c8c: e8 cf 2a 01 00 callq 434760 0.00 : 421c91: 48 83 bc 24 08 01 00 cmpq $0x2,0x108(%rsp) 0.00 : 421c98: 00 02 0.00 : 421c9a: 7e 64 jle 421d00 0.00 : 421c9c: 48 8b 05 d5 dc 22 00 mov 0x22dcd5(%rip),%rax # 64f978 0.00 : 421ca3: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 421ca7: e8 b4 2a 01 00 callq 434760 0.00 : 421cac: 48 83 bc 24 08 01 00 cmpq $0x3,0x108(%rsp) 0.00 : 421cb3: 00 03 0.00 : 421cb5: 7e 49 jle 421d00 0.00 : 421cb7: 4c 8b 3d ba dc 22 00 mov 0x22dcba(%rip),%r15 # 64f978 0.00 : 421cbe: 41 bc 20 00 00 00 mov $0x20,%r12d 0.00 : 421cc4: bd 04 00 00 00 mov $0x4,%ebp 0.00 : 421cc9: 49 8b 7f 18 mov 0x18(%r15),%rdi 0.00 : 421ccd: e8 8e 2a 01 00 callq 434760 0.00 : 421cd2: 48 83 bc 24 08 01 00 cmpq $0x4,0x108(%rsp) 0.00 : 421cd9: 00 04 0.00 : 421cdb: 7e 23 jle 421d00 0.00 : 421cdd: 4c 8b 15 94 dc 22 00 mov 0x22dc94(%rip),%r10 # 64f978 0.00 : 421ce4: 48 83 c5 01 add $0x1,%rbp 0.00 : 421ce8: 4b 8b 3c 22 mov (%r10,%r12,1),%rdi 0.00 : 421cec: 49 83 c4 08 add $0x8,%r12 0.00 : 421cf0: e8 6b 2a 01 00 callq 434760 0.00 : 421cf5: 48 39 ac 24 08 01 00 cmp %rbp,0x108(%rsp) 0.00 : 421cfc: 00 0.00 : 421cfd: 7f de jg 421cdd 0.00 : 421cff: 90 nop 0.00 : 421d00: 8b 3d 62 dc 22 00 mov 0x22dc62(%rip),%edi # 64f968 0.00 : 421d06: 44 8d 67 ff lea -0x1(%rdi),%r12d 0.00 : 421d0a: 83 ef 01 sub $0x1,%edi 0.00 : 421d0d: 44 89 25 54 dc 22 00 mov %r12d,0x22dc54(%rip) # 64f968 0.00 : 421d14: 0f 8f e6 11 00 00 jg 422f00 0.00 : 421d1a: 48 8b bc 24 40 01 00 mov 0x140(%rsp),%rdi 0.00 : 421d21: 00 0.00 : 421d22: 4c 8d 8c 24 40 01 00 lea 0x140(%rsp),%r9 0.00 : 421d29: 00 0.00 : 421d2a: 49 83 c1 10 add $0x10,%r9 0.00 : 421d2e: 4c 39 cf cmp %r9,%rdi 0.00 : 421d31: 0f 85 69 12 00 00 jne 422fa0 0.00 : 421d37: 48 8b bc 24 70 01 00 mov 0x170(%rsp),%rdi 0.00 : 421d3e: 00 0.00 : 421d3f: 4c 8d b4 24 40 01 00 lea 0x140(%rsp),%r14 0.00 : 421d46: 00 0.00 : 421d47: 49 83 c6 40 add $0x40,%r14 0.00 : 421d4b: 4c 39 f7 cmp %r14,%rdi 0.00 : 421d4e: 0f 85 3c 12 00 00 jne 422f90 0.00 : 421d54: 48 81 c4 d8 01 00 00 add $0x1d8,%rsp 0.00 : 421d5b: 48 89 d8 mov %rbx,%rax 0.00 : 421d5e: 5b pop %rbx 0.00 : 421d5f: 5d pop %rbp 0.00 : 421d60: 41 5c pop %r12 0.00 : 421d62: 41 5d pop %r13 0.00 : 421d64: 41 5e pop %r14 0.00 : 421d66: 41 5f pop %r15 0.00 : 421d68: c3 retq 0.00 : 421d69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 421d70: 49 39 ed cmp %rbp,%r13 0.00 : 421d73: 4c 89 b4 24 a8 00 00 mov %r14,0xa8(%rsp) 0.00 : 421d7a: 00 0.00 : 421d7b: 48 89 9c 24 b8 00 00 mov %rbx,0xb8(%rsp) 0.00 : 421d82: 00 0.00 : 421d83: 0f 85 bf 05 00 00 jne 422348 0.00 : 421d89: 45 31 e4 xor %r12d,%r12d 0.00 : 421d8c: 45 31 c9 xor %r9d,%r9d 0.00 : 421d8f: 45 31 c0 xor %r8d,%r8d 0.00 : 421d92: 45 31 ff xor %r15d,%r15d 0.00 : 421d95: 45 31 f6 xor %r14d,%r14d 0.00 : 421d98: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 421d9e: 4d 8d 5d 01 lea 0x1(%r13),%r11 0.00 : 421da2: 48 c7 84 24 c8 01 00 movq $0x0,0x1c8(%rsp) 0.00 : 421da9: 00 00 00 00 00 0.00 : 421dae: 48 c7 84 24 c0 01 00 movq $0x0,0x1c0(%rsp) 0.00 : 421db5: 00 00 00 00 00 0.00 : 421dba: c7 84 24 dc 00 00 00 movl $0x0,0xdc(%rsp) 0.00 : 421dc1: 00 00 00 00 0.00 : 421dc5: c7 84 24 e0 00 00 00 movl $0x0,0xe0(%rsp) 0.00 : 421dcc: 00 00 00 00 0.00 : 421dd0: 48 8d ac 24 c8 01 00 lea 0x1c8(%rsp),%rbp 0.00 : 421dd7: 00 0.00 : 421dd8: 4c 89 9c 24 10 01 00 mov %r11,0x110(%rsp) 0.00 : 421ddf: 00 0.00 : 421de0: c7 84 24 e4 00 00 00 movl $0x0,0xe4(%rsp) 0.00 : 421de7: 00 00 00 00 0.00 : 421deb: c6 84 24 3e 01 00 00 movb $0x0,0x13e(%rsp) 0.00 : 421df2: 00 0.00 : 421df3: c7 84 24 00 01 00 00 movl $0x0,0x100(%rsp) 0.00 : 421dfa: 00 00 00 00 0.00 : 421dfe: 0f 84 12 2c 00 00 je 424a16 0.00 : 421e04: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 421e0a: 49 8d 45 02 lea 0x2(%r13),%rax 0.00 : 421e0e: 41 0f b6 55 01 movzbl 0x1(%r13),%edx 0.00 : 421e13: 48 89 84 24 10 01 00 mov %rax,0x110(%rsp) 0.00 : 421e1a: 00 0.00 : 421e1b: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 421e1e: 0f be ca movsbl %dl,%ecx 0.00 : 421e21: 89 8c 24 d4 00 00 00 mov %ecx,0xd4(%rsp) 0.00 : 421e28: 3c 79 cmp $0x79,%al 0.00 : 421e2a: 0f 86 b0 00 00 00 jbe 421ee0 0.00 : 421e30: 8b 1d ca e4 22 00 mov 0x22e4ca(%rip),%ebx # 650300 0.00 : 421e36: 85 db test %ebx,%ebx 0.00 : 421e38: 0f 84 52 06 00 00 je 422490 0.00 : 421e3e: e8 7d 4f fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 421e43: 48 63 b4 24 d4 00 00 movslq 0xd4(%rsp),%rsi 0.00 : 421e4a: 00 0.00 : 421e4b: 4c 8b 38 mov (%rax),%r15 0.00 : 421e4e: 41 f6 44 77 01 04 testb $0x4,0x1(%r15,%rsi,2) 0.00 : 421e54: 0f 84 36 06 00 00 je 422490 0.00 : 421e5a: be 2d 05 00 00 mov $0x52d,%esi 0.00 : 421e5f: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 421e64: e8 df f4 fe ff callq 411348 0.00 : 421e69: ba 05 00 00 00 mov $0x5,%edx 0.00 : 421e6e: be f8 15 44 00 mov $0x4415f8,%esi 0.00 : 421e73: 31 ff xor %edi,%edi 0.00 : 421e75: 48 8b 2d 54 b7 22 00 mov 0x22b754(%rip),%rbp # 64d5d0 0.00 : 421e7c: e8 9f 51 fe ff callq 407020 0.00 : 421e81: 8b b4 24 d4 00 00 00 mov 0xd4(%rsp),%esi 0.00 : 421e88: 48 89 c7 mov %rax,%rdi 0.00 : 421e8b: 31 c0 xor %eax,%eax 0.00 : 421e8d: ff d5 callq *%rbp 0.00 : 421e8f: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 421e96: 00 0.00 : 421e97: 4c 8b bc 24 b8 00 00 mov 0xb8(%rsp),%r15 0.00 : 421e9e: 00 0.00 : 421e9f: 4c 89 ed mov %r13,%rbp 0.00 : 421ea2: b8 01 00 00 00 mov $0x1,%eax 0.00 : 421ea7: e9 17 04 00 00 jmpq 4222c3 0.00 : 421eac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 421eb0: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 421eb4: 49 83 c7 08 add $0x8,%r15 0.00 : 421eb8: 48 85 ff test %rdi,%rdi 0.00 : 421ebb: 0f 85 fb fb ff ff jne 421abc 0.00 : 421ec1: ba d0 03 44 00 mov $0x4403d0,%edx 0.00 : 421ec6: be bd 02 00 00 mov $0x2bd,%esi 0.00 : 421ecb: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 421ed0: 31 c0 xor %eax,%eax 0.00 : 421ed2: e8 f3 f5 fe ff callq 4114ca 0.00 : 421ed7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 421ede: 00 00 0.00 : 421ee0: 0f b6 d8 movzbl %al,%ebx 0.00 : 421ee3: ff 24 dd e0 16 44 00 jmpq *0x4416e0(,%rbx,8) 0.00 : 421eea: 4d 85 e4 test %r12,%r12 0.00 : 421eed: 0f 85 0f 1e 00 00 jne 423d02 0.00 : 421ef3: 44 8b a4 24 d8 00 00 mov 0xd8(%rsp),%r12d 0.00 : 421efa: 00 0.00 : 421efb: 45 85 e4 test %r12d,%r12d 0.00 : 421efe: 0f 85 3d 24 00 00 jne 424341 0.00 : 421f04: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : 421f0b: 00 0.00 : 421f0c: 48 39 54 24 70 cmp %rdx,0x70(%rsp) 0.00 : 421f11: 0f 86 fa 21 00 00 jbe 424111 0.00 : 421f17: 48 8b 3d 5a da 22 00 mov 0x22da5a(%rip),%rdi # 64f978 0.00 : 421f1e: 4c 8b 14 d7 mov (%rdi,%rdx,8),%r10 0.00 : 421f22: 48 83 c2 01 add $0x1,%rdx 0.00 : 421f26: 48 89 94 24 90 00 00 mov %rdx,0x90(%rsp) 0.00 : 421f2d: 00 0.00 : 421f2e: 4c 89 94 24 18 01 00 mov %r10,0x118(%rsp) 0.00 : 421f35: 00 0.00 : 421f36: 48 8b 8c 24 18 01 00 mov 0x118(%rsp),%rcx 0.00 : 421f3d: 00 0.00 : 421f3e: 0f b7 41 3c movzwl 0x3c(%rcx),%eax 0.00 : 421f42: f6 c4 08 test $0x8,%ah 0.00 : 421f45: 0f 85 cb 26 00 00 jne 424616 0.00 : 421f4b: a8 10 test $0x10,%al 0.00 : 421f4d: 0f 84 55 04 00 00 je 4223a8 0.00 : 421f53: 48 8b ac 24 18 01 00 mov 0x118(%rsp),%rbp 0.00 : 421f5a: 00 0.00 : 421f5b: 8b 45 20 mov 0x20(%rbp),%eax 0.00 : 421f5e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 421f61: 0f 85 30 04 00 00 jne 422397 0.00 : 421f67: 44 8b 9c 24 e4 00 00 mov 0xe4(%rsp),%r11d 0.00 : 421f6e: 00 0.00 : 421f6f: 45 85 db test %r11d,%r11d 0.00 : 421f72: 40 0f 94 c5 sete %bpl 0.00 : 421f76: 48 83 bc 24 c8 01 00 cmpq $0x0,0x1c8(%rsp) 0.00 : 421f7d: 00 00 0.00 : 421f7f: 0f 84 5b 0c 00 00 je 422be0 0.00 : 421f85: 8b 05 7d 2a 23 00 mov 0x232a7d(%rip),%eax # 654a08 0.00 : 421f8b: 48 8b 8c 24 18 01 00 mov 0x118(%rsp),%rcx 0.00 : 421f92: 00 0.00 : 421f93: 4c 8d b4 24 b0 01 00 lea 0x1b0(%rsp),%r14 0.00 : 421f9a: 00 0.00 : 421f9b: 83 f8 01 cmp $0x1,%eax 0.00 : 421f9e: 48 8b 59 10 mov 0x10(%rcx),%rbx 0.00 : 421fa2: 4c 8b 61 08 mov 0x8(%rcx),%r12 0.00 : 421fa6: 48 c7 84 24 b0 01 00 movq $0x0,0x1b0(%rsp) 0.00 : 421fad: 00 00 00 00 00 0.00 : 421fb2: 0f 85 ee 28 00 00 jne 4248a6 0.00 : 421fb8: 49 89 dd mov %rbx,%r13 0.00 : 421fbb: 40 84 ed test %bpl,%bpl 0.00 : 421fbe: 0f 84 44 2f 00 00 je 424f08 0.00 : 421fc4: 4c 89 ac 24 c0 01 00 mov %r13,0x1c0(%rsp) 0.00 : 421fcb: 00 0.00 : 421fcc: e9 2c 0c 00 00 jmpq 422bfd 0.00 : 421fd1: 48 3b 6c 24 18 cmp 0x18(%rsp),%rbp 0.00 : 421fd6: 0f 84 e6 03 00 00 je 4223c2 0.00 : 421fdc: 44 8b 94 24 dc 00 00 mov 0xdc(%rsp),%r10d 0.00 : 421fe3: 00 0.00 : 421fe4: 45 85 d2 test %r10d,%r10d 0.00 : 421fe7: 0f 85 1b 01 00 00 jne 422108 0.00 : 421fed: 48 85 ed test %rbp,%rbp 0.00 : 421ff0: 0f 84 9a 04 00 00 je 422490 0.00 : 421ff6: 48 83 bc 24 c0 01 00 cmpq $0x0,0x1c0(%rsp) 0.00 : 421ffd: 00 00 0.00 : 421fff: 0f 88 fb 03 00 00 js 422400 33.33 : 422005: 8b 84 24 d4 00 00 00 mov 0xd4(%rsp),%eax 0.00 : 42200c: 83 e8 30 sub $0x30,%eax 0.00 : 42200f: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 422015: 48 98 cltq 0.00 : 422017: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 42201b: 0f 84 00 04 00 00 je 422421 0.00 : 422021: 4c 8b 9c 24 10 01 00 mov 0x110(%rsp),%r11 0.00 : 422028: 00 0.00 : 422029: 41 0f b6 0b movzbl (%r11),%ecx 0.00 : 42202d: 80 f9 2f cmp $0x2f,%cl 0.00 : 422030: 0f 8e eb 03 00 00 jle 422421 0.00 : 422036: 80 f9 39 cmp $0x39,%cl 0.00 : 422039: 0f 8e 37 12 00 00 jle 423276 0.00 : 42203f: 48 83 bc 24 c0 01 00 cmpq $0x0,0x1c0(%rsp) 0.00 : 422046: 00 00 0.00 : 422048: 0f 88 ae 29 00 00 js 4249fc 0.00 : 42204e: 48 8d 9c 24 c0 01 00 lea 0x1c0(%rsp),%rbx 0.00 : 422055: 00 0.00 : 422056: 48 39 dd cmp %rbx,%rbp 0.00 : 422059: 0f 85 e6 03 00 00 jne 422445 0.00 : 42205f: 31 ed xor %ebp,%ebp 0.00 : 422061: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : 422064: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 42206a: 0f be f1 movsbl %cl,%esi 0.00 : 42206d: 48 83 84 24 10 01 00 addq $0x1,0x110(%rsp) 0.00 : 422074: 00 01 0.00 : 422076: 89 b4 24 d4 00 00 00 mov %esi,0xd4(%rsp) 0.00 : 42207d: 3c 79 cmp $0x79,%al 0.00 : 42207f: 0f 87 ab fd ff ff ja 421e30 0.00 : 422085: 0f b6 f8 movzbl %al,%edi 0.00 : 422088: ff 24 fd b0 1a 44 00 jmpq *0x441ab0(,%rdi,8) 0.00 : 42208f: 45 85 c0 test %r8d,%r8d 0.00 : 422092: 0f 85 f8 03 00 00 jne 422490 0.00 : 422098: 44 8b 05 61 e2 22 00 mov 0x22e261(%rip),%r8d # 650300 0.00 : 42209f: 45 85 c0 test %r8d,%r8d 0.00 : 4220a2: 74 4b je 4220ef 0.00 : 4220a4: 66 83 3d b6 d8 22 00 cmpw $0x0,0x22d8b6(%rip) # 64f962 0.00 : 4220ab: 00 0.00 : 4220ac: 75 41 jne 4220ef 0.00 : 4220ae: be b2 03 00 00 mov $0x3b2,%esi 0.00 : 4220b3: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 4220b8: 44 89 4c 24 28 mov %r9d,0x28(%rsp) 0.00 : 4220bd: e8 86 f2 fe ff callq 411348 0.00 : 4220c2: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4220c7: be a0 14 44 00 mov $0x4414a0,%esi 0.00 : 4220cc: 31 ff xor %edi,%edi 0.00 : 4220ce: 48 8b 1d fb b4 22 00 mov 0x22b4fb(%rip),%rbx # 64d5d0 0.00 : 4220d5: e8 46 4f fe ff callq 407020 0.00 : 4220da: 48 89 c7 mov %rax,%rdi 0.00 : 4220dd: 31 c0 xor %eax,%eax 0.00 : 4220df: ff d3 callq *%rbx 0.00 : 4220e1: 44 8b 4c 24 28 mov 0x28(%rsp),%r9d 0.00 : 4220e6: 66 c7 05 73 d8 22 00 movw $0x1,0x22d873(%rip) # 64f962 0.00 : 4220ed: 01 00 0.00 : 4220ef: 8b 15 07 e2 22 00 mov 0x22e207(%rip),%edx # 6502fc 0.00 : 4220f5: 85 d2 test %edx,%edx 0.00 : 4220f7: 0f 85 7a 26 00 00 jne 424777 0.00 : 4220fd: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 422103: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 422108: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 42210e: 0f 84 02 29 00 00 je 424a16 0.00 : 422114: 48 8b 94 24 10 01 00 mov 0x110(%rsp),%rdx 0.00 : 42211b: 00 0.00 : 42211c: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 42211f: e9 3d ff ff ff jmpq 422061 0.00 : 422124: 4d 85 e4 test %r12,%r12 0.00 : 422127: 0f 85 b6 1b 00 00 jne 423ce3 0.00 : 42212d: 8b 84 24 d8 00 00 00 mov 0xd8(%rsp),%eax 0.00 : 422134: 85 c0 test %eax,%eax 0.00 : 422136: 0f 85 de 22 00 00 jne 42441a 0.00 : 42213c: 48 8b 6c 24 70 mov 0x70(%rsp),%rbp 0.00 : 422141: 48 39 ac 24 90 00 00 cmp %rbp,0x90(%rsp) 0.00 : 422148: 00 0.00 : 422149: 0f 83 c2 1f 00 00 jae 424111 0.00 : 42214f: 4c 8b a4 24 90 00 00 mov 0x90(%rsp),%r12 0.00 : 422156: 00 0.00 : 422157: 4c 8b 15 1a d8 22 00 mov 0x22d81a(%rip),%r10 # 64f978 0.00 : 42215e: 4b 8b 3c e2 mov (%r10,%r12,8),%rdi 0.00 : 422162: 49 83 c4 01 add $0x1,%r12 0.00 : 422166: 4c 89 a4 24 90 00 00 mov %r12,0x90(%rsp) 0.00 : 42216d: 00 0.00 : 42216e: f6 47 3c 20 testb $0x20,0x3c(%rdi) 0.00 : 422172: 0f 84 c0 22 00 00 je 424438 0.00 : 422178: f2 0f 10 3f movsd (%rdi),%xmm7 0.00 : 42217c: f2 0f 11 bc 24 f8 00 movsd %xmm7,0xf8(%rsp) 0.00 : 422183: 00 00 0.00 : 422185: 44 8b bc 24 e4 00 00 mov 0xe4(%rsp),%r15d 0.00 : 42218c: 00 0.00 : 42218d: 45 85 ff test %r15d,%r15d 0.00 : 422190: 75 0c jne 42219e 0.00 : 422192: 48 c7 84 24 c0 01 00 movq $0x6,0x1c0(%rsp) 0.00 : 422199: 00 06 00 00 00 0.00 : 42219e: 48 8b 84 24 c0 01 00 mov 0x1c0(%rsp),%rax 0.00 : 4221a5: 00 0.00 : 4221a6: 48 03 84 24 c8 01 00 add 0x1c8(%rsp),%rax 0.00 : 4221ad: 00 0.00 : 4221ae: 48 83 c0 09 add $0x9,%rax 0.00 : 4221b2: 48 39 84 24 c0 00 00 cmp %rax,0xc0(%rsp) 0.00 : 4221b9: 00 0.00 : 4221ba: 0f 86 8b 22 00 00 jbe 42444b 0.00 : 4221c0: 48 8b 94 24 40 01 00 mov 0x140(%rsp),%rdx 0.00 : 4221c7: 00 0.00 : 4221c8: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 4221cf: 00 0.00 : 4221d0: 4c 8b bc 24 b8 00 00 mov 0xb8(%rsp),%r15 0.00 : 4221d7: 00 0.00 : 4221d8: c6 02 25 movb $0x25,(%rdx) 0.00 : 4221db: 44 8b 9c 24 dc 00 00 mov 0xdc(%rsp),%r11d 0.00 : 4221e2: 00 0.00 : 4221e3: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 4221e7: 45 85 db test %r11d,%r11d 0.00 : 4221ea: 0f 85 aa 23 00 00 jne 42459a 0.00 : 4221f0: 80 bc 24 3e 01 00 00 cmpb $0x0,0x13e(%rsp) 0.00 : 4221f7: 00 0.00 : 4221f8: 0f 85 37 24 00 00 jne 424635 0.00 : 4221fe: 44 8b 8c 24 e0 00 00 mov 0xe0(%rsp),%r9d 0.00 : 422205: 00 0.00 : 422206: 45 85 c9 test %r9d,%r9d 0.00 : 422209: 0f 85 3a 24 00 00 jne 424649 0.00 : 42220f: 8b 8c 24 00 01 00 00 mov 0x100(%rsp),%ecx 0.00 : 422216: 85 c9 test %ecx,%ecx 0.00 : 422218: 0f 85 82 24 00 00 jne 4246a0 0.00 : 42221e: 45 85 f6 test %r14d,%r14d 0.00 : 422221: 0f 85 85 24 00 00 jne 4246ac 0.00 : 422227: c7 42 01 2a 2e 2a 00 movl $0x2a2e2a,0x1(%rdx) 0.00 : 42222e: 44 0f b6 84 24 d4 00 movzbl 0xd4(%rsp),%r8d 0.00 : 422235: 00 00 0.00 : 422237: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx 0.00 : 42223e: c6 42 05 00 movb $0x0,0x5(%rdx) 0.00 : 422242: b8 01 00 00 00 mov $0x1,%eax 0.00 : 422247: 48 89 dd mov %rbx,%rbp 0.00 : 42224a: 44 88 42 04 mov %r8b,0x4(%rdx) 0.00 : 42224e: 48 8b bc 24 c0 01 00 mov 0x1c0(%rsp),%rdi 0.00 : 422255: 00 0.00 : 422256: ba 01 00 00 00 mov $0x1,%edx 0.00 : 42225b: 44 8b 8c 24 c8 01 00 mov 0x1c8(%rsp),%r9d 0.00 : 422262: 00 0.00 : 422263: 4c 8b 84 24 40 01 00 mov 0x140(%rsp),%r8 0.00 : 42226a: 00 0.00 : 42226b: 48 8b b4 24 c0 00 00 mov 0xc0(%rsp),%rsi 0.00 : 422272: 00 0.00 : 422273: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 42227a: 00 00 0.00 : 42227c: 89 3c 24 mov %edi,(%rsp) 0.00 : 42227f: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 422286: 00 0.00 : 422287: e8 24 4f fe ff callq 4071b0 <__snprintf_chk@plt> 0.00 : 42228c: 48 98 cltq 0.00 : 42228e: 48 3b 84 24 c0 00 00 cmp 0xc0(%rsp),%rax 0.00 : 422295: 00 0.00 : 422296: 0f 83 2a 23 00 00 jae 4245c6 0.00 : 42229c: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 4222a3: 00 0.00 : 4222a4: e8 87 4a fe ff callq 406d30 0.00 : 4222a9: 48 29 84 24 c0 00 00 sub %rax,0xc0(%rsp) 0.00 : 4222b0: 00 0.00 : 4222b1: 48 01 84 24 b0 00 00 add %rax,0xb0(%rsp) 0.00 : 4222b8: 00 0.00 : 4222b9: 48 8b ac 24 10 01 00 mov 0x110(%rsp),%rbp 0.00 : 4222c0: 00 0.00 : 4222c1: 31 c0 xor %eax,%eax 0.00 : 4222c3: 48 89 9c 24 a8 00 00 mov %rbx,0xa8(%rsp) 0.00 : 4222ca: 00 0.00 : 4222cb: 4c 89 bc 24 b8 00 00 mov %r15,0xb8(%rsp) 0.00 : 4222d2: 00 0.00 : 4222d3: e9 1a f9 ff ff jmpq 421bf2 0.00 : 4222d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4222df: 00 0.00 : 4222e0: 48 3b 6c 24 18 cmp 0x18(%rsp),%rbp 0.00 : 4222e5: 0f 85 a5 01 00 00 jne 422490 0.00 : 4222eb: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 4222f1: c7 84 24 e4 00 00 00 movl $0x1,0xe4(%rsp) 0.00 : 4222f8: 01 00 00 00 0.00 : 4222fc: 48 8d ac 24 c0 01 00 lea 0x1c0(%rsp),%rbp 0.00 : 422303: 00 0.00 : 422304: 0f 85 0a fe ff ff jne 422114 0.00 : 42230a: e9 07 27 00 00 jmpq 424a16 0.00 : 42230f: 90 nop 0.00 : 422310: 48 83 7c 24 70 01 cmpq $0x1,0x70(%rsp) 0.00 : 422316: 48 c7 84 24 08 01 00 movq $0x1,0x108(%rsp) 0.00 : 42231d: 00 01 00 00 00 0.00 : 422322: 0f 84 05 f8 ff ff je 421b2d 0.00 : 422328: b9 08 1f 44 00 mov $0x441f08,%ecx 0.00 : 42232d: ba c1 02 00 00 mov $0x2c1,%edx 0.00 : 422332: be d0 03 44 00 mov $0x4403d0,%esi 0.00 : 422337: bf f1 04 44 00 mov $0x4404f1,%edi 0.00 : 42233c: e8 df 47 fe ff callq 406b20 <__assert_fail@plt> 0.00 : 422341: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 422348: 4d 89 ec mov %r13,%r12 0.00 : 42234b: 4c 89 b4 24 a8 00 00 mov %r14,0xa8(%rsp) 0.00 : 422352: 00 0.00 : 422353: 48 89 9c 24 b8 00 00 mov %rbx,0xb8(%rsp) 0.00 : 42235a: 00 0.00 : 42235b: 49 29 ec sub %rbp,%r12 0.00 : 42235e: 4c 39 a4 24 c0 00 00 cmp %r12,0xc0(%rsp) 0.00 : 422365: 00 0.00 : 422366: 0f 82 32 26 00 00 jb 42499e 0.00 : 42236c: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 422373: 00 0.00 : 422374: 48 89 ee mov %rbp,%rsi 0.00 : 422377: 4c 89 e2 mov %r12,%rdx 0.00 : 42237a: 4c 29 ed sub %r13,%rbp 0.00 : 42237d: e8 ce 4b fe ff callq 406f50 0.00 : 422382: 4c 01 a4 24 b0 00 00 add %r12,0xb0(%rsp) 0.00 : 422389: 00 0.00 : 42238a: 48 01 ac 24 c0 00 00 add %rbp,0xc0(%rsp) 0.00 : 422391: 00 0.00 : 422392: e9 f2 f9 ff ff jmpq 421d89 0.00 : 422397: 3b 05 a3 27 23 00 cmp 0x2327a3(%rip),%eax # 654b40 0.00 : 42239d: 0f 84 c4 fb ff ff je 421f67 0.00 : 4223a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4223a8: 48 8b bc 24 18 01 00 mov 0x118(%rsp),%rdi 0.00 : 4223af: 00 0.00 : 4223b0: e8 fb 3c 01 00 callq 4360b0 0.00 : 4223b5: 48 89 84 24 18 01 00 mov %rax,0x118(%rsp) 0.00 : 4223bc: 00 0.00 : 4223bd: e9 a5 fb ff ff jmpq 421f67 0.00 : 4223c2: 8b 8c 24 dc 00 00 00 mov 0xdc(%rsp),%ecx 0.00 : 4223c9: c7 84 24 00 01 00 00 movl $0x1,0x100(%rsp) 0.00 : 4223d0: 01 00 00 00 0.00 : 4223d4: 85 c9 test %ecx,%ecx 0.00 : 4223d6: 0f 85 2c fd ff ff jne 422108 0.00 : 4223dc: 48 85 ed test %rbp,%rbp 0.00 : 4223df: 0f 84 ab 00 00 00 je 422490 0.00 : 4223e5: 48 83 bc 24 c0 01 00 cmpq $0x0,0x1c0(%rsp) 0.00 : 4223ec: 00 00 0.00 : 4223ee: 78 10 js 422400 0.00 : 4223f0: 8b 84 24 d4 00 00 00 mov 0xd4(%rsp),%eax 0.00 : 4223f7: 83 e8 30 sub $0x30,%eax 0.00 : 4223fa: 48 98 cltq 0.00 : 4223fc: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 422400: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 422406: 74 19 je 422421 0.00 : 422408: 48 8b 94 24 10 01 00 mov 0x110(%rsp),%rdx 0.00 : 42240f: 00 0.00 : 422410: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 422413: 80 f9 2f cmp $0x2f,%cl 0.00 : 422416: 7e 09 jle 422421 0.00 : 422418: 80 f9 39 cmp $0x39,%cl 0.00 : 42241b: 0f 8e 55 0e 00 00 jle 423276 0.00 : 422421: 48 83 bc 24 c0 01 00 cmpq $0x0,0x1c0(%rsp) 0.00 : 422428: 00 00 0.00 : 42242a: 0f 88 cc 25 00 00 js 4249fc 0.00 : 422430: 48 8d 9c 24 c0 01 00 lea 0x1c0(%rsp),%rbx 0.00 : 422437: 00 0.00 : 422438: 41 bb 00 00 00 00 mov $0x0,%r11d 0.00 : 42243e: 48 39 dd cmp %rbx,%rbp 0.00 : 422441: 49 0f 44 eb cmove %r11,%rbp 0.00 : 422445: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 42244b: 0f 84 dc 22 00 00 je 42472d 0.00 : 422451: 48 8b 84 24 10 01 00 mov 0x110(%rsp),%rax 0.00 : 422458: 00 0.00 : 422459: 0f b6 08 movzbl (%rax),%ecx 0.00 : 42245c: e9 00 fc ff ff jmpq 422061 0.00 : 422461: 48 83 bc 24 c0 01 00 cmpq $0x0,0x1c0(%rsp) 0.00 : 422468: 00 00 0.00 : 42246a: 78 24 js 422490 0.00 : 42246c: 4c 8d 9c 24 c0 01 00 lea 0x1c0(%rsp),%r11 0.00 : 422473: 00 0.00 : 422474: 4c 39 dd cmp %r11,%rbp 0.00 : 422477: 0f 84 f1 19 00 00 je 423e6e 0.00 : 42247d: 83 84 24 dc 00 00 00 addl $0x1,0xdc(%rsp) 0.00 : 422484: 01 0.00 : 422485: 48 3b 6c 24 18 cmp 0x18(%rsp),%rbp 0.00 : 42248a: 0f 84 78 fc ff ff je 422108 0.00 : 422490: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 422497: 00 0.00 : 422498: 4c 8b bc 24 b8 00 00 mov 0xb8(%rsp),%r15 0.00 : 42249f: 00 0.00 : 4224a0: 4c 89 ed mov %r13,%rbp 0.00 : 4224a3: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4224a8: e9 16 fe ff ff jmpq 4222c3 0.00 : 4224ad: 0f 1f 00 nopl (%rax) 0.00 : 4224b0: 48 c7 84 24 c8 00 00 movq $0x441f40,0xc8(%rsp) 0.00 : 4224b7: 00 40 1f 44 00 0.00 : 4224bc: c6 84 24 3f 01 00 00 movb $0x6f,0x13f(%rsp) 0.00 : 4224c3: 6f 0.00 : 4224c4: 4d 85 e4 test %r12,%r12 0.00 : 4224c7: 0f 85 3c 22 00 00 jne 424709 0.00 : 4224cd: 8b 8c 24 d8 00 00 00 mov 0xd8(%rsp),%ecx 0.00 : 4224d4: 85 c9 test %ecx,%ecx 0.00 : 4224d6: 0f 85 0f 22 00 00 jne 4246eb 0.00 : 4224dc: 4c 8b 44 24 70 mov 0x70(%rsp),%r8 0.00 : 4224e1: 4c 39 84 24 90 00 00 cmp %r8,0x90(%rsp) 0.00 : 4224e8: 00 0.00 : 4224e9: 0f 83 22 1c 00 00 jae 424111 0.00 : 4224ef: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : 4224f6: 00 0.00 : 4224f7: 4c 8b 2d 7a d4 22 00 mov 0x22d47a(%rip),%r13 # 64f978 0.00 : 4224fe: 49 8b 74 d5 00 mov 0x0(%r13,%rdx,8),%rsi 0.00 : 422503: 48 83 c2 01 add $0x1,%rdx 0.00 : 422507: 48 89 94 24 90 00 00 mov %rdx,0x90(%rsp) 0.00 : 42250e: 00 0.00 : 42250f: 48 89 b4 24 18 01 00 mov %rsi,0x118(%rsp) 0.00 : 422516: 00 0.00 : 422517: 48 8b 8c 24 18 01 00 mov 0x118(%rsp),%rcx 0.00 : 42251e: 00 0.00 : 42251f: f6 41 3c 20 testb $0x20,0x3c(%rcx) 0.00 : 422523: 0f 84 31 17 00 00 je 423c5a 0.00 : 422529: f2 44 0f 10 11 movsd (%rcx),%xmm10 0.00 : 42252e: f2 44 0f 11 94 24 f8 movsd %xmm10,0xf8(%rsp) 0.00 : 422535: 00 00 00 0.00 : 422538: 44 8b a4 24 e4 00 00 mov 0xe4(%rsp),%r12d 0.00 : 42253f: 00 0.00 : 422540: 8b 9c 24 e0 00 00 00 mov 0xe0(%rsp),%ebx 0.00 : 422547: 83 84 24 ec 00 00 00 addl $0x8,0xec(%rsp) 0.00 : 42254e: 08 0.00 : 42254f: 45 85 e4 test %r12d,%r12d 0.00 : 422552: 0f 95 44 24 67 setne 0x67(%rsp) 0.00 : 422557: 85 db test %ebx,%ebx 0.00 : 422559: 75 1d jne 422578 0.00 : 42255b: 80 7c 24 67 00 cmpb $0x0,0x67(%rsp) 0.00 : 422560: 0f 84 32 0b 00 00 je 423098 0.00 : 422566: 48 83 bc 24 c0 01 00 cmpq $0x0,0x1c0(%rsp) 0.00 : 42256d: 00 00 0.00 : 42256f: 0f 84 9a 16 00 00 je 423c0f 0.00 : 422575: 0f 1f 00 nopl (%rax) 0.00 : 422578: 66 45 0f 57 e4 xorpd %xmm12,%xmm12 0.00 : 42257d: f2 44 0f 11 64 24 38 movsd %xmm12,0x38(%rsp) 0.00 : 422584: f2 44 0f 10 7c 24 38 movsd 0x38(%rsp),%xmm15 0.00 : 42258b: 66 44 0f 2e bc 24 f8 ucomisd 0xf8(%rsp),%xmm15 0.00 : 422592: 00 00 00 0.00 : 422595: 0f 87 5d 05 00 00 ja 422af8 0.00 : 42259b: f2 0f 10 05 e5 f9 01 movsd 0x1f9e5(%rip),%xmm0 # 441f88 <_IO_stdin_used+0x6468> 0.00 : 4225a2: 00 0.00 : 4225a3: f2 0f 10 8c 24 f8 00 movsd 0xf8(%rsp),%xmm1 0.00 : 4225aa: 00 00 0.00 : 4225ac: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 4225b0: 0f 83 ba 0a 00 00 jae 423070 0.00 : 4225b6: f2 48 0f 2c e9 cvttsd2si %xmm1,%rbp 0.00 : 4225bb: f2 0f 10 ac 24 f8 00 movsd 0xf8(%rsp),%xmm5 0.00 : 4225c2: 00 00 0.00 : 4225c4: 66 0f 2e 6c 24 38 ucomisd 0x38(%rsp),%xmm5 0.00 : 4225ca: 0f 82 93 0c 00 00 jb 423263 0.00 : 4225d0: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 4225d7: 00 00 0.00 : 4225d9: e8 a2 d1 00 00 callq 42f780 0.00 : 4225de: 48 85 ed test %rbp,%rbp 0.00 : 4225e1: 0f 88 15 0d 00 00 js 4232fc 0.00 : 4225e7: f2 48 0f 2a cd cvtsi2sd %rbp,%xmm1 0.00 : 4225ec: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 4225f0: 0f 85 4b 05 00 00 jne 422b41 0.00 : 4225f6: 0f 8a 45 05 00 00 jp 422b41 0.00 : 4225fc: 8b 84 24 dc 00 00 00 mov 0xdc(%rsp),%eax 0.00 : 422603: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 42260a: 00 53 1f 44 00 0.00 : 42260f: 85 c0 test %eax,%eax 0.00 : 422611: 75 2c jne 42263f 0.00 : 422613: 44 8b 8c 24 00 01 00 mov 0x100(%rsp),%r9d 0.00 : 42261a: 00 0.00 : 42261b: 45 85 c9 test %r9d,%r9d 0.00 : 42261e: 0f 84 0d 0d 00 00 je 423331 0.00 : 422624: 8b bc 24 e4 00 00 00 mov 0xe4(%rsp),%edi 0.00 : 42262b: 85 ff test %edi,%edi 0.00 : 42262d: 0f 85 fe 0c 00 00 jne 423331 0.00 : 422633: 48 c7 84 24 f0 00 00 movq $0x441f51,0xf0(%rsp) 0.00 : 42263a: 00 51 1f 44 00 0.00 : 42263f: 4c 63 a4 24 ec 00 00 movslq 0xec(%rsp),%r12 0.00 : 422646: 00 0.00 : 422647: 4c 8b bc 24 20 01 00 mov 0x120(%rsp),%r15 0.00 : 42264e: 00 0.00 : 42264f: c7 84 24 28 01 00 00 movl $0x0,0x128(%rsp) 0.00 : 422656: 00 00 00 00 0.00 : 42265a: c7 84 24 2c 01 00 00 movl $0x0,0x12c(%rsp) 0.00 : 422661: 00 00 00 00 0.00 : 422665: 49 8d 4c 24 ff lea -0x1(%r12),%rcx 0.00 : 42266a: 48 89 4c 24 58 mov %rcx,0x58(%rsp) 0.00 : 42266f: 4c 21 e1 and %r12,%rcx 0.00 : 422672: 48 89 4c 24 50 mov %rcx,0x50(%rsp) 0.00 : 422677: eb 10 jmp 422689 0.00 : 422679: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 422680: 48 85 db test %rbx,%rbx 0.00 : 422683: 0f 84 87 0b 00 00 je 423210 0.00 : 422689: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 422690: 00 0.00 : 422691: 4c 39 fb cmp %r15,%rbx 0.00 : 422694: 0f 84 61 25 00 00 je 424bfb 0.00 : 42269a: 49 83 ef 01 sub $0x1,%r15 0.00 : 42269e: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 4226a4: 0f 85 44 25 00 00 jne 424bee 0.00 : 4226aa: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 4226af: 48 21 ea and %rbp,%rdx 0.00 : 4226b2: 4c 8b ac 24 c8 00 00 mov 0xc8(%rsp),%r13 0.00 : 4226b9: 00 0.00 : 4226ba: 48 89 e8 mov %rbp,%rax 0.00 : 4226bd: 41 0f b6 74 15 00 movzbl 0x0(%r13,%rdx,1),%esi 0.00 : 4226c3: 31 d2 xor %edx,%edx 0.00 : 4226c5: 49 f7 f4 div %r12 0.00 : 4226c8: 41 88 37 mov %sil,(%r15) 0.00 : 4226cb: 83 bc 24 ec 00 00 00 cmpl $0xa,0xec(%rsp) 0.00 : 4226d2: 0a 0.00 : 4226d3: 48 89 c3 mov %rax,%rbx 0.00 : 4226d6: 48 89 c5 mov %rax,%rbp 0.00 : 4226d9: 75 a5 jne 422680 0.00 : 4226db: 45 85 f6 test %r14d,%r14d 0.00 : 4226de: 74 a0 je 422680 0.00 : 4226e0: 4c 63 94 24 28 01 00 movslq 0x128(%rsp),%r10 0.00 : 4226e7: 00 0.00 : 4226e8: 48 8b 15 41 23 23 00 mov 0x232341(%rip),%rdx # 654a30 0.00 : 4226ef: 4c 89 94 24 30 01 00 mov %r10,0x130(%rsp) 0.00 : 4226f6: 00 0.00 : 4226f7: 42 0f b6 04 12 movzbl (%rdx,%r10,1),%eax 0.00 : 4226fc: 84 c0 test %al,%al 0.00 : 4226fe: 74 80 je 422680 0.00 : 422700: 83 84 24 2c 01 00 00 addl $0x1,0x12c(%rsp) 0.00 : 422707: 01 0.00 : 422708: 44 0f be d8 movsbl %al,%r11d 0.00 : 42270c: 44 39 9c 24 2c 01 00 cmp %r11d,0x12c(%rsp) 0.00 : 422713: 00 0.00 : 422714: 0f 85 66 ff ff ff jne 422680 0.00 : 42271a: 48 85 db test %rbx,%rbx 0.00 : 42271d: 74 2a je 422749 0.00 : 42271f: 4c 8b ac 24 40 01 00 mov 0x140(%rsp),%r13 0.00 : 422726: 00 0.00 : 422727: 4d 39 fd cmp %r15,%r13 0.00 : 42272a: 0f 84 f9 20 00 00 je 424829 0.00 : 422730: 4c 8b 05 f1 22 23 00 mov 0x2322f1(%rip),%r8 # 654a28 0.00 : 422737: 49 83 ef 01 sub $0x1,%r15 0.00 : 42273b: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 42273f: 41 88 0f mov %cl,(%r15) 0.00 : 422742: 48 8b 15 e7 22 23 00 mov 0x2322e7(%rip),%rdx # 654a30 0.00 : 422749: 48 8b b4 24 30 01 00 mov 0x130(%rsp),%rsi 0.00 : 422750: 00 0.00 : 422751: 0f b6 44 32 01 movzbl 0x1(%rdx,%rsi,1),%eax 0.00 : 422756: 84 c0 test %al,%al 0.00 : 422758: 74 10 je 42276a 0.00 : 42275a: 3c 7f cmp $0x7f,%al 0.00 : 42275c: 0f 84 3c 21 00 00 je 42489e 0.00 : 422762: 83 84 24 28 01 00 00 addl $0x1,0x128(%rsp) 0.00 : 422769: 01 0.00 : 42276a: c7 84 24 2c 01 00 00 movl $0x0,0x12c(%rsp) 0.00 : 422771: 00 00 00 00 0.00 : 422775: e9 06 ff ff ff jmpq 422680 0.00 : 42277a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 422780: 4d 85 e4 test %r12,%r12 0.00 : 422783: 0f 85 33 15 00 00 jne 423cbc 0.00 : 422789: 8b b4 24 d8 00 00 00 mov 0xd8(%rsp),%esi 0.00 : 422790: 85 f6 test %esi,%esi 0.00 : 422792: 0f 85 4d 14 00 00 jne 423be5 0.00 : 422798: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 42279f: 00 0.00 : 4227a0: 48 39 4c 24 70 cmp %rcx,0x70(%rsp) 0.00 : 4227a5: 0f 86 66 19 00 00 jbe 424111 0.00 : 4227ab: 4c 8b 2d c6 d1 22 00 mov 0x22d1c6(%rip),%r13 # 64f978 0.00 : 4227b2: 49 8b 5c cd 00 mov 0x0(%r13,%rcx,8),%rbx 0.00 : 4227b7: 48 83 c1 01 add $0x1,%rcx 0.00 : 4227bb: 48 89 8c 24 90 00 00 mov %rcx,0x90(%rsp) 0.00 : 4227c2: 00 0.00 : 4227c3: 48 89 9c 24 18 01 00 mov %rbx,0x118(%rsp) 0.00 : 4227ca: 00 0.00 : 4227cb: 48 8b 84 24 18 01 00 mov 0x118(%rsp),%rax 0.00 : 4227d2: 00 0.00 : 4227d3: f6 40 3c 20 testb $0x20,0x3c(%rax) 0.00 : 4227d7: 0f 84 ed 13 00 00 je 423bca 0.00 : 4227dd: f2 0f 10 00 movsd (%rax),%xmm0 0.00 : 4227e1: f2 0f 11 84 24 f8 00 movsd %xmm0,0xf8(%rsp) 0.00 : 4227e8: 00 00 0.00 : 4227ea: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 4227f1: 00 00 0.00 : 4227f3: e8 f8 45 fe ff callq 406df0 <__isnan@plt> 0.00 : 4227f8: 85 c0 test %eax,%eax 0.00 : 4227fa: 0f 85 41 03 00 00 jne 422b41 0.00 : 422800: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 422807: 00 00 0.00 : 422809: e8 c2 46 fe ff callq 406ed0 <__isinf@plt> 0.00 : 42280e: 85 c0 test %eax,%eax 0.00 : 422810: 0f 85 2b 03 00 00 jne 422b41 0.00 : 422816: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 42281a: f2 0f 10 8c 24 f8 00 movsd 0xf8(%rsp),%xmm1 0.00 : 422821: 00 00 0.00 : 422823: 66 0f 2e ca ucomisd %xmm2,%xmm1 0.00 : 422827: 0f 82 93 0a 00 00 jb 4232c0 0.00 : 42282d: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 422834: 00 00 0.00 : 422836: e8 45 cf 00 00 callq 42f780 0.00 : 42283b: f2 0f 11 84 24 f8 00 movsd %xmm0,0xf8(%rsp) 0.00 : 422842: 00 00 0.00 : 422844: 44 8b a4 24 e4 00 00 mov 0xe4(%rsp),%r12d 0.00 : 42284b: 00 0.00 : 42284c: 45 85 e4 test %r12d,%r12d 0.00 : 42284f: 0f 85 1a 12 00 00 jne 423a6f 0.00 : 422855: 66 0f 57 ed xorpd %xmm5,%xmm5 0.00 : 422859: 66 0f 2e ac 24 f8 00 ucomisd 0xf8(%rsp),%xmm5 0.00 : 422860: 00 00 0.00 : 422862: 0f 87 48 08 00 00 ja 4230b0 0.00 : 422868: 66 45 0f 57 c9 xorpd %xmm9,%xmm9 0.00 : 42286d: c7 84 24 e8 00 00 00 movl $0x0,0xe8(%rsp) 0.00 : 422874: 00 00 00 00 0.00 : 422878: f2 44 0f 10 84 24 f8 movsd 0xf8(%rsp),%xmm8 0.00 : 42287f: 00 00 00 0.00 : 422882: 66 45 0f 2e c1 ucomisd %xmm9,%xmm8 0.00 : 422887: 0f 84 b1 12 00 00 je 423b3e 0.00 : 42288d: 48 8b b4 24 78 01 00 mov 0x178(%rsp),%rsi 0.00 : 422894: 00 0.00 : 422895: 48 8b bc 24 70 01 00 mov 0x170(%rsp),%rdi 0.00 : 42289c: 00 0.00 : 42289d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4228a2: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 4228a9: 00 00 0.00 : 4228ab: 41 b8 23 05 44 00 mov $0x440523,%r8d 0.00 : 4228b1: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx 0.00 : 4228b8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4228bd: e8 ee 48 fe ff callq 4071b0 <__snprintf_chk@plt> 0.00 : 4228c2: 48 63 d0 movslq %eax,%rdx 0.00 : 4228c5: 89 c5 mov %eax,%ebp 0.00 : 4228c7: 48 8b 84 24 78 01 00 mov 0x178(%rsp),%rax 0.00 : 4228ce: 00 0.00 : 4228cf: 48 39 c2 cmp %rax,%rdx 0.00 : 4228d2: 0f 83 d8 06 00 00 jae 422fb0 0.00 : 4228d8: 85 ed test %ebp,%ebp 0.00 : 4228da: 0f 8e 61 02 00 00 jle 422b41 0.00 : 4228e0: 4c 8d 62 ff lea -0x1(%rdx),%r12 0.00 : 4228e4: 4c 03 a4 24 70 01 00 add 0x170(%rsp),%r12 0.00 : 4228eb: 00 0.00 : 4228ec: 48 8b 9c 24 20 01 00 mov 0x120(%rsp),%rbx 0.00 : 4228f3: 00 0.00 : 4228f4: c7 84 24 04 01 00 00 movl $0x0,0x104(%rsp) 0.00 : 4228fb: 00 00 00 00 0.00 : 4228ff: 45 31 ff xor %r15d,%r15d 0.00 : 422902: 8d 55 ff lea -0x1(%rbp),%edx 0.00 : 422905: 89 d1 mov %edx,%ecx 0.00 : 422907: 83 e1 03 and $0x3,%ecx 0.00 : 42290a: 0f 84 1c 01 00 00 je 422a2c 0.00 : 422910: 48 39 9c 24 40 01 00 cmp %rbx,0x140(%rsp) 0.00 : 422917: 00 0.00 : 422918: 0f 84 1c 01 00 00 je 422a3a 0.00 : 42291e: 45 0f b6 04 24 movzbl (%r12),%r8d 0.00 : 422923: 48 83 eb 01 sub $0x1,%rbx 0.00 : 422927: 45 85 f6 test %r14d,%r14d 0.00 : 42292a: 48 8b bc 24 20 01 00 mov 0x120(%rsp),%rdi 0.00 : 422931: 00 0.00 : 422932: 89 d5 mov %edx,%ebp 0.00 : 422934: 44 88 03 mov %r8b,(%rbx) 0.00 : 422937: 0f 85 77 11 00 00 jne 423ab4 0.00 : 42293d: 85 d2 test %edx,%edx 0.00 : 42293f: 0f 8e 17 04 00 00 jle 422d5c 0.00 : 422945: 49 83 ec 01 sub $0x1,%r12 0.00 : 422949: 83 f9 01 cmp $0x1,%ecx 0.00 : 42294c: 0f 84 da 00 00 00 je 422a2c 0.00 : 422952: 83 f9 02 cmp $0x2,%ecx 0.00 : 422955: 74 21 je 422978 0.00 : 422957: 48 39 9c 24 40 01 00 cmp %rbx,0x140(%rsp) 0.00 : 42295e: 00 0.00 : 42295f: 0f 84 d5 00 00 00 je 422a3a 0.00 : 422965: 41 0f b6 34 24 movzbl (%r12),%esi 0.00 : 42296a: 48 83 eb 01 sub $0x1,%rbx 0.00 : 42296e: 83 ed 01 sub $0x1,%ebp 0.00 : 422971: 49 83 ec 01 sub $0x1,%r12 0.00 : 422975: 40 88 33 mov %sil,(%rbx) 0.00 : 422978: 48 39 9c 24 40 01 00 cmp %rbx,0x140(%rsp) 0.00 : 42297f: 00 0.00 : 422980: 0f 84 b4 00 00 00 je 422a3a 0.00 : 422986: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 42298b: 48 83 eb 01 sub $0x1,%rbx 0.00 : 42298f: 83 ed 01 sub $0x1,%ebp 0.00 : 422992: 49 83 ec 01 sub $0x1,%r12 0.00 : 422996: 88 13 mov %dl,(%rbx) 0.00 : 422998: e9 8f 00 00 00 jmpq 422a2c 0.00 : 42299d: 0f 1f 00 nopl (%rax) 0.00 : 4229a0: 45 0f b6 1c 24 movzbl (%r12),%r11d 0.00 : 4229a5: 48 8d 4b ff lea -0x1(%rbx),%rcx 0.00 : 4229a9: 8d 75 ff lea -0x1(%rbp),%esi 0.00 : 4229ac: 45 85 f6 test %r14d,%r14d 0.00 : 4229af: 48 8b bc 24 20 01 00 mov 0x120(%rsp),%rdi 0.00 : 4229b6: 00 0.00 : 4229b7: 48 89 cb mov %rcx,%rbx 0.00 : 4229ba: 89 f5 mov %esi,%ebp 0.00 : 4229bc: 44 88 19 mov %r11b,(%rcx) 0.00 : 4229bf: 0f 85 ef 10 00 00 jne 423ab4 0.00 : 4229c5: 85 f6 test %esi,%esi 0.00 : 4229c7: 0f 8e 8f 03 00 00 jle 422d5c 0.00 : 4229cd: 48 39 8c 24 40 01 00 cmp %rcx,0x140(%rsp) 0.00 : 4229d4: 00 0.00 : 4229d5: 49 8d 54 24 ff lea -0x1(%r12),%rdx 0.00 : 4229da: 49 89 d4 mov %rdx,%r12 0.00 : 4229dd: 74 5b je 422a3a 0.00 : 4229df: 44 0f b6 12 movzbl (%rdx),%r10d 0.00 : 4229e3: 48 83 eb 01 sub $0x1,%rbx 0.00 : 4229e7: 83 ed 01 sub $0x1,%ebp 0.00 : 4229ea: 49 83 ec 01 sub $0x1,%r12 0.00 : 4229ee: 44 88 13 mov %r10b,(%rbx) 0.00 : 4229f1: 48 39 9c 24 40 01 00 cmp %rbx,0x140(%rsp) 0.00 : 4229f8: 00 0.00 : 4229f9: 74 3f je 422a3a 0.00 : 4229fb: 41 0f b6 2c 24 movzbl (%r12),%ebp 0.00 : 422a00: 48 8d 59 fe lea -0x2(%rcx),%rbx 0.00 : 422a04: 4c 8d 62 fe lea -0x2(%rdx),%r12 0.00 : 422a08: 40 88 69 fe mov %bpl,-0x2(%rcx) 0.00 : 422a0c: 48 39 9c 24 40 01 00 cmp %rbx,0x140(%rsp) 0.00 : 422a13: 00 0.00 : 422a14: 8d 6e fe lea -0x2(%rsi),%ebp 0.00 : 422a17: 74 21 je 422a3a 0.00 : 422a19: 0f b6 7a fe movzbl -0x2(%rdx),%edi 0.00 : 422a1d: 48 8d 59 fd lea -0x3(%rcx),%rbx 0.00 : 422a21: 8d 6e fd lea -0x3(%rsi),%ebp 0.00 : 422a24: 4c 8d 62 fd lea -0x3(%rdx),%r12 0.00 : 422a28: 40 88 79 fd mov %dil,-0x3(%rcx) 0.00 : 422a2c: 48 39 9c 24 40 01 00 cmp %rbx,0x140(%rsp) 0.00 : 422a33: 00 0.00 : 422a34: 0f 85 66 ff ff ff jne 4229a0 0.00 : 422a3a: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 422a41: 00 0.00 : 422a42: 48 01 ff add %rdi,%rdi 0.00 : 422a45: e8 56 41 fe ff callq 406ba0 0.00 : 422a4a: 48 85 c0 test %rax,%rax 0.00 : 422a4d: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 422a54: 00 0.00 : 422a55: 0f 84 cf 12 00 00 je 423d2a 0.00 : 422a5b: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 422a62: 00 0.00 : 422a63: 48 89 de mov %rbx,%rsi 0.00 : 422a66: 4c 8d 2c 10 lea (%rax,%rdx,1),%r13 0.00 : 422a6a: 4c 89 ef mov %r13,%rdi 0.00 : 422a6d: e8 de 44 fe ff callq 406f50 0.00 : 422a72: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 422a79: 00 0.00 : 422a7a: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 422a7f: 74 08 je 422a89 0.00 : 422a81: 48 89 df mov %rbx,%rdi 0.00 : 422a84: e8 97 42 fe ff callq 406d20 0.00 : 422a89: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 422a8e: 48 8b bc 24 40 01 00 mov 0x140(%rsp),%rdi 0.00 : 422a95: 00 0.00 : 422a96: 83 ed 01 sub $0x1,%ebp 0.00 : 422a99: 48 03 bc 24 48 01 00 add 0x148(%rsp),%rdi 0.00 : 422aa0: 00 0.00 : 422aa1: 45 85 f6 test %r14d,%r14d 0.00 : 422aa4: 49 8d 5d ff lea -0x1(%r13),%rbx 0.00 : 422aa8: 41 88 45 ff mov %al,-0x1(%r13) 0.00 : 422aac: 0f 85 02 10 00 00 jne 423ab4 0.00 : 422ab2: 85 ed test %ebp,%ebp 0.00 : 422ab4: 0f 8e a2 02 00 00 jle 422d5c 0.00 : 422aba: 49 83 ec 01 sub $0x1,%r12 0.00 : 422abe: 48 89 bc 24 20 01 00 mov %rdi,0x120(%rsp) 0.00 : 422ac5: 00 0.00 : 422ac6: e9 37 fe ff ff jmpq 422902 0.00 : 422acb: 48 c7 84 24 c8 00 00 movq $0x441f40,0xc8(%rsp) 0.00 : 422ad2: 00 40 1f 44 00 0.00 : 422ad7: c6 84 24 3f 01 00 00 movb $0x78,0x13f(%rsp) 0.00 : 422ade: 78 0.00 : 422adf: 83 84 24 ec 00 00 00 addl $0x6,0xec(%rsp) 0.00 : 422ae6: 06 0.00 : 422ae7: 83 84 24 ec 00 00 00 addl $0x2,0xec(%rsp) 0.00 : 422aee: 02 0.00 : 422aef: e9 d0 f9 ff ff jmpq 4224c4 0.00 : 422af4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 422af8: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 422aff: 00 00 0.00 : 422b01: f2 0f 10 94 24 f8 00 movsd 0xf8(%rsp),%xmm2 0.00 : 422b08: 00 00 0.00 : 422b0a: 66 0f 2e 44 24 38 ucomisd 0x38(%rsp),%xmm0 0.00 : 422b10: f2 48 0f 2c da cvttsd2si %xmm2,%rbx 0.00 : 422b15: 0f 82 ff 07 00 00 jb 42331a 0.00 : 422b1b: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 422b22: 00 00 0.00 : 422b24: e8 57 cc 00 00 callq 42f780 0.00 : 422b29: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 422b2d: f2 48 0f 2a db cvtsi2sd %rbx,%xmm3 0.00 : 422b32: 48 89 dd mov %rbx,%rbp 0.00 : 422b35: 66 0f 2e d9 ucomisd %xmm1,%xmm3 0.00 : 422b39: 7a 06 jp 422b41 0.00 : 422b3b: 0f 84 bb fa ff ff je 4225fc 0.00 : 422b41: 8b 1d b9 d7 22 00 mov 0x22d7b9(%rip),%ebx # 650300 0.00 : 422b47: 85 db test %ebx,%ebx 0.00 : 422b49: 0f 85 26 11 00 00 jne 423c75 0.00 : 422b4f: c7 84 24 d4 00 00 00 movl $0x67,0xd4(%rsp) 0.00 : 422b56: 67 00 00 00 0.00 : 422b5a: e9 26 f6 ff ff jmpq 422185 0.00 : 422b5f: 90 nop 0.00 : 422b60: 83 e0 fd and $0xfffffffd,%eax 0.00 : 422b63: 83 c8 01 or $0x1,%eax 0.00 : 422b66: 66 89 43 3c mov %ax,0x3c(%rbx) 0.00 : 422b6a: 48 89 d8 mov %rbx,%rax 0.00 : 422b6d: f6 43 3c 02 testb $0x2,0x3c(%rbx) 0.00 : 422b71: 4a 89 44 3d 00 mov %rax,0x0(%rbp,%r15,1) 0.00 : 422b76: 0f 84 89 ef ff ff je 421b05 0.00 : 422b7c: 48 89 df mov %rbx,%rdi 0.00 : 422b7f: e8 dc 1b 01 00 callq 434760 0.00 : 422b84: e9 7c ef ff ff jmpq 421b05 0.00 : 422b89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 422b90: 48 8b 9c 24 10 01 00 mov 0x110(%rsp),%rbx 0.00 : 422b97: 00 0.00 : 422b98: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : 422b9f: 00 0.00 : 422ba0: 48 29 eb sub %rbp,%rbx 0.00 : 422ba3: 48 39 9c 24 c0 00 00 cmp %rbx,0xc0(%rsp) 0.00 : 422baa: 00 0.00 : 422bab: 0f 82 a7 07 00 00 jb 423358 0.00 : 422bb1: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 422bb8: 00 0.00 : 422bb9: 48 89 da mov %rbx,%rdx 0.00 : 422bbc: 48 89 ee mov %rbp,%rsi 0.00 : 422bbf: e8 8c 43 fe ff callq 406f50 0.00 : 422bc4: 48 01 9c 24 b0 00 00 add %rbx,0xb0(%rsp) 0.00 : 422bcb: 00 0.00 : 422bcc: 4c 89 a4 24 a8 00 00 mov %r12,0xa8(%rsp) 0.00 : 422bd3: 00 0.00 : 422bd4: e9 6f f0 ff ff jmpq 421c48 0.00 : 422bd9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 422be0: 40 84 ed test %bpl,%bpl 0.00 : 422be3: 0f 84 9c f3 ff ff je 421f85 0.00 : 422be9: 4c 8b 8c 24 18 01 00 mov 0x118(%rsp),%r9 0.00 : 422bf0: 00 0.00 : 422bf1: 49 8b 41 10 mov 0x10(%r9),%rax 0.00 : 422bf5: 48 89 84 24 c0 01 00 mov %rax,0x1c0(%rsp) 0.00 : 422bfc: 00 0.00 : 422bfd: 4c 8b 84 24 18 01 00 mov 0x118(%rsp),%r8 0.00 : 422c04: 00 0.00 : 422c05: 4d 8b 78 08 mov 0x8(%r8),%r15 0.00 : 422c09: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 422c10: 00 53 1f 44 00 0.00 : 422c15: 44 8b ac 24 dc 00 00 mov 0xdc(%rsp),%r13d 0.00 : 422c1c: 00 0.00 : 422c1d: 45 85 ed test %r13d,%r13d 0.00 : 422c20: 75 16 jne 422c38 0.00 : 422c22: 4c 8b 94 24 c0 01 00 mov 0x1c0(%rsp),%r10 0.00 : 422c29: 00 0.00 : 422c2a: 4c 39 94 24 c8 01 00 cmp %r10,0x1c8(%rsp) 0.00 : 422c31: 00 0.00 : 422c32: 0f 8f 50 05 00 00 jg 423188 0.00 : 422c38: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 422c3f: 00 0.00 : 422c40: 4c 8b a4 24 b8 00 00 mov 0xb8(%rsp),%r12 0.00 : 422c47: 00 0.00 : 422c48: 48 83 bc 24 c8 01 00 cmpq $0x0,0x1c8(%rsp) 0.00 : 422c4f: 00 00 0.00 : 422c51: 48 8b 84 24 c0 01 00 mov 0x1c0(%rsp),%rax 0.00 : 422c58: 00 0.00 : 422c59: 48 89 c3 mov %rax,%rbx 0.00 : 422c5c: 0f 84 e6 00 00 00 je 422d48 0.00 : 422c62: 83 3d 9f 1d 23 00 01 cmpl $0x1,0x231d9f(%rip) # 654a08 0.00 : 422c69: 0f 8f ac 07 00 00 jg 42341b 0.00 : 422c6f: 48 85 db test %rbx,%rbx 0.00 : 422c72: 74 3d je 422cb1 0.00 : 422c74: 48 39 9c 24 c0 00 00 cmp %rbx,0xc0(%rsp) 0.00 : 422c7b: 00 0.00 : 422c7c: 49 89 ed mov %rbp,%r13 0.00 : 422c7f: 4d 89 e6 mov %r12,%r14 0.00 : 422c82: 0f 82 43 07 00 00 jb 4233cb 0.00 : 422c88: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 422c8f: 00 0.00 : 422c90: 48 89 da mov %rbx,%rdx 0.00 : 422c93: 4c 89 fe mov %r15,%rsi 0.00 : 422c96: 4c 89 ed mov %r13,%rbp 0.00 : 422c99: 4d 89 f4 mov %r14,%r12 0.00 : 422c9c: e8 af 42 fe ff callq 406f50 0.00 : 422ca1: 48 01 9c 24 b0 00 00 add %rbx,0xb0(%rsp) 0.00 : 422ca8: 00 0.00 : 422ca9: 48 29 9c 24 c0 00 00 sub %rbx,0xc0(%rsp) 0.00 : 422cb0: 00 0.00 : 422cb1: 4c 8b bc 24 c8 01 00 mov 0x1c8(%rsp),%r15 0.00 : 422cb8: 00 0.00 : 422cb9: 4c 39 bc 24 c0 01 00 cmp %r15,0x1c0(%rsp) 0.00 : 422cc0: 00 0.00 : 422cc1: 7c 1b jl 422cde 0.00 : 422cc3: 48 89 eb mov %rbp,%rbx 0.00 : 422cc6: 4d 89 e7 mov %r12,%r15 0.00 : 422cc9: 48 8b ac 24 10 01 00 mov 0x110(%rsp),%rbp 0.00 : 422cd0: 00 0.00 : 422cd1: 31 c0 xor %eax,%eax 0.00 : 422cd3: e9 eb f5 ff ff jmpq 4222c3 0.00 : 422cd8: 48 89 dd mov %rbx,%rbp 0.00 : 422cdb: 4d 89 fc mov %r15,%r12 0.00 : 422cde: 48 83 bc 24 c0 00 00 cmpq $0x0,0xc0(%rsp) 0.00 : 422ce5: 00 00 0.00 : 422ce7: 48 89 eb mov %rbp,%rbx 0.00 : 422cea: 4d 89 e7 mov %r12,%r15 0.00 : 422ced: 0f 84 6c 1c 00 00 je 42495f 0.00 : 422cf3: 48 8b b4 24 f0 00 00 mov 0xf0(%rsp),%rsi 0.00 : 422cfa: 00 0.00 : 422cfb: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 422d02: 00 0.00 : 422d03: 44 0f b6 06 movzbl (%rsi),%r8d 0.00 : 422d07: 44 88 07 mov %r8b,(%rdi) 0.00 : 422d0a: 48 8b 8c 24 c8 01 00 mov 0x1c8(%rsp),%rcx 0.00 : 422d11: 00 0.00 : 422d12: 48 83 c7 01 add $0x1,%rdi 0.00 : 422d16: 48 83 ac 24 c0 00 00 subq $0x1,0xc0(%rsp) 0.00 : 422d1d: 00 01 0.00 : 422d1f: 48 89 bc 24 b0 00 00 mov %rdi,0xb0(%rsp) 0.00 : 422d26: 00 0.00 : 422d27: 48 83 e9 01 sub $0x1,%rcx 0.00 : 422d2b: 48 39 8c 24 c0 01 00 cmp %rcx,0x1c0(%rsp) 0.00 : 422d32: 00 0.00 : 422d33: 48 89 8c 24 c8 01 00 mov %rcx,0x1c8(%rsp) 0.00 : 422d3a: 00 0.00 : 422d3b: 0f 8d 78 f5 ff ff jge 4222b9 0.00 : 422d41: eb 95 jmp 422cd8 0.00 : 422d43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 422d48: 8b b4 24 e4 00 00 00 mov 0xe4(%rsp),%esi 0.00 : 422d4f: 85 f6 test %esi,%esi 0.00 : 422d51: 0f 84 18 ff ff ff je 422c6f 0.00 : 422d57: e9 06 ff ff ff jmpq 422c62 0.00 : 422d5c: 49 89 df mov %rbx,%r15 0.00 : 422d5f: 8b 9c 24 e4 00 00 00 mov 0xe4(%rsp),%ebx 0.00 : 422d66: 48 89 bc 24 20 01 00 mov %rdi,0x120(%rsp) 0.00 : 422d6d: 00 0.00 : 422d6e: 85 db test %ebx,%ebx 0.00 : 422d70: 0f 85 04 20 00 00 jne 424d7a 0.00 : 422d76: 8b ac 24 e8 00 00 00 mov 0xe8(%rsp),%ebp 0.00 : 422d7d: 85 ed test %ebp,%ebp 0.00 : 422d7f: 0f 85 5b 03 00 00 jne 4230e0 0.00 : 422d85: 80 bc 24 3e 01 00 00 cmpb $0x0,0x13e(%rsp) 0.00 : 422d8c: 00 0.00 : 422d8d: 0f 85 c1 1f 00 00 jne 424d54 0.00 : 422d93: 8b 94 24 dc 00 00 00 mov 0xdc(%rsp),%edx 0.00 : 422d9a: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 422da1: 00 53 1f 44 00 0.00 : 422da6: 85 d2 test %edx,%edx 0.00 : 422da8: 75 42 jne 422dec 0.00 : 422daa: 8b b4 24 00 01 00 00 mov 0x100(%rsp),%esi 0.00 : 422db1: 85 f6 test %esi,%esi 0.00 : 422db3: 74 11 je 422dc6 0.00 : 422db5: 44 8b ac 24 e4 00 00 mov 0xe4(%rsp),%r13d 0.00 : 422dbc: 00 0.00 : 422dbd: 45 85 ed test %r13d,%r13d 0.00 : 422dc0: 0f 84 7d 1f 00 00 je 424d43 0.00 : 422dc6: 48 83 bc 24 c8 01 00 cmpq $0x0,0x1c8(%rsp) 0.00 : 422dcd: 00 00 0.00 : 422dcf: 75 0f jne 422de0 0.00 : 422dd1: 8b 9c 24 e4 00 00 00 mov 0xe4(%rsp),%ebx 0.00 : 422dd8: 85 db test %ebx,%ebx 0.00 : 422dda: 0f 85 63 1f 00 00 jne 424d43 0.00 : 422de0: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 422de7: 00 53 1f 44 00 0.00 : 422dec: 48 8b 84 24 c0 01 00 mov 0x1c0(%rsp),%rax 0.00 : 422df3: 00 0.00 : 422df4: 48 3b 84 24 c8 01 00 cmp 0x1c8(%rsp),%rax 0.00 : 422dfb: 00 0.00 : 422dfc: 0f 8f 34 1f 00 00 jg 424d36 0.00 : 422e02: 4c 8b a4 24 20 01 00 mov 0x120(%rsp),%r12 0.00 : 422e09: 00 0.00 : 422e0a: 4d 29 fc sub %r15,%r12 0.00 : 422e0d: 4c 3b a4 24 c8 01 00 cmp 0x1c8(%rsp),%r12 0.00 : 422e14: 00 0.00 : 422e15: 4c 89 a4 24 c0 01 00 mov %r12,0x1c0(%rsp) 0.00 : 422e1c: 00 0.00 : 422e1d: 0f 8d f2 fd ff ff jge 422c15 0.00 : 422e23: 44 8b 94 24 dc 00 00 mov 0xdc(%rsp),%r10d 0.00 : 422e2a: 00 0.00 : 422e2b: 45 85 d2 test %r10d,%r10d 0.00 : 422e2e: 0f 85 e1 fd ff ff jne 422c15 0.00 : 422e34: 48 81 bc 24 f0 00 00 cmpq $0x441f53,0xf0(%rsp) 0.00 : 422e3b: 00 53 1f 44 00 0.00 : 422e40: 0f 84 dc fd ff ff je 422c22 0.00 : 422e46: 41 0f b6 07 movzbl (%r15),%eax 0.00 : 422e4a: 3c 2d cmp $0x2d,%al 0.00 : 422e4c: 74 0e je 422e5c 0.00 : 422e4e: 80 bc 24 3e 01 00 00 cmpb $0x0,0x13e(%rsp) 0.00 : 422e55: 00 0.00 : 422e56: 0f 84 c6 fd ff ff je 422c22 0.00 : 422e5c: 48 83 bc 24 c0 00 00 cmpq $0x0,0xc0(%rsp) 0.00 : 422e63: 00 00 0.00 : 422e65: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 422e6c: 00 0.00 : 422e6d: 48 8b ac 24 b8 00 00 mov 0xb8(%rsp),%rbp 0.00 : 422e74: 00 0.00 : 422e75: 0f 84 88 1a 00 00 je 424903 0.00 : 422e7b: 4c 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%r9 0.00 : 422e82: 00 0.00 : 422e83: 49 83 c7 01 add $0x1,%r15 0.00 : 422e87: 41 88 01 mov %al,(%r9) 0.00 : 422e8a: 49 83 c1 01 add $0x1,%r9 0.00 : 422e8e: 48 83 ac 24 c0 00 00 subq $0x1,0xc0(%rsp) 0.00 : 422e95: 00 01 0.00 : 422e97: 4c 89 8c 24 b0 00 00 mov %r9,0xb0(%rsp) 0.00 : 422e9e: 00 0.00 : 422e9f: 48 83 ac 24 c0 01 00 subq $0x1,0x1c0(%rsp) 0.00 : 422ea6: 00 01 0.00 : 422ea8: 48 83 ac 24 c8 01 00 subq $0x1,0x1c8(%rsp) 0.00 : 422eaf: 00 01 0.00 : 422eb1: 48 89 bc 24 a8 00 00 mov %rdi,0xa8(%rsp) 0.00 : 422eb8: 00 0.00 : 422eb9: 48 89 ac 24 b8 00 00 mov %rbp,0xb8(%rsp) 0.00 : 422ec0: 00 0.00 : 422ec1: e9 5c fd ff ff jmpq 422c22 0.00 : 422ec6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 422ecd: 00 00 00 0.00 : 422ed0: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 422ed4: 48 89 fb mov %rdi,%rbx 0.00 : 422ed7: 0f b7 d0 movzwl %ax,%edx 0.00 : 422eda: f6 c6 08 test $0x8,%dh 0.00 : 422edd: 0f 85 11 20 00 00 jne 424ef4 0.00 : 422ee3: 83 e2 06 and $0x6,%edx 0.00 : 422ee6: 48 8b 2d 8b ca 22 00 mov 0x22ca8b(%rip),%rbp # 64f978 0.00 : 422eed: 0f 85 6d fc ff ff jne 422b60 0.00 : 422ef3: 48 89 df mov %rbx,%rdi 0.00 : 422ef6: e8 65 21 01 00 callq 435060 0.00 : 422efb: e9 6d fc ff ff jmpq 422b6d 0.00 : 422f00: 48 8b 3d 71 ca 22 00 mov 0x22ca71(%rip),%rdi # 64f978 0.00 : 422f07: e8 14 3e fe ff callq 406d20 0.00 : 422f0c: 4c 8b ac 24 98 00 00 mov 0x98(%rsp),%r13 0.00 : 422f13: 00 0.00 : 422f14: 4c 8b 9c 24 a0 00 00 mov 0xa0(%rsp),%r11 0.00 : 422f1b: 00 0.00 : 422f1c: 4c 89 2d 55 ca 22 00 mov %r13,0x22ca55(%rip) # 64f978 0.00 : 422f23: 4c 89 1d 46 ca 22 00 mov %r11,0x22ca46(%rip) # 64f970 0.00 : 422f2a: e9 eb ed ff ff jmpq 421d1a 0.00 : 422f2f: 90 nop 0.00 : 422f30: 48 8b 35 39 ca 22 00 mov 0x22ca39(%rip),%rsi # 64f970 0.00 : 422f37: 48 8b 3d 3a ca 22 00 mov 0x22ca3a(%rip),%rdi # 64f978 0.00 : 422f3e: 48 c7 05 27 ca 22 00 movq $0x0,0x22ca27(%rip) # 64f970 0.00 : 422f45: 00 00 00 00 0.00 : 422f49: 48 89 bc 24 98 00 00 mov %rdi,0x98(%rsp) 0.00 : 422f50: 00 0.00 : 422f51: 48 89 b4 24 a0 00 00 mov %rsi,0xa0(%rsp) 0.00 : 422f58: 00 0.00 : 422f59: 48 8b 5c 24 70 mov 0x70(%rsp),%rbx 0.00 : 422f5e: 48 83 c3 01 add $0x1,%rbx 0.00 : 422f62: 48 8d 2c dd 00 00 00 lea 0x0(,%rbx,8),%rbp 0.00 : 422f69: 00 0.00 : 422f6a: 48 89 ef mov %rbp,%rdi 0.00 : 422f6d: e8 2e 3c fe ff callq 406ba0 0.00 : 422f72: 48 85 c0 test %rax,%rax 0.00 : 422f75: 48 89 05 fc c9 22 00 mov %rax,0x22c9fc(%rip) # 64f978 0.00 : 422f7c: 0f 84 29 1f 00 00 je 424eab 0.00 : 422f82: 48 89 1d e7 c9 22 00 mov %rbx,0x22c9e7(%rip) # 64f970 0.00 : 422f89: e9 f5 ea ff ff jmpq 421a83 0.00 : 422f8e: 66 90 xchg %ax,%ax 0.00 : 422f90: e8 8b 3d fe ff callq 406d20 0.00 : 422f95: e9 ba ed ff ff jmpq 421d54 0.00 : 422f9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 422fa0: e8 7b 3d fe ff callq 406d20 0.00 : 422fa5: 0f 1f 00 nopl (%rax) 0.00 : 422fa8: e9 8a ed ff ff jmpq 421d37 0.00 : 422fad: 0f 1f 00 nopl (%rax) 0.00 : 422fb0: 4c 8b 54 24 40 mov 0x40(%rsp),%r10 0.00 : 422fb5: 4c 39 94 24 70 01 00 cmp %r10,0x170(%rsp) 0.00 : 422fbc: 00 0.00 : 422fbd: 75 0c jne 422fcb 0.00 : 422fbf: 48 c7 84 24 70 01 00 movq $0x0,0x170(%rsp) 0.00 : 422fc6: 00 00 00 00 00 0.00 : 422fcb: 85 ed test %ebp,%ebp 0.00 : 422fcd: 0f 8e 0b 1c 00 00 jle 424bde 0.00 : 422fd3: 48 39 d0 cmp %rdx,%rax 0.00 : 422fd6: 48 0f 43 d0 cmovae %rax,%rdx 0.00 : 422fda: 48 8d 3c 02 lea (%rdx,%rax,1),%rdi 0.00 : 422fde: 48 89 bc 24 78 01 00 mov %rdi,0x178(%rsp) 0.00 : 422fe5: 00 0.00 : 422fe6: 48 8b bc 24 78 01 00 mov 0x178(%rsp),%rdi 0.00 : 422fed: 00 0.00 : 422fee: 48 85 ff test %rdi,%rdi 0.00 : 422ff1: 0f 84 ce 1b 00 00 je 424bc5 0.00 : 422ff7: 48 8b 84 24 70 01 00 mov 0x170(%rsp),%rax 0.00 : 422ffe: 00 0.00 : 422fff: 48 85 c0 test %rax,%rax 0.00 : 423002: 0f 85 ad 1b 00 00 jne 424bb5 0.00 : 423008: e8 93 3b fe ff callq 406ba0 0.00 : 42300d: 48 85 c0 test %rax,%rax 0.00 : 423010: 48 89 84 24 70 01 00 mov %rax,0x170(%rsp) 0.00 : 423017: 00 0.00 : 423018: 0f 85 6f f8 ff ff jne 42288d 0.00 : 42301e: be 24 04 00 00 mov $0x424,%esi 0.00 : 423023: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423028: e8 1b e3 fe ff callq 411348 0.00 : 42302d: e8 be 3f fe ff callq 406ff0 <__errno_location@plt> 0.00 : 423032: 8b 38 mov (%rax),%edi 0.00 : 423034: e8 87 3e fe ff callq 406ec0 0.00 : 423039: 4c 8b b4 24 78 01 00 mov 0x178(%rsp),%r14 0.00 : 423040: 00 0.00 : 423041: 48 89 c5 mov %rax,%rbp 0.00 : 423044: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423049: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 42304e: 31 ff xor %edi,%edi 0.00 : 423050: e8 cb 3f fe ff callq 407020 0.00 : 423055: 49 89 e8 mov %rbp,%r8 0.00 : 423058: 48 89 c7 mov %rax,%rdi 0.00 : 42305b: 4c 89 f1 mov %r14,%rcx 0.00 : 42305e: ba 15 05 44 00 mov $0x440515,%edx 0.00 : 423063: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 423068: 31 c0 xor %eax,%eax 0.00 : 42306a: e8 5b e4 fe ff callq 4114ca 0.00 : 42306f: 90 nop 0.00 : 423070: f2 0f 10 8c 24 f8 00 movsd 0xf8(%rsp),%xmm1 0.00 : 423077: 00 00 0.00 : 423079: 49 ba 00 00 00 00 00 movabs $0x8000000000000000,%r10 0.00 : 423080: 00 00 80 0.00 : 423083: f2 0f 5c c8 subsd %xmm0,%xmm1 0.00 : 423087: f2 48 0f 2c e9 cvttsd2si %xmm1,%rbp 0.00 : 42308c: 4c 31 d5 xor %r10,%rbp 0.00 : 42308f: e9 27 f5 ff ff jmpq 4225bb 0.00 : 423094: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 423098: 66 45 0f 57 db xorpd %xmm11,%xmm11 0.00 : 42309d: f2 44 0f 11 5c 24 38 movsd %xmm11,0x38(%rsp) 0.00 : 4230a4: e9 db f4 ff ff jmpq 422584 0.00 : 4230a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4230b0: f2 0f 10 b4 24 f8 00 movsd 0xf8(%rsp),%xmm6 0.00 : 4230b7: 00 00 0.00 : 4230b9: c7 84 24 e8 00 00 00 movl $0x1,0xe8(%rsp) 0.00 : 4230c0: 01 00 00 00 0.00 : 4230c4: f2 0f 10 3d f4 d2 01 movsd 0x1d2f4(%rip),%xmm7 # 4403c0 <_IO_stdin_used+0x48a0> 0.00 : 4230cb: 00 0.00 : 4230cc: 66 0f 57 f7 xorpd %xmm7,%xmm6 0.00 : 4230d0: f2 0f 11 b4 24 f8 00 movsd %xmm6,0xf8(%rsp) 0.00 : 4230d7: 00 00 0.00 : 4230d9: e9 af f7 ff ff jmpq 42288d 0.00 : 4230de: 66 90 xchg %ax,%ax 0.00 : 4230e0: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 4230e7: 00 0.00 : 4230e8: 4c 39 fb cmp %r15,%rbx 0.00 : 4230eb: 0f 84 09 09 00 00 je 4239fa 0.00 : 4230f1: 49 83 ef 01 sub $0x1,%r15 0.00 : 4230f5: 41 c6 07 2d movb $0x2d,(%r15) 0.00 : 4230f9: e9 95 fc ff ff jmpq 422d93 0.00 : 4230fe: 44 8b 35 fb d1 22 00 mov 0x22d1fb(%rip),%r14d # 650300 0.00 : 423105: 45 85 f6 test %r14d,%r14d 0.00 : 423108: 0f 85 7e 0c 00 00 jne 423d8c 0.00 : 42310e: 48 83 bc 24 c0 00 00 cmpq $0x0,0xc0(%rsp) 0.00 : 423115: 00 00 0.00 : 423117: 48 8b 9c 24 a8 00 00 mov 0xa8(%rsp),%rbx 0.00 : 42311e: 00 0.00 : 42311f: 4c 8b bc 24 b8 00 00 mov 0xb8(%rsp),%r15 0.00 : 423126: 00 0.00 : 423127: 0f 84 07 0c 00 00 je 423d34 0.00 : 42312d: 4c 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%r9 0.00 : 423134: 00 0.00 : 423135: 31 c0 xor %eax,%eax 0.00 : 423137: 41 c6 01 25 movb $0x25,(%r9) 0.00 : 42313b: 49 83 c1 01 add $0x1,%r9 0.00 : 42313f: 48 83 ac 24 c0 00 00 subq $0x1,0xc0(%rsp) 0.00 : 423146: 00 01 0.00 : 423148: 4c 89 8c 24 b0 00 00 mov %r9,0xb0(%rsp) 0.00 : 42314f: 00 0.00 : 423150: 48 8b ac 24 10 01 00 mov 0x110(%rsp),%rbp 0.00 : 423157: 00 0.00 : 423158: e9 66 f1 ff ff jmpq 4222c3 0.00 : 42315d: c7 84 24 e0 00 00 00 movl $0x1,0xe0(%rsp) 0.00 : 423164: 01 00 00 00 0.00 : 423168: e9 18 f3 ff ff jmpq 422485 0.00 : 42316d: 80 bc 24 3e 01 00 00 cmpb $0x0,0x13e(%rsp) 0.00 : 423174: 00 0.00 : 423175: 0f 85 0a f3 ff ff jne 422485 0.00 : 42317b: c6 84 24 3e 01 00 00 movb $0x20,0x13e(%rsp) 0.00 : 423182: 20 0.00 : 423183: e9 fd f2 ff ff jmpq 422485 0.00 : 423188: 48 83 bc 24 c0 00 00 cmpq $0x0,0xc0(%rsp) 0.00 : 42318f: 00 00 0.00 : 423191: 48 8b ac 24 a8 00 00 mov 0xa8(%rsp),%rbp 0.00 : 423198: 00 0.00 : 423199: 4c 8b a4 24 b8 00 00 mov 0xb8(%rsp),%r12 0.00 : 4231a0: 00 0.00 : 4231a1: 0f 84 c9 1a 00 00 je 424c70 0.00 : 4231a7: 48 8b 9c 24 f0 00 00 mov 0xf0(%rsp),%rbx 0.00 : 4231ae: 00 0.00 : 4231af: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 4231b6: 00 0.00 : 4231b7: 44 0f b6 03 movzbl (%rbx),%r8d 0.00 : 4231bb: 44 88 07 mov %r8b,(%rdi) 0.00 : 4231be: 48 8b 8c 24 c8 01 00 mov 0x1c8(%rsp),%rcx 0.00 : 4231c5: 00 0.00 : 4231c6: 48 83 c7 01 add $0x1,%rdi 0.00 : 4231ca: 48 83 ac 24 c0 00 00 subq $0x1,0xc0(%rsp) 0.00 : 4231d1: 00 01 0.00 : 4231d3: 48 89 bc 24 b0 00 00 mov %rdi,0xb0(%rsp) 0.00 : 4231da: 00 0.00 : 4231db: 48 83 e9 01 sub $0x1,%rcx 0.00 : 4231df: 48 39 8c 24 c0 01 00 cmp %rcx,0x1c0(%rsp) 0.00 : 4231e6: 00 0.00 : 4231e7: 48 89 8c 24 c8 01 00 mov %rcx,0x1c8(%rsp) 0.00 : 4231ee: 00 0.00 : 4231ef: 0f 8d 53 fa ff ff jge 422c48 0.00 : 4231f5: 48 89 ac 24 a8 00 00 mov %rbp,0xa8(%rsp) 0.00 : 4231fc: 00 0.00 : 4231fd: 4c 89 a4 24 b8 00 00 mov %r12,0xb8(%rsp) 0.00 : 423204: 00 0.00 : 423205: eb 81 jmp 423188 0.00 : 423207: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42320e: 00 00 0.00 : 423210: 80 7c 24 67 00 cmpb $0x0,0x67(%rsp) 0.00 : 423215: 0f 85 62 04 00 00 jne 42367d 0.00 : 42321b: 8b 94 24 e0 00 00 00 mov 0xe0(%rsp),%edx 0.00 : 423222: 85 d2 test %edx,%edx 0.00 : 423224: 0f 85 9b 03 00 00 jne 4235c5 0.00 : 42322a: 48 8b 84 24 c0 01 00 mov 0x1c0(%rsp),%rax 0.00 : 423231: 00 0.00 : 423232: 48 3b 84 24 c8 01 00 cmp 0x1c8(%rsp),%rax 0.00 : 423239: 00 0.00 : 42323a: 0f 8f 29 07 00 00 jg 423969 0.00 : 423240: 48 8b 84 24 20 01 00 mov 0x120(%rsp),%rax 0.00 : 423247: 00 0.00 : 423248: c7 84 24 ec 00 00 00 movl $0x0,0xec(%rsp) 0.00 : 42324f: 00 00 00 00 0.00 : 423253: 4c 29 f8 sub %r15,%rax 0.00 : 423256: 48 89 84 24 c0 01 00 mov %rax,0x1c0(%rsp) 0.00 : 42325d: 00 0.00 : 42325e: e9 b2 f9 ff ff jmpq 422c15 0.00 : 423263: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 42326a: 00 00 0.00 : 42326c: e8 ff c4 00 00 callq 42f770 0.00 : 423271: e9 68 f3 ff ff jmpq 4225de 0.00 : 423276: 48 8b 45 00 mov 0x0(%rbp),%rax 0.00 : 42327a: 48 8d 3c 80 lea (%rax,%rax,4),%rdi 0.00 : 42327e: 48 83 84 24 10 01 00 addq $0x1,0x110(%rsp) 0.00 : 423285: 00 01 0.00 : 423287: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 42328d: 48 0f be f1 movsbq %cl,%rsi 0.00 : 423291: 48 8d 44 7e d0 lea -0x30(%rsi,%rdi,2),%rax 0.00 : 423296: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 42329a: 0f 84 81 f1 ff ff je 422421 0.00 : 4232a0: 4c 8b 94 24 10 01 00 mov 0x110(%rsp),%r10 0.00 : 4232a7: 00 0.00 : 4232a8: 41 0f b6 0a movzbl (%r10),%ecx 0.00 : 4232ac: 80 f9 2f cmp $0x2f,%cl 0.00 : 4232af: 0f 8e 6c f1 ff ff jle 422421 0.00 : 4232b5: 80 f9 39 cmp $0x39,%cl 0.00 : 4232b8: 0f 8f 63 f1 ff ff jg 422421 0.00 : 4232be: eb ba jmp 42327a 0.00 : 4232c0: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 4232c7: 00 00 0.00 : 4232c9: e8 a2 c4 00 00 callq 42f770 0.00 : 4232ce: f2 0f 11 84 24 f8 00 movsd %xmm0,0xf8(%rsp) 0.00 : 4232d5: 00 00 0.00 : 4232d7: e9 68 f5 ff ff jmpq 422844 0.00 : 4232dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4232e0: 48 8b 1f mov (%rdi),%rbx 0.00 : 4232e3: 48 3b 1d f6 16 23 00 cmp 0x2316f6(%rip),%rbx # 6549e0 0.00 : 4232ea: 0f 84 86 06 00 00 je 423976 0.00 : 4232f0: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 4232f4: 0f b7 d0 movzwl %ax,%edx 0.00 : 4232f7: e9 e7 fb ff ff jmpq 422ee3 0.00 : 4232fc: 49 89 ef mov %rbp,%r15 0.00 : 4232ff: 49 89 eb mov %rbp,%r11 0.00 : 423302: 49 d1 ef shr %r15 0.00 : 423305: 41 83 e3 01 and $0x1,%r11d 0.00 : 423309: 4d 09 df or %r11,%r15 0.00 : 42330c: f2 49 0f 2a cf cvtsi2sd %r15,%xmm1 0.00 : 423311: f2 0f 58 c9 addsd %xmm1,%xmm1 0.00 : 423315: e9 d2 f2 ff ff jmpq 4225ec 0.00 : 42331a: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 423321: 00 00 0.00 : 423323: e8 48 c4 00 00 callq 42f770 0.00 : 423328: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 42332c: e9 fc f7 ff ff jmpq 422b2d 0.00 : 423331: 80 7c 24 67 00 cmpb $0x0,0x67(%rsp) 0.00 : 423336: 74 0f je 423347 0.00 : 423338: 48 83 bc 24 c8 01 00 cmpq $0x0,0x1c8(%rsp) 0.00 : 42333f: 00 00 0.00 : 423341: 0f 84 ec f2 ff ff je 422633 0.00 : 423347: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 42334e: 00 53 1f 44 00 0.00 : 423353: e9 e7 f2 ff ff jmpq 42263f 0.00 : 423358: 4c 8b ac 24 b8 00 00 mov 0xb8(%rsp),%r13 0.00 : 42335f: 00 0.00 : 423360: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 423367: 00 0.00 : 423368: 4d 01 ed add %r13,%r13 0.00 : 42336b: 4c 89 ee mov %r13,%rsi 0.00 : 42336e: e8 ad 3e fe ff callq 407220 0.00 : 423373: 48 85 c0 test %rax,%rax 0.00 : 423376: 49 89 c4 mov %rax,%r12 0.00 : 423379: 0f 84 b4 01 00 00 je 423533 0.00 : 42337f: 4c 8b 84 24 b0 00 00 mov 0xb0(%rsp),%r8 0.00 : 423386: 00 0.00 : 423387: 4c 2b 84 24 a8 00 00 sub 0xa8(%rsp),%r8 0.00 : 42338e: 00 0.00 : 42338f: 48 8b b4 24 b8 00 00 mov 0xb8(%rsp),%rsi 0.00 : 423396: 00 0.00 : 423397: 48 01 b4 24 c0 00 00 add %rsi,0xc0(%rsp) 0.00 : 42339e: 00 0.00 : 42339f: 48 39 9c 24 c0 00 00 cmp %rbx,0xc0(%rsp) 0.00 : 4233a6: 00 0.00 : 4233a7: 4a 8d 0c 00 lea (%rax,%r8,1),%rcx 0.00 : 4233ab: 48 89 8c 24 b0 00 00 mov %rcx,0xb0(%rsp) 0.00 : 4233b2: 00 0.00 : 4233b3: 0f 83 f8 f7 ff ff jae 422bb1 0.00 : 4233b9: 48 89 84 24 a8 00 00 mov %rax,0xa8(%rsp) 0.00 : 4233c0: 00 0.00 : 4233c1: 4c 89 ac 24 b8 00 00 mov %r13,0xb8(%rsp) 0.00 : 4233c8: 00 0.00 : 4233c9: eb 8d jmp 423358 0.00 : 4233cb: 4f 8d 34 24 lea (%r12,%r12,1),%r14 0.00 : 4233cf: 48 89 ef mov %rbp,%rdi 0.00 : 4233d2: 4c 89 f6 mov %r14,%rsi 0.00 : 4233d5: e8 46 3e fe ff callq 407220 0.00 : 4233da: 48 85 c0 test %rax,%rax 0.00 : 4233dd: 49 89 c5 mov %rax,%r13 0.00 : 4233e0: 0f 84 96 01 00 00 je 42357c 0.00 : 4233e6: 4c 8b 94 24 b0 00 00 mov 0xb0(%rsp),%r10 0.00 : 4233ed: 00 0.00 : 4233ee: 4c 01 a4 24 c0 00 00 add %r12,0xc0(%rsp) 0.00 : 4233f5: 00 0.00 : 4233f6: 49 29 ea sub %rbp,%r10 0.00 : 4233f9: 48 3b 9c 24 c0 00 00 cmp 0xc0(%rsp),%rbx 0.00 : 423400: 00 0.00 : 423401: 4e 8d 24 10 lea (%rax,%r10,1),%r12 0.00 : 423405: 4c 89 a4 24 b0 00 00 mov %r12,0xb0(%rsp) 0.00 : 42340c: 00 0.00 : 42340d: 0f 86 75 f8 ff ff jbe 422c88 0.00 : 423413: 48 89 c5 mov %rax,%rbp 0.00 : 423416: 4d 89 f4 mov %r14,%r12 0.00 : 423419: eb b0 jmp 4233cb 0.00 : 42341b: 83 bc 24 d4 00 00 00 cmpl $0x63,0xd4(%rsp) 0.00 : 423422: 63 0.00 : 423423: 0f 94 c2 sete %dl 0.00 : 423426: 83 bc 24 d4 00 00 00 cmpl $0x73,0xd4(%rsp) 0.00 : 42342d: 73 0.00 : 42342e: 74 08 je 423438 0.00 : 423430: 84 d2 test %dl,%dl 0.00 : 423432: 0f 84 37 f8 ff ff je 422c6f 0.00 : 423438: 4c 8b ac 24 18 01 00 mov 0x118(%rsp),%r13 0.00 : 42343f: 00 0.00 : 423440: 4d 8b 75 08 mov 0x8(%r13),%r14 0.00 : 423444: 4d 39 fe cmp %r15,%r14 0.00 : 423447: 0f 85 a6 00 00 00 jne 4234f3 0.00 : 42344d: 84 d2 test %dl,%dl 0.00 : 42344f: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 423454: 75 1a jne 423470 0.00 : 423456: 8b 94 24 e4 00 00 00 mov 0xe4(%rsp),%edx 0.00 : 42345d: 48 63 d8 movslq %eax,%rbx 0.00 : 423460: 85 d2 test %edx,%edx 0.00 : 423462: 75 0c jne 423470 0.00 : 423464: 48 8b 84 24 18 01 00 mov 0x118(%rsp),%rax 0.00 : 42346b: 00 0.00 : 42346c: 48 63 58 10 movslq 0x10(%rax),%rbx 0.00 : 423470: 8b 05 92 15 23 00 mov 0x231592(%rip),%eax # 654a08 0.00 : 423476: 48 c7 84 24 a0 01 00 movq $0x0,0x1a0(%rsp) 0.00 : 42347d: 00 00 00 00 00 0.00 : 423482: 83 f8 01 cmp $0x1,%eax 0.00 : 423485: 0f 8e 8f 00 00 00 jle 42351a 0.00 : 42348b: 48 63 d0 movslq %eax,%rdx 0.00 : 42348e: 48 8d 8c 24 a0 01 00 lea 0x1a0(%rsp),%rcx 0.00 : 423495: 00 0.00 : 423496: 31 ff xor %edi,%edi 0.00 : 423498: 48 0f af d3 imul %rbx,%rdx 0.00 : 42349c: 4c 89 f6 mov %r14,%rsi 0.00 : 42349f: e8 4c 35 fe ff callq 4069f0 0.00 : 4234a4: 85 c0 test %eax,%eax 0.00 : 4234a6: 0f 8e c3 f7 ff ff jle 422c6f 0.00 : 4234ac: 48 85 db test %rbx,%rbx 0.00 : 4234af: 0f 84 fc f7 ff ff je 422cb1 0.00 : 4234b5: 49 89 dd mov %rbx,%r13 0.00 : 4234b8: 31 db xor %ebx,%ebx 0.00 : 4234ba: 48 63 15 47 15 23 00 movslq 0x231547(%rip),%rdx # 654a08 0.00 : 4234c1: 48 8d 8c 24 a0 01 00 lea 0x1a0(%rsp),%rcx 0.00 : 4234c8: 00 0.00 : 4234c9: 31 ff xor %edi,%edi 0.00 : 4234cb: 4c 89 f6 mov %r14,%rsi 0.00 : 4234ce: 49 0f af d5 imul %r13,%rdx 0.00 : 4234d2: e8 19 35 fe ff callq 4069f0 0.00 : 4234d7: 85 c0 test %eax,%eax 0.00 : 4234d9: 0f 8e 90 f7 ff ff jle 422c6f 0.00 : 4234df: 48 98 cltq 0.00 : 4234e1: 48 01 c3 add %rax,%rbx 0.00 : 4234e4: 49 83 ed 01 sub $0x1,%r13 0.00 : 4234e8: 0f 84 81 f7 ff ff je 422c6f 0.00 : 4234ee: 49 01 c6 add %rax,%r14 0.00 : 4234f1: eb c7 jmp 4234ba 0.00 : 4234f3: 4c 39 bc 24 40 01 00 cmp %r15,0x140(%rsp) 0.00 : 4234fa: 00 0.00 : 4234fb: 0f 84 4c ff ff ff je 42344d 0.00 : 423501: b9 08 1f 44 00 mov $0x441f08,%ecx 0.00 : 423506: ba c7 04 00 00 mov $0x4c7,%edx 0.00 : 42350b: be d0 03 44 00 mov $0x4403d0,%esi 0.00 : 423510: bf 90 15 44 00 mov $0x441590,%edi 0.00 : 423515: e8 06 36 fe ff callq 406b20 <__assert_fail@plt> 0.00 : 42351a: b9 55 1f 44 00 mov $0x441f55,%ecx 0.00 : 42351f: ba 36 0d 00 00 mov $0xd36,%edx 0.00 : 423524: be d0 03 44 00 mov $0x4403d0,%esi 0.00 : 423529: bf 36 05 44 00 mov $0x440536,%edi 0.00 : 42352e: e8 ed 35 fe ff callq 406b20 <__assert_fail@plt> 0.00 : 423533: be 40 05 00 00 mov $0x540,%esi 0.00 : 423538: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 42353d: e8 06 de fe ff callq 411348 0.00 : 423542: e8 a9 3a fe ff callq 406ff0 <__errno_location@plt> 0.00 : 423547: 8b 38 mov (%rax),%edi 0.00 : 423549: e8 72 39 fe ff callq 406ec0 0.00 : 42354e: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423553: 49 89 c7 mov %rax,%r15 0.00 : 423556: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 42355b: 31 ff xor %edi,%edi 33.33 : 42355d: e8 be 3a fe ff callq 407020 0.00 : 423562: 4d 89 f8 mov %r15,%r8 0.00 : 423565: 48 89 c7 mov %rax,%rdi 0.00 : 423568: 4c 89 e9 mov %r13,%rcx 0.00 : 42356b: ba e3 03 44 00 mov $0x4403e3,%edx 0.00 : 423570: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 423575: 31 c0 xor %eax,%eax 0.00 : 423577: e8 4e df fe ff callq 4114ca 0.00 : 42357c: be d2 04 00 00 mov $0x4d2,%esi 0.00 : 423581: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423586: e8 bd dd fe ff callq 411348 0.00 : 42358b: e8 60 3a fe ff callq 406ff0 <__errno_location@plt> 0.00 : 423590: 8b 38 mov (%rax),%edi 0.00 : 423592: e8 29 39 fe ff callq 406ec0 0.00 : 423597: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42359c: 48 89 c5 mov %rax,%rbp 0.00 : 42359f: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 4235a4: 31 ff xor %edi,%edi 0.00 : 4235a6: e8 75 3a fe ff callq 407020 0.00 : 4235ab: 49 89 e8 mov %rbp,%r8 0.00 : 4235ae: 48 89 c7 mov %rax,%rdi 0.00 : 4235b1: 4c 89 f1 mov %r14,%rcx 0.00 : 4235b4: ba e3 03 44 00 mov $0x4403e3,%edx 0.00 : 4235b9: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 4235be: 31 c0 xor %eax,%eax 0.00 : 4235c0: e8 05 df fe ff callq 4114ca 0.00 : 4235c5: f2 0f 10 b4 24 f8 00 movsd 0xf8(%rsp),%xmm6 0.00 : 4235cc: 00 00 0.00 : 4235ce: 66 0f 2e 74 24 38 ucomisd 0x38(%rsp),%xmm6 0.00 : 4235d4: 7a 06 jp 4235dc 0.00 : 4235d6: 0f 84 4e fc ff ff je 42322a 0.00 : 4235dc: 83 bc 24 ec 00 00 00 cmpl $0x10,0xec(%rsp) 0.00 : 4235e3: 10 0.00 : 4235e4: 0f 85 57 03 00 00 jne 423941 0.00 : 4235ea: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 4235f1: 00 0.00 : 4235f2: 4c 39 fb cmp %r15,%rbx 0.00 : 4235f5: 0f 84 d1 02 00 00 je 4238cc 0.00 : 4235fb: 44 0f b6 94 24 3f 01 movzbl 0x13f(%rsp),%r10d 0.00 : 423602: 00 00 0.00 : 423604: 49 8d 5f ff lea -0x1(%r15),%rbx 0.00 : 423608: 45 88 57 ff mov %r10b,-0x1(%r15) 0.00 : 42360c: 48 8b ac 24 40 01 00 mov 0x140(%rsp),%rbp 0.00 : 423613: 00 0.00 : 423614: 48 39 dd cmp %rbx,%rbp 0.00 : 423617: 0f 84 85 01 00 00 je 4237a2 0.00 : 42361d: c6 43 ff 30 movb $0x30,-0x1(%rbx) 0.00 : 423621: 48 81 bc 24 f0 00 00 cmpq $0x441f53,0xf0(%rsp) 0.00 : 423628: 00 53 1f 44 00 0.00 : 42362d: 4c 8d 7b ff lea -0x1(%rbx),%r15 0.00 : 423631: 0f 84 f3 fb ff ff je 42322a 0.00 : 423637: 48 83 bc 24 c0 00 00 cmpq $0x1,0xc0(%rsp) 0.00 : 42363e: 00 01 0.00 : 423640: 0f 86 ee 00 00 00 jbe 423734 0.00 : 423646: 45 0f b7 07 movzwl (%r15),%r8d 0.00 : 42364a: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 423651: 00 0.00 : 423652: 49 83 c7 02 add $0x2,%r15 0.00 : 423656: 66 44 89 07 mov %r8w,(%rdi) 0.00 : 42365a: 48 83 c7 02 add $0x2,%rdi 0.00 : 42365e: 48 83 ac 24 c0 00 00 subq $0x2,0xc0(%rsp) 0.00 : 423665: 00 02 0.00 : 423667: 48 89 bc 24 b0 00 00 mov %rdi,0xb0(%rsp) 0.00 : 42366e: 00 0.00 : 42366f: 48 83 ac 24 c8 01 00 subq $0x2,0x1c8(%rsp) 0.00 : 423676: 00 02 0.00 : 423678: e9 ad fb ff ff jmpq 42322a 0.00 : 42367d: 4c 8b b4 24 20 01 00 mov 0x120(%rsp),%r14 0.00 : 423684: 00 0.00 : 423685: 4d 29 fe sub %r15,%r14 0.00 : 423688: 4c 39 b4 24 c0 01 00 cmp %r14,0x1c0(%rsp) 0.00 : 42368f: 00 0.00 : 423690: 7f 26 jg 4236b8 0.00 : 423692: e9 84 fb ff ff jmpq 42321b 0.00 : 423697: 49 83 ef 01 sub $0x1,%r15 0.00 : 42369b: 41 c6 07 30 movb $0x30,(%r15) 0.00 : 42369f: 4c 8b a4 24 20 01 00 mov 0x120(%rsp),%r12 0.00 : 4236a6: 00 0.00 : 4236a7: 4d 29 fc sub %r15,%r12 0.00 : 4236aa: 4c 3b a4 24 c0 01 00 cmp 0x1c0(%rsp),%r12 0.00 : 4236b1: 00 0.00 : 4236b2: 0f 8d 63 fb ff ff jge 42321b 0.00 : 4236b8: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 4236bf: 00 0.00 : 4236c0: 4c 39 fb cmp %r15,%rbx 0.00 : 4236c3: 75 d2 jne 423697 0.00 : 4236c5: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 4236cc: 00 0.00 : 4236cd: 48 01 ff add %rdi,%rdi 0.00 : 4236d0: e8 cb 34 fe ff callq 406ba0 0.00 : 4236d5: 48 85 c0 test %rax,%rax 0.00 : 4236d8: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 4236df: 00 0.00 : 4236e0: 0f 84 7c 01 00 00 je 423862 0.00 : 4236e6: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 4236ed: 00 0.00 : 4236ee: 48 89 de mov %rbx,%rsi 0.00 : 4236f1: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 4236f5: 4c 89 ff mov %r15,%rdi 0.00 : 4236f8: e8 53 38 fe ff callq 406f50 0.00 : 4236fd: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 423704: 00 0.00 : 423705: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 42370a: 74 08 je 423714 0.00 : 42370c: 48 89 df mov %rbx,%rdi 0.00 : 42370f: e8 0c 36 fe ff callq 406d20 0.00 : 423714: 48 8b ac 24 40 01 00 mov 0x140(%rsp),%rbp 0.00 : 42371b: 00 0.00 : 42371c: 48 8b 9c 24 48 01 00 mov 0x148(%rsp),%rbx 0.00 : 423723: 00 0.00 : 423724: 48 01 dd add %rbx,%rbp 0.00 : 423727: 48 89 ac 24 20 01 00 mov %rbp,0x120(%rsp) 0.00 : 42372e: 00 0.00 : 42372f: e9 63 ff ff ff jmpq 423697 0.00 : 423734: 48 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%rbx 0.00 : 42373b: 00 0.00 : 42373c: 48 d1 a4 24 b8 00 00 shlq 0xb8(%rsp) 0.00 : 423743: 00 0.00 : 423744: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 42374b: 00 0.00 : 42374c: 48 8b b4 24 b8 00 00 mov 0xb8(%rsp),%rsi 0.00 : 423753: 00 0.00 : 423754: e8 c7 3a fe ff callq 407220 0.00 : 423759: 48 85 c0 test %rax,%rax 0.00 : 42375c: 0f 84 1c 01 00 00 je 42387e 0.00 : 423762: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : 423769: 00 0.00 : 42376a: 48 2b 8c 24 a8 00 00 sub 0xa8(%rsp),%rcx 0.00 : 423771: 00 0.00 : 423772: 48 01 9c 24 c0 00 00 add %rbx,0xc0(%rsp) 0.00 : 423779: 00 0.00 : 42377a: 48 83 bc 24 c0 00 00 cmpq $0x1,0xc0(%rsp) 0.00 : 423781: 00 01 0.00 : 423783: 4c 8d 0c 08 lea (%rax,%rcx,1),%r9 0.00 : 423787: 4c 89 8c 24 b0 00 00 mov %r9,0xb0(%rsp) 0.00 : 42378e: 00 0.00 : 42378f: 0f 86 d4 00 00 00 jbe 423869 0.00 : 423795: 48 89 84 24 a8 00 00 mov %rax,0xa8(%rsp) 0.00 : 42379c: 00 0.00 : 42379d: e9 a4 fe ff ff jmpq 423646 0.00 : 4237a2: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 4237a9: 00 0.00 : 4237aa: 48 01 ff add %rdi,%rdi 0.00 : 4237ad: e8 ee 33 fe ff callq 406ba0 0.00 : 4237b2: 48 85 c0 test %rax,%rax 0.00 : 4237b5: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 4237bc: 00 0.00 : 4237bd: 74 4e je 42380d 0.00 : 4237bf: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 4237c6: 00 0.00 : 4237c7: 48 89 ee mov %rbp,%rsi 0.00 : 4237ca: 48 8d 1c 10 lea (%rax,%rdx,1),%rbx 0.00 : 4237ce: 48 89 df mov %rbx,%rdi 0.00 : 4237d1: e8 7a 37 fe ff callq 406f50 0.00 : 4237d6: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 4237dd: 00 0.00 : 4237de: 48 3b 6c 24 48 cmp 0x48(%rsp),%rbp 0.00 : 4237e3: 74 08 je 4237ed 0.00 : 4237e5: 48 89 ef mov %rbp,%rdi 0.00 : 4237e8: e8 33 35 fe ff callq 406d20 0.00 : 4237ed: 4c 8b bc 24 40 01 00 mov 0x140(%rsp),%r15 0.00 : 4237f4: 00 0.00 : 4237f5: 4c 8b 9c 24 48 01 00 mov 0x148(%rsp),%r11 0.00 : 4237fc: 00 0.00 : 4237fd: 4d 01 df add %r11,%r15 0.00 : 423800: 4c 89 bc 24 20 01 00 mov %r15,0x120(%rsp) 0.00 : 423807: 00 0.00 : 423808: e9 10 fe ff ff jmpq 42361d 0.00 : 42380d: be ad 04 00 00 mov $0x4ad,%esi 0.00 : 423812: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423817: e8 2c db fe ff callq 411348 0.00 : 42381c: e8 cf 37 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 423821: 8b 38 mov (%rax),%edi 0.00 : 423823: e8 98 36 fe ff callq 406ec0 0.00 : 423828: 48 8b b4 24 48 01 00 mov 0x148(%rsp),%rsi 0.00 : 42382f: 00 0.00 : 423830: 48 89 c3 mov %rax,%rbx 0.00 : 423833: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423838: 31 ff xor %edi,%edi 0.00 : 42383a: 48 8d 2c 36 lea (%rsi,%rsi,1),%rbp 0.00 : 42383e: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 423843: e8 d8 37 fe ff callq 407020 0.00 : 423848: 49 89 d8 mov %rbx,%r8 0.00 : 42384b: 48 89 c7 mov %rax,%rdi 0.00 : 42384e: 48 89 e9 mov %rbp,%rcx 0.00 : 423851: ba 28 05 44 00 mov $0x440528,%edx 0.00 : 423856: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 42385b: 31 c0 xor %eax,%eax 0.00 : 42385d: e8 68 dc fe ff callq 4114ca 0.00 : 423862: be a7 04 00 00 mov $0x4a7,%esi 0.00 : 423867: eb a9 jmp 423812 0.00 : 423869: 48 89 84 24 a8 00 00 mov %rax,0xa8(%rsp) 0.00 : 423870: 00 0.00 : 423871: 48 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%rbx 0.00 : 423878: 00 0.00 : 423879: e9 be fe ff ff jmpq 42373c 0.00 : 42387e: be af 04 00 00 mov $0x4af,%esi 0.00 : 423883: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423888: e8 bb da fe ff callq 411348 0.00 : 42388d: e8 5e 37 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 423892: 8b 38 mov (%rax),%edi 0.00 : 423894: e8 27 36 fe ff callq 406ec0 0.00 : 423899: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42389e: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 4238a3: 31 ff xor %edi,%edi 0.00 : 4238a5: 49 89 c6 mov %rax,%r14 0.00 : 4238a8: e8 73 37 fe ff callq 407020 0.00 : 4238ad: 48 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%rcx 0.00 : 4238b4: 00 0.00 : 4238b5: 48 89 c7 mov %rax,%rdi 0.00 : 4238b8: 4d 89 f0 mov %r14,%r8 0.00 : 4238bb: ba e3 03 44 00 mov $0x4403e3,%edx 0.00 : 4238c0: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 4238c5: 31 c0 xor %eax,%eax 0.00 : 4238c7: e8 fe db fe ff callq 4114ca 0.00 : 4238cc: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 4238d3: 00 0.00 : 4238d4: 48 01 ff add %rdi,%rdi 0.00 : 4238d7: e8 c4 32 fe ff callq 406ba0 0.00 : 4238dc: 48 85 c0 test %rax,%rax 0.00 : 4238df: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 4238e6: 00 0.00 : 4238e7: 74 4e je 423937 0.00 : 4238e9: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 4238f0: 00 0.00 : 4238f1: 48 89 de mov %rbx,%rsi 0.00 : 4238f4: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 4238f8: 4c 89 ff mov %r15,%rdi 0.00 : 4238fb: e8 50 36 fe ff callq 406f50 0.00 : 423900: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 423907: 00 0.00 : 423908: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 42390d: 74 08 je 423917 0.00 : 42390f: 48 89 df mov %rbx,%rdi 0.00 : 423912: e8 09 34 fe ff callq 406d20 0.00 : 423917: 48 8b 84 24 40 01 00 mov 0x140(%rsp),%rax 0.00 : 42391e: 00 0.00 : 42391f: 4c 8b ac 24 48 01 00 mov 0x148(%rsp),%r13 0.00 : 423926: 00 0.00 : 423927: 4c 01 e8 add %r13,%rax 0.00 : 42392a: 48 89 84 24 20 01 00 mov %rax,0x120(%rsp) 0.00 : 423931: 00 0.00 : 423932: e9 c4 fc ff ff jmpq 4235fb 0.00 : 423937: be ac 04 00 00 mov $0x4ac,%esi 0.00 : 42393c: e9 d1 fe ff ff jmpq 423812 0.00 : 423941: 83 bc 24 ec 00 00 00 cmpl $0x8,0xec(%rsp) 0.00 : 423948: 08 0.00 : 423949: 0f 85 db f8 ff ff jne 42322a 0.00 : 42394f: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 423956: 00 0.00 : 423957: 4c 39 fb cmp %r15,%rbx 0.00 : 42395a: 74 29 je 423985 0.00 : 42395c: 49 83 ef 01 sub $0x1,%r15 0.00 : 423960: 41 c6 07 30 movb $0x30,(%r15) 0.00 : 423964: e9 c1 f8 ff ff jmpq 42322a 0.00 : 423969: 48 89 84 24 c8 01 00 mov %rax,0x1c8(%rsp) 0.00 : 423970: 00 0.00 : 423971: e9 ca f8 ff ff jmpq 423240 0.00 : 423976: 31 f6 xor %esi,%esi 0.00 : 423978: e8 43 49 01 00 callq 4382c0 0.00 : 42397d: 48 89 c3 mov %rax,%rbx 0.00 : 423980: e9 6b f9 ff ff jmpq 4232f0 0.00 : 423985: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 42398c: 00 0.00 : 42398d: 48 01 ff add %rdi,%rdi 0.00 : 423990: e8 0b 32 fe ff callq 406ba0 0.00 : 423995: 48 85 c0 test %rax,%rax 0.00 : 423998: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 42399f: 00 0.00 : 4239a0: 74 4e je 4239f0 0.00 : 4239a2: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 4239a9: 00 0.00 : 4239aa: 48 89 de mov %rbx,%rsi 0.00 : 4239ad: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 4239b1: 4c 89 ff mov %r15,%rdi 0.00 : 4239b4: e8 97 35 fe ff callq 406f50 0.00 : 4239b9: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 4239c0: 00 0.00 : 4239c1: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 4239c6: 74 08 je 4239d0 0.00 : 4239c8: 48 89 df mov %rbx,%rdi 0.00 : 4239cb: e8 50 33 fe ff callq 406d20 0.00 : 4239d0: 4c 8b a4 24 40 01 00 mov 0x140(%rsp),%r12 0.00 : 4239d7: 00 0.00 : 4239d8: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 4239df: 00 0.00 : 4239e0: 49 01 d4 add %rdx,%r12 0.00 : 4239e3: 4c 89 a4 24 20 01 00 mov %r12,0x120(%rsp) 0.00 : 4239ea: 00 0.00 : 4239eb: e9 6c ff ff ff jmpq 42395c 0.00 : 4239f0: be b4 04 00 00 mov $0x4b4,%esi 0.00 : 4239f5: e9 18 fe ff ff jmpq 423812 0.00 : 4239fa: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 423a01: 00 0.00 : 423a02: 48 01 ff add %rdi,%rdi 0.00 : 423a05: e8 96 31 fe ff callq 406ba0 0.00 : 423a0a: 48 85 c0 test %rax,%rax 0.00 : 423a0d: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 423a14: 00 0.00 : 423a15: 74 4e je 423a65 0.00 : 423a17: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 423a1e: 00 0.00 : 423a1f: 48 89 de mov %rbx,%rsi 0.00 : 423a22: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 423a26: 4c 89 ff mov %r15,%rdi 0.00 : 423a29: e8 22 35 fe ff callq 406f50 0.00 : 423a2e: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 423a35: 00 0.00 : 423a36: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 423a3b: 74 08 je 423a45 0.00 : 423a3d: 48 89 df mov %rbx,%rdi 0.00 : 423a40: e8 db 32 fe ff callq 406d20 0.00 : 423a45: 4c 8b 9c 24 40 01 00 mov 0x140(%rsp),%r11 0.00 : 423a4c: 00 0.00 : 423a4d: 48 8b 84 24 48 01 00 mov 0x148(%rsp),%rax 0.00 : 423a54: 00 0.00 : 423a55: 49 01 c3 add %rax,%r11 0.00 : 423a58: 4c 89 9c 24 20 01 00 mov %r11,0x120(%rsp) 0.00 : 423a5f: 00 0.00 : 423a60: e9 8c f6 ff ff jmpq 4230f1 0.00 : 423a65: be 44 04 00 00 mov $0x444,%esi 0.00 : 423a6a: e9 a3 fd ff ff jmpq 423812 0.00 : 423a6f: 48 83 bc 24 c0 01 00 cmpq $0x0,0x1c0(%rsp) 0.00 : 423a76: 00 00 0.00 : 423a78: 0f 85 d7 ed ff ff jne 422855 0.00 : 423a7e: 66 0f 57 db xorpd %xmm3,%xmm3 0.00 : 423a82: 4c 8b bc 24 20 01 00 mov 0x120(%rsp),%r15 0.00 : 423a89: 00 0.00 : 423a8a: f2 0f 10 a4 24 f8 00 movsd 0xf8(%rsp),%xmm4 0.00 : 423a91: 00 00 0.00 : 423a93: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 423a9a: 00 53 1f 44 00 0.00 : 423a9f: 66 0f 2e e3 ucomisd %xmm3,%xmm4 0.00 : 423aa3: 0f 8a ac ed ff ff jp 422855 0.00 : 423aa9: 0f 84 66 f1 ff ff je 422c15 0.00 : 423aaf: e9 a1 ed ff ff jmpq 422855 0.00 : 423ab4: 48 63 8c 24 04 01 00 movslq 0x104(%rsp),%rcx 0.00 : 423abb: 00 0.00 : 423abc: 48 8b 15 6d 0f 23 00 mov 0x230f6d(%rip),%rdx # 654a30 0.00 : 423ac3: 48 89 8c 24 88 00 00 mov %rcx,0x88(%rsp) 0.00 : 423aca: 00 0.00 : 423acb: 0f b6 04 0a movzbl (%rdx,%rcx,1),%eax 0.00 : 423acf: 84 c0 test %al,%al 0.00 : 423ad1: 0f 84 db ef ff ff je 422ab2 0.00 : 423ad7: 41 83 c7 01 add $0x1,%r15d 0.00 : 423adb: 44 0f be c0 movsbl %al,%r8d 0.00 : 423adf: 45 39 c7 cmp %r8d,%r15d 0.00 : 423ae2: 0f 85 ca ef ff ff jne 422ab2 0.00 : 423ae8: 85 ed test %ebp,%ebp 0.00 : 423aea: 74 24 je 423b10 0.00 : 423aec: 4c 8b ac 24 40 01 00 mov 0x140(%rsp),%r13 0.00 : 423af3: 00 0.00 : 423af4: 49 39 dd cmp %rbx,%r13 0.00 : 423af7: 74 67 je 423b60 0.00 : 423af9: 48 8b 35 28 0f 23 00 mov 0x230f28(%rip),%rsi # 654a28 0.00 : 423b00: 48 83 eb 01 sub $0x1,%rbx 0.00 : 423b04: 0f b6 16 movzbl (%rsi),%edx 0.00 : 423b07: 88 13 mov %dl,(%rbx) 0.00 : 423b09: 48 8b 15 20 0f 23 00 mov 0x230f20(%rip),%rdx # 654a30 0.00 : 423b10: 4c 8b ac 24 88 00 00 mov 0x88(%rsp),%r13 0.00 : 423b17: 00 0.00 : 423b18: 42 0f b6 44 2a 01 movzbl 0x1(%rdx,%r13,1),%eax 0.00 : 423b1e: 84 c0 test %al,%al 0.00 : 423b20: 74 0c je 423b2e 0.00 : 423b22: 3c 7f cmp $0x7f,%al 0.00 : 423b24: 74 10 je 423b36 0.00 : 423b26: 83 84 24 04 01 00 00 addl $0x1,0x104(%rsp) 0.00 : 423b2d: 01 0.00 : 423b2e: 45 31 ff xor %r15d,%r15d 0.00 : 423b31: e9 7c ef ff ff jmpq 422ab2 0.00 : 423b36: 45 31 f6 xor %r14d,%r14d 0.00 : 423b39: e9 74 ef ff ff jmpq 422ab2 0.00 : 423b3e: 0f 8a 49 ed ff ff jp 42288d 0.00 : 423b44: c7 84 24 e8 00 00 00 movl $0x0,0xe8(%rsp) 0.00 : 423b4b: 00 00 00 00 0.00 : 423b4f: 48 c7 84 24 f8 00 00 movq $0x0,0xf8(%rsp) 0.00 : 423b56: 00 00 00 00 00 0.00 : 423b5b: e9 2d ed ff ff jmpq 42288d 0.00 : 423b60: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 423b67: 00 0.00 : 423b68: 48 01 ff add %rdi,%rdi 0.00 : 423b6b: e8 30 30 fe ff callq 406ba0 0.00 : 423b70: 48 85 c0 test %rax,%rax 0.00 : 423b73: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 423b7a: 00 0.00 : 423b7b: 74 43 je 423bc0 0.00 : 423b7d: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 423b84: 00 0.00 : 423b85: 4c 89 ee mov %r13,%rsi 0.00 : 423b88: 48 8d 1c 10 lea (%rax,%rdx,1),%rbx 0.00 : 423b8c: 48 89 df mov %rbx,%rdi 0.00 : 423b8f: e8 bc 33 fe ff callq 406f50 0.00 : 423b94: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 423b9b: 00 0.00 : 423b9c: 4c 3b 6c 24 48 cmp 0x48(%rsp),%r13 0.00 : 423ba1: 74 08 je 423bab 0.00 : 423ba3: 4c 89 ef mov %r13,%rdi 0.00 : 423ba6: e8 75 31 fe ff callq 406d20 0.00 : 423bab: 48 8b bc 24 40 01 00 mov 0x140(%rsp),%rdi 0.00 : 423bb2: 00 0.00 : 423bb3: 48 03 bc 24 48 01 00 add 0x148(%rsp),%rdi 0.00 : 423bba: 00 0.00 : 423bbb: e9 39 ff ff ff jmpq 423af9 0.00 : 423bc0: be 30 04 00 00 mov $0x430,%esi 0.00 : 423bc5: e9 48 fc ff ff jmpq 423812 0.00 : 423bca: 48 8b bc 24 18 01 00 mov 0x118(%rsp),%rdi 0.00 : 423bd1: 00 0.00 : 423bd2: e8 d9 1b 01 00 callq 4357b0 0.00 : 423bd7: f2 0f 11 84 24 f8 00 movsd %xmm0,0xf8(%rsp) 0.00 : 423bde: 00 00 0.00 : 423be0: e9 05 ec ff ff jmpq 4227ea 0.00 : 423be5: be f8 03 00 00 mov $0x3f8,%esi 0.00 : 423bea: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423bef: e8 54 d7 fe ff callq 411348 0.00 : 423bf4: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423bf9: be 10 14 44 00 mov $0x441410,%esi 0.00 : 423bfe: 31 ff xor %edi,%edi 0.00 : 423c00: e8 1b 34 fe ff callq 407020 0.00 : 423c05: 48 89 c7 mov %rax,%rdi 0.00 : 423c08: 31 c0 xor %eax,%eax 0.00 : 423c0a: e8 bb d8 fe ff callq 4114ca 0.00 : 423c0f: 66 45 0f 57 ed xorpd %xmm13,%xmm13 0.00 : 423c14: f2 44 0f 10 b4 24 f8 movsd 0xf8(%rsp),%xmm14 0.00 : 423c1b: 00 00 00 0.00 : 423c1e: f2 44 0f 11 6c 24 38 movsd %xmm13,0x38(%rsp) 0.00 : 423c25: 66 45 0f 2e f5 ucomisd %xmm13,%xmm14 0.00 : 423c2a: 0f 85 54 e9 ff ff jne 422584 0.00 : 423c30: 0f 8a 4e e9 ff ff jp 422584 0.00 : 423c36: 4c 8b bc 24 20 01 00 mov 0x120(%rsp),%r15 0.00 : 423c3d: 00 0.00 : 423c3e: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 423c45: 00 53 1f 44 00 0.00 : 423c4a: c7 84 24 e4 00 00 00 movl $0x1,0xe4(%rsp) 0.00 : 423c51: 01 00 00 00 0.00 : 423c55: e9 bb ef ff ff jmpq 422c15 0.00 : 423c5a: 48 8b bc 24 18 01 00 mov 0x118(%rsp),%rdi 0.00 : 423c61: 00 0.00 : 423c62: e8 49 1b 01 00 callq 4357b0 0.00 : 423c67: f2 0f 11 84 24 f8 00 movsd %xmm0,0xf8(%rsp) 0.00 : 423c6e: 00 00 0.00 : 423c70: e9 c3 e8 ff ff jmpq 422538 0.00 : 423c75: be dd 04 00 00 mov $0x4dd,%esi 0.00 : 423c7a: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423c7f: e8 c4 d6 fe ff callq 411348 0.00 : 423c84: 31 ff xor %edi,%edi 0.00 : 423c86: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423c8b: be c0 15 44 00 mov $0x4415c0,%esi 0.00 : 423c90: 4c 8b 2d 39 99 22 00 mov 0x229939(%rip),%r13 # 64d5d0 0.00 : 423c97: e8 84 33 fe ff callq 407020 0.00 : 423c9c: 8b b4 24 d4 00 00 00 mov 0xd4(%rsp),%esi 0.00 : 423ca3: 48 89 c7 mov %rax,%rdi 0.00 : 423ca6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 423cab: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 423cb2: 00 00 0.00 : 423cb4: 41 ff d5 callq *%r13 0.00 : 423cb7: e9 93 ee ff ff jmpq 422b4f 0.00 : 423cbc: 48 83 bc 24 90 00 00 cmpq $0x1,0x90(%rsp) 0.00 : 423cc3: 00 01 0.00 : 423cc5: 0f 85 1a ff ff ff jne 423be5 0.00 : 423ccb: 4c 8b 3d a6 bc 22 00 mov 0x22bca6(%rip),%r15 # 64f978 0.00 : 423cd2: 4b 8b 14 e7 mov (%r15,%r12,8),%rdx 0.00 : 423cd6: 48 89 94 24 18 01 00 mov %rdx,0x118(%rsp) 0.00 : 423cdd: 00 0.00 : 423cde: e9 e8 ea ff ff jmpq 4227cb 0.00 : 423ce3: 48 83 bc 24 90 00 00 cmpq $0x1,0x90(%rsp) 0.00 : 423cea: 00 01 0.00 : 423cec: 0f 85 28 07 00 00 jne 42441a 0.00 : 423cf2: 48 8b 15 7f bc 22 00 mov 0x22bc7f(%rip),%rdx # 64f978 0.00 : 423cf9: 4a 8b 3c e2 mov (%rdx,%r12,8),%rdi 0.00 : 423cfd: e9 6c e4 ff ff jmpq 42216e 0.00 : 423d02: 48 83 bc 24 90 00 00 cmpq $0x1,0x90(%rsp) 0.00 : 423d09: 00 01 0.00 : 423d0b: 0f 85 30 06 00 00 jne 424341 0.00 : 423d11: 4c 8b 2d 60 bc 22 00 mov 0x22bc60(%rip),%r13 # 64f978 0.00 : 423d18: 4f 8b 74 e5 00 mov 0x0(%r13,%r12,8),%r14 0.00 : 423d1d: 4c 89 b4 24 18 01 00 mov %r14,0x118(%rsp) 0.00 : 423d24: 00 0.00 : 423d25: e9 0c e2 ff ff jmpq 421f36 0.00 : 423d2a: be 2b 04 00 00 mov $0x42b,%esi 0.00 : 423d2f: e9 de fa ff ff jmpq 423812 0.00 : 423d34: 4c 8b bc 24 b8 00 00 mov 0xb8(%rsp),%r15 0.00 : 423d3b: 00 0.00 : 423d3c: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 423d43: 00 0.00 : 423d44: 4d 01 ff add %r15,%r15 0.00 : 423d47: 4c 89 fe mov %r15,%rsi 0.00 : 423d4a: e8 d1 34 fe ff callq 407220 0.00 : 423d4f: 48 85 c0 test %rax,%rax 0.00 : 423d52: 48 89 c3 mov %rax,%rbx 0.00 : 423d55: 0f 84 92 00 00 00 je 423ded 0.00 : 423d5b: 4c 8b 84 24 b0 00 00 mov 0xb0(%rsp),%r8 0.00 : 423d62: 00 0.00 : 423d63: 4c 2b 84 24 a8 00 00 sub 0xa8(%rsp),%r8 0.00 : 423d6a: 00 0.00 : 423d6b: 4c 8b ac 24 b8 00 00 mov 0xb8(%rsp),%r13 0.00 : 423d72: 00 0.00 : 423d73: 4a 8d 2c 00 lea (%rax,%r8,1),%rbp 0.00 : 423d77: 4c 89 ac 24 c0 00 00 mov %r13,0xc0(%rsp) 0.00 : 423d7e: 00 0.00 : 423d7f: 48 89 ac 24 b0 00 00 mov %rbp,0xb0(%rsp) 0.00 : 423d86: 00 0.00 : 423d87: e9 a1 f3 ff ff jmpq 42312d 0.00 : 423d8c: 48 8b 84 24 c8 01 00 mov 0x1c8(%rsp),%rax 0.00 : 423d93: 00 0.00 : 423d94: 48 85 c0 test %rax,%rax 0.00 : 423d97: 0f 95 c1 setne %cl 0.00 : 423d9a: 0f 84 96 00 00 00 je 423e36 0.00 : 423da0: 44 8b bc 24 e4 00 00 mov 0xe4(%rsp),%r15d 0.00 : 423da7: 00 0.00 : 423da8: 45 85 ff test %r15d,%r15d 0.00 : 423dab: 0f 85 85 00 00 00 jne 423e36 0.00 : 423db1: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423db6: be 80 12 44 00 mov $0x441280,%esi 0.00 : 423dbb: 31 ff xor %edi,%edi 0.00 : 423dbd: e8 5e 32 fe ff callq 407020 0.00 : 423dc2: 48 89 c3 mov %rax,%rbx 0.00 : 423dc5: 48 85 db test %rbx,%rbx 0.00 : 423dc8: 0f 84 40 f3 ff ff je 42310e 0.00 : 423dce: be 16 03 00 00 mov $0x316,%esi 0.00 : 423dd3: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423dd8: e8 6b d5 fe ff callq 411348 0.00 : 423ddd: 48 89 df mov %rbx,%rdi 0.00 : 423de0: 31 c0 xor %eax,%eax 0.00 : 423de2: ff 15 e8 97 22 00 callq *0x2297e8(%rip) # 64d5d0 0.00 : 423de8: e9 21 f3 ff ff jmpq 42310e 0.00 : 423ded: be 18 03 00 00 mov $0x318,%esi 0.00 : 423df2: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423df7: e8 4c d5 fe ff callq 411348 0.00 : 423dfc: e8 ef 31 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 423e01: 8b 38 mov (%rax),%edi 0.00 : 423e03: e8 b8 30 fe ff callq 406ec0 0.00 : 423e08: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423e0d: 49 89 c6 mov %rax,%r14 0.00 : 423e10: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 423e15: 31 ff xor %edi,%edi 0.00 : 423e17: e8 04 32 fe ff callq 407020 0.00 : 423e1c: 4d 89 f0 mov %r14,%r8 0.00 : 423e1f: 48 89 c7 mov %rax,%rdi 0.00 : 423e22: 4c 89 f9 mov %r15,%rcx 0.00 : 423e25: ba e3 03 44 00 mov $0x4403e3,%edx 0.00 : 423e2a: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 423e2f: 31 c0 xor %eax,%eax 0.00 : 423e31: e8 94 d6 fe ff callq 4114ca 0.00 : 423e36: 44 8b a4 24 e4 00 00 mov 0xe4(%rsp),%r12d 0.00 : 423e3d: 00 0.00 : 423e3e: 45 85 e4 test %r12d,%r12d 0.00 : 423e41: 0f 95 c2 setne %dl 0.00 : 423e44: 48 85 c0 test %rax,%rax 0.00 : 423e47: 0f 85 77 0e 00 00 jne 424cc4 0.00 : 423e4d: 84 d2 test %dl,%dl 0.00 : 423e4f: 0f 84 6f 0e 00 00 je 424cc4 0.00 : 423e55: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423e5a: be b0 12 44 00 mov $0x4412b0,%esi 0.00 : 423e5f: 31 ff xor %edi,%edi 0.00 : 423e61: e8 ba 31 fe ff callq 407020 0.00 : 423e66: 48 89 c3 mov %rax,%rbx 0.00 : 423e69: e9 57 ff ff ff jmpq 423dc5 0.00 : 423e6e: 48 c7 84 24 c0 01 00 movq $0xffffffffffffffff,0x1c0(%rsp) 0.00 : 423e75: 00 ff ff ff ff 0.00 : 423e7a: e9 89 e2 ff ff jmpq 422108 0.00 : 423e7f: 48 8b 3d f2 ba 22 00 mov 0x22baf2(%rip),%rdi # 64f978 0.00 : 423e86: 48 85 ff test %rdi,%rdi 0.00 : 423e89: 0f 84 90 00 00 00 je 423f1f 0.00 : 423e8f: 48 8d 34 ed 00 00 00 lea 0x0(,%rbp,8),%rsi 0.00 : 423e96: 00 0.00 : 423e97: e8 84 33 fe ff callq 407220 0.00 : 423e9c: 48 85 c0 test %rax,%rax 0.00 : 423e9f: 48 89 05 d2 ba 22 00 mov %rax,0x22bad2(%rip) # 64f978 0.00 : 423ea6: 74 29 je 423ed1 0.00 : 423ea8: 48 89 2d c1 ba 22 00 mov %rbp,0x22bac1(%rip) # 64f970 0.00 : 423eaf: e9 b7 db ff ff jmpq 421a6b 33.33 : 423eb4: 48 c7 84 24 98 00 00 movq $0x0,0x98(%rsp) 0.00 : 423ebb: 00 00 00 00 00 0.00 : 423ec0: 48 c7 84 24 a0 00 00 movq $0x0,0xa0(%rsp) 0.00 : 423ec7: 00 00 00 00 00 0.00 : 423ecc: e9 88 f0 ff ff jmpq 422f59 0.00 : 423ed1: be ac 02 00 00 mov $0x2ac,%esi 0.00 : 423ed6: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 423edb: e8 68 d4 fe ff callq 411348 0.00 : 423ee0: e8 0b 31 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 423ee5: 8b 38 mov (%rax),%edi 0.00 : 423ee7: e8 d4 2f fe ff callq 406ec0 0.00 : 423eec: ba 05 00 00 00 mov $0x5,%edx 0.00 : 423ef1: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 423ef6: 31 ff xor %edi,%edi 0.00 : 423ef8: 49 89 c5 mov %rax,%r13 0.00 : 423efb: e8 20 31 fe ff callq 407020 0.00 : 423f00: 48 8d 0c ed 00 00 00 lea 0x0(,%rbp,8),%rcx 0.00 : 423f07: 00 0.00 : 423f08: 48 89 c7 mov %rax,%rdi 0.00 : 423f0b: 4d 89 e8 mov %r13,%r8 0.00 : 423f0e: ba e8 04 44 00 mov $0x4404e8,%edx 0.00 : 423f13: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 423f18: 31 c0 xor %eax,%eax 0.00 : 423f1a: e8 ab d5 fe ff callq 4114ca 0.00 : 423f1f: 48 8d 3c ed 00 00 00 lea 0x0(,%rbp,8),%rdi 0.00 : 423f26: 00 0.00 : 423f27: e8 74 2c fe ff callq 406ba0 0.00 : 423f2c: e9 6b ff ff ff jmpq 423e9c 0.00 : 423f31: 48 c7 84 24 c8 00 00 movq $0x441f40,0xc8(%rsp) 0.00 : 423f38: 00 40 1f 44 00 0.00 : 423f3d: c6 84 24 3f 01 00 00 movb $0x75,0x13f(%rsp) 0.00 : 423f44: 75 0.00 : 423f45: e9 9d eb ff ff jmpq 422ae7 0.00 : 423f4a: 44 8b a4 24 d8 00 00 mov 0xd8(%rsp),%r12d 0.00 : 423f51: 00 0.00 : 423f52: 45 85 e4 test %r12d,%r12d 0.00 : 423f55: 0f 85 b5 0b 00 00 jne 424b10 0.00 : 423f5b: 4c 8b 94 24 90 00 00 mov 0x90(%rsp),%r10 0.00 : 423f62: 00 0.00 : 423f63: 4c 39 54 24 70 cmp %r10,0x70(%rsp) 0.00 : 423f68: 0f 86 a3 01 00 00 jbe 424111 0.00 : 423f6e: 48 8b bc 24 90 00 00 mov 0x90(%rsp),%rdi 0.00 : 423f75: 00 0.00 : 423f76: 4c 8b 1d fb b9 22 00 mov 0x22b9fb(%rip),%r11 # 64f978 0.00 : 423f7d: 49 8b 2c fb mov (%r11,%rdi,8),%rbp 0.00 : 423f81: 48 83 c7 01 add $0x1,%rdi 0.00 : 423f85: 48 89 bc 24 90 00 00 mov %rdi,0x90(%rsp) 0.00 : 423f8c: 00 0.00 : 423f8d: 48 89 ac 24 18 01 00 mov %rbp,0x118(%rsp) 0.00 : 423f94: 00 0.00 : 423f95: 48 8b 8c 24 18 01 00 mov 0x118(%rsp),%rcx 0.00 : 423f9c: 00 0.00 : 423f9d: 0f b7 51 3c movzwl 0x3c(%rcx),%edx 0.00 : 423fa1: 89 d0 mov %edx,%eax 0.00 : 423fa3: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 423fa8: 83 c0 80 add $0xffffff80,%eax 0.00 : 423fab: 0f 84 3c 0b 00 00 je 424aed 0.00 : 423fb1: 83 e2 40 and $0x40,%edx 0.00 : 423fb4: 0f 85 8b 0a 00 00 jne 424a45 0.00 : 423fba: 48 8b 9c 24 18 01 00 mov 0x118(%rsp),%rbx 0.00 : 423fc1: 00 0.00 : 423fc2: 48 c7 84 24 c0 01 00 movq $0x1,0x1c0(%rsp) 0.00 : 423fc9: 00 01 00 00 00 0.00 : 423fce: 4c 8b 7b 08 mov 0x8(%rbx),%r15 0.00 : 423fd2: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 423fd9: 00 53 1f 44 00 0.00 : 423fde: e9 32 ec ff ff jmpq 422c15 0.00 : 423fe3: 48 85 ed test %rbp,%rbp 0.00 : 423fe6: 0f 84 a4 e4 ff ff je 422490 0.00 : 423fec: 8b 0d 06 c3 22 00 mov 0x22c306(%rip),%ecx # 6502f8 0.00 : 423ff2: 85 c9 test %ecx,%ecx 0.00 : 423ff4: 0f 85 fa 01 00 00 jne 4241f4 0.00 : 423ffa: 44 89 44 24 30 mov %r8d,0x30(%rsp) 0.00 : 423fff: 44 89 4c 24 28 mov %r9d,0x28(%rsp) 0.00 : 424004: e8 b7 2d fe ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 424009: 4c 8b 8c 24 10 01 00 mov 0x110(%rsp),%r9 0.00 : 424010: 00 0.00 : 424011: 48 8b 30 mov (%rax),%rsi 0.00 : 424014: 41 0f b6 09 movzbl (%r9),%ecx 0.00 : 424018: 44 8b 4c 24 28 mov 0x28(%rsp),%r9d 0.00 : 42401d: 4c 0f be c1 movsbq %cl,%r8 0.00 : 424021: 42 f6 44 46 01 08 testb $0x8,0x1(%rsi,%r8,2) 0.00 : 424027: 44 8b 44 24 30 mov 0x30(%rsp),%r8d 0.00 : 42402c: 0f 84 c2 01 00 00 je 4241f4 0.00 : 424032: 31 d2 xor %edx,%edx 0.00 : 424034: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 42403a: 0f 84 b5 00 00 00 je 4240f5 0.00 : 424040: 84 c9 test %cl,%cl 0.00 : 424042: 0f 84 8e 01 00 00 je 4241d6 0.00 : 424048: 31 d2 xor %edx,%edx 0.00 : 42404a: 48 83 84 24 10 01 00 addq $0x1,0x110(%rsp) 0.00 : 424051: 00 01 0.00 : 424053: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 424059: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 42405c: 0f be f9 movsbl %cl,%edi 0.00 : 42405f: 8d 54 57 d0 lea -0x30(%rdi,%rdx,2),%edx 0.00 : 424063: 0f 84 81 00 00 00 je 4240ea 0.00 : 424069: 4c 8b 94 24 10 01 00 mov 0x110(%rsp),%r10 0.00 : 424070: 00 0.00 : 424071: 41 0f b6 0a movzbl (%r10),%ecx 0.00 : 424075: 84 c9 test %cl,%cl 0.00 : 424077: 0f 84 59 01 00 00 je 4241d6 0.00 : 42407d: 4c 0f be d9 movsbq %cl,%r11 0.00 : 424081: 42 f6 44 5e 01 08 testb $0x8,0x1(%rsi,%r11,2) 0.00 : 424087: 75 c1 jne 42404a 0.00 : 424089: eb 6a jmp 4240f5 0.00 : 42408b: 88 94 24 3e 01 00 00 mov %dl,0x13e(%rsp) 0.00 : 424092: e9 ee e3 ff ff jmpq 422485 0.00 : 424097: 44 8b 25 5a c2 22 00 mov 0x22c25a(%rip),%r12d # 6502f8 0.00 : 42409e: 45 85 e4 test %r12d,%r12d 0.00 : 4240a1: 0f 85 f0 0a 00 00 jne 424b97 0.00 : 4240a7: 48 3b 6c 24 18 cmp 0x18(%rsp),%rbp 0.00 : 4240ac: 0f 85 c7 0a 00 00 jne 424b79 0.00 : 4240b2: 4c 8b a4 24 c8 01 00 mov 0x1c8(%rsp),%r12 0.00 : 4240b9: 00 0.00 : 4240ba: 48 c7 84 24 c8 01 00 movq $0x0,0x1c8(%rsp) 0.00 : 4240c1: 00 00 00 00 00 0.00 : 4240c6: 4d 85 e4 test %r12,%r12 0.00 : 4240c9: 0f 8e 8c 0a 00 00 jle 424b5b 0.00 : 4240cf: 4c 39 64 24 70 cmp %r12,0x70(%rsp) 0.00 : 4240d4: 0f 8e 54 0a 00 00 jle 424b2e 0.00 : 4240da: c7 84 24 d8 00 00 00 movl $0x1,0xd8(%rsp) 0.00 : 4240e1: 01 00 00 00 0.00 : 4240e5: e9 1e e0 ff ff jmpq 422108 0.00 : 4240ea: 48 8b b4 24 10 01 00 mov 0x110(%rsp),%rsi 0.00 : 4240f1: 00 0.00 : 4240f2: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 4240f5: 80 f9 24 cmp $0x24,%cl 0.00 : 4240f8: 0f 85 d8 00 00 00 jne 4241d6 0.00 : 4240fe: 48 83 84 24 10 01 00 addq $0x1,0x110(%rsp) 0.00 : 424105: 00 01 0.00 : 424107: 48 63 d2 movslq %edx,%rdx 0.00 : 42410a: 48 39 54 24 70 cmp %rdx,0x70(%rsp) 0.00 : 42410f: 7f 71 jg 424182 0.00 : 424111: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 424118: 00 0.00 : 424119: e8 02 2c fe ff callq 406d20 0.00 : 42411e: be 32 05 00 00 mov $0x532,%esi 0.00 : 424123: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424128: e8 1b d2 fe ff callq 411348 0.00 : 42412d: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424132: be 4a 05 44 00 mov $0x44054a,%esi 0.00 : 424137: 31 ff xor %edi,%edi 0.00 : 424139: e8 e2 2e fe ff callq 407020 0.00 : 42413e: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424143: be b0 16 44 00 mov $0x4416b0,%esi 0.00 : 424148: 31 ff xor %edi,%edi 0.00 : 42414a: 48 89 c3 mov %rax,%rbx 0.00 : 42414d: e8 ce 2e fe ff callq 407020 0.00 : 424152: 8b 8c 24 80 00 00 00 mov 0x80(%rsp),%ecx 0.00 : 424159: 48 8b 94 24 80 00 00 mov 0x80(%rsp),%rdx 0.00 : 424160: 00 0.00 : 424161: 48 89 c6 mov %rax,%rsi 0.00 : 424164: 49 89 d9 mov %rbx,%r9 0.00 : 424167: 41 b8 03 31 44 00 mov $0x443103,%r8d 0.00 : 42416d: bf 61 05 44 00 mov $0x440561,%edi 0.00 : 424172: 31 c0 xor %eax,%eax 0.00 : 424174: f7 d1 not %ecx 0.00 : 424176: 03 8c 24 10 01 00 00 add 0x110(%rsp),%ecx 0.00 : 42417d: e8 48 d3 fe ff callq 4114ca 0.00 : 424182: 48 8b 1d ef b7 22 00 mov 0x22b7ef(%rip),%rbx # 64f978 0.00 : 424189: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 42418f: 48 8b 3c d3 mov (%rbx,%rdx,8),%rdi 0.00 : 424193: f6 47 3c 20 testb $0x20,0x3c(%rdi) 0.00 : 424197: 0f 84 d4 00 00 00 je 424271 0.00 : 42419d: f2 0f 10 07 movsd (%rdi),%xmm0 0.00 : 4241a1: f2 48 0f 2c c0 cvttsd2si %xmm0,%rax 0.00 : 4241a6: 48 85 c0 test %rax,%rax 0.00 : 4241a9: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 4241ad: 0f 89 90 00 00 00 jns 424243 0.00 : 4241b3: 48 3b 6c 24 18 cmp 0x18(%rsp),%rbp 0.00 : 4241b8: 0f 85 85 00 00 00 jne 424243 0.00 : 4241be: 48 f7 d8 neg %rax 0.00 : 4241c1: 83 84 24 dc 00 00 00 addl $0x1,0xdc(%rsp) 0.00 : 4241c8: 01 0.00 : 4241c9: 48 89 84 24 c8 01 00 mov %rax,0x1c8(%rsp) 0.00 : 4241d0: 00 0.00 : 4241d1: e9 32 df ff ff jmpq 422108 0.00 : 4241d6: be 5d 03 00 00 mov $0x35d,%esi 0.00 : 4241db: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 4241e0: e8 63 d1 fe ff callq 411348 0.00 : 4241e5: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4241ea: be d8 13 44 00 mov $0x4413d8,%esi 0.00 : 4241ef: e9 0a fa ff ff jmpq 423bfe 0.00 : 4241f4: 4d 85 e4 test %r12,%r12 0.00 : 4241f7: 0f 85 b0 00 00 00 jne 4242ad 0.00 : 4241fd: 8b 8c 24 d8 00 00 00 mov 0xd8(%rsp),%ecx 0.00 : 424204: 85 c9 test %ecx,%ecx 0.00 : 424206: 0f 85 83 00 00 00 jne 42428f 0.00 : 42420c: 48 8b 54 24 70 mov 0x70(%rsp),%rdx 0.00 : 424211: 48 39 94 24 90 00 00 cmp %rdx,0x90(%rsp) 0.00 : 424218: 00 0.00 : 424219: 0f 83 f2 fe ff ff jae 424111 0.00 : 42421f: 48 8b b4 24 90 00 00 mov 0x90(%rsp),%rsi 0.00 : 424226: 00 0.00 : 424227: 4c 8b 15 4a b7 22 00 mov 0x22b74a(%rip),%r10 # 64f978 0.00 : 42422e: 49 8b 3c f2 mov (%r10,%rsi,8),%rdi 0.00 : 424232: 48 83 c6 01 add $0x1,%rsi 0.00 : 424236: 48 89 b4 24 90 00 00 mov %rsi,0x90(%rsp) 0.00 : 42423d: 00 0.00 : 42423e: e9 50 ff ff ff jmpq 424193 0.00 : 424243: 48 8d bc 24 c0 01 00 lea 0x1c0(%rsp),%rdi 0.00 : 42424a: 00 0.00 : 42424b: 48 39 fd cmp %rdi,%rbp 0.00 : 42424e: 0f 85 b4 de ff ff jne 422108 0.00 : 424254: 48 8b ac 24 c0 01 00 mov 0x1c0(%rsp),%rbp 0.00 : 42425b: 00 0.00 : 42425c: 48 c1 fd 3f sar $0x3f,%rbp 0.00 : 424260: 83 c5 01 add $0x1,%ebp 0.00 : 424263: 89 ac 24 e4 00 00 00 mov %ebp,0xe4(%rsp) 0.00 : 42426a: 31 ed xor %ebp,%ebp 0.00 : 42426c: e9 97 de ff ff jmpq 422108 0.00 : 424271: 44 89 44 24 30 mov %r8d,0x30(%rsp) 0.00 : 424276: 44 89 4c 24 28 mov %r9d,0x28(%rsp) 0.00 : 42427b: e8 30 15 01 00 callq 4357b0 0.00 : 424280: 44 8b 4c 24 28 mov 0x28(%rsp),%r9d 0.00 : 424285: 44 8b 44 24 30 mov 0x30(%rsp),%r8d 0.00 : 42428a: e9 12 ff ff ff jmpq 4241a1 0.00 : 42428f: be 68 03 00 00 mov $0x368,%esi 0.00 : 424294: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424299: e8 aa d0 fe ff callq 411348 0.00 : 42429e: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4242a3: be 10 14 44 00 mov $0x441410,%esi 0.00 : 4242a8: e9 51 f9 ff ff jmpq 423bfe 0.00 : 4242ad: 48 83 bc 24 90 00 00 cmpq $0x1,0x90(%rsp) 0.00 : 4242b4: 00 01 0.00 : 4242b6: 75 d7 jne 42428f 0.00 : 4242b8: 48 8b 05 b9 b6 22 00 mov 0x22b6b9(%rip),%rax # 64f978 0.00 : 4242bf: 4a 8b 3c e0 mov (%rax,%r12,8),%rdi 0.00 : 4242c3: e9 cb fe ff ff jmpq 424193 0.00 : 4242c8: 45 85 c9 test %r9d,%r9d 0.00 : 4242cb: 0f 85 bf e1 ff ff jne 422490 0.00 : 4242d1: 44 8b 0d 28 c0 22 00 mov 0x22c028(%rip),%r9d # 650300 0.00 : 4242d8: 45 85 c9 test %r9d,%r9d 0.00 : 4242db: 74 4b je 424328 0.00 : 4242dd: 66 83 3d 7f b6 22 00 cmpw $0x0,0x22b67f(%rip) # 64f964 0.00 : 4242e4: 00 0.00 : 4242e5: 75 41 jne 424328 0.00 : 4242e7: be a3 03 00 00 mov $0x3a3,%esi 0.00 : 4242ec: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 4242f1: 44 89 44 24 30 mov %r8d,0x30(%rsp) 0.00 : 4242f6: e8 4d d0 fe ff callq 411348 0.00 : 4242fb: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424300: be 40 14 44 00 mov $0x441440,%esi 0.00 : 424305: 31 ff xor %edi,%edi 0.00 : 424307: 48 8b 1d c2 92 22 00 mov 0x2292c2(%rip),%rbx # 64d5d0 0.00 : 42430e: e8 0d 2d fe ff callq 407020 0.00 : 424313: 48 89 c7 mov %rax,%rdi 0.00 : 424316: 31 c0 xor %eax,%eax 0.00 : 424318: ff d3 callq *%rbx 0.00 : 42431a: 44 8b 44 24 30 mov 0x30(%rsp),%r8d 0.00 : 42431f: 66 c7 05 3c b6 22 00 movw $0x1,0x22b63c(%rip) # 64f964 0.00 : 424326: 01 00 0.00 : 424328: 8b 0d ce bf 22 00 mov 0x22bfce(%rip),%ecx # 6502fc 0.00 : 42432e: 85 c9 test %ecx,%ecx 0.00 : 424330: 0f 85 a8 00 00 00 jne 4243de 0.00 : 424336: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 42433c: e9 c7 dd ff ff jmpq 422108 0.00 : 424341: be ea 03 00 00 mov $0x3ea,%esi 0.00 : 424346: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 42434b: e8 f8 cf fe ff callq 411348 0.00 : 424350: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424355: be 10 14 44 00 mov $0x441410,%esi 0.00 : 42435a: e9 9f f8 ff ff jmpq 423bfe 0.00 : 42435f: 45 85 ff test %r15d,%r15d 0.00 : 424362: 0f 85 28 e1 ff ff jne 422490 0.00 : 424368: 44 8b 3d 91 bf 22 00 mov 0x22bf91(%rip),%r15d # 650300 0.00 : 42436f: 45 85 ff test %r15d,%r15d 0.00 : 424372: 74 55 je 4243c9 0.00 : 424374: 66 83 3d e4 b5 22 00 cmpw $0x0,0x22b5e4(%rip) # 64f960 0.00 : 42437b: 00 0.00 : 42437c: 75 4b jne 4243c9 0.00 : 42437e: be c1 03 00 00 mov $0x3c1,%esi 0.00 : 424383: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424388: 44 89 44 24 30 mov %r8d,0x30(%rsp) 0.00 : 42438d: 44 89 4c 24 28 mov %r9d,0x28(%rsp) 0.00 : 424392: e8 b1 cf fe ff callq 411348 0.00 : 424397: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42439c: be 00 15 44 00 mov $0x441500,%esi 0.00 : 4243a1: 31 ff xor %edi,%edi 0.00 : 4243a3: 48 8b 1d 26 92 22 00 mov 0x229226(%rip),%rbx # 64d5d0 0.00 : 4243aa: e8 71 2c fe ff callq 407020 0.00 : 4243af: 48 89 c7 mov %rax,%rdi 0.00 : 4243b2: 31 c0 xor %eax,%eax 0.00 : 4243b4: ff d3 callq *%rbx 0.00 : 4243b6: 44 8b 4c 24 28 mov 0x28(%rsp),%r9d 0.00 : 4243bb: 44 8b 44 24 30 mov 0x30(%rsp),%r8d 0.00 : 4243c0: 66 c7 05 97 b5 22 00 movw $0x1,0x22b597(%rip) # 64f960 0.00 : 4243c7: 01 00 0.00 : 4243c9: 8b 35 2d bf 22 00 mov 0x22bf2d(%rip),%esi # 6502fc 0.00 : 4243cf: 85 f6 test %esi,%esi 0.00 : 4243d1: 75 29 jne 4243fc 0.00 : 4243d3: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4243d9: e9 2a dd ff ff jmpq 422108 0.00 : 4243de: be a7 03 00 00 mov $0x3a7,%esi 0.00 : 4243e3: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 4243e8: e8 5b cf fe ff callq 411348 0.00 : 4243ed: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4243f2: be 70 14 44 00 mov $0x441470,%esi 0.00 : 4243f7: e9 02 f8 ff ff jmpq 423bfe 0.00 : 4243fc: be c5 03 00 00 mov $0x3c5,%esi 0.00 : 424401: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424406: e8 3d cf fe ff callq 411348 0.00 : 42440b: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424410: be 30 15 44 00 mov $0x441530,%esi 0.00 : 424415: e9 e4 f7 ff ff jmpq 423bfe 0.00 : 42441a: be ed 04 00 00 mov $0x4ed,%esi 0.00 : 42441f: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424424: e8 1f cf fe ff callq 411348 0.00 : 424429: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42442e: be 10 14 44 00 mov $0x441410,%esi 0.00 : 424433: e9 c6 f7 ff ff jmpq 423bfe 0.00 : 424438: e8 73 13 01 00 callq 4357b0 0.00 : 42443d: f2 0f 11 84 24 f8 00 movsd %xmm0,0xf8(%rsp) 0.00 : 424444: 00 00 0.00 : 424446: e9 3a dd ff ff jmpq 422185 0.00 : 42444b: 48 8b b4 24 b8 00 00 mov 0xb8(%rsp),%rsi 0.00 : 424452: 00 0.00 : 424453: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 42445a: 00 0.00 : 42445b: 48 8d 2c 30 lea (%rax,%rsi,1),%rbp 0.00 : 42445f: 48 2b ac 24 c0 00 00 sub 0xc0(%rsp),%rbp 0.00 : 424466: 00 0.00 : 424467: 4c 8d 7c 35 00 lea 0x0(%rbp,%rsi,1),%r15 0.00 : 42446c: 4c 89 fe mov %r15,%rsi 0.00 : 42446f: e8 ac 2d fe ff callq 407220 0.00 : 424474: 48 85 c0 test %rax,%rax 0.00 : 424477: 48 89 c3 mov %rax,%rbx 0.00 : 42447a: 0f 84 8c 01 00 00 je 42460c 0.00 : 424480: 48 8b 84 24 b0 00 00 mov 0xb0(%rsp),%rax 0.00 : 424487: 00 0.00 : 424488: 48 2b 84 24 a8 00 00 sub 0xa8(%rsp),%rax 0.00 : 42448f: 00 0.00 : 424490: 48 01 ac 24 c0 00 00 add %rbp,0xc0(%rsp) 0.00 : 424497: 00 0.00 : 424498: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 42449c: 48 8b 84 24 40 01 00 mov 0x140(%rsp),%rax 0.00 : 4244a3: 00 0.00 : 4244a4: 48 89 94 24 b0 00 00 mov %rdx,0xb0(%rsp) 0.00 : 4244ab: 00 0.00 : 4244ac: c6 00 25 movb $0x25,(%rax) 0.00 : 4244af: 44 8b ac 24 dc 00 00 mov 0xdc(%rsp),%r13d 0.00 : 4244b6: 00 0.00 : 4244b7: 48 83 c0 01 add $0x1,%rax 0.00 : 4244bb: 45 85 ed test %r13d,%r13d 0.00 : 4244be: 0f 85 d6 00 00 00 jne 42459a 0.00 : 4244c4: 80 bc 24 3e 01 00 00 cmpb $0x0,0x13e(%rsp) 0.00 : 4244cb: 00 0.00 : 4244cc: 0f 85 63 01 00 00 jne 424635 0.00 : 4244d2: 44 8b a4 24 e0 00 00 mov 0xe0(%rsp),%r12d 0.00 : 4244d9: 00 0.00 : 4244da: 45 85 e4 test %r12d,%r12d 0.00 : 4244dd: 0f 85 66 01 00 00 jne 424649 0.00 : 4244e3: 44 8b 94 24 00 01 00 mov 0x100(%rsp),%r10d 0.00 : 4244ea: 00 0.00 : 4244eb: 45 85 d2 test %r10d,%r10d 0.00 : 4244ee: 0f 85 ac 01 00 00 jne 4246a0 0.00 : 4244f4: 45 85 f6 test %r14d,%r14d 0.00 : 4244f7: 0f 85 af 01 00 00 jne 4246ac 0.00 : 4244fd: c7 00 2a 2e 2a 00 movl $0x2a2e2a,(%rax) 0.00 : 424503: 0f b6 8c 24 d4 00 00 movzbl 0xd4(%rsp),%ecx 0.00 : 42450a: 00 0.00 : 42450b: c6 40 04 00 movb $0x0,0x4(%rax) 0.00 : 42450f: 88 48 03 mov %cl,0x3(%rax) 0.00 : 424512: 4c 8b 84 24 c0 01 00 mov 0x1c0(%rsp),%r8 0.00 : 424519: 00 0.00 : 42451a: 44 8b 8c 24 c8 01 00 mov 0x1c8(%rsp),%r9d 0.00 : 424521: 00 0.00 : 424522: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx 0.00 : 424529: 48 8b b4 24 c0 00 00 mov 0xc0(%rsp),%rsi 0.00 : 424530: 00 0.00 : 424531: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 424538: 00 0.00 : 424539: ba 01 00 00 00 mov $0x1,%edx 0.00 : 42453e: f2 0f 10 84 24 f8 00 movsd 0xf8(%rsp),%xmm0 0.00 : 424545: 00 00 0.00 : 424547: b8 01 00 00 00 mov $0x1,%eax 0.00 : 42454c: 44 89 04 24 mov %r8d,(%rsp) 0.00 : 424550: 4c 8b 84 24 40 01 00 mov 0x140(%rsp),%r8 0.00 : 424557: 00 0.00 : 424558: e8 53 2c fe ff callq 4071b0 <__snprintf_chk@plt> 0.00 : 42455d: 48 98 cltq 0.00 : 42455f: 48 3b 84 24 c0 00 00 cmp 0xc0(%rsp),%rax 0.00 : 424566: 00 0.00 : 424567: 73 5a jae 4245c3 0.00 : 424569: 45 85 f6 test %r14d,%r14d 0.00 : 42456c: 75 38 jne 4245a6 0.00 : 42456e: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 424575: 00 0.00 : 424576: e8 b5 27 fe ff callq 406d30 0.00 : 42457b: 48 8b ac 24 10 01 00 mov 0x110(%rsp),%rbp 0.00 : 424582: 00 0.00 : 424583: 48 29 84 24 c0 00 00 sub %rax,0xc0(%rsp) 0.00 : 42458a: 00 0.00 : 42458b: 48 01 84 24 b0 00 00 add %rax,0xb0(%rsp) 0.00 : 424592: 00 0.00 : 424593: 31 c0 xor %eax,%eax 0.00 : 424595: e9 29 dd ff ff jmpq 4222c3 0.00 : 42459a: c6 00 2d movb $0x2d,(%rax) 0.00 : 42459d: 48 83 c0 01 add $0x1,%rax 0.00 : 4245a1: e9 1e ff ff ff jmpq 4244c4 0.00 : 4245a6: 44 8b 35 87 bd 22 00 mov 0x22bd87(%rip),%r14d # 650334 0.00 : 4245ad: 45 85 f6 test %r14d,%r14d 0.00 : 4245b0: 75 bc jne 42456e 0.00 : 4245b2: be fb 47 44 00 mov $0x4447fb,%esi 0.00 : 4245b7: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4245bc: e8 6f 2c fe ff callq 407230 0.00 : 4245c1: eb ab jmp 42456e 0.00 : 4245c3: 48 89 dd mov %rbx,%rbp 0.00 : 4245c6: 48 2b 84 24 c0 00 00 sub 0xc0(%rsp),%rax 0.00 : 4245cd: 00 0.00 : 4245ce: 48 89 df mov %rbx,%rdi 0.00 : 4245d1: 4e 8d 24 38 lea (%rax,%r15,1),%r12 0.00 : 4245d5: 4d 01 e7 add %r12,%r15 0.00 : 4245d8: 4c 89 fe mov %r15,%rsi 0.00 : 4245db: e8 40 2c fe ff callq 407220 0.00 : 4245e0: 48 85 c0 test %rax,%rax 0.00 : 4245e3: 48 89 c3 mov %rax,%rbx 0.00 : 4245e6: 74 43 je 42462b 0.00 : 4245e8: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 4245ef: 00 0.00 : 4245f0: 4c 01 a4 24 c0 00 00 add %r12,0xc0(%rsp) 0.00 : 4245f7: 00 0.00 : 4245f8: 48 29 ef sub %rbp,%rdi 0.00 : 4245fb: 48 8d 0c 38 lea (%rax,%rdi,1),%rcx 0.00 : 4245ff: 48 89 8c 24 b0 00 00 mov %rcx,0xb0(%rsp) 0.00 : 424606: 00 0.00 : 424607: e9 06 ff ff ff jmpq 424512 0.00 : 42460c: be f2 04 00 00 mov $0x4f2,%esi 0.00 : 424611: e9 dc f7 ff ff jmpq 423df2 0.00 : 424616: 48 89 cf mov %rcx,%rdi 0.00 : 424619: e8 92 1a 01 00 callq 4360b0 0.00 : 42461e: 48 89 84 24 18 01 00 mov %rax,0x118(%rsp) 0.00 : 424625: 00 0.00 : 424626: e9 3c d9 ff ff jmpq 421f67 0.00 : 42462b: be 14 05 00 00 mov $0x514,%esi 0.00 : 424630: e9 bd f7 ff ff jmpq 423df2 0.00 : 424635: 0f b6 ac 24 3e 01 00 movzbl 0x13e(%rsp),%ebp 0.00 : 42463c: 00 0.00 : 42463d: 40 88 28 mov %bpl,(%rax) 0.00 : 424640: 48 83 c0 01 add $0x1,%rax 0.00 : 424644: e9 89 fe ff ff jmpq 4244d2 0.00 : 424649: c6 00 23 movb $0x23,(%rax) 0.00 : 42464c: 48 83 c0 01 add $0x1,%rax 0.00 : 424650: e9 8e fe ff ff jmpq 4244e3 0.00 : 424655: be 76 02 00 00 mov $0x276,%esi 0.00 : 42465a: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 42465f: e8 e4 cc fe ff callq 411348 0.00 : 424664: e8 87 29 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 424669: 8b 38 mov (%rax),%edi 0.00 : 42466b: e8 50 28 fe ff callq 406ec0 0.00 : 424670: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424675: 48 89 c3 mov %rax,%rbx 0.00 : 424678: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 42467d: 31 ff xor %edi,%edi 0.00 : 42467f: e8 9c 29 fe ff callq 407020 0.00 : 424684: 49 89 d8 mov %rbx,%r8 0.00 : 424687: 48 89 c7 mov %rax,%rdi 0.00 : 42468a: b9 00 02 00 00 mov $0x200,%ecx 0.00 : 42468f: ba e3 03 44 00 mov $0x4403e3,%edx 0.00 : 424694: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 424699: 31 c0 xor %eax,%eax 0.00 : 42469b: e8 2a ce fe ff callq 4114ca 0.00 : 4246a0: c6 00 30 movb $0x30,(%rax) 0.00 : 4246a3: 48 83 c0 01 add $0x1,%rax 0.00 : 4246a7: e9 48 fe ff ff jmpq 4244f4 0.00 : 4246ac: c7 40 01 2a 2e 2a 00 movl $0x2a2e2a,0x1(%rax) 0.00 : 4246b3: c6 00 27 movb $0x27,(%rax) 0.00 : 4246b6: 44 0f b6 8c 24 d4 00 movzbl 0xd4(%rsp),%r9d 0.00 : 4246bd: 00 00 0.00 : 4246bf: c6 40 05 00 movb $0x0,0x5(%rax) 0.00 : 4246c3: 44 88 48 04 mov %r9b,0x4(%rax) 0.00 : 4246c7: 44 8b 1d 66 bc 22 00 mov 0x22bc66(%rip),%r11d # 650334 0.00 : 4246ce: 45 85 db test %r11d,%r11d 0.00 : 4246d1: 0f 85 3b fe ff ff jne 424512 0.00 : 4246d7: be 03 31 44 00 mov $0x443103,%esi 0.00 : 4246dc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4246e1: e8 4a 2b fe ff callq 407230 0.00 : 4246e6: e9 27 fe ff ff jmpq 424512 0.00 : 4246eb: be 67 04 00 00 mov $0x467,%esi 0.00 : 4246f0: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 4246f5: e8 4e cc fe ff callq 411348 0.00 : 4246fa: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4246ff: be 10 14 44 00 mov $0x441410,%esi 0.00 : 424704: e9 f5 f4 ff ff jmpq 423bfe 0.00 : 424709: 48 83 bc 24 90 00 00 cmpq $0x1,0x90(%rsp) 0.00 : 424710: 00 01 0.00 : 424712: 75 d7 jne 4246eb 0.00 : 424714: 48 8b 2d 5d b2 22 00 mov 0x22b25d(%rip),%rbp # 64f978 0.00 : 42471b: 4a 8b 7c e5 00 mov 0x0(%rbp,%r12,8),%rdi 0.00 : 424720: 48 89 bc 24 18 01 00 mov %rdi,0x118(%rsp) 0.00 : 424727: 00 0.00 : 424728: e9 ea dd ff ff jmpq 422517 0.00 : 42472d: 4c 89 ed mov %r13,%rbp 0.00 : 424730: b8 01 00 00 00 mov $0x1,%eax 0.00 : 424735: e9 b8 d4 ff ff jmpq 421bf2 0.00 : 42473a: 4d 85 e4 test %r12,%r12 0.00 : 42473d: 0f 84 07 f8 ff ff je 423f4a 0.00 : 424743: 48 83 bc 24 90 00 00 cmpq $0x1,0x90(%rsp) 0.00 : 42474a: 00 01 0.00 : 42474c: 0f 85 be 03 00 00 jne 424b10 0.00 : 424752: 4c 8b 2d 1f b2 22 00 mov 0x22b21f(%rip),%r13 # 64f978 0.00 : 424759: 4f 8b 74 e5 00 mov 0x0(%r13,%r12,8),%r14 0.00 : 42475e: 4c 89 b4 24 18 01 00 mov %r14,0x118(%rsp) 0.00 : 424765: 00 0.00 : 424766: e9 2a f8 ff ff jmpq 423f95 0.00 : 42476b: 88 8c 24 3e 01 00 00 mov %cl,0x13e(%rsp) 0.00 : 424772: e9 0e dd ff ff jmpq 422485 0.00 : 424777: be b6 03 00 00 mov $0x3b6,%esi 0.00 : 42477c: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424781: e8 c2 cb fe ff callq 411348 0.00 : 424786: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42478b: be d0 14 44 00 mov $0x4414d0,%esi 0.00 : 424790: e9 69 f4 ff ff jmpq 423bfe 0.00 : 424795: 48 c7 84 24 c8 00 00 movq $0x441f20,0xc8(%rsp) 0.00 : 42479c: 00 20 1f 44 00 0.00 : 4247a1: c6 84 24 3f 01 00 00 movb $0x58,0x13f(%rsp) 0.00 : 4247a8: 58 0.00 : 4247a9: e9 31 e3 ff ff jmpq 422adf 0.00 : 4247ae: 85 c0 test %eax,%eax 0.00 : 4247b0: 75 46 jne 4247f8 0.00 : 4247b2: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 4247b7: 48 39 84 24 90 00 00 cmp %rax,0x90(%rsp) 0.00 : 4247be: 00 0.00 : 4247bf: 0f 83 75 d4 ff ff jae 421c3a 0.00 : 4247c5: be 3d 05 00 00 mov $0x53d,%esi 0.00 : 4247ca: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 4247cf: e8 74 cb fe ff callq 411348 0.00 : 4247d4: 31 ff xor %edi,%edi 0.00 : 4247d6: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4247db: be 80 16 44 00 mov $0x441680,%esi 0.00 : 4247e0: 48 8b 1d e9 8d 22 00 mov 0x228de9(%rip),%rbx # 64d5d0 0.00 : 4247e7: e8 34 28 fe ff callq 407020 0.00 : 4247ec: 48 89 c7 mov %rax,%rdi 0.00 : 4247ef: 31 c0 xor %eax,%eax 0.00 : 4247f1: ff d3 callq *%rbx 0.00 : 4247f3: e9 42 d4 ff ff jmpq 421c3a 0.00 : 4247f8: be 3a 05 00 00 mov $0x53a,%esi 0.00 : 4247fd: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424802: e8 41 cb fe ff callq 411348 0.00 : 424807: 31 ff xor %edi,%edi 0.00 : 424809: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42480e: be 40 16 44 00 mov $0x441640,%esi 0.00 : 424813: 4c 8b 35 b6 8d 22 00 mov 0x228db6(%rip),%r14 # 64d5d0 0.00 : 42481a: e8 01 28 fe ff callq 407020 0.00 : 42481f: 48 89 c7 mov %rax,%rdi 0.00 : 424822: 31 c0 xor %eax,%eax 0.00 : 424824: 41 ff d6 callq *%r14 0.00 : 424827: eb 89 jmp 4247b2 0.00 : 424829: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 424830: 00 0.00 : 424831: 48 01 ff add %rdi,%rdi 0.00 : 424834: e8 67 23 fe ff callq 406ba0 0.00 : 424839: 48 85 c0 test %rax,%rax 0.00 : 42483c: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 424843: 00 0.00 : 424844: 74 4e je 424894 0.00 : 424846: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 42484d: 00 0.00 : 42484e: 4c 89 ee mov %r13,%rsi 0.00 : 424851: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 424855: 4c 89 ff mov %r15,%rdi 0.00 : 424858: e8 f3 26 fe ff callq 406f50 0.00 : 42485d: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 424864: 00 0.00 : 424865: 4c 3b 6c 24 48 cmp 0x48(%rsp),%r13 0.00 : 42486a: 74 08 je 424874 0.00 : 42486c: 4c 89 ef mov %r13,%rdi 0.00 : 42486f: e8 ac 24 fe ff callq 406d20 0.00 : 424874: 4c 8b 8c 24 40 01 00 mov 0x140(%rsp),%r9 0.00 : 42487b: 00 0.00 : 42487c: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 424883: 00 0.00 : 424884: 49 01 f9 add %rdi,%r9 0.00 : 424887: 4c 89 8c 24 20 01 00 mov %r9,0x120(%rsp) 0.00 : 42488e: 00 0.00 : 42488f: e9 9c de ff ff jmpq 422730 0.00 : 424894: be 97 04 00 00 mov $0x497,%esi 0.00 : 424899: e9 74 ef ff ff jmpq 423812 0.00 : 42489e: 45 31 f6 xor %r14d,%r14d 0.00 : 4248a1: e9 da dd ff ff jmpq 422680 0.00 : 4248a6: 48 63 d0 movslq %eax,%rdx 0.00 : 4248a9: 31 ff xor %edi,%edi 0.00 : 4248ab: 4c 89 f1 mov %r14,%rcx 0.00 : 4248ae: 48 0f af d3 imul %rbx,%rdx 0.00 : 4248b2: 4c 89 e6 mov %r12,%rsi 0.00 : 4248b5: e8 36 21 fe ff callq 4069f0 0.00 : 4248ba: 85 c0 test %eax,%eax 0.00 : 4248bc: 0f 8e f6 d6 ff ff jle 421fb8 0.00 : 4248c2: 48 85 db test %rbx,%rbx 0.00 : 4248c5: 0f 84 ed d6 ff ff je 421fb8 0.00 : 4248cb: 45 31 ed xor %r13d,%r13d 0.00 : 4248ce: 48 63 15 33 01 23 00 movslq 0x230133(%rip),%rdx # 654a08 0.00 : 4248d5: 31 ff xor %edi,%edi 0.00 : 4248d7: 4c 89 f1 mov %r14,%rcx 0.00 : 4248da: 4c 89 e6 mov %r12,%rsi 0.00 : 4248dd: 48 0f af d3 imul %rbx,%rdx 0.00 : 4248e1: e8 0a 21 fe ff callq 4069f0 0.00 : 4248e6: 85 c0 test %eax,%eax 0.00 : 4248e8: 0f 8e cd d6 ff ff jle 421fbb 0.00 : 4248ee: 49 83 c5 01 add $0x1,%r13 0.00 : 4248f2: 48 83 eb 01 sub $0x1,%rbx 0.00 : 4248f6: 0f 84 bf d6 ff ff je 421fbb 0.00 : 4248fc: 48 98 cltq 0.00 : 4248fe: 49 01 c4 add %rax,%r12 0.00 : 424901: eb cb jmp 4248ce 0.00 : 424903: 48 8b ac 24 b8 00 00 mov 0xb8(%rsp),%rbp 0.00 : 42490a: 00 0.00 : 42490b: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 424912: 00 0.00 : 424913: 48 01 ed add %rbp,%rbp 0.00 : 424916: 48 89 ee mov %rbp,%rsi 0.00 : 424919: e8 02 29 fe ff callq 407220 0.00 : 42491e: 48 85 c0 test %rax,%rax 0.00 : 424921: 48 89 c7 mov %rax,%rdi 0.00 : 424924: 0f 84 f1 05 00 00 je 424f1b 0.00 : 42492a: 48 8b 84 24 b0 00 00 mov 0xb0(%rsp),%rax 0.00 : 424931: 00 0.00 : 424932: 48 2b 84 24 a8 00 00 sub 0xa8(%rsp),%rax 0.00 : 424939: 00 0.00 : 42493a: 4c 8b b4 24 b8 00 00 mov 0xb8(%rsp),%r14 0.00 : 424941: 00 0.00 : 424942: 4c 8d 1c 07 lea (%rdi,%rax,1),%r11 0.00 : 424946: 4c 89 9c 24 b0 00 00 mov %r11,0xb0(%rsp) 0.00 : 42494d: 00 0.00 : 42494e: 41 0f b6 07 movzbl (%r15),%eax 0.00 : 424952: 4c 89 b4 24 c0 00 00 mov %r14,0xc0(%rsp) 0.00 : 424959: 00 0.00 : 42495a: e9 1c e5 ff ff jmpq 422e7b 0.00 : 42495f: 4f 8d 3c 24 lea (%r12,%r12,1),%r15 0.00 : 424963: 48 89 ef mov %rbp,%rdi 0.00 : 424966: 4c 89 fe mov %r15,%rsi 0.00 : 424969: e8 b2 28 fe ff callq 407220 0.00 : 42496e: 48 85 c0 test %rax,%rax 0.00 : 424971: 48 89 c3 mov %rax,%rbx 0.00 : 424974: 0f 84 a9 00 00 00 je 424a23 0.00 : 42497a: 4c 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%r9 0.00 : 424981: 00 0.00 : 424982: 4c 89 a4 24 c0 00 00 mov %r12,0xc0(%rsp) 0.00 : 424989: 00 0.00 : 42498a: 49 29 e9 sub %rbp,%r9 0.00 : 42498d: 4e 8d 1c 08 lea (%rax,%r9,1),%r11 0.00 : 424991: 4c 89 9c 24 b0 00 00 mov %r11,0xb0(%rsp) 0.00 : 424998: 00 0.00 : 424999: e9 55 e3 ff ff jmpq 422cf3 0.00 : 42499e: 4c 8d 04 1b lea (%rbx,%rbx,1),%r8 0.00 : 4249a2: 4c 89 f7 mov %r14,%rdi 0.00 : 4249a5: 4c 89 c6 mov %r8,%rsi 0.00 : 4249a8: 4c 89 84 24 b8 00 00 mov %r8,0xb8(%rsp) 0.00 : 4249af: 00 0.00 : 4249b0: e8 6b 28 fe ff callq 407220 0.00 : 4249b5: 48 85 c0 test %rax,%rax 0.00 : 4249b8: 48 89 84 24 a8 00 00 mov %rax,0xa8(%rsp) 0.00 : 4249bf: 00 0.00 : 4249c0: 74 4a je 424a0c 0.00 : 4249c2: 4c 8b 94 24 b0 00 00 mov 0xb0(%rsp),%r10 0.00 : 4249c9: 00 0.00 : 4249ca: 48 01 9c 24 c0 00 00 add %rbx,0xc0(%rsp) 0.00 : 4249d1: 00 0.00 : 4249d2: 4d 29 f2 sub %r14,%r10 0.00 : 4249d5: 4c 39 a4 24 c0 00 00 cmp %r12,0xc0(%rsp) 0.00 : 4249dc: 00 0.00 : 4249dd: 4e 8d 0c 10 lea (%rax,%r10,1),%r9 0.00 : 4249e1: 4c 89 8c 24 b0 00 00 mov %r9,0xb0(%rsp) 0.00 : 4249e8: 00 0.00 : 4249e9: 0f 83 7d d9 ff ff jae 42236c 0.00 : 4249ef: 49 89 c6 mov %rax,%r14 0.00 : 4249f2: 48 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%rbx 0.00 : 4249f9: 00 0.00 : 4249fa: eb a2 jmp 42499e 0.00 : 4249fc: c7 84 24 e4 00 00 00 movl $0x0,0xe4(%rsp) 0.00 : 424a03: 00 00 00 00 0.00 : 424a07: e9 24 da ff ff jmpq 422430 0.00 : 424a0c: be e8 02 00 00 mov $0x2e8,%esi 0.00 : 424a11: e9 6d ee ff ff jmpq 423883 0.00 : 424a16: 4c 89 ed mov %r13,%rbp 0.00 : 424a19: b8 01 00 00 00 mov $0x1,%eax 0.00 : 424a1e: e9 07 d2 ff ff jmpq 421c2a 0.00 : 424a23: be d4 04 00 00 mov $0x4d4,%esi 0.00 : 424a28: e9 c5 f3 ff ff jmpq 423df2 0.00 : 424a2d: 48 8b 05 f4 ff 22 00 mov 0x22fff4(%rip),%rax # 654a28 0.00 : 424a34: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 424a39: 80 38 00 cmpb $0x0,(%rax) 0.00 : 424a3c: 44 0f 45 f3 cmovne %ebx,%r14d 0.00 : 424a40: e9 40 da ff ff jmpq 422485 0.00 : 424a45: 48 8b 8c 24 18 01 00 mov 0x118(%rsp),%rcx 0.00 : 424a4c: 00 0.00 : 424a4d: f2 0f 10 0d 33 d5 01 movsd 0x1d533(%rip),%xmm1 # 441f88 <_IO_stdin_used+0x6468> 0.00 : 424a54: 00 0.00 : 424a55: f2 0f 10 01 movsd (%rcx),%xmm0 0.00 : 424a59: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 424a5d: 73 73 jae 424ad2 0.00 : 424a5f: f2 48 0f 2c d8 cvttsd2si %xmm0,%rbx 0.00 : 424a64: 8b 15 96 b8 22 00 mov 0x22b896(%rip),%edx # 650300 0.00 : 424a6a: 85 d2 test %edx,%edx 0.00 : 424a6c: 74 35 je 424aa3 0.00 : 424a6e: 48 81 fb ff 00 00 00 cmp $0xff,%rbx 0.00 : 424a75: 76 2c jbe 424aa3 0.00 : 424a77: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424a7c: be d7 03 00 00 mov $0x3d7,%esi 0.00 : 424a81: e8 c2 c8 fe ff callq 411348 0.00 : 424a86: 4c 8b bc 24 18 01 00 mov 0x118(%rsp),%r15 0.00 : 424a8d: 00 0.00 : 424a8e: bf 60 15 44 00 mov $0x441560,%edi 0.00 : 424a93: b8 01 00 00 00 mov $0x1,%eax 0.00 : 424a98: f2 41 0f 10 07 movsd (%r15),%xmm0 0.00 : 424a9d: ff 15 2d 8b 22 00 callq *0x228b2d(%rip) # 64d5d0 0.00 : 424aa3: 48 8b b4 24 40 01 00 mov 0x140(%rsp),%rsi 0.00 : 424aaa: 00 0.00 : 424aab: 88 1e mov %bl,(%rsi) 0.00 : 424aad: 48 c7 84 24 c0 01 00 movq $0x1,0x1c0(%rsp) 0.00 : 424ab4: 00 01 00 00 00 0.00 : 424ab9: 4c 8b bc 24 40 01 00 mov 0x140(%rsp),%r15 0.00 : 424ac0: 00 0.00 : 424ac1: 48 c7 84 24 f0 00 00 movq $0x441f53,0xf0(%rsp) 0.00 : 424ac8: 00 53 1f 44 00 0.00 : 424acd: e9 43 e1 ff ff jmpq 422c15 0.00 : 424ad2: f2 0f 5c c1 subsd %xmm1,%xmm0 0.00 : 424ad6: 49 b8 00 00 00 00 00 movabs $0x8000000000000000,%r8 0.00 : 424add: 00 00 80 0.00 : 424ae0: f2 48 0f 2c d8 cvttsd2si %xmm0,%rbx 0.00 : 424ae5: 4c 31 c3 xor %r8,%rbx 0.00 : 424ae8: e9 77 ff ff ff jmpq 424a64 0.00 : 424aed: f6 c2 20 test $0x20,%dl 0.00 : 424af0: 0f 85 bb f4 ff ff jne 423fb1 0.00 : 424af6: 48 89 cf mov %rcx,%rdi 0.00 : 424af9: e8 b2 0c 01 00 callq 4357b0 0.00 : 424afe: 4c 8b 8c 24 18 01 00 mov 0x118(%rsp),%r9 0.00 : 424b05: 00 0.00 : 424b06: 41 0f b7 51 3c movzwl 0x3c(%r9),%edx 0.00 : 424b0b: e9 a1 f4 ff ff jmpq 423fb1 0.00 : 424b10: be cb 03 00 00 mov $0x3cb,%esi 0.00 : 424b15: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424b1a: e8 29 c8 fe ff callq 411348 0.00 : 424b1f: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424b24: be 10 14 44 00 mov $0x441410,%esi 0.00 : 424b29: e9 d0 f0 ff ff jmpq 423bfe 0.00 : 424b2e: be 4e 03 00 00 mov $0x34e,%esi 0.00 : 424b33: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424b38: e8 0b c8 fe ff callq 411348 0.00 : 424b3d: be 68 13 44 00 mov $0x441368,%esi 0.00 : 424b42: 31 ff xor %edi,%edi 0.00 : 424b44: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424b49: e8 d2 24 fe ff callq 407020 0.00 : 424b4e: 4c 89 e6 mov %r12,%rsi 0.00 : 424b51: 48 89 c7 mov %rax,%rdi 0.00 : 424b54: 31 c0 xor %eax,%eax 0.00 : 424b56: e8 6f c9 fe ff callq 4114ca 0.00 : 424b5b: be 4c 03 00 00 mov $0x34c,%esi 0.00 : 424b60: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424b65: e8 de c7 fe ff callq 411348 0.00 : 424b6a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424b6f: be 48 13 44 00 mov $0x441348,%esi 0.00 : 424b74: e9 85 f0 ff ff jmpq 423bfe 0.00 : 424b79: be 50 03 00 00 mov $0x350,%esi 0.00 : 424b7e: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424b83: e8 c0 c7 fe ff callq 411348 0.00 : 424b88: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424b8d: be a8 13 44 00 mov $0x4413a8,%esi 0.00 : 424b92: e9 67 f0 ff ff jmpq 423bfe 0.00 : 424b97: be 46 03 00 00 mov $0x346,%esi 0.00 : 424b9c: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424ba1: e8 a2 c7 fe ff callq 411348 0.00 : 424ba6: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424bab: be 20 13 44 00 mov $0x441320,%esi 0.00 : 424bb0: e9 49 f0 ff ff jmpq 423bfe 0.00 : 424bb5: 48 89 fe mov %rdi,%rsi 0.00 : 424bb8: 48 89 c7 mov %rax,%rdi 0.00 : 424bbb: e8 60 26 fe ff callq 407220 0.00 : 424bc0: e9 48 e4 ff ff jmpq 42300d 0.00 : 424bc5: b9 08 1f 44 00 mov $0x441f08,%ecx 0.00 : 424bca: ba 22 04 00 00 mov $0x422,%edx 0.00 : 424bcf: be d0 03 44 00 mov $0x4403d0,%esi 0.00 : 424bd4: bf ff 04 44 00 mov $0x4404ff,%edi 0.00 : 424bd9: e8 42 1f fe ff callq 406b20 <__assert_fail@plt> 0.00 : 424bde: 48 01 c0 add %rax,%rax 0.00 : 424be1: 48 89 84 24 78 01 00 mov %rax,0x178(%rsp) 0.00 : 424be8: 00 0.00 : 424be9: e9 f8 e3 ff ff jmpq 422fe6 0.00 : 424bee: 48 89 e8 mov %rbp,%rax 0.00 : 424bf1: 31 d2 xor %edx,%edx 0.00 : 424bf3: 49 f7 f4 div %r12 0.00 : 424bf6: e9 b7 da ff ff jmpq 4226b2 0.00 : 424bfb: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 424c02: 00 0.00 : 424c03: 48 01 ff add %rdi,%rdi 0.00 : 424c06: e8 95 1f fe ff callq 406ba0 0.00 : 424c0b: 48 85 c0 test %rax,%rax 0.00 : 424c0e: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 424c15: 00 0.00 : 424c16: 74 4e je 424c66 0.00 : 424c18: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 424c1f: 00 0.00 : 424c20: 48 89 de mov %rbx,%rsi 0.00 : 424c23: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 424c27: 4c 89 ff mov %r15,%rdi 0.00 : 424c2a: e8 21 23 fe ff callq 406f50 0.00 : 424c2f: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 424c36: 00 0.00 : 424c37: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 424c3c: 74 08 je 424c46 0.00 : 424c3e: 48 89 df mov %rbx,%rdi 0.00 : 424c41: e8 da 20 fe ff callq 406d20 0.00 : 424c46: 4c 8b 84 24 40 01 00 mov 0x140(%rsp),%r8 0.00 : 424c4d: 00 0.00 : 424c4e: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 424c55: 00 0.00 : 424c56: 49 01 d0 add %rdx,%r8 0.00 : 424c59: 4c 89 84 24 20 01 00 mov %r8,0x120(%rsp) 0.00 : 424c60: 00 0.00 : 424c61: e9 34 da ff ff jmpq 42269a 0.00 : 424c66: be 92 04 00 00 mov $0x492,%esi 0.00 : 424c6b: e9 a2 eb ff ff jmpq 423812 0.00 : 424c70: 4c 8b a4 24 b8 00 00 mov 0xb8(%rsp),%r12 0.00 : 424c77: 00 0.00 : 424c78: 48 8b bc 24 a8 00 00 mov 0xa8(%rsp),%rdi 0.00 : 424c7f: 00 0.00 : 424c80: 4d 01 e4 add %r12,%r12 0.00 : 424c83: 4c 89 e6 mov %r12,%rsi 0.00 : 424c86: e8 95 25 fe ff callq 407220 0.00 : 424c8b: 48 85 c0 test %rax,%rax 0.00 : 424c8e: 48 89 c5 mov %rax,%rbp 0.00 : 424c91: 74 5a je 424ced 0.00 : 424c93: 4c 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%r9 0.00 : 424c9a: 00 0.00 : 424c9b: 4c 2b 8c 24 a8 00 00 sub 0xa8(%rsp),%r9 0.00 : 424ca2: 00 0.00 : 424ca3: 4c 8b 9c 24 b8 00 00 mov 0xb8(%rsp),%r11 0.00 : 424caa: 00 0.00 : 424cab: 4e 8d 34 08 lea (%rax,%r9,1),%r14 0.00 : 424caf: 4c 89 9c 24 c0 00 00 mov %r11,0xc0(%rsp) 0.00 : 424cb6: 00 0.00 : 424cb7: 4c 89 b4 24 b0 00 00 mov %r14,0xb0(%rsp) 0.00 : 424cbe: 00 0.00 : 424cbf: e9 e3 e4 ff ff jmpq 4231a7 0.00 : 424cc4: 84 c9 test %cl,%cl 0.00 : 424cc6: 0f 84 42 e4 ff ff je 42310e 0.00 : 424ccc: 84 d2 test %dl,%dl 0.00 : 424cce: 0f 84 3a e4 ff ff je 42310e 0.00 : 424cd4: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424cd9: be e0 12 44 00 mov $0x4412e0,%esi 0.00 : 424cde: 31 ff xor %edi,%edi 0.00 : 424ce0: e8 3b 23 fe ff callq 407020 0.00 : 424ce5: 48 89 c3 mov %rax,%rbx 0.00 : 424ce8: e9 d8 f0 ff ff jmpq 423dc5 0.00 : 424ced: be bd 04 00 00 mov $0x4bd,%esi 0.00 : 424cf2: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424cf7: e8 4c c6 fe ff callq 411348 0.00 : 424cfc: e8 ef 22 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 424d01: 8b 38 mov (%rax),%edi 0.00 : 424d03: e8 b8 21 fe ff callq 406ec0 0.00 : 424d08: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424d0d: 49 89 c7 mov %rax,%r15 0.00 : 424d10: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 424d15: 31 ff xor %edi,%edi 0.00 : 424d17: e8 04 23 fe ff callq 407020 0.00 : 424d1c: 4d 89 f8 mov %r15,%r8 0.00 : 424d1f: 48 89 c7 mov %rax,%rdi 0.00 : 424d22: 4c 89 e1 mov %r12,%rcx 0.00 : 424d25: ba e3 03 44 00 mov $0x4403e3,%edx 0.00 : 424d2a: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 424d2f: 31 c0 xor %eax,%eax 0.00 : 424d31: e8 94 c7 fe ff callq 4114ca 0.00 : 424d36: 48 89 84 24 c8 01 00 mov %rax,0x1c8(%rsp) 0.00 : 424d3d: 00 0.00 : 424d3e: e9 bf e0 ff ff jmpq 422e02 0.00 : 424d43: 48 c7 84 24 f0 00 00 movq $0x441f51,0xf0(%rsp) 0.00 : 424d4a: 00 51 1f 44 00 0.00 : 424d4f: e9 98 e0 ff ff jmpq 422dec 0.00 : 424d54: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 424d5b: 00 0.00 : 424d5c: 4c 39 fb cmp %r15,%rbx 0.00 : 424d5f: 0f 84 c7 00 00 00 je 424e2c 0.00 : 424d65: 44 0f b6 84 24 3e 01 movzbl 0x13e(%rsp),%r8d 0.00 : 424d6c: 00 00 0.00 : 424d6e: 49 83 ef 01 sub $0x1,%r15 0.00 : 424d72: 45 88 07 mov %r8b,(%r15) 0.00 : 424d75: e9 19 e0 ff ff jmpq 422d93 0.00 : 424d7a: 49 89 fc mov %rdi,%r12 0.00 : 424d7d: 4d 29 fc sub %r15,%r12 0.00 : 424d80: 4c 39 a4 24 c0 01 00 cmp %r12,0x1c0(%rsp) 0.00 : 424d87: 00 0.00 : 424d88: 7f 26 jg 424db0 0.00 : 424d8a: e9 e7 df ff ff jmpq 422d76 0.00 : 424d8f: 49 83 ef 01 sub $0x1,%r15 0.00 : 424d93: 41 c6 07 30 movb $0x30,(%r15) 0.00 : 424d97: 4c 8b b4 24 20 01 00 mov 0x120(%rsp),%r14 0.00 : 424d9e: 00 0.00 : 424d9f: 4d 29 fe sub %r15,%r14 0.00 : 424da2: 4c 3b b4 24 c0 01 00 cmp 0x1c0(%rsp),%r14 0.00 : 424da9: 00 0.00 : 424daa: 0f 8d c6 df ff ff jge 422d76 0.00 : 424db0: 48 8b 9c 24 40 01 00 mov 0x140(%rsp),%rbx 0.00 : 424db7: 00 0.00 : 424db8: 4c 39 fb cmp %r15,%rbx 0.00 : 424dbb: 75 d2 jne 424d8f 0.00 : 424dbd: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 424dc4: 00 0.00 : 424dc5: 48 01 ff add %rdi,%rdi 0.00 : 424dc8: e8 d3 1d fe ff callq 406ba0 0.00 : 424dcd: 48 85 c0 test %rax,%rax 0.00 : 424dd0: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 424dd7: 00 0.00 : 424dd8: 0f 84 c3 00 00 00 je 424ea1 0.00 : 424dde: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 424de5: 00 0.00 : 424de6: 48 89 de mov %rbx,%rsi 0.00 : 424de9: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 424ded: 4c 89 ff mov %r15,%rdi 0.00 : 424df0: e8 5b 21 fe ff callq 406f50 0.00 : 424df5: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 424dfc: 00 0.00 : 424dfd: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 424e02: 74 08 je 424e0c 0.00 : 424e04: 48 89 df mov %rbx,%rdi 0.00 : 424e07: e8 14 1f fe ff callq 406d20 0.00 : 424e0c: 4c 8b 94 24 40 01 00 mov 0x140(%rsp),%r10 0.00 : 424e13: 00 0.00 : 424e14: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 424e1b: 00 0.00 : 424e1c: 49 01 fa add %rdi,%r10 0.00 : 424e1f: 4c 89 94 24 20 01 00 mov %r10,0x120(%rsp) 0.00 : 424e26: 00 0.00 : 424e27: e9 63 ff ff ff jmpq 424d8f 0.00 : 424e2c: 48 8b bc 24 48 01 00 mov 0x148(%rsp),%rdi 0.00 : 424e33: 00 0.00 : 424e34: 48 01 ff add %rdi,%rdi 0.00 : 424e37: e8 64 1d fe ff callq 406ba0 0.00 : 424e3c: 48 85 c0 test %rax,%rax 0.00 : 424e3f: 48 89 84 24 40 01 00 mov %rax,0x140(%rsp) 0.00 : 424e46: 00 0.00 : 424e47: 74 4e je 424e97 0.00 : 424e49: 48 8b 94 24 48 01 00 mov 0x148(%rsp),%rdx 0.00 : 424e50: 00 0.00 : 424e51: 48 89 de mov %rbx,%rsi 0.00 : 424e54: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 424e58: 4c 89 ff mov %r15,%rdi 0.00 : 424e5b: e8 f0 20 fe ff callq 406f50 0.00 : 424e60: 48 d1 a4 24 48 01 00 shlq 0x148(%rsp) 0.00 : 424e67: 00 0.00 : 424e68: 48 3b 5c 24 48 cmp 0x48(%rsp),%rbx 0.00 : 424e6d: 74 08 je 424e77 0.00 : 424e6f: 48 89 df mov %rbx,%rdi 0.00 : 424e72: e8 a9 1e fe ff callq 406d20 0.00 : 424e77: 4c 8b 8c 24 40 01 00 mov 0x140(%rsp),%r9 0.00 : 424e7e: 00 0.00 : 424e7f: 48 8b 8c 24 48 01 00 mov 0x148(%rsp),%rcx 0.00 : 424e86: 00 0.00 : 424e87: 49 01 c9 add %rcx,%r9 0.00 : 424e8a: 4c 89 8c 24 20 01 00 mov %r9,0x120(%rsp) 0.00 : 424e91: 00 0.00 : 424e92: e9 ce fe ff ff jmpq 424d65 0.00 : 424e97: be 46 04 00 00 mov $0x446,%esi 0.00 : 424e9c: e9 71 e9 ff ff jmpq 423812 0.00 : 424ea1: be 40 04 00 00 mov $0x440,%esi 0.00 : 424ea6: e9 67 e9 ff ff jmpq 423812 0.00 : 424eab: be a8 02 00 00 mov $0x2a8,%esi 0.00 : 424eb0: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424eb5: e8 8e c4 fe ff callq 411348 0.00 : 424eba: e8 31 21 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 424ebf: 8b 38 mov (%rax),%edi 0.00 : 424ec1: e8 fa 1f fe ff callq 406ec0 0.00 : 424ec6: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424ecb: 49 89 c4 mov %rax,%r12 0.00 : 424ece: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 424ed3: 31 ff xor %edi,%edi 0.00 : 424ed5: e8 46 21 fe ff callq 407020 0.00 : 424eda: 4d 89 e0 mov %r12,%r8 0.00 : 424edd: 48 89 c7 mov %rax,%rdi 0.00 : 424ee0: 48 89 e9 mov %rbp,%rcx 0.00 : 424ee3: ba e8 04 44 00 mov $0x4404e8,%edx 0.00 : 424ee8: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 424eed: 31 c0 xor %eax,%eax 0.00 : 424eef: e8 d6 c5 fe ff callq 4114ca 0.00 : 424ef4: e8 b7 11 01 00 callq 4360b0 0.00 : 424ef9: 48 89 c3 mov %rax,%rbx 0.00 : 424efc: 0f b7 40 3c movzwl 0x3c(%rax),%eax 0.00 : 424f00: 0f b7 d0 movzwl %ax,%edx 0.00 : 424f03: e9 db df ff ff jmpq 422ee3 0.00 : 424f08: 4c 39 ac 24 c0 01 00 cmp %r13,0x1c0(%rsp) 0.00 : 424f0f: 00 0.00 : 424f10: 0f 87 ae d0 ff ff ja 421fc4 0.00 : 424f16: e9 e2 dc ff ff jmpq 422bfd 0.00 : 424f1b: be 58 04 00 00 mov $0x458,%esi 0.00 : 424f20: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 424f25: e8 1e c4 fe ff callq 411348 0.00 : 424f2a: e8 c1 20 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 424f2f: 8b 38 mov (%rax),%edi 0.00 : 424f31: e8 8a 1f fe ff callq 406ec0 0.00 : 424f36: ba 05 00 00 00 mov $0x5,%edx 0.00 : 424f3b: 49 89 c7 mov %rax,%r15 0.00 : 424f3e: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 424f43: 31 ff xor %edi,%edi 0.00 : 424f45: e8 d6 20 fe ff callq 407020 0.00 : 424f4a: 4d 89 f8 mov %r15,%r8 0.00 : 424f4d: 48 89 c7 mov %rax,%rdi 0.00 : 424f50: 48 89 e9 mov %rbp,%rcx 0.00 : 424f53: ba e3 03 44 00 mov $0x4403e3,%edx 0.00 : 424f58: be dc 04 44 00 mov $0x4404dc,%esi 0.00 : 424f5d: 31 c0 xor %eax,%eax 0.00 : 424f5f: e8 66 c5 fe ff callq 4114ca Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416b40 : 100.00 : 416b40: ff 25 aa 3b 27 00 jmpq *0x273baa(%rip) # 68a6f0 0.00 : 416b46: 68 db 00 00 00 pushq $0xdb 0.00 : 416b4b: e9 30 f2 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 60.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042c650 : 0.00 : 42c650: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 42c655: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 42c65a: 49 89 ff mov %rdi,%r15 0.00 : 42c65d: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 42c662: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 42c667: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 42c66c: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 42c671: 48 83 ec 48 sub $0x48,%rsp 0.00 : 42c675: 89 74 24 14 mov %esi,0x14(%rsp) 0.00 : 42c679: 31 f6 xor %esi,%esi 0.00 : 42c67b: e8 50 5e ff ff callq 4224d0 0.00 : 42c680: 85 c0 test %eax,%eax 0.00 : 42c682: 41 89 c0 mov %eax,%r8d 0.00 : 42c685: 0f 84 bd 00 00 00 je 42c748 0.00 : 42c68b: 48 98 cltq 0.00 : 42c68d: 41 80 7c 07 01 28 cmpb $0x28,0x1(%r15,%rax,1) 0.00 : 42c693: 0f 84 37 01 00 00 je 42c7d0 0.00 : 42c699: 44 8b 35 18 83 26 00 mov 0x268318(%rip),%r14d # 6949b8 0.00 : 42c6a0: 45 85 f6 test %r14d,%r14d 0.00 : 42c6a3: 0f 8e af 00 00 00 jle 42c758 0.00 : 42c6a9: 41 83 f8 ff cmp $0xffffffff,%r8d 0.00 : 42c6ad: 0f 84 9d 01 00 00 je 42c850 0.00 : 42c6b3: 41 8d 40 01 lea 0x1(%r8),%eax 0.00 : 42c6b7: 45 0f b6 2f movzbl (%r15),%r13d 0.00 : 42c6bb: 4c 8b 25 d6 82 26 00 mov 0x2682d6(%rip),%r12 # 694998 0.00 : 42c6c2: 31 db xor %ebx,%ebx 0.00 : 42c6c4: 31 ed xor %ebp,%ebp 0.00 : 42c6c6: 48 98 cltq 0.00 : 42c6c8: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 42c6cd: eb 0d jmp 42c6dc 0.00 : 42c6cf: 90 nop 60.00 : 42c6d0: 83 c3 01 add $0x1,%ebx 0.00 : 42c6d3: 48 83 c5 08 add $0x8,%rbp 0.00 : 42c6d7: 44 39 f3 cmp %r14d,%ebx 0.00 : 42c6da: 7d 7c jge 42c758 0.00 : 42c6dc: 49 8b 34 2c mov (%r12,%rbp,1),%rsi 0.00 : 42c6e0: 44 38 2e cmp %r13b,(%rsi) 20.00 : 42c6e3: 75 eb jne 42c6d0 0.00 : 42c6e5: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : 42c6ea: 4c 89 ff mov %r15,%rdi 0.00 : 42c6ed: e8 1e 9a fe ff callq 416110 0.00 : 42c6f2: 85 c0 test %eax,%eax 0.00 : 42c6f4: 75 da jne 42c6d0 0.00 : 42c6f6: 49 8b 3c 2c mov (%r12,%rbp,1),%rdi 0.00 : 42c6fa: e8 c1 9c fe ff callq 4163c0 0.00 : 42c6ff: 44 8b 6c 24 14 mov 0x14(%rsp),%r13d 0.00 : 42c704: 4c 8b 25 8d 82 26 00 mov 0x26828d(%rip),%r12 # 694998 0.00 : 42c70b: 45 85 ed test %r13d,%r13d 0.00 : 42c70e: 4c 89 e3 mov %r12,%rbx 0.00 : 42c711: 0f 85 89 00 00 00 jne 42c7a0 0.00 : 42c717: 4c 89 3c 2b mov %r15,(%rbx,%rbp,1) 0.00 : 42c71b: 4c 89 e2 mov %r12,%rdx 0.00 : 42c71e: 48 89 d0 mov %rdx,%rax 0.00 : 42c721: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 0.00 : 42c726: 48 8b 6c 24 20 mov 0x20(%rsp),%rbp 0.00 : 42c72b: 4c 8b 64 24 28 mov 0x28(%rsp),%r12 0.00 : 42c730: 4c 8b 6c 24 30 mov 0x30(%rsp),%r13 0.00 : 42c735: 4c 8b 74 24 38 mov 0x38(%rsp),%r14 0.00 : 42c73a: 4c 8b 7c 24 40 mov 0x40(%rsp),%r15 0.00 : 42c73f: 48 83 c4 48 add $0x48,%rsp 0.00 : 42c743: c3 retq 0.00 : 42c744: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42c748: 48 8b 15 49 82 26 00 mov 0x268249(%rip),%rdx # 694998 0.00 : 42c74f: eb cd jmp 42c71e 0.00 : 42c751: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 42c758: 8b 15 5e 82 26 00 mov 0x26825e(%rip),%edx # 6949bc 0.00 : 42c75e: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 42c761: 44 39 f0 cmp %r14d,%eax 0.00 : 42c764: 0f 8e b7 00 00 00 jle 42c821 0.00 : 42c76a: 8b 6c 24 14 mov 0x14(%rsp),%ebp 0.00 : 42c76e: 4c 8b 25 23 82 26 00 mov 0x268223(%rip),%r12 # 694998 0.00 : 42c775: 85 ed test %ebp,%ebp 0.00 : 42c777: 4c 89 e3 mov %r12,%rbx 0.00 : 42c77a: 75 7a jne 42c7f6 0.00 : 42c77c: 49 63 c6 movslq %r14d,%rax 0.00 : 42c77f: 4c 89 e2 mov %r12,%rdx 20.00 : 42c782: 4c 89 3c c3 mov %r15,(%rbx,%rax,8) 0.00 : 42c786: 41 8d 46 01 lea 0x1(%r14),%eax 0.00 : 42c78a: 89 05 28 82 26 00 mov %eax,0x268228(%rip) # 6949b8 0.00 : 42c790: 48 98 cltq 0.00 : 42c792: 49 c7 04 c4 00 00 00 movq $0x0,(%r12,%rax,8) 0.00 : 42c799: 00 0.00 : 42c79a: eb 82 jmp 42c71e 0.00 : 42c79c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42c7a0: 4c 89 ff mov %r15,%rdi 0.00 : 42c7a3: e8 48 9c fe ff callq 4163f0 0.00 : 42c7a8: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 42c7ac: e8 0f bb 02 00 callq 4582c0 0.00 : 42c7b1: 4c 89 fe mov %r15,%rsi 0.00 : 42c7b4: 48 89 c7 mov %rax,%rdi 0.00 : 42c7b7: e8 b4 a1 fe ff callq 416970 0.00 : 42c7bc: 4c 8b 25 d5 81 26 00 mov 0x2681d5(%rip),%r12 # 694998 0.00 : 42c7c3: 49 89 c7 mov %rax,%r15 0.00 : 42c7c6: e9 4c ff ff ff jmpq 42c717 0.00 : 42c7cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42c7d0: 49 8d 74 07 02 lea 0x2(%r15,%rax,1),%rsi 0.00 : 42c7d5: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 42c7da: bf 87 4c 47 00 mov $0x474c87,%edi 0.00 : 42c7df: 41 8d 50 04 lea 0x4(%r8),%edx 0.00 : 42c7e3: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42c7e5: 0f 97 c1 seta %cl 0.00 : 42c7e8: 0f 92 c0 setb %al 0.00 : 42c7eb: 38 c1 cmp %al,%cl 0.00 : 42c7ed: 44 0f 44 c2 cmove %edx,%r8d 0.00 : 42c7f1: e9 a3 fe ff ff jmpq 42c699 0.00 : 42c7f6: 4c 89 ff mov %r15,%rdi 0.00 : 42c7f9: e8 f2 9b fe ff callq 4163f0 0.00 : 42c7fe: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 42c802: e8 b9 ba 02 00 callq 4582c0 0.00 : 42c807: 4c 89 fe mov %r15,%rsi 0.00 : 42c80a: 48 89 c7 mov %rax,%rdi 0.00 : 42c80d: e8 5e a1 fe ff callq 416970 0.00 : 42c812: 4c 8b 25 7f 81 26 00 mov 0x26817f(%rip),%r12 # 694998 0.00 : 42c819: 49 89 c7 mov %rax,%r15 0.00 : 42c81c: e9 5b ff ff ff jmpq 42c77c 0.00 : 42c821: 48 8b 3d 70 81 26 00 mov 0x268170(%rip),%rdi # 694998 0.00 : 42c828: 8d 72 10 lea 0x10(%rdx),%esi 0.00 : 42c82b: 89 35 8b 81 26 00 mov %esi,0x26818b(%rip) # 6949bc 0.00 : 42c831: e8 aa fb 03 00 callq 46c3e0 0.00 : 42c836: 44 8b 35 7b 81 26 00 mov 0x26817b(%rip),%r14d # 6949b8 0.00 : 42c83d: 48 89 05 54 81 26 00 mov %rax,0x268154(%rip) # 694998 0.00 : 42c844: 48 89 05 d5 38 26 00 mov %rax,0x2638d5(%rip) # 690120 <__environ> 0.00 : 42c84b: e9 1a ff ff ff jmpq 42c76a 0.00 : 42c850: 31 ed xor %ebp,%ebp 0.00 : 42c852: 4c 8b 25 3f 81 26 00 mov 0x26813f(%rip),%r12 # 694998 0.00 : 42c859: e9 98 fe ff ff jmpq 42c6f6 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043a680 : 100.00 : 43a680: 48 85 ff test %rdi,%rdi 0.00 : 43a683: 53 push %rbx 0.00 : 43a684: 74 29 je 43a6af 0.00 : 43a686: 48 89 fb mov %rdi,%rbx 0.00 : 43a689: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43a690: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 43a694: 48 8b 38 mov (%rax),%rdi 0.00 : 43a697: e8 b4 fe ff ff callq 43a550 0.00 : 43a69c: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 43a6a0: 48 8b 1b mov (%rbx),%rbx 0.00 : 43a6a3: 81 60 08 ff ff fb ff andl $0xfffbffff,0x8(%rax) 0.00 : 43a6aa: 48 85 db test %rbx,%rbx 0.00 : 43a6ad: 75 e1 jne 43a690 0.00 : 43a6af: 5b pop %rbx Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000459d80 : 25.00 : 459d80: 48 83 ec 08 sub $0x8,%rsp 25.00 : 459d84: 31 f6 xor %esi,%esi 0.00 : 459d86: e8 c5 fe ff ff callq 459c50 0.00 : 459d8b: 31 d2 xor %edx,%edx 0.00 : 459d8d: 48 85 c0 test %rax,%rax 50.00 : 459d90: 48 89 05 91 d7 23 00 mov %rax,0x23d791(%rip) # 697528 0.00 : 459d97: 74 04 je 459d9d 0.00 : 459d99: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 459d9d: 48 89 d0 mov %rdx,%rax 0.00 : 459da0: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046c130 : 50.00 : 46c130: 41 57 push %r15 0.00 : 46c132: 31 c0 xor %eax,%eax 0.00 : 46c134: 41 89 f7 mov %esi,%r15d 0.00 : 46c137: 41 56 push %r14 0.00 : 46c139: 41 55 push %r13 0.00 : 46c13b: 41 54 push %r12 0.00 : 46c13d: 55 push %rbp 0.00 : 46c13e: 48 89 fd mov %rdi,%rbp 0.00 : 46c141: 53 push %rbx 0.00 : 46c142: 89 d3 mov %edx,%ebx 0.00 : 46c144: 48 83 ec 08 sub $0x8,%rsp 0.00 : 46c148: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 46c14c: e8 af 67 fe ff callq 452900 0.00 : 46c151: 8d 44 18 01 lea 0x1(%rax,%rbx,1),%eax 0.00 : 46c155: 48 98 cltq 0.00 : 46c157: 48 8d 3c c5 00 00 00 lea 0x0(,%rax,8),%rdi 0.00 : 46c15e: 00 0.00 : 46c15f: e8 5c c1 fe ff callq 4582c0 0.00 : 46c164: 85 db test %ebx,%ebx 0.00 : 46c166: 49 89 c6 mov %rax,%r14 0.00 : 46c169: 7e 15 jle 46c180 0.00 : 46c16b: 31 c0 xor %eax,%eax 0.00 : 46c16d: 0f 1f 00 nopl (%rax) 0.00 : 46c170: 49 c7 04 c6 00 00 00 movq $0x0,(%r14,%rax,8) 0.00 : 46c177: 00 0.00 : 46c178: 48 83 c0 01 add $0x1,%rax 0.00 : 46c17c: 39 c3 cmp %eax,%ebx 0.00 : 46c17e: 7f f0 jg 46c170 0.00 : 46c180: 48 85 ed test %rbp,%rbp 0.00 : 46c183: 41 89 dd mov %ebx,%r13d 0.00 : 46c186: 74 58 je 46c1e0 0.00 : 46c188: 48 63 c3 movslq %ebx,%rax 0.00 : 46c18b: 41 89 dd mov %ebx,%r13d 0.00 : 46c18e: 4d 8d 24 c6 lea (%r14,%rax,8),%r12 0.00 : 46c192: eb 20 jmp 46c1b4 0.00 : 46c194: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 46c198: 48 8b 45 08 mov 0x8(%rbp),%rax 25.00 : 46c19c: 48 8b 00 mov (%rax),%rax 0.00 : 46c19f: 48 8b 6d 00 mov 0x0(%rbp),%rbp 0.00 : 46c1a3: 49 89 04 24 mov %rax,(%r12) 0.00 : 46c1a7: 41 83 c5 01 add $0x1,%r13d 0.00 : 46c1ab: 49 83 c4 08 add $0x8,%r12 0.00 : 46c1af: 48 85 ed test %rbp,%rbp 0.00 : 46c1b2: 74 2c je 46c1e0 0.00 : 46c1b4: 45 85 ff test %r15d,%r15d 0.00 : 46c1b7: 74 df je 46c198 0.00 : 46c1b9: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : 46c1bd: 48 8b 18 mov (%rax),%rbx 0.00 : 46c1c0: 48 89 df mov %rbx,%rdi 0.00 : 46c1c3: e8 28 a2 fa ff callq 4163f0 0.00 : 46c1c8: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 46c1cc: e8 ef c0 fe ff callq 4582c0 0.00 : 46c1d1: 48 89 de mov %rbx,%rsi 0.00 : 46c1d4: 48 89 c7 mov %rax,%rdi 0.00 : 46c1d7: e8 94 a7 fa ff callq 416970 0.00 : 46c1dc: eb c1 jmp 46c19f 0.00 : 46c1de: 66 90 xchg %ax,%ax 0.00 : 46c1e0: 48 83 3c 24 00 cmpq $0x0,(%rsp) 25.00 : 46c1e5: 49 63 c5 movslq %r13d,%rax 0.00 : 46c1e8: 49 c7 04 c6 00 00 00 movq $0x0,(%r14,%rax,8) 0.00 : 46c1ef: 00 0.00 : 46c1f0: 74 07 je 46c1f9 0.00 : 46c1f2: 48 8b 04 24 mov (%rsp),%rax 0.00 : 46c1f6: 44 89 28 mov %r13d,(%rax) 0.00 : 46c1f9: 48 83 c4 08 add $0x8,%rsp 0.00 : 46c1fd: 4c 89 f0 mov %r14,%rax 0.00 : 46c200: 5b pop %rbx 0.00 : 46c201: 5d pop %rbp 0.00 : 46c202: 41 5c pop %r12 0.00 : 46c204: 41 5d pop %r13 0.00 : 46c206: 41 5e pop %r14 0.00 : 46c208: 41 5f pop %r15 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 50.00 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:225 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005d1cf0 : : * Append arbitrary binary data to a StringInfo, allocating more space : * if necessary. : */ : void : appendBinaryStringInfo(StringInfo str, const char *data, int datalen) : { 0.00 : 5d1cf0: 55 push %rbp 0.00 : 5d1cf1: 48 89 e5 mov %rsp,%rbp 0.00 : 5d1cf4: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 50.00 : 5d1cf8: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 5d1cfc: 48 89 fb mov %rdi,%rbx 0.00 : 5d1cff: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 5d1d03: 49 89 f4 mov %rsi,%r12 0.00 : 5d1d06: 48 83 ec 20 sub $0x20,%rsp : Assert(str != NULL); : : /* Make more room if needed */ : enlargeStringInfo(str, datalen); 0.00 : 5d1d0a: 89 d6 mov %edx,%esi : * Append arbitrary binary data to a StringInfo, allocating more space : * if necessary. : */ : void : appendBinaryStringInfo(StringInfo str, const char *data, int datalen) : { 0.00 : 5d1d0c: 41 89 d5 mov %edx,%r13d : Assert(str != NULL); : : /* Make more room if needed */ : enlargeStringInfo(str, datalen); 0.00 : 5d1d0f: e8 2c fe ff ff callq 5d1b40 : : /* OK, append the data */ : memcpy(str->data + str->len, data, datalen); 0.00 : 5d1d14: 48 63 7b 08 movslq 0x8(%rbx),%rdi 0.00 : 5d1d18: 49 63 d5 movslq %r13d,%rdx 0.00 : 5d1d1b: 4c 89 e6 mov %r12,%rsi 0.00 : 5d1d1e: 48 03 3b add (%rbx),%rdi 0.00 : 5d1d21: e8 ca 7e e9 ff callq 469bf0 : str->len += datalen; 0.00 : 5d1d26: 44 89 e8 mov %r13d,%eax 0.00 : 5d1d29: 03 43 08 add 0x8(%rbx),%eax 0.00 : 5d1d2c: 89 43 08 mov %eax,0x8(%rbx) : /* : * Keep a trailing null in place, even though it's probably useless for : * binary data. (Some callers are dealing with text but call this because : * their input isn't null-terminated.) : */ : str->data[str->len] = '\0'; 0.00 : 5d1d2f: 48 63 d0 movslq %eax,%rdx 0.00 : 5d1d32: 48 8b 03 mov (%rbx),%rax 0.00 : 5d1d35: c6 04 10 00 movb $0x0,(%rax,%rdx,1) : } 0.00 : 5d1d39: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 5d1d3d: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 5d1d41: 4c 8b 6d f8 mov -0x8(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:225 50.00 : 5d1d45: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3232 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3229 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3266 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000705e90 : : } : } : : Datum : int4_sum(PG_FUNCTION_ARGS) : { 0.00 : 705e90: 55 push %rbp : int64 newval; : : if (PG_ARGISNULL(0)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3232 66.67 : 705e91: 80 bf 40 03 00 00 00 cmpb $0x0,0x340(%rdi) : } : } : : Datum : int4_sum(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3229 16.67 : 705e98: 48 89 e5 mov %rsp,%rbp : int64 newval; : : if (PG_ARGISNULL(0)) 0.00 : 705e9b: 74 1b je 705eb8 : { : /* No non-null input seen so far... */ : if (PG_ARGISNULL(1)) 0.00 : 705e9d: 80 bf 41 03 00 00 00 cmpb $0x0,0x341(%rdi) 0.00 : 705ea4: 74 32 je 705ed8 : PG_RETURN_NULL(); /* still no non-null */ 0.00 : 705ea6: c6 47 1c 01 movb $0x1,0x1c(%rdi) 0.00 : 705eaa: 31 d2 xor %edx,%edx : /* OK to do the addition. */ : newval = oldsum + (int64) PG_GETARG_INT32(1); : : PG_RETURN_INT64(newval); : } : } 0.00 : 705eac: 48 89 d0 mov %rdx,%rax 0.00 : 705eaf: c9 leaveq 0.00 : 705eb0: c3 retq 0.00 : 705eb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif : { : int64 oldsum = PG_GETARG_INT64(0); : : /* Leave sum unchanged if new input is null. */ : if (PG_ARGISNULL(1)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3266 16.67 : 705eb8: 80 bf 41 03 00 00 00 cmpb $0x0,0x341(%rdi) : PG_RETURN_POINTER(oldsum); : } : else : #endif : { : int64 oldsum = PG_GETARG_INT64(0); 0.00 : 705ebf: 48 8b 57 20 mov 0x20(%rdi),%rdx : : /* Leave sum unchanged if new input is null. */ : if (PG_ARGISNULL(1)) 0.00 : 705ec3: 75 e7 jne 705eac : PG_RETURN_INT64(oldsum); : : /* OK to do the addition. */ : newval = oldsum + (int64) PG_GETARG_INT32(1); 0.00 : 705ec5: 48 63 47 28 movslq 0x28(%rdi),%rax : : PG_RETURN_INT64(newval); : } : } 0.00 : 705ec9: c9 leaveq : PG_RETURN_INT64(oldsum); : : /* OK to do the addition. */ : newval = oldsum + (int64) PG_GETARG_INT32(1); : : PG_RETURN_INT64(newval); 0.00 : 705eca: 48 8d 14 10 lea (%rax,%rdx,1),%rdx : } : } 0.00 : 705ece: 48 89 d0 mov %rdx,%rax 0.00 : 705ed1: c3 retq 0.00 : 705ed2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* No non-null input seen so far... */ : if (PG_ARGISNULL(1)) : PG_RETURN_NULL(); /* still no non-null */ : /* This is the first non-null input. */ : newval = (int64) PG_GETARG_INT32(1); : PG_RETURN_INT64(newval); 0.00 : 705ed8: 48 63 57 28 movslq 0x28(%rdi),%rdx : /* OK to do the addition. */ : newval = oldsum + (int64) PG_GETARG_INT32(1); : : PG_RETURN_INT64(newval); : } : } 0.00 : 705edc: c9 leaveq 0.00 : 705edd: 48 89 d0 mov %rdx,%rax Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000015410 <__brk>: ??:0 50.00 : 15410: 48 89 fe mov %rdi,%rsi 25.00 : 15413: b8 0c 00 00 00 mov $0xc,%eax 0.00 : 15418: 0f 05 syscall 0.00 : 1541a: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : 15420: 48 89 c2 mov %rax,%rdx 0.00 : 15423: 77 23 ja 15448 <__brk+0x38> 0.00 : 15425: 31 c0 xor %eax,%eax 0.00 : 15427: 48 39 d6 cmp %rdx,%rsi 25.00 : 1542a: 48 89 15 d7 ac 20 00 mov %rdx,0x20acd7(%rip) # 220108 <__curbrk> 0.00 : 15431: 77 05 ja 15438 <__brk+0x28> 0.00 : 15433: f3 c3 repz retq 0.00 : 15435: 0f 1f 00 nopl (%rax) 0.00 : 15438: c7 05 42 ad 20 00 0c movl $0xc,0x20ad42(%rip) # 220184 0.00 : 1543f: 00 00 00 0.00 : 15442: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 15447: c3 retq 0.00 : 15448: f7 d8 neg %eax 0.00 : 1544a: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 15451: 89 05 2d ad 20 00 mov %eax,0x20ad2d(%rip) # 220184 0.00 : 15457: eb cc jmp 15425 <__brk+0x15> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016b70 : 0.00 : 16b70: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 16b74: 48 89 f8 mov %rdi,%rax 0.00 : 16b77: 75 04 jne 16b7d 0.00 : 16b79: 40 88 37 mov %sil,(%rdi) 0.00 : 16b7c: c3 retq 0.00 : 16b7d: 49 b9 01 01 01 01 01 movabs $0x101010101010101,%r9 0.00 : 16b84: 01 01 01 0.00 : 16b87: 49 89 d0 mov %rdx,%r8 0.00 : 16b8a: 48 0f b6 d6 movzbq %sil,%rdx 0.00 : 16b8e: 49 0f af d1 imul %r9,%rdx 0.00 : 16b92: 49 81 f8 90 00 00 00 cmp $0x90,%r8 0.00 : 16b99: 0f 87 e1 02 00 00 ja 16e80 0.00 : 16b9f: 4c 01 c7 add %r8,%rdi 0.00 : 16ba2: 4c 8d 1d 13 00 00 00 lea 0x13(%rip),%r11 # 16bbc 0.00 : 16ba9: 48 8d 0d e0 24 00 00 lea 0x24e0(%rip),%rcx # 19090 <_itoa_lower_digits_internal+0x10> 0.00 : 16bb0: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 16bb5: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 16bb9: 41 ff e3 jmpq *%r11 0.00 : 16bbc: c3 retq 0.00 : 16bbd: 0f 1f 00 nopl (%rax) 0.00 : 16bc0: 48 89 97 77 ff ff ff mov %rdx,-0x89(%rdi) 0.00 : 16bc7: 48 89 97 7f ff ff ff mov %rdx,-0x81(%rdi) 0.00 : 16bce: 48 89 57 87 mov %rdx,-0x79(%rdi) 0.00 : 16bd2: 48 89 57 8f mov %rdx,-0x71(%rdi) 0.00 : 16bd6: 48 89 57 97 mov %rdx,-0x69(%rdi) 0.00 : 16bda: 48 89 57 9f mov %rdx,-0x61(%rdi) 0.00 : 16bde: 48 89 57 a7 mov %rdx,-0x59(%rdi) 0.00 : 16be2: 48 89 57 af mov %rdx,-0x51(%rdi) 0.00 : 16be6: 48 89 57 b7 mov %rdx,-0x49(%rdi) 0.00 : 16bea: 48 89 57 bf mov %rdx,-0x41(%rdi) 0.00 : 16bee: 48 89 57 c7 mov %rdx,-0x39(%rdi) 0.00 : 16bf2: 48 89 57 cf mov %rdx,-0x31(%rdi) 0.00 : 16bf6: 48 89 57 d7 mov %rdx,-0x29(%rdi) 0.00 : 16bfa: 48 89 57 df mov %rdx,-0x21(%rdi) 0.00 : 16bfe: 48 89 57 e7 mov %rdx,-0x19(%rdi) 0.00 : 16c02: 48 89 57 ef mov %rdx,-0x11(%rdi) 0.00 : 16c06: 48 89 57 f7 mov %rdx,-0x9(%rdi) 0.00 : 16c0a: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 16c0d: c3 retq 0.00 : 16c0e: 66 90 xchg %ax,%ax 0.00 : 16c10: 48 89 97 70 ff ff ff mov %rdx,-0x90(%rdi) 0.00 : 16c17: 48 89 97 78 ff ff ff mov %rdx,-0x88(%rdi) 0.00 : 16c1e: 48 89 57 80 mov %rdx,-0x80(%rdi) 0.00 : 16c22: 48 89 57 88 mov %rdx,-0x78(%rdi) 0.00 : 16c26: 48 89 57 90 mov %rdx,-0x70(%rdi) 0.00 : 16c2a: 48 89 57 98 mov %rdx,-0x68(%rdi) 0.00 : 16c2e: 48 89 57 a0 mov %rdx,-0x60(%rdi) 0.00 : 16c32: 48 89 57 a8 mov %rdx,-0x58(%rdi) 0.00 : 16c36: 48 89 57 b0 mov %rdx,-0x50(%rdi) 0.00 : 16c3a: 48 89 57 b8 mov %rdx,-0x48(%rdi) 0.00 : 16c3e: 48 89 57 c0 mov %rdx,-0x40(%rdi) 0.00 : 16c42: 48 89 57 c8 mov %rdx,-0x38(%rdi) 0.00 : 16c46: 48 89 57 d0 mov %rdx,-0x30(%rdi) 0.00 : 16c4a: 48 89 57 d8 mov %rdx,-0x28(%rdi) 0.00 : 16c4e: 48 89 57 e0 mov %rdx,-0x20(%rdi) 0.00 : 16c52: 48 89 57 e8 mov %rdx,-0x18(%rdi) 0.00 : 16c56: 48 89 57 f0 mov %rdx,-0x10(%rdi) 0.00 : 16c5a: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 16c5e: c3 retq 0.00 : 16c5f: 90 nop 0.00 : 16c60: 48 89 97 76 ff ff ff mov %rdx,-0x8a(%rdi) 0.00 : 16c67: 48 89 97 7e ff ff ff mov %rdx,-0x82(%rdi) 0.00 : 16c6e: 48 89 57 86 mov %rdx,-0x7a(%rdi) 0.00 : 16c72: 48 89 57 8e mov %rdx,-0x72(%rdi) 0.00 : 16c76: 48 89 57 96 mov %rdx,-0x6a(%rdi) 0.00 : 16c7a: 48 89 57 9e mov %rdx,-0x62(%rdi) 0.00 : 16c7e: 48 89 57 a6 mov %rdx,-0x5a(%rdi) 0.00 : 16c82: 48 89 57 ae mov %rdx,-0x52(%rdi) 0.00 : 16c86: 48 89 57 b6 mov %rdx,-0x4a(%rdi) 0.00 : 16c8a: 48 89 57 be mov %rdx,-0x42(%rdi) 0.00 : 16c8e: 48 89 57 c6 mov %rdx,-0x3a(%rdi) 0.00 : 16c92: 48 89 57 ce mov %rdx,-0x32(%rdi) 0.00 : 16c96: 48 89 57 d6 mov %rdx,-0x2a(%rdi) 0.00 : 16c9a: 48 89 57 de mov %rdx,-0x22(%rdi) 0.00 : 16c9e: 48 89 57 e6 mov %rdx,-0x1a(%rdi) 0.00 : 16ca2: 48 89 57 ee mov %rdx,-0x12(%rdi) 0.00 : 16ca6: 48 89 57 f6 mov %rdx,-0xa(%rdi) 0.00 : 16caa: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 16cae: c3 retq 0.00 : 16caf: 90 nop 0.00 : 16cb0: 48 89 97 75 ff ff ff mov %rdx,-0x8b(%rdi) 0.00 : 16cb7: 48 89 97 7d ff ff ff mov %rdx,-0x83(%rdi) 0.00 : 16cbe: 48 89 57 85 mov %rdx,-0x7b(%rdi) 0.00 : 16cc2: 48 89 57 8d mov %rdx,-0x73(%rdi) 0.00 : 16cc6: 48 89 57 95 mov %rdx,-0x6b(%rdi) 0.00 : 16cca: 48 89 57 9d mov %rdx,-0x63(%rdi) 0.00 : 16cce: 48 89 57 a5 mov %rdx,-0x5b(%rdi) 0.00 : 16cd2: 48 89 57 ad mov %rdx,-0x53(%rdi) 0.00 : 16cd6: 48 89 57 b5 mov %rdx,-0x4b(%rdi) 0.00 : 16cda: 48 89 57 bd mov %rdx,-0x43(%rdi) 0.00 : 16cde: 48 89 57 c5 mov %rdx,-0x3b(%rdi) 0.00 : 16ce2: 48 89 57 cd mov %rdx,-0x33(%rdi) 0.00 : 16ce6: 48 89 57 d5 mov %rdx,-0x2b(%rdi) 0.00 : 16cea: 48 89 57 dd mov %rdx,-0x23(%rdi) 0.00 : 16cee: 48 89 57 e5 mov %rdx,-0x1b(%rdi) 0.00 : 16cf2: 48 89 57 ed mov %rdx,-0x13(%rdi) 0.00 : 16cf6: 48 89 57 f5 mov %rdx,-0xb(%rdi) 0.00 : 16cfa: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 16cfe: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 16d01: c3 retq 0.00 : 16d02: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 16d09: 1f 84 00 00 00 00 00 0.00 : 16d10: 48 89 97 74 ff ff ff mov %rdx,-0x8c(%rdi) 0.00 : 16d17: 48 89 97 7c ff ff ff mov %rdx,-0x84(%rdi) 0.00 : 16d1e: 48 89 57 84 mov %rdx,-0x7c(%rdi) 0.00 : 16d22: 48 89 57 8c mov %rdx,-0x74(%rdi) 0.00 : 16d26: 48 89 57 94 mov %rdx,-0x6c(%rdi) 0.00 : 16d2a: 48 89 57 9c mov %rdx,-0x64(%rdi) 0.00 : 16d2e: 48 89 57 a4 mov %rdx,-0x5c(%rdi) 0.00 : 16d32: 48 89 57 ac mov %rdx,-0x54(%rdi) 0.00 : 16d36: 48 89 57 b4 mov %rdx,-0x4c(%rdi) 0.00 : 16d3a: 48 89 57 bc mov %rdx,-0x44(%rdi) 0.00 : 16d3e: 48 89 57 c4 mov %rdx,-0x3c(%rdi) 0.00 : 16d42: 48 89 57 cc mov %rdx,-0x34(%rdi) 0.00 : 16d46: 48 89 57 d4 mov %rdx,-0x2c(%rdi) 0.00 : 16d4a: 48 89 57 dc mov %rdx,-0x24(%rdi) 0.00 : 16d4e: 48 89 57 e4 mov %rdx,-0x1c(%rdi) 0.00 : 16d52: 48 89 57 ec mov %rdx,-0x14(%rdi) 0.00 : 16d56: 48 89 57 f4 mov %rdx,-0xc(%rdi) 0.00 : 16d5a: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 16d5d: c3 retq 0.00 : 16d5e: 66 90 xchg %ax,%ax 0.00 : 16d60: 48 89 97 73 ff ff ff mov %rdx,-0x8d(%rdi) 0.00 : 16d67: 48 89 97 7b ff ff ff mov %rdx,-0x85(%rdi) 0.00 : 16d6e: 48 89 57 83 mov %rdx,-0x7d(%rdi) 0.00 : 16d72: 48 89 57 8b mov %rdx,-0x75(%rdi) 0.00 : 16d76: 48 89 57 93 mov %rdx,-0x6d(%rdi) 0.00 : 16d7a: 48 89 57 9b mov %rdx,-0x65(%rdi) 0.00 : 16d7e: 48 89 57 a3 mov %rdx,-0x5d(%rdi) 0.00 : 16d82: 48 89 57 ab mov %rdx,-0x55(%rdi) 0.00 : 16d86: 48 89 57 b3 mov %rdx,-0x4d(%rdi) 0.00 : 16d8a: 48 89 57 bb mov %rdx,-0x45(%rdi) 0.00 : 16d8e: 48 89 57 c3 mov %rdx,-0x3d(%rdi) 0.00 : 16d92: 48 89 57 cb mov %rdx,-0x35(%rdi) 0.00 : 16d96: 48 89 57 d3 mov %rdx,-0x2d(%rdi) 0.00 : 16d9a: 48 89 57 db mov %rdx,-0x25(%rdi) 0.00 : 16d9e: 48 89 57 e3 mov %rdx,-0x1d(%rdi) 0.00 : 16da2: 48 89 57 eb mov %rdx,-0x15(%rdi) 0.00 : 16da6: 48 89 57 f3 mov %rdx,-0xd(%rdi) 0.00 : 16daa: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 16dad: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 16db0: c3 retq 0.00 : 16db1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 16db8: 0f 1f 84 00 00 00 00 0.00 : 16dbf: 00 0.00 : 16dc0: 48 89 97 72 ff ff ff mov %rdx,-0x8e(%rdi) 0.00 : 16dc7: 48 89 97 7a ff ff ff mov %rdx,-0x86(%rdi) 0.00 : 16dce: 48 89 57 82 mov %rdx,-0x7e(%rdi) 0.00 : 16dd2: 48 89 57 8a mov %rdx,-0x76(%rdi) 0.00 : 16dd6: 48 89 57 92 mov %rdx,-0x6e(%rdi) 0.00 : 16dda: 48 89 57 9a mov %rdx,-0x66(%rdi) 0.00 : 16dde: 48 89 57 a2 mov %rdx,-0x5e(%rdi) 0.00 : 16de2: 48 89 57 aa mov %rdx,-0x56(%rdi) 0.00 : 16de6: 48 89 57 b2 mov %rdx,-0x4e(%rdi) 0.00 : 16dea: 48 89 57 ba mov %rdx,-0x46(%rdi) 0.00 : 16dee: 48 89 57 c2 mov %rdx,-0x3e(%rdi) 0.00 : 16df2: 48 89 57 ca mov %rdx,-0x36(%rdi) 0.00 : 16df6: 48 89 57 d2 mov %rdx,-0x2e(%rdi) 0.00 : 16dfa: 48 89 57 da mov %rdx,-0x26(%rdi) 0.00 : 16dfe: 48 89 57 e2 mov %rdx,-0x1e(%rdi) 0.00 : 16e02: 48 89 57 ea mov %rdx,-0x16(%rdi) 0.00 : 16e06: 48 89 57 f2 mov %rdx,-0xe(%rdi) 0.00 : 16e0a: 89 57 fa mov %edx,-0x6(%rdi) 0.00 : 16e0d: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 16e11: c3 retq 0.00 : 16e12: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 16e19: 1f 84 00 00 00 00 00 0.00 : 16e20: 48 89 97 71 ff ff ff mov %rdx,-0x8f(%rdi) 0.00 : 16e27: 48 89 97 79 ff ff ff mov %rdx,-0x87(%rdi) 0.00 : 16e2e: 48 89 57 81 mov %rdx,-0x7f(%rdi) 0.00 : 16e32: 48 89 57 89 mov %rdx,-0x77(%rdi) 0.00 : 16e36: 48 89 57 91 mov %rdx,-0x6f(%rdi) 0.00 : 16e3a: 48 89 57 99 mov %rdx,-0x67(%rdi) 0.00 : 16e3e: 48 89 57 a1 mov %rdx,-0x5f(%rdi) 0.00 : 16e42: 48 89 57 a9 mov %rdx,-0x57(%rdi) 0.00 : 16e46: 48 89 57 b1 mov %rdx,-0x4f(%rdi) 0.00 : 16e4a: 48 89 57 b9 mov %rdx,-0x47(%rdi) 0.00 : 16e4e: 48 89 57 c1 mov %rdx,-0x3f(%rdi) 0.00 : 16e52: 48 89 57 c9 mov %rdx,-0x37(%rdi) 0.00 : 16e56: 48 89 57 d1 mov %rdx,-0x2f(%rdi) 0.00 : 16e5a: 48 89 57 d9 mov %rdx,-0x27(%rdi) 0.00 : 16e5e: 48 89 57 e1 mov %rdx,-0x1f(%rdi) 0.00 : 16e62: 48 89 57 e9 mov %rdx,-0x17(%rdi) 0.00 : 16e66: 48 89 57 f1 mov %rdx,-0xf(%rdi) 0.00 : 16e6a: 89 57 f9 mov %edx,-0x7(%rdi) 0.00 : 16e6d: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 16e71: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 16e74: c3 retq 0.00 : 16e75: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 16e7c: 00 00 00 00 0.00 : 16e80: 49 c7 c2 10 00 00 00 mov $0x10,%r10 0.00 : 16e87: 49 89 f9 mov %rdi,%r9 0.00 : 16e8a: 49 83 e1 0f and $0xf,%r9 0.00 : 16e8e: 4d 29 ca sub %r9,%r10 0.00 : 16e91: 49 83 e2 0f and $0xf,%r10 0.00 : 16e95: 4c 01 d7 add %r10,%rdi 0.00 : 16e98: 4d 29 d0 sub %r10,%r8 0.00 : 16e9b: 4c 8d 1d 98 00 00 00 lea 0x98(%rip),%r11 # 16f3a 0.00 : 16ea2: 48 8d 0d 17 23 00 00 lea 0x2317(%rip),%rcx # 191c0 <_itoa_lower_digits_internal+0x140> 0.00 : 16ea9: 4a 0f bf 0c 51 movswq (%rcx,%r10,2),%rcx ??:0 25.00 : 16eae: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 16eb2: 41 ff e3 jmpq *%r11 0.00 : 16eb5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 16ebc: 00 00 00 00 0.00 : 16ec0: 88 57 f3 mov %dl,-0xd(%rdi) 0.00 : 16ec3: 89 57 f4 mov %edx,-0xc(%rdi) 0.00 : 16ec6: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 16eca: eb 6e jmp 16f3a 0.00 : 16ecc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 16ed0: 88 57 f7 mov %dl,-0x9(%rdi) 0.00 : 16ed3: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 16ed7: eb 61 jmp 16f3a 0.00 : 16ed9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 16ee0: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 16ee3: eb 55 jmp 16f3a 0.00 : 16ee5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 16eec: 00 00 00 00 0.00 : 16ef0: 88 57 f5 mov %dl,-0xb(%rdi) 0.00 : 16ef3: 66 89 57 f6 mov %dx,-0xa(%rdi) 0.00 : 16ef7: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 16efb: eb 3d jmp 16f3a 0.00 : 16efd: 0f 1f 00 nopl (%rax) 0.00 : 16f00: 88 57 fd mov %dl,-0x3(%rdi) 0.00 : 16f03: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 16f07: eb 31 jmp 16f3a 0.00 : 16f09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 16f10: 88 57 fb mov %dl,-0x5(%rdi) 0.00 : 16f13: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 16f16: eb 22 jmp 16f3a 0.00 : 16f18: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 16f1f: 00 0.00 : 16f20: 88 57 f1 mov %dl,-0xf(%rdi) 0.00 : 16f23: 66 89 57 f2 mov %dx,-0xe(%rdi) 0.00 : 16f27: 89 57 f4 mov %edx,-0xc(%rdi) 0.00 : 16f2a: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 16f2e: eb 0a jmp 16f3a 0.00 : 16f30: 88 57 f9 mov %dl,-0x7(%rdi) 0.00 : 16f33: 66 89 57 fa mov %dx,-0x6(%rdi) 0.00 : 16f37: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 16f3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 16f40: 49 81 f8 00 20 00 00 cmp $0x2000,%r8 0.00 : 16f47: 0f 83 83 00 00 00 jae 16fd0 0.00 : 16f4d: 0f 1f 00 nopl (%rax) 0.00 : 16f50: 4c 89 c1 mov %r8,%rcx 0.00 : 16f53: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 16f57: 74 52 je 16fab 0.00 : 16f59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 16f60: 48 ff c9 dec %rcx 25.00 : 16f63: 48 89 17 mov %rdx,(%rdi) 0.00 : 16f66: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 16f6a: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 16f6e: 48 89 57 18 mov %rdx,0x18(%rdi) 0.00 : 16f72: 48 89 57 20 mov %rdx,0x20(%rdi) 0.00 : 16f76: 48 89 57 28 mov %rdx,0x28(%rdi) 0.00 : 16f7a: 48 89 57 30 mov %rdx,0x30(%rdi) 0.00 : 16f7e: 48 89 57 38 mov %rdx,0x38(%rdi) 0.00 : 16f82: 48 89 57 40 mov %rdx,0x40(%rdi) 0.00 : 16f86: 48 89 57 48 mov %rdx,0x48(%rdi) 0.00 : 16f8a: 48 89 57 50 mov %rdx,0x50(%rdi) 0.00 : 16f8e: 48 89 57 58 mov %rdx,0x58(%rdi) 0.00 : 16f92: 48 89 57 60 mov %rdx,0x60(%rdi) 0.00 : 16f96: 48 89 57 68 mov %rdx,0x68(%rdi) 0.00 : 16f9a: 48 89 57 70 mov %rdx,0x70(%rdi) 25.00 : 16f9e: 48 89 57 78 mov %rdx,0x78(%rdi) 0.00 : 16fa2: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 16fa9: 75 b5 jne 16f60 0.00 : 16fab: 41 83 e0 7f and $0x7f,%r8d 0.00 : 16faf: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 16fb3: 4c 8d 1d 02 fc ff ff lea -0x3fe(%rip),%r11 # 16bbc 0.00 : 16fba: 48 8d 0d cf 20 00 00 lea 0x20cf(%rip),%rcx # 19090 <_itoa_lower_digits_internal+0x10> 0.00 : 16fc1: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 25.00 : 16fc6: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 16fca: 41 ff e3 jmpq *%r11 0.00 : 16fcd: 0f 1f 00 nopl (%rax) 0.00 : 16fd0: 44 8b 0d 09 90 20 00 mov 0x209009(%rip),%r9d # 21ffe0 <__x86_64_shared_cache_size> 0.00 : 16fd7: 4d 39 c1 cmp %r8,%r9 0.00 : 16fda: 4d 0f 47 c8 cmova %r8,%r9 0.00 : 16fde: 76 10 jbe 16ff0 0.00 : 16fe0: 49 81 f8 00 00 01 00 cmp $0x10000,%r8 0.00 : 16fe7: 0f 83 63 ff ff ff jae 16f50 0.00 : 16fed: 0f 1f 00 nopl (%rax) 0.00 : 16ff0: 4c 89 c9 mov %r9,%rcx 0.00 : 16ff3: 49 83 e1 f8 and $0xfffffffffffffff8,%r9 0.00 : 16ff7: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 16ffb: 74 07 je 17004 0.00 : 16ffd: 48 92 xchg %rax,%rdx 0.00 : 16fff: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 17002: 48 92 xchg %rax,%rdx 0.00 : 17004: 4d 29 c8 sub %r9,%r8 0.00 : 17007: 77 27 ja 17030 0.00 : 17009: 41 83 e0 07 and $0x7,%r8d 0.00 : 1700d: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 17011: 4c 8d 1d a4 fb ff ff lea -0x45c(%rip),%r11 # 16bbc 0.00 : 17018: 48 8d 0d 71 20 00 00 lea 0x2071(%rip),%rcx # 19090 <_itoa_lower_digits_internal+0x10> 0.00 : 1701f: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 17024: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 17028: 41 ff e3 jmpq *%r11 0.00 : 1702b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 17030: 4c 89 c1 mov %r8,%rcx 0.00 : 17033: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 17037: 74 65 je 1709e 0.00 : 17039: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 17040: 48 ff c9 dec %rcx 0.00 : 17043: 48 0f c3 17 movnti %rdx,(%rdi) 0.00 : 17047: 48 0f c3 57 08 movnti %rdx,0x8(%rdi) 0.00 : 1704c: 48 0f c3 57 10 movnti %rdx,0x10(%rdi) 0.00 : 17051: 48 0f c3 57 18 movnti %rdx,0x18(%rdi) 0.00 : 17056: 48 0f c3 57 20 movnti %rdx,0x20(%rdi) 0.00 : 1705b: 48 0f c3 57 28 movnti %rdx,0x28(%rdi) 0.00 : 17060: 48 0f c3 57 30 movnti %rdx,0x30(%rdi) 0.00 : 17065: 48 0f c3 57 38 movnti %rdx,0x38(%rdi) 0.00 : 1706a: 48 0f c3 57 40 movnti %rdx,0x40(%rdi) 0.00 : 1706f: 48 0f c3 57 48 movnti %rdx,0x48(%rdi) 0.00 : 17074: 48 0f c3 57 50 movnti %rdx,0x50(%rdi) 0.00 : 17079: 48 0f c3 57 58 movnti %rdx,0x58(%rdi) 0.00 : 1707e: 48 0f c3 57 60 movnti %rdx,0x60(%rdi) 0.00 : 17083: 48 0f c3 57 68 movnti %rdx,0x68(%rdi) 0.00 : 17088: 48 0f c3 57 70 movnti %rdx,0x70(%rdi) 0.00 : 1708d: 48 0f c3 57 78 movnti %rdx,0x78(%rdi) 0.00 : 17092: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 17099: 75 a5 jne 17040 0.00 : 1709b: 0f ae f8 sfence 0.00 : 1709e: 41 83 e0 7f and $0x7f,%r8d 0.00 : 170a2: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 170a6: 4c 8d 1d 0f fb ff ff lea -0x4f1(%rip),%r11 # 16bbc 0.00 : 170ad: 48 8d 0d dc 1f 00 00 lea 0x1fdc(%rip),%rcx # 19090 <_itoa_lower_digits_internal+0x10> 0.00 : 170b4: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 170b9: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 170bd: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:367 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:354 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:376 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004abd60 : : /* : * btgetbitmap() -- gets all matching tuples, and adds them to a bitmap : */ : Datum : btgetbitmap(PG_FUNCTION_ARGS) : { 0.00 : 4abd60: 55 push %rbp 0.00 : 4abd61: 48 89 e5 mov %rsp,%rbp 0.00 : 4abd64: 41 57 push %r15 0.00 : 4abd66: 41 56 push %r14 0.00 : 4abd68: 41 55 push %r13 0.00 : 4abd6a: 41 54 push %r12 0.00 : 4abd6c: 53 push %rbx 0.00 : 4abd6d: 48 83 ec 08 sub $0x8,%rsp : IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); 0.00 : 4abd71: 4c 8b 6f 20 mov 0x20(%rdi),%r13 : TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); 0.00 : 4abd75: 4c 8b 77 28 mov 0x28(%rdi),%r14 : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4abd79: 49 8b 5d 38 mov 0x38(%r13),%rbx : ItemPointer heapTid; : : /* : * If we have any array keys, initialize them. : */ : if (so->numArrayKeys) 0.00 : 4abd7d: 83 7b 18 00 cmpl $0x0,0x18(%rbx) 0.00 : 4abd81: 74 13 je 4abd96 : { : /* punt if we have any unsatisfiable array keys */ : if (so->numArrayKeys < 0) 0.00 : 4abd83: 0f 8c c7 00 00 00 jl 4abe50 : PG_RETURN_INT64(ntids); : : _bt_start_array_keys(scan, ForwardScanDirection); 0.00 : 4abd89: be 01 00 00 00 mov $0x1,%esi 0.00 : 4abd8e: 4c 89 ef mov %r13,%rdi 0.00 : 4abd91: e8 5a 1e 00 00 callq 4adbf0 <_bt_start_array_keys> : { : /* Fetch the first page & tuple */ : if (_bt_first(scan, ForwardScanDirection)) : { : /* Save tuple ID, and continue scanning */ : heapTid = &scan->xs_ctup.t_self; 0.00 : 4abd96: 4d 8d 7d 54 lea 0x54(%r13),%r15 0.00 : 4abd9a: 45 31 e4 xor %r12d,%r12d 0.00 : 4abd9d: eb 1d jmp 4abdbc 0.00 : 4abd9f: 90 nop : tbm_add_tuples(tbm, heapTid, 1, false); : ntids++; : } : } : /* Now see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, ForwardScanDirection)); 0.00 : 4abda0: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 4abda3: 85 c0 test %eax,%eax 0.00 : 4abda5: 0f 84 8d 00 00 00 je 4abe38 0.00 : 4abdab: be 01 00 00 00 mov $0x1,%esi 0.00 : 4abdb0: 4c 89 ef mov %r13,%rdi 0.00 : 4abdb3: e8 b8 1e 00 00 callq 4adc70 <_bt_advance_array_keys> 0.00 : 4abdb8: 84 c0 test %al,%al 0.00 : 4abdba: 74 7c je 4abe38 : : /* This loop handles advancing to the next array elements, if any */ : do : { : /* Fetch the first page & tuple */ : if (_bt_first(scan, ForwardScanDirection)) 0.00 : 4abdbc: be 01 00 00 00 mov $0x1,%esi 0.00 : 4abdc1: 4c 89 ef mov %r13,%rdi 0.00 : 4abdc4: e8 c7 14 00 00 callq 4ad290 <_bt_first> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:354 25.00 : 4abdc9: 84 c0 test %al,%al 0.00 : 4abdcb: 74 d3 je 4abda0 : { : /* Save tuple ID, and continue scanning */ : heapTid = &scan->xs_ctup.t_self; : tbm_add_tuples(tbm, heapTid, 1, false); 0.00 : 4abdcd: 31 c9 xor %ecx,%ecx 0.00 : 4abdcf: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4abdd4: 4c 89 fe mov %r15,%rsi 0.00 : 4abdd7: 4c 89 f7 mov %r14,%rdi : ntids++; 0.00 : 4abdda: 49 83 c4 01 add $0x1,%r12 : /* Fetch the first page & tuple */ : if (_bt_first(scan, ForwardScanDirection)) : { : /* Save tuple ID, and continue scanning */ : heapTid = &scan->xs_ctup.t_self; : tbm_add_tuples(tbm, heapTid, 1, false); 0.00 : 4abdde: e8 8d 81 13 00 callq 5e3f70 0.00 : 4abde3: eb 25 jmp 4abe0a 0.00 : 4abde5: 0f 1f 00 nopl (%rax) 0.00 : 4abde8: 8b 43 6c mov 0x6c(%rbx),%eax : break; : } : : /* Save tuple ID, and continue scanning */ : heapTid = &so->currPos.items[so->currPos.itemIndex].heapTid; : tbm_add_tuples(tbm, heapTid, 1, false); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:376 25.00 : 4abdeb: 48 63 f0 movslq %eax,%rsi 0.00 : 4abdee: 31 c9 xor %ecx,%ecx 0.00 : 4abdf0: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4abdf5: 48 8d 34 b6 lea (%rsi,%rsi,4),%rsi 0.00 : 4abdf9: 4c 89 f7 mov %r14,%rdi : ntids++; 0.00 : 4abdfc: 49 83 c4 01 add $0x1,%r12 : break; : } : : /* Save tuple ID, and continue scanning */ : heapTid = &so->currPos.items[so->currPos.itemIndex].heapTid; : tbm_add_tuples(tbm, heapTid, 1, false); 0.00 : 4abe00: 48 8d 74 73 70 lea 0x70(%rbx,%rsi,2),%rsi 0.00 : 4abe05: e8 66 81 13 00 callq 5e3f70 : { : /* : * Advance to next tuple within page. This is the same as the : * easy case in _bt_next(). : */ : if (++so->currPos.itemIndex > so->currPos.lastItem) 0.00 : 4abe0a: 8b 43 6c mov 0x6c(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:367 50.00 : 4abe0d: 83 c0 01 add $0x1,%eax 0.00 : 4abe10: 3b 43 68 cmp 0x68(%rbx),%eax 0.00 : 4abe13: 89 43 6c mov %eax,0x6c(%rbx) 0.00 : 4abe16: 7e d3 jle 4abdeb : { : /* let _bt_next do the heavy lifting */ : if (!_bt_next(scan, ForwardScanDirection)) 0.00 : 4abe18: be 01 00 00 00 mov $0x1,%esi 0.00 : 4abe1d: 4c 89 ef mov %r13,%rdi 0.00 : 4abe20: e8 4b 0d 00 00 callq 4acb70 <_bt_next> 0.00 : 4abe25: 84 c0 test %al,%al 0.00 : 4abe27: 75 bf jne 4abde8 : tbm_add_tuples(tbm, heapTid, 1, false); : ntids++; : } : } : /* Now see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, ForwardScanDirection)); 0.00 : 4abe29: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 4abe2c: 85 c0 test %eax,%eax 0.00 : 4abe2e: 0f 85 77 ff ff ff jne 4abdab 0.00 : 4abe34: 0f 1f 40 00 nopl 0x0(%rax) : : PG_RETURN_INT64(ntids); : } 0.00 : 4abe38: 48 83 c4 08 add $0x8,%rsp : } : } : /* Now see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, ForwardScanDirection)); : : PG_RETURN_INT64(ntids); 0.00 : 4abe3c: 4c 89 e0 mov %r12,%rax : } 0.00 : 4abe3f: 5b pop %rbx 0.00 : 4abe40: 41 5c pop %r12 0.00 : 4abe42: 41 5d pop %r13 0.00 : 4abe44: 41 5e pop %r14 0.00 : 4abe46: 41 5f pop %r15 0.00 : 4abe48: c9 leaveq 0.00 : 4abe49: c3 retq 0.00 : 4abe4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4abe50: 48 83 c4 08 add $0x8,%rsp : * If we have any array keys, initialize them. : */ : if (so->numArrayKeys) : { : /* punt if we have any unsatisfiable array keys */ : if (so->numArrayKeys < 0) 0.00 : 4abe54: 31 c0 xor %eax,%eax : } : /* Now see if we have more array keys to deal with */ : } while (so->numArrayKeys && _bt_advance_array_keys(scan, ForwardScanDirection)); : : PG_RETURN_INT64(ntids); : } 0.00 : 4abe56: 5b pop %rbx 0.00 : 4abe57: 41 5c pop %r12 0.00 : 4abe59: 41 5d pop %r13 0.00 : 4abe5b: 41 5e pop %r14 0.00 : 4abe5d: 41 5f pop %r15 0.00 : 4abe5f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:132 50.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:132 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e1e80 : : * value, rather than continuing to use the pointer passed as the : * first argument. : */ : List * : lappend(List *list, void *datum) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:132 50.00 : 5e1e80: 55 push %rbp 0.00 : 5e1e81: 48 89 e5 mov %rsp,%rbp 0.00 : 5e1e84: 48 89 5d f0 mov %rbx,-0x10(%rbp) 50.00 : 5e1e88: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 5e1e8c: 48 83 ec 10 sub $0x10,%rsp : Assert(IsPointerList(list)); : : if (list == NIL) 0.00 : 5e1e90: 48 85 ff test %rdi,%rdi : * value, rather than continuing to use the pointer passed as the : * first argument. : */ : List * : lappend(List *list, void *datum) : { 0.00 : 5e1e93: 48 89 fb mov %rdi,%rbx 0.00 : 5e1e96: 49 89 f4 mov %rsi,%r12 : Assert(IsPointerList(list)); : : if (list == NIL) 0.00 : 5e1e99: 74 3d je 5e1ed8 : static void : new_tail_cell(List *list) : { : ListCell *new_tail; : : new_tail = (ListCell *) palloc(sizeof(*new_tail)); 0.00 : 5e1e9b: bf 10 00 00 00 mov $0x10,%edi 0.00 : 5e1ea0: e8 ab 6e 1b 00 callq 798d50 : new_tail->next = NULL; 0.00 : 5e1ea5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5e1eac: 00 : : list->tail->next = new_tail; 0.00 : 5e1ead: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 5e1eb1: 48 89 42 08 mov %rax,0x8(%rdx) : list->tail = new_tail; : list->length++; 0.00 : 5e1eb5: 83 43 04 01 addl $0x1,0x4(%rbx) : : new_tail = (ListCell *) palloc(sizeof(*new_tail)); : new_tail->next = NULL; : : list->tail->next = new_tail; : list->tail = new_tail; 0.00 : 5e1eb9: 48 89 43 10 mov %rax,0x10(%rbx) : if (list == NIL) : list = new_list(T_List); : else : new_tail_cell(list); : : lfirst(list->tail) = datum; 0.00 : 5e1ebd: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 5e1ec1: 4c 89 20 mov %r12,(%rax) : check_list_invariants(list); : return list; : } 0.00 : 5e1ec4: 48 89 d8 mov %rbx,%rax 0.00 : 5e1ec7: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5e1ecc: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5e1ed0: c9 leaveq 0.00 : 5e1ed1: c3 retq 0.00 : 5e1ed2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : lappend(List *list, void *datum) : { : Assert(IsPointerList(list)); : : if (list == NIL) : list = new_list(T_List); 0.00 : 5e1ed8: bf 90 02 00 00 mov $0x290,%edi 0.00 : 5e1edd: e8 0e f7 ff ff callq 5e15f0 0.00 : 5e1ee2: 48 89 c3 mov %rax,%rbx 0.00 : 5e1ee5: eb d6 jmp 5e1ebd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:844 25.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:844 25.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:868 25.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:868 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e36a0 : : /* : * tbm_page_is_lossy - is the page marked as lossily stored? : */ : static bool : tbm_page_is_lossy(const TIDBitmap *tbm, BlockNumber pageno) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:844 25.00 : 5e36a0: 55 push %rbp 0.00 : 5e36a1: 48 89 e5 mov %rsp,%rbp 0.00 : 5e36a4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 5e36a8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 25.00 : 5e36ac: 48 83 ec 20 sub $0x20,%rsp : PagetableEntry *page; : BlockNumber chunk_pageno; : int bitno; : : /* we can skip the lookup if there are no lossy chunks */ : if (tbm->nchunks == 0) 0.00 : 5e36b0: 8b 57 2c mov 0x2c(%rdi),%edx : /* : * tbm_page_is_lossy - is the page marked as lossily stored? : */ : static bool : tbm_page_is_lossy(const TIDBitmap *tbm, BlockNumber pageno) : { 0.00 : 5e36b3: 89 f3 mov %esi,%ebx : PagetableEntry *page; : BlockNumber chunk_pageno; : int bitno; : : /* we can skip the lookup if there are no lossy chunks */ : if (tbm->nchunks == 0) 0.00 : 5e36b5: 85 d2 test %edx,%edx 0.00 : 5e36b7: 75 0f jne 5e36c8 : bitno = pageno % PAGES_PER_CHUNK; : chunk_pageno = pageno - bitno; : page = (PagetableEntry *) hash_search(tbm->pagetable, : (void *) &chunk_pageno, : HASH_FIND, NULL); : if (page != NULL && page->ischunk) 0.00 : 5e36b9: 31 c0 xor %eax,%eax : : if ((page->words[wordnum] & ((bitmapword) 1 << bitnum)) != 0) : return true; : } : return false; : } 0.00 : 5e36bb: 48 8b 5d f0 mov -0x10(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:868 25.00 : 5e36bf: 4c 8b 65 f8 mov -0x8(%rbp),%r12 0.00 : 5e36c3: c9 leaveq 25.00 : 5e36c4: c3 retq 0.00 : 5e36c5: 0f 1f 00 nopl (%rax) : /* we can skip the lookup if there are no lossy chunks */ : if (tbm->nchunks == 0) : return false; : Assert(tbm->status == TBM_HASH); : : bitno = pageno % PAGES_PER_CHUNK; 0.00 : 5e36c8: 44 0f b6 e6 movzbl %sil,%r12d : chunk_pageno = pageno - bitno; 0.00 : 5e36cc: 89 f0 mov %esi,%eax : page = (PagetableEntry *) hash_search(tbm->pagetable, 0.00 : 5e36ce: 48 8d 75 ec lea -0x14(%rbp),%rsi : if (tbm->nchunks == 0) : return false; : Assert(tbm->status == TBM_HASH); : : bitno = pageno % PAGES_PER_CHUNK; : chunk_pageno = pageno - bitno; 0.00 : 5e36d2: 44 29 e0 sub %r12d,%eax : page = (PagetableEntry *) hash_search(tbm->pagetable, 0.00 : 5e36d5: 31 c9 xor %ecx,%ecx 0.00 : 5e36d7: 31 d2 xor %edx,%edx : if (tbm->nchunks == 0) : return false; : Assert(tbm->status == TBM_HASH); : : bitno = pageno % PAGES_PER_CHUNK; : chunk_pageno = pageno - bitno; 0.00 : 5e36d9: 89 45 ec mov %eax,-0x14(%rbp) : page = (PagetableEntry *) hash_search(tbm->pagetable, 0.00 : 5e36dc: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5e36e0: e8 bb 0f 1a 00 callq 7846a0 : (void *) &chunk_pageno, : HASH_FIND, NULL); : if (page != NULL && page->ischunk) 0.00 : 5e36e5: 48 85 c0 test %rax,%rax : return false; : Assert(tbm->status == TBM_HASH); : : bitno = pageno % PAGES_PER_CHUNK; : chunk_pageno = pageno - bitno; : page = (PagetableEntry *) hash_search(tbm->pagetable, 0.00 : 5e36e8: 48 89 c6 mov %rax,%rsi : (void *) &chunk_pageno, : HASH_FIND, NULL); : if (page != NULL && page->ischunk) 0.00 : 5e36eb: 74 cc je 5e36b9 0.00 : 5e36ed: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5e36f1: 74 c6 je 5e36b9 0.00 : 5e36f3: 83 e3 1f and $0x1f,%ebx 0.00 : 5e36f6: 41 c1 fc 05 sar $0x5,%r12d 0.00 : 5e36fa: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5e36ff: 89 d9 mov %ebx,%ecx 0.00 : 5e3701: 49 63 d4 movslq %r12d,%rdx : : if ((page->words[wordnum] & ((bitmapword) 1 << bitnum)) != 0) : return true; : } : return false; : } 0.00 : 5e3704: 48 8b 5d f0 mov -0x10(%rbp),%rbx : bitno = pageno % PAGES_PER_CHUNK; : chunk_pageno = pageno - bitno; : page = (PagetableEntry *) hash_search(tbm->pagetable, : (void *) &chunk_pageno, : HASH_FIND, NULL); : if (page != NULL && page->ischunk) 0.00 : 5e3708: d3 e0 shl %cl,%eax 0.00 : 5e370a: 85 44 96 08 test %eax,0x8(%rsi,%rdx,4) : : if ((page->words[wordnum] & ((bitmapword) 1 << bitnum)) != 0) : return true; : } : return false; : } 0.00 : 5e370e: 4c 8b 65 f8 mov -0x8(%rbp),%r12 0.00 : 5e3712: c9 leaveq : bitno = pageno % PAGES_PER_CHUNK; : chunk_pageno = pageno - bitno; : page = (PagetableEntry *) hash_search(tbm->pagetable, : (void *) &chunk_pageno, : HASH_FIND, NULL); : if (page != NULL && page->ischunk) 0.00 : 5e3713: 0f 95 c0 setne %al Sorted summary for file /lib64/libm-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libm-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000039550 : ??:0 100.00 : 39550: 55 push %rbp 0.00 : 39551: be 01 00 00 00 mov $0x1,%esi 0.00 : 39556: 53 push %rbx 0.00 : 39557: 48 83 ec 18 sub $0x18,%rsp 0.00 : 3955b: 48 89 e7 mov %rsp,%rdi 0.00 : 3955e: e8 cd ff ff ff callq 39530 0.00 : 39563: 8b 44 24 08 mov 0x8(%rsp),%eax 0.00 : 39567: 89 c2 mov %eax,%edx 0.00 : 39569: c1 e8 1b shr $0x1b,%eax 0.00 : 3956c: 89 c1 mov %eax,%ecx 0.00 : 3956e: c1 ea 1a shr $0x1a,%edx 0.00 : 39571: d1 e8 shr %eax 0.00 : 39573: 83 e1 01 and $0x1,%ecx 0.00 : 39576: 89 c5 mov %eax,%ebp 0.00 : 39578: 21 ca and %ecx,%edx 0.00 : 3957a: 21 d5 and %edx,%ebp 0.00 : 3957c: 74 11 je 3958f 0.00 : 3957e: 31 c9 xor %ecx,%ecx 0.00 : 39580: 0f 01 d0 xgetbv 0.00 : 39583: 83 e0 06 and $0x6,%eax 0.00 : 39586: 83 f8 06 cmp $0x6,%eax 0.00 : 39589: 0f 84 d1 01 00 00 je 39760 0.00 : 3958f: be 01 00 00 80 mov $0x80000001,%esi 0.00 : 39594: 48 89 e7 mov %rsp,%rdi 0.00 : 39597: e8 94 ff ff ff callq 39530 0.00 : 3959c: 48 8b 15 2d 19 22 00 mov 0x22192d(%rip),%rdx # 25aed0 <_DYNAMIC+0x330> 0.00 : 395a3: 48 8b 05 b6 19 22 00 mov 0x2219b6(%rip),%rax # 25af60 <_DYNAMIC+0x3c0> 0.00 : 395aa: 48 89 10 mov %rdx,(%rax) 0.00 : 395ad: 48 8b 15 34 18 22 00 mov 0x221834(%rip),%rdx # 25ade8 <_DYNAMIC+0x248> 0.00 : 395b4: 48 8b 05 05 19 22 00 mov 0x221905(%rip),%rax # 25aec0 <_DYNAMIC+0x320> 0.00 : 395bb: 48 89 10 mov %rdx,(%rax) 0.00 : 395be: 48 8b 15 0b 18 22 00 mov 0x22180b(%rip),%rdx # 25add0 <_DYNAMIC+0x230> 0.00 : 395c5: 48 8b 05 44 18 22 00 mov 0x221844(%rip),%rax # 25ae10 <_DYNAMIC+0x270> 0.00 : 395cc: 48 89 10 mov %rdx,(%rax) 0.00 : 395cf: 48 8b 15 4a 18 22 00 mov 0x22184a(%rip),%rdx # 25ae20 <_DYNAMIC+0x280> 0.00 : 395d6: 48 8b 05 bb 18 22 00 mov 0x2218bb(%rip),%rax # 25ae98 <_DYNAMIC+0x2f8> 0.00 : 395dd: 48 89 10 mov %rdx,(%rax) 0.00 : 395e0: 48 8b 15 f1 18 22 00 mov 0x2218f1(%rip),%rdx # 25aed8 <_DYNAMIC+0x338> 0.00 : 395e7: 48 8b 05 2a 19 22 00 mov 0x22192a(%rip),%rax # 25af18 <_DYNAMIC+0x378> 0.00 : 395ee: 48 89 10 mov %rdx,(%rax) 0.00 : 395f1: 48 8b 15 00 18 22 00 mov 0x221800(%rip),%rdx # 25adf8 <_DYNAMIC+0x258> 0.00 : 395f8: 48 8b 05 31 19 22 00 mov 0x221931(%rip),%rax # 25af30 <_DYNAMIC+0x390> 0.00 : 395ff: 48 89 10 mov %rdx,(%rax) 0.00 : 39602: 48 8b 15 2f 18 22 00 mov 0x22182f(%rip),%rdx # 25ae38 <_DYNAMIC+0x298> 0.00 : 39609: 48 8b 05 58 17 22 00 mov 0x221758(%rip),%rax # 25ad68 <_DYNAMIC+0x1c8> 0.00 : 39610: 48 89 10 mov %rdx,(%rax) 0.00 : 39613: 48 8b 15 86 18 22 00 mov 0x221886(%rip),%rdx # 25aea0 <_DYNAMIC+0x300> 0.00 : 3961a: 48 8b 05 d7 18 22 00 mov 0x2218d7(%rip),%rax # 25aef8 <_DYNAMIC+0x358> 0.00 : 39621: 48 89 10 mov %rdx,(%rax) 0.00 : 39624: 48 8b 15 fd 18 22 00 mov 0x2218fd(%rip),%rdx # 25af28 <_DYNAMIC+0x388> 0.00 : 3962b: 48 8b 05 26 19 22 00 mov 0x221926(%rip),%rax # 25af58 <_DYNAMIC+0x3b8> 0.00 : 39632: 48 89 10 mov %rdx,(%rax) 0.00 : 39635: 48 8b 15 84 17 22 00 mov 0x221784(%rip),%rdx # 25adc0 <_DYNAMIC+0x220> 0.00 : 3963c: 48 8b 05 5d 17 22 00 mov 0x22175d(%rip),%rax # 25ada0 <_DYNAMIC+0x200> 0.00 : 39643: 48 89 10 mov %rdx,(%rax) 0.00 : 39646: 48 8b 15 93 19 22 00 mov 0x221993(%rip),%rdx # 25afe0 <_DYNAMIC+0x440> 0.00 : 3964d: 48 8b 05 f4 18 22 00 mov 0x2218f4(%rip),%rax # 25af48 <_DYNAMIC+0x3a8> 0.00 : 39654: 48 89 10 mov %rdx,(%rax) 0.00 : 39657: 48 8b 15 ba 17 22 00 mov 0x2217ba(%rip),%rdx # 25ae18 <_DYNAMIC+0x278> 0.00 : 3965e: 48 8b 05 bb 18 22 00 mov 0x2218bb(%rip),%rax # 25af20 <_DYNAMIC+0x380> 0.00 : 39665: 48 89 10 mov %rdx,(%rax) 0.00 : 39668: 48 8b 15 d9 17 22 00 mov 0x2217d9(%rip),%rdx # 25ae48 <_DYNAMIC+0x2a8> 0.00 : 3966f: 48 8b 05 12 19 22 00 mov 0x221912(%rip),%rax # 25af88 <_DYNAMIC+0x3e8> 0.00 : 39676: 48 89 10 mov %rdx,(%rax) 0.00 : 39679: 48 8b 15 20 19 22 00 mov 0x221920(%rip),%rdx # 25afa0 <_DYNAMIC+0x400> 0.00 : 39680: 48 8b 05 f9 16 22 00 mov 0x2216f9(%rip),%rax # 25ad80 <_DYNAMIC+0x1e0> 0.00 : 39687: 48 89 10 mov %rdx,(%rax) 0.00 : 3968a: 48 8b 15 df 18 22 00 mov 0x2218df(%rip),%rdx # 25af70 <_DYNAMIC+0x3d0> 0.00 : 39691: 48 8b 05 30 17 22 00 mov 0x221730(%rip),%rax # 25adc8 <_DYNAMIC+0x228> 0.00 : 39698: 48 89 10 mov %rdx,(%rax) 0.00 : 3969b: 48 8b 15 de 17 22 00 mov 0x2217de(%rip),%rdx # 25ae80 <_DYNAMIC+0x2e0> 0.00 : 396a2: 48 8b 05 b7 17 22 00 mov 0x2217b7(%rip),%rax # 25ae60 <_DYNAMIC+0x2c0> 0.00 : 396a9: 48 89 10 mov %rdx,(%rax) 0.00 : 396ac: 48 8b 15 8d 18 22 00 mov 0x22188d(%rip),%rdx # 25af40 <_DYNAMIC+0x3a0> 0.00 : 396b3: 48 8b 05 d6 17 22 00 mov 0x2217d6(%rip),%rax # 25ae90 <_DYNAMIC+0x2f0> 0.00 : 396ba: 48 89 10 mov %rdx,(%rax) 0.00 : 396bd: 48 8b 15 2c 19 22 00 mov 0x22192c(%rip),%rdx # 25aff0 <_DYNAMIC+0x450> 0.00 : 396c4: 48 8b 05 8d 17 22 00 mov 0x22178d(%rip),%rax # 25ae58 <_DYNAMIC+0x2b8> 0.00 : 396cb: 48 89 10 mov %rdx,(%rax) 0.00 : 396ce: 48 8b 15 03 19 22 00 mov 0x221903(%rip),%rdx # 25afd8 <_DYNAMIC+0x438> 0.00 : 396d5: 48 8b 05 cc 16 22 00 mov 0x2216cc(%rip),%rax # 25ada8 <_DYNAMIC+0x208> 0.00 : 396dc: 48 89 10 mov %rdx,(%rax) 0.00 : 396df: 48 8b 15 42 17 22 00 mov 0x221742(%rip),%rdx # 25ae28 <_DYNAMIC+0x288> 0.00 : 396e6: 48 8b 05 cb 18 22 00 mov 0x2218cb(%rip),%rax # 25afb8 <_DYNAMIC+0x418> 0.00 : 396ed: 48 89 10 mov %rdx,(%rax) 0.00 : 396f0: 48 8b 15 09 17 22 00 mov 0x221709(%rip),%rdx # 25ae00 <_DYNAMIC+0x260> 0.00 : 396f7: 48 8b 05 da 16 22 00 mov 0x2216da(%rip),%rax # 25add8 <_DYNAMIC+0x238> 0.00 : 396fe: 48 89 10 mov %rdx,(%rax) 0.00 : 39701: 48 8b 15 00 18 22 00 mov 0x221800(%rip),%rdx # 25af08 <_DYNAMIC+0x368> 0.00 : 39708: 48 8b 05 69 16 22 00 mov 0x221669(%rip),%rax # 25ad78 <_DYNAMIC+0x1d8> 0.00 : 3970f: 48 89 10 mov %rdx,(%rax) 0.00 : 39712: 48 8b 15 5f 17 22 00 mov 0x22175f(%rip),%rdx # 25ae78 <_DYNAMIC+0x2d8> 0.00 : 39719: 48 8b 05 50 16 22 00 mov 0x221650(%rip),%rax # 25ad70 <_DYNAMIC+0x1d0> 0.00 : 39720: 48 89 10 mov %rdx,(%rax) 0.00 : 39723: 48 8b 15 36 16 22 00 mov 0x221636(%rip),%rdx # 25ad60 <_DYNAMIC+0x1c0> 0.00 : 3972a: 48 8b 05 af 17 22 00 mov 0x2217af(%rip),%rax # 25aee0 <_DYNAMIC+0x340> 0.00 : 39731: 48 89 10 mov %rdx,(%rax) 0.00 : 39734: 48 8b 15 75 18 22 00 mov 0x221875(%rip),%rdx # 25afb0 <_DYNAMIC+0x410> 0.00 : 3973b: 48 8b 05 76 17 22 00 mov 0x221776(%rip),%rax # 25aeb8 <_DYNAMIC+0x318> 0.00 : 39742: 48 89 10 mov %rdx,(%rax) 0.00 : 39745: 48 8b 15 e4 16 22 00 mov 0x2216e4(%rip),%rdx # 25ae30 <_DYNAMIC+0x290> 0.00 : 3974c: 48 8b 05 8d 16 22 00 mov 0x22168d(%rip),%rax # 25ade0 <_DYNAMIC+0x240> 0.00 : 39753: 48 89 10 mov %rdx,(%rax) 0.00 : 39756: 48 83 c4 18 add $0x18,%rsp 0.00 : 3975a: 5b pop %rbx 0.00 : 3975b: 5d pop %rbp 0.00 : 3975c: c3 retq 0.00 : 3975d: 0f 1f 00 nopl (%rax) 0.00 : 39760: be 01 00 00 80 mov $0x80000001,%esi 0.00 : 39765: 48 89 e7 mov %rsp,%rdi 0.00 : 39768: e8 c3 fd ff ff callq 39530 0.00 : 3976d: 0f b7 44 24 0a movzwl 0xa(%rsp),%eax 0.00 : 39772: 85 e8 test %ebp,%eax 0.00 : 39774: 0f 84 22 fe ff ff je 3959c 0.00 : 3977a: 48 8b 15 7f 17 22 00 mov 0x22177f(%rip),%rdx # 25af00 <_DYNAMIC+0x360> 0.00 : 39781: 48 8b 05 d8 17 22 00 mov 0x2217d8(%rip),%rax # 25af60 <_DYNAMIC+0x3c0> 0.00 : 39788: 48 89 10 mov %rdx,(%rax) 0.00 : 3978b: 48 8b 15 d6 16 22 00 mov 0x2216d6(%rip),%rdx # 25ae68 <_DYNAMIC+0x2c8> 0.00 : 39792: 48 8b 05 27 17 22 00 mov 0x221727(%rip),%rax # 25aec0 <_DYNAMIC+0x320> 0.00 : 39799: 48 89 10 mov %rdx,(%rax) 0.00 : 3979c: 48 8b 15 0d 16 22 00 mov 0x22160d(%rip),%rdx # 25adb0 <_DYNAMIC+0x210> 0.00 : 397a3: 48 8b 05 66 16 22 00 mov 0x221666(%rip),%rax # 25ae10 <_DYNAMIC+0x270> 0.00 : 397aa: 48 89 10 mov %rdx,(%rax) 0.00 : 397ad: 48 8b 15 d4 16 22 00 mov 0x2216d4(%rip),%rdx # 25ae88 <_DYNAMIC+0x2e8> 0.00 : 397b4: 48 8b 05 dd 16 22 00 mov 0x2216dd(%rip),%rax # 25ae98 <_DYNAMIC+0x2f8> 0.00 : 397bb: 48 89 10 mov %rdx,(%rax) 0.00 : 397be: 48 8b 15 2b 16 22 00 mov 0x22162b(%rip),%rdx # 25adf0 <_DYNAMIC+0x250> 0.00 : 397c5: 48 8b 05 4c 17 22 00 mov 0x22174c(%rip),%rax # 25af18 <_DYNAMIC+0x378> 0.00 : 397cc: 48 89 10 mov %rdx,(%rax) 0.00 : 397cf: 48 8b 15 12 17 22 00 mov 0x221712(%rip),%rdx # 25aee8 <_DYNAMIC+0x348> 0.00 : 397d6: 48 8b 05 53 17 22 00 mov 0x221753(%rip),%rax # 25af30 <_DYNAMIC+0x390> 0.00 : 397dd: 48 89 10 mov %rdx,(%rax) 0.00 : 397e0: 48 8b 15 51 17 22 00 mov 0x221751(%rip),%rdx # 25af38 <_DYNAMIC+0x398> 0.00 : 397e7: 48 8b 05 7a 15 22 00 mov 0x22157a(%rip),%rax # 25ad68 <_DYNAMIC+0x1c8> 0.00 : 397ee: 48 89 10 mov %rdx,(%rax) 0.00 : 397f1: 48 8b 15 d0 17 22 00 mov 0x2217d0(%rip),%rdx # 25afc8 <_DYNAMIC+0x428> 0.00 : 397f8: 48 8b 05 f9 16 22 00 mov 0x2216f9(%rip),%rax # 25aef8 <_DYNAMIC+0x358> 0.00 : 397ff: 48 89 10 mov %rdx,(%rax) 0.00 : 39802: 48 8b 15 e7 16 22 00 mov 0x2216e7(%rip),%rdx # 25aef0 <_DYNAMIC+0x350> 0.00 : 39809: 48 8b 05 48 17 22 00 mov 0x221748(%rip),%rax # 25af58 <_DYNAMIC+0x3b8> 0.00 : 39810: 48 89 10 mov %rdx,(%rax) 0.00 : 39813: 48 8b 15 a6 17 22 00 mov 0x2217a6(%rip),%rdx # 25afc0 <_DYNAMIC+0x420> 0.00 : 3981a: 48 8b 05 7f 15 22 00 mov 0x22157f(%rip),%rax # 25ada0 <_DYNAMIC+0x200> 0.00 : 39821: 48 89 10 mov %rdx,(%rax) 0.00 : 39824: 48 8b 15 7d 17 22 00 mov 0x22177d(%rip),%rdx # 25afa8 <_DYNAMIC+0x408> 0.00 : 3982b: 48 8b 05 16 17 22 00 mov 0x221716(%rip),%rax # 25af48 <_DYNAMIC+0x3a8> 0.00 : 39832: 48 89 10 mov %rdx,(%rax) 0.00 : 39835: 48 8b 15 cc 15 22 00 mov 0x2215cc(%rip),%rdx # 25ae08 <_DYNAMIC+0x268> 0.00 : 3983c: 48 8b 05 dd 16 22 00 mov 0x2216dd(%rip),%rax # 25af20 <_DYNAMIC+0x380> 0.00 : 39843: 48 89 10 mov %rdx,(%rax) 0.00 : 39846: 48 8b 15 63 16 22 00 mov 0x221663(%rip),%rdx # 25aeb0 <_DYNAMIC+0x310> 0.00 : 3984d: 48 8b 05 34 17 22 00 mov 0x221734(%rip),%rax # 25af88 <_DYNAMIC+0x3e8> 0.00 : 39854: 48 89 10 mov %rdx,(%rax) 0.00 : 39857: 48 8b 15 22 17 22 00 mov 0x221722(%rip),%rdx # 25af80 <_DYNAMIC+0x3e0> 0.00 : 3985e: 48 8b 05 1b 15 22 00 mov 0x22151b(%rip),%rax # 25ad80 <_DYNAMIC+0x1e0> 0.00 : 39865: 48 89 10 mov %rdx,(%rax) 0.00 : 39868: 48 8b 15 e1 15 22 00 mov 0x2215e1(%rip),%rdx # 25ae50 <_DYNAMIC+0x2b0> 0.00 : 3986f: 48 8b 05 52 15 22 00 mov 0x221552(%rip),%rax # 25adc8 <_DYNAMIC+0x228> 0.00 : 39876: 48 89 10 mov %rdx,(%rax) 0.00 : 39879: 48 8b 15 08 15 22 00 mov 0x221508(%rip),%rdx # 25ad88 <_DYNAMIC+0x1e8> 0.00 : 39880: 48 8b 05 d9 15 22 00 mov 0x2215d9(%rip),%rax # 25ae60 <_DYNAMIC+0x2c0> 0.00 : 39887: 48 89 10 mov %rdx,(%rax) 0.00 : 3988a: 48 8b 15 af 15 22 00 mov 0x2215af(%rip),%rdx # 25ae40 <_DYNAMIC+0x2a0> 0.00 : 39891: 48 8b 05 f8 15 22 00 mov 0x2215f8(%rip),%rax # 25ae90 <_DYNAMIC+0x2f0> 0.00 : 39898: 48 89 10 mov %rdx,(%rax) 0.00 : 3989b: 48 8b 15 46 17 22 00 mov 0x221746(%rip),%rdx # 25afe8 <_DYNAMIC+0x448> 0.00 : 398a2: 48 8b 05 af 15 22 00 mov 0x2215af(%rip),%rax # 25ae58 <_DYNAMIC+0x2b8> 0.00 : 398a9: 48 89 10 mov %rdx,(%rax) 0.00 : 398ac: 48 8b 15 05 15 22 00 mov 0x221505(%rip),%rdx # 25adb8 <_DYNAMIC+0x218> 0.00 : 398b3: 48 8b 05 ee 14 22 00 mov 0x2214ee(%rip),%rax # 25ada8 <_DYNAMIC+0x208> 0.00 : 398ba: 48 89 10 mov %rdx,(%rax) 0.00 : 398bd: 48 8b 15 cc 14 22 00 mov 0x2214cc(%rip),%rdx # 25ad90 <_DYNAMIC+0x1f0> 0.00 : 398c4: 48 8b 05 ed 16 22 00 mov 0x2216ed(%rip),%rax # 25afb8 <_DYNAMIC+0x418> 0.00 : 398cb: 48 89 10 mov %rdx,(%rax) 0.00 : 398ce: 48 8b 15 7b 16 22 00 mov 0x22167b(%rip),%rdx # 25af50 <_DYNAMIC+0x3b0> 0.00 : 398d5: 48 8b 05 fc 14 22 00 mov 0x2214fc(%rip),%rax # 25add8 <_DYNAMIC+0x238> 0.00 : 398dc: 48 89 10 mov %rdx,(%rax) 0.00 : 398df: 48 8b 15 8a 15 22 00 mov 0x22158a(%rip),%rdx # 25ae70 <_DYNAMIC+0x2d0> 0.00 : 398e6: 48 8b 05 8b 14 22 00 mov 0x22148b(%rip),%rax # 25ad78 <_DYNAMIC+0x1d8> 0.00 : 398ed: 48 89 10 mov %rdx,(%rax) 0.00 : 398f0: 48 8b 15 b1 15 22 00 mov 0x2215b1(%rip),%rdx # 25aea8 <_DYNAMIC+0x308> 0.00 : 398f7: 48 8b 05 72 14 22 00 mov 0x221472(%rip),%rax # 25ad70 <_DYNAMIC+0x1d0> 0.00 : 398fe: 48 89 10 mov %rdx,(%rax) 0.00 : 39901: 48 8b 15 90 16 22 00 mov 0x221690(%rip),%rdx # 25af98 <_DYNAMIC+0x3f8> 0.00 : 39908: 48 8b 05 d1 15 22 00 mov 0x2215d1(%rip),%rax # 25aee0 <_DYNAMIC+0x340> 0.00 : 3990f: 48 89 10 mov %rdx,(%rax) 0.00 : 39912: 48 8b 15 7f 14 22 00 mov 0x22147f(%rip),%rdx # 25ad98 <_DYNAMIC+0x1f8> 0.00 : 39919: 48 8b 05 98 15 22 00 mov 0x221598(%rip),%rax # 25aeb8 <_DYNAMIC+0x318> 0.00 : 39920: 48 89 10 mov %rdx,(%rax) 0.00 : 39923: 48 8b 15 4e 16 22 00 mov 0x22164e(%rip),%rdx # 25af78 <_DYNAMIC+0x3d8> 0.00 : 3992a: e9 1d fe ff ff jmpq 3974c Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000023f80 <__gconv_transform_internal_utf8>: 0.00 : 23f80: 41 57 push %r15 0.00 : 23f82: 48 89 f8 mov %rdi,%rax 0.00 : 23f85: 49 89 f7 mov %rsi,%r15 0.00 : 23f88: 48 83 c0 68 add $0x68,%rax 0.00 : 23f8c: 41 56 push %r14 0.00 : 23f8e: 49 89 d6 mov %rdx,%r14 0.00 : 23f91: 48 8d 56 38 lea 0x38(%rsi),%rdx 0.00 : 23f95: 41 55 push %r13 0.00 : 23f97: 49 89 cd mov %rcx,%r13 0.00 : 23f9a: 41 54 push %r12 0.00 : 23f9c: 55 push %rbp 0.00 : 23f9d: 53 push %rbx 0.00 : 23f9e: 48 81 ec e8 00 00 00 sub $0xe8,%rsp 0.00 : 23fa5: 48 89 7c 24 68 mov %rdi,0x68(%rsp) 0.00 : 23faa: 4c 89 44 24 60 mov %r8,0x60(%rsp) 0.00 : 23faf: 4c 89 4c 24 58 mov %r9,0x58(%rsp) 0.00 : 23fb4: 48 89 44 24 70 mov %rax,0x70(%rsp) 0.00 : 23fb9: 48 89 54 24 78 mov %rdx,0x78(%rsp) 0.00 : 23fbe: 8b 5e 10 mov 0x10(%rsi),%ebx 0.00 : 23fc1: 8b ac 24 20 01 00 00 mov 0x120(%rsp),%ebp 0.00 : 23fc8: 48 c7 84 24 80 00 00 movq $0x0,0x80(%rsp) 0.00 : 23fcf: 00 00 00 00 00 0.00 : 23fd4: f6 c3 01 test $0x1,%bl 0.00 : 23fd7: 75 32 jne 2400b <__gconv_transform_internal_utf8+0x8b> 0.00 : 23fd9: 48 8b 4c 24 70 mov 0x70(%rsp),%rcx 0.00 : 23fde: 48 8b 44 24 68 mov 0x68(%rsp),%rax 0.00 : 23fe3: 48 8b 49 28 mov 0x28(%rcx),%rcx 0.00 : 23fe7: 48 89 8c 24 80 00 00 mov %rcx,0x80(%rsp) 0.00 : 23fee: 00 0.00 : 23fef: 48 83 78 68 00 cmpq $0x0,0x68(%rax) 0.00 : 23ff4: 74 15 je 2400b <__gconv_transform_internal_utf8+0x8b> 0.00 : 23ff6: 48 c1 c9 11 ror $0x11,%rcx 0.00 : 23ffa: 64 48 33 0c 25 30 00 xor %fs:0x30,%rcx 0.00 : 24001: 00 00 0.00 : 24003: 48 89 8c 24 80 00 00 mov %rcx,0x80(%rsp) 0.00 : 2400a: 00 0.00 : 2400b: 85 ed test %ebp,%ebp 0.00 : 2400d: 0f 85 1d 0a 00 00 jne 24a30 <__gconv_transform_internal_utf8+0xab0> ??:0 33.33 : 24013: 48 83 7c 24 60 00 cmpq $0x0,0x60(%rsp) 0.00 : 24019: 0f 85 05 0b 00 00 jne 24b24 <__gconv_transform_internal_utf8+0xba4> 0.00 : 2401f: 49 8b 0f mov (%r15),%rcx 0.00 : 24022: 48 89 8c 24 90 00 00 mov %rcx,0x90(%rsp) 0.00 : 24029: 00 0.00 : 2402a: 48 83 7c 24 58 00 cmpq $0x0,0x58(%rsp) 0.00 : 24030: 48 c7 84 24 a0 00 00 movq $0x0,0xa0(%rsp) 0.00 : 24037: 00 00 00 00 00 0.00 : 2403c: 48 8d 84 24 c8 00 00 lea 0xc8(%rsp),%rax 0.00 : 24043: 00 0.00 : 24044: 8b ac 24 28 01 00 00 mov 0x128(%rsp),%ebp 0.00 : 2404b: 48 0f 44 84 24 a0 00 cmove 0xa0(%rsp),%rax 0.00 : 24052: 00 00 0.00 : 24054: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : 24058: 48 c7 84 24 c8 00 00 movq $0x0,0xc8(%rsp) 0.00 : 2405f: 00 00 00 00 00 0.00 : 24064: 85 ed test %ebp,%ebp 0.00 : 24066: 48 89 94 24 98 00 00 mov %rdx,0x98(%rsp) 0.00 : 2406d: 00 0.00 : 2406e: 48 89 84 24 a0 00 00 mov %rax,0xa0(%rsp) 0.00 : 24075: 00 0.00 : 24076: 74 0e je 24086 <__gconv_transform_internal_utf8+0x106> 0.00 : 24078: 4d 8b 57 20 mov 0x20(%r15),%r10 0.00 : 2407c: 41 f6 02 07 testb $0x7,(%r10) 0.00 : 24080: 0f 85 db 03 00 00 jne 24461 <__gconv_transform_internal_utf8+0x4e1> 0.00 : 24086: 48 8d 8c 24 c0 00 00 lea 0xc0(%rsp),%rcx 0.00 : 2408d: 00 0.00 : 2408e: 48 8d 84 24 b8 00 00 lea 0xb8(%rsp),%rax 0.00 : 24095: 00 0.00 : 24096: 48 8d 94 24 b0 00 00 lea 0xb0(%rsp),%rdx 0.00 : 2409d: 00 0.00 : 2409e: 48 89 4c 24 38 mov %rcx,0x38(%rsp) 0.00 : 240a3: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 240a8: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : 240ad: 0f 1f 00 nopl (%rax) 0.00 : 240b0: 49 8b 0e mov (%r14),%rcx 0.00 : 240b3: 48 8b 84 24 90 00 00 mov 0x90(%rsp),%rax 0.00 : 240ba: 00 0.00 : 240bb: 83 e3 02 and $0x2,%ebx 0.00 : 240be: 41 bc 04 00 00 00 mov $0x4,%r12d 0.00 : 240c4: 89 5c 24 44 mov %ebx,0x44(%rsp) 0.00 : 240c8: 48 89 8c 24 88 00 00 mov %rcx,0x88(%rsp) 0.00 : 240cf: 00 0.00 : 240d0: 48 89 8c 24 b8 00 00 mov %rcx,0xb8(%rsp) 0.00 : 240d7: 00 0.00 : 240d8: 48 89 84 24 c0 00 00 mov %rax,0xc0(%rsp) 0.00 : 240df: 00 0.00 : 240e0: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 240e7: 00 0.00 : 240e8: 49 39 fd cmp %rdi,%r13 0.00 : 240eb: 74 54 je 24141 <__gconv_transform_internal_utf8+0x1c1> 0.00 : 240ed: 48 8d 47 04 lea 0x4(%rdi),%rax 0.00 : 240f1: 49 39 c5 cmp %rax,%r13 0.00 : 240f4: 0f 82 39 03 00 00 jb 24433 <__gconv_transform_internal_utf8+0x4b3> 33.33 : 240fa: 48 8b ac 24 c0 00 00 mov 0xc0(%rsp),%rbp 0.00 : 24101: 00 0.00 : 24102: 48 39 ac 24 98 00 00 cmp %rbp,0x98(%rsp) 0.00 : 24109: 00 0.00 : 2410a: 0f 86 18 03 00 00 jbe 24428 <__gconv_transform_internal_utf8+0x4a8> 0.00 : 24110: 8b 37 mov (%rdi),%esi 0.00 : 24112: 83 fe 7f cmp $0x7f,%esi 0.00 : 24115: 0f 87 25 01 00 00 ja 24240 <__gconv_transform_internal_utf8+0x2c0> 0.00 : 2411b: 48 8d 45 01 lea 0x1(%rbp),%rax 0.00 : 2411f: 40 88 75 00 mov %sil,0x0(%rbp) 0.00 : 24123: 48 89 84 24 c0 00 00 mov %rax,0xc0(%rsp) 0.00 : 2412a: 00 0.00 : 2412b: 48 83 84 24 b8 00 00 addq $0x4,0xb8(%rsp) 0.00 : 24132: 00 04 0.00 : 24134: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 2413b: 00 33.33 : 2413c: 49 39 fd cmp %rdi,%r13 0.00 : 2413f: 75 ac jne 240ed <__gconv_transform_internal_utf8+0x16d> 0.00 : 24141: 48 8b ac 24 c0 00 00 mov 0xc0(%rsp),%rbp 0.00 : 24148: 00 0.00 : 24149: 48 83 7c 24 60 00 cmpq $0x0,0x60(%rsp) 0.00 : 2414f: 49 89 3e mov %rdi,(%r14) 0.00 : 24152: 0f 85 fc 01 00 00 jne 24354 <__gconv_transform_internal_utf8+0x3d4> 0.00 : 24158: 49 8b 5f 30 mov 0x30(%r15),%rbx 0.00 : 2415c: 48 85 db test %rbx,%rbx 0.00 : 2415f: 74 3b je 2419c <__gconv_transform_internal_utf8+0x21c> 0.00 : 24161: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 24168: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 2416c: 48 85 ff test %rdi,%rdi 0.00 : 2416f: 74 22 je 24193 <__gconv_transform_internal_utf8+0x213> 0.00 : 24171: e8 9a eb 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 24176: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 2417a: 49 89 e8 mov %rbp,%r8 0.00 : 2417d: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 24184: 00 0.00 : 24185: 49 8b 16 mov (%r14),%rdx 0.00 : 24188: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : 2418f: 00 0.00 : 24190: ff 53 08 callq *0x8(%rbx) 0.00 : 24193: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 24197: 48 85 db test %rbx,%rbx 0.00 : 2419a: 75 cc jne 24168 <__gconv_transform_internal_utf8+0x1e8> 0.00 : 2419c: 41 83 47 14 01 addl $0x1,0x14(%r15) 0.00 : 241a1: 41 f6 47 10 01 testb $0x1,0x10(%r15) 0.00 : 241a6: 0f 85 59 03 00 00 jne 24505 <__gconv_transform_internal_utf8+0x585> 0.00 : 241ac: 48 3b ac 24 90 00 00 cmp 0x90(%rsp),%rbp 0.00 : 241b3: 00 0.00 : 241b4: 76 68 jbe 2421e <__gconv_transform_internal_utf8+0x29e> 0.00 : 241b6: 49 8b 07 mov (%r15),%rax 0.00 : 241b9: 48 8b bc 24 80 00 00 mov 0x80(%rsp),%rdi 0.00 : 241c0: 00 0.00 : 241c1: 48 89 84 24 c0 00 00 mov %rax,0xc0(%rsp) 0.00 : 241c8: 00 0.00 : 241c9: e8 42 eb 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 241ce: 8b 84 24 28 01 00 00 mov 0x128(%rsp),%eax 0.00 : 241d5: 45 31 c0 xor %r8d,%r8d 0.00 : 241d8: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 241df: 4c 8b 4c 24 58 mov 0x58(%rsp),%r9 0.00 : 241e4: 48 89 e9 mov %rbp,%rcx 0.00 : 241e7: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 241ec: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 241f1: 48 8b 7c 24 70 mov 0x70(%rsp),%rdi 0.00 : 241f6: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 241fa: ff 94 24 80 00 00 00 callq *0x80(%rsp) 0.00 : 24201: 83 f8 04 cmp $0x4,%eax 0.00 : 24204: 41 89 c2 mov %eax,%r10d 0.00 : 24207: 0f 84 9b 01 00 00 je 243a8 <__gconv_transform_internal_utf8+0x428> 0.00 : 2420d: 48 39 ac 24 c0 00 00 cmp %rbp,0xc0(%rsp) 0.00 : 24214: 00 0.00 : 24215: 0f 85 ec 03 00 00 jne 24607 <__gconv_transform_internal_utf8+0x687> 0.00 : 2421b: 45 89 d4 mov %r10d,%r12d 0.00 : 2421e: 45 85 e4 test %r12d,%r12d 0.00 : 24221: 0f 85 94 01 00 00 jne 243bb <__gconv_transform_internal_utf8+0x43b> 0.00 : 24227: 49 8b 17 mov (%r15),%rdx 0.00 : 2422a: 41 8b 5f 10 mov 0x10(%r15),%ebx 0.00 : 2422e: 48 89 94 24 90 00 00 mov %rdx,0x90(%rsp) 0.00 : 24235: 00 0.00 : 24236: e9 75 fe ff ff jmpq 240b0 <__gconv_transform_internal_utf8+0x130> 0.00 : 2423b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 24240: 85 f6 test %esi,%esi 0.00 : 24242: 78 7c js 242c0 <__gconv_transform_internal_utf8+0x340> 0.00 : 24244: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 2424a: ba 0b 00 00 00 mov $0xb,%edx 0.00 : 2424f: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 24254: 89 d1 mov %edx,%ecx 0.00 : 24256: d3 e0 shl %cl,%eax 0.00 : 24258: 85 f0 test %esi,%eax 0.00 : 2425a: 74 0d je 24269 <__gconv_transform_internal_utf8+0x2e9> 0.00 : 2425c: 49 83 c0 01 add $0x1,%r8 0.00 : 24260: 83 c2 05 add $0x5,%edx 0.00 : 24263: 49 83 f8 06 cmp $0x6,%r8 0.00 : 24267: 75 e6 jne 2424f <__gconv_transform_internal_utf8+0x2cf> 0.00 : 24269: 4a 8d 54 05 00 lea 0x0(%rbp,%r8,1),%rdx 0.00 : 2426e: 48 39 94 24 98 00 00 cmp %rdx,0x98(%rsp) 0.00 : 24275: 00 0.00 : 24276: 0f 82 ac 01 00 00 jb 24428 <__gconv_transform_internal_utf8+0x4a8> 0.00 : 2427c: b8 00 ff ff ff mov $0xffffff00,%eax 0.00 : 24281: 44 89 c1 mov %r8d,%ecx 0.00 : 24284: d3 f8 sar %cl,%eax 0.00 : 24286: 88 45 00 mov %al,0x0(%rbp) 0.00 : 24289: 4c 01 84 24 c0 00 00 add %r8,0xc0(%rsp) 0.00 : 24290: 00 0.00 : 24291: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 24298: 89 f0 mov %esi,%eax 0.00 : 2429a: 49 83 e8 01 sub $0x1,%r8 0.00 : 2429e: c1 ee 06 shr $0x6,%esi 0.00 : 242a1: 83 e0 3f and $0x3f,%eax 0.00 : 242a4: 83 c8 80 or $0xffffff80,%eax 0.00 : 242a7: 88 42 ff mov %al,-0x1(%rdx) 0.00 : 242aa: 48 83 ea 01 sub $0x1,%rdx 0.00 : 242ae: 49 83 f8 01 cmp $0x1,%r8 0.00 : 242b2: 77 e4 ja 24298 <__gconv_transform_internal_utf8+0x318> 0.00 : 242b4: 40 08 75 00 or %sil,0x0(%rbp) 0.00 : 242b8: e9 6e fe ff ff jmpq 2412b <__gconv_transform_internal_utf8+0x1ab> 0.00 : 242bd: 0f 1f 00 nopl (%rax) 0.00 : 242c0: 48 83 bc 24 a0 00 00 cmpq $0x0,0xa0(%rsp) 0.00 : 242c7: 00 00 0.00 : 242c9: 0f 84 87 01 00 00 je 24456 <__gconv_transform_internal_utf8+0x4d6> 0.00 : 242cf: 49 8b 5f 30 mov 0x30(%r15),%rbx 0.00 : 242d3: 48 85 db test %rbx,%rbx 0.00 : 242d6: 75 15 jne 242ed <__gconv_transform_internal_utf8+0x36d> 0.00 : 242d8: e9 9b 00 00 00 jmpq 24378 <__gconv_transform_internal_utf8+0x3f8> 0.00 : 242dd: 0f 1f 00 nopl (%rax) 0.00 : 242e0: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 242e4: 48 85 db test %rbx,%rbx 0.00 : 242e7: 0f 84 8b 00 00 00 je 24378 <__gconv_transform_internal_utf8+0x3f8> 0.00 : 242ed: 48 8b 3b mov (%rbx),%rdi 0.00 : 242f0: e8 1b ea 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 242f5: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 242fa: 48 8b 84 24 a0 00 00 mov 0xa0(%rsp),%rax 0.00 : 24301: 00 0.00 : 24302: 4d 89 e9 mov %r13,%r9 0.00 : 24305: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 24309: 4c 8b 44 24 30 mov 0x30(%rsp),%r8 0.00 : 2430e: 4c 89 fe mov %r15,%rsi 0.00 : 24311: 48 8b 7c 24 68 mov 0x68(%rsp),%rdi 0.00 : 24316: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 2431a: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 2431f: 49 8b 0e mov (%r14),%rcx 0.00 : 24322: ff 13 callq *(%rbx) 0.00 : 24324: 83 f8 06 cmp $0x6,%eax 0.00 : 24327: 41 89 c4 mov %eax,%r12d 0.00 : 2432a: 74 b4 je 242e0 <__gconv_transform_internal_utf8+0x360> 0.00 : 2432c: 83 f8 05 cmp $0x5,%eax 0.00 : 2432f: 0f 85 ab fd ff ff jne 240e0 <__gconv_transform_internal_utf8+0x160> 0.00 : 24335: 48 83 7c 24 60 00 cmpq $0x0,0x60(%rsp) 0.00 : 2433b: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 24342: 00 0.00 : 24343: 48 8b ac 24 c0 00 00 mov 0xc0(%rsp),%rbp 0.00 : 2434a: 00 0.00 : 2434b: 49 89 3e mov %rdi,(%r14) 0.00 : 2434e: 0f 84 04 fe ff ff je 24158 <__gconv_transform_internal_utf8+0x1d8> 0.00 : 24354: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 24359: 48 89 2a mov %rbp,(%rdx) 0.00 : 2435c: 48 81 c4 e8 00 00 00 add $0xe8,%rsp 0.00 : 24363: 44 89 e0 mov %r12d,%eax 0.00 : 24366: 5b pop %rbx 0.00 : 24367: 5d pop %rbp 0.00 : 24368: 41 5c pop %r12 0.00 : 2436a: 41 5d pop %r13 0.00 : 2436c: 41 5e pop %r14 0.00 : 2436e: 41 5f pop %r15 0.00 : 24370: c3 retq 0.00 : 24371: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 24378: 8b 5c 24 44 mov 0x44(%rsp),%ebx 0.00 : 2437c: 85 db test %ebx,%ebx 0.00 : 2437e: 0f 84 c2 00 00 00 je 24446 <__gconv_transform_internal_utf8+0x4c6> 0.00 : 24384: 48 8b 84 24 a0 00 00 mov 0xa0(%rsp),%rax 0.00 : 2438b: 00 0.00 : 2438c: 41 bc 06 00 00 00 mov $0x6,%r12d 0.00 : 24392: 48 83 00 01 addq $0x1,(%rax) 0.00 : 24396: 48 83 84 24 b8 00 00 addq $0x4,0xb8(%rsp) 0.00 : 2439d: 00 04 0.00 : 2439f: e9 3c fd ff ff jmpq 240e0 <__gconv_transform_internal_utf8+0x160> 0.00 : 243a4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 243a8: 41 83 fc 05 cmp $0x5,%r12d 0.00 : 243ac: 0f 84 75 fe ff ff je 24227 <__gconv_transform_internal_utf8+0x2a7> 0.00 : 243b2: 45 85 e4 test %r12d,%r12d 0.00 : 243b5: 0f 84 6c fe ff ff je 24227 <__gconv_transform_internal_utf8+0x2a7> 0.00 : 243bb: 44 8b 9c 24 28 01 00 mov 0x128(%rsp),%r11d 0.00 : 243c2: 00 0.00 : 243c3: 45 85 db test %r11d,%r11d 0.00 : 243c6: 74 94 je 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 243c8: 41 83 fc 07 cmp $0x7,%r12d 0.00 : 243cc: 75 8e jne 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 243ce: 49 8b 36 mov (%r14),%rsi 0.00 : 243d1: 4c 89 e8 mov %r13,%rax 0.00 : 243d4: 48 29 f0 sub %rsi,%rax 0.00 : 243d7: 48 83 f8 03 cmp $0x3,%rax 0.00 : 243db: 0f 8f c7 06 00 00 jg 24aa8 <__gconv_transform_internal_utf8+0xb28> 0.00 : 243e1: 31 ff xor %edi,%edi 0.00 : 243e3: 31 d2 xor %edx,%edx 0.00 : 243e5: 49 39 f5 cmp %rsi,%r13 0.00 : 243e8: 48 89 f1 mov %rsi,%rcx 0.00 : 243eb: 76 20 jbe 2440d <__gconv_transform_internal_utf8+0x48d> 0.00 : 243ed: 0f b6 01 movzbl (%rcx),%eax 0.00 : 243f0: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 243f4: 48 83 c1 01 add $0x1,%rcx 0.00 : 243f8: 88 44 3a 04 mov %al,0x4(%rdx,%rdi,1) 0.00 : 243fc: 48 83 c7 01 add $0x1,%rdi 0.00 : 24400: 49 39 cd cmp %rcx,%r13 0.00 : 24403: 49 89 0e mov %rcx,(%r14) 0.00 : 24406: 77 e5 ja 243ed <__gconv_transform_internal_utf8+0x46d> 0.00 : 24408: 44 89 ea mov %r13d,%edx 0.00 : 2440b: 29 f2 sub %esi,%edx 0.00 : 2440d: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 24411: 83 20 f8 andl $0xfffffff8,(%rax) 0.00 : 24414: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 24418: 09 10 or %edx,(%rax) 0.00 : 2441a: 41 bc 07 00 00 00 mov $0x7,%r12d 0.00 : 24420: e9 37 ff ff ff jmpq 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24425: 0f 1f 00 nopl (%rax) 0.00 : 24428: 41 bc 05 00 00 00 mov $0x5,%r12d 0.00 : 2442e: e9 16 fd ff ff jmpq 24149 <__gconv_transform_internal_utf8+0x1c9> 0.00 : 24433: 41 bc 07 00 00 00 mov $0x7,%r12d 0.00 : 24439: 48 8b ac 24 c0 00 00 mov 0xc0(%rsp),%rbp 0.00 : 24440: 00 0.00 : 24441: e9 03 fd ff ff jmpq 24149 <__gconv_transform_internal_utf8+0x1c9> 0.00 : 24446: 48 8b ac 24 c0 00 00 mov 0xc0(%rsp),%rbp 0.00 : 2444d: 00 0.00 : 2444e: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 24455: 00 0.00 : 24456: 41 bc 06 00 00 00 mov $0x6,%r12d 0.00 : 2445c: e9 e8 fc ff ff jmpq 24149 <__gconv_transform_internal_utf8+0x1c9> 0.00 : 24461: 48 83 7c 24 60 00 cmpq $0x0,0x60(%rsp) 0.00 : 24467: 0f 85 98 06 00 00 jne 24b05 <__gconv_transform_internal_utf8+0xb85> 0.00 : 2446d: 49 8b 06 mov (%r14),%rax 0.00 : 24470: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 24477: 00 0.00 : 24478: 31 d2 xor %edx,%edx 0.00 : 2447a: 4c 8d 9c 24 d0 00 00 lea 0xd0(%rsp),%r11 0.00 : 24481: 00 0.00 : 24482: 48 89 84 24 c0 00 00 mov %rax,0xc0(%rsp) 0.00 : 24489: 00 0.00 : 2448a: 48 89 8c 24 b8 00 00 mov %rcx,0xb8(%rsp) 0.00 : 24491: 00 0.00 : 24492: 41 f6 02 07 testb $0x7,(%r10) 0.00 : 24496: 0f 84 5c 03 00 00 je 247f8 <__gconv_transform_internal_utf8+0x878> 0.00 : 2449c: 41 0f b6 44 12 04 movzbl 0x4(%r10,%rdx,1),%eax 0.00 : 244a2: 41 88 04 13 mov %al,(%r11,%rdx,1) 0.00 : 244a6: 49 63 02 movslq (%r10),%rax 0.00 : 244a9: 48 83 c2 01 add $0x1,%rdx 0.00 : 244ad: 83 e0 07 and $0x7,%eax 0.00 : 244b0: 48 39 c2 cmp %rax,%rdx 0.00 : 244b3: 72 e7 jb 2449c <__gconv_transform_internal_utf8+0x51c> 0.00 : 244b5: 48 89 d1 mov %rdx,%rcx 0.00 : 244b8: b8 04 00 00 00 mov $0x4,%eax 0.00 : 244bd: 48 29 d0 sub %rdx,%rax 0.00 : 244c0: 48 03 84 24 c0 00 00 add 0xc0(%rsp),%rax 0.00 : 244c7: 00 0.00 : 244c8: 49 39 c5 cmp %rax,%r13 0.00 : 244cb: 73 50 jae 2451d <__gconv_transform_internal_utf8+0x59d> 0.00 : 244cd: 48 8b 94 24 c0 00 00 mov 0xc0(%rsp),%rdx 0.00 : 244d4: 00 0.00 : 244d5: 4d 89 2e mov %r13,(%r14) 0.00 : 244d8: 49 39 d5 cmp %rdx,%r13 0.00 : 244db: 0f 86 39 ff ff ff jbe 2441a <__gconv_transform_internal_utf8+0x49a> 0.00 : 244e1: 49 8d 4c 0a 04 lea 0x4(%r10,%rcx,1),%rcx 0.00 : 244e6: 0f b6 02 movzbl (%rdx),%eax 0.00 : 244e9: 48 83 c2 01 add $0x1,%rdx 0.00 : 244ed: 88 01 mov %al,(%rcx) 0.00 : 244ef: 48 83 c1 01 add $0x1,%rcx 0.00 : 244f3: 49 39 d5 cmp %rdx,%r13 0.00 : 244f6: 48 89 94 24 c0 00 00 mov %rdx,0xc0(%rsp) 0.00 : 244fd: 00 0.00 : 244fe: 77 e6 ja 244e6 <__gconv_transform_internal_utf8+0x566> 0.00 : 24500: e9 15 ff ff ff jmpq 2441a <__gconv_transform_internal_utf8+0x49a> 0.00 : 24505: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 2450a: 49 89 2f mov %rbp,(%r15) 0.00 : 2450d: 48 8b 84 24 c8 00 00 mov 0xc8(%rsp),%rax 0.00 : 24514: 00 0.00 : 24515: 48 01 01 add %rax,(%rcx) 0.00 : 24518: e9 9e fe ff ff jmpq 243bb <__gconv_transform_internal_utf8+0x43b> 0.00 : 2451d: 48 8b 84 24 98 00 00 mov 0x98(%rsp),%rax 0.00 : 24524: 00 0.00 : 24525: 48 3b 84 24 b8 00 00 cmp 0xb8(%rsp),%rax 0.00 : 2452c: 00 0.00 : 2452d: 41 bc 05 00 00 00 mov $0x5,%r12d 0.00 : 24533: 0f 86 23 fe ff ff jbe 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24539: 4c 8d 9c 24 d0 00 00 lea 0xd0(%rsp),%r11 0.00 : 24540: 00 0.00 : 24541: 49 8d 34 0b lea (%r11,%rcx,1),%rsi 0.00 : 24545: 48 8b 94 24 c0 00 00 mov 0xc0(%rsp),%rdx 0.00 : 2454c: 00 0.00 : 2454d: 48 83 c1 01 add $0x1,%rcx 0.00 : 24551: 0f b6 02 movzbl (%rdx),%eax 0.00 : 24554: 88 06 mov %al,(%rsi) 0.00 : 24556: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 2455a: 48 83 c6 01 add $0x1,%rsi 0.00 : 2455e: 48 83 f9 03 cmp $0x3,%rcx 0.00 : 24562: 48 89 84 24 c0 00 00 mov %rax,0xc0(%rsp) 0.00 : 24569: 00 0.00 : 2456a: 0f 86 89 00 00 00 jbe 245f9 <__gconv_transform_internal_utf8+0x679> 0.00 : 24570: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx 0.00 : 24574: 4c 89 9c 24 c0 00 00 mov %r11,0xc0(%rsp) 0.00 : 2457b: 00 0.00 : 2457c: 48 89 8c 24 a8 00 00 mov %rcx,0xa8(%rsp) 0.00 : 24583: 00 0.00 : 24584: 41 8b 33 mov (%r11),%esi 0.00 : 24587: 83 fe 7f cmp $0x7f,%esi 0.00 : 2458a: 0f 87 95 02 00 00 ja 24825 <__gconv_transform_internal_utf8+0x8a5> 0.00 : 24590: 48 8b 84 24 b8 00 00 mov 0xb8(%rsp),%rax 0.00 : 24597: 00 0.00 : 24598: 40 88 30 mov %sil,(%rax) 0.00 : 2459b: 48 83 c0 01 add $0x1,%rax 0.00 : 2459f: 48 89 84 24 b8 00 00 mov %rax,0xb8(%rsp) 0.00 : 245a6: 00 0.00 : 245a7: 48 83 84 24 c0 00 00 addq $0x4,0xc0(%rsp) 0.00 : 245ae: 00 04 0.00 : 245b0: 45 31 e4 xor %r12d,%r12d 0.00 : 245b3: 48 8b 84 24 c0 00 00 mov 0xc0(%rsp),%rax 0.00 : 245ba: 00 0.00 : 245bb: 4c 39 d8 cmp %r11,%rax 0.00 : 245be: 0f 84 40 02 00 00 je 24804 <__gconv_transform_internal_utf8+0x884> 0.00 : 245c4: 49 63 12 movslq (%r10),%rdx 0.00 : 245c7: 4c 29 d8 sub %r11,%rax 0.00 : 245ca: 83 e2 07 and $0x7,%edx 0.00 : 245cd: 48 39 d0 cmp %rdx,%rax 0.00 : 245d0: 0f 8e 3b 04 00 00 jle 24a11 <__gconv_transform_internal_utf8+0xa91> 0.00 : 245d6: 48 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%rcx 0.00 : 245dd: 00 0.00 : 245de: 48 29 d0 sub %rdx,%rax 0.00 : 245e1: 49 01 06 add %rax,(%r14) 0.00 : 245e4: 48 89 8c 24 90 00 00 mov %rcx,0x90(%rsp) 0.00 : 245eb: 00 0.00 : 245ec: 41 83 22 f8 andl $0xfffffff8,(%r10) 0.00 : 245f0: 41 8b 5f 10 mov 0x10(%r15),%ebx 0.00 : 245f4: e9 8d fa ff ff jmpq 24086 <__gconv_transform_internal_utf8+0x106> 0.00 : 245f9: 49 39 c5 cmp %rax,%r13 0.00 : 245fc: 0f 87 43 ff ff ff ja 24545 <__gconv_transform_internal_utf8+0x5c5> 0.00 : 24602: e9 69 ff ff ff jmpq 24570 <__gconv_transform_internal_utf8+0x5f0> 0.00 : 24607: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 2460e: 00 0.00 : 2460f: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 24616: 00 0.00 : 24617: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : 2461d: 48 8b ac 24 c0 00 00 mov 0xc0(%rsp),%rbp 0.00 : 24624: 00 0.00 : 24625: 49 89 16 mov %rdx,(%r14) 0.00 : 24628: 45 8b 67 10 mov 0x10(%r15),%r12d 0.00 : 2462c: 48 89 94 24 b8 00 00 mov %rdx,0xb8(%rsp) 0.00 : 24633: 00 0.00 : 24634: 48 89 8c 24 b0 00 00 mov %rcx,0xb0(%rsp) 0.00 : 2463b: 00 0.00 : 2463c: 41 83 e4 02 and $0x2,%r12d 0.00 : 24640: eb 18 jmp 2465a <__gconv_transform_internal_utf8+0x6da> 0.00 : 24642: 48 8d 47 01 lea 0x1(%rdi),%rax 0.00 : 24646: 40 88 37 mov %sil,(%rdi) 0.00 : 24649: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) 0.00 : 24650: 00 0.00 : 24651: 48 83 84 24 b8 00 00 addq $0x4,0xb8(%rsp) 0.00 : 24658: 00 04 0.00 : 2465a: 4c 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%r9 0.00 : 24661: 00 0.00 : 24662: 4d 39 cd cmp %r9,%r13 0.00 : 24665: 0f 84 51 05 00 00 je 24bbc <__gconv_transform_internal_utf8+0xc3c> 0.00 : 2466b: 49 8d 41 04 lea 0x4(%r9),%rax 0.00 : 2466f: 49 39 c5 cmp %rax,%r13 0.00 : 24672: 0f 82 1d 04 00 00 jb 24a95 <__gconv_transform_internal_utf8+0xb15> 0.00 : 24678: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 2467f: 00 0.00 : 24680: 48 39 fd cmp %rdi,%rbp 0.00 : 24683: 0f 86 30 01 00 00 jbe 247b9 <__gconv_transform_internal_utf8+0x839> 0.00 : 24689: 41 8b 31 mov (%r9),%esi 0.00 : 2468c: 83 fe 7f cmp $0x7f,%esi 0.00 : 2468f: 76 b1 jbe 24642 <__gconv_transform_internal_utf8+0x6c2> 0.00 : 24691: 85 f6 test %esi,%esi 0.00 : 24693: 78 6a js 246ff <__gconv_transform_internal_utf8+0x77f> 0.00 : 24695: 41 bb 02 00 00 00 mov $0x2,%r11d 0.00 : 2469b: ba 0b 00 00 00 mov $0xb,%edx 0.00 : 246a0: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 246a5: 89 d1 mov %edx,%ecx 0.00 : 246a7: d3 e0 shl %cl,%eax 0.00 : 246a9: 85 f0 test %esi,%eax 0.00 : 246ab: 74 0d je 246ba <__gconv_transform_internal_utf8+0x73a> 0.00 : 246ad: 49 83 c3 01 add $0x1,%r11 0.00 : 246b1: 83 c2 05 add $0x5,%edx 0.00 : 246b4: 49 83 fb 06 cmp $0x6,%r11 0.00 : 246b8: 75 e6 jne 246a0 <__gconv_transform_internal_utf8+0x720> 0.00 : 246ba: 4a 8d 14 1f lea (%rdi,%r11,1),%rdx 0.00 : 246be: 48 39 d5 cmp %rdx,%rbp 0.00 : 246c1: 0f 82 f2 00 00 00 jb 247b9 <__gconv_transform_internal_utf8+0x839> 0.00 : 246c7: b8 00 ff ff ff mov $0xffffff00,%eax 0.00 : 246cc: 44 89 d9 mov %r11d,%ecx 0.00 : 246cf: d3 f8 sar %cl,%eax 0.00 : 246d1: 88 07 mov %al,(%rdi) 0.00 : 246d3: 4c 01 9c 24 b0 00 00 add %r11,0xb0(%rsp) 0.00 : 246da: 00 0.00 : 246db: 89 f0 mov %esi,%eax 0.00 : 246dd: 49 83 eb 01 sub $0x1,%r11 0.00 : 246e1: c1 ee 06 shr $0x6,%esi 0.00 : 246e4: 83 e0 3f and $0x3f,%eax 0.00 : 246e7: 83 c8 80 or $0xffffff80,%eax 0.00 : 246ea: 88 42 ff mov %al,-0x1(%rdx) 0.00 : 246ed: 48 83 ea 01 sub $0x1,%rdx 0.00 : 246f1: 49 83 fb 01 cmp $0x1,%r11 0.00 : 246f5: 77 e4 ja 246db <__gconv_transform_internal_utf8+0x75b> 0.00 : 246f7: 40 08 37 or %sil,(%rdi) 0.00 : 246fa: e9 52 ff ff ff jmpq 24651 <__gconv_transform_internal_utf8+0x6d1> 0.00 : 246ff: 48 83 bc 24 a0 00 00 cmpq $0x0,0xa0(%rsp) 0.00 : 24706: 00 00 0.00 : 24708: 0f 84 a3 04 00 00 je 24bb1 <__gconv_transform_internal_utf8+0xc31> 0.00 : 2470e: 49 8b 5f 30 mov 0x30(%r15),%rbx 0.00 : 24712: 48 85 db test %rbx,%rbx 0.00 : 24715: 75 12 jne 24729 <__gconv_transform_internal_utf8+0x7a9> 0.00 : 24717: eb 77 jmp 24790 <__gconv_transform_internal_utf8+0x810> 0.00 : 24719: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 24720: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 24724: 48 85 db test %rbx,%rbx 0.00 : 24727: 74 67 je 24790 <__gconv_transform_internal_utf8+0x810> 0.00 : 24729: 48 8b 3b mov (%rbx),%rdi 0.00 : 2472c: 44 89 54 24 20 mov %r10d,0x20(%rsp) 0.00 : 24731: e8 da e5 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 24736: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 2473b: 48 8b 84 24 a0 00 00 mov 0xa0(%rsp),%rax 0.00 : 24742: 00 0.00 : 24743: 4d 89 e9 mov %r13,%r9 0.00 : 24746: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 2474a: 4c 8b 44 24 30 mov 0x30(%rsp),%r8 0.00 : 2474f: 4c 89 fe mov %r15,%rsi 0.00 : 24752: 48 8b 7c 24 68 mov 0x68(%rsp),%rdi 0.00 : 24757: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 2475b: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 24760: 49 8b 0e mov (%r14),%rcx 0.00 : 24763: ff 13 callq *(%rbx) 0.00 : 24765: 83 f8 06 cmp $0x6,%eax 0.00 : 24768: 41 89 c0 mov %eax,%r8d 0.00 : 2476b: 44 8b 54 24 20 mov 0x20(%rsp),%r10d 0.00 : 24770: 74 ae je 24720 <__gconv_transform_internal_utf8+0x7a0> 0.00 : 24772: 83 f8 05 cmp $0x5,%eax 0.00 : 24775: 0f 85 df fe ff ff jne 2465a <__gconv_transform_internal_utf8+0x6da> 0.00 : 2477b: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 24782: 00 0.00 : 24783: 4c 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%r9 0.00 : 2478a: 00 0.00 : 2478b: eb 32 jmp 247bf <__gconv_transform_internal_utf8+0x83f> 0.00 : 2478d: 0f 1f 00 nopl (%rax) 0.00 : 24790: 45 85 e4 test %r12d,%r12d 0.00 : 24793: 0f 84 08 04 00 00 je 24ba1 <__gconv_transform_internal_utf8+0xc21> 0.00 : 24799: 48 8b 84 24 a0 00 00 mov 0xa0(%rsp),%rax 0.00 : 247a0: 00 0.00 : 247a1: 41 b8 06 00 00 00 mov $0x6,%r8d 0.00 : 247a7: 48 83 00 01 addq $0x1,(%rax) 0.00 : 247ab: 48 83 84 24 b8 00 00 addq $0x4,0xb8(%rsp) 0.00 : 247b2: 00 04 0.00 : 247b4: e9 a1 fe ff ff jmpq 2465a <__gconv_transform_internal_utf8+0x6da> 0.00 : 247b9: 41 b8 05 00 00 00 mov $0x5,%r8d 0.00 : 247bf: 48 39 bc 24 c0 00 00 cmp %rdi,0xc0(%rsp) 0.00 : 247c6: 00 0.00 : 247c7: 4d 89 0e mov %r9,(%r14) 0.00 : 247ca: 0f 85 16 03 00 00 jne 24ae6 <__gconv_transform_internal_utf8+0xb66> 0.00 : 247d0: 41 83 f8 05 cmp $0x5,%r8d 0.00 : 247d4: 0f 85 ed 02 00 00 jne 24ac7 <__gconv_transform_internal_utf8+0xb47> 0.00 : 247da: 48 39 bc 24 90 00 00 cmp %rdi,0x90(%rsp) 0.00 : 247e1: 00 0.00 : 247e2: 0f 85 33 fa ff ff jne 2421b <__gconv_transform_internal_utf8+0x29b> 0.00 : 247e8: 41 83 6f 14 01 subl $0x1,0x14(%r15) 0.00 : 247ed: 45 89 d4 mov %r10d,%r12d 0.00 : 247f0: e9 29 fa ff ff jmpq 2421e <__gconv_transform_internal_utf8+0x29e> 0.00 : 247f5: 0f 1f 00 nopl (%rax) 0.00 : 247f8: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 247fd: 31 c9 xor %ecx,%ecx 0.00 : 247ff: e9 b4 fc ff ff jmpq 244b8 <__gconv_transform_internal_utf8+0x538> 0.00 : 24804: 41 83 fc 07 cmp $0x7,%r12d 0.00 : 24808: 0f 84 a1 00 00 00 je 248af <__gconv_transform_internal_utf8+0x92f> 0.00 : 2480e: 45 85 e4 test %r12d,%r12d 0.00 : 24811: 0f 85 45 fb ff ff jne 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24817: 41 8b 5f 10 mov 0x10(%r15),%ebx 0.00 : 2481b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 24820: e9 61 f8 ff ff jmpq 24086 <__gconv_transform_internal_utf8+0x106> 0.00 : 24825: 85 f6 test %esi,%esi 0.00 : 24827: 0f 88 18 01 00 00 js 24945 <__gconv_transform_internal_utf8+0x9c5> 0.00 : 2482d: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 24833: ba 0b 00 00 00 mov $0xb,%edx 0.00 : 24838: bf ff ff ff ff mov $0xffffffff,%edi 0.00 : 2483d: eb 0e jmp 2484d <__gconv_transform_internal_utf8+0x8cd> 0.00 : 2483f: 90 nop 0.00 : 24840: 49 83 c0 01 add $0x1,%r8 0.00 : 24844: 83 c2 05 add $0x5,%edx 0.00 : 24847: 49 83 f8 06 cmp $0x6,%r8 0.00 : 2484b: 74 0a je 24857 <__gconv_transform_internal_utf8+0x8d7> 0.00 : 2484d: 89 f8 mov %edi,%eax 0.00 : 2484f: 89 d1 mov %edx,%ecx 0.00 : 24851: d3 e0 shl %cl,%eax 0.00 : 24853: 85 f0 test %esi,%eax 0.00 : 24855: 75 e9 jne 24840 <__gconv_transform_internal_utf8+0x8c0> 0.00 : 24857: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 2485e: 00 0.00 : 2485f: 41 bc 05 00 00 00 mov $0x5,%r12d 0.00 : 24865: 4a 8d 14 07 lea (%rdi,%r8,1),%rdx 0.00 : 24869: 48 39 94 24 98 00 00 cmp %rdx,0x98(%rsp) 0.00 : 24870: 00 0.00 : 24871: 0f 82 e5 fa ff ff jb 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24877: b8 00 ff ff ff mov $0xffffff00,%eax 0.00 : 2487c: 44 89 c1 mov %r8d,%ecx 0.00 : 2487f: d3 f8 sar %cl,%eax 0.00 : 24881: 88 07 mov %al,(%rdi) 0.00 : 24883: 4c 01 84 24 b8 00 00 add %r8,0xb8(%rsp) 0.00 : 2488a: 00 0.00 : 2488b: 89 f0 mov %esi,%eax 0.00 : 2488d: 49 83 e8 01 sub $0x1,%r8 0.00 : 24891: c1 ee 06 shr $0x6,%esi 0.00 : 24894: 83 e0 3f and $0x3f,%eax 0.00 : 24897: 83 c8 80 or $0xffffff80,%eax 0.00 : 2489a: 88 42 ff mov %al,-0x1(%rdx) 0.00 : 2489d: 48 83 ea 01 sub $0x1,%rdx 0.00 : 248a1: 49 83 f8 01 cmp $0x1,%r8 0.00 : 248a5: 77 e4 ja 2488b <__gconv_transform_internal_utf8+0x90b> 0.00 : 248a7: 40 08 37 or %sil,(%rdi) 0.00 : 248aa: e9 f8 fc ff ff jmpq 245a7 <__gconv_transform_internal_utf8+0x627> 0.00 : 248af: 49 8d 43 04 lea 0x4(%r11),%rax 0.00 : 248b3: 48 39 84 24 a8 00 00 cmp %rax,0xa8(%rsp) 0.00 : 248ba: 00 0.00 : 248bb: 0f 84 a2 02 00 00 je 24b63 <__gconv_transform_internal_utf8+0xbe3> 0.00 : 248c1: 49 63 02 movslq (%r10),%rax 0.00 : 248c4: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx 0.00 : 248cb: 00 0.00 : 248cc: 4c 29 d9 sub %r11,%rcx 0.00 : 248cf: 83 e0 07 and $0x7,%eax 0.00 : 248d2: 48 89 ca mov %rcx,%rdx 0.00 : 248d5: 48 29 c2 sub %rax,%rdx 0.00 : 248d8: 49 01 16 add %rdx,(%r14) 0.00 : 248db: 41 8b 12 mov (%r10),%edx 0.00 : 248de: 83 e2 f8 and $0xfffffff8,%edx 0.00 : 248e1: 48 63 c2 movslq %edx,%rax 0.00 : 248e4: 48 39 c1 cmp %rax,%rcx 0.00 : 248e7: 0f 8e 57 02 00 00 jle 24b44 <__gconv_transform_internal_utf8+0xbc4> 0.00 : 248ed: 48 83 f9 07 cmp $0x7,%rcx 0.00 : 248f1: 0f 8f 8b 02 00 00 jg 24b82 <__gconv_transform_internal_utf8+0xc02> 0.00 : 248f7: 8b 84 24 a8 00 00 00 mov 0xa8(%rsp),%eax 0.00 : 248fe: 44 29 d8 sub %r11d,%eax 0.00 : 24901: 09 d0 or %edx,%eax 0.00 : 24903: 41 89 02 mov %eax,(%r10) 0.00 : 24906: 48 8b 94 24 c0 00 00 mov 0xc0(%rsp),%rdx 0.00 : 2490d: 00 0.00 : 2490e: 48 39 94 24 a8 00 00 cmp %rdx,0xa8(%rsp) 0.00 : 24915: 00 0.00 : 24916: 0f 86 40 fa ff ff jbe 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 2491c: 31 c9 xor %ecx,%ecx 0.00 : 2491e: 0f b6 02 movzbl (%rdx),%eax 0.00 : 24921: 48 83 c2 01 add $0x1,%rdx 0.00 : 24925: 41 88 44 0a 04 mov %al,0x4(%r10,%rcx,1) 0.00 : 2492a: 48 83 c1 01 add $0x1,%rcx 0.00 : 2492e: 48 39 94 24 a8 00 00 cmp %rdx,0xa8(%rsp) 0.00 : 24935: 00 0.00 : 24936: 48 89 94 24 c0 00 00 mov %rdx,0xc0(%rsp) 0.00 : 2493d: 00 0.00 : 2493e: 77 de ja 2491e <__gconv_transform_internal_utf8+0x99e> 0.00 : 24940: e9 17 fa ff ff jmpq 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24945: 48 83 bc 24 a0 00 00 cmpq $0x0,0xa0(%rsp) 0.00 : 2494c: 00 00 0.00 : 2494e: 0f 84 e5 01 00 00 je 24b39 <__gconv_transform_internal_utf8+0xbb9> 0.00 : 24954: 49 8b 6f 30 mov 0x30(%r15),%rbp 0.00 : 24958: 48 85 ed test %rbp,%rbp 0.00 : 2495b: 0f 84 81 00 00 00 je 249e2 <__gconv_transform_internal_utf8+0xa62> 0.00 : 24961: 48 8d 84 24 c0 00 00 lea 0xc0(%rsp),%rax 0.00 : 24968: 00 0.00 : 24969: 48 8d 94 24 b8 00 00 lea 0xb8(%rsp),%rdx 0.00 : 24970: 00 0.00 : 24971: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : 24976: 48 89 54 24 50 mov %rdx,0x50(%rsp) 0.00 : 2497b: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 2497f: 4c 89 54 24 20 mov %r10,0x20(%rsp) 0.00 : 24984: 4c 89 5c 24 18 mov %r11,0x18(%rsp) 0.00 : 24989: e8 82 e3 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 2498e: 48 8b 8c 24 a0 00 00 mov 0xa0(%rsp),%rcx 0.00 : 24995: 00 0.00 : 24996: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : 2499b: 4c 89 fe mov %r15,%rsi 0.00 : 2499e: 48 8b 55 18 mov 0x18(%rbp),%rdx 0.00 : 249a2: 4c 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%r9 0.00 : 249a9: 00 0.00 : 249aa: 4c 8b 44 24 48 mov 0x48(%rsp),%r8 0.00 : 249af: 48 8b 7c 24 68 mov 0x68(%rsp),%rdi 0.00 : 249b4: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 249b9: 48 89 04 24 mov %rax,(%rsp) 0.00 : 249bd: 49 8b 0e mov (%r14),%rcx 0.00 : 249c0: ff 55 00 callq *0x0(%rbp) 0.00 : 249c3: 83 f8 06 cmp $0x6,%eax 0.00 : 249c6: 41 89 c4 mov %eax,%r12d 0.00 : 249c9: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 0.00 : 249ce: 4c 8b 5c 24 18 mov 0x18(%rsp),%r11 0.00 : 249d3: 0f 85 da fb ff ff jne 245b3 <__gconv_transform_internal_utf8+0x633> 0.00 : 249d9: 48 8b 6d 20 mov 0x20(%rbp),%rbp 0.00 : 249dd: 48 85 ed test %rbp,%rbp 0.00 : 249e0: 75 99 jne 2497b <__gconv_transform_internal_utf8+0x9fb> 0.00 : 249e2: 83 e3 02 and $0x2,%ebx 0.00 : 249e5: 41 bc 06 00 00 00 mov $0x6,%r12d 0.00 : 249eb: 0f 84 c2 fb ff ff je 245b3 <__gconv_transform_internal_utf8+0x633> 0.00 : 249f1: 48 8b 94 24 a0 00 00 mov 0xa0(%rsp),%rdx 0.00 : 249f8: 00 0.00 : 249f9: 41 bc 06 00 00 00 mov $0x6,%r12d 0.00 : 249ff: 48 83 02 01 addq $0x1,(%rdx) 0.00 : 24a03: 48 83 84 24 c0 00 00 addq $0x4,0xc0(%rsp) 0.00 : 24a0a: 00 04 0.00 : 24a0c: e9 a2 fb ff ff jmpq 245b3 <__gconv_transform_internal_utf8+0x633> 0.00 : 24a11: 48 8d 0d f8 dc 11 00 lea 0x11dcf8(%rip),%rcx # 142710 <__PRETTY_FUNCTION__.12841> 0.00 : 24a18: 48 8d 35 1a 5d 11 00 lea 0x115d1a(%rip),%rsi # 13a739 0.00 : 24a1f: 48 8d 3d 8a 91 11 00 lea 0x11918a(%rip),%rdi # 13dbb0 <__PRETTY_FUNCTION__.11129+0x1d7> 0.00 : 24a26: ba bf 01 00 00 mov $0x1bf,%edx 0.00 : 24a2b: e8 f0 6e 00 00 callq 2b920 <__assert_fail> 0.00 : 24a30: 48 83 7c 24 60 00 cmpq $0x0,0x60(%rsp) 0.00 : 24a36: 0f 85 8d 01 00 00 jne 24bc9 <__gconv_transform_internal_utf8+0xc49> 0.00 : 24a3c: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 24a40: 45 31 e4 xor %r12d,%r12d 0.00 : 24a43: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 24a4a: 41 f6 47 10 01 testb $0x1,0x10(%r15) 0.00 : 24a4f: 0f 85 07 f9 ff ff jne 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24a55: 48 8b bc 24 80 00 00 mov 0x80(%rsp),%rdi 0.00 : 24a5c: 00 0.00 : 24a5d: e8 ae e2 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 24a62: 8b 94 24 28 01 00 00 mov 0x128(%rsp),%edx 0.00 : 24a69: 89 2c 24 mov %ebp,(%rsp) 0.00 : 24a6c: 45 31 c0 xor %r8d,%r8d 0.00 : 24a6f: 4c 8b 4c 24 58 mov 0x58(%rsp),%r9 0.00 : 24a74: 31 c9 xor %ecx,%ecx 0.00 : 24a76: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 24a7b: 48 8b 7c 24 70 mov 0x70(%rsp),%rdi 0.00 : 24a80: 89 54 24 08 mov %edx,0x8(%rsp) 0.00 : 24a84: 31 d2 xor %edx,%edx 0.00 : 24a86: ff 94 24 80 00 00 00 callq *0x80(%rsp) 0.00 : 24a8d: 41 89 c4 mov %eax,%r12d 0.00 : 24a90: e9 c7 f8 ff ff jmpq 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24a95: 41 b8 07 00 00 00 mov $0x7,%r8d 0.00 : 24a9b: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 24aa2: 00 0.00 : 24aa3: e9 17 fd ff ff jmpq 247bf <__gconv_transform_internal_utf8+0x83f> 0.00 : 24aa8: 48 8d 0d 31 e7 11 00 lea 0x11e731(%rip),%rcx # 1431e0 <__PRETTY_FUNCTION__.12973> 0.00 : 24aaf: 48 8d 35 54 5c 11 00 lea 0x115c54(%rip),%rsi # 13a70a 0.00 : 24ab6: 48 8d 3d b4 5c 11 00 lea 0x115cb4(%rip),%rdi # 13a771 0.00 : 24abd: ba 12 03 00 00 mov $0x312,%edx 0.00 : 24ac2: e8 59 6e 00 00 callq 2b920 <__assert_fail> 0.00 : 24ac7: 48 8d 0d 12 e7 11 00 lea 0x11e712(%rip),%rcx # 1431e0 <__PRETTY_FUNCTION__.12973> 0.00 : 24ace: 48 8d 35 35 5c 11 00 lea 0x115c35(%rip),%rsi # 13a70a 0.00 : 24ad5: 48 8d 3d 24 91 11 00 lea 0x119124(%rip),%rdi # 13dc00 <__PRETTY_FUNCTION__.11129+0x227> 0.00 : 24adc: ba e1 02 00 00 mov $0x2e1,%edx 0.00 : 24ae1: e8 3a 6e 00 00 callq 2b920 <__assert_fail> 0.00 : 24ae6: 48 8d 0d f3 e6 11 00 lea 0x11e6f3(%rip),%rcx # 1431e0 <__PRETTY_FUNCTION__.12973> 0.00 : 24aed: 48 8d 35 16 5c 11 00 lea 0x115c16(%rip),%rsi # 13a70a 0.00 : 24af4: 48 8d 3d 9f 5c 11 00 lea 0x115c9f(%rip),%rdi # 13a79a 0.00 : 24afb: ba e0 02 00 00 mov $0x2e0,%edx 0.00 : 24b00: e8 1b 6e 00 00 callq 2b920 <__assert_fail> 0.00 : 24b05: 48 8d 0d d4 e6 11 00 lea 0x11e6d4(%rip),%rcx # 1431e0 <__PRETTY_FUNCTION__.12973> 0.00 : 24b0c: 48 8d 35 f7 5b 11 00 lea 0x115bf7(%rip),%rsi # 13a70a 0.00 : 24b13: 48 8d 3d 04 5c 11 00 lea 0x115c04(%rip),%rdi # 13a71e 0.00 : 24b1a: ba 2f 02 00 00 mov $0x22f,%edx 0.00 : 24b1f: e8 fc 6d 00 00 callq 2b920 <__assert_fail> 0.00 : 24b24: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : 24b29: 48 8b 00 mov (%rax),%rax 0.00 : 24b2c: 48 89 84 24 90 00 00 mov %rax,0x90(%rsp) 0.00 : 24b33: 00 0.00 : 24b34: e9 f1 f4 ff ff jmpq 2402a <__gconv_transform_internal_utf8+0xaa> 0.00 : 24b39: 41 bc 06 00 00 00 mov $0x6,%r12d 0.00 : 24b3f: e9 18 f8 ff ff jmpq 2435c <__gconv_transform_internal_utf8+0x3dc> 0.00 : 24b44: 48 8d 0d c5 db 11 00 lea 0x11dbc5(%rip),%rcx # 142710 <__PRETTY_FUNCTION__.12841> 0.00 : 24b4b: 48 8d 35 e7 5b 11 00 lea 0x115be7(%rip),%rsi # 13a739 0.00 : 24b52: 48 8d 3d 7f 90 11 00 lea 0x11907f(%rip),%rdi # 13dbd8 <__PRETTY_FUNCTION__.11129+0x1ff> 0.00 : 24b59: ba db 01 00 00 mov $0x1db,%edx 0.00 : 24b5e: e8 bd 6d 00 00 callq 2b920 <__assert_fail> 0.00 : 24b63: 48 8d 0d a6 db 11 00 lea 0x11dba6(%rip),%rcx # 142710 <__PRETTY_FUNCTION__.12841> 0.00 : 24b6a: 48 8d 35 c8 5b 11 00 lea 0x115bc8(%rip),%rsi # 13a739 0.00 : 24b71: 48 8d 3d d1 5b 11 00 lea 0x115bd1(%rip),%rdi # 13a749 0.00 : 24b78: ba d1 01 00 00 mov $0x1d1,%edx 0.00 : 24b7d: e8 9e 6d 00 00 callq 2b920 <__assert_fail> 0.00 : 24b82: 48 8d 0d 87 db 11 00 lea 0x11db87(%rip),%rcx # 142710 <__PRETTY_FUNCTION__.12841> 0.00 : 24b89: 48 8d 35 a9 5b 11 00 lea 0x115ba9(%rip),%rsi # 13a739 0.00 : 24b90: 48 8d 3d c7 5b 11 00 lea 0x115bc7(%rip),%rdi # 13a75e 0.00 : 24b97: ba dc 01 00 00 mov $0x1dc,%edx 0.00 : 24b9c: e8 7f 6d 00 00 callq 2b920 <__assert_fail> 0.00 : 24ba1: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 24ba8: 00 0.00 : 24ba9: 4c 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%r9 0.00 : 24bb0: 00 0.00 : 24bb1: 41 b8 06 00 00 00 mov $0x6,%r8d 0.00 : 24bb7: e9 03 fc ff ff jmpq 247bf <__gconv_transform_internal_utf8+0x83f> 0.00 : 24bbc: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 24bc3: 00 0.00 : 24bc4: e9 f6 fb ff ff jmpq 247bf <__gconv_transform_internal_utf8+0x83f> 0.00 : 24bc9: 48 8d 0d 10 e6 11 00 lea 0x11e610(%rip),%rcx # 1431e0 <__PRETTY_FUNCTION__.12973> 0.00 : 24bd0: 48 8d 35 33 5b 11 00 lea 0x115b33(%rip),%rsi # 13a70a 0.00 : 24bd7: 48 8d 3d 40 5b 11 00 lea 0x115b40(%rip),%rdi # 13a71e 0.00 : 24bde: ba a0 01 00 00 mov $0x1a0,%edx 0.00 : 24be3: e8 38 6d 00 00 callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002b8d0 <__collseq_table_lookup>: 100.00 : 2b8d0: 8b 0f mov (%rdi),%ecx 0.00 : 2b8d2: 89 f0 mov %esi,%eax 0.00 : 2b8d4: d3 e8 shr %cl,%eax 0.00 : 2b8d6: 3b 47 04 cmp 0x4(%rdi),%eax 0.00 : 2b8d9: 73 35 jae 2b910 <__collseq_table_lookup+0x40> 0.00 : 2b8db: 83 c0 05 add $0x5,%eax 0.00 : 2b8de: 8b 04 87 mov (%rdi,%rax,4),%eax 0.00 : 2b8e1: 85 c0 test %eax,%eax 0.00 : 2b8e3: 74 2b je 2b910 <__collseq_table_lookup+0x40> 0.00 : 2b8e5: 8b 4f 08 mov 0x8(%rdi),%ecx 0.00 : 2b8e8: 89 c2 mov %eax,%edx 0.00 : 2b8ea: 89 f0 mov %esi,%eax 0.00 : 2b8ec: d3 e8 shr %cl,%eax 0.00 : 2b8ee: 23 47 0c and 0xc(%rdi),%eax 0.00 : 2b8f1: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 2b8f5: 8b 04 38 mov (%rax,%rdi,1),%eax 0.00 : 2b8f8: 85 c0 test %eax,%eax 0.00 : 2b8fa: 74 14 je 2b910 <__collseq_table_lookup+0x40> 0.00 : 2b8fc: 89 c2 mov %eax,%edx 0.00 : 2b8fe: 89 f0 mov %esi,%eax 0.00 : 2b900: 23 47 10 and 0x10(%rdi),%eax 0.00 : 2b903: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 2b907: 8b 04 38 mov (%rax,%rdi,1),%eax 0.00 : 2b90a: c3 retq 0.00 : 2b90b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2b910: b8 ff ff ff ff mov $0xffffffff,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073030 <_IO_file_fopen@@GLIBC_2.2.5>: 0.00 : 73030: 55 push %rbp 0.00 : 73031: 48 89 e5 mov %rsp,%rbp 0.00 : 73034: 41 57 push %r15 0.00 : 73036: 41 56 push %r14 0.00 : 73038: 45 31 f6 xor %r14d,%r14d 0.00 : 7303b: 41 55 push %r13 0.00 : 7303d: 49 89 fd mov %rdi,%r13 0.00 : 73040: 41 54 push %r12 0.00 : 73042: 53 push %rbx 0.00 : 73043: 48 83 ec 38 sub $0x38,%rsp 0.00 : 73047: 83 7f 70 ff cmpl $0xffffffff,0x70(%rdi) 0.00 : 7304b: 74 13 je 73060 <_IO_file_fopen@@GLIBC_2.2.5+0x30> ??:0 20.00 : 7304d: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 73051: 4c 89 f0 mov %r14,%rax 0.00 : 73054: 5b pop %rbx 0.00 : 73055: 41 5c pop %r12 0.00 : 73057: 41 5d pop %r13 0.00 : 73059: 41 5e pop %r14 0.00 : 7305b: 41 5f pop %r15 0.00 : 7305d: c9 leaveq 0.00 : 7305e: c3 retq 0.00 : 7305f: 90 nop 0.00 : 73060: 0f b6 02 movzbl (%rdx),%eax 20.00 : 73063: 3c 72 cmp $0x72,%al 0.00 : 73065: 0f 84 8d 03 00 00 je 733f8 <_IO_file_fopen@@GLIBC_2.2.5+0x3c8> 0.00 : 7306b: 3c 77 cmp $0x77,%al 0.00 : 7306d: 74 21 je 73090 <_IO_file_fopen@@GLIBC_2.2.5+0x60> 0.00 : 7306f: 3c 61 cmp $0x61,%al 0.00 : 73071: 0f 84 99 03 00 00 je 73410 <_IO_file_fopen@@GLIBC_2.2.5+0x3e0> 0.00 : 73077: 48 8b 15 ba ed 2f 00 mov 0x2fedba(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 7307e: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 73085: 00 00 0.00 : 73087: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 7308e: eb bd jmp 7304d <_IO_file_fopen@@GLIBC_2.2.5+0x1d> 0.00 : 73090: bf 40 02 00 00 mov $0x240,%edi 0.00 : 73095: 41 ba 01 00 00 00 mov $0x1,%r10d 0.00 : 7309b: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : 730a1: 4c 8d 4a 06 lea 0x6(%rdx),%r9 0.00 : 730a5: 48 89 d3 mov %rdx,%rbx 0.00 : 730a8: 48 83 c2 01 add $0x1,%rdx 0.00 : 730ac: 0f b6 02 movzbl (%rdx),%eax 0.00 : 730af: 3c 65 cmp $0x65,%al 0.00 : 730b1: 0f 84 31 03 00 00 je 733e8 <_IO_file_fopen@@GLIBC_2.2.5+0x3b8> 0.00 : 730b7: 0f 8f e3 02 00 00 jg 733a0 <_IO_file_fopen@@GLIBC_2.2.5+0x370> 0.00 : 730bd: 3c 62 cmp $0x62,%al 0.00 : 730bf: 0f 84 eb 02 00 00 je 733b0 <_IO_file_fopen@@GLIBC_2.2.5+0x380> 20.00 : 730c5: 0f 1f 00 nopl (%rax) 0.00 : 730c8: 0f 8f f2 02 00 00 jg 733c0 <_IO_file_fopen@@GLIBC_2.2.5+0x390> 0.00 : 730ce: 84 c0 test %al,%al 0.00 : 730d0: 74 13 je 730e5 <_IO_file_fopen@@GLIBC_2.2.5+0xb5> 0.00 : 730d2: 3c 2b cmp $0x2b,%al 0.00 : 730d4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 730d8: 0f 84 ab 02 00 00 je 73389 <_IO_file_fopen@@GLIBC_2.2.5+0x359> 0.00 : 730de: 66 90 xchg %ax,%ax 0.00 : 730e0: 4c 39 ca cmp %r9,%rdx 0.00 : 730e3: 75 c3 jne 730a8 <_IO_file_fopen@@GLIBC_2.2.5+0x78> 20.00 : 730e5: 41 09 fa or %edi,%r10d 0.00 : 730e8: 41 89 c9 mov %ecx,%r9d 0.00 : 730eb: 4c 89 ef mov %r13,%rdi 0.00 : 730ee: b9 b6 01 00 00 mov $0x1b6,%ecx 0.00 : 730f3: 44 89 d2 mov %r10d,%edx 0.00 : 730f6: e8 55 fe ff ff callq 72f50 <_IO_file_open> 0.00 : 730fb: 48 85 c0 test %rax,%rax 0.00 : 730fe: 49 89 c6 mov %rax,%r14 0.00 : 73101: 0f 84 46 ff ff ff je 7304d <_IO_file_fopen@@GLIBC_2.2.5+0x1d> 0.00 : 73107: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 7310b: 48 8d 35 e6 89 0c 00 lea 0xc89e6(%rip),%rsi # 13baf8 <__PRETTY_FUNCTION__.14063+0x91> 0.00 : 73112: e8 89 6d 01 00 callq 89ea0 <__GI_strstr> 0.00 : 73117: 48 85 c0 test %rax,%rax 0.00 : 7311a: 49 89 c7 mov %rax,%r15 0.00 : 7311d: 0f 84 2a ff ff ff je 7304d <_IO_file_fopen@@GLIBC_2.2.5+0x1d> 0.00 : 73123: 48 8d 58 05 lea 0x5(%rax),%rbx 0.00 : 73127: 48 89 65 a8 mov %rsp,-0x58(%rbp) 0.00 : 7312b: be 2c 00 00 00 mov $0x2c,%esi 0.00 : 73130: 48 89 df mov %rbx,%rdi 0.00 : 73133: e8 c8 2a 01 00 callq 85c00 0.00 : 73138: 48 29 d8 sub %rbx,%rax 0.00 : 7313b: 48 89 de mov %rbx,%rsi 0.00 : 7313e: 48 8d 50 21 lea 0x21(%rax),%rdx 0.00 : 73142: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 73146: 48 29 d4 sub %rdx,%rsp 0.00 : 73149: 48 89 c2 mov %rax,%rdx 0.00 : 7314c: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 73151: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 73155: 4c 89 e7 mov %r12,%rdi 0.00 : 73158: e8 33 0e 01 00 callq 83f90 <__mempcpy> 0.00 : 7315d: c6 00 00 movb $0x0,(%rax) 0.00 : 73160: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 73165: 84 c0 test %al,%al 0.00 : 73167: 0f 84 0e 03 00 00 je 7347b <_IO_file_fopen@@GLIBC_2.2.5+0x44b> 0.00 : 7316d: 48 8b 3d d4 d9 2f 00 mov 0x2fd9d4(%rip),%rdi # 370b48 <_nl_C_locobj+0x68> 0.00 : 73174: 4c 8b 05 dd d9 2f 00 mov 0x2fd9dd(%rip),%r8 # 370b58 <_nl_C_locobj+0x78> 0.00 : 7317b: 4c 89 e6 mov %r12,%rsi 0.00 : 7317e: 4c 89 e1 mov %r12,%rcx 0.00 : 73181: 45 31 c9 xor %r9d,%r9d 0.00 : 73184: eb 3a jmp 731c0 <_IO_file_fopen@@GLIBC_2.2.5+0x190> 0.00 : 73186: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7318d: 00 00 00 0.00 : 73190: 3c 5f cmp $0x5f,%al 0.00 : 73192: 74 36 je 731ca <_IO_file_fopen@@GLIBC_2.2.5+0x19a> 0.00 : 73194: 3c 2d cmp $0x2d,%al 0.00 : 73196: 74 32 je 731ca <_IO_file_fopen@@GLIBC_2.2.5+0x19a> 0.00 : 73198: 3c 2e cmp $0x2e,%al 0.00 : 7319a: 74 2e je 731ca <_IO_file_fopen@@GLIBC_2.2.5+0x19a> 0.00 : 7319c: 3c 2c cmp $0x2c,%al 0.00 : 7319e: 66 90 xchg %ax,%ax 0.00 : 731a0: 74 28 je 731ca <_IO_file_fopen@@GLIBC_2.2.5+0x19a> 0.00 : 731a2: 3c 3a cmp $0x3a,%al 0.00 : 731a4: 74 24 je 731ca <_IO_file_fopen@@GLIBC_2.2.5+0x19a> 0.00 : 731a6: 3c 2f cmp $0x2f,%al 0.00 : 731a8: 0f 84 82 02 00 00 je 73430 <_IO_file_fopen@@GLIBC_2.2.5+0x400> 0.00 : 731ae: 48 83 c6 01 add $0x1,%rsi 0.00 : 731b2: 0f b6 06 movzbl (%rsi),%eax 0.00 : 731b5: 84 c0 test %al,%al 0.00 : 731b7: 74 26 je 731df <_IO_file_fopen@@GLIBC_2.2.5+0x1af> 0.00 : 731b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 731c0: 48 0f be d0 movsbq %al,%rdx 0.00 : 731c4: f6 04 57 08 testb $0x8,(%rdi,%rdx,2) 0.00 : 731c8: 74 c6 je 73190 <_IO_file_fopen@@GLIBC_2.2.5+0x160> 0.00 : 731ca: 41 8b 04 90 mov (%r8,%rdx,4),%eax 0.00 : 731ce: 48 83 c6 01 add $0x1,%rsi 0.00 : 731d2: 88 01 mov %al,(%rcx) 0.00 : 731d4: 0f b6 06 movzbl (%rsi),%eax 0.00 : 731d7: 48 83 c1 01 add $0x1,%rcx 0.00 : 731db: 84 c0 test %al,%al 0.00 : 731dd: 75 e1 jne 731c0 <_IO_file_fopen@@GLIBC_2.2.5+0x190> 0.00 : 731df: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 731e3: 41 8d 51 01 lea 0x1(%r9),%edx 0.00 : 731e7: 7f 19 jg 73202 <_IO_file_fopen@@GLIBC_2.2.5+0x1d2> 0.00 : 731e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 731f0: 83 c2 01 add $0x1,%edx 0.00 : 731f3: c6 01 2f movb $0x2f,(%rcx) 0.00 : 731f6: 48 83 c1 01 add $0x1,%rcx 0.00 : 731fa: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 731fd: 83 e8 01 sub $0x1,%eax 0.00 : 73200: 7e ee jle 731f0 <_IO_file_fopen@@GLIBC_2.2.5+0x1c0> 0.00 : 73202: c6 01 00 movb $0x0,(%rcx) 0.00 : 73205: 41 80 7c 24 02 00 cmpb $0x0,0x2(%r12) 0.00 : 7320b: 75 28 jne 73235 <_IO_file_fopen@@GLIBC_2.2.5+0x205> 0.00 : 7320d: 48 8b 0d 44 d9 2f 00 mov 0x2fd944(%rip),%rcx # 370b58 <_nl_C_locobj+0x78> 0.00 : 73214: 31 d2 xor %edx,%edx 0.00 : 73216: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7321d: 00 00 00 0.00 : 73220: 49 0f be 44 17 05 movsbq 0x5(%r15,%rdx,1),%rax 0.00 : 73226: 8b 04 81 mov (%rcx,%rax,4),%eax 0.00 : 73229: 41 88 04 14 mov %al,(%r12,%rdx,1) 0.00 : 7322d: 48 83 c2 01 add $0x1,%rdx 0.00 : 73231: 84 c0 test %al,%al 0.00 : 73233: 75 eb jne 73220 <_IO_file_fopen@@GLIBC_2.2.5+0x1f0> 0.00 : 73235: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 73239: 4c 89 e6 mov %r12,%rsi 0.00 : 7323c: e8 2f 40 02 00 callq 97270 <__wcsmbs_named_conv> 0.00 : 73241: 85 c0 test %eax,%eax 0.00 : 73243: 0f 85 07 02 00 00 jne 73450 <_IO_file_fopen@@GLIBC_2.2.5+0x420> 0.00 : 73249: 48 83 7d b8 01 cmpq $0x1,-0x48(%rbp) 0.00 : 7324e: 0f 85 53 02 00 00 jne 734a7 <_IO_file_fopen@@GLIBC_2.2.5+0x477> 0.00 : 73254: 48 83 7d c8 01 cmpq $0x1,-0x38(%rbp) 0.00 : 73259: 0f 85 29 02 00 00 jne 73488 <_IO_file_fopen@@GLIBC_2.2.5+0x458> 0.00 : 7325f: 49 8b 95 a0 00 00 00 mov 0xa0(%r13),%rdx 0.00 : 73266: 48 8d 35 f3 bf 2f 00 lea 0x2fbff3(%rip),%rsi # 36f260 <__libio_codecvt> 0.00 : 7326d: b9 1a 00 00 00 mov $0x1a,%ecx 0.00 : 73272: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 73276: 48 89 02 mov %rax,(%rdx) 0.00 : 73279: 49 8b 95 a0 00 00 00 mov 0xa0(%r13),%rdx 0.00 : 73280: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 73284: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 73288: 49 8b 85 a0 00 00 00 mov 0xa0(%r13),%rax 0.00 : 7328f: 48 c7 40 58 00 00 00 movq $0x0,0x58(%rax) 0.00 : 73296: 00 0.00 : 73297: 49 8b 85 a0 00 00 00 mov 0xa0(%r13),%rax 0.00 : 7329e: 48 c7 40 60 00 00 00 movq $0x0,0x60(%rax) 0.00 : 732a5: 00 0.00 : 732a6: 49 8b 95 a0 00 00 00 mov 0xa0(%r13),%rdx 0.00 : 732ad: 48 8d 7a 68 lea 0x68(%rdx),%rdi 0.00 : 732b1: 49 89 bd 98 00 00 00 mov %rdi,0x98(%r13) 0.00 : 732b8: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 732bb: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 732bf: 48 89 82 a8 00 00 00 mov %rax,0xa8(%rdx) 0.00 : 732c6: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 732ca: c7 82 cc 00 00 00 00 movl $0x0,0xcc(%rdx) 0.00 : 732d1: 00 00 00 0.00 : 732d4: c7 82 d0 00 00 00 01 movl $0x1,0xd0(%rdx) 0.00 : 732db: 00 00 00 0.00 : 732de: c7 82 c8 00 00 00 01 movl $0x1,0xc8(%rdx) 0.00 : 732e5: 00 00 00 0.00 : 732e8: 48 89 82 b0 00 00 00 mov %rax,0xb0(%rdx) 0.00 : 732ef: 49 8b 86 a0 00 00 00 mov 0xa0(%r14),%rax 0.00 : 732f6: 48 c7 82 e8 00 00 00 movq $0x0,0xe8(%rdx) 0.00 : 732fd: 00 00 00 00 0.00 : 73301: 48 83 c0 58 add $0x58,%rax 0.00 : 73305: 48 89 82 d8 00 00 00 mov %rax,0xd8(%rdx) 0.00 : 7330c: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 73310: 48 89 82 f0 00 00 00 mov %rax,0xf0(%rdx) 0.00 : 73317: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 7331b: c7 82 14 01 00 00 00 movl $0x0,0x114(%rdx) 0.00 : 73322: 00 00 00 0.00 : 73325: c7 82 18 01 00 00 01 movl $0x1,0x118(%rdx) 0.00 : 7332c: 00 00 00 0.00 : 7332f: c7 82 10 01 00 00 01 movl $0x1,0x110(%rdx) 0.00 : 73336: 00 00 00 0.00 : 73339: 48 89 82 f8 00 00 00 mov %rax,0xf8(%rdx) 0.00 : 73340: 49 8b 86 a0 00 00 00 mov 0xa0(%r14),%rax 0.00 : 73347: 48 83 c0 58 add $0x58,%rax 0.00 : 7334b: 48 89 82 20 01 00 00 mov %rax,0x120(%rdx) 0.00 : 73352: 48 8d 05 47 df 2f 00 lea 0x2fdf47(%rip),%rax # 3712a0 <__libio_translit> 0.00 : 73359: 48 89 82 30 01 00 00 mov %rax,0x130(%rdx) 0.00 : 73360: 49 8b 85 a0 00 00 00 mov 0xa0(%r13),%rax 0.00 : 73367: 48 8b 80 40 01 00 00 mov 0x140(%rax),%rax 0.00 : 7336e: 49 89 85 d8 00 00 00 mov %rax,0xd8(%r13) 0.00 : 73375: 41 c7 86 c0 00 00 00 movl $0x1,0xc0(%r14) 0.00 : 7337c: 01 00 00 00 0.00 : 73380: 48 8b 65 a8 mov -0x58(%rbp),%rsp 0.00 : 73384: e9 c4 fc ff ff jmpq 7304d <_IO_file_fopen@@GLIBC_2.2.5+0x1d> 0.00 : 73389: 41 81 e0 00 10 00 00 and $0x1000,%r8d 0.00 : 73390: 48 89 d3 mov %rdx,%rbx 0.00 : 73393: 41 ba 02 00 00 00 mov $0x2,%r10d 0.00 : 73399: e9 42 fd ff ff jmpq 730e0 <_IO_file_fopen@@GLIBC_2.2.5+0xb0> 0.00 : 7339e: 66 90 xchg %ax,%ax 0.00 : 733a0: 3c 6d cmp $0x6d,%al 0.00 : 733a2: 74 34 je 733d8 <_IO_file_fopen@@GLIBC_2.2.5+0x3a8> 0.00 : 733a4: 3c 78 cmp $0x78,%al 0.00 : 733a6: 0f 85 34 fd ff ff jne 730e0 <_IO_file_fopen@@GLIBC_2.2.5+0xb0> 0.00 : 733ac: 40 80 cf 80 or $0x80,%dil 0.00 : 733b0: 48 89 d3 mov %rdx,%rbx 0.00 : 733b3: e9 28 fd ff ff jmpq 730e0 <_IO_file_fopen@@GLIBC_2.2.5+0xb0> 0.00 : 733b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 733bf: 00 0.00 : 733c0: 3c 63 cmp $0x63,%al 0.00 : 733c2: 0f 85 18 fd ff ff jne 730e0 <_IO_file_fopen@@GLIBC_2.2.5+0xb0> 0.00 : 733c8: 41 83 4d 74 02 orl $0x2,0x74(%r13) 0.00 : 733cd: 0f 1f 00 nopl (%rax) 0.00 : 733d0: e9 0b fd ff ff jmpq 730e0 <_IO_file_fopen@@GLIBC_2.2.5+0xb0> 0.00 : 733d5: 0f 1f 00 nopl (%rax) 0.00 : 733d8: 41 83 4d 74 01 orl $0x1,0x74(%r13) 0.00 : 733dd: 0f 1f 00 nopl (%rax) 0.00 : 733e0: e9 fb fc ff ff jmpq 730e0 <_IO_file_fopen@@GLIBC_2.2.5+0xb0> 0.00 : 733e5: 0f 1f 00 nopl (%rax) 0.00 : 733e8: 81 cf 00 00 08 00 or $0x80000,%edi 0.00 : 733ee: 66 90 xchg %ax,%ax 0.00 : 733f0: e9 eb fc ff ff jmpq 730e0 <_IO_file_fopen@@GLIBC_2.2.5+0xb0> 0.00 : 733f5: 0f 1f 00 nopl (%rax) 20.00 : 733f8: 31 ff xor %edi,%edi 0.00 : 733fa: 45 31 d2 xor %r10d,%r10d 0.00 : 733fd: 41 b8 08 00 00 00 mov $0x8,%r8d 0.00 : 73403: e9 99 fc ff ff jmpq 730a1 <_IO_file_fopen@@GLIBC_2.2.5+0x71> 0.00 : 73408: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7340f: 00 0.00 : 73410: bf 40 04 00 00 mov $0x440,%edi 0.00 : 73415: 41 ba 01 00 00 00 mov $0x1,%r10d 0.00 : 7341b: 41 b8 04 10 00 00 mov $0x1004,%r8d 0.00 : 73421: e9 7b fc ff ff jmpq 730a1 <_IO_file_fopen@@GLIBC_2.2.5+0x71> 0.00 : 73426: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7342d: 00 00 00 0.00 : 73430: 41 83 c1 01 add $0x1,%r9d 0.00 : 73434: 41 83 f9 03 cmp $0x3,%r9d 0.00 : 73438: 0f 84 c4 fd ff ff je 73202 <_IO_file_fopen@@GLIBC_2.2.5+0x1d2> 0.00 : 7343e: c6 01 2f movb $0x2f,(%rcx) 0.00 : 73441: 48 83 c1 01 add $0x1,%rcx 0.00 : 73445: e9 64 fd ff ff jmpq 731ae <_IO_file_fopen@@GLIBC_2.2.5+0x17e> 0.00 : 7344a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73450: 4c 89 ef mov %r13,%rdi 0.00 : 73453: e8 48 01 00 00 callq 735a0 <_IO_file_close_it@@GLIBC_2.2.5> 0.00 : 73458: 48 8b 15 d9 e9 2f 00 mov 0x2fe9d9(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 7345f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 73466: 00 00 0.00 : 73468: 45 31 f6 xor %r14d,%r14d 0.00 : 7346b: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 73472: 48 8b 65 a8 mov -0x58(%rbp),%rsp 0.00 : 73476: e9 d2 fb ff ff jmpq 7304d <_IO_file_fopen@@GLIBC_2.2.5+0x1d> 0.00 : 7347b: 4c 89 e1 mov %r12,%rcx 0.00 : 7347e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 73483: e9 68 fd ff ff jmpq 731f0 <_IO_file_fopen@@GLIBC_2.2.5+0x1c0> 0.00 : 73488: 48 8d 0d 71 f5 0c 00 lea 0xcf571(%rip),%rcx # 142a00 <__PRETTY_FUNCTION__.13875> 0.00 : 7348f: 48 8d 35 75 85 0c 00 lea 0xc8575(%rip),%rsi # 13ba0b <__PRETTY_FUNCTION__.13688+0x27> 0.00 : 73496: 48 8d 3d b4 85 0c 00 lea 0xc85b4(%rip),%rdi # 13ba51 <__PRETTY_FUNCTION__.13688+0x6d> 0.00 : 7349d: ba 70 01 00 00 mov $0x170,%edx 0.00 : 734a2: e8 79 84 fb ff callq 2b920 <__assert_fail> 0.00 : 734a7: 48 8d 0d 52 f5 0c 00 lea 0xcf552(%rip),%rcx # 142a00 <__PRETTY_FUNCTION__.13875> 0.00 : 734ae: 48 8d 35 56 85 0c 00 lea 0xc8556(%rip),%rsi # 13ba0b <__PRETTY_FUNCTION__.13688+0x27> 0.00 : 734b5: 48 8d 3d 7f 85 0c 00 lea 0xc857f(%rip),%rdi # 13ba3b <__PRETTY_FUNCTION__.13688+0x57> 0.00 : 734bc: ba 6f 01 00 00 mov $0x16f,%edx 0.00 : 734c1: e8 5a 84 fb ff callq 2b920 <__assert_fail> 0.00 : 734c6: 48 8b 65 a8 mov -0x58(%rbp),%rsp 0.00 : 734ca: 48 89 c7 mov %rax,%rdi 0.00 : 734cd: e8 8e ba fa ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000076e80 : 0.00 : 76e80: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 76e85: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 76e8a: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 76e8f: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 76e94: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 76e99: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 76e9e: 48 83 ec 68 sub $0x68,%rsp 0.00 : 76ea2: 44 8b 0d 5b b2 2f 00 mov 0x2fb25b(%rip),%r9d # 372104 <__libc_malloc_initialized> 0.00 : 76ea9: 45 85 c9 test %r9d,%r9d 0.00 : 76eac: 78 2a js 76ed8 0.00 : 76eae: 48 8b 5c 24 38 mov 0x38(%rsp),%rbx 0.00 : 76eb3: 48 8b 6c 24 40 mov 0x40(%rsp),%rbp 0.00 : 76eb8: 4c 8b 64 24 48 mov 0x48(%rsp),%r12 0.00 : 76ebd: 4c 8b 6c 24 50 mov 0x50(%rsp),%r13 0.00 : 76ec2: 4c 8b 74 24 58 mov 0x58(%rsp),%r14 0.00 : 76ec7: 4c 8b 7c 24 60 mov 0x60(%rsp),%r15 0.00 : 76ecc: 48 83 c4 68 add $0x68,%rsp 0.00 : 76ed0: c3 retq 0.00 : 76ed1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 76ed8: c7 05 22 b2 2f 00 00 movl $0x0,0x2fb222(%rip) # 372104 <__libc_malloc_initialized> 0.00 : 76edf: 00 00 00 0.00 : 76ee2: 48 c7 05 3b d8 2f 00 movq $0x20000,0x2fd83b(%rip) # 374728 0.00 : 76ee9: 00 00 02 00 0.00 : 76eed: c7 05 4d d8 2f 00 00 movl $0x10000,0x2fd84d(%rip) # 374744 0.00 : 76ef4: 00 01 00 0.00 : 76ef7: 48 c7 05 2e d8 2f 00 movq $0x20000,0x2fd82e(%rip) # 374730 0.00 : 76efe: 00 00 02 00 0.00 : 76f02: 48 c7 05 13 d8 2f 00 movq $0x20000,0x2fd813(%rip) # 374720 0.00 : 76f09: 00 00 02 00 0.00 : 76f0d: e8 6e d2 05 00 callq d4180 <__getpagesize> 0.00 : 76f12: 48 83 3d 16 03 30 00 cmpq $0x0,0x300316(%rip) # 377230 <_dl_open_hook> 0.00 : 76f19: 00 0.00 : 76f1a: 89 05 30 d8 2f 00 mov %eax,0x2fd830(%rip) # 374750 0.00 : 76f20: 48 8d 05 79 cf 2f 00 lea 0x2fcf79(%rip),%rax # 373ea0 0.00 : 76f27: 48 c7 05 56 d8 2f 00 movq $0x1,0x2fd856(%rip) # 374788 0.00 : 76f2e: 01 00 00 00 0.00 : 76f32: c7 05 64 cf 2f 00 00 movl $0x0,0x2fcf64(%rip) # 373ea0 0.00 : 76f39: 00 00 00 0.00 : 76f3c: 48 89 05 c5 d7 2f 00 mov %rax,0x2fd7c5(%rip) # 374708 0.00 : 76f43: 0f 84 d7 01 00 00 je 77120 0.00 : 76f49: 48 8b 05 30 ae 2f 00 mov 0x2fae30(%rip),%rax # 371d80 <_DYNAMIC+0x220> 0.00 : 76f50: 48 8d 15 39 f1 ff ff lea -0xec7(%rip),%rdx # 76090 <__failing_morecore> 0.00 : 76f57: 48 89 10 mov %rdx,(%rax) 0.00 : 76f5a: 48 8b 15 df ad 2f 00 mov 0x2faddf(%rip),%rdx # 371d40 <_DYNAMIC+0x1e0> 0.00 : 76f61: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 76f68: 00 00 0.00 : 76f6a: 48 8d 0d 2f cf 2f 00 lea 0x2fcf2f(%rip),%rcx # 373ea0 0.00 : 76f71: 48 8d 35 78 ee ff ff lea -0x1188(%rip),%rsi # 75df0 0.00 : 76f78: 48 8d 3d 41 d8 2f 00 lea 0x2fd841(%rip),%rdi # 3747c0 0.00 : 76f7f: c7 05 fb d7 2f 00 00 movl $0x0,0x2fd7fb(%rip) # 374784 0.00 : 76f86: 00 00 00 0.00 : 76f89: c7 05 55 d8 2f 00 01 movl $0x1,0x2fd855(%rip) # 3747e8 0.00 : 76f90: 00 00 00 0.00 : 76f93: 48 89 0c 10 mov %rcx,(%rax,%rdx,1) 0.00 : 76f97: 48 8d 05 b2 ef ff ff lea -0x104e(%rip),%rax # 75f50 0.00 : 76f9e: 48 8d 15 6b f0 ff ff lea -0xf95(%rip),%rdx # 76010 0.00 : 76fa5: 48 89 35 1c d8 2f 00 mov %rsi,0x2fd81c(%rip) # 3747c8 0.00 : 76fac: 48 89 05 1d d8 2f 00 mov %rax,0x2fd81d(%rip) # 3747d0 0.00 : 76fb3: 48 8b 05 1e af 2f 00 mov 0x2faf1e(%rip),%rax # 371ed8 <_DYNAMIC+0x378> 0.00 : 76fba: 48 89 15 17 d8 2f 00 mov %rdx,0x2fd817(%rip) # 3747d8 0.00 : 76fc1: 48 8b 00 mov (%rax),%rax 0.00 : 76fc4: 48 89 05 15 d8 2f 00 mov %rax,0x2fd815(%rip) # 3747e0 0.00 : 76fcb: e8 40 13 07 00 callq e8310 <__linkin_atfork> 0.00 : 76fd0: 48 8b 05 19 ae 2f 00 mov 0x2fae19(%rip),%rax # 371df0 <_DYNAMIC+0x290> 0.00 : 76fd7: 44 8b 20 mov (%rax),%r12d 0.00 : 76fda: 48 8b 05 cf ad 2f 00 mov 0x2fadcf(%rip),%rax # 371db0 <_DYNAMIC+0x250> 0.00 : 76fe1: 48 8b 18 mov (%rax),%rbx 0.00 : 76fe4: 48 85 db test %rbx,%rbx 0.00 : 76fe7: 0f 84 13 01 00 00 je 77100 0.00 : 76fed: 31 ed xor %ebp,%ebp 0.00 : 76fef: 4c 8d 2d 5c 4b 0c 00 lea 0xc4b5c(%rip),%r13 # 13bb52 <__PRETTY_FUNCTION__.14063+0xeb> 0.00 : 76ff6: 41 be 08 00 00 00 mov $0x8,%r14d 0.00 : 76ffc: 4c 8d 3d 58 4b 0c 00 lea 0xc4b58(%rip),%r15 # 13bb5b <__PRETTY_FUNCTION__.14063+0xf4> 0.00 : 77003: eb 07 jmp 7700c 0.00 : 77005: 0f 1f 00 nopl (%rax) 0.00 : 77008: 48 83 c3 08 add $0x8,%rbx 0.00 : 7700c: 48 8b 03 mov (%rbx),%rax 0.00 : 7700f: 48 85 c0 test %rax,%rax 0.00 : 77012: 0f 84 b8 00 00 00 je 770d0 0.00 : 77018: 80 38 4d cmpb $0x4d,(%rax) 0.00 : 7701b: 75 eb jne 77008 0.00 : 7701d: 80 78 01 41 cmpb $0x41,0x1(%rax) 0.00 : 77021: 75 e5 jne 77008 0.00 : 77023: 80 78 02 4c cmpb $0x4c,0x2(%rax) 0.00 : 77027: 75 df jne 77008 0.00 : 77029: 80 78 03 4c cmpb $0x4c,0x3(%rax) 0.00 : 7702d: 0f 1f 00 nopl (%rax) 0.00 : 77030: 75 d6 jne 77008 0.00 : 77032: 80 78 04 4f cmpb $0x4f,0x4(%rax) 0.00 : 77036: 75 d0 jne 77008 0.00 : 77038: 80 78 05 43 cmpb $0x43,0x5(%rax) 0.00 : 7703c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77040: 75 c6 jne 77008 0.00 : 77042: 80 78 06 5f cmpb $0x5f,0x6(%rax) 0.00 : 77046: 75 c0 jne 77008 0.00 : 77048: 49 89 c0 mov %rax,%r8 0.00 : 7704b: 49 83 c0 07 add $0x7,%r8 0.00 : 7704f: 90 nop 0.00 : 77050: 74 7e je 770d0 0.00 : 77052: 0f b6 50 07 movzbl 0x7(%rax),%edx 0.00 : 77056: 84 d2 test %dl,%dl 0.00 : 77058: 74 ae je 77008 0.00 : 7705a: 31 c9 xor %ecx,%ecx 0.00 : 7705c: 80 fa 3d cmp $0x3d,%dl 0.00 : 7705f: 75 11 jne 77072 0.00 : 77061: eb a5 jmp 77008 0.00 : 77063: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77068: 80 fa 3d cmp $0x3d,%dl 0.00 : 7706b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77070: 74 0d je 7707f 0.00 : 77072: 48 83 c1 01 add $0x1,%rcx 0.00 : 77076: 0f b6 54 08 07 movzbl 0x7(%rax,%rcx,1),%edx 0.00 : 7707b: 84 d2 test %dl,%dl 0.00 : 7707d: 75 e9 jne 77068 0.00 : 7707f: 41 80 3c 08 3d cmpb $0x3d,(%r8,%rcx,1) 0.00 : 77084: 75 82 jne 77008 0.00 : 77086: 48 83 f9 08 cmp $0x8,%rcx 0.00 : 7708a: 0f 84 1b 01 00 00 je 771ab 0.00 : 77090: 0f 87 bf 00 00 00 ja 77155 0.00 : 77096: 48 83 f9 06 cmp $0x6,%rcx 0.00 : 7709a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 770a0: 0f 85 62 ff ff ff jne 77008 0.00 : 770a6: 48 8d 3d 9e 4a 0c 00 lea 0xc4a9e(%rip),%rdi # 13bb4b <__PRETTY_FUNCTION__.14063+0xe4> 0.00 : 770ad: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 770b2: 4c 89 c6 mov %r8,%rsi 0.00 : 770b5: 49 8d 50 07 lea 0x7(%r8),%rdx 0.00 : 770b9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 770bb: 0f 97 c1 seta %cl 0.00 : 770be: 0f 92 c0 setb %al 0.00 : 770c1: 38 c1 cmp %al,%cl 0.00 : 770c3: 48 0f 44 ea cmove %rdx,%rbp 0.00 : 770c7: e9 3c ff ff ff jmpq 77008 0.00 : 770cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 770d0: 48 85 ed test %rbp,%rbp 0.00 : 770d3: 74 2b je 77100 0.00 : 770d5: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 770d9: 84 c0 test %al,%al 0.00 : 770db: 74 23 je 77100 0.00 : 770dd: 0f be f0 movsbl %al,%esi 0.00 : 770e0: bf fb ff ff ff mov $0xfffffffb,%edi 0.00 : 770e5: 83 ee 30 sub $0x30,%esi 0.00 : 770e8: e8 e3 fb ff ff callq 76cd0 0.00 : 770ed: 44 8b 05 14 b0 2f 00 mov 0x2fb014(%rip),%r8d # 372108 0.00 : 770f4: 45 85 c0 test %r8d,%r8d 0.00 : 770f7: 74 07 je 77100 0.00 : 770f9: e8 a2 ef ff ff callq 760a0 <__malloc_check_init> 0.00 : 770fe: 66 90 xchg %ax,%ax 0.00 : 77100: 48 8b 05 69 ac 2f 00 mov 0x2fac69(%rip),%rax # 371d70 <_DYNAMIC+0x210> 0.00 : 77107: 48 8b 00 mov (%rax),%rax 0.00 : 7710a: 48 85 c0 test %rax,%rax 0.00 : 7710d: 74 02 je 77111 0.00 : 7710f: ff d0 callq *%rax 0.00 : 77111: c7 05 e9 af 2f 00 01 movl $0x1,0x2fafe9(%rip) # 372104 <__libc_malloc_initialized> 0.00 : 77118: 00 00 00 0.00 : 7711b: e9 8e fd ff ff jmpq 76eae 66.67 : 77120: 48 8d 54 24 28 lea 0x28(%rsp),%rdx 33.33 : 77125: 48 8d 3d 54 fd ff ff lea -0x2ac(%rip),%rdi # 76e80 0.00 : 7712c: 31 c9 xor %ecx,%ecx 0.00 : 7712e: 48 89 e6 mov %rsp,%rsi 0.00 : 77131: e8 8a b8 09 00 callq 1129c0 <_dl_addr> 0.00 : 77136: 85 c0 test %eax,%eax 0.00 : 77138: 0f 84 1c fe ff ff je 76f5a 0.00 : 7713e: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 77143: 48 83 78 30 00 cmpq $0x0,0x30(%rax) 0.00 : 77148: 0f 84 0c fe ff ff je 76f5a 0.00 : 7714e: 66 90 xchg %ax,%ax 0.00 : 77150: e9 f4 fd ff ff jmpq 76f49 0.00 : 77155: 48 83 f9 09 cmp $0x9,%rcx 0.00 : 77159: 0f 84 c1 00 00 00 je 77220 0.00 : 7715f: 48 83 f9 0f cmp $0xf,%rcx 0.00 : 77163: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77168: 0f 85 9a fe ff ff jne 77008 0.00 : 7716e: 45 85 e4 test %r12d,%r12d 0.00 : 77171: 0f 85 91 fe ff ff jne 77008 0.00 : 77177: 48 8d 3d fa 49 0c 00 lea 0xc49fa(%rip),%rdi # 13bb78 <__PRETTY_FUNCTION__.14063+0x111> 0.00 : 7717e: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 77183: 4c 89 c6 mov %r8,%rsi 0.00 : 77186: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 77188: 75 5e jne 771e8 0.00 : 7718a: 49 8d 78 10 lea 0x10(%r8),%rdi 0.00 : 7718e: 31 f6 xor %esi,%esi 0.00 : 77190: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 77195: e8 06 f9 fb ff callq 36aa0 0.00 : 7719a: bf ff ff ff ff mov $0xffffffff,%edi 0.00 : 7719f: 89 c6 mov %eax,%esi 0.00 : 771a1: e8 2a fb ff ff callq 76cd0 0.00 : 771a6: e9 5d fe ff ff jmpq 77008 0.00 : 771ab: 45 85 e4 test %r12d,%r12d 0.00 : 771ae: 66 90 xchg %ax,%ax 0.00 : 771b0: 0f 85 52 fe ff ff jne 77008 0.00 : 771b6: 4c 89 c6 mov %r8,%rsi 0.00 : 771b9: 4c 89 ef mov %r13,%rdi 0.00 : 771bc: 4c 89 f1 mov %r14,%rcx 0.00 : 771bf: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 771c1: 0f 85 96 00 00 00 jne 7725d 0.00 : 771c7: 49 8d 78 09 lea 0x9(%r8),%rdi 0.00 : 771cb: 31 f6 xor %esi,%esi 0.00 : 771cd: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 771d2: e8 c9 f8 fb ff callq 36aa0 0.00 : 771d7: bf fe ff ff ff mov $0xfffffffe,%edi 0.00 : 771dc: 89 c6 mov %eax,%esi 0.00 : 771de: e8 ed fa ff ff callq 76cd0 0.00 : 771e3: e9 20 fe ff ff jmpq 77008 0.00 : 771e8: 48 8d 3d 99 49 0c 00 lea 0xc4999(%rip),%rdi # 13bb88 <__PRETTY_FUNCTION__.14063+0x121> 0.00 : 771ef: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 771f4: 4c 89 c6 mov %r8,%rsi 0.00 : 771f7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 771f9: 0f 85 09 fe ff ff jne 77008 0.00 : 771ff: 49 8d 78 10 lea 0x10(%r8),%rdi 0.00 : 77203: 31 f6 xor %esi,%esi 0.00 : 77205: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 7720a: e8 91 f8 fb ff callq 36aa0 0.00 : 7720f: bf fd ff ff ff mov $0xfffffffd,%edi 0.00 : 77214: 89 c6 mov %eax,%esi 0.00 : 77216: e8 b5 fa ff ff callq 76cd0 0.00 : 7721b: e9 e8 fd ff ff jmpq 77008 0.00 : 77220: 45 85 e4 test %r12d,%r12d 0.00 : 77223: 0f 85 df fd ff ff jne 77008 0.00 : 77229: 48 8d 3d 34 49 0c 00 lea 0xc4934(%rip),%rdi # 13bb64 <__PRETTY_FUNCTION__.14063+0xfd> 0.00 : 77230: 4c 89 c6 mov %r8,%rsi 0.00 : 77233: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 77238: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 7723a: 75 53 jne 7728f 0.00 : 7723c: 49 8d 78 0a lea 0xa(%r8),%rdi 0.00 : 77240: 31 f6 xor %esi,%esi 0.00 : 77242: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 77247: e8 54 f8 fb ff callq 36aa0 0.00 : 7724c: bf fc ff ff ff mov $0xfffffffc,%edi 0.00 : 77251: 89 c6 mov %eax,%esi 0.00 : 77253: e8 78 fa ff ff callq 76cd0 0.00 : 77258: e9 ab fd ff ff jmpq 77008 0.00 : 7725d: 4c 89 c6 mov %r8,%rsi 0.00 : 77260: 4c 89 ff mov %r15,%rdi 0.00 : 77263: 4c 89 f1 mov %r14,%rcx 0.00 : 77266: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 77268: 0f 85 9a fd ff ff jne 77008 0.00 : 7726e: 49 8d 78 09 lea 0x9(%r8),%rdi 0.00 : 77272: 31 f6 xor %esi,%esi 0.00 : 77274: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 77279: e8 22 f8 fb ff callq 36aa0 0.00 : 7727e: bf fa ff ff ff mov $0xfffffffa,%edi 0.00 : 77283: 89 c6 mov %eax,%esi 0.00 : 77285: e8 46 fa ff ff callq 76cd0 0.00 : 7728a: e9 79 fd ff ff jmpq 77008 0.00 : 7728f: 48 8d 3d d8 48 0c 00 lea 0xc48d8(%rip),%rdi # 13bb6e <__PRETTY_FUNCTION__.14063+0x107> 0.00 : 77296: 4c 89 c6 mov %r8,%rsi 0.00 : 77299: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 7729e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 772a0: 0f 85 62 fd ff ff jne 77008 0.00 : 772a6: 49 8d 78 0a lea 0xa(%r8),%rdi 0.00 : 772aa: 31 f6 xor %esi,%esi 0.00 : 772ac: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 772b1: e8 ea f7 fb ff callq 36aa0 0.00 : 772b6: bf f8 ff ff ff mov $0xfffffff8,%edi 0.00 : 772bb: 89 c6 mov %eax,%esi 0.00 : 772bd: e8 0e fa ff ff callq 76cd0 0.00 : 772c2: e9 41 fd ff ff jmpq 77008 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000089ea0 <__GI_strstr>: 50.00 : 89ea0: 41 57 push %r15 0.00 : 89ea2: 41 56 push %r14 0.00 : 89ea4: 41 55 push %r13 0.00 : 89ea6: 41 54 push %r12 0.00 : 89ea8: 49 89 fc mov %rdi,%r12 0.00 : 89eab: 55 push %rbp 0.00 : 89eac: 48 89 f5 mov %rsi,%rbp 0.00 : 89eaf: 53 push %rbx 0.00 : 89eb0: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 89eb7: 0f b6 0f movzbl (%rdi),%ecx 0.00 : 89eba: 84 c9 test %cl,%cl 0.00 : 89ebc: 0f 84 f8 03 00 00 je 8a2ba <__GI_strstr+0x41a> 50.00 : 89ec2: 0f b6 06 movzbl (%rsi),%eax 0.00 : 89ec5: 84 c0 test %al,%al 0.00 : 89ec7: 74 5c je 89f25 <__GI_strstr+0x85> 0.00 : 89ec9: 48 89 f3 mov %rsi,%rbx 0.00 : 89ecc: 48 89 fa mov %rdi,%rdx 0.00 : 89ecf: be 01 00 00 00 mov $0x1,%esi 0.00 : 89ed4: eb 11 jmp 89ee7 <__GI_strstr+0x47> 0.00 : 89ed6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 89edd: 00 00 00 0.00 : 89ee0: 0f b6 03 movzbl (%rbx),%eax 0.00 : 89ee3: 84 c0 test %al,%al 0.00 : 89ee5: 74 39 je 89f20 <__GI_strstr+0x80> 0.00 : 89ee7: 38 c1 cmp %al,%cl 0.00 : 89ee9: 0f 94 c0 sete %al 0.00 : 89eec: 48 83 c2 01 add $0x1,%rdx 0.00 : 89ef0: 48 83 c3 01 add $0x1,%rbx 0.00 : 89ef4: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 89ef7: 21 c6 and %eax,%esi 0.00 : 89ef9: 84 c9 test %cl,%cl 0.00 : 89efb: 75 e3 jne 89ee0 <__GI_strstr+0x40> 0.00 : 89efd: 31 c0 xor %eax,%eax 0.00 : 89eff: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 89f02: 74 1c je 89f20 <__GI_strstr+0x80> 0.00 : 89f04: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 89f0b: 5b pop %rbx 0.00 : 89f0c: 5d pop %rbp 0.00 : 89f0d: 41 5c pop %r12 0.00 : 89f0f: 41 5d pop %r13 0.00 : 89f11: 41 5e pop %r14 0.00 : 89f13: 41 5f pop %r15 0.00 : 89f15: c3 retq 0.00 : 89f16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 89f1d: 00 00 00 0.00 : 89f20: 40 84 f6 test %sil,%sil 0.00 : 89f23: 74 0b je 89f30 <__GI_strstr+0x90> 0.00 : 89f25: 4c 89 e0 mov %r12,%rax 0.00 : 89f28: eb da jmp 89f04 <__GI_strstr+0x64> 0.00 : 89f2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 89f30: 0f be 75 00 movsbl 0x0(%rbp),%esi 0.00 : 89f34: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 89f39: e8 52 51 ff ff callq 7f090 <__GI_strchr> 0.00 : 89f3e: 48 85 c0 test %rax,%rax 0.00 : 89f41: 49 89 c6 mov %rax,%r14 0.00 : 89f44: 0f 84 68 03 00 00 je 8a2b2 <__GI_strstr+0x412> 0.00 : 89f4a: 48 89 d8 mov %rbx,%rax 0.00 : 89f4d: 48 29 e8 sub %rbp,%rax 0.00 : 89f50: 48 83 f8 01 cmp $0x1,%rax 0.00 : 89f54: 48 89 c5 mov %rax,%rbp 0.00 : 89f57: 0f 84 55 03 00 00 je 8a2b2 <__GI_strstr+0x412> 0.00 : 89f5d: 48 29 c3 sub %rax,%rbx 0.00 : 89f60: 49 8d 04 04 lea (%r12,%rax,1),%rax 0.00 : 89f64: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 89f6a: 48 89 5c 24 78 mov %rbx,0x78(%rsp) 0.00 : 89f6f: 4c 89 c3 mov %r8,%rbx 0.00 : 89f72: 48 89 c2 mov %rax,%rdx 0.00 : 89f75: 4c 29 f2 sub %r14,%rdx 0.00 : 89f78: 4c 39 f0 cmp %r14,%rax 0.00 : 89f7b: 48 0f 43 da cmovae %rdx,%rbx 0.00 : 89f7f: 48 83 fd 1f cmp $0x1f,%rbp 0.00 : 89f83: 76 18 jbe 89f9d <__GI_strstr+0xfd> 0.00 : 89f85: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 89f8a: 48 89 e9 mov %rbp,%rcx 0.00 : 89f8d: 48 89 de mov %rbx,%rsi 0.00 : 89f90: 4c 89 f7 mov %r14,%rdi 0.00 : 89f93: e8 88 fa ff ff callq 89a20 0.00 : 89f98: e9 67 ff ff ff jmpq 89f04 <__GI_strstr+0x64> 0.00 : 89f9d: 48 8b 7c 24 78 mov 0x78(%rsp),%rdi 0.00 : 89fa2: 48 8d 94 24 90 00 00 lea 0x90(%rsp),%rdx 0.00 : 89fa9: 00 0.00 : 89faa: 48 89 ee mov %rbp,%rsi 0.00 : 89fad: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 89fb2: e8 f9 f8 ff ff callq 898b0 0.00 : 89fb7: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx 0.00 : 89fbe: 00 0.00 : 89fbf: 48 8b 7c 24 78 mov 0x78(%rsp),%rdi 0.00 : 89fc4: 48 89 c1 mov %rax,%rcx 0.00 : 89fc7: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 89fcc: 49 89 c7 mov %rax,%r15 0.00 : 89fcf: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 89fd4: 48 01 d7 add %rdx,%rdi 0.00 : 89fd7: 48 89 54 24 70 mov %rdx,0x70(%rsp) 0.00 : 89fdc: 48 39 c0 cmp %rax,%rax 0.00 : 89fdf: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 89fe1: 0f 85 5d 01 00 00 jne 8a144 <__GI_strstr+0x2a4> 0.00 : 89fe7: 48 89 e9 mov %rbp,%rcx 0.00 : 89fea: 48 2b 4c 24 70 sub 0x70(%rsp),%rcx 0.00 : 89fef: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 89ff4: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : 89ff8: 4d 29 f8 sub %r15,%r8 0.00 : 89ffb: 45 31 e4 xor %r12d,%r12d 0.00 : 89ffe: 45 31 ed xor %r13d,%r13d 0.00 : 8a001: 4c 89 44 24 38 mov %r8,0x38(%rsp) 0.00 : 8a006: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 8a00b: 4c 01 fa add %r15,%rdx 0.00 : 8a00e: 4c 01 f0 add %r14,%rax 0.00 : 8a011: 48 89 4c 24 60 mov %rcx,0x60(%rsp) 0.00 : 8a016: 49 8d 4f fe lea -0x2(%r15),%rcx 0.00 : 8a01a: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 8a01f: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 8a024: 48 89 4c 24 40 mov %rcx,0x40(%rsp) 0.00 : 8a029: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8a030: 49 8d 44 2d 00 lea 0x0(%r13,%rbp,1),%rax 0.00 : 8a035: 49 8d 3c 1e lea (%r14,%rbx,1),%rdi 0.00 : 8a039: 31 f6 xor %esi,%esi 0.00 : 8a03b: 48 89 c2 mov %rax,%rdx 0.00 : 8a03e: 48 89 84 24 80 00 00 mov %rax,0x80(%rsp) 0.00 : 8a045: 00 0.00 : 8a046: 48 29 da sub %rbx,%rdx 0.00 : 8a049: e8 92 8d ff ff callq 82de0 0.00 : 8a04e: 48 85 c0 test %rax,%rax 0.00 : 8a051: 0f 85 54 02 00 00 jne 8a2ab <__GI_strstr+0x40b> 0.00 : 8a057: 48 83 bc 24 80 00 00 cmpq $0x0,0x80(%rsp) 0.00 : 8a05e: 00 00 0.00 : 8a060: 0f 84 45 02 00 00 je 8a2ab <__GI_strstr+0x40b> 0.00 : 8a066: 4d 39 fc cmp %r15,%r12 0.00 : 8a069: 4c 89 fe mov %r15,%rsi 0.00 : 8a06c: 49 0f 43 f4 cmovae %r12,%rsi 0.00 : 8a070: 48 39 f5 cmp %rsi,%rbp 0.00 : 8a073: 76 4b jbe 8a0c0 <__GI_strstr+0x220> 0.00 : 8a075: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : 8a07a: 49 8d 14 36 lea (%r14,%rsi,1),%rdx 0.00 : 8a07e: 48 01 f1 add %rsi,%rcx 0.00 : 8a081: 0f b6 01 movzbl (%rcx),%eax 0.00 : 8a084: 42 3a 04 2a cmp (%rdx,%r13,1),%al 0.00 : 8a088: 0f 85 02 02 00 00 jne 8a290 <__GI_strstr+0x3f0> 0.00 : 8a08e: 4a 8d 44 2e 01 lea 0x1(%rsi,%r13,1),%rax 0.00 : 8a093: 48 89 cf mov %rcx,%rdi 0.00 : 8a096: 49 8d 0c 06 lea (%r14,%rax,1),%rcx 0.00 : 8a09a: eb 1b jmp 8a0b7 <__GI_strstr+0x217> 0.00 : 8a09c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8a0a0: 0f b6 57 01 movzbl 0x1(%rdi),%edx 0.00 : 8a0a4: 0f b6 01 movzbl (%rcx),%eax 0.00 : 8a0a7: 48 83 c7 01 add $0x1,%rdi 0.00 : 8a0ab: 48 83 c1 01 add $0x1,%rcx 0.00 : 8a0af: 38 c2 cmp %al,%dl 0.00 : 8a0b1: 0f 85 d9 01 00 00 jne 8a290 <__GI_strstr+0x3f0> 0.00 : 8a0b7: 48 83 c6 01 add $0x1,%rsi 0.00 : 8a0bb: 48 39 f5 cmp %rsi,%rbp 0.00 : 8a0be: 77 e0 ja 8a0a0 <__GI_strstr+0x200> 0.00 : 8a0c0: 4d 39 e7 cmp %r12,%r15 0.00 : 8a0c3: 0f 86 fe 01 00 00 jbe 8a2c7 <__GI_strstr+0x427> 0.00 : 8a0c9: 48 8b 7c 24 58 mov 0x58(%rsp),%rdi 0.00 : 8a0ce: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 8a0d3: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : 8a0d8: 0f b6 04 3a movzbl (%rdx,%rdi,1),%eax 0.00 : 8a0dc: 42 3a 04 29 cmp (%rcx,%r13,1),%al 0.00 : 8a0e0: 0f 85 e1 01 00 00 jne 8a2c7 <__GI_strstr+0x427> 0.00 : 8a0e6: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : 8a0eb: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 8a0f0: 4c 01 e8 add %r13,%rax 0.00 : 8a0f3: 49 8d 0c 06 lea (%r14,%rax,1),%rcx 0.00 : 8a0f7: eb 21 jmp 8a11a <__GI_strstr+0x27a> 0.00 : 8a0f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8a100: 0f b6 56 fe movzbl -0x2(%rsi),%edx 0.00 : 8a104: 0f b6 01 movzbl (%rcx),%eax 0.00 : 8a107: 48 83 ee 01 sub $0x1,%rsi 0.00 : 8a10b: 48 83 e9 01 sub $0x1,%rcx 0.00 : 8a10f: 4c 8d 47 ff lea -0x1(%rdi),%r8 0.00 : 8a113: 38 c2 cmp %al,%dl 0.00 : 8a115: 75 08 jne 8a11f <__GI_strstr+0x27f> 0.00 : 8a117: 4c 89 c7 mov %r8,%rdi 0.00 : 8a11a: 4c 39 e7 cmp %r12,%rdi 0.00 : 8a11d: 77 e1 ja 8a100 <__GI_strstr+0x260> 0.00 : 8a11f: 49 8d 44 24 01 lea 0x1(%r12),%rax 0.00 : 8a124: 48 39 f8 cmp %rdi,%rax 0.00 : 8a127: 0f 87 a2 01 00 00 ja 8a2cf <__GI_strstr+0x42f> 0.00 : 8a12d: 4c 03 6c 24 70 add 0x70(%rsp),%r13 0.00 : 8a132: 4c 8b 64 24 60 mov 0x60(%rsp),%r12 0.00 : 8a137: 48 8b 9c 24 80 00 00 mov 0x80(%rsp),%rbx 0.00 : 8a13e: 00 0.00 : 8a13f: e9 ec fe ff ff jmpq 8a030 <__GI_strstr+0x190> 0.00 : 8a144: 48 89 e8 mov %rbp,%rax 0.00 : 8a147: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 8a14c: 49 8d 4f 01 lea 0x1(%r15),%rcx 0.00 : 8a150: 4c 29 f8 sub %r15,%rax 0.00 : 8a153: 4c 39 f8 cmp %r15,%rax 0.00 : 8a156: 48 89 4c 24 28 mov %rcx,0x28(%rsp) 0.00 : 8a15b: 49 0f 42 c7 cmovb %r15,%rax 0.00 : 8a15f: 4c 01 fa add %r15,%rdx 0.00 : 8a162: 4d 29 f8 sub %r15,%r8 0.00 : 8a165: 48 83 c0 01 add $0x1,%rax 0.00 : 8a169: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.00 : 8a16e: 49 8d 57 fe lea -0x2(%r15),%rdx 0.00 : 8a172: 48 89 44 24 68 mov %rax,0x68(%rsp) 0.00 : 8a177: 48 89 84 24 90 00 00 mov %rax,0x90(%rsp) 0.00 : 8a17e: 00 0.00 : 8a17f: 49 8d 47 ff lea -0x1(%r15),%rax 0.00 : 8a183: 45 31 e4 xor %r12d,%r12d 0.00 : 8a186: 4c 89 44 24 20 mov %r8,0x20(%rsp) 0.00 : 8a18b: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 8a190: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 8a195: 0f 1f 00 nopl (%rax) 0.00 : 8a198: 4d 8d 2c 2c lea (%r12,%rbp,1),%r13 0.00 : 8a19c: 49 8d 3c 1e lea (%r14,%rbx,1),%rdi 0.00 : 8a1a0: 31 f6 xor %esi,%esi 0.00 : 8a1a2: 4c 89 ea mov %r13,%rdx 0.00 : 8a1a5: 48 29 da sub %rbx,%rdx 0.00 : 8a1a8: e8 33 8c ff ff callq 82de0 0.00 : 8a1ad: 48 85 c0 test %rax,%rax 0.00 : 8a1b0: 0f 85 f5 00 00 00 jne 8a2ab <__GI_strstr+0x40b> 0.00 : 8a1b6: 4d 85 ed test %r13,%r13 0.00 : 8a1b9: 0f 84 ec 00 00 00 je 8a2ab <__GI_strstr+0x40b> 0.00 : 8a1bf: 4c 39 fd cmp %r15,%rbp 0.00 : 8a1c2: 4f 8d 04 26 lea (%r14,%r12,1),%r8 0.00 : 8a1c6: 76 54 jbe 8a21c <__GI_strstr+0x37c> 0.00 : 8a1c8: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 8a1cd: 4f 8d 04 26 lea (%r14,%r12,1),%r8 0.00 : 8a1d1: 4c 89 ff mov %r15,%rdi 0.00 : 8a1d4: 0f b6 02 movzbl (%rdx),%eax 0.00 : 8a1d7: 43 3a 04 38 cmp (%r8,%r15,1),%al 0.00 : 8a1db: 0f 85 97 00 00 00 jne 8a278 <__GI_strstr+0x3d8> 0.00 : 8a1e1: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 8a1e6: 48 8b 74 24 30 mov 0x30(%rsp),%rsi 0.00 : 8a1eb: 4c 89 ff mov %r15,%rdi 0.00 : 8a1ee: 4c 01 e0 add %r12,%rax 0.00 : 8a1f1: 49 8d 0c 06 lea (%r14,%rax,1),%rcx 0.00 : 8a1f5: eb 1c jmp 8a213 <__GI_strstr+0x373> 0.00 : 8a1f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8a1fe: 00 00 0.00 : 8a200: 0f b6 56 01 movzbl 0x1(%rsi),%edx 0.00 : 8a204: 0f b6 01 movzbl (%rcx),%eax 0.00 : 8a207: 48 83 c6 01 add $0x1,%rsi 0.00 : 8a20b: 48 83 c1 01 add $0x1,%rcx 0.00 : 8a20f: 38 c2 cmp %al,%dl 0.00 : 8a211: 75 65 jne 8a278 <__GI_strstr+0x3d8> 0.00 : 8a213: 48 83 c7 01 add $0x1,%rdi 0.00 : 8a217: 48 39 fd cmp %rdi,%rbp 0.00 : 8a21a: 77 e4 ja 8a200 <__GI_strstr+0x360> 0.00 : 8a21c: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : 8a221: 48 83 ff ff cmp $0xffffffffffffffff,%rdi 0.00 : 8a225: 74 46 je 8a26d <__GI_strstr+0x3cd> 0.00 : 8a227: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : 8a22c: 0f b6 04 39 movzbl (%rcx,%rdi,1),%eax 0.00 : 8a230: 41 3a 04 38 cmp (%r8,%rdi,1),%al 0.00 : 8a234: 75 6e jne 8a2a4 <__GI_strstr+0x404> 0.00 : 8a236: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 8a23b: 48 8b 74 24 30 mov 0x30(%rsp),%rsi 0.00 : 8a240: 4c 01 e0 add %r12,%rax 0.00 : 8a243: 49 8d 0c 06 lea (%r14,%rax,1),%rcx 0.00 : 8a247: eb 1a jmp 8a263 <__GI_strstr+0x3c3> 0.00 : 8a249: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8a250: 0f b6 56 fe movzbl -0x2(%rsi),%edx 0.00 : 8a254: 0f b6 01 movzbl (%rcx),%eax 0.00 : 8a257: 48 83 ee 01 sub $0x1,%rsi 0.00 : 8a25b: 48 83 e9 01 sub $0x1,%rcx 0.00 : 8a25f: 38 c2 cmp %al,%dl 0.00 : 8a261: 75 41 jne 8a2a4 <__GI_strstr+0x404> 0.00 : 8a263: 48 83 ef 01 sub $0x1,%rdi 0.00 : 8a267: 48 83 ff ff cmp $0xffffffffffffffff,%rdi 0.00 : 8a26b: 75 e3 jne 8a250 <__GI_strstr+0x3b0> 0.00 : 8a26d: 4c 89 c0 mov %r8,%rax 0.00 : 8a270: e9 8f fc ff ff jmpq 89f04 <__GI_strstr+0x64> 0.00 : 8a275: 0f 1f 00 nopl (%rax) 0.00 : 8a278: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 8a27d: 4c 01 e0 add %r12,%rax 0.00 : 8a280: 4c 8d 24 38 lea (%rax,%rdi,1),%r12 0.00 : 8a284: 4c 89 eb mov %r13,%rbx 0.00 : 8a287: e9 0c ff ff ff jmpq 8a198 <__GI_strstr+0x2f8> 0.00 : 8a28c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8a290: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 8a295: 45 31 e4 xor %r12d,%r12d 0.00 : 8a298: 4c 01 e8 add %r13,%rax 0.00 : 8a29b: 4c 8d 2c 30 lea (%rax,%rsi,1),%r13 0.00 : 8a29f: e9 93 fe ff ff jmpq 8a137 <__GI_strstr+0x297> 0.00 : 8a2a4: 4c 03 64 24 68 add 0x68(%rsp),%r12 0.00 : 8a2a9: eb d9 jmp 8a284 <__GI_strstr+0x3e4> 0.00 : 8a2ab: 31 c0 xor %eax,%eax 0.00 : 8a2ad: e9 52 fc ff ff jmpq 89f04 <__GI_strstr+0x64> 0.00 : 8a2b2: 4c 89 f0 mov %r14,%rax 0.00 : 8a2b5: e9 4a fc ff ff jmpq 89f04 <__GI_strstr+0x64> 0.00 : 8a2ba: 48 89 f3 mov %rsi,%rbx 0.00 : 8a2bd: be 01 00 00 00 mov $0x1,%esi 0.00 : 8a2c2: e9 36 fc ff ff jmpq 89efd <__GI_strstr+0x5d> 0.00 : 8a2c7: 4c 89 ff mov %r15,%rdi 0.00 : 8a2ca: e9 50 fe ff ff jmpq 8a11f <__GI_strstr+0x27f> 0.00 : 8a2cf: 4b 8d 04 2e lea (%r14,%r13,1),%rax 0.00 : 8a2d3: e9 2c fc ff ff jmpq 89f04 <__GI_strstr+0x64> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b19c0 : 50.00 : b19c0: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : b19c5: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : b19ca: 48 89 fb mov %rdi,%rbx 0.00 : b19cd: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : b19d2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : b19d7: 48 83 ec 28 sub $0x28,%rsp 0.00 : b19db: 8b 87 80 00 00 00 mov 0x80(%rdi),%eax 0.00 : b19e1: 48 89 f5 mov %rsi,%rbp 0.00 : b19e4: 49 89 d4 mov %rdx,%r12 0.00 : b19e7: 49 89 cd mov %rcx,%r13 0.00 : b19ea: 83 f8 0f cmp $0xf,%eax 0.00 : b19ed: 0f 84 a6 00 00 00 je b1a99 0.00 : b19f3: 48 8b 7f 70 mov 0x70(%rdi),%rdi 0.00 : b19f7: 48 63 d0 movslq %eax,%rdx 0.00 : b19fa: 83 c0 01 add $0x1,%eax 0.00 : b19fd: 48 89 d6 mov %rdx,%rsi 0.00 : b1a00: 48 89 d1 mov %rdx,%rcx 0.00 : b1a03: 89 83 80 00 00 00 mov %eax,0x80(%rbx) 0.00 : b1a09: 48 c1 e6 06 shl $0x6,%rsi 0.00 : b1a0d: 48 c1 e1 06 shl $0x6,%rcx 0.00 : b1a11: 48 8d 54 12 01 lea 0x1(%rdx,%rdx,1),%rdx 0.00 : b1a16: 48 8d 34 37 lea (%rdi,%rsi,1),%rsi 0.00 : b1a1a: 48 8d 4c 39 10 lea 0x10(%rcx,%rdi,1),%rcx 0.00 : b1a1f: 48 c1 e2 05 shl $0x5,%rdx 0.00 : b1a23: 48 c7 46 08 00 00 00 movq $0x0,0x8(%rsi) 0.00 : b1a2a: 00 0.00 : b1a2b: 48 89 6e 10 mov %rbp,0x10(%rsi) 0.00 : b1a2f: 4c 8d 46 08 lea 0x8(%rsi),%r8 0.00 : b1a33: 4c 89 61 08 mov %r12,0x8(%rcx) 0.00 : b1a37: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : b1a3b: 48 89 44 17 10 mov %rax,0x10(%rdi,%rdx,1) 0.00 : b1a40: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : b1a44: 48 89 44 17 18 mov %rax,0x18(%rdi,%rdx,1) 0.00 : b1a49: c1 e8 10 shr $0x10,%eax 0.00 : b1a4c: 83 e0 f3 and $0xfffffff3,%eax 0.00 : b1a4f: 48 85 ed test %rbp,%rbp 0.00 : b1a52: 88 44 17 1a mov %al,0x1a(%rdi,%rdx,1) 0.00 : b1a56: 48 c7 41 10 00 00 00 movq $0x0,0x10(%rcx) 0.00 : b1a5d: 00 0.00 : b1a5e: 48 c7 44 17 08 00 00 movq $0x0,0x8(%rdi,%rdx,1) 0.00 : b1a65: 00 00 0.00 : b1a67: c7 46 40 ff ff ff ff movl $0xffffffff,0x40(%rsi) 0.00 : b1a6e: 74 04 je b1a74 0.00 : b1a70: 4c 89 45 00 mov %r8,0x0(%rbp) 0.00 : b1a74: 4d 85 e4 test %r12,%r12 0.00 : b1a77: 74 04 je b1a7d 0.00 : b1a79: 4d 89 04 24 mov %r8,(%r12) 50.00 : b1a7d: 4c 89 c0 mov %r8,%rax 0.00 : b1a80: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : b1a85: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : b1a8a: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : b1a8f: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : b1a94: 48 83 c4 28 add $0x28,%rsp 0.00 : b1a98: c3 retq 0.00 : b1a99: bf c8 03 00 00 mov $0x3c8,%edi 0.00 : b1a9e: e8 ad cd f6 ff callq 1e850 0.00 : b1aa3: 45 31 c0 xor %r8d,%r8d 0.00 : b1aa6: 48 85 c0 test %rax,%rax 0.00 : b1aa9: 74 d2 je b1a7d 0.00 : b1aab: 48 8b 7b 70 mov 0x70(%rbx),%rdi 0.00 : b1aaf: 48 89 38 mov %rdi,(%rax) 0.00 : b1ab2: 48 89 c7 mov %rax,%rdi 0.00 : b1ab5: 48 89 43 70 mov %rax,0x70(%rbx) 0.00 : b1ab9: c7 83 80 00 00 00 00 movl $0x0,0x80(%rbx) 0.00 : b1ac0: 00 00 00 0.00 : b1ac3: 31 c0 xor %eax,%eax 0.00 : b1ac5: e9 2d ff ff ff jmpq b19f7 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b8ec0 : 0.00 : b8ec0: 55 push %rbp 0.00 : b8ec1: 48 89 e5 mov %rsp,%rbp 0.00 : b8ec4: 41 57 push %r15 0.00 : b8ec6: 41 56 push %r14 0.00 : b8ec8: 41 55 push %r13 0.00 : b8eca: 41 54 push %r12 0.00 : b8ecc: 53 push %rbx 0.00 : b8ecd: 48 81 ec 58 01 00 00 sub $0x158,%rsp 0.00 : b8ed4: 48 89 bd c8 fe ff ff mov %rdi,-0x138(%rbp) 0.00 : b8edb: 48 89 b5 c0 fe ff ff mov %rsi,-0x140(%rbp) 0.00 : b8ee2: bf 00 30 00 00 mov $0x3000,%edi 0.00 : b8ee7: e8 d4 ec 02 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : b8eec: 85 c0 test %eax,%eax 0.00 : b8eee: 0f 85 d8 06 00 00 jne b95cc 0.00 : b8ef4: bf 00 30 00 00 mov $0x3000,%edi 0.00 : b8ef9: e8 52 59 f6 ff callq 1e850 0.00 : b8efe: 48 85 c0 test %rax,%rax 0.00 : b8f01: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) 0.00 : b8f08: 0f 84 72 06 00 00 je b9580 0.00 : b8f0e: c6 85 d6 fe ff ff 01 movb $0x1,-0x12a(%rbp) 0.00 : b8f15: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : b8f1c: 48 8b 95 c0 fe ff ff mov -0x140(%rbp),%rdx 0.00 : b8f23: 45 31 ff xor %r15d,%r15d 0.00 : b8f26: 4c 8d 85 70 ff ff ff lea -0x90(%rbp),%r8 0.00 : b8f2d: 48 05 00 10 00 00 add $0x1000,%rax 0.00 : b8f33: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) 0.00 : b8f3a: 48 c7 42 40 00 00 00 movq $0x0,0x40(%rdx) 0.00 : b8f41: 00 0.00 : b8f42: 48 c7 42 48 00 00 00 movq $0x0,0x48(%rdx) 0.00 : b8f49: 00 0.00 : b8f4a: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : b8f51: 00 00 00 00 0.00 : b8f55: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : b8f5c: 00 00 00 00 0.00 : b8f60: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : b8f67: 00 0.00 : b8f68: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) 0.00 : b8f6f: 00 0.00 : b8f70: 8b 7a 0c mov 0xc(%rdx),%edi 0.00 : b8f73: 85 ff test %edi,%edi 0.00 : b8f75: 0f 8e c1 05 00 00 jle b953c 0.00 : b8f7b: 48 8d 8d 30 ff ff ff lea -0xd0(%rbp),%rcx 0.00 : b8f82: 48 8d 9d 50 ff ff ff lea -0xb0(%rbp),%rbx 0.00 : b8f89: c7 85 0c ff ff ff 00 movl $0x0,-0xf4(%rbp) 0.00 : b8f90: 00 00 00 0.00 : b8f93: 45 31 f6 xor %r14d,%r14d 0.00 : b8f96: 48 c7 85 20 ff ff ff movq $0x0,-0xe0(%rbp) 0.00 : b8f9d: 00 00 00 00 0.00 : b8fa1: 48 89 8d 98 fe ff ff mov %rcx,-0x168(%rbp) 0.00 : b8fa8: 48 89 9d 90 fe ff ff mov %rbx,-0x170(%rbp) 0.00 : b8faf: eb 59 jmp b900a 0.00 : b8fb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b8fb8: 83 bd fc fe ff ff 03 cmpl $0x3,-0x104(%rbp) 0.00 : b8fbf: 0f 84 5b 04 00 00 je b9420 0.00 : b8fc5: 83 bd fc fe ff ff 05 cmpl $0x5,-0x104(%rbp) 0.00 : b8fcc: 0f 84 71 04 00 00 je b9443 0.00 : b8fd2: 83 bd fc fe ff ff 07 cmpl $0x7,-0x104(%rbp) 0.00 : b8fd9: 0f 84 b2 05 00 00 je b9591 0.00 : b8fdf: 45 89 f7 mov %r14d,%r15d 0.00 : b8fe2: 48 8b b5 c0 fe ff ff mov -0x140(%rbp),%rsi 0.00 : b8fe9: 83 85 0c ff ff ff 01 addl $0x1,-0xf4(%rbp) 0.00 : b8ff0: 48 83 85 20 ff ff ff addq $0x4,-0xe0(%rbp) 0.00 : b8ff7: 04 0.00 : b8ff8: 8b 85 0c ff ff ff mov -0xf4(%rbp),%eax 0.00 : b8ffe: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : b9001: 0f 8d d2 06 00 00 jge b96d9 0.00 : b9007: 45 89 fe mov %r15d,%r14d 0.00 : b900a: 48 8b b5 c0 fe ff ff mov -0x140(%rbp),%rsi 0.00 : b9011: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : b9018: 48 8b 8d c8 fe ff ff mov -0x138(%rbp),%rcx 0.00 : b901f: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : b9023: 48 8b 09 mov (%rcx),%rcx 0.00 : b9026: 48 63 04 10 movslq (%rax,%rdx,1),%rax 0.00 : b902a: 48 c1 e0 04 shl $0x4,%rax 0.00 : b902e: 48 01 c8 add %rcx,%rax 0.00 : b9031: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) 0.00 : b9038: 0f b6 58 08 movzbl 0x8(%rax),%ebx 0.00 : b903c: 48 89 c6 mov %rax,%rsi 0.00 : b903f: 89 9d fc fe ff ff mov %ebx,-0x104(%rbp) 0.00 : b9045: 8b 40 08 mov 0x8(%rax),%eax 0.00 : b9048: c1 e8 08 shr $0x8,%eax 0.00 : b904b: 89 c3 mov %eax,%ebx 0.00 : b904d: 66 81 e3 ff 03 and $0x3ff,%bx 0.00 : b9052: 83 bd fc fe ff ff 01 cmpl $0x1,-0x104(%rbp) 0.00 : b9059: 0f 85 59 ff ff ff jne b8fb8 0.00 : b905f: 0f b6 0e movzbl (%rsi),%ecx 0.00 : b9062: ba 01 00 00 00 mov $0x1,%edx 0.00 : b9067: 89 c8 mov %ecx,%eax 0.00 : b9069: 83 e1 3f and $0x3f,%ecx 0.00 : b906c: c0 e8 06 shr $0x6,%al 0.00 : b906f: 48 d3 e2 shl %cl,%rdx 0.00 : b9072: 0f b6 c0 movzbl %al,%eax 0.00 : b9075: 48 09 94 c5 70 ff ff or %rdx,-0x90(%rbp,%rax,8) 0.00 : b907c: ff 0.00 : b907d: 0f b7 f3 movzwl %bx,%esi 0.00 : b9080: 85 f6 test %esi,%esi 0.00 : b9082: 0f 84 e0 00 00 00 je b9168 0.00 : b9088: 40 f6 c6 20 test $0x20,%sil 0.00 : b908c: 0f 85 0f 04 00 00 jne b94a1 0.00 : b9092: 40 84 f6 test %sil,%sil 0.00 : b9095: 0f 88 49 04 00 00 js b94e4 0.00 : b909b: 40 f6 c6 04 test $0x4,%sil 0.00 : b909f: 90 nop 0.00 : b90a0: 74 5d je b90ff 0.00 : b90a2: 83 bd fc fe ff ff 01 cmpl $0x1,-0x104(%rbp) 0.00 : b90a9: 0f 84 40 05 00 00 je b95ef 0.00 : b90af: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : b90b6: 83 b8 a4 00 00 00 01 cmpl $0x1,0xa4(%rax) 0.00 : b90bd: 0f 8e 42 05 00 00 jle b9605 0.00 : b90c3: 48 8b 78 78 mov 0x78(%rax),%rdi 0.00 : b90c7: 31 c9 xor %ecx,%ecx 0.00 : b90c9: 31 d2 xor %edx,%edx 0.00 : b90cb: 48 8b 04 17 mov (%rdi,%rdx,1),%rax 0.00 : b90cf: 48 8b 9d c8 fe ff ff mov -0x138(%rbp),%rbx 0.00 : b90d6: 48 f7 d0 not %rax 0.00 : b90d9: 48 0b 84 13 a8 00 00 or 0xa8(%rbx,%rdx,1),%rax 0.00 : b90e0: 00 0.00 : b90e1: 49 23 04 10 and (%r8,%rdx,1),%rax 0.00 : b90e5: 49 89 04 10 mov %rax,(%r8,%rdx,1) 0.00 : b90e9: 48 83 c2 08 add $0x8,%rdx 0.00 : b90ed: 48 09 c1 or %rax,%rcx 0.00 : b90f0: 48 83 fa 20 cmp $0x20,%rdx 0.00 : b90f4: 75 d5 jne b90cb 0.00 : b90f6: 48 85 c9 test %rcx,%rcx 0.00 : b90f9: 0f 84 e0 fe ff ff je b8fdf 0.00 : b90ff: 83 e6 08 and $0x8,%esi 0.00 : b9102: 74 64 je b9168 0.00 : b9104: 83 bd fc fe ff ff 01 cmpl $0x1,-0x104(%rbp) 0.00 : b910b: 0f 84 79 05 00 00 je b968a 0.00 : b9111: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : b9118: 83 b8 a4 00 00 00 01 cmpl $0x1,0xa4(%rax) 0.00 : b911f: 0f 8e 7b 05 00 00 jle b96a0 0.00 : b9125: 48 8b 78 78 mov 0x78(%rax),%rdi 0.00 : b9129: 31 c9 xor %ecx,%ecx 0.00 : b912b: 31 d2 xor %edx,%edx 0.00 : b912d: 48 8b 9d c8 fe ff ff mov -0x138(%rbp),%rbx 0.00 : b9134: 48 8b 04 17 mov (%rdi,%rdx,1),%rax 0.00 : b9138: 48 23 84 13 a8 00 00 and 0xa8(%rbx,%rdx,1),%rax 0.00 : b913f: 00 0.00 : b9140: 48 f7 d0 not %rax 0.00 : b9143: 49 23 04 10 and (%r8,%rdx,1),%rax 0.00 : b9147: 49 89 04 10 mov %rax,(%r8,%rdx,1) 0.00 : b914b: 48 83 c2 08 add $0x8,%rdx 0.00 : b914f: 48 09 c1 or %rax,%rcx 0.00 : b9152: 48 83 fa 20 cmp $0x20,%rdx 0.00 : b9156: 75 d5 jne b912d 0.00 : b9158: 48 85 c9 test %rcx,%rcx 0.00 : b915b: 0f 84 7e fe ff ff je b8fdf 0.00 : b9161: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b9168: 45 85 f6 test %r14d,%r14d 0.00 : b916b: 0f 84 18 02 00 00 je b9389 0.00 : b9171: 45 31 ed xor %r13d,%r13d 0.00 : b9174: 83 bd fc fe ff ff 01 cmpl $0x1,-0x104(%rbp) 0.00 : b917b: 48 8b 9d b8 fe ff ff mov -0x148(%rbp),%rbx 0.00 : b9182: 48 c7 85 10 ff ff ff movq $0x0,-0xf0(%rbp) 0.00 : b9189: 00 00 00 00 0.00 : b918d: 48 c7 85 18 ff ff ff movq $0x0,-0xe8(%rbp) 0.00 : b9194: 00 00 00 00 0.00 : b9198: 44 89 ad 2c ff ff ff mov %r13d,-0xd4(%rbp) 0.00 : b919f: 0f 84 ac 01 00 00 je b9351 0.00 : b91a5: 0f 1f 00 nopl (%rax) 0.00 : b91a8: 48 8b 13 mov (%rbx),%rdx 0.00 : b91ab: 48 23 95 70 ff ff ff and -0x90(%rbp),%rdx 0.00 : b91b2: 48 89 95 50 ff ff ff mov %rdx,-0xb0(%rbp) 0.00 : b91b9: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : b91bd: 48 23 8d 78 ff ff ff and -0x88(%rbp),%rcx 0.00 : b91c4: 48 89 8d 58 ff ff ff mov %rcx,-0xa8(%rbp) 0.00 : b91cb: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b91cf: 48 09 ca or %rcx,%rdx 0.00 : b91d2: 48 23 45 80 and -0x80(%rbp),%rax 0.00 : b91d6: 48 09 c2 or %rax,%rdx 0.00 : b91d9: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : b91e0: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : b91e4: 48 23 45 88 and -0x78(%rbp),%rax 0.00 : b91e8: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : b91ef: 48 09 d0 or %rdx,%rax 0.00 : b91f2: 0f 84 1e 01 00 00 je b9316 0.00 : b91f8: 31 c9 xor %ecx,%ecx 0.00 : b91fa: 45 31 e4 xor %r12d,%r12d 0.00 : b91fd: 31 d2 xor %edx,%edx 0.00 : b91ff: 49 8b 04 10 mov (%r8,%rdx,1),%rax 0.00 : b9203: 48 8b b5 98 fe ff ff mov -0x168(%rbp),%rsi 0.00 : b920a: 48 f7 d0 not %rax 0.00 : b920d: 48 23 04 13 and (%rbx,%rdx,1),%rax 0.00 : b9211: 48 89 04 16 mov %rax,(%rsi,%rdx,1) 0.00 : b9215: 48 09 c1 or %rax,%rcx 0.00 : b9218: 48 8b 04 13 mov (%rbx,%rdx,1),%rax 0.00 : b921c: 48 f7 d0 not %rax 0.00 : b921f: 49 23 04 10 and (%r8,%rdx,1),%rax 0.00 : b9223: 49 89 04 10 mov %rax,(%r8,%rdx,1) 0.00 : b9227: 48 83 c2 08 add $0x8,%rdx 0.00 : b922b: 49 09 c4 or %rax,%r12 0.00 : b922e: 48 83 fa 20 cmp $0x20,%rdx 0.00 : b9232: 75 cb jne b91ff 0.00 : b9234: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : b923b: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : b9242: 48 85 c9 test %rcx,%rcx 0.00 : b9245: 4c 8d 3c 02 lea (%rdx,%rax,1),%r15 0.00 : b9249: 0f 84 8f 00 00 00 je b92de 0.00 : b924f: 49 63 fe movslq %r14d,%rdi 0.00 : b9252: 48 8b 06 mov (%rsi),%rax 0.00 : b9255: 48 89 fa mov %rdi,%rdx 0.00 : b9258: 48 c1 e7 04 shl $0x4,%rdi 0.00 : b925c: 48 c1 e2 05 shl $0x5,%rdx 0.00 : b9260: 48 03 95 b8 fe ff ff add -0x148(%rbp),%rdx 0.00 : b9267: 48 89 02 mov %rax,(%rdx) 0.00 : b926a: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : b926e: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : b9272: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : b9276: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : b927a: 48 8b 46 18 mov 0x18(%rsi),%rax 0.00 : b927e: 4c 89 fe mov %r15,%rsi 0.00 : b9281: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : b9285: 48 8b 8d 90 fe ff ff mov -0x170(%rbp),%rcx 0.00 : b928c: 48 8b 95 b8 fe ff ff mov -0x148(%rbp),%rdx 0.00 : b9293: 48 03 95 10 ff ff ff add -0xf0(%rbp),%rdx 0.00 : b929a: 48 8b 01 mov (%rcx),%rax 0.00 : b929d: 48 89 02 mov %rax,(%rdx) 0.00 : b92a0: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : b92a4: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : b92a8: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : b92ac: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : b92b0: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : b92b4: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : b92b8: 48 03 bd f0 fe ff ff add -0x110(%rbp),%rdi 0.00 : b92bf: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : b92c6: e8 35 9c ff ff callq b2f00 0.00 : b92cb: 85 c0 test %eax,%eax 0.00 : b92cd: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : b92d4: 0f 85 36 02 00 00 jne b9510 0.00 : b92da: 41 83 c6 01 add $0x1,%r14d 0.00 : b92de: 48 8b b5 c0 fe ff ff mov -0x140(%rbp),%rsi 0.00 : b92e5: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : b92ec: 4c 89 ff mov %r15,%rdi 0.00 : b92ef: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : b92f3: 8b 34 10 mov (%rax,%rdx,1),%esi 0.00 : b92f6: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : b92fd: e8 3e 96 ff ff callq b2940 0.00 : b9302: 85 c0 test %eax,%eax 0.00 : b9304: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : b930b: 0f 88 ff 01 00 00 js b9510 0.00 : b9311: 4d 85 e4 test %r12,%r12 0.00 : b9314: 74 60 je b9376 0.00 : b9316: 45 89 f7 mov %r14d,%r15d 0.00 : b9319: 45 8d 75 01 lea 0x1(%r13),%r14d 0.00 : b931d: 48 83 c3 20 add $0x20,%rbx 0.00 : b9321: 49 83 c5 01 add $0x1,%r13 0.00 : b9325: 48 83 85 10 ff ff ff addq $0x20,-0xf0(%rbp) 0.00 : b932c: 20 0.00 : b932d: 48 83 85 18 ff ff ff addq $0x10,-0xe8(%rbp) 0.00 : b9334: 10 0.00 : b9335: 45 39 fe cmp %r15d,%r14d 0.00 : b9338: 7d 46 jge b9380 0.00 : b933a: 83 bd fc fe ff ff 01 cmpl $0x1,-0x104(%rbp) 0.00 : b9341: 45 89 fe mov %r15d,%r14d 0.00 : b9344: 44 89 ad 2c ff ff ff mov %r13d,-0xd4(%rbp) 0.00 : b934b: 0f 85 57 fe ff ff jne b91a8 0.00 : b9351: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : b9358: 0f b6 08 movzbl (%rax),%ecx 0.00 : b935b: 89 c8 mov %ecx,%eax 0.00 : b935d: 83 e1 3f and $0x3f,%ecx 0.00 : b9360: c0 e8 06 shr $0x6,%al 0.00 : b9363: 0f b6 c0 movzbl %al,%eax 0.00 : b9366: 48 8b 04 c3 mov (%rbx,%rax,8),%rax 0.00 : b936a: 48 d3 e8 shr %cl,%rax 0.00 : b936d: a8 01 test $0x1,%al 0.00 : b936f: 74 a5 je b9316 0.00 : b9371: e9 32 fe ff ff jmpq b91a8 0.00 : b9376: 45 89 f7 mov %r14d,%r15d 0.00 : b9379: 44 8b b5 2c ff ff ff mov -0xd4(%rbp),%r14d 0.00 : b9380: 45 39 fe cmp %r15d,%r14d 0.00 : b9383: 0f 85 59 fc ff ff jne b8fe2 0.00 : b9389: 49 63 fe movslq %r14d,%rdi 0.00 : b938c: 49 8b 00 mov (%r8),%rax 0.00 : b938f: 48 89 fa mov %rdi,%rdx 0.00 : b9392: 48 c1 e7 04 shl $0x4,%rdi 0.00 : b9396: 48 c1 e2 05 shl $0x5,%rdx 0.00 : b939a: 48 03 95 b8 fe ff ff add -0x148(%rbp),%rdx 0.00 : b93a1: 48 89 02 mov %rax,(%rdx) 0.00 : b93a4: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : b93a8: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : b93ac: 49 8b 40 10 mov 0x10(%r8),%rax 0.00 : b93b0: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : b93b4: 49 8b 40 18 mov 0x18(%r8),%rax 0.00 : b93b8: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : b93bc: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : b93c3: 48 8b 9d 20 ff ff ff mov -0xe0(%rbp),%rbx 0.00 : b93ca: 48 03 bd f0 fe ff ff add -0x110(%rbp),%rdi 0.00 : b93d1: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : b93d5: 8b 34 18 mov (%rax,%rbx,1),%esi 0.00 : b93d8: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : b93df: e8 7c 85 ff ff callq b1960 0.00 : b93e4: 85 c0 test %eax,%eax 0.00 : b93e6: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : b93ed: 0f 85 18 01 00 00 jne b950b 0.00 : b93f3: 45 8d 7e 01 lea 0x1(%r14),%r15d 0.00 : b93f7: 49 c7 00 00 00 00 00 movq $0x0,(%r8) 0.00 : b93fe: 49 c7 40 08 00 00 00 movq $0x0,0x8(%r8) 0.00 : b9405: 00 0.00 : b9406: 49 c7 40 10 00 00 00 movq $0x0,0x10(%r8) 0.00 : b940d: 00 0.00 : b940e: 49 c7 40 18 00 00 00 movq $0x0,0x18(%r8) 0.00 : b9415: 00 0.00 : b9416: e9 c7 fb ff ff jmpq b8fe2 0.00 : b941b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b9420: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : b9427: 31 d2 xor %edx,%edx 0.00 : b9429: 48 8b 0e mov (%rsi),%rcx 0.00 : b942c: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : b9430: 49 09 04 10 or %rax,(%r8,%rdx,1) 0.00 : b9434: 48 83 c2 08 add $0x8,%rdx 0.00 : b9438: 48 83 fa 20 cmp $0x20,%rdx 0.00 : b943c: 75 ee jne b942c 0.00 : b943e: e9 3a fc ff ff jmpq b907d 0.00 : b9443: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : b944a: 83 b8 a4 00 00 00 01 cmpl $0x1,0xa4(%rax) 0.00 : b9451: 0f 8e 0e 02 00 00 jle b9665 0.00 : b9457: 48 8b 78 78 mov 0x78(%rax),%rdi 0.00 : b945b: 31 d2 xor %edx,%edx 0.00 : b945d: 48 8b 04 17 mov (%rdi,%rdx,1),%rax 0.00 : b9461: 49 09 04 10 or %rax,(%r8,%rdx,1) 0.00 : b9465: 48 83 c2 08 add $0x8,%rdx 0.00 : b9469: 48 83 fa 20 cmp $0x20,%rdx 0.00 : b946d: 75 ee jne b945d 0.00 : b946f: 48 8b 95 c8 fe ff ff mov -0x138(%rbp),%rdx 0.00 : b9476: 48 8b 82 c8 00 00 00 mov 0xc8(%rdx),%rax 0.00 : b947d: a8 40 test $0x40,%al 0.00 : b947f: 75 0b jne b948c 0.00 : b9481: 48 81 a5 70 ff ff ff andq $0xfffffffffffffbff,-0x90(%rbp) 0.00 : b9488: ff fb ff ff 0.00 : b948c: 84 c0 test %al,%al 0.00 : b948e: 0f 89 e9 fb ff ff jns b907d 0.00 : b9494: 48 83 a5 70 ff ff ff andq $0xfffffffffffffffe,-0x90(%rbp) 0.00 : b949b: fe 0.00 : b949c: e9 dc fb ff ff jmpq b907d 0.00 : b94a1: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : b94a8: 49 c7 40 08 00 00 00 movq $0x0,0x8(%r8) 0.00 : b94af: 00 0.00 : b94b0: 49 c7 00 00 00 00 00 movq $0x0,(%r8) 0.00 : b94b7: 49 c7 40 10 00 00 00 movq $0x0,0x10(%r8) 0.00 : b94be: 00 0.00 : b94bf: 49 c7 40 18 00 00 00 movq $0x0,0x18(%r8) 0.00 : b94c6: 00 0.00 : b94c7: f6 c4 04 test $0x4,%ah 0.00 : b94ca: 0f 84 0f fb ff ff je b8fdf 0.00 : b94d0: 48 81 8d 70 ff ff ff orq $0x400,-0x90(%rbp) 0.00 : b94d7: 00 04 00 00 0.00 : b94db: 40 84 f6 test %sil,%sil 0.00 : b94de: 0f 89 b7 fb ff ff jns b909b 0.00 : b94e4: 49 c7 00 00 00 00 00 movq $0x0,(%r8) 0.00 : b94eb: 49 c7 40 08 00 00 00 movq $0x0,0x8(%r8) 0.00 : b94f2: 00 0.00 : b94f3: 45 89 f7 mov %r14d,%r15d 0.00 : b94f6: 49 c7 40 10 00 00 00 movq $0x0,0x10(%r8) 0.00 : b94fd: 00 0.00 : b94fe: 49 c7 40 18 00 00 00 movq $0x0,0x18(%r8) 0.00 : b9505: 00 0.00 : b9506: e9 d7 fa ff ff jmpq b8fe2 0.00 : b950b: 45 85 f6 test %r14d,%r14d 0.00 : b950e: 74 26 je b9536 0.00 : b9510: 45 31 e4 xor %r12d,%r12d 0.00 : b9513: 31 db xor %ebx,%ebx 0.00 : b9515: 0f 1f 00 nopl (%rax) 0.00 : b9518: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : b951f: 41 83 c4 01 add $0x1,%r12d 0.00 : b9523: 48 8b 7c 1a 08 mov 0x8(%rdx,%rbx,1),%rdi 0.00 : b9528: 48 83 c3 10 add $0x10,%rbx 0.00 : b952c: e8 6f 53 f6 ff callq 1e8a0 0.00 : b9531: 45 39 f4 cmp %r14d,%r12d 0.00 : b9534: 7c e2 jl b9518 0.00 : b9536: 41 bf ff ff ff ff mov $0xffffffff,%r15d 0.00 : b953c: 80 bd d6 fe ff ff 00 cmpb $0x0,-0x12a(%rbp) 0.00 : b9543: 74 0c je b9551 0.00 : b9545: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : b954c: e8 4f 53 f6 ff callq 1e8a0 0.00 : b9551: 45 85 ff test %r15d,%r15d 0.00 : b9554: 75 2a jne b9580 0.00 : b9556: be 00 01 00 00 mov $0x100,%esi 0.00 : b955b: bf 08 00 00 00 mov $0x8,%edi 0.00 : b9560: e8 2b 53 f6 ff callq 1e890 0.00 : b9565: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : b956c: 48 85 c0 test %rax,%rax 0.00 : b956f: 48 89 41 40 mov %rax,0x40(%rcx) 0.00 : b9573: 0f 95 c0 setne %al 0.00 : b9576: 0f b6 c0 movzbl %al,%eax 0.00 : b9579: eb 07 jmp b9582 0.00 : b957b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b9580: 31 c0 xor %eax,%eax 0.00 : b9582: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : b9586: 5b pop %rbx 0.00 : b9587: 41 5c pop %r12 0.00 : b9589: 41 5d pop %r13 0.00 : b958b: 41 5e pop %r14 0.00 : b958d: 41 5f pop %r15 0.00 : b958f: c9 leaveq 0.00 : b9590: c3 retq 0.00 : b9591: 4c 89 c7 mov %r8,%rdi 0.00 : b9594: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : b959b: ba 10 00 00 00 mov $0x10,%edx 0.00 : b95a0: be ff ff ff ff mov $0xffffffff,%esi 0.00 : b95a5: e8 c6 9e fc ff callq 83470 <__GI_memset> 0.00 : b95aa: 48 8b 8d c8 fe ff ff mov -0x138(%rbp),%rcx 0.00 : b95b1: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : b95b8: 48 8b 81 c8 00 00 00 mov 0xc8(%rcx),%rax 0.00 : b95bf: a8 40 test $0x40,%al 0.00 : b95c1: 0f 85 c5 fe ff ff jne b948c 0.00 : b95c7: e9 b5 fe ff ff jmpq b9481 0.00 : b95cc: 48 81 ec 10 30 00 00 sub $0x3010,%rsp 25.00 : b95d3: c6 85 d6 fe ff ff 00 movb $0x0,-0x12a(%rbp) 0.00 : b95da: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : b95df: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : b95e3: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) 0.00 : b95ea: e9 26 f9 ff ff jmpq b8f15 0.00 : b95ef: 48 8b 9d 00 ff ff ff mov -0x100(%rbp),%rbx 0.00 : b95f6: f6 43 0a 40 testb $0x40,0xa(%rbx) 0.00 : b95fa: 0f 85 af fa ff ff jne b90af 0.00 : b9600: e9 df fe ff ff jmpq b94e4 0.00 : b9605: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : b960c: 48 8b 88 a8 00 00 00 mov 0xa8(%rax),%rcx 0.00 : b9613: 48 23 8d 70 ff ff ff and -0x90(%rbp),%rcx 0.00 : b961a: 48 89 c3 mov %rax,%rbx 0.00 : b961d: 48 89 8d 70 ff ff ff mov %rcx,-0x90(%rbp) 0.00 : b9624: 48 8b 90 b0 00 00 00 mov 0xb0(%rax),%rdx 0.00 : b962b: 48 23 95 78 ff ff ff and -0x88(%rbp),%rdx 0.00 : b9632: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) 0.00 : b9639: 48 8b 80 b8 00 00 00 mov 0xb8(%rax),%rax 0.00 : b9640: 48 09 d1 or %rdx,%rcx 0.00 : b9643: 48 23 45 80 and -0x80(%rbp),%rax 0.00 : b9647: 48 09 c1 or %rax,%rcx 0.00 : b964a: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : b964e: 48 8b 83 c0 00 00 00 mov 0xc0(%rbx),%rax 0.00 : b9655: 48 23 45 88 and -0x78(%rbp),%rax 0.00 : b9659: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : b965d: 48 09 c1 or %rax,%rcx 0.00 : b9660: e9 91 fa ff ff jmpq b90f6 0.00 : b9665: 4c 89 c7 mov %r8,%rdi 0.00 : b9668: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : b966f: ba 20 00 00 00 mov $0x20,%edx 0.00 : b9674: be ff ff ff ff mov $0xffffffff,%esi 0.00 : b9679: e8 f2 9d fc ff callq 83470 <__GI_memset> 0.00 : b967e: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : b9685: e9 e5 fd ff ff jmpq b946f 0.00 : b968a: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : b9691: f6 46 0a 40 testb $0x40,0xa(%rsi) 0.00 : b9695: 0f 84 76 fa ff ff je b9111 0.00 : b969b: e9 44 fe ff ff jmpq b94e4 0.00 : b96a0: 31 c9 xor %ecx,%ecx 0.00 : b96a2: 31 d2 xor %edx,%edx 0.00 : b96a4: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : b96ab: 48 8b 84 16 a8 00 00 mov 0xa8(%rsi,%rdx,1),%rax 0.00 : b96b2: 00 0.00 : b96b3: 48 f7 d0 not %rax 0.00 : b96b6: 49 23 04 10 and (%r8,%rdx,1),%rax 0.00 : b96ba: 49 89 04 10 mov %rax,(%r8,%rdx,1) 0.00 : b96be: 48 83 c2 08 add $0x8,%rdx 0.00 : b96c2: 48 09 c1 or %rax,%rcx 0.00 : b96c5: 48 83 fa 20 cmp $0x20,%rdx 0.00 : b96c9: 75 d9 jne b96a4 0.00 : b96cb: 48 85 c9 test %rcx,%rcx 0.00 : b96ce: 0f 84 0b f9 ff ff je b8fdf 0.00 : b96d4: e9 8f fa ff ff jmpq b9168 0.00 : b96d9: 45 85 ff test %r15d,%r15d 0.00 : b96dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b96e0: 0f 84 56 fe ff ff je b953c 0.00 : b96e6: 48 8d 5d b0 lea -0x50(%rbp),%rbx 0.00 : b96ea: 41 8d 77 01 lea 0x1(%r15),%esi 0.00 : b96ee: 48 89 9d a8 fe ff ff mov %rbx,-0x158(%rbp) 0.00 : b96f5: 48 89 df mov %rbx,%rdi 0.00 : b96f8: e8 33 82 ff ff callq b1930 0.00 : b96fd: 85 c0 test %eax,%eax 0.00 : b96ff: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : b9702: 0f 85 dd 03 00 00 jne b9ae5 0.00 : b9708: 43 8d 04 7f lea (%r15,%r15,2),%eax 0.00 : b970c: 48 63 d8 movslq %eax,%rbx 0.00 : b970f: 48 8d 3c dd 00 30 00 lea 0x3000(,%rbx,8),%rdi 0.00 : b9716: 00 0.00 : b9717: 48 81 ff 00 10 00 00 cmp $0x1000,%rdi 0.00 : b971e: 0f 87 1c 04 00 00 ja b9b40 0.00 : b9724: 48 8d 04 dd 1e 00 00 lea 0x1e(,%rbx,8),%rax 0.00 : b972b: 00 0.00 : b972c: c6 85 d7 fe ff ff 00 movb $0x0,-0x129(%rbp) 0.00 : b9733: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : b9737: 48 29 c4 sub %rax,%rsp 0.00 : b973a: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : b973f: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : b9743: 48 89 b5 d8 fe ff ff mov %rsi,-0x128(%rbp) 0.00 : b974a: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : b9751: 49 63 c7 movslq %r15d,%rax 0.00 : b9754: 48 8d 4d 90 lea -0x70(%rbp),%rcx 0.00 : b9758: 48 c1 e0 03 shl $0x3,%rax 0.00 : b975c: 48 8d 5d cc lea -0x34(%rbp),%rbx 0.00 : b9760: 4c 8b b5 b8 fe ff ff mov -0x148(%rbp),%r14 0.00 : b9767: 48 89 8d b0 fe ff ff mov %rcx,-0x150(%rbp) 0.00 : b976e: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : b9775: 00 0.00 : b9776: 45 31 ed xor %r13d,%r13d 0.00 : b9779: 48 01 c2 add %rax,%rdx 0.00 : b977c: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : b9783: 00 0.00 : b9784: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : b978b: 00 0.00 : b978c: 48 01 d0 add %rdx,%rax 0.00 : b978f: 48 89 95 e0 fe ff ff mov %rdx,-0x120(%rbp) 0.00 : b9796: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : b979d: 00 0.00 : b979e: 48 89 85 e8 fe ff ff mov %rax,-0x118(%rbp) 0.00 : b97a5: c7 85 28 ff ff ff 00 movl $0x0,-0xd8(%rbp) 0.00 : b97ac: 00 00 00 0.00 : b97af: c7 85 d0 fe ff ff 00 movl $0x0,-0x130(%rbp) 0.00 : b97b6: 00 00 00 0.00 : b97b9: 48 89 9d a0 fe ff ff mov %rbx,-0x160(%rbp) 0.00 : b97c0: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : b97c7: c7 45 b4 00 00 00 00 movl $0x0,-0x4c(%rbp) 0.00 : b97ce: 42 8b 74 6e 04 mov 0x4(%rsi,%r13,2),%esi 0.00 : b97d3: 85 f6 test %esi,%esi 0.00 : b97d5: 7e 64 jle b983b 0.00 : b97d7: 45 31 e4 xor %r12d,%r12d 0.00 : b97da: 31 db xor %ebx,%ebx 0.00 : b97dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b97e0: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : b97e7: 48 8b 8d c8 fe ff ff mov -0x138(%rbp),%rcx 0.00 : b97ee: 4a 8b 44 6a 08 mov 0x8(%rdx,%r13,2),%rax 0.00 : b97f3: 48 63 14 18 movslq (%rax,%rbx,1),%rdx 0.00 : b97f7: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : b97fb: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : b97fe: 83 f8 ff cmp $0xffffffff,%eax 0.00 : b9801: 74 22 je b9825 0.00 : b9803: 48 63 f0 movslq %eax,%rsi 0.00 : b9806: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : b980d: 48 c1 e6 04 shl $0x4,%rsi 0.00 : b9811: 48 03 71 30 add 0x30(%rcx),%rsi 0.00 : b9815: e8 66 8f ff ff callq b2780 0.00 : b981a: 85 c0 test %eax,%eax 0.00 : b981c: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : b981f: 0f 85 ab 02 00 00 jne b9ad0 0.00 : b9825: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : b982c: 41 83 c4 01 add $0x1,%r12d 0.00 : b9830: 48 83 c3 04 add $0x4,%rbx 0.00 : b9834: 46 39 64 6e 04 cmp %r12d,0x4(%rsi,%r13,2) 0.00 : b9839: 7f a5 jg b97e0 0.00 : b983b: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : b9842: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : b9849: 31 c9 xor %ecx,%ecx 0.00 : b984b: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : b9852: e8 79 c1 ff ff callq b59d0 0.00 : b9857: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : b985e: 48 85 c0 test %rax,%rax 0.00 : b9861: 4a 89 04 2a mov %rax,(%rdx,%r13,1) 0.00 : b9865: 0f 84 87 03 00 00 je b9bf2 0.00 : b986b: 80 78 50 00 cmpb $0x0,0x50(%rax) 0.00 : b986f: 0f 88 bb 01 00 00 js b9a30 0.00 : b9875: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : b987c: 4a 89 04 29 mov %rax,(%rcx,%r13,1) 0.00 : b9880: 48 8b 9d d8 fe ff ff mov -0x128(%rbp),%rbx 0.00 : b9887: 48 8b b5 e8 fe ff ff mov -0x118(%rbp),%rsi 0.00 : b988e: 4a 8b 04 2b mov (%rbx,%r13,1),%rax 0.00 : b9892: 4a 89 04 2e mov %rax,(%rsi,%r13,1) 0.00 : b9896: 31 d2 xor %edx,%edx 0.00 : b9898: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx 0.00 : b989f: 49 8b 04 16 mov (%r14,%rdx,1),%rax 0.00 : b98a3: 48 09 04 11 or %rax,(%rcx,%rdx,1) 0.00 : b98a7: 48 83 c2 08 add $0x8,%rdx 0.00 : b98ab: 48 83 fa 20 cmp $0x20,%rdx 0.00 : b98af: 75 e7 jne b9898 0.00 : b98b1: 83 85 28 ff ff ff 01 addl $0x1,-0xd8(%rbp) 0.00 : b98b8: 49 83 c6 20 add $0x20,%r14 0.00 : b98bc: 49 83 c5 08 add $0x8,%r13 0.00 : b98c0: 44 39 bd 28 ff ff ff cmp %r15d,-0xd8(%rbp) 0.00 : b98c7: 0f 8c f3 fe ff ff jl b97c0 0.00 : b98cd: 8b 9d d0 fe ff ff mov -0x130(%rbp),%ebx 0.00 : b98d3: 85 db test %ebx,%ebx 0.00 : b98d5: 0f 85 40 03 00 00 jne b9c1b 0.00 : b98db: be 00 01 00 00 mov $0x100,%esi 0.00 : b98e0: bf 08 00 00 00 mov $0x8,%edi 0.00 : b98e5: e8 a6 4f f6 ff callq 1e890 0.00 : b98ea: 48 8b 9d c0 fe ff ff mov -0x140(%rbp),%rbx 0.00 : b98f1: 48 85 c0 test %rax,%rax 0.00 : b98f4: 49 89 c4 mov %rax,%r12 0.00 : b98f7: 48 89 43 40 mov %rax,0x40(%rbx) 0.00 : b98fb: 0f 84 cf 01 00 00 je b9ad0 0.00 : b9901: 48 89 c3 mov %rax,%rbx 0.00 : b9904: 45 31 db xor %r11d,%r11d 0.00 : b9907: 45 31 d2 xor %r10d,%r10d 0.00 : b990a: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : b9911: 4a 8b 34 10 mov (%rax,%r10,1),%rsi 0.00 : b9915: 48 85 f6 test %rsi,%rsi 0.00 : b9918: 74 3c je b9956 0.00 : b991a: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : b9921: 49 63 c3 movslq %r11d,%rax 0.00 : b9924: 49 89 d9 mov %rbx,%r9 0.00 : b9927: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : b992d: 4c 8d ac c2 20 10 00 lea 0x1020(%rdx,%rax,8),%r13 0.00 : b9934: 00 0.00 : b9935: eb 0c jmp b9943 0.00 : b9937: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b993e: 00 00 25.00 : b9940: 4d 01 c0 add %r8,%r8 0.00 : b9943: 40 f6 c6 01 test $0x1,%sil 0.00 : b9947: 0f 85 44 02 00 00 jne b9b91 0.00 : b994d: 49 83 c1 08 add $0x8,%r9 0.00 : b9951: 48 d1 ee shr %rsi 0.00 : b9954: 75 ea jne b9940 0.00 : b9956: 41 83 c3 01 add $0x1,%r11d 0.00 : b995a: 49 83 c2 08 add $0x8,%r10 0.00 : b995e: 48 81 c3 00 02 00 00 add $0x200,%rbx 0.00 : b9965: 41 83 fb 04 cmp $0x4,%r11d 0.00 : b9969: 75 9f jne b990a 0.00 : b996b: f6 45 91 04 testb $0x4,-0x6f(%rbp) 0.00 : b996f: 74 4b je b99bc 0.00 : b9971: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : b9978: 31 c0 xor %eax,%eax 0.00 : b997a: eb 0d jmp b9989 0.00 : b997c: 48 83 c0 01 add $0x1,%rax 0.00 : b9980: 48 83 c2 20 add $0x20,%rdx 0.00 : b9984: 41 39 c7 cmp %eax,%r15d 0.00 : b9987: 7e 33 jle b99bc 0.00 : b9989: f6 82 01 10 00 00 04 testb $0x4,0x1001(%rdx) 0.00 : b9990: 74 ea je b997c 0.00 : b9992: 48 8b 8d e8 fe ff ff mov -0x118(%rbp),%rcx 0.00 : b9999: 48 8d 14 c1 lea (%rcx,%rax,8),%rdx 0.00 : b999d: 48 8b 02 mov (%rdx),%rax 0.00 : b99a0: 49 89 44 24 50 mov %rax,0x50(%r12) 0.00 : b99a5: 44 8b 9d d0 fe ff ff mov -0x130(%rbp),%r11d 0.00 : b99ac: 45 85 db test %r11d,%r11d 0.00 : b99af: 74 0b je b99bc 0.00 : b99b1: 48 8b 02 mov (%rdx),%rax 0.00 : b99b4: 49 89 84 24 50 08 00 mov %rax,0x850(%r12) 0.00 : b99bb: 00 0.00 : b99bc: 80 bd d7 fe ff ff 00 cmpb $0x0,-0x129(%rbp) 0.00 : b99c3: 0f 85 b7 01 00 00 jne b9b80 0.00 : b99c9: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : b99cd: 45 31 e4 xor %r12d,%r12d 0.00 : b99d0: 31 db xor %ebx,%ebx 0.00 : b99d2: e8 c9 4e f6 ff callq 1e8a0 0.00 : b99d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b99de: 00 00 0.00 : b99e0: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : b99e7: 41 83 c4 01 add $0x1,%r12d 0.00 : b99eb: 48 8b 7c 1e 08 mov 0x8(%rsi,%rbx,1),%rdi 0.00 : b99f0: 48 83 c3 10 add $0x10,%rbx 0.00 : b99f4: e8 a7 4e f6 ff callq 1e8a0 0.00 : b99f9: 45 39 fc cmp %r15d,%r12d 0.00 : b99fc: 7c e2 jl b99e0 0.00 : b99fe: 80 bd d6 fe ff ff 00 cmpb $0x0,-0x12a(%rbp) 0.00 : b9a05: b8 01 00 00 00 mov $0x1,%eax 0.00 : b9a0a: 0f 84 72 fb ff ff je b9582 0.00 : b9a10: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : b9a17: e8 84 4e f6 ff callq 1e8a0 0.00 : b9a1c: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : b9a20: b8 01 00 00 00 mov $0x1,%eax 0.00 : b9a25: 5b pop %rbx 0.00 : b9a26: 41 5c pop %r12 0.00 : b9a28: 41 5d pop %r13 0.00 : b9a2a: 41 5e pop %r14 0.00 : b9a2c: 41 5f pop %r15 0.00 : b9a2e: c9 leaveq 0.00 : b9a2f: c3 retq 0.00 : b9a30: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : b9a37: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : b9a3e: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b9a43: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : b9a4a: e8 81 bf ff ff callq b59d0 0.00 : b9a4f: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : b9a56: 48 85 c0 test %rax,%rax 0.00 : b9a59: 4a 89 04 29 mov %rax,(%rcx,%r13,1) 0.00 : b9a5d: 0f 84 92 02 00 00 je b9cf5 0.00 : b9a63: 48 8b 9d d8 fe ff ff mov -0x128(%rbp),%rbx 0.00 : b9a6a: 4a 3b 04 2b cmp (%rbx,%r13,1),%rax 0.00 : b9a6e: 74 20 je b9a90 0.00 : b9a70: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : b9a77: b8 01 00 00 00 mov $0x1,%eax 0.00 : b9a7c: 83 be a4 00 00 00 02 cmpl $0x2,0xa4(%rsi) 0.00 : b9a83: 0f 4c 85 d0 fe ff ff cmovl -0x130(%rbp),%eax 0.00 : b9a8a: 89 85 d0 fe ff ff mov %eax,-0x130(%rbp) 0.00 : b9a90: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : b9a97: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : b9a9e: b9 02 00 00 00 mov $0x2,%ecx 0.00 : b9aa3: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : b9aaa: e8 21 bf ff ff callq b59d0 0.00 : b9aaf: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : b9ab6: 48 85 c0 test %rax,%rax 0.00 : b9ab9: 4a 89 04 2a mov %rax,(%rdx,%r13,1) 0.00 : b9abd: 0f 85 d3 fd ff ff jne b9896 0.00 : b9ac3: 44 8b 65 cc mov -0x34(%rbp),%r12d 0.00 : b9ac7: 45 85 e4 test %r12d,%r12d 0.00 : b9aca: 0f 84 c6 fd ff ff je b9896 0.00 : b9ad0: 80 bd d7 fe ff ff 00 cmpb $0x0,-0x129(%rbp) 0.00 : b9ad7: 74 0c je b9ae5 0.00 : b9ad9: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : b9ae0: e8 bb 4d f6 ff callq 1e8a0 0.00 : b9ae5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : b9ae9: 45 31 e4 xor %r12d,%r12d 0.00 : b9aec: 31 db xor %ebx,%ebx 0.00 : b9aee: e8 ad 4d f6 ff callq 1e8a0 0.00 : b9af3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b9af8: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : b9aff: 41 83 c4 01 add $0x1,%r12d 0.00 : b9b03: 48 8b 7c 18 08 mov 0x8(%rax,%rbx,1),%rdi 0.00 : b9b08: 48 83 c3 10 add $0x10,%rbx 0.00 : b9b0c: e8 8f 4d f6 ff callq 1e8a0 0.00 : b9b11: 45 39 fc cmp %r15d,%r12d 0.00 : b9b14: 7c e2 jl b9af8 0.00 : b9b16: 80 bd d6 fe ff ff 00 cmpb $0x0,-0x12a(%rbp) 0.00 : b9b1d: 0f 84 5d fa ff ff je b9580 0.00 : b9b23: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : b9b2a: e8 71 4d f6 ff callq 1e8a0 0.00 : b9b2f: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : b9b33: 31 c0 xor %eax,%eax 0.00 : b9b35: 5b pop %rbx 0.00 : b9b36: 41 5c pop %r12 0.00 : b9b38: 41 5d pop %r13 0.00 : b9b3a: 41 5e pop %r14 0.00 : b9b3c: 41 5f pop %r15 0.00 : b9b3e: c9 leaveq 0.00 : b9b3f: c3 retq 0.00 : b9b40: e8 7b e0 02 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : b9b45: 85 c0 test %eax,%eax 0.00 : b9b47: 0f 85 d7 fb ff ff jne b9724 0.00 : b9b4d: 48 8d 3c dd 00 00 00 lea 0x0(,%rbx,8),%rdi 0.00 : b9b54: 00 0.00 : b9b55: e8 f6 4c f6 ff callq 1e850 0.00 : b9b5a: 48 85 c0 test %rax,%rax 0.00 : b9b5d: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) 0.00 : b9b64: c6 85 d7 fe ff ff 01 movb $0x1,-0x129(%rbp) 0.00 : b9b6b: 0f 85 d9 fb ff ff jne b974a 0.00 : b9b71: e9 6f ff ff ff jmpq b9ae5 0.00 : b9b76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b9b7d: 00 00 00 0.00 : b9b80: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : b9b87: e8 14 4d f6 ff callq 1e8a0 0.00 : b9b8c: e9 38 fe ff ff jmpq b99c9 0.00 : b9b91: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : b9b98: 31 c0 xor %eax,%eax 0.00 : b9b9a: 4e 85 84 11 00 10 00 test %r8,0x1000(%rcx,%r10,1) 0.00 : b9ba1: 00 0.00 : b9ba2: 75 2a jne b9bce 0.00 : b9ba4: 4c 89 e9 mov %r13,%rcx 0.00 : b9ba7: ba 01 00 00 00 mov $0x1,%edx 0.00 : b9bac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b9bb0: 4c 89 c0 mov %r8,%rax 25.00 : b9bb3: 48 23 01 and (%rcx),%rax 0.00 : b9bb6: 48 89 d7 mov %rdx,%rdi 0.00 : b9bb9: 48 83 c1 20 add $0x20,%rcx 0.00 : b9bbd: 48 83 c2 01 add $0x1,%rdx 0.00 : b9bc1: 48 85 c0 test %rax,%rax 0.00 : b9bc4: 74 ea je b9bb0 0.00 : b9bc6: 48 8d 04 fd 00 00 00 lea 0x0(,%rdi,8),%rax 0.00 : b9bcd: 00 0.00 : b9bce: 48 8b 95 c8 fe ff ff mov -0x138(%rbp),%rdx 0.00 : b9bd5: 4e 85 84 12 a8 00 00 test %r8,0xa8(%rdx,%r10,1) 0.00 : b9bdc: 00 0.00 : b9bdd: 74 29 je b9c08 0.00 : b9bdf: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : b9be6: 48 8b 04 01 mov (%rcx,%rax,1),%rax 0.00 : b9bea: 49 89 01 mov %rax,(%r9) 0.00 : b9bed: e9 5b fd ff ff jmpq b994d 0.00 : b9bf2: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : b9bf5: 85 c9 test %ecx,%ecx 0.00 : b9bf7: 0f 84 6e fc ff ff je b986b 0.00 : b9bfd: e9 ce fe ff ff jmpq b9ad0 0.00 : b9c02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 25.00 : b9c08: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : b9c0f: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : b9c13: 49 89 01 mov %rax,(%r9) 0.00 : b9c16: e9 32 fd ff ff jmpq b994d 0.00 : b9c1b: be 00 02 00 00 mov $0x200,%esi 0.00 : b9c20: bf 08 00 00 00 mov $0x8,%edi 0.00 : b9c25: e8 66 4c f6 ff callq 1e890 0.00 : b9c2a: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : b9c31: 48 85 c0 test %rax,%rax 0.00 : b9c34: 49 89 c4 mov %rax,%r12 0.00 : b9c37: 48 89 41 48 mov %rax,0x48(%rcx) 0.00 : b9c3b: 0f 84 8f fe ff ff je b9ad0 0.00 : b9c41: 49 89 c2 mov %rax,%r10 0.00 : b9c44: 45 31 ed xor %r13d,%r13d 0.00 : b9c47: 45 31 db xor %r11d,%r11d 0.00 : b9c4a: 48 8b 9d b0 fe ff ff mov -0x150(%rbp),%rbx 0.00 : b9c51: 4e 8b 04 1b mov (%rbx,%r11,1),%r8 0.00 : b9c55: 4d 85 c0 test %r8,%r8 0.00 : b9c58: 0f 84 a7 00 00 00 je b9d05 0.00 : b9c5e: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : b9c65: 49 63 c5 movslq %r13d,%rax 0.00 : b9c68: 49 8d 9a 00 08 00 00 lea 0x800(%r10),%rbx 0.00 : b9c6f: 4d 89 d1 mov %r10,%r9 0.00 : b9c72: bf 01 00 00 00 mov $0x1,%edi 0.00 : b9c77: 4c 8d b4 c6 20 10 00 lea 0x1020(%rsi,%rax,8),%r14 0.00 : b9c7e: 00 0.00 : b9c7f: eb 17 jmp b9c98 0.00 : b9c81: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b9c88: 49 83 c1 08 add $0x8,%r9 0.00 : b9c8c: 48 83 c3 08 add $0x8,%rbx 0.00 : b9c90: 49 d1 e8 shr %r8 0.00 : b9c93: 74 70 je b9d05 0.00 : b9c95: 48 01 ff add %rdi,%rdi 0.00 : b9c98: 41 f6 c0 01 test $0x1,%r8b 0.00 : b9c9c: 74 ea je b9c88 0.00 : b9c9e: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : b9ca5: 31 d2 xor %edx,%edx 0.00 : b9ca7: 4a 85 bc 18 00 10 00 test %rdi,0x1000(%rax,%r11,1) 0.00 : b9cae: 00 0.00 : b9caf: 75 26 jne b9cd7 0.00 : b9cb1: 4c 89 f1 mov %r14,%rcx 0.00 : b9cb4: ba 01 00 00 00 mov $0x1,%edx 0.00 : b9cb9: 48 89 f8 mov %rdi,%rax 0.00 : b9cbc: 48 23 01 and (%rcx),%rax 0.00 : b9cbf: 48 89 d6 mov %rdx,%rsi 0.00 : b9cc2: 48 83 c1 20 add $0x20,%rcx 0.00 : b9cc6: 48 83 c2 01 add $0x1,%rdx 0.00 : b9cca: 48 85 c0 test %rax,%rax 0.00 : b9ccd: 74 ea je b9cb9 0.00 : b9ccf: 48 8d 14 f5 00 00 00 lea 0x0(,%rsi,8),%rdx 0.00 : b9cd6: 00 0.00 : b9cd7: 48 8b 8d d8 fe ff ff mov -0x128(%rbp),%rcx 0.00 : b9cde: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : b9ce2: 49 89 01 mov %rax,(%r9) 0.00 : b9ce5: 48 8b b5 e0 fe ff ff mov -0x120(%rbp),%rsi 0.00 : b9cec: 48 8b 04 16 mov (%rsi,%rdx,1),%rax 0.00 : b9cf0: 48 89 03 mov %rax,(%rbx) 0.00 : b9cf3: eb 93 jmp b9c88 0.00 : b9cf5: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : b9cf8: 85 d2 test %edx,%edx 0.00 : b9cfa: 0f 84 63 fd ff ff je b9a63 0.00 : b9d00: e9 cb fd ff ff jmpq b9ad0 0.00 : b9d05: 41 83 c5 01 add $0x1,%r13d 0.00 : b9d09: 49 83 c3 08 add $0x8,%r11 0.00 : b9d0d: 49 81 c2 00 02 00 00 add $0x200,%r10 0.00 : b9d14: 41 83 fd 04 cmp $0x4,%r13d 0.00 : b9d18: 0f 85 2c ff ff ff jne b9c4a 0.00 : b9d1e: 66 90 xchg %ax,%ax 0.00 : b9d20: e9 46 fc ff ff jmpq b996b Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000befa0 : 50.00 : befa0: 41 57 push %r15 0.00 : befa2: 49 89 d7 mov %rdx,%r15 0.00 : befa5: 48 89 fa mov %rdi,%rdx 0.00 : befa8: 41 56 push %r14 0.00 : befaa: 41 55 push %r13 0.00 : befac: 41 54 push %r12 0.00 : befae: 55 push %rbp 0.00 : befaf: 53 push %rbx 0.00 : befb0: 48 81 ec d8 00 00 00 sub $0xd8,%rsp 0.00 : befb7: 48 89 7c 24 30 mov %rdi,0x30(%rsp) 0.00 : befbc: 48 89 74 24 28 mov %rsi,0x28(%rsp) 0.00 : befc1: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : befc6: c7 84 24 cc 00 00 00 movl $0x0,0xcc(%rsp) 0.00 : befcd: 00 00 00 00 0.00 : befd1: 0f b6 47 38 movzbl 0x38(%rdi),%eax 0.00 : befd5: 48 89 4f 18 mov %rcx,0x18(%rdi) 0.00 : befd9: 48 c7 47 10 00 00 00 movq $0x0,0x10(%rdi) 0.00 : befe0: 00 0.00 : befe1: 48 c7 47 30 00 00 00 movq $0x0,0x30(%rdi) 0.00 : befe8: 00 0.00 : befe9: 83 e0 90 and $0xffffff90,%eax 0.00 : befec: 88 47 38 mov %al,0x38(%rdi) 0.00 : befef: 48 81 7a 08 df 00 00 cmpq $0xdf,0x8(%rdx) 0.00 : beff6: 00 0.00 : beff7: 48 8b 3f mov (%rdi),%rdi 0.00 : beffa: 49 89 fe mov %rdi,%r14 0.00 : beffd: 0f 86 e3 0b 00 00 jbe bfbe6 0.00 : bf003: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : bf008: b9 1c 00 00 00 mov $0x1c,%ecx 0.00 : bf00d: 4c 89 f7 mov %r14,%rdi 0.00 : bf010: 48 c7 40 10 e0 00 00 movq $0xe0,0x10(%rax) 0.00 : bf017: 00 0.00 : bf018: 31 c0 xor %eax,%eax 0.00 : bf01a: 49 83 ff ff cmp $0xffffffffffffffff,%r15 0.00 : bf01e: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : bf021: 41 c7 86 80 00 00 00 movl $0xf,0x80(%r14) 0.00 : bf028: 0f 00 00 00 0.00 : bf02c: 0f 84 9e 05 00 00 je bf5d0 0.00 : bf032: 49 8d 7f 01 lea 0x1(%r15),%rdi 0.00 : bf036: 31 db xor %ebx,%ebx 0.00 : bf038: 49 89 7e 08 mov %rdi,0x8(%r14) 0.00 : bf03c: 48 c1 e7 04 shl $0x4,%rdi 0.00 : bf040: e8 0b f8 f5 ff callq 1e850 0.00 : bf045: 4d 85 ff test %r15,%r15 0.00 : bf048: 49 89 06 mov %rax,(%r14) 0.00 : bf04b: be 01 00 00 00 mov $0x1,%esi 0.00 : bf050: b8 01 00 00 00 mov $0x1,%eax 0.00 : bf055: 74 15 je bf06c 0.00 : bf057: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bf05e: 00 00 0.00 : bf060: 01 c0 add %eax,%eax 0.00 : bf062: 89 c6 mov %eax,%esi 0.00 : bf064: 49 39 f7 cmp %rsi,%r15 0.00 : bf067: 73 f7 jae bf060 0.00 : bf069: 8d 58 ff lea -0x1(%rax),%ebx 0.00 : bf06c: bf 10 00 00 00 mov $0x10,%edi 0.00 : bf071: e8 1a f8 f5 ff callq 1e890 0.00 : bf076: 64 4c 8b 0c 25 00 00 mov %fs:0x0,%r9 0.00 : bf07d: 00 00 0.00 : bf07f: 4c 8b 05 02 2d 2b 00 mov 0x2b2d02(%rip),%r8 # 371d88 <_DYNAMIC+0x228> 0.00 : bf086: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : bf08a: 41 89 9e 84 00 00 00 mov %ebx,0x84(%r14) 0.00 : bf091: 4b 8b 04 01 mov (%r9,%r8,1),%rax 0.00 : bf095: 48 8b 00 mov (%rax),%rax 0.00 : bf098: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : bf09e: 83 f8 06 cmp $0x6,%eax 0.00 : bf0a1: 41 89 86 a4 00 00 00 mov %eax,0xa4(%r14) 0.00 : bf0a8: 0f 84 59 09 00 00 je bfa07 0.00 : bf0ae: 41 0f b6 96 a0 00 00 movzbl 0xa0(%r14),%edx 0.00 : bf0b5: 00 0.00 : bf0b6: 4b 8b 04 01 mov (%r9,%r8,1),%rax 0.00 : bf0ba: 48 8b 00 mov (%rax),%rax 0.00 : bf0bd: 8b 80 70 02 00 00 mov 0x270(%rax),%eax 0.00 : bf0c3: 85 c0 test %eax,%eax 0.00 : bf0c5: 0f 95 c0 setne %al 0.00 : bf0c8: 83 e2 f7 and $0xfffffff7,%edx 0.00 : bf0cb: c1 e0 03 shl $0x3,%eax 0.00 : bf0ce: 09 c2 or %eax,%edx 0.00 : bf0d0: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : bf0d7: 01 0.00 : bf0d8: 41 88 96 a0 00 00 00 mov %dl,0xa0(%r14) 0.00 : bf0df: 7e 14 jle bf0f5 0.00 : bf0e1: 83 e2 04 and $0x4,%edx 0.00 : bf0e4: 0f 84 56 09 00 00 je bfa40 0.00 : bf0ea: 48 8d 15 2f 92 07 00 lea 0x7922f(%rip),%rdx # 138320 0.00 : bf0f1: 49 89 56 78 mov %rdx,0x78(%r14) 0.00 : bf0f5: 49 83 3e 00 cmpq $0x0,(%r14) 0.00 : bf0f9: 0f 84 d1 04 00 00 je bf5d0 0.00 : bf0ff: 49 83 7e 40 00 cmpq $0x0,0x40(%r14) 0.00 : bf104: 0f 84 c6 04 00 00 je bf5d0 0.00 : bf10a: c7 84 24 cc 00 00 00 movl $0x0,0xcc(%rsp) 0.00 : bf111: 00 00 00 00 0.00 : bf115: 41 c7 86 d8 00 00 00 movl $0x0,0xd8(%r14) 0.00 : bf11c: 00 00 00 00 0.00 : bf120: 48 8d 4c 24 40 lea 0x40(%rsp),%rcx 0.00 : bf125: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : bf12a: 31 c0 xor %eax,%eax 0.00 : bf12c: 44 89 fb mov %r15d,%ebx 0.00 : bf12f: 48 8b 6a 28 mov 0x28(%rdx),%rbp 0.00 : bf133: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : bf138: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : bf13d: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf142: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : bf145: 44 89 bc 24 80 00 00 mov %r15d,0x80(%rsp) 0.00 : bf14c: 00 0.00 : bf14d: 44 89 7c 24 7c mov %r15d,0x7c(%rsp) 0.00 : bf152: 48 89 ac 24 90 00 00 mov %rbp,0x90(%rsp) 0.00 : bf159: 00 0.00 : bf15a: 44 8b 64 24 20 mov 0x20(%rsp),%r12d 0.00 : bf15f: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : bf164: 41 81 e4 00 00 40 00 and $0x400000,%r12d 0.00 : bf16b: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : bf170: 0f 95 c0 setne %al 0.00 : bf173: 48 85 ed test %rbp,%rbp 0.00 : bf176: 0f 95 c2 setne %dl 0.00 : bf179: 88 84 24 a0 00 00 00 mov %al,0xa0(%rsp) 0.00 : bf180: 09 d0 or %edx,%eax 0.00 : bf182: 88 84 24 a3 00 00 00 mov %al,0xa3(%rsp) 0.00 : bf189: 41 8b 86 a4 00 00 00 mov 0xa4(%r14),%eax 0.00 : bf190: 89 84 24 a8 00 00 00 mov %eax,0xa8(%rsp) 0.00 : bf197: 41 0f b6 86 a0 00 00 movzbl 0xa0(%r14),%eax 0.00 : bf19e: 00 0.00 : bf19f: c0 e8 02 shr $0x2,%al 0.00 : bf1a2: 83 e0 01 and $0x1,%eax 0.00 : bf1a5: 88 84 24 a1 00 00 00 mov %al,0xa1(%rsp) 0.00 : bf1ac: 41 0f b6 86 a0 00 00 movzbl 0xa0(%r14),%eax 0.00 : bf1b3: 00 0.00 : bf1b4: 44 89 bc 24 88 00 00 mov %r15d,0x88(%rsp) 0.00 : bf1bb: 00 0.00 : bf1bc: 44 89 bc 24 84 00 00 mov %r15d,0x84(%rsp) 0.00 : bf1c3: 00 0.00 : bf1c4: c0 e8 03 shr $0x3,%al 0.00 : bf1c7: 83 e0 01 and $0x1,%eax 0.00 : bf1ca: 45 85 ff test %r15d,%r15d 0.00 : bf1cd: 88 84 24 a2 00 00 00 mov %al,0xa2(%rsp) 0.00 : bf1d4: 7e 15 jle bf1eb 0.00 : bf1d6: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf1db: 8d 73 01 lea 0x1(%rbx),%esi 0.00 : bf1de: e8 cd 33 ff ff callq b25b0 0.00 : bf1e3: 85 c0 test %eax,%eax 0.00 : bf1e5: 0f 85 dd 08 00 00 jne bfac8 0.00 : bf1eb: 80 bc 24 a3 00 00 00 cmpb $0x0,0xa3(%rsp) 0.00 : bf1f2: 00 0.00 : bf1f3: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : bf1f8: 74 05 je bf1ff 0.00 : bf1fa: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : bf1ff: 45 85 e4 test %r12d,%r12d 0.00 : bf202: 48 89 74 24 48 mov %rsi,0x48(%rsp) 0.00 : bf207: 0f 84 43 03 00 00 je bf550 0.00 : bf20d: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : bf214: 01 0.00 : bf215: 7f 31 jg bf248 0.00 : bf217: e9 b8 08 00 00 jmpq bfad4 0.00 : bf21c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bf220: 41 8b 86 a4 00 00 00 mov 0xa4(%r14),%eax 0.00 : bf227: 03 44 24 6c add 0x6c(%rsp),%eax 0.00 : bf22b: 8b 54 24 74 mov 0x74(%rsp),%edx 0.00 : bf22f: 39 c2 cmp %eax,%edx 0.00 : bf231: 7f 2d jg bf260 0.00 : bf233: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf238: 8d 34 12 lea (%rdx,%rdx,1),%esi 0.00 : bf23b: e8 70 33 ff ff callq b25b0 0.00 : bf240: 85 c0 test %eax,%eax 0.00 : bf242: 0f 85 80 08 00 00 jne bfac8 0.00 : bf248: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf24d: e8 ee 56 ff ff callq b4940 0.00 : bf252: 85 c0 test %eax,%eax 0.00 : bf254: 0f 85 6e 08 00 00 jne bfac8 0.00 : bf25a: 3b 5c 24 70 cmp 0x70(%rsp),%ebx 0.00 : bf25e: 7f c0 jg bf220 0.00 : bf260: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : bf265: c7 84 24 cc 00 00 00 movl $0x0,0xcc(%rsp) 0.00 : bf26c: 00 00 00 00 0.00 : bf270: 48 8d 84 24 b0 00 00 lea 0xb0(%rsp),%rax 0.00 : bf277: 00 0.00 : bf278: 48 89 c7 mov %rax,%rdi 0.00 : bf27b: 48 c7 42 30 00 00 00 movq $0x0,0x30(%rdx) 0.00 : bf282: 00 0.00 : bf283: 4c 8b 22 mov (%rdx),%r12 0.00 : bf286: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : bf28b: 49 89 8c 24 c8 00 00 mov %rcx,0xc8(%r12) 0.00 : bf292: 00 0.00 : bf293: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 0.00 : bf298: 48 89 ca mov %rcx,%rdx 0.00 : bf29b: 48 81 ca 00 00 80 00 or $0x800000,%rdx 0.00 : bf2a2: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : bf2a7: e8 b4 55 ff ff callq b4860 0.00 : bf2ac: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf2b1: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : bf2b6: 4c 8d 8c 24 cc 00 00 lea 0xcc(%rsp),%r9 0.00 : bf2bd: 00 0.00 : bf2be: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : bf2c3: 48 8b 74 24 30 mov 0x30(%rsp),%rsi 0.00 : bf2c8: 45 31 c0 xor %r8d,%r8d 0.00 : bf2cb: e8 e0 fb ff ff callq beeb0 0.00 : bf2d0: 8b bc 24 cc 00 00 00 mov 0xcc(%rsp),%edi 0.00 : bf2d7: 48 89 c3 mov %rax,%rbx 0.00 : bf2da: 85 ff test %edi,%edi 0.00 : bf2dc: 0f 85 32 06 00 00 jne bf914 0.00 : bf2e2: 31 d2 xor %edx,%edx 0.00 : bf2e4: 31 f6 xor %esi,%esi 0.00 : bf2e6: b9 02 00 00 00 mov $0x2,%ecx 0.00 : bf2eb: 4c 89 e7 mov %r12,%rdi 0.00 : bf2ee: e8 8d 28 ff ff callq b1b80 0.00 : bf2f3: 48 85 db test %rbx,%rbx 0.00 : bf2f6: 48 89 c5 mov %rax,%rbp 0.00 : bf2f9: 74 13 je bf30e 0.00 : bf2fb: b9 10 00 00 00 mov $0x10,%ecx 0.00 : bf300: 48 89 ea mov %rbp,%rdx 0.00 : bf303: 48 89 de mov %rbx,%rsi 0.00 : bf306: 4c 89 e7 mov %r12,%rdi 0.00 : bf309: e8 72 28 ff ff callq b1b80 0.00 : bf30e: 48 85 ed test %rbp,%rbp 0.00 : bf311: 0f 84 91 07 00 00 je bfaa8 0.00 : bf317: 48 85 c0 test %rax,%rax 0.00 : bf31a: 0f 84 88 07 00 00 je bfaa8 0.00 : bf320: 49 89 46 68 mov %rax,0x68(%r14) 0.00 : bf324: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : bf329: 4c 8b 21 mov (%rcx),%r12 0.00 : bf32c: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : bf331: 48 c1 e7 02 shl $0x2,%rdi 0.00 : bf335: e8 16 f5 f5 ff callq 1e850 0.00 : bf33a: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : bf33f: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : bf344: 48 c1 e7 02 shl $0x2,%rdi 0.00 : bf348: e8 03 f5 f5 ff callq 1e850 0.00 : bf34d: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : bf352: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : bf357: 48 c1 e7 04 shl $0x4,%rdi 0.00 : bf35b: e8 f0 f4 f5 ff callq 1e850 0.00 : bf360: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : bf365: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : bf36a: 48 c1 e7 04 shl $0x4,%rdi 0.00 : bf36e: e8 dd f4 f5 ff callq 1e850 0.00 : bf373: 49 83 7c 24 18 00 cmpq $0x0,0x18(%r12) 0.00 : bf379: 49 89 44 24 30 mov %rax,0x30(%r12) 0.00 : bf37e: 0f 84 34 07 00 00 je bfab8 0.00 : bf384: 49 83 7c 24 20 00 cmpq $0x0,0x20(%r12) 0.00 : bf38a: 0f 84 28 07 00 00 je bfab8 0.00 : bf390: 49 83 7c 24 28 00 cmpq $0x0,0x28(%r12) 0.00 : bf396: 0f 84 1c 07 00 00 je bfab8 0.00 : bf39c: 48 85 c0 test %rax,%rax 0.00 : bf39f: 90 nop 0.00 : bf3a0: 0f 84 12 07 00 00 je bfab8 0.00 : bf3a6: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : bf3ab: 48 8b 78 30 mov 0x30(%rax),%rdi 0.00 : bf3af: 48 c1 e7 02 shl $0x2,%rdi 0.00 : bf3b3: e8 98 f4 f5 ff callq 1e850 0.00 : bf3b8: 48 85 c0 test %rax,%rax 0.00 : bf3bb: 49 89 84 24 d0 00 00 mov %rax,0xd0(%r12) 0.00 : bf3c2: 00 0.00 : bf3c3: 0f 84 8a 00 00 00 je bf453 0.00 : bf3c9: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : bf3ce: 48 83 7a 30 00 cmpq $0x0,0x30(%rdx) 0.00 : bf3d3: 74 28 je bf3fd 0.00 : bf3d5: 31 c9 xor %ecx,%ecx 0.00 : bf3d7: 31 d2 xor %edx,%edx 0.00 : bf3d9: eb 08 jmp bf3e3 0.00 : bf3db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bf3e0: 48 89 ca mov %rcx,%rdx 0.00 : bf3e3: 49 8b 84 24 d0 00 00 mov 0xd0(%r12),%rax 0.00 : bf3ea: 00 0.00 : bf3eb: 89 14 88 mov %edx,(%rax,%rcx,4) 0.00 : bf3ee: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : bf3f3: 48 8d 4a 01 lea 0x1(%rdx),%rcx 0.00 : bf3f7: 48 39 48 30 cmp %rcx,0x30(%rax) 0.00 : bf3fb: 77 e3 ja bf3e0 0.00 : bf3fd: 49 8b 7c 24 68 mov 0x68(%r12),%rdi 0.00 : bf402: 48 8d 35 47 1b ff ff lea -0xe4b9(%rip),%rsi # b0f50 0.00 : bf409: 4c 89 e2 mov %r12,%rdx 0.00 : bf40c: e8 df 1a ff ff callq b0ef0 0.00 : bf411: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : bf416: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : bf41a: 48 85 f6 test %rsi,%rsi 0.00 : bf41d: 0f 84 c0 06 00 00 je bfae3 0.00 : bf423: 49 8b bc 24 d0 00 00 mov 0xd0(%r12),%rdi 0.00 : bf42a: 00 0.00 : bf42b: 31 d2 xor %edx,%edx 0.00 : bf42d: 8b 07 mov (%rdi),%eax 0.00 : bf42f: 85 c0 test %eax,%eax 0.00 : bf431: 74 0c je bf43f 0.00 : bf433: eb 1e jmp bf453 0.00 : bf435: 0f 1f 00 nopl (%rax) 0.00 : bf438: 8b 14 87 mov (%rdi,%rax,4),%edx 0.00 : bf43b: 39 ca cmp %ecx,%edx 0.00 : bf43d: 75 0b jne bf44a 0.00 : bf43f: 8d 4a 01 lea 0x1(%rdx),%ecx 0.00 : bf442: 48 63 c1 movslq %ecx,%rax 0.00 : bf445: 48 39 f0 cmp %rsi,%rax 0.00 : bf448: 72 ee jb bf438 0.00 : bf44a: 48 39 f0 cmp %rsi,%rax 0.00 : bf44d: 0f 84 98 06 00 00 je bfaeb 0.00 : bf453: 49 8b 7c 24 68 mov 0x68(%r12),%rdi 0.00 : bf458: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : bf45d: 48 8d 35 ec 28 ff ff lea -0xd714(%rip),%rsi # b1d50 0.00 : bf464: e8 27 1a ff ff callq b0e90 0.00 : bf469: 85 c0 test %eax,%eax 0.00 : bf46b: 0f 85 57 06 00 00 jne bfac8 0.00 : bf471: 49 8b 7c 24 68 mov 0x68(%r12),%rdi 0.00 : bf476: 48 8d 35 f3 46 ff ff lea -0xb90d(%rip),%rsi # b3b70 0.00 : bf47d: 4c 89 e2 mov %r12,%rdx 0.00 : bf480: e8 0b 1a ff ff callq b0e90 0.00 : bf485: 85 c0 test %eax,%eax 0.00 : bf487: 0f 85 3b 06 00 00 jne bfac8 0.00 : bf48d: 49 8b 7c 24 68 mov 0x68(%r12),%rdi 0.00 : bf492: 48 8d 35 57 1b ff ff lea -0xe4a9(%rip),%rsi # b0ff0 0.00 : bf499: 4c 89 e2 mov %r12,%rdx 0.00 : bf49c: e8 4f 1a ff ff callq b0ef0 0.00 : bf4a1: 49 8b 7c 24 68 mov 0x68(%r12),%rdi 0.00 : bf4a6: 48 8d 35 c3 2e ff ff lea -0xd13d(%rip),%rsi # b2370 0.00 : bf4ad: 4c 89 e2 mov %r12,%rdx 0.00 : bf4b0: e8 3b 1a ff ff callq b0ef0 0.00 : bf4b5: 85 c0 test %eax,%eax 0.00 : bf4b7: 0f 85 0b 06 00 00 jne bfac8 0.00 : bf4bd: 31 ed xor %ebp,%ebp 0.00 : bf4bf: 45 31 ed xor %r13d,%r13d 0.00 : bf4c2: eb 1b jmp bf4df 0.00 : bf4c4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bf4c8: 48 89 c3 mov %rax,%rbx 0.00 : bf4cb: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : bf4d0: 48 c1 e3 04 shl $0x4,%rbx 0.00 : bf4d4: 8b 44 18 04 mov 0x4(%rax,%rbx,1),%eax 0.00 : bf4d8: 85 c0 test %eax,%eax 0.00 : bf4da: 74 2a je bf506 0.00 : bf4dc: 83 c5 01 add $0x1,%ebp 0.00 : bf4df: 48 63 c5 movslq %ebp,%rax 0.00 : bf4e2: 49 3b 44 24 10 cmp 0x10(%r12),%rax 0.00 : bf4e7: 75 df jne bf4c8 0.00 : bf4e9: 45 85 ed test %r13d,%r13d 0.00 : bf4ec: 0f 84 1e 01 00 00 je bf610 0.00 : bf4f2: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : bf4f7: 31 db xor %ebx,%ebx 0.00 : bf4f9: 31 ed xor %ebp,%ebp 0.00 : bf4fb: 45 31 ed xor %r13d,%r13d 0.00 : bf4fe: 8b 44 18 04 mov 0x4(%rax,%rbx,1),%eax 0.00 : bf502: 85 c0 test %eax,%eax 0.00 : bf504: 75 d6 jne bf4dc 0.00 : bf506: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : bf50b: b9 01 00 00 00 mov $0x1,%ecx 0.00 : bf510: 89 ea mov %ebp,%edx 0.00 : bf512: 4c 89 e6 mov %r12,%rsi 0.00 : bf515: e8 26 44 ff ff callq b3940 0.00 : bf51a: 85 c0 test %eax,%eax 0.00 : bf51c: 0f 85 a6 05 00 00 jne bfac8 0.00 : bf522: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : bf527: 44 8b 7c 18 04 mov 0x4(%rax,%rbx,1),%r15d 0.00 : bf52c: 45 85 ff test %r15d,%r15d 0.00 : bf52f: 75 ab jne bf4dc 0.00 : bf531: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : bf538: 00 0.00 : bf539: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : bf53f: e8 5c f3 f5 ff callq 1e8a0 0.00 : bf544: eb 96 jmp bf4dc 0.00 : bf546: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : bf54d: 00 00 00 0.00 : bf550: 41 83 be a4 00 00 00 cmpl $0x1,0xa4(%r14) 0.00 : bf557: 01 0.00 : bf558: 0f 8f 9a 04 00 00 jg bf9f8 0.00 : bf55e: 48 85 ed test %rbp,%rbp 0.00 : bf561: 0f 84 9a 05 00 00 je bfb01 0.00 : bf567: 8b 44 24 74 mov 0x74(%rsp),%eax 0.00 : bf56b: 39 84 24 80 00 00 00 cmp %eax,0x80(%rsp) 0.00 : bf572: 89 c7 mov %eax,%edi 0.00 : bf574: 0f 4e bc 24 80 00 00 cmovle 0x80(%rsp),%edi 0.00 : bf57b: 00 0.00 : bf57c: 8b 44 24 6c mov 0x6c(%rsp),%eax 0.00 : bf580: 39 c7 cmp %eax,%edi 0.00 : bf582: 7e 3e jle bf5c2 0.00 : bf584: 48 63 f0 movslq %eax,%rsi 0.00 : bf587: 89 c1 mov %eax,%ecx 0.00 : bf589: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bf590: 89 c8 mov %ecx,%eax 0.00 : bf592: 03 44 24 68 add 0x68(%rsp),%eax 0.00 : bf596: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : bf59b: 83 c1 01 add $0x1,%ecx 0.00 : bf59e: 48 98 cltq 0.00 : bf5a0: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : bf5a4: 48 8b 84 24 90 00 00 mov 0x90(%rsp),%rax 0.00 : bf5ab: 00 0.00 : bf5ac: 0f b6 14 10 movzbl (%rax,%rdx,1),%edx 0.00 : bf5b0: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : bf5b5: 88 14 30 mov %dl,(%rax,%rsi,1) 0.00 : bf5b8: 48 83 c6 01 add $0x1,%rsi 0.00 : bf5bc: 39 cf cmp %ecx,%edi 0.00 : bf5be: 7f d0 jg bf590 0.00 : bf5c0: 89 f8 mov %edi,%eax 0.00 : bf5c2: 89 44 24 6c mov %eax,0x6c(%rsp) 0.00 : bf5c6: 89 44 24 70 mov %eax,0x70(%rsp) 0.00 : bf5ca: e9 91 fc ff ff jmpq bf260 0.00 : bf5cf: 90 nop 0.00 : bf5d0: 4c 89 f7 mov %r14,%rdi 0.00 : bf5d3: c7 84 24 cc 00 00 00 movl $0xc,0xcc(%rsp) 0.00 : bf5da: 0c 00 00 00 0.00 : bf5de: e8 ed 2a ff ff callq b20d0 0.00 : bf5e3: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : bf5e8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : bf5ef: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : bf5f6: 00 0.00 : bf5f7: 8b 84 24 cc 00 00 00 mov 0xcc(%rsp),%eax 0.00 : bf5fe: 48 81 c4 d8 00 00 00 add $0xd8,%rsp 0.00 : bf605: 5b pop %rbx 0.00 : bf606: 5d pop %rbp 0.00 : bf607: 41 5c pop %r12 0.00 : bf609: 41 5d pop %r13 0.00 : bf60b: 41 5e pop %r14 0.00 : bf60d: 41 5f pop %r15 0.00 : bf60f: c3 retq 0.00 : bf610: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : bf615: f6 41 38 10 testb $0x10,0x38(%rcx) 0.00 : bf619: 75 0b jne bf626 0.00 : bf61b: 48 83 79 30 00 cmpq $0x0,0x30(%rcx) 0.00 : bf620: 0f 85 48 01 00 00 jne bf76e 0.00 : bf626: 41 8b 9c 24 8c 00 00 mov 0x8c(%r12),%ebx 0.00 : bf62d: 00 0.00 : bf62e: 85 db test %ebx,%ebx 0.00 : bf630: 0f 85 47 01 00 00 jne bf77d 0.00 : bf636: c7 84 24 cc 00 00 00 movl $0x0,0xcc(%rsp) 0.00 : bf63d: 00 00 00 00 0.00 : bf641: 41 0f b6 96 a0 00 00 movzbl 0xa0(%r14),%edx 0.00 : bf648: 00 0.00 : bf649: f6 c2 04 test $0x4,%dl 0.00 : bf64c: 74 1b je bf669 0.00 : bf64e: 48 f7 44 24 20 00 00 testq $0x400000,0x20(%rsp) 0.00 : bf655: 40 00 0.00 : bf657: 75 10 jne bf669 0.00 : bf659: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : bf65e: 48 83 79 28 00 cmpq $0x0,0x28(%rcx) 0.00 : bf663: 0f 84 a1 04 00 00 je bfb0a 0.00 : bf669: 49 8b 46 68 mov 0x68(%r14),%rax 0.00 : bf66d: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : bf671: 48 63 70 38 movslq 0x38(%rax),%rsi 0.00 : bf675: 41 89 b6 88 00 00 00 mov %esi,0x88(%r14) 0.00 : bf67c: 48 c1 e6 04 shl $0x4,%rsi 0.00 : bf680: 49 03 76 30 add 0x30(%r14),%rsi 0.00 : bf684: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : bf689: e8 72 38 ff ff callq b2f00 0.00 : bf68e: 85 c0 test %eax,%eax 0.00 : bf690: 89 84 24 c8 00 00 00 mov %eax,0xc8(%rsp) 0.00 : bf697: 0f 85 3f 02 00 00 jne bf8dc 0.00 : bf69d: 45 8b 8e 8c 00 00 00 mov 0x8c(%r14),%r9d 0.00 : bf6a4: 45 85 c9 test %r9d,%r9d 0.00 : bf6a7: 0f 8e e3 01 00 00 jle bf890 0.00 : bf6ad: 8b 9c 24 b4 00 00 00 mov 0xb4(%rsp),%ebx 0.00 : bf6b4: 85 db test %ebx,%ebx 0.00 : bf6b6: 0f 8e d4 01 00 00 jle bf890 0.00 : bf6bc: 31 ed xor %ebp,%ebp 0.00 : bf6be: eb 0b jmp bf6cb 0.00 : bf6c0: 83 c5 01 add $0x1,%ebp 0.00 : bf6c3: 39 dd cmp %ebx,%ebp 0.00 : bf6c5: 0f 8d c5 01 00 00 jge bf890 0.00 : bf6cb: 48 8b 94 24 b8 00 00 mov 0xb8(%rsp),%rdx 0.00 : bf6d2: 00 0.00 : bf6d3: 48 63 c5 movslq %ebp,%rax 0.00 : bf6d6: 49 8b 3e mov (%r14),%rdi 0.00 : bf6d9: 48 63 34 82 movslq (%rdx,%rax,4),%rsi 0.00 : bf6dd: 48 c1 e6 04 shl $0x4,%rsi 0.00 : bf6e1: 4c 8d 04 37 lea (%rdi,%rsi,1),%r8 0.00 : bf6e5: 41 80 78 08 04 cmpb $0x4,0x8(%r8) 0.00 : bf6ea: 75 d4 jne bf6c0 0.00 : bf6ec: 48 89 d1 mov %rdx,%rcx 0.00 : bf6ef: 31 d2 xor %edx,%edx 0.00 : bf6f1: 85 db test %ebx,%ebx 0.00 : bf6f3: 7f 16 jg bf70b 0.00 : bf6f5: eb 2c jmp bf723 0.00 : bf6f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bf6fe: 00 00 0.00 : bf700: 83 c2 01 add $0x1,%edx 0.00 : bf703: 48 83 c1 04 add $0x4,%rcx 0.00 : bf707: 39 da cmp %ebx,%edx 0.00 : bf709: 7d 18 jge bf723 0.00 : bf70b: 48 63 01 movslq (%rcx),%rax 0.00 : bf70e: 48 c1 e0 04 shl $0x4,%rax 0.00 : bf712: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : bf716: 80 78 08 09 cmpb $0x9,0x8(%rax) 0.00 : bf71a: 75 e4 jne bf700 0.00 : bf71c: 8b 00 mov (%rax),%eax 0.00 : bf71e: 41 3b 00 cmp (%r8),%eax 0.00 : bf721: 75 dd jne bf700 0.00 : bf723: 39 da cmp %ebx,%edx 0.00 : bf725: 74 99 je bf6c0 0.00 : bf727: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : bf72b: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : bf730: 48 8b 44 30 08 mov 0x8(%rax,%rsi,1),%rax 0.00 : bf735: 44 8b 20 mov (%rax),%r12d 0.00 : bf738: 44 89 e6 mov %r12d,%esi 0.00 : bf73b: e8 e0 16 ff ff callq b0e20 0.00 : bf740: 85 c0 test %eax,%eax 0.00 : bf742: 0f 85 78 ff ff ff jne bf6c0 0.00 : bf748: 49 63 f4 movslq %r12d,%rsi 0.00 : bf74b: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : bf750: bd 01 00 00 00 mov $0x1,%ebp 0.00 : bf755: 48 c1 e6 04 shl $0x4,%rsi 0.00 : bf759: 49 03 76 30 add 0x30(%r14),%rsi 0.00 : bf75d: e8 1e 30 ff ff callq b2780 0.00 : bf762: 8b 9c 24 b4 00 00 00 mov 0xb4(%rsp),%ebx 0.00 : bf769: e9 55 ff ff ff jmpq bf6c3 0.00 : bf76e: 41 f6 84 24 a0 00 00 testb $0x1,0xa0(%r12) 0.00 : bf775: 00 01 0.00 : bf777: 0f 84 a9 fe ff ff je bf626 0.00 : bf77d: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : bf782: 48 c1 e7 04 shl $0x4,%rdi 0.00 : bf786: e8 c5 f0 f5 ff callq 1e850 0.00 : bf78b: 48 85 c0 test %rax,%rax 0.00 : bf78e: 49 89 44 24 38 mov %rax,0x38(%r12) 0.00 : bf793: 0f 84 1f 03 00 00 je bfab8 0.00 : bf799: 49 83 7c 24 10 00 cmpq $0x0,0x10(%r12) 0.00 : bf79f: 0f 84 91 fe ff ff je bf636 0.00 : bf7a5: 31 c0 xor %eax,%eax 0.00 : bf7a7: ba 01 00 00 00 mov $0x1,%edx 0.00 : bf7ac: eb 08 jmp bf7b6 0.00 : bf7ae: 66 90 xchg %ax,%ax 0.00 : bf7b0: 48 89 d0 mov %rdx,%rax 0.00 : bf7b3: 48 89 ca mov %rcx,%rdx 0.00 : bf7b6: 48 c1 e0 04 shl $0x4,%rax 0.00 : bf7ba: 49 03 44 24 38 add 0x38(%r12),%rax 0.00 : bf7bf: 48 8d 4a 01 lea 0x1(%rdx),%rcx 0.00 : bf7c3: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : bf7ca: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : bf7d1: 00 0.00 : bf7d2: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : bf7d7: 48 39 d0 cmp %rdx,%rax 0.00 : bf7da: 77 d4 ja bf7b0 0.00 : bf7dc: 48 85 c0 test %rax,%rax 0.00 : bf7df: 0f 84 51 fe ff ff je bf636 0.00 : bf7e5: 31 c0 xor %eax,%eax 0.00 : bf7e7: 48 c7 44 24 38 00 00 movq $0x0,0x38(%rsp) 0.00 : bf7ee: 00 00 0.00 : bf7f0: 49 89 c7 mov %rax,%r15 0.00 : bf7f3: 44 8b 44 24 38 mov 0x38(%rsp),%r8d 0.00 : bf7f8: 49 c1 e7 04 shl $0x4,%r15 0.00 : bf7fc: 4c 89 f8 mov %r15,%rax 0.00 : bf7ff: 49 03 44 24 30 add 0x30(%r12),%rax 0.00 : bf804: 44 8b 58 04 mov 0x4(%rax),%r11d 0.00 : bf808: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : bf80c: 45 85 db test %r11d,%r11d 0.00 : bf80f: 0f 8e c1 01 00 00 jle bf9d6 0.00 : bf815: 49 89 d5 mov %rdx,%r13 0.00 : bf818: 31 ed xor %ebp,%ebp 0.00 : bf81a: eb 2c jmp bf848 0.00 : bf81c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : bf820: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : bf824: 48 63 d1 movslq %ecx,%rdx 0.00 : bf827: 83 c5 01 add $0x1,%ebp 0.00 : bf82a: 49 83 c5 04 add $0x4,%r13 0.00 : bf82e: 44 89 04 90 mov %r8d,(%rax,%rdx,4) 0.00 : bf832: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : bf835: 89 43 04 mov %eax,0x4(%rbx) 0.00 : bf838: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : bf83d: 42 3b 6c 38 04 cmp 0x4(%rax,%r15,1),%ebp 0.00 : bf842: 0f 8d 8e 01 00 00 jge bf9d6 0.00 : bf848: 49 63 5d 00 movslq 0x0(%r13),%rbx 0.00 : bf84c: 48 c1 e3 04 shl $0x4,%rbx 0.00 : bf850: 49 03 5c 24 38 add 0x38(%r12),%rbx 0.00 : bf855: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : bf858: 39 0b cmp %ecx,(%rbx) 0.00 : bf85a: 75 c4 jne bf820 0.00 : bf85c: 8d 74 09 02 lea 0x2(%rcx,%rcx,1),%esi 0.00 : bf860: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : bf864: 89 33 mov %esi,(%rbx) 0.00 : bf866: 48 63 f6 movslq %esi,%rsi 0.00 : bf869: 44 89 44 24 08 mov %r8d,0x8(%rsp) 0.00 : bf86e: 48 c1 e6 02 shl $0x2,%rsi 0.00 : bf872: e8 c9 ef f5 ff callq 1e840 0.00 : bf877: 48 85 c0 test %rax,%rax 0.00 : bf87a: 44 8b 44 24 08 mov 0x8(%rsp),%r8d 0.00 : bf87f: 0f 84 33 02 00 00 je bfab8 0.00 : bf885: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : bf889: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : bf88c: eb 92 jmp bf820 0.00 : bf88e: 66 90 xchg %ax,%ax 50.00 : bf890: 48 8d 9c 24 c8 00 00 lea 0xc8(%rsp),%rbx 0.00 : bf897: 00 0.00 : bf898: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : bf89d: 31 c9 xor %ecx,%ecx 0.00 : bf89f: 4c 89 f6 mov %r14,%rsi 0.00 : bf8a2: 48 89 df mov %rbx,%rdi 0.00 : bf8a5: e8 26 61 ff ff callq b59d0 0.00 : bf8aa: 48 85 c0 test %rax,%rax 0.00 : bf8ad: 49 89 46 48 mov %rax,0x48(%r14) 0.00 : bf8b1: 0f 84 13 01 00 00 je bf9ca 0.00 : bf8b7: 80 78 50 00 cmpb $0x0,0x50(%rax) 0.00 : bf8bb: 0f 88 a7 00 00 00 js bf968 0.00 : bf8c1: 49 89 46 60 mov %rax,0x60(%r14) 0.00 : bf8c5: 49 89 46 58 mov %rax,0x58(%r14) 0.00 : bf8c9: 49 89 46 50 mov %rax,0x50(%r14) 0.00 : bf8cd: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : bf8d4: 00 0.00 : bf8d5: e8 c6 ef f5 ff callq 1e8a0 0.00 : bf8da: 31 c0 xor %eax,%eax 0.00 : bf8dc: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : bf8e1: 89 84 24 cc 00 00 00 mov %eax,0xcc(%rsp) 0.00 : bf8e8: e8 83 27 ff ff callq b2070 0.00 : bf8ed: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf8f2: e8 99 26 ff ff callq b1f90 0.00 : bf8f7: 44 8b 84 24 cc 00 00 mov 0xcc(%rsp),%r8d 0.00 : bf8fe: 00 0.00 : bf8ff: 45 85 c0 test %r8d,%r8d 0.00 : bf902: 0f 85 b8 02 00 00 jne bfbc0 0.00 : bf908: 8b 84 24 cc 00 00 00 mov 0xcc(%rsp),%eax 0.00 : bf90f: e9 ea fc ff ff jmpq bf5fe 0.00 : bf914: 48 85 c0 test %rax,%rax 0.00 : bf917: 0f 85 c5 f9 ff ff jne bf2e2 0.00 : bf91d: 49 c7 46 68 00 00 00 movq $0x0,0x68(%r14) 0.00 : bf924: 00 0.00 : bf925: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : bf92a: e8 41 27 ff ff callq b2070 0.00 : bf92f: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf934: e8 57 26 ff ff callq b1f90 0.00 : bf939: 4c 89 f7 mov %r14,%rdi 0.00 : bf93c: e8 8f 27 ff ff callq b20d0 0.00 : bf941: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : bf946: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : bf94d: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : bf954: 00 0.00 : bf955: 8b 84 24 cc 00 00 00 mov 0xcc(%rsp),%eax 0.00 : bf95c: e9 9d fc ff ff jmpq bf5fe 0.00 : bf961: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bf968: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : bf96d: b9 01 00 00 00 mov $0x1,%ecx 0.00 : bf972: 4c 89 f6 mov %r14,%rsi 0.00 : bf975: 48 89 df mov %rbx,%rdi 0.00 : bf978: e8 53 60 ff ff callq b59d0 0.00 : bf97d: 49 89 46 50 mov %rax,0x50(%r14) 0.00 : bf981: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : bf986: b9 02 00 00 00 mov $0x2,%ecx 0.00 : bf98b: 4c 89 f6 mov %r14,%rsi 0.00 : bf98e: 48 89 df mov %rbx,%rdi 0.00 : bf991: e8 3a 60 ff ff callq b59d0 0.00 : bf996: 49 89 46 58 mov %rax,0x58(%r14) 0.00 : bf99a: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : bf99f: b9 06 00 00 00 mov $0x6,%ecx 0.00 : bf9a4: 4c 89 f6 mov %r14,%rsi 0.00 : bf9a7: 48 89 df mov %rbx,%rdi 0.00 : bf9aa: e8 21 60 ff ff callq b59d0 0.00 : bf9af: 49 83 7e 50 00 cmpq $0x0,0x50(%r14) 0.00 : bf9b4: 49 89 46 60 mov %rax,0x60(%r14) 0.00 : bf9b8: 74 10 je bf9ca 0.00 : bf9ba: 49 83 7e 58 00 cmpq $0x0,0x58(%r14) 0.00 : bf9bf: 74 09 je bf9ca 0.00 : bf9c1: 48 85 c0 test %rax,%rax 0.00 : bf9c4: 0f 85 03 ff ff ff jne bf8cd 0.00 : bf9ca: 8b 84 24 c8 00 00 00 mov 0xc8(%rsp),%eax 0.00 : bf9d1: e9 06 ff ff ff jmpq bf8dc 0.00 : bf9d6: 48 83 44 24 38 01 addq $0x1,0x38(%rsp) 0.00 : bf9dc: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : bf9e1: 49 3b 44 24 10 cmp 0x10(%r12),%rax 0.00 : bf9e6: 0f 82 04 fe ff ff jb bf7f0 0.00 : bf9ec: e9 45 fc ff ff jmpq bf636 0.00 : bf9f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bf9f8: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bf9fd: e8 0e 42 ff ff callq b3c10 0.00 : bfa02: e9 59 f8 ff ff jmpq bf260 0.00 : bfa07: 4b 8b 04 01 mov (%r9,%r8,1),%rax 0.00 : bfa0b: 48 8d 3d fa ca 07 00 lea 0x7cafa(%rip),%rdi # 13c50c <__PRETTY_FUNCTION__.10792+0xe7> 0.00 : bfa12: b9 06 00 00 00 mov $0x6,%ecx 0.00 : bfa17: 48 8b 00 mov (%rax),%rax 0.00 : bfa1a: 48 8b b0 b0 00 00 00 mov 0xb0(%rax),%rsi 0.00 : bfa21: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : bfa23: 0f 85 85 f6 ff ff jne bf0ae 0.00 : bfa29: 41 0f b6 96 a0 00 00 movzbl 0xa0(%r14),%edx 0.00 : bfa30: 00 0.00 : bfa31: 83 ca 04 or $0x4,%edx 0.00 : bfa34: 41 88 96 a0 00 00 00 mov %dl,0xa0(%r14) 0.00 : bfa3b: e9 76 f6 ff ff jmpq bf0b6 0.00 : bfa40: be 01 00 00 00 mov $0x1,%esi 0.00 : bfa45: bf 20 00 00 00 mov $0x20,%edi 0.00 : bfa4a: 45 31 e4 xor %r12d,%r12d 0.00 : bfa4d: e8 3e ee f5 ff callq 1e890 0.00 : bfa52: 48 85 c0 test %rax,%rax 0.00 : bfa55: 49 89 46 78 mov %rax,0x78(%r14) 0.00 : bfa59: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : bfa5f: 0f 84 6b fb ff ff je bf5d0 0.00 : bfa65: 42 8d 2c e5 00 00 00 lea 0x0(,%r12,8),%ebp 0.00 : bfa6c: 00 0.00 : bfa6d: 31 db xor %ebx,%ebx 0.00 : bfa6f: 90 nop 0.00 : bfa70: 89 ef mov %ebp,%edi 0.00 : bfa72: e8 69 cf fc ff callq 8c9e0 0.00 : bfa77: 83 c0 01 add $0x1,%eax 0.00 : bfa7a: 74 12 je bfa8e 0.00 : bfa7c: 4c 89 e2 mov %r12,%rdx 0.00 : bfa7f: 49 03 56 78 add 0x78(%r14),%rdx 0.00 : bfa83: 4c 89 e8 mov %r13,%rax 0.00 : bfa86: 89 d9 mov %ebx,%ecx 0.00 : bfa88: 48 d3 e0 shl %cl,%rax 0.00 : bfa8b: 48 09 02 or %rax,(%rdx) 0.00 : bfa8e: 83 c3 01 add $0x1,%ebx 0.00 : bfa91: 83 c5 01 add $0x1,%ebp 0.00 : bfa94: 83 fb 40 cmp $0x40,%ebx 0.00 : bfa97: 75 d7 jne bfa70 0.00 : bfa99: 49 83 c4 08 add $0x8,%r12 0.00 : bfa9d: 49 83 fc 20 cmp $0x20,%r12 0.00 : bfaa1: 75 c2 jne bfa65 0.00 : bfaa3: e9 4d f6 ff ff jmpq bf0f5 0.00 : bfaa8: c7 84 24 cc 00 00 00 movl $0xc,0xcc(%rsp) 0.00 : bfaaf: 0c 00 00 00 0.00 : bfab3: e9 65 fe ff ff jmpq bf91d 0.00 : bfab8: c7 84 24 cc 00 00 00 movl $0xc,0xcc(%rsp) 0.00 : bfabf: 0c 00 00 00 0.00 : bfac3: e9 5d fe ff ff jmpq bf925 0.00 : bfac8: 89 84 24 cc 00 00 00 mov %eax,0xcc(%rsp) 0.00 : bfacf: e9 51 fe ff ff jmpq bf925 0.00 : bfad4: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bfad9: e8 f2 54 ff ff callq b4fd0 0.00 : bfade: e9 7d f7 ff ff jmpq bf260 0.00 : bfae3: 49 8b bc 24 d0 00 00 mov 0xd0(%r12),%rdi 0.00 : bfaea: 00 0.00 : bfaeb: e8 b0 ed f5 ff callq 1e8a0 0.00 : bfaf0: 49 c7 84 24 d0 00 00 movq $0x0,0xd0(%r12) 0.00 : bfaf7: 00 00 00 00 00 0.00 : bfafc: e9 52 f9 ff ff jmpq bf453 0.00 : bfb01: 8b 44 24 74 mov 0x74(%rsp),%eax 0.00 : bfb05: e9 b8 fa ff ff jmpq bf5c2 0.00 : bfb0a: 4d 8b 56 10 mov 0x10(%r14),%r10 0.00 : bfb0e: 31 c9 xor %ecx,%ecx 0.00 : bfb10: 4d 85 d2 test %r10,%r10 0.00 : bfb13: 0f 84 23 01 00 00 je bfc3c 0.00 : bfb19: 49 8b 3e mov (%r14),%rdi 0.00 : bfb1c: 4c 8d 1d a9 85 07 00 lea 0x785a9(%rip),%r11 # 1380cc <__mon_yday+0x12ac> 0.00 : bfb23: 31 c0 xor %eax,%eax 0.00 : bfb25: 45 31 c0 xor %r8d,%r8d 0.00 : bfb28: 45 31 c9 xor %r9d,%r9d 0.00 : bfb2b: 31 f6 xor %esi,%esi 0.00 : bfb2d: bb 01 00 00 00 mov $0x1,%ebx 0.00 : bfb32: 48 c1 e0 04 shl $0x4,%rax 0.00 : bfb36: 48 8d 0c 07 lea (%rdi,%rax,1),%rcx 0.00 : bfb3a: 80 79 08 0c cmpb $0xc,0x8(%rcx) 0.00 : bfb3e: 76 05 jbe bfb45 0.00 : bfb40: e8 6b 44 f7 ff callq 33fb0 0.00 : bfb45: 0f b6 41 08 movzbl 0x8(%rcx),%eax 0.00 : bfb49: 49 63 04 83 movslq (%r11,%rax,4),%rax 0.00 : bfb4d: 4c 01 d8 add %r11,%rax 0.00 : bfb50: ff e0 jmpq *%rax 0.00 : bfb52: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : bfb58: 48 8d 46 01 lea 0x1(%rsi),%rax 0.00 : bfb5c: 49 39 c2 cmp %rax,%r10 0.00 : bfb5f: 0f 86 c8 00 00 00 jbe bfc2d 0.00 : bfb65: 48 89 c6 mov %rax,%rsi 0.00 : bfb68: eb c8 jmp bfb32 0.00 : bfb6a: 80 39 00 cmpb $0x0,(%rcx) 0.00 : bfb6d: 44 0f 48 c3 cmovs %ebx,%r8d 0.00 : bfb71: eb e5 jmp bfb58 0.00 : bfb73: 8b 01 mov (%rcx),%eax 0.00 : bfb75: 83 f8 20 cmp $0x20,%eax 0.00 : bfb78: 74 de je bfb58 0.00 : bfb7a: 0f 87 96 00 00 00 ja bfc16 0.00 : bfb80: 83 f8 10 cmp $0x10,%eax 0.00 : bfb83: 0f 85 e0 fa ff ff jne bf669 0.00 : bfb89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bfb90: eb c6 jmp bfb58 0.00 : bfb92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bfb98: 48 8b 01 mov (%rcx),%rax 0.00 : bfb9b: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : bfba0: 0f 85 c3 fa ff ff jne bf669 0.00 : bfba6: 48 83 78 18 00 cmpq $0x0,0x18(%rax) 0.00 : bfbab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bfbb0: 74 a6 je bfb58 0.00 : bfbb2: e9 b2 fa ff ff jmpq bf669 0.00 : bfbb7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bfbbe: 00 00 0.00 : bfbc0: 4c 89 f7 mov %r14,%rdi 0.00 : bfbc3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bfbc8: e8 03 25 ff ff callq b20d0 0.00 : bfbcd: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : bfbd2: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : bfbd9: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : bfbe0: 00 0.00 : bfbe1: e9 22 fd ff ff jmpq bf908 0.00 : bfbe6: be e0 00 00 00 mov $0xe0,%esi 0.00 : bfbeb: e8 50 ec f5 ff callq 1e840 0.00 : bfbf0: 49 89 c6 mov %rax,%r14 0.00 : bfbf3: b8 0c 00 00 00 mov $0xc,%eax 0.00 : bfbf8: 4d 85 f6 test %r14,%r14 0.00 : bfbfb: 0f 84 fd f9 ff ff je bf5fe 0.00 : bfc01: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : bfc06: 48 c7 41 08 e0 00 00 movq $0xe0,0x8(%rcx) 0.00 : bfc0d: 00 0.00 : bfc0e: 4c 89 31 mov %r14,(%rcx) 0.00 : bfc11: e9 ed f3 ff ff jmpq bf003 0.00 : bfc16: 83 f8 40 cmp $0x40,%eax 0.00 : bfc19: 0f 84 39 ff ff ff je bfb58 0.00 : bfc1f: 83 c0 80 add $0xffffff80,%eax 0.00 : bfc22: 0f 85 41 fa ff ff jne bf669 0.00 : bfc28: e9 2b ff ff ff jmpq bfb58 0.00 : bfc2d: 31 c0 xor %eax,%eax 0.00 : bfc2f: 45 09 c8 or %r9d,%r8d 0.00 : bfc32: be 01 00 00 00 mov $0x1,%esi 0.00 : bfc37: 44 89 c9 mov %r9d,%ecx 0.00 : bfc3a: 75 4c jne bfc88 0.00 : bfc3c: 45 8b 96 8c 00 00 00 mov 0x8c(%r14),%r10d 0.00 : bfc43: 41 c7 86 a4 00 00 00 movl $0x1,0xa4(%r14) 0.00 : bfc4a: 01 00 00 00 0.00 : bfc4e: 45 85 d2 test %r10d,%r10d 0.00 : bfc51: 0f 9f c0 setg %al 0.00 : bfc54: 83 e2 f9 and $0xfffffff9,%edx 0.00 : bfc57: 09 c8 or %ecx,%eax 0.00 : bfc59: 01 c0 add %eax,%eax 0.00 : bfc5b: 09 c2 or %eax,%edx 0.00 : bfc5d: 41 88 96 a0 00 00 00 mov %dl,0xa0(%r14) 0.00 : bfc64: e9 00 fa ff ff jmpq bf669 0.00 : bfc69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bfc70: 80 fa 05 cmp $0x5,%dl 0.00 : bfc73: 74 3c je bfcb1 0.00 : bfc75: 49 39 76 10 cmp %rsi,0x10(%r14) 0.00 : bfc79: 48 8d 56 01 lea 0x1(%rsi),%rdx 0.00 : bfc7d: 76 25 jbe bfca4 0.00 : bfc7f: 49 8b 3e mov (%r14),%rdi 0.00 : bfc82: 48 89 f0 mov %rsi,%rax 0.00 : bfc85: 48 89 d6 mov %rdx,%rsi 0.00 : bfc88: 48 c1 e0 04 shl $0x4,%rax 0.00 : bfc8c: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : bfc90: 0f b6 50 08 movzbl 0x8(%rax),%edx 0.00 : bfc94: 80 fa 01 cmp $0x1,%dl 0.00 : bfc97: 75 d7 jne bfc70 0.00 : bfc99: 80 38 00 cmpb $0x0,(%rax) 0.00 : bfc9c: 79 d7 jns bfc75 0.00 : bfc9e: 80 60 0a df andb $0xdf,0xa(%rax) 0.00 : bfca2: eb d1 jmp bfc75 0.00 : bfca4: 44 89 c9 mov %r9d,%ecx 0.00 : bfca7: 41 0f b6 96 a0 00 00 movzbl 0xa0(%r14),%edx 0.00 : bfcae: 00 0.00 : bfcaf: eb 8b jmp bfc3c 0.00 : bfcb1: c6 40 08 07 movb $0x7,0x8(%rax) 0.00 : bfcb5: eb be jmp bfc75 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000151f0 <__libc_memalign>: 0.00 : 151f0: 55 push %rbp 0.00 : 151f1: 48 89 f5 mov %rsi,%rbp 0.00 : 151f4: 53 push %rbx 0.00 : 151f5: 48 83 ec 08 sub $0x8,%rsp 0.00 : 151f9: 48 83 3d f7 ae 20 00 cmpq $0x0,0x20aef7(%rip) # 2200f8 0.00 : 15200: 00 0.00 : 15201: 0f 84 c1 00 00 00 je 152c8 <__libc_memalign+0xd8> 0.00 : 15207: 48 8d 57 ff lea -0x1(%rdi),%rdx 0.00 : 1520b: 48 03 15 de ae 20 00 add 0x20aede(%rip),%rdx # 2200f0 0.00 : 15212: 48 f7 df neg %rdi 0.00 : 15215: 48 21 fa and %rdi,%rdx 0.00 : 15218: 48 8d 04 2a lea (%rdx,%rbp,1),%rax 0.00 : 1521c: 48 39 05 d5 ae 20 00 cmp %rax,0x20aed5(%rip) # 2200f8 0.00 : 15223: 48 89 15 c6 ae 20 00 mov %rdx,0x20aec6(%rip) # 2200f0 0.00 : 1522a: 76 08 jbe 15234 <__libc_memalign+0x44> 0.00 : 1522c: 48 f7 da neg %rdx 0.00 : 1522f: 48 39 d5 cmp %rdx,%rbp 0.00 : 15232: 72 6c jb 152a0 <__libc_memalign+0xb0> 0.00 : 15234: 48 8b 1d fd 99 20 00 mov 0x2099fd(%rip),%rbx # 21ec38 <_rtld_global_ro+0x18> 0.00 : 1523b: 48 8d 54 2b ff lea -0x1(%rbx,%rbp,1),%rdx 0.00 : 15240: 48 89 d8 mov %rbx,%rax 50.00 : 15243: 48 f7 d8 neg %rax 0.00 : 15246: 48 21 d0 and %rdx,%rax 0.00 : 15249: 0f 84 a5 00 00 00 je 152f4 <__libc_memalign+0x104> 0.00 : 1524f: 48 89 c3 mov %rax,%rbx 0.00 : 15252: 45 31 c9 xor %r9d,%r9d 0.00 : 15255: ba 03 00 00 00 mov $0x3,%edx 0.00 : 1525a: 31 ff xor %edi,%edi 0.00 : 1525c: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 15262: b9 22 00 00 00 mov $0x22,%ecx 0.00 : 15267: 48 89 de mov %rbx,%rsi 0.00 : 1526a: e8 61 0f 00 00 callq 161d0 <__mmap> 0.00 : 1526f: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 15273: 48 89 c2 mov %rax,%rdx 0.00 : 15276: 0f 84 84 00 00 00 je 15300 <__libc_memalign+0x110> 0.00 : 1527c: 48 3b 05 75 ae 20 00 cmp 0x20ae75(%rip),%rax # 2200f8 0.00 : 15283: 48 8b 05 66 ae 20 00 mov 0x20ae66(%rip),%rax # 2200f0 0.00 : 1528a: 48 0f 45 c2 cmovne %rdx,%rax 0.00 : 1528e: 48 89 05 5b ae 20 00 mov %rax,0x20ae5b(%rip) # 2200f0 0.00 : 15295: 48 8d 04 1a lea (%rdx,%rbx,1),%rax 0.00 : 15299: 48 89 05 58 ae 20 00 mov %rax,0x20ae58(%rip) # 2200f8 0.00 : 152a0: 48 8b 15 49 ae 20 00 mov 0x20ae49(%rip),%rdx # 2200f0 0.00 : 152a7: 48 8d 04 2a lea (%rdx,%rbp,1),%rax 0.00 : 152ab: 48 89 15 4e ae 20 00 mov %rdx,0x20ae4e(%rip) # 220100 0.00 : 152b2: 48 89 05 37 ae 20 00 mov %rax,0x20ae37(%rip) # 2200f0 0.00 : 152b9: 48 83 c4 08 add $0x8,%rsp 0.00 : 152bd: 48 89 d0 mov %rdx,%rax 0.00 : 152c0: 5b pop %rbx 0.00 : 152c1: 5d pop %rbp 0.00 : 152c2: c3 retq 0.00 : 152c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 50.00 : 152c8: 48 8b 05 69 99 20 00 mov 0x209969(%rip),%rax # 21ec38 <_rtld_global_ro+0x18> 0.00 : 152cf: 48 8d 15 f2 ae 20 00 lea 0x20aef2(%rip),%rdx # 2201c8 <_end> 0.00 : 152d6: 48 89 15 13 ae 20 00 mov %rdx,0x20ae13(%rip) # 2200f0 0.00 : 152dd: 48 8d 54 02 ff lea -0x1(%rdx,%rax,1),%rdx 0.00 : 152e2: 48 f7 d8 neg %rax 0.00 : 152e5: 48 21 c2 and %rax,%rdx 0.00 : 152e8: 48 89 15 09 ae 20 00 mov %rdx,0x20ae09(%rip) # 2200f8 0.00 : 152ef: e9 13 ff ff ff jmpq 15207 <__libc_memalign+0x17> 0.00 : 152f4: 48 85 ed test %rbp,%rbp 0.00 : 152f7: 0f 84 55 ff ff ff je 15252 <__libc_memalign+0x62> 0.00 : 152fd: 0f 1f 00 nopl (%rax) 0.00 : 15300: 31 d2 xor %edx,%edx 0.00 : 15302: eb b5 jmp 152b9 <__libc_memalign+0xc9> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000165e0 : 0.00 : 165e0: 66 0f 6e ce movd %esi,%xmm1 0.00 : 165e4: 48 89 f9 mov %rdi,%rcx 0.00 : 165e7: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 165eb: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 165ef: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 165f3: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 165f7: 83 ce ff or $0xffffffff,%esi 0.00 : 165fa: 66 0f 6f 07 movdqa (%rdi),%xmm0 50.00 : 165fe: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 16603: 48 29 f9 sub %rdi,%rcx 0.00 : 16606: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 1660a: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 1660e: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 16612: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 16616: d3 e6 shl %cl,%esi 0.00 : 16618: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1661c: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 16620: 21 f2 and %esi,%edx 0.00 : 16622: 21 f1 and %esi,%ecx 0.00 : 16624: 09 d1 or %edx,%ecx 0.00 : 16626: 75 20 jne 16648 25.00 : 16628: 66 0f 6f 07 movdqa (%rdi),%xmm0 25.00 : 1662c: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 16630: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 16634: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 16638: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 1663c: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 16640: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 16644: 09 d1 or %edx,%ecx 0.00 : 16646: 74 e0 je 16628 0.00 : 16648: 0f bc d2 bsf %edx,%edx 0.00 : 1664b: 74 0c je 16659 0.00 : 1664d: 0f bc c9 bsf %ecx,%ecx 0.00 : 16650: 48 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%rax 0.00 : 16655: 39 d1 cmp %edx,%ecx 0.00 : 16657: 74 02 je 1665b 0.00 : 16659: 31 c0 xor %eax,%eax Sorted summary for file /bin/gawk ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000433540
: 0.00 : 433540: 41 57 push %r15 0.00 : 433542: 41 56 push %r14 0.00 : 433544: 41 55 push %r13 0.00 : 433546: 41 54 push %r12 0.00 : 433548: 55 push %rbp 0.00 : 433549: 53 push %rbx 0.00 : 43354a: 48 81 ec c8 00 00 00 sub $0xc8,%rsp 0.00 : 433551: 89 7c 24 1c mov %edi,0x1c(%rsp) 0.00 : 433555: bf 0f 47 44 00 mov $0x44470f,%edi 0.00 : 43355a: 48 89 74 24 10 mov %rsi,0x10(%rsp) 0.00 : 43355f: c7 84 24 bc 00 00 00 movl $0x0,0xbc(%rsp) 0.00 : 433566: 00 00 00 00 0.00 : 43356a: e8 71 3a fd ff callq 406fe0 0.00 : 43356f: 48 85 c0 test %rax,%rax 0.00 : 433572: 0f 85 7c 07 00 00 jne 433cf4 0.00 : 433578: bf 17 47 44 00 mov $0x444717,%edi 0.00 : 43357d: e8 5e 3a fd ff callq 406fe0 0.00 : 433582: 48 85 c0 test %rax,%rax 0.00 : 433585: 0f 85 e9 0d 00 00 jne 434374 0.00 : 43358b: 31 ff xor %edi,%edi 0.00 : 43358d: be 03 31 44 00 mov $0x443103,%esi 0.00 : 433592: e8 99 3c fd ff callq 407230 0.00 : 433597: be 03 31 44 00 mov $0x443103,%esi 0.00 : 43359c: bf 03 00 00 00 mov $0x3,%edi 0.00 : 4335a1: e8 8a 3c fd ff callq 407230 0.00 : 4335a6: be 03 31 44 00 mov $0x443103,%esi 0.00 : 4335ab: bf 05 00 00 00 mov $0x5,%edi 0.00 : 4335b0: e8 7b 3c fd ff callq 407230 0.00 : 4335b5: be 03 31 44 00 mov $0x443103,%esi 0.00 : 4335ba: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4335bf: e8 6c 3c fd ff callq 407230 0.00 : 4335c4: e8 c7 3a fd ff callq 407090 0.00 : 4335c9: 4c 8b 28 mov (%rax),%r13 0.00 : 4335cc: 48 89 c3 mov %rax,%rbx 0.00 : 4335cf: 4c 89 2d 4a 14 22 00 mov %r13,0x22144a(%rip) # 654a20 0.00 : 4335d6: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 4335da: 4c 89 25 47 14 22 00 mov %r12,0x221447(%rip) # 654a28 0.00 : 4335e1: 4c 8b 58 10 mov 0x10(%rax),%r11 0.00 : 4335e5: 4c 89 1d 44 14 22 00 mov %r11,0x221444(%rip) # 654a30 0.00 : 4335ec: 4c 8b 50 18 mov 0x18(%rax),%r10 0.00 : 4335f0: 4c 89 15 41 14 22 00 mov %r10,0x221441(%rip) # 654a38 0.00 : 4335f7: 4c 8b 48 20 mov 0x20(%rax),%r9 0.00 : 4335fb: 4c 89 0d 3e 14 22 00 mov %r9,0x22143e(%rip) # 654a40 0.00 : 433602: 4c 8b 40 28 mov 0x28(%rax),%r8 0.00 : 433606: 4c 89 05 3b 14 22 00 mov %r8,0x22143b(%rip) # 654a48 0.00 : 43360d: 48 8b 68 30 mov 0x30(%rax),%rbp 0.00 : 433611: 48 89 2d 38 14 22 00 mov %rbp,0x221438(%rip) # 654a50 0.00 : 433618: 48 8b 78 38 mov 0x38(%rax),%rdi 0.00 : 43361c: 48 89 3d 35 14 22 00 mov %rdi,0x221435(%rip) # 654a58 0.00 : 433623: 48 8b 70 40 mov 0x40(%rax),%rsi 0.00 : 433627: 48 89 35 32 14 22 00 mov %rsi,0x221432(%rip) # 654a60 0.00 : 43362e: 48 8b 48 48 mov 0x48(%rax),%rcx 0.00 : 433632: 48 89 0d 2f 14 22 00 mov %rcx,0x22142f(%rip) # 654a68 0.00 : 433639: 48 8b 50 50 mov 0x50(%rax),%rdx 0.00 : 43363d: 48 89 15 2c 14 22 00 mov %rdx,0x22142c(%rip) # 654a70 0.00 : 433644: 48 8b 40 58 mov 0x58(%rax),%rax 0.00 : 433648: 48 89 05 29 14 22 00 mov %rax,0x221429(%rip) # 654a78 0.00 : 43364f: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 433653: e8 88 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 433658: 48 8b 3b mov (%rbx),%rdi 0.00 : 43365b: 48 89 05 c6 13 22 00 mov %rax,0x2213c6(%rip) # 654a28 0.00 : 433662: e8 79 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 433667: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 43366b: 48 89 05 ae 13 22 00 mov %rax,0x2213ae(%rip) # 654a20 0.00 : 433672: e8 69 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 433677: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 43367b: 48 89 05 ae 13 22 00 mov %rax,0x2213ae(%rip) # 654a30 0.00 : 433682: e8 59 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 433687: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 43368b: 48 89 05 a6 13 22 00 mov %rax,0x2213a6(%rip) # 654a38 0.00 : 433692: e8 49 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 433697: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 43369b: 48 89 05 9e 13 22 00 mov %rax,0x22139e(%rip) # 654a40 0.00 : 4336a2: e8 39 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 4336a7: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 4336ab: 48 89 05 96 13 22 00 mov %rax,0x221396(%rip) # 654a48 0.00 : 4336b2: e8 29 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 4336b7: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 4336bb: 48 89 05 8e 13 22 00 mov %rax,0x22138e(%rip) # 654a50 0.00 : 4336c2: e8 19 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 4336c7: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 4336cb: 48 89 05 86 13 22 00 mov %rax,0x221386(%rip) # 654a58 0.00 : 4336d2: e8 09 36 fd ff callq 406ce0 <__strdup@plt> 0.00 : 4336d7: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 4336db: 48 89 05 7e 13 22 00 mov %rax,0x22137e(%rip) # 654a60 0.00 : 4336e2: e8 f9 35 fd ff callq 406ce0 <__strdup@plt> 0.00 : 4336e7: be fb 47 44 00 mov $0x4447fb,%esi 0.00 : 4336ec: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4336f1: 48 89 05 70 13 22 00 mov %rax,0x221370(%rip) # 654a68 0.00 : 4336f8: e8 33 3b fd ff callq 407230 0.00 : 4336fd: be 03 31 44 00 mov $0x443103,%esi 0.00 : 433702: bf 02 00 00 00 mov $0x2,%edi 0.00 : 433707: e8 24 3b fd ff callq 407230 0.00 : 43370c: e8 6f 36 fd ff callq 406d80 <__ctype_get_mb_cur_max@plt> 0.00 : 433711: be 23 47 44 00 mov $0x444723,%esi 0.00 : 433716: bf 35 47 44 00 mov $0x444735,%edi 0.00 : 43371b: 89 05 e7 12 22 00 mov %eax,0x2212e7(%rip) # 654a08 0.00 : 433721: e8 3a 34 fd ff callq 406b60 0.00 : 433726: bf 35 47 44 00 mov $0x444735,%edi 0.00 : 43372b: e8 d0 33 fd ff callq 406b00 0.00 : 433730: be c6 12 41 00 mov $0x4112c6,%esi 0.00 : 433735: bf 08 00 00 00 mov $0x8,%edi 0.00 : 43373a: e8 41 38 fd ff callq 406f80 0.00 : 43373f: be c6 12 41 00 mov $0x4112c6,%esi 0.00 : 433744: bf 07 00 00 00 mov $0x7,%edi 0.00 : 433749: e8 32 38 fd ff callq 406f80 0.00 : 43374e: be c6 12 41 00 mov $0x4112c6,%esi 0.00 : 433753: bf 0b 00 00 00 mov $0xb,%edi 0.00 : 433758: e8 23 38 fd ff callq 406f80 0.00 : 43375d: bf 00 40 00 00 mov $0x4000,%edi 0.00 : 433762: e8 39 34 fd ff callq 406ba0 0.00 : 433767: 48 85 c0 test %rax,%rax 0.00 : 43376a: 0f 84 da 0b 00 00 je 43434a 0.00 : 433770: 4c 8b 74 24 10 mov 0x10(%rsp),%r14 0.00 : 433775: 49 8b 3e mov (%r14),%rdi 0.00 : 433778: e8 d3 c1 ff ff callq 42f950 0.00 : 43377d: 48 8d 74 24 10 lea 0x10(%rsp),%rsi 0.00 : 433782: 48 8d 7c 24 1c lea 0x1c(%rsp),%rdi 0.00 : 433787: 48 89 05 0a 13 22 00 mov %rax,0x22130a(%rip) # 654a98 0.00 : 43378e: e8 fd bf ff ff callq 42f790 0.00 : 433793: 4c 8b 0d 6e 9e 21 00 mov 0x219e6e(%rip),%r9 # 64d608 0.00 : 43379a: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 43379f: bf 48 47 44 00 mov $0x444748,%edi 0.00 : 4337a4: 4c 89 ce mov %r9,%rsi 0.00 : 4337a7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 4337a9: 75 0b jne 4337b6 0.00 : 4337ab: 4d 8d 79 04 lea 0x4(%r9),%r15 0.00 : 4337af: 4c 89 3d 52 9e 21 00 mov %r15,0x219e52(%rip) # 64d608 0.00 : 4337b6: 83 7c 24 1c 01 cmpl $0x1,0x1c(%rsp) 0.00 : 4337bb: 0f 8e a6 07 00 00 jle 433f67 0.00 : 4337c1: 48 8d 5c 24 20 lea 0x20(%rsp),%rbx 0.00 : 4337c6: 31 f6 xor %esi,%esi 0.00 : 4337c8: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4337cd: 48 89 da mov %rbx,%rdx 0.00 : 4337d0: e8 fb 37 fd ff callq 406fd0 <__fxstat@plt> 0.00 : 4337d5: 85 c0 test %eax,%eax 0.00 : 4337d7: 0f 88 39 0b 00 00 js 434316 0.00 : 4337dd: 48 89 da mov %rbx,%rdx 0.00 : 4337e0: be 01 00 00 00 mov $0x1,%esi 0.00 : 4337e5: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4337ea: e8 e1 37 fd ff callq 406fd0 <__fxstat@plt> 0.00 : 4337ef: 85 c0 test %eax,%eax 0.00 : 4337f1: 0f 88 a0 0b 00 00 js 434397 0.00 : 4337f7: 48 89 da mov %rbx,%rdx 0.00 : 4337fa: be 02 00 00 00 mov $0x2,%esi 0.00 : 4337ff: bf 01 00 00 00 mov $0x1,%edi 0.00 : 433804: e8 c7 37 fd ff callq 406fd0 <__fxstat@plt> 0.00 : 433809: 85 c0 test %eax,%eax 0.00 : 43380b: 0f 88 72 0b 00 00 js 434383 0.00 : 433811: e8 7a 0f fe ff callq 414790 0.00 : 433816: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 43381b: c7 05 2b 9f 21 00 00 movl $0x0,0x219f2b(%rip) # 64d750 0.00 : 433822: 00 00 00 0.00 : 433825: c7 05 19 9f 21 00 00 movl $0x0,0x219f19(%rip) # 64d748 0.00 : 43382c: 00 00 00 0.00 : 43382f: 41 bf 75 47 44 00 mov $0x444775,%r15d 0.00 : 433835: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 0.00 : 43383a: 8b 7c 24 1c mov 0x1c(%rsp),%edi 0.00 : 43383e: 45 31 c0 xor %r8d,%r8d 0.00 : 433841: b9 e0 52 44 00 mov $0x4452e0,%ecx 0.00 : 433846: ba 8f 47 44 00 mov $0x44478f,%edx 0.00 : 43384b: e8 60 37 fd ff callq 406fb0 0.00 : 433850: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 433853: 89 c5 mov %eax,%ebp 0.00 : 433855: 0f 85 45 04 00 00 jne 433ca0 0.00 : 43385b: 45 31 ff xor %r15d,%r15d 0.00 : 43385e: 8b 15 ac ca 21 00 mov 0x21caac(%rip),%edx # 650310 0.00 : 433864: 85 d2 test %edx,%edx 0.00 : 433866: 0f 85 3f 0b 00 00 jne 4343ab 0.00 : 43386c: 44 8b 05 89 ca 21 00 mov 0x21ca89(%rip),%r8d # 6502fc 0.00 : 433873: 45 85 c0 test %r8d,%r8d 0.00 : 433876: 0f 85 40 0a 00 00 jne 4342bc 0.00 : 43387c: bf bb 47 44 00 mov $0x4447bb,%edi 0.00 : 433881: e8 5a 37 fd ff callq 406fe0 0.00 : 433886: 48 85 c0 test %rax,%rax 0.00 : 433889: 0f 85 13 0a 00 00 jne 4342a2 0.00 : 43388f: 44 8b 15 66 ca 21 00 mov 0x21ca66(%rip),%r10d # 6502fc 0.00 : 433896: 45 85 d2 test %r10d,%r10d 0.00 : 433899: 0f 85 1d 0a 00 00 jne 4342bc 0.00 : 43389f: 44 8b 25 52 ca 21 00 mov 0x21ca52(%rip),%r12d # 6502f8 0.00 : 4338a6: 45 85 e4 test %r12d,%r12d 0.00 : 4338a9: 0f 85 2d 0a 00 00 jne 4342dc 0.00 : 4338af: 44 8b 35 4a ca 21 00 mov 0x21ca4a(%rip),%r14d # 650300 0.00 : 4338b6: 45 85 f6 test %r14d,%r14d 0.00 : 4338b9: 0f 85 ac 09 00 00 jne 43426b 0.00 : 4338bf: 8b 0d 53 ca 21 00 mov 0x21ca53(%rip),%ecx # 650318 0.00 : 4338c5: 85 c9 test %ecx,%ecx 0.00 : 4338c7: 75 0f jne 4338d8 0.00 : 4338c9: be 83 47 44 00 mov $0x444783,%esi 0.00 : 4338ce: bf 18 03 65 00 mov $0x650318,%edi 0.00 : 4338d3: e8 28 81 00 00 callq 43ba00 0.00 : 4338d8: 31 f6 xor %esi,%esi 0.00 : 4338da: 31 ff xor %edi,%edi 0.00 : 4338dc: e8 2f 33 fd ff callq 406c10 0.00 : 4338e1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 4338e4: 89 05 fe 11 22 00 mov %eax,0x2211fe(%rip) # 654ae8 0.00 : 4338ea: be 12 05 00 00 mov $0x512,%esi 0.00 : 4338ef: 0f 84 7d 08 00 00 je 434172 0.00 : 4338f5: 85 c0 test %eax,%eax 0.00 : 4338f7: 74 39 je 433932 0.00 : 4338f9: 48 63 f8 movslq %eax,%rdi 0.00 : 4338fc: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 433900: e8 9b 32 fd ff callq 406ba0 0.00 : 433905: 48 85 c0 test %rax,%rax 0.00 : 433908: 48 89 c6 mov %rax,%rsi 0.00 : 43390b: 48 89 05 86 10 22 00 mov %rax,0x221086(%rip) # 654998 0.00 : 433912: 0f 84 fc 08 00 00 je 434214 0.00 : 433918: 8b 3d ca 11 22 00 mov 0x2211ca(%rip),%edi # 654ae8 0.00 : 43391e: e8 ed 32 fd ff callq 406c10 0.00 : 433923: 89 05 bf 11 22 00 mov %eax,0x2211bf(%rip) # 654ae8 0.00 : 433929: 83 c0 01 add $0x1,%eax 0.00 : 43392c: 0f 84 3b 08 00 00 je 43416d 0.00 : 433932: 31 d2 xor %edx,%edx 0.00 : 433934: 31 f6 xor %esi,%esi 0.00 : 433936: bf 03 31 44 00 mov $0x443103,%edi 0.00 : 43393b: e8 60 1b 00 00 callq 4354a0 0.00 : 433940: 48 89 05 99 10 22 00 mov %rax,0x221099(%rip) # 6549e0 0.00 : 433947: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 43394e: 48 8b 3d 8b 10 22 00 mov 0x22108b(%rip),%rdi # 6549e0 0.00 : 433955: c7 47 38 49 00 00 00 movl $0x49,0x38(%rdi) 0.00 : 43395c: 66 c7 47 3c 7c 00 movw $0x7c,0x3c(%rdi) 0.00 : 433962: e8 69 27 00 00 callq 4360d0 0.00 : 433967: 48 8b 2d ba 13 01 00 mov 0x113ba(%rip),%rbp # 444d28 <_IO_stdin_used+0x9208> 0.00 : 43396e: 48 85 ed test %rbp,%rbp 0.00 : 433971: 74 74 je 4339e7 0.00 : 433973: 41 bc 20 4d 44 00 mov $0x444d20,%r12d 0.00 : 433979: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 433980: 41 f6 44 24 30 01 testb $0x1,0x30(%r12) 0.00 : 433986: 75 51 jne 4339d9 0.00 : 433988: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 43398d: 4d 8b 34 24 mov (%r12),%r14 0.00 : 433991: 45 8b 6c 24 10 mov 0x10(%r12),%r13d 0.00 : 433996: 48 85 db test %rbx,%rbx 0.00 : 433999: 0f 85 c1 02 00 00 jne 433c60 50.00 : 43399f: f2 41 0f 10 44 24 20 movsd 0x20(%r12),%xmm0 0.00 : 4339a6: bf 61 00 00 00 mov $0x61,%edi 0.00 : 4339ab: e8 70 12 00 00 callq 434c20 0.00 : 4339b0: 31 d2 xor %edx,%edx 0.00 : 4339b2: 48 89 c7 mov %rax,%rdi 0.00 : 4339b5: 44 89 ee mov %r13d,%esi 0.00 : 4339b8: e8 e3 3c fe ff callq 4176a0 0.00 : 4339bd: 48 89 ef mov %rbp,%rdi 0.00 : 4339c0: 48 89 c6 mov %rax,%rsi 0.00 : 4339c3: e8 18 31 fe ff callq 416ae0 0.00 : 4339c8: 49 89 06 mov %rax,(%r14) 0.00 : 4339cb: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4339d0: 48 85 c0 test %rax,%rax 0.00 : 4339d3: 0f 85 a7 02 00 00 jne 433c80 0.00 : 4339d9: 49 83 c4 38 add $0x38,%r12 0.00 : 4339dd: 49 8b 6c 24 08 mov 0x8(%r12),%rbp 0.00 : 4339e2: 48 85 ed test %rbp,%rbp 0.00 : 4339e5: 75 99 jne 433980 0.00 : 4339e7: 8b 05 0b c9 21 00 mov 0x21c90b(%rip),%eax # 6502f8 0.00 : 4339ed: 85 c0 test %eax,%eax 0.00 : 4339ef: 75 0f jne 433a00 0.00 : 4339f1: be 03 0f 41 00 mov $0x410f03,%esi 0.00 : 4339f6: bf de 46 44 00 mov $0x4446de,%edi 0.00 : 4339fb: e8 60 2b fe ff callq 416560 0.00 : 433a00: be e0 31 43 00 mov $0x4331e0,%esi 0.00 : 433a05: bf d6 46 44 00 mov $0x4446d6,%edi 0.00 : 433a0a: e8 51 2b fe ff callq 416560 0.00 : 433a0f: e8 bc 95 ff ff callq 42cfd0 0.00 : 433a14: 48 83 3d bc 9b 21 00 cmpq $0x0,0x219bbc(%rip) # 64d5d8 0.00 : 433a1b: 00 0.00 : 433a1c: 0f 89 81 06 00 00 jns 4340a3 0.00 : 433a22: 48 8b 3d 17 c9 21 00 mov 0x21c917(%rip),%rdi # 650340 0.00 : 433a29: e8 f2 32 fd ff callq 406d20 0.00 : 433a2e: 8b 05 54 10 22 00 mov 0x221054(%rip),%eax # 654a88 0.00 : 433a34: a8 01 test $0x1,%al 0.00 : 433a36: 0f 85 42 06 00 00 jne 43407e 0.00 : 433a3c: a8 02 test $0x2,%al 0.00 : 433a3e: 0f 85 79 05 00 00 jne 433fbd 0.00 : 433a44: 48 8b 3d 25 9d 21 00 mov 0x219d25(%rip),%rdi # 64d770 0.00 : 433a4b: e8 50 2f fd ff callq 4069a0 0.00 : 433a50: 89 c7 mov %eax,%edi 0.00 : 433a52: e8 79 30 fd ff callq 406ad0 0.00 : 433a57: 85 c0 test %eax,%eax 0.00 : 433a59: 0f 85 4f 05 00 00 jne 433fae 0.00 : 433a5f: 48 83 3d 61 9b 21 00 cmpq $0xffffffffffffffff,0x219b61(%rip) # 64d5c8 0.00 : 433a66: ff 0.00 : 433a67: 0f 84 ee 04 00 00 je 433f5b 0.00 : 433a6d: 44 8b 35 88 c8 21 00 mov 0x21c888(%rip),%r14d # 6502fc 0.00 : 433a74: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 433a79: 45 85 f6 test %r14d,%r14d 0.00 : 433a7c: 0f 85 d0 04 00 00 jne 433f52 0.00 : 433a82: 48 8b 2d 0f 10 22 00 mov 0x22100f(%rip),%rbp # 654a98 0.00 : 433a89: 31 d2 xor %edx,%edx 0.00 : 433a8b: 31 ff xor %edi,%edi 0.00 : 433a8d: be 48 00 00 00 mov $0x48,%esi 0.00 : 433a92: 44 8b 74 24 1c mov 0x1c(%rsp),%r14d 0.00 : 433a97: 44 8b 2d ae 9c 21 00 mov 0x219cae(%rip),%r13d # 64d74c 0.00 : 433a9e: e8 fd 3b fe ff callq 4176a0 0.00 : 433aa3: bf f3 47 44 00 mov $0x4447f3,%edi 0.00 : 433aa8: 48 89 c6 mov %rax,%rsi 0.00 : 433aab: e8 30 30 fe ff callq 416ae0 0.00 : 433ab0: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 433ab4: bf 63 00 00 00 mov $0x63,%edi 0.00 : 433ab9: 48 89 05 58 0f 22 00 mov %rax,0x220f58(%rip) # 654a18 0.00 : 433ac0: e8 5b 11 00 00 callq 434c20 0.00 : 433ac5: 48 8b 3d 4c 0f 22 00 mov 0x220f4c(%rip),%rdi # 654a18 0.00 : 433acc: 31 d2 xor %edx,%edx 0.00 : 433ace: 48 89 c6 mov %rax,%rsi 0.00 : 433ad1: e8 6a 17 fe ff callq 415240 0.00 : 433ad6: 48 89 ef mov %rbp,%rdi 0.00 : 433ad9: 49 89 c7 mov %rax,%r15 0.00 : 433adc: e8 4f 32 fd ff callq 406d30 0.00 : 433ae1: 31 d2 xor %edx,%edx 0.00 : 433ae3: 48 89 c6 mov %rax,%rsi 0.00 : 433ae6: 48 89 ef mov %rbp,%rdi 0.00 : 433ae9: e8 b2 19 00 00 callq 4354a0 0.00 : 433aee: 66 81 48 3c 80 00 orw $0x80,0x3c(%rax) 0.00 : 433af4: 45 39 ee cmp %r13d,%r14d 0.00 : 433af7: 49 89 07 mov %rax,(%r15) 0.00 : 433afa: 0f 8f d9 03 00 00 jg 433ed9 0.00 : 433b00: f2 0f 10 05 a0 c8 00 movsd 0xc8a0(%rip),%xmm0 # 4403a8 <_IO_stdin_used+0x4888> 0.00 : 433b07: 00 0.00 : 433b08: bf 61 00 00 00 mov $0x61,%edi 0.00 : 433b0d: e8 0e 11 00 00 callq 434c20 0.00 : 433b12: 31 d2 xor %edx,%edx 0.00 : 433b14: 48 89 c7 mov %rax,%rdi 0.00 : 433b17: be 47 00 00 00 mov $0x47,%esi 0.00 : 433b1c: e8 7f 3b fe ff callq 4176a0 0.00 : 433b21: bf f8 47 44 00 mov $0x4447f8,%edi 0.00 : 433b26: 48 89 c6 mov %rax,%rsi 0.00 : 433b29: e8 b2 2f fe ff callq 416ae0 0.00 : 433b2e: 48 89 05 93 0e 22 00 mov %rax,0x220e93(%rip) # 6549c8 0.00 : 433b35: e8 e6 23 fe ff callq 415f20 0.00 : 433b3a: be fb 47 44 00 mov $0x4447fb,%esi 0.00 : 433b3f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 433b44: e8 e7 36 fd ff callq 407230 0.00 : 433b49: e8 12 4b fe ff callq 418660 0.00 : 433b4e: 85 c0 test %eax,%eax 0.00 : 433b50: 0f 85 79 03 00 00 jne 433ecf 0.00 : 433b56: 8b 35 74 c7 21 00 mov 0x21c774(%rip),%esi # 6502d0 0.00 : 433b5c: 85 f6 test %esi,%esi 0.00 : 433b5e: 0f 85 6b 03 00 00 jne 433ecf 0.00 : 433b64: 48 8b 3d 85 c7 21 00 mov 0x21c785(%rip),%rdi # 6502f0 0.00 : 433b6b: e8 b0 31 fd ff callq 406d20 0.00 : 433b70: 8b 3d 92 c7 21 00 mov 0x21c792(%rip),%edi # 650308 0.00 : 433b76: 85 ff test %edi,%edi 0.00 : 433b78: 0f 85 f7 02 00 00 jne 433e75 0.00 : 433b7e: 8b 05 7c c7 21 00 mov 0x21c77c(%rip),%eax # 650300 0.00 : 433b84: 85 c0 test %eax,%eax 0.00 : 433b86: 0f 85 d4 02 00 00 jne 433e60 0.00 : 433b8c: e8 7f 7e 00 00 callq 43ba10 0.00 : 433b91: 44 8b 05 9c c7 21 00 mov 0x21c79c(%rip),%r8d # 650334 0.00 : 433b98: 45 85 c0 test %r8d,%r8d 0.00 : 433b9b: 0f 85 05 02 00 00 jne 433da6 0.00 : 433ba1: 48 83 3d 2f c7 21 00 cmpq $0x0,0x21c72f(%rip) # 6502d8 0.00 : 433ba8: 00 0.00 : 433ba9: 74 16 je 433bc1 0.00 : 433bab: 48 8b 3d 26 c7 21 00 mov 0x21c726(%rip),%rdi # 6502d8 0.00 : 433bb2: c7 05 6c c7 21 00 01 movl $0x1,0x21c76c(%rip) # 650328 0.00 : 433bb9: 00 00 00 0.00 : 433bbc: e8 ef 69 00 00 callq 43a5b0 0.00 : 433bc1: 44 8b 0d 20 c7 21 00 mov 0x21c720(%rip),%r9d # 6502e8 0.00 : 433bc8: c7 05 56 c7 21 00 00 movl $0x0,0x21c756(%rip) # 650328 0.00 : 433bcf: 00 00 00 0.00 : 433bd2: 45 85 c9 test %r9d,%r9d 0.00 : 433bd5: 0f 85 a2 01 00 00 jne 433d7d 0.00 : 433bdb: 48 83 3d ad 0e 22 00 cmpq $0x0,0x220ead(%rip) # 654a90 0.00 : 433be2: 00 0.00 : 433be3: 0f 85 8f 01 00 00 jne 433d78 0.00 : 433be9: 48 83 3d ef c6 21 00 cmpq $0x0,0x21c6ef(%rip) # 6502e0 0.00 : 433bf0: 00 0.00 : 433bf1: 0f 85 81 01 00 00 jne 433d78 0.00 : 433bf7: 48 8d bc 24 bc 00 00 lea 0xbc(%rsp),%rdi 0.00 : 433bfe: 00 0.00 : 433bff: c7 05 23 c7 21 00 00 movl $0x0,0x21c723(%rip) # 65032c 0.00 : 433c06: 00 00 00 0.00 : 433c09: e8 c2 dc ff ff callq 4318d0 0.00 : 433c0e: 44 8b 94 24 bc 00 00 mov 0xbc(%rsp),%r10d 0.00 : 433c15: 00 0.00 : 433c16: 45 85 d2 test %r10d,%r10d 0.00 : 433c19: 0f 85 12 02 00 00 jne 433e31 0.00 : 433c1f: 44 8b 3d f2 c6 21 00 mov 0x21c6f2(%rip),%r15d # 650318 0.00 : 433c26: 45 85 ff test %r15d,%r15d 0.00 : 433c29: 0f 85 de 01 00 00 jne 433e0d 0.00 : 433c2f: 8b 0d e7 c6 21 00 mov 0x21c6e7(%rip),%ecx # 65031c 0.00 : 433c35: 85 c9 test %ecx,%ecx 0.00 : 433c37: 0f 85 bf 01 00 00 jne 433dfc 0.00 : 433c3d: 44 8b 25 dc c6 21 00 mov 0x21c6dc(%rip),%r12d # 650320 0.00 : 433c44: 45 85 e4 test %r12d,%r12d 0.00 : 433c47: 0f 85 a5 01 00 00 jne 433df2 0.00 : 433c4d: 8b 3d 99 c6 21 00 mov 0x21c699(%rip),%edi # 6502ec 0.00 : 433c53: e8 b8 2e fd ff callq 406b10 0.00 : 433c58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 433c5f: 00 0.00 : 433c60: 48 89 df mov %rbx,%rdi 0.00 : 433c63: e8 c8 30 fd ff callq 406d30 0.00 : 433c68: 31 d2 xor %edx,%edx 0.00 : 433c6a: 48 89 c6 mov %rax,%rsi 0.00 : 433c6d: 48 89 df mov %rbx,%rdi 0.00 : 433c70: e8 2b 18 00 00 callq 4354a0 0.00 : 433c75: e9 36 fd ff ff jmpq 4339b0 0.00 : 433c7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 433c80: 49 83 c4 38 add $0x38,%r12 0.00 : 433c84: ff d0 callq *%rax 0.00 : 433c86: 49 8b 6c 24 08 mov 0x8(%r12),%rbp 0.00 : 433c8b: 48 85 ed test %rbp,%rbp 0.00 : 433c8e: 66 90 xchg %ax,%ax 0.00 : 433c90: 0f 85 ea fc ff ff jne 433980 0.00 : 433c96: e9 4c fd ff ff jmpq 4339e7 0.00 : 433c9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 50.00 : 433ca0: 8b 05 56 c6 21 00 mov 0x21c656(%rip),%eax # 6502fc 0.00 : 433ca6: 85 c0 test %eax,%eax 0.00 : 433ca8: 0f 85 5c 07 00 00 jne 43440a 0.00 : 433cae: 83 fd 76 cmp $0x76,%ebp 0.00 : 433cb1: 76 50 jbe 433d03 0.00 : 433cb3: 8b 05 43 c6 21 00 mov 0x21c643(%rip),%eax # 6502fc 0.00 : 433cb9: 85 c0 test %eax,%eax 0.00 : 433cbb: 0f 85 74 03 00 00 jne 434035 0.00 : 433cc1: 44 8b 25 80 9a 21 00 mov 0x219a80(%rip),%r12d # 64d748 0.00 : 433cc8: 45 85 e4 test %r12d,%r12d 0.00 : 433ccb: 74 16 je 433ce3 0.00 : 433ccd: 44 89 e6 mov %r12d,%esi 0.00 : 433cd0: bf 8f 47 44 00 mov $0x44478f,%edi 0.00 : 433cd5: e8 c6 32 fd ff callq 406fa0 0.00 : 433cda: 48 85 c0 test %rax,%rax 0.00 : 433cdd: 0f 85 62 03 00 00 jne 434045 0.00 : 433ce3: 89 1d 63 9a 21 00 mov %ebx,0x219a63(%rip) # 64d74c 0.00 : 433ce9: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 433cef: e9 6a fb ff ff jmpq 43385e 0.00 : 433cf4: c7 05 22 c6 21 00 01 movl $0x1,0x21c622(%rip) # 650320 0.00 : 433cfb: 00 00 00 0.00 : 433cfe: e9 75 f8 ff ff jmpq 433578 0.00 : 433d03: 89 ea mov %ebp,%edx 0.00 : 433d05: ff 24 d5 60 49 44 00 jmpq *0x444960(,%rdx,8) 0.00 : 433d0c: c7 05 26 c6 21 00 01 movl $0x1,0x21c626(%rip) # 65033c 0.00 : 433d13: 00 00 00 0.00 : 433d16: 44 8b 2d 2f 9a 21 00 mov 0x219a2f(%rip),%r13d # 64d74c 0.00 : 433d1d: 4c 8b 74 24 10 mov 0x10(%rsp),%r14 0.00 : 433d22: 48 8b 1d 37 9a 21 00 mov 0x219a37(%rip),%rbx # 64d760 0.00 : 433d29: 4d 63 e5 movslq %r13d,%r12 0.00 : 433d2c: 4b 3b 5c e6 f8 cmp -0x8(%r14,%r12,8),%rbx 0.00 : 433d31: 0f 85 97 00 00 00 jne 433dce 0.00 : 433d37: 0f b6 13 movzbl (%rbx),%edx 0.00 : 433d3a: 84 d2 test %dl,%dl 0.00 : 433d3c: 74 7c je 433dba 0.00 : 433d3e: 49 89 d8 mov %rbx,%r8 0.00 : 433d41: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 433d46: ba 48 03 65 00 mov $0x650348,%edx 0.00 : 433d4b: be c8 d5 64 00 mov $0x64d5c8,%esi 0.00 : 433d50: bf f0 02 65 00 mov $0x6502f0,%edi 0.00 : 433d55: e8 36 f6 ff ff callq 433390 0.00 : 433d5a: 83 fd 53 cmp $0x53,%ebp 0.00 : 433d5d: 0f 84 f8 fa ff ff je 43385b 0.00 : 433d63: c7 05 db 99 21 00 00 movl $0x0,0x2199db(%rip) # 64d748 0.00 : 433d6a: 00 00 00 0.00 : 433d6d: 8b 1d d9 99 21 00 mov 0x2199d9(%rip),%ebx # 64d74c 0.00 : 433d73: e9 bd fa ff ff jmpq 433835 0.00 : 433d78: e8 73 dc ff ff callq 4319f0 0.00 : 433d7d: 48 83 3d 5b c5 21 00 cmpq $0x0,0x21c55b(%rip) # 6502e0 0.00 : 433d84: 00 0.00 : 433d85: 0f 84 6c fe ff ff je 433bf7 0.00 : 433d8b: 48 8b 3d 4e c5 21 00 mov 0x21c54e(%rip),%rdi # 6502e0 0.00 : 433d92: c7 05 90 c5 21 00 01 movl $0x1,0x21c590(%rip) # 65032c 0.00 : 433d99: 00 00 00 0.00 : 433d9c: e8 0f 68 00 00 callq 43a5b0 0.00 : 433da1: e9 51 fe ff ff jmpq 433bf7 0.00 : 433da6: be 03 31 44 00 mov $0x443103,%esi 0.00 : 433dab: bf 01 00 00 00 mov $0x1,%edi 0.00 : 433db0: e8 7b 34 fd ff callq 407230 0.00 : 433db5: e9 e7 fd ff ff jmpq 433ba1 0.00 : 433dba: 45 8d 4d 01 lea 0x1(%r13),%r9d 0.00 : 433dbe: 4b 8b 1c e6 mov (%r14,%r12,8),%rbx 0.00 : 433dc2: 44 89 0d 83 99 21 00 mov %r9d,0x219983(%rip) # 64d74c 0.00 : 433dc9: e9 70 ff ff ff jmpq 433d3e 0.00 : 433dce: e8 ed 2f fd ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 433dd3: 48 8b 30 mov (%rax),%rsi 0.00 : 433dd6: 48 89 d9 mov %rbx,%rcx 0.00 : 433dd9: 0f b6 11 movzbl (%rcx),%edx 0.00 : 433ddc: 4c 0f be c2 movsbq %dl,%r8 0.00 : 433de0: 42 f6 44 46 01 20 testb $0x20,0x1(%rsi,%r8,2) 0.00 : 433de6: 0f 84 4e ff ff ff je 433d3a 0.00 : 433dec: 48 83 c1 01 add $0x1,%rcx 0.00 : 433df0: eb e7 jmp 433dd9 0.00 : 433df2: e8 bb 46 fd ff callq 4084b2 0.00 : 433df7: e9 51 fe ff ff jmpq 433c4d 0.00 : 433dfc: 48 8b 3d dd 97 21 00 mov 0x2197dd(%rip),%rdi # 64d5e0 0.00 : 433e03: e8 0e 48 fd ff callq 408616 0.00 : 433e08: e9 30 fe ff ff jmpq 433c3d 0.00 : 433e0d: 48 8b 15 cc c4 21 00 mov 0x21c4cc(%rip),%rdx # 6502e0 0.00 : 433e14: 48 8b 35 75 0c 22 00 mov 0x220c75(%rip),%rsi # 654a90 0.00 : 433e1b: 48 8b 3d b6 c4 21 00 mov 0x21c4b6(%rip),%rdi # 6502d8 0.00 : 433e22: e8 35 05 fe ff callq 41435c 0.00 : 433e27: e8 22 45 fd ff callq 40834e 0.00 : 433e2c: e9 fe fd ff ff jmpq 433c2f 0.00 : 433e31: 44 8b 1d b0 c4 21 00 mov 0x21c4b0(%rip),%r11d # 6502e8 0.00 : 433e38: 45 85 db test %r11d,%r11d 0.00 : 433e3b: 0f 85 de fd ff ff jne 433c1f 0.00 : 433e41: 44 8b 35 a4 c4 21 00 mov 0x21c4a4(%rip),%r14d # 6502ec 0.00 : 433e48: 45 85 f6 test %r14d,%r14d 0.00 : 433e4b: 0f 85 ce fd ff ff jne 433c1f 0.00 : 433e51: c7 05 91 c4 21 00 01 movl $0x1,0x21c491(%rip) # 6502ec 0.00 : 433e58: 00 00 00 0.00 : 433e5b: e9 bf fd ff ff jmpq 433c1f 0.00 : 433e60: 48 83 3d 70 c4 21 00 cmpq $0x0,0x21c470(%rip) # 6502d8 0.00 : 433e67: 00 0.00 : 433e68: 74 12 je 433e7c 0.00 : 433e6a: e8 51 28 fe ff callq 4166c0 0.00 : 433e6f: 90 nop 0.00 : 433e70: e9 17 fd ff ff jmpq 433b8c 0.00 : 433e75: 31 ff xor %edi,%edi 0.00 : 433e77: e8 94 2c fd ff callq 406b10 0.00 : 433e7c: 48 83 3d 0c 0c 22 00 cmpq $0x0,0x220c0c(%rip) # 654a90 0.00 : 433e83: 00 0.00 : 433e84: 75 e4 jne 433e6a 0.00 : 433e86: 48 83 3d 52 c4 21 00 cmpq $0x0,0x21c452(%rip) # 6502e0 0.00 : 433e8d: 00 0.00 : 433e8e: 75 da jne 433e6a 0.00 : 433e90: be 69 02 00 00 mov $0x269,%esi 0.00 : 433e95: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 433e9a: e8 a9 d4 fd ff callq 411348 0.00 : 433e9f: ba 05 00 00 00 mov $0x5,%edx 0.00 : 433ea4: 31 ff xor %edi,%edi 0.00 : 433ea6: be fd 47 44 00 mov $0x4447fd,%esi 0.00 : 433eab: 4c 8b 2d 1e 97 21 00 mov 0x21971e(%rip),%r13 # 64d5d0 0.00 : 433eb2: e8 69 31 fd ff callq 407020 0.00 : 433eb7: 48 89 c7 mov %rax,%rdi 0.00 : 433eba: 31 c0 xor %eax,%eax 0.00 : 433ebc: 41 ff d5 callq *%r13 0.00 : 433ebf: 8b 15 3b c4 21 00 mov 0x21c43b(%rip),%edx # 650300 0.00 : 433ec5: 85 d2 test %edx,%edx 0.00 : 433ec7: 0f 84 bf fc ff ff je 433b8c 0.00 : 433ecd: eb 9b jmp 433e6a 0.00 : 433ecf: bf 01 00 00 00 mov $0x1,%edi 0.00 : 433ed4: e8 37 2c fd ff callq 406b10 0.00 : 433ed9: 49 63 cd movslq %r13d,%rcx 0.00 : 433edc: 44 89 6c 24 0c mov %r13d,0xc(%rsp) 0.00 : 433ee1: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 433ee6: 4d 8d 3c cc lea (%r12,%rcx,8),%r15 0.00 : 433eea: f2 0f 2a c5 cvtsi2sd %ebp,%xmm0 0.00 : 433eee: bf 63 00 00 00 mov $0x63,%edi 0.00 : 433ef3: 83 c5 01 add $0x1,%ebp 0.00 : 433ef6: e8 25 0d 00 00 callq 434c20 0.00 : 433efb: 48 8b 3d 16 0b 22 00 mov 0x220b16(%rip),%rdi # 654a18 0.00 : 433f02: 31 d2 xor %edx,%edx 0.00 : 433f04: 48 89 c6 mov %rax,%rsi 0.00 : 433f07: e8 34 13 fe ff callq 415240 0.00 : 433f0c: 49 8b 1f mov (%r15),%rbx 0.00 : 433f0f: 49 89 c4 mov %rax,%r12 0.00 : 433f12: 49 83 c7 08 add $0x8,%r15 0.00 : 433f16: 48 89 df mov %rbx,%rdi 0.00 : 433f19: e8 12 2e fd ff callq 406d30 0.00 : 433f1e: 31 d2 xor %edx,%edx 0.00 : 433f20: 48 89 c6 mov %rax,%rsi 0.00 : 433f23: 48 89 df mov %rbx,%rdi 0.00 : 433f26: e8 75 15 00 00 callq 4354a0 0.00 : 433f2b: 83 44 24 0c 01 addl $0x1,0xc(%rsp) 0.00 : 433f30: 66 81 48 3c 80 00 orw $0x80,0x3c(%rax) 0.00 : 433f36: 44 3b 74 24 0c cmp 0xc(%rsp),%r14d 0.00 : 433f3b: 49 89 04 24 mov %rax,(%r12) 0.00 : 433f3f: 7f a9 jg 433eea 0.00 : 433f41: 41 f7 d5 not %r13d 0.00 : 433f44: 43 8d 6c 2e 02 lea 0x2(%r14,%r13,1),%ebp 0.00 : 433f49: f2 0f 2a c5 cvtsi2sd %ebp,%xmm0 0.00 : 433f4d: e9 b6 fb ff ff jmpq 433b08 0.00 : 433f52: 49 8b 2c 24 mov (%r12),%rbp 0.00 : 433f56: e9 2e fb ff ff jmpq 433a89 0.00 : 433f5b: 8b 05 eb 97 21 00 mov 0x2197eb(%rip),%eax # 64d74c 0.00 : 433f61: 39 44 24 1c cmp %eax,0x1c(%rsp) 0.00 : 433f65: 7f 11 jg 433f78 0.00 : 433f67: 48 8b 35 fa 97 21 00 mov 0x2197fa(%rip),%rsi # 64d768 0.00 : 433f6e: bf 01 00 00 00 mov $0x1,%edi 0.00 : 433f73: e8 98 c8 fd ff callq 410810 0.00 : 433f78: 45 85 ff test %r15d,%r15d 0.00 : 433f7b: 75 ea jne 433f67 0.00 : 433f7d: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 433f82: 4c 63 e8 movslq %eax,%r13 0.00 : 433f85: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 433f8a: ba 48 03 65 00 mov $0x650348,%edx 0.00 : 433f8f: be c8 d5 64 00 mov $0x64d5c8,%esi 0.00 : 433f94: bf f0 02 65 00 mov $0x6502f0,%edi 0.00 : 433f99: 4f 8b 04 ec mov (%r12,%r13,8),%r8 0.00 : 433f9d: e8 ee f3 ff ff callq 433390 0.00 : 433fa2: 83 05 a3 97 21 00 01 addl $0x1,0x2197a3(%rip) # 64d74c 0.00 : 433fa9: e9 bf fa ff ff jmpq 433a6d 0.00 : 433fae: c7 05 80 c3 21 00 01 movl $0x1,0x21c380(%rip) # 650338 0.00 : 433fb5: 00 00 00 0.00 : 433fb8: e9 a2 fa ff ff jmpq 433a5f 0.00 : 433fbd: 48 8b 3d ac 97 21 00 mov 0x2197ac(%rip),%rdi # 64d770 0.00 : 433fc4: e8 d7 29 fd ff callq 4069a0 0.00 : 433fc9: 31 f6 xor %esi,%esi 0.00 : 433fcb: 89 c7 mov %eax,%edi 0.00 : 433fcd: e8 da a9 fd ff callq 40e9ac 0.00 : 433fd2: 83 c0 01 add $0x1,%eax 0.00 : 433fd5: 0f 84 da 06 00 00 je 4346b5 0.00 : 433fdb: 48 8b 3d 86 97 21 00 mov 0x219786(%rip),%rdi # 64d768 0.00 : 433fe2: e8 b9 29 fd ff callq 4069a0 0.00 : 433fe7: 31 f6 xor %esi,%esi 0.00 : 433fe9: 89 c7 mov %eax,%edi 0.00 : 433feb: e8 bc a9 fd ff callq 40e9ac 0.00 : 433ff0: 83 c0 01 add $0x1,%eax 0.00 : 433ff3: 0f 85 4b fa ff ff jne 433a44 0.00 : 433ff9: be 40 02 00 00 mov $0x240,%esi 0.00 : 433ffe: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 434003: e8 40 d3 fd ff callq 411348 0.00 : 434008: e8 e3 2f fd ff callq 406ff0 <__errno_location@plt> 0.00 : 43400d: 8b 38 mov (%rax),%edi 0.00 : 43400f: e8 ac 2e fd ff callq 406ec0 0.00 : 434014: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434019: 48 89 c3 mov %rax,%rbx 0.00 : 43401c: be a0 45 44 00 mov $0x4445a0,%esi 0.00 : 434021: 31 ff xor %edi,%edi 0.00 : 434023: e8 f8 2f fd ff callq 407020 0.00 : 434028: 48 89 de mov %rbx,%rsi 0.00 : 43402b: 48 89 c7 mov %rax,%rdi 0.00 : 43402e: 31 c0 xor %eax,%eax 0.00 : 434030: e8 95 d4 fd ff callq 4114ca 0.00 : 434035: 44 8b 25 0c 97 21 00 mov 0x21970c(%rip),%r12d # 64d748 0.00 : 43403c: 45 85 e4 test %r12d,%r12d 0.00 : 43403f: 0f 84 15 fd ff ff je 433d5a 0.00 : 434045: 4c 8b 3d 4c 0a 22 00 mov 0x220a4c(%rip),%r15 # 654a98 0.00 : 43404c: 31 ff xor %edi,%edi 0.00 : 43404e: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434053: be 18 44 44 00 mov $0x444418,%esi 0.00 : 434058: e8 c3 2f fd ff callq 407020 0.00 : 43405d: 48 8b 3d 04 97 21 00 mov 0x219704(%rip),%rdi # 64d768 0.00 : 434064: 48 89 c2 mov %rax,%rdx 0.00 : 434067: 45 89 e0 mov %r12d,%r8d 0.00 : 43406a: 4c 89 f9 mov %r15,%rcx 0.00 : 43406d: be 01 00 00 00 mov $0x1,%esi 0.00 : 434072: 31 c0 xor %eax,%eax 0.00 : 434074: e8 47 2a fd ff callq 406ac0 <__fprintf_chk@plt> 0.00 : 434079: e9 e9 fe ff ff jmpq 433f67 0.00 : 43407e: 48 8b 3d d3 96 21 00 mov 0x2196d3(%rip),%rdi # 64d758 0.00 : 434085: e8 16 29 fd ff callq 4069a0 0.00 : 43408a: 31 f6 xor %esi,%esi 0.00 : 43408c: 89 c7 mov %eax,%edi 0.00 : 43408e: e8 19 a9 fd ff callq 40e9ac 0.00 : 434093: 83 c0 01 add $0x1,%eax 0.00 : 434096: 74 4b je 4340e3 0.00 : 434098: 8b 05 ea 09 22 00 mov 0x2209ea(%rip),%eax # 654a88 0.00 : 43409e: e9 99 f9 ff ff jmpq 433a3c 0.00 : 4340a3: 45 31 f6 xor %r14d,%r14d 0.00 : 4340a6: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4340ac: 4c 89 f0 mov %r14,%rax 0.00 : 4340af: 48 03 05 8a c2 21 00 add 0x21c28a(%rip),%rax # 650340 0.00 : 4340b6: 83 38 03 cmpl $0x3,(%rax) 0.00 : 4340b9: 75 55 jne 434110 0.00 : 4340bb: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 4340bf: be 01 00 00 00 mov $0x1,%esi 0.00 : 4340c4: e8 0e cb fd ff callq 410bd7 0.00 : 4340c9: 4d 89 eb mov %r13,%r11 0.00 : 4340cc: 49 83 c6 10 add $0x10,%r14 0.00 : 4340d0: 49 83 c5 01 add $0x1,%r13 0.00 : 4340d4: 4c 39 1d fd 94 21 00 cmp %r11,0x2194fd(%rip) # 64d5d8 0.00 : 4340db: 0f 8c 41 f9 ff ff jl 433a22 0.00 : 4340e1: eb c9 jmp 4340ac 0.00 : 4340e3: be 3b 02 00 00 mov $0x23b,%esi 0.00 : 4340e8: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 4340ed: e8 56 d2 fd ff callq 411348 0.00 : 4340f2: e8 f9 2e fd ff callq 406ff0 <__errno_location@plt> 0.00 : 4340f7: 8b 38 mov (%rax),%edi 0.00 : 4340f9: e8 c2 2d fd ff callq 406ec0 0.00 : 4340fe: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434103: 48 89 c3 mov %rax,%rbx 0.00 : 434106: be 50 45 44 00 mov $0x444550,%esi 0.00 : 43410b: e9 11 ff ff ff jmpq 434021 0.00 : 434110: 48 8b 3d a1 09 22 00 mov 0x2209a1(%rip),%rdi # 654ab8 0.00 : 434117: 48 8b 68 08 mov 0x8(%rax),%rbp 0.00 : 43411b: 83 7f 38 47 cmpl $0x47,0x38(%rdi) 0.00 : 43411f: 0f 85 de 00 00 00 jne 434203 0.00 : 434125: 48 8b 15 b4 08 22 00 mov 0x2208b4(%rip),%rdx # 6549e0 0.00 : 43412c: 48 39 17 cmp %rdx,(%rdi) 0.00 : 43412f: 49 89 fc mov %rdi,%r12 0.00 : 434132: 0f 84 cb 00 00 00 je 434203 0.00 : 434138: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 43413c: e8 1f 06 00 00 callq 434760 0.00 : 434141: 80 7d 00 74 cmpb $0x74,0x0(%rbp) 0.00 : 434145: 74 53 je 43419a 0.00 : 434147: 48 89 ef mov %rbp,%rdi 0.00 : 43414a: e8 e1 2b fd ff callq 406d30 0.00 : 43414f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 434154: 48 89 c6 mov %rax,%rsi 0.00 : 434157: 48 89 ef mov %rbp,%rdi 0.00 : 43415a: e8 41 13 00 00 callq 4354a0 0.00 : 43415f: 49 89 04 24 mov %rax,(%r12) 0.00 : 434163: e8 b8 8f ff ff callq 42d120 0.00 : 434168: e9 5c ff ff ff jmpq 4340c9 0.00 : 43416d: be 1b 05 00 00 mov $0x51b,%esi 0.00 : 434172: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 434177: e8 cc d1 fd ff callq 411348 0.00 : 43417c: e8 6f 2e fd ff callq 406ff0 <__errno_location@plt> 0.00 : 434181: 8b 38 mov (%rax),%edi 0.00 : 434183: e8 38 2d fd ff callq 406ec0 0.00 : 434188: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43418d: 48 89 c3 mov %rax,%rbx 0.00 : 434190: be cb 47 44 00 mov $0x4447cb,%esi 0.00 : 434195: e9 87 fe ff ff jmpq 434021 0.00 : 43419a: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 43419e: 75 a7 jne 434147 0.00 : 4341a0: 44 8b 05 59 c1 21 00 mov 0x21c159(%rip),%r8d # 650300 0.00 : 4341a7: 45 85 c0 test %r8d,%r8d 0.00 : 4341aa: 74 2e je 4341da 0.00 : 4341ac: be 50 03 00 00 mov $0x350,%esi 0.00 : 4341b1: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 4341b6: e8 8d d1 fd ff callq 411348 0.00 : 4341bb: 31 ff xor %edi,%edi 0.00 : 4341bd: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4341c2: be 28 45 44 00 mov $0x444528,%esi 0.00 : 4341c7: 48 8b 1d 02 94 21 00 mov 0x219402(%rip),%rbx # 64d5d0 0.00 : 4341ce: e8 4d 2e fd ff callq 407020 0.00 : 4341d3: 48 89 c7 mov %rax,%rdi 0.00 : 4341d6: 31 c0 xor %eax,%eax 0.00 : 4341d8: ff d3 callq *%rbx 0.00 : 4341da: 44 8b 0d 17 c1 21 00 mov 0x21c117(%rip),%r9d # 6502f8 0.00 : 4341e1: 45 85 c9 test %r9d,%r9d 0.00 : 4341e4: 0f 84 5d ff ff ff je 434147 0.00 : 4341ea: 44 8b 15 0b c1 21 00 mov 0x21c10b(%rip),%r10d # 6502fc 0.00 : 4341f1: 45 85 d2 test %r10d,%r10d 0.00 : 4341f4: 0f 85 4d ff ff ff jne 434147 0.00 : 4341fa: c6 45 00 09 movb $0x9,0x0(%rbp) 0.00 : 4341fe: e9 44 ff ff ff jmpq 434147 0.00 : 434203: 31 d2 xor %edx,%edx 0.00 : 434205: 31 f6 xor %esi,%esi 0.00 : 434207: e8 64 5a 00 00 callq 439c70 0.00 : 43420c: 49 89 c4 mov %rax,%r12 0.00 : 43420f: e9 24 ff ff ff jmpq 434138 0.00 : 434214: 66 be 17 05 mov $0x517,%si 0.00 : 434218: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 43421d: e8 26 d1 fd ff callq 411348 0.00 : 434222: e8 c9 2d fd ff callq 406ff0 <__errno_location@plt> 0.00 : 434227: 8b 38 mov (%rax),%edi 0.00 : 434229: e8 92 2c fd ff callq 406ec0 0.00 : 43422e: 48 63 35 b3 08 22 00 movslq 0x2208b3(%rip),%rsi # 654ae8 0.00 : 434235: 48 89 c5 mov %rax,%rbp 0.00 : 434238: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43423d: 31 ff xor %edi,%edi 0.00 : 43423f: 4c 8d 3c b5 00 00 00 lea 0x0(,%rsi,4),%r15 0.00 : 434246: 00 0.00 : 434247: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 43424c: e8 cf 2d fd ff callq 407020 0.00 : 434251: 49 89 e8 mov %rbp,%r8 0.00 : 434254: 48 89 c7 mov %rax,%rdi 0.00 : 434257: 4c 89 f9 mov %r15,%rcx 0.00 : 43425a: ba ea 47 44 00 mov $0x4447ea,%edx 0.00 : 43425f: be e5 47 44 00 mov $0x4447e5,%esi 0.00 : 434264: 31 c0 xor %eax,%eax 0.00 : 434266: e8 5f d2 fd ff callq 4114ca 0.00 : 43426b: e8 40 a7 fd ff callq 40e9b0 0.00 : 434270: 85 c0 test %eax,%eax 0.00 : 434272: 0f 84 47 f6 ff ff je 4338bf 0.00 : 434278: 48 8b 1d 19 08 22 00 mov 0x220819(%rip),%rbx # 654a98 0.00 : 43427f: 31 ff xor %edi,%edi 0.00 : 434281: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434286: be f0 44 44 00 mov $0x4444f0,%esi 0.00 : 43428b: e8 90 2d fd ff callq 407020 0.00 : 434290: 48 89 de mov %rbx,%rsi 0.00 : 434293: 48 89 c7 mov %rax,%rdi 0.00 : 434296: 31 c0 xor %eax,%eax 0.00 : 434298: e8 8a d3 fd ff callq 411627 0.00 : 43429d: e9 1d f6 ff ff jmpq 4338bf 0.00 : 4342a2: 44 8b 0d 57 c0 21 00 mov 0x21c057(%rip),%r9d # 650300 0.00 : 4342a9: c7 05 49 c0 21 00 01 movl $0x1,0x21c049(%rip) # 6502fc 0.00 : 4342b0: 00 00 00 0.00 : 4342b3: 45 85 c9 test %r9d,%r9d 0.00 : 4342b6: 0f 85 1b 01 00 00 jne 4343d7 0.00 : 4342bc: 44 8b 1d 35 c0 21 00 mov 0x21c035(%rip),%r11d # 6502f8 0.00 : 4342c3: c7 05 67 c0 21 00 01 movl $0x1,0x21c067(%rip) # 650334 0.00 : 4342ca: 00 00 00 0.00 : 4342cd: 45 85 db test %r11d,%r11d 0.00 : 4342d0: 75 58 jne 43432a 0.00 : 4342d2: c7 05 1c c0 21 00 01 movl $0x1,0x21c01c(%rip) # 6502f8 0.00 : 4342d9: 00 00 00 0.00 : 4342dc: 44 8b 2d 29 c0 21 00 mov 0x21c029(%rip),%r13d # 65030c 0.00 : 4342e3: 45 85 ed test %r13d,%r13d 0.00 : 4342e6: 0f 84 c3 f5 ff ff je 4338af 0.00 : 4342ec: 31 ff xor %edi,%edi 0.00 : 4342ee: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4342f3: be b0 44 44 00 mov $0x4444b0,%esi 0.00 : 4342f8: c7 05 0a c0 21 00 00 movl $0x0,0x21c00a(%rip) # 65030c 0.00 : 4342ff: 00 00 00 0.00 : 434302: e8 19 2d fd ff callq 407020 0.00 : 434307: 48 89 c7 mov %rax,%rdi 0.00 : 43430a: 31 c0 xor %eax,%eax 0.00 : 43430c: e8 16 d3 fd ff callq 411627 0.00 : 434311: e9 99 f5 ff ff jmpq 4338af 0.00 : 434316: be d4 6b 44 00 mov $0x446bd4,%esi 0.00 : 43431b: bf 4d 47 44 00 mov $0x44474d,%edi 0.00 : 434320: e8 0b d8 ff ff callq 431b30 0.00 : 434325: e9 b3 f4 ff ff jmpq 4337dd 0.00 : 43432a: 31 ff xor %edi,%edi 0.00 : 43432c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434331: be 88 44 44 00 mov $0x444488,%esi 0.00 : 434336: e8 e5 2c fd ff callq 407020 0.00 : 43433b: 48 89 c7 mov %rax,%rdi 0.00 : 43433e: 31 c0 xor %eax,%eax 0.00 : 434340: e8 e2 d2 fd ff callq 411627 0.00 : 434345: e9 55 f5 ff ff jmpq 43389f 0.00 : 43434a: be 32 01 00 00 mov $0x132,%esi 0.00 : 43434f: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 434354: e8 ef cf fd ff callq 411348 0.00 : 434359: 31 ff xor %edi,%edi 0.00 : 43435b: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434360: be 3a 47 44 00 mov $0x44473a,%esi 0.00 : 434365: e8 b6 2c fd ff callq 407020 0.00 : 43436a: 48 89 c7 mov %rax,%rdi 0.00 : 43436d: 31 c0 xor %eax,%eax 0.00 : 43436f: e8 56 d1 fd ff callq 4114ca 0.00 : 434374: c7 05 b2 bf 21 00 01 movl $0x1,0x21bfb2(%rip) # 650330 0.00 : 43437b: 00 00 00 0.00 : 43437e: e9 08 f2 ff ff jmpq 43358b 0.00 : 434383: be dd 6b 44 00 mov $0x446bdd,%esi 0.00 : 434388: bf 4d 47 44 00 mov $0x44474d,%edi 0.00 : 43438d: e8 9e d7 ff ff callq 431b30 0.00 : 434392: e9 7a f4 ff ff jmpq 433811 0.00 : 434397: be dd 6b 44 00 mov $0x446bdd,%esi 0.00 : 43439c: bf 4d 47 44 00 mov $0x44474d,%edi 0.00 : 4343a1: e8 8a d7 ff ff callq 431b30 0.00 : 4343a6: e9 4c f4 ff ff jmpq 4337f7 0.00 : 4343ab: 48 8b 0d b6 93 21 00 mov 0x2193b6(%rip),%rcx # 64d768 0.00 : 4343b2: ba 1d 00 00 00 mov $0x1d,%edx 0.00 : 4343b7: be 01 00 00 00 mov $0x1,%esi 0.00 : 4343bc: bf 9d 47 44 00 mov $0x44479d,%edi 0.00 : 4343c1: e8 4a 2e fd ff callq 407210 0.00 : 4343c6: 48 8b 3d 9b 93 21 00 mov 0x21939b(%rip),%rdi # 64d768 0.00 : 4343cd: e8 7e 2f fd ff callq 407350 0.00 : 4343d2: e8 b9 26 fd ff callq 406a90 0.00 : 4343d7: be fc 01 00 00 mov $0x1fc,%esi 0.00 : 4343dc: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 4343e1: e8 62 cf fd ff callq 411348 0.00 : 4343e6: 31 ff xor %edi,%edi 0.00 : 4343e8: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4343ed: be 40 44 44 00 mov $0x444440,%esi 0.00 : 4343f2: 48 8b 2d d7 91 21 00 mov 0x2191d7(%rip),%rbp # 64d5d0 0.00 : 4343f9: e8 22 2c fd ff callq 407020 0.00 : 4343fe: 48 89 c7 mov %rax,%rdi 0.00 : 434401: 31 c0 xor %eax,%eax 0.00 : 434403: ff d5 callq *%rbp 0.00 : 434405: e9 85 f4 ff ff jmpq 43388f 0.00 : 43440a: c7 05 3c 93 21 00 01 movl $0x1,0x21933c(%rip) # 64d750 0.00 : 434411: 00 00 00 0.00 : 434414: e9 95 f8 ff ff jmpq 433cae 0.00 : 434419: 4c 8b 05 40 93 21 00 mov 0x219340(%rip),%r8 # 64d760 0.00 : 434420: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 434425: ba 50 03 65 00 mov $0x650350,%edx 0.00 : 43442a: be d8 d5 64 00 mov $0x64d5d8,%esi 0.00 : 43442f: bf 40 03 65 00 mov $0x650340,%edi 0.00 : 434434: e8 57 ef ff ff callq 433390 0.00 : 434439: e9 25 f9 ff ff jmpq 433d63 0.00 : 43443e: 48 8b 35 2b 93 21 00 mov 0x21932b(%rip),%rsi # 64d770 0.00 : 434445: 31 ff xor %edi,%edi 0.00 : 434447: e8 c4 c3 fd ff callq 410810 0.00 : 43444c: 48 8b 05 0d 93 21 00 mov 0x21930d(%rip),%rax # 64d760 0.00 : 434453: 80 38 00 cmpb $0x0,(%rax) 0.00 : 434456: 75 45 jne 43449d 0.00 : 434458: 31 ff xor %edi,%edi 0.00 : 43445a: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43445f: be f0 43 44 00 mov $0x4443f0,%esi 0.00 : 434464: e8 b7 2b fd ff callq 407020 0.00 : 434469: 48 89 c7 mov %rax,%rdi 0.00 : 43446c: 31 c0 xor %eax,%eax 0.00 : 43446e: e8 b4 d1 fd ff callq 411627 0.00 : 434473: e9 eb f8 ff ff jmpq 433d63 0.00 : 434478: 48 8b 3d e1 92 21 00 mov 0x2192e1(%rip),%rdi # 64d760 0.00 : 43447f: c7 05 8f be 21 00 01 movl $0x1,0x21be8f(%rip) # 650318 0.00 : 434486: 00 00 00 0.00 : 434489: 48 85 ff test %rdi,%rdi 0.00 : 43448c: 75 05 jne 434493 0.00 : 43448e: bf 83 47 44 00 mov $0x444783,%edi 0.00 : 434493: e8 a2 00 fe ff callq 41453a 0.00 : 434498: e9 c6 f8 ff ff jmpq 433d63 0.00 : 43449d: 49 89 c0 mov %rax,%r8 0.00 : 4344a0: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4344a5: ba 48 03 65 00 mov $0x650348,%edx 0.00 : 4344aa: be c8 d5 64 00 mov $0x64d5c8,%esi 0.00 : 4344af: bf f0 02 65 00 mov $0x6502f0,%edi 0.00 : 4344b4: e8 d7 ee ff ff callq 433390 0.00 : 4344b9: e9 a5 f8 ff ff jmpq 433d63 0.00 : 4344be: 8b 1d 3c be 21 00 mov 0x21be3c(%rip),%ebx # 650300 0.00 : 4344c4: 85 db test %ebx,%ebx 0.00 : 4344c6: 74 2e je 4344f6 0.00 : 4344c8: be 76 01 00 00 mov $0x176,%esi 0.00 : 4344cd: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 4344d2: e8 71 ce fd ff callq 411348 0.00 : 4344d7: 31 ff xor %edi,%edi 0.00 : 4344d9: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4344de: be 98 43 44 00 mov $0x444398,%esi 0.00 : 4344e3: 48 8b 2d e6 90 21 00 mov 0x2190e6(%rip),%rbp # 64d5d0 0.00 : 4344ea: e8 31 2b fd ff callq 407020 0.00 : 4344ef: 48 89 c7 mov %rax,%rdi 0.00 : 4344f2: 31 c0 xor %eax,%eax 0.00 : 4344f4: ff d5 callq *%rbp 0.00 : 4344f6: 48 8b 1d 63 92 21 00 mov 0x219263(%rip),%rbx # 64d760 0.00 : 4344fd: 0f b6 03 movzbl (%rbx),%eax 0.00 : 434500: 3c 72 cmp $0x72,%al 0.00 : 434502: 74 26 je 43452a 0.00 : 434504: 3c 66 cmp $0x66,%al 0.00 : 434506: 74 22 je 43452a 0.00 : 434508: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43450d: be 57 47 44 00 mov $0x444757,%esi 0.00 : 434512: 31 ff xor %edi,%edi 0.00 : 434514: e8 07 2b fd ff callq 407020 0.00 : 434519: 48 89 c7 mov %rax,%rdi 0.00 : 43451c: 31 c0 xor %eax,%eax 0.00 : 43451e: e8 04 d1 fd ff callq 411627 0.00 : 434523: 48 8b 1d 36 92 21 00 mov 0x219236(%rip),%rbx # 64d760 0.00 : 43452a: 80 3b 72 cmpb $0x72,(%rbx) 0.00 : 43452d: 74 4f je 43457e 0.00 : 43452f: 80 7b 01 00 cmpb $0x0,0x1(%rbx) 0.00 : 434533: 0f 85 2a f8 ff ff jne 433d63 0.00 : 434539: 83 05 0c 92 21 00 01 addl $0x1,0x21920c(%rip) # 64d74c 0.00 : 434540: e9 1e f8 ff ff jmpq 433d63 0.00 : 434545: 4c 8b 05 14 92 21 00 mov 0x219214(%rip),%r8 # 64d760 0.00 : 43454c: c7 05 aa bd 21 00 02 movl $0x2,0x21bdaa(%rip) # 650300 0.00 : 434553: 00 00 00 0.00 : 434556: 4d 85 c0 test %r8,%r8 0.00 : 434559: 0f 84 04 f8 ff ff je 433d63 0.00 : 43455f: 4c 89 c6 mov %r8,%rsi 0.00 : 434562: 4c 89 ff mov %r15,%rdi 0.00 : 434565: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 43456a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 43456c: 75 40 jne 4345ae 0.00 : 43456e: 48 c7 05 57 90 21 00 movq $0x4114ca,0x219057(%rip) # 64d5d0 0.00 : 434575: ca 14 41 00 0.00 : 434579: e9 e5 f7 ff ff jmpq 433d63 0.00 : 43457e: e8 3d 28 fd ff callq 406dc0 <__ctype_b_loc@plt> 0.00 : 434583: 4c 0f be 5b 01 movsbq 0x1(%rbx),%r11 0.00 : 434588: 4c 8b 10 mov (%rax),%r10 0.00 : 43458b: 43 f6 44 5a 01 08 testb $0x8,0x1(%r10,%r11,2) 0.00 : 434591: 74 3f je 4345d2 0.00 : 434593: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 434597: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 43459c: 31 f6 xor %esi,%esi 0.00 : 43459e: e8 4d 29 fd ff callq 406ef0 0.00 : 4345a3: 89 05 57 05 22 00 mov %eax,0x220557(%rip) # 654b00 0.00 : 4345a9: e9 b5 f7 ff ff jmpq 433d63 0.00 : 4345ae: 4c 89 c6 mov %r8,%rsi 0.00 : 4345b1: bf 7b 47 44 00 mov $0x44477b,%edi 0.00 : 4345b6: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 4345bb: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 4345bd: 0f 85 a0 f7 ff ff jne 433d63 0.00 : 4345c3: c7 05 33 bd 21 00 01 movl $0x1,0x21bd33(%rip) # 650300 0.00 : 4345ca: 00 00 00 0.00 : 4345cd: e9 91 f7 ff ff jmpq 433d63 0.00 : 4345d2: 4c 63 2d 73 91 21 00 movslq 0x219173(%rip),%r13 # 64d74c 0.00 : 4345d9: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 4345de: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 4345e3: 31 f6 xor %esi,%esi 0.00 : 4345e5: 4b 8b 3c ec mov (%r12,%r13,8),%rdi 0.00 : 4345e9: e8 02 29 fd ff callq 406ef0 0.00 : 4345ee: 83 05 57 91 21 00 01 addl $0x1,0x219157(%rip) # 64d74c 0.00 : 4345f5: 89 05 05 05 22 00 mov %eax,0x220505(%rip) # 654b00 0.00 : 4345fb: e9 63 f7 ff ff jmpq 433d63 0.00 : 434600: c7 05 1a bd 21 00 01 movl $0x1,0x21bd1a(%rip) # 650324 0.00 : 434607: 00 00 00 0.00 : 43460a: e9 54 f7 ff ff jmpq 433d63 0.00 : 43460f: 4c 8b 05 4a 91 21 00 mov 0x21914a(%rip),%r8 # 64d760 0.00 : 434616: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 43461b: ba 50 03 65 00 mov $0x650350,%edx 0.00 : 434620: be d8 d5 64 00 mov $0x64d5d8,%esi 0.00 : 434625: bf 40 03 65 00 mov $0x650340,%edi 0.00 : 43462a: e8 61 ed ff ff callq 433390 0.00 : 43462f: e9 2f f7 ff ff jmpq 433d63 0.00 : 434634: 48 8b 3d cd 8f 21 00 mov 0x218fcd(%rip),%rdi # 64d608 0.00 : 43463b: e8 a0 24 fd ff callq 406ae0 0.00 : 434640: e8 f8 c7 fd ff callq 410e3d 0.00 : 434645: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : 43464a: 48 8b 1d 0f 91 21 00 mov 0x21910f(%rip),%rbx # 64d760 0.00 : 434651: 31 ff xor %edi,%edi 0.00 : 434653: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434658: be c0 43 44 00 mov $0x4443c0,%esi 0.00 : 43465d: 4c 8b 31 mov (%rcx),%r14 0.00 : 434660: e8 bb 29 fd ff callq 407020 0.00 : 434665: 48 8b 3d fc 90 21 00 mov 0x2190fc(%rip),%rdi # 64d768 0.00 : 43466c: 48 89 c2 mov %rax,%rdx 0.00 : 43466f: 49 89 d8 mov %rbx,%r8 0.00 : 434672: 4c 89 f1 mov %r14,%rcx 0.00 : 434675: be 01 00 00 00 mov $0x1,%esi 0.00 : 43467a: 31 c0 xor %eax,%eax 0.00 : 43467c: e8 3f 24 fd ff callq 406ac0 <__fprintf_chk@plt> 0.00 : 434681: e9 dd f6 ff ff jmpq 433d63 0.00 : 434686: 48 8b 05 d3 90 21 00 mov 0x2190d3(%rip),%rax # 64d760 0.00 : 43468d: c7 05 85 bc 21 00 01 movl $0x1,0x21bc85(%rip) # 65031c 0.00 : 434694: 00 00 00 0.00 : 434697: 48 85 c0 test %rax,%rax 0.00 : 43469a: 0f 84 c3 f6 ff ff je 433d63 0.00 : 4346a0: 80 38 00 cmpb $0x0,(%rax) 0.00 : 4346a3: 0f 84 ba f6 ff ff je 433d63 0.00 : 4346a9: 48 89 05 30 8f 21 00 mov %rax,0x218f30(%rip) # 64d5e0 0.00 : 4346b0: e9 ae f6 ff ff jmpq 433d63 0.00 : 4346b5: be 3e 02 00 00 mov $0x23e,%esi 0.00 : 4346ba: bf cf 46 44 00 mov $0x4446cf,%edi 0.00 : 4346bf: e8 84 cc fd ff callq 411348 0.00 : 4346c4: e8 27 29 fd ff callq 406ff0 <__errno_location@plt> 0.00 : 4346c9: 8b 38 mov (%rax),%edi 0.00 : 4346cb: e8 f0 27 fd ff callq 406ec0 0.00 : 4346d0: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4346d5: 48 89 c3 mov %rax,%rbx 0.00 : 4346d8: be 78 45 44 00 mov $0x444578,%esi 0.00 : 4346dd: e9 3f f9 ff ff jmpq 434021 Sorted summary for file /bin/gawk ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000434820 : 0.00 : 434820: 41 57 push %r15 0.00 : 434822: 49 89 ff mov %rdi,%r15 0.00 : 434825: 41 56 push %r14 0.00 : 434827: 41 55 push %r13 0.00 : 434829: 41 54 push %r12 0.00 : 43482b: 55 push %rbp 0.00 : 43482c: 53 push %rbx 0.00 : 43482d: 48 83 ec 28 sub $0x28,%rsp 0.00 : 434831: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 434835: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 43483a: a8 18 test $0x18,%al 0.00 : 43483c: 0f 84 41 02 00 00 je 434a83 50.00 : 434842: f6 c4 10 test $0x10,%ah 0.00 : 434845: 0f 85 e9 01 00 00 jne 434a34 0.00 : 43484b: 49 8b 7f 10 mov 0x10(%r15),%rdi 0.00 : 43484f: 48 8d 3c bd 08 00 00 lea 0x8(,%rdi,4),%rdi 0.00 : 434856: 00 0.00 : 434857: e8 44 23 fd ff callq 406ba0 0.00 : 43485c: 48 85 c0 test %rax,%rax 0.00 : 43485f: 48 89 c3 mov %rax,%rbx 0.00 : 434862: 49 89 c6 mov %rax,%r14 0.00 : 434865: 49 89 47 28 mov %rax,0x28(%r15) 0.00 : 434869: 0f 84 db 01 00 00 je 434a4a 0.00 : 43486f: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 434875: 0f 85 88 01 00 00 jne 434a03 0.00 : 43487b: 49 8b 6f 10 mov 0x10(%r15),%rbp 0.00 : 43487f: 45 31 e4 xor %r12d,%r12d 0.00 : 434882: 4d 8b 6f 08 mov 0x8(%r15),%r13 0.00 : 434886: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 43488d: 00 00 0.00 : 43488f: 48 85 ed test %rbp,%rbp 0.00 : 434892: 0f 84 9e 00 00 00 je 434936 0.00 : 434898: 48 83 c3 04 add $0x4,%rbx 0.00 : 43489c: 45 31 e4 xor %r12d,%r12d 0.00 : 43489f: 90 nop 0.00 : 4348a0: 48 8d 4c 24 10 lea 0x10(%rsp),%rcx 0.00 : 4348a5: 48 8d 7c 24 1c lea 0x1c(%rsp),%rdi 0.00 : 4348aa: 48 89 ea mov %rbp,%rdx 0.00 : 4348ad: 4c 89 ee mov %r13,%rsi 0.00 : 4348b0: 4c 8d 73 fc lea -0x4(%rbx),%r14 0.00 : 4348b4: e8 37 21 fd ff callq 4069f0 0.00 : 4348b9: 48 85 c0 test %rax,%rax 0.00 : 4348bc: 48 89 c1 mov %rax,%rcx 0.00 : 4348bf: 75 6f jne 434930 0.00 : 4348c1: 44 8b 5c 24 1c mov 0x1c(%rsp),%r11d 0.00 : 4348c6: 49 89 de mov %rbx,%r14 0.00 : 4348c9: 48 83 ed 01 sub $0x1,%rbp 0.00 : 4348cd: 44 89 5b fc mov %r11d,-0x4(%rbx) 0.00 : 4348d1: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 4348d7: 4c 89 ee mov %r13,%rsi 0.00 : 4348da: 48 89 cf mov %rcx,%rdi 0.00 : 4348dd: 74 13 je 4348f2 0.00 : 4348df: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 4348e4: 49 89 f2 mov %rsi,%r10 0.00 : 4348e7: 4d 2b 57 08 sub 0x8(%r15),%r10 0.00 : 4348eb: 4d 8b 08 mov (%r8),%r9 0.00 : 4348ee: 4f 89 24 d1 mov %r12,(%r9,%r10,8) 0.00 : 4348f2: 48 83 c6 01 add $0x1,%rsi 0.00 : 4348f6: 48 85 ff test %rdi,%rdi 0.00 : 4348f9: 74 15 je 434910 0.00 : 4348fb: 48 83 ef 01 sub $0x1,%rdi 0.00 : 4348ff: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 434905: 75 d8 jne 4348df 0.00 : 434907: 48 83 c6 01 add $0x1,%rsi 0.00 : 43490b: 48 85 ff test %rdi,%rdi 0.00 : 43490e: 75 eb jne 4348fb 0.00 : 434910: 4d 8d 6c 0d 01 lea 0x1(%r13,%rcx,1),%r13 0.00 : 434915: 49 83 c4 01 add $0x1,%r12 0.00 : 434919: 48 83 c3 04 add $0x4,%rbx 0.00 : 43491d: 48 85 ed test %rbp,%rbp 0.00 : 434920: 0f 85 7a ff ff ff jne 4348a0 0.00 : 434926: eb 0e jmp 434936 0.00 : 434928: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43492f: 00 0.00 : 434930: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 434934: 72 3a jb 434970 0.00 : 434936: 41 c7 06 00 00 00 00 movl $0x0,(%r14) 0.00 : 43493d: 49 8b 4f 10 mov 0x10(%r15),%rcx 0.00 : 434941: 66 41 81 4f 3c 00 10 orw $0x1000,0x3c(%r15) 0.00 : 434948: 4d 89 67 30 mov %r12,0x30(%r15) 0.00 : 43494c: 4c 29 e1 sub %r12,%rcx 0.00 : 43494f: 48 83 f9 64 cmp $0x64,%rcx 0.00 : 434953: 77 36 ja 43498b 0.00 : 434955: 48 83 c4 28 add $0x28,%rsp 0.00 : 434959: 4c 89 f8 mov %r15,%rax 0.00 : 43495c: 5b pop %rbx 0.00 : 43495d: 5d pop %rbp 0.00 : 43495e: 41 5c pop %r12 0.00 : 434960: 41 5d pop %r13 0.00 : 434962: 41 5e pop %r14 0.00 : 434964: 41 5f pop %r15 0.00 : 434966: c3 retq 0.00 : 434967: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43496e: 00 00 0.00 : 434970: 8b 74 24 1c mov 0x1c(%rsp),%esi 0.00 : 434974: 48 29 c5 sub %rax,%rbp 0.00 : 434977: 48 85 c0 test %rax,%rax 0.00 : 43497a: 49 89 de mov %rbx,%r14 0.00 : 43497d: 89 73 fc mov %esi,-0x4(%rbx) 0.00 : 434980: 74 93 je 434915 0.00 : 434982: 48 83 e9 01 sub $0x1,%rcx 0.00 : 434986: e9 46 ff ff ff jmpq 4348d1 0.00 : 43498b: 49 8b 7f 28 mov 0x28(%r15),%rdi 0.00 : 43498f: 48 85 ff test %rdi,%rdi 0.00 : 434992: 0f 84 d9 00 00 00 je 434a71 0.00 : 434998: 4a 8d 34 a5 08 00 00 lea 0x8(,%r12,4),%rsi 0.00 : 43499f: 00 0.00 : 4349a0: e8 7b 28 fd ff callq 407220 0.00 : 4349a5: 48 85 c0 test %rax,%rax 0.00 : 4349a8: 49 89 47 28 mov %rax,0x28(%r15) 0.00 : 4349ac: 75 a7 jne 434955 0.00 : 4349ae: be 3d 03 00 00 mov $0x33d,%esi 0.00 : 4349b3: bf f3 58 44 00 mov $0x4458f3,%edi 0.00 : 4349b8: e8 8b c9 fd ff callq 411348 0.00 : 4349bd: e8 2e 26 fd ff callq 406ff0 <__errno_location@plt> 0.00 : 4349c2: 8b 38 mov (%rax),%edi 0.00 : 4349c4: e8 f7 24 fd ff callq 406ec0 0.00 : 4349c9: 48 89 c3 mov %rax,%rbx 0.00 : 4349cc: 49 8b 47 30 mov 0x30(%r15),%rax 0.00 : 4349d0: 4c 8d 24 85 08 00 00 lea 0x8(,%rax,4),%r12 0.00 : 4349d7: 00 0.00 : 4349d8: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4349dd: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 4349e2: 31 ff xor %edi,%edi 0.00 : 4349e4: e8 37 26 fd ff callq 407020 0.00 : 4349e9: 49 89 d8 mov %rbx,%r8 0.00 : 4349ec: 48 89 c7 mov %rax,%rdi 0.00 : 4349ef: 4c 89 e1 mov %r12,%rcx 0.00 : 4349f2: ba 45 59 44 00 mov $0x445945,%edx 0.00 : 4349f7: be 4f 59 44 00 mov $0x44594f,%esi 0.00 : 4349fc: 31 c0 xor %eax,%eax 0.00 : 4349fe: e8 c7 ca fd ff callq 4114ca 0.00 : 434a03: 49 8b 7f 10 mov 0x10(%r15),%rdi 0.00 : 434a07: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 434a0b: e8 90 21 fd ff callq 406ba0 0.00 : 434a10: 48 89 c7 mov %rax,%rdi 0.00 : 434a13: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 434a18: 48 85 ff test %rdi,%rdi 0.00 : 434a1b: 48 89 38 mov %rdi,(%rax) 0.00 : 434a1e: 74 7c je 434a9c 0.00 : 434a20: 49 8b 57 10 mov 0x10(%r15),%rdx 50.00 : 434a24: 31 f6 xor %esi,%esi 0.00 : 434a26: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 434a2a: e8 b1 1f fd ff callq 4069e0 0.00 : 434a2f: e9 47 fe ff ff jmpq 43487b 0.00 : 434a34: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 434a3a: 0f 84 15 ff ff ff je 434955 0.00 : 434a40: e8 ab fc ff ff callq 4346f0 0.00 : 434a45: e9 01 fe ff ff jmpq 43484b 0.00 : 434a4a: be 0e 03 00 00 mov $0x30e,%esi 0.00 : 434a4f: bf f3 58 44 00 mov $0x4458f3,%edi 0.00 : 434a54: e8 ef c8 fd ff callq 411348 0.00 : 434a59: e8 92 25 fd ff callq 406ff0 <__errno_location@plt> 0.00 : 434a5e: 8b 38 mov (%rax),%edi 0.00 : 434a60: e8 5b 24 fd ff callq 406ec0 0.00 : 434a65: 48 89 c3 mov %rax,%rbx 0.00 : 434a68: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 434a6c: e9 5f ff ff ff jmpq 4349d0 0.00 : 434a71: 4a 8d 3c a5 08 00 00 lea 0x8(,%r12,4),%rdi 0.00 : 434a78: 00 0.00 : 434a79: e8 22 21 fd ff callq 406ba0 0.00 : 434a7e: e9 22 ff ff ff jmpq 4349a5 0.00 : 434a83: b9 f2 5e 44 00 mov $0x445ef2,%ecx 0.00 : 434a88: ba f7 02 00 00 mov $0x2f7,%edx 0.00 : 434a8d: be f3 58 44 00 mov $0x4458f3,%esi 0.00 : 434a92: bf 2c 59 44 00 mov $0x44592c,%edi 0.00 : 434a97: e8 84 20 fd ff callq 406b20 <__assert_fail@plt> 0.00 : 434a9c: be 1a 03 00 00 mov $0x31a,%esi 0.00 : 434aa1: bf f3 58 44 00 mov $0x4458f3,%edi 0.00 : 434aa6: e8 9d c8 fd ff callq 411348 0.00 : 434aab: e8 40 25 fd ff callq 406ff0 <__errno_location@plt> 0.00 : 434ab0: 8b 38 mov (%rax),%edi 0.00 : 434ab2: e8 09 24 fd ff callq 406ec0 0.00 : 434ab7: 49 8b 57 10 mov 0x10(%r15),%rdx 0.00 : 434abb: 48 89 c3 mov %rax,%rbx 0.00 : 434abe: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 434ac3: 31 ff xor %edi,%edi 0.00 : 434ac5: 48 8d 2c d5 00 00 00 lea 0x0(,%rdx,8),%rbp 0.00 : 434acc: 00 0.00 : 434acd: ba 05 00 00 00 mov $0x5,%edx 0.00 : 434ad2: e8 49 25 fd ff callq 407020 0.00 : 434ad7: 49 89 d8 mov %rbx,%r8 0.00 : 434ada: 48 89 c7 mov %rax,%rdi 0.00 : 434add: 48 89 e9 mov %rbp,%rcx 0.00 : 434ae0: ba 58 59 44 00 mov $0x445958,%edx 0.00 : 434ae5: be 4f 59 44 00 mov $0x44594f,%esi 0.00 : 434aea: 31 c0 xor %eax,%eax 0.00 : 434aec: e8 d9 c9 fd ff callq 4114ca Sorted summary for file /bin/gawk ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000439c70 : 50.00 : 439c70: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 439c75: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 439c7a: 48 89 fd mov %rdi,%rbp 0.00 : 439c7d: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 439c82: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 439c87: 49 89 f4 mov %rsi,%r12 0.00 : 439c8a: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 439c8f: 48 83 ec 28 sub $0x28,%rsp 0.00 : 439c93: 48 85 f6 test %rsi,%rsi 0.00 : 439c96: 41 89 d6 mov %edx,%r14d 0.00 : 439c99: 74 07 je 439ca2 0.00 : 439c9b: 48 c7 06 00 00 00 00 movq $0x0,(%rsi) 0.00 : 439ca2: 8b 7d 38 mov 0x38(%rbp),%edi 0.00 : 439ca5: 83 ff 2a cmp $0x2a,%edi 0.00 : 439ca8: 0f 84 42 01 00 00 je 439df0 0.00 : 439cae: 83 ff 48 cmp $0x48,%edi 0.00 : 439cb1: 0f 84 62 01 00 00 je 439e19 0.00 : 439cb7: 83 ff 54 cmp $0x54,%edi 0.00 : 439cba: 0f 84 8d 05 00 00 je 43a24d 0.00 : 439cc0: 83 ff 46 cmp $0x46,%edi 0.00 : 439cc3: 0f 84 ef 02 00 00 je 439fb8 0.00 : 439cc9: 8d 47 f9 lea -0x7(%rdi),%eax 0.00 : 439ccc: 83 f8 5c cmp $0x5c,%eax 0.00 : 439ccf: 90 nop 0.00 : 439cd0: 76 46 jbe 439d18 0.00 : 439cd2: e8 ce 81 fd ff callq 411ea5 0.00 : 439cd7: 48 8b 3d 8a 3a 21 00 mov 0x213a8a(%rip),%rdi # 64d768 0.00 : 439cde: 48 89 c1 mov %rax,%rcx 0.00 : 439ce1: ba 28 67 44 00 mov $0x446728,%edx 0.00 : 439ce6: be 01 00 00 00 mov $0x1,%esi 0.00 : 439ceb: 31 c0 xor %eax,%eax 0.00 : 439ced: e8 ce cd fc ff callq 406ac0 <__fprintf_chk@plt> 0.00 : 439cf2: 48 8b 3d 6f 3a 21 00 mov 0x213a6f(%rip),%rdi # 64d768 0.00 : 439cf9: e8 52 d6 fc ff callq 407350 0.00 : 439cfe: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 439d03: be 8a 08 00 00 mov $0x88a,%esi 0.00 : 439d08: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 439d0d: 31 c0 xor %eax,%eax 0.00 : 439d0f: e8 b6 77 fd ff callq 4114ca 0.00 : 439d14: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 439d18: 89 c2 mov %eax,%edx 0.00 : 439d1a: ff 24 d5 80 79 44 00 jmpq *0x447980(,%rdx,8) 0.00 : 439d21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 439d28: 8b 35 d2 65 21 00 mov 0x2165d2(%rip),%esi # 650300 0.00 : 439d2e: 85 f6 test %esi,%esi 0.00 : 439d30: 74 1e je 439d50 0.00 : 439d32: 45 85 f6 test %r14d,%r14d 0.00 : 439d35: 74 19 je 439d50 0.00 : 439d37: 48 8b 3d a2 ac 21 00 mov 0x21aca2(%rip),%rdi # 6549e0 0.00 : 439d3e: 48 39 7d 00 cmp %rdi,0x0(%rbp) 0.00 : 439d42: 0f 84 da 05 00 00 je 43a322 0.00 : 439d48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 439d4f: 00 0.00 : 439d50: 48 89 e8 mov %rbp,%rax 0.00 : 439d53: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 439d57: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 439d5c: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 439d61: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 439d66: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 439d6b: 48 83 c4 28 add $0x28,%rsp 0.00 : 439d6f: c3 retq 0.00 : 439d70: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 439d74: be 01 00 00 00 mov $0x1,%esi 0.00 : 439d79: e8 a2 ac fd ff callq 414a20 0.00 : 439d7e: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 439d82: 49 89 c5 mov %rax,%r13 0.00 : 439d85: e8 86 b0 fd ff callq 414e10 0.00 : 439d8a: 44 89 f2 mov %r14d,%edx 0.00 : 439d8d: 4c 89 ef mov %r13,%rdi 0.00 : 439d90: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 439d94: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 439d99: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 439d9e: 48 89 c6 mov %rax,%rsi 0.00 : 439da1: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 439da6: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 439dab: 48 83 c4 28 add $0x28,%rsp 0.00 : 439daf: e9 8c b4 fd ff jmpq 415240 0.00 : 439db4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 439db8: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 439dbc: 48 85 ff test %rdi,%rdi 0.00 : 439dbf: 0f 84 0d 05 00 00 je 43a2d2 0.00 : 439dc5: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 439dc8: 83 f8 47 cmp $0x47,%eax 0.00 : 439dcb: 0f 84 87 00 00 00 je 439e58 0.00 : 439dd1: 83 f8 49 cmp $0x49,%eax 0.00 : 439dd4: 0f 84 46 01 00 00 je 439f20 0.00 : 439dda: 31 f6 xor %esi,%esi 0.00 : 439ddc: e8 df e4 ff ff callq 4382c0 0.00 : 439de1: 48 89 c5 mov %rax,%rbp 0.00 : 439de4: e9 7f 00 00 00 jmpq 439e68 0.00 : 439de9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 439df0: f6 45 3d 02 testb $0x2,0x3d(%rbp) 0.00 : 439df4: 0f 85 63 05 00 00 jne 43a35d 0.00 : 439dfa: 48 0f bf 45 20 movswq 0x20(%rbp),%rax 0.00 : 439dff: 48 c1 e0 03 shl $0x3,%rax 0.00 : 439e03: 48 03 05 3e ad 21 00 add 0x21ad3e(%rip),%rax # 654b48 0.00 : 439e0a: 48 8b 28 mov (%rax),%rbp 0.00 : 439e0d: 8b 7d 38 mov 0x38(%rbp),%edi 0.00 : 439e10: 83 ff 48 cmp $0x48,%edi 0.00 : 439e13: 0f 85 9e fe ff ff jne 439cb7 0.00 : 439e19: be c6 01 00 00 mov $0x1c6,%esi 0.00 : 439e1e: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 439e23: e8 20 75 fd ff callq 411348 0.00 : 439e28: 48 89 ef mov %rbp,%rdi 0.00 : 439e2b: e8 c1 e0 fc ff callq 407ef1 0.00 : 439e30: ba 05 00 00 00 mov $0x5,%edx 0.00 : 439e35: 48 89 c3 mov %rax,%rbx 0.00 : 439e38: be 90 6e 44 00 mov $0x446e90,%esi 0.00 : 439e3d: 31 ff xor %edi,%edi 0.00 : 439e3f: e8 dc d1 fc ff callq 407020 0.00 : 439e44: 48 89 de mov %rbx,%rsi 0.00 : 439e47: 48 89 c7 mov %rax,%rdi 0.00 : 439e4a: 31 c0 xor %eax,%eax 0.00 : 439e4c: e8 79 76 fd ff callq 4114ca 0.00 : 439e51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 439e58: 48 8b 2f mov (%rdi),%rbp 0.00 : 439e5b: 48 3b 2d 7e ab 21 00 cmp 0x21ab7e(%rip),%rbp # 6549e0 0.00 : 439e62: 0f 84 72 ff ff ff je 439dda 0.00 : 439e68: 0f b7 55 3c movzwl 0x3c(%rbp),%edx 0.00 : 439e6c: 89 d0 mov %edx,%eax 0.00 : 439e6e: 44 8b 15 8b 64 21 00 mov 0x21648b(%rip),%r10d # 650300 0.00 : 439e75: 45 85 d2 test %r10d,%r10d 0.00 : 439e78: 0f 85 3f 05 00 00 jne 43a3bd 0.00 : 439e7e: 89 d0 mov %edx,%eax 0.00 : 439e80: a8 20 test $0x20,%al 0.00 : 439e82: 0f 84 24 05 00 00 je 43a3ac 0.00 : 439e88: f2 0f 10 45 00 movsd 0x0(%rbp),%xmm0 0.00 : 439e8d: a8 02 test $0x2,%al 0.00 : 439e8f: f2 44 0f 2c e8 cvttsd2si %xmm0,%r13d 0.00 : 439e94: 0f 85 bf 00 00 00 jne 439f59 0.00 : 439e9a: 41 83 fd 00 cmp $0x0,%r13d 0.00 : 439e9e: 0f 8c db 04 00 00 jl 43a37f 0.00 : 439ea4: 0f 84 c6 00 00 00 je 439f70 0.00 : 439eaa: 49 63 fd movslq %r13d,%rdi 0.00 : 439ead: 4c 89 e6 mov %r12,%rsi 0.00 : 439eb0: e8 bb 40 ff ff callq 42df70 0.00 : 439eb5: 48 89 c5 mov %rax,%rbp 0.00 : 439eb8: 8b 05 42 64 21 00 mov 0x216442(%rip),%eax # 650300 0.00 : 439ebe: 85 c0 test %eax,%eax 0.00 : 439ec0: 0f 84 8a fe ff ff je 439d50 0.00 : 439ec6: 45 85 f6 test %r14d,%r14d 0.00 : 439ec9: 0f 84 81 fe ff ff je 439d50 0.00 : 439ecf: 48 8b 45 00 mov 0x0(%rbp),%rax 0.00 : 439ed3: 48 3b 05 1e 61 21 00 cmp 0x21611e(%rip),%rax # 64fff8 0.00 : 439eda: 74 0d je 439ee9 0.00 : 439edc: 48 3b 05 fd aa 21 00 cmp 0x21aafd(%rip),%rax # 6549e0 0.00 : 439ee3: 0f 85 67 fe ff ff jne 439d50 0.00 : 439ee9: be 6d 08 00 00 mov $0x86d,%esi 0.00 : 439eee: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 439ef3: e8 50 74 fd ff callq 411348 0.00 : 439ef8: 31 ff xor %edi,%edi 0.00 : 439efa: ba 05 00 00 00 mov $0x5,%edx 0.00 : 439eff: be 18 08 44 00 mov $0x440818,%esi 0.00 : 439f04: 4c 8b 25 c5 36 21 00 mov 0x2136c5(%rip),%r12 # 64d5d0 0.00 : 439f0b: e8 10 d1 fc ff callq 407020 0.00 : 439f10: 44 89 ee mov %r13d,%esi 0.00 : 439f13: 48 89 c7 mov %rax,%rdi 0.00 : 439f16: 31 c0 xor %eax,%eax 0.00 : 439f18: 41 ff d4 callq *%r12 0.00 : 439f1b: e9 30 fe ff ff jmpq 439d50 0.00 : 439f20: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 439f24: f6 c4 08 test $0x8,%ah 0.00 : 439f27: 0f 85 6a 01 00 00 jne 43a097 0.00 : 439f2d: 44 8b 0d cc 63 21 00 mov 0x2163cc(%rip),%r9d # 650300 50.00 : 439f34: 48 89 fd mov %rdi,%rbp 0.00 : 439f37: 45 85 c9 test %r9d,%r9d 0.00 : 439f3a: 0f 85 7d 04 00 00 jne 43a3bd 0.00 : 439f40: a8 20 test $0x20,%al 0.00 : 439f42: 0f 84 64 04 00 00 je 43a3ac 0.00 : 439f48: f2 0f 10 1f movsd (%rdi),%xmm3 0.00 : 439f4c: a8 02 test $0x2,%al 0.00 : 439f4e: f2 44 0f 2c eb cvttsd2si %xmm3,%r13d 0.00 : 439f53: 0f 84 41 ff ff ff je 439e9a 0.00 : 439f59: 48 89 ef mov %rbp,%rdi 0.00 : 439f5c: e8 ff a7 ff ff callq 434760 0.00 : 439f61: e9 34 ff ff ff jmpq 439e9a 0.00 : 439f66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 439f6d: 00 00 00 0.00 : 439f70: 44 8b 1d ed a9 21 00 mov 0x21a9ed(%rip),%r11d # 654964 0.00 : 439f77: 45 85 db test %r11d,%r11d 0.00 : 439f7a: 0f 84 2a ff ff ff je 439eaa 0.00 : 439f80: 4d 85 e4 test %r12,%r12 0.00 : 439f83: 48 8b 2d ce a9 21 00 mov 0x21a9ce(%rip),%rbp # 654958 0.00 : 439f8a: 0f 85 fa 00 00 00 jne 43a08a 0.00 : 439f90: 8b 15 6a 63 21 00 mov 0x21636a(%rip),%edx # 650300 0.00 : 439f96: 85 d2 test %edx,%edx 0.00 : 439f98: 0f 84 b2 fd ff ff je 439d50 0.00 : 439f9e: e9 23 ff ff ff jmpq 439ec6 0.00 : 439fa3: 48 8b 0d 36 aa 21 00 mov 0x21aa36(%rip),%rcx # 6549e0 0.00 : 439faa: c7 42 38 47 00 00 00 movl $0x47,0x38(%rdx) 0.00 : 439fb1: 48 89 0a mov %rcx,(%rdx) 0.00 : 439fb4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 439fb8: 48 8b 1d 21 aa 21 00 mov 0x21aa21(%rip),%rbx # 6549e0 0.00 : 439fbf: c7 45 38 47 00 00 00 movl $0x47,0x38(%rbp) 0.00 : 439fc6: bf 47 00 00 00 mov $0x47,%edi 0.00 : 439fcb: 48 89 5d 00 mov %rbx,0x0(%rbp) 0.00 : 439fcf: ff 25 93 de 00 00 jmpq *0xde93(%rip) # 447e68 <_IO_stdin_used+0xc348> 0.00 : 439fd5: 0f 1f 00 nopl (%rax) 0.00 : 439fd8: 48 8b 0d 19 aa 21 00 mov 0x21aa19(%rip),%rcx # 6549f8 0.00 : 439fdf: 48 83 f9 ff cmp $0xffffffffffffffff,%rcx 0.00 : 439fe3: 74 5b je 43a040 0.00 : 439fe5: f2 48 0f 2a d1 cvtsi2sd %rcx,%xmm2 0.00 : 439fea: 48 8b 15 0f aa 21 00 mov 0x21aa0f(%rip),%rdx # 654a00 0.00 : 439ff1: 4c 8b 02 mov (%rdx),%r8 0.00 : 439ff4: 66 41 0f 2e 10 ucomisd (%r8),%xmm2 0.00 : 439ff9: 7a 5e jp 43a059 0.00 : 439ffb: 75 5c jne 43a059 0.00 : 439ffd: 4d 85 e4 test %r12,%r12 0.00 : 43a000: 48 89 d5 mov %rdx,%rbp 0.00 : 43a003: 0f 84 47 fd ff ff je 439d50 0.00 : 43a009: 49 c7 04 24 b8 e3 40 movq $0x40e3b8,(%r12) 0.00 : 43a010: 00 0.00 : 43a011: e9 3a fd ff ff jmpq 439d50 0.00 : 43a016: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43a01d: 00 00 00 0.00 : 43a020: 4d 85 e4 test %r12,%r12 0.00 : 43a023: 48 8b 2d 86 a9 21 00 mov 0x21a986(%rip),%rbp # 6549b0 0.00 : 43a02a: 0f 84 20 fd ff ff je 439d50 0.00 : 43a030: 49 c7 04 24 c4 7e 40 movq $0x407ec4,(%r12) 0.00 : 43a037: 00 0.00 : 43a038: e9 13 fd ff ff jmpq 439d50 0.00 : 43a03d: 0f 1f 00 nopl (%rax) 0.00 : 43a040: 4c 89 e6 mov %r12,%rsi 0.00 : 43a043: 48 bf fe ff ff ff ff movabs $0x7ffffffffffffffe,%rdi 0.00 : 43a04a: ff ff 7f 0.00 : 43a04d: e8 1e 3f ff ff callq 42df70 0.00 : 43a052: 48 8b 15 a7 a9 21 00 mov 0x21a9a7(%rip),%rdx # 654a00 0.00 : 43a059: 48 8b 3a mov (%rdx),%rdi 0.00 : 43a05c: e8 ff a6 ff ff callq 434760 0.00 : 43a061: f2 48 0f 2a 05 8e a9 cvtsi2sdq 0x21a98e(%rip),%xmm0 # 6549f8 0.00 : 43a068: 21 00 0.00 : 43a06a: 48 8b 1d 8f a9 21 00 mov 0x21a98f(%rip),%rbx # 654a00 0.00 : 43a071: bf 61 00 00 00 mov $0x61,%edi 0.00 : 43a076: e8 a5 ab ff ff callq 434c20 0.00 : 43a07b: 48 89 03 mov %rax,(%rbx) 0.00 : 43a07e: 48 8b 15 7b a9 21 00 mov 0x21a97b(%rip),%rdx # 654a00 0.00 : 43a085: e9 73 ff ff ff jmpq 439ffd 0.00 : 43a08a: 49 c7 04 24 80 d9 42 movq $0x42d980,(%r12) 0.00 : 43a091: 00 0.00 : 43a092: e9 f9 fe ff ff jmpq 439f90 0.00 : 43a097: e8 14 c0 ff ff callq 4360b0 0.00 : 43a09c: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 43a0a0: 48 89 c5 mov %rax,%rbp 0.00 : 43a0a3: 89 d0 mov %edx,%eax 0.00 : 43a0a5: e9 c4 fd ff ff jmpq 439e6e 0.00 : 43a0aa: 4d 85 e4 test %r12,%r12 0.00 : 43a0ad: 48 8b 2d dc a8 21 00 mov 0x21a8dc(%rip),%rbp # 654990 0.00 : 43a0b4: 0f 84 96 fc ff ff je 439d50 0.00 : 43a0ba: 49 c7 04 24 b0 6d 43 movq $0x436db0,(%r12) 0.00 : 43a0c1: 00 0.00 : 43a0c2: e9 89 fc ff ff jmpq 439d50 0.00 : 43a0c7: 48 8b 05 ba a8 21 00 mov 0x21a8ba(%rip),%rax # 654988 0.00 : 43a0ce: f2 48 0f 2a 0d 11 a9 cvtsi2sdq 0x21a911(%rip),%xmm1 # 6549e8 0.00 : 43a0d5: 21 00 0.00 : 43a0d7: 48 8b 38 mov (%rax),%rdi 0.00 : 43a0da: 66 0f 2e 0f ucomisd (%rdi),%xmm1 0.00 : 43a0de: 7a 02 jp 43a0e2 0.00 : 43a0e0: 74 29 je 43a10b 0.00 : 43a0e2: e8 79 a6 ff ff callq 434760 0.00 : 43a0e7: f2 48 0f 2a 05 f8 a8 cvtsi2sdq 0x21a8f8(%rip),%xmm0 # 6549e8 0.00 : 43a0ee: 21 00 0.00 : 43a0f0: 4c 8b 35 91 a8 21 00 mov 0x21a891(%rip),%r14 # 654988 0.00 : 43a0f7: bf 61 00 00 00 mov $0x61,%edi 0.00 : 43a0fc: e8 1f ab ff ff callq 434c20 0.00 : 43a101: 49 89 06 mov %rax,(%r14) 0.00 : 43a104: 48 8b 05 7d a8 21 00 mov 0x21a87d(%rip),%rax # 654988 0.00 : 43a10b: 4d 85 e4 test %r12,%r12 0.00 : 43a10e: 48 89 c5 mov %rax,%rbp 0.00 : 43a111: 0f 84 39 fc ff ff je 439d50 0.00 : 43a117: 49 c7 04 24 10 fb 42 movq $0x42fb10,(%r12) 0.00 : 43a11e: 00 0.00 : 43a11f: e9 2c fc ff ff jmpq 439d50 0.00 : 43a124: 4d 85 e4 test %r12,%r12 0.00 : 43a127: 48 8b 2d 72 a9 21 00 mov 0x21a972(%rip),%rbp # 654aa0 0.00 : 43a12e: 0f 84 1c fc ff ff je 439d50 0.00 : 43a134: 49 c7 04 24 dd 1b 41 movq $0x411bdd,(%r12) 0.00 : 43a13b: 00 0.00 : 43a13c: e9 0f fc ff ff jmpq 439d50 0.00 : 43a141: 4d 85 e4 test %r12,%r12 0.00 : 43a144: 48 8b 2d a5 a8 21 00 mov 0x21a8a5(%rip),%rbp # 6549f0 0.00 : 43a14b: 0f 84 ff fb ff ff je 439d50 0.00 : 43a151: 49 c7 04 24 10 6e 43 movq $0x436e10,(%r12) 0.00 : 43a158: 00 0.00 : 43a159: e9 f2 fb ff ff jmpq 439d50 0.00 : 43a15e: 4d 85 e4 test %r12,%r12 0.00 : 43a161: 48 8b 2d 70 a9 21 00 mov 0x21a970(%rip),%rbp # 654ad8 0.00 : 43a168: 0f 84 e2 fb ff ff je 439d50 0.00 : 43a16e: 49 c7 04 24 49 e6 40 movq $0x40e649,(%r12) 0.00 : 43a175: 00 0.00 : 43a176: e9 d5 fb ff ff jmpq 439d50 0.00 : 43a17b: 48 8b 05 96 a9 21 00 mov 0x21a996(%rip),%rax # 654b18 0.00 : 43a182: f2 48 0f 2a 05 3d a9 cvtsi2sdq 0x21a93d(%rip),%xmm0 # 654ac8 0.00 : 43a189: 21 00 0.00 : 43a18b: 48 8b 38 mov (%rax),%rdi 0.00 : 43a18e: 66 0f 2e 07 ucomisd (%rdi),%xmm0 0.00 : 43a192: 7a 02 jp 43a196 0.00 : 43a194: 74 2a je 43a1c0 0.00 : 43a196: e8 c5 a5 ff ff callq 434760 0.00 : 43a19b: f2 48 0f 2a 05 24 a9 cvtsi2sdq 0x21a924(%rip),%xmm0 # 654ac8 0.00 : 43a1a2: 21 00 0.00 : 43a1a4: 48 8b 2d 6d a9 21 00 mov 0x21a96d(%rip),%rbp # 654b18 0.00 : 43a1ab: bf 61 00 00 00 mov $0x61,%edi 0.00 : 43a1b0: e8 6b aa ff ff callq 434c20 0.00 : 43a1b5: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 43a1b9: 48 8b 05 58 a9 21 00 mov 0x21a958(%rip),%rax # 654b18 0.00 : 43a1c0: 4d 85 e4 test %r12,%r12 0.00 : 43a1c3: 48 89 c5 mov %rax,%rbp 0.00 : 43a1c6: 0f 84 84 fb ff ff je 439d50 0.00 : 43a1cc: 49 c7 04 24 f0 fa 42 movq $0x42faf0,(%r12) 0.00 : 43a1d3: 00 0.00 : 43a1d4: e9 77 fb ff ff jmpq 439d50 0.00 : 43a1d9: 4d 85 e4 test %r12,%r12 0.00 : 43a1dc: 48 8b 2d d5 a8 21 00 mov 0x21a8d5(%rip),%rbp # 654ab8 0.00 : 43a1e3: 0f 84 67 fb ff ff je 439d50 0.00 : 43a1e9: 49 c7 04 24 20 d1 42 movq $0x42d120,(%r12) 0.00 : 43a1f0: 00 0.00 : 43a1f1: e9 5a fb ff ff jmpq 439d50 0.00 : 43a1f6: 4d 85 e4 test %r12,%r12 0.00 : 43a1f9: 48 8b 2d c0 a7 21 00 mov 0x21a7c0(%rip),%rbp # 6549c0 0.00 : 43a200: 0f 84 4a fb ff ff je 439d50 0.00 : 43a206: 49 c7 04 24 b6 1f 41 movq $0x411fb6,(%r12) 0.00 : 43a20d: 00 0.00 : 43a20e: e9 3d fb ff ff jmpq 439d50 0.00 : 43a213: 4d 85 e4 test %r12,%r12 0.00 : 43a216: 48 8b 2d 83 a7 21 00 mov 0x21a783(%rip),%rbp # 6549a0 0.00 : 43a21d: 0f 84 2d fb ff ff je 439d50 0.00 : 43a223: 49 c7 04 24 49 1a 41 movq $0x411a49,(%r12) 0.00 : 43a22a: 00 0.00 : 43a22b: e9 20 fb ff ff jmpq 439d50 0.00 : 43a230: 4d 85 e4 test %r12,%r12 0.00 : 43a233: 48 8b 2d 6e a7 21 00 mov 0x21a76e(%rip),%rbp # 6549a8 0.00 : 43a23a: 0f 84 10 fb ff ff je 439d50 0.00 : 43a240: 49 c7 04 24 50 6d 43 movq $0x436d50,(%r12) 0.00 : 43a247: 00 0.00 : 43a248: e9 03 fb ff ff jmpq 439d50 0.00 : 43a24d: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 43a251: 8b 42 38 mov 0x38(%rdx),%eax 0.00 : 43a254: 83 f8 47 cmp $0x47,%eax 0.00 : 43a257: 0f 84 5b fd ff ff je 439fb8 0.00 : 43a25d: 83 f8 48 cmp $0x48,%eax 0.00 : 43a260: 74 49 je 43a2ab 0.00 : 43a262: 83 f8 46 cmp $0x46,%eax 0.00 : 43a265: 0f 84 38 fd ff ff je 439fa3 0.00 : 43a26b: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43a270: be d5 01 00 00 mov $0x1d5,%esi 0.00 : 43a275: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43a27a: 31 c0 xor %eax,%eax 0.00 : 43a27c: e8 49 72 fd ff callq 4114ca 0.00 : 43a281: be 7a 08 00 00 mov $0x87a,%esi 0.00 : 43a286: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43a28b: e8 b8 70 fd ff callq 411348 0.00 : 43a290: 31 ff xor %edi,%edi 0.00 : 43a292: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43a297: be 40 70 44 00 mov $0x447040,%esi 0.00 : 43a29c: e8 7f cd fc ff callq 407020 0.00 : 43a2a1: 48 89 c7 mov %rax,%rdi 0.00 : 43a2a4: 31 c0 xor %eax,%eax 0.00 : 43a2a6: e8 1f 72 fd ff callq 4114ca 0.00 : 43a2ab: be cc 01 00 00 mov $0x1cc,%esi 0.00 : 43a2b0: e9 69 fb ff ff jmpq 439e1e 0.00 : 43a2b5: 4d 85 e4 test %r12,%r12 0.00 : 43a2b8: 48 8b 2d 39 a8 21 00 mov 0x21a839(%rip),%rbp # 654af8 0.00 : 43a2bf: 0f 84 8b fa ff ff je 439d50 0.00 : 43a2c5: 49 c7 04 24 30 fb 42 movq $0x42fb30,(%r12) 0.00 : 43a2cc: 00 0.00 : 43a2cd: e9 7e fa ff ff jmpq 439d50 0.00 : 43a2d2: ba 0c 66 44 00 mov $0x44660c,%edx 0.00 : 43a2d7: be 5a 08 00 00 mov $0x85a,%esi 0.00 : 43a2dc: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 43a2e1: 31 c0 xor %eax,%eax 0.00 : 43a2e3: e8 e2 71 fd ff callq 4114ca 0.00 : 43a2e8: 4d 85 e4 test %r12,%r12 0.00 : 43a2eb: 48 8b 2d e6 a6 21 00 mov 0x21a6e6(%rip),%rbp # 6549d8 0.00 : 43a2f2: 0f 84 58 fa ff ff je 439d50 0.00 : 43a2f8: 49 c7 04 24 f0 6c 43 movq $0x436cf0,(%r12) 0.00 : 43a2ff: 00 0.00 : 43a300: e9 4b fa ff ff jmpq 439d50 0.00 : 43a305: 4d 85 e4 test %r12,%r12 0.00 : 43a308: 48 8b 2d 11 a8 21 00 mov 0x21a811(%rip),%rbp # 654b20 0.00 : 43a30f: 0f 84 3b fa ff ff je 439d50 0.00 : 43a315: 49 c7 04 24 50 6e 43 movq $0x436e50,(%r12) 0.00 : 43a31c: 00 0.00 : 43a31d: e9 2e fa ff ff jmpq 439d50 0.00 : 43a322: be e4 07 00 00 mov $0x7e4,%esi 0.00 : 43a327: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43a32c: e8 17 70 fd ff callq 411348 0.00 : 43a331: 4c 8b 65 18 mov 0x18(%rbp),%r12 0.00 : 43a335: 31 ff xor %edi,%edi 0.00 : 43a337: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43a33c: be c0 6e 44 00 mov $0x446ec0,%esi 0.00 : 43a341: 4c 8b 2d 88 32 21 00 mov 0x213288(%rip),%r13 # 64d5d0 0.00 : 43a348: e8 d3 cc fc ff callq 407020 0.00 : 43a34d: 4c 89 e6 mov %r12,%rsi 0.00 : 43a350: 48 89 c7 mov %rax,%rdi 0.00 : 43a353: 31 c0 xor %eax,%eax 0.00 : 43a355: 41 ff d5 callq *%r13 0.00 : 43a358: e9 f3 f9 ff ff jmpq 439d50 0.00 : 43a35d: be db 07 00 00 mov $0x7db,%esi 0.00 : 43a362: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43a367: e8 dc 6f fd ff callq 411348 0.00 : 43a36c: 48 8b 5d 18 mov 0x18(%rbp),%rbx 0.00 : 43a370: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43a375: be 28 6e 44 00 mov $0x446e28,%esi 0.00 : 43a37a: e9 be fa ff ff jmpq 439e3d 0.00 : 43a37f: be 65 08 00 00 mov $0x865,%esi 0.00 : 43a384: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43a389: e8 ba 6f fd ff callq 411348 0.00 : 43a38e: be 0d 67 44 00 mov $0x44670d,%esi 0.00 : 43a393: 31 ff xor %edi,%edi 0.00 : 43a395: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43a39a: e8 81 cc fc ff callq 407020 0.00 : 43a39f: 44 89 ee mov %r13d,%esi 0.00 : 43a3a2: 48 89 c7 mov %rax,%rdi 0.00 : 43a3a5: 31 c0 xor %eax,%eax 0.00 : 43a3a7: e8 1e 71 fd ff callq 4114ca 0.00 : 43a3ac: 48 89 ef mov %rbp,%rdi 0.00 : 43a3af: e8 fc b3 ff ff callq 4357b0 0.00 : 43a3b4: 0f b7 45 3c movzwl 0x3c(%rbp),%eax 0.00 : 43a3b8: e9 d0 fa ff ff jmpq 439e8d 0.00 : 43a3bd: a8 40 test $0x40,%al 0.00 : 43a3bf: 90 nop 0.00 : 43a3c0: 0f 85 ba fa ff ff jne 439e80 0.00 : 43a3c6: be 5d 08 00 00 mov $0x85d,%esi 0.00 : 43a3cb: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43a3d0: e8 73 6f fd ff callq 411348 0.00 : 43a3d5: 31 ff xor %edi,%edi 0.00 : 43a3d7: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43a3dc: be e0 6f 44 00 mov $0x446fe0,%esi 0.00 : 43a3e1: 4c 8b 2d e8 31 21 00 mov 0x2131e8(%rip),%r13 # 64d5d0 0.00 : 43a3e8: e8 33 cc fc ff callq 407020 0.00 : 43a3ed: 48 89 c7 mov %rax,%rdi 0.00 : 43a3f0: 31 c0 xor %eax,%eax 0.00 : 43a3f2: 41 ff d5 callq *%r13 0.00 : 43a3f5: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 43a3fa: 75 2e jne 43a42a 0.00 : 43a3fc: be 5f 08 00 00 mov $0x85f,%esi 0.00 : 43a401: bf 0c 66 44 00 mov $0x44660c,%edi 0.00 : 43a406: e8 3d 6f fd ff callq 411348 0.00 : 43a40b: 31 ff xor %edi,%edi 0.00 : 43a40d: ba 05 00 00 00 mov $0x5,%edx 0.00 : 43a412: be 18 70 44 00 mov $0x447018,%esi 0.00 : 43a417: 48 8b 1d b2 31 21 00 mov 0x2131b2(%rip),%rbx # 64d5d0 0.00 : 43a41e: e8 fd cb fc ff callq 407020 0.00 : 43a423: 48 89 c7 mov %rax,%rdi 0.00 : 43a426: 31 c0 xor %eax,%eax 0.00 : 43a428: ff d3 callq *%rbx 0.00 : 43a42a: 0f b7 45 3c movzwl 0x3c(%rbp),%eax 0.00 : 43a42e: e9 4d fa ff ff jmpq 439e80 Sorted summary for file /bin/bash ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042b8b0 : 0.00 : 42b8b0: 55 push %rbp 33.33 : 42b8b1: 48 89 fd mov %rdi,%rbp 0.00 : 42b8b4: 53 push %rbx 0.00 : 42b8b5: 48 83 ec 08 sub $0x8,%rsp 0.00 : 42b8b9: 48 85 f6 test %rsi,%rsi 0.00 : 42b8bc: 74 3a je 42b8f8 0.00 : 42b8be: 48 89 f3 mov %rsi,%rbx 0.00 : 42b8c1: eb 0e jmp 42b8d1 0.00 : 42b8c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42b8c8: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 42b8cc: 48 85 db test %rbx,%rbx 0.00 : 42b8cf: 74 27 je 42b8f8 33.33 : 42b8d1: 48 8b 73 20 mov 0x20(%rbx),%rsi 33.33 : 42b8d5: 31 d2 xor %edx,%edx 0.00 : 42b8d7: 48 89 ef mov %rbp,%rdi 0.00 : 42b8da: e8 31 8e 01 00 callq 444710 0.00 : 42b8df: 48 85 c0 test %rax,%rax 0.00 : 42b8e2: 74 e4 je 42b8c8 0.00 : 42b8e4: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 42b8e8: 48 85 c0 test %rax,%rax 0.00 : 42b8eb: 74 db je 42b8c8 0.00 : 42b8ed: 48 83 c4 08 add $0x8,%rsp 0.00 : 42b8f1: 5b pop %rbx 0.00 : 42b8f2: 5d pop %rbp 0.00 : 42b8f3: c3 retq 0.00 : 42b8f4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42b8f8: 48 83 c4 08 add $0x8,%rsp 0.00 : 42b8fc: 31 c0 xor %eax,%eax 0.00 : 42b8fe: 5b pop %rbx 0.00 : 42b8ff: 5d pop %rbp Sorted summary for file /bin/bash ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004528d0 : 66.67 : 4528d0: 31 d2 xor %edx,%edx 33.33 : 4528d2: 31 c0 xor %eax,%eax 0.00 : 4528d4: 48 85 ff test %rdi,%rdi 0.00 : 4528d7: 75 0a jne 4528e3 0.00 : 4528d9: eb 19 jmp 4528f4 0.00 : 4528db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4528e0: 48 89 c7 mov %rax,%rdi 0.00 : 4528e3: 48 8b 07 mov (%rdi),%rax 0.00 : 4528e6: 48 89 17 mov %rdx,(%rdi) 0.00 : 4528e9: 48 89 fa mov %rdi,%rdx 0.00 : 4528ec: 48 85 c0 test %rax,%rax 0.00 : 4528ef: 75 ef jne 4528e0 0.00 : 4528f1: 48 89 f8 mov %rdi,%rax 0.00 : 4528f4: f3 c3 repz retq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/scsi_mod.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/scsi_mod.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005cd0 : 100.00 : 5cd0: 48 83 ec 18 sub $0x18,%rsp 0.00 : 5d04: 48 89 rex.RB (bad) 0.00 : 5d06: 6c 24 08 48 89 1c jae 5db0 0.00 : 5d0c: 24 48 89 fd mov 0x70(%rbp),%rcx 0.00 : 5d10: 4c 89 64 24 10 48 8b mov 0x0(%rip),%rdx # 5d17 0.00 : 5d17: 3f 4c 8b mov %rcx,%rax 0.00 : 5d1a: a7 b8 00 00 add 0x78(%rbp),%rax 0.00 : 5d1e: 00 49 83 cmp %rax,%rdx 0.00 : 5d21: bc 24 a8 00 00 00 js 5db0 0.00 : 5d27: 00 0f 84 b2 add 0x68(%rbp),%rcx 0.00 : 5d2b: 00 00 00 0f b7 45 60 mov 0x0(%rip),%rax # 5d32 0.00 : 5d32: 66 3b 45 cmp %rcx,%rax 0.00 : 5d35: 62 0f js 5db0 0.00 : 5d37: 83 a4 xor %esi,%esi 0.00 : 5d39: 00 00 00 48 8b callq 5d3e 0.00 : 5d3e: 4d 70 48 test %rax,%rax 0.00 : 5d41: 8b 15 00 mov %rax,%rbx 0.00 : 5d44: 00 00 jne 5d64 0.00 : 5d46: 00 48 jmp 5db0 0.00 : 5d48: 89 c8 48 03 45 78 48 nopl 0x0(%rax,%rax,1) 0.00 : 5d4f: 39 0.00 : 5d50: c2 0f 88 89 mov 0x0(%rbp),%rdi 0.00 : 5d54: 00 00 00 mov %rbx,%rsi 0.00 : 5d57: 48 03 4d 68 48 callq 5d5c 0.00 : 5d5c: 8b 05 00 test %rax,%rax 0.00 : 5d5f: 00 00 00 mov %rax,%rbx 0.00 : 5d62: 48 39 je 5db0 0.00 : 5d64: c8 78 79 31 f6 e8 mov 0x88(%rbx),%eax 0.00 : 5d6a: 00 00 00 00 48 85 cmp 0x88(%rbp),%eax 0.00 : 5d70: c0 48 jne 5d50 0.00 : 5d72: 89 c3 75 1e eb 68 mov 0x80(%rbx),%eax 0.00 : 5d78: 0f 1f 84 00 00 00 cmp 0x80(%rbp),%eax 0.00 : 5d7e: 00 00 jne 5d50 0.00 : 5d80: 48 8b 7d 00 movzwl 0x60(%rbx),%eax 0.00 : 5d84: 48 89 de e8 cmp 0x62(%rbp),%ax 0.00 : 5d88: 00 00 je 5d50 0.00 : 5d8a: 00 00 48 movzwl %ax,%esi 0.00 : 5d8d: 85 c0 48 89 c3 mov $0x2,%edx 0.00 : 5d92: 74 4c 8b mov %rbx,%rdi 0.00 : 5d95: 83 88 00 add $0x1,%esi 0.00 : 5d98: 00 00 3b 85 88 00 00 callq *0xa8(%r12) 0.00 : 5d9f: 00 0.00 : 5da0: 75 de 8b 83 80 00 00 mov 0x0(%rip),%rax # 5da7 0.00 : 5da7: 00 3b 85 80 mov %rax,0x78(%rbp) 0.00 : 5dab: 00 00 jmp 5d50 0.00 : 5dad: 00 75 d0 nopl (%rax) 0.00 : 5db0: 0f b7 43 60 mov (%rsp),%rbx 0.00 : 5db4: 66 3b 45 62 74 mov 0x8(%rsp),%rbp 0.00 : 5db9: c6 0f b7 f0 ba mov 0x10(%rsp),%r12 0.00 : 5dbe: 02 00 00 00 add $0x18,%rsp 0.00 : 5dc2: 48 retq : 5dc3: 89 df 83 c6 01 41 ff data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 5dca: 94 24 a8 00 00 00 : 5dd0: 48 8b push %r12 : 5dd2: 05 push %rbp : 5dd3: 00 00 00 mov %rdi,%rbp : 5dd6: 00 push %rbx : 5dd7: 48 89 45 mov (%rdi),%rdi : 5dda: 78 eb a3 0f 1f 00 48 mov 0xb8(%rdi),%r12 : 5de1: 8b 1c 24 48 8b 6c 24 cmpq $0x0,0xa8(%r12) : 5de8: 08 4c : 5dea: 8b 64 je 5e50 : 5dec: 24 10 xor %esi,%esi : 5dee: 48 83 c4 18 c3 callq 5df3 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/scsi_mod.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/scsi_mod.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000bfc0 : 0.00 : bfc0: 8b 57 60 mov 0x60(%rdi),%edx 100.00 : bff3: 85 d2 74 49 sub %cl,-0x7b(%rax) 0.00 : bff7: 48 (bad) 0.00 : bff8: 8b 07 je c010 0.00 : bffa: 8b 4f 4c xor %r8d,%r8d 0.00 : bffd: 48 8b 77 mov %r9,%rdi 0.00 : c000: 58 48 8b mov %rax,%r11 0.00 : c003: 00 4c 8b jmpq *%r11 0.00 : c006: 88 68 06 00 00 4d 85 nopw %cs:0x0(%rax,%rax,1) 0.00 : c00d: c9 74 40 0.00 : c010: 49 retq 0.00 : c011: 8b 81 00 02 00 00 48 nopl 0x0(%rax) 0.00 : c018: 85 c0 ud2 0.00 : c01a: 74 34 jmp c01a 0.00 : c01c: 83 f9 02 77 nopl 0x0(%rax) 0.00 : c020: 27 48 8b 40 28 48 85 mov 0x0(%rip),%rax # c027 0.00 : c027: c0 74 jmp bfec : c029: 16 45 31 c0 4c 89 cf nopl 0x0(%rax) : c030: 49 89 push %r15 : c032: c3 41 xor %edx,%edx : c034: ff e3 push %r14 : c036: 66 2e push %r13 : c038: 0f 1f push %r12 : c03a: 84 push %rbp : c03b: 00 push %rbx : c03c: 00 00 00 00 sub $0x8,%rsp : c040: c3 0f 1f 80 mov 0x60(%rdi),%r12d : c044: 00 00 00 test %r12d,%r12d : c047: 00 0f je c0b8 : c049: 0b eb fe mov (%rdi),%rax : c04c: 0f 1f 40 00 mov 0x4c(%rdi),%r15d : c050: 48 8b 05 00 mov 0x58(%rdi),%r14 : c054: 00 00 00 mov (%rax),%rax : c057: eb c3 0f 1f 80 00 00 mov 0x668(%rax),%r13 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000000 : 100.00 : 0: f3 c3 repz retq : 32: 66 66 66 add %cl,-0x75(%rax) : 35: 66 66 test %ebx,%eax : 37: 2e 0f add %al,(%rax) : 39: 1f 84 00 add %ah,-0x9(%rsi) : 3c: 00 00 00 adc %r8b,(%rsi) : ... Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007940 : 0.00 : 7940: 41 57 push %r15 0.00 : 7972: ba rex.WRX 0.00 : 7973: 01 00 00 00 49 89 ff jne 7b3f 0.00 : 797a: 41 56 41 movzwl %cx,%eax 0.00 : 797d: 55 41 54 movzwl %si,%esi 0.00 : 7980: 55 53 mov %eax,%edx 0.00 : 7982: 48 83 ec 48 mov %esi,0x44(%rsp) 0.00 : 7986: 48 8b 07 mov %eax,%r12d 0.00 : 7989: 48 89 44 24 lea (%rdx,%rdx,2),%rbx 0.00 : 798d: 30 48 8b mov %rdx,%rbp 0.00 : 7990: 80 08 02 00 00 movzwl 0x44(%r14),%edx 0.00 : 7995: 4c 8b 77 38 shl $0x4,%rbp 0.00 : 7999: 0f b7 77 48 add 0x20(%r14),%rbp 0.00 : 799d: a8 04 41 0f shl $0x4,%rbx 0.00 : 79a1: b7 4e 48 0f add 0x18(%r14),%rbx 0.00 : 79a5: 85 c5 01 00 00 0f b7 movl $0x0,0x3c(%rsp) 0.00 : 79ac: c1 0.00 : 79ad: 0f b7 f6 89 c2 89 74 movl $0x0,0x40(%rsp) 0.00 : 79b4: 24 0.00 : 79b5: 44 41 89 sub %edx,%r12d 0.00 : 79b8: c4 48 8d 1c 52 48 89 nopl 0x0(%rax,%rax,1) 0.00 : 79bf: d5 0.00 : 79c0: 41 0f b7 mov (%rbx),%r13 100.00 : 79c3: 56 44 48 test %r13,%r13 0.00 : 79c6: c1 e5 04 49 03 6e je 7ac1 0.00 : 79cc: 20 48 c1 lfence 0.00 : 79cf: e3 04 49 03 5e testb $0x1,0xc(%r13) 0.00 : 79d4: 18 c7 44 24 3c 00 je 7ac1 0.00 : 79da: 00 00 00 c7 44 24 40 movq $0x0,(%rbx) 0.00 : 79e1: 00 00 00 mov 0x18(%rbx),%ecx 0.00 : 79e4: 00 41 29 d4 add %ecx,0x3c(%rsp) 0.00 : 79e8: 0f 1f 84 00 movzwl 0x1c(%rbx),%eax 0.00 : 79ec: 00 00 00 00 add %eax,0x40(%rsp) 0.00 : 79f0: 4c 8b 2b 4d mov 0x10(%rbx),%rdi 0.00 : 79f4: 85 ed 0f 84 f5 callq 79f9 0.00 : 79f9: 00 00 00 0f mov 0x10(%r14),%rdi 0.00 : 79fd: ae e8 41 mov 0x28(%rbx),%edx 0.00 : 7a00: f6 45 0c 01 mov 0x20(%rbx),%rsi 0.00 : 7a04: 0f 84 e7 test %rdi,%rdi 0.00 : 7a07: 00 00 00 48 c7 03 je 7b60 0.00 : 7a0d: 00 00 00 00 8b 4b 18 mov 0x200(%rdi),%rax 0.00 : 7a14: 01 4c 24 test %rax,%rax 0.00 : 7a17: 3c 0f b7 43 1c 01 je 7b60 0.00 : 7a1d: 44 24 40 48 mov 0x18(%rax),%rax 0.00 : 7a21: 8b 7b 10 test %rax,%rax 0.00 : 7a24: e8 00 je 7a32 0.00 : 7a26: 00 00 mov %edx,%edx 0.00 : 7a28: 00 49 8b xor %r8d,%r8d 0.00 : 7a2b: 7e 10 8b 53 28 mov $0x1,%ecx 0.00 : 7a30: 48 8b callq *%rax 0.00 : 7a32: 73 20 48 85 ff 0f 84 movq $0x0,0x10(%rbx) 0.00 : 7a39: 53 0.00 : 7a3a: 01 00 00 48 8b 87 00 movl $0x0,0x28(%rbx) 0.00 : 7a41: 02 00 00 cmp %r13,%rbp 0.00 : 7a44: 48 85 je 7aa0 0.00 : 7a46: c0 0f 84 43 add $0x1,%r12d 0.00 : 7a4a: 01 00 00 48 8b 40 je 7b6c 0.00 : 7a50: 18 48 85 c0 add $0x30,%rbx 0.00 : 7a54: 74 0c 89 d2 add $0x10,%rbp 0.00 : 7a58: 45 31 c0 mov 0x28(%rbx),%edx 0.00 : 7a5b: b9 01 test %edx,%edx 0.00 : 7a5d: 00 00 je 7a41 0.00 : 7a5f: 00 ff d0 48 mov 0x10(%r14),%rdi 0.00 : 7a63: c7 43 10 00 mov 0x20(%rbx),%rsi 0.00 : 7a67: 00 00 00 test %rdi,%rdi 0.00 : 7a6a: c7 43 28 00 00 00 je 7b50 0.00 : 7a70: 00 4c 39 ed 74 5a 41 mov 0x200(%rdi),%rax 0.00 : 7a77: 83 c4 01 test %rax,%rax 0.00 : 7a7a: 0f 84 1c 01 00 00 je 7b50 0.00 : 7a80: 48 83 c3 30 mov 0x18(%rax),%rax 0.00 : 7a84: 48 83 c5 test %rax,%rax 0.00 : 7a87: 10 8b je 7a3a 0.00 : 7a89: 53 28 mov %edx,%edx 0.00 : 7a8b: 85 d2 74 xor %r8d,%r8d 0.00 : 7a8e: e2 49 8b 7e 10 mov $0x1,%ecx 0.00 : 7a93: 48 8b callq *%rax 0.00 : 7a95: 73 20 jmp 7a3a 0.00 : 7a97: 48 85 ff 0f 84 e0 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a9e: 00 00 0.00 : 7aa0: 48 8b 87 00 add $0x1,%r12d 0.00 : 7aa4: 02 00 00 48 85 c0 je 7c2a 0.00 : 7aaa: 0f 84 d0 00 add $0x30,%rbx 0.00 : 7aae: 00 00 48 8b add $0x10,%rbp 0.00 : 7ab2: 40 18 48 85 c0 subl $0x1,0x44(%rsp) 0.00 : 7ab7: 74 b1 89 d2 prefetcht0 0x0(%rbp) 0.00 : 7abb: 45 31 c0 b9 01 00 jne 79c0 0.00 : 7ac1: 00 00 ff d0 eb movzwl 0x44(%r14),%eax 0.00 : 7ac6: a3 66 0f 1f lea (%r12,%rax,1),%eax 0.00 : 7aca: 84 00 00 00 00 mov %ax,0x48(%r14) 0.00 : 7acf: 00 41 83 c4 mov 0x3c(%rsp),%eax 0.00 : 7ad3: 01 0f 84 80 add %rax,0x58(%r14) 0.00 : 7ad7: 01 00 00 48 mov 0x40(%rsp),%eax 0.00 : 7adb: 83 c3 30 48 add %rax,0x50(%r14) 0.00 : 7adf: 83 c5 10 83 mov 0x3c(%rsp),%eax 0.00 : 7ae3: 6c 24 44 01 mov 0x40(%rsp),%edx 0.00 : 7ae7: 0f 18 4d 00 add %eax,0x40(%r15) 0.00 : 7aeb: 0f 85 ff fe add %edx,0x44(%r15) 0.00 : 7aef: ff ff 41 0f lea 0x28(%r14),%rdx 0.00 : 7af3: b7 46 44 41 mov 0x28(%r14),%rax 0.00 : 7af7: 8d 04 test $0x8,%al 0.00 : 7af9: 04 66 je 7b2a 0.00 : 7afb: 41 89 46 48 8b 44 lock andb $0xf7,0x28(%r14) 0.00 : 7b01: 24 3c 49 01 cmpq $0x0,(%rbx) 0.00 : 7b05: 46 58 je 7b2a 0.00 : 7b07: 8b 44 24 40 49 mov 0x30(%rsp),%rcx 0.00 : 7b0c: 01 46 50 8b 44 24 3c mov 0x0(%rip),%rdx # 7b13 0.00 : 7b13: 8b 54 24 40 41 01 47 movzbl 0x441(%rcx),%eax 0.00 : 7b1a: 40 41 01 57 44 49 8d imul $0xfa,%rax,%rax 0.00 : 7b21: 56 28 49 8b add 0x8(%rbx),%rax 0.00 : 7b25: 46 28 a8 cmp %rdx,%rax 0.00 : 7b28: 08 74 js 7b81 0.00 : 7b2a: 2f f0 41 80 mov 0x40(%rsp),%eax 0.00 : 7b2e: 66 28 test %eax,%eax 0.00 : 7b30: f7 48 83 3b 00 74 jne 7c3f 0.00 : 7b36: 23 48 8b 4c mov 0x44(%rsp),%eax 0.00 : 7b3a: 24 30 test %eax,%eax 0.00 : 7b3c: 48 8b 15 setne %dl 0.00 : 7b3f: 00 00 00 00 add $0x48,%rsp 0.00 : 7b43: 0f b6 mov %edx,%eax 0.00 : 7b45: 81 pop %rbx 0.00 : 7b46: 41 pop %rbp 0.00 : 7b47: 04 00 pop %r12 0.00 : 7b49: 00 48 pop %r13 0.00 : 7b4b: 69 c0 pop %r14 0.00 : 7b4d: fa 00 pop %r15 0.00 : 7b4f: 00 retq 0.00 : 7b50: 00 48 03 43 08 48 39 mov 0x0(%rip),%rax # 7b57 0.00 : 7b57: d0 78 57 8b 44 jmpq 7a80 0.00 : 7b5c: 24 40 85 c0 nopl 0x0(%rax) 0.00 : 7b60: 0f 85 09 01 00 00 8b mov 0x0(%rip),%rax # 7b67 0.00 : 7b67: 44 24 44 85 c0 jmpq 7a1d 0.00 : 7b6c: 0f 95 c2 48 83 movzwl 0x44(%r14),%r12d 0.00 : 7b71: c4 48 89 d0 mov 0x18(%r14),%rbx 0.00 : 7b75: 5b 5d 41 5c mov 0x20(%r14),%rbp 0.00 : 7b79: 41 5d 41 neg %r12d 0.00 : 7b7c: 5e 41 5f c3 48 jmpq 7a58 0.00 : 7b81: 8b 05 00 00 00 00 e9 mov 0x570(%rcx),%rax 0.00 : 7b88: 24 ff ff ff add $0x8,%rax 0.00 : 7b8c: 0f 1f mov (%rax),%eax 0.00 : 7b8e: 40 00 test $0x10,%al 0.00 : 7b90: 48 8b jne 7b2a 0.00 : 7b92: 05 00 00 mov (%rbx),%rsi 0.00 : 7b95: 00 00 e9 b1 fe ff ff mov 0x0(%rip),%rbp # 7b9c 0.00 : 7b9c: 45 0f b7 66 mov 0x8(%rbx),%r11 0.00 : 7ba0: 44 49 8b 5e 18 movzwl 0x48(%r14),%r10d 0.00 : 7ba5: 49 8b 6e 20 41 movzwl 0x4a(%r14),%r9d 0.00 : 7baa: f7 dc e9 d7 mov 0x30(%r14),%rax 0.00 : 7bae: fe ff ff 48 mov 0xc(%rsi),%r12d 0.00 : 7bb2: 8b 81 70 mov (%rax),%r8d 0.00 : 7bb5: 05 00 00 48 83 movzbl 0x47(%r14),%eax 0.00 : 7bba: c0 08 8b 00 a8 10 75 mov 0x570(%rcx),%rdx 0.00 : 7bc1: 98 48 cmp $0x3,%al 0.00 : 7bc3: 8b 33 48 8b 2d 00 ja 7cbc 0.00 : 7bc9: 00 00 00 movzbl %al,%eax 0.00 : 7bcc: 4c 8b 5b shl $0x8,%eax 0.00 : 7bcf: 08 45 0f b7 56 add $0x3810,%eax 0.00 : 7bd4: 48 45 cltq 0.00 : 7bd6: 0f b7 4e 4a lea (%rdx,%rax,1),%rax 0.00 : 7bda: 49 8b mov (%rax),%ecx 0.00 : 7bdc: 46 30 44 8b 66 movzbl 0x46(%r14),%edx 0.00 : 7be1: 0c 44 8b 00 mov 0x10(%r14),%rdi 0.00 : 7be5: 41 0f b6 46 movzwl %r10w,%eax 0.00 : 7be9: 47 48 8b 91 70 mov %rsi,0x10(%rsp) 0.00 : 7bee: 05 00 00 mov %eax,(%rsp) 0.00 : 7bf1: 3c 03 0f 87 movzwl %r9w,%r9d 0.00 : 7bf5: f3 00 00 00 0f b6 c0 mov $0x0,%rsi 0.00 : 7bfc: c1 e0 xor %eax,%eax 0.00 : 7bfe: 08 05 10 38 00 mov %r11,0x8(%rsp) 0.00 : 7c03: 00 48 98 48 8d mov %r12d,0x20(%rsp) 0.00 : 7c08: 04 02 8b 08 41 mov %rbp,0x18(%rsp) 0.00 : 7c0d: 0f b6 56 46 49 callq 7c12 0.00 : 7c12: 8b 7e 10 41 0f movzbl 0x46(%r14),%esi 0.00 : 7c17: b7 c2 48 89 mov 0x8(%r14),%rdi 0.00 : 7c1b: 74 24 10 89 04 callq 78c0 0.00 : 7c20: 24 45 0f b7 c9 mov $0x1,%edx 0.00 : 7c25: 48 c7 c6 00 00 jmpq 7b3f 0.00 : 7c2a: 00 00 31 c0 4c movzwl 0x44(%r14),%r12d 0.00 : 7c2f: 89 5c 24 08 mov 0x18(%r14),%rbx 0.00 : 7c33: 44 89 64 24 mov 0x20(%r14),%rbp 0.00 : 7c37: 20 48 89 neg %r12d 0.00 : 7c3a: 6c 24 18 e8 00 jmpq 7ab2 0.00 : 7c3f: 00 00 00 41 mov 0x8(%r14),%rax 0.00 : 7c43: 0f b6 76 46 mov 0x78(%rax),%rax 0.00 : 7c47: 49 8b test $0x4,%al 0.00 : 7c49: 7e 08 e8 a0 fc ff jne 7b36 0.00 : 7c4f: ff ba 01 00 00 movzwl 0x48(%r14),%edx 0.00 : 7c54: 00 e9 15 ff ff movzwl 0x4a(%r14),%ecx 0.00 : 7c59: ff 45 0f cmp %cx,%dx 0.00 : 7c5c: b7 66 jbe 7cd0 0.00 : 7c5e: 44 49 8b movzwl %dx,%eax 0.00 : 7c61: 5e 18 49 lea -0x1(%rax),%edx 0.00 : 7c64: 8b 6e 20 movzwl %cx,%eax 0.00 : 7c67: 41 f7 sub %eax,%edx 0.00 : 7c69: dc e9 73 cmp $0xf,%edx 0.00 : 7c6c: fe ff ff 49 8b 46 jle 7b36 0.00 : 7c72: 08 48 8b mfence 0.00 : 7c75: 40 78 a8 04 0f movzbl 0x46(%r14),%esi 0.00 : 7c7a: 85 e7 fe ff mov 0x8(%r14),%rdi 0.00 : 7c7e: ff 41 0f b7 movzbl %sil,%eax 0.00 : 7c82: 56 48 41 0f shl $0x8,%rax 0.00 : 7c86: b7 4e 4a 66 39 ca 76 add 0x380(%rdi),%rax 0.00 : 7c8d: 72 0f b7 c2 mov 0x10(%rax),%rax 0.00 : 7c91: 8d 50 test $0x1,%al 0.00 : 7c93: ff 0f b7 c1 29 c2 je 7b36 0.00 : 7c99: 83 fa 0f 0f 8e mov 0x30(%rsp),%rdx 0.00 : 7c9e: c4 fe ff ff 0f ae f0 mov 0x208(%rdx),%rax 0.00 : 7ca5: 41 0f test $0x4,%al 0.00 : 7ca7: b6 76 46 49 8b 7e jne 7b36 0.00 : 7cad: 08 40 0f b6 c6 callq 1ff0 0.00 : 7cb2: 48 c1 e0 08 48 addq $0x1,0x60(%r14) 0.00 : 7cb7: 03 87 80 03 00 jmpq 7b36 0.00 : 7cbc: 00 48 8b movzbl %al,%eax 0.00 : 7cbf: 40 10 a8 shl $0x6,%eax 0.00 : 7cc2: 01 0f 84 9d fe add $0xe010,%eax 0.00 : 7cc7: ff ff cltq 0.00 : 7cc9: 48 8b 54 24 30 jmpq 7bd6 0.00 : 7cce: 48 8b xchg %ax,%ax 0.00 : 7cd0: 82 08 02 00 00 movzwl 0x44(%r14),%eax 0.00 : 7cd5: a8 04 0f movzwl %dx,%edx 0.00 : 7cd8: 85 89 fe ff lea -0x1(%rax,%rdx,1),%edx 0.00 : 7cdc: ff e8 3e movzwl %cx,%eax 0.00 : 7cdf: a3 ff sub %eax,%edx 0.00 : 7ce1: ff 49 jmp 7c69 : 7ce3: 83 46 60 01 e9 7a fe data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 7cea: ff ff 0f b6 c0 c1 : 7cf0: e0 06 05 10 sub $0x28,%rsp : 7cf4: e0 00 00 48 98 mov %rbp,0x10(%rsp) : 7cf9: e9 08 ff ff ff mov %r12,0x18(%rsp) : 7cfe: 66 90 41 mov %rdi,%rbp : 7d01: 0f b7 46 44 0f mov %r13,0x20(%rsp) : 7d06: b7 d2 8d 54 10 mov %rbx,0x8(%rsp) : 7d0b: ff 0f b7 mov %esi,%r13d : 7d0e: c1 29 c2 eb mov -0x50(%rdi),%rax Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/3w-sas.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/3w-sas.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001830 : 100.00 : 1830: 41 56 push %r14 0.00 : 1862: 41 55 add %al,(%rax) 0.00 : 1864: 41 54 55 48 89 f5 53 mov 0x3d40(%rbp),%rax 0.00 : 186b: 48 83 ec 10 48 8b 86 lea 0x3d40(%rbp),%r12 0.00 : 1872: 38 3d test $0x4,%al 0.00 : 1874: 00 00 48 8b 78 58 jne 19e2 0.00 : 187a: e8 00 00 test $0x4,%bl 0.00 : 187d: 00 00 48 8b 45 00 jne 1b1b 0.00 : 1883: 48 83 c0 and $0x8,%ebx 0.00 : 1886: 30 8b 18 31 d2 f6 je 19e2 0.00 : 188c: c3 0c 0f 84 83 01 00 lea 0x4558(%rbp),%r14 0.00 : 1893: 00 48 8b xor %r13d,%r13d 0.00 : 1896: 85 40 3d 00 00 4c 8d nopw %cs:0x0(%rax,%rax,1) 0.00 : 189d: a5 40 3d 0.00 : 18a0: 00 00 a8 04 mov 0x0(%rbp),%rax 0.00 : 18a4: 0f 85 68 01 00 00 add $0xcc,%rax 0.00 : 18aa: f6 c3 mov (%rax),%edx 0.00 : 18ac: 04 0f 85 98 mov 0x0(%rbp),%rax 0.00 : 18b0: 02 00 00 83 e3 08 add $0xc8,%rax 0.00 : 18b6: 0f 84 mov (%rax),%eax 0.00 : 18b8: 56 01 00 00 shl $0x20,%rdx 0.00 : 18bc: 4c 8d mov %eax,%eax 0.00 : 18be: b5 58 45 or %rax,%rdx 0.00 : 18c1: 00 00 mov %edx,%eax 0.00 : 18c3: 45 31 test $0x1,%al 0.00 : 18c5: ed 66 2e 0f 1f 84 jne 1a08 0.00 : 18cb: 00 00 00 mov %rbp,%rax 0.00 : 18ce: 00 00 xor %esi,%esi 0.00 : 18d0: 48 8b jmp 18eb 0.00 : 18d2: 45 00 48 05 cc 00 nopw 0x0(%rax,%rax,1) 0.00 : 18d8: 00 00 8b add $0x1,%esi 0.00 : 18db: 10 48 8b 45 add $0x8,%rax 0.00 : 18df: 00 48 05 c8 00 00 cmp $0x100,%esi 0.00 : 18e5: 00 8b 00 48 c1 e2 je 1b10 0.00 : 18eb: 20 89 c0 48 09 c2 89 cmp %rdx,0x2808(%rax) 0.00 : 18f2: d0 a8 jne 18d8 0.00 : 18f4: 01 0f 85 movslq %esi,%rbx 0.00 : 18f7: 3d 01 00 00 48 89 e8 mov 0x2008(%rbp,%rbx,8),%rcx 0.00 : 18fe: 31 0.00 : 18ff: f6 eb 19 66 0f movzwl 0x7d(%rcx),%r13d 0.00 : 1904: 1f 44 00 mov %r13d,%r12d 0.00 : 1907: 00 83 c6 01 48 83 c0 cmpq $0x0,0x3010(%rbp,%r12,8) 0.00 : 190e: 08 81 0.00 : 1910: fe 00 01 00 00 0f je 1ae8 0.00 : 1916: 84 25 02 00 00 48 mov $0x1,%r8d 0.00 : 191c: 39 90 08 28 00 mov $0x1,%ecx 0.00 : 1921: 00 75 e4 mov %r13d,%edx 0.00 : 1924: 48 63 de mov %rbp,%rdi 0.00 : 1927: 48 8b 8c dd 08 callq 1420 0.00 : 192c: 20 00 mov %eax,%esi 0.00 : 192e: 00 44 0f b7 mov 0x0(%rbp),%rax 0.00 : 1932: 69 7d 45 89 ec 4a 83 lea 0x500(%rbx),%rcx 0.00 : 1939: bc e5 10 30 mov 0xc(%rbp,%rcx,8),%edx 0.00 : 193d: 00 00 00 0f 84 d2 add $0xcc,%rax 0.00 : 1943: 01 00 mov %edx,(%rax) 0.00 : 1945: 00 41 b8 01 mov 0x0(%rbp),%rax 0.00 : 1949: 00 00 00 b9 mov 0x8(%rbp,%rcx,8),%edx 0.00 : 194d: 01 00 00 00 44 89 add $0xc8,%rax 0.00 : 1953: ea 48 mov %edx,(%rax) 0.00 : 1955: 89 ef e8 f4 fa ff ff cmpl $0x4,0x3914(%rbp,%r12,4) 0.00 : 195c: 89 c6 0.00 : 195e: 48 8b 45 00 48 8d 8b mov 0x1008(%rbp,%r12,8),%rax 0.00 : 1965: 00 0.00 : 1966: 05 00 00 8b 54 cd je 1a20 0.00 : 196c: 0c 48 05 cc 00 00 00 cmpq $0x0,0x3010(%rbp,%r12,8) 0.00 : 1973: 89 10 0.00 : 1975: 48 8b 45 00 8b 54 jne 1c55 0.00 : 197b: cd 08 48 05 c8 00 00 cmp %r13d,0x4550(%rbp) 0.00 : 1982: 00 89 10 42 83 bc je 1ba5 0.00 : 1988: a5 14 39 mov %r13d,%esi 0.00 : 198b: 00 00 04 mov %rbp,%rdi 0.00 : 198e: 4a 8b 84 e5 08 callq 1220 0.00 : 1993: 10 00 test %eax,%eax 0.00 : 1995: 00 0f je 19d0 0.00 : 1997: 84 b4 00 00 00 4a 83 mov 0x3d38(%rbp),%rax 0.00 : 199e: bc e5 10 test %rax,%rax 0.00 : 19a1: 30 00 00 00 0f 85 je 1d3f 0.00 : 19a7: da 02 00 00 44 39 mov 0xdc(%rax),%esi 0.00 : 19ad: ad 50 45 00 00 0f 84 mov $0x0,%r8 0.00 : 19b4: 1d 02 00 00 44 mov $0xf,%ecx 0.00 : 19b9: 89 ee 48 89 ef mov $0x6,%edx 0.00 : 19be: e8 8d f8 ff ff 85 c0 mov $0x0,%rdi 0.00 : 19c5: 74 39 xor %eax,%eax 0.00 : 19c7: 48 8b 85 38 3d callq 19cc 0.00 : 19cc: 00 00 48 85 nopl 0x0(%rax) 0.00 : 19d0: c0 0f 84 98 mov 0x0(%rbp),%rax 0.00 : 19d4: 03 00 00 8b add $0x30,%rax 0.00 : 19d8: b0 dc mov (%rax),%eax 0.00 : 19da: 00 00 test $0x8,%al 0.00 : 19dc: 00 49 c7 c0 00 00 jne 18a0 0.00 : 19e2: 00 00 b9 0f 00 mov $0x1,%edx 0.00 : 19e7: 00 00 ba 06 00 00 00 mov 0x3d38(%rbp),%rax 0.00 : 19ee: 48 c7 c7 00 mov 0x58(%rax),%rax 0.00 : 19f2: 00 00 00 incw (%rax) 0.00 : 19f5: 31 c0 e8 00 add $0x10,%rsp 0.00 : 19f9: 00 00 mov %edx,%eax 0.00 : 19fb: 00 pop %rbx 0.00 : 19fc: 0f pop %rbp 0.00 : 19fd: 1f 40 pop %r12 0.00 : 19ff: 00 48 pop %r13 0.00 : 1a01: 8b 45 pop %r14 0.00 : 1a03: 00 retq 0.00 : 1a04: 48 83 c0 30 nopl 0x0(%rax) 0.00 : 1a08: 8b 00 a8 mov %edx,%r13d 0.00 : 1a0b: 08 0f xor %esi,%esi 0.00 : 1a0d: 85 be fe ff shr $0x10,%r13d 0.00 : 1a11: ff ba 01 mov %r13d,%r12d 0.00 : 1a14: 00 00 00 48 8b jmpq 1955 0.00 : 1a19: 85 38 3d 00 00 48 8b nopl 0x0(%rax) 0.00 : 1a20: 40 58 66 ff 00 48 83 mov 0x3010(%rbp,%r12,8),%rdx 0.00 : 1a27: c4 0.00 : 1a28: 10 89 d0 test %rdx,%rdx 0.00 : 1a2b: 5b 5d 41 5c 41 5d je 197b 0.00 : 1a31: 41 5e test %esi,%esi 0.00 : 1a33: c3 0f jne 1a3f 0.00 : 1a35: 1f 40 00 41 89 d5 31 movl $0x0,0xe0(%rdx) 0.00 : 1a3c: f6 41 c1 0.00 : 1a3f: ed 10 45 89 cmpl $0x1,0x60(%rdx) 0.00 : 1a43: ec e9 jbe 1ab0 0.00 : 1a45: 3c ff ff ff 0f 1f 80 movl $0x8,0x3914(%rbp,%r12,4) 0.00 : 1a4c: 00 00 00 00 4a 0.00 : 1a51: 8b 94 e5 10 30 00 00 movzbl 0x3911(%rbp),%eax 0.00 : 1a58: 48 85 d2 movslq %r13d,%rbx 0.00 : 1a5b: 0f 84 4a ff ff ff 85 mov %r13b,0x3810(%rbp,%rax,1) 0.00 : 1a62: f6 0.00 : 1a63: 75 0a c7 82 e0 00 00 movl $0x10,0x3914(%rbp,%rbx,4) 0.00 : 1a6a: 00 00 00 00 0.00 : 1a6e: 00 83 7a 60 01 76 6b addb $0x1,0x3911(%rbp) 0.00 : 1a75: 42 c7 84 a5 14 39 00 subl $0x1,0x3d14(%rbp) 0.00 : 1a7c: 00 08 00 00 00 0f b6 mov 0x3010(%rbp,%r12,8),%rax 0.00 : 1a83: 85 0.00 : 1a84: 11 39 00 mov %rax,%rdi 0.00 : 1a87: 00 49 63 dd 44 88 callq *0x90(%rax) 0.00 : 1a8d: ac 05 10 38 00 00 c7 mov 0x3010(%rbp,%rbx,8),%rdi 0.00 : 1a94: 84 0.00 : 1a95: 9d 14 39 00 00 10 mov 0xd0(%rdi),%eax 0.00 : 1a9b: 00 00 00 cmp $0x2,%eax 0.00 : 1a9e: 80 85 11 39 00 00 jne 19d0 0.00 : 1aa4: 01 83 ad 14 3d callq 1aa9 0.00 : 1aa9: 00 00 01 4a 8b jmpq 19d0 0.00 : 1aae: 84 e5 xchg %ax,%ax 0.00 : 1ab0: 10 30 00 00 48 89 c7 cmpb $0x0,0x84(%rax) 0.00 : 1ab7: ff 90 jne 1a45 0.00 : 1ab9: 90 00 00 00 48 8b bc mov 0xa0(%rax),%rcx 0.00 : 1ac0: dd 10 30 00 00 8b 87 mov 0x3010(%rbp,%r12,8),%rax 0.00 : 1ac7: d0 0.00 : 1ac8: 00 00 00 mov 0x68(%rax),%eax 0.00 : 1acb: 83 f8 02 cmp %rax,%rcx 0.00 : 1ace: 0f 85 2c ff ff ff jae 1a45 0.00 : 1ad4: e8 00 00 mov 0x68(%rdx),%eax 0.00 : 1ad7: 00 00 sub %ecx,%eax 0.00 : 1ad9: e9 22 ff mov %eax,0x6c(%rdx) 0.00 : 1adc: ff ff 66 90 80 jmpq 1a45 0.00 : 1ae1: b8 84 00 00 00 00 75 nopl 0x0(%rax) 0.00 : 1ae8: 8c 48 8b 88 a0 00 00 cmp %r13d,0x4550(%rbp) 0.00 : 1aef: 00 4a 8b 84 e5 10 je 1bc8 0.00 : 1af5: 30 00 00 8b 40 68 mov $0x1,%r8d 0.00 : 1afb: 48 39 xor %ecx,%ecx 0.00 : 1afd: c1 0f 83 mov %r13d,%edx 0.00 : 1b00: 71 ff ff mov %rbp,%rdi 0.00 : 1b03: ff 8b 42 68 29 callq 1420 0.00 : 1b08: c8 89 mov %eax,%esi 0.00 : 1b0a: 42 6c e9 64 ff jmpq 192e 0.00 : 1b0f: ff nop 0.00 : 1b10: ff 0f 1f xor %si,%si 0.00 : 1b13: 80 00 00 mov %r13d,%r12d 0.00 : 1b16: 00 00 44 39 ad jmpq 1955 0.00 : 1b1b: 50 45 00 00 mov 0x0(%rbp),%rax 0.00 : 1b1f: 0f 84 d3 00 00 00 add $0x9c,%rax 0.00 : 1b25: 41 b8 mov (%rax),%eax 0.00 : 1b27: 01 00 00 00 31 test $0x200000,%eax 0.00 : 1b2c: c9 44 89 ea 48 89 je 1ca3 0.00 : 1b32: ef e8 18 f9 ff ff 89 mov 0x3d38(%rbp),%rax 0.00 : 1b39: c6 e9 1f test %rax,%rax 0.00 : 1b3c: fe ff ff 90 66 31 je 1d87 0.00 : 1b42: f6 45 89 ec e9 3a mov 0xdc(%rax),%esi 0.00 : 1b48: fe ff ff 48 8b mov $0xd,%ecx 0.00 : 1b4d: 45 00 48 05 9c 00 00 mov $0x0,%r8 0.00 : 1b54: 00 8b 00 a9 00 mov $0x6,%edx 0.00 : 1b59: 00 20 00 0f 84 71 01 mov $0x0,%rdi 0.00 : 1b60: 00 00 xor %eax,%eax 0.00 : 1b62: 48 8b 85 38 3d callq 1b67 0.00 : 1b67: 00 00 48 85 c0 mov $0x1,%ecx 0.00 : 1b6c: 0f 84 45 02 mov 0x0(%rbp),%rax 0.00 : 1b70: 00 00 8b b0 dc mov $0xffffffff,%edx 0.00 : 1b75: 00 00 00 b9 0d 00 add $0xa0,%rax 0.00 : 1b7b: 00 00 mov %edx,(%rax) 0.00 : 1b7d: 49 c7 c0 00 mov 0x0(%rbp),%rax 0.00 : 1b81: 00 00 00 ba 06 00 add $0xa0,%rax 0.00 : 1b87: 00 00 mov (%rax),%eax 0.00 : 1b89: 48 c7 test %ecx,%ecx 0.00 : 1b8b: c7 00 00 00 00 31 je 1883 0.00 : 1b91: c0 e8 00 00 mov 0x0(%rbp),%rax 0.00 : 1b95: 00 00 b9 01 add $0x34,%rax 0.00 : 1b99: 00 00 mov %edx,(%rax) 0.00 : 1b9b: 00 48 8b 45 00 mov $0x1,%edx 0.00 : 1ba0: ba ff ff ff ff jmpq 19e7 0.00 : 1ba5: 48 05 a0 00 00 00 89 movl $0xffffffff,0x4550(%rbp) 0.00 : 1bac: 10 48 8b 0.00 : 1baf: 45 00 xor %ecx,%ecx 0.00 : 1bb1: 48 05 a0 00 00 mov $0x1,%edx 0.00 : 1bb6: 00 8b 00 85 c9 mov $0x3,%esi 0.00 : 1bbb: 0f 84 f2 mov %r14,%rdi 0.00 : 1bbe: fc ff ff 48 8b callq 1bc3 0.00 : 1bc3: 45 00 48 83 c0 jmpq 19d0 0.00 : 1bc8: 34 89 10 mov (%rcx),%rdx 0.00 : 1bcb: ba 01 00 00 00 e9 42 mov 0x1008(%rbp,%r12,8),%rax 0.00 : 1bd2: fe 0.00 : 1bd3: ff ff xor %esi,%esi 0.00 : 1bd5: c7 85 50 mov %rdx,(%rax) 0.00 : 1bd8: 45 00 00 ff mov 0x8(%rcx),%rdx 0.00 : 1bdc: ff ff ff 31 mov %rdx,0x8(%rax) 0.00 : 1be0: c9 ba 01 00 mov 0x10(%rcx),%rdx 0.00 : 1be4: 00 00 be 03 mov %rdx,0x10(%rax) 0.00 : 1be8: 00 00 00 4c mov 0x18(%rcx),%rdx 0.00 : 1bec: 89 f7 e8 00 mov %rdx,0x18(%rax) 0.00 : 1bf0: 00 00 00 e9 mov 0x20(%rcx),%rdx 0.00 : 1bf4: 08 fe ff ff mov %rdx,0x20(%rax) 0.00 : 1bf8: 48 8b 11 4a mov 0x28(%rcx),%rdx 0.00 : 1bfc: 8b 84 e5 08 mov %rdx,0x28(%rax) 0.00 : 1c00: 10 00 00 31 mov 0x30(%rcx),%rdx 0.00 : 1c04: f6 48 89 10 mov %rdx,0x30(%rax) 0.00 : 1c08: 48 8b 51 08 mov 0x38(%rcx),%rdx 0.00 : 1c0c: 48 89 50 08 mov %rdx,0x38(%rax) 0.00 : 1c10: 48 8b 51 10 mov 0x40(%rcx),%rdx 0.00 : 1c14: 48 89 50 10 mov %rdx,0x40(%rax) 0.00 : 1c18: 48 8b 51 18 mov 0x48(%rcx),%rdx 0.00 : 1c1c: 48 89 50 18 mov %rdx,0x48(%rax) 0.00 : 1c20: 48 8b 51 20 mov 0x50(%rcx),%rdx 0.00 : 1c24: 48 89 50 20 mov %rdx,0x50(%rax) 0.00 : 1c28: 48 8b 51 28 mov 0x58(%rcx),%rdx 0.00 : 1c2c: 48 89 50 28 mov %rdx,0x58(%rax) 0.00 : 1c30: 48 8b 51 30 mov 0x60(%rcx),%rdx 0.00 : 1c34: 48 89 50 30 mov %rdx,0x60(%rax) 0.00 : 1c38: 48 8b 51 38 mov 0x68(%rcx),%rdx 0.00 : 1c3c: 48 89 50 38 mov %rdx,0x68(%rax) 0.00 : 1c40: 48 8b 51 40 mov 0x70(%rcx),%rdx 0.00 : 1c44: 48 89 50 40 mov %rdx,0x70(%rax) 0.00 : 1c48: 48 8b 51 48 mov 0x78(%rcx),%rdx 0.00 : 1c4c: 48 89 50 48 mov %rdx,0x78(%rax) 0.00 : 1c50: 48 8b 51 50 48 jmpq 192e 0.00 : 1c55: 89 50 50 48 8b 51 58 mov 0x3d38(%rbp),%rax 0.00 : 1c5c: 48 89 50 test %rax,%rax 0.00 : 1c5f: 58 48 8b 51 60 48 je 1d63 0.00 : 1c65: 89 50 60 48 8b 51 mov 0xdc(%rax),%esi 0.00 : 1c6b: 68 48 89 50 68 48 8b mov $0x0,%r8 0.00 : 1c72: 51 70 48 89 50 mov $0xe,%ecx 0.00 : 1c77: 70 48 8b 51 78 mov $0x6,%edx 0.00 : 1c7c: 48 89 50 78 e9 d9 fc mov $0x0,%rdi 0.00 : 1c83: ff ff xor %eax,%eax 0.00 : 1c85: 48 8b 85 38 3d callq 1c8a 0.00 : 1c8a: 00 00 48 85 mov 0x0(%rbp),%rax 0.00 : 1c8e: c0 0f 84 fe 00 mov $0xffffffff,%edx 0.00 : 1c93: 00 00 8b b0 add $0x34,%rax 0.00 : 1c97: dc 00 mov %edx,(%rax) 0.00 : 1c99: 00 00 49 c7 c0 mov $0x1,%edx 0.00 : 1c9e: 00 00 00 00 b9 jmpq 19e7 0.00 : 1ca3: 0e 00 00 00 ba test $0x40000,%eax 0.00 : 1ca8: 06 00 00 00 48 c7 je 1d38 0.00 : 1cae: c7 00 00 00 00 31 c0 lock btsl $0x4,(%r12) 0.00 : 1cb5: e8 00 sbb %eax,%eax 0.00 : 1cb7: 00 00 test %eax,%eax 0.00 : 1cb9: 00 48 jne 1d38 0.00 : 1cbb: 8b 45 00 ba ff ff ff movzbl 0x3910(%rbp),%eax 0.00 : 1cc2: ff 48 83 mov %rbp,%rdi 0.00 : 1cc5: c0 34 89 10 ba 01 00 movzbl 0x3810(%rbp,%rax,1),%eax 0.00 : 1ccc: 00 0.00 : 1ccd: 00 e9 44 fd mov %eax,0xc(%rsp) 0.00 : 1cd1: ff ff cltq 0.00 : 1cd3: a9 00 00 04 00 0f 84 addb $0x1,0x3910(%rbp) 0.00 : 1cda: 8a 00 00 00 f0 41 0f movl $0x2,0x3914(%rbp,%rax,4) 0.00 : 1ce1: ba 2c 24 04 0.00 : 1ce5: 19 c0 85 c0 mov 0xc(%rsp),%esi 0.00 : 1ce9: 75 7d 0f b6 85 callq 900 0.00 : 1cee: 10 39 test %eax,%eax 0.00 : 1cf0: 00 00 je 1d38 0.00 : 1cf2: 48 89 ef 0f mov 0xc(%rsp),%eax 0.00 : 1cf6: b6 84 05 10 38 00 00 movl $0x8,0x3914(%rbp,%rax,4) 0.00 : 1cfd: 89 44 24 0c 0.00 : 1d01: 48 98 80 85 10 movslq 0xc(%rsp),%rax 0.00 : 1d06: 39 00 00 01 c7 84 85 movzbl 0x3911(%rbp),%edx 0.00 : 1d0d: 14 39 00 00 02 00 00 mov %al,0x3810(%rbp,%rdx,1) 0.00 : 1d14: 00 8b 74 24 0c e8 12 movl $0x10,0x3914(%rbp,%rax,4) 0.00 : 1d1b: ec ff ff 85 0.00 : 1d1f: c0 74 46 8b 44 24 0c addb $0x1,0x3911(%rbp) 0.00 : 1d26: c7 84 85 14 39 00 00 lock andb $0xef,0x3d40(%rbp) 0.00 : 1d2d: 08 0.00 : 1d2e: 00 00 xor %ecx,%ecx 0.00 : 1d30: 00 48 63 44 24 jmpq 1b6c 0.00 : 1d35: 0c 0f b6 nopl (%rax) 0.00 : 1d38: 95 11 xor %ecx,%ecx 0.00 : 1d3a: 39 00 00 88 84 jmpq 1b6c 0.00 : 1d3f: 15 10 38 00 00 c7 84 mov $0x0,%rcx 0.00 : 1d46: 85 14 39 00 00 mov $0xf,%edx 0.00 : 1d4b: 10 00 00 00 80 mov $0x6,%esi 0.00 : 1d50: 85 11 39 00 00 01 f0 mov $0x0,%rdi 0.00 : 1d57: 80 a5 xor %eax,%eax 0.00 : 1d59: 40 3d 00 00 ef callq 1d5e 0.00 : 1d5e: 31 c9 e9 37 fe jmpq 19d0 0.00 : 1d63: ff ff 0f 1f 00 31 c9 mov $0x0,%rcx 0.00 : 1d6a: e9 2d fe ff ff mov $0xe,%edx 0.00 : 1d6f: 48 c7 c1 00 00 mov $0x6,%esi 0.00 : 1d74: 00 00 ba 0f 00 00 00 mov $0x0,%rdi 0.00 : 1d7b: be 06 xor %eax,%eax 0.00 : 1d7d: 00 00 00 48 c7 callq 1d82 0.00 : 1d82: c7 00 00 00 00 jmpq 1c8a 0.00 : 1d87: 31 c0 e8 00 00 00 00 mov $0x0,%rcx 0.00 : 1d8e: e9 6d fc ff ff mov $0xd,%edx 0.00 : 1d93: 48 c7 c1 00 00 mov $0x6,%esi 0.00 : 1d98: 00 00 ba 0e 00 00 00 mov $0x0,%rdi 0.00 : 1d9f: be 06 xor %eax,%eax 0.00 : 1da1: 00 00 00 48 c7 callq 1da6 0.00 : 1da6: c7 00 00 00 00 mov $0x1,%ecx 0.00 : 1dab: 31 c0 e8 00 00 jmpq 1b6c : 1db0: 00 00 push %r13 : 1db2: e9 03 ff mov %esi,%r13d : 1db5: ff ff push %r12 : 1db7: 48 push %rbp : 1db8: c7 c1 00 mov %rdi,%rbp : 1dbb: 00 00 00 ba 0d 00 00 lea 0x90(%rdi),%rdi : 1dc2: 00 push %rbx : 1dc3: be 06 00 00 sub $0x38,%rsp : 1dc7: 00 48 c7 c7 00 callq 1dcc : 1dcc: 00 00 00 31 c0 e8 00 lea 0x670(%rax),%rbx : 1dd3: 00 00 00 mov %rax,%r12 : 1dd6: b9 01 00 00 00 e9 bc mov $0x0,%rdi : 1ddd: fd ff ff 41 55 41 89 mov 0x3d38(%rbx),%rax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:847 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a710 : : /* : * Forget that a catcache-list reference is owned by a ResourceOwner : */ : void : ResourceOwnerForgetCatCacheListRef(ResourceOwner owner, CatCList *list) : { 0.00 : 79a710: 55 push %rbp 0.00 : 79a711: 48 89 e5 mov %rsp,%rbp 0.00 : 79a714: 41 54 push %r12 0.00 : 79a716: 49 89 fc mov %rdi,%r12 0.00 : 79a719: 53 push %rbx : CatCList **catlistrefs = owner->catlistrefs; : int nc1 = owner->ncatlistrefs - 1; 0.00 : 79a71a: 8b 87 c4 00 00 00 mov 0xc4(%rdi),%eax : /* : * Forget that a catcache-list reference is owned by a ResourceOwner : */ : void : ResourceOwnerForgetCatCacheListRef(ResourceOwner owner, CatCList *list) : { 0.00 : 79a720: 48 89 f3 mov %rsi,%rbx : CatCList **catlistrefs = owner->catlistrefs; 0.00 : 79a723: 48 8b b7 c8 00 00 00 mov 0xc8(%rdi),%rsi : int nc1 = owner->ncatlistrefs - 1; : int i; : : for (i = nc1; i >= 0; i--) 0.00 : 79a72a: 89 c7 mov %eax,%edi 0.00 : 79a72c: 83 ef 01 sub $0x1,%edi 0.00 : 79a72f: 78 4f js 79a780 : { : if (catlistrefs[i] == list) 0.00 : 79a731: 48 63 c7 movslq %edi,%rax : while (i < nc1) : { : catlistrefs[i] = catlistrefs[i + 1]; : i++; : } : owner->ncatlistrefs = nc1; 0.00 : 79a734: 89 fa mov %edi,%edx : int nc1 = owner->ncatlistrefs - 1; : int i; : : for (i = nc1; i >= 0; i--) : { : if (catlistrefs[i] == list) 0.00 : 79a736: 48 39 1c c6 cmp %rbx,(%rsi,%rax,8) 0.00 : 79a73a: 74 2f je 79a76b 0.00 : 79a73c: 0f 1f 40 00 nopl 0x0(%rax) : { : CatCList **catlistrefs = owner->catlistrefs; : int nc1 = owner->ncatlistrefs - 1; : int i; : : for (i = nc1; i >= 0; i--) 0.00 : 79a740: 83 ea 01 sub $0x1,%edx 0.00 : 79a743: 78 3b js 79a780 : { : if (catlistrefs[i] == list) 0.00 : 79a745: 48 63 ca movslq %edx,%rcx 0.00 : 79a748: 48 39 1c ce cmp %rbx,(%rsi,%rcx,8) 0.00 : 79a74c: 75 f2 jne 79a740 : { : while (i < nc1) 0.00 : 79a74e: 39 d7 cmp %edx,%edi 0.00 : 79a750: 7f 09 jg 79a75b 0.00 : 79a752: eb 17 jmp 79a76b 0.00 : 79a754: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79a758: 48 63 ca movslq %edx,%rcx : { : catlistrefs[i] = catlistrefs[i + 1]; 0.00 : 79a75b: 48 8b 44 ce 08 mov 0x8(%rsi,%rcx,8),%rax : i++; 0.00 : 79a760: 83 c2 01 add $0x1,%edx : : for (i = nc1; i >= 0; i--) : { : if (catlistrefs[i] == list) : { : while (i < nc1) 0.00 : 79a763: 39 d7 cmp %edx,%edi : { : catlistrefs[i] = catlistrefs[i + 1]; 0.00 : 79a765: 48 89 04 ce mov %rax,(%rsi,%rcx,8) : : for (i = nc1; i >= 0; i--) : { : if (catlistrefs[i] == list) : { : while (i < nc1) 0.00 : 79a769: 7f ed jg 79a758 : return; : } : } : elog(ERROR, "catcache list reference %p is not owned by resource owner %s", : list, owner->name); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:847 100.00 : 79a76b: 5b pop %rbx : while (i < nc1) : { : catlistrefs[i] = catlistrefs[i + 1]; : i++; : } : owner->ncatlistrefs = nc1; 0.00 : 79a76c: 41 89 bc 24 c4 00 00 mov %edi,0xc4(%r12) 0.00 : 79a773: 00 : return; : } : } : elog(ERROR, "catcache list reference %p is not owned by resource owner %s", : list, owner->name); : } 0.00 : 79a774: 41 5c pop %r12 0.00 : 79a776: c9 leaveq 0.00 : 79a777: c3 retq 0.00 : 79a778: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79a77f: 00 : } : owner->ncatlistrefs = nc1; : return; : } : } : elog(ERROR, "catcache list reference %p is not owned by resource owner %s", 0.00 : 79a780: ba 00 27 8e 00 mov $0x8e2700,%edx 0.00 : 79a785: be 4e 03 00 00 mov $0x34e,%esi 0.00 : 79a78a: bf 90 22 8e 00 mov $0x8e2290,%edi 0.00 : 79a78f: e8 8c 0c fe ff callq 77b420 0.00 : 79a794: 49 8b 4c 24 18 mov 0x18(%r12),%rcx 0.00 : 79a799: 48 89 da mov %rbx,%rdx 0.00 : 79a79c: be 08 24 8e 00 mov $0x8e2408,%esi 0.00 : 79a7a1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79a7a6: 31 c0 xor %eax,%eax 0.00 : 79a7a8: e8 83 0a fe ff callq 77b230 0.00 : 79a7ad: e8 1e ed cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:787 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079ad50 : : * This is separate from actually inserting an entry because if we run out : * of memory, it's critical to do so *before* acquiring the resource. : */ : void : ResourceOwnerEnlargeCatCacheListRefs(ResourceOwner owner) : { 0.00 : 79ad50: 55 push %rbp 0.00 : 79ad51: 48 89 e5 mov %rsp,%rbp 0.00 : 79ad54: 4c 89 65 f8 mov %r12,-0x8(%rbp) 100.00 : 79ad58: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 79ad5c: 48 83 ec 10 sub $0x10,%rsp : int newmax; : : if (owner->ncatlistrefs < owner->maxcatlistrefs) 0.00 : 79ad60: 8b 87 d0 00 00 00 mov 0xd0(%rdi),%eax 0.00 : 79ad66: 39 87 c4 00 00 00 cmp %eax,0xc4(%rdi) : * This is separate from actually inserting an entry because if we run out : * of memory, it's critical to do so *before* acquiring the resource. : */ : void : ResourceOwnerEnlargeCatCacheListRefs(ResourceOwner owner) : { 0.00 : 79ad6c: 49 89 fc mov %rdi,%r12 : int newmax; : : if (owner->ncatlistrefs < owner->maxcatlistrefs) 0.00 : 79ad6f: 7c 2b jl 79ad9c : return; /* nothing to do */ : : if (owner->catlistrefs == NULL) 0.00 : 79ad71: 48 8b bf c8 00 00 00 mov 0xc8(%rdi),%rdi 0.00 : 79ad78: 48 85 ff test %rdi,%rdi 0.00 : 79ad7b: 74 33 je 79adb0 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(CatCList *)); : owner->maxcatlistrefs = newmax; : } : else : { : newmax = owner->maxcatlistrefs * 2; 0.00 : 79ad7d: 8d 1c 00 lea (%rax,%rax,1),%ebx : owner->catlistrefs = (CatCList **) 0.00 : 79ad80: 48 63 f3 movslq %ebx,%rsi 0.00 : 79ad83: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 79ad87: e8 64 df ff ff callq 798cf0 : repalloc(owner->catlistrefs, newmax * sizeof(CatCList *)); : owner->maxcatlistrefs = newmax; 0.00 : 79ad8c: 41 89 9c 24 d0 00 00 mov %ebx,0xd0(%r12) 0.00 : 79ad93: 00 : owner->maxcatlistrefs = newmax; : } : else : { : newmax = owner->maxcatlistrefs * 2; : owner->catlistrefs = (CatCList **) 0.00 : 79ad94: 49 89 84 24 c8 00 00 mov %rax,0xc8(%r12) 0.00 : 79ad9b: 00 : repalloc(owner->catlistrefs, newmax * sizeof(CatCList *)); : owner->maxcatlistrefs = newmax; : } : } 0.00 : 79ad9c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 79ada0: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 79ada5: c9 leaveq 0.00 : 79ada6: c3 retq 0.00 : 79ada7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79adae: 00 00 : return; /* nothing to do */ : : if (owner->catlistrefs == NULL) : { : newmax = 16; : owner->catlistrefs = (CatCList **) 0.00 : 79adb0: 48 8b 3d b1 fa 41 00 mov 0x41fab1(%rip),%rdi # bba868 0.00 : 79adb7: be 80 00 00 00 mov $0x80,%esi 0.00 : 79adbc: e8 cf e0 ff ff callq 798e90 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(CatCList *)); : owner->maxcatlistrefs = newmax; 0.00 : 79adc1: 41 c7 84 24 d0 00 00 movl $0x10,0xd0(%r12) 0.00 : 79adc8: 00 10 00 00 00 : return; /* nothing to do */ : : if (owner->catlistrefs == NULL) : { : newmax = 16; : owner->catlistrefs = (CatCList **) 0.00 : 79adcd: 49 89 84 24 c8 00 00 mov %rax,0xc8(%r12) 0.00 : 79add4: 00 0.00 : 79add5: eb c5 jmp 79ad9c Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007fe0 : ??:0 100.00 : 7fe0: 48 81 ec e8 00 00 00 sub $0xe8,%rsp 0.00 : 8017: 4c 89 add %al,(%rax) 0.00 : 8019: a4 24 c8 add %cl,-0x75(%rax) 0.00 : 801c: 00 pop %rdi 0.00 : 801d: 00 00 48 sbb %cl,-0x75(%rax) 0.00 : 8020: 89 9c 24 b8 rex.XB sbb %cl,-0x77(%r8) 0.00 : 8024: 00 00 00 rex.R and $0x10,%al 0.00 : 8027: 49 89 fc 48 89 ac 24 mov 0x148(%rdi),%r13 0.00 : 802e: c0 00 00 00 4c 89 ac movl $0x0,0xac(%rsp) 0.00 : 8035: 24 d0 00 00 0.00 : 8039: 00 4c 89 b4 mov 0x18(%rbx),%rbp 0.00 : 803d: 24 d8 00 00 00 callq 8042 0.00 : 8042: 4c 89 test %eax,%eax 0.00 : 8044: bc 24 e0 00 00 00 je 8115 0.00 : 804a: 48 8b 5f 18 48 8b 43 mov 0xd0(%r12),%rsi 0.00 : 8051: 18 0.00 : 8052: 48 89 44 24 10 4c 8b lea -0xe0(%r12),%rcx 0.00 : 8059: af 0.00 : 805a: 48 01 00 00 mov %ebp,0x2c(%rsp) 0.00 : 805e: c7 84 24 ac 00 mov %rcx,0x20(%rsp) 0.00 : 8063: 00 00 00 test %rsi,%rsi 0.00 : 8066: 00 00 00 48 8b 6b je 8168 0.00 : 806c: 18 e8 00 00 mov 0x2c(%rsp),%eax 0.00 : 8070: 00 00 85 sub $0x1,%eax 0.00 : 8073: c0 0f 84 test %rax,%rsi 0.00 : 8076: cb 00 00 00 49 8b je 817d 0.00 : 807c: b4 24 d0 00 mov 0x78(%r13),%rdx 0.00 : 8080: 00 00 49 8d sar $0xc,%rsi 0.00 : 8084: 8c 24 20 mov %r13,%rdi 0.00 : 8087: ff ff ff 89 6c 24 and $0x7fffff,%edx 0.00 : 808d: 2c 48 89 4c 24 callq 8092 0.00 : 8092: 20 48 85 test %rax,%rax 0.00 : 8095: f6 0f 84 mov %rax,%rbp 0.00 : 8098: fc 00 je 8115 0.00 : 809a: 00 00 8b mov %r12,%rdi 0.00 : 809d: 44 24 2c 83 e8 callq 46b0 0.00 : 80a2: 01 48 85 c6 0f 84 cmp $0xfffffffffffff000,%rax 0.00 : 80a8: 01 01 00 mov %rax,%r15 0.00 : 80ab: 00 49 8b 55 78 48 jbe 8188 0.00 : 80b1: c1 fe 0c test %rbp,%rbp 0.00 : 80b4: 4c 89 je 8115 0.00 : 80b6: ef 81 e2 ff ff 7f 00 mov %gs:0x0,%rbx 0.00 : 80bd: e8 00 0.00 : 80bf: 00 00 00 48 85 c0 48 sub $0x1fd8,%rbx 0.00 : 80c6: 89 c5 74 7b addl $0x1,0x1c(%rbx) 0.00 : 80ca: 4c 89 e7 e8 0e c6 ff movabs $0x160000000000,%rdi 0.00 : 80d1: ff 48 3d 0.00 : 80d4: 00 f0 ff ff 49 89 c7 movabs $0x6db6db6db6db6db7,%rax 0.00 : 80db: 0f 86 d7 0.00 : 80de: 00 00 00 48 85 lea 0x0(%rbp,%rdi,1),%rdi 0.00 : 80e3: ed 74 5f 65 sar $0x3,%rdi 0.00 : 80e7: 48 8b 1c 25 imul %rax,%rdi 0.00 : 80eb: 00 00 00 00 48 81 eb movabs $0xffff880000000000,%rax 0.00 : 80f2: d8 1f 00 0.00 : 80f5: 00 83 43 1c shl $0xc,%rdi 0.00 : 80f9: 01 48 bf add %rax,%rdi 0.00 : 80fc: 00 00 00 00 00 callq 8101 0.00 : 8101: 16 00 00 48 subl $0x1,0x1c(%rbx) 0.00 : 8105: b8 b7 6d mov %rbp,%rdi 0.00 : 8108: db b6 6d db b6 callq 810d 0.00 : 810d: 6d 48 8d mov %rbp,%rdi 0.00 : 8110: 7c 3d 00 48 c1 callq 8115 0.00 : 8115: ff 03 48 0f af f8 48 mov 0xbc(%r12),%eax 0.00 : 811c: b8 0.00 : 811d: 00 00 test %eax,%eax 0.00 : 811f: 00 00 je 812b 0.00 : 8121: 00 88 ff mov %r12,%rsi 0.00 : 8124: ff 48 xor %edi,%edi 0.00 : 8126: c1 e7 0c 48 01 callq 812b 0.00 : 812b: c7 e8 00 00 00 00 83 mov 0xb8(%rsp),%rbx 0.00 : 8132: 6b 0.00 : 8133: 1c 01 48 89 ef e8 00 mov 0xc0(%rsp),%rbp 0.00 : 813a: 00 0.00 : 813b: 00 00 48 89 ef e8 00 mov 0xc8(%rsp),%r12 0.00 : 8142: 00 0.00 : 8143: 00 00 41 8b 84 24 bc mov 0xd0(%rsp),%r13 0.00 : 814a: 00 0.00 : 814b: 00 00 85 c0 74 0a 4c mov 0xd8(%rsp),%r14 0.00 : 8152: 89 0.00 : 8153: e6 31 ff e8 00 00 00 mov 0xe0(%rsp),%r15 0.00 : 815a: 00 0.00 : 815b: 48 8b 9c 24 b8 00 00 add $0xe8,%rsp 0.00 : 8162: 00 retq 0.00 : 8163: 48 8b ac 24 c0 nopl 0x0(%rax,%rax,1) 0.00 : 8168: 00 00 00 4c 8b movzwl (%r12),%eax 0.00 : 816d: a4 24 c8 00 00 and $0xf000,%eax 0.00 : 8172: 00 4c 8b ac 24 cmp $0x8000,%eax 0.00 : 8177: d0 00 00 00 4c 8b je 8210 0.00 : 817d: b4 24 xor %ebp,%ebp 0.00 : 817f: d8 00 00 00 4c jmpq 809a 0.00 : 8184: 8b bc 24 e0 nopl 0x0(%rax) 0.00 : 8188: 00 00 00 48 81 mov 0x18(%r12),%rax 0.00 : 818d: c4 e8 00 test %rbp,%rbp 0.00 : 8190: 00 00 c3 0f 1f 44 00 mov 0xd0(%r12),%rbx 0.00 : 8197: 00 0.00 : 8198: 41 0f b7 04 24 movzbl 0x15(%rax),%r14d 0.00 : 819d: 25 00 je 81b0 0.00 : 819f: f0 00 00 mov %rbx,%rcx 0.00 : 81a2: 3d 00 80 mov %r13,%rdx 0.00 : 81a5: 00 00 0f mov %rbp,%rsi 0.00 : 81a8: 84 93 00 mov %r15,%rdi 0.00 : 81ab: 00 00 31 ed e9 callq 7620 0.00 : 81b0: 16 ff ff ff mov 0x2c(%rsp),%eax 0.00 : 81b4: 0f 1f 40 00 49 8b 44 lea 0x90(%rsp),%r13 0.00 : 81bb: 24 0.00 : 81bc: 18 48 85 mov %r14d,%ecx 0.00 : 81bf: ed 49 8b mov %r12,%rdi 0.00 : 81c2: 9c 24 d0 mov %r13,%rdx 0.00 : 81c5: 00 00 00 44 0f lea -0x1(%rbx,%rax,1),%rsi 0.00 : 81ca: b6 70 15 sar %cl,%rsi 0.00 : 81cd: 74 11 xor %ecx,%ecx 0.00 : 81cf: 48 89 d9 4c 89 callq 4f10 0.00 : 81d4: ea 48 test %eax,%eax 0.00 : 81d6: 89 ee 4c mov %eax,%r14d 0.00 : 81d9: 89 ff e8 70 f4 ff jne 8260 0.00 : 81df: ff 8b 44 24 2c 4c 8d mov 0xbc(%r12),%eax 0.00 : 81e6: ac 0.00 : 81e7: 24 90 test %eax,%eax 0.00 : 81e9: 00 00 jne 8200 0.00 : 81eb: 00 44 89 mov %r15,%rsi 0.00 : 81ee: f1 4c 89 e7 4c 89 ea mov $0x0,%rdi 0.00 : 81f5: 48 8d 74 03 ff callq 81fa 0.00 : 81fa: 48 d3 fe 31 c9 jmpq 812b 0.00 : 81ff: e8 nop 0.00 : 8200: 3c cd ff mov %r12,%rsi 0.00 : 8203: ff 85 c0 mov %r15,%rdi 0.00 : 8206: 41 89 c6 0f 85 callq 820b 0.00 : 820b: 81 00 jmp 81eb 0.00 : 820d: 00 00 41 nopl (%rax) 0.00 : 8210: 8b 84 24 bc 00 00 00 testb $0x40,-0xa3(%r12) 0.00 : 8217: 85 c0 0.00 : 8219: 75 15 4c 89 fe 48 jne 817d 0.00 : 821f: c7 c7 00 00 00 00 e8 mov 0x338(%rbx),%rax 0.00 : 8226: 00 00 00 00 mov 0x78(%rax),%rax 0.00 : 822a: e9 2c ff ff ff and $0xc00,%eax 0.00 : 822f: 90 4c 89 e6 4c 89 cmp $0xc00,%rax 0.00 : 8235: ff e8 00 00 00 00 jne 817d 0.00 : 823b: eb de 0f 1f 00 mov 0x20(%rsp),%rax 0.00 : 8240: 41 f6 84 24 add $0x58,%rax 0.00 : 8244: 5d ff ff ff 40 0f 85 lock orb $0x8,-0x88(%r12) 0.00 : 824b: 5e ff ff 0.00 : 824e: ff 48 8b 83 38 03 00 mov 0xd0(%r12),%rsi 0.00 : 8255: 00 0.00 : 8256: 48 8b 40 78 25 jmpq 806c 0.00 : 825b: 00 0c 00 00 48 nopl 0x0(%rax,%rax,1) 0.00 : 8260: 3d 00 0c mov %r12,%rsi 0.00 : 8263: 00 00 0f mov %r15,%rdi 0.00 : 8266: 85 42 ff ff ff callq 826b 0.00 : 826b: 48 8b test %eax,%eax 0.00 : 826d: 44 24 20 48 83 c0 jne 81df 0.00 : 8273: 58 f0 41 80 8c 24 78 mov 0xd0(%r12),%rax 0.00 : 827a: ff 0.00 : 827b: ff ff 08 49 8b mov %rax,-0x38(%r12) 0.00 : 8280: b4 24 d0 00 00 mov 0x20(%rsp),%rax 0.00 : 8285: 00 e9 11 fe ff ff add $0xb8,%rax 0.00 : 828b: 0f 1f 44 mov %rax,%rdi 0.00 : 828e: 00 00 4c 89 e6 mov %rax,0x18(%rsp) 0.00 : 8293: 4c 89 ff e8 00 callq 8298 0.00 : 8298: 00 00 00 85 cmp $0x1,%r14d 0.00 : 829c: c0 0f 85 6c ff ff je 8576 0.00 : 82a2: ff 49 8b 84 24 d0 00 movl $0x0,0xac(%rsp) 0.00 : 82a9: 00 00 49 89 0.00 : 82ad: 44 24 c8 48 8b 44 jle 85e3 0.00 : 82b3: 24 20 48 movslq %r14d,%rax 0.00 : 82b6: 05 b8 00 00 00 mov -0x4(%r13,%rax,4),%r9d 0.00 : 82bb: 48 89 c7 test %r9d,%r9d 0.00 : 82be: 48 89 44 24 18 e8 jne 85e3 0.00 : 82c4: 00 00 00 mov %r14d,%ebp 0.00 : 82c7: 00 41 jmp 82dd 0.00 : 82c9: 83 fe 01 0f 84 d4 02 nopl 0x0(%rax) 0.00 : 82d0: 00 00 c7 movslq %ebp,%rax 0.00 : 82d3: 84 24 ac 00 00 mov -0x4(%r13,%rax,4),%r8d 0.00 : 82d8: 00 00 00 test %r8d,%r8d 0.00 : 82db: 00 00 jne 82e5 0.00 : 82dd: 0f 8e 30 sub $0x1,%ebp 0.00 : 82e0: 03 00 00 cmp $0x1,%ebp 0.00 : 82e3: 49 63 jne 82d0 0.00 : 82e5: c6 45 8b 4c 85 lea 0x30(%rsp),%rcx 0.00 : 82ea: fc 45 85 c9 0f 85 1f lea 0xa8(%rsp),%r8 0.00 : 82f1: 03 0.00 : 82f2: 00 00 44 mov %r13,%rdx 0.00 : 82f5: 89 f5 mov %ebp,%esi 0.00 : 82f7: eb 14 0f mov %r12,%rdi 0.00 : 82fa: 1f 80 00 00 00 mov %rcx,0x8(%rsp) 0.00 : 82ff: 00 48 63 c5 45 callq 50f0 0.00 : 8304: 8b 44 85 test %rax,%rax 0.00 : 8307: fc 45 85 mov %rax,%rbx 0.00 : 830a: c0 75 08 83 ed 01 je 85d1 0.00 : 8310: 83 fd 01 mov 0x8(%rbx),%edi 0.00 : 8313: 75 eb test %edi,%edi 0.00 : 8315: 48 8d 4c 24 30 4c jne 84b5 0.00 : 831b: 8d 84 24 mov (%rbx),%rax 0.00 : 831e: a8 00 mov (%rax),%esi 0.00 : 8320: 00 00 test %esi,%esi 0.00 : 8322: 4c 89 ea 89 ee 4c je 84b5 0.00 : 8328: 89 e7 48 89 4c 24 08 mov 0xac(%rsp),%eax 0.00 : 832f: e8 ec test %eax,%eax 0.00 : 8331: cd ff je 836f 0.00 : 8333: ff 48 85 c0 48 cmp 0x8(%rsp),%rbx 0.00 : 8338: 89 c3 0f 84 c1 02 je 861f 0.00 : 833e: 00 00 8b movslq %r14d,%r9 0.00 : 8341: 7b 08 85 mov (%rbx),%rcx 0.00 : 8344: ff 0f 85 9a mov 0x10(%rbx),%rdx 0.00 : 8348: 01 00 00 48 8b lea -0x3(%r9,%r9,2),%r9 0.00 : 834d: 03 8b 30 mov %r12,%rsi 0.00 : 8350: 85 f6 0f mov %r15,%rdi 0.00 : 8353: 84 8d 01 00 00 lea 0x30(%rsp,%r9,8),%r9 0.00 : 8358: 8b 84 24 ac lea 0x4(%rcx),%r8 0.00 : 835c: 00 00 00 sub %rbx,%r9 0.00 : 835f: 85 c0 74 3c sar $0x3,%r9 0.00 : 8363: 48 3b 5c 24 08 0f 84 imul $0xaaaaaaab,%r9d,%r9d 0.00 : 836a: e1 02 00 00 4d callq 6990 0.00 : 836f: 63 ce 48 8b 0b cmp 0x8(%rsp),%rbx 0.00 : 8374: 48 8b jbe 83ed 0.00 : 8376: 53 10 4f 8d 4c 49 shrq $0x2,0x10(%rsp) 0.00 : 837c: fd 4c 89 movslq %r14d,%rax 0.00 : 837f: e6 4c 89 ff 4e 8d 4c movabs $0xaaaaaaaaaaaaaaab,%r14 0.00 : 8386: cc 30 4c 0.00 : 8389: 8d 41 04 49 29 movslq 0x10(%rsp),%rdx 0.00 : 838e: d9 49 c1 f9 03 lea -0x3(%rax,%rax,2),%rax 0.00 : 8393: 45 69 c9 ab aa lea 0x30(%rsp,%rax,8),%rbp 0.00 : 8398: aa aa e8 21 e6 ff ff lea 0x0(,%rdx,4),%r13 0.00 : 839f: 48 0.00 : 83a0: 3b 5c 24 sub %rbx,%rbp 0.00 : 83a3: 08 76 77 48 c1 nopl 0x0(%rax,%rax,1) 0.00 : 83a8: 6c 24 10 02 mov 0x10(%rbx),%rdx 0.00 : 83ac: 49 63 c6 mov %rbp,%r9 0.00 : 83af: 49 be ab mov (%rbx),%rcx 0.00 : 83b2: aa aa aa aa sar $0x3,%r9 0.00 : 83b6: aa aa aa mov %r15,%rdi 0.00 : 83b9: 48 63 54 mov %r12,%rsi 0.00 : 83bc: 24 10 48 8d imul %r14d,%r9d 0.00 : 83c0: 44 40 fd 48 mov 0x28(%rdx),%r8 0.00 : 83c4: 8d 6c c4 30 add $0x4,%rcx 0.00 : 83c8: 4c 8d 2c add %r13,%r8 0.00 : 83cb: 95 00 00 00 00 callq 6990 0.00 : 83d0: 48 29 dd 0f mov 0x10(%rbx),%rdi 0.00 : 83d4: 1f 44 00 test %rdi,%rdi 0.00 : 83d7: 00 48 je 83de 0.00 : 83d9: 8b 53 10 49 89 callq 83de 0.00 : 83de: e9 48 8b 0b sub $0x18,%rbx 0.00 : 83e2: 49 c1 f9 03 add $0x18,%rbp 0.00 : 83e6: 4c 89 ff 4c 89 cmp 0x8(%rsp),%rbx 0.00 : 83eb: e6 45 ja 83a8 0.00 : 83ed: 0f af ce 4c 8b 42 28 mov 0x90(%rsp),%eax 0.00 : 83f4: 48 83 c1 cmp $0xd,%eax 0.00 : 83f7: 04 4d je 8431 0.00 : 83f9: 01 e8 e8 cmp $0xe,%eax 0.00 : 83fc: c0 e5 je 8448 0.00 : 83fe: ff ff 48 cmp $0xc,%eax 0.00 : 8401: 8b 7b je 841a 0.00 : 8403: 10 48 85 ff 74 05 e8 mov -0xb0(%r12),%eax 0.00 : 840a: 00 0.00 : 840b: 00 00 test %eax,%eax 0.00 : 840d: 00 48 83 eb 18 48 83 mov %eax,0xac(%rsp) 0.00 : 8414: c5 18 48 3b 5c 24 jne 85eb 0.00 : 841a: 08 77 bb 8b 84 24 90 mov -0xac(%r12),%eax 0.00 : 8421: 00 0.00 : 8422: 00 00 test %eax,%eax 0.00 : 8424: 83 f8 0d 74 38 83 f8 mov %eax,0xac(%rsp) 0.00 : 842b: 0e 74 4a 83 f8 0c jne 859d 0.00 : 8431: 74 17 41 8b 84 24 50 mov -0xa8(%r12),%eax 0.00 : 8438: ff 0.00 : 8439: ff ff test %eax,%eax 0.00 : 843b: 85 c0 89 84 24 ac 00 mov %eax,0xac(%rsp) 0.00 : 8442: 00 00 0f 85 d1 01 jne 8542 0.00 : 8448: 00 00 41 mov %r12,%rdi 0.00 : 844b: 8b 84 24 54 ff callq 8450 0.00 : 8450: ff ff 85 c0 89 mov 0x18(%rsp),%rdi 0.00 : 8455: 84 24 ac 00 00 callq 845a 0.00 : 845a: 00 0f 85 6c 01 callq 845f 0.00 : 845f: 00 00 41 8b 84 24 58 movq $0x0,0x100(%r12) 0.00 : 8466: ff ff ff 85 c0 0.00 : 846b: 89 84 24 ac 00 00 00 mov %rax,0xf8(%r12) 0.00 : 8472: 0f 0.00 : 8473: 85 fa 00 mov %r12,%rsi 0.00 : 8476: 00 00 4c 89 e7 e8 00 mov %rax,0xe8(%r12) 0.00 : 847d: 00 0.00 : 847e: 00 00 48 8b 7c 24 18 movq $0x0,0xf0(%r12) 0.00 : 8485: e8 00 00 00 00 0.00 : 848a: e8 00 00 mov %r15,%rdi 0.00 : 848d: 00 00 49 c7 84 callq 8492 0.00 : 8492: 24 00 01 00 00 mov 0x18(%r12),%rax 0.00 : 8497: 00 00 00 00 testb $0x10,0x50(%rax) 0.00 : 849b: 49 89 jne 84a9 0.00 : 849d: 84 24 f8 00 00 00 testb $0x1,0x24(%r12) 0.00 : 84a3: 4c 89 e6 49 89 84 je 81df 0.00 : 84a9: 24 e8 00 00 00 orb $0x1,0x14(%r15) 0.00 : 84ae: 49 c7 xchg %ax,%ax 0.00 : 84b0: 84 24 f0 00 00 jmpq 81df 0.00 : 84b5: 00 00 00 00 00 cmp 0x8(%rsp),%rbx 0.00 : 84ba: 4c 89 ff mov %rbx,%r13 0.00 : 84bd: e8 00 jbe 84fd 0.00 : 84bf: 00 00 00 49 mov 0x10(%r13),%rax 0.00 : 84c3: 8b 44 24 18 mov 0x0(%r13),%rdx 0.00 : 84c7: f6 40 50 10 mov 0x28(%rax),%rax 0.00 : 84cb: 75 0c 41 cmp %rax,%rdx 0.00 : 84ce: f6 44 ja 84e1 0.00 : 84d0: 24 24 jmp 8530 0.00 : 84d2: 01 0f 84 36 fd ff nopw 0x0(%rax,%rax,1) 0.00 : 84d8: ff 41 80 4f add $0x4,%rax 0.00 : 84dc: 14 01 66 cmp %rax,%rdx 0.00 : 84df: 90 e9 jbe 8530 0.00 : 84e1: 2a fd mov (%rax),%ecx 0.00 : 84e3: ff ff test %ecx,%ecx 0.00 : 84e5: 48 3b je 84d8 0.00 : 84e7: 5c 24 08 movslq %ebp,%rax 0.00 : 84ea: 49 89 dd 76 3e lea -0x3(%rax,%rax,2),%rax 0.00 : 84ef: 49 8b 45 10 49 lea 0x30(%rsp,%rax,8),%rax 0.00 : 84f4: 8b 55 00 cmp %rax,%r13 0.00 : 84f7: 48 8b 40 28 48 39 je 8666 0.00 : 84fd: c2 77 11 eb mov 0x0(%r13),%rax 0.00 : 8501: 5e 66 mov (%rax),%eax 0.00 : 8503: 0f 1f 44 00 00 48 83 mov %eax,0xac(%rsp) 0.00 : 850a: c0 04 jmp 8522 0.00 : 850c: 48 39 c2 76 nopl 0x0(%rax) 0.00 : 8510: 4f 8b 08 85 mov 0x10(%rbx),%rdi 0.00 : 8514: c9 74 f1 test %rdi,%rdi 0.00 : 8517: 48 63 je 851e 0.00 : 8519: c5 48 8d 44 40 callq 851e 0.00 : 851e: fd 48 8d 44 sub $0x18,%rbx 0.00 : 8522: c4 30 49 cmp %r13,%rbx 0.00 : 8525: 39 c5 ja 8510 0.00 : 8527: 0f 84 69 01 00 jmpq 8328 0.00 : 852c: 00 49 8b 45 nopl 0x0(%rax) 0.00 : 8530: 00 8b 00 89 sub $0x18,%r13 0.00 : 8534: 84 24 ac 00 00 cmp 0x8(%rsp),%r13 0.00 : 8539: 00 eb 16 0f 1f 40 ja 84bf 0.00 : 853f: 00 nop 0.00 : 8540: 48 8b jmp 84fd 0.00 : 8542: 7b 10 48 85 ff 74 05 lea 0xac(%rsp),%rcx 0.00 : 8549: e8 0.00 : 854a: 00 00 00 00 48 83 eb lea 0xb0(%rsp),%r8 0.00 : 8551: 18 0.00 : 8552: 4c 39 eb 77 e9 e9 mov $0x3,%r9d 0.00 : 8558: fc fd xor %edx,%edx 0.00 : 855a: ff ff 0f mov %r12,%rsi 0.00 : 855d: 1f 40 00 mov %r15,%rdi 0.00 : 8560: 49 83 ed 18 4c callq 6990 0.00 : 8565: 3b 6c 24 08 0f 87 80 movl $0x0,-0xa8(%r12) 0.00 : 856c: ff ff ff 90 eb 0.00 : 8571: bb 48 8d 8c 24 jmpq 8448 0.00 : 8576: ac 00 00 00 4c 8d 84 movslq 0x90(%rsp),%rcx 0.00 : 857d: 24 0.00 : 857e: b0 00 00 00 41 mov 0x20(%rsp),%rax 0.00 : 8583: b9 03 xor %edx,%edx 0.00 : 8585: 00 00 00 mov %r12,%rsi 0.00 : 8588: 31 d2 4c mov %r15,%rdi 0.00 : 858b: 89 e6 4c 89 lea 0x30(%rax),%r8 0.00 : 858f: ff e8 2b e4 lea (%rax,%rcx,4),%rcx 0.00 : 8593: ff ff 41 c7 84 callq 67c0 0.00 : 8598: 24 58 ff ff ff jmpq 83ed 0.00 : 859d: 00 00 00 00 e9 d2 fe lea 0xac(%rsp),%rcx 0.00 : 85a4: ff 0.00 : 85a5: ff 48 63 8c 24 90 00 lea 0xb0(%rsp),%r8 0.00 : 85ac: 00 0.00 : 85ad: 00 48 8b 44 24 20 mov $0x2,%r9d 0.00 : 85b3: 31 d2 xor %edx,%edx 0.00 : 85b5: 4c 89 e6 mov %r12,%rsi 0.00 : 85b8: 4c 89 ff mov %r15,%rdi 0.00 : 85bb: 4c 8d 40 30 48 callq 6990 0.00 : 85c0: 8d 0c 88 e8 28 e2 ff movl $0x0,-0xac(%r12) 0.00 : 85c7: ff e9 50 fe ff 0.00 : 85cc: ff 48 8d 8c 24 jmpq 8431 0.00 : 85d1: ac 00 00 movslq %ebp,%rax 0.00 : 85d4: 00 4c 8d 84 24 lea -0x3(%rax,%rax,2),%rax 0.00 : 85d9: b0 00 00 00 41 lea 0x30(%rsp,%rax,8),%rbx 0.00 : 85de: b9 02 00 00 00 jmpq 8310 0.00 : 85e3: 31 d2 4c mov %r14d,%ebp 0.00 : 85e6: 89 e6 4c 89 ff jmpq 82e5 0.00 : 85eb: e8 d0 e3 ff ff 41 c7 lea 0xac(%rsp),%rcx 0.00 : 85f2: 84 0.00 : 85f3: 24 54 ff ff ff 00 00 lea 0xb0(%rsp),%r8 0.00 : 85fa: 00 0.00 : 85fb: 00 e9 60 fe ff ff mov $0x1,%r9d 0.00 : 8601: 48 63 xor %edx,%edx 0.00 : 8603: c5 48 8d mov %r12,%rsi 0.00 : 8606: 44 40 fd mov %r15,%rdi 0.00 : 8609: 48 8d 5c c4 30 callq 6990 0.00 : 860e: e9 2d fd ff ff 44 89 movl $0x0,-0xb0(%r12) 0.00 : 8615: f5 e9 fa fc ff 0.00 : 861a: ff 48 8d 8c 24 jmpq 841a 0.00 : 861f: ac 00 00 movslq %r14d,%r9 0.00 : 8622: 00 4c 8d 84 24 b0 00 lea 0xac(%rsp),%rcx 0.00 : 8629: 00 0.00 : 862a: 00 41 b9 01 00 00 00 lea 0xb0(%rsp),%r8 0.00 : 8631: 31 0.00 : 8632: d2 4c 89 e6 4c lea -0x3(%r9,%r9,2),%r9 0.00 : 8637: 89 ff xor %edx,%edx 0.00 : 8639: e8 82 e3 mov %r12,%rsi 0.00 : 863c: ff ff 41 mov %r15,%rdi 0.00 : 863f: c7 84 24 50 lea (%rbx,%r9,8),%r9 0.00 : 8643: ff ff ff sub %rbx,%r9 0.00 : 8646: 00 00 00 00 sar $0x3,%r9 0.00 : 864a: e9 fb fd ff ff 4d 63 imul $0xaaaaaaab,%r9d,%r9d 0.00 : 8651: ce 48 8d 8c 24 callq 6990 0.00 : 8656: ac 00 00 00 4c mov 0x30(%rsp),%rax 0.00 : 865b: 8d 84 24 b0 00 00 movl $0x0,(%rax) 0.00 : 8661: 00 4f 8d 4c 49 jmpq 83ed 0.00 : 8666: fd 31 d2 4c 89 cmp 0x8(%rsp),%r13 0.00 : 866b: e6 4c 89 ff 4e 8d jbe 84fd 0.00 : 8671: 0c cb 49 29 lea -0x4(%rdx),%rax 0.00 : 8675: d9 49 c1 f9 mov %rax,0x0(%r13) 0.00 : 8679: 03 45 69 c9 ab jmpq 8522 : 867e: aa aa xchg %ax,%ax : 8680: aa push %rbx : 8681: e8 3a e3 mov %rdi,%rbx : 8684: ff ff 48 8b 44 24 30 mov 0xd0(%rdi),%rsi : 868b: c7 00 00 00 00 00 e9 mov 0x148(%rdi),%rdi : 8692: 87 fd ff ff 4c callq 8697 : 8697: 3b 6c 24 mov %rbx,%rdi : 869a: 08 pop %rbx : 869b: 0f 86 8c fe ff jmpq 86a0 : 86a0: ff 48 push %r15 : 86a2: 8d 42 fc mov %ecx,%r15d : 86a5: 49 89 45 00 e9 a4 fe mov %gs:0x0,%rax : 86ac: ff ff Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/print.c:2892 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000419a90 : : * : * It calls printTable with all the things set straight. : */ : void : printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout, FILE *flog) : { 0.00 : 419a90: 55 push %rbp 0.00 : 419a91: 48 89 e5 mov %rsp,%rbp 0.00 : 419a94: 41 57 push %r15 0.00 : 419a96: 41 56 push %r14 0.00 : 419a98: 41 55 push %r13 0.00 : 419a9a: 41 54 push %r12 0.00 : 419a9c: 53 push %rbx 0.00 : 419a9d: 48 81 ec c8 00 00 00 sub $0xc8,%rsp : printTableContent cont; : int i, : r, : c; : : if (cancel_pressed) 0.00 : 419aa4: 0f b6 05 15 14 25 00 movzbl 0x251415(%rip),%eax # 66aec0 : * : * It calls printTable with all the things set straight. : */ : void : printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout, FILE *flog) : { /home/Computational/mark/src/postgres-andres/src/bin/psql/print.c:2892 100.00 : 419aab: 48 89 bd 40 ff ff ff mov %rdi,-0xc0(%rbp) 0.00 : 419ab2: 48 89 b5 38 ff ff ff mov %rsi,-0xc8(%rbp) 0.00 : 419ab9: 48 89 95 30 ff ff ff mov %rdx,-0xd0(%rbp) 0.00 : 419ac0: 48 89 8d 28 ff ff ff mov %rcx,-0xd8(%rbp) : printTableContent cont; : int i, : r, : c; : : if (cancel_pressed) 0.00 : 419ac7: 84 c0 test %al,%al 0.00 : 419ac9: 74 12 je 419add : printTableAddFooter(&cont, *footer); : } : : printTable(&cont, fout, flog); : printTableCleanup(&cont); : } 0.00 : 419acb: 48 81 c4 c8 00 00 00 add $0xc8,%rsp 0.00 : 419ad2: 5b pop %rbx 0.00 : 419ad3: 41 5c pop %r12 0.00 : 419ad5: 41 5d pop %r13 0.00 : 419ad7: 41 5e pop %r14 0.00 : 419ad9: 41 5f pop %r15 0.00 : 419adb: c9 leaveq 0.00 : 419adc: c3 retq : c; : : if (cancel_pressed) : return; : : printTableInit(&cont, &opt->topt, opt->title, 0.00 : 419add: e8 ee a5 fe ff callq 4040d0 0.00 : 419ae2: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 419ae9: 89 c3 mov %eax,%ebx 0.00 : 419aeb: e8 b0 a0 fe ff callq 403ba0 0.00 : 419af0: 89 c1 mov %eax,%ecx 0.00 : 419af2: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 419af9: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi 0.00 : 419b00: 41 89 d8 mov %ebx,%r8d 0.00 : 419b03: 48 8b 50 78 mov 0x78(%rax),%rdx 0.00 : 419b07: 48 89 c6 mov %rax,%rsi 0.00 : 419b0a: e8 91 bb ff ff callq 4156a0 : : /* Assert caller supplied enough translate_columns[] entries */ : Assert(opt->translate_columns == NULL || : opt->n_translate_columns >= cont.ncolumns); : : for (i = 0; i < cont.ncolumns; i++) 0.00 : 419b0f: 44 8b 95 70 ff ff ff mov -0x90(%rbp),%r10d 0.00 : 419b16: 45 85 d2 test %r10d,%r10d 0.00 : 419b19: 0f 8e 99 00 00 00 jle 419bb8 0.00 : 419b1f: 45 31 e4 xor %r12d,%r12d 0.00 : 419b22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : char align; : Oid ftype = PQftype(result, i); 0.00 : 419b28: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 419b2f: 44 89 e6 mov %r12d,%esi 0.00 : 419b32: e8 59 9f fe ff callq 403a90 : : switch (ftype) 0.00 : 419b37: 83 f8 1d cmp $0x1d,%eax 0.00 : 419b3a: 0f 87 98 03 00 00 ja 419ed8 0.00 : 419b40: 83 f8 1c cmp $0x1c,%eax 0.00 : 419b43: 73 2b jae 419b70 0.00 : 419b45: 83 f8 17 cmp $0x17,%eax 0.00 : 419b48: 74 26 je 419b70 0.00 : 419b4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 419b50: 0f 87 26 04 00 00 ja 419f7c 0.00 : 419b56: 83 e8 14 sub $0x14,%eax 0.00 : 419b59: 83 f8 01 cmp $0x1,%eax 0.00 : 419b5c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 419b60: 0f 87 3d 01 00 00 ja 419ca3 0.00 : 419b66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 419b6d: 00 00 00 0.00 : 419b70: 41 bd 72 00 00 00 mov $0x72,%r13d : default: : align = 'l'; : break; : } : : printTableAddHeader(&cont, PQfname(result, i), 0.00 : 419b76: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 419b7d: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 419b84: 44 89 e6 mov %r12d,%esi : : /* Assert caller supplied enough translate_columns[] entries */ : Assert(opt->translate_columns == NULL || : opt->n_translate_columns >= cont.ncolumns); : : for (i = 0; i < cont.ncolumns; i++) 0.00 : 419b87: 41 83 c4 01 add $0x1,%r12d : default: : align = 'l'; : break; : } : : printTableAddHeader(&cont, PQfname(result, i), 0.00 : 419b8b: 0f be 9a 88 00 00 00 movsbl 0x88(%rdx),%ebx 0.00 : 419b92: e8 99 a2 fe ff callq 403e30 0.00 : 419b97: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi 0.00 : 419b9e: 48 89 c6 mov %rax,%rsi 0.00 : 419ba1: 44 89 e9 mov %r13d,%ecx 0.00 : 419ba4: 89 da mov %ebx,%edx 0.00 : 419ba6: e8 25 c4 ff ff callq 415fd0 : : /* Assert caller supplied enough translate_columns[] entries */ : Assert(opt->translate_columns == NULL || : opt->n_translate_columns >= cont.ncolumns); : : for (i = 0; i < cont.ncolumns; i++) 0.00 : 419bab: 44 39 a5 70 ff ff ff cmp %r12d,-0x90(%rbp) 0.00 : 419bb2: 0f 8f 70 ff ff ff jg 419b28 : printTableAddHeader(&cont, PQfname(result, i), : opt->translate_header, align); : } : : /* set cells */ : for (r = 0; r < cont.nrows; r++) 0.00 : 419bb8: 44 8b 8d 74 ff ff ff mov -0x8c(%rbp),%r9d 0.00 : 419bbf: c7 85 4c ff ff ff 00 movl $0x0,-0xb4(%rbp) 0.00 : 419bc6: 00 00 00 0.00 : 419bc9: 45 85 c9 test %r9d,%r9d 0.00 : 419bcc: 0f 8e f7 00 00 00 jle 419cc9 0.00 : 419bd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : for (c = 0; c < cont.ncolumns; c++) 0.00 : 419bd8: 44 8b 85 70 ff ff ff mov -0x90(%rbp),%r8d : printTableAddHeader(&cont, PQfname(result, i), : opt->translate_header, align); : } : : /* set cells */ : for (r = 0; r < cont.nrows; r++) 0.00 : 419bdf: 45 31 e4 xor %r12d,%r12d : { : for (c = 0; c < cont.ncolumns; c++) 0.00 : 419be2: 45 85 c0 test %r8d,%r8d 0.00 : 419be5: 7f 5f jg 419c46 0.00 : 419be7: e9 c4 00 00 00 jmpq 419cb0 0.00 : 419bec: 0f 1f 40 00 nopl 0x0(%rax) : char *cell; : bool mustfree = false; : bool translate; : : if (PQgetisnull(result, r, c)) : cell = opt->nullPrint ? opt->nullPrint : ""; 0.00 : 419bf0: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 419bf7: 31 c9 xor %ecx,%ecx 0.00 : 419bf9: 48 8b 58 68 mov 0x68(%rax),%rbx 0.00 : 419bfd: b8 17 69 43 00 mov $0x436917,%eax 0.00 : 419c02: 48 85 db test %rbx,%rbx 0.00 : 419c05: 48 0f 44 d8 cmove %rax,%rbx : cell = format_numeric_locale(cell); : mustfree = true; : } : } : : translate = (opt->translate_columns && opt->translate_columns[c]); 0.00 : 419c09: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 419c10: 31 d2 xor %edx,%edx 0.00 : 419c12: 48 8b b0 90 00 00 00 mov 0x90(%rax),%rsi 0.00 : 419c19: 48 85 f6 test %rsi,%rsi 0.00 : 419c1c: 74 0c je 419c2a 0.00 : 419c1e: 49 63 c4 movslq %r12d,%rax 0.00 : 419c21: 31 d2 xor %edx,%edx 0.00 : 419c23: 80 3c 06 00 cmpb $0x0,(%rsi,%rax,1) 0.00 : 419c27: 0f 95 c2 setne %dl : printTableAddCell(&cont, cell, translate, mustfree); 0.00 : 419c2a: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi 0.00 : 419c31: 48 89 de mov %rbx,%rsi : } : : /* set cells */ : for (r = 0; r < cont.nrows; r++) : { : for (c = 0; c < cont.ncolumns; c++) 0.00 : 419c34: 41 83 c4 01 add $0x1,%r12d : mustfree = true; : } : } : : translate = (opt->translate_columns && opt->translate_columns[c]); : printTableAddCell(&cont, cell, translate, mustfree); 0.00 : 419c38: e8 d3 c2 ff ff callq 415f10 : } : : /* set cells */ : for (r = 0; r < cont.nrows; r++) : { : for (c = 0; c < cont.ncolumns; c++) 0.00 : 419c3d: 44 39 a5 70 ff ff ff cmp %r12d,-0x90(%rbp) 0.00 : 419c44: 7e 6a jle 419cb0 : { : char *cell; : bool mustfree = false; : bool translate; : : if (PQgetisnull(result, r, c)) 0.00 : 419c46: 8b b5 4c ff ff ff mov -0xb4(%rbp),%esi 0.00 : 419c4c: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 419c53: 44 89 e2 mov %r12d,%edx 0.00 : 419c56: e8 95 a3 fe ff callq 403ff0 0.00 : 419c5b: 85 c0 test %eax,%eax 0.00 : 419c5d: 75 91 jne 419bf0 : cell = opt->nullPrint ? opt->nullPrint : ""; : else : { : cell = PQgetvalue(result, r, c); 0.00 : 419c5f: 8b b5 4c ff ff ff mov -0xb4(%rbp),%esi 0.00 : 419c65: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 419c6c: 44 89 e2 mov %r12d,%edx 0.00 : 419c6f: e8 2c a0 fe ff callq 403ca0 0.00 : 419c74: 49 89 c5 mov %rax,%r13 : if (cont.aligns[c] == 'r' && opt->topt.numericLocale) 0.00 : 419c77: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 419c7b: 49 63 d4 movslq %r12d,%rdx 0.00 : 419c7e: 80 3c 10 72 cmpb $0x72,(%rax,%rdx,1) 0.00 : 419c82: 0f 84 a0 00 00 00 je 419d28 : } : : for (i = 0, j = new_str_start;; i++, j++) : { : /* Hit decimal point? */ : if (my_str[i] == '.') 0.00 : 419c88: 4c 89 eb mov %r13,%rbx 0.00 : 419c8b: 31 c9 xor %ecx,%ecx 0.00 : 419c8d: e9 77 ff ff ff jmpq 419c09 0.00 : 419c92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : for (i = 0; i < cont.ncolumns; i++) : { : char align; : Oid ftype = PQftype(result, i); : : switch (ftype) 0.00 : 419c98: 3d a4 06 00 00 cmp $0x6a4,%eax 0.00 : 419c9d: 0f 84 cd fe ff ff je 419b70 0.00 : 419ca3: 41 bd 6c 00 00 00 mov $0x6c,%r13d 0.00 : 419ca9: e9 c8 fe ff ff jmpq 419b76 0.00 : 419cae: 66 90 xchg %ax,%ax : printTableAddHeader(&cont, PQfname(result, i), : opt->translate_header, align); : } : : /* set cells */ : for (r = 0; r < cont.nrows; r++) 0.00 : 419cb0: 83 85 4c ff ff ff 01 addl $0x1,-0xb4(%rbp) 0.00 : 419cb7: 8b 95 4c ff ff ff mov -0xb4(%rbp),%edx 0.00 : 419cbd: 39 95 74 ff ff ff cmp %edx,-0x8c(%rbp) 0.00 : 419cc3: 0f 8f 0f ff ff ff jg 419bd8 : printTableAddCell(&cont, cell, translate, mustfree); : } : } : : /* set footers */ : if (opt->footers) 0.00 : 419cc9: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 419cd0: 48 8b 98 80 00 00 00 mov 0x80(%rax),%rbx 0.00 : 419cd7: 48 85 db test %rbx,%rbx 0.00 : 419cda: 75 14 jne 419cf0 0.00 : 419cdc: eb 1a jmp 419cf8 0.00 : 419cde: 66 90 xchg %ax,%ax : { : char **footer; : : for (footer = opt->footers; *footer; footer++) : printTableAddFooter(&cont, *footer); 0.00 : 419ce0: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi : /* set footers */ : if (opt->footers) : { : char **footer; : : for (footer = opt->footers; *footer; footer++) 0.00 : 419ce7: 48 83 c3 08 add $0x8,%rbx : printTableAddFooter(&cont, *footer); 0.00 : 419ceb: e8 f0 b8 ff ff callq 4155e0 : /* set footers */ : if (opt->footers) : { : char **footer; : : for (footer = opt->footers; *footer; footer++) 0.00 : 419cf0: 48 8b 33 mov (%rbx),%rsi 0.00 : 419cf3: 48 85 f6 test %rsi,%rsi 0.00 : 419cf6: 75 e8 jne 419ce0 : printTableAddFooter(&cont, *footer); : } : : printTable(&cont, fout, flog); 0.00 : 419cf8: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : 419cff: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 419d06: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi 0.00 : 419d0d: e8 2e e9 ff ff callq 418640 : printTableCleanup(&cont); 0.00 : 419d12: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi 0.00 : 419d19: e8 d2 b6 ff ff callq 4153f0 0.00 : 419d1e: e9 a8 fd ff ff jmpq 419acb 0.00 : 419d23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (PQgetisnull(result, r, c)) : cell = opt->nullPrint ? opt->nullPrint : ""; : else : { : cell = PQgetvalue(result, r, c); : if (cont.aligns[c] == 'r' && opt->topt.numericLocale) 0.00 : 419d28: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 419d2f: 80 7a 40 00 cmpb $0x0,0x40(%rdx) 0.00 : 419d33: 0f 84 4f ff ff ff je 419c88 : static char * : format_numeric_locale(const char *my_str) : { : int i, : j, : int_len = integer_digits(my_str), 0.00 : 419d39: 4c 89 ef mov %r13,%rdi : { : int int_len = integer_digits(my_str), : len = 0; : int groupdigits = atoi(grouping); : : if (int_len > 0) 0.00 : 419d3c: 31 db xor %ebx,%ebx : static char * : format_numeric_locale(const char *my_str) : { : int i, : j, : int_len = integer_digits(my_str), 0.00 : 419d3e: e8 fd aa ff ff callq 414840 : return strtod (__nptr, (char **) NULL); : } : __extern_inline int : __NTH (atoi (__const char *__nptr)) : { : return (int) strtol (__nptr, (char **) NULL, 10); 0.00 : 419d43: 48 8b 3d 86 11 25 00 mov 0x251186(%rip),%rdi # 66aed0 0.00 : 419d4a: 31 f6 xor %esi,%esi 0.00 : 419d4c: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 419d51: 41 89 c7 mov %eax,%r15d 0.00 : 419d54: e8 c7 9e fe ff callq 403c20 : } : : static int : strlen_with_numeric_locale(const char *my_str) : { : return strlen(my_str) + additional_numeric_locale_len(my_str); 0.00 : 419d59: 4c 89 ef mov %r13,%rdi 0.00 : 419d5c: 89 85 5c ff ff ff mov %eax,-0xa4(%rbp) 0.00 : 419d62: e8 19 9b fe ff callq 403880 : : /* Return additional length required for locale-aware numeric output */ : static int : additional_numeric_locale_len(const char *my_str) : { : int int_len = integer_digits(my_str), 0.00 : 419d67: 4c 89 ef mov %r13,%rdi : } : : static int : strlen_with_numeric_locale(const char *my_str) : { : return strlen(my_str) + additional_numeric_locale_len(my_str); 0.00 : 419d6a: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : : /* Return additional length required for locale-aware numeric output */ : static int : additional_numeric_locale_len(const char *my_str) : { : int int_len = integer_digits(my_str), 0.00 : 419d71: e8 ca aa ff ff callq 414840 0.00 : 419d76: 48 8b 3d 53 11 25 00 mov 0x251153(%rip),%rdi # 66aed0 0.00 : 419d7d: 41 89 c6 mov %eax,%r14d 0.00 : 419d80: 31 f6 xor %esi,%esi 0.00 : 419d82: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 419d87: e8 94 9e fe ff callq 403c20 : len = 0; : int groupdigits = atoi(grouping); : : if (int_len > 0) 0.00 : 419d8c: 45 85 f6 test %r14d,%r14d 0.00 : 419d8f: 7e 2b jle 419dbc : /* Don't count a leading separator */ : len = (int_len / groupdigits - (int_len % groupdigits == 0)) * 0.00 : 419d91: 48 8b 3d 40 11 25 00 mov 0x251140(%rip),%rdi # 66aed8 0.00 : 419d98: 89 c3 mov %eax,%ebx 0.00 : 419d9a: e8 e1 9a fe ff callq 403880 0.00 : 419d9f: 44 89 f2 mov %r14d,%edx 0.00 : 419da2: 48 89 c6 mov %rax,%rsi 0.00 : 419da5: 44 89 f0 mov %r14d,%eax 0.00 : 419da8: c1 fa 1f sar $0x1f,%edx 0.00 : 419dab: f7 fb idiv %ebx 0.00 : 419dad: 85 d2 test %edx,%edx 0.00 : 419daf: 89 c3 mov %eax,%ebx 0.00 : 419db1: 0f 94 c2 sete %dl 0.00 : 419db4: 0f b6 d2 movzbl %dl,%edx 0.00 : 419db7: 29 d3 sub %edx,%ebx 0.00 : 419db9: 0f af de imul %esi,%ebx : strlen(thousands_sep); : : if (strchr(my_str, '.') != NULL) 0.00 : 419dbc: be 2e 00 00 00 mov $0x2e,%esi 0.00 : 419dc1: 4c 89 ef mov %r13,%rdi 0.00 : 419dc4: e8 87 9b fe ff callq 403950 0.00 : 419dc9: 48 85 c0 test %rax,%rax 0.00 : 419dcc: 74 10 je 419dde : len += strlen(decimal_point) - strlen("."); 0.00 : 419dce: 48 8b 3d f3 10 25 00 mov 0x2510f3(%rip),%rdi # 66aec8 0.00 : 419dd5: e8 a6 9a fe ff callq 403880 0.00 : 419dda: 8d 5c 03 ff lea -0x1(%rbx,%rax,1),%ebx : j, : int_len = integer_digits(my_str), : leading_digits; : int groupdigits = atoi(grouping); : int new_str_start = 0; : char *new_str = pg_malloc(strlen_with_numeric_locale(my_str) + 1); 0.00 : 419dde: 8b 95 20 ff ff ff mov -0xe0(%rbp),%edx 0.00 : 419de4: 8d 7c 13 01 lea 0x1(%rbx,%rdx,1),%edi 0.00 : 419de8: 48 63 ff movslq %edi,%rdi 0.00 : 419deb: e8 40 a1 01 00 callq 433f30 : : leading_digits = (int_len % groupdigits != 0) ? 0.00 : 419df0: 44 89 fa mov %r15d,%edx : j, : int_len = integer_digits(my_str), : leading_digits; : int groupdigits = atoi(grouping); : int new_str_start = 0; : char *new_str = pg_malloc(strlen_with_numeric_locale(my_str) + 1); 0.00 : 419df3: 48 89 c3 mov %rax,%rbx : : leading_digits = (int_len % groupdigits != 0) ? 0.00 : 419df6: 44 89 f8 mov %r15d,%eax 0.00 : 419df9: c1 fa 1f sar $0x1f,%edx 0.00 : 419dfc: f7 bd 5c ff ff ff idivl -0xa4(%rbp) 0.00 : 419e02: 8b 85 5c ff ff ff mov -0xa4(%rbp),%eax 0.00 : 419e08: 85 d2 test %edx,%edx 0.00 : 419e0a: 0f 45 c2 cmovne %edx,%eax : int_len % groupdigits : groupdigits; : : if (my_str[0] == '-') /* skip over sign, affects grouping 0.00 : 419e0d: 41 80 7d 00 2d cmpb $0x2d,0x0(%r13) 0.00 : 419e12: 0f 84 46 01 00 00 je 419f5e 0.00 : 419e18: 4c 89 ad 50 ff ff ff mov %r13,-0xb0(%rbp) 0.00 : 419e1f: 45 31 f6 xor %r14d,%r14d 0.00 : 419e22: 31 f6 xor %esi,%esi : } : : for (i = 0, j = new_str_start;; i++, j++) : { : /* Hit decimal point? */ : if (my_str[i] == '.') 0.00 : 419e24: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 419e2b: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 419e2e: 80 f9 2e cmp $0x2e,%cl 0.00 : 419e31: 0f 84 59 01 00 00 je 419f90 : strcpy(&new_str[j], &my_str[i] + 1); : break; : } : : /* End of string? */ : if (my_str[i] == '\0') 0.00 : 419e37: 84 c9 test %cl,%cl 0.00 : 419e39: 0f 84 cc 00 00 00 je 419f0b 0.00 : 419e3f: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 419e45: 45 31 ed xor %r13d,%r13d 0.00 : 419e48: 41 29 c7 sub %eax,%r15d 0.00 : 419e4b: eb 07 jmp 419e54 0.00 : 419e4d: 0f 1f 00 nopl (%rax) : : /* Add separator? */ : if (i != 0 && (i - leading_digits) % groupdigits == 0) : { : strcpy(&new_str[j], thousands_sep); : j += strlen(thousands_sep); 0.00 : 419e50: 41 83 c7 01 add $0x1,%r15d : } : : new_str[j] = my_str[i]; 0.00 : 419e54: 49 63 c6 movslq %r14d,%rax : new_str[0] = my_str[0]; : my_str++; : new_str_start = 1; : } : : for (i = 0, j = new_str_start;; i++, j++) 0.00 : 419e57: 41 83 c5 01 add $0x1,%r13d 0.00 : 419e5b: 41 83 c6 01 add $0x1,%r14d : { : strcpy(&new_str[j], thousands_sep); : j += strlen(thousands_sep); : } : : new_str[j] = my_str[i]; 0.00 : 419e5f: 88 0c 03 mov %cl,(%rbx,%rax,1) : } : : for (i = 0, j = new_str_start;; i++, j++) : { : /* Hit decimal point? */ : if (my_str[i] == '.') 0.00 : 419e62: 4c 8b 85 50 ff ff ff mov -0xb0(%rbp),%r8 0.00 : 419e69: 49 63 c5 movslq %r13d,%rax 0.00 : 419e6c: 49 01 c0 add %rax,%r8 0.00 : 419e6f: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 419e73: 80 f9 2e cmp $0x2e,%cl 0.00 : 419e76: 0f 84 a4 00 00 00 je 419f20 : strcpy(&new_str[j], &my_str[i] + 1); : break; : } : : /* End of string? */ : if (my_str[i] == '\0') 0.00 : 419e7c: 84 c9 test %cl,%cl 0.00 : 419e7e: 0f 84 84 00 00 00 je 419f08 : new_str[j] = '\0'; : break; : } : : /* Add separator? */ : if (i != 0 && (i - leading_digits) % groupdigits == 0) 0.00 : 419e84: 45 85 ed test %r13d,%r13d 0.00 : 419e87: 74 c7 je 419e50 0.00 : 419e89: 44 89 fa mov %r15d,%edx 0.00 : 419e8c: 44 89 f8 mov %r15d,%eax 0.00 : 419e8f: c1 fa 1f sar $0x1f,%edx 0.00 : 419e92: f7 bd 5c ff ff ff idivl -0xa4(%rbp) 0.00 : 419e98: 85 d2 test %edx,%edx 0.00 : 419e9a: 75 b4 jne 419e50 : { : strcpy(&new_str[j], thousands_sep); 0.00 : 419e9c: 49 63 fe movslq %r14d,%rdi 0.00 : 419e9f: 48 8b 35 32 10 25 00 mov 0x251032(%rip),%rsi # 66aed8 0.00 : 419ea6: 4c 89 85 18 ff ff ff mov %r8,-0xe8(%rbp) 0.00 : 419ead: 48 8d 3c 3b lea (%rbx,%rdi,1),%rdi 0.00 : 419eb1: e8 3a 98 fe ff callq 4036f0 : j += strlen(thousands_sep); 0.00 : 419eb6: 48 8b 3d 1b 10 25 00 mov 0x25101b(%rip),%rdi # 66aed8 0.00 : 419ebd: e8 be 99 fe ff callq 403880 0.00 : 419ec2: 4c 8b 85 18 ff ff ff mov -0xe8(%rbp),%r8 0.00 : 419ec9: 41 01 c6 add %eax,%r14d 0.00 : 419ecc: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 419ed0: e9 7b ff ff ff jmpq 419e50 0.00 : 419ed5: 0f 1f 00 nopl (%rax) : for (i = 0; i < cont.ncolumns; i++) : { : char align; : Oid ftype = PQftype(result, i); : : switch (ftype) 0.00 : 419ed8: 3d 16 03 00 00 cmp $0x316,%eax 0.00 : 419edd: 0f 84 8d fc ff ff je 419b70 0.00 : 419ee3: 0f 87 af fd ff ff ja 419c98 0.00 : 419ee9: 2d bc 02 00 00 sub $0x2bc,%eax 0.00 : 419eee: 83 f8 01 cmp $0x1,%eax 0.00 : 419ef1: 0f 86 79 fc ff ff jbe 419b70 0.00 : 419ef7: 41 bd 6c 00 00 00 mov $0x6c,%r13d 0.00 : 419efd: 0f 1f 00 nopl (%rax) 0.00 : 419f00: e9 71 fc ff ff jmpq 419b76 0.00 : 419f05: 0f 1f 00 nopl (%rax) : strcpy(&new_str[j], &my_str[i] + 1); : break; : } : : /* End of string? */ : if (my_str[i] == '\0') 0.00 : 419f08: 49 63 f6 movslq %r14d,%rsi : { : new_str[j] = '\0'; 0.00 : 419f0b: c6 04 33 00 movb $0x0,(%rbx,%rsi,1) : } : : for (i = 0, j = new_str_start;; i++, j++) : { : /* Hit decimal point? */ : if (my_str[i] == '.') 0.00 : 419f0f: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 419f14: e9 f0 fc ff ff jmpq 419c09 0.00 : 419f19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 419f20: 4c 8d 68 01 lea 0x1(%rax),%r13 0.00 : 419f24: 49 63 f6 movslq %r14d,%rsi : { : strcpy(&new_str[j], decimal_point); 0.00 : 419f27: 48 8d 3c 33 lea (%rbx,%rsi,1),%rdi 0.00 : 419f2b: 48 8b 35 96 0f 25 00 mov 0x250f96(%rip),%rsi # 66aec8 0.00 : 419f32: e8 b9 97 fe ff callq 4036f0 : j += strlen(decimal_point); 0.00 : 419f37: 48 8b 3d 8a 0f 25 00 mov 0x250f8a(%rip),%rdi # 66aec8 0.00 : 419f3e: e8 3d 99 fe ff callq 403880 0.00 : 419f43: 41 8d 04 06 lea (%r14,%rax,1),%eax : /* add fractional part */ : strcpy(&new_str[j], &my_str[i] + 1); 0.00 : 419f47: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 419f4e: 48 98 cltq 0.00 : 419f50: 48 8d 3c 03 lea (%rbx,%rax,1),%rdi 0.00 : 419f54: 4c 01 ee add %r13,%rsi 0.00 : 419f57: e8 94 97 fe ff callq 4036f0 0.00 : 419f5c: eb b1 jmp 419f0f : : if (my_str[0] == '-') /* skip over sign, affects grouping : * calculations */ : { : new_str[0] = my_str[0]; : my_str++; 0.00 : 419f5e: 49 83 c5 01 add $0x1,%r13 : int_len % groupdigits : groupdigits; : : if (my_str[0] == '-') /* skip over sign, affects grouping : * calculations */ : { : new_str[0] = my_str[0]; 0.00 : 419f62: c6 03 2d movb $0x2d,(%rbx) : my_str++; 0.00 : 419f65: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 419f6b: 4c 89 ad 50 ff ff ff mov %r13,-0xb0(%rbp) 0.00 : 419f72: be 01 00 00 00 mov $0x1,%esi 0.00 : 419f77: e9 a8 fe ff ff jmpq 419e24 : for (i = 0; i < cont.ncolumns; i++) : { : char align; : Oid ftype = PQftype(result, i); : : switch (ftype) 0.00 : 419f7c: 83 f8 1a cmp $0x1a,%eax 0.00 : 419f7f: 0f 84 eb fb ff ff je 419b70 0.00 : 419f85: 41 bd 6c 00 00 00 mov $0x6c,%r13d 0.00 : 419f8b: e9 e6 fb ff ff jmpq 419b76 : strcpy(&new_str[j], &my_str[i] + 1); : break; : } : : /* End of string? */ : if (my_str[i] == '\0') 0.00 : 419f90: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 419f96: eb 8f jmp 419f27 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:805 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:806 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000642fc0 : : * transaction stop time as an approximation of current time. : * ---------- : */ : void : pgstat_report_stat(bool force) : { 0.00 : 642fc0: 55 push %rbp 0.00 : 642fc1: 48 89 e5 mov %rsp,%rbp 0.00 : 642fc4: 41 57 push %r15 0.00 : 642fc6: 41 56 push %r14 0.00 : 642fc8: 41 55 push %r13 0.00 : 642fca: 41 54 push %r12 0.00 : 642fcc: 41 89 fc mov %edi,%r12d 0.00 : 642fcf: 53 push %rbx 0.00 : 642fd0: 48 81 ec b8 0b 00 00 sub $0xbb8,%rsp : PgStat_MsgTabstat shared_msg; : TabStatusArray *tsa; : int i; : : /* Don't expend a clock check if nothing to do */ : if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) && 0.00 : 642fd7: 48 8b 05 b2 8c 53 00 mov 0x538cb2(%rip),%rax # b7bc90 0.00 : 642fde: 48 85 c0 test %rax,%rax 0.00 : 642fe1: 0f 84 a7 01 00 00 je 64318e 0.00 : 642fe7: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 642fea: 85 f6 test %esi,%esi 0.00 : 642fec: 0f 84 9c 01 00 00 je 64318e : : /* : * Don't send a message unless it's been at least PGSTAT_STAT_INTERVAL : * msec since we last sent one, or the caller wants to force stats out. : */ : now = GetCurrentTransactionStopTimestamp(); 0.00 : 642ff2: e8 39 e5 e7 ff callq 4c1530 : if (!force && 0.00 : 642ff7: 45 84 e4 test %r12b,%r12b : : /* : * Don't send a message unless it's been at least PGSTAT_STAT_INTERVAL : * msec since we last sent one, or the caller wants to force stats out. : */ : now = GetCurrentTransactionStopTimestamp(); 0.00 : 642ffa: 48 89 c3 mov %rax,%rbx : if (!force && 0.00 : 642ffd: 0f 84 02 04 00 00 je 643405 : regular_msg.m_databaseid = MyDatabaseId; : shared_msg.m_databaseid = InvalidOid; : regular_msg.m_nentries = 0; : shared_msg.m_nentries = 0; : : for (tsa = pgStatTabList; tsa != NULL; tsa = tsa->tsa_next) 0.00 : 643003: 4c 8b 2d 86 8c 53 00 mov 0x538c86(%rip),%r13 # b7bc90 : * Scan through the TabStatusArray struct(s) to find tables that actually : * have counts, and build messages to send. We have to separate shared : * relations from regular ones because the databaseid field in the message : * header has to depend on that. : */ : regular_msg.m_databaseid = MyDatabaseId; 0.00 : 64300a: 8b 05 98 70 57 00 mov 0x577098(%rip),%eax # bba0a8 : */ : now = GetCurrentTransactionStopTimestamp(); : if (!force && : !TimestampDifferenceExceeds(last_report, now, PGSTAT_STAT_INTERVAL)) : return; : last_report = now; 0.00 : 643010: 48 89 1d a1 8c 53 00 mov %rbx,0x538ca1(%rip) # b7bcb8 : * have counts, and build messages to send. We have to separate shared : * relations from regular ones because the databaseid field in the message : * header has to depend on that. : */ : regular_msg.m_databaseid = MyDatabaseId; : shared_msg.m_databaseid = InvalidOid; 0.00 : 643017: c7 85 18 f8 ff ff 00 movl $0x0,-0x7e8(%rbp) 0.00 : 64301e: 00 00 00 : regular_msg.m_nentries = 0; 0.00 : 643021: c7 85 ec fb ff ff 00 movl $0x0,-0x414(%rbp) 0.00 : 643028: 00 00 00 : shared_msg.m_nentries = 0; 0.00 : 64302b: c7 85 1c f8 ff ff 00 movl $0x0,-0x7e4(%rbp) 0.00 : 643032: 00 00 00 : : for (tsa = pgStatTabList; tsa != NULL; tsa = tsa->tsa_next) 0.00 : 643035: 4d 85 ed test %r13,%r13 : * Scan through the TabStatusArray struct(s) to find tables that actually : * have counts, and build messages to send. We have to separate shared : * relations from regular ones because the databaseid field in the message : * header has to depend on that. : */ : regular_msg.m_databaseid = MyDatabaseId; 0.00 : 643038: 89 85 e8 fb ff ff mov %eax,-0x418(%rbp) : shared_msg.m_databaseid = InvalidOid; : regular_msg.m_nentries = 0; : shared_msg.m_nentries = 0; : : for (tsa = pgStatTabList; tsa != NULL; tsa = tsa->tsa_next) 0.00 : 64303e: 0f 84 a0 03 00 00 je 6433e4 : continue; : : /* : * OK, insert data into the appropriate message, and send if full. : */ : this_msg = entry->t_shared ? &shared_msg : ®ular_msg; 0.00 : 643044: 48 8d 85 e0 fb ff ff lea -0x420(%rbp),%rax 0.00 : 64304b: 48 8d 8d 10 f8 ff ff lea -0x7f0(%rbp),%rcx 0.00 : 643052: 41 be c0 bc b7 00 mov $0xb7bcc0,%r14d : : /* : * Ignore entries that didn't accumulate any actual counts, such : * as indexes that were opened by the planner but not used. : */ : if (memcmp(&entry->t_counts, &all_zeroes, 0.00 : 643058: 41 bf 60 00 00 00 mov $0x60,%r15d : continue; : : /* : * OK, insert data into the appropriate message, and send if full. : */ : this_msg = entry->t_shared ? &shared_msg : ®ular_msg; 0.00 : 64305e: 48 89 85 20 f4 ff ff mov %rax,-0xbe0(%rbp) 0.00 : 643065: 48 89 8d 28 f4 ff ff mov %rcx,-0xbd8(%rbp) 0.00 : 64306c: 0f 1f 40 00 nopl 0x0(%rax) : regular_msg.m_nentries = 0; : shared_msg.m_nentries = 0; : : for (tsa = pgStatTabList; tsa != NULL; tsa = tsa->tsa_next) : { : for (i = 0; i < tsa->tsa_used; i++) 0.00 : 643070: 45 8b 5d 08 mov 0x8(%r13),%r11d : regular_msg.m_databaseid = MyDatabaseId; : shared_msg.m_databaseid = InvalidOid; : regular_msg.m_nentries = 0; : shared_msg.m_nentries = 0; : : for (tsa = pgStatTabList; tsa != NULL; tsa = tsa->tsa_next) 0.00 : 643074: 45 31 e4 xor %r12d,%r12d : { : for (i = 0; i < tsa->tsa_used; i++) 0.00 : 643077: 45 85 db test %r11d,%r11d 0.00 : 64307a: 7f 1d jg 643099 0.00 : 64307c: e9 57 01 00 00 jmpq 6431d8 0.00 : 643081: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 643088: 45 8b 5d 08 mov 0x8(%r13),%r11d 0.00 : 64308c: 41 83 c4 01 add $0x1,%r12d 0.00 : 643090: 45 39 e3 cmp %r12d,%r11d 0.00 : 643093: 0f 8e 3f 01 00 00 jle 6431d8 : { : PgStat_TableStatus *entry = &tsa->tsa_entries[i]; 0.00 : 643099: 4d 63 d4 movslq %r12d,%r10 : : /* : * Ignore entries that didn't accumulate any actual counts, such : * as indexes that were opened by the planner but not used. : */ : if (memcmp(&entry->t_counts, &all_zeroes, 0.00 : 64309c: 4c 89 f7 mov %r14,%rdi 0.00 : 64309f: 4c 89 f9 mov %r15,%rcx 0.00 : 6430a2: 4c 89 d2 mov %r10,%rdx 0.00 : 6430a5: 4c 89 d0 mov %r10,%rax 0.00 : 6430a8: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 6430ac: 48 c1 e0 07 shl $0x7,%rax 0.00 : 6430b0: 48 29 d0 sub %rdx,%rax 0.00 : 6430b3: 4d 8d 4c 05 20 lea 0x20(%r13,%rax,1),%r9 0.00 : 6430b8: 4c 89 ce mov %r9,%rsi 0.00 : 6430bb: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 6430bd: 74 cd je 64308c : continue; : : /* : * OK, insert data into the appropriate message, and send if full. : */ : this_msg = entry->t_shared ? &shared_msg : ®ular_msg; 0.00 : 6430bf: 4a 8d 0c d5 00 00 00 lea 0x0(,%r10,8),%rcx 0.00 : 6430c6: 00 0.00 : 6430c7: 48 8b 9d 20 f4 ff ff mov -0xbe0(%rbp),%rbx 0.00 : 6430ce: 4c 29 d1 sub %r10,%rcx 0.00 : 6430d1: 48 83 c1 01 add $0x1,%rcx 0.00 : 6430d5: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 6430d9: 42 80 7c 29 04 00 cmpb $0x0,0x4(%rcx,%r13,1) 0.00 : 6430df: 48 0f 45 9d 28 f4 ff cmovne -0xbd8(%rbp),%rbx 0.00 : 6430e6: ff : this_ent = &this_msg->m_entry[this_msg->m_nentries]; 0.00 : 6430e7: 48 63 43 0c movslq 0xc(%rbx),%rax : this_ent->t_id = entry->t_id; 0.00 : 6430eb: 48 8d 14 40 lea (%rax,%rax,2),%rdx 0.00 : 6430ef: 48 8d 14 90 lea (%rax,%rdx,4),%rdx 0.00 : 6430f3: 41 8b 44 0d 00 mov 0x0(%r13,%rcx,1),%eax 0.00 : 6430f8: 48 c1 e2 03 shl $0x3,%rdx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:805 50.00 : 6430fc: 89 44 13 28 mov %eax,0x28(%rbx,%rdx,1) : memcpy(&this_ent->t_counts, &entry->t_counts, 0.00 : 643100: 49 8b 01 mov (%r9),%rax 0.00 : 643103: 48 8d 4c 13 20 lea 0x20(%rbx,%rdx,1),%rcx 0.00 : 643108: 48 8d 51 10 lea 0x10(%rcx),%rdx 0.00 : 64310c: 48 89 41 10 mov %rax,0x10(%rcx) 0.00 : 643110: 49 8b 41 08 mov 0x8(%r9),%rax 0.00 : 643114: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 643118: 49 8b 41 10 mov 0x10(%r9),%rax 0.00 : 64311c: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 643120: 49 8b 41 18 mov 0x18(%r9),%rax 0.00 : 643124: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 643128: 49 8b 41 20 mov 0x20(%r9),%rax 0.00 : 64312c: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 643130: 49 8b 41 28 mov 0x28(%r9),%rax 0.00 : 643134: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 643138: 49 8b 41 30 mov 0x30(%r9),%rax 0.00 : 64313c: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 643140: 49 8b 41 38 mov 0x38(%r9),%rax 0.00 : 643144: 48 89 42 38 mov %rax,0x38(%rdx) 0.00 : 643148: 49 8b 41 40 mov 0x40(%r9),%rax 0.00 : 64314c: 48 89 42 40 mov %rax,0x40(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:806 50.00 : 643150: 49 8b 41 48 mov 0x48(%r9),%rax 0.00 : 643154: 48 89 42 48 mov %rax,0x48(%rdx) 0.00 : 643158: 49 8b 41 50 mov 0x50(%r9),%rax 0.00 : 64315c: 48 89 42 50 mov %rax,0x50(%rdx) 0.00 : 643160: 49 8b 41 58 mov 0x58(%r9),%rax 0.00 : 643164: 48 89 42 58 mov %rax,0x58(%rdx) : sizeof(PgStat_TableCounts)); : if (++this_msg->m_nentries >= PGSTAT_NUM_TABENTRIES) 0.00 : 643168: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 64316b: 83 c0 01 add $0x1,%eax 0.00 : 64316e: 83 f8 08 cmp $0x8,%eax 0.00 : 643171: 89 43 0c mov %eax,0xc(%rbx) 0.00 : 643174: 0f 86 0e ff ff ff jbe 643088 : { : pgstat_send_tabstat(this_msg); 0.00 : 64317a: 48 89 df mov %rbx,%rdi 0.00 : 64317d: e8 7e cd ff ff callq 63ff00 : this_msg->m_nentries = 0; 0.00 : 643182: c7 43 0c 00 00 00 00 movl $0x0,0xc(%rbx) 0.00 : 643189: e9 fa fe ff ff jmpq 643088 : PgStat_MsgTabstat shared_msg; : TabStatusArray *tsa; : int i; : : /* Don't expend a clock check if nothing to do */ : if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) && 0.00 : 64318e: 8b 0d 0c 8b 53 00 mov 0x538b0c(%rip),%ecx # b7bca0 0.00 : 643194: 85 c9 test %ecx,%ecx 0.00 : 643196: 0f 85 56 fe ff ff jne 642ff2 0.00 : 64319c: 8b 15 02 8b 53 00 mov 0x538b02(%rip),%edx # b7bca4 0.00 : 6431a2: 85 d2 test %edx,%edx 0.00 : 6431a4: 0f 85 48 fe ff ff jne 642ff2 0.00 : 6431aa: 80 3d f7 8a 53 00 00 cmpb $0x0,0x538af7(%rip) # b7bca8 0.00 : 6431b1: 0f 85 3b fe ff ff jne 642ff2 0.00 : 6431b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6431be: 00 00 : if (shared_msg.m_nentries > 0) : pgstat_send_tabstat(&shared_msg); : : /* Now, send function statistics */ : pgstat_send_funcstats(); : } 0.00 : 6431c0: 48 81 c4 b8 0b 00 00 add $0xbb8,%rsp 0.00 : 6431c7: 5b pop %rbx 0.00 : 6431c8: 41 5c pop %r12 0.00 : 6431ca: 41 5d pop %r13 0.00 : 6431cc: 41 5e pop %r14 0.00 : 6431ce: 41 5f pop %r15 0.00 : 6431d0: c9 leaveq 0.00 : 6431d1: c3 retq 0.00 : 6431d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : pgstat_send_tabstat(this_msg); : this_msg->m_nentries = 0; : } : } : /* zero out TableStatus structs after use */ : MemSet(tsa->tsa_entries, 0, 0.00 : 6431d8: 49 63 c3 movslq %r11d,%rax 0.00 : 6431db: 49 8d 7d 10 lea 0x10(%r13),%rdi 0.00 : 6431df: 48 89 c2 mov %rax,%rdx 0.00 : 6431e2: 48 c1 e0 07 shl $0x7,%rax 0.00 : 6431e6: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 6431ea: 48 29 d0 sub %rdx,%rax 0.00 : 6431ed: 40 f6 c7 07 test $0x7,%dil 0.00 : 6431f1: 0f 85 89 01 00 00 jne 643380 0.00 : 6431f7: 48 3d 00 04 00 00 cmp $0x400,%rax 0.00 : 6431fd: 0f 87 7d 01 00 00 ja 643380 0.00 : 643203: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 643207: 48 39 c7 cmp %rax,%rdi 0.00 : 64320a: 73 14 jae 643220 0.00 : 64320c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 643210: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 643217: 48 83 c7 08 add $0x8,%rdi 0.00 : 64321b: 48 39 f8 cmp %rdi,%rax 0.00 : 64321e: 77 f0 ja 643210 : tsa->tsa_used * sizeof(PgStat_TableStatus)); : tsa->tsa_used = 0; 0.00 : 643220: 41 c7 45 08 00 00 00 movl $0x0,0x8(%r13) 0.00 : 643227: 00 : regular_msg.m_databaseid = MyDatabaseId; : shared_msg.m_databaseid = InvalidOid; : regular_msg.m_nentries = 0; : shared_msg.m_nentries = 0; : : for (tsa = pgStatTabList; tsa != NULL; tsa = tsa->tsa_next) 0.00 : 643228: 4d 8b 6d 00 mov 0x0(%r13),%r13 0.00 : 64322c: 4d 85 ed test %r13,%r13 0.00 : 64322f: 0f 85 3b fe ff ff jne 643070 : : /* : * Send partial messages. Make sure that any pending xact commit/abort : * gets counted, even if there are no table stats to send. : */ : if (regular_msg.m_nentries > 0 || 0.00 : 643235: 8b 85 ec fb ff ff mov -0x414(%rbp),%eax 0.00 : 64323b: 85 c0 test %eax,%eax 0.00 : 64323d: 0f 8e a1 01 00 00 jle 6433e4 : pgStatXactCommit > 0 || pgStatXactRollback > 0) : pgstat_send_tabstat(®ular_msg); 0.00 : 643243: 48 8d bd e0 fb ff ff lea -0x420(%rbp),%rdi 0.00 : 64324a: e8 b1 cc ff ff callq 63ff00 : if (shared_msg.m_nentries > 0) 0.00 : 64324f: 8b 85 1c f8 ff ff mov -0x7e4(%rbp),%eax 0.00 : 643255: 85 c0 test %eax,%eax 0.00 : 643257: 7e 0c jle 643265 : pgstat_send_tabstat(&shared_msg); 0.00 : 643259: 48 8d bd 10 f8 ff ff lea -0x7f0(%rbp),%rdi 0.00 : 643260: e8 9b cc ff ff callq 63ff00 : : PgStat_MsgFuncstat msg; : PgStat_BackendFunctionEntry *entry; : HASH_SEQ_STATUS fstat; : : if (pgStatFunctions == NULL) 0.00 : 643265: 48 83 3d 43 8a 53 00 cmpq $0x0,0x538a43(%rip) # b7bcb0 0.00 : 64326c: 00 0.00 : 64326d: 0f 84 4d ff ff ff je 6431c0 : return; : : pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_FUNCSTAT); : msg.m_databaseid = MyDatabaseId; 0.00 : 643273: 8b 05 2f 6e 57 00 mov 0x576e2f(%rip),%eax # bba0a8 : msg.m_nentries = 0; : : hash_seq_init(&fstat, pgStatFunctions); 0.00 : 643279: 48 8b 35 30 8a 53 00 mov 0x538a30(%rip),%rsi # b7bcb0 0.00 : 643280: 4c 8d 6d b0 lea -0x50(%rbp),%r13 : * ---------- : */ : static void : pgstat_setheader(PgStat_MsgHdr *hdr, StatMsgType mtype) : { : hdr->m_type = mtype; 0.00 : 643284: c7 85 40 f4 ff ff 0d movl $0xd,-0xbc0(%rbp) 0.00 : 64328b: 00 00 00 : if (pgStatFunctions == NULL) : return; : : pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_FUNCSTAT); : msg.m_databaseid = MyDatabaseId; : msg.m_nentries = 0; 0.00 : 64328e: c7 85 4c f4 ff ff 00 movl $0x0,-0xbb4(%rbp) 0.00 : 643295: 00 00 00 : while ((entry = (PgStat_BackendFunctionEntry *) hash_seq_search(&fstat)) != NULL) : { : PgStat_FunctionEntry *m_ent; : : /* Skip it if no counts accumulated since last time */ : if (memcmp(&entry->f_counts, &all_zeroes, 0.00 : 643298: 41 be 20 bd b7 00 mov $0xb7bd20,%r14d : : pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_FUNCSTAT); : msg.m_databaseid = MyDatabaseId; : msg.m_nentries = 0; : : hash_seq_init(&fstat, pgStatFunctions); 0.00 : 64329e: 4c 89 ef mov %r13,%rdi : while ((entry = (PgStat_BackendFunctionEntry *) hash_seq_search(&fstat)) != NULL) : { : PgStat_FunctionEntry *m_ent; : : /* Skip it if no counts accumulated since last time */ : if (memcmp(&entry->f_counts, &all_zeroes, 0.00 : 6432a1: 41 bf 28 00 00 00 mov $0x28,%r15d : : if (pgStatFunctions == NULL) : return; : : pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_FUNCSTAT); : msg.m_databaseid = MyDatabaseId; 0.00 : 6432a7: 89 85 48 f4 ff ff mov %eax,-0xbb8(%rbp) : msg.m_nentries = 0; : : hash_seq_init(&fstat, pgStatFunctions); 0.00 : 6432ad: e8 7e 0b 14 00 callq 783e30 : if (memcmp(&entry->f_counts, &all_zeroes, : sizeof(PgStat_FunctionCounts)) == 0) : continue; : : /* need to convert format of time accumulators */ : m_ent = &msg.m_entry[msg.m_nentries]; 0.00 : 6432b2: 48 8d b5 40 f4 ff ff lea -0xbc0(%rbp),%rsi 0.00 : 6432b9: 48 83 c6 10 add $0x10,%rsi 0.00 : 6432bd: 48 89 b5 38 f4 ff ff mov %rsi,-0xbc8(%rbp) 0.00 : 6432c4: 0f 1f 40 00 nopl 0x0(%rax) : pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_FUNCSTAT); : msg.m_databaseid = MyDatabaseId; : msg.m_nentries = 0; : : hash_seq_init(&fstat, pgStatFunctions); : while ((entry = (PgStat_BackendFunctionEntry *) hash_seq_search(&fstat)) != NULL) 0.00 : 6432c8: 4c 89 ef mov %r13,%rdi 0.00 : 6432cb: e8 f0 07 14 00 callq 783ac0 0.00 : 6432d0: 48 85 c0 test %rax,%rax 0.00 : 6432d3: 48 89 c3 mov %rax,%rbx 0.00 : 6432d6: 0f 84 b3 00 00 00 je 64338f : { : PgStat_FunctionEntry *m_ent; : : /* Skip it if no counts accumulated since last time */ : if (memcmp(&entry->f_counts, &all_zeroes, 0.00 : 6432dc: 4c 8d 63 08 lea 0x8(%rbx),%r12 0.00 : 6432e0: 4c 89 f7 mov %r14,%rdi 0.00 : 6432e3: 4c 89 f9 mov %r15,%rcx 0.00 : 6432e6: 4c 89 e6 mov %r12,%rsi 0.00 : 6432e9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 6432eb: 74 db je 6432c8 : sizeof(PgStat_FunctionCounts)) == 0) : continue; : : /* need to convert format of time accumulators */ : m_ent = &msg.m_entry[msg.m_nentries]; 0.00 : 6432ed: 48 63 95 4c f4 ff ff movslq -0xbb4(%rbp),%rdx : m_ent->f_id = entry->f_id; 0.00 : 6432f4: 8b 03 mov (%rbx),%eax : if (memcmp(&entry->f_counts, &all_zeroes, : sizeof(PgStat_FunctionCounts)) == 0) : continue; : : /* need to convert format of time accumulators */ : m_ent = &msg.m_entry[msg.m_nentries]; 0.00 : 6432f6: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 6432fa: 48 03 95 38 f4 ff ff add -0xbc8(%rbp),%rdx : m_ent->f_id = entry->f_id; 0.00 : 643301: 89 02 mov %eax,(%rdx) : m_ent->f_numcalls = entry->f_counts.f_numcalls; 0.00 : 643303: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 643307: 48 89 42 08 mov %rax,0x8(%rdx) : m_ent->f_total_time = INSTR_TIME_GET_MICROSEC(entry->f_counts.f_total_time); 0.00 : 64330b: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 64330f: 48 69 c0 40 42 0f 00 imul $0xf4240,%rax,%rax 0.00 : 643316: 48 03 43 18 add 0x18(%rbx),%rax 0.00 : 64331a: 48 89 42 10 mov %rax,0x10(%rdx) : m_ent->f_self_time = INSTR_TIME_GET_MICROSEC(entry->f_counts.f_self_time); 0.00 : 64331e: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 643322: 48 69 c0 40 42 0f 00 imul $0xf4240,%rax,%rax 0.00 : 643329: 48 03 43 28 add 0x28(%rbx),%rax 0.00 : 64332d: 48 89 42 18 mov %rax,0x18(%rdx) : : if (++msg.m_nentries >= PGSTAT_NUM_FUNCENTRIES) 0.00 : 643331: 8b 85 4c f4 ff ff mov -0xbb4(%rbp),%eax 0.00 : 643337: 83 c0 01 add $0x1,%eax 0.00 : 64333a: 83 f8 1d cmp $0x1d,%eax 0.00 : 64333d: 89 85 4c f4 ff ff mov %eax,-0xbb4(%rbp) 0.00 : 643343: 77 78 ja 6433bd : msg.m_nentries * sizeof(PgStat_FunctionEntry)); : msg.m_nentries = 0; : } : : /* reset the entry's counts */ : MemSet(&entry->f_counts, 0, sizeof(PgStat_FunctionCounts)); 0.00 : 643345: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 64334c: 00 0.00 : 64334d: 49 c7 44 24 08 00 00 movq $0x0,0x8(%r12) 0.00 : 643354: 00 00 0.00 : 643356: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 64335d: 00 00 0.00 : 64335f: 49 c7 44 24 18 00 00 movq $0x0,0x18(%r12) 0.00 : 643366: 00 00 0.00 : 643368: 49 c7 44 24 20 00 00 movq $0x0,0x20(%r12) 0.00 : 64336f: 00 00 0.00 : 643371: e9 52 ff ff ff jmpq 6432c8 0.00 : 643376: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 64337d: 00 00 00 : pgstat_send_tabstat(this_msg); : this_msg->m_nentries = 0; : } : } : /* zero out TableStatus structs after use */ : MemSet(tsa->tsa_entries, 0, 0.00 : 643380: 48 89 c2 mov %rax,%rdx 0.00 : 643383: 31 f6 xor %esi,%esi 0.00 : 643385: e8 96 60 e2 ff callq 469420 0.00 : 64338a: e9 91 fe ff ff jmpq 643220 : : /* reset the entry's counts */ : MemSet(&entry->f_counts, 0, sizeof(PgStat_FunctionCounts)); : } : : if (msg.m_nentries > 0) 0.00 : 64338f: 8b 85 4c f4 ff ff mov -0xbb4(%rbp),%eax 0.00 : 643395: 85 c0 test %eax,%eax 0.00 : 643397: 7e 18 jle 6433b1 : pgstat_send(&msg, offsetof(PgStat_MsgFuncstat, m_entry[0]) + 0.00 : 643399: 48 63 f0 movslq %eax,%rsi 0.00 : 64339c: 48 8d bd 40 f4 ff ff lea -0xbc0(%rbp),%rdi 0.00 : 6433a3: 48 8d 74 36 01 lea 0x1(%rsi,%rsi,1),%rsi 0.00 : 6433a8: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 6433ac: e8 5f c9 ff ff callq 63fd10 : msg.m_nentries * sizeof(PgStat_FunctionEntry)); : : have_function_stats = false; 0.00 : 6433b1: c6 05 f0 88 53 00 00 movb $0x0,0x5388f0(%rip) # b7bca8 0.00 : 6433b8: e9 03 fe ff ff jmpq 6431c0 : m_ent->f_total_time = INSTR_TIME_GET_MICROSEC(entry->f_counts.f_total_time); : m_ent->f_self_time = INSTR_TIME_GET_MICROSEC(entry->f_counts.f_self_time); : : if (++msg.m_nentries >= PGSTAT_NUM_FUNCENTRIES) : { : pgstat_send(&msg, offsetof(PgStat_MsgFuncstat, m_entry[0]) + 0.00 : 6433bd: 48 63 f0 movslq %eax,%rsi 0.00 : 6433c0: 48 8d bd 40 f4 ff ff lea -0xbc0(%rbp),%rdi 0.00 : 6433c7: 48 8d 74 36 01 lea 0x1(%rsi,%rsi,1),%rsi 0.00 : 6433cc: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 6433d0: e8 3b c9 ff ff callq 63fd10 : msg.m_nentries * sizeof(PgStat_FunctionEntry)); : msg.m_nentries = 0; 0.00 : 6433d5: c7 85 4c f4 ff ff 00 movl $0x0,-0xbb4(%rbp) 0.00 : 6433dc: 00 00 00 0.00 : 6433df: e9 61 ff ff ff jmpq 643345 : : /* : * Send partial messages. Make sure that any pending xact commit/abort : * gets counted, even if there are no table stats to send. : */ : if (regular_msg.m_nentries > 0 || 0.00 : 6433e4: 8b 05 b6 88 53 00 mov 0x5388b6(%rip),%eax # b7bca0 0.00 : 6433ea: 85 c0 test %eax,%eax 0.00 : 6433ec: 0f 8f 51 fe ff ff jg 643243 0.00 : 6433f2: 8b 05 ac 88 53 00 mov 0x5388ac(%rip),%eax # b7bca4 0.00 : 6433f8: 85 c0 test %eax,%eax 0.00 : 6433fa: 0f 8f 43 fe ff ff jg 643243 0.00 : 643400: e9 4a fe ff ff jmpq 64324f : /* : * Don't send a message unless it's been at least PGSTAT_STAT_INTERVAL : * msec since we last sent one, or the caller wants to force stats out. : */ : now = GetCurrentTransactionStopTimestamp(); : if (!force && 0.00 : 643405: 48 8b 3d ac 88 53 00 mov 0x5388ac(%rip),%rdi # b7bcb8 0.00 : 64340c: ba f4 01 00 00 mov $0x1f4,%edx 0.00 : 643411: 48 89 c6 mov %rax,%rsi 0.00 : 643414: e8 67 d2 0f 00 callq 740680 0.00 : 643419: 84 c0 test %al,%al 0.00 : 64341b: 0f 85 e2 fb ff ff jne 643003 0.00 : 643421: e9 9a fd ff ff jmpq 6431c0 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000ed90 : : * Return TRUE if PQgetResult would block waiting for input. : */ : : int : PQisBusy(PGconn *conn) : { 50.00 : ed90: 55 push %rbp : if (!conn) 50.00 : ed91: 31 c0 xor %eax,%eax : * Return TRUE if PQgetResult would block waiting for input. : */ : : int : PQisBusy(PGconn *conn) : { 0.00 : ed93: 48 89 e5 mov %rsp,%rbp 0.00 : ed96: 53 push %rbx 0.00 : ed97: 48 89 fb mov %rdi,%rbx 0.00 : ed9a: 48 83 ec 08 sub $0x8,%rsp : if (!conn) 0.00 : ed9e: 48 85 ff test %rdi,%rdi 0.00 : eda1: 74 11 je edb4 : return FALSE; : : /* Parse any available data, if our state permits. */ : parseInput(conn); 0.00 : eda3: e8 c8 fd ff ff callq eb70 : : /* PQgetResult will return immediately in all states except BUSY. */ : return conn->asyncStatus == PGASYNC_BUSY; 0.00 : eda8: 31 c0 xor %eax,%eax 0.00 : edaa: 83 bb 04 01 00 00 01 cmpl $0x1,0x104(%rbx) 0.00 : edb1: 0f 94 c0 sete %al : } 0.00 : edb4: 48 83 c4 08 add $0x8,%rsp 0.00 : edb8: 5b pop %rbx 0.00 : edb9: c9 leaveq Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000170c0 <__mempcpy>: 0.00 : 170c0: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 170c4: 73 7a jae 17140 <__mempcpy+0x80> 0.00 : 170c6: f6 c2 01 test $0x1,%dl 0.00 : 170c9: 74 0b je 170d6 <__mempcpy+0x16> 0.00 : 170cb: 0f b6 0e movzbl (%rsi),%ecx 33.33 : 170ce: 88 0f mov %cl,(%rdi) 0.00 : 170d0: 48 ff c6 inc %rsi 0.00 : 170d3: 48 ff c7 inc %rdi 33.33 : 170d6: f6 c2 02 test $0x2,%dl 0.00 : 170d9: 74 0e je 170e9 <__mempcpy+0x29> 0.00 : 170db: 0f b7 0e movzwl (%rsi),%ecx 0.00 : 170de: 66 89 0f mov %cx,(%rdi) 0.00 : 170e1: 48 83 c6 02 add $0x2,%rsi 0.00 : 170e5: 48 83 c7 02 add $0x2,%rdi 0.00 : 170e9: f6 c2 04 test $0x4,%dl 0.00 : 170ec: 74 0c je 170fa <__mempcpy+0x3a> 0.00 : 170ee: 8b 0e mov (%rsi),%ecx 0.00 : 170f0: 89 0f mov %ecx,(%rdi) 0.00 : 170f2: 48 83 c6 04 add $0x4,%rsi 0.00 : 170f6: 48 83 c7 04 add $0x4,%rdi 0.00 : 170fa: f6 c2 08 test $0x8,%dl 0.00 : 170fd: 74 11 je 17110 <__mempcpy+0x50> 0.00 : 170ff: 48 8b 0e mov (%rsi),%rcx 0.00 : 17102: 48 89 0f mov %rcx,(%rdi) 0.00 : 17105: 48 83 c6 08 add $0x8,%rsi 0.00 : 17109: 48 83 c7 08 add $0x8,%rdi 0.00 : 1710d: 0f 1f 00 nopl (%rax) 0.00 : 17110: 81 e2 f0 00 00 00 and $0xf0,%edx 0.00 : 17116: 74 23 je 1713b <__mempcpy+0x7b> 33.33 : 17118: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1711f: 00 0.00 : 17120: 48 8b 0e mov (%rsi),%rcx 0.00 : 17123: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 17127: 48 89 0f mov %rcx,(%rdi) 0.00 : 1712a: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 1712e: 83 ea 10 sub $0x10,%edx 0.00 : 17131: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.00 : 17135: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 17139: 75 e5 jne 17120 <__mempcpy+0x60> 0.00 : 1713b: 48 89 f8 mov %rdi,%rax 0.00 : 1713e: c3 retq 0.00 : 1713f: 90 nop 0.00 : 17140: 89 f1 mov %esi,%ecx 0.00 : 17142: 83 e1 07 and $0x7,%ecx 0.00 : 17145: 74 29 je 17170 <__mempcpy+0xb0> 0.00 : 17147: 48 8d 54 11 f8 lea -0x8(%rcx,%rdx,1),%rdx 0.00 : 1714c: 83 e9 08 sub $0x8,%ecx 0.00 : 1714f: 90 nop 0.00 : 17150: 0f b6 06 movzbl (%rsi),%eax 0.00 : 17153: 88 07 mov %al,(%rdi) 0.00 : 17155: ff c1 inc %ecx 0.00 : 17157: 48 8d 76 01 lea 0x1(%rsi),%rsi 0.00 : 1715b: 48 8d 7f 01 lea 0x1(%rdi),%rdi 0.00 : 1715f: 75 ef jne 17150 <__mempcpy+0x90> 0.00 : 17161: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 17168: 0f 1f 84 00 00 00 00 0.00 : 1716f: 00 0.00 : 17170: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 17177: 77 77 ja 171f0 <__mempcpy+0x130> 0.00 : 17179: 89 d1 mov %edx,%ecx 0.00 : 1717b: c1 e9 05 shr $0x5,%ecx 0.00 : 1717e: 74 60 je 171e0 <__mempcpy+0x120> 0.00 : 17180: ff c9 dec %ecx 0.00 : 17182: 48 8b 06 mov (%rsi),%rax 0.00 : 17185: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 17189: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 1718d: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 17191: 48 89 07 mov %rax,(%rdi) 0.00 : 17194: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 17198: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 1719c: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 171a0: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 171a4: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 171a8: 74 36 je 171e0 <__mempcpy+0x120> 0.00 : 171aa: ff c9 dec %ecx 0.00 : 171ac: 48 8b 06 mov (%rsi),%rax 0.00 : 171af: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 171b3: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 171b7: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 171bb: 48 89 07 mov %rax,(%rdi) 0.00 : 171be: 4c 89 47 08 mov %r8,0x8(%rdi) 0.00 : 171c2: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 171c6: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 171ca: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 171ce: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 171d2: 75 ac jne 17180 <__mempcpy+0xc0> 0.00 : 171d4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 171db: 00 00 00 00 00 0.00 : 171e0: 83 e2 1f and $0x1f,%edx 0.00 : 171e3: 0f 85 dd fe ff ff jne 170c6 <__mempcpy+0x6> 0.00 : 171e9: 48 89 f8 mov %rdi,%rax 0.00 : 171ec: c3 retq 0.00 : 171ed: 0f 1f 00 nopl (%rax) 0.00 : 171f0: 48 89 d1 mov %rdx,%rcx 0.00 : 171f3: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 171f7: 74 07 je 17200 <__mempcpy+0x140> 0.00 : 171f9: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.00 : 171fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 17200: 83 e2 07 and $0x7,%edx 0.00 : 17203: 0f 85 bd fe ff ff jne 170c6 <__mempcpy+0x6> 0.00 : 17209: 48 89 f8 mov %rdi,%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469c30 : 100.00 : 469c30: ff 25 4a d8 6f 00 jmpq *0x6fd84a(%rip) # b67480 <_GLOBAL_OFFSET_TABLE_+0x480> 0.00 : 469c36: 68 8d 00 00 00 pushq $0x8d 0.00 : 469c3b: e9 10 f7 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2910 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4910 : : * : * Returns TRUE if we flushed anything. : */ : bool : XLogBackgroundFlush(void) : { 0.00 : 4d4910: 55 push %rbp 0.00 : 4d4911: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4914: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 4d4918: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 4d491c: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 4d4920: 48 83 ec 30 sub $0x30,%rsp : XLogRecPtr WriteRqstPtr; : bool flexible = true; : bool wrote_something = false; : : /* XLOG doesn't need flushing during recovery */ : if (RecoveryInProgress()) 0.00 : 4d4924: e8 97 8b ff ff callq 4cd4c0 0.00 : 4d4929: 84 c0 test %al,%al 0.00 : 4d492b: 0f 85 9f 01 00 00 jne 4d4ad0 : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4931: 48 8b 15 60 48 6a 00 mov 0x6a4860(%rip),%rdx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d4938: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d493d: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d4944: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d4947: 84 c0 test %al,%al 0.00 : 4d4949: 0f 85 99 01 00 00 jne 4d4ae8 : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d494f: 48 8b 05 42 48 6a 00 mov 0x6a4842(%rip),%rax # b79198 0.00 : 4d4956: 48 8b 90 28 01 00 00 mov 0x128(%rax),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2910 100.00 : 4d495d: 48 89 15 4c 48 6a 00 mov %rdx,0x6a484c(%rip) # b791b0 0.00 : 4d4964: 48 8b 90 30 01 00 00 mov 0x130(%rax),%rdx 0.00 : 4d496b: 48 89 15 46 48 6a 00 mov %rdx,0x6a4846(%rip) # b791b8 : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; 0.00 : 4d4972: 48 8b 98 d8 00 00 00 mov 0xd8(%rax),%rbx : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4979: 48 8b 05 18 48 6a 00 mov 0x6a4818(%rip),%rax # b79198 : : /* back off to last completed page boundary */ : WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; 0.00 : 4d4980: 48 81 e3 00 e0 ff ff and $0xffffffffffffe000,%rbx : : /* if we have already flushed that far, consider async commit records */ : if (WriteRqstPtr <= LogwrtResult.Flush) 0.00 : 4d4987: 41 bd 01 00 00 00 mov $0x1,%r13d : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : LogwrtResult = XLogCtl->LogwrtResult; : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d498d: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : : /* back off to last completed page boundary */ : WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; : : /* if we have already flushed that far, consider async commit records */ : if (WriteRqstPtr <= LogwrtResult.Flush) 0.00 : 4d4994: 48 3b 1d 1d 48 6a 00 cmp 0x6a481d(%rip),%rbx # b791b8 0.00 : 4d499b: 0f 86 af 00 00 00 jbe 4d4a50 : (uint32) (WriteRqstPtr >> 32), (uint32) WriteRqstPtr, : (uint32) (LogwrtResult.Write >> 32), (uint32) LogwrtResult.Write, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : #endif : : START_CRIT_SECTION(); 0.00 : 4d49a1: 8b 05 f5 56 6e 00 mov 0x6e56f5(%rip),%eax # bba09c : : /* now wait for any in-progress insertions to finish and get write lock */ : WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d49a7: 48 89 df mov %rbx,%rdi : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); : LogwrtResult = XLogCtl->LogwrtResult; : if (WriteRqstPtr > LogwrtResult.Flush) 0.00 : 4d49aa: 45 31 e4 xor %r12d,%r12d : (uint32) (WriteRqstPtr >> 32), (uint32) WriteRqstPtr, : (uint32) (LogwrtResult.Write >> 32), (uint32) LogwrtResult.Write, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : #endif : : START_CRIT_SECTION(); 0.00 : 4d49ad: 83 c0 01 add $0x1,%eax 0.00 : 4d49b0: 89 05 e6 56 6e 00 mov %eax,0x6e56e6(%rip) # bba09c : : /* now wait for any in-progress insertions to finish and get write lock */ : WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d49b6: e8 55 f5 ff ff callq 4d3f10 : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); 0.00 : 4d49bb: 48 8b 3d 3e 90 6a 00 mov 0x6a903e(%rip),%rdi # b7da00 0.00 : 4d49c2: 31 f6 xor %esi,%esi 0.00 : 4d49c4: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d49cb: e8 20 b1 1b 00 callq 68faf0 : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d49d0: 48 8b 15 c1 47 6a 00 mov 0x6a47c1(%rip),%rdx # b79198 0.00 : 4d49d7: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d49de: 48 89 05 cb 47 6a 00 mov %rax,0x6a47cb(%rip) # b791b0 0.00 : 4d49e5: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax : if (WriteRqstPtr > LogwrtResult.Flush) 0.00 : 4d49ec: 48 39 d8 cmp %rbx,%rax : START_CRIT_SECTION(); : : /* now wait for any in-progress insertions to finish and get write lock */ : WaitXLogInsertionsToFinish(WriteRqstPtr); : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d49ef: 48 89 05 c2 47 6a 00 mov %rax,0x6a47c2(%rip) # b791b8 : if (WriteRqstPtr > LogwrtResult.Flush) 0.00 : 4d49f6: 0f 82 24 01 00 00 jb 4d4b20 : WriteRqst.Write = WriteRqstPtr; : WriteRqst.Flush = WriteRqstPtr; : XLogWrite(WriteRqst, flexible); : wrote_something = true; : } : LWLockRelease(WALWriteLock); 0.00 : 4d49fc: 48 8b 3d fd 8f 6a 00 mov 0x6a8ffd(%rip),%rdi # b7da00 0.00 : 4d4a03: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d4a0a: e8 91 a9 1b 00 callq 68f3a0 : : END_CRIT_SECTION(); 0.00 : 4d4a0f: 8b 05 87 56 6e 00 mov 0x6e5687(%rip),%eax # bba09c 0.00 : 4d4a15: 83 e8 01 sub $0x1,%eax : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4a18: 80 3d aa 83 6a 00 00 cmpb $0x0,0x6a83aa(%rip) # b7cdc9 : XLogWrite(WriteRqst, flexible); : wrote_something = true; : } : LWLockRelease(WALWriteLock); : : END_CRIT_SECTION(); 0.00 : 4d4a1f: 89 05 77 56 6e 00 mov %eax,0x6e5677(%rip) # bba09c : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4a25: 74 16 je 4d4a3d 0.00 : 4d4a27: 8b 1d 97 83 6a 00 mov 0x6a8397(%rip),%ebx # b7cdc4 0.00 : 4d4a2d: c6 05 95 83 6a 00 00 movb $0x0,0x6a8395(%rip) # b7cdc9 0.00 : 4d4a34: 85 db test %ebx,%ebx 0.00 : 4d4a36: 7e 05 jle 4d4a3d 0.00 : 4d4a38: e8 a3 c0 18 00 callq 660ae0 : : /* : * Great, done. To take some work off the critical path, try to initialize : * as many of the no-longer-needed WAL buffers for future use as we can. : */ : AdvanceXLInsertBuffer(InvalidXLogRecPtr, true); 0.00 : 4d4a3d: be 01 00 00 00 mov $0x1,%esi 0.00 : 4d4a42: 31 ff xor %edi,%edi 0.00 : 4d4a44: e8 27 fc ff ff callq 4d4670 : : return wrote_something; : } 0.00 : 4d4a49: e9 85 00 00 00 jmpq 4d4ad3 0.00 : 4d4a4e: 66 90 xchg %ax,%ax : WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; : : /* if we have already flushed that far, consider async commit records */ : if (WriteRqstPtr <= LogwrtResult.Flush) : { : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4a50: 48 8d 90 08 06 00 00 lea 0x608(%rax),%rdx 0.00 : 4d4a57: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d4a5c: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d4a5f: 84 c0 test %al,%al 0.00 : 4d4a61: 74 1d je 4d4a80 0.00 : 4d4a63: 48 8b 3d 2e 47 6a 00 mov 0x6a472e(%rip),%rdi # b79198 0.00 : 4d4a6a: ba 68 0b 00 00 mov $0xb68,%edx 0.00 : 4d4a6f: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4a74: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4a7b: e8 c0 b5 1b 00 callq 690040 : WriteRqstPtr = XLogCtl->asyncXactLSN; 0.00 : 4d4a80: 48 8b 05 11 47 6a 00 mov 0x6a4711(%rip),%rax # b79198 0.00 : 4d4a87: 48 8b 98 f8 00 00 00 mov 0xf8(%rax),%rbx : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4a8e: 48 8b 05 03 47 6a 00 mov 0x6a4703(%rip),%rax # b79198 0.00 : 4d4a95: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : /* : * If already known flushed, we're done. Just need to check if we are : * holding an open file handle to a logfile that's no longer in use, : * preventing the file from being deleted. : */ : if (WriteRqstPtr <= LogwrtResult.Flush) 0.00 : 4d4a9c: 48 3b 1d 15 47 6a 00 cmp 0x6a4715(%rip),%rbx # b791b8 0.00 : 4d4aa3: 0f 87 99 00 00 00 ja 4d4b42 : { : if (openLogFile >= 0) 0.00 : 4d4aa9: 44 8b 25 a4 33 69 00 mov 0x6933a4(%rip),%r12d # b67e54 0.00 : 4d4ab0: 45 85 e4 test %r12d,%r12d 0.00 : 4d4ab3: 78 1b js 4d4ad0 : { : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) 0.00 : 4d4ab5: 48 8b 05 f4 46 6a 00 mov 0x6a46f4(%rip),%rax # b791b0 0.00 : 4d4abc: 48 83 e8 01 sub $0x1,%rax 0.00 : 4d4ac0: 48 c1 e8 18 shr $0x18,%rax 0.00 : 4d4ac4: 48 3b 05 05 47 6a 00 cmp 0x6a4705(%rip),%rax # b791d0 0.00 : 4d4acb: 75 43 jne 4d4b10 0.00 : 4d4acd: 0f 1f 00 nopl (%rax) : : /* : * Great, done. To take some work off the critical path, try to initialize : * as many of the no-longer-needed WAL buffers for future use as we can. : */ : AdvanceXLInsertBuffer(InvalidXLogRecPtr, true); 0.00 : 4d4ad0: 45 31 e4 xor %r12d,%r12d : : return wrote_something; : } 0.00 : 4d4ad3: 44 89 e0 mov %r12d,%eax 0.00 : 4d4ad6: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 4d4ada: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 4d4ade: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 4d4ae2: c9 leaveq 0.00 : 4d4ae3: c3 retq 0.00 : 4d4ae4: 0f 1f 40 00 nopl 0x0(%rax) : /* XLOG doesn't need flushing during recovery */ : if (RecoveryInProgress()) : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4ae8: 48 8b 3d a9 46 6a 00 mov 0x6a46a9(%rip),%rdi # b79198 0.00 : 4d4aef: ba 5d 0b 00 00 mov $0xb5d,%edx 0.00 : 4d4af4: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4af9: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4b00: e8 3b b5 1b 00 callq 690040 0.00 : 4d4b05: e9 45 fe ff ff jmpq 4d494f 0.00 : 4d4b0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (openLogFile >= 0) : { : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : { : XLogFileClose(); 0.00 : 4d4b10: e8 db 98 ff ff callq 4ce3f0 0.00 : 4d4b15: 45 31 e4 xor %r12d,%r12d 0.00 : 4d4b18: eb b9 jmp 4d4ad3 0.00 : 4d4b1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : XLogwrtRqst WriteRqst; : : WriteRqst.Write = WriteRqstPtr; : WriteRqst.Flush = WriteRqstPtr; : XLogWrite(WriteRqst, flexible); 0.00 : 4d4b20: 41 0f be d5 movsbl %r13b,%edx 0.00 : 4d4b24: 48 89 df mov %rbx,%rdi 0.00 : 4d4b27: 48 89 de mov %rbx,%rsi : LogwrtResult = XLogCtl->LogwrtResult; : if (WriteRqstPtr > LogwrtResult.Flush) : { : XLogwrtRqst WriteRqst; : : WriteRqst.Write = WriteRqstPtr; 0.00 : 4d4b2a: 48 89 5d d0 mov %rbx,-0x30(%rbp) : WriteRqst.Flush = WriteRqstPtr; 0.00 : 4d4b2e: 48 89 5d d8 mov %rbx,-0x28(%rbp) : XLogWrite(WriteRqst, flexible); 0.00 : 4d4b32: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4d4b38: e8 23 f5 ff ff callq 4d4060 0.00 : 4d4b3d: e9 ba fe ff ff jmpq 4d49fc : { : if (openLogFile >= 0) : { : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : { : XLogFileClose(); 0.00 : 4d4b42: 45 31 ed xor %r13d,%r13d 0.00 : 4d4b45: e9 57 fe ff ff jmpq 4d49a1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/initsplan.c:2084 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006193c0 : : * the operator is a mergejoinable operator. The arguments can be : * anything --- as long as there are no volatile functions in them. : */ : static void : check_mergejoinable(RestrictInfo *restrictinfo) : { 0.00 : 6193c0: 55 push %rbp 0.00 : 6193c1: 48 89 e5 mov %rsp,%rbp 0.00 : 6193c4: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 6193c8: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 6193cc: 49 89 fc mov %rdi,%r12 0.00 : 6193cf: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 6193d3: 48 83 ec 20 sub $0x20,%rsp : Expr *clause = restrictinfo->clause; : Oid opno; : Node *leftarg; : : if (restrictinfo->pseudoconstant) 0.00 : 6193d7: 80 7f 13 00 cmpb $0x0,0x13(%rdi) : * anything --- as long as there are no volatile functions in them. : */ : static void : check_mergejoinable(RestrictInfo *restrictinfo) : { : Expr *clause = restrictinfo->clause; 0.00 : 6193db: 48 8b 5f 08 mov 0x8(%rdi),%rbx : Oid opno; : Node *leftarg; : : if (restrictinfo->pseudoconstant) 0.00 : 6193df: 75 0d jne 6193ee : return; : if (!is_opclause(clause)) 0.00 : 6193e1: 48 85 db test %rbx,%rbx 0.00 : 6193e4: 74 08 je 6193ee 0.00 : 6193e6: 81 3b 37 01 00 00 cmpl $0x137,(%rbx) 0.00 : 6193ec: 74 12 je 619400 : /* : * Note: op_mergejoinable is just a hint; if we fail to find the operator : * in any btree opfamilies, mergeopfamilies remains NIL and so the clause : * is not treated as mergejoinable. : */ : } 0.00 : 6193ee: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 6193f2: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 6193f6: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 6193fa: c9 leaveq 0.00 : 6193fb: c3 retq 0.00 : 6193fc: 0f 1f 40 00 nopl 0x0(%rax) : : if (restrictinfo->pseudoconstant) : return; : if (!is_opclause(clause)) : return; : if (list_length(((OpExpr *) clause)->args) != 2) 0.00 : 619400: 48 8b 43 20 mov 0x20(%rbx),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 619404: 48 85 c0 test %rax,%rax 0.00 : 619407: 74 e5 je 6193ee 0.00 : 619409: 83 78 04 02 cmpl $0x2,0x4(%rax) 0.00 : 61940d: 75 df jne 6193ee : return; : : opno = ((OpExpr *) clause)->opno; : leftarg = linitial(((OpExpr *) clause)->args); : : if (op_mergejoinable(opno, exprType(leftarg)) && 0.00 : 61940f: 48 8b 40 08 mov 0x8(%rax),%rax : if (!is_opclause(clause)) : return; : if (list_length(((OpExpr *) clause)->args) != 2) : return; : : opno = ((OpExpr *) clause)->opno; 0.00 : 619413: 44 8b 6b 04 mov 0x4(%rbx),%r13d : leftarg = linitial(((OpExpr *) clause)->args); : : if (op_mergejoinable(opno, exprType(leftarg)) && 0.00 : 619417: 48 8b 38 mov (%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/initsplan.c:2084 100.00 : 61941a: e8 b1 78 fc ff callq 5e0cd0 0.00 : 61941f: 44 89 ef mov %r13d,%edi 0.00 : 619422: 89 c6 mov %eax,%esi 0.00 : 619424: e8 e7 b0 15 00 callq 774510 0.00 : 619429: 84 c0 test %al,%al 0.00 : 61942b: 74 c1 je 6193ee 0.00 : 61942d: 48 89 df mov %rbx,%rdi 0.00 : 619430: e8 4b 37 01 00 callq 62cb80 0.00 : 619435: 84 c0 test %al,%al 0.00 : 619437: 75 b5 jne 6193ee : !contain_volatile_functions((Node *) clause)) : restrictinfo->mergeopfamilies = get_mergejoin_opfamilies(opno); 0.00 : 619439: 44 89 ef mov %r13d,%edi 0.00 : 61943c: e8 9f b7 15 00 callq 774be0 0.00 : 619441: 49 89 44 24 78 mov %rax,0x78(%r12) 0.00 : 619446: eb a6 jmp 6193ee Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/bgwriter.c:351 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063d690 : : * This is invoked from AuxiliaryProcessMain, which has already created the : * basic execution environment, but not enabled signals yet. : */ : void : BackgroundWriterMain(void) : { 0.00 : 63d690: 55 push %rbp 0.00 : 63d691: 48 89 e5 mov %rsp,%rbp 0.00 : 63d694: 41 55 push %r13 0.00 : 63d696: 41 54 push %r12 0.00 : 63d698: 53 push %rbx 0.00 : 63d699: 48 81 ec e8 00 00 00 sub $0xe8,%rsp : * can signal any child processes too. (bgwriter probably never has any : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) 0.00 : 63d6a0: e8 bb bd e2 ff callq 469460 0.00 : 63d6a5: 85 c0 test %eax,%eax 0.00 : 63d6a7: 0f 88 68 03 00 00 js 63da15 : * Properly accept or ignore signals the postmaster might send us. : * : * bgwriter doesn't participate in ProcSignal signalling, but a SIGUSR1 : * handler is still needed for latch wakeups. : */ : pqsignal(SIGHUP, BgSigHupHandler); /* set flag to read config file */ 0.00 : 63d6ad: be f0 da 63 00 mov $0x63daf0,%esi 0.00 : 63d6b2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 63d6b7: e8 44 f4 16 00 callq 7acb00 : pqsignal(SIGINT, SIG_IGN); 0.00 : 63d6bc: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d6c1: bf 02 00 00 00 mov $0x2,%edi 0.00 : 63d6c6: e8 35 f4 16 00 callq 7acb00 : pqsignal(SIGTERM, ReqShutdownHandler); /* shutdown */ 0.00 : 63d6cb: be a0 da 63 00 mov $0x63daa0,%esi 0.00 : 63d6d0: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 63d6d5: e8 26 f4 16 00 callq 7acb00 : pqsignal(SIGQUIT, bg_quickdie); /* hard crash time */ 0.00 : 63d6da: be 70 da 63 00 mov $0x63da70,%esi 0.00 : 63d6df: bf 03 00 00 00 mov $0x3,%edi 0.00 : 63d6e4: e8 17 f4 16 00 callq 7acb00 : pqsignal(SIGALRM, SIG_IGN); 0.00 : 63d6e9: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d6ee: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 63d6f3: e8 08 f4 16 00 callq 7acb00 : pqsignal(SIGPIPE, SIG_IGN); 0.00 : 63d6f8: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d6fd: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 63d702: e8 f9 f3 16 00 callq 7acb00 : pqsignal(SIGUSR1, bgwriter_sigusr1_handler); 0.00 : 63d707: be 40 da 63 00 mov $0x63da40,%esi 0.00 : 63d70c: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 63d711: e8 ea f3 16 00 callq 7acb00 : pqsignal(SIGUSR2, SIG_IGN); 0.00 : 63d716: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d71b: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 63d720: e8 db f3 16 00 callq 7acb00 : : /* : * Reset some signals that are accepted by postmaster but not here : */ : pqsignal(SIGCHLD, SIG_DFL); 0.00 : 63d725: 31 f6 xor %esi,%esi 0.00 : 63d727: bf 11 00 00 00 mov $0x11,%edi 0.00 : 63d72c: e8 cf f3 16 00 callq 7acb00 : pqsignal(SIGTTIN, SIG_DFL); 0.00 : 63d731: 31 f6 xor %esi,%esi 0.00 : 63d733: bf 15 00 00 00 mov $0x15,%edi 0.00 : 63d738: e8 c3 f3 16 00 callq 7acb00 : pqsignal(SIGTTOU, SIG_DFL); 0.00 : 63d73d: 31 f6 xor %esi,%esi 0.00 : 63d73f: bf 16 00 00 00 mov $0x16,%edi 0.00 : 63d744: e8 b7 f3 16 00 callq 7acb00 : pqsignal(SIGCONT, SIG_DFL); 0.00 : 63d749: 31 f6 xor %esi,%esi 0.00 : 63d74b: bf 12 00 00 00 mov $0x12,%edi 0.00 : 63d750: e8 ab f3 16 00 callq 7acb00 : pqsignal(SIGWINCH, SIG_DFL); 0.00 : 63d755: 31 f6 xor %esi,%esi 0.00 : 63d757: bf 1c 00 00 00 mov $0x1c,%edi 0.00 : 63d75c: e8 9f f3 16 00 callq 7acb00 : : /* We allow SIGQUIT (quickdie) at all times */ : sigdelset(&BlockSig, SIGQUIT); 0.00 : 63d761: be 03 00 00 00 mov $0x3,%esi 0.00 : 63d766: bf c0 f8 bb 00 mov $0xbbf8c0,%edi 0.00 : 63d76b: e8 70 c8 e2 ff callq 469fe0 : : /* : * Create a resource owner to keep track of our resources (currently only : * buffer pins). : */ : CurrentResourceOwner = ResourceOwnerCreate(NULL, "Background Writer"); 0.00 : 63d770: 31 ff xor %edi,%edi 0.00 : 63d772: be 47 e8 89 00 mov $0x89e847,%esi 0.00 : 63d777: e8 14 de 15 00 callq 79b590 0.00 : 63d77c: 48 89 05 3d d1 57 00 mov %rax,0x57d13d(%rip) # bba8c0 : : /* : * We just started, assume there has been either a shutdown or : * end-of-recovery snapshot. : */ : last_snapshot_ts = GetCurrentTimestamp(); 0.00 : 63d783: e8 e8 8b 10 00 callq 746370 : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : bgwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 63d788: 48 8b 3d d9 d0 57 00 mov 0x57d0d9(%rip),%rdi # bba868 0.00 : 63d78f: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 63d795: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 63d79a: 31 d2 xor %edx,%edx 0.00 : 63d79c: be 47 e8 89 00 mov $0x89e847,%esi : : /* : * We just started, assume there has been either a shutdown or : * end-of-recovery snapshot. : */ : last_snapshot_ts = GetCurrentTimestamp(); 0.00 : 63d7a1: 48 89 05 60 e3 53 00 mov %rax,0x53e360(%rip) # b7bb08 : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : bgwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 63d7a8: e8 e3 a7 15 00 callq 797f90 : /* : * If an exception is encountered, processing resumes here. : * : * See notes in postgres.c about the design of this coding. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) 0.00 : 63d7ad: 48 8d bd 10 ff ff ff lea -0xf0(%rbp),%rdi 0.00 : 63d7b4: be 01 00 00 00 mov $0x1,%esi : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : bgwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 63d7b9: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 63d7c0: 48 89 05 99 d0 57 00 mov %rax,0x57d099(%rip) # bba860 : /* : * If an exception is encountered, processing resumes here. : * : * See notes in postgres.c about the design of this coding. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) 0.00 : 63d7c7: e8 84 c8 e2 ff callq 46a050 <__sigsetjmp@plt> 0.00 : 63d7cc: 85 c0 test %eax,%eax 0.00 : 63d7ce: 0f 85 a4 01 00 00 jne 63d978 : */ : smgrcloseall(); : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; 0.00 : 63d7d4: 48 8d 85 10 ff ff ff lea -0xf0(%rbp),%rax : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 63d7db: 31 d2 xor %edx,%edx 0.00 : 63d7dd: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 63d7e2: bf 02 00 00 00 mov $0x2,%edi 0.00 : 63d7e7: 45 31 ed xor %r13d,%r13d : */ : smgrcloseall(); : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; 0.00 : 63d7ea: 48 89 05 57 be 57 00 mov %rax,0x57be57(%rip) # bb9648 : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 63d7f1: e8 ca c2 e2 ff callq 469ac0 0.00 : 63d7f6: eb 75 jmp 63d86d 0.00 : 63d7f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 63d7ff: 00 : if (got_SIGHUP) : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); : } : if (shutdown_requested) 0.00 : 63d800: 8b 05 f6 e2 53 00 mov 0x53e2f6(%rip),%eax # b7bafc 0.00 : 63d806: 85 c0 test %eax,%eax 0.00 : 63d808: 0f 85 9f 00 00 00 jne 63d8ad : } : : /* : * Do one cycle of dirty-buffer writing. : */ : can_hibernate = BgBufferSync(); 0.00 : 63d80e: e8 dd 7e 03 00 callq 6756f0 0.00 : 63d813: 41 89 c4 mov %eax,%r12d : : /* : * Send off activity statistics to the stats collector : */ : pgstat_send_bgwriter(); 0.00 : 63d816: e8 45 25 00 00 callq 63fd60 : : if (FirstCallSinceLastCheckpoint()) 0.00 : 63d81b: e8 20 03 00 00 callq 63db40 0.00 : 63d820: 84 c0 test %al,%al 0.00 : 63d822: 0f 85 98 00 00 00 jne 63d8c0 : * We do this logging in the bgwriter as its the only process thats : * run regularly and returns to its mainloop all the time. E.g. : * Checkpointer, when active, is barely ever in its mainloop and thus : * makes it hard to log regularly. : */ : if (XLogStandbyInfoActive() && !RecoveryInProgress()) 0.00 : 63d828: 83 3d 2d b9 53 00 01 cmpl $0x1,0x53b92d(%rip) # b7915c 0.00 : 63d82f: 7e 0d jle 63d83e 0.00 : 63d831: e8 8a fc e8 ff callq 4cd4c0 0.00 : 63d836: 84 c0 test %al,%al 0.00 : 63d838: 0f 84 f2 00 00 00 je 63d930 : * correctness that that be exact, the feedback loop might misbehave : * if we stray too far from that. Hence, avoid loading this process : * down with latch events that are likely to happen frequently during : * normal operation. : */ : rc = WaitLatch(&MyProc->procLatch, 0.00 : 63d83e: 48 8b 3d 03 01 54 00 mov 0x540103(%rip),%rdi # b7d948 0.00 : 63d845: 48 63 15 a4 ad 52 00 movslq 0x52ada4(%rip),%rdx # b685f0 0.00 : 63d84c: be 19 00 00 00 mov $0x19,%esi 0.00 : 63d851: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d855: e8 e6 bc ff ff callq 639540 : * critical that we not hibernate anyway, we try to reduce the odds of : * that by only hibernating when BgBufferSync says nothing's happening : * for two consecutive cycles. Also, we mitigate any possible : * consequences of a missed wakeup by not hibernating forever. : */ : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) 0.00 : 63d85a: 83 f8 08 cmp $0x8,%eax : * correctness that that be exact, the feedback loop might misbehave : * if we stray too far from that. Hence, avoid loading this process : * down with latch events that are likely to happen frequently during : * normal operation. : */ : rc = WaitLatch(&MyProc->procLatch, /home/Computational/mark/src/postgres-andres/src/backend/postmaster/bgwriter.c:351 100.00 : 63d85d: 89 c3 mov %eax,%ebx : * critical that we not hibernate anyway, we try to reduce the odds of : * that by only hibernating when BgBufferSync says nothing's happening : * for two consecutive cycles. Also, we mitigate any possible : * consequences of a missed wakeup by not hibernating forever. : */ : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) 0.00 : 63d85f: 74 6f je 63d8d0 : : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (rc & WL_POSTMASTER_DEATH) 0.00 : 63d861: 83 e3 10 and $0x10,%ebx 0.00 : 63d864: 0f 85 b8 00 00 00 jne 63d922 : PG_exception_stack = &local_sigjmp_buf; : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 63d86a: 45 89 e5 mov %r12d,%r13d : { : bool can_hibernate; : int rc; : : /* Clear any already-pending wakeups */ : ResetLatch(&MyProc->procLatch); 0.00 : 63d86d: 48 8b 3d d4 00 54 00 mov 0x5400d4(%rip),%rdi # b7d948 0.00 : 63d874: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d878: e8 c3 b7 ff ff callq 639040 : : if (got_SIGHUP) 0.00 : 63d87d: 8b 05 75 e2 53 00 mov 0x53e275(%rip),%eax # b7baf8 0.00 : 63d883: 85 c0 test %eax,%eax 0.00 : 63d885: 0f 84 75 ff ff ff je 63d800 : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); 0.00 : 63d88b: bf 02 00 00 00 mov $0x2,%edi : /* Clear any already-pending wakeups */ : ResetLatch(&MyProc->procLatch); : : if (got_SIGHUP) : { : got_SIGHUP = false; 0.00 : 63d890: c7 05 5e e2 53 00 00 movl $0x0,0x53e25e(%rip) # b7baf8 0.00 : 63d897: 00 00 00 : ProcessConfigFile(PGC_SIGHUP); 0.00 : 63d89a: e8 61 6f 15 00 callq 794800 : } : if (shutdown_requested) 0.00 : 63d89f: 8b 05 57 e2 53 00 mov 0x53e257(%rip),%eax # b7bafc 0.00 : 63d8a5: 85 c0 test %eax,%eax 0.00 : 63d8a7: 0f 84 61 ff ff ff je 63d80e : * From here on, elog(ERROR) should end with exit(1), not send : * control back to the sigsetjmp block above : */ : ExitOnAnyError = true; : /* Normal exit from the bgwriter is here */ : proc_exit(0); /* done */ 0.00 : 63d8ad: 31 ff xor %edi,%edi : { : /* : * From here on, elog(ERROR) should end with exit(1), not send : * control back to the sigsetjmp block above : */ : ExitOnAnyError = true; 0.00 : 63d8af: c6 05 0a c8 57 00 01 movb $0x1,0x57c80a(%rip) # bba0c0 : /* Normal exit from the bgwriter is here */ : proc_exit(0); /* done */ 0.00 : 63d8b6: e8 65 14 04 00 callq 67ed20 0.00 : 63d8bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * After any checkpoint, close all smgr files. This is so we : * won't hang onto smgr references to deleted files indefinitely. : */ : smgrcloseall(); 0.00 : 63d8c0: e8 1b c1 05 00 callq 6999e0 0.00 : 63d8c5: e9 5e ff ff ff jmpq 63d828 0.00 : 63d8ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * critical that we not hibernate anyway, we try to reduce the odds of : * that by only hibernating when BgBufferSync says nothing's happening : * for two consecutive cycles. Also, we mitigate any possible : * consequences of a missed wakeup by not hibernating forever. : */ : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) 0.00 : 63d8d0: 45 84 e4 test %r12b,%r12b 0.00 : 63d8d3: 74 8c je 63d861 0.00 : 63d8d5: 45 84 ed test %r13b,%r13b 0.00 : 63d8d8: 74 90 je 63d86a : { : /* Ask for notification at next buffer allocation */ : StrategyNotifyBgWriter(&MyProc->procLatch); 0.00 : 63d8da: 48 8b 3d 67 00 54 00 mov 0x540067(%rip),%rdi # b7d948 0.00 : 63d8e1: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d8e5: e8 e6 9a 03 00 callq 6773d0 : /* Sleep ... */ : rc = WaitLatch(&MyProc->procLatch, 0.00 : 63d8ea: 8b 15 00 ad 52 00 mov 0x52ad00(%rip),%edx # b685f0 0.00 : 63d8f0: b8 32 00 00 00 mov $0x32,%eax 0.00 : 63d8f5: 48 8b 3d 4c 00 54 00 mov 0x54004c(%rip),%rdi # b7d948 0.00 : 63d8fc: be 19 00 00 00 mov $0x19,%esi 0.00 : 63d901: 0f af d0 imul %eax,%edx 0.00 : 63d904: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d908: 48 63 d2 movslq %edx,%rdx 0.00 : 63d90b: e8 30 bc ff ff callq 639540 : WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH, : BgWriterDelay * HIBERNATE_FACTOR); : /* Reset the notification request in case we timed out */ : StrategyNotifyBgWriter(NULL); 0.00 : 63d910: 31 ff xor %edi,%edi : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) : { : /* Ask for notification at next buffer allocation */ : StrategyNotifyBgWriter(&MyProc->procLatch); : /* Sleep ... */ : rc = WaitLatch(&MyProc->procLatch, 0.00 : 63d912: 89 c3 mov %eax,%ebx : WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH, : BgWriterDelay * HIBERNATE_FACTOR); : /* Reset the notification request in case we timed out */ : StrategyNotifyBgWriter(NULL); 0.00 : 63d914: e8 b7 9a 03 00 callq 6773d0 : : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (rc & WL_POSTMASTER_DEATH) 0.00 : 63d919: 83 e3 10 and $0x10,%ebx 0.00 : 63d91c: 0f 84 48 ff ff ff je 63d86a : exit(1); 0.00 : 63d922: bf 01 00 00 00 mov $0x1,%edi 0.00 : 63d927: e8 64 bc e2 ff callq 469590 0.00 : 63d92c: 0f 1f 40 00 nopl 0x0(%rax) : * makes it hard to log regularly. : */ : if (XLogStandbyInfoActive() && !RecoveryInProgress()) : { : TimestampTz timeout = 0; : TimestampTz now = GetCurrentTimestamp(); 0.00 : 63d930: e8 3b 8a 10 00 callq 746370 0.00 : 63d935: 48 89 c3 mov %rax,%rbx : : /* : * only log if enough time has passed and some xlog record has : * been inserted. : */ : if (now >= timeout && 0.00 : 63d938: 48 8b 05 c9 e1 53 00 mov 0x53e1c9(%rip),%rax # b7bb08 0.00 : 63d93f: 48 05 c0 e1 e4 00 add $0xe4e1c0,%rax 0.00 : 63d945: 48 39 c3 cmp %rax,%rbx 0.00 : 63d948: 0f 8c f0 fe ff ff jl 63d83e 0.00 : 63d94e: e8 6d f8 e8 ff callq 4cd1c0 0.00 : 63d953: 48 3b 05 a6 e1 53 00 cmp 0x53e1a6(%rip),%rax # b7bb00 0.00 : 63d95a: 0f 84 de fe ff ff je 63d83e : last_snapshot_lsn != GetXLogInsertRecPtr()) : { : last_snapshot_lsn = LogStandbySnapshot(); 0.00 : 63d960: e8 fb 7c 04 00 callq 685660 : last_snapshot_ts = now; 0.00 : 63d965: 48 89 1d 9c e1 53 00 mov %rbx,0x53e19c(%rip) # b7bb08 : * been inserted. : */ : if (now >= timeout && : last_snapshot_lsn != GetXLogInsertRecPtr()) : { : last_snapshot_lsn = LogStandbySnapshot(); 0.00 : 63d96c: 48 89 05 8d e1 53 00 mov %rax,0x53e18d(%rip) # b7bb00 0.00 : 63d973: e9 c6 fe ff ff jmpq 63d83e : { : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 63d978: 8b 05 1a c7 57 00 mov 0x57c71a(%rip),%eax # bba098 : * See notes in postgres.c about the design of this coding. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) : { : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; 0.00 : 63d97e: 48 c7 05 b7 bc 57 00 movq $0x0,0x57bcb7(%rip) # bb9640 0.00 : 63d985: 00 00 00 00 : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 63d989: 83 c0 01 add $0x1,%eax 0.00 : 63d98c: 89 05 06 c7 57 00 mov %eax,0x57c706(%rip) # bba098 : : /* Report the error to the server log */ : EmitErrorReport(); 0.00 : 63d992: e8 89 b2 13 00 callq 778c20 : /* : * These operations are really just a minimal subset of : * AbortTransaction(). We don't have very many resources to worry : * about in bgwriter, but we do have LWLocks, buffers, and temp files. : */ : LWLockReleaseAll(); 0.00 : 63d997: e8 e4 1c 05 00 callq 68f680 : AbortBufferIO(); 0.00 : 63d99c: e8 cf 68 03 00 callq 674270 : UnlockBuffers(); 0.00 : 63d9a1: e8 aa 67 03 00 callq 674150 : /* buffer pins are released here: */ : ResourceOwnerRelease(CurrentResourceOwner, 0.00 : 63d9a6: 48 8b 3d 13 cf 57 00 mov 0x57cf13(%rip),%rdi # bba8c0 0.00 : 63d9ad: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 63d9b2: 31 d2 xor %edx,%edx 0.00 : 63d9b4: 31 f6 xor %esi,%esi 0.00 : 63d9b6: e8 e5 da 15 00 callq 79b4a0 : RESOURCE_RELEASE_BEFORE_LOCKS, : false, true); : /* we needn't bother with the other ResourceOwnerRelease phases */ : AtEOXact_Buffers(false); 0.00 : 63d9bb: 31 ff xor %edi,%edi 0.00 : 63d9bd: e8 ce 82 03 00 callq 675c90 : AtEOXact_SMgr(); 0.00 : 63d9c2: e8 a9 bf 05 00 callq 699970 : AtEOXact_Files(); 0.00 : 63d9c7: e8 54 bd 03 00 callq 679720 : AtEOXact_HashTables(false); 0.00 : 63d9cc: 31 ff xor %edi,%edi 0.00 : 63d9ce: e8 1d 5f 14 00 callq 7838f0 0.00 : 63d9d3: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 63d9da: 48 89 05 7f ce 57 00 mov %rax,0x57ce7f(%rip) # bba860 : /* : * Now return to normal top-level context and clear ErrorContext for : * next time. : */ : MemoryContextSwitchTo(bgwriter_context); : FlushErrorState(); 0.00 : 63d9e1: e8 4a 9c 13 00 callq 777630 : : /* Flush any leaked data in the top-level context */ : MemoryContextResetAndDeleteChildren(bgwriter_context); 0.00 : 63d9e6: 48 8b bd 08 ff ff ff mov -0xf8(%rbp),%rdi 0.00 : 63d9ed: e8 1e b2 15 00 callq 798c10 : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 63d9f2: 8b 05 a0 c6 57 00 mov 0x57c6a0(%rip),%eax # bba098 : /* : * Sleep at least 1 second after any error. A write error is likely : * to be repeated, and we don't want to be filling the error logs as : * fast as we can. : */ : pg_usleep(1000000L); 0.00 : 63d9f8: bf 40 42 0f 00 mov $0xf4240,%edi : : /* Flush any leaked data in the top-level context */ : MemoryContextResetAndDeleteChildren(bgwriter_context); : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 63d9fd: 83 e8 01 sub $0x1,%eax 0.00 : 63da00: 89 05 92 c6 57 00 mov %eax,0x57c692(%rip) # bba098 : /* : * Sleep at least 1 second after any error. A write error is likely : * to be repeated, and we don't want to be filling the error logs as : * fast as we can. : */ : pg_usleep(1000000L); 0.00 : 63da06: e8 45 ed 16 00 callq 7ac750 : /* : * Close all open files after any error. This is helpful on Windows, : * where holding deleted files open causes various strange errors. : * It's not clear we need it elsewhere, but shouldn't hurt. : */ : smgrcloseall(); 0.00 : 63da0b: e8 d0 bf 05 00 callq 6999e0 0.00 : 63da10: e9 bf fd ff ff jmpq 63d7d4 : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) : elog(FATAL, "setsid() failed: %m"); 0.00 : 63da15: ba 60 e8 89 00 mov $0x89e860,%edx 0.00 : 63da1a: be 7c 00 00 00 mov $0x7c,%esi 0.00 : 63da1f: bf 3c e8 89 00 mov $0x89e83c,%edi 0.00 : 63da24: e8 f7 d9 13 00 callq 77b420 0.00 : 63da29: be 83 fe 7b 00 mov $0x7bfe83,%esi 0.00 : 63da2e: bf 15 00 00 00 mov $0x15,%edi 0.00 : 63da33: 31 c0 xor %eax,%eax 0.00 : 63da35: e8 f6 d7 13 00 callq 77b230 0.00 : 63da3a: e8 91 ba e2 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:3065 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063fd10 : : * Send out one statistics message to the collector : * ---------- : */ : static void : pgstat_send(void *msg, int len) : { 0.00 : 63fd10: 55 push %rbp : int rc; : : if (pgStatSock == PGINVALID_SOCKET) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:3065 100.00 : 63fd11: 83 3d f8 88 52 00 ff cmpl $0xffffffff,0x5288f8(%rip) # b68610 : * Send out one statistics message to the collector : * ---------- : */ : static void : pgstat_send(void *msg, int len) : { 0.00 : 63fd18: 48 89 e5 mov %rsp,%rbp 0.00 : 63fd1b: 41 54 push %r12 0.00 : 63fd1d: 49 89 fc mov %rdi,%r12 0.00 : 63fd20: 53 push %rbx : int rc; : : if (pgStatSock == PGINVALID_SOCKET) 0.00 : 63fd21: 74 2f je 63fd52 : return; : : ((PgStat_MsgHdr *) msg)->m_size = len; 0.00 : 63fd23: 89 77 04 mov %esi,0x4(%rdi) 0.00 : 63fd26: 48 63 de movslq %esi,%rbx 0.00 : 63fd29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* We'll retry after EINTR, but ignore all other failures */ : do : { : rc = send(pgStatSock, msg, len, 0); 0.00 : 63fd30: 8b 3d da 88 52 00 mov 0x5288da(%rip),%edi # b68610 0.00 : 63fd36: 31 c9 xor %ecx,%ecx 0.00 : 63fd38: 48 89 da mov %rbx,%rdx 0.00 : 63fd3b: 4c 89 e6 mov %r12,%rsi 0.00 : 63fd3e: e8 0d a0 e2 ff callq 469d50 : } while (rc < 0 && errno == EINTR); 0.00 : 63fd43: 85 c0 test %eax,%eax 0.00 : 63fd45: 79 0b jns 63fd52 0.00 : 63fd47: e8 74 9f e2 ff callq 469cc0 <__errno_location@plt> 0.00 : 63fd4c: 83 38 04 cmpl $0x4,(%rax) 0.00 : 63fd4f: 90 nop 0.00 : 63fd50: 74 de je 63fd30 : #ifdef USE_ASSERT_CHECKING : /* In debug builds, log send failures ... */ : if (rc < 0) : elog(LOG, "could not send to statistics collector: %m"); : #endif : } 0.00 : 63fd52: 5b pop %rbx 0.00 : 63fd53: 41 5c pop %r12 0.00 : 63fd55: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:3122 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063fd60 : : * Send bgwriter statistics to the collector : * ---------- : */ : void : pgstat_send_bgwriter(void) : { 0.00 : 63fd60: 55 push %rbp : /* : * This function can be called even if nothing at all has happened. In : * this case, avoid sending a completely empty message to the stats : * collector. : */ : if (memcmp(&BgWriterStats, &all_zeroes, sizeof(PgStat_MsgBgWriter)) == 0) 0.00 : 63fd61: bf 00 bc b7 00 mov $0xb7bc00,%edi 0.00 : 63fd66: b9 58 00 00 00 mov $0x58,%ecx 0.00 : 63fd6b: be 40 fa bb 00 mov $0xbbfa40,%esi /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:3122 100.00 : 63fd70: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) : * Send bgwriter statistics to the collector : * ---------- : */ : void : pgstat_send_bgwriter(void) : { 0.00 : 63fd72: 48 89 e5 mov %rsp,%rbp : /* : * This function can be called even if nothing at all has happened. In : * this case, avoid sending a completely empty message to the stats : * collector. : */ : if (memcmp(&BgWriterStats, &all_zeroes, sizeof(PgStat_MsgBgWriter)) == 0) 0.00 : 63fd75: 75 09 jne 63fd80 : : /* : * Clear out the statistics buffer, so it can be re-used. : */ : MemSet(&BgWriterStats, 0, sizeof(BgWriterStats)); : } 0.00 : 63fd77: c9 leaveq 0.00 : 63fd78: c3 retq 0.00 : 63fd79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * Prepare and send the message : */ : pgstat_setheader(&BgWriterStats.m_hdr, PGSTAT_MTYPE_BGWRITER); : pgstat_send(&BgWriterStats, sizeof(BgWriterStats)); 0.00 : 63fd80: be 58 00 00 00 mov $0x58,%esi 0.00 : 63fd85: bf 40 fa bb 00 mov $0xbbfa40,%edi : * ---------- : */ : static void : pgstat_setheader(PgStat_MsgHdr *hdr, StatMsgType mtype) : { : hdr->m_type = mtype; 0.00 : 63fd8a: c7 05 ac fc 57 00 0c movl $0xc,0x57fcac(%rip) # bbfa40 0.00 : 63fd91: 00 00 00 : : /* : * Prepare and send the message : */ : pgstat_setheader(&BgWriterStats.m_hdr, PGSTAT_MTYPE_BGWRITER); : pgstat_send(&BgWriterStats, sizeof(BgWriterStats)); 0.00 : 63fd94: e8 77 ff ff ff callq 63fd10 : : /* : * Clear out the statistics buffer, so it can be re-used. : */ : MemSet(&BgWriterStats, 0, sizeof(BgWriterStats)); 0.00 : 63fd99: b8 40 fa bb 00 mov $0xbbfa40,%eax 0.00 : 63fd9e: ba 98 fa bb 00 mov $0xbbfa98,%edx 0.00 : 63fda3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 63fda8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 63fdaf: 48 83 c0 08 add $0x8,%rax 0.00 : 63fdb3: 48 39 c2 cmp %rax,%rdx 0.00 : 63fdb6: 75 f0 jne 63fda8 : } 0.00 : 63fdb8: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1318 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1365 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f800 : : * Note: this function ignores shared lock holders; if the lock is held : * in shared mode, returns 'true'. : */ : bool : LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval) : { 0.00 : 68f800: 55 push %rbp : * : * XXX: the caller uses a spinlock before this, so we don't need a memory : * barrier here as far as the current usage is concerned. But that might : * not be safe in general. : */ : if (pg_atomic_read_u32(&lock->lockcount) == 0) 0.00 : 68f801: 48 8d 47 04 lea 0x4(%rdi),%rax : * Note: this function ignores shared lock holders; if the lock is held : * in shared mode, returns 'true'. : */ : bool : LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval) : { 0.00 : 68f805: 48 89 e5 mov %rsp,%rbp 0.00 : 68f808: 41 57 push %r15 0.00 : 68f80a: 41 56 push %r14 0.00 : 68f80c: 49 89 fe mov %rdi,%r14 0.00 : 68f80f: 41 55 push %r13 0.00 : 68f811: 41 54 push %r12 0.00 : 68f813: 53 push %rbx 0.00 : 68f814: 48 83 ec 28 sub $0x28,%rsp 0.00 : 68f818: 48 89 55 c0 mov %rdx,-0x40(%rbp) 0.00 : 68f81c: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 68f820: 48 89 4d b8 mov %rcx,-0x48(%rbp) : * : * XXX: the caller uses a spinlock before this, so we don't need a memory : * barrier here as far as the current usage is concerned. But that might : * not be safe in general. : */ : if (pg_atomic_read_u32(&lock->lockcount) == 0) 0.00 : 68f824: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 68f828: ba 01 00 00 00 mov $0x1,%edx : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); 0.00 : 68f82d: 8b 47 04 mov 0x4(%rdi),%eax : * in shared mode, returns 'true'. : */ : bool : LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval) : { : PGPROC *proc = MyProc; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1318 50.00 : 68f830: 4c 8b 2d 11 e1 4e 00 mov 0x4ee111(%rip),%r13 # b7d948 : * : * XXX: the caller uses a spinlock before this, so we don't need a memory : * barrier here as far as the current usage is concerned. But that might : * not be safe in general. : */ : if (pg_atomic_read_u32(&lock->lockcount) == 0) 0.00 : 68f837: 85 c0 test %eax,%eax 0.00 : 68f839: 0f 84 d1 00 00 00 je 68f910 : /* : * Lock out cancel/die interrupts while we sleep on the lock. There is no : * cleanup mechanism to remove us from the wait queue if we got : * interrupted. : */ : HOLD_INTERRUPTS(); 0.00 : 68f83f: 8b 05 53 a8 52 00 mov 0x52a853(%rip),%eax # bba098 0.00 : 68f845: 83 c0 01 add $0x1,%eax 0.00 : 68f848: 89 05 4a a8 52 00 mov %eax,0x52a84a(%rip) # bba098 0.00 : 68f84e: 8b 47 04 mov 0x4(%rdi),%eax : bool mustwait; : uint64 value; : : mustwait = pg_atomic_read_u32(&lock->lockcount) != 0; : : if (mustwait) 0.00 : 68f851: 85 c0 test %eax,%eax 0.00 : 68f853: 0f 84 a6 00 00 00 je 68f8ff : LW_EXCLUSIVE); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68f859: 4d 8d 65 10 lea 0x10(%r13),%r12 : if (!proc->lwWaiting) : break; : extraWaits++; : } : : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); 0.00 : 68f85d: 4c 8d 7f 08 lea 0x8(%rdi),%r15 0.00 : 68f861: 31 db xor %ebx,%ebx 0.00 : 68f863: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68f868: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f86d: f0 41 86 06 lock xchg %al,(%r14) : * bit reads/stores. : */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1365 50.00 : 68f871: 84 c0 test %al,%al 0.00 : 68f873: 0f 85 af 00 00 00 jne 68f928 : : /* : * XXX: We can significantly optimize this on platforms with 64bit : * atomics. : */ : value = *valptr; 0.00 : 68f879: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 68f87d: 48 8b 02 mov (%rdx),%rax : if (value != oldval) 0.00 : 68f880: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 68f884: ba 01 00 00 00 mov $0x1,%edx 0.00 : 68f889: 74 09 je 68f894 : { : result = false; : mustwait = false; : *newval = value; 0.00 : 68f88b: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 68f88f: 48 89 02 mov %rax,(%rdx) 0.00 : 68f892: 31 d2 xor %edx,%edx : SpinLockRelease(&lock->mutex); : } : else : mustwait = false; : : if (!mustwait) 0.00 : 68f894: 84 d2 test %dl,%dl : mustwait = false; : *newval = value; : } : else : mustwait = true; : SpinLockRelease(&lock->mutex); 0.00 : 68f896: 41 c6 06 00 movb $0x0,(%r14) : } : else : mustwait = false; : : if (!mustwait) 0.00 : 68f89a: 74 5f je 68f8fb : * Add myself to wait queue. Note that this is racy, somebody else : * could wakeup before we're finished queuing. : * NB: We're using nearly the same twice-in-a-row lock acquisition : * protocol as LWLockAcquire(). Check its comments for details. : */ : LWLockQueueSelf(lock, LW_WAIT_UNTIL_FREE); 0.00 : 68f89c: be 02 00 00 00 mov $0x2,%esi 0.00 : 68f8a1: 4c 89 f7 mov %r14,%rdi 0.00 : 68f8a4: e8 d7 f7 ff ff callq 68f080 0.00 : 68f8a9: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 68f8ad: 8b 02 mov (%rdx),%eax : * lock's state. : */ : mustwait = pg_atomic_read_u32(&lock->lockcount) != 0; : : /* ok, grabbed the lock the second time round, need to undo queueing */ : if (!mustwait) 0.00 : 68f8af: 85 c0 test %eax,%eax 0.00 : 68f8b1: 75 10 jne 68f8c3 0.00 : 68f8b3: e9 87 00 00 00 jmpq 68f93f 0.00 : 68f8b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68f8bf: 00 : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68f8c0: 83 c3 01 add $0x1,%ebx : LW_EXCLUSIVE); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68f8c3: 31 f6 xor %esi,%esi 0.00 : 68f8c5: 4c 89 e7 mov %r12,%rdi 0.00 : 68f8c8: e8 53 88 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68f8cd: 41 80 7d 41 00 cmpb $0x0,0x41(%r13) 0.00 : 68f8d2: 75 ec jne 68f8c0 : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68f8d4: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68f8d9: f0 41 0f c1 07 lock xadd %eax,(%r15) 0.00 : 68f8de: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 68f8e2: 8b 02 mov (%rdx),%eax : bool mustwait; : uint64 value; : : mustwait = pg_atomic_read_u32(&lock->lockcount) != 0; : : if (mustwait) 0.00 : 68f8e4: 85 c0 test %eax,%eax 0.00 : 68f8e6: 75 80 jne 68f868 0.00 : 68f8e8: eb 11 jmp 68f8fb 0.00 : 68f8ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) : PGSemaphoreUnlock(&proc->sem); 0.00 : 68f8f0: 4c 89 e7 mov %r12,%rdi 0.00 : 68f8f3: 83 eb 01 sub $0x1,%ebx 0.00 : 68f8f6: e8 95 87 fa ff callq 638090 : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), LW_EXCLUSIVE); : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68f8fb: 85 db test %ebx,%ebx 0.00 : 68f8fd: 7f f1 jg 68f8f0 : PGSemaphoreUnlock(&proc->sem); : : /* : * Now okay to allow cancel/die interrupts. : */ : RESUME_INTERRUPTS(); 0.00 : 68f8ff: 8b 05 93 a7 52 00 mov 0x52a793(%rip),%eax # bba098 0.00 : 68f905: 31 d2 xor %edx,%edx 0.00 : 68f907: 83 e8 01 sub $0x1,%eax 0.00 : 68f90a: 89 05 88 a7 52 00 mov %eax,0x52a788(%rip) # bba098 : : return result; : } 0.00 : 68f910: 48 83 c4 28 add $0x28,%rsp 0.00 : 68f914: 89 d0 mov %edx,%eax 0.00 : 68f916: 5b pop %rbx 0.00 : 68f917: 41 5c pop %r12 0.00 : 68f919: 41 5d pop %r13 0.00 : 68f91b: 41 5e pop %r14 0.00 : 68f91d: 41 5f pop %r15 0.00 : 68f91f: c9 leaveq 0.00 : 68f920: c3 retq 0.00 : 68f921: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * bit reads/stores. : */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f928: ba 55 05 00 00 mov $0x555,%edx 0.00 : 68f92d: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f932: 4c 89 f7 mov %r14,%rdi 0.00 : 68f935: e8 06 07 00 00 callq 690040 0.00 : 68f93a: e9 3a ff ff ff jmpq 68f879 : #ifdef LWLOCK_STATS : lwstats->dequeue_self_count++; : #endif : LOG_LWDEBUG("LWLockWaitForVar", lock, "free, undoing queue"); : : if (!LWLockDequeueSelf(lock)) 0.00 : 68f93f: 4c 89 f7 mov %r14,%rdi 0.00 : 68f942: e8 89 f8 ff ff callq 68f1d0 0.00 : 68f947: 84 c0 test %al,%al 0.00 : 68f949: 74 08 je 68f953 0.00 : 68f94b: eb ae jmp 68f8fb 0.00 : 68f94d: 0f 1f 00 nopl (%rax) : for (;;) : { : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68f950: 83 c3 01 add $0x1,%ebx : * for the correct wakeup, otherwise our ->lwWaiting would get : * reset at some inconvenient point later. : */ : for (;;) : { : PGSemaphoreLock(&proc->sem, false); 0.00 : 68f953: 31 f6 xor %esi,%esi 0.00 : 68f955: 4c 89 e7 mov %r12,%rdi 0.00 : 68f958: e8 c3 87 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68f95d: 41 80 7d 41 00 cmpb $0x0,0x41(%r13) 0.00 : 68f962: 75 ec jne 68f950 0.00 : 68f964: eb 95 jmp 68f8fb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694e30 : : * statically-allocated memory, so the caller must immediately write the : * returned page and not refer to it again. : */ : char * : PageSetChecksumCopy(Page page, BlockNumber blkno) : { 0.00 : 694e30: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 50.00 : 694e31: 48 89 e5 mov %rsp,%rbp 0.00 : 694e34: 48 89 5d f0 mov %rbx,-0x10(%rbp) 50.00 : 694e38: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 694e3c: 48 83 ec 10 sub $0x10,%rsp : static char *pageCopy = NULL; : : /* If we don't need a checksum, just return the passed-in data */ : if (PageIsNew(page) || !DataChecksumsEnabled()) 0.00 : 694e40: 66 83 7f 0e 00 cmpw $0x0,0xe(%rdi) : * statically-allocated memory, so the caller must immediately write the : * returned page and not refer to it again. : */ : char * : PageSetChecksumCopy(Page page, BlockNumber blkno) : { 0.00 : 694e45: 48 89 fb mov %rdi,%rbx 0.00 : 694e48: 41 89 f4 mov %esi,%r12d : static char *pageCopy = NULL; : : /* If we don't need a checksum, just return the passed-in data */ : if (PageIsNew(page) || !DataChecksumsEnabled()) 0.00 : 694e4b: 75 13 jne 694e60 : pageCopy = MemoryContextAlloc(TopMemoryContext, BLCKSZ); : : memcpy(pageCopy, (char *) page, BLCKSZ); : ((PageHeader) pageCopy)->pd_checksum = pg_checksum_page(pageCopy, blkno); : return pageCopy; : } 0.00 : 694e4d: 48 89 d8 mov %rbx,%rax 0.00 : 694e50: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 694e55: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 694e59: c9 leaveq 0.00 : 694e5a: c3 retq 0.00 : 694e5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : PageSetChecksumCopy(Page page, BlockNumber blkno) : { : static char *pageCopy = NULL; : : /* If we don't need a checksum, just return the passed-in data */ : if (PageIsNew(page) || !DataChecksumsEnabled()) 0.00 : 694e60: e8 5b 81 e3 ff callq 4ccfc0 0.00 : 694e65: 84 c0 test %al,%al 0.00 : 694e67: 74 e4 je 694e4d : * We allocate the copy space once and use it over on each subsequent : * call. The point of palloc'ing here, rather than having a static char : * array, is first to ensure adequate alignment for the checksumming code : * and second to avoid wasting space in processes that never call this. : */ : if (pageCopy == NULL) 0.00 : 694e69: 48 83 3d 1f 99 4e 00 cmpq $0x0,0x4e991f(%rip) # b7e790 0.00 : 694e70: 00 0.00 : 694e71: 74 35 je 694ea8 : pageCopy = MemoryContextAlloc(TopMemoryContext, BLCKSZ); : : memcpy(pageCopy, (char *) page, BLCKSZ); 0.00 : 694e73: 48 8b 3d 16 99 4e 00 mov 0x4e9916(%rip),%rdi # b7e790 0.00 : 694e7a: 48 89 de mov %rbx,%rsi 0.00 : 694e7d: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 694e82: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : ((PageHeader) pageCopy)->pd_checksum = pg_checksum_page(pageCopy, blkno); 0.00 : 694e85: 44 89 e6 mov %r12d,%esi 0.00 : 694e88: 48 8b 1d 01 99 4e 00 mov 0x4e9901(%rip),%rbx # b7e790 0.00 : 694e8f: 48 89 df mov %rbx,%rdi 0.00 : 694e92: e8 d9 14 00 00 callq 696370 0.00 : 694e97: 66 89 43 08 mov %ax,0x8(%rbx) : return pageCopy; 0.00 : 694e9b: 48 8b 1d ee 98 4e 00 mov 0x4e98ee(%rip),%rbx # b7e790 : } 0.00 : 694ea2: eb a9 jmp 694e4d 0.00 : 694ea4: 0f 1f 40 00 nopl 0x0(%rax) : * call. The point of palloc'ing here, rather than having a static char : * array, is first to ensure adequate alignment for the checksumming code : * and second to avoid wasting space in processes that never call this. : */ : if (pageCopy == NULL) : pageCopy = MemoryContextAlloc(TopMemoryContext, BLCKSZ); 0.00 : 694ea8: 48 8b 3d b9 59 52 00 mov 0x5259b9(%rip),%rdi # bba868 0.00 : 694eaf: be 00 20 00 00 mov $0x2000,%esi 0.00 : 694eb4: e8 d7 3f 10 00 callq 798e90 0.00 : 694eb9: 48 89 05 d0 98 4e 00 mov %rax,0x4e98d0(%rip) # b7e790 0.00 : 694ec0: eb b1 jmp 694e73 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1533 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697310 : : * table has to be searched linearly, but dropping a database is a pretty : * heavyweight operation anyhow, so we'll live with it.) : */ : void : RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { 0.00 : 697310: 55 push %rbp 0.00 : 697311: 48 89 e5 mov %rsp,%rbp 0.00 : 697314: 41 56 push %r14 0.00 : 697316: 41 55 push %r13 0.00 : 697318: 41 89 cd mov %ecx,%r13d 0.00 : 69731b: 41 54 push %r12 0.00 : 69731d: 53 push %rbx 0.00 : 69731e: 89 d3 mov %edx,%ebx 0.00 : 697320: 48 83 ec 30 sub $0x30,%rsp : Assert(pendingOpsTable); : : if (segno == FORGET_RELATION_FSYNC) 0.00 : 697324: 83 f9 ff cmp $0xffffffff,%ecx : * table has to be searched linearly, but dropping a database is a pretty : * heavyweight operation anyhow, so we'll live with it.) : */ : void : RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { 0.00 : 697327: 48 89 7d b0 mov %rdi,-0x50(%rbp) 0.00 : 69732b: 89 75 b8 mov %esi,-0x48(%rbp) : Assert(pendingOpsTable); : : if (segno == FORGET_RELATION_FSYNC) 0.00 : 69732e: 0f 84 54 01 00 00 je 697488 : entry->requests[forknum] = NULL; : entry->canceled[forknum] = true; : } : } : } : else if (segno == FORGET_DATABASE_FSYNC) 0.00 : 697334: 83 f9 fe cmp $0xfffffffe,%ecx 0.00 : 697337: 0f 84 d3 01 00 00 je 697510 : } : else : prev = cell; : } : } : else if (segno == UNLINK_RELATION_REQUEST) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1533 100.00 : 69733d: 83 f9 fd cmp $0xfffffffd,%ecx 0.00 : 697340: 0f 84 da 00 00 00 je 697420 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 697346: 48 8b 05 6b 74 4e 00 mov 0x4e746b(%rip),%rax # b7e7b8 : /* Normal case: enter a request to fsync this segment */ : MemoryContext oldcxt = MemoryContextSwitchTo(pendingOpsCxt); : PendingOperationEntry *entry; : bool found; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 69734d: 48 8b 3d 44 74 4e 00 mov 0x4e7444(%rip),%rdi # b7e798 0.00 : 697354: 48 8d 4d df lea -0x21(%rbp),%rcx 0.00 : 697358: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 69735c: ba 01 00 00 00 mov $0x1,%edx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 697361: 4c 8b 35 f8 34 52 00 mov 0x5234f8(%rip),%r14 # bba860 : : CurrentMemoryContext = context; 0.00 : 697368: 48 89 05 f1 34 52 00 mov %rax,0x5234f1(%rip) # bba860 0.00 : 69736f: e8 2c d3 0e 00 callq 7846a0 : &rnode, : HASH_ENTER, : &found); : /* if new entry, initialize it */ : if (!found) 0.00 : 697374: 80 7d df 00 cmpb $0x0,-0x21(%rbp) : /* Normal case: enter a request to fsync this segment */ : MemoryContext oldcxt = MemoryContextSwitchTo(pendingOpsCxt); : PendingOperationEntry *entry; : bool found; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 697378: 49 89 c4 mov %rax,%r12 : &rnode, : HASH_ENTER, : &found); : /* if new entry, initialize it */ : if (!found) 0.00 : 69737b: 74 33 je 6973b0 : * NB: it's intentional that we don't change cycle_ctr if the entry : * already exists. The cycle_ctr must represent the oldest fsync : * request that could be in the entry. : */ : : entry->requests[forknum] = bms_add_member(entry->requests[forknum], 0.00 : 69737d: 48 63 db movslq %ebx,%rbx 0.00 : 697380: 44 89 ee mov %r13d,%esi 0.00 : 697383: 48 83 c3 02 add $0x2,%rbx 0.00 : 697387: 49 8b 3c dc mov (%r12,%rbx,8),%rdi 0.00 : 69738b: e8 70 bc f4 ff callq 5e3000 0.00 : 697390: 49 89 04 dc mov %rax,(%r12,%rbx,8) 0.00 : 697394: 4c 89 35 c5 34 52 00 mov %r14,0x5234c5(%rip) # bba860 : (int) segno); : : MemoryContextSwitchTo(oldcxt); : } : } 0.00 : 69739b: 48 83 c4 30 add $0x30,%rsp 0.00 : 69739f: 5b pop %rbx 0.00 : 6973a0: 41 5c pop %r12 0.00 : 6973a2: 41 5d pop %r13 0.00 : 6973a4: 41 5e pop %r14 0.00 : 6973a6: c9 leaveq 0.00 : 6973a7: c3 retq 0.00 : 6973a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6973af: 00 : HASH_ENTER, : &found); : /* if new entry, initialize it */ : if (!found) : { : entry->cycle_ctr = mdsync_cycle_ctr; 0.00 : 6973b0: 0f b7 05 f3 73 4e 00 movzwl 0x4e73f3(%rip),%eax # b7e7aa 0.00 : 6973b7: 66 41 89 44 24 0c mov %ax,0xc(%r12) : MemSet(entry->requests, 0, sizeof(entry->requests)); 0.00 : 6973bd: 49 8d 44 24 10 lea 0x10(%r12),%rax 0.00 : 6973c2: a8 07 test $0x7,%al 0.00 : 6973c4: 75 32 jne 6973f8 0.00 : 6973c6: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 6973cd: 00 00 0.00 : 6973cf: 49 c7 44 24 18 00 00 movq $0x0,0x18(%r12) 0.00 : 6973d6: 00 00 0.00 : 6973d8: 49 c7 44 24 20 00 00 movq $0x0,0x20(%r12) 0.00 : 6973df: 00 00 0.00 : 6973e1: 49 c7 44 24 28 00 00 movq $0x0,0x28(%r12) 0.00 : 6973e8: 00 00 : MemSet(entry->canceled, 0, sizeof(entry->canceled)); 0.00 : 6973ea: 41 c7 44 24 30 00 00 movl $0x0,0x30(%r12) 0.00 : 6973f1: 00 00 0.00 : 6973f3: eb 88 jmp 69737d 0.00 : 6973f5: 0f 1f 00 nopl (%rax) : &found); : /* if new entry, initialize it */ : if (!found) : { : entry->cycle_ctr = mdsync_cycle_ctr; : MemSet(entry->requests, 0, sizeof(entry->requests)); 0.00 : 6973f8: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 6973ff: 00 00 0.00 : 697401: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 697408: 00 0.00 : 697409: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 697410: 00 0.00 : 697411: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 697418: 00 0.00 : 697419: eb cf jmp 6973ea 0.00 : 69741b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 697420: 48 8b 05 91 73 4e 00 mov 0x4e7391(%rip),%rax # b7e7b8 : PendingUnlinkEntry *entry; : : /* PendingUnlinkEntry doesn't store forknum, since it's always MAIN */ : Assert(forknum == MAIN_FORKNUM); : : entry = palloc(sizeof(PendingUnlinkEntry)); 0.00 : 697427: bf 10 00 00 00 mov $0x10,%edi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 69742c: 48 8b 1d 2d 34 52 00 mov 0x52342d(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 697433: 48 89 05 26 34 52 00 mov %rax,0x523426(%rip) # bba860 0.00 : 69743a: e8 11 19 10 00 callq 798d50 0.00 : 69743f: 48 89 c6 mov %rax,%rsi : entry->rnode = rnode; 0.00 : 697442: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 697446: 48 89 06 mov %rax,(%rsi) 0.00 : 697449: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 69744c: 89 46 08 mov %eax,0x8(%rsi) : entry->cycle_ctr = mdckpt_cycle_ctr; 0.00 : 69744f: 0f b7 05 52 73 4e 00 movzwl 0x4e7352(%rip),%eax # b7e7a8 0.00 : 697456: 66 89 46 0c mov %ax,0xc(%rsi) : : pendingUnlinks = lappend(pendingUnlinks, entry); 0.00 : 69745a: 48 8b 3d 3f 73 4e 00 mov 0x4e733f(%rip),%rdi # b7e7a0 0.00 : 697461: e8 1a aa f4 ff callq 5e1e80 0.00 : 697466: 48 89 1d f3 33 52 00 mov %rbx,0x5233f3(%rip) # bba860 0.00 : 69746d: 48 89 05 2c 73 4e 00 mov %rax,0x4e732c(%rip) # b7e7a0 : entry->requests[forknum] = bms_add_member(entry->requests[forknum], : (int) segno); : : MemoryContextSwitchTo(oldcxt); : } : } 0.00 : 697474: 48 83 c4 30 add $0x30,%rsp 0.00 : 697478: 5b pop %rbx 0.00 : 697479: 41 5c pop %r12 0.00 : 69747b: 41 5d pop %r13 0.00 : 69747d: 41 5e pop %r14 0.00 : 69747f: c9 leaveq 0.00 : 697480: c3 retq 0.00 : 697481: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (segno == FORGET_RELATION_FSYNC) : { : /* Remove any pending requests for the relation (one or all forks) */ : PendingOperationEntry *entry; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 697488: 48 8b 3d 09 73 4e 00 mov 0x4e7309(%rip),%rdi # b7e798 0.00 : 69748f: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 697493: 31 c9 xor %ecx,%ecx 0.00 : 697495: 31 d2 xor %edx,%edx 0.00 : 697497: e8 04 d2 0e 00 callq 7846a0 : &rnode, : HASH_FIND, : NULL); : if (entry) 0.00 : 69749c: 48 85 c0 test %rax,%rax : if (segno == FORGET_RELATION_FSYNC) : { : /* Remove any pending requests for the relation (one or all forks) */ : PendingOperationEntry *entry; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 69749f: 49 89 c5 mov %rax,%r13 : &rnode, : HASH_FIND, : NULL); : if (entry) 0.00 : 6974a2: 0f 84 f3 fe ff ff je 69739b : * active hashtable scan. Instead we delete the bitmapsets; this : * is safe because of the way mdsync is coded. We also set the : * "canceled" flags so that mdsync can tell that a cancel arrived : * for the fork(s). : */ : if (forknum == InvalidForkNumber) 0.00 : 6974a8: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 6974ab: 0f 85 5f 01 00 00 jne 697610 : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974b1: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 6974b5: e8 f6 b8 f4 ff callq 5e2db0 0.00 : 6974ba: 49 8b 7d 18 mov 0x18(%r13),%rdi : entry->requests[forknum] = NULL; 0.00 : 6974be: 49 c7 45 10 00 00 00 movq $0x0,0x10(%r13) 0.00 : 6974c5: 00 : entry->canceled[forknum] = true; 0.00 : 6974c6: 41 c6 45 30 01 movb $0x1,0x30(%r13) : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974cb: e8 e0 b8 f4 ff callq 5e2db0 0.00 : 6974d0: 49 8b 7d 20 mov 0x20(%r13),%rdi : entry->requests[forknum] = NULL; 0.00 : 6974d4: 49 c7 45 18 00 00 00 movq $0x0,0x18(%r13) 0.00 : 6974db: 00 : entry->canceled[forknum] = true; 0.00 : 6974dc: 41 c6 45 31 01 movb $0x1,0x31(%r13) : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974e1: e8 ca b8 f4 ff callq 5e2db0 0.00 : 6974e6: 49 8b 7d 28 mov 0x28(%r13),%rdi : entry->requests[forknum] = NULL; 0.00 : 6974ea: 49 c7 45 20 00 00 00 movq $0x0,0x20(%r13) 0.00 : 6974f1: 00 : entry->canceled[forknum] = true; 0.00 : 6974f2: 41 c6 45 32 01 movb $0x1,0x32(%r13) : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974f7: e8 b4 b8 f4 ff callq 5e2db0 : entry->requests[forknum] = NULL; 0.00 : 6974fc: 49 c7 45 28 00 00 00 movq $0x0,0x28(%r13) 0.00 : 697503: 00 : entry->canceled[forknum] = true; 0.00 : 697504: 41 c6 45 33 01 movb $0x1,0x33(%r13) : * for the fork(s). : */ : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) 0.00 : 697509: e9 8d fe ff ff jmpq 69739b 0.00 : 69750e: 66 90 xchg %ax,%ax : ListCell *cell, : *prev, : *next; : : /* Remove fsync requests */ : hash_seq_init(&hstat, pendingOpsTable); 0.00 : 697510: 4c 8d 65 c0 lea -0x40(%rbp),%r12 0.00 : 697514: 48 8b 35 7d 72 4e 00 mov 0x4e727d(%rip),%rsi # b7e798 0.00 : 69751b: 4c 89 e7 mov %r12,%rdi 0.00 : 69751e: e8 0d c9 0e 00 callq 783e30 0.00 : 697523: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : while ((entry = (PendingOperationEntry *) hash_seq_search(&hstat)) != NULL) 0.00 : 697528: 4c 89 e7 mov %r12,%rdi 0.00 : 69752b: e8 90 c5 0e 00 callq 783ac0 0.00 : 697530: 48 85 c0 test %rax,%rax 0.00 : 697533: 48 89 c3 mov %rax,%rbx 0.00 : 697536: 74 68 je 6975a0 : { : if (entry->rnode.dbNode == rnode.dbNode) 0.00 : 697538: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 69753b: 3b 45 b4 cmp -0x4c(%rbp),%eax 0.00 : 69753e: 75 e8 jne 697528 : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 697540: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 697544: e8 67 b8 f4 ff callq 5e2db0 0.00 : 697549: 48 8b 7b 18 mov 0x18(%rbx),%rdi : entry->requests[forknum] = NULL; 0.00 : 69754d: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 697554: 00 : entry->canceled[forknum] = true; 0.00 : 697555: c6 43 30 01 movb $0x1,0x30(%rbx) : if (entry->rnode.dbNode == rnode.dbNode) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 697559: e8 52 b8 f4 ff callq 5e2db0 0.00 : 69755e: 48 8b 7b 20 mov 0x20(%rbx),%rdi : entry->requests[forknum] = NULL; 0.00 : 697562: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 697569: 00 : entry->canceled[forknum] = true; 0.00 : 69756a: c6 43 31 01 movb $0x1,0x31(%rbx) : if (entry->rnode.dbNode == rnode.dbNode) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 69756e: e8 3d b8 f4 ff callq 5e2db0 0.00 : 697573: 48 8b 7b 28 mov 0x28(%rbx),%rdi : entry->requests[forknum] = NULL; 0.00 : 697577: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 69757e: 00 : entry->canceled[forknum] = true; 0.00 : 69757f: c6 43 32 01 movb $0x1,0x32(%rbx) : if (entry->rnode.dbNode == rnode.dbNode) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 697583: e8 28 b8 f4 ff callq 5e2db0 : entry->requests[forknum] = NULL; 0.00 : 697588: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 69758f: 00 : entry->canceled[forknum] = true; 0.00 : 697590: c6 43 33 01 movb $0x1,0x33(%rbx) 0.00 : 697594: eb 92 jmp 697528 0.00 : 697596: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69759d: 00 00 00 : } : } : : /* Remove unlink requests */ : prev = NULL; : for (cell = list_head(pendingUnlinks); cell; cell = next) 0.00 : 6975a0: 48 8b 05 f9 71 4e 00 mov 0x4e71f9(%rip),%rax # b7e7a0 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 6975a7: 48 85 c0 test %rax,%rax 0.00 : 6975aa: 0f 84 eb fd ff ff je 69739b 0.00 : 6975b0: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 6975b4: 48 85 f6 test %rsi,%rsi 0.00 : 6975b7: 0f 84 de fd ff ff je 69739b 0.00 : 6975bd: 45 31 ed xor %r13d,%r13d 0.00 : 6975c0: eb 15 jmp 6975d7 0.00 : 6975c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); : : next = lnext(cell); : if (entry->rnode.dbNode == rnode.dbNode) 0.00 : 6975c8: 49 89 f5 mov %rsi,%r13 : } : } : : /* Remove unlink requests */ : prev = NULL; : for (cell = list_head(pendingUnlinks); cell; cell = next) 0.00 : 6975cb: 4d 85 e4 test %r12,%r12 : : next = lnext(cell); : if (entry->rnode.dbNode == rnode.dbNode) : { : pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); : pfree(entry); 0.00 : 6975ce: 4c 89 e6 mov %r12,%rsi : } : } : : /* Remove unlink requests */ : prev = NULL; : for (cell = list_head(pendingUnlinks); cell; cell = next) 0.00 : 6975d1: 0f 84 c4 fd ff ff je 69739b : { : PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); 0.00 : 6975d7: 48 8b 1e mov (%rsi),%rbx : : next = lnext(cell); 0.00 : 6975da: 4c 8b 66 08 mov 0x8(%rsi),%r12 : if (entry->rnode.dbNode == rnode.dbNode) 0.00 : 6975de: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6975e1: 3b 45 b4 cmp -0x4c(%rbp),%eax 0.00 : 6975e4: 75 e2 jne 6975c8 : { : pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); 0.00 : 6975e6: 48 8b 3d b3 71 4e 00 mov 0x4e71b3(%rip),%rdi # b7e7a0 0.00 : 6975ed: 4c 89 ea mov %r13,%rdx 0.00 : 6975f0: e8 6b ab f4 ff callq 5e2160 : pfree(entry); 0.00 : 6975f5: 48 89 df mov %rbx,%rdi : PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); : : next = lnext(cell); : if (entry->rnode.dbNode == rnode.dbNode) : { : pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); 0.00 : 6975f8: 48 89 05 a1 71 4e 00 mov %rax,0x4e71a1(%rip) # b7e7a0 : pfree(entry); 0.00 : 6975ff: e8 7c 15 10 00 callq 798b80 0.00 : 697604: eb c5 jmp 6975cb 0.00 : 697606: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69760d: 00 00 00 : } : } : else : { : /* remove requests for single fork */ : bms_free(entry->requests[forknum]); 0.00 : 697610: 4c 63 e3 movslq %ebx,%r12 0.00 : 697613: 49 8d 5c 24 02 lea 0x2(%r12),%rbx 0.00 : 697618: 48 8b 3c d8 mov (%rax,%rbx,8),%rdi 0.00 : 69761c: e8 8f b7 f4 ff callq 5e2db0 : entry->requests[forknum] = NULL; 0.00 : 697621: 49 c7 44 dd 00 00 00 movq $0x0,0x0(%r13,%rbx,8) 0.00 : 697628: 00 00 : entry->canceled[forknum] = true; 0.00 : 69762a: 43 c6 44 25 30 01 movb $0x1,0x30(%r13,%r12,1) 0.00 : 697630: e9 66 fd ff ff jmpq 69739b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1367 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1367 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1371 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697850 : : * locally before returning (we hope this will not happen often enough : * to be a performance problem). : */ : static void : register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1367 33.33 : 697850: 55 push %rbp 0.00 : 697851: 48 89 f8 mov %rdi,%rax 0.00 : 697854: 41 89 f0 mov %esi,%r8d 0.00 : 697857: 48 89 e5 mov %rsp,%rbp 0.00 : 69785a: 53 push %rbx 33.33 : 69785b: 48 89 d3 mov %rdx,%rbx 0.00 : 69785e: 48 83 ec 08 sub $0x8,%rsp : /* Temp relations should never be fsync'd */ : Assert(!SmgrIsTemp(reln)); : : if (pendingOpsTable) 0.00 : 697862: 48 83 3d 2e 6f 4e 00 cmpq $0x0,0x4e6f2e(%rip) # b7e798 0.00 : 697869: 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1371 33.33 : 69786a: 74 1c je 697888 : { : /* push it into local pending-ops table */ : RememberFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno); 0.00 : 69786c: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 69786f: 48 8b 3f mov (%rdi),%rdi 0.00 : 697872: 44 89 c2 mov %r8d,%edx 0.00 : 697875: 8b 70 08 mov 0x8(%rax),%esi : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not fsync file \"%s\": %m", : FilePathName(seg->mdfd_vfd)))); : } : } 0.00 : 697878: 48 83 c4 08 add $0x8,%rsp 0.00 : 69787c: 5b pop %rbx 0.00 : 69787d: c9 leaveq : Assert(!SmgrIsTemp(reln)); : : if (pendingOpsTable) : { : /* push it into local pending-ops table */ : RememberFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno); 0.00 : 69787e: e9 8d fa ff ff jmpq 697310 0.00 : 697883: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : { : if (ForwardFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno)) 0.00 : 697888: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 69788b: 48 8b 3f mov (%rdi),%rdi 0.00 : 69788e: 44 89 c2 mov %r8d,%edx 0.00 : 697891: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 697894: e8 77 64 fa ff callq 63dd10 0.00 : 697899: 84 c0 test %al,%al 0.00 : 69789b: 74 0b je 6978a8 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not fsync file \"%s\": %m", : FilePathName(seg->mdfd_vfd)))); : } : } 0.00 : 69789d: 48 83 c4 08 add $0x8,%rsp 0.00 : 6978a1: 5b pop %rbx 0.00 : 6978a2: c9 leaveq 0.00 : 6978a3: c3 retq 0.00 : 6978a4: 0f 1f 40 00 nopl 0x0(%rax) : else : { : if (ForwardFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno)) : return; /* passed it off successfully */ : : ereport(DEBUG1, 0.00 : 6978a8: 45 31 c0 xor %r8d,%r8d 0.00 : 6978ab: b9 b0 e3 8a 00 mov $0x8ae3b0,%ecx 0.00 : 6978b0: ba 66 05 00 00 mov $0x566,%edx 0.00 : 6978b5: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6978ba: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 6978bf: e8 fc 31 0e 00 callq 77aac0 0.00 : 6978c4: 84 c0 test %al,%al 0.00 : 6978c6: 75 58 jne 697920 : (errmsg("could not forward fsync request because request queue is full"))); : : if (FileSync(seg->mdfd_vfd) < 0) 0.00 : 6978c8: 8b 3b mov (%rbx),%edi 0.00 : 6978ca: e8 b1 2e fe ff callq 67a780 0.00 : 6978cf: 85 c0 test %eax,%eax 0.00 : 6978d1: 79 ca jns 69789d : ereport(ERROR, 0.00 : 6978d3: 45 31 c0 xor %r8d,%r8d 0.00 : 6978d6: b9 b0 e3 8a 00 mov $0x8ae3b0,%ecx 0.00 : 6978db: ba 6c 05 00 00 mov $0x56c,%edx 0.00 : 6978e0: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6978e5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6978ea: e8 d1 31 0e 00 callq 77aac0 0.00 : 6978ef: 84 c0 test %al,%al 0.00 : 6978f1: 74 28 je 69791b 0.00 : 6978f3: 8b 3b mov (%rbx),%edi 0.00 : 6978f5: e8 b6 09 fe ff callq 6782b0 0.00 : 6978fa: bf 70 31 7b 00 mov $0x7b3170,%edi 0.00 : 6978ff: 48 89 c6 mov %rax,%rsi 0.00 : 697902: 31 c0 xor %eax,%eax 0.00 : 697904: e8 97 4f 0e 00 callq 77c8a0 0.00 : 697909: 89 c3 mov %eax,%ebx 0.00 : 69790b: e8 e0 51 0e 00 callq 77caf0 0.00 : 697910: 89 de mov %ebx,%esi 0.00 : 697912: 89 c7 mov %eax,%edi 0.00 : 697914: 31 c0 xor %eax,%eax 0.00 : 697916: e8 c5 2c 0e 00 callq 77a5e0 0.00 : 69791b: e8 b0 1b dd ff callq 4694d0 : else : { : if (ForwardFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno)) : return; /* passed it off successfully */ : : ereport(DEBUG1, 0.00 : 697920: bf 08 e0 8a 00 mov $0x8ae008,%edi 0.00 : 697925: 31 c0 xor %eax,%eax 0.00 : 697927: e8 74 4f 0e 00 callq 77c8a0 0.00 : 69792c: 89 c7 mov %eax,%edi 0.00 : 69792e: 31 c0 xor %eax,%eax 0.00 : 697930: e8 ab 2c 0e 00 callq 77a5e0 0.00 : 697935: eb 91 jmp 6978c8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:158 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:183 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699a30 : : * : * This does not attempt to actually open the underlying file. : */ : SMgrRelation : smgropen(RelFileNode rnode, BackendId backend) : { 0.00 : 699a30: 55 push %rbp 0.00 : 699a31: 48 89 e5 mov %rsp,%rbp 0.00 : 699a34: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 699a38: 49 89 fc mov %rdi,%r12 0.00 : 699a3b: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 699a3f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 699a43: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 699a47: 49 c1 ec 20 shr $0x20,%r12 0.00 : 699a4b: 48 81 ec c0 00 00 00 sub $0xc0,%rsp : RelFileNodeBackend brnode; : SMgrRelation reln; : bool found; : : if (SMgrRelationHash == NULL) 0.00 : 699a52: 48 83 3d 6e 4d 4e 00 cmpq $0x0,0x4e4d6e(%rip) # b7e7c8 0.00 : 699a59: 00 : * : * This does not attempt to actually open the underlying file. : */ : SMgrRelation : smgropen(RelFileNode rnode, BackendId backend) : { 0.00 : 699a5a: 89 f3 mov %esi,%ebx 0.00 : 699a5c: 41 89 d6 mov %edx,%r14d 0.00 : 699a5f: 48 89 bd 40 ff ff ff mov %rdi,-0xc0(%rbp) 0.00 : 699a66: 89 b5 48 ff ff ff mov %esi,-0xb8(%rbp) 0.00 : 699a6c: 41 89 fd mov %edi,%r13d : RelFileNodeBackend brnode; : SMgrRelation reln; : bool found; : : if (SMgrRelationHash == NULL) 0.00 : 699a6f: 0f 84 a3 00 00 00 je 699b18 : } : : /* Look up or create an entry */ : brnode.node = rnode; : brnode.backend = backend; : reln = (SMgrRelation) hash_search(SMgrRelationHash, 0.00 : 699a75: 48 8b 3d 4c 4d 4e 00 mov 0x4e4d4c(%rip),%rdi # b7e7c8 0.00 : 699a7c: 48 8d 4d df lea -0x21(%rbp),%rcx 0.00 : 699a80: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 699a84: ba 01 00 00 00 mov $0x1,%edx : &ctl, HASH_ELEM | HASH_FUNCTION); : first_unowned_reln = NULL; : } : : /* Look up or create an entry */ : brnode.node = rnode; 0.00 : 699a89: 89 5d c8 mov %ebx,-0x38(%rbp) 0.00 : 699a8c: 44 89 65 c4 mov %r12d,-0x3c(%rbp) 0.00 : 699a90: 44 89 6d c0 mov %r13d,-0x40(%rbp) : brnode.backend = backend; 0.00 : 699a94: 44 89 75 cc mov %r14d,-0x34(%rbp) : reln = (SMgrRelation) hash_search(SMgrRelationHash, 0.00 : 699a98: e8 03 ac 0e 00 callq 7846a0 : (void *) &brnode, : HASH_ENTER, &found); : : /* Initialize it if not present before */ : if (!found) 0.00 : 699a9d: 80 7d df 00 cmpb $0x0,-0x21(%rbp) : } : : /* Look up or create an entry */ : brnode.node = rnode; : brnode.backend = backend; : reln = (SMgrRelation) hash_search(SMgrRelationHash, /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:158 50.00 : 699aa1: 48 89 c2 mov %rax,%rdx : (void *) &brnode, : HASH_ENTER, &found); : : /* Initialize it if not present before */ : if (!found) 0.00 : 699aa4: 75 56 jne 699afc : { : int forknum; : : /* hash_search already filled in the lookup key */ : reln->smgr_owner = NULL; 0.00 : 699aa6: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 699aad: 00 : reln->smgr_targblock = InvalidBlockNumber; 0.00 : 699aae: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : reln->smgr_fsm_nblocks = InvalidBlockNumber; 0.00 : 699ab5: c7 40 1c ff ff ff ff movl $0xffffffff,0x1c(%rax) : reln->smgr_vm_nblocks = InvalidBlockNumber; 0.00 : 699abc: c7 40 20 ff ff ff ff movl $0xffffffff,0x20(%rax) : reln->smgr_which = 0; /* we only have md.c at present */ 0.00 : 699ac3: c7 40 24 00 00 00 00 movl $0x0,0x24(%rax) : : /* mark it not open */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : reln->md_fd[forknum] = NULL; 0.00 : 699aca: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 699ad1: 00 0.00 : 699ad2: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 699ad9: 00 0.00 : 699ada: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 699ae1: 00 0.00 : 699ae2: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 699ae9: 00 : */ : static void : add_to_unowned_list(SMgrRelation reln) : { : /* place it at head of the list (to make smgrsetowner cheap) */ : reln->next_unowned_reln = first_unowned_reln; 0.00 : 699aea: 48 8b 05 cf 4c 4e 00 mov 0x4e4ccf(%rip),%rax # b7e7c0 0.00 : 699af1: 48 89 42 48 mov %rax,0x48(%rdx) : first_unowned_reln = reln; 0.00 : 699af5: 48 89 15 c4 4c 4e 00 mov %rdx,0x4e4cc4(%rip) # b7e7c0 : /* it has no owner yet */ : add_to_unowned_list(reln); : } : : return reln; : } 0.00 : 699afc: 48 89 d0 mov %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:183 50.00 : 699aff: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 699b03: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 699b07: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 699b0b: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 699b0f: c9 leaveq 0.00 : 699b10: c3 retq 0.00 : 699b11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (SMgrRelationHash == NULL) : { : /* First time through: initialize the hash table */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 699b18: 48 8d 95 50 ff ff ff lea -0xb0(%rbp),%rdx 0.00 : 699b1f: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 699b23: 48 39 d1 cmp %rdx,%rcx 0.00 : 699b26: 76 18 jbe 699b40 0.00 : 699b28: 48 89 d0 mov %rdx,%rax 0.00 : 699b2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 699b30: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 699b37: 48 83 c0 08 add $0x8,%rax 0.00 : 699b3b: 48 39 c1 cmp %rax,%rcx 0.00 : 699b3e: 75 f0 jne 699b30 : ctl.keysize = sizeof(RelFileNodeBackend); : ctl.entrysize = sizeof(SMgrRelationData); : ctl.hash = tag_hash; : SMgrRelationHash = hash_create("smgr relation table", 400, 0.00 : 699b40: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 699b45: be 90 01 00 00 mov $0x190,%esi 0.00 : 699b4a: bf 06 e4 8a 00 mov $0x8ae406,%edi : { : /* First time through: initialize the hash table */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(RelFileNodeBackend); 0.00 : 699b4f: 48 c7 85 78 ff ff ff movq $0x10,-0x88(%rbp) 0.00 : 699b56: 10 00 00 00 : ctl.entrysize = sizeof(SMgrRelationData); 0.00 : 699b5a: 48 c7 45 80 50 00 00 movq $0x50,-0x80(%rbp) 0.00 : 699b61: 00 : ctl.hash = tag_hash; 0.00 : 699b62: 48 c7 45 88 60 4f 78 movq $0x784f60,-0x78(%rbp) 0.00 : 699b69: 00 : SMgrRelationHash = hash_create("smgr relation table", 400, 0.00 : 699b6a: e8 41 ad 0e 00 callq 7848b0 : &ctl, HASH_ELEM | HASH_FUNCTION); : first_unowned_reln = NULL; 0.00 : 699b6f: 48 c7 05 46 4c 4e 00 movq $0x0,0x4e4c46(%rip) # b7e7c0 0.00 : 699b76: 00 00 00 00 : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(RelFileNodeBackend); : ctl.entrysize = sizeof(SMgrRelationData); : ctl.hash = tag_hash; : SMgrRelationHash = hash_create("smgr relation table", 400, 0.00 : 699b7a: 48 89 05 47 4c 4e 00 mov %rax,0x4e4c47(%rip) # b7e7c8 0.00 : 699b81: e9 ef fe ff ff jmpq 699a75 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2578 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3aa0 : : PG_RETURN_FLOAT8(result); : } : : Datum : float84mul(PG_FUNCTION_ARGS) : { 0.00 : 6d3aa0: 55 push %rbp 0.00 : 6d3aa1: 48 89 e5 mov %rsp,%rbp 0.00 : 6d3aa4: 53 push %rbx 0.00 : 6d3aa5: 48 89 fb mov %rdi,%rbx 0.00 : 6d3aa8: 48 83 ec 28 sub $0x28,%rsp : float8 arg1 = PG_GETARG_FLOAT8(0); 0.00 : 6d3aac: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d3ab0: e8 1b 9f 0a 00 callq 77d9d0 0.00 : 6d3ab5: f2 0f 11 45 e0 movsd %xmm0,-0x20(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d3aba: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 6d3abe: e8 ed 9e 0a 00 callq 77d9b0 : float8 result; : : result = arg1 * arg2; 0.00 : 6d3ac3: 0f 28 c8 movaps %xmm0,%xmm1 : : Datum : float84mul(PG_FUNCTION_ARGS) : { : float8 arg1 = PG_GETARG_FLOAT8(0); : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d3ac6: f3 0f 11 45 ec movss %xmm0,-0x14(%rbp) : float8 result; : : result = arg1 * arg2; 0.00 : 6d3acb: 0f 14 c9 unpcklps %xmm1,%xmm1 0.00 : 6d3ace: 0f 5a c9 cvtps2pd %xmm1,%xmm1 0.00 : 6d3ad1: f2 0f 59 4d e0 mulsd -0x20(%rbp),%xmm1 : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), 0.00 : 6d3ad6: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 6d3ada: f2 0f 11 4d d0 movsd %xmm1,-0x30(%rbp) 0.00 : 6d3adf: e8 0c 60 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3ae4: 85 c0 test %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2578 100.00 : 6d3ae6: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 0.00 : 6d3aeb: 75 4b jne 6d3b38 0.00 : 6d3aed: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 6d3af1: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 6d3af5: 75 2f jne 6d3b26 0.00 : 6d3af7: 7a 2d jp 6d3b26 0.00 : 6d3af9: f2 0f 10 55 e0 movsd -0x20(%rbp),%xmm2 0.00 : 6d3afe: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 6d3b02: 7a 06 jp 6d3b0a 0.00 : 6d3b04: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6d3b08: 74 1c je 6d3b26 0.00 : 6d3b0a: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0 0.00 : 6d3b0f: 0f 2e 05 ca e7 0d 00 ucomiss 0xde7ca(%rip),%xmm0 # 7b22e0 <__func__.14992+0xd7> 0.00 : 6d3b16: 0f 8a 87 00 00 00 jp 6d3ba3 0.00 : 6d3b1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6d3b20: 0f 85 7d 00 00 00 jne 6d3ba3 : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); : } 0.00 : 6d3b26: 48 83 c4 28 add $0x28,%rsp : : result = arg1 * arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); 0.00 : 6d3b2a: 66 0f 28 c1 movapd %xmm1,%xmm0 : } 0.00 : 6d3b2e: 5b pop %rbx 0.00 : 6d3b2f: c9 leaveq : : result = arg1 * arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), : arg1 == 0 || arg2 == 0); : PG_RETURN_FLOAT8(result); 0.00 : 6d3b30: e9 8b 9e 0a 00 jmpq 77d9c0 0.00 : 6d3b35: 0f 1f 00 nopl (%rax) : float4 arg2 = PG_GETARG_FLOAT4(1); : float8 result; : : result = arg1 * arg2; : : CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), 0.00 : 6d3b38: f2 0f 10 45 e0 movsd -0x20(%rbp),%xmm0 0.00 : 6d3b3d: e8 ae 5f d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d3b42: 85 c0 test %eax,%eax 0.00 : 6d3b44: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 0.00 : 6d3b49: 75 a2 jne 6d3aed 0.00 : 6d3b4b: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0 0.00 : 6d3b50: e8 db 5b d9 ff callq 469730 <__isinff@plt> 0.00 : 6d3b55: 85 c0 test %eax,%eax 0.00 : 6d3b57: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 0.00 : 6d3b5c: 75 8f jne 6d3aed 0.00 : 6d3b5e: 45 31 c0 xor %r8d,%r8d 0.00 : 6d3b61: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d3b66: b9 cf b8 8b 00 mov $0x8bb8cf,%ecx 0.00 : 6d3b6b: ba 13 0a 00 00 mov $0xa13,%edx 0.00 : 6d3b70: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d3b75: e8 46 6f 0a 00 callq 77aac0 0.00 : 6d3b7a: 84 c0 test %al,%al 0.00 : 6d3b7c: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d3b81: 74 40 je 6d3bc3 0.00 : 6d3b83: 31 c0 xor %eax,%eax 0.00 : 6d3b85: e8 16 8d 0a 00 callq 77c8a0 0.00 : 6d3b8a: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d3b8f: 89 c3 mov %eax,%ebx 0.00 : 6d3b91: e8 ba 91 0a 00 callq 77cd50 0.00 : 6d3b96: 89 de mov %ebx,%esi 0.00 : 6d3b98: 89 c7 mov %eax,%edi 0.00 : 6d3b9a: 31 c0 xor %eax,%eax 0.00 : 6d3b9c: e8 3f 6a 0a 00 callq 77a5e0 0.00 : 6d3ba1: eb 20 jmp 6d3bc3 0.00 : 6d3ba3: 45 31 c0 xor %r8d,%r8d 0.00 : 6d3ba6: b9 cf b8 8b 00 mov $0x8bb8cf,%ecx 0.00 : 6d3bab: ba 13 0a 00 00 mov $0xa13,%edx 0.00 : 6d3bb0: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d3bb5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d3bba: e8 01 6f 0a 00 callq 77aac0 0.00 : 6d3bbf: 84 c0 test %al,%al 0.00 : 6d3bc1: 75 05 jne 6d3bc8 0.00 : 6d3bc3: e8 08 59 d9 ff callq 4694d0 0.00 : 6d3bc8: bf 4c b4 8b 00 mov $0x8bb44c,%edi 0.00 : 6d3bcd: eb b4 jmp 6d3b83 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:187 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:222 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007648f0 : : * : * Compute the hash value associated with a given set of lookup keys : */ : static uint32 : CatalogCacheComputeHashValue(CatCache *cache, int nkeys, ScanKey cur_skey) : { 0.00 : 7648f0: 55 push %rbp 0.00 : 7648f1: 48 89 e5 mov %rsp,%rbp 0.00 : 7648f4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 7648f8: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 7648fc: 89 f3 mov %esi,%ebx 0.00 : 7648fe: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 764902: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 764906: 48 83 ec 20 sub $0x20,%rsp : CACHE4_elog(DEBUG2, "CatalogCacheComputeHashValue %s %d %p", : cache->cc_relname, : nkeys, : cache); : : switch (nkeys) 0.00 : 76490a: 83 fe 02 cmp $0x2,%esi : * : * Compute the hash value associated with a given set of lookup keys : */ : static uint32 : CatalogCacheComputeHashValue(CatCache *cache, int nkeys, ScanKey cur_skey) : { 0.00 : 76490d: 49 89 fe mov %rdi,%r14 0.00 : 764910: 49 89 d5 mov %rdx,%r13 : CACHE4_elog(DEBUG2, "CatalogCacheComputeHashValue %s %d %p", : cache->cc_relname, : nkeys, : cache); : : switch (nkeys) /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:187 50.00 : 764913: 0f 84 d7 00 00 00 je 7649f0 0.00 : 764919: 0f 8e 91 00 00 00 jle 7649b0 0.00 : 76491f: 83 fe 03 cmp $0x3,%esi 0.00 : 764922: 0f 84 c0 00 00 00 je 7649e8 0.00 : 764928: 83 fe 04 cmp $0x4,%esi 0.00 : 76492b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 764930: 0f 85 7f 00 00 00 jne 7649b5 : { : case 4: : oneHash = 0.00 : 764936: 48 8b 92 18 01 00 00 mov 0x118(%rdx),%rdx 0.00 : 76493d: 48 8b 7f 68 mov 0x68(%rdi),%rdi 0.00 : 764941: 31 f6 xor %esi,%esi 0.00 : 764943: e8 f8 9e 01 00 callq 77e840 : DatumGetUInt32(DirectFunctionCall1(cache->cc_hashfunc[3], : cur_skey[3].sk_argument)); : hashValue ^= oneHash << 24; : hashValue ^= oneHash >> 8; 0.00 : 764948: 89 c3 mov %eax,%ebx 0.00 : 76494a: c1 c3 18 rol $0x18,%ebx : /* FALLTHROUGH */ : case 3: : oneHash = 0.00 : 76494d: 49 8b 95 d0 00 00 00 mov 0xd0(%r13),%rdx 0.00 : 764954: 49 8b 7e 60 mov 0x60(%r14),%rdi 0.00 : 764958: 31 f6 xor %esi,%esi 0.00 : 76495a: e8 e1 9e 01 00 callq 77e840 : DatumGetUInt32(DirectFunctionCall1(cache->cc_hashfunc[2], : cur_skey[2].sk_argument)); : hashValue ^= oneHash << 16; 0.00 : 76495f: 41 89 c4 mov %eax,%r12d 0.00 : 764962: 41 c1 c4 10 rol $0x10,%r12d : hashValue ^= oneHash >> 16; 0.00 : 764966: 41 31 dc xor %ebx,%r12d : /* FALLTHROUGH */ : case 2: : oneHash = 0.00 : 764969: 49 8b 95 88 00 00 00 mov 0x88(%r13),%rdx 0.00 : 764970: 49 8b 7e 58 mov 0x58(%r14),%rdi 0.00 : 764974: 31 f6 xor %esi,%esi 0.00 : 764976: e8 c5 9e 01 00 callq 77e840 : DatumGetUInt32(DirectFunctionCall1(cache->cc_hashfunc[1], : cur_skey[1].sk_argument)); : hashValue ^= oneHash << 8; 0.00 : 76497b: 89 c3 mov %eax,%ebx 0.00 : 76497d: c1 c3 08 rol $0x8,%ebx : hashValue ^= oneHash >> 24; 0.00 : 764980: 44 31 e3 xor %r12d,%ebx : /* FALLTHROUGH */ : case 1: : oneHash = 0.00 : 764983: 49 8b 55 40 mov 0x40(%r13),%rdx 0.00 : 764987: 49 8b 7e 50 mov 0x50(%r14),%rdi 0.00 : 76498b: 31 f6 xor %esi,%esi 0.00 : 76498d: e8 ae 9e 01 00 callq 77e840 0.00 : 764992: 31 c3 xor %eax,%ebx : elog(FATAL, "wrong number of hash keys: %d", nkeys); : break; : } : : return hashValue; : } 0.00 : 764994: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 764999: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 76499e: 89 d8 mov %ebx,%eax 0.00 : 7649a0: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 7649a5: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7649a9: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:222 50.00 : 7649aa: c3 retq 0.00 : 7649ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : CACHE4_elog(DEBUG2, "CatalogCacheComputeHashValue %s %d %p", : cache->cc_relname, : nkeys, : cache); : : switch (nkeys) 0.00 : 7649b0: 83 fe 01 cmp $0x1,%esi 0.00 : 7649b3: 74 4b je 764a00 : DatumGetUInt32(DirectFunctionCall1(cache->cc_hashfunc[0], : cur_skey[0].sk_argument)); : hashValue ^= oneHash; : break; : default: : elog(FATAL, "wrong number of hash keys: %d", nkeys); 0.00 : 7649b5: ba b0 d3 8c 00 mov $0x8cd3b0,%edx 0.00 : 7649ba: be d9 00 00 00 mov $0xd9,%esi 0.00 : 7649bf: bf 8e d1 8c 00 mov $0x8cd18e,%edi 0.00 : 7649c4: e8 57 6a 01 00 callq 77b420 0.00 : 7649c9: 89 da mov %ebx,%edx 0.00 : 7649cb: be 99 d1 8c 00 mov $0x8cd199,%esi 0.00 : 7649d0: bf 15 00 00 00 mov $0x15,%edi 0.00 : 7649d5: 31 c0 xor %eax,%eax 0.00 : 7649d7: e8 54 68 01 00 callq 77b230 0.00 : 7649dc: e8 ef 4a d0 ff callq 4694d0 0.00 : 7649e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : CACHE4_elog(DEBUG2, "CatalogCacheComputeHashValue %s %d %p", : cache->cc_relname, : nkeys, : cache); : : switch (nkeys) 0.00 : 7649e8: 31 db xor %ebx,%ebx 0.00 : 7649ea: e9 5e ff ff ff jmpq 76494d 0.00 : 7649ef: 90 nop 0.00 : 7649f0: 45 31 e4 xor %r12d,%r12d 0.00 : 7649f3: e9 71 ff ff ff jmpq 764969 0.00 : 7649f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7649ff: 00 0.00 : 764a00: 31 db xor %ebx,%ebx 0.00 : 764a02: e9 7c ff ff ff jmpq 764983 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:8905 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000078fde0 : : */ : : static bool : call_bool_check_hook(struct config_bool * conf, bool *newval, void **extra, : GucSource source, int elevel) : { 0.00 : 78fde0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:8905 100.00 : 78fde1: 48 89 d0 mov %rdx,%rax 0.00 : 78fde4: 48 89 e5 mov %rsp,%rbp 0.00 : 78fde7: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 78fdeb: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 78fdef: 48 89 fb mov %rdi,%rbx 0.00 : 78fdf2: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 78fdf6: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 78fdfa: 48 83 ec 20 sub $0x20,%rsp : /* Quick success if no hook */ : if (!conf->check_hook) 0.00 : 78fdfe: 48 83 7f 70 00 cmpq $0x0,0x70(%rdi) : */ : : static bool : call_bool_check_hook(struct config_bool * conf, bool *newval, void **extra, : GucSource source, int elevel) : { 0.00 : 78fe03: 49 89 f5 mov %rsi,%r13 0.00 : 78fe06: 45 89 c4 mov %r8d,%r12d : /* Quick success if no hook */ : if (!conf->check_hook) 0.00 : 78fe09: 74 3a je 78fe45 : return true; : : /* Reset variables that might be set by hook */ : GUC_check_errcode_value = ERRCODE_INVALID_PARAMETER_VALUE; 0.00 : 78fe0b: c7 05 fb a5 42 00 82 movl $0x3080082,0x42a5fb(%rip) # bba410 0.00 : 78fe12: 00 08 03 : GUC_check_errmsg_string = NULL; 0.00 : 78fe15: 48 c7 05 20 0b 43 00 movq $0x0,0x430b20(%rip) # bc0940 0.00 : 78fe1c: 00 00 00 00 : GUC_check_errdetail_string = NULL; : GUC_check_errhint_string = NULL; : : if (!(*conf->check_hook) (newval, extra, source)) 0.00 : 78fe20: 89 ca mov %ecx,%edx : return true; : : /* Reset variables that might be set by hook */ : GUC_check_errcode_value = ERRCODE_INVALID_PARAMETER_VALUE; : GUC_check_errmsg_string = NULL; : GUC_check_errdetail_string = NULL; 0.00 : 78fe22: 48 c7 05 53 0b 43 00 movq $0x0,0x430b53(%rip) # bc0980 0.00 : 78fe29: 00 00 00 00 : GUC_check_errhint_string = NULL; 0.00 : 78fe2d: 48 c7 05 f0 0a 43 00 movq $0x0,0x430af0(%rip) # bc0928 0.00 : 78fe34: 00 00 00 00 : : if (!(*conf->check_hook) (newval, extra, source)) 0.00 : 78fe38: 48 89 c6 mov %rax,%rsi 0.00 : 78fe3b: 4c 89 ef mov %r13,%rdi 0.00 : 78fe3e: ff 53 70 callq *0x70(%rbx) 0.00 : 78fe41: 84 c0 test %al,%al 0.00 : 78fe43: 74 1b je 78fe60 : GUC_check_errdetail_string ? : errdetail_internal("%s", GUC_check_errdetail_string) : 0, : GUC_check_errhint_string ? : errhint("%s", GUC_check_errhint_string) : 0)); : /* Flush any strings created in ErrorContext */ : FlushErrorState(); 0.00 : 78fe45: b8 01 00 00 00 mov $0x1,%eax : return false; : } : : return true; : } 0.00 : 78fe4a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 78fe4e: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 78fe53: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 78fe58: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 78fe5d: c9 leaveq 0.00 : 78fe5e: c3 retq 0.00 : 78fe5f: 90 nop : GUC_check_errdetail_string = NULL; : GUC_check_errhint_string = NULL; : : if (!(*conf->check_hook) (newval, extra, source)) : { : ereport(elevel, 0.00 : 78fe60: 45 31 c0 xor %r8d,%r8d 0.00 : 78fe63: b9 60 98 8d 00 mov $0x8d9860,%ecx 0.00 : 78fe68: ba df 22 00 00 mov $0x22df,%edx 0.00 : 78fe6d: be 8b a2 8d 00 mov $0x8da28b,%esi 0.00 : 78fe72: 44 89 e7 mov %r12d,%edi 0.00 : 78fe75: e8 46 ac fe ff callq 77aac0 0.00 : 78fe7a: 84 c0 test %al,%al 0.00 : 78fe7c: 74 72 je 78fef0 0.00 : 78fe7e: 48 8b 35 a3 0a 43 00 mov 0x430aa3(%rip),%rsi # bc0928 0.00 : 78fe85: 45 31 f6 xor %r14d,%r14d 0.00 : 78fe88: 48 85 f6 test %rsi,%rsi 0.00 : 78fe8b: 74 0f je 78fe9c 0.00 : 78fe8d: bf 19 fb 89 00 mov $0x89fb19,%edi 0.00 : 78fe92: 31 c0 xor %eax,%eax 0.00 : 78fe94: e8 07 be fe ff callq 77bca0 0.00 : 78fe99: 41 89 c6 mov %eax,%r14d 0.00 : 78fe9c: 48 8b 35 dd 0a 43 00 mov 0x430add(%rip),%rsi # bc0980 0.00 : 78fea3: 45 31 e4 xor %r12d,%r12d 0.00 : 78fea6: 48 85 f6 test %rsi,%rsi 0.00 : 78fea9: 74 0f je 78feba 0.00 : 78feab: bf 19 fb 89 00 mov $0x89fb19,%edi 0.00 : 78feb0: 31 c0 xor %eax,%eax 0.00 : 78feb2: e8 c9 c4 fe ff callq 77c380 0.00 : 78feb7: 41 89 c4 mov %eax,%r12d 0.00 : 78feba: 48 8b 35 7f 0a 43 00 mov 0x430a7f(%rip),%rsi # bc0940 0.00 : 78fec1: 48 85 f6 test %rsi,%rsi 0.00 : 78fec4: 74 3a je 78ff00 0.00 : 78fec6: bf 19 fb 89 00 mov $0x89fb19,%edi 0.00 : 78fecb: 31 c0 xor %eax,%eax 0.00 : 78fecd: e8 3e aa fe ff callq 77a910 0.00 : 78fed2: 89 c3 mov %eax,%ebx 0.00 : 78fed4: 8b 3d 36 a5 42 00 mov 0x42a536(%rip),%edi # bba410 0.00 : 78feda: e8 71 ce fe ff callq 77cd50 0.00 : 78fedf: 44 89 f1 mov %r14d,%ecx 0.00 : 78fee2: 89 c7 mov %eax,%edi 0.00 : 78fee4: 44 89 e2 mov %r12d,%edx 0.00 : 78fee7: 89 de mov %ebx,%esi 0.00 : 78fee9: 31 c0 xor %eax,%eax 0.00 : 78feeb: e8 f0 a6 fe ff callq 77a5e0 : GUC_check_errdetail_string ? : errdetail_internal("%s", GUC_check_errdetail_string) : 0, : GUC_check_errhint_string ? : errhint("%s", GUC_check_errhint_string) : 0)); : /* Flush any strings created in ErrorContext */ : FlushErrorState(); 0.00 : 78fef0: e8 3b 77 fe ff callq 777630 0.00 : 78fef5: 31 c0 xor %eax,%eax : return false; : } : : return true; : } 0.00 : 78fef7: e9 4e ff ff ff jmpq 78fe4a 0.00 : 78fefc: 0f 1f 40 00 nopl 0x0(%rax) : GUC_check_errdetail_string = NULL; : GUC_check_errhint_string = NULL; : : if (!(*conf->check_hook) (newval, extra, source)) : { : ereport(elevel, 0.00 : 78ff00: 41 0f be 55 00 movsbl 0x0(%r13),%edx 0.00 : 78ff05: 48 8b 33 mov (%rbx),%rsi 0.00 : 78ff08: bf 58 b8 8d 00 mov $0x8db858,%edi 0.00 : 78ff0d: 31 c0 xor %eax,%eax 0.00 : 78ff0f: e8 8c c9 fe ff callq 77c8a0 0.00 : 78ff14: 89 c3 mov %eax,%ebx 0.00 : 78ff16: eb bc jmp 78fed4 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:690 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:699 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a870 : : /* : * Forget that a Local Lock is owned by a ResourceOwner : */ : void : ResourceOwnerForgetLock(ResourceOwner owner, LOCALLOCK *locallock) : { 0.00 : 79a870: 55 push %rbp 0.00 : 79a871: 48 89 e5 mov %rsp,%rbp 0.00 : 79a874: 41 54 push %r12 0.00 : 79a876: 49 89 f4 mov %rsi,%r12 0.00 : 79a879: 53 push %rbx : int i; : : if (owner->nlocks > MAX_RESOWNER_LOCKS) 0.00 : 79a87a: 8b 47 34 mov 0x34(%rdi),%eax : /* : * Forget that a Local Lock is owned by a ResourceOwner : */ : void : ResourceOwnerForgetLock(ResourceOwner owner, LOCALLOCK *locallock) : { 0.00 : 79a87d: 48 89 fb mov %rdi,%rbx : int i; : : if (owner->nlocks > MAX_RESOWNER_LOCKS) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:690 50.00 : 79a880: 83 f8 0f cmp $0xf,%eax 0.00 : 79a883: 7f 33 jg 79a8b8 : return; /* we have overflowed */ : : Assert(owner->nlocks > 0); : for (i = owner->nlocks - 1; i >= 0; i--) 0.00 : 79a885: 83 e8 01 sub $0x1,%eax 0.00 : 79a888: 78 36 js 79a8c0 : { : if (locallock == owner->locks[i]) 0.00 : 79a88a: 48 63 d0 movslq %eax,%rdx 0.00 : 79a88d: 48 8b 4c d7 38 mov 0x38(%rdi,%rdx,8),%rcx 0.00 : 79a892: 48 39 f1 cmp %rsi,%rcx 0.00 : 79a895: 74 18 je 79a8af 0.00 : 79a897: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79a89e: 00 00 : : if (owner->nlocks > MAX_RESOWNER_LOCKS) : return; /* we have overflowed */ : : Assert(owner->nlocks > 0); : for (i = owner->nlocks - 1; i >= 0; i--) 0.00 : 79a8a0: 83 e8 01 sub $0x1,%eax 0.00 : 79a8a3: 78 1b js 79a8c0 : { : if (locallock == owner->locks[i]) 0.00 : 79a8a5: 48 63 d0 movslq %eax,%rdx 0.00 : 79a8a8: 4c 39 64 d3 38 cmp %r12,0x38(%rbx,%rdx,8) 0.00 : 79a8ad: 75 f1 jne 79a8a0 : { : owner->locks[i] = owner->locks[owner->nlocks - 1]; 0.00 : 79a8af: 48 89 4c d3 38 mov %rcx,0x38(%rbx,%rdx,8) : owner->nlocks--; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:699 50.00 : 79a8b4: 83 6b 34 01 subl $0x1,0x34(%rbx) : return; : } : } : elog(ERROR, "lock reference %p is not owned by resource owner %s", : locallock, owner->name); : } 0.00 : 79a8b8: 5b pop %rbx 0.00 : 79a8b9: 41 5c pop %r12 0.00 : 79a8bb: c9 leaveq 0.00 : 79a8bc: c3 retq 0.00 : 79a8bd: 0f 1f 00 nopl (%rax) : owner->locks[i] = owner->locks[owner->nlocks - 1]; : owner->nlocks--; : return; : } : } : elog(ERROR, "lock reference %p is not owned by resource owner %s", 0.00 : 79a8c0: ba 50 27 8e 00 mov $0x8e2750,%edx 0.00 : 79a8c5: be c0 02 00 00 mov $0x2c0,%esi 0.00 : 79a8ca: bf 90 22 8e 00 mov $0x8e2290,%edi 0.00 : 79a8cf: e8 4c 0b fe ff callq 77b420 0.00 : 79a8d4: 48 8b 4b 18 mov 0x18(%rbx),%rcx 0.00 : 79a8d8: 4c 89 e2 mov %r12,%rdx 0.00 : 79a8db: be 80 24 8e 00 mov $0x8e2480,%esi 0.00 : 79a8e0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79a8e5: 31 c0 xor %eax,%eax 0.00 : 79a8e7: e8 44 09 fe ff callq 77b230 0.00 : 79a8ec: e8 df eb cc ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007abc0 <__libc_calloc>: 0.00 : 7abc0: 48 89 f2 mov %rsi,%rdx 0.00 : 7abc3: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 7abc8: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 7abcd: 49 89 f7 mov %rsi,%r15 0.00 : 7abd0: 48 09 fa or %rdi,%rdx 0.00 : 7abd3: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 7abd8: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 7abdd: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 7abe2: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 7abe7: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 7abec: 48 83 ec 38 sub $0x38,%rsp 0.00 : 7abf0: 4c 0f af ff imul %rdi,%r15 0.00 : 7abf4: 48 39 c2 cmp %rax,%rdx 0.00 : 7abf7: 0f 87 54 03 00 00 ja 7af51 <__libc_calloc+0x391> 0.00 : 7abfd: 48 8b 05 ac 72 2f 00 mov 0x2f72ac(%rip),%rax # 371eb0 <_DYNAMIC+0x350> 0.00 : 7ac04: 48 8b 00 mov (%rax),%rax 0.00 : 7ac07: 48 85 c0 test %rax,%rax 0.00 : 7ac0a: 0f 85 fc 02 00 00 jne 7af0c <__libc_calloc+0x34c> 0.00 : 7ac10: 48 8b 15 29 71 2f 00 mov 0x2f7129(%rip),%rdx # 371d40 <_DYNAMIC+0x1e0> 0.00 : 7ac17: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7ac1e: 00 00 ??:0 100.00 : 7ac20: 48 8b 1c 10 mov (%rax,%rdx,1),%rbx 0.00 : 7ac24: 48 85 db test %rbx,%rbx 0.00 : 7ac27: 0f 84 63 01 00 00 je 7ad90 <__libc_calloc+0x1d0> 0.00 : 7ac2d: 31 c0 xor %eax,%eax 0.00 : 7ac2f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 7ac34: 83 3d 79 ca 2f 00 00 cmpl $0x0,0x2fca79(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7ac3b: 74 06 je 7ac43 <__libc_calloc+0x83> 0.00 : 7ac3d: f0 0f b1 13 lock cmpxchg %edx,(%rbx) 0.00 : 7ac41: eb 03 jmp 7ac46 <__libc_calloc+0x86> 0.00 : 7ac43: 0f b1 13 cmpxchg %edx,(%rbx) 0.00 : 7ac46: 85 c0 test %eax,%eax 0.00 : 7ac48: 0f 85 42 01 00 00 jne 7ad90 <__libc_calloc+0x1d0> 0.00 : 7ac4e: 4c 8b 73 58 mov 0x58(%rbx),%r14 0.00 : 7ac52: 4c 8d 2d 47 92 2f 00 lea 0x2f9247(%rip),%r13 # 373ea0 0.00 : 7ac59: 4d 8b 66 08 mov 0x8(%r14),%r12 0.00 : 7ac5d: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 7ac61: 4c 39 eb cmp %r13,%rbx 0.00 : 7ac64: 74 17 je 7ac7d <__libc_calloc+0xbd> 0.00 : 7ac66: 4c 89 f0 mov %r14,%rax 0.00 : 7ac69: 48 25 00 00 00 fc and $0xfffffffffc000000,%rax 0.00 : 7ac6f: 48 03 40 18 add 0x18(%rax),%rax 0.00 : 7ac73: 4c 29 f0 sub %r14,%rax 0.00 : 7ac76: 49 39 c4 cmp %rax,%r12 0.00 : 7ac79: 4c 0f 42 e0 cmovb %rax,%r12 0.00 : 7ac7d: 4c 89 fe mov %r15,%rsi 0.00 : 7ac80: 48 89 df mov %rbx,%rdi 0.00 : 7ac83: e8 98 e1 ff ff callq 78e20 <_int_malloc> 0.00 : 7ac88: 48 89 c5 mov %rax,%rbp 0.00 : 7ac8b: 83 3d 22 ca 2f 00 00 cmpl $0x0,0x2fca22(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7ac92: 74 0b je 7ac9f <__libc_calloc+0xdf> 0.00 : 7ac94: f0 ff 0b lock decl (%rbx) 0.00 : 7ac97: 0f 85 5c 25 00 00 jne 7d1f9 <_L_unlock_8912> 0.00 : 7ac9d: eb 08 jmp 7aca7 <__libc_calloc+0xe7> 0.00 : 7ac9f: ff 0b decl (%rbx) 0.00 : 7aca1: 0f 85 52 25 00 00 jne 7d1f9 <_L_unlock_8912> 0.00 : 7aca7: 48 85 ed test %rbp,%rbp 0.00 : 7acaa: 0f 84 c8 01 00 00 je 7ae78 <__libc_calloc+0x2b8> 0.00 : 7acb0: 48 8b 55 f8 mov -0x8(%rbp),%rdx 0.00 : 7acb4: 4c 8d 6d f0 lea -0x10(%rbp),%r13 0.00 : 7acb8: f6 c2 02 test $0x2,%dl 0.00 : 7acbb: 0f 84 ef 00 00 00 je 7adb0 <__libc_calloc+0x1f0> 0.00 : 7acc1: f6 c2 02 test $0x2,%dl 0.00 : 7acc4: 0f 85 2b 01 00 00 jne 7adf5 <__libc_calloc+0x235> 0.00 : 7acca: 48 89 d0 mov %rdx,%rax 0.00 : 7accd: 8b 15 ad 9a 2f 00 mov 0x2f9aad(%rip),%edx # 374780 0.00 : 7acd3: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 7acd7: 85 d2 test %edx,%edx 0.00 : 7acd9: 75 09 jne 7ace4 <__libc_calloc+0x124> 0.00 : 7acdb: 4d 39 ee cmp %r13,%r14 0.00 : 7acde: 0f 84 1c 02 00 00 je 7af00 <__libc_calloc+0x340> 0.00 : 7ace4: 4c 8d 60 f8 lea -0x8(%rax),%r12 0.00 : 7ace8: 4c 89 e3 mov %r12,%rbx 0.00 : 7aceb: 48 c1 eb 03 shr $0x3,%rbx 0.00 : 7acef: 48 83 fb 02 cmp $0x2,%rbx 0.00 : 7acf3: 0f 86 1f 01 00 00 jbe 7ae18 <__libc_calloc+0x258> 0.00 : 7acf9: 48 83 fb 09 cmp $0x9,%rbx 0.00 : 7acfd: 0f 87 5d 01 00 00 ja 7ae60 <__libc_calloc+0x2a0> 0.00 : 7ad03: 48 83 fb 04 cmp $0x4,%rbx 0.00 : 7ad07: 48 c7 45 00 00 00 00 movq $0x0,0x0(%rbp) 0.00 : 7ad0e: 00 0.00 : 7ad0f: 48 c7 45 08 00 00 00 movq $0x0,0x8(%rbp) 0.00 : 7ad16: 00 0.00 : 7ad17: 48 c7 45 10 00 00 00 movq $0x0,0x10(%rbp) 0.00 : 7ad1e: 00 0.00 : 7ad1f: 76 3f jbe 7ad60 <__libc_calloc+0x1a0> 0.00 : 7ad21: 48 83 fb 06 cmp $0x6,%rbx 0.00 : 7ad25: 48 c7 45 18 00 00 00 movq $0x0,0x18(%rbp) 0.00 : 7ad2c: 00 0.00 : 7ad2d: 48 c7 45 20 00 00 00 movq $0x0,0x20(%rbp) 0.00 : 7ad34: 00 0.00 : 7ad35: 76 29 jbe 7ad60 <__libc_calloc+0x1a0> 0.00 : 7ad37: 48 83 fb 09 cmp $0x9,%rbx 0.00 : 7ad3b: 48 c7 45 28 00 00 00 movq $0x0,0x28(%rbp) 0.00 : 7ad42: 00 0.00 : 7ad43: 48 c7 45 30 00 00 00 movq $0x0,0x30(%rbp) 0.00 : 7ad4a: 00 0.00 : 7ad4b: 75 13 jne 7ad60 <__libc_calloc+0x1a0> 0.00 : 7ad4d: 48 c7 45 38 00 00 00 movq $0x0,0x38(%rbp) 0.00 : 7ad54: 00 0.00 : 7ad55: 48 c7 45 40 00 00 00 movq $0x0,0x40(%rbp) 0.00 : 7ad5c: 00 0.00 : 7ad5d: 0f 1f 00 nopl (%rax) 0.00 : 7ad60: 48 89 e8 mov %rbp,%rax 0.00 : 7ad63: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7ad68: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7ad6d: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7ad72: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7ad77: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 7ad7c: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 7ad81: 48 83 c4 38 add $0x38,%rsp 0.00 : 7ad85: c3 retq 0.00 : 7ad86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7ad8d: 00 00 00 0.00 : 7ad90: 48 89 df mov %rbx,%rdi 0.00 : 7ad93: 4c 89 fe mov %r15,%rsi 0.00 : 7ad96: 31 ed xor %ebp,%ebp 0.00 : 7ad98: e8 f3 dc ff ff callq 78a90 0.00 : 7ad9d: 48 85 c0 test %rax,%rax 0.00 : 7ada0: 48 89 c3 mov %rax,%rbx 0.00 : 7ada3: 0f 85 a5 fe ff ff jne 7ac4e <__libc_calloc+0x8e> 0.00 : 7ada9: eb b5 jmp 7ad60 <__libc_calloc+0x1a0> 0.00 : 7adab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7adb0: f6 c2 04 test $0x4,%dl 0.00 : 7adb3: 48 8d 05 e6 90 2f 00 lea 0x2f90e6(%rip),%rax # 373ea0 0.00 : 7adba: 0f 85 88 00 00 00 jne 7ae48 <__libc_calloc+0x288> 0.00 : 7adc0: 48 39 d8 cmp %rbx,%rax 0.00 : 7adc3: 0f 84 f8 fe ff ff je 7acc1 <__libc_calloc+0x101> 0.00 : 7adc9: 48 8d 0d 73 10 0c 00 lea 0xc1073(%rip),%rcx # 13be43 <__func__.13972> 0.00 : 7add0: 48 8d 35 6b 0d 0c 00 lea 0xc0d6b(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7add7: 48 8d 3d fa 4d 0c 00 lea 0xc4dfa(%rip),%rdi # 13fbd8 <__PRETTY_FUNCTION__.11129+0x21ff> 0.00 : 7adde: ba f7 0f 00 00 mov $0xff7,%edx 0.00 : 7ade3: e8 d8 b9 ff ff callq 767c0 <__malloc_assert> 0.00 : 7ade8: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 7adec: f6 c2 02 test $0x2,%dl 0.00 : 7adef: 0f 84 d5 fe ff ff je 7acca <__libc_calloc+0x10a> 0.00 : 7adf5: 8b 0d 85 99 2f 00 mov 0x2f9985(%rip),%ecx # 374780 0.00 : 7adfb: 85 c9 test %ecx,%ecx 0.00 : 7adfd: 0f 84 5d ff ff ff je 7ad60 <__libc_calloc+0x1a0> 0.00 : 7ae03: 4c 89 fa mov %r15,%rdx 0.00 : 7ae06: 31 f6 xor %esi,%esi 0.00 : 7ae08: 48 89 ef mov %rbp,%rdi 0.00 : 7ae0b: e8 60 86 00 00 callq 83470 <__GI_memset> 0.00 : 7ae10: e9 4b ff ff ff jmpq 7ad60 <__libc_calloc+0x1a0> 0.00 : 7ae15: 0f 1f 00 nopl (%rax) 0.00 : 7ae18: 48 8d 0d 24 10 0c 00 lea 0xc1024(%rip),%rcx # 13be43 <__func__.13972> 0.00 : 7ae1f: 48 8d 35 1c 0d 0c 00 lea 0xc0d1c(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7ae26: 48 8d 3d b7 0e 0c 00 lea 0xc0eb7(%rip),%rdi # 13bce4 <__PRETTY_FUNCTION__.14063+0x27d> 0.00 : 7ae2d: ba 28 10 00 00 mov $0x1028,%edx 0.00 : 7ae32: e8 89 b9 ff ff callq 767c0 <__malloc_assert> 0.00 : 7ae37: 48 83 fb 09 cmp $0x9,%rbx 0.00 : 7ae3b: 0f 86 c2 fe ff ff jbe 7ad03 <__libc_calloc+0x143> 0.00 : 7ae41: eb 1d jmp 7ae60 <__libc_calloc+0x2a0> 0.00 : 7ae43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7ae48: 4c 89 e8 mov %r13,%rax 0.00 : 7ae4b: 48 25 00 00 00 fc and $0xfffffffffc000000,%rax 0.00 : 7ae51: 48 8b 00 mov (%rax),%rax 0.00 : 7ae54: e9 67 ff ff ff jmpq 7adc0 <__libc_calloc+0x200> 0.00 : 7ae59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7ae60: 4c 89 e2 mov %r12,%rdx 0.00 : 7ae63: 31 f6 xor %esi,%esi 0.00 : 7ae65: 48 89 ef mov %rbp,%rdi 0.00 : 7ae68: e8 03 86 00 00 callq 83470 <__GI_memset> 0.00 : 7ae6d: e9 ee fe ff ff jmpq 7ad60 <__libc_calloc+0x1a0> 0.00 : 7ae72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7ae78: 4c 39 eb cmp %r13,%rbx 0.00 : 7ae7b: 0f 84 0f 01 00 00 je 7af90 <__libc_calloc+0x3d0> 0.00 : 7ae81: be 01 00 00 00 mov $0x1,%esi 0.00 : 7ae86: 31 c0 xor %eax,%eax 0.00 : 7ae88: 83 3d 25 c8 2f 00 00 cmpl $0x0,0x2fc825(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7ae8f: 74 10 je 7aea1 <__libc_calloc+0x2e1> 0.00 : 7ae91: f0 0f b1 35 07 90 2f lock cmpxchg %esi,0x2f9007(%rip) # 373ea0 0.00 : 7ae98: 00 0.00 : 7ae99: 0f 85 75 23 00 00 jne 7d214 <_L_lock_9138> 0.00 : 7ae9f: eb 0d jmp 7aeae <__libc_calloc+0x2ee> 0.00 : 7aea1: 0f b1 35 f8 8f 2f 00 cmpxchg %esi,0x2f8ff8(%rip) # 373ea0 0.00 : 7aea8: 0f 85 66 23 00 00 jne 7d214 <_L_lock_9138> 0.00 : 7aeae: 48 8d 3d eb 8f 2f 00 lea 0x2f8feb(%rip),%rdi # 373ea0 0.00 : 7aeb5: 4c 89 fe mov %r15,%rsi 0.00 : 7aeb8: e8 63 df ff ff callq 78e20 <_int_malloc> 0.00 : 7aebd: 48 89 c5 mov %rax,%rbp 0.00 : 7aec0: 83 3d ed c7 2f 00 00 cmpl $0x0,0x2fc7ed(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7aec7: 74 0f je 7aed8 <__libc_calloc+0x318> 0.00 : 7aec9: f0 ff 0d d0 8f 2f 00 lock decl 0x2f8fd0(%rip) # 373ea0 0.00 : 7aed0: 0f 85 5d 23 00 00 jne 7d233 <_L_unlock_9151> 0.00 : 7aed6: eb 0c jmp 7aee4 <__libc_calloc+0x324> 0.00 : 7aed8: ff 0d c2 8f 2f 00 decl 0x2f8fc2(%rip) # 373ea0 0.00 : 7aede: 0f 85 4f 23 00 00 jne 7d233 <_L_unlock_9151> 0.00 : 7aee4: 48 85 ed test %rbp,%rbp 0.00 : 7aee7: 0f 84 73 fe ff ff je 7ad60 <__libc_calloc+0x1a0> 0.00 : 7aeed: 4c 8d 6d f0 lea -0x10(%rbp),%r13 0.00 : 7aef1: 48 8b 55 f8 mov -0x8(%rbp),%rdx 0.00 : 7aef5: e9 c7 fd ff ff jmpq 7acc1 <__libc_calloc+0x101> 0.00 : 7aefa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7af00: 4c 39 e0 cmp %r12,%rax 0.00 : 7af03: 49 0f 47 c4 cmova %r12,%rax 0.00 : 7af07: e9 d8 fd ff ff jmpq 7ace4 <__libc_calloc+0x124> 0.00 : 7af0c: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 7af11: 4c 89 ff mov %r15,%rdi 0.00 : 7af14: ff d0 callq *%rax 0.00 : 7af16: 48 85 c0 test %rax,%rax 0.00 : 7af19: 48 89 c5 mov %rax,%rbp 0.00 : 7af1c: 0f 84 3e fe ff ff je 7ad60 <__libc_calloc+0x1a0> 0.00 : 7af22: 4c 89 fa mov %r15,%rdx 0.00 : 7af25: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7af2a: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7af2f: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7af34: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7af39: 31 f6 xor %esi,%esi 0.00 : 7af3b: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 7af40: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 7af45: 48 89 c7 mov %rax,%rdi 0.00 : 7af48: 48 83 c4 38 add $0x38,%rsp 0.00 : 7af4c: e9 1f 85 00 00 jmpq 83470 <__GI_memset> 0.00 : 7af51: 48 85 f6 test %rsi,%rsi 0.00 : 7af54: 0f 84 a3 fc ff ff je 7abfd <__libc_calloc+0x3d> 0.00 : 7af5a: 31 d2 xor %edx,%edx 0.00 : 7af5c: 4c 89 f8 mov %r15,%rax 0.00 : 7af5f: 48 f7 f6 div %rsi 0.00 : 7af62: 48 39 f8 cmp %rdi,%rax 0.00 : 7af65: 0f 84 92 fc ff ff je 7abfd <__libc_calloc+0x3d> 0.00 : 7af6b: 48 8b 15 c6 6e 2f 00 mov 0x2f6ec6(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 7af72: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7af79: 00 00 0.00 : 7af7b: 31 ed xor %ebp,%ebp 0.00 : 7af7d: c7 04 10 0c 00 00 00 movl $0xc,(%rax,%rdx,1) 0.00 : 7af84: e9 d7 fd ff ff jmpq 7ad60 <__libc_calloc+0x1a0> 0.00 : 7af89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7af90: be 01 00 00 00 mov $0x1,%esi 0.00 : 7af95: 31 c0 xor %eax,%eax 0.00 : 7af97: 83 3d 16 c7 2f 00 00 cmpl $0x0,0x2fc716(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7af9e: 74 0c je 7afac <__libc_calloc+0x3ec> 0.00 : 7afa0: f0 0f b1 33 lock cmpxchg %esi,(%rbx) 0.00 : 7afa4: 0f 85 a8 22 00 00 jne 7d252 <_L_lock_9248> 0.00 : 7afaa: eb 09 jmp 7afb5 <__libc_calloc+0x3f5> 0.00 : 7afac: 0f b1 33 cmpxchg %esi,(%rbx) 0.00 : 7afaf: 0f 85 9d 22 00 00 jne 7d252 <_L_lock_9248> 0.00 : 7afb5: 48 83 3d 4b 97 2f 00 cmpq $0x0,0x2f974b(%rip) # 374708 0.00 : 7afbc: 00 0.00 : 7afbd: 4c 89 fe mov %r15,%rsi 0.00 : 7afc0: 48 0f 44 dd cmove %rbp,%rbx 0.00 : 7afc4: 48 89 df mov %rbx,%rdi 0.00 : 7afc7: e8 c4 da ff ff callq 78a90 0.00 : 7afcc: 48 89 c3 mov %rax,%rbx 0.00 : 7afcf: 83 3d de c6 2f 00 00 cmpl $0x0,0x2fc6de(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7afd6: 74 0f je 7afe7 <__libc_calloc+0x427> 0.00 : 7afd8: f0 ff 0d c1 8e 2f 00 lock decl 0x2f8ec1(%rip) # 373ea0 0.00 : 7afdf: 0f 85 88 22 00 00 jne 7d26d <_L_unlock_9264> 0.00 : 7afe5: eb 0c jmp 7aff3 <__libc_calloc+0x433> 0.00 : 7afe7: ff 0d b3 8e 2f 00 decl 0x2f8eb3(%rip) # 373ea0 0.00 : 7afed: 0f 85 7a 22 00 00 jne 7d26d <_L_unlock_9264> 0.00 : 7aff3: 48 85 db test %rbx,%rbx 0.00 : 7aff6: 0f 84 64 fd ff ff je 7ad60 <__libc_calloc+0x1a0> 0.00 : 7affc: 4c 89 fe mov %r15,%rsi 0.00 : 7afff: 48 89 df mov %rbx,%rdi 0.00 : 7b002: e8 19 de ff ff callq 78e20 <_int_malloc> 0.00 : 7b007: 48 89 c5 mov %rax,%rbp 0.00 : 7b00a: 83 3d a3 c6 2f 00 00 cmpl $0x0,0x2fc6a3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b011: 74 0b je 7b01e <__libc_calloc+0x45e> 0.00 : 7b013: f0 ff 0b lock decl (%rbx) 0.00 : 7b016: 0f 85 70 22 00 00 jne 7d28c <_L_unlock_9276> 0.00 : 7b01c: eb 08 jmp 7b026 <__libc_calloc+0x466> 0.00 : 7b01e: ff 0b decl (%rbx) 0.00 : 7b020: 0f 85 66 22 00 00 jne 7d28c <_L_unlock_9276> 0.00 : 7b026: e9 b9 fe ff ff jmpq 7aee4 <__libc_calloc+0x324> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d4360 <__select>: 0.00 : d4360: 83 3d 4d 33 2a 00 00 cmpl $0x0,0x2a334d(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : d4367: 75 13 jne d437c <__select_nocancel+0x13> : : 00000000000d4369 <__select_nocancel>: 0.00 : d4369: 49 89 ca mov %rcx,%r10 0.00 : d436c: b8 17 00 00 00 mov $0x17,%eax 0.00 : d4371: 0f 05 syscall 0.00 : d4373: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : d4379: 73 34 jae d43af <__select_nocancel+0x46> ??:0 100.00 : d437b: c3 retq 0.00 : d437c: 48 83 ec 08 sub $0x8,%rsp 0.00 : d4380: e8 ab 3e 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : d4385: 48 89 04 24 mov %rax,(%rsp) 0.00 : d4389: 49 89 ca mov %rcx,%r10 0.00 : d438c: b8 17 00 00 00 mov $0x17,%eax 0.00 : d4391: 0f 05 syscall 0.00 : d4393: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : d4397: 48 89 c2 mov %rax,%rdx 0.00 : d439a: e8 f1 3e 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : d439f: 48 89 d0 mov %rdx,%rax 0.00 : d43a2: 48 83 c4 08 add $0x8,%rsp 0.00 : d43a6: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : d43ac: 73 01 jae d43af <__select_nocancel+0x46> 0.00 : d43ae: c3 retq 0.00 : d43af: 48 8b 0d 82 da 29 00 mov 0x29da82(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d43b6: 31 d2 xor %edx,%edx 0.00 : d43b8: 48 29 c2 sub %rax,%rdx 0.00 : d43bb: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : d43be: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : d43c2: eb ea jmp d43ae <__select_nocancel+0x45> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000530 : 0.00 : 530: 41 57 push %r15 0.00 : 562: 65 48 8b test $0x4,%dl 0.00 : 565: 04 25 jne 588 <__journal_refile_buffer+0x238> 0.00 : 567: 00 00 00 00 testb $0x2,(%r15) 0.00 : 56b: 41 56 jne 588 <__journal_refile_buffer+0x238> 0.00 : 56d: 41 55 41 54 55 48 89 movl $0x0,0x14(%rsp) 0.00 : 574: fd 0.00 : 575: 53 48 83 ec mov 0x6c(%r13),%esi 0.00 : 579: 48 48 test %esi,%esi 0.00 : 57b: 3b b8 jg 590 <__journal_refile_buffer+0x240> 0.00 : 57d: 00 08 ud2 0.00 : 57f: 00 00 jmp 57f <__journal_refile_buffer+0x22f> 0.00 : 581: 4c 8b 2f 4d 8b 7d 00 nopl 0x0(%rax) 0.00 : 588: 0f 85 40 02 00 00 0f movl $0xfffffffb,0x14(%rsp) 0.00 : 58f: b6 0.00 : 590: 57 14 f6 mov 0xc(%rbp),%eax 0.00 : 593: c2 04 75 sub $0x1,%eax 0.00 : 596: 21 41 test %eax,%eax 0.00 : 598: f6 07 02 mov %eax,0xc(%rbp) 0.00 : 59b: 75 1b jle 5b0 <__journal_refile_buffer+0x260> 0.00 : 59d: c7 44 24 14 mov 0x14(%rsp),%eax 0.00 : 5a1: 00 00 00 00 add $0x48,%rsp 0.00 : 5a5: 41 pop %rbx 0.00 : 5a6: 8b pop %rbp 0.00 : 5a7: 75 6c pop %r12 0.00 : 5a9: 85 f6 pop %r13 0.00 : 5ab: 7f 13 pop %r14 0.00 : 5ad: 0f 0b pop %r15 0.00 : 5af: eb retq 0.00 : 5b0: fe 0f 1f 80 lea 0x24(%r15),%rcx 0.00 : 5b4: 00 00 00 00 c7 44 24 mov %gs:0x0,%r12 0.00 : 5bb: 14 fb 0.00 : 5bd: ff ff ff and $0x1,%edx 0.00 : 5c0: 8b 45 0c 83 e8 01 85 mov 0x4a0(%r12),%eax 0.00 : 5c7: c0 0.00 : 5c8: 89 45 0c 7e 13 mov %rcx,0x8(%rsp) 0.00 : 5cd: 8b 44 24 14 48 83 jne 690 <__journal_refile_buffer+0x340> 0.00 : 5d3: c4 48 5b 5d 41 5c 41 mov %gs:0x0,%rax 0.00 : 5da: 5d 41 0.00 : 5dc: 5e 41 5f c3 49 8d 4f movq $0x0,0x800(%rax) 0.00 : 5e3: 24 65 4c 8b 0.00 : 5e7: 24 25 00 00 00 mov 0x8(%rsp),%rdi 0.00 : 5ec: 00 83 e2 01 lea 0x68(%r13),%rbx 0.00 : 5f0: 41 8b 84 24 a0 callq 5f5 <__journal_refile_buffer+0x2a5> ??:0 100.00 : 5f5: 04 00 00 mov %rbx,%rdi 0.00 : 5f8: 48 89 4c 24 08 callq 5fd <__journal_refile_buffer+0x2ad> 0.00 : 5fd: 0f 85 bd mov 0x8(%rbp),%eax 0.00 : 600: 00 00 00 65 sub %eax,0x70(%r13) 0.00 : 604: 48 8b 04 25 mov 0x6c(%r13),%eax 0.00 : 608: 00 00 00 sub $0x1,%eax 0.00 : 60b: 00 48 test %eax,%eax 0.00 : 60d: c7 80 00 08 mov %eax,0x6c(%r13) 0.00 : 611: 00 00 00 00 00 00 je 760 <__journal_refile_buffer+0x410> 0.00 : 617: 48 8b 7c 24 testb $0x1,0x14(%rbp) 0.00 : 61b: 08 49 jne 62e <__journal_refile_buffer+0x2de> 0.00 : 61d: 8d 5d 68 e8 mov 0x70(%r13),%eax 0.00 : 621: 00 00 00 00 48 89 df cmp 0x188(%r15),%eax 0.00 : 628: e8 00 00 00 00 8b jle 738 <__journal_refile_buffer+0x3e8> 0.00 : 62e: 45 08 41 29 mov 0x8(%r13),%r12d 0.00 : 632: 45 70 41 8b 45 incw 0x68(%r13) 0.00 : 637: 6c 83 e8 01 mov 0x8(%r13),%esi 0.00 : 63b: 85 c0 41 mov %r15,%rdi 0.00 : 63e: 89 45 6c 0f 84 callq 643 <__journal_refile_buffer+0x2f3> 0.00 : 643: 49 01 00 00 f6 mov 0x8(%rsp),%rax 0.00 : 648: 45 14 01 75 11 incw 0x24(%r15) 0.00 : 64d: 41 8b 45 70 testb $0x1,0x14(%rbp) 0.00 : 651: 41 3b je 678 <__journal_refile_buffer+0x328> 0.00 : 653: 87 88 01 00 00 0f 8e mov %gs:0x0,%rax 0.00 : 65a: 0a 01 0.00 : 65c: 00 00 45 8b testb $0x8,0x15(%rax) 0.00 : 660: 65 08 jne 678 <__journal_refile_buffer+0x328> 0.00 : 662: 66 41 ff mov %r12d,%esi 0.00 : 665: 45 68 41 mov %r15,%rdi 0.00 : 668: 8b 75 08 4c 89 callq 66d <__journal_refile_buffer+0x31d> 0.00 : 66d: ff e8 00 00 mov %eax,0x14(%rsp) 0.00 : 671: 00 00 48 8b 44 24 08 nopl 0x0(%rax) 0.00 : 678: 66 41 ff 47 24 f6 45 mov 0x0(%rip),%rdi # 67f <__journal_refile_buffer+0x32f> 0.00 : 67f: 14 01 74 mov %rbp,%rsi 0.00 : 682: 25 65 48 8b 04 callq 687 <__journal_refile_buffer+0x337> 0.00 : 687: 25 00 00 00 00 jmpq 59d <__journal_refile_buffer+0x24d> 0.00 : 68c: f6 40 15 08 nopl 0x0(%rax) 0.00 : 690: 75 16 44 89 e6 4c 89 cmp %eax,0x214(%r15) 0.00 : 697: ff e8 00 00 00 00 je 5d3 <__journal_refile_buffer+0x283> 0.00 : 69d: 89 44 24 14 0f 1f 80 mov %eax,0x214(%r15) 0.00 : 6a4: 00 00 00 mov %rcx,%rdi 0.00 : 6a7: 00 48 8b 3d 00 callq 6ac <__journal_refile_buffer+0x35c> 0.00 : 6ac: 00 00 00 48 89 ee e8 mov 0x218(%r15),%rax 0.00 : 6b3: 00 00 00 00 e9 mov 0x8(%rsp),%rcx 0.00 : 6b8: 11 ff ff ff 0f mov %rax,0x18(%rsp) 0.00 : 6bd: 1f 40 00 41 39 incw 0x24(%r15) 0.00 : 6c2: 87 14 02 00 00 callq 6c7 <__journal_refile_buffer+0x377> 0.00 : 6c7: 0f 84 36 ff ff mov $0x1,%edi 0.00 : 6cc: ff 41 89 mov %rax,%rbx 0.00 : 6cf: 87 14 02 00 00 48 89 sub 0x90(%r13),%rbx 0.00 : 6d6: cf e8 00 00 00 callq 6db <__journal_refile_buffer+0x38b> 0.00 : 6db: 00 49 8b 87 18 02 imul $0x3e8,%eax,%eax 0.00 : 6e1: 00 00 48 mov %eax,%r14d 0.00 : 6e4: 8b 4c 24 08 48 cmp 0x18(%rsp),%r14 0.00 : 6e9: 89 44 24 18 66 41 cmova 0x18(%rsp),%r14 0.00 : 6ef: ff 47 24 cmp %r14,%rbx 0.00 : 6f2: e8 00 00 00 00 bf jae 5d3 <__journal_refile_buffer+0x283> 0.00 : 6f8: 01 00 00 00 48 callq 6fd <__journal_refile_buffer+0x3ad> 0.00 : 6fd: 89 c3 49 2b lea (%r14,%rax,1),%rax 0.00 : 701: 9d 90 00 00 00 e8 00 movq $0x2,0x28(%rsp) 0.00 : 708: 00 00 0.00 : 70a: 00 69 c0 e8 03 mov %rax,0x30(%rsp) 0.00 : 70f: 00 00 41 89 c6 mov 0x28(%rsp),%rax 0.00 : 714: 4c 3b 74 24 xchg %rax,(%r12) 0.00 : 718: 18 4c 0f 47 74 lea 0x30(%rsp),%rdi 0.00 : 71d: 24 18 xor %esi,%esi 0.00 : 71f: 4c 39 f3 0f 83 mov %rax,0x28(%rsp) 0.00 : 724: db fe ff ff e8 mov 0x28(%rsp),%rax 0.00 : 729: 00 00 00 00 49 callq 72e <__journal_refile_buffer+0x3de> 0.00 : 72e: 8d 04 06 48 c7 jmpq 5d3 <__journal_refile_buffer+0x283> 0.00 : 733: 44 24 28 02 00 nopl 0x0(%rax,%rax,1) 0.00 : 738: 00 00 48 89 44 24 30 mov 0x0(%rip),%rax # 73f <__journal_refile_buffer+0x3ef> 0.00 : 73f: 48 8b 44 24 28 49 87 cmp 0x88(%r13),%rax 0.00 : 746: 04 24 48 8d 7c 24 jns 62e <__journal_refile_buffer+0x2de> 0.00 : 74c: 30 31 f6 48 89 incw 0x68(%r13) 0.00 : 751: 44 24 28 48 8b mov 0x8(%rsp),%rcx 0.00 : 756: 44 24 28 e8 00 incw 0x24(%r15) 0.00 : 75b: 00 00 00 e9 a0 jmpq 678 <__journal_refile_buffer+0x328> 0.00 : 760: fe ff ff 0f 1f 44 00 lea 0xe0(%r15),%rdi 0.00 : 767: 00 48 xor %ecx,%ecx 0.00 : 769: 8b 05 00 00 00 mov $0x1,%edx 0.00 : 76e: 00 49 3b 85 88 mov $0x3,%esi 0.00 : 773: 00 00 00 0f 89 callq 778 <__journal_refile_buffer+0x428> 0.00 : 778: e2 fe ff ff mov 0x28(%r15),%ecx 0.00 : 77c: 66 41 test %ecx,%ecx 0.00 : 77e: ff 45 68 48 8b 4c je 617 <__journal_refile_buffer+0x2c7> 0.00 : 784: 24 08 66 41 lea 0x68(%r15),%rdi 0.00 : 788: ff 47 xor %ecx,%ecx 0.00 : 78a: 24 e9 18 ff ff mov $0x1,%edx 0.00 : 78f: ff 49 8d bf e0 mov $0x3,%esi 0.00 : 794: 00 00 00 31 c9 callq 799 <__journal_refile_buffer+0x449> 0.00 : 799: ba 01 00 00 00 jmpq 617 <__journal_refile_buffer+0x2c7> 0.00 : 79e: be 03 ud2 0.00 : 7a0: 00 00 jmp 7a0 <__journal_refile_buffer+0x450> : 7a2: 00 e8 00 00 00 00 41 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 7a9: 8b 4f 28 85 c9 0f 84 : 7b0: 93 push %rbp : 7b1: fe ff ff mov %rdi,%rbp : 7b4: 49 push %rbx : 7b5: 8d 7f 68 31 sub $0x8,%rsp : 7b9: c9 ba 01 mov 0x28(%rdi),%edi : 7bc: 00 00 test %edi,%edi : 7be: 00 be je 7f8 <__journal_refile_buffer+0x4a8> : 7c0: 03 00 00 00 lea 0x30(%rbp),%rdi : 7c4: e8 00 00 00 lea 0x24(%rbp),%rbx : 7c8: 00 e9 79 fe ff callq 7cd <__journal_refile_buffer+0x47d> : 7cd: ff 0f 0b mov %rbx,%rdi : 7d0: eb fe 66 66 66 callq 7d5 <__journal_refile_buffer+0x485> Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000009d0 : ??:0 50.00 : 9d0: 41 57 push %r15 0.00 : a02: 41 56 41 55 mov %eax,0x20(%rsp) 0.00 : a06: 41 54 49 89 fc 55 53 lea 0x198(%rdi),%rax 0.00 : a0d: 48 83 ec 68 48 mov %rax,0x28(%rsp) 0.00 : a12: 89 74 24 18 44 8b 76 mov %gs:0x0,%rax 0.00 : a19: 08 8b 0.00 : a1b: 8f 88 01 00 00 mov %rax,0x10(%rsp) 0.00 : a20: 41 39 ce 0f 8f lea 0x30(%rsp),%rax 0.00 : a25: 18 03 00 00 add $0x18,%rax 0.00 : a29: 48 8d 47 68 4c mov %rax,0x8(%rsp) 0.00 : a2e: 8d 7f 24 xor %r13d,%r13d 0.00 : a31: 48 89 44 24 20 48 cmpq $0x0,0x50(%r12) 0.00 : a37: 8d 87 98 01 00 00 je d3c <__journal_refile_buffer+0x9ec> 0.00 : a3d: 48 89 44 mov %r15,%rdi 0.00 : a40: 24 28 65 48 8b callq a45 <__journal_refile_buffer+0x6f5> 0.00 : a45: 04 25 00 00 mov (%r12),%rax 0.00 : a49: 00 00 test $0x2,%al 0.00 : a4b: 48 89 je ac5 <__journal_refile_buffer+0x775> 0.00 : a4d: 44 24 10 48 8d jmpq bc8 <__journal_refile_buffer+0x878> 0.00 : a52: 44 24 30 48 83 c0 nopw 0x0(%rax,%rax,1) 0.00 : a58: 18 48 89 44 cmpl $0x1,0xc(%rbp) 0.00 : a5c: 24 08 45 31 nopl 0x0(%rax) 0.00 : a60: ed 49 83 7c 24 50 je b7f <__journal_refile_buffer+0x82f> 0.00 : a66: 00 0f 84 ff lea 0x68(%rbp),%rbx 0.00 : a6a: 02 00 00 mov %rbx,%rdi 0.00 : a6d: 4c 89 ff nopl (%rax) 0.00 : a70: e8 00 00 00 00 callq a75 <__journal_refile_buffer+0x725> 0.00 : a75: 49 8b 04 mov %r14d,%eax 0.00 : a78: 24 a8 02 add 0x70(%rbp),%eax 0.00 : a7b: 74 78 e9 76 01 00 00 cmp 0x188(%r12),%eax 0.00 : a82: 66 0.00 : a83: 0f 1f 44 00 00 83 jg c70 <__journal_refile_buffer+0x920> 0.00 : a89: 7d 0c 01 mov %r12,%rdi 0.00 : a8c: 0f 1f 40 00 0f callq a91 <__journal_refile_buffer+0x741> 0.00 : a91: 84 19 01 00 00 mov 0x58(%r12),%rcx 0.00 : a96: 48 8d 5d 68 48 89 df mov 0x188(%r12),%edx 0.00 : a9d: 0f 0.00 : a9e: 1f 00 e8 test %rcx,%rcx 0.00 : aa1: 00 00 je aa6 <__journal_refile_buffer+0x756> 0.00 : aa3: 00 00 44 add 0x70(%rcx),%edx 0.00 : aa6: 89 f0 cmp %edx,%eax 0.00 : aa8: 03 45 70 41 3b 84 jge cd0 <__journal_refile_buffer+0x980> 0.00 : aae: 24 88 01 incw (%rbx) 0.00 : ab1: 00 00 0f mov %r12,%rdi 0.00 : ab4: 8f e7 01 00 00 callq ab9 <__journal_refile_buffer+0x769> 0.00 : ab9: 4c 89 e7 e8 mov (%r12),%rax 0.00 : abd: 00 00 test $0x2,%al 0.00 : abf: 00 00 49 8b 4c 24 jne bc8 <__journal_refile_buffer+0x878> 0.00 : ac5: 58 41 8b 94 24 mov 0x8(%r12),%ebp 0.00 : aca: 88 01 test %ebp,%ebp 0.00 : acc: 00 00 je ad6 <__journal_refile_buffer+0x786> 0.00 : ace: 48 85 test $0x4,%al 0.00 : ad0: c9 74 03 03 51 70 je bc8 <__journal_refile_buffer+0x878> 0.00 : ad6: 39 d0 0f 8d 22 mov 0x28(%r12),%ebx 0.00 : adb: 02 00 test %ebx,%ebx 0.00 : add: 00 66 ff 03 4c 89 jne bf0 <__journal_refile_buffer+0x8a0> 0.00 : ae3: e7 e8 00 00 00 mov 0x50(%r12),%rbp 0.00 : ae8: 00 49 8b test %rbp,%rbp 0.00 : aeb: 04 24 a8 02 0f 85 jne a58 <__journal_refile_buffer+0x708> 0.00 : af1: 03 01 00 test %r13,%r13 0.00 : af4: 00 41 8b 6c 24 08 je cf7 <__journal_refile_buffer+0x9a7> 0.00 : afa: 85 ed 74 08 mov %r12,0x0(%r13) 0.00 : afe: a8 04 0f 84 f2 00 00 movl $0x0,0xc(%r13) 0.00 : b05: 00 0.00 : b06: 41 8b 5c 24 28 callq b0b <__journal_refile_buffer+0x7bb> 0.00 : b0b: 85 db 0f 85 0d 01 00 mov %rax,0x90(%r13) 0.00 : b12: 00 49 8b 6c 24 50 48 mov 0x15c(%r12),%eax 0.00 : b19: 85 0.00 : b1a: ed 0f 85 67 mov %eax,0x8(%r13) 0.00 : b1e: ff ff ff add $0x1,%eax 0.00 : b21: 4d 85 ed 0f 84 fd 01 mov %eax,0x15c(%r12) 0.00 : b28: 00 0.00 : b29: 00 4d 89 65 00 41 c7 mov 0x0(%rip),%rdi # b30 <__journal_refile_buffer+0x7e0> 0.00 : b30: 45 0c 00 00 00 00 e8 add 0x190(%r12),%rdi 0.00 : b37: 00 0.00 : b38: 00 00 00 49 89 85 90 movl $0x0,0x68(%r13) 0.00 : b3f: 00 0.00 : b40: 00 00 41 8b 84 24 5c mov %rdi,0x88(%r13) 0.00 : b47: 01 00 00 41 89 callq b4c <__journal_refile_buffer+0x7fc> 0.00 : b4c: 45 08 83 c0 01 mov 0x28(%rsp),%rdi 0.00 : b51: 41 89 84 24 5c 01 00 mov %rax,0x1a8(%r12) 0.00 : b58: 00 0.00 : b59: 48 8b 3d 00 00 callq b5e <__journal_refile_buffer+0x80e> 0.00 : b5e: 00 00 49 03 bc 24 cmpq $0x0,0x50(%r12) 0.00 : b64: 90 01 00 00 41 c7 jne d00 <__journal_refile_buffer+0x9b0> 0.00 : b6a: 45 68 00 mov %r13,%rbp 0.00 : b6d: 00 00 00 49 89 mov %r13,0x50(%r12) 0.00 : b72: bd 88 00 xor %r13d,%r13d 0.00 : b75: 00 00 e8 00 cmpl $0x1,0xc(%rbp) 0.00 : b79: 00 00 00 48 8b 7c jne a66 <__journal_refile_buffer+0x716> 0.00 : b7f: 24 28 49 89 84 mov 0x10(%rsp),%rax 0.00 : b84: 24 a8 01 00 00 mov 0x20(%rsp),%rdi 0.00 : b89: e8 00 00 00 00 lea 0x30(%rsp),%rsi 0.00 : b8e: 49 83 7c 24 50 mov $0x2,%edx 0.00 : b93: 00 0f 85 96 01 00 00 movq $0x0,0x30(%rsp) 0.00 : b9a: 4c 89 0.00 : b9c: ed 4d 89 6c 24 50 45 movq $0x0,0x40(%rsp) 0.00 : ba3: 31 ed 0.00 : ba5: 83 7d 0c 01 0f mov %rax,0x38(%rsp) 0.00 : baa: 85 e7 fe ff ff mov 0x8(%rsp),%rax 0.00 : baf: 48 8b 44 24 10 mov %rax,0x48(%rsp) 0.00 : bb4: 48 8b 7c 24 20 mov %rax,0x50(%rsp) 0.00 : bb9: 48 8d 74 24 30 callq bbe <__journal_refile_buffer+0x86e> 0.00 : bbe: ba 02 00 00 00 jmpq cbd <__journal_refile_buffer+0x96d> 0.00 : bc3: 48 c7 44 24 30 nopl 0x0(%rax,%rax,1) 0.00 : bc8: 00 00 00 00 48 c7 incw 0x24(%r12) 0.00 : bce: 44 24 40 00 00 mov $0xffffffe2,%ebx 0.00 : bd3: 00 00 48 test %r13,%r13 0.00 : bd6: 89 44 24 38 48 8b jne d04 <__journal_refile_buffer+0x9b4> 0.00 : bdc: 44 24 08 48 add $0x68,%rsp 0.00 : be0: 89 44 mov %ebx,%eax 0.00 : be2: 24 pop %rbx 0.00 : be3: 48 pop %rbp 0.00 : be4: 48 89 pop %r12 0.00 : be6: 44 24 pop %r13 0.00 : be8: 50 e8 pop %r14 0.00 : bea: 00 00 pop %r15 0.00 : bec: 00 retq 0.00 : bed: 00 e9 fa nopl (%rax) 0.00 : bf0: 00 00 00 0f incw (%r15) 0.00 : bf4: 1f 44 00 00 66 mov 0x28(%r12),%r11d 0.00 : bf9: 41 ff 44 test %r11d,%r11d 0.00 : bfc: 24 24 bb e2 ff ff je a3d <__journal_refile_buffer+0x6ed> 0.00 : c02: ff 4d 85 ed 0f mov 0x10(%rsp),%rax 0.00 : c07: 85 28 01 00 00 48 83 movq $0x0,0x30(%rsp) 0.00 : c0e: c4 68 0.00 : c10: 89 d8 5b 5d 41 5c 41 movq $0x0,0x40(%rsp) 0.00 : c17: 5d 41 0.00 : c19: 5e 41 5f c3 0f mov %rax,0x38(%rsp) 0.00 : c1e: 1f 00 66 41 ff mov 0x8(%rsp),%rax 0.00 : c23: 07 45 8b 5c 24 mov %rax,0x48(%rsp) 0.00 : c28: 28 45 85 db 0f mov %rax,0x50(%rsp) 0.00 : c2d: 84 3b jmp c35 <__journal_refile_buffer+0x8e5> 0.00 : c2f: fe nop 0.00 : c30: ff ff 48 8b 44 callq c35 <__journal_refile_buffer+0x8e5> 0.00 : c35: 24 10 48 c7 44 mov 0x20(%rsp),%rdi 0.00 : c3a: 24 30 00 00 00 lea 0x30(%rsp),%rsi 0.00 : c3f: 00 48 c7 44 24 mov $0x2,%edx 0.00 : c44: 40 00 00 00 00 callq c49 <__journal_refile_buffer+0x8f9> 0.00 : c49: 48 89 44 24 38 mov 0x28(%r12),%r10d 0.00 : c4e: 48 8b 44 test %r10d,%r10d 0.00 : c51: 24 08 jne c30 <__journal_refile_buffer+0x8e0> 0.00 : c53: 48 89 44 24 48 mov 0x20(%rsp),%rdi 0.00 : c58: 48 89 44 24 50 lea 0x30(%rsp),%rsi 0.00 : c5d: eb 06 90 e8 00 callq c62 <__journal_refile_buffer+0x912> 0.00 : c62: 00 00 00 48 8b jmpq a3d <__journal_refile_buffer+0x6ed> 0.00 : c67: 7c 24 20 48 8d 74 24 nopw 0x0(%rax,%rax,1) 0.00 : c6e: 30 ba 0.00 : c70: 02 00 00 00 e8 mov 0x10(%rsp),%rax 0.00 : c75: 00 00 00 00 45 8b 54 movq $0x0,0x30(%rsp) 0.00 : c7c: 24 28 0.00 : c7e: 45 85 d2 75 dd 48 8b movq $0x0,0x40(%rsp) 0.00 : c85: 7c 24 0.00 : c87: 20 48 8d 74 24 mov %rax,0x38(%rsp) 0.00 : c8c: 30 e8 00 00 00 mov 0x8(%rsp),%rax 0.00 : c91: 00 e9 d6 fd ff mov %rax,0x48(%rsp) 0.00 : c96: ff 66 0f 1f 84 mov %rax,0x50(%rsp) 0.00 : c9b: 00 00 00 incw (%rbx) 0.00 : c9e: 00 00 48 8b 44 mov 0x20(%rsp),%rdi 0.00 : ca3: 24 10 48 c7 44 lea 0x30(%rsp),%rsi 0.00 : ca8: 24 30 00 00 00 mov $0x2,%edx 0.00 : cad: 00 48 c7 44 24 callq cb2 <__journal_refile_buffer+0x962> 0.00 : cb2: 40 00 00 mov 0x8(%rbp),%esi 0.00 : cb5: 00 00 48 mov %r12,%rdi 0.00 : cb8: 89 44 24 38 48 callq cbd <__journal_refile_buffer+0x96d> 0.00 : cbd: 8b 44 24 08 incw (%r15) 0.00 : cc1: 48 89 44 24 48 callq cc6 <__journal_refile_buffer+0x976> 0.00 : cc6: 48 89 jmp c53 <__journal_refile_buffer+0x903> 0.00 : cc8: 44 24 50 66 ff 03 48 nopl 0x0(%rax,%rax,1) 0.00 : ccf: 8b 0.00 : cd0: 7c 24 20 48 8d mov 0x18(%rsp),%rax 0.00 : cd5: 74 24 30 mov %rbp,(%rax) 0.00 : cd8: ba 02 00 00 add %r14d,0x70(%rbp) 0.00 : cdc: 00 e8 00 00 addl $0x1,0x6c(%rbp) 0.00 : ce0: 00 00 8b 75 08 4c 89 addl $0x1,0x98(%rbp) 50.00 : ce7: e7 e8 00 incw (%rbx) 0.00 : cea: 00 00 00 66 41 ff incw 0x24(%r12) 0.00 : cf0: 07 e8 xor %ebx,%ebx 0.00 : cf2: 00 00 00 00 eb jmpq bd3 <__journal_refile_buffer+0x883> 0.00 : cf7: 8b 0f 1f 84 incw (%r15) 0.00 : cfb: 00 00 00 00 00 jmpq a2e <__journal_refile_buffer+0x6de> 0.00 : d00: 48 8b ud2 0.00 : d02: 44 24 jmp d02 <__journal_refile_buffer+0x9b2> 0.00 : d04: 18 48 89 mov %r13,%rdi 0.00 : d07: 28 44 01 75 70 callq d0c <__journal_refile_buffer+0x9bc> 0.00 : d0c: 83 45 6c 01 83 jmpq bdc <__journal_refile_buffer+0x88c> 0.00 : d11: 85 98 00 00 00 01 66 mov %gs:0x0,%rsi 0.00 : d18: ff 03 0.00 : d1a: 66 41 ff mov %r14d,%edx 0.00 : d1d: 44 24 24 31 db e9 dc add $0x648,%rsi 0.00 : d24: fe ff ff 66 41 ff 07 mov $0x0,%rdi 0.00 : d2b: e9 2e xor %eax,%eax 0.00 : d2d: fd ff ff 0f 0b mov $0xffffffe4,%ebx 0.00 : d32: eb fe 4c 89 ef callq d37 <__journal_refile_buffer+0x9e7> 0.00 : d37: e8 00 00 00 00 jmpq bdc <__journal_refile_buffer+0x88c> 0.00 : d3c: e9 cb fe ff ff 65 48 mov 0x0(%rip),%rsi # d43 <__journal_refile_buffer+0x9f3> 0.00 : d43: 8b 34 25 00 00 mov $0x8850,%edx 0.00 : d48: 00 00 44 89 f2 mov $0xa0,%edi 0.00 : d4d: 48 81 c6 48 06 callq d52 <__journal_refile_buffer+0xa02> 0.00 : d52: 00 00 48 test %rax,%rax 0.00 : d55: c7 c7 00 mov %rax,%r13 0.00 : d58: 00 00 00 31 c0 bb jne a3d <__journal_refile_buffer+0x6ed> 0.00 : d5e: e4 ff ff ff e8 mov $0xfffffff4,%ebx 0.00 : d63: 00 00 00 00 e9 jmpq bdc <__journal_refile_buffer+0x88c> : d68: a0 fe ff ff 48 8b 35 nopl 0x0(%rax,%rax,1) : d6f: 00 : d70: 00 00 00 ba sub $0x38,%rsp : d74: 50 88 00 00 bf mov %rbp,0x10(%rsp) : d79: a0 00 00 00 e8 mov %r15,0x30(%rsp) : d7e: 00 00 00 mov %rdi,%rbp : d81: 00 48 85 c0 49 mov %rbx,0x8(%rsp) : d86: 89 c5 0f 85 df mov %r12,0x18(%rsp) : d8b: fc ff ff mov %esi,%r15d : d8e: bb f4 ff ff ff mov %r13,0x20(%rsp) : d93: e9 74 fe ff ff mov %r14,0x28(%rsp) Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001e50 : 0.00 : 1e50: 41 57 push %r15 0.00 : 1e82: 41 56 add %al,(%rax) 0.00 : 1e84: 41 55 add %al,(%rax) 0.00 : 1e86: 41 54 49 mov %rax,%r15 0.00 : 1e89: 89 fc 55 53 48 lock btsl $0x14,(%rbx) 0.00 : 1e8e: 89 f3 sbb %eax,%eax 0.00 : 1e90: 48 83 test %eax,%eax 0.00 : 1e92: ec 18 je 1eb7 0.00 : 1e94: f6 47 14 04 nopl 0x0(%rax) 0.00 : 1e98: 48 8b 07 4c 8b 30 0f nopl 0x0(%rax,%rax,1) 0.00 : 1e9f: 85 0.00 : 1ea0: cc 00 pause 0.00 : 1ea2: 00 00 41 mov (%rbx),%rax 0.00 : 1ea5: f6 06 02 0f 85 test $0x100000,%eax 0.00 : 1eaa: c2 00 jne 1ea0 0.00 : 1eac: 00 00 48 89 f7 lock btsl $0x14,(%rbx) 0.00 : 1eb1: e8 00 sbb %eax,%eax 0.00 : 1eb3: 00 00 test %eax,%eax 0.00 : 1eb5: 00 49 jne 1e98 0.00 : 1eb7: 89 c7 f0 0f ba 2b 14 lea 0x14c(%r14),%rax 0.00 : 1ebe: 19 c0 85 mov %rax,%rdi 0.00 : 1ec1: c0 74 23 0f 1f mov %rax,0x8(%rsp) 0.00 : 1ec6: 40 00 0f 1f 84 callq 1ecb 0.00 : 1ecb: 00 00 00 mov (%rbx),%rax 0.00 : 1ece: 00 00 test $0x20,%al 0.00 : 1ed0: f3 90 je 1f0d 0.00 : 1ed2: 48 8b 03 a9 mov 0x28(%r15),%rax 0.00 : 1ed6: 00 00 10 test %rax,%rax 0.00 : 1ed9: 00 75 f4 f0 0f ba je 2053 0.00 : 1edf: 2b 14 19 xor %r8d,%r8d 0.00 : 1ee2: c0 85 c0 75 cmp (%r12),%rax 0.00 : 1ee6: e1 49 8d 86 lea 0x2(%rbx),%rdx 0.00 : 1eea: 4c 01 00 00 48 mov %rdx,0x10(%rsp) 0.00 : 1eef: 89 c7 48 89 44 24 je 1f9a 0.00 : 1ef5: 08 e8 00 00 cmp 0x58(%r14),%rax 0.00 : 1ef9: 00 00 48 8b 03 a8 jne 2069 0.00 : 1eff: 20 74 3b 49 mov 0xc(%r15),%eax 0.00 : 1f03: 8b 47 28 cmp $0x1,%eax 0.00 : 1f06: 48 85 jbe 1f53 0.00 : 1f08: c0 0f 84 cmp $0x8,%eax 0.00 : 1f0b: 74 01 je 1f53 0.00 : 1f0d: 00 00 45 31 lea 0x2(%rbx),%r13 0.00 : 1f11: c0 49 3b xor %r8d,%r8d 0.00 : 1f14: 04 24 xor %ebp,%ebp 0.00 : 1f16: 48 8d 53 02 48 mov 0x8(%rsp),%rax 0.00 : 1f1b: 89 54 24 10 0f 84 a5 incw 0x14c(%r14) 0.00 : 1f22: 00 0.00 : 1f23: 00 00 49 3b 46 58 lock andb $0xef,0x0(%r13) ??:0 100.00 : 1f29: 0f 85 6a test %r8d,%r8d 0.00 : 1f2c: 01 00 00 41 8b 47 jne 1fe6 0.00 : 1f32: 0c 83 f8 mov %r15,%rdi 0.00 : 1f35: 01 76 4b 83 f8 callq 1f3a 0.00 : 1f3a: 08 74 jmp 1f42 0.00 : 1f3c: 46 4c 8d 6b nopl 0x0(%rax) 0.00 : 1f40: 02 45 xor %ebp,%ebp 0.00 : 1f42: 31 c0 31 ed add $0x18,%rsp 0.00 : 1f46: 48 8b mov %ebp,%eax 0.00 : 1f48: 44 pop %rbx 0.00 : 1f49: 24 pop %rbp 0.00 : 1f4a: 08 66 pop %r12 0.00 : 1f4c: 41 ff pop %r13 0.00 : 1f4e: 86 4c pop %r14 0.00 : 1f50: 01 00 pop %r15 0.00 : 1f52: 00 retq 0.00 : 1f53: f0 41 80 mov (%rbx),%rax 0.00 : 1f56: 65 00 ef 45 lea 0x2(%rbx),%rdx 0.00 : 1f5a: 85 c0 0f xor %r8d,%r8d 0.00 : 1f5d: 85 b4 00 00 00 mov %rdx,0x10(%rsp) 0.00 : 1f62: 4c 89 test $0x2,%al 0.00 : 1f64: ff e8 00 00 00 00 jne 1fff 0.00 : 1f6a: eb 06 0f mov (%rbx),%rax 0.00 : 1f6d: 1f 40 00 31 ed mov 0x10(%rsp),%r13 0.00 : 1f72: 48 83 c4 18 89 mov $0xfffffffb,%ebp 0.00 : 1f77: e8 5b test $0x1,%al 0.00 : 1f79: 5d 41 je 1f16 0.00 : 1f7b: 5c 41 5d 41 5e cmpq $0x0,0x28(%r15) 0.00 : 1f80: 41 5f je 1f9a 0.00 : 1f82: c3 48 8b mov %r15,%rdi 0.00 : 1f85: 03 48 8d 53 mov %r8d,(%rsp) 0.00 : 1f89: 02 45 31 c0 48 callq 40 0.00 : 1f8e: 89 54 24 10 mov (%r12),%rax 0.00 : 1f92: a8 02 0f 85 mov %rax,0x28(%r15) 0.00 : 1f96: 95 00 00 00 mov (%rsp),%r8d 0.00 : 1f9a: 48 8b 03 4c mov 0xc(%r15),%eax 0.00 : 1f9e: 8b 6c 24 cmp $0x1,%eax 0.00 : 1fa1: 10 bd je 1ff3 0.00 : 1fa3: fb ff ff cmp $0x8,%eax 0.00 : 1fa6: ff a8 je 1ff3 0.00 : 1fa8: 01 74 9b cmp $0x5,%eax 0.00 : 1fab: 49 83 7f 28 00 74 je 206d 0.00 : 1fb1: 18 4c 89 mov %r15,%rdi 0.00 : 1fb4: ff 44 89 04 mov %r8d,(%rsp) 0.00 : 1fb8: 24 e8 xor %ebp,%ebp 0.00 : 1fba: b2 e0 ff ff 49 callq 40 0.00 : 1fbf: 8b 04 24 49 mov (%r12),%rax 0.00 : 1fc3: 89 47 28 44 8b mov $0x1,%edx 0.00 : 1fc8: 04 24 41 mov %r15,%rdi 0.00 : 1fcb: 8b 47 0c 83 mov %rax,0x28(%r15) 0.00 : 1fcf: f8 01 74 50 mov (%r12),%rsi 0.00 : 1fd3: 83 f8 08 74 4b callq 1fd8 0.00 : 1fd8: 83 f8 05 0f 84 mov 0x10(%rsp),%r13 0.00 : 1fdd: bc 00 00 00 mov (%rsp),%r8d 0.00 : 1fe1: 4c 89 ff 44 89 jmpq 1f16 0.00 : 1fe6: 04 24 31 mov %rbx,%rdi 0.00 : 1fe9: ed e8 81 e0 ff callq 1fee 0.00 : 1fee: ff 49 8b 04 24 jmpq 1f32 0.00 : 1ff3: ba 01 00 00 00 mov 0x10(%rsp),%r13 0.00 : 1ff8: 4c 89 xor %ebp,%ebp 0.00 : 1ffa: ff 49 89 47 28 jmpq 1f16 0.00 : 1fff: 49 8b 34 24 lock incl 0x60(%rbx) 0.00 : 2003: e8 00 00 00 00 mov 0x8(%rsp),%rax 0.00 : 2008: 4c 8b 6c 24 10 44 8b incw 0x14c(%r14) 0.00 : 200f: 04 0.00 : 2010: 24 e9 30 ff lea 0x2(%rbx),%rdx 0.00 : 2014: ff ff 48 89 df mov %rdx,0x10(%rsp) 0.00 : 2019: e8 00 00 mov %rdx,%r13 0.00 : 201c: 00 00 e9 3f ff lock andb $0xef,0x2(%rbx) 0.00 : 2021: ff ff 4c mov %rbx,%rdi 0.00 : 2024: 8b 6c xor %ebp,%ebp 0.00 : 2026: 24 10 31 ed e9 callq 202b 0.00 : 202b: 17 ff ff mov %rbx,%rdi 0.00 : 202e: ff f0 ff 43 60 callq 10 0.00 : 2033: 48 8b 44 24 08 mov 0x8(%rsp),%rdi 0.00 : 2038: 66 41 ff 86 4c callq 203d 0.00 : 203d: 01 00 00 mov (%rbx),%rax 0.00 : 2040: 48 8d 53 02 48 89 mov $0x1,%r8d 0.00 : 2046: 54 24 test $0x20,%al 0.00 : 2048: 10 49 89 d5 f0 80 je 1f16 0.00 : 204e: 63 02 ef 48 89 jmpq 1f6a 0.00 : 2053: df 31 ed e8 mov (%r12),%rsi 0.00 : 2057: 00 00 00 00 48 mov $0x1,%edx 0.00 : 205c: 89 df e8 mov %r15,%rdi 0.00 : 205f: dd df ff ff 48 callq 2064 0.00 : 2064: 8b 7c 24 08 e8 jmpq 1f0d 0.00 : 2069: 00 00 ud2 0.00 : 206b: 00 00 jmp 206b 0.00 : 206d: 48 8b ud2 0.00 : 206f: 03 41 jmp 206f : 2071: b8 01 00 00 00 a8 20 data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 2078: 0f 84 c8 fe ff ff e9 : 207f: 17 : 2080: ff ff push %r15 : 2082: ff 49 push %r14 : 2084: 8b 34 24 mov %rdi,%r14 : 2087: ba 01 push %r13 : 2089: 00 00 push %r12 : 208b: 00 push %rbp : 208c: 4c push %rbx : 208d: 89 ff e8 mov %rsi,%rbx : 2090: 00 00 00 00 sub $0x8,%rsp : 2094: e9 a4 fe mov (%rdi),%r12 : 2097: ff ff 0f mov %rsi,%rdi : 209a: 0b eb fe 0f mov (%r12),%r13 : 209e: 0b eb fe 66 66 callq 20a3 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000120 : 0.00 : 120: 48 83 ec 08 sub $0x8,%rsp 0.00 : 154: 4c rex 0.00 : 155: 8b 97 38 03 sub $0x1,%rax 0.00 : 159: 00 00 41 and %rax,%rcx 0.00 : 15c: 89 f1 49 89 mov 0x70(%r10),%rax 0.00 : 160: d3 49 8b 42 mov (%rax,%r8,8),%rdx 0.00 : 164: 48 49 39 test %rdx,%rdx 0.00 : 167: c1 73 je 1a6 0.00 : 169: 4e 48 8b test %r11,%r11 0.00 : 16c: 97 38 03 00 mov 0x28(%rdx),%rax ??:0 100.00 : 170: 00 89 je 175 0.00 : 172: f0 8b 8a mov %rdx,(%r11) 0.00 : 175: 98 00 00 00 shl $0x5,%rcx 0.00 : 179: d3 e8 4c add %rcx,%rax 0.00 : 17c: 89 c9 41 89 add $0x8,%rsp 0.00 : 180: c0 retq 0.00 : 181: 48 8b 42 40 48 83 e8 nopl 0x0(%rax) 0.00 : 188: 01 48 21 mov %rax,%r8 0.00 : 18b: c1 49 mov %esi,%ecx 0.00 : 18d: 8b 42 xor %eax,%eax 0.00 : 18f: 70 4a 8b 14 c0 48 85 mov $0x0,%rdx 0.00 : 196: d2 74 3d 4d 85 db 48 mov $0x0,%rsi 0.00 : 19d: 8b 42 28 74 03 callq 1a2 0.00 : 1a2: 49 89 xor %eax,%eax 0.00 : 1a4: 13 48 jmp 17c 0.00 : 1a6: c1 e1 05 mov %rcx,%r9 0.00 : 1a9: 48 01 xor %eax,%eax 0.00 : 1ab: c8 48 mov %esi,%ecx 0.00 : 1ad: 83 c4 08 c3 0f 1f 80 mov $0x0,%rdx 0.00 : 1b4: 00 00 00 00 49 89 c0 mov $0x0,%rsi 0.00 : 1bb: 89 f1 31 c0 48 callq 1c0 0.00 : 1c0: c7 c2 xor %eax,%eax 0.00 : 1c2: 00 00 jmp 17c : 1c4: 00 00 48 c7 c6 00 00 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 1cb: 00 00 e8 00 00 : 1d0: 00 00 push %r13 : 1d2: 31 c0 eb mov %rdi,%r13 : 1d5: d6 49 push %r12 : 1d7: 89 push %rbp : 1d8: c9 push %rbx : 1d9: 31 c0 89 f1 sub $0x8,%rsp : 1dd: 48 c7 c2 00 00 00 00 mov 0x338(%rdi),%rax : 1e4: 48 c7 c6 00 mov 0x48(%rax),%r12 : 1e8: 00 00 xor %ebx,%ebx : 1ea: 00 e8 xor %ebp,%ebp : 1ec: 00 00 00 test %r12,%r12 : 1ef: 00 31 je 21b : 1f1: c0 eb b8 66 66 66 2e nopl 0x0(%rax) Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001bc0 : ??:0 100.00 : 1bc0: 41 57 push %r15 0.00 : 1bf2: 49 89 and $0x10,%al 0.00 : 1bf4: ff 48 c7 mov (%rdx),%rax 0.00 : 1bf7: c7 00 00 00 00 mov %rax,0x50(%rsp) 0.00 : 1bfc: 41 56 41 55 45 89 c5 mov 0x98(%rsp),%rax 0.00 : 1c03: 41 0.00 : 1c04: 54 55 4c 89 cd 53 movl $0x0,(%rax) 0.00 : 1c0a: 48 83 ec 58 89 mov 0x10(%rsp),%rdx 0.00 : 1c0f: 54 24 1c 48 8b mov 0x20(%rsp),%rsi 0.00 : 1c14: 94 24 90 00 00 callq 1c19 0.00 : 1c19: 00 48 test %eax,%eax 0.00 : 1c1b: 89 74 24 20 48 89 jne 1e76 0.00 : 1c21: 4c 24 10 test %rbp,%rbp 0.00 : 1c24: 48 8b 02 48 89 44 je 1ede 0.00 : 1c2a: 24 50 48 8b mov 0x1c(%rsp),%eax 0.00 : 1c2e: 84 24 xor %ebx,%ebx 0.00 : 1c30: 98 00 00 00 c7 mov %rax,0x28(%rsp) 0.00 : 1c35: 00 00 00 00 00 48 8b mov 0x338(%r15),%rax 0.00 : 1c3c: 54 24 10 48 8b mov 0x28(%rsp),%rcx 0.00 : 1c41: 74 24 20 e8 mov 0x20(%rax),%rdx 0.00 : 1c45: 00 00 00 00 mov 0x68(%rax),%rax 0.00 : 1c49: 85 c0 0f 85 imul %rdx,%rcx 0.00 : 1c4d: 55 02 00 mov 0x14(%rax),%eax 0.00 : 1c50: 00 48 85 ed lea (%rcx,%rax,1),%rax 0.00 : 1c54: 0f 84 b4 02 00 lea -0x1(%rdx,%rax,1),%rdx 0.00 : 1c59: 00 8b 44 24 1c mov %rax,0x38(%rsp) 0.00 : 1c5e: 31 db 48 89 44 mov %rdx,0x40(%rsp) 0.00 : 1c63: 24 28 49 8b lea 0x20(%rbp),%rdx 0.00 : 1c67: 87 38 03 00 00 mov %rdx,0x30(%rsp) 0.00 : 1c6c: 48 8b 4c 24 28 jmpq 1d52 0.00 : 1c71: 48 8b 50 20 48 8b 40 nopl 0x0(%rax) 0.00 : 1c78: 68 48 test %ebx,%ebx 0.00 : 1c7a: 0f af ca 8b 40 14 js 1d5f 0.00 : 1c80: 48 8d 04 01 48 8d 54 mov 0x338(%r15),%r14 0.00 : 1c87: 02 ff 48 89 44 mov 0x28(%rsp),%rdx 0.00 : 1c8c: 24 38 48 89 mov 0x20(%rbp),%rsi 0.00 : 1c90: 54 24 40 48 mov 0x20(%r14),%rcx 0.00 : 1c94: 8d 55 20 48 mov 0x68(%r14),%rax 0.00 : 1c98: 89 54 24 30 imul %rcx,%rdx 0.00 : 1c9c: e9 e1 00 mov 0x14(%rax),%eax 0.00 : 1c9f: 00 00 0f add %rax,%rdx 0.00 : 1ca2: 1f 80 00 00 00 lea -0x1(%rdx,%rcx,1),%rax 0.00 : 1ca7: 00 85 db cmp %rsi,%rax 0.00 : 1caa: 0f 88 df 00 00 00 jb 1d5f 0.00 : 1cb0: 4d 8b b7 cmp %rdx,%rdi 0.00 : 1cb3: 38 03 00 00 48 8b jb 1d5f 0.00 : 1cb9: 54 24 28 test %r13d,%r13d 0.00 : 1cbc: 48 8b js 1cf7 0.00 : 1cbe: 75 20 49 movslq %r13d,%rax 0.00 : 1cc1: 8b 4e 20 add %rdx,%rax 0.00 : 1cc4: 49 8b 46 cmp %rax,%rsi 0.00 : 1cc7: 68 48 0f af d1 8b ja 1d5f 0.00 : 1ccd: 40 14 48 cmp %rax,%rdi 0.00 : 1cd0: 01 c2 48 8d 44 0a jb 1d5f 0.00 : 1cd6: ff 48 39 lea 0x1(%rdi),%ebx 0.00 : 1cd9: f0 0f 82 af 00 00 00 mov 0x90(%rsp),%rdx 0.00 : 1ce0: 48 0.00 : 1ce1: 39 d7 0f 82 sub 0x38(%rsp),%ebx 0.00 : 1ce5: a6 00 00 mov (%rdx),%r12 0.00 : 1ce8: 00 45 85 sub %r13d,%ebx 0.00 : 1ceb: ed 78 39 movslq %ebx,%rax 0.00 : 1cee: 49 63 c5 cmp %r12,%rax 0.00 : 1cf1: 48 01 d0 48 39 c6 jb 1e28 0.00 : 1cf7: 0f 87 92 00 00 cmp %rsi,0x40(%rsp) 0.00 : 1cfc: 00 48 39 c7 0f 82 jb 1e01 0.00 : 1d02: 89 00 00 00 8d mov 0x38(%rsp),%rax 0.00 : 1d07: 5f 01 48 8b cmp %rax,0x28(%rbp) 0.00 : 1d0b: 94 24 90 00 00 00 jb 1e01 0.00 : 1d11: 2b 5c 24 38 4c mov 0x30(%rsp),%rdx 0.00 : 1d16: 8b 22 44 29 eb mov 0x10(%rsp),%rcx 0.00 : 1d1b: 48 63 c3 4c 39 lea 0x50(%rsp),%r9 0.00 : 1d20: e0 0f 82 31 01 mov 0x20(%rsp),%rsi 0.00 : 1d25: 00 00 48 mov %r13d,%r8d 0.00 : 1d28: 39 74 24 mov %r15,%rdi 0.00 : 1d2b: 40 0f 82 ff mov %rdx,(%rsp) 0.00 : 1d2f: 00 00 00 48 mov 0x1c(%rsp),%edx 0.00 : 1d33: 8b 44 24 38 48 callq 18d0 0.00 : 1d38: 39 45 test %eax,%eax 0.00 : 1d3a: 28 0f mov %eax,%ebx 0.00 : 1d3c: 82 f0 00 00 00 48 jns 1e49 0.00 : 1d42: 8b 54 24 30 48 8b 4c mov 0x90(%rsp),%rdx 0.00 : 1d49: 24 0.00 : 1d4a: 10 4c 8d mov (%rdx),%rax 0.00 : 1d4d: 4c 24 50 48 8b mov %rax,0x50(%rsp) 0.00 : 1d52: 74 24 20 45 mov 0x28(%rbp),%rdi 0.00 : 1d56: 89 e8 4c test %rdi,%rdi 0.00 : 1d59: 89 ff 48 89 14 24 jne 1c78 0.00 : 1d5f: 8b 54 24 1c e8 98 fb mov 0x90(%rsp),%rax 0.00 : 1d66: ff 0.00 : 1d67: ff 85 c0 mov (%rax),%rdx 0.00 : 1d6a: 89 c3 0f mov 0x18(%rbp),%eax 0.00 : 1d6d: 89 07 01 cmp %rdx,%rax 0.00 : 1d70: 00 00 jae 1d75 0.00 : 1d72: 48 8b 94 mov %edx,0x18(%rbp) 0.00 : 1d75: 24 90 00 00 00 mov 0x10(%rsp),%r8 0.00 : 1d7a: 48 8b 02 48 mov 0x1c(%rsp),%ecx 0.00 : 1d7e: 89 44 24 mov %r15,%rdx 0.00 : 1d81: 50 48 8b mov %r13d,%esi 0.00 : 1d84: 7d 28 48 mov %rbp,%rdi 0.00 : 1d87: 85 ff 0f 85 19 callq db0 0.00 : 1d8c: ff ff test %eax,%eax 0.00 : 1d8e: ff 48 mov %eax,%ebx 0.00 : 1d90: 8b 84 24 90 00 00 js 1f11 0.00 : 1d96: 00 48 8b 10 8b 45 18 mov 0x338(%r15),%rax 0.00 : 1d9d: 48 39 d0 73 03 mov 0x28(%rsp),%rdx 0.00 : 1da2: 89 55 18 4c mov 0x20(%rbp),%rsi 0.00 : 1da6: 8b 44 24 10 mov 0x20(%rax),%rcx 0.00 : 1daa: 8b 4c 24 1c mov 0x68(%rax),%rax 0.00 : 1dae: 4c 89 fa 44 imul %rcx,%rdx 0.00 : 1db2: 89 ee 48 mov 0x14(%rax),%eax 0.00 : 1db5: 89 ef e8 add %rax,%rdx 0.00 : 1db8: 24 f0 ff ff 85 lea -0x1(%rdx,%rcx,1),%rax 0.00 : 1dbd: c0 89 c3 cmp %rsi,%rax 0.00 : 1dc0: 0f 88 jb 1df0 0.00 : 1dc2: 7b 01 00 00 mov 0x28(%rbp),%rcx 0.00 : 1dc6: 49 8b 87 cmp %rcx,%rdx 0.00 : 1dc9: 38 03 ja 1df0 0.00 : 1dcb: 00 00 48 test %r13d,%r13d 0.00 : 1dce: 8b 54 24 28 48 8b js 1cf7 0.00 : 1dd4: 75 20 48 movslq %r13d,%rax 0.00 : 1dd7: 8b 48 20 add %rdx,%rax 0.00 : 1dda: 48 8b 40 cmp %rax,%rsi 0.00 : 1ddd: 68 48 ja 1df0 0.00 : 1ddf: 0f af d1 cmp %rax,%rcx 0.00 : 1de2: 8b 40 14 48 01 c2 jae 1cf7 0.00 : 1de8: 48 8d 44 0a ff 48 39 nopl 0x0(%rax,%rax,1) 0.00 : 1def: f0 0.00 : 1df0: 72 2e 48 8b 4d cmp %rsi,0x40(%rsp) 0.00 : 1df5: 28 48 39 ca 77 25 mov $0xffffffff,%r13d 0.00 : 1dfb: 45 85 ed 0f 88 23 jae 1d02 0.00 : 1e01: ff ff ff 49 63 c5 48 mov 0x338(%r15),%rdi 0.00 : 1e08: 01 d0 48 39 c6 77 11 mov $0x0,%rdx 0.00 : 1e0f: 48 39 c1 0f 83 mov $0x1,%esi 0.00 : 1e14: 0f ff ff ff 0f 1f 84 add $0x150,%rdi 0.00 : 1e1b: 00 00 00 00 00 callq 9a0 0.00 : 1e20: 48 39 ud2 0.00 : 1e22: 74 24 jmp 1e22 0.00 : 1e24: 40 41 bd ff nopl 0x0(%rax) 0.00 : 1e28: ff ff ff 0f 83 01 ff lea 0x148(%r14),%rax 0.00 : 1e2f: ff ff 49 mov %rax,%rdi 0.00 : 1e32: 8b bf 38 03 00 mov %rax,0x8(%rsp) 0.00 : 1e37: 00 48 c7 c2 00 callq 1e3c 0.00 : 1e3c: 00 00 test %eax,%eax 0.00 : 1e3e: 00 be jne 1e96 0.00 : 1e40: 01 00 00 00 mov 0x20(%rbp),%rsi 0.00 : 1e44: 48 81 c7 50 01 jmpq 1cf7 0.00 : 1e49: 00 00 e8 80 eb mov 0x50(%rsp),%rax 0.00 : 1e4e: ff ff 0f add %eax,0x1c(%rbp) 0.00 : 1e51: 0b eb fe 0f 1f 40 00 mov 0x90(%rsp),%rdx 0.00 : 1e58: 49 0.00 : 1e59: 8d 86 48 mov %rax,(%rdx) 0.00 : 1e5c: 01 00 00 48 89 mov 0x10(%rsp),%rdx 0.00 : 1e61: c7 48 89 44 24 mov 0x20(%rsp),%rsi 0.00 : 1e66: 08 e8 00 00 00 00 85 mov $0x0,%rdi 0.00 : 1e6d: c0 75 56 48 8b callq 1e72 0.00 : 1e72: 75 20 test %eax,%eax 0.00 : 1e74: e9 ae je 1e85 0.00 : 1e76: fe ff ff 48 8b 44 24 mov 0x98(%rsp),%rdx 0.00 : 1e7d: 50 0.00 : 1e7e: 01 45 1c 48 8b mov $0xffffffff,%ebx 0.00 : 1e83: 94 24 mov %eax,(%rdx) 0.00 : 1e85: 90 00 00 00 add $0x58,%rsp 0.00 : 1e89: 48 89 mov %ebx,%eax 0.00 : 1e8b: 02 pop %rbx 0.00 : 1e8c: 48 pop %rbp 0.00 : 1e8d: 8b 54 pop %r12 0.00 : 1e8f: 24 10 pop %r13 0.00 : 1e91: 48 8b pop %r14 0.00 : 1e93: 74 24 pop %r15 0.00 : 1e95: 20 retq 0.00 : 1e96: 48 c7 c7 mov %rbp,%rdi 0.00 : 1e99: 00 00 00 sub %ebx,%r12d 0.00 : 1e9c: 00 e8 00 00 00 callq 1ea1 0.00 : 1ea1: 00 85 c0 test %rax,%rax 0.00 : 1ea4: 74 0f 48 8b 94 24 je 1f2b 0.00 : 1eaa: 98 00 00 00 mov 0x20(%rax),%rax 0.00 : 1eae: bb ff ff ff mov 0x28(%rbp),%rsi 0.00 : 1eb2: ff 89 02 movslq %r12d,%rdx 0.00 : 1eb5: 48 83 c4 58 lea -0x1(%rax),%rcx 0.00 : 1eb9: 89 d8 5b mov %rcx,%rax 0.00 : 1ebc: 5d 41 5c sub %rsi,%rax 0.00 : 1ebf: 41 5d 41 cmp %rdx,%rax 0.00 : 1ec2: 5e 41 jb 1f25 0.00 : 1ec4: 5f c3 48 89 lea (%rdx,%rsi,1),%rax 0.00 : 1ec8: ef 41 29 dc mov %rax,0x28(%rbp) 0.00 : 1ecc: e8 00 00 00 00 mov 0x8(%rsp),%rdx 0.00 : 1ed1: 48 85 c0 0f 84 81 00 incw 0x148(%r14) 0.00 : 1ed8: 00 0.00 : 1ed9: 00 48 8b 40 20 jmpq 1e40 0.00 : 1ede: 48 8b 75 28 49 63 d4 mov 0x90(%rsp),%r9 0.00 : 1ee5: 48 0.00 : 1ee6: 8d 48 ff 48 89 mov 0x10(%rsp),%rcx 0.00 : 1eeb: c8 48 29 mov %r13d,%r8d 0.00 : 1eee: f0 48 39 d0 mov 0x1c(%rsp),%edx 0.00 : 1ef2: 72 61 48 8d 04 mov 0x20(%rsp),%rsi 0.00 : 1ef7: 32 48 89 mov %r15,%rdi 0.00 : 1efa: 45 28 48 8b 54 24 08 movq $0x0,(%rsp) 0.00 : 1f01: 66 0.00 : 1f02: 41 ff 86 48 01 callq 18d0 0.00 : 1f07: 00 00 test %eax,%eax 0.00 : 1f09: e9 62 mov %eax,%ebx 0.00 : 1f0b: ff ff ff 4c 8b 8c jns 1e5c 0.00 : 1f11: 24 90 00 00 00 mov 0x10(%rsp),%rsi 0.00 : 1f16: 48 8b 4c 24 10 mov 0x20(%rsp),%rdi 0.00 : 1f1b: 45 89 e8 8b 54 callq 1f20 0.00 : 1f20: 24 1c 48 8b 74 jmpq 1e85 0.00 : 1f25: 24 20 4c 89 mov %rcx,0x28(%rbp) 0.00 : 1f29: ff 48 jmp 1ecc 0.00 : 1f2b: c7 04 24 movslq %r12d,%rax 0.00 : 1f2e: 00 00 00 00 add %rax,0x28(%rbp) 0.00 : 1f32: e8 c9 jmp 1ecc : 1f34: f9 ff ff 85 c0 89 c3 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 1f3b: 0f 89 4b ff ff : 1f40: ff push %rbx : 1f41: 48 8b 74 mov %rsi,%rbx : 1f44: 24 10 48 8b sub $0x10,%rsp : 1f48: 7c 24 20 e8 mov 0x18(%rsi),%rsi : 1f4c: 00 00 00 test %rsi,%rsi : 1f4f: 00 e9 je 1f8b : 1f51: 60 ff ff ff 48 lea 0x8(%rsp),%r8 : 1f56: 89 4d 28 eb a1 callq 1f5b : 1f5b: 49 63 c4 48 01 mov 0x8(%rsp),%rsi : 1f60: 45 28 eb test %rsi,%rsi Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004450 : 0.00 : 4450: 41 57 push %r15 0.00 : 4482: 4d (bad) 0.00 : 4483: 89 c7 41 addb $0x0,(%rax) 0.00 : 4486: 56 49 add %al,(%rax) 0.00 : 4488: 89 f6 41 mov %r13d,%eax 0.00 : 448b: 55 41 sub %ebp,%eax 0.00 : 448d: 54 55 53 48 cmp 0x8(%rsp),%eax 0.00 : 4491: 83 ec jae 44c4 0.00 : 4493: 18 89 4c 24 08 mov 0x10(%rsp),%rdi 0.00 : 4498: 48 89 7c callq *(%rsp) 0.00 : 449b: 24 10 test %eax,%eax 0.00 : 449d: 31 c9 jne 44e2 0.00 : 449f: 89 54 24 cmp %r12,%r14 0.00 : 44a2: 0c 4c 89 mov %r13d,%ecx 0.00 : 44a5: 0c 24 48 mov %r12,%rsi 0.00 : 44a8: 8b 46 20 setne %dl ??:0 100.00 : 44ab: 89 c5 test %ebx,%ebx 0.00 : 44ad: 89 c3 eb sete %al 0.00 : 44b0: 35 0f add %ebp,%ebx 0.00 : 44b2: 1f 80 or %al,%dl 0.00 : 44b4: 00 00 je 44e0 0.00 : 44b6: 00 00 44 89 cmp 0xc(%rsp),%ebx 0.00 : 44ba: e8 29 e8 3b mov 0x8(%rsi),%r12 0.00 : 44be: 44 24 08 73 lea (%rcx,%rbp,1),%r13d 0.00 : 44c2: 31 48 ja 4488 0.00 : 44c4: 8b 7c 24 test %r15,%r15 0.00 : 44c7: 10 ff je 449f 0.00 : 44c9: 14 24 85 mov (%rsi),%rax 0.00 : 44cc: c0 75 test $0x1,%al 0.00 : 44ce: 43 4d jne 449f 0.00 : 44d0: 39 e6 44 89 e9 4c 89 movl $0x1,(%r15) 0.00 : 44d7: e6 0f jmp 449f 0.00 : 44d9: 95 c2 85 db 0f 94 c0 nopl 0x0(%rax) 0.00 : 44e0: 01 eb xor %eax,%eax 0.00 : 44e2: 08 c2 74 2a add $0x18,%rsp 0.00 : 44e6: 3b pop %rbx 0.00 : 44e7: 5c pop %rbp 0.00 : 44e8: 24 0c pop %r12 0.00 : 44ea: 4c 8b pop %r13 0.00 : 44ec: 66 08 pop %r14 0.00 : 44ee: 44 8d pop %r15 0.00 : 44f0: 2c retq : 44f1: 29 77 c4 4d 85 ff 74 data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 44f8: d6 48 8b 06 a8 01 75 : 44ff: cf : 4500: 41 c7 07 01 lock incl 0x60(%rsi) : 4504: 00 00 xor %eax,%eax : 4506: 00 retq : 4507: eb c6 0f 1f 80 00 00 nopw 0x0(%rax,%rax,1) : 450e: 00 00 : 4510: 31 c0 48 83 lock decl 0x60(%rsi) : 4514: c4 18 xor %eax,%eax : 4516: 5b retq : 4517: 5d 41 5c 41 5d 41 5e nopw 0x0(%rax,%rax,1) : 451e: 41 5f Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004660 : 0.00 : 4660: 8b 47 3c mov 0x3c(%rdi),%eax 0.00 : 4693: 8b 97 04 01 00 00 25 orl $0x80,0x3c(%rdi) ??:0 100.00 : 469a: 47 ff fe and $0x40,%edx 0.00 : 469d: ff f6 je 46a6 0.00 : 469f: c2 01 89 47 3c 74 06 orl $0x10000,0x3c(%rdi) 0.00 : 46a6: 83 c8 repz retq : 46a8: 08 89 47 3c f6 c2 04 nopl 0x0(%rax,%rax,1) : 46af: 74 : 46b0: 04 push %rbp : 46b1: 83 4f 3c mov %rdi,%rbp : 46b4: 20 push %rbx : 46b5: f6 c2 08 74 sub $0x8,%rsp : 46b9: 04 83 4f 3c mov 0x18(%rdi),%rdi : 46bd: 10 f6 c2 02 74 07 81 mov 0x108(%rbp),%rdx : 46c4: 4f 3c 80 00 movzbl 0x15(%rdi),%ecx : 46c8: 00 00 83 sub $0x9,%ecx : 46cb: e2 40 74 shr %cl,%rdx : 46ce: 07 81 4f 3c cmp $0x1,%rdx : 46d2: 00 00 jbe 4738 : 46d4: 01 00 f3 c3 cmp $0x41,%rdx Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004b10 <__ext3_get_inode_loc>: 0.00 : 4b10: 48 83 ec 38 sub $0x38,%rsp 0.00 : 4b44: 4c outsl %ds:(%rsi),(%dx) 0.00 : 4b45: 89 6c 24 sbb %cl,-0x7d(%rax) 0.00 : 4b48: 20 cli 0.00 : 4b49: 4c 89 74 24 add 0x48(%rsp,%rdx,2),%dh 0.00 : 4b4d: 28 49 89 cmp $0x8,%edx 0.00 : 4b50: fd 4c je 4ba0 <__ext3_get_inode_loc+0x60> 0.00 : 4b52: 89 7c 24 30 cmp $0x7,%rdx 0.00 : 4b56: 48 89 je 4ba0 <__ext3_get_inode_loc+0x60> 0.00 : 4b58: 5c 24 08 41 89 d7 48 mov 0x338(%rbp),%rcx 0.00 : 4b5f: 89 6c 24 10 4c 89 64 movslq 0xa0(%rcx),%rax 0.00 : 4b66: 24 18 49 cmp %rax,%rdx 0.00 : 4b69: 89 f6 48 8b 97 b0 jae 4d70 <__ext3_get_inode_loc+0x230> 0.00 : 4b6f: 00 00 00 48 8b mov $0xfffffffb,%eax 0.00 : 4b74: 6f 18 48 83 fa mov 0x8(%rsp),%rbx 0.00 : 4b79: 02 74 54 48 83 mov 0x10(%rsp),%rbp 0.00 : 4b7e: fa 08 74 4e 48 mov 0x18(%rsp),%r12 0.00 : 4b83: 83 fa 07 74 48 mov 0x20(%rsp),%r13 0.00 : 4b88: 48 8b 8d 38 03 mov 0x28(%rsp),%r14 0.00 : 4b8d: 00 00 48 63 81 mov 0x30(%rsp),%r15 0.00 : 4b92: a0 00 00 00 add $0x38,%rsp 0.00 : 4b96: 48 retq 0.00 : 4b97: 39 c2 0f 83 01 02 00 nopw 0x0(%rax,%rax,1) 0.00 : 4b9e: 00 b8 0.00 : 4ba0: fb ff ff ff 48 8b 5c mov 0x338(%rbp),%rcx 0.00 : 4ba7: 24 08 48 8b lea -0x1(%rdx),%rbx 0.00 : 4bab: 6c 24 xor %edx,%edx 0.00 : 4bad: 10 4c 8b mov %rbp,%rdi 0.00 : 4bb0: 64 24 18 mov %rbx,%rax 0.00 : 4bb3: 4c 8b 6c 24 divq 0x28(%rcx) ??:0 50.00 : 4bb7: 20 4c xor %edx,%edx 0.00 : 4bb9: 8b 74 mov %eax,%esi 0.00 : 4bbb: 24 28 4c mov %rax,%r12 0.00 : 4bbe: 8b 7c 24 30 48 callq 4bc3 <__ext3_get_inode_loc+0x83> 0.00 : 4bc3: 83 c4 38 test %rax,%rax 0.00 : 4bc6: c3 66 0f mov %rax,%rdi 0.00 : 4bc9: 1f 84 je 4b6f <__ext3_get_inode_loc+0x2f> 0.00 : 4bcb: 00 00 00 00 00 48 8b mov 0x338(%rbp),%rsi 0.00 : 4bd2: 8d 38 xor %edx,%edx 0.00 : 4bd4: 03 00 00 mov %rbx,%rax 0.00 : 4bd7: 48 8d 5a ff movzbl 0x15(%rbp),%ecx 0.00 : 4bdb: 31 d2 48 89 divq 0x28(%rsi) 0.00 : 4bdf: ef 48 89 d8 48 f7 71 movslq 0x9c(%rsi),%rax 0.00 : 4be6: 28 31 d2 89 imul %rax,%rdx 0.00 : 4bea: c6 49 89 mov %rdx,%rsi 0.00 : 4bed: c4 e8 00 shr %cl,%rsi 0.00 : 4bf0: 00 00 00 mov 0x8(%rdi),%ecx 50.00 : 4bf3: 48 85 c0 48 mov %r12,0x10(%r14) 0.00 : 4bf7: 89 c7 74 a4 mov 0x18(%rbp),%rax 0.00 : 4bfb: 48 8b b5 38 sub $0x1,%rax 0.00 : 4bff: 03 00 00 and %rax,%rdx 0.00 : 4c02: 31 d2 48 add %rcx,%rsi 0.00 : 4c05: 89 d8 0f b6 mov %rdx,0x8(%r14) 0.00 : 4c09: 4d 15 48 f7 mov %rsi,(%rsp) 0.00 : 4c0d: 76 28 48 63 86 9c je 4b6f <__ext3_get_inode_loc+0x2f> 0.00 : 4c13: 00 00 00 48 mov 0x18(%r13),%rax 0.00 : 4c17: 0f af d0 48 mov 0x18(%rax),%rdx 0.00 : 4c1b: 89 d6 48 d3 ee 8b 4f mov 0xf8(%rax),%rdi 0.00 : 4c22: 08 4d 89 66 10 callq 4c27 <__ext3_get_inode_loc+0xe7> 0.00 : 4c27: 48 8b 45 test %rax,%rax 0.00 : 4c2a: 18 48 83 mov %rax,%rbp 0.00 : 4c2d: e8 01 48 21 c2 48 je 4e22 <__ext3_get_inode_loc+0x2e2> 0.00 : 4c33: 01 ce 49 mov (%rax),%rax 0.00 : 4c36: 89 56 test $0x1,%al 0.00 : 4c38: 08 48 89 34 24 0f jne 4d60 <__ext3_get_inode_loc+0x220> 0.00 : 4c3e: 84 5c ff ff ff 49 lock btsl $0x2,0x0(%rbp) 0.00 : 4c44: 8b 45 sbb %eax,%eax 0.00 : 4c46: 18 48 test %eax,%eax 0.00 : 4c48: 8b 50 18 48 8b b8 jne 4df0 <__ext3_get_inode_loc+0x2b0> 0.00 : 4c4e: f8 00 00 00 mov 0x0(%rbp),%rax 0.00 : 4c52: e8 00 00 test $0x8,%ah 0.00 : 4c55: 00 00 je 4c63 <__ext3_get_inode_loc+0x123> 0.00 : 4c57: 48 85 c0 48 mov 0x0(%rbp),%rax 0.00 : 4c5b: 89 c5 test $0x1,%al 0.00 : 4c5d: 0f 84 ef 01 00 00 je 4e00 <__ext3_get_inode_loc+0x2c0> 0.00 : 4c63: 48 8b 00 a8 mov 0x0(%rbp),%rax 0.00 : 4c67: 01 0f test $0x1,%al 0.00 : 4c69: 85 22 01 00 00 f0 jne 4d50 <__ext3_get_inode_loc+0x210> 0.00 : 4c6f: 0f ba 6d test %r15d,%r15d 0.00 : 4c72: 00 02 19 c0 85 c0 je 4d90 <__ext3_get_inode_loc+0x250> 0.00 : 4c78: 0f 85 a2 01 mov 0x18(%r13),%rdi 0.00 : 4c7c: 00 00 48 8b 45 00 f6 mov 0xb0(%r13),%rax 0.00 : 4c83: c4 08 xor %edx,%edx 0.00 : 4c85: 74 0c 48 8b mov 0x20(%rbp),%rbx 0.00 : 4c89: 45 00 a8 01 0f 84 9d mov 0x338(%rdi),%rcx 0.00 : 4c90: 01 00 00 48 sub $0x1,%rax 0.00 : 4c94: 8b 45 00 a8 divq 0x28(%rcx) 0.00 : 4c98: 01 0f 85 e1 00 00 00 mov 0x9c(%rcx),%r12d 0.00 : 4c9f: 45 85 ff mov %rdx,%r15 0.00 : 4ca2: 0f 84 mov %eax,%esi 0.00 : 4ca4: 18 01 xor %edx,%edx 0.00 : 4ca6: 00 00 49 8b 7d callq 4cab <__ext3_get_inode_loc+0x16b> 0.00 : 4cab: 18 49 8b test %rax,%rax 0.00 : 4cae: 85 b0 00 mov %rax,%rcx 0.00 : 4cb1: 00 00 31 d2 48 8b je 4d90 <__ext3_get_inode_loc+0x250> 0.00 : 4cb7: 5d 20 48 8b mov 0x18(%r13),%rax 0.00 : 4cbb: 8f 38 03 mov 0x4(%rcx),%esi 0.00 : 4cbe: 00 00 48 83 mov 0x18(%rax),%rdx 0.00 : 4cc2: e8 01 48 f7 71 28 44 mov 0xf8(%rax),%rdi 0.00 : 4cc9: 8b a1 9c 00 00 callq 4cce <__ext3_get_inode_loc+0x18e> 0.00 : 4cce: 00 49 89 test %rax,%rax 0.00 : 4cd1: d7 89 c6 mov %rax,%rcx 0.00 : 4cd4: 31 d2 e8 00 00 00 je 4d90 <__ext3_get_inode_loc+0x250> 0.00 : 4cda: 00 48 85 mov (%rax),%rax 0.00 : 4cdd: c0 48 test $0x1,%al 0.00 : 4cdf: 89 c1 0f 84 d9 00 je 4d88 <__ext3_get_inode_loc+0x248> 0.00 : 4ce5: 00 00 49 movslq %r12d,%rsi 0.00 : 4ce8: 8b 45 18 mov %rbx,%rax 0.00 : 4ceb: 8b 71 xor %edx,%edx 0.00 : 4ced: 04 48 8b div %rsi 0.00 : 4cf0: 50 18 48 mov %r15d,%edx 0.00 : 4cf3: 8b b8 f8 mov %rax,%rsi 0.00 : 4cf6: 00 00 neg %eax 0.00 : 4cf8: 00 e8 00 and %r15d,%eax 0.00 : 4cfb: 00 00 00 48 lea (%rax,%rsi,1),%r12d 0.00 : 4cff: 85 c0 mov %eax,%ebx 0.00 : 4d01: 48 89 c1 cmp %r12d,%eax 0.00 : 4d04: 0f 84 jge 4d29 <__ext3_get_inode_loc+0x1e9> 0.00 : 4d06: b6 00 00 00 48 8b 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d0d: a8 01 0f 0.00 : 4d10: 84 a3 cmp %edx,%ebx 0.00 : 4d12: 00 00 je 4d21 <__ext3_get_inode_loc+0x1e1> 0.00 : 4d14: 00 49 63 f4 mov 0x28(%rcx),%rax 0.00 : 4d18: 48 89 d8 bt %ebx,(%rax) 0.00 : 4d1b: 31 d2 sbb %eax,%eax 0.00 : 4d1d: 48 f7 test %eax,%eax 0.00 : 4d1f: f6 44 jne 4d29 <__ext3_get_inode_loc+0x1e9> 0.00 : 4d21: 89 fa 48 add $0x1,%ebx 0.00 : 4d24: 89 c6 f7 cmp %r12d,%ebx 0.00 : 4d27: d8 44 jl 4d10 <__ext3_get_inode_loc+0x1d0> 0.00 : 4d29: 21 f8 44 mov %rcx,%rdi 0.00 : 4d2c: 8d 24 30 89 c3 callq 4740 0.00 : 4d31: 44 39 e0 cmp %r12d,%ebx 0.00 : 4d34: 7d 23 jne 4d90 <__ext3_get_inode_loc+0x250> 0.00 : 4d36: 66 2e 0f 1f mov 0x20(%rbp),%rdx 0.00 : 4d3a: 84 00 00 00 mov 0x28(%rbp),%rdi 0.00 : 4d3e: 00 00 xor %esi,%esi 0.00 : 4d40: 39 d3 74 0d 48 callq 4d45 <__ext3_get_inode_loc+0x205> 0.00 : 4d45: 8b 41 28 0f a3 lock orb $0x1,0x0(%rbp) 0.00 : 4d4a: 18 19 c0 85 c0 75 nopw 0x0(%rax,%rax,1) 0.00 : 4d50: 08 83 c3 mov %rbp,%rdi 0.00 : 4d53: 01 44 39 e3 7c callq 4d58 <__ext3_get_inode_loc+0x218> 0.00 : 4d58: e7 48 89 cf e8 0f fa nopl 0x0(%rax,%rax,1) 0.00 : 4d5f: ff 0.00 : 4d60: ff 44 39 mov %rbp,(%r14) 0.00 : 4d63: e3 75 xor %eax,%eax 0.00 : 4d65: 5a 48 8b 55 20 jmpq 4b74 <__ext3_get_inode_loc+0x34> 0.00 : 4d6a: 48 8b 7d 28 31 f6 nopw 0x0(%rax,%rax,1) 0.00 : 4d70: e8 00 00 00 mov 0x68(%rcx),%rax 0.00 : 4d74: 00 f0 mov (%rax),%eax 0.00 : 4d76: 80 4d 00 cmp %rax,%rdx 0.00 : 4d79: 01 66 0f 1f 44 00 ja 4b6f <__ext3_get_inode_loc+0x2f> 0.00 : 4d7f: 00 48 89 ef e8 jmpq 4ba7 <__ext3_get_inode_loc+0x67> 0.00 : 4d84: 00 00 00 00 nopl 0x0(%rax) 0.00 : 4d88: 0f 1f 84 mov %rcx,%rdi 0.00 : 4d8b: 00 00 00 00 00 callq 4740 0.00 : 4d90: 49 89 2e 31 lock incl 0x60(%rbp) 0.00 : 4d94: c0 e9 0a fe ff mov $0x20,%edi 0.00 : 4d99: ff 66 0f 1f 44 00 00 movq $0x0,0x38(%rbp) 0.00 : 4da0: 48 0.00 : 4da1: 8b 41 68 mov %rbp,%rsi 0.00 : 4da4: 8b 00 48 39 c2 callq 4da9 <__ext3_get_inode_loc+0x269> 0.00 : 4da9: 0f 87 f0 fd mov 0x0(%rbp),%rax 0.00 : 4dad: ff ff test $0x4,%al 0.00 : 4daf: e9 23 jne 4e10 <__ext3_get_inode_loc+0x2d0> 0.00 : 4db1: fe ff ff 0f mov 0x0(%rbp),%rax 0.00 : 4db5: 1f 40 test $0x1,%al 0.00 : 4db7: 00 48 jne 4d60 <__ext3_get_inode_loc+0x220> 0.00 : 4db9: 89 cf e8 b0 f9 ff ff mov 0xb0(%r13),%rcx 0.00 : 4dc0: f0 ff 45 60 mov 0x18(%r13),%rdi 0.00 : 4dc4: bf 20 xor %eax,%eax 0.00 : 4dc6: 00 00 00 48 mov (%rsp),%r8 0.00 : 4dca: c7 45 38 00 00 00 00 mov $0x0,%rdx 0.00 : 4dd1: 48 89 ee e8 00 00 00 mov $0x0,%rsi 0.00 : 4dd8: 00 48 8b 45 00 callq 4ddd <__ext3_get_inode_loc+0x29d> 0.00 : 4ddd: a8 04 75 mov %rbp,%rdi 0.00 : 4de0: 5f 48 8b 45 00 callq 4740 0.00 : 4de5: a8 01 75 a7 49 mov $0xfffffffb,%eax 0.00 : 4dea: 8b 8d b0 00 00 jmpq 4b74 <__ext3_get_inode_loc+0x34> 0.00 : 4def: 00 nop 0.00 : 4df0: 49 8b 7d mov %rbp,%rdi 0.00 : 4df3: 18 31 c0 4c 8b callq 4df8 <__ext3_get_inode_loc+0x2b8> 0.00 : 4df8: 04 24 48 c7 c2 jmpq 4c4e <__ext3_get_inode_loc+0x10e> 0.00 : 4dfd: 00 00 00 nopl (%rax) 0.00 : 4e00: 00 48 c7 c6 00 lock orb $0x1,0x0(%rbp) 0.00 : 4e05: 00 00 00 e8 00 jmpq 4c63 <__ext3_get_inode_loc+0x123> 0.00 : 4e0a: 00 00 00 48 89 ef nopw 0x0(%rax,%rax,1) 0.00 : 4e10: e8 5b f9 mov %rbp,%rdi 0.00 : 4e13: ff ff b8 fb ff nopl 0x0(%rax,%rax,1) 0.00 : 4e18: ff ff e9 85 fd callq 4e1d <__ext3_get_inode_loc+0x2dd> 0.00 : 4e1d: ff ff 90 nopl (%rax) 0.00 : 4e20: 48 89 jmp 4db1 <__ext3_get_inode_loc+0x271> 0.00 : 4e22: ef e8 00 00 00 00 e9 mov 0xb0(%r13),%rcx 0.00 : 4e29: 51 fe ff ff mov 0x18(%r13),%rdi 0.00 : 4e2d: 0f 1f xor %eax,%eax 0.00 : 4e2f: 00 f0 80 4d mov (%rsp),%r8 0.00 : 4e33: 00 01 e9 59 fe ff ff mov $0x0,%rdx 0.00 : 4e3a: 66 0f 1f 44 00 00 48 mov $0x0,%rsi 0.00 : 4e41: 89 ef 0f 1f 44 callq 4e46 <__ext3_get_inode_loc+0x306> 0.00 : 4e46: 00 00 e8 00 00 mov $0xfffffffb,%eax 0.00 : 4e4b: 00 00 0f 1f 00 jmpq 4b74 <__ext3_get_inode_loc+0x34> : 4e50: eb 8f 49 8b 8d b0 00 mov -0x88(%rdi),%rdx : 4e57: 00 00 49 8b shr $0x2,%rdx : 4e5b: 7d 18 31 xor $0x1,%edx : 4e5e: c0 4c 8b and $0x1,%edx : 4e61: 04 24 48 c7 c2 jmpq 4b10 : 4e66: 00 00 00 00 48 c7 c6 nopw %cs:0x0(%rax,%rax,1) : 4e6d: 00 00 00 : 4e70: 00 e8 00 00 sub $0x28,%rsp : 4e74: 00 00 b8 fb ff mov %rbx,0x8(%rsp) : 4e79: ff ff xor %ebx,%ebx : 4e7b: e9 24 fd test %rdi,%rdi : 4e7e: ff ff 48 8b 97 mov %rbp,0x10(%rsp) Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004e70 : 100.00 : 4e70: 48 83 ec 28 sub $0x28,%rsp 0.00 : 4ea4: 48 89 5c 24 08 31 db rorb $0x8b,0x493774c3(%rcx) 0.00 : 4eab: 48 85 jge 4ec5 0.00 : 4ead: ff 48 mov %ebx,%edx 0.00 : 4eaf: 89 6c 24 10 4c 89 64 mov $0x0,%rsi 0.00 : 4eb6: 24 18 48 89 d5 callq 4ebb 0.00 : 4ebb: 4c 89 6c 24 20 nopl 0x0(%rax,%rax,1) 0.00 : 4ec0: 49 89 mov %ebx,%eax 0.00 : 4ec2: fc 49 89 f5 74 mov 0x10(%rsp),%rbp 0.00 : 4ec7: 28 48 89 d6 4c mov 0x8(%rsp),%rbx 0.00 : 4ecc: 89 ef e8 00 00 mov 0x18(%rsp),%r12 0.00 : 4ed1: 00 00 85 c0 89 mov 0x20(%rsp),%r13 0.00 : 4ed6: c3 74 37 49 add $0x28,%rsp 0.00 : 4eda: 8b retq 0.00 : 4edb: 7d 18 89 da 48 nopl 0x0(%rax,%rax,1) 0.00 : 4ee0: c7 c6 00 00 mov 0x0(%rbp),%rdx 0.00 : 4ee4: 00 00 e8 mov %r12,%rsi 0.00 : 4ee7: 00 00 00 00 0f 1f 44 mov $0x0,%rdi 0.00 : 4eee: 00 00 89 d8 48 callq 4ef3 0.00 : 4ef3: 8b 6c test %eax,%eax 0.00 : 4ef5: 24 10 mov %eax,%ebx 0.00 : 4ef7: 48 8b je 4ec0 0.00 : 4ef9: 5c 24 08 4c mov 0x0(%rbp),%rdi 0.00 : 4efd: 8b 64 24 18 4c callq 4740 0.00 : 4f02: 8b 6c 24 20 48 83 c4 movq $0x0,0x0(%rbp) 0.00 : 4f09: 28 0.00 : 4f0a: c3 0f jmp 4ea9 : 4f0c: 1f 44 00 00 nopl 0x0(%rax) : 4f10: 48 8b 55 00 sub $0x18,%rsp : 4f14: 4c 89 e6 48 mov %rbx,(%rsp) : 4f18: c7 c7 00 00 00 mov %rbp,0x8(%rsp) : 4f1d: 00 e8 00 mov %rsi,%rbx : 4f20: 00 00 00 85 c0 mov %r12,0x10(%rsp) : 4f25: 89 c3 74 c7 mov 0x18(%rdi),%rdi : 4f29: 48 8b 7d mov %rdx,%rsi : 4f2c: 00 e8 3e mov %rcx,%r12 : 4f2f: f8 ff ff 48 c7 45 00 mov $0x0,%rdx : 4f36: 00 00 00 00 mov 0x18(%rdi),%r10 : 4f3a: eb 9d 0f 1f 40 00 48 mov 0x338(%rdi),%rax Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000050f0 : 0.00 : 50f0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 5124: 48 89 add %al,(%rax) 0.00 : 5126: 5c 24 08 mov %r8,%r13 0.00 : 5129: 48 89 6c movslq (%rdx),%rdx 0.00 : 512c: 24 10 48 mov %rcx,%rbp 0.00 : 512f: 89 cb 4c 89 64 24 18 lea -0xe0(%rdi,%rdx,4),%rax 0.00 : 5136: 4c 0.00 : 5137: 89 6c 24 mov %rax,(%rcx) 0.00 : 513a: 20 49 89 d4 4c 89 74 mov -0xe0(%rdi,%rdx,4),%eax 0.00 : 5141: 24 28 4c 89 7c 24 30 movq $0x0,0x10(%rcx) 0.00 : 5148: 41 0.00 : 5149: 89 f6 test %eax,%eax 0.00 : 514b: 4c 8b 7f mov %eax,0x8(%rcx) 0.00 : 514e: 18 41 jne 5180 0.00 : 5150: c7 00 00 mov %rbp,%rax 0.00 : 5153: 00 00 00 4d 89 mov 0x8(%rsp),%rbx 0.00 : 5158: c5 48 63 12 48 mov 0x10(%rsp),%rbp 0.00 : 515d: 89 cd 48 8d 84 mov 0x18(%rsp),%r12 0.00 : 5162: 97 20 ff ff ff mov 0x20(%rsp),%r13 0.00 : 5167: 48 89 01 8b 84 mov 0x28(%rsp),%r14 0.00 : 516c: 97 20 ff ff ff mov 0x30(%rsp),%r15 0.00 : 5171: 48 c7 41 10 add $0x38,%rsp 0.00 : 5175: 00 retq 0.00 : 5176: 00 00 00 85 c0 89 41 nopw %cs:0x0(%rax,%rax,1) 0.00 : 517d: 08 75 30 0.00 : 5180: 48 89 e8 mov %rcx,%rbp 0.00 : 5183: 48 8b 5c 24 sub $0x1,%r14d 0.00 : 5187: 08 48 je 51fd 0.00 : 5189: 8b 6c 24 mov 0x8(%rbp),%esi 100.00 : 518c: 10 4c 8b 64 mov 0x18(%r15),%rdx 0.00 : 5190: 24 18 4c 8b 6c 24 20 mov 0xf8(%r15),%rdi 0.00 : 5197: 4c 8b 74 24 28 callq 519c 0.00 : 519c: 4c 8b 7c test %rax,%rax 0.00 : 519f: 24 30 48 mov %rax,%rsi 0.00 : 51a2: 83 c4 je 5204 0.00 : 51a4: 38 c3 66 cmp %rbx,%rbp 0.00 : 51a7: 2e 0f jb 51d3 0.00 : 51a9: 1f 84 00 mov (%rbx),%rdx 0.00 : 51ac: 00 00 00 mov 0x8(%rbx),%eax 0.00 : 51af: 00 48 cmp (%rdx),%eax 0.00 : 51b1: 89 cd jne 5218 0.00 : 51b3: 41 83 ee mov %rbx,%rcx 0.00 : 51b6: 01 74 jmp 51ca 0.00 : 51b8: 74 8b 75 08 49 8b 57 nopl 0x0(%rax,%rax,1) 0.00 : 51bf: 18 0.00 : 51c0: 49 8b bf mov (%rcx),%rdx 0.00 : 51c3: f8 00 00 mov 0x8(%rcx),%eax 0.00 : 51c6: 00 e8 cmp (%rdx),%eax 0.00 : 51c8: 00 00 jne 5218 0.00 : 51ca: 00 00 48 85 add $0x18,%rcx 0.00 : 51ce: c0 48 89 cmp %rcx,%rbp 0.00 : 51d1: c6 74 jae 51c0 0.00 : 51d3: 60 48 39 dd add $0x4,%r12 0.00 : 51d7: 72 2a 48 8b add $0x18,%rbp 0.00 : 51db: 13 8b 43 08 movslq (%r12),%rax 0.00 : 51df: 3b 02 75 65 shl $0x2,%rax 0.00 : 51e3: 48 89 d9 eb add 0x28(%rsi),%rax 0.00 : 51e7: 12 0f 1f 84 mov %rax,0x0(%rbp) 0.00 : 51eb: 00 00 mov (%rax),%eax 0.00 : 51ed: 00 00 00 48 mov %rsi,0x10(%rbp) 0.00 : 51f1: 8b 11 test %eax,%eax 0.00 : 51f3: 8b 41 08 mov %eax,0x8(%rbp) 0.00 : 51f6: 3b 02 jne 5183 0.00 : 51f8: 75 4e 48 83 c1 jmpq 5150 0.00 : 51fd: 18 48 xor %ebp,%ebp 0.00 : 51ff: 39 cd 73 ed 49 jmpq 5150 0.00 : 5204: 83 c4 04 48 83 c5 18 movl $0xfffffffb,0x0(%r13) 0.00 : 520b: 49 0.00 : 520c: 63 04 24 48 nopl 0x0(%rax) 0.00 : 5210: c1 e0 02 48 03 jmpq 5150 0.00 : 5215: 46 28 48 nopl (%rax) 0.00 : 5218: 89 45 00 mov %rsi,%rdi 0.00 : 521b: 8b 00 48 89 75 nopl 0x0(%rax,%rax,1) 0.00 : 5220: 10 85 c0 89 45 callq 4740 0.00 : 5225: 08 75 8b e9 53 ff ff movl $0xfffffff5,0x0(%r13) 0.00 : 522c: ff 0.00 : 522d: 31 ed e9 4c ff jmpq 5150 : 5232: ff ff 41 c7 45 00 fb data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 5239: ff ff ff 0f 1f 40 00 : 5240: e9 3b ff ff lea 0x1(%rdi),%rax : 5244: ff 0f 1f 00 48 lock orb $0x2,0x1(%rdi) : 5249: 89 f7 0f 1f 44 jmpq 524e : 524e: 00 00 xchg %ax,%ax : 5250: e8 push %rbx : 5251: 1b f5 ff mov %rdi,%rbx : 5254: ff 41 c7 45 00 callq 5259 : 5259: f5 ff ff ff e9 mov $0xc,%edx : 525e: 1e ff mov %eax,%esi : 5260: ff ff mov %edx,%eax Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005f60 : 100.00 : 5f60: 48 83 ec 38 sub $0x38,%rsp 0.00 : 5f94: 48 89 e2 48 mov 0x20(%rsp),%ebx 0.00 : 5f98: 89 5c 24 20 48 mov 0x28(%rsp),%rbp 0.00 : 5f9d: 89 6c 24 28 4c mov 0x30(%rsp),%r12 0.00 : 5fa2: 89 64 24 30 add $0x38,%rsp 0.00 : 5fa6: 48 retq : 5fa7: 89 fd 48 89 f3 e8 00 nopw 0x0(%rax,%rax,1) : 5fae: 00 00 : 5fb0: 00 85 c0 75 sub $0x28,%rsp : 5fb4: 0e 48 89 e2 48 mov %rbp,0x10(%rsp) : 5fb9: 89 de 48 89 ef mov %r12,0x18(%rsp) : 5fbe: e8 00 00 00 00 mov $0xffffffe2,%ebp : 5fc3: 48 8b 5c 24 20 mov %r13,0x20(%rsp) : 5fc8: 48 8b 6c 24 28 mov %rbx,0x8(%rsp) : 5fcd: 4c 8b 64 mov %rdi,%r12 : 5fd0: 24 30 48 83 mov 0x18(%rdi),%rax : 5fd4: c4 38 c3 mov %esi,%r13d Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000060b0 : 100.00 : 60b0: 48 83 ec 18 sub $0x18,%rsp 0.00 : 60e4: be 02 00 00 00 cmp $0xfffff000,%eax 0.00 : 60e9: 48 89 1c mov %rax,%rbx 0.00 : 60ec: 24 4c ja 6130 0.00 : 60ee: 89 64 24 test %rbp,%rbp 0.00 : 60f1: 10 49 je 60fc 0.00 : 60f3: 89 fc 48 mov (%rax),%rax 0.00 : 60f6: 89 6c 24 08 cmp %rax,0x0(%rbp) 0.00 : 60fa: 48 8b jne 6143 0.00 : 60fc: 7f 18 65 mov %r12,%rsi 0.00 : 60ff: 48 8b 04 mov %rbx,%rdi 0.00 : 6102: 25 00 00 00 00 callq 6107 0.00 : 6107: 48 8b a8 mov %rbx,%rsi 0.00 : 610a: 00 08 00 00 e8 mov 0x8(%rsp),%rbp 0.00 : 610f: 00 00 00 00 mov (%rsp),%rbx 0.00 : 6113: 48 3d 00 f0 ff mov 0x10(%rsp),%r12 0.00 : 6118: ff 48 89 c3 77 42 48 mov $0x0,%rdi 0.00 : 611f: 85 ed 74 09 add $0x18,%rsp 0.00 : 6123: 48 8b 00 48 39 jmpq 6128 0.00 : 6128: 45 00 75 47 4c 89 e6 nopl 0x0(%rax,%rax,1) 0.00 : 612f: 48 0.00 : 6130: 89 df e8 00 mov (%rsp),%rbx 0.00 : 6134: 00 00 00 48 89 mov 0x8(%rsp),%rbp 0.00 : 6139: de 48 8b 6c 24 mov 0x10(%rsp),%r12 0.00 : 613e: 08 48 8b 1c add $0x18,%rsp 0.00 : 6142: 24 retq 0.00 : 6143: 4c 8b 64 24 10 48 c7 mov $0x0,%rsi 0.00 : 614a: c7 00 00 00 00 48 83 mov $0x0,%rdi 0.00 : 6151: c4 18 xor %eax,%eax 0.00 : 6153: e9 00 00 00 00 callq 6158 0.00 : 6158: 0f 1f jmp 6107 : 615a: 84 00 00 00 00 00 nopw 0x0(%rax,%rax,1) : 6160: 48 8b 1c 24 sub $0x38,%rsp : 6164: 48 8b 6c 24 08 mov %rbx,0x8(%rsp) : 6169: 4c 8b 64 24 10 mov %r12,0x18(%rsp) : 616e: 48 83 c4 mov %rsi,%rbx : 6171: 18 c3 48 c7 c6 mov %rbp,0x10(%rsp) : 6176: 00 00 00 00 48 mov %r13,0x20(%rsp) : 617b: c7 c7 00 00 00 mov %r14,0x28(%rsp) : 6180: 00 31 c0 e8 00 mov %r15,0x30(%rsp) : 6185: 00 00 00 eb mov 0x30(%rdi),%rbp Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000011270 : 100.00 : 11270: 48 83 ec 08 sub $0x8,%rsp 0.00 : 112a4: f6 47 add %al,(%rax) 0.00 : 112a6: 50 01 75 add %cl,-0x39(%rax) 0.00 : 112a9: 3b 48 8b movb $0x0,(%rax) 0.00 : 112ac: 87 38 add %al,(%rax) 0.00 : 112ae: 03 00 xor %eax,%eax 0.00 : 112b0: 00 48 8b 80 90 callq 112b5 0.00 : 112b5: 01 00 00 f6 00 02 75 mov $0xffffffffffffffe2,%rax 0.00 : 112bc: 13 48 89 c7 add $0x8,%rsp 0.00 : 112c0: 48 retq : 112c1: 83 c4 08 e9 00 00 00 data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 112c8: 00 0f 1f 80 00 00 00 : 112cf: 00 : 112d0: 48 c7 c2 00 sub $0x28,%rsp : 112d4: 00 00 00 48 c7 mov %rbx,0x8(%rsp) : 112d9: c6 00 00 00 00 mov %rbp,0x10(%rsp) : 112de: 31 c0 e8 00 00 mov %r12,0x18(%rsp) : 112e3: 00 00 48 c7 c0 mov %r13,0x20(%rsp) : 112e8: e2 ff ff mov %rdi,%r12 : 112eb: ff 48 83 c4 mov 0x60(%rdi),%rax : 112ef: 08 c3 66 mov %esi,%r13d Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000148d0 <__ext3_journal_dirty_metadata>: 100.00 : 148d0: 48 83 ec 28 sub $0x28,%rsp 0.00 : 14904: 48 89 6c 24 rorb $0xe9,-0x77(%rax) 0.00 : 14908: 10 48 89 mov %r12,%rdx 0.00 : 1490b: f5 4c 89 6c 24 20 48 mov $0x0,%rsi 0.00 : 14912: 89 d6 49 mov %r13,%rdi 0.00 : 14915: 89 fd 48 89 ef callq 1491a <__ext3_journal_dirty_metadata+0x1a> 0.00 : 1491a: 48 89 mov %ebx,%eax 0.00 : 1491c: 5c 24 08 4c 89 mov 0x10(%rsp),%rbp 0.00 : 14921: 64 24 18 49 89 mov 0x8(%rsp),%rbx 0.00 : 14926: d4 e8 00 00 00 mov 0x18(%rsp),%r12 0.00 : 1492b: 00 85 c0 89 c3 mov 0x20(%rsp),%r13 0.00 : 14930: 74 18 41 89 add $0x28,%rsp 0.00 : 14934: c0 retq : 14935: 48 89 e9 4c 89 e2 48 data32 nopw %cs:0x0(%rax,%rax,1) : 1493c: c7 c6 00 00 : 14940: 00 00 4c 89 sub $0x28,%rsp : 14944: ef e8 00 00 00 mov %rbp,0x10(%rsp) : 14949: 00 89 d8 mov %rsi,%rbp : 1494c: 48 8b 6c 24 10 mov %r13,0x20(%rsp) : 14951: 48 8b 5c mov %rdx,%rsi : 14954: 24 08 4c mov %rdi,%r13 : 14957: 8b 64 24 mov %rbp,%rdi : 1495a: 18 4c 8b 6c 24 mov %rbx,0x8(%rsp) : 1495f: 20 48 83 c4 28 mov %r12,0x18(%rsp) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/cpufreq/acpi-cpufreq.ko ---------------------------------------------- 40.00 ??:0 40.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/cpufreq/acpi-cpufreq.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000004f0 : 40.00 : 4f0: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 527: 48 c7 c0 mov 0x14(%rdi),%edx 0.00 : 52a: 00 00 00 00 48 89 6c cmpb $0x0,0x0(%rip) # 531 0.00 : 531: 24 60 4c 89 6c 24 70 mov 0x0(,%rdx,8),%rdx 0.00 : 538: 89 0.00 : 539: d5 4c 89 74 mov (%rax,%rdx,1),%rbx 0.00 : 53d: 24 78 48 89 5c 24 58 movl $0x0,0x4c(%rsp) 0.00 : 544: 49 0.00 : 545: 89 fd 4c 89 64 24 jne 772 0.00 : 54b: 68 4c 89 test %rbx,%rbx 0.00 : 54e: bc 24 80 00 00 00 je 740 0.00 : 554: 41 89 f6 mov (%rbx),%r12 40.00 : 557: 8b 57 14 test %r12,%r12 0.00 : 55a: 80 3d 00 00 00 00 je 740 0.00 : 560: 00 48 8b 14 mov 0x8(%rbx),%rsi 0.00 : 564: d5 00 00 test %rsi,%rsi 0.00 : 567: 00 00 48 8b 1c 10 je 740 0.00 : 56d: c7 44 24 4c 00 lea 0x4c(%rsp),%r8 0.00 : 572: 00 00 00 mov %r14d,%edx 0.00 : 575: 0f 85 mov %ebp,%ecx 0.00 : 577: 27 02 00 mov %r13,%rdi 0.00 : 57a: 00 48 85 db 0f callq 57f 0.00 : 57f: 84 ec test %eax,%eax 0.00 : 581: 01 00 00 mov %eax,%r14d 0.00 : 584: 4c 8b 23 4d 85 e4 jne 740 0.00 : 58a: 0f 84 e0 01 mov 0x4c(%rsp),%edx 0.00 : 58e: 00 00 48 8b mov 0x8(%rbx),%rax 0.00 : 592: 73 08 48 mov (%rax,%rdx,8),%eax 0.00 : 595: 85 f6 0f 84 mov %eax,0xc(%rsp) 0.00 : 599: d3 01 00 00 mov (%r12),%edx 0.00 : 59d: 4c 8d cmp %eax,%edx 0.00 : 59f: 44 24 4c 44 89 f2 je 7e4 0.00 : 5a5: 89 e9 4c mov 0x14(%rbx),%eax 0.00 : 5a8: 89 ef e8 cmp $0x1,%eax 0.00 : 5ab: 00 00 00 00 85 c0 je 791 0.00 : 5b1: 41 89 c6 cmp $0x2,%eax 0.00 : 5b4: 0f 85 b6 01 00 00 jne 740 0.00 : 5ba: 8b 54 24 4c 48 8b 43 movl $0x2,0x10(%rsp) 0.00 : 5c1: 08 0.00 : 5c2: 8b 04 d0 89 44 mov 0xf(%r12),%rax 0.00 : 5c7: 24 0c 41 8b 14 mov %ax,0x20(%rsp) 0.00 : 5cc: 24 39 c2 0f 84 3f movzbl 0xc(%r12),%eax 0.00 : 5d2: 02 00 00 8b mov %al,0x22(%rsp) 0.00 : 5d6: 43 14 83 f8 mov 0xc(%rsp),%eax 0.00 : 5da: 01 0f 84 e0 01 mov 0x30(%r12),%rdx 0.00 : 5df: 00 00 83 f8 lea (%rax,%rax,2),%rax 0.00 : 5e3: 02 0f 85 86 shl $0x4,%rax 0.00 : 5e7: 01 00 00 c7 44 cmpl $0x3,0x10(%r13) 0.00 : 5ec: 24 10 02 00 00 mov 0x20(%rdx,%rax,1),%rax 20.00 : 5f1: 00 49 8b 44 mov %eax,0x24(%rsp) 0.00 : 5f5: 24 0f 66 89 44 24 je 7a6 0.00 : 5fb: 20 41 0f b6 mov 0x0(%r13),%rax 0.00 : 5ff: 44 24 0c 88 44 mov %rax,0x18(%rsp) 0.00 : 604: 24 22 8b 44 mov (%r12),%eax 0.00 : 608: 24 0c 49 8b 54 mov 0x30(%r12),%rdx 0.00 : 60d: 24 30 48 8d 04 mov $0xffffffff,%ebp 0.00 : 612: 40 48 c1 e0 04 lea 0x30(%rsp),%r15 0.00 : 617: 41 83 7d 10 lea (%rax,%rax,2),%rax 0.00 : 61b: 03 48 8b 44 shl $0x4,%rax 0.00 : 61f: 02 20 89 44 mov (%rdx,%rax,1),%rcx 0.00 : 623: 24 24 0f 84 mov 0x4c(%rsp),%edx 0.00 : 627: ab 01 00 00 49 8b 45 imul $0x3e8,%rcx,%rax 0.00 : 62e: 00 48 89 44 mov %eax,0x34(%rsp) 0.00 : 632: 24 18 41 8b mov 0x8(%rbx),%rax 0.00 : 636: 04 24 49 8b mov 0x4(%rax,%rdx,8),%eax 0.00 : 63a: 54 24 30 bd mov %eax,0x38(%rsp) 0.00 : 63e: ff ff jmp 64e 0.00 : 640: ff ff xor %esi,%esi 0.00 : 642: 4c 8d 7c mov %r15,%rdi 0.00 : 645: 24 30 48 8d mov %eax,0x30(%rsp) 0.00 : 649: 04 40 48 c1 e0 callq 64e 0.00 : 64e: 04 48 8b 0c 02 8b 54 movslq 0x0(%rip),%rsi # 655 0.00 : 655: 24 4c 48 lea 0x1(%rbp),%edx 0.00 : 658: 69 c1 e8 03 mov 0x0(%r13),%rdi 0.00 : 65c: 00 00 89 movslq %edx,%rdx 0.00 : 65f: 44 24 34 48 8b callq 664 0.00 : 664: 43 08 8b 44 d0 04 cmp %eax,0x0(%rip) # 66a 0.00 : 66a: 89 44 mov %eax,%ebp 0.00 : 66c: 24 38 ja 640 0.00 : 66e: eb 0e 31 f6 4c 89 ff mov %gs:0x0,%eax 0.00 : 675: 89 0.00 : 676: 44 24 30 e8 00 mov 0x18(%rsp),%rdi 0.00 : 67b: 00 00 00 bt %eax,(%rdi) 0.00 : 67e: 48 63 sbb %eax,%eax 0.00 : 680: 35 00 test %eax,%eax 0.00 : 682: 00 00 00 8d 55 lea 0x10(%rsp),%rbp 0.00 : 687: 01 49 8b 7d 00 48 jne 7d2 0.00 : 68d: 63 d2 e8 00 00 mov $0x1,%ecx 0.00 : 692: 00 00 39 mov %rbp,%rdx 0.00 : 695: 05 00 00 00 00 89 c5 mov $0x0,%rsi 0.00 : 69c: 77 d2 65 8b 04 callq 6a1 0.00 : 6a1: 25 00 00 00 00 48 mov 0x0(%rip),%eax # 6a7 0.00 : 6a7: 8b 7c test %eax,%eax 0.00 : 6a9: 24 18 je 6ee 0.00 : 6ab: 0f a3 07 19 mov 0x38(%rsp),%eax 0.00 : 6af: c0 85 c0 48 8d mov 0x18(%rsp),%r15 0.00 : 6b4: 6c 24 xor %ebp,%ebp 0.00 : 6b6: 10 0f 85 45 mov %eax,0x8(%rsp) 0.00 : 6ba: 01 00 jmp 6d6 0.00 : 6bc: 00 b9 01 00 nopl 0x0(%rax) 0.00 : 6c0: 00 00 48 89 ea mov $0xa7c6,%edi 0.00 : 6c5: 48 c7 c6 add $0x1,%ebp 0.00 : 6c8: 00 00 00 00 e8 callq 6cd 0.00 : 6cd: 00 00 00 cmp $0x64,%ebp 0.00 : 6d0: 00 8b 05 00 00 00 je 818 0.00 : 6d6: 00 85 c0 mov %r15,%rdi 0.00 : 6d9: 74 43 8b 44 24 callq 270 0.00 : 6de: 38 4c 8b mov %rbx,%rsi 0.00 : 6e1: 7c 24 mov %eax,%edi 0.00 : 6e3: 18 31 ed 89 44 callq 0 0.00 : 6e8: 24 08 eb 1a cmp %eax,0x8(%rsp) 0.00 : 6ec: 0f 1f jne 6c0 0.00 : 6ee: 40 00 bf c6 a7 mov $0xffffffff,%ebx 0.00 : 6f3: 00 00 83 c5 01 lea 0x30(%rsp),%rbp 0.00 : 6f8: e8 00 jmp 711 0.00 : 6fa: 00 00 00 83 fd 64 nopw 0x0(%rax,%rax,1) 0.00 : 700: 0f 84 42 01 00 mov $0x1,%esi 0.00 : 705: 00 4c 89 mov %rbp,%rdi 0.00 : 708: ff e8 92 fb mov %eax,0x30(%rsp) 0.00 : 70c: ff ff 48 89 de callq 711 0.00 : 711: 89 c7 e8 18 f9 ff ff movslq 0x0(%rip),%rsi # 718 0.00 : 718: 39 44 24 lea 0x1(%rbx),%edx 0.00 : 71b: 08 75 d2 bb mov 0x0(%r13),%rdi 0.00 : 71f: ff ff ff movslq %edx,%rdx 0.00 : 722: ff 48 8d 6c 24 callq 727 0.00 : 727: 30 eb 17 66 0f 1f cmp %eax,0x0(%rip) # 72d 0.00 : 72d: 44 00 mov %eax,%ebx 0.00 : 72f: 00 be ja 700 0.00 : 731: 01 00 00 00 mov 0xc(%rsp),%eax 0.00 : 735: 48 89 ef 89 mov %eax,(%r12) 0.00 : 739: 44 24 jmp 746 0.00 : 73b: 30 e8 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 740: 00 48 63 35 00 00 mov $0xffffffed,%r14d 0.00 : 746: 00 00 8d mov %r14d,%eax 0.00 : 749: 53 01 49 8b 7d mov 0x58(%rsp),%rbx 0.00 : 74e: 00 48 63 d2 e8 mov 0x60(%rsp),%rbp 0.00 : 753: 00 00 00 00 39 mov 0x68(%rsp),%r12 0.00 : 758: 05 00 00 00 00 mov 0x70(%rsp),%r13 0.00 : 75d: 89 c3 77 cf 8b mov 0x78(%rsp),%r14 0.00 : 762: 44 24 0c 41 89 04 24 mov 0x80(%rsp),%r15 0.00 : 769: eb 0.00 : 76a: 0b 0f 1f 44 00 00 41 add $0x88,%rsp 0.00 : 771: be retq 0.00 : 772: ed ff ff mov 0x14(%rdi),%ecx 0.00 : 775: ff 44 mov %esi,%edx 0.00 : 777: 89 f0 48 8b 5c 24 58 mov $0x0,%rdi 0.00 : 77e: 48 8b 6c 24 60 4c 8b mov $0x0,%rsi 0.00 : 785: 64 24 xor %eax,%eax 0.00 : 787: 68 4c 8b 6c 24 callq 78c 0.00 : 78c: 70 4c 8b 74 24 jmpq 54b 0.00 : 791: 78 4c 8b bc 24 80 00 movl $0x1,0x10(%rsp) 0.00 : 798: 00 0.00 : 799: 00 48 81 c4 88 00 00 movl $0x199,0x20(%rsp) 0.00 : 7a0: 00 0.00 : 7a1: c3 8b 4f 14 89 jmpq 5d6 0.00 : 7a6: f2 48 c7 c7 mov 0x14(%r13),%eax 0.00 : 7aa: 00 00 00 mov %rax,%rdx 0.00 : 7ad: 00 48 c7 shr $0x6,%eax 0.00 : 7b0: c6 00 mov %eax,%eax 0.00 : 7b2: 00 00 00 and $0x3f,%edx 0.00 : 7b5: 31 c0 e8 00 shl $0x3,%rax 0.00 : 7b9: 00 00 00 e9 shl $0x9,%rdx 0.00 : 7bd: ba fd ff neg %rax 0.00 : 7c0: ff c7 44 24 10 01 00 lea 0x0(%rdx,%rax,1),%rdx 0.00 : 7c7: 00 0.00 : 7c8: 00 c7 44 24 20 mov %rdx,0x18(%rsp) 0.00 : 7cd: 99 01 00 00 e9 jmpq 604 0.00 : 7d2: 30 fe ff mov %rbp,%rdi 0.00 : 7d5: ff 41 8b 45 14 callq 1e0 0.00 : 7da: 48 89 c2 c1 e8 mov 0x18(%rsp),%rdi 0.00 : 7df: 06 89 c0 83 e2 jmpq 68d 0.00 : 7e4: 3f 48 c1 mov 0x10(%rbx),%esi 0.00 : 7e7: e0 03 test %esi,%esi 0.00 : 7e9: 48 c1 jne 84f 0.00 : 7eb: e2 09 48 f7 d8 48 8d cmpb $0x0,0x0(%rip) # 7f2 0.00 : 7f2: 94 02 00 00 00 00 je 746 0.00 : 7f8: 48 89 54 24 18 e9 32 mov $0x0,%rsi 0.00 : 7ff: fe ff ff 48 89 ef e8 mov $0x0,%rdi 0.00 : 806: 06 fa xor %eax,%eax 0.00 : 808: ff ff 48 8b 7c callq 80d 0.00 : 80d: 24 18 e9 a9 fe jmpq 746 0.00 : 812: ff ff 8b 73 10 85 nopw 0x0(%rax,%rax,1) 0.00 : 818: f6 75 64 80 3d 00 00 cmpb $0x0,0x0(%rip) # 81f 0.00 : 81f: 00 00 00 0f 84 4e mov $0xfffffff5,%r14d 0.00 : 825: ff ff ff 48 c7 c6 je 746 0.00 : 82b: 00 00 00 00 mov 0x14(%r13),%edx 0.00 : 82f: 48 c7 c7 00 00 00 00 mov $0x0,%rsi 0.00 : 836: 31 c0 e8 00 00 00 00 mov $0x0,%rdi 0.00 : 83d: e9 34 xor %eax,%eax 0.00 : 83f: ff ff ff 66 0f 1f mov $0xfffffff5,%r14d 0.00 : 845: 44 00 00 80 3d callq 84a 0.00 : 84a: 00 00 00 00 00 jmpq 746 0.00 : 84f: 41 be f5 ff ff ff 0f cmpb $0x0,0x0(%rip) # 856 0.00 : 856: 84 1b je 86f 0.00 : 858: ff ff mov %eax,%edx 0.00 : 85a: ff 41 8b 55 14 48 c7 mov $0x0,%rsi 0.00 : 861: c6 00 00 00 00 48 c7 mov $0x0,%rdi 0.00 : 868: c7 00 xor %eax,%eax 0.00 : 86a: 00 00 00 31 c0 callq 86f 0.00 : 86f: 41 be f5 ff ff ff e8 movl $0x0,0x10(%rbx) 0.00 : 876: 00 00 00 00 e9 jmpq 5a5 : 87b: f7 fe ff ff 80 nopl 0x0(%rax,%rax,1) : 880: 3d 00 00 00 sub $0x18,%rsp : 884: 00 00 74 17 89 c2 48 mov $0x0,%rax : 88b: c7 c6 00 00 00 mov %rbp,0x10(%rsp) : 890: 00 48 c7 c7 00 mov %rbx,0x8(%rsp) : 895: 00 00 00 mov %rdi,%rbp : 898: 31 c0 e8 mov 0x14(%rdi),%edx : 89b: 00 00 00 00 c7 43 10 cmpb $0x0,0x0(%rip) # 8a2 : 8a2: 00 00 00 00 e9 2a fd mov 0x0(,%rdx,8),%rdx : 8a9: ff Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000115f0 : 100.00 : 115f0: 55 push %rbp 0.00 : 11621: 89 f5 53 48 rex.XB or %cl,0x5(%r8) 0.00 : 11625: 89 pop %rsp 0.00 : 11626: fb pop %rbx 0.00 : 11627: 48 83 add %al,(%rax) 0.00 : 11629: ec 08 mov %edx,(%rax) 0.00 : 1162b: 0f 1f 44 00 add $0x8,%rsp 0.00 : 1162f: 00 48 89 mov %rbx,%rdi 0.00 : 11632: df pop %rbx 0.00 : 11633: e8 pop %rbp 0.00 : 11634: 00 00 00 00 85 jmpq 11639 : 11639: c0 75 f4 48 8b 43 08 nopl 0x0(%rax) : 11640: 48 05 push %r13 : 11642: 5c 5b 00 00 movzwl %si,%r13d : 11646: 8b 10 push %r12 : 11648: 0f b7 c5 mov %r13d,%r12d : 1164b: f7 d0 21 c2 shl $0x10,%r12d : 1164f: 48 push %rbp : 11650: 8b 43 08 or %r13d,%r12d : 11653: 48 05 5c mov %rdi,%rbp : 11656: 5b push %rbx : 11657: 00 00 xor %ebx,%ebx : 11659: 89 10 48 83 sub $0x8,%rsp : 1165d: c4 08 jmp 1168e : 1165f: 48 nop : 11660: 89 df 5b 5d mov 0x8(%rbp),%rax : 11664: e9 00 00 00 00 0f add $0x5b5c,%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000038e0 : : * ixgbe_watchdog_link_is_up - update netif_carrier status and : * print link up message : * @adapter - pointer to the device adapter structure : **/ : static void ixgbe_watchdog_link_is_up(struct ixgbe_adapter *adapter) : { 0.00 : 38e0: 41 55 push %r13 0.00 : 38e2: 41 54 push %r12 0.00 : 38e4: 49 89 fc mov %rdi,%r12 0.00 : 38e7: 55 push %rbp 0.00 : 38e8: 53 push %rbx 0.00 : 38e9: 48 83 ec 18 sub $0x18,%rsp : struct net_device *netdev = adapter->netdev; 0.00 : 38ed: 4c 8b af 00 02 00 00 mov 0x200(%rdi),%r13 : struct ixgbe_hw *hw = &adapter->hw; : u32 link_speed = adapter->link_speed; 0.00 : 38f4: 8b b7 18 1b 00 00 mov 0x1b18(%rdi),%esi : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 38fa: 49 8b 45 78 mov 0x78(%r13),%rax : bool flow_rx, flow_tx; : : /* only continue if link was previously down */ : if (netif_carrier_ok(netdev)) 100.00 : 38fe: a8 04 test $0x4,%al 0.00 : 3900: 0f 84 48 01 00 00 je 3a4e : return; : : adapter->flags2 &= ~IXGBE_FLAG2_SEARCH_FOR_SFP; : : switch (hw->mac.type) { 0.00 : 3906: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax : : /* only continue if link was previously down */ : if (netif_carrier_ok(netdev)) : return; : : adapter->flags2 &= ~IXGBE_FLAG2_SEARCH_FOR_SFP; 0.00 : 390c: 83 a7 1c 02 00 00 df andl $0xffffffdf,0x21c(%rdi) : : switch (hw->mac.type) { 0.00 : 3913: 83 f8 01 cmp $0x1,%eax 0.00 : 3916: 0f 84 44 01 00 00 je 3a60 0.00 : 391c: 72 09 jb 3927 0.00 : 391e: 83 f8 03 cmp $0x3,%eax 0.00 : 3921: 0f 86 69 01 00 00 jbe 3a90 0.00 : 3927: 31 d2 xor %edx,%edx 0.00 : 3929: 31 c0 xor %eax,%eax : (link_speed == IXGBE_LINK_SPEED_100_FULL ? : "100 Mbps" : : "unknown speed"))), : ((flow_rx && flow_tx) ? "RX/TX" : : (flow_rx ? "RX" : : (flow_tx ? "TX" : "None")))); 0.00 : 392b: 41 f6 84 24 a8 14 00 testb $0x1,0x14a8(%r12) 0.00 : 3932: 00 01 0.00 : 3934: 74 62 je 3998 0.00 : 3936: 84 d2 test %dl,%dl 0.00 : 3938: 0f 85 82 01 00 00 jne 3ac0 0.00 : 393e: 84 c0 test %al,%al 0.00 : 3940: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : 3947: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : 394e: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 3952: 81 fe 80 00 00 00 cmp $0x80,%esi 0.00 : 3958: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 395f: 74 21 je 3982 0.00 : 3961: 83 fe 20 cmp $0x20,%esi 0.00 : 3964: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 396b: 74 15 je 3982 0.00 : 396d: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 3974: 83 fe 08 cmp $0x8,%esi 0.00 : 3977: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : 397e: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 3982: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 3989: 00 0.00 : 398a: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 3991: 31 c0 xor %eax,%eax 0.00 : 3993: e8 00 00 00 00 callq 3998 : : netif_carrier_on(netdev); 0.00 : 3998: 4c 89 ef mov %r13,%rdi 0.00 : 399b: e8 00 00 00 00 callq 39a0 : #ifdef IFLA_VF_MAX : ixgbe_check_vf_rate_limit(adapter); 0.00 : 39a0: 4c 89 e7 mov %r12,%rdi 0.00 : 39a3: e8 00 00 00 00 callq 39a8 : : static inline void netif_tx_wake_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : 39a8: 41 8b ad 88 03 00 00 mov 0x388(%r13),%ebp 0.00 : 39af: 85 ed test %ebp,%ebp 0.00 : 39b1: 74 5d je 3a10 0.00 : 39b3: 31 ed xor %ebp,%ebp 0.00 : 39b5: eb 1e jmp 39d5 0.00 : 39b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 39be: 00 00 : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 39c0: 48 8d 43 10 lea 0x10(%rbx),%rax 0.00 : 39c4: f0 80 63 10 fe lock andb $0xfe,0x10(%rbx) 0.00 : 39c9: 83 c5 01 add $0x1,%ebp 0.00 : 39cc: 41 3b ad 88 03 00 00 cmp 0x388(%r13),%ebp 0.00 : 39d3: 73 3b jae 3a10 : : static inline : struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, : unsigned int index) : { : return &dev->_tx[index]; 0.00 : 39d5: 89 eb mov %ebp,%ebx 0.00 : 39d7: 48 c1 e3 08 shl $0x8,%rbx 0.00 : 39db: 49 03 9d 80 03 00 00 add 0x380(%r13),%rbx : } : : static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue) : { : #ifdef CONFIG_NETPOLL_TRAP : if (netpoll_trap()) { 0.00 : 39e2: e8 00 00 00 00 callq 39e7 0.00 : 39e7: 85 c0 test %eax,%eax 0.00 : 39e9: 75 d5 jne 39c0 : */ : static inline int test_and_clear_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "btr %2,%1\n\t" 0.00 : 39eb: 48 8d 43 10 lea 0x10(%rbx),%rax 0.00 : 39ef: f0 0f ba 30 00 lock btrl $0x0,(%rax) 0.00 : 39f4: 19 d2 sbb %edx,%edx : netif_tx_start_queue(dev_queue); : return; : } : #endif : if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state)) 0.00 : 39f6: 85 d2 test %edx,%edx 0.00 : 39f8: 74 cf je 39c9 : __netif_schedule(dev_queue->qdisc); 0.00 : 39fa: 48 8b 7b 08 mov 0x8(%rbx),%rdi : : static inline void netif_tx_wake_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : 39fe: 83 c5 01 add $0x1,%ebp : netif_tx_start_queue(dev_queue); : return; : } : #endif : if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state)) : __netif_schedule(dev_queue->qdisc); 0.00 : 3a01: e8 00 00 00 00 callq 3a06 : : static inline void netif_tx_wake_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : 3a06: 41 3b ad 88 03 00 00 cmp 0x388(%r13),%ebp 0.00 : 3a0d: 72 c6 jb 39d5 0.00 : 3a0f: 90 nop : : static void ixgbe_update_default_up(struct ixgbe_adapter *adapter) : { : u8 up = 0; : #ifdef HAVE_DCBNL_IEEE : struct net_device *netdev = adapter->netdev; 0.00 : 3a10: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 3a17: 00 : struct dcb_app app = { : .selector = DCB_APP_IDTYPE_ETHTYPE, : .protocol = 0, : }; : up = dcb_getapp(netdev, &app); 0.00 : 3a18: 48 89 e6 mov %rsp,%rsi : #ifdef HAVE_DCBNL_IEEE : struct net_device *netdev = adapter->netdev; : struct dcb_app app = { : .selector = DCB_APP_IDTYPE_ETHTYPE, : .protocol = 0, : }; 0.00 : 3a1b: c7 04 24 00 00 00 00 movl $0x0,(%rsp) : up = dcb_getapp(netdev, &app); 0.00 : 3a22: e8 00 00 00 00 callq 3a27 0.00 : 3a27: 89 c2 mov %eax,%edx : #endif : : #ifdef IXGBE_FCOE : adapter->default_up = (up > 1) ? (ffs(up) - 1) : 0; 0.00 : 3a29: 31 c0 xor %eax,%eax 0.00 : 3a2b: 80 fa 01 cmp $0x1,%dl 0.00 : 3a2e: 76 0e jbe 3a3e : */ : static inline int ffs(int x) : { : int r; : #ifdef CONFIG_X86_CMOV : asm("bsfl %1,%0\n\t" 0.00 : 3a30: 0f b6 c2 movzbl %dl,%eax 0.00 : 3a33: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 3a38: 0f bc c0 bsf %eax,%eax 0.00 : 3a3b: 0f 44 c2 cmove %edx,%eax 0.00 : 3a3e: 41 88 84 24 c8 7c 00 mov %al,0x7cc8(%r12) 0.00 : 3a45: 00 : : /* update the default user priority for VFs */ : ixgbe_update_default_up(adapter); : : /* ping all the active vfs to let them know link has changed */ : ixgbe_ping_all_vfs(adapter); 0.00 : 3a46: 4c 89 e7 mov %r12,%rdi 0.00 : 3a49: e8 00 00 00 00 callq 3a4e : } 0.00 : 3a4e: 48 83 c4 18 add $0x18,%rsp 0.00 : 3a52: 5b pop %rbx 0.00 : 3a53: 5d pop %rbp 0.00 : 3a54: 41 5c pop %r12 0.00 : 3a56: 41 5d pop %r13 0.00 : 3a58: c3 retq 0.00 : 3a59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 3a60: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 3a67: 48 05 80 50 00 00 add $0x5080,%rax 0.00 : 3a6d: 8b 10 mov (%rax),%edx 0.00 : 3a6f: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 3a76: 48 05 00 3d 00 00 add $0x3d00,%rax 0.00 : 3a7c: 8b 00 mov (%rax),%eax : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: { : u32 frctl = IXGBE_READ_REG(hw, IXGBE_FCTRL); : u32 rmcs = IXGBE_READ_REG(hw, IXGBE_RMCS); : flow_rx = !!(frctl & IXGBE_FCTRL_RFCE); 0.00 : 3a7e: c1 ea 0f shr $0xf,%edx : flow_tx = !!(rmcs & IXGBE_RMCS_TFCE_802_3X); 0.00 : 3a81: c1 e8 03 shr $0x3,%eax : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: { : u32 frctl = IXGBE_READ_REG(hw, IXGBE_FCTRL); : u32 rmcs = IXGBE_READ_REG(hw, IXGBE_RMCS); : flow_rx = !!(frctl & IXGBE_FCTRL_RFCE); 0.00 : 3a84: 83 e2 01 and $0x1,%edx : flow_tx = !!(rmcs & IXGBE_RMCS_TFCE_802_3X); 0.00 : 3a87: 83 e0 01 and $0x1,%eax : } : break; 0.00 : 3a8a: e9 9c fe ff ff jmpq 392b 0.00 : 3a8f: 90 nop 0.00 : 3a90: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 3a97: 48 05 94 42 00 00 add $0x4294,%rax 0.00 : 3a9d: 8b 10 mov (%rax),%edx 0.00 : 3a9f: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 3aa6: 48 05 00 3d 00 00 add $0x3d00,%rax 0.00 : 3aac: 8b 00 mov (%rax),%eax : case ixgbe_mac_X540: : case ixgbe_mac_82599EB: { : u32 mflcn = IXGBE_READ_REG(hw, IXGBE_MFLCN); : u32 fccfg = IXGBE_READ_REG(hw, IXGBE_FCCFG); : flow_rx = !!(mflcn & IXGBE_MFLCN_RFCE); 0.00 : 3aae: c1 ea 03 shr $0x3,%edx : flow_tx = !!(fccfg & IXGBE_FCCFG_TFCE_802_3X); 0.00 : 3ab1: c1 e8 03 shr $0x3,%eax : break; : case ixgbe_mac_X540: : case ixgbe_mac_82599EB: { : u32 mflcn = IXGBE_READ_REG(hw, IXGBE_MFLCN); : u32 fccfg = IXGBE_READ_REG(hw, IXGBE_FCCFG); : flow_rx = !!(mflcn & IXGBE_MFLCN_RFCE); 0.00 : 3ab4: 83 e2 01 and $0x1,%edx : flow_tx = !!(fccfg & IXGBE_FCCFG_TFCE_802_3X); 0.00 : 3ab7: 83 e0 01 and $0x1,%eax : } : break; 0.00 : 3aba: e9 6c fe ff ff jmpq 392b 0.00 : 3abf: 90 nop : (link_speed == IXGBE_LINK_SPEED_100_FULL ? : "100 Mbps" : : "unknown speed"))), : ((flow_rx && flow_tx) ? "RX/TX" : : (flow_rx ? "RX" : : (flow_tx ? "TX" : "None")))); 0.00 : 3ac0: 84 c0 test %al,%al 0.00 : 3ac2: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : 3ac9: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : 3ad0: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 3ad4: e9 79 fe ff ff jmpq 3952 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000078a0 : : /** : * ixgbe_watchdog_subtask - check and bring link up : * @adapter - pointer to the device adapter structure : **/ : static void ixgbe_watchdog_subtask(struct ixgbe_adapter *adapter) : { 0.00 : 78a0: 41 54 push %r12 0.00 : 78a2: 55 push %rbp 0.00 : 78a3: 48 89 fd mov %rdi,%rbp 0.00 : 78a6: 53 push %rbx 0.00 : 78a7: 48 83 ec 10 sub $0x10,%rsp : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 78ab: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax : /* if interface is down do nothing */ : if (test_bit(__IXGBE_DOWN, &adapter->state) || 0.00 : 78b2: a8 04 test $0x4,%al 0.00 : 78b4: 0f 85 a6 01 00 00 jne 7a60 0.00 : 78ba: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax 0.00 : 78c1: a8 02 test $0x2,%al 0.00 : 78c3: 0f 85 97 01 00 00 jne 7a60 : * @link_speed - pointer to a u32 to store the link_speed : **/ : static void ixgbe_watchdog_update_link(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 link_speed = adapter->link_speed; 0.00 : 78c9: 8b 87 18 1b 00 00 mov 0x1b18(%rdi),%eax 0.00 : 78cf: 89 44 24 08 mov %eax,0x8(%rsp) : bool link_up = adapter->link_up; 0.00 : 78d3: 0f b6 87 1c 1b 00 00 movzbl 0x1b1c(%rdi),%eax 0.00 : 78da: 88 44 24 0f mov %al,0xf(%rsp) : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : if (!(adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE)) 0.00 : 78de: f6 87 19 02 00 00 20 testb $0x20,0x219(%rdi) : static void ixgbe_watchdog_update_link(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 link_speed = adapter->link_speed; : bool link_up = adapter->link_up; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; 0.00 : 78e5: 0f b6 9f 7a 0a 00 00 movzbl 0xa7a(%rdi),%ebx : : if (!(adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE)) 100.00 : 78ec: 0f 84 a7 00 00 00 je 7999 : return; : : if (hw->mac.ops.check_link) { 0.00 : 78f2: 48 8b 87 68 0f 00 00 mov 0xf68(%rdi),%rax : * @adapter - pointer to the device adapter structure : * @link_speed - pointer to a u32 to store the link_speed : **/ : static void ixgbe_watchdog_update_link(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; 0.00 : 78f9: 4c 8d a7 80 0e 00 00 lea 0xe80(%rdi),%r12 : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : if (!(adapter->flags & IXGBE_FLAG_NEED_LINK_UPDATE)) : return; : : if (hw->mac.ops.check_link) { 0.00 : 7900: 48 85 c0 test %rax,%rax 0.00 : 7903: 0f 84 97 02 00 00 je 7ba0 : hw->mac.ops.check_link(hw, &link_speed, &link_up, false); 0.00 : 7909: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 790e: 48 8d 74 24 08 lea 0x8(%rsp),%rsi 0.00 : 7913: 31 c9 xor %ecx,%ecx 0.00 : 7915: 4c 89 e7 mov %r12,%rdi 0.00 : 7918: ff d0 callq *%rax : link_speed = IXGBE_LINK_SPEED_10GB_FULL; : link_up = true; : } : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 791a: 48 8b 85 50 09 00 00 mov 0x950(%rbp),%rax 0.00 : 7921: 48 85 c0 test %rax,%rax 0.00 : 7924: 74 12 je 7938 : pfc_en |= !!(adapter->ixgbe_ieee_pfc->pfc_en); 0.00 : 7926: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 792a: 0f b6 d3 movzbl %bl,%edx 0.00 : 792d: 0f 95 c0 setne %al 0.00 : 7930: 0f b6 c0 movzbl %al,%eax 0.00 : 7933: 09 d0 or %edx,%eax 0.00 : 7935: 0f 95 c3 setne %bl : : #endif : if (link_up && !((adapter->flags & IXGBE_FLAG_DCB_ENABLED) && pfc_en)) { 0.00 : 7938: 80 7c 24 0f 00 cmpb $0x0,0xf(%rsp) 0.00 : 793d: 0f 84 ed 01 00 00 je 7b30 0.00 : 7943: 8b 85 18 02 00 00 mov 0x218(%rbp),%eax 0.00 : 7949: f6 c4 04 test $0x4,%ah 0.00 : 794c: 0f 84 be 01 00 00 je 7b10 0.00 : 7952: 84 db test %bl,%bl 0.00 : 7954: 0f 84 b6 01 00 00 je 7b10 : } : : if (link_up || : time_after(jiffies, (adapter->link_check_timeout + : IXGBE_TRY_LINK_TIMEOUT))) { : adapter->flags &= ~IXGBE_FLAG_NEED_LINK_UPDATE; 0.00 : 795a: 80 e4 df and $0xdf,%ah : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 795d: ba 00 00 10 00 mov $0x100000,%edx 0.00 : 7962: 89 85 18 02 00 00 mov %eax,0x218(%rbp) 0.00 : 7968: 48 8b 85 80 0e 00 00 mov 0xe80(%rbp),%rax 0.00 : 796f: 48 05 80 08 00 00 add $0x880,%rax 0.00 : 7975: 89 10 mov %edx,(%rax) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 7977: 48 8b 85 80 0e 00 00 mov 0xe80(%rbp),%rax 0.00 : 797e: 48 83 c0 08 add $0x8,%rax 0.00 : 7982: 8b 00 mov (%rax),%eax : IXGBE_WRITE_REG(hw, IXGBE_EIMS, IXGBE_EIMC_LSC); : IXGBE_WRITE_FLUSH(hw); : } : : adapter->link_up = link_up; 0.00 : 7984: 0f b6 44 24 0f movzbl 0xf(%rsp),%eax 0.00 : 7989: 88 85 1c 1b 00 00 mov %al,0x1b1c(%rbp) : adapter->link_speed = link_speed; 0.00 : 798f: 8b 44 24 08 mov 0x8(%rsp),%eax 0.00 : 7993: 89 85 18 1b 00 00 mov %eax,0x1b18(%rbp) : test_bit(__IXGBE_RESETTING, &adapter->state)) : return; : : ixgbe_watchdog_update_link(adapter); : : if (adapter->link_up) 0.00 : 7999: 80 bd 1c 1b 00 00 00 cmpb $0x0,0x1b1c(%rbp) 0.00 : 79a0: 0f 85 4a 01 00 00 jne 7af0 : * print link down message : * @adapter - pointer to the adapter structure : **/ : static void ixgbe_watchdog_link_is_down(struct ixgbe_adapter *adapter) : { : struct net_device *netdev = adapter->netdev; 0.00 : 79a6: 4c 8b a5 00 02 00 00 mov 0x200(%rbp),%r12 : struct ixgbe_hw *hw = &adapter->hw; : : adapter->link_up = false; 0.00 : 79ad: c6 85 1c 1b 00 00 00 movb $0x0,0x1b1c(%rbp) : adapter->link_speed = 0; 0.00 : 79b4: c7 85 18 1b 00 00 00 movl $0x0,0x1b18(%rbp) 0.00 : 79bb: 00 00 00 0.00 : 79be: 49 8b 44 24 78 mov 0x78(%r12),%rax : : /* only continue if link was up previously */ : if (!netif_carrier_ok(netdev)) 0.00 : 79c3: a8 04 test $0x4,%al 0.00 : 79c5: 0f 84 a5 00 00 00 je 7a70 : static void ixgbe_spoof_check(struct ixgbe_adapter *adapter) : { : u32 ssvpc; : : /* Do not perform spoof check for 82598 or if in non-IOV mode */ : if (adapter->hw.mac.type == ixgbe_mac_82598EB || 0.00 : 79cb: 83 bd 50 10 00 00 01 cmpl $0x1,0x1050(%rbp) 0.00 : 79d2: 74 2c je 7a00 0.00 : 79d4: 8b 85 58 7c 00 00 mov 0x7c58(%rbp),%eax 0.00 : 79da: 85 c0 test %eax,%eax 0.00 : 79dc: 74 22 je 7a00 0.00 : 79de: 48 8b 85 80 0e 00 00 mov 0xe80(%rbp),%rax 0.00 : 79e5: 48 05 80 87 00 00 add $0x8780,%rax 0.00 : 79eb: 8b 10 mov (%rax),%edx : : /* : * ssvpc register is cleared on read, if zero then no : * spoofed packets in the last interval. : */ : if (!ssvpc) 0.00 : 79ed: 85 d2 test %edx,%edx 0.00 : 79ef: 74 0f je 7a00 : return; : : e_warn(drv, "%d Spoofed packets detected\n", ssvpc); 0.00 : 79f1: f6 85 a8 14 00 00 01 testb $0x1,0x14a8(%rbp) 0.00 : 79f8: 0f 85 84 01 00 00 jne 7b82 0.00 : 79fe: 66 90 xchg %ax,%ax : ixgbe_watchdog_link_is_up(adapter); : else : ixgbe_watchdog_link_is_down(adapter); : : ixgbe_spoof_check(adapter); : ixgbe_update_stats(adapter); 0.00 : 7a00: 48 89 ef mov %rbp,%rdi 0.00 : 7a03: e8 00 00 00 00 callq 7a08 : * : * Check if carrier is present on device : */ : static inline int netif_carrier_ok(const struct net_device *dev) : { : return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); 0.00 : 7a08: 48 8b 85 00 02 00 00 mov 0x200(%rbp),%rax 0.00 : 7a0f: 48 8b 40 78 mov 0x78(%rax),%rax : static void ixgbe_watchdog_flush_tx(struct ixgbe_adapter *adapter) : { : int i; : int some_tx_pending = 0; : : if (!netif_carrier_ok(adapter->netdev)) { 0.00 : 7a13: a8 04 test $0x4,%al 0.00 : 7a15: 74 49 je 7a60 : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 7a17: 8b bd 20 02 00 00 mov 0x220(%rbp),%edi 0.00 : 7a1d: 85 ff test %edi,%edi 0.00 : 7a1f: 7e 3f jle 7a60 : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; 0.00 : 7a21: 48 8b 85 80 02 00 00 mov 0x280(%rbp),%rax : if (tx_ring->next_to_use != tx_ring->next_to_clean) { 0.00 : 7a28: 31 c9 xor %ecx,%ecx 0.00 : 7a2a: 48 89 ee mov %rbp,%rsi 0.00 : 7a2d: 0f b7 50 50 movzwl 0x50(%rax),%edx 0.00 : 7a31: 66 3b 50 52 cmp 0x52(%rax),%dx 0.00 : 7a35: 74 22 je 7a59 0.00 : 7a37: e9 c4 00 00 00 jmpq 7b00 0.00 : 7a3c: 0f 1f 40 00 nopl 0x0(%rax) : int i; : int some_tx_pending = 0; : : if (!netif_carrier_ok(adapter->netdev)) { : for (i = 0; i < adapter->num_tx_queues; i++) { : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; 0.00 : 7a40: 48 8b 96 88 02 00 00 mov 0x288(%rsi),%rdx 0.00 : 7a47: 48 83 c6 08 add $0x8,%rsi : if (tx_ring->next_to_use != tx_ring->next_to_clean) { 0.00 : 7a4b: 0f b7 42 50 movzwl 0x50(%rdx),%eax 0.00 : 7a4f: 66 3b 42 52 cmp 0x52(%rdx),%ax 0.00 : 7a53: 0f 85 a7 00 00 00 jne 7b00 : { : int i; : int some_tx_pending = 0; : : if (!netif_carrier_ok(adapter->netdev)) { : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 7a59: 83 c1 01 add $0x1,%ecx 0.00 : 7a5c: 39 cf cmp %ecx,%edi 0.00 : 7a5e: 7f e0 jg 7a40 : : ixgbe_spoof_check(adapter); : ixgbe_update_stats(adapter); : : ixgbe_watchdog_flush_tx(adapter); : } 0.00 : 7a60: 48 83 c4 10 add $0x10,%rsp 0.00 : 7a64: 5b pop %rbx 0.00 : 7a65: 5d pop %rbp 0.00 : 7a66: 41 5c pop %r12 0.00 : 7a68: c3 retq 0.00 : 7a69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : ixgbe_configure_rx(adapter); : } : : static bool ixgbe_is_sfp(struct ixgbe_hw *hw) : { : switch (hw->phy.type) { 0.00 : 7a70: 8b 85 98 13 00 00 mov 0x1398(%rbp),%eax 0.00 : 7a76: 83 f8 07 cmp $0x7,%eax 0.00 : 7a79: 0f 84 ea 00 00 00 je 7b69 0.00 : 7a7f: 0f 83 db 00 00 00 jae 7b60 : #ifdef CONFIG_IXGBE_PTP : if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) : ixgbe_ptp_start_cyclecounter(adapter); : : #endif : e_info(drv, "NIC Link is Down\n"); 0.00 : 7a85: f6 85 a8 14 00 00 01 testb $0x1,0x14a8(%rbp) 0.00 : 7a8c: 0f 85 26 01 00 00 jne 7bb8 : netif_carrier_off(netdev); 0.00 : 7a92: 4c 89 e7 mov %r12,%rdi 0.00 : 7a95: e8 00 00 00 00 callq 7a9a : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : 7a9a: 41 8b 84 24 88 03 00 mov 0x388(%r12),%eax 0.00 : 7aa1: 00 0.00 : 7aa2: 85 c0 test %eax,%eax 0.00 : 7aa4: 74 37 je 7add 0.00 : 7aa6: 31 db xor %ebx,%ebx 0.00 : 7aa8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7aaf: 00 : } : } : : static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue) : { : if (WARN_ON(!dev_queue)) { 0.00 : 7ab0: 49 8b 94 24 80 03 00 mov 0x380(%r12),%rdx 0.00 : 7ab7: 00 : : static inline : struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, : unsigned int index) : { : return &dev->_tx[index]; 0.00 : 7ab8: 89 d8 mov %ebx,%eax 0.00 : 7aba: 48 c1 e0 08 shl $0x8,%rax : } : } : : static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue) : { : if (WARN_ON(!dev_queue)) { 0.00 : 7abe: 48 01 c2 add %rax,%rdx 0.00 : 7ac1: 0f 84 07 01 00 00 je 7bce : */ : static __always_inline void : set_bit(unsigned int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "orb %1,%0" 0.00 : 7ac7: 48 8d 42 10 lea 0x10(%rdx),%rax 0.00 : 7acb: f0 80 4a 10 01 lock orb $0x1,0x10(%rdx) : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : 7ad0: 83 c3 01 add $0x1,%ebx 0.00 : 7ad3: 41 3b 9c 24 88 03 00 cmp 0x388(%r12),%ebx 0.00 : 7ada: 00 0.00 : 7adb: 72 d3 jb 7ab0 : netif_tx_stop_all_queues(netdev); : : /* ping all the active vfs to let them know link has changed */ : ixgbe_ping_all_vfs(adapter); 0.00 : 7add: 48 89 ef mov %rbp,%rdi 0.00 : 7ae0: e8 00 00 00 00 callq 7ae5 0.00 : 7ae5: e9 e1 fe ff ff jmpq 79cb 0.00 : 7aea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return; : : ixgbe_watchdog_update_link(adapter); : : if (adapter->link_up) : ixgbe_watchdog_link_is_up(adapter); 0.00 : 7af0: 48 89 ef mov %rbp,%rdi 0.00 : 7af3: e8 e8 bd ff ff callq 38e0 0.00 : 7af8: e9 ce fe ff ff jmpq 79cb 0.00 : 7afd: 0f 1f 00 nopl (%rax) : /* We've lost link, so the controller stops DMA, : * but we've got queued Tx work that's never going : * to get done, so reset controller to flush Tx. : * (Do the reset outside of interrupt context). : */ : adapter->flags2 |= IXGBE_FLAG2_RESET_REQUESTED; 0.00 : 7b00: 81 8d 1c 02 00 00 80 orl $0x80,0x21c(%rbp) 0.00 : 7b07: 00 00 00 0.00 : 7b0a: e9 51 ff ff ff jmpq 7a60 0.00 : 7b0f: 90 nop : if (adapter->ixgbe_ieee_pfc) : pfc_en |= !!(adapter->ixgbe_ieee_pfc->pfc_en); : : #endif : if (link_up && !((adapter->flags & IXGBE_FLAG_DCB_ENABLED) && pfc_en)) { : hw->mac.ops.fc_enable(hw); 0.00 : 7b10: 4c 89 e7 mov %r12,%rdi 0.00 : 7b13: ff 95 30 10 00 00 callq *0x1030(%rbp) : ixgbe_set_rx_drop_en(adapter); 0.00 : 7b19: 48 89 ef mov %rbp,%rdi 0.00 : 7b1c: e8 00 00 00 00 callq 7b21 : } : : if (link_up || 0.00 : 7b21: 80 7c 24 0f 00 cmpb $0x0,0xf(%rsp) 0.00 : 7b26: 75 25 jne 7b4d 0.00 : 7b28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7b2f: 00 0.00 : 7b30: 48 8b 85 20 1b 00 00 mov 0x1b20(%rbp),%rax 0.00 : 7b37: 48 8b 15 00 00 00 00 mov 0x0(%rip),%rdx # 7b3e 0.00 : 7b3e: 48 05 e8 03 00 00 add $0x3e8,%rax 0.00 : 7b44: 48 39 d0 cmp %rdx,%rax 0.00 : 7b47: 0f 89 37 fe ff ff jns 7984 0.00 : 7b4d: 8b 85 18 02 00 00 mov 0x218(%rbp),%eax 0.00 : 7b53: e9 02 fe ff ff jmpq 795a 0.00 : 7b58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7b5f: 00 : ixgbe_configure_rx(adapter); : } : : static bool ixgbe_is_sfp(struct ixgbe_hw *hw) : { : switch (hw->phy.type) { 0.00 : 7b60: 83 f8 0f cmp $0xf,%eax 0.00 : 7b63: 0f 87 1c ff ff ff ja 7a85 : /* only continue if link was up previously */ : if (!netif_carrier_ok(netdev)) : return; : : /* poll for SFP+ cable when link is down */ : if (ixgbe_is_sfp(hw) && hw->mac.type == ixgbe_mac_82598EB) 0.00 : 7b69: 83 bd 50 10 00 00 01 cmpl $0x1,0x1050(%rbp) 0.00 : 7b70: 0f 85 0f ff ff ff jne 7a85 : adapter->flags2 |= IXGBE_FLAG2_SEARCH_FOR_SFP; 0.00 : 7b76: 83 8d 1c 02 00 00 20 orl $0x20,0x21c(%rbp) 0.00 : 7b7d: e9 03 ff ff ff jmpq 7a85 : * spoofed packets in the last interval. : */ : if (!ssvpc) : return; : : e_warn(drv, "%d Spoofed packets detected\n", ssvpc); 0.00 : 7b82: 48 8b bd 00 02 00 00 mov 0x200(%rbp),%rdi 0.00 : 7b89: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 7b90: 31 c0 xor %eax,%eax 0.00 : 7b92: e8 00 00 00 00 callq 7b97 0.00 : 7b97: e9 64 fe ff ff jmpq 7a00 0.00 : 7b9c: 0f 1f 40 00 nopl 0x0(%rax) : : if (hw->mac.ops.check_link) { : hw->mac.ops.check_link(hw, &link_speed, &link_up, false); : } else { : /* always assume link is up, if no check link function */ : link_speed = IXGBE_LINK_SPEED_10GB_FULL; 0.00 : 7ba0: c7 44 24 08 80 00 00 movl $0x80,0x8(%rsp) 0.00 : 7ba7: 00 : link_up = true; 0.00 : 7ba8: c6 44 24 0f 01 movb $0x1,0xf(%rsp) 0.00 : 7bad: e9 68 fd ff ff jmpq 791a 0.00 : 7bb2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : #ifdef CONFIG_IXGBE_PTP : if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) : ixgbe_ptp_start_cyclecounter(adapter); : : #endif : e_info(drv, "NIC Link is Down\n"); 0.00 : 7bb8: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 7bbf: 4c 89 e7 mov %r12,%rdi 0.00 : 7bc2: 31 c0 xor %eax,%eax 0.00 : 7bc4: e8 00 00 00 00 callq 7bc9 0.00 : 7bc9: e9 c4 fe ff ff jmpq 7a92 : } : } : : static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue) : { : if (WARN_ON(!dev_queue)) { 0.00 : 7bce: be 80 07 00 00 mov $0x780,%esi 0.00 : 7bd3: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 7bda: e8 00 00 00 00 callq 7bdf : pr_info("netif_stop_queue() cannot be called before register_netdev()\n"); 0.00 : 7bdf: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 7be6: 31 c0 xor %eax,%eax 0.00 : 7be8: e8 00 00 00 00 callq 7bed 0.00 : 7bed: e9 de fe ff ff jmpq 7ad0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000040 <__journal_temp_unlink_buffer>: 0.00 : 40: 4c 8b 07 mov (%rdi),%r8 0.00 : 73: 49 8b 00 cmp $0x8,%eax 0.00 : 76: a9 00 ja da 0.00 : 78: 00 10 test %eax,%eax 0.00 : 7a: 00 74 jne 85 0.00 : 7c: 34 48 8b 77 nopl 0x0(%rax) 0.00 : 80: 28 retq 0.00 : 81: 48 85 ud2 0.00 : 83: f6 74 jmp 83 0.00 : 85: 1a 48 8b test %rsi,%rsi 0.00 : 88: 06 8b je d6 0.00 : 8a: 90 4c xor %ecx,%ecx 0.00 : 8c: 01 00 00 cmp $0x8,%eax 0.00 : 8f: 89 d0 ja 9e 0.00 : 91: c1 f8 mov %eax,%eax 0.00 : 93: 10 66 39 d0 75 07 0f jmpq *0x0(,%rax,8) 0.00 : 9a: 0b eb fe 0f lea 0x20(%rsi),%rcx 0.00 : 9e: 1f 00 8b cmp (%rcx),%rdi 0.00 : a1: 47 0c je de 0.00 : a3: 83 f8 08 77 mov 0x40(%rdi),%rdx 0.00 : a7: 62 85 c0 75 mov 0x38(%rdi),%rax 0.00 : ab: 09 0f 1f 40 mov %rax,0x38(%rdx) 0.00 : af: 00 c3 0f 0b mov 0x38(%rdi),%rdx 0.00 : b3: eb fe 48 85 mov 0x40(%rdi),%rax 0.00 : b7: f6 74 4c 31 mov %rax,0x40(%rdx) 0.00 : bb: c9 83 f8 08 77 0d 89 movl $0x0,0xc(%rdi) 0.00 : c2: c0 ff 24 c5 00 00 lock btrl $0x13,(%r8) 100.00 : c8: 00 00 sbb %eax,%eax 0.00 : ca: 48 8d test %eax,%eax 0.00 : cc: 4e 20 je 7c 0.00 : ce: 48 3b 39 mov %r8,%rdi 0.00 : d1: 74 3b 48 8b 57 jmpq d6 0.00 : d6: 40 48 ud2 0.00 : d8: 8b 47 jmp d8 0.00 : da: 38 48 ud2 0.00 : dc: 89 42 jmp dc 0.00 : de: 38 48 8b 57 mov 0x38(%rdi),%rdx 0.00 : e2: 38 48 xor %eax,%eax 0.00 : e4: 8b 47 40 cmp %rdx,%rdi 0.00 : e7: 48 89 42 40 cmovne %rdx,%rax 0.00 : eb: c7 47 0c mov %rax,(%rcx) 0.00 : ee: 00 00 jmp a3 0.00 : f0: 00 00 f0 41 lea 0x18(%rsi),%rcx 0.00 : f4: 0f ba jmp 9e 0.00 : f6: 30 13 19 c0 lea 0x60(%rsi),%rcx 0.00 : fa: 85 c0 jmp 9e 0.00 : fc: 74 ae 4c 89 lea 0x58(%rsi),%rcx 0.00 : 100: c7 e9 jmp 9e 0.00 : 102: 00 00 00 00 lea 0x50(%rsi),%rcx 0.00 : 106: 0f 0b jmp 9e 0.00 : 108: eb fe 0f 0b lea 0x38(%rsi),%rcx 0.00 : 10c: eb fe 48 8b nopl 0x0(%rax) 0.00 : 110: 57 38 jmp 9e 0.00 : 112: 31 c0 48 mov 0x14(%rsi),%eax 0.00 : 115: 39 d7 48 0f lea 0x28(%rsi),%rcx 0.00 : 119: 45 c2 48 sub $0x1,%eax 0.00 : 11c: 89 01 test %eax,%eax 0.00 : 11e: eb b3 48 mov %eax,0x14(%rsi) 0.00 : 121: 8d 4e 18 eb a8 48 jns 9e 0.00 : 127: 8d 4e ud2 0.00 : 129: 60 eb jmp 129 <__journal_temp_unlink_buffer+0xb9> 0.00 : 12b: a2 48 8d 4e lea 0x30(%rsi),%rcx 0.00 : 12f: 58 eb 9c 48 8d jmpq 9e : 134: 4e 50 eb 96 48 8d 4e data32 data32 nopw %cs:0x0(%rax,%rax,1) : 13b: 38 0f 1f 40 00 : 140: eb push %rbx : 141: 8c 8b 46 mov %rdi,%rbx : 144: 14 48 8d 4e 28 callq 40 : 149: 83 e8 01 85 c0 89 46 movq $0x0,0x28(%rbx) : 150: 14 : 151: 0f pop %rbx : 152: 89 retq : 153: 77 ff ff ff 0f 0b eb data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 15a: fe 48 8d 4e 30 e9 : 160: 6a ff push %r14 : 162: ff ff 66 mov %edx,%r14d Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000040d0 : 0.00 : 40d0: 41 57 push %r15 0.00 : 4102: 41 56 41 55 45 31 lea -0x1fc8(%rax),%edi 0.00 : 4108: ed 41 jmp 411f 0.00 : 410a: 54 55 53 48 83 ec nopw 0x0(%rax,%rax,1) 0.00 : 4110: 18 48 85 mov (%r15),%rax 0.00 : 4113: ff c7 test $0x8,%al 0.00 : 4115: 06 00 jne 4170 0.00 : 4117: 00 00 00 cmp %r8,%rbp 0.00 : 411a: 48 89 je 4170 0.00 : 411c: 74 24 10 mov %r12,%rbp 0.00 : 411f: 74 7f 65 48 mov 0x50(%rbp),%r12 0.00 : 4123: 8b 04 25 00 mov 0x0(%rbp),%rdx 0.00 : 4127: 00 00 00 4c 8b lock btsl $0x14,(%rdx) 0.00 : 412c: 47 58 sbb %eax,%eax 0.00 : 412e: 48 89 test %eax,%eax 0.00 : 4130: fd 4c jne 4110 0.00 : 4132: 8d b8 38 mov 0xc(%rbp),%edx 0.00 : 4135: e0 ff ff eb mov 0x0(%rbp),%rbx 0.00 : 4139: 15 66 test %edx,%edx 0.00 : 413b: 0f 1f jne 4158 0.00 : 413d: 44 00 00 mov (%rbx),%rax 100.00 : 4140: 49 8b test $0x4,%al 0.00 : 4142: 07 a8 jne 4158 0.00 : 4144: 08 75 59 mov (%rbx),%rax 0.00 : 4147: 4c 39 test $0x2,%al 0.00 : 4149: c5 74 jne 4158 0.00 : 414b: 54 4c 89 mov (%rbx),%rax 0.00 : 414e: e5 4c 8b test $0x8,%ah 0.00 : 4151: 65 50 je 4188 0.00 : 4153: 48 8b 55 00 f0 nopl 0x0(%rax,%rax,1) 0.00 : 4158: 0f ba 2a 14 lea 0x2(%rbx),%rax 0.00 : 415c: 19 c0 85 c0 75 lock andb $0xef,0x2(%rbx) 0.00 : 4161: de 8b 55 mov (%r15),%rax 0.00 : 4164: 0c 48 test $0x8,%al 0.00 : 4166: 8b 5d je 4117 0.00 : 4168: 00 85 d2 75 1b 48 8b nopl 0x0(%rax,%rax,1) 0.00 : 416f: 03 0.00 : 4170: a8 04 75 14 add $0x18,%rsp 0.00 : 4174: 48 8b 03 mov %r13d,%eax 0.00 : 4177: a8 pop %rbx 0.00 : 4178: 02 pop %rbp 0.00 : 4179: 75 0d pop %r12 0.00 : 417b: 48 8b pop %r13 0.00 : 417d: 03 f6 pop %r14 0.00 : 417f: c4 08 pop %r15 0.00 : 4181: 74 retq 0.00 : 4182: 35 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4188: 48 8d 43 mov %rbp,%rdi 0.00 : 418b: 02 f0 80 63 02 mov %r8,0x8(%rsp) 0.00 : 4190: ef 49 8b 07 a8 callq 4195 0.00 : 4195: 08 74 af 0f lea 0x1(%rax),%r14d 0.00 : 4199: 1f 84 00 00 lea 0x2(%rbx),%rax 0.00 : 419d: 00 00 00 48 83 lock andb $0xef,0x2(%rbx) 0.00 : 41a2: c4 18 44 mov %rbx,%rdi 0.00 : 41a5: 89 e8 5b 5d 41 callq 41aa 0.00 : 41aa: 5c 41 5d mov %rbx,%rdi 0.00 : 41ad: 41 5e 41 5f c3 callq 41b2 0.00 : 41b2: 66 0f 1f test %r14d,%r14d 0.00 : 41b5: 44 00 00 48 89 mov 0x8(%rsp),%r8 0.00 : 41ba: ef 4c 89 44 24 08 je 4110 0.00 : 41c0: e8 00 00 00 add $0x1,%r13d 0.00 : 41c4: 00 44 8d 70 cmp $0x2,%r14d 0.00 : 41c8: 01 48 8d 43 02 f0 jne 4110 0.00 : 41ce: 80 63 02 ef 48 mov 0x10(%rsp),%rax 0.00 : 41d3: 89 df e8 00 00 00 movl $0x1,(%rax) 0.00 : 41d9: 00 48 jmp 4170 : 41db: 89 df e8 00 00 nopl 0x0(%rax,%rax,1) : 41e0: 00 00 push %r15 : 41e2: 45 85 push %r14 : 41e4: f6 4c push %r13 : 41e6: 8b 44 push %r12 : 41e8: 24 push %rbp : 41e9: 08 0f xor %ebp,%ebp : 41eb: 84 push %rbx : 41ec: 50 ff ff ff sub $0x18,%rsp : 41f0: 41 83 c5 01 mov 0x60(%rdi),%rax : 41f4: 41 83 fe test %rax,%rax : 41f7: 02 0f je 4260 <__journal_clean_checkpoint_list+0x50> : 41f9: 85 42 ff ff ff 48 8b mov 0x80(%rax),%r14 : 4200: 44 24 10 mov %rax,%rbx : 4203: c7 00 01 00 00 lea 0x14(%rsp),%r15 : 4208: 00 eb 95 0f 1f 44 00 mov %gs:0x0,%rax : 420f: 00 41 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000041e0 <__journal_clean_checkpoint_list>: 0.00 : 41e0: 41 57 push %r15 0.00 : 4212: 41 56 41 55 41 54 lea -0x1fc8(%rax),%ebp 0.00 : 4218: 55 31 jmp 4228 <__journal_clean_checkpoint_list+0x18> 0.00 : 421a: ed 53 48 83 ec 18 nopw 0x0(%rax,%rax,1) 0.00 : 4220: 48 8b 47 cmp %r14,%rbx 0.00 : 4223: 60 48 je 4260 <__journal_clean_checkpoint_list+0x50> 0.00 : 4225: 85 c0 74 mov %r12,%rbx 0.00 : 4228: 67 4c 8b b0 mov 0x40(%rbx),%rdi 100.00 : 422c: 80 00 00 mov %r15,%rsi 0.00 : 422f: 00 48 89 c3 mov 0x78(%rbx),%r12 0.00 : 4233: 4c 8d 7c 24 14 callq 40d0 <__journal_remove_checkpoint+0x90> 0.00 : 4238: 65 48 add %eax,%ebp 0.00 : 423a: 8b 04 25 00 mov 0x0(%r13),%rax 0.00 : 423e: 00 00 test $0x8,%al 0.00 : 4240: 00 4c jne 4260 <__journal_clean_checkpoint_list+0x50> 0.00 : 4242: 8d a8 38 e0 mov 0x14(%rsp),%ecx 0.00 : 4246: ff ff test %ecx,%ecx 0.00 : 4248: eb 0e jne 4220 <__journal_clean_checkpoint_list+0x10> 0.00 : 424a: 66 0f 1f 44 mov 0x48(%rbx),%rdi 0.00 : 424e: 00 00 4c mov %r15,%rsi 0.00 : 4251: 39 f3 74 3b 4c callq 40d0 <__journal_remove_checkpoint+0x90> 0.00 : 4256: 89 e3 add %eax,%ebp 0.00 : 4258: 48 8b 7b 40 mov 0x0(%r13),%rax 0.00 : 425c: 4c 89 test $0x8,%al 0.00 : 425e: fe 4c je 4220 <__journal_clean_checkpoint_list+0x10> 0.00 : 4260: 8b 63 78 e8 add $0x18,%rsp 0.00 : 4264: 98 fe mov %ebp,%eax 0.00 : 4266: ff pop %rbx 0.00 : 4267: ff pop %rbp 0.00 : 4268: 01 c5 pop %r12 0.00 : 426a: 49 8b pop %r13 0.00 : 426c: 45 00 pop %r14 0.00 : 426e: a8 08 pop %r15 0.00 : 4270: 75 retq : 4271: 1e 8b 4c 24 14 85 c9 data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 4278: 75 d6 48 8b 7b 48 4c : 427f: 89 : 4280: fe e8 7a fe sub $0x48,%rsp : 4284: ff ff 01 c5 49 mov $0x1,%eax : 4289: 8b 45 00 a8 08 mov %rbp,0x20(%rsp) : 428e: 74 c0 48 83 c4 mov %rbx,0x18(%rsp) : 4293: 18 89 e8 mov %rdi,%rbp : 4296: 5b 5d 41 5c 41 mov %r12,0x28(%rsp) : 429b: 5d 41 5e 41 5f mov %r13,0x30(%rsp) Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005080 : 100.00 : 5080: 41 56 push %r14 0.00 : 50b2: 41 55 je 50f1 0.00 : 50b4: 41 54 49 89 nopl 0x0(%rax) 0.00 : 50b8: fc 55 53 mov 0x14(%rbx),%esi 0.00 : 50bb: 4c 8b b7 f0 01 00 00 mov 0x138(%r12),%edx 0.00 : 50c2: 45 0.00 : 50c3: 8b 16 45 85 d2 7e 60 mov 0x140(%r12),%rdi 0.00 : 50ca: 45 0.00 : 50cb: 31 ed 0f 1f 00 callq 50d0 0.00 : 50d0: 49 63 ed test %rax,%rax 0.00 : 50d3: 48 c1 e5 mov %rax,%rdx 0.00 : 50d6: 04 49 je 50e9 0.00 : 50d8: 03 6e 08 48 lea 0x2(%rax),%rax 0.00 : 50dc: 8b 5d 00 48 39 lock andb $0xfd,0x2(%rdx) 0.00 : 50e1: dd 74 3d mov %rdx,%rdi 0.00 : 50e4: 0f 1f 40 00 8b callq 50e9 0.00 : 50e9: 73 14 41 mov (%rbx),%rbx 0.00 : 50ec: 8b 94 24 cmp %rbx,%rbp 0.00 : 50ef: 38 01 jne 50b8 0.00 : 50f1: 00 00 49 8b add $0x1,%r13d 0.00 : 50f5: bc 24 40 cmp %r13d,(%r14) 0.00 : 50f8: 01 00 jg 50a0 0.00 : 50fa: 00 pop %rbx 0.00 : 50fb: e8 pop %rbp 0.00 : 50fc: 00 00 pop %r12 0.00 : 50fe: 00 00 pop %r13 0.00 : 5100: 48 85 pop %r14 0.00 : 5102: c0 retq : 5103: 48 89 c2 74 11 48 8d data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 510a: 40 02 f0 80 62 02 : 5110: fd 48 89 d7 sub $0x28,%rsp : 5114: e8 00 00 00 00 mov %rbx,0x8(%rsp) : 5119: 48 8b 1b 48 39 mov %rbp,0x10(%rsp) : 511e: dd 75 c7 41 83 mov %r12,0x18(%rsp) : 5123: c5 01 45 39 2e mov %r13,0x20(%rsp) : 5128: 7f a6 5b mov (%rdi),%rax : 512b: 5d 41 5c mov (%rsi),%rbp : 512e: 41 5d 41 mov (%rax),%r13 : 5131: 5e c3 66 66 66 66 lock btsl $0x12,0x0(%rbp) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:245 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5a00 : : IndexScanDesc : index_beginscan(Relation heapRelation, : Relation indexRelation, : Snapshot snapshot, : int nkeys, int norderbys) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:245 100.00 : 4a5a00: 55 push %rbp 0.00 : 4a5a01: 48 89 e5 mov %rsp,%rbp 0.00 : 4a5a04: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 4a5a08: 48 89 d3 mov %rdx,%rbx 0.00 : 4a5a0b: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 4a5a0f: 44 89 c2 mov %r8d,%edx 0.00 : 4a5a12: 48 83 ec 10 sub $0x10,%rsp 0.00 : 4a5a16: 49 89 fc mov %rdi,%r12 0.00 : 4a5a19: 48 89 f7 mov %rsi,%rdi 0.00 : 4a5a1c: 89 ce mov %ecx,%esi : IndexScanDesc scan; : : scan = index_beginscan_internal(indexRelation, nkeys, norderbys, snapshot); 0.00 : 4a5a1e: 48 89 d9 mov %rbx,%rcx 0.00 : 4a5a21: e8 da fe ff ff callq 4a5900 : : /* : * Save additional parameters into the scandesc. Everything else was set : * up by RelationGetIndexScan. : */ : scan->heapRelation = heapRelation; 0.00 : 4a5a26: 4c 89 20 mov %r12,(%rax) : scan->xs_snapshot = snapshot; 0.00 : 4a5a29: 48 89 58 10 mov %rbx,0x10(%rax) : : return scan; : } 0.00 : 4a5a2d: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4a5a31: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 4a5a36: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:403 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c00f0 : : * storage, we might return the LSN of a later transaction that falls into : * the same group. : */ : XLogRecPtr : TransactionIdGetCommitLSN(TransactionId xid) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:403 100.00 : 4c00f0: 55 push %rbp 0.00 : 4c00f1: 48 89 e5 mov %rsp,%rbp 0.00 : 4c00f4: 48 83 ec 10 sub $0x10,%rsp : * Currently, all uses of this function are for xids that were just : * reported to be committed by TransactionLogFetch, so we expect that : * checking TransactionLogFetch's cache will usually succeed and avoid an : * extra trip to shared memory. : */ : if (TransactionIdEquals(xid, cachedFetchXid)) 0.00 : 4c00f8: 3b 3d 7a 8c 6b 00 cmp 0x6b8c7a(%rip),%edi # b78d78 0.00 : 4c00fe: 74 28 je 4c0128 : return cachedCommitLSN; : : /* Special XIDs are always known committed */ : if (!TransactionIdIsNormal(xid)) 0.00 : 4c0100: 31 c0 xor %eax,%eax 0.00 : 4c0102: 83 ff 02 cmp $0x2,%edi 0.00 : 4c0105: 77 09 ja 4c0110 : * Get the transaction status. : */ : (void) TransactionIdGetStatus(xid, &result); : : return result; : } 0.00 : 4c0107: c9 leaveq 0.00 : 4c0108: c3 retq 0.00 : 4c0109: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return InvalidXLogRecPtr; : : /* : * Get the transaction status. : */ : (void) TransactionIdGetStatus(xid, &result); 0.00 : 4c0110: 48 8d 75 f8 lea -0x8(%rbp),%rsi 0.00 : 4c0114: e8 07 fe ff ff callq 4bff20 : : return result; 0.00 : 4c0119: 48 8b 45 f8 mov -0x8(%rbp),%rax : } 0.00 : 4c011d: c9 leaveq 0.00 : 4c011e: 66 90 xchg %ax,%ax 0.00 : 4c0120: c3 retq 0.00 : 4c0121: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * reported to be committed by TransactionLogFetch, so we expect that : * checking TransactionLogFetch's cache will usually succeed and avoid an : * extra trip to shared memory. : */ : if (TransactionIdEquals(xid, cachedFetchXid)) : return cachedCommitLSN; 0.00 : 4c0128: 48 8b 05 51 8c 6b 00 mov 0x6b8c51(%rip),%rax # b78d80 : * Get the transaction status. : */ : (void) TransactionIdGetStatus(xid, &result); : : return result; : } 0.00 : 4c012f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2889 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674990 : : * 3. This function does not guarantee that the buffer is always marked dirty : * (due to a race condition), so it cannot be used for important changes. : */ : void : MarkBufferDirtyHint(Buffer buffer, bool buffer_std) : { 0.00 : 674990: 55 push %rbp 0.00 : 674991: 48 89 e5 mov %rsp,%rbp 0.00 : 674994: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 50.00 : 674998: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 67499c: 41 89 fc mov %edi,%r12d 0.00 : 67499f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 6749a3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 6749a7: 41 89 f5 mov %esi,%r13d 0.00 : 6749aa: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 6749ae: 48 83 ec 30 sub $0x30,%rsp : volatile BufferDesc *bufHdr; : Page page = BufferGetPage(buffer); 0.00 : 6749b2: 83 ff 00 cmp $0x0,%edi 0.00 : 6749b5: 0f 8c 35 01 00 00 jl 674af0 0.00 : 6749bb: 4c 8b 3d 36 b1 54 00 mov 0x54b136(%rip),%r15 # bbfaf8 : : if (!BufferIsValid(buffer)) 0.00 : 6749c2: 0f 84 6c 01 00 00 je 674b34 : { : MarkLocalBufferDirty(buffer); : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 6749c8: 48 63 c7 movslq %edi,%rax 0.00 : 6749cb: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 6749cf: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 6749d3: 48 03 1d 26 b1 54 00 add 0x54b126(%rip),%rbx # bbfb00 : * might fail to notice that the flags have just been cleared, and failed : * to reset them, due to memory-ordering issues. But since this function : * is only intended to be used in cases where failing to write out the : * data would be harmless anyway, it doesn't really matter. : */ : if ((bufHdr->flags & (BM_DIRTY | BM_JUST_DIRTIED)) != 0.00 : 6749da: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6749de: 83 e0 21 and $0x21,%eax 0.00 : 6749e1: 83 f8 21 cmp $0x21,%eax 0.00 : 6749e4: 0f 84 ae 00 00 00 je 674a98 : * last checkpoint. : * : * We don't check full_page_writes here because that logic is included : * when we call XLogInsert() since the value changes dynamically. : */ : if (XLogHintBitIsNeeded() && (bufHdr->flags & BM_PERMANENT)) 0.00 : 6749ea: e8 d1 85 e5 ff callq 4ccfc0 0.00 : 6749ef: 84 c0 test %al,%al 0.00 : 6749f1: 0f 85 b9 00 00 00 jne 674ab0 0.00 : 6749f7: 80 3d 5b 47 50 00 00 cmpb $0x0,0x50475b(%rip) # b79159 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2889 50.00 : 6749fe: 0f 85 ac 00 00 00 jne 674ab0 : * It's possible we may enter here without an xid, so it is : * essential that CreateCheckpoint waits for virtual transactions : * rather than full transactionids. : */ : MyPgXact->delayChkpt = delayChkpt = true; : lsn = XLogSaveBufferForHint(buffer, buffer_std); 0.00 : 674a04: 45 31 ed xor %r13d,%r13d 0.00 : 674a07: 45 31 f6 xor %r14d,%r14d : } : : LockBufHdr(bufHdr); 0.00 : 674a0a: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 674a0e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 674a13: f0 86 07 lock xchg %al,(%rdi) 0.00 : 674a16: 84 c0 test %al,%al 0.00 : 674a18: 0f 85 02 01 00 00 jne 674b20 : Assert(bufHdr->refcount > 0); : if (!(bufHdr->flags & BM_DIRTY)) 0.00 : 674a1e: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674a22: 31 d2 xor %edx,%edx 0.00 : 674a24: a8 01 test $0x1,%al 0.00 : 674a26: 75 2b jne 674a53 : * : * If checksums are enabled, you might think we should reset the : * checksum here. That will happen when the page is written : * sometime later in this checkpoint cycle. : */ : if (!XLogRecPtrIsInvalid(lsn)) 0.00 : 674a28: 4d 85 ed test %r13,%r13 0.00 : 674a2b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 674a30: 74 21 je 674a53 : PageSetLSN(page, lsn); 0.00 : 674a32: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 674a37: 4c 89 ea mov %r13,%rdx 0.00 : 674a3a: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 674a3e: 48 98 cltq 0.00 : 674a40: 48 c1 e0 0d shl $0xd,%rax 0.00 : 674a44: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : 674a48: 89 10 mov %edx,(%rax) 0.00 : 674a4a: 44 89 68 04 mov %r13d,0x4(%rax) 0.00 : 674a4e: ba 01 00 00 00 mov $0x1,%edx : } : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); 0.00 : 674a53: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674a57: 83 c8 21 or $0x21,%eax 0.00 : 674a5a: 66 89 43 14 mov %ax,0x14(%rbx) : UnlockBufHdr(bufHdr); : : if (delayChkpt) 0.00 : 674a5e: 45 84 f6 test %r14b,%r14b : */ : if (!XLogRecPtrIsInvalid(lsn)) : PageSetLSN(page, lsn); : } : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); : UnlockBufHdr(bufHdr); 0.00 : 674a61: c6 43 20 00 movb $0x0,0x20(%rbx) : : if (delayChkpt) 0.00 : 674a65: 0f 85 a5 00 00 00 jne 674b10 : MyPgXact->delayChkpt = false; : : if (dirtied) 0.00 : 674a6b: 84 d2 test %dl,%dl 0.00 : 674a6d: 74 29 je 674a98 : { : VacuumPageDirty++; 0.00 : 674a6f: 83 05 66 56 54 00 01 addl $0x1,0x545666(%rip) # bba0dc : pgBufferUsage.shared_blks_dirtied++; 0.00 : 674a76: 48 83 05 f2 ac 54 00 addq $0x1,0x54acf2(%rip) # bbf770 0.00 : 674a7d: 01 : if (VacuumCostActive) 0.00 : 674a7e: 80 3d 5f 56 54 00 00 cmpb $0x0,0x54565f(%rip) # bba0e4 0.00 : 674a85: 74 11 je 674a98 : VacuumCostBalance += VacuumCostPageDirty; 0.00 : 674a87: 8b 05 a7 40 4f 00 mov 0x4f40a7(%rip),%eax # b68b34 0.00 : 674a8d: 01 05 4d 56 54 00 add %eax,0x54564d(%rip) # bba0e0 0.00 : 674a93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : } : } 0.00 : 674a98: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 674a9c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 674aa0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 674aa4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 674aa8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 674aac: c9 leaveq 0.00 : 674aad: c3 retq 0.00 : 674aae: 66 90 xchg %ax,%ax : * last checkpoint. : * : * We don't check full_page_writes here because that logic is included : * when we call XLogInsert() since the value changes dynamically. : */ : if (XLogHintBitIsNeeded() && (bufHdr->flags & BM_PERMANENT)) 0.00 : 674ab0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674ab4: f6 c4 01 test $0x1,%ah 0.00 : 674ab7: 0f 84 47 ff ff ff je 674a04 : * We can set the hint, just not dirty the page as a result so the : * hint is lost when we evict the page or shutdown. : * : * See src/backend/storage/page/README for longer discussion. : */ : if (RecoveryInProgress()) 0.00 : 674abd: e8 fe 89 e5 ff callq 4cd4c0 0.00 : 674ac2: 84 c0 test %al,%al 0.00 : 674ac4: 75 d2 jne 674a98 : * : * It's possible we may enter here without an xid, so it is : * essential that CreateCheckpoint waits for virtual transactions : * rather than full transactionids. : */ : MyPgXact->delayChkpt = delayChkpt = true; 0.00 : 674ac6: 48 8b 05 83 8e 50 00 mov 0x508e83(%rip),%rax # b7d950 : lsn = XLogSaveBufferForHint(buffer, buffer_std); 0.00 : 674acd: 41 0f be f5 movsbl %r13b,%esi 0.00 : 674ad1: 44 89 e7 mov %r12d,%edi 0.00 : 674ad4: 41 be 01 00 00 00 mov $0x1,%r14d : * : * It's possible we may enter here without an xid, so it is : * essential that CreateCheckpoint waits for virtual transactions : * rather than full transactionids. : */ : MyPgXact->delayChkpt = delayChkpt = true; 0.00 : 674ada: c6 40 0a 01 movb $0x1,0xa(%rax) : lsn = XLogSaveBufferForHint(buffer, buffer_std); 0.00 : 674ade: e8 1d 12 e6 ff callq 4d5d00 0.00 : 674ae3: 49 89 c5 mov %rax,%r13 0.00 : 674ae6: e9 1f ff ff ff jmpq 674a0a 0.00 : 674aeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : pgBufferUsage.shared_blks_dirtied++; : if (VacuumCostActive) : VacuumCostBalance += VacuumCostPageDirty; : } : } : } 0.00 : 674af0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 674af4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 674af8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 674afc: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 674b00: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 674b04: c9 leaveq : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); : : if (BufferIsLocal(buffer)) : { : MarkLocalBufferDirty(buffer); 0.00 : 674b05: e9 86 2d 00 00 jmpq 677890 0.00 : 674b0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); : UnlockBufHdr(bufHdr); : : if (delayChkpt) : MyPgXact->delayChkpt = false; 0.00 : 674b10: 48 8b 05 39 8e 50 00 mov 0x508e39(%rip),%rax # b7d950 0.00 : 674b17: c6 40 0a 00 movb $0x0,0xa(%rax) 0.00 : 674b1b: e9 4b ff ff ff jmpq 674a6b : */ : MyPgXact->delayChkpt = delayChkpt = true; : lsn = XLogSaveBufferForHint(buffer, buffer_std); : } : : LockBufHdr(bufHdr); 0.00 : 674b20: ba 70 0b 00 00 mov $0xb70,%edx 0.00 : 674b25: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 674b2a: e8 11 b5 01 00 callq 690040 0.00 : 674b2f: e9 ea fe ff ff jmpq 674a1e : { : volatile BufferDesc *bufHdr; : Page page = BufferGetPage(buffer); : : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); 0.00 : 674b34: ba 20 a0 8a 00 mov $0x8aa020,%edx 0.00 : 674b39: be 20 0b 00 00 mov $0xb20,%esi 0.00 : 674b3e: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 674b43: e8 d8 68 10 00 callq 77b420 0.00 : 674b48: 31 d2 xor %edx,%edx 0.00 : 674b4a: be 5c 9d 8a 00 mov $0x8a9d5c,%esi 0.00 : 674b4f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 674b54: 31 c0 xor %eax,%eax 0.00 : 674b56: e8 d5 66 10 00 callq 77b230 0.00 : 674b5b: e8 70 49 df ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:905 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:911 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000771cc0 : : SearchSysCache(int cacheId, : Datum key1, : Datum key2, : Datum key3, : Datum key4) : { 0.00 : 771cc0: 55 push %rbp 0.00 : 771cc1: 48 89 e5 mov %rsp,%rbp 0.00 : 771cc4: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:905 50.00 : 771cc5: 89 fb mov %edi,%ebx 0.00 : 771cc7: 48 83 ec 08 sub $0x8,%rsp : if (cacheId < 0 || cacheId >= SysCacheSize || 0.00 : 771ccb: 85 ff test %edi,%edi 0.00 : 771ccd: 78 21 js 771cf0 0.00 : 771ccf: 83 ff 3d cmp $0x3d,%edi 0.00 : 771cd2: 7f 1c jg 771cf0 0.00 : 771cd4: 48 63 c7 movslq %edi,%rax 0.00 : 771cd7: 48 8b 3c c5 c0 92 bb mov 0xbb92c0(,%rax,8),%rdi 0.00 : 771cde: 00 0.00 : 771cdf: 48 85 ff test %rdi,%rdi 0.00 : 771ce2: 74 0c je 771cf0 : !PointerIsValid(SysCache[cacheId])) : elog(ERROR, "invalid cache ID: %d", cacheId); : : return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:911 50.00 : 771ce4: 48 83 c4 08 add $0x8,%rsp 0.00 : 771ce8: 5b pop %rbx 0.00 : 771ce9: c9 leaveq : { : if (cacheId < 0 || cacheId >= SysCacheSize || : !PointerIsValid(SysCache[cacheId])) : elog(ERROR, "invalid cache ID: %d", cacheId); : : return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4); 0.00 : 771cea: e9 a1 44 ff ff jmpq 766190 0.00 : 771cef: 90 nop : Datum key3, : Datum key4) : { : if (cacheId < 0 || cacheId >= SysCacheSize || : !PointerIsValid(SysCache[cacheId])) : elog(ERROR, "invalid cache ID: %d", cacheId); 0.00 : 771cf0: ba 30 29 8d 00 mov $0x8d2930,%edx 0.00 : 771cf5: be 8c 03 00 00 mov $0x38c,%esi 0.00 : 771cfa: bf 12 31 8d 00 mov $0x8d3112,%edi 0.00 : 771cff: e8 1c 97 00 00 callq 77b420 0.00 : 771d04: 89 da mov %ebx,%edx 0.00 : 771d06: be a2 28 8d 00 mov $0x8d28a2,%esi 0.00 : 771d0b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 771d10: 31 c0 xor %eax,%eax 0.00 : 771d12: e8 19 95 00 00 callq 77b230 0.00 : 771d17: e8 b4 77 cf ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:97 50.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:97 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007acbd0 : : : #define vecswap(a, b, n) if ((n) > 0) swapfunc((a), (b), (size_t)(n), swaptype) : : static char * : med3(char *a, char *b, char *c, int (*cmp) (const void *, const void *)) : { 0.00 : 7acbd0: 55 push %rbp 0.00 : 7acbd1: 48 89 e5 mov %rsp,%rbp 0.00 : 7acbd4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 7acbd8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 7acbdc: 48 89 f3 mov %rsi,%rbx 0.00 : 7acbdf: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 7acbe3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 7acbe7: 49 89 d4 mov %rdx,%r12 0.00 : 7acbea: 48 83 ec 20 sub $0x20,%rsp 0.00 : 7acbee: 49 89 fe mov %rdi,%r14 0.00 : 7acbf1: 49 89 cd mov %rcx,%r13 : return cmp(a, b) < 0 ? 0.00 : 7acbf4: ff d1 callq *%rcx 0.00 : 7acbf6: 85 c0 test %eax,%eax 0.00 : 7acbf8: 78 2e js 7acc28 0.00 : 7acbfa: 4c 89 e6 mov %r12,%rsi 0.00 : 7acbfd: 48 89 df mov %rbx,%rdi 0.00 : 7acc00: 41 ff d5 callq *%r13 0.00 : 7acc03: 85 c0 test %eax,%eax 0.00 : 7acc05: 7e 49 jle 7acc50 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:97 50.00 : 7acc07: 49 89 dc mov %rbx,%r12 : (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a)) : : (cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c)); : } 0.00 : 7acc0a: 4c 89 e0 mov %r12,%rax 0.00 : 7acc0d: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7acc11: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 7acc16: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 7acc1b: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 7acc20: c9 leaveq 0.00 : 7acc21: c3 retq 0.00 : 7acc22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : #define vecswap(a, b, n) if ((n) > 0) swapfunc((a), (b), (size_t)(n), swaptype) : : static char * : med3(char *a, char *b, char *c, int (*cmp) (const void *, const void *)) : { : return cmp(a, b) < 0 ? 0.00 : 7acc28: 4c 89 e6 mov %r12,%rsi 50.00 : 7acc2b: 48 89 df mov %rbx,%rdi 0.00 : 7acc2e: 41 ff d5 callq *%r13 0.00 : 7acc31: 85 c0 test %eax,%eax 0.00 : 7acc33: 78 d2 js 7acc07 0.00 : 7acc35: 4c 89 e6 mov %r12,%rsi 0.00 : 7acc38: 4c 89 f7 mov %r14,%rdi 0.00 : 7acc3b: 41 ff d5 callq *%r13 0.00 : 7acc3e: 85 c0 test %eax,%eax 0.00 : 7acc40: 78 c8 js 7acc0a 0.00 : 7acc42: 4d 89 f4 mov %r14,%r12 0.00 : 7acc45: eb c3 jmp 7acc0a 0.00 : 7acc47: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7acc4e: 00 00 0.00 : 7acc50: 4c 89 e6 mov %r12,%rsi 0.00 : 7acc53: 4c 89 f7 mov %r14,%rdi 0.00 : 7acc56: 41 ff d5 callq *%r13 0.00 : 7acc59: 85 c0 test %eax,%eax 0.00 : 7acc5b: 79 ad jns 7acc0a 0.00 : 7acc5d: 0f 1f 00 nopl (%rax) 0.00 : 7acc60: eb e0 jmp 7acc42 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000032970 <_setjmp>: 100.00 : 32970: 31 f6 xor %esi,%esi 0.00 : 32972: e9 49 ff ff ff jmpq 328c0 <__sigsetjmp> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000070a10 <__fpending>: 0.00 : 70a10: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 100.00 : 70a16: 85 c0 test %eax,%eax 0.00 : 70a18: 7e 1e jle 70a38 <__fpending+0x28> 0.00 : 70a1a: 48 8b 87 a0 00 00 00 mov 0xa0(%rdi),%rax 0.00 : 70a21: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 70a25: 48 2b 50 18 sub 0x18(%rax),%rdx 0.00 : 70a29: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 70a2d: 48 89 d0 mov %rdx,%rax 0.00 : 70a30: c3 retq 0.00 : 70a31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 70a38: 48 8b 57 28 mov 0x28(%rdi),%rdx 0.00 : 70a3c: 48 2b 57 20 sub 0x20(%rdi),%rdx 0.00 : 70a40: 48 89 d0 mov %rdx,%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000085d50 <__argz_count>: 33.33 : 85d50: 41 54 push %r12 0.00 : 85d52: 45 31 e4 xor %r12d,%r12d 0.00 : 85d55: 48 85 f6 test %rsi,%rsi 0.00 : 85d58: 55 push %rbp 0.00 : 85d59: 48 89 fd mov %rdi,%rbp 0.00 : 85d5c: 53 push %rbx 0.00 : 85d5d: 48 89 f3 mov %rsi,%rbx 0.00 : 85d60: 74 1f je 85d81 <__argz_count+0x31> 0.00 : 85d62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 85d68: 48 89 ef mov %rbp,%rdi 0.00 : 85d6b: 49 83 c4 01 add $0x1,%r12 0.00 : 85d6f: e8 3c ae ff ff callq 80bb0 <__GI_strlen> 0.00 : 85d74: 48 8d 6c 05 01 lea 0x1(%rbp,%rax,1),%rbp 66.67 : 85d79: 48 f7 d0 not %rax 0.00 : 85d7c: 48 01 c3 add %rax,%rbx 0.00 : 85d7f: 75 e7 jne 85d68 <__argz_count+0x18> 0.00 : 85d81: 5b pop %rbx 0.00 : 85d82: 5d pop %rbp 0.00 : 85d83: 4c 89 e0 mov %r12,%rax 0.00 : 85d86: 41 5c pop %r12 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008baa0 : 50.00 : 8baa0: 41 57 push %r15 0.00 : 8baa2: 49 89 d7 mov %rdx,%r15 0.00 : 8baa5: 41 56 push %r14 0.00 : 8baa7: 49 89 ce mov %rcx,%r14 0.00 : 8baaa: 41 55 push %r13 0.00 : 8baac: 41 54 push %r12 0.00 : 8baae: 41 89 fc mov %edi,%r12d 0.00 : 8bab1: 55 push %rbp 0.00 : 8bab2: 53 push %rbx 0.00 : 8bab3: 89 f3 mov %esi,%ebx 0.00 : 8bab5: 48 83 ec 18 sub $0x18,%rsp 0.00 : 8bab9: 83 fe 00 cmp $0x0,%esi 0.00 : 8babc: 0f 8c 7e 00 00 00 jl 8bb40 0.00 : 8bac2: 74 7c je 8bb40 0.00 : 8bac4: 41 8d 8c 24 47 ff ff lea -0xb9(%r12),%ecx 0.00 : 8bacb: ff 50.00 : 8bacc: ba 56 55 55 55 mov $0x55555556,%edx 0.00 : 8bad1: 89 c8 mov %ecx,%eax 0.00 : 8bad3: c1 f9 1f sar $0x1f,%ecx 0.00 : 8bad6: f7 ea imul %edx 0.00 : 8bad8: 29 ca sub %ecx,%edx 0.00 : 8bada: 8d 2c 52 lea (%rdx,%rdx,2),%ebp 0.00 : 8badd: eb 4c jmp 8bb2b 0.00 : 8badf: 90 nop 0.00 : 8bae0: 83 f8 49 cmp $0x49,%eax 0.00 : 8bae3: 74 73 je 8bb58 0.00 : 8bae5: 4c 8d 05 c4 fd ff ff lea -0x23c(%rip),%r8 # 8b8b0 0.00 : 8baec: 48 8d 35 ad af 0a 00 lea 0xaafad(%rip),%rsi # 136aa0 0.00 : 8baf3: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 8baf8: ba 44 00 00 00 mov $0x44,%edx 0.00 : 8bafd: 48 89 e7 mov %rsp,%rdi 0.00 : 8bb00: 88 04 24 mov %al,(%rsp) 0.00 : 8bb03: e8 48 87 fa ff callq 34250 0.00 : 8bb08: 48 85 c0 test %rax,%rax 0.00 : 8bb0b: 48 89 c1 mov %rax,%rcx 0.00 : 8bb0e: 74 14 je 8bb24 0.00 : 8bb10: 0f b6 50 03 movzbl 0x3(%rax),%edx 0.00 : 8bb14: 0f b6 c2 movzbl %dl,%eax 0.00 : 8bb17: 39 e8 cmp %ebp,%eax 0.00 : 8bb19: 0f 84 81 00 00 00 je 8bba0 0.00 : 8bb1f: 80 fa 06 cmp $0x6,%dl 0.00 : 8bb22: 74 4c je 8bb70 0.00 : 8bb24: c1 eb 08 shr $0x8,%ebx 0.00 : 8bb27: 85 db test %ebx,%ebx 0.00 : 8bb29: 74 15 je 8bb40 0.00 : 8bb2b: 0f b6 c3 movzbl %bl,%eax 0.00 : 8bb2e: 83 f8 40 cmp $0x40,%eax 0.00 : 8bb31: 75 ad jne 8bae0 0.00 : 8bb33: 83 fd 09 cmp $0x9,%ebp 0.00 : 8bb36: 41 c6 06 01 movb $0x1,(%r14) 0.00 : 8bb3a: 75 e8 jne 8bb24 0.00 : 8bb3c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8bb40: 31 c0 xor %eax,%eax 0.00 : 8bb42: 48 83 c4 18 add $0x18,%rsp 0.00 : 8bb46: 5b pop %rbx 0.00 : 8bb47: 5d pop %rbp 0.00 : 8bb48: 41 5c pop %r12 0.00 : 8bb4a: 41 5d pop %r13 0.00 : 8bb4c: 41 5e pop %r14 0.00 : 8bb4e: 41 5f pop %r15 0.00 : 8bb50: c3 retq 0.00 : 8bb51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8bb58: 83 fd 09 cmp $0x9,%ebp 0.00 : 8bb5b: 75 88 jne 8bae5 0.00 : 8bb5d: 83 3d 14 b7 2e 00 0f cmpl $0xf,0x2eb714(%rip) # 377278 <__cpu_features+0x18> 0.00 : 8bb64: 74 1a je 8bb80 0.00 : 8bb66: bd 09 00 00 00 mov $0x9,%ebp 0.00 : 8bb6b: e9 75 ff ff ff jmpq 8bae5 0.00 : 8bb70: 41 c6 07 01 movb $0x1,(%r15) 0.00 : 8bb74: eb ae jmp 8bb24 0.00 : 8bb76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8bb7d: 00 00 00 0.00 : 8bb80: 83 3d f5 b6 2e 00 06 cmpl $0x6,0x2eb6f5(%rip) # 37727c <__cpu_features+0x1c> 0.00 : 8bb87: 75 dd jne 8bb66 0.00 : 8bb89: 41 83 ec 03 sub $0x3,%r12d 0.00 : 8bb8d: bd 06 00 00 00 mov $0x6,%ebp 0.00 : 8bb92: e9 4e ff ff ff jmpq 8bae5 0.00 : 8bb97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8bb9e: 00 00 0.00 : 8bba0: 41 8d 84 24 47 ff ff lea -0xb9(%r12),%eax 0.00 : 8bba7: ff 0.00 : 8bba8: 29 e8 sub %ebp,%eax 0.00 : 8bbaa: 74 10 je 8bbbc 0.00 : 8bbac: 83 f8 01 cmp $0x1,%eax 0.00 : 8bbaf: 74 1d je 8bbce 0.00 : 8bbb1: 83 f8 02 cmp $0x2,%eax 0.00 : 8bbb4: 75 21 jne 8bbd7 0.00 : 8bbb6: 0f b6 41 02 movzbl 0x2(%rcx),%eax 0.00 : 8bbba: eb 86 jmp 8bb42 0.00 : 8bbbc: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 8bbbf: 48 83 c4 18 add $0x18,%rsp 0.00 : 8bbc3: 5b pop %rbx 0.00 : 8bbc4: 5d pop %rbp 0.00 : 8bbc5: 41 5c pop %r12 0.00 : 8bbc7: 41 5d pop %r13 0.00 : 8bbc9: 41 5e pop %r14 0.00 : 8bbcb: 41 5f pop %r15 0.00 : 8bbcd: c3 retq 0.00 : 8bbce: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 8bbd2: e9 6b ff ff ff jmpq 8bb42 0.00 : 8bbd7: 48 8d 0d 92 6e 0b 00 lea 0xb6e92(%rip),%rcx # 142a70 <__PRETTY_FUNCTION__.3630> 0.00 : 8bbde: 48 8d 35 03 47 0b 00 lea 0xb4703(%rip),%rsi # 1402e8 <__PRETTY_FUNCTION__.11129+0x290f> 0.00 : 8bbe5: 48 8d 3d c9 03 0b 00 lea 0xb03c9(%rip),%rdi # 13bfb5 <__PRETTY_FUNCTION__.9176+0x23> 0.00 : 8bbec: ba ec 00 00 00 mov $0xec,%edx 0.00 : 8bbf1: e8 2a fd f9 ff callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000113650 <_dl_vdso_vsym>: 100.00 : 113650: 48 83 ec 38 sub $0x38,%rsp 0.00 : 113654: 4c 8b 15 d5 e7 25 00 mov 0x25e7d5(%rip),%r10 # 371e30 <_DYNAMIC+0x2d0> 0.00 : 11365b: 49 89 f0 mov %rsi,%r8 0.00 : 11365e: 49 8b b2 b8 00 00 00 mov 0xb8(%r10),%rsi 0.00 : 113665: 48 85 f6 test %rsi,%rsi 0.00 : 113668: 75 0e jne 113678 <_dl_vdso_vsym+0x28> 0.00 : 11366a: 31 c0 xor %eax,%eax 0.00 : 11366c: 48 83 c4 38 add $0x38,%rsp 0.00 : 113670: c3 retq 0.00 : 113671: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 113678: 48 8d 44 24 10 lea 0x10(%rsp),%rax 0.00 : 11367d: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 113684: 00 00 0.00 : 113686: 48 8d 8e 88 03 00 00 lea 0x388(%rsi),%rcx 0.00 : 11368d: 48 8d 54 24 28 lea 0x28(%rsp),%rdx 0.00 : 113692: 45 31 c9 xor %r9d,%r9d 0.00 : 113695: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 11369c: 00 00 0.00 : 11369e: 48 c7 44 24 20 00 00 movq $0x0,0x20(%rsp) 0.00 : 1136a5: 00 00 0.00 : 1136a7: c6 44 24 14 20 movb $0x20,0x14(%rsp) 0.00 : 1136ac: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 1136b1: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 1136b8: 00 00 0.00 : 1136ba: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 1136c1: 41 ff 92 e0 00 00 00 callq *0xe0(%r10) 0.00 : 1136c8: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 1136cd: 48 89 c1 mov %rax,%rcx 0.00 : 1136d0: 48 85 d2 test %rdx,%rdx 0.00 : 1136d3: 74 95 je 11366a <_dl_vdso_vsym+0x1a> 0.00 : 1136d5: 31 c0 xor %eax,%eax 0.00 : 1136d7: 48 85 c9 test %rcx,%rcx 0.00 : 1136da: 74 03 je 1136df <_dl_vdso_vsym+0x8f> 0.00 : 1136dc: 48 8b 01 mov (%rcx),%rax 0.00 : 1136df: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : 1136e3: eb 87 jmp 11366c <_dl_vdso_vsym+0x1c> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000021f0 : 0.00 : 21f0: 31 d2 xor %edx,%edx 0.00 : 21f2: 48 83 3d 96 dd 21 00 cmpq $0x0,0x21dd96(%rip) # 21ff90 <_rtld_global+0xf30> 0.00 : 21f9: 00 0.00 : 21fa: 48 8b 05 5f dd 21 00 mov 0x21dd5f(%rip),%rax # 21ff60 <_rtld_global+0xf00> 0.00 : 2201: 53 push %rbx 0.00 : 2202: 48 89 05 67 dd 21 00 mov %rax,0x21dd67(%rip) # 21ff70 <_rtld_global+0xf10> 0.00 : 2209: 74 05 je 2210 0.00 : 220b: 48 89 d0 mov %rdx,%rax 0.00 : 220e: 5b pop %rbx 0.00 : 220f: c3 retq 0.00 : 2210: 48 8d 78 40 lea 0x40(%rax),%rdi 0.00 : 2214: 48 8d 58 3f lea 0x3f(%rax),%rbx 0.00 : 2218: be 01 00 00 00 mov $0x1,%esi 0.00 : 221d: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 2221: e8 aa e8 ff ff callq ad0 0.00 : 2226: 48 89 05 3b dd 21 00 mov %rax,0x21dd3b(%rip) # 21ff68 <_rtld_global+0xf08> 100.00 : 222d: 48 89 18 mov %rbx,(%rax) 0.00 : 2230: 48 89 c6 mov %rax,%rsi 0.00 : 2233: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 223a: 00 0.00 : 223b: 48 83 3d ad ce 21 00 cmpq $0x0,0x21cead(%rip) # 21f0f0 <_rtld_global+0x90> 0.00 : 2242: 00 0.00 : 2243: 0f 85 f1 00 00 00 jne 233a 0.00 : 2249: 48 8b 15 10 ce 21 00 mov 0x21ce10(%rip),%rdx # 21f060 <_rtld_global> 0.00 : 2250: 31 c9 xor %ecx,%ecx 0.00 : 2252: 31 c0 xor %eax,%eax 0.00 : 2254: 48 85 d2 test %rdx,%rdx 0.00 : 2257: 74 25 je 227e 0.00 : 2259: 48 83 ba 30 04 00 00 cmpq $0x0,0x430(%rdx) 0.00 : 2260: 00 0.00 : 2261: 74 0f je 2272 0.00 : 2263: 48 63 c1 movslq %ecx,%rax 0.00 : 2266: 83 c1 01 add $0x1,%ecx 0.00 : 2269: 48 c1 e0 04 shl $0x4,%rax 0.00 : 226d: 48 89 54 06 18 mov %rdx,0x18(%rsi,%rax,1) 0.00 : 2272: 48 8b 52 18 mov 0x18(%rdx),%rdx 0.00 : 2276: 48 85 d2 test %rdx,%rdx 0.00 : 2279: 75 de jne 2259 0.00 : 227b: 48 63 c1 movslq %ecx,%rax 0.00 : 227e: 48 39 05 db dc 21 00 cmp %rax,0x21dcdb(%rip) # 21ff60 <_rtld_global+0xf00> 0.00 : 2285: 0f 85 90 00 00 00 jne 231b 0.00 : 228b: e8 90 f2 00 00 callq 11520 <_dl_determine_tlsoffset> 0.00 : 2290: e8 7b f1 00 00 callq 11410 <_dl_allocate_tls_storage> 0.00 : 2295: 48 85 c0 test %rax,%rax 0.00 : 2298: 48 89 c2 mov %rax,%rdx 0.00 : 229b: 74 53 je 22f0 0.00 : 229d: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 22a1: bf 02 10 00 00 mov $0x1002,%edi 0.00 : 22a6: 48 89 d6 mov %rdx,%rsi 0.00 : 22a9: 48 89 05 e0 dc 21 00 mov %rax,0x21dce0(%rip) # 21ff90 <_rtld_global+0xf30> 0.00 : 22b0: 48 89 12 mov %rdx,(%rdx) 0.00 : 22b3: b8 9e 00 00 00 mov $0x9e,%eax 0.00 : 22b8: 48 89 52 10 mov %rdx,0x10(%rdx) 0.00 : 22bc: 0f 05 syscall 0.00 : 22be: 85 c0 test %eax,%eax 0.00 : 22c0: 74 4d je 230f 0.00 : 22c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 22c8: 48 8d 15 99 85 01 00 lea 0x18599(%rip),%rdx # 1a868 <__PRETTY_FUNCTION__.3644+0x4f7> 0.00 : 22cf: 48 8d 35 ca 85 01 00 lea 0x185ca(%rip),%rsi # 1a8a0 <__PRETTY_FUNCTION__.3644+0x52f> 0.00 : 22d6: bf 02 00 00 00 mov $0x2,%edi 0.00 : 22db: 31 c0 xor %eax,%eax 0.00 : 22dd: e8 1e cf 00 00 callq f200 <_dl_dprintf> 0.00 : 22e2: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 22e7: e8 d4 3f 01 00 callq 162c0 <_Exit> 0.00 : 22ec: eb da jmp 22c8 0.00 : 22ee: 66 90 xchg %ax,%ax 0.00 : 22f0: 48 8d 35 39 85 01 00 lea 0x18539(%rip),%rsi # 1a830 <__PRETTY_FUNCTION__.3644+0x4bf> 0.00 : 22f7: bf 02 00 00 00 mov $0x2,%edi 0.00 : 22fc: 31 c0 xor %eax,%eax 0.00 : 22fe: e8 fd ce 00 00 callq f200 <_dl_dprintf> 0.00 : 2303: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 2308: e8 b3 3f 01 00 callq 162c0 <_Exit> 0.00 : 230d: eb e1 jmp 22f0 0.00 : 230f: c6 05 5a dd 21 00 01 movb $0x1,0x21dd5a(%rip) # 220070 0.00 : 2316: e9 f0 fe ff ff jmpq 220b 0.00 : 231b: 48 8d 0d e0 75 01 00 lea 0x175e0(%rip),%rcx # 19902 <__PRETTY_FUNCTION__.12417> 0.00 : 2322: 48 8d 35 3e 72 01 00 lea 0x1723e(%rip),%rsi # 19567 0.00 : 2329: 48 8d 3d d8 84 01 00 lea 0x184d8(%rip),%rdi # 1a808 <__PRETTY_FUNCTION__.3644+0x497> 0.00 : 2330: ba f6 02 00 00 mov $0x2f6,%edx 0.00 : 2335: e8 36 2a 01 00 callq 14d70 <__GI___assert_fail> 0.00 : 233a: 48 8d 0d c1 75 01 00 lea 0x175c1(%rip),%rcx # 19902 <__PRETTY_FUNCTION__.12417> 0.00 : 2341: 48 8d 35 1f 72 01 00 lea 0x1721f(%rip),%rsi # 19567 0.00 : 2348: 48 8d 3d 81 84 01 00 lea 0x18481(%rip),%rdi # 1a7d0 <__PRETTY_FUNCTION__.3644+0x45f> 0.00 : 234f: ba ea 02 00 00 mov $0x2ea,%edx 0.00 : 2354: e8 17 2a 01 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000ae70 <_dl_protect_relro>: 0.00 : ae70: 53 push %rbx 0.00 : ae71: 48 8b 97 58 04 00 00 mov 0x458(%rdi),%rdx 0.00 : ae78: 48 89 fb mov %rdi,%rbx 0.00 : ae7b: 48 03 17 add (%rdi),%rdx 0.00 : ae7e: 48 8b 05 b3 3d 21 00 mov 0x213db3(%rip),%rax # 21ec38 <_rtld_global_ro+0x18> 0.00 : ae85: 48 f7 d8 neg %rax 0.00 : ae88: 48 89 d6 mov %rdx,%rsi 0.00 : ae8b: 48 03 b3 60 04 00 00 add 0x460(%rbx),%rsi 0.00 : ae92: 48 89 c7 mov %rax,%rdi 0.00 : ae95: 48 21 d7 and %rdx,%rdi 0.00 : ae98: 48 21 c6 and %rax,%rsi 0.00 : ae9b: 48 39 f7 cmp %rsi,%rdi 0.00 : ae9e: 74 11 je aeb1 <_dl_protect_relro+0x41> 0.00 : aea0: 48 29 fe sub %rdi,%rsi 0.00 : aea3: ba 01 00 00 00 mov $0x1,%edx 0.00 : aea8: e8 83 b3 00 00 callq 16230 <__mprotect> 100.00 : aead: 85 c0 test %eax,%eax 0.00 : aeaf: 78 02 js aeb3 <_dl_protect_relro+0x43> 0.00 : aeb1: 5b pop %rbx 0.00 : aeb2: c3 retq 0.00 : aeb3: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : aeb7: 8b 3d c7 52 21 00 mov 0x2152c7(%rip),%edi # 220184 0.00 : aebd: 48 8d 0d 1c 1b 01 00 lea 0x11b1c(%rip),%rcx # 1c9e0 0.00 : aec4: 31 d2 xor %edx,%edx 0.00 : aec6: e8 35 30 00 00 callq df00 <_dl_signal_error> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000011410 <_dl_allocate_tls_storage>: 0.00 : 11410: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 11415: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 1141a: 31 db xor %ebx,%ebx 0.00 : 1141c: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 11421: 48 83 ec 18 sub $0x18,%rsp 0.00 : 11425: 4c 8b 25 4c eb 20 00 mov 0x20eb4c(%rip),%r12 # 21ff78 <_rtld_global+0xf18> 0.00 : 1142c: 48 8b 3d 55 eb 20 00 mov 0x20eb55(%rip),%rdi # 21ff88 <_rtld_global+0xf28> 0.00 : 11433: 4c 89 e6 mov %r12,%rsi 0.00 : 11436: e8 65 f6 fe ff callq aa0 <__libc_memalign@plt> 0.00 : 1143b: 48 85 c0 test %rax,%rax 0.00 : 1143e: 48 89 c5 mov %rax,%rbp 0.00 : 11441: 74 3e je 11481 <_dl_allocate_tls_storage+0x71> 0.00 : 11443: 4a 8d 9c 20 00 f7 ff lea -0x900(%rax,%r12,1),%rbx 0.00 : 1144a: ff 0.00 : 1144b: b9 20 01 00 00 mov $0x120,%ecx 0.00 : 11450: 31 c0 xor %eax,%eax 0.00 : 11452: be 10 00 00 00 mov $0x10,%esi 0.00 : 11457: 48 89 df mov %rbx,%rdi 100.00 : 1145a: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 1145d: 48 8b 3d fc ea 20 00 mov 0x20eafc(%rip),%rdi # 21ff60 <_rtld_global+0xf00> 0.00 : 11464: 4c 8d 67 0e lea 0xe(%rdi),%r12 0.00 : 11468: 48 83 c7 10 add $0x10,%rdi 0.00 : 1146c: e8 5f f6 fe ff callq ad0 0.00 : 11471: 48 85 c0 test %rax,%rax 0.00 : 11474: 74 2a je 114a0 <_dl_allocate_tls_storage+0x90> 0.00 : 11476: 4c 89 20 mov %r12,(%rax) 0.00 : 11479: 48 83 c0 10 add $0x10,%rax 0.00 : 1147d: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 11481: 48 89 d8 mov %rbx,%rax 0.00 : 11484: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 11489: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 1148d: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 11492: 48 83 c4 18 add $0x18,%rsp 0.00 : 11496: c3 retq 0.00 : 11497: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1149e: 00 00 0.00 : 114a0: 48 89 ef mov %rbp,%rdi 0.00 : 114a3: 31 db xor %ebx,%ebx 0.00 : 114a5: e8 46 f6 fe ff callq af0 0.00 : 114aa: eb d5 jmp 11481 <_dl_allocate_tls_storage+0x71> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000149f0 <_dl_sysdep_start>: 25.00 : 149f0: 41 54 push %r12 0.00 : 149f2: 49 89 f4 mov %rsi,%r12 0.00 : 149f5: 55 push %rbp 0.00 : 149f6: 53 push %rbx 0.00 : 149f7: 48 83 ec 10 sub $0x10,%rsp 0.00 : 149fb: 48 89 3d 56 a4 20 00 mov %rdi,0x20a456(%rip) # 21ee58 <__libc_stack_end> 0.00 : 14a02: 48 8b 07 mov (%rdi),%rax 0.00 : 14a05: 48 83 c7 08 add $0x8,%rdi 0.00 : 14a09: 48 89 3d f8 a1 20 00 mov %rdi,0x20a1f8(%rip) # 21ec08 <_dl_argv> 0.00 : 14a10: 89 05 d2 a3 20 00 mov %eax,0x20a3d2(%rip) # 21ede8 <_dl_argc> 0.00 : 14a16: 48 98 cltq 0.00 : 14a18: 48 8d 44 c7 08 lea 0x8(%rdi,%rax,8),%rax 0.00 : 14a1d: 48 89 05 0c b7 20 00 mov %rax,0x20b70c(%rip) # 220130 <__environ> 0.00 : 14a24: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 14a28: 74 10 je 14a3a <_dl_sysdep_start+0x4a> 0.00 : 14a2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 14a30: 48 83 c0 08 add $0x8,%rax 0.00 : 14a34: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 14a38: 75 f6 jne 14a30 <_dl_sysdep_start+0x40> 0.00 : 14a3a: 48 8d 50 08 lea 0x8(%rax),%rdx 0.00 : 14a3e: 48 8d 0d bb c0 fe ff lea -0x13f45(%rip),%rcx # b00 <_start> 0.00 : 14a45: 48 c7 05 d8 a1 20 00 movq $0x0,0x20a1d8(%rip) # 21ec28 <_rtld_global_ro+0x8> 0.00 : 14a4c: 00 00 00 00 0.00 : 14a50: 31 ed xor %ebp,%ebp 0.00 : 14a52: 31 db xor %ebx,%ebx 0.00 : 14a54: 48 89 15 0d a4 20 00 mov %rdx,0x20a40d(%rip) # 21ee68 <_dl_auxv> 0.00 : 14a5b: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 14a60: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 14a64: 48 85 c0 test %rax,%rax 0.00 : 14a67: 74 37 je 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14a69: 48 8d 0d 90 42 00 00 lea 0x4290(%rip),%rcx # 18d00 0.00 : 14a70: 48 83 e8 03 sub $0x3,%rax 0.00 : 14a74: 48 83 f8 1e cmp $0x1e,%rax 0.00 : 14a78: 77 16 ja 14a90 <_dl_sysdep_start+0xa0> 25.00 : 14a7a: 48 63 04 81 movslq (%rcx,%rax,4),%rax 25.00 : 14a7e: 48 01 c8 add %rcx,%rax 0.00 : 14a81: ff e0 jmpq *%rax 0.00 : 14a83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14a88: 48 8b 6a 08 mov 0x8(%rdx),%rbp 0.00 : 14a8c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 14a90: 48 83 c2 10 add $0x10,%rdx 0.00 : 14a94: 48 8b 02 mov (%rdx),%rax 0.00 : 14a97: 48 85 c0 test %rax,%rax 0.00 : 14a9a: 75 d4 jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14a9c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 14aa0: 31 ff xor %edi,%edi 0.00 : 14aa2: e8 69 09 00 00 callq 15410 <__brk> 0.00 : 14aa7: 48 8b 3d 7a a1 20 00 mov 0x20a17a(%rip),%rdi # 21ec28 <_rtld_global_ro+0x8> 0.00 : 14aae: 48 85 ff test %rdi,%rdi 0.00 : 14ab1: 74 14 je 14ac7 <_dl_sysdep_start+0xd7> 0.00 : 14ab3: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 14ab6: 0f 85 a4 01 00 00 jne 14c60 <_dl_sysdep_start+0x270> 0.00 : 14abc: 48 c7 05 61 a1 20 00 movq $0x0,0x20a161(%rip) # 21ec28 <_rtld_global_ro+0x8> 0.00 : 14ac3: 00 00 00 00 0.00 : 14ac7: 31 ff xor %edi,%edi 0.00 : 14ac9: e8 92 09 00 00 callq 15460 <__sbrk> 0.00 : 14ace: 48 89 c2 mov %rax,%rdx 0.00 : 14ad1: 48 8d 05 f0 b6 20 00 lea 0x20b6f0(%rip),%rax # 2201c8 <_end> 0.00 : 14ad8: 48 39 c2 cmp %rax,%rdx 0.00 : 14adb: 0f 84 90 01 00 00 je 14c71 <_dl_sysdep_start+0x281> 0.00 : 14ae1: 8b 05 69 a3 20 00 mov 0x20a369(%rip),%eax # 21ee50 <__libc_enable_secure> 0.00 : 14ae7: 85 c0 test %eax,%eax 0.00 : 14ae9: 0f 85 9d 01 00 00 jne 14c8c <_dl_sysdep_start+0x29c> 0.00 : 14aef: 48 8d 54 24 08 lea 0x8(%rsp),%rdx 0.00 : 14af4: 89 de mov %ebx,%esi 0.00 : 14af6: 48 89 ef mov %rbp,%rdi 0.00 : 14af9: 48 8b 0d 68 a3 20 00 mov 0x20a368(%rip),%rcx # 21ee68 <_dl_auxv> 0.00 : 14b00: 41 ff d4 callq *%r12 0.00 : 14b03: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 14b08: 48 83 c4 10 add $0x10,%rsp 0.00 : 14b0c: 5b pop %rbx 0.00 : 14b0d: 5d pop %rbp 0.00 : 14b0e: 41 5c pop %r12 0.00 : 14b10: c3 retq 0.00 : 14b11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 14b18: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14b1c: 48 83 c2 10 add $0x10,%rdx 0.00 : 14b20: 48 89 05 a9 a1 20 00 mov %rax,0x20a1a9(%rip) # 21ecd0 <_rtld_global_ro+0xb0> 0.00 : 14b27: 48 8b 02 mov (%rdx),%rax 0.00 : 14b2a: 48 85 c0 test %rax,%rax 0.00 : 14b2d: 0f 85 3d ff ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14b33: e9 68 ff ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14b38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14b3f: 00 0.00 : 14b40: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14b44: 48 83 c2 10 add $0x10,%rdx 0.00 : 14b48: 48 89 05 11 a3 20 00 mov %rax,0x20a311(%rip) # 21ee60 <_dl_random> 0.00 : 14b4f: 48 8b 02 mov (%rdx),%rax 0.00 : 14b52: 48 85 c0 test %rax,%rax 0.00 : 14b55: 0f 85 15 ff ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14b5b: e9 40 ff ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14b60: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14b64: 48 83 c2 10 add $0x10,%rdx 0.00 : 14b68: 89 05 e2 a2 20 00 mov %eax,0x20a2e2(%rip) # 21ee50 <__libc_enable_secure> 0.00 : 14b6e: 48 8b 02 mov (%rdx),%rax 0.00 : 14b71: 48 85 c0 test %rax,%rax 0.00 : 14b74: 0f 85 f6 fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14b7a: e9 21 ff ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14b7f: 90 nop 0.00 : 14b80: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14b84: 48 83 c2 10 add $0x10,%rdx 0.00 : 14b88: 66 89 05 dd a0 20 00 mov %ax,0x20a0dd(%rip) # 21ec6c <_rtld_global_ro+0x4c> 0.00 : 14b8f: 48 8b 02 mov (%rdx),%rax 0.00 : 14b92: 48 85 c0 test %rax,%rax 0.00 : 14b95: 0f 85 d5 fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14b9b: e9 00 ff ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14ba0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14ba4: 48 83 c2 10 add $0x10,%rdx 0.00 : 14ba8: 89 05 a2 a0 20 00 mov %eax,0x20a0a2(%rip) # 21ec50 <_rtld_global_ro+0x30> 0.00 : 14bae: 48 8b 02 mov (%rdx),%rax 0.00 : 14bb1: 48 85 c0 test %rax,%rax 0.00 : 14bb4: 0f 85 b6 fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14bba: e9 e1 fe ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14bbf: 90 nop 25.00 : 14bc0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14bc4: 48 83 c2 10 add $0x10,%rdx 0.00 : 14bc8: 48 89 05 a9 a0 20 00 mov %rax,0x20a0a9(%rip) # 21ec78 <_rtld_global_ro+0x58> 0.00 : 14bcf: 48 8b 02 mov (%rdx),%rax 0.00 : 14bd2: 48 85 c0 test %rax,%rax 0.00 : 14bd5: 0f 85 95 fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14bdb: e9 c0 fe ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14be0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14be4: 48 83 c2 10 add $0x10,%rdx 0.00 : 14be8: 48 89 05 39 a0 20 00 mov %rax,0x20a039(%rip) # 21ec28 <_rtld_global_ro+0x8> 0.00 : 14bef: 48 8b 02 mov (%rdx),%rax 0.00 : 14bf2: 48 85 c0 test %rax,%rax 0.00 : 14bf5: 0f 85 75 fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14bfb: e9 a0 fe ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14c00: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14c04: 48 83 c2 10 add $0x10,%rdx 0.00 : 14c08: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 14c0d: 48 8b 02 mov (%rdx),%rax 0.00 : 14c10: 48 85 c0 test %rax,%rax 0.00 : 14c13: 0f 85 57 fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14c19: e9 82 fe ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14c1e: 66 90 xchg %ax,%ax 0.00 : 14c20: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14c24: 48 83 c2 10 add $0x10,%rdx 0.00 : 14c28: 48 89 05 09 a0 20 00 mov %rax,0x20a009(%rip) # 21ec38 <_rtld_global_ro+0x18> 0.00 : 14c2f: 48 8b 02 mov (%rdx),%rax 0.00 : 14c32: 48 85 c0 test %rax,%rax 0.00 : 14c35: 0f 85 35 fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14c3b: e9 60 fe ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14c40: 8b 5a 08 mov 0x8(%rdx),%ebx 0.00 : 14c43: 48 83 c2 10 add $0x10,%rdx 0.00 : 14c47: 48 8b 02 mov (%rdx),%rax 0.00 : 14c4a: 48 85 c0 test %rax,%rax 0.00 : 14c4d: 0f 85 1d fe ff ff jne 14a70 <_dl_sysdep_start+0x80> 0.00 : 14c53: e9 48 fe ff ff jmpq 14aa0 <_dl_sysdep_start+0xb0> 0.00 : 14c58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14c5f: 00 0.00 : 14c60: e8 0b 1b 00 00 callq 16770 <__GI_strlen> 0.00 : 14c65: 48 89 05 c4 9f 20 00 mov %rax,0x209fc4(%rip) # 21ec30 <_rtld_global_ro+0x10> 0.00 : 14c6c: e9 56 fe ff ff jmpq 14ac7 <_dl_sysdep_start+0xd7> 0.00 : 14c71: 48 8b 3d c0 9f 20 00 mov 0x209fc0(%rip),%rdi # 21ec38 <_rtld_global_ro+0x18> 0.00 : 14c78: 48 8d 47 ff lea -0x1(%rdi),%rax 0.00 : 14c7c: 48 21 d0 and %rdx,%rax 0.00 : 14c7f: 48 29 c7 sub %rax,%rdi 0.00 : 14c82: e8 d9 07 00 00 callq 15460 <__sbrk> 0.00 : 14c87: e9 55 fe ff ff jmpq 14ae1 <_dl_sysdep_start+0xf1> 0.00 : 14c8c: e8 9f 10 00 00 callq 15d30 <__libc_check_standard_fds> 0.00 : 14c91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 14c98: e9 52 fe ff ff jmpq 14aef <_dl_sysdep_start+0xff> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/3w-sas.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/3w-sas.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000610 : 0.00 : 610: 41 57 push %r15 0.00 : 642: 4c 63 ce rex.XB sbb %eax,(%r8) 0.00 : 645: 41 56 41 55 49 89 fd movb $0x0,0x84(%rbx) 0.00 : 64c: 41 54 55 53 48 83 ec movb $0x10,0x80(%rbx) 0.00 : 653: 08 4a 8b 9c cf 08 je 85e 0.00 : 659: 10 00 00 mov (%rdx),%rax 0.00 : 65c: 48 85 d2 test %r14,%r14 0.00 : 65f: 4e 8b b4 cf 10 30 00 mov %rax,0x88(%rbx) 0.00 : 666: 00 c6 43 7c mov 0x8(%rdx),%rax 0.00 : 66a: 80 66 c7 43 16 00 00 mov %rax,0x90(%rbx) 0.00 : 671: c6 43 19 00 c6 83 je 880 0.00 : 677: 84 00 00 mov (%r14),%rax 0.00 : 67a: 00 00 mov %esi,%edx 0.00 : 67c: c6 83 80 00 00 and $0xfff,%dx 0.00 : 681: 00 10 0f 84 05 02 mov 0x80(%rax),%eax 0.00 : 687: 00 00 48 8b 02 4d mov %al,0x81(%rbx) 0.00 : 68d: 85 f6 48 mov (%r14),%rax 0.00 : 690: 89 83 88 00 00 00 mov 0x84(%rax),%eax 0.00 : 696: 48 8b 42 shl $0xc,%eax 0.00 : 699: 08 48 or %eax,%edx 0.00 : 69b: 89 83 90 00 00 00 0f mov %dx,0x82(%rbx) 0.00 : 6a2: 84 09 02 test %r8,%r8 0.00 : 6a5: 00 00 49 8b 06 89 f2 movb $0x10,0x85(%rbx) 0.00 : 6ac: 66 81 e2 ff 0f 8b je 7a9 0.00 : 6b2: 80 80 xor %edx,%edx 0.00 : 6b4: 00 00 test %ecx,%ecx 0.00 : 6b6: 00 88 jle 6ea 0.00 : 6b8: 83 81 00 lea -0x1(%rcx),%eax 0.00 : 6bb: 00 00 49 8b lea 0x1(%rax),%rsi 0.00 : 6bf: 06 8b 80 84 shl $0x4,%rsi 0.00 : 6c3: 00 00 00 c1 e0 nopl 0x0(%rax,%rax,1) 0.00 : 6c8: 0c 09 c2 66 mov (%r8,%rdx,1),%rax 0.00 : 6cc: 89 93 82 00 00 00 4d mov %rax,0x98(%rbx,%rdx,1) 0.00 : 6d3: 85 0.00 : 6d4: c0 c6 83 85 00 mov 0x8(%r8,%rdx,1),%rax 0.00 : 6d9: 00 00 10 0f 84 f7 00 mov %rax,0xa0(%rbx,%rdx,1) 0.00 : 6e0: 00 0.00 : 6e1: 00 31 d2 85 add $0x10,%rdx 0.00 : 6e5: c9 7e 32 cmp %rsi,%rdx 0.00 : 6e8: 8d 41 jne 6c8 0.00 : 6ea: ff 48 mov %ecx,%eax 0.00 : 6ec: 8d 70 01 48 and $0xfff,%ax 0.00 : 6f0: c1 e6 04 0f 1f 44 00 mov %ax,0x86(%rbx) 0.00 : 6f7: 00 49 8b test %r14,%r14 0.00 : 6fa: 04 10 je 72e 0.00 : 6fc: 48 89 84 13 mov 0x68(%r14),%eax 0.00 : 700: 98 00 00 shr $0x9,%eax 0.00 : 703: 00 49 8b 44 10 08 48 cmp 0x3d2c(%r13),%eax 0.00 : 70a: 89 84 13 a0 00 00 00 mov %eax,0x3d28(%r13) 0.00 : 711: 48 83 jbe 71a 0.00 : 713: c2 10 48 39 f2 75 de mov %eax,0x3d2c(%r13) 0.00 : 71a: 89 c8 66 25 mov 0x60(%r14),%eax 0.00 : 71e: ff 0f 66 89 83 86 00 cmp %eax,0x3d1c(%r13) 0.00 : 725: 00 00 4d 85 f6 74 32 mov %eax,0x3d20(%r13) 0.00 : 72c: 41 8b jb 7a0 0.00 : 72e: 46 68 c1 e8 09 41 3b mov 0x1808(%r13,%r9,8),%rdx 0.00 : 735: 85 0.00 : 736: 2c 3d 00 00 mov 0x0(%r13),%rax 0.00 : 73a: 41 89 85 28 sub $0xffffffffffffff80,%rdx 0.00 : 73e: 3d 00 00 76 07 41 add $0xc4,%rax 0.00 : 744: 89 85 2c mov %rdx,%rcx 0.00 : 747: 3d 00 00 41 shr $0x20,%rcx 0.00 : 74b: 8b 46 mov %ecx,(%rax) 0.00 : 74d: 60 41 39 85 mov 0x0(%r13),%rax 0.00 : 751: 1c 3d 00 or $0x1,%edx 0.00 : 754: 00 41 89 85 20 3d add $0xc0,%rax 0.00 : 75a: 00 00 mov %edx,(%rax) 0.00 : 75c: 72 72 4b 8b 94 cd 08 movl $0x4,0x3914(%r13,%r9,4) 0.00 : 763: 18 00 00 49 8b 0.00 : 768: 45 00 48 83 ea 80 48 mov 0x3d14(%r13),%eax 0.00 : 76f: 05 c4 xor %edx,%edx 0.00 : 771: 00 00 00 add $0x1,%eax 0.00 : 774: 48 89 d1 48 c1 e9 20 cmp 0x3d18(%r13),%eax 0.00 : 77b: 89 08 49 8b 45 00 83 mov %eax,0x3d14(%r13) 0.00 : 782: ca 01 jbe 78d 0.00 : 784: 48 05 c0 00 00 00 89 mov %eax,0x3d18(%r13) 0.00 : 78b: 10 43 xor %edx,%edx 0.00 : 78d: c7 84 8d 14 add $0x8,%rsp 0.00 : 791: 39 00 mov %edx,%eax 0.00 : 793: 00 pop %rbx 0.00 : 794: 04 pop %rbp 0.00 : 795: 00 00 pop %r12 0.00 : 797: 00 41 pop %r13 0.00 : 799: 8b 85 pop %r14 0.00 : 79b: 14 3d pop %r15 0.00 : 79d: 00 retq 0.00 : 79e: 00 31 xchg %ax,%ax 0.00 : 7a0: d2 83 c0 01 41 3b 85 mov %eax,0x3d1c(%r13) 0.00 : 7a7: 18 3d jmp 72e 0.00 : 7a9: 00 00 41 89 mov 0x60(%r14),%eax 0.00 : 7ad: 85 14 test %eax,%eax 0.00 : 7af: 3d 00 00 76 09 41 je 6f7 0.00 : 7b5: 89 85 18 3d 00 00 31 mov 0x3010(%r13,%r9,8),%rbp 0.00 : 7bc: d2 0.00 : 7bd: 48 83 c4 08 mov %r9,(%rsp) 0.00 : 7c1: 89 d0 5b mov %rbp,%rdi 0.00 : 7c4: 5d 41 5c 41 5d callq 7c9 0.00 : 7c9: 41 5e 41 cmp $0x0,%eax 0.00 : 7cc: 5f c3 66 mov %eax,%r15d 0.00 : 7cf: 90 41 89 85 1c mov $0x1,%edx 0.00 : 7d4: 3d 00 00 eb mov (%rsp),%r9 0.00 : 7d8: 85 41 je 78d 0.00 : 7da: 8b 46 60 85 c0 0f jl 899 0.00 : 7e0: 84 42 ff ff ff 4b 8b movl $0x2,0xd0(%rbp) 0.00 : 7e7: ac cd 10 0.00 : 7ea: 30 00 00 4c 89 0c mov %eax,0xc8(%rbp) 0.00 : 7f0: 24 48 89 xor %r12d,%r12d 0.00 : 7f3: ef e8 00 00 mov 0x58(%r14),%rdi 0.00 : 7f7: 00 00 83 mov %rbx,%rbp 0.00 : 7fa: f8 00 41 89 c7 ba nopw 0x0(%rax,%rax,1) 0.00 : 800: 01 00 00 00 mov 0x10(%rdi),%rax 0.00 : 804: 4c 8b 0c 24 add $0x1,%r12d 0.00 : 808: 74 b3 0f 8c b9 00 00 mov %rax,0x98(%rbp) 0.00 : 80f: 00 c7 85 mov 0x18(%rdi),%eax 100.00 : 812: d0 00 00 00 02 00 00 mov %rax,0xa0(%rbp) 0.00 : 819: 00 89 85 c8 mov %r9,(%rsp) 0.00 : 81d: 00 00 00 45 add $0x10,%rbp 0.00 : 821: 31 e4 49 8b 7e callq 826 0.00 : 826: 58 48 89 cmp %r15d,%r12d 0.00 : 829: dd 66 0f mov %rax,%rdi 0.00 : 82c: 1f 44 00 00 mov (%rsp),%r9 0.00 : 830: 48 8b jl 800 0.00 : 832: 47 10 41 mov (%r14),%rax 0.00 : 835: 83 c4 01 48 89 85 mov 0x84(%rax),%edx 0.00 : 83b: 98 00 00 00 8b 47 18 mov 0x3010(%r13,%r9,8),%rax 0.00 : 842: 48 0.00 : 843: 89 85 a0 mov 0x60(%rax),%eax 0.00 : 846: 00 00 00 shr $0x4,%edx 0.00 : 849: 4c 89 0c shl $0xc,%edx 0.00 : 84c: 24 48 83 c5 and $0xfff,%ax 0.00 : 850: 10 e8 or %eax,%edx 0.00 : 852: 00 00 00 00 45 39 fc mov %dx,0x86(%rbx) 0.00 : 859: 48 89 c7 4c 8b jmpq 6f7 0.00 : 85e: 0c 24 7c ce mov 0x50(%r14),%rax 0.00 : 862: 49 8b 06 test %r14,%r14 0.00 : 865: 8b 90 84 mov (%rax),%rdx 0.00 : 868: 00 00 00 4b 8b 84 cd mov %rdx,0x88(%rbx) 0.00 : 86f: 10 30 00 00 mov 0x8(%rax),%rax 0.00 : 873: 8b 40 60 c1 ea 04 c1 mov %rax,0x90(%rbx) 0.00 : 87a: e2 0c 66 25 ff 0f jne 677 0.00 : 880: 09 c2 mov %esi,%eax 0.00 : 882: 66 89 93 86 00 00 00 movb $0x0,0x81(%rbx) 0.00 : 889: e9 99 fe ff and $0xfff,%ax 0.00 : 88d: ff 49 8b 46 50 4d 85 mov %ax,0x82(%rbx) 0.00 : 894: f6 48 8b 10 48 jmpq 6a2 0.00 : 899: 89 93 88 00 00 00 48 mov 0x3d38(%r13),%rax 0.00 : 8a0: 8b 40 08 test %rax,%rax 0.00 : 8a3: 48 89 je 8d4 0.00 : 8a5: 83 90 00 00 00 0f mov 0xdc(%rax),%esi 0.00 : 8ab: 85 f7 fd ff ff mov $0x6,%edx 0.00 : 8b0: 89 f0 c6 83 81 00 00 mov $0x0,%r8 0.00 : 8b7: 00 00 66 25 ff mov $0x1,%ecx 0.00 : 8bc: 0f 66 89 83 82 00 00 mov $0x0,%rdi 0.00 : 8c3: 00 e9 xor %eax,%eax 0.00 : 8c5: 09 fe ff ff 49 callq 8ca 0.00 : 8ca: 8b 85 38 3d 00 mov $0x1,%edx 0.00 : 8cf: 00 48 85 c0 74 jmpq 78d 0.00 : 8d4: 2f 8b b0 dc 00 mov $0x1,%edx 0.00 : 8d9: 00 00 ba 06 00 00 00 mov $0x0,%rcx 0.00 : 8e0: 49 c7 c0 00 00 mov $0x6,%esi 0.00 : 8e5: 00 00 b9 01 00 00 00 mov $0x0,%rdi 0.00 : 8ec: 48 c7 xor %eax,%eax 0.00 : 8ee: c7 00 00 00 00 callq 8f3 0.00 : 8f3: 31 c0 e8 00 00 mov $0x1,%edx 0.00 : 8f8: 00 00 ba 01 00 jmpq 78d : 8fd: 00 00 e9 nopl (%rax) : 900: b9 push %rbx : 901: fe ff ff movslq %esi,%r8 : 904: ba 01 00 mov %rdi,%rbx : 907: 00 00 48 c7 c1 mov $0x80,%edx : 90c: 00 00 xor %eax,%eax : 90e: 00 00 be 06 sub $0x20,%rsp : 912: 00 00 00 48 c7 c7 00 mov 0x1008(%rdi,%r8,8),%rdi : 919: 00 : 91a: 00 00 31 mov %rdx,%rcx : 91d: c0 e8 00 00 00 lea 0x10(%rsp),%rdx : 922: 00 ba 01 rep stos %rax,%es:(%rdi) : 925: 00 00 00 e9 90 fe ff movq $0x0,0x10(%rsp) : 92c: ff 0f Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000a9610 : 0.00 : a9610: b8 68 00 00 00 mov $0x68,%eax 100.00 : a9615: 0f 05 syscall Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416460 <__ctype_get_mb_cur_max@plt>: 100.00 : 416460: ff 25 1a 3f 27 00 jmpq *0x273f1a(%rip) # 68a380 0.00 : 416466: 68 6d 00 00 00 pushq $0x6d 0.00 : 41646b: e9 10 f9 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/common.c:1201 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000409d50 : : * : * Returns true if the query executed successfully, false otherwise. : */ : bool : SendQuery(const char *query) : { 0.00 : 409d50: 55 push %rbp 0.00 : 409d51: 48 89 e5 mov %rsp,%rbp 0.00 : 409d54: 41 57 push %r15 0.00 : 409d56: 41 56 push %r14 0.00 : 409d58: 41 55 push %r13 0.00 : 409d5a: 41 54 push %r12 0.00 : 409d5c: 53 push %rbx 0.00 : 409d5d: 48 81 ec e8 00 00 00 sub $0xe8,%rsp : double elapsed_msec = 0; : bool OK = false; : bool on_error_rollback_savepoint = false; : static bool on_error_rollback_warning = false; : : if (!pset.db) 0.00 : 409d64: 48 83 3d 34 13 26 00 cmpq $0x0,0x261334(%rip) # 66b0a0 0.00 : 409d6b: 00 : * : * Returns true if the query executed successfully, false otherwise. : */ : bool : SendQuery(const char *query) : { 0.00 : 409d6c: 48 89 bd f0 fe ff ff mov %rdi,-0x110(%rbp) : PGresult *results; : PGTransactionStatusType transaction_status; : double elapsed_msec = 0; 0.00 : 409d73: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 409d7a: 00 : bool OK = false; : bool on_error_rollback_savepoint = false; : static bool on_error_rollback_warning = false; : : if (!pset.db) 0.00 : 409d7b: 0f 84 62 08 00 00 je 40a5e3 : { : psql_error("You are currently not connected to a database.\n"); : goto sendquery_cleanup; : } : : if (pset.singlestep) 0.00 : 409d81: 80 3d 44 14 26 00 00 cmpb $0x0,0x261444(%rip) # 66b1cc 0.00 : 409d88: 0f 85 ea 05 00 00 jne 40a378 : fflush(stdout); : if (fgets(buf, sizeof(buf), stdin) != NULL) : if (buf[0] == 'x') : goto sendquery_cleanup; : } : else if (pset.echo == PSQL_ECHO_QUERIES) 0.00 : 409d8e: 83 3d 3f 14 26 00 01 cmpl $0x1,0x26143f(%rip) # 66b1d4 0.00 : 409d95: 0f 84 b5 07 00 00 je 40a550 : { : puts(query); : fflush(stdout); : } : : if (pset.logfile) 0.00 : 409d9b: 48 8b 3d 16 14 26 00 mov 0x261416(%rip),%rdi # 66b1b8 0.00 : 409da2: 48 85 ff test %rdi,%rdi 0.00 : 409da5: 74 1f je 409dc6 : { : fprintf(pset.logfile, 0.00 : 409da7: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 409dae: be 28 6b 43 00 mov $0x436b28,%esi 0.00 : 409db3: 31 c0 xor %eax,%eax 0.00 : 409db5: e8 26 9e ff ff callq 403be0 : _("********* QUERY **********\n" : "%s\n" : "**************************\n\n"), query); : fflush(pset.logfile); 0.00 : 409dba: 48 8b 3d f7 13 26 00 mov 0x2613f7(%rip),%rdi # 66b1b8 0.00 : 409dc1: e8 6a 9f ff ff callq 403d30 : } : : SetCancelConn(); 0.00 : 409dc6: e8 c5 ee ff ff callq 408c90 : : transaction_status = PQtransactionStatus(pset.db); 0.00 : 409dcb: 48 8b 3d ce 12 26 00 mov 0x2612ce(%rip),%rdi # 66b0a0 0.00 : 409dd2: e8 49 a0 ff ff callq 403e20 : : if (transaction_status == PQTRANS_IDLE && 0.00 : 409dd7: 85 c0 test %eax,%eax 0.00 : 409dd9: 0f 84 d1 02 00 00 je 40a0b0 : } : PQclear(results); : transaction_status = PQtransactionStatus(pset.db); : } : : if (transaction_status == PQTRANS_INTRANS && 0.00 : 409ddf: 83 f8 02 cmp $0x2,%eax 0.00 : 409de2: 0f 84 40 04 00 00 je 40a228 : psql_error("%s", PQerrorMessage(pset.db)); : PQclear(results); : ResetCancelConn(); : goto sendquery_cleanup; : } : PQclear(results); 0.00 : 409de8: c6 85 ff fe ff ff 00 movb $0x0,-0x101(%rbp) : on_error_rollback_savepoint = true; : } : } : : if (pset.fetch_count <= 0 || !is_select_command(query)) 0.00 : 409def: 8b 15 db 13 26 00 mov 0x2613db(%rip),%edx # 66b1d0 0.00 : 409df5: 85 d2 test %edx,%edx 0.00 : 409df7: 7e 5a jle 409e53 0.00 : 409df9: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 409e00: eb 0a jmp 409e0c 0.00 : 409e02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : for (;;) : { : query = skip_white_space(query); : if (query[0] == '(') : query++; 0.00 : 409e08: 48 8d 78 01 lea 0x1(%rax),%rdi : /* : * First advance over any whitespace, comments and left parentheses. : */ : for (;;) : { : query = skip_white_space(query); 0.00 : 409e0c: e8 3f ec ff ff callq 408a50 : if (query[0] == '(') 0.00 : 409e11: 80 38 28 cmpb $0x28,(%rax) : /* : * First advance over any whitespace, comments and left parentheses. : */ : for (;;) : { : query = skip_white_space(query); 0.00 : 409e14: 49 89 c4 mov %rax,%r12 : if (query[0] == '(') 0.00 : 409e17: 74 ef je 409e08 : * : * Returns true if the query executed successfully, false otherwise. : */ : bool : SendQuery(const char *query) : { 0.00 : 409e19: e8 92 a2 ff ff callq 4040b0 <__ctype_b_loc@plt> 0.00 : 409e1e: 31 db xor %ebx,%ebx 0.00 : 409e20: 49 89 c5 mov %rax,%r13 0.00 : 409e23: eb 10 jmp 409e35 0.00 : 409e25: 0f 1f 00 nopl (%rax) : /* : * Check word length (since "selectx" is not "select"). : */ : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 409e28: 8b 35 7a 12 26 00 mov 0x26127a(%rip),%esi # 66b0a8 0.00 : 409e2e: e8 5d 99 ff ff callq 403790 0.00 : 409e33: 01 c3 add %eax,%ebx : : /* : * Check word length (since "selectx" is not "select"). : */ : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 409e35: 48 63 c3 movslq %ebx,%rax 0.00 : 409e38: 49 8d 3c 04 lea (%r12,%rax,1),%rdi 0.00 : 409e3c: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 409e40: 0f b6 17 movzbl (%rdi),%edx 0.00 : 409e43: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 409e48: 75 de jne 409e28 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 6 && pg_strncasecmp(query, "select", 6) == 0) 0.00 : 409e4a: 83 fb 06 cmp $0x6,%ebx 0.00 : 409e4d: 0f 84 0d 06 00 00 je 40a460 : { : /* Default fetch-it-all-and-print mode */ : instr_time before, : after; : : if (pset.timing) 0.00 : 409e53: 80 3d 56 13 26 00 00 cmpb $0x0,0x261356(%rip) # 66b1b0 0.00 : 409e5a: 0f 85 70 05 00 00 jne 40a3d0 : INSTR_TIME_SET_CURRENT(before); : : results = PQexec(pset.db, query); 0.00 : 409e60: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 409e67: 48 8b 3d 32 12 26 00 mov 0x261232(%rip),%rdi # 66b0a0 : : /* these operations are included in the timing result: */ : ResetCancelConn(); 0.00 : 409e6e: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 409e74: 41 bf 01 00 00 00 mov $0x1,%r15d : after; : : if (pset.timing) : INSTR_TIME_SET_CURRENT(before); : : results = PQexec(pset.db, query); 0.00 : 409e7a: e8 c1 9d ff ff callq 403c40 0.00 : 409e7f: 49 89 c5 mov %rax,%r13 : : /* these operations are included in the timing result: */ : ResetCancelConn(); 0.00 : 409e82: e8 d9 ed ff ff callq 408c60 0.00 : 409e87: eb 36 jmp 409ebf 0.00 : 409e89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * status, or with NULL if we want to suppress printing anything. : */ : PQclear(*results); : *results = copy_result; : } : else if (first_cycle) 0.00 : 409e90: 45 84 f6 test %r14b,%r14b 0.00 : 409e93: 0f 85 2a 01 00 00 jne 409fc3 : /* : * Check PQgetResult() again. In the typical case of a single-command : * string, it will return NULL. Otherwise, we'll have other results : * to process that may include other COPYs. We keep the last result. : */ : next_result = PQgetResult(pset.db); 0.00 : 409e99: 48 8b 3d 00 12 26 00 mov 0x261200(%rip),%rdi # 66b0a0 0.00 : 409ea0: e8 8b 9b ff ff callq 403a30 : if (!next_result) 0.00 : 409ea5: 48 85 c0 test %rax,%rax : /* : * Check PQgetResult() again. In the typical case of a single-command : * string, it will return NULL. Otherwise, we'll have other results : * to process that may include other COPYs. We keep the last result. : */ : next_result = PQgetResult(pset.db); 0.00 : 409ea8: 48 89 c3 mov %rax,%rbx : if (!next_result) 0.00 : 409eab: 0f 84 02 01 00 00 je 409fb3 : break; : : PQclear(*results); 0.00 : 409eb1: 4c 89 ef mov %r13,%rdi 0.00 : 409eb4: 45 31 f6 xor %r14d,%r14d 0.00 : 409eb7: 49 89 dd mov %rbx,%r13 0.00 : 409eba: e8 61 a0 ff ff callq 403f20 : { : ExecStatusType result_status; : bool is_copy; : PGresult *next_result; : : if (!AcceptResult(*results)) 0.00 : 409ebf: 4c 89 ef mov %r13,%rdi 0.00 : 409ec2: e8 29 f1 ff ff callq 408ff0 0.00 : 409ec7: 84 c0 test %al,%al 0.00 : 409ec9: 0f 84 e1 00 00 00 je 409fb0 : */ : success = false; : break; : } : : result_status = PQresultStatus(*results); 0.00 : 409ecf: 4c 89 ef mov %r13,%rdi 0.00 : 409ed2: e8 79 99 ff ff callq 403850 : switch (result_status) 0.00 : 409ed7: 83 f8 02 cmp $0x2,%eax : */ : success = false; : break; : } : : result_status = PQresultStatus(*results); 0.00 : 409eda: 89 c3 mov %eax,%ebx : switch (result_status) 0.00 : 409edc: 76 b2 jbe 409e90 0.00 : 409ede: 83 f8 04 cmp $0x4,%eax 0.00 : 409ee1: 76 15 jbe 409ef8 : break; : : default: : /* AcceptResult() should have caught anything else. */ : is_copy = false; : psql_error("unexpected PQresultStatus: %d\n", result_status); 0.00 : 409ee3: 89 c6 mov %eax,%esi 0.00 : 409ee5: bf 60 6a 43 00 mov $0x436a60,%edi 0.00 : 409eea: 31 c0 xor %eax,%eax 0.00 : 409eec: e8 2f ef ff ff callq 408e20 0.00 : 409ef1: eb 9d jmp 409e90 0.00 : 409ef3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * once and report any error. : * : * If pset.copyStream is set, use that as data source/sink, : * otherwise use queryFout or cur_cmd_source as appropriate. : */ : FILE *copystream = pset.copyStream; 0.00 : 409ef8: 4c 8b 25 c1 11 26 00 mov 0x2611c1(%rip),%r12 # 66b0c0 : PGresult *copy_result; : : SetCancelConn(); 0.00 : 409eff: e8 8c ed ff ff callq 408c90 : if (result_status == PGRES_COPY_OUT) 0.00 : 409f04: 83 fb 03 cmp $0x3,%ebx 0.00 : 409f07: 74 57 je 409f60 : } : } : else : { : if (!copystream) : copystream = pset.cur_cmd_source; 0.00 : 409f09: 4d 85 e4 test %r12,%r12 0.00 : 409f0c: 4c 0f 44 25 6c 12 26 cmove 0x26126c(%rip),%r12 # 66b180 0.00 : 409f13: 00 : success = handleCopyIn(pset.db, 0.00 : 409f14: 4c 89 ef mov %r13,%rdi 0.00 : 409f17: e8 34 9e ff ff callq 403d50 0.00 : 409f1c: 48 8b 3d 7d 11 26 00 mov 0x26117d(%rip),%rdi # 66b0a0 0.00 : 409f23: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 409f27: 0f be d0 movsbl %al,%edx 0.00 : 409f2a: 4c 89 e6 mov %r12,%rsi 0.00 : 409f2d: e8 9e 6e 00 00 callq 410dd0 0.00 : 409f32: 84 c0 test %al,%al 0.00 : 409f34: 75 1a jne 409f50 0.00 : 409f36: 45 31 ff xor %r15d,%r15d : copystream, : PQbinaryTuples(*results), : ©_result) && success; : } : ResetCancelConn(); 0.00 : 409f39: e8 22 ed ff ff callq 408c60 : : /* : * Replace the PGRES_COPY_OUT/IN result with COPY command's exit : * status, or with NULL if we want to suppress printing anything. : */ : PQclear(*results); 0.00 : 409f3e: 4c 89 ef mov %r13,%rdi 0.00 : 409f41: e8 da 9f ff ff callq 403f20 : *results = copy_result; 0.00 : 409f46: 4c 8b 6d c0 mov -0x40(%rbp),%r13 0.00 : 409f4a: e9 4a ff ff ff jmpq 409e99 0.00 : 409f4f: 90 nop : } : else : { : if (!copystream) : copystream = pset.cur_cmd_source; : success = handleCopyIn(pset.db, 0.00 : 409f50: 45 84 ff test %r15b,%r15b 0.00 : 409f53: 41 0f 95 c7 setne %r15b 0.00 : 409f57: eb e0 jmp 409f39 0.00 : 409f59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : SetCancelConn(); : if (result_status == PGRES_COPY_OUT) : { : if (!copystream) : copystream = pset.queryFout; 0.00 : 409f60: 4d 85 e4 test %r12,%r12 0.00 : 409f63: 4c 0f 44 25 45 11 26 cmove 0x261145(%rip),%r12 # 66b0b0 0.00 : 409f6a: 00 : success = handleCopyOut(pset.db, 0.00 : 409f6b: 48 8b 3d 2e 11 26 00 mov 0x26112e(%rip),%rdi # 66b0a0 0.00 : 409f72: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 409f76: 4c 89 e6 mov %r12,%rsi 0.00 : 409f79: e8 92 72 00 00 callq 411210 0.00 : 409f7e: 84 c0 test %al,%al 0.00 : 409f80: 0f 84 3a 02 00 00 je 40a1c0 0.00 : 409f86: 45 84 ff test %r15b,%r15b 0.00 : 409f89: 41 0f 95 c7 setne %r15b : /* : * Suppress status printing if the report would go to the same : * place as the COPY data just went. Note this doesn't : * prevent error reporting, since handleCopyOut did that. : */ : if (copystream == pset.queryFout) 0.00 : 409f8d: 4c 3b 25 1c 11 26 00 cmp 0x26111c(%rip),%r12 # 66b0b0 0.00 : 409f94: 75 a3 jne 409f39 : { : PQclear(copy_result); 0.00 : 409f96: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 409f9a: e8 81 9f ff ff callq 403f20 : copy_result = NULL; 0.00 : 409f9f: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 409fa6: 00 0.00 : 409fa7: eb 90 jmp 409f39 0.00 : 409fa9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : next_result = PQgetResult(pset.db); : if (!next_result) : break; : : PQclear(*results); 0.00 : 409fb0: 45 31 ff xor %r15d,%r15d : *results = next_result; : first_cycle = false; : } : : /* may need this to recover from conn loss during COPY */ : if (!first_cycle && !CheckConnection()) 0.00 : 409fb3: 45 84 f6 test %r14b,%r14b 0.00 : 409fb6: 75 0b jne 409fc3 0.00 : 409fb8: e8 73 ef ff ff callq 408f30 0.00 : 409fbd: 84 c0 test %al,%al 0.00 : 409fbf: 45 0f 44 fe cmove %r14d,%r15d : : /* these operations are included in the timing result: */ : ResetCancelConn(); : OK = ProcessResult(&results); : : if (pset.timing) 0.00 : 409fc3: 80 3d e6 11 26 00 00 cmpb $0x0,0x2611e6(%rip) # 66b1b0 0.00 : 409fca: 0f 85 10 04 00 00 jne 40a3e0 : INSTR_TIME_SUBTRACT(after, before); : elapsed_msec = INSTR_TIME_GET_MILLISEC(after); : } : : /* but printing results isn't: */ : if (OK && results) 0.00 : 409fd0: 45 84 ff test %r15b,%r15b 0.00 : 409fd3: 0f 85 f7 01 00 00 jne 40a1d0 : OK = ExecQueryUsingCursor(query, &elapsed_msec); : ResetCancelConn(); : results = NULL; /* PQclear(NULL) does nothing */ : } : : if (!OK && pset.echo == PSQL_ECHO_ERRORS) 0.00 : 409fd9: 45 31 ff xor %r15d,%r15d 0.00 : 409fdc: 83 3d f1 11 26 00 02 cmpl $0x2,0x2611f1(%rip) # 66b1d4 0.00 : 409fe3: 0f 84 0e 06 00 00 je 40a5f7 : psql_error("STATEMENT: %s\n", query); : : /* If we made a temporary savepoint, possibly release/rollback */ : if (on_error_rollback_savepoint) 0.00 : 409fe9: 80 bd ff fe ff ff 00 cmpb $0x0,-0x101(%rbp) 0.00 : 409ff0: 74 3e je 40a030 : { : const char *svptcmd = NULL; : : transaction_status = PQtransactionStatus(pset.db); 0.00 : 409ff2: 48 8b 3d a7 10 26 00 mov 0x2610a7(%rip),%rdi # 66b0a0 0.00 : 409ff9: e8 22 9e ff ff callq 403e20 : : switch (transaction_status) 0.00 : 409ffe: 83 f8 02 cmp $0x2,%eax : /* If we made a temporary savepoint, possibly release/rollback */ : if (on_error_rollback_savepoint) : { : const char *svptcmd = NULL; : : transaction_status = PQtransactionStatus(pset.db); 0.00 : 40a001: 89 c3 mov %eax,%ebx : : switch (transaction_status) 0.00 : 40a003: 0f 84 67 05 00 00 je 40a570 0.00 : 40a009: 83 f8 03 cmp $0x3,%eax 0.00 : 40a00c: 0f 84 8e 04 00 00 je 40a4a0 0.00 : 40a012: 85 c0 test %eax,%eax 0.00 : 40a014: 74 1a je 40a030 : case PQTRANS_ACTIVE: : case PQTRANS_UNKNOWN: : default: : OK = false; : /* PQTRANS_UNKNOWN is expected given a broken connection. */ : if (transaction_status != PQTRANS_UNKNOWN || ConnectionUp()) 0.00 : 40a016: 83 f8 04 cmp $0x4,%eax 0.00 : 40a019: 0f 84 e3 06 00 00 je 40a702 : psql_error("unexpected transaction status (%d)\n", 0.00 : 40a01f: 89 de mov %ebx,%esi 0.00 : 40a021: bf 08 6d 43 00 mov $0x436d08,%edi 0.00 : 40a026: 31 c0 xor %eax,%eax 0.00 : 40a028: 45 31 ff xor %r15d,%r15d 0.00 : 40a02b: e8 f0 ed ff ff callq 408e20 : } : PQclear(svptres); : } : } : : PQclear(results); 0.00 : 40a030: 4c 89 ef mov %r13,%rdi 0.00 : 40a033: e8 e8 9e ff ff callq 403f20 : : /* Possible microtiming output */ : if (pset.timing) 0.00 : 40a038: 80 3d 71 11 26 00 00 cmpb $0x0,0x261171(%rip) # 66b1b0 0.00 : 40a03f: 0f 85 eb 04 00 00 jne 40a530 : printf(_("Time: %.3f ms\n"), elapsed_msec); : : /* check for events that may occur during query execution */ : : if (pset.encoding != PQclientEncoding(pset.db) && 0.00 : 40a045: 8b 1d 5d 10 26 00 mov 0x26105d(%rip),%ebx # 66b0a8 0.00 : 40a04b: 48 8b 3d 4e 10 26 00 mov 0x26104e(%rip),%rdi # 66b0a0 0.00 : 40a052: e8 39 9b ff ff callq 403b90 0.00 : 40a057: 39 c3 cmp %eax,%ebx 0.00 : 40a059: 0f 84 d7 02 00 00 je 40a336 0.00 : 40a05f: 48 8b 3d 3a 10 26 00 mov 0x26103a(%rip),%rdi # 66b0a0 0.00 : 40a066: e8 25 9b ff ff callq 403b90 0.00 : 40a06b: 85 c0 test %eax,%eax 0.00 : 40a06d: 0f 88 c3 02 00 00 js 40a336 : PQclientEncoding(pset.db) >= 0) : { : /* track effects of SET CLIENT_ENCODING */ : pset.encoding = PQclientEncoding(pset.db); 0.00 : 40a073: 48 8b 3d 26 10 26 00 mov 0x261026(%rip),%rdi # 66b0a0 0.00 : 40a07a: e8 11 9b ff ff callq 403b90 0.00 : 40a07f: 89 c7 mov %eax,%edi 0.00 : 40a081: 89 05 21 10 26 00 mov %eax,0x261021(%rip) # 66b0a8 : pset.popt.topt.encoding = pset.encoding; 0.00 : 40a087: 89 05 8b 10 26 00 mov %eax,0x26108b(%rip) # 66b118 : SetVariable(pset.vars, "ENCODING", 0.00 : 40a08d: e8 5e 9d ff ff callq 403df0 0.00 : 40a092: 48 8b 3d 27 11 26 00 mov 0x261127(%rip),%rdi # 66b1c0 0.00 : 40a099: 48 89 c2 mov %rax,%rdx 0.00 : 40a09c: be 31 58 43 00 mov $0x435831,%esi 0.00 : 40a0a1: e8 7a 9a 00 00 callq 413b20 0.00 : 40a0a6: e9 8b 02 00 00 jmpq 40a336 0.00 : 40a0ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : SetCancelConn(); : : transaction_status = PQtransactionStatus(pset.db); : : if (transaction_status == PQTRANS_IDLE && 0.00 : 40a0b0: 80 3d 11 11 26 00 00 cmpb $0x0,0x261111(%rip) # 66b1c8 0.00 : 40a0b7: 0f 85 2b fd ff ff jne 409de8 : int wordlen; : : /* : * First we must advance over any whitespace and comments. : */ : query = skip_white_space(query); 0.00 : 40a0bd: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi : * : * Returns true if the query executed successfully, false otherwise. : */ : bool : SendQuery(const char *query) : { 0.00 : 40a0c4: 31 db xor %ebx,%ebx : int wordlen; : : /* : * First we must advance over any whitespace and comments. : */ : query = skip_white_space(query); 0.00 : 40a0c6: e8 85 e9 ff ff callq 408a50 0.00 : 40a0cb: 49 89 c5 mov %rax,%r13 : * : * Returns true if the query executed successfully, false otherwise. : */ : bool : SendQuery(const char *query) : { 0.00 : 40a0ce: e8 dd 9f ff ff callq 4040b0 <__ctype_b_loc@plt> 0.00 : 40a0d3: 49 89 c6 mov %rax,%r14 0.00 : 40a0d6: eb 18 jmp 40a0f0 0.00 : 40a0d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 40a0df: 00 : /* : * Check word length (since "beginx" is not "begin"). : */ : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40a0e0: 8b 35 c2 0f 26 00 mov 0x260fc2(%rip),%esi # 66b0a8 0.00 : 40a0e6: 4c 89 e7 mov %r12,%rdi 0.00 : 40a0e9: e8 a2 96 ff ff callq 403790 0.00 : 40a0ee: 01 c3 add %eax,%ebx : : /* : * Check word length (since "beginx" is not "begin"). : */ : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a0f0: 48 63 c3 movslq %ebx,%rax 0.00 : 40a0f3: 4d 8d 64 05 00 lea 0x0(%r13,%rax,1),%r12 0.00 : 40a0f8: 49 8b 06 mov (%r14),%rax 0.00 : 40a0fb: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 40a100: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a105: 75 d9 jne 40a0e0 : * savepoint-related commands. : * : * (We assume that START must be START TRANSACTION, since there is : * presently no other "START foo" command.) : */ : if (wordlen == 5 && pg_strncasecmp(query, "abort", 5) == 0) 0.00 : 40a107: 83 fb 05 cmp $0x5,%ebx 0.00 : 40a10a: 0f 84 0f 06 00 00 je 40a71f : return true; : if (wordlen == 5 && pg_strncasecmp(query, "begin", 5) == 0) : return true; : if (wordlen == 5 && pg_strncasecmp(query, "start", 5) == 0) : return true; : if (wordlen == 6 && pg_strncasecmp(query, "commit", 6) == 0) 0.00 : 40a110: 83 fb 06 cmp $0x6,%ebx 0.00 : 40a113: 0f 84 df 06 00 00 je 40a7f8 : return true; : if (wordlen == 3 && pg_strncasecmp(query, "end", 3) == 0) 0.00 : 40a119: 83 fb 03 cmp $0x3,%ebx 0.00 : 40a11c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 40a120: 0f 84 1a 08 00 00 je 40a940 : return true; : if (wordlen == 8 && pg_strncasecmp(query, "rollback", 8) == 0) 0.00 : 40a126: 83 fb 08 cmp $0x8,%ebx 0.00 : 40a129: 0f 84 b4 05 00 00 je 40a6e3 : return true; : if (wordlen == 7 && pg_strncasecmp(query, "prepare", 7) == 0) 0.00 : 40a12f: 83 fb 07 cmp $0x7,%ebx 0.00 : 40a132: 0f 84 27 08 00 00 je 40a95f : /* : * Commands not allowed within transactions. The statements checked for : * here should be exactly those that call PreventTransactionChain() in the : * backend. : */ : if (wordlen == 6 && pg_strncasecmp(query, "vacuum", 6) == 0) 0.00 : 40a138: 83 fb 06 cmp $0x6,%ebx 0.00 : 40a13b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 40a140: 0f 84 cc 06 00 00 je 40a812 : return true; : if (wordlen == 7 && pg_strncasecmp(query, "cluster", 7) == 0) 0.00 : 40a146: 83 fb 07 cmp $0x7,%ebx 0.00 : 40a149: 0f 84 2a 08 00 00 je 40a979 : if (isalpha((unsigned char) query[0])) : return false; /* has additional words */ : return true; /* it's CLUSTER without arguments */ : } : : if (wordlen == 6 && pg_strncasecmp(query, "create", 6) == 0) 0.00 : 40a14f: 83 fb 06 cmp $0x6,%ebx 0.00 : 40a152: 0f 84 d4 06 00 00 je 40a82c : } : : return false; : } : : if (wordlen == 5 && pg_strncasecmp(query, "alter", 5) == 0) 0.00 : 40a158: 83 fb 05 cmp $0x5,%ebx 0.00 : 40a15b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 40a160: 0f 84 07 06 00 00 je 40a76d : /* : * Note: these tests will match DROP SYSTEM and REINDEX TABLESPACE, which : * aren't really valid commands so we don't care much. The other four : * possible matches are correct. : */ : if ((wordlen == 4 && pg_strncasecmp(query, "drop", 4) == 0) || 0.00 : 40a166: 83 fb 04 cmp $0x4,%ebx 0.00 : 40a169: 0f 84 c9 08 00 00 je 40aa38 0.00 : 40a16f: 83 fb 07 cmp $0x7,%ebx 0.00 : 40a172: 0f 84 1b 08 00 00 je 40a993 : : if (transaction_status == PQTRANS_IDLE && : !pset.autocommit && : !command_no_begin(query)) : { : results = PQexec(pset.db, "BEGIN"); 0.00 : 40a178: 48 8b 3d 21 0f 26 00 mov 0x260f21(%rip),%rdi # 66b0a0 0.00 : 40a17f: be 98 56 43 00 mov $0x435698,%esi 0.00 : 40a184: e8 b7 9a ff ff callq 403c40 : if (PQresultStatus(results) != PGRES_COMMAND_OK) 0.00 : 40a189: 48 89 c7 mov %rax,%rdi : : if (transaction_status == PQTRANS_IDLE && : !pset.autocommit && : !command_no_begin(query)) : { : results = PQexec(pset.db, "BEGIN"); 0.00 : 40a18c: 48 89 c3 mov %rax,%rbx : if (PQresultStatus(results) != PGRES_COMMAND_OK) 0.00 : 40a18f: e8 bc 96 ff ff callq 403850 0.00 : 40a194: 83 e8 01 sub $0x1,%eax 0.00 : 40a197: 0f 85 eb 00 00 00 jne 40a288 : psql_error("%s", PQerrorMessage(pset.db)); : PQclear(results); : ResetCancelConn(); : goto sendquery_cleanup; : } : PQclear(results); 0.00 : 40a19d: 48 89 df mov %rbx,%rdi 0.00 : 40a1a0: e8 7b 9d ff ff callq 403f20 : transaction_status = PQtransactionStatus(pset.db); 0.00 : 40a1a5: 48 8b 3d f4 0e 26 00 mov 0x260ef4(%rip),%rdi # 66b0a0 0.00 : 40a1ac: e8 6f 9c ff ff callq 403e20 0.00 : 40a1b1: e9 29 fc ff ff jmpq 409ddf 0.00 : 40a1b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 40a1bd: 00 00 00 : SetCancelConn(); : if (result_status == PGRES_COPY_OUT) : { : if (!copystream) : copystream = pset.queryFout; : success = handleCopyOut(pset.db, 0.00 : 40a1c0: 45 31 ff xor %r15d,%r15d 0.00 : 40a1c3: e9 c5 fd ff ff jmpq 409f8d 0.00 : 40a1c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 40a1cf: 00 : INSTR_TIME_SUBTRACT(after, before); : elapsed_msec = INSTR_TIME_GET_MILLISEC(after); : } : : /* but printing results isn't: */ : if (OK && results) 0.00 : 40a1d0: 4d 85 ed test %r13,%r13 0.00 : 40a1d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 40a1d8: 0f 84 0b fe ff ff je 409fe9 : const char *cmdstatus; : : if (!results) : return false; : : switch (PQresultStatus(results)) 0.00 : 40a1de: 4c 89 ef mov %r13,%rdi 0.00 : 40a1e1: e8 6a 96 ff ff callq 403850 0.00 : 40a1e6: 83 f8 07 cmp $0x7,%eax 0.00 : 40a1e9: 0f 86 61 02 00 00 jbe 40a450 : success = false; : break; : : default: : success = false; : psql_error("unexpected PQresultStatus: %d\n", 0.00 : 40a1ef: 4c 89 ef mov %r13,%rdi 0.00 : 40a1f2: e8 59 96 ff ff callq 403850 0.00 : 40a1f7: bf 60 6a 43 00 mov $0x436a60,%edi 0.00 : 40a1fc: 89 c6 mov %eax,%esi 0.00 : 40a1fe: 31 c0 xor %eax,%eax 0.00 : 40a200: e8 1b ec ff ff callq 408e20 0.00 : 40a205: 45 31 ff xor %r15d,%r15d : PQresultStatus(results)); : break; : } : : fflush(pset.queryFout); 0.00 : 40a208: 48 8b 3d a1 0e 26 00 mov 0x260ea1(%rip),%rdi # 66b0b0 0.00 : 40a20f: e8 1c 9b ff ff callq 403d30 : OK = ExecQueryUsingCursor(query, &elapsed_msec); : ResetCancelConn(); : results = NULL; /* PQclear(NULL) does nothing */ : } : : if (!OK && pset.echo == PSQL_ECHO_ERRORS) 0.00 : 40a214: 45 84 ff test %r15b,%r15b 0.00 : 40a217: 0f 85 cc fd ff ff jne 409fe9 0.00 : 40a21d: e9 b7 fd ff ff jmpq 409fd9 0.00 : 40a222: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : PQclear(results); : transaction_status = PQtransactionStatus(pset.db); : } : : if (transaction_status == PQTRANS_INTRANS && 0.00 : 40a228: 8b 05 ae 0f 26 00 mov 0x260fae(%rip),%eax # 66b1dc 0.00 : 40a22e: 85 c0 test %eax,%eax 0.00 : 40a230: 0f 84 b2 fb ff ff je 409de8 0.00 : 40a236: 80 3d 4b 0f 26 00 00 cmpb $0x0,0x260f4b(%rip) # 66b188 0.00 : 40a23d: 75 09 jne 40a248 0.00 : 40a23f: 83 f8 02 cmp $0x2,%eax 0.00 : 40a242: 0f 85 a0 fb ff ff jne 409de8 : pset.on_error_rollback != PSQL_ERROR_ROLLBACK_OFF && : (pset.cur_cmd_interactive || : pset.on_error_rollback == PSQL_ERROR_ROLLBACK_ON)) : { : if (on_error_rollback_warning == false && pset.sversion < 80000) 0.00 : 40a248: 80 3d 82 0a 26 00 00 cmpb $0x0,0x260a82(%rip) # 66acd1 0.00 : 40a24f: 75 12 jne 40a263 0.00 : 40a251: 8b 35 35 0f 26 00 mov 0x260f35(%rip),%esi # 66b18c 0.00 : 40a257: 81 fe 7f 38 01 00 cmp $0x1387f,%esi 0.00 : 40a25d: 0f 8e 17 04 00 00 jle 40a67a : pset.sversion / 10000, (pset.sversion / 100) % 100); : on_error_rollback_warning = true; : } : else : { : results = PQexec(pset.db, "SAVEPOINT pg_psql_temporary_savepoint"); 0.00 : 40a263: 48 8b 3d 36 0e 26 00 mov 0x260e36(%rip),%rdi # 66b0a0 0.00 : 40a26a: be b8 6c 43 00 mov $0x436cb8,%esi 0.00 : 40a26f: e8 cc 99 ff ff callq 403c40 : if (PQresultStatus(results) != PGRES_COMMAND_OK) 0.00 : 40a274: 48 89 c7 mov %rax,%rdi : pset.sversion / 10000, (pset.sversion / 100) % 100); : on_error_rollback_warning = true; : } : else : { : results = PQexec(pset.db, "SAVEPOINT pg_psql_temporary_savepoint"); 0.00 : 40a277: 48 89 c3 mov %rax,%rbx : if (PQresultStatus(results) != PGRES_COMMAND_OK) 0.00 : 40a27a: e8 d1 95 ff ff callq 403850 0.00 : 40a27f: 83 e8 01 sub $0x1,%eax 0.00 : 40a282: 0f 84 de 03 00 00 je 40a666 : { : psql_error("%s", PQerrorMessage(pset.db)); 0.00 : 40a288: 48 8b 3d 11 0e 26 00 mov 0x260e11(%rip),%rdi # 66b0a0 : PQclear(results); : ResetCancelConn(); 0.00 : 40a28f: 45 31 ff xor %r15d,%r15d : else : { : results = PQexec(pset.db, "SAVEPOINT pg_psql_temporary_savepoint"); : if (PQresultStatus(results) != PGRES_COMMAND_OK) : { : psql_error("%s", PQerrorMessage(pset.db)); 0.00 : 40a292: e8 09 9b ff ff callq 403da0 0.00 : 40a297: bf f0 57 43 00 mov $0x4357f0,%edi 0.00 : 40a29c: 48 89 c6 mov %rax,%rsi 0.00 : 40a29f: 31 c0 xor %eax,%eax 0.00 : 40a2a1: e8 7a eb ff ff callq 408e20 : PQclear(results); 0.00 : 40a2a6: 48 89 df mov %rbx,%rdi 0.00 : 40a2a9: e8 72 9c ff ff callq 403f20 : ResetCancelConn(); 0.00 : 40a2ae: e8 ad e9 ff ff callq 408c60 0.00 : 40a2b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* perform cleanup that should occur after any attempted query */ : : sendquery_cleanup: : : /* reset \g's output-to-filename trigger */ : if (pset.gfname) 0.00 : 40a2b8: 48 8b 3d a9 0e 26 00 mov 0x260ea9(%rip),%rdi # 66b168 0.00 : 40a2bf: 48 85 ff test %rdi,%rdi 0.00 : 40a2c2: 74 10 je 40a2d4 : { : free(pset.gfname); 0.00 : 40a2c4: e8 b7 93 ff ff callq 403680 : pset.gfname = NULL; 0.00 : 40a2c9: 48 c7 05 94 0e 26 00 movq $0x0,0x260e94(%rip) # 66b168 0.00 : 40a2d0: 00 00 00 00 : } : : /* reset \gset trigger */ : if (pset.gset_prefix) 0.00 : 40a2d4: 48 8b 3d 95 0e 26 00 mov 0x260e95(%rip),%rdi # 66b170 0.00 : 40a2db: 48 85 ff test %rdi,%rdi 0.00 : 40a2de: 74 10 je 40a2f0 : { : free(pset.gset_prefix); 0.00 : 40a2e0: e8 9b 93 ff ff callq 403680 : pset.gset_prefix = NULL; 0.00 : 40a2e5: 48 c7 05 80 0e 26 00 movq $0x0,0x260e80(%rip) # 66b170 0.00 : 40a2ec: 00 00 00 00 : } : : return OK; : } 0.00 : 40a2f0: 48 81 c4 e8 00 00 00 add $0xe8,%rsp 0.00 : 40a2f7: 44 89 f8 mov %r15d,%eax 0.00 : 40a2fa: 5b pop %rbx 0.00 : 40a2fb: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/bin/psql/common.c:1201 100.00 : 40a2fd: 41 5d pop %r13 0.00 : 40a2ff: 41 5e pop %r14 0.00 : 40a301: 41 5f pop %r15 0.00 : 40a303: c9 leaveq 0.00 : 40a304: c3 retq 0.00 : 40a305: 0f 1f 00 nopl (%rax) : : while ((notify = PQnotifies(pset.db))) : { : /* for backward compatibility, only show payload if nonempty */ : if (notify->extra[0]) : fprintf(pset.queryFout, _("Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"), 0.00 : 40a308: 44 8b 43 08 mov 0x8(%rbx),%r8d 0.00 : 40a30c: 48 8b 13 mov (%rbx),%rdx 0.00 : 40a30f: be 30 6d 43 00 mov $0x436d30,%esi 0.00 : 40a314: 48 8b 3d 95 0d 26 00 mov 0x260d95(%rip),%rdi # 66b0b0 0.00 : 40a31b: 31 c0 xor %eax,%eax 0.00 : 40a31d: e8 be 98 ff ff callq 403be0 : notify->relname, notify->extra, notify->be_pid); : else : fprintf(pset.queryFout, _("Asynchronous notification \"%s\" received from server process with PID %d.\n"), : notify->relname, notify->be_pid); : fflush(pset.queryFout); 0.00 : 40a322: 48 8b 3d 87 0d 26 00 mov 0x260d87(%rip),%rdi # 66b0b0 0.00 : 40a329: e8 02 9a ff ff callq 403d30 : PQfreemem(notify); 0.00 : 40a32e: 48 89 df mov %rbx,%rdi 0.00 : 40a331: e8 fa 9b ff ff callq 403f30 : static void : PrintNotifications(void) : { : PGnotify *notify; : : while ((notify = PQnotifies(pset.db))) 0.00 : 40a336: 48 8b 3d 63 0d 26 00 mov 0x260d63(%rip),%rdi # 66b0a0 0.00 : 40a33d: e8 7e 9c ff ff callq 403fc0 0.00 : 40a342: 48 85 c0 test %rax,%rax 0.00 : 40a345: 48 89 c3 mov %rax,%rbx 0.00 : 40a348: 0f 84 6a ff ff ff je 40a2b8 : { : /* for backward compatibility, only show payload if nonempty */ : if (notify->extra[0]) 0.00 : 40a34e: 48 8b 4b 10 mov 0x10(%rbx),%rcx 0.00 : 40a352: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 40a355: 75 b1 jne 40a308 : fprintf(pset.queryFout, _("Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"), : notify->relname, notify->extra, notify->be_pid); : else : fprintf(pset.queryFout, _("Asynchronous notification \"%s\" received from server process with PID %d.\n"), 0.00 : 40a357: 8b 4b 08 mov 0x8(%rbx),%ecx 0.00 : 40a35a: 48 8b 13 mov (%rbx),%rdx 0.00 : 40a35d: be 90 6d 43 00 mov $0x436d90,%esi 0.00 : 40a362: 48 8b 3d 47 0d 26 00 mov 0x260d47(%rip),%rdi # 66b0b0 0.00 : 40a369: 31 c0 xor %eax,%eax 0.00 : 40a36b: e8 70 98 ff ff callq 403be0 0.00 : 40a370: eb b0 jmp 40a322 0.00 : 40a372: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (pset.singlestep) : { : char buf[3]; : : printf(_("***(Single step mode: verify command)*******************************************\n" 0.00 : 40a378: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 40a37f: bf c0 6b 43 00 mov $0x436bc0,%edi 0.00 : 40a384: 31 c0 xor %eax,%eax 0.00 : 40a386: e8 d5 95 ff ff callq 403960 : "%s\n" : "***(press return to proceed or enter x and return to cancel)********************\n"), : query); : fflush(stdout); 0.00 : 40a38b: 48 8b 3d be 06 26 00 mov 0x2606be(%rip),%rdi # 66aa50 0.00 : 40a392: e8 99 99 ff ff callq 403d30 : if (fgets(buf, sizeof(buf), stdin) != NULL) 0.00 : 40a397: 48 8b 15 c2 06 26 00 mov 0x2606c2(%rip),%rdx # 66aa60 0.00 : 40a39e: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 40a3a2: be 03 00 00 00 mov $0x3,%esi 0.00 : 40a3a7: e8 84 97 ff ff callq 403b30 0.00 : 40a3ac: 48 85 c0 test %rax,%rax 0.00 : 40a3af: 0f 84 e6 f9 ff ff je 409d9b : if (buf[0] == 'x') : goto sendquery_cleanup; 0.00 : 40a3b5: 45 31 ff xor %r15d,%r15d : "%s\n" : "***(press return to proceed or enter x and return to cancel)********************\n"), : query); : fflush(stdout); : if (fgets(buf, sizeof(buf), stdin) != NULL) : if (buf[0] == 'x') 0.00 : 40a3b8: 80 7d b0 78 cmpb $0x78,-0x50(%rbp) 0.00 : 40a3bc: 0f 85 d9 f9 ff ff jne 409d9b 0.00 : 40a3c2: e9 f1 fe ff ff jmpq 40a2b8 0.00 : 40a3c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 40a3ce: 00 00 : /* Default fetch-it-all-and-print mode */ : instr_time before, : after; : : if (pset.timing) : INSTR_TIME_SET_CURRENT(before); 0.00 : 40a3d0: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 40a3d4: 31 f6 xor %esi,%esi 0.00 : 40a3d6: e8 05 96 ff ff callq 4039e0 0.00 : 40a3db: e9 80 fa ff ff jmpq 409e60 : ResetCancelConn(); : OK = ProcessResult(&results); : : if (pset.timing) : { : INSTR_TIME_SET_CURRENT(after); 0.00 : 40a3e0: 48 8d 7d a0 lea -0x60(%rbp),%rdi 0.00 : 40a3e4: 31 f6 xor %esi,%esi 0.00 : 40a3e6: e8 f5 95 ff ff callq 4039e0 : INSTR_TIME_SUBTRACT(after, before); 0.00 : 40a3eb: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 40a3ef: 48 29 45 a0 sub %rax,-0x60(%rbp) 0.00 : 40a3f3: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 40a3f7: 48 2b 45 b8 sub -0x48(%rbp),%rax 0.00 : 40a3fb: 48 85 c0 test %rax,%rax 0.00 : 40a3fe: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 40a402: 79 18 jns 40a41c 0.00 : 40a404: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 40a408: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 40a40e: 48 83 6d a0 01 subq $0x1,-0x60(%rbp) 0.00 : 40a413: 48 85 c0 test %rax,%rax 0.00 : 40a416: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 40a41a: 78 ec js 40a408 : elapsed_msec = INSTR_TIME_GET_MILLISEC(after); 0.00 : 40a41c: f2 48 0f 2a c8 cvtsi2sd %rax,%xmm1 0.00 : 40a421: f2 48 0f 2a 45 a0 cvtsi2sdq -0x60(%rbp),%xmm0 : } : : /* but printing results isn't: */ : if (OK && results) 0.00 : 40a427: 45 84 ff test %r15b,%r15b : : if (pset.timing) : { : INSTR_TIME_SET_CURRENT(after); : INSTR_TIME_SUBTRACT(after, before); : elapsed_msec = INSTR_TIME_GET_MILLISEC(after); 0.00 : 40a42a: f2 0f 10 15 5e ca 02 movsd 0x2ca5e(%rip),%xmm2 # 436e90 0.00 : 40a431: 00 0.00 : 40a432: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 40a436: f2 0f 5e ca divsd %xmm2,%xmm1 0.00 : 40a43a: f2 0f 58 c1 addsd %xmm1,%xmm0 0.00 : 40a43e: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) : } : : /* but printing results isn't: */ : if (OK && results) 0.00 : 40a443: 0f 84 90 fb ff ff je 409fd9 0.00 : 40a449: e9 82 fd ff ff jmpq 40a1d0 0.00 : 40a44e: 66 90 xchg %ax,%ax : const char *cmdstatus; : : if (!results) : return false; : : switch (PQresultStatus(results)) 0.00 : 40a450: 89 c0 mov %eax,%eax 0.00 : 40a452: ff 24 c5 50 6e 43 00 jmpq *0x436e50(,%rax,8) 0.00 : 40a459: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 6 && pg_strncasecmp(query, "select", 6) == 0) 0.00 : 40a460: ba 06 00 00 00 mov $0x6,%edx 0.00 : 40a465: be a5 69 43 00 mov $0x4369a5,%esi 0.00 : 40a46a: 4c 89 e7 mov %r12,%rdi 0.00 : 40a46d: e8 ce a7 02 00 callq 434c40 0.00 : 40a472: 85 c0 test %eax,%eax 0.00 : 40a474: 0f 85 83 00 00 00 jne 40a4fd : OK = PrintQueryResults(results); : } : else : { : /* Fetch-in-segments mode */ : OK = ExecQueryUsingCursor(query, &elapsed_msec); 0.00 : 40a47a: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 40a481: 48 8d 75 c8 lea -0x38(%rbp),%rsi : ResetCancelConn(); 0.00 : 40a485: 45 31 ed xor %r13d,%r13d : OK = PrintQueryResults(results); : } : else : { : /* Fetch-in-segments mode */ : OK = ExecQueryUsingCursor(query, &elapsed_msec); 0.00 : 40a488: e8 03 f2 ff ff callq 409690 0.00 : 40a48d: 41 89 c7 mov %eax,%r15d : ResetCancelConn(); 0.00 : 40a490: e8 cb e7 ff ff callq 408c60 0.00 : 40a495: e9 7a fd ff ff jmpq 40a214 0.00 : 40a49a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : const char *svptcmd = NULL; : : transaction_status = PQtransactionStatus(pset.db); : : switch (transaction_status) 0.00 : 40a4a0: be e0 6c 43 00 mov $0x436ce0,%esi : : if (svptcmd) : { : PGresult *svptres; : : svptres = PQexec(pset.db, svptcmd); 0.00 : 40a4a5: 48 8b 3d f4 0b 26 00 mov 0x260bf4(%rip),%rdi # 66b0a0 0.00 : 40a4ac: e8 8f 97 ff ff callq 403c40 : if (PQresultStatus(svptres) != PGRES_COMMAND_OK) 0.00 : 40a4b1: 48 89 c7 mov %rax,%rdi : : if (svptcmd) : { : PGresult *svptres; : : svptres = PQexec(pset.db, svptcmd); 0.00 : 40a4b4: 48 89 c3 mov %rax,%rbx : if (PQresultStatus(svptres) != PGRES_COMMAND_OK) 0.00 : 40a4b7: e8 94 93 ff ff callq 403850 0.00 : 40a4bc: 83 e8 01 sub $0x1,%eax 0.00 : 40a4bf: 0f 84 11 01 00 00 je 40a5d6 : { : psql_error("%s", PQerrorMessage(pset.db)); 0.00 : 40a4c5: 48 8b 3d d4 0b 26 00 mov 0x260bd4(%rip),%rdi # 66b0a0 : PQclear(svptres); : OK = false; : : PQclear(results); : ResetCancelConn(); 0.00 : 40a4cc: 45 31 ff xor %r15d,%r15d : PGresult *svptres; : : svptres = PQexec(pset.db, svptcmd); : if (PQresultStatus(svptres) != PGRES_COMMAND_OK) : { : psql_error("%s", PQerrorMessage(pset.db)); 0.00 : 40a4cf: e8 cc 98 ff ff callq 403da0 0.00 : 40a4d4: bf f0 57 43 00 mov $0x4357f0,%edi 0.00 : 40a4d9: 48 89 c6 mov %rax,%rsi 0.00 : 40a4dc: 31 c0 xor %eax,%eax 0.00 : 40a4de: e8 3d e9 ff ff callq 408e20 : PQclear(svptres); 0.00 : 40a4e3: 48 89 df mov %rbx,%rdi 0.00 : 40a4e6: e8 35 9a ff ff callq 403f20 : OK = false; : : PQclear(results); 0.00 : 40a4eb: 4c 89 ef mov %r13,%rdi 0.00 : 40a4ee: e8 2d 9a ff ff callq 403f20 : ResetCancelConn(); 0.00 : 40a4f3: e8 68 e7 ff ff callq 408c60 : goto sendquery_cleanup; 0.00 : 40a4f8: e9 bb fd ff ff jmpq 40a2b8 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 6 && pg_strncasecmp(query, "select", 6) == 0) : return true; : : if (wordlen == 6 && pg_strncasecmp(query, "values", 6) == 0) 0.00 : 40a4fd: ba 06 00 00 00 mov $0x6,%edx 0.00 : 40a502: be ac 69 43 00 mov $0x4369ac,%esi 0.00 : 40a507: 4c 89 e7 mov %r12,%rdi 0.00 : 40a50a: e8 31 a7 02 00 callq 434c40 0.00 : 40a50f: 85 c0 test %eax,%eax 0.00 : 40a511: 0f 85 3c f9 ff ff jne 409e53 0.00 : 40a517: e9 5e ff ff ff jmpq 40a47a : strncmp(cmdstatus, "DELETE", 6) == 0) : PrintQueryStatus(results); : break; : : case PGRES_COMMAND_OK: : PrintQueryStatus(results); 0.00 : 40a51c: 4c 89 ef mov %r13,%rdi 0.00 : 40a51f: 90 nop 0.00 : 40a520: e8 2b e6 ff ff callq 408b50 0.00 : 40a525: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 40a52b: e9 d8 fc ff ff jmpq 40a208 : : PQclear(results); : : /* Possible microtiming output */ : if (pset.timing) : printf(_("Time: %.3f ms\n"), elapsed_msec); 0.00 : 40a530: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 40a535: bf 18 69 43 00 mov $0x436918,%edi 0.00 : 40a53a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 40a53f: e8 1c 94 ff ff callq 403960 0.00 : 40a544: e9 fc fa ff ff jmpq 40a045 0.00 : 40a549: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (buf[0] == 'x') : goto sendquery_cleanup; : } : else if (pset.echo == PSQL_ECHO_QUERIES) : { : puts(query); 0.00 : 40a550: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 40a557: e8 c4 91 ff ff callq 403720 : fflush(stdout); 0.00 : 40a55c: 48 8b 3d ed 04 26 00 mov 0x2604ed(%rip),%rdi # 66aa50 0.00 : 40a563: e8 c8 97 ff ff callq 403d30 0.00 : 40a568: e9 2e f8 ff ff jmpq 409d9b 0.00 : 40a56d: 0f 1f 00 nopl (%rax) : * Do nothing if they are messing with savepoints themselves: : * If the user did RELEASE or ROLLBACK, our savepoint is gone. : * If they issued a SAVEPOINT, releasing ours would remove : * theirs. : */ : if (results && 0.00 : 40a570: 4d 85 ed test %r13,%r13 0.00 : 40a573: 74 57 je 40a5cc : (strcmp(PQcmdStatus(results), "SAVEPOINT") == 0 || 0.00 : 40a575: 4c 89 ef mov %r13,%rdi 0.00 : 40a578: e8 23 94 ff ff callq 4039a0 0.00 : 40a57d: bf 70 c6 43 00 mov $0x43c670,%edi 0.00 : 40a582: 48 89 c6 mov %rax,%rsi 0.00 : 40a585: b9 0a 00 00 00 mov $0xa,%ecx : * Do nothing if they are messing with savepoints themselves: : * If the user did RELEASE or ROLLBACK, our savepoint is gone. : * If they issued a SAVEPOINT, releasing ours would remove : * theirs. : */ : if (results && 0.00 : 40a58a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 40a58c: 0f 84 9e fa ff ff je 40a030 : (strcmp(PQcmdStatus(results), "SAVEPOINT") == 0 || : strcmp(PQcmdStatus(results), "RELEASE") == 0 || 0.00 : 40a592: 4c 89 ef mov %r13,%rdi 0.00 : 40a595: e8 06 94 ff ff callq 4039a0 0.00 : 40a59a: bf d1 69 43 00 mov $0x4369d1,%edi 0.00 : 40a59f: 48 89 c6 mov %rax,%rsi 0.00 : 40a5a2: b9 08 00 00 00 mov $0x8,%ecx : * Do nothing if they are messing with savepoints themselves: : * If the user did RELEASE or ROLLBACK, our savepoint is gone. : * If they issued a SAVEPOINT, releasing ours would remove : * theirs. : */ : if (results && 0.00 : 40a5a7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 40a5a9: 0f 84 81 fa ff ff je 40a030 : (strcmp(PQcmdStatus(results), "SAVEPOINT") == 0 || : strcmp(PQcmdStatus(results), "RELEASE") == 0 || : strcmp(PQcmdStatus(results), "ROLLBACK") == 0)) 0.00 : 40a5af: 4c 89 ef mov %r13,%rdi 0.00 : 40a5b2: e8 e9 93 ff ff callq 4039a0 0.00 : 40a5b7: bf f3 66 44 00 mov $0x4466f3,%edi 0.00 : 40a5bc: 48 89 c6 mov %rax,%rsi 0.00 : 40a5bf: b9 09 00 00 00 mov $0x9,%ecx : * Do nothing if they are messing with savepoints themselves: : * If the user did RELEASE or ROLLBACK, our savepoint is gone. : * If they issued a SAVEPOINT, releasing ours would remove : * theirs. : */ : if (results && 0.00 : 40a5c4: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 40a5c6: 0f 84 64 fa ff ff je 40a030 : */ : FILE *copystream = pset.copyStream; : PGresult *copy_result; : : SetCancelConn(); : if (result_status == PGRES_COPY_OUT) 0.00 : 40a5cc: be e0 6d 43 00 mov $0x436de0,%esi 0.00 : 40a5d1: e9 cf fe ff ff jmpq 40a4a5 : : PQclear(results); : ResetCancelConn(); : goto sendquery_cleanup; : } : PQclear(svptres); 0.00 : 40a5d6: 48 89 df mov %rbx,%rdi 0.00 : 40a5d9: e8 42 99 ff ff callq 403f20 0.00 : 40a5de: e9 4d fa ff ff jmpq 40a030 : bool on_error_rollback_savepoint = false; : static bool on_error_rollback_warning = false; : : if (!pset.db) : { : psql_error("You are currently not connected to a database.\n"); 0.00 : 40a5e3: bf a8 6a 43 00 mov $0x436aa8,%edi 0.00 : 40a5e8: 31 c0 xor %eax,%eax 0.00 : 40a5ea: 45 31 ff xor %r15d,%r15d 0.00 : 40a5ed: e8 2e e8 ff ff callq 408e20 : goto sendquery_cleanup; 0.00 : 40a5f2: e9 c1 fc ff ff jmpq 40a2b8 : ResetCancelConn(); : results = NULL; /* PQclear(NULL) does nothing */ : } : : if (!OK && pset.echo == PSQL_ECHO_ERRORS) : psql_error("STATEMENT: %s\n", query); 0.00 : 40a5f7: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 40a5fe: bf c1 69 43 00 mov $0x4369c1,%edi 0.00 : 40a603: 31 c0 xor %eax,%eax 0.00 : 40a605: 45 31 ff xor %r15d,%r15d 0.00 : 40a608: e8 13 e8 ff ff callq 408e20 0.00 : 40a60d: e9 d7 f9 ff ff jmpq 409fe9 : : switch (PQresultStatus(results)) : { : case PGRES_TUPLES_OK: : /* store or print the data ... */ : if (pset.gset_prefix) 0.00 : 40a612: 48 83 3d 56 0b 26 00 cmpq $0x0,0x260b56(%rip) # 66b170 0.00 : 40a619: 00 0.00 : 40a61a: 0f 84 b8 04 00 00 je 40aad8 : success = StoreQueryTuple(results); 0.00 : 40a620: 4c 89 ef mov %r13,%rdi 0.00 : 40a623: e8 58 ea ff ff callq 409080 0.00 : 40a628: 41 89 c7 mov %eax,%r15d : else : success = PrintQueryTuples(results); : /* if it's INSERT/UPDATE/DELETE RETURNING, also print status */ : cmdstatus = PQcmdStatus(results); 0.00 : 40a62b: 4c 89 ef mov %r13,%rdi 0.00 : 40a62e: e8 6d 93 ff ff callq 4039a0 : if (strncmp(cmdstatus, "INSERT", 6) == 0 || 0.00 : 40a633: bf b3 69 43 00 mov $0x4369b3,%edi 0.00 : 40a638: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 40a63d: 48 89 c6 mov %rax,%rsi 0.00 : 40a640: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 40a642: 74 15 je 40a659 0.00 : 40a644: bf ba 69 43 00 mov $0x4369ba,%edi 0.00 : 40a649: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 40a64e: 48 89 c6 mov %rax,%rsi 0.00 : 40a651: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 40a653: 0f 85 e3 04 00 00 jne 40ab3c : strncmp(cmdstatus, "UPDATE", 6) == 0 || : strncmp(cmdstatus, "DELETE", 6) == 0) : PrintQueryStatus(results); 0.00 : 40a659: 4c 89 ef mov %r13,%rdi 0.00 : 40a65c: e8 ef e4 ff ff callq 408b50 0.00 : 40a661: e9 a2 fb ff ff jmpq 40a208 : psql_error("%s", PQerrorMessage(pset.db)); : PQclear(results); : ResetCancelConn(); : goto sendquery_cleanup; : } : PQclear(results); 0.00 : 40a666: 48 89 df mov %rbx,%rdi 0.00 : 40a669: e8 b2 98 ff ff callq 403f20 0.00 : 40a66e: c6 85 ff fe ff ff 01 movb $0x1,-0x101(%rbp) 0.00 : 40a675: e9 75 f7 ff ff jmpq 409def : (pset.cur_cmd_interactive || : pset.on_error_rollback == PSQL_ERROR_ROLLBACK_ON)) : { : if (on_error_rollback_warning == false && pset.sversion < 80000) : { : psql_error("The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n", 0.00 : 40a67a: bf 1f 85 eb 51 mov $0x51eb851f,%edi 0.00 : 40a67f: 89 f1 mov %esi,%ecx 0.00 : 40a681: 89 f8 mov %edi,%eax 0.00 : 40a683: c1 f9 1f sar $0x1f,%ecx 0.00 : 40a686: f7 ee imul %esi 0.00 : 40a688: 89 f8 mov %edi,%eax 0.00 : 40a68a: 41 89 d0 mov %edx,%r8d 0.00 : 40a68d: 41 c1 f8 05 sar $0x5,%r8d 0.00 : 40a691: 41 29 c8 sub %ecx,%r8d 0.00 : 40a694: 41 f7 e8 imul %r8d 0.00 : 40a697: 44 89 c0 mov %r8d,%eax 0.00 : 40a69a: c1 f8 1f sar $0x1f,%eax 0.00 : 40a69d: 89 d7 mov %edx,%edi 0.00 : 40a69f: c1 ff 05 sar $0x5,%edi 0.00 : 40a6a2: 29 c7 sub %eax,%edi 0.00 : 40a6a4: 89 f8 mov %edi,%eax 0.00 : 40a6a6: bf 64 00 00 00 mov $0x64,%edi 0.00 : 40a6ab: 0f af c7 imul %edi,%eax 0.00 : 40a6ae: bf ad 8b db 68 mov $0x68db8bad,%edi 0.00 : 40a6b3: 41 29 c0 sub %eax,%r8d 0.00 : 40a6b6: 89 f8 mov %edi,%eax 0.00 : 40a6b8: bf 68 6c 43 00 mov $0x436c68,%edi 0.00 : 40a6bd: f7 ee imul %esi 0.00 : 40a6bf: 31 c0 xor %eax,%eax 0.00 : 40a6c1: 89 d6 mov %edx,%esi 0.00 : 40a6c3: 44 89 c2 mov %r8d,%edx 0.00 : 40a6c6: c1 fe 0c sar $0xc,%esi 0.00 : 40a6c9: 29 ce sub %ecx,%esi 0.00 : 40a6cb: e8 50 e7 ff ff callq 408e20 : pset.sversion / 10000, (pset.sversion / 100) % 100); : on_error_rollback_warning = true; 0.00 : 40a6d0: c6 05 fa 05 26 00 01 movb $0x1,0x2605fa(%rip) # 66acd1 0.00 : 40a6d7: c6 85 ff fe ff ff 00 movb $0x0,-0x101(%rbp) : if (transaction_status == PQTRANS_INTRANS && : pset.on_error_rollback != PSQL_ERROR_ROLLBACK_OFF && : (pset.cur_cmd_interactive || : pset.on_error_rollback == PSQL_ERROR_ROLLBACK_ON)) : { : if (on_error_rollback_warning == false && pset.sversion < 80000) 0.00 : 40a6de: e9 0c f7 ff ff jmpq 409def : return true; : if (wordlen == 6 && pg_strncasecmp(query, "commit", 6) == 0) : return true; : if (wordlen == 3 && pg_strncasecmp(query, "end", 3) == 0) : return true; : if (wordlen == 8 && pg_strncasecmp(query, "rollback", 8) == 0) 0.00 : 40a6e3: ba 08 00 00 00 mov $0x8,%edx 0.00 : 40a6e8: be 4d 69 43 00 mov $0x43694d,%esi 0.00 : 40a6ed: 4c 89 ef mov %r13,%rdi 0.00 : 40a6f0: e8 4b a5 02 00 callq 434c40 0.00 : 40a6f5: 85 c0 test %eax,%eax 0.00 : 40a6f7: 0f 85 7b fa ff ff jne 40a178 0.00 : 40a6fd: e9 e6 f6 ff ff jmpq 409de8 : * Returns whether our backend connection is still there. : */ : static bool : ConnectionUp(void) : { : return PQstatus(pset.db) != CONNECTION_BAD; 0.00 : 40a702: 48 8b 3d 97 09 26 00 mov 0x260997(%rip),%rdi # 66b0a0 : if (svptcmd) : { : PGresult *svptres; : : svptres = PQexec(pset.db, svptcmd); : if (PQresultStatus(svptres) != PGRES_COMMAND_OK) 0.00 : 40a709: 45 31 ff xor %r15d,%r15d : * Returns whether our backend connection is still there. : */ : static bool : ConnectionUp(void) : { : return PQstatus(pset.db) != CONNECTION_BAD; 0.00 : 40a70c: e8 df 90 ff ff callq 4037f0 : case PQTRANS_ACTIVE: : case PQTRANS_UNKNOWN: : default: : OK = false; : /* PQTRANS_UNKNOWN is expected given a broken connection. */ : if (transaction_status != PQTRANS_UNKNOWN || ConnectionUp()) 0.00 : 40a711: 83 e8 01 sub $0x1,%eax 0.00 : 40a714: 0f 85 05 f9 ff ff jne 40a01f 0.00 : 40a71a: e9 11 f9 ff ff jmpq 40a030 : * savepoint-related commands. : * : * (We assume that START must be START TRANSACTION, since there is : * presently no other "START foo" command.) : */ : if (wordlen == 5 && pg_strncasecmp(query, "abort", 5) == 0) 0.00 : 40a71f: ba 05 00 00 00 mov $0x5,%edx 0.00 : 40a724: be 3a 69 43 00 mov $0x43693a,%esi 0.00 : 40a729: 4c 89 ef mov %r13,%rdi 0.00 : 40a72c: e8 0f a5 02 00 callq 434c40 0.00 : 40a731: 85 c0 test %eax,%eax 0.00 : 40a733: 0f 84 af f6 ff ff je 409de8 : return true; : if (wordlen == 5 && pg_strncasecmp(query, "begin", 5) == 0) 0.00 : 40a739: ba 05 00 00 00 mov $0x5,%edx 0.00 : 40a73e: be 40 69 43 00 mov $0x436940,%esi 0.00 : 40a743: 4c 89 ef mov %r13,%rdi 0.00 : 40a746: e8 f5 a4 02 00 callq 434c40 0.00 : 40a74b: 85 c0 test %eax,%eax 0.00 : 40a74d: 0f 84 95 f6 ff ff je 409de8 : return true; : if (wordlen == 5 && pg_strncasecmp(query, "start", 5) == 0) 0.00 : 40a753: ba 05 00 00 00 mov $0x5,%edx 0.00 : 40a758: be 99 16 45 00 mov $0x451699,%esi 0.00 : 40a75d: 4c 89 ef mov %r13,%rdi 0.00 : 40a760: e8 db a4 02 00 callq 434c40 0.00 : 40a765: 85 c0 test %eax,%eax 0.00 : 40a767: 0f 84 7b f6 ff ff je 409de8 : } : : return false; : } : : if (wordlen == 5 && pg_strncasecmp(query, "alter", 5) == 0) 0.00 : 40a76d: ba 05 00 00 00 mov $0x5,%edx 0.00 : 40a772: be 88 69 43 00 mov $0x436988,%esi 0.00 : 40a777: 4c 89 ef mov %r13,%rdi 0.00 : 40a77a: e8 c1 a4 02 00 callq 434c40 0.00 : 40a77f: 85 c0 test %eax,%eax 0.00 : 40a781: 0f 85 f1 f9 ff ff jne 40a178 : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a787: 4c 89 e7 mov %r12,%rdi 0.00 : 40a78a: e8 c1 e2 ff ff callq 408a50 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a78f: 0f b6 10 movzbl (%rax),%edx : : if (wordlen == 5 && pg_strncasecmp(query, "alter", 5) == 0) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a792: 49 89 c4 mov %rax,%r12 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a795: 49 8b 06 mov (%r14),%rax 0.00 : 40a798: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a79d: 0f 84 d5 f9 ff ff je 40a178 0.00 : 40a7a3: 4c 89 e7 mov %r12,%rdi 0.00 : 40a7a6: 31 db xor %ebx,%ebx : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40a7a8: 8b 35 fa 08 26 00 mov 0x2608fa(%rip),%esi # 66b0a8 0.00 : 40a7ae: e8 dd 8f ff ff callq 403790 0.00 : 40a7b3: 01 c3 add %eax,%ebx : query += wordlen; : : query = skip_white_space(query); : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a7b5: 48 63 c3 movslq %ebx,%rax 0.00 : 40a7b8: 49 8d 3c 04 lea (%r12,%rax,1),%rdi 0.00 : 40a7bc: 49 8b 06 mov (%r14),%rax 0.00 : 40a7bf: 0f b6 17 movzbl (%rdi),%edx 0.00 : 40a7c2: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a7c7: 75 df jne 40a7a8 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : /* ALTER SYSTEM isn't allowed in xacts */ : if (wordlen == 6 && pg_strncasecmp(query, "system", 6) == 0) 0.00 : 40a7c9: 83 fb 06 cmp $0x6,%ebx 0.00 : 40a7cc: 0f 85 a6 f9 ff ff jne 40a178 : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) : return true; : if (wordlen == 6 && pg_strncasecmp(query, "system", 6) == 0) 0.00 : 40a7d2: ba 06 00 00 00 mov $0x6,%edx 0.00 : 40a7d7: be 8e 69 43 00 mov $0x43698e,%esi 0.00 : 40a7dc: 4c 89 e7 mov %r12,%rdi 0.00 : 40a7df: e8 5c a4 02 00 callq 434c40 0.00 : 40a7e4: 85 c0 test %eax,%eax 0.00 : 40a7e6: 0f 85 8c f9 ff ff jne 40a178 0.00 : 40a7ec: e9 f7 f5 ff ff jmpq 409de8 0.00 : 40a7f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return true; : if (wordlen == 5 && pg_strncasecmp(query, "begin", 5) == 0) : return true; : if (wordlen == 5 && pg_strncasecmp(query, "start", 5) == 0) : return true; : if (wordlen == 6 && pg_strncasecmp(query, "commit", 6) == 0) 0.00 : 40a7f8: ba 06 00 00 00 mov $0x6,%edx 0.00 : 40a7fd: be 46 69 43 00 mov $0x436946,%esi 0.00 : 40a802: 4c 89 ef mov %r13,%rdi 0.00 : 40a805: e8 36 a4 02 00 callq 434c40 0.00 : 40a80a: 85 c0 test %eax,%eax 0.00 : 40a80c: 0f 84 d6 f5 ff ff je 409de8 : /* : * Commands not allowed within transactions. The statements checked for : * here should be exactly those that call PreventTransactionChain() in the : * backend. : */ : if (wordlen == 6 && pg_strncasecmp(query, "vacuum", 6) == 0) 0.00 : 40a812: ba 06 00 00 00 mov $0x6,%edx 0.00 : 40a817: be 5e 69 43 00 mov $0x43695e,%esi 0.00 : 40a81c: 4c 89 ef mov %r13,%rdi 0.00 : 40a81f: e8 1c a4 02 00 callq 434c40 0.00 : 40a824: 85 c0 test %eax,%eax 0.00 : 40a826: 0f 84 bc f5 ff ff je 409de8 : if (isalpha((unsigned char) query[0])) : return false; /* has additional words */ : return true; /* it's CLUSTER without arguments */ : } : : if (wordlen == 6 && pg_strncasecmp(query, "create", 6) == 0) 0.00 : 40a82c: ba 06 00 00 00 mov $0x6,%edx 0.00 : 40a831: be 6d 69 43 00 mov $0x43696d,%esi 0.00 : 40a836: 4c 89 ef mov %r13,%rdi 0.00 : 40a839: e8 02 a4 02 00 callq 434c40 0.00 : 40a83e: 85 c0 test %eax,%eax 0.00 : 40a840: 0f 85 20 f9 ff ff jne 40a166 : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a846: 4c 89 e7 mov %r12,%rdi : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a849: 31 db xor %ebx,%ebx : : if (wordlen == 6 && pg_strncasecmp(query, "create", 6) == 0) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a84b: e8 00 e2 ff ff callq 408a50 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a850: 0f b6 10 movzbl (%rax),%edx : : if (wordlen == 6 && pg_strncasecmp(query, "create", 6) == 0) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a853: 49 89 c5 mov %rax,%r13 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a856: 49 8b 06 mov (%r14),%rax 0.00 : 40a859: 4d 89 ec mov %r13,%r12 0.00 : 40a85c: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a861: 0f 84 11 f9 ff ff je 40a178 : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40a867: 8b 35 3b 08 26 00 mov 0x26083b(%rip),%esi # 66b0a8 0.00 : 40a86d: 4c 89 e7 mov %r12,%rdi 0.00 : 40a870: e8 1b 8f ff ff callq 403790 0.00 : 40a875: 01 c3 add %eax,%ebx : query += wordlen; : : query = skip_white_space(query); : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a877: 48 63 c3 movslq %ebx,%rax 0.00 : 40a87a: 4d 8d 64 05 00 lea 0x0(%r13,%rax,1),%r12 0.00 : 40a87f: 49 8b 06 mov (%r14),%rax 0.00 : 40a882: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 40a887: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a88c: 75 d9 jne 40a867 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) 0.00 : 40a88e: 83 fb 08 cmp $0x8,%ebx 0.00 : 40a891: 0f 84 49 04 00 00 je 40ace0 : return true; : if (wordlen == 10 && pg_strncasecmp(query, "tablespace", 10) == 0) 0.00 : 40a897: 83 fb 0a cmp $0xa,%ebx 0.00 : 40a89a: 0f 84 20 04 00 00 je 40acc0 : return true; : : /* CREATE [UNIQUE] INDEX CONCURRENTLY isn't allowed in xacts */ : if (wordlen == 6 && pg_strncasecmp(query, "unique", 6) == 0) 0.00 : 40a8a0: 83 fb 06 cmp $0x6,%ebx 0.00 : 40a8a3: 0f 84 b1 03 00 00 je 40ac5a : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); : } : : if (wordlen == 5 && pg_strncasecmp(query, "index", 5) == 0) 0.00 : 40a8a9: 83 fb 05 cmp $0x5,%ebx 0.00 : 40a8ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 40a8b0: 0f 85 c2 f8 ff ff jne 40a178 0.00 : 40a8b6: ba 05 00 00 00 mov $0x5,%edx 0.00 : 40a8bb: be 64 c2 43 00 mov $0x43c264,%esi 0.00 : 40a8c0: 4c 89 ef mov %r13,%rdi 0.00 : 40a8c3: e8 78 a3 02 00 callq 434c40 0.00 : 40a8c8: 85 c0 test %eax,%eax 0.00 : 40a8ca: 0f 85 a8 f8 ff ff jne 40a178 : { : query += wordlen; 0.00 : 40a8d0: 49 8d 7d 05 lea 0x5(%r13),%rdi : : query = skip_white_space(query); 0.00 : 40a8d4: e8 77 e1 ff ff callq 408a50 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a8d9: 0f b6 10 movzbl (%rax),%edx : : if (wordlen == 5 && pg_strncasecmp(query, "index", 5) == 0) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a8dc: 49 89 c4 mov %rax,%r12 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a8df: 49 8b 06 mov (%r14),%rax 0.00 : 40a8e2: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a8e7: 0f 84 8b f8 ff ff je 40a178 0.00 : 40a8ed: 4c 89 e7 mov %r12,%rdi 0.00 : 40a8f0: 30 db xor %bl,%bl : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40a8f2: 8b 35 b0 07 26 00 mov 0x2607b0(%rip),%esi # 66b0a8 0.00 : 40a8f8: e8 93 8e ff ff callq 403790 0.00 : 40a8fd: 01 c3 add %eax,%ebx : query += wordlen; : : query = skip_white_space(query); : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a8ff: 48 63 c3 movslq %ebx,%rax 0.00 : 40a902: 49 8d 3c 04 lea (%r12,%rax,1),%rdi 0.00 : 40a906: 49 8b 06 mov (%r14),%rax 0.00 : 40a909: 0f b6 17 movzbl (%rdi),%edx 0.00 : 40a90c: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a911: 75 df jne 40a8f2 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 12 && pg_strncasecmp(query, "concurrently", 12) == 0) 0.00 : 40a913: 83 fb 0c cmp $0xc,%ebx 0.00 : 40a916: 0f 85 5c f8 ff ff jne 40a178 0.00 : 40a91c: ba 0c 00 00 00 mov $0xc,%edx 0.00 : 40a921: be 7b 69 43 00 mov $0x43697b,%esi 0.00 : 40a926: 4c 89 e7 mov %r12,%rdi 0.00 : 40a929: e8 12 a3 02 00 callq 434c40 0.00 : 40a92e: 85 c0 test %eax,%eax 0.00 : 40a930: 0f 84 b2 f4 ff ff je 409de8 0.00 : 40a936: e9 3d f8 ff ff jmpq 40a178 0.00 : 40a93b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return true; : if (wordlen == 5 && pg_strncasecmp(query, "start", 5) == 0) : return true; : if (wordlen == 6 && pg_strncasecmp(query, "commit", 6) == 0) : return true; : if (wordlen == 3 && pg_strncasecmp(query, "end", 3) == 0) 0.00 : 40a940: ba 03 00 00 00 mov $0x3,%edx 0.00 : 40a945: be ab 16 45 00 mov $0x4516ab,%esi 0.00 : 40a94a: 4c 89 ef mov %r13,%rdi 0.00 : 40a94d: e8 ee a2 02 00 callq 434c40 0.00 : 40a952: 85 c0 test %eax,%eax 0.00 : 40a954: 0f 85 1e f8 ff ff jne 40a178 0.00 : 40a95a: e9 89 f4 ff ff jmpq 409de8 : return true; : if (wordlen == 8 && pg_strncasecmp(query, "rollback", 8) == 0) : return true; : if (wordlen == 7 && pg_strncasecmp(query, "prepare", 7) == 0) 0.00 : 40a95f: ba 07 00 00 00 mov $0x7,%edx 0.00 : 40a964: be 56 69 43 00 mov $0x436956,%esi 0.00 : 40a969: 4c 89 ef mov %r13,%rdi 0.00 : 40a96c: e8 cf a2 02 00 callq 434c40 0.00 : 40a971: 85 c0 test %eax,%eax 0.00 : 40a973: 0f 84 fb 01 00 00 je 40ab74 : * here should be exactly those that call PreventTransactionChain() in the : * backend. : */ : if (wordlen == 6 && pg_strncasecmp(query, "vacuum", 6) == 0) : return true; : if (wordlen == 7 && pg_strncasecmp(query, "cluster", 7) == 0) 0.00 : 40a979: ba 07 00 00 00 mov $0x7,%edx 0.00 : 40a97e: be 65 69 43 00 mov $0x436965,%esi 0.00 : 40a983: 4c 89 ef mov %r13,%rdi 0.00 : 40a986: e8 b5 a2 02 00 callq 434c40 0.00 : 40a98b: 85 c0 test %eax,%eax 0.00 : 40a98d: 0f 84 c3 01 00 00 je 40ab56 : /* : * Note: these tests will match DROP SYSTEM and REINDEX TABLESPACE, which : * aren't really valid commands so we don't care much. The other four : * possible matches are correct. : */ : if ((wordlen == 4 && pg_strncasecmp(query, "drop", 4) == 0) || 0.00 : 40a993: ba 07 00 00 00 mov $0x7,%edx 0.00 : 40a998: be 95 69 43 00 mov $0x436995,%esi 0.00 : 40a99d: 4c 89 ef mov %r13,%rdi 0.00 : 40a9a0: e8 9b a2 02 00 callq 434c40 0.00 : 40a9a5: 85 c0 test %eax,%eax 0.00 : 40a9a7: 0f 84 a5 00 00 00 je 40aa52 : return true; : return false; : } : : /* DISCARD ALL isn't allowed in xacts, but other variants are allowed. */ : if (wordlen == 7 && pg_strncasecmp(query, "discard", 7) == 0) 0.00 : 40a9ad: ba 07 00 00 00 mov $0x7,%edx 0.00 : 40a9b2: be 9d 69 43 00 mov $0x43699d,%esi 0.00 : 40a9b7: 4c 89 ef mov %r13,%rdi 0.00 : 40a9ba: e8 81 a2 02 00 callq 434c40 0.00 : 40a9bf: 85 c0 test %eax,%eax 0.00 : 40a9c1: 0f 85 b1 f7 ff ff jne 40a178 : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a9c7: 4c 89 e7 mov %r12,%rdi 0.00 : 40a9ca: e8 81 e0 ff ff callq 408a50 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a9cf: 0f b6 10 movzbl (%rax),%edx : /* DISCARD ALL isn't allowed in xacts, but other variants are allowed. */ : if (wordlen == 7 && pg_strncasecmp(query, "discard", 7) == 0) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40a9d2: 49 89 c4 mov %rax,%r12 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a9d5: 49 8b 06 mov (%r14),%rax 0.00 : 40a9d8: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40a9dd: 0f 84 95 f7 ff ff je 40a178 0.00 : 40a9e3: 4c 89 e7 mov %r12,%rdi 0.00 : 40a9e6: 31 db xor %ebx,%ebx : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40a9e8: 8b 35 ba 06 26 00 mov 0x2606ba(%rip),%esi # 66b0a8 0.00 : 40a9ee: e8 9d 8d ff ff callq 403790 0.00 : 40a9f3: 01 c3 add %eax,%ebx : query += wordlen; : : query = skip_white_space(query); : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40a9f5: 48 63 c3 movslq %ebx,%rax 0.00 : 40a9f8: 49 8d 3c 04 lea (%r12,%rax,1),%rdi 0.00 : 40a9fc: 49 8b 06 mov (%r14),%rax 0.00 : 40a9ff: 0f b6 17 movzbl (%rdi),%edx 0.00 : 40aa02: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40aa07: 75 df jne 40a9e8 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 3 && pg_strncasecmp(query, "all", 3) == 0) 0.00 : 40aa09: 83 fb 03 cmp $0x3,%ebx 0.00 : 40aa0c: 0f 85 66 f7 ff ff jne 40a178 0.00 : 40aa12: ba 03 00 00 00 mov $0x3,%edx 0.00 : 40aa17: be 62 67 44 00 mov $0x446762,%esi 0.00 : 40aa1c: 4c 89 e7 mov %r12,%rdi 0.00 : 40aa1f: e8 1c a2 02 00 callq 434c40 0.00 : 40aa24: 85 c0 test %eax,%eax 0.00 : 40aa26: 0f 85 4c f7 ff ff jne 40a178 0.00 : 40aa2c: e9 b7 f3 ff ff jmpq 409de8 0.00 : 40aa31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Note: these tests will match DROP SYSTEM and REINDEX TABLESPACE, which : * aren't really valid commands so we don't care much. The other four : * possible matches are correct. : */ : if ((wordlen == 4 && pg_strncasecmp(query, "drop", 4) == 0) || 0.00 : 40aa38: ba 04 00 00 00 mov $0x4,%edx 0.00 : 40aa3d: be b3 16 45 00 mov $0x4516b3,%esi 0.00 : 40aa42: 4c 89 ef mov %r13,%rdi 0.00 : 40aa45: e8 f6 a1 02 00 callq 434c40 0.00 : 40aa4a: 85 c0 test %eax,%eax 0.00 : 40aa4c: 0f 85 26 f7 ff ff jne 40a178 : (wordlen == 7 && pg_strncasecmp(query, "reindex", 7) == 0)) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40aa52: 4c 89 e7 mov %r12,%rdi 0.00 : 40aa55: e8 f6 df ff ff callq 408a50 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40aa5a: 0f b6 10 movzbl (%rax),%edx : if ((wordlen == 4 && pg_strncasecmp(query, "drop", 4) == 0) || : (wordlen == 7 && pg_strncasecmp(query, "reindex", 7) == 0)) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40aa5d: 49 89 c4 mov %rax,%r12 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40aa60: 49 8b 06 mov (%r14),%rax 0.00 : 40aa63: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40aa68: 0f 84 0a f7 ff ff je 40a178 0.00 : 40aa6e: 4c 89 e7 mov %r12,%rdi 0.00 : 40aa71: 31 db xor %ebx,%ebx 0.00 : 40aa73: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40aa78: 8b 35 2a 06 26 00 mov 0x26062a(%rip),%esi # 66b0a8 0.00 : 40aa7e: e8 0d 8d ff ff callq 403790 0.00 : 40aa83: 01 c3 add %eax,%ebx : query += wordlen; : : query = skip_white_space(query); : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40aa85: 48 63 c3 movslq %ebx,%rax 0.00 : 40aa88: 49 8d 3c 04 lea (%r12,%rax,1),%rdi 0.00 : 40aa8c: 49 8b 06 mov (%r14),%rax 0.00 : 40aa8f: 0f b6 17 movzbl (%rdi),%edx 0.00 : 40aa92: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40aa97: 75 df jne 40aa78 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) 0.00 : 40aa99: 83 fb 08 cmp $0x8,%ebx 0.00 : 40aa9c: 0f 84 75 01 00 00 je 40ac17 : return true; : if (wordlen == 6 && pg_strncasecmp(query, "system", 6) == 0) 0.00 : 40aaa2: 83 fb 06 cmp $0x6,%ebx 0.00 : 40aaa5: 0f 84 27 fd ff ff je 40a7d2 : return true; : if (wordlen == 10 && pg_strncasecmp(query, "tablespace", 10) == 0) 0.00 : 40aaab: 83 fb 0a cmp $0xa,%ebx 0.00 : 40aaae: 66 90 xchg %ax,%ax 0.00 : 40aab0: 0f 85 c2 f6 ff ff jne 40a178 0.00 : 40aab6: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 40aabb: be 00 c4 43 00 mov $0x43c400,%esi 0.00 : 40aac0: 4c 89 e7 mov %r12,%rdi 0.00 : 40aac3: e8 78 a1 02 00 callq 434c40 0.00 : 40aac8: 85 c0 test %eax,%eax 0.00 : 40aaca: 0f 84 18 f3 ff ff je 409de8 0.00 : 40aad0: e9 a3 f6 ff ff jmpq 40a178 0.00 : 40aad5: 0f 1f 00 nopl (%rax) : * Returns true if successful, false otherwise. : */ : static bool : PrintQueryTuples(const PGresult *results) : { : printQueryOpt my_popt = pset.popt; 0.00 : 40aad8: 48 8d 9d 00 ff ff ff lea -0x100(%rbp),%rbx 0.00 : 40aadf: be c8 b0 66 00 mov $0x66b0c8,%esi 0.00 : 40aae4: b9 14 00 00 00 mov $0x14,%ecx 0.00 : 40aae9: 48 89 df mov %rbx,%rdi 0.00 : 40aaec: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : : /* write output to \g argument, if any */ : if (pset.gfname) 0.00 : 40aaef: 48 83 3e 00 cmpq $0x0,(%rsi) 0.00 : 40aaf3: 0f 84 3d 01 00 00 je 40ac36 : { : /* keep this code in sync with ExecQueryUsingCursor */ : FILE *queryFout_copy = pset.queryFout; : bool queryFoutPipe_copy = pset.queryFoutPipe; : : pset.queryFout = stdout; /* so it doesn't get closed */ 0.00 : 40aaf9: 48 8b 05 50 ff 25 00 mov 0x25ff50(%rip),%rax # 66aa50 : : /* open file/pipe */ : if (!setQFout(pset.gfname)) 0.00 : 40ab00: 48 8b 3e mov (%rsi),%rdi : : /* write output to \g argument, if any */ : if (pset.gfname) : { : /* keep this code in sync with ExecQueryUsingCursor */ : FILE *queryFout_copy = pset.queryFout; 0.00 : 40ab03: 4c 8b 35 a6 05 26 00 mov 0x2605a6(%rip),%r14 # 66b0b0 : bool queryFoutPipe_copy = pset.queryFoutPipe; 0.00 : 40ab0a: 44 0f b6 25 a6 05 26 movzbl 0x2605a6(%rip),%r12d # 66b0b8 0.00 : 40ab11: 00 : : pset.queryFout = stdout; /* so it doesn't get closed */ 0.00 : 40ab12: 48 89 05 97 05 26 00 mov %rax,0x260597(%rip) # 66b0b0 : : /* open file/pipe */ : if (!setQFout(pset.gfname)) 0.00 : 40ab19: e8 32 ea ff ff callq 409550 0.00 : 40ab1e: 84 c0 test %al,%al 0.00 : 40ab20: 0f 85 b8 00 00 00 jne 40abde : { : pset.queryFout = queryFout_copy; 0.00 : 40ab26: 4c 89 35 83 05 26 00 mov %r14,0x260583(%rip) # 66b0b0 : pset.queryFoutPipe = queryFoutPipe_copy; 0.00 : 40ab2d: 44 88 25 84 05 26 00 mov %r12b,0x260584(%rip) # 66b0b8 0.00 : 40ab34: 45 31 ff xor %r15d,%r15d 0.00 : 40ab37: e9 ef fa ff ff jmpq 40a62b : success = StoreQueryTuple(results); : else : success = PrintQueryTuples(results); : /* if it's INSERT/UPDATE/DELETE RETURNING, also print status */ : cmdstatus = PQcmdStatus(results); : if (strncmp(cmdstatus, "INSERT", 6) == 0 || 0.00 : 40ab3c: bf ba 7c 45 00 mov $0x457cba,%edi 0.00 : 40ab41: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 40ab46: 48 89 c6 mov %rax,%rsi 0.00 : 40ab49: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 40ab4b: 0f 85 b7 f6 ff ff jne 40a208 0.00 : 40ab51: e9 03 fb ff ff jmpq 40a659 : if (wordlen == 7 && pg_strncasecmp(query, "cluster", 7) == 0) : { : /* CLUSTER with any arguments is allowed in transactions */ : query += wordlen; : : query = skip_white_space(query); 0.00 : 40ab56: 4c 89 e7 mov %r12,%rdi 0.00 : 40ab59: e8 f2 de ff ff callq 408a50 : : if (isalpha((unsigned char) query[0])) 0.00 : 40ab5e: 0f b6 10 movzbl (%rax),%edx 0.00 : 40ab61: 49 8b 06 mov (%r14),%rax 0.00 : 40ab64: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40ab69: 0f 85 09 f6 ff ff jne 40a178 0.00 : 40ab6f: e9 74 f2 ff ff jmpq 409de8 : if (wordlen == 7 && pg_strncasecmp(query, "prepare", 7) == 0) : { : /* PREPARE TRANSACTION is a TC command, PREPARE foo is not */ : query += wordlen; : : query = skip_white_space(query); 0.00 : 40ab74: 4c 89 e7 mov %r12,%rdi 0.00 : 40ab77: e8 d4 de ff ff callq 408a50 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40ab7c: 0f b6 10 movzbl (%rax),%edx : if (wordlen == 7 && pg_strncasecmp(query, "prepare", 7) == 0) : { : /* PREPARE TRANSACTION is a TC command, PREPARE foo is not */ : query += wordlen; : : query = skip_white_space(query); 0.00 : 40ab7f: 49 89 c4 mov %rax,%r12 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40ab82: 49 8b 06 mov (%r14),%rax 0.00 : 40ab85: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40ab8a: 0f 84 e8 f5 ff ff je 40a178 0.00 : 40ab90: 4c 89 e7 mov %r12,%rdi 0.00 : 40ab93: 30 db xor %bl,%bl : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40ab95: 8b 35 0d 05 26 00 mov 0x26050d(%rip),%esi # 66b0a8 0.00 : 40ab9b: e8 f0 8b ff ff callq 403790 0.00 : 40aba0: 01 c3 add %eax,%ebx : query += wordlen; : : query = skip_white_space(query); : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40aba2: 48 63 c3 movslq %ebx,%rax 0.00 : 40aba5: 49 8d 3c 04 lea (%r12,%rax,1),%rdi 0.00 : 40aba9: 49 8b 06 mov (%r14),%rax 0.00 : 40abac: 0f b6 17 movzbl (%rdi),%edx 0.00 : 40abaf: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40abb4: 75 df jne 40ab95 : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 11 && pg_strncasecmp(query, "transaction", 11) == 0) 0.00 : 40abb6: 83 fb 0b cmp $0xb,%ebx 0.00 : 40abb9: 0f 85 b9 f5 ff ff jne 40a178 0.00 : 40abbf: ba 0b 00 00 00 mov $0xb,%edx 0.00 : 40abc4: be 06 b9 43 00 mov $0x43b906,%esi 0.00 : 40abc9: 4c 89 e7 mov %r12,%rdi 0.00 : 40abcc: e8 6f a0 02 00 callq 434c40 0.00 : 40abd1: 85 c0 test %eax,%eax 0.00 : 40abd3: 0f 84 0f f2 ff ff je 409de8 0.00 : 40abd9: e9 9a f5 ff ff jmpq 40a178 : pset.queryFout = queryFout_copy; : pset.queryFoutPipe = queryFoutPipe_copy; : return false; : } : : printQuery(results, &my_popt, pset.queryFout, pset.logfile); 0.00 : 40abde: 48 8b 0d d3 05 26 00 mov 0x2605d3(%rip),%rcx # 66b1b8 0.00 : 40abe5: 48 8b 15 c4 04 26 00 mov 0x2604c4(%rip),%rdx # 66b0b0 0.00 : 40abec: 48 89 de mov %rbx,%rsi 0.00 : 40abef: 4c 89 ef mov %r13,%rdi : : /* close file/pipe, restore old setting */ : setQFout(NULL); : : pset.queryFout = queryFout_copy; : pset.queryFoutPipe = queryFoutPipe_copy; 0.00 : 40abf2: 41 bf 01 00 00 00 mov $0x1,%r15d : pset.queryFout = queryFout_copy; : pset.queryFoutPipe = queryFoutPipe_copy; : return false; : } : : printQuery(results, &my_popt, pset.queryFout, pset.logfile); 0.00 : 40abf8: e8 93 ee 00 00 callq 419a90 : : /* close file/pipe, restore old setting */ : setQFout(NULL); 0.00 : 40abfd: 31 ff xor %edi,%edi 0.00 : 40abff: e8 4c e9 ff ff callq 409550 : : pset.queryFout = queryFout_copy; 0.00 : 40ac04: 4c 89 35 a5 04 26 00 mov %r14,0x2604a5(%rip) # 66b0b0 : pset.queryFoutPipe = queryFoutPipe_copy; 0.00 : 40ac0b: 44 88 25 a6 04 26 00 mov %r12b,0x2604a6(%rip) # 66b0b8 0.00 : 40ac12: e9 14 fa ff ff jmpq 40a62b : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) 0.00 : 40ac17: ba 08 00 00 00 mov $0x8,%edx 0.00 : 40ac1c: be 5b b9 43 00 mov $0x43b95b,%esi 0.00 : 40ac21: 4c 89 e7 mov %r12,%rdi 0.00 : 40ac24: e8 17 a0 02 00 callq 434c40 0.00 : 40ac29: 85 c0 test %eax,%eax 0.00 : 40ac2b: 0f 85 47 f5 ff ff jne 40a178 0.00 : 40ac31: e9 b2 f1 ff ff jmpq 409de8 : : pset.queryFout = queryFout_copy; : pset.queryFoutPipe = queryFoutPipe_copy; : } : else : printQuery(results, &my_popt, pset.queryFout, pset.logfile); 0.00 : 40ac36: 48 8b 0d 7b 05 26 00 mov 0x26057b(%rip),%rcx # 66b1b8 0.00 : 40ac3d: 48 8b 15 6c 04 26 00 mov 0x26046c(%rip),%rdx # 66b0b0 0.00 : 40ac44: 48 89 de mov %rbx,%rsi 0.00 : 40ac47: 4c 89 ef mov %r13,%rdi 0.00 : 40ac4a: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 40ac50: e8 3b ee 00 00 callq 419a90 0.00 : 40ac55: e9 d1 f9 ff ff jmpq 40a62b : return true; : if (wordlen == 10 && pg_strncasecmp(query, "tablespace", 10) == 0) : return true; : : /* CREATE [UNIQUE] INDEX CONCURRENTLY isn't allowed in xacts */ : if (wordlen == 6 && pg_strncasecmp(query, "unique", 6) == 0) 0.00 : 40ac5a: ba 06 00 00 00 mov $0x6,%edx 0.00 : 40ac5f: be 74 69 43 00 mov $0x436974,%esi 0.00 : 40ac64: 4c 89 ef mov %r13,%rdi 0.00 : 40ac67: e8 d4 9f 02 00 callq 434c40 0.00 : 40ac6c: 85 c0 test %eax,%eax 0.00 : 40ac6e: 0f 85 04 f5 ff ff jne 40a178 : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40ac74: 4c 89 e7 mov %r12,%rdi 0.00 : 40ac77: e8 d4 dd ff ff callq 408a50 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40ac7c: 0f b6 10 movzbl (%rax),%edx : /* CREATE [UNIQUE] INDEX CONCURRENTLY isn't allowed in xacts */ : if (wordlen == 6 && pg_strncasecmp(query, "unique", 6) == 0) : { : query += wordlen; : : query = skip_white_space(query); 0.00 : 40ac7f: 49 89 c5 mov %rax,%r13 : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40ac82: 49 8b 06 mov (%r14),%rax 0.00 : 40ac85: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40ac8a: 0f 84 e8 f4 ff ff je 40a178 0.00 : 40ac90: 4c 89 ef mov %r13,%rdi 0.00 : 40ac93: 31 db xor %ebx,%ebx : wordlen += PQmblen(&query[wordlen], pset.encoding); 0.00 : 40ac95: 8b 35 0d 04 26 00 mov 0x26040d(%rip),%esi # 66b0a8 0.00 : 40ac9b: e8 f0 8a ff ff callq 403790 0.00 : 40aca0: 01 c3 add %eax,%ebx : query += wordlen; : : query = skip_white_space(query); : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) 0.00 : 40aca2: 48 63 c3 movslq %ebx,%rax 0.00 : 40aca5: 49 8d 7c 05 00 lea 0x0(%r13,%rax,1),%rdi 0.00 : 40acaa: 49 8b 06 mov (%r14),%rax 0.00 : 40acad: 0f b6 17 movzbl (%rdi),%edx 0.00 : 40acb0: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 40acb5: 75 de jne 40ac95 0.00 : 40acb7: e9 ed fb ff ff jmpq 40a8a9 0.00 : 40acbc: 0f 1f 40 00 nopl 0x0(%rax) : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) : return true; : if (wordlen == 10 && pg_strncasecmp(query, "tablespace", 10) == 0) 0.00 : 40acc0: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 40acc5: be 00 c4 43 00 mov $0x43c400,%esi 0.00 : 40acca: 4c 89 ef mov %r13,%rdi 0.00 : 40accd: e8 6e 9f 02 00 callq 434c40 0.00 : 40acd2: 85 c0 test %eax,%eax 0.00 : 40acd4: 0f 85 9e f4 ff ff jne 40a178 0.00 : 40acda: e9 09 f1 ff ff jmpq 409de8 0.00 : 40acdf: 90 nop : : wordlen = 0; : while (isalpha((unsigned char) query[wordlen])) : wordlen += PQmblen(&query[wordlen], pset.encoding); : : if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) 0.00 : 40ace0: ba 08 00 00 00 mov $0x8,%edx 0.00 : 40ace5: be 5b b9 43 00 mov $0x43b95b,%esi 0.00 : 40acea: 4c 89 ef mov %r13,%rdi 0.00 : 40aced: e8 4e 9f 02 00 callq 434c40 0.00 : 40acf2: 85 c0 test %eax,%eax 0.00 : 40acf4: 0f 85 7e f4 ff ff jne 40a178 0.00 : 40acfa: e9 e9 f0 ff ff jmpq 409de8 Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/psqlscan.c:3912 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000040e1c0 : : YY_USER_ACTION : : /** The main scanner function which does all the work. : */ : YY_DECL : { 0.00 : 40e1c0: 55 push %rbp 0.00 : 40e1c1: 48 89 e5 mov %rsp,%rbp 0.00 : 40e1c4: 41 57 push %r15 0.00 : 40e1c6: 41 56 push %r14 0.00 : 40e1c8: 41 55 push %r13 0.00 : 40e1ca: 41 54 push %r12 0.00 : 40e1cc: 53 push %rbx 0.00 : 40e1cd: 48 83 ec 38 sub $0x38,%rsp : #line 413 "psqlscan.l" : : : #line 3863 "psqlscan.c" : : if ( !(yy_init) ) 0.00 : 40e1d1: 44 8b 2d 78 cb 25 00 mov 0x25cb78(%rip),%r13d # 66ad50 0.00 : 40e1d8: 45 85 ed test %r13d,%r13d 0.00 : 40e1db: 0f 85 9f 00 00 00 jne 40e280 : #ifdef YY_USER_INIT : YY_USER_INIT; : #endif : : if ( ! (yy_start) ) : (yy_start) = 1; /* first start state */ 0.00 : 40e1e1: 44 8b 25 44 cb 25 00 mov 0x25cb44(%rip),%r12d # 66ad2c 0.00 : 40e1e8: b8 01 00 00 00 mov $0x1,%eax : : #line 3863 "psqlscan.c" : : if ( !(yy_init) ) : { : (yy_init) = 1; 0.00 : 40e1ed: c7 05 59 cb 25 00 01 movl $0x1,0x25cb59(%rip) # 66ad50 0.00 : 40e1f4: 00 00 00 : #ifdef YY_USER_INIT : YY_USER_INIT; : #endif : : if ( ! (yy_start) ) : (yy_start) = 1; /* first start state */ 0.00 : 40e1f7: 45 85 e4 test %r12d,%r12d 0.00 : 40e1fa: 0f 45 05 2b cb 25 00 cmovne 0x25cb2b(%rip),%eax # 66ad2c : : if ( ! yyin ) 0.00 : 40e201: 48 83 3d 0f cb 25 00 cmpq $0x0,0x25cb0f(%rip) # 66ad18 0.00 : 40e208: 00 : #ifdef YY_USER_INIT : YY_USER_INIT; : #endif : : if ( ! (yy_start) ) : (yy_start) = 1; /* first start state */ 0.00 : 40e209: 89 05 1d cb 25 00 mov %eax,0x25cb1d(%rip) # 66ad2c : : if ( ! yyin ) 0.00 : 40e20f: 0f 84 4b 17 00 00 je 40f960 : yyin = stdin; : : if ( ! yyout ) 0.00 : 40e215: 48 83 3d 03 cb 25 00 cmpq $0x0,0x25cb03(%rip) # 66ad20 0.00 : 40e21c: 00 0.00 : 40e21d: 0f 84 2a 17 00 00 je 40f94d : yyout = stdout; : : if ( ! YY_CURRENT_BUFFER ) { 0.00 : 40e223: 48 8b 3d 06 cb 25 00 mov 0x25cb06(%rip),%rdi # 66ad30 0.00 : 40e22a: 48 85 ff test %rdi,%rdi 0.00 : 40e22d: 0f 84 ed 17 00 00 je 40fa20 0.00 : 40e233: 4c 8b 05 fe ca 25 00 mov 0x25cafe(%rip),%r8 # 66ad38 0.00 : 40e23a: 4a 83 3c c7 00 cmpq $0x0,(%rdi,%r8,8) 0.00 : 40e23f: 0f 84 db 17 00 00 je 40fa20 : (yy_did_buffer_switch_on_eof) = 1; : } : : static void yy_load_buffer_state (void) : { : (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 0.00 : 40e245: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40e249: 8b 40 20 mov 0x20(%rax),%eax 0.00 : 40e24c: 89 05 06 cb 25 00 mov %eax,0x25cb06(%rip) # 66ad58 : (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 0.00 : 40e252: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40e256: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 40e25a: 48 89 15 e7 ca 25 00 mov %rdx,0x25cae7(%rip) # 66ad48 0.00 : 40e261: 48 89 15 20 ce 25 00 mov %rdx,0x25ce20(%rip) # 66b088 : yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 0.00 : 40e268: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40e26c: 48 8b 00 mov (%rax),%rax 0.00 : 40e26f: 48 89 05 a2 ca 25 00 mov %rax,0x25caa2(%rip) # 66ad18 : (yy_hold_char) = *(yy_c_buf_p); 0.00 : 40e276: 0f b6 02 movzbl (%rdx),%eax 0.00 : 40e279: 88 05 d5 ca 25 00 mov %al,0x25cad5(%rip) # 66ad54 0.00 : 40e27f: 90 nop : while ( 1 ) /* loops until end-of-file is reached */ : { : yy_cp = (yy_c_buf_p); : : /* Support of yytext. */ : *yy_cp = (yy_hold_char); 0.00 : 40e280: 0f b6 05 cd ca 25 00 movzbl 0x25cacd(%rip),%eax # 66ad54 : yy_load_buffer_state( ); : } : : while ( 1 ) /* loops until end-of-file is reached */ : { : yy_cp = (yy_c_buf_p); 0.00 : 40e287: 4c 8b 25 ba ca 25 00 mov 0x25caba(%rip),%r12 # 66ad48 : /* yy_bp points to the position in yy_ch_buf of the start of : * the current run. : */ : yy_bp = yy_cp; : : yy_current_state = (yy_start); 0.00 : 40e28e: 4d 89 e6 mov %r12,%r14 : while ( 1 ) /* loops until end-of-file is reached */ : { : yy_cp = (yy_c_buf_p); : : /* Support of yytext. */ : *yy_cp = (yy_hold_char); 0.00 : 40e291: 41 88 04 24 mov %al,(%r12) : /* yy_bp points to the position in yy_ch_buf of the start of : * the current run. : */ : yy_bp = yy_cp; : : yy_current_state = (yy_start); 0.00 : 40e295: 8b 15 91 ca 25 00 mov 0x25ca91(%rip),%edx # 66ad2c : yy_match: : while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) 0.00 : 40e29b: 0f b6 c0 movzbl %al,%eax 0.00 : 40e29e: 48 63 0c 85 e0 e5 43 movslq 0x43e5e0(,%rax,4),%rcx 0.00 : 40e2a5: 00 0.00 : 40e2a6: 48 63 c2 movslq %edx,%rax 0.00 : 40e2a9: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 40e2ad: 48 89 c2 mov %rax,%rdx 0.00 : 40e2b0: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 40e2b4: 48 29 c2 sub %rax,%rdx 0.00 : 40e2b7: 48 01 ca add %rcx,%rdx 0.00 : 40e2ba: 0f bf 94 12 e0 e9 43 movswl 0x43e9e0(%rdx,%rdx,1),%edx 0.00 : 40e2c1: 00 0.00 : 40e2c2: 85 d2 test %edx,%edx 0.00 : 40e2c4: 7e 12 jle 40e2d8 : ++yy_cp; 0.00 : 40e2c6: 49 83 c4 01 add $0x1,%r12 0.00 : 40e2ca: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 40e2cf: eb ca jmp 40e29b 0.00 : 40e2d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : yy_current_state = -yy_current_state; 0.00 : 40e2d8: f7 da neg %edx : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - : number_to_move - 1; : : } : : if ( num_to_read > YY_READ_BUF_SIZE ) 0.00 : 40e2da: 41 b9 00 20 00 00 mov $0x2000,%r9d 0.00 : 40e2e0: 48 63 ca movslq %edx,%rcx : yy_current_state = -yy_current_state; : : yy_find_action: : yy_act = yy_accept[yy_current_state]; : : YY_DO_BEFORE_ACTION; 0.00 : 40e2e3: 44 89 e0 mov %r12d,%eax 0.00 : 40e2e6: 4c 89 35 9b cd 25 00 mov %r14,0x25cd9b(%rip) # 66b088 0.00 : 40e2ed: 44 89 75 a8 mov %r14d,-0x58(%rbp) 0.00 : 40e2f1: 44 29 f0 sub %r14d,%eax : ++yy_cp; : : yy_current_state = -yy_current_state; : : yy_find_action: : yy_act = yy_accept[yy_current_state]; 0.00 : 40e2f4: 0f bf 94 09 20 61 44 movswl 0x446120(%rcx,%rcx,1),%edx 0.00 : 40e2fb: 00 : : YY_DO_BEFORE_ACTION; /home/Computational/mark/src/postgres-andres/src/bin/psql/psqlscan.c:3912 100.00 : 40e2fc: 45 89 e5 mov %r12d,%r13d 0.00 : 40e2ff: 89 05 8b cd 25 00 mov %eax,0x25cd8b(%rip) # 66b090 0.00 : 40e305: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 40e30a: 88 05 44 ca 25 00 mov %al,0x25ca44(%rip) # 66ad54 0.00 : 40e310: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 40e315: 4c 89 25 2c ca 25 00 mov %r12,0x25ca2c(%rip) # 66ad48 : : do_action: /* This label is used only to access EOF actions. */ : : switch ( yy_act ) 0.00 : 40e31c: 81 fa 88 00 00 00 cmp $0x88,%edx 0.00 : 40e322: 76 14 jbe 40e338 : } : break; : } : : default: : YY_FATAL_ERROR( 0.00 : 40e324: bf b0 df 43 00 mov $0x43dfb0,%edi 0.00 : 40e329: e8 b2 f3 ff ff callq 40d6e0 0.00 : 40e32e: e9 4d ff ff ff jmpq 40e280 0.00 : 40e333: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : YY_DO_BEFORE_ACTION; : : do_action: /* This label is used only to access EOF actions. */ : : switch ( yy_act ) 0.00 : 40e338: 89 d0 mov %edx,%eax 0.00 : 40e33a: ff 24 c5 00 e1 43 00 jmpq *0x43e100(,%rax,8) : /* at end of command, eat a double backslash, but not anything else */ : : "\\\\" { return LEXRES_OK; } : : {other}|\n { : yyless(0); 0.00 : 40e341: 0f b6 05 0c ca 25 00 movzbl 0x25ca0c(%rip),%eax # 66ad54 0.00 : 40e348: 41 88 04 24 mov %al,(%r12) 0.00 : 40e34c: 4c 89 35 f5 c9 25 00 mov %r14,0x25c9f5(%rip) # 66ad48 0.00 : 40e353: 4c 89 35 2e cd 25 00 mov %r14,0x25cd2e(%rip) # 66b088 0.00 : 40e35a: c7 05 2c cd 25 00 00 movl $0x0,0x25cd2c(%rip) # 66b090 0.00 : 40e361: 00 00 00 0.00 : 40e364: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 40e368: 88 05 e6 c9 25 00 mov %al,0x25c9e6(%rip) # 66ad54 0.00 : 40e36e: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 40e372: b8 03 00 00 00 mov $0x3,%eax 0.00 : 40e377: 4c 89 35 ca c9 25 00 mov %r14,0x25c9ca(%rip) # 66ad48 : default: : YY_FATAL_ERROR( : "fatal flex scanner internal error--no action found" ); : } /* end of action switch */ : } /* end of scanning one token */ : } /* end of yylex */ 0.00 : 40e37e: 48 83 c4 38 add $0x38,%rsp 0.00 : 40e382: 5b pop %rbx 0.00 : 40e383: 41 5c pop %r12 0.00 : 40e385: 41 5d pop %r13 0.00 : 40e387: 41 5e pop %r14 0.00 : 40e389: 41 5f pop %r15 0.00 : 40e38b: c9 leaveq 0.00 : 40e38c: c3 retq : : { : /* command name ends at whitespace or backslash; eat all else */ : : {space}|"\\" { : yyless(0); 0.00 : 40e38d: 0f b6 05 c0 c9 25 00 movzbl 0x25c9c0(%rip),%eax # 66ad54 0.00 : 40e394: 41 88 04 24 mov %al,(%r12) 0.00 : 40e398: 4c 89 35 a9 c9 25 00 mov %r14,0x25c9a9(%rip) # 66ad48 0.00 : 40e39f: 4c 89 35 e2 cc 25 00 mov %r14,0x25cce2(%rip) # 66b088 0.00 : 40e3a6: c7 05 e0 cc 25 00 00 movl $0x0,0x25cce0(%rip) # 66b090 0.00 : 40e3ad: 00 00 00 0.00 : 40e3b0: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 40e3b4: 88 05 9a c9 25 00 mov %al,0x25c99a(%rip) # 66ad54 0.00 : 40e3ba: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 40e3be: 4c 89 35 83 c9 25 00 mov %r14,0x25c983(%rip) # 66ad48 0.00 : 40e3c5: 48 83 c4 38 add $0x38,%rsp 0.00 : 40e3c9: b8 03 00 00 00 mov $0x3,%eax 0.00 : 40e3ce: 5b pop %rbx 0.00 : 40e3cf: 41 5c pop %r12 0.00 : 40e3d1: 41 5d pop %r13 0.00 : 40e3d3: 41 5e pop %r14 0.00 : 40e3d5: 41 5f pop %r15 0.00 : 40e3d7: c9 leaveq 0.00 : 40e3d8: c3 retq : /* : * Everything from here down is psql-specific. : */ : : <> { : StackElem *stackelem = cur_state->buffer_stack; 0.00 : 40e3d9: 48 8b 3d 80 c9 25 00 mov 0x25c980(%rip),%rdi # 66ad60 : : if (stackelem == NULL) 0.00 : 40e3e0: 48 83 3f 00 cmpq $0x0,(%rdi) 0.00 : 40e3e4: 0f 84 b1 19 00 00 je 40fd9b : : /* : * We were expanding a variable, so pop the inclusion : * stack and keep lexing : */ : pop_buffer_stack(cur_state); 0.00 : 40e3ea: e8 61 f0 ff ff callq 40d450 : : stackelem = cur_state->buffer_stack; 0.00 : 40e3ef: 48 8b 05 6a c9 25 00 mov 0x25c96a(%rip),%rax # 66ad60 0.00 : 40e3f6: 48 8b 18 mov (%rax),%rbx : if (stackelem != NULL) 0.00 : 40e3f9: 48 85 db test %rbx,%rbx 0.00 : 40e3fc: 0f 84 4e 19 00 00 je 40fd50 : { : yy_switch_to_buffer(stackelem->buf); 0.00 : 40e402: 48 8b 3b mov (%rbx),%rdi 0.00 : 40e405: e8 b6 f4 ff ff callq 40d8c0 : cur_state->curline = stackelem->bufstring; 0.00 : 40e40a: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 40e40e: 48 8b 05 4b c9 25 00 mov 0x25c94b(%rip),%rax # 66ad60 0.00 : 40e415: 48 89 50 28 mov %rdx,0x28(%rax) : cur_state->refline = stackelem->origstring ? stackelem->origstring : stackelem->bufstring; 0.00 : 40e419: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 40e41d: 48 8b 15 3c c9 25 00 mov 0x25c93c(%rip),%rdx # 66ad60 0.00 : 40e424: 48 85 c0 test %rax,%rax 0.00 : 40e427: 0f 84 5f 1b 00 00 je 40ff8c 0.00 : 40e42d: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 40e431: e9 4a fe ff ff jmpq 40e280 : #line 5074 "psqlscan.c" : : case YY_END_OF_BUFFER: : { : /* Amount of text matched not including the EOB char. */ : int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 0.00 : 40e436: 48 8b 05 4b cc 25 00 mov 0x25cc4b(%rip),%rax # 66b088 0.00 : 40e43d: f7 d0 not %eax 0.00 : 40e43f: 44 01 e8 add %r13d,%eax 0.00 : 40e442: 89 45 b0 mov %eax,-0x50(%rbp) : : /* Undo the effects of YY_DO_BEFORE_ACTION. */ : *yy_cp = (yy_hold_char); 0.00 : 40e445: 0f b6 05 08 c9 25 00 movzbl 0x25c908(%rip),%eax # 66ad54 0.00 : 40e44c: 41 88 04 24 mov %al,(%r12) : YY_RESTORE_YY_MORE_OFFSET : : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 0.00 : 40e450: 4c 8b 05 e1 c8 25 00 mov 0x25c8e1(%rip),%r8 # 66ad38 0.00 : 40e457: 48 8b 3d d2 c8 25 00 mov 0x25c8d2(%rip),%rdi # 66ad30 0.00 : 40e45e: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40e462: 44 8b 58 3c mov 0x3c(%rax),%r11d 0.00 : 40e466: 45 85 db test %r11d,%r11d 0.00 : 40e469: 75 3e jne 40e4a9 : * consistency between YY_CURRENT_BUFFER and our : * globals. Here is the right place to do so, because : * this is the first action (other than possibly a : * back-up) that will match for the new input source. : */ : (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 0.00 : 40e46b: 8b 40 20 mov 0x20(%rax),%eax 0.00 : 40e46e: 89 05 e4 c8 25 00 mov %eax,0x25c8e4(%rip) # 66ad58 : YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 0.00 : 40e474: 48 8b 05 9d c8 25 00 mov 0x25c89d(%rip),%rax # 66ad18 0.00 : 40e47b: 4a 8b 14 c7 mov (%rdi,%r8,8),%rdx 0.00 : 40e47f: 48 89 02 mov %rax,(%rdx) : YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 0.00 : 40e482: 48 8b 15 a7 c8 25 00 mov 0x25c8a7(%rip),%rdx # 66ad30 0.00 : 40e489: 48 8b 05 a8 c8 25 00 mov 0x25c8a8(%rip),%rax # 66ad38 0.00 : 40e490: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 40e494: c7 40 3c 01 00 00 00 movl $0x1,0x3c(%rax) 0.00 : 40e49b: 48 8b 3d 8e c8 25 00 mov 0x25c88e(%rip),%rdi # 66ad30 0.00 : 40e4a2: 4c 8b 05 8f c8 25 00 mov 0x25c88f(%rip),%r8 # 66ad38 : * already have been incremented past the NUL character : * (since all states make transitions on EOB to the : * end-of-buffer state). Contrast this with the test : * in input(). : */ : if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 0.00 : 40e4a9: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40e4ad: 48 63 35 a4 c8 25 00 movslq 0x25c8a4(%rip),%rsi # 66ad58 0.00 : 40e4b4: 48 8b 15 8d c8 25 00 mov 0x25c88d(%rip),%rdx # 66ad48 0.00 : 40e4bb: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 40e4bf: 48 8d 04 33 lea (%rbx,%rsi,1),%rax 0.00 : 40e4c3: 48 39 c2 cmp %rax,%rdx 0.00 : 40e4c6: 0f 86 d6 18 00 00 jbe 40fda2 : * EOB_ACT_END_OF_FILE - end of file : */ : static int yy_get_next_buffer (void) : { : register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; : register char *source = (yytext_ptr); 0.00 : 40e4cc: 48 8b 0d b5 cb 25 00 mov 0x25cbb5(%rip),%rcx # 66b088 : register int number_to_move, i; : int ret_val; : : if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 0.00 : 40e4d3: 48 8d 44 33 01 lea 0x1(%rbx,%rsi,1),%rax 0.00 : 40e4d8: 48 39 c2 cmp %rax,%rdx : * EOB_ACT_END_OF_FILE - end of file : */ : static int yy_get_next_buffer (void) : { : register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; : register char *source = (yytext_ptr); 0.00 : 40e4db: 49 89 cf mov %rcx,%r15 : register int number_to_move, i; : int ret_val; : : if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 0.00 : 40e4de: 0f 87 09 15 00 00 ja 40f9ed : YY_FATAL_ERROR( : "fatal flex scanner internal error--end of buffer missed" ); : : if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 0.00 : 40e4e4: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40e4e8: 44 8b 50 38 mov 0x38(%rax),%r10d 0.00 : 40e4ec: 45 85 d2 test %r10d,%r10d 0.00 : 40e4ef: 0f 85 5f 13 00 00 jne 40f854 : { /* Don't try to fill the buffer, so this is an EOF. */ : if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 0.00 : 40e4f5: 48 29 ca sub %rcx,%rdx 0.00 : 40e4f8: 48 83 ea 01 sub $0x1,%rdx 0.00 : 40e4fc: 0f 84 02 18 00 00 je 40fd04 : yy_cp = (yy_c_buf_p); : yy_bp = (yytext_ptr) + YY_MORE_ADJ; : goto yy_match; : : case EOB_ACT_LAST_MATCH: : (yy_c_buf_p) = 0.00 : 40e502: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40e506: 4c 63 25 4b c8 25 00 movslq 0x25c84b(%rip),%r12 # 66ad58 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40e50d: 49 89 ce mov %rcx,%r14 : static yy_state_type yy_get_previous_state (void) : { : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); 0.00 : 40e510: 8b 15 16 c8 25 00 mov 0x25c816(%rip),%edx # 66ad2c : yy_cp = (yy_c_buf_p); : yy_bp = (yytext_ptr) + YY_MORE_ADJ; : goto yy_match; : : case EOB_ACT_LAST_MATCH: : (yy_c_buf_p) = 0.00 : 40e516: 4c 03 60 08 add 0x8(%rax),%r12 0.00 : 40e51a: 48 63 ca movslq %edx,%rcx : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40e51d: 4d 39 f4 cmp %r14,%r12 : yy_cp = (yy_c_buf_p); : yy_bp = (yytext_ptr) + YY_MORE_ADJ; : goto yy_match; : : case EOB_ACT_LAST_MATCH: : (yy_c_buf_p) = 0.00 : 40e520: 4c 89 25 21 c8 25 00 mov %r12,0x25c821(%rip) # 66ad48 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40e527: 0f 86 b6 fd ff ff jbe 40e2e3 0.00 : 40e52d: 4c 89 f6 mov %r14,%rsi : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40e530: 0f b6 06 movzbl (%rsi),%eax 0.00 : 40e533: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 40e538: 84 c0 test %al,%al 0.00 : 40e53a: 74 0a je 40e546 0.00 : 40e53c: 0f b6 c0 movzbl %al,%eax 0.00 : 40e53f: 8b 0c 85 e0 e5 43 00 mov 0x43e5e0(,%rax,4),%ecx 0.00 : 40e546: 48 63 d2 movslq %edx,%rdx 0.00 : 40e549: 48 63 c1 movslq %ecx,%rax : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40e54c: 48 83 c6 01 add $0x1,%rsi : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40e550: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 40e554: 48 89 d1 mov %rdx,%rcx 0.00 : 40e557: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 40e55b: 48 29 d1 sub %rdx,%rcx 0.00 : 40e55e: 48 01 c1 add %rax,%rcx : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40e561: 49 39 f4 cmp %rsi,%r12 : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40e564: 0f bf 94 09 e0 e9 43 movswl 0x43e9e0(%rcx,%rcx,1),%edx 0.00 : 40e56b: 00 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40e56c: 77 c2 ja 40e530 0.00 : 40e56e: 48 63 ca movslq %edx,%rcx 0.00 : 40e571: e9 6d fd ff ff jmpq 40e2e3 : return LEXRES_OK; : } : : } : : %% 0.00 : 40e576: bf 56 dd 43 00 mov $0x43dd56,%edi 0.00 : 40e57b: e8 60 f1 ff ff callq 40d6e0 : 0.00 : 40e580: e9 fb fc ff ff jmpq 40e280 : {space}+ { : if (output_buf->len > 0) : ECHO; : } : : {other} { ECHO; } 0.00 : 40e585: 8b 35 05 cb 25 00 mov 0x25cb05(%rip),%esi # 66b090 0.00 : 40e58b: 48 8b 3d f6 ca 25 00 mov 0x25caf6(%rip),%rdi # 66b088 0.00 : 40e592: e8 c9 f8 ff ff callq 40de60 : 0.00 : 40e597: e9 e4 fc ff ff jmpq 40e280 : { : /* copy everything until end of input line */ : /* but suppress leading whitespace */ : : {space}+ { : if (output_buf->len > 0) 0.00 : 40e59c: 48 8b 05 c5 c7 25 00 mov 0x25c7c5(%rip),%rax # 66ad68 0.00 : 40e5a3: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 40e5a8: 0f 84 d2 fc ff ff je 40e280 : ECHO; 0.00 : 40e5ae: 8b 35 dc ca 25 00 mov 0x25cadc(%rip),%esi # 66b090 0.00 : 40e5b4: 48 8b 3d cd ca 25 00 mov 0x25cacd(%rip),%rdi # 66b088 0.00 : 40e5bb: e8 a0 f8 ff ff callq 40de60 0.00 : 40e5c0: e9 bb fc ff ff jmpq 40e280 : {dquote} { : ECHO; : BEGIN(xslasharg); : } : : {other}|\n { ECHO; } 0.00 : 40e5c5: 8b 35 c5 ca 25 00 mov 0x25cac5(%rip),%esi # 66b090 0.00 : 40e5cb: 48 8b 3d b6 ca 25 00 mov 0x25cab6(%rip),%rdi # 66b088 0.00 : 40e5d2: e8 89 f8 ff ff callq 40de60 : 0.00 : 40e5d7: e9 a4 fc ff ff jmpq 40e280 : : { : /* double-quoted text: copy verbatim, including the double quotes */ : : {dquote} { : ECHO; 0.00 : 40e5dc: 8b 35 ae ca 25 00 mov 0x25caae(%rip),%esi # 66b090 0.00 : 40e5e2: 48 8b 3d 9f ca 25 00 mov 0x25ca9f(%rip),%rdi # 66b088 0.00 : 40e5e9: e8 72 f8 ff ff callq 40de60 : BEGIN(xslasharg); 0.00 : 40e5ee: c7 05 34 c7 25 00 1d movl $0x1d,0x25c734(%rip) # 66ad2c 0.00 : 40e5f5: 00 00 00 : } : 0.00 : 40e5f8: e9 83 fc ff ff jmpq 40e280 : if (option_type != OT_NO_EVAL) : evaluate_backtick(); : BEGIN(xslasharg); : } : : {other}|\n { ECHO; } 0.00 : 40e5fd: 8b 35 8d ca 25 00 mov 0x25ca8d(%rip),%esi # 66b090 0.00 : 40e603: 48 8b 3d 7e ca 25 00 mov 0x25ca7e(%rip),%rdi # 66b088 0.00 : 40e60a: e8 51 f8 ff ff callq 40de60 : 0.00 : 40e60f: e9 6c fc ff ff jmpq 40e280 : * XXX Possible future behavioral change: substitute for :VARIABLE? : */ : : "`" { : /* In NO_EVAL mode, don't evaluate the command */ : if (option_type != OT_NO_EVAL) 0.00 : 40e614: 83 3d 55 c7 25 00 05 cmpl $0x5,0x25c755(%rip) # 66ad70 0.00 : 40e61b: 74 08 je 40e625 0.00 : 40e61d: 0f 1f 00 nopl (%rax) : evaluate_backtick(); 0.00 : 40e620: e8 fb f9 ff ff callq 40e020 : BEGIN(xslasharg); 0.00 : 40e625: c7 05 fd c6 25 00 1d movl $0x1d,0x25c6fd(%rip) # 66ad2c 0.00 : 40e62c: 00 00 00 : } : 0.00 : 40e62f: e9 4c fc ff ff jmpq 40e280 : (char) strtol(yytext + 2, NULL, 16)); : } : : "\\". { emit(yytext + 1, 1); } : : {other}|\n { ECHO; } 0.00 : 40e634: 8b 35 56 ca 25 00 mov 0x25ca56(%rip),%esi # 66b090 0.00 : 40e63a: 48 8b 3d 47 ca 25 00 mov 0x25ca47(%rip),%rdi # 66b088 0.00 : 40e641: e8 1a f8 ff ff callq 40de60 : 0.00 : 40e646: e9 35 fc ff ff jmpq 40e280 : /* hex case */ : appendPQExpBufferChar(output_buf, : (char) strtol(yytext + 2, NULL, 16)); : } : : "\\". { emit(yytext + 1, 1); } 0.00 : 40e64b: 48 8b 3d 36 ca 25 00 mov 0x25ca36(%rip),%rdi # 66b088 0.00 : 40e652: be 01 00 00 00 mov $0x1,%esi 0.00 : 40e657: 48 83 c7 01 add $0x1,%rdi 0.00 : 40e65b: e8 00 f8 ff ff callq 40de60 : 0.00 : 40e660: e9 1b fc ff ff jmpq 40e280 : (char) strtol(yytext + 1, NULL, 8)); : } : : {xehexesc} { : /* hex case */ : appendPQExpBufferChar(output_buf, 0.00 : 40e665: 48 8b 3d 1c ca 25 00 mov 0x25ca1c(%rip),%rdi # 66b088 0.00 : 40e66c: 31 f6 xor %esi,%esi 0.00 : 40e66e: ba 10 00 00 00 mov $0x10,%edx 0.00 : 40e673: 48 83 c7 02 add $0x2,%rdi 0.00 : 40e677: e8 a4 55 ff ff callq 403c20 0.00 : 40e67c: 48 8b 3d e5 c6 25 00 mov 0x25c6e5(%rip),%rdi # 66ad68 0.00 : 40e683: 0f be f0 movsbl %al,%esi 0.00 : 40e686: e8 65 58 ff ff callq 403ef0 : (char) strtol(yytext + 2, NULL, 16)); : } : 0.00 : 40e68b: e9 f0 fb ff ff jmpq 40e280 : "\\r" { appendPQExpBufferChar(output_buf, '\r'); } : "\\f" { appendPQExpBufferChar(output_buf, '\f'); } : : {xeoctesc} { : /* octal case */ : appendPQExpBufferChar(output_buf, 0.00 : 40e690: 48 8b 3d f1 c9 25 00 mov 0x25c9f1(%rip),%rdi # 66b088 0.00 : 40e697: 31 f6 xor %esi,%esi 0.00 : 40e699: ba 08 00 00 00 mov $0x8,%edx 0.00 : 40e69e: 48 83 c7 01 add $0x1,%rdi 0.00 : 40e6a2: e8 79 55 ff ff callq 403c20 0.00 : 40e6a7: 48 8b 3d ba c6 25 00 mov 0x25c6ba(%rip),%rdi # 66ad68 0.00 : 40e6ae: 0f be f0 movsbl %al,%esi 0.00 : 40e6b1: e8 3a 58 ff ff callq 403ef0 : (char) strtol(yytext + 1, NULL, 8)); : } : 0.00 : 40e6b6: e9 c5 fb ff ff jmpq 40e280 : : "\\n" { appendPQExpBufferChar(output_buf, '\n'); } : "\\t" { appendPQExpBufferChar(output_buf, '\t'); } : "\\b" { appendPQExpBufferChar(output_buf, '\b'); } : "\\r" { appendPQExpBufferChar(output_buf, '\r'); } : "\\f" { appendPQExpBufferChar(output_buf, '\f'); } 0.00 : 40e6bb: 48 8b 3d a6 c6 25 00 mov 0x25c6a6(%rip),%rdi # 66ad68 0.00 : 40e6c2: be 0c 00 00 00 mov $0xc,%esi 0.00 : 40e6c7: e8 24 58 ff ff callq 403ef0 : 0.00 : 40e6cc: e9 af fb ff ff jmpq 40e280 : {xqdouble} { appendPQExpBufferChar(output_buf, '\''); } : : "\\n" { appendPQExpBufferChar(output_buf, '\n'); } : "\\t" { appendPQExpBufferChar(output_buf, '\t'); } : "\\b" { appendPQExpBufferChar(output_buf, '\b'); } : "\\r" { appendPQExpBufferChar(output_buf, '\r'); } 0.00 : 40e6d1: 48 8b 3d 90 c6 25 00 mov 0x25c690(%rip),%rdi # 66ad68 0.00 : 40e6d8: be 0d 00 00 00 mov $0xd,%esi 0.00 : 40e6dd: e8 0e 58 ff ff callq 403ef0 : "\\f" { appendPQExpBufferChar(output_buf, '\f'); } 0.00 : 40e6e2: e9 99 fb ff ff jmpq 40e280 : : {xqdouble} { appendPQExpBufferChar(output_buf, '\''); } : : "\\n" { appendPQExpBufferChar(output_buf, '\n'); } : "\\t" { appendPQExpBufferChar(output_buf, '\t'); } : "\\b" { appendPQExpBufferChar(output_buf, '\b'); } 0.00 : 40e6e7: 48 8b 3d 7a c6 25 00 mov 0x25c67a(%rip),%rdi # 66ad68 0.00 : 40e6ee: be 08 00 00 00 mov $0x8,%esi 0.00 : 40e6f3: e8 f8 57 ff ff callq 403ef0 : "\\r" { appendPQExpBufferChar(output_buf, '\r'); } 0.00 : 40e6f8: e9 83 fb ff ff jmpq 40e280 : {quote} { BEGIN(xslasharg); } : : {xqdouble} { appendPQExpBufferChar(output_buf, '\''); } : : "\\n" { appendPQExpBufferChar(output_buf, '\n'); } : "\\t" { appendPQExpBufferChar(output_buf, '\t'); } 0.00 : 40e6fd: 48 8b 3d 64 c6 25 00 mov 0x25c664(%rip),%rdi # 66ad68 0.00 : 40e704: be 09 00 00 00 mov $0x9,%esi 0.00 : 40e709: e8 e2 57 ff ff callq 403ef0 : "\\b" { appendPQExpBufferChar(output_buf, '\b'); } 0.00 : 40e70e: e9 6d fb ff ff jmpq 40e280 : : {quote} { BEGIN(xslasharg); } : : {xqdouble} { appendPQExpBufferChar(output_buf, '\''); } : : "\\n" { appendPQExpBufferChar(output_buf, '\n'); } 0.00 : 40e713: 48 8b 3d 4e c6 25 00 mov 0x25c64e(%rip),%rdi # 66ad68 0.00 : 40e71a: be 0a 00 00 00 mov $0xa,%esi 0.00 : 40e71f: e8 cc 57 ff ff callq 403ef0 : "\\t" { appendPQExpBufferChar(output_buf, '\t'); } 0.00 : 40e724: e9 57 fb ff ff jmpq 40e280 : * sequences : */ : : {quote} { BEGIN(xslasharg); } : : {xqdouble} { appendPQExpBufferChar(output_buf, '\''); } 0.00 : 40e729: 48 8b 3d 38 c6 25 00 mov 0x25c638(%rip),%rdi # 66ad68 0.00 : 40e730: be 27 00 00 00 mov $0x27,%esi 0.00 : 40e735: e8 b6 57 ff ff callq 403ef0 : 0.00 : 40e73a: e9 41 fb ff ff jmpq 40e280 : /* : * single-quoted text: copy literally except for '' and backslash : * sequences : */ : : {quote} { BEGIN(xslasharg); } 0.00 : 40e73f: c7 05 e3 c5 25 00 1d movl $0x1d,0x25c5e3(%rip) # 66ad2c 0.00 : 40e746: 00 00 00 : 0.00 : 40e749: e9 32 fb ff ff jmpq 40e280 : ECHO; : } : : {other} { : unquoted_option_chars++; : ECHO; 0.00 : 40e74e: 8b 35 3c c9 25 00 mov 0x25c93c(%rip),%esi # 66b090 0.00 : 40e754: 48 8b 3d 2d c9 25 00 mov 0x25c92d(%rip),%rdi # 66b088 : unquoted_option_chars++; : ECHO; : } : : {other} { : unquoted_option_chars++; 0.00 : 40e75b: 83 05 1e c6 25 00 01 addl $0x1,0x25c61e(%rip) # 66ad80 : ECHO; 0.00 : 40e762: e8 f9 f6 ff ff callq 40de60 : } : 0.00 : 40e767: e9 14 fb ff ff jmpq 40e280 : ECHO; : } : : :\"{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40e76c: 0f b6 05 e1 c5 25 00 movzbl 0x25c5e1(%rip),%eax # 66ad54 0.00 : 40e773: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40e777: 41 88 04 24 mov %al,(%r12) 0.00 : 40e77b: 89 d0 mov %edx,%eax 0.00 : 40e77d: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40e780: 48 89 15 c1 c5 25 00 mov %rdx,0x25c5c1(%rip) # 66ad48 0.00 : 40e787: 4c 89 35 fa c8 25 00 mov %r14,0x25c8fa(%rip) # 66b088 0.00 : 40e78e: 89 05 fc c8 25 00 mov %eax,0x25c8fc(%rip) # 66b090 0.00 : 40e794: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40e799: 88 05 b5 c5 25 00 mov %al,0x25c5b5(%rip) # 66ad54 0.00 : 40e79f: 41 c6 46 01 00 movb $0x0,0x1(%r14) : unquoted_option_chars++; : ECHO; 0.00 : 40e7a4: 8b 35 e6 c8 25 00 mov 0x25c8e6(%rip),%esi # 66b090 0.00 : 40e7aa: 48 8b 3d d7 c8 25 00 mov 0x25c8d7(%rip),%rdi # 66b088 : ECHO; : } : : :\"{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40e7b1: 48 89 15 90 c5 25 00 mov %rdx,0x25c590(%rip) # 66ad48 : unquoted_option_chars++; 0.00 : 40e7b8: 83 05 c1 c5 25 00 01 addl $0x1,0x25c5c1(%rip) # 66ad80 : ECHO; 0.00 : 40e7bf: e8 9c f6 ff ff callq 40de60 : } : 0.00 : 40e7c4: e9 b7 fa ff ff jmpq 40e280 : unquoted_option_chars = 0; : } : : :'{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40e7c9: 0f b6 05 84 c5 25 00 movzbl 0x25c584(%rip),%eax # 66ad54 0.00 : 40e7d0: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40e7d4: 41 88 04 24 mov %al,(%r12) 0.00 : 40e7d8: 89 d0 mov %edx,%eax 0.00 : 40e7da: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40e7dd: 48 89 15 64 c5 25 00 mov %rdx,0x25c564(%rip) # 66ad48 0.00 : 40e7e4: 4c 89 35 9d c8 25 00 mov %r14,0x25c89d(%rip) # 66b088 0.00 : 40e7eb: 89 05 9f c8 25 00 mov %eax,0x25c89f(%rip) # 66b090 0.00 : 40e7f1: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40e7f6: 88 05 58 c5 25 00 mov %al,0x25c558(%rip) # 66ad54 0.00 : 40e7fc: 41 c6 46 01 00 movb $0x0,0x1(%r14) : unquoted_option_chars++; : ECHO; 0.00 : 40e801: 8b 35 89 c8 25 00 mov 0x25c889(%rip),%esi # 66b090 0.00 : 40e807: 48 8b 3d 7a c8 25 00 mov 0x25c87a(%rip),%rdi # 66b088 : unquoted_option_chars = 0; : } : : :'{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40e80e: 48 89 15 33 c5 25 00 mov %rdx,0x25c533(%rip) # 66ad48 : unquoted_option_chars++; 0.00 : 40e815: 83 05 64 c5 25 00 01 addl $0x1,0x25c564(%rip) # 66ad80 : ECHO; 0.00 : 40e81c: e8 3f f6 ff ff callq 40de60 : } : 0.00 : 40e821: e9 5a fa ff ff jmpq 40e280 : unquoted_option_chars = 0; : } : : : :\"{variable_char}+\" { : if (option_type == OT_NO_EVAL) 0.00 : 40e826: 83 3d 43 c5 25 00 05 cmpl $0x5,0x25c543(%rip) # 66ad70 0.00 : 40e82d: 0f 84 40 11 00 00 je 40f973 : ECHO; : else : { : escape_variable(true); 0.00 : 40e833: bf 01 00 00 00 mov $0x1,%edi 0.00 : 40e838: e8 c3 f6 ff ff callq 40df00 : *option_quote = ':'; 0.00 : 40e83d: 48 8b 05 34 c5 25 00 mov 0x25c534(%rip),%rax # 66ad78 0.00 : 40e844: c6 00 3a movb $0x3a,(%rax) : } : unquoted_option_chars = 0; 0.00 : 40e847: c7 05 2f c5 25 00 00 movl $0x0,0x25c52f(%rip) # 66ad80 0.00 : 40e84e: 00 00 00 : } : 0.00 : 40e851: e9 2a fa ff ff jmpq 40e280 : } : unquoted_option_chars = 0; : } : : :'{variable_char}+' { : if (option_type == OT_NO_EVAL) 0.00 : 40e856: 83 3d 13 c5 25 00 05 cmpl $0x5,0x25c513(%rip) # 66ad70 0.00 : 40e85d: 0f 84 64 11 00 00 je 40f9c7 : ECHO; : else : { : escape_variable(false); 0.00 : 40e863: 31 ff xor %edi,%edi 0.00 : 40e865: e8 96 f6 ff ff callq 40df00 : *option_quote = ':'; 0.00 : 40e86a: 48 8b 05 07 c5 25 00 mov 0x25c507(%rip),%rax # 66ad78 0.00 : 40e871: c6 00 3a movb $0x3a,(%rax) : } : unquoted_option_chars = 0; 0.00 : 40e874: c7 05 02 c5 25 00 00 movl $0x0,0x25c502(%rip) # 66ad80 0.00 : 40e87b: 00 00 00 : } : 0.00 : 40e87e: e9 fd f9 ff ff jmpq 40e280 : BEGIN(xslashdquote); : } : : :{variable_char}+ { : /* Possible psql variable substitution */ : if (option_type == OT_NO_EVAL) 0.00 : 40e883: 83 3d e6 c4 25 00 05 cmpl $0x5,0x25c4e6(%rip) # 66ad70 0.00 : 40e88a: 0f 84 20 11 00 00 je 40f9b0 : else : { : char *varname; : const char *value; : : varname = extract_substring(yytext + 1, yyleng - 1); 0.00 : 40e890: 8b 35 fa c7 25 00 mov 0x25c7fa(%rip),%esi # 66b090 0.00 : 40e896: 48 8b 3d eb c7 25 00 mov 0x25c7eb(%rip),%rdi # 66b088 0.00 : 40e89d: 83 ee 01 sub $0x1,%esi 0.00 : 40e8a0: 48 83 c7 01 add $0x1,%rdi 0.00 : 40e8a4: e8 47 ed ff ff callq 40d5f0 : value = GetVariable(pset.vars, varname); 0.00 : 40e8a9: 48 8b 3d 10 c9 25 00 mov 0x25c910(%rip),%rdi # 66b1c0 : else : { : char *varname; : const char *value; : : varname = extract_substring(yytext + 1, yyleng - 1); 0.00 : 40e8b0: 48 89 c3 mov %rax,%rbx : value = GetVariable(pset.vars, varname); 0.00 : 40e8b3: 48 89 c6 mov %rax,%rsi 0.00 : 40e8b6: e8 45 50 00 00 callq 413900 : free(varname); 0.00 : 40e8bb: 48 89 df mov %rbx,%rdi : { : char *varname; : const char *value; : : varname = extract_substring(yytext + 1, yyleng - 1); : value = GetVariable(pset.vars, varname); 0.00 : 40e8be: 49 89 c4 mov %rax,%r12 : free(varname); 0.00 : 40e8c1: e8 ba 4d ff ff callq 403680 : * further examination. This is consistent with the : * pre-8.0 code behavior, if not with the way that : * variables are handled outside backslash commands. : * Note that we needn't guard against recursion here. : */ : if (value) 0.00 : 40e8c6: 4d 85 e4 test %r12,%r12 0.00 : 40e8c9: 0f 84 a6 16 00 00 je 40ff75 : appendPQExpBufferStr(output_buf, value); 0.00 : 40e8cf: 48 8b 3d 92 c4 25 00 mov 0x25c492(%rip),%rdi # 66ad68 0.00 : 40e8d6: 4c 89 e6 mov %r12,%rsi 0.00 : 40e8d9: e8 82 57 ff ff callq 404060 : else : ECHO; : : *option_quote = ':'; 0.00 : 40e8de: 48 8b 05 93 c4 25 00 mov 0x25c493(%rip),%rax # 66ad78 0.00 : 40e8e5: c6 00 3a movb $0x3a,(%rax) : } : unquoted_option_chars = 0; 0.00 : 40e8e8: c7 05 8e c4 25 00 00 movl $0x0,0x25c48e(%rip) # 66ad80 0.00 : 40e8ef: 00 00 00 : } : 0.00 : 40e8f2: e9 89 f9 ff ff jmpq 40e280 : unquoted_option_chars = 0; : BEGIN(xslashbackquote); : } : : {dquote} { : ECHO; 0.00 : 40e8f7: 8b 35 93 c7 25 00 mov 0x25c793(%rip),%esi # 66b090 0.00 : 40e8fd: 48 8b 3d 84 c7 25 00 mov 0x25c784(%rip),%rdi # 66b088 0.00 : 40e904: e8 57 f5 ff ff callq 40de60 : *option_quote = '"'; 0.00 : 40e909: 48 8b 05 68 c4 25 00 mov 0x25c468(%rip),%rax # 66ad78 0.00 : 40e910: c6 00 22 movb $0x22,(%rax) : unquoted_option_chars = 0; 0.00 : 40e913: c7 05 63 c4 25 00 00 movl $0x0,0x25c463(%rip) # 66ad80 0.00 : 40e91a: 00 00 00 : BEGIN(xslashdquote); 0.00 : 40e91d: c7 05 05 c4 25 00 23 movl $0x23,0x25c405(%rip) # 66ad2c 0.00 : 40e924: 00 00 00 : } : 0.00 : 40e927: e9 54 f9 ff ff jmpq 40e280 : unquoted_option_chars = 0; : BEGIN(xslashquote); : } : : "`" { : backtick_start_offset = output_buf->len; 0.00 : 40e92c: 48 8b 05 35 c4 25 00 mov 0x25c435(%rip),%rax # 66ad68 0.00 : 40e933: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 40e937: 89 05 47 c4 25 00 mov %eax,0x25c447(%rip) # 66ad84 : *option_quote = '`'; 0.00 : 40e93d: 48 8b 05 34 c4 25 00 mov 0x25c434(%rip),%rax # 66ad78 0.00 : 40e944: c6 00 60 movb $0x60,(%rax) : unquoted_option_chars = 0; 0.00 : 40e947: c7 05 2f c4 25 00 00 movl $0x0,0x25c42f(%rip) # 66ad80 0.00 : 40e94e: 00 00 00 : BEGIN(xslashbackquote); 0.00 : 40e951: c7 05 d1 c3 25 00 21 movl $0x21,0x25c3d1(%rip) # 66ad2c 0.00 : 40e958: 00 00 00 : } : 0.00 : 40e95b: e9 20 f9 ff ff jmpq 40e280 : yyless(0); : return LEXRES_OK; : } : : {quote} { : *option_quote = '\''; 0.00 : 40e960: 48 8b 05 11 c4 25 00 mov 0x25c411(%rip),%rax # 66ad78 0.00 : 40e967: c6 00 27 movb $0x27,(%rax) : unquoted_option_chars = 0; 0.00 : 40e96a: c7 05 0c c4 25 00 00 movl $0x0,0x25c40c(%rip) # 66ad80 0.00 : 40e971: 00 00 00 : BEGIN(xslashquote); 0.00 : 40e974: c7 05 ae c3 25 00 1f movl $0x1f,0x25c3ae(%rip) # 66ad2c 0.00 : 40e97b: 00 00 00 : } : 0.00 : 40e97e: e9 fd f8 ff ff jmpq 40e280 : BEGIN(xslasharg); : } : } : : {other} { : yyless(0); 0.00 : 40e983: 0f b6 05 ca c3 25 00 movzbl 0x25c3ca(%rip),%eax # 66ad54 0.00 : 40e98a: 41 88 04 24 mov %al,(%r12) 0.00 : 40e98e: 4c 89 35 b3 c3 25 00 mov %r14,0x25c3b3(%rip) # 66ad48 0.00 : 40e995: 4c 89 35 ec c6 25 00 mov %r14,0x25c6ec(%rip) # 66b088 0.00 : 40e99c: c7 05 ea c6 25 00 00 movl $0x0,0x25c6ea(%rip) # 66b090 0.00 : 40e9a3: 00 00 00 0.00 : 40e9a6: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 40e9aa: 88 05 a4 c3 25 00 mov %al,0x25c3a4(%rip) # 66ad54 0.00 : 40e9b0: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 40e9b4: 4c 89 35 8d c3 25 00 mov %r14,0x25c38d(%rip) # 66ad48 : BEGIN(xslasharg); 0.00 : 40e9bb: c7 05 67 c3 25 00 1d movl $0x1d,0x25c367(%rip) # 66ad2c 0.00 : 40e9c2: 00 00 00 : } : 0.00 : 40e9c5: e9 b6 f8 ff ff jmpq 40e280 : */ : : {space}+ { } : : "|" { : if (option_type == OT_FILEPIPE) 0.00 : 40e9ca: 83 3d 9f c3 25 00 03 cmpl $0x3,0x25c39f(%rip) # 66ad70 0.00 : 40e9d1: 0f 84 58 13 00 00 je 40fd2f : BEGIN(xslashwholeline); : } : else : { : /* vertical bar is not special otherwise */ : yyless(0); 0.00 : 40e9d7: 0f b6 05 76 c3 25 00 movzbl 0x25c376(%rip),%eax # 66ad54 0.00 : 40e9de: 41 88 04 24 mov %al,(%r12) 0.00 : 40e9e2: 4c 89 35 5f c3 25 00 mov %r14,0x25c35f(%rip) # 66ad48 0.00 : 40e9e9: 4c 89 35 98 c6 25 00 mov %r14,0x25c698(%rip) # 66b088 0.00 : 40e9f0: c7 05 96 c6 25 00 00 movl $0x0,0x25c696(%rip) # 66b090 0.00 : 40e9f7: 00 00 00 0.00 : 40e9fa: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 40e9fe: 88 05 50 c3 25 00 mov %al,0x25c350(%rip) # 66ad54 0.00 : 40ea04: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 40ea08: 4c 89 35 39 c3 25 00 mov %r14,0x25c339(%rip) # 66ad48 : BEGIN(xslasharg); 0.00 : 40ea0f: c7 05 13 c3 25 00 1d movl $0x1d,0x25c313(%rip) # 66ad2c 0.00 : 40ea16: 00 00 00 0.00 : 40ea19: e9 62 f8 ff ff jmpq 40e280 : {space}|"\\" { : yyless(0); : return LEXRES_OK; : } : : {other} { ECHO; } 0.00 : 40ea1e: 8b 35 6c c6 25 00 mov 0x25c66c(%rip),%esi # 66b090 0.00 : 40ea24: 48 8b 3d 5d c6 25 00 mov 0x25c65d(%rip),%rdi # 66b088 0.00 : 40ea2b: e8 30 f4 ff ff callq 40de60 : 0.00 : 40ea30: e9 4b f8 ff ff jmpq 40e280 : {identifier} { : ECHO; : } : : {other} { : ECHO; 0.00 : 40ea35: 8b 35 55 c6 25 00 mov 0x25c655(%rip),%esi # 66b090 0.00 : 40ea3b: 48 8b 3d 46 c6 25 00 mov 0x25c646(%rip),%rdi # 66b088 0.00 : 40ea42: e8 19 f4 ff ff callq 40de60 : } : 0.00 : 40ea47: e9 34 f8 ff ff jmpq 40e280 : ECHO; : } : : : {identifier} { : ECHO; 0.00 : 40ea4c: 8b 35 3e c6 25 00 mov 0x25c63e(%rip),%esi # 66b090 0.00 : 40ea52: 48 8b 3d 2f c6 25 00 mov 0x25c62f(%rip),%rdi # 66b088 0.00 : 40ea59: e8 02 f4 ff ff callq 40de60 : } : 0.00 : 40ea5e: e9 1d f8 ff ff jmpq 40e280 : yyless(yyleng-1); : ECHO; : } : {realfail2} { : /* throw back the [Ee][+-], and proceed as above */ : yyless(yyleng-2); 0.00 : 40ea63: 8b 05 27 c6 25 00 mov 0x25c627(%rip),%eax # 66b090 0.00 : 40ea69: 0f b6 15 e4 c2 25 00 movzbl 0x25c2e4(%rip),%edx # 66ad54 0.00 : 40ea70: 83 e8 02 sub $0x2,%eax 0.00 : 40ea73: 48 98 cltq 0.00 : 40ea75: 41 88 14 24 mov %dl,(%r12) 0.00 : 40ea79: 4c 89 35 08 c6 25 00 mov %r14,0x25c608(%rip) # 66b088 0.00 : 40ea80: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 40ea84: 89 c2 mov %eax,%edx 0.00 : 40ea86: 2b 55 a8 sub -0x58(%rbp),%edx 0.00 : 40ea89: 48 89 05 b8 c2 25 00 mov %rax,0x25c2b8(%rip) # 66ad48 0.00 : 40ea90: 89 15 fa c5 25 00 mov %edx,0x25c5fa(%rip) # 66b090 0.00 : 40ea96: 0f b6 10 movzbl (%rax),%edx 0.00 : 40ea99: 88 15 b5 c2 25 00 mov %dl,0x25c2b5(%rip) # 66ad54 0.00 : 40ea9f: c6 00 00 movb $0x0,(%rax) : ECHO; 0.00 : 40eaa2: 8b 35 e8 c5 25 00 mov 0x25c5e8(%rip),%esi # 66b090 0.00 : 40eaa8: 48 8b 3d d9 c5 25 00 mov 0x25c5d9(%rip),%rdi # 66b088 : yyless(yyleng-1); : ECHO; : } : {realfail2} { : /* throw back the [Ee][+-], and proceed as above */ : yyless(yyleng-2); 0.00 : 40eaaf: 48 89 05 92 c2 25 00 mov %rax,0x25c292(%rip) # 66ad48 : ECHO; 0.00 : 40eab6: e8 a5 f3 ff ff callq 40de60 : } : 0.00 : 40eabb: e9 c0 f7 ff ff jmpq 40e280 : * throw back the [Ee], and treat as {decimal}. Note : * that it is possible the input is actually {integer}, : * but since this case will almost certainly lead to a : * syntax error anyway, we don't bother to distinguish. : */ : yyless(yyleng-1); 0.00 : 40eac0: 8b 05 ca c5 25 00 mov 0x25c5ca(%rip),%eax # 66b090 0.00 : 40eac6: 0f b6 15 87 c2 25 00 movzbl 0x25c287(%rip),%edx # 66ad54 0.00 : 40eacd: 83 e8 01 sub $0x1,%eax 0.00 : 40ead0: 48 98 cltq 0.00 : 40ead2: 41 88 14 24 mov %dl,(%r12) 0.00 : 40ead6: 4c 89 35 ab c5 25 00 mov %r14,0x25c5ab(%rip) # 66b088 0.00 : 40eadd: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 40eae1: 89 c2 mov %eax,%edx 0.00 : 40eae3: 2b 55 a8 sub -0x58(%rbp),%edx 0.00 : 40eae6: 48 89 05 5b c2 25 00 mov %rax,0x25c25b(%rip) # 66ad48 0.00 : 40eaed: 89 15 9d c5 25 00 mov %edx,0x25c59d(%rip) # 66b090 0.00 : 40eaf3: 0f b6 10 movzbl (%rax),%edx 0.00 : 40eaf6: 88 15 58 c2 25 00 mov %dl,0x25c258(%rip) # 66ad54 0.00 : 40eafc: c6 00 00 movb $0x0,(%rax) : ECHO; 0.00 : 40eaff: 8b 35 8b c5 25 00 mov 0x25c58b(%rip),%esi # 66b090 0.00 : 40eb05: 48 8b 3d 7c c5 25 00 mov 0x25c57c(%rip),%rdi # 66b088 : * throw back the [Ee], and treat as {decimal}. Note : * that it is possible the input is actually {integer}, : * but since this case will almost certainly lead to a : * syntax error anyway, we don't bother to distinguish. : */ : yyless(yyleng-1); 0.00 : 40eb0c: 48 89 05 35 c2 25 00 mov %rax,0x25c235(%rip) # 66ad48 : ECHO; 0.00 : 40eb13: e8 48 f3 ff ff callq 40de60 : } : {realfail2} { 0.00 : 40eb18: e9 63 f7 ff ff jmpq 40e280 : /* throw back the .., and treat as integer */ : yyless(yyleng-2); : ECHO; : } : {real} { : ECHO; 0.00 : 40eb1d: 8b 35 6d c5 25 00 mov 0x25c56d(%rip),%esi # 66b090 0.00 : 40eb23: 48 8b 3d 5e c5 25 00 mov 0x25c55e(%rip),%rdi # 66b088 0.00 : 40eb2a: e8 31 f3 ff ff callq 40de60 : } : {realfail1} { 0.00 : 40eb2f: e9 4c f7 ff ff jmpq 40e280 : {decimal} { : ECHO; : } : {decimalfail} { : /* throw back the .., and treat as integer */ : yyless(yyleng-2); 0.00 : 40eb34: 8b 05 56 c5 25 00 mov 0x25c556(%rip),%eax # 66b090 0.00 : 40eb3a: 0f b6 15 13 c2 25 00 movzbl 0x25c213(%rip),%edx # 66ad54 0.00 : 40eb41: 83 e8 02 sub $0x2,%eax 0.00 : 40eb44: 48 98 cltq 0.00 : 40eb46: 41 88 14 24 mov %dl,(%r12) 0.00 : 40eb4a: 4c 89 35 37 c5 25 00 mov %r14,0x25c537(%rip) # 66b088 0.00 : 40eb51: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 40eb55: 89 c2 mov %eax,%edx 0.00 : 40eb57: 2b 55 a8 sub -0x58(%rbp),%edx 0.00 : 40eb5a: 48 89 05 e7 c1 25 00 mov %rax,0x25c1e7(%rip) # 66ad48 0.00 : 40eb61: 89 15 29 c5 25 00 mov %edx,0x25c529(%rip) # 66b090 0.00 : 40eb67: 0f b6 10 movzbl (%rax),%edx 0.00 : 40eb6a: 88 15 e4 c1 25 00 mov %dl,0x25c1e4(%rip) # 66ad54 0.00 : 40eb70: c6 00 00 movb $0x0,(%rax) : ECHO; 0.00 : 40eb73: 8b 35 17 c5 25 00 mov 0x25c517(%rip),%esi # 66b090 0.00 : 40eb79: 48 8b 3d 08 c5 25 00 mov 0x25c508(%rip),%rdi # 66b088 : {decimal} { : ECHO; : } : {decimalfail} { : /* throw back the .., and treat as integer */ : yyless(yyleng-2); 0.00 : 40eb80: 48 89 05 c1 c1 25 00 mov %rax,0x25c1c1(%rip) # 66ad48 : ECHO; 0.00 : 40eb87: e8 d4 f2 ff ff callq 40de60 : } : {real} { 0.00 : 40eb8c: e9 ef f6 ff ff jmpq 40e280 : : {integer} { : ECHO; : } : {decimal} { : ECHO; 0.00 : 40eb91: 8b 35 f9 c4 25 00 mov 0x25c4f9(%rip),%esi # 66b090 0.00 : 40eb97: 48 8b 3d ea c4 25 00 mov 0x25c4ea(%rip),%rdi # 66b088 0.00 : 40eb9e: e8 bd f2 ff ff callq 40de60 : } : {decimalfail} { 0.00 : 40eba3: e9 d8 f6 ff ff jmpq 40e280 : {param} { : ECHO; : } : : {integer} { : ECHO; 0.00 : 40eba8: 8b 35 e2 c4 25 00 mov 0x25c4e2(%rip),%esi # 66b090 0.00 : 40ebae: 48 8b 3d d3 c4 25 00 mov 0x25c4d3(%rip),%rdi # 66b088 0.00 : 40ebb5: e8 a6 f2 ff ff callq 40de60 : } : {decimal} { 0.00 : 40ebba: e9 c1 f6 ff ff jmpq 40e280 : } : ECHO; : } : : {param} { : ECHO; 0.00 : 40ebbf: 8b 35 cb c4 25 00 mov 0x25c4cb(%rip),%esi # 66b090 0.00 : 40ebc5: 48 8b 3d bc c4 25 00 mov 0x25c4bc(%rip),%rdi # 66b088 0.00 : 40ebcc: e8 8f f2 ff ff callq 40de60 : } : 0.00 : 40ebd1: e9 aa f6 ff ff jmpq 40e280 : * Check for embedded slash-star or dash-dash; those : * are comment starts, so operator must stop there. : * Note that slash-star or dash-dash at the first : * character will match a prior rule, not this one. : */ : int nchars = yyleng; 0.00 : 40ebd6: 8b 05 b4 c4 25 00 mov 0x25c4b4(%rip),%eax # 66b090 : char *slashstar = strstr(yytext, "/*"); 0.00 : 40ebdc: 4c 8b 2d a5 c4 25 00 mov 0x25c4a5(%rip),%r13 # 66b088 0.00 : 40ebe3: be 45 dd 43 00 mov $0x43dd45,%esi 0.00 : 40ebe8: 4c 89 ef mov %r13,%rdi : * Check for embedded slash-star or dash-dash; those : * are comment starts, so operator must stop there. : * Note that slash-star or dash-dash at the first : * character will match a prior rule, not this one. : */ : int nchars = yyleng; 0.00 : 40ebeb: 89 45 ac mov %eax,-0x54(%rbp) : char *slashstar = strstr(yytext, "/*"); 0.00 : 40ebee: e8 7d 54 ff ff callq 404070 : char *dashdash = strstr(yytext, "--"); 0.00 : 40ebf3: be 48 dd 43 00 mov $0x43dd48,%esi : * are comment starts, so operator must stop there. : * Note that slash-star or dash-dash at the first : * character will match a prior rule, not this one. : */ : int nchars = yyleng; : char *slashstar = strstr(yytext, "/*"); 0.00 : 40ebf8: 48 89 c3 mov %rax,%rbx : char *dashdash = strstr(yytext, "--"); 0.00 : 40ebfb: 4c 89 ef mov %r13,%rdi 0.00 : 40ebfe: e8 6d 54 ff ff callq 404070 : : if (slashstar && dashdash) 0.00 : 40ec03: 48 85 db test %rbx,%rbx 0.00 : 40ec06: 0f 84 70 11 00 00 je 40fd7c 0.00 : 40ec0c: 48 85 c0 test %rax,%rax 0.00 : 40ec0f: 74 12 je 40ec23 0.00 : 40ec11: 48 39 c3 cmp %rax,%rbx 0.00 : 40ec14: 48 0f 47 d8 cmova %rax,%rbx : if (slashstar > dashdash) : slashstar = dashdash; : } : else if (!slashstar) : slashstar = dashdash; : if (slashstar) 0.00 : 40ec18: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 40ec1b: 48 85 db test %rbx,%rbx 0.00 : 40ec1e: 89 55 c4 mov %edx,-0x3c(%rbp) 0.00 : 40ec21: 74 06 je 40ec29 : nchars = slashstar - yytext; 0.00 : 40ec23: 44 29 eb sub %r13d,%ebx 0.00 : 40ec26: 89 5d c4 mov %ebx,-0x3c(%rbp) : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 40ec29: 83 7d c4 01 cmpl $0x1,-0x3c(%rbp) 0.00 : 40ec2d: 7e 21 jle 40ec50 0.00 : 40ec2f: 48 63 45 c4 movslq -0x3c(%rbp),%rax 0.00 : 40ec33: 41 0f b6 44 05 ff movzbl -0x1(%r13,%rax,1),%eax 0.00 : 40ec39: 3c 2b cmp $0x2b,%al 0.00 : 40ec3b: 0f 84 1d 0e 00 00 je 40fa5e 0.00 : 40ec41: 3c 2d cmp $0x2d,%al 0.00 : 40ec43: 0f 84 15 0e 00 00 je 40fa5e 0.00 : 40ec49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (ic >= 0) : break; /* found a char that makes it OK */ : nchars--; /* else remove the +/-, and check again */ : } : : if (nchars < yyleng) 0.00 : 40ec50: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 40ec53: 39 45 ac cmp %eax,-0x54(%rbp) 0.00 : 40ec56: 7e 3f jle 40ec97 : { : /* Strip the unwanted chars from the token */ : yyless(nchars); 0.00 : 40ec58: 0f b6 05 f5 c0 25 00 movzbl 0x25c0f5(%rip),%eax # 66ad54 0.00 : 40ec5f: 41 88 04 24 mov %al,(%r12) 0.00 : 40ec63: 48 63 45 c4 movslq -0x3c(%rbp),%rax 0.00 : 40ec67: 4c 89 35 1a c4 25 00 mov %r14,0x25c41a(%rip) # 66b088 0.00 : 40ec6e: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 40ec72: 89 c2 mov %eax,%edx 0.00 : 40ec74: 2b 55 a8 sub -0x58(%rbp),%edx 0.00 : 40ec77: 48 89 05 ca c0 25 00 mov %rax,0x25c0ca(%rip) # 66ad48 0.00 : 40ec7e: 89 15 0c c4 25 00 mov %edx,0x25c40c(%rip) # 66b090 0.00 : 40ec84: 0f b6 10 movzbl (%rax),%edx 0.00 : 40ec87: 88 15 c7 c0 25 00 mov %dl,0x25c0c7(%rip) # 66ad54 0.00 : 40ec8d: c6 00 00 movb $0x0,(%rax) 0.00 : 40ec90: 48 89 05 b1 c0 25 00 mov %rax,0x25c0b1(%rip) # 66ad48 : } : ECHO; 0.00 : 40ec97: 8b 35 f3 c3 25 00 mov 0x25c3f3(%rip),%esi # 66b090 0.00 : 40ec9d: 48 8b 3d e4 c3 25 00 mov 0x25c3e4(%rip),%rdi # 66b088 0.00 : 40eca4: e8 b7 f1 ff ff callq 40de60 : } : 0.00 : 40eca9: e9 d2 f5 ff ff jmpq 40e280 : /* : * Back to backend-compatible rules. : */ : : {self} { : ECHO; 0.00 : 40ecae: 8b 35 dc c3 25 00 mov 0x25c3dc(%rip),%esi # 66b090 0.00 : 40ecb4: 48 8b 3d cd c3 25 00 mov 0x25c3cd(%rip),%rdi # 66b088 0.00 : 40ecbb: e8 a0 f1 ff ff callq 40de60 : } : 0.00 : 40ecc0: e9 bb f5 ff ff jmpq 40e280 : ECHO; : } : : :\"{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40ecc5: 0f b6 05 88 c0 25 00 movzbl 0x25c088(%rip),%eax # 66ad54 0.00 : 40eccc: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40ecd0: 41 88 04 24 mov %al,(%r12) 0.00 : 40ecd4: 89 d0 mov %edx,%eax 0.00 : 40ecd6: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40ecd9: 48 89 15 68 c0 25 00 mov %rdx,0x25c068(%rip) # 66ad48 0.00 : 40ece0: 4c 89 35 a1 c3 25 00 mov %r14,0x25c3a1(%rip) # 66b088 0.00 : 40ece7: 89 05 a3 c3 25 00 mov %eax,0x25c3a3(%rip) # 66b090 0.00 : 40eced: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40ecf2: 88 05 5c c0 25 00 mov %al,0x25c05c(%rip) # 66ad54 0.00 : 40ecf8: 41 c6 46 01 00 movb $0x0,0x1(%r14) : ECHO; 0.00 : 40ecfd: 8b 35 8d c3 25 00 mov 0x25c38d(%rip),%esi # 66b090 0.00 : 40ed03: 48 8b 3d 7e c3 25 00 mov 0x25c37e(%rip),%rdi # 66b088 : ECHO; : } : : :\"{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40ed0a: 48 89 15 37 c0 25 00 mov %rdx,0x25c037(%rip) # 66ad48 : ECHO; 0.00 : 40ed11: e8 4a f1 ff ff callq 40de60 : } : 0.00 : 40ed16: e9 65 f5 ff ff jmpq 40e280 : * two rules above fails to match completely. : */ : : :'{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40ed1b: 0f b6 05 32 c0 25 00 movzbl 0x25c032(%rip),%eax # 66ad54 0.00 : 40ed22: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40ed26: 41 88 04 24 mov %al,(%r12) 0.00 : 40ed2a: 89 d0 mov %edx,%eax 0.00 : 40ed2c: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40ed2f: 48 89 15 12 c0 25 00 mov %rdx,0x25c012(%rip) # 66ad48 0.00 : 40ed36: 4c 89 35 4b c3 25 00 mov %r14,0x25c34b(%rip) # 66b088 0.00 : 40ed3d: 89 05 4d c3 25 00 mov %eax,0x25c34d(%rip) # 66b090 0.00 : 40ed43: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40ed48: 88 05 06 c0 25 00 mov %al,0x25c006(%rip) # 66ad54 0.00 : 40ed4e: 41 c6 46 01 00 movb $0x0,0x1(%r14) : ECHO; 0.00 : 40ed53: 8b 35 37 c3 25 00 mov 0x25c337(%rip),%esi # 66b090 0.00 : 40ed59: 48 8b 3d 28 c3 25 00 mov 0x25c328(%rip),%rdi # 66b088 : * two rules above fails to match completely. : */ : : :'{variable_char}* { : /* Throw back everything but the colon */ : yyless(1); 0.00 : 40ed60: 48 89 15 e1 bf 25 00 mov %rdx,0x25bfe1(%rip) # 66ad48 : ECHO; 0.00 : 40ed67: e8 f4 f0 ff ff callq 40de60 : } : 0.00 : 40ed6c: e9 0f f5 ff ff jmpq 40e280 : :'{variable_char}+' { : escape_variable(false); : } : : :\"{variable_char}+\" { : escape_variable(true); 0.00 : 40ed71: bf 01 00 00 00 mov $0x1,%edi 0.00 : 40ed76: e8 85 f1 ff ff callq 40df00 0.00 : 40ed7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : 0.00 : 40ed80: e9 fb f4 ff ff jmpq 40e280 : : free(varname); : } : : :'{variable_char}+' { : escape_variable(false); 0.00 : 40ed85: 31 ff xor %edi,%edi 0.00 : 40ed87: e8 74 f1 ff ff callq 40df00 0.00 : 40ed8c: 0f 1f 40 00 nopl 0x0(%rax) : } : 0.00 : 40ed90: e9 eb f4 ff ff jmpq 40e280 : :{variable_char}+ { : /* Possible psql variable substitution */ : char *varname; : const char *value; : : varname = extract_substring(yytext + 1, yyleng - 1); 0.00 : 40ed95: 8b 35 f5 c2 25 00 mov 0x25c2f5(%rip),%esi # 66b090 0.00 : 40ed9b: 48 8b 3d e6 c2 25 00 mov 0x25c2e6(%rip),%rdi # 66b088 0.00 : 40eda2: 83 ee 01 sub $0x1,%esi 0.00 : 40eda5: 48 83 c7 01 add $0x1,%rdi 0.00 : 40eda9: e8 42 e8 ff ff callq 40d5f0 : value = GetVariable(pset.vars, varname); 0.00 : 40edae: 48 8b 3d 0b c4 25 00 mov 0x25c40b(%rip),%rdi # 66b1c0 0.00 : 40edb5: 48 89 c6 mov %rax,%rsi : :{variable_char}+ { : /* Possible psql variable substitution */ : char *varname; : const char *value; : : varname = extract_substring(yytext + 1, yyleng - 1); 0.00 : 40edb8: 49 89 c4 mov %rax,%r12 : value = GetVariable(pset.vars, varname); 0.00 : 40edbb: e8 40 4b 00 00 callq 413900 : : if (value) 0.00 : 40edc0: 48 85 c0 test %rax,%rax : /* Possible psql variable substitution */ : char *varname; : const char *value; : : varname = extract_substring(yytext + 1, yyleng - 1); : value = GetVariable(pset.vars, varname); 0.00 : 40edc3: 49 89 c5 mov %rax,%r13 : : if (value) 0.00 : 40edc6: 0f 84 b8 0f 00 00 je 40fd84 : var_is_current_source(PsqlScanState state, const char *varname) : { : StackElem *stackelem; : : for (stackelem = state->buffer_stack; : stackelem != NULL; 0.00 : 40edcc: 48 8b 05 8d bf 25 00 mov 0x25bf8d(%rip),%rax # 66ad60 0.00 : 40edd3: 48 8b 18 mov (%rax),%rbx : stackelem = stackelem->next) 0.00 : 40edd6: 48 85 db test %rbx,%rbx 0.00 : 40edd9: 74 27 je 40ee02 0.00 : 40eddb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (stackelem->varname && strcmp(stackelem->varname, varname) == 0) : return true; 0.00 : 40ede0: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 40ede4: 48 85 ff test %rdi,%rdi 0.00 : 40ede7: 74 10 je 40edf9 0.00 : 40ede9: 4c 89 e6 mov %r12,%rsi 0.00 : 40edec: e8 8f 4d ff ff callq 403b80 0.00 : 40edf1: 85 c0 test %eax,%eax 0.00 : 40edf3: 0f 84 e5 0c 00 00 je 40fade : StackElem *stackelem; : : for (stackelem = state->buffer_stack; : stackelem != NULL; : stackelem = stackelem->next) : { 0.00 : 40edf9: 48 8b 5b 20 mov 0x20(%rbx),%rbx : { : StackElem *stackelem; : : for (stackelem = state->buffer_stack; : stackelem != NULL; : stackelem = stackelem->next) 0.00 : 40edfd: 48 85 db test %rbx,%rbx 0.00 : 40ee00: 75 de jne 40ede0 : push_new_buffer(const char *newstr, const char *varname) : { : StackElem *stackelem; : : stackelem = (StackElem *) pg_malloc(sizeof(StackElem)); : 0.00 : 40ee02: bf 28 00 00 00 mov $0x28,%edi 0.00 : 40ee07: e8 24 51 02 00 callq 433f30 0.00 : 40ee0c: 48 89 c3 mov %rax,%rbx : * In current usage, the passed varname points at the current flex : * input buffer; we must copy it before calling prepare_buffer() : * because that will change the buffer state. : */ : stackelem->varname = varname ? pg_strdup(varname) : NULL; : 0.00 : 40ee0f: 31 c0 xor %eax,%eax 0.00 : 40ee11: 4d 85 e4 test %r12,%r12 0.00 : 40ee14: 74 08 je 40ee1e 0.00 : 40ee16: 4c 89 e7 mov %r12,%rdi 0.00 : 40ee19: e8 42 50 02 00 callq 433e60 : stackelem->buf = prepare_buffer(newstr, strlen(newstr), : &stackelem->bufstring); 0.00 : 40ee1e: 4c 89 ef mov %r13,%rdi : * In current usage, the passed varname points at the current flex : * input buffer; we must copy it before calling prepare_buffer() : * because that will change the buffer state. : */ : stackelem->varname = varname ? pg_strdup(varname) : NULL; : 0.00 : 40ee21: 48 89 43 18 mov %rax,0x18(%rbx) : stackelem->buf = prepare_buffer(newstr, strlen(newstr), : &stackelem->bufstring); 0.00 : 40ee25: e8 56 4a ff ff callq 403880 0.00 : 40ee2a: 48 8d 53 08 lea 0x8(%rbx),%rdx 0.00 : 40ee2e: 89 c6 mov %eax,%esi 0.00 : 40ee30: 4c 89 ef mov %r13,%rdi 0.00 : 40ee33: e8 18 ec ff ff callq 40da50 : cur_state->curline = stackelem->bufstring; : if (cur_state->safe_encoding) 0.00 : 40ee38: 48 8b 53 08 mov 0x8(%rbx),%rdx : * because that will change the buffer state. : */ : stackelem->varname = varname ? pg_strdup(varname) : NULL; : : stackelem->buf = prepare_buffer(newstr, strlen(newstr), : &stackelem->bufstring); 0.00 : 40ee3c: 48 89 03 mov %rax,(%rbx) : cur_state->curline = stackelem->bufstring; : if (cur_state->safe_encoding) 0.00 : 40ee3f: 48 8b 05 1a bf 25 00 mov 0x25bf1a(%rip),%rax # 66ad60 0.00 : 40ee46: 48 89 50 28 mov %rdx,0x28(%rax) : { 0.00 : 40ee4a: 48 8b 05 0f bf 25 00 mov 0x25bf0f(%rip),%rax # 66ad60 0.00 : 40ee51: 80 78 24 00 cmpb $0x0,0x24(%rax) 0.00 : 40ee55: 0f 84 50 10 00 00 je 40feab : stackelem->origstring = NULL; : cur_state->refline = stackelem->bufstring; 0.00 : 40ee5b: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 40ee62: 00 : } 0.00 : 40ee63: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 40ee67: 48 8b 05 f2 be 25 00 mov 0x25bef2(%rip),%rax # 66ad60 0.00 : 40ee6e: 48 89 50 30 mov %rdx,0x30(%rax) : { : stackelem->origstring = pg_strdup(newstr); : cur_state->refline = stackelem->origstring; : } : stackelem->next = cur_state->buffer_stack; : cur_state->buffer_stack = stackelem; 0.00 : 40ee72: 48 8b 05 e7 be 25 00 mov 0x25bee7(%rip),%rax # 66ad60 0.00 : 40ee79: 48 8b 00 mov (%rax),%rax 0.00 : 40ee7c: 48 89 43 20 mov %rax,0x20(%rbx) : } 0.00 : 40ee80: 48 8b 05 d9 be 25 00 mov 0x25bed9(%rip),%rax # 66ad60 0.00 : 40ee87: 48 89 18 mov %rbx,(%rax) : * string as is : */ : ECHO; : } : : free(varname); 0.00 : 40ee8a: 4c 89 e7 mov %r12,%rdi 0.00 : 40ee8d: e8 ee 47 ff ff callq 403680 : } : 0.00 : 40ee92: e9 e9 f3 ff ff jmpq 40e280 : default: : YY_FATAL_ERROR( : "fatal flex scanner internal error--no action found" ); : } /* end of action switch */ : } /* end of scanning one token */ : } /* end of yylex */ 0.00 : 40ee97: 48 83 c4 38 add $0x38,%rsp : } : break; : } : : default: : YY_FATAL_ERROR( 0.00 : 40ee9b: b8 02 00 00 00 mov $0x2,%eax : "fatal flex scanner internal error--no action found" ); : } /* end of action switch */ : } /* end of scanning one token */ : } /* end of yylex */ 0.00 : 40eea0: 5b pop %rbx 0.00 : 40eea1: 41 5c pop %r12 0.00 : 40eea3: 41 5d pop %r13 0.00 : 40eea5: 41 5e pop %r14 0.00 : 40eea7: 41 5f pop %r15 0.00 : 40eea9: c9 leaveq 0.00 : 40eeaa: c3 retq : * substitution. We want these before {self}, also. : */ : : "\\"[;:] { : /* Force a semicolon or colon into the query buffer */ : emit(yytext + 1, 1); 0.00 : 40eeab: 48 8b 3d d6 c1 25 00 mov 0x25c1d6(%rip),%rdi # 66b088 0.00 : 40eeb2: be 01 00 00 00 mov $0x1,%esi 0.00 : 40eeb7: 48 83 c7 01 add $0x1,%rdi 0.00 : 40eebb: e8 a0 ef ff ff callq 40de60 : } : 0.00 : 40eec0: e9 bb f3 ff ff jmpq 40e280 : cur_state->paren_depth--; : ECHO; : } : : ";" { : ECHO; 0.00 : 40eec5: 8b 35 c5 c1 25 00 mov 0x25c1c5(%rip),%esi # 66b090 0.00 : 40eecb: 48 8b 3d b6 c1 25 00 mov 0x25c1b6(%rip),%rdi # 66b088 0.00 : 40eed2: e8 89 ef ff ff callq 40de60 : if (cur_state->paren_depth == 0) 0.00 : 40eed7: 48 8b 05 82 be 25 00 mov 0x25be82(%rip),%rax # 66ad60 0.00 : 40eede: 8b 58 3c mov 0x3c(%rax),%ebx 0.00 : 40eee1: 85 db test %ebx,%ebx 0.00 : 40eee3: 0f 85 97 f3 ff ff jne 40e280 0.00 : 40eee9: b8 01 00 00 00 mov $0x1,%eax 0.00 : 40eeee: e9 8b f4 ff ff jmpq 40e37e 0.00 : 40eef3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : cur_state->paren_depth++; : ECHO; : } : : ")" { : if (cur_state->paren_depth > 0) 0.00 : 40eef8: 48 8b 15 61 be 25 00 mov 0x25be61(%rip),%rdx # 66ad60 0.00 : 40eeff: 8b 42 3c mov 0x3c(%rdx),%eax 0.00 : 40ef02: 85 c0 test %eax,%eax 0.00 : 40ef04: 7e 06 jle 40ef0c : cur_state->paren_depth--; 0.00 : 40ef06: 83 e8 01 sub $0x1,%eax 0.00 : 40ef09: 89 42 3c mov %eax,0x3c(%rdx) : ECHO; 0.00 : 40ef0c: 8b 35 7e c1 25 00 mov 0x25c17e(%rip),%esi # 66b090 0.00 : 40ef12: 48 8b 3d 6f c1 25 00 mov 0x25c16f(%rip),%rdi # 66b088 0.00 : 40ef19: e8 42 ef ff ff callq 40de60 : } : 0.00 : 40ef1e: e9 5d f3 ff ff jmpq 40e280 : * counting and detection of command-ending semicolon. These must : * appear before the {self} rule so that they take precedence over it. : */ : : "(" { : cur_state->paren_depth++; 0.00 : 40ef23: 48 8b 05 36 be 25 00 mov 0x25be36(%rip),%rax # 66ad60 0.00 : 40ef2a: 83 40 3c 01 addl $0x1,0x3c(%rax) : ECHO; 0.00 : 40ef2e: 8b 35 5c c1 25 00 mov 0x25c15c(%rip),%esi # 66b090 0.00 : 40ef34: 48 8b 3d 4d c1 25 00 mov 0x25c14d(%rip),%rdi # 66b088 0.00 : 40ef3b: e8 20 ef ff ff callq 40de60 : } : 0.00 : 40ef40: e9 3b f3 ff ff jmpq 40e280 : {typecast} { : ECHO; : } : : {dot_dot} { : ECHO; 0.00 : 40ef45: 8b 35 45 c1 25 00 mov 0x25c145(%rip),%esi # 66b090 0.00 : 40ef4b: 48 8b 3d 36 c1 25 00 mov 0x25c136(%rip),%rdi # 66b088 0.00 : 40ef52: e8 09 ef ff ff callq 40de60 : } : 0.00 : 40ef57: e9 24 f3 ff ff jmpq 40e280 : yyless(1); : ECHO; : } : : {typecast} { : ECHO; 0.00 : 40ef5c: 8b 35 2e c1 25 00 mov 0x25c12e(%rip),%esi # 66b090 0.00 : 40ef62: 48 8b 3d 1f c1 25 00 mov 0x25c11f(%rip),%rdi # 66b088 0.00 : 40ef69: e8 f2 ee ff ff callq 40de60 : } : 0.00 : 40ef6e: e9 0d f3 ff ff jmpq 40e280 : {dot_dot} { : ECHO; : } : : {colon_equals} { : ECHO; 0.00 : 40ef73: 8b 35 17 c1 25 00 mov 0x25c117(%rip),%esi # 66b090 0.00 : 40ef79: 48 8b 3d 08 c1 25 00 mov 0x25c108(%rip),%rdi # 66b088 0.00 : 40ef80: e8 db ee ff ff callq 40de60 : } : 0.00 : 40ef85: e9 f6 f2 ff ff jmpq 40e280 : ECHO; : } : : {xufailed} { : /* throw back all but the initial u/U */ : yyless(1); 0.00 : 40ef8a: 0f b6 05 c3 bd 25 00 movzbl 0x25bdc3(%rip),%eax # 66ad54 0.00 : 40ef91: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40ef95: 41 88 04 24 mov %al,(%r12) 0.00 : 40ef99: 89 d0 mov %edx,%eax 0.00 : 40ef9b: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40ef9e: 48 89 15 a3 bd 25 00 mov %rdx,0x25bda3(%rip) # 66ad48 0.00 : 40efa5: 4c 89 35 dc c0 25 00 mov %r14,0x25c0dc(%rip) # 66b088 0.00 : 40efac: 89 05 de c0 25 00 mov %eax,0x25c0de(%rip) # 66b090 0.00 : 40efb2: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40efb7: 88 05 97 bd 25 00 mov %al,0x25bd97(%rip) # 66ad54 0.00 : 40efbd: 41 c6 46 01 00 movb $0x0,0x1(%r14) : ECHO; 0.00 : 40efc2: 8b 35 c8 c0 25 00 mov 0x25c0c8(%rip),%esi # 66b090 0.00 : 40efc8: 48 8b 3d b9 c0 25 00 mov 0x25c0b9(%rip),%rdi # 66b088 : ECHO; : } : : {xufailed} { : /* throw back all but the initial u/U */ : yyless(1); 0.00 : 40efcf: 48 89 15 72 bd 25 00 mov %rdx,0x25bd72(%rip) # 66ad48 : ECHO; 0.00 : 40efd6: e8 85 ee ff ff callq 40de60 : } : 0.00 : 40efdb: e9 a0 f2 ff ff jmpq 40e280 : } : {xddouble} { : ECHO; : } : {xdinside} { : ECHO; 0.00 : 40efe0: 8b 35 aa c0 25 00 mov 0x25c0aa(%rip),%esi # 66b090 0.00 : 40efe6: 48 8b 3d 9b c0 25 00 mov 0x25c09b(%rip),%rdi # 66b088 0.00 : 40efed: e8 6e ee ff ff callq 40de60 : } : 0.00 : 40eff2: e9 89 f2 ff ff jmpq 40e280 : {xustop2} { : BEGIN(INITIAL); : ECHO; : } : {xddouble} { : ECHO; 0.00 : 40eff7: 8b 35 93 c0 25 00 mov 0x25c093(%rip),%esi # 66b090 0.00 : 40effd: 48 8b 3d 84 c0 25 00 mov 0x25c084(%rip),%rdi # 66b088 0.00 : 40f004: e8 57 ee ff ff callq 40de60 : } : {xdinside} { 0.00 : 40f009: e9 72 f2 ff ff jmpq 40e280 : BEGIN(INITIAL); : ECHO; : } : {xustop2} { : BEGIN(INITIAL); : ECHO; 0.00 : 40f00e: 8b 35 7c c0 25 00 mov 0x25c07c(%rip),%esi # 66b090 0.00 : 40f014: 48 8b 3d 6d c0 25 00 mov 0x25c06d(%rip),%rdi # 66b088 : yyless(0); : BEGIN(INITIAL); : ECHO; : } : {xustop2} { : BEGIN(INITIAL); 0.00 : 40f01b: c7 05 07 bd 25 00 01 movl $0x1,0x25bd07(%rip) # 66ad2c 0.00 : 40f022: 00 00 00 : ECHO; 0.00 : 40f025: e8 36 ee ff ff callq 40de60 : } : {xddouble} { 0.00 : 40f02a: e9 51 f2 ff ff jmpq 40e280 : {whitespace} { : ECHO; : } : {other} | : {xustop1} { : yyless(0); 0.00 : 40f02f: 0f b6 05 1e bd 25 00 movzbl 0x25bd1e(%rip),%eax # 66ad54 0.00 : 40f036: 41 88 04 24 mov %al,(%r12) 0.00 : 40f03a: 4c 89 35 07 bd 25 00 mov %r14,0x25bd07(%rip) # 66ad48 0.00 : 40f041: 4c 89 35 40 c0 25 00 mov %r14,0x25c040(%rip) # 66b088 0.00 : 40f048: c7 05 3e c0 25 00 00 movl $0x0,0x25c03e(%rip) # 66b090 0.00 : 40f04f: 00 00 00 0.00 : 40f052: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 40f056: 88 05 f8 bc 25 00 mov %al,0x25bcf8(%rip) # 66ad54 0.00 : 40f05c: 41 c6 06 00 movb $0x0,(%r14) : BEGIN(INITIAL); : ECHO; 0.00 : 40f060: 8b 35 2a c0 25 00 mov 0x25c02a(%rip),%esi # 66b090 0.00 : 40f066: 48 8b 3d 1b c0 25 00 mov 0x25c01b(%rip),%rdi # 66b088 : {whitespace} { : ECHO; : } : {other} | : {xustop1} { : yyless(0); 0.00 : 40f06d: 4c 89 35 d4 bc 25 00 mov %r14,0x25bcd4(%rip) # 66ad48 : BEGIN(INITIAL); 0.00 : 40f074: c7 05 ae bc 25 00 01 movl $0x1,0x25bcae(%rip) # 66ad2c 0.00 : 40f07b: 00 00 00 : ECHO; 0.00 : 40f07e: e8 dd ed ff ff callq 40de60 : } : {xustop2} { 0.00 : 40f083: e9 f8 f1 ff ff jmpq 40e280 : yyless(1); : BEGIN(xuiend); : ECHO; : } : {whitespace} { : ECHO; 0.00 : 40f088: 8b 35 02 c0 25 00 mov 0x25c002(%rip),%esi # 66b090 0.00 : 40f08e: 48 8b 3d f3 bf 25 00 mov 0x25bff3(%rip),%rdi # 66b088 0.00 : 40f095: e8 c6 ed ff ff callq 40de60 : } : {other} | 0.00 : 40f09a: e9 e1 f1 ff ff jmpq 40e280 : {xdstop} { : BEGIN(INITIAL); : ECHO; : } : {dquote} { : yyless(1); 0.00 : 40f09f: 0f b6 05 ae bc 25 00 movzbl 0x25bcae(%rip),%eax # 66ad54 0.00 : 40f0a6: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40f0aa: 41 88 04 24 mov %al,(%r12) 0.00 : 40f0ae: 89 d0 mov %edx,%eax 0.00 : 40f0b0: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f0b3: 48 89 15 8e bc 25 00 mov %rdx,0x25bc8e(%rip) # 66ad48 0.00 : 40f0ba: 4c 89 35 c7 bf 25 00 mov %r14,0x25bfc7(%rip) # 66b088 0.00 : 40f0c1: 89 05 c9 bf 25 00 mov %eax,0x25bfc9(%rip) # 66b090 0.00 : 40f0c7: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40f0cc: 88 05 82 bc 25 00 mov %al,0x25bc82(%rip) # 66ad54 0.00 : 40f0d2: 41 c6 46 01 00 movb $0x0,0x1(%r14) : BEGIN(xuiend); : ECHO; 0.00 : 40f0d7: 8b 35 b3 bf 25 00 mov 0x25bfb3(%rip),%esi # 66b090 0.00 : 40f0dd: 48 8b 3d a4 bf 25 00 mov 0x25bfa4(%rip),%rdi # 66b088 : {xdstop} { : BEGIN(INITIAL); : ECHO; : } : {dquote} { : yyless(1); 0.00 : 40f0e4: 48 89 15 5d bc 25 00 mov %rdx,0x25bc5d(%rip) # 66ad48 : BEGIN(xuiend); 0.00 : 40f0eb: c7 05 37 bc 25 00 13 movl $0x13,0x25bc37(%rip) # 66ad2c 0.00 : 40f0f2: 00 00 00 : ECHO; 0.00 : 40f0f5: e8 66 ed ff ff callq 40de60 : } : {whitespace} { 0.00 : 40f0fa: e9 81 f1 ff ff jmpq 40e280 : BEGIN(xui); : ECHO; : } : {xdstop} { : BEGIN(INITIAL); : ECHO; 0.00 : 40f0ff: 8b 35 8b bf 25 00 mov 0x25bf8b(%rip),%esi # 66b090 0.00 : 40f105: 48 8b 3d 7c bf 25 00 mov 0x25bf7c(%rip),%rdi # 66b088 : {xuistart} { : BEGIN(xui); : ECHO; : } : {xdstop} { : BEGIN(INITIAL); 0.00 : 40f10c: c7 05 16 bc 25 00 01 movl $0x1,0x25bc16(%rip) # 66ad2c 0.00 : 40f113: 00 00 00 : ECHO; 0.00 : 40f116: e8 45 ed ff ff callq 40de60 : } : {dquote} { 0.00 : 40f11b: e9 60 f1 ff ff jmpq 40e280 : BEGIN(xd); : ECHO; : } : {xuistart} { : BEGIN(xui); : ECHO; 0.00 : 40f120: 8b 35 6a bf 25 00 mov 0x25bf6a(%rip),%esi # 66b090 0.00 : 40f126: 48 8b 3d 5b bf 25 00 mov 0x25bf5b(%rip),%rdi # 66b088 : {xdstart} { : BEGIN(xd); : ECHO; : } : {xuistart} { : BEGIN(xui); 0.00 : 40f12d: c7 05 f5 bb 25 00 11 movl $0x11,0x25bbf5(%rip) # 66ad2c 0.00 : 40f134: 00 00 00 : ECHO; 0.00 : 40f137: e8 24 ed ff ff callq 40de60 : } : {xdstop} { 0.00 : 40f13c: e9 3f f1 ff ff jmpq 40e280 : ECHO; : } : : {xdstart} { : BEGIN(xd); : ECHO; 0.00 : 40f141: 8b 35 49 bf 25 00 mov 0x25bf49(%rip),%esi # 66b090 0.00 : 40f147: 48 8b 3d 3a bf 25 00 mov 0x25bf3a(%rip),%rdi # 66b088 : /* This is only needed for $ inside the quoted text */ : ECHO; : } : : {xdstart} { : BEGIN(xd); 0.00 : 40f14e: c7 05 d4 bb 25 00 07 movl $0x7,0x25bbd4(%rip) # 66ad2c 0.00 : 40f155: 00 00 00 : ECHO; 0.00 : 40f158: e8 03 ed ff ff callq 40de60 : } : {xuistart} { 0.00 : 40f15d: e9 1e f1 ff ff jmpq 40e280 : {dolqfailed} { : ECHO; : } : . { : /* This is only needed for $ inside the quoted text */ : ECHO; 0.00 : 40f162: 8b 35 28 bf 25 00 mov 0x25bf28(%rip),%esi # 66b090 0.00 : 40f168: 48 8b 3d 19 bf 25 00 mov 0x25bf19(%rip),%rdi # 66b088 0.00 : 40f16f: e8 ec ec ff ff callq 40de60 : } : 0.00 : 40f174: e9 07 f1 ff ff jmpq 40e280 : } : {dolqinside} { : ECHO; : } : {dolqfailed} { : ECHO; 0.00 : 40f179: 8b 35 11 bf 25 00 mov 0x25bf11(%rip),%esi # 66b090 0.00 : 40f17f: 48 8b 3d 02 bf 25 00 mov 0x25bf02(%rip),%rdi # 66b088 0.00 : 40f186: e8 d5 ec ff ff callq 40de60 : } : . { 0.00 : 40f18b: e9 f0 f0 ff ff jmpq 40e280 : yyless(yyleng-1); : } : ECHO; : } : {dolqinside} { : ECHO; 0.00 : 40f190: 8b 35 fa be 25 00 mov 0x25befa(%rip),%esi # 66b090 0.00 : 40f196: 48 8b 3d eb be 25 00 mov 0x25beeb(%rip),%rdi # 66b088 0.00 : 40f19d: e8 be ec ff ff callq 40de60 : } : {dolqfailed} { 0.00 : 40f1a2: e9 d9 f0 ff ff jmpq 40e280 : /* throw back all but the initial "$" */ : yyless(1); : ECHO; : } : {dolqdelim} { : if (strcmp(yytext, cur_state->dolqstart) == 0) 0.00 : 40f1a7: 48 8b 05 b2 bb 25 00 mov 0x25bbb2(%rip),%rax # 66ad60 0.00 : 40f1ae: 48 8b 3d d3 be 25 00 mov 0x25bed3(%rip),%rdi # 66b088 0.00 : 40f1b5: 48 8b 58 48 mov 0x48(%rax),%rbx 0.00 : 40f1b9: 48 89 de mov %rbx,%rsi 0.00 : 40f1bc: e8 bf 49 ff ff callq 403b80 0.00 : 40f1c1: 85 c0 test %eax,%eax 0.00 : 40f1c3: 0f 84 c1 07 00 00 je 40f98a : /* : * When we fail to match $...$ to dolqstart, transfer : * the $... part to the output, but put back the final : * $ for rescanning. Consider $delim$...$junk$delim$ : */ : yyless(yyleng-1); 0.00 : 40f1c9: 8b 05 c1 be 25 00 mov 0x25bec1(%rip),%eax # 66b090 0.00 : 40f1cf: 0f b6 15 7e bb 25 00 movzbl 0x25bb7e(%rip),%edx # 66ad54 0.00 : 40f1d6: 83 e8 01 sub $0x1,%eax 0.00 : 40f1d9: 48 98 cltq 0.00 : 40f1db: 41 88 14 24 mov %dl,(%r12) 0.00 : 40f1df: 4c 89 35 a2 be 25 00 mov %r14,0x25bea2(%rip) # 66b088 0.00 : 40f1e6: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 40f1ea: 89 c2 mov %eax,%edx 0.00 : 40f1ec: 2b 55 a8 sub -0x58(%rbp),%edx 0.00 : 40f1ef: 48 89 05 52 bb 25 00 mov %rax,0x25bb52(%rip) # 66ad48 0.00 : 40f1f6: 89 15 94 be 25 00 mov %edx,0x25be94(%rip) # 66b090 0.00 : 40f1fc: 0f b6 10 movzbl (%rax),%edx 0.00 : 40f1ff: 88 15 4f bb 25 00 mov %dl,0x25bb4f(%rip) # 66ad54 0.00 : 40f205: c6 00 00 movb $0x0,(%rax) 0.00 : 40f208: 48 89 05 39 bb 25 00 mov %rax,0x25bb39(%rip) # 66ad48 : } : ECHO; 0.00 : 40f20f: 8b 35 7b be 25 00 mov 0x25be7b(%rip),%esi # 66b090 0.00 : 40f215: 48 8b 3d 6c be 25 00 mov 0x25be6c(%rip),%rdi # 66b088 0.00 : 40f21c: e8 3f ec ff ff callq 40de60 : } : {dolqinside} { 0.00 : 40f221: e9 5a f0 ff ff jmpq 40e280 : BEGIN(xdolq); : ECHO; : } : {dolqfailed} { : /* throw back all but the initial "$" */ : yyless(1); 0.00 : 40f226: 0f b6 05 27 bb 25 00 movzbl 0x25bb27(%rip),%eax # 66ad54 0.00 : 40f22d: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40f231: 41 88 04 24 mov %al,(%r12) 0.00 : 40f235: 89 d0 mov %edx,%eax 0.00 : 40f237: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f23a: 48 89 15 07 bb 25 00 mov %rdx,0x25bb07(%rip) # 66ad48 0.00 : 40f241: 4c 89 35 40 be 25 00 mov %r14,0x25be40(%rip) # 66b088 0.00 : 40f248: 89 05 42 be 25 00 mov %eax,0x25be42(%rip) # 66b090 0.00 : 40f24e: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40f253: 88 05 fb ba 25 00 mov %al,0x25bafb(%rip) # 66ad54 0.00 : 40f259: 41 c6 46 01 00 movb $0x0,0x1(%r14) : ECHO; 0.00 : 40f25e: 8b 35 2c be 25 00 mov 0x25be2c(%rip),%esi # 66b090 0.00 : 40f264: 48 8b 3d 1d be 25 00 mov 0x25be1d(%rip),%rdi # 66b088 : BEGIN(xdolq); : ECHO; : } : {dolqfailed} { : /* throw back all but the initial "$" */ : yyless(1); 0.00 : 40f26b: 48 89 15 d6 ba 25 00 mov %rdx,0x25bad6(%rip) # 66ad48 : ECHO; 0.00 : 40f272: e8 e9 eb ff ff callq 40de60 : } : {dolqdelim} { 0.00 : 40f277: e9 04 f0 ff ff jmpq 40e280 : /* This is only needed for \ just before EOF */ : ECHO; : } : : {dolqdelim} { : cur_state->dolqstart = pg_strdup(yytext); 0.00 : 40f27c: 48 8b 1d dd ba 25 00 mov 0x25badd(%rip),%rbx # 66ad60 0.00 : 40f283: 48 8b 3d fe bd 25 00 mov 0x25bdfe(%rip),%rdi # 66b088 0.00 : 40f28a: e8 d1 4b 02 00 callq 433e60 0.00 : 40f28f: 48 89 43 48 mov %rax,0x48(%rbx) : BEGIN(xdolq); : ECHO; 0.00 : 40f293: 8b 35 f7 bd 25 00 mov 0x25bdf7(%rip),%esi # 66b090 0.00 : 40f299: 48 8b 3d e8 bd 25 00 mov 0x25bde8(%rip),%rdi # 66b088 : ECHO; : } : : {dolqdelim} { : cur_state->dolqstart = pg_strdup(yytext); : BEGIN(xdolq); 0.00 : 40f2a0: c7 05 82 ba 25 00 0f movl $0xf,0x25ba82(%rip) # 66ad2c 0.00 : 40f2a7: 00 00 00 : ECHO; 0.00 : 40f2aa: e8 b1 eb ff ff callq 40de60 : } : {dolqfailed} { 0.00 : 40f2af: e9 cc ef ff ff jmpq 40e280 : {quotecontinue} { : ECHO; : } : . { : /* This is only needed for \ just before EOF */ : ECHO; 0.00 : 40f2b4: 8b 35 d6 bd 25 00 mov 0x25bdd6(%rip),%esi # 66b090 0.00 : 40f2ba: 48 8b 3d c7 bd 25 00 mov 0x25bdc7(%rip),%rdi # 66b088 0.00 : 40f2c1: e8 9a eb ff ff callq 40de60 : } : 0.00 : 40f2c6: e9 b5 ef ff ff jmpq 40e280 : } : {xehexesc} { : ECHO; : } : {quotecontinue} { : ECHO; 0.00 : 40f2cb: 8b 35 bf bd 25 00 mov 0x25bdbf(%rip),%esi # 66b090 0.00 : 40f2d1: 48 8b 3d b0 bd 25 00 mov 0x25bdb0(%rip),%rdi # 66b088 0.00 : 40f2d8: e8 83 eb ff ff callq 40de60 : } : . { 0.00 : 40f2dd: e9 9e ef ff ff jmpq 40e280 : } : {xeoctesc} { : ECHO; : } : {xehexesc} { : ECHO; 0.00 : 40f2e2: 8b 35 a8 bd 25 00 mov 0x25bda8(%rip),%esi # 66b090 0.00 : 40f2e8: 48 8b 3d 99 bd 25 00 mov 0x25bd99(%rip),%rdi # 66b088 0.00 : 40f2ef: e8 6c eb ff ff callq 40de60 : } : {quotecontinue} { 0.00 : 40f2f4: e9 87 ef ff ff jmpq 40e280 : } : {xeescape} { : ECHO; : } : {xeoctesc} { : ECHO; 0.00 : 40f2f9: 8b 35 91 bd 25 00 mov 0x25bd91(%rip),%esi # 66b090 0.00 : 40f2ff: 48 8b 3d 82 bd 25 00 mov 0x25bd82(%rip),%rdi # 66b088 0.00 : 40f306: e8 55 eb ff ff callq 40de60 : } : {xehexesc} { 0.00 : 40f30b: e9 70 ef ff ff jmpq 40e280 : } : {xeunicodefail} { : ECHO; : } : {xeescape} { : ECHO; 0.00 : 40f310: 8b 35 7a bd 25 00 mov 0x25bd7a(%rip),%esi # 66b090 0.00 : 40f316: 48 8b 3d 6b bd 25 00 mov 0x25bd6b(%rip),%rdi # 66b088 0.00 : 40f31d: e8 3e eb ff ff callq 40de60 : } : {xeoctesc} { 0.00 : 40f322: e9 59 ef ff ff jmpq 40e280 : } : {xeunicode} { : ECHO; : } : {xeunicodefail} { : ECHO; 0.00 : 40f327: 8b 35 63 bd 25 00 mov 0x25bd63(%rip),%esi # 66b090 0.00 : 40f32d: 48 8b 3d 54 bd 25 00 mov 0x25bd54(%rip),%rdi # 66b088 0.00 : 40f334: e8 27 eb ff ff callq 40de60 : } : {xeescape} { 0.00 : 40f339: e9 42 ef ff ff jmpq 40e280 : } : {xeinside} { : ECHO; : } : {xeunicode} { : ECHO; 0.00 : 40f33e: 8b 35 4c bd 25 00 mov 0x25bd4c(%rip),%esi # 66b090 0.00 : 40f344: 48 8b 3d 3d bd 25 00 mov 0x25bd3d(%rip),%rdi # 66b088 0.00 : 40f34b: e8 10 eb ff ff callq 40de60 : } : {xeunicodefail} { 0.00 : 40f350: e9 2b ef ff ff jmpq 40e280 : } : {xqinside} { : ECHO; : } : {xeinside} { : ECHO; 0.00 : 40f355: 8b 35 35 bd 25 00 mov 0x25bd35(%rip),%esi # 66b090 0.00 : 40f35b: 48 8b 3d 26 bd 25 00 mov 0x25bd26(%rip),%rdi # 66b088 0.00 : 40f362: e8 f9 ea ff ff callq 40de60 : } : {xeunicode} { 0.00 : 40f367: e9 14 ef ff ff jmpq 40e280 : } : {xqdouble} { : ECHO; : } : {xqinside} { : ECHO; 0.00 : 40f36c: 8b 35 1e bd 25 00 mov 0x25bd1e(%rip),%esi # 66b090 0.00 : 40f372: 48 8b 3d 0f bd 25 00 mov 0x25bd0f(%rip),%rdi # 66b088 0.00 : 40f379: e8 e2 ea ff ff callq 40de60 : } : {xeinside} { 0.00 : 40f37e: e9 fd ee ff ff jmpq 40e280 : {xustop2} { : BEGIN(INITIAL); : ECHO; : } : {xqdouble} { : ECHO; 0.00 : 40f383: 8b 35 07 bd 25 00 mov 0x25bd07(%rip),%esi # 66b090 0.00 : 40f389: 48 8b 3d f8 bc 25 00 mov 0x25bcf8(%rip),%rdi # 66b088 0.00 : 40f390: e8 cb ea ff ff callq 40de60 : } : {xqinside} { 0.00 : 40f395: e9 e6 ee ff ff jmpq 40e280 : BEGIN(INITIAL); : ECHO; : } : {xustop2} { : BEGIN(INITIAL); : ECHO; 0.00 : 40f39a: 8b 35 f0 bc 25 00 mov 0x25bcf0(%rip),%esi # 66b090 0.00 : 40f3a0: 48 8b 3d e1 bc 25 00 mov 0x25bce1(%rip),%rdi # 66b088 : yyless(0); : BEGIN(INITIAL); : ECHO; : } : {xustop2} { : BEGIN(INITIAL); 0.00 : 40f3a7: c7 05 7b b9 25 00 01 movl $0x1,0x25b97b(%rip) # 66ad2c 0.00 : 40f3ae: 00 00 00 : ECHO; 0.00 : 40f3b1: e8 aa ea ff ff callq 40de60 : } : {xqdouble} { 0.00 : 40f3b6: e9 c5 ee ff ff jmpq 40e280 : {whitespace} { : ECHO; : } : {other} | : {xustop1} { : yyless(0); 0.00 : 40f3bb: 0f b6 05 92 b9 25 00 movzbl 0x25b992(%rip),%eax # 66ad54 0.00 : 40f3c2: 41 88 04 24 mov %al,(%r12) 0.00 : 40f3c6: 4c 89 35 7b b9 25 00 mov %r14,0x25b97b(%rip) # 66ad48 0.00 : 40f3cd: 4c 89 35 b4 bc 25 00 mov %r14,0x25bcb4(%rip) # 66b088 0.00 : 40f3d4: c7 05 b2 bc 25 00 00 movl $0x0,0x25bcb2(%rip) # 66b090 0.00 : 40f3db: 00 00 00 0.00 : 40f3de: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 40f3e2: 88 05 6c b9 25 00 mov %al,0x25b96c(%rip) # 66ad54 0.00 : 40f3e8: 41 c6 06 00 movb $0x0,(%r14) : BEGIN(INITIAL); : ECHO; 0.00 : 40f3ec: 8b 35 9e bc 25 00 mov 0x25bc9e(%rip),%esi # 66b090 0.00 : 40f3f2: 48 8b 3d 8f bc 25 00 mov 0x25bc8f(%rip),%rdi # 66b088 : {whitespace} { : ECHO; : } : {other} | : {xustop1} { : yyless(0); 0.00 : 40f3f9: 4c 89 35 48 b9 25 00 mov %r14,0x25b948(%rip) # 66ad48 : BEGIN(INITIAL); 0.00 : 40f400: c7 05 22 b9 25 00 01 movl $0x1,0x25b922(%rip) # 66ad2c 0.00 : 40f407: 00 00 00 : ECHO; 0.00 : 40f40a: e8 51 ea ff ff callq 40de60 : } : {xustop2} { 0.00 : 40f40f: e9 6c ee ff ff jmpq 40e280 : yyless(1); : BEGIN(xusend); : ECHO; : } : {whitespace} { : ECHO; 0.00 : 40f414: 8b 35 76 bc 25 00 mov 0x25bc76(%rip),%esi # 66b090 0.00 : 40f41a: 48 8b 3d 67 bc 25 00 mov 0x25bc67(%rip),%rdi # 66b088 0.00 : 40f421: e8 3a ea ff ff callq 40de60 : } : {other} | 0.00 : 40f426: e9 55 ee ff ff jmpq 40e280 : BEGIN(INITIAL); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f42b: 0f b6 05 22 b9 25 00 movzbl 0x25b922(%rip),%eax # 66ad54 0.00 : 40f432: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40f436: 41 88 04 24 mov %al,(%r12) 0.00 : 40f43a: 89 d0 mov %edx,%eax 0.00 : 40f43c: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f43f: 48 89 15 02 b9 25 00 mov %rdx,0x25b902(%rip) # 66ad48 0.00 : 40f446: 4c 89 35 3b bc 25 00 mov %r14,0x25bc3b(%rip) # 66b088 0.00 : 40f44d: 89 05 3d bc 25 00 mov %eax,0x25bc3d(%rip) # 66b090 0.00 : 40f453: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40f458: 88 05 f6 b8 25 00 mov %al,0x25b8f6(%rip) # 66ad54 0.00 : 40f45e: 41 c6 46 01 00 movb $0x0,0x1(%r14) : BEGIN(xusend); : ECHO; 0.00 : 40f463: 8b 35 27 bc 25 00 mov 0x25bc27(%rip),%esi # 66b090 0.00 : 40f469: 48 8b 3d 18 bc 25 00 mov 0x25bc18(%rip),%rdi # 66b088 : BEGIN(INITIAL); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f470: 48 89 15 d1 b8 25 00 mov %rdx,0x25b8d1(%rip) # 66ad48 : BEGIN(xusend); 0.00 : 40f477: c7 05 ab b8 25 00 17 movl $0x17,0x25b8ab(%rip) # 66ad2c 0.00 : 40f47e: 00 00 00 : ECHO; 0.00 : 40f481: e8 da e9 ff ff callq 40de60 : } : {whitespace} { 0.00 : 40f486: e9 f5 ed ff ff jmpq 40e280 : BEGIN(xus); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f48b: 0f b6 05 c2 b8 25 00 movzbl 0x25b8c2(%rip),%eax # 66ad54 0.00 : 40f492: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40f496: 41 88 04 24 mov %al,(%r12) 0.00 : 40f49a: 89 d0 mov %edx,%eax 0.00 : 40f49c: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f49f: 48 89 15 a2 b8 25 00 mov %rdx,0x25b8a2(%rip) # 66ad48 0.00 : 40f4a6: 4c 89 35 db bb 25 00 mov %r14,0x25bbdb(%rip) # 66b088 0.00 : 40f4ad: 89 05 dd bb 25 00 mov %eax,0x25bbdd(%rip) # 66b090 0.00 : 40f4b3: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40f4b8: 88 05 96 b8 25 00 mov %al,0x25b896(%rip) # 66ad54 0.00 : 40f4be: 41 c6 46 01 00 movb $0x0,0x1(%r14) : BEGIN(INITIAL); : ECHO; 0.00 : 40f4c3: 8b 35 c7 bb 25 00 mov 0x25bbc7(%rip),%esi # 66b090 0.00 : 40f4c9: 48 8b 3d b8 bb 25 00 mov 0x25bbb8(%rip),%rdi # 66b088 : BEGIN(xus); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f4d0: 48 89 15 71 b8 25 00 mov %rdx,0x25b871(%rip) # 66ad48 : BEGIN(INITIAL); 0.00 : 40f4d7: c7 05 4b b8 25 00 01 movl $0x1,0x25b84b(%rip) # 66ad2c 0.00 : 40f4de: 00 00 00 : ECHO; 0.00 : 40f4e1: e8 7a e9 ff ff callq 40de60 : } : {quotestop} | 0.00 : 40f4e6: e9 95 ed ff ff jmpq 40e280 : BEGIN(xe); : ECHO; : } : {xusstart} { : BEGIN(xus); : ECHO; 0.00 : 40f4eb: 8b 35 9f bb 25 00 mov 0x25bb9f(%rip),%esi # 66b090 0.00 : 40f4f1: 48 8b 3d 90 bb 25 00 mov 0x25bb90(%rip),%rdi # 66b088 : {xestart} { : BEGIN(xe); : ECHO; : } : {xusstart} { : BEGIN(xus); 0.00 : 40f4f8: c7 05 2a b8 25 00 15 movl $0x15,0x25b82a(%rip) # 66ad2c 0.00 : 40f4ff: 00 00 00 : ECHO; 0.00 : 40f502: e8 59 e9 ff ff callq 40de60 : } : {quotestop} | 0.00 : 40f507: e9 74 ed ff ff jmpq 40e280 : BEGIN(xe); : ECHO; : } : {xestart} { : BEGIN(xe); : ECHO; 0.00 : 40f50c: 8b 35 7e bb 25 00 mov 0x25bb7e(%rip),%esi # 66b090 0.00 : 40f512: 48 8b 3d 6f bb 25 00 mov 0x25bb6f(%rip),%rdi # 66b088 : else : BEGIN(xe); : ECHO; : } : {xestart} { : BEGIN(xe); 0.00 : 40f519: c7 05 09 b8 25 00 0b movl $0xb,0x25b809(%rip) # 66ad2c 0.00 : 40f520: 00 00 00 : ECHO; 0.00 : 40f523: e8 38 e9 ff ff callq 40de60 : } : {xusstart} { 0.00 : 40f528: e9 53 ed ff ff jmpq 40e280 : yyless(1); /* eat only 'n' this time */ : ECHO; : } : : {xqstart} { : if (standard_strings()) 0.00 : 40f52d: e8 5e 94 ff ff callq 408990 : BEGIN(xq); 0.00 : 40f532: 3c 01 cmp $0x1,%al : else : BEGIN(xe); : ECHO; 0.00 : 40f534: 8b 35 56 bb 25 00 mov 0x25bb56(%rip),%esi # 66b090 0.00 : 40f53a: 48 8b 3d 47 bb 25 00 mov 0x25bb47(%rip),%rdi # 66b088 : ECHO; : } : : {xqstart} { : if (standard_strings()) : BEGIN(xq); 0.00 : 40f541: 19 c0 sbb %eax,%eax 0.00 : 40f543: 83 e0 fe and $0xfffffffe,%eax 0.00 : 40f546: 83 c0 0d add $0xd,%eax 0.00 : 40f549: 89 05 dd b7 25 00 mov %eax,0x25b7dd(%rip) # 66ad2c : else : BEGIN(xe); : ECHO; 0.00 : 40f54f: e8 0c e9 ff ff callq 40de60 : } : {xestart} { 0.00 : 40f554: e9 27 ed ff ff jmpq 40e280 : BEGIN(INITIAL); : ECHO; : } : : {xnstart} { : yyless(1); /* eat only 'n' this time */ 0.00 : 40f559: 0f b6 05 f4 b7 25 00 movzbl 0x25b7f4(%rip),%eax # 66ad54 0.00 : 40f560: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40f564: 41 88 04 24 mov %al,(%r12) 0.00 : 40f568: 89 d0 mov %edx,%eax 0.00 : 40f56a: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f56d: 48 89 15 d4 b7 25 00 mov %rdx,0x25b7d4(%rip) # 66ad48 0.00 : 40f574: 4c 89 35 0d bb 25 00 mov %r14,0x25bb0d(%rip) # 66b088 0.00 : 40f57b: 89 05 0f bb 25 00 mov %eax,0x25bb0f(%rip) # 66b090 0.00 : 40f581: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40f586: 88 05 c8 b7 25 00 mov %al,0x25b7c8(%rip) # 66ad54 0.00 : 40f58c: 41 c6 46 01 00 movb $0x0,0x1(%r14) : ECHO; 0.00 : 40f591: 8b 35 f9 ba 25 00 mov 0x25baf9(%rip),%esi # 66b090 0.00 : 40f597: 48 8b 3d ea ba 25 00 mov 0x25baea(%rip),%rdi # 66b088 : BEGIN(INITIAL); : ECHO; : } : : {xnstart} { : yyless(1); /* eat only 'n' this time */ 0.00 : 40f59e: 48 89 15 a3 b7 25 00 mov %rdx,0x25b7a3(%rip) # 66ad48 : ECHO; 0.00 : 40f5a5: e8 b6 e8 ff ff callq 40de60 : } : 0.00 : 40f5aa: e9 d1 ec ff ff jmpq 40e280 : BEGIN(xh); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f5af: 0f b6 05 9e b7 25 00 movzbl 0x25b79e(%rip),%eax # 66ad54 0.00 : 40f5b6: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40f5ba: 41 88 04 24 mov %al,(%r12) 0.00 : 40f5be: 89 d0 mov %edx,%eax 0.00 : 40f5c0: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f5c3: 48 89 15 7e b7 25 00 mov %rdx,0x25b77e(%rip) # 66ad48 0.00 : 40f5ca: 4c 89 35 b7 ba 25 00 mov %r14,0x25bab7(%rip) # 66b088 0.00 : 40f5d1: 89 05 b9 ba 25 00 mov %eax,0x25bab9(%rip) # 66b090 0.00 : 40f5d7: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40f5dc: 88 05 72 b7 25 00 mov %al,0x25b772(%rip) # 66ad54 0.00 : 40f5e2: 41 c6 46 01 00 movb $0x0,0x1(%r14) : BEGIN(INITIAL); : ECHO; 0.00 : 40f5e7: 8b 35 a3 ba 25 00 mov 0x25baa3(%rip),%esi # 66b090 0.00 : 40f5ed: 48 8b 3d 94 ba 25 00 mov 0x25ba94(%rip),%rdi # 66b088 : BEGIN(xh); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f5f4: 48 89 15 4d b7 25 00 mov %rdx,0x25b74d(%rip) # 66ad48 : BEGIN(INITIAL); 0.00 : 40f5fb: c7 05 27 b7 25 00 01 movl $0x1,0x25b727(%rip) # 66ad2c 0.00 : 40f602: 00 00 00 : ECHO; 0.00 : 40f605: e8 56 e8 ff ff callq 40de60 : } : 0.00 : 40f60a: e9 71 ec ff ff jmpq 40e280 : * forward to the parser and label it there. : * In the meantime, place a leading "x" on the string : * to mark it for the input routine as a hex string. : */ : BEGIN(xh); : ECHO; 0.00 : 40f60f: 8b 35 7b ba 25 00 mov 0x25ba7b(%rip),%esi # 66b090 0.00 : 40f615: 48 8b 3d 6c ba 25 00 mov 0x25ba6c(%rip),%rdi # 66b088 : * At some point we should simply pass the string : * forward to the parser and label it there. : * In the meantime, place a leading "x" on the string : * to mark it for the input routine as a hex string. : */ : BEGIN(xh); 0.00 : 40f61c: c7 05 06 b7 25 00 09 movl $0x9,0x25b706(%rip) # 66ad2c 0.00 : 40f623: 00 00 00 : ECHO; 0.00 : 40f626: e8 35 e8 ff ff callq 40de60 : } : {quotestop} | 0.00 : 40f62b: e9 50 ec ff ff jmpq 40e280 : {xbinside} { : ECHO; : } : {quotecontinue} | : {quotecontinue} { : ECHO; 0.00 : 40f630: 8b 35 5a ba 25 00 mov 0x25ba5a(%rip),%esi # 66b090 0.00 : 40f636: 48 8b 3d 4b ba 25 00 mov 0x25ba4b(%rip),%rdi # 66b088 0.00 : 40f63d: e8 1e e8 ff ff callq 40de60 : } : 0.00 : 40f642: e9 39 ec ff ff jmpq 40e280 : BEGIN(INITIAL); : ECHO; : } : {xhinside} | : {xbinside} { : ECHO; 0.00 : 40f647: 8b 35 43 ba 25 00 mov 0x25ba43(%rip),%esi # 66b090 0.00 : 40f64d: 48 8b 3d 34 ba 25 00 mov 0x25ba34(%rip),%rdi # 66b088 0.00 : 40f654: e8 07 e8 ff ff callq 40de60 : } : {quotecontinue} | 0.00 : 40f659: e9 22 ec ff ff jmpq 40e280 : BEGIN(xb); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f65e: 0f b6 05 ef b6 25 00 movzbl 0x25b6ef(%rip),%eax # 66ad54 0.00 : 40f665: 49 8d 56 01 lea 0x1(%r14),%rdx 0.00 : 40f669: 41 88 04 24 mov %al,(%r12) 0.00 : 40f66d: 89 d0 mov %edx,%eax 0.00 : 40f66f: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f672: 48 89 15 cf b6 25 00 mov %rdx,0x25b6cf(%rip) # 66ad48 0.00 : 40f679: 4c 89 35 08 ba 25 00 mov %r14,0x25ba08(%rip) # 66b088 0.00 : 40f680: 89 05 0a ba 25 00 mov %eax,0x25ba0a(%rip) # 66b090 0.00 : 40f686: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 40f68b: 88 05 c3 b6 25 00 mov %al,0x25b6c3(%rip) # 66ad54 0.00 : 40f691: 41 c6 46 01 00 movb $0x0,0x1(%r14) : BEGIN(INITIAL); : ECHO; 0.00 : 40f696: 8b 35 f4 b9 25 00 mov 0x25b9f4(%rip),%esi # 66b090 0.00 : 40f69c: 48 8b 3d e5 b9 25 00 mov 0x25b9e5(%rip),%rdi # 66b088 : BEGIN(xb); : ECHO; : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 40f6a3: 48 89 15 9e b6 25 00 mov %rdx,0x25b69e(%rip) # 66ad48 : BEGIN(INITIAL); 0.00 : 40f6aa: c7 05 78 b6 25 00 01 movl $0x1,0x25b678(%rip) # 66ad2c 0.00 : 40f6b1: 00 00 00 : ECHO; 0.00 : 40f6b4: e8 a7 e7 ff ff callq 40de60 : } : {xhinside} | 0.00 : 40f6b9: e9 c2 eb ff ff jmpq 40e280 : ECHO; : } : : {xbstart} { : BEGIN(xb); : ECHO; 0.00 : 40f6be: 8b 35 cc b9 25 00 mov 0x25b9cc(%rip),%esi # 66b090 0.00 : 40f6c4: 48 8b 3d bd b9 25 00 mov 0x25b9bd(%rip),%rdi # 66b088 : \*+ { : ECHO; : } : : {xbstart} { : BEGIN(xb); 0.00 : 40f6cb: c7 05 57 b6 25 00 03 movl $0x3,0x25b657(%rip) # 66ad2c 0.00 : 40f6d2: 00 00 00 : ECHO; 0.00 : 40f6d5: e8 86 e7 ff ff callq 40de60 : } : {quotestop} | 0.00 : 40f6da: e9 a1 eb ff ff jmpq 40e280 : {op_chars} { : ECHO; : } : : \*+ { : ECHO; 0.00 : 40f6df: 8b 35 ab b9 25 00 mov 0x25b9ab(%rip),%esi # 66b090 0.00 : 40f6e5: 48 8b 3d 9c b9 25 00 mov 0x25b99c(%rip),%rdi # 66b088 0.00 : 40f6ec: e8 6f e7 ff ff callq 40de60 : } : 0.00 : 40f6f1: e9 8a eb ff ff jmpq 40e280 : {xcinside} { : ECHO; : } : : {op_chars} { : ECHO; 0.00 : 40f6f6: 8b 35 94 b9 25 00 mov 0x25b994(%rip),%esi # 66b090 0.00 : 40f6fc: 48 8b 3d 85 b9 25 00 mov 0x25b985(%rip),%rdi # 66b088 0.00 : 40f703: e8 58 e7 ff ff callq 40de60 : } : 0.00 : 40f708: e9 73 eb ff ff jmpq 40e280 : cur_state->xcdepth--; : ECHO; : } : : {xcinside} { : ECHO; 0.00 : 40f70d: 8b 35 7d b9 25 00 mov 0x25b97d(%rip),%esi # 66b090 0.00 : 40f713: 48 8b 3d 6e b9 25 00 mov 0x25b96e(%rip),%rdi # 66b088 0.00 : 40f71a: e8 41 e7 ff ff callq 40de60 : } : 0.00 : 40f71f: e9 5c eb ff ff jmpq 40e280 : yyless(2); : ECHO; : } : : {xcstop} { : if (cur_state->xcdepth <= 0) 0.00 : 40f724: 48 8b 15 35 b6 25 00 mov 0x25b635(%rip),%rdx # 66ad60 0.00 : 40f72b: 8b 42 40 mov 0x40(%rdx),%eax 0.00 : 40f72e: 85 c0 test %eax,%eax 0.00 : 40f730: 0f 8e a8 02 00 00 jle 40f9de : { : BEGIN(INITIAL); : } : else : cur_state->xcdepth--; 0.00 : 40f736: 83 e8 01 sub $0x1,%eax 0.00 : 40f739: 89 42 40 mov %eax,0x40(%rdx) : ECHO; 0.00 : 40f73c: 8b 35 4e b9 25 00 mov 0x25b94e(%rip),%esi # 66b090 0.00 : 40f742: 48 8b 3d 3f b9 25 00 mov 0x25b93f(%rip),%rdi # 66b088 0.00 : 40f749: e8 12 e7 ff ff callq 40de60 : } : 0.00 : 40f74e: e9 2d eb ff ff jmpq 40e280 : yyless(2); : ECHO; : } : : {xcstart} { : cur_state->xcdepth++; 0.00 : 40f753: 48 8b 05 06 b6 25 00 mov 0x25b606(%rip),%rax # 66ad60 : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 40f75a: 49 8d 56 02 lea 0x2(%r14),%rdx : yyless(2); : ECHO; : } : : {xcstart} { : cur_state->xcdepth++; 0.00 : 40f75e: 83 40 40 01 addl $0x1,0x40(%rax) : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 40f762: 0f b6 05 eb b5 25 00 movzbl 0x25b5eb(%rip),%eax # 66ad54 0.00 : 40f769: 41 88 04 24 mov %al,(%r12) 0.00 : 40f76d: 89 d0 mov %edx,%eax 0.00 : 40f76f: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f772: 48 89 15 cf b5 25 00 mov %rdx,0x25b5cf(%rip) # 66ad48 0.00 : 40f779: 4c 89 35 08 b9 25 00 mov %r14,0x25b908(%rip) # 66b088 0.00 : 40f780: 89 05 0a b9 25 00 mov %eax,0x25b90a(%rip) # 66b090 0.00 : 40f786: 41 0f b6 46 02 movzbl 0x2(%r14),%eax 0.00 : 40f78b: 88 05 c3 b5 25 00 mov %al,0x25b5c3(%rip) # 66ad54 0.00 : 40f791: 41 c6 46 02 00 movb $0x0,0x2(%r14) : ECHO; 0.00 : 40f796: 8b 35 f4 b8 25 00 mov 0x25b8f4(%rip),%esi # 66b090 0.00 : 40f79c: 48 8b 3d e5 b8 25 00 mov 0x25b8e5(%rip),%rdi # 66b088 : } : : {xcstart} { : cur_state->xcdepth++; : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 40f7a3: 48 89 15 9e b5 25 00 mov %rdx,0x25b59e(%rip) # 66ad48 : ECHO; 0.00 : 40f7aa: e8 b1 e6 ff ff callq 40de60 : } : 0.00 : 40f7af: e9 cc ea ff ff jmpq 40e280 : if (!(output_buf->len == 0 || yytext[0] == '-')) : ECHO; : } : : {xcstart} { : cur_state->xcdepth = 0; 0.00 : 40f7b4: 48 8b 05 a5 b5 25 00 mov 0x25b5a5(%rip),%rax # 66ad60 : BEGIN(xc); : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 40f7bb: 49 8d 56 02 lea 0x2(%r14),%rdx : if (!(output_buf->len == 0 || yytext[0] == '-')) : ECHO; : } : : {xcstart} { : cur_state->xcdepth = 0; 0.00 : 40f7bf: c7 40 40 00 00 00 00 movl $0x0,0x40(%rax) : BEGIN(xc); : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 40f7c6: 0f b6 05 87 b5 25 00 movzbl 0x25b587(%rip),%eax # 66ad54 : ECHO; : } : : {xcstart} { : cur_state->xcdepth = 0; : BEGIN(xc); 0.00 : 40f7cd: c7 05 55 b5 25 00 05 movl $0x5,0x25b555(%rip) # 66ad2c 0.00 : 40f7d4: 00 00 00 : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 40f7d7: 41 88 04 24 mov %al,(%r12) 0.00 : 40f7db: 89 d0 mov %edx,%eax 0.00 : 40f7dd: 2b 45 a8 sub -0x58(%rbp),%eax 0.00 : 40f7e0: 48 89 15 61 b5 25 00 mov %rdx,0x25b561(%rip) # 66ad48 0.00 : 40f7e7: 4c 89 35 9a b8 25 00 mov %r14,0x25b89a(%rip) # 66b088 0.00 : 40f7ee: 89 05 9c b8 25 00 mov %eax,0x25b89c(%rip) # 66b090 0.00 : 40f7f4: 41 0f b6 46 02 movzbl 0x2(%r14),%eax 0.00 : 40f7f9: 88 05 55 b5 25 00 mov %al,0x25b555(%rip) # 66ad54 0.00 : 40f7ff: 41 c6 46 02 00 movb $0x0,0x2(%r14) : ECHO; 0.00 : 40f804: 8b 35 86 b8 25 00 mov 0x25b886(%rip),%esi # 66b090 0.00 : 40f80a: 48 8b 3d 77 b8 25 00 mov 0x25b877(%rip),%rdi # 66b088 : : {xcstart} { : cur_state->xcdepth = 0; : BEGIN(xc); : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 40f811: 48 89 15 30 b5 25 00 mov %rdx,0x25b530(%rip) # 66ad48 : ECHO; 0.00 : 40f818: e8 43 e6 ff ff callq 40de60 : } : 0.00 : 40f81d: e9 5e ea ff ff jmpq 40e280 : * We suppress whitespace at the start of the query : * buffer. We also suppress all single-line comments, : * which is pretty dubious but is the historical : * behavior. : */ : if (!(output_buf->len == 0 || yytext[0] == '-')) 0.00 : 40f822: 48 8b 05 3f b5 25 00 mov 0x25b53f(%rip),%rax # 66ad68 0.00 : 40f829: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 40f82e: 0f 84 4c ea ff ff je 40e280 0.00 : 40f834: 48 8b 3d 4d b8 25 00 mov 0x25b84d(%rip),%rdi # 66b088 0.00 : 40f83b: 80 3f 2d cmpb $0x2d,(%rdi) 0.00 : 40f83e: 0f 84 3c ea ff ff je 40e280 : ECHO; 0.00 : 40f844: 8b 35 46 b8 25 00 mov 0x25b846(%rip),%esi # 66b090 0.00 : 40f84a: e8 11 e6 ff ff callq 40de60 0.00 : 40f84f: e9 2c ea ff ff jmpq 40e280 : } : : /* Try to read more data. */ : : /* First move last chars to start of buffer. */ : number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 0.00 : 40f854: 83 ea 01 sub $0x1,%edx 0.00 : 40f857: 29 ca sub %ecx,%edx : : for ( i = 0; i < number_to_move; ++i ) 0.00 : 40f859: 85 d2 test %edx,%edx : } : : /* Try to read more data. */ : : /* First move last chars to start of buffer. */ : number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 0.00 : 40f85b: 89 55 b4 mov %edx,-0x4c(%rbp) : : for ( i = 0; i < number_to_move; ++i ) 0.00 : 40f85e: 7e 27 jle 40f887 0.00 : 40f860: 31 d2 xor %edx,%edx 0.00 : 40f862: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : *(dest++) = *(source++); 0.00 : 40f868: 41 0f b6 04 17 movzbl (%r15,%rdx,1),%eax 0.00 : 40f86d: 88 04 13 mov %al,(%rbx,%rdx,1) 0.00 : 40f870: 48 83 c2 01 add $0x1,%rdx : /* Try to read more data. */ : : /* First move last chars to start of buffer. */ : number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; : : for ( i = 0; i < number_to_move; ++i ) 0.00 : 40f874: 39 55 b4 cmp %edx,-0x4c(%rbp) 0.00 : 40f877: 7f ef jg 40f868 0.00 : 40f879: 48 8b 3d b0 b4 25 00 mov 0x25b4b0(%rip),%rdi # 66ad30 0.00 : 40f880: 4c 8b 05 b1 b4 25 00 mov 0x25b4b1(%rip),%r8 # 66ad38 : *(dest++) = *(source++); : : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 0.00 : 40f887: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40f88b: 83 78 3c 02 cmpl $0x2,0x3c(%rax) 0.00 : 40f88f: 75 69 jne 40f8fa 0.00 : 40f891: e9 ff 05 00 00 jmpq 40fe95 0.00 : 40f896: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 40f89d: 00 00 00 : int yy_c_buf_p_offset = : (int) ((yy_c_buf_p) - b->yy_ch_buf); : : if ( b->yy_is_our_buffer ) : { : int new_size = b->yy_buf_size * 2; 0.00 : 40f8a0: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 40f8a4: 48 8d 04 12 lea (%rdx,%rdx,1),%rax : : if ( new_size <= 0 ) 0.00 : 40f8a8: 85 c0 test %eax,%eax 0.00 : 40f8aa: 0f 8e 1b 02 00 00 jle 40facb : b->yy_buf_size += b->yy_buf_size / 8; : else : b->yy_buf_size *= 2; 0.00 : 40f8b0: 48 89 43 18 mov %rax,0x18(%rbx) : * that use void* generic pointers. It works with the latter : * because both ANSI C and C++ allow castless assignment from : * any pointer type to void*, and deal with argument conversions : * as though doing an assignment. : */ : return (void *) realloc( (char *) ptr, size ); 0.00 : 40f8b4: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 40f8b8: 4c 89 ff mov %r15,%rdi 0.00 : 40f8bb: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40f8bf: 48 83 c6 02 add $0x2,%rsi 0.00 : 40f8c3: e8 e8 44 ff ff callq 403db0 : } : else : /* Can't grow it, we don't own it. */ : b->yy_ch_buf = 0; : : if ( ! b->yy_ch_buf ) 0.00 : 40f8c8: 48 85 c0 test %rax,%rax : if ( new_size <= 0 ) : b->yy_buf_size += b->yy_buf_size / 8; : else : b->yy_buf_size *= 2; : : b->yy_ch_buf = (char *) 0.00 : 40f8cb: 48 89 43 08 mov %rax,0x8(%rbx) : } : else : /* Can't grow it, we don't own it. */ : b->yy_ch_buf = 0; : : if ( ! b->yy_ch_buf ) 0.00 : 40f8cf: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40f8d3: 74 64 je 40f939 : YY_FATAL_ERROR( : "fatal error - scanner input buffer overflow" ); : : (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 0.00 : 40f8d5: 8b 45 c8 mov -0x38(%rbp),%eax : : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 0.00 : 40f8d8: 4c 8b 05 59 b4 25 00 mov 0x25b459(%rip),%r8 # 66ad38 0.00 : 40f8df: 48 8b 3d 4a b4 25 00 mov 0x25b44a(%rip),%rdi # 66ad30 : : if ( ! b->yy_ch_buf ) : YY_FATAL_ERROR( : "fatal error - scanner input buffer overflow" ); : : (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 0.00 : 40f8e6: 44 29 f8 sub %r15d,%eax 0.00 : 40f8e9: 48 98 cltq 0.00 : 40f8eb: 48 03 43 08 add 0x8(%rbx),%rax 0.00 : 40f8ef: 48 89 05 52 b4 25 00 mov %rax,0x25b452(%rip) # 66ad48 : : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 0.00 : 40f8f6: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; : : else : { : int num_to_read = : YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 0.00 : 40f8fa: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 40f8fd: f7 d1 not %ecx 0.00 : 40f8ff: 03 48 18 add 0x18(%rax),%ecx : : while ( num_to_read <= 0 ) 0.00 : 40f902: 85 c9 test %ecx,%ecx 0.00 : 40f904: 0f 8f fa 01 00 00 jg 40fb04 : { /* Not enough room in the buffer - grow it. */ : : /* just a shorter name for the current buffer */ : YY_BUFFER_STATE b = YY_CURRENT_BUFFER; 0.00 : 40f90a: 31 db xor %ebx,%ebx 0.00 : 40f90c: 48 85 ff test %rdi,%rdi 0.00 : 40f90f: 74 04 je 40f915 0.00 : 40f911: 4a 8b 1c c7 mov (%rdi,%r8,8),%rbx : : int yy_c_buf_p_offset = : (int) ((yy_c_buf_p) - b->yy_ch_buf); 0.00 : 40f915: 48 8b 15 2c b4 25 00 mov 0x25b42c(%rip),%rdx # 66ad48 0.00 : 40f91c: 48 89 55 c8 mov %rdx,-0x38(%rbp) : : if ( b->yy_is_our_buffer ) 0.00 : 40f920: 44 8b 43 24 mov 0x24(%rbx),%r8d : : /* just a shorter name for the current buffer */ : YY_BUFFER_STATE b = YY_CURRENT_BUFFER; : : int yy_c_buf_p_offset = : (int) ((yy_c_buf_p) - b->yy_ch_buf); 0.00 : 40f924: 4c 8b 7b 08 mov 0x8(%rbx),%r15 : : if ( b->yy_is_our_buffer ) 0.00 : 40f928: 45 85 c0 test %r8d,%r8d 0.00 : 40f92b: 0f 85 6f ff ff ff jne 40f8a0 : /* Include room in for 2 EOB chars. */ : yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); : } : else : /* Can't grow it, we don't own it. */ : b->yy_ch_buf = 0; 0.00 : 40f931: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 40f938: 00 : : if ( ! b->yy_ch_buf ) : YY_FATAL_ERROR( 0.00 : 40f939: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40f93d: bf 50 df 43 00 mov $0x43df50,%edi 0.00 : 40f942: e8 99 dd ff ff callq 40d6e0 0.00 : 40f947: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40f94b: eb 88 jmp 40f8d5 : : if ( ! yyin ) : yyin = stdin; : : if ( ! yyout ) : yyout = stdout; 0.00 : 40f94d: 48 8b 05 fc b0 25 00 mov 0x25b0fc(%rip),%rax # 66aa50 0.00 : 40f954: 48 89 05 c5 b3 25 00 mov %rax,0x25b3c5(%rip) # 66ad20 0.00 : 40f95b: e9 c3 e8 ff ff jmpq 40e223 : : if ( ! (yy_start) ) : (yy_start) = 1; /* first start state */ : : if ( ! yyin ) : yyin = stdin; 0.00 : 40f960: 48 8b 05 f9 b0 25 00 mov 0x25b0f9(%rip),%rax # 66aa60 0.00 : 40f967: 48 89 05 aa b3 25 00 mov %rax,0x25b3aa(%rip) # 66ad18 0.00 : 40f96e: e9 a2 e8 ff ff jmpq 40e215 : } : : : :\"{variable_char}+\" { : if (option_type == OT_NO_EVAL) : ECHO; 0.00 : 40f973: 8b 35 17 b7 25 00 mov 0x25b717(%rip),%esi # 66b090 0.00 : 40f979: 48 8b 3d 08 b7 25 00 mov 0x25b708(%rip),%rdi # 66b088 0.00 : 40f980: e8 db e4 ff ff callq 40de60 0.00 : 40f985: e9 bd ee ff ff jmpq 40e847 : ECHO; : } : {dolqdelim} { : if (strcmp(yytext, cur_state->dolqstart) == 0) : { : free(cur_state->dolqstart); 0.00 : 40f98a: 48 89 df mov %rbx,%rdi 0.00 : 40f98d: e8 ee 3c ff ff callq 403680 : cur_state->dolqstart = NULL; 0.00 : 40f992: 48 8b 05 c7 b3 25 00 mov 0x25b3c7(%rip),%rax # 66ad60 0.00 : 40f999: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 40f9a0: 00 : BEGIN(INITIAL); 0.00 : 40f9a1: c7 05 81 b3 25 00 01 movl $0x1,0x25b381(%rip) # 66ad2c 0.00 : 40f9a8: 00 00 00 0.00 : 40f9ab: e9 5f f8 ff ff jmpq 40f20f : } : : :{variable_char}+ { : /* Possible psql variable substitution */ : if (option_type == OT_NO_EVAL) : ECHO; 0.00 : 40f9b0: 8b 35 da b6 25 00 mov 0x25b6da(%rip),%esi # 66b090 0.00 : 40f9b6: 48 8b 3d cb b6 25 00 mov 0x25b6cb(%rip),%rdi # 66b088 0.00 : 40f9bd: e8 9e e4 ff ff callq 40de60 0.00 : 40f9c2: e9 21 ef ff ff jmpq 40e8e8 : unquoted_option_chars = 0; : } : : :'{variable_char}+' { : if (option_type == OT_NO_EVAL) : ECHO; 0.00 : 40f9c7: 8b 35 c3 b6 25 00 mov 0x25b6c3(%rip),%esi # 66b090 0.00 : 40f9cd: 48 8b 3d b4 b6 25 00 mov 0x25b6b4(%rip),%rdi # 66b088 0.00 : 40f9d4: e8 87 e4 ff ff callq 40de60 0.00 : 40f9d9: e9 96 ee ff ff jmpq 40e874 : } : : {xcstop} { : if (cur_state->xcdepth <= 0) : { : BEGIN(INITIAL); 0.00 : 40f9de: c7 05 44 b3 25 00 01 movl $0x1,0x25b344(%rip) # 66ad2c 0.00 : 40f9e5: 00 00 00 0.00 : 40f9e8: e9 4f fd ff ff jmpq 40f73c : register char *source = (yytext_ptr); : register int number_to_move, i; : int ret_val; : : if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) : YY_FATAL_ERROR( 0.00 : 40f9ed: bf 18 df 43 00 mov $0x43df18,%edi 0.00 : 40f9f2: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40f9f6: e8 e5 dc ff ff callq 40d6e0 0.00 : 40f9fb: 48 8b 3d 2e b3 25 00 mov 0x25b32e(%rip),%rdi # 66ad30 0.00 : 40fa02: 4c 8b 05 2f b3 25 00 mov 0x25b32f(%rip),%r8 # 66ad38 0.00 : 40fa09: 48 8b 15 38 b3 25 00 mov 0x25b338(%rip),%rdx # 66ad48 0.00 : 40fa10: 48 8b 0d 71 b6 25 00 mov 0x25b671(%rip),%rcx # 66b088 0.00 : 40fa17: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fa1b: e9 c4 ea ff ff jmpq 40e4e4 : : if ( ! yyout ) : yyout = stdout; : : if ( ! YY_CURRENT_BUFFER ) { : yyensure_buffer_stack (); 0.00 : 40fa20: e8 eb dc ff ff callq 40d710 : YY_CURRENT_BUFFER_LVALUE = 0.00 : 40fa25: 48 8b 1d 0c b3 25 00 mov 0x25b30c(%rip),%rbx # 66ad38 0.00 : 40fa2c: 48 8b 3d e5 b2 25 00 mov 0x25b2e5(%rip),%rdi # 66ad18 0.00 : 40fa33: be 00 40 00 00 mov $0x4000,%esi 0.00 : 40fa38: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 40fa3c: 48 03 1d ed b2 25 00 add 0x25b2ed(%rip),%rbx # 66ad30 0.00 : 40fa43: e8 b8 e2 ff ff callq 40dd00 0.00 : 40fa48: 48 89 03 mov %rax,(%rbx) 0.00 : 40fa4b: 48 8b 3d de b2 25 00 mov 0x25b2de(%rip),%rdi # 66ad30 0.00 : 40fa52: 4c 8b 05 df b2 25 00 mov 0x25b2df(%rip),%r8 # 66ad38 0.00 : 40fa59: e9 e7 e7 ff ff jmpq 40e245 : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 40fa5e: 44 8b 7d c4 mov -0x3c(%rbp),%r15d 0.00 : 40fa62: 41 83 ef 02 sub $0x2,%r15d 0.00 : 40fa66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 40fa6d: 00 00 00 : (yytext[nchars-1] == '+' || : yytext[nchars-1] == '-')) : { : int ic; : : for (ic = nchars-2; ic >= 0; ic--) 0.00 : 40fa70: 45 85 ff test %r15d,%r15d : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 40fa73: 44 89 fb mov %r15d,%ebx : (yytext[nchars-1] == '+' || : yytext[nchars-1] == '-')) : { : int ic; : : for (ic = nchars-2; ic >= 0; ic--) 0.00 : 40fa76: 78 29 js 40faa1 0.00 : 40fa78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 40fa7f: 00 : { : if (strchr("~!@#^&|`?%", yytext[ic])) 0.00 : 40fa80: 48 63 c3 movslq %ebx,%rax 0.00 : 40fa83: bf 4b dd 43 00 mov $0x43dd4b,%edi 0.00 : 40fa88: 41 0f be 74 05 00 movsbl 0x0(%r13,%rax,1),%esi 0.00 : 40fa8e: e8 bd 3e ff ff callq 403950 0.00 : 40fa93: 48 85 c0 test %rax,%rax 0.00 : 40fa96: 0f 85 b4 f1 ff ff jne 40ec50 : (yytext[nchars-1] == '+' || : yytext[nchars-1] == '-')) : { : int ic; : : for (ic = nchars-2; ic >= 0; ic--) 0.00 : 40fa9c: 83 eb 01 sub $0x1,%ebx 0.00 : 40fa9f: 79 df jns 40fa80 : if (strchr("~!@#^&|`?%", yytext[ic])) : break; : } : if (ic >= 0) : break; /* found a char that makes it OK */ : nchars--; /* else remove the +/-, and check again */ 0.00 : 40faa1: 83 6d c4 01 subl $0x1,-0x3c(%rbp) : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 40faa5: 83 7d c4 01 cmpl $0x1,-0x3c(%rbp) 0.00 : 40faa9: 0f 8e a1 f1 ff ff jle 40ec50 0.00 : 40faaf: 48 63 45 c4 movslq -0x3c(%rbp),%rax 0.00 : 40fab3: 41 83 ef 01 sub $0x1,%r15d 0.00 : 40fab7: 41 0f b6 44 05 ff movzbl -0x1(%r13,%rax,1),%eax 0.00 : 40fabd: 3c 2b cmp $0x2b,%al 0.00 : 40fabf: 74 af je 40fa70 0.00 : 40fac1: 3c 2d cmp $0x2d,%al 0.00 : 40fac3: 0f 85 87 f1 ff ff jne 40ec50 0.00 : 40fac9: eb a5 jmp 40fa70 : if ( b->yy_is_our_buffer ) : { : int new_size = b->yy_buf_size * 2; : : if ( new_size <= 0 ) : b->yy_buf_size += b->yy_buf_size / 8; 0.00 : 40facb: 48 89 d0 mov %rdx,%rax 0.00 : 40face: 48 c1 e8 03 shr $0x3,%rax 0.00 : 40fad2: 48 01 d0 add %rdx,%rax 0.00 : 40fad5: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 40fad9: e9 d6 fd ff ff jmpq 40f8b4 : { : /* It is a variable, check for recursion */ : if (var_is_current_source(cur_state, varname)) : { : /* Recursive expansion --- don't go there */ : psql_error("skipping recursive expansion of variable \"%s\"\n", 0.00 : 40fade: 4c 89 e6 mov %r12,%rsi 0.00 : 40fae1: bf e8 de 43 00 mov $0x43dee8,%edi 0.00 : 40fae6: 31 c0 xor %eax,%eax 0.00 : 40fae8: e8 33 93 ff ff callq 408e20 : varname); : /* Instead copy the string as is */ : ECHO; 0.00 : 40faed: 8b 35 9d b5 25 00 mov 0x25b59d(%rip),%esi # 66b090 0.00 : 40faf3: 48 8b 3d 8e b5 25 00 mov 0x25b58e(%rip),%rdi # 66b088 0.00 : 40fafa: e8 61 e3 ff ff callq 40de60 0.00 : 40faff: e9 86 f3 ff ff jmpq 40ee8a : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - : number_to_move - 1; : : } : : if ( num_to_read > YY_READ_BUF_SIZE ) 0.00 : 40fb04: 81 f9 01 20 00 00 cmp $0x2001,%ecx 0.00 : 40fb0a: 48 63 c1 movslq %ecx,%rax 0.00 : 40fb0d: 49 0f 4d c1 cmovge %r9,%rax 0.00 : 40fb11: 48 89 45 b8 mov %rax,-0x48(%rbp) : num_to_read = YY_READ_BUF_SIZE; : : /* Read in more data. */ : YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 0.00 : 40fb15: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40fb19: 8b 78 28 mov 0x28(%rax),%edi 0.00 : 40fb1c: 85 ff test %edi,%edi 0.00 : 40fb1e: 0f 84 a3 03 00 00 je 40fec7 0.00 : 40fb24: 48 63 45 b4 movslq -0x4c(%rbp),%rax 0.00 : 40fb28: 31 db xor %ebx,%ebx 0.00 : 40fb2a: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 40fb2e: 49 89 c7 mov %rax,%r15 0.00 : 40fb31: eb 3a jmp 40fb6d 0.00 : 40fb33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 40fb38: 83 f8 0a cmp $0xa,%eax 0.00 : 40fb3b: 0f 84 7a 04 00 00 je 40ffbb 0.00 : 40fb41: 48 8b 15 e8 b1 25 00 mov 0x25b1e8(%rip),%rdx # 66ad30 0.00 : 40fb48: 48 8b 05 e9 b1 25 00 mov 0x25b1e9(%rip),%rax # 66ad38 0.00 : 40fb4f: 48 83 c3 01 add $0x1,%rbx 0.00 : 40fb53: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 40fb57: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 40fb5b: 42 88 0c 38 mov %cl,(%rax,%r15,1) 0.00 : 40fb5f: 49 83 c7 01 add $0x1,%r15 0.00 : 40fb63: 48 39 5d b8 cmp %rbx,-0x48(%rbp) 0.00 : 40fb67: 0f 86 47 04 00 00 jbe 40ffb4 0.00 : 40fb6d: 48 8b 3d a4 b1 25 00 mov 0x25b1a4(%rip),%rdi # 66ad18 0.00 : 40fb74: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40fb78: e8 c3 41 ff ff callq 403d40 <_IO_getc@plt> 0.00 : 40fb7d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 40fb80: 89 c1 mov %eax,%ecx 0.00 : 40fb82: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fb86: 75 b0 jne 40fb38 0.00 : 40fb88: 48 8b 3d 89 b1 25 00 mov 0x25b189(%rip),%rdi # 66ad18 0.00 : 40fb8f: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40fb93: e8 98 3b ff ff callq 403730 0.00 : 40fb98: 85 c0 test %eax,%eax 0.00 : 40fb9a: 89 da mov %ebx,%edx 0.00 : 40fb9c: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fba0: 0f 85 3f 04 00 00 jne 40ffe5 0.00 : 40fba6: 89 15 ac b1 25 00 mov %edx,0x25b1ac(%rip) # 66ad58 : (yy_n_chars), (size_t) num_to_read ); : : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 0.00 : 40fbac: 48 8b 05 85 b1 25 00 mov 0x25b185(%rip),%rax # 66ad38 0.00 : 40fbb3: 48 8b 15 76 b1 25 00 mov 0x25b176(%rip),%rdx # 66ad30 0.00 : 40fbba: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 40fbbe: 8b 05 94 b1 25 00 mov 0x25b194(%rip),%eax # 66ad58 0.00 : 40fbc4: 89 42 20 mov %eax,0x20(%rdx) : } : : if ( (yy_n_chars) == 0 ) 0.00 : 40fbc7: 8b 35 8b b1 25 00 mov 0x25b18b(%rip),%esi # 66ad58 0.00 : 40fbcd: 45 31 ff xor %r15d,%r15d 0.00 : 40fbd0: 85 f6 test %esi,%esi 0.00 : 40fbd2: 75 2a jne 40fbfe : { : if ( number_to_move == YY_MORE_ADJ ) 0.00 : 40fbd4: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 40fbd7: 85 c9 test %ecx,%ecx 0.00 : 40fbd9: 0f 84 b6 03 00 00 je 40ff95 : } : : else : { : ret_val = EOB_ACT_LAST_MATCH; : YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 0.00 : 40fbdf: 48 8b 05 4a b1 25 00 mov 0x25b14a(%rip),%rax # 66ad30 0.00 : 40fbe6: 48 8b 15 4b b1 25 00 mov 0x25b14b(%rip),%rdx # 66ad38 0.00 : 40fbed: 41 bf 02 00 00 00 mov $0x2,%r15d 0.00 : 40fbf3: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 40fbf7: c7 40 3c 02 00 00 00 movl $0x2,0x3c(%rax) : } : : else : ret_val = EOB_ACT_CONTINUE_SCAN; : : if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 0.00 : 40fbfe: 4c 8b 05 33 b1 25 00 mov 0x25b133(%rip),%r8 # 66ad38 0.00 : 40fc05: 48 8b 3d 24 b1 25 00 mov 0x25b124(%rip),%rdi # 66ad30 0.00 : 40fc0c: 8b 15 46 b1 25 00 mov 0x25b146(%rip),%edx # 66ad58 0.00 : 40fc12: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 40fc15: 4a 8b 1c c7 mov (%rdi,%r8,8),%rbx 0.00 : 40fc19: 01 d1 add %edx,%ecx 0.00 : 40fc1b: 48 63 c1 movslq %ecx,%rax 0.00 : 40fc1e: 48 3b 43 18 cmp 0x18(%rbx),%rax 0.00 : 40fc22: 0f 87 12 02 00 00 ja 40fe3a : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) : YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); : } : : (yy_n_chars) += number_to_move; 0.00 : 40fc28: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 40fc2b: 03 05 27 b1 25 00 add 0x25b127(%rip),%eax # 66ad58 : yy_cp = (yy_c_buf_p); : goto yy_find_action; : } : } : : else switch ( yy_get_next_buffer( ) ) 0.00 : 40fc31: 41 83 ff 01 cmp $0x1,%r15d : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) : YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); : } : : (yy_n_chars) += number_to_move; 0.00 : 40fc35: 89 05 1d b1 25 00 mov %eax,0x25b11d(%rip) # 66ad58 : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 0.00 : 40fc3b: 4a 8b 14 c7 mov (%rdi,%r8,8),%rdx 0.00 : 40fc3f: 48 98 cltq 0.00 : 40fc41: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 40fc45: c6 04 02 00 movb $0x0,(%rdx,%rax,1) : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 0.00 : 40fc49: 48 8b 15 e0 b0 25 00 mov 0x25b0e0(%rip),%rdx # 66ad30 0.00 : 40fc50: 48 8b 05 e1 b0 25 00 mov 0x25b0e1(%rip),%rax # 66ad38 0.00 : 40fc57: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 40fc5b: 48 63 15 f6 b0 25 00 movslq 0x25b0f6(%rip),%rdx # 66ad58 0.00 : 40fc62: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 40fc66: c6 44 10 01 00 movb $0x0,0x1(%rax,%rdx,1) : : (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 0.00 : 40fc6b: 4c 8b 05 c6 b0 25 00 mov 0x25b0c6(%rip),%r8 # 66ad38 0.00 : 40fc72: 48 8b 3d b7 b0 25 00 mov 0x25b0b7(%rip),%rdi # 66ad30 0.00 : 40fc79: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40fc7d: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 40fc81: 48 89 0d 00 b4 25 00 mov %rcx,0x25b400(%rip) # 66b088 : yy_cp = (yy_c_buf_p); : goto yy_find_action; : } : } : : else switch ( yy_get_next_buffer( ) ) 0.00 : 40fc88: 74 7a je 40fd04 0.00 : 40fc8a: 41 83 ff 02 cmp $0x2,%r15d 0.00 : 40fc8e: 0f 84 6e e8 ff ff je 40e502 0.00 : 40fc94: 45 85 ff test %r15d,%r15d 0.00 : 40fc97: 0f 85 e3 e5 ff ff jne 40e280 : } : break; : } : : case EOB_ACT_CONTINUE_SCAN: : (yy_c_buf_p) = 0.00 : 40fc9d: 48 63 45 b0 movslq -0x50(%rbp),%rax : static yy_state_type yy_get_previous_state (void) : { : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); 0.00 : 40fca1: 8b 15 85 b0 25 00 mov 0x25b085(%rip),%edx # 66ad2c : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fca7: 49 89 ce mov %rcx,%r14 : } : break; : } : : case EOB_ACT_CONTINUE_SCAN: : (yy_c_buf_p) = 0.00 : 40fcaa: 4c 8d 24 01 lea (%rcx,%rax,1),%r12 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fcae: 49 39 cc cmp %rcx,%r12 : } : break; : } : : case EOB_ACT_CONTINUE_SCAN: : (yy_c_buf_p) = 0.00 : 40fcb1: 4c 89 25 90 b0 25 00 mov %r12,0x25b090(%rip) # 66ad48 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fcb8: 0f 86 0c e6 ff ff jbe 40e2ca 0.00 : 40fcbe: 48 89 ce mov %rcx,%rsi : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40fcc1: 0f b6 06 movzbl (%rsi),%eax 0.00 : 40fcc4: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 40fcc9: 84 c0 test %al,%al 0.00 : 40fccb: 74 0a je 40fcd7 0.00 : 40fccd: 0f b6 c0 movzbl %al,%eax 0.00 : 40fcd0: 8b 0c 85 e0 e5 43 00 mov 0x43e5e0(,%rax,4),%ecx 0.00 : 40fcd7: 48 63 d2 movslq %edx,%rdx 0.00 : 40fcda: 48 63 c1 movslq %ecx,%rax : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fcdd: 48 83 c6 01 add $0x1,%rsi : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40fce1: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 40fce5: 48 89 d1 mov %rdx,%rcx 0.00 : 40fce8: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 40fcec: 48 29 d1 sub %rdx,%rcx 0.00 : 40fcef: 48 01 c1 add %rax,%rcx : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fcf2: 49 39 f4 cmp %rsi,%r12 : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40fcf5: 0f bf 94 09 e0 e9 43 movswl 0x43e9e0(%rcx,%rcx,1),%edx 0.00 : 40fcfc: 00 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fcfd: 77 c2 ja 40fcc1 0.00 : 40fcff: e9 c6 e5 ff ff jmpq 40e2ca : * YY_NULL, it'll still work - another : * YY_NULL will get returned. : */ : (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; : : yy_act = YY_STATE_EOF(YY_START); 0.00 : 40fd04: 8b 15 22 b0 25 00 mov 0x25b022(%rip),%edx # 66ad2c : : else switch ( yy_get_next_buffer( ) ) : { : case EOB_ACT_END_OF_FILE: : { : (yy_did_buffer_switch_on_eof) = 0; 0.00 : 40fd0a: c7 05 48 b0 25 00 00 movl $0x0,0x25b048(%rip) # 66ad5c 0.00 : 40fd11: 00 00 00 : * hoser (like flex itself) wants to : * call the scanner after we return the : * YY_NULL, it'll still work - another : * YY_NULL will get returned. : */ : (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 0.00 : 40fd14: 48 89 0d 2d b0 25 00 mov %rcx,0x25b02d(%rip) # 66ad48 : : yy_act = YY_STATE_EOF(YY_START); 0.00 : 40fd1b: 83 ea 01 sub $0x1,%edx 0.00 : 40fd1e: 89 d0 mov %edx,%eax 0.00 : 40fd20: c1 e8 1f shr $0x1f,%eax 0.00 : 40fd23: 01 d0 add %edx,%eax 0.00 : 40fd25: d1 f8 sar %eax 0.00 : 40fd27: 8d 50 75 lea 0x75(%rax),%edx : goto do_action; 0.00 : 40fd2a: e9 ed e5 ff ff jmpq 40e31c : : "|" { : if (option_type == OT_FILEPIPE) : { : /* treat like whole-string case */ : ECHO; 0.00 : 40fd2f: 8b 35 5b b3 25 00 mov 0x25b35b(%rip),%esi # 66b090 0.00 : 40fd35: 48 8b 3d 4c b3 25 00 mov 0x25b34c(%rip),%rdi # 66b088 0.00 : 40fd3c: e8 1f e1 ff ff callq 40de60 : BEGIN(xslashwholeline); 0.00 : 40fd41: c7 05 e1 af 25 00 25 movl $0x25,0x25afe1(%rip) # 66ad2c 0.00 : 40fd48: 00 00 00 0.00 : 40fd4b: e9 30 e5 ff ff jmpq 40e280 : cur_state->curline = stackelem->bufstring; : cur_state->refline = stackelem->origstring ? stackelem->origstring : stackelem->bufstring; : } : else : { : yy_switch_to_buffer(cur_state->scanbufhandle); 0.00 : 40fd50: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 40fd54: e8 67 db ff ff callq 40d8c0 : cur_state->curline = cur_state->scanbuf; 0.00 : 40fd59: 48 8b 15 00 b0 25 00 mov 0x25b000(%rip),%rdx # 66ad60 0.00 : 40fd60: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 40fd64: 48 89 42 28 mov %rax,0x28(%rdx) : cur_state->refline = cur_state->scanline; 0.00 : 40fd68: 48 8b 15 f1 af 25 00 mov 0x25aff1(%rip),%rdx # 66ad60 0.00 : 40fd6f: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 40fd73: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 40fd77: e9 04 e5 ff ff jmpq 40e280 : { : /* if both appear, take the first one */ : if (slashstar > dashdash) : slashstar = dashdash; : } : else if (!slashstar) 0.00 : 40fd7c: 48 89 c3 mov %rax,%rbx 0.00 : 40fd7f: e9 94 ee ff ff jmpq 40ec18 : { : /* : * if the variable doesn't exist we'll copy the : * string as is : */ : ECHO; 0.00 : 40fd84: 8b 35 06 b3 25 00 mov 0x25b306(%rip),%esi # 66b090 0.00 : 40fd8a: 48 8b 3d f7 b2 25 00 mov 0x25b2f7(%rip),%rdi # 66b088 0.00 : 40fd91: e8 ca e0 ff ff callq 40de60 0.00 : 40fd96: e9 ef f0 ff ff jmpq 40ee8a : */ : : <> { : StackElem *stackelem = cur_state->buffer_stack; : : if (stackelem == NULL) 0.00 : 40fd9b: 31 c0 xor %eax,%eax 0.00 : 40fd9d: e9 dc e5 ff ff jmpq 40e37e : */ : if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) : { /* This was really a NUL. */ : yy_state_type yy_next_state; : : (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 0.00 : 40fda2: 4c 63 65 b0 movslq -0x50(%rbp),%r12 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fda6: 4c 8b 35 db b2 25 00 mov 0x25b2db(%rip),%r14 # 66b088 : */ : if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) : { /* This was really a NUL. */ : yy_state_type yy_next_state; : : (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 0.00 : 40fdad: 4c 03 25 d4 b2 25 00 add 0x25b2d4(%rip),%r12 # 66b088 : static yy_state_type yy_get_previous_state (void) : { : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); 0.00 : 40fdb4: 8b 15 72 af 25 00 mov 0x25af72(%rip),%edx # 66ad2c : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fdba: 4d 39 f4 cmp %r14,%r12 : */ : if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) : { /* This was really a NUL. */ : yy_state_type yy_next_state; : : (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 0.00 : 40fdbd: 4c 89 25 84 af 25 00 mov %r12,0x25af84(%rip) # 66ad48 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fdc4: 76 41 jbe 40fe07 0.00 : 40fdc6: 4c 89 f6 mov %r14,%rsi : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40fdc9: 0f b6 06 movzbl (%rsi),%eax 0.00 : 40fdcc: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 40fdd1: 84 c0 test %al,%al 0.00 : 40fdd3: 74 0a je 40fddf 0.00 : 40fdd5: 0f b6 c0 movzbl %al,%eax 0.00 : 40fdd8: 8b 0c 85 e0 e5 43 00 mov 0x43e5e0(,%rax,4),%ecx 0.00 : 40fddf: 48 63 d2 movslq %edx,%rdx 0.00 : 40fde2: 48 63 c1 movslq %ecx,%rax : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fde5: 48 83 c6 01 add $0x1,%rsi : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40fde9: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : 40fded: 48 89 d1 mov %rdx,%rcx 0.00 : 40fdf0: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 40fdf4: 48 29 d1 sub %rdx,%rcx 0.00 : 40fdf7: 48 01 c1 add %rax,%rcx : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fdfa: 49 39 f4 cmp %rsi,%r12 : { : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 0.00 : 40fdfd: 0f bf 94 09 e0 e9 43 movswl 0x43e9e0(%rcx,%rcx,1),%edx 0.00 : 40fe04: 00 : register yy_state_type yy_current_state; : register char *yy_cp; : : yy_current_state = (yy_start); : : for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 0.00 : 40fe05: 77 c2 ja 40fdc9 : */ : static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) : { : register int yy_is_jam; : : yy_current_state = yy_nxt[yy_current_state][1]; 0.00 : 40fe07: 48 63 ca movslq %edx,%rcx 0.00 : 40fe0a: 48 8d 14 49 lea (%rcx,%rcx,2),%rdx 0.00 : 40fe0e: 48 89 d0 mov %rdx,%rax 0.00 : 40fe11: 48 c1 e0 04 shl $0x4,%rax 0.00 : 40fe15: 48 29 d0 sub %rdx,%rax 0.00 : 40fe18: 0f bf 84 00 e2 e9 43 movswl 0x43e9e2(%rax,%rax,1),%eax 0.00 : 40fe1f: 00 : yy_is_jam = (yy_current_state <= 0); : : return yy_is_jam ? 0 : yy_current_state; 0.00 : 40fe20: 85 c0 test %eax,%eax 0.00 : 40fe22: 0f 8e bb e4 ff ff jle 40e2e3 : yy_bp = (yytext_ptr) + YY_MORE_ADJ; : : if ( yy_next_state ) : { : /* Consume the NUL. */ : yy_cp = ++(yy_c_buf_p); 0.00 : 40fe28: 49 83 c4 01 add $0x1,%r12 0.00 : 40fe2c: 89 c2 mov %eax,%edx 0.00 : 40fe2e: 4c 89 25 13 af 25 00 mov %r12,0x25af13(%rip) # 66ad48 : yy_current_state = yy_next_state; : goto yy_match; 0.00 : 40fe35: e9 90 e4 ff ff jmpq 40e2ca : * that use void* generic pointers. It works with the latter : * because both ANSI C and C++ allow castless assignment from : * any pointer type to void*, and deal with argument conversions : * as though doing an assignment. : */ : return (void *) realloc( (char *) ptr, size ); 0.00 : 40fe3a: d1 fa sar %edx 0.00 : 40fe3c: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 40fe40: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40fe44: 8d 34 11 lea (%rcx,%rdx,1),%esi 0.00 : 40fe47: 48 63 f6 movslq %esi,%rsi 0.00 : 40fe4a: e8 61 3f ff ff callq 403db0 : ret_val = EOB_ACT_CONTINUE_SCAN; : : if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { : /* Extend the array by 50%, plus the number we really need. */ : yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); 0.00 : 40fe4f: 48 89 43 08 mov %rax,0x8(%rbx) : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 0.00 : 40fe53: 4c 8b 05 de ae 25 00 mov 0x25aede(%rip),%r8 # 66ad38 0.00 : 40fe5a: 48 8b 3d cf ae 25 00 mov 0x25aecf(%rip),%rdi # 66ad30 0.00 : 40fe61: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fe65: 4a 8b 04 c7 mov (%rdi,%r8,8),%rax 0.00 : 40fe69: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 40fe6e: 0f 85 b4 fd ff ff jne 40fc28 : YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 0.00 : 40fe74: bf 80 df 43 00 mov $0x43df80,%edi 0.00 : 40fe79: e8 62 d8 ff ff callq 40d6e0 0.00 : 40fe7e: 48 8b 3d ab ae 25 00 mov 0x25aeab(%rip),%rdi # 66ad30 0.00 : 40fe85: 4c 8b 05 ac ae 25 00 mov 0x25aeac(%rip),%r8 # 66ad38 0.00 : 40fe8c: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fe90: e9 93 fd ff ff jmpq 40fc28 : : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) : /* don't do the read, it's not guaranteed to return an EOF, : * just force an EOF : */ : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 0.00 : 40fe95: c7 05 b9 ae 25 00 00 movl $0x0,0x25aeb9(%rip) # 66ad58 0.00 : 40fe9c: 00 00 00 0.00 : 40fe9f: c7 40 20 00 00 00 00 movl $0x0,0x20(%rax) 0.00 : 40fea6: e9 1c fd ff ff jmpq 40fbc7 : cur_state->refline = stackelem->bufstring; : } : else : { : stackelem->origstring = pg_strdup(newstr); : cur_state->refline = stackelem->origstring; 0.00 : 40feab: 4c 89 ef mov %r13,%rdi 0.00 : 40feae: e8 ad 3f 02 00 callq 433e60 0.00 : 40feb3: 48 89 43 10 mov %rax,0x10(%rbx) : } 0.00 : 40feb7: 48 8b 15 a2 ae 25 00 mov 0x25aea2(%rip),%rdx # 66ad60 0.00 : 40febe: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 40fec2: e9 ab ef ff ff jmpq 40ee72 : : if ( num_to_read > YY_READ_BUF_SIZE ) : num_to_read = YY_READ_BUF_SIZE; : : /* Read in more data. */ : YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 0.00 : 40fec7: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40fecb: e8 e0 37 ff ff callq 4036b0 <__errno_location@plt> 0.00 : 40fed0: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : 40fed6: 48 89 c3 mov %rax,%rbx 0.00 : 40fed9: 4c 63 7d b4 movslq -0x4c(%rbp),%r15 0.00 : 40fedd: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fee1: eb 1a jmp 40fefd 0.00 : 40fee3: c7 03 00 00 00 00 movl $0x0,(%rbx) 0.00 : 40fee9: 48 8b 3d 28 ae 25 00 mov 0x25ae28(%rip),%rdi # 66ad18 0.00 : 40fef0: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40fef4: e8 37 3d ff ff callq 403c30 0.00 : 40fef9: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fefd: 48 8b 15 2c ae 25 00 mov 0x25ae2c(%rip),%rdx # 66ad30 0.00 : 40ff04: 48 8b 05 2d ae 25 00 mov 0x25ae2d(%rip),%rax # 66ad38 0.00 : 40ff0b: 4c 89 ff mov %r15,%rdi 0.00 : 40ff0e: 48 8b 0d 03 ae 25 00 mov 0x25ae03(%rip),%rcx # 66ad18 0.00 : 40ff15: be 01 00 00 00 mov $0x1,%esi 0.00 : 40ff1a: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 40ff1e: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 40ff22: 48 03 78 08 add 0x8(%rax),%rdi 0.00 : 40ff26: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40ff2a: e8 51 38 ff ff callq 403780 0.00 : 40ff2f: 85 c0 test %eax,%eax 0.00 : 40ff31: 89 05 21 ae 25 00 mov %eax,0x25ae21(%rip) # 66ad58 0.00 : 40ff37: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40ff3b: 0f 85 6b fc ff ff jne 40fbac 0.00 : 40ff41: 48 8b 3d d0 ad 25 00 mov 0x25add0(%rip),%rdi # 66ad18 0.00 : 40ff48: e8 e3 37 ff ff callq 403730 0.00 : 40ff4d: 85 c0 test %eax,%eax 0.00 : 40ff4f: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40ff53: 0f 84 53 fc ff ff je 40fbac 0.00 : 40ff59: 83 3b 04 cmpl $0x4,(%rbx) 0.00 : 40ff5c: 74 85 je 40fee3 0.00 : 40ff5e: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40ff62: bf 6a dd 43 00 mov $0x43dd6a,%edi 0.00 : 40ff67: e8 74 d7 ff ff callq 40d6e0 0.00 : 40ff6c: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40ff70: e9 37 fc ff ff jmpq 40fbac : * Note that we needn't guard against recursion here. : */ : if (value) : appendPQExpBufferStr(output_buf, value); : else : ECHO; 0.00 : 40ff75: 8b 35 15 b1 25 00 mov 0x25b115(%rip),%esi # 66b090 0.00 : 40ff7b: 48 8b 3d 06 b1 25 00 mov 0x25b106(%rip),%rdi # 66b088 0.00 : 40ff82: e8 d9 de ff ff callq 40de60 0.00 : 40ff87: e9 52 e9 ff ff jmpq 40e8de : stackelem = cur_state->buffer_stack; : if (stackelem != NULL) : { : yy_switch_to_buffer(stackelem->buf); : cur_state->curline = stackelem->bufstring; : cur_state->refline = stackelem->origstring ? stackelem->origstring : stackelem->bufstring; 0.00 : 40ff8c: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 40ff90: e9 98 e4 ff ff jmpq 40e42d : if ( (yy_n_chars) == 0 ) : { : if ( number_to_move == YY_MORE_ADJ ) : { : ret_val = EOB_ACT_END_OF_FILE; : yyrestart(yyin ); 0.00 : 40ff95: 48 8b 3d 7c ad 25 00 mov 0x25ad7c(%rip),%rdi # 66ad18 0.00 : 40ff9c: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40ffa0: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 40ffa6: e8 e5 dd ff ff callq 40dd90 0.00 : 40ffab: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40ffaf: e9 4a fc ff ff jmpq 40fbfe : : if ( num_to_read > YY_READ_BUF_SIZE ) : num_to_read = YY_READ_BUF_SIZE; : : /* Read in more data. */ : YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 0.00 : 40ffb4: 89 da mov %ebx,%edx 0.00 : 40ffb6: e9 eb fb ff ff jmpq 40fba6 0.00 : 40ffbb: 48 8b 15 76 ad 25 00 mov 0x25ad76(%rip),%rdx # 66ad38 0.00 : 40ffc2: 48 8b 05 67 ad 25 00 mov 0x25ad67(%rip),%rax # 66ad30 0.00 : 40ffc9: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 40ffcd: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 40ffd1: 48 01 55 d0 add %rdx,-0x30(%rbp) 0.00 : 40ffd5: 8d 53 01 lea 0x1(%rbx),%edx 0.00 : 40ffd8: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 40ffdc: c6 04 18 0a movb $0xa,(%rax,%rbx,1) 0.00 : 40ffe0: e9 c1 fb ff ff jmpq 40fba6 0.00 : 40ffe5: 4c 89 4d a0 mov %r9,-0x60(%rbp) 0.00 : 40ffe9: bf 6a dd 43 00 mov $0x43dd6a,%edi 0.00 : 40ffee: e8 ed d6 ff ff callq 40d6e0 0.00 : 40fff3: 89 da mov %ebx,%edx 0.00 : 40fff5: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 40fff9: e9 a8 fb ff ff jmpq 40fba6 Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/mainloop.c:380 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004104f0 : : * This loop is re-entrant. May be called by \i command : * which reads input from a file. : */ : int : MainLoop(FILE *source) : { 0.00 : 4104f0: 55 push %rbp 0.00 : 4104f1: 48 89 e5 mov %rsp,%rbp 0.00 : 4104f4: 41 57 push %r15 0.00 : 4104f6: 41 56 push %r14 0.00 : 4104f8: 41 55 push %r13 0.00 : 4104fa: 41 54 push %r12 0.00 : 4104fc: 53 push %rbx 0.00 : 4104fd: 48 83 ec 68 sub $0x68,%rsp : FILE *prev_cmd_source; : bool prev_cmd_interactive; : uint64 prev_lineno; : : /* Save old settings */ : prev_cmd_source = pset.cur_cmd_source; 0.00 : 410501: 48 8b 05 78 ac 25 00 mov 0x25ac78(%rip),%rax # 66b180 : prev_cmd_interactive = pset.cur_cmd_interactive; 0.00 : 410508: 0f b6 15 79 ac 25 00 movzbl 0x25ac79(%rip),%edx # 66b188 : * yet saved to readline history */ : char *line; /* current line of input */ : int added_nl_pos; : bool success; : bool line_saved_in_history; : volatile int successResult = EXIT_SUCCESS; 0.00 : 41050f: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%rbp) : * This loop is re-entrant. May be called by \i command : * which reads input from a file. : */ : int : MainLoop(FILE *source) : { 0.00 : 410516: 48 89 bd 70 ff ff ff mov %rdi,-0x90(%rbp) : char *line; /* current line of input */ : int added_nl_pos; : bool success; : bool line_saved_in_history; : volatile int successResult = EXIT_SUCCESS; : volatile backslashResult slashCmdStatus = PSQL_CMD_UNKNOWN; 0.00 : 41051d: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : prev_cmd_source = pset.cur_cmd_source; : prev_cmd_interactive = pset.cur_cmd_interactive; : prev_lineno = pset.lineno; : : /* Establish new source */ : pset.cur_cmd_source = source; 0.00 : 410524: 48 89 3d 55 ac 25 00 mov %rdi,0x25ac55(%rip) # 66b180 : FILE *prev_cmd_source; : bool prev_cmd_interactive; : uint64 prev_lineno; : : /* Save old settings */ : prev_cmd_source = pset.cur_cmd_source; 0.00 : 41052b: 48 89 45 90 mov %rax,-0x70(%rbp) : prev_cmd_interactive = pset.cur_cmd_interactive; : prev_lineno = pset.lineno; 0.00 : 41052f: 48 8b 05 6a ac 25 00 mov 0x25ac6a(%rip),%rax # 66b1a0 : int added_nl_pos; : bool success; : bool line_saved_in_history; : volatile int successResult = EXIT_SUCCESS; : volatile backslashResult slashCmdStatus = PSQL_CMD_UNKNOWN; : volatile promptStatus_t prompt_status = PROMPT_READY; 0.00 : 410536: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : bool prev_cmd_interactive; : uint64 prev_lineno; : : /* Save old settings */ : prev_cmd_source = pset.cur_cmd_source; : prev_cmd_interactive = pset.cur_cmd_interactive; 0.00 : 41053d: 88 55 9f mov %dl,-0x61(%rbp) : bool success; : bool line_saved_in_history; : volatile int successResult = EXIT_SUCCESS; : volatile backslashResult slashCmdStatus = PSQL_CMD_UNKNOWN; : volatile promptStatus_t prompt_status = PROMPT_READY; : volatile int count_eof = 0; 0.00 : 410540: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : volatile bool die_on_error = false; 0.00 : 410547: c6 45 d7 00 movb $0x0,-0x29(%rbp) : uint64 prev_lineno; : : /* Save old settings */ : prev_cmd_source = pset.cur_cmd_source; : prev_cmd_interactive = pset.cur_cmd_interactive; : prev_lineno = pset.lineno; 0.00 : 41054b: 48 89 45 a0 mov %rax,-0x60(%rbp) : : /* Establish new source */ : pset.cur_cmd_source = source; : pset.cur_cmd_interactive = ((source == stdin) && !pset.notty); 0.00 : 41054f: 31 c0 xor %eax,%eax 0.00 : 410551: 48 3b 3d 08 a5 25 00 cmp 0x25a508(%rip),%rdi # 66aa60 0.00 : 410558: 0f 84 66 05 00 00 je 410ac4 0.00 : 41055e: 88 05 24 ac 25 00 mov %al,0x25ac24(%rip) # 66b188 : pset.lineno = 0; 0.00 : 410564: 48 c7 05 31 ac 25 00 movq $0x0,0x25ac31(%rip) # 66b1a0 0.00 : 41056b: 00 00 00 00 : pset.stmt_lineno = 1; 0.00 : 41056f: 48 c7 05 2e ac 25 00 movq $0x1,0x25ac2e(%rip) # 66b1a8 0.00 : 410576: 01 00 00 00 : : /* Create working state */ : scan_state = psql_scan_create(); 0.00 : 41057a: e8 11 d1 ff ff callq 40d690 0.00 : 41057f: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : : query_buf = createPQExpBuffer(); 0.00 : 410586: e8 b5 3a ff ff callq 404040 0.00 : 41058b: 48 89 45 b8 mov %rax,-0x48(%rbp) : previous_buf = createPQExpBuffer(); 0.00 : 41058f: e8 ac 3a ff ff callq 404040 0.00 : 410594: 48 89 45 b0 mov %rax,-0x50(%rbp) : history_buf = createPQExpBuffer(); 0.00 : 410598: e8 a3 3a ff ff callq 404040 0.00 : 41059d: 48 89 45 80 mov %rax,-0x80(%rbp) : if (PQExpBufferBroken(query_buf) || 0.00 : 4105a1: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4105a5: 48 85 c0 test %rax,%rax 0.00 : 4105a8: 0f 84 62 02 00 00 je 410810 0.00 : 4105ae: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4105b2: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 4105b7: 0f 84 53 02 00 00 je 410810 0.00 : 4105bd: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 4105c1: 48 85 c0 test %rax,%rax 0.00 : 4105c4: 0f 84 46 02 00 00 je 410810 0.00 : 4105ca: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 4105ce: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 4105d3: 0f 84 37 02 00 00 je 410810 0.00 : 4105d9: 48 83 7d 80 00 cmpq $0x0,-0x80(%rbp) 0.00 : 4105de: 0f 84 2c 02 00 00 je 410810 0.00 : 4105e4: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4105e8: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 4105ed: 0f 84 1d 02 00 00 je 410810 0.00 : 4105f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : psql_error("out of memory\n"); : exit(EXIT_FAILURE); : } : : /* main loop to get queries and execute them */ : while (successResult == EXIT_SUCCESS) 0.00 : 4105f8: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 4105fb: 85 c0 test %eax,%eax 0.00 : 4105fd: 0f 85 d5 06 00 00 jne 410cd8 : { : /* : * Clean up after a previous Control-C : */ : if (cancel_pressed) 0.00 : 410603: 0f b6 05 b6 a8 25 00 movzbl 0x25a8b6(%rip),%eax # 66aec0 0.00 : 41060a: 84 c0 test %al,%al 0.00 : 41060c: 74 15 je 410623 : { : if (!pset.cur_cmd_interactive) 0.00 : 41060e: ba 88 b1 66 00 mov $0x66b188,%edx 0.00 : 410613: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 410616: 0f 84 61 07 00 00 je 410d7d : */ : successResult = EXIT_USER; : break; : } : : cancel_pressed = false; 0.00 : 41061c: c6 05 9d a8 25 00 00 movb $0x0,0x25a89d(%rip) # 66aec0 : /* : * Establish longjmp destination for exiting from wait-for-input. We : * must re-do this each time through the loop for safety, since the : * jmpbuf might get changed during command execution. : */ : if (sigsetjmp(sigint_interrupt_jmp, 1) != 0) 0.00 : 410623: be 01 00 00 00 mov $0x1,%esi 0.00 : 410628: bf c0 af 66 00 mov $0x66afc0,%edi 0.00 : 41062d: e8 ee 39 ff ff callq 404020 <__sigsetjmp@plt> 0.00 : 410632: 85 c0 test %eax,%eax 0.00 : 410634: 74 71 je 4106a7 : { : /* got here with longjmp */ : : /* reset parsing state */ : psql_scan_finish(scan_state); 0.00 : 410636: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 41063d: e8 5e ce ff ff callq 40d4a0 : psql_scan_reset(scan_state); 0.00 : 410642: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 410649: e8 82 cc ff ff callq 40d2d0 : resetPQExpBuffer(query_buf); 0.00 : 41064e: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 410652: e8 69 3a ff ff callq 4040c0 : resetPQExpBuffer(history_buf); 0.00 : 410657: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 41065b: e8 60 3a ff ff callq 4040c0 : slashCmdStatus = PSQL_CMD_UNKNOWN; : prompt_status = PROMPT_READY; : pset.stmt_lineno = 1; : cancel_pressed = false; : : if (pset.cur_cmd_interactive) 0.00 : 410660: ba 88 b1 66 00 mov $0x66b188,%edx : resetPQExpBuffer(query_buf); : resetPQExpBuffer(history_buf); : count_eof = 0; : slashCmdStatus = PSQL_CMD_UNKNOWN; : prompt_status = PROMPT_READY; : pset.stmt_lineno = 1; 0.00 : 410665: b8 a8 b1 66 00 mov $0x66b1a8,%eax : /* reset parsing state */ : psql_scan_finish(scan_state); : psql_scan_reset(scan_state); : resetPQExpBuffer(query_buf); : resetPQExpBuffer(history_buf); : count_eof = 0; 0.00 : 41066a: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : slashCmdStatus = PSQL_CMD_UNKNOWN; : prompt_status = PROMPT_READY; : pset.stmt_lineno = 1; : cancel_pressed = false; : : if (pset.cur_cmd_interactive) 0.00 : 410671: 80 3a 00 cmpb $0x0,(%rdx) : psql_scan_finish(scan_state); : psql_scan_reset(scan_state); : resetPQExpBuffer(query_buf); : resetPQExpBuffer(history_buf); : count_eof = 0; : slashCmdStatus = PSQL_CMD_UNKNOWN; 0.00 : 410674: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : prompt_status = PROMPT_READY; : pset.stmt_lineno = 1; 0.00 : 41067b: 48 c7 00 01 00 00 00 movq $0x1,(%rax) : psql_scan_reset(scan_state); : resetPQExpBuffer(query_buf); : resetPQExpBuffer(history_buf); : count_eof = 0; : slashCmdStatus = PSQL_CMD_UNKNOWN; : prompt_status = PROMPT_READY; 0.00 : 410682: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : pset.stmt_lineno = 1; : cancel_pressed = false; 0.00 : 410689: c6 05 30 a8 25 00 00 movb $0x0,0x25a830(%rip) # 66aec0 : : if (pset.cur_cmd_interactive) 0.00 : 410690: 0f 84 e7 06 00 00 je 410d7d : putc('\n', stdout); 0.00 : 410696: 48 8b 35 b3 a3 25 00 mov 0x25a3b3(%rip),%rsi # 66aa50 0.00 : 41069d: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 4106a2: e8 c9 32 ff ff callq 403970 <_IO_putc@plt> : successResult = EXIT_USER; : break; : } : } : : fflush(stdout); 0.00 : 4106a7: 48 8b 3d a2 a3 25 00 mov 0x25a3a2(%rip),%rdi # 66aa50 0.00 : 4106ae: e8 7d 36 ff ff callq 403d30 : : /* : * get another line : */ : if (pset.cur_cmd_interactive) 0.00 : 4106b3: b8 88 b1 66 00 mov $0x66b188,%eax 0.00 : 4106b8: 80 38 00 cmpb $0x0,(%rax) 0.00 : 4106bb: 0f 84 72 03 00 00 je 410a33 : { : /* May need to reset prompt, eg after \r command */ : if (query_buf->len == 0) 0.00 : 4106c1: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4106c5: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 4106ca: 75 07 jne 4106d3 : prompt_status = PROMPT_READY; 0.00 : 4106cc: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : line = gets_interactive(get_prompt(prompt_status)); 0.00 : 4106d3: 8b 7d c8 mov -0x38(%rbp),%edi 0.00 : 4106d6: e8 15 2b 00 00 callq 4131f0 0.00 : 4106db: 48 89 c7 mov %rax,%rdi 0.00 : 4106de: e8 0d c5 ff ff callq 40cbf0 : * query_buf holds query already accumulated. line is the malloc'd : * new line of input (note it must be freed before looping around!) : */ : : /* No more input. Time to quit, or \i done */ : if (line == NULL) 0.00 : 4106e3: 48 85 c0 test %rax,%rax : if (pset.cur_cmd_interactive) : { : /* May need to reset prompt, eg after \r command */ : if (query_buf->len == 0) : prompt_status = PROMPT_READY; : line = gets_interactive(get_prompt(prompt_status)); 0.00 : 4106e6: 49 89 c7 mov %rax,%r15 : * query_buf holds query already accumulated. line is the malloc'd : * new line of input (note it must be freed before looping around!) : */ : : /* No more input. Time to quit, or \i done */ : if (line == NULL) 0.00 : 4106e9: 0f 84 73 03 00 00 je 410a62 : break; : } : : count_eof = 0; : : pset.lineno++; 0.00 : 4106ef: ba a0 b1 66 00 mov $0x66b1a0,%edx : puts(pset.quiet ? "" : "\\q"); : } : break; : } : : count_eof = 0; 0.00 : 4106f4: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : : pset.lineno++; 0.00 : 4106fb: 48 8b 02 mov (%rdx),%rax 0.00 : 4106fe: 48 83 c0 01 add $0x1,%rax 0.00 : 410702: 48 89 02 mov %rax,(%rdx) : : /* ignore UTF-8 Unicode byte-order mark */ : if (pset.lineno == 1 && pset.encoding == PG_UTF8 && strncmp(line, "\xef\xbb\xbf", 3) == 0) 0.00 : 410705: 48 83 e8 01 sub $0x1,%rax 0.00 : 410709: 0f 84 c4 03 00 00 je 410ad3 : memmove(line, line + 3, strlen(line + 3) + 1); : : /* nothing left on line? then ignore */ : if (line[0] == '\0' && !psql_scan_in_quote(scan_state)) 0.00 : 41070f: 41 80 3f 00 cmpb $0x0,(%r15) 0.00 : 410713: 75 12 jne 410727 0.00 : 410715: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 41071c: 8b 40 38 mov 0x38(%rax),%eax 0.00 : 41071f: 85 c0 test %eax,%eax 0.00 : 410721: 0f 84 56 04 00 00 je 410b7d : free(line); : continue; : } : : /* A request for help? Be friendly and give them some guidance */ : if (pset.cur_cmd_interactive && query_buf->len == 0 && 0.00 : 410727: ba 88 b1 66 00 mov $0x66b188,%edx 0.00 : 41072c: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 41072f: 74 0f je 410740 0.00 : 410731: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410735: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 41073a: 0f 84 4a 04 00 00 je 410b8a : fflush(stdout); : continue; : } : : /* echo back if flag is set */ : if (pset.echo == PSQL_ECHO_ALL && !pset.cur_cmd_interactive) 0.00 : 410740: 83 3d 8d aa 25 00 03 cmpl $0x3,0x25aa8d(%rip) # 66b1d4 0.00 : 410747: 0f 84 15 04 00 00 je 410b62 : puts(line); : fflush(stdout); 0.00 : 41074d: 48 8b 3d fc a2 25 00 mov 0x25a2fc(%rip),%rdi # 66aa50 : : /* insert newlines into query buffer between source lines */ : if (query_buf->len > 0) 0.00 : 410754: 41 be ff ff ff ff mov $0xffffffff,%r14d : } : : /* echo back if flag is set */ : if (pset.echo == PSQL_ECHO_ALL && !pset.cur_cmd_interactive) : puts(line); : fflush(stdout); 0.00 : 41075a: e8 d1 35 ff ff callq 403d30 : : /* insert newlines into query buffer between source lines */ : if (query_buf->len > 0) 0.00 : 41075f: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410763: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 410768: 0f 85 d7 03 00 00 jne 410b45 : } : else : added_nl_pos = -1; /* flag we didn't add one */ : : /* Setting this will not have effect until next line. */ : die_on_error = pset.on_error_stop; 0.00 : 41076e: 0f b6 05 54 aa 25 00 movzbl 0x25aa54(%rip),%eax # 66b1c9 : : /* : * Parse line, looking for command separators. : */ : psql_scan_setup(scan_state, line, strlen(line)); 0.00 : 410775: 4c 89 ff mov %r15,%rdi 0.00 : 410778: 41 bd 01 00 00 00 mov $0x1,%r13d : } : else : added_nl_pos = -1; /* flag we didn't add one */ : : /* Setting this will not have effect until next line. */ : die_on_error = pset.on_error_stop; 0.00 : 41077e: 88 45 d7 mov %al,-0x29(%rbp) : : /* : * Parse line, looking for command separators. : */ : psql_scan_setup(scan_state, line, strlen(line)); 0.00 : 410781: e8 fa 30 ff ff callq 403880 0.00 : 410786: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 41078d: 89 c2 mov %eax,%edx 0.00 : 41078f: 4c 89 fe mov %r15,%rsi 0.00 : 410792: e8 a9 d3 ff ff callq 40db40 0.00 : 410797: c6 45 8f 00 movb $0x0,-0x71(%rbp) 0.00 : 41079b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : line_saved_in_history = false; : : while (success || !die_on_error) : { : PsqlScanResult scan_result; : promptStatus_t prompt_tmp = prompt_status; 0.00 : 4107a0: 8b 45 c8 mov -0x38(%rbp),%eax : size_t pos_in_query; : char *tmp_line; : : pos_in_query = query_buf->len; : scan_result = psql_scan(scan_state, query_buf, &prompt_tmp); 0.00 : 4107a3: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 4107aa: 48 8d 55 c0 lea -0x40(%rbp),%rdx : line_saved_in_history = false; : : while (success || !die_on_error) : { : PsqlScanResult scan_result; : promptStatus_t prompt_tmp = prompt_status; 0.00 : 4107ae: 89 45 c0 mov %eax,-0x40(%rbp) : size_t pos_in_query; : char *tmp_line; : : pos_in_query = query_buf->len; 0.00 : 4107b1: 48 8b 45 b8 mov -0x48(%rbp),%rax : scan_result = psql_scan(scan_state, query_buf, &prompt_tmp); 0.00 : 4107b5: 48 8b 75 b8 mov -0x48(%rbp),%rsi : PsqlScanResult scan_result; : promptStatus_t prompt_tmp = prompt_status; : size_t pos_in_query; : char *tmp_line; : : pos_in_query = query_buf->len; 0.00 : 4107b9: 48 8b 58 08 mov 0x8(%rax),%rbx : scan_result = psql_scan(scan_state, query_buf, &prompt_tmp); 0.00 : 4107bd: e8 5e fb ff ff callq 410320 0.00 : 4107c2: 41 89 c4 mov %eax,%r12d : prompt_status = prompt_tmp; 0.00 : 4107c5: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 4107c8: 89 45 c8 mov %eax,-0x38(%rbp) : : if (PQExpBufferBroken(query_buf)) 0.00 : 4107cb: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4107cf: 48 85 c0 test %rax,%rax 0.00 : 4107d2: 74 3c je 410810 0.00 : 4107d4: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4107d8: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 4107dd: 74 31 je 410810 : * Increase statement line number counter for each linebreak added : * to the query buffer by the last psql_scan() call. There only : * will be ones to add when navigating to a statement in : * readline's history containing newlines. : */ : tmp_line = query_buf->data + pos_in_query; 0.00 : 4107df: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4107e3: 48 89 da mov %rbx,%rdx 0.00 : 4107e6: 48 03 10 add (%rax),%rdx : while (*tmp_line != '\0') 0.00 : 4107e9: eb 09 jmp 4107f4 0.00 : 4107eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (*(tmp_line++) == '\n') 0.00 : 4107f0: 48 83 c2 01 add $0x1,%rdx : * to the query buffer by the last psql_scan() call. There only : * will be ones to add when navigating to a statement in : * readline's history containing newlines. : */ : tmp_line = query_buf->data + pos_in_query; : while (*tmp_line != '\0') 0.00 : 4107f4: 0f b6 02 movzbl (%rdx),%eax 0.00 : 4107f7: 84 c0 test %al,%al 0.00 : 4107f9: 74 35 je 410830 : { : if (*(tmp_line++) == '\n') 0.00 : 4107fb: 3c 0a cmp $0xa,%al 0.00 : 4107fd: 75 f1 jne 4107f0 : pset.stmt_lineno++; 0.00 : 4107ff: b8 a8 b1 66 00 mov $0x66b1a8,%eax 0.00 : 410804: 48 83 00 01 addq $0x1,(%rax) 0.00 : 410808: eb e6 jmp 4107f0 0.00 : 41080a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : scan_result = psql_scan(scan_state, query_buf, &prompt_tmp); : prompt_status = prompt_tmp; : : if (PQExpBufferBroken(query_buf)) : { : psql_error("out of memory\n"); 0.00 : 410810: bf 36 dd 43 00 mov $0x43dd36,%edi 0.00 : 410815: 31 c0 xor %eax,%eax 0.00 : 410817: e8 04 86 ff ff callq 408e20 : exit(EXIT_FAILURE); 0.00 : 41081c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 410821: e8 6a 37 ff ff callq 403f90 0.00 : 410826: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41082d: 00 00 00 : { : if (*(tmp_line++) == '\n') : pset.stmt_lineno++; : } : : if (scan_result == PSCAN_EOL) 0.00 : 410830: 41 83 fc 03 cmp $0x3,%r12d 0.00 : 410834: 0f 84 16 01 00 00 je 410950 : : /* : * Send command if semicolon found, or if end of line and we're in : * single-line mode. : */ : if (scan_result == PSCAN_SEMICOLON || 0.00 : 41083a: 45 85 e4 test %r12d,%r12d 0.00 : 41083d: 0f 85 2d 01 00 00 jne 410970 : { : /* : * Save query in history. We use history_buf to accumulate : * multi-line queries into a single history entry. : */ : if (pset.cur_cmd_interactive && !line_saved_in_history) 0.00 : 410843: ba 88 b1 66 00 mov $0x66b188,%edx 0.00 : 410848: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 41084b: 74 1f je 41086c 0.00 : 41084d: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 410851: 75 19 jne 41086c : { : pg_append_history(line, history_buf); 0.00 : 410853: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 410857: 4c 89 ff mov %r15,%rdi 0.00 : 41085a: e8 21 c3 ff ff callq 40cb80 : pg_send_history(history_buf); 0.00 : 41085f: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 410863: e8 28 c2 ff ff callq 40ca90 0.00 : 410868: c6 45 8f 01 movb $0x1,-0x71(%rbp) : line_saved_in_history = true; : } : : /* execute query */ : success = SendQuery(query_buf->data); 0.00 : 41086c: 48 8b 45 b8 mov -0x48(%rbp),%rax : PQExpBuffer swap_buf = previous_buf; : : previous_buf = query_buf; : query_buf = swap_buf; : } : resetPQExpBuffer(query_buf); 0.00 : 410870: 41 be ff ff ff ff mov $0xffffffff,%r14d : pg_send_history(history_buf); : line_saved_in_history = true; : } : : /* execute query */ : success = SendQuery(query_buf->data); 0.00 : 410876: 48 8b 38 mov (%rax),%rdi 0.00 : 410879: e8 d2 94 ff ff callq 409d50 : slashCmdStatus = success ? PSQL_CMD_SEND : PSQL_CMD_ERROR; 0.00 : 41087e: 3c 01 cmp $0x1,%al : pg_send_history(history_buf); : line_saved_in_history = true; : } : : /* execute query */ : success = SendQuery(query_buf->data); 0.00 : 410880: 41 89 c5 mov %eax,%r13d : slashCmdStatus = success ? PSQL_CMD_SEND : PSQL_CMD_ERROR; 0.00 : 410883: 19 c0 sbb %eax,%eax 0.00 : 410885: 83 e0 04 and $0x4,%eax 0.00 : 410888: 83 c0 01 add $0x1,%eax 0.00 : 41088b: 89 45 cc mov %eax,-0x34(%rbp) : pset.stmt_lineno = 1; 0.00 : 41088e: b8 a8 b1 66 00 mov $0x66b1a8,%eax : : /* transfer query to previous_buf by pointer-swapping */ : { : PQExpBuffer swap_buf = previous_buf; 0.00 : 410893: 48 8b 55 b0 mov -0x50(%rbp),%rdx : } : : /* execute query */ : success = SendQuery(query_buf->data); : slashCmdStatus = success ? PSQL_CMD_SEND : PSQL_CMD_ERROR; : pset.stmt_lineno = 1; 0.00 : 410897: 48 c7 00 01 00 00 00 movq $0x1,(%rax) : : /* transfer query to previous_buf by pointer-swapping */ : { : PQExpBuffer swap_buf = previous_buf; : : previous_buf = query_buf; 0.00 : 41089e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4108a2: 48 89 45 b0 mov %rax,-0x50(%rbp) : query_buf = swap_buf; 0.00 : 4108a6: 48 89 55 b8 mov %rdx,-0x48(%rbp) : } : resetPQExpBuffer(query_buf); 0.00 : 4108aa: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4108ae: e8 0d 38 ff ff callq 4040c0 : else if (slashCmdStatus == PSQL_CMD_TERMINATE) : break; : } : : /* fall out of loop if lexer reached EOL */ : if (scan_result == PSCAN_INCOMPLETE || 0.00 : 4108b3: 41 8d 44 24 fe lea -0x2(%r12),%eax 0.00 : 4108b8: 83 f8 01 cmp $0x1,%eax 0.00 : 4108bb: 76 1b jbe 4108d8 : */ : psql_scan_setup(scan_state, line, strlen(line)); : success = true; : line_saved_in_history = false; : : while (success || !die_on_error) 0.00 : 4108bd: 45 84 ed test %r13b,%r13b 0.00 : 4108c0: 0f 85 da fe ff ff jne 4107a0 0.00 : 4108c6: 0f b6 45 d7 movzbl -0x29(%rbp),%eax 0.00 : 4108ca: 84 c0 test %al,%al 0.00 : 4108cc: 0f 84 ce fe ff ff je 4107a0 0.00 : 4108d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : scan_result == PSCAN_EOL) : break; : } : : /* Add line to pending history if we didn't execute anything yet */ : if (pset.cur_cmd_interactive && !line_saved_in_history) 0.00 : 4108d8: ba 88 b1 66 00 mov $0x66b188,%edx 0.00 : 4108dd: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 4108e0: 74 12 je 4108f4 0.00 : 4108e2: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 4108e6: 75 0c jne 4108f4 : pg_append_history(line, history_buf); 0.00 : 4108e8: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 4108ec: 4c 89 ff mov %r15,%rdi 0.00 : 4108ef: e8 8c c2 ff ff callq 40cb80 : : psql_scan_finish(scan_state); 0.00 : 4108f4: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/bin/psql/mainloop.c:380 100.00 : 4108fb: e8 a0 cb ff ff callq 40d4a0 : free(line); 0.00 : 410900: 4c 89 ff mov %r15,%rdi 0.00 : 410903: e8 78 2d ff ff callq 403680 : : if (slashCmdStatus == PSQL_CMD_TERMINATE) 0.00 : 410908: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 41090b: 83 f8 03 cmp $0x3,%eax 0.00 : 41090e: 0f 84 bd 03 00 00 je 410cd1 : { : successResult = EXIT_SUCCESS; : break; : } : : if (!pset.cur_cmd_interactive) 0.00 : 410914: b8 88 b1 66 00 mov $0x66b188,%eax 0.00 : 410919: 80 38 00 cmpb $0x0,(%rax) 0.00 : 41091c: 0f 85 d6 fc ff ff jne 4105f8 : { : if (!success && die_on_error) 0.00 : 410922: 45 84 ed test %r13b,%r13b 0.00 : 410925: 75 0c jne 410933 0.00 : 410927: 0f b6 45 d7 movzbl -0x29(%rbp),%eax 0.00 : 41092b: 84 c0 test %al,%al 0.00 : 41092d: 0f 85 c2 02 00 00 jne 410bf5 : successResult = EXIT_USER; : /* Have we lost the db connection? */ : else if (!pset.db) 0.00 : 410933: 48 83 3d 65 a7 25 00 cmpq $0x0,0x25a765(%rip) # 66b0a0 0.00 : 41093a: 00 0.00 : 41093b: 0f 85 b7 fc ff ff jne 4105f8 : successResult = EXIT_BADCONN; 0.00 : 410941: c7 45 d0 02 00 00 00 movl $0x2,-0x30(%rbp) 0.00 : 410948: e9 ab fc ff ff jmpq 4105f8 0.00 : 41094d: 0f 1f 00 nopl (%rax) : if (*(tmp_line++) == '\n') : pset.stmt_lineno++; : } : : if (scan_result == PSCAN_EOL) : pset.stmt_lineno++; 0.00 : 410950: ba a8 b1 66 00 mov $0x66b1a8,%edx : : /* : * Send command if semicolon found, or if end of line and we're in : * single-line mode. : */ : if (scan_result == PSCAN_SEMICOLON || 0.00 : 410955: b8 cb b1 66 00 mov $0x66b1cb,%eax : if (*(tmp_line++) == '\n') : pset.stmt_lineno++; : } : : if (scan_result == PSCAN_EOL) : pset.stmt_lineno++; 0.00 : 41095a: 48 83 02 01 addq $0x1,(%rdx) : : /* : * Send command if semicolon found, or if end of line and we're in : * single-line mode. : */ : if (scan_result == PSCAN_SEMICOLON || 0.00 : 41095e: 80 38 00 cmpb $0x0,(%rax) 0.00 : 410961: 0f 85 dc fe ff ff jne 410843 0.00 : 410967: e9 6c ff ff ff jmpq 4108d8 0.00 : 41096c: 0f 1f 40 00 nopl 0x0(%rax) : resetPQExpBuffer(query_buf); : : added_nl_pos = -1; : /* we need not do psql_scan_reset() here */ : } : else if (scan_result == PSCAN_BACKSLASH) 0.00 : 410970: 41 83 fc 01 cmp $0x1,%r12d 0.00 : 410974: 0f 85 39 ff ff ff jne 4108b3 : * line contains only a backslash command. Also, in this : * situation we force out any previous lines as a separate : * history entry; we don't want SQL and backslash commands : * intermixed in history if at all possible. : */ : if (query_buf->len == added_nl_pos) 0.00 : 41097a: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 41097e: 49 63 c6 movslq %r14d,%rax 0.00 : 410981: 48 39 42 08 cmp %rax,0x8(%rdx) 0.00 : 410985: 0f 84 76 02 00 00 je 410c01 : pg_send_history(history_buf); : } : added_nl_pos = -1; : : /* save backslash command in history */ : if (pset.cur_cmd_interactive && !line_saved_in_history) 0.00 : 41098b: ba 88 b1 66 00 mov $0x66b188,%edx 0.00 : 410990: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 410993: 74 1f je 4109b4 0.00 : 410995: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 410999: 75 19 jne 4109b4 : { : pg_append_history(line, history_buf); 0.00 : 41099b: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 41099f: 4c 89 ff mov %r15,%rdi 0.00 : 4109a2: e8 d9 c1 ff ff callq 40cb80 : pg_send_history(history_buf); 0.00 : 4109a7: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4109ab: e8 e0 c0 ff ff callq 40ca90 0.00 : 4109b0: c6 45 8f 01 movb $0x1,-0x71(%rbp) : line_saved_in_history = true; : } : : /* execute backslash command */ : slashCmdStatus = HandleSlashCmds(scan_state, 0.00 : 4109b4: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4109b8: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 4109bd: 0f 84 79 01 00 00 je 410b3c 0.00 : 4109c3: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 4109c7: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 4109ce: e8 0d 54 ff ff callq 405de0 0.00 : 4109d3: 89 45 cc mov %eax,-0x34(%rbp) : query_buf->len > 0 ? : query_buf : previous_buf); : : success = slashCmdStatus != PSQL_CMD_ERROR; : pset.stmt_lineno = 1; 0.00 : 4109d6: b8 a8 b1 66 00 mov $0x66b1a8,%eax : /* execute backslash command */ : slashCmdStatus = HandleSlashCmds(scan_state, : query_buf->len > 0 ? : query_buf : previous_buf); : : success = slashCmdStatus != PSQL_CMD_ERROR; 0.00 : 4109db: 8b 5d cc mov -0x34(%rbp),%ebx : pset.stmt_lineno = 1; 0.00 : 4109de: 48 c7 00 01 00 00 00 movq $0x1,(%rax) : : if ((slashCmdStatus == PSQL_CMD_SEND || slashCmdStatus == PSQL_CMD_NEWEDIT) && 0.00 : 4109e5: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 4109e8: 83 e8 01 sub $0x1,%eax 0.00 : 4109eb: 0f 84 27 01 00 00 je 410b18 0.00 : 4109f1: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 4109f4: 83 f8 04 cmp $0x4,%eax 0.00 : 4109f7: 0f 84 1b 01 00 00 je 410b18 : { : /* copy previous buffer to current for handling */ : appendPQExpBufferStr(query_buf, previous_buf->data); : } : : if (slashCmdStatus == PSQL_CMD_SEND) 0.00 : 4109fd: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 410a00: 83 e8 01 sub $0x1,%eax 0.00 : 410a03: 0f 84 22 02 00 00 je 410c2b : resetPQExpBuffer(query_buf); : : /* flush any paren nesting info after forced send */ : psql_scan_reset(scan_state); : } : else if (slashCmdStatus == PSQL_CMD_NEWEDIT) 0.00 : 410a09: 8b 45 cc mov -0x34(%rbp),%eax : /* execute backslash command */ : slashCmdStatus = HandleSlashCmds(scan_state, : query_buf->len > 0 ? : query_buf : previous_buf); : : success = slashCmdStatus != PSQL_CMD_ERROR; 0.00 : 410a0c: 83 fb 05 cmp $0x5,%ebx 0.00 : 410a0f: 41 0f 95 c5 setne %r13b : resetPQExpBuffer(query_buf); : : /* flush any paren nesting info after forced send */ : psql_scan_reset(scan_state); : } : else if (slashCmdStatus == PSQL_CMD_NEWEDIT) 0.00 : 410a13: 83 f8 04 cmp $0x4,%eax 0.00 : 410a16: 0f 84 4e 02 00 00 je 410c6a : psql_scan_reset(scan_state); : psql_scan_setup(scan_state, line, strlen(line)); : line_saved_in_history = false; : prompt_status = PROMPT_READY; : } : else if (slashCmdStatus == PSQL_CMD_TERMINATE) 0.00 : 410a1c: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 410a1f: 83 f8 03 cmp $0x3,%eax 0.00 : 410a22: 0f 84 b0 fe ff ff je 4108d8 : break; 0.00 : 410a28: 41 be ff ff ff ff mov $0xffffffff,%r14d 0.00 : 410a2e: e9 80 fe ff ff jmpq 4108b3 : prompt_status = PROMPT_READY; : line = gets_interactive(get_prompt(prompt_status)); : } : else : { : line = gets_fromFile(source); 0.00 : 410a33: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 410a3a: e8 21 bf ff ff callq 40c960 : if (!line && ferror(source)) 0.00 : 410a3f: 48 85 c0 test %rax,%rax : prompt_status = PROMPT_READY; : line = gets_interactive(get_prompt(prompt_status)); : } : else : { : line = gets_fromFile(source); 0.00 : 410a42: 49 89 c7 mov %rax,%r15 : if (!line && ferror(source)) 0.00 : 410a45: 0f 85 a4 fc ff ff jne 4106ef 0.00 : 410a4b: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 410a52: e8 d9 2c ff ff callq 403730 0.00 : 410a57: 85 c0 test %eax,%eax 0.00 : 410a59: 74 07 je 410a62 : successResult = EXIT_FAILURE; 0.00 : 410a5b: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%rbp) : */ : : /* No more input. Time to quit, or \i done */ : if (line == NULL) : { : if (pset.cur_cmd_interactive) 0.00 : 410a62: ba 88 b1 66 00 mov $0x66b188,%edx 0.00 : 410a67: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 410a6a: 0f 84 68 02 00 00 je 410cd8 : { : /* This tries to mimic bash's IGNOREEOF feature. */ : count_eof++; 0.00 : 410a70: 8b 45 c4 mov -0x3c(%rbp),%eax : : if (count_eof < GetVariableNum(pset.vars, "IGNOREEOF", 0, 10, false)) 0.00 : 410a73: 48 8b 3d 46 a7 25 00 mov 0x25a746(%rip),%rdi # 66b1c0 0.00 : 410a7a: 31 d2 xor %edx,%edx 0.00 : 410a7c: 45 31 c0 xor %r8d,%r8d 0.00 : 410a7f: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 410a84: be cb dd 43 00 mov $0x43ddcb,%esi : if (line == NULL) : { : if (pset.cur_cmd_interactive) : { : /* This tries to mimic bash's IGNOREEOF feature. */ : count_eof++; 0.00 : 410a89: 83 c0 01 add $0x1,%eax 0.00 : 410a8c: 89 45 c4 mov %eax,-0x3c(%rbp) : : if (count_eof < GetVariableNum(pset.vars, "IGNOREEOF", 0, 10, false)) 0.00 : 410a8f: e8 8c 32 00 00 callq 413d20 0.00 : 410a94: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 410a97: 39 d0 cmp %edx,%eax 0.00 : 410a99: 0f 8e ea 02 00 00 jle 410d89 : { : if (!pset.quiet) 0.00 : 410a9f: 80 3d 24 a7 25 00 00 cmpb $0x0,0x25a724(%rip) # 66b1ca 0.00 : 410aa6: 0f 85 4c fb ff ff jne 4105f8 : printf(_("Use \"\\q\" to leave %s.\n"), pset.progname); 0.00 : 410aac: 48 8b 35 dd a6 25 00 mov 0x25a6dd(%rip),%rsi # 66b190 0.00 : 410ab3: bf d5 dd 43 00 mov $0x43ddd5,%edi 0.00 : 410ab8: 31 c0 xor %eax,%eax 0.00 : 410aba: e8 a1 2e ff ff callq 403960 0.00 : 410abf: e9 34 fb ff ff jmpq 4105f8 : prev_cmd_interactive = pset.cur_cmd_interactive; : prev_lineno = pset.lineno; : : /* Establish new source */ : pset.cur_cmd_source = source; : pset.cur_cmd_interactive = ((source == stdin) && !pset.notty); 0.00 : 410ac4: 80 3d ad a6 25 00 00 cmpb $0x0,0x25a6ad(%rip) # 66b178 0.00 : 410acb: 0f 94 c0 sete %al 0.00 : 410ace: e9 8b fa ff ff jmpq 41055e : count_eof = 0; : : pset.lineno++; : : /* ignore UTF-8 Unicode byte-order mark */ : if (pset.lineno == 1 && pset.encoding == PG_UTF8 && strncmp(line, "\xef\xbb\xbf", 3) == 0) 0.00 : 410ad3: 83 3d ce a5 25 00 06 cmpl $0x6,0x25a5ce(%rip) # 66b0a8 0.00 : 410ada: 0f 85 2f fc ff ff jne 41070f 0.00 : 410ae0: bf ef dd 43 00 mov $0x43ddef,%edi 0.00 : 410ae5: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 410aea: 4c 89 fe mov %r15,%rsi 0.00 : 410aed: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 410aef: 0f 85 1a fc ff ff jne 41070f : memmove(line, line + 3, strlen(line + 3) + 1); 0.00 : 410af5: 49 8d 5f 03 lea 0x3(%r15),%rbx 0.00 : 410af9: 48 89 df mov %rbx,%rdi 0.00 : 410afc: e8 7f 2d ff ff callq 403880 0.00 : 410b01: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 410b05: 48 89 de mov %rbx,%rsi 0.00 : 410b08: 4c 89 ff mov %r15,%rdi 0.00 : 410b0b: e8 f0 32 ff ff callq 403e00 0.00 : 410b10: e9 fa fb ff ff jmpq 41070f 0.00 : 410b15: 0f 1f 00 nopl (%rax) : query_buf : previous_buf); : : success = slashCmdStatus != PSQL_CMD_ERROR; : pset.stmt_lineno = 1; : : if ((slashCmdStatus == PSQL_CMD_SEND || slashCmdStatus == PSQL_CMD_NEWEDIT) && 0.00 : 410b18: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410b1c: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 410b21: 0f 85 d6 fe ff ff jne 4109fd : query_buf->len == 0) : { : /* copy previous buffer to current for handling */ : appendPQExpBufferStr(query_buf, previous_buf->data); 0.00 : 410b27: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 410b2b: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 410b2f: 48 8b 30 mov (%rax),%rsi 0.00 : 410b32: e8 29 35 ff ff callq 404060 0.00 : 410b37: e9 c1 fe ff ff jmpq 4109fd : pg_send_history(history_buf); : line_saved_in_history = true; : } : : /* execute backslash command */ : slashCmdStatus = HandleSlashCmds(scan_state, 0.00 : 410b3c: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 410b40: e9 82 fe ff ff jmpq 4109c7 : fflush(stdout); : : /* insert newlines into query buffer between source lines */ : if (query_buf->len > 0) : { : appendPQExpBufferChar(query_buf, '\n'); 0.00 : 410b45: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 410b49: be 0a 00 00 00 mov $0xa,%esi 0.00 : 410b4e: 66 90 xchg %ax,%ax 0.00 : 410b50: e8 9b 33 ff ff callq 403ef0 : added_nl_pos = query_buf->len; 0.00 : 410b55: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410b59: 44 8b 70 08 mov 0x8(%rax),%r14d 0.00 : 410b5d: e9 0c fc ff ff jmpq 41076e : fflush(stdout); : continue; : } : : /* echo back if flag is set */ : if (pset.echo == PSQL_ECHO_ALL && !pset.cur_cmd_interactive) 0.00 : 410b62: b8 88 b1 66 00 mov $0x66b188,%eax 0.00 : 410b67: 80 38 00 cmpb $0x0,(%rax) 0.00 : 410b6a: 0f 85 dd fb ff ff jne 41074d : puts(line); 0.00 : 410b70: 4c 89 ff mov %r15,%rdi 0.00 : 410b73: e8 a8 2b ff ff callq 403720 0.00 : 410b78: e9 d0 fb ff ff jmpq 41074d : memmove(line, line + 3, strlen(line + 3) + 1); : : /* nothing left on line? then ignore */ : if (line[0] == '\0' && !psql_scan_in_quote(scan_state)) : { : free(line); 0.00 : 410b7d: 4c 89 ff mov %r15,%rdi 0.00 : 410b80: e8 fb 2a ff ff callq 403680 : continue; 0.00 : 410b85: e9 6e fa ff ff jmpq 4105f8 : } : : /* A request for help? Be friendly and give them some guidance */ : if (pset.cur_cmd_interactive && query_buf->len == 0 && 0.00 : 410b8a: ba 04 00 00 00 mov $0x4,%edx 0.00 : 410b8f: be 66 66 44 00 mov $0x446666,%esi 0.00 : 410b94: 4c 89 ff mov %r15,%rdi 0.00 : 410b97: e8 a4 40 02 00 callq 434c40 0.00 : 410b9c: 85 c0 test %eax,%eax 0.00 : 410b9e: 0f 85 9c fb ff ff jne 410740 0.00 : 410ba4: 41 0f b6 5f 04 movzbl 0x4(%r15),%ebx 0.00 : 410ba9: 84 db test %bl,%bl 0.00 : 410bab: 74 1b je 410bc8 0.00 : 410bad: 80 fb 3b cmp $0x3b,%bl 0.00 : 410bb0: 74 16 je 410bc8 0.00 : 410bb2: e8 f9 34 ff ff callq 4040b0 <__ctype_b_loc@plt> 0.00 : 410bb7: 48 8b 00 mov (%rax),%rax 0.00 : 410bba: 0f b6 d3 movzbl %bl,%edx 0.00 : 410bbd: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 410bc2: 0f 84 78 fb ff ff je 410740 : pg_strncasecmp(line, "help", 4) == 0 && : (line[4] == '\0' || line[4] == ';' || isspace((unsigned char) line[4]))) : { : free(line); 0.00 : 410bc8: 4c 89 ff mov %r15,%rdi 0.00 : 410bcb: e8 b0 2a ff ff callq 403680 : puts(_("You are using psql, the command-line interface to PostgreSQL.")); 0.00 : 410bd0: bf e8 df 43 00 mov $0x43dfe8,%edi 0.00 : 410bd5: e8 46 2b ff ff callq 403720 : printf(_("Type: \\copyright for distribution terms\n" 0.00 : 410bda: bf 28 e0 43 00 mov $0x43e028,%edi 0.00 : 410bdf: e8 3c 2b ff ff callq 403720 : " \\h for help with SQL commands\n" : " \\? for help with psql commands\n" : " \\g or terminate with semicolon to execute query\n" : " \\q to quit\n")); : : fflush(stdout); 0.00 : 410be4: 48 8b 3d 65 9e 25 00 mov 0x259e65(%rip),%rdi # 66aa50 0.00 : 410beb: e8 40 31 ff ff callq 403d30 : continue; 0.00 : 410bf0: e9 03 fa ff ff jmpq 4105f8 : } : : if (!pset.cur_cmd_interactive) : { : if (!success && die_on_error) : successResult = EXIT_USER; 0.00 : 410bf5: c7 45 d0 03 00 00 00 movl $0x3,-0x30(%rbp) : break; : } : : if (!pset.cur_cmd_interactive) : { : if (!success && die_on_error) 0.00 : 410bfc: e9 f7 f9 ff ff jmpq 4105f8 : * history entry; we don't want SQL and backslash commands : * intermixed in history if at all possible. : */ : if (query_buf->len == added_nl_pos) : { : query_buf->data[--query_buf->len] = '\0'; 0.00 : 410c01: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410c05: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 410c09: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 410c0d: 48 8b 30 mov (%rax),%rsi 0.00 : 410c10: 48 8d 41 ff lea -0x1(%rcx),%rax 0.00 : 410c14: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 410c18: c6 44 0e ff 00 movb $0x0,-0x1(%rsi,%rcx,1) : pg_send_history(history_buf); 0.00 : 410c1d: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 410c21: e8 6a be ff ff callq 40ca90 0.00 : 410c26: e9 60 fd ff ff jmpq 41098b : appendPQExpBufferStr(query_buf, previous_buf->data); : } : : if (slashCmdStatus == PSQL_CMD_SEND) : { : success = SendQuery(query_buf->data); 0.00 : 410c2b: 48 8b 45 b8 mov -0x48(%rbp),%rax : query_buf = swap_buf; : } : resetPQExpBuffer(query_buf); : : /* flush any paren nesting info after forced send */ : psql_scan_reset(scan_state); 0.00 : 410c2f: 41 be ff ff ff ff mov $0xffffffff,%r14d : appendPQExpBufferStr(query_buf, previous_buf->data); : } : : if (slashCmdStatus == PSQL_CMD_SEND) : { : success = SendQuery(query_buf->data); 0.00 : 410c35: 48 8b 38 mov (%rax),%rdi 0.00 : 410c38: e8 13 91 ff ff callq 409d50 : : /* transfer query to previous_buf by pointer-swapping */ : { : PQExpBuffer swap_buf = previous_buf; 0.00 : 410c3d: 48 8b 55 b0 mov -0x50(%rbp),%rdx : appendPQExpBufferStr(query_buf, previous_buf->data); : } : : if (slashCmdStatus == PSQL_CMD_SEND) : { : success = SendQuery(query_buf->data); 0.00 : 410c41: 41 89 c5 mov %eax,%r13d : : /* transfer query to previous_buf by pointer-swapping */ : { : PQExpBuffer swap_buf = previous_buf; : : previous_buf = query_buf; 0.00 : 410c44: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410c48: 48 89 45 b0 mov %rax,-0x50(%rbp) : query_buf = swap_buf; 0.00 : 410c4c: 48 89 55 b8 mov %rdx,-0x48(%rbp) : } : resetPQExpBuffer(query_buf); 0.00 : 410c50: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 410c54: e8 67 34 ff ff callq 4040c0 : : /* flush any paren nesting info after forced send */ : psql_scan_reset(scan_state); 0.00 : 410c59: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 410c60: e8 6b c6 ff ff callq 40d2d0 0.00 : 410c65: e9 49 fc ff ff jmpq 4108b3 : } : else if (slashCmdStatus == PSQL_CMD_NEWEDIT) : { : /* rescan query_buf as new input */ : psql_scan_finish(scan_state); 0.00 : 410c6a: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi : resetPQExpBuffer(query_buf); : /* reset parsing state since we are rescanning whole line */ : psql_scan_reset(scan_state); : psql_scan_setup(scan_state, line, strlen(line)); : line_saved_in_history = false; : prompt_status = PROMPT_READY; 0.00 : 410c71: 41 be ff ff ff ff mov $0xffffffff,%r14d : psql_scan_reset(scan_state); : } : else if (slashCmdStatus == PSQL_CMD_NEWEDIT) : { : /* rescan query_buf as new input */ : psql_scan_finish(scan_state); 0.00 : 410c77: e8 24 c8 ff ff callq 40d4a0 : free(line); 0.00 : 410c7c: 4c 89 ff mov %r15,%rdi 0.00 : 410c7f: e8 fc 29 ff ff callq 403680 : line = pg_strdup(query_buf->data); 0.00 : 410c84: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410c88: 48 8b 38 mov (%rax),%rdi 0.00 : 410c8b: e8 d0 31 02 00 callq 433e60 : resetPQExpBuffer(query_buf); 0.00 : 410c90: 48 8b 7d b8 mov -0x48(%rbp),%rdi : else if (slashCmdStatus == PSQL_CMD_NEWEDIT) : { : /* rescan query_buf as new input */ : psql_scan_finish(scan_state); : free(line); : line = pg_strdup(query_buf->data); 0.00 : 410c94: 49 89 c7 mov %rax,%r15 : resetPQExpBuffer(query_buf); 0.00 : 410c97: e8 24 34 ff ff callq 4040c0 : /* reset parsing state since we are rescanning whole line */ : psql_scan_reset(scan_state); 0.00 : 410c9c: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 410ca3: e8 28 c6 ff ff callq 40d2d0 : psql_scan_setup(scan_state, line, strlen(line)); 0.00 : 410ca8: 4c 89 ff mov %r15,%rdi 0.00 : 410cab: e8 d0 2b ff ff callq 403880 0.00 : 410cb0: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 410cb7: 89 c2 mov %eax,%edx 0.00 : 410cb9: 4c 89 fe mov %r15,%rsi 0.00 : 410cbc: e8 7f ce ff ff callq 40db40 : line_saved_in_history = false; : prompt_status = PROMPT_READY; 0.00 : 410cc1: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) 0.00 : 410cc8: c6 45 8f 00 movb $0x0,-0x71(%rbp) 0.00 : 410ccc: e9 e2 fb ff ff jmpq 4108b3 : psql_scan_finish(scan_state); : free(line); : : if (slashCmdStatus == PSQL_CMD_TERMINATE) : { : successResult = EXIT_SUCCESS; 0.00 : 410cd1: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%rbp) : } /* while !endoffile/session */ : : /* : * Process query at the end of file without a semicolon : */ : if (query_buf->len > 0 && !pset.cur_cmd_interactive && 0.00 : 410cd8: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410cdc: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 410ce1: 74 3a je 410d1d 0.00 : 410ce3: 80 3d 9e a4 25 00 00 cmpb $0x0,0x25a49e(%rip) # 66b188 0.00 : 410cea: 75 31 jne 410d1d 0.00 : 410cec: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 410cef: 85 c0 test %eax,%eax 0.00 : 410cf1: 75 2a jne 410d1d : /* save query in history */ : if (pset.cur_cmd_interactive) : pg_send_history(history_buf); : : /* execute query */ : success = SendQuery(query_buf->data); 0.00 : 410cf3: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 410cf7: 48 8b 38 mov (%rax),%rdi 0.00 : 410cfa: e8 51 90 ff ff callq 409d50 : : if (!success && die_on_error) 0.00 : 410cff: 84 c0 test %al,%al 0.00 : 410d01: 75 0c jne 410d0f 0.00 : 410d03: 0f b6 45 d7 movzbl -0x29(%rbp),%eax 0.00 : 410d07: 84 c0 test %al,%al 0.00 : 410d09: 0f 85 99 00 00 00 jne 410da8 : successResult = EXIT_USER; : else if (pset.db == NULL) 0.00 : 410d0f: 48 83 3d 89 a3 25 00 cmpq $0x0,0x25a389(%rip) # 66b0a0 0.00 : 410d16: 00 0.00 : 410d17: 0f 84 97 00 00 00 je 410db4 : * sigint_interrupt_jmp after we exit this routine. If there is an outer : * MainLoop instance, it will reset sigint_interrupt_jmp to point to : * itself at the top of its loop, before any further interactive input : * happens. : */ : sigint_interrupt_enabled = false; 0.00 : 410d1d: c6 05 ac 9f 25 00 00 movb $0x0,0x259fac(%rip) # 66acd0 : : destroyPQExpBuffer(query_buf); 0.00 : 410d24: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 410d28: e8 83 32 ff ff callq 403fb0 : destroyPQExpBuffer(previous_buf); 0.00 : 410d2d: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 410d31: e8 7a 32 ff ff callq 403fb0 : destroyPQExpBuffer(history_buf); 0.00 : 410d36: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 410d3a: e8 71 32 ff ff callq 403fb0 : : psql_scan_destroy(scan_state); 0.00 : 410d3f: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 410d46: e8 b5 c7 ff ff callq 40d500 : : pset.cur_cmd_source = prev_cmd_source; 0.00 : 410d4b: 48 8b 55 90 mov -0x70(%rbp),%rdx : pset.cur_cmd_interactive = prev_cmd_interactive; 0.00 : 410d4f: 0f b6 45 9f movzbl -0x61(%rbp),%eax : destroyPQExpBuffer(previous_buf); : destroyPQExpBuffer(history_buf); : : psql_scan_destroy(scan_state); : : pset.cur_cmd_source = prev_cmd_source; 0.00 : 410d53: 48 89 15 26 a4 25 00 mov %rdx,0x25a426(%rip) # 66b180 : pset.cur_cmd_interactive = prev_cmd_interactive; : pset.lineno = prev_lineno; 0.00 : 410d5a: 48 8b 55 a0 mov -0x60(%rbp),%rdx : destroyPQExpBuffer(history_buf); : : psql_scan_destroy(scan_state); : : pset.cur_cmd_source = prev_cmd_source; : pset.cur_cmd_interactive = prev_cmd_interactive; 0.00 : 410d5e: 88 05 24 a4 25 00 mov %al,0x25a424(%rip) # 66b188 : pset.lineno = prev_lineno; : : return successResult; 0.00 : 410d64: 8b 45 d0 mov -0x30(%rbp),%eax : : psql_scan_destroy(scan_state); : : pset.cur_cmd_source = prev_cmd_source; : pset.cur_cmd_interactive = prev_cmd_interactive; : pset.lineno = prev_lineno; 0.00 : 410d67: 48 89 15 32 a4 25 00 mov %rdx,0x25a432(%rip) # 66b1a0 : : return successResult; : } /* MainLoop() */ 0.00 : 410d6e: 48 83 c4 68 add $0x68,%rsp 0.00 : 410d72: 5b pop %rbx 0.00 : 410d73: 41 5c pop %r12 0.00 : 410d75: 41 5d pop %r13 0.00 : 410d77: 41 5e pop %r14 0.00 : 410d79: 41 5f pop %r15 0.00 : 410d7b: c9 leaveq 0.00 : 410d7c: c3 retq : : if (pset.cur_cmd_interactive) : putc('\n', stdout); : else : { : successResult = EXIT_USER; 0.00 : 410d7d: c7 45 d0 03 00 00 00 movl $0x3,-0x30(%rbp) : break; 0.00 : 410d84: e9 4f ff ff ff jmpq 410cd8 : if (!pset.quiet) : printf(_("Use \"\\q\" to leave %s.\n"), pset.progname); : continue; : } : : puts(pset.quiet ? "" : "\\q"); 0.00 : 410d89: 80 3d 3a a4 25 00 00 cmpb $0x0,0x25a43a(%rip) # 66b1ca 0.00 : 410d90: bf ec dd 43 00 mov $0x43ddec,%edi 0.00 : 410d95: b8 17 69 43 00 mov $0x436917,%eax 0.00 : 410d9a: 48 0f 45 f8 cmovne %rax,%rdi 0.00 : 410d9e: e8 7d 29 ff ff callq 403720 0.00 : 410da3: e9 30 ff ff ff jmpq 410cd8 : : /* execute query */ : success = SendQuery(query_buf->data); : : if (!success && die_on_error) : successResult = EXIT_USER; 0.00 : 410da8: c7 45 d0 03 00 00 00 movl $0x3,-0x30(%rbp) : pg_send_history(history_buf); : : /* execute query */ : success = SendQuery(query_buf->data); : : if (!success && die_on_error) 0.00 : 410daf: e9 69 ff ff ff jmpq 410d1d : successResult = EXIT_USER; : else if (pset.db == NULL) : successResult = EXIT_BADCONN; 0.00 : 410db4: c7 45 d0 02 00 00 00 movl $0x2,-0x30(%rbp) 0.00 : 410dbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 410dc0: e9 58 ff ff ff jmpq 410d1d Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/print.c:2978 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000414760 : : } : : : void : setDecimalLocale(void) : { 0.00 : 414760: 55 push %rbp 100.00 : 414761: 48 89 e5 mov %rsp,%rbp 0.00 : 414764: 53 push %rbx 0.00 : 414765: 48 83 ec 08 sub $0x8,%rsp : struct lconv *extlconv; : : extlconv = localeconv(); 0.00 : 414769: e8 72 f0 fe ff callq 4037e0 : : if (*extlconv->decimal_point) 0.00 : 41476e: 48 8b 38 mov (%rax),%rdi : void : setDecimalLocale(void) : { : struct lconv *extlconv; : : extlconv = localeconv(); 0.00 : 414771: 48 89 c3 mov %rax,%rbx : : if (*extlconv->decimal_point) 0.00 : 414774: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 414777: 75 67 jne 4147e0 : decimal_point = pg_strdup(extlconv->decimal_point); : else : decimal_point = "."; /* SQL output standard */ 0.00 : 414779: 48 c7 05 44 67 25 00 movq $0x435985,0x256744(%rip) # 66aec8 0.00 : 414780: 85 59 43 00 : if (*extlconv->grouping && atoi(extlconv->grouping) > 0) 0.00 : 414784: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 414788: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 41478b: 75 68 jne 4147f5 : grouping = pg_strdup(extlconv->grouping); : else : grouping = "3"; /* most common */ 0.00 : 41478d: 48 c7 05 38 67 25 00 movq $0x44671e,0x256738(%rip) # 66aed0 0.00 : 414794: 1e 67 44 00 : : /* similar code exists in formatting.c */ : if (*extlconv->thousands_sep) 0.00 : 414798: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 41479c: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 41479f: 75 7f jne 414820 : thousands_sep = pg_strdup(extlconv->thousands_sep); : /* Make sure thousands separator doesn't match decimal point symbol. */ : else if (strcmp(decimal_point, ",") != 0) 0.00 : 4147a1: 48 8b 05 20 67 25 00 mov 0x256720(%rip),%rax # 66aec8 0.00 : 4147a8: 80 38 2c cmpb $0x2c,(%rax) 0.00 : 4147ab: 75 1b jne 4147c8 0.00 : 4147ad: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 4147b1: 75 15 jne 4147c8 : thousands_sep = ","; : else : thousands_sep = "."; 0.00 : 4147b3: 48 c7 05 1a 67 25 00 movq $0x435985,0x25671a(%rip) # 66aed8 0.00 : 4147ba: 85 59 43 00 : } 0.00 : 4147be: 48 83 c4 08 add $0x8,%rsp 0.00 : 4147c2: 5b pop %rbx 0.00 : 4147c3: c9 leaveq 0.00 : 4147c4: c3 retq 0.00 : 4147c5: 0f 1f 00 nopl (%rax) : /* similar code exists in formatting.c */ : if (*extlconv->thousands_sep) : thousands_sep = pg_strdup(extlconv->thousands_sep); : /* Make sure thousands separator doesn't match decimal point symbol. */ : else if (strcmp(decimal_point, ",") != 0) : thousands_sep = ","; 0.00 : 4147c8: 48 c7 05 05 67 25 00 movq $0x44879c,0x256705(%rip) # 66aed8 0.00 : 4147cf: 9c 87 44 00 : else : thousands_sep = "."; : } 0.00 : 4147d3: 48 83 c4 08 add $0x8,%rsp 0.00 : 4147d7: 5b pop %rbx 0.00 : 4147d8: c9 leaveq 0.00 : 4147d9: c3 retq 0.00 : 4147da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : struct lconv *extlconv; : : extlconv = localeconv(); : : if (*extlconv->decimal_point) : decimal_point = pg_strdup(extlconv->decimal_point); 0.00 : 4147e0: e8 7b f6 01 00 callq 433e60 0.00 : 4147e5: 48 89 05 dc 66 25 00 mov %rax,0x2566dc(%rip) # 66aec8 : else : decimal_point = "."; /* SQL output standard */ : if (*extlconv->grouping && atoi(extlconv->grouping) > 0) 0.00 : 4147ec: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 4147f0: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 4147f3: 74 98 je 41478d : return strtod (__nptr, (char **) NULL); : } : __extern_inline int : __NTH (atoi (__const char *__nptr)) : { : return (int) strtol (__nptr, (char **) NULL, 10); 0.00 : 4147f5: 31 f6 xor %esi,%esi 0.00 : 4147f7: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 4147fc: e8 1f f4 fe ff callq 403c20 0.00 : 414801: 85 c0 test %eax,%eax 0.00 : 414803: 7e 88 jle 41478d : grouping = pg_strdup(extlconv->grouping); 0.00 : 414805: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 414809: e8 52 f6 01 00 callq 433e60 0.00 : 41480e: 48 89 05 bb 66 25 00 mov %rax,0x2566bb(%rip) # 66aed0 : else : grouping = "3"; /* most common */ : : /* similar code exists in formatting.c */ : if (*extlconv->thousands_sep) 0.00 : 414815: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 414819: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 41481c: 74 83 je 4147a1 0.00 : 41481e: 66 90 xchg %ax,%ax : thousands_sep = pg_strdup(extlconv->thousands_sep); 0.00 : 414820: e8 3b f6 01 00 callq 433e60 0.00 : 414825: 48 89 05 ac 66 25 00 mov %rax,0x2566ac(%rip) # 66aed8 : /* Make sure thousands separator doesn't match decimal point symbol. */ : else if (strcmp(decimal_point, ",") != 0) : thousands_sep = ","; : else : thousands_sep = "."; : } 0.00 : 41482c: 48 83 c4 08 add $0x8,%rsp 0.00 : 414830: 5b pop %rbx 0.00 : 414831: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/sql_help.c:557 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000432700 : : _("new_owner")); : } : : void : sql_help_ALTER_MATERIALIZED_VIEW(PQExpBuffer buf) : { 0.00 : 432700: 55 push %rbp : appendPQExpBuffer(buf, 0.00 : 432701: 41 b8 e6 88 44 00 mov $0x4488e6,%r8d 0.00 : 432707: 41 b9 8d aa 45 00 mov $0x45aa8d,%r9d 0.00 : 43270d: b9 0b b9 43 00 mov $0x43b90b,%ecx 0.00 : 432712: 4c 89 c2 mov %r8,%rdx 0.00 : 432715: be a8 28 46 00 mov $0x4628a8,%esi : _("new_owner")); : } : : void : sql_help_ALTER_MATERIALIZED_VIEW(PQExpBuffer buf) : { 0.00 : 43271a: 48 89 e5 mov %rsp,%rbp : appendPQExpBuffer(buf, 0.00 : 43271d: 31 c0 xor %eax,%eax : _("new_owner")); : } : : void : sql_help_ALTER_MATERIALIZED_VIEW(PQExpBuffer buf) : { 0.00 : 43271f: 48 81 ec c0 00 00 00 sub $0xc0,%rsp : appendPQExpBuffer(buf, 0.00 : 432726: 48 c7 84 24 b0 00 00 movq $0x45aa26,0xb0(%rsp) 0.00 : 43272d: 00 26 aa 45 00 0.00 : 432732: 48 c7 84 24 a8 00 00 movq $0x45a995,0xa8(%rsp) 0.00 : 432739: 00 95 a9 45 00 0.00 : 43273e: 48 c7 84 24 a0 00 00 movq $0x45a569,0xa0(%rsp) 0.00 : 432745: 00 69 a5 45 00 0.00 : 43274a: 48 c7 84 24 98 00 00 movq $0x45a9c5,0x98(%rsp) 0.00 : 432751: 00 c5 a9 45 00 0.00 : 432756: 48 c7 84 24 90 00 00 movq $0x45a569,0x90(%rsp) 0.00 : 43275d: 00 69 a5 45 00 0.00 : 432762: 48 c7 84 24 88 00 00 movq $0x45a963,0x88(%rsp) 0.00 : 432769: 00 63 a9 45 00 0.00 : 43276e: 48 c7 84 24 80 00 00 movq $0x45aa8d,0x80(%rsp) 0.00 : 432775: 00 8d aa 45 00 0.00 : 43277a: 48 c7 44 24 78 64 aa movq $0x45aa64,0x78(%rsp) 0.00 : 432781: 45 00 0.00 : 432783: 48 c7 44 24 70 8d aa movq $0x45aa8d,0x70(%rsp) 0.00 : 43278a: 45 00 0.00 : 43278c: 48 c7 44 24 68 c5 a9 movq $0x45a9c5,0x68(%rsp) 0.00 : 432793: 45 00 0.00 : 432795: 48 c7 44 24 60 64 aa movq $0x45aa64,0x60(%rsp) 0.00 : 43279c: 45 00 0.00 : 43279e: 48 c7 44 24 58 8d aa movq $0x45aa8d,0x58(%rsp) 0.00 : 4327a5: 45 00 0.00 : 4327a7: 48 c7 44 24 50 0d 81 movq $0x45810d,0x50(%rsp) 0.00 : 4327ae: 45 00 0.00 : 4327b0: 48 c7 44 24 48 8d aa movq $0x45aa8d,0x48(%rsp) 0.00 : 4327b7: 45 00 0.00 : 4327b9: 48 c7 44 24 40 9f a9 movq $0x45a99f,0x40(%rsp) 0.00 : 4327c0: 45 00 0.00 : 4327c2: 48 c7 44 24 38 26 aa movq $0x45aa26,0x38(%rsp) 0.00 : 4327c9: 45 00 0.00 : 4327cb: 48 c7 44 24 30 5e a0 movq $0x45a05e,0x30(%rsp) 0.00 : 4327d2: 45 00 0.00 : 4327d4: 48 c7 44 24 28 e6 88 movq $0x4488e6,0x28(%rsp) 0.00 : 4327db: 44 00 0.00 : 4327dd: 48 c7 44 24 20 81 a9 movq $0x45a981,0x20(%rsp) 0.00 : 4327e4: 45 00 0.00 : 4327e6: 48 c7 44 24 18 e6 88 movq $0x4488e6,0x18(%rsp) 0.00 : 4327ed: 44 00 100.00 : 4327ef: 48 c7 44 24 10 8c a9 movq $0x45a98c,0x10(%rsp) 0.00 : 4327f6: 45 00 0.00 : 4327f8: 48 c7 44 24 08 e6 88 movq $0x4488e6,0x8(%rsp) 0.00 : 4327ff: 44 00 0.00 : 432801: 48 c7 04 24 89 aa 45 movq $0x45aa89,(%rsp) 0.00 : 432808: 00 0.00 : 432809: e8 c2 17 fd ff callq 403fd0 : _("storage_parameter"), : _("value"), : _("storage_parameter"), : _("new_owner"), : _("new_tablespace")); : } 0.00 : 43280e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/common/fe_memutils.c:47 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000433f90 : : return tmp; : } : : void * : pg_malloc0(size_t size) : { 0.00 : 433f90: 55 push %rbp 0.00 : 433f91: 48 89 e5 mov %rsp,%rbp 0.00 : 433f94: 41 54 push %r12 0.00 : 433f96: 53 push %rbx 0.00 : 433f97: 48 89 fb mov %rdi,%rbx : void *tmp; : : tmp = pg_malloc(size); 0.00 : 433f9a: e8 91 ff ff ff callq 433f30 0.00 : 433f9f: 49 89 c4 mov %rax,%r12 : MemSet(tmp, 0, size); 0.00 : 433fa2: 48 09 d8 or %rbx,%rax 0.00 : 433fa5: a8 07 test $0x7,%al 0.00 : 433fa7: 75 09 jne 433fb2 0.00 : 433fa9: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 433fb0: 76 1e jbe 433fd0 0.00 : 433fb2: 48 89 da mov %rbx,%rdx 0.00 : 433fb5: 31 f6 xor %esi,%esi 0.00 : 433fb7: 4c 89 e7 mov %r12,%rdi 0.00 : 433fba: e8 51 fa fc ff callq 403a10 : return tmp; : } 0.00 : 433fbf: 5b pop %rbx 0.00 : 433fc0: 4c 89 e0 mov %r12,%rax 0.00 : 433fc3: 41 5c pop %r12 0.00 : 433fc5: c9 leaveq 0.00 : 433fc6: c3 retq 0.00 : 433fc7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 433fce: 00 00 : pg_malloc0(size_t size) : { : void *tmp; : : tmp = pg_malloc(size); : MemSet(tmp, 0, size); 0.00 : 433fd0: 49 8d 14 1c lea (%r12,%rbx,1),%rdx 0.00 : 433fd4: 4c 89 e0 mov %r12,%rax 0.00 : 433fd7: 49 39 d4 cmp %rdx,%r12 0.00 : 433fda: 73 e3 jae 433fbf 0.00 : 433fdc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 433fe0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 433fe7: 48 83 c0 08 add $0x8,%rax 0.00 : 433feb: 48 39 c2 cmp %rax,%rdx 0.00 : 433fee: 77 f0 ja 433fe0 : return tmp; : } 100.00 : 433ff0: 5b pop %rbx 0.00 : 433ff1: 4c 89 e0 mov %r12,%rax 0.00 : 433ff4: 41 5c pop %r12 0.00 : 433ff6: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469360 <__isnanf@plt>: 100.00 : 469360: ff 25 b2 dc 6f 00 jmpq *0x6fdcb2(%rip) # b67018 <_GLOBAL_OFFSET_TABLE_+0x18> 0.00 : 469366: 68 00 00 00 00 pushq $0x0 0.00 : 46936b: e9 e0 ff ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 00000000004699f0 : ??:0 100.00 : 4699f0: ff 25 6a d9 6f 00 jmpq *0x6fd96a(%rip) # b67360 <_GLOBAL_OFFSET_TABLE_+0x360> 0.00 : 4699f6: 68 69 00 00 00 pushq $0x69 0.00 : 4699fb: e9 50 f9 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469b40 : 100.00 : 469b40: ff 25 c2 d8 6f 00 jmpq *0x6fd8c2(%rip) # b67408 <_GLOBAL_OFFSET_TABLE_+0x408> 0.00 : 469b46: 68 7e 00 00 00 pushq $0x7e 0.00 : 469b4b: e9 00 f8 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469c90 : ??:0 100.00 : 469c90: ff 25 1a d8 6f 00 jmpq *0x6fd81a(%rip) # b674b0 <_GLOBAL_OFFSET_TABLE_+0x4b0> 0.00 : 469c96: 68 93 00 00 00 pushq $0x93 0.00 : 469c9b: e9 b0 f6 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_tuple.c:334 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046d260 : : * Create a new DeformedBrTuple from scratch, and initialize it to an empty : * state. : */ : DeformedBrTuple * : brin_new_dtuple(BrinDesc *brdesc) : { 0.00 : 46d260: 55 push %rbp 0.00 : 46d261: 48 89 e5 mov %rsp,%rbp 0.00 : 46d264: 41 54 push %r12 0.00 : 46d266: 53 push %rbx : long basesize; : int i; : : basesize = MAXALIGN(sizeof(DeformedBrTuple) + : sizeof(BrinValues) * brdesc->bd_tupdesc->natts); : dtup = palloc0(basesize + sizeof(Datum) * brdesc->bd_totalstored); 0.00 : 46d267: 48 8b 47 10 mov 0x10(%rdi),%rax : * Create a new DeformedBrTuple from scratch, and initialize it to an empty : * state. : */ : DeformedBrTuple * : brin_new_dtuple(BrinDesc *brdesc) : { 0.00 : 46d26b: 48 89 fb mov %rdi,%rbx : long basesize; : int i; : : basesize = MAXALIGN(sizeof(DeformedBrTuple) + : sizeof(BrinValues) * brdesc->bd_tupdesc->natts); : dtup = palloc0(basesize + sizeof(Datum) * brdesc->bd_totalstored); 0.00 : 46d26e: 48 63 7f 20 movslq 0x20(%rdi),%rdi 0.00 : 46d272: 48 63 00 movslq (%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_tuple.c:334 100.00 : 46d275: 48 8d 44 00 01 lea 0x1(%rax,%rax,1),%rax 0.00 : 46d27a: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : 46d281: 00 0.00 : 46d282: 49 8d 3c fc lea (%r12,%rdi,8),%rdi 0.00 : 46d286: e8 e5 bc 32 00 callq 798f70 0.00 : 46d28b: 48 89 c7 mov %rax,%rdi : currdatum = (char *) dtup + basesize; : for (i = 0; i < brdesc->bd_tupdesc->natts; i++) 0.00 : 46d28e: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 46d292: 8b 30 mov (%rax),%esi 0.00 : 46d294: 85 f6 test %esi,%esi 0.00 : 46d296: 7e 40 jle 46d2d8 : int i; : : basesize = MAXALIGN(sizeof(DeformedBrTuple) + : sizeof(BrinValues) * brdesc->bd_tupdesc->natts); : dtup = palloc0(basesize + sizeof(Datum) * brdesc->bd_totalstored); : currdatum = (char *) dtup + basesize; 0.00 : 46d298: 4e 8d 04 27 lea (%rdi,%r12,1),%r8 0.00 : 46d29c: 31 f6 xor %esi,%esi 0.00 : 46d29e: 66 90 xchg %ax,%ax : for (i = 0; i < brdesc->bd_tupdesc->natts; i++) : { : dtup->dt_columns[i].attno = i + 1; 0.00 : 46d2a0: 48 63 ce movslq %esi,%rcx 0.00 : 46d2a3: 8d 56 01 lea 0x1(%rsi),%edx : : basesize = MAXALIGN(sizeof(DeformedBrTuple) + : sizeof(BrinValues) * brdesc->bd_tupdesc->natts); : dtup = palloc0(basesize + sizeof(Datum) * brdesc->bd_totalstored); : currdatum = (char *) dtup + basesize; : for (i = 0; i < brdesc->bd_tupdesc->natts; i++) 0.00 : 46d2a6: 83 c6 01 add $0x1,%esi : { : dtup->dt_columns[i].attno = i + 1; 0.00 : 46d2a9: 48 89 c8 mov %rcx,%rax 0.00 : 46d2ac: 48 c1 e0 04 shl $0x4,%rax : dtup->dt_columns[i].allnulls = true; : dtup->dt_columns[i].hasnulls = false; : dtup->dt_columns[i].values = (Datum *) currdatum; 0.00 : 46d2b0: 4c 89 44 07 10 mov %r8,0x10(%rdi,%rax,1) : sizeof(BrinValues) * brdesc->bd_tupdesc->natts); : dtup = palloc0(basesize + sizeof(Datum) * brdesc->bd_totalstored); : currdatum = (char *) dtup + basesize; : for (i = 0; i < brdesc->bd_tupdesc->natts; i++) : { : dtup->dt_columns[i].attno = i + 1; 0.00 : 46d2b5: 66 89 54 38 08 mov %dx,0x8(%rax,%rdi,1) : dtup->dt_columns[i].allnulls = true; 0.00 : 46d2ba: c6 44 38 0b 01 movb $0x1,0xb(%rax,%rdi,1) : dtup->dt_columns[i].hasnulls = false; 0.00 : 46d2bf: c6 44 38 0a 00 movb $0x0,0xa(%rax,%rdi,1) : dtup->dt_columns[i].values = (Datum *) currdatum; : currdatum += sizeof(Datum) * brdesc->bd_info[i]->oi_nstored; 0.00 : 46d2c4: 48 8b 44 cb 28 mov 0x28(%rbx,%rcx,8),%rax 0.00 : 46d2c9: 0f b7 00 movzwl (%rax),%eax 0.00 : 46d2cc: 4d 8d 04 c0 lea (%r8,%rax,8),%r8 : : basesize = MAXALIGN(sizeof(DeformedBrTuple) + : sizeof(BrinValues) * brdesc->bd_tupdesc->natts); : dtup = palloc0(basesize + sizeof(Datum) * brdesc->bd_totalstored); : currdatum = (char *) dtup + basesize; : for (i = 0; i < brdesc->bd_tupdesc->natts; i++) 0.00 : 46d2d0: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 46d2d4: 39 30 cmp %esi,(%rax) 0.00 : 46d2d6: 7f c8 jg 46d2a0 : dtup->dt_columns[i].values = (Datum *) currdatum; : currdatum += sizeof(Datum) * brdesc->bd_info[i]->oi_nstored; : } : : return dtup; : } 0.00 : 46d2d8: 5b pop %rbx 0.00 : 46d2d9: 48 89 f8 mov %rdi,%rax 0.00 : 46d2dc: 41 5c pop %r12 0.00 : 46d2de: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:320 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046e480 : : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { 0.00 : 46e480: 55 push %rbp : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; 0.00 : 46e481: 0f b7 c6 movzwl %si,%eax 0.00 : 46e484: 83 e8 01 sub $0x1,%eax : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { 0.00 : 46e487: 48 89 e5 mov %rsp,%rbp : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; 0.00 : 46e48a: 48 98 cltq : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { 0.00 : 46e48c: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 46e490: 4c 89 6d e8 mov %r13,-0x18(%rbp) : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; 0.00 : 46e494: 44 8d 6a fb lea -0x5(%rdx),%r13d : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { 0.00 : 46e498: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 46e49c: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 46e4a0: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 46e4a4: 48 83 ec 30 sub $0x30,%rsp : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; 0.00 : 46e4a8: 48 8b 44 c7 28 mov 0x28(%rdi,%rax,8),%rax : : /* : * We cache these in the opaque struct, to avoid repetitive syscache : * lookups. : */ : if (!opaque->inited[basenum]) 0.00 : 46e4ad: 45 0f b7 fd movzwl %r13w,%r15d 0.00 : 46e4b1: 4d 89 fc mov %r15,%r12 : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; 0.00 : 46e4b4: 4c 8b 70 08 mov 0x8(%rax),%r14 : : /* : * We cache these in the opaque struct, to avoid repetitive syscache : * lookups. : */ : if (!opaque->inited[basenum]) 0.00 : 46e4b8: 43 80 bc 3e c0 00 00 cmpb $0x0,0xc0(%r14,%r15,1) 0.00 : 46e4bf: 00 00 0.00 : 46e4c1: 75 36 jne 46e4f9 : { : fmgr_info_copy(&opaque->operators[basenum], 0.00 : 46e4c3: 48 8b 1f mov (%rdi),%rbx 0.00 : 46e4c6: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 46e4ca: 0f b7 d2 movzwl %dx,%edx 0.00 : 46e4cd: 0f bf f6 movswl %si,%esi 0.00 : 46e4d0: 45 0f b7 e5 movzwl %r13w,%r12d 0.00 : 46e4d4: e8 e7 6b 03 00 callq 4a50c0 0.00 : 46e4d9: 4b 8d 3c 64 lea (%r12,%r12,2),%rdi 0.00 : 46e4dd: 48 89 c6 mov %rax,%rsi 0.00 : 46e4e0: 48 89 da mov %rbx,%rdx 0.00 : 46e4e3: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 46e4e7: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 46e4eb: e8 50 12 31 00 callq 77f740 : index_getprocinfo(bdesc->bd_index, attno, procnum), : bdesc->bd_context); : opaque->inited[basenum] = true; 0.00 : 46e4f0: 43 c6 84 3e c0 00 00 movb $0x1,0xc0(%r14,%r15,1) 0.00 : 46e4f7: 00 01 0.00 : 46e4f9: 4b 8d 04 64 lea (%r12,%r12,2),%rax : } : : return &opaque->operators[basenum]; : } 0.00 : 46e4fd: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 46e501: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 46e505: 4c 8b 6d e8 mov -0x18(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:320 100.00 : 46e509: 4c 8b 7d f8 mov -0x8(%rbp),%r15 : if (!opaque->inited[basenum]) : { : fmgr_info_copy(&opaque->operators[basenum], : index_getprocinfo(bdesc->bd_index, attno, procnum), : bdesc->bd_context); : opaque->inited[basenum] = true; 0.00 : 46e50d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46e511: 49 8d 04 06 lea (%r14,%rax,1),%rax : } : : return &opaque->operators[basenum]; : } 0.00 : 46e515: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 46e519: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:617 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046eb20 : : * allocated as a single palloc() block (unlike with heap_copytuple()). : * ---------------- : */ : void : heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest) : { 0.00 : 46eb20: 55 push %rbp 0.00 : 46eb21: 48 89 e5 mov %rsp,%rbp 0.00 : 46eb24: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 46eb28: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 46eb2c: 48 83 ec 10 sub $0x10,%rsp : if (!HeapTupleIsValid(src) || src->t_data == NULL) 0.00 : 46eb30: 48 85 ff test %rdi,%rdi : * allocated as a single palloc() block (unlike with heap_copytuple()). : * ---------------- : */ : void : heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest) : { 0.00 : 46eb33: 48 89 fb mov %rdi,%rbx 0.00 : 46eb36: 49 89 f4 mov %rsi,%r12 : if (!HeapTupleIsValid(src) || src->t_data == NULL) 0.00 : 46eb39: 74 45 je 46eb80 0.00 : 46eb3b: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) 0.00 : 46eb40: 74 3e je 46eb80 : { : dest->t_data = NULL; : return; : } : : dest->t_len = src->t_len; 0.00 : 46eb42: 8b 07 mov (%rdi),%eax 0.00 : 46eb44: 89 06 mov %eax,(%rsi) : dest->t_self = src->t_self; 0.00 : 46eb46: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 46eb49: 89 46 04 mov %eax,0x4(%rsi) 0.00 : 46eb4c: 0f b7 47 08 movzwl 0x8(%rdi),%eax 0.00 : 46eb50: 66 89 46 08 mov %ax,0x8(%rsi) : dest->t_tableOid = src->t_tableOid; 0.00 : 46eb54: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 46eb57: 89 46 0c mov %eax,0xc(%rsi) : dest->t_data = (HeapTupleHeader) palloc(src->t_len); 0.00 : 46eb5a: 8b 3f mov (%rdi),%edi 0.00 : 46eb5c: e8 ef a1 32 00 callq 798d50 0.00 : 46eb61: 49 89 44 24 10 mov %rax,0x10(%r12) : memcpy((char *) dest->t_data, (char *) src->t_data, src->t_len); 0.00 : 46eb66: 8b 13 mov (%rbx),%edx : } : : dest->t_len = src->t_len; : dest->t_self = src->t_self; : dest->t_tableOid = src->t_tableOid; : dest->t_data = (HeapTupleHeader) palloc(src->t_len); 0.00 : 46eb68: 48 89 c7 mov %rax,%rdi : memcpy((char *) dest->t_data, (char *) src->t_data, src->t_len); 0.00 : 46eb6b: 48 8b 73 10 mov 0x10(%rbx),%rsi : } 0.00 : 46eb6f: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 46eb74: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 46eb78: c9 leaveq : : dest->t_len = src->t_len; : dest->t_self = src->t_self; : dest->t_tableOid = src->t_tableOid; : dest->t_data = (HeapTupleHeader) palloc(src->t_len); : memcpy((char *) dest->t_data, (char *) src->t_data, src->t_len); 100.00 : 46eb79: e9 72 b0 ff ff jmpq 469bf0 0.00 : 46eb7e: 66 90 xchg %ax,%ax : void : heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest) : { : if (!HeapTupleIsValid(src) || src->t_data == NULL) : { : dest->t_data = NULL; 0.00 : 46eb80: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 46eb87: 00 00 : dest->t_len = src->t_len; : dest->t_self = src->t_self; : dest->t_tableOid = src->t_tableOid; : dest->t_data = (HeapTupleHeader) palloc(src->t_len); : memcpy((char *) dest->t_data, (char *) src->t_data, src->t_len); : } 0.00 : 46eb89: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 46eb8d: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 46eb92: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:583 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046eba0 : : * as a single palloc() block. : * ---------------- : */ : HeapTuple : heap_copytuple(HeapTuple tuple) : { 0.00 : 46eba0: 55 push %rbp 0.00 : 46eba1: 48 89 e5 mov %rsp,%rbp 0.00 : 46eba4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 46eba8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 46ebac: 48 83 ec 10 sub $0x10,%rsp : HeapTuple newTuple; : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) 0.00 : 46ebb0: 48 85 ff test %rdi,%rdi : * as a single palloc() block. : * ---------------- : */ : HeapTuple : heap_copytuple(HeapTuple tuple) : { 0.00 : 46ebb3: 48 89 fb mov %rdi,%rbx : HeapTuple newTuple; : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) 0.00 : 46ebb6: 75 18 jne 46ebd0 : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); : newTuple->t_len = tuple->t_len; : newTuple->t_self = tuple->t_self; : newTuple->t_tableOid = tuple->t_tableOid; : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); : memcpy((char *) newTuple->t_data, (char *) tuple->t_data, tuple->t_len); 0.00 : 46ebb8: 45 31 e4 xor %r12d,%r12d : return newTuple; : } 0.00 : 46ebbb: 4c 89 e0 mov %r12,%rax 0.00 : 46ebbe: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 46ebc2: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 46ebc7: c9 leaveq 0.00 : 46ebc8: c3 retq 0.00 : 46ebc9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : HeapTuple : heap_copytuple(HeapTuple tuple) : { : HeapTuple newTuple; : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:583 100.00 : 46ebd0: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) 0.00 : 46ebd5: 74 e1 je 46ebb8 : return NULL; : : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); 0.00 : 46ebd7: 8b 3f mov (%rdi),%edi 0.00 : 46ebd9: 48 83 c7 18 add $0x18,%rdi 0.00 : 46ebdd: e8 6e a1 32 00 callq 798d50 0.00 : 46ebe2: 49 89 c4 mov %rax,%r12 : newTuple->t_len = tuple->t_len; 0.00 : 46ebe5: 8b 03 mov (%rbx),%eax : newTuple->t_self = tuple->t_self; : newTuple->t_tableOid = tuple->t_tableOid; : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); 0.00 : 46ebe7: 49 8d 7c 24 18 lea 0x18(%r12),%rdi : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) : return NULL; : : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); : newTuple->t_len = tuple->t_len; 0.00 : 46ebec: 41 89 04 24 mov %eax,(%r12) : newTuple->t_self = tuple->t_self; 0.00 : 46ebf0: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 46ebf3: 41 89 44 24 04 mov %eax,0x4(%r12) 0.00 : 46ebf8: 0f b7 43 08 movzwl 0x8(%rbx),%eax 0.00 : 46ebfc: 66 41 89 44 24 08 mov %ax,0x8(%r12) : newTuple->t_tableOid = tuple->t_tableOid; 0.00 : 46ec02: 8b 43 0c mov 0xc(%rbx),%eax : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); 0.00 : 46ec05: 49 89 7c 24 10 mov %rdi,0x10(%r12) : return NULL; : : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); : newTuple->t_len = tuple->t_len; : newTuple->t_self = tuple->t_self; : newTuple->t_tableOid = tuple->t_tableOid; 0.00 : 46ec0a: 41 89 44 24 0c mov %eax,0xc(%r12) : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); : memcpy((char *) newTuple->t_data, (char *) tuple->t_data, tuple->t_len); 0.00 : 46ec0f: 8b 13 mov (%rbx),%edx 0.00 : 46ec11: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 46ec15: e8 d6 af ff ff callq 469bf0 : return newTuple; : } 0.00 : 46ec1a: eb 9f jmp 46ebbb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1513 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1513 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1519 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ec20 : : * The HeapTuple struct, tuple header, and tuple data are all allocated : * as a single palloc() block. : */ : HeapTuple : heap_tuple_from_minimal_tuple(MinimalTuple mtup) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1513 33.33 : 46ec20: 55 push %rbp 0.00 : 46ec21: 48 89 e5 mov %rsp,%rbp 0.00 : 46ec24: 48 89 5d e8 mov %rbx,-0x18(%rbp) 33.33 : 46ec28: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 46ec2c: 49 89 fd mov %rdi,%r13 0.00 : 46ec2f: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 46ec33: 48 83 ec 20 sub $0x20,%rsp : HeapTuple result; : uint32 len = mtup->t_len + MINIMAL_TUPLE_OFFSET; 0.00 : 46ec37: 44 8b 27 mov (%rdi),%r12d 0.00 : 46ec3a: 41 83 c4 08 add $0x8,%r12d : : result = (HeapTuple) palloc(HEAPTUPLESIZE + len); 0.00 : 46ec3e: 44 89 e7 mov %r12d,%edi 0.00 : 46ec41: 48 83 c7 18 add $0x18,%rdi 0.00 : 46ec45: e8 06 a1 32 00 callq 798d50 0.00 : 46ec4a: 48 89 c3 mov %rax,%rbx : result->t_len = len; 0.00 : 46ec4d: 44 89 20 mov %r12d,(%rax) : ItemPointerSetInvalid(&(result->t_self)); 0.00 : 46ec50: 66 c7 40 04 ff ff movw $0xffff,0x4(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1519 33.33 : 46ec56: 66 c7 40 06 ff ff movw $0xffff,0x6(%rax) 0.00 : 46ec5c: 66 c7 40 08 00 00 movw $0x0,0x8(%rax) : result->t_tableOid = InvalidOid; : result->t_data = (HeapTupleHeader) ((char *) result + HEAPTUPLESIZE); : memcpy((char *) result->t_data + MINIMAL_TUPLE_OFFSET, mtup, mtup->t_len); 0.00 : 46ec62: 48 8d 7b 20 lea 0x20(%rbx),%rdi : uint32 len = mtup->t_len + MINIMAL_TUPLE_OFFSET; : : result = (HeapTuple) palloc(HEAPTUPLESIZE + len); : result->t_len = len; : ItemPointerSetInvalid(&(result->t_self)); : result->t_tableOid = InvalidOid; 0.00 : 46ec66: c7 40 0c 00 00 00 00 movl $0x0,0xc(%rax) : result->t_data = (HeapTupleHeader) ((char *) result + HEAPTUPLESIZE); 0.00 : 46ec6d: 48 8d 40 18 lea 0x18(%rax),%rax : memcpy((char *) result->t_data + MINIMAL_TUPLE_OFFSET, mtup, mtup->t_len); 0.00 : 46ec71: 4c 89 ee mov %r13,%rsi : : result = (HeapTuple) palloc(HEAPTUPLESIZE + len); : result->t_len = len; : ItemPointerSetInvalid(&(result->t_self)); : result->t_tableOid = InvalidOid; : result->t_data = (HeapTupleHeader) ((char *) result + HEAPTUPLESIZE); 0.00 : 46ec74: 48 89 43 10 mov %rax,0x10(%rbx) : memcpy((char *) result->t_data + MINIMAL_TUPLE_OFFSET, mtup, mtup->t_len); 0.00 : 46ec78: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 46ec7c: e8 6f af ff ff callq 469bf0 : memset(result->t_data, 0, offsetof(HeapTupleHeaderData, t_infomask2)); 0.00 : 46ec81: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 46ec85: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 46ec8c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 46ec93: 00 0.00 : 46ec94: 66 c7 40 10 00 00 movw $0x0,0x10(%rax) : return result; : } 0.00 : 46ec9a: 48 89 d8 mov %rbx,%rax 0.00 : 46ec9d: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 46eca1: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 46eca5: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 46eca9: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:407 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000470b60 : : */ : Datum : nocache_index_getattr(IndexTuple tup, : int attnum, : TupleDesc tupleDesc) : { 0.00 : 470b60: 55 push %rbp 0.00 : 470b61: 49 89 f9 mov %rdi,%r9 0.00 : 470b64: 48 89 d7 mov %rdx,%rdi 0.00 : 470b67: 48 89 e5 mov %rsp,%rbp 0.00 : 470b6a: 41 57 push %r15 0.00 : 470b6c: 41 56 push %r14 0.00 : 470b6e: 41 55 push %r13 0.00 : 470b70: 41 54 push %r12 0.00 : 470b72: 53 push %rbx 0.00 : 470b73: 48 83 ec 28 sub $0x28,%rsp : * 2: Has a null or a var-width AFTER att. : * 3: Has nulls or var-widths BEFORE att. : * ---------------- : */ : : data_off = IndexInfoFindDataOffset(tup->t_info); 0.00 : 470b77: 45 0f b7 41 06 movzwl 0x6(%r9),%r8d : Datum : nocache_index_getattr(IndexTuple tup, : int attnum, : TupleDesc tupleDesc) : { : Form_pg_attribute *att = tupleDesc->attrs; 0.00 : 470b7c: 4c 8b 7a 08 mov 0x8(%rdx),%r15 : * 2: Has a null or a var-width AFTER att. : * 3: Has nulls or var-widths BEFORE att. : * ---------------- : */ : : data_off = IndexInfoFindDataOffset(tup->t_info); 0.00 : 470b80: 66 45 85 c0 test %r8w,%r8w 0.00 : 470b84: 78 6a js 470bf0 : : attnum--; 0.00 : 470b86: 44 8d 56 ff lea -0x1(%rsi),%r10d 0.00 : 470b8a: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp) 0.00 : 470b91: 00 0.00 : 470b92: b8 08 00 00 00 mov $0x8,%eax : } : } : } : } : : tp = (char *) tup + data_off; 0.00 : 470b97: 4d 8d 1c 01 lea (%r9,%rax,1),%r11 : { : /* : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) 0.00 : 470b9b: 49 63 c2 movslq %r10d,%rax 0.00 : 470b9e: 49 8d 1c c7 lea (%r15,%rax,8),%rbx 0.00 : 470ba2: 48 8b 13 mov (%rbx),%rdx 0.00 : 470ba5: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 470ba8: 85 c0 test %eax,%eax 0.00 : 470baa: 0f 88 8c 03 00 00 js 470f3c : { : return fetchatt(att[attnum], 0.00 : 470bb0: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 470bb4: 0f 84 c6 02 00 00 je 470e80 0.00 : 470bba: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 470bbe: 66 83 fa 08 cmp $0x8,%dx 0.00 : 470bc2: 0f 84 e8 04 00 00 je 4710b0 0.00 : 470bc8: 66 83 fa 04 cmp $0x4,%dx 0.00 : 470bcc: 0f 84 1c 05 00 00 je 4710ee 0.00 : 470bd2: 66 83 fa 02 cmp $0x2,%dx 0.00 : 470bd6: 0f 84 1d 05 00 00 je 4710f9 0.00 : 470bdc: 48 98 cltq 0.00 : 470bde: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax 0.00 : 470be3: e9 6f 02 00 00 jmpq 470e57 0.00 : 470be8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470bef: 00 : * ---------------- : */ : : data_off = IndexInfoFindDataOffset(tup->t_info); : : attnum--; 0.00 : 470bf0: 44 8d 56 ff lea -0x1(%rsi),%r10d : * : * check to see if desired att is null : */ : : /* XXX "knows" t_bits are just after fixed tuple header! */ : bp = (bits8 *) ((char *) tup + sizeof(IndexTupleData)); 0.00 : 470bf4: 49 8d 41 08 lea 0x8(%r9),%rax : : /* : * Now check to see if any preceding bits are null... : */ : { : int byte = attnum >> 3; 0.00 : 470bf8: 44 89 d6 mov %r10d,%esi : * : * check to see if desired att is null : */ : : /* XXX "knows" t_bits are just after fixed tuple header! */ : bp = (bits8 *) ((char *) tup + sizeof(IndexTupleData)); 0.00 : 470bfb: 48 89 45 d0 mov %rax,-0x30(%rbp) : { : int byte = attnum >> 3; : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 470bff: 44 89 d1 mov %r10d,%ecx : : /* : * Now check to see if any preceding bits are null... : */ : { : int byte = attnum >> 3; 0.00 : 470c02: c1 fe 03 sar $0x3,%esi : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 470c05: 83 e1 07 and $0x7,%ecx 0.00 : 470c08: 48 63 c6 movslq %esi,%rax 0.00 : 470c0b: 41 0f b6 54 01 08 movzbl 0x8(%r9,%rax,1),%edx 0.00 : 470c11: b8 01 00 00 00 mov $0x1,%eax 0.00 : 470c16: d3 e0 shl %cl,%eax 0.00 : 470c18: 83 e8 01 sub $0x1,%eax 0.00 : 470c1b: f7 d2 not %edx 0.00 : 470c1d: 85 c2 test %eax,%edx 0.00 : 470c1f: 0f 84 8b 02 00 00 je 470eb0 : } : } : } : } : : tp = (char *) tup + data_off; 0.00 : 470c25: 4d 8d 59 10 lea 0x10(%r9),%r11 : */ : if (IndexTupleHasVarwidths(tup)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 470c29: 31 f6 xor %esi,%esi 0.00 : 470c2b: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 470c31: 45 31 ed xor %r13d,%r13d 0.00 : 470c34: eb 78 jmp 470cae 0.00 : 470c36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 470c3d: 00 00 00 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) 0.00 : 470c40: 49 63 fd movslq %r13d,%rdi 0.00 : 470c43: 49 8b 14 ff mov (%r15,%rdi,8),%rdx : off = att[i]->attcacheoff; : else if (att[i]->attlen == -1) 0.00 : 470c47: 66 83 7a 4c ff cmpw $0xffff,0x4c(%rdx) 0.00 : 470c4c: 0f 84 2e 01 00 00 je 470d80 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 470c52: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 470c56: 3c 69 cmp $0x69,%al 0.00 : 470c58: 0f 84 a2 01 00 00 je 470e00 0.00 : 470c5e: 3c 63 cmp $0x63,%al 0.00 : 470c60: 74 0e je 470c70 0.00 : 470c62: 3c 64 cmp $0x64,%al 0.00 : 470c64: 0f 84 06 02 00 00 je 470e70 0.00 : 470c6a: 83 c6 01 add $0x1,%esi 0.00 : 470c6d: 83 e6 fe and $0xfffffffe,%esi : : if (usecache) 0.00 : 470c70: 45 84 f6 test %r14b,%r14b 0.00 : 470c73: 74 03 je 470c78 : att[i]->attcacheoff = off; 0.00 : 470c75: 89 72 54 mov %esi,0x54(%rdx) : } : : if (i == attnum) 0.00 : 470c78: 45 39 d5 cmp %r10d,%r13d 0.00 : 470c7b: 74 57 je 470cd4 : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470c7d: 49 8b 04 ff mov (%r15,%rdi,8),%rax 0.00 : 470c81: 44 0f b7 60 4c movzwl 0x4c(%rax),%r12d 0.00 : 470c86: 66 45 85 e4 test %r12w,%r12w 0.00 : 470c8a: 0f 8e c0 00 00 00 jle 470d50 0.00 : 470c90: 41 0f bf c4 movswl %r12w,%eax 0.00 : 470c94: 01 c6 add %eax,%esi : : if (usecache && att[i]->attlen <= 0) 0.00 : 470c96: 45 84 f6 test %r14b,%r14b 0.00 : 470c99: 74 0a je 470ca5 0.00 : 470c9b: 66 45 85 e4 test %r12w,%r12w 0.00 : 470c9f: 0f 8e 9b 01 00 00 jle 470e40 0.00 : 470ca5: 45 0f b7 41 06 movzwl 0x6(%r9),%r8d : * then advance over the attr based on its length. Nulls have no : * storage and no alignment padding either. We can use/set : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ 0.00 : 470caa: 41 83 c5 01 add $0x1,%r13d : { : if (IndexTupleHasNulls(tup) && att_isnull(i, bp)) 0.00 : 470cae: 66 45 85 c0 test %r8w,%r8w 0.00 : 470cb2: 78 6c js 470d20 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) 0.00 : 470cb4: 45 84 f6 test %r14b,%r14b 0.00 : 470cb7: 74 87 je 470c40 0.00 : 470cb9: 49 63 fd movslq %r13d,%rdi 0.00 : 470cbc: 49 8b 14 ff mov (%r15,%rdi,8),%rdx 0.00 : 470cc0: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 470cc3: 85 c0 test %eax,%eax 0.00 : 470cc5: 78 80 js 470c47 : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) 0.00 : 470cc7: 45 39 d5 cmp %r10d,%r13d : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) 0.00 : 470cca: 89 c6 mov %eax,%esi 0.00 : 470ccc: 41 be 01 00 00 00 mov $0x1,%r14d : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) 0.00 : 470cd2: 75 a9 jne 470c7d : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) : usecache = false; : } 0.00 : 470cd4: 49 8b 04 ff mov (%r15,%rdi,8),%rax : } : : return fetchatt(att[attnum], tp + off); 0.00 : 470cd8: 80 78 5c 00 cmpb $0x0,0x5c(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 33.33 : 470cdc: 0f 84 6e 01 00 00 je 470e50 0.00 : 470ce2: 0f b7 40 4c movzwl 0x4c(%rax),%eax 0.00 : 470ce6: 66 83 f8 08 cmp $0x8,%ax 0.00 : 470cea: 0f 84 80 03 00 00 je 471070 0.00 : 470cf0: 66 83 f8 04 cmp $0x4,%ax 0.00 : 470cf4: 0f 84 06 02 00 00 je 470f00 0.00 : 470cfa: 66 83 f8 02 cmp $0x2,%ax 0.00 : 470cfe: 66 90 xchg %ax,%ax 0.00 : 470d00: 0f 84 ca 03 00 00 je 4710d0 0.00 : 470d06: 48 63 c6 movslq %esi,%rax 0.00 : 470d09: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax : } 0.00 : 470d0e: 48 83 c4 28 add $0x28,%rsp 0.00 : 470d12: 5b pop %rbx 0.00 : 470d13: 41 5c pop %r12 0.00 : 470d15: 41 5d pop %r13 0.00 : 470d17: 41 5e pop %r14 0.00 : 470d19: 41 5f pop %r15 0.00 : 470d1b: c9 leaveq 0.00 : 470d1c: c3 retq 0.00 : 470d1d: 0f 1f 00 nopl (%rax) : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ : { : if (IndexTupleHasNulls(tup) && att_isnull(i, bp)) 0.00 : 470d20: 44 89 e8 mov %r13d,%eax 0.00 : 470d23: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 470d27: 44 89 e9 mov %r13d,%ecx 0.00 : 470d2a: c1 f8 03 sar $0x3,%eax 0.00 : 470d2d: 83 e1 07 and $0x7,%ecx 0.00 : 470d30: 48 98 cltq 0.00 : 470d32: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : 470d36: d3 f8 sar %cl,%eax 0.00 : 470d38: a8 01 test $0x1,%al 0.00 : 470d3a: 0f 85 74 ff ff ff jne 470cb4 : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) 0.00 : 470d40: 45 31 f6 xor %r14d,%r14d 0.00 : 470d43: e9 62 ff ff ff jmpq 470caa 0.00 : 470d48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470d4f: 00 : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470d50: 66 41 83 fc ff cmp $0xffff,%r12w 0.00 : 470d55: 0f 85 b5 00 00 00 jne 470e10 0.00 : 470d5b: 48 63 d6 movslq %esi,%rdx 0.00 : 470d5e: 41 0f b6 04 13 movzbl (%r11,%rdx,1),%eax 0.00 : 470d63: 3c 01 cmp $0x1,%al 0.00 : 470d65: 0f 84 a5 01 00 00 je 470f10 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 33.33 : 470d6b: a8 01 test $0x1,%al 0.00 : 470d6d: 0f 84 25 01 00 00 je 470e98 0.00 : 470d73: d0 e8 shr %al 0.00 : 470d75: 0f b6 c0 movzbl %al,%eax 0.00 : 470d78: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 470d7b: e9 16 ff ff ff jmpq 470c96 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 470d80: 45 84 f6 test %r14b,%r14b 0.00 : 470d83: 48 63 c6 movslq %esi,%rax 0.00 : 470d86: 74 30 je 470db8 0.00 : 470d88: 0f b6 4a 5e movzbl 0x5e(%rdx),%ecx 0.00 : 470d8c: 80 f9 69 cmp $0x69,%cl 0.00 : 470d8f: 0f 84 cb 02 00 00 je 471060 0.00 : 470d95: 80 f9 63 cmp $0x63,%cl 0.00 : 470d98: 0f 84 52 01 00 00 je 470ef0 0.00 : 470d9e: 80 f9 64 cmp $0x64,%cl 0.00 : 470da1: 0f 84 19 03 00 00 je 4710c0 0.00 : 470da7: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 470dab: 48 83 e1 fe and $0xfffffffffffffffe,%rcx 0.00 : 470daf: 48 39 c1 cmp %rax,%rcx 0.00 : 470db2: 0f 84 38 01 00 00 je 470ef0 : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 470db8: 41 80 3c 03 00 cmpb $0x0,(%r11,%rax,1) 0.00 : 470dbd: 75 31 jne 470df0 0.00 : 470dbf: 0f b6 52 5e movzbl 0x5e(%rdx),%edx 0.00 : 470dc3: 80 fa 69 cmp $0x69,%dl 0.00 : 470dc6: 0f 84 c4 02 00 00 je 471090 0.00 : 470dcc: 80 fa 63 cmp $0x63,%dl 0.00 : 470dcf: 90 nop 0.00 : 470dd0: 74 1e je 470df0 0.00 : 470dd2: 80 fa 64 cmp $0x64,%dl 0.00 : 470dd5: 0f 84 05 03 00 00 je 4710e0 0.00 : 470ddb: 48 83 c0 01 add $0x1,%rax 0.00 : 470ddf: 45 31 f6 xor %r14d,%r14d 0.00 : 470de2: 89 c6 mov %eax,%esi 0.00 : 470de4: 83 e6 fe and $0xfffffffe,%esi 0.00 : 470de7: e9 8c fe ff ff jmpq 470c78 0.00 : 470dec: 0f 1f 40 00 nopl 0x0(%rax) : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); : : if (usecache) : att[i]->attcacheoff = off; 0.00 : 470df0: 45 31 f6 xor %r14d,%r14d 0.00 : 470df3: e9 80 fe ff ff jmpq 470c78 0.00 : 470df8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470dff: 00 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 470e00: 83 c6 03 add $0x3,%esi 0.00 : 470e03: 83 e6 fc and $0xfffffffc,%esi 0.00 : 470e06: e9 65 fe ff ff jmpq 470c70 0.00 : 470e0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470e10: 48 63 de movslq %esi,%rbx 0.00 : 470e13: 4c 89 4d c8 mov %r9,-0x38(%rbp) 0.00 : 470e17: 44 89 55 c0 mov %r10d,-0x40(%rbp) 0.00 : 470e1b: 49 8d 3c 1b lea (%r11,%rbx,1),%rdi 0.00 : 470e1f: 4c 89 5d b8 mov %r11,-0x48(%rbp) 0.00 : 470e23: e8 28 8a ff ff callq 469850 0.00 : 470e28: 4c 8b 5d b8 mov -0x48(%rbp),%r11 0.00 : 470e2c: 8d 74 03 01 lea 0x1(%rbx,%rax,1),%esi 0.00 : 470e30: 44 8b 55 c0 mov -0x40(%rbp),%r10d 0.00 : 470e34: 4c 8b 4d c8 mov -0x38(%rbp),%r9 0.00 : 470e38: e9 59 fe ff ff jmpq 470c96 0.00 : 470e3d: 0f 1f 00 nopl (%rax) 0.00 : 470e40: 45 0f b7 41 06 movzwl 0x6(%r9),%r8d 0.00 : 470e45: e9 f6 fe ff ff jmpq 470d40 0.00 : 470e4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 470e50: 48 63 c6 movslq %esi,%rax 0.00 : 470e53: 49 8d 04 03 lea (%r11,%rax,1),%rax : } 0.00 : 470e57: 48 83 c4 28 add $0x28,%rsp 0.00 : 470e5b: 5b pop %rbx 0.00 : 470e5c: 41 5c pop %r12 0.00 : 470e5e: 41 5d pop %r13 0.00 : 470e60: 41 5e pop %r14 0.00 : 470e62: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:407 33.33 : 470e64: c9 leaveq 0.00 : 470e65: c3 retq 0.00 : 470e66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 470e6d: 00 00 00 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 470e70: 83 c6 07 add $0x7,%esi 0.00 : 470e73: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 470e76: e9 f5 fd ff ff jmpq 470c70 0.00 : 470e7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 470e80: 48 83 c4 28 add $0x28,%rsp : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 470e84: 48 98 cltq : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 470e86: 5b pop %rbx 0.00 : 470e87: 41 5c pop %r12 0.00 : 470e89: 41 5d pop %r13 0.00 : 470e8b: 41 5e pop %r14 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 470e8d: 49 8d 04 03 lea (%r11,%rax,1),%rax : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 470e91: 41 5f pop %r15 0.00 : 470e93: c9 leaveq 0.00 : 470e94: c3 retq 0.00 : 470e95: 0f 1f 00 nopl (%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470e98: 41 8b 04 13 mov (%r11,%rdx,1),%eax 0.00 : 470e9c: c1 e8 02 shr $0x2,%eax 0.00 : 470e9f: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 470ea2: e9 ef fd ff ff jmpq 470c96 0.00 : 470ea7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 470eae: 00 00 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 470eb0: 85 f6 test %esi,%esi 0.00 : 470eb2: 7e 2b jle 470edf : { : if (bp[i] != 0xFF) 0.00 : 470eb4: 31 d2 xor %edx,%edx 0.00 : 470eb6: 41 80 79 08 ff cmpb $0xff,0x8(%r9) 0.00 : 470ebb: 4c 89 c9 mov %r9,%rcx 0.00 : 470ebe: 74 18 je 470ed8 0.00 : 470ec0: e9 60 fd ff ff jmpq 470c25 0.00 : 470ec5: 0f 1f 00 nopl (%rax) 0.00 : 470ec8: 0f b6 41 09 movzbl 0x9(%rcx),%eax 0.00 : 470ecc: 48 83 c1 01 add $0x1,%rcx 0.00 : 470ed0: 04 01 add $0x1,%al 0.00 : 470ed2: 0f 85 4d fd ff ff jne 470c25 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 470ed8: 83 c2 01 add $0x1,%edx 0.00 : 470edb: 39 d6 cmp %edx,%esi 0.00 : 470edd: 7f e9 jg 470ec8 0.00 : 470edf: b8 10 00 00 00 mov $0x10,%eax 0.00 : 470ee4: e9 ae fc ff ff jmpq 470b97 0.00 : 470ee9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; 0.00 : 470ef0: 89 72 54 mov %esi,0x54(%rdx) 0.00 : 470ef3: 41 be 01 00 00 00 mov $0x1,%r14d : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 470ef9: e9 7a fd ff ff jmpq 470c78 0.00 : 470efe: 66 90 xchg %ax,%ax : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 470f00: 48 63 c6 movslq %esi,%rax 0.00 : 470f03: 41 8b 04 03 mov (%r11,%rax,1),%eax 0.00 : 470f07: e9 4b ff ff ff jmpq 470e57 0.00 : 470f0c: 0f 1f 40 00 nopl 0x0(%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470f10: 41 0f b6 54 13 01 movzbl 0x1(%r11,%rdx,1),%edx 0.00 : 470f16: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 470f1b: 80 fa 01 cmp $0x1,%dl 0.00 : 470f1e: 0f 84 54 fe ff ff je 470d78 0.00 : 470f24: 80 fa 12 cmp $0x12,%dl 0.00 : 470f27: b8 03 00 00 00 mov $0x3,%eax 0.00 : 470f2c: ba 12 00 00 00 mov $0x12,%edx 0.00 : 470f31: 0f 44 c2 cmove %edx,%eax 0.00 : 470f34: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 470f37: e9 5a fd ff ff jmpq 470c96 : /* : * Otherwise, check for non-fixed-length attrs up to and including : * target. If there aren't any, it's safe to cheaply initialize the : * cached offsets for these attrs. : */ : if (IndexTupleHasVarwidths(tup)) 0.00 : 470f3c: 66 41 f7 c0 00 40 test $0x4000,%r8w 0.00 : 470f42: 0f 84 58 01 00 00 je 4710a0 : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 470f48: 45 85 d2 test %r10d,%r10d 0.00 : 470f4b: 0f 88 4f 01 00 00 js 4710a0 : { : if (att[j]->attlen <= 0) 0.00 : 470f51: 49 8b 0f mov (%r15),%rcx 0.00 : 470f54: 31 d2 xor %edx,%edx 0.00 : 470f56: 66 83 79 4c 00 cmpw $0x0,0x4c(%rcx) 0.00 : 470f5b: 7f 1d jg 470f7a 0.00 : 470f5d: 0f 1f 00 nopl (%rax) 0.00 : 470f60: e9 c4 fc ff ff jmpq 470c29 0.00 : 470f65: 0f 1f 00 nopl (%rax) 0.00 : 470f68: 48 63 c2 movslq %edx,%rax 0.00 : 470f6b: 49 8b 04 c7 mov (%r15,%rax,8),%rax 0.00 : 470f6f: 66 83 78 4c 00 cmpw $0x0,0x4c(%rax) 0.00 : 470f74: 0f 8e af fc ff ff jle 470c29 : */ : if (IndexTupleHasVarwidths(tup)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 470f7a: 83 c2 01 add $0x1,%edx 0.00 : 470f7d: 41 39 d2 cmp %edx,%r10d 0.00 : 470f80: 7d e6 jge 470f68 : } : } : : if (!slow) : { : int natts = tupleDesc->natts; 0.00 : 470f82: 44 8b 0f mov (%rdi),%r9d : * it's cheap to compute offsets for fixed-width columns, we take the : * opportunity to initialize the cached offsets for *all* the leading : * fixed-width columns, in hope of avoiding future visits to this : * routine. : */ : att[0]->attcacheoff = 0; 0.00 : 470f85: c7 41 54 00 00 00 00 movl $0x0,0x54(%rcx) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 470f8c: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 470f90: 7e 35 jle 470fc7 0.00 : 470f92: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 470f96: 8b 50 54 mov 0x54(%rax),%edx 0.00 : 470f99: 85 d2 test %edx,%edx 0.00 : 470f9b: 0f 8e 64 01 00 00 jle 471105 0.00 : 470fa1: 4c 89 fa mov %r15,%rdx 0.00 : 470fa4: be 01 00 00 00 mov $0x1,%esi 0.00 : 470fa9: eb 14 jmp 470fbf 0.00 : 470fab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470fb0: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 470fb4: 48 83 c2 08 add $0x8,%rdx 0.00 : 470fb8: 8b 40 54 mov 0x54(%rax),%eax 0.00 : 470fbb: 85 c0 test %eax,%eax 0.00 : 470fbd: 7e 19 jle 470fd8 : j++; 0.00 : 470fbf: 83 c6 01 add $0x1,%esi : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 470fc2: 41 39 f1 cmp %esi,%r9d 0.00 : 470fc5: 7f e9 jg 470fb0 : off += att[j]->attlen; : } : : Assert(j > attnum); : : off = att[attnum]->attcacheoff; 0.00 : 470fc7: 48 8b 03 mov (%rbx),%rax 0.00 : 470fca: 8b 70 54 mov 0x54(%rax),%esi 0.00 : 470fcd: e9 06 fd ff ff jmpq 470cd8 0.00 : 470fd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 470fd8: 89 f0 mov %esi,%eax : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 470fda: 48 63 d0 movslq %eax,%rdx 0.00 : 470fdd: 49 8b 44 d7 f8 mov -0x8(%r15,%rdx,8),%rax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 470fe2: 49 8d 14 d7 lea (%r15,%rdx,8),%rdx 0.00 : 470fe6: 48 8b 3a mov (%rdx),%rdi : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 470fe9: 8b 48 54 mov 0x54(%rax),%ecx 0.00 : 470fec: 0f b7 40 4c movzwl 0x4c(%rax),%eax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 470ff0: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 470ff5: 98 cwtl 0.00 : 470ff6: 8d 0c 08 lea (%rax,%rcx,1),%ecx : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 470ff9: 7f 3f jg 47103a 0.00 : 470ffb: eb ca jmp 470fc7 0.00 : 470ffd: 0f 1f 00 nopl (%rax) : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 471000: 3c 63 cmp $0x63,%al 0.00 : 471002: 74 0c je 471010 0.00 : 471004: 3c 64 cmp $0x64,%al 0.00 : 471006: 66 90 xchg %ax,%ax 0.00 : 471008: 74 46 je 471050 0.00 : 47100a: 83 c1 01 add $0x1,%ecx 0.00 : 47100d: 83 e1 fe and $0xfffffffe,%ecx : : att[j]->attcacheoff = off; 0.00 : 471010: 89 4f 54 mov %ecx,0x54(%rdi) : : off += att[j]->attlen; 0.00 : 471013: 48 8b 02 mov (%rdx),%rax : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 471016: 83 c6 01 add $0x1,%esi 0.00 : 471019: 41 39 f1 cmp %esi,%r9d : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 47101c: 44 0f b7 40 4c movzwl 0x4c(%rax),%r8d : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 471021: 7e a4 jle 470fc7 : { : if (att[j]->attlen <= 0) 0.00 : 471023: 48 63 c6 movslq %esi,%rax 0.00 : 471026: 49 8d 14 c7 lea (%r15,%rax,8),%rdx 0.00 : 47102a: 48 8b 3a mov (%rdx),%rdi 0.00 : 47102d: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) 0.00 : 471032: 7e 93 jle 470fc7 : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 471034: 41 0f bf c0 movswl %r8w,%eax 0.00 : 471038: 01 c1 add %eax,%ecx : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 47103a: 0f b6 47 5e movzbl 0x5e(%rdi),%eax 0.00 : 47103e: 3c 69 cmp $0x69,%al 0.00 : 471040: 75 be jne 471000 0.00 : 471042: 83 c1 03 add $0x3,%ecx 0.00 : 471045: 83 e1 fc and $0xfffffffc,%ecx 0.00 : 471048: eb c6 jmp 471010 0.00 : 47104a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 471050: 83 c1 07 add $0x7,%ecx 0.00 : 471053: 83 e1 f8 and $0xfffffff8,%ecx 0.00 : 471056: eb b8 jmp 471010 0.00 : 471058: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47105f: 00 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 471060: 48 8d 48 03 lea 0x3(%rax),%rcx 0.00 : 471064: 48 83 e1 fc and $0xfffffffffffffffc,%rcx 0.00 : 471068: e9 42 fd ff ff jmpq 470daf 0.00 : 47106d: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 471070: 48 63 c6 movslq %esi,%rax 0.00 : 471073: 49 8b 04 03 mov (%r11,%rax,1),%rax : } 0.00 : 471077: 48 83 c4 28 add $0x28,%rsp 0.00 : 47107b: 5b pop %rbx 0.00 : 47107c: 41 5c pop %r12 0.00 : 47107e: 41 5d pop %r13 0.00 : 471080: 41 5e pop %r14 0.00 : 471082: 41 5f pop %r15 0.00 : 471084: c9 leaveq 0.00 : 471085: c3 retq 0.00 : 471086: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 47108d: 00 00 00 : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 471090: 83 c6 03 add $0x3,%esi 0.00 : 471093: 45 31 f6 xor %r14d,%r14d 0.00 : 471096: 83 e6 fc and $0xfffffffc,%esi 0.00 : 471099: e9 da fb ff ff jmpq 470c78 0.00 : 47109e: 66 90 xchg %ax,%ax : */ : if (IndexTupleHasVarwidths(tup)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 4710a0: 49 8b 0f mov (%r15),%rcx 0.00 : 4710a3: e9 da fe ff ff jmpq 470f82 0.00 : 4710a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4710af: 00 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 4710b0: 48 98 cltq 0.00 : 4710b2: 49 8b 04 03 mov (%r11,%rax,1),%rax 0.00 : 4710b6: e9 9c fd ff ff jmpq 470e57 0.00 : 4710bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 4710c0: 48 8d 48 07 lea 0x7(%rax),%rcx 0.00 : 4710c4: 48 83 e1 f8 and $0xfffffffffffffff8,%rcx 0.00 : 4710c8: e9 e2 fc ff ff jmpq 470daf 0.00 : 4710cd: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 4710d0: 48 63 c6 movslq %esi,%rax 0.00 : 4710d3: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 4710d8: e9 7a fd ff ff jmpq 470e57 0.00 : 4710dd: 0f 1f 00 nopl (%rax) : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 4710e0: 83 c6 07 add $0x7,%esi 0.00 : 4710e3: 45 31 f6 xor %r14d,%r14d 0.00 : 4710e6: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 4710e9: e9 8a fb ff ff jmpq 470c78 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 4710ee: 48 98 cltq 0.00 : 4710f0: 41 8b 04 03 mov (%r11,%rax,1),%eax 0.00 : 4710f4: e9 5e fd ff ff jmpq 470e57 0.00 : 4710f9: 48 98 cltq 0.00 : 4710fb: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 471100: e9 52 fd ff ff jmpq 470e57 : } : } : } : } : : tp = (char *) tup + data_off; 0.00 : 471105: b8 01 00 00 00 mov $0x1,%eax 0.00 : 47110a: be 01 00 00 00 mov $0x1,%esi 0.00 : 47110f: e9 c6 fe ff ff jmpq 470fda Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:119 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:111 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000490890 : : return hash_any((unsigned char *) &key8, sizeof(key8)); : } : : Datum : hashfloat8(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:111 33.33 : 490890: 55 push %rbp 0.00 : 490891: 48 89 e5 mov %rsp,%rbp 0.00 : 490894: 48 83 ec 10 sub $0x10,%rsp : float8 key = PG_GETARG_FLOAT8(0); 0.00 : 490898: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 49089c: e8 2f d1 2e 00 callq 77d9d0 : /* : * On IEEE-float machines, minus zero and zero have different bit patterns : * but should compare as equal. We must ensure that they have the same : * hash value, which is most reliably done this way: : */ : if (key == (float8) 0) 0.00 : 4908a1: 31 c0 xor %eax,%eax 0.00 : 4908a3: 66 0f 2e 05 2d 1a 32 ucomisd 0x321a2d(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 4908aa: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:119 66.67 : 4908ab: 7a 0b jp 4908b8 0.00 : 4908ad: 75 09 jne 4908b8 : PG_RETURN_UINT32(0); : : return hash_any((unsigned char *) &key, sizeof(key)); : } 0.00 : 4908af: c9 leaveq 0.00 : 4908b0: c3 retq 0.00 : 4908b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : : Datum : hashfloat8(PG_FUNCTION_ARGS) : { : float8 key = PG_GETARG_FLOAT8(0); 0.00 : 4908b8: f2 0f 11 45 f8 movsd %xmm0,-0x8(%rbp) : * hash value, which is most reliably done this way: : */ : if (key == (float8) 0) : PG_RETURN_UINT32(0); : : return hash_any((unsigned char *) &key, sizeof(key)); 0.00 : 4908bd: 48 8d 7d f8 lea -0x8(%rbp),%rdi 0.00 : 4908c1: be 08 00 00 00 mov $0x8,%esi 0.00 : 4908c6: e8 85 fa ff ff callq 490350 : } 0.00 : 4908cb: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:4803 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000497e10 : : compute_new_xmax_infomask(TransactionId xmax, uint16 old_infomask, : uint16 old_infomask2, TransactionId add_to_xmax, : LockTupleMode mode, bool is_update, : TransactionId *result_xmax, uint16 *result_infomask, : uint16 *result_infomask2) : { 0.00 : 497e10: 55 push %rbp : old_status = MultiXactStatusForKeyShare; : else if (HEAP_XMAX_IS_SHR_LOCKED(old_infomask)) : old_status = MultiXactStatusForShare; : else if (HEAP_XMAX_IS_EXCL_LOCKED(old_infomask)) : { : if (old_infomask2 & HEAP_KEYS_UPDATED) 0.00 : 497e11: 89 d0 mov %edx,%eax 0.00 : 497e13: 25 00 20 00 00 and $0x2000,%eax : compute_new_xmax_infomask(TransactionId xmax, uint16 old_infomask, : uint16 old_infomask2, TransactionId add_to_xmax, : LockTupleMode mode, bool is_update, : TransactionId *result_xmax, uint16 *result_infomask, : uint16 *result_infomask2) : { 0.00 : 497e18: 48 89 e5 mov %rsp,%rbp 0.00 : 497e1b: 41 57 push %r15 0.00 : 497e1d: 45 89 c7 mov %r8d,%r15d 0.00 : 497e20: 41 56 push %r14 0.00 : 497e22: 41 89 fe mov %edi,%r14d 0.00 : 497e25: 41 55 push %r13 0.00 : 497e27: 41 54 push %r12 0.00 : 497e29: 41 89 f4 mov %esi,%r12d 0.00 : 497e2c: 53 push %rbx 0.00 : 497e2d: 48 83 ec 38 sub $0x38,%rsp 0.00 : 497e31: 89 4d ac mov %ecx,-0x54(%rbp) 0.00 : 497e34: 66 89 55 b0 mov %dx,-0x50(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:4803 100.00 : 497e38: 44 88 4d ab mov %r9b,-0x55(%rbp) : old_status = MultiXactStatusForKeyShare; : else if (HEAP_XMAX_IS_SHR_LOCKED(old_infomask)) : old_status = MultiXactStatusForShare; : else if (HEAP_XMAX_IS_EXCL_LOCKED(old_infomask)) : { : if (old_infomask2 & HEAP_KEYS_UPDATED) 0.00 : 497e3c: 89 45 a4 mov %eax,-0x5c(%rbp) 0.00 : 497e3f: 90 nop : Assert(TransactionIdIsCurrentTransactionId(add_to_xmax)); : : l5: : new_infomask = 0; : new_infomask2 = 0; : if (old_infomask & HEAP_XMAX_INVALID) 0.00 : 497e40: 41 0f b7 dc movzwl %r12w,%ebx : new_infomask2; : : Assert(TransactionIdIsCurrentTransactionId(add_to_xmax)); : : l5: : new_infomask = 0; 0.00 : 497e44: 66 c7 45 ce 00 00 movw $0x0,-0x32(%rbp) : new_infomask2 = 0; 0.00 : 497e4a: 66 c7 45 cc 00 00 movw $0x0,-0x34(%rbp) : if (old_infomask & HEAP_XMAX_INVALID) 0.00 : 497e50: f6 c7 08 test $0x8,%bh 0.00 : 497e53: 0f 85 e7 01 00 00 jne 498040 : new_xmax = InvalidTransactionId; /* silence compiler */ : elog(ERROR, "invalid lock mode"); : } : } : } : else if (old_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 497e59: f6 c7 10 test $0x10,%bh 0.00 : 497e5c: 74 7a je 497ed8 : * (i.e. a pg_upgraded share locked tuple) cannot possibly be running : * anymore. This check is critical for databases upgraded by : * pg_upgrade; both MultiXactIdIsRunning and MultiXactIdExpand assume : * that such multis are never passed. : */ : if (!(old_infomask & HEAP_LOCK_MASK) && 0.00 : 497e5e: f6 c3 50 test $0x50,%bl 0.00 : 497e61: 0f 85 d9 00 00 00 jne 497f40 0.00 : 497e67: 84 db test %bl,%bl 0.00 : 497e69: 78 55 js 497ec0 0.00 : 497e6b: 89 d8 mov %ebx,%eax 0.00 : 497e6d: 25 50 10 00 00 and $0x1050,%eax 0.00 : 497e72: 83 f8 40 cmp $0x40,%eax 0.00 : 497e75: 74 49 je 497ec0 : * : * The cost of doing GetMultiXactIdMembers would be paid by : * MultiXactIdExpand if we weren't to do this, so this check is not : * incurring extra work anyhow. : */ : if (!MultiXactIdIsRunning(xmax, HEAP_XMAX_IS_LOCKED_ONLY(old_infomask))) 0.00 : 497e77: 31 f6 xor %esi,%esi 0.00 : 497e79: 44 89 f7 mov %r14d,%edi 0.00 : 497e7c: 45 31 ed xor %r13d,%r13d 0.00 : 497e7f: e8 7c 0b 03 00 callq 4c8a00 0.00 : 497e84: 84 c0 test %al,%al 0.00 : 497e86: 0f 85 d9 00 00 00 jne 497f65 : { : if (HEAP_XMAX_IS_LOCKED_ONLY(old_infomask) || 0.00 : 497e8c: 45 85 ed test %r13d,%r13d 0.00 : 497e8f: 75 2f jne 497ec0 0.00 : 497e91: 89 d8 mov %ebx,%eax 0.00 : 497e93: 25 50 10 00 00 and $0x1050,%eax 0.00 : 497e98: 83 f8 40 cmp $0x40,%eax 0.00 : 497e9b: 74 23 je 497ec0 0.00 : 497e9d: 89 de mov %ebx,%esi 0.00 : 497e9f: 44 89 f7 mov %r14d,%edi 0.00 : 497ea2: e8 19 f2 ff ff callq 4970c0 0.00 : 497ea7: 89 c7 mov %eax,%edi 0.00 : 497ea9: e8 82 83 02 00 callq 4c0230 0.00 : 497eae: 84 c0 test %al,%al 0.00 : 497eb0: 0f 84 af 00 00 00 je 497f65 0.00 : 497eb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 497ebd: 00 00 00 : { : /* : * Reset these bits and restart; otherwise fall through to : * create a new multi below. : */ : old_infomask &= ~HEAP_XMAX_IS_MULTI; 0.00 : 497ec0: 66 41 81 e4 ff ef and $0xefff,%r12w : old_infomask |= HEAP_XMAX_INVALID; 0.00 : 497ec6: 66 41 81 cc 00 08 or $0x800,%r12w : goto l5; 0.00 : 497ecc: e9 6f ff ff ff jmpq 497e40 0.00 : 497ed1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : new_xmax = MultiXactIdExpand((MultiXactId) xmax, add_to_xmax, : new_status); : GetMultiXactIdHintBits(new_xmax, &new_infomask, &new_infomask2); : } : else if (old_infomask & HEAP_XMAX_COMMITTED) 0.00 : 497ed8: f6 c7 04 test $0x4,%bh 0.00 : 497edb: 0f 85 af 01 00 00 jne 498090 : * for that case as we do in the block above. : */ : new_xmax = MultiXactIdCreate(xmax, status, add_to_xmax, new_status); : GetMultiXactIdHintBits(new_xmax, &new_infomask, &new_infomask2); : } : else if (TransactionIdIsInProgress(xmax)) 0.00 : 497ee1: 44 89 f7 mov %r14d,%edi 0.00 : 497ee4: e8 c7 9d 1e 00 callq 681cb0 0.00 : 497ee9: 84 c0 test %al,%al 0.00 : 497eeb: 0f 84 97 00 00 00 je 497f88 : */ : MultiXactStatus new_status; : MultiXactStatus old_status; : LockTupleMode old_mode; : : if (HEAP_XMAX_IS_LOCKED_ONLY(old_infomask)) 0.00 : 497ef1: 84 db test %bl,%bl 0.00 : 497ef3: 0f 88 bf 00 00 00 js 497fb8 0.00 : 497ef9: 89 d8 mov %ebx,%eax 0.00 : 497efb: 25 50 10 00 00 and $0x1050,%eax 0.00 : 497f00: 83 f8 40 cmp $0x40,%eax 0.00 : 497f03: 0f 84 af 00 00 00 je 497fb8 : } : } : else : { : /* it's an update, but which kind? */ : if (old_infomask2 & HEAP_KEYS_UPDATED) 0.00 : 497f09: 83 7d a4 01 cmpl $0x1,-0x5c(%rbp) 0.00 : 497f0d: 19 db sbb %ebx,%ebx 0.00 : 497f0f: 83 c3 05 add $0x5,%ebx : /* : * If the lock to be acquired is for the same TransactionId as the : * existing lock, there's an optimization possible: consider only the : * strongest of both locks as the only one present, and restart. : */ : if (xmax == add_to_xmax) 0.00 : 497f12: 44 3b 75 ac cmp -0x54(%rbp),%r14d : old_status = MultiXactStatusUpdate; : else : old_status = MultiXactStatusNoKeyUpdate; : } : : old_mode = TUPLOCK_from_mxstatus(old_status); 0.00 : 497f16: 89 d8 mov %ebx,%eax 0.00 : 497f18: 8b 04 85 c0 2d 7b 00 mov 0x7b2dc0(,%rax,4),%eax : /* : * If the lock to be acquired is for the same TransactionId as the : * existing lock, there's an optimization possible: consider only the : * strongest of both locks as the only one present, and restart. : */ : if (xmax == add_to_xmax) 0.00 : 497f1f: 0f 85 7c 01 00 00 jne 4980a1 0.00 : 497f25: 41 39 c7 cmp %eax,%r15d 0.00 : 497f28: 44 0f 42 f8 cmovb %eax,%r15d : /* acquire the strongest of both */ : if (mode < old_mode) : mode = old_mode; : /* mustn't touch is_update */ : : old_infomask |= HEAP_XMAX_INVALID; 0.00 : 497f2c: 66 41 81 cc 00 08 or $0x800,%r12w : goto l5; 0.00 : 497f32: e9 09 ff ff ff jmpq 497e40 0.00 : 497f37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 497f3e: 00 00 : * : * The cost of doing GetMultiXactIdMembers would be paid by : * MultiXactIdExpand if we weren't to do this, so this check is not : * incurring extra work anyhow. : */ : if (!MultiXactIdIsRunning(xmax, HEAP_XMAX_IS_LOCKED_ONLY(old_infomask))) 0.00 : 497f40: 41 89 dd mov %ebx,%r13d 0.00 : 497f43: 41 81 e5 80 00 00 00 and $0x80,%r13d 0.00 : 497f4a: 0f 84 a0 00 00 00 je 497ff0 0.00 : 497f50: be 01 00 00 00 mov $0x1,%esi 0.00 : 497f55: 44 89 f7 mov %r14d,%edi 0.00 : 497f58: e8 a3 0a 03 00 callq 4c8a00 0.00 : 497f5d: 84 c0 test %al,%al 0.00 : 497f5f: 0f 84 27 ff ff ff je 497e8c : old_infomask |= HEAP_XMAX_INVALID; : goto l5; : } : } : : new_status = get_mxact_status_for_lock(mode, is_update); 0.00 : 497f65: 0f be 75 ab movsbl -0x55(%rbp),%esi 0.00 : 497f69: 44 89 ff mov %r15d,%edi 0.00 : 497f6c: e8 5f bd ff ff callq 493cd0 : : new_xmax = MultiXactIdExpand((MultiXactId) xmax, add_to_xmax, 0.00 : 497f71: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 497f74: 89 c2 mov %eax,%edx 0.00 : 497f76: 44 89 f7 mov %r14d,%edi 0.00 : 497f79: e8 f2 11 03 00 callq 4c9170 0.00 : 497f7e: e9 39 01 00 00 jmpq 4980bc 0.00 : 497f83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : new_status = get_mxact_status_for_lock(mode, is_update); : new_xmax = MultiXactIdCreate(xmax, old_status, : add_to_xmax, new_status); : GetMultiXactIdHintBits(new_xmax, &new_infomask, &new_infomask2); : } : else if (!HEAP_XMAX_IS_LOCKED_ONLY(old_infomask) && 0.00 : 497f88: 84 db test %bl,%bl 0.00 : 497f8a: 78 1b js 497fa7 0.00 : 497f8c: 81 e3 50 10 00 00 and $0x1050,%ebx 0.00 : 497f92: 83 fb 40 cmp $0x40,%ebx 0.00 : 497f95: 74 10 je 497fa7 0.00 : 497f97: 44 89 f7 mov %r14d,%edi 0.00 : 497f9a: e8 41 83 02 00 callq 4c02e0 0.00 : 497f9f: 84 c0 test %al,%al 0.00 : 497fa1: 0f 85 e9 00 00 00 jne 498090 : * Can get here iff the locking/updating transaction was running when : * the infomask was extracted from the tuple, but finished before : * TransactionIdIsInProgress got to run. Deal with it as if there was : * no locker at all in the first place. : */ : old_infomask |= HEAP_XMAX_INVALID; 0.00 : 497fa7: 66 41 81 cc 00 08 or $0x800,%r12w 0.00 : 497fad: e9 8e fe ff ff jmpq 497e40 0.00 : 497fb2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : MultiXactStatus old_status; : LockTupleMode old_mode; : : if (HEAP_XMAX_IS_LOCKED_ONLY(old_infomask)) : { : if (HEAP_XMAX_IS_KEYSHR_LOCKED(old_infomask)) 0.00 : 497fb8: 89 d8 mov %ebx,%eax 0.00 : 497fba: 31 db xor %ebx,%ebx 0.00 : 497fbc: 83 e0 50 and $0x50,%eax 0.00 : 497fbf: 83 f8 10 cmp $0x10,%eax 0.00 : 497fc2: 0f 84 4a ff ff ff je 497f12 : old_status = MultiXactStatusForKeyShare; : else if (HEAP_XMAX_IS_SHR_LOCKED(old_infomask)) 0.00 : 497fc8: 83 f8 50 cmp $0x50,%eax 0.00 : 497fcb: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 497fd0: 0f 84 3c ff ff ff je 497f12 : old_status = MultiXactStatusForShare; : else if (HEAP_XMAX_IS_EXCL_LOCKED(old_infomask)) 0.00 : 497fd6: 83 f8 40 cmp $0x40,%eax 0.00 : 497fd9: 75 2d jne 498008 : { : if (old_infomask2 & HEAP_KEYS_UPDATED) 0.00 : 497fdb: 83 7d a4 01 cmpl $0x1,-0x5c(%rbp) 0.00 : 497fdf: 19 db sbb %ebx,%ebx 0.00 : 497fe1: 83 c3 03 add $0x3,%ebx 0.00 : 497fe4: e9 29 ff ff ff jmpq 497f12 0.00 : 497fe9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * : * The cost of doing GetMultiXactIdMembers would be paid by : * MultiXactIdExpand if we weren't to do this, so this check is not : * incurring extra work anyhow. : */ : if (!MultiXactIdIsRunning(xmax, HEAP_XMAX_IS_LOCKED_ONLY(old_infomask))) 0.00 : 497ff0: 89 d8 mov %ebx,%eax 0.00 : 497ff2: 25 50 10 00 00 and $0x1050,%eax 0.00 : 497ff7: 83 f8 40 cmp $0x40,%eax 0.00 : 497ffa: 0f 84 50 ff ff ff je 497f50 0.00 : 498000: e9 72 fe ff ff jmpq 497e77 0.00 : 498005: 0f 1f 00 nopl (%rax) : * LOCK_ONLY can be present alone only when a page has been : * upgraded by pg_upgrade. But in that case, : * TransactionIdIsInProgress() should have returned false. We : * assume it's no longer locked in this case. : */ : elog(WARNING, "LOCK_ONLY found for Xid in progress %u", xmax); 0.00 : 498008: ba 80 2e 7b 00 mov $0x7b2e80,%edx 0.00 : 49800d: be 6c 13 00 00 mov $0x136c,%esi 0.00 : 498012: bf b9 27 7b 00 mov $0x7b27b9,%edi 0.00 : 498017: e8 04 34 2e 00 callq 77b420 : old_infomask |= HEAP_XMAX_INVALID; 0.00 : 49801c: 66 41 81 cc 00 08 or $0x800,%r12w : * LOCK_ONLY can be present alone only when a page has been : * upgraded by pg_upgrade. But in that case, : * TransactionIdIsInProgress() should have returned false. We : * assume it's no longer locked in this case. : */ : elog(WARNING, "LOCK_ONLY found for Xid in progress %u", xmax); 0.00 : 498022: 44 89 f2 mov %r14d,%edx 0.00 : 498025: be f0 2a 7b 00 mov $0x7b2af0,%esi 0.00 : 49802a: bf 13 00 00 00 mov $0x13,%edi 0.00 : 49802f: 31 c0 xor %eax,%eax : old_infomask |= HEAP_XMAX_INVALID; : old_infomask &= ~HEAP_XMAX_LOCK_ONLY; 0.00 : 498031: 41 80 e4 7f and $0x7f,%r12b : * LOCK_ONLY can be present alone only when a page has been : * upgraded by pg_upgrade. But in that case, : * TransactionIdIsInProgress() should have returned false. We : * assume it's no longer locked in this case. : */ : elog(WARNING, "LOCK_ONLY found for Xid in progress %u", xmax); 0.00 : 498035: e8 f6 31 2e 00 callq 77b230 : old_infomask |= HEAP_XMAX_INVALID; : old_infomask &= ~HEAP_XMAX_LOCK_ONLY; : goto l5; 0.00 : 49803a: e9 01 fe ff ff jmpq 497e40 0.00 : 49803f: 90 nop : * Note that it's critical that this case be the first one checked, : * because there are several blocks below that come back to this one : * to implement certain optimizations; old_infomask might contain : * other dirty bits in those cases, but we don't really care. : */ : if (is_update) 0.00 : 498040: 80 7d ab 00 cmpb $0x0,-0x55(%rbp) 0.00 : 498044: 0f 84 85 00 00 00 je 4980cf : { : new_xmax = add_to_xmax; : if (mode == LockTupleExclusive) 0.00 : 49804a: 41 83 ff 03 cmp $0x3,%r15d : * the infomask was extracted from the tuple, but finished before : * TransactionIdIsInProgress got to run. Deal with it as if there was : * no locker at all in the first place. : */ : old_infomask |= HEAP_XMAX_INVALID; : goto l5; 0.00 : 49804e: 8b 5d ac mov -0x54(%rbp),%ebx : * other dirty bits in those cases, but we don't really care. : */ : if (is_update) : { : new_xmax = add_to_xmax; : if (mode == LockTupleExclusive) 0.00 : 498051: 0f 84 99 00 00 00 je 4980f0 0.00 : 498057: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49805e: 00 00 : */ : old_infomask |= HEAP_XMAX_INVALID; : goto l5; : } : : *result_infomask = new_infomask; 0.00 : 498060: 0f b7 45 ce movzwl -0x32(%rbp),%eax 0.00 : 498064: 48 8b 55 18 mov 0x18(%rbp),%rdx 0.00 : 498068: 66 89 02 mov %ax,(%rdx) : *result_infomask2 = new_infomask2; 0.00 : 49806b: 0f b7 45 cc movzwl -0x34(%rbp),%eax 0.00 : 49806f: 48 8b 55 20 mov 0x20(%rbp),%rdx 0.00 : 498073: 66 89 02 mov %ax,(%rdx) : *result_xmax = new_xmax; 0.00 : 498076: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 49807a: 89 18 mov %ebx,(%rax) : } 0.00 : 49807c: 48 83 c4 38 add $0x38,%rsp 0.00 : 498080: 5b pop %rbx 0.00 : 498081: 41 5c pop %r12 0.00 : 498083: 41 5d pop %r13 0.00 : 498085: 41 5e pop %r14 0.00 : 498087: 41 5f pop %r15 0.00 : 498089: c9 leaveq 0.00 : 49808a: c3 retq 0.00 : 49808b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * the tuple. : */ : MultiXactStatus status; : MultiXactStatus new_status; : : if (old_infomask2 & HEAP_KEYS_UPDATED) 0.00 : 498090: 0f b7 45 b0 movzwl -0x50(%rbp),%eax 0.00 : 498094: 25 00 20 00 00 and $0x2000,%eax 0.00 : 498099: 83 f8 01 cmp $0x1,%eax 0.00 : 49809c: 19 db sbb %ebx,%ebx 0.00 : 49809e: 83 c3 05 add $0x5,%ebx : status = MultiXactStatusUpdate; : else : status = MultiXactStatusNoKeyUpdate; : : new_status = get_mxact_status_for_lock(mode, is_update); 0.00 : 4980a1: 0f be 75 ab movsbl -0x55(%rbp),%esi 0.00 : 4980a5: 44 89 ff mov %r15d,%edi 0.00 : 4980a8: e8 23 bc ff ff callq 493cd0 : /* : * since it's not running, it's obviously impossible for the old : * updater to be identical to the current one, so we need not check : * for that case as we do in the block above. : */ : new_xmax = MultiXactIdCreate(xmax, status, add_to_xmax, new_status); 0.00 : 4980ad: 8b 55 ac mov -0x54(%rbp),%edx : if (old_infomask2 & HEAP_KEYS_UPDATED) : status = MultiXactStatusUpdate; : else : status = MultiXactStatusNoKeyUpdate; : : new_status = get_mxact_status_for_lock(mode, is_update); 0.00 : 4980b0: 89 c1 mov %eax,%ecx : /* : * since it's not running, it's obviously impossible for the old : * updater to be identical to the current one, so we need not check : * for that case as we do in the block above. : */ : new_xmax = MultiXactIdCreate(xmax, status, add_to_xmax, new_status); 0.00 : 4980b2: 89 de mov %ebx,%esi 0.00 : 4980b4: 44 89 f7 mov %r14d,%edi 0.00 : 4980b7: e8 84 10 03 00 callq 4c9140 : GetMultiXactIdHintBits(new_xmax, &new_infomask, &new_infomask2); 0.00 : 4980bc: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 4980c0: 48 8d 75 ce lea -0x32(%rbp),%rsi 0.00 : 4980c4: 89 c7 mov %eax,%edi : /* : * since it's not running, it's obviously impossible for the old : * updater to be identical to the current one, so we need not check : * for that case as we do in the block above. : */ : new_xmax = MultiXactIdCreate(xmax, status, add_to_xmax, new_status); 0.00 : 4980c6: 89 c3 mov %eax,%ebx : GetMultiXactIdHintBits(new_xmax, &new_infomask, &new_infomask2); 0.00 : 4980c8: e8 53 f1 ff ff callq 497220 0.00 : 4980cd: eb 91 jmp 498060 : new_infomask2 |= HEAP_KEYS_UPDATED; : } : else : { : new_infomask |= HEAP_XMAX_LOCK_ONLY; : switch (mode) 0.00 : 4980cf: 41 83 ff 01 cmp $0x1,%r15d : if (mode == LockTupleExclusive) : new_infomask2 |= HEAP_KEYS_UPDATED; : } : else : { : new_infomask |= HEAP_XMAX_LOCK_ONLY; 0.00 : 4980d3: 66 c7 45 ce 80 00 movw $0x80,-0x32(%rbp) : switch (mode) 0.00 : 4980d9: 74 57 je 498132 0.00 : 4980db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4980e0: 73 19 jae 4980fb : { : case LockTupleKeyShare: : new_xmax = add_to_xmax; : new_infomask |= HEAP_XMAX_KEYSHR_LOCK; 0.00 : 4980e2: 66 c7 45 ce 90 00 movw $0x90,-0x32(%rbp) 0.00 : 4980e8: 8b 5d ac mov -0x54(%rbp),%ebx : break; 0.00 : 4980eb: e9 70 ff ff ff jmpq 498060 : */ : if (is_update) : { : new_xmax = add_to_xmax; : if (mode == LockTupleExclusive) : new_infomask2 |= HEAP_KEYS_UPDATED; 0.00 : 4980f0: 66 c7 45 cc 00 20 movw $0x2000,-0x34(%rbp) 0.00 : 4980f6: e9 65 ff ff ff jmpq 498060 : } : else : { : new_infomask |= HEAP_XMAX_LOCK_ONLY; : switch (mode) 0.00 : 4980fb: 41 83 ff 02 cmp $0x2,%r15d 0.00 : 4980ff: 90 nop 0.00 : 498100: 74 52 je 498154 0.00 : 498102: 41 83 ff 03 cmp $0x3,%r15d 0.00 : 498106: 74 38 je 498140 : new_infomask |= HEAP_XMAX_EXCL_LOCK; : new_infomask2 |= HEAP_KEYS_UPDATED; : break; : default: : new_xmax = InvalidTransactionId; /* silence compiler */ : elog(ERROR, "invalid lock mode"); 0.00 : 498108: ba 80 2e 7b 00 mov $0x7b2e80,%edx 0.00 : 49810d: be f5 12 00 00 mov $0x12f5,%esi 0.00 : 498112: bf b9 27 7b 00 mov $0x7b27b9,%edi 0.00 : 498117: e8 04 33 2e 00 callq 77b420 0.00 : 49811c: be 77 28 7b 00 mov $0x7b2877,%esi 0.00 : 498121: bf 14 00 00 00 mov $0x14,%edi 0.00 : 498126: 31 c0 xor %eax,%eax 0.00 : 498128: e8 03 31 2e 00 callq 77b230 0.00 : 49812d: e8 9e 13 fd ff callq 4694d0 : new_xmax = add_to_xmax; : new_infomask |= HEAP_XMAX_KEYSHR_LOCK; : break; : case LockTupleShare: : new_xmax = add_to_xmax; : new_infomask |= HEAP_XMAX_SHR_LOCK; 0.00 : 498132: 66 c7 45 ce d0 00 movw $0xd0,-0x32(%rbp) 0.00 : 498138: 8b 5d ac mov -0x54(%rbp),%ebx : break; 0.00 : 49813b: e9 20 ff ff ff jmpq 498060 : new_xmax = add_to_xmax; : new_infomask |= HEAP_XMAX_EXCL_LOCK; : break; : case LockTupleExclusive: : new_xmax = add_to_xmax; : new_infomask |= HEAP_XMAX_EXCL_LOCK; 0.00 : 498140: 66 c7 45 ce c0 00 movw $0xc0,-0x32(%rbp) : new_infomask2 |= HEAP_KEYS_UPDATED; 0.00 : 498146: 66 c7 45 cc 00 20 movw $0x2000,-0x34(%rbp) 0.00 : 49814c: 8b 5d ac mov -0x54(%rbp),%ebx : break; 0.00 : 49814f: e9 0c ff ff ff jmpq 498060 : new_xmax = add_to_xmax; : new_infomask |= HEAP_XMAX_SHR_LOCK; : break; : case LockTupleNoKeyExclusive: : new_xmax = add_to_xmax; : new_infomask |= HEAP_XMAX_EXCL_LOCK; 0.00 : 498154: 66 c7 45 ce c0 00 movw $0xc0,-0x32(%rbp) 0.00 : 49815a: 8b 5d ac mov -0x54(%rbp),%ebx : break; 0.00 : 49815d: e9 fe fe ff ff jmpq 498060 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:7055 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000498170 : : * Returns NULL if there's no need to log a identity or if there's no suitable : * key in the Relation relation. : */ : static HeapTuple : ExtractReplicaIdentity(Relation relation, HeapTuple tp, bool key_changed, bool *copy) : { 0.00 : 498170: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:7055 100.00 : 498171: 48 89 e5 mov %rsp,%rbp 0.00 : 498174: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 498178: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 49817c: 48 89 f3 mov %rsi,%rbx 0.00 : 49817f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 498183: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 498187: 49 89 fc mov %rdi,%r12 0.00 : 49818a: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 49818e: 48 81 ec 80 38 00 00 sub $0x3880,%rsp : TupleDesc desc = RelationGetDescr(relation); : Oid replidindex; : Relation idx_rel; : TupleDesc idx_desc; : char replident = relation->rd_rel->relreplident; 0.00 : 498195: 48 8b 47 30 mov 0x30(%rdi),%rax : * key in the Relation relation. : */ : static HeapTuple : ExtractReplicaIdentity(Relation relation, HeapTuple tp, bool key_changed, bool *copy) : { : TupleDesc desc = RelationGetDescr(relation); 0.00 : 498199: 4c 8b 47 38 mov 0x38(%rdi),%r8 : * Returns NULL if there's no need to log a identity or if there's no suitable : * key in the Relation relation. : */ : static HeapTuple : ExtractReplicaIdentity(Relation relation, HeapTuple tp, bool key_changed, bool *copy) : { 0.00 : 49819d: 49 89 ce mov %rcx,%r14 0.00 : 4981a0: 41 89 d7 mov %edx,%r15d : TupleDesc desc = RelationGetDescr(relation); : Oid replidindex; : Relation idx_rel; : TupleDesc idx_desc; : char replident = relation->rd_rel->relreplident; 0.00 : 4981a3: 44 0f b6 68 7b movzbl 0x7b(%rax),%r13d : HeapTuple key_tuple = NULL; : bool nulls[MaxHeapAttributeNumber]; : Datum values[MaxHeapAttributeNumber]; : int natt; : : *copy = false; 0.00 : 4981a8: c6 01 00 movb $0x0,(%rcx) : : if (!RelationIsLogicallyLogged(relation)) 0.00 : 4981ab: 83 3d aa 0f 6e 00 02 cmpl $0x2,0x6e0faa(%rip) # b7915c 0.00 : 4981b2: 7f 1c jg 4981d0 : if (HeapTupleHasExternal(key_tuple)) : { : HeapTuple oldtup = key_tuple; : : key_tuple = toast_flatten_tuple(oldtup, RelationGetDescr(relation)); : heap_freetuple(oldtup); 0.00 : 4981b4: 31 db xor %ebx,%ebx : } : : return key_tuple; : } 0.00 : 4981b6: 48 89 d8 mov %rbx,%rax 0.00 : 4981b9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4981bd: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4981c1: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4981c5: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4981c9: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4981cd: c9 leaveq 0.00 : 4981ce: c3 retq 0.00 : 4981cf: 90 nop : Datum values[MaxHeapAttributeNumber]; : int natt; : : *copy = false; : : if (!RelationIsLogicallyLogged(relation)) 0.00 : 4981d0: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 4981d4: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4981d8: 75 da jne 4981b4 0.00 : 4981da: 4c 89 85 88 c7 ff ff mov %r8,-0x3878(%rbp) 0.00 : 4981e1: e8 fa ab 04 00 callq 4e2de0 0.00 : 4981e6: 84 c0 test %al,%al 0.00 : 4981e8: 4c 8b 85 88 c7 ff ff mov -0x3878(%rbp),%r8 0.00 : 4981ef: 75 c3 jne 4981b4 : return NULL; : : if (replident == REPLICA_IDENTITY_NOTHING) 0.00 : 4981f1: 41 80 fd 6e cmp $0x6e,%r13b 0.00 : 4981f5: 74 bd je 4981b4 : return NULL; : : if (replident == REPLICA_IDENTITY_FULL) 0.00 : 4981f7: 41 80 fd 66 cmp $0x66,%r13b 0.00 : 4981fb: 75 20 jne 49821d : { : /* : * When logging the entire old tuple, it very well could contain : * toasted columns. If so, force them to be inlined. : */ : if (HeapTupleHasExternal(tp)) 0.00 : 4981fd: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 498201: f6 40 14 04 testb $0x4,0x14(%rax) 0.00 : 498205: 74 af je 4981b6 : { : *copy = true; 0.00 : 498207: 41 c6 06 01 movb $0x1,(%r14) : tp = toast_flatten_tuple(tp, RelationGetDescr(relation)); 0.00 : 49820b: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 498210: 48 89 df mov %rbx,%rdi 0.00 : 498213: e8 28 99 00 00 callq 4a1b40 0.00 : 498218: 48 89 c3 mov %rax,%rbx 0.00 : 49821b: eb 99 jmp 4981b6 : } : return tp; : } : : /* if the key hasn't changed and we're only logging the key, we're done */ : if (!key_changed) 0.00 : 49821d: 45 84 ff test %r15b,%r15b 0.00 : 498220: 74 92 je 4981b4 : return NULL; : : /* find the replica identity index */ : replidindex = RelationGetReplicaIndex(relation); 0.00 : 498222: 4c 89 e7 mov %r12,%rdi 0.00 : 498225: 4c 89 85 88 c7 ff ff mov %r8,-0x3878(%rbp) 0.00 : 49822c: e8 0f 2d 2d 00 callq 76af40 : if (!OidIsValid(replidindex)) 0.00 : 498231: 85 c0 test %eax,%eax : /* if the key hasn't changed and we're only logging the key, we're done */ : if (!key_changed) : return NULL; : : /* find the replica identity index */ : replidindex = RelationGetReplicaIndex(relation); 0.00 : 498233: 89 c7 mov %eax,%edi : if (!OidIsValid(replidindex)) 0.00 : 498235: 4c 8b 85 88 c7 ff ff mov -0x3878(%rbp),%r8 0.00 : 49823c: 0f 84 13 01 00 00 je 498355 : elog(DEBUG4, "could not find configured replica identity for table \"%s\"", : RelationGetRelationName(relation)); : return NULL; : } : : idx_rel = RelationIdGetRelation(replidindex); 0.00 : 498242: 4c 89 85 88 c7 ff ff mov %r8,-0x3878(%rbp) 0.00 : 498249: e8 a2 7e 2d 00 callq 7700f0 : idx_desc = RelationGetDescr(idx_rel); : : /* deform tuple, so we have fast access to columns */ : heap_deform_tuple(tp, desc, values, nulls); 0.00 : 49824e: 4c 8b 85 88 c7 ff ff mov -0x3878(%rbp),%r8 0.00 : 498255: 4c 8d 8d 90 f9 ff ff lea -0x670(%rbp),%r9 0.00 : 49825c: 48 8d 95 90 c7 ff ff lea -0x3870(%rbp),%rdx 0.00 : 498263: 48 89 df mov %rbx,%rdi : RelationGetRelationName(relation)); : return NULL; : } : : idx_rel = RelationIdGetRelation(replidindex); : idx_desc = RelationGetDescr(idx_rel); 0.00 : 498266: 4c 8b 68 38 mov 0x38(%rax),%r13 : elog(DEBUG4, "could not find configured replica identity for table \"%s\"", : RelationGetRelationName(relation)); : return NULL; : } : : idx_rel = RelationIdGetRelation(replidindex); 0.00 : 49826a: 49 89 c7 mov %rax,%r15 : idx_desc = RelationGetDescr(idx_rel); : : /* deform tuple, so we have fast access to columns */ : heap_deform_tuple(tp, desc, values, nulls); 0.00 : 49826d: 4c 89 c9 mov %r9,%rcx 0.00 : 498270: 4c 89 8d 80 c7 ff ff mov %r9,-0x3880(%rbp) 0.00 : 498277: 4c 89 c6 mov %r8,%rsi 0.00 : 49827a: e8 21 73 fd ff callq 46f5a0 : : /* set all columns to NULL, regardless of whether they actually are */ : memset(nulls, 1, sizeof(nulls)); 0.00 : 49827f: 4c 8b 8d 80 c7 ff ff mov -0x3880(%rbp),%r9 0.00 : 498286: 48 b8 01 01 01 01 01 movabs $0x101010101010101,%rax 0.00 : 49828d: 01 01 01 0.00 : 498290: b9 c8 00 00 00 mov $0xc8,%ecx 0.00 : 498295: 4c 89 cf mov %r9,%rdi 0.00 : 498298: f3 48 ab rep stos %rax,%es:(%rdi) : : /* : * Now set all columns contained in the index to NOT NULL, they cannot : * currently be NULL. : */ : for (natt = 0; natt < idx_desc->natts; natt++) 0.00 : 49829b: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 49829f: 4c 8b 85 88 c7 ff ff mov -0x3878(%rbp),%r8 0.00 : 4982a6: 85 c0 test %eax,%eax 0.00 : 4982a8: 7e 2d jle 4982d7 : { : int attno = idx_rel->rd_index->indkey.values[natt]; 0.00 : 4982aa: 49 8b 97 a0 00 00 00 mov 0xa0(%r15),%rdx 0.00 : 4982b1: 48 63 c1 movslq %ecx,%rax 0.00 : 4982b4: 0f bf 44 42 2c movswl 0x2c(%rdx,%rax,2),%eax : : if (attno < 0) 0.00 : 4982b9: 85 c0 test %eax,%eax 0.00 : 4982bb: 0f 88 c5 00 00 00 js 498386 : */ : if (attno == ObjectIdAttributeNumber) : continue; : elog(ERROR, "system column in index"); : } : nulls[attno - 1] = false; 0.00 : 4982c1: 83 e8 01 sub $0x1,%eax 0.00 : 4982c4: 48 98 cltq 0.00 : 4982c6: c6 84 05 90 f9 ff ff movb $0x0,-0x670(%rbp,%rax,1) 0.00 : 4982cd: 00 : : /* : * Now set all columns contained in the index to NOT NULL, they cannot : * currently be NULL. : */ : for (natt = 0; natt < idx_desc->natts; natt++) 0.00 : 4982ce: 83 c1 01 add $0x1,%ecx 0.00 : 4982d1: 41 39 4d 00 cmp %ecx,0x0(%r13) 0.00 : 4982d5: 7f d3 jg 4982aa : elog(ERROR, "system column in index"); : } : nulls[attno - 1] = false; : } : : key_tuple = heap_form_tuple(desc, values, nulls); 0.00 : 4982d7: 48 8d b5 90 c7 ff ff lea -0x3870(%rbp),%rsi 0.00 : 4982de: 4c 89 c7 mov %r8,%rdi 0.00 : 4982e1: 4c 89 ca mov %r9,%rdx 0.00 : 4982e4: e8 77 83 fd ff callq 470660 : *copy = true; 0.00 : 4982e9: 41 c6 06 01 movb $0x1,(%r14) : RelationClose(idx_rel); 0.00 : 4982ed: 4c 89 ff mov %r15,%rdi : elog(ERROR, "system column in index"); : } : nulls[attno - 1] = false; : } : : key_tuple = heap_form_tuple(desc, values, nulls); 0.00 : 4982f0: 49 89 c5 mov %rax,%r13 : *copy = true; : RelationClose(idx_rel); 0.00 : 4982f3: e8 58 74 2d 00 callq 76f750 : /* : * Always copy oids if the table has them, even if not included in the : * index. The space in the logged tuple is used anyway, so there's little : * point in not including the information. : */ : if (relation->rd_rel->relhasoids) 0.00 : 4982f8: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 4982fd: 80 78 74 00 cmpb $0x0,0x74(%rax) 0.00 : 498301: 74 24 je 498327 : HeapTupleSetOid(key_tuple, HeapTupleGetOid(tp)); 0.00 : 498303: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 498307: 31 c9 xor %ecx,%ecx 0.00 : 498309: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 49830d: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 498311: 0f b6 7e 16 movzbl 0x16(%rsi),%edi 0.00 : 498315: 74 08 je 49831f 0.00 : 498317: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 49831b: 8b 4c 02 fc mov -0x4(%rdx,%rax,1),%ecx 0.00 : 49831f: 40 0f b6 c7 movzbl %dil,%eax 0.00 : 498323: 89 4c 06 fc mov %ecx,-0x4(%rsi,%rax,1) : * toasted columns, force them to be inlined. This is somewhat unlikely : * since there's limits on the size of indexed columns, so we don't : * duplicate toast_flatten_tuple()s functionality in the above loop over : * the indexed columns, even if it would be more efficient. : */ : if (HeapTupleHasExternal(key_tuple)) 0.00 : 498327: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 49832b: 4c 89 eb mov %r13,%rbx 0.00 : 49832e: f6 40 14 04 testb $0x4,0x14(%rax) 0.00 : 498332: 0f 84 7e fe ff ff je 4981b6 : { : HeapTuple oldtup = key_tuple; : : key_tuple = toast_flatten_tuple(oldtup, RelationGetDescr(relation)); 0.00 : 498338: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 49833d: 4c 89 ef mov %r13,%rdi 0.00 : 498340: e8 fb 97 00 00 callq 4a1b40 : heap_freetuple(oldtup); 0.00 : 498345: 4c 89 ef mov %r13,%rdi : */ : if (HeapTupleHasExternal(key_tuple)) : { : HeapTuple oldtup = key_tuple; : : key_tuple = toast_flatten_tuple(oldtup, RelationGetDescr(relation)); 0.00 : 498348: 48 89 c3 mov %rax,%rbx : heap_freetuple(oldtup); 0.00 : 49834b: e8 70 69 fd ff callq 46ecc0 0.00 : 498350: e9 61 fe ff ff jmpq 4981b6 : : /* find the replica identity index */ : replidindex = RelationGetReplicaIndex(relation); : if (!OidIsValid(replidindex)) : { : elog(DEBUG4, "could not find configured replica identity for table \"%s\"", 0.00 : 498355: ba c0 2e 7b 00 mov $0x7b2ec0,%edx 0.00 : 49835a: be b9 1b 00 00 mov $0x1bb9,%esi 0.00 : 49835f: bf b9 27 7b 00 mov $0x7b27b9,%edi 0.00 : 498364: e8 b7 30 2e 00 callq 77b420 0.00 : 498369: 49 8b 54 24 30 mov 0x30(%r12),%rdx 0.00 : 49836e: be 18 2b 7b 00 mov $0x7b2b18,%esi 0.00 : 498373: bf 0b 00 00 00 mov $0xb,%edi 0.00 : 498378: 31 c0 xor %eax,%eax 0.00 : 49837a: 31 db xor %ebx,%ebx 0.00 : 49837c: e8 af 2e 2e 00 callq 77b230 : key_tuple = toast_flatten_tuple(oldtup, RelationGetDescr(relation)); : heap_freetuple(oldtup); : } : : return key_tuple; : } 0.00 : 498381: e9 30 fe ff ff jmpq 4981b6 : /* : * The OID column can appear in an index definition, but that's : * OK, becuse we always copy the OID if present (see below). Other : * system columns may not. : */ : if (attno == ObjectIdAttributeNumber) 0.00 : 498386: 83 f8 fe cmp $0xfffffffe,%eax 0.00 : 498389: 0f 84 3f ff ff ff je 4982ce : continue; : elog(ERROR, "system column in index"); 0.00 : 49838f: ba c0 2e 7b 00 mov $0x7b2ec0,%edx 0.00 : 498394: be d7 1b 00 00 mov $0x1bd7,%esi 0.00 : 498399: bf b9 27 7b 00 mov $0x7b27b9,%edi 0.00 : 49839e: e8 7d 30 2e 00 callq 77b420 0.00 : 4983a3: be 89 28 7b 00 mov $0x7b2889,%esi 0.00 : 4983a8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4983ad: 31 c0 xor %eax,%eax 0.00 : 4983af: e8 7c 2e 2e 00 callq 77b230 0.00 : 4983b4: e8 17 11 fd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e850 : : */ : void : RelationPutHeapTuple(Relation relation, : Buffer buffer, : HeapTuple tuple) : { 0.00 : 49e850: 55 push %rbp 0.00 : 49e851: 48 89 e5 mov %rsp,%rbp 0.00 : 49e854: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 50.00 : 49e858: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 49e85c: 49 89 d4 mov %rdx,%r12 0.00 : 49e85f: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 49e863: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 49e867: 48 83 ec 20 sub $0x20,%rsp : OffsetNumber offnum; : ItemId itemId; : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); 0.00 : 49e86b: 85 f6 test %esi,%esi : */ : void : RelationPutHeapTuple(Relation relation, : Buffer buffer, : HeapTuple tuple) : { 0.00 : 49e86d: 41 89 f6 mov %esi,%r14d : OffsetNumber offnum; : ItemId itemId; : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); 0.00 : 49e870: 0f 88 9a 00 00 00 js 49e910 0.00 : 49e876: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 49e87a: 48 63 d8 movslq %eax,%rbx 0.00 : 49e87d: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 49e881: 48 03 1d 70 12 72 00 add 0x721270(%rip),%rbx # bbfaf8 : : offnum = PageAddItem(pageHeader, (Item) tuple->t_data, 0.00 : 49e888: 41 8b 14 24 mov (%r12),%edx 0.00 : 49e88c: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 49e891: 45 31 c0 xor %r8d,%r8d 0.00 : 49e894: 31 c9 xor %ecx,%ecx 0.00 : 49e896: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 49e89c: 48 89 df mov %rbx,%rdi 0.00 : 49e89f: e8 dc 75 1f 00 callq 695e80 : tuple->t_len, InvalidOffsetNumber, false, true); : : if (offnum == InvalidOffsetNumber) 0.00 : 49e8a4: 66 85 c0 test %ax,%ax : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); : : offnum = PageAddItem(pageHeader, (Item) tuple->t_data, 0.00 : 49e8a7: 41 89 c5 mov %eax,%r13d : tuple->t_len, InvalidOffsetNumber, false, true); : : if (offnum == InvalidOffsetNumber) 0.00 : 49e8aa: 74 7a je 49e926 : elog(PANIC, "failed to add tuple to page"); : : /* Update tuple->t_self to the actual position where it was stored */ : ItemPointerSet(&(tuple->t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49e8ac: 44 89 f7 mov %r14d,%edi 0.00 : 49e8af: e8 7c 57 1d 00 callq 674030 0.00 : 49e8b4: c1 e8 10 shr $0x10,%eax 0.00 : 49e8b7: 44 89 f7 mov %r14d,%edi 0.00 : 49e8ba: 66 41 89 44 24 04 mov %ax,0x4(%r12) 0.00 : 49e8c0: e8 6b 57 1d 00 callq 674030 0.00 : 49e8c5: 66 41 89 44 24 06 mov %ax,0x6(%r12) : : /* Insert the correct position into CTID of the stored tuple, too */ : itemId = PageGetItemId(pageHeader, offnum); : item = PageGetItem(pageHeader, itemId); : ((HeapTupleHeader) item)->t_ctid = tuple->t_self; 0.00 : 49e8cb: 41 0f b7 c5 movzwl %r13w,%eax : : if (offnum == InvalidOffsetNumber) : elog(PANIC, "failed to add tuple to page"); : : /* Update tuple->t_self to the actual position where it was stored */ : ItemPointerSet(&(tuple->t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49e8cf: 66 45 89 6c 24 08 mov %r13w,0x8(%r12) : : /* Insert the correct position into CTID of the stored tuple, too */ : itemId = PageGetItemId(pageHeader, offnum); : item = PageGetItem(pageHeader, itemId); : ((HeapTupleHeader) item)->t_ctid = tuple->t_self; 0.00 : 49e8d5: 0f b7 44 83 14 movzwl 0x14(%rbx,%rax,4),%eax 0.00 : 49e8da: 41 8b 54 24 04 mov 0x4(%r12),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 50.00 : 49e8df: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 49e8e4: 89 54 03 0c mov %edx,0xc(%rbx,%rax,1) 0.00 : 49e8e8: 41 0f b7 54 24 08 movzwl 0x8(%r12),%edx 0.00 : 49e8ee: 66 89 54 03 10 mov %dx,0x10(%rbx,%rax,1) : } 0.00 : 49e8f3: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 49e8f7: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 49e8fc: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 49e901: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 49e906: c9 leaveq 0.00 : 49e907: c3 retq 0.00 : 49e908: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49e90f: 00 : OffsetNumber offnum; : ItemId itemId; : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); 0.00 : 49e910: 89 f0 mov %esi,%eax 0.00 : 49e912: 48 8b 15 ff e7 6d 00 mov 0x6de7ff(%rip),%rdx # b7d118 0.00 : 49e919: f7 d0 not %eax 0.00 : 49e91b: 48 98 cltq 0.00 : 49e91d: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 49e921: e9 62 ff ff ff jmpq 49e888 : : offnum = PageAddItem(pageHeader, (Item) tuple->t_data, : tuple->t_len, InvalidOffsetNumber, false, true); : : if (offnum == InvalidOffsetNumber) : elog(PANIC, "failed to add tuple to page"); 0.00 : 49e926: ba 40 30 7b 00 mov $0x7b3040,%edx 0.00 : 49e92b: be 34 00 00 00 mov $0x34,%esi 0.00 : 49e930: bf 70 2f 7b 00 mov $0x7b2f70,%edi 0.00 : 49e935: e8 e6 ca 2d 00 callq 77b420 0.00 : 49e93a: be 91 2f 7b 00 mov $0x7b2f91,%esi 0.00 : 49e93f: bf 16 00 00 00 mov $0x16,%edi 0.00 : 49e944: 31 c0 xor %eax,%eax 0.00 : 49e946: e8 e5 c8 2d 00 callq 77b230 0.00 : 49e94b: e8 80 ab fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:763 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e950 : : * holds a pin on the buffer. Once pin is released, a tuple might be pruned : * and reused by a completely unrelated tuple. : */ : void : heap_get_root_tuples(Page page, OffsetNumber *root_offsets) : { 0.00 : 49e950: 55 push %rbp : OffsetNumber offnum, : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); 0.00 : 49e951: 31 c0 xor %eax,%eax 0.00 : 49e953: b9 48 00 00 00 mov $0x48,%ecx : * holds a pin on the buffer. Once pin is released, a tuple might be pruned : * and reused by a completely unrelated tuple. : */ : void : heap_get_root_tuples(Page page, OffsetNumber *root_offsets) : { 0.00 : 49e958: 48 89 e5 mov %rsp,%rbp 0.00 : 49e95b: 41 57 push %r15 0.00 : 49e95d: 41 56 push %r14 0.00 : 49e95f: 49 89 f6 mov %rsi,%r14 0.00 : 49e962: 41 55 push %r13 0.00 : 49e964: 41 54 push %r12 0.00 : 49e966: 49 89 fc mov %rdi,%r12 : OffsetNumber offnum, : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); 0.00 : 49e969: 48 89 f7 mov %rsi,%rdi : * holds a pin on the buffer. Once pin is released, a tuple might be pruned : * and reused by a completely unrelated tuple. : */ : void : heap_get_root_tuples(Page page, OffsetNumber *root_offsets) : { 0.00 : 49e96c: 53 push %rbx 0.00 : 49e96d: 48 83 ec 08 sub $0x8,%rsp : OffsetNumber offnum, : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); 0.00 : 49e971: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 49e974: c7 07 00 00 00 00 movl $0x0,(%rdi) 0.00 : 49e97a: 66 c7 47 04 00 00 movw $0x0,0x4(%rdi) : : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 49e980: 41 0f b7 44 24 0c movzwl 0xc(%r12),%eax 0.00 : 49e986: 66 83 f8 18 cmp $0x18,%ax 0.00 : 49e98a: 0f 86 3e 01 00 00 jbe 49eace 0.00 : 49e990: 0f b7 c0 movzwl %ax,%eax 0.00 : 49e993: 48 83 e8 18 sub $0x18,%rax 0.00 : 49e997: 49 89 c7 mov %rax,%r15 0.00 : 49e99a: 49 c1 ef 02 shr $0x2,%r15 : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.00 : 49e99e: 66 45 85 ff test %r15w,%r15w 0.00 : 49e9a2: 0f 84 26 01 00 00 je 49eace 0.00 : 49e9a8: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 49e9ae: 66 90 xchg %ax,%ax : { : ItemId lp = PageGetItemId(page, offnum); 0.00 : 49e9b0: 41 0f b7 c5 movzwl %r13w,%eax : HeapTupleHeader htup; : OffsetNumber nextoffnum; : TransactionId priorXmax; : : /* skip unused and dead items */ : if (!ItemIdIsUsed(lp) || ItemIdIsDead(lp)) 0.00 : 49e9b4: 48 8d 50 03 lea 0x3(%rax),%rdx : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); : : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) : { : ItemId lp = PageGetItemId(page, offnum); 0.00 : 49e9b8: 48 8d 48 ff lea -0x1(%rax),%rcx : HeapTupleHeader htup; : OffsetNumber nextoffnum; : TransactionId priorXmax; : : /* skip unused and dead items */ : if (!ItemIdIsUsed(lp) || ItemIdIsDead(lp)) 0.00 : 49e9bc: 41 8b 44 94 08 mov 0x8(%r12,%rdx,4),%eax 0.00 : 49e9c1: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49e9c6: 0f 84 f4 00 00 00 je 49eac0 0.00 : 49e9cc: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 49e9d1: 0f 84 e9 00 00 00 je 49eac0 : continue; : : if (ItemIdIsNormal(lp)) 0.00 : 49e9d7: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49e9dc: 0f 84 b6 00 00 00 je 49ea98 : else : { : /* Must be a redirect item. We do not set its root_offsets entry */ : Assert(ItemIdIsRedirected(lp)); : /* Set up to scan the HOT-chain */ : nextoffnum = ItemIdGetRedirect(lp); 0.00 : 49e9e2: 41 0f b7 5c 94 08 movzwl 0x8(%r12,%rdx,4),%ebx 0.00 : 49e9e8: 31 c9 xor %ecx,%ecx 0.00 : 49e9ea: 66 81 e3 ff 7f and $0x7fff,%bx 0.00 : 49e9ef: eb 0a jmp 49e9fb 0.00 : 49e9f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49e9f8: 8b 4f 04 mov 0x4(%rdi),%ecx : * more than twice, once in the outer loop and once in HOT-chain : * chases. : */ : for (;;) : { : lp = PageGetItemId(page, nextoffnum); 0.00 : 49e9fb: 0f b7 c3 movzwl %bx,%eax : : /* Check for broken chains */ : if (!ItemIdIsNormal(lp)) 0.00 : 49e9fe: 48 8d 50 03 lea 0x3(%rax),%rdx : * more than twice, once in the outer loop and once in HOT-chain : * chases. : */ : for (;;) : { : lp = PageGetItemId(page, nextoffnum); 0.00 : 49ea02: 48 8d 70 ff lea -0x1(%rax),%rsi : : /* Check for broken chains */ : if (!ItemIdIsNormal(lp)) 0.00 : 49ea06: 41 8b 44 94 08 mov 0x8(%r12,%rdx,4),%eax 0.00 : 49ea0b: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49ea10: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49ea15: 0f 85 a5 00 00 00 jne 49eac0 : break; : : htup = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49ea1b: 41 0f b7 44 94 08 movzwl 0x8(%r12,%rdx,4),%eax 0.00 : 49ea21: 25 ff 7f 00 00 and $0x7fff,%eax : : if (TransactionIdIsValid(priorXmax) && 0.00 : 49ea26: 85 c9 test %ecx,%ecx : : /* Check for broken chains */ : if (!ItemIdIsNormal(lp)) : break; : : htup = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49ea28: 49 8d 3c 04 lea (%r12,%rax,1),%rdi : : if (TransactionIdIsValid(priorXmax) && 0.00 : 49ea2c: 74 1b je 49ea49 0.00 : 49ea2e: 0f b7 47 14 movzwl 0x14(%rdi),%eax 0.00 : 49ea32: ba 02 00 00 00 mov $0x2,%edx 0.00 : 49ea37: 25 00 03 00 00 and $0x300,%eax 0.00 : 49ea3c: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 49ea41: 74 02 je 49ea45 0.00 : 49ea43: 8b 17 mov (%rdi),%edx 0.00 : 49ea45: 39 ca cmp %ecx,%edx 0.00 : 49ea47: 75 77 jne 49eac0 : !TransactionIdEquals(priorXmax, HeapTupleHeaderGetXmin(htup))) : break; : : /* Remember the root line pointer for this item */ : root_offsets[nextoffnum - 1] = offnum; 0.00 : 49ea49: 66 45 89 2c 76 mov %r13w,(%r14,%rsi,2) : : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) 0.00 : 49ea4e: f6 47 13 40 testb $0x40,0x13(%rdi) 0.00 : 49ea52: 74 6c je 49eac0 0.00 : 49ea54: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 49ea58: f6 c6 08 test $0x8,%dh 0.00 : 49ea5b: 75 63 jne 49eac0 0.00 : 49ea5d: 89 d0 mov %edx,%eax 0.00 : 49ea5f: 25 00 03 00 00 and $0x300,%eax 0.00 : 49ea64: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 49ea69: 74 55 je 49eac0 : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49ea6b: 89 d0 mov %edx,%eax : : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); 0.00 : 49ea6d: 0f b7 5f 10 movzwl 0x10(%rdi),%ebx : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49ea71: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49ea76: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49ea7b: 0f 85 77 ff ff ff jne 49e9f8 0.00 : 49ea81: 84 d2 test %dl,%dl 0.00 : 49ea83: 0f 88 6f ff ff ff js 49e9f8 0.00 : 49ea89: e8 92 86 ff ff callq 497120 0.00 : 49ea8e: 89 c1 mov %eax,%ecx 0.00 : 49ea90: e9 66 ff ff ff jmpq 49e9fb 0.00 : 49ea95: 0f 1f 00 nopl (%rax) : if (!ItemIdIsUsed(lp) || ItemIdIsDead(lp)) : continue; : : if (ItemIdIsNormal(lp)) : { : htup = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49ea98: 41 0f b7 44 94 08 movzwl 0x8(%r12,%rdx,4),%eax 0.00 : 49ea9e: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 49eaa3: 49 8d 3c 04 lea (%r12,%rax,1),%rdi : /* : * Check if this tuple is part of a HOT-chain rooted at some other : * tuple. If so, skip it for now; we'll process it when we find : * its root. : */ : if (HeapTupleHeaderIsHeapOnly(htup)) 0.00 : 49eaa7: 66 83 7f 12 00 cmpw $0x0,0x12(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:763 100.00 : 49eaac: 78 12 js 49eac0 : : /* : * This is either a plain tuple or the root of a HOT-chain. : * Remember it in the mapping. : */ : root_offsets[offnum - 1] = offnum; 0.00 : 49eaae: 66 45 89 2c 4e mov %r13w,(%r14,%rcx,2) : : /* If it's not the start of a HOT-chain, we're done with it */ : if (!HeapTupleHeaderIsHotUpdated(htup)) 0.00 : 49eab3: f6 47 13 40 testb $0x40,0x13(%rdi) 0.00 : 49eab7: 75 9b jne 49ea54 0.00 : 49eab9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49eac0: 41 83 c5 01 add $0x1,%r13d : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); : : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.00 : 49eac4: 66 45 39 ef cmp %r13w,%r15w 0.00 : 49eac8: 0f 83 e2 fe ff ff jae 49e9b0 : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); : } : } : } 0.00 : 49eace: 48 83 c4 08 add $0x8,%rsp 0.00 : 49ead2: 5b pop %rbx 0.00 : 49ead3: 41 5c pop %r12 0.00 : 49ead5: 41 5d pop %r13 0.00 : 49ead7: 41 5e pop %r14 0.00 : 49ead9: 41 5f pop %r15 0.00 : 49eadb: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:235 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:261 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a2c70 : : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr_slice(struct varlena * attr, : int32 sliceoffset, int32 slicelength) : { 0.00 : 4a2c70: 55 push %rbp 0.00 : 4a2c71: 48 89 e5 mov %rsp,%rbp 0.00 : 4a2c74: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 4a2c78: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 4a2c7c: 41 89 f4 mov %esi,%r12d 0.00 : 4a2c7f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 4a2c83: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4a2c87: 49 89 fe mov %rdi,%r14 0.00 : 4a2c8a: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 4a2c8e: 48 83 ec 60 sub $0x60,%rsp : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2c92: 0f b6 0f movzbl (%rdi),%ecx : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr_slice(struct varlena * attr, : int32 sliceoffset, int32 slicelength) : { 0.00 : 4a2c95: 41 89 d7 mov %edx,%r15d : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2c98: 48 89 fe mov %rdi,%rsi 0.00 : 4a2c9b: 80 f9 01 cmp $0x1,%cl 0.00 : 4a2c9e: 0f 84 dc 00 00 00 je 4a2d80 : VARATT_EXTERNAL_GET_POINTER(redirect, attr); : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(redirect.pointer)); : : return heap_tuple_untoast_attr_slice(redirect.pointer, 0.00 : 4a2ca4: 4d 89 f5 mov %r14,%r13 : sliceoffset, slicelength); : } : else : preslice = attr; : : if (VARATT_IS_COMPRESSED(preslice)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:235 50.00 : 4a2ca7: 0f b6 d1 movzbl %cl,%edx 0.00 : 4a2caa: 89 d0 mov %edx,%eax 0.00 : 4a2cac: 83 e0 03 and $0x3,%eax 0.00 : 4a2caf: 83 f8 02 cmp $0x2,%eax 0.00 : 4a2cb2: 0f 84 f0 00 00 00 je 4a2da8 : : if (tmp != (PGLZ_Header *) attr) : pfree(tmp); : } : : if (VARATT_IS_SHORT(preslice)) 0.00 : 4a2cb8: 83 e2 01 and $0x1,%edx 0.00 : 4a2cbb: 0f 85 8f 00 00 00 jne 4a2d50 : attrdata = VARDATA_SHORT(preslice); : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; : } : else : { : attrdata = VARDATA(preslice); 0.00 : 4a2cc1: 49 8d 45 04 lea 0x4(%r13),%rax 0.00 : 4a2cc5: 48 89 45 a8 mov %rax,-0x58(%rbp) : attrsize = VARSIZE(preslice) - VARHDRSZ; 0.00 : 4a2cc9: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 4a2ccd: c1 e8 02 shr $0x2,%eax 0.00 : 4a2cd0: 83 e8 04 sub $0x4,%eax : } : : /* slicing of datum for compressed cases and plain value */ : : if (sliceoffset >= attrsize) 0.00 : 4a2cd3: 44 39 e0 cmp %r12d,%eax 0.00 : 4a2cd6: 0f 8f 8d 00 00 00 jg 4a2d69 0.00 : 4a2cdc: 45 31 e4 xor %r12d,%r12d 0.00 : 4a2cdf: 45 31 ff xor %r15d,%r15d 0.00 : 4a2ce2: 31 d2 xor %edx,%edx 0.00 : 4a2ce4: 31 c9 xor %ecx,%ecx 0.00 : 4a2ce6: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4a2ced: 00 : { : sliceoffset = 0; : slicelength = 0; : } : : if (((sliceoffset + slicelength) > attrsize) || slicelength < 0) 0.00 : 4a2cee: 39 d0 cmp %edx,%eax 0.00 : 4a2cf0: 7c 04 jl 4a2cf6 0.00 : 4a2cf2: 84 c9 test %cl,%cl 0.00 : 4a2cf4: 74 06 je 4a2cfc : slicelength = attrsize - sliceoffset; 0.00 : 4a2cf6: 41 89 c7 mov %eax,%r15d 0.00 : 4a2cf9: 45 29 e7 sub %r12d,%r15d : : result = (struct varlena *) palloc(slicelength + VARHDRSZ); 0.00 : 4a2cfc: 41 8d 5f 04 lea 0x4(%r15),%ebx 0.00 : 4a2d00: 48 63 fb movslq %ebx,%rdi : SET_VARSIZE(result, slicelength + VARHDRSZ); 0.00 : 4a2d03: c1 e3 02 shl $0x2,%ebx : } : : if (((sliceoffset + slicelength) > attrsize) || slicelength < 0) : slicelength = attrsize - sliceoffset; : : result = (struct varlena *) palloc(slicelength + VARHDRSZ); 0.00 : 4a2d06: e8 45 60 2f 00 callq 798d50 : SET_VARSIZE(result, slicelength + VARHDRSZ); 0.00 : 4a2d0b: 89 18 mov %ebx,(%rax) : : memcpy(VARDATA(result), attrdata + sliceoffset, slicelength); 0.00 : 4a2d0d: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4a2d11: 48 8d 78 04 lea 0x4(%rax),%rdi 0.00 : 4a2d15: 48 03 75 b8 add -0x48(%rbp),%rsi 0.00 : 4a2d19: 49 63 d7 movslq %r15d,%rdx : } : : if (((sliceoffset + slicelength) > attrsize) || slicelength < 0) : slicelength = attrsize - sliceoffset; : : result = (struct varlena *) palloc(slicelength + VARHDRSZ); 0.00 : 4a2d1c: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(result, slicelength + VARHDRSZ); : : memcpy(VARDATA(result), attrdata + sliceoffset, slicelength); 0.00 : 4a2d1f: e8 cc 6e fc ff callq 469bf0 : : if (preslice != attr) 0.00 : 4a2d24: 4d 39 f5 cmp %r14,%r13 0.00 : 4a2d27: 74 08 je 4a2d31 : pfree(preslice); 0.00 : 4a2d29: 4c 89 ef mov %r13,%rdi 0.00 : 4a2d2c: e8 4f 5e 2f 00 callq 798b80 : : return result; : } 0.00 : 4a2d31: 4c 89 e0 mov %r12,%rax 0.00 : 4a2d34: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4a2d38: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4a2d3c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4a2d40: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4a2d44: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4a2d48: c9 leaveq 0.00 : 4a2d49: c3 retq 0.00 : 4a2d4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : if (VARATT_IS_SHORT(preslice)) : { : attrdata = VARDATA_SHORT(preslice); : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; 0.00 : 4a2d50: d0 e9 shr %cl : pfree(tmp); : } : : if (VARATT_IS_SHORT(preslice)) : { : attrdata = VARDATA_SHORT(preslice); 0.00 : 4a2d52: 48 83 c6 01 add $0x1,%rsi : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; 0.00 : 4a2d56: 0f b6 c1 movzbl %cl,%eax : pfree(tmp); : } : : if (VARATT_IS_SHORT(preslice)) : { : attrdata = VARDATA_SHORT(preslice); 0.00 : 4a2d59: 48 89 75 a8 mov %rsi,-0x58(%rbp) : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; 0.00 : 4a2d5d: 83 e8 01 sub $0x1,%eax : attrsize = VARSIZE(preslice) - VARHDRSZ; : } : : /* slicing of datum for compressed cases and plain value */ : : if (sliceoffset >= attrsize) 0.00 : 4a2d60: 44 39 e0 cmp %r12d,%eax 0.00 : 4a2d63: 0f 8e 73 ff ff ff jle 4a2cdc 0.00 : 4a2d69: 44 89 f9 mov %r15d,%ecx 0.00 : 4a2d6c: 49 63 dc movslq %r12d,%rbx 0.00 : 4a2d6f: 43 8d 14 27 lea (%r15,%r12,1),%edx 0.00 : 4a2d73: c1 e9 1f shr $0x1f,%ecx 0.00 : 4a2d76: 48 89 5d b8 mov %rbx,-0x48(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:261 50.00 : 4a2d7a: e9 6f ff ff ff jmpq 4a2cee 0.00 : 4a2d7f: 90 nop : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2d80: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 4a2d84: 3c 12 cmp $0x12,%al 0.00 : 4a2d86: 74 70 je 4a2df8 : return toast_fetch_datum_slice(attr, sliceoffset, slicelength); : : /* fetch it back (compressed marker will get set automatically) */ : preslice = toast_fetch_datum(attr); : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a2d88: 2c 01 sub $0x1,%al 0.00 : 4a2d8a: 0f 85 14 ff ff ff jne 4a2ca4 : { : struct varatt_indirect redirect; : : VARATT_EXTERNAL_GET_POINTER(redirect, attr); 0.00 : 4a2d90: 48 8b 7f 02 mov 0x2(%rdi),%rdi : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(redirect.pointer)); : : return heap_tuple_untoast_attr_slice(redirect.pointer, 0.00 : 4a2d94: 44 89 e6 mov %r12d,%esi : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) : { : struct varatt_indirect redirect; : : VARATT_EXTERNAL_GET_POINTER(redirect, attr); 0.00 : 4a2d97: 48 89 7d c0 mov %rdi,-0x40(%rbp) : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(redirect.pointer)); : : return heap_tuple_untoast_attr_slice(redirect.pointer, 0.00 : 4a2d9b: e8 d0 fe ff ff callq 4a2c70 0.00 : 4a2da0: 49 89 c4 mov %rax,%r12 : : if (preslice != attr) : pfree(preslice); : : return result; : } 0.00 : 4a2da3: eb 8c jmp 4a2d31 0.00 : 4a2da5: 0f 1f 00 nopl (%rax) : else : preslice = attr; : : if (VARATT_IS_COMPRESSED(preslice)) : { : PGLZ_Header *tmp = (PGLZ_Header *) preslice; 0.00 : 4a2da8: 4c 89 6d b0 mov %r13,-0x50(%rbp) : Size size = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; 0.00 : 4a2dac: 41 8b 5d 04 mov 0x4(%r13),%ebx 0.00 : 4a2db0: 83 c3 04 add $0x4,%ebx 0.00 : 4a2db3: 48 63 db movslq %ebx,%rbx : : preslice = (struct varlena *) palloc(size); 0.00 : 4a2db6: 48 89 df mov %rbx,%rdi : SET_VARSIZE(preslice, size); 0.00 : 4a2db9: c1 e3 02 shl $0x2,%ebx : if (VARATT_IS_COMPRESSED(preslice)) : { : PGLZ_Header *tmp = (PGLZ_Header *) preslice; : Size size = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; : : preslice = (struct varlena *) palloc(size); 0.00 : 4a2dbc: e8 8f 5f 2f 00 callq 798d50 : SET_VARSIZE(preslice, size); 0.00 : 4a2dc1: 89 18 mov %ebx,(%rax) : pglz_decompress(tmp, VARDATA(preslice)); 0.00 : 4a2dc3: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4a2dc7: 48 8d 70 04 lea 0x4(%rax),%rsi : if (VARATT_IS_COMPRESSED(preslice)) : { : PGLZ_Header *tmp = (PGLZ_Header *) preslice; : Size size = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; : : preslice = (struct varlena *) palloc(size); 0.00 : 4a2dcb: 49 89 c5 mov %rax,%r13 : SET_VARSIZE(preslice, size); : pglz_decompress(tmp, VARDATA(preslice)); 0.00 : 4a2dce: e8 dd ee 26 00 callq 711cb0 : : if (tmp != (PGLZ_Header *) attr) 0.00 : 4a2dd3: 4c 39 75 b0 cmp %r14,-0x50(%rbp) 0.00 : 4a2dd7: 74 09 je 4a2de2 : pfree(tmp); 0.00 : 4a2dd9: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4a2ddd: e8 9e 5d 2f 00 callq 798b80 0.00 : 4a2de2: 41 0f b6 4d 00 movzbl 0x0(%r13),%ecx 0.00 : 4a2de7: 4c 89 ee mov %r13,%rsi 0.00 : 4a2dea: 0f b6 d1 movzbl %cl,%edx 0.00 : 4a2ded: e9 c6 fe ff ff jmpq 4a2cb8 0.00 : 4a2df2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a2df8: 48 8b 47 02 mov 0x2(%rdi),%rax 0.00 : 4a2dfc: 48 89 c1 mov %rax,%rcx 0.00 : 4a2dff: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 4a2e03: 48 8b 57 0a mov 0xa(%rdi),%rdx 0.00 : 4a2e07: 48 c1 e9 20 shr $0x20,%rcx : : /* fast path for non-compressed external datums */ : if (!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) 0.00 : 4a2e0b: 83 e8 04 sub $0x4,%eax 0.00 : 4a2e0e: 39 c1 cmp %eax,%ecx : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a2e10: 48 89 55 c8 mov %rdx,-0x38(%rbp) : : /* fast path for non-compressed external datums */ : if (!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) 0.00 : 4a2e14: 7d 1a jge 4a2e30 : return toast_fetch_datum_slice(attr, sliceoffset, slicelength); : : /* fetch it back (compressed marker will get set automatically) */ : preslice = toast_fetch_datum(attr); 0.00 : 4a2e16: e8 05 e7 ff ff callq 4a1520 0.00 : 4a2e1b: 49 89 c5 mov %rax,%r13 0.00 : 4a2e1e: 48 89 c6 mov %rax,%rsi 0.00 : 4a2e21: 0f b6 08 movzbl (%rax),%ecx : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e24: e9 7e fe ff ff jmpq 4a2ca7 0.00 : 4a2e29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); : : /* fast path for non-compressed external datums */ : if (!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) : return toast_fetch_datum_slice(attr, sliceoffset, slicelength); 0.00 : 4a2e30: 44 89 e6 mov %r12d,%esi 0.00 : 4a2e33: 44 89 fa mov %r15d,%edx 0.00 : 4a2e36: e8 f5 ef ff ff callq 4a1e30 0.00 : 4a2e3b: 49 89 c4 mov %rax,%r12 : : if (preslice != attr) : pfree(preslice); : : return result; : } 0.00 : 4a2e3e: e9 ee fe ff ff jmpq 4a2d31 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:188 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:188 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a2e50 : : * or external storage. : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { 0.00 : 4a2e50: 55 push %rbp 0.00 : 4a2e51: 48 89 e5 mov %rsp,%rbp 0.00 : 4a2e54: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 4a2e58: 4c 89 75 f8 mov %r14,-0x8(%rbp) : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e5c: 48 89 fb mov %rdi,%rbx : * or external storage. : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { 0.00 : 4a2e5f: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 4a2e63: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 4a2e67: 48 83 ec 30 sub $0x30,%rsp : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e6b: 0f b6 17 movzbl (%rdi),%edx : * or external storage. : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { 0.00 : 4a2e6e: 49 89 fe mov %rdi,%r14 : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e71: 80 fa 01 cmp $0x1,%dl 0.00 : 4a2e74: 74 2a je 4a2ea0 : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(attr)); : : attr = heap_tuple_untoast_attr(attr); : } : else if (VARATT_IS_COMPRESSED(attr)) 0.00 : 4a2e76: 0f b6 ca movzbl %dl,%ecx 0.00 : 4a2e79: 89 c8 mov %ecx,%eax 0.00 : 4a2e7b: 83 e0 03 and $0x3,%eax 0.00 : 4a2e7e: 83 f8 02 cmp $0x2,%eax 0.00 : 4a2e81: 74 65 je 4a2ee8 : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : pglz_decompress(tmp, VARDATA(attr)); : } : else if (VARATT_IS_SHORT(attr)) 0.00 : 4a2e83: 83 e1 01 and $0x1,%ecx 0.00 : 4a2e86: 75 28 jne 4a2eb0 : memcpy(VARDATA(new_attr), VARDATA_SHORT(attr), data_size); : attr = new_attr; : } : : return attr; : } /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:188 50.00 : 4a2e88: 4c 89 f0 mov %r14,%rax 0.00 : 4a2e8b: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 4a2e8f: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 4a2e93: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 4a2e97: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 4a2e9b: c9 leaveq 50.00 : 4a2e9c: c3 retq 0.00 : 4a2e9d: 0f 1f 00 nopl (%rax) : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2ea0: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 4a2ea4: 3c 12 cmp $0x12,%al 0.00 : 4a2ea6: 74 78 je 4a2f20 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : pglz_decompress(tmp, VARDATA(attr)); : pfree(tmp); : } : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a2ea8: 2c 01 sub $0x1,%al 0.00 : 4a2eaa: 0f 84 c8 00 00 00 je 4a2f78 : else if (VARATT_IS_SHORT(attr)) : { : /* : * This is a short-header varlena --- convert to 4-byte header format : */ : Size data_size = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT; 0.00 : 4a2eb0: d0 ea shr %dl 0.00 : 4a2eb2: 0f b6 da movzbl %dl,%ebx 0.00 : 4a2eb5: 4c 8d 6b ff lea -0x1(%rbx),%r13 : Size new_size = data_size + VARHDRSZ; 0.00 : 4a2eb9: 48 83 c3 03 add $0x3,%rbx : struct varlena *new_attr; : : new_attr = (struct varlena *) palloc(new_size); 0.00 : 4a2ebd: 48 89 df mov %rbx,%rdi : SET_VARSIZE(new_attr, new_size); 0.00 : 4a2ec0: c1 e3 02 shl $0x2,%ebx : */ : Size data_size = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT; : Size new_size = data_size + VARHDRSZ; : struct varlena *new_attr; : : new_attr = (struct varlena *) palloc(new_size); 0.00 : 4a2ec3: e8 88 5e 2f 00 callq 798d50 : SET_VARSIZE(new_attr, new_size); : memcpy(VARDATA(new_attr), VARDATA_SHORT(attr), data_size); 0.00 : 4a2ec8: 49 8d 76 01 lea 0x1(%r14),%rsi 0.00 : 4a2ecc: 48 8d 78 04 lea 0x4(%rax),%rdi : */ : Size data_size = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT; : Size new_size = data_size + VARHDRSZ; : struct varlena *new_attr; : : new_attr = (struct varlena *) palloc(new_size); 0.00 : 4a2ed0: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(new_attr, new_size); 0.00 : 4a2ed3: 89 18 mov %ebx,(%rax) : memcpy(VARDATA(new_attr), VARDATA_SHORT(attr), data_size); 0.00 : 4a2ed5: 4c 89 ea mov %r13,%rdx 0.00 : 4a2ed8: 4d 89 e6 mov %r12,%r14 0.00 : 4a2edb: e8 10 6d fc ff callq 469bf0 0.00 : 4a2ee0: eb a6 jmp 4a2e88 0.00 : 4a2ee2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * This is a compressed value inside of the main tuple : */ : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2ee8: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 4a2eeb: 83 c7 04 add $0x4,%edi 0.00 : 4a2eee: 48 63 ff movslq %edi,%rdi 0.00 : 4a2ef1: e8 5a 5e 2f 00 callq 798d50 0.00 : 4a2ef6: 49 89 c6 mov %rax,%r14 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2ef9: 8b 43 04 mov 0x4(%rbx),%eax : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2efc: 48 89 df mov %rbx,%rdi 0.00 : 4a2eff: 49 8d 76 04 lea 0x4(%r14),%rsi : * This is a compressed value inside of the main tuple : */ : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f03: 8d 04 85 10 00 00 00 lea 0x10(,%rax,4),%eax 0.00 : 4a2f0a: 41 89 06 mov %eax,(%r14) : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2f0d: e8 9e ed 26 00 callq 711cb0 0.00 : 4a2f12: e9 71 ff ff ff jmpq 4a2e88 0.00 : 4a2f17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a2f1e: 00 00 : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : /* : * This is an externally stored datum --- fetch it back from there : */ : attr = toast_fetch_datum(attr); 0.00 : 4a2f20: e8 fb e5 ff ff callq 4a1520 0.00 : 4a2f25: 49 89 c6 mov %rax,%r14 : /* If it's compressed, decompress it */ : if (VARATT_IS_COMPRESSED(attr)) 0.00 : 4a2f28: 0f b6 00 movzbl (%rax),%eax 0.00 : 4a2f2b: 83 e0 03 and $0x3,%eax 0.00 : 4a2f2e: 83 f8 02 cmp $0x2,%eax 0.00 : 4a2f31: 0f 85 51 ff ff ff jne 4a2e88 : { : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f37: 41 8b 7e 04 mov 0x4(%r14),%edi : */ : attr = toast_fetch_datum(attr); : /* If it's compressed, decompress it */ : if (VARATT_IS_COMPRESSED(attr)) : { : PGLZ_Header *tmp = (PGLZ_Header *) attr; 0.00 : 4a2f3b: 4c 89 f3 mov %r14,%rbx : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f3e: 83 c7 04 add $0x4,%edi 0.00 : 4a2f41: 48 63 ff movslq %edi,%rdi 0.00 : 4a2f44: e8 07 5e 2f 00 callq 798d50 0.00 : 4a2f49: 49 89 c6 mov %rax,%r14 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f4c: 8b 43 04 mov 0x4(%rbx),%eax : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2f4f: 48 89 df mov %rbx,%rdi 0.00 : 4a2f52: 49 8d 76 04 lea 0x4(%r14),%rsi : if (VARATT_IS_COMPRESSED(attr)) : { : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f56: 8d 04 85 10 00 00 00 lea 0x10(,%rax,4),%eax 0.00 : 4a2f5d: 41 89 06 mov %eax,(%r14) : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2f60: e8 4b ed 26 00 callq 711cb0 : pfree(tmp); 0.00 : 4a2f65: 48 89 df mov %rbx,%rdi 0.00 : 4a2f68: e8 13 5c 2f 00 callq 798b80 0.00 : 4a2f6d: e9 16 ff ff ff jmpq 4a2e88 0.00 : 4a2f72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) : { : struct varatt_indirect redirect; : : VARATT_EXTERNAL_GET_POINTER(redirect, attr); 0.00 : 4a2f78: 48 8b 7f 02 mov 0x2(%rdi),%rdi 0.00 : 4a2f7c: 48 89 7d d0 mov %rdi,-0x30(%rbp) : attr = (struct varlena *) redirect.pointer; : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(attr)); : : attr = heap_tuple_untoast_attr(attr); 0.00 : 4a2f80: e8 cb fe ff ff callq 4a2e50 0.00 : 4a2f85: 49 89 c6 mov %rax,%r14 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : pglz_decompress(tmp, VARDATA(attr)); : pfree(tmp); : } : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a2f88: e9 fb fe ff ff jmpq 4a2e88 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:367 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:371 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5760 : : * index_endscan - end a scan : * ---------------- : */ : void : index_endscan(IndexScanDesc scan) : { 0.00 : 4a5760: 55 push %rbp 50.00 : 4a5761: 48 89 e5 mov %rsp,%rbp 0.00 : 4a5764: 41 54 push %r12 0.00 : 4a5766: 53 push %rbx : FmgrInfo *procedure; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amendscan); 0.00 : 4a5767: 48 8b 57 08 mov 0x8(%rdi),%rdx : * index_endscan - end a scan : * ---------------- : */ : void : index_endscan(IndexScanDesc scan) : { 0.00 : 4a576b: 48 89 fb mov %rdi,%rbx : FmgrInfo *procedure; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amendscan); 0.00 : 4a576e: 48 8b 82 c0 00 00 00 mov 0xc0(%rdx),%rax 0.00 : 4a5775: 44 8b 88 f8 00 00 00 mov 0xf8(%rax),%r9d 0.00 : 4a577c: 4c 8d a0 f0 00 00 00 lea 0xf0(%rax),%r12 0.00 : 4a5783: 45 85 c9 test %r9d,%r9d 0.00 : 4a5786: 75 1d jne 4a57a5 0.00 : 4a5788: 48 8b 82 b0 00 00 00 mov 0xb0(%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:371 50.00 : 4a578f: 8b 78 68 mov 0x68(%rax),%edi 0.00 : 4a5792: 85 ff test %edi,%edi 0.00 : 4a5794: 74 44 je 4a57da 0.00 : 4a5796: 48 8b 92 b8 00 00 00 mov 0xb8(%rdx),%rdx 0.00 : 4a579d: 4c 89 e6 mov %r12,%rsi 0.00 : 4a57a0: e8 ab a8 2d 00 callq 780050 : : /* Release any held pin on a heap page */ : if (BufferIsValid(scan->xs_cbuf)) 0.00 : 4a57a5: 8b 7b 68 mov 0x68(%rbx),%edi 0.00 : 4a57a8: 85 ff test %edi,%edi 0.00 : 4a57aa: 74 0c je 4a57b8 : { : ReleaseBuffer(scan->xs_cbuf); 0.00 : 4a57ac: e8 af f6 1c 00 callq 674e60 : scan->xs_cbuf = InvalidBuffer; 0.00 : 4a57b1: c7 43 68 00 00 00 00 movl $0x0,0x68(%rbx) : } : : /* End the AM's scan */ : FunctionCall1(procedure, PointerGetDatum(scan)); 0.00 : 4a57b8: 48 89 da mov %rbx,%rdx 0.00 : 4a57bb: 4c 89 e7 mov %r12,%rdi 0.00 : 4a57be: 31 f6 xor %esi,%esi 0.00 : 4a57c0: e8 0b 89 2d 00 callq 77e0d0 : : /* Release index refcount acquired by index_beginscan */ : RelationDecrementReferenceCount(scan->indexRelation); 0.00 : 4a57c5: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 4a57c9: e8 52 9f 2c 00 callq 76f720 : : /* Release the scan data structure itself */ : IndexScanEnd(scan); 0.00 : 4a57ce: 48 89 df mov %rbx,%rdi : } 0.00 : 4a57d1: 5b pop %rbx 0.00 : 4a57d2: 41 5c pop %r12 0.00 : 4a57d4: c9 leaveq : : /* Release index refcount acquired by index_beginscan */ : RelationDecrementReferenceCount(scan->indexRelation); : : /* Release the scan data structure itself */ : IndexScanEnd(scan); 0.00 : 4a57d5: e9 d6 f0 ff ff jmpq 4a48b0 : index_endscan(IndexScanDesc scan) : { : FmgrInfo *procedure; : : SCAN_CHECKS; : GET_SCAN_PROCEDURE(amendscan); 0.00 : 4a57da: ba 7f 3c 7b 00 mov $0x7b3c7f,%edx 0.00 : 4a57df: be 73 01 00 00 mov $0x173,%esi 0.00 : 4a57e4: bf 33 3b 7b 00 mov $0x7b3b33,%edi 0.00 : 4a57e9: e8 32 5c 2d 00 callq 77b420 0.00 : 4a57ee: ba 99 3b 7b 00 mov $0x7b3b99,%edx 0.00 : 4a57f3: be 48 3b 7b 00 mov $0x7b3b48,%esi 0.00 : 4a57f8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a57fd: 31 c0 xor %eax,%eax 0.00 : 4a57ff: e8 2c 5a 2d 00 callq 77b230 0.00 : 4a5804: e8 c7 3c fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:164 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5b60 : : * Some callers may prefer to use relation_open directly. : * ---------------- : */ : Relation : index_open(Oid relationId, LOCKMODE lockmode) : { 0.00 : 4a5b60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:164 100.00 : 4a5b61: 48 89 e5 mov %rsp,%rbp 0.00 : 4a5b64: 53 push %rbx 0.00 : 4a5b65: 48 83 ec 08 sub $0x8,%rsp : Relation r; : : r = relation_open(relationId, lockmode); 0.00 : 4a5b69: e8 62 7f ff ff callq 49dad0 0.00 : 4a5b6e: 48 89 c3 mov %rax,%rbx : : if (r->rd_rel->relkind != RELKIND_INDEX) 0.00 : 4a5b71: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 4a5b75: 80 78 6f 69 cmpb $0x69,0x6f(%rax) 0.00 : 4a5b79: 75 0a jne 4a5b85 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("\"%s\" is not an index", : RelationGetRelationName(r)))); : : return r; : } 0.00 : 4a5b7b: 48 89 d8 mov %rbx,%rax 0.00 : 4a5b7e: 48 83 c4 08 add $0x8,%rsp 0.00 : 4a5b82: 5b pop %rbx 0.00 : 4a5b83: c9 leaveq 0.00 : 4a5b84: c3 retq : Relation r; : : r = relation_open(relationId, lockmode); : : if (r->rd_rel->relkind != RELKIND_INDEX) : ereport(ERROR, 0.00 : 4a5b85: 45 31 c0 xor %r8d,%r8d 0.00 : 4a5b88: b9 c6 3c 7b 00 mov $0x7b3cc6,%ecx 0.00 : 4a5b8d: ba ad 00 00 00 mov $0xad,%edx 0.00 : 4a5b92: be 33 3b 7b 00 mov $0x7b3b33,%esi 0.00 : 4a5b97: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a5b9c: e8 1f 4f 2d 00 callq 77aac0 0.00 : 4a5ba1: 84 c0 test %al,%al 0.00 : 4a5ba3: 75 05 jne 4a5baa 0.00 : 4a5ba5: e8 26 39 fc ff callq 4694d0 0.00 : 4a5baa: 48 8b 73 30 mov 0x30(%rbx),%rsi 0.00 : 4a5bae: bf c1 3b 7b 00 mov $0x7b3bc1,%edi 0.00 : 4a5bb3: 31 c0 xor %eax,%eax 0.00 : 4a5bb5: e8 e6 6c 2d 00 callq 77c8a0 0.00 : 4a5bba: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 4a5bbf: 89 c3 mov %eax,%ebx 0.00 : 4a5bc1: e8 8a 71 2d 00 callq 77cd50 0.00 : 4a5bc6: 89 de mov %ebx,%esi 0.00 : 4a5bc8: 89 c7 mov %eax,%edi 0.00 : 4a5bca: 31 c0 xor %eax,%eax 0.00 : 4a5bcc: e8 0f 4a 2d 00 callq 77a5e0 0.00 : 4a5bd1: eb d2 jmp 4a5ba5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:148 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5ce0 : : PG_RETURN_INT32(-1); : } : : static int : btint8fastcmp(Datum x, Datum y, SortSupport ssup) : { 0.00 : 4a5ce0: 55 push %rbp : int64 a = DatumGetInt64(x); : int64 b = DatumGetInt64(y); : : if (a > b) 100.00 : 4a5ce1: 48 39 f7 cmp %rsi,%rdi 0.00 : 4a5ce4: b8 01 00 00 00 mov $0x1,%eax : PG_RETURN_INT32(-1); : } : : static int : btint8fastcmp(Datum x, Datum y, SortSupport ssup) : { 0.00 : 4a5ce9: 48 89 e5 mov %rsp,%rbp : int64 a = DatumGetInt64(x); : int64 b = DatumGetInt64(y); : : if (a > b) 0.00 : 4a5cec: 7f 09 jg 4a5cf7 : return 1; : else if (a == b) 0.00 : 4a5cee: 0f 94 c0 sete %al 0.00 : 4a5cf1: 0f b6 c0 movzbl %al,%eax 0.00 : 4a5cf4: 83 e8 01 sub $0x1,%eax : return 0; : else : return -1; : } 0.00 : 4a5cf7: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:261 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5e40 : : : Datum : btoidcmp(PG_FUNCTION_ARGS) : { : Oid a = PG_GETARG_OID(0); : Oid b = PG_GETARG_OID(1); 0.00 : 4a5e40: 8b 47 28 mov 0x28(%rdi),%eax : : if (a > b) 0.00 : 4a5e43: 39 47 20 cmp %eax,0x20(%rdi) 0.00 : 4a5e46: ba 01 00 00 00 mov $0x1,%edx : PG_RETURN_INT32(-1); : } : : Datum : btoidcmp(PG_FUNCTION_ARGS) : { 0.00 : 4a5e4b: 55 push %rbp 0.00 : 4a5e4c: 48 89 e5 mov %rsp,%rbp : Oid a = PG_GETARG_OID(0); : Oid b = PG_GETARG_OID(1); : : if (a > b) 0.00 : 4a5e4f: 77 0e ja 4a5e5f : PG_RETURN_INT32(1); : else if (a == b) 0.00 : 4a5e51: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 4a5e56: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4a5e5b: 48 0f 44 d0 cmove %rax,%rdx : PG_RETURN_INT32(0); : else : PG_RETURN_INT32(-1); : } 0.00 : 4a5e5f: 48 89 d0 mov %rdx,%rax 100.00 : 4a5e62: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:240 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:241 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:245 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004abf70 : : * Descend the tree recursively, find the appropriate location for our : * new tuple, and put it there. : */ : Datum : btinsert(PG_FUNCTION_ARGS) : { 0.00 : 4abf70: 55 push %rbp 0.00 : 4abf71: 48 89 e5 mov %rsp,%rbp 0.00 : 4abf74: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4abf78: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 4abf7c: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 4abf80: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 4abf84: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 4abf88: 48 83 ec 30 sub $0x30,%rsp : Relation rel = (Relation) PG_GETARG_POINTER(0); 0.00 : 4abf8c: 4c 8b 6f 20 mov 0x20(%rdi),%r13 : Datum *values = (Datum *) PG_GETARG_POINTER(1); : bool *isnull = (bool *) PG_GETARG_POINTER(2); : ItemPointer ht_ctid = (ItemPointer) PG_GETARG_POINTER(3); 0.00 : 4abf90: 4c 8b 67 38 mov 0x38(%rdi),%r12 : Relation heapRel = (Relation) PG_GETARG_POINTER(4); 0.00 : 4abf94: 4c 8b 77 40 mov 0x40(%rdi),%r14 : IndexUniqueCheck checkUnique = (IndexUniqueCheck) PG_GETARG_INT32(5); 0.00 : 4abf98: 4c 8b 7f 48 mov 0x48(%rdi),%r15 : bool result; : IndexTuple itup; : : /* generate an index tuple */ : itup = index_form_tuple(RelationGetDescr(rel), values, isnull); 0.00 : 4abf9c: 48 8b 57 30 mov 0x30(%rdi),%rdx 0.00 : 4abfa0: 48 8b 77 28 mov 0x28(%rdi),%rsi 0.00 : 4abfa4: 49 8b 7d 38 mov 0x38(%r13),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:240 33.33 : 4abfa8: e8 f3 52 fc ff callq 4712a0 0.00 : 4abfad: 48 89 c3 mov %rax,%rbx : itup->t_tid = *ht_ctid; 0.00 : 4abfb0: 41 8b 04 24 mov (%r12),%eax : : result = _bt_doinsert(rel, itup, checkUnique, heapRel); 0.00 : 4abfb4: 4c 89 f1 mov %r14,%rcx 0.00 : 4abfb7: 44 89 fa mov %r15d,%edx 0.00 : 4abfba: 48 89 de mov %rbx,%rsi 0.00 : 4abfbd: 4c 89 ef mov %r13,%rdi : bool result; : IndexTuple itup; : : /* generate an index tuple */ : itup = index_form_tuple(RelationGetDescr(rel), values, isnull); : itup->t_tid = *ht_ctid; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:241 33.33 : 4abfc0: 89 03 mov %eax,(%rbx) 0.00 : 4abfc2: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 4abfc8: 66 89 43 04 mov %ax,0x4(%rbx) : : result = _bt_doinsert(rel, itup, checkUnique, heapRel); 0.00 : 4abfcc: e8 3f c6 ff ff callq 4a8610 <_bt_doinsert> : : pfree(itup); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:245 33.33 : 4abfd1: 48 89 df mov %rbx,%rdi : : /* generate an index tuple */ : itup = index_form_tuple(RelationGetDescr(rel), values, isnull); : itup->t_tid = *ht_ctid; : : result = _bt_doinsert(rel, itup, checkUnique, heapRel); 0.00 : 4abfd4: 41 89 c4 mov %eax,%r12d : : pfree(itup); 0.00 : 4abfd7: e8 a4 cb 2e 00 callq 798b80 0.00 : 4abfdc: 31 c0 xor %eax,%eax 0.00 : 4abfde: 45 84 e4 test %r12b,%r12b : : PG_RETURN_BOOL(result); : } 0.00 : 4abfe1: 48 8b 5d d8 mov -0x28(%rbp),%rbx : itup = index_form_tuple(RelationGetDescr(rel), values, isnull); : itup->t_tid = *ht_ctid; : : result = _bt_doinsert(rel, itup, checkUnique, heapRel); : : pfree(itup); 0.00 : 4abfe5: 0f 95 c0 setne %al : : PG_RETURN_BOOL(result); : } 0.00 : 4abfe8: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4abfec: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4abff0: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4abff4: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4abff8: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:710 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0c50 : : * Note: this will return zero when not inside any transaction, one when : * inside a top-level transaction, etc. : */ : int : GetCurrentTransactionNestLevel(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:710 100.00 : 4c0c50: 48 8b 05 d1 71 6a 00 mov 0x6a71d1(%rip),%rax # b67e28 0.00 : 4c0c57: 55 push %rbp 0.00 : 4c0c58: 48 89 e5 mov %rsp,%rbp 0.00 : 4c0c5b: 8b 40 1c mov 0x1c(%rax),%eax : TransactionState s = CurrentTransactionState; : : return s->nestingLevel; : } 0.00 : 4c0c5e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:779 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c44a0 : : /* : * TransactionIdIsCurrentTransactionId : */ : bool : TransactionIdIsCurrentTransactionId(TransactionId xid) : { 0.00 : 4c44a0: 55 push %rbp 0.00 : 4c44a1: 48 89 e5 mov %rsp,%rbp 0.00 : 4c44a4: 41 57 push %r15 0.00 : 4c44a6: 41 89 ff mov %edi,%r15d 0.00 : 4c44a9: 41 56 push %r14 0.00 : 4c44ab: 41 55 push %r13 0.00 : 4c44ad: 41 54 push %r12 0.00 : 4c44af: 53 push %rbx 0.00 : 4c44b0: 48 83 ec 08 sub $0x8,%rsp : * : * Likewise, InvalidTransactionId and FrozenTransactionId are certainly : * not my transaction ID, so we can just return "false" immediately for : * any non-normal XID. : */ : if (!TransactionIdIsNormal(xid)) 0.00 : 4c44b4: 83 ff 02 cmp $0x2,%edi 0.00 : 4c44b7: 0f 86 b3 00 00 00 jbe 4c4570 : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) 0.00 : 4c44bd: 4c 8b 35 64 39 6a 00 mov 0x6a3964(%rip),%r14 # b67e28 0.00 : 4c44c4: 4d 85 f6 test %r14,%r14 0.00 : 4c44c7: 0f 84 a3 00 00 00 je 4c4570 0.00 : 4c44cd: 0f 1f 00 nopl (%rax) : { : int low, : high; : : if (s->state == TRANS_ABORT) 0.00 : 4c44d0: 41 83 7e 14 04 cmpl $0x4,0x14(%r14) 0.00 : 4c44d5: 0f 84 85 00 00 00 je 4c4560 : continue; : if (!TransactionIdIsValid(s->transactionId)) 0.00 : 4c44db: 41 8b 06 mov (%r14),%eax 0.00 : 4c44de: 85 c0 test %eax,%eax 0.00 : 4c44e0: 74 7e je 4c4560 : continue; /* it can't have any child XIDs either */ : if (TransactionIdEquals(xid, s->transactionId)) 0.00 : 4c44e2: 41 39 c7 cmp %eax,%r15d 0.00 : 4c44e5: 0f 84 9d 00 00 00 je 4c4588 : return true; : /* As the childXids array is ordered, we can use binary search */ : low = 0; : high = s->nChildXids - 1; 0.00 : 4c44eb: 41 8b 46 40 mov 0x40(%r14),%eax : while (low <= high) 0.00 : 4c44ef: 41 89 c5 mov %eax,%r13d 0.00 : 4c44f2: 41 83 ed 01 sub $0x1,%r13d 0.00 : 4c44f6: 78 68 js 4c4560 : { : int middle; : TransactionId probe; : : middle = low + (high - low) / 2; 0.00 : 4c44f8: 45 89 ec mov %r13d,%r12d : probe = s->childXids[middle]; 0.00 : 4c44fb: 49 8b 46 38 mov 0x38(%r14),%rax : while (low <= high) : { : int middle; : TransactionId probe; : : middle = low + (high - low) / 2; 0.00 : 4c44ff: 41 d1 fc sar %r12d : probe = s->childXids[middle]; 0.00 : 4c4502: 49 63 d4 movslq %r12d,%rdx 0.00 : 4c4505: 8b 3c 90 mov (%rax,%rdx,4),%edi : if (TransactionIdEquals(probe, xid)) 0.00 : 4c4508: 44 39 ff cmp %r15d,%edi 0.00 : 4c450b: 74 7b je 4c4588 0.00 : 4c450d: 31 db xor %ebx,%ebx 0.00 : 4c450f: eb 32 jmp 4c4543 0.00 : 4c4511: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return true; : else if (TransactionIdPrecedes(probe, xid)) : low = middle + 1; 0.00 : 4c4518: 41 8d 5c 24 01 lea 0x1(%r12),%ebx : if (TransactionIdEquals(xid, s->transactionId)) : return true; : /* As the childXids array is ordered, we can use binary search */ : low = 0; : high = s->nChildXids - 1; : while (low <= high) 0.00 : 4c451d: 41 39 dd cmp %ebx,%r13d 0.00 : 4c4520: 7c 3e jl 4c4560 : { : int middle; : TransactionId probe; : : middle = low + (high - low) / 2; 0.00 : 4c4522: 44 89 ea mov %r13d,%edx 0.00 : 4c4525: 29 da sub %ebx,%edx 0.00 : 4c4527: 89 d0 mov %edx,%eax 0.00 : 4c4529: c1 e8 1f shr $0x1f,%eax 0.00 : 4c452c: 01 d0 add %edx,%eax 0.00 : 4c452e: d1 f8 sar %eax 0.00 : 4c4530: 44 8d 24 18 lea (%rax,%rbx,1),%r12d : probe = s->childXids[middle]; 0.00 : 4c4534: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 4c4538: 49 63 d4 movslq %r12d,%rdx 0.00 : 4c453b: 8b 3c 90 mov (%rax,%rdx,4),%edi : if (TransactionIdEquals(probe, xid)) 0.00 : 4c453e: 44 39 ff cmp %r15d,%edi 0.00 : 4c4541: 74 45 je 4c4588 : return true; : else if (TransactionIdPrecedes(probe, xid)) 0.00 : 4c4543: 44 89 fe mov %r15d,%esi 0.00 : 4c4546: e8 95 ba ff ff callq 4bffe0 0.00 : 4c454b: 84 c0 test %al,%al 0.00 : 4c454d: 75 c9 jne 4c4518 : low = middle + 1; : else : high = middle - 1; 0.00 : 4c454f: 45 8d 6c 24 ff lea -0x1(%r12),%r13d : if (TransactionIdEquals(xid, s->transactionId)) : return true; : /* As the childXids array is ordered, we can use binary search */ : low = 0; : high = s->nChildXids - 1; : while (low <= high) 0.00 : 4c4554: 41 39 dd cmp %ebx,%r13d 0.00 : 4c4557: 7d c9 jge 4c4522 0.00 : 4c4559: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) 0.00 : 4c4560: 4d 8b 76 58 mov 0x58(%r14),%r14 0.00 : 4c4564: 4d 85 f6 test %r14,%r14 0.00 : 4c4567: 0f 85 63 ff ff ff jne 4c44d0 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 50.00 : 4c456d: 0f 1f 00 nopl (%rax) : high = middle - 1; : } : } : : return false; : } 0.00 : 4c4570: 48 83 c4 08 add $0x8,%rsp : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) 0.00 : 4c4574: 31 c0 xor %eax,%eax : high = middle - 1; : } : } : : return false; : } 0.00 : 4c4576: 5b pop %rbx 0.00 : 4c4577: 41 5c pop %r12 0.00 : 4c4579: 41 5d pop %r13 0.00 : 4c457b: 41 5e pop %r14 0.00 : 4c457d: 41 5f pop %r15 0.00 : 4c457f: c9 leaveq 0.00 : 4c4580: c3 retq 0.00 : 4c4581: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4c4588: 48 83 c4 08 add $0x8,%rsp : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) 0.00 : 4c458c: b8 01 00 00 00 mov $0x1,%eax : high = middle - 1; : } : } : : return false; : } 0.00 : 4c4591: 5b pop %rbx 0.00 : 4c4592: 41 5c pop %r12 0.00 : 4c4594: 41 5d pop %r13 0.00 : 4c4596: 41 5e pop %r14 0.00 : 4c4598: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:779 50.00 : 4c459a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7455 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cd510 : : /* : * If value is "unconditionally true" or "unconditionally false", just : * return it. This provides the normal fast path once recovery is known : * done. : */ : if (LocalXLogInsertAllowed >= 0) 0.00 : 4cd510: 8b 05 46 a9 69 00 mov 0x69a946(%rip),%eax # b67e5c : * But we also have provisions for forcing the result "true" or "false" : * within specific processes regardless of the global state. : */ : bool : XLogInsertAllowed(void) : { 0.00 : 4cd516: 55 push %rbp 0.00 : 4cd517: 48 89 e5 mov %rsp,%rbp : /* : * If value is "unconditionally true" or "unconditionally false", just : * return it. This provides the normal fast path once recovery is known : * done. : */ : if (LocalXLogInsertAllowed >= 0) 0.00 : 4cd51a: 85 c0 test %eax,%eax : return (bool) LocalXLogInsertAllowed; 0.00 : 4cd51c: 89 c2 mov %eax,%edx : /* : * If value is "unconditionally true" or "unconditionally false", just : * return it. This provides the normal fast path once recovery is known : * done. : */ : if (LocalXLogInsertAllowed >= 0) 0.00 : 4cd51e: 78 08 js 4cd528 : * On exit from recovery, reset to "unconditionally true", since there is : * no need to keep checking. : */ : LocalXLogInsertAllowed = 1; : return true; : } 0.00 : 4cd520: 89 d0 mov %edx,%eax 0.00 : 4cd522: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7455 100.00 : 4cd523: c3 retq 0.00 : 4cd524: 0f 1f 40 00 nopl 0x0(%rax) : return (bool) LocalXLogInsertAllowed; : : /* : * Else, must check to see if we're still in recovery. : */ : if (RecoveryInProgress()) 0.00 : 4cd528: e8 93 ff ff ff callq 4cd4c0 0.00 : 4cd52d: 31 d2 xor %edx,%edx 0.00 : 4cd52f: 84 c0 test %al,%al 0.00 : 4cd531: 75 ed jne 4cd520 : : /* : * On exit from recovery, reset to "unconditionally true", since there is : * no need to keep checking. : */ : LocalXLogInsertAllowed = 1; 0.00 : 4cd533: c7 05 1f a9 69 00 01 movl $0x1,0x69a91f(%rip) # b67e5c 0.00 : 4cd53a: 00 00 00 0.00 : 4cd53d: ba 01 00 00 00 mov $0x1,%edx : return true; : } 0.00 : 4cd542: eb dc jmp 4cd520 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1644 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cdba0 : : /* : * Release our insertion lock (or locks, if we're holding them all). : */ : static void : WALInsertLockRelease(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1644 100.00 : 4cdba0: 55 push %rbp 0.00 : 4cdba1: 48 89 e5 mov %rsp,%rbp 0.00 : 4cdba4: 53 push %rbx 0.00 : 4cdba5: 48 83 ec 08 sub $0x8,%rsp : if (holdingAllLocks) 0.00 : 4cdba9: 80 3d 18 b6 6a 00 00 cmpb $0x0,0x6ab618(%rip) # b791c8 0.00 : 4cdbb0: 74 36 je 4cdbe8 0.00 : 4cdbb2: 31 db xor %ebx,%ebx 0.00 : 4cdbb4: 0f 1f 40 00 nopl 0x0(%rax) : { : int i; : : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) : LWLockRelease(&WALInsertLocks[i].l.lock); 0.00 : 4cdbb8: 48 89 df mov %rbx,%rdi 0.00 : 4cdbbb: 48 03 3d fe b5 6a 00 add 0x6ab5fe(%rip),%rdi # b791c0 0.00 : 4cdbc2: 48 83 eb 80 sub $0xffffffffffffff80,%rbx 0.00 : 4cdbc6: e8 d5 17 1c 00 callq 68f3a0 : { : if (holdingAllLocks) : { : int i; : : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) 0.00 : 4cdbcb: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 4cdbd2: 75 e4 jne 4cdbb8 : LWLockRelease(&WALInsertLocks[i].l.lock); : : holdingAllLocks = false; 0.00 : 4cdbd4: c6 05 ed b5 6a 00 00 movb $0x0,0x6ab5ed(%rip) # b791c8 : } : else : { : LWLockRelease(&WALInsertLocks[MyLockNo].l.lock); : } : } 0.00 : 4cdbdb: 48 83 c4 08 add $0x8,%rsp 0.00 : 4cdbdf: 5b pop %rbx 0.00 : 4cdbe0: c9 leaveq 0.00 : 4cdbe1: c3 retq 0.00 : 4cdbe2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : holdingAllLocks = false; : } : else : { : LWLockRelease(&WALInsertLocks[MyLockNo].l.lock); 0.00 : 4cdbe8: 48 63 3d dd b5 6a 00 movslq 0x6ab5dd(%rip),%rdi # b791cc 0.00 : 4cdbef: 48 c1 e7 07 shl $0x7,%rdi 0.00 : 4cdbf3: 48 03 3d c6 b5 6a 00 add 0x6ab5c6(%rip),%rdi # b791c0 : } : } 0.00 : 4cdbfa: 48 83 c4 08 add $0x8,%rsp 0.00 : 4cdbfe: 5b pop %rbx 0.00 : 4cdbff: c9 leaveq : : holdingAllLocks = false; : } : else : { : LWLockRelease(&WALInsertLocks[MyLockNo].l.lock); 0.00 : 4cdc00: e9 9b 17 1c 00 jmpq 68f3a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3042 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d3db0 : : * Returns true if a flush is still needed. (It may be that someone else : * is already in process of flushing that far, however.) : */ : bool : XLogNeedsFlush(XLogRecPtr record) : { 0.00 : 4d3db0: 55 push %rbp 0.00 : 4d3db1: 48 89 e5 mov %rsp,%rbp 0.00 : 4d3db4: 53 push %rbx 0.00 : 4d3db5: 48 89 fb mov %rdi,%rbx 0.00 : 4d3db8: 48 83 ec 08 sub $0x8,%rsp : /* : * During recovery, we don't flush WAL but update minRecoveryPoint : * instead. So "needs flush" is taken to mean whether minRecoveryPoint : * would need to be updated. : */ : if (RecoveryInProgress()) 0.00 : 4d3dbc: e8 ff 96 ff ff callq 4cd4c0 0.00 : 4d3dc1: 84 c0 test %al,%al 0.00 : 4d3dc3: 74 2b je 4d3df0 : { : /* Quick exit if already known updated */ : if (record <= minRecoveryPoint || !updateMinRecoveryPoint) 0.00 : 4d3dc5: 48 39 1d 24 56 6a 00 cmp %rbx,0x6a5624(%rip) # b793f0 0.00 : 4d3dcc: 73 0d jae 4d3ddb 0.00 : 4d3dce: 80 3d 83 40 69 00 00 cmpb $0x0,0x694083(%rip) # b67e58 0.00 : 4d3dd5: 0f 85 85 00 00 00 jne 4d3e60 : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : LogwrtResult = XLogCtl->LogwrtResult; : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d3ddb: 31 d2 xor %edx,%edx : /* check again */ : if (record <= LogwrtResult.Flush) : return false; : : return true; : } 0.00 : 4d3ddd: 48 83 c4 08 add $0x8,%rsp 0.00 : 4d3de1: 89 d0 mov %edx,%eax 0.00 : 4d3de3: 5b pop %rbx 0.00 : 4d3de4: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3042 100.00 : 4d3de5: c3 retq 0.00 : 4d3de6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d3ded: 00 00 00 : else : return true; : } : : /* Quick exit if already known flushed */ : if (record <= LogwrtResult.Flush) 0.00 : 4d3df0: 48 3b 1d c1 53 6a 00 cmp 0x6a53c1(%rip),%rbx # b791b8 0.00 : 4d3df7: 76 e2 jbe 4d3ddb : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d3df9: 48 8b 15 98 53 6a 00 mov 0x6a5398(%rip),%rdx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d3e00: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d3e05: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d3e0c: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d3e0f: 84 c0 test %al,%al 0.00 : 4d3e11: 0f 85 d1 00 00 00 jne 4d3ee8 : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d3e17: 48 8b 15 7a 53 6a 00 mov 0x6a537a(%rip),%rdx # b79198 0.00 : 4d3e1e: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d3e25: 48 89 05 84 53 6a 00 mov %rax,0x6a5384(%rip) # b791b0 0.00 : 4d3e2c: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d3e33: 48 89 05 7e 53 6a 00 mov %rax,0x6a537e(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d3e3a: 48 8b 05 57 53 6a 00 mov 0x6a5357(%rip),%rax # b79198 0.00 : 4d3e41: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) 0.00 : 4d3e48: 48 3b 1d 69 53 6a 00 cmp 0x6a5369(%rip),%rbx # b791b8 0.00 : 4d3e4f: 0f 97 c2 seta %dl : /* check again */ : if (record <= LogwrtResult.Flush) : return false; : : return true; : } 0.00 : 4d3e52: 48 83 c4 08 add $0x8,%rsp 0.00 : 4d3e56: 89 d0 mov %edx,%eax 0.00 : 4d3e58: 5b pop %rbx 0.00 : 4d3e59: c9 leaveq 0.00 : 4d3e5a: c3 retq 0.00 : 4d3e5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * Update local copy of minRecoveryPoint. But if the lock is busy, : * just return a conservative guess. : */ : if (!LWLockConditionalAcquire(ControlFileLock, LW_SHARED)) 0.00 : 4d3e60: 48 8b 3d 99 9b 6a 00 mov 0x6a9b99(%rip),%rdi # b7da00 0.00 : 4d3e67: be 01 00 00 00 mov $0x1,%esi 0.00 : 4d3e6c: 48 81 c7 20 01 00 00 add $0x120,%rdi 0.00 : 4d3e73: e8 28 b1 1b 00 callq 68efa0 0.00 : 4d3e78: 84 c0 test %al,%al 0.00 : 4d3e7a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4d3e7f: 0f 84 58 ff ff ff je 4d3ddd : return true; : minRecoveryPoint = ControlFile->minRecoveryPoint; 0.00 : 4d3e85: 48 8b 15 14 53 6a 00 mov 0x6a5314(%rip),%rdx # b791a0 : minRecoveryPointTLI = ControlFile->minRecoveryPointTLI; : LWLockRelease(ControlFileLock); 0.00 : 4d3e8c: 48 8b 3d 6d 9b 6a 00 mov 0x6a9b6d(%rip),%rdi # b7da00 : * Update local copy of minRecoveryPoint. But if the lock is busy, : * just return a conservative guess. : */ : if (!LWLockConditionalAcquire(ControlFileLock, LW_SHARED)) : return true; : minRecoveryPoint = ControlFile->minRecoveryPoint; 0.00 : 4d3e93: 48 8b 82 80 00 00 00 mov 0x80(%rdx),%rax : minRecoveryPointTLI = ControlFile->minRecoveryPointTLI; : LWLockRelease(ControlFileLock); 0.00 : 4d3e9a: 48 81 c7 20 01 00 00 add $0x120,%rdi : * Update local copy of minRecoveryPoint. But if the lock is busy, : * just return a conservative guess. : */ : if (!LWLockConditionalAcquire(ControlFileLock, LW_SHARED)) : return true; : minRecoveryPoint = ControlFile->minRecoveryPoint; 0.00 : 4d3ea1: 48 89 05 48 55 6a 00 mov %rax,0x6a5548(%rip) # b793f0 : minRecoveryPointTLI = ControlFile->minRecoveryPointTLI; 0.00 : 4d3ea8: 8b 82 88 00 00 00 mov 0x88(%rdx),%eax 0.00 : 4d3eae: 89 05 44 55 6a 00 mov %eax,0x6a5544(%rip) # b793f8 : LWLockRelease(ControlFileLock); 0.00 : 4d3eb4: e8 e7 b4 1b 00 callq 68f3a0 : * An invalid minRecoveryPoint means that we need to recover all the : * WAL, i.e., we're doing crash recovery. We never modify the control : * file's value in that case, so we can short-circuit future checks : * here too. : */ : if (minRecoveryPoint == 0) 0.00 : 4d3eb9: 48 8b 05 30 55 6a 00 mov 0x6a5530(%rip),%rax # b793f0 0.00 : 4d3ec0: 48 85 c0 test %rax,%rax 0.00 : 4d3ec3: 75 07 jne 4d3ecc : updateMinRecoveryPoint = false; 0.00 : 4d3ec5: c6 05 8c 3f 69 00 00 movb $0x0,0x693f8c(%rip) # b67e58 : : /* check again */ : if (record <= minRecoveryPoint || !updateMinRecoveryPoint) 0.00 : 4d3ecc: 48 39 c3 cmp %rax,%rbx 0.00 : 4d3ecf: 0f 86 06 ff ff ff jbe 4d3ddb 0.00 : 4d3ed5: 80 3d 7c 3f 69 00 00 cmpb $0x0,0x693f7c(%rip) # b67e58 0.00 : 4d3edc: 0f 95 c2 setne %dl 0.00 : 4d3edf: e9 f9 fe ff ff jmpq 4d3ddd 0.00 : 4d3ee4: 0f 1f 40 00 nopl 0x0(%rax) : /* Quick exit if already known flushed */ : if (record <= LogwrtResult.Flush) : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d3ee8: 48 8b 3d a9 52 6a 00 mov 0x6a52a9(%rip),%rdi # b79198 0.00 : 4d3eef: ba d9 0b 00 00 mov $0xbd9,%edx 0.00 : 4d3ef4: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d3ef9: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d3f00: e8 3b c1 1b 00 callq 690040 0.00 : 4d3f05: e9 0d ff ff ff jmpq 4d3e17 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:219 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2b90 : : */ : bool : IsSharedRelation(Oid relationId) : { : /* These are the shared catalogs (look for BKI_SHARED_RELATION) */ : if (relationId == AuthIdRelationId || 0.00 : 4e2b90: 8d 87 14 fb ff ff lea -0x4ec(%rdi),%eax : * of shared relations is fairly static, so a hand-maintained list of their : * OIDs isn't completely impractical. : */ : bool : IsSharedRelation(Oid relationId) : { 0.00 : 4e2b96: 55 push %rbp : /* These are the shared catalogs (look for BKI_SHARED_RELATION) */ : if (relationId == AuthIdRelationId || 0.00 : 4e2b97: 83 f8 02 cmp $0x2,%eax : * of shared relations is fairly static, so a hand-maintained list of their : * OIDs isn't completely impractical. : */ : bool : IsSharedRelation(Oid relationId) : { 0.00 : 4e2b9a: 48 89 e5 mov %rsp,%rbp : /* These are the shared catalogs (look for BKI_SHARED_RELATION) */ : if (relationId == AuthIdRelationId || 0.00 : 4e2b9d: 0f 86 dd 00 00 00 jbe 4e2c80 0.00 : 4e2ba3: 81 ff 70 04 00 00 cmp $0x470,%edi 0.00 : 4e2ba9: 0f 84 d1 00 00 00 je 4e2c80 0.00 : 4e2baf: 81 ff 5c 09 00 00 cmp $0x95c,%edi 0.00 : 4e2bb5: 0f 84 c5 00 00 00 je 4e2c80 0.00 : 4e2bbb: 81 ff be 04 00 00 cmp $0x4be,%edi 0.00 : 4e2bc1: 0f 84 b9 00 00 00 je 4e2c80 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:219 100.00 : 4e2bc7: 81 ff 08 0e 00 00 cmp $0xe08,%edi 0.00 : 4e2bcd: 0f 1f 00 nopl (%rax) 0.00 : 4e2bd0: 0f 84 aa 00 00 00 je 4e2c80 0.00 : 4e2bd6: 81 ff bd 04 00 00 cmp $0x4bd,%edi 0.00 : 4e2bdc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4e2be0: 0f 84 9a 00 00 00 je 4e2c80 0.00 : 4e2be6: 81 ff 94 0b 00 00 cmp $0xb94,%edi 0.00 : 4e2bec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4e2bf0: 0f 84 8a 00 00 00 je 4e2c80 : relationId == SharedSecLabelRelationId || : relationId == TableSpaceRelationId || : relationId == DbRoleSettingRelationId) : return true; : /* These are their indexes (see indexing.h) */ : if (relationId == AuthIdRolnameIndexId || 0.00 : 4e2bf6: 8d 87 8c f5 ff ff lea -0xa74(%rdi),%eax 0.00 : 4e2bfc: 83 f8 01 cmp $0x1,%eax 0.00 : 4e2bff: 90 nop 0.00 : 4e2c00: 76 7e jbe 4e2c80 0.00 : 4e2c02: 81 ff 86 0a 00 00 cmp $0xa86,%edi 0.00 : 4e2c08: 74 76 je 4e2c80 0.00 : 4e2c0a: 81 ff 87 0a 00 00 cmp $0xa87,%edi 0.00 : 4e2c10: 74 6e je 4e2c80 0.00 : 4e2c12: 81 ff 6f 0a 00 00 cmp $0xa6f,%edi 0.00 : 4e2c18: 74 66 je 4e2c80 0.00 : 4e2c1a: 81 ff 70 0a 00 00 cmp $0xa70,%edi 0.00 : 4e2c20: 74 5e je 4e2c80 0.00 : 4e2c22: 81 ff 71 04 00 00 cmp $0x471,%edi 0.00 : 4e2c28: 74 56 je 4e2c80 0.00 : 4e2c2a: 81 ff 5d 09 00 00 cmp $0x95d,%edi 0.00 : 4e2c30: 74 4e je 4e2c80 0.00 : 4e2c32: 81 ff d0 04 00 00 cmp $0x4d0,%edi 0.00 : 4e2c38: 74 46 je 4e2c80 0.00 : 4e2c3a: 81 ff d1 04 00 00 cmp $0x4d1,%edi 0.00 : 4e2c40: 74 3e je 4e2c80 0.00 : 4e2c42: 81 ff 09 0e 00 00 cmp $0xe09,%edi 0.00 : 4e2c48: 74 36 je 4e2c80 0.00 : 4e2c4a: 81 ff 89 0a 00 00 cmp $0xa89,%edi 0.00 : 4e2c50: 74 2e je 4e2c80 0.00 : 4e2c52: 81 ff 8a 0a 00 00 cmp $0xa8a,%edi 0.00 : 4e2c58: 74 26 je 4e2c80 0.00 : 4e2c5a: 81 ff 95 0b 00 00 cmp $0xb95,%edi 0.00 : 4e2c60: 74 1e je 4e2c80 : relationId == TablespaceOidIndexId || : relationId == TablespaceNameIndexId || : relationId == DbRoleSettingDatidRolidIndexId) : return true; : /* These are their toast tables and toast indexes (see toasting.h) */ : if (relationId == PgShdescriptionToastTable || 0.00 : 4e2c62: 8d 87 e2 f4 ff ff lea -0xb1e(%rdi),%eax 0.00 : 4e2c68: 83 f8 01 cmp $0x1,%eax 0.00 : 4e2c6b: 76 13 jbe 4e2c80 0.00 : 4e2c6d: 81 ff 96 0b 00 00 cmp $0xb96,%edi 0.00 : 4e2c73: 74 0b je 4e2c80 0.00 : 4e2c75: 81 ff 97 0b 00 00 cmp $0xb97,%edi : relationId == PgShdescriptionToastIndex || : relationId == PgDbRoleSettingToastTable || : relationId == PgDbRoleSettingToastIndex) : return true; : return false; : } 0.00 : 4e2c7b: c9 leaveq : relationId == TablespaceOidIndexId || : relationId == TablespaceNameIndexId || : relationId == DbRoleSettingDatidRolidIndexId) : return true; : /* These are their toast tables and toast indexes (see toasting.h) */ : if (relationId == PgShdescriptionToastTable || 0.00 : 4e2c7c: 0f 94 c0 sete %al : relationId == PgShdescriptionToastIndex || : relationId == PgDbRoleSettingToastTable || : relationId == PgDbRoleSettingToastIndex) : return true; : return false; : } 0.00 : 4e2c7f: c3 retq : relationId == TablespaceOidIndexId || : relationId == TablespaceNameIndexId || : relationId == DbRoleSettingDatidRolidIndexId) : return true; : /* These are their toast tables and toast indexes (see toasting.h) */ : if (relationId == PgShdescriptionToastTable || 0.00 : 4e2c80: b8 01 00 00 00 mov $0x1,%eax : relationId == PgShdescriptionToastIndex || : relationId == PgDbRoleSettingToastTable || : relationId == PgDbRoleSettingToastIndex) : return true; : return false; : } 0.00 : 4e2c85: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:376 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2f00 : : * Note: we don't support using this in bootstrap mode. All relations : * created by bootstrap have preassigned OIDs, so there's no need. : */ : Oid : GetNewRelFileNode(Oid reltablespace, Relation pg_class, char relpersistence) : { 0.00 : 4e2f00: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:376 100.00 : 4e2f01: 48 89 e5 mov %rsp,%rbp 0.00 : 4e2f04: 41 57 push %r15 0.00 : 4e2f06: 49 89 f7 mov %rsi,%r15 0.00 : 4e2f09: 41 56 push %r14 0.00 : 4e2f0b: 41 89 fe mov %edi,%r14d 0.00 : 4e2f0e: 41 55 push %r13 0.00 : 4e2f10: 41 54 push %r12 0.00 : 4e2f12: 53 push %rbx 0.00 : 4e2f13: 89 d3 mov %edx,%ebx 0.00 : 4e2f15: 48 83 ec 18 sub $0x18,%rsp : char *rpath; : int fd; : bool collides; : BackendId backend; : : switch (relpersistence) 0.00 : 4e2f19: 80 fa 74 cmp $0x74,%dl 0.00 : 4e2f1c: 0f 84 fe 00 00 00 je 4e3020 0.00 : 4e2f22: 80 fa 75 cmp $0x75,%dl 0.00 : 4e2f25: 74 39 je 4e2f60 0.00 : 4e2f27: 80 fa 70 cmp $0x70,%dl 0.00 : 4e2f2a: 74 34 je 4e2f60 : case RELPERSISTENCE_UNLOGGED: : case RELPERSISTENCE_PERMANENT: : backend = InvalidBackendId; : break; : default: : elog(ERROR, "invalid relpersistence: %c", relpersistence); 0.00 : 4e2f2c: ba e0 0c 7c 00 mov $0x7c0ce0,%edx 0.00 : 4e2f31: be 89 01 00 00 mov $0x189,%esi 0.00 : 4e2f36: bf 82 0c 7c 00 mov $0x7c0c82,%edi 0.00 : 4e2f3b: e8 e0 84 29 00 callq 77b420 0.00 : 4e2f40: 0f be d3 movsbl %bl,%edx 0.00 : 4e2f43: be 8c 0c 7c 00 mov $0x7c0c8c,%esi 0.00 : 4e2f48: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4e2f4d: 31 c0 xor %eax,%eax 0.00 : 4e2f4f: e8 dc 82 29 00 callq 77b230 0.00 : 4e2f54: e8 77 65 f8 ff callq 4694d0 0.00 : 4e2f59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4e2f60: c7 45 cc ff ff ff ff movl $0xffffffff,-0x34(%rbp) : return InvalidOid; /* placate compiler */ : } : : /* This logic should match RelationInitPhysicalAddr */ : rnode.node.spcNode = reltablespace ? reltablespace : MyDatabaseTableSpace; 0.00 : 4e2f67: 45 85 f6 test %r14d,%r14d : */ : rnode.backend = backend; : : do : { : CHECK_FOR_INTERRUPTS(); 0.00 : 4e2f6a: 0f b6 05 1f 71 6d 00 movzbl 0x6d711f(%rip),%eax # bba090 : elog(ERROR, "invalid relpersistence: %c", relpersistence); : return InvalidOid; /* placate compiler */ : } : : /* This logic should match RelationInitPhysicalAddr */ : rnode.node.spcNode = reltablespace ? reltablespace : MyDatabaseTableSpace; 0.00 : 4e2f71: 44 0f 44 35 33 71 6d cmove 0x6d7133(%rip),%r14d # bba0ac 0.00 : 4e2f78: 00 : rnode.node.dbNode = (rnode.node.spcNode == GLOBALTABLESPACE_OID) ? InvalidOid : MyDatabaseId; 0.00 : 4e2f79: 45 31 ed xor %r13d,%r13d 0.00 : 4e2f7c: 41 81 fe 80 06 00 00 cmp $0x680,%r14d 0.00 : 4e2f83: 44 0f 45 2d 1d 71 6d cmovne 0x6d711d(%rip),%r13d # bba0a8 0.00 : 4e2f8a: 00 : */ : rnode.backend = backend; : : do : { : CHECK_FOR_INTERRUPTS(); 0.00 : 4e2f8b: 84 c0 test %al,%al 0.00 : 4e2f8d: 75 51 jne 4e2fe0 : : /* Generate the OID */ : if (pg_class) 0.00 : 4e2f8f: 4d 85 ff test %r15,%r15 0.00 : 4e2f92: 74 56 je 4e2fea : rnode.node.relNode = GetNewOid(pg_class); 0.00 : 4e2f94: 4c 89 ff mov %r15,%rdi 0.00 : 4e2f97: e8 d4 fe ff ff callq 4e2e70 0.00 : 4e2f9c: 41 89 c4 mov %eax,%r12d : else : rnode.node.relNode = GetNewObjectId(); : : /* Check for existing file of same name */ : rpath = relpath(rnode, MAIN_FORKNUM); 0.00 : 4e2f9f: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : 4e2fa2: 45 31 c0 xor %r8d,%r8d 0.00 : 4e2fa5: 44 89 e2 mov %r12d,%edx 0.00 : 4e2fa8: 44 89 f6 mov %r14d,%esi 0.00 : 4e2fab: 44 89 ef mov %r13d,%edi 0.00 : 4e2fae: e8 1d b6 2c 00 callq 7ae5d0 : fd = BasicOpenFile(rpath, O_RDONLY | PG_BINARY, 0); 0.00 : 4e2fb3: 31 d2 xor %edx,%edx 0.00 : 4e2fb5: 31 f6 xor %esi,%esi 0.00 : 4e2fb7: 48 89 c7 mov %rax,%rdi : rnode.node.relNode = GetNewOid(pg_class); : else : rnode.node.relNode = GetNewObjectId(); : : /* Check for existing file of same name */ : rpath = relpath(rnode, MAIN_FORKNUM); 0.00 : 4e2fba: 48 89 c3 mov %rax,%rbx : fd = BasicOpenFile(rpath, O_RDONLY | PG_BINARY, 0); 0.00 : 4e2fbd: e8 9e 67 19 00 callq 679760 : : if (fd >= 0) 0.00 : 4e2fc2: 85 c0 test %eax,%eax 0.00 : 4e2fc4: 78 3a js 4e3000 : { : /* definite collision */ : close(fd); 0.00 : 4e2fc6: 89 c7 mov %eax,%edi 0.00 : 4e2fc8: e8 b3 64 f8 ff callq 469480 : * failure when we attempt to create the new relation file. : */ : collides = false; : } : : pfree(rpath); 0.00 : 4e2fcd: 48 89 df mov %rbx,%rdi 0.00 : 4e2fd0: e8 ab 5b 2b 00 callq 798b80 : */ : rnode.backend = backend; : : do : { : CHECK_FOR_INTERRUPTS(); 0.00 : 4e2fd5: 0f b6 05 b4 70 6d 00 movzbl 0x6d70b4(%rip),%eax # bba090 0.00 : 4e2fdc: 84 c0 test %al,%al 0.00 : 4e2fde: 74 af je 4e2f8f 0.00 : 4e2fe0: e8 bb 92 1b 00 callq 69c2a0 : : /* Generate the OID */ : if (pg_class) 0.00 : 4e2fe5: 4d 85 ff test %r15,%r15 0.00 : 4e2fe8: 75 aa jne 4e2f94 0.00 : 4e2fea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : rnode.node.relNode = GetNewOid(pg_class); : else : rnode.node.relNode = GetNewObjectId(); 0.00 : 4e2ff0: e8 7b d3 fd ff callq 4c0370 0.00 : 4e2ff5: 41 89 c4 mov %eax,%r12d 0.00 : 4e2ff8: eb a5 jmp 4e2f9f 0.00 : 4e2ffa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * failure when we attempt to create the new relation file. : */ : collides = false; : } : : pfree(rpath); 0.00 : 4e3000: 48 89 df mov %rbx,%rdi 0.00 : 4e3003: e8 78 5b 2b 00 callq 798b80 : } while (collides); : : return rnode.node.relNode; : } 0.00 : 4e3008: 48 83 c4 18 add $0x18,%rsp 0.00 : 4e300c: 44 89 e0 mov %r12d,%eax 0.00 : 4e300f: 5b pop %rbx 0.00 : 4e3010: 41 5c pop %r12 0.00 : 4e3012: 41 5d pop %r13 0.00 : 4e3014: 41 5e pop %r14 0.00 : 4e3016: 41 5f pop %r15 0.00 : 4e3018: c9 leaveq 0.00 : 4e3019: c3 retq 0.00 : 4e301a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : BackendId backend; : : switch (relpersistence) : { : case RELPERSISTENCE_TEMP: : backend = MyBackendId; 0.00 : 4e3020: 8b 05 e2 5a 68 00 mov 0x685ae2(%rip),%eax # b68b08 0.00 : 4e3026: 89 45 cc mov %eax,-0x34(%rbp) : break; 0.00 : 4e3029: e9 39 ff ff ff jmpq 4e2f67 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1610 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ea330 : : * just once per command, and then use it for (potentially) many tuples. : * ---------------- : */ : IndexInfo * : BuildIndexInfo(Relation index) : { 0.00 : 4ea330: 55 push %rbp : IndexInfo *ii = makeNode(IndexInfo); /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1610 100.00 : 4ea331: be 88 00 00 00 mov $0x88,%esi : * just once per command, and then use it for (potentially) many tuples. : * ---------------- : */ : IndexInfo * : BuildIndexInfo(Relation index) : { 0.00 : 4ea336: 48 89 e5 mov %rsp,%rbp 0.00 : 4ea339: 41 56 push %r14 0.00 : 4ea33b: 49 89 fe mov %rdi,%r14 : IndexInfo *ii = makeNode(IndexInfo); 0.00 : 4ea33e: 48 8b 3d 1b 05 6d 00 mov 0x6d051b(%rip),%rdi # bba860 : * just once per command, and then use it for (potentially) many tuples. : * ---------------- : */ : IndexInfo * : BuildIndexInfo(Relation index) : { 0.00 : 4ea345: 41 55 push %r13 0.00 : 4ea347: 41 54 push %r12 0.00 : 4ea349: 53 push %rbx : IndexInfo *ii = makeNode(IndexInfo); 0.00 : 4ea34a: e8 c1 ea 2a 00 callq 798e10 0.00 : 4ea34f: c7 00 0a 00 00 00 movl $0xa,(%rax) : Form_pg_index indexStruct = index->rd_index; 0.00 : 4ea355: 4d 8b a6 a0 00 00 00 mov 0xa0(%r14),%r12 : * ---------------- : */ : IndexInfo * : BuildIndexInfo(Relation index) : { : IndexInfo *ii = makeNode(IndexInfo); 0.00 : 4ea35c: 48 89 c3 mov %rax,%rbx : Form_pg_index indexStruct = index->rd_index; : int i; : int numKeys; : : /* check the number of keys, and copy attr numbers into the IndexInfo */ : numKeys = indexStruct->indnatts; 0.00 : 4ea35f: 45 0f bf 6c 24 08 movswl 0x8(%r12),%r13d : if (numKeys < 1 || numKeys > INDEX_MAX_KEYS) 0.00 : 4ea365: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 4ea369: 83 f8 1f cmp $0x1f,%eax 0.00 : 4ea36c: 0f 87 ba 00 00 00 ja 4ea42c : elog(ERROR, "invalid indnatts %d for index %u", : numKeys, RelationGetRelid(index)); : ii->ii_NumIndexAttrs = numKeys; : for (i = 0; i < numKeys; i++) 0.00 : 4ea372: 45 85 ed test %r13d,%r13d : /* check the number of keys, and copy attr numbers into the IndexInfo */ : numKeys = indexStruct->indnatts; : if (numKeys < 1 || numKeys > INDEX_MAX_KEYS) : elog(ERROR, "invalid indnatts %d for index %u", : numKeys, RelationGetRelid(index)); : ii->ii_NumIndexAttrs = numKeys; 0.00 : 4ea375: 44 89 6b 04 mov %r13d,0x4(%rbx) : for (i = 0; i < numKeys; i++) 0.00 : 4ea379: 7e 21 jle 4ea39c 0.00 : 4ea37b: 89 c0 mov %eax,%eax 0.00 : 4ea37d: 31 d2 xor %edx,%edx 0.00 : 4ea37f: 48 8d 4c 00 02 lea 0x2(%rax,%rax,1),%rcx 0.00 : 4ea384: 0f 1f 40 00 nopl 0x0(%rax) : ii->ii_KeyAttrNumbers[i] = indexStruct->indkey.values[i]; 0.00 : 4ea388: 41 0f b7 44 14 2c movzwl 0x2c(%r12,%rdx,1),%eax 0.00 : 4ea38e: 66 89 44 13 08 mov %ax,0x8(%rbx,%rdx,1) 0.00 : 4ea393: 48 83 c2 02 add $0x2,%rdx : numKeys = indexStruct->indnatts; : if (numKeys < 1 || numKeys > INDEX_MAX_KEYS) : elog(ERROR, "invalid indnatts %d for index %u", : numKeys, RelationGetRelid(index)); : ii->ii_NumIndexAttrs = numKeys; : for (i = 0; i < numKeys; i++) 0.00 : 4ea397: 48 39 ca cmp %rcx,%rdx 0.00 : 4ea39a: 75 ec jne 4ea388 : ii->ii_KeyAttrNumbers[i] = indexStruct->indkey.values[i]; : : /* fetch any expressions needed for expressional indexes */ : ii->ii_Expressions = RelationGetIndexExpressions(index); 0.00 : 4ea39c: 4c 89 f7 mov %r14,%rdi 0.00 : 4ea39f: e8 bc 00 28 00 callq 76a460 : ii->ii_ExpressionsState = NIL; 0.00 : 4ea3a4: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 4ea3ab: 00 : ii->ii_NumIndexAttrs = numKeys; : for (i = 0; i < numKeys; i++) : ii->ii_KeyAttrNumbers[i] = indexStruct->indkey.values[i]; : : /* fetch any expressions needed for expressional indexes */ : ii->ii_Expressions = RelationGetIndexExpressions(index); 0.00 : 4ea3ac: 48 89 43 48 mov %rax,0x48(%rbx) : ii->ii_ExpressionsState = NIL; : : /* fetch index predicate if any */ : ii->ii_Predicate = RelationGetIndexPredicate(index); 0.00 : 4ea3b0: 4c 89 f7 mov %r14,%rdi 0.00 : 4ea3b3: e8 18 fe 27 00 callq 76a1d0 : ii->ii_PredicateState = NIL; 0.00 : 4ea3b8: 48 c7 43 60 00 00 00 movq $0x0,0x60(%rbx) 0.00 : 4ea3bf: 00 : /* fetch any expressions needed for expressional indexes */ : ii->ii_Expressions = RelationGetIndexExpressions(index); : ii->ii_ExpressionsState = NIL; : : /* fetch index predicate if any */ : ii->ii_Predicate = RelationGetIndexPredicate(index); 0.00 : 4ea3c0: 48 89 43 58 mov %rax,0x58(%rbx) : ii->ii_PredicateState = NIL; : : /* fetch exclusion constraint info if any */ : if (indexStruct->indisexclusion) 0.00 : 4ea3c4: 41 80 7c 24 0c 00 cmpb $0x0,0xc(%r12) 0.00 : 4ea3ca: 75 4a jne 4ea416 : &ii->ii_ExclusionProcs, : &ii->ii_ExclusionStrats); : } : else : { : ii->ii_ExclusionOps = NULL; 0.00 : 4ea3cc: 48 c7 43 68 00 00 00 movq $0x0,0x68(%rbx) 0.00 : 4ea3d3: 00 : ii->ii_ExclusionProcs = NULL; 0.00 : 4ea3d4: 48 c7 43 70 00 00 00 movq $0x0,0x70(%rbx) 0.00 : 4ea3db: 00 : ii->ii_ExclusionStrats = NULL; 0.00 : 4ea3dc: 48 c7 43 78 00 00 00 movq $0x0,0x78(%rbx) 0.00 : 4ea3e3: 00 : } : : /* other info */ : ii->ii_Unique = indexStruct->indisunique; 0.00 : 4ea3e4: 41 0f b6 44 24 0a movzbl 0xa(%r12),%eax 0.00 : 4ea3ea: 88 83 80 00 00 00 mov %al,0x80(%rbx) : ii->ii_ReadyForInserts = IndexIsReady(indexStruct); 0.00 : 4ea3f0: 41 0f b6 44 24 11 movzbl 0x11(%r12),%eax : : /* initialize index-build state to default */ : ii->ii_Concurrent = false; 0.00 : 4ea3f6: c6 83 82 00 00 00 00 movb $0x0,0x82(%rbx) : ii->ii_BrokenHotChain = false; 0.00 : 4ea3fd: c6 83 83 00 00 00 00 movb $0x0,0x83(%rbx) : ii->ii_ExclusionStrats = NULL; : } : : /* other info */ : ii->ii_Unique = indexStruct->indisunique; : ii->ii_ReadyForInserts = IndexIsReady(indexStruct); 0.00 : 4ea404: 88 83 81 00 00 00 mov %al,0x81(%rbx) : /* initialize index-build state to default */ : ii->ii_Concurrent = false; : ii->ii_BrokenHotChain = false; : : return ii; : } 0.00 : 4ea40a: 48 89 d8 mov %rbx,%rax 0.00 : 4ea40d: 5b pop %rbx 0.00 : 4ea40e: 41 5c pop %r12 0.00 : 4ea410: 41 5d pop %r13 0.00 : 4ea412: 41 5e pop %r14 0.00 : 4ea414: c9 leaveq 0.00 : 4ea415: c3 retq : ii->ii_PredicateState = NIL; : : /* fetch exclusion constraint info if any */ : if (indexStruct->indisexclusion) : { : RelationGetExclusionInfo(index, 0.00 : 4ea416: 48 8d 4b 78 lea 0x78(%rbx),%rcx 0.00 : 4ea41a: 48 8d 53 70 lea 0x70(%rbx),%rdx 0.00 : 4ea41e: 48 8d 73 68 lea 0x68(%rbx),%rsi 0.00 : 4ea422: 4c 89 f7 mov %r14,%rdi 0.00 : 4ea425: e8 a6 f7 27 00 callq 769bd0 0.00 : 4ea42a: eb b8 jmp 4ea3e4 : int numKeys; : : /* check the number of keys, and copy attr numbers into the IndexInfo */ : numKeys = indexStruct->indnatts; : if (numKeys < 1 || numKeys > INDEX_MAX_KEYS) : elog(ERROR, "invalid indnatts %d for index %u", 0.00 : 4ea42c: ba b2 24 7c 00 mov $0x7c24b2,%edx 0.00 : 4ea431: be 53 06 00 00 mov $0x653,%esi 0.00 : 4ea436: bf ca 1d 7c 00 mov $0x7c1dca,%edi 0.00 : 4ea43b: e8 e0 0f 29 00 callq 77b420 0.00 : 4ea440: 41 8b 4e 40 mov 0x40(%r14),%ecx 0.00 : 4ea444: 44 89 ea mov %r13d,%edx 0.00 : 4ea447: be 98 1f 7c 00 mov $0x7c1f98,%esi 0.00 : 4ea44c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ea451: 31 c0 xor %eax,%eax 0.00 : 4ea453: e8 d8 0d 29 00 callq 77b230 0.00 : 4ea458: e8 73 f0 f7 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:1612 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004efa30 : : * The returned items always have two args[] entries --- one or the other : * will be InvalidOid for a prefix or postfix oprkind. nargs is 2, too. : */ : FuncCandidateList : OpernameGetCandidates(List *names, char oprkind, bool missing_schema_ok) : { 0.00 : 4efa30: 55 push %rbp 0.00 : 4efa31: 48 89 e5 mov %rsp,%rbp 0.00 : 4efa34: 41 57 push %r15 0.00 : 4efa36: 41 56 push %r14 0.00 : 4efa38: 41 89 f6 mov %esi,%r14d : Oid namespaceId; : CatCList *catlist; : int i; : : /* deconstruct the name list */ : DeconstructQualifiedName(names, &schemaname, &opername); 0.00 : 4efa3b: 48 8d 75 d0 lea -0x30(%rbp),%rsi : * The returned items always have two args[] entries --- one or the other : * will be InvalidOid for a prefix or postfix oprkind. nargs is 2, too. : */ : FuncCandidateList : OpernameGetCandidates(List *names, char oprkind, bool missing_schema_ok) : { 0.00 : 4efa3f: 41 55 push %r13 0.00 : 4efa41: 41 54 push %r12 0.00 : 4efa43: 53 push %rbx 0.00 : 4efa44: 89 d3 mov %edx,%ebx : Oid namespaceId; : CatCList *catlist; : int i; : : /* deconstruct the name list */ : DeconstructQualifiedName(names, &schemaname, &opername); 0.00 : 4efa46: 48 8d 55 c8 lea -0x38(%rbp),%rdx : * The returned items always have two args[] entries --- one or the other : * will be InvalidOid for a prefix or postfix oprkind. nargs is 2, too. : */ : FuncCandidateList : OpernameGetCandidates(List *names, char oprkind, bool missing_schema_ok) : { 0.00 : 4efa4a: 48 83 ec 18 sub $0x18,%rsp : Oid namespaceId; : CatCList *catlist; : int i; : : /* deconstruct the name list */ : DeconstructQualifiedName(names, &schemaname, &opername); 0.00 : 4efa4e: e8 9d f1 ff ff callq 4eebf0 : : if (schemaname) 0.00 : 4efa53: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 4efa57: 48 85 ff test %rdi,%rdi 0.00 : 4efa5a: 0f 85 0d 02 00 00 jne 4efc6d : } : else : { : /* flag to indicate we need namespace search */ : namespaceId = InvalidOid; : recomputeNamespacePath(); 0.00 : 4efa60: 45 31 ed xor %r13d,%r13d 0.00 : 4efa63: e8 88 d5 ff ff callq 4ecff0 : } : : /* Search syscache by name only */ : catlist = SearchSysCacheList1(OPERNAMENSP, CStringGetDatum(opername)); 0.00 : 4efa68: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 4efa6c: 45 31 c9 xor %r9d,%r9d 0.00 : 4efa6f: 45 31 c0 xor %r8d,%r8d 0.00 : 4efa72: 31 c9 xor %ecx,%ecx 0.00 : 4efa74: be 01 00 00 00 mov $0x1,%esi 0.00 : 4efa79: bf 25 00 00 00 mov $0x25,%edi 0.00 : 4efa7e: e8 0d 1f 28 00 callq 771990 0.00 : 4efa83: 48 89 c3 mov %rax,%rbx : * separate palloc for each operator, but profiling revealed that the : * pallocs used an unreasonably large fraction of parsing time. : */ : #define SPACE_PER_OP MAXALIGN(sizeof(struct _FuncCandidateList) + sizeof(Oid)) : : if (catlist->n_members > 0) 0.00 : 4efa86: 8b 40 48 mov 0x48(%rax),%eax 0.00 : 4efa89: 85 c0 test %eax,%eax 0.00 : 4efa8b: 0f 8e d3 01 00 00 jle 4efc64 : resultSpace = palloc(catlist->n_members * SPACE_PER_OP); 0.00 : 4efa91: 48 63 f8 movslq %eax,%rdi 0.00 : 4efa94: 48 8d 04 fd 00 00 00 lea 0x0(,%rdi,8),%rax 0.00 : 4efa9b: 00 0.00 : 4efa9c: 48 c1 e7 06 shl $0x6,%rdi 0.00 : 4efaa0: 48 29 c7 sub %rax,%rdi 0.00 : 4efaa3: e8 a8 92 2a 00 callq 798d50 0.00 : 4efaa8: 48 89 45 c0 mov %rax,-0x40(%rbp) : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4efaac: 44 8b 4b 48 mov 0x48(%rbx),%r9d 0.00 : 4efab0: 45 85 c9 test %r9d,%r9d 0.00 : 4efab3: 0f 8e ab 01 00 00 jle 4efc64 : * Consider only opers that are in the search path and are not in : * the temp namespace. : */ : ListCell *nsp; : : foreach(nsp, activeSearchPath) 0.00 : 4efab9: 4c 8b 3d e0 9b 68 00 mov 0x689be0(%rip),%r15 # b796a0 : { : if (operform->oprnamespace == lfirst_oid(nsp) && 0.00 : 4efac0: 44 8b 15 d1 9b 68 00 mov 0x689bd1(%rip),%r10d # b79698 0.00 : 4efac7: 45 31 e4 xor %r12d,%r12d 0.00 : 4efaca: 45 31 db xor %r11d,%r11d 0.00 : 4efacd: 45 31 c0 xor %r8d,%r8d 0.00 : 4efad0: eb 1a jmp 4efaec 0.00 : 4efad2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Form_pg_operator operform = (Form_pg_operator) GETSTRUCT(opertup); : int pathpos = 0; : FuncCandidateList newResult; : : /* Ignore operators of wrong kind, if specific kind requested */ : if (oprkind && operform->oprkind != oprkind) 0.00 : 4efad8: 44 38 72 48 cmp %r14b,0x48(%rdx) 0.00 : 4efadc: 74 26 je 4efb04 : #define SPACE_PER_OP MAXALIGN(sizeof(struct _FuncCandidateList) + sizeof(Oid)) : : if (catlist->n_members > 0) : resultSpace = palloc(catlist->n_members * SPACE_PER_OP); : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4efade: 41 83 c0 01 add $0x1,%r8d 0.00 : 4efae2: 44 39 43 48 cmp %r8d,0x48(%rbx) 0.00 : 4efae6: 0f 8e 94 00 00 00 jle 4efb80 : { : HeapTuple opertup = &catlist->members[i]->tuple; 0.00 : 4efaec: 49 63 c0 movslq %r8d,%rax 0.00 : 4efaef: 4c 8b 4c c3 50 mov 0x50(%rbx,%rax,8),%r9 : Form_pg_operator operform = (Form_pg_operator) GETSTRUCT(opertup); 0.00 : 4efaf4: 49 8b 51 48 mov 0x48(%r9),%rdx 0.00 : 4efaf8: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 4efafc: 48 01 c2 add %rax,%rdx : int pathpos = 0; : FuncCandidateList newResult; : : /* Ignore operators of wrong kind, if specific kind requested */ : if (oprkind && operform->oprkind != oprkind) /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:1612 100.00 : 4efaff: 45 84 f6 test %r14b,%r14b 0.00 : 4efb02: 75 d4 jne 4efad8 : continue; : : if (OidIsValid(namespaceId)) 0.00 : 4efb04: 45 85 ed test %r13d,%r13d 0.00 : 4efb07: 0f 84 93 00 00 00 je 4efba0 : { : /* Consider only opers in specified namespace */ : if (operform->oprnamespace != namespaceId) 0.00 : 4efb0d: 44 39 6a 40 cmp %r13d,0x40(%rdx) 0.00 : 4efb11: 75 cb jne 4efade : if (pathpos > prevResult->pathpos) : continue; /* keep previous result */ : /* replace previous result */ : prevResult->pathpos = pathpos; : prevResult->oid = HeapTupleGetOid(opertup); : continue; /* args are same, of course */ 0.00 : 4efb13: 31 f6 xor %esi,%esi : } : : /* : * Okay to add it to result list : */ : newResult = (FuncCandidateList) (resultSpace + nextResult); 0.00 : 4efb15: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 4efb19: 49 63 c3 movslq %r11d,%rax 0.00 : 4efb1c: 48 01 c1 add %rax,%rcx : nextResult += SPACE_PER_OP; : : newResult->pathpos = pathpos; : newResult->oid = HeapTupleGetOid(opertup); 0.00 : 4efb1f: 31 c0 xor %eax,%eax : * Okay to add it to result list : */ : newResult = (FuncCandidateList) (resultSpace + nextResult); : nextResult += SPACE_PER_OP; : : newResult->pathpos = pathpos; 0.00 : 4efb21: 89 71 08 mov %esi,0x8(%rcx) : newResult->oid = HeapTupleGetOid(opertup); 0.00 : 4efb24: 49 8b 71 48 mov 0x48(%r9),%rsi 0.00 : 4efb28: f6 46 14 08 testb $0x8,0x14(%rsi) 0.00 : 4efb2c: 74 08 je 4efb36 0.00 : 4efb2e: 0f b6 46 16 movzbl 0x16(%rsi),%eax 0.00 : 4efb32: 8b 44 06 fc mov -0x4(%rsi,%rax,1),%eax 0.00 : 4efb36: 89 41 0c mov %eax,0xc(%rcx) : newResult->nargs = 2; 0.00 : 4efb39: c7 41 10 02 00 00 00 movl $0x2,0x10(%rcx) : : /* : * Okay to add it to result list : */ : newResult = (FuncCandidateList) (resultSpace + nextResult); : nextResult += SPACE_PER_OP; 0.00 : 4efb40: 41 83 c3 38 add $0x38,%r11d : : newResult->pathpos = pathpos; : newResult->oid = HeapTupleGetOid(opertup); : newResult->nargs = 2; : newResult->nvargs = 0; 0.00 : 4efb44: c7 41 14 00 00 00 00 movl $0x0,0x14(%rcx) : newResult->ndargs = 0; 0.00 : 4efb4b: c7 41 18 00 00 00 00 movl $0x0,0x18(%rcx) : #define SPACE_PER_OP MAXALIGN(sizeof(struct _FuncCandidateList) + sizeof(Oid)) : : if (catlist->n_members > 0) : resultSpace = palloc(catlist->n_members * SPACE_PER_OP); : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4efb52: 41 83 c0 01 add $0x1,%r8d : newResult->pathpos = pathpos; : newResult->oid = HeapTupleGetOid(opertup); : newResult->nargs = 2; : newResult->nvargs = 0; : newResult->ndargs = 0; : newResult->argnumbers = NULL; 0.00 : 4efb56: 48 c7 41 20 00 00 00 movq $0x0,0x20(%rcx) 0.00 : 4efb5d: 00 : newResult->args[0] = operform->oprleft; 0.00 : 4efb5e: 8b 42 4c mov 0x4c(%rdx),%eax 0.00 : 4efb61: 89 41 28 mov %eax,0x28(%rcx) : newResult->args[1] = operform->oprright; 0.00 : 4efb64: 8b 42 50 mov 0x50(%rdx),%eax : newResult->next = resultList; 0.00 : 4efb67: 4c 89 21 mov %r12,(%rcx) 0.00 : 4efb6a: 49 89 cc mov %rcx,%r12 : newResult->nargs = 2; : newResult->nvargs = 0; : newResult->ndargs = 0; : newResult->argnumbers = NULL; : newResult->args[0] = operform->oprleft; : newResult->args[1] = operform->oprright; 0.00 : 4efb6d: 89 41 2c mov %eax,0x2c(%rcx) : #define SPACE_PER_OP MAXALIGN(sizeof(struct _FuncCandidateList) + sizeof(Oid)) : : if (catlist->n_members > 0) : resultSpace = palloc(catlist->n_members * SPACE_PER_OP); : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4efb70: 44 39 43 48 cmp %r8d,0x48(%rbx) 0.00 : 4efb74: 0f 8f 72 ff ff ff jg 4efaec 0.00 : 4efb7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : newResult->args[1] = operform->oprright; : newResult->next = resultList; : resultList = newResult; : } : : ReleaseSysCacheList(catlist); 0.00 : 4efb80: 48 89 df mov %rbx,%rdi 0.00 : 4efb83: e8 b8 56 27 00 callq 765240 : : return resultList; : } 0.00 : 4efb88: 48 83 c4 18 add $0x18,%rsp 0.00 : 4efb8c: 4c 89 e0 mov %r12,%rax 0.00 : 4efb8f: 5b pop %rbx 0.00 : 4efb90: 41 5c pop %r12 0.00 : 4efb92: 41 5d pop %r13 0.00 : 4efb94: 41 5e pop %r14 0.00 : 4efb96: 41 5f pop %r15 0.00 : 4efb98: c9 leaveq 0.00 : 4efb99: c3 retq 0.00 : 4efb9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 4efba0: 4d 85 ff test %r15,%r15 0.00 : 4efba3: 0f 84 35 ff ff ff je 4efade 0.00 : 4efba9: 49 8b 47 08 mov 0x8(%r15),%rax : * Consider only opers that are in the search path and are not in : * the temp namespace. : */ : ListCell *nsp; : : foreach(nsp, activeSearchPath) 0.00 : 4efbad: 48 85 c0 test %rax,%rax 0.00 : 4efbb0: 0f 84 28 ff ff ff je 4efade 0.00 : 4efbb6: 8b 4a 40 mov 0x40(%rdx),%ecx 0.00 : 4efbb9: 31 f6 xor %esi,%esi 0.00 : 4efbbb: eb 13 jmp 4efbd0 0.00 : 4efbbd: 0f 1f 00 nopl (%rax) 0.00 : 4efbc0: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 4efbc4: 48 85 c0 test %rax,%rax 0.00 : 4efbc7: 0f 84 11 ff ff ff je 4efade : { : if (operform->oprnamespace == lfirst_oid(nsp) && : operform->oprnamespace != myTempNamespace) : break; : pathpos++; 0.00 : 4efbcd: 83 c6 01 add $0x1,%esi : */ : ListCell *nsp; : : foreach(nsp, activeSearchPath) : { : if (operform->oprnamespace == lfirst_oid(nsp) && 0.00 : 4efbd0: 3b 08 cmp (%rax),%ecx 0.00 : 4efbd2: 75 ec jne 4efbc0 0.00 : 4efbd4: 44 39 d1 cmp %r10d,%ecx 0.00 : 4efbd7: 74 e7 je 4efbc0 : * case), then any conflicting oper must immediately adjoin this : * one in the list, so we only need to look at the newest result : * item. If we have an unordered list, we have to scan the whole : * result list. : */ : if (resultList) 0.00 : 4efbd9: 4d 85 e4 test %r12,%r12 0.00 : 4efbdc: 0f 84 33 ff ff ff je 4efb15 : { : FuncCandidateList prevResult; : : if (catlist->ordered) 0.00 : 4efbe2: 80 7b 25 00 cmpb $0x0,0x25(%rbx) 0.00 : 4efbe6: 74 48 je 4efc30 : { : if (operform->oprleft == resultList->args[0] && 0.00 : 4efbe8: 8b 42 4c mov 0x4c(%rdx),%eax 0.00 : 4efbeb: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 4efbf0: 0f 85 1f ff ff ff jne 4efb15 0.00 : 4efbf6: 8b 42 50 mov 0x50(%rdx),%eax 0.00 : 4efbf9: 41 3b 44 24 2c cmp 0x2c(%r12),%eax 0.00 : 4efbfe: 0f 85 11 ff ff ff jne 4efb15 : newResult->args[1] = operform->oprright; : newResult->next = resultList; : resultList = newResult; : } : : ReleaseSysCacheList(catlist); 0.00 : 4efc04: 4c 89 e1 mov %r12,%rcx : } : if (prevResult) : { : /* We have a match with a previous result */ : Assert(pathpos != prevResult->pathpos); : if (pathpos > prevResult->pathpos) 0.00 : 4efc07: 39 71 08 cmp %esi,0x8(%rcx) 0.00 : 4efc0a: 0f 8c ce fe ff ff jl 4efade : continue; /* keep previous result */ : /* replace previous result */ : prevResult->pathpos = pathpos; 0.00 : 4efc10: 89 71 08 mov %esi,0x8(%rcx) : prevResult->oid = HeapTupleGetOid(opertup); 0.00 : 4efc13: 49 8b 51 48 mov 0x48(%r9),%rdx 0.00 : 4efc17: 31 c0 xor %eax,%eax 0.00 : 4efc19: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 4efc1d: 74 08 je 4efc27 0.00 : 4efc1f: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 4efc23: 8b 44 02 fc mov -0x4(%rdx,%rax,1),%eax 0.00 : 4efc27: 89 41 0c mov %eax,0xc(%rcx) : continue; /* args are same, of course */ 0.00 : 4efc2a: e9 af fe ff ff jmpq 4efade 0.00 : 4efc2f: 90 nop : { : FuncCandidateList prevResult; : : if (catlist->ordered) : { : if (operform->oprleft == resultList->args[0] && 0.00 : 4efc30: 8b 7a 4c mov 0x4c(%rdx),%edi 0.00 : 4efc33: 4c 89 e1 mov %r12,%rcx 0.00 : 4efc36: eb 14 jmp 4efc4c 0.00 : 4efc38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4efc3f: 00 : } : else : { : for (prevResult = resultList; : prevResult; : prevResult = prevResult->next) 0.00 : 4efc40: 48 8b 09 mov (%rcx),%rcx : prevResult = NULL; : } : else : { : for (prevResult = resultList; : prevResult; 0.00 : 4efc43: 48 85 c9 test %rcx,%rcx 0.00 : 4efc46: 0f 84 c9 fe ff ff je 4efb15 : prevResult = prevResult->next) : { : if (operform->oprleft == prevResult->args[0] && 0.00 : 4efc4c: 39 79 28 cmp %edi,0x28(%rcx) 0.00 : 4efc4f: 75 ef jne 4efc40 0.00 : 4efc51: 8b 42 50 mov 0x50(%rdx),%eax 0.00 : 4efc54: 3b 41 2c cmp 0x2c(%rcx),%eax 0.00 : 4efc57: 75 e7 jne 4efc40 : } : if (prevResult) : { : /* We have a match with a previous result */ : Assert(pathpos != prevResult->pathpos); : if (pathpos > prevResult->pathpos) 0.00 : 4efc59: 39 71 08 cmp %esi,0x8(%rcx) 0.00 : 4efc5c: 0f 8c 7c fe ff ff jl 4efade 0.00 : 4efc62: eb ac jmp 4efc10 : #define SPACE_PER_OP MAXALIGN(sizeof(struct _FuncCandidateList) + sizeof(Oid)) : : if (catlist->n_members > 0) : resultSpace = palloc(catlist->n_members * SPACE_PER_OP); : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4efc64: 45 31 e4 xor %r12d,%r12d 0.00 : 4efc67: 90 nop 0.00 : 4efc68: e9 13 ff ff ff jmpq 4efb80 : DeconstructQualifiedName(names, &schemaname, &opername); : : if (schemaname) : { : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(schemaname, missing_schema_ok); 0.00 : 4efc6d: 0f be f3 movsbl %bl,%esi 0.00 : 4efc70: e8 3b f5 ff ff callq 4ef1b0 : if (missing_schema_ok && !OidIsValid(namespaceId)) 0.00 : 4efc75: 84 db test %bl,%bl : DeconstructQualifiedName(names, &schemaname, &opername); : : if (schemaname) : { : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(schemaname, missing_schema_ok); 0.00 : 4efc77: 41 89 c5 mov %eax,%r13d : if (missing_schema_ok && !OidIsValid(namespaceId)) 0.00 : 4efc7a: 0f 84 e8 fd ff ff je 4efa68 0.00 : 4efc80: 45 31 e4 xor %r12d,%r12d 0.00 : 4efc83: 85 c0 test %eax,%eax 0.00 : 4efc85: 0f 84 fd fe ff ff je 4efb88 0.00 : 4efc8b: e9 d8 fd ff ff jmpq 4efa68 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:1095 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004eff30 : : */ : FuncCandidateList : FuncnameGetCandidates(List *names, int nargs, List *argnames, : bool expand_variadic, bool expand_defaults, : bool missing_ok) : { 0.00 : 4eff30: 55 push %rbp 0.00 : 4eff31: 48 89 e5 mov %rsp,%rbp 0.00 : 4eff34: 41 57 push %r15 0.00 : 4eff36: 41 56 push %r14 0.00 : 4eff38: 41 55 push %r13 0.00 : 4eff3a: 41 54 push %r12 0.00 : 4eff3c: 53 push %rbx 0.00 : 4eff3d: 44 89 cb mov %r9d,%ebx 0.00 : 4eff40: 48 81 ec 28 01 00 00 sub $0x128,%rsp 0.00 : 4eff47: 89 b5 c4 fe ff ff mov %esi,-0x13c(%rbp) 0.00 : 4eff4d: 48 89 95 b8 fe ff ff mov %rdx,-0x148(%rbp) : : /* check for caller error */ : Assert(nargs >= 0 || !(expand_variadic | expand_defaults)); : : /* deconstruct the name list */ : DeconstructQualifiedName(names, &schemaname, &funcname); 0.00 : 4eff54: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 4eff58: 48 8d 55 b8 lea -0x48(%rbp),%rdx : */ : FuncCandidateList : FuncnameGetCandidates(List *names, int nargs, List *argnames, : bool expand_variadic, bool expand_defaults, : bool missing_ok) : { 0.00 : 4eff5c: 88 8d b7 fe ff ff mov %cl,-0x149(%rbp) 0.00 : 4eff62: 44 88 85 b6 fe ff ff mov %r8b,-0x14a(%rbp) : : /* check for caller error */ : Assert(nargs >= 0 || !(expand_variadic | expand_defaults)); : : /* deconstruct the name list */ : DeconstructQualifiedName(names, &schemaname, &funcname); 0.00 : 4eff69: e8 82 ec ff ff callq 4eebf0 : : if (schemaname) 0.00 : 4eff6e: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4eff72: 48 85 ff test %rdi,%rdi 0.00 : 4eff75: 0f 85 c6 06 00 00 jne 4f0641 : } : else : { : /* flag to indicate we need namespace search */ : namespaceId = InvalidOid; : recomputeNamespacePath(); 0.00 : 4eff7b: e8 70 d0 ff ff callq 4ecff0 0.00 : 4eff80: c7 85 ec fe ff ff 00 movl $0x0,-0x114(%rbp) 0.00 : 4eff87: 00 00 00 : } : : /* Search syscache by name only */ : catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(funcname)); 0.00 : 4eff8a: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 4eff8e: 45 31 c0 xor %r8d,%r8d 0.00 : 4eff91: 45 31 c9 xor %r9d,%r9d 0.00 : 4eff94: 31 c9 xor %ecx,%ecx 0.00 : 4eff96: be 01 00 00 00 mov $0x1,%esi 0.00 : 4eff9b: bf 29 00 00 00 mov $0x29,%edi 0.00 : 4effa0: e8 eb 19 28 00 callq 771990 : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4effa5: 48 c7 85 e0 fe ff ff movq $0x0,-0x120(%rbp) 0.00 : 4effac: 00 00 00 00 : namespaceId = InvalidOid; : recomputeNamespacePath(); : } : : /* Search syscache by name only */ : catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(funcname)); 0.00 : 4effb0: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4effb7: 44 8b 40 48 mov 0x48(%rax),%r8d 0.00 : 4effbb: 45 85 c0 test %r8d,%r8d 0.00 : 4effbe: 0f 8e ec 02 00 00 jle 4f02b0 0.00 : 4effc4: 48 c7 85 e0 fe ff ff movq $0x0,-0x120(%rbp) 0.00 : 4effcb: 00 00 00 00 0.00 : 4effcf: c6 85 eb fe ff ff 00 movb $0x0,-0x115(%rbp) 0.00 : 4effd6: c7 85 fc fe ff ff 00 movl $0x0,-0x104(%rbp) 0.00 : 4effdd: 00 00 00 0.00 : 4effe0: eb 32 jmp 4f0014 0.00 : 4effe2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : FuncCandidateList newResult; : : if (OidIsValid(namespaceId)) : { : /* Consider only procs in specified namespace */ : if (procform->pronamespace != namespaceId) 0.00 : 4effe8: 8b 8d ec fe ff ff mov -0x114(%rbp),%ecx 0.00 : 4effee: 39 48 40 cmp %ecx,0x40(%rax) 0.00 : 4efff1: 0f 84 81 02 00 00 je 4f0278 : } : : /* Search syscache by name only */ : catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(funcname)); : : for (i = 0; i < catlist->n_members; i++) 0.00 : 4efff7: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 4efffe: 83 85 fc fe ff ff 01 addl $0x1,-0x104(%rbp) 0.00 : 4f0005: 8b 9d fc fe ff ff mov -0x104(%rbp),%ebx 0.00 : 4f000b: 39 59 48 cmp %ebx,0x48(%rcx) 0.00 : 4f000e: 0f 8e 9c 02 00 00 jle 4f02b0 : { : HeapTuple proctup = &catlist->members[i]->tuple; 0.00 : 4f0014: 48 63 85 fc fe ff ff movslq -0x104(%rbp),%rax 0.00 : 4f001b: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx : bool use_defaults; : Oid va_elem_type; : int *argnumbers = NULL; : FuncCandidateList newResult; : : if (OidIsValid(namespaceId)) 0.00 : 4f0022: 8b bd ec fe ff ff mov -0x114(%rbp),%edi : /* Search syscache by name only */ : catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(funcname)); : : for (i = 0; i < catlist->n_members; i++) : { : HeapTuple proctup = &catlist->members[i]->tuple; 0.00 : 4f0028: 48 8b 44 c2 50 mov 0x50(%rdx,%rax,8),%rax : bool use_defaults; : Oid va_elem_type; : int *argnumbers = NULL; : FuncCandidateList newResult; : : if (OidIsValid(namespaceId)) 0.00 : 4f002d: 85 ff test %edi,%edi : /* Search syscache by name only */ : catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(funcname)); : : for (i = 0; i < catlist->n_members; i++) : { : HeapTuple proctup = &catlist->members[i]->tuple; 0.00 : 4f002f: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp) : Form_pg_proc procform = (Form_pg_proc) GETSTRUCT(proctup); 0.00 : 4f0036: 48 8b 50 48 mov 0x48(%rax),%rdx 0.00 : 4f003a: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 4f003e: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 4f0042: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) : int pronargs = procform->pronargs; 0.00 : 4f0049: 0f b7 50 64 movzwl 0x64(%rax),%edx : bool use_defaults; : Oid va_elem_type; : int *argnumbers = NULL; : FuncCandidateList newResult; : : if (OidIsValid(namespaceId)) 0.00 : 4f004d: 75 99 jne 4effe8 : * Consider only procs that are in the search path and are not in : * the temp namespace. : */ : ListCell *nsp; : : foreach(nsp, activeSearchPath) 0.00 : 4f004f: 48 8b 05 4a 96 68 00 mov 0x68964a(%rip),%rax # b796a0 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 4f0056: 48 85 c0 test %rax,%rax 0.00 : 4f0059: 74 9c je 4efff7 0.00 : 4f005b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 4f005f: 48 85 c0 test %rax,%rax 0.00 : 4f0062: 74 93 je 4efff7 0.00 : 4f0064: 48 8b 9d 00 ff ff ff mov -0x100(%rbp),%rbx : { : if (procform->pronamespace == lfirst_oid(nsp) && 0.00 : 4f006b: 8b 35 27 96 68 00 mov 0x689627(%rip),%esi # b79698 0.00 : 4f0071: 45 31 f6 xor %r14d,%r14d : * Consider only procs that are in the search path and are not in : * the temp namespace. : */ : ListCell *nsp; : : foreach(nsp, activeSearchPath) 0.00 : 4f0074: 8b 4b 40 mov 0x40(%rbx),%ecx 0.00 : 4f0077: eb 18 jmp 4f0091 0.00 : 4f0079: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4f0080: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 4f0084: 48 85 c0 test %rax,%rax 0.00 : 4f0087: 0f 84 6a ff ff ff je 4efff7 : { : if (procform->pronamespace == lfirst_oid(nsp) && : procform->pronamespace != myTempNamespace) : break; : pathpos++; 0.00 : 4f008d: 41 83 c6 01 add $0x1,%r14d : */ : ListCell *nsp; : : foreach(nsp, activeSearchPath) : { : if (procform->pronamespace == lfirst_oid(nsp) && 0.00 : 4f0091: 39 08 cmp %ecx,(%rax) 0.00 : 4f0093: 75 eb jne 4f0080 0.00 : 4f0095: 39 ce cmp %ecx,%esi 0.00 : 4f0097: 74 e7 je 4f0080 : } : if (nsp == NULL) : continue; /* proc is not in search path */ : } : : if (argnames != NIL) 0.00 : 4f0099: 48 83 bd b8 fe ff ff cmpq $0x0,-0x148(%rbp) 0.00 : 4f00a0: 00 : : for (i = 0; i < catlist->n_members; i++) : { : HeapTuple proctup = &catlist->members[i]->tuple; : Form_pg_proc procform = (Form_pg_proc) GETSTRUCT(proctup); : int pronargs = procform->pronargs; 0.00 : 4f00a1: 0f bf d2 movswl %dx,%edx 0.00 : 4f00a4: 89 95 b0 fe ff ff mov %edx,-0x150(%rbp) : } : if (nsp == NULL) : continue; /* proc is not in search path */ : } : : if (argnames != NIL) 0.00 : 4f00aa: 0f 84 28 02 00 00 je 4f02d8 : * : * Named or mixed notation can match a variadic function only if : * expand_variadic is off; otherwise there is no way to match the : * presumed-nameless parameters expanded from the variadic array. : */ : if (OidIsValid(procform->provariadic) && expand_variadic) 0.00 : 4f00b0: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 4f00b7: 8b 76 54 mov 0x54(%rsi),%esi 0.00 : 4f00ba: 85 f6 test %esi,%esi 0.00 : 4f00bc: 74 0d je 4f00cb 0.00 : 4f00be: 80 bd b7 fe ff ff 00 cmpb $0x0,-0x149(%rbp) 0.00 : 4f00c5: 0f 85 2c ff ff ff jne 4efff7 : /* : * Check argument count. : */ : Assert(nargs >= 0); /* -1 not supported with argnames */ : : if (pronargs > nargs && expand_defaults) 0.00 : 4f00cb: 8b 85 c4 fe ff ff mov -0x13c(%rbp),%eax 0.00 : 4f00d1: 39 85 b0 fe ff ff cmp %eax,-0x150(%rbp) 0.00 : 4f00d7: 0f 9f 85 d7 fe ff ff setg -0x129(%rbp) 0.00 : 4f00de: 0f 8e a4 01 00 00 jle 4f0288 0.00 : 4f00e4: 80 bd b6 fe ff ff 00 cmpb $0x0,-0x14a(%rbp) 0.00 : 4f00eb: 0f 84 97 01 00 00 je 4f0288 : { : /* Ignore if not enough default expressions */ : if (nargs + procform->pronargdefaults < pronargs) 0.00 : 4f00f1: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 4f00f8: 0f bf 42 66 movswl 0x66(%rdx),%eax : continue; 0.00 : 4f00fc: c6 85 0f ff ff ff 01 movb $0x1,-0xf1(%rbp) : Assert(nargs >= 0); /* -1 not supported with argnames */ : : if (pronargs > nargs && expand_defaults) : { : /* Ignore if not enough default expressions */ : if (nargs + procform->pronargdefaults < pronargs) 0.00 : 4f0103: 03 85 c4 fe ff ff add -0x13c(%rbp),%eax 0.00 : 4f0109: 39 85 b0 fe ff ff cmp %eax,-0x150(%rbp) 0.00 : 4f010f: 0f 8f e2 fe ff ff jg 4efff7 : /* Search syscache by name only */ : catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(funcname)); : : for (i = 0; i < catlist->n_members; i++) : { : HeapTuple proctup = &catlist->members[i]->tuple; 0.00 : 4f0115: 48 8b 9d c8 fe ff ff mov -0x138(%rbp),%rbx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 4f011c: 48 8b b5 b8 fe ff ff mov -0x148(%rbp),%rsi : Assert(argnames != NIL); : Assert(numposargs >= 0); : Assert(nargs <= pronargs); : : /* Ignore this function if its proargnames is null */ : (void) SysCacheGetAttr(PROCOID, proctup, Anum_pg_proc_proargnames, 0.00 : 4f0123: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 4f0127: ba 16 00 00 00 mov $0x16,%edx 0.00 : 4f012c: bf 2a 00 00 00 mov $0x2a,%edi : /* Search syscache by name only */ : catlist = SearchSysCacheList1(PROCNAMEARGSNSP, CStringGetDatum(funcname)); : : for (i = 0; i < catlist->n_members; i++) : { : HeapTuple proctup = &catlist->members[i]->tuple; 0.00 : 4f0131: 48 83 c3 38 add $0x38,%rbx 0.00 : 4f0135: 44 8b 66 04 mov 0x4(%rsi),%r12d : Assert(argnames != NIL); : Assert(numposargs >= 0); : Assert(nargs <= pronargs); : : /* Ignore this function if its proargnames is null */ : (void) SysCacheGetAttr(PROCOID, proctup, Anum_pg_proc_proargnames, 0.00 : 4f0139: 48 89 de mov %rbx,%rsi 0.00 : 4f013c: e8 4f 19 28 00 callq 771a90 : &isnull); : if (isnull) 0.00 : 4f0141: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4f0145: 0f 85 ac fe ff ff jne 4efff7 : MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, : int **argnumbers) : { : Form_pg_proc procform = (Form_pg_proc) GETSTRUCT(proctup); : int pronargs = procform->pronargs; : int numposargs = nargs - list_length(argnames); 0.00 : 4f014b: 8b 85 c4 fe ff ff mov -0x13c(%rbp),%eax : &isnull); : if (isnull) : return false; : : /* OK, let's extract the argument names and types */ : pronallargs = get_func_arg_info(proctup, 0.00 : 4f0151: 48 8d 4d a0 lea -0x60(%rbp),%rcx 0.00 : 4f0155: 48 8d 55 a8 lea -0x58(%rbp),%rdx 0.00 : 4f0159: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 4f015d: 48 89 df mov %rbx,%rdi : MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, : int **argnumbers) : { : Form_pg_proc procform = (Form_pg_proc) GETSTRUCT(proctup); : int pronargs = procform->pronargs; : int numposargs = nargs - list_length(argnames); 0.00 : 4f0160: 44 29 e0 sub %r12d,%eax 0.00 : 4f0163: 89 85 24 ff ff ff mov %eax,-0xdc(%rbp) : &isnull); : if (isnull) : return false; : : /* OK, let's extract the argument names and types */ : pronallargs = get_func_arg_info(proctup, 0.00 : 4f0169: e8 52 1a 29 00 callq 781bc0 : &p_argtypes, &p_argnames, &p_argmodes); : Assert(p_argnames != NULL); : : /* initialize state for matching */ : *argnumbers = (int *) palloc(pronargs * sizeof(int)); 0.00 : 4f016e: 48 63 9d b0 fe ff ff movslq -0x150(%rbp),%rbx : &isnull); : if (isnull) : return false; : : /* OK, let's extract the argument names and types */ : pronallargs = get_func_arg_info(proctup, 0.00 : 4f0175: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) : &p_argtypes, &p_argnames, &p_argmodes); : Assert(p_argnames != NULL); : : /* initialize state for matching */ : *argnumbers = (int *) palloc(pronargs * sizeof(int)); 0.00 : 4f017b: 48 8d 3c 9d 00 00 00 lea 0x0(,%rbx,4),%rdi 0.00 : 4f0182: 00 0.00 : 4f0183: e8 c8 8b 2a 00 callq 798d50 : memset(arggiven, false, pronargs * sizeof(bool)); 0.00 : 4f0188: 48 8d bd 30 ff ff ff lea -0xd0(%rbp),%rdi 0.00 : 4f018f: 31 f6 xor %esi,%esi 0.00 : 4f0191: 48 89 da mov %rbx,%rdx : pronallargs = get_func_arg_info(proctup, : &p_argtypes, &p_argnames, &p_argmodes); : Assert(p_argnames != NULL); : : /* initialize state for matching */ : *argnumbers = (int *) palloc(pronargs * sizeof(int)); 0.00 : 4f0194: 49 89 c7 mov %rax,%r15 : memset(arggiven, false, pronargs * sizeof(bool)); 0.00 : 4f0197: e8 84 92 f7 ff callq 469420 : : /* there are numposargs positional args before the named args */ : for (ap = 0; ap < numposargs; ap++) 0.00 : 4f019c: 8b 8d 24 ff ff ff mov -0xdc(%rbp),%ecx 0.00 : 4f01a2: 31 c0 xor %eax,%eax 0.00 : 4f01a4: c7 85 2c ff ff ff 00 movl $0x0,-0xd4(%rbp) 0.00 : 4f01ab: 00 00 00 0.00 : 4f01ae: 85 c9 test %ecx,%ecx 0.00 : 4f01b0: 7e 2a jle 4f01dc 0.00 : 4f01b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : (*argnumbers)[ap] = ap; 0.00 : 4f01b8: 41 89 04 87 mov %eax,(%r15,%rax,4) : arggiven[ap] = true; 0.00 : 4f01bc: c6 84 05 30 ff ff ff movb $0x1,-0xd0(%rbp,%rax,1) 0.00 : 4f01c3: 01 0.00 : 4f01c4: 48 83 c0 01 add $0x1,%rax : /* initialize state for matching */ : *argnumbers = (int *) palloc(pronargs * sizeof(int)); : memset(arggiven, false, pronargs * sizeof(bool)); : : /* there are numposargs positional args before the named args */ : for (ap = 0; ap < numposargs; ap++) 0.00 : 4f01c8: 39 85 24 ff ff ff cmp %eax,-0xdc(%rbp) 0.00 : 4f01ce: 7f e8 jg 4f01b8 0.00 : 4f01d0: 8b 95 24 ff ff ff mov -0xdc(%rbp),%edx 0.00 : 4f01d6: 89 95 2c ff ff ff mov %edx,-0xd4(%rbp) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 4f01dc: 48 8b 8d b8 fe ff ff mov -0x148(%rbp),%rcx 0.00 : 4f01e3: 48 8b 49 08 mov 0x8(%rcx),%rcx : (*argnumbers)[ap] = ap; : arggiven[ap] = true; : } : : /* now examine the named args */ : foreach(lc, argnames) 0.00 : 4f01e7: 48 85 c9 test %rcx,%rcx 0.00 : 4f01ea: 48 89 8d 18 ff ff ff mov %rcx,-0xe8(%rbp) 0.00 : 4f01f1: 0f 84 70 04 00 00 je 4f0667 : bool found; : int i; : : pp = 0; : found = false; : for (i = 0; i < pronallargs; i++) 0.00 : 4f01f7: 8b 95 28 ff ff ff mov -0xd8(%rbp),%edx : } : : /* now examine the named args */ : foreach(lc, argnames) : { : char *argname = (char *) lfirst(lc); 0.00 : 4f01fd: 48 8b 01 mov (%rcx),%rax : bool found; : int i; : : pp = 0; : found = false; : for (i = 0; i < pronallargs; i++) 0.00 : 4f0200: 85 d2 test %edx,%edx 0.00 : 4f0202: 0f 8e ef fd ff ff jle 4efff7 : } : : /* now examine the named args */ : foreach(lc, argnames) : { : char *argname = (char *) lfirst(lc); 0.00 : 4f0208: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 4f020f: 31 db xor %ebx,%ebx 0.00 : 4f0211: 45 31 ed xor %r13d,%r13d 0.00 : 4f0214: 4c 8b 65 a0 mov -0x60(%rbp),%r12 0.00 : 4f0218: eb 1d jmp 4f0237 0.00 : 4f021a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : pp = 0; : found = false; : for (i = 0; i < pronallargs; i++) : { : /* consider only input parameters */ : if (p_argmodes && 0.00 : 4f0220: 3c 62 cmp $0x62,%al 0.00 : 4f0222: 74 27 je 4f024b 0.00 : 4f0224: 3c 76 cmp $0x76,%al 0.00 : 4f0226: 74 23 je 4f024b : bool found; : int i; : : pp = 0; : found = false; : for (i = 0; i < pronallargs; i++) 0.00 : 4f0228: 83 c3 01 add $0x1,%ebx 0.00 : 4f022b: 39 9d 28 ff ff ff cmp %ebx,-0xd8(%rbp) 0.00 : 4f0231: 0f 8e c0 fd ff ff jle 4efff7 : { : /* consider only input parameters */ : if (p_argmodes && 0.00 : 4f0237: 4d 85 e4 test %r12,%r12 0.00 : 4f023a: 48 63 d3 movslq %ebx,%rdx 0.00 : 4f023d: 74 0c je 4f024b 0.00 : 4f023f: 48 63 d3 movslq %ebx,%rdx 0.00 : 4f0242: 41 0f b6 04 14 movzbl (%r12,%rdx,1),%eax 0.00 : 4f0247: 3c 69 cmp $0x69,%al 0.00 : 4f0249: 75 d5 jne 4f0220 : (p_argmodes[i] != FUNC_PARAM_IN && : p_argmodes[i] != FUNC_PARAM_INOUT && : p_argmodes[i] != FUNC_PARAM_VARIADIC)) : continue; : if (p_argnames[i] && strcmp(p_argnames[i], argname) == 0) 0.00 : 4f024b: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 4f024f: 48 8b 3c d0 mov (%rax,%rdx,8),%rdi 0.00 : 4f0253: 48 85 ff test %rdi,%rdi 0.00 : 4f0256: 74 14 je 4f026c 0.00 : 4f0258: 48 8b b5 10 ff ff ff mov -0xf0(%rbp),%rsi 0.00 : 4f025f: e8 cc 9a f7 ff callq 469d30 0.00 : 4f0264: 85 c0 test %eax,%eax 0.00 : 4f0266: 0f 84 74 03 00 00 je 4f05e0 : (*argnumbers)[ap] = pp; : found = true; : break; : } : /* increase pp only for input parameters */ : pp++; 0.00 : 4f026c: 41 83 c5 01 add $0x1,%r13d 0.00 : 4f0270: eb b6 jmp 4f0228 0.00 : 4f0272: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : foreach(nsp, activeSearchPath) : { : if (procform->pronamespace == lfirst_oid(nsp) && : procform->pronamespace != myTempNamespace) : break; : pathpos++; 0.00 : 4f0278: 45 31 f6 xor %r14d,%r14d 0.00 : 4f027b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4f0280: e9 14 fe ff ff jmpq 4f0099 0.00 : 4f0285: 0f 1f 00 nopl (%rax) : } : else : use_defaults = false; : : /* Ignore if it doesn't match requested argument count */ : if (pronargs != nargs && !use_defaults) 0.00 : 4f0288: 8b 8d c4 fe ff ff mov -0x13c(%rbp),%ecx 0.00 : 4f028e: 39 8d b0 fe ff ff cmp %ecx,-0x150(%rbp) 0.00 : 4f0294: 0f 85 5d fd ff ff jne 4efff7 : continue; 0.00 : 4f029a: c6 85 0f ff ff ff 00 movb $0x0,-0xf1(%rbp) 0.00 : 4f02a1: e9 6f fe ff ff jmpq 4f0115 0.00 : 4f02a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4f02ad: 00 00 00 : */ : newResult->next = resultList; : resultList = newResult; : } : : ReleaseSysCacheList(catlist); 0.00 : 4f02b0: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 4f02b7: e8 84 4f 27 00 callq 765240 : : return resultList; : } 0.00 : 4f02bc: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 4f02c3: 48 81 c4 28 01 00 00 add $0x128,%rsp 0.00 : 4f02ca: 5b pop %rbx 0.00 : 4f02cb: 41 5c pop %r12 0.00 : 4f02cd: 41 5d pop %r13 0.00 : 4f02cf: 41 5e pop %r14 0.00 : 4f02d1: 41 5f pop %r15 0.00 : 4f02d3: c9 leaveq 0.00 : 4f02d4: c3 retq 0.00 : 4f02d5: 0f 1f 00 nopl (%rax) : * : * Check if function is variadic, and get variadic element type if : * so. If expand_variadic is false, we should just ignore : * variadic-ness. : */ : if (pronargs <= nargs && expand_variadic) 0.00 : 4f02d8: 8b b5 c4 fe ff ff mov -0x13c(%rbp),%esi 0.00 : 4f02de: 39 b5 b0 fe ff ff cmp %esi,-0x150(%rbp) 0.00 : 4f02e4: 7f 0d jg 4f02f3 0.00 : 4f02e6: 80 bd b7 fe ff ff 00 cmpb $0x0,-0x149(%rbp) 0.00 : 4f02ed: 0f 85 67 02 00 00 jne 4f055a 0.00 : 4f02f3: c6 85 0e ff ff ff 00 movb $0x0,-0xf2(%rbp) 0.00 : 4f02fa: 31 db xor %ebx,%ebx : } : : /* : * Check if function can match by using parameter defaults. : */ : if (pronargs > nargs && expand_defaults) 0.00 : 4f02fc: 8b 8d c4 fe ff ff mov -0x13c(%rbp),%ecx 0.00 : 4f0302: 39 8d b0 fe ff ff cmp %ecx,-0x150(%rbp) 0.00 : 4f0308: 7e 0d jle 4f0317 0.00 : 4f030a: 80 bd b6 fe ff ff 00 cmpb $0x0,-0x14a(%rbp) 0.00 : 4f0311: 0f 85 13 02 00 00 jne 4f052a 0.00 : 4f0317: c6 85 0f ff ff ff 00 movb $0x0,-0xf1(%rbp) : } : else : use_defaults = false; : : /* Ignore if it doesn't match requested argument count */ : if (nargs >= 0 && pronargs != nargs && !variadic && !use_defaults) 0.00 : 4f031e: 8b 85 c4 fe ff ff mov -0x13c(%rbp),%eax 0.00 : 4f0324: 85 c0 test %eax,%eax 0.00 : 4f0326: 78 21 js 4f0349 0.00 : 4f0328: 8b 85 c4 fe ff ff mov -0x13c(%rbp),%eax 0.00 : 4f032e: 39 85 b0 fe ff ff cmp %eax,-0x150(%rbp) 0.00 : 4f0334: 74 13 je 4f0349 0.00 : 4f0336: 0f b6 95 0f ff ff ff movzbl -0xf1(%rbp),%edx 0.00 : 4f033d: 0a 95 0e ff ff ff or -0xf2(%rbp),%dl 0.00 : 4f0343: 0f 84 ae fc ff ff je 4efff7 : continue; 0.00 : 4f0349: 45 31 ff xor %r15d,%r15d : * We must compute the effective argument list so that we can easily : * compare it to earlier results. We waste a palloc cycle if it gets : * masked by an earlier result, but really that's a pretty infrequent : * case so it's not worth worrying about. : */ : effective_nargs = Max(pronargs, nargs); 0.00 : 4f034c: 8b 8d b0 fe ff ff mov -0x150(%rbp),%ecx 0.00 : 4f0352: 39 8d c4 fe ff ff cmp %ecx,-0x13c(%rbp) 0.00 : 4f0358: 41 89 cd mov %ecx,%r13d 0.00 : 4f035b: 44 0f 4d ad c4 fe ff cmovge -0x13c(%rbp),%r13d 0.00 : 4f0362: ff : newResult = (FuncCandidateList) 0.00 : 4f0363: 49 63 f5 movslq %r13d,%rsi 0.00 : 4f0366: 48 8d 3c b5 2c 00 00 lea 0x2c(,%rsi,4),%rdi 0.00 : 4f036d: 00 0.00 : 4f036e: 48 89 b5 d8 fe ff ff mov %rsi,-0x128(%rbp) 0.00 : 4f0375: e8 d6 89 2a 00 callq 798d50 : palloc(sizeof(struct _FuncCandidateList) - sizeof(Oid) : + effective_nargs * sizeof(Oid)); : newResult->pathpos = pathpos; 0.00 : 4f037a: 44 89 70 08 mov %r14d,0x8(%rax) : * compare it to earlier results. We waste a palloc cycle if it gets : * masked by an earlier result, but really that's a pretty infrequent : * case so it's not worth worrying about. : */ : effective_nargs = Max(pronargs, nargs); : newResult = (FuncCandidateList) 0.00 : 4f037e: 49 89 c4 mov %rax,%r12 : palloc(sizeof(struct _FuncCandidateList) - sizeof(Oid) : + effective_nargs * sizeof(Oid)); : newResult->pathpos = pathpos; : newResult->oid = HeapTupleGetOid(proctup); 0.00 : 4f0381: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : 4f0388: 48 8b 50 48 mov 0x48(%rax),%rdx 0.00 : 4f038c: 31 c0 xor %eax,%eax 0.00 : 4f038e: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 4f0392: 74 08 je 4f039c 0.00 : 4f0394: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 4f0398: 8b 44 02 fc mov -0x4(%rdx,%rax,1),%eax : newResult->nargs = effective_nargs; : newResult->argnumbers = argnumbers; : if (argnumbers) 0.00 : 4f039c: 4d 85 ff test %r15,%r15 : effective_nargs = Max(pronargs, nargs); : newResult = (FuncCandidateList) : palloc(sizeof(struct _FuncCandidateList) - sizeof(Oid) : + effective_nargs * sizeof(Oid)); : newResult->pathpos = pathpos; : newResult->oid = HeapTupleGetOid(proctup); 0.00 : 4f039f: 41 89 44 24 0c mov %eax,0xc(%r12) : newResult->nargs = effective_nargs; 0.00 : 4f03a4: 45 89 6c 24 10 mov %r13d,0x10(%r12) : newResult->argnumbers = argnumbers; 0.00 : 4f03a9: 4d 89 7c 24 20 mov %r15,0x20(%r12) : if (argnumbers) 0.00 : 4f03ae: 0f 84 3c 03 00 00 je 4f06f0 : { : /* Re-order the argument types into call's logical order */ : Oid *proargtypes = procform->proargtypes.values; : int i; : : for (i = 0; i < pronargs; i++) 0.00 : 4f03b4: 8b 85 b0 fe ff ff mov -0x150(%rbp),%eax 0.00 : 4f03ba: 85 c0 test %eax,%eax 0.00 : 4f03bc: 7e 3a jle 4f03f8 0.00 : 4f03be: 8b 85 b0 fe ff ff mov -0x150(%rbp),%eax 0.00 : 4f03c4: 31 d2 xor %edx,%edx 0.00 : 4f03c6: 83 e8 01 sub $0x1,%eax 0.00 : 4f03c9: 48 8d 0c 85 04 00 00 lea 0x4(,%rax,4),%rcx 0.00 : 4f03d0: 00 0.00 : 4f03d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : newResult->args[i] = proargtypes[argnumbers[i]]; 0.00 : 4f03d8: 49 63 04 17 movslq (%r15,%rdx,1),%rax 0.00 : 4f03dc: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 4f03e3: 8b 84 86 84 00 00 00 mov 0x84(%rsi,%rax,4),%eax 0.00 : 4f03ea: 41 89 44 14 28 mov %eax,0x28(%r12,%rdx,1) 0.00 : 4f03ef: 48 83 c2 04 add $0x4,%rdx : { : /* Re-order the argument types into call's logical order */ : Oid *proargtypes = procform->proargtypes.values; : int i; : : for (i = 0; i < pronargs; i++) 0.00 : 4f03f3: 48 39 ca cmp %rcx,%rdx 0.00 : 4f03f6: 75 e0 jne 4f03d8 : { : /* Simple positional case, just copy proargtypes as-is */ : memcpy(newResult->args, procform->proargtypes.values, : pronargs * sizeof(Oid)); : } : if (variadic) 0.00 : 4f03f8: 80 bd 0e ff ff ff 00 cmpb $0x0,-0xf2(%rbp) 0.00 : 4f03ff: 0f 84 7a 01 00 00 je 4f057f : { : int i; : : newResult->nvargs = effective_nargs - pronargs + 1; 0.00 : 4f0405: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4f040a: 2b 85 b0 fe ff ff sub -0x150(%rbp),%eax 0.00 : 4f0410: 44 01 e8 add %r13d,%eax 0.00 : 4f0413: 41 89 44 24 14 mov %eax,0x14(%r12) : /* Expand variadic argument into N copies of element type */ : for (i = pronargs - 1; i < effective_nargs; i++) 0.00 : 4f0418: 8b 85 b0 fe ff ff mov -0x150(%rbp),%eax 0.00 : 4f041e: 83 e8 01 sub $0x1,%eax 0.00 : 4f0421: 41 39 c5 cmp %eax,%r13d 0.00 : 4f0424: 7e 2d jle 4f0453 : newResult->args[i] = va_elem_type; 0.00 : 4f0426: 89 c6 mov %eax,%esi : { : int i; : : newResult->nvargs = effective_nargs - pronargs + 1; : /* Expand variadic argument into N copies of element type */ : for (i = pronargs - 1; i < effective_nargs; i++) 0.00 : 4f0428: 44 89 e8 mov %r13d,%eax 0.00 : 4f042b: 2b 85 b0 fe ff ff sub -0x150(%rbp),%eax 0.00 : 4f0431: 31 d2 xor %edx,%edx 0.00 : 4f0433: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 4f0437: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4f043e: 00 00 : newResult->args[i] = va_elem_type; 0.00 : 4f0440: 8d 04 16 lea (%rsi,%rdx,1),%eax 0.00 : 4f0443: 48 83 c2 01 add $0x1,%rdx : { : int i; : : newResult->nvargs = effective_nargs - pronargs + 1; : /* Expand variadic argument into N copies of element type */ : for (i = pronargs - 1; i < effective_nargs; i++) 0.00 : 4f0447: 48 39 ca cmp %rcx,%rdx : newResult->args[i] = va_elem_type; 0.00 : 4f044a: 48 98 cltq 0.00 : 4f044c: 41 89 5c 84 28 mov %ebx,0x28(%r12,%rax,4) : { : int i; : : newResult->nvargs = effective_nargs - pronargs + 1; : /* Expand variadic argument into N copies of element type */ : for (i = pronargs - 1; i < effective_nargs; i++) 0.00 : 4f0451: 75 ed jne 4f0440 : newResult->args[i] = va_elem_type; : } : else : newResult->nvargs = 0; : newResult->ndargs = use_defaults ? pronargs - nargs : 0; 0.00 : 4f0453: 8b 85 c4 fe ff ff mov -0x13c(%rbp),%eax 0.00 : 4f0459: 29 85 b0 fe ff ff sub %eax,-0x150(%rbp) 0.00 : 4f045f: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4f0464: 80 bd 0f ff ff ff 00 cmpb $0x0,-0xf1(%rbp) 0.00 : 4f046b: 0f 45 85 b0 fe ff ff cmovne -0x150(%rbp),%eax 0.00 : 4f0472: 41 89 44 24 18 mov %eax,0x18(%r12) : * lists. We can skip this check for the single-namespace case if no : * special (named, variadic or defaults) match has been made, since : * then the unique index on pg_proc guarantees all the matches have : * different argument lists. : */ : if (resultList != NULL && 0.00 : 4f0477: 48 83 bd e0 fe ff ff cmpq $0x0,-0x120(%rbp) 0.00 : 4f047e: 00 0.00 : 4f047f: 74 15 je 4f0496 0.00 : 4f0481: 80 bd eb fe ff ff 00 cmpb $0x0,-0x115(%rbp) 0.00 : 4f0488: 75 23 jne 4f04ad 0.00 : 4f048a: 44 8b bd ec fe ff ff mov -0x114(%rbp),%r15d 0.00 : 4f0491: 45 85 ff test %r15d,%r15d 0.00 : 4f0494: 74 17 je 4f04ad : } : : /* : * Okay to add it to result list : */ : newResult->next = resultList; 0.00 : 4f0496: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 4f049d: 49 89 14 24 mov %rdx,(%r12) 0.00 : 4f04a1: 4c 89 a5 e0 fe ff ff mov %r12,-0x120(%rbp) 0.00 : 4f04a8: e9 4a fb ff ff jmpq 4efff7 : * : * We ignore defaulted arguments in deciding what is a match. : */ : FuncCandidateList prevResult; : : if (catlist->ordered && !any_special) 0.00 : 4f04ad: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 4f04b4: 80 7a 25 00 cmpb $0x0,0x25(%rdx) 0.00 : 4f04b8: 0f 85 cf 00 00 00 jne 4f058d : else : prevResult = NULL; : } : else : { : int cmp_nargs = newResult->nargs - newResult->ndargs; 0.00 : 4f04be: 45 8b 5c 24 10 mov 0x10(%r12),%r11d : : for (prevResult = resultList; : prevResult; : prevResult = prevResult->next) : { : if (cmp_nargs == prevResult->nargs - prevResult->ndargs && 0.00 : 4f04c3: 4d 8d 4c 24 28 lea 0x28(%r12),%r9 0.00 : 4f04c8: 48 8b 9d e0 fe ff ff mov -0x120(%rbp),%rbx : else : prevResult = NULL; : } : else : { : int cmp_nargs = newResult->nargs - newResult->ndargs; 0.00 : 4f04cf: 41 29 c3 sub %eax,%r11d : : for (prevResult = resultList; : prevResult; : prevResult = prevResult->next) : { : if (cmp_nargs == prevResult->nargs - prevResult->ndargs && 0.00 : 4f04d2: 49 63 c3 movslq %r11d,%rax 0.00 : 4f04d5: 4c 8d 04 85 00 00 00 lea 0x0(,%rax,4),%r8 0.00 : 4f04dc: 00 0.00 : 4f04dd: eb 09 jmp 4f04e8 0.00 : 4f04df: 90 nop : { : int cmp_nargs = newResult->nargs - newResult->ndargs; : : for (prevResult = resultList; : prevResult; : prevResult = prevResult->next) 0.00 : 4f04e0: 48 8b 1b mov (%rbx),%rbx : else : { : int cmp_nargs = newResult->nargs - newResult->ndargs; : : for (prevResult = resultList; : prevResult; 0.00 : 4f04e3: 48 85 db test %rbx,%rbx 0.00 : 4f04e6: 74 ae je 4f0496 : prevResult = prevResult->next) : { : if (cmp_nargs == prevResult->nargs - prevResult->ndargs && 0.00 : 4f04e8: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 4f04eb: 2b 43 18 sub 0x18(%rbx),%eax 0.00 : 4f04ee: 44 39 d8 cmp %r11d,%eax 0.00 : 4f04f1: 75 ed jne 4f04e0 0.00 : 4f04f3: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 4f04f7: 4d 39 c0 cmp %r8,%r8 0.00 : 4f04fa: 4c 89 ce mov %r9,%rsi 0.00 : 4f04fd: 4c 89 c1 mov %r8,%rcx 0.00 : 4f0500: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 4f0502: 75 dc jne 4f04e0 : * preference < 0 means prefer the new, preference = 0 means : * ambiguous. : */ : int preference; : : if (pathpos != prevResult->pathpos) 0.00 : 4f0504: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : 4f0507: 44 39 f0 cmp %r14d,%eax 0.00 : 4f050a: 0f 84 45 02 00 00 je 4f0755 : { : /* : * Prefer the one that's earlier in the search path. : */ : preference = pathpos - prevResult->pathpos; 0.00 : 4f0510: 41 29 c6 sub %eax,%r14d : *---------- : */ : preference = 0; : } : : if (preference > 0) 0.00 : 4f0513: 41 83 fe 00 cmp $0x0,%r14d 0.00 : 4f0517: 0f 8e fb 01 00 00 jle 4f0718 : } : else : { : /* mark old result as ambiguous, discard new */ : prevResult->oid = InvalidOid; : pfree(newResult); 0.00 : 4f051d: 4c 89 e7 mov %r12,%rdi 0.00 : 4f0520: e8 5b 86 2a 00 callq 798b80 : continue; 0.00 : 4f0525: e9 cd fa ff ff jmpq 4efff7 : * Check if function can match by using parameter defaults. : */ : if (pronargs > nargs && expand_defaults) : { : /* Ignore if not enough default expressions */ : if (nargs + procform->pronargdefaults < pronargs) 0.00 : 4f052a: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 4f0531: 0f bf 46 66 movswl 0x66(%rsi),%eax 0.00 : 4f0535: 03 85 c4 fe ff ff add -0x13c(%rbp),%eax 0.00 : 4f053b: 39 85 b0 fe ff ff cmp %eax,-0x150(%rbp) 0.00 : 4f0541: 0f 8f b0 fa ff ff jg 4efff7 : continue; 0.00 : 4f0547: c6 85 eb fe ff ff 01 movb $0x1,-0x115(%rbp) 0.00 : 4f054e: c6 85 0f ff ff ff 01 movb $0x1,-0xf1(%rbp) 0.00 : 4f0555: e9 c4 fd ff ff jmpq 4f031e : * so. If expand_variadic is false, we should just ignore : * variadic-ness. : */ : if (pronargs <= nargs && expand_variadic) : { : va_elem_type = procform->provariadic; 0.00 : 4f055a: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 4f0561: 8b 58 54 mov 0x54(%rax),%ebx : variadic = OidIsValid(va_elem_type); 0.00 : 4f0564: 85 db test %ebx,%ebx 0.00 : 4f0566: 0f 95 85 0e ff ff ff setne -0xf2(%rbp) : any_special |= variadic; 0.00 : 4f056d: 0f b6 95 0e ff ff ff movzbl -0xf2(%rbp),%edx 0.00 : 4f0574: 08 95 eb fe ff ff or %dl,-0x115(%rbp) 0.00 : 4f057a: e9 7d fd ff ff jmpq 4f02fc : /* Expand variadic argument into N copies of element type */ : for (i = pronargs - 1; i < effective_nargs; i++) : newResult->args[i] = va_elem_type; : } : else : newResult->nvargs = 0; 0.00 : 4f057f: 41 c7 44 24 14 00 00 movl $0x0,0x14(%r12) 0.00 : 4f0586: 00 00 0.00 : 4f0588: e9 c6 fe ff ff jmpq 4f0453 : * : * We ignore defaulted arguments in deciding what is a match. : */ : FuncCandidateList prevResult; : : if (catlist->ordered && !any_special) 0.00 : 4f058d: 80 bd eb fe ff ff 00 cmpb $0x0,-0x115(%rbp) 0.00 : 4f0594: 0f 85 24 ff ff ff jne 4f04be : { : /* ndargs must be 0 if !any_special */ : if (effective_nargs == resultList->nargs && 0.00 : 4f059a: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : 4f05a1: 44 39 69 10 cmp %r13d,0x10(%rcx) 0.00 : 4f05a5: 0f 85 eb fe ff ff jne 4f0496 0.00 : 4f05ab: 48 89 cf mov %rcx,%rdi 0.00 : 4f05ae: 48 8b 8d d8 fe ff ff mov -0x128(%rbp),%rcx 0.00 : 4f05b5: 49 8d 74 24 28 lea 0x28(%r12),%rsi 0.00 : 4f05ba: 48 83 c7 28 add $0x28,%rdi 0.00 : 4f05be: 48 c1 e1 02 shl $0x2,%rcx 0.00 : 4f05c2: 48 39 c9 cmp %rcx,%rcx 0.00 : 4f05c5: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 4f05c7: 0f 85 c9 fe ff ff jne 4f0496 : */ : newResult->next = resultList; : resultList = newResult; : } : : ReleaseSysCacheList(catlist); 0.00 : 4f05cd: 48 8b 9d e0 fe ff ff mov -0x120(%rbp),%rbx 0.00 : 4f05d4: e9 2b ff ff ff jmpq 4f0504 0.00 : 4f05d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : p_argmodes[i] != FUNC_PARAM_VARIADIC)) : continue; : if (p_argnames[i] && strcmp(p_argnames[i], argname) == 0) : { : /* fail if argname matches a positional argument */ : if (arggiven[pp]) 0.00 : 4f05e0: 49 63 c5 movslq %r13d,%rax 0.00 : 4f05e3: 80 bc 05 30 ff ff ff cmpb $0x0,-0xd0(%rbp,%rax,1) 0.00 : 4f05ea: 00 0.00 : 4f05eb: 0f 85 06 fa ff ff jne 4efff7 : return false; : arggiven[pp] = true; 0.00 : 4f05f1: c6 84 05 30 ff ff ff movb $0x1,-0xd0(%rbp,%rax,1) 0.00 : 4f05f8: 01 : (*argnumbers)[ap] = pp; 0.00 : 4f05f9: 48 63 85 2c ff ff ff movslq -0xd4(%rbp),%rax 0.00 : 4f0600: 45 89 2c 87 mov %r13d,(%r15,%rax,4) : (*argnumbers)[ap] = ap; : arggiven[ap] = true; : } : : /* now examine the named args */ : foreach(lc, argnames) 0.00 : 4f0604: 48 8b 9d 18 ff ff ff mov -0xe8(%rbp),%rbx : pp++; : } : /* if name isn't in proargnames, fail */ : if (!found) : return false; : ap++; 0.00 : 4f060b: 83 85 2c ff ff ff 01 addl $0x1,-0xd4(%rbp) : (*argnumbers)[ap] = ap; : arggiven[ap] = true; : } : : /* now examine the named args */ : foreach(lc, argnames) 0.00 : 4f0612: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 4f0616: 48 85 db test %rbx,%rbx 0.00 : 4f0619: 48 89 9d 18 ff ff ff mov %rbx,-0xe8(%rbp) 0.00 : 4f0620: 74 45 je 4f0667 : { : char *argname = (char *) lfirst(lc); 0.00 : 4f0622: 48 8b b5 18 ff ff ff mov -0xe8(%rbp),%rsi 0.00 : 4f0629: 31 db xor %ebx,%ebx 0.00 : 4f062b: 45 31 ed xor %r13d,%r13d 0.00 : 4f062e: 4c 8b 65 a0 mov -0x60(%rbp),%r12 0.00 : 4f0632: 48 8b 36 mov (%rsi),%rsi 0.00 : 4f0635: 48 89 b5 10 ff ff ff mov %rsi,-0xf0(%rbp) 0.00 : 4f063c: e9 f6 fb ff ff jmpq 4f0237 : DeconstructQualifiedName(names, &schemaname, &funcname); : : if (schemaname) : { : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(schemaname, missing_ok); 0.00 : 4f0641: 0f be f3 movsbl %bl,%esi 0.00 : 4f0644: e8 67 eb ff ff callq 4ef1b0 : if (!OidIsValid(namespaceId)) 0.00 : 4f0649: 85 c0 test %eax,%eax : DeconstructQualifiedName(names, &schemaname, &funcname); : : if (schemaname) : { : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(schemaname, missing_ok); 0.00 : 4f064b: 89 85 ec fe ff ff mov %eax,-0x114(%rbp) : if (!OidIsValid(namespaceId)) 0.00 : 4f0651: 48 c7 85 e0 fe ff ff movq $0x0,-0x120(%rbp) 0.00 : 4f0658: 00 00 00 00 0.00 : 4f065c: 0f 85 28 f9 ff ff jne 4eff8a 0.00 : 4f0662: e9 55 fc ff ff jmpq 4f02bc : } : : Assert(ap == nargs); /* processed all actual parameters */ : : /* Check for default arguments */ : if (nargs < pronargs) 0.00 : 4f0667: 80 bd d7 fe ff ff 00 cmpb $0x0,-0x129(%rbp) 0.00 : 4f066e: 74 6b je 4f06db : { : int first_arg_with_default = pronargs - procform->pronargdefaults; 0.00 : 4f0670: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 4f0677: 8b 95 b0 fe ff ff mov -0x150(%rbp),%edx 0.00 : 4f067d: 0f bf 46 66 movswl 0x66(%rsi),%eax 0.00 : 4f0681: 29 c2 sub %eax,%edx : : for (pp = numposargs; pp < pronargs; pp++) 0.00 : 4f0683: 8b 85 24 ff ff ff mov -0xdc(%rbp),%eax 0.00 : 4f0689: 39 85 b0 fe ff ff cmp %eax,-0x150(%rbp) 0.00 : 4f068f: 7e 4a jle 4f06db : { : if (arggiven[pp]) 0.00 : 4f0691: 48 63 85 24 ff ff ff movslq -0xdc(%rbp),%rax 0.00 : 4f0698: 80 bc 05 30 ff ff ff cmpb $0x0,-0xd0(%rbp,%rax,1) 0.00 : 4f069f: 00 0.00 : 4f06a0: 75 24 jne 4f06c6 : continue; : /* fail if arg not given and no default available */ : if (pp < first_arg_with_default) 0.00 : 4f06a2: 3b 95 24 ff ff ff cmp -0xdc(%rbp),%edx 0.00 : 4f06a8: 0f 8f 49 f9 ff ff jg 4efff7 : return false; : (*argnumbers)[ap++] = pp; 0.00 : 4f06ae: 48 63 85 2c ff ff ff movslq -0xd4(%rbp),%rax 0.00 : 4f06b5: 8b 8d 24 ff ff ff mov -0xdc(%rbp),%ecx 0.00 : 4f06bb: 41 89 0c 87 mov %ecx,(%r15,%rax,4) 0.00 : 4f06bf: 83 85 2c ff ff ff 01 addl $0x1,-0xd4(%rbp) : /* Check for default arguments */ : if (nargs < pronargs) : { : int first_arg_with_default = pronargs - procform->pronargdefaults; : : for (pp = numposargs; pp < pronargs; pp++) 0.00 : 4f06c6: 83 85 24 ff ff ff 01 addl $0x1,-0xdc(%rbp) 0.00 : 4f06cd: 8b 9d 24 ff ff ff mov -0xdc(%rbp),%ebx 0.00 : 4f06d3: 39 9d b0 fe ff ff cmp %ebx,-0x150(%rbp) 0.00 : 4f06d9: 7f b6 jg 4f0691 : */ : newResult->next = resultList; : resultList = newResult; : } : : ReleaseSysCacheList(catlist); 0.00 : 4f06db: c6 85 eb fe ff ff 01 movb $0x1,-0x115(%rbp) 0.00 : 4f06e2: c6 85 0e ff ff ff 00 movb $0x0,-0xf2(%rbp) 0.00 : 4f06e9: 31 db xor %ebx,%ebx 0.00 : 4f06eb: e9 5c fc ff ff jmpq 4f034c : newResult->args[i] = proargtypes[argnumbers[i]]; : } : else : { : /* Simple positional case, just copy proargtypes as-is */ : memcpy(newResult->args, procform->proargtypes.values, 0.00 : 4f06f0: 48 63 95 b0 fe ff ff movslq -0x150(%rbp),%rdx 0.00 : 4f06f7: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 4f06fe: 49 8d 7c 24 28 lea 0x28(%r12),%rdi 0.00 : 4f0703: 48 81 c6 84 00 00 00 add $0x84,%rsi 0.00 : 4f070a: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 4f070e: e8 dd 94 f7 ff callq 469bf0 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:1095 100.00 : 4f0713: e9 e0 fc ff ff jmpq 4f03f8 : { : /* keep previous result */ : pfree(newResult); : continue; : } : else if (preference < 0) 0.00 : 4f0718: 74 4d je 4f0767 : { : /* remove previous result from the list */ : if (prevResult == resultList) : resultList = prevResult->next; 0.00 : 4f071a: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx : continue; : } : else if (preference < 0) : { : /* remove previous result from the list */ : if (prevResult == resultList) 0.00 : 4f0721: 48 39 d3 cmp %rdx,%rbx 0.00 : 4f0724: 75 12 jne 4f0738 0.00 : 4f0726: eb 5d jmp 4f0785 0.00 : 4f0728: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4f072f: 00 : else : { : FuncCandidateList prevPrevResult; : : for (prevPrevResult = resultList; : prevPrevResult; 0.00 : 4f0730: 48 85 c0 test %rax,%rax 0.00 : 4f0733: 74 13 je 4f0748 0.00 : 4f0735: 48 89 c2 mov %rax,%rdx : prevPrevResult = prevPrevResult->next) : { : if (prevResult == prevPrevResult->next) 0.00 : 4f0738: 48 8b 02 mov (%rdx),%rax 0.00 : 4f073b: 48 39 d8 cmp %rbx,%rax 0.00 : 4f073e: 66 90 xchg %ax,%ax 0.00 : 4f0740: 75 ee jne 4f0730 : { : prevPrevResult->next = prevResult->next; 0.00 : 4f0742: 48 8b 03 mov (%rbx),%rax 0.00 : 4f0745: 48 89 02 mov %rax,(%rdx) : break; : } : } : Assert(prevPrevResult); /* assert we found it */ : } : pfree(prevResult); 0.00 : 4f0748: 48 89 df mov %rbx,%rdi 0.00 : 4f074b: e8 30 84 2a 00 callq 798b80 0.00 : 4f0750: e9 41 fd ff ff jmpq 4f0496 : /* : * Prefer the one that's earlier in the search path. : */ : preference = pathpos - prevResult->pathpos; : } : else if (variadic && prevResult->nvargs == 0) 0.00 : 4f0755: 80 bd 0e ff ff ff 00 cmpb $0x0,-0xf2(%rbp) 0.00 : 4f075c: 75 15 jne 4f0773 : * same namespace; if so we prefer the non-variadic match : * on efficiency grounds. : */ : preference = 1; : } : else if (!variadic && prevResult->nvargs > 0) 0.00 : 4f075e: 44 8b 5b 14 mov 0x14(%rbx),%r11d 0.00 : 4f0762: 45 85 db test %r11d,%r11d 0.00 : 4f0765: 7f b3 jg 4f071a : /* fall through to add newResult to list */ : } : else : { : /* mark old result as ambiguous, discard new */ : prevResult->oid = InvalidOid; 0.00 : 4f0767: c7 43 0c 00 00 00 00 movl $0x0,0xc(%rbx) 0.00 : 4f076e: e9 aa fd ff ff jmpq 4f051d : /* : * Prefer the one that's earlier in the search path. : */ : preference = pathpos - prevResult->pathpos; : } : else if (variadic && prevResult->nvargs == 0) 0.00 : 4f0773: 44 8b 6b 14 mov 0x14(%rbx),%r13d 0.00 : 4f0777: 45 85 ed test %r13d,%r13d 0.00 : 4f077a: 75 eb jne 4f0767 0.00 : 4f077c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4f0780: e9 98 fd ff ff jmpq 4f051d : } : else if (preference < 0) : { : /* remove previous result from the list */ : if (prevResult == resultList) : resultList = prevResult->next; 0.00 : 4f0785: 48 8b 03 mov (%rbx),%rax 0.00 : 4f0788: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.00 : 4f078f: eb b7 jmp 4f0748 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:245 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004f0d10 : : */ : Oid : RangeVarGetRelidExtended(const RangeVar *relation, LOCKMODE lockmode, : bool missing_ok, bool nowait, : RangeVarGetRelidCallback callback, void *callback_arg) : { 0.00 : 4f0d10: 55 push %rbp 0.00 : 4f0d11: 48 89 e5 mov %rsp,%rbp 0.00 : 4f0d14: 41 57 push %r15 0.00 : 4f0d16: 41 56 push %r14 0.00 : 4f0d18: 41 89 f6 mov %esi,%r14d 0.00 : 4f0d1b: 41 55 push %r13 0.00 : 4f0d1d: 49 89 fd mov %rdi,%r13 0.00 : 4f0d20: 41 54 push %r12 0.00 : 4f0d22: 53 push %rbx 0.00 : 4f0d23: 48 83 ec 28 sub $0x28,%rsp 0.00 : 4f0d27: 4c 89 45 c0 mov %r8,-0x40(%rbp) 0.00 : 4f0d2b: 4c 89 4d b8 mov %r9,-0x48(%rbp) 0.00 : 4f0d2f: 88 55 cf mov %dl,-0x31(%rbp) 0.00 : 4f0d32: 88 4d ce mov %cl,-0x32(%rbp) : bool retry = false; : : /* : * We check the catalog name and then ignore it. : */ : if (relation->catalogname) 0.00 : 4f0d35: 48 83 7f 08 00 cmpq $0x0,0x8(%rdi) 0.00 : 4f0d3a: 74 1f je 4f0d5b : { : if (strcmp(relation->catalogname, get_database_name(MyDatabaseId)) != 0) 0.00 : 4f0d3c: 8b 3d 66 93 6c 00 mov 0x6c9366(%rip),%edi # bba0a8 0.00 : 4f0d42: e8 49 9f 06 00 callq 55ac90 0.00 : 4f0d47: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 4f0d4b: 48 89 c6 mov %rax,%rsi 0.00 : 4f0d4e: e8 dd 8f f7 ff callq 469d30 0.00 : 4f0d53: 85 c0 test %eax,%eax 0.00 : 4f0d55: 0f 85 67 02 00 00 jne 4f0fc2 : else if (relation->schemaname) : { : Oid namespaceId; : : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(relation->schemaname, missing_ok); 0.00 : 4f0d5b: 0f be 45 cf movsbl -0x31(%rbp),%eax : * We check the catalog name and then ignore it. : */ : if (relation->catalogname) : { : if (strcmp(relation->catalogname, get_database_name(MyDatabaseId)) != 0) : ereport(ERROR, /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:245 100.00 : 4f0d5f: 45 31 e4 xor %r12d,%r12d 0.00 : 4f0d62: 45 31 ff xor %r15d,%r15d : else if (relation->schemaname) : { : Oid namespaceId; : : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(relation->schemaname, missing_ok); 0.00 : 4f0d65: 89 45 b4 mov %eax,-0x4c(%rbp) 0.00 : 4f0d68: eb 2a jmp 4f0d94 0.00 : 4f0d6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * lingering. : */ : if (!OidIsValid(relId)) : AcceptInvalidationMessages(); : else if (!nowait) : LockRelationOid(relId, lockmode); 0.00 : 4f0d70: 44 89 f6 mov %r14d,%esi 0.00 : 4f0d73: 89 df mov %ebx,%edi 0.00 : 4f0d75: e8 26 77 19 00 callq 6884a0 : } : : /* : * If no invalidation message were processed, we're done! : */ : if (inval_count == SharedInvalidMessageCounter) 0.00 : 4f0d7a: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 4f0d7e: 48 3b 05 93 ed 6c 00 cmp 0x6ced93(%rip),%rax # bbfb18 : ereport(ERROR, : (errcode(ERRCODE_LOCK_NOT_AVAILABLE), : errmsg("could not obtain lock on relation \"%s.%s\"", : relation->schemaname, relation->relname))); : else : ereport(ERROR, 0.00 : 4f0d85: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4f0d8b: 41 89 dc mov %ebx,%r12d : } : : /* : * If no invalidation message were processed, we're done! : */ : if (inval_count == SharedInvalidMessageCounter) 0.00 : 4f0d8e: 0f 84 5c 01 00 00 je 4f0ef0 : * happen in contexts such as "CREATE TEMP TABLE foo (f1 int PRIMARY : * KEY)". Such a command will generate an added CREATE INDEX : * operation, which must be careful to find the temp table, even when : * pg_temp is not first in the search path. : */ : if (relation->relpersistence == RELPERSISTENCE_TEMP) 0.00 : 4f0d94: 41 80 7d 24 74 cmpb $0x74,0x24(%r13) : /* : * Remember this value, so that, after looking up the relation name : * and locking its OID, we can check whether any invalidation messages : * have been processed that might require a do-over. : */ : inval_count = SharedInvalidMessageCounter; 0.00 : 4f0d99: 48 8b 05 78 ed 6c 00 mov 0x6ced78(%rip),%rax # bbfb18 0.00 : 4f0da0: 48 89 45 d0 mov %rax,-0x30(%rbp) : * happen in contexts such as "CREATE TEMP TABLE foo (f1 int PRIMARY : * KEY)". Such a command will generate an added CREATE INDEX : * operation, which must be careful to find the temp table, even when : * pg_temp is not first in the search path. : */ : if (relation->relpersistence == RELPERSISTENCE_TEMP) 0.00 : 4f0da4: 0f 84 e6 00 00 00 je 4f0e90 : } : : relId = get_relname_relid(relation->relname, myTempNamespace); : } : } : else if (relation->schemaname) 0.00 : 4f0daa: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 4f0dae: 48 85 ff test %rdi,%rdi 0.00 : 4f0db1: 0f 84 69 01 00 00 je 4f0f20 : { : Oid namespaceId; : : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(relation->schemaname, missing_ok); 0.00 : 4f0db7: 8b 75 b4 mov -0x4c(%rbp),%esi 0.00 : 4f0dba: e8 f1 e3 ff ff callq 4ef1b0 : if (missing_ok && !OidIsValid(namespaceId)) 0.00 : 4f0dbf: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4f0dc3: 0f 85 07 01 00 00 jne 4f0ed0 : relId = InvalidOid; : else : relId = get_relname_relid(relation->relname, namespaceId); 0.00 : 4f0dc9: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 4f0dcd: 89 c6 mov %eax,%esi 0.00 : 4f0dcf: e8 ac 36 28 00 callq 774480 0.00 : 4f0dd4: 89 c3 mov %eax,%ebx 0.00 : 4f0dd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4f0ddd: 00 00 00 : * before locking anything!), but we've gotten far enough to know what : * OID we think we should lock. Of course, concurrent DDL might : * change things while we're waiting for the lock, but in that case : * the callback will be invoked again for the new OID. : */ : if (callback) 0.00 : 4f0de0: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 4f0de5: 74 0f je 4f0df6 : callback(relation, relId, oldRelId, callback_arg); 0.00 : 4f0de7: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 4f0deb: 44 89 e2 mov %r12d,%edx 0.00 : 4f0dee: 89 de mov %ebx,%esi 0.00 : 4f0df0: 4c 89 ef mov %r13,%rdi 0.00 : 4f0df3: ff 55 c0 callq *-0x40(%rbp) : * doing. They should have already acquired a heavyweight lock on : * this relation earlier in the processing of this same statement, so : * it wouldn't be appropriate to AcceptInvalidationMessages() here, as : * that might pull the rug out from under them. : */ : if (lockmode == NoLock) 0.00 : 4f0df6: 45 85 f6 test %r14d,%r14d 0.00 : 4f0df9: 0f 84 f1 00 00 00 je 4f0ef0 : * : * If we got a different OID, we've locked the relation that used to : * have this name rather than the one that does now. So release the : * lock. : */ : if (retry) 0.00 : 4f0dff: 45 84 ff test %r15b,%r15b 0.00 : 4f0e02: 74 12 je 4f0e16 : { : if (relId == oldRelId) 0.00 : 4f0e04: 44 39 e3 cmp %r12d,%ebx 0.00 : 4f0e07: 0f 84 e3 00 00 00 je 4f0ef0 : break; : if (OidIsValid(oldRelId)) 0.00 : 4f0e0d: 45 85 e4 test %r12d,%r12d 0.00 : 4f0e10: 0f 85 fa 00 00 00 jne 4f0f10 : * messages. If we got back InvalidOid, indicating not found, then : * there's nothing to lock, but we accept invalidation messages : * anyway, to flush any negative catcache entries that may be : * lingering. : */ : if (!OidIsValid(relId)) 0.00 : 4f0e16: 85 db test %ebx,%ebx 0.00 : 4f0e18: 0f 84 c2 00 00 00 je 4f0ee0 : AcceptInvalidationMessages(); : else if (!nowait) 0.00 : 4f0e1e: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) 0.00 : 4f0e22: 0f 84 48 ff ff ff je 4f0d70 : LockRelationOid(relId, lockmode); : else if (!ConditionalLockRelationOid(relId, lockmode)) 0.00 : 4f0e28: 44 89 f6 mov %r14d,%esi 0.00 : 4f0e2b: 89 df mov %ebx,%edi 0.00 : 4f0e2d: e8 ee 75 19 00 callq 688420 0.00 : 4f0e32: 84 c0 test %al,%al 0.00 : 4f0e34: 0f 85 40 ff ff ff jne 4f0d7a : { : if (relation->schemaname) 0.00 : 4f0e3a: 49 83 7d 10 00 cmpq $0x0,0x10(%r13) 0.00 : 4f0e3f: 0f 84 05 02 00 00 je 4f104a : ereport(ERROR, 0.00 : 4f0e45: 45 31 c0 xor %r8d,%r8d 0.00 : 4f0e48: b9 b0 30 7c 00 mov $0x7c30b0,%ecx 0.00 : 4f0e4d: ba 80 01 00 00 mov $0x180,%edx 0.00 : 4f0e52: be 33 76 7c 00 mov $0x7c7633,%esi 0.00 : 4f0e57: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4f0e5c: e8 5f 9c 28 00 callq 77aac0 0.00 : 4f0e61: 84 c0 test %al,%al 0.00 : 4f0e63: 0f 84 f2 00 00 00 je 4f0f5b 0.00 : 4f0e69: 49 8b 55 18 mov 0x18(%r13),%rdx 0.00 : 4f0e6d: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 4f0e71: bf 10 2c 7c 00 mov $0x7c2c10,%edi 0.00 : 4f0e76: 31 c0 xor %eax,%eax 0.00 : 4f0e78: e8 23 ba 28 00 callq 77c8a0 0.00 : 4f0e7d: bf 45 01 02 03 mov $0x3020145,%edi 0.00 : 4f0e82: 89 c3 mov %eax,%ebx 0.00 : 4f0e84: e9 f2 00 00 00 jmpq 4f0f7b 0.00 : 4f0e89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * operation, which must be careful to find the temp table, even when : * pg_temp is not first in the search path. : */ : if (relation->relpersistence == RELPERSISTENCE_TEMP) : { : if (!OidIsValid(myTempNamespace)) 0.00 : 4f0e90: 8b 1d 02 88 68 00 mov 0x688802(%rip),%ebx # b79698 0.00 : 4f0e96: 85 db test %ebx,%ebx 0.00 : 4f0e98: 74 3e je 4f0ed8 : relId = InvalidOid; /* this probably can't happen? */ : else : { : if (relation->schemaname) 0.00 : 4f0e9a: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 4f0e9e: 48 85 ff test %rdi,%rdi 0.00 : 4f0ea1: 74 14 je 4f0eb7 : { : Oid namespaceId; : : namespaceId = LookupExplicitNamespace(relation->schemaname, missing_ok); 0.00 : 4f0ea3: 8b 75 b4 mov -0x4c(%rbp),%esi 0.00 : 4f0ea6: e8 05 e3 ff ff callq 4ef1b0 : : /* : * For missing_ok, allow a non-existant schema name to : * return InvalidOid. : */ : if (namespaceId != myTempNamespace) 0.00 : 4f0eab: 3b 05 e7 87 68 00 cmp 0x6887e7(%rip),%eax # b79698 0.00 : 4f0eb1: 0f 85 d6 00 00 00 jne 4f0f8d : ereport(ERROR, : (errcode(ERRCODE_INVALID_TABLE_DEFINITION), : errmsg("temporary tables cannot specify a schema name"))); : } : : relId = get_relname_relid(relation->relname, myTempNamespace); 0.00 : 4f0eb7: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 4f0ebb: 8b 35 d7 87 68 00 mov 0x6887d7(%rip),%esi # b79698 0.00 : 4f0ec1: e8 ba 35 28 00 callq 774480 0.00 : 4f0ec6: 89 c3 mov %eax,%ebx 0.00 : 4f0ec8: e9 13 ff ff ff jmpq 4f0de0 0.00 : 4f0ecd: 0f 1f 00 nopl (%rax) : { : Oid namespaceId; : : /* use exact schema given */ : namespaceId = LookupExplicitNamespace(relation->schemaname, missing_ok); : if (missing_ok && !OidIsValid(namespaceId)) 0.00 : 4f0ed0: 85 c0 test %eax,%eax 0.00 : 4f0ed2: 0f 85 f1 fe ff ff jne 4f0dc9 : relId = get_relname_relid(relation->relname, namespaceId); : } : else : { : /* search the namespace path */ : relId = RelnameGetRelid(relation->relname); 0.00 : 4f0ed8: 31 db xor %ebx,%ebx 0.00 : 4f0eda: e9 01 ff ff ff jmpq 4f0de0 0.00 : 4f0edf: 90 nop : * there's nothing to lock, but we accept invalidation messages : * anyway, to flush any negative catcache entries that may be : * lingering. : */ : if (!OidIsValid(relId)) : AcceptInvalidationMessages(); 0.00 : 4f0ee0: e8 2b 6c 27 00 callq 767b10 0.00 : 4f0ee5: e9 90 fe ff ff jmpq 4f0d7a 0.00 : 4f0eea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : retry = true; : oldRelId = relId; : } : : if (!OidIsValid(relId) && !missing_ok) 0.00 : 4f0ef0: 85 db test %ebx,%ebx 0.00 : 4f0ef2: 75 06 jne 4f0efa 0.00 : 4f0ef4: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4f0ef8: 74 36 je 4f0f30 : (errcode(ERRCODE_UNDEFINED_TABLE), : errmsg("relation \"%s\" does not exist", : relation->relname))); : } : return relId; : } 0.00 : 4f0efa: 48 83 c4 28 add $0x28,%rsp 0.00 : 4f0efe: 89 d8 mov %ebx,%eax 0.00 : 4f0f00: 5b pop %rbx 0.00 : 4f0f01: 41 5c pop %r12 0.00 : 4f0f03: 41 5d pop %r13 0.00 : 4f0f05: 41 5e pop %r14 0.00 : 4f0f07: 41 5f pop %r15 0.00 : 4f0f09: c9 leaveq 0.00 : 4f0f0a: c3 retq 0.00 : 4f0f0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (retry) : { : if (relId == oldRelId) : break; : if (OidIsValid(oldRelId)) : UnlockRelationOid(oldRelId, lockmode); 0.00 : 4f0f10: 44 89 f6 mov %r14d,%esi 0.00 : 4f0f13: 44 89 e7 mov %r12d,%edi 0.00 : 4f0f16: e8 a5 74 19 00 callq 6883c0 0.00 : 4f0f1b: e9 f6 fe ff ff jmpq 4f0e16 : relId = get_relname_relid(relation->relname, namespaceId); : } : else : { : /* search the namespace path */ : relId = RelnameGetRelid(relation->relname); 0.00 : 4f0f20: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 4f0f24: e8 27 fb ff ff callq 4f0a50 0.00 : 4f0f29: 89 c3 mov %eax,%ebx 0.00 : 4f0f2b: e9 b0 fe ff ff jmpq 4f0de0 : oldRelId = relId; : } : : if (!OidIsValid(relId) && !missing_ok) : { : if (relation->schemaname) 0.00 : 4f0f30: 49 83 7d 10 00 cmpq $0x0,0x10(%r13) 0.00 : 4f0f35: 0f 84 cf 00 00 00 je 4f100a : ereport(ERROR, 0.00 : 4f0f3b: 45 31 c0 xor %r8d,%r8d 0.00 : 4f0f3e: b9 b0 30 7c 00 mov $0x7c30b0,%ecx 0.00 : 4f0f43: ba 9d 01 00 00 mov $0x19d,%edx 0.00 : 4f0f48: be 33 76 7c 00 mov $0x7c7633,%esi 0.00 : 4f0f4d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4f0f52: e8 69 9b 28 00 callq 77aac0 0.00 : 4f0f57: 84 c0 test %al,%al 0.00 : 4f0f59: 75 05 jne 4f0f60 : (errcode(ERRCODE_UNDEFINED_TABLE), : errmsg("relation \"%s.%s\" does not exist", : relation->schemaname, relation->relname))); : else : ereport(ERROR, 0.00 : 4f0f5b: e8 70 85 f7 ff callq 4694d0 : } : : if (!OidIsValid(relId) && !missing_ok) : { : if (relation->schemaname) : ereport(ERROR, 0.00 : 4f0f60: 49 8b 55 18 mov 0x18(%r13),%rdx 0.00 : 4f0f64: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 4f0f68: bf 68 2c 7c 00 mov $0x7c2c68,%edi 0.00 : 4f0f6d: 31 c0 xor %eax,%eax 0.00 : 4f0f6f: e8 2c b9 28 00 callq 77c8a0 0.00 : 4f0f74: bf 84 00 02 01 mov $0x1020084,%edi 0.00 : 4f0f79: 89 c3 mov %eax,%ebx : (errcode(ERRCODE_UNDEFINED_TABLE), : errmsg("relation \"%s.%s\" does not exist", : relation->schemaname, relation->relname))); : else : ereport(ERROR, 0.00 : 4f0f7b: e8 d0 bd 28 00 callq 77cd50 0.00 : 4f0f80: 89 de mov %ebx,%esi 0.00 : 4f0f82: 89 c7 mov %eax,%edi 0.00 : 4f0f84: 31 c0 xor %eax,%eax 0.00 : 4f0f86: e8 55 96 28 00 callq 77a5e0 0.00 : 4f0f8b: eb ce jmp 4f0f5b : /* : * For missing_ok, allow a non-existant schema name to : * return InvalidOid. : */ : if (namespaceId != myTempNamespace) : ereport(ERROR, 0.00 : 4f0f8d: 45 31 c0 xor %r8d,%r8d 0.00 : 4f0f90: b9 b0 30 7c 00 mov $0x7c30b0,%ecx 0.00 : 4f0f95: ba 30 01 00 00 mov $0x130,%edx 0.00 : 4f0f9a: be 33 76 7c 00 mov $0x7c7633,%esi 0.00 : 4f0f9f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4f0fa4: e8 17 9b 28 00 callq 77aac0 0.00 : 4f0fa9: 84 c0 test %al,%al 0.00 : 4f0fab: 74 ae je 4f0f5b 0.00 : 4f0fad: bf e0 2b 7c 00 mov $0x7c2be0,%edi 0.00 : 4f0fb2: 31 c0 xor %eax,%eax 0.00 : 4f0fb4: e8 e7 b8 28 00 callq 77c8a0 0.00 : 4f0fb9: bf 84 00 06 06 mov $0x6060084,%edi 0.00 : 4f0fbe: 89 c3 mov %eax,%ebx 0.00 : 4f0fc0: eb b9 jmp 4f0f7b : * We check the catalog name and then ignore it. : */ : if (relation->catalogname) : { : if (strcmp(relation->catalogname, get_database_name(MyDatabaseId)) != 0) : ereport(ERROR, 0.00 : 4f0fc2: 45 31 c0 xor %r8d,%r8d 0.00 : 4f0fc5: b9 b0 30 7c 00 mov $0x7c30b0,%ecx 0.00 : 4f0fca: ba f9 00 00 00 mov $0xf9,%edx 0.00 : 4f0fcf: be 33 76 7c 00 mov $0x7c7633,%esi 0.00 : 4f0fd4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4f0fd9: e8 e2 9a 28 00 callq 77aac0 0.00 : 4f0fde: 84 c0 test %al,%al 0.00 : 4f0fe0: 0f 84 75 ff ff ff je 4f0f5b 0.00 : 4f0fe6: 49 8b 4d 18 mov 0x18(%r13),%rcx 0.00 : 4f0fea: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : 4f0fee: bf a8 27 7c 00 mov $0x7c27a8,%edi 0.00 : 4f0ff3: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 4f0ff7: 31 c0 xor %eax,%eax 0.00 : 4f0ff9: e8 a2 b8 28 00 callq 77c8a0 0.00 : 4f0ffe: bf 40 04 00 00 mov $0x440,%edi 0.00 : 4f1003: 89 c3 mov %eax,%ebx 0.00 : 4f1005: e9 71 ff ff ff jmpq 4f0f7b : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_TABLE), : errmsg("relation \"%s.%s\" does not exist", : relation->schemaname, relation->relname))); : else : ereport(ERROR, 0.00 : 4f100a: 45 31 c0 xor %r8d,%r8d 0.00 : 4f100d: b9 b0 30 7c 00 mov $0x7c30b0,%ecx 0.00 : 4f1012: ba a2 01 00 00 mov $0x1a2,%edx 0.00 : 4f1017: be 33 76 7c 00 mov $0x7c7633,%esi 0.00 : 4f101c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4f1021: e8 9a 9a 28 00 callq 77aac0 0.00 : 4f1026: 84 c0 test %al,%al 0.00 : 4f1028: 0f 84 2d ff ff ff je 4f0f5b 0.00 : 4f102e: 49 8b 75 18 mov 0x18(%r13),%rsi 0.00 : 4f1032: bf 22 26 7c 00 mov $0x7c2622,%edi 0.00 : 4f1037: 31 c0 xor %eax,%eax 0.00 : 4f1039: e8 62 b8 28 00 callq 77c8a0 0.00 : 4f103e: bf 84 00 02 01 mov $0x1020084,%edi 0.00 : 4f1043: 89 c3 mov %eax,%ebx 0.00 : 4f1045: e9 31 ff ff ff jmpq 4f0f7b : ereport(ERROR, : (errcode(ERRCODE_LOCK_NOT_AVAILABLE), : errmsg("could not obtain lock on relation \"%s.%s\"", : relation->schemaname, relation->relname))); : else : ereport(ERROR, 0.00 : 4f104a: 45 31 c0 xor %r8d,%r8d 0.00 : 4f104d: b9 b0 30 7c 00 mov $0x7c30b0,%ecx 0.00 : 4f1052: ba 85 01 00 00 mov $0x185,%edx 0.00 : 4f1057: be 33 76 7c 00 mov $0x7c7633,%esi 0.00 : 4f105c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4f1061: e8 5a 9a 28 00 callq 77aac0 0.00 : 4f1066: 84 c0 test %al,%al 0.00 : 4f1068: 0f 84 ed fe ff ff je 4f0f5b 0.00 : 4f106e: 49 8b 75 18 mov 0x18(%r13),%rsi 0.00 : 4f1072: bf 40 2c 7c 00 mov $0x7c2c40,%edi 0.00 : 4f1077: 31 c0 xor %eax,%eax 0.00 : 4f1079: e8 22 b8 28 00 callq 77c8a0 0.00 : 4f107e: bf 45 01 02 03 mov $0x3020145,%edi 0.00 : 4f1083: 89 c3 mov %eax,%ebx 0.00 : 4f1085: e9 f1 fe ff ff jmpq 4f0f7b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/aclchk.c:3951 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004f2f80 : : * Exported routine for examining a user's privileges for a namespace : */ : AclMode : pg_namespace_aclmask(Oid nsp_oid, Oid roleid, : AclMode mask, AclMaskHow how) : { 0.00 : 4f2f80: 55 push %rbp 0.00 : 4f2f81: 48 89 e5 mov %rsp,%rbp 0.00 : 4f2f84: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4f2f88: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 4f2f8c: 89 d3 mov %edx,%ebx 0.00 : 4f2f8e: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 4f2f92: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 4f2f96: 41 89 fd mov %edi,%r13d 0.00 : 4f2f99: 4c 89 7d f8 mov %r15,-0x8(%rbp) : bool isNull; : Acl *acl; : Oid ownerId; : : /* Superusers bypass all permission checking. */ : if (superuser_arg(roleid)) 0.00 : 4f2f9d: 89 f7 mov %esi,%edi : * Exported routine for examining a user's privileges for a namespace : */ : AclMode : pg_namespace_aclmask(Oid nsp_oid, Oid roleid, : AclMode mask, AclMaskHow how) : { 0.00 : 4f2f9f: 48 83 ec 40 sub $0x40,%rsp 0.00 : 4f2fa3: 41 89 f4 mov %esi,%r12d 0.00 : 4f2fa6: 89 4d c0 mov %ecx,-0x40(%rbp) : bool isNull; : Acl *acl; : Oid ownerId; : : /* Superusers bypass all permission checking. */ : if (superuser_arg(roleid)) 0.00 : 4f2fa9: e8 02 3b 2a 00 callq 796ab0 /home/Computational/mark/src/postgres-andres/src/backend/catalog/aclchk.c:3951 100.00 : 4f2fae: 84 c0 test %al,%al 0.00 : 4f2fb0: 74 1e je 4f2fd0 : pfree(acl); : : ReleaseSysCache(tuple); : : return result; : } 0.00 : 4f2fb2: 89 d8 mov %ebx,%eax 0.00 : 4f2fb4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4f2fb8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4f2fbc: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4f2fc0: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4f2fc4: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4f2fc8: c9 leaveq 0.00 : 4f2fc9: c3 retq 0.00 : 4f2fca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * XXX Would it be safe to ereport a special error message as : * InitTempTableNamespace does? Returning zero here means we'll get a : * generic "permission denied for schema pg_temp_N" message, which is not : * remarkably user-friendly. : */ : if (isTempNamespace(nsp_oid)) 0.00 : 4f2fd0: 44 89 ef mov %r13d,%edi 0.00 : 4f2fd3: e8 88 99 ff ff callq 4ec960 0.00 : 4f2fd8: 84 c0 test %al,%al 0.00 : 4f2fda: 0f 85 a0 00 00 00 jne 4f3080 : } : : /* : * Get the schema's ACL from pg_namespace : */ : tuple = SearchSysCache1(NAMESPACEOID, ObjectIdGetDatum(nsp_oid)); 0.00 : 4f2fe0: 45 31 c0 xor %r8d,%r8d 0.00 : 4f2fe3: 31 c9 xor %ecx,%ecx 0.00 : 4f2fe5: 31 d2 xor %edx,%edx 0.00 : 4f2fe7: 44 89 ee mov %r13d,%esi 0.00 : 4f2fea: bf 24 00 00 00 mov $0x24,%edi 0.00 : 4f2fef: e8 cc ec 27 00 callq 771cc0 : if (!HeapTupleIsValid(tuple)) 0.00 : 4f2ff4: 48 85 c0 test %rax,%rax : } : : /* : * Get the schema's ACL from pg_namespace : */ : tuple = SearchSysCache1(NAMESPACEOID, ObjectIdGetDatum(nsp_oid)); 0.00 : 4f2ff7: 49 89 c7 mov %rax,%r15 : if (!HeapTupleIsValid(tuple)) 0.00 : 4f2ffa: 0f 84 bd 00 00 00 je 4f30bd : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_SCHEMA), : errmsg("schema with OID %u does not exist", nsp_oid))); : : ownerId = ((Form_pg_namespace) GETSTRUCT(tuple))->nspowner; 0.00 : 4f3000: 48 8b 40 10 mov 0x10(%rax),%rax : : aclDatum = SysCacheGetAttr(NAMESPACEOID, tuple, Anum_pg_namespace_nspacl, 0.00 : 4f3004: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 4f3008: 4c 89 fe mov %r15,%rsi 0.00 : 4f300b: bf 24 00 00 00 mov $0x24,%edi : if (!HeapTupleIsValid(tuple)) : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_SCHEMA), : errmsg("schema with OID %u does not exist", nsp_oid))); : : ownerId = ((Form_pg_namespace) GETSTRUCT(tuple))->nspowner; 0.00 : 4f3010: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 4f3014: 8b 54 10 40 mov 0x40(%rax,%rdx,1),%edx 0.00 : 4f3018: 89 55 c4 mov %edx,-0x3c(%rbp) : : aclDatum = SysCacheGetAttr(NAMESPACEOID, tuple, Anum_pg_namespace_nspacl, 0.00 : 4f301b: ba 03 00 00 00 mov $0x3,%edx 0.00 : 4f3020: e8 6b ea 27 00 callq 771a90 : &isNull); : if (isNull) 0.00 : 4f3025: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) : (errcode(ERRCODE_UNDEFINED_SCHEMA), : errmsg("schema with OID %u does not exist", nsp_oid))); : : ownerId = ((Form_pg_namespace) GETSTRUCT(tuple))->nspowner; : : aclDatum = SysCacheGetAttr(NAMESPACEOID, tuple, Anum_pg_namespace_nspacl, 0.00 : 4f3029: 49 89 c6 mov %rax,%r14 : &isNull); : if (isNull) 0.00 : 4f302c: 0f 84 7e 00 00 00 je 4f30b0 : { : /* No ACL, so build default ACL */ : acl = acldefault(ACL_OBJECT_NAMESPACE, ownerId); 0.00 : 4f3032: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 4f3035: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 4f303a: 45 31 f6 xor %r14d,%r14d 0.00 : 4f303d: e8 de 29 1c 00 callq 6b5a20 0.00 : 4f3042: 49 89 c5 mov %rax,%r13 : { : /* detoast ACL if necessary */ : acl = DatumGetAclP(aclDatum); : } : : result = aclmask(acl, roleid, ownerId, mask, how); 0.00 : 4f3045: 44 8b 45 c0 mov -0x40(%rbp),%r8d 0.00 : 4f3049: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 4f304c: 89 d9 mov %ebx,%ecx 0.00 : 4f304e: 44 89 e6 mov %r12d,%esi 0.00 : 4f3051: 4c 89 ef mov %r13,%rdi 0.00 : 4f3054: e8 f7 e7 1b 00 callq 6b1850 : : /* if we have a detoasted copy, free it */ : if (acl && (Pointer) acl != DatumGetPointer(aclDatum)) 0.00 : 4f3059: 4d 85 ed test %r13,%r13 : { : /* detoast ACL if necessary */ : acl = DatumGetAclP(aclDatum); : } : : result = aclmask(acl, roleid, ownerId, mask, how); 0.00 : 4f305c: 89 c3 mov %eax,%ebx : : /* if we have a detoasted copy, free it */ : if (acl && (Pointer) acl != DatumGetPointer(aclDatum)) 0.00 : 4f305e: 74 0d je 4f306d 0.00 : 4f3060: 4d 39 f5 cmp %r14,%r13 0.00 : 4f3063: 74 08 je 4f306d : pfree(acl); 0.00 : 4f3065: 4c 89 ef mov %r13,%rdi 0.00 : 4f3068: e8 13 5b 2a 00 callq 798b80 : : ReleaseSysCache(tuple); 0.00 : 4f306d: 4c 89 ff mov %r15,%rdi 0.00 : 4f3070: e8 3b ec 27 00 callq 771cb0 : : return result; : } 0.00 : 4f3075: e9 38 ff ff ff jmpq 4f2fb2 0.00 : 4f307a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * generic "permission denied for schema pg_temp_N" message, which is not : * remarkably user-friendly. : */ : if (isTempNamespace(nsp_oid)) : { : if (pg_database_aclcheck(MyDatabaseId, roleid, 0.00 : 4f3080: 8b 3d 22 70 6c 00 mov 0x6c7022(%rip),%edi # bba0a8 0.00 : 4f3086: ba 00 04 00 00 mov $0x400,%edx 0.00 : 4f308b: 44 89 e6 mov %r12d,%esi 0.00 : 4f308e: e8 ed fb ff ff callq 4f2c80 : ACL_CREATE_TEMP) == ACLCHECK_OK) : return mask & ACL_ALL_RIGHTS_NAMESPACE; 0.00 : 4f3093: 89 d9 mov %ebx,%ecx 0.00 : 4f3095: 89 da mov %ebx,%edx 0.00 : 4f3097: 81 e1 00 03 00 00 and $0x300,%ecx 0.00 : 4f309d: 81 e2 00 01 00 00 and $0x100,%edx 0.00 : 4f30a3: 85 c0 test %eax,%eax 0.00 : 4f30a5: 89 cb mov %ecx,%ebx 0.00 : 4f30a7: 0f 45 da cmovne %edx,%ebx 0.00 : 4f30aa: e9 03 ff ff ff jmpq 4f2fb2 0.00 : 4f30af: 90 nop : aclDatum = (Datum) 0; : } : else : { : /* detoast ACL if necessary */ : acl = DatumGetAclP(aclDatum); 0.00 : 4f30b0: 48 89 c7 mov %rax,%rdi 0.00 : 4f30b3: e8 58 bc 28 00 callq 77ed10 0.00 : 4f30b8: 49 89 c5 mov %rax,%r13 0.00 : 4f30bb: eb 88 jmp 4f3045 : /* : * Get the schema's ACL from pg_namespace : */ : tuple = SearchSysCache1(NAMESPACEOID, ObjectIdGetDatum(nsp_oid)); : if (!HeapTupleIsValid(tuple)) : ereport(ERROR, 0.00 : 4f30bd: 45 31 c0 xor %r8d,%r8d 0.00 : 4f30c0: b9 00 4a 7c 00 mov $0x7c4a00,%ecx 0.00 : 4f30c5: ba 95 0f 00 00 mov $0xf95,%edx 0.00 : 4f30ca: be c9 30 7c 00 mov $0x7c30c9,%esi 0.00 : 4f30cf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4f30d4: e8 e7 79 28 00 callq 77aac0 0.00 : 4f30d9: 84 c0 test %al,%al 0.00 : 4f30db: 75 05 jne 4f30e2 0.00 : 4f30dd: e8 ee 63 f7 ff callq 4694d0 0.00 : 4f30e2: 44 89 ee mov %r13d,%esi 0.00 : 4f30e5: bf c0 35 7c 00 mov $0x7c35c0,%edi 0.00 : 4f30ea: 31 c0 xor %eax,%eax 0.00 : 4f30ec: e8 af 97 28 00 callq 77c8a0 0.00 : 4f30f1: bf 83 05 00 00 mov $0x583,%edi 0.00 : 4f30f6: 89 c3 mov %eax,%ebx 0.00 : 4f30f8: e8 53 9c 28 00 callq 77cd50 0.00 : 4f30fd: 89 de mov %ebx,%esi 0.00 : 4f30ff: 89 c7 mov %eax,%edi 0.00 : 4f3101: 31 c0 xor %eax,%eax 0.00 : 4f3103: e8 d8 74 28 00 callq 77a5e0 0.00 : 4f3108: eb d3 jmp 4f30dd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/analyze.c:177 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000050c410 : : * of the parse tree, and so we only try it before entering the recursive : * transformStmt() processing. : */ : Query * : transformTopLevelStmt(ParseState *pstate, Node *parseTree) : { 0.00 : 50c410: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/parser/analyze.c:177 100.00 : 50c411: 48 89 e5 mov %rsp,%rbp 0.00 : 50c414: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 50c418: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 50c41c: 49 89 f4 mov %rsi,%r12 0.00 : 50c41f: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 50c423: 48 83 ec 20 sub $0x20,%rsp : if (IsA(parseTree, SelectStmt)) 0.00 : 50c427: 81 3e c1 02 00 00 cmpl $0x2c1,(%rsi) : * of the parse tree, and so we only try it before entering the recursive : * transformStmt() processing. : */ : Query * : transformTopLevelStmt(ParseState *pstate, Node *parseTree) : { 0.00 : 50c42d: 49 89 fd mov %rdi,%r13 : if (IsA(parseTree, SelectStmt)) 0.00 : 50c430: 74 1e je 50c450 : : parseTree = (Node *) ctas; : } : } : : return transformStmt(pstate, parseTree); 0.00 : 50c432: 4c 89 e6 mov %r12,%rsi 0.00 : 50c435: 4c 89 ef mov %r13,%rdi : } 0.00 : 50c438: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 50c43c: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 50c440: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 50c444: c9 leaveq : : parseTree = (Node *) ctas; : } : } : : return transformStmt(pstate, parseTree); 0.00 : 50c445: e9 66 e4 ff ff jmpq 50a8b0 0.00 : 50c44a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (IsA(parseTree, SelectStmt)) : { : SelectStmt *stmt = (SelectStmt *) parseTree; : : /* If it's a set-operation tree, drill down to leftmost SelectStmt */ : while (stmt && stmt->op != SETOP_NONE) 0.00 : 50c450: 8b 7e 78 mov 0x78(%rsi),%edi : Query * : transformTopLevelStmt(ParseState *pstate, Node *parseTree) : { : if (IsA(parseTree, SelectStmt)) : { : SelectStmt *stmt = (SelectStmt *) parseTree; 0.00 : 50c453: 48 89 f3 mov %rsi,%rbx : : /* If it's a set-operation tree, drill down to leftmost SelectStmt */ : while (stmt && stmt->op != SETOP_NONE) 0.00 : 50c456: 85 ff test %edi,%edi 0.00 : 50c458: 75 0d jne 50c467 0.00 : 50c45a: eb 17 jmp 50c473 0.00 : 50c45c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 50c460: 8b 73 78 mov 0x78(%rbx),%esi 0.00 : 50c463: 85 f6 test %esi,%esi 0.00 : 50c465: 74 0c je 50c473 : stmt = stmt->larg; 0.00 : 50c467: 48 8b 9b 80 00 00 00 mov 0x80(%rbx),%rbx : if (IsA(parseTree, SelectStmt)) : { : SelectStmt *stmt = (SelectStmt *) parseTree; : : /* If it's a set-operation tree, drill down to leftmost SelectStmt */ : while (stmt && stmt->op != SETOP_NONE) 0.00 : 50c46e: 48 85 db test %rbx,%rbx 0.00 : 50c471: 75 ed jne 50c460 : stmt = stmt->larg; : Assert(stmt && IsA(stmt, SelectStmt) &&stmt->larg == NULL); : : if (stmt->intoClause) 0.00 : 50c473: 48 83 7b 10 00 cmpq $0x0,0x10(%rbx) 0.00 : 50c478: 74 b8 je 50c432 : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 50c47a: 48 8b 3d df e3 6a 00 mov 0x6ae3df(%rip),%rdi # bba860 0.00 : 50c481: be 20 00 00 00 mov $0x20,%esi 0.00 : 50c486: e8 85 c9 28 00 callq 798e10 : : ctas->query = parseTree; 0.00 : 50c48b: 4c 89 60 08 mov %r12,0x8(%rax) : stmt = stmt->larg; : Assert(stmt && IsA(stmt, SelectStmt) &&stmt->larg == NULL); : : if (stmt->intoClause) : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 50c48f: 48 89 c6 mov %rax,%rsi 0.00 : 50c492: c7 00 e3 02 00 00 movl $0x2e3,(%rax) : : ctas->query = parseTree; : ctas->into = stmt->intoClause; 0.00 : 50c498: 48 8b 43 10 mov 0x10(%rbx),%rax : /* : * Remove the intoClause from the SelectStmt. This makes it safe : * for transformSelectStmt to complain if it finds intoClause set : * (implying that the INTO appeared in a disallowed place). : */ : stmt->intoClause = NULL; 0.00 : 50c49c: 49 89 f4 mov %rsi,%r12 : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : : ctas->query = parseTree; : ctas->into = stmt->intoClause; : ctas->relkind = OBJECT_TABLE; 0.00 : 50c49f: c7 46 18 1b 00 00 00 movl $0x1b,0x18(%rsi) : ctas->is_select_into = true; 0.00 : 50c4a6: c6 46 1c 01 movb $0x1,0x1c(%rsi) : if (stmt->intoClause) : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : : ctas->query = parseTree; : ctas->into = stmt->intoClause; 0.00 : 50c4aa: 48 89 46 10 mov %rax,0x10(%rsi) : /* : * Remove the intoClause from the SelectStmt. This makes it safe : * for transformSelectStmt to complain if it finds intoClause set : * (implying that the INTO appeared in a disallowed place). : */ : stmt->intoClause = NULL; 0.00 : 50c4ae: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 50c4b5: 00 0.00 : 50c4b6: e9 77 ff ff ff jmpq 50c432 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/scan.c:8988 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000050f090 : : YY_USER_ACTION : : /** The main scanner function which does all the work. : */ : YY_DECL : { 0.00 : 50f090: 55 push %rbp 0.00 : 50f091: 48 89 e5 mov %rsp,%rbp 0.00 : 50f094: 41 57 push %r15 0.00 : 50f096: 41 56 push %r14 0.00 : 50f098: 49 89 d6 mov %rdx,%r14 0.00 : 50f09b: 41 55 push %r13 0.00 : 50f09d: 41 54 push %r12 0.00 : 50f09f: 53 push %rbx 0.00 : 50f0a0: 48 83 ec 48 sub $0x48,%rsp : : yylval = yylval_param; : : yylloc = yylloc_param; : : if ( !yyg->yy_init ) 0.00 : 50f0a4: 8b 42 48 mov 0x48(%rdx),%eax : #line 386 "scan.l" : : : #line 8934 "scan.c" : : yylval = yylval_param; 0.00 : 50f0a7: 48 89 ba 90 00 00 00 mov %rdi,0x90(%rdx) : : yylloc = yylloc_param; 0.00 : 50f0ae: 48 89 b2 98 00 00 00 mov %rsi,0x98(%rdx) : : if ( !yyg->yy_init ) 0.00 : 50f0b5: 85 c0 test %eax,%eax 0.00 : 50f0b7: 75 77 jne 50f130 : : #ifdef YY_USER_INIT : YY_USER_INIT; : #endif : : if ( ! yyg->yy_start ) 0.00 : 50f0b9: 44 8b 7a 4c mov 0x4c(%rdx),%r15d : : yylloc = yylloc_param; : : if ( !yyg->yy_init ) : { : yyg->yy_init = 1; 0.00 : 50f0bd: c7 42 48 01 00 00 00 movl $0x1,0x48(%rdx) : : #ifdef YY_USER_INIT : YY_USER_INIT; : #endif : : if ( ! yyg->yy_start ) 0.00 : 50f0c4: 45 85 ff test %r15d,%r15d 0.00 : 50f0c7: 75 07 jne 50f0d0 : yyg->yy_start = 1; /* first start state */ 0.00 : 50f0c9: c7 42 4c 01 00 00 00 movl $0x1,0x4c(%rdx) : : if ( ! yyin ) 0.00 : 50f0d0: 49 83 7e 08 00 cmpq $0x0,0x8(%r14) 0.00 : 50f0d5: 0f 84 16 01 00 00 je 50f1f1 : yyin = stdin; : : if ( ! yyout ) 0.00 : 50f0db: 49 83 7e 10 00 cmpq $0x0,0x10(%r14) 0.00 : 50f0e0: 0f 84 1b 01 00 00 je 50f201 : yyout = stdout; : : if ( ! YY_CURRENT_BUFFER ) { 0.00 : 50f0e6: 49 8b 4e 28 mov 0x28(%r14),%rcx 0.00 : 50f0ea: 48 85 c9 test %rcx,%rcx 0.00 : 50f0ed: 0f 84 2b 01 00 00 je 50f21e 0.00 : 50f0f3: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 50f0f7: 48 8b 04 f9 mov (%rcx,%rdi,8),%rax 0.00 : 50f0fb: 48 85 c0 test %rax,%rax 0.00 : 50f0fe: 0f 84 1a 01 00 00 je 50f21e : } : : static void core_yy_load_buffer_state (yyscan_t yyscanner) : { : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 0.00 : 50f104: 8b 40 20 mov 0x20(%rax),%eax 0.00 : 50f107: 41 89 46 34 mov %eax,0x34(%r14) : yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 0.00 : 50f10b: 48 8b 04 f9 mov (%rcx,%rdi,8),%rax 0.00 : 50f10f: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 50f113: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50f117: 49 89 96 80 00 00 00 mov %rdx,0x80(%r14) : yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 0.00 : 50f11e: 48 8b 04 f9 mov (%rcx,%rdi,8),%rax 0.00 : 50f122: 48 8b 00 mov (%rax),%rax 0.00 : 50f125: 49 89 46 08 mov %rax,0x8(%r14) : yyg->yy_hold_char = *yyg->yy_c_buf_p; 0.00 : 50f129: 0f b6 02 movzbl (%rdx),%eax 0.00 : 50f12c: 41 88 46 30 mov %al,0x30(%r14) : while ( 1 ) /* loops until end-of-file is reached */ : { : yy_cp = yyg->yy_c_buf_p; : : /* Support of yytext. */ : *yy_cp = yyg->yy_hold_char; 0.00 : 50f130: 41 0f b6 76 30 movzbl 0x30(%r14),%esi : core_yy_load_buffer_state(yyscanner ); : } : : while ( 1 ) /* loops until end-of-file is reached */ : { : yy_cp = yyg->yy_c_buf_p; 0.00 : 50f135: 4d 8b 66 40 mov 0x40(%r14),%r12 : : /* Support of yytext. */ : *yy_cp = yyg->yy_hold_char; 0.00 : 50f139: 41 88 34 24 mov %sil,(%r12) : /* yy_bp points to the position in yy_ch_buf of the start of : * the current run. : */ : yy_bp = yy_cp; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 50f13d: 49 63 46 4c movslq 0x4c(%r14),%rax 0.00 : 50f141: 4c 89 65 a8 mov %r12,-0x58(%rbp) 0.00 : 50f145: 48 8b 0c c5 c0 e8 7c mov 0x7ce8c0(,%rax,8),%rcx 0.00 : 50f14c: 00 : register yyconst struct yy_trans_info *yy_trans_info; : : register YY_CHAR yy_c; : : for ( yy_c = YY_SC_TO_UI(*yy_cp); : (yy_trans_info = &yy_current_state[(unsigned int) yy_c])-> 0.00 : 50f14d: 40 0f b6 c6 movzbl %sil,%eax 0.00 : 50f151: 48 8d 14 c1 lea (%rcx,%rax,8),%rdx 0.00 : 50f155: 40 0f b6 c6 movzbl %sil,%eax 0.00 : 50f159: 39 02 cmp %eax,(%rdx) 0.00 : 50f15b: 75 22 jne 50f17f 0.00 : 50f15d: 0f 1f 00 nopl (%rax) : yy_verify == yy_c; : yy_c = YY_SC_TO_UI(*++yy_cp) ) : yy_current_state += yy_trans_info->yy_nxt; /home/Computational/mark/src/postgres-andres/src/backend/parser/scan.c:8988 100.00 : 50f160: 48 63 42 04 movslq 0x4(%rdx),%rax : register YY_CHAR yy_c; : : for ( yy_c = YY_SC_TO_UI(*yy_cp); : (yy_trans_info = &yy_current_state[(unsigned int) yy_c])-> : yy_verify == yy_c; : yy_c = YY_SC_TO_UI(*++yy_cp) ) 0.00 : 50f164: 49 83 c4 01 add $0x1,%r12 : yy_current_state += yy_trans_info->yy_nxt; 0.00 : 50f168: 48 8d 0c c1 lea (%rcx,%rax,8),%rcx : register YY_CHAR yy_c; : : for ( yy_c = YY_SC_TO_UI(*yy_cp); : (yy_trans_info = &yy_current_state[(unsigned int) yy_c])-> : yy_verify == yy_c; : yy_c = YY_SC_TO_UI(*++yy_cp) ) 0.00 : 50f16c: 41 0f b6 04 24 movzbl (%r12),%eax : register yyconst struct yy_trans_info *yy_trans_info; : : register YY_CHAR yy_c; : : for ( yy_c = YY_SC_TO_UI(*yy_cp); : (yy_trans_info = &yy_current_state[(unsigned int) yy_c])-> 0.00 : 50f171: 0f b6 d0 movzbl %al,%edx 0.00 : 50f174: 0f b6 c0 movzbl %al,%eax 0.00 : 50f177: 48 8d 14 d1 lea (%rcx,%rdx,8),%rdx 0.00 : 50f17b: 39 02 cmp %eax,(%rdx) 0.00 : 50f17d: 74 e1 je 50f160 : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - : number_to_move - 1; : : } : : if ( num_to_read > YY_READ_BUF_SIZE ) 0.00 : 50f17f: 41 ba 00 20 00 00 mov $0x2000,%r10d : } : : yy_find_action: : yy_act = yy_current_state[-1].yy_nxt; : : YY_DO_BEFORE_ACTION; 0.00 : 50f185: 48 8b 45 a8 mov -0x58(%rbp),%rax : yy_c = YY_SC_TO_UI(*++yy_cp) ) : yy_current_state += yy_trans_info->yy_nxt; : } : : yy_find_action: : yy_act = yy_current_state[-1].yy_nxt; 0.00 : 50f189: 8b 51 fc mov -0x4(%rcx),%edx : : YY_DO_BEFORE_ACTION; 0.00 : 50f18c: 45 89 e7 mov %r12d,%r15d 0.00 : 50f18f: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50f196: 89 45 a4 mov %eax,-0x5c(%rbp) 0.00 : 50f199: 44 89 e0 mov %r12d,%eax 0.00 : 50f19c: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50f19f: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50f1a3: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 50f1a8: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50f1ac: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 50f1b1: 4d 89 66 40 mov %r12,0x40(%r14) : : do_action: /* This label is used only to access EOF actions. */ : : switch ( yy_act ) 0.00 : 50f1b5: 83 fa 58 cmp $0x58,%edx 0.00 : 50f1b8: 76 16 jbe 50f1d0 : } : break; : } : : default: : YY_FATAL_ERROR( 0.00 : 50f1ba: 4c 89 f6 mov %r14,%rsi 0.00 : 50f1bd: bf 38 e5 7b 00 mov $0x7be538,%edi 0.00 : 50f1c2: e8 19 f0 ff ff callq 50e1e0 0.00 : 50f1c7: e9 64 ff ff ff jmpq 50f130 0.00 : 50f1cc: 0f 1f 40 00 nopl 0x0(%rax) : : YY_DO_BEFORE_ACTION; : : do_action: /* This label is used only to access EOF actions. */ : : switch ( yy_act ) 0.00 : 50f1d0: 89 d0 mov %edx,%eax 0.00 : 50f1d2: ff 24 c5 c0 a6 7c 00 jmpq *0x7ca6c0(,%rax,8) : } : {xddouble} { : addlitchar('"', yyscanner); : } : {xdinside} { : addlit(yytext, yyleng, yyscanner); 0.00 : 50f1d9: 41 8b 76 38 mov 0x38(%r14),%esi 0.00 : 50f1dd: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50f1e4: 4c 89 f2 mov %r14,%rdx 0.00 : 50f1e7: e8 14 ea ff ff callq 50dc00 : } : <> { yyerror("unterminated quoted identifier"); } 0.00 : 50f1ec: e9 3f ff ff ff jmpq 50f130 : : if ( ! yyg->yy_start ) : yyg->yy_start = 1; /* first start state */ : : if ( ! yyin ) : yyin = stdin; 0.00 : 50f1f1: 48 8b 05 20 36 66 00 mov 0x663620(%rip),%rax # b72818 0.00 : 50f1f8: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 50f1fc: e9 da fe ff ff jmpq 50f0db : : if ( ! yyout ) : yyout = stdout; 0.00 : 50f201: 48 8b 05 68 38 66 00 mov 0x663868(%rip),%rax # b72a70 0.00 : 50f208: 49 89 46 10 mov %rax,0x10(%r14) 0.00 : 50f20c: e9 d5 fe ff ff jmpq 50f0e6 : : BEGIN(xe); : } : . { yyerror("invalid Unicode surrogate pair"); } : \n { yyerror("invalid Unicode surrogate pair"); } : <> { yyerror("invalid Unicode surrogate pair"); } 0.00 : 50f211: 4c 89 f6 mov %r14,%rsi 0.00 : 50f214: bf 70 9a 7c 00 mov $0x7c9a70,%edi 0.00 : 50f219: e8 b2 ea ff ff callq 50dcd0 : : if ( ! YY_CURRENT_BUFFER ) { : core_yyensure_buffer_stack (yyscanner); 0.00 : 50f21e: 4c 89 f7 mov %r14,%rdi 0.00 : 50f221: e8 da f0 ff ff callq 50e300 : YY_CURRENT_BUFFER_LVALUE = 0.00 : 50f226: 49 8b 5e 18 mov 0x18(%r14),%rbx 0.00 : 50f22a: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 50f22e: 4c 89 f2 mov %r14,%rdx 0.00 : 50f231: be 00 40 00 00 mov $0x4000,%esi 0.00 : 50f236: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 50f23a: 49 03 5e 28 add 0x28(%r14),%rbx 0.00 : 50f23e: e8 0d f6 ff ff callq 50e850 0.00 : 50f243: 48 89 03 mov %rax,(%rbx) 0.00 : 50f246: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 50f24a: 49 8b 4e 28 mov 0x28(%r14),%rcx 0.00 : 50f24e: 48 8b 04 f9 mov (%rcx,%rdi,8),%rax 0.00 : 50f252: e9 ad fe ff ff jmpq 50f104 : * throw back the [Ee], and treat as {decimal}. Note : * that it is possible the input is actually {integer}, : * but since this case will almost certainly lead to a : * syntax error anyway, we don't bother to distinguish. : */ : yyless(yyleng-1); 0.00 : 50f257: 41 8b 46 38 mov 0x38(%r14),%eax 0.00 : 50f25b: 41 0f b6 56 30 movzbl 0x30(%r14),%edx 0.00 : 50f260: 83 e8 01 sub $0x1,%eax 0.00 : 50f263: 41 88 14 24 mov %dl,(%r12) 0.00 : 50f267: 48 98 cltq 0.00 : 50f269: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 50f26d: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : 50f271: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50f275: 49 89 8e 80 00 00 00 mov %rcx,0x80(%r14) : yylval->str = pstrdup(yytext); : return FCONST; : } : {realfail2} { : /* throw back the [Ee][+-], and proceed as above */ : yyless(yyleng-2); 0.00 : 50f27c: 89 c2 mov %eax,%edx 0.00 : 50f27e: 2b 55 a4 sub -0x5c(%rbp),%edx 0.00 : 50f281: 41 89 56 38 mov %edx,0x38(%r14) 0.00 : 50f285: 0f b6 10 movzbl (%rax),%edx 0.00 : 50f288: 41 88 56 30 mov %dl,0x30(%r14) 0.00 : 50f28c: c6 00 00 movb $0x0,(%rax) 0.00 : 50f28f: 49 89 46 40 mov %rax,0x40(%r14) : SET_YYLLOC(); 0.00 : 50f293: 49 8b 16 mov (%r14),%rdx 0.00 : 50f296: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f29d: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f2a4: 2b 02 sub (%rdx),%eax 0.00 : 50f2a6: 89 01 mov %eax,(%rcx) : yylval->str = pstrdup(yytext); 0.00 : 50f2a8: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx 0.00 : 50f2af: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50f2b6: e8 95 9c 28 00 callq 798f50 0.00 : 50f2bb: 48 89 03 mov %rax,(%rbx) 0.00 : 50f2be: bb 03 01 00 00 mov $0x103,%ebx 0.00 : 50f2c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : default: : YY_FATAL_ERROR( : "fatal flex scanner internal error--no action found" ); : } /* end of action switch */ : } /* end of scanning one token */ : } /* end of core_yylex */ 0.00 : 50f2c8: 48 83 c4 48 add $0x48,%rsp 0.00 : 50f2cc: 89 d8 mov %ebx,%eax 0.00 : 50f2ce: 5b pop %rbx 0.00 : 50f2cf: 41 5c pop %r12 0.00 : 50f2d1: 41 5d pop %r13 0.00 : 50f2d3: 41 5e pop %r14 0.00 : 50f2d5: 41 5f pop %r15 0.00 : 50f2d7: c9 leaveq 0.00 : 50f2d8: c3 retq : yylval->str = ident; : return IDENT; : } : : {other} { : SET_YYLLOC(); 0.00 : 50f2d9: 49 8b 16 mov (%r14),%rdx 0.00 : 50f2dc: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f2e3: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f2ea: 2b 02 sub (%rdx),%eax 0.00 : 50f2ec: 89 01 mov %eax,(%rcx) : return yytext[0]; 0.00 : 50f2ee: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f2f5: 0f be 18 movsbl (%rax),%ebx 0.00 : 50f2f8: eb ce jmp 50f2c8 : yylval->str = pstrdup(yytext); : return FCONST; : } : {decimalfail} { : /* throw back the .., and treat as integer */ : yyless(yyleng-2); 0.00 : 50f2fa: 41 8b 46 38 mov 0x38(%r14),%eax 0.00 : 50f2fe: 41 0f b6 56 30 movzbl 0x30(%r14),%edx 0.00 : 50f303: 83 e8 02 sub $0x2,%eax 0.00 : 50f306: 41 88 14 24 mov %dl,(%r12) 0.00 : 50f30a: 48 98 cltq 0.00 : 50f30c: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 50f310: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : 50f314: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f318: 49 89 96 80 00 00 00 mov %rdx,0x80(%r14) 0.00 : 50f31f: 89 c2 mov %eax,%edx 0.00 : 50f321: 2b 55 a4 sub -0x5c(%rbp),%edx 0.00 : 50f324: 41 89 56 38 mov %edx,0x38(%r14) 0.00 : 50f328: 0f b6 10 movzbl (%rax),%edx 0.00 : 50f32b: 41 88 56 30 mov %dl,0x30(%r14) 0.00 : 50f32f: c6 00 00 movb $0x0,(%rax) 0.00 : 50f332: 49 89 46 40 mov %rax,0x40(%r14) : SET_YYLLOC(); 0.00 : 50f336: 49 8b 16 mov (%r14),%rdx 0.00 : 50f339: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f340: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f347: 2b 02 sub (%rdx),%eax 0.00 : 50f349: 89 01 mov %eax,(%rcx) : return process_integer_literal(yytext, yylval); 0.00 : 50f34b: 49 8b b6 90 00 00 00 mov 0x90(%r14),%rsi 0.00 : 50f352: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50f359: 48 83 c4 48 add $0x48,%rsp 0.00 : 50f35d: 5b pop %rbx 0.00 : 50f35e: 41 5c pop %r12 0.00 : 50f360: 41 5d pop %r13 0.00 : 50f362: 41 5e pop %r14 0.00 : 50f364: 41 5f pop %r15 0.00 : 50f366: c9 leaveq 0.00 : 50f367: e9 94 fc ff ff jmpq 50f000 : yylval->str = pstrdup(yytext); : return Op; : } : : {param} { : SET_YYLLOC(); 0.00 : 50f36c: 49 8b 16 mov (%r14),%rdx 0.00 : 50f36f: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : return (int) strtol (__nptr, (char **) NULL, 10); : } : __extern_inline long int : __NTH (atol (__const char *__nptr)) : { : return strtol (__nptr, (char **) NULL, 10); 0.00 : 50f376: 31 f6 xor %esi,%esi 0.00 : 50f378: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f37f: 2b 02 sub (%rdx),%eax 0.00 : 50f381: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 50f386: 89 01 mov %eax,(%rcx) 0.00 : 50f388: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi : yylval->ival = atol(yytext + 1); 0.00 : 50f38f: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx 0.00 : 50f396: 48 83 c7 01 add $0x1,%rdi 0.00 : 50f39a: e8 f1 a7 f5 ff callq 469b90 0.00 : 50f39f: 89 03 mov %eax,(%rbx) 0.00 : 50f3a1: bb 09 01 00 00 mov $0x109,%ebx 0.00 : 50f3a6: e9 1d ff ff ff jmpq 50f2c8 : yyless(1); : /* and treat it as {other} */ : return yytext[0]; : } : {dolqdelim} { : if (strcmp(yytext, yyextra->dolqstart) == 0) 0.00 : 50f3ab: 49 8b 06 mov (%r14),%rax 0.00 : 50f3ae: 4d 8b ae 80 00 00 00 mov 0x80(%r14),%r13 0.00 : 50f3b5: 48 8b 58 38 mov 0x38(%rax),%rbx 0.00 : 50f3b9: 4c 89 ef mov %r13,%rdi 0.00 : 50f3bc: 48 89 de mov %rbx,%rsi 0.00 : 50f3bf: e8 6c a9 f5 ff callq 469d30 0.00 : 50f3c4: 85 c0 test %eax,%eax 0.00 : 50f3c6: 0f 84 19 14 00 00 je 5107e5 : /* : * When we fail to match $...$ to dolqstart, transfer : * the $... part to the output, but put back the final : * $ for rescanning. Consider $delim$...$junk$delim$ : */ : addlit(yytext, yyleng-1, yyscanner); 0.00 : 50f3cc: 41 8b 76 38 mov 0x38(%r14),%esi 0.00 : 50f3d0: 4c 89 f2 mov %r14,%rdx 0.00 : 50f3d3: 4c 89 ef mov %r13,%rdi 0.00 : 50f3d6: 83 ee 01 sub $0x1,%esi 0.00 : 50f3d9: e8 22 e8 ff ff callq 50dc00 : yyless(yyleng-1); 0.00 : 50f3de: 41 8b 46 38 mov 0x38(%r14),%eax 0.00 : 50f3e2: 41 0f b6 56 30 movzbl 0x30(%r14),%edx 0.00 : 50f3e7: 83 e8 01 sub $0x1,%eax 0.00 : 50f3ea: 41 88 14 24 mov %dl,(%r12) 0.00 : 50f3ee: 48 98 cltq 0.00 : 50f3f0: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 50f3f4: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : 50f3f8: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f3fc: 49 89 96 80 00 00 00 mov %rdx,0x80(%r14) 0.00 : 50f403: 89 c2 mov %eax,%edx 0.00 : 50f405: 2b 55 a4 sub -0x5c(%rbp),%edx 0.00 : 50f408: 41 89 56 38 mov %edx,0x38(%r14) 0.00 : 50f40c: 0f b6 10 movzbl (%rax),%edx 0.00 : 50f40f: 41 88 56 30 mov %dl,0x30(%r14) 0.00 : 50f413: c6 00 00 movb $0x0,(%rax) 0.00 : 50f416: 49 89 46 40 mov %rax,0x40(%r14) : } : } : {dolqinside} { 0.00 : 50f41a: e9 11 fd ff ff jmpq 50f130 : yyextra->dolqstart = pstrdup(yytext); : BEGIN(xdolq); : startlit(); : } : {dolqfailed} { : SET_YYLLOC(); 0.00 : 50f41f: 49 8b 16 mov (%r14),%rdx 0.00 : 50f422: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f429: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f430: 2b 02 sub (%rdx),%eax 0.00 : 50f432: 89 01 mov %eax,(%rcx) : /* throw back all but the initial "$" */ : yyless(1); 0.00 : 50f434: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50f439: 41 88 04 24 mov %al,(%r12) 0.00 : 50f43d: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f441: 48 83 c2 01 add $0x1,%rdx 0.00 : 50f445: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50f449: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50f44d: 89 d0 mov %edx,%eax 0.00 : 50f44f: 49 89 8e 80 00 00 00 mov %rcx,0x80(%r14) 0.00 : 50f456: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50f459: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50f45d: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 50f461: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50f465: c6 41 01 00 movb $0x0,0x1(%rcx) : /* and treat it as {other} */ : return yytext[0]; 0.00 : 50f469: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : startlit(); : } : {dolqfailed} { : SET_YYLLOC(); : /* throw back all but the initial "$" */ : yyless(1); 0.00 : 50f470: 49 89 56 40 mov %rdx,0x40(%r14) : /* and treat it as {other} */ : return yytext[0]; 0.00 : 50f474: 0f be 18 movsbl (%rax),%ebx 0.00 : 50f477: e9 4c fe ff ff jmpq 50f2c8 : addlitchar(yytext[0], yyscanner); : } : <> { yyerror("unterminated quoted string"); } : : {dolqdelim} { : SET_YYLLOC(); 0.00 : 50f47c: 49 8b 16 mov (%r14),%rdx 0.00 : 50f47f: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f486: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f48d: 2b 02 sub (%rdx),%eax 0.00 : 50f48f: 89 01 mov %eax,(%rcx) : yyextra->dolqstart = pstrdup(yytext); 0.00 : 50f491: 49 8b 1e mov (%r14),%rbx 0.00 : 50f494: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50f49b: e8 b0 9a 28 00 callq 798f50 0.00 : 50f4a0: 48 89 43 38 mov %rax,0x38(%rbx) : BEGIN(xdolq); : startlit(); 0.00 : 50f4a4: 49 8b 06 mov (%r14),%rax : <> { yyerror("unterminated quoted string"); } : : {dolqdelim} { : SET_YYLLOC(); : yyextra->dolqstart = pstrdup(yytext); : BEGIN(xdolq); 0.00 : 50f4a7: 41 c7 46 4c 0f 00 00 movl $0xf,0x4c(%r14) 0.00 : 50f4ae: 00 : startlit(); 0.00 : 50f4af: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : } : {dolqfailed} { 0.00 : 50f4b6: e9 75 fc ff ff jmpq 50f130 : {quotecontinue} { : /* ignore */ : } : . { : /* This is only needed for \ just before EOF */ : addlitchar(yytext[0], yyscanner); 0.00 : 50f4bb: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f4c2: 0f b6 38 movzbl (%rax),%edi 0.00 : 50f4c5: 4c 89 f6 mov %r14,%rsi 0.00 : 50f4c8: e8 c3 e5 ff ff callq 50da90 : } : <> { yyerror("unterminated quoted string"); } 0.00 : 50f4cd: e9 5e fc ff ff jmpq 50f130 : /* Put back any characters past slash-star; see above */ : yyless(2); : } : : {xcstop} { : if (yyextra->xcdepth <= 0) 0.00 : 50f4d2: 49 8b 16 mov (%r14),%rdx 0.00 : 50f4d5: 8b 42 30 mov 0x30(%rdx),%eax 0.00 : 50f4d8: 85 c0 test %eax,%eax 0.00 : 50f4da: 0f 8e 96 10 00 00 jle 510576 : BEGIN(INITIAL); : else : (yyextra->xcdepth)--; 0.00 : 50f4e0: 83 e8 01 sub $0x1,%eax 0.00 : 50f4e3: 89 42 30 mov %eax,0x30(%rdx) 0.00 : 50f4e6: e9 45 fc ff ff jmpq 50f130 : truncate_identifier(ident, identlen, true); : yylval->str = ident; : return IDENT; : } : {xddouble} { : addlitchar('"', yyscanner); 0.00 : 50f4eb: 4c 89 f6 mov %r14,%rsi 0.00 : 50f4ee: bf 22 00 00 00 mov $0x22,%edi 0.00 : 50f4f3: e8 98 e5 ff ff callq 50da90 : } : {xdinside} { 0.00 : 50f4f8: e9 33 fc ff ff jmpq 50f130 : /* Put back any characters past slash-star; see above */ : yyless(2); : } : : {xcstart} { : (yyextra->xcdepth)++; 0.00 : 50f4fd: 49 8b 06 mov (%r14),%rax 0.00 : 50f500: 83 40 30 01 addl $0x1,0x30(%rax) : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 50f504: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50f509: 41 88 04 24 mov %al,(%r12) 0.00 : 50f50d: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f511: 48 83 c2 02 add $0x2,%rdx 0.00 : 50f515: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50f519: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 50f51d: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50f524: 89 d0 mov %edx,%eax 0.00 : 50f526: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50f529: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50f52d: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50f531: 0f b6 41 02 movzbl 0x2(%rcx),%eax 0.00 : 50f535: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50f539: c6 41 02 00 movb $0x0,0x2(%rcx) 0.00 : 50f53d: 49 89 56 40 mov %rdx,0x40(%r14) : } : 0.00 : 50f541: e9 ea fb ff ff jmpq 50f130 : /* ignore */ : } : : {xcstart} { : /* Set location in case of syntax error in comment */ : SET_YYLLOC(); 0.00 : 50f546: 49 8b 16 mov (%r14),%rdx 0.00 : 50f549: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f550: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f557: 2b 02 sub (%rdx),%eax 0.00 : 50f559: 89 01 mov %eax,(%rcx) : yyextra->xcdepth = 0; 0.00 : 50f55b: 49 8b 06 mov (%r14),%rax 0.00 : 50f55e: c7 40 30 00 00 00 00 movl $0x0,0x30(%rax) : BEGIN(xc); : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 50f565: 41 0f b6 46 30 movzbl 0x30(%r14),%eax : : {xcstart} { : /* Set location in case of syntax error in comment */ : SET_YYLLOC(); : yyextra->xcdepth = 0; : BEGIN(xc); 0.00 : 50f56a: 41 c7 46 4c 05 00 00 movl $0x5,0x4c(%r14) 0.00 : 50f571: 00 : /* Put back any characters past slash-star; see above */ : yyless(2); 0.00 : 50f572: 41 88 04 24 mov %al,(%r12) 0.00 : 50f576: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f57a: 48 83 c2 02 add $0x2,%rdx 0.00 : 50f57e: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50f582: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50f586: 89 d0 mov %edx,%eax 0.00 : 50f588: 49 89 8e 80 00 00 00 mov %rcx,0x80(%r14) 0.00 : 50f58f: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50f592: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50f596: 0f b6 41 02 movzbl 0x2(%rcx),%eax 0.00 : 50f59a: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50f59e: c6 41 02 00 movb $0x0,0x2(%rcx) 0.00 : 50f5a2: 49 89 56 40 mov %rdx,0x40(%r14) : } : 0.00 : 50f5a6: e9 85 fb ff ff jmpq 50f130 : * Check for embedded slash-star or dash-dash; those : * are comment starts, so operator must stop there. : * Note that slash-star or dash-dash at the first : * character will match a prior rule, not this one. : */ : int nchars = yyleng; 0.00 : 50f5ab: 41 8b 46 38 mov 0x38(%r14),%eax : char *slashstar = strstr(yytext, "/*"); 0.00 : 50f5af: be a2 76 7c 00 mov $0x7c76a2,%esi : * Check for embedded slash-star or dash-dash; those : * are comment starts, so operator must stop there. : * Note that slash-star or dash-dash at the first : * character will match a prior rule, not this one. : */ : int nchars = yyleng; 0.00 : 50f5b4: 89 45 b4 mov %eax,-0x4c(%rbp) : char *slashstar = strstr(yytext, "/*"); 0.00 : 50f5b7: 4d 8b ae 80 00 00 00 mov 0x80(%r14),%r13 0.00 : 50f5be: 4c 89 ef mov %r13,%rdi 0.00 : 50f5c1: e8 ea a4 f5 ff callq 469ab0 : char *dashdash = strstr(yytext, "--"); 0.00 : 50f5c6: be 99 f8 7a 00 mov $0x7af899,%esi : * are comment starts, so operator must stop there. : * Note that slash-star or dash-dash at the first : * character will match a prior rule, not this one. : */ : int nchars = yyleng; : char *slashstar = strstr(yytext, "/*"); 0.00 : 50f5cb: 48 89 c3 mov %rax,%rbx : char *dashdash = strstr(yytext, "--"); 0.00 : 50f5ce: 4c 89 ef mov %r13,%rdi 0.00 : 50f5d1: e8 da a4 f5 ff callq 469ab0 : : if (slashstar && dashdash) 0.00 : 50f5d6: 48 85 db test %rbx,%rbx 0.00 : 50f5d9: 0f 84 c1 11 00 00 je 5107a0 0.00 : 50f5df: 48 85 c0 test %rax,%rax 0.00 : 50f5e2: 74 0c je 50f5f0 0.00 : 50f5e4: 48 39 c3 cmp %rax,%rbx 0.00 : 50f5e7: 48 0f 47 d8 cmova %rax,%rbx : if (slashstar > dashdash) : slashstar = dashdash; : } : else if (!slashstar) : slashstar = dashdash; : if (slashstar) 0.00 : 50f5eb: 48 85 db test %rbx,%rbx 0.00 : 50f5ee: 74 06 je 50f5f6 : nchars = slashstar - yytext; 0.00 : 50f5f0: 44 29 eb sub %r13d,%ebx 0.00 : 50f5f3: 89 5d b4 mov %ebx,-0x4c(%rbp) : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 50f5f6: 83 7d b4 01 cmpl $0x1,-0x4c(%rbp) 0.00 : 50f5fa: 7e 24 jle 50f620 0.00 : 50f5fc: 48 63 45 b4 movslq -0x4c(%rbp),%rax 0.00 : 50f600: 41 0f b6 44 05 ff movzbl -0x1(%r13,%rax,1),%eax 0.00 : 50f606: 3c 2b cmp $0x2b,%al 0.00 : 50f608: 0f 84 f0 0a 00 00 je 5100fe 0.00 : 50f60e: 3c 2d cmp $0x2d,%al 0.00 : 50f610: 0f 84 e8 0a 00 00 je 5100fe 0.00 : 50f616: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 50f61d: 00 00 00 : if (ic >= 0) : break; /* found a char that makes it OK */ : nchars--; /* else remove the +/-, and check again */ : } : : SET_YYLLOC(); 0.00 : 50f620: 49 8b 16 mov (%r14),%rdx 0.00 : 50f623: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 50f62a: 44 2b 2a sub (%rdx),%r13d 0.00 : 50f62d: 44 89 28 mov %r13d,(%rax) : : if (nchars < yyleng) 0.00 : 50f630: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 50f633: 41 3b 56 38 cmp 0x38(%r14),%edx 0.00 : 50f637: 7d 40 jge 50f679 : { : /* Strip the unwanted chars from the token */ : yyless(nchars); 0.00 : 50f639: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50f63e: 41 88 04 24 mov %al,(%r12) 0.00 : 50f642: 48 63 c2 movslq %edx,%rax 0.00 : 50f645: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 50f649: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : 50f64d: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50f651: 89 c2 mov %eax,%edx 0.00 : 50f653: 49 89 8e 80 00 00 00 mov %rcx,0x80(%r14) 0.00 : 50f65a: 2b 55 a4 sub -0x5c(%rbp),%edx 0.00 : 50f65d: 41 89 56 38 mov %edx,0x38(%r14) 0.00 : 50f661: 0f b6 10 movzbl (%rax),%edx 0.00 : 50f664: 41 88 56 30 mov %dl,0x30(%r14) 0.00 : 50f668: c6 00 00 movb $0x0,(%rax) 0.00 : 50f66b: 49 89 46 40 mov %rax,0x40(%r14) : * If what we have left is only one char, and it's : * one of the characters matching "self", then : * return it as a character token the same way : * that the "self" rule would have. : */ : if (nchars == 1 && 0.00 : 50f66f: 83 7d b4 01 cmpl $0x1,-0x4c(%rbp) 0.00 : 50f673: 0f 84 fa 10 00 00 je 510773 : * Complain if operator is too long. Unlike the case : * for identifiers, we make this an error not a notice- : * and-truncate, because the odds are we are looking at : * a syntactic mistake anyway. : */ : if (nchars >= NAMEDATALEN) 0.00 : 50f679: 83 7d b4 3f cmpl $0x3f,-0x4c(%rbp) 0.00 : 50f67d: 0f 8f d8 12 00 00 jg 51095b 0.00 : 50f683: 4d 8b a6 80 00 00 00 mov 0x80(%r14),%r12 : yyerror("operator too long"); : : /* Convert "!=" operator to "<>" for compatibility */ : if (strcmp(yytext, "!=") == 0) 0.00 : 50f68a: 41 80 3c 24 21 cmpb $0x21,(%r12) 0.00 : 50f68f: 0f 85 93 0c 00 00 jne 510328 0.00 : 50f695: 41 80 7c 24 01 3d cmpb $0x3d,0x1(%r12) 0.00 : 50f69b: 0f 85 87 0c 00 00 jne 510328 0.00 : 50f6a1: 41 80 7c 24 02 00 cmpb $0x0,0x2(%r12) 0.00 : 50f6a7: 0f 85 7b 0c 00 00 jne 510328 : yylval->str = pstrdup("<>"); 0.00 : 50f6ad: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx 0.00 : 50f6b4: bf d3 78 89 00 mov $0x8978d3,%edi 0.00 : 50f6b9: e8 92 98 28 00 callq 798f50 0.00 : 50f6be: 48 89 03 mov %rax,(%rbx) 0.00 : 50f6c1: bb 07 01 00 00 mov $0x107,%ebx 0.00 : 50f6c6: e9 fd fb ff ff jmpq 50f2c8 : : \*+ { : /* ignore */ : } : : <> { yyerror("unterminated /* comment"); } 0.00 : 50f6cb: 4c 89 f6 mov %r14,%rsi 0.00 : 50f6ce: bf 50 93 7c 00 mov $0x7c9350,%edi 0.00 : 50f6d3: e8 f8 e5 ff ff callq 50dcd0 : truncate_identifier(ident, yyextra->literallen, true); : yylval->str = ident; : return IDENT; : } : {dquote} { : yyless(1); 0.00 : 50f6d8: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50f6dd: 41 88 04 24 mov %al,(%r12) 0.00 : 50f6e1: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f6e5: 48 83 c2 01 add $0x1,%rdx 0.00 : 50f6e9: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50f6ed: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50f6f1: 89 d0 mov %edx,%eax 0.00 : 50f6f3: 49 89 8e 80 00 00 00 mov %rcx,0x80(%r14) 0.00 : 50f6fa: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50f6fd: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50f701: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 50f705: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50f709: c6 41 01 00 movb $0x0,0x1(%rcx) 0.00 : 50f70d: 49 89 56 40 mov %rdx,0x40(%r14) : /* xuiend state looks for possible UESCAPE */ : BEGIN(xuiend); 0.00 : 50f711: 41 c7 46 4c 13 00 00 movl $0x13,0x4c(%r14) 0.00 : 50f718: 00 : } : {whitespace} { /* stay in xuiend state over whitespace */ } 0.00 : 50f719: e9 12 fa ff ff jmpq 50f130 : } : {quotecontinue} | : {quotecontinue} { : /* ignore */ : } : <> { yyerror("unterminated bit string literal"); } 0.00 : 50f71e: 4c 89 f6 mov %r14,%rsi 0.00 : 50f721: bf 90 9a 7c 00 mov $0x7c9a90,%edi 0.00 : 50f726: e8 a5 e5 ff ff callq 50dcd0 : startlit(); : addlitchar('b', yyscanner); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 50f72b: 41 0f b6 46 30 movzbl 0x30(%r14),%eax : BEGIN(INITIAL); : yylval->str = litbufdup(yyscanner); 0.00 : 50f730: 4c 89 f7 mov %r14,%rdi : startlit(); : addlitchar('b', yyscanner); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 50f733: 41 88 04 24 mov %al,(%r12) 0.00 : 50f737: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f73b: 48 83 c2 01 add $0x1,%rdx 0.00 : 50f73f: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50f743: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 50f747: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50f74e: 89 d0 mov %edx,%eax 0.00 : 50f750: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50f753: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50f757: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50f75b: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 50f75f: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50f763: c6 41 01 00 movb $0x0,0x1(%rcx) : BEGIN(INITIAL); : yylval->str = litbufdup(yyscanner); 0.00 : 50f767: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx : startlit(); : addlitchar('b', yyscanner); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 50f76e: 49 89 56 40 mov %rdx,0x40(%r14) : BEGIN(INITIAL); 0.00 : 50f772: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 50f779: 00 : yylval->str = litbufdup(yyscanner); 0.00 : 50f77a: e8 21 e4 ff ff callq 50dba0 0.00 : 50f77f: 48 89 03 mov %rax,(%rbx) 0.00 : 50f782: bb 05 01 00 00 mov $0x105,%ebx 0.00 : 50f787: e9 3c fb ff ff jmpq 50f2c8 : * At some point we should simply pass the string : * forward to the parser and label it there. : * In the meantime, place a leading "b" on the string : * to mark it for the input routine as a binary string. : */ : SET_YYLLOC(); 0.00 : 50f78c: 49 8b 16 mov (%r14),%rdx 0.00 : 50f78f: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : BEGIN(xb); : startlit(); : addlitchar('b', yyscanner); 0.00 : 50f796: 4c 89 f6 mov %r14,%rsi : * At some point we should simply pass the string : * forward to the parser and label it there. : * In the meantime, place a leading "b" on the string : * to mark it for the input routine as a binary string. : */ : SET_YYLLOC(); 0.00 : 50f799: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx : BEGIN(xb); : startlit(); : addlitchar('b', yyscanner); 0.00 : 50f7a0: bf 62 00 00 00 mov $0x62,%edi : * At some point we should simply pass the string : * forward to the parser and label it there. : * In the meantime, place a leading "b" on the string : * to mark it for the input routine as a binary string. : */ : SET_YYLLOC(); 0.00 : 50f7a5: 2b 02 sub (%rdx),%eax 0.00 : 50f7a7: 89 01 mov %eax,(%rcx) : BEGIN(xb); : startlit(); 0.00 : 50f7a9: 49 8b 06 mov (%r14),%rax : * forward to the parser and label it there. : * In the meantime, place a leading "b" on the string : * to mark it for the input routine as a binary string. : */ : SET_YYLLOC(); : BEGIN(xb); 0.00 : 50f7ac: 41 c7 46 4c 03 00 00 movl $0x3,0x4c(%r14) 0.00 : 50f7b3: 00 : startlit(); 0.00 : 50f7b4: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : addlitchar('b', yyscanner); 0.00 : 50f7bb: e8 d0 e2 ff ff callq 50da90 : } : {quotestop} | 0.00 : 50f7c0: e9 6b f9 ff ff jmpq 50f130 : } : . { : /* This is only needed for $ inside the quoted text */ : addlitchar(yytext[0], yyscanner); : } : <> { yyerror("unterminated dollar-quoted string"); } 0.00 : 50f7c5: 4c 89 f6 mov %r14,%rsi 0.00 : 50f7c8: bf 30 9d 7c 00 mov $0x7c9d30,%edi 0.00 : 50f7cd: e8 fe e4 ff ff callq 50dcd0 : /* found UESCAPE after the end quote */ : char *ident; : int identlen; : : BEGIN(INITIAL); : if (yyextra->literallen == 0) 0.00 : 50f7d2: 49 8b 06 mov (%r14),%rax : {xustop2} { : /* found UESCAPE after the end quote */ : char *ident; : int identlen; : : BEGIN(INITIAL); 0.00 : 50f7d5: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 50f7dc: 00 : if (yyextra->literallen == 0) 0.00 : 50f7dd: 8b 58 28 mov 0x28(%rax),%ebx 0.00 : 50f7e0: 85 db test %ebx,%ebx 0.00 : 50f7e2: 0f 84 fa 11 00 00 je 5109e2 : yyerror("zero-length delimited identifier"); : if (!check_uescapechar(yytext[yyleng-2])) 0.00 : 50f7e8: 49 63 56 38 movslq 0x38(%r14),%rdx 0.00 : 50f7ec: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f7f3: 0f b6 7c 10 fe movzbl -0x2(%rax,%rdx,1),%edi 0.00 : 50f7f8: e8 a3 f7 ff ff callq 50efa0 0.00 : 50f7fd: 84 c0 test %al,%al 0.00 : 50f7ff: 0f 84 ab 11 00 00 je 5109b0 : { : SET_YYLLOC(); : ADVANCE_YYLLOC(yyleng-2); : yyerror("invalid Unicode escape character"); : } : ident = litbuf_udeescape(yytext[yyleng - 2], yyscanner); 0.00 : 50f805: 49 63 46 38 movslq 0x38(%r14),%rax 0.00 : 50f809: 49 8b 96 80 00 00 00 mov 0x80(%r14),%rdx 0.00 : 50f810: 4c 89 f6 mov %r14,%rsi 0.00 : 50f813: 0f b6 7c 02 fe movzbl -0x2(%rdx,%rax,1),%edi 0.00 : 50f818: e8 73 f3 ff ff callq 50eb90 : identlen = strlen(ident); 0.00 : 50f81d: 48 89 c7 mov %rax,%rdi : { : SET_YYLLOC(); : ADVANCE_YYLLOC(yyleng-2); : yyerror("invalid Unicode escape character"); : } : ident = litbuf_udeescape(yytext[yyleng - 2], yyscanner); 0.00 : 50f820: 48 89 c3 mov %rax,%rbx : identlen = strlen(ident); 0.00 : 50f823: e8 28 a0 f5 ff callq 469850 : if (identlen >= NAMEDATALEN) 0.00 : 50f828: 83 f8 3f cmp $0x3f,%eax 0.00 : 50f82b: 7f 7a jg 50f8a7 : truncate_identifier(ident, identlen, true); : yylval->str = ident; 0.00 : 50f82d: 49 8b 86 90 00 00 00 mov 0x90(%r14),%rax 0.00 : 50f834: 48 89 18 mov %rbx,(%rax) 0.00 : 50f837: bb 02 01 00 00 mov $0x102,%ebx 0.00 : 50f83c: e9 87 fa ff ff jmpq 50f2c8 : <> { : /* no UESCAPE after the quote, throw back everything */ : char *ident; : int identlen; : : yyless(0); 0.00 : 50f841: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50f846: 41 88 04 24 mov %al,(%r12) 0.00 : 50f84a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 50f84e: 41 c7 46 38 00 00 00 movl $0x0,0x38(%r14) 0.00 : 50f855: 00 0.00 : 50f856: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : 50f85a: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50f861: 48 89 c2 mov %rax,%rdx 0.00 : 50f864: 0f b6 00 movzbl (%rax),%eax 0.00 : 50f867: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50f86b: c6 02 00 movb $0x0,(%rdx) : : BEGIN(INITIAL); : if (yyextra->literallen == 0) 0.00 : 50f86e: 49 8b 06 mov (%r14),%rax : <> { : /* no UESCAPE after the quote, throw back everything */ : char *ident; : int identlen; : : yyless(0); 0.00 : 50f871: 49 89 56 40 mov %rdx,0x40(%r14) : : BEGIN(INITIAL); 0.00 : 50f875: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 50f87c: 00 : if (yyextra->literallen == 0) 0.00 : 50f87d: 44 8b 60 28 mov 0x28(%rax),%r12d 0.00 : 50f881: 45 85 e4 test %r12d,%r12d 0.00 : 50f884: 0f 84 58 11 00 00 je 5109e2 : yyerror("zero-length delimited identifier"); : ident = litbuf_udeescape('\\', yyscanner); 0.00 : 50f88a: 4c 89 f6 mov %r14,%rsi 0.00 : 50f88d: bf 5c 00 00 00 mov $0x5c,%edi 0.00 : 50f892: e8 f9 f2 ff ff callq 50eb90 : identlen = strlen(ident); 0.00 : 50f897: 48 89 c7 mov %rax,%rdi : yyless(0); : : BEGIN(INITIAL); : if (yyextra->literallen == 0) : yyerror("zero-length delimited identifier"); : ident = litbuf_udeescape('\\', yyscanner); 0.00 : 50f89a: 48 89 c3 mov %rax,%rbx : identlen = strlen(ident); 0.00 : 50f89d: e8 ae 9f f5 ff callq 469850 : if (identlen >= NAMEDATALEN) 0.00 : 50f8a2: 83 f8 3f cmp $0x3f,%eax 0.00 : 50f8a5: 7e 86 jle 50f82d : yyerror("invalid Unicode escape character"); : } : ident = litbuf_udeescape(yytext[yyleng - 2], yyscanner); : identlen = strlen(ident); : if (identlen >= NAMEDATALEN) : truncate_identifier(ident, identlen, true); 0.00 : 50f8a7: ba 01 00 00 00 mov $0x1,%edx 0.00 : 50f8ac: 89 c6 mov %eax,%esi 0.00 : 50f8ae: 48 89 df mov %rbx,%rdi 0.00 : 50f8b1: e8 4a 85 03 00 callq 547e00 0.00 : 50f8b6: e9 72 ff ff ff jmpq 50f82d : } : {xdstop} { : char *ident; : : BEGIN(INITIAL); : if (yyextra->literallen == 0) 0.00 : 50f8bb: 49 8b 06 mov (%r14),%rax : startlit(); : } : {xdstop} { : char *ident; : : BEGIN(INITIAL); 0.00 : 50f8be: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 50f8c5: 00 : if (yyextra->literallen == 0) 0.00 : 50f8c6: 44 8b 68 28 mov 0x28(%rax),%r13d 0.00 : 50f8ca: 45 85 ed test %r13d,%r13d 0.00 : 50f8cd: 0f 84 0f 11 00 00 je 5109e2 : yyerror("zero-length delimited identifier"); : ident = litbufdup(yyscanner); 0.00 : 50f8d3: 4c 89 f7 mov %r14,%rdi 0.00 : 50f8d6: e8 c5 e2 ff ff callq 50dba0 0.00 : 50f8db: 48 89 c3 mov %rax,%rbx : if (yyextra->literallen >= NAMEDATALEN) 0.00 : 50f8de: 49 8b 06 mov (%r14),%rax 0.00 : 50f8e1: 8b 70 28 mov 0x28(%rax),%esi 0.00 : 50f8e4: 83 fe 3f cmp $0x3f,%esi 0.00 : 50f8e7: 0f 8e 40 ff ff ff jle 50f82d : truncate_identifier(ident, yyextra->literallen, true); 0.00 : 50f8ed: ba 01 00 00 00 mov $0x1,%edx 0.00 : 50f8f2: 48 89 df mov %rbx,%rdi 0.00 : 50f8f5: e8 06 85 03 00 callq 547e00 0.00 : 50f8fa: e9 2e ff ff ff jmpq 50f82d : SET_YYLLOC(); : BEGIN(xd); : startlit(); : } : {xuistart} { : SET_YYLLOC(); 0.00 : 50f8ff: 49 8b 16 mov (%r14),%rdx 0.00 : 50f902: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f909: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f910: 2b 02 sub (%rdx),%eax 0.00 : 50f912: 89 01 mov %eax,(%rcx) : BEGIN(xui); : startlit(); 0.00 : 50f914: 49 8b 06 mov (%r14),%rax : BEGIN(xd); : startlit(); : } : {xuistart} { : SET_YYLLOC(); : BEGIN(xui); 0.00 : 50f917: 41 c7 46 4c 11 00 00 movl $0x11,0x4c(%r14) 0.00 : 50f91e: 00 : startlit(); 0.00 : 50f91f: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : } : {xdstop} { 0.00 : 50f926: e9 05 f8 ff ff jmpq 50f130 : <> { : SET_YYLLOC(); : yyterminate(); : } : : %% 0.00 : 50f92b: 4c 89 f6 mov %r14,%rsi 0.00 : 50f92e: bf 42 e2 7b 00 mov $0x7be242,%edi 0.00 : 50f933: e8 a8 e8 ff ff callq 50e1e0 : 0.00 : 50f938: e9 f3 f7 ff ff jmpq 50f130 : addlitchar(yytext[0], yyscanner); : } : <> { yyerror("unterminated dollar-quoted string"); } : : {xdstart} { : SET_YYLLOC(); 0.00 : 50f93d: 49 8b 16 mov (%r14),%rdx 0.00 : 50f940: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f947: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f94e: 2b 02 sub (%rdx),%eax 0.00 : 50f950: 89 01 mov %eax,(%rcx) : BEGIN(xd); : startlit(); 0.00 : 50f952: 49 8b 06 mov (%r14),%rax : } : <> { yyerror("unterminated dollar-quoted string"); } : : {xdstart} { : SET_YYLLOC(); : BEGIN(xd); 0.00 : 50f955: 41 c7 46 4c 07 00 00 movl $0x7,0x4c(%r14) 0.00 : 50f95c: 00 : startlit(); 0.00 : 50f95d: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : } : {xuistart} { 0.00 : 50f964: e9 c7 f7 ff ff jmpq 50f130 : {dolqfailed} { : addlit(yytext, yyleng, yyscanner); : } : . { : /* This is only needed for $ inside the quoted text */ : addlitchar(yytext[0], yyscanner); 0.00 : 50f969: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f970: 4c 89 f6 mov %r14,%rsi 0.00 : 50f973: 0f b6 38 movzbl (%rax),%edi 0.00 : 50f976: e8 15 e1 ff ff callq 50da90 : } : <> { yyerror("unterminated dollar-quoted string"); } 0.00 : 50f97b: e9 b0 f7 ff ff jmpq 50f130 : } : . { yyerror("invalid Unicode surrogate pair"); } : \n { yyerror("invalid Unicode surrogate pair"); } : <> { yyerror("invalid Unicode surrogate pair"); } : {xeunicodefail} { : ereport(ERROR, 0.00 : 50f980: 45 31 c0 xor %r8d,%r8d 0.00 : 50f983: b9 98 e9 7c 00 mov $0x7ce998,%ecx 0.00 : 50f988: ba 6c 02 00 00 mov $0x26c,%edx 0.00 : 50f98d: be bb 92 7c 00 mov $0x7c92bb,%esi 0.00 : 50f992: bf 14 00 00 00 mov $0x14,%edi 0.00 : 50f997: e8 24 b1 26 00 callq 77aac0 0.00 : 50f99c: 84 c0 test %al,%al 0.00 : 50f99e: 0f 85 de 09 00 00 jne 510382 : if (yytext[1] == '\'') : { : if (backslash_quote == BACKSLASH_QUOTE_OFF || : (backslash_quote == BACKSLASH_QUOTE_SAFE_ENCODING && : PG_ENCODING_IS_CLIENT_ONLY(pg_get_client_encoding()))) : ereport(ERROR, 0.00 : 50f9a4: e8 27 9b f5 ff callq 4694d0 : yylval->str = pstrdup(yytext); : return FCONST; : } : {realfail2} { : /* throw back the [Ee][+-], and proceed as above */ : yyless(yyleng-2); 0.00 : 50f9a9: 41 8b 46 38 mov 0x38(%r14),%eax 0.00 : 50f9ad: 41 0f b6 56 30 movzbl 0x30(%r14),%edx 0.00 : 50f9b2: 83 e8 02 sub $0x2,%eax 0.00 : 50f9b5: 41 88 14 24 mov %dl,(%r12) 0.00 : 50f9b9: 48 98 cltq 0.00 : 50f9bb: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 50f9bf: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : 50f9c3: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50f9c7: 49 89 96 80 00 00 00 mov %rdx,0x80(%r14) 0.00 : 50f9ce: e9 a9 f8 ff ff jmpq 50f27c : : {identifier} { : const ScanKeyword *keyword; : char *ident; : : SET_YYLLOC(); 0.00 : 50f9d3: 49 8b 16 mov (%r14),%rdx 0.00 : 50f9d6: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50f9dd: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50f9e4: 2b 02 sub (%rdx),%eax 0.00 : 50f9e6: 89 01 mov %eax,(%rcx) : : /* Is it a keyword? */ : keyword = ScanKeywordLookup(yytext, 0.00 : 50f9e8: 49 8b 06 mov (%r14),%rax 0.00 : 50f9eb: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50f9f2: 8b 50 18 mov 0x18(%rax),%edx 0.00 : 50f9f5: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 50f9f9: e8 f2 aa 01 00 callq 52a4f0 : yyextra->keywords, : yyextra->num_keywords); : if (keyword != NULL) 0.00 : 50f9fe: 48 85 c0 test %rax,%rax : char *ident; : : SET_YYLLOC(); : : /* Is it a keyword? */ : keyword = ScanKeywordLookup(yytext, 0.00 : 50fa01: 49 89 c0 mov %rax,%r8 : yyextra->keywords, : yyextra->num_keywords); : if (keyword != NULL) 0.00 : 50fa04: 0f 84 54 03 00 00 je 50fd5e : { : yylval->keyword = keyword->name; 0.00 : 50fa0a: 49 8b 96 90 00 00 00 mov 0x90(%r14),%rdx 0.00 : 50fa11: 49 8b 00 mov (%r8),%rax 0.00 : 50fa14: 48 89 02 mov %rax,(%rdx) : return keyword->value; 0.00 : 50fa17: 41 0f bf 58 08 movswl 0x8(%r8),%ebx 0.00 : 50fa1c: e9 a7 f8 ff ff jmpq 50f2c8 : yyerror("invalid Unicode surrogate pair"); : else : addunicode(c, yyscanner); : } : {xeunicode} { : pg_wchar c = strtoul(yytext+2, NULL, 16); 0.00 : 50fa21: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50fa28: ba 10 00 00 00 mov $0x10,%edx 0.00 : 50fa2d: 31 f6 xor %esi,%esi 0.00 : 50fa2f: 48 83 c7 02 add $0x2,%rdi 0.00 : 50fa33: e8 a8 a6 f5 ff callq 46a0e0 0.00 : 50fa38: 89 c2 mov %eax,%edx : : if (!is_utf16_surrogate_second(c)) 0.00 : 50fa3a: 8d 82 00 24 ff ff lea -0xdc00(%rdx),%eax 0.00 : 50fa40: 3d ff 03 00 00 cmp $0x3ff,%eax 0.00 : 50fa45: 0f 87 c6 f7 ff ff ja 50f211 : yyerror("invalid Unicode surrogate pair"); : : c = surrogate_pair_to_codepoint(yyextra->utf16_first_part, c); : : addunicode(c, yyscanner); 0.00 : 50fa4b: 49 8b 06 mov (%r14),%rax : : static pg_wchar : surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second) : { : return ((first & 0x3FF) << 10) + 0x10000 + (second & 0x3FF); : } 0.00 : 50fa4e: 81 e2 ff 03 00 00 and $0x3ff,%edx : if (!is_utf16_surrogate_second(c)) : yyerror("invalid Unicode surrogate pair"); : : c = surrogate_pair_to_codepoint(yyextra->utf16_first_part, c); : : addunicode(c, yyscanner); 0.00 : 50fa54: 4c 89 f6 mov %r14,%rsi 0.00 : 50fa57: 8b 78 40 mov 0x40(%rax),%edi 0.00 : 50fa5a: 81 e7 ff 03 00 00 and $0x3ff,%edi 0.00 : 50fa60: c1 e7 0a shl $0xa,%edi 0.00 : 50fa63: 8d bc 3a 00 00 01 00 lea 0x10000(%rdx,%rdi,1),%edi 0.00 : 50fa6a: e8 91 f0 ff ff callq 50eb00 : : BEGIN(xe); 0.00 : 50fa6f: 41 c7 46 4c 0b 00 00 movl $0xb,0x4c(%r14) 0.00 : 50fa76: 00 : } : . { yyerror("invalid Unicode surrogate pair"); } 0.00 : 50fa77: e9 b4 f6 ff ff jmpq 50f130 : } : {xeinside} { : addlit(yytext, yyleng, yyscanner); : } : {xeunicode} { : pg_wchar c = strtoul(yytext+2, NULL, 16); 0.00 : 50fa7c: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50fa83: 31 f6 xor %esi,%esi 0.00 : 50fa85: ba 10 00 00 00 mov $0x10,%edx 0.00 : 50fa8a: 48 83 c7 02 add $0x2,%rdi 0.00 : 50fa8e: e8 4d a6 f5 ff callq 46a0e0 : : check_escape_warning(yyscanner); 0.00 : 50fa93: 4c 89 f7 mov %r14,%rdi : } : {xeinside} { : addlit(yytext, yyleng, yyscanner); : } : {xeunicode} { : pg_wchar c = strtoul(yytext+2, NULL, 16); 0.00 : 50fa96: 41 89 c4 mov %eax,%r12d 0.00 : 50fa99: 48 89 c3 mov %rax,%rbx : : check_escape_warning(yyscanner); 0.00 : 50fa9c: e8 2f ef ff ff callq 50e9d0 : : if (is_utf16_surrogate_first(c)) 0.00 : 50faa1: 41 8d 84 24 00 28 ff lea -0xd800(%r12),%eax 0.00 : 50faa8: ff 0.00 : 50faa9: 3d ff 03 00 00 cmp $0x3ff,%eax 0.00 : 50faae: 0f 87 5c 07 00 00 ja 510210 : { : yyextra->utf16_first_part = c; 0.00 : 50fab4: 49 8b 06 mov (%r14),%rax 0.00 : 50fab7: 89 58 40 mov %ebx,0x40(%rax) : BEGIN(xeu); 0.00 : 50faba: 41 c7 46 4c 19 00 00 movl $0x19,0x4c(%r14) 0.00 : 50fac1: 00 0.00 : 50fac2: e9 69 f6 ff ff jmpq 50f130 : #line 9892 "scan.c" : : case YY_END_OF_BUFFER: : { : /* Amount of text matched not including the EOB char. */ : int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; 0.00 : 50fac7: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50face: f7 d0 not %eax 0.00 : 50fad0: 44 01 f8 add %r15d,%eax 0.00 : 50fad3: 89 45 b8 mov %eax,-0x48(%rbp) : : /* Undo the effects of YY_DO_BEFORE_ACTION. */ : *yy_cp = yyg->yy_hold_char; 0.00 : 50fad6: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50fadb: 41 88 04 24 mov %al,(%r12) : YY_RESTORE_YY_MORE_OFFSET : : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 0.00 : 50fadf: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 50fae3: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 50fae7: 48 8b 34 fa mov (%rdx,%rdi,8),%rsi 0.00 : 50faeb: 44 8b 5e 3c mov 0x3c(%rsi),%r11d 0.00 : 50faef: 45 85 db test %r11d,%r11d 0.00 : 50faf2: 75 31 jne 50fb25 : * consistency between YY_CURRENT_BUFFER and our : * globals. Here is the right place to do so, because : * this is the first action (other than possibly a : * back-up) that will match for the new input source. : */ : yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 0.00 : 50faf4: 8b 46 20 mov 0x20(%rsi),%eax 0.00 : 50faf7: 41 89 46 34 mov %eax,0x34(%r14) : YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 0.00 : 50fafb: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 50faff: 48 8b 14 fa mov (%rdx,%rdi,8),%rdx 0.00 : 50fb03: 48 89 02 mov %rax,(%rdx) : YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 0.00 : 50fb06: 49 8b 56 18 mov 0x18(%r14),%rdx 0.00 : 50fb0a: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 50fb0e: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 50fb12: c7 40 3c 01 00 00 00 movl $0x1,0x3c(%rax) 0.00 : 50fb19: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 50fb1d: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 50fb21: 48 8b 34 fa mov (%rdx,%rdi,8),%rsi : * already have been incremented past the NUL character : * (since all states make transitions on EOB to the : * end-of-buffer state). Contrast this with the test : * in input(). : */ : if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) 0.00 : 50fb25: 4d 63 4e 34 movslq 0x34(%r14),%r9 0.00 : 50fb29: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 50fb2d: 49 8b 4e 40 mov 0x40(%r14),%rcx 0.00 : 50fb31: 4a 8d 04 0b lea (%rbx,%r9,1),%rax 0.00 : 50fb35: 48 39 c1 cmp %rax,%rcx 0.00 : 50fb38: 0f 86 93 0d 00 00 jbe 5108d1 : */ : static int yy_get_next_buffer (yyscan_t yyscanner) : { : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; : register char *source = yyg->yytext_ptr; 0.00 : 50fb3e: 4d 8b 86 80 00 00 00 mov 0x80(%r14),%r8 : register int number_to_move, i; : int ret_val; : : if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) 0.00 : 50fb45: 4a 8d 44 0b 01 lea 0x1(%rbx,%r9,1),%rax 0.00 : 50fb4a: 48 39 c1 cmp %rax,%rcx : */ : static int yy_get_next_buffer (yyscan_t yyscanner) : { : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; : register char *source = yyg->yytext_ptr; 0.00 : 50fb4d: 4d 89 c5 mov %r8,%r13 : register int number_to_move, i; : int ret_val; : : if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) 0.00 : 50fb50: 0f 87 fb 07 00 00 ja 510351 : YY_FATAL_ERROR( : "fatal flex scanner internal error--end of buffer missed" ); : : if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 0.00 : 50fb56: 44 8b 4e 38 mov 0x38(%rsi),%r9d 0.00 : 50fb5a: 45 85 c9 test %r9d,%r9d 0.00 : 50fb5d: 0f 85 d2 06 00 00 jne 510235 : { /* Don't try to fill the buffer, so this is an EOF. */ : if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) 0.00 : 50fb63: 49 2b 8e 80 00 00 00 sub 0x80(%r14),%rcx 0.00 : 50fb6a: 48 83 e9 01 sub $0x1,%rcx 0.00 : 50fb6e: 0f 84 12 0a 00 00 je 510586 : yy_cp = yyg->yy_c_buf_p; : yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; : goto yy_match; : : case EOB_ACT_LAST_MATCH: : yyg->yy_c_buf_p = 0.00 : 50fb74: 4d 63 66 34 movslq 0x34(%r14),%r12 : { : register yy_state_type yy_current_state; : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 50fb78: 49 63 46 4c movslq 0x4c(%r14),%rax : yy_cp = yyg->yy_c_buf_p; : yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; : goto yy_match; : : case EOB_ACT_LAST_MATCH: : yyg->yy_c_buf_p = 0.00 : 50fb7c: 4c 03 66 08 add 0x8(%rsi),%r12 : { : register yy_state_type yy_current_state; : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 50fb80: 48 8b 0c c5 c0 e8 7c mov 0x7ce8c0(,%rax,8),%rcx 0.00 : 50fb87: 00 : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 50fb88: 4d 39 c4 cmp %r8,%r12 : yy_cp = yyg->yy_c_buf_p; : yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; : goto yy_match; : : case EOB_ACT_LAST_MATCH: : yyg->yy_c_buf_p = 0.00 : 50fb8b: 4d 89 66 40 mov %r12,0x40(%r14) : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 50fb8f: 4c 89 45 a8 mov %r8,-0x58(%rbp) 0.00 : 50fb93: 0f 86 ec f5 ff ff jbe 50f185 0.00 : 50fb99: 4c 89 c2 mov %r8,%rdx : { : yy_current_state += yy_current_state[(*yy_cp ? YY_SC_TO_UI(*yy_cp) : 256)].yy_nxt; 0.00 : 50fb9c: 0f b6 32 movzbl (%rdx),%esi 0.00 : 50fb9f: b8 00 08 00 00 mov $0x800,%eax 0.00 : 50fba4: 40 84 f6 test %sil,%sil 0.00 : 50fba7: 74 08 je 50fbb1 0.00 : 50fba9: 40 0f b6 c6 movzbl %sil,%eax 0.00 : 50fbad: 48 c1 e0 03 shl $0x3,%rax 0.00 : 50fbb1: 48 63 44 01 04 movslq 0x4(%rcx,%rax,1),%rax : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 50fbb6: 48 83 c2 01 add $0x1,%rdx 0.00 : 50fbba: 49 39 d4 cmp %rdx,%r12 : { : yy_current_state += yy_current_state[(*yy_cp ? YY_SC_TO_UI(*yy_cp) : 256)].yy_nxt; 0.00 : 50fbbd: 48 8d 0c c1 lea (%rcx,%rax,8),%rcx : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 50fbc1: 77 d9 ja 50fb9c 0.00 : 50fbc3: e9 bd f5 ff ff jmpq 50f185 : BEGIN(xus); : startlit(); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 50fbc8: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50fbcd: 41 88 04 24 mov %al,(%r12) 0.00 : 50fbd1: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50fbd5: 48 83 c2 01 add $0x1,%rdx 0.00 : 50fbd9: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50fbdd: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 50fbe1: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50fbe8: 89 d0 mov %edx,%eax 0.00 : 50fbea: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50fbed: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50fbf1: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50fbf5: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 50fbf9: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50fbfd: c6 41 01 00 movb $0x0,0x1(%rcx) : BEGIN(INITIAL); : /* : * check that the data remains valid if it might have been : * made invalid by unescaping any chars. : */ : if (yyextra->saw_non_ascii) 0.00 : 50fc01: 49 8b 06 mov (%r14),%rax : BEGIN(xus); : startlit(); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 50fc04: 49 89 56 40 mov %rdx,0x40(%r14) : BEGIN(INITIAL); 0.00 : 50fc08: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 50fc0f: 00 : /* : * check that the data remains valid if it might have been : * made invalid by unescaping any chars. : */ : if (yyextra->saw_non_ascii) 0.00 : 50fc10: 80 78 45 00 cmpb $0x0,0x45(%rax) 0.00 : 50fc14: 74 0e je 50fc24 : pg_verifymbstr(yyextra->literalbuf, 0.00 : 50fc16: 8b 70 28 mov 0x28(%rax),%esi 0.00 : 50fc19: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 50fc1d: 31 d2 xor %edx,%edx 0.00 : 50fc1f: e8 7c bb 27 00 callq 78b7a0 : if (strcmp(yytext, yyextra->dolqstart) == 0) : { : pfree(yyextra->dolqstart); : yyextra->dolqstart = NULL; : BEGIN(INITIAL); : yylval->str = litbufdup(yyscanner); 0.00 : 50fc24: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx 0.00 : 50fc2b: 4c 89 f7 mov %r14,%rdi 0.00 : 50fc2e: e8 6d df ff ff callq 50dba0 0.00 : 50fc33: 48 89 03 mov %rax,(%rbx) 0.00 : 50fc36: bb 04 01 00 00 mov $0x104,%ebx : default: : YY_FATAL_ERROR( : "fatal flex scanner internal error--no action found" ); : } /* end of action switch */ : } /* end of scanning one token */ : } /* end of core_yylex */ 0.00 : 50fc3b: e9 88 f6 ff ff jmpq 50f2c8 : SET_YYLLOC(); : BEGIN(xe); : startlit(); : } : {xusstart} { : SET_YYLLOC(); 0.00 : 50fc40: 49 8b 0e mov (%r14),%rcx 0.00 : 50fc43: 49 8b 96 80 00 00 00 mov 0x80(%r14),%rdx 0.00 : 50fc4a: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 50fc51: 2b 11 sub (%rcx),%edx 0.00 : 50fc53: 89 10 mov %edx,(%rax) : if (!standard_conforming_strings) 0.00 : 50fc55: 80 3d 99 85 65 00 00 cmpb $0x0,0x658599(%rip) # b681f5 0.00 : 50fc5c: 0f 84 a3 0b 00 00 je 510805 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("unsafe use of string constant with Unicode escapes"), : errdetail("String constants with Unicode escapes cannot be used when standard_conforming_strings is off."), : lexer_errposition())); : BEGIN(xus); : startlit(); 0.00 : 50fc62: 49 8b 06 mov (%r14),%rax : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("unsafe use of string constant with Unicode escapes"), : errdetail("String constants with Unicode escapes cannot be used when standard_conforming_strings is off."), : lexer_errposition())); : BEGIN(xus); 0.00 : 50fc65: 41 c7 46 4c 15 00 00 movl $0x15,0x4c(%r14) 0.00 : 50fc6c: 00 : startlit(); 0.00 : 50fc6d: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : } : {quotestop} | 0.00 : 50fc74: e9 b7 f4 ff ff jmpq 50f130 : else : BEGIN(xe); : startlit(); : } : {xestart} { : yyextra->warn_on_first_escape = false; 0.00 : 50fc79: 49 8b 06 mov (%r14),%rax 0.00 : 50fc7c: c6 40 44 00 movb $0x0,0x44(%rax) : yyextra->saw_non_ascii = false; 0.00 : 50fc80: 49 8b 06 mov (%r14),%rax 0.00 : 50fc83: c6 40 45 00 movb $0x0,0x45(%rax) : SET_YYLLOC(); 0.00 : 50fc87: 49 8b 16 mov (%r14),%rdx 0.00 : 50fc8a: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50fc91: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50fc98: 2b 02 sub (%rdx),%eax 0.00 : 50fc9a: 89 01 mov %eax,(%rcx) : BEGIN(xe); : startlit(); 0.00 : 50fc9c: 49 8b 06 mov (%r14),%rax : } : {xestart} { : yyextra->warn_on_first_escape = false; : yyextra->saw_non_ascii = false; : SET_YYLLOC(); : BEGIN(xe); 0.00 : 50fc9f: 41 c7 46 4c 0b 00 00 movl $0xb,0x4c(%r14) 0.00 : 50fca6: 00 : startlit(); 0.00 : 50fca7: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : } : {xusstart} { 0.00 : 50fcae: e9 7d f4 ff ff jmpq 50f130 : SET_YYLLOC(); : return DOT_DOT; : } : : {colon_equals} { : SET_YYLLOC(); 0.00 : 50fcb3: 49 8b 0e mov (%r14),%rcx 0.00 : 50fcb6: 49 8b 96 80 00 00 00 mov 0x80(%r14),%rdx 0.00 : 50fcbd: bb 0c 01 00 00 mov $0x10c,%ebx 0.00 : 50fcc2: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 50fcc9: 2b 11 sub (%rcx),%edx 0.00 : 50fccb: 89 10 mov %edx,(%rax) 0.00 : 50fccd: e9 f6 f5 ff ff jmpq 50f2c8 : SET_YYLLOC(); : return TYPECAST; : } : : {dot_dot} { : SET_YYLLOC(); 0.00 : 50fcd2: 49 8b 0e mov (%r14),%rcx 0.00 : 50fcd5: 49 8b 96 80 00 00 00 mov 0x80(%r14),%rdx 0.00 : 50fcdc: bb 0b 01 00 00 mov $0x10b,%ebx 0.00 : 50fce1: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 50fce8: 2b 11 sub (%rcx),%edx 0.00 : 50fcea: 89 10 mov %edx,(%rax) 0.00 : 50fcec: e9 d7 f5 ff ff jmpq 50f2c8 : yylval->str = ident; : return IDENT; : } : : {typecast} { : SET_YYLLOC(); 0.00 : 50fcf1: 49 8b 0e mov (%r14),%rcx 0.00 : 50fcf4: 49 8b 96 80 00 00 00 mov 0x80(%r14),%rdx 0.00 : 50fcfb: bb 0a 01 00 00 mov $0x10a,%ebx 0.00 : 50fd00: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 50fd07: 2b 11 sub (%rcx),%edx 0.00 : 50fd09: 89 10 mov %edx,(%rax) 0.00 : 50fd0b: e9 b8 f5 ff ff jmpq 50f2c8 : <> { yyerror("unterminated quoted identifier"); } : : {xufailed} { : char *ident; : : SET_YYLLOC(); 0.00 : 50fd10: 49 8b 16 mov (%r14),%rdx 0.00 : 50fd13: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50fd1a: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50fd21: 2b 02 sub (%rdx),%eax 0.00 : 50fd23: 89 01 mov %eax,(%rcx) : /* throw back all but the initial u/U */ : yyless(1); 0.00 : 50fd25: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50fd2a: 41 88 04 24 mov %al,(%r12) 0.00 : 50fd2e: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50fd32: 48 83 c2 01 add $0x1,%rdx 0.00 : 50fd36: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50fd3a: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50fd3e: 89 d0 mov %edx,%eax 0.00 : 50fd40: 49 89 8e 80 00 00 00 mov %rcx,0x80(%r14) 0.00 : 50fd47: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50fd4a: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50fd4e: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 50fd52: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50fd56: c6 41 01 00 movb $0x0,0x1(%rcx) 0.00 : 50fd5a: 49 89 56 40 mov %rdx,0x40(%r14) : : /* : * No. Convert the identifier to lower case, and truncate : * if necessary. : */ : ident = downcase_truncate_identifier(yytext, yyleng, true); 0.00 : 50fd5e: 41 8b 76 38 mov 0x38(%r14),%esi 0.00 : 50fd62: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50fd69: ba 01 00 00 00 mov $0x1,%edx : yylval->str = ident; 0.00 : 50fd6e: bb 02 01 00 00 mov $0x102,%ebx : : /* : * No. Convert the identifier to lower case, and truncate : * if necessary. : */ : ident = downcase_truncate_identifier(yytext, yyleng, true); 0.00 : 50fd73: e8 48 81 03 00 callq 547ec0 : yylval->str = ident; 0.00 : 50fd78: 49 8b 96 90 00 00 00 mov 0x90(%r14),%rdx 0.00 : 50fd7f: 48 89 02 mov %rax,(%rdx) 0.00 : 50fd82: e9 41 f5 ff ff jmpq 50f2c8 : SET_YYLLOC(); : return yytext[0]; : } : : <> { : SET_YYLLOC(); 0.00 : 50fd87: 49 8b 0e mov (%r14),%rcx 0.00 : 50fd8a: 49 8b 96 80 00 00 00 mov 0x80(%r14),%rdx 0.00 : 50fd91: 31 db xor %ebx,%ebx 0.00 : 50fd93: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 50fd9a: 2b 11 sub (%rcx),%edx 0.00 : 50fd9c: 89 10 mov %edx,(%rax) 0.00 : 50fd9e: e9 25 f5 ff ff jmpq 50f2c8 : } : yylval->str = litbuf_udeescape(yytext[yyleng-2], yyscanner); : return SCONST; : } : {xqdouble} { : addlitchar('\'', yyscanner); 0.00 : 50fda3: 4c 89 f6 mov %r14,%rsi 0.00 : 50fda6: bf 27 00 00 00 mov $0x27,%edi 0.00 : 50fdab: e8 e0 dc ff ff callq 50da90 : } : {xqinside} { 0.00 : 50fdb0: e9 7b f3 ff ff jmpq 50f130 : addlitchar('"', yyscanner); : } : {xdinside} { : addlit(yytext, yyleng, yyscanner); : } : <> { yyerror("unterminated quoted identifier"); } 0.00 : 50fdb5: 4c 89 f6 mov %r14,%rsi 0.00 : 50fdb8: bf 80 9d 7c 00 mov $0x7c9d80,%edi 0.00 : 50fdbd: e8 0e df ff ff callq 50dcd0 : addlitchar(c, yyscanner); : if (c == '\0' || IS_HIGHBIT_SET(c)) : yyextra->saw_non_ascii = true; : } : {xehexesc} { : unsigned char c = strtoul(yytext+2, NULL, 16); 0.00 : 50fdc2: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50fdc9: ba 10 00 00 00 mov $0x10,%edx 0.00 : 50fdce: 48 83 c7 02 add $0x2,%rdi 0.00 : 50fdd2: 31 f6 xor %esi,%esi 0.00 : 50fdd4: e8 07 a3 f5 ff callq 46a0e0 : : check_escape_warning(yyscanner); 0.00 : 50fdd9: 4c 89 f7 mov %r14,%rdi : addlitchar(c, yyscanner); : if (c == '\0' || IS_HIGHBIT_SET(c)) : yyextra->saw_non_ascii = true; : } : {xehexesc} { : unsigned char c = strtoul(yytext+2, NULL, 16); 0.00 : 50fddc: 89 c3 mov %eax,%ebx : : check_escape_warning(yyscanner); 0.00 : 50fdde: e8 ed eb ff ff callq 50e9d0 : addlitchar(c, yyscanner); 0.00 : 50fde3: 0f b6 fb movzbl %bl,%edi 0.00 : 50fde6: 4c 89 f6 mov %r14,%rsi 0.00 : 50fde9: e8 a2 dc ff ff callq 50da90 : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 50fdee: 84 db test %bl,%bl 0.00 : 50fdf0: 0f 8f 3a f3 ff ff jg 50f130 : yyextra->saw_non_ascii = true; 0.00 : 50fdf6: 49 8b 06 mov (%r14),%rax 0.00 : 50fdf9: c6 40 45 01 movb $0x1,0x45(%rax) 0.00 : 50fdfd: e9 2e f3 ff ff jmpq 50f130 : check_string_escape_warning(yytext[1], yyscanner); : addlitchar(unescape_single_char(yytext[1], yyscanner), : yyscanner); : } : {xeoctesc} { : unsigned char c = strtoul(yytext+1, NULL, 8); 0.00 : 50fe02: 49 8b be 80 00 00 00 mov 0x80(%r14),%rdi 0.00 : 50fe09: ba 08 00 00 00 mov $0x8,%edx 0.00 : 50fe0e: 48 83 c7 01 add $0x1,%rdi 0.00 : 50fe12: eb be jmp 50fdd2 : errmsg("invalid Unicode escape"), : errhint("Unicode escapes must be \\uXXXX or \\UXXXXXXXX."), : lexer_errposition())); : } : {xeescape} { : if (yytext[1] == '\'') 0.00 : 50fe14: 4d 8b 86 80 00 00 00 mov 0x80(%r14),%r8 0.00 : 50fe1b: 41 80 78 01 27 cmpb $0x27,0x1(%r8) 0.00 : 50fe20: 0f 85 8f 03 00 00 jne 5101b5 : { : if (backslash_quote == BACKSLASH_QUOTE_OFF || 0.00 : 50fe26: 8b 05 c4 83 65 00 mov 0x6583c4(%rip),%eax # b681f0 0.00 : 50fe2c: 85 c0 test %eax,%eax 0.00 : 50fe2e: 0f 84 3e 0a 00 00 je 510872 0.00 : 50fe34: 83 f8 02 cmp $0x2,%eax 0.00 : 50fe37: 0f 84 62 03 00 00 je 51019f : check_string_escape_warning(unsigned char ychar, core_yyscan_t yyscanner) : { : if (ychar == '\'') : { : if (yyextra->warn_on_first_escape && escape_string_warning) : ereport(WARNING, 0.00 : 50fe3d: 49 8b 06 mov (%r14),%rax 0.00 : 50fe40: 80 78 44 00 cmpb $0x0,0x44(%rax) 0.00 : 50fe44: 74 0d je 50fe53 0.00 : 50fe46: 80 3d a7 83 65 00 00 cmpb $0x0,0x6583a7(%rip) # b681f4 0.00 : 50fe4d: 0f 85 dc 07 00 00 jne 51062f : (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), : errmsg("nonstandard use of \\\\ in a string literal"), : errhint("Use the escape string syntax for backslashes, e.g., E'\\\\'."), : lexer_errposition())); : yyextra->warn_on_first_escape = false; /* warn only once per string */ : } 0.00 : 50fe53: c6 40 44 00 movb $0x0,0x44(%rax) : errmsg("unsafe use of \\' in a string literal"), : errhint("Use '' to write quotes in strings. \\' is insecure in client-only encodings."), : lexer_errposition())); : } : check_string_escape_warning(yytext[1], yyscanner); : addlitchar(unescape_single_char(yytext[1], yyscanner), 0.00 : 50fe57: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50fe5e: 0f b6 50 01 movzbl 0x1(%rax),%edx : : static unsigned char : unescape_single_char(unsigned char c, core_yyscan_t yyscanner) : { : switch (c) : { 0.00 : 50fe62: 8d 42 9e lea -0x62(%rdx),%eax 0.00 : 50fe65: 3c 12 cmp $0x12,%al 0.00 : 50fe67: 0f 86 ee 02 00 00 jbe 51015b : case 't': : return '\t'; : default: : /* check for backslash followed by non-7-bit-ASCII */ : if (c == '\0' || IS_HIGHBIT_SET(c)) : yyextra->saw_non_ascii = true; 0.00 : 50fe6d: 84 d2 test %dl,%dl 0.00 : 50fe6f: 7f 07 jg 50fe78 : 0.00 : 50fe71: 49 8b 06 mov (%r14),%rax 0.00 : 50fe74: c6 40 45 01 movb $0x1,0x45(%rax) 0.00 : 50fe78: 0f b6 fa movzbl %dl,%edi 0.00 : 50fe7b: e9 45 f6 ff ff jmpq 50f4c5 : return SCONST; : } : {xustop2} { : /* found UESCAPE after the end quote */ : BEGIN(INITIAL); : if (!check_uescapechar(yytext[yyleng-2])) 0.00 : 50fe80: 49 63 56 38 movslq 0x38(%r14),%rdx 0.00 : 50fe84: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : yylval->str = litbuf_udeescape('\\', yyscanner); : return SCONST; : } : {xustop2} { : /* found UESCAPE after the end quote */ : BEGIN(INITIAL); 0.00 : 50fe8b: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 50fe92: 00 : if (!check_uescapechar(yytext[yyleng-2])) 0.00 : 50fe93: 0f b6 7c 10 fe movzbl -0x2(%rax,%rdx,1),%edi 0.00 : 50fe98: e8 03 f1 ff ff callq 50efa0 0.00 : 50fe9d: 84 c0 test %al,%al 0.00 : 50fe9f: 0f 84 0b 0b 00 00 je 5109b0 : { : SET_YYLLOC(); : ADVANCE_YYLLOC(yyleng-2); : yyerror("invalid Unicode escape character"); : } : yylval->str = litbuf_udeescape(yytext[yyleng-2], yyscanner); 0.00 : 50fea5: 49 63 56 38 movslq 0x38(%r14),%rdx 0.00 : 50fea9: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 50feb0: 4c 89 f6 mov %r14,%rsi 0.00 : 50feb3: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx 0.00 : 50feba: 0f b6 7c 10 fe movzbl -0x2(%rax,%rdx,1),%edi 0.00 : 50febf: e8 cc ec ff ff callq 50eb90 0.00 : 50fec4: 48 89 03 mov %rax,(%rbx) 0.00 : 50fec7: bb 04 01 00 00 mov $0x104,%ebx 0.00 : 50fecc: e9 f7 f3 ff ff jmpq 50f2c8 : {whitespace} { /* stay in xusend state over whitespace */ } : {other} | : {xustop1} | : <> { : /* no UESCAPE after the quote, throw back everything */ : yyless(0); 0.00 : 50fed1: 41 0f b6 46 30 movzbl 0x30(%r14),%eax : BEGIN(INITIAL); : yylval->str = litbuf_udeescape('\\', yyscanner); 0.00 : 50fed6: 4c 89 f6 mov %r14,%rsi 0.00 : 50fed9: bf 5c 00 00 00 mov $0x5c,%edi : {whitespace} { /* stay in xusend state over whitespace */ } : {other} | : {xustop1} | : <> { : /* no UESCAPE after the quote, throw back everything */ : yyless(0); 0.00 : 50fede: 41 88 04 24 mov %al,(%r12) 0.00 : 50fee2: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 50fee6: 41 c7 46 38 00 00 00 movl $0x0,0x38(%r14) 0.00 : 50feed: 00 0.00 : 50feee: 49 89 46 40 mov %rax,0x40(%r14) 0.00 : 50fef2: 48 89 c2 mov %rax,%rdx 0.00 : 50fef5: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50fefc: 0f b6 00 movzbl (%rax),%eax 0.00 : 50feff: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50ff03: c6 02 00 movb $0x0,(%rdx) : BEGIN(INITIAL); : yylval->str = litbuf_udeescape('\\', yyscanner); 0.00 : 50ff06: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx : {whitespace} { /* stay in xusend state over whitespace */ } : {other} | : {xustop1} | : <> { : /* no UESCAPE after the quote, throw back everything */ : yyless(0); 0.00 : 50ff0d: 49 89 56 40 mov %rdx,0x40(%r14) : BEGIN(INITIAL); 0.00 : 50ff11: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 50ff18: 00 : yylval->str = litbuf_udeescape('\\', yyscanner); 0.00 : 50ff19: e8 72 ec ff ff callq 50eb90 0.00 : 50ff1e: 48 89 03 mov %rax,(%rbx) 0.00 : 50ff21: bb 04 01 00 00 mov $0x104,%ebx 0.00 : 50ff26: e9 9d f3 ff ff jmpq 50f2c8 : yyless(1); : BEGIN(INITIAL); : yylval->str = litbufdup(yyscanner); : return XCONST; : } : <> { yyerror("unterminated hexadecimal string literal"); } 0.00 : 50ff2b: 4c 89 f6 mov %r14,%rsi 0.00 : 50ff2e: bf b0 9a 7c 00 mov $0x7c9ab0,%edi 0.00 : 50ff33: e8 98 dd ff ff callq 50dcd0 : return SCONST; : } : {quotestop} | : {quotefail} { : /* throw back all but the quote */ : yyless(1); 0.00 : 50ff38: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50ff3d: 41 88 04 24 mov %al,(%r12) 0.00 : 50ff41: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50ff45: 48 83 c2 01 add $0x1,%rdx 0.00 : 50ff49: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50ff4d: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 50ff51: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50ff58: 89 d0 mov %edx,%eax 0.00 : 50ff5a: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50ff5d: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50ff61: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50ff65: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 50ff69: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50ff6d: c6 41 01 00 movb $0x0,0x1(%rcx) 0.00 : 50ff71: 49 89 56 40 mov %rdx,0x40(%r14) : /* xusend state looks for possible UESCAPE */ : BEGIN(xusend); 0.00 : 50ff75: 41 c7 46 4c 17 00 00 movl $0x17,0x4c(%r14) 0.00 : 50ff7c: 00 : } : {whitespace} { /* stay in xusend state over whitespace */ } 0.00 : 50ff7d: e9 ae f1 ff ff jmpq 50f130 : * We will pass this along as a normal character string, : * but preceded with an internally-generated "NCHAR". : */ : const ScanKeyword *keyword; : : SET_YYLLOC(); 0.00 : 50ff82: 49 8b 16 mov (%r14),%rdx 0.00 : 50ff85: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : yyless(1); /* eat only 'n' this time */ : : keyword = ScanKeywordLookup("nchar", 0.00 : 50ff8c: bf 68 93 7c 00 mov $0x7c9368,%edi : * We will pass this along as a normal character string, : * but preceded with an internally-generated "NCHAR". : */ : const ScanKeyword *keyword; : : SET_YYLLOC(); 0.00 : 50ff91: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 50ff98: 2b 02 sub (%rdx),%eax 0.00 : 50ff9a: 89 01 mov %eax,(%rcx) : yyless(1); /* eat only 'n' this time */ 0.00 : 50ff9c: 41 0f b6 46 30 movzbl 0x30(%r14),%eax 0.00 : 50ffa1: 41 88 04 24 mov %al,(%r12) 0.00 : 50ffa5: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 50ffa9: 48 83 c2 01 add $0x1,%rdx 0.00 : 50ffad: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 50ffb1: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 50ffb5: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 50ffbc: 89 d0 mov %edx,%eax 0.00 : 50ffbe: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 50ffc1: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 50ffc5: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 50ffc9: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 50ffcd: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 50ffd1: c6 41 01 00 movb $0x0,0x1(%rcx) : : keyword = ScanKeywordLookup("nchar", 0.00 : 50ffd5: 49 8b 06 mov (%r14),%rax : * but preceded with an internally-generated "NCHAR". : */ : const ScanKeyword *keyword; : : SET_YYLLOC(); : yyless(1); /* eat only 'n' this time */ 0.00 : 50ffd8: 49 89 56 40 mov %rdx,0x40(%r14) : : keyword = ScanKeywordLookup("nchar", 0.00 : 50ffdc: 8b 50 18 mov 0x18(%rax),%edx 0.00 : 50ffdf: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 50ffe3: e8 08 a5 01 00 callq 52a4f0 : yyextra->keywords, : yyextra->num_keywords); : if (keyword != NULL) 0.00 : 50ffe8: 48 85 c0 test %rax,%rax : const ScanKeyword *keyword; : : SET_YYLLOC(); : yyless(1); /* eat only 'n' this time */ : : keyword = ScanKeywordLookup("nchar", 0.00 : 50ffeb: 49 89 c0 mov %rax,%r8 : yyextra->keywords, : yyextra->num_keywords); : if (keyword != NULL) 0.00 : 50ffee: 0f 85 16 fa ff ff jne 50fa0a : return keyword->value; : } : else : { : /* If NCHAR isn't a keyword, just return "n" */ : yylval->str = pstrdup("n"); 0.00 : 50fff4: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx 0.00 : 50fffb: bf c8 f0 89 00 mov $0x89f0c8,%edi 0.00 : 510000: e8 4b 8f 28 00 callq 798f50 0.00 : 510005: 48 89 03 mov %rax,(%rbx) 0.00 : 510008: bb 02 01 00 00 mov $0x102,%ebx 0.00 : 51000d: e9 b6 f2 ff ff jmpq 50f2c8 : startlit(); : addlitchar('x', yyscanner); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 510012: 41 0f b6 46 30 movzbl 0x30(%r14),%eax : BEGIN(INITIAL); : yylval->str = litbufdup(yyscanner); 0.00 : 510017: 4c 89 f7 mov %r14,%rdi : startlit(); : addlitchar('x', yyscanner); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 51001a: 41 88 04 24 mov %al,(%r12) 0.00 : 51001e: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 510022: 48 83 c2 01 add $0x1,%rdx 0.00 : 510026: 49 89 56 40 mov %rdx,0x40(%r14) 0.00 : 51002a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 51002e: 49 89 86 80 00 00 00 mov %rax,0x80(%r14) 0.00 : 510035: 89 d0 mov %edx,%eax 0.00 : 510037: 2b 45 a4 sub -0x5c(%rbp),%eax 0.00 : 51003a: 41 89 46 38 mov %eax,0x38(%r14) 0.00 : 51003e: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 510042: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 510046: 41 88 46 30 mov %al,0x30(%r14) 0.00 : 51004a: c6 41 01 00 movb $0x0,0x1(%rcx) : BEGIN(INITIAL); : yylval->str = litbufdup(yyscanner); 0.00 : 51004e: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx : startlit(); : addlitchar('x', yyscanner); : } : {quotestop} | : {quotefail} { : yyless(1); 0.00 : 510055: 49 89 56 40 mov %rdx,0x40(%r14) : BEGIN(INITIAL); 0.00 : 510059: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 510060: 00 : yylval->str = litbufdup(yyscanner); 0.00 : 510061: e8 3a db ff ff callq 50dba0 0.00 : 510066: 48 89 03 mov %rax,(%rbx) 0.00 : 510069: bb 06 01 00 00 mov $0x106,%ebx 0.00 : 51006e: e9 55 f2 ff ff jmpq 50f2c8 : * At some point we should simply pass the string : * forward to the parser and label it there. : * In the meantime, place a leading "x" on the string : * to mark it for the input routine as a hex string. : */ : SET_YYLLOC(); 0.00 : 510073: 49 8b 16 mov (%r14),%rdx 0.00 : 510076: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : BEGIN(xh); : startlit(); : addlitchar('x', yyscanner); 0.00 : 51007d: 4c 89 f6 mov %r14,%rsi : * At some point we should simply pass the string : * forward to the parser and label it there. : * In the meantime, place a leading "x" on the string : * to mark it for the input routine as a hex string. : */ : SET_YYLLOC(); 0.00 : 510080: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx : BEGIN(xh); : startlit(); : addlitchar('x', yyscanner); 0.00 : 510087: bf 78 00 00 00 mov $0x78,%edi : * At some point we should simply pass the string : * forward to the parser and label it there. : * In the meantime, place a leading "x" on the string : * to mark it for the input routine as a hex string. : */ : SET_YYLLOC(); 0.00 : 51008c: 2b 02 sub (%rdx),%eax 0.00 : 51008e: 89 01 mov %eax,(%rcx) : BEGIN(xh); : startlit(); 0.00 : 510090: 49 8b 06 mov (%r14),%rax : * forward to the parser and label it there. : * In the meantime, place a leading "x" on the string : * to mark it for the input routine as a hex string. : */ : SET_YYLLOC(); : BEGIN(xh); 0.00 : 510093: 41 c7 46 4c 09 00 00 movl $0x9,0x4c(%r14) 0.00 : 51009a: 00 : startlit(); 0.00 : 51009b: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : addlitchar('x', yyscanner); 0.00 : 5100a2: e8 e9 d9 ff ff callq 50da90 : } : {quotestop} | 0.00 : 5100a7: e9 84 f0 ff ff jmpq 50f130 : } : . { : /* This is only needed for \ just before EOF */ : addlitchar(yytext[0], yyscanner); : } : <> { yyerror("unterminated quoted string"); } 0.00 : 5100ac: 4c 89 f6 mov %r14,%rsi 0.00 : 5100af: bf 85 93 7c 00 mov $0x7c9385,%edi 0.00 : 5100b4: e8 17 dc ff ff callq 50dcd0 : return IDENT; : } : } : : {xqstart} { : yyextra->warn_on_first_escape = true; 0.00 : 5100b9: 49 8b 06 mov (%r14),%rax 0.00 : 5100bc: c6 40 44 01 movb $0x1,0x44(%rax) : yyextra->saw_non_ascii = false; 0.00 : 5100c0: 49 8b 06 mov (%r14),%rax 0.00 : 5100c3: c6 40 45 00 movb $0x0,0x45(%rax) : SET_YYLLOC(); 0.00 : 5100c7: 49 8b 16 mov (%r14),%rdx 0.00 : 5100ca: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : 5100d1: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx 0.00 : 5100d8: 2b 02 sub (%rdx),%eax 0.00 : 5100da: 89 01 mov %eax,(%rcx) : if (standard_conforming_strings) : BEGIN(xq); 0.00 : 5100dc: 80 3d 12 81 65 00 01 cmpb $0x1,0x658112(%rip) # b681f5 0.00 : 5100e3: 19 c0 sbb %eax,%eax 0.00 : 5100e5: 83 e0 fe and $0xfffffffe,%eax 0.00 : 5100e8: 83 c0 0d add $0xd,%eax 0.00 : 5100eb: 41 89 46 4c mov %eax,0x4c(%r14) : else : BEGIN(xe); : startlit(); 0.00 : 5100ef: 49 8b 06 mov (%r14),%rax 0.00 : 5100f2: c7 40 28 00 00 00 00 movl $0x0,0x28(%rax) : } : {xestart} { 0.00 : 5100f9: e9 32 f0 ff ff jmpq 50f130 : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 5100fe: 44 8b 7d b4 mov -0x4c(%rbp),%r15d 0.00 : 510102: 41 83 ef 02 sub $0x2,%r15d : (yytext[nchars-1] == '+' || : yytext[nchars-1] == '-')) : { : int ic; : : for (ic = nchars-2; ic >= 0; ic--) 0.00 : 510106: 45 85 ff test %r15d,%r15d : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 510109: 44 89 fb mov %r15d,%ebx : (yytext[nchars-1] == '+' || : yytext[nchars-1] == '-')) : { : int ic; : : for (ic = nchars-2; ic >= 0; ic--) 0.00 : 51010c: 78 23 js 510131 0.00 : 51010e: 66 90 xchg %ax,%ax : { : if (strchr("~!@#^&|`?%", yytext[ic])) 0.00 : 510110: 48 63 c3 movslq %ebx,%rax 0.00 : 510113: bf a5 76 7c 00 mov $0x7c76a5,%edi 0.00 : 510118: 41 0f be 74 05 00 movsbl 0x0(%r13,%rax,1),%esi 0.00 : 51011e: e8 2d 9b f5 ff callq 469c50 0.00 : 510123: 48 85 c0 test %rax,%rax 0.00 : 510126: 0f 85 f4 f4 ff ff jne 50f620 : (yytext[nchars-1] == '+' || : yytext[nchars-1] == '-')) : { : int ic; : : for (ic = nchars-2; ic >= 0; ic--) 0.00 : 51012c: 83 eb 01 sub $0x1,%ebx 0.00 : 51012f: 79 df jns 510110 : if (strchr("~!@#^&|`?%", yytext[ic])) : break; : } : if (ic >= 0) : break; /* found a char that makes it OK */ : nchars--; /* else remove the +/-, and check again */ 0.00 : 510131: 83 6d b4 01 subl $0x1,-0x4c(%rbp) : * contains chars that are not in SQL operators. : * The idea is to lex '=-' as two operators, but not : * to forbid operator names like '?-' that could not be : * sequences of SQL operators. : */ : while (nchars > 1 && 0.00 : 510135: 83 7d b4 01 cmpl $0x1,-0x4c(%rbp) 0.00 : 510139: 0f 8e e1 f4 ff ff jle 50f620 0.00 : 51013f: 48 63 45 b4 movslq -0x4c(%rbp),%rax 0.00 : 510143: 41 83 ef 01 sub $0x1,%r15d 0.00 : 510147: 41 0f b6 44 05 ff movzbl -0x1(%r13,%rax,1),%eax 0.00 : 51014d: 3c 2b cmp $0x2b,%al 0.00 : 51014f: 74 b5 je 510106 0.00 : 510151: 3c 2d cmp $0x2d,%al 0.00 : 510153: 0f 85 c7 f4 ff ff jne 50f620 0.00 : 510159: eb ab jmp 510106 : : static unsigned char : unescape_single_char(unsigned char c, core_yyscan_t yyscanner) : { : switch (c) : { 0.00 : 51015b: 0f b6 c0 movzbl %al,%eax 0.00 : 51015e: 66 90 xchg %ax,%ax 0.00 : 510160: ff 24 c5 88 a9 7c 00 jmpq *0x7ca988(,%rax,8) 0.00 : 510167: bf 09 00 00 00 mov $0x9,%edi 0.00 : 51016c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 510170: e9 50 f3 ff ff jmpq 50f4c5 0.00 : 510175: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 51017a: e9 46 f3 ff ff jmpq 50f4c5 0.00 : 51017f: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 510184: e9 3c f3 ff ff jmpq 50f4c5 0.00 : 510189: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 51018e: 66 90 xchg %ax,%ax 0.00 : 510190: e9 30 f3 ff ff jmpq 50f4c5 0.00 : 510195: bf 08 00 00 00 mov $0x8,%edi 0.00 : 51019a: e9 26 f3 ff ff jmpq 50f4c5 0.00 : 51019f: 90 nop : lexer_errposition())); : } : {xeescape} { : if (yytext[1] == '\'') : { : if (backslash_quote == BACKSLASH_QUOTE_OFF || 0.00 : 5101a0: e8 ab 85 27 00 callq 788750 0.00 : 5101a5: 83 f8 22 cmp $0x22,%eax 0.00 : 5101a8: 0f 8f b6 06 00 00 jg 510864 0.00 : 5101ae: 4d 8b 86 80 00 00 00 mov 0x80(%r14),%r8 : (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), : errmsg("unsafe use of \\' in a string literal"), : errhint("Use '' to write quotes in strings. \\' is insecure in client-only encodings."), : lexer_errposition())); : } : check_string_escape_warning(yytext[1], yyscanner); 0.00 : 5101b5: 41 0f b6 40 01 movzbl 0x1(%r8),%eax : : static void : check_string_escape_warning(unsigned char ychar, core_yyscan_t yyscanner) : { : if (ychar == '\'') : { 0.00 : 5101ba: 3c 27 cmp $0x27,%al 0.00 : 5101bc: 0f 84 7b fc ff ff je 50fe3d : errhint("Use '' to write quotes in strings, or use the escape string syntax (E'...')."), : lexer_errposition())); : yyextra->warn_on_first_escape = false; /* warn only once per string */ : } : else if (ychar == '\\') : { 0.00 : 5101c2: 3c 5c cmp $0x5c,%al 0.00 : 5101c4: 0f 85 7a 01 00 00 jne 510344 : if (yyextra->warn_on_first_escape && escape_string_warning) : ereport(WARNING, 0.00 : 5101ca: 49 8b 06 mov (%r14),%rax 0.00 : 5101cd: 80 78 44 00 cmpb $0x0,0x44(%rax) 0.00 : 5101d1: 0f 84 7c fc ff ff je 50fe53 0.00 : 5101d7: 80 3d 16 80 65 00 00 cmpb $0x0,0x658016(%rip) # b681f4 0.00 : 5101de: 0f 84 6f fc ff ff je 50fe53 : (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), 0.00 : 5101e4: 45 31 c0 xor %r8d,%r8d 0.00 : 5101e7: b9 b0 e9 7c 00 mov $0x7ce9b0,%ecx 0.00 : 5101ec: ba ac 05 00 00 mov $0x5ac,%edx 0.00 : 5101f1: be bb 92 7c 00 mov $0x7c92bb,%esi 0.00 : 5101f6: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5101fb: e8 c0 a8 26 00 callq 77aac0 0.00 : 510200: 84 c0 test %al,%al 0.00 : 510202: 0f 85 60 07 00 00 jne 510968 0.00 : 510208: 49 8b 06 mov (%r14),%rax 0.00 : 51020b: e9 43 fc ff ff jmpq 50fe53 : if (is_utf16_surrogate_first(c)) : { : yyextra->utf16_first_part = c; : BEGIN(xeu); : } : else if (is_utf16_surrogate_second(c)) 0.00 : 510210: 41 8d 84 24 00 24 ff lea -0xdc00(%r12),%eax 0.00 : 510217: ff 0.00 : 510218: 3d ff 03 00 00 cmp $0x3ff,%eax 0.00 : 51021d: 0f 1f 00 nopl (%rax) 0.00 : 510220: 0f 86 eb ef ff ff jbe 50f211 : yyerror("invalid Unicode surrogate pair"); : else : addunicode(c, yyscanner); 0.00 : 510226: 4c 89 f6 mov %r14,%rsi 0.00 : 510229: 89 df mov %ebx,%edi 0.00 : 51022b: e8 d0 e8 ff ff callq 50eb00 0.00 : 510230: e9 fb ee ff ff jmpq 50f130 : } : : /* Try to read more data. */ : : /* First move last chars to start of buffer. */ : number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; 0.00 : 510235: 44 89 c0 mov %r8d,%eax 0.00 : 510238: f7 d0 not %eax 0.00 : 51023a: 01 c8 add %ecx,%eax : : for ( i = 0; i < number_to_move; ++i ) 0.00 : 51023c: 85 c0 test %eax,%eax : } : : /* Try to read more data. */ : : /* First move last chars to start of buffer. */ : number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; 0.00 : 51023e: 89 45 bc mov %eax,-0x44(%rbp) : : for ( i = 0; i < number_to_move; ++i ) 0.00 : 510241: 7e 20 jle 510263 0.00 : 510243: 31 d2 xor %edx,%edx : *(dest++) = *(source++); 0.00 : 510245: 41 0f b6 44 15 00 movzbl 0x0(%r13,%rdx,1),%eax 0.00 : 51024b: 88 04 13 mov %al,(%rbx,%rdx,1) 0.00 : 51024e: 48 83 c2 01 add $0x1,%rdx : /* Try to read more data. */ : : /* First move last chars to start of buffer. */ : number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; : : for ( i = 0; i < number_to_move; ++i ) 0.00 : 510252: 39 55 bc cmp %edx,-0x44(%rbp) 0.00 : 510255: 7f ee jg 510245 0.00 : 510257: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 51025b: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 51025f: 48 8b 34 fa mov (%rdx,%rdi,8),%rsi : *(dest++) = *(source++); : : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 0.00 : 510263: 83 7e 3c 02 cmpl $0x2,0x3c(%rsi) 0.00 : 510267: 75 5b jne 5102c4 0.00 : 510269: e9 3c 03 00 00 jmpq 5105aa 0.00 : 51026e: 66 90 xchg %ax,%ax : int yy_c_buf_p_offset = : (int) (yyg->yy_c_buf_p - b->yy_ch_buf); : : if ( b->yy_is_our_buffer ) : { : int new_size = b->yy_buf_size * 2; 0.00 : 510270: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 510274: 48 8d 04 12 lea (%rdx,%rdx,1),%rax : : if ( new_size <= 0 ) 0.00 : 510278: 85 c0 test %eax,%eax 0.00 : 51027a: 0f 8e 95 00 00 00 jle 510315 : b->yy_buf_size += b->yy_buf_size / 8; : else : b->yy_buf_size *= 2; 0.00 : 510280: 48 89 43 18 mov %rax,0x18(%rbx) : : b->yy_ch_buf = (char *) 0.00 : 510284: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 510288: 4c 89 f2 mov %r14,%rdx 0.00 : 51028b: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 51028f: 4c 89 ef mov %r13,%rdi 0.00 : 510292: 48 83 c6 02 add $0x2,%rsi 0.00 : 510296: e8 65 d8 ff ff callq 50db00 : } : else : /* Can't grow it, we don't own it. */ : b->yy_ch_buf = 0; : : if ( ! b->yy_ch_buf ) 0.00 : 51029b: 48 85 c0 test %rax,%rax : if ( new_size <= 0 ) : b->yy_buf_size += b->yy_buf_size / 8; : else : b->yy_buf_size *= 2; : : b->yy_ch_buf = (char *) 0.00 : 51029e: 48 89 43 08 mov %rax,0x8(%rbx) : } : else : /* Can't grow it, we don't own it. */ : b->yy_ch_buf = 0; : : if ( ! b->yy_ch_buf ) 0.00 : 5102a2: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 5102a6: 74 56 je 5102fe : YY_FATAL_ERROR( : "fatal error - scanner input buffer overflow" ); : : yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 0.00 : 5102a8: 8b 45 c0 mov -0x40(%rbp),%eax : : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 0.00 : 5102ab: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 5102af: 49 8b 7e 18 mov 0x18(%r14),%rdi : : if ( ! b->yy_ch_buf ) : YY_FATAL_ERROR( : "fatal error - scanner input buffer overflow" ); : : yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 0.00 : 5102b3: 44 29 e8 sub %r13d,%eax 0.00 : 5102b6: 48 98 cltq 0.00 : 5102b8: 48 03 43 08 add 0x8(%rbx),%rax 0.00 : 5102bc: 49 89 46 40 mov %rax,0x40(%r14) : : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 0.00 : 5102c0: 48 8b 34 fa mov (%rdx,%rdi,8),%rsi : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; : : else : { : int num_to_read = : YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 0.00 : 5102c4: 8b 4d bc mov -0x44(%rbp),%ecx 0.00 : 5102c7: f7 d1 not %ecx 0.00 : 5102c9: 03 4e 18 add 0x18(%rsi),%ecx : : while ( num_to_read <= 0 ) 0.00 : 5102cc: 85 c9 test %ecx,%ecx 0.00 : 5102ce: 0f 8f ff 00 00 00 jg 5103d3 : { /* Not enough room in the buffer - grow it. */ : : /* just a shorter name for the current buffer */ : YY_BUFFER_STATE b = YY_CURRENT_BUFFER; 0.00 : 5102d4: 31 db xor %ebx,%ebx 0.00 : 5102d6: 48 85 d2 test %rdx,%rdx 0.00 : 5102d9: 74 04 je 5102df 0.00 : 5102db: 48 8b 1c fa mov (%rdx,%rdi,8),%rbx : : int yy_c_buf_p_offset = : (int) (yyg->yy_c_buf_p - b->yy_ch_buf); 0.00 : 5102df: 49 8b 56 40 mov 0x40(%r14),%rdx 0.00 : 5102e3: 48 89 55 c0 mov %rdx,-0x40(%rbp) : : if ( b->yy_is_our_buffer ) 0.00 : 5102e7: 8b 73 24 mov 0x24(%rbx),%esi : : /* just a shorter name for the current buffer */ : YY_BUFFER_STATE b = YY_CURRENT_BUFFER; : : int yy_c_buf_p_offset = : (int) (yyg->yy_c_buf_p - b->yy_ch_buf); 0.00 : 5102ea: 4c 8b 6b 08 mov 0x8(%rbx),%r13 : : if ( b->yy_is_our_buffer ) 0.00 : 5102ee: 85 f6 test %esi,%esi 0.00 : 5102f0: 0f 85 7a ff ff ff jne 510270 : /* Include room in for 2 EOB chars. */ : core_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); : } : else : /* Can't grow it, we don't own it. */ : b->yy_ch_buf = 0; 0.00 : 5102f6: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 5102fd: 00 : : if ( ! b->yy_ch_buf ) : YY_FATAL_ERROR( 0.00 : 5102fe: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 510302: 4c 89 f6 mov %r14,%rsi 0.00 : 510305: bf d8 e4 7b 00 mov $0x7be4d8,%edi 0.00 : 51030a: e8 d1 de ff ff callq 50e1e0 0.00 : 51030f: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 510313: eb 93 jmp 5102a8 : if ( b->yy_is_our_buffer ) : { : int new_size = b->yy_buf_size * 2; : : if ( new_size <= 0 ) : b->yy_buf_size += b->yy_buf_size / 8; 0.00 : 510315: 48 89 d0 mov %rdx,%rax 0.00 : 510318: 48 c1 e8 03 shr $0x3,%rax 0.00 : 51031c: 48 01 d0 add %rdx,%rax 0.00 : 51031f: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 510323: e9 5c ff ff ff jmpq 510284 : : /* Convert "!=" operator to "<>" for compatibility */ : if (strcmp(yytext, "!=") == 0) : yylval->str = pstrdup("<>"); : else : yylval->str = pstrdup(yytext); 0.00 : 510328: 49 8b 9e 90 00 00 00 mov 0x90(%r14),%rbx 0.00 : 51032f: 4c 89 e7 mov %r12,%rdi 0.00 : 510332: e8 19 8c 28 00 callq 798f50 0.00 : 510337: 48 89 03 mov %rax,(%rbx) 0.00 : 51033a: bb 07 01 00 00 mov $0x107,%ebx 0.00 : 51033f: e9 84 ef ff ff jmpq 50f2c8 : lexer_errposition())); : yyextra->warn_on_first_escape = false; /* warn only once per string */ : } : else : check_escape_warning(yyscanner); : } 0.00 : 510344: 4c 89 f7 mov %r14,%rdi 0.00 : 510347: e8 84 e6 ff ff callq 50e9d0 0.00 : 51034c: e9 06 fb ff ff jmpq 50fe57 : register char *source = yyg->yytext_ptr; : register int number_to_move, i; : int ret_val; : : if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) : YY_FATAL_ERROR( 0.00 : 510351: 4c 89 f6 mov %r14,%rsi 0.00 : 510354: bf a0 e4 7b 00 mov $0x7be4a0,%edi 0.00 : 510359: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 51035d: e8 7e de ff ff callq 50e1e0 0.00 : 510362: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 510366: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 51036a: 49 8b 4e 40 mov 0x40(%r14),%rcx 0.00 : 51036e: 4d 8b 86 80 00 00 00 mov 0x80(%r14),%r8 0.00 : 510375: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 510379: 48 8b 34 fa mov (%rdx,%rdi,8),%rsi 0.00 : 51037d: e9 d4 f7 ff ff jmpq 50fb56 : } : . { yyerror("invalid Unicode surrogate pair"); } : \n { yyerror("invalid Unicode surrogate pair"); } : <> { yyerror("invalid Unicode surrogate pair"); } : {xeunicodefail} { : ereport(ERROR, 0.00 : 510382: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 510389: 4c 89 f6 mov %r14,%rsi 0.00 : 51038c: 8b 38 mov (%rax),%edi 0.00 : 51038e: e8 0d d9 ff ff callq 50dca0 0.00 : 510393: bf 98 9b 7c 00 mov $0x7c9b98,%edi 0.00 : 510398: 41 89 c5 mov %eax,%r13d 0.00 : 51039b: 31 c0 xor %eax,%eax 0.00 : 51039d: e8 fe b8 26 00 callq 77bca0 0.00 : 5103a2: bf 6e 93 7c 00 mov $0x7c936e,%edi 0.00 : 5103a7: 89 c3 mov %eax,%ebx 0.00 : 5103a9: 31 c0 xor %eax,%eax 0.00 : 5103ab: e8 f0 c4 26 00 callq 77c8a0 0.00 : 5103b0: bf 82 00 08 05 mov $0x5080082,%edi 0.00 : 5103b5: 41 89 c4 mov %eax,%r12d : if (yytext[1] == '\'') : { : if (backslash_quote == BACKSLASH_QUOTE_OFF || : (backslash_quote == BACKSLASH_QUOTE_SAFE_ENCODING && : PG_ENCODING_IS_CLIENT_ONLY(pg_get_client_encoding()))) : ereport(ERROR, 0.00 : 5103b8: e8 93 c9 26 00 callq 77cd50 0.00 : 5103bd: 44 89 e9 mov %r13d,%ecx 0.00 : 5103c0: 89 c7 mov %eax,%edi 0.00 : 5103c2: 89 da mov %ebx,%edx 0.00 : 5103c4: 44 89 e6 mov %r12d,%esi 0.00 : 5103c7: 31 c0 xor %eax,%eax 0.00 : 5103c9: e8 12 a2 26 00 callq 77a5e0 0.00 : 5103ce: e9 d1 f5 ff ff jmpq 50f9a4 : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - : number_to_move - 1; : : } : : if ( num_to_read > YY_READ_BUF_SIZE ) 0.00 : 5103d3: 81 f9 01 20 00 00 cmp $0x2001,%ecx 0.00 : 5103d9: 48 63 c1 movslq %ecx,%rax 0.00 : 5103dc: 49 0f 4d c2 cmovge %r10,%rax 0.00 : 5103e0: 48 89 45 c8 mov %rax,-0x38(%rbp) : num_to_read = YY_READ_BUF_SIZE; : : /* Read in more data. */ : YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 0.00 : 5103e4: 8b 4e 28 mov 0x28(%rsi),%ecx 0.00 : 5103e7: 85 c9 test %ecx,%ecx 0.00 : 5103e9: 0f 84 b9 02 00 00 je 5106a8 0.00 : 5103ef: 48 63 4d bc movslq -0x44(%rbp),%rcx 0.00 : 5103f3: 31 db xor %ebx,%ebx 0.00 : 5103f5: 48 89 4d d0 mov %rcx,-0x30(%rbp) 0.00 : 5103f9: 49 89 cd mov %rcx,%r13 0.00 : 5103fc: eb 31 jmp 51042f 0.00 : 5103fe: 66 90 xchg %ax,%ax 0.00 : 510400: 83 f8 0a cmp $0xa,%eax 0.00 : 510403: 0f 84 02 02 00 00 je 51060b 0.00 : 510409: 49 8b 56 18 mov 0x18(%r14),%rdx 0.00 : 51040d: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 510411: 48 83 c3 01 add $0x1,%rbx 0.00 : 510415: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 510419: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 51041d: 42 88 0c 28 mov %cl,(%rax,%r13,1) 0.00 : 510421: 49 83 c5 01 add $0x1,%r13 0.00 : 510425: 48 3b 5d c8 cmp -0x38(%rbp),%rbx 0.00 : 510429: 0f 83 d5 01 00 00 jae 510604 0.00 : 51042f: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 510433: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 510437: e8 f4 93 f5 ff callq 469830 <_IO_getc@plt> 0.00 : 51043c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 51043f: 89 c1 mov %eax,%ecx 0.00 : 510441: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 510445: 75 b9 jne 510400 0.00 : 510447: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 51044b: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 51044f: e8 0c 94 f5 ff callq 469860 0.00 : 510454: 85 c0 test %eax,%eax 0.00 : 510456: 89 da mov %ebx,%edx 0.00 : 510458: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 51045c: 0f 85 32 05 00 00 jne 510994 0.00 : 510462: 41 89 56 34 mov %edx,0x34(%r14) : yyg->yy_n_chars, (size_t) num_to_read ); : : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; 0.00 : 510466: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 51046a: 49 8b 56 18 mov 0x18(%r14),%rdx 0.00 : 51046e: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 510472: 41 8b 46 34 mov 0x34(%r14),%eax 0.00 : 510476: 89 42 20 mov %eax,0x20(%rdx) : } : : if ( yyg->yy_n_chars == 0 ) 0.00 : 510479: 41 8b 56 34 mov 0x34(%r14),%edx 0.00 : 51047d: 45 31 ed xor %r13d,%r13d 0.00 : 510480: 85 d2 test %edx,%edx 0.00 : 510482: 75 28 jne 5104ac : { : if ( number_to_move == YY_MORE_ADJ ) 0.00 : 510484: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 510487: 85 d2 test %edx,%edx 0.00 : 510489: 0f 84 c1 02 00 00 je 510750 : } : : else : { : ret_val = EOB_ACT_LAST_MATCH; : YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 0.00 : 51048f: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 510493: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 510497: 41 bd 02 00 00 00 mov $0x2,%r13d 0.00 : 51049d: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 5104a1: c7 40 3c 02 00 00 00 movl $0x2,0x3c(%rax) 0.00 : 5104a8: 41 8b 56 34 mov 0x34(%r14),%edx : } : : else : ret_val = EOB_ACT_CONTINUE_SCAN; : : if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 0.00 : 5104ac: 8b 4d bc mov -0x44(%rbp),%ecx 0.00 : 5104af: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 5104b3: 8d 04 0a lea (%rdx,%rcx,1),%eax 0.00 : 5104b6: 49 8b 4e 28 mov 0x28(%r14),%rcx 0.00 : 5104ba: 48 63 f0 movslq %eax,%rsi 0.00 : 5104bd: 48 8b 1c f9 mov (%rcx,%rdi,8),%rbx 0.00 : 5104c1: 48 3b 73 18 cmp 0x18(%rbx),%rsi 0.00 : 5104c5: 0f 87 f3 00 00 00 ja 5105be : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) core_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) : YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); : } : : yyg->yy_n_chars += number_to_move; 0.00 : 5104cb: 41 89 46 34 mov %eax,0x34(%r14) : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; 0.00 : 5104cf: 48 8b 04 f9 mov (%rcx,%rdi,8),%rax : yy_cp = yyg->yy_c_buf_p; : goto yy_find_action; : } : } : : else switch ( yy_get_next_buffer( yyscanner ) ) 0.00 : 5104d3: 41 83 fd 01 cmp $0x1,%r13d : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) : YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); : } : : yyg->yy_n_chars += number_to_move; : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; 0.00 : 5104d7: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5104db: c6 04 30 00 movb $0x0,(%rax,%rsi,1) : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; 0.00 : 5104df: 49 8b 56 18 mov 0x18(%r14),%rdx 0.00 : 5104e3: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 5104e7: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5104eb: 49 63 56 34 movslq 0x34(%r14),%rdx 0.00 : 5104ef: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5104f3: c6 44 10 01 00 movb $0x0,0x1(%rax,%rdx,1) : : yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 0.00 : 5104f8: 49 8b 4e 18 mov 0x18(%r14),%rcx 0.00 : 5104fc: 49 8b 76 28 mov 0x28(%r14),%rsi 0.00 : 510500: 48 8b 04 ce mov (%rsi,%rcx,8),%rax 0.00 : 510504: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 510508: 49 89 96 80 00 00 00 mov %rdx,0x80(%r14) : yy_cp = yyg->yy_c_buf_p; : goto yy_find_action; : } : } : : else switch ( yy_get_next_buffer( yyscanner ) ) 0.00 : 51050f: 74 72 je 510583 0.00 : 510511: 41 83 fd 02 cmp $0x2,%r13d 0.00 : 510515: 0f 84 be 02 00 00 je 5107d9 0.00 : 51051b: 45 85 ed test %r13d,%r13d 0.00 : 51051e: 0f 85 0c ec ff ff jne 50f130 : } : break; : } : : case EOB_ACT_CONTINUE_SCAN: : yyg->yy_c_buf_p = 0.00 : 510524: 48 63 45 b8 movslq -0x48(%rbp),%rax 0.00 : 510528: 4c 8d 24 02 lea (%rdx,%rax,1),%r12 : { : register yy_state_type yy_current_state; : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 51052c: 49 63 46 4c movslq 0x4c(%r14),%rax : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 510530: 49 39 d4 cmp %rdx,%r12 : } : break; : } : : case EOB_ACT_CONTINUE_SCAN: : yyg->yy_c_buf_p = 0.00 : 510533: 4d 89 66 40 mov %r12,0x40(%r14) : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 510537: 48 89 55 a8 mov %rdx,-0x58(%rbp) : { : register yy_state_type yy_current_state; : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 51053b: 48 8b 0c c5 c0 e8 7c mov 0x7ce8c0(,%rax,8),%rcx 0.00 : 510542: 00 : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 510543: 76 27 jbe 51056c : { : yy_current_state += yy_current_state[(*yy_cp ? YY_SC_TO_UI(*yy_cp) : 256)].yy_nxt; 0.00 : 510545: 0f b6 32 movzbl (%rdx),%esi 0.00 : 510548: b8 00 08 00 00 mov $0x800,%eax 0.00 : 51054d: 40 84 f6 test %sil,%sil 0.00 : 510550: 74 08 je 51055a 0.00 : 510552: 40 0f b6 c6 movzbl %sil,%eax 0.00 : 510556: 48 c1 e0 03 shl $0x3,%rax 0.00 : 51055a: 48 63 44 01 04 movslq 0x4(%rcx,%rax,1),%rax : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 51055f: 48 83 c2 01 add $0x1,%rdx 0.00 : 510563: 49 39 d4 cmp %rdx,%r12 : { : yy_current_state += yy_current_state[(*yy_cp ? YY_SC_TO_UI(*yy_cp) : 256)].yy_nxt; 0.00 : 510566: 48 8d 0c c1 lea (%rcx,%rax,8),%rcx : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 51056a: 77 d9 ja 510545 : /* yy_bp points to the position in yy_ch_buf of the start of : * the current run. : */ : yy_bp = yy_cp; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 51056c: 41 0f b6 34 24 movzbl (%r12),%esi 0.00 : 510571: e9 d7 eb ff ff jmpq 50f14d : yyless(2); : } : : {xcstop} { : if (yyextra->xcdepth <= 0) : BEGIN(INITIAL); 0.00 : 510576: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 51057d: 00 0.00 : 51057e: e9 ad eb ff ff jmpq 50f130 0.00 : 510583: 49 89 d0 mov %rdx,%r8 : * YY_NULL, it'll still work - another : * YY_NULL will get returned. : */ : yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; : : yy_act = YY_STATE_EOF(YY_START); 0.00 : 510586: 41 8b 56 4c mov 0x4c(%r14),%edx : : else switch ( yy_get_next_buffer( yyscanner ) ) : { : case EOB_ACT_END_OF_FILE: : { : yyg->yy_did_buffer_switch_on_eof = 0; 0.00 : 51058a: 41 c7 46 50 00 00 00 movl $0x0,0x50(%r14) 0.00 : 510591: 00 : * hoser (like flex itself) wants to : * call the scanner after we return the : * YY_NULL, it'll still work - another : * YY_NULL will get returned. : */ : yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; 0.00 : 510592: 4d 89 46 40 mov %r8,0x40(%r14) : : yy_act = YY_STATE_EOF(YY_START); 0.00 : 510596: 83 ea 01 sub $0x1,%edx 0.00 : 510599: 89 d0 mov %edx,%eax 0.00 : 51059b: c1 e8 1f shr $0x1f,%eax 0.00 : 51059e: 01 d0 add %edx,%eax 0.00 : 5105a0: d1 f8 sar %eax 0.00 : 5105a2: 8d 50 4c lea 0x4c(%rax),%edx : goto do_action; 0.00 : 5105a5: e9 0b ec ff ff jmpq 50f1b5 : : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) : /* don't do the read, it's not guaranteed to return an EOF, : * just force an EOF : */ : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; 0.00 : 5105aa: 41 c7 46 34 00 00 00 movl $0x0,0x34(%r14) 0.00 : 5105b1: 00 0.00 : 5105b2: c7 46 20 00 00 00 00 movl $0x0,0x20(%rsi) 0.00 : 5105b9: e9 bb fe ff ff jmpq 510479 : ret_val = EOB_ACT_CONTINUE_SCAN; : : if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { : /* Extend the array by 50%, plus the number we really need. */ : yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) core_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); 0.00 : 5105be: d1 fa sar %edx 0.00 : 5105c0: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 5105c4: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 5105c8: 8d 34 02 lea (%rdx,%rax,1),%esi 0.00 : 5105cb: 4c 89 f2 mov %r14,%rdx 0.00 : 5105ce: 48 63 f6 movslq %esi,%rsi 0.00 : 5105d1: e8 2a d5 ff ff callq 50db00 0.00 : 5105d6: 48 89 43 08 mov %rax,0x8(%rbx) : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 0.00 : 5105da: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 5105de: 49 8b 4e 28 mov 0x28(%r14),%rcx 0.00 : 5105e2: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 5105e6: 48 8b 04 f9 mov (%rcx,%rdi,8),%rax 0.00 : 5105ea: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 5105ef: 0f 84 b8 01 00 00 je 5107ad 0.00 : 5105f5: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 5105f8: 41 03 46 34 add 0x34(%r14),%eax 0.00 : 5105fc: 48 63 f0 movslq %eax,%rsi 0.00 : 5105ff: e9 c7 fe ff ff jmpq 5104cb : : if ( num_to_read > YY_READ_BUF_SIZE ) : num_to_read = YY_READ_BUF_SIZE; : : /* Read in more data. */ : YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 0.00 : 510604: 89 da mov %ebx,%edx 0.00 : 510606: e9 57 fe ff ff jmpq 510462 0.00 : 51060b: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 51060f: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 510613: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 510617: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 51061b: 48 01 55 d0 add %rdx,-0x30(%rbp) 0.00 : 51061f: 8d 53 01 lea 0x1(%rbx),%edx 0.00 : 510622: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 510626: c6 04 19 0a movb $0xa,(%rcx,%rbx,1) 0.00 : 51062a: e9 33 fe ff ff jmpq 510462 : { : if (ychar == '\'') : { : if (yyextra->warn_on_first_escape && escape_string_warning) : ereport(WARNING, : (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), 0.00 : 51062f: 45 31 c0 xor %r8d,%r8d 0.00 : 510632: b9 b0 e9 7c 00 mov $0x7ce9b0,%ecx 0.00 : 510637: ba a2 05 00 00 mov $0x5a2,%edx 0.00 : 51063c: be bb 92 7c 00 mov $0x7c92bb,%esi 0.00 : 510641: bf 13 00 00 00 mov $0x13,%edi 0.00 : 510646: e8 75 a4 26 00 callq 77aac0 0.00 : 51064b: 84 c0 test %al,%al 0.00 : 51064d: 0f 84 b5 fb ff ff je 510208 0.00 : 510653: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 51065a: 4c 89 f6 mov %r14,%rsi 0.00 : 51065d: 8b 38 mov (%rax),%edi 0.00 : 51065f: e8 3c d6 ff ff callq 50dca0 0.00 : 510664: bf 40 9c 7c 00 mov $0x7c9c40,%edi 0.00 : 510669: 41 89 c5 mov %eax,%r13d 0.00 : 51066c: 31 c0 xor %eax,%eax 0.00 : 51066e: e8 2d b6 26 00 callq 77bca0 0.00 : 510673: bf 90 9c 7c 00 mov $0x7c9c90,%edi 0.00 : 510678: 89 c3 mov %eax,%ebx : } : else if (ychar == '\\') : { : if (yyextra->warn_on_first_escape && escape_string_warning) : ereport(WARNING, : (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), 0.00 : 51067a: 31 c0 xor %eax,%eax 0.00 : 51067c: e8 1f c2 26 00 callq 77c8a0 0.00 : 510681: bf 82 00 02 06 mov $0x6020082,%edi 0.00 : 510686: 41 89 c4 mov %eax,%r12d 0.00 : 510689: e8 c2 c6 26 00 callq 77cd50 0.00 : 51068e: 44 89 e9 mov %r13d,%ecx 0.00 : 510691: 89 c7 mov %eax,%edi 0.00 : 510693: 89 da mov %ebx,%edx 0.00 : 510695: 44 89 e6 mov %r12d,%esi 0.00 : 510698: 31 c0 xor %eax,%eax 0.00 : 51069a: e8 41 9f 26 00 callq 77a5e0 0.00 : 51069f: e9 64 fb ff ff jmpq 510208 0.00 : 5106a4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5106a8: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 5106ac: e8 0f 96 f5 ff callq 469cc0 <__errno_location@plt> 0.00 : 5106b1: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : 5106b7: 48 89 c3 mov %rax,%rbx 0.00 : 5106ba: 4c 63 6d bc movslq -0x44(%rbp),%r13 0.00 : 5106be: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 5106c2: eb 1b jmp 5106df 0.00 : 5106c4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5106c8: c7 03 00 00 00 00 movl $0x0,(%rbx) 0.00 : 5106ce: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 5106d2: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 5106d6: e8 75 98 f5 ff callq 469f50 0.00 : 5106db: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 5106df: 49 8b 56 18 mov 0x18(%r14),%rdx 0.00 : 5106e3: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 5106e7: 4c 89 ef mov %r13,%rdi 0.00 : 5106ea: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 5106ee: be 01 00 00 00 mov $0x1,%esi 0.00 : 5106f3: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5106f7: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 5106fb: 48 03 78 08 add 0x8(%rax),%rdi 0.00 : 5106ff: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 510703: e8 88 95 f5 ff callq 469c90 0.00 : 510708: 85 c0 test %eax,%eax 0.00 : 51070a: 41 89 46 34 mov %eax,0x34(%r14) 0.00 : 51070e: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 510712: 0f 85 4e fd ff ff jne 510466 0.00 : 510718: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 51071c: e8 3f 91 f5 ff callq 469860 0.00 : 510721: 85 c0 test %eax,%eax 0.00 : 510723: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 510727: 0f 84 39 fd ff ff je 510466 0.00 : 51072d: 83 3b 04 cmpl $0x4,(%rbx) 0.00 : 510730: 74 96 je 5106c8 0.00 : 510732: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 510736: 4c 89 f6 mov %r14,%rsi 0.00 : 510739: bf 56 e2 7b 00 mov $0x7be256,%edi 0.00 : 51073e: e8 9d da ff ff callq 50e1e0 0.00 : 510743: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 510747: e9 1a fd ff ff jmpq 510466 0.00 : 51074c: 0f 1f 40 00 nopl 0x0(%rax) : if ( yyg->yy_n_chars == 0 ) : { : if ( number_to_move == YY_MORE_ADJ ) : { : ret_val = EOB_ACT_END_OF_FILE; : core_yyrestart(yyin ,yyscanner); 0.00 : 510750: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 510754: 4c 89 f6 mov %r14,%rsi 0.00 : 510757: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 51075b: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 510761: e8 8a e1 ff ff callq 50e8f0 0.00 : 510766: 41 8b 56 34 mov 0x34(%r14),%edx 0.00 : 51076a: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 51076e: e9 39 fd ff ff jmpq 5104ac : * If what we have left is only one char, and it's : * one of the characters matching "self", then : * return it as a character token the same way : * that the "self" rule would have. : */ : if (nchars == 1 && 0.00 : 510773: 4d 8b a6 80 00 00 00 mov 0x80(%r14),%r12 0.00 : 51077a: bf a0 93 7c 00 mov $0x7c93a0,%edi 0.00 : 51077f: 41 0f be 1c 24 movsbl (%r12),%ebx 0.00 : 510784: 89 de mov %ebx,%esi 0.00 : 510786: e8 c5 94 f5 ff callq 469c50 0.00 : 51078b: 48 85 c0 test %rax,%rax 0.00 : 51078e: 0f 85 34 eb ff ff jne 50f2c8 0.00 : 510794: e9 f1 ee ff ff jmpq 50f68a 0.00 : 510799: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* if both appear, take the first one */ : if (slashstar > dashdash) : slashstar = dashdash; : } : else if (!slashstar) 0.00 : 5107a0: 48 89 c3 mov %rax,%rbx 0.00 : 5107a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5107a8: e9 3e ee ff ff jmpq 50f5eb : if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { : /* Extend the array by 50%, plus the number we really need. */ : yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) core_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) : YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 0.00 : 5107ad: 4c 89 f6 mov %r14,%rsi 0.00 : 5107b0: bf 08 e5 7b 00 mov $0x7be508,%edi 0.00 : 5107b5: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 5107b9: e8 22 da ff ff callq 50e1e0 0.00 : 5107be: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 5107c1: 41 03 46 34 add 0x34(%r14),%eax 0.00 : 5107c5: 49 8b 4e 28 mov 0x28(%r14),%rcx 0.00 : 5107c9: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 5107cd: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 5107d1: 48 63 f0 movslq %eax,%rsi 0.00 : 5107d4: e9 f2 fc ff ff jmpq 5104cb : yy_cp = yyg->yy_c_buf_p; : goto yy_find_action; : } : } : : else switch ( yy_get_next_buffer( yyscanner ) ) 0.00 : 5107d9: 48 8b 34 ce mov (%rsi,%rcx,8),%rsi 0.00 : 5107dd: 49 89 d0 mov %rdx,%r8 0.00 : 5107e0: e9 8f f3 ff ff jmpq 50fb74 : return yytext[0]; : } : {dolqdelim} { : if (strcmp(yytext, yyextra->dolqstart) == 0) : { : pfree(yyextra->dolqstart); 0.00 : 5107e5: 48 89 df mov %rbx,%rdi 0.00 : 5107e8: e8 93 83 28 00 callq 798b80 : yyextra->dolqstart = NULL; 0.00 : 5107ed: 49 8b 06 mov (%r14),%rax 0.00 : 5107f0: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 5107f7: 00 : BEGIN(INITIAL); 0.00 : 5107f8: 41 c7 46 4c 01 00 00 movl $0x1,0x4c(%r14) 0.00 : 5107ff: 00 0.00 : 510800: e9 1f f4 ff ff jmpq 50fc24 : startlit(); : } : {xusstart} { : SET_YYLLOC(); : if (!standard_conforming_strings) : ereport(ERROR, 0.00 : 510805: 45 31 c0 xor %r8d,%r8d 0.00 : 510808: b9 98 e9 7c 00 mov $0x7ce998,%ecx 0.00 : 51080d: ba 10 02 00 00 mov $0x210,%edx 0.00 : 510812: be bb 92 7c 00 mov $0x7c92bb,%esi 0.00 : 510817: bf 14 00 00 00 mov $0x14,%edi 0.00 : 51081c: e8 9f a2 26 00 callq 77aac0 0.00 : 510821: 84 c0 test %al,%al 0.00 : 510823: 0f 84 7b f1 ff ff je 50f9a4 0.00 : 510829: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 510830: 4c 89 f6 mov %r14,%rsi 0.00 : 510833: 8b 38 mov (%rax),%edi 0.00 : 510835: e8 66 d4 ff ff callq 50dca0 0.00 : 51083a: bf d8 9a 7c 00 mov $0x7c9ad8,%edi 0.00 : 51083f: 41 89 c5 mov %eax,%r13d 0.00 : 510842: 31 c0 xor %eax,%eax 0.00 : 510844: e8 e7 bc 26 00 callq 77c530 0.00 : 510849: bf 38 9b 7c 00 mov $0x7c9b38,%edi 0.00 : 51084e: 89 c3 mov %eax,%ebx 0.00 : 510850: 31 c0 xor %eax,%eax 0.00 : 510852: e8 49 c0 26 00 callq 77c8a0 0.00 : 510857: bf 40 04 00 00 mov $0x440,%edi 0.00 : 51085c: 41 89 c4 mov %eax,%r12d 0.00 : 51085f: e9 54 fb ff ff jmpq 5103b8 : lexer_errposition())); : } : {xeescape} { : if (yytext[1] == '\'') : { : if (backslash_quote == BACKSLASH_QUOTE_OFF || 0.00 : 510864: e8 e7 7e 27 00 callq 788750 0.00 : 510869: 83 f8 29 cmp $0x29,%eax 0.00 : 51086c: 0f 8f 3c f9 ff ff jg 5101ae : (backslash_quote == BACKSLASH_QUOTE_SAFE_ENCODING && : PG_ENCODING_IS_CLIENT_ONLY(pg_get_client_encoding()))) : ereport(ERROR, 0.00 : 510872: 45 31 c0 xor %r8d,%r8d 0.00 : 510875: b9 98 e9 7c 00 mov $0x7ce998,%ecx 0.00 : 51087a: ba 78 02 00 00 mov $0x278,%edx 0.00 : 51087f: be bb 92 7c 00 mov $0x7c92bb,%esi 0.00 : 510884: bf 14 00 00 00 mov $0x14,%edi 0.00 : 510889: e8 32 a2 26 00 callq 77aac0 0.00 : 51088e: 84 c0 test %al,%al 0.00 : 510890: 0f 84 0e f1 ff ff je 50f9a4 0.00 : 510896: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 51089d: 4c 89 f6 mov %r14,%rsi 0.00 : 5108a0: 8b 38 mov (%rax),%edi 0.00 : 5108a2: e8 f9 d3 ff ff callq 50dca0 0.00 : 5108a7: bf c8 9b 7c 00 mov $0x7c9bc8,%edi 0.00 : 5108ac: 41 89 c5 mov %eax,%r13d 0.00 : 5108af: 31 c0 xor %eax,%eax 0.00 : 5108b1: e8 ea b3 26 00 callq 77bca0 0.00 : 5108b6: bf 18 9c 7c 00 mov $0x7c9c18,%edi 0.00 : 5108bb: 89 c3 mov %eax,%ebx 0.00 : 5108bd: 31 c0 xor %eax,%eax 0.00 : 5108bf: e8 dc bf 26 00 callq 77c8a0 0.00 : 5108c4: bf 82 00 02 06 mov $0x6020082,%edi 0.00 : 5108c9: 41 89 c4 mov %eax,%r12d 0.00 : 5108cc: e9 e7 fa ff ff jmpq 5103b8 : { : register yy_state_type yy_current_state; : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 5108d1: 49 63 46 4c movslq 0x4c(%r14),%rax : */ : if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) : { /* This was really a NUL. */ : yy_state_type yy_next_state; : : yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; 0.00 : 5108d5: 4c 63 65 b8 movslq -0x48(%rbp),%r12 0.00 : 5108d9: 4d 03 a6 80 00 00 00 add 0x80(%r14),%r12 : { : register yy_state_type yy_current_state; : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; 0.00 : 5108e0: 48 8b 0c c5 c0 e8 7c mov 0x7ce8c0(,%rax,8),%rcx 0.00 : 5108e7: 00 : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 5108e8: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : */ : if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) : { /* This was really a NUL. */ : yy_state_type yy_next_state; : : yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; 0.00 : 5108ef: 4d 89 66 40 mov %r12,0x40(%r14) : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 5108f3: 49 39 c4 cmp %rax,%r12 0.00 : 5108f6: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 5108fa: 76 2a jbe 510926 0.00 : 5108fc: 48 89 c2 mov %rax,%rdx : { : yy_current_state += yy_current_state[(*yy_cp ? YY_SC_TO_UI(*yy_cp) : 256)].yy_nxt; 0.00 : 5108ff: 0f b6 32 movzbl (%rdx),%esi 0.00 : 510902: b8 00 08 00 00 mov $0x800,%eax 0.00 : 510907: 40 84 f6 test %sil,%sil 0.00 : 51090a: 74 08 je 510914 0.00 : 51090c: 40 0f b6 c6 movzbl %sil,%eax 0.00 : 510910: 48 c1 e0 03 shl $0x3,%rax 0.00 : 510914: 48 63 44 01 04 movslq 0x4(%rcx,%rax,1),%rax : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 510919: 48 83 c2 01 add $0x1,%rdx 0.00 : 51091d: 49 39 d4 cmp %rdx,%r12 : { : yy_current_state += yy_current_state[(*yy_cp ? YY_SC_TO_UI(*yy_cp) : 256)].yy_nxt; 0.00 : 510920: 48 8d 0c c1 lea (%rcx,%rax,8),%rcx : register char *yy_cp; : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; : : yy_current_state = yy_start_state_list[yyg->yy_start]; : : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 0.00 : 510924: 77 d9 ja 5108ff : : yy_trans_info = &yy_current_state[(unsigned int) yy_c]; : yy_current_state += yy_trans_info->yy_nxt; : yy_is_jam = (yy_trans_info->yy_verify != yy_c); : : return yy_is_jam ? 0 : yy_current_state; 0.00 : 510926: 81 b9 00 08 00 00 00 cmpl $0x100,0x800(%rcx) 0.00 : 51092d: 01 00 00 : : register int yy_c = 256; : register yyconst struct yy_trans_info *yy_trans_info; : : yy_trans_info = &yy_current_state[(unsigned int) yy_c]; : yy_current_state += yy_trans_info->yy_nxt; 0.00 : 510930: 8b 81 04 08 00 00 mov 0x804(%rcx),%eax : yy_is_jam = (yy_trans_info->yy_verify != yy_c); : : return yy_is_jam ? 0 : yy_current_state; 0.00 : 510936: 0f 85 49 e8 ff ff jne 50f185 : : register int yy_c = 256; : register yyconst struct yy_trans_info *yy_trans_info; : : yy_trans_info = &yy_current_state[(unsigned int) yy_c]; : yy_current_state += yy_trans_info->yy_nxt; 0.00 : 51093c: 48 98 cltq 0.00 : 51093e: 48 8d 04 c1 lea (%rcx,%rax,8),%rax : : yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); : : yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; : : if ( yy_next_state ) 0.00 : 510942: 48 85 c0 test %rax,%rax 0.00 : 510945: 0f 84 3a e8 ff ff je 50f185 : { : /* Consume the NUL. */ : yy_cp = ++yyg->yy_c_buf_p; 0.00 : 51094b: 49 83 c4 01 add $0x1,%r12 0.00 : 51094f: 48 89 c1 mov %rax,%rcx 0.00 : 510952: 4d 89 66 40 mov %r12,0x40(%r14) : yy_current_state = yy_next_state; : goto yy_match; 0.00 : 510956: e9 11 fc ff ff jmpq 51056c : * for identifiers, we make this an error not a notice- : * and-truncate, because the odds are we are looking at : * a syntactic mistake anyway. : */ : if (nchars >= NAMEDATALEN) : yyerror("operator too long"); 0.00 : 51095b: 4c 89 f6 mov %r14,%rsi 0.00 : 51095e: bf b2 93 7c 00 mov $0x7c93b2,%edi 0.00 : 510963: e8 68 d3 ff ff callq 50dcd0 : } : else if (ychar == '\\') : { : if (yyextra->warn_on_first_escape && escape_string_warning) : ereport(WARNING, : (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), 0.00 : 510968: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 51096f: 4c 89 f6 mov %r14,%rsi 0.00 : 510972: 8b 38 mov (%rax),%edi 0.00 : 510974: e8 27 d3 ff ff callq 50dca0 0.00 : 510979: bf c0 9c 7c 00 mov $0x7c9cc0,%edi 0.00 : 51097e: 41 89 c5 mov %eax,%r13d 0.00 : 510981: 31 c0 xor %eax,%eax 0.00 : 510983: e8 18 b3 26 00 callq 77bca0 0.00 : 510988: bf 00 9d 7c 00 mov $0x7c9d00,%edi 0.00 : 51098d: 89 c3 mov %eax,%ebx 0.00 : 51098f: e9 e6 fc ff ff jmpq 51067a : : if ( num_to_read > YY_READ_BUF_SIZE ) : num_to_read = YY_READ_BUF_SIZE; : : /* Read in more data. */ : YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 0.00 : 510994: 4c 89 55 98 mov %r10,-0x68(%rbp) 0.00 : 510998: 4c 89 f6 mov %r14,%rsi 0.00 : 51099b: bf 56 e2 7b 00 mov $0x7be256,%edi 0.00 : 5109a0: e8 3b d8 ff ff callq 50e1e0 0.00 : 5109a5: 89 da mov %ebx,%edx 0.00 : 5109a7: 4c 8b 55 98 mov -0x68(%rbp),%r10 0.00 : 5109ab: e9 b2 fa ff ff jmpq 510462 : BEGIN(INITIAL); : if (yyextra->literallen == 0) : yyerror("zero-length delimited identifier"); : if (!check_uescapechar(yytext[yyleng-2])) : { : SET_YYLLOC(); 0.00 : 5109b0: 49 8b 16 mov (%r14),%rdx 0.00 : 5109b3: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax : ADVANCE_YYLLOC(yyleng-2); : yyerror("invalid Unicode escape character"); 0.00 : 5109ba: 4c 89 f6 mov %r14,%rsi : BEGIN(INITIAL); : if (yyextra->literallen == 0) : yyerror("zero-length delimited identifier"); : if (!check_uescapechar(yytext[yyleng-2])) : { : SET_YYLLOC(); 0.00 : 5109bd: 49 8b 8e 98 00 00 00 mov 0x98(%r14),%rcx : ADVANCE_YYLLOC(yyleng-2); : yyerror("invalid Unicode escape character"); 0.00 : 5109c4: bf 70 9b 7c 00 mov $0x7c9b70,%edi : BEGIN(INITIAL); : if (yyextra->literallen == 0) : yyerror("zero-length delimited identifier"); : if (!check_uescapechar(yytext[yyleng-2])) : { : SET_YYLLOC(); 0.00 : 5109c9: 2b 02 sub (%rdx),%eax 0.00 : 5109cb: 89 01 mov %eax,(%rcx) : ADVANCE_YYLLOC(yyleng-2); 0.00 : 5109cd: 41 8b 46 38 mov 0x38(%r14),%eax 0.00 : 5109d1: 49 8b 96 98 00 00 00 mov 0x98(%r14),%rdx 0.00 : 5109d8: 83 e8 02 sub $0x2,%eax 0.00 : 5109db: 01 02 add %eax,(%rdx) : yyerror("invalid Unicode escape character"); 0.00 : 5109dd: e8 ee d2 ff ff callq 50dcd0 : char *ident; : int identlen; : : BEGIN(INITIAL); : if (yyextra->literallen == 0) : yyerror("zero-length delimited identifier"); 0.00 : 5109e2: 4c 89 f6 mov %r14,%rsi 0.00 : 5109e5: bf 58 9d 7c 00 mov $0x7c9d58,%edi 0.00 : 5109ea: e8 e1 d2 ff ff callq 50dcd0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_agg.c:1104 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000052aa80 : : * : * The function result is the number of actual arguments. : */ : int : get_aggregate_argtypes(Aggref *aggref, Oid *inputTypes) : { 0.00 : 52aa80: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_agg.c:1104 100.00 : 52aa81: 48 89 e5 mov %rsp,%rbp 0.00 : 52aa84: 41 56 push %r14 0.00 : 52aa86: 49 89 fe mov %rdi,%r14 0.00 : 52aa89: 41 55 push %r13 0.00 : 52aa8b: 49 89 f5 mov %rsi,%r13 0.00 : 52aa8e: 41 54 push %r12 0.00 : 52aa90: 53 push %rbx : int numArguments = 0; : ListCell *lc; : : /* Any direct arguments of an ordered-set aggregate come first */ : foreach(lc, aggref->aggdirectargs) 0.00 : 52aa91: 48 8b 47 18 mov 0x18(%rdi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 52aa95: 48 85 c0 test %rax,%rax 0.00 : 52aa98: 0f 84 8a 00 00 00 je 52ab28 0.00 : 52aa9e: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 52aaa2: 48 85 db test %rbx,%rbx 0.00 : 52aaa5: 0f 84 7d 00 00 00 je 52ab28 0.00 : 52aaab: 45 31 e4 xor %r12d,%r12d 0.00 : 52aaae: 66 90 xchg %ax,%ax : { : Node *expr = (Node *) lfirst(lc); : : inputTypes[numArguments] = exprType(expr); 0.00 : 52aab0: 48 8b 3b mov (%rbx),%rdi 0.00 : 52aab3: e8 18 62 0b 00 callq 5e0cd0 0.00 : 52aab8: 49 63 d4 movslq %r12d,%rdx : numArguments++; 0.00 : 52aabb: 41 83 c4 01 add $0x1,%r12d : /* Any direct arguments of an ordered-set aggregate come first */ : foreach(lc, aggref->aggdirectargs) : { : Node *expr = (Node *) lfirst(lc); : : inputTypes[numArguments] = exprType(expr); 0.00 : 52aabf: 41 89 44 95 00 mov %eax,0x0(%r13,%rdx,4) : { : int numArguments = 0; : ListCell *lc; : : /* Any direct arguments of an ordered-set aggregate come first */ : foreach(lc, aggref->aggdirectargs) 0.00 : 52aac4: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 52aac8: 48 85 db test %rbx,%rbx 0.00 : 52aacb: 75 e3 jne 52aab0 : inputTypes[numArguments] = exprType(expr); : numArguments++; : } : : /* Now get the regular (aggregated) arguments */ : foreach(lc, aggref->args) 0.00 : 52aacd: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 52aad1: 48 85 c0 test %rax,%rax 0.00 : 52aad4: 74 43 je 52ab19 0.00 : 52aad6: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 52aada: 48 85 db test %rbx,%rbx 0.00 : 52aadd: 75 13 jne 52aaf2 0.00 : 52aadf: 90 nop 0.00 : 52aae0: eb 37 jmp 52ab19 0.00 : 52aae2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 52aae8: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 52aaec: 48 85 db test %rbx,%rbx 0.00 : 52aaef: 90 nop 0.00 : 52aaf0: 74 27 je 52ab19 : { : TargetEntry *tle = (TargetEntry *) lfirst(lc); 0.00 : 52aaf2: 48 8b 03 mov (%rbx),%rax : : /* Ignore ordering columns of a plain aggregate */ : if (tle->resjunk) 0.00 : 52aaf5: 80 78 2a 00 cmpb $0x0,0x2a(%rax) 0.00 : 52aaf9: 75 ed jne 52aae8 : continue; : : inputTypes[numArguments] = exprType((Node *) tle->expr); 0.00 : 52aafb: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 52aaff: e8 cc 61 0b 00 callq 5e0cd0 0.00 : 52ab04: 49 63 d4 movslq %r12d,%rdx : numArguments++; 0.00 : 52ab07: 41 83 c4 01 add $0x1,%r12d : : /* Ignore ordering columns of a plain aggregate */ : if (tle->resjunk) : continue; : : inputTypes[numArguments] = exprType((Node *) tle->expr); 0.00 : 52ab0b: 41 89 44 95 00 mov %eax,0x0(%r13,%rdx,4) : inputTypes[numArguments] = exprType(expr); : numArguments++; : } : : /* Now get the regular (aggregated) arguments */ : foreach(lc, aggref->args) 0.00 : 52ab10: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 52ab14: 48 85 db test %rbx,%rbx 0.00 : 52ab17: 75 d9 jne 52aaf2 : inputTypes[numArguments] = exprType((Node *) tle->expr); : numArguments++; : } : : return numArguments; : } 0.00 : 52ab19: 5b pop %rbx 0.00 : 52ab1a: 44 89 e0 mov %r12d,%eax 0.00 : 52ab1d: 41 5c pop %r12 0.00 : 52ab1f: 41 5d pop %r13 0.00 : 52ab21: 41 5e pop %r14 0.00 : 52ab23: c9 leaveq 0.00 : 52ab24: c3 retq 0.00 : 52ab25: 0f 1f 00 nopl (%rax) : { : int numArguments = 0; : ListCell *lc; : : /* Any direct arguments of an ordered-set aggregate come first */ : foreach(lc, aggref->aggdirectargs) 0.00 : 52ab28: 45 31 e4 xor %r12d,%r12d 0.00 : 52ab2b: eb a0 jmp 52aacd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_coerce.c:531 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000530690 : : * as this determines the set of available casts. : */ : bool : can_coerce_type(int nargs, Oid *input_typeids, Oid *target_typeids, : CoercionContext ccontext) : { 0.00 : 530690: 55 push %rbp 0.00 : 530691: 49 89 f1 mov %rsi,%r9 0.00 : 530694: 49 89 d0 mov %rdx,%r8 0.00 : 530697: 48 89 e5 mov %rsp,%rbp 0.00 : 53069a: 41 57 push %r15 0.00 : 53069c: 41 89 ff mov %edi,%r15d 0.00 : 53069f: 41 56 push %r14 0.00 : 5306a1: 41 55 push %r13 0.00 : 5306a3: 41 54 push %r12 0.00 : 5306a5: 53 push %rbx 0.00 : 5306a6: 48 83 ec 38 sub $0x38,%rsp : bool have_generics = false; : int i; : : /* run through argument list... */ : for (i = 0; i < nargs; i++) 0.00 : 5306aa: 85 ff test %edi,%edi : * as this determines the set of available casts. : */ : bool : can_coerce_type(int nargs, Oid *input_typeids, Oid *target_typeids, : CoercionContext ccontext) : { 0.00 : 5306ac: 89 4d c4 mov %ecx,-0x3c(%rbp) : bool have_generics = false; : int i; : : /* run through argument list... */ : for (i = 0; i < nargs; i++) 0.00 : 5306af: 0f 8e 11 01 00 00 jle 5307c6 0.00 : 5306b5: 45 31 d2 xor %r10d,%r10d 0.00 : 5306b8: 45 31 f6 xor %r14d,%r14d 0.00 : 5306bb: 45 31 e4 xor %r12d,%r12d 0.00 : 5306be: 66 90 xchg %ax,%ax : { : Oid inputTypeId = input_typeids[i]; 0.00 : 5306c0: 47 8b 2c 21 mov (%r9,%r12,1),%r13d : Oid targetTypeId = target_typeids[i]; 0.00 : 5306c4: 43 8b 1c 20 mov (%r8,%r12,1),%ebx : CoercionPathType pathtype; : Oid funcId; : : /* no problem if same type */ : if (inputTypeId == targetTypeId) 0.00 : 5306c8: 41 39 dd cmp %ebx,%r13d 0.00 : 5306cb: 0f 84 df 00 00 00 je 5307b0 : continue; : : /* accept if target is ANY */ : if (targetTypeId == ANYOID) 0.00 : 5306d1: 81 fb e4 08 00 00 cmp $0x8e4,%ebx 0.00 : 5306d7: 0f 84 d3 00 00 00 je 5307b0 : continue; : : /* accept if target is polymorphic, for now */ : if (IsPolymorphicType(targetTypeId)) 0.00 : 5306dd: 81 fb eb 08 00 00 cmp $0x8eb,%ebx 0.00 : 5306e3: 0f 84 f7 00 00 00 je 5307e0 0.00 : 5306e9: 81 fb e5 08 00 00 cmp $0x8e5,%ebx 0.00 : 5306ef: 90 nop 0.00 : 5306f0: 0f 84 ea 00 00 00 je 5307e0 0.00 : 5306f6: 81 fb d8 0a 00 00 cmp $0xad8,%ebx 0.00 : 5306fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 530700: 0f 84 da 00 00 00 je 5307e0 0.00 : 530706: 81 fb ac 0d 00 00 cmp $0xdac,%ebx 0.00 : 53070c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 530710: 0f 84 ca 00 00 00 je 5307e0 0.00 : 530716: 81 fb f7 0e 00 00 cmp $0xef7,%ebx 0.00 : 53071c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 530720: 0f 84 ba 00 00 00 je 5307e0 : : /* : * If input is an untyped string constant, assume we can convert it to : * anything. : */ : if (inputTypeId == UNKNOWNOID) 0.00 : 530726: 41 81 fd c1 02 00 00 cmp $0x2c1,%r13d 0.00 : 53072d: 0f 1f 00 nopl (%rax) 0.00 : 530730: 74 7e je 5307b0 : : /* : * If pg_cast shows that we can coerce, accept. This test now covers : * both binary-compatible and coercion-function cases. : */ : pathtype = find_coercion_pathway(targetTypeId, inputTypeId, ccontext, 0.00 : 530732: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 530735: 48 8d 4d d4 lea -0x2c(%rbp),%rcx 0.00 : 530739: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 53073d: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 530741: 44 88 55 a8 mov %r10b,-0x58(%rbp) 0.00 : 530745: 44 89 ee mov %r13d,%esi 0.00 : 530748: 89 df mov %ebx,%edi 0.00 : 53074a: e8 f1 e9 ff ff callq 52f140 : &funcId); : if (pathtype != COERCION_PATH_NONE) /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_coerce.c:531 100.00 : 53074f: 85 c0 test %eax,%eax 0.00 : 530751: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 530755: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 530759: 44 0f b6 55 a8 movzbl -0x58(%rbp),%r10d 0.00 : 53075e: 75 50 jne 5307b0 : : /* : * If input is RECORD and target is a composite type, assume we can : * coerce (may need tighter checking here) : */ : if (inputTypeId == RECORDOID && 0.00 : 530760: 41 81 fd c9 08 00 00 cmp $0x8c9,%r13d 0.00 : 530767: 0f 84 09 01 00 00 je 530876 : continue; : : /* : * If input is a composite type and target is RECORD, accept : */ : if (targetTypeId == RECORDOID && 0.00 : 53076d: 81 fb c9 08 00 00 cmp $0x8c9,%ebx 0.00 : 530773: 0f 84 1e 01 00 00 je 530897 : #endif : : /* : * If input is a composite array type and target is record[], accept : */ : if (targetTypeId == RECORDARRAYOID && 0.00 : 530779: 81 fb ef 08 00 00 cmp $0x8ef,%ebx 0.00 : 53077f: 90 nop 0.00 : 530780: 0f 84 c2 00 00 00 je 530848 : continue; : : /* : * If input is a class type that inherits from target, accept : */ : if (typeInheritsFrom(inputTypeId, targetTypeId) 0.00 : 530786: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 53078a: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 53078e: 89 de mov %ebx,%esi 0.00 : 530790: 44 88 55 a8 mov %r10b,-0x58(%rbp) 0.00 : 530794: 44 89 ef mov %r13d,%edi 0.00 : 530797: e8 94 15 fd ff callq 501d30 0.00 : 53079c: 84 c0 test %al,%al 0.00 : 53079e: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 5307a2: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 5307a6: 44 0f b6 55 a8 movzbl -0x58(%rbp),%r10d 0.00 : 5307ab: 74 75 je 530822 0.00 : 5307ad: 0f 1f 00 nopl (%rax) : { : bool have_generics = false; : int i; : : /* run through argument list... */ : for (i = 0; i < nargs; i++) 0.00 : 5307b0: 41 83 c6 01 add $0x1,%r14d 0.00 : 5307b4: 49 83 c4 04 add $0x4,%r12 0.00 : 5307b8: 45 39 f7 cmp %r14d,%r15d 0.00 : 5307bb: 0f 8f ff fe ff ff jg 5306c0 : */ : return false; : } : : /* If we found any generic argument types, cross-check them */ : if (have_generics) 0.00 : 5307c1: 45 84 d2 test %r10b,%r10b 0.00 : 5307c4: 75 3a jne 530800 : { : if (!check_generic_type_consistency(input_typeids, target_typeids, 0.00 : 5307c6: b8 01 00 00 00 mov $0x1,%eax : nargs)) : return false; : } : : return true; : } 0.00 : 5307cb: 48 83 c4 38 add $0x38,%rsp 0.00 : 5307cf: 5b pop %rbx 0.00 : 5307d0: 41 5c pop %r12 0.00 : 5307d2: 41 5d pop %r13 0.00 : 5307d4: 41 5e pop %r14 0.00 : 5307d6: 41 5f pop %r15 0.00 : 5307d8: c9 leaveq 0.00 : 5307d9: c3 retq 0.00 : 5307da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : bool have_generics = false; : int i; : : /* run through argument list... */ : for (i = 0; i < nargs; i++) 0.00 : 5307e0: 41 83 c6 01 add $0x1,%r14d 0.00 : 5307e4: 49 83 c4 04 add $0x4,%r12 : continue; : : /* : * If input is a class type that inherits from target, accept : */ : if (typeInheritsFrom(inputTypeId, targetTypeId) 0.00 : 5307e8: 41 ba 01 00 00 00 mov $0x1,%r10d : { : bool have_generics = false; : int i; : : /* run through argument list... */ : for (i = 0; i < nargs; i++) 0.00 : 5307ee: 45 39 f7 cmp %r14d,%r15d 0.00 : 5307f1: 0f 8f c9 fe ff ff jg 5306c0 0.00 : 5307f7: eb c8 jmp 5307c1 0.00 : 5307f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : : /* If we found any generic argument types, cross-check them */ : if (have_generics) : { : if (!check_generic_type_consistency(input_typeids, target_typeids, 0.00 : 530800: 44 89 fa mov %r15d,%edx 0.00 : 530803: 4c 89 c6 mov %r8,%rsi 0.00 : 530806: 4c 89 cf mov %r9,%rdi 0.00 : 530809: e8 12 ee ff ff callq 52f620 0.00 : 53080e: 84 c0 test %al,%al 0.00 : 530810: 0f 95 c0 setne %al : nargs)) : return false; : } : : return true; : } 0.00 : 530813: 48 83 c4 38 add $0x38,%rsp 0.00 : 530817: 5b pop %rbx 0.00 : 530818: 41 5c pop %r12 0.00 : 53081a: 41 5d pop %r13 0.00 : 53081c: 41 5e pop %r14 0.00 : 53081e: 41 5f pop %r15 0.00 : 530820: c9 leaveq 0.00 : 530821: c3 retq : continue; : : /* : * If input is a class type that inherits from target, accept : */ : if (typeInheritsFrom(inputTypeId, targetTypeId) 0.00 : 530822: 89 de mov %ebx,%esi 0.00 : 530824: 44 89 ef mov %r13d,%edi 0.00 : 530827: e8 14 e8 ff ff callq 52f040 0.00 : 53082c: 84 c0 test %al,%al 0.00 : 53082e: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 530832: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 530836: 44 0f b6 55 a8 movzbl -0x58(%rbp),%r10d 0.00 : 53083b: 0f 85 6f ff ff ff jne 5307b0 0.00 : 530841: eb 88 jmp 5307cb 0.00 : 530843: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : #endif : : /* : * If input is a composite array type and target is record[], accept : */ : if (targetTypeId == RECORDARRAYOID && 0.00 : 530848: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 53084c: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 530850: 44 89 ef mov %r13d,%edi 0.00 : 530853: 44 88 55 a8 mov %r10b,-0x58(%rbp) 0.00 : 530857: e8 14 e6 ff ff callq 52ee70 0.00 : 53085c: 84 c0 test %al,%al 0.00 : 53085e: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 530862: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 530866: 44 0f b6 55 a8 movzbl -0x58(%rbp),%r10d 0.00 : 53086b: 0f 85 3f ff ff ff jne 5307b0 0.00 : 530871: e9 10 ff ff ff jmpq 530786 : : /* : * If input is RECORD and target is a composite type, assume we can : * coerce (may need tighter checking here) : */ : if (inputTypeId == RECORDOID && 0.00 : 530876: 89 df mov %ebx,%edi 0.00 : 530878: e8 e3 20 01 00 callq 542960 0.00 : 53087d: 85 c0 test %eax,%eax 0.00 : 53087f: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 530883: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 530887: 44 0f b6 55 a8 movzbl -0x58(%rbp),%r10d 0.00 : 53088c: 0f 85 1e ff ff ff jne 5307b0 0.00 : 530892: e9 d6 fe ff ff jmpq 53076d : continue; : : /* : * If input is a composite type and target is RECORD, accept : */ : if (targetTypeId == RECORDOID && 0.00 : 530897: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 53089b: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 53089f: 44 89 ef mov %r13d,%edi 0.00 : 5308a2: 44 88 55 a8 mov %r10b,-0x58(%rbp) 0.00 : 5308a6: e8 b5 20 01 00 callq 542960 0.00 : 5308ab: 85 c0 test %eax,%eax 0.00 : 5308ad: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 5308b1: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 5308b5: 44 0f b6 55 a8 movzbl -0x58(%rbp),%r10d 0.00 : 5308ba: 0f 85 f0 fe ff ff jne 5307b0 0.00 : 5308c0: e9 c1 fe ff ff jmpq 530786 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_func.c:1263 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005383b0 : : bool *retset, /* return value */ : int *nvargs, /* return value */ : Oid *vatype, /* return value */ : Oid **true_typeids, /* return value */ : List **argdefaults) /* optional return value */ : { /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_func.c:1263 100.00 : 5383b0: 55 push %rbp 0.00 : 5383b1: 48 89 e5 mov %rsp,%rbp 0.00 : 5383b4: 41 57 push %r15 0.00 : 5383b6: 49 89 ff mov %rdi,%r15 0.00 : 5383b9: 41 56 push %r14 0.00 : 5383bb: 41 55 push %r13 0.00 : 5383bd: 41 89 cd mov %ecx,%r13d 0.00 : 5383c0: 41 54 push %r12 0.00 : 5383c2: 53 push %rbx 0.00 : 5383c3: 4c 89 c3 mov %r8,%rbx 0.00 : 5383c6: 48 83 ec 48 sub $0x48,%rsp 0.00 : 5383ca: 48 89 55 a0 mov %rdx,-0x60(%rbp) : FuncCandidateList raw_candidates; : FuncCandidateList best_candidate; : : /* initialize output arguments to silence compiler warnings */ : *funcid = InvalidOid; 0.00 : 5383ce: 48 8b 55 18 mov 0x18(%rbp),%rdx : bool *retset, /* return value */ : int *nvargs, /* return value */ : Oid *vatype, /* return value */ : Oid **true_typeids, /* return value */ : List **argdefaults) /* optional return value */ : { 0.00 : 5383d2: 48 89 75 a8 mov %rsi,-0x58(%rbp) 0.00 : 5383d6: 44 88 4d 9f mov %r9b,-0x61(%rbp) 0.00 : 5383da: 0f b6 45 10 movzbl 0x10(%rbp),%eax : FuncCandidateList raw_candidates; : FuncCandidateList best_candidate; : : /* initialize output arguments to silence compiler warnings */ : *funcid = InvalidOid; 0.00 : 5383de: c7 02 00 00 00 00 movl $0x0,(%rdx) : *rettype = InvalidOid; 0.00 : 5383e4: 48 8b 4d 20 mov 0x20(%rbp),%rcx 0.00 : 5383e8: c7 01 00 00 00 00 movl $0x0,(%rcx) : *retset = false; 0.00 : 5383ee: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 5383f2: c6 02 00 movb $0x0,(%rdx) : *nvargs = 0; 0.00 : 5383f5: 48 8b 4d 30 mov 0x30(%rbp),%rcx 0.00 : 5383f9: c7 01 00 00 00 00 movl $0x0,(%rcx) : *vatype = InvalidOid; 0.00 : 5383ff: 48 8b 55 38 mov 0x38(%rbp),%rdx 0.00 : 538403: c7 02 00 00 00 00 movl $0x0,(%rdx) : *true_typeids = NULL; 0.00 : 538409: 48 8b 4d 40 mov 0x40(%rbp),%rcx 0.00 : 53840d: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) : if (argdefaults) 0.00 : 538414: 48 83 7d 48 00 cmpq $0x0,0x48(%rbp) 0.00 : 538419: 74 0b je 538426 : *argdefaults = NIL; 0.00 : 53841b: 48 8b 55 48 mov 0x48(%rbp),%rdx 0.00 : 53841f: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) : : /* Get list of possible candidates from namespace search */ : raw_candidates = FuncnameGetCandidates(funcname, nargs, fargnames, 0.00 : 538426: 0f be 4d 9f movsbl -0x61(%rbp),%ecx 0.00 : 53842a: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 53842e: 45 31 c9 xor %r9d,%r9d 0.00 : 538431: 44 0f be c0 movsbl %al,%r8d 0.00 : 538435: 44 89 ee mov %r13d,%esi 0.00 : 538438: 4c 89 ff mov %r15,%rdi 0.00 : 53843b: e8 f0 7a fb ff callq 4eff30 : /* : * Quickly check if there is an exact match to the input datatypes (there : * can be only one) : */ : for (best_candidate = raw_candidates; : best_candidate != NULL; 0.00 : 538440: 48 85 c0 test %rax,%rax : *true_typeids = NULL; : if (argdefaults) : *argdefaults = NIL; : : /* Get list of possible candidates from namespace search */ : raw_candidates = FuncnameGetCandidates(funcname, nargs, fargnames, 0.00 : 538443: 49 89 c6 mov %rax,%r14 : /* : * Quickly check if there is an exact match to the input datatypes (there : * can be only one) : */ : for (best_candidate = raw_candidates; : best_candidate != NULL; 0.00 : 538446: 0f 84 68 02 00 00 je 5386b4 0.00 : 53844c: 49 63 c5 movslq %r13d,%rax 0.00 : 53844f: 4d 89 f4 mov %r14,%r12 0.00 : 538452: 4c 8d 04 85 00 00 00 lea 0x0(,%rax,4),%r8 0.00 : 538459: 00 0.00 : 53845a: eb 11 jmp 53846d 0.00 : 53845c: 0f 1f 40 00 nopl 0x0(%rax) : best_candidate = best_candidate->next) 0.00 : 538460: 4d 8b 24 24 mov (%r12),%r12 : /* : * Quickly check if there is an exact match to the input datatypes (there : * can be only one) : */ : for (best_candidate = raw_candidates; : best_candidate != NULL; 0.00 : 538464: 4d 85 e4 test %r12,%r12 0.00 : 538467: 0f 84 53 02 00 00 je 5386c0 : best_candidate = best_candidate->next) : { : if (memcmp(argtypes, best_candidate->args, nargs * sizeof(Oid)) == 0) 0.00 : 53846d: 49 8d 7c 24 28 lea 0x28(%r12),%rdi 0.00 : 538472: 4d 39 c0 cmp %r8,%r8 0.00 : 538475: 48 89 de mov %rbx,%rsi 0.00 : 538478: 4c 89 c1 mov %r8,%rcx 0.00 : 53847b: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 53847d: 75 e1 jne 538460 : return FUNCDETAIL_MULTIPLE; : } : } : } : : if (best_candidate) 0.00 : 53847f: 4d 85 e4 test %r12,%r12 0.00 : 538482: 0f 84 c7 02 00 00 je 53874f : /* : * If processing named args or expanding variadics or defaults, the : * "best candidate" might represent multiple equivalently good : * functions; treat this case as ambiguous. : */ : if (!OidIsValid(best_candidate->oid)) 0.00 : 538488: 41 8b 74 24 0c mov 0xc(%r12),%esi 0.00 : 53848d: 85 f6 test %esi,%esi 0.00 : 53848f: 0f 84 83 02 00 00 je 538718 : /* : * We disallow VARIADIC with named arguments unless the last argument : * (the one with VARIADIC attached) actually matched the variadic : * parameter. This is mere pedantry, really, but some folks insisted. : */ : if (fargnames != NIL && !expand_variadic && nargs > 0 && 0.00 : 538495: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : 53849a: 74 0a je 5384a6 0.00 : 53849c: 80 7d 9f 00 cmpb $0x0,-0x61(%rbp) 0.00 : 5384a0: 0f 84 8a 02 00 00 je 538730 : best_candidate->argnumbers[nargs - 1] != nargs - 1) : return FUNCDETAIL_NOTFOUND; : : *funcid = best_candidate->oid; 0.00 : 5384a6: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 5384aa: 89 30 mov %esi,(%rax) : *nvargs = best_candidate->nvargs; 0.00 : 5384ac: 41 8b 44 24 14 mov 0x14(%r12),%eax 0.00 : 5384b1: 48 8b 55 30 mov 0x30(%rbp),%rdx 0.00 : 5384b5: 89 02 mov %eax,(%rdx) : *true_typeids = best_candidate->args; 0.00 : 5384b7: 48 8b 4d 40 mov 0x40(%rbp),%rcx 0.00 : 5384bb: 49 8d 44 24 28 lea 0x28(%r12),%rax 0.00 : 5384c0: 48 89 01 mov %rax,(%rcx) : /* : * If processing named args, return actual argument positions into : * NamedArgExpr nodes in the fargs list. This is a bit ugly but not : * worth the extra notation needed to do it differently. : */ : if (best_candidate->argnumbers != NULL) 0.00 : 5384c3: 49 83 7c 24 20 00 cmpq $0x0,0x20(%r12) 0.00 : 5384c9: 74 4b je 538516 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5384cb: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) 0.00 : 5384d0: 74 44 je 538516 0.00 : 5384d2: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 5384d6: 48 8b 48 08 mov 0x8(%rax),%rcx : { : int i = 0; : ListCell *lc; : : foreach(lc, fargs) 0.00 : 5384da: 48 85 c9 test %rcx,%rcx 0.00 : 5384dd: 74 37 je 538516 0.00 : 5384df: 31 ff xor %edi,%edi 0.00 : 5384e1: eb 11 jmp 5384f4 0.00 : 5384e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5384e8: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 5384ec: 48 85 c9 test %rcx,%rcx 0.00 : 5384ef: 74 25 je 538516 : { : NamedArgExpr *na = (NamedArgExpr *) lfirst(lc); : : if (IsA(na, NamedArgExpr)) : na->argnumber = best_candidate->argnumbers[i]; : i++; 0.00 : 5384f1: 83 c7 01 add $0x1,%edi : int i = 0; : ListCell *lc; : : foreach(lc, fargs) : { : NamedArgExpr *na = (NamedArgExpr *) lfirst(lc); 0.00 : 5384f4: 48 8b 31 mov (%rcx),%rsi : : if (IsA(na, NamedArgExpr)) 0.00 : 5384f7: 81 3e 36 01 00 00 cmpl $0x136,(%rsi) 0.00 : 5384fd: 75 e9 jne 5384e8 : na->argnumber = best_candidate->argnumbers[i]; 0.00 : 5384ff: 49 8b 54 24 20 mov 0x20(%r12),%rdx 0.00 : 538504: 48 63 c7 movslq %edi,%rax 0.00 : 538507: 8b 04 82 mov (%rdx,%rax,4),%eax 0.00 : 53850a: 89 46 18 mov %eax,0x18(%rsi) : if (best_candidate->argnumbers != NULL) : { : int i = 0; : ListCell *lc; : : foreach(lc, fargs) 0.00 : 53850d: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 538511: 48 85 c9 test %rcx,%rcx 0.00 : 538514: 75 db jne 5384f1 : na->argnumber = best_candidate->argnumbers[i]; : i++; : } : } : : ftup = SearchSysCache1(PROCOID, 0.00 : 538516: 41 8b 74 24 0c mov 0xc(%r12),%esi 0.00 : 53851b: 45 31 c0 xor %r8d,%r8d 0.00 : 53851e: 31 c9 xor %ecx,%ecx 0.00 : 538520: 31 d2 xor %edx,%edx 0.00 : 538522: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 538527: e8 94 97 23 00 callq 771cc0 : ObjectIdGetDatum(best_candidate->oid)); : if (!HeapTupleIsValid(ftup)) /* should not happen */ 0.00 : 53852c: 48 85 c0 test %rax,%rax : na->argnumber = best_candidate->argnumbers[i]; : i++; : } : } : : ftup = SearchSysCache1(PROCOID, 0.00 : 53852f: 48 89 45 b8 mov %rax,-0x48(%rbp) : ObjectIdGetDatum(best_candidate->oid)); : if (!HeapTupleIsValid(ftup)) /* should not happen */ 0.00 : 538533: 0f 84 c6 02 00 00 je 5387ff : elog(ERROR, "cache lookup failed for function %u", : best_candidate->oid); : pform = (Form_pg_proc) GETSTRUCT(ftup); 0.00 : 538539: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 53853d: 48 8b 51 10 mov 0x10(%rcx),%rdx : *rettype = pform->prorettype; 0.00 : 538541: 48 8b 4d 20 mov 0x20(%rbp),%rcx : ftup = SearchSysCache1(PROCOID, : ObjectIdGetDatum(best_candidate->oid)); : if (!HeapTupleIsValid(ftup)) /* should not happen */ : elog(ERROR, "cache lookup failed for function %u", : best_candidate->oid); : pform = (Form_pg_proc) GETSTRUCT(ftup); 0.00 : 538545: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 538549: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 53854d: 48 89 45 c0 mov %rax,-0x40(%rbp) : *rettype = pform->prorettype; 0.00 : 538551: 48 89 c2 mov %rax,%rdx 0.00 : 538554: 8b 40 68 mov 0x68(%rax),%eax 0.00 : 538557: 89 01 mov %eax,(%rcx) : *retset = pform->proretset; 0.00 : 538559: 0f b6 42 61 movzbl 0x61(%rdx),%eax 0.00 : 53855d: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 538561: 88 02 mov %al,(%rdx) : *vatype = pform->provariadic; 0.00 : 538563: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 538567: 48 8b 55 38 mov 0x38(%rbp),%rdx 0.00 : 53856b: 8b 41 54 mov 0x54(%rcx),%eax 0.00 : 53856e: 89 02 mov %eax,(%rdx) : /* fetch default args if caller wants 'em */ : if (argdefaults && best_candidate->ndargs > 0) 0.00 : 538570: 48 83 7d 48 00 cmpq $0x0,0x48(%rbp) 0.00 : 538575: 0f 84 0f 01 00 00 je 53868a 0.00 : 53857b: 41 8b 54 24 18 mov 0x18(%r12),%edx 0.00 : 538580: 85 d2 test %edx,%edx 0.00 : 538582: 0f 8e 02 01 00 00 jle 53868a : bool isnull; : char *str; : List *defaults; : : /* shouldn't happen, FuncnameGetCandidates messed up */ : if (best_candidate->ndargs > pform->pronargdefaults) 0.00 : 538588: 0f bf 41 66 movswl 0x66(%rcx),%eax 0.00 : 53858c: 39 c2 cmp %eax,%edx 0.00 : 53858e: 0f 8f 9a 02 00 00 jg 53882e : elog(ERROR, "not enough default arguments"); : : proargdefaults = SysCacheGetAttr(PROCOID, ftup, 0.00 : 538594: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 538598: 48 8d 4d d0 lea -0x30(%rbp),%rcx 0.00 : 53859c: ba 17 00 00 00 mov $0x17,%edx 0.00 : 5385a1: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 5385a6: e8 e5 94 23 00 callq 771a90 0.00 : 5385ab: 48 89 c7 mov %rax,%rdi : Anum_pg_proc_proargdefaults, : &isnull); : Assert(!isnull); : str = TextDatumGetCString(proargdefaults); 0.00 : 5385ae: e8 fd 1b 22 00 callq 75a1b0 0.00 : 5385b3: 48 89 c3 mov %rax,%rbx : defaults = (List *) stringToNode(str); 0.00 : 5385b6: 48 89 c7 mov %rax,%rdi 0.00 : 5385b9: e8 a2 6f 0c 00 callq 5ff560 : Assert(IsA(defaults, List)); : pfree(str); 0.00 : 5385be: 48 89 df mov %rbx,%rdi : proargdefaults = SysCacheGetAttr(PROCOID, ftup, : Anum_pg_proc_proargdefaults, : &isnull); : Assert(!isnull); : str = TextDatumGetCString(proargdefaults); : defaults = (List *) stringToNode(str); 0.00 : 5385c1: 49 89 c7 mov %rax,%r15 : Assert(IsA(defaults, List)); : pfree(str); 0.00 : 5385c4: e8 b7 05 26 00 callq 798b80 : : /* Delete any unused defaults from the returned list */ : if (best_candidate->argnumbers != NULL) 0.00 : 5385c9: 49 8b 4c 24 20 mov 0x20(%r12),%rcx 0.00 : 5385ce: 48 85 c9 test %rcx,%rcx 0.00 : 5385d1: 0f 84 d9 01 00 00 je 5387b0 : List *newdefaults; : ListCell *lc; : int i; : : defargnumbers = NULL; : firstdefarg = &best_candidate->argnumbers[best_candidate->nargs - best_candidate->ndargs]; 0.00 : 5385d7: 41 8b 54 24 18 mov 0x18(%r12),%edx 0.00 : 5385dc: 41 8b 44 24 10 mov 0x10(%r12),%eax : for (i = 0; i < best_candidate->ndargs; i++) 0.00 : 5385e1: 45 31 ed xor %r13d,%r13d 0.00 : 5385e4: 31 db xor %ebx,%ebx : List *newdefaults; : ListCell *lc; : int i; : : defargnumbers = NULL; : firstdefarg = &best_candidate->argnumbers[best_candidate->nargs - best_candidate->ndargs]; 0.00 : 5385e6: 29 d0 sub %edx,%eax : for (i = 0; i < best_candidate->ndargs; i++) 0.00 : 5385e8: 85 d2 test %edx,%edx : List *newdefaults; : ListCell *lc; : int i; : : defargnumbers = NULL; : firstdefarg = &best_candidate->argnumbers[best_candidate->nargs - best_candidate->ndargs]; 0.00 : 5385ea: 48 98 cltq 0.00 : 5385ec: 4c 8d 34 81 lea (%rcx,%rax,4),%r14 : for (i = 0; i < best_candidate->ndargs; i++) 0.00 : 5385f0: 7e 22 jle 538614 0.00 : 5385f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : defargnumbers = bms_add_member(defargnumbers, 0.00 : 5385f8: 48 63 c3 movslq %ebx,%rax 0.00 : 5385fb: 4c 89 ef mov %r13,%rdi : ListCell *lc; : int i; : : defargnumbers = NULL; : firstdefarg = &best_candidate->argnumbers[best_candidate->nargs - best_candidate->ndargs]; : for (i = 0; i < best_candidate->ndargs; i++) 0.00 : 5385fe: 83 c3 01 add $0x1,%ebx : defargnumbers = bms_add_member(defargnumbers, 0.00 : 538601: 41 8b 34 86 mov (%r14,%rax,4),%esi 0.00 : 538605: e8 f6 a9 0a 00 callq 5e3000 : ListCell *lc; : int i; : : defargnumbers = NULL; : firstdefarg = &best_candidate->argnumbers[best_candidate->nargs - best_candidate->ndargs]; : for (i = 0; i < best_candidate->ndargs; i++) 0.00 : 53860a: 41 39 5c 24 18 cmp %ebx,0x18(%r12) : defargnumbers = bms_add_member(defargnumbers, 0.00 : 53860f: 49 89 c5 mov %rax,%r13 : ListCell *lc; : int i; : : defargnumbers = NULL; : firstdefarg = &best_candidate->argnumbers[best_candidate->nargs - best_candidate->ndargs]; : for (i = 0; i < best_candidate->ndargs; i++) 0.00 : 538612: 7f e4 jg 5385f8 : defargnumbers = bms_add_member(defargnumbers, : firstdefarg[i]); : newdefaults = NIL; : i = pform->pronargs - pform->pronargdefaults; 0.00 : 538614: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 538618: 4d 85 ff test %r15,%r15 0.00 : 53861b: 0f b7 51 64 movzwl 0x64(%rcx),%edx 0.00 : 53861f: 0f b7 41 66 movzwl 0x66(%rcx),%eax 0.00 : 538623: 0f 84 ce 01 00 00 je 5387f7 0.00 : 538629: 49 8b 5f 08 mov 0x8(%r15),%rbx : foreach(lc, defaults) 0.00 : 53862d: 48 85 db test %rbx,%rbx 0.00 : 538630: 0f 84 c1 01 00 00 je 5387f7 : firstdefarg = &best_candidate->argnumbers[best_candidate->nargs - best_candidate->ndargs]; : for (i = 0; i < best_candidate->ndargs; i++) : defargnumbers = bms_add_member(defargnumbers, : firstdefarg[i]); : newdefaults = NIL; : i = pform->pronargs - pform->pronargdefaults; 0.00 : 538636: 44 0f bf e2 movswl %dx,%r12d 0.00 : 53863a: 98 cwtl 0.00 : 53863b: 45 31 f6 xor %r14d,%r14d 0.00 : 53863e: 41 29 c4 sub %eax,%r12d 0.00 : 538641: eb 12 jmp 538655 0.00 : 538643: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : foreach(lc, defaults) 0.00 : 538648: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 53864c: 48 85 db test %rbx,%rbx 0.00 : 53864f: 74 2a je 53867b : { : if (bms_is_member(i, defargnumbers)) : newdefaults = lappend(newdefaults, lfirst(lc)); : i++; 0.00 : 538651: 41 83 c4 01 add $0x1,%r12d : firstdefarg[i]); : newdefaults = NIL; : i = pform->pronargs - pform->pronargdefaults; : foreach(lc, defaults) : { : if (bms_is_member(i, defargnumbers)) 0.00 : 538655: 4c 89 ee mov %r13,%rsi 0.00 : 538658: 44 89 e7 mov %r12d,%edi 0.00 : 53865b: e8 b0 a8 0a 00 callq 5e2f10 0.00 : 538660: 84 c0 test %al,%al 0.00 : 538662: 74 e4 je 538648 : newdefaults = lappend(newdefaults, lfirst(lc)); 0.00 : 538664: 48 8b 33 mov (%rbx),%rsi 0.00 : 538667: 4c 89 f7 mov %r14,%rdi 0.00 : 53866a: e8 11 98 0a 00 callq 5e1e80 : for (i = 0; i < best_candidate->ndargs; i++) : defargnumbers = bms_add_member(defargnumbers, : firstdefarg[i]); : newdefaults = NIL; : i = pform->pronargs - pform->pronargdefaults; : foreach(lc, defaults) 0.00 : 53866f: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : if (bms_is_member(i, defargnumbers)) : newdefaults = lappend(newdefaults, lfirst(lc)); 0.00 : 538673: 49 89 c6 mov %rax,%r14 : for (i = 0; i < best_candidate->ndargs; i++) : defargnumbers = bms_add_member(defargnumbers, : firstdefarg[i]); : newdefaults = NIL; : i = pform->pronargs - pform->pronargdefaults; : foreach(lc, defaults) 0.00 : 538676: 48 85 db test %rbx,%rbx 0.00 : 538679: 75 d6 jne 538651 : if (bms_is_member(i, defargnumbers)) : newdefaults = lappend(newdefaults, lfirst(lc)); : i++; : } : Assert(list_length(newdefaults) == best_candidate->ndargs); : bms_free(defargnumbers); 0.00 : 53867b: 4c 89 ef mov %r13,%rdi 0.00 : 53867e: e8 2d a7 0a 00 callq 5e2db0 : *argdefaults = newdefaults; 0.00 : 538683: 48 8b 45 48 mov 0x48(%rbp),%rax 0.00 : 538687: 4c 89 30 mov %r14,(%rax) : while (ndelete-- > 0) : defaults = list_delete_first(defaults); : *argdefaults = defaults; : } : } : if (pform->proisagg) 0.00 : 53868a: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 53868e: bb 03 00 00 00 mov $0x3,%ebx 0.00 : 538693: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 538697: 75 10 jne 5386a9 : result = FUNCDETAIL_AGGREGATE; : else if (pform->proiswindow) 0.00 : 538699: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 53869d: 80 78 5d 01 cmpb $0x1,0x5d(%rax) 0.00 : 5386a1: 19 db sbb %ebx,%ebx 0.00 : 5386a3: 83 e3 fe and $0xfffffffe,%ebx 0.00 : 5386a6: 83 c3 04 add $0x4,%ebx : result = FUNCDETAIL_WINDOWFUNC; : else : result = FUNCDETAIL_NORMAL; : ReleaseSysCache(ftup); 0.00 : 5386a9: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 5386ad: e8 fe 95 23 00 callq 771cb0 : return result; : } : : return FUNCDETAIL_NOTFOUND; : } 0.00 : 5386b2: eb 69 jmp 53871d : result = FUNCDETAIL_AGGREGATE; : else if (pform->proiswindow) : result = FUNCDETAIL_WINDOWFUNC; : else : result = FUNCDETAIL_NORMAL; : ReleaseSysCache(ftup); 0.00 : 5386b4: 45 31 e4 xor %r12d,%r12d 0.00 : 5386b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5386be: 00 00 : * can do, because the caller will try to apply coerce_type if we : * return FUNCDETAIL_COERCION. If we return that result for something : * coerce_type can't handle, we'll cause infinite recursion between : * this module and coerce_type! : */ : if (nargs == 1 && fargs != NIL && fargnames == NIL) 0.00 : 5386c0: 41 83 fd 01 cmp $0x1,%r13d 0.00 : 5386c4: 0f 84 8e 00 00 00 je 538758 : } : : /* : * didn't find an exact match, so now try to match up candidates... : */ : if (raw_candidates != NULL) 0.00 : 5386ca: 4d 85 f6 test %r14,%r14 0.00 : 5386cd: 0f 1f 00 nopl (%rax) 0.00 : 5386d0: 0f 84 a9 fd ff ff je 53847f : { : FuncCandidateList current_candidates; : int ncandidates; : : ncandidates = func_match_argtypes(nargs, 0.00 : 5386d6: 48 8d 4d d0 lea -0x30(%rbp),%rcx 0.00 : 5386da: 4c 89 f2 mov %r14,%rdx 0.00 : 5386dd: 48 89 de mov %rbx,%rsi 0.00 : 5386e0: 44 89 ef mov %r13d,%edi 0.00 : 5386e3: e8 58 fc ff ff callq 538340 : argtypes, : raw_candidates, : ¤t_candidates); : : /* one match only? then run with it... */ : if (ncandidates == 1) 0.00 : 5386e8: 83 f8 01 cmp $0x1,%eax 0.00 : 5386eb: 0f 84 fd 00 00 00 je 5387ee : best_candidate = current_candidates; : : /* : * multiple candidates? then better decide or throw an error... : */ : else if (ncandidates > 1) 0.00 : 5386f1: 0f 8e 88 fd ff ff jle 53847f : { : best_candidate = func_select_candidate(nargs, 0.00 : 5386f7: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 5386fb: 48 89 de mov %rbx,%rsi 0.00 : 5386fe: 44 89 ef mov %r13d,%edi 0.00 : 538701: e8 0a f6 ff ff callq 537d10 : : /* : * If we were able to choose a best candidate, we're done. : * Otherwise, ambiguous function call. : */ : if (!best_candidate) 0.00 : 538706: 48 85 c0 test %rax,%rax : /* : * multiple candidates? then better decide or throw an error... : */ : else if (ncandidates > 1) : { : best_candidate = func_select_candidate(nargs, 0.00 : 538709: 49 89 c4 mov %rax,%r12 : : /* : * If we were able to choose a best candidate, we're done. : * Otherwise, ambiguous function call. : */ : if (!best_candidate) 0.00 : 53870c: 0f 85 76 fd ff ff jne 538488 0.00 : 538712: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : result = FUNCDETAIL_AGGREGATE; : else if (pform->proiswindow) : result = FUNCDETAIL_WINDOWFUNC; : else : result = FUNCDETAIL_NORMAL; : ReleaseSysCache(ftup); 0.00 : 538718: bb 01 00 00 00 mov $0x1,%ebx : return result; : } : : return FUNCDETAIL_NOTFOUND; : } 0.00 : 53871d: 48 83 c4 48 add $0x48,%rsp 0.00 : 538721: 89 d8 mov %ebx,%eax 0.00 : 538723: 5b pop %rbx 0.00 : 538724: 41 5c pop %r12 0.00 : 538726: 41 5d pop %r13 0.00 : 538728: 41 5e pop %r14 0.00 : 53872a: 41 5f pop %r15 0.00 : 53872c: c9 leaveq 0.00 : 53872d: c3 retq 0.00 : 53872e: 66 90 xchg %ax,%ax : /* : * We disallow VARIADIC with named arguments unless the last argument : * (the one with VARIADIC attached) actually matched the variadic : * parameter. This is mere pedantry, really, but some folks insisted. : */ : if (fargnames != NIL && !expand_variadic && nargs > 0 && 0.00 : 538730: 45 85 ed test %r13d,%r13d 0.00 : 538733: 0f 8e 6d fd ff ff jle 5384a6 0.00 : 538739: 49 8b 54 24 20 mov 0x20(%r12),%rdx 0.00 : 53873e: 49 63 cd movslq %r13d,%rcx 0.00 : 538741: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 538745: 39 44 8a fc cmp %eax,-0x4(%rdx,%rcx,4) 0.00 : 538749: 0f 84 57 fd ff ff je 5384a6 : result = FUNCDETAIL_AGGREGATE; : else if (pform->proiswindow) : result = FUNCDETAIL_WINDOWFUNC; : else : result = FUNCDETAIL_NORMAL; : ReleaseSysCache(ftup); 0.00 : 53874f: 31 db xor %ebx,%ebx 0.00 : 538751: eb ca jmp 53871d 0.00 : 538753: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * can do, because the caller will try to apply coerce_type if we : * return FUNCDETAIL_COERCION. If we return that result for something : * coerce_type can't handle, we'll cause infinite recursion between : * this module and coerce_type! : */ : if (nargs == 1 && fargs != NIL && fargnames == NIL) 0.00 : 538758: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) 0.00 : 53875d: 0f 84 67 ff ff ff je 5386ca 0.00 : 538763: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : 538768: 0f 85 5c ff ff ff jne 5386ca : FuncNameAsType(List *funcname) : { : Oid result; : Type typtup; : : typtup = LookupTypeName(NULL, makeTypeNameFromNameList(funcname), NULL, false); 0.00 : 53876e: 4c 89 ff mov %r15,%rdi 0.00 : 538771: e8 ba 8e 0b 00 callq 5f1630 0.00 : 538776: 31 c9 xor %ecx,%ecx 0.00 : 538778: 31 d2 xor %edx,%edx 0.00 : 53877a: 31 ff xor %edi,%edi 0.00 : 53877c: 48 89 c6 mov %rax,%rsi 0.00 : 53877f: e8 3c a6 00 00 callq 542dc0 : if (typtup == NULL) 0.00 : 538784: 48 85 c0 test %rax,%rax : FuncNameAsType(List *funcname) : { : Oid result; : Type typtup; : : typtup = LookupTypeName(NULL, makeTypeNameFromNameList(funcname), NULL, false); 0.00 : 538787: 49 89 c7 mov %rax,%r15 : if (typtup == NULL) 0.00 : 53878a: 0f 84 3a ff ff ff je 5386ca : return InvalidOid; : : if (((Form_pg_type) GETSTRUCT(typtup))->typisdefined && 0.00 : 538790: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 538794: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 538798: 80 7c 02 4e 00 cmpb $0x0,0x4e(%rdx,%rax,1) 0.00 : 53879d: 0f 85 b5 00 00 00 jne 538858 : !OidIsValid(typeTypeRelid(typtup))) : result = typeTypeId(typtup); : else : result = InvalidOid; : : ReleaseSysCache(typtup); 0.00 : 5387a3: 4c 89 ff mov %r15,%rdi 0.00 : 5387a6: e8 05 95 23 00 callq 771cb0 0.00 : 5387ab: e9 1a ff ff ff jmpq 5386ca : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5387b0: 31 c0 xor %eax,%eax 0.00 : 5387b2: 4d 85 ff test %r15,%r15 0.00 : 5387b5: 74 04 je 5387bb 0.00 : 5387b7: 41 8b 47 04 mov 0x4(%r15),%eax : * Defaults for positional notation are lots easier; just : * remove any unwanted ones from the front. : */ : int ndelete; : : ndelete = list_length(defaults) - best_candidate->ndargs; 0.00 : 5387bb: 41 2b 44 24 18 sub 0x18(%r12),%eax : while (ndelete-- > 0) 0.00 : 5387c0: 85 c0 test %eax,%eax 0.00 : 5387c2: 7e 1e jle 5387e2 0.00 : 5387c4: 89 c3 mov %eax,%ebx 0.00 : 5387c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5387cd: 00 00 00 : defaults = list_delete_first(defaults); 0.00 : 5387d0: 4c 89 ff mov %r15,%rdi 0.00 : 5387d3: 83 eb 01 sub $0x1,%ebx 0.00 : 5387d6: e8 f5 99 0a 00 callq 5e21d0 : * remove any unwanted ones from the front. : */ : int ndelete; : : ndelete = list_length(defaults) - best_candidate->ndargs; : while (ndelete-- > 0) 0.00 : 5387db: 85 db test %ebx,%ebx : defaults = list_delete_first(defaults); 0.00 : 5387dd: 49 89 c7 mov %rax,%r15 : * remove any unwanted ones from the front. : */ : int ndelete; : : ndelete = list_length(defaults) - best_candidate->ndargs; : while (ndelete-- > 0) 0.00 : 5387e0: 7f ee jg 5387d0 : defaults = list_delete_first(defaults); : *argdefaults = defaults; 0.00 : 5387e2: 48 8b 55 48 mov 0x48(%rbp),%rdx 0.00 : 5387e6: 4c 89 3a mov %r15,(%rdx) 0.00 : 5387e9: e9 9c fe ff ff jmpq 53868a : raw_candidates, : ¤t_candidates); : : /* one match only? then run with it... */ : if (ncandidates == 1) : best_candidate = current_candidates; 0.00 : 5387ee: 4c 8b 65 d0 mov -0x30(%rbp),%r12 0.00 : 5387f2: e9 88 fc ff ff jmpq 53847f : i = pform->pronargs - pform->pronargdefaults; : foreach(lc, defaults) : { : if (bms_is_member(i, defargnumbers)) : newdefaults = lappend(newdefaults, lfirst(lc)); : i++; 0.00 : 5387f7: 45 31 f6 xor %r14d,%r14d 0.00 : 5387fa: e9 7c fe ff ff jmpq 53867b : } : : ftup = SearchSysCache1(PROCOID, : ObjectIdGetDatum(best_candidate->oid)); : if (!HeapTupleIsValid(ftup)) /* should not happen */ : elog(ERROR, "cache lookup failed for function %u", 0.00 : 5387ff: ba 20 46 87 00 mov $0x874620,%edx 0.00 : 538804: be c6 05 00 00 mov $0x5c6,%esi 0.00 : 538809: bf df 3c 87 00 mov $0x873cdf,%edi 0.00 : 53880e: e8 0d 2c 24 00 callq 77b420 0.00 : 538813: 41 8b 54 24 0c mov 0xc(%r12),%edx 0.00 : 538818: be b8 2b 7c 00 mov $0x7c2bb8,%esi 0.00 : 53881d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 538822: 31 c0 xor %eax,%eax 0.00 : 538824: e8 07 2a 24 00 callq 77b230 0.00 : 538829: e8 a2 0c f3 ff callq 4694d0 : char *str; : List *defaults; : : /* shouldn't happen, FuncnameGetCandidates messed up */ : if (best_candidate->ndargs > pform->pronargdefaults) : elog(ERROR, "not enough default arguments"); 0.00 : 53882e: ba 20 46 87 00 mov $0x874620,%edx 0.00 : 538833: be d5 05 00 00 mov $0x5d5,%esi 0.00 : 538838: bf df 3c 87 00 mov $0x873cdf,%edi 0.00 : 53883d: e8 de 2b 24 00 callq 77b420 0.00 : 538842: be 08 3d 87 00 mov $0x873d08,%esi 0.00 : 538847: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53884c: 31 c0 xor %eax,%eax 0.00 : 53884e: e8 dd 29 24 00 callq 77b230 0.00 : 538853: e8 78 0c f3 ff callq 4694d0 : : typtup = LookupTypeName(NULL, makeTypeNameFromNameList(funcname), NULL, false); : if (typtup == NULL) : return InvalidOid; : : if (((Form_pg_type) GETSTRUCT(typtup))->typisdefined && 0.00 : 538858: 4c 89 ff mov %r15,%rdi 0.00 : 53885b: e8 90 a0 00 00 callq 5428f0 0.00 : 538860: 85 c0 test %eax,%eax 0.00 : 538862: 0f 85 3b ff ff ff jne 5387a3 : !OidIsValid(typeTypeRelid(typtup))) : result = typeTypeId(typtup); 0.00 : 538868: 4c 89 ff mov %r15,%rdi 0.00 : 53886b: e8 60 a1 00 00 callq 5429d0 : else : result = InvalidOid; : : ReleaseSysCache(typtup); 0.00 : 538870: 4c 89 ff mov %r15,%rdi : if (typtup == NULL) : return InvalidOid; : : if (((Form_pg_type) GETSTRUCT(typtup))->typisdefined && : !OidIsValid(typeTypeRelid(typtup))) : result = typeTypeId(typtup); 0.00 : 538873: 89 45 b4 mov %eax,-0x4c(%rbp) : else : result = InvalidOid; : : ReleaseSysCache(typtup); 0.00 : 538876: e8 35 94 23 00 callq 771cb0 : */ : if (nargs == 1 && fargs != NIL && fargnames == NIL) : { : Oid targetType = FuncNameAsType(funcname); : : if (OidIsValid(targetType)) 0.00 : 53887b: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 53887e: 85 d2 test %edx,%edx 0.00 : 538880: 0f 84 44 fe ff ff je 5386ca : { : Oid sourceType = argtypes[0]; : Node *arg1 = linitial(fargs); 0.00 : 538886: 48 8b 55 a8 mov -0x58(%rbp),%rdx : { : Oid targetType = FuncNameAsType(funcname); : : if (OidIsValid(targetType)) : { : Oid sourceType = argtypes[0]; 0.00 : 53888a: 44 8b 3b mov (%rbx),%r15d : Node *arg1 = linitial(fargs); 0.00 : 53888d: 48 8b 42 08 mov 0x8(%rdx),%rax : bool iscoercion; : : if (sourceType == UNKNOWNOID && IsA(arg1, Const)) 0.00 : 538891: 41 81 ff c1 02 00 00 cmp $0x2c1,%r15d : Oid targetType = FuncNameAsType(funcname); : : if (OidIsValid(targetType)) : { : Oid sourceType = argtypes[0]; : Node *arg1 = linitial(fargs); 0.00 : 538898: 48 8b 00 mov (%rax),%rax : bool iscoercion; : : if (sourceType == UNKNOWNOID && IsA(arg1, Const)) 0.00 : 53889b: 75 08 jne 5388a5 0.00 : 53889d: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 5388a3: 74 49 je 5388ee : else : { : CoercionPathType cpathtype; : Oid cfuncid; : : cpathtype = find_coercion_pathway(targetType, sourceType, 0.00 : 5388a5: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 5388a8: 48 8d 4d d0 lea -0x30(%rbp),%rcx 0.00 : 5388ac: ba 02 00 00 00 mov $0x2,%edx 0.00 : 5388b1: 44 89 fe mov %r15d,%esi 0.00 : 5388b4: e8 87 68 ff ff callq 52f140 : COERCION_EXPLICIT, : &cfuncid); : switch (cpathtype) 0.00 : 5388b9: 83 f8 02 cmp $0x2,%eax 0.00 : 5388bc: 74 30 je 5388ee 0.00 : 5388be: 83 f8 04 cmp $0x4,%eax 0.00 : 5388c1: 0f 85 03 fe ff ff jne 5386ca : { : case COERCION_PATH_RELABELTYPE: : iscoercion = true; : break; : case COERCION_PATH_COERCEVIAIO: : if ((sourceType == RECORDOID || 0.00 : 5388c7: 41 81 ff c9 08 00 00 cmp $0x8c9,%r15d 0.00 : 5388ce: 66 90 xchg %ax,%ax 0.00 : 5388d0: 74 0c je 5388de 0.00 : 5388d2: 44 89 ff mov %r15d,%edi 0.00 : 5388d5: e8 86 a0 00 00 callq 542960 0.00 : 5388da: 85 c0 test %eax,%eax 0.00 : 5388dc: 74 10 je 5388ee 0.00 : 5388de: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 5388e1: e8 3a 68 ff ff callq 52f120 0.00 : 5388e6: 3c 53 cmp $0x53,%al 0.00 : 5388e8: 0f 84 dc fd ff ff je 5386ca : } : : if (iscoercion) : { : /* Treat it as a type coercion */ : *funcid = InvalidOid; 0.00 : 5388ee: 48 8b 4d 18 mov 0x18(%rbp),%rcx 0.00 : 5388f2: c7 01 00 00 00 00 movl $0x0,(%rcx) : *rettype = targetType; 0.00 : 5388f8: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 5388fb: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 5388ff: 89 10 mov %edx,(%rax) : *retset = false; 0.00 : 538901: 48 8b 4d 28 mov 0x28(%rbp),%rcx 0.00 : 538905: c6 01 00 movb $0x0,(%rcx) : *nvargs = 0; 0.00 : 538908: 48 8b 45 30 mov 0x30(%rbp),%rax 0.00 : 53890c: c7 00 00 00 00 00 movl $0x0,(%rax) : *vatype = InvalidOid; 0.00 : 538912: 48 8b 55 38 mov 0x38(%rbp),%rdx 0.00 : 538916: c7 02 00 00 00 00 movl $0x0,(%rdx) : *true_typeids = argtypes; 0.00 : 53891c: 48 8b 4d 40 mov 0x40(%rbp),%rcx 0.00 : 538920: 48 89 19 mov %rbx,(%rcx) 0.00 : 538923: bb 05 00 00 00 mov $0x5,%ebx : ReleaseSysCache(ftup); : return result; : } : : return FUNCDETAIL_NOTFOUND; : } 0.00 : 538928: e9 f0 fd ff ff jmpq 53871d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_func.c:754 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000538930 : : * already. However, nothing in *fn has been transformed. : */ : Node * : ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, : FuncCall *fn, int location) : { 0.00 : 538930: 55 push %rbp 0.00 : 538931: 48 89 e5 mov %rsp,%rbp 0.00 : 538934: 41 57 push %r15 0.00 : 538936: 41 56 push %r14 0.00 : 538938: 41 55 push %r13 0.00 : 53893a: 41 54 push %r12 0.00 : 53893c: 53 push %rbx 0.00 : 53893d: 48 81 ec d8 05 00 00 sub $0x5d8,%rsp : bool is_column = (fn == NULL); 0.00 : 538944: 48 85 c9 test %rcx,%rcx : * already. However, nothing in *fn has been transformed. : */ : Node * : ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, : FuncCall *fn, int location) : { 0.00 : 538947: 48 89 bd 60 fa ff ff mov %rdi,-0x5a0(%rbp) 0.00 : 53894e: 48 89 b5 58 fa ff ff mov %rsi,-0x5a8(%rbp) 0.00 : 538955: 48 89 95 50 fa ff ff mov %rdx,-0x5b0(%rbp) 0.00 : 53895c: 44 89 85 4c fa ff ff mov %r8d,-0x5b4(%rbp) : bool is_column = (fn == NULL); 0.00 : 538963: 0f 94 85 87 fa ff ff sete -0x579(%rbp) : List *agg_order = (fn ? fn->agg_order : NIL); 0.00 : 53896a: 0f 84 78 08 00 00 je 5391e8 0.00 : 538970: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 538974: 48 89 85 88 fa ff ff mov %rax,-0x578(%rbp) : Expr *agg_filter = NULL; : bool agg_within_group = (fn ? fn->agg_within_group : false); 0.00 : 53897b: 0f b6 51 28 movzbl 0x28(%rcx),%edx 0.00 : 53897f: 88 95 9d fa ff ff mov %dl,-0x563(%rbp) : bool agg_star = (fn ? fn->agg_star : false); 0.00 : 538985: 0f b6 59 29 movzbl 0x29(%rcx),%ebx 0.00 : 538989: 88 9d 9e fa ff ff mov %bl,-0x562(%rbp) : bool agg_distinct = (fn ? fn->agg_distinct : false); 0.00 : 53898f: 0f b6 41 2a movzbl 0x2a(%rcx),%eax 0.00 : 538993: 88 85 9f fa ff ff mov %al,-0x561(%rbp) : bool func_variadic = (fn ? fn->func_variadic : false); 0.00 : 538999: 0f b6 51 2b movzbl 0x2b(%rcx),%edx 0.00 : 53899d: 88 95 a0 fa ff ff mov %dl,-0x560(%rbp) : WindowDef *over = (fn ? fn->over : NULL); 0.00 : 5389a3: 48 8b 59 30 mov 0x30(%rcx),%rbx 0.00 : 5389a7: 48 89 9d b0 fa ff ff mov %rbx,-0x550(%rbp) : char aggkind = 0; : : /* : * If there's an aggregate filter, transform it using transformWhereClause : */ : if (fn && fn->agg_filter != NULL) 0.00 : 5389ae: 48 8b 71 20 mov 0x20(%rcx),%rsi 0.00 : 5389b2: 48 c7 85 90 fa ff ff movq $0x0,-0x570(%rbp) 0.00 : 5389b9: 00 00 00 00 0.00 : 5389bd: 48 85 f6 test %rsi,%rsi 0.00 : 5389c0: 74 1d je 5389df : agg_filter = (Expr *) transformWhereClause(pstate, fn->agg_filter, 0.00 : 5389c2: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 5389c9: b9 a9 30 87 00 mov $0x8730a9,%ecx 0.00 : 5389ce: ba 08 00 00 00 mov $0x8,%edx 0.00 : 5389d3: e8 e8 4c ff ff callq 52d6c0 0.00 : 5389d8: 48 89 85 90 fa ff ff mov %rax,-0x570(%rbp) : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5389df: 48 83 bd 50 fa ff ff cmpq $0x0,-0x5b0(%rbp) 0.00 : 5389e6: 00 0.00 : 5389e7: 0f 84 51 06 00 00 je 53903e : * Most of the rest of the parser just assumes that functions do not have : * more than FUNC_MAX_ARGS parameters. We have to test here to protect : * against array overruns, etc. Of course, this may not be a function, : * but the test doesn't hurt. : */ : if (list_length(fargs) > FUNC_MAX_ARGS) 0.00 : 5389ed: 48 8b 85 50 fa ff ff mov -0x5b0(%rbp),%rax 0.00 : 5389f4: 83 78 04 64 cmpl $0x64,0x4(%rax) 0.00 : 5389f8: 0f 8f 22 0f 00 00 jg 539920 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5389fe: 48 8b 95 50 fa ff ff mov -0x5b0(%rbp),%rdx : * nor if we had WITHIN GROUP (because in that case it's critical to keep : * the argument count unchanged). We can't use foreach() because we may : * modify the list ... : */ : nargs = 0; : for (l = list_head(fargs); l != NULL; l = nextl) 0.00 : 538a05: 45 31 ff xor %r15d,%r15d 0.00 : 538a08: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 538a0c: 48 89 95 e0 fa ff ff mov %rdx,-0x520(%rbp) 0.00 : 538a13: c7 85 ec fa ff ff 00 movl $0x0,-0x514(%rbp) 0.00 : 538a1a: 00 00 00 0.00 : 538a1d: 48 85 c0 test %rax,%rax 0.00 : 538a20: 48 89 c3 mov %rax,%rbx 0.00 : 538a23: 75 1e jne 538a43 0.00 : 538a25: e9 90 00 00 00 jmpq 538aba 0.00 : 538a2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : fargs = list_delete_ptr(fargs, arg); : continue; : } : : actual_arg_types[nargs++] = argtype; 0.00 : 538a30: 49 63 c7 movslq %r15d,%rax 0.00 : 538a33: 41 83 c7 01 add $0x1,%r15d : * nor if we had WITHIN GROUP (because in that case it's critical to keep : * the argument count unchanged). We can't use foreach() because we may : * modify the list ... : */ : nargs = 0; : for (l = list_head(fargs); l != NULL; l = nextl) 0.00 : 538a37: 48 85 db test %rbx,%rbx : { : fargs = list_delete_ptr(fargs, arg); : continue; : } : : actual_arg_types[nargs++] = argtype; 0.00 : 538a3a: 89 94 85 10 fe ff ff mov %edx,-0x1f0(%rbp,%rax,4) : * nor if we had WITHIN GROUP (because in that case it's critical to keep : * the argument count unchanged). We can't use foreach() because we may : * modify the list ... : */ : nargs = 0; : for (l = list_head(fargs); l != NULL; l = nextl) 0.00 : 538a41: 74 55 je 538a98 : { : Node *arg = lfirst(l); 0.00 : 538a43: 4c 8b 23 mov (%rbx),%r12 : Oid argtype = exprType(arg); 0.00 : 538a46: 4c 89 e7 mov %r12,%rdi 0.00 : 538a49: e8 82 82 0a 00 callq 5e0cd0 : : nextl = lnext(l); : : if (argtype == VOIDOID && IsA(arg, Param) && 0.00 : 538a4e: 3d e6 08 00 00 cmp $0x8e6,%eax : */ : nargs = 0; : for (l = list_head(fargs); l != NULL; l = nextl) : { : Node *arg = lfirst(l); : Oid argtype = exprType(arg); 0.00 : 538a53: 89 c2 mov %eax,%edx : : nextl = lnext(l); 0.00 : 538a55: 48 8b 5b 08 mov 0x8(%rbx),%rbx : : if (argtype == VOIDOID && IsA(arg, Param) && 0.00 : 538a59: 75 d5 jne 538a30 0.00 : 538a5b: 41 81 3c 24 31 01 00 cmpl $0x131,(%r12) 0.00 : 538a62: 00 0.00 : 538a63: 75 cb jne 538a30 0.00 : 538a65: 80 bd 87 fa ff ff 00 cmpb $0x0,-0x579(%rbp) 0.00 : 538a6c: 75 c2 jne 538a30 0.00 : 538a6e: 80 bd 9d fa ff ff 00 cmpb $0x0,-0x563(%rbp) 0.00 : 538a75: 75 b9 jne 538a30 : !is_column && !agg_within_group) : { : fargs = list_delete_ptr(fargs, arg); 0.00 : 538a77: 48 8b bd 50 fa ff ff mov -0x5b0(%rbp),%rdi 0.00 : 538a7e: 4c 89 e6 mov %r12,%rsi 0.00 : 538a81: e8 0a 98 0a 00 callq 5e2290 : * nor if we had WITHIN GROUP (because in that case it's critical to keep : * the argument count unchanged). We can't use foreach() because we may : * modify the list ... : */ : nargs = 0; : for (l = list_head(fargs); l != NULL; l = nextl) 0.00 : 538a86: 48 85 db test %rbx,%rbx : nextl = lnext(l); : : if (argtype == VOIDOID && IsA(arg, Param) && : !is_column && !agg_within_group) : { : fargs = list_delete_ptr(fargs, arg); 0.00 : 538a89: 48 89 85 50 fa ff ff mov %rax,-0x5b0(%rbp) : * nor if we had WITHIN GROUP (because in that case it's critical to keep : * the argument count unchanged). We can't use foreach() because we may : * modify the list ... : */ : nargs = 0; : for (l = list_head(fargs); l != NULL; l = nextl) 0.00 : 538a90: 75 b1 jne 538a43 0.00 : 538a92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 538a98: 48 8b 8d 50 fa ff ff mov -0x5b0(%rbp),%rcx 0.00 : 538a9f: 44 89 bd ec fa ff ff mov %r15d,-0x514(%rbp) 0.00 : 538aa6: 48 85 c9 test %rcx,%rcx 0.00 : 538aa9: 48 89 8d e0 fa ff ff mov %rcx,-0x520(%rbp) 0.00 : 538ab0: 0f 84 a0 05 00 00 je 539056 0.00 : 538ab6: 48 8b 41 08 mov 0x8(%rcx),%rax : * the named parameters after all the unnamed ones. So the name list : * corresponds to the last N actual parameters and we don't need any extra : * bookkeeping to match things up. : */ : argnames = NIL; : foreach(l, fargs) 0.00 : 538aba: 48 85 c0 test %rax,%rax 0.00 : 538abd: 49 89 c5 mov %rax,%r13 0.00 : 538ac0: 48 c7 85 b8 fa ff ff movq $0x0,-0x548(%rbp) 0.00 : 538ac7: 00 00 00 00 0.00 : 538acb: 75 22 jne 538aef 0.00 : 538acd: e9 8b 11 00 00 jmpq 539c5d 0.00 : 538ad2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : argnames = lappend(argnames, na->name); : } : else : { : if (argnames != NIL) 0.00 : 538ad8: 48 83 bd b8 fa ff ff cmpq $0x0,-0x548(%rbp) 0.00 : 538adf: 00 0.00 : 538ae0: 0f 85 98 07 00 00 jne 53927e : * the named parameters after all the unnamed ones. So the name list : * corresponds to the last N actual parameters and we don't need any extra : * bookkeeping to match things up. : */ : argnames = NIL; : foreach(l, fargs) 0.00 : 538ae6: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 538aea: 4d 85 ed test %r13,%r13 0.00 : 538aed: 74 74 je 538b63 : { : Node *arg = lfirst(l); 0.00 : 538aef: 4d 8b 75 00 mov 0x0(%r13),%r14 : : if (IsA(arg, NamedArgExpr)) 0.00 : 538af3: 41 81 3e 36 01 00 00 cmpl $0x136,(%r14) 0.00 : 538afa: 75 dc jne 538ad8 0.00 : 538afc: 48 83 bd b8 fa ff ff cmpq $0x0,-0x548(%rbp) 0.00 : 538b03: 00 0.00 : 538b04: 0f 84 e3 03 00 00 je 538eed 0.00 : 538b0a: 48 8b 85 b8 fa ff ff mov -0x548(%rbp),%rax 0.00 : 538b11: 48 8b 58 08 mov 0x8(%rax),%rbx : { : NamedArgExpr *na = (NamedArgExpr *) arg; : ListCell *lc; : : /* Reject duplicate arg names */ : foreach(lc, argnames) 0.00 : 538b15: 48 85 db test %rbx,%rbx 0.00 : 538b18: 0f 84 cf 03 00 00 je 538eed 0.00 : 538b1e: 4d 8b 66 10 mov 0x10(%r14),%r12 0.00 : 538b22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (strcmp(na->name, (char *) lfirst(lc)) == 0) 0.00 : 538b28: 48 8b 33 mov (%rbx),%rsi 0.00 : 538b2b: 4c 89 e7 mov %r12,%rdi 0.00 : 538b2e: e8 fd 11 f3 ff callq 469d30 0.00 : 538b33: 85 c0 test %eax,%eax 0.00 : 538b35: 0f 84 8d 03 00 00 je 538ec8 : { : NamedArgExpr *na = (NamedArgExpr *) arg; : ListCell *lc; : : /* Reject duplicate arg names */ : foreach(lc, argnames) 0.00 : 538b3b: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 538b3f: 48 85 db test %rbx,%rbx 0.00 : 538b42: 75 e4 jne 538b28 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("argument name \"%s\" used more than once", : na->name), : parser_errposition(pstate, na->location))); : } : argnames = lappend(argnames, na->name); 0.00 : 538b44: 48 8b bd b8 fa ff ff mov -0x548(%rbp),%rdi 0.00 : 538b4b: 4c 89 e6 mov %r12,%rsi 0.00 : 538b4e: e8 2d 93 0a 00 callq 5e1e80 0.00 : 538b53: 48 89 85 b8 fa ff ff mov %rax,-0x548(%rbp) : * the named parameters after all the unnamed ones. So the name list : * corresponds to the last N actual parameters and we don't need any extra : * bookkeeping to match things up. : */ : argnames = NIL; : foreach(l, fargs) 0.00 : 538b5a: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 538b5e: 4d 85 ed test %r13,%r13 0.00 : 538b61: 75 8c jne 538aef 0.00 : 538b63: 48 8b 95 50 fa ff ff mov -0x5b0(%rbp),%rdx 0.00 : 538b6a: 48 8b 42 08 mov 0x8(%rdx),%rax : * Check for column projection: if function has one argument, and that : * argument is of complex type, and function name is not qualified, then : * the "function call" could be a projection. We also check that there : * wasn't any aggregate or variadic decoration, nor an argument name. : */ : if (nargs == 1 && agg_order == NIL && agg_filter == NULL && !agg_star && 0.00 : 538b6e: 41 83 ff 01 cmp $0x1,%r15d : } : } : : if (fargs) : { : first_arg = linitial(fargs); 0.00 : 538b72: 4c 8b 20 mov (%rax),%r12 : * Check for column projection: if function has one argument, and that : * argument is of complex type, and function name is not qualified, then : * the "function call" could be a projection. We also check that there : * wasn't any aggregate or variadic decoration, nor an argument name. : */ : if (nargs == 1 && agg_order == NIL && agg_filter == NULL && !agg_star && 0.00 : 538b75: 0f 84 f3 04 00 00 je 53906e : * to match the given argument order of named arguments, and a variadic : * argument is replaced by a suitable number of copies of its element : * type. We'll fix up the variadic case below. We may also have to deal : * with default arguments. : */ : fdresult = func_get_detail(funcname, fargs, argnames, nargs, 0.00 : 538b7b: 48 8d 45 a8 lea -0x58(%rbp),%rax 0.00 : 538b7f: 80 bd a0 fa ff ff 00 cmpb $0x0,-0x560(%rbp) 0.00 : 538b86: 48 8b 95 b8 fa ff ff mov -0x548(%rbp),%rdx 0.00 : 538b8d: 48 8b b5 50 fa ff ff mov -0x5b0(%rbp),%rsi 0.00 : 538b94: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 538b9b: 4c 8d 85 10 fe ff ff lea -0x1f0(%rbp),%r8 0.00 : 538ba2: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 538ba7: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 538bab: 44 89 f9 mov %r15d,%ecx 0.00 : 538bae: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : 538bb5: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 538bba: 48 8d 45 bc lea -0x44(%rbp),%rax 0.00 : 538bbe: 41 0f 94 c1 sete %r9b 0.00 : 538bc2: 41 83 e1 01 and $0x1,%r9d 0.00 : 538bc6: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 538bcb: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 538bcf: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 538bd4: 48 8d 45 cf lea -0x31(%rbp),%rax 0.00 : 538bd8: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 538bdd: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : 538be1: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 538be6: 48 8d 45 c4 lea -0x3c(%rbp),%rax 0.00 : 538bea: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 538bef: e8 bc f7 ff ff callq 5383b0 : actual_arg_types, : !func_variadic, true, : &funcid, &rettype, &retset, : &nvargs, &vatype, : &declared_arg_types, &argdefaults); : if (fdresult == FUNCDETAIL_COERCION) 0.00 : 538bf4: 83 f8 05 cmp $0x5,%eax : * to match the given argument order of named arguments, and a variadic : * argument is replaced by a suitable number of copies of its element : * type. We'll fix up the variadic case below. We may also have to deal : * with default arguments. : */ : fdresult = func_get_detail(funcname, fargs, argnames, nargs, 0.00 : 538bf7: 89 85 74 fa ff ff mov %eax,-0x58c(%rbp) : actual_arg_types, : !func_variadic, true, : &funcid, &rettype, &retset, : &nvargs, &vatype, : &declared_arg_types, &argdefaults); : if (fdresult == FUNCDETAIL_COERCION) 0.00 : 538bfd: 0f 84 27 06 00 00 je 53922a : */ : return coerce_type(pstate, linitial(fargs), : actual_arg_types[0], rettype, -1, : COERCION_EXPLICIT, COERCE_EXPLICIT_CALL, location); : } : else if (fdresult == FUNCDETAIL_NORMAL) 0.00 : 538c03: 83 bd 74 fa ff ff 02 cmpl $0x2,-0x58c(%rbp) 0.00 : 538c0a: 0f 84 28 03 00 00 je 538f38 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("OVER specified, but %s is not a window function nor an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : } : else if (fdresult == FUNCDETAIL_AGGREGATE) 0.00 : 538c10: 83 bd 74 fa ff ff 03 cmpl $0x3,-0x58c(%rbp) 0.00 : 538c17: 0f 84 22 09 00 00 je 53953f : errmsg("%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP", : NameListToString(funcname)), : parser_errposition(pstate, location))); : } : } : else if (fdresult == FUNCDETAIL_WINDOWFUNC) 0.00 : 538c1d: 83 bd 74 fa ff ff 04 cmpl $0x4,-0x58c(%rbp) 0.00 : 538c24: 0f 85 e7 0b 00 00 jne 539811 : { : /* : * True window functions must be called with a window definition. : */ : if (!over) 0.00 : 538c2a: 48 83 bd b0 fa ff ff cmpq $0x0,-0x550(%rbp) 0.00 : 538c31: 00 0.00 : 538c32: 0f 84 16 15 00 00 je 53a14e : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("window function %s requires an OVER clause", : NameListToString(funcname)), : parser_errposition(pstate, location))); : /* And, per spec, WITHIN GROUP isn't allowed */ : if (agg_within_group) 0.00 : 538c38: 80 bd 9d fa ff ff 00 cmpb $0x0,-0x563(%rbp) 0.00 : 538c3f: 0f 85 e7 10 00 00 jne 539d2c : "Perhaps you misplaced ORDER BY; ORDER BY must appear " : "after all regular arguments of the aggregate."), : parser_errposition(pstate, location))); : } : else : ereport(ERROR, 0.00 : 538c45: c6 85 c7 fa ff ff 00 movb $0x0,-0x539(%rbp) : * However, we do NOT put them into the generated parse node, because : * their actual values might change before the query gets run. The : * planner has to insert the up-to-date values at plan time. : */ : nargsplusdefs = nargs; : foreach(l, argdefaults) 0.00 : 538c4c: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 538c50: 48 85 c0 test %rax,%rax 0.00 : 538c53: 0f 84 ad 0b 00 00 je 539806 0.00 : 538c59: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 538c5d: 4d 85 e4 test %r12,%r12 0.00 : 538c60: 0f 84 a0 0b 00 00 je 539806 : { : Node *expr = (Node *) lfirst(l); 0.00 : 538c66: 8b 9d ec fa ff ff mov -0x514(%rbp),%ebx 0.00 : 538c6c: 49 8b 3c 24 mov (%r12),%rdi : : /* probably shouldn't happen ... */ : if (nargsplusdefs >= FUNC_MAX_ARGS) 0.00 : 538c70: 83 fb 63 cmp $0x63,%ebx 0.00 : 538c73: 7e 18 jle 538c8d 0.00 : 538c75: e9 0e 08 00 00 jmpq 539488 0.00 : 538c7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 538c80: 83 fb 63 cmp $0x63,%ebx : * planner has to insert the up-to-date values at plan time. : */ : nargsplusdefs = nargs; : foreach(l, argdefaults) : { : Node *expr = (Node *) lfirst(l); 0.00 : 538c83: 49 8b 3c 24 mov (%r12),%rdi : : /* probably shouldn't happen ... */ : if (nargsplusdefs >= FUNC_MAX_ARGS) 0.00 : 538c87: 0f 8f fb 07 00 00 jg 539488 0.00 : 538c8d: 0f 1f 00 nopl (%rax) : "cannot pass more than %d arguments to a function", : FUNC_MAX_ARGS, : FUNC_MAX_ARGS), : parser_errposition(pstate, location))); : : actual_arg_types[nargsplusdefs++] = exprType(expr); 0.00 : 538c90: e8 3b 80 0a 00 callq 5e0cd0 0.00 : 538c95: 48 63 d3 movslq %ebx,%rdx 0.00 : 538c98: 83 c3 01 add $0x1,%ebx 0.00 : 538c9b: 89 84 95 10 fe ff ff mov %eax,-0x1f0(%rbp,%rdx,4) : * However, we do NOT put them into the generated parse node, because : * their actual values might change before the query gets run. The : * planner has to insert the up-to-date values at plan time. : */ : nargsplusdefs = nargs; : foreach(l, argdefaults) 0.00 : 538ca2: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 538ca7: 4d 85 e4 test %r12,%r12 0.00 : 538caa: 75 d4 jne 538c80 : /* : * enforce consistency with polymorphic argument and return types, : * possibly adjusting return type or declared_arg_types (which will be : * used as the cast destination by make_fn_arguments) : */ : rettype = enforce_generic_type_consistency(actual_arg_types, 0.00 : 538cac: 8b 4d c8 mov -0x38(%rbp),%ecx 0.00 : 538caf: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 538cb3: 48 8d bd 10 fe ff ff lea -0x1f0(%rbp),%rdi 0.00 : 538cba: 45 31 c0 xor %r8d,%r8d 0.00 : 538cbd: 89 da mov %ebx,%edx 0.00 : 538cbf: e8 9c 6b ff ff callq 52f860 : nargsplusdefs, : rettype, : false); : : /* perform the necessary typecasting of arguments */ : make_fn_arguments(pstate, fargs, actual_arg_types, declared_arg_types); 0.00 : 538cc4: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 538cc8: 48 8b b5 50 fa ff ff mov -0x5b0(%rbp),%rsi 0.00 : 538ccf: 48 8d 95 10 fe ff ff lea -0x1f0(%rbp),%rdx 0.00 : 538cd6: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi : /* : * enforce consistency with polymorphic argument and return types, : * possibly adjusting return type or declared_arg_types (which will be : * used as the cast destination by make_fn_arguments) : */ : rettype = enforce_generic_type_consistency(actual_arg_types, 0.00 : 538cdd: 89 45 c8 mov %eax,-0x38(%rbp) : nargsplusdefs, : rettype, : false); : : /* perform the necessary typecasting of arguments */ : make_fn_arguments(pstate, fargs, actual_arg_types, declared_arg_types); 0.00 : 538ce0: e8 4b ef ff ff callq 537c30 : /* : * If the function isn't actually variadic, forget any VARIADIC decoration : * on the call. (Perhaps we should throw an error instead, but : * historically we've allowed people to write that.) : */ : if (!OidIsValid(vatype)) 0.00 : 538ce5: 0f b6 8d a0 fa ff ff movzbl -0x560(%rbp),%ecx 0.00 : 538cec: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 538cef: b8 00 00 00 00 mov $0x0,%eax 0.00 : 538cf4: 85 d2 test %edx,%edx 0.00 : 538cf6: 0f 44 c8 cmove %eax,%ecx 0.00 : 538cf9: 88 8d a0 fa ff ff mov %cl,-0x560(%rbp) : : /* : * If it's a variadic function call, transform the last nvargs arguments : * into an array --- unless it's an "any" variadic. : */ : if (nvargs > 0 && vatype != ANYOID) 0.00 : 538cff: 8b 4d c0 mov -0x40(%rbp),%ecx 0.00 : 538d02: 85 c9 test %ecx,%ecx 0.00 : 538d04: 0f 8e a7 00 00 00 jle 538db1 0.00 : 538d0a: 81 fa e4 08 00 00 cmp $0x8e4,%edx 0.00 : 538d10: 0f 84 9b 00 00 00 je 538db1 : { : ArrayExpr *newa = makeNode(ArrayExpr); 0.00 : 538d16: 48 8b 3d 43 1b 68 00 mov 0x681b43(%rip),%rdi # bba860 0.00 : 538d1d: be 20 00 00 00 mov $0x20,%esi : int non_var_args = nargs - nvargs; 0.00 : 538d22: 44 89 fb mov %r15d,%ebx : * If it's a variadic function call, transform the last nvargs arguments : * into an array --- unless it's an "any" variadic. : */ : if (nvargs > 0 && vatype != ANYOID) : { : ArrayExpr *newa = makeNode(ArrayExpr); 0.00 : 538d25: e8 e6 00 26 00 callq 798e10 0.00 : 538d2a: c7 00 49 01 00 00 movl $0x149,(%rax) : int non_var_args = nargs - nvargs; 0.00 : 538d30: 2b 5d c0 sub -0x40(%rbp),%ebx : * If it's a variadic function call, transform the last nvargs arguments : * into an array --- unless it's an "any" variadic. : */ : if (nvargs > 0 && vatype != ANYOID) : { : ArrayExpr *newa = makeNode(ArrayExpr); 0.00 : 538d33: 49 89 c5 mov %rax,%r13 : int non_var_args = nargs - nvargs; : List *vargs; : : Assert(non_var_args >= 0); : vargs = list_copy_tail(fargs, non_var_args); 0.00 : 538d36: 48 8b bd 50 fa ff ff mov -0x5b0(%rbp),%rdi 0.00 : 538d3d: 89 de mov %ebx,%esi 0.00 : 538d3f: e8 fc 88 0a 00 callq 5e1640 : fargs = list_truncate(fargs, non_var_args); 0.00 : 538d44: 48 8b bd 50 fa ff ff mov -0x5b0(%rbp),%rdi : ArrayExpr *newa = makeNode(ArrayExpr); : int non_var_args = nargs - nvargs; : List *vargs; : : Assert(non_var_args >= 0); : vargs = list_copy_tail(fargs, non_var_args); 0.00 : 538d4b: 49 89 c4 mov %rax,%r12 : fargs = list_truncate(fargs, non_var_args); 0.00 : 538d4e: 89 de mov %ebx,%esi 0.00 : 538d50: e8 4b 86 0a 00 callq 5e13a0 0.00 : 538d55: 48 89 c3 mov %rax,%rbx 0.00 : 538d58: 31 c0 xor %eax,%eax 0.00 : 538d5a: 4d 85 e4 test %r12,%r12 : : newa->elements = vargs; 0.00 : 538d5d: 4d 89 65 10 mov %r12,0x10(%r13) 0.00 : 538d61: 74 05 je 538d68 0.00 : 538d63: 49 8b 44 24 08 mov 0x8(%r12),%rax : /* assume all the variadic arguments were coerced to the same type */ : newa->element_typeid = exprType((Node *) linitial(vargs)); 0.00 : 538d68: 48 8b 38 mov (%rax),%rdi 0.00 : 538d6b: e8 60 7f 0a 00 callq 5e0cd0 0.00 : 538d70: 89 c7 mov %eax,%edi 0.00 : 538d72: 41 89 45 0c mov %eax,0xc(%r13) : newa->array_typeid = get_array_type(newa->element_typeid); 0.00 : 538d76: e8 a5 94 23 00 callq 772220 : if (!OidIsValid(newa->array_typeid)) 0.00 : 538d7b: 85 c0 test %eax,%eax : fargs = list_truncate(fargs, non_var_args); : : newa->elements = vargs; : /* assume all the variadic arguments were coerced to the same type */ : newa->element_typeid = exprType((Node *) linitial(vargs)); : newa->array_typeid = get_array_type(newa->element_typeid); 0.00 : 538d7d: 41 89 45 04 mov %eax,0x4(%r13) : if (!OidIsValid(newa->array_typeid)) 0.00 : 538d81: 0f 84 15 13 00 00 je 53a09c : errmsg("could not find array type for data type %s", : format_type_be(newa->element_typeid)), : parser_errposition(pstate, exprLocation((Node *) vargs)))); : /* array_collid will be set by parse_collate.c */ : newa->multidims = false; : newa->location = exprLocation((Node *) vargs); 0.00 : 538d87: 4c 89 e7 mov %r12,%rdi : (errcode(ERRCODE_UNDEFINED_OBJECT), : errmsg("could not find array type for data type %s", : format_type_be(newa->element_typeid)), : parser_errposition(pstate, exprLocation((Node *) vargs)))); : /* array_collid will be set by parse_collate.c */ : newa->multidims = false; 0.00 : 538d8a: 41 c6 45 18 00 movb $0x0,0x18(%r13) : newa->location = exprLocation((Node *) vargs); 0.00 : 538d8f: e8 7c 53 0a 00 callq 5de110 : : fargs = lappend(fargs, newa); 0.00 : 538d94: 4c 89 ee mov %r13,%rsi : errmsg("could not find array type for data type %s", : format_type_be(newa->element_typeid)), : parser_errposition(pstate, exprLocation((Node *) vargs)))); : /* array_collid will be set by parse_collate.c */ : newa->multidims = false; : newa->location = exprLocation((Node *) vargs); 0.00 : 538d97: 41 89 45 1c mov %eax,0x1c(%r13) : : fargs = lappend(fargs, newa); 0.00 : 538d9b: 48 89 df mov %rbx,%rdi 0.00 : 538d9e: e8 dd 90 0a 00 callq 5e1e80 0.00 : 538da3: c6 85 a0 fa ff ff 01 movb $0x1,-0x560(%rbp) 0.00 : 538daa: 48 89 85 e0 fa ff ff mov %rax,-0x520(%rbp) : : /* : * If an "any" variadic is called with explicit VARIADIC marking, insist : * that the variadic parameter be of some array type. : */ : if (nargs > 0 && vatype == ANYOID && func_variadic) 0.00 : 538db1: 45 85 ff test %r15d,%r15d 0.00 : 538db4: 7e 0d jle 538dc3 0.00 : 538db6: 81 7d bc e4 08 00 00 cmpl $0x8e4,-0x44(%rbp) 0.00 : 538dbd: 0f 84 2e 06 00 00 je 5393f1 : parser_errposition(pstate, : exprLocation((Node *) llast(fargs))))); : } : : /* build the appropriate output structure */ : if (fdresult == FUNCDETAIL_NORMAL) 0.00 : 538dc3: 83 bd 74 fa ff ff 02 cmpl $0x2,-0x58c(%rbp) 0.00 : 538dca: 0f 84 18 07 00 00 je 5394e8 : funcexpr->args = fargs; : funcexpr->location = location; : : retval = (Node *) funcexpr; : } : else if (fdresult == FUNCDETAIL_AGGREGATE && !over) 0.00 : 538dd0: 83 bd 74 fa ff ff 03 cmpl $0x3,-0x58c(%rbp) 0.00 : 538dd7: 0f 84 5b 05 00 00 je 539338 : retval = (Node *) aggref; : } : else : { : /* window function */ : WindowFunc *wfunc = makeNode(WindowFunc); 0.00 : 538ddd: 48 8b 3d 7c 1a 68 00 mov 0x681a7c(%rip),%rdi # bba860 0.00 : 538de4: be 38 00 00 00 mov $0x38,%esi 0.00 : 538de9: e8 22 00 26 00 callq 798e10 0.00 : 538dee: c7 00 33 01 00 00 movl $0x133,(%rax) 0.00 : 538df4: 48 89 c3 mov %rax,%rbx : : Assert(over); /* lack of this was checked above */ : Assert(!agg_within_group); /* also checked above */ : : wfunc->winfnoid = funcid; 0.00 : 538df7: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 538dfa: 89 43 04 mov %eax,0x4(%rbx) : wfunc->wintype = rettype; 0.00 : 538dfd: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 538e00: 89 43 08 mov %eax,0x8(%rbx) : /* wincollid and inputcollid will be set by parse_collate.c */ : wfunc->args = fargs; 0.00 : 538e03: 48 8b 8d e0 fa ff ff mov -0x520(%rbp),%rcx 0.00 : 538e0a: 48 89 4b 18 mov %rcx,0x18(%rbx) : /* winref will be set by transformWindowFuncCall */ : wfunc->winstar = agg_star; 0.00 : 538e0e: 0f b6 85 9e fa ff ff movzbl -0x562(%rbp),%eax 0.00 : 538e15: 88 43 2c mov %al,0x2c(%rbx) : wfunc->winagg = (fdresult == FUNCDETAIL_AGGREGATE); 0.00 : 538e18: 83 bd 74 fa ff ff 03 cmpl $0x3,-0x58c(%rbp) 0.00 : 538e1f: 0f 94 c0 sete %al 0.00 : 538e22: 88 43 2d mov %al,0x2d(%rbx) : wfunc->aggfilter = agg_filter; 0.00 : 538e25: 48 8b 95 90 fa ff ff mov -0x570(%rbp),%rdx 0.00 : 538e2c: 48 89 53 20 mov %rdx,0x20(%rbx) : wfunc->location = location; 0.00 : 538e30: 8b 8d 4c fa ff ff mov -0x5b4(%rbp),%ecx 0.00 : 538e36: 89 4b 30 mov %ecx,0x30(%rbx) : : /* : * agg_star is allowed for aggregate functions but distinct isn't : */ : if (agg_distinct) 0.00 : 538e39: 80 bd 9f fa ff ff 00 cmpb $0x0,-0x561(%rbp) 0.00 : 538e40: 0f 85 23 0e 00 00 jne 539c69 : : /* : * Reject attempt to call a parameterless aggregate without (*) : * syntax. This is mere pedantry but some folks insisted ... : */ : if (wfunc->winagg && fargs == NIL && !agg_star) 0.00 : 538e46: 84 c0 test %al,%al 0.00 : 538e48: 0f 84 a2 01 00 00 je 538ff0 0.00 : 538e4e: 48 83 bd e0 fa ff ff cmpq $0x0,-0x520(%rbp) 0.00 : 538e55: 00 0.00 : 538e56: 0f 85 94 01 00 00 jne 538ff0 0.00 : 538e5c: 80 bd 9e fa ff ff 00 cmpb $0x0,-0x562(%rbp) 0.00 : 538e63: 0f 85 87 01 00 00 jne 538ff0 : ereport(ERROR, 0.00 : 538e69: 45 31 c0 xor %r8d,%r8d 0.00 : 538e6c: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 538e71: ba d7 02 00 00 mov $0x2d7,%edx 0.00 : 538e76: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 538e7b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 538e80: e8 3b 1c 24 00 callq 77aac0 0.00 : 538e85: 84 c0 test %al,%al 0.00 : 538e87: 74 5f je 538ee8 0.00 : 538e89: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 538e8f: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 538e96: e8 d5 17 00 00 callq 53a670 0.00 : 538e9b: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 538ea2: 41 89 c4 mov %eax,%r12d 0.00 : 538ea5: e8 76 5c fb ff callq 4eeb20 0.00 : 538eaa: bf 88 44 87 00 mov $0x874488,%edi 0.00 : 538eaf: 48 89 c6 mov %rax,%rsi 0.00 : 538eb2: 31 c0 xor %eax,%eax 0.00 : 538eb4: e8 e7 39 24 00 callq 77c8a0 0.00 : 538eb9: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 538ebe: 89 c3 mov %eax,%ebx 0.00 : 538ec0: eb 5e jmp 538f20 0.00 : 538ec2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* Reject duplicate arg names */ : foreach(lc, argnames) : { : if (strcmp(na->name, (char *) lfirst(lc)) == 0) : ereport(ERROR, 0.00 : 538ec8: 45 31 c0 xor %r8d,%r8d 0.00 : 538ecb: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 538ed0: ba af 00 00 00 mov $0xaf,%edx 0.00 : 538ed5: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 538eda: bf 14 00 00 00 mov $0x14,%edi 0.00 : 538edf: e8 dc 1b 24 00 callq 77aac0 0.00 : 538ee4: 84 c0 test %al,%al 0.00 : 538ee6: 75 0e jne 538ef6 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("FILTER is not implemented for non-aggregate window functions"), : parser_errposition(pstate, location))); : : if (retset) : ereport(ERROR, 0.00 : 538ee8: e8 e3 05 f3 ff callq 4694d0 : { : NamedArgExpr *na = (NamedArgExpr *) arg; : ListCell *lc; : : /* Reject duplicate arg names */ : foreach(lc, argnames) 0.00 : 538eed: 4d 8b 66 10 mov 0x10(%r14),%r12 0.00 : 538ef1: e9 4e fc ff ff jmpq 538b44 : { : if (strcmp(na->name, (char *) lfirst(lc)) == 0) : ereport(ERROR, 0.00 : 538ef6: 41 8b 76 1c mov 0x1c(%r14),%esi 0.00 : 538efa: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 538f01: e8 6a 17 00 00 callq 53a670 0.00 : 538f06: 49 8b 76 10 mov 0x10(%r14),%rsi 0.00 : 538f0a: bf 18 3e 87 00 mov $0x873e18,%edi 0.00 : 538f0f: 41 89 c4 mov %eax,%r12d 0.00 : 538f12: 31 c0 xor %eax,%eax 0.00 : 538f14: e8 87 39 24 00 callq 77c8a0 0.00 : 538f19: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 538f1e: 89 c3 mov %eax,%ebx : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("FILTER is not implemented for non-aggregate window functions"), : parser_errposition(pstate, location))); : : if (retset) : ereport(ERROR, 0.00 : 538f20: e8 2b 3e 24 00 callq 77cd50 0.00 : 538f25: 44 89 e2 mov %r12d,%edx 0.00 : 538f28: 89 c7 mov %eax,%edi 0.00 : 538f2a: 89 de mov %ebx,%esi 0.00 : 538f2c: 31 c0 xor %eax,%eax 0.00 : 538f2e: e8 ad 16 24 00 callq 77a5e0 0.00 : 538f33: e8 98 05 f3 ff callq 4694d0 : { : /* : * Normal function found; was there anything indicating it must be an : * aggregate? : */ : if (agg_star) 0.00 : 538f38: 80 bd 9e fa ff ff 00 cmpb $0x0,-0x562(%rbp) 0.00 : 538f3f: 0f 85 79 0c 00 00 jne 539bbe : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("%s(*) specified, but %s is not an aggregate function", : NameListToString(funcname), : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_distinct) 0.00 : 538f45: 80 bd 9f fa ff ff 00 cmpb $0x0,-0x561(%rbp) 0.00 : 538f4c: 0f 85 19 10 00 00 jne 539f6b : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("DISTINCT specified, but %s is not an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_within_group) 0.00 : 538f52: 80 bd 9d fa ff ff 00 cmpb $0x0,-0x563(%rbp) 0.00 : 538f59: 0f 85 ac 0f 00 00 jne 539f0b : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("WITHIN GROUP specified, but %s is not an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_order != NIL) 0.00 : 538f5f: 48 83 bd 88 fa ff ff cmpq $0x0,-0x578(%rbp) 0.00 : 538f66: 00 0.00 : 538f67: 0f 85 3e 0f 00 00 jne 539eab : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("ORDER BY specified, but %s is not an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_filter) 0.00 : 538f6d: 48 83 bd 90 fa ff ff cmpq $0x0,-0x570(%rbp) 0.00 : 538f74: 00 0.00 : 538f75: 0f 85 d0 0e 00 00 jne 539e4b : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("FILTER specified, but %s is not an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (over) 0.00 : 538f7b: 48 83 bd b0 fa ff ff cmpq $0x0,-0x550(%rbp) 0.00 : 538f82: 00 0.00 : 538f83: 0f 84 bc fc ff ff je 538c45 : ereport(ERROR, 0.00 : 538f89: 45 31 c0 xor %r8d,%r8d 0.00 : 538f8c: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 538f91: ba 28 01 00 00 mov $0x128,%edx 0.00 : 538f96: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 538f9b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 538fa0: e8 1b 1b 24 00 callq 77aac0 0.00 : 538fa5: 84 c0 test %al,%al 0.00 : 538fa7: 0f 84 3b ff ff ff je 538ee8 0.00 : 538fad: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 538fb3: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 538fba: e8 b1 16 00 00 callq 53a670 0.00 : 538fbf: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 538fc6: 41 89 c4 mov %eax,%r12d 0.00 : 538fc9: e8 52 5b fb ff callq 4eeb20 0.00 : 538fce: bf 98 3f 87 00 mov $0x873f98,%edi 0.00 : 538fd3: 48 89 c6 mov %rax,%rsi 0.00 : 538fd6: 31 c0 xor %eax,%eax 0.00 : 538fd8: e8 c3 38 24 00 callq 77c8a0 0.00 : 538fdd: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 538fe2: 89 c3 mov %eax,%ebx 0.00 : 538fe4: e9 37 ff ff ff jmpq 538f20 0.00 : 538fe9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : parser_errposition(pstate, location))); : : /* : * ordered aggs not allowed in windows yet : */ : if (agg_order != NIL) 0.00 : 538ff0: 48 83 bd 88 fa ff ff cmpq $0x0,-0x578(%rbp) 0.00 : 538ff7: 00 0.00 : 538ff8: 0f 85 fc 0d 00 00 jne 539dfa : parser_errposition(pstate, location))); : : /* : * FILTER is not yet supported with true window functions : */ : if (!wfunc->winagg && agg_filter) 0.00 : 538ffe: 84 c0 test %al,%al 0.00 : 539000: 0f 84 cd 02 00 00 je 5392d3 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("FILTER is not implemented for non-aggregate window functions"), : parser_errposition(pstate, location))); : : if (retset) 0.00 : 539006: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 53900a: 0f 85 5d 0b 00 00 jne 539b6d : (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), : errmsg("window functions cannot return sets"), : parser_errposition(pstate, location))); : : /* parse_agg.c does additional window-func-specific processing */ : transformWindowFuncCall(pstate, wfunc, over); 0.00 : 539010: 48 8b 95 b0 fa ff ff mov -0x550(%rbp),%rdx 0.00 : 539017: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53901e: 48 89 de mov %rbx,%rsi 0.00 : 539021: e8 ba 22 ff ff callq 52b2e0 0.00 : 539026: 48 89 da mov %rbx,%rdx : : retval = (Node *) wfunc; : } : : return retval; : } 0.00 : 539029: 48 81 c4 d8 05 00 00 add $0x5d8,%rsp 0.00 : 539030: 48 89 d0 mov %rdx,%rax 0.00 : 539033: 5b pop %rbx 0.00 : 539034: 41 5c pop %r12 0.00 : 539036: 41 5d pop %r13 0.00 : 539038: 41 5e pop %r14 0.00 : 53903a: 41 5f pop %r15 0.00 : 53903c: c9 leaveq 0.00 : 53903d: c3 retq : (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), : errmsg("window functions cannot return sets"), : parser_errposition(pstate, location))); : : /* parse_agg.c does additional window-func-specific processing */ : transformWindowFuncCall(pstate, wfunc, over); 0.00 : 53903e: 48 c7 85 e0 fa ff ff movq $0x0,-0x520(%rbp) 0.00 : 539045: 00 00 00 00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_func.c:754 100.00 : 539049: 45 31 ff xor %r15d,%r15d 0.00 : 53904c: c7 85 ec fa ff ff 00 movl $0x0,-0x514(%rbp) 0.00 : 539053: 00 00 00 0.00 : 539056: 45 31 e4 xor %r12d,%r12d : * Check for column projection: if function has one argument, and that : * argument is of complex type, and function name is not qualified, then : * the "function call" could be a projection. We also check that there : * wasn't any aggregate or variadic decoration, nor an argument name. : */ : if (nargs == 1 && agg_order == NIL && agg_filter == NULL && !agg_star && 0.00 : 539059: 41 83 ff 01 cmp $0x1,%r15d : (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), : errmsg("window functions cannot return sets"), : parser_errposition(pstate, location))); : : /* parse_agg.c does additional window-func-specific processing */ : transformWindowFuncCall(pstate, wfunc, over); 0.00 : 53905d: 48 c7 85 b8 fa ff ff movq $0x0,-0x548(%rbp) 0.00 : 539064: 00 00 00 00 : * Check for column projection: if function has one argument, and that : * argument is of complex type, and function name is not qualified, then : * the "function call" could be a projection. We also check that there : * wasn't any aggregate or variadic decoration, nor an argument name. : */ : if (nargs == 1 && agg_order == NIL && agg_filter == NULL && !agg_star && 0.00 : 539068: 0f 85 0d fb ff ff jne 538b7b 0.00 : 53906e: 48 83 bd 88 fa ff ff cmpq $0x0,-0x578(%rbp) 0.00 : 539075: 00 0.00 : 539076: 0f 85 ff fa ff ff jne 538b7b 0.00 : 53907c: 48 83 bd 90 fa ff ff cmpq $0x0,-0x570(%rbp) 0.00 : 539083: 00 0.00 : 539084: 0f 85 f1 fa ff ff jne 538b7b 0.00 : 53908a: 80 bd 9e fa ff ff 00 cmpb $0x0,-0x562(%rbp) 0.00 : 539091: 0f 85 e4 fa ff ff jne 538b7b 0.00 : 539097: 80 bd 9f fa ff ff 00 cmpb $0x0,-0x561(%rbp) 0.00 : 53909e: 0f 85 d7 fa ff ff jne 538b7b 0.00 : 5390a4: 48 83 bd b0 fa ff ff cmpq $0x0,-0x550(%rbp) 0.00 : 5390ab: 00 0.00 : 5390ac: 0f 85 c9 fa ff ff jne 538b7b 0.00 : 5390b2: 80 bd a0 fa ff ff 00 cmpb $0x0,-0x560(%rbp) 0.00 : 5390b9: 0f 85 bc fa ff ff jne 538b7b 0.00 : 5390bf: 48 83 bd b8 fa ff ff cmpq $0x0,-0x548(%rbp) 0.00 : 5390c6: 00 0.00 : 5390c7: 0f 85 ae fa ff ff jne 538b7b : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5390cd: 48 83 bd 58 fa ff ff cmpq $0x0,-0x5a8(%rbp) 0.00 : 5390d4: 00 0.00 : 5390d5: 0f 84 a0 fa ff ff je 538b7b 0.00 : 5390db: 48 8b 8d 58 fa ff ff mov -0x5a8(%rbp),%rcx 0.00 : 5390e2: 83 79 04 01 cmpl $0x1,0x4(%rcx) 0.00 : 5390e6: 0f 85 8f fa ff ff jne 538b7b : !agg_distinct && over == NULL && !func_variadic && argnames == NIL && : list_length(funcname) == 1) : { : Oid argtype = actual_arg_types[0]; 0.00 : 5390ec: 8b bd 10 fe ff ff mov -0x1f0(%rbp),%edi : : if (argtype == RECORDOID || ISCOMPLEX(argtype)) 0.00 : 5390f2: 81 ff c9 08 00 00 cmp $0x8c9,%edi 0.00 : 5390f8: 74 0d je 539107 0.00 : 5390fa: e8 61 98 00 00 callq 542960 0.00 : 5390ff: 85 c0 test %eax,%eax 0.00 : 539101: 0f 84 74 fa ff ff je 538b7b : { : retval = ParseComplexProjection(pstate, 0.00 : 539107: 48 8b 9d 58 fa ff ff mov -0x5a8(%rbp),%rbx 0.00 : 53910e: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 539112: 48 8b 00 mov (%rax),%rax 0.00 : 539115: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 539119: 48 89 85 68 fa ff ff mov %rax,-0x598(%rbp) : * field. : * : * This case could be handled by expandRecordVariable, but it's more : * efficient to do it this way when possible. : */ : if (IsA(first_arg, Var) && 0.00 : 539120: 41 81 3c 24 2f 01 00 cmpl $0x12f,(%r12) 0.00 : 539127: 00 0.00 : 539128: 0f 84 5e 0c 00 00 je 539d8c : * That task is handled by expandRecordVariable(). : */ : if (IsA(first_arg, Var) && : ((Var *) first_arg)->vartype == RECORDOID) : tupdesc = expandRecordVariable(pstate, (Var *) first_arg, 0); : else if (get_expr_result_type(first_arg, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) 0.00 : 53912e: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 539132: 31 f6 xor %esi,%esi 0.00 : 539134: 4c 89 e7 mov %r12,%rdi 0.00 : 539137: e8 34 98 24 00 callq 782970 0.00 : 53913c: 83 e8 01 sub $0x1,%eax 0.00 : 53913f: 0f 85 36 fa ff ff jne 538b7b : return NULL; /* unresolvable RECORD type */ : Assert(tupdesc); : : for (i = 0; i < tupdesc->natts; i++) 0.00 : 539145: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 539149: 8b 10 mov (%rax),%edx 0.00 : 53914b: 85 d2 test %edx,%edx 0.00 : 53914d: 89 95 c8 fa ff ff mov %edx,-0x538(%rbp) 0.00 : 539153: 0f 8e 22 fa ff ff jle 538b7b : * That task is handled by expandRecordVariable(). : */ : if (IsA(first_arg, Var) && : ((Var *) first_arg)->vartype == RECORDOID) : tupdesc = expandRecordVariable(pstate, (Var *) first_arg, 0); : else if (get_expr_result_type(first_arg, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) 0.00 : 539159: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 53915d: 45 31 f6 xor %r14d,%r14d 0.00 : 539160: eb 1b jmp 53917d 0.00 : 539162: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; /* unresolvable RECORD type */ : Assert(tupdesc); : : for (i = 0; i < tupdesc->natts; i++) 0.00 : 539168: 41 83 c6 01 add $0x1,%r14d 0.00 : 53916c: 49 83 c5 08 add $0x8,%r13 0.00 : 539170: 44 3b b5 c8 fa ff ff cmp -0x538(%rbp),%r14d 0.00 : 539177: 0f 8d fe f9 ff ff jge 538b7b : { : Form_pg_attribute att = tupdesc->attrs[i]; 0.00 : 53917d: 49 8b 5d 00 mov 0x0(%r13),%rbx : : if (strcmp(funcname, NameStr(att->attname)) == 0 && 0.00 : 539181: 48 8b bd 68 fa ff ff mov -0x598(%rbp),%rdi 0.00 : 539188: 48 8d 73 04 lea 0x4(%rbx),%rsi 0.00 : 53918c: e8 9f 0b f3 ff callq 469d30 0.00 : 539191: 85 c0 test %eax,%eax 0.00 : 539193: 75 d3 jne 539168 0.00 : 539195: 80 7b 61 00 cmpb $0x0,0x61(%rbx) 0.00 : 539199: 75 cd jne 539168 : !att->attisdropped) : { : /* Success, so generate a FieldSelect expression */ : FieldSelect *fselect = makeNode(FieldSelect); 0.00 : 53919b: 48 8b 3d be 16 68 00 mov 0x6816be(%rip),%rdi # bba860 0.00 : 5391a2: be 20 00 00 00 mov $0x20,%esi 0.00 : 5391a7: e8 64 fc 25 00 callq 798e10 0.00 : 5391ac: c7 00 3f 01 00 00 movl $0x13f,(%rax) : : fselect->arg = (Expr *) first_arg; 0.00 : 5391b2: 4c 89 60 08 mov %r12,0x8(%rax) : : if (strcmp(funcname, NameStr(att->attname)) == 0 && : !att->attisdropped) : { : /* Success, so generate a FieldSelect expression */ : FieldSelect *fselect = makeNode(FieldSelect); 0.00 : 5391b6: 48 89 c2 mov %rax,%rdx : : fselect->arg = (Expr *) first_arg; : fselect->fieldnum = i + 1; 0.00 : 5391b9: 41 8d 46 01 lea 0x1(%r14),%eax 0.00 : 5391bd: 66 89 42 10 mov %ax,0x10(%rdx) : fselect->resulttype = att->atttypid; 0.00 : 5391c1: 8b 43 44 mov 0x44(%rbx),%eax 0.00 : 5391c4: 89 42 14 mov %eax,0x14(%rdx) : fselect->resulttypmod = att->atttypmod; 0.00 : 5391c7: 8b 43 58 mov 0x58(%rbx),%eax 0.00 : 5391ca: 89 42 18 mov %eax,0x18(%rdx) : /* save attribute's collation for parse_collate.c */ : fselect->resultcollid = att->attcollation; 0.00 : 5391cd: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 5391d0: 89 42 1c mov %eax,0x1c(%rdx) : { : retval = ParseComplexProjection(pstate, : strVal(linitial(funcname)), : first_arg, : location); : if (retval) 0.00 : 5391d3: 48 85 d2 test %rdx,%rdx 0.00 : 5391d6: 0f 85 4d fe ff ff jne 539029 0.00 : 5391dc: e9 9a f9 ff ff jmpq 538b7b 0.00 : 5391e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : Node * : ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, : FuncCall *fn, int location) : { : bool is_column = (fn == NULL); : List *agg_order = (fn ? fn->agg_order : NIL); 0.00 : 5391e8: 48 c7 85 90 fa ff ff movq $0x0,-0x570(%rbp) 0.00 : 5391ef: 00 00 00 00 0.00 : 5391f3: 48 c7 85 88 fa ff ff movq $0x0,-0x578(%rbp) 0.00 : 5391fa: 00 00 00 00 0.00 : 5391fe: c6 85 9d fa ff ff 00 movb $0x0,-0x563(%rbp) 0.00 : 539205: c6 85 9e fa ff ff 00 movb $0x0,-0x562(%rbp) 0.00 : 53920c: c6 85 9f fa ff ff 00 movb $0x0,-0x561(%rbp) 0.00 : 539213: c6 85 a0 fa ff ff 00 movb $0x0,-0x560(%rbp) 0.00 : 53921a: 48 c7 85 b0 fa ff ff movq $0x0,-0x550(%rbp) 0.00 : 539221: 00 00 00 00 0.00 : 539225: e9 b5 f7 ff ff jmpq 5389df : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 53922a: 31 c0 xor %eax,%eax 0.00 : 53922c: 48 83 bd 50 fa ff ff cmpq $0x0,-0x5b0(%rbp) 0.00 : 539233: 00 : { : /* : * We interpreted it as a type coercion. coerce_type can handle these : * cases, so why duplicate code... : */ : return coerce_type(pstate, linitial(fargs), 0.00 : 539234: 8b 4d c8 mov -0x38(%rbp),%ecx 0.00 : 539237: 8b 95 10 fe ff ff mov -0x1f0(%rbp),%edx 0.00 : 53923d: 74 0b je 53924a 0.00 : 53923f: 48 8b 9d 50 fa ff ff mov -0x5b0(%rbp),%rbx 0.00 : 539246: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 53924a: 8b 9d 4c fa ff ff mov -0x5b4(%rbp),%ebx 0.00 : 539250: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 539257: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 53925d: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539264: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 53926a: 89 5c 24 08 mov %ebx,0x8(%rsp) 0.00 : 53926e: 48 8b 30 mov (%rax),%rsi 0.00 : 539271: e8 7a 78 ff ff callq 530af0 0.00 : 539276: 48 89 c2 mov %rax,%rdx : : retval = (Node *) wfunc; : } : : return retval; : } 0.00 : 539279: e9 ab fd ff ff jmpq 539029 : argnames = lappend(argnames, na->name); : } : else : { : if (argnames != NIL) : ereport(ERROR, 0.00 : 53927e: 45 31 c0 xor %r8d,%r8d 0.00 : 539281: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539286: ba b9 00 00 00 mov $0xb9,%edx 0.00 : 53928b: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539290: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539295: e8 26 18 24 00 callq 77aac0 0.00 : 53929a: 84 c0 test %al,%al 0.00 : 53929c: 0f 84 46 fc ff ff je 538ee8 0.00 : 5392a2: 4c 89 f7 mov %r14,%rdi 0.00 : 5392a5: e8 66 4e 0a 00 callq 5de110 0.00 : 5392aa: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 5392b1: 89 c6 mov %eax,%esi 0.00 : 5392b3: e8 b8 13 00 00 callq 53a670 0.00 : 5392b8: bf 40 3e 87 00 mov $0x873e40,%edi 0.00 : 5392bd: 41 89 c4 mov %eax,%r12d 0.00 : 5392c0: 31 c0 xor %eax,%eax 0.00 : 5392c2: e8 d9 35 24 00 callq 77c8a0 0.00 : 5392c7: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 5392cc: 89 c3 mov %eax,%ebx 0.00 : 5392ce: e9 4d fc ff ff jmpq 538f20 : parser_errposition(pstate, location))); : : /* : * FILTER is not yet supported with true window functions : */ : if (!wfunc->winagg && agg_filter) 0.00 : 5392d3: 48 83 bd 90 fa ff ff cmpq $0x0,-0x570(%rbp) 0.00 : 5392da: 00 0.00 : 5392db: 0f 84 25 fd ff ff je 539006 : ereport(ERROR, 0.00 : 5392e1: 45 31 c0 xor %r8d,%r8d 0.00 : 5392e4: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 5392e9: ba e9 02 00 00 mov $0x2e9,%edx 0.00 : 5392ee: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 5392f3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5392f8: e8 c3 17 24 00 callq 77aac0 0.00 : 5392fd: 84 c0 test %al,%al 0.00 : 5392ff: 0f 84 e3 fb ff ff je 538ee8 0.00 : 539305: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 53930b: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539312: e8 59 13 00 00 callq 53a670 0.00 : 539317: bf 68 45 87 00 mov $0x874568,%edi 0.00 : 53931c: 41 89 c4 mov %eax,%r12d 0.00 : 53931f: 31 c0 xor %eax,%eax 0.00 : 539321: e8 7a 35 24 00 callq 77c8a0 0.00 : 539326: bf 40 04 00 00 mov $0x440,%edi 0.00 : 53932b: 89 c3 mov %eax,%ebx 0.00 : 53932d: e9 ee fb ff ff jmpq 538f20 0.00 : 539332: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : funcexpr->args = fargs; : funcexpr->location = location; : : retval = (Node *) funcexpr; : } : else if (fdresult == FUNCDETAIL_AGGREGATE && !over) 0.00 : 539338: 48 83 bd b0 fa ff ff cmpq $0x0,-0x550(%rbp) 0.00 : 53933f: 00 0.00 : 539340: 0f 85 97 fa ff ff jne 538ddd : { : /* aggregate function */ : Aggref *aggref = makeNode(Aggref); 0.00 : 539346: 48 8b 3d 13 15 68 00 mov 0x681513(%rip),%rdi # bba860 0.00 : 53934d: be 50 00 00 00 mov $0x50,%esi 0.00 : 539352: e8 b9 fa 25 00 callq 798e10 0.00 : 539357: c7 00 32 01 00 00 movl $0x132,(%rax) 0.00 : 53935d: 48 89 c3 mov %rax,%rbx : : aggref->aggfnoid = funcid; 0.00 : 539360: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 539363: 89 43 04 mov %eax,0x4(%rbx) : aggref->aggtype = rettype; 0.00 : 539366: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 539369: 89 43 08 mov %eax,0x8(%rbx) : /* aggcollid and inputcollid will be set by parse_collate.c */ : /* aggdirectargs and args will be set by transformAggregateCall */ : /* aggorder and aggdistinct will be set by transformAggregateCall */ : aggref->aggfilter = agg_filter; 0.00 : 53936c: 48 8b 85 90 fa ff ff mov -0x570(%rbp),%rax 0.00 : 539373: 48 89 43 38 mov %rax,0x38(%rbx) : aggref->aggstar = agg_star; 0.00 : 539377: 0f b6 95 9e fa ff ff movzbl -0x562(%rbp),%edx 0.00 : 53937e: 88 53 40 mov %dl,0x40(%rbx) : aggref->aggvariadic = func_variadic; 0.00 : 539381: 0f b6 8d a0 fa ff ff movzbl -0x560(%rbp),%ecx 0.00 : 539388: 88 4b 41 mov %cl,0x41(%rbx) : aggref->aggkind = aggkind; 0.00 : 53938b: 0f b6 85 c7 fa ff ff movzbl -0x539(%rbp),%eax 0.00 : 539392: 88 43 42 mov %al,0x42(%rbx) : /* agglevelsup will be set by transformAggregateCall */ : aggref->location = location; 0.00 : 539395: 8b 95 4c fa ff ff mov -0x5b4(%rbp),%edx 0.00 : 53939b: 89 53 48 mov %edx,0x48(%rbx) : : /* : * Reject attempt to call a parameterless aggregate without (*) : * syntax. This is mere pedantry but some folks insisted ... : */ : if (fargs == NIL && !agg_star && !agg_within_group) 0.00 : 53939e: 48 83 bd e0 fa ff ff cmpq $0x0,-0x520(%rbp) 0.00 : 5393a5: 00 0.00 : 5393a6: 0f 84 44 05 00 00 je 5398f0 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("%s(*) must be used to call a parameterless aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : : if (retset) 0.00 : 5393ac: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 5393b0: 0f 85 95 0c 00 00 jne 53a04b : * teach the planner to reorder the list properly. Or maybe we could : * make transformAggregateCall do that? However, if you'd also like : * to allow default arguments for aggregates, we'd need to do it in : * planning to avoid semantic problems. : */ : if (argnames != NIL) 0.00 : 5393b6: 48 83 bd b8 fa ff ff cmpq $0x0,-0x548(%rbp) 0.00 : 5393bd: 00 0.00 : 5393be: 0f 85 39 0d 00 00 jne 53a0fd : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("aggregates cannot use named arguments"), : parser_errposition(pstate, location))); : : /* parse_agg.c does additional aggregate-specific processing */ : transformAggregateCall(pstate, aggref, fargs, agg_order, agg_distinct); 0.00 : 5393c4: 44 0f be 85 9f fa ff movsbl -0x561(%rbp),%r8d 0.00 : 5393cb: ff 0.00 : 5393cc: 48 8b 95 e0 fa ff ff mov -0x520(%rbp),%rdx 0.00 : 5393d3: 48 89 de mov %rbx,%rsi 0.00 : 5393d6: 48 8b 8d 88 fa ff ff mov -0x578(%rbp),%rcx 0.00 : 5393dd: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 5393e4: e8 87 22 ff ff callq 52b670 0.00 : 5393e9: 48 89 da mov %rbx,%rdx 0.00 : 5393ec: e9 38 fc ff ff jmpq 539029 : : /* : * If an "any" variadic is called with explicit VARIADIC marking, insist : * that the variadic parameter be of some array type. : */ : if (nargs > 0 && vatype == ANYOID && func_variadic) 0.00 : 5393f1: 80 bd a0 fa ff ff 00 cmpb $0x0,-0x560(%rbp) 0.00 : 5393f8: 0f 84 c5 f9 ff ff je 538dc3 : { : Oid va_arr_typid = actual_arg_types[nargs - 1]; : : if (!OidIsValid(get_base_element_type(va_arr_typid))) 0.00 : 5393fe: 41 8d 47 ff lea -0x1(%r15),%eax 0.00 : 539402: 48 98 cltq 0.00 : 539404: 8b bc 85 10 fe ff ff mov -0x1f0(%rbp,%rax,4),%edi 0.00 : 53940b: e8 90 8d 23 00 callq 7721a0 0.00 : 539410: 85 c0 test %eax,%eax 0.00 : 539412: 0f 85 ab f9 ff ff jne 538dc3 : ereport(ERROR, 0.00 : 539418: 45 31 c0 xor %r8d,%r8d 0.00 : 53941b: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539420: ba 6a 02 00 00 mov $0x26a,%edx 0.00 : 539425: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53942a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53942f: e8 8c 16 24 00 callq 77aac0 0.00 : 539434: 84 c0 test %al,%al 0.00 : 539436: 0f 84 ac fa ff ff je 538ee8 : } : : STATIC_IF_INLINE ListCell * : list_tail(List *l) : { : return l ? l->tail : NULL; 0.00 : 53943c: 31 c0 xor %eax,%eax 0.00 : 53943e: 48 83 bd e0 fa ff ff cmpq $0x0,-0x520(%rbp) 0.00 : 539445: 00 0.00 : 539446: 74 0b je 539453 0.00 : 539448: 48 8b 9d e0 fa ff ff mov -0x520(%rbp),%rbx 0.00 : 53944f: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 539453: 48 8b 38 mov (%rax),%rdi 0.00 : 539456: e8 b5 4c 0a 00 callq 5de110 0.00 : 53945b: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539462: 89 c6 mov %eax,%esi 0.00 : 539464: e8 07 12 00 00 callq 53a670 0.00 : 539469: bf 60 44 87 00 mov $0x874460,%edi 0.00 : 53946e: 41 89 c4 mov %eax,%r12d 0.00 : 539471: 31 c0 xor %eax,%eax 0.00 : 539473: e8 28 34 24 00 callq 77c8a0 0.00 : 539478: bf 84 80 00 04 mov $0x4008084,%edi 0.00 : 53947d: 89 c3 mov %eax,%ebx 0.00 : 53947f: e9 9c fa ff ff jmpq 538f20 0.00 : 539484: 0f 1f 40 00 nopl 0x0(%rax) : { : Node *expr = (Node *) lfirst(l); : : /* probably shouldn't happen ... */ : if (nargsplusdefs >= FUNC_MAX_ARGS) : ereport(ERROR, 0.00 : 539488: 45 31 c0 xor %r8d,%r8d 0.00 : 53948b: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539490: ba 1b 02 00 00 mov $0x21b,%edx 0.00 : 539495: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53949a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53949f: e8 1c 16 24 00 callq 77aac0 0.00 : 5394a4: 84 c0 test %al,%al 0.00 : 5394a6: 0f 84 3c fa ff ff je 538ee8 0.00 : 5394ac: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 5394b2: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 5394b9: e8 b2 11 00 00 callq 53a670 0.00 : 5394be: bf e8 3d 87 00 mov $0x873de8,%edi 0.00 : 5394c3: 41 89 c4 mov %eax,%r12d 0.00 : 5394c6: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 5394cb: ba 64 00 00 00 mov $0x64,%edx 0.00 : 5394d0: be b0 3d 87 00 mov $0x873db0,%esi 0.00 : 5394d5: 31 c0 xor %eax,%eax 0.00 : 5394d7: e8 04 32 24 00 callq 77c6e0 0.00 : 5394dc: bf 05 01 08 03 mov $0x3080105,%edi 0.00 : 5394e1: 89 c3 mov %eax,%ebx 0.00 : 5394e3: e9 38 fa ff ff jmpq 538f20 : } : : /* build the appropriate output structure */ : if (fdresult == FUNCDETAIL_NORMAL) : { : FuncExpr *funcexpr = makeNode(FuncExpr); 0.00 : 5394e8: 48 8b 3d 71 13 68 00 mov 0x681371(%rip),%rdi # bba860 0.00 : 5394ef: be 30 00 00 00 mov $0x30,%esi 0.00 : 5394f4: e8 17 f9 25 00 callq 798e10 0.00 : 5394f9: c7 00 35 01 00 00 movl $0x135,(%rax) : : funcexpr->funcid = funcid; 0.00 : 5394ff: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 539502: 89 50 04 mov %edx,0x4(%rax) : funcexpr->funcresulttype = rettype; 0.00 : 539505: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 539508: 89 50 08 mov %edx,0x8(%rax) : funcexpr->funcretset = retset; 0.00 : 53950b: 0f b6 55 cf movzbl -0x31(%rbp),%edx 0.00 : 53950f: 88 50 0c mov %dl,0xc(%rax) : funcexpr->funcvariadic = func_variadic; 0.00 : 539512: 0f b6 95 a0 fa ff ff movzbl -0x560(%rbp),%edx : funcexpr->funcformat = COERCE_EXPLICIT_CALL; 0.00 : 539519: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : FuncExpr *funcexpr = makeNode(FuncExpr); : : funcexpr->funcid = funcid; : funcexpr->funcresulttype = rettype; : funcexpr->funcretset = retset; : funcexpr->funcvariadic = func_variadic; 0.00 : 539520: 88 50 0d mov %dl,0xd(%rax) : funcexpr->funcformat = COERCE_EXPLICIT_CALL; : /* funccollid and inputcollid will be set by parse_collate.c */ : funcexpr->args = fargs; 0.00 : 539523: 48 8b 8d e0 fa ff ff mov -0x520(%rbp),%rcx : funcexpr->location = location; 0.00 : 53952a: 48 89 c2 mov %rax,%rdx : funcexpr->funcresulttype = rettype; : funcexpr->funcretset = retset; : funcexpr->funcvariadic = func_variadic; : funcexpr->funcformat = COERCE_EXPLICIT_CALL; : /* funccollid and inputcollid will be set by parse_collate.c */ : funcexpr->args = fargs; 0.00 : 53952d: 48 89 48 20 mov %rcx,0x20(%rax) : funcexpr->location = location; 0.00 : 539531: 8b 9d 4c fa ff ff mov -0x5b4(%rbp),%ebx 0.00 : 539537: 89 58 28 mov %ebx,0x28(%rax) 0.00 : 53953a: e9 ea fa ff ff jmpq 539029 : */ : HeapTuple tup; : Form_pg_aggregate classForm; : int catDirectArgs; : : tup = SearchSysCache1(AGGFNOID, ObjectIdGetDatum(funcid)); 0.00 : 53953f: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 539542: 31 ff xor %edi,%edi 0.00 : 539544: 45 31 c0 xor %r8d,%r8d 0.00 : 539547: 31 c9 xor %ecx,%ecx 0.00 : 539549: 31 d2 xor %edx,%edx 0.00 : 53954b: e8 70 87 23 00 callq 771cc0 : if (!HeapTupleIsValid(tup)) /* should not happen */ 0.00 : 539550: 48 85 c0 test %rax,%rax : */ : HeapTuple tup; : Form_pg_aggregate classForm; : int catDirectArgs; : : tup = SearchSysCache1(AGGFNOID, ObjectIdGetDatum(funcid)); 0.00 : 539553: 48 89 c7 mov %rax,%rdi : if (!HeapTupleIsValid(tup)) /* should not happen */ 0.00 : 539556: 0f 84 d4 06 00 00 je 539c30 : elog(ERROR, "cache lookup failed for aggregate %u", funcid); : classForm = (Form_pg_aggregate) GETSTRUCT(tup); 0.00 : 53955c: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 539560: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 539564: 48 01 d0 add %rdx,%rax : aggkind = classForm->aggkind; 0.00 : 539567: 0f b6 50 04 movzbl 0x4(%rax),%edx 0.00 : 53956b: 88 95 c7 fa ff ff mov %dl,-0x539(%rbp) : catDirectArgs = classForm->aggnumdirectargs; 0.00 : 539571: 0f b7 58 06 movzwl 0x6(%rax),%ebx : ReleaseSysCache(tup); 0.00 : 539575: e8 36 87 23 00 callq 771cb0 : : /* Now check various disallowed cases. */ : if (AGGKIND_IS_ORDERED_SET(aggkind)) 0.00 : 53957a: 80 bd c7 fa ff ff 6e cmpb $0x6e,-0x539(%rbp) 0.00 : 539581: 0f 84 39 04 00 00 je 5399c0 : { : int numAggregatedArgs; : int numDirectArgs; : : if (!agg_within_group) 0.00 : 539587: 80 bd 9d fa ff ff 00 cmpb $0x0,-0x563(%rbp) 0.00 : 53958e: 0f 84 79 05 00 00 je 539b0d : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("WITHIN GROUP is required for ordered-set aggregate %s", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (over) 0.00 : 539594: 48 83 bd b0 fa ff ff cmpq $0x0,-0x550(%rbp) 0.00 : 53959b: 00 0.00 : 53959c: 0f 85 18 07 00 00 jne 539cba : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5395a2: 45 31 ed xor %r13d,%r13d 0.00 : 5395a5: 48 83 bd 88 fa ff ff cmpq $0x0,-0x578(%rbp) 0.00 : 5395ac: 00 0.00 : 5395ad: 74 0b je 5395ba 0.00 : 5395af: 48 8b 8d 88 fa ff ff mov -0x578(%rbp),%rcx 0.00 : 5395b6: 44 8b 69 04 mov 0x4(%rcx),%r13d : */ : numAggregatedArgs = list_length(agg_order); : numDirectArgs = nargs - numAggregatedArgs; : Assert(numDirectArgs >= 0); : : if (!OidIsValid(vatype)) 0.00 : 5395ba: 8b 75 bc mov -0x44(%rbp),%esi : tup = SearchSysCache1(AGGFNOID, ObjectIdGetDatum(funcid)); : if (!HeapTupleIsValid(tup)) /* should not happen */ : elog(ERROR, "cache lookup failed for aggregate %u", funcid); : classForm = (Form_pg_aggregate) GETSTRUCT(tup); : aggkind = classForm->aggkind; : catDirectArgs = classForm->aggnumdirectargs; 0.00 : 5395bd: 44 0f bf f3 movswl %bx,%r14d : * arguments is actually OK; if not, throw an "undefined function" : * error, similarly to the case where a misplaced ORDER BY is used : * in a regular aggregate call. : */ : numAggregatedArgs = list_length(agg_order); : numDirectArgs = nargs - numAggregatedArgs; 0.00 : 5395c1: 44 89 fb mov %r15d,%ebx 0.00 : 5395c4: 44 29 eb sub %r13d,%ebx : Assert(numDirectArgs >= 0); : : if (!OidIsValid(vatype)) 0.00 : 5395c7: 85 f6 test %esi,%esi 0.00 : 5395c9: 0f 85 63 03 00 00 jne 539932 : { : /* Test is simple if aggregate isn't variadic */ : if (numDirectArgs != catDirectArgs) 0.00 : 5395cf: 44 39 f3 cmp %r14d,%ebx 0.00 : 5395d2: 0f 85 42 07 00 00 jne 539d1a : } : } : } : : /* Check type matching of hypothetical arguments */ : if (aggkind == AGGKIND_HYPOTHETICAL) 0.00 : 5395d8: 80 bd c7 fa ff ff 68 cmpb $0x68,-0x539(%rbp) 0.00 : 5395df: 0f 85 67 f6 ff ff jne 538c4c 0.00 : 5395e5: 31 c0 xor %eax,%eax 0.00 : 5395e7: 48 83 bd 50 fa ff ff cmpq $0x0,-0x5b0(%rbp) 0.00 : 5395ee: 00 : unify_hypothetical_args(pstate, fargs, numAggregatedArgs, 0.00 : 5395ef: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 5395f3: 48 89 9d 78 fa ff ff mov %rbx,-0x588(%rbp) 0.00 : 5395fa: 74 0a je 539606 0.00 : 5395fc: 48 8b 95 50 fa ff ff mov -0x5b0(%rbp),%rdx 0.00 : 539603: 8b 42 04 mov 0x4(%rdx),%eax : int numDirectArgs, : numNonHypotheticalArgs; : int i; : ListCell *lc; : : numDirectArgs = list_length(fargs) - numAggregatedArgs; 0.00 : 539606: 44 29 e8 sub %r13d,%eax 0.00 : 539609: 89 85 dc fa ff ff mov %eax,-0x524(%rbp) : numNonHypotheticalArgs = numDirectArgs - numAggregatedArgs; : /* safety check (should only trigger with a misdeclared agg) */ : if (numNonHypotheticalArgs < 0) 0.00 : 53960f: 44 29 e8 sub %r13d,%eax 0.00 : 539612: 89 85 cc fa ff ff mov %eax,-0x534(%rbp) 0.00 : 539618: 0f 88 d3 0b 00 00 js 53a1f1 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 53961e: 48 83 bd 50 fa ff ff cmpq $0x0,-0x5b0(%rbp) 0.00 : 539625: 00 0.00 : 539626: 74 2a je 539652 0.00 : 539628: 48 8b 9d 50 fa ff ff mov -0x5b0(%rbp),%rbx 0.00 : 53962f: 48 8b 4b 08 mov 0x8(%rbx),%rcx : elog(ERROR, "incorrect number of arguments to hypothetical-set aggregate"); : : /* Deconstruct fargs into an array for ease of subscripting */ : i = 0; : foreach(lc, fargs) 0.00 : 539633: 48 85 c9 test %rcx,%rcx 0.00 : 539636: 74 1a je 539652 0.00 : 539638: 48 8d 95 f0 fa ff ff lea -0x510(%rbp),%rdx : { : args[i++] = (Node *) lfirst(lc); 0.00 : 53963f: 48 8b 01 mov (%rcx),%rax 0.00 : 539642: 48 89 02 mov %rax,(%rdx) : if (numNonHypotheticalArgs < 0) : elog(ERROR, "incorrect number of arguments to hypothetical-set aggregate"); : : /* Deconstruct fargs into an array for ease of subscripting */ : i = 0; : foreach(lc, fargs) 0.00 : 539645: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 539649: 48 83 c2 08 add $0x8,%rdx 0.00 : 53964d: 48 85 c9 test %rcx,%rcx 0.00 : 539650: 75 ed jne 53963f : { : args[i++] = (Node *) lfirst(lc); : } : : /* Check each hypothetical arg and corresponding aggregated arg */ : for (i = numNonHypotheticalArgs; i < numDirectArgs; i++) 0.00 : 539652: 8b 85 cc fa ff ff mov -0x534(%rbp),%eax 0.00 : 539658: 39 85 dc fa ff ff cmp %eax,-0x524(%rbp) 0.00 : 53965e: 0f 8e 68 04 00 00 jle 539acc : { : int aargpos = numDirectArgs + (i - numNonHypotheticalArgs); : Oid commontype; : : /* A mismatch means AggregateCreate didn't check properly ... */ : if (declared_arg_types[i] != declared_arg_types[aargpos]) 0.00 : 539664: 48 63 d0 movslq %eax,%rdx 0.00 : 539667: 48 63 85 dc fa ff ff movslq -0x524(%rbp),%rax 0.00 : 53966e: 48 8b 9d 78 fa ff ff mov -0x588(%rbp),%rbx 0.00 : 539675: 49 89 d5 mov %rdx,%r13 0.00 : 539678: 48 89 95 40 fa ff ff mov %rdx,-0x5c0(%rbp) 0.00 : 53967f: 49 c1 e5 02 shl $0x2,%r13 0.00 : 539683: 8b 14 93 mov (%rbx,%rdx,4),%edx 0.00 : 539686: 48 8d 0c 85 00 00 00 lea 0x0(,%rax,4),%rcx 0.00 : 53968d: 00 0.00 : 53968e: 48 89 8d d0 fa ff ff mov %rcx,-0x530(%rbp) 0.00 : 539695: 3b 14 83 cmp (%rbx,%rax,4),%edx 0.00 : 539698: 0f 85 04 04 00 00 jne 539aa2 : elog(ERROR, "hypothetical-set aggregate has inconsistent declared argument types"); 0.00 : 53969e: 8b 9d dc fa ff ff mov -0x524(%rbp),%ebx 0.00 : 5396a4: 83 c3 01 add $0x1,%ebx 0.00 : 5396a7: 89 9d d8 fa ff ff mov %ebx,-0x528(%rbp) 0.00 : 5396ad: 8b 9d dc fa ff ff mov -0x524(%rbp),%ebx 0.00 : 5396b3: eb 67 jmp 53971c : { : args[i++] = (Node *) lfirst(lc); : } : : /* Check each hypothetical arg and corresponding aggregated arg */ : for (i = numNonHypotheticalArgs; i < numDirectArgs; i++) 0.00 : 5396b5: 83 85 cc fa ff ff 01 addl $0x1,-0x534(%rbp) 0.00 : 5396bc: 8b 9d cc fa ff ff mov -0x534(%rbp),%ebx 0.00 : 5396c2: 39 9d dc fa ff ff cmp %ebx,-0x524(%rbp) 0.00 : 5396c8: 0f 8e fe 03 00 00 jle 539acc : { : int aargpos = numDirectArgs + (i - numNonHypotheticalArgs); : Oid commontype; : : /* A mismatch means AggregateCreate didn't check properly ... */ : if (declared_arg_types[i] != declared_arg_types[aargpos]) 0.00 : 5396ce: 48 63 85 cc fa ff ff movslq -0x534(%rbp),%rax 0.00 : 5396d5: 8b 9d d8 fa ff ff mov -0x528(%rbp),%ebx 0.00 : 5396db: 48 8b 8d 78 fa ff ff mov -0x588(%rbp),%rcx 0.00 : 5396e2: 48 89 85 40 fa ff ff mov %rax,-0x5c0(%rbp) 0.00 : 5396e9: 49 89 c5 mov %rax,%r13 0.00 : 5396ec: 8b 14 81 mov (%rcx,%rax,4),%edx 0.00 : 5396ef: 48 63 c3 movslq %ebx,%rax 0.00 : 5396f2: 83 85 d8 fa ff ff 01 addl $0x1,-0x528(%rbp) 0.00 : 5396f9: 49 c1 e5 02 shl $0x2,%r13 0.00 : 5396fd: 48 8d 0c 85 00 00 00 lea 0x0(,%rax,4),%rcx 0.00 : 539704: 00 0.00 : 539705: 48 89 8d d0 fa ff ff mov %rcx,-0x530(%rbp) 0.00 : 53970c: 48 8b 8d 78 fa ff ff mov -0x588(%rbp),%rcx 0.00 : 539713: 3b 14 81 cmp (%rcx,%rax,4),%edx 0.00 : 539716: 0f 85 86 03 00 00 jne 539aa2 : elog(ERROR, "hypothetical-set aggregate has inconsistent declared argument types"); : : /* No need to unify if make_fn_arguments will coerce */ : if (declared_arg_types[i] != ANYOID) 0.00 : 53971c: 81 fa e4 08 00 00 cmp $0x8e4,%edx 0.00 : 539722: 75 91 jne 5396b5 : /* : * Select common type, giving preference to the aggregated argument's : * type (we'd rather coerce the direct argument once than coerce all : * the aggregated values). : */ : commontype = select_common_type(pstate, 0.00 : 539724: 48 8b 85 40 fa ff ff mov -0x5c0(%rbp),%rax 0.00 : 53972b: 48 63 db movslq %ebx,%rbx 0.00 : 53972e: 31 f6 xor %esi,%esi 0.00 : 539730: 4c 8b b4 c5 f0 fa ff mov -0x510(%rbp,%rax,8),%r14 0.00 : 539737: ff 0.00 : 539738: 4c 89 f7 mov %r14,%rdi 0.00 : 53973b: e8 10 81 0a 00 callq 5e1850 0.00 : 539740: 48 8b bc dd f0 fa ff mov -0x510(%rbp,%rbx,8),%rdi 0.00 : 539747: ff 0.00 : 539748: 48 89 c6 mov %rax,%rsi 0.00 : 53974b: e8 00 81 0a 00 callq 5e1850 0.00 : 539750: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539757: 48 89 c6 mov %rax,%rsi 0.00 : 53975a: 31 c9 xor %ecx,%ecx 0.00 : 53975c: ba 25 3d 87 00 mov $0x873d25,%edx 0.00 : 539761: e8 6a 71 ff ff callq 5308d0 : : /* : * Perform the coercions. We don't need to worry about NamedArgExprs : * here because they aren't supported with aggregates. : */ : args[i] = coerce_type(pstate, 0.00 : 539766: 48 8d 95 10 fe ff ff lea -0x1f0(%rbp),%rdx 0.00 : 53976d: c7 44 24 08 ff ff ff movl $0xffffffff,0x8(%rsp) 0.00 : 539774: ff 0.00 : 539775: c7 04 24 02 00 00 00 movl $0x2,(%rsp) 0.00 : 53977c: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539783: 45 31 c9 xor %r9d,%r9d 0.00 : 539786: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 53978c: 4e 8d 2c 2a lea (%rdx,%r13,1),%r13 0.00 : 539790: 89 c1 mov %eax,%ecx 0.00 : 539792: 4c 89 f6 mov %r14,%rsi : /* : * Select common type, giving preference to the aggregated argument's : * type (we'd rather coerce the direct argument once than coerce all : * the aggregated values). : */ : commontype = select_common_type(pstate, 0.00 : 539795: 41 89 c4 mov %eax,%r12d : : /* : * Perform the coercions. We don't need to worry about NamedArgExprs : * here because they aren't supported with aggregates. : */ : args[i] = coerce_type(pstate, 0.00 : 539798: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 53979c: e8 4f 73 ff ff callq 530af0 0.00 : 5397a1: 48 8b 8d 40 fa ff ff mov -0x5c0(%rbp),%rcx : commontype, -1, : COERCION_IMPLICIT, : COERCE_IMPLICIT_CAST, : -1); : actual_arg_types[i] = commontype; : args[aargpos] = coerce_type(pstate, 0.00 : 5397a8: 45 31 c9 xor %r9d,%r9d 0.00 : 5397ab: 41 b8 ff ff ff ff mov $0xffffffff,%r8d : : /* : * Perform the coercions. We don't need to worry about NamedArgExprs : * here because they aren't supported with aggregates. : */ : args[i] = coerce_type(pstate, 0.00 : 5397b1: 48 89 84 cd f0 fa ff mov %rax,-0x510(%rbp,%rcx,8) 0.00 : 5397b8: ff : actual_arg_types[i], : commontype, -1, : COERCION_IMPLICIT, : COERCE_IMPLICIT_CAST, : -1); : actual_arg_types[i] = commontype; 0.00 : 5397b9: 45 89 65 00 mov %r12d,0x0(%r13) : args[aargpos] = coerce_type(pstate, 0.00 : 5397bd: 4c 8d ad 10 fe ff ff lea -0x1f0(%rbp),%r13 0.00 : 5397c4: 4c 03 ad d0 fa ff ff add -0x530(%rbp),%r13 0.00 : 5397cb: c7 44 24 08 ff ff ff movl $0xffffffff,0x8(%rsp) 0.00 : 5397d2: ff 0.00 : 5397d3: 44 89 e1 mov %r12d,%ecx 0.00 : 5397d6: c7 04 24 02 00 00 00 movl $0x2,(%rsp) 0.00 : 5397dd: 48 8b b4 dd f0 fa ff mov -0x510(%rbp,%rbx,8),%rsi 0.00 : 5397e4: ff 0.00 : 5397e5: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 5397ec: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 5397f0: e8 fb 72 ff ff callq 530af0 0.00 : 5397f5: 48 89 84 dd f0 fa ff mov %rax,-0x510(%rbp,%rbx,8) 0.00 : 5397fc: ff : actual_arg_types[aargpos], : commontype, -1, : COERCION_IMPLICIT, : COERCE_IMPLICIT_CAST, : -1); : actual_arg_types[aargpos] = commontype; 0.00 : 5397fd: 45 89 65 00 mov %r12d,0x0(%r13) 0.00 : 539801: e9 af fe ff ff jmpq 5396b5 : * However, we do NOT put them into the generated parse node, because : * their actual values might change before the query gets run. The : * planner has to insert the up-to-date values at plan time. : */ : nargsplusdefs = nargs; : foreach(l, argdefaults) 0.00 : 539806: 8b 9d ec fa ff ff mov -0x514(%rbp),%ebx 0.00 : 53980c: e9 9b f4 ff ff jmpq 538cac : * Oops. Time to die. : * : * If we are dealing with the attribute notation rel.function, let the : * caller handle failure. : */ : if (is_column) 0.00 : 539811: 31 d2 xor %edx,%edx 0.00 : 539813: 80 bd 87 fa ff ff 00 cmpb $0x0,-0x579(%rbp) 0.00 : 53981a: 0f 85 09 f8 ff ff jne 539029 : return NULL; : : /* : * Else generate a detailed complaint for a function : */ : if (fdresult == FUNCDETAIL_MULTIPLE) 0.00 : 539820: 83 bd 74 fa ff ff 01 cmpl $0x1,-0x58c(%rbp) 0.00 : 539827: 0f 84 9e 07 00 00 je 539fcb : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 53982d: 48 83 bd 88 fa ff ff cmpq $0x0,-0x578(%rbp) 0.00 : 539834: 00 0.00 : 539835: 74 1a je 539851 : func_signature_string(funcname, nargs, argnames, : actual_arg_types)), : errhint("Could not choose a best candidate function. " : "You might need to add explicit type casts."), : parser_errposition(pstate, location))); : else if (list_length(agg_order) > 1 && !agg_within_group) 0.00 : 539837: 48 8b 95 88 fa ff ff mov -0x578(%rbp),%rdx 0.00 : 53983e: 83 7a 04 01 cmpl $0x1,0x4(%rdx) 0.00 : 539842: 7e 0d jle 539851 0.00 : 539844: 80 bd 9d fa ff ff 00 cmpb $0x0,-0x563(%rbp) 0.00 : 53984b: 0f 84 5d 09 00 00 je 53a1ae : "Perhaps you misplaced ORDER BY; ORDER BY must appear " : "after all regular arguments of the aggregate."), : parser_errposition(pstate, location))); : } : else : ereport(ERROR, 0.00 : 539851: 45 31 c0 xor %r8d,%r8d 0.00 : 539854: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539859: ba 04 02 00 00 mov $0x204,%edx 0.00 : 53985e: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539863: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539868: e8 53 12 24 00 callq 77aac0 0.00 : 53986d: 84 c0 test %al,%al 0.00 : 53986f: 0f 84 73 f6 ff ff je 538ee8 0.00 : 539875: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53987c: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539882: e8 e9 0d 00 00 callq 53a670 0.00 : 539887: bf f8 43 87 00 mov $0x8743f8,%edi 0.00 : 53988c: 41 89 c4 mov %eax,%r12d 0.00 : 53988f: 31 c0 xor %eax,%eax 0.00 : 539891: e8 0a 24 24 00 callq 77bca0 0.00 : 539896: 48 8b 95 b8 fa ff ff mov -0x548(%rbp),%rdx 0.00 : 53989d: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 5398a4: 48 8d 8d 10 fe ff ff lea -0x1f0(%rbp),%rcx 0.00 : 5398ab: 44 89 fe mov %r15d,%esi 0.00 : 5398ae: 41 89 c5 mov %eax,%r13d 0.00 : 5398b1: e8 9a de ff ff callq 537750 0.00 : 5398b6: bf c7 69 7c 00 mov $0x7c69c7,%edi 0.00 : 5398bb: 48 89 c6 mov %rax,%rsi 0.00 : 5398be: 31 c0 xor %eax,%eax 0.00 : 5398c0: e8 db 2f 24 00 callq 77c8a0 0.00 : 5398c5: bf 84 80 20 03 mov $0x3208084,%edi 0.00 : 5398ca: 89 c3 mov %eax,%ebx 0.00 : 5398cc: e8 7f 34 24 00 callq 77cd50 0.00 : 5398d1: 44 89 e1 mov %r12d,%ecx 0.00 : 5398d4: 89 c7 mov %eax,%edi 0.00 : 5398d6: 44 89 ea mov %r13d,%edx 0.00 : 5398d9: 89 de mov %ebx,%esi 0.00 : 5398db: 31 c0 xor %eax,%eax 0.00 : 5398dd: e8 fe 0c 24 00 callq 77a5e0 0.00 : 5398e2: e9 01 f6 ff ff jmpq 538ee8 0.00 : 5398e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5398ee: 00 00 : : /* : * Reject attempt to call a parameterless aggregate without (*) : * syntax. This is mere pedantry but some folks insisted ... : */ : if (fargs == NIL && !agg_star && !agg_within_group) 0.00 : 5398f0: 80 bd 9e fa ff ff 00 cmpb $0x0,-0x562(%rbp) 0.00 : 5398f7: 0f 85 af fa ff ff jne 5393ac 0.00 : 5398fd: 80 bd 9d fa ff ff 00 cmpb $0x0,-0x563(%rbp) 0.00 : 539904: 0f 85 a2 fa ff ff jne 5393ac : ereport(ERROR, 0.00 : 53990a: 45 31 c0 xor %r8d,%r8d 0.00 : 53990d: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539912: ba 97 02 00 00 mov $0x297,%edx 0.00 : 539917: e9 5a f5 ff ff jmpq 538e76 0.00 : 53991c: 0f 1f 40 00 nopl 0x0(%rax) : * more than FUNC_MAX_ARGS parameters. We have to test here to protect : * against array overruns, etc. Of course, this may not be a function, : * but the test doesn't hurt. : */ : if (list_length(fargs) > FUNC_MAX_ARGS) : ereport(ERROR, 0.00 : 539920: 45 31 c0 xor %r8d,%r8d 0.00 : 539923: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539928: ba 76 00 00 00 mov $0x76,%edx 0.00 : 53992d: e9 63 fb ff ff jmpq 539495 : * pronargs from the info we got from func_get_detail. : */ : int pronargs; : : pronargs = nargs; : if (nvargs > 1) 0.00 : 539932: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 539935: 8b 85 ec fa ff ff mov -0x514(%rbp),%eax 0.00 : 53993b: 83 fa 01 cmp $0x1,%edx 0.00 : 53993e: 7e 08 jle 539948 : pronargs -= nvargs - 1; 0.00 : 539940: 44 89 f8 mov %r15d,%eax 0.00 : 539943: 29 d0 sub %edx,%eax 0.00 : 539945: 83 c0 01 add $0x1,%eax : if (catDirectArgs < pronargs) 0.00 : 539948: 44 39 f0 cmp %r14d,%eax 0.00 : 53994b: 0f 8e df 00 00 00 jle 539a30 : { : /* VARIADIC isn't part of direct args, so still easy */ : if (numDirectArgs != catDirectArgs) 0.00 : 539951: 44 39 f3 cmp %r14d,%ebx 0.00 : 539954: 0f 84 7e fc ff ff je 5395d8 : ereport(ERROR, 0.00 : 53995a: 45 31 c0 xor %r8d,%r8d 0.00 : 53995d: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539962: ba 89 01 00 00 mov $0x189,%edx 0.00 : 539967: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53996c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539971: e8 4a 11 24 00 callq 77aac0 0.00 : 539976: 84 c0 test %al,%al 0.00 : 539978: 0f 84 6a f5 ff ff je 538ee8 0.00 : 53997e: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539984: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53998b: e8 e0 0c 00 00 callq 53a670 0.00 : 539990: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539997: 41 89 c4 mov %eax,%r12d 0.00 : 53999a: e8 81 51 fb ff callq 4eeb20 0.00 : 53999f: 89 d9 mov %ebx,%ecx 0.00 : 5399a1: 48 89 c6 mov %rax,%rsi 0.00 : 5399a4: 44 89 f2 mov %r14d,%edx 0.00 : 5399a7: bf 80 40 87 00 mov $0x874080,%edi 0.00 : 5399ac: 31 c0 xor %eax,%eax 0.00 : 5399ae: e8 ed 22 24 00 callq 77bca0 0.00 : 5399b3: e9 de fe ff ff jmpq 539896 0.00 : 5399b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5399bf: 00 : actual_arg_types, declared_arg_types); : } : else : { : /* Normal aggregate, so it can't have WITHIN GROUP */ : if (agg_within_group) 0.00 : 5399c0: 80 bd 9d fa ff ff 00 cmpb $0x0,-0x563(%rbp) 0.00 : 5399c7: 0f 84 7f f2 ff ff je 538c4c : ereport(ERROR, 0.00 : 5399cd: 45 31 c0 xor %r8d,%r8d 0.00 : 5399d0: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 5399d5: ba c2 01 00 00 mov $0x1c2,%edx 0.00 : 5399da: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 5399df: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5399e4: e8 d7 10 24 00 callq 77aac0 0.00 : 5399e9: 84 c0 test %al,%al 0.00 : 5399eb: 0f 84 f7 f4 ff ff je 538ee8 0.00 : 5399f1: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 5399f7: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 5399fe: e8 6d 0c 00 00 callq 53a670 0.00 : 539a03: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539a0a: 41 89 c4 mov %eax,%r12d 0.00 : 539a0d: e8 0e 51 fb ff callq 4eeb20 0.00 : 539a12: bf 50 42 87 00 mov $0x874250,%edi 0.00 : 539a17: 48 89 c6 mov %rax,%rsi 0.00 : 539a1a: 31 c0 xor %eax,%eax 0.00 : 539a1c: e8 7f 2e 24 00 callq 77c8a0 0.00 : 539a21: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539a26: 89 c3 mov %eax,%ebx 0.00 : 539a28: e9 f3 f4 ff ff jmpq 538f20 0.00 : 539a2d: 0f 1f 00 nopl (%rax) : * hypothetical-set aggregate, we assume that the : * hypothetical arguments are those that matched the : * variadic parameter; there must be just as many of them : * as there are aggregated arguments. : */ : if (aggkind == AGGKIND_HYPOTHETICAL) 0.00 : 539a30: 80 bd c7 fa ff ff 68 cmpb $0x68,-0x539(%rbp) 0.00 : 539a37: 0f 84 de 07 00 00 je 53a21b : nvargs - numAggregatedArgs, numAggregatedArgs), : parser_errposition(pstate, location))); : } : else : { : if (nvargs <= numAggregatedArgs) 0.00 : 539a3d: 44 39 ea cmp %r13d,%edx 0.00 : 539a40: 0f 8f 06 f2 ff ff jg 538c4c : ereport(ERROR, 0.00 : 539a46: 45 31 c0 xor %r8d,%r8d 0.00 : 539a49: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539a4e: ba b0 01 00 00 mov $0x1b0,%edx 0.00 : 539a53: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539a58: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539a5d: e8 5e 10 24 00 callq 77aac0 0.00 : 539a62: 84 c0 test %al,%al 0.00 : 539a64: 0f 84 7e f4 ff ff je 538ee8 0.00 : 539a6a: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539a70: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539a77: e8 f4 0b 00 00 callq 53a670 0.00 : 539a7c: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539a83: 41 89 c4 mov %eax,%r12d 0.00 : 539a86: e8 95 50 fb ff callq 4eeb20 0.00 : 539a8b: 44 89 f2 mov %r14d,%edx 0.00 : 539a8e: 48 89 c6 mov %rax,%rsi 0.00 : 539a91: bf 70 41 87 00 mov $0x874170,%edi 0.00 : 539a96: 31 c0 xor %eax,%eax 0.00 : 539a98: e8 03 22 24 00 callq 77bca0 0.00 : 539a9d: e9 f4 fd ff ff jmpq 539896 : int aargpos = numDirectArgs + (i - numNonHypotheticalArgs); : Oid commontype; : : /* A mismatch means AggregateCreate didn't check properly ... */ : if (declared_arg_types[i] != declared_arg_types[aargpos]) : elog(ERROR, "hypothetical-set aggregate has inconsistent declared argument types"); 0.00 : 539aa2: ba 70 46 87 00 mov $0x874670,%edx 0.00 : 539aa7: be 4e 06 00 00 mov $0x64e,%esi 0.00 : 539aac: bf df 3c 87 00 mov $0x873cdf,%edi 0.00 : 539ab1: e8 6a 19 24 00 callq 77b420 0.00 : 539ab6: be 08 42 87 00 mov $0x874208,%esi 0.00 : 539abb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539ac0: 31 c0 xor %eax,%eax 0.00 : 539ac2: e8 69 17 24 00 callq 77b230 0.00 : 539ac7: e8 04 fa f2 ff callq 4694d0 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 539acc: 48 83 bd 50 fa ff ff cmpq $0x0,-0x5b0(%rbp) 0.00 : 539ad3: 00 0.00 : 539ad4: 0f 84 72 f1 ff ff je 538c4c 0.00 : 539ada: 48 8b 85 50 fa ff ff mov -0x5b0(%rbp),%rax 0.00 : 539ae1: 48 8b 50 08 mov 0x8(%rax),%rdx : actual_arg_types[aargpos] = commontype; : } : : /* Reconstruct fargs from array */ : i = 0; : foreach(lc, fargs) 0.00 : 539ae5: 48 85 d2 test %rdx,%rdx 0.00 : 539ae8: 0f 84 5e f1 ff ff je 538c4c 0.00 : 539aee: 48 8d 8d f0 fa ff ff lea -0x510(%rbp),%rcx : { : lfirst(lc) = args[i++]; 0.00 : 539af5: 48 8b 01 mov (%rcx),%rax : actual_arg_types[aargpos] = commontype; : } : : /* Reconstruct fargs from array */ : i = 0; : foreach(lc, fargs) 0.00 : 539af8: 48 83 c1 08 add $0x8,%rcx : { : lfirst(lc) = args[i++]; 0.00 : 539afc: 48 89 02 mov %rax,(%rdx) : actual_arg_types[aargpos] = commontype; : } : : /* Reconstruct fargs from array */ : i = 0; : foreach(lc, fargs) 0.00 : 539aff: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 539b03: 48 85 d2 test %rdx,%rdx 0.00 : 539b06: 75 ed jne 539af5 0.00 : 539b08: e9 3f f1 ff ff jmpq 538c4c : { : int numAggregatedArgs; : int numDirectArgs; : : if (!agg_within_group) : ereport(ERROR, 0.00 : 539b0d: 45 31 c0 xor %r8d,%r8d 0.00 : 539b10: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539b15: ba 46 01 00 00 mov $0x146,%edx 0.00 : 539b1a: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539b1f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539b24: e8 97 0f 24 00 callq 77aac0 0.00 : 539b29: 84 c0 test %al,%al 0.00 : 539b2b: 0f 84 b7 f3 ff ff je 538ee8 0.00 : 539b31: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539b37: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539b3e: e8 2d 0b 00 00 callq 53a670 0.00 : 539b43: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539b4a: 41 89 c4 mov %eax,%r12d 0.00 : 539b4d: e8 ce 4f fb ff callq 4eeb20 0.00 : 539b52: bf 10 40 87 00 mov $0x874010,%edi 0.00 : 539b57: 48 89 c6 mov %rax,%rsi 0.00 : 539b5a: 31 c0 xor %eax,%eax 0.00 : 539b5c: e8 3f 2d 24 00 callq 77c8a0 0.00 : 539b61: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539b66: 89 c3 mov %eax,%ebx 0.00 : 539b68: e9 b3 f3 ff ff jmpq 538f20 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("FILTER is not implemented for non-aggregate window functions"), : parser_errposition(pstate, location))); : : if (retset) : ereport(ERROR, 0.00 : 539b6d: 45 31 c0 xor %r8d,%r8d 0.00 : 539b70: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539b75: ba ef 02 00 00 mov $0x2ef,%edx 0.00 : 539b7a: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539b7f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539b84: e8 37 0f 24 00 callq 77aac0 0.00 : 539b89: 84 c0 test %al,%al 0.00 : 539b8b: 0f 84 57 f3 ff ff je 538ee8 0.00 : 539b91: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539b97: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539b9e: e8 cd 0a 00 00 callq 53a670 0.00 : 539ba3: bf a8 45 87 00 mov $0x8745a8,%edi 0.00 : 539ba8: 41 89 c4 mov %eax,%r12d 0.00 : 539bab: 31 c0 xor %eax,%eax 0.00 : 539bad: e8 ee 2c 24 00 callq 77c8a0 0.00 : 539bb2: bf 84 00 06 03 mov $0x3060084,%edi 0.00 : 539bb7: 89 c3 mov %eax,%ebx 0.00 : 539bb9: e9 62 f3 ff ff jmpq 538f20 : /* : * Normal function found; was there anything indicating it must be an : * aggregate? : */ : if (agg_star) : ereport(ERROR, 0.00 : 539bbe: 45 31 c0 xor %r8d,%r8d 0.00 : 539bc1: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539bc6: ba 0a 01 00 00 mov $0x10a,%edx 0.00 : 539bcb: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539bd0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539bd5: e8 e6 0e 24 00 callq 77aac0 0.00 : 539bda: 84 c0 test %al,%al 0.00 : 539bdc: 0f 84 06 f3 ff ff je 538ee8 0.00 : 539be2: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539be8: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539bef: e8 7c 0a 00 00 callq 53a670 0.00 : 539bf4: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539bfb: 41 89 c4 mov %eax,%r12d 0.00 : 539bfe: e8 1d 4f fb ff callq 4eeb20 0.00 : 539c03: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539c0a: 48 89 c3 mov %rax,%rbx 0.00 : 539c0d: e8 0e 4f fb ff callq 4eeb20 0.00 : 539c12: 48 89 da mov %rbx,%rdx 0.00 : 539c15: 48 89 c6 mov %rax,%rsi 0.00 : 539c18: bf 78 3e 87 00 mov $0x873e78,%edi 0.00 : 539c1d: 31 c0 xor %eax,%eax 0.00 : 539c1f: e8 7c 2c 24 00 callq 77c8a0 0.00 : 539c24: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539c29: 89 c3 mov %eax,%ebx 0.00 : 539c2b: e9 f0 f2 ff ff jmpq 538f20 : Form_pg_aggregate classForm; : int catDirectArgs; : : tup = SearchSysCache1(AGGFNOID, ObjectIdGetDatum(funcid)); : if (!HeapTupleIsValid(tup)) /* should not happen */ : elog(ERROR, "cache lookup failed for aggregate %u", funcid); 0.00 : 539c30: ba 50 46 87 00 mov $0x874650,%edx 0.00 : 539c35: be 35 01 00 00 mov $0x135,%esi 0.00 : 539c3a: bf df 3c 87 00 mov $0x873cdf,%edi 0.00 : 539c3f: e8 dc 17 24 00 callq 77b420 0.00 : 539c44: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 539c47: be e8 3f 87 00 mov $0x873fe8,%esi 0.00 : 539c4c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539c51: 31 c0 xor %eax,%eax 0.00 : 539c53: e8 d8 15 24 00 callq 77b230 0.00 : 539c58: e8 73 f8 f2 ff callq 4694d0 : * the named parameters after all the unnamed ones. So the name list : * corresponds to the last N actual parameters and we don't need any extra : * bookkeeping to match things up. : */ : argnames = NIL; : foreach(l, fargs) 0.00 : 539c5d: 48 89 85 b8 fa ff ff mov %rax,-0x548(%rbp) 0.00 : 539c64: e9 05 ef ff ff jmpq 538b6e : : /* : * agg_star is allowed for aggregate functions but distinct isn't : */ : if (agg_distinct) : ereport(ERROR, 0.00 : 539c69: 45 31 c0 xor %r8d,%r8d 0.00 : 539c6c: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539c71: ba cc 02 00 00 mov $0x2cc,%edx 0.00 : 539c76: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539c7b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539c80: e8 3b 0e 24 00 callq 77aac0 0.00 : 539c85: 84 c0 test %al,%al 0.00 : 539c87: 0f 84 5b f2 ff ff je 538ee8 0.00 : 539c8d: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539c93: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539c9a: e8 d1 09 00 00 callq 53a670 0.00 : 539c9f: bf f0 44 87 00 mov $0x8744f0,%edi 0.00 : 539ca4: 41 89 c4 mov %eax,%r12d 0.00 : 539ca7: 31 c0 xor %eax,%eax 0.00 : 539ca9: e8 f2 2b 24 00 callq 77c8a0 0.00 : 539cae: bf 40 04 00 00 mov $0x440,%edi 0.00 : 539cb3: 89 c3 mov %eax,%ebx 0.00 : 539cb5: e9 66 f2 ff ff jmpq 538f20 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("WITHIN GROUP is required for ordered-set aggregate %s", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (over) : ereport(ERROR, 0.00 : 539cba: 45 31 c0 xor %r8d,%r8d 0.00 : 539cbd: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539cc2: ba 4c 01 00 00 mov $0x14c,%edx 0.00 : 539cc7: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539ccc: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539cd1: e8 ea 0d 24 00 callq 77aac0 0.00 : 539cd6: 84 c0 test %al,%al 0.00 : 539cd8: 0f 84 0a f2 ff ff je 538ee8 0.00 : 539cde: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539ce4: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539ceb: e8 80 09 00 00 callq 53a670 0.00 : 539cf0: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539cf7: 41 89 c4 mov %eax,%r12d 0.00 : 539cfa: e8 21 4e fb ff callq 4eeb20 0.00 : 539cff: bf 48 40 87 00 mov $0x874048,%edi 0.00 : 539d04: 48 89 c6 mov %rax,%rsi 0.00 : 539d07: 31 c0 xor %eax,%eax 0.00 : 539d09: e8 92 2b 24 00 callq 77c8a0 0.00 : 539d0e: bf 40 04 00 00 mov $0x440,%edi 0.00 : 539d13: 89 c3 mov %eax,%ebx 0.00 : 539d15: e9 06 f2 ff ff jmpq 538f20 : : if (!OidIsValid(vatype)) : { : /* Test is simple if aggregate isn't variadic */ : if (numDirectArgs != catDirectArgs) : ereport(ERROR, 0.00 : 539d1a: 45 31 c0 xor %r8d,%r8d 0.00 : 539d1d: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539d22: ba 6c 01 00 00 mov $0x16c,%edx 0.00 : 539d27: e9 3b fc ff ff jmpq 539967 : errmsg("window function %s requires an OVER clause", : NameListToString(funcname)), : parser_errposition(pstate, location))); : /* And, per spec, WITHIN GROUP isn't allowed */ : if (agg_within_group) : ereport(ERROR, 0.00 : 539d2c: 45 31 c0 xor %r8d,%r8d 0.00 : 539d2f: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539d34: ba d6 01 00 00 mov $0x1d6,%edx 0.00 : 539d39: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539d3e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539d43: e8 78 0d 24 00 callq 77aac0 0.00 : 539d48: 84 c0 test %al,%al 0.00 : 539d4a: 0f 84 98 f1 ff ff je 538ee8 0.00 : 539d50: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539d56: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539d5d: e8 0e 09 00 00 callq 53a670 0.00 : 539d62: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539d69: 41 89 c4 mov %eax,%r12d 0.00 : 539d6c: e8 af 4d fb ff callq 4eeb20 0.00 : 539d71: bf c8 42 87 00 mov $0x8742c8,%edi 0.00 : 539d76: 48 89 c6 mov %rax,%rsi 0.00 : 539d79: 31 c0 xor %eax,%eax 0.00 : 539d7b: e8 20 2b 24 00 callq 77c8a0 0.00 : 539d80: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539d85: 89 c3 mov %eax,%ebx 0.00 : 539d87: e9 94 f1 ff ff jmpq 538f20 : * field. : * : * This case could be handled by expandRecordVariable, but it's more : * efficient to do it this way when possible. : */ : if (IsA(first_arg, Var) && 0.00 : 539d8c: 66 41 83 7c 24 08 00 cmpw $0x0,0x8(%r12) 0.00 : 539d93: 74 2b je 539dc0 : * : * If it's a Var of type RECORD, we have to work even harder: we have to : * find what the Var refers to, and pass that to get_expr_result_type. : * That task is handled by expandRecordVariable(). : */ : if (IsA(first_arg, Var) && 0.00 : 539d95: 41 81 7c 24 0c c9 08 cmpl $0x8c9,0xc(%r12) 0.00 : 539d9c: 00 00 0.00 : 539d9e: 66 90 xchg %ax,%ax 0.00 : 539da0: 0f 85 88 f3 ff ff jne 53912e : ((Var *) first_arg)->vartype == RECORDOID) : tupdesc = expandRecordVariable(pstate, (Var *) first_arg, 0); 0.00 : 539da6: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539dad: 31 d2 xor %edx,%edx 0.00 : 539daf: 4c 89 e6 mov %r12,%rsi 0.00 : 539db2: e8 79 70 00 00 callq 540e30 0.00 : 539db7: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 539dbb: e9 85 f3 ff ff jmpq 539145 : if (IsA(first_arg, Var) && : ((Var *) first_arg)->varattno == InvalidAttrNumber) : { : RangeTblEntry *rte; : : rte = GetRTEByRangeTablePosn(pstate, 0.00 : 539dc0: 41 8b 54 24 18 mov 0x18(%r12),%edx 0.00 : 539dc5: 41 8b 74 24 04 mov 0x4(%r12),%esi 0.00 : 539dca: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539dd1: e8 aa 31 00 00 callq 53cf80 : ((Var *) first_arg)->varno, : ((Var *) first_arg)->varlevelsup); : /* Return a Var if funcname matches a column, else NULL */ : return scanRTEForColumn(pstate, rte, funcname, location); 0.00 : 539dd6: 48 8b 95 68 fa ff ff mov -0x598(%rbp),%rdx 0.00 : 539ddd: 8b 8d 4c fa ff ff mov -0x5b4(%rbp),%ecx : if (IsA(first_arg, Var) && : ((Var *) first_arg)->varattno == InvalidAttrNumber) : { : RangeTblEntry *rte; : : rte = GetRTEByRangeTablePosn(pstate, 0.00 : 539de3: 48 89 c6 mov %rax,%rsi : ((Var *) first_arg)->varno, : ((Var *) first_arg)->varlevelsup); : /* Return a Var if funcname matches a column, else NULL */ : return scanRTEForColumn(pstate, rte, funcname, location); 0.00 : 539de6: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539ded: e8 4e 60 00 00 callq 53fe40 0.00 : 539df2: 48 89 c2 mov %rax,%rdx 0.00 : 539df5: e9 d9 f3 ff ff jmpq 5391d3 : : /* : * ordered aggs not allowed in windows yet : */ : if (agg_order != NIL) : ereport(ERROR, 0.00 : 539dfa: 45 31 c0 xor %r8d,%r8d 0.00 : 539dfd: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539e02: ba e0 02 00 00 mov $0x2e0,%edx 0.00 : 539e07: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539e0c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539e11: e8 aa 0c 24 00 callq 77aac0 0.00 : 539e16: 84 c0 test %al,%al 0.00 : 539e18: 0f 84 ca f0 ff ff je 538ee8 0.00 : 539e1e: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539e24: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539e2b: e8 40 08 00 00 callq 53a670 0.00 : 539e30: bf 28 45 87 00 mov $0x874528,%edi 0.00 : 539e35: 41 89 c4 mov %eax,%r12d 0.00 : 539e38: 31 c0 xor %eax,%eax 0.00 : 539e3a: e8 61 2a 24 00 callq 77c8a0 0.00 : 539e3f: bf 40 04 00 00 mov $0x440,%edi 0.00 : 539e44: 89 c3 mov %eax,%ebx 0.00 : 539e46: e9 d5 f0 ff ff jmpq 538f20 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("ORDER BY specified, but %s is not an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_filter) : ereport(ERROR, 0.00 : 539e4b: 45 31 c0 xor %r8d,%r8d 0.00 : 539e4e: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539e53: ba 22 01 00 00 mov $0x122,%edx 0.00 : 539e58: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539e5d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539e62: e8 59 0c 24 00 callq 77aac0 0.00 : 539e67: 84 c0 test %al,%al 0.00 : 539e69: 0f 84 79 f0 ff ff je 538ee8 0.00 : 539e6f: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539e75: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539e7c: e8 ef 07 00 00 callq 53a670 0.00 : 539e81: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539e88: 41 89 c4 mov %eax,%r12d 0.00 : 539e8b: e8 90 4c fb ff callq 4eeb20 0.00 : 539e90: bf 60 3f 87 00 mov $0x873f60,%edi 0.00 : 539e95: 48 89 c6 mov %rax,%rsi 0.00 : 539e98: 31 c0 xor %eax,%eax 0.00 : 539e9a: e8 01 2a 24 00 callq 77c8a0 0.00 : 539e9f: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539ea4: 89 c3 mov %eax,%ebx 0.00 : 539ea6: e9 75 f0 ff ff jmpq 538f20 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("WITHIN GROUP specified, but %s is not an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_order != NIL) : ereport(ERROR, 0.00 : 539eab: 45 31 c0 xor %r8d,%r8d 0.00 : 539eae: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539eb3: ba 1c 01 00 00 mov $0x11c,%edx 0.00 : 539eb8: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539ebd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539ec2: e8 f9 0b 24 00 callq 77aac0 0.00 : 539ec7: 84 c0 test %al,%al 0.00 : 539ec9: 0f 84 19 f0 ff ff je 538ee8 0.00 : 539ecf: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539ed5: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539edc: e8 8f 07 00 00 callq 53a670 0.00 : 539ee1: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539ee8: 41 89 c4 mov %eax,%r12d 0.00 : 539eeb: e8 30 4c fb ff callq 4eeb20 0.00 : 539ef0: bf 28 3f 87 00 mov $0x873f28,%edi 0.00 : 539ef5: 48 89 c6 mov %rax,%rsi 0.00 : 539ef8: 31 c0 xor %eax,%eax 0.00 : 539efa: e8 a1 29 24 00 callq 77c8a0 0.00 : 539eff: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539f04: 89 c3 mov %eax,%ebx 0.00 : 539f06: e9 15 f0 ff ff jmpq 538f20 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("DISTINCT specified, but %s is not an aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_within_group) : ereport(ERROR, 0.00 : 539f0b: 45 31 c0 xor %r8d,%r8d 0.00 : 539f0e: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539f13: ba 16 01 00 00 mov $0x116,%edx 0.00 : 539f18: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539f1d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539f22: e8 99 0b 24 00 callq 77aac0 0.00 : 539f27: 84 c0 test %al,%al 0.00 : 539f29: 0f 84 b9 ef ff ff je 538ee8 0.00 : 539f2f: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539f35: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539f3c: e8 2f 07 00 00 callq 53a670 0.00 : 539f41: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539f48: 41 89 c4 mov %eax,%r12d 0.00 : 539f4b: e8 d0 4b fb ff callq 4eeb20 0.00 : 539f50: bf e8 3e 87 00 mov $0x873ee8,%edi 0.00 : 539f55: 48 89 c6 mov %rax,%rsi 0.00 : 539f58: 31 c0 xor %eax,%eax 0.00 : 539f5a: e8 41 29 24 00 callq 77c8a0 0.00 : 539f5f: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539f64: 89 c3 mov %eax,%ebx 0.00 : 539f66: e9 b5 ef ff ff jmpq 538f20 : errmsg("%s(*) specified, but %s is not an aggregate function", : NameListToString(funcname), : NameListToString(funcname)), : parser_errposition(pstate, location))); : if (agg_distinct) : ereport(ERROR, 0.00 : 539f6b: 45 31 c0 xor %r8d,%r8d 0.00 : 539f6e: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539f73: ba 10 01 00 00 mov $0x110,%edx 0.00 : 539f78: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539f7d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539f82: e8 39 0b 24 00 callq 77aac0 0.00 : 539f87: 84 c0 test %al,%al 0.00 : 539f89: 0f 84 59 ef ff ff je 538ee8 0.00 : 539f8f: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539f95: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539f9c: e8 cf 06 00 00 callq 53a670 0.00 : 539fa1: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 539fa8: 41 89 c4 mov %eax,%r12d 0.00 : 539fab: e8 70 4b fb ff callq 4eeb20 0.00 : 539fb0: bf b0 3e 87 00 mov $0x873eb0,%edi 0.00 : 539fb5: 48 89 c6 mov %rax,%rsi 0.00 : 539fb8: 31 c0 xor %eax,%eax 0.00 : 539fba: e8 e1 28 24 00 callq 77c8a0 0.00 : 539fbf: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 539fc4: 89 c3 mov %eax,%ebx 0.00 : 539fc6: e9 55 ef ff ff jmpq 538f20 : : /* : * Else generate a detailed complaint for a function : */ : if (fdresult == FUNCDETAIL_MULTIPLE) : ereport(ERROR, 0.00 : 539fcb: 45 31 c0 xor %r8d,%r8d 0.00 : 539fce: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 539fd3: ba ee 01 00 00 mov $0x1ee,%edx 0.00 : 539fd8: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 539fdd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 539fe2: e8 d9 0a 24 00 callq 77aac0 0.00 : 539fe7: 84 c0 test %al,%al 0.00 : 539fe9: 0f 84 f9 ee ff ff je 538ee8 0.00 : 539fef: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 539ff5: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 539ffc: e8 6f 06 00 00 callq 53a670 0.00 : 53a001: bf f8 42 87 00 mov $0x8742f8,%edi 0.00 : 53a006: 41 89 c4 mov %eax,%r12d 0.00 : 53a009: 31 c0 xor %eax,%eax 0.00 : 53a00b: e8 90 1c 24 00 callq 77bca0 0.00 : 53a010: 48 8b 95 b8 fa ff ff mov -0x548(%rbp),%rdx 0.00 : 53a017: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 53a01e: 48 8d 8d 10 fe ff ff lea -0x1f0(%rbp),%rcx 0.00 : 53a025: 44 89 fe mov %r15d,%esi 0.00 : 53a028: 41 89 c5 mov %eax,%r13d 0.00 : 53a02b: e8 20 d7 ff ff callq 537750 0.00 : 53a030: bf 32 3d 87 00 mov $0x873d32,%edi 0.00 : 53a035: 48 89 c6 mov %rax,%rsi 0.00 : 53a038: 31 c0 xor %eax,%eax 0.00 : 53a03a: e8 61 28 24 00 callq 77c8a0 0.00 : 53a03f: bf 84 70 08 05 mov $0x5087084,%edi 0.00 : 53a044: 89 c3 mov %eax,%ebx 0.00 : 53a046: e9 81 f8 ff ff jmpq 5398cc : errmsg("%s(*) must be used to call a parameterless aggregate function", : NameListToString(funcname)), : parser_errposition(pstate, location))); : : if (retset) : ereport(ERROR, 0.00 : 53a04b: 45 31 c0 xor %r8d,%r8d 0.00 : 53a04e: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 53a053: ba 9d 02 00 00 mov $0x29d,%edx 0.00 : 53a058: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53a05d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53a062: e8 59 0a 24 00 callq 77aac0 0.00 : 53a067: 84 c0 test %al,%al 0.00 : 53a069: 0f 84 79 ee ff ff je 538ee8 0.00 : 53a06f: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 53a075: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53a07c: e8 ef 05 00 00 callq 53a670 0.00 : 53a081: bf 4c 3d 87 00 mov $0x873d4c,%edi 0.00 : 53a086: 41 89 c4 mov %eax,%r12d 0.00 : 53a089: 31 c0 xor %eax,%eax 0.00 : 53a08b: e8 10 28 24 00 callq 77c8a0 0.00 : 53a090: bf 84 00 06 03 mov $0x3060084,%edi 0.00 : 53a095: 89 c3 mov %eax,%ebx 0.00 : 53a097: e9 84 ee ff ff jmpq 538f20 : newa->elements = vargs; : /* assume all the variadic arguments were coerced to the same type */ : newa->element_typeid = exprType((Node *) linitial(vargs)); : newa->array_typeid = get_array_type(newa->element_typeid); : if (!OidIsValid(newa->array_typeid)) : ereport(ERROR, 0.00 : 53a09c: 45 31 c0 xor %r8d,%r8d 0.00 : 53a09f: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 53a0a4: ba 50 02 00 00 mov $0x250,%edx 0.00 : 53a0a9: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53a0ae: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53a0b3: e8 08 0a 24 00 callq 77aac0 0.00 : 53a0b8: 84 c0 test %al,%al 0.00 : 53a0ba: 0f 84 28 ee ff ff je 538ee8 0.00 : 53a0c0: 4c 89 e7 mov %r12,%rdi 0.00 : 53a0c3: e8 48 40 0a 00 callq 5de110 0.00 : 53a0c8: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53a0cf: 89 c6 mov %eax,%esi 0.00 : 53a0d1: e8 9a 05 00 00 callq 53a670 0.00 : 53a0d6: 41 8b 7d 0c mov 0xc(%r13),%edi 0.00 : 53a0da: 41 89 c4 mov %eax,%r12d 0.00 : 53a0dd: e8 3e f3 19 00 callq 6d9420 0.00 : 53a0e2: bf d8 21 87 00 mov $0x8721d8,%edi 0.00 : 53a0e7: 48 89 c6 mov %rax,%rsi 0.00 : 53a0ea: 31 c0 xor %eax,%eax 0.00 : 53a0ec: e8 af 27 24 00 callq 77c8a0 0.00 : 53a0f1: bf 84 70 00 04 mov $0x4007084,%edi 0.00 : 53a0f6: 89 c3 mov %eax,%ebx 0.00 : 53a0f8: e9 23 ee ff ff jmpq 538f20 : * make transformAggregateCall do that? However, if you'd also like : * to allow default arguments for aggregates, we'd need to do it in : * planning to avoid semantic problems. : */ : if (argnames != NIL) : ereport(ERROR, 0.00 : 53a0fd: 45 31 c0 xor %r8d,%r8d 0.00 : 53a100: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 53a105: ba ac 02 00 00 mov $0x2ac,%edx 0.00 : 53a10a: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53a10f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53a114: e8 a7 09 24 00 callq 77aac0 0.00 : 53a119: 84 c0 test %al,%al 0.00 : 53a11b: 0f 84 c7 ed ff ff je 538ee8 0.00 : 53a121: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 53a127: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53a12e: e8 3d 05 00 00 callq 53a670 0.00 : 53a133: bf c8 44 87 00 mov $0x8744c8,%edi 0.00 : 53a138: 41 89 c4 mov %eax,%r12d 0.00 : 53a13b: 31 c0 xor %eax,%eax 0.00 : 53a13d: e8 5e 27 24 00 callq 77c8a0 0.00 : 53a142: bf 40 04 00 00 mov $0x440,%edi 0.00 : 53a147: 89 c3 mov %eax,%ebx 0.00 : 53a149: e9 d2 ed ff ff jmpq 538f20 : { : /* : * True window functions must be called with a window definition. : */ : if (!over) : ereport(ERROR, 0.00 : 53a14e: 45 31 c0 xor %r8d,%r8d 0.00 : 53a151: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 53a156: ba cf 01 00 00 mov $0x1cf,%edx 0.00 : 53a15b: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53a160: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53a165: e8 56 09 24 00 callq 77aac0 0.00 : 53a16a: 84 c0 test %al,%al 0.00 : 53a16c: 0f 84 76 ed ff ff je 538ee8 0.00 : 53a172: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 53a178: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53a17f: e8 ec 04 00 00 callq 53a670 0.00 : 53a184: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 53a18b: 41 89 c4 mov %eax,%r12d 0.00 : 53a18e: e8 8d 49 fb ff callq 4eeb20 0.00 : 53a193: bf 98 42 87 00 mov $0x874298,%edi 0.00 : 53a198: 48 89 c6 mov %rax,%rsi 0.00 : 53a19b: 31 c0 xor %eax,%eax 0.00 : 53a19d: e8 fe 26 24 00 callq 77c8a0 0.00 : 53a1a2: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 53a1a7: 89 c3 mov %eax,%ebx 0.00 : 53a1a9: e9 72 ed ff ff jmpq 538f20 : "You might need to add explicit type casts."), : parser_errposition(pstate, location))); : else if (list_length(agg_order) > 1 && !agg_within_group) : { : /* It's agg(x, ORDER BY y,z) ... perhaps misplaced ORDER BY */ : ereport(ERROR, 0.00 : 53a1ae: 45 31 c0 xor %r8d,%r8d 0.00 : 53a1b1: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 53a1b6: ba fa 01 00 00 mov $0x1fa,%edx 0.00 : 53a1bb: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53a1c0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53a1c5: e8 f6 08 24 00 callq 77aac0 0.00 : 53a1ca: 84 c0 test %al,%al 0.00 : 53a1cc: 0f 84 16 ed ff ff je 538ee8 0.00 : 53a1d2: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53a1d9: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 53a1df: e8 8c 04 00 00 callq 53a670 0.00 : 53a1e4: bf 50 43 87 00 mov $0x874350,%edi 0.00 : 53a1e9: 41 89 c4 mov %eax,%r12d 0.00 : 53a1ec: e9 9e f6 ff ff jmpq 53988f : : numDirectArgs = list_length(fargs) - numAggregatedArgs; : numNonHypotheticalArgs = numDirectArgs - numAggregatedArgs; : /* safety check (should only trigger with a misdeclared agg) */ : if (numNonHypotheticalArgs < 0) : elog(ERROR, "incorrect number of arguments to hypothetical-set aggregate"); 0.00 : 53a1f1: ba 70 46 87 00 mov $0x874670,%edx 0.00 : 53a1f6: be 3d 06 00 00 mov $0x63d,%esi 0.00 : 53a1fb: bf df 3c 87 00 mov $0x873cdf,%edi 0.00 : 53a200: e8 1b 12 24 00 callq 77b420 0.00 : 53a205: be c8 41 87 00 mov $0x8741c8,%esi 0.00 : 53a20a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53a20f: 31 c0 xor %eax,%eax 0.00 : 53a211: e8 1a 10 24 00 callq 77b230 0.00 : 53a216: e8 b5 f2 f2 ff callq 4694d0 : * variadic parameter; there must be just as many of them : * as there are aggregated arguments. : */ : if (aggkind == AGGKIND_HYPOTHETICAL) : { : if (nvargs != 2 * numAggregatedArgs) 0.00 : 53a21b: 43 8d 44 2d 00 lea 0x0(%r13,%r13,1),%eax 0.00 : 53a220: 39 c2 cmp %eax,%edx 0.00 : 53a222: 0f 84 bd f3 ff ff je 5395e5 : ereport(ERROR, 0.00 : 53a228: 45 31 c0 xor %r8d,%r8d 0.00 : 53a22b: b9 50 46 87 00 mov $0x874650,%ecx 0.00 : 53a230: ba a2 01 00 00 mov $0x1a2,%edx 0.00 : 53a235: be df 3c 87 00 mov $0x873cdf,%esi 0.00 : 53a23a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53a23f: e8 7c 08 24 00 callq 77aac0 0.00 : 53a244: 84 c0 test %al,%al 0.00 : 53a246: 0f 84 9c ec ff ff je 538ee8 0.00 : 53a24c: 8b b5 4c fa ff ff mov -0x5b4(%rbp),%esi 0.00 : 53a252: 48 8b bd 60 fa ff ff mov -0x5a0(%rbp),%rdi 0.00 : 53a259: e8 12 04 00 00 callq 53a670 0.00 : 53a25e: 8b 5d c0 mov -0x40(%rbp),%ebx 0.00 : 53a261: 48 8b bd 58 fa ff ff mov -0x5a8(%rbp),%rdi 0.00 : 53a268: 41 89 c4 mov %eax,%r12d 0.00 : 53a26b: 44 29 eb sub %r13d,%ebx 0.00 : 53a26e: e8 ad 48 fb ff callq 4eeb20 0.00 : 53a273: 44 89 e9 mov %r13d,%ecx 0.00 : 53a276: 48 89 c6 mov %rax,%rsi 0.00 : 53a279: 89 da mov %ebx,%edx 0.00 : 53a27b: bf d8 40 87 00 mov $0x8740d8,%edi 0.00 : 53a280: 31 c0 xor %eax,%eax 0.00 : 53a282: e8 19 1a 24 00 callq 77bca0 0.00 : 53a287: e9 0a f6 ff ff jmpq 539896 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_type.c:683 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000542960 : : } : : /* given a typeid, return the type's typrelid (associated relation, if any) */ : Oid : typeidTypeRelid(Oid type_id) : { 0.00 : 542960: 55 push %rbp : HeapTuple typeTuple; : Form_pg_type type; : Oid result; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); 0.00 : 542961: 31 c9 xor %ecx,%ecx 0.00 : 542963: 89 fe mov %edi,%esi 0.00 : 542965: 45 31 c0 xor %r8d,%r8d 0.00 : 542968: 31 d2 xor %edx,%edx : } : : /* given a typeid, return the type's typrelid (associated relation, if any) */ : Oid : typeidTypeRelid(Oid type_id) : { 0.00 : 54296a: 48 89 e5 mov %rsp,%rbp 0.00 : 54296d: 53 push %rbx 0.00 : 54296e: 89 fb mov %edi,%ebx : HeapTuple typeTuple; : Form_pg_type type; : Oid result; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); 0.00 : 542970: bf 3b 00 00 00 mov $0x3b,%edi : } : : /* given a typeid, return the type's typrelid (associated relation, if any) */ : Oid : typeidTypeRelid(Oid type_id) : { 0.00 : 542975: 48 83 ec 08 sub $0x8,%rsp : HeapTuple typeTuple; : Form_pg_type type; : Oid result; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); 0.00 : 542979: e8 42 f3 22 00 callq 771cc0 : if (!HeapTupleIsValid(typeTuple)) 0.00 : 54297e: 48 85 c0 test %rax,%rax : { : HeapTuple typeTuple; : Form_pg_type type; : Oid result; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); 0.00 : 542981: 48 89 c1 mov %rax,%rcx : if (!HeapTupleIsValid(typeTuple)) 0.00 : 542984: 74 1d je 5429a3 : elog(ERROR, "cache lookup failed for type %u", type_id); : : type = (Form_pg_type) GETSTRUCT(typeTuple); 0.00 : 542986: 48 8b 40 10 mov 0x10(%rax),%rax : result = type->typrelid; : ReleaseSysCache(typeTuple); 0.00 : 54298a: 48 89 cf mov %rcx,%rdi : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); : if (!HeapTupleIsValid(typeTuple)) : elog(ERROR, "cache lookup failed for type %u", type_id); : : type = (Form_pg_type) GETSTRUCT(typeTuple); : result = type->typrelid; 0.00 : 54298d: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 542991: 8b 5c 10 50 mov 0x50(%rax,%rdx,1),%ebx : ReleaseSysCache(typeTuple); /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_type.c:683 100.00 : 542995: e8 16 f3 22 00 callq 771cb0 : return result; : } 0.00 : 54299a: 48 83 c4 08 add $0x8,%rsp 0.00 : 54299e: 89 d8 mov %ebx,%eax 0.00 : 5429a0: 5b pop %rbx 0.00 : 5429a1: c9 leaveq 0.00 : 5429a2: c3 retq : Form_pg_type type; : Oid result; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); : if (!HeapTupleIsValid(typeTuple)) : elog(ERROR, "cache lookup failed for type %u", type_id); 0.00 : 5429a3: ba 30 5b 87 00 mov $0x875b30,%edx 0.00 : 5429a8: be a7 02 00 00 mov $0x2a7,%esi 0.00 : 5429ad: bf 6e 59 87 00 mov $0x87596e,%edi 0.00 : 5429b2: e8 69 8a 23 00 callq 77b420 0.00 : 5429b7: 89 da mov %ebx,%edx 0.00 : 5429b9: be 58 09 7b 00 mov $0x7b0958,%esi 0.00 : 5429be: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5429c3: 31 c0 xor %eax,%eax 0.00 : 5429c5: e8 66 88 23 00 callq 77b230 0.00 : 5429ca: e8 01 6b f2 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:143 50.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2799 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054aec0 : : * tupno that that item's datum has been found to be equal to. This allows : * us to avoid additional comparisons in compute_scalar_stats(). : */ : static int : compare_scalars(const void *a, const void *b, void *arg) : { 0.00 : 54aec0: 55 push %rbp 0.00 : 54aec1: 48 89 e5 mov %rsp,%rbp 0.00 : 54aec4: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 54aec8: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 54aecc: 49 89 d4 mov %rdx,%r12 0.00 : 54aecf: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 54aed3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 54aed7: 48 83 ec 20 sub $0x20,%rsp : Datum db = ((const ScalarItem *) b)->value; : int tb = ((const ScalarItem *) b)->tupno; : CompareScalarsContext *cxt = (CompareScalarsContext *) arg; : int compare; : : compare = ApplySortComparator(da, false, db, false, cxt->ssup); 0.00 : 54aedb: 48 8b 1a mov (%rdx),%rbx : */ : static int : compare_scalars(const void *a, const void *b, void *arg) : { : Datum da = ((const ScalarItem *) a)->value; : int ta = ((const ScalarItem *) a)->tupno; 0.00 : 54aede: 44 8b 77 08 mov 0x8(%rdi),%r14d : Datum db = ((const ScalarItem *) b)->value; : int tb = ((const ScalarItem *) b)->tupno; 0.00 : 54aee2: 44 8b 6e 08 mov 0x8(%rsi),%r13d : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); 0.00 : 54aee6: 48 8b 3f mov (%rdi),%rdi 0.00 : 54aee9: 48 8b 36 mov (%rsi),%rsi 0.00 : 54aeec: 48 89 da mov %rbx,%rdx 0.00 : 54aeef: ff 53 18 callq *0x18(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:143 50.00 : 54aef2: 89 c2 mov %eax,%edx : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 54aef4: f7 d8 neg %eax 0.00 : 54aef6: 80 7b 0c 00 cmpb $0x0,0xc(%rbx) 0.00 : 54aefa: 0f 45 d0 cmovne %eax,%edx : CompareScalarsContext *cxt = (CompareScalarsContext *) arg; : int compare; : : compare = ApplySortComparator(da, false, db, false, cxt->ssup); : if (compare != 0) 0.00 : 54aefd: 85 d2 test %edx,%edx 0.00 : 54aeff: 75 2b jne 54af2c : return compare; : : /* : * The two datums are equal, so update cxt->tupnoLink[]. : */ : if (cxt->tupnoLink[ta] < tb) 0.00 : 54af01: 49 8b 54 24 08 mov 0x8(%r12),%rdx 0.00 : 54af06: 49 63 c6 movslq %r14d,%rax 0.00 : 54af09: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 54af0d: 44 3b 28 cmp (%rax),%r13d 0.00 : 54af10: 7e 08 jle 54af1a : cxt->tupnoLink[ta] = tb; 0.00 : 54af12: 44 89 28 mov %r13d,(%rax) 0.00 : 54af15: 49 8b 54 24 08 mov 0x8(%r12),%rdx : if (cxt->tupnoLink[tb] < ta) 0.00 : 54af1a: 49 63 c5 movslq %r13d,%rax 0.00 : 54af1d: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 54af21: 44 3b 30 cmp (%rax),%r14d 0.00 : 54af24: 7f 22 jg 54af48 : cxt->tupnoLink[tb] = ta; : : /* : * For equal datums, sort by tupno : */ : return ta - tb; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2799 50.00 : 54af26: 44 89 f2 mov %r14d,%edx 0.00 : 54af29: 44 29 ea sub %r13d,%edx : } 0.00 : 54af2c: 89 d0 mov %edx,%eax 0.00 : 54af2e: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 54af32: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 54af37: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 54af3c: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 54af41: c9 leaveq 0.00 : 54af42: c3 retq 0.00 : 54af43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * The two datums are equal, so update cxt->tupnoLink[]. : */ : if (cxt->tupnoLink[ta] < tb) : cxt->tupnoLink[ta] = tb; : if (cxt->tupnoLink[tb] < ta) : cxt->tupnoLink[tb] = ta; 0.00 : 54af48: 44 89 30 mov %r14d,(%rax) 0.00 : 54af4b: eb d9 jmp 54af26 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:4208 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000553f70 : : * CSV-style escaping : */ : static void : CopyAttributeOutCSV(CopyState cstate, char *string, : bool use_quote, bool single_attr) : { 0.00 : 553f70: 55 push %rbp 0.00 : 553f71: 48 89 e5 mov %rsp,%rbp 0.00 : 553f74: 41 57 push %r15 0.00 : 553f76: 41 56 push %r14 0.00 : 553f78: 49 89 fe mov %rdi,%r14 0.00 : 553f7b: 41 55 push %r13 0.00 : 553f7d: 49 89 f5 mov %rsi,%r13 0.00 : 553f80: 41 54 push %r12 0.00 : 553f82: 53 push %rbx 0.00 : 553f83: 89 d3 mov %edx,%ebx 0.00 : 553f85: 48 83 ec 18 sub $0x18,%rsp 0.00 : 553f89: 88 4d cf mov %cl,-0x31(%rbp) : char *ptr; : char *start; : char c; : char delimc = cstate->delim[0]; 0.00 : 553f8c: 48 8b 47 68 mov 0x68(%rdi),%rax : char quotec = cstate->quote[0]; : char escapec = cstate->escape[0]; : : /* force quoting if it matches null_print (before conversion!) */ : if (!use_quote && strcmp(string, cstate->null_print) == 0) 0.00 : 553f90: 84 d2 test %dl,%dl : bool use_quote, bool single_attr) : { : char *ptr; : char *start; : char c; : char delimc = cstate->delim[0]; 0.00 : 553f92: 44 0f b6 00 movzbl (%rax),%r8d : char quotec = cstate->quote[0]; 0.00 : 553f96: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 553f9a: 44 0f b6 38 movzbl (%rax),%r15d : char escapec = cstate->escape[0]; 0.00 : 553f9e: 48 8b 47 78 mov 0x78(%rdi),%rax 0.00 : 553fa2: 0f b6 00 movzbl (%rax),%eax 0.00 : 553fa5: 88 45 d7 mov %al,-0x29(%rbp) : : /* force quoting if it matches null_print (before conversion!) */ : if (!use_quote && strcmp(string, cstate->null_print) == 0) 0.00 : 553fa8: 0f 84 d2 01 00 00 je 554180 : use_quote = true; : : if (cstate->need_transcoding) 0.00 : 553fae: 41 80 7e 24 00 cmpb $0x0,0x24(%r14) 0.00 : 553fb3: 4d 89 ec mov %r13,%r12 0.00 : 553fb6: 0f 85 9c 01 00 00 jne 554158 : ptr = string; : : /* : * Make a preliminary pass to discover if it needs quoting : */ : if (!use_quote) 0.00 : 553fbc: 84 db test %bl,%bl 0.00 : 553fbe: 75 4a jne 55400a : { : /* : * Because '\.' can be a data value, quote it if it appears alone on a : * line so it is not interpreted as the end-of-data marker. : */ : if (single_attr && strcmp(ptr, "\\.") == 0) 0.00 : 553fc0: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 553fc4: 0f 85 fe 00 00 00 jne 5540c8 : break; : } : if (IS_HIGHBIT_SET(c) && cstate->encoding_embeds_ascii) : tptr += pg_encoding_mblen(cstate->file_encoding, tptr); : else : tptr++; 0.00 : 553fca: 4c 89 e3 mov %r12,%rbx 0.00 : 553fcd: 0f 1f 00 nopl (%rax) 0.00 : 553fd0: eb 28 jmp 553ffa 0.00 : 553fd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : char *tptr = ptr; : : while ((c = *tptr) != '\0') : { : if (c == delimc || c == quotec || c == '\n' || c == '\r') 0.00 : 553fd8: 44 38 f8 cmp %r15b,%al 0.00 : 553fdb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 553fe0: 74 28 je 55400a 0.00 : 553fe2: 3c 0a cmp $0xa,%al 0.00 : 553fe4: 74 24 je 55400a 0.00 : 553fe6: 3c 0d cmp $0xd,%al 0.00 : 553fe8: 74 20 je 55400a : { : use_quote = true; : break; : } : if (IS_HIGHBIT_SET(c) && cstate->encoding_embeds_ascii) 0.00 : 553fea: 84 c0 test %al,%al 0.00 : 553fec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 553ff0: 0f 88 0a 01 00 00 js 554100 : tptr += pg_encoding_mblen(cstate->file_encoding, tptr); : else : tptr++; 0.00 : 553ff6: 48 83 c3 01 add $0x1,%rbx : use_quote = true; : else : { : char *tptr = ptr; : : while ((c = *tptr) != '\0') 0.00 : 553ffa: 0f b6 03 movzbl (%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:4208 100.00 : 553ffd: 84 c0 test %al,%al 0.00 : 553fff: 0f 84 33 01 00 00 je 554138 : { : if (c == delimc || c == quotec || c == '\n' || c == '\r') 0.00 : 554005: 44 38 c0 cmp %r8b,%al 0.00 : 554008: 75 ce jne 553fd8 : } : } : : if (use_quote) : { : CopySendChar(cstate, quotec); 0.00 : 55400a: 41 0f be c7 movsbl %r15b,%eax 0.00 : 55400e: 4c 89 f7 mov %r14,%rdi 0.00 : 554011: 4d 89 e5 mov %r12,%r13 0.00 : 554014: 89 45 d0 mov %eax,-0x30(%rbp) 0.00 : 554017: 89 c6 mov %eax,%esi 0.00 : 554019: e8 92 fe ff ff callq 553eb0 : while ((c = *ptr) != '\0') : { : if (c == quotec || c == escapec) : { : DUMPSOFAR(); : CopySendChar(cstate, escapec); 0.00 : 55401e: 0f be 45 d7 movsbl -0x29(%rbp),%eax 0.00 : 554022: 89 45 c8 mov %eax,-0x38(%rbp) : : /* : * We adopt the same optimization strategy as in CopyAttributeOutText : */ : start = ptr; : while ((c = *ptr) != '\0') 0.00 : 554025: eb 0d jmp 554034 0.00 : 554027: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55402e: 00 00 : start = ptr; /* we include char in next run */ : } : if (IS_HIGHBIT_SET(c) && cstate->encoding_embeds_ascii) : ptr += pg_encoding_mblen(cstate->file_encoding, ptr); : else : ptr++; 0.00 : 554030: 49 83 c4 01 add $0x1,%r12 : : /* : * We adopt the same optimization strategy as in CopyAttributeOutText : */ : start = ptr; : while ((c = *ptr) != '\0') 0.00 : 554034: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 554039: 84 db test %bl,%bl 0.00 : 55403b: 74 33 je 554070 : { : if (c == quotec || c == escapec) 0.00 : 55403d: 44 38 fb cmp %r15b,%bl 0.00 : 554040: 74 56 je 554098 0.00 : 554042: 3a 5d d7 cmp -0x29(%rbp),%bl 0.00 : 554045: 74 51 je 554098 : { : DUMPSOFAR(); : CopySendChar(cstate, escapec); : start = ptr; /* we include char in next run */ : } : if (IS_HIGHBIT_SET(c) && cstate->encoding_embeds_ascii) 0.00 : 554047: 84 db test %bl,%bl 0.00 : 554049: 79 e5 jns 554030 0.00 : 55404b: 41 80 7e 25 00 cmpb $0x0,0x25(%r14) 0.00 : 554050: 74 de je 554030 : ptr += pg_encoding_mblen(cstate->file_encoding, ptr); 0.00 : 554052: 41 8b 7e 20 mov 0x20(%r14),%edi 0.00 : 554056: 4c 89 e6 mov %r12,%rsi 0.00 : 554059: e8 d2 71 23 00 callq 78b230 0.00 : 55405e: 48 98 cltq 0.00 : 554060: 49 01 c4 add %rax,%r12 : : /* : * We adopt the same optimization strategy as in CopyAttributeOutText : */ : start = ptr; : while ((c = *ptr) != '\0') 0.00 : 554063: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 554068: 84 db test %bl,%bl 0.00 : 55406a: 75 d1 jne 55403d 0.00 : 55406c: 0f 1f 40 00 nopl 0x0(%rax) : if (IS_HIGHBIT_SET(c) && cstate->encoding_embeds_ascii) : ptr += pg_encoding_mblen(cstate->file_encoding, ptr); : else : ptr++; : } : DUMPSOFAR(); 0.00 : 554070: 4d 39 ec cmp %r13,%r12 0.00 : 554073: 0f 87 27 01 00 00 ja 5541a0 : : CopySendChar(cstate, quotec); 0.00 : 554079: 8b 75 d0 mov -0x30(%rbp),%esi : else : { : /* If it doesn't need quoting, we can just dump it as-is */ : CopySendString(cstate, ptr); : } : } 0.00 : 55407c: 48 83 c4 18 add $0x18,%rsp : else : ptr++; : } : DUMPSOFAR(); : : CopySendChar(cstate, quotec); 0.00 : 554080: 4c 89 f7 mov %r14,%rdi : else : { : /* If it doesn't need quoting, we can just dump it as-is */ : CopySendString(cstate, ptr); : } : } 0.00 : 554083: 5b pop %rbx 0.00 : 554084: 41 5c pop %r12 0.00 : 554086: 41 5d pop %r13 0.00 : 554088: 41 5e pop %r14 0.00 : 55408a: 41 5f pop %r15 0.00 : 55408c: c9 leaveq : else : ptr++; : } : DUMPSOFAR(); : : CopySendChar(cstate, quotec); 0.00 : 55408d: e9 1e fe ff ff jmpq 553eb0 0.00 : 554092: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : start = ptr; : while ((c = *ptr) != '\0') : { : if (c == quotec || c == escapec) : { : DUMPSOFAR(); 0.00 : 554098: 4d 39 ec cmp %r13,%r12 0.00 : 55409b: 77 13 ja 5540b0 : CopySendChar(cstate, escapec); 0.00 : 55409d: 8b 75 c8 mov -0x38(%rbp),%esi 0.00 : 5540a0: 4c 89 f7 mov %r14,%rdi 0.00 : 5540a3: 4d 89 e5 mov %r12,%r13 0.00 : 5540a6: e8 05 fe ff ff callq 553eb0 0.00 : 5540ab: eb 9a jmp 554047 0.00 : 5540ad: 0f 1f 00 nopl (%rax) : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 5540b0: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 5540b4: 44 89 e2 mov %r12d,%edx 0.00 : 5540b7: 4c 89 ee mov %r13,%rsi 0.00 : 5540ba: 44 29 ea sub %r13d,%edx 0.00 : 5540bd: e8 2e dc 07 00 callq 5d1cf0 0.00 : 5540c2: eb d9 jmp 55409d 0.00 : 5540c4: 0f 1f 40 00 nopl 0x0(%rax) : { : /* : * Because '\.' can be a data value, quote it if it appears alone on a : * line so it is not interpreted as the end-of-data marker. : */ : if (single_attr && strcmp(ptr, "\\.") == 0) 0.00 : 5540c8: 41 80 3c 24 5c cmpb $0x5c,(%r12) 0.00 : 5540cd: 0f 85 f7 fe ff ff jne 553fca 0.00 : 5540d3: 41 80 7c 24 01 2e cmpb $0x2e,0x1(%r12) 0.00 : 5540d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5540e0: 0f 85 e4 fe ff ff jne 553fca 0.00 : 5540e6: 41 80 7c 24 02 00 cmpb $0x0,0x2(%r12) 0.00 : 5540ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5540f0: 0f 84 14 ff ff ff je 55400a 0.00 : 5540f6: 66 90 xchg %ax,%ax 0.00 : 5540f8: e9 cd fe ff ff jmpq 553fca 0.00 : 5540fd: 0f 1f 00 nopl (%rax) : if (c == delimc || c == quotec || c == '\n' || c == '\r') : { : use_quote = true; : break; : } : if (IS_HIGHBIT_SET(c) && cstate->encoding_embeds_ascii) 0.00 : 554100: 41 80 7e 25 00 cmpb $0x0,0x25(%r14) 0.00 : 554105: 0f 1f 00 nopl (%rax) 0.00 : 554108: 0f 84 e8 fe ff ff je 553ff6 : tptr += pg_encoding_mblen(cstate->file_encoding, tptr); 0.00 : 55410e: 41 8b 7e 20 mov 0x20(%r14),%edi 0.00 : 554112: 48 89 de mov %rbx,%rsi 0.00 : 554115: 44 88 45 c0 mov %r8b,-0x40(%rbp) 0.00 : 554119: e8 12 71 23 00 callq 78b230 0.00 : 55411e: 48 98 cltq : if (c == delimc || c == quotec || c == '\n' || c == '\r') : { : use_quote = true; : break; : } : if (IS_HIGHBIT_SET(c) && cstate->encoding_embeds_ascii) 0.00 : 554120: 44 0f b6 45 c0 movzbl -0x40(%rbp),%r8d : tptr += pg_encoding_mblen(cstate->file_encoding, tptr); 0.00 : 554125: 48 01 c3 add %rax,%rbx : use_quote = true; : else : { : char *tptr = ptr; : : while ((c = *tptr) != '\0') 0.00 : 554128: 0f b6 03 movzbl (%rbx),%eax 0.00 : 55412b: 84 c0 test %al,%al 0.00 : 55412d: 0f 85 d2 fe ff ff jne 554005 0.00 : 554133: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : else : { : /* If it doesn't need quoting, we can just dump it as-is */ : CopySendString(cstate, ptr); : } : } 0.00 : 554138: 48 83 c4 18 add $0x18,%rsp : CopySendChar(cstate, quotec); : } : else : { : /* If it doesn't need quoting, we can just dump it as-is */ : CopySendString(cstate, ptr); 0.00 : 55413c: 4c 89 e6 mov %r12,%rsi 0.00 : 55413f: 4c 89 f7 mov %r14,%rdi : } : } 0.00 : 554142: 5b pop %rbx 0.00 : 554143: 41 5c pop %r12 0.00 : 554145: 41 5d pop %r13 0.00 : 554147: 41 5e pop %r14 0.00 : 554149: 41 5f pop %r15 0.00 : 55414b: c9 leaveq : CopySendChar(cstate, quotec); : } : else : { : /* If it doesn't need quoting, we can just dump it as-is */ : CopySendString(cstate, ptr); 0.00 : 55414c: e9 af fd ff ff jmpq 553f00 0.00 : 554151: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* force quoting if it matches null_print (before conversion!) */ : if (!use_quote && strcmp(string, cstate->null_print) == 0) : use_quote = true; : : if (cstate->need_transcoding) : ptr = pg_server_to_any(string, strlen(string), cstate->file_encoding); 0.00 : 554158: 44 88 45 c0 mov %r8b,-0x40(%rbp) 0.00 : 55415c: 4c 89 ef mov %r13,%rdi 0.00 : 55415f: e8 ec 56 f1 ff callq 469850 0.00 : 554164: 41 8b 56 20 mov 0x20(%r14),%edx 0.00 : 554168: 89 c6 mov %eax,%esi 0.00 : 55416a: 4c 89 ef mov %r13,%rdi 0.00 : 55416d: e8 1e 50 23 00 callq 789190 0.00 : 554172: 44 0f b6 45 c0 movzbl -0x40(%rbp),%r8d 0.00 : 554177: 49 89 c4 mov %rax,%r12 0.00 : 55417a: e9 3d fe ff ff jmpq 553fbc 0.00 : 55417f: 90 nop : char delimc = cstate->delim[0]; : char quotec = cstate->quote[0]; : char escapec = cstate->escape[0]; : : /* force quoting if it matches null_print (before conversion!) */ : if (!use_quote && strcmp(string, cstate->null_print) == 0) 0.00 : 554180: 48 8b 77 50 mov 0x50(%rdi),%rsi 0.00 : 554184: 44 88 45 c0 mov %r8b,-0x40(%rbp) 0.00 : 554188: 4c 89 ef mov %r13,%rdi 0.00 : 55418b: e8 a0 5b f1 ff callq 469d30 0.00 : 554190: 85 c0 test %eax,%eax 0.00 : 554192: 44 0f b6 45 c0 movzbl -0x40(%rbp),%r8d 0.00 : 554197: 0f 94 c3 sete %bl 0.00 : 55419a: e9 0f fe ff ff jmpq 553fae 0.00 : 55419f: 90 nop : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 5541a0: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 5541a4: 44 89 e2 mov %r12d,%edx 0.00 : 5541a7: 4c 89 ee mov %r13,%rsi 0.00 : 5541aa: 44 29 ea sub %r13d,%edx 0.00 : 5541ad: e8 3e db 07 00 callq 5d1cf0 0.00 : 5541b2: e9 c2 fe ff ff jmpq 554079 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:565 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000554af0 : : * : * NB: no data conversion is applied here. : */ : static int : CopyGetData(CopyState cstate, void *databuf, int minread, int maxread) : { 0.00 : 554af0: 55 push %rbp 0.00 : 554af1: 48 89 e5 mov %rsp,%rbp 0.00 : 554af4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 554af8: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 554afc: 49 89 fc mov %rdi,%r12 0.00 : 554aff: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 554b03: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 554b07: 41 89 d7 mov %edx,%r15d 0.00 : 554b0a: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 554b0e: 48 83 ec 30 sub $0x30,%rsp 0.00 : 554b12: 48 89 75 d0 mov %rsi,-0x30(%rbp) : int bytesread = 0; : : switch (cstate->copy_dest) 0.00 : 554b16: 8b 07 mov (%rdi),%eax : * : * NB: no data conversion is applied here. : */ : static int : CopyGetData(CopyState cstate, void *databuf, int minread, int maxread) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:565 100.00 : 554b18: 41 89 ce mov %ecx,%r14d : int bytesread = 0; : : switch (cstate->copy_dest) 0.00 : 554b1b: 83 f8 01 cmp $0x1,%eax 0.00 : 554b1e: 0f 84 dc 00 00 00 je 554c00 0.00 : 554b24: 73 4a jae 554b70 : { : case COPY_FILE: : bytesread = fread(databuf, 1, maxread, cstate->copy_file); 0.00 : 554b26: 48 8b 4f 08 mov 0x8(%rdi),%rcx 0.00 : 554b2a: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 554b2e: 49 63 d6 movslq %r14d,%rdx 0.00 : 554b31: be 01 00 00 00 mov $0x1,%esi 0.00 : 554b36: e8 55 51 f1 ff callq 469c90 : if (ferror(cstate->copy_file)) 0.00 : 554b3b: 49 8b 7c 24 08 mov 0x8(%r12),%rdi : int bytesread = 0; : : switch (cstate->copy_dest) : { : case COPY_FILE: : bytesread = fread(databuf, 1, maxread, cstate->copy_file); 0.00 : 554b40: 48 89 c3 mov %rax,%rbx : if (ferror(cstate->copy_file)) 0.00 : 554b43: e8 18 4d f1 ff callq 469860 0.00 : 554b48: 85 c0 test %eax,%eax 0.00 : 554b4a: 0f 85 09 02 00 00 jne 554d59 : } : break; : } : : return bytesread; : } 0.00 : 554b50: 89 d8 mov %ebx,%eax 0.00 : 554b52: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 554b56: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 554b5a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 554b5e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 554b62: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 554b66: c9 leaveq 0.00 : 554b67: c3 retq 0.00 : 554b68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 554b6f: 00 : static int : CopyGetData(CopyState cstate, void *databuf, int minread, int maxread) : { : int bytesread = 0; : : switch (cstate->copy_dest) 0.00 : 554b70: 83 f8 02 cmp $0x2,%eax 0.00 : 554b73: 74 0b je 554b80 : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); : databuf = (void *) ((char *) databuf + avail); 0.00 : 554b75: 31 db xor %ebx,%ebx 0.00 : 554b77: eb d7 jmp 554b50 0.00 : 554b79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : errmsg("unexpected EOF on client connection with an open transaction"))); : } : bytesread = minread; : break; : case COPY_NEW_FE: : while (maxread > 0 && bytesread < minread && !cstate->fe_eof) 0.00 : 554b80: 85 c9 test %ecx,%ecx 0.00 : 554b82: 7e f1 jle 554b75 0.00 : 554b84: 85 d2 test %edx,%edx 0.00 : 554b86: 7e ed jle 554b75 : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554b88: 31 db xor %ebx,%ebx : errmsg("unexpected EOF on client connection with an open transaction"))); : } : bytesread = minread; : break; : case COPY_NEW_FE: : while (maxread > 0 && bytesread < minread && !cstate->fe_eof) 0.00 : 554b8a: 80 7f 18 00 cmpb $0x0,0x18(%rdi) 0.00 : 554b8e: 66 90 xchg %ax,%ax 0.00 : 554b90: 75 e3 jne 554b75 : { : int avail; : : while (cstate->fe_msgbuf->cursor >= cstate->fe_msgbuf->len) 0.00 : 554b92: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 554b97: 8b 57 10 mov 0x10(%rdi),%edx 0.00 : 554b9a: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 554b9d: 39 c2 cmp %eax,%edx 0.00 : 554b9f: 0f 8c 43 01 00 00 jl 554ce8 : { : /* Try to receive another message */ : int mtype; : : readmessage: : mtype = pq_getbyte(); 0.00 : 554ba5: e8 46 75 08 00 callq 5dc0f0 : if (mtype == EOF) 0.00 : 554baa: 83 f8 ff cmp $0xffffffff,%eax : { : /* Try to receive another message */ : int mtype; : : readmessage: : mtype = pq_getbyte(); 0.00 : 554bad: 41 89 c5 mov %eax,%r13d : if (mtype == EOF) 0.00 : 554bb0: 0f 84 91 01 00 00 je 554d47 : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : if (pq_getmessage(cstate->fe_msgbuf, 0)) 0.00 : 554bb6: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 554bbb: 31 f6 xor %esi,%esi 0.00 : 554bbd: e8 3e 72 08 00 callq 5dbe00 0.00 : 554bc2: 85 c0 test %eax,%eax 0.00 : 554bc4: 0f 85 6b 01 00 00 jne 554d35 : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : switch (mtype) 0.00 : 554bca: 41 8d 45 b8 lea -0x48(%r13),%eax 0.00 : 554bce: 83 f8 1e cmp $0x1e,%eax 0.00 : 554bd1: 76 7d jbe 554c50 : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554bd3: 45 31 c0 xor %r8d,%r8d 0.00 : 554bd6: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554bdb: ba 83 02 00 00 mov $0x283,%edx 0.00 : 554be0: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554be5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554bea: e8 d1 5e 22 00 callq 77aac0 0.00 : 554bef: 84 c0 test %al,%al 0.00 : 554bf1: 0f 85 d9 00 00 00 jne 554cd0 0.00 : 554bf7: e8 d4 48 f1 ff callq 4694d0 0.00 : 554bfc: 0f 1f 40 00 nopl 0x0(%rax) : * because old protocol doesn't have any clear way of separating : * the COPY stream from following data. This is slow, but not any : * slower than the code path was originally, and we don't care : * much anymore about the performance of old protocol. : */ : if (pq_getbytes((char *) databuf, minread)) 0.00 : 554c00: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 554c04: 48 63 f2 movslq %edx,%rsi 0.00 : 554c07: 44 89 fb mov %r15d,%ebx 0.00 : 554c0a: e8 61 71 08 00 callq 5dbd70 0.00 : 554c0f: 85 c0 test %eax,%eax 0.00 : 554c11: 0f 84 39 ff ff ff je 554b50 : { : /* Only a \. terminator is legal EOF in old protocol */ : ereport(ERROR, 0.00 : 554c17: 45 31 c0 xor %r8d,%r8d 0.00 : 554c1a: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554c1f: ba 4f 02 00 00 mov $0x24f,%edx : if (mtype == EOF) : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : if (pq_getmessage(cstate->fe_msgbuf, 0)) : ereport(ERROR, 0.00 : 554c24: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554c29: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554c2e: e8 8d 5e 22 00 callq 77aac0 0.00 : 554c33: 84 c0 test %al,%al 0.00 : 554c35: 74 c0 je 554bf7 0.00 : 554c37: bf 00 8c 87 00 mov $0x878c00,%edi 0.00 : 554c3c: 31 c0 xor %eax,%eax 0.00 : 554c3e: e8 5d 7c 22 00 callq 77c8a0 0.00 : 554c43: bf 00 02 00 06 mov $0x6000200,%edi 0.00 : 554c48: 89 c3 mov %eax,%ebx 0.00 : 554c4a: eb 58 jmp 554ca4 0.00 : 554c4c: 0f 1f 40 00 nopl 0x0(%rax) : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : switch (mtype) 0.00 : 554c50: 89 c0 mov %eax,%eax 0.00 : 554c52: ff 24 c5 60 99 87 00 jmpq *0x879960(,%rax,8) 0.00 : 554c59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case 'c': /* CopyDone */ : /* COPY IN correctly terminated by frontend */ : cstate->fe_eof = true; : return bytesread; : case 'f': /* CopyFail */ : ereport(ERROR, 0.00 : 554c60: 45 31 c0 xor %r8d,%r8d 0.00 : 554c63: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554c68: ba 73 02 00 00 mov $0x273,%edx 0.00 : 554c6d: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554c72: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554c77: e8 44 5e 22 00 callq 77aac0 0.00 : 554c7c: 84 c0 test %al,%al 0.00 : 554c7e: 0f 84 73 ff ff ff je 554bf7 0.00 : 554c84: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 554c89: e8 02 83 08 00 callq 5dcf90 0.00 : 554c8e: bf df 88 87 00 mov $0x8788df,%edi 0.00 : 554c93: 48 89 c6 mov %rax,%rsi 0.00 : 554c96: 31 c0 xor %eax,%eax 0.00 : 554c98: e8 03 7c 22 00 callq 77c8a0 0.00 : 554c9d: bf c5 01 04 04 mov $0x40401c5,%edi 0.00 : 554ca2: 89 c3 mov %eax,%ebx : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554ca4: e8 a7 80 22 00 callq 77cd50 0.00 : 554ca9: 89 de mov %ebx,%esi 0.00 : 554cab: 89 c7 mov %eax,%edi 0.00 : 554cad: 31 c0 xor %eax,%eax 0.00 : 554caf: e8 2c 59 22 00 callq 77a5e0 0.00 : 554cb4: e9 3e ff ff ff jmpq 554bf7 0.00 : 554cb9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : case 'd': /* CopyData */ : break; : case 'c': /* CopyDone */ : /* COPY IN correctly terminated by frontend */ : cstate->fe_eof = true; 0.00 : 554cc0: 41 c6 44 24 18 01 movb $0x1,0x18(%r12) : } : break; : } : : return bytesread; : } 0.00 : 554cc6: e9 85 fe ff ff jmpq 554b50 0.00 : 554ccb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554cd0: bf 40 8c 87 00 mov $0x878c40,%edi 0.00 : 554cd5: 44 89 ee mov %r13d,%esi 0.00 : 554cd8: 31 c0 xor %eax,%eax 0.00 : 554cda: e8 c1 7b 22 00 callq 77c8a0 0.00 : 554cdf: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 554ce4: 89 c3 mov %eax,%ebx 0.00 : 554ce6: eb bc jmp 554ca4 : errmsg("unexpected message type 0x%02X during COPY from stdin", : mtype))); : break; : } : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; 0.00 : 554ce8: 29 d0 sub %edx,%eax 0.00 : 554cea: 45 89 f5 mov %r14d,%r13d : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); 0.00 : 554ced: 48 8b 75 d0 mov -0x30(%rbp),%rsi : errmsg("unexpected message type 0x%02X during COPY from stdin", : mtype))); : break; : } : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; 0.00 : 554cf1: 44 39 f0 cmp %r14d,%eax 0.00 : 554cf4: 44 0f 4e e8 cmovle %eax,%r13d : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); 0.00 : 554cf8: 44 89 ea mov %r13d,%edx : databuf = (void *) ((char *) databuf + avail); : maxread -= avail; 0.00 : 554cfb: 45 29 ee sub %r13d,%r14d : bytesread += avail; 0.00 : 554cfe: 44 01 eb add %r13d,%ebx : } : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); 0.00 : 554d01: e8 3a 84 08 00 callq 5dd140 : errmsg("unexpected EOF on client connection with an open transaction"))); : } : bytesread = minread; : break; : case COPY_NEW_FE: : while (maxread > 0 && bytesread < minread && !cstate->fe_eof) 0.00 : 554d06: 45 85 f6 test %r14d,%r14d 0.00 : 554d09: 0f 8e 41 fe ff ff jle 554b50 0.00 : 554d0f: 41 39 df cmp %ebx,%r15d 0.00 : 554d12: 0f 8e 38 fe ff ff jle 554b50 0.00 : 554d18: 41 80 7c 24 18 00 cmpb $0x0,0x18(%r12) 0.00 : 554d1e: 66 90 xchg %ax,%ax 0.00 : 554d20: 0f 85 2a fe ff ff jne 554b50 : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); : databuf = (void *) ((char *) databuf + avail); 0.00 : 554d26: 49 63 c5 movslq %r13d,%rax 0.00 : 554d29: 48 01 45 d0 add %rax,-0x30(%rbp) 0.00 : 554d2d: 0f 1f 00 nopl (%rax) 0.00 : 554d30: e9 5d fe ff ff jmpq 554b92 : if (mtype == EOF) : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : if (pq_getmessage(cstate->fe_msgbuf, 0)) : ereport(ERROR, 0.00 : 554d35: 45 31 c0 xor %r8d,%r8d 0.00 : 554d38: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554d3d: ba 66 02 00 00 mov $0x266,%edx 0.00 : 554d42: e9 dd fe ff ff jmpq 554c24 : int mtype; : : readmessage: : mtype = pq_getbyte(); : if (mtype == EOF) : ereport(ERROR, 0.00 : 554d47: 45 31 c0 xor %r8d,%r8d 0.00 : 554d4a: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554d4f: ba 62 02 00 00 mov $0x262,%edx 0.00 : 554d54: e9 cb fe ff ff jmpq 554c24 : switch (cstate->copy_dest) : { : case COPY_FILE: : bytesread = fread(databuf, 1, maxread, cstate->copy_file); : if (ferror(cstate->copy_file)) : ereport(ERROR, 0.00 : 554d59: 45 31 c0 xor %r8d,%r8d 0.00 : 554d5c: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554d61: ba 3f 02 00 00 mov $0x23f,%edx 0.00 : 554d66: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554d6b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554d70: e8 4b 5d 22 00 callq 77aac0 0.00 : 554d75: 84 c0 test %al,%al 0.00 : 554d77: 0f 84 7a fe ff ff je 554bf7 0.00 : 554d7d: bf d8 8b 87 00 mov $0x878bd8,%edi 0.00 : 554d82: 31 c0 xor %eax,%eax 0.00 : 554d84: e8 17 7b 22 00 callq 77c8a0 0.00 : 554d89: 89 c3 mov %eax,%ebx 0.00 : 554d8b: e8 60 7d 22 00 callq 77caf0 0.00 : 554d90: 89 de mov %ebx,%esi 0.00 : 554d92: 89 c7 mov %eax,%edi 0.00 : 554d94: 31 c0 xor %eax,%eax 0.00 : 554d96: e8 45 58 22 00 callq 77a5e0 0.00 : 554d9b: e9 57 fe ff ff jmpq 554bf7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execMain.c:578 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ab330 : : * : * See rewrite/rowsecurity.c. : */ : bool : ExecCheckRTPerms(List *rangeTable, bool ereport_on_violation) : { 0.00 : 5ab330: 55 push %rbp 0.00 : 5ab331: 48 89 e5 mov %rsp,%rbp 0.00 : 5ab334: 41 57 push %r15 0.00 : 5ab336: 41 56 push %r14 0.00 : 5ab338: 41 55 push %r13 0.00 : 5ab33a: 41 54 push %r12 0.00 : 5ab33c: 53 push %rbx 0.00 : 5ab33d: 48 83 ec 28 sub $0x28,%rsp : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5ab341: 48 85 ff test %rdi,%rdi 0.00 : 5ab344: 48 89 7d c0 mov %rdi,-0x40(%rbp) 0.00 : 5ab348: 40 88 75 bf mov %sil,-0x41(%rbp) 0.00 : 5ab34c: 0f 84 7f 00 00 00 je 5ab3d1 0.00 : 5ab352: 4c 8b 6f 08 mov 0x8(%rdi),%r13 : ListCell *l; : bool result = true; : : foreach(l, rangeTable) 0.00 : 5ab356: 4d 85 ed test %r13,%r13 0.00 : 5ab359: 74 76 je 5ab3d1 0.00 : 5ab35b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : RangeTblEntry *rte = (RangeTblEntry *) lfirst(l); 0.00 : 5ab360: 4d 8b 65 00 mov 0x0(%r13),%r12 : /* : * Only plain-relation RTEs need to be checked here. Function RTEs are : * checked by init_fcache when the function is prepared for execution. : * Join, subquery, and special RTEs need no checks. : */ : if (rte->rtekind != RTE_RELATION) 0.00 : 5ab364: 41 8b 74 24 04 mov 0x4(%r12),%esi 0.00 : 5ab369: 85 f6 test %esi,%esi 0.00 : 5ab36b: 75 5b jne 5ab3c8 : return true; : : /* : * No work if requiredPerms is empty. : */ : requiredPerms = rte->requiredPerms; 0.00 : 5ab36d: 41 8b 9c 24 84 00 00 mov 0x84(%r12),%ebx 0.00 : 5ab374: 00 : if (requiredPerms == 0) 0.00 : 5ab375: 85 db test %ebx,%ebx 0.00 : 5ab377: 74 4f je 5ab3c8 : * Note: GetUserId() is presently fast enough that there's no harm in : * calling it separately for each RTE. If that stops being true, we could : * call it once in ExecCheckRTPerms and pass the userid down from there. : * But for now, no need for the extra clutter. : */ : userid = rte->checkAsUser ? rte->checkAsUser : GetUserId(); 0.00 : 5ab379: 45 8b b4 24 88 00 00 mov 0x88(%r12),%r14d 0.00 : 5ab380: 00 : */ : requiredPerms = rte->requiredPerms; : if (requiredPerms == 0) : return true; : : relOid = rte->relid; 0.00 : 5ab381: 45 8b 7c 24 08 mov 0x8(%r12),%r15d : * Note: GetUserId() is presently fast enough that there's no harm in : * calling it separately for each RTE. If that stops being true, we could : * call it once in ExecCheckRTPerms and pass the userid down from there. : * But for now, no need for the extra clutter. : */ : userid = rte->checkAsUser ? rte->checkAsUser : GetUserId(); 0.00 : 5ab386: 45 85 f6 test %r14d,%r14d 0.00 : 5ab389: 0f 84 e1 00 00 00 je 5ab470 : /* : * We must have *all* the requiredPerms bits, but some of the bits can be : * satisfied from column-level rather than relation-level permissions. : * First, remove any bits that are satisfied by relation permissions. : */ : relPerms = pg_class_aclmask(relOid, userid, requiredPerms, ACLMASK_ALL); 0.00 : 5ab38f: 31 c9 xor %ecx,%ecx 0.00 : 5ab391: 89 da mov %ebx,%edx 0.00 : 5ab393: 44 89 f6 mov %r14d,%esi 0.00 : 5ab396: 44 89 ff mov %r15d,%edi 0.00 : 5ab399: e8 12 80 f4 ff callq 4f33b0 : remainingPerms = requiredPerms & ~relPerms; 0.00 : 5ab39e: f7 d0 not %eax : if (remainingPerms != 0) 0.00 : 5ab3a0: 21 c3 and %eax,%ebx 0.00 : 5ab3a2: 74 24 je 5ab3c8 : { : /* : * If we lack any permissions that exist only as relation permissions, : * we can fail straight away. : */ : if (remainingPerms & ~(ACL_SELECT | ACL_INSERT | ACL_UPDATE)) 0.00 : 5ab3a4: f7 c3 f8 ff ff ff test $0xfffffff8,%ebx 0.00 : 5ab3aa: 0f 85 80 00 00 00 jne 5ab430 : * : * Note: failures just report a table-level error; it would be nicer : * to report a column-level error if we have some but not all of the : * column privileges. : */ : if (remainingPerms & ACL_SELECT) 0.00 : 5ab3b0: f6 c3 02 test $0x2,%bl 0.00 : 5ab3b3: 0f 85 c7 00 00 00 jne 5ab480 : /* : * Basically the same for the mod columns, with either INSERT or : * UPDATE privilege as specified by remainingPerms. : */ : remainingPerms &= ~ACL_SELECT; : if (remainingPerms != 0) 0.00 : 5ab3b9: 83 e3 fd and $0xfffffffd,%ebx 0.00 : 5ab3bc: 89 5d d4 mov %ebx,-0x2c(%rbp) 0.00 : 5ab3bf: 90 nop 0.00 : 5ab3c0: 75 3e jne 5ab400 0.00 : 5ab3c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ExecCheckRTPerms(List *rangeTable, bool ereport_on_violation) : { : ListCell *l; : bool result = true; : : foreach(l, rangeTable) 0.00 : 5ab3c8: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 5ab3cc: 4d 85 ed test %r13,%r13 0.00 : 5ab3cf: 75 8f jne 5ab360 : get_rel_name(rte->relid)); : return false; : } : } : : if (ExecutorCheckPerms_hook) 0.00 : 5ab3d1: 48 8b 15 10 e5 5c 00 mov 0x5ce510(%rip),%rdx # b798e8 0.00 : 5ab3d8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5ab3dd: 48 85 d2 test %rdx,%rdx 0.00 : 5ab3e0: 74 7e je 5ab460 : result = (*ExecutorCheckPerms_hook) (rangeTable, 0.00 : 5ab3e2: 0f be 75 bf movsbl -0x41(%rbp),%esi 0.00 : 5ab3e6: 48 8b 7d c0 mov -0x40(%rbp),%rdi : ereport_on_violation); : return result; : } 0.00 : 5ab3ea: 48 83 c4 28 add $0x28,%rsp 0.00 : 5ab3ee: 5b pop %rbx 0.00 : 5ab3ef: 41 5c pop %r12 0.00 : 5ab3f1: 41 5d pop %r13 0.00 : 5ab3f3: 41 5e pop %r14 0.00 : 5ab3f5: 41 5f pop %r15 : return false; : } : } : : if (ExecutorCheckPerms_hook) : result = (*ExecutorCheckPerms_hook) (rangeTable, 0.00 : 5ab3f7: 49 89 d3 mov %rdx,%r11 : ereport_on_violation); : return result; : } 0.00 : 5ab3fa: c9 leaveq : return false; : } : } : : if (ExecutorCheckPerms_hook) : result = (*ExecutorCheckPerms_hook) (rangeTable, 0.00 : 5ab3fb: 41 ff e3 jmpq *%r11 0.00 : 5ab3fe: 66 90 xchg %ax,%ax : * When the query doesn't explicitly change any columns, allow the : * query if we have permission on any column of the rel. This is : * to handle SELECT FOR UPDATE as well as possible corner cases in : * INSERT and UPDATE. : */ : if (bms_is_empty(rte->modifiedCols)) 0.00 : 5ab400: 49 8b bc 24 98 00 00 mov 0x98(%r12),%rdi 0.00 : 5ab407: 00 0.00 : 5ab408: e8 43 77 03 00 callq 5e2b50 0.00 : 5ab40d: 84 c0 test %al,%al 0.00 : 5ab40f: 0f 84 23 01 00 00 je 5ab538 : { : if (pg_attribute_aclcheck_all(relOid, userid, remainingPerms, 0.00 : 5ab415: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 5ab418: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 5ab41d: 44 89 f6 mov %r14d,%esi 0.00 : 5ab420: 44 89 ff mov %r15d,%edi 0.00 : 5ab423: e8 f8 79 f4 ff callq 4f2e20 0.00 : 5ab428: 85 c0 test %eax,%eax 0.00 : 5ab42a: 0f 84 08 01 00 00 je 5ab538 : : result = ExecCheckRTEPerms(rte); : if (!result) : { : Assert(rte->rtekind == RTE_RELATION); : if (ereport_on_violation) 0.00 : 5ab430: 31 c0 xor %eax,%eax 0.00 : 5ab432: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 5ab436: 74 28 je 5ab460 : aclcheck_error(ACLCHECK_NO_PRIV, ACL_KIND_CLASS, 0.00 : 5ab438: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 5ab43d: e8 0e 76 1c 00 callq 772a50 0.00 : 5ab442: be 01 00 00 00 mov $0x1,%esi 0.00 : 5ab447: 48 89 c2 mov %rax,%rdx 0.00 : 5ab44a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5ab44f: e8 9c 82 f4 ff callq 4f36f0 0.00 : 5ab454: 31 c0 xor %eax,%eax 0.00 : 5ab456: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ab45d: 00 00 00 : : if (ExecutorCheckPerms_hook) : result = (*ExecutorCheckPerms_hook) (rangeTable, : ereport_on_violation); : return result; : } 0.00 : 5ab460: 48 83 c4 28 add $0x28,%rsp 0.00 : 5ab464: 5b pop %rbx 0.00 : 5ab465: 41 5c pop %r12 0.00 : 5ab467: 41 5d pop %r13 0.00 : 5ab469: 41 5e pop %r14 0.00 : 5ab46b: 41 5f pop %r15 0.00 : 5ab46d: c9 leaveq 0.00 : 5ab46e: c3 retq 0.00 : 5ab46f: 90 nop : * Note: GetUserId() is presently fast enough that there's no harm in : * calling it separately for each RTE. If that stops being true, we could : * call it once in ExecCheckRTPerms and pass the userid down from there. : * But for now, no need for the extra clutter. : */ : userid = rte->checkAsUser ? rte->checkAsUser : GetUserId(); /home/Computational/mark/src/postgres-andres/src/backend/executor/execMain.c:578 100.00 : 5ab470: e8 3b 9b 1d 00 callq 784fb0 0.00 : 5ab475: 41 89 c6 mov %eax,%r14d 0.00 : 5ab478: e9 12 ff ff ff jmpq 5ab38f 0.00 : 5ab47d: 0f 1f 00 nopl (%rax) : /* : * When the query doesn't explicitly reference any columns (for : * example, SELECT COUNT(*) FROM table), allow the query if we : * have SELECT on any column of the rel, as per SQL spec. : */ : if (bms_is_empty(rte->selectedCols)) 0.00 : 5ab480: 49 8b bc 24 90 00 00 mov 0x90(%r12),%rdi 0.00 : 5ab487: 00 0.00 : 5ab488: e8 c3 76 03 00 callq 5e2b50 0.00 : 5ab48d: 84 c0 test %al,%al 0.00 : 5ab48f: 75 7f jne 5ab510 : if (pg_attribute_aclcheck_all(relOid, userid, ACL_SELECT, : ACLMASK_ANY) != ACLCHECK_OK) : return false; : } : : tmpset = bms_copy(rte->selectedCols); 0.00 : 5ab491: 49 8b bc 24 90 00 00 mov 0x90(%r12),%rdi 0.00 : 5ab498: 00 0.00 : 5ab499: e8 62 7c 03 00 callq 5e3100 0.00 : 5ab49e: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 5ab4a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : while ((col = bms_first_member(tmpset)) >= 0) 0.00 : 5ab4a8: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5ab4ac: e8 2f 77 03 00 callq 5e2be0 0.00 : 5ab4b1: 85 c0 test %eax,%eax 0.00 : 5ab4b3: 78 2d js 5ab4e2 : { : /* remove the column number offset */ : col += FirstLowInvalidHeapAttributeNumber; : if (col == InvalidAttrNumber) 0.00 : 5ab4b5: 83 e8 08 sub $0x8,%eax 0.00 : 5ab4b8: 75 36 jne 5ab4f0 : { : /* Whole-row reference, must have priv on all cols */ : if (pg_attribute_aclcheck_all(relOid, userid, ACL_SELECT, 0.00 : 5ab4ba: 31 c9 xor %ecx,%ecx 0.00 : 5ab4bc: ba 02 00 00 00 mov $0x2,%edx 0.00 : 5ab4c1: 44 89 f6 mov %r14d,%esi 0.00 : 5ab4c4: 44 89 ff mov %r15d,%edi 0.00 : 5ab4c7: e8 54 79 f4 ff callq 4f2e20 0.00 : 5ab4cc: 85 c0 test %eax,%eax 0.00 : 5ab4ce: 0f 85 5c ff ff ff jne 5ab430 : ACLMASK_ANY) != ACLCHECK_OK) : return false; : } : : tmpset = bms_copy(rte->selectedCols); : while ((col = bms_first_member(tmpset)) >= 0) 0.00 : 5ab4d4: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5ab4d8: e8 03 77 03 00 callq 5e2be0 0.00 : 5ab4dd: 85 c0 test %eax,%eax 0.00 : 5ab4df: 90 nop 0.00 : 5ab4e0: 79 d3 jns 5ab4b5 : if (pg_attribute_aclcheck(relOid, col, userid, : ACL_SELECT) != ACLCHECK_OK) : return false; : } : } : bms_free(tmpset); 0.00 : 5ab4e2: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5ab4e6: e8 c5 78 03 00 callq 5e2db0 0.00 : 5ab4eb: e9 c9 fe ff ff jmpq 5ab3b9 : ACLMASK_ALL) != ACLCHECK_OK) : return false; : } : else : { : if (pg_attribute_aclcheck(relOid, col, userid, 0.00 : 5ab4f0: 0f bf f0 movswl %ax,%esi 0.00 : 5ab4f3: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 5ab4f8: 44 89 f2 mov %r14d,%edx 0.00 : 5ab4fb: 44 89 ff mov %r15d,%edi 0.00 : 5ab4fe: e8 5d 7a f4 ff callq 4f2f60 0.00 : 5ab503: 85 c0 test %eax,%eax 0.00 : 5ab505: 74 a1 je 5ab4a8 0.00 : 5ab507: e9 24 ff ff ff jmpq 5ab430 0.00 : 5ab50c: 0f 1f 40 00 nopl 0x0(%rax) : * example, SELECT COUNT(*) FROM table), allow the query if we : * have SELECT on any column of the rel, as per SQL spec. : */ : if (bms_is_empty(rte->selectedCols)) : { : if (pg_attribute_aclcheck_all(relOid, userid, ACL_SELECT, 0.00 : 5ab510: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 5ab515: ba 02 00 00 00 mov $0x2,%edx 0.00 : 5ab51a: 44 89 f6 mov %r14d,%esi 0.00 : 5ab51d: 44 89 ff mov %r15d,%edi 0.00 : 5ab520: e8 fb 78 f4 ff callq 4f2e20 0.00 : 5ab525: 85 c0 test %eax,%eax 0.00 : 5ab527: 0f 84 64 ff ff ff je 5ab491 0.00 : 5ab52d: e9 fe fe ff ff jmpq 5ab430 0.00 : 5ab532: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (pg_attribute_aclcheck_all(relOid, userid, remainingPerms, : ACLMASK_ANY) != ACLCHECK_OK) : return false; : } : : tmpset = bms_copy(rte->modifiedCols); 0.00 : 5ab538: 49 8b bc 24 98 00 00 mov 0x98(%r12),%rdi 0.00 : 5ab53f: 00 0.00 : 5ab540: e8 bb 7b 03 00 callq 5e3100 0.00 : 5ab545: 48 89 c3 mov %rax,%rbx 0.00 : 5ab548: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ab54f: 00 : while ((col = bms_first_member(tmpset)) >= 0) 0.00 : 5ab550: 48 89 df mov %rbx,%rdi 0.00 : 5ab553: e8 88 76 03 00 callq 5e2be0 0.00 : 5ab558: 85 c0 test %eax,%eax 0.00 : 5ab55a: 78 2b js 5ab587 : { : /* remove the column number offset */ : col += FirstLowInvalidHeapAttributeNumber; : if (col == InvalidAttrNumber) 0.00 : 5ab55c: 83 e8 08 sub $0x8,%eax 0.00 : 5ab55f: 74 34 je 5ab595 : /* whole-row reference can't happen here */ : elog(ERROR, "whole-row update is not implemented"); : } : else : { : if (pg_attribute_aclcheck(relOid, col, userid, 0.00 : 5ab561: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.00 : 5ab564: 0f bf f0 movswl %ax,%esi 0.00 : 5ab567: 44 89 f2 mov %r14d,%edx 0.00 : 5ab56a: 44 89 ff mov %r15d,%edi 0.00 : 5ab56d: e8 ee 79 f4 ff callq 4f2f60 0.00 : 5ab572: 85 c0 test %eax,%eax 0.00 : 5ab574: 74 da je 5ab550 : : result = ExecCheckRTEPerms(rte); : if (!result) : { : Assert(rte->rtekind == RTE_RELATION); : if (ereport_on_violation) 0.00 : 5ab576: 31 c0 xor %eax,%eax 0.00 : 5ab578: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 5ab57c: 0f 84 de fe ff ff je 5ab460 0.00 : 5ab582: e9 b1 fe ff ff jmpq 5ab438 : if (pg_attribute_aclcheck(relOid, col, userid, : remainingPerms) != ACLCHECK_OK) : return false; : } : } : bms_free(tmpset); 0.00 : 5ab587: 48 89 df mov %rbx,%rdi 0.00 : 5ab58a: e8 21 78 03 00 callq 5e2db0 0.00 : 5ab58f: 90 nop 0.00 : 5ab590: e9 33 fe ff ff jmpq 5ab3c8 : /* remove the column number offset */ : col += FirstLowInvalidHeapAttributeNumber; : if (col == InvalidAttrNumber) : { : /* whole-row reference can't happen here */ : elog(ERROR, "whole-row update is not implemented"); 0.00 : 5ab595: ba 20 a0 88 00 mov $0x88a020,%edx 0.00 : 5ab59a: be 9b 02 00 00 mov $0x29b,%esi 0.00 : 5ab59f: bf 96 96 88 00 mov $0x889696,%edi 0.00 : 5ab5a4: e8 77 fe 1c 00 callq 77b420 0.00 : 5ab5a9: be 00 9c 88 00 mov $0x889c00,%esi 0.00 : 5ab5ae: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ab5b3: 31 c0 xor %eax,%eax 0.00 : 5ab5b5: e8 76 fc 1c 00 callq 77b230 0.00 : 5ab5ba: e8 11 df eb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:743 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ac150 : : * the query plan has been fully executed. : * ---------------------------------------------------------------- : */ : void : ExecEndNode(PlanState *node) : { 0.00 : 5ac150: 55 push %rbp 0.00 : 5ac151: 48 89 e5 mov %rsp,%rbp 0.00 : 5ac154: 53 push %rbx 0.00 : 5ac155: 48 89 fb mov %rdi,%rbx 0.00 : 5ac158: 48 83 ec 08 sub $0x8,%rsp : /* : * do nothing when we get to the end of a leaf on tree. : */ : if (node == NULL) 0.00 : 5ac15c: 48 85 ff test %rdi,%rdi 0.00 : 5ac15f: 74 5f je 5ac1c0 : return; : : if (node->chgParam != NULL) 0.00 : 5ac161: 48 8b 7f 50 mov 0x50(%rdi),%rdi 0.00 : 5ac165: 48 85 ff test %rdi,%rdi 0.00 : 5ac168: 74 0d je 5ac177 : { : bms_free(node->chgParam); 0.00 : 5ac16a: e8 41 6c 03 00 callq 5e2db0 : node->chgParam = NULL; 0.00 : 5ac16f: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 5ac176: 00 : } : : switch (nodeTag(node)) 0.00 : 5ac177: 8b 03 mov (%rbx),%eax 0.00 : 5ac179: 2d c9 00 00 00 sub $0xc9,%eax 0.00 : 5ac17e: 83 f8 21 cmp $0x21,%eax 0.00 : 5ac181: 76 2d jbe 5ac1b0 : case T_LimitState: : ExecEndLimit((LimitState *) node); : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); 0.00 : 5ac183: ba c0 a3 88 00 mov $0x88a3c0,%edx 0.00 : 5ac188: be e4 02 00 00 mov $0x2e4,%esi 0.00 : 5ac18d: bf 75 a0 88 00 mov $0x88a075,%edi 0.00 : 5ac192: e8 89 f2 1c 00 callq 77b420 0.00 : 5ac197: 8b 13 mov (%rbx),%edx 0.00 : 5ac199: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5ac19e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ac1a3: 31 c0 xor %eax,%eax 0.00 : 5ac1a5: e8 86 f0 1c 00 callq 77b230 0.00 : 5ac1aa: e8 21 d3 eb ff callq 4694d0 0.00 : 5ac1af: 90 nop : { : bms_free(node->chgParam); : node->chgParam = NULL; : } : : switch (nodeTag(node)) 0.00 : 5ac1b0: 89 c0 mov %eax,%eax 0.00 : 5ac1b2: ff 24 c5 90 a0 88 00 jmpq *0x88a090(,%rax,8) 0.00 : 5ac1b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac1c0: 48 83 c4 08 add $0x8,%rsp 0.00 : 5ac1c4: 5b pop %rbx 0.00 : 5ac1c5: c9 leaveq 0.00 : 5ac1c6: c3 retq 0.00 : 5ac1c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ac1ce: 00 00 0.00 : 5ac1d0: 48 83 c4 08 add $0x8,%rsp : { : /* : * control nodes : */ : case T_ResultState: : ExecEndResult((ResultState *) node); 0.00 : 5ac1d4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac1d7: 5b pop %rbx 0.00 : 5ac1d8: c9 leaveq : { : /* : * control nodes : */ : case T_ResultState: : ExecEndResult((ResultState *) node); 0.00 : 5ac1d9: e9 c2 92 01 00 jmpq 5c54a0 0.00 : 5ac1de: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:743 100.00 : 5ac1e0: 48 83 c4 08 add $0x8,%rsp : case T_ResultState: : ExecEndResult((ResultState *) node); : break; : : case T_ModifyTableState: : ExecEndModifyTable((ModifyTableState *) node); 0.00 : 5ac1e4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac1e7: 5b pop %rbx 0.00 : 5ac1e8: c9 leaveq : case T_ResultState: : ExecEndResult((ResultState *) node); : break; : : case T_ModifyTableState: : ExecEndModifyTable((ModifyTableState *) node); 0.00 : 5ac1e9: e9 e2 65 01 00 jmpq 5c27d0 0.00 : 5ac1ee: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac1f0: 48 83 c4 08 add $0x8,%rsp : case T_ModifyTableState: : ExecEndModifyTable((ModifyTableState *) node); : break; : : case T_AppendState: : ExecEndAppend((AppendState *) node); 0.00 : 5ac1f4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac1f7: 5b pop %rbx 0.00 : 5ac1f8: c9 leaveq : case T_ModifyTableState: : ExecEndModifyTable((ModifyTableState *) node); : break; : : case T_AppendState: : ExecEndAppend((AppendState *) node); 0.00 : 5ac1f9: e9 32 bf 00 00 jmpq 5b8130 0.00 : 5ac1fe: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac200: 48 83 c4 08 add $0x8,%rsp : case T_AppendState: : ExecEndAppend((AppendState *) node); : break; : : case T_MergeAppendState: : ExecEndMergeAppend((MergeAppendState *) node); 0.00 : 5ac204: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac207: 5b pop %rbx 0.00 : 5ac208: c9 leaveq : case T_AppendState: : ExecEndAppend((AppendState *) node); : break; : : case T_MergeAppendState: : ExecEndMergeAppend((MergeAppendState *) node); 0.00 : 5ac209: e9 72 4d 01 00 jmpq 5c0f80 0.00 : 5ac20e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac210: 48 83 c4 08 add $0x8,%rsp : case T_MergeAppendState: : ExecEndMergeAppend((MergeAppendState *) node); : break; : : case T_RecursiveUnionState: : ExecEndRecursiveUnion((RecursiveUnionState *) node); 0.00 : 5ac214: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac217: 5b pop %rbx 0.00 : 5ac218: c9 leaveq : case T_MergeAppendState: : ExecEndMergeAppend((MergeAppendState *) node); : break; : : case T_RecursiveUnionState: : ExecEndRecursiveUnion((RecursiveUnionState *) node); 0.00 : 5ac219: e9 72 8e 01 00 jmpq 5c5090 0.00 : 5ac21e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac220: 48 83 c4 08 add $0x8,%rsp : case T_RecursiveUnionState: : ExecEndRecursiveUnion((RecursiveUnionState *) node); : break; : : case T_BitmapAndState: : ExecEndBitmapAnd((BitmapAndState *) node); 0.00 : 5ac224: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac227: 5b pop %rbx 0.00 : 5ac228: c9 leaveq : case T_RecursiveUnionState: : ExecEndRecursiveUnion((RecursiveUnionState *) node); : break; : : case T_BitmapAndState: : ExecEndBitmapAnd((BitmapAndState *) node); 0.00 : 5ac229: e9 d2 e4 00 00 jmpq 5ba700 0.00 : 5ac22e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac230: 48 83 c4 08 add $0x8,%rsp : case T_BitmapAndState: : ExecEndBitmapAnd((BitmapAndState *) node); : break; : : case T_BitmapOrState: : ExecEndBitmapOr((BitmapOrState *) node); 0.00 : 5ac234: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac237: 5b pop %rbx 0.00 : 5ac238: c9 leaveq : case T_BitmapAndState: : ExecEndBitmapAnd((BitmapAndState *) node); : break; : : case T_BitmapOrState: : ExecEndBitmapOr((BitmapOrState *) node); 0.00 : 5ac239: e9 82 e7 00 00 jmpq 5ba9c0 0.00 : 5ac23e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac240: 48 83 c4 08 add $0x8,%rsp : : /* : * scan nodes : */ : case T_SeqScanState: : ExecEndSeqScan((SeqScanState *) node); 0.00 : 5ac244: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac247: 5b pop %rbx 0.00 : 5ac248: c9 leaveq : : /* : * scan nodes : */ : case T_SeqScanState: : ExecEndSeqScan((SeqScanState *) node); 0.00 : 5ac249: e9 72 95 01 00 jmpq 5c57c0 0.00 : 5ac24e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac250: 48 83 c4 08 add $0x8,%rsp : case T_SeqScanState: : ExecEndSeqScan((SeqScanState *) node); : break; : : case T_IndexScanState: : ExecEndIndexScan((IndexScanState *) node); 0.00 : 5ac254: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac257: 5b pop %rbx 0.00 : 5ac258: c9 leaveq : case T_SeqScanState: : ExecEndSeqScan((SeqScanState *) node); : break; : : case T_IndexScanState: : ExecEndIndexScan((IndexScanState *) node); 0.00 : 5ac259: e9 72 2f 01 00 jmpq 5bf1d0 0.00 : 5ac25e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac260: 48 83 c4 08 add $0x8,%rsp : case T_IndexScanState: : ExecEndIndexScan((IndexScanState *) node); : break; : : case T_IndexOnlyScanState: : ExecEndIndexOnlyScan((IndexOnlyScanState *) node); 0.00 : 5ac264: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac267: 5b pop %rbx 0.00 : 5ac268: c9 leaveq : case T_IndexScanState: : ExecEndIndexScan((IndexScanState *) node); : break; : : case T_IndexOnlyScanState: : ExecEndIndexOnlyScan((IndexOnlyScanState *) node); 0.00 : 5ac269: e9 e2 36 01 00 jmpq 5bf950 0.00 : 5ac26e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac270: 48 83 c4 08 add $0x8,%rsp : case T_IndexOnlyScanState: : ExecEndIndexOnlyScan((IndexOnlyScanState *) node); : break; : : case T_BitmapIndexScanState: : ExecEndBitmapIndexScan((BitmapIndexScanState *) node); 0.00 : 5ac274: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac277: 5b pop %rbx 0.00 : 5ac278: c9 leaveq : case T_IndexOnlyScanState: : ExecEndIndexOnlyScan((IndexOnlyScanState *) node); : break; : : case T_BitmapIndexScanState: : ExecEndBitmapIndexScan((BitmapIndexScanState *) node); 0.00 : 5ac279: e9 f2 f5 00 00 jmpq 5bb870 0.00 : 5ac27e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac280: 48 83 c4 08 add $0x8,%rsp : case T_BitmapIndexScanState: : ExecEndBitmapIndexScan((BitmapIndexScanState *) node); : break; : : case T_BitmapHeapScanState: : ExecEndBitmapHeapScan((BitmapHeapScanState *) node); 0.00 : 5ac284: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac287: 5b pop %rbx 0.00 : 5ac288: c9 leaveq : case T_BitmapIndexScanState: : ExecEndBitmapIndexScan((BitmapIndexScanState *) node); : break; : : case T_BitmapHeapScanState: : ExecEndBitmapHeapScan((BitmapHeapScanState *) node); 0.00 : 5ac289: e9 42 eb 00 00 jmpq 5badd0 0.00 : 5ac28e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac290: 48 83 c4 08 add $0x8,%rsp : case T_BitmapHeapScanState: : ExecEndBitmapHeapScan((BitmapHeapScanState *) node); : break; : : case T_TidScanState: : ExecEndTidScan((TidScanState *) node); 0.00 : 5ac294: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac297: 5b pop %rbx 0.00 : 5ac298: c9 leaveq : case T_BitmapHeapScanState: : ExecEndBitmapHeapScan((BitmapHeapScanState *) node); : break; : : case T_TidScanState: : ExecEndTidScan((TidScanState *) node); 0.00 : 5ac299: e9 d2 cd 01 00 jmpq 5c9070 0.00 : 5ac29e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2a0: 48 83 c4 08 add $0x8,%rsp : case T_TidScanState: : ExecEndTidScan((TidScanState *) node); : break; : : case T_SubqueryScanState: : ExecEndSubqueryScan((SubqueryScanState *) node); 0.00 : 5ac2a4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2a7: 5b pop %rbx 0.00 : 5ac2a8: c9 leaveq : case T_TidScanState: : ExecEndTidScan((TidScanState *) node); : break; : : case T_SubqueryScanState: : ExecEndSubqueryScan((SubqueryScanState *) node); 0.00 : 5ac2a9: e9 a2 ca 01 00 jmpq 5c8d50 0.00 : 5ac2ae: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2b0: 48 83 c4 08 add $0x8,%rsp : case T_SubqueryScanState: : ExecEndSubqueryScan((SubqueryScanState *) node); : break; : : case T_FunctionScanState: : ExecEndFunctionScan((FunctionScanState *) node); 0.00 : 5ac2b4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2b7: 5b pop %rbx 0.00 : 5ac2b8: c9 leaveq : case T_SubqueryScanState: : ExecEndSubqueryScan((SubqueryScanState *) node); : break; : : case T_FunctionScanState: : ExecEndFunctionScan((FunctionScanState *) node); 0.00 : 5ac2b9: e9 02 84 01 00 jmpq 5c46c0 0.00 : 5ac2be: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2c0: 48 83 c4 08 add $0x8,%rsp : case T_FunctionScanState: : ExecEndFunctionScan((FunctionScanState *) node); : break; : : case T_ValuesScanState: : ExecEndValuesScan((ValuesScanState *) node); 0.00 : 5ac2c4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2c7: 5b pop %rbx 0.00 : 5ac2c8: c9 leaveq : case T_FunctionScanState: : ExecEndFunctionScan((FunctionScanState *) node); : break; : : case T_ValuesScanState: : ExecEndValuesScan((ValuesScanState *) node); 0.00 : 5ac2c9: e9 22 a4 01 00 jmpq 5c66f0 0.00 : 5ac2ce: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2d0: 48 83 c4 08 add $0x8,%rsp : case T_ValuesScanState: : ExecEndValuesScan((ValuesScanState *) node); : break; : : case T_CteScanState: : ExecEndCteScan((CteScanState *) node); 0.00 : 5ac2d4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2d7: 5b pop %rbx 0.00 : 5ac2d8: c9 leaveq : case T_ValuesScanState: : ExecEndValuesScan((ValuesScanState *) node); : break; : : case T_CteScanState: : ExecEndCteScan((CteScanState *) node); 0.00 : 5ac2d9: e9 c2 a7 01 00 jmpq 5c6aa0 0.00 : 5ac2de: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2e0: 48 83 c4 08 add $0x8,%rsp : case T_CteScanState: : ExecEndCteScan((CteScanState *) node); : break; : : case T_WorkTableScanState: : ExecEndWorkTableScan((WorkTableScanState *) node); 0.00 : 5ac2e4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2e7: 5b pop %rbx 0.00 : 5ac2e8: c9 leaveq : case T_CteScanState: : ExecEndCteScan((CteScanState *) node); : break; : : case T_WorkTableScanState: : ExecEndWorkTableScan((WorkTableScanState *) node); 0.00 : 5ac2e9: e9 82 ab 01 00 jmpq 5c6e70 0.00 : 5ac2ee: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2f0: 48 83 c4 08 add $0x8,%rsp : case T_WorkTableScanState: : ExecEndWorkTableScan((WorkTableScanState *) node); : break; : : case T_ForeignScanState: : ExecEndForeignScan((ForeignScanState *) node); 0.00 : 5ac2f4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac2f7: 5b pop %rbx 0.00 : 5ac2f8: c9 leaveq : case T_WorkTableScanState: : ExecEndWorkTableScan((WorkTableScanState *) node); : break; : : case T_ForeignScanState: : ExecEndForeignScan((ForeignScanState *) node); 0.00 : 5ac2f9: e9 f2 d4 01 00 jmpq 5c97f0 0.00 : 5ac2fe: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac300: 48 83 c4 08 add $0x8,%rsp : : /* : * join nodes : */ : case T_NestLoopState: : ExecEndNestLoop((NestLoopState *) node); 0.00 : 5ac304: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac307: 5b pop %rbx 0.00 : 5ac308: c9 leaveq : : /* : * join nodes : */ : case T_NestLoopState: : ExecEndNestLoop((NestLoopState *) node); 0.00 : 5ac309: e9 82 7d 01 00 jmpq 5c4090 0.00 : 5ac30e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac310: 48 83 c4 08 add $0x8,%rsp : case T_NestLoopState: : ExecEndNestLoop((NestLoopState *) node); : break; : : case T_MergeJoinState: : ExecEndMergeJoin((MergeJoinState *) node); 0.00 : 5ac314: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac317: 5b pop %rbx 0.00 : 5ac318: c9 leaveq : case T_NestLoopState: : ExecEndNestLoop((NestLoopState *) node); : break; : : case T_MergeJoinState: : ExecEndMergeJoin((MergeJoinState *) node); 0.00 : 5ac319: e9 72 51 01 00 jmpq 5c1490 0.00 : 5ac31e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac320: 48 83 c4 08 add $0x8,%rsp : case T_MergeJoinState: : ExecEndMergeJoin((MergeJoinState *) node); : break; : : case T_HashJoinState: : ExecEndHashJoin((HashJoinState *) node); 0.00 : 5ac324: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac327: 5b pop %rbx 0.00 : 5ac328: c9 leaveq : case T_MergeJoinState: : ExecEndMergeJoin((MergeJoinState *) node); : break; : : case T_HashJoinState: : ExecEndHashJoin((HashJoinState *) node); 0.00 : 5ac329: e9 02 13 01 00 jmpq 5bd630 0.00 : 5ac32e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac330: 48 83 c4 08 add $0x8,%rsp : : /* : * materialization nodes : */ : case T_MaterialState: : ExecEndMaterial((MaterialState *) node); 0.00 : 5ac334: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac337: 5b pop %rbx 0.00 : 5ac338: c9 leaveq : : /* : * materialization nodes : */ : case T_MaterialState: : ExecEndMaterial((MaterialState *) node); 0.00 : 5ac339: e9 e2 48 01 00 jmpq 5c0c20 0.00 : 5ac33e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac340: 48 83 c4 08 add $0x8,%rsp : case T_MaterialState: : ExecEndMaterial((MaterialState *) node); : break; : : case T_SortState: : ExecEndSort((SortState *) node); 0.00 : 5ac344: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac347: 5b pop %rbx 0.00 : 5ac348: c9 leaveq : case T_MaterialState: : ExecEndMaterial((MaterialState *) node); : break; : : case T_SortState: : ExecEndSort((SortState *) node); 0.00 : 5ac349: e9 d2 9e 01 00 jmpq 5c6220 0.00 : 5ac34e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac350: 48 83 c4 08 add $0x8,%rsp : case T_SortState: : ExecEndSort((SortState *) node); : break; : : case T_GroupState: : ExecEndGroup((GroupState *) node); 0.00 : 5ac354: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac357: 5b pop %rbx 0.00 : 5ac358: c9 leaveq : case T_SortState: : ExecEndSort((SortState *) node); : break; : : case T_GroupState: : ExecEndGroup((GroupState *) node); 0.00 : 5ac359: e9 f2 ac 01 00 jmpq 5c7050 0.00 : 5ac35e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac360: 48 83 c4 08 add $0x8,%rsp : case T_GroupState: : ExecEndGroup((GroupState *) node); : break; : : case T_AggState: : ExecEndAgg((AggState *) node); 0.00 : 5ac364: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac367: 5b pop %rbx 0.00 : 5ac368: c9 leaveq : case T_GroupState: : ExecEndGroup((GroupState *) node); : break; : : case T_AggState: : ExecEndAgg((AggState *) node); 0.00 : 5ac369: e9 02 c4 00 00 jmpq 5b8770 0.00 : 5ac36e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac370: 48 83 c4 08 add $0x8,%rsp : case T_AggState: : ExecEndAgg((AggState *) node); : break; : : case T_WindowAggState: : ExecEndWindowAgg((WindowAggState *) node); 0.00 : 5ac374: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac377: 5b pop %rbx 0.00 : 5ac378: c9 leaveq : case T_AggState: : ExecEndAgg((AggState *) node); : break; : : case T_WindowAggState: : ExecEndWindowAgg((WindowAggState *) node); 0.00 : 5ac379: e9 32 e9 01 00 jmpq 5cacb0 0.00 : 5ac37e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac380: 48 83 c4 08 add $0x8,%rsp : case T_WindowAggState: : ExecEndWindowAgg((WindowAggState *) node); : break; : : case T_UniqueState: : ExecEndUnique((UniqueState *) node); 0.00 : 5ac384: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac387: 5b pop %rbx 0.00 : 5ac388: c9 leaveq : case T_WindowAggState: : ExecEndWindowAgg((WindowAggState *) node); : break; : : case T_UniqueState: : ExecEndUnique((UniqueState *) node); 0.00 : 5ac389: e9 52 a1 01 00 jmpq 5c64e0 0.00 : 5ac38e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac390: 48 83 c4 08 add $0x8,%rsp : case T_UniqueState: : ExecEndUnique((UniqueState *) node); : break; : : case T_HashState: : ExecEndHash((HashState *) node); 0.00 : 5ac394: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac397: 5b pop %rbx 0.00 : 5ac398: c9 leaveq : case T_UniqueState: : ExecEndUnique((UniqueState *) node); : break; : : case T_HashState: : ExecEndHash((HashState *) node); 0.00 : 5ac399: e9 a2 0b 01 00 jmpq 5bcf40 0.00 : 5ac39e: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac3a0: 48 83 c4 08 add $0x8,%rsp : case T_HashState: : ExecEndHash((HashState *) node); : break; : : case T_SetOpState: : ExecEndSetOp((SetOpState *) node); 0.00 : 5ac3a4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac3a7: 5b pop %rbx 0.00 : 5ac3a8: c9 leaveq : case T_HashState: : ExecEndHash((HashState *) node); : break; : : case T_SetOpState: : ExecEndSetOp((SetOpState *) node); 0.00 : 5ac3a9: e9 12 97 01 00 jmpq 5c5ac0 0.00 : 5ac3ae: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac3b0: 48 83 c4 08 add $0x8,%rsp : case T_SetOpState: : ExecEndSetOp((SetOpState *) node); : break; : : case T_LockRowsState: : ExecEndLockRows((LockRowsState *) node); 0.00 : 5ac3b4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac3b7: 5b pop %rbx 0.00 : 5ac3b8: c9 leaveq : case T_SetOpState: : ExecEndSetOp((SetOpState *) node); : break; : : case T_LockRowsState: : ExecEndLockRows((LockRowsState *) node); 0.00 : 5ac3b9: e9 e2 40 01 00 jmpq 5c04a0 0.00 : 5ac3be: 66 90 xchg %ax,%ax : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac3c0: 48 83 c4 08 add $0x8,%rsp : case T_LockRowsState: : ExecEndLockRows((LockRowsState *) node); : break; : : case T_LimitState: : ExecEndLimit((LimitState *) node); 0.00 : 5ac3c4: 48 89 df mov %rbx,%rdi : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 5ac3c7: 5b pop %rbx 0.00 : 5ac3c8: c9 leaveq : case T_LockRowsState: : ExecEndLockRows((LockRowsState *) node); : break; : : case T_LimitState: : ExecEndLimit((LimitState *) node); 0.00 : 5ac3c9: e9 22 3d 01 00 jmpq 5c00f0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:531 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ac3d0 : : * function must provide its own instrumentation support. : * ---------------------------------------------------------------- : */ : Node * : MultiExecProcNode(PlanState *node) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execProcnode.c:531 100.00 : 5ac3d0: 55 push %rbp 0.00 : 5ac3d1: 48 89 e5 mov %rsp,%rbp 0.00 : 5ac3d4: 53 push %rbx 0.00 : 5ac3d5: 48 89 fb mov %rdi,%rbx 0.00 : 5ac3d8: 48 83 ec 08 sub $0x8,%rsp : Node *result; : : CHECK_FOR_INTERRUPTS(); 0.00 : 5ac3dc: 0f b6 05 ad dc 60 00 movzbl 0x60dcad(%rip),%eax # bba090 0.00 : 5ac3e3: 84 c0 test %al,%al 0.00 : 5ac3e5: 75 71 jne 5ac458 : : if (node->chgParam != NULL) /* something changed */ 0.00 : 5ac3e7: 48 83 7b 50 00 cmpq $0x0,0x50(%rbx) 0.00 : 5ac3ec: 74 08 je 5ac3f6 : ExecReScan(node); /* let ReScan handle this */ 0.00 : 5ac3ee: 48 89 df mov %rbx,%rdi 0.00 : 5ac3f1: e8 aa c0 ff ff callq 5a84a0 : : switch (nodeTag(node)) 0.00 : 5ac3f6: 8b 03 mov (%rbx),%eax 0.00 : 5ac3f8: 3d cf 00 00 00 cmp $0xcf,%eax 0.00 : 5ac3fd: 74 69 je 5ac468 0.00 : 5ac3ff: 90 nop 0.00 : 5ac400: 76 1e jbe 5ac420 0.00 : 5ac402: 3d d4 00 00 00 cmp $0xd4,%eax 0.00 : 5ac407: 74 77 je 5ac480 0.00 : 5ac409: 3d e7 00 00 00 cmp $0xe7,%eax 0.00 : 5ac40e: 66 90 xchg %ax,%ax 0.00 : 5ac410: 75 15 jne 5ac427 : result = NULL; : break; : } : : return result; : } 0.00 : 5ac412: 48 83 c4 08 add $0x8,%rsp : /* : * Only node types that actually support multiexec will be listed : */ : : case T_HashState: : result = MultiExecHash((HashState *) node); 0.00 : 5ac416: 48 89 df mov %rbx,%rdi : result = NULL; : break; : } : : return result; : } 0.00 : 5ac419: 5b pop %rbx 0.00 : 5ac41a: c9 leaveq : /* : * Only node types that actually support multiexec will be listed : */ : : case T_HashState: : result = MultiExecHash((HashState *) node); 0.00 : 5ac41b: e9 10 0c 01 00 jmpq 5bd030 : CHECK_FOR_INTERRUPTS(); : : if (node->chgParam != NULL) /* something changed */ : ExecReScan(node); /* let ReScan handle this */ : : switch (nodeTag(node)) 0.00 : 5ac420: 3d ce 00 00 00 cmp $0xce,%eax 0.00 : 5ac425: 74 69 je 5ac490 : case T_BitmapOrState: : result = MultiExecBitmapOr((BitmapOrState *) node); : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); 0.00 : 5ac427: ba d0 a3 88 00 mov $0x88a3d0,%edx 0.00 : 5ac42c: be 32 02 00 00 mov $0x232,%esi 0.00 : 5ac431: bf 75 a0 88 00 mov $0x88a075,%edi 0.00 : 5ac436: e8 e5 ef 1c 00 callq 77b420 0.00 : 5ac43b: 8b 13 mov (%rbx),%edx 0.00 : 5ac43d: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5ac442: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ac447: 31 c0 xor %eax,%eax 0.00 : 5ac449: e8 e2 ed 1c 00 callq 77b230 0.00 : 5ac44e: e8 7d d0 eb ff callq 4694d0 0.00 : 5ac453: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Node * : MultiExecProcNode(PlanState *node) : { : Node *result; : : CHECK_FOR_INTERRUPTS(); 0.00 : 5ac458: e8 43 fe 0e 00 callq 69c2a0 0.00 : 5ac45d: 0f 1f 00 nopl (%rax) 0.00 : 5ac460: eb 85 jmp 5ac3e7 0.00 : 5ac462: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : result = NULL; : break; : } : : return result; : } 0.00 : 5ac468: 48 83 c4 08 add $0x8,%rsp : case T_BitmapAndState: : result = MultiExecBitmapAnd((BitmapAndState *) node); : break; : : case T_BitmapOrState: : result = MultiExecBitmapOr((BitmapOrState *) node); 0.00 : 5ac46c: 48 89 df mov %rbx,%rdi : result = NULL; : break; : } : : return result; : } 0.00 : 5ac46f: 5b pop %rbx 0.00 : 5ac470: c9 leaveq : case T_BitmapAndState: : result = MultiExecBitmapAnd((BitmapAndState *) node); : break; : : case T_BitmapOrState: : result = MultiExecBitmapOr((BitmapOrState *) node); 0.00 : 5ac471: e9 9a e5 00 00 jmpq 5baa10 0.00 : 5ac476: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ac47d: 00 00 00 : result = NULL; : break; : } : : return result; : } 0.00 : 5ac480: 48 83 c4 08 add $0x8,%rsp : case T_HashState: : result = MultiExecHash((HashState *) node); : break; : : case T_BitmapIndexScanState: : result = MultiExecBitmapIndexScan((BitmapIndexScanState *) node); 0.00 : 5ac484: 48 89 df mov %rbx,%rdi : result = NULL; : break; : } : : return result; : } 0.00 : 5ac487: 5b pop %rbx 0.00 : 5ac488: c9 leaveq : case T_HashState: : result = MultiExecHash((HashState *) node); : break; : : case T_BitmapIndexScanState: : result = MultiExecBitmapIndexScan((BitmapIndexScanState *) node); 0.00 : 5ac489: e9 d2 f4 00 00 jmpq 5bb960 0.00 : 5ac48e: 66 90 xchg %ax,%ax : result = NULL; : break; : } : : return result; : } 0.00 : 5ac490: 48 83 c4 08 add $0x8,%rsp : case T_BitmapIndexScanState: : result = MultiExecBitmapIndexScan((BitmapIndexScanState *) node); : break; : : case T_BitmapAndState: : result = MultiExecBitmapAnd((BitmapAndState *) node); 0.00 : 5ac494: 48 89 df mov %rbx,%rdi : result = NULL; : break; : } : : return result; : } 0.00 : 5ac497: 5b pop %rbx 0.00 : 5ac498: c9 leaveq : case T_BitmapIndexScanState: : result = MultiExecBitmapIndexScan((BitmapIndexScanState *) node); : break; : : case T_BitmapAndState: : result = MultiExecBitmapAnd((BitmapAndState *) node); 0.00 : 5ac499: e9 b2 e2 00 00 jmpq 5ba750 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1861 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b8860 : : * planner and initializes its outer subtree : * ----------------- : */ : AggState * : ExecInitAgg(Agg *node, EState *estate, int eflags) : { 0.00 : 5b8860: 55 push %rbp 0.00 : 5b8861: 48 89 e5 mov %rsp,%rbp 0.00 : 5b8864: 41 57 push %r15 0.00 : 5b8866: 41 56 push %r14 0.00 : 5b8868: 41 55 push %r13 0.00 : 5b886a: 49 89 fd mov %rdi,%r13 0.00 : 5b886d: 41 54 push %r12 0.00 : 5b886f: 53 push %rbx 0.00 : 5b8870: 89 d3 mov %edx,%ebx 0.00 : 5b8872: 48 81 ec 58 02 00 00 sub $0x258,%rsp : Assert(!(eflags & (EXEC_FLAG_BACKWARD | EXEC_FLAG_MARK))); : : /* : * create state structure : */ : aggstate = makeNode(AggState); 0.00 : 5b8879: 48 8b 3d e0 1f 60 00 mov 0x601fe0(%rip),%rdi # bba860 : * planner and initializes its outer subtree : * ----------------- : */ : AggState * : ExecInitAgg(Agg *node, EState *estate, int eflags) : { 0.00 : 5b8880: 48 89 b5 c0 fd ff ff mov %rsi,-0x240(%rbp) : Assert(!(eflags & (EXEC_FLAG_BACKWARD | EXEC_FLAG_MARK))); : : /* : * create state structure : */ : aggstate = makeNode(AggState); 0.00 : 5b8887: be 20 01 00 00 mov $0x120,%esi 0.00 : 5b888c: e8 7f 05 1e 00 callq 798e10 0.00 : 5b8891: 48 89 85 c8 fd ff ff mov %rax,-0x238(%rbp) 0.00 : 5b8898: c7 00 e4 00 00 00 movl $0xe4,(%rax) : /* : * Create expression contexts. We need two, one for per-input-tuple : * processing and one for per-output-tuple processing. We cheat a little : * by using ExecAssignExprContext() to build both. : */ : ExecAssignExprContext(estate, &aggstate->ss.ps); 0.00 : 5b889e: 48 89 c6 mov %rax,%rsi : : /* : * create state structure : */ : aggstate = makeNode(AggState); : aggstate->ss.ps.plan = (Plan *) node; 0.00 : 5b88a1: 4c 89 68 08 mov %r13,0x8(%rax) : aggstate->ss.ps.state = estate; 0.00 : 5b88a5: 48 8b 95 c0 fd ff ff mov -0x240(%rbp),%rdx : : aggstate->aggs = NIL; 0.00 : 5b88ac: 48 c7 80 90 00 00 00 movq $0x0,0x90(%rax) 0.00 : 5b88b3: 00 00 00 00 : aggstate->numaggs = 0; 0.00 : 5b88b7: c7 80 98 00 00 00 00 movl $0x0,0x98(%rax) 0.00 : 5b88be: 00 00 00 : aggstate->eqfunctions = NULL; 0.00 : 5b88c1: 48 c7 80 a0 00 00 00 movq $0x0,0xa0(%rax) 0.00 : 5b88c8: 00 00 00 00 : aggstate->hashfunctions = NULL; 0.00 : 5b88cc: 48 c7 80 a8 00 00 00 movq $0x0,0xa8(%rax) 0.00 : 5b88d3: 00 00 00 00 : /* : * create state structure : */ : aggstate = makeNode(AggState); : aggstate->ss.ps.plan = (Plan *) node; : aggstate->ss.ps.state = estate; 0.00 : 5b88d7: 48 89 50 10 mov %rdx,0x10(%rax) : /* : * Create expression contexts. We need two, one for per-input-tuple : * processing and one for per-output-tuple processing. We cheat a little : * by using ExecAssignExprContext() to build both. : */ : ExecAssignExprContext(estate, &aggstate->ss.ps); 0.00 : 5b88db: 48 89 d7 mov %rdx,%rdi : : aggstate->aggs = NIL; : aggstate->numaggs = 0; : aggstate->eqfunctions = NULL; : aggstate->hashfunctions = NULL; : aggstate->peragg = NULL; 0.00 : 5b88de: 48 c7 80 b0 00 00 00 movq $0x0,0xb0(%rax) 0.00 : 5b88e5: 00 00 00 00 : aggstate->curperagg = NULL; 0.00 : 5b88e9: 48 c7 80 c8 00 00 00 movq $0x0,0xc8(%rax) 0.00 : 5b88f0: 00 00 00 00 : aggstate->agg_done = false; 0.00 : 5b88f4: c6 80 d0 00 00 00 00 movb $0x0,0xd0(%rax) : aggstate->pergroup = NULL; 0.00 : 5b88fb: 48 c7 80 d8 00 00 00 movq $0x0,0xd8(%rax) 0.00 : 5b8902: 00 00 00 00 : aggstate->grp_firstTuple = NULL; 0.00 : 5b8906: 48 c7 80 e0 00 00 00 movq $0x0,0xe0(%rax) 0.00 : 5b890d: 00 00 00 00 : aggstate->hashtable = NULL; 0.00 : 5b8911: 48 c7 80 e8 00 00 00 movq $0x0,0xe8(%rax) 0.00 : 5b8918: 00 00 00 00 : /* : * Create expression contexts. We need two, one for per-input-tuple : * processing and one for per-output-tuple processing. We cheat a little : * by using ExecAssignExprContext() to build both. : */ : ExecAssignExprContext(estate, &aggstate->ss.ps); 0.00 : 5b891c: e8 6f cc ff ff callq 5b5590 : aggstate->tmpcontext = aggstate->ss.ps.ps_ExprContext; 0.00 : 5b8921: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 5b8928: 48 8b 41 60 mov 0x60(%rcx),%rax : ExecAssignExprContext(estate, &aggstate->ss.ps); 0.00 : 5b892c: 48 89 ce mov %rcx,%rsi : * Create expression contexts. We need two, one for per-input-tuple : * processing and one for per-output-tuple processing. We cheat a little : * by using ExecAssignExprContext() to build both. : */ : ExecAssignExprContext(estate, &aggstate->ss.ps); : aggstate->tmpcontext = aggstate->ss.ps.ps_ExprContext; 0.00 : 5b892f: 48 89 81 c0 00 00 00 mov %rax,0xc0(%rcx) : ExecAssignExprContext(estate, &aggstate->ss.ps); 0.00 : 5b8936: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5b893d: e8 4e cc ff ff callq 5b5590 : * in aggcontext and what is stored in the regular per-query memory : * context are driven by a simple decision: we want to reset the : * aggcontext at group boundaries (if not hashing) and in ExecReScanAgg to : * recover no-longer-wanted space. : */ : aggstate->aggcontext = 0.00 : 5b8942: 48 8b 3d 17 1f 60 00 mov 0x601f17(%rip),%rdi # bba860 0.00 : 5b8949: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 5b894f: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 5b8954: 31 d2 xor %edx,%edx 0.00 : 5b8956: be b1 b6 88 00 mov $0x88b6b1,%esi 0.00 : 5b895b: e8 30 f6 1d 00 callq 797f90 0.00 : 5b8960: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 5b8967: 48 89 82 b8 00 00 00 mov %rax,0xb8(%rdx) : ALLOCSET_DEFAULT_MAXSIZE); : : /* : * tuple table initialization : */ : ExecInitScanTupleSlot(estate, &aggstate->ss); 0.00 : 5b896e: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5b8975: 48 89 d6 mov %rdx,%rsi 0.00 : 5b8978: e8 33 bf ff ff callq 5b48b0 : ExecInitResultTupleSlot(estate, &aggstate->ss.ps); 0.00 : 5b897d: 48 8b b5 c8 fd ff ff mov -0x238(%rbp),%rsi 0.00 : 5b8984: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5b898b: e8 50 bf ff ff callq 5b48e0 : aggstate->hashslot = ExecInitExtraTupleSlot(estate); 0.00 : 5b8990: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5b8997: e8 b4 be ff ff callq 5b4850 0.00 : 5b899c: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 5b89a3: 48 89 81 f0 00 00 00 mov %rax,0xf0(%rcx) : * contain other agg calls in their arguments. This would make no sense : * under SQL semantics anyway (and it's forbidden by the spec). Because : * that is true, we don't need to worry about evaluating the aggs in any : * particular order. : */ : aggstate->ss.ps.targetlist = (List *) 0.00 : 5b89aa: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5b89ae: 48 89 ce mov %rcx,%rsi 0.00 : 5b89b1: e8 0a 51 ff ff callq 5adac0 0.00 : 5b89b6: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 5b89bd: 48 89 42 20 mov %rax,0x20(%rdx) : ExecInitExpr((Expr *) node->plan.targetlist, : (PlanState *) aggstate); : aggstate->ss.ps.qual = (List *) 0.00 : 5b89c1: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5b89c5: 48 89 d6 mov %rdx,%rsi 0.00 : 5b89c8: e8 f3 50 ff ff callq 5adac0 0.00 : 5b89cd: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 5b89d4: 48 89 41 28 mov %rax,0x28(%rcx) : * : * If we are doing a hashed aggregation then the child plan does not need : * to handle REWIND efficiently; see ExecReScanAgg. : */ : if (node->aggstrategy == AGG_HASHED) : eflags &= ~EXEC_FLAG_REWIND; 0.00 : 5b89d8: 89 d8 mov %ebx,%eax : outerPlan = outerPlan(node); : outerPlanState(aggstate) = ExecInitNode(outerPlan, estate, eflags); 0.00 : 5b89da: 48 8b b5 c0 fd ff ff mov -0x240(%rbp),%rsi : * : * If we are doing a hashed aggregation then the child plan does not need : * to handle REWIND efficiently; see ExecReScanAgg. : */ : if (node->aggstrategy == AGG_HASHED) : eflags &= ~EXEC_FLAG_REWIND; 0.00 : 5b89e1: 83 e0 fd and $0xfffffffd,%eax 0.00 : 5b89e4: 41 83 7d 60 02 cmpl $0x2,0x60(%r13) : outerPlan = outerPlan(node); : outerPlanState(aggstate) = ExecInitNode(outerPlan, estate, eflags); 0.00 : 5b89e9: 49 8b 7d 38 mov 0x38(%r13),%rdi : * : * If we are doing a hashed aggregation then the child plan does not need : * to handle REWIND efficiently; see ExecReScanAgg. : */ : if (node->aggstrategy == AGG_HASHED) : eflags &= ~EXEC_FLAG_REWIND; 0.00 : 5b89ed: 0f 44 d8 cmove %eax,%ebx : outerPlan = outerPlan(node); : outerPlanState(aggstate) = ExecInitNode(outerPlan, estate, eflags); 0.00 : 5b89f0: 89 da mov %ebx,%edx 0.00 : 5b89f2: e8 59 3d ff ff callq 5ac750 0.00 : 5b89f7: 48 8b 9d c8 fd ff ff mov -0x238(%rbp),%rbx 0.00 : 5b89fe: 48 89 43 30 mov %rax,0x30(%rbx) : : /* : * initialize source tuple type. : */ : ExecAssignScanTypeFromOuterPlan(&aggstate->ss); 0.00 : 5b8a02: 48 89 df mov %rbx,%rdi 0.00 : 5b8a05: e8 c6 c3 ff ff callq 5b4dd0 : : /* : * Initialize result tuple type and projection info. : */ : ExecAssignResultTypeFromTL(&aggstate->ss.ps); 0.00 : 5b8a0a: 48 89 df mov %rbx,%rdi 0.00 : 5b8a0d: e8 1e c7 ff ff callq 5b5130 : ExecAssignProjectionInfo(&aggstate->ss.ps, NULL); 0.00 : 5b8a12: 31 f6 xor %esi,%esi 0.00 : 5b8a14: 48 89 df mov %rbx,%rdi 0.00 : 5b8a17: e8 e4 c6 ff ff callq 5b5100 : aggstate->ss.ps.ps_TupFromTlist = false; : : /* : * get the count of aggregates in targetlist and quals : */ : numaggs = aggstate->numaggs; 0.00 : 5b8a1c: 8b 83 98 00 00 00 mov 0x98(%rbx),%eax : * Initialize result tuple type and projection info. : */ : ExecAssignResultTypeFromTL(&aggstate->ss.ps); : ExecAssignProjectionInfo(&aggstate->ss.ps, NULL); : : aggstate->ss.ps.ps_TupFromTlist = false; 0.00 : 5b8a22: c6 43 70 00 movb $0x0,0x70(%rbx) : /* : * get the count of aggregates in targetlist and quals : */ : numaggs = aggstate->numaggs; : Assert(numaggs == list_length(aggstate->aggs)); : if (numaggs <= 0) 0.00 : 5b8a26: 85 c0 test %eax,%eax 0.00 : 5b8a28: 0f 8e 93 0a 00 00 jle 5b94c1 0.00 : 5b8a2e: 4c 63 e0 movslq %eax,%r12 0.00 : 5b8a31: 4d 69 fc a8 04 00 00 imul $0x4a8,%r12,%r15 0.00 : 5b8a38: 4e 8d 34 e5 00 00 00 lea 0x0(,%r12,8),%r14 0.00 : 5b8a3f: 00 : /* : * If we are grouping, precompute fmgr lookup data for inner loop. We need : * both equality and hashing functions to do it by hashing, but only : * equality if not hashing. : */ : if (node->numCols > 0) 0.00 : 5b8a40: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 5b8a44: 85 ff test %edi,%edi 0.00 : 5b8a46: 7e 22 jle 5b8a6a : { : if (node->aggstrategy == AGG_HASHED) 0.00 : 5b8a48: 41 83 7d 60 02 cmpl $0x2,0x60(%r13) 0.00 : 5b8a4d: 0f 84 85 0a 00 00 je 5b94d8 : execTuplesHashPrepare(node->numCols, : node->grpOperators, : &aggstate->eqfunctions, : &aggstate->hashfunctions); : else : aggstate->eqfunctions = 0.00 : 5b8a53: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5b8a57: e8 94 08 ff ff callq 5a92f0 0.00 : 5b8a5c: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 5b8a63: 48 89 82 a0 00 00 00 mov %rax,0xa0(%rdx) : : /* : * Set up aggregate-result storage in the output expr context, and also : * allocate my private per-agg working storage : */ : econtext = aggstate->ss.ps.ps_ExprContext; 0.00 : 5b8a6a: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx : econtext->ecxt_aggvalues = (Datum *) palloc0(sizeof(Datum) * numaggs); 0.00 : 5b8a71: 4c 89 f7 mov %r14,%rdi : : /* : * Set up aggregate-result storage in the output expr context, and also : * allocate my private per-agg working storage : */ : econtext = aggstate->ss.ps.ps_ExprContext; 0.00 : 5b8a74: 48 8b 59 60 mov 0x60(%rcx),%rbx : econtext->ecxt_aggvalues = (Datum *) palloc0(sizeof(Datum) * numaggs); 0.00 : 5b8a78: e8 f3 04 1e 00 callq 798f70 : econtext->ecxt_aggnulls = (bool *) palloc0(sizeof(bool) * numaggs); 0.00 : 5b8a7d: 4c 89 e7 mov %r12,%rdi : /* : * Set up aggregate-result storage in the output expr context, and also : * allocate my private per-agg working storage : */ : econtext = aggstate->ss.ps.ps_ExprContext; : econtext->ecxt_aggvalues = (Datum *) palloc0(sizeof(Datum) * numaggs); 0.00 : 5b8a80: 48 89 43 40 mov %rax,0x40(%rbx) : econtext->ecxt_aggnulls = (bool *) palloc0(sizeof(bool) * numaggs); 0.00 : 5b8a84: e8 e7 04 1e 00 callq 798f70 : : peragg = (AggStatePerAgg) palloc0(sizeof(AggStatePerAggData) * numaggs); 0.00 : 5b8a89: 4c 89 ff mov %r15,%rdi : * Set up aggregate-result storage in the output expr context, and also : * allocate my private per-agg working storage : */ : econtext = aggstate->ss.ps.ps_ExprContext; : econtext->ecxt_aggvalues = (Datum *) palloc0(sizeof(Datum) * numaggs); : econtext->ecxt_aggnulls = (bool *) palloc0(sizeof(bool) * numaggs); 0.00 : 5b8a8c: 48 89 43 48 mov %rax,0x48(%rbx) : : peragg = (AggStatePerAgg) palloc0(sizeof(AggStatePerAggData) * numaggs); 0.00 : 5b8a90: e8 db 04 1e 00 callq 798f70 : aggstate->peragg = peragg; 0.00 : 5b8a95: 48 8b 9d c8 fd ff ff mov -0x238(%rbp),%rbx : */ : econtext = aggstate->ss.ps.ps_ExprContext; : econtext->ecxt_aggvalues = (Datum *) palloc0(sizeof(Datum) * numaggs); : econtext->ecxt_aggnulls = (bool *) palloc0(sizeof(bool) * numaggs); : : peragg = (AggStatePerAgg) palloc0(sizeof(AggStatePerAggData) * numaggs); 0.00 : 5b8a9c: 48 89 85 d0 fd ff ff mov %rax,-0x230(%rbp) : aggstate->peragg = peragg; 0.00 : 5b8aa3: 48 89 83 b0 00 00 00 mov %rax,0xb0(%rbx) : : if (node->aggstrategy == AGG_HASHED) 0.00 : 5b8aaa: 41 83 7d 60 02 cmpl $0x2,0x60(%r13) 0.00 : 5b8aaf: 0f 84 1e 09 00 00 je 5b93d3 : } : else : { : AggStatePerGroup pergroup; : : pergroup = (AggStatePerGroup) palloc0(sizeof(AggStatePerGroupData) * numaggs); 0.00 : 5b8ab5: 49 c1 e4 04 shl $0x4,%r12 0.00 : 5b8ab9: 4c 89 e7 mov %r12,%rdi 0.00 : 5b8abc: e8 af 04 1e 00 callq 798f70 : aggstate->pergroup = pergroup; 0.00 : 5b8ac1: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 5b8ac8: 48 89 82 d8 00 00 00 mov %rax,0xd8(%rdx) : * duplicates are detected, we only make an AggStatePerAgg struct for the : * first one. The clones are simply pointed at the same result entry by : * giving them duplicate aggno values. : */ : aggno = -1; : foreach(l, aggstate->aggs) 0.00 : 5b8acf: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 5b8ad6: 48 8b 81 90 00 00 00 mov 0x90(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5b8add: 48 85 c0 test %rax,%rax 0.00 : 5b8ae0: 0f 84 d6 0a 00 00 je 5b95bc 0.00 : 5b8ae6: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5b8aea: 48 85 c0 test %rax,%rax 0.00 : 5b8aed: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 5b8af4: 0f 84 c2 0a 00 00 je 5b95bc 0.00 : 5b8afa: c7 85 dc fd ff ff ff movl $0xffffffff,-0x224(%rbp) 0.00 : 5b8b01: ff ff ff 0.00 : 5b8b04: 0f 1f 40 00 nopl 0x0(%rax) : { : AggrefExprState *aggrefstate = (AggrefExprState *) lfirst(l); 0.00 : 5b8b08: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx : : /* Planner should have assigned aggregate to correct level */ : Assert(aggref->agglevelsup == 0); : : /* Look for a previous duplicate aggregate */ : for (i = 0; i <= aggno; i++) 0.00 : 5b8b0f: 8b b5 dc fd ff ff mov -0x224(%rbp),%esi : * giving them duplicate aggno values. : */ : aggno = -1; : foreach(l, aggstate->aggs) : { : AggrefExprState *aggrefstate = (AggrefExprState *) lfirst(l); 0.00 : 5b8b15: 4c 8b 33 mov (%rbx),%r14 : : /* Planner should have assigned aggregate to correct level */ : Assert(aggref->agglevelsup == 0); : : /* Look for a previous duplicate aggregate */ : for (i = 0; i <= aggno; i++) 0.00 : 5b8b18: 85 f6 test %esi,%esi : */ : aggno = -1; : foreach(l, aggstate->aggs) : { : AggrefExprState *aggrefstate = (AggrefExprState *) lfirst(l); : Aggref *aggref = (Aggref *) aggrefstate->xprstate.expr; 0.00 : 5b8b1a: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 5b8b1e: 48 89 85 e8 fd ff ff mov %rax,-0x218(%rbp) : : /* Planner should have assigned aggregate to correct level */ : Assert(aggref->agglevelsup == 0); : : /* Look for a previous duplicate aggregate */ : for (i = 0; i <= aggno; i++) 0.00 : 5b8b25: 0f 88 95 00 00 00 js 5b8bc0 0.00 : 5b8b2b: 31 db xor %ebx,%ebx 0.00 : 5b8b2d: eb 10 jmp 5b8b3f 0.00 : 5b8b2f: 90 nop 0.00 : 5b8b30: 83 c3 01 add $0x1,%ebx 0.00 : 5b8b33: 3b 9d dc fd ff ff cmp -0x224(%rbp),%ebx 0.00 : 5b8b39: 0f 8f 81 00 00 00 jg 5b8bc0 : { : if (equal(aggref, peragg[i].aggref) && 0.00 : 5b8b3f: 48 63 c3 movslq %ebx,%rax 0.00 : 5b8b42: 48 8b 95 d0 fd ff ff mov -0x230(%rbp),%rdx 0.00 : 5b8b49: 48 8b bd e8 fd ff ff mov -0x218(%rbp),%rdi 0.00 : 5b8b50: 48 69 c0 a8 04 00 00 imul $0x4a8,%rax,%rax 0.00 : 5b8b57: 48 8b 74 10 08 mov 0x8(%rax,%rdx,1),%rsi 0.00 : 5b8b5c: e8 6f 25 03 00 callq 5eb0d0 0.00 : 5b8b61: 84 c0 test %al,%al 0.00 : 5b8b63: 74 cb je 5b8b30 0.00 : 5b8b65: 48 8b bd e8 fd ff ff mov -0x218(%rbp),%rdi 0.00 : 5b8b6c: e8 0f 40 07 00 callq 62cb80 0.00 : 5b8b71: 84 c0 test %al,%al 0.00 : 5b8b73: 75 bb jne 5b8b30 : break; : } : if (i <= aggno) : { : /* Found a match to an existing entry, so just mark it */ : aggrefstate->aggno = i; 0.00 : 5b8b75: 41 89 5e 30 mov %ebx,0x30(%r14) : * duplicates are detected, we only make an AggStatePerAgg struct for the : * first one. The clones are simply pointed at the same result entry by : * giving them duplicate aggno values. : */ : aggno = -1; : foreach(l, aggstate->aggs) 0.00 : 5b8b79: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 5b8b80: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 5b8b84: 48 85 d2 test %rdx,%rdx 0.00 : 5b8b87: 48 89 95 e0 fd ff ff mov %rdx,-0x220(%rbp) 0.00 : 5b8b8e: 0f 85 74 ff ff ff jne 5b8b08 0.00 : 5b8b94: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5b8b9a: 83 c0 01 add $0x1,%eax : : ReleaseSysCache(aggTuple); : } : : /* Update numaggs to match number of unique aggregates found */ : aggstate->numaggs = aggno + 1; 0.00 : 5b8b9d: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 5b8ba4: 89 81 98 00 00 00 mov %eax,0x98(%rcx) : : return aggstate; : } 0.00 : 5b8baa: 48 81 c4 58 02 00 00 add $0x258,%rsp 0.00 : 5b8bb1: 48 89 c8 mov %rcx,%rax 0.00 : 5b8bb4: 5b pop %rbx 0.00 : 5b8bb5: 41 5c pop %r12 0.00 : 5b8bb7: 41 5d pop %r13 0.00 : 5b8bb9: 41 5e pop %r14 0.00 : 5b8bbb: 41 5f pop %r15 0.00 : 5b8bbd: c9 leaveq 0.00 : 5b8bbe: c3 retq 0.00 : 5b8bbf: 90 nop : aggrefstate->aggno = i; : continue; : } : : /* Nope, so assign a new PerAgg record */ : peraggstate = &peragg[++aggno]; 0.00 : 5b8bc0: 83 85 dc fd ff ff 01 addl $0x1,-0x224(%rbp) : peraggstate->aggrefstate = aggrefstate; : peraggstate->aggref = aggref; : peraggstate->sortstate = NULL; : : /* Fetch the pg_aggregate row */ : aggTuple = SearchSysCache1(AGGFNOID, 0.00 : 5b8bc7: 45 31 c0 xor %r8d,%r8d 0.00 : 5b8bca: 31 d2 xor %edx,%edx : aggrefstate->aggno = i; : continue; : } : : /* Nope, so assign a new PerAgg record */ : peraggstate = &peragg[++aggno]; 0.00 : 5b8bcc: 48 63 85 dc fd ff ff movslq -0x224(%rbp),%rax : : /* Mark Aggref state node with assigned index in the result array */ : aggrefstate->aggno = aggno; 0.00 : 5b8bd3: 8b 8d dc fd ff ff mov -0x224(%rbp),%ecx : peraggstate->aggrefstate = aggrefstate; : peraggstate->aggref = aggref; : peraggstate->sortstate = NULL; : : /* Fetch the pg_aggregate row */ : aggTuple = SearchSysCache1(AGGFNOID, 0.00 : 5b8bd9: 31 ff xor %edi,%edi : aggrefstate->aggno = i; : continue; : } : : /* Nope, so assign a new PerAgg record */ : peraggstate = &peragg[++aggno]; 0.00 : 5b8bdb: 48 69 c0 a8 04 00 00 imul $0x4a8,%rax,%rax 0.00 : 5b8be2: 48 03 85 d0 fd ff ff add -0x230(%rbp),%rax 0.00 : 5b8be9: 48 89 85 f0 fd ff ff mov %rax,-0x210(%rbp) : : /* Mark Aggref state node with assigned index in the result array */ : aggrefstate->aggno = aggno; 0.00 : 5b8bf0: 41 89 4e 30 mov %ecx,0x30(%r14) : peraggstate->aggrefstate = aggrefstate; : peraggstate->aggref = aggref; : peraggstate->sortstate = NULL; : : /* Fetch the pg_aggregate row */ : aggTuple = SearchSysCache1(AGGFNOID, 0.00 : 5b8bf4: 31 c9 xor %ecx,%ecx : : /* Mark Aggref state node with assigned index in the result array */ : aggrefstate->aggno = aggno; : : /* Begin filling in the peraggstate data */ : peraggstate->aggrefstate = aggrefstate; 0.00 : 5b8bf6: 4c 89 30 mov %r14,(%rax) : peraggstate->aggref = aggref; 0.00 : 5b8bf9: 48 8b 9d e8 fd ff ff mov -0x218(%rbp),%rbx : peraggstate->sortstate = NULL; 0.00 : 5b8c00: 48 c7 80 f8 00 00 00 movq $0x0,0xf8(%rax) 0.00 : 5b8c07: 00 00 00 00 : /* Mark Aggref state node with assigned index in the result array */ : aggrefstate->aggno = aggno; : : /* Begin filling in the peraggstate data */ : peraggstate->aggrefstate = aggrefstate; : peraggstate->aggref = aggref; 0.00 : 5b8c0b: 48 89 58 08 mov %rbx,0x8(%rax) : peraggstate->sortstate = NULL; : : /* Fetch the pg_aggregate row */ : aggTuple = SearchSysCache1(AGGFNOID, 0.00 : 5b8c0f: 8b 73 04 mov 0x4(%rbx),%esi 0.00 : 5b8c12: e8 a9 90 1b 00 callq 771cc0 : ObjectIdGetDatum(aggref->aggfnoid)); : if (!HeapTupleIsValid(aggTuple)) 0.00 : 5b8c17: 48 85 c0 test %rax,%rax : peraggstate->aggrefstate = aggrefstate; : peraggstate->aggref = aggref; : peraggstate->sortstate = NULL; : : /* Fetch the pg_aggregate row */ : aggTuple = SearchSysCache1(AGGFNOID, 0.00 : 5b8c1a: 48 89 85 08 fe ff ff mov %rax,-0x1f8(%rbp) : ObjectIdGetDatum(aggref->aggfnoid)); : if (!HeapTupleIsValid(aggTuple)) 0.00 : 5b8c21: 0f 84 61 09 00 00 je 5b9588 : elog(ERROR, "cache lookup failed for aggregate %u", : aggref->aggfnoid); : aggform = (Form_pg_aggregate) GETSTRUCT(aggTuple); 0.00 : 5b8c27: 48 8b 8d 08 fe ff ff mov -0x1f8(%rbp),%rcx 0.00 : 5b8c2e: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 5b8c32: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 5b8c36: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 5b8c3a: 48 89 85 10 fe ff ff mov %rax,-0x1f0(%rbp) : : /* Check permission to call aggregate function */ : aclresult = pg_proc_aclcheck(aggref->aggfnoid, GetUserId(), 0.00 : 5b8c41: e8 6a c3 1c 00 callq 784fb0 0.00 : 5b8c46: 48 8b 9d e8 fd ff ff mov -0x218(%rbp),%rbx 0.00 : 5b8c4d: 89 c6 mov %eax,%esi 0.00 : 5b8c4f: ba 80 00 00 00 mov $0x80,%edx 0.00 : 5b8c54: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 5b8c57: e8 b4 9e f3 ff callq 4f2b10 : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) 0.00 : 5b8c5c: 85 c0 test %eax,%eax : elog(ERROR, "cache lookup failed for aggregate %u", : aggref->aggfnoid); : aggform = (Form_pg_aggregate) GETSTRUCT(aggTuple); : : /* Check permission to call aggregate function */ : aclresult = pg_proc_aclcheck(aggref->aggfnoid, GetUserId(), 0.00 : 5b8c5e: 89 c3 mov %eax,%ebx : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) 0.00 : 5b8c60: 0f 85 56 05 00 00 jne 5b91bc : aclcheck_error(aclresult, ACL_KIND_PROC, : get_func_name(aggref->aggfnoid)); : InvokeFunctionExecuteHook(aggref->aggfnoid); 0.00 : 5b8c66: 48 83 3d 6a 0a 5c 00 cmpq $0x0,0x5c0a6a(%rip) # b796d8 0.00 : 5b8c6d: 00 0.00 : 5b8c6e: 74 0f je 5b8c7f 0.00 : 5b8c70: 48 8b 95 e8 fd ff ff mov -0x218(%rbp),%rdx 0.00 : 5b8c77: 8b 7a 04 mov 0x4(%rdx),%edi 0.00 : 5b8c7a: e8 d1 fd f3 ff callq 4f8a50 : : peraggstate->transfn_oid = transfn_oid = aggform->aggtransfn; 0.00 : 5b8c7f: 48 8b 8d 10 fe ff ff mov -0x1f0(%rbp),%rcx 0.00 : 5b8c86: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx : /* Check that aggregate owner has permission to call component fns */ : { : HeapTuple procTuple; : Oid aggOwner; : : procTuple = SearchSysCache1(PROCOID, 0.00 : 5b8c8d: 45 31 c0 xor %r8d,%r8d 0.00 : 5b8c90: 31 d2 xor %edx,%edx 0.00 : 5b8c92: bf 2a 00 00 00 mov $0x2a,%edi : if (aclresult != ACLCHECK_OK) : aclcheck_error(aclresult, ACL_KIND_PROC, : get_func_name(aggref->aggfnoid)); : InvokeFunctionExecuteHook(aggref->aggfnoid); : : peraggstate->transfn_oid = transfn_oid = aggform->aggtransfn; 0.00 : 5b8c97: 44 8b 69 08 mov 0x8(%rcx),%r13d 0.00 : 5b8c9b: 44 89 6b 20 mov %r13d,0x20(%rbx) : peraggstate->finalfn_oid = finalfn_oid = aggform->aggfinalfn; 0.00 : 5b8c9f: 44 8b 61 0c mov 0xc(%rcx),%r12d : /* Check that aggregate owner has permission to call component fns */ : { : HeapTuple procTuple; : Oid aggOwner; : : procTuple = SearchSysCache1(PROCOID, 0.00 : 5b8ca3: 31 c9 xor %ecx,%ecx : aclcheck_error(aclresult, ACL_KIND_PROC, : get_func_name(aggref->aggfnoid)); : InvokeFunctionExecuteHook(aggref->aggfnoid); : : peraggstate->transfn_oid = transfn_oid = aggform->aggtransfn; : peraggstate->finalfn_oid = finalfn_oid = aggform->aggfinalfn; 0.00 : 5b8ca5: 44 89 63 24 mov %r12d,0x24(%rbx) : /* Check that aggregate owner has permission to call component fns */ : { : HeapTuple procTuple; : Oid aggOwner; : : procTuple = SearchSysCache1(PROCOID, 0.00 : 5b8ca9: 48 8b 85 e8 fd ff ff mov -0x218(%rbp),%rax 0.00 : 5b8cb0: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 5b8cb3: e8 08 90 1b 00 callq 771cc0 : ObjectIdGetDatum(aggref->aggfnoid)); : if (!HeapTupleIsValid(procTuple)) 0.00 : 5b8cb8: 48 85 c0 test %rax,%rax : /* Check that aggregate owner has permission to call component fns */ : { : HeapTuple procTuple; : Oid aggOwner; : : procTuple = SearchSysCache1(PROCOID, 0.00 : 5b8cbb: 48 89 c7 mov %rax,%rdi : ObjectIdGetDatum(aggref->aggfnoid)); : if (!HeapTupleIsValid(procTuple)) 0.00 : 5b8cbe: 0f 84 3e 08 00 00 je 5b9502 : elog(ERROR, "cache lookup failed for function %u", : aggref->aggfnoid); : aggOwner = ((Form_pg_proc) GETSTRUCT(procTuple))->proowner; 0.00 : 5b8cc4: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 5b8cc8: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 5b8ccc: 44 8b 7c 02 44 mov 0x44(%rdx,%rax,1),%r15d : ReleaseSysCache(procTuple); 0.00 : 5b8cd1: e8 da 8f 1b 00 callq 771cb0 : : aclresult = pg_proc_aclcheck(transfn_oid, aggOwner, 0.00 : 5b8cd6: ba 80 00 00 00 mov $0x80,%edx 0.00 : 5b8cdb: 44 89 ef mov %r13d,%edi 0.00 : 5b8cde: 44 89 fe mov %r15d,%esi 0.00 : 5b8ce1: e8 2a 9e f3 ff callq 4f2b10 : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) 0.00 : 5b8ce6: 85 c0 test %eax,%eax : elog(ERROR, "cache lookup failed for function %u", : aggref->aggfnoid); : aggOwner = ((Form_pg_proc) GETSTRUCT(procTuple))->proowner; : ReleaseSysCache(procTuple); : : aclresult = pg_proc_aclcheck(transfn_oid, aggOwner, 0.00 : 5b8ce8: 89 c3 mov %eax,%ebx : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) 0.00 : 5b8cea: 0f 85 b0 04 00 00 jne 5b91a0 : aclcheck_error(aclresult, ACL_KIND_PROC, : get_func_name(transfn_oid)); : InvokeFunctionExecuteHook(transfn_oid); 0.00 : 5b8cf0: 48 83 3d e0 09 5c 00 cmpq $0x0,0x5c09e0(%rip) # b796d8 0.00 : 5b8cf7: 00 0.00 : 5b8cf8: 74 08 je 5b8d02 0.00 : 5b8cfa: 44 89 ef mov %r13d,%edi 0.00 : 5b8cfd: e8 4e fd f3 ff callq 4f8a50 : if (OidIsValid(finalfn_oid)) 0.00 : 5b8d02: 45 85 e4 test %r12d,%r12d 0.00 : 5b8d05: 0f 85 60 04 00 00 jne 5b916b : /* : * Get actual datatypes of the (nominal) aggregate inputs. These : * could be different from the agg's declared input types, when the : * agg accepts ANY or a polymorphic type. : */ : numArguments = get_aggregate_argtypes(aggref, inputTypes); 0.00 : 5b8d0b: 48 8b bd e8 fd ff ff mov -0x218(%rbp),%rdi 0.00 : 5b8d12: 48 8d b5 20 fe ff ff lea -0x1e0(%rbp),%rsi 0.00 : 5b8d19: e8 62 1d f7 ff callq 52aa80 : peraggstate->numArguments = numArguments; 0.00 : 5b8d1e: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx : /* : * Get actual datatypes of the (nominal) aggregate inputs. These : * could be different from the agg's declared input types, when the : * agg accepts ANY or a polymorphic type. : */ : numArguments = get_aggregate_argtypes(aggref, inputTypes); 0.00 : 5b8d25: 41 89 c7 mov %eax,%r15d : peraggstate->numArguments = numArguments; 0.00 : 5b8d28: 89 43 10 mov %eax,0x10(%rbx) : : /* Count the "direct" arguments, if any */ : numDirectArgs = list_length(aggref->aggdirectargs); 0.00 : 5b8d2b: 48 8b 95 e8 fd ff ff mov -0x218(%rbp),%rdx 0.00 : 5b8d32: 48 8b 42 18 mov 0x18(%rdx),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5b8d36: c7 85 fc fd ff ff 00 movl $0x0,-0x204(%rbp) 0.00 : 5b8d3d: 00 00 00 0.00 : 5b8d40: 48 85 c0 test %rax,%rax 0.00 : 5b8d43: 74 09 je 5b8d4e 0.00 : 5b8d45: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 5b8d48: 89 85 fc fd ff ff mov %eax,-0x204(%rbp) : : /* Count the number of aggregated input columns */ : numInputs = list_length(aggref->args); 0.00 : 5b8d4e: 48 8b 8d e8 fd ff ff mov -0x218(%rbp),%rcx 0.00 : 5b8d55: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 5b8d59: c7 85 00 fe ff ff 00 movl $0x0,-0x200(%rbp) 0.00 : 5b8d60: 00 00 00 0.00 : 5b8d63: 48 85 c0 test %rax,%rax 0.00 : 5b8d66: 74 09 je 5b8d71 0.00 : 5b8d68: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 5b8d6b: 89 85 00 fe ff ff mov %eax,-0x200(%rbp) : peraggstate->numInputs = numInputs; 0.00 : 5b8d71: 8b 85 00 fe ff ff mov -0x200(%rbp),%eax 0.00 : 5b8d77: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b8d7e: 89 43 14 mov %eax,0x14(%rbx) : : /* Detect how many arguments to pass to the transfn */ : if (AGGKIND_IS_ORDERED_SET(aggref->aggkind)) : peraggstate->numTransInputs = numInputs; 0.00 : 5b8d81: 48 8b 95 e8 fd ff ff mov -0x218(%rbp),%rdx 0.00 : 5b8d88: 8b 85 00 fe ff ff mov -0x200(%rbp),%eax 0.00 : 5b8d8e: 80 7a 42 6e cmpb $0x6e,0x42(%rdx) 0.00 : 5b8d92: 41 0f 44 c7 cmove %r15d,%eax 0.00 : 5b8d96: 89 43 18 mov %eax,0x18(%rbx) : else : peraggstate->numTransInputs = numArguments; : : /* Detect how many arguments to pass to the finalfn */ : if (aggform->aggfinalextra) 0.00 : 5b8d99: 48 8b 8d 10 fe ff ff mov -0x1f0(%rbp),%rcx 0.00 : 5b8da0: 80 79 1c 00 cmpb $0x0,0x1c(%rcx) 0.00 : 5b8da4: 0f 84 34 03 00 00 je 5b90de : peraggstate->numFinalArgs = numArguments + 1; 0.00 : 5b8daa: 41 8d 47 01 lea 0x1(%r15),%eax 0.00 : 5b8dae: 89 43 1c mov %eax,0x1c(%rbx) : else : peraggstate->numFinalArgs = numDirectArgs + 1; : : /* resolve actual type of transition state, if polymorphic */ : aggtranstype = resolve_aggregate_transtype(aggref->aggfnoid, 0.00 : 5b8db1: 48 8b 95 e8 fd ff ff mov -0x218(%rbp),%rdx 0.00 : 5b8db8: 48 8b 85 10 fe ff ff mov -0x1f0(%rbp),%rax 0.00 : 5b8dbf: 44 89 f9 mov %r15d,%ecx 0.00 : 5b8dc2: 8b 7a 04 mov 0x4(%rdx),%edi 0.00 : 5b8dc5: 8b 70 24 mov 0x24(%rax),%esi 0.00 : 5b8dc8: 48 8d 95 20 fe ff ff lea -0x1e0(%rbp),%rdx 0.00 : 5b8dcf: e8 2c 1c f7 ff callq 52aa00 : aggform->aggtranstype, : inputTypes, : numArguments); : : /* build expression trees using actual argument & result types */ : build_aggregate_fnexprs(inputTypes, 0.00 : 5b8dd4: 48 8b 8d e8 fd ff ff mov -0x218(%rbp),%rcx 0.00 : 5b8ddb: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b8de2: 48 8d 55 c0 lea -0x40(%rbp),%rdx : peraggstate->numFinalArgs = numArguments + 1; : else : peraggstate->numFinalArgs = numDirectArgs + 1; : : /* resolve actual type of transition state, if polymorphic */ : aggtranstype = resolve_aggregate_transtype(aggref->aggfnoid, 0.00 : 5b8de6: 89 85 1c fe ff ff mov %eax,-0x1e4(%rbp) : aggform->aggtranstype, : inputTypes, : numArguments); : : /* build expression trees using actual argument & result types */ : build_aggregate_fnexprs(inputTypes, 0.00 : 5b8dec: 48 8d 45 b8 lea -0x48(%rbp),%rax 0.00 : 5b8df0: 44 8b 8d 1c fe ff ff mov -0x1e4(%rbp),%r9d 0.00 : 5b8df7: 48 8d bd 20 fe ff ff lea -0x1e0(%rbp),%rdi 0.00 : 5b8dfe: 44 89 fe mov %r15d,%esi 0.00 : 5b8e01: 44 0f be 41 41 movsbl 0x41(%rcx),%r8d 0.00 : 5b8e06: 8b 4b 1c mov 0x1c(%rbx),%ecx 0.00 : 5b8e09: 48 8b 9d e8 fd ff ff mov -0x218(%rbp),%rbx 0.00 : 5b8e10: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : 5b8e15: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 5b8e1a: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) 0.00 : 5b8e21: 00 00 0.00 : 5b8e23: 44 89 64 24 20 mov %r12d,0x20(%rsp) 0.00 : 5b8e28: c7 44 24 18 00 00 00 movl $0x0,0x18(%rsp) 0.00 : 5b8e2f: 00 0.00 : 5b8e30: 44 89 6c 24 10 mov %r13d,0x10(%rsp) 0.00 : 5b8e35: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5b8e38: 8b 95 fc fd ff ff mov -0x204(%rbp),%edx 0.00 : 5b8e3e: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 5b8e42: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : 5b8e45: 89 04 24 mov %eax,(%rsp) 0.00 : 5b8e48: e8 63 19 f7 ff callq 52a7b0 : &transfnexpr, : NULL, : &finalfnexpr); : : /* set up infrastructure for calling the transfn and finalfn */ : fmgr_info(transfn_oid, &peraggstate->transfn); 0.00 : 5b8e4d: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b8e54: 44 89 ef mov %r13d,%edi 0.00 : 5b8e57: 48 83 c3 28 add $0x28,%rbx 0.00 : 5b8e5b: 48 89 de mov %rbx,%rsi 0.00 : 5b8e5e: e8 fd 71 1c 00 callq 780060 : fmgr_info_set_expr((Node *) transfnexpr, &peraggstate->transfn); 0.00 : 5b8e63: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 5b8e67: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx : : if (OidIsValid(finalfn_oid)) 0.00 : 5b8e6e: 45 85 e4 test %r12d,%r12d : NULL, : &finalfnexpr); : : /* set up infrastructure for calling the transfn and finalfn */ : fmgr_info(transfn_oid, &peraggstate->transfn); : fmgr_info_set_expr((Node *) transfnexpr, &peraggstate->transfn); 0.00 : 5b8e71: 48 89 42 50 mov %rax,0x50(%rdx) : : if (OidIsValid(finalfn_oid)) 0.00 : 5b8e75: 0f 85 ca 02 00 00 jne 5b9145 : { : fmgr_info(finalfn_oid, &peraggstate->finalfn); : fmgr_info_set_expr((Node *) finalfnexpr, &peraggstate->finalfn); : } : : peraggstate->aggCollation = aggref->inputcollid; 0.00 : 5b8e7b: 48 8b 95 e8 fd ff ff mov -0x218(%rbp),%rdx 0.00 : 5b8e82: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 5b8e89: 8b 42 10 mov 0x10(%rdx),%eax : : InitFunctionCallInfoData(peraggstate->transfn_fcinfo, 0.00 : 5b8e8c: 48 89 99 00 01 00 00 mov %rbx,0x100(%rcx) : peraggstate->numTransInputs + 1, : peraggstate->aggCollation, : (void *) aggstate, NULL); : : /* get info about relevant datatypes */ : get_typlenbyval(aggref->aggtype, 0.00 : 5b8e93: 48 89 ca mov %rcx,%rdx 0.00 : 5b8e96: 48 89 ce mov %rcx,%rsi 0.00 : 5b8e99: 48 81 c2 d1 00 00 00 add $0xd1,%rdx 0.00 : 5b8ea0: 48 81 c6 cc 00 00 00 add $0xcc,%rsi : { : fmgr_info(finalfn_oid, &peraggstate->finalfn); : fmgr_info_set_expr((Node *) finalfnexpr, &peraggstate->finalfn); : } : : peraggstate->aggCollation = aggref->inputcollid; 0.00 : 5b8ea7: 89 81 88 00 00 00 mov %eax,0x88(%rcx) : : InitFunctionCallInfoData(peraggstate->transfn_fcinfo, 0.00 : 5b8ead: 48 8b 9d c8 fd ff ff mov -0x238(%rbp),%rbx 0.00 : 5b8eb4: 89 81 18 01 00 00 mov %eax,0x118(%rcx) 0.00 : 5b8eba: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : 5b8ebd: 48 c7 81 10 01 00 00 movq $0x0,0x110(%rcx) 0.00 : 5b8ec4: 00 00 00 00 0.00 : 5b8ec8: c6 81 1c 01 00 00 00 movb $0x0,0x11c(%rcx) 0.00 : 5b8ecf: 48 89 99 08 01 00 00 mov %rbx,0x108(%rcx) 0.00 : 5b8ed6: 83 c0 01 add $0x1,%eax 0.00 : 5b8ed9: 66 89 81 1e 01 00 00 mov %ax,0x11e(%rcx) : peraggstate->numTransInputs + 1, : peraggstate->aggCollation, : (void *) aggstate, NULL); : : /* get info about relevant datatypes */ : get_typlenbyval(aggref->aggtype, 0.00 : 5b8ee0: 48 8b 85 e8 fd ff ff mov -0x218(%rbp),%rax 0.00 : 5b8ee7: 8b 78 08 mov 0x8(%rax),%edi 0.00 : 5b8eea: e8 31 a0 1b 00 callq 772f20 : &peraggstate->resulttypeLen, : &peraggstate->resulttypeByVal); : get_typlenbyval(aggtranstype, 0.00 : 5b8eef: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 5b8ef6: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5b8efd: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi 0.00 : 5b8f03: 48 81 c2 d2 00 00 00 add $0xd2,%rdx 0.00 : 5b8f0a: 48 81 c6 ce 00 00 00 add $0xce,%rsi 0.00 : 5b8f11: e8 0a a0 1b 00 callq 772f20 : : /* : * initval is potentially null, so don't try to access it as a struct : * field. Must do it the hard way with SysCacheGetAttr. : */ : textInitVal = SysCacheGetAttr(AGGFNOID, aggTuple, 0.00 : 5b8f16: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 5b8f1d: 48 8b b5 08 fe ff ff mov -0x1f8(%rbp),%rsi 0.00 : 5b8f24: ba 10 00 00 00 mov $0x10,%edx 0.00 : 5b8f29: 31 ff xor %edi,%edi 0.00 : 5b8f2b: 48 81 c1 c8 00 00 00 add $0xc8,%rcx 0.00 : 5b8f32: e8 59 8b 1b 00 callq 771a90 : Anum_pg_aggregate_agginitval, : &peraggstate->initValueIsNull); : : if (peraggstate->initValueIsNull) 0.00 : 5b8f37: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx : : /* : * initval is potentially null, so don't try to access it as a struct : * field. Must do it the hard way with SysCacheGetAttr. : */ : textInitVal = SysCacheGetAttr(AGGFNOID, aggTuple, 0.00 : 5b8f3e: 48 89 c3 mov %rax,%rbx : Anum_pg_aggregate_agginitval, : &peraggstate->initValueIsNull); : : if (peraggstate->initValueIsNull) 0.00 : 5b8f41: 80 ba c8 00 00 00 00 cmpb $0x0,0xc8(%rdx) 0.00 : 5b8f48: 0f 84 a8 01 00 00 je 5b90f6 : peraggstate->initValue = (Datum) 0; 0.00 : 5b8f4e: 48 c7 82 c0 00 00 00 movq $0x0,0xc0(%rdx) 0.00 : 5b8f55: 00 00 00 00 : * that it's OK to use the first aggregated input value as the initial : * transValue. This should have been checked at agg definition time, : * but we must check again in case the transfn's strictness property : * has been changed. : */ : if (peraggstate->transfn.fn_strict && peraggstate->initValueIsNull) 0.00 : 5b8f59: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b8f60: 80 7b 36 00 cmpb $0x0,0x36(%rbx) 0.00 : 5b8f64: 74 37 je 5b8f9d 0.00 : 5b8f66: 80 bb c8 00 00 00 00 cmpb $0x0,0xc8(%rbx) 0.00 : 5b8f6d: 74 2e je 5b8f9d : { : if (numArguments <= numDirectArgs || 0.00 : 5b8f6f: 44 3b bd fc fd ff ff cmp -0x204(%rbp),%r15d 0.00 : 5b8f76: 0f 8e ba 05 00 00 jle 5b9536 0.00 : 5b8f7c: 48 63 85 fc fd ff ff movslq -0x204(%rbp),%rax 0.00 : 5b8f83: 8b b5 1c fe ff ff mov -0x1e4(%rbp),%esi 0.00 : 5b8f89: 8b bc 85 20 fe ff ff mov -0x1e0(%rbp,%rax,4),%edi /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeAgg.c:1861 100.00 : 5b8f90: e8 0b 5f f7 ff callq 52eea0 0.00 : 5b8f95: 84 c0 test %al,%al 0.00 : 5b8f97: 0f 84 99 05 00 00 je 5b9536 : : /* : * Get a tupledesc corresponding to the aggregated inputs (including : * sort expressions) of the agg. : */ : peraggstate->evaldesc = ExecTypeFromTL(aggref->args, false); 0.00 : 5b8f9d: 48 8b 95 e8 fd ff ff mov -0x218(%rbp),%rdx 0.00 : 5b8fa4: 31 f6 xor %esi,%esi 0.00 : 5b8fa6: 48 8b 7a 20 mov 0x20(%rdx),%rdi 0.00 : 5b8faa: e8 41 af ff ff callq 5b3ef0 0.00 : 5b8faf: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 5b8fb6: 48 89 81 d8 00 00 00 mov %rax,0xd8(%rcx) : : /* Create slot we're going to do argument evaluation in */ : peraggstate->evalslot = ExecInitExtraTupleSlot(estate); 0.00 : 5b8fbd: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5b8fc4: e8 87 b8 ff ff callq 5b4850 0.00 : 5b8fc9: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b8fd0: 48 89 c7 mov %rax,%rdi : ExecSetSlotDescriptor(peraggstate->evalslot, peraggstate->evaldesc); 0.00 : 5b8fd3: 48 8b b3 d8 00 00 00 mov 0xd8(%rbx),%rsi : * sort expressions) of the agg. : */ : peraggstate->evaldesc = ExecTypeFromTL(aggref->args, false); : : /* Create slot we're going to do argument evaluation in */ : peraggstate->evalslot = ExecInitExtraTupleSlot(estate); 0.00 : 5b8fda: 48 89 83 e8 00 00 00 mov %rax,0xe8(%rbx) : ExecSetSlotDescriptor(peraggstate->evalslot, peraggstate->evaldesc); 0.00 : 5b8fe1: e8 ca b5 ff ff callq 5b45b0 : : /* Set up projection info for evaluation */ : peraggstate->evalproj = ExecBuildProjectionInfo(aggrefstate->args, 0.00 : 5b8fe6: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 5b8fed: 48 8b 93 e8 00 00 00 mov 0xe8(%rbx),%rdx 0.00 : 5b8ff4: 31 c9 xor %ecx,%ecx 0.00 : 5b8ff6: 49 8b 7e 20 mov 0x20(%r14),%rdi 0.00 : 5b8ffa: 48 8b b0 c0 00 00 00 mov 0xc0(%rax),%rsi 0.00 : 5b9001: e8 7a be ff ff callq 5b4e80 0.00 : 5b9006: 48 89 83 e0 00 00 00 mov %rax,0xe0(%rbx) : * however; the agg's transfn and finalfn are responsible for that. : * : * Note that by construction, if there is a DISTINCT clause then the : * ORDER BY clause is a prefix of it (see transformDistinctClause). : */ : if (AGGKIND_IS_ORDERED_SET(aggref->aggkind)) 0.00 : 5b900d: 48 8b 95 e8 fd ff ff mov -0x218(%rbp),%rdx 0.00 : 5b9014: 80 7a 42 6e cmpb $0x6e,0x42(%rdx) 0.00 : 5b9018: 0f 84 c1 01 00 00 je 5b91df : sortlist = aggref->aggorder; : numSortCols = list_length(sortlist); : numDistinctCols = 0; : } : : peraggstate->numSortCols = numSortCols; 0.00 : 5b901e: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b9025: c7 83 8c 00 00 00 00 movl $0x0,0x8c(%rbx) 0.00 : 5b902c: 00 00 00 : peraggstate->numDistinctCols = numDistinctCols; 0.00 : 5b902f: c7 83 90 00 00 00 00 movl $0x0,0x90(%rbx) 0.00 : 5b9036: 00 00 00 0.00 : 5b9039: c7 85 04 fe ff ff 00 movl $0x0,-0x1fc(%rbp) 0.00 : 5b9040: 00 00 00 : i++; : } : Assert(i == numSortCols); : } : : if (aggref->aggdistinct) 0.00 : 5b9043: 48 8b 85 e8 fd ff ff mov -0x218(%rbp),%rax 0.00 : 5b904a: 48 83 78 30 00 cmpq $0x0,0x30(%rax) 0.00 : 5b904f: 74 7c je 5b90cd : : /* : * We need the equal function for each DISTINCT comparison we will : * make. : */ : peraggstate->equalfns = 0.00 : 5b9051: 48 63 bd 04 fe ff ff movslq -0x1fc(%rbp),%rdi 0.00 : 5b9058: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 5b905c: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 5b9060: e8 eb fc 1d 00 callq 798d50 0.00 : 5b9065: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 5b906c: 48 89 82 b8 00 00 00 mov %rax,0xb8(%rdx) : (FmgrInfo *) palloc(numDistinctCols * sizeof(FmgrInfo)); : : i = 0; : foreach(lc, aggref->aggdistinct) 0.00 : 5b9073: 48 8b 8d e8 fd ff ff mov -0x218(%rbp),%rcx 0.00 : 5b907a: 48 8b 41 30 mov 0x30(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5b907e: 48 85 c0 test %rax,%rax 0.00 : 5b9081: 74 4a je 5b90cd 0.00 : 5b9083: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5b9087: 4d 85 e4 test %r12,%r12 0.00 : 5b908a: 74 41 je 5b90cd 0.00 : 5b908c: 45 31 ed xor %r13d,%r13d 0.00 : 5b908f: 90 nop : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc); : : fmgr_info(get_opcode(sortcl->eqop), &peraggstate->equalfns[i]); 0.00 : 5b9090: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 5b9097: 49 63 dd movslq %r13d,%rbx : i++; 0.00 : 5b909a: 41 83 c5 01 add $0x1,%r13d : i = 0; : foreach(lc, aggref->aggdistinct) : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc); : : fmgr_info(get_opcode(sortcl->eqop), &peraggstate->equalfns[i]); 0.00 : 5b909e: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 5b90a2: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 5b90a6: 48 03 98 b8 00 00 00 add 0xb8(%rax),%rbx 0.00 : 5b90ad: 49 8b 04 24 mov (%r12),%rax 0.00 : 5b90b1: 8b 78 08 mov 0x8(%rax),%edi 0.00 : 5b90b4: e8 07 97 1b 00 callq 7727c0 0.00 : 5b90b9: 48 89 de mov %rbx,%rsi 0.00 : 5b90bc: 89 c7 mov %eax,%edi 0.00 : 5b90be: e8 9d 6f 1c 00 callq 780060 : */ : peraggstate->equalfns = : (FmgrInfo *) palloc(numDistinctCols * sizeof(FmgrInfo)); : : i = 0; : foreach(lc, aggref->aggdistinct) 0.00 : 5b90c3: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5b90c8: 4d 85 e4 test %r12,%r12 0.00 : 5b90cb: 75 c3 jne 5b9090 : i++; : } : Assert(i == numDistinctCols); : } : : ReleaseSysCache(aggTuple); 0.00 : 5b90cd: 48 8b bd 08 fe ff ff mov -0x1f8(%rbp),%rdi 0.00 : 5b90d4: e8 d7 8b 1b 00 callq 771cb0 0.00 : 5b90d9: e9 9b fa ff ff jmpq 5b8b79 : : /* Detect how many arguments to pass to the finalfn */ : if (aggform->aggfinalextra) : peraggstate->numFinalArgs = numArguments + 1; : else : peraggstate->numFinalArgs = numDirectArgs + 1; 0.00 : 5b90de: 8b 85 fc fd ff ff mov -0x204(%rbp),%eax 0.00 : 5b90e4: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b90eb: 83 c0 01 add $0x1,%eax 0.00 : 5b90ee: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 5b90f1: e9 bb fc ff ff jmpq 5b8db1 : Oid typinput, : typioparam; : char *strInitVal; : Datum initVal; : : getTypeInputInfo(transtype, &typinput, &typioparam); 0.00 : 5b90f6: 8b bd 1c fe ff ff mov -0x1e4(%rbp),%edi 0.00 : 5b90fc: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 5b9100: 48 8d 75 cc lea -0x34(%rbp),%rsi 0.00 : 5b9104: e8 67 ae 1b 00 callq 773f70 : strInitVal = TextDatumGetCString(textInitVal); 0.00 : 5b9109: 48 89 df mov %rbx,%rdi 0.00 : 5b910c: e8 9f 10 1a 00 callq 75a1b0 : initVal = OidInputFunctionCall(typinput, strInitVal, 0.00 : 5b9111: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 5b9114: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 5b9117: b9 ff ff ff ff mov $0xffffffff,%ecx : typioparam; : char *strInitVal; : Datum initVal; : : getTypeInputInfo(transtype, &typinput, &typioparam); : strInitVal = TextDatumGetCString(textInitVal); 0.00 : 5b911c: 49 89 c4 mov %rax,%r12 : initVal = OidInputFunctionCall(typinput, strInitVal, 0.00 : 5b911f: 48 89 c6 mov %rax,%rsi 0.00 : 5b9122: e8 a9 71 1c 00 callq 7802d0 : typioparam, -1); : pfree(strInitVal); 0.00 : 5b9127: 4c 89 e7 mov %r12,%rdi : char *strInitVal; : Datum initVal; : : getTypeInputInfo(transtype, &typinput, &typioparam); : strInitVal = TextDatumGetCString(textInitVal); : initVal = OidInputFunctionCall(typinput, strInitVal, 0.00 : 5b912a: 48 89 c3 mov %rax,%rbx : typioparam, -1); : pfree(strInitVal); 0.00 : 5b912d: e8 4e fa 1d 00 callq 798b80 : &peraggstate->initValueIsNull); : : if (peraggstate->initValueIsNull) : peraggstate->initValue = (Datum) 0; : else : peraggstate->initValue = GetAggInitVal(textInitVal, 0.00 : 5b9132: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 5b9139: 48 89 99 c0 00 00 00 mov %rbx,0xc0(%rcx) 0.00 : 5b9140: e9 14 fe ff ff jmpq 5b8f59 : fmgr_info(transfn_oid, &peraggstate->transfn); : fmgr_info_set_expr((Node *) transfnexpr, &peraggstate->transfn); : : if (OidIsValid(finalfn_oid)) : { : fmgr_info(finalfn_oid, &peraggstate->finalfn); 0.00 : 5b9145: 48 89 d6 mov %rdx,%rsi 0.00 : 5b9148: 44 89 e7 mov %r12d,%edi 0.00 : 5b914b: 48 83 c6 58 add $0x58,%rsi 0.00 : 5b914f: e8 0c 6f 1c 00 callq 780060 : fmgr_info_set_expr((Node *) finalfnexpr, &peraggstate->finalfn); 0.00 : 5b9154: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 5b9158: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 5b915f: 48 89 81 80 00 00 00 mov %rax,0x80(%rcx) 0.00 : 5b9166: e9 10 fd ff ff jmpq 5b8e7b : aclcheck_error(aclresult, ACL_KIND_PROC, : get_func_name(transfn_oid)); : InvokeFunctionExecuteHook(transfn_oid); : if (OidIsValid(finalfn_oid)) : { : aclresult = pg_proc_aclcheck(finalfn_oid, aggOwner, 0.00 : 5b916b: ba 80 00 00 00 mov $0x80,%edx 0.00 : 5b9170: 44 89 fe mov %r15d,%esi 0.00 : 5b9173: 44 89 e7 mov %r12d,%edi 0.00 : 5b9176: e8 95 99 f3 ff callq 4f2b10 : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) 0.00 : 5b917b: 85 c0 test %eax,%eax : aclcheck_error(aclresult, ACL_KIND_PROC, : get_func_name(transfn_oid)); : InvokeFunctionExecuteHook(transfn_oid); : if (OidIsValid(finalfn_oid)) : { : aclresult = pg_proc_aclcheck(finalfn_oid, aggOwner, 0.00 : 5b917d: 89 c3 mov %eax,%ebx : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) 0.00 : 5b917f: 0f 85 0b 02 00 00 jne 5b9390 : aclcheck_error(aclresult, ACL_KIND_PROC, : get_func_name(finalfn_oid)); : InvokeFunctionExecuteHook(finalfn_oid); 0.00 : 5b9185: 48 83 3d 4b 05 5c 00 cmpq $0x0,0x5c054b(%rip) # b796d8 0.00 : 5b918c: 00 0.00 : 5b918d: 0f 84 78 fb ff ff je 5b8d0b 0.00 : 5b9193: 44 89 e7 mov %r12d,%edi 0.00 : 5b9196: e8 b5 f8 f3 ff callq 4f8a50 0.00 : 5b919b: e9 6b fb ff ff jmpq 5b8d0b : ReleaseSysCache(procTuple); : : aclresult = pg_proc_aclcheck(transfn_oid, aggOwner, : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) : aclcheck_error(aclresult, ACL_KIND_PROC, 0.00 : 5b91a0: 44 89 ef mov %r13d,%edi 0.00 : 5b91a3: e8 08 99 1b 00 callq 772ab0 0.00 : 5b91a8: be 04 00 00 00 mov $0x4,%esi 0.00 : 5b91ad: 48 89 c2 mov %rax,%rdx 0.00 : 5b91b0: 89 df mov %ebx,%edi 0.00 : 5b91b2: e8 39 a5 f3 ff callq 4f36f0 0.00 : 5b91b7: e9 34 fb ff ff jmpq 5b8cf0 : : /* Check permission to call aggregate function */ : aclresult = pg_proc_aclcheck(aggref->aggfnoid, GetUserId(), : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) : aclcheck_error(aclresult, ACL_KIND_PROC, 0.00 : 5b91bc: 48 8b 85 e8 fd ff ff mov -0x218(%rbp),%rax 0.00 : 5b91c3: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 5b91c6: e8 e5 98 1b 00 callq 772ab0 0.00 : 5b91cb: be 04 00 00 00 mov $0x4,%esi 0.00 : 5b91d0: 48 89 c2 mov %rax,%rdx 0.00 : 5b91d3: 89 df mov %ebx,%edi 0.00 : 5b91d5: e8 16 a5 f3 ff callq 4f36f0 0.00 : 5b91da: e9 87 fa ff ff jmpq 5b8c66 : if (AGGKIND_IS_ORDERED_SET(aggref->aggkind)) : { : sortlist = NIL; : numSortCols = numDistinctCols = 0; : } : else if (aggref->aggdistinct) 0.00 : 5b91df: 4c 8b 6a 30 mov 0x30(%rdx),%r13 0.00 : 5b91e3: 4d 85 ed test %r13,%r13 0.00 : 5b91e6: 0f 84 c0 01 00 00 je 5b93ac : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5b91ec: 41 8b 4d 04 mov 0x4(%r13),%ecx 0.00 : 5b91f0: 89 8d 04 fe ff ff mov %ecx,-0x1fc(%rbp) 0.00 : 5b91f6: 89 cb mov %ecx,%ebx : sortlist = aggref->aggorder; : numSortCols = list_length(sortlist); : numDistinctCols = 0; : } : : peraggstate->numSortCols = numSortCols; 0.00 : 5b91f8: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax : peraggstate->numDistinctCols = numDistinctCols; : : if (numSortCols > 0) 0.00 : 5b91ff: 85 db test %ebx,%ebx : sortlist = aggref->aggorder; : numSortCols = list_length(sortlist); : numDistinctCols = 0; : } : : peraggstate->numSortCols = numSortCols; 0.00 : 5b9201: 89 98 8c 00 00 00 mov %ebx,0x8c(%rax) : peraggstate->numDistinctCols = numDistinctCols; 0.00 : 5b9207: 8b 95 04 fe ff ff mov -0x1fc(%rbp),%edx 0.00 : 5b920d: 89 90 90 00 00 00 mov %edx,0x90(%rax) : : if (numSortCols > 0) 0.00 : 5b9213: 0f 8e 2a fe ff ff jle 5b9043 : * (yet) : */ : Assert(node->aggstrategy != AGG_HASHED); : : /* If we have only one input, we need its len/byval info. */ : if (numInputs == 1) 0.00 : 5b9219: 83 bd 00 fe ff ff 01 cmpl $0x1,-0x200(%rbp) 0.00 : 5b9220: 0f 84 3e 01 00 00 je 5b9364 : { : get_typlenbyval(inputTypes[numDirectArgs], : &peraggstate->inputtypeLen, : &peraggstate->inputtypeByVal); : } : else if (numDistinctCols > 0) 0.00 : 5b9226: 8b 8d 04 fe ff ff mov -0x1fc(%rbp),%ecx 0.00 : 5b922c: 85 c9 test %ecx,%ecx 0.00 : 5b922e: 7e 29 jle 5b9259 : { : /* we will need an extra slot to store prior values */ : peraggstate->uniqslot = ExecInitExtraTupleSlot(estate); 0.00 : 5b9230: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5b9237: e8 14 b6 ff ff callq 5b4850 0.00 : 5b923c: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 5b9243: 48 89 c7 mov %rax,%rdi : ExecSetSlotDescriptor(peraggstate->uniqslot, 0.00 : 5b9246: 48 8b b1 d8 00 00 00 mov 0xd8(%rcx),%rsi : &peraggstate->inputtypeByVal); : } : else if (numDistinctCols > 0) : { : /* we will need an extra slot to store prior values */ : peraggstate->uniqslot = ExecInitExtraTupleSlot(estate); 0.00 : 5b924d: 48 89 81 f0 00 00 00 mov %rax,0xf0(%rcx) : ExecSetSlotDescriptor(peraggstate->uniqslot, 0.00 : 5b9254: e8 57 b3 ff ff callq 5b45b0 : peraggstate->evaldesc); : } : : /* Extract the sort information for use later */ : peraggstate->sortColIdx = 0.00 : 5b9259: 4c 63 e3 movslq %ebx,%r12 0.00 : 5b925c: 4b 8d 3c 24 lea (%r12,%r12,1),%rdi 0.00 : 5b9260: e8 eb fa 1d 00 callq 798d50 0.00 : 5b9265: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b926c: 48 89 83 98 00 00 00 mov %rax,0x98(%rbx) : (AttrNumber *) palloc(numSortCols * sizeof(AttrNumber)); : peraggstate->sortOperators = 0.00 : 5b9273: 4a 8d 1c a5 00 00 00 lea 0x0(,%r12,4),%rbx 0.00 : 5b927a: 00 0.00 : 5b927b: 48 89 df mov %rbx,%rdi 0.00 : 5b927e: e8 cd fa 1d 00 callq 798d50 0.00 : 5b9283: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx : (Oid *) palloc(numSortCols * sizeof(Oid)); : peraggstate->sortCollations = 0.00 : 5b928a: 48 89 df mov %rbx,%rdi : } : : /* Extract the sort information for use later */ : peraggstate->sortColIdx = : (AttrNumber *) palloc(numSortCols * sizeof(AttrNumber)); : peraggstate->sortOperators = 0.00 : 5b928d: 48 89 82 a0 00 00 00 mov %rax,0xa0(%rdx) : (Oid *) palloc(numSortCols * sizeof(Oid)); : peraggstate->sortCollations = 0.00 : 5b9294: e8 b7 fa 1d 00 callq 798d50 0.00 : 5b9299: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx : (Oid *) palloc(numSortCols * sizeof(Oid)); : peraggstate->sortNullsFirst = 0.00 : 5b92a0: 4c 89 e7 mov %r12,%rdi : /* Extract the sort information for use later */ : peraggstate->sortColIdx = : (AttrNumber *) palloc(numSortCols * sizeof(AttrNumber)); : peraggstate->sortOperators = : (Oid *) palloc(numSortCols * sizeof(Oid)); : peraggstate->sortCollations = 0.00 : 5b92a3: 48 89 81 a8 00 00 00 mov %rax,0xa8(%rcx) : (Oid *) palloc(numSortCols * sizeof(Oid)); : peraggstate->sortNullsFirst = 0.00 : 5b92aa: e8 a1 fa 1d 00 callq 798d50 0.00 : 5b92af: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b92b6: 48 89 83 b0 00 00 00 mov %rax,0xb0(%rbx) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5b92bd: 4d 8b 75 08 mov 0x8(%r13),%r14 : (bool *) palloc(numSortCols * sizeof(bool)); : : i = 0; : foreach(lc, sortlist) 0.00 : 5b92c1: 4d 85 f6 test %r14,%r14 0.00 : 5b92c4: 0f 84 79 fd ff ff je 5b9043 0.00 : 5b92ca: 45 31 ff xor %r15d,%r15d 0.00 : 5b92cd: 0f 1f 00 nopl (%rax) : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc); : TargetEntry *tle = get_sortgroupclause_tle(sortcl, : aggref->args); 0.00 : 5b92d0: 48 8b 85 e8 fd ff ff mov -0x218(%rbp),%rax : (bool *) palloc(numSortCols * sizeof(bool)); : : i = 0; : foreach(lc, sortlist) : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc); 0.00 : 5b92d7: 4d 8b 2e mov (%r14),%r13 : aggref->args); : : /* the parser should have made sure of this */ : Assert(OidIsValid(sortcl->sortop)); : : peraggstate->sortColIdx[i] = tle->resno; 0.00 : 5b92da: 4d 63 e7 movslq %r15d,%r12 : peraggstate->sortOperators[i] = sortcl->sortop; 0.00 : 5b92dd: 4a 8d 1c a5 00 00 00 lea 0x0(,%r12,4),%rbx 0.00 : 5b92e4: 00 : peraggstate->sortCollations[i] = exprCollation((Node *) tle->expr); : peraggstate->sortNullsFirst[i] = sortcl->nulls_first; : i++; 0.00 : 5b92e5: 41 83 c7 01 add $0x1,%r15d : i = 0; : foreach(lc, sortlist) : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc); : TargetEntry *tle = get_sortgroupclause_tle(sortcl, : aggref->args); 0.00 : 5b92e9: 48 8b 70 20 mov 0x20(%rax),%rsi 0.00 : 5b92ed: 4c 89 ef mov %r13,%rdi 0.00 : 5b92f0: e8 fb dd 07 00 callq 6370f0 : : /* the parser should have made sure of this */ : Assert(OidIsValid(sortcl->sortop)); : : peraggstate->sortColIdx[i] = tle->resno; 0.00 : 5b92f5: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 5b92fc: 48 8b 8a 98 00 00 00 mov 0x98(%rdx),%rcx 0.00 : 5b9303: 0f b7 50 10 movzwl 0x10(%rax),%edx 0.00 : 5b9307: 66 42 89 14 61 mov %dx,(%rcx,%r12,2) : peraggstate->sortOperators[i] = sortcl->sortop; 0.00 : 5b930c: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 5b9313: 48 8b 8a a0 00 00 00 mov 0xa0(%rdx),%rcx 0.00 : 5b931a: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5b931e: 42 89 14 a1 mov %edx,(%rcx,%r12,4) : peraggstate->sortCollations[i] = exprCollation((Node *) tle->expr); 0.00 : 5b9322: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 5b9329: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 5b932d: 48 03 99 a8 00 00 00 add 0xa8(%rcx),%rbx 0.00 : 5b9334: e8 d7 67 02 00 callq 5dfb10 0.00 : 5b9339: 89 03 mov %eax,(%rbx) : peraggstate->sortNullsFirst[i] = sortcl->nulls_first; 0.00 : 5b933b: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b9342: 41 0f b6 45 10 movzbl 0x10(%r13),%eax 0.00 : 5b9347: 48 8b 93 b0 00 00 00 mov 0xb0(%rbx),%rdx 0.00 : 5b934e: 42 88 04 22 mov %al,(%rdx,%r12,1) : (Oid *) palloc(numSortCols * sizeof(Oid)); : peraggstate->sortNullsFirst = : (bool *) palloc(numSortCols * sizeof(bool)); : : i = 0; : foreach(lc, sortlist) 0.00 : 5b9352: 4d 8b 76 08 mov 0x8(%r14),%r14 0.00 : 5b9356: 4d 85 f6 test %r14,%r14 0.00 : 5b9359: 0f 85 71 ff ff ff jne 5b92d0 0.00 : 5b935f: e9 df fc ff ff jmpq 5b9043 : Assert(node->aggstrategy != AGG_HASHED); : : /* If we have only one input, we need its len/byval info. */ : if (numInputs == 1) : { : get_typlenbyval(inputTypes[numDirectArgs], 0.00 : 5b9364: 48 89 c2 mov %rax,%rdx 0.00 : 5b9367: 48 89 c6 mov %rax,%rsi 0.00 : 5b936a: 48 63 85 fc fd ff ff movslq -0x204(%rbp),%rax 0.00 : 5b9371: 48 81 c2 d0 00 00 00 add $0xd0,%rdx 0.00 : 5b9378: 48 81 c6 ca 00 00 00 add $0xca,%rsi 0.00 : 5b937f: 8b bc 85 20 fe ff ff mov -0x1e0(%rbp,%rax,4),%edi 0.00 : 5b9386: e8 95 9b 1b 00 callq 772f20 0.00 : 5b938b: e9 c9 fe ff ff jmpq 5b9259 : if (OidIsValid(finalfn_oid)) : { : aclresult = pg_proc_aclcheck(finalfn_oid, aggOwner, : ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) : aclcheck_error(aclresult, ACL_KIND_PROC, 0.00 : 5b9390: 44 89 e7 mov %r12d,%edi 0.00 : 5b9393: e8 18 97 1b 00 callq 772ab0 0.00 : 5b9398: be 04 00 00 00 mov $0x4,%esi 0.00 : 5b939d: 48 89 c2 mov %rax,%rdx 0.00 : 5b93a0: 89 df mov %ebx,%edi 0.00 : 5b93a2: e8 49 a3 f3 ff callq 4f36f0 0.00 : 5b93a7: e9 d9 fd ff ff jmpq 5b9185 : numSortCols = numDistinctCols = list_length(sortlist); : Assert(numSortCols >= list_length(aggref->aggorder)); : } : else : { : sortlist = aggref->aggorder; 0.00 : 5b93ac: 48 8b 9d e8 fd ff ff mov -0x218(%rbp),%rbx 0.00 : 5b93b3: 4c 8b 6b 28 mov 0x28(%rbx),%r13 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5b93b7: 4d 85 ed test %r13,%r13 0.00 : 5b93ba: 0f 84 5e fc ff ff je 5b901e 0.00 : 5b93c0: 41 8b 5d 04 mov 0x4(%r13),%ebx 0.00 : 5b93c4: c7 85 04 fe ff ff 00 movl $0x0,-0x1fc(%rbp) 0.00 : 5b93cb: 00 00 00 0.00 : 5b93ce: e9 25 fe ff ff jmpq 5b91f8 : * The hash table always lives in the aggcontext memory context. : */ : static void : build_hash_table(AggState *aggstate) : { : Agg *node = (Agg *) aggstate->ss.ps.plan; 0.00 : 5b93d3: 48 8b 43 08 mov 0x8(%rbx),%rax : Assert(node->numGroups > 0); : : entrysize = sizeof(AggHashEntryData) + : (aggstate->numaggs - 1) * sizeof(AggStatePerGroupData); : : aggstate->hashtable = BuildTupleHashTable(node->numCols, 0.00 : 5b93d7: 44 8b 8b 98 00 00 00 mov 0x98(%rbx),%r9d 0.00 : 5b93de: 48 8b 8b a8 00 00 00 mov 0xa8(%rbx),%rcx 0.00 : 5b93e5: 48 8b 93 a0 00 00 00 mov 0xa0(%rbx),%rdx 0.00 : 5b93ec: 4c 8b 40 78 mov 0x78(%rax),%r8 0.00 : 5b93f0: 48 8b 70 68 mov 0x68(%rax),%rsi 0.00 : 5b93f4: 41 83 e9 01 sub $0x1,%r9d 0.00 : 5b93f8: 8b 78 64 mov 0x64(%rax),%edi 0.00 : 5b93fb: 48 8b 83 c0 00 00 00 mov 0xc0(%rbx),%rax 0.00 : 5b9402: 4d 63 c9 movslq %r9d,%r9 0.00 : 5b9405: 49 c1 e1 04 shl $0x4,%r9 0.00 : 5b9409: 49 83 c1 18 add $0x18,%r9 0.00 : 5b940d: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 5b9411: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 5b9416: 48 8b 83 b8 00 00 00 mov 0xb8(%rbx),%rax 0.00 : 5b941d: 48 89 04 24 mov %rax,(%rsp) 0.00 : 5b9421: e8 ba fb fe ff callq 5a8fe0 : * haven't been explicitly grouped by. : */ : static List * : find_hash_columns(AggState *aggstate) : { : Agg *node = (Agg *) aggstate->ss.ps.plan; 0.00 : 5b9426: 4c 8b 6b 08 mov 0x8(%rbx),%r13 : Assert(node->numGroups > 0); : : entrysize = sizeof(AggHashEntryData) + : (aggstate->numaggs - 1) * sizeof(AggStatePerGroupData); : : aggstate->hashtable = BuildTupleHashTable(node->numCols, 0.00 : 5b942a: 48 89 83 e8 00 00 00 mov %rax,0xe8(%rbx) : aggstate->peragg = peragg; : : if (node->aggstrategy == AGG_HASHED) : { : build_hash_table(aggstate); : aggstate->table_filled = false; 0.00 : 5b9431: c6 83 00 01 00 00 00 movb $0x0,0x100(%rbx) : find_unaggregated_cols(AggState *aggstate) : { : Agg *node = (Agg *) aggstate->ss.ps.plan; : Bitmapset *colnos; : : colnos = NULL; 0.00 : 5b9438: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 5b943f: 00 : (void) find_unaggregated_cols_walker((Node *) node->plan.targetlist, 0.00 : 5b9440: 48 8d 5d b8 lea -0x48(%rbp),%rbx 0.00 : 5b9444: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 5b9448: 48 89 de mov %rbx,%rsi 0.00 : 5b944b: e8 c0 f3 ff ff callq 5b8810 : &colnos); : (void) find_unaggregated_cols_walker((Node *) node->plan.qual, 0.00 : 5b9450: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 5b9454: 48 89 de mov %rbx,%rsi 0.00 : 5b9457: e8 b4 f3 ff ff callq 5b8810 : int i; : : /* Find Vars that will be needed in tlist and qual */ : colnos = find_unaggregated_cols(aggstate); : /* Add in all the grouping columns */ : for (i = 0; i < node->numCols; i++) 0.00 : 5b945c: 41 8b 7d 64 mov 0x64(%r13),%edi : colnos = NULL; : (void) find_unaggregated_cols_walker((Node *) node->plan.targetlist, : &colnos); : (void) find_unaggregated_cols_walker((Node *) node->plan.qual, : &colnos); : return colnos; 0.00 : 5b9460: 4c 8b 65 b8 mov -0x48(%rbp),%r12 : int i; : : /* Find Vars that will be needed in tlist and qual */ : colnos = find_unaggregated_cols(aggstate); : /* Add in all the grouping columns */ : for (i = 0; i < node->numCols; i++) 0.00 : 5b9464: 85 ff test %edi,%edi 0.00 : 5b9466: 7e 21 jle 5b9489 0.00 : 5b9468: 31 db xor %ebx,%ebx : colnos = bms_add_member(colnos, node->grpColIdx[i]); 0.00 : 5b946a: 49 8b 55 68 mov 0x68(%r13),%rdx 0.00 : 5b946e: 48 63 c3 movslq %ebx,%rax 0.00 : 5b9471: 4c 89 e7 mov %r12,%rdi : int i; : : /* Find Vars that will be needed in tlist and qual */ : colnos = find_unaggregated_cols(aggstate); : /* Add in all the grouping columns */ : for (i = 0; i < node->numCols; i++) 0.00 : 5b9474: 83 c3 01 add $0x1,%ebx : colnos = bms_add_member(colnos, node->grpColIdx[i]); 0.00 : 5b9477: 0f bf 34 42 movswl (%rdx,%rax,2),%esi 0.00 : 5b947b: e8 80 9b 02 00 callq 5e3000 : int i; : : /* Find Vars that will be needed in tlist and qual */ : colnos = find_unaggregated_cols(aggstate); : /* Add in all the grouping columns */ : for (i = 0; i < node->numCols; i++) 0.00 : 5b9480: 41 3b 5d 64 cmp 0x64(%r13),%ebx : colnos = bms_add_member(colnos, node->grpColIdx[i]); 0.00 : 5b9484: 49 89 c4 mov %rax,%r12 : int i; : : /* Find Vars that will be needed in tlist and qual */ : colnos = find_unaggregated_cols(aggstate); : /* Add in all the grouping columns */ : for (i = 0; i < node->numCols; i++) 0.00 : 5b9487: 7c e1 jl 5b946a 0.00 : 5b9489: 31 db xor %ebx,%ebx 0.00 : 5b948b: eb 0d jmp 5b949a : colnos = bms_add_member(colnos, node->grpColIdx[i]); : /* Convert to list, using lcons so largest element ends up first */ : collist = NIL; : while ((i = bms_first_member(colnos)) >= 0) : collist = lcons_int(i, collist); 0.00 : 5b948d: 48 89 de mov %rbx,%rsi 0.00 : 5b9490: 89 c7 mov %eax,%edi 0.00 : 5b9492: e8 59 83 02 00 callq 5e17f0 0.00 : 5b9497: 48 89 c3 mov %rax,%rbx : /* Add in all the grouping columns */ : for (i = 0; i < node->numCols; i++) : colnos = bms_add_member(colnos, node->grpColIdx[i]); : /* Convert to list, using lcons so largest element ends up first */ : collist = NIL; : while ((i = bms_first_member(colnos)) >= 0) 0.00 : 5b949a: 4c 89 e7 mov %r12,%rdi 0.00 : 5b949d: e8 3e 97 02 00 callq 5e2be0 0.00 : 5b94a2: 85 c0 test %eax,%eax 0.00 : 5b94a4: 79 e7 jns 5b948d : collist = lcons_int(i, collist); : bms_free(colnos); 0.00 : 5b94a6: 4c 89 e7 mov %r12,%rdi 0.00 : 5b94a9: e8 02 99 02 00 callq 5e2db0 : if (node->aggstrategy == AGG_HASHED) : { : build_hash_table(aggstate); : aggstate->table_filled = false; : /* Compute the columns we actually need to hash on */ : aggstate->hash_needed = find_hash_columns(aggstate); 0.00 : 5b94ae: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 5b94b5: 48 89 98 f8 00 00 00 mov %rbx,0xf8(%rax) 0.00 : 5b94bc: e9 0e f6 ff ff jmpq 5b8acf : /* : * get the count of aggregates in targetlist and quals : */ : numaggs = aggstate->numaggs; : Assert(numaggs == list_length(aggstate->aggs)); : if (numaggs <= 0) 0.00 : 5b94c1: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 5b94c7: 41 be 08 00 00 00 mov $0x8,%r14d 0.00 : 5b94cd: 41 bf a8 04 00 00 mov $0x4a8,%r15d 0.00 : 5b94d3: e9 68 f5 ff ff jmpq 5b8a40 : * equality if not hashing. : */ : if (node->numCols > 0) : { : if (node->aggstrategy == AGG_HASHED) : execTuplesHashPrepare(node->numCols, 0.00 : 5b94d8: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 5b94df: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 5b94e6: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5b94ea: 48 81 c1 a8 00 00 00 add $0xa8,%rcx 0.00 : 5b94f1: 48 81 c2 a0 00 00 00 add $0xa0,%rdx 0.00 : 5b94f8: e8 f3 fc fe ff callq 5a91f0 0.00 : 5b94fd: e9 68 f5 ff ff jmpq 5b8a6a : Oid aggOwner; : : procTuple = SearchSysCache1(PROCOID, : ObjectIdGetDatum(aggref->aggfnoid)); : if (!HeapTupleIsValid(procTuple)) : elog(ERROR, "cache lookup failed for function %u", 0.00 : 5b9502: ba a4 b7 88 00 mov $0x88b7a4,%edx 0.00 : 5b9507: be cd 06 00 00 mov $0x6cd,%esi 0.00 : 5b950c: bf a7 b6 88 00 mov $0x88b6a7,%edi 0.00 : 5b9511: e8 0a 1f 1c 00 callq 77b420 0.00 : 5b9516: 48 8b 8d e8 fd ff ff mov -0x218(%rbp),%rcx 0.00 : 5b951d: be b8 2b 7c 00 mov $0x7c2bb8,%esi 0.00 : 5b9522: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b9527: 31 c0 xor %eax,%eax 0.00 : 5b9529: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 5b952c: e8 ff 1c 1c 00 callq 77b230 0.00 : 5b9531: e8 9a ff ea ff callq 4694d0 : */ : if (peraggstate->transfn.fn_strict && peraggstate->initValueIsNull) : { : if (numArguments <= numDirectArgs || : !IsBinaryCoercible(inputTypes[numDirectArgs], aggtranstype)) : ereport(ERROR, 0.00 : 5b9536: 45 31 c0 xor %r8d,%r8d 0.00 : 5b9539: b9 a4 b7 88 00 mov $0x88b7a4,%ecx 0.00 : 5b953e: ba 4a 07 00 00 mov $0x74a,%edx 0.00 : 5b9543: be a7 b6 88 00 mov $0x88b6a7,%esi 0.00 : 5b9548: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b954d: e8 6e 15 1c 00 callq 77aac0 0.00 : 5b9552: 84 c0 test %al,%al 0.00 : 5b9554: 74 2d je 5b9583 0.00 : 5b9556: 48 8b 85 e8 fd ff ff mov -0x218(%rbp),%rax 0.00 : 5b955d: bf 30 b7 88 00 mov $0x88b730,%edi 0.00 : 5b9562: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 5b9565: 31 c0 xor %eax,%eax 0.00 : 5b9567: e8 34 33 1c 00 callq 77c8a0 0.00 : 5b956c: bf 84 00 06 03 mov $0x3060084,%edi 0.00 : 5b9571: 89 c3 mov %eax,%ebx 0.00 : 5b9573: e8 d8 37 1c 00 callq 77cd50 0.00 : 5b9578: 89 de mov %ebx,%esi 0.00 : 5b957a: 89 c7 mov %eax,%edi 0.00 : 5b957c: 31 c0 xor %eax,%eax 0.00 : 5b957e: e8 5d 10 1c 00 callq 77a5e0 0.00 : 5b9583: e8 48 ff ea ff callq 4694d0 : : /* Fetch the pg_aggregate row */ : aggTuple = SearchSysCache1(AGGFNOID, : ObjectIdGetDatum(aggref->aggfnoid)); : if (!HeapTupleIsValid(aggTuple)) : elog(ERROR, "cache lookup failed for aggregate %u", 0.00 : 5b9588: ba a4 b7 88 00 mov $0x88b7a4,%edx 0.00 : 5b958d: be b6 06 00 00 mov $0x6b6,%esi 0.00 : 5b9592: bf a7 b6 88 00 mov $0x88b6a7,%edi 0.00 : 5b9597: e8 84 1e 1c 00 callq 77b420 0.00 : 5b959c: 48 8b 85 e8 fd ff ff mov -0x218(%rbp),%rax 0.00 : 5b95a3: be e8 3f 87 00 mov $0x873fe8,%esi 0.00 : 5b95a8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b95ad: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 5b95b0: 31 c0 xor %eax,%eax 0.00 : 5b95b2: e8 79 1c 1c 00 callq 77b230 0.00 : 5b95b7: e8 14 ff ea ff callq 4694d0 : * duplicates are detected, we only make an AggStatePerAgg struct for the : * first one. The clones are simply pointed at the same result entry by : * giving them duplicate aggno values. : */ : aggno = -1; : foreach(l, aggstate->aggs) 0.00 : 5b95bc: 31 c0 xor %eax,%eax 0.00 : 5b95be: e9 da f5 ff ff jmpq 5b8b9d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeModifyTable.c:483 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c3200 : : * if needed. : * ---------------------------------------------------------------- : */ : TupleTableSlot * : ExecModifyTable(ModifyTableState *node) : { 0.00 : 5c3200: 55 push %rbp 0.00 : 5c3201: 48 89 e5 mov %rsp,%rbp 0.00 : 5c3204: 41 57 push %r15 0.00 : 5c3206: 41 56 push %r14 0.00 : 5c3208: 41 55 push %r13 0.00 : 5c320a: 49 89 fd mov %rdi,%r13 0.00 : 5c320d: 41 54 push %r12 0.00 : 5c320f: 53 push %rbx 0.00 : 5c3210: 48 81 ec e8 00 00 00 sub $0xe8,%rsp : EState *estate = node->ps.state; 0.00 : 5c3217: 4c 8b 77 10 mov 0x10(%rdi),%r14 : CmdType operation = node->operation; 0.00 : 5c321b: 8b 47 78 mov 0x78(%rdi),%eax 0.00 : 5c321e: 89 85 0c ff ff ff mov %eax,-0xf4(%rbp) : * although ModifyTable should not get executed within an EvalPlanQual : * operation, we do have to allow it to be initialized and shut down in : * case it is within a CTE subplan. Hence this test must be here, not in : * ExecInitModifyTable.) : */ : if (estate->es_epqTuple != NULL) 0.00 : 5c3224: 49 83 be d0 00 00 00 cmpq $0x0,0xd0(%r14) 0.00 : 5c322b: 00 0.00 : 5c322c: 0f 85 40 0b 00 00 jne 5c3d72 : * If we've already completed processing, don't try to do more. We need : * this test because ExecPostprocessPlan might call us an extra time, and : * our subplan's nodes aren't necessarily robust against being called : * extra times. : */ : if (node->mt_done) 0.00 : 5c3232: 45 31 e4 xor %r12d,%r12d 0.00 : 5c3235: 80 7f 7d 00 cmpb $0x0,0x7d(%rdi) 0.00 : 5c3239: 0f 85 b1 03 00 00 jne 5c35f0 : return NULL; : : /* : * On first call, fire BEFORE STATEMENT triggers before proceeding. : */ : if (node->fireBSTriggers) 0.00 : 5c323f: 80 bf d0 00 00 00 00 cmpb $0x0,0xd0(%rdi) 0.00 : 5c3246: 0f 85 14 02 00 00 jne 5c3460 : fireBSTriggers(node); : node->fireBSTriggers = false; : } : : /* Preload local variables */ : resultRelInfo = node->resultRelInfo + node->mt_whichplan; 0.00 : 5c324c: 49 63 95 8c 00 00 00 movslq 0x8c(%r13),%rdx 0.00 : 5c3253: 49 8b 85 90 00 00 00 mov 0x90(%r13),%rax 0.00 : 5c325a: 48 89 d1 mov %rdx,%rcx 0.00 : 5c325d: 48 c1 e1 07 shl $0x7,%rcx 0.00 : 5c3261: 48 01 c1 add %rax,%rcx : subplanstate = node->mt_plans[node->mt_whichplan]; 0.00 : 5c3264: 49 8b 85 80 00 00 00 mov 0x80(%r13),%rax : fireBSTriggers(node); : node->fireBSTriggers = false; : } : : /* Preload local variables */ : resultRelInfo = node->resultRelInfo + node->mt_whichplan; 0.00 : 5c326b: 48 89 8d 18 ff ff ff mov %rcx,-0xe8(%rbp) : subplanstate = node->mt_plans[node->mt_whichplan]; 0.00 : 5c3272: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5c3276: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : junkfilter = resultRelInfo->ri_junkFilter; 0.00 : 5c327d: 48 8b 51 70 mov 0x70(%rcx),%rdx : * dynamically (since our subplan could include a reference to a modifying : * CTE). So we have to save and restore the caller's value. : */ : saved_resultRelInfo = estate->es_result_relation_info; : : estate->es_result_relation_info = resultRelInfo; 0.00 : 5c3281: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax : } : : /* Preload local variables */ : resultRelInfo = node->resultRelInfo + node->mt_whichplan; : subplanstate = node->mt_plans[node->mt_whichplan]; : junkfilter = resultRelInfo->ri_junkFilter; 0.00 : 5c3288: 48 89 95 28 ff ff ff mov %rdx,-0xd8(%rbp) : * relation while we are within this ModifyTable node. Even though : * ModifyTable nodes can't be nested statically, they can be nested : * dynamically (since our subplan could include a reference to a modifying : * CTE). So we have to save and restore the caller's value. : */ : saved_resultRelInfo = estate->es_result_relation_info; 0.00 : 5c328f: 49 8b 4e 48 mov 0x48(%r14),%rcx : { : case CMD_INSERT: : slot = ExecInsert(slot, planSlot, estate, node->canSetTag); : break; : case CMD_UPDATE: : slot = ExecUpdate(tupleid, oldtuple, slot, planSlot, 0.00 : 5c3293: 49 8d 95 a0 00 00 00 lea 0xa0(%r13),%rdx : * relation while we are within this ModifyTable node. Even though : * ModifyTable nodes can't be nested statically, they can be nested : * dynamically (since our subplan could include a reference to a modifying : * CTE). So we have to save and restore the caller's value. : */ : saved_resultRelInfo = estate->es_result_relation_info; 0.00 : 5c329a: 48 89 8d 10 ff ff ff mov %rcx,-0xf0(%rbp) : : estate->es_result_relation_info = resultRelInfo; 0.00 : 5c32a1: 49 89 46 48 mov %rax,0x48(%r14) : { : case CMD_INSERT: : slot = ExecInsert(slot, planSlot, estate, node->canSetTag); : break; : case CMD_UPDATE: : slot = ExecUpdate(tupleid, oldtuple, slot, planSlot, 0.00 : 5c32a5: 48 89 95 00 ff ff ff mov %rdx,-0x100(%rbp) 0.00 : 5c32ac: 48 c7 85 38 ff ff ff movq $0x0,-0xc8(%rbp) 0.00 : 5c32b3: 00 00 00 00 0.00 : 5c32b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c32be: 00 00 : * Reset the per-output-tuple exprcontext. This is needed because : * triggers expect to use that context as workspace. It's a bit ugly : * to do this below the top level of the plan, however. We might need : * to rethink this later. : */ : ResetPerTupleExprContext(estate); 0.00 : 5c32c0: 49 8b 86 c8 00 00 00 mov 0xc8(%r14),%rax 0.00 : 5c32c7: 48 85 c0 test %rax,%rax 0.00 : 5c32ca: 74 09 je 5c32d5 0.00 : 5c32cc: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 5c32d0: e8 db 56 1d 00 callq 7989b0 : : planSlot = ExecProcNode(subplanstate); 0.00 : 5c32d5: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi 0.00 : 5c32dc: e8 bf 91 fe ff callq 5ac4a0 : : if (TupIsNull(planSlot)) 0.00 : 5c32e1: 48 85 c0 test %rax,%rax : * to do this below the top level of the plan, however. We might need : * to rethink this later. : */ : ResetPerTupleExprContext(estate); : : planSlot = ExecProcNode(subplanstate); 0.00 : 5c32e4: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : : if (TupIsNull(planSlot)) 0.00 : 5c32eb: 0f 84 b7 01 00 00 je 5c34a8 0.00 : 5c32f1: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c32f5: 0f 85 ad 01 00 00 jne 5c34a8 : : EvalPlanQualSetSlot(&node->mt_epqstate, planSlot); : slot = planSlot; : : oldtuple = NULL; : if (junkfilter != NULL) 0.00 : 5c32fb: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : 5c3302: 00 : } : else : break; : } : : EvalPlanQualSetSlot(&node->mt_epqstate, planSlot); 0.00 : 5c3303: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax : slot = planSlot; : : oldtuple = NULL; : if (junkfilter != NULL) 0.00 : 5c330a: 48 c7 85 40 ff ff ff movq $0x0,-0xc0(%rbp) 0.00 : 5c3311: 00 00 00 00 : } : else : break; : } : : EvalPlanQualSetSlot(&node->mt_epqstate, planSlot); 0.00 : 5c3315: 49 89 85 b0 00 00 00 mov %rax,0xb0(%r13) : slot = planSlot; : : oldtuple = NULL; : if (junkfilter != NULL) 0.00 : 5c331c: 49 89 c4 mov %rax,%r12 0.00 : 5c331f: 0f 84 21 02 00 00 je 5c3546 : { : /* : * extract the 'ctid' or 'wholerow' junk attribute. : */ : if (operation == CMD_UPDATE || operation == CMD_DELETE) 0.00 : 5c3325: 83 bd 0c ff ff ff 02 cmpl $0x2,-0xf4(%rbp) 0.00 : 5c332c: 0f 84 d6 02 00 00 je 5c3608 0.00 : 5c3332: 83 bd 0c ff ff ff 04 cmpl $0x4,-0xf4(%rbp) 0.00 : 5c3339: 0f 84 c9 02 00 00 je 5c3608 : oldtupdata.t_data = DatumGetHeapTupleHeader(datum); : oldtupdata.t_len = : HeapTupleHeaderGetDatumLength(oldtupdata.t_data); : ItemPointerSetInvalid(&(oldtupdata.t_self)); : /* Historically, view triggers see invalid t_tableOid. */ : oldtupdata.t_tableOid = 0.00 : 5c333f: 48 c7 85 40 ff ff ff movq $0x0,-0xc0(%rbp) 0.00 : 5c3346: 00 00 00 00 : } : : /* : * apply the junkfilter if needed. : */ : if (operation != CMD_DELETE) 0.00 : 5c334a: 83 bd 0c ff ff ff 04 cmpl $0x4,-0xf4(%rbp) 0.00 : 5c3351: 0f 85 d9 01 00 00 jne 5c3530 : case CMD_UPDATE: : slot = ExecUpdate(tupleid, oldtuple, slot, planSlot, : &node->mt_epqstate, estate, node->canSetTag); : break; : case CMD_DELETE: : slot = ExecDelete(tupleid, oldtuple, planSlot, 0.00 : 5c3357: 41 0f b6 4d 7c movzbl 0x7c(%r13),%ecx 0.00 : 5c335c: 88 8d 67 ff ff ff mov %cl,-0x99(%rbp) : TupleTableSlot *slot = NULL; : : /* : * get information on the (current) result relation : */ : resultRelInfo = estate->es_result_relation_info; 0.00 : 5c3362: 4d 8b 66 48 mov 0x48(%r14),%r12 : resultRelationDesc = resultRelInfo->ri_RelationDesc; : : /* BEFORE ROW DELETE Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c3366: 49 8b 44 24 28 mov 0x28(%r12),%rax : : /* : * get information on the (current) result relation : */ : resultRelInfo = estate->es_result_relation_info; : resultRelationDesc = resultRelInfo->ri_RelationDesc; 0.00 : 5c336b: 4d 8b 7c 24 08 mov 0x8(%r12),%r15 : : /* BEFORE ROW DELETE Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c3370: 48 85 c0 test %rax,%rax 0.00 : 5c3373: 74 14 je 5c3389 0.00 : 5c3375: 80 78 16 00 cmpb $0x0,0x16(%rax) 0.00 : 5c3379: 0f 85 a8 0a 00 00 jne 5c3e27 : if (!dodelete) /* "do nothing" */ : return NULL; : } : : /* INSTEAD OF ROW DELETE Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c337f: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 5c3383: 0f 85 df 0a 00 00 jne 5c3e68 : dodelete = ExecIRDeleteTriggers(estate, resultRelInfo, oldtuple); : : if (!dodelete) /* "do nothing" */ : return NULL; : } : else if (resultRelInfo->ri_FdwRoutine) 0.00 : 5c3389: 49 8b 44 24 48 mov 0x48(%r12),%rax 0.00 : 5c338e: 48 85 c0 test %rax,%rax 0.00 : 5c3391: 0f 85 b1 08 00 00 jne 5c3c48 : * can't-serialize error if not. This is a special-case behavior : * needed for referential integrity updates in transaction-snapshot : * mode transactions. : */ : ldelete:; : result = heap_delete(resultRelationDesc, tupleid, 0.00 : 5c3397: 49 8b 4e 10 mov 0x10(%r14),%rcx 0.00 : 5c339b: 41 8b 56 30 mov 0x30(%r14),%edx 0.00 : 5c339f: 4c 8d 4d b0 lea -0x50(%rbp),%r9 0.00 : 5c33a3: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 5c33aa: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 5c33b0: 4c 89 ff mov %r15,%rdi 0.00 : 5c33b3: e8 38 6e ed ff callq 49a1f0 : estate->es_output_cid, : estate->es_crosscheck_snapshot, : true /* wait for commit */ , : &hufd); : switch (result) 0.00 : 5c33b8: 83 f8 02 cmp $0x2,%eax : * can't-serialize error if not. This is a special-case behavior : * needed for referential integrity updates in transaction-snapshot : * mode transactions. : */ : ldelete:; : result = heap_delete(resultRelationDesc, tupleid, 0.00 : 5c33bb: 89 c3 mov %eax,%ebx : estate->es_output_cid, : estate->es_crosscheck_snapshot, : true /* wait for commit */ , : &hufd); : switch (result) 0.00 : 5c33bd: 0f 84 ed 05 00 00 je 5c39b0 0.00 : 5c33c3: 83 f8 03 cmp $0x3,%eax 0.00 : 5c33c6: 0f 84 e4 07 00 00 je 5c3bb0 0.00 : 5c33cc: 85 c0 test %eax,%eax 0.00 : 5c33ce: 66 90 xchg %ax,%ax 0.00 : 5c33d0: 0f 85 1a 06 00 00 jne 5c39f0 : } : /* tuple already deleted; nothing to do */ : return NULL; : : default: : elog(ERROR, "unrecognized heap_delete status: %u", result); 0.00 : 5c33d6: 31 db xor %ebx,%ebx : * take care of it later. We can't delete index tuples immediately : * anyway, since the tuple is still visible to other transactions. : */ : } : : if (canSetTag) 0.00 : 5c33d8: 80 bd 67 ff ff ff 00 cmpb $0x0,-0x99(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeModifyTable.c:483 100.00 : 5c33df: 74 08 je 5c33e9 : (estate->es_processed)++; 0.00 : 5c33e1: 41 83 86 98 00 00 00 addl $0x1,0x98(%r14) 0.00 : 5c33e8: 01 : : /* AFTER ROW DELETE Triggers */ : ExecARDeleteTriggers(estate, resultRelInfo, tupleid, oldtuple); 0.00 : 5c33e9: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 5c33f0: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 5c33f7: 4c 89 e6 mov %r12,%rsi 0.00 : 5c33fa: 4c 89 f7 mov %r14,%rdi 0.00 : 5c33fd: e8 5e 09 fd ff callq 593d60 : : /* Process RETURNING if present */ : if (resultRelInfo->ri_projectReturning) 0.00 : 5c3402: 49 83 7c 24 78 00 cmpq $0x0,0x78(%r12) 0.00 : 5c3408: 0f 84 b2 fe ff ff je 5c32c0 : */ : TupleTableSlot *rslot; : HeapTupleData deltuple; : Buffer delbuffer; : : if (resultRelInfo->ri_FdwRoutine) 0.00 : 5c340e: 49 83 7c 24 48 00 cmpq $0x0,0x48(%r12) 0.00 : 5c3414: 0f 84 f1 08 00 00 je 5c3d0b : { : /* FDW must have provided a slot containing the deleted row */ : Assert(!TupIsNull(slot)); : delbuffer = InvalidBuffer; 0.00 : 5c341a: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : if (slot->tts_tupleDescriptor != RelationGetDescr(resultRelationDesc)) : ExecSetSlotDescriptor(slot, RelationGetDescr(resultRelationDesc)); : ExecStoreTuple(&deltuple, slot, InvalidBuffer, false); : } : : rslot = ExecProcessReturning(resultRelInfo->ri_projectReturning, 0.00 : 5c3421: 49 8b 7c 24 78 mov 0x78(%r12),%rdi 0.00 : 5c3426: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 5c342d: 48 89 de mov %rbx,%rsi 0.00 : 5c3430: e8 6b fd ff ff callq 5c31a0 : : /* : * Before releasing the target tuple again, make sure rslot has a : * local copy of any pass-by-reference values. : */ : ExecMaterializeSlot(rslot); 0.00 : 5c3435: 48 89 c7 mov %rax,%rdi : if (slot->tts_tupleDescriptor != RelationGetDescr(resultRelationDesc)) : ExecSetSlotDescriptor(slot, RelationGetDescr(resultRelationDesc)); : ExecStoreTuple(&deltuple, slot, InvalidBuffer, false); : } : : rslot = ExecProcessReturning(resultRelInfo->ri_projectReturning, 0.00 : 5c3438: 49 89 c4 mov %rax,%r12 : : /* : * Before releasing the target tuple again, make sure rslot has a : * local copy of any pass-by-reference values. : */ : ExecMaterializeSlot(rslot); 0.00 : 5c343b: e8 c0 0b ff ff callq 5b4000 : : ExecClearTuple(slot); 0.00 : 5c3440: 48 89 df mov %rbx,%rdi 0.00 : 5c3443: e8 c8 0c ff ff callq 5b4110 : if (BufferIsValid(delbuffer)) 0.00 : 5c3448: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 5c344b: 85 ff test %edi,%edi 0.00 : 5c344d: 0f 84 f3 03 00 00 je 5c3846 : ReleaseBuffer(delbuffer); 0.00 : 5c3453: e8 08 1a 0b 00 callq 674e60 0.00 : 5c3458: e9 e9 03 00 00 jmpq 5c3846 0.00 : 5c345d: 0f 1f 00 nopl (%rax) : * Process BEFORE EACH STATEMENT triggers : */ : static void : fireBSTriggers(ModifyTableState *node) : { : switch (node->operation) 0.00 : 5c3460: 83 bd 0c ff ff ff 03 cmpl $0x3,-0xf4(%rbp) 0.00 : 5c3467: 0f 84 63 05 00 00 je 5c39d0 0.00 : 5c346d: 83 bd 0c ff ff ff 04 cmpl $0x4,-0xf4(%rbp) 0.00 : 5c3474: 0f 84 b6 07 00 00 je 5c3c30 0.00 : 5c347a: 83 bd 0c ff ff ff 02 cmpl $0x2,-0xf4(%rbp) : break; : case CMD_DELETE: : ExecBSDeleteTriggers(node->ps.state, node->resultRelInfo); : break; : default: : elog(ERROR, "unknown operation"); 0.00 : 5c3481: ba 90 c2 88 00 mov $0x88c290,%edx 0.00 : 5c3486: be 2e 03 00 00 mov $0x32e,%esi : * Process BEFORE EACH STATEMENT triggers : */ : static void : fireBSTriggers(ModifyTableState *node) : { : switch (node->operation) 0.00 : 5c348b: 0f 85 e6 00 00 00 jne 5c3577 : { : case CMD_INSERT: : ExecBSInsertTriggers(node->ps.state, node->resultRelInfo); : break; : case CMD_UPDATE: : ExecBSUpdateTriggers(node->ps.state, node->resultRelInfo); 0.00 : 5c3491: 48 8b b7 90 00 00 00 mov 0x90(%rdi),%rsi 0.00 : 5c3498: 4c 89 f7 mov %r14,%rdi 0.00 : 5c349b: e8 00 03 fd ff callq 5937a0 0.00 : 5c34a0: e9 3a 05 00 00 jmpq 5c39df 0.00 : 5c34a5: 0f 1f 00 nopl (%rax) : planSlot = ExecProcNode(subplanstate); : : if (TupIsNull(planSlot)) : { : /* advance to next subplan if any */ : node->mt_whichplan++; 0.00 : 5c34a8: 41 8b 85 8c 00 00 00 mov 0x8c(%r13),%eax 0.00 : 5c34af: 83 c0 01 add $0x1,%eax : if (node->mt_whichplan < node->mt_nplans) 0.00 : 5c34b2: 41 3b 85 88 00 00 00 cmp 0x88(%r13),%eax : planSlot = ExecProcNode(subplanstate); : : if (TupIsNull(planSlot)) : { : /* advance to next subplan if any */ : node->mt_whichplan++; 0.00 : 5c34b9: 41 89 85 8c 00 00 00 mov %eax,0x8c(%r13) : if (node->mt_whichplan < node->mt_nplans) 0.00 : 5c34c0: 0f 8d da 00 00 00 jge 5c35a0 : { : resultRelInfo++; : subplanstate = node->mt_plans[node->mt_whichplan]; 0.00 : 5c34c6: 48 63 d0 movslq %eax,%rdx 0.00 : 5c34c9: 49 8b 85 80 00 00 00 mov 0x80(%r13),%rax : { : /* advance to next subplan if any */ : node->mt_whichplan++; : if (node->mt_whichplan < node->mt_nplans) : { : resultRelInfo++; 0.00 : 5c34d0: 48 83 ad 18 ff ff ff subq $0xffffffffffffff80,-0xe8(%rbp) 0.00 : 5c34d7: 80 : subplanstate = node->mt_plans[node->mt_whichplan]; : junkfilter = resultRelInfo->ri_junkFilter; 0.00 : 5c34d8: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : /* advance to next subplan if any */ : node->mt_whichplan++; : if (node->mt_whichplan < node->mt_nplans) : { : resultRelInfo++; : subplanstate = node->mt_plans[node->mt_whichplan]; 0.00 : 5c34df: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 5c34e3: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : junkfilter = resultRelInfo->ri_junkFilter; : estate->es_result_relation_info = resultRelInfo; 0.00 : 5c34ea: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax : node->mt_whichplan++; : if (node->mt_whichplan < node->mt_nplans) : { : resultRelInfo++; : subplanstate = node->mt_plans[node->mt_whichplan]; : junkfilter = resultRelInfo->ri_junkFilter; 0.00 : 5c34f1: 48 8b 49 70 mov 0x70(%rcx),%rcx 0.00 : 5c34f5: 48 89 8d 28 ff ff ff mov %rcx,-0xd8(%rbp) : estate->es_result_relation_info = resultRelInfo; 0.00 : 5c34fc: 49 89 46 48 mov %rax,0x48(%r14) : EvalPlanQualSetPlan(&node->mt_epqstate, subplanstate->plan, 0.00 : 5c3500: 49 63 95 8c 00 00 00 movslq 0x8c(%r13),%rdx 0.00 : 5c3507: 49 8b 85 98 00 00 00 mov 0x98(%r13),%rax 0.00 : 5c350e: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 5c3515: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 5c351c: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 5c3520: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 5c3524: e8 e7 64 fe ff callq 5a9a10 : node->mt_arowmarks[node->mt_whichplan]); : continue; 0.00 : 5c3529: e9 92 fd ff ff jmpq 5c32c0 0.00 : 5c352e: 66 90 xchg %ax,%ax : : /* : * apply the junkfilter if needed. : */ : if (operation != CMD_DELETE) : slot = ExecFilterJunk(junkfilter, slot); 0.00 : 5c3530: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 5c3537: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 5c353e: e8 1d 60 fe ff callq 5a9560 0.00 : 5c3543: 49 89 c4 mov %rax,%r12 : } : : switch (operation) 0.00 : 5c3546: 83 bd 0c ff ff ff 03 cmpl $0x3,-0xf4(%rbp) 0.00 : 5c354d: 0f 84 0d 03 00 00 je 5c3860 0.00 : 5c3553: 83 bd 0c ff ff ff 04 cmpl $0x4,-0xf4(%rbp) 0.00 : 5c355a: 0f 84 f7 fd ff ff je 5c3357 0.00 : 5c3560: 83 bd 0c ff ff ff 02 cmpl $0x2,-0xf4(%rbp) 0.00 : 5c3567: 0f 84 43 01 00 00 je 5c36b0 : case CMD_DELETE: : slot = ExecDelete(tupleid, oldtuple, planSlot, : &node->mt_epqstate, estate, node->canSetTag); : break; : default: : elog(ERROR, "unknown operation"); 0.00 : 5c356d: ba 80 c2 88 00 mov $0x88c280,%edx 0.00 : 5c3572: be 0c 04 00 00 mov $0x40c,%esi 0.00 : 5c3577: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c357c: e8 9f 7e 1b 00 callq 77b420 0.00 : 5c3581: be 98 c0 88 00 mov $0x88c098,%esi 0.00 : 5c3586: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c358b: 31 c0 xor %eax,%eax 0.00 : 5c358d: e8 9e 7c 1b 00 callq 77b230 0.00 : 5c3592: e8 39 5f ea ff callq 4694d0 0.00 : 5c3597: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c359e: 00 00 : return slot; : } : } : : /* Restore es_result_relation_info before exiting */ : estate->es_result_relation_info = saved_resultRelInfo; 0.00 : 5c35a0: 48 8b 85 10 ff ff ff mov -0xf0(%rbp),%rax 0.00 : 5c35a7: 49 89 46 48 mov %rax,0x48(%r14) : * Process AFTER EACH STATEMENT triggers : */ : static void : fireASTriggers(ModifyTableState *node) : { : switch (node->operation) 0.00 : 5c35ab: 41 8b 45 78 mov 0x78(%r13),%eax 0.00 : 5c35af: 83 f8 03 cmp $0x3,%eax 0.00 : 5c35b2: 0f 84 f9 07 00 00 je 5c3db1 0.00 : 5c35b8: 83 f8 04 cmp $0x4,%eax 0.00 : 5c35bb: 0f 84 db 07 00 00 je 5c3d9c 0.00 : 5c35c1: 83 f8 02 cmp $0x2,%eax : break; : case CMD_DELETE: : ExecASDeleteTriggers(node->ps.state, node->resultRelInfo); : break; : default: : elog(ERROR, "unknown operation"); 0.00 : 5c35c4: ba b5 c2 88 00 mov $0x88c2b5,%edx 0.00 : 5c35c9: be 45 03 00 00 mov $0x345,%esi : * Process AFTER EACH STATEMENT triggers : */ : static void : fireASTriggers(ModifyTableState *node) : { : switch (node->operation) 0.00 : 5c35ce: 75 a7 jne 5c3577 : { : case CMD_INSERT: : ExecASInsertTriggers(node->ps.state, node->resultRelInfo); : break; : case CMD_UPDATE: : ExecASUpdateTriggers(node->ps.state, node->resultRelInfo); 0.00 : 5c35d0: 49 8b b5 90 00 00 00 mov 0x90(%r13),%rsi 0.00 : 5c35d7: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5c35db: e8 50 01 fd ff callq 593730 : /* : * We're done, but fire AFTER STATEMENT triggers before exiting. : */ : fireASTriggers(node); : : node->mt_done = true; 0.00 : 5c35e0: 41 c6 45 7d 01 movb $0x1,0x7d(%r13) 0.00 : 5c35e5: 45 31 e4 xor %r12d,%r12d 0.00 : 5c35e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5c35ef: 00 : : return NULL; : } 0.00 : 5c35f0: 48 81 c4 e8 00 00 00 add $0xe8,%rsp 0.00 : 5c35f7: 4c 89 e0 mov %r12,%rax 0.00 : 5c35fa: 5b pop %rbx 0.00 : 5c35fb: 41 5c pop %r12 0.00 : 5c35fd: 41 5d pop %r13 0.00 : 5c35ff: 41 5e pop %r14 0.00 : 5c3601: 41 5f pop %r15 0.00 : 5c3603: c9 leaveq 0.00 : 5c3604: c3 retq 0.00 : 5c3605: 0f 1f 00 nopl (%rax) : { : char relkind; : Datum datum; : bool isNull; : : relkind = resultRelInfo->ri_RelationDesc->rd_rel->relkind; 0.00 : 5c3608: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 5c360f: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5c3613: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 5c3617: 0f b6 58 6f movzbl 0x6f(%rax),%ebx : if (relkind == RELKIND_RELATION || relkind == RELKIND_MATVIEW) 0.00 : 5c361b: 80 fb 72 cmp $0x72,%bl 0.00 : 5c361e: 0f 84 9c 04 00 00 je 5c3ac0 0.00 : 5c3624: 80 fb 6d cmp $0x6d,%bl 0.00 : 5c3627: 0f 84 93 04 00 00 je 5c3ac0 : * fetch its own junk attrs to identify the row. : * : * Other relevant relkinds, currently limited to views, always : * have a wholerow attribute. : */ : else if (AttributeNumberIsValid(junkfilter->jf_junkAttNo)) 0.00 : 5c362d: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : 5c3634: 0f b7 42 28 movzwl 0x28(%rdx),%eax 0.00 : 5c3638: 66 85 c0 test %ax,%ax 0.00 : 5c363b: 0f 84 fe fc ff ff je 5c333f : { : datum = ExecGetJunkAttribute(slot, 0.00 : 5c3641: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 5c3648: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 5c364c: 0f bf f0 movswl %ax,%esi 0.00 : 5c364f: e8 bc 5f fe ff callq 5a9610 : junkfilter->jf_junkAttNo, : &isNull); : /* shouldn't ever get a null result... */ : if (isNull) 0.00 : 5c3654: 80 7d cc 00 cmpb $0x0,-0x34(%rbp) : * Other relevant relkinds, currently limited to views, always : * have a wholerow attribute. : */ : else if (AttributeNumberIsValid(junkfilter->jf_junkAttNo)) : { : datum = ExecGetJunkAttribute(slot, 0.00 : 5c3658: 48 89 c7 mov %rax,%rdi : junkfilter->jf_junkAttNo, : &isNull); : /* shouldn't ever get a null result... */ : if (isNull) 0.00 : 5c365b: 0f 85 67 09 00 00 jne 5c3fc8 : elog(ERROR, "wholerow is NULL"); : : oldtupdata.t_data = DatumGetHeapTupleHeader(datum); 0.00 : 5c3661: e8 aa b6 1b 00 callq 77ed10 0.00 : 5c3666: 48 89 45 a0 mov %rax,-0x60(%rbp) : oldtupdata.t_len = 0.00 : 5c366a: 8b 00 mov (%rax),%eax : HeapTupleHeaderGetDatumLength(oldtupdata.t_data); : ItemPointerSetInvalid(&(oldtupdata.t_self)); 0.00 : 5c366c: 66 c7 45 94 ff ff movw $0xffff,-0x6c(%rbp) 0.00 : 5c3672: 66 c7 45 96 ff ff movw $0xffff,-0x6a(%rbp) 0.00 : 5c3678: 66 c7 45 98 00 00 movw $0x0,-0x68(%rbp) : /* shouldn't ever get a null result... */ : if (isNull) : elog(ERROR, "wholerow is NULL"); : : oldtupdata.t_data = DatumGetHeapTupleHeader(datum); : oldtupdata.t_len = 0.00 : 5c367e: c1 e8 02 shr $0x2,%eax 0.00 : 5c3681: 89 45 90 mov %eax,-0x70(%rbp) : HeapTupleHeaderGetDatumLength(oldtupdata.t_data); : ItemPointerSetInvalid(&(oldtupdata.t_self)); : /* Historically, view triggers see invalid t_tableOid. */ : oldtupdata.t_tableOid = 0.00 : 5c3684: 31 c0 xor %eax,%eax 0.00 : 5c3686: 80 fb 76 cmp $0x76,%bl 0.00 : 5c3689: 74 0e je 5c3699 0.00 : 5c368b: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 5c3692: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 5c3696: 8b 40 40 mov 0x40(%rax),%eax 0.00 : 5c3699: 89 45 9c mov %eax,-0x64(%rbp) 0.00 : 5c369c: 48 8d 45 90 lea -0x70(%rbp),%rax 0.00 : 5c36a0: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 5c36a7: e9 9e fc ff ff jmpq 5c334a 0.00 : 5c36ac: 0f 1f 40 00 nopl 0x0(%rax) : { : case CMD_INSERT: : slot = ExecInsert(slot, planSlot, estate, node->canSetTag); : break; : case CMD_UPDATE: : slot = ExecUpdate(tupleid, oldtuple, slot, planSlot, 0.00 : 5c36b0: 41 0f b6 45 7c movzbl 0x7c(%r13),%eax : List *recheckIndexes = NIL; : : /* : * abort the operation if not running transactions : */ : if (IsBootstrapProcessingMode()) 0.00 : 5c36b5: 44 8b 05 80 54 5a 00 mov 0x5a5480(%rip),%r8d # b68b3c 0.00 : 5c36bc: 45 85 c0 test %r8d,%r8d : { : case CMD_INSERT: : slot = ExecInsert(slot, planSlot, estate, node->canSetTag); : break; : case CMD_UPDATE: : slot = ExecUpdate(tupleid, oldtuple, slot, planSlot, 0.00 : 5c36bf: 88 85 66 ff ff ff mov %al,-0x9a(%rbp) : List *recheckIndexes = NIL; : : /* : * abort the operation if not running transactions : */ : if (IsBootstrapProcessingMode()) 0.00 : 5c36c5: 0f 84 3b 08 00 00 je 5c3f06 : : /* : * get the heap tuple out of the tuple table slot, making sure we have a : * writable copy : */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5c36cb: 4c 89 e7 mov %r12,%rdi 0.00 : 5c36ce: e8 2d 09 ff ff callq 5b4000 0.00 : 5c36d3: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : : /* : * get information on the (current) result relation : */ : resultRelInfo = estate->es_result_relation_info; 0.00 : 5c36da: 4d 8b 7e 48 mov 0x48(%r14),%r15 : resultRelationDesc = resultRelInfo->ri_RelationDesc; 0.00 : 5c36de: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : 5c36e2: 48 89 95 58 ff ff ff mov %rdx,-0xa8(%rbp) : : /* BEFORE ROW UPDATE Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c36e9: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5c36ed: 48 85 c0 test %rax,%rax 0.00 : 5c36f0: 74 14 je 5c3706 0.00 : 5c36f2: 80 78 11 00 cmpb $0x0,0x11(%rax) 0.00 : 5c36f6: 0f 85 8b 07 00 00 jne 5c3e87 : /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); : } : : /* INSTEAD OF ROW UPDATE Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c36fc: 80 78 13 00 cmpb $0x0,0x13(%rax) 0.00 : 5c3700: 0f 85 da 07 00 00 jne 5c3ee0 : return NULL; : : /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); : } : else if (resultRelInfo->ri_FdwRoutine) 0.00 : 5c3706: 49 8b 47 48 mov 0x48(%r15),%rax 0.00 : 5c370a: 48 85 c0 test %rax,%rax 0.00 : 5c370d: 0f 1f 00 nopl (%rax) 0.00 : 5c3710: 0f 85 c0 05 00 00 jne 5c3cd6 : : /* : * Constraints might reference the tableoid column, so initialize : * t_tableOid before evaluating them. : */ : tuple->t_tableOid = RelationGetRelid(resultRelationDesc); 0.00 : 5c3716: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 5c371d: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5c3724: 8b 41 40 mov 0x40(%rcx),%eax 0.00 : 5c3727: 89 42 0c mov %eax,0xc(%rdx) : * redo triggers, however. If there are any BEFORE triggers then : * trigger.c will have done heap_lock_tuple to lock the correct tuple, : * so there's no need to do them again.) : */ : lreplace:; : if (resultRelationDesc->rd_att->constr) 0.00 : 5c372a: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 5c3731: 48 8b 41 38 mov 0x38(%rcx),%rax 0.00 : 5c3735: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 5c373a: 74 0e je 5c374a : ExecConstraints(resultRelInfo, slot, estate); 0.00 : 5c373c: 4c 89 f2 mov %r14,%rdx 0.00 : 5c373f: 4c 89 e6 mov %r12,%rsi 0.00 : 5c3742: 4c 89 ff mov %r15,%rdi 0.00 : 5c3745: e8 66 71 fe ff callq 5aa8b0 : * that the row to be updated is visible to that snapshot, and throw a : * can't-serialize error if not. This is a special-case behavior : * needed for referential integrity updates in transaction-snapshot : * mode transactions. : */ : result = heap_update(resultRelationDesc, tupleid, tuple, 0.00 : 5c374a: 48 8d 55 b0 lea -0x50(%rbp),%rdx 0.00 : 5c374e: 4d 8b 46 10 mov 0x10(%r14),%r8 0.00 : 5c3752: 41 8b 4e 30 mov 0x30(%r14),%ecx 0.00 : 5c3756: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 5c375d: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 5c3764: 48 8d 45 cc lea -0x34(%rbp),%rax 0.00 : 5c3768: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 5c376c: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5c3773: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 5c3779: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 5c377e: e8 3d 4d ed ff callq 4984c0 : estate->es_output_cid, : estate->es_crosscheck_snapshot, : true /* wait for commit */ , : &hufd, &lockmode); : switch (result) 0.00 : 5c3783: 83 f8 02 cmp $0x2,%eax : * that the row to be updated is visible to that snapshot, and throw a : * can't-serialize error if not. This is a special-case behavior : * needed for referential integrity updates in transaction-snapshot : * mode transactions. : */ : result = heap_update(resultRelationDesc, tupleid, tuple, 0.00 : 5c3786: 89 c3 mov %eax,%ebx : estate->es_output_cid, : estate->es_crosscheck_snapshot, : true /* wait for commit */ , : &hufd, &lockmode); : switch (result) 0.00 : 5c3788: 0f 84 b2 03 00 00 je 5c3b40 0.00 : 5c378e: 83 f8 03 cmp $0x3,%eax 0.00 : 5c3791: 0f 84 89 02 00 00 je 5c3a20 0.00 : 5c3797: 85 c0 test %eax,%eax 0.00 : 5c3799: 0f 85 71 03 00 00 jne 5c3b10 : * Note: heap_update returns the tid (location) of the new tuple in : * the t_self field. : * : * If it's a HOT update, we mustn't insert new index entries. : */ : if (resultRelInfo->ri_NumIndices > 0 && !HeapTupleIsHeapOnly(tuple)) 0.00 : 5c379f: 41 8b 7f 10 mov 0x10(%r15),%edi 0.00 : 5c37a3: 85 ff test %edi,%edi 0.00 : 5c37a5: 0f 8e e5 04 00 00 jle 5c3c90 0.00 : 5c37ab: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5c37b2: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 5c37b6: 66 83 78 12 00 cmpw $0x0,0x12(%rax) 0.00 : 5c37bb: 0f 88 cf 04 00 00 js 5c3c90 : recheckIndexes = ExecInsertIndexTuples(slot, &(tuple->t_self), 0.00 : 5c37c1: 48 89 d6 mov %rdx,%rsi 0.00 : 5c37c4: 4c 89 e7 mov %r12,%rdi 0.00 : 5c37c7: 4c 89 f2 mov %r14,%rdx 0.00 : 5c37ca: 48 83 c6 04 add $0x4,%rsi 0.00 : 5c37ce: e8 1d 23 ff ff callq 5b5af0 0.00 : 5c37d3: 48 89 c3 mov %rax,%rbx : estate); : } : : if (canSetTag) 0.00 : 5c37d6: 80 bd 66 ff ff ff 00 cmpb $0x0,-0x9a(%rbp) 0.00 : 5c37dd: 74 08 je 5c37e7 : (estate->es_processed)++; 0.00 : 5c37df: 41 83 86 98 00 00 00 addl $0x1,0x98(%r14) 0.00 : 5c37e6: 01 : : /* AFTER ROW UPDATE Triggers */ : ExecARUpdateTriggers(estate, resultRelInfo, tupleid, oldtuple, tuple, 0.00 : 5c37e7: 4c 8b 85 68 ff ff ff mov -0x98(%rbp),%r8 0.00 : 5c37ee: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 5c37f5: 49 89 d9 mov %rbx,%r9 0.00 : 5c37f8: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 5c37ff: 4c 89 fe mov %r15,%rsi 0.00 : 5c3802: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3805: e8 46 04 fd ff callq 593c50 : recheckIndexes); : : list_free(recheckIndexes); 0.00 : 5c380a: 48 89 df mov %rbx,%rdi 0.00 : 5c380d: e8 3e e9 01 00 callq 5e2150 : : /* Check any WITH CHECK OPTION constraints */ : if (resultRelInfo->ri_WithCheckOptions != NIL) 0.00 : 5c3812: 49 83 7f 58 00 cmpq $0x0,0x58(%r15) 0.00 : 5c3817: 74 0e je 5c3827 : ExecWithCheckOptions(resultRelInfo, slot, estate); 0.00 : 5c3819: 4c 89 f2 mov %r14,%rdx 0.00 : 5c381c: 4c 89 e6 mov %r12,%rsi 0.00 : 5c381f: 4c 89 ff mov %r15,%rdi 0.00 : 5c3822: e8 69 6f fe ff callq 5aa790 : : /* Process RETURNING if present */ : if (resultRelInfo->ri_projectReturning) 0.00 : 5c3827: 49 8b 7f 78 mov 0x78(%r15),%rdi 0.00 : 5c382b: 48 85 ff test %rdi,%rdi 0.00 : 5c382e: 0f 84 8c fa ff ff je 5c32c0 : return ExecProcessReturning(resultRelInfo->ri_projectReturning, 0.00 : 5c3834: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 5c383b: 4c 89 e6 mov %r12,%rsi 0.00 : 5c383e: e8 5d f9 ff ff callq 5c31a0 0.00 : 5c3843: 49 89 c4 mov %rax,%r12 : : /* : * If we got a RETURNING result, return it to caller. We'll continue : * the work on next call. : */ : if (slot) 0.00 : 5c3846: 4d 85 e4 test %r12,%r12 0.00 : 5c3849: 0f 84 71 fa ff ff je 5c32c0 : { : estate->es_result_relation_info = saved_resultRelInfo; 0.00 : 5c384f: 48 8b 8d 10 ff ff ff mov -0xf0(%rbp),%rcx 0.00 : 5c3856: 49 89 4e 48 mov %rcx,0x48(%r14) : fireASTriggers(node); : : node->mt_done = true; : : return NULL; : } 0.00 : 5c385a: e9 91 fd ff ff jmpq 5c35f0 0.00 : 5c385f: 90 nop : } : : switch (operation) : { : case CMD_INSERT: : slot = ExecInsert(slot, planSlot, estate, node->canSetTag); 0.00 : 5c3860: 41 0f b6 55 7c movzbl 0x7c(%r13),%edx : : /* : * get the heap tuple out of the tuple table slot, making sure we have a : * writable copy : */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5c3865: 4c 89 e7 mov %r12,%rdi : } : : switch (operation) : { : case CMD_INSERT: : slot = ExecInsert(slot, planSlot, estate, node->canSetTag); 0.00 : 5c3868: 88 95 0b ff ff ff mov %dl,-0xf5(%rbp) : : /* : * get the heap tuple out of the tuple table slot, making sure we have a : * writable copy : */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5c386e: e8 8d 07 ff ff callq 5b4000 0.00 : 5c3873: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : : /* : * get information on the (current) result relation : */ : resultRelInfo = estate->es_result_relation_info; 0.00 : 5c387a: 4d 8b 7e 48 mov 0x48(%r14),%r15 : resultRelationDesc = resultRelInfo->ri_RelationDesc; 0.00 : 5c387e: 49 8b 5f 08 mov 0x8(%r15),%rbx : * XXX if we ever wanted to allow users to assign their own OIDs to new : * rows, this'd be the place to do it. For the moment, we make a point of : * doing this before calling triggers, so that a user-supplied trigger : * could hack the OID if desired. : */ : if (resultRelationDesc->rd_rel->relhasoids) 0.00 : 5c3882: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 5c3886: 80 78 74 00 cmpb $0x0,0x74(%rax) 0.00 : 5c388a: 0f 85 d0 00 00 00 jne 5c3960 : HeapTupleSetOid(tuple, InvalidOid); : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c3890: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5c3894: 48 85 c0 test %rax,%rax 0.00 : 5c3897: 74 14 je 5c38ad 0.00 : 5c3899: 80 78 0c 00 cmpb $0x0,0xc(%rax) 0.00 : 5c389d: 0f 85 23 05 00 00 jne 5c3dc6 : /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); : } : : /* INSTEAD OF ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c38a3: 80 78 0e 00 cmpb $0x0,0xe(%rax) 0.00 : 5c38a7: 0f 85 5b 05 00 00 jne 5c3e08 : /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); : : newId = InvalidOid; : } : else if (resultRelInfo->ri_FdwRoutine) 0.00 : 5c38ad: 49 8b 47 48 mov 0x48(%r15),%rax 0.00 : 5c38b1: 48 85 c0 test %rax,%rax 0.00 : 5c38b4: 0f 85 dd 03 00 00 jne 5c3c97 : { : /* : * Constraints might reference the tableoid column, so initialize : * t_tableOid before evaluating them. : */ : tuple->t_tableOid = RelationGetRelid(resultRelationDesc); 0.00 : 5c38ba: 8b 43 40 mov 0x40(%rbx),%eax 0.00 : 5c38bd: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 5c38c4: 89 42 0c mov %eax,0xc(%rdx) : : /* : * Check the constraints of the tuple : */ : if (resultRelationDesc->rd_att->constr) 0.00 : 5c38c7: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 5c38cb: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 5c38d0: 74 0e je 5c38e0 : ExecConstraints(resultRelInfo, slot, estate); 0.00 : 5c38d2: 4c 89 f2 mov %r14,%rdx 0.00 : 5c38d5: 4c 89 e6 mov %r12,%rsi 0.00 : 5c38d8: 4c 89 ff mov %r15,%rdi 0.00 : 5c38db: e8 d0 6f fe ff callq 5aa8b0 : * insert the tuple : * : * Note: heap_insert returns the tid (location) of the new tuple in : * the t_self field. : */ : newId = heap_insert(resultRelationDesc, tuple, 0.00 : 5c38e0: 41 8b 56 30 mov 0x30(%r14),%edx 0.00 : 5c38e4: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 5c38eb: 45 31 c0 xor %r8d,%r8d 0.00 : 5c38ee: 31 c9 xor %ecx,%ecx 0.00 : 5c38f0: 48 89 df mov %rbx,%rdi : estate->es_output_cid, 0, NULL); : : /* : * insert index entries for tuple : */ : if (resultRelInfo->ri_NumIndices > 0) 0.00 : 5c38f3: 31 db xor %ebx,%ebx : * insert the tuple : * : * Note: heap_insert returns the tid (location) of the new tuple in : * the t_self field. : */ : newId = heap_insert(resultRelationDesc, tuple, 0.00 : 5c38f5: e8 46 7c ed ff callq 49b540 0.00 : 5c38fa: 89 85 4c ff ff ff mov %eax,-0xb4(%rbp) : estate->es_output_cid, 0, NULL); : : /* : * insert index entries for tuple : */ : if (resultRelInfo->ri_NumIndices > 0) 0.00 : 5c3900: 45 8b 4f 10 mov 0x10(%r15),%r9d 0.00 : 5c3904: 45 85 c9 test %r9d,%r9d 0.00 : 5c3907: 7e 19 jle 5c3922 : recheckIndexes = ExecInsertIndexTuples(slot, &(tuple->t_self), 0.00 : 5c3909: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 5c3910: 4c 89 f2 mov %r14,%rdx 0.00 : 5c3913: 4c 89 e7 mov %r12,%rdi 0.00 : 5c3916: 48 83 c6 04 add $0x4,%rsi 0.00 : 5c391a: e8 d1 21 ff ff callq 5b5af0 0.00 : 5c391f: 48 89 c3 mov %rax,%rbx : estate); : } : : if (canSetTag) 0.00 : 5c3922: 80 bd 0b ff ff ff 00 cmpb $0x0,-0xf5(%rbp) 0.00 : 5c3929: 75 55 jne 5c3980 : estate->es_lastoid = newId; : setLastTid(&(tuple->t_self)); : } : : /* AFTER ROW INSERT Triggers */ : ExecARInsertTriggers(estate, resultRelInfo, tuple, recheckIndexes); 0.00 : 5c392b: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 5c3932: 48 89 d9 mov %rbx,%rcx 0.00 : 5c3935: 4c 89 fe mov %r15,%rsi 0.00 : 5c3938: 4c 89 f7 mov %r14,%rdi 0.00 : 5c393b: e8 50 f3 fc ff callq 592c90 : : list_free(recheckIndexes); 0.00 : 5c3940: 48 89 df mov %rbx,%rdi 0.00 : 5c3943: e8 08 e8 01 00 callq 5e2150 : : /* Check any WITH CHECK OPTION constraints */ : if (resultRelInfo->ri_WithCheckOptions != NIL) 0.00 : 5c3948: 49 83 7f 58 00 cmpq $0x0,0x58(%r15) 0.00 : 5c394d: 0f 85 c6 fe ff ff jne 5c3819 0.00 : 5c3953: e9 cf fe ff ff jmpq 5c3827 0.00 : 5c3958: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5c395f: 00 : * rows, this'd be the place to do it. For the moment, we make a point of : * doing this before calling triggers, so that a user-supplied trigger : * could hack the OID if desired. : */ : if (resultRelationDesc->rd_rel->relhasoids) : HeapTupleSetOid(tuple, InvalidOid); 0.00 : 5c3960: 48 8b 8d 50 ff ff ff mov -0xb0(%rbp),%rcx 0.00 : 5c3967: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 5c396b: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 5c396f: c7 44 02 fc 00 00 00 movl $0x0,-0x4(%rdx,%rax,1) 0.00 : 5c3976: 00 0.00 : 5c3977: e9 14 ff ff ff jmpq 5c3890 0.00 : 5c397c: 0f 1f 40 00 nopl 0x0(%rax) : estate); : } : : if (canSetTag) : { : (estate->es_processed)++; 0.00 : 5c3980: 41 83 86 98 00 00 00 addl $0x1,0x98(%r14) 0.00 : 5c3987: 01 : estate->es_lastoid = newId; 0.00 : 5c3988: 8b 8d 4c ff ff ff mov -0xb4(%rbp),%ecx 0.00 : 5c398e: 41 89 8e 9c 00 00 00 mov %ecx,0x9c(%r14) : setLastTid(&(tuple->t_self)); 0.00 : 5c3995: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 5c399c: 48 83 c7 04 add $0x4,%rdi 0.00 : 5c39a0: e8 1b c4 17 00 callq 73fdc0 0.00 : 5c39a5: eb 84 jmp 5c392b 0.00 : 5c39a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c39ae: 00 00 : * : * If a trigger actually intends this type of interaction, it : * can re-execute the DELETE and then return NULL to cancel : * the outer delete. : */ : if (hufd.cmax != estate->es_output_cid) 0.00 : 5c39b0: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 5c39b3: 41 3b 46 30 cmp 0x30(%r14),%eax 0.00 : 5c39b7: 0f 84 03 f9 ff ff je 5c32c0 : ereport(ERROR, 0.00 : 5c39bd: 45 31 c0 xor %r8d,%r8d 0.00 : 5c39c0: b9 aa c2 88 00 mov $0x88c2aa,%ecx 0.00 : 5c39c5: ba b3 01 00 00 mov $0x1b3,%edx 0.00 : 5c39ca: e9 8b 01 00 00 jmpq 5c3b5a 0.00 : 5c39cf: 90 nop : fireBSTriggers(ModifyTableState *node) : { : switch (node->operation) : { : case CMD_INSERT: : ExecBSInsertTriggers(node->ps.state, node->resultRelInfo); 0.00 : 5c39d0: 48 8b b7 90 00 00 00 mov 0x90(%rdi),%rsi 0.00 : 5c39d7: 4c 89 f7 mov %r14,%rdi 0.00 : 5c39da: e8 f1 fb fc ff callq 5935d0 : * On first call, fire BEFORE STATEMENT triggers before proceeding. : */ : if (node->fireBSTriggers) : { : fireBSTriggers(node); : node->fireBSTriggers = false; 0.00 : 5c39df: 41 c6 85 d0 00 00 00 movb $0x0,0xd0(%r13) 0.00 : 5c39e6: 00 0.00 : 5c39e7: e9 60 f8 ff ff jmpq 5c324c 0.00 : 5c39ec: 0f 1f 40 00 nopl 0x0(%rax) : } : /* tuple already deleted; nothing to do */ : return NULL; : : default: : elog(ERROR, "unrecognized heap_delete status: %u", result); 0.00 : 5c39f0: ba aa c2 88 00 mov $0x88c2aa,%edx 0.00 : 5c39f5: be d5 01 00 00 mov $0x1d5,%esi 0.00 : 5c39fa: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c39ff: e8 1c 7a 1b 00 callq 77b420 0.00 : 5c3a04: 89 da mov %ebx,%edx 0.00 : 5c3a06: be d0 2b 7b 00 mov $0x7b2bd0,%esi 0.00 : 5c3a0b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3a10: 31 c0 xor %eax,%eax 0.00 : 5c3a12: e8 19 78 1b 00 callq 77b230 0.00 : 5c3a17: e8 b4 5a ea ff callq 4694d0 0.00 : 5c3a1c: 0f 1f 40 00 nopl 0x0(%rax) : : case HeapTupleMayBeUpdated: : break; : : case HeapTupleUpdated: : if (IsolationUsesXactSnapshot()) 0.00 : 5c3a20: 83 3d 4d bb 5f 00 01 cmpl $0x1,0x5fbb4d(%rip) # bbf574 0.00 : 5c3a27: 0f 8f 11 06 00 00 jg 5c403e : ereport(ERROR, : (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), : errmsg("could not serialize access due to concurrent update"))); : if (!ItemPointerEquals(tupleid, &hufd.ctid)) 0.00 : 5c3a2d: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 5c3a34: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 5c3a38: e8 23 38 0d 00 callq 697260 0.00 : 5c3a3d: 84 c0 test %al,%al 0.00 : 5c3a3f: 0f 85 7b f8 ff ff jne 5c32c0 : { : TupleTableSlot *epqslot; : : epqslot = EvalPlanQual(estate, 0.00 : 5c3a45: 41 8b 4f 04 mov 0x4(%r15),%ecx 0.00 : 5c3a49: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 5c3a4c: 4c 8d 4d b0 lea -0x50(%rbp),%r9 0.00 : 5c3a50: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : 5c3a57: 44 8b 45 cc mov -0x34(%rbp),%r8d 0.00 : 5c3a5b: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3a5e: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 5c3a65: 89 04 24 mov %eax,(%rsp) 0.00 : 5c3a68: e8 e3 69 fe ff callq 5aa450 : resultRelationDesc, : resultRelInfo->ri_RangeTableIndex, : lockmode, : &hufd.ctid, : hufd.xmax); : if (!TupIsNull(epqslot)) 0.00 : 5c3a6d: 48 85 c0 test %rax,%rax : errmsg("could not serialize access due to concurrent update"))); : if (!ItemPointerEquals(tupleid, &hufd.ctid)) : { : TupleTableSlot *epqslot; : : epqslot = EvalPlanQual(estate, 0.00 : 5c3a70: 48 89 c2 mov %rax,%rdx : resultRelationDesc, : resultRelInfo->ri_RangeTableIndex, : lockmode, : &hufd.ctid, : hufd.xmax); : if (!TupIsNull(epqslot)) 0.00 : 5c3a73: 0f 84 47 f8 ff ff je 5c32c0 0.00 : 5c3a79: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c3a7d: 0f 85 3d f8 ff ff jne 5c32c0 : { : *tupleid = hufd.ctid; 0.00 : 5c3a83: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 5c3a86: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx : slot = ExecFilterJunk(resultRelInfo->ri_junkFilter, epqslot); 0.00 : 5c3a8d: 48 89 d6 mov %rdx,%rsi : lockmode, : &hufd.ctid, : hufd.xmax); : if (!TupIsNull(epqslot)) : { : *tupleid = hufd.ctid; 0.00 : 5c3a90: 89 01 mov %eax,(%rcx) 0.00 : 5c3a92: 0f b7 45 b4 movzwl -0x4c(%rbp),%eax 0.00 : 5c3a96: 66 89 41 04 mov %ax,0x4(%rcx) : slot = ExecFilterJunk(resultRelInfo->ri_junkFilter, epqslot); 0.00 : 5c3a9a: 49 8b 7f 70 mov 0x70(%r15),%rdi 0.00 : 5c3a9e: e8 bd 5a fe ff callq 5a9560 : tuple = ExecMaterializeSlot(slot); 0.00 : 5c3aa3: 48 89 c7 mov %rax,%rdi : &hufd.ctid, : hufd.xmax); : if (!TupIsNull(epqslot)) : { : *tupleid = hufd.ctid; : slot = ExecFilterJunk(resultRelInfo->ri_junkFilter, epqslot); 0.00 : 5c3aa6: 49 89 c4 mov %rax,%r12 : tuple = ExecMaterializeSlot(slot); 0.00 : 5c3aa9: e8 52 05 ff ff callq 5b4000 0.00 : 5c3aae: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 5c3ab5: e9 70 fc ff ff jmpq 5c372a 0.00 : 5c3aba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : bool isNull; : : relkind = resultRelInfo->ri_RelationDesc->rd_rel->relkind; : if (relkind == RELKIND_RELATION || relkind == RELKIND_MATVIEW) : { : datum = ExecGetJunkAttribute(slot, 0.00 : 5c3ac0: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 5c3ac7: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 5c3ace: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 5c3ad2: 0f bf 71 28 movswl 0x28(%rcx),%esi 0.00 : 5c3ad6: e8 35 5b fe ff callq 5a9610 : junkfilter->jf_junkAttNo, : &isNull); : /* shouldn't ever get a null result... */ : if (isNull) 0.00 : 5c3adb: 80 7d cc 00 cmpb $0x0,-0x34(%rbp) : bool isNull; : : relkind = resultRelInfo->ri_RelationDesc->rd_rel->relkind; : if (relkind == RELKIND_RELATION || relkind == RELKIND_MATVIEW) : { : datum = ExecGetJunkAttribute(slot, 0.00 : 5c3adf: 48 89 c2 mov %rax,%rdx : junkfilter->jf_junkAttNo, : &isNull); : /* shouldn't ever get a null result... */ : if (isNull) 0.00 : 5c3ae2: 0f 85 48 04 00 00 jne 5c3f30 : elog(ERROR, "ctid is NULL"); : : tupleid = (ItemPointer) DatumGetPointer(datum); : tuple_ctid = *tupleid; /* be sure we don't free 0.00 : 5c3ae8: 8b 00 mov (%rax),%eax 0.00 : 5c3aea: 89 45 c0 mov %eax,-0x40(%rbp) 0.00 : 5c3aed: 0f b7 42 04 movzwl 0x4(%rdx),%eax 0.00 : 5c3af1: 48 c7 85 40 ff ff ff movq $0x0,-0xc0(%rbp) 0.00 : 5c3af8: 00 00 00 00 0.00 : 5c3afc: 66 89 45 c4 mov %ax,-0x3c(%rbp) 0.00 : 5c3b00: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 5c3b04: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 5c3b0b: e9 3a f8 ff ff jmpq 5c334a : } : /* tuple already deleted; nothing to do */ : return NULL; : : default: : elog(ERROR, "unrecognized heap_update status: %u", result); 0.00 : 5c3b10: ba 9f c2 88 00 mov $0x88c29f,%edx 0.00 : 5c3b15: be ed 02 00 00 mov $0x2ed,%esi 0.00 : 5c3b1a: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c3b1f: e8 fc 78 1b 00 callq 77b420 0.00 : 5c3b24: 89 da mov %ebx,%edx 0.00 : 5c3b26: be 80 2b 7b 00 mov $0x7b2b80,%esi 0.00 : 5c3b2b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3b30: 31 c0 xor %eax,%eax 0.00 : 5c3b32: e8 f9 76 1b 00 callq 77b230 0.00 : 5c3b37: e8 94 59 ea ff callq 4694d0 0.00 : 5c3b3c: 0f 1f 40 00 nopl 0x0(%rax) : * : * If a trigger actually intends this type of interaction, it : * can re-execute the UPDATE (assuming it can figure out how) : * and then return NULL to cancel the outer update. : */ : if (hufd.cmax != estate->es_output_cid) 0.00 : 5c3b40: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 5c3b43: 41 3b 46 30 cmp 0x30(%r14),%eax 0.00 : 5c3b47: 0f 84 73 f7 ff ff je 5c32c0 : ereport(ERROR, 0.00 : 5c3b4d: 45 31 c0 xor %r8d,%r8d 0.00 : 5c3b50: b9 9f c2 88 00 mov $0x88c29f,%ecx 0.00 : 5c3b55: ba c9 02 00 00 mov $0x2c9,%edx : * If a trigger actually intends this type of interaction, it : * can re-execute the DELETE and then return NULL to cancel : * the outer delete. : */ : if (hufd.cmax != estate->es_output_cid) : ereport(ERROR, 0.00 : 5c3b5a: be 4f c0 88 00 mov $0x88c04f,%esi 0.00 : 5c3b5f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3b64: e8 57 6f 1b 00 callq 77aac0 0.00 : 5c3b69: 84 c0 test %al,%al 0.00 : 5c3b6b: 0f 84 21 fa ff ff je 5c3592 0.00 : 5c3b71: bf 78 57 88 00 mov $0x885778,%edi 0.00 : 5c3b76: 31 c0 xor %eax,%eax 0.00 : 5c3b78: e8 23 81 1b 00 callq 77bca0 0.00 : 5c3b7d: bf d8 57 88 00 mov $0x8857d8,%edi 0.00 : 5c3b82: 41 89 c4 mov %eax,%r12d 0.00 : 5c3b85: 31 c0 xor %eax,%eax 0.00 : 5c3b87: e8 14 8d 1b 00 callq 77c8a0 0.00 : 5c3b8c: bf c2 01 00 00 mov $0x1c2,%edi 0.00 : 5c3b91: 89 c3 mov %eax,%ebx 0.00 : 5c3b93: e8 b8 91 1b 00 callq 77cd50 0.00 : 5c3b98: 44 89 e2 mov %r12d,%edx 0.00 : 5c3b9b: 89 c7 mov %eax,%edi 0.00 : 5c3b9d: 89 de mov %ebx,%esi 0.00 : 5c3b9f: 31 c0 xor %eax,%eax 0.00 : 5c3ba1: e8 3a 6a 1b 00 callq 77a5e0 0.00 : 5c3ba6: e9 e7 f9 ff ff jmpq 5c3592 0.00 : 5c3bab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : case HeapTupleMayBeUpdated: : break; : : case HeapTupleUpdated: : if (IsolationUsesXactSnapshot()) 0.00 : 5c3bb0: 83 3d bd b9 5f 00 01 cmpl $0x1,0x5fb9bd(%rip) # bbf574 0.00 : 5c3bb7: 0f 8f 35 04 00 00 jg 5c3ff2 : ereport(ERROR, : (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), : errmsg("could not serialize access due to concurrent update"))); : if (!ItemPointerEquals(tupleid, &hufd.ctid)) 0.00 : 5c3bbd: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 5c3bc4: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 5c3bc8: e8 93 36 0d 00 callq 697260 0.00 : 5c3bcd: 84 c0 test %al,%al 0.00 : 5c3bcf: 0f 85 eb f6 ff ff jne 5c32c0 : { : TupleTableSlot *epqslot; : : epqslot = EvalPlanQual(estate, 0.00 : 5c3bd5: 41 8b 4c 24 04 mov 0x4(%r12),%ecx 0.00 : 5c3bda: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 5c3bdd: 4c 8d 4d b0 lea -0x50(%rbp),%r9 0.00 : 5c3be1: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 5c3be8: 41 b8 03 00 00 00 mov $0x3,%r8d 0.00 : 5c3bee: 4c 89 fa mov %r15,%rdx 0.00 : 5c3bf1: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3bf4: 89 04 24 mov %eax,(%rsp) 0.00 : 5c3bf7: e8 54 68 fe ff callq 5aa450 : resultRelationDesc, : resultRelInfo->ri_RangeTableIndex, : LockTupleExclusive, : &hufd.ctid, : hufd.xmax); : if (!TupIsNull(epqslot)) 0.00 : 5c3bfc: 48 85 c0 test %rax,%rax 0.00 : 5c3bff: 0f 84 bb f6 ff ff je 5c32c0 0.00 : 5c3c05: 80 78 04 00 cmpb $0x0,0x4(%rax) 0.00 : 5c3c09: 0f 85 b1 f6 ff ff jne 5c32c0 : { : *tupleid = hufd.ctid; 0.00 : 5c3c0f: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 5c3c12: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 5c3c19: 89 02 mov %eax,(%rdx) 0.00 : 5c3c1b: 0f b7 45 b4 movzwl -0x4c(%rbp),%eax 0.00 : 5c3c1f: 66 89 42 04 mov %ax,0x4(%rdx) 0.00 : 5c3c23: e9 6f f7 ff ff jmpq 5c3397 0.00 : 5c3c28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5c3c2f: 00 : break; : case CMD_UPDATE: : ExecBSUpdateTriggers(node->ps.state, node->resultRelInfo); : break; : case CMD_DELETE: : ExecBSDeleteTriggers(node->ps.state, node->resultRelInfo); 0.00 : 5c3c30: 48 8b b7 90 00 00 00 mov 0x90(%rdi),%rsi 0.00 : 5c3c37: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3c3a: e8 11 f5 fc ff callq 593150 0.00 : 5c3c3f: e9 9b fd ff ff jmpq 5c39df 0.00 : 5c3c44: 0f 1f 40 00 nopl 0x0(%rax) : * : * We offer the trigger tuple slot as a place to store RETURNING data, : * although the FDW can return some other slot if it wants. Set up : * the slot's tupdesc so the FDW doesn't need to do that for itself. : */ : slot = estate->es_trig_tuple_slot; 0.00 : 5c3c48: 49 8b 5e 58 mov 0x58(%r14),%rbx : if (slot->tts_tupleDescriptor != RelationGetDescr(resultRelationDesc)) 0.00 : 5c3c4c: 49 8b 77 38 mov 0x38(%r15),%rsi 0.00 : 5c3c50: 48 39 73 10 cmp %rsi,0x10(%rbx) 0.00 : 5c3c54: 74 0d je 5c3c63 : ExecSetSlotDescriptor(slot, RelationGetDescr(resultRelationDesc)); 0.00 : 5c3c56: 48 89 df mov %rbx,%rdi 0.00 : 5c3c59: e8 52 09 ff ff callq 5b45b0 0.00 : 5c3c5e: 49 8b 44 24 48 mov 0x48(%r12),%rax : : slot = resultRelInfo->ri_FdwRoutine->ExecForeignDelete(estate, 0.00 : 5c3c63: 48 89 da mov %rbx,%rdx 0.00 : 5c3c66: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 5c3c6d: 4c 89 e6 mov %r12,%rsi 0.00 : 5c3c70: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3c73: ff 50 68 callq *0x68(%rax) : resultRelInfo, : slot, : planSlot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3c76: 48 85 c0 test %rax,%rax : */ : slot = estate->es_trig_tuple_slot; : if (slot->tts_tupleDescriptor != RelationGetDescr(resultRelationDesc)) : ExecSetSlotDescriptor(slot, RelationGetDescr(resultRelationDesc)); : : slot = resultRelInfo->ri_FdwRoutine->ExecForeignDelete(estate, 0.00 : 5c3c79: 48 89 c3 mov %rax,%rbx : resultRelInfo, : slot, : planSlot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3c7c: 0f 85 56 f7 ff ff jne 5c33d8 0.00 : 5c3c82: e9 39 f6 ff ff jmpq 5c32c0 0.00 : 5c3c87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c3c8e: 00 00 : * the t_self field. : * : * If it's a HOT update, we mustn't insert new index entries. : */ : if (resultRelInfo->ri_NumIndices > 0 && !HeapTupleIsHeapOnly(tuple)) : recheckIndexes = ExecInsertIndexTuples(slot, &(tuple->t_self), 0.00 : 5c3c90: 31 db xor %ebx,%ebx 0.00 : 5c3c92: e9 3f fb ff ff jmpq 5c37d6 : else if (resultRelInfo->ri_FdwRoutine) : { : /* : * insert into foreign table: let the FDW do it : */ : slot = resultRelInfo->ri_FdwRoutine->ExecForeignInsert(estate, 0.00 : 5c3c97: 4c 89 e2 mov %r12,%rdx 0.00 : 5c3c9a: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 5c3ca1: 4c 89 fe mov %r15,%rsi 0.00 : 5c3ca4: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3ca7: ff 50 58 callq *0x58(%rax) : resultRelInfo, : slot, : planSlot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3caa: 48 85 c0 test %rax,%rax : else if (resultRelInfo->ri_FdwRoutine) : { : /* : * insert into foreign table: let the FDW do it : */ : slot = resultRelInfo->ri_FdwRoutine->ExecForeignInsert(estate, 0.00 : 5c3cad: 49 89 c4 mov %rax,%r12 : resultRelInfo, : slot, : planSlot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3cb0: 0f 84 0a f6 ff ff je 5c32c0 : return NULL; : : /* FDW might have changed tuple */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5c3cb6: 4c 89 e7 mov %r12,%rdi 0.00 : 5c3cb9: 31 db xor %ebx,%ebx 0.00 : 5c3cbb: e8 40 03 ff ff callq 5b4000 0.00 : 5c3cc0: c7 85 4c ff ff ff 00 movl $0x0,-0xb4(%rbp) 0.00 : 5c3cc7: 00 00 00 0.00 : 5c3cca: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 5c3cd1: e9 4c fc ff ff jmpq 5c3922 : else if (resultRelInfo->ri_FdwRoutine) : { : /* : * update in foreign table: let the FDW do it : */ : slot = resultRelInfo->ri_FdwRoutine->ExecForeignUpdate(estate, 0.00 : 5c3cd6: 4c 89 e2 mov %r12,%rdx 0.00 : 5c3cd9: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 5c3ce0: 4c 89 fe mov %r15,%rsi 0.00 : 5c3ce3: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3ce6: ff 50 60 callq *0x60(%rax) : resultRelInfo, : slot, : planSlot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3ce9: 48 85 c0 test %rax,%rax : else if (resultRelInfo->ri_FdwRoutine) : { : /* : * update in foreign table: let the FDW do it : */ : slot = resultRelInfo->ri_FdwRoutine->ExecForeignUpdate(estate, 0.00 : 5c3cec: 49 89 c4 mov %rax,%r12 : resultRelInfo, : slot, : planSlot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3cef: 0f 84 cb f5 ff ff je 5c32c0 : return NULL; : : /* FDW might have changed tuple */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5c3cf5: 4c 89 e7 mov %r12,%rdi 0.00 : 5c3cf8: 31 db xor %ebx,%ebx 0.00 : 5c3cfa: e8 01 03 ff ff callq 5b4000 0.00 : 5c3cff: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 5c3d06: e9 cb fa ff ff jmpq 5c37d6 : delbuffer = InvalidBuffer; : } : else : { : slot = estate->es_trig_tuple_slot; : if (oldtuple != NULL) 0.00 : 5c3d0b: 48 83 bd 40 ff ff ff cmpq $0x0,-0xc0(%rbp) 0.00 : 5c3d12: 00 : Assert(!TupIsNull(slot)); : delbuffer = InvalidBuffer; : } : else : { : slot = estate->es_trig_tuple_slot; 0.00 : 5c3d13: 49 8b 5e 58 mov 0x58(%r14),%rbx : if (oldtuple != NULL) 0.00 : 5c3d17: 0f 84 3d 02 00 00 je 5c3f5a : { : deltuple = *oldtuple; 0.00 : 5c3d1d: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 5c3d24: 48 8b 01 mov (%rcx),%rax 0.00 : 5c3d27: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 5c3d2e: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 5c3d32: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 5c3d39: 48 8b 41 10 mov 0x10(%rcx),%rax : delbuffer = InvalidBuffer; 0.00 : 5c3d3d: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : else : { : slot = estate->es_trig_tuple_slot; : if (oldtuple != NULL) : { : deltuple = *oldtuple; 0.00 : 5c3d44: 48 89 45 80 mov %rax,-0x80(%rbp) : if (!heap_fetch(resultRelationDesc, SnapshotAny, : &deltuple, &delbuffer, false, NULL)) : elog(ERROR, "failed to fetch deleted tuple for DELETE RETURNING"); : } : : if (slot->tts_tupleDescriptor != RelationGetDescr(resultRelationDesc)) 0.00 : 5c3d48: 49 8b 77 38 mov 0x38(%r15),%rsi 0.00 : 5c3d4c: 48 39 73 10 cmp %rsi,0x10(%rbx) 0.00 : 5c3d50: 74 08 je 5c3d5a : ExecSetSlotDescriptor(slot, RelationGetDescr(resultRelationDesc)); 0.00 : 5c3d52: 48 89 df mov %rbx,%rdi 0.00 : 5c3d55: e8 56 08 ff ff callq 5b45b0 : ExecStoreTuple(&deltuple, slot, InvalidBuffer, false); 0.00 : 5c3d5a: 48 8d bd 70 ff ff ff lea -0x90(%rbp),%rdi 0.00 : 5c3d61: 31 c9 xor %ecx,%ecx 0.00 : 5c3d63: 31 d2 xor %edx,%edx 0.00 : 5c3d65: 48 89 de mov %rbx,%rsi 0.00 : 5c3d68: e8 13 07 ff ff callq 5b4480 0.00 : 5c3d6d: e9 af f6 ff ff jmpq 5c3421 : * operation, we do have to allow it to be initialized and shut down in : * case it is within a CTE subplan. Hence this test must be here, not in : * ExecInitModifyTable.) : */ : if (estate->es_epqTuple != NULL) : elog(ERROR, "ModifyTable should not be called during EvalPlanQual"); 0.00 : 5c3d72: ba 80 c2 88 00 mov $0x88c280,%edx 0.00 : 5c3d77: be 6c 03 00 00 mov $0x36c,%esi 0.00 : 5c3d7c: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c3d81: e8 9a 76 1b 00 callq 77b420 0.00 : 5c3d86: be 90 c1 88 00 mov $0x88c190,%esi 0.00 : 5c3d8b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3d90: 31 c0 xor %eax,%eax 0.00 : 5c3d92: e8 99 74 1b 00 callq 77b230 0.00 : 5c3d97: e8 34 57 ea ff callq 4694d0 : break; : case CMD_UPDATE: : ExecASUpdateTriggers(node->ps.state, node->resultRelInfo); : break; : case CMD_DELETE: : ExecASDeleteTriggers(node->ps.state, node->resultRelInfo); 0.00 : 5c3d9c: 49 8b b5 90 00 00 00 mov 0x90(%r13),%rsi 0.00 : 5c3da3: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5c3da7: e8 94 ee fc ff callq 592c40 0.00 : 5c3dac: e9 2f f8 ff ff jmpq 5c35e0 : fireASTriggers(ModifyTableState *node) : { : switch (node->operation) : { : case CMD_INSERT: : ExecASInsertTriggers(node->ps.state, node->resultRelInfo); 0.00 : 5c3db1: 49 8b b5 90 00 00 00 mov 0x90(%r13),%rsi 0.00 : 5c3db8: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 5c3dbc: e8 1f ef fc ff callq 592ce0 0.00 : 5c3dc1: e9 1a f8 ff ff jmpq 5c35e0 : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_insert_before_row) : { : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 5c3dc6: 4c 89 e2 mov %r12,%rdx 0.00 : 5c3dc9: 4c 89 fe mov %r15,%rsi 0.00 : 5c3dcc: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3dcf: e8 6c f6 fc ff callq 593440 : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3dd4: 48 85 c0 test %rax,%rax : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_insert_before_row) : { : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 5c3dd7: 49 89 c4 mov %rax,%r12 : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3dda: 0f 84 e0 f4 ff ff je 5c32c0 : return NULL; : : /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5c3de0: 48 89 c7 mov %rax,%rdi 0.00 : 5c3de3: e8 18 02 ff ff callq 5b4000 0.00 : 5c3de8: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : } : : /* INSTEAD OF ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c3def: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5c3df3: 48 85 c0 test %rax,%rax 0.00 : 5c3df6: 0f 85 a7 fa ff ff jne 5c38a3 0.00 : 5c3dfc: e9 ac fa ff ff jmpq 5c38ad 0.00 : 5c3e01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : resultRelInfo->ri_TrigDesc->trig_insert_instead_row) : { : slot = ExecIRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 5c3e08: 4c 89 e2 mov %r12,%rdx 0.00 : 5c3e0b: 4c 89 fe mov %r15,%rsi 0.00 : 5c3e0e: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3e11: e8 9a f4 fc ff callq 5932b0 : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3e16: 48 85 c0 test %rax,%rax : : /* INSTEAD OF ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_insert_instead_row) : { : slot = ExecIRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 5c3e19: 49 89 c4 mov %rax,%r12 : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3e1c: 0f 85 94 fe ff ff jne 5c3cb6 0.00 : 5c3e22: e9 99 f4 ff ff jmpq 5c32c0 : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_delete_before_row) : { : bool dodelete; : : dodelete = ExecBRDeleteTriggers(estate, epqstate, resultRelInfo, 0.00 : 5c3e27: 4c 8b 85 40 ff ff ff mov -0xc0(%rbp),%r8 0.00 : 5c3e2e: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 5c3e35: 4c 89 e2 mov %r12,%rdx 0.00 : 5c3e38: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 5c3e3f: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3e42: e8 e9 ff fc ff callq 593e30 : tupleid, oldtuple); : : if (!dodelete) /* "do nothing" */ 0.00 : 5c3e47: 84 c0 test %al,%al 0.00 : 5c3e49: 0f 84 71 f4 ff ff je 5c32c0 : return NULL; : } : : /* INSTEAD OF ROW DELETE Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c3e4f: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5c3e54: 48 85 c0 test %rax,%rax 0.00 : 5c3e57: 0f 85 22 f5 ff ff jne 5c337f 0.00 : 5c3e5d: 0f 1f 00 nopl (%rax) 0.00 : 5c3e60: e9 24 f5 ff ff jmpq 5c3389 0.00 : 5c3e65: 0f 1f 00 nopl (%rax) : resultRelInfo->ri_TrigDesc->trig_delete_instead_row) : { : bool dodelete; : : Assert(oldtuple != NULL); : dodelete = ExecIRDeleteTriggers(estate, resultRelInfo, oldtuple); 0.00 : 5c3e68: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 5c3e6f: 4c 89 e6 mov %r12,%rsi 0.00 : 5c3e72: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3e75: e8 a6 f1 fc ff callq 593020 : : if (!dodelete) /* "do nothing" */ 0.00 : 5c3e7a: 84 c0 test %al,%al 0.00 : 5c3e7c: 0f 85 54 f5 ff ff jne 5c33d6 0.00 : 5c3e82: e9 39 f4 ff ff jmpq 5c32c0 : : /* BEFORE ROW UPDATE Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_update_before_row) : { : slot = ExecBRUpdateTriggers(estate, epqstate, resultRelInfo, 0.00 : 5c3e87: 4c 8b 85 40 ff ff ff mov -0xc0(%rbp),%r8 0.00 : 5c3e8e: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 5c3e95: 4d 89 e1 mov %r12,%r9 0.00 : 5c3e98: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 5c3e9f: 4c 89 fa mov %r15,%rdx 0.00 : 5c3ea2: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3ea5: e8 f6 00 fd ff callq 593fa0 : tupleid, oldtuple, slot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3eaa: 48 85 c0 test %rax,%rax : : /* BEFORE ROW UPDATE Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_update_before_row) : { : slot = ExecBRUpdateTriggers(estate, epqstate, resultRelInfo, 0.00 : 5c3ead: 49 89 c4 mov %rax,%r12 : tupleid, oldtuple, slot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3eb0: 0f 84 0a f4 ff ff je 5c32c0 : return NULL; : : /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); 0.00 : 5c3eb6: 48 89 c7 mov %rax,%rdi 0.00 : 5c3eb9: e8 42 01 ff ff callq 5b4000 0.00 : 5c3ebe: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : } : : /* INSTEAD OF ROW UPDATE Triggers */ : if (resultRelInfo->ri_TrigDesc && 0.00 : 5c3ec5: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 5c3ec9: 48 85 c0 test %rax,%rax 0.00 : 5c3ecc: 0f 85 2a f8 ff ff jne 5c36fc 0.00 : 5c3ed2: e9 2f f8 ff ff jmpq 5c3706 0.00 : 5c3ed7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5c3ede: 00 00 : resultRelInfo->ri_TrigDesc->trig_update_instead_row) : { : slot = ExecIRUpdateTriggers(estate, resultRelInfo, 0.00 : 5c3ee0: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 5c3ee7: 4c 89 e1 mov %r12,%rcx 0.00 : 5c3eea: 4c 89 fe mov %r15,%rsi 0.00 : 5c3eed: 4c 89 f7 mov %r14,%rdi 0.00 : 5c3ef0: e8 9b ef fc ff callq 592e90 : oldtuple, slot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3ef5: 48 85 c0 test %rax,%rax : : /* INSTEAD OF ROW UPDATE Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_update_instead_row) : { : slot = ExecIRUpdateTriggers(estate, resultRelInfo, 0.00 : 5c3ef8: 49 89 c4 mov %rax,%r12 : oldtuple, slot); : : if (slot == NULL) /* "do nothing" */ 0.00 : 5c3efb: 0f 85 f4 fd ff ff jne 5c3cf5 0.00 : 5c3f01: e9 ba f3 ff ff jmpq 5c32c0 : : /* : * abort the operation if not running transactions : */ : if (IsBootstrapProcessingMode()) : elog(ERROR, "cannot UPDATE during bootstrap"); 0.00 : 5c3f06: ba 9f c2 88 00 mov $0x88c29f,%edx 0.00 : 5c3f0b: be 4c 02 00 00 mov $0x24c,%esi 0.00 : 5c3f10: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c3f15: e8 06 75 1b 00 callq 77b420 0.00 : 5c3f1a: be c8 c1 88 00 mov $0x88c1c8,%esi 0.00 : 5c3f1f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3f24: 31 c0 xor %eax,%eax 0.00 : 5c3f26: e8 05 73 1b 00 callq 77b230 0.00 : 5c3f2b: e8 a0 55 ea ff callq 4694d0 : datum = ExecGetJunkAttribute(slot, : junkfilter->jf_junkAttNo, : &isNull); : /* shouldn't ever get a null result... */ : if (isNull) : elog(ERROR, "ctid is NULL"); 0.00 : 5c3f30: ba 80 c2 88 00 mov $0x88c280,%edx 0.00 : 5c3f35: be c9 03 00 00 mov $0x3c9,%esi 0.00 : 5c3f3a: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c3f3f: e8 dc 74 1b 00 callq 77b420 0.00 : 5c3f44: be 1b be 88 00 mov $0x88be1b,%esi 0.00 : 5c3f49: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3f4e: 31 c0 xor %eax,%eax 0.00 : 5c3f50: e8 db 72 1b 00 callq 77b230 0.00 : 5c3f55: e8 76 55 ea ff callq 4694d0 : deltuple = *oldtuple; : delbuffer = InvalidBuffer; : } : else : { : deltuple.t_self = *tupleid; 0.00 : 5c3f5a: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx : if (!heap_fetch(resultRelationDesc, SnapshotAny, 0.00 : 5c3f61: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 5c3f65: 45 31 c9 xor %r9d,%r9d 0.00 : 5c3f68: 45 31 c0 xor %r8d,%r8d 0.00 : 5c3f6b: be a0 26 b7 00 mov $0xb726a0,%esi 0.00 : 5c3f70: 4c 89 ff mov %r15,%rdi : deltuple = *oldtuple; : delbuffer = InvalidBuffer; : } : else : { : deltuple.t_self = *tupleid; 0.00 : 5c3f73: 8b 02 mov (%rdx),%eax 0.00 : 5c3f75: 89 85 74 ff ff ff mov %eax,-0x8c(%rbp) 0.00 : 5c3f7b: 0f b7 42 04 movzwl 0x4(%rdx),%eax : if (!heap_fetch(resultRelationDesc, SnapshotAny, 0.00 : 5c3f7f: 48 8d 95 70 ff ff ff lea -0x90(%rbp),%rdx : deltuple = *oldtuple; : delbuffer = InvalidBuffer; : } : else : { : deltuple.t_self = *tupleid; 0.00 : 5c3f86: 66 89 85 78 ff ff ff mov %ax,-0x88(%rbp) : if (!heap_fetch(resultRelationDesc, SnapshotAny, 0.00 : 5c3f8d: e8 4e 7d ed ff callq 49bce0 0.00 : 5c3f92: 84 c0 test %al,%al 0.00 : 5c3f94: 0f 85 ae fd ff ff jne 5c3d48 : &deltuple, &delbuffer, false, NULL)) : elog(ERROR, "failed to fetch deleted tuple for DELETE RETURNING"); 0.00 : 5c3f9a: ba aa c2 88 00 mov $0x88c2aa,%edx 0.00 : 5c3f9f: be 07 02 00 00 mov $0x207,%esi 0.00 : 5c3fa4: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c3fa9: e8 72 74 1b 00 callq 77b420 0.00 : 5c3fae: be e8 c1 88 00 mov $0x88c1e8,%esi 0.00 : 5c3fb3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3fb8: 31 c0 xor %eax,%eax 0.00 : 5c3fba: e8 71 72 1b 00 callq 77b230 0.00 : 5c3fbf: e8 0c 55 ea ff callq 4694d0 0.00 : 5c3fc4: 0f 1f 40 00 nopl 0x0(%rax) : datum = ExecGetJunkAttribute(slot, : junkfilter->jf_junkAttNo, : &isNull); : /* shouldn't ever get a null result... */ : if (isNull) : elog(ERROR, "wholerow is NULL"); 0.00 : 5c3fc8: ba 80 c2 88 00 mov $0x88c280,%edx 0.00 : 5c3fcd: be e6 03 00 00 mov $0x3e6,%esi 0.00 : 5c3fd2: bf 4f c0 88 00 mov $0x88c04f,%edi 0.00 : 5c3fd7: e8 44 74 1b 00 callq 77b420 0.00 : 5c3fdc: be b8 c0 88 00 mov $0x88c0b8,%esi 0.00 : 5c3fe1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c3fe6: 31 c0 xor %eax,%eax 0.00 : 5c3fe8: e8 43 72 1b 00 callq 77b230 0.00 : 5c3fed: e8 de 54 ea ff callq 4694d0 : case HeapTupleMayBeUpdated: : break; : : case HeapTupleUpdated: : if (IsolationUsesXactSnapshot()) : ereport(ERROR, 0.00 : 5c3ff2: 45 31 c0 xor %r8d,%r8d 0.00 : 5c3ff5: b9 aa c2 88 00 mov $0x88c2aa,%ecx 0.00 : 5c3ffa: ba bf 01 00 00 mov $0x1bf,%edx 0.00 : 5c3fff: be 4f c0 88 00 mov $0x88c04f,%esi 0.00 : 5c4004: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5c4009: e8 b2 6a 1b 00 callq 77aac0 0.00 : 5c400e: 84 c0 test %al,%al 0.00 : 5c4010: 0f 84 7c f5 ff ff je 5c3592 0.00 : 5c4016: bf 38 58 88 00 mov $0x885838,%edi 0.00 : 5c401b: 31 c0 xor %eax,%eax 0.00 : 5c401d: e8 7e 88 1b 00 callq 77c8a0 0.00 : 5c4022: bf 04 00 00 01 mov $0x1000004,%edi 0.00 : 5c4027: 89 c3 mov %eax,%ebx 0.00 : 5c4029: e8 22 8d 1b 00 callq 77cd50 0.00 : 5c402e: 89 de mov %ebx,%esi 0.00 : 5c4030: 89 c7 mov %eax,%edi 0.00 : 5c4032: 31 c0 xor %eax,%eax 0.00 : 5c4034: e8 a7 65 1b 00 callq 77a5e0 0.00 : 5c4039: e9 54 f5 ff ff jmpq 5c3592 : case HeapTupleMayBeUpdated: : break; : : case HeapTupleUpdated: : if (IsolationUsesXactSnapshot()) : ereport(ERROR, 0.00 : 5c403e: 45 31 c0 xor %r8d,%r8d 0.00 : 5c4041: b9 9f c2 88 00 mov $0x88c29f,%ecx 0.00 : 5c4046: ba d5 02 00 00 mov $0x2d5,%edx 0.00 : 5c404b: eb b2 jmp 5c3fff Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:354 50.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:356 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005cd310 : : } : : /* Conditional pop: pop only if SPI_push_conditional pushed */ : void : SPI_pop_conditional(bool pushed) : { 0.00 : 5cd310: 55 push %rbp : /* We should be in a state where SPI_connect would succeed */ : Assert(_SPI_curid == _SPI_connected); : if (pushed) /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:354 50.00 : 5cd311: 40 84 ff test %dil,%dil : } : : /* Conditional pop: pop only if SPI_push_conditional pushed */ : void : SPI_pop_conditional(bool pushed) : { 0.00 : 5cd314: 48 89 e5 mov %rsp,%rbp : /* We should be in a state where SPI_connect would succeed */ : Assert(_SPI_curid == _SPI_connected); : if (pushed) 0.00 : 5cd317: 74 07 je 5cd320 : _SPI_curid--; 0.00 : 5cd319: 83 2d 54 b1 59 00 01 subl $0x1,0x59b154(%rip) # b68474 <_SPI_curid> : } /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:356 50.00 : 5cd320: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/libpq/pqcomm.c:1189 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005db950 : : return res; : } : : static int : internal_putbytes(const char *s, size_t len) : { 0.00 : 5db950: 55 push %rbp 0.00 : 5db951: 48 89 e5 mov %rsp,%rbp 0.00 : 5db954: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/libpq/pqcomm.c:1189 100.00 : 5db956: 49 89 fd mov %rdi,%r13 0.00 : 5db959: 41 54 push %r12 0.00 : 5db95b: 49 89 f4 mov %rsi,%r12 0.00 : 5db95e: 53 push %rbx 0.00 : 5db95f: 48 83 ec 08 sub $0x8,%rsp : size_t amount; : : while (len > 0) 0.00 : 5db963: 48 85 f6 test %rsi,%rsi 0.00 : 5db966: 75 0b jne 5db973 0.00 : 5db968: eb 4b jmp 5db9b5 0.00 : 5db96a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : amount = PqSendBufferSize - PqSendPointer; : if (amount > len) : amount = len; : memcpy(PqSendBuffer + PqSendPointer, s, amount); : PqSendPointer += amount; : s += amount; 0.00 : 5db970: 49 01 dd add %rbx,%r13 : size_t amount; : : while (len > 0) : { : /* If buffer is full, then flush it out */ : if (PqSendPointer >= PqSendBufferSize) 0.00 : 5db973: 8b 15 63 e0 59 00 mov 0x59e063(%rip),%edx # b799dc 0.00 : 5db979: 3b 15 59 e0 59 00 cmp 0x59e059(%rip),%edx # b799d8 0.00 : 5db97f: 7d 47 jge 5db9c8 : { : pq_set_nonblocking(false); : if (internal_flush()) : return EOF; : } : amount = PqSendBufferSize - PqSendPointer; 0.00 : 5db981: 8b 05 51 e0 59 00 mov 0x59e051(%rip),%eax # b799d8 : if (amount > len) : amount = len; : memcpy(PqSendBuffer + PqSendPointer, s, amount); 0.00 : 5db987: 48 63 fa movslq %edx,%rdi 0.00 : 5db98a: 4c 89 ee mov %r13,%rsi : { : pq_set_nonblocking(false); : if (internal_flush()) : return EOF; : } : amount = PqSendBufferSize - PqSendPointer; 0.00 : 5db98d: 29 d0 sub %edx,%eax 0.00 : 5db98f: 48 98 cltq 0.00 : 5db991: 49 39 c4 cmp %rax,%r12 0.00 : 5db994: 48 89 c3 mov %rax,%rbx 0.00 : 5db997: 49 0f 46 dc cmovbe %r12,%rbx : if (amount > len) : amount = len; : memcpy(PqSendBuffer + PqSendPointer, s, amount); 0.00 : 5db99b: 48 03 3d 2e e0 59 00 add 0x59e02e(%rip),%rdi # b799d0 0.00 : 5db9a2: 48 89 da mov %rbx,%rdx 0.00 : 5db9a5: e8 46 e2 e8 ff callq 469bf0 : PqSendPointer += amount; 0.00 : 5db9aa: 01 1d 2c e0 59 00 add %ebx,0x59e02c(%rip) # b799dc : static int : internal_putbytes(const char *s, size_t len) : { : size_t amount; : : while (len > 0) 0.00 : 5db9b0: 49 29 dc sub %rbx,%r12 0.00 : 5db9b3: 75 bb jne 5db970 : amount = PqSendBufferSize - PqSendPointer; : if (amount > len) : amount = len; : memcpy(PqSendBuffer + PqSendPointer, s, amount); : PqSendPointer += amount; : s += amount; 0.00 : 5db9b5: 31 c0 xor %eax,%eax : len -= amount; : } : return 0; : } 0.00 : 5db9b7: 48 83 c4 08 add $0x8,%rsp 0.00 : 5db9bb: 5b pop %rbx 0.00 : 5db9bc: 41 5c pop %r12 0.00 : 5db9be: 41 5d pop %r13 0.00 : 5db9c0: c9 leaveq 0.00 : 5db9c1: c3 retq 0.00 : 5db9c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : while (len > 0) : { : /* If buffer is full, then flush it out */ : if (PqSendPointer >= PqSendBufferSize) : { : pq_set_nonblocking(false); 0.00 : 5db9c8: 31 ff xor %edi,%edi 0.00 : 5db9ca: e8 b1 fd ff ff callq 5db780 : if (internal_flush()) 0.00 : 5db9cf: e8 5c fe ff ff callq 5db830 0.00 : 5db9d4: 85 c0 test %eax,%eax 0.00 : 5db9d6: 75 08 jne 5db9e0 0.00 : 5db9d8: 8b 15 fe df 59 00 mov 0x59dffe(%rip),%edx # b799dc 0.00 : 5db9de: eb a1 jmp 5db981 : amount = PqSendBufferSize - PqSendPointer; : if (amount > len) : amount = len; : memcpy(PqSendBuffer + PqSendPointer, s, amount); : PqSendPointer += amount; : s += amount; 0.00 : 5db9e0: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 5db9e5: eb d0 jmp 5db9b7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/libpq/pqcomm.c:1380 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005db9f0 : : * returns 0 if OK, EOF if trouble : * -------------------------------- : */ : int : pq_putmessage(char msgtype, const char *s, size_t len) : { 0.00 : 5db9f0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/libpq/pqcomm.c:1380 100.00 : 5db9f1: 48 89 e5 mov %rsp,%rbp 0.00 : 5db9f4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 5db9f8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 5db9fc: 48 83 ec 30 sub $0x30,%rsp : if (DoingCopyOut || PqCommBusy) 0.00 : 5dba00: 80 3d 02 00 5a 00 00 cmpb $0x0,0x5a0002(%rip) # b7ba09 : * returns 0 if OK, EOF if trouble : * -------------------------------- : */ : int : pq_putmessage(char msgtype, const char *s, size_t len) : { 0.00 : 5dba07: 49 89 f4 mov %rsi,%r12 0.00 : 5dba0a: 48 89 d3 mov %rdx,%rbx 0.00 : 5dba0d: 40 88 7d dc mov %dil,-0x24(%rbp) : if (DoingCopyOut || PqCommBusy) 0.00 : 5dba11: 75 4d jne 5dba60 0.00 : 5dba13: 80 3d ee ff 59 00 00 cmpb $0x0,0x59ffee(%rip) # b7ba08 0.00 : 5dba1a: 75 44 jne 5dba60 : return 0; : PqCommBusy = true; : if (msgtype) 0.00 : 5dba1c: 40 84 ff test %dil,%dil : int : pq_putmessage(char msgtype, const char *s, size_t len) : { : if (DoingCopyOut || PqCommBusy) : return 0; : PqCommBusy = true; 0.00 : 5dba1f: c6 05 e2 ff 59 00 01 movb $0x1,0x59ffe2(%rip) # b7ba08 : if (msgtype) 0.00 : 5dba26: 75 68 jne 5dba90 : if (internal_putbytes(&msgtype, 1)) : goto fail; : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) 0.00 : 5dba28: 66 83 3d b2 42 5e 00 cmpw $0x2,0x5e42b2(%rip) # bbfce2 0.00 : 5dba2f: 02 0.00 : 5dba30: 77 3e ja 5dba70 : : n32 = htonl((uint32) (len + 4)); : if (internal_putbytes((char *) &n32, 4)) : goto fail; : } : if (internal_putbytes(s, len)) 0.00 : 5dba32: 48 89 de mov %rbx,%rsi 0.00 : 5dba35: 4c 89 e7 mov %r12,%rdi 0.00 : 5dba38: e8 13 ff ff ff callq 5db950 0.00 : 5dba3d: 85 c0 test %eax,%eax 0.00 : 5dba3f: 74 67 je 5dbaa8 : goto fail; : PqCommBusy = false; : return 0; : : fail: : PqCommBusy = false; 0.00 : 5dba41: c6 05 c0 ff 59 00 00 movb $0x0,0x59ffc0(%rip) # b7ba08 0.00 : 5dba48: b8 ff ff ff ff mov $0xffffffff,%eax : return EOF; : } 0.00 : 5dba4d: 48 8b 5d f0 mov -0x10(%rbp),%rbx 0.00 : 5dba51: 4c 8b 65 f8 mov -0x8(%rbp),%r12 0.00 : 5dba55: c9 leaveq 0.00 : 5dba56: c3 retq 0.00 : 5dba57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5dba5e: 00 00 : goto fail; : PqCommBusy = false; : return 0; : : fail: : PqCommBusy = false; 0.00 : 5dba60: 31 c0 xor %eax,%eax : return EOF; : } 0.00 : 5dba62: 48 8b 5d f0 mov -0x10(%rbp),%rbx 0.00 : 5dba66: 4c 8b 65 f8 mov -0x8(%rbp),%r12 0.00 : 5dba6a: c9 leaveq 0.00 : 5dba6b: c3 retq 0.00 : 5dba6c: 0f 1f 40 00 nopl 0x0(%rax) : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) : { : uint32 n32; : : n32 = htonl((uint32) (len + 4)); : if (internal_putbytes((char *) &n32, 4)) 0.00 : 5dba70: 48 8d 7d ec lea -0x14(%rbp),%rdi : goto fail; : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) : { : uint32 n32; : : n32 = htonl((uint32) (len + 4)); 0.00 : 5dba74: 8d 43 04 lea 0x4(%rbx),%eax : if (internal_putbytes((char *) &n32, 4)) 0.00 : 5dba77: be 04 00 00 00 mov $0x4,%esi : goto fail; : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) : { : uint32 n32; : : n32 = htonl((uint32) (len + 4)); 0.00 : 5dba7c: 0f c8 bswap %eax 0.00 : 5dba7e: 89 45 ec mov %eax,-0x14(%rbp) : if (internal_putbytes((char *) &n32, 4)) 0.00 : 5dba81: e8 ca fe ff ff callq 5db950 0.00 : 5dba86: 85 c0 test %eax,%eax 0.00 : 5dba88: 75 b7 jne 5dba41 0.00 : 5dba8a: eb a6 jmp 5dba32 0.00 : 5dba8c: 0f 1f 40 00 nopl 0x0(%rax) : { : if (DoingCopyOut || PqCommBusy) : return 0; : PqCommBusy = true; : if (msgtype) : if (internal_putbytes(&msgtype, 1)) 0.00 : 5dba90: 48 8d 7d dc lea -0x24(%rbp),%rdi 0.00 : 5dba94: be 01 00 00 00 mov $0x1,%esi 0.00 : 5dba99: e8 b2 fe ff ff callq 5db950 0.00 : 5dba9e: 85 c0 test %eax,%eax 0.00 : 5dbaa0: 75 9f jne 5dba41 0.00 : 5dbaa2: eb 84 jmp 5dba28 0.00 : 5dbaa4: 0f 1f 40 00 nopl 0x0(%rax) : if (internal_putbytes((char *) &n32, 4)) : goto fail; : } : if (internal_putbytes(s, len)) : goto fail; : PqCommBusy = false; 0.00 : 5dbaa8: c6 05 59 ff 59 00 00 movb $0x0,0x59ff59(%rip) # b7ba08 0.00 : 5dbaaf: 90 nop : return 0; : : fail: : PqCommBusy = false; : return EOF; : } 0.00 : 5dbab0: eb b0 jmp 5dba62 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:2790 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005de980 : : bool : query_or_expression_tree_walker(Node *node, : bool (*walker) (), : void *context, : int flags) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:2790 100.00 : 5de980: 55 push %rbp : if (node && IsA(node, Query)) 0.00 : 5de981: 48 85 ff test %rdi,%rdi : bool : query_or_expression_tree_walker(Node *node, : bool (*walker) (), : void *context, : int flags) : { 0.00 : 5de984: 49 89 f0 mov %rsi,%r8 0.00 : 5de987: 48 89 e5 mov %rsp,%rbp : if (node && IsA(node, Query)) 0.00 : 5de98a: 74 08 je 5de994 0.00 : 5de98c: 81 3f bc 02 00 00 cmpl $0x2bc,(%rdi) 0.00 : 5de992: 74 0c je 5de9a0 : return query_tree_walker((Query *) node, : walker, : context, : flags); : else : return walker(node, context); 0.00 : 5de994: 48 89 d6 mov %rdx,%rsi 0.00 : 5de997: 31 c0 xor %eax,%eax 0.00 : 5de999: 4d 89 c3 mov %r8,%r11 : } 0.00 : 5de99c: c9 leaveq : return query_tree_walker((Query *) node, : walker, : context, : flags); : else : return walker(node, context); 0.00 : 5de99d: 41 ff e3 jmpq *%r11 : } 0.00 : 5de9a0: c9 leaveq : bool (*walker) (), : void *context, : int flags) : { : if (node && IsA(node, Query)) : return query_tree_walker((Query *) node, 0.00 : 5de9a1: e9 ca fe ff ff jmpq 5de870 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:267 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e1850 : : * could be considered to retain its separate identity. This is no longer : * the case. : */ : List * : lcons(void *datum, List *list) : { 0.00 : 5e1850: 55 push %rbp 0.00 : 5e1851: 48 89 e5 mov %rsp,%rbp 0.00 : 5e1854: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 5e1858: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 5e185c: 48 83 ec 10 sub $0x10,%rsp : Assert(IsPointerList(list)); : : if (list == NIL) 0.00 : 5e1860: 48 85 f6 test %rsi,%rsi : * could be considered to retain its separate identity. This is no longer : * the case. : */ : List * : lcons(void *datum, List *list) : { 0.00 : 5e1863: 49 89 fc mov %rdi,%r12 0.00 : 5e1866: 48 89 f3 mov %rsi,%rbx : Assert(IsPointerList(list)); : : if (list == NIL) 0.00 : 5e1869: 74 35 je 5e18a0 : static void : new_head_cell(List *list) : { : ListCell *new_head; : : new_head = (ListCell *) palloc(sizeof(*new_head)); 0.00 : 5e186b: bf 10 00 00 00 mov $0x10,%edi 0.00 : 5e1870: e8 db 74 1b 00 callq 798d50 : new_head->next = list->head; 0.00 : 5e1875: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 5e1879: 48 89 50 08 mov %rdx,0x8(%rax) : : list->head = new_head; : list->length++; 0.00 : 5e187d: 83 43 04 01 addl $0x1,0x4(%rbx) : ListCell *new_head; : : new_head = (ListCell *) palloc(sizeof(*new_head)); : new_head->next = list->head; : : list->head = new_head; 0.00 : 5e1881: 48 89 43 08 mov %rax,0x8(%rbx) : if (list == NIL) : list = new_list(T_List); : else : new_head_cell(list); : : lfirst(list->head) = datum; 0.00 : 5e1885: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 5e1889: 4c 89 20 mov %r12,(%rax) : check_list_invariants(list); : return list; : } 0.00 : 5e188c: 48 89 d8 mov %rbx,%rax 0.00 : 5e188f: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5e1894: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5e1898: c9 leaveq 0.00 : 5e1899: c3 retq 0.00 : 5e189a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : lcons(void *datum, List *list) : { : Assert(IsPointerList(list)); : : if (list == NIL) : list = new_list(T_List); /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:267 100.00 : 5e18a0: bf 90 02 00 00 mov $0x290,%edi 0.00 : 5e18a5: e8 46 fd ff ff callq 5e15f0 0.00 : 5e18aa: 48 89 c3 mov %rax,%rbx 0.00 : 5e18ad: eb d6 jmp 5e1885 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:532 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2160 : : * : * The cell is pfree'd, as is the List header if this was the last member. : */ : List * : list_delete_cell(List *list, ListCell *cell, ListCell *prev) : { 0.00 : 5e2160: 55 push %rbp 0.00 : 5e2161: 48 89 e5 mov %rsp,%rbp 0.00 : 5e2164: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:532 100.00 : 5e2165: 48 89 fb mov %rdi,%rbx 0.00 : 5e2168: 48 83 ec 08 sub $0x8,%rsp : /* : * If we're about to delete the last node from the list, free the whole : * list instead and return NIL, which is the only valid representation of : * a zero-length list. : */ : if (list->length == 1) 0.00 : 5e216c: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5e216f: 83 f8 01 cmp $0x1,%eax 0.00 : 5e2172: 74 42 je 5e21b6 : : /* : * Otherwise, adjust the necessary list links, deallocate the particular : * node we have just removed, and return the list we were given. : */ : list->length--; 0.00 : 5e2174: 83 e8 01 sub $0x1,%eax : : if (prev) 0.00 : 5e2177: 48 85 d2 test %rdx,%rdx : : /* : * Otherwise, adjust the necessary list links, deallocate the particular : * node we have just removed, and return the list we were given. : */ : list->length--; 0.00 : 5e217a: 89 47 04 mov %eax,0x4(%rdi) : : if (prev) 0.00 : 5e217d: 74 21 je 5e21a0 : prev->next = cell->next; 0.00 : 5e217f: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 5e2183: 48 89 42 08 mov %rax,0x8(%rdx) : else : list->head = cell->next; : : if (list->tail == cell) 0.00 : 5e2187: 48 39 73 10 cmp %rsi,0x10(%rbx) 0.00 : 5e218b: 74 23 je 5e21b0 : list->tail = prev; : : pfree(cell); 0.00 : 5e218d: 48 89 f7 mov %rsi,%rdi 0.00 : 5e2190: e8 eb 69 1b 00 callq 798b80 : return list; : } 0.00 : 5e2195: 48 89 d8 mov %rbx,%rax 0.00 : 5e2198: 48 83 c4 08 add $0x8,%rsp 0.00 : 5e219c: 5b pop %rbx 0.00 : 5e219d: c9 leaveq 0.00 : 5e219e: c3 retq 0.00 : 5e219f: 90 nop : list->length--; : : if (prev) : prev->next = cell->next; : else : list->head = cell->next; 0.00 : 5e21a0: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 5e21a4: 48 89 47 08 mov %rax,0x8(%rdi) : : if (list->tail == cell) 0.00 : 5e21a8: 48 39 73 10 cmp %rsi,0x10(%rbx) 0.00 : 5e21ac: 75 df jne 5e218d 0.00 : 5e21ae: 66 90 xchg %ax,%ax : list->tail = prev; 0.00 : 5e21b0: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 5e21b4: eb d7 jmp 5e218d : * list instead and return NIL, which is the only valid representation of : * a zero-length list. : */ : if (list->length == 1) : { : list_free(list); 0.00 : 5e21b6: e8 95 ff ff ff callq 5e2150 0.00 : 5e21bb: 31 db xor %ebx,%ebx 0.00 : 5e21bd: 0f 1f 00 nopl (%rax) : if (list->tail == cell) : list->tail = prev; : : pfree(cell); : return list; : } 0.00 : 5e21c0: eb d3 jmp 5e2195 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:794 50.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:794 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2cb0 : : /* : * bms_join - like bms_union, but *both* inputs are recycled : */ : Bitmapset * : bms_join(Bitmapset *a, Bitmapset *b) : { 0.00 : 5e2cb0: 55 push %rbp 0.00 : 5e2cb1: 48 89 f8 mov %rdi,%rax 0.00 : 5e2cb4: 48 89 e5 mov %rsp,%rbp 0.00 : 5e2cb7: 53 push %rbx 0.00 : 5e2cb8: 48 83 ec 08 sub $0x8,%rsp : Bitmapset *other; : int otherlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) 0.00 : 5e2cbc: 48 85 ff test %rdi,%rdi 0.00 : 5e2cbf: 74 3f je 5e2d00 : return b; : if (b == NULL) 0.00 : 5e2cc1: 48 85 f6 test %rsi,%rsi 0.00 : 5e2cc4: 74 5a je 5e2d20 : return a; : /* Identify shorter and longer input; use longer one as result */ : if (a->nwords < b->nwords) 0.00 : 5e2cc6: 8b 17 mov (%rdi),%edx 0.00 : 5e2cc8: 8b 0e mov (%rsi),%ecx 0.00 : 5e2cca: 48 89 fb mov %rdi,%rbx 0.00 : 5e2ccd: 48 89 f7 mov %rsi,%rdi 0.00 : 5e2cd0: 39 ca cmp %ecx,%edx 0.00 : 5e2cd2: 7c 3c jl 5e2d10 : result = a; : other = b; : } : /* And union the shorter input into the result */ : otherlen = other->nwords; : for (i = 0; i < otherlen; i++) 0.00 : 5e2cd4: 85 c9 test %ecx,%ecx 0.00 : 5e2cd6: 7e 18 jle 5e2cf0 0.00 : 5e2cd8: 31 d2 xor %edx,%edx 0.00 : 5e2cda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : result->words[i] |= other->words[i]; 0.00 : 5e2ce0: 8b 44 97 04 mov 0x4(%rdi,%rdx,4),%eax 0.00 : 5e2ce4: 09 44 93 04 or %eax,0x4(%rbx,%rdx,4) 0.00 : 5e2ce8: 48 83 c2 01 add $0x1,%rdx : result = a; : other = b; : } : /* And union the shorter input into the result */ : otherlen = other->nwords; : for (i = 0; i < otherlen; i++) 0.00 : 5e2cec: 39 d1 cmp %edx,%ecx 0.00 : 5e2cee: 7f f0 jg 5e2ce0 : result->words[i] |= other->words[i]; : if (other != result) /* pure paranoia */ 0.00 : 5e2cf0: 48 39 df cmp %rbx,%rdi 0.00 : 5e2cf3: 48 89 fe mov %rdi,%rsi 0.00 : 5e2cf6: 74 08 je 5e2d00 : pfree(other); 0.00 : 5e2cf8: e8 83 5e 1b 00 callq 798b80 0.00 : 5e2cfd: 48 89 de mov %rbx,%rsi : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:794 50.00 : 5e2d00: 48 83 c4 08 add $0x8,%rsp 50.00 : 5e2d04: 48 89 f0 mov %rsi,%rax 0.00 : 5e2d07: 5b pop %rbx 0.00 : 5e2d08: c9 leaveq 0.00 : 5e2d09: c3 retq 0.00 : 5e2d0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (a == NULL) : return b; : if (b == NULL) : return a; : /* Identify shorter and longer input; use longer one as result */ : if (a->nwords < b->nwords) 0.00 : 5e2d10: 48 89 f3 mov %rsi,%rbx 0.00 : 5e2d13: 48 89 c7 mov %rax,%rdi 0.00 : 5e2d16: 89 d1 mov %edx,%ecx 0.00 : 5e2d18: eb ba jmp 5e2cd4 0.00 : 5e2d1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) : return b; : if (b == NULL) 0.00 : 5e2d20: 48 89 fe mov %rdi,%rsi : for (i = 0; i < otherlen; i++) : result->words[i] |= other->words[i]; : if (other != result) /* pure paranoia */ : pfree(other); : return result; : } 0.00 : 5e2d23: 48 83 c4 08 add $0x8,%rsp 0.00 : 5e2d27: 48 89 f0 mov %rsi,%rax 0.00 : 5e2d2a: 5b pop %rbx 0.00 : 5e2d2b: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/equalfuncs.c:2550 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005eb0d0 : : * equal : * returns whether two nodes are equal : */ : bool : equal(const void *a, const void *b) : { 0.00 : 5eb0d0: 55 push %rbp 0.00 : 5eb0d1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/equalfuncs.c:2550 100.00 : 5eb0d4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 5eb0d8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 5eb0dc: 48 83 ec 10 sub $0x10,%rsp : bool retval; : : if (a == b) 0.00 : 5eb0e0: 48 39 f7 cmp %rsi,%rdi : * equal : * returns whether two nodes are equal : */ : bool : equal(const void *a, const void *b) : { 0.00 : 5eb0e3: 48 89 fb mov %rdi,%rbx 0.00 : 5eb0e6: 49 89 f4 mov %rsi,%r12 : bool retval; : : if (a == b) 0.00 : 5eb0e9: 74 6d je 5eb158 : return true; : : /* : * note that a!=b, so only one of them can be NULL : */ : if (a == NULL || b == NULL) 0.00 : 5eb0eb: 48 85 ff test %rdi,%rdi 0.00 : 5eb0ee: 74 0b je 5eb0fb 0.00 : 5eb0f0: 48 85 f6 test %rsi,%rsi 0.00 : 5eb0f3: 74 06 je 5eb0fb : return false; : : /* : * are they the same type of nodes? : */ : if (nodeTag(a) != nodeTag(b)) 0.00 : 5eb0f5: 8b 07 mov (%rdi),%eax 0.00 : 5eb0f7: 3b 06 cmp (%rsi),%eax 0.00 : 5eb0f9: 74 15 je 5eb110 : case T_XmlSerialize: : retval = _equalXmlSerialize(a, b); : break; : : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5eb0fb: 31 d2 xor %edx,%edx : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb0fd: 89 d0 mov %edx,%eax 0.00 : 5eb0ff: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb103: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb108: c9 leaveq 0.00 : 5eb109: c3 retq 0.00 : 5eb10a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * are they the same type of nodes? : */ : if (nodeTag(a) != nodeTag(b)) : return false; : : switch (nodeTag(a)) 0.00 : 5eb110: 2d 2c 01 00 00 sub $0x12c,%eax 0.00 : 5eb115: 3d 7d 02 00 00 cmp $0x27d,%eax 0.00 : 5eb11a: 76 4c jbe 5eb168 : case T_XmlSerialize: : retval = _equalXmlSerialize(a, b); : break; : : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5eb11c: ba 90 53 89 00 mov $0x895390,%edx 0.00 : 5eb121: be 60 0c 00 00 mov $0xc60,%esi 0.00 : 5eb126: bf 72 3f 89 00 mov $0x893f72,%edi 0.00 : 5eb12b: e8 f0 02 19 00 callq 77b420 0.00 : 5eb130: 8b 13 mov (%rbx),%edx 0.00 : 5eb132: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5eb137: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5eb13c: 31 c0 xor %eax,%eax 0.00 : 5eb13e: e8 ed 00 19 00 callq 77b230 0.00 : 5eb143: e8 88 e3 e7 ff callq 4694d0 : static bool : _equalValue(const Value *a, const Value *b) : { : COMPARE_SCALAR_FIELD(type); : : switch (a->type) 0.00 : 5eb148: 3d 8f 02 00 00 cmp $0x28f,%eax 0.00 : 5eb14d: 0f 85 63 0d 00 00 jne 5ebeb6 0.00 : 5eb153: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : case T_XmlSerialize: : retval = _equalXmlSerialize(a, b); : break; : : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5eb158: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5eb15d: 0f 1f 00 nopl (%rax) 0.00 : 5eb160: eb 9b jmp 5eb0fd 0.00 : 5eb162: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * are they the same type of nodes? : */ : if (nodeTag(a) != nodeTag(b)) : return false; : : switch (nodeTag(a)) 0.00 : 5eb168: 89 c0 mov %eax,%eax 0.00 : 5eb16a: ff 24 c5 a0 3f 89 00 jmpq *0x893fa0(,%rax,8) : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb171: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb175: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb17a: c9 leaveq : break; : case T_WithClause: : retval = _equalWithClause(a, b); : break; : case T_CommonTableExpr: : retval = _equalCommonTableExpr(a, b); 0.00 : 5eb17b: e9 b0 60 00 00 jmpq 5f1230 <_equalCommonTableExpr> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb180: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb184: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb189: c9 leaveq : break; : case T_RowMarkClause: : retval = _equalRowMarkClause(a, b); : break; : case T_WithClause: : retval = _equalWithClause(a, b); 0.00 : 5eb18a: e9 51 60 00 00 jmpq 5f11e0 <_equalWithClause> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb18f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb193: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb198: c9 leaveq : break; : case T_AccessPriv: : retval = _equalAccessPriv(a, b); : break; : case T_XmlSerialize: : retval = _equalXmlSerialize(a, b); 0.00 : 5eb199: e9 22 62 00 00 jmpq 5f13c0 <_equalXmlSerialize> : } : : static bool : _equalRowMarkClause(const RowMarkClause *a, const RowMarkClause *b) : { : COMPARE_SCALAR_FIELD(rti); 0.00 : 5eb19e: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eb1a1: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eb1a4: 0f 85 51 ff ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(strength); 0.00 : 5eb1aa: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5eb1ad: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5eb1b0: 0f 85 45 ff ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(waitPolicy); 0.00 : 5eb1b6: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5eb1b9: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5eb1bc: 0f 85 39 ff ff ff jne 5eb0fb 0.00 : 5eb1c2: 0f b6 47 10 movzbl 0x10(%rdi),%eax 0.00 : 5eb1c6: 3a 46 10 cmp 0x10(%rsi),%al 0.00 : 5eb1c9: 0f 94 c2 sete %dl 0.00 : 5eb1cc: e9 2c ff ff ff jmpq 5eb0fd 0.00 : 5eb1d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb1d8: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb1dc: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb1e1: c9 leaveq : break; : case T_DefElem: : retval = _equalDefElem(a, b); : break; : case T_LockingClause: : retval = _equalLockingClause(a, b); 0.00 : 5eb1e2: e9 49 5e 00 00 jmpq 5f1030 <_equalLockingClause> : } : : static bool : _equalFunctionParameter(const FunctionParameter *a, const FunctionParameter *b) : { : COMPARE_STRING_FIELD(name); 0.00 : 5eb1e7: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb1eb: 48 85 ff test %rdi,%rdi 0.00 : 5eb1ee: 0f 84 ff 2f 00 00 je 5ee1f3 0.00 : 5eb1f4: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb1f8: 48 85 f6 test %rsi,%rsi 0.00 : 5eb1fb: 0f 84 f6 2f 00 00 je 5ee1f7 0.00 : 5eb201: e8 2a eb e7 ff callq 469d30 0.00 : 5eb206: 85 c0 test %eax,%eax 0.00 : 5eb208: 0f 95 c0 setne %al 0.00 : 5eb20b: 84 c0 test %al,%al 0.00 : 5eb20d: 0f 84 9d 17 00 00 je 5ec9b0 : COMPARE_NODE_FIELD(argType); : COMPARE_SCALAR_FIELD(mode); : COMPARE_NODE_FIELD(defexpr); 0.00 : 5eb213: 31 d2 xor %edx,%edx 0.00 : 5eb215: e9 e3 fe ff ff jmpq 5eb0fd : } : : static bool : _equalTableLikeClause(const TableLikeClause *a, const TableLikeClause *b) : { : COMPARE_NODE_FIELD(relation); 0.00 : 5eb21a: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb21e: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb222: e8 a9 fe ff ff callq 5eb0d0 0.00 : 5eb227: 31 d2 xor %edx,%edx 0.00 : 5eb229: 84 c0 test %al,%al 0.00 : 5eb22b: 0f 84 cc fe ff ff je 5eb0fd 0.00 : 5eb231: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5eb234: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5eb239: 0f 94 c2 sete %dl 0.00 : 5eb23c: e9 bc fe ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb241: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb245: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb24a: c9 leaveq : break; : case T_CreateOpClassStmt: : retval = _equalCreateOpClassStmt(a, b); : break; : case T_CreateOpClassItem: : retval = _equalCreateOpClassItem(a, b); 0.00 : 5eb24b: e9 40 3a 00 00 jmpq 5eec90 <_equalCreateOpClassItem> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb250: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb254: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb259: c9 leaveq : break; : case T_FuncWithArgs: : retval = _equalFuncWithArgs(a, b); : break; : case T_AccessPriv: : retval = _equalAccessPriv(a, b); 0.00 : 5eb25a: e9 01 61 00 00 jmpq 5f1360 <_equalAccessPriv> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb25f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb263: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb268: c9 leaveq : break; : case T_PrivGrantee: : retval = _equalPrivGrantee(a, b); : break; : case T_FuncWithArgs: : retval = _equalFuncWithArgs(a, b); 0.00 : 5eb269: e9 a2 60 00 00 jmpq 5f1310 <_equalFuncWithArgs> : } : : static bool : _equalPrivGrantee(const PrivGrantee *a, const PrivGrantee *b) : { : COMPARE_STRING_FIELD(rolname); 0.00 : 5eb26e: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb272: 48 85 ff test %rdi,%rdi 0.00 : 5eb275: 0f 84 87 2f 00 00 je 5ee202 0.00 : 5eb27b: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb27f: 48 85 f6 test %rsi,%rsi 0.00 : 5eb282: 0f 84 7e 2f 00 00 je 5ee206 0.00 : 5eb288: e8 a3 ea e7 ff callq 469d30 0.00 : 5eb28d: 85 c0 test %eax,%eax 0.00 : 5eb28f: 0f 95 c0 setne %al 0.00 : 5eb292: 89 c2 mov %eax,%edx 0.00 : 5eb294: 83 f2 01 xor $0x1,%edx 0.00 : 5eb297: e9 61 fe ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb29c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb2a0: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb2a5: c9 leaveq : break; : case T_SortGroupClause: : retval = _equalSortGroupClause(a, b); : break; : case T_WindowClause: : retval = _equalWindowClause(a, b); 0.00 : 5eb2a6: e9 45 5e 00 00 jmpq 5f10f0 <_equalWindowClause> : } : : static bool : _equalSortGroupClause(const SortGroupClause *a, const SortGroupClause *b) : { : COMPARE_SCALAR_FIELD(tleSortGroupRef); 0.00 : 5eb2ab: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eb2ae: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eb2b1: 0f 85 44 fe ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(eqop); 0.00 : 5eb2b7: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5eb2ba: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5eb2bd: 0f 85 38 fe ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(sortop); 0.00 : 5eb2c3: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5eb2c6: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5eb2c9: 0f 85 2c fe ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(nulls_first); 0.00 : 5eb2cf: 0f b6 47 10 movzbl 0x10(%rdi),%eax 0.00 : 5eb2d3: 3a 46 10 cmp 0x10(%rsi),%al 0.00 : 5eb2d6: 0f 85 1f fe ff ff jne 5eb0fb 0.00 : 5eb2dc: 0f b6 47 11 movzbl 0x11(%rdi),%eax 0.00 : 5eb2e0: 3a 46 11 cmp 0x11(%rsi),%al 0.00 : 5eb2e3: 0f 94 c2 sete %dl 0.00 : 5eb2e6: e9 12 fe ff ff jmpq 5eb0fd 0.00 : 5eb2eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb2f0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb2f4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb2f9: c9 leaveq : break; : case T_RangeTblFunction: : retval = _equalRangeTblFunction(a, b); : break; : case T_WithCheckOption: : retval = _equalWithCheckOption(a, b); 0.00 : 5eb2fa: e9 81 5d 00 00 jmpq 5f1080 <_equalWithCheckOption> : } : : static bool : _equalRangeTblFunction(const RangeTblFunction *a, const RangeTblFunction *b) : { : COMPARE_NODE_FIELD(funcexpr); 0.00 : 5eb2ff: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb303: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb307: e8 c4 fd ff ff callq 5eb0d0 0.00 : 5eb30c: 84 c0 test %al,%al 0.00 : 5eb30e: 74 0e je 5eb31e : COMPARE_SCALAR_FIELD(funccolcount); 0.00 : 5eb310: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5eb313: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5eb318: 0f 84 b2 2d 00 00 je 5ee0d0 : COMPARE_NODE_FIELD(funccolnames); : COMPARE_NODE_FIELD(funccoltypes); : COMPARE_NODE_FIELD(funccoltypmods); : COMPARE_NODE_FIELD(funccolcollations); : COMPARE_BITMAPSET_FIELD(funcparams); 0.00 : 5eb31e: 31 d2 xor %edx,%edx 0.00 : 5eb320: e9 d8 fd ff ff jmpq 5eb0fd : } : : static bool : _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b) : { : COMPARE_SCALAR_FIELD(rtekind); 0.00 : 5eb325: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eb328: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eb32b: 0f 84 53 14 00 00 je 5ec784 : COMPARE_SCALAR_FIELD(inFromCl); : COMPARE_SCALAR_FIELD(requiredPerms); : COMPARE_SCALAR_FIELD(checkAsUser); : COMPARE_BITMAPSET_FIELD(selectedCols); : COMPARE_BITMAPSET_FIELD(modifiedCols); : COMPARE_NODE_FIELD(securityQuals); 0.00 : 5eb331: 31 d2 xor %edx,%edx 0.00 : 5eb333: e9 c5 fd ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb338: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb33c: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb341: c9 leaveq : break; : case T_Constraint: : retval = _equalConstraint(a, b); : break; : case T_DefElem: : retval = _equalDefElem(a, b); 0.00 : 5eb342: e9 49 5c 00 00 jmpq 5f0f90 <_equalDefElem> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb347: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb34b: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb350: c9 leaveq : break; : case T_ColumnDef: : retval = _equalColumnDef(a, b); : break; : case T_Constraint: : retval = _equalConstraint(a, b); 0.00 : 5eb351: e9 6a 59 00 00 jmpq 5f0cc0 <_equalConstraint> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb356: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb35a: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb35f: c9 leaveq : break; : case T_TypeName: : retval = _equalTypeName(a, b); : break; : case T_IndexElem: : retval = _equalIndexElem(a, b); 0.00 : 5eb360: e9 7b 57 00 00 jmpq 5f0ae0 <_equalIndexElem> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb365: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb369: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb36e: c9 leaveq : break; : case T_IndexElem: : retval = _equalIndexElem(a, b); : break; : case T_ColumnDef: : retval = _equalColumnDef(a, b); 0.00 : 5eb36f: e9 3c 58 00 00 jmpq 5f0bb0 <_equalColumnDef> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb374: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb378: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb37d: c9 leaveq : break; : case T_RangeFunction: : retval = _equalRangeFunction(a, b); : break; : case T_TypeName: : retval = _equalTypeName(a, b); 0.00 : 5eb37e: e9 cd 56 00 00 jmpq 5f0a50 <_equalTypeName> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb383: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb387: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb38c: c9 leaveq : break; : case T_RangeSubselect: : retval = _equalRangeSubselect(a, b); : break; : case T_RangeFunction: : retval = _equalRangeFunction(a, b); 0.00 : 5eb38d: e9 3e 56 00 00 jmpq 5f09d0 <_equalRangeFunction> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb392: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb396: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb39b: c9 leaveq : break; : case T_WindowDef: : retval = _equalWindowDef(a, b); : break; : case T_RangeSubselect: : retval = _equalRangeSubselect(a, b); 0.00 : 5eb39c: e9 cf 55 00 00 jmpq 5f0970 <_equalRangeSubselect> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb3a1: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb3a5: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb3aa: c9 leaveq : break; : case T_SortBy: : retval = _equalSortBy(a, b); : break; : case T_WindowDef: : retval = _equalWindowDef(a, b); 0.00 : 5eb3ab: e9 f0 54 00 00 jmpq 5f08a0 <_equalWindowDef> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb3b0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb3b4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb3b9: c9 leaveq : break; : case T_CollateClause: : retval = _equalCollateClause(a, b); : break; : case T_SortBy: : retval = _equalSortBy(a, b); 0.00 : 5eb3ba: e9 81 54 00 00 jmpq 5f0840 <_equalSortBy> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb3bf: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb3c3: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb3c8: c9 leaveq : break; : case T_TypeCast: : retval = _equalTypeCast(a, b); : break; : case T_CollateClause: : retval = _equalCollateClause(a, b); 0.00 : 5eb3c9: e9 22 54 00 00 jmpq 5f07f0 <_equalCollateClause> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb3ce: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb3d2: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb3d7: c9 leaveq : break; : case T_MultiAssignRef: : retval = _equalMultiAssignRef(a, b); : break; : case T_TypeCast: : retval = _equalTypeCast(a, b); 0.00 : 5eb3d8: e9 c3 53 00 00 jmpq 5f07a0 <_equalTypeCast> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb3dd: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb3e1: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb3e6: c9 leaveq : break; : case T_ResTarget: : retval = _equalResTarget(a, b); : break; : case T_MultiAssignRef: : retval = _equalMultiAssignRef(a, b); 0.00 : 5eb3e7: e9 64 53 00 00 jmpq 5f0750 <_equalMultiAssignRef> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb3ec: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb3f0: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb3f5: c9 leaveq : break; : case T_A_ArrayExpr: : retval = _equalA_ArrayExpr(a, b); : break; : case T_ResTarget: : retval = _equalResTarget(a, b); 0.00 : 5eb3f6: e9 d5 52 00 00 jmpq 5f06d0 <_equalResTarget> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb3fb: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb3ff: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb404: c9 leaveq : break; : case T_A_Indirection: : retval = _equalA_Indirection(a, b); : break; : case T_A_ArrayExpr: : retval = _equalA_ArrayExpr(a, b); 0.00 : 5eb405: e9 a6 52 00 00 jmpq 5f06b0 <_equalA_ArrayExpr> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb40a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb40e: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb413: c9 leaveq : break; : case T_A_Indices: : retval = _equalAIndices(a, b); : break; : case T_A_Indirection: : retval = _equalA_Indirection(a, b); 0.00 : 5eb414: e9 47 52 00 00 jmpq 5f0660 <_equalA_Indirection> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb419: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb41d: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb422: c9 leaveq : break; : case T_A_Star: : retval = _equalAStar(a, b); : break; : case T_A_Indices: : retval = _equalAIndices(a, b); 0.00 : 5eb423: e9 e8 51 00 00 jmpq 5f0610 <_equalAIndices> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb428: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb42c: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb431: c9 leaveq : break; : case T_A_Const: : retval = _equalAConst(a, b); : break; : case T_FuncCall: : retval = _equalFuncCall(a, b); 0.00 : 5eb432: e9 19 51 00 00 jmpq 5f0550 <_equalFuncCall> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb437: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb43b: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb440: c9 leaveq : break; : case T_ParamRef: : retval = _equalParamRef(a, b); : break; : case T_A_Const: : retval = _equalAConst(a, b); 0.00 : 5eb441: e9 ea 50 00 00 jmpq 5f0530 <_equalAConst> : break; : case T_A_Expr: : retval = _equalAExpr(a, b); : break; : case T_ColumnRef: : retval = _equalColumnRef(a, b); 0.00 : 5eb446: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eb449: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eb44c: 0f 94 c2 sete %dl 0.00 : 5eb44f: e9 a9 fc ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb454: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb458: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb45d: c9 leaveq : break; : case T_A_Expr: : retval = _equalAExpr(a, b); : break; : case T_ColumnRef: : retval = _equalColumnRef(a, b); 0.00 : 5eb45e: e9 ad 50 00 00 jmpq 5f0510 <_equalColumnRef> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb463: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb467: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb46c: c9 leaveq : break; : case T_AlterPolicyStmt: : retval = _equalAlterPolicyStmt(a, b); : break; : case T_A_Expr: : retval = _equalAExpr(a, b); 0.00 : 5eb46d: e9 2e 50 00 00 jmpq 5f04a0 <_equalAExpr> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb472: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb476: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb47b: c9 leaveq : break; : case T_CreatePolicyStmt: : retval = _equalCreatePolicyStmt(a, b); : break; : case T_AlterPolicyStmt: : retval = _equalAlterPolicyStmt(a, b); 0.00 : 5eb47c: e9 7f 4f 00 00 jmpq 5f0400 <_equalAlterPolicyStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb481: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb485: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb48a: c9 leaveq : break; : case T_AlterTSConfigurationStmt: : retval = _equalAlterTSConfigurationStmt(a, b); : break; : case T_CreatePolicyStmt: : retval = _equalCreatePolicyStmt(a, b); 0.00 : 5eb48b: e9 d0 4e 00 00 jmpq 5f0360 <_equalCreatePolicyStmt> : } : : static bool : _equalAlterSystemStmt(const AlterSystemStmt *a, const AlterSystemStmt *b) : { : COMPARE_NODE_FIELD(setstmt); 0.00 : 5eb490: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb494: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb498: e8 33 fc ff ff callq 5eb0d0 0.00 : 5eb49d: 84 c0 test %al,%al 0.00 : 5eb49f: 0f 95 c2 setne %dl : case T_ReplicaIdentityStmt: : retval = _equalReplicaIdentityStmt(a, b); : break; : case T_AlterSystemStmt: : retval = _equalAlterSystemStmt(a, b); : break; 0.00 : 5eb4a2: e9 56 fc ff ff jmpq 5eb0fd : } : : static bool : _equalReplicaIdentityStmt(const ReplicaIdentityStmt *a, const ReplicaIdentityStmt *b) : { : COMPARE_SCALAR_FIELD(identity_type); 0.00 : 5eb4a7: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 5eb4ab: 3a 46 04 cmp 0x4(%rsi),%al 0.00 : 5eb4ae: 0f 85 47 fc ff ff jne 5eb0fb : COMPARE_STRING_FIELD(name); 0.00 : 5eb4b4: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb4b8: 48 85 ff test %rdi,%rdi 0.00 : 5eb4bb: 0f 84 6f 2e 00 00 je 5ee330 0.00 : 5eb4c1: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb4c5: 48 85 f6 test %rsi,%rsi 0.00 : 5eb4c8: 0f 84 66 2e 00 00 je 5ee334 0.00 : 5eb4ce: e8 5d e8 e7 ff callq 469d30 0.00 : 5eb4d3: 85 c0 test %eax,%eax 0.00 : 5eb4d5: 0f 95 c0 setne %al 0.00 : 5eb4d8: 89 c2 mov %eax,%edx 0.00 : 5eb4da: 83 f2 01 xor $0x1,%edx 0.00 : 5eb4dd: e9 1b fc ff ff jmpq 5eb0fd : } : : static bool : _equalRefreshMatViewStmt(const RefreshMatViewStmt *a, const RefreshMatViewStmt *b) : { : COMPARE_SCALAR_FIELD(concurrent); 0.00 : 5eb4e2: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 5eb4e6: 3a 46 04 cmp 0x4(%rsi),%al 0.00 : 5eb4e9: 0f 84 71 12 00 00 je 5ec760 : COMPARE_SCALAR_FIELD(skipData); : COMPARE_NODE_FIELD(relation); 0.00 : 5eb4ef: 31 d2 xor %edx,%edx 0.00 : 5eb4f1: e9 07 fc ff ff jmpq 5eb0fd : } : : static bool : _equalAlterEventTrigStmt(const AlterEventTrigStmt *a, const AlterEventTrigStmt *b) : { : COMPARE_STRING_FIELD(trigname); 0.00 : 5eb4f6: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb4fa: 48 85 ff test %rdi,%rdi 0.00 : 5eb4fd: 0f 84 d2 2c 00 00 je 5ee1d5 0.00 : 5eb503: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb507: 48 85 f6 test %rsi,%rsi 0.00 : 5eb50a: 0f 84 c9 2c 00 00 je 5ee1d9 0.00 : 5eb510: e8 1b e8 e7 ff callq 469d30 0.00 : 5eb515: 85 c0 test %eax,%eax 0.00 : 5eb517: 0f 95 c0 setne %al 0.00 : 5eb51a: 84 c0 test %al,%al 0.00 : 5eb51c: 0f 85 d9 fb ff ff jne 5eb0fb 0.00 : 5eb522: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5eb526: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5eb52b: 0f 94 c2 sete %dl 0.00 : 5eb52e: e9 ca fb ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb533: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb537: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb53c: c9 leaveq : break; : case T_CreateTrigStmt: : retval = _equalCreateTrigStmt(a, b); : break; : case T_CreateEventTrigStmt: : retval = _equalCreateEventTrigStmt(a, b); 0.00 : 5eb53d: e9 2e 46 00 00 jmpq 5efb70 <_equalCreateEventTrigStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb542: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb546: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb54b: c9 leaveq : break; : case T_AlterExtensionStmt: : retval = _equalAlterExtensionStmt(a, b); : break; : case T_AlterExtensionContentsStmt: : retval = _equalAlterExtensionContentsStmt(a, b); 0.00 : 5eb54c: e9 2f 3f 00 00 jmpq 5ef480 <_equalAlterExtensionContentsStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb551: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb555: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb55a: c9 leaveq : break; : case T_CreateExtensionStmt: : retval = _equalCreateExtensionStmt(a, b); : break; : case T_AlterExtensionStmt: : retval = _equalAlterExtensionStmt(a, b); 0.00 : 5eb55b: e9 c0 3e 00 00 jmpq 5ef420 <_equalAlterExtensionStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb560: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb564: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb569: c9 leaveq : break; : case T_AlterTableMoveAllStmt: : retval = _equalAlterTableMoveAllStmt(a, b); : break; : case T_CreateExtensionStmt: : retval = _equalCreateExtensionStmt(a, b); 0.00 : 5eb56a: e9 41 3e 00 00 jmpq 5ef3b0 <_equalCreateExtensionStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb56f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb573: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb578: c9 leaveq : break; : case T_CreateForeignTableStmt: : retval = _equalCreateForeignTableStmt(a, b); : break; : case T_ImportForeignSchemaStmt: : retval = _equalImportForeignSchemaStmt(a, b); 0.00 : 5eb579: e9 e2 43 00 00 jmpq 5ef960 <_equalImportForeignSchemaStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb57e: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb582: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb587: c9 leaveq : break; : case T_DropUserMappingStmt: : retval = _equalDropUserMappingStmt(a, b); : break; : case T_CreateForeignTableStmt: : retval = _equalCreateForeignTableStmt(a, b); 0.00 : 5eb588: e9 53 43 00 00 jmpq 5ef8e0 <_equalCreateForeignTableStmt> : } : : static bool : _equalSecLabelStmt(const SecLabelStmt *a, const SecLabelStmt *b) : { : COMPARE_SCALAR_FIELD(objtype); 0.00 : 5eb58d: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eb590: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eb593: 0f 84 d7 25 00 00 je 5edb70 : COMPARE_NODE_FIELD(objname); : COMPARE_NODE_FIELD(objargs); : COMPARE_STRING_FIELD(provider); : COMPARE_STRING_FIELD(label); 0.00 : 5eb599: 31 d2 xor %edx,%edx 0.00 : 5eb59b: e9 5d fb ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb5a0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb5a4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb5a9: c9 leaveq : break; : case T_AlterTableSpaceOptionsStmt: : retval = _equalAlterTableSpaceOptionsStmt(a, b); : break; : case T_AlterTableMoveAllStmt: : retval = _equalAlterTableMoveAllStmt(a, b); 0.00 : 5eb5aa: e9 61 3d 00 00 jmpq 5ef310 <_equalAlterTableMoveAllStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb5af: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb5b3: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb5b8: c9 leaveq : break; : case T_DropTableSpaceStmt: : retval = _equalDropTableSpaceStmt(a, b); : break; : case T_AlterTableSpaceOptionsStmt: : retval = _equalAlterTableSpaceOptionsStmt(a, b); 0.00 : 5eb5b9: e9 e2 3c 00 00 jmpq 5ef2a0 <_equalAlterTableSpaceOptionsStmt> : } : : static bool : _equalDropUserMappingStmt(const DropUserMappingStmt *a, const DropUserMappingStmt *b) : { : COMPARE_STRING_FIELD(username); 0.00 : 5eb5be: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb5c2: 48 85 ff test %rdi,%rdi 0.00 : 5eb5c5: 0f 84 19 2c 00 00 je 5ee1e4 0.00 : 5eb5cb: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb5cf: 48 85 f6 test %rsi,%rsi 0.00 : 5eb5d2: 0f 84 10 2c 00 00 je 5ee1e8 0.00 : 5eb5d8: e8 53 e7 e7 ff callq 469d30 0.00 : 5eb5dd: 85 c0 test %eax,%eax 0.00 : 5eb5df: 0f 95 c0 setne %al 0.00 : 5eb5e2: 84 c0 test %al,%al 0.00 : 5eb5e4: 0f 85 11 fb ff ff jne 5eb0fb : COMPARE_STRING_FIELD(servername); 0.00 : 5eb5ea: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5eb5ee: 48 85 ff test %rdi,%rdi 0.00 : 5eb5f1: 0f 84 56 2c 00 00 je 5ee24d 0.00 : 5eb5f7: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5eb5fc: 48 85 f6 test %rsi,%rsi 0.00 : 5eb5ff: 0f 84 4d 2c 00 00 je 5ee252 0.00 : 5eb605: e8 26 e7 e7 ff callq 469d30 0.00 : 5eb60a: 85 c0 test %eax,%eax 0.00 : 5eb60c: 0f 95 c0 setne %al 0.00 : 5eb60f: 84 c0 test %al,%al 0.00 : 5eb611: 0f 85 e4 fa ff ff jne 5eb0fb 0.00 : 5eb617: 0f b6 43 18 movzbl 0x18(%rbx),%eax 0.00 : 5eb61b: 41 3a 44 24 18 cmp 0x18(%r12),%al 0.00 : 5eb620: 0f 94 c2 sete %dl 0.00 : 5eb623: e9 d5 fa ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb628: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb62c: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb631: c9 leaveq : break; : case T_CreateUserMappingStmt: : retval = _equalCreateUserMappingStmt(a, b); : break; : case T_AlterUserMappingStmt: : retval = _equalAlterUserMappingStmt(a, b); 0.00 : 5eb632: e9 19 42 00 00 jmpq 5ef850 <_equalAlterUserMappingStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb637: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb63b: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb640: c9 leaveq : break; : case T_AlterForeignServerStmt: : retval = _equalAlterForeignServerStmt(a, b); : break; : case T_CreateUserMappingStmt: : retval = _equalCreateUserMappingStmt(a, b); 0.00 : 5eb641: e9 7a 41 00 00 jmpq 5ef7c0 <_equalCreateUserMappingStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb646: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb64a: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb64f: c9 leaveq : break; : case T_CreateForeignServerStmt: : retval = _equalCreateForeignServerStmt(a, b); : break; : case T_AlterForeignServerStmt: : retval = _equalAlterForeignServerStmt(a, b); 0.00 : 5eb650: e9 cb 40 00 00 jmpq 5ef720 <_equalAlterForeignServerStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb655: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb659: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb65e: c9 leaveq : break; : case T_AlterFdwStmt: : retval = _equalAlterFdwStmt(a, b); : break; : case T_CreateForeignServerStmt: : retval = _equalCreateForeignServerStmt(a, b); 0.00 : 5eb65f: e9 ac 3f 00 00 jmpq 5ef610 <_equalCreateForeignServerStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb664: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb668: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb66d: c9 leaveq : break; : case T_CreateFdwStmt: : retval = _equalCreateFdwStmt(a, b); : break; : case T_AlterFdwStmt: : retval = _equalAlterFdwStmt(a, b); 0.00 : 5eb66e: e9 1d 3f 00 00 jmpq 5ef590 <_equalAlterFdwStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb673: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb677: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb67c: c9 leaveq : break; : case T_AlterExtensionContentsStmt: : retval = _equalAlterExtensionContentsStmt(a, b); : break; : case T_CreateFdwStmt: : retval = _equalCreateFdwStmt(a, b); 0.00 : 5eb67d: e9 8e 3e 00 00 jmpq 5ef510 <_equalCreateFdwStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb682: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb686: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb68b: c9 leaveq : break; : case T_AlterTSDictionaryStmt: : retval = _equalAlterTSDictionaryStmt(a, b); : break; : case T_AlterTSConfigurationStmt: : retval = _equalAlterTSConfigurationStmt(a, b); 0.00 : 5eb68c: e9 4f 4c 00 00 jmpq 5f02e0 <_equalAlterTSConfigurationStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb691: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb695: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb69a: c9 leaveq : break; : case T_ReassignOwnedStmt: : retval = _equalReassignOwnedStmt(a, b); : break; : case T_AlterTSDictionaryStmt: : retval = _equalAlterTSDictionaryStmt(a, b); 0.00 : 5eb69b: e9 f0 4b 00 00 jmpq 5f0290 <_equalAlterTSDictionaryStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb6a0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb6a4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb6a9: c9 leaveq : break; : case T_CreateRangeStmt: : retval = _equalCreateRangeStmt(a, b); : break; : case T_AlterEnumStmt: : retval = _equalAlterEnumStmt(a, b); 0.00 : 5eb6aa: e9 71 33 00 00 jmpq 5eea20 <_equalAlterEnumStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb6af: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb6b3: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb6b8: c9 leaveq : break; : case T_CreateEnumStmt: : retval = _equalCreateEnumStmt(a, b); : break; : case T_CreateRangeStmt: : retval = _equalCreateRangeStmt(a, b); 0.00 : 5eb6b9: e9 12 33 00 00 jmpq 5ee9d0 <_equalCreateRangeStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb6be: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb6c2: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb6c7: c9 leaveq : break; : case T_CompositeTypeStmt: : retval = _equalCompositeTypeStmt(a, b); : break; : case T_CreateEnumStmt: : retval = _equalCreateEnumStmt(a, b); 0.00 : 5eb6c8: e9 b3 32 00 00 jmpq 5ee980 <_equalCreateEnumStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb6cd: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb6d1: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb6d6: c9 leaveq : break; : case T_TransactionStmt: : retval = _equalTransactionStmt(a, b); : break; : case T_CompositeTypeStmt: : retval = _equalCompositeTypeStmt(a, b); 0.00 : 5eb6d7: e9 54 32 00 00 jmpq 5ee930 <_equalCompositeTypeStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb6dc: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb6e0: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb6e5: c9 leaveq : break; : case T_DropOwnedStmt: : retval = _equalDropOwnedStmt(a, b); : break; : case T_ReassignOwnedStmt: : retval = _equalReassignOwnedStmt(a, b); 0.00 : 5eb6e6: e9 35 4b 00 00 jmpq 5f0220 <_equalReassignOwnedStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb6eb: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb6ef: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb6f4: c9 leaveq : break; : case T_DeallocateStmt: : retval = _equalDeallocateStmt(a, b); : break; : case T_DropOwnedStmt: : retval = _equalDropOwnedStmt(a, b); 0.00 : 5eb6f5: e9 d6 4a 00 00 jmpq 5f01d0 <_equalDropOwnedStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb6fa: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb6fe: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb703: c9 leaveq : break; : case T_AlterObjectSchemaStmt: : retval = _equalAlterObjectSchemaStmt(a, b); : break; : case T_AlterOwnerStmt: : retval = _equalAlterOwnerStmt(a, b); 0.00 : 5eb704: e9 57 30 00 00 jmpq 5ee760 <_equalAlterOwnerStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb709: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb70d: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb712: c9 leaveq : break; : case T_RenameStmt: : retval = _equalRenameStmt(a, b); : break; : case T_AlterObjectSchemaStmt: : retval = _equalAlterObjectSchemaStmt(a, b); 0.00 : 5eb713: e9 a8 2f 00 00 jmpq 5ee6c0 <_equalAlterObjectSchemaStmt> : } : : static bool : _equalDropTableSpaceStmt(const DropTableSpaceStmt *a, const DropTableSpaceStmt *b) : { : COMPARE_STRING_FIELD(tablespacename); 0.00 : 5eb718: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb71c: 48 85 ff test %rdi,%rdi 0.00 : 5eb71f: 0f 84 ec 2a 00 00 je 5ee211 0.00 : 5eb725: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb729: 48 85 f6 test %rsi,%rsi 0.00 : 5eb72c: 0f 84 e3 2a 00 00 je 5ee215 0.00 : 5eb732: e8 f9 e5 e7 ff callq 469d30 0.00 : 5eb737: 85 c0 test %eax,%eax 0.00 : 5eb739: 0f 95 c0 setne %al 0.00 : 5eb73c: 84 c0 test %al,%al 0.00 : 5eb73e: 0f 85 b7 f9 ff ff jne 5eb0fb 0.00 : 5eb744: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5eb748: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5eb74d: 0f 94 c2 sete %dl 0.00 : 5eb750: e9 a8 f9 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb755: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb759: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb75e: c9 leaveq : break; : case T_DiscardStmt: : retval = _equalDiscardStmt(a, b); : break; : case T_CreateTableSpaceStmt: : retval = _equalCreateTableSpaceStmt(a, b); 0.00 : 5eb75f: e9 6c 3a 00 00 jmpq 5ef1d0 <_equalCreateTableSpaceStmt> : } : : static bool : _equalDeclareCursorStmt(const DeclareCursorStmt *a, const DeclareCursorStmt *b) : { : COMPARE_STRING_FIELD(portalname); 0.00 : 5eb764: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb768: 48 85 ff test %rdi,%rdi 0.00 : 5eb76b: 0f 84 be 2a 00 00 je 5ee22f 0.00 : 5eb771: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb775: 48 85 f6 test %rsi,%rsi 0.00 : 5eb778: 0f 84 b5 2a 00 00 je 5ee233 0.00 : 5eb77e: e8 ad e5 e7 ff callq 469d30 0.00 : 5eb783: 85 c0 test %eax,%eax 0.00 : 5eb785: 0f 95 c0 setne %al 0.00 : 5eb788: 84 c0 test %al,%al 0.00 : 5eb78a: 75 0e jne 5eb79a : COMPARE_SCALAR_FIELD(options); 0.00 : 5eb78c: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5eb78f: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5eb794: 0f 84 06 29 00 00 je 5ee0a0 : COMPARE_NODE_FIELD(query); 0.00 : 5eb79a: 31 d2 xor %edx,%edx 0.00 : 5eb79c: e9 5c f9 ff ff jmpq 5eb0fd : } : : static bool : _equalDeallocateStmt(const DeallocateStmt *a, const DeallocateStmt *b) : { : COMPARE_STRING_FIELD(name); 0.00 : 5eb7a1: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb7a5: 48 85 ff test %rdi,%rdi 0.00 : 5eb7a8: 0f 84 72 2a 00 00 je 5ee220 0.00 : 5eb7ae: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb7b2: 48 85 f6 test %rsi,%rsi 0.00 : 5eb7b5: 0f 84 69 2a 00 00 je 5ee224 0.00 : 5eb7bb: e8 70 e5 e7 ff callq 469d30 0.00 : 5eb7c0: 85 c0 test %eax,%eax 0.00 : 5eb7c2: 0f 95 c0 setne %al 0.00 : 5eb7c5: 89 c2 mov %eax,%edx 0.00 : 5eb7c7: 83 f2 01 xor $0x1,%edx 0.00 : 5eb7ca: e9 2e f9 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb7cf: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb7d3: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb7d8: c9 leaveq : break; : case T_PrepareStmt: : retval = _equalPrepareStmt(a, b); : break; : case T_ExecuteStmt: : retval = _equalExecuteStmt(a, b); 0.00 : 5eb7d9: e9 92 49 00 00 jmpq 5f0170 <_equalExecuteStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb7de: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb7e2: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb7e7: c9 leaveq : break; : case T_CreateCastStmt: : retval = _equalCreateCastStmt(a, b); : break; : case T_PrepareStmt: : retval = _equalPrepareStmt(a, b); 0.00 : 5eb7e8: e9 03 49 00 00 jmpq 5f00f0 <_equalPrepareStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb7ed: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb7f1: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb7f6: c9 leaveq : break; : case T_CreateOpFamilyStmt: : retval = _equalCreateOpFamilyStmt(a, b); : break; : case T_AlterOpFamilyStmt: : retval = _equalAlterOpFamilyStmt(a, b); 0.00 : 5eb7f7: e9 a4 35 00 00 jmpq 5eeda0 <_equalAlterOpFamilyStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb7fc: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb800: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb805: c9 leaveq : break; : case T_CreateOpClassItem: : retval = _equalCreateOpClassItem(a, b); : break; : case T_CreateOpFamilyStmt: : retval = _equalCreateOpFamilyStmt(a, b); 0.00 : 5eb806: e9 25 35 00 00 jmpq 5eed30 <_equalCreateOpFamilyStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb80b: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb80f: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb814: c9 leaveq : break; : case T_CreateDomainStmt: : retval = _equalCreateDomainStmt(a, b); : break; : case T_CreateOpClassStmt: : retval = _equalCreateOpClassStmt(a, b); 0.00 : 5eb815: e9 c6 33 00 00 jmpq 5eebe0 <_equalCreateOpClassStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb81a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb81e: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb823: c9 leaveq : break; : case T_CreateConversionStmt: : retval = _equalCreateConversionStmt(a, b); : break; : case T_CreateCastStmt: : retval = _equalCreateCastStmt(a, b); 0.00 : 5eb824: e9 47 48 00 00 jmpq 5f0070 <_equalCreateCastStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb829: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb82d: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb832: c9 leaveq : break; : case T_CreateSchemaStmt: : retval = _equalCreateSchemaStmt(a, b); : break; : case T_CreateConversionStmt: : retval = _equalCreateConversionStmt(a, b); 0.00 : 5eb833: e9 88 47 00 00 jmpq 5effc0 <_equalCreateConversionStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb838: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb83c: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb841: c9 leaveq : break; : case T_AlterRoleStmt: : retval = _equalAlterRoleStmt(a, b); : break; : case T_AlterRoleSetStmt: : retval = _equalAlterRoleSetStmt(a, b); 0.00 : 5eb842: e9 69 45 00 00 jmpq 5efdb0 <_equalAlterRoleSetStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb847: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb84b: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb850: c9 leaveq : break; : case T_AlterDatabaseStmt: : retval = _equalAlterDatabaseStmt(a, b); : break; : case T_AlterDatabaseSetStmt: : retval = _equalAlterDatabaseSetStmt(a, b); 0.00 : 5eb851: e9 8a 36 00 00 jmpq 5eeee0 <_equalAlterDatabaseSetStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb856: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb85a: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb85f: c9 leaveq : break; : case T_CreatedbStmt: : retval = _equalCreatedbStmt(a, b); : break; : case T_AlterDatabaseStmt: : retval = _equalAlterDatabaseStmt(a, b); 0.00 : 5eb860: e9 1b 36 00 00 jmpq 5eee80 <_equalAlterDatabaseStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb865: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb869: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb86e: c9 leaveq : break; : case T_CheckPointStmt: : retval = true; : break; : case T_CreateSchemaStmt: : retval = _equalCreateSchemaStmt(a, b); 0.00 : 5eb86f: e9 ac 46 00 00 jmpq 5eff20 <_equalCreateSchemaStmt> : * are they the same type of nodes? : */ : if (nodeTag(a) != nodeTag(b)) : return false; : : switch (nodeTag(a)) 0.00 : 5eb874: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5eb879: e9 7f f8 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb87e: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb882: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb887: c9 leaveq : break; : case T_ConstraintsSetStmt: : retval = _equalConstraintsSetStmt(a, b); : break; : case T_ReindexStmt: : retval = _equalReindexStmt(a, b); 0.00 : 5eb888: e9 03 46 00 00 jmpq 5efe90 <_equalReindexStmt> : } : : static bool : _equalConstraintsSetStmt(const ConstraintsSetStmt *a, const ConstraintsSetStmt *b) : { : COMPARE_NODE_FIELD(constraints); 0.00 : 5eb88d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb891: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb895: e8 36 f8 ff ff callq 5eb0d0 0.00 : 5eb89a: 31 d2 xor %edx,%edx 0.00 : 5eb89c: 84 c0 test %al,%al 0.00 : 5eb89e: 0f 84 59 f8 ff ff je 5eb0fd 0.00 : 5eb8a4: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5eb8a8: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5eb8ad: 0f 94 c2 sete %dl 0.00 : 5eb8b0: e9 48 f8 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb8b5: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb8b9: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb8be: c9 leaveq : break; : case T_DropRoleStmt: : retval = _equalDropRoleStmt(a, b); : break; : case T_LockStmt: : retval = _equalLockStmt(a, b); 0.00 : 5eb8bf: e9 7c 45 00 00 jmpq 5efe40 <_equalLockStmt> : } : : static bool : _equalDropRoleStmt(const DropRoleStmt *a, const DropRoleStmt *b) : { : COMPARE_NODE_FIELD(roles); 0.00 : 5eb8c4: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb8c8: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb8cc: e8 ff f7 ff ff callq 5eb0d0 0.00 : 5eb8d1: 31 d2 xor %edx,%edx 0.00 : 5eb8d3: 84 c0 test %al,%al 0.00 : 5eb8d5: 0f 84 22 f8 ff ff je 5eb0fd 0.00 : 5eb8db: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5eb8df: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5eb8e4: 0f 94 c2 sete %dl 0.00 : 5eb8e7: e9 11 f8 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb8ec: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb8f0: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb8f5: c9 leaveq : break; : case T_CreateRoleStmt: : retval = _equalCreateRoleStmt(a, b); : break; : case T_AlterRoleStmt: : retval = _equalAlterRoleStmt(a, b); 0.00 : 5eb8f6: e9 45 44 00 00 jmpq 5efd40 <_equalAlterRoleStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb8fb: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb8ff: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb904: c9 leaveq : break; : case T_CreatePLangStmt: : retval = _equalCreatePLangStmt(a, b); : break; : case T_CreateRoleStmt: : retval = _equalCreateRoleStmt(a, b); 0.00 : 5eb905: e9 b6 43 00 00 jmpq 5efcc0 <_equalCreateRoleStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb90a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb90e: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb913: c9 leaveq : break; : case T_AlterEventTrigStmt: : retval = _equalAlterEventTrigStmt(a, b); : break; : case T_CreatePLangStmt: : retval = _equalCreatePLangStmt(a, b); 0.00 : 5eb914: e9 f7 42 00 00 jmpq 5efc10 <_equalCreatePLangStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb919: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb91d: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb922: c9 leaveq : break; : case T_ImportForeignSchemaStmt: : retval = _equalImportForeignSchemaStmt(a, b); : break; : case T_CreateTrigStmt: : retval = _equalCreateTrigStmt(a, b); 0.00 : 5eb923: e9 28 41 00 00 jmpq 5efa50 <_equalCreateTrigStmt> : } : : static bool : _equalVariableShowStmt(const VariableShowStmt *a, const VariableShowStmt *b) : { : COMPARE_STRING_FIELD(name); 0.00 : 5eb928: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eb92b: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eb92e: 0f 94 c2 sete %dl 0.00 : 5eb931: e9 c7 f7 ff ff jmpq 5eb0fd 0.00 : 5eb936: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb93a: 48 85 ff test %rdi,%rdi 0.00 : 5eb93d: 0f 84 29 28 00 00 je 5ee16c 0.00 : 5eb943: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb947: 48 85 f6 test %rsi,%rsi 0.00 : 5eb94a: 0f 84 20 28 00 00 je 5ee170 0.00 : 5eb950: e8 db e3 e7 ff callq 469d30 0.00 : 5eb955: 85 c0 test %eax,%eax 0.00 : 5eb957: 0f 95 c0 setne %al 0.00 : 5eb95a: 89 c2 mov %eax,%edx 0.00 : 5eb95c: 83 f2 01 xor $0x1,%edx 0.00 : 5eb95f: e9 99 f7 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb964: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb968: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb96d: c9 leaveq : break; : case T_AlterSeqStmt: : retval = _equalAlterSeqStmt(a, b); : break; : case T_VariableSetStmt: : retval = _equalVariableSetStmt(a, b); 0.00 : 5eb96e: e9 dd 37 00 00 jmpq 5ef150 <_equalVariableSetStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb973: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb977: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb97c: c9 leaveq : break; : case T_CreateSeqStmt: : retval = _equalCreateSeqStmt(a, b); : break; : case T_AlterSeqStmt: : retval = _equalAlterSeqStmt(a, b); 0.00 : 5eb97d: e9 6e 37 00 00 jmpq 5ef0f0 <_equalAlterSeqStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5eb982: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5eb986: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5eb98b: c9 leaveq : break; : case T_DoStmt: : retval = _equalDoStmt(a, b); : break; : case T_RenameStmt: : retval = _equalRenameStmt(a, b); 0.00 : 5eb98c: e9 3f 2c 00 00 jmpq 5ee5d0 <_equalRenameStmt> : } : : static bool : _equalDoStmt(const DoStmt *a, const DoStmt *b) : { : COMPARE_NODE_FIELD(args); 0.00 : 5eb991: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb995: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb999: e8 32 f7 ff ff callq 5eb0d0 0.00 : 5eb99e: 84 c0 test %al,%al 0.00 : 5eb9a0: 0f 95 c2 setne %dl : case T_AlterFunctionStmt: : retval = _equalAlterFunctionStmt(a, b); : break; : case T_DoStmt: : retval = _equalDoStmt(a, b); : break; 0.00 : 5eb9a3: e9 55 f7 ff ff jmpq 5eb0fd : } : : static bool : _equalAlterFunctionStmt(const AlterFunctionStmt *a, const AlterFunctionStmt *b) : { : COMPARE_NODE_FIELD(func); 0.00 : 5eb9a8: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb9ac: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb9b0: e8 1b f7 ff ff callq 5eb0d0 0.00 : 5eb9b5: 31 d2 xor %edx,%edx 0.00 : 5eb9b7: 84 c0 test %al,%al 0.00 : 5eb9b9: 0f 84 3e f7 ff ff je 5eb0fd : COMPARE_NODE_FIELD(actions); 0.00 : 5eb9bf: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5eb9c4: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5eb9c8: e8 03 f7 ff ff callq 5eb0d0 0.00 : 5eb9cd: 84 c0 test %al,%al 0.00 : 5eb9cf: 0f 95 c2 setne %dl 0.00 : 5eb9d2: e9 26 f7 ff ff jmpq 5eb0fd : } : : static bool : _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *b) : { : COMPARE_SCALAR_FIELD(replace); 0.00 : 5eb9d7: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 5eb9db: 3a 46 04 cmp 0x4(%rsi),%al 0.00 : 5eb9de: 0f 84 1c 22 00 00 je 5edc00 : COMPARE_NODE_FIELD(funcname); : COMPARE_NODE_FIELD(parameters); : COMPARE_NODE_FIELD(returnType); : COMPARE_NODE_FIELD(options); : COMPARE_NODE_FIELD(withClause); 0.00 : 5eb9e4: 31 d2 xor %edx,%edx 0.00 : 5eb9e6: e9 12 f7 ff ff jmpq 5eb0fd : } : : static bool : _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) : { : COMPARE_STRING_FIELD(idxname); 0.00 : 5eb9eb: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eb9ef: 48 85 ff test %rdi,%rdi 0.00 : 5eb9f2: 0f 84 46 28 00 00 je 5ee23e 0.00 : 5eb9f8: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eb9fc: 48 85 f6 test %rsi,%rsi 0.00 : 5eb9ff: 0f 84 3d 28 00 00 je 5ee242 0.00 : 5eba05: e8 26 e3 e7 ff callq 469d30 0.00 : 5eba0a: 85 c0 test %eax,%eax 0.00 : 5eba0c: 0f 95 c0 setne %al 0.00 : 5eba0f: 84 c0 test %al,%al 0.00 : 5eba11: 0f 84 d9 11 00 00 je 5ecbf0 : COMPARE_SCALAR_FIELD(oldNode); : COMPARE_SCALAR_FIELD(unique); : COMPARE_SCALAR_FIELD(primary); : COMPARE_SCALAR_FIELD(isconstraint); : COMPARE_SCALAR_FIELD(deferrable); : COMPARE_SCALAR_FIELD(initdeferred); 0.00 : 5eba17: 31 d2 xor %edx,%edx 0.00 : 5eba19: e9 df f6 ff ff jmpq 5eb0fd : } : : static bool : _equalFetchStmt(const FetchStmt *a, const FetchStmt *b) : { : COMPARE_SCALAR_FIELD(direction); 0.00 : 5eba1e: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eba21: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eba24: 0f 85 d1 f6 ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(howMany); 0.00 : 5eba2a: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 5eba2e: 48 39 47 08 cmp %rax,0x8(%rdi) 0.00 : 5eba32: 0f 85 c3 f6 ff ff jne 5eb0fb : COMPARE_STRING_FIELD(portalname); 0.00 : 5eba38: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5eba3c: 48 85 ff test %rdi,%rdi 0.00 : 5eba3f: 0f 84 15 2a 00 00 je 5ee45a 0.00 : 5eba45: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5eba49: 48 85 f6 test %rsi,%rsi 0.00 : 5eba4c: 0f 84 0c 2a 00 00 je 5ee45e 0.00 : 5eba52: e8 d9 e2 e7 ff callq 469d30 0.00 : 5eba57: 85 c0 test %eax,%eax 0.00 : 5eba59: 0f 95 c0 setne %al 0.00 : 5eba5c: 84 c0 test %al,%al 0.00 : 5eba5e: 0f 85 97 f6 ff ff jne 5eb0fb 0.00 : 5eba64: 0f b6 43 18 movzbl 0x18(%rbx),%eax 0.00 : 5eba68: 41 3a 44 24 18 cmp 0x18(%r12),%al 0.00 : 5eba6d: 0f 94 c2 sete %dl 0.00 : 5eba70: e9 88 f6 ff ff jmpq 5eb0fd 0.00 : 5eba75: 0f 1f 00 nopl (%rax) : } : : static bool : _equalCommentStmt(const CommentStmt *a, const CommentStmt *b) : { : COMPARE_SCALAR_FIELD(objtype); 0.00 : 5eba78: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5eba7b: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5eba7e: 0f 84 8c 20 00 00 je 5edb10 : COMPARE_NODE_FIELD(objname); : COMPARE_NODE_FIELD(objargs); : COMPARE_STRING_FIELD(comment); 0.00 : 5eba84: 31 d2 xor %edx,%edx 0.00 : 5eba86: e9 72 f6 ff ff jmpq 5eb0fd : } : : static bool : _equalTruncateStmt(const TruncateStmt *a, const TruncateStmt *b) : { : COMPARE_NODE_FIELD(relations); 0.00 : 5eba8b: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eba8f: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eba93: e8 38 f6 ff ff callq 5eb0d0 0.00 : 5eba98: 84 c0 test %al,%al 0.00 : 5eba9a: 74 0f je 5ebaab : COMPARE_SCALAR_FIELD(restart_seqs); 0.00 : 5eba9c: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5ebaa0: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5ebaa5: 0f 84 1e 25 00 00 je 5edfc9 0.00 : 5ebaab: 31 d2 xor %edx,%edx 0.00 : 5ebaad: 0f 1f 00 nopl (%rax) 0.00 : 5ebab0: e9 48 f6 ff ff jmpq 5eb0fd : } : : static bool : _equalDropStmt(const DropStmt *a, const DropStmt *b) : { : COMPARE_NODE_FIELD(objects); 0.00 : 5ebab5: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebab9: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebabd: e8 0e f6 ff ff callq 5eb0d0 0.00 : 5ebac2: 84 c0 test %al,%al 0.00 : 5ebac4: 0f 85 9e 0f 00 00 jne 5eca68 : COMPARE_NODE_FIELD(arguments); : COMPARE_SCALAR_FIELD(removeType); : COMPARE_SCALAR_FIELD(behavior); : COMPARE_SCALAR_FIELD(missing_ok); 0.00 : 5ebaca: 31 d2 xor %edx,%edx 0.00 : 5ebacc: e9 2c f6 ff ff jmpq 5eb0fd : } : : static bool : _equalDefineStmt(const DefineStmt *a, const DefineStmt *b) : { : COMPARE_SCALAR_FIELD(kind); 0.00 : 5ebad1: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebad4: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebad7: 0f 84 e3 0f 00 00 je 5ecac0 : COMPARE_SCALAR_FIELD(oldstyle); : COMPARE_NODE_FIELD(defnames); : COMPARE_NODE_FIELD(args); : COMPARE_NODE_FIELD(definition); 0.00 : 5ebadd: 31 d2 xor %edx,%edx 0.00 : 5ebadf: 90 nop 0.00 : 5ebae0: e9 18 f6 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebae5: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebae9: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebaee: c9 leaveq : break; : case T_LoadStmt: : retval = _equalLoadStmt(a, b); : break; : case T_CreateDomainStmt: : retval = _equalCreateDomainStmt(a, b); 0.00 : 5ebaef: e9 6c 30 00 00 jmpq 5eeb60 <_equalCreateDomainStmt> : } : : static bool : _equalLoadStmt(const LoadStmt *a, const LoadStmt *b) : { : COMPARE_STRING_FIELD(filename); 0.00 : 5ebaf4: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebaf8: 48 85 ff test %rdi,%rdi 0.00 : 5ebafb: 0f 84 a7 26 00 00 je 5ee1a8 0.00 : 5ebb01: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebb05: 48 85 f6 test %rsi,%rsi 0.00 : 5ebb08: 0f 84 9e 26 00 00 je 5ee1ac 0.00 : 5ebb0e: e8 1d e2 e7 ff callq 469d30 0.00 : 5ebb13: 85 c0 test %eax,%eax 0.00 : 5ebb15: 0f 95 c0 setne %al 0.00 : 5ebb18: 89 c2 mov %eax,%edx 0.00 : 5ebb1a: 83 f2 01 xor $0x1,%edx 0.00 : 5ebb1d: e9 db f5 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebb22: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebb26: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebb2b: c9 leaveq : break; : case T_AlterEnumStmt: : retval = _equalAlterEnumStmt(a, b); : break; : case T_ViewStmt: : retval = _equalViewStmt(a, b); 0.00 : 5ebb2c: e9 9f 2f 00 00 jmpq 5eead0 <_equalViewStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebb31: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebb35: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebb3a: c9 leaveq : break; : case T_UnlistenStmt: : retval = _equalUnlistenStmt(a, b); : break; : case T_TransactionStmt: : retval = _equalTransactionStmt(a, b); 0.00 : 5ebb3b: e9 70 2d 00 00 jmpq 5ee8b0 <_equalTransactionStmt> : } : : static bool : _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b) : { : COMPARE_NODE_FIELD(relation); 0.00 : 5ebb40: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebb44: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebb48: e8 83 f5 ff ff callq 5eb0d0 0.00 : 5ebb4d: 84 c0 test %al,%al 0.00 : 5ebb4f: 0f 84 f2 25 00 00 je 5ee147 : COMPARE_STRING_FIELD(indexname); 0.00 : 5ebb55: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ebb59: 48 85 ff test %rdi,%rdi 0.00 : 5ebb5c: 0f 84 fb 26 00 00 je 5ee25d 0.00 : 5ebb62: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ebb67: 48 85 f6 test %rsi,%rsi 0.00 : 5ebb6a: 0f 84 f2 26 00 00 je 5ee262 0.00 : 5ebb70: e8 bb e1 e7 ff callq 469d30 0.00 : 5ebb75: 85 c0 test %eax,%eax 0.00 : 5ebb77: 0f 95 c0 setne %al 0.00 : 5ebb7a: 84 c0 test %al,%al 0.00 : 5ebb7c: 0f 85 c5 25 00 00 jne 5ee147 0.00 : 5ebb82: 0f b6 43 18 movzbl 0x18(%rbx),%eax 0.00 : 5ebb86: 41 3a 44 24 18 cmp 0x18(%r12),%al 0.00 : 5ebb8b: 0f 94 c2 sete %dl 0.00 : 5ebb8e: e9 6a f5 ff ff jmpq 5eb0fd : } : : static bool : _equalClosePortalStmt(const ClosePortalStmt *a, const ClosePortalStmt *b) : { : COMPARE_STRING_FIELD(portalname); 0.00 : 5ebb93: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebb97: 48 85 ff test %rdi,%rdi 0.00 : 5ebb9a: 0f 84 db 25 00 00 je 5ee17b 0.00 : 5ebba0: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebba4: 48 85 f6 test %rsi,%rsi 0.00 : 5ebba7: 0f 84 d2 25 00 00 je 5ee17f 0.00 : 5ebbad: e8 7e e1 e7 ff callq 469d30 0.00 : 5ebbb2: 85 c0 test %eax,%eax 0.00 : 5ebbb4: 0f 95 c0 setne %al 0.00 : 5ebbb7: 89 c2 mov %eax,%edx 0.00 : 5ebbb9: 83 f2 01 xor $0x1,%edx 0.00 : 5ebbbc: e9 3c f5 ff ff jmpq 5eb0fd : } : : static bool : _equalAlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt *a, const AlterDefaultPrivilegesStmt *b) : { : COMPARE_NODE_FIELD(options); 0.00 : 5ebbc1: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebbc5: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebbc9: e8 02 f5 ff ff callq 5eb0d0 0.00 : 5ebbce: 31 d2 xor %edx,%edx 0.00 : 5ebbd0: 84 c0 test %al,%al 0.00 : 5ebbd2: 0f 84 25 f5 ff ff je 5eb0fd : COMPARE_NODE_FIELD(action); 0.00 : 5ebbd8: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ebbdd: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ebbe1: e8 ea f4 ff ff callq 5eb0d0 0.00 : 5ebbe6: 84 c0 test %al,%al 0.00 : 5ebbe8: 0f 95 c2 setne %dl 0.00 : 5ebbeb: e9 0d f5 ff ff jmpq 5eb0fd : } : : static bool : _equalGrantRoleStmt(const GrantRoleStmt *a, const GrantRoleStmt *b) : { : COMPARE_NODE_FIELD(granted_roles); 0.00 : 5ebbf0: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebbf4: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebbf8: e8 d3 f4 ff ff callq 5eb0d0 0.00 : 5ebbfd: 84 c0 test %al,%al 0.00 : 5ebbff: 0f 85 eb 0d 00 00 jne 5ec9f0 : COMPARE_NODE_FIELD(grantee_roles); : COMPARE_SCALAR_FIELD(is_grant); : COMPARE_SCALAR_FIELD(admin_opt); : COMPARE_STRING_FIELD(grantor); 0.00 : 5ebc05: 31 d2 xor %edx,%edx 0.00 : 5ebc07: e9 f1 f4 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebc0c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebc10: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebc15: c9 leaveq : break; : case T_CopyStmt: : retval = _equalCopyStmt(a, b); : break; : case T_CreateStmt: : retval = _equalCreateStmt(a, b); 0.00 : 5ebc16: e9 d5 28 00 00 jmpq 5ee4f0 <_equalCreateStmt> : } : : static bool : _equalCopyStmt(const CopyStmt *a, const CopyStmt *b) : { : COMPARE_NODE_FIELD(relation); 0.00 : 5ebc1b: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebc1f: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebc23: e8 a8 f4 ff ff callq 5eb0d0 0.00 : 5ebc28: 84 c0 test %al,%al 0.00 : 5ebc2a: 0f 85 30 18 00 00 jne 5ed460 : COMPARE_NODE_FIELD(query); : COMPARE_NODE_FIELD(attlist); : COMPARE_SCALAR_FIELD(is_from); : COMPARE_SCALAR_FIELD(is_program); : COMPARE_STRING_FIELD(filename); : COMPARE_NODE_FIELD(options); 0.00 : 5ebc30: 31 d2 xor %edx,%edx 0.00 : 5ebc32: e9 c6 f4 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebc37: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebc3b: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebc40: c9 leaveq : break; : case T_VacuumStmt: : retval = _equalVacuumStmt(a, b); : break; : case T_ExplainStmt: : retval = _equalExplainStmt(a, b); 0.00 : 5ebc41: e9 7a 33 00 00 jmpq 5eefc0 <_equalExplainStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebc46: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebc4a: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebc4f: c9 leaveq : break; : case T_DropdbStmt: : retval = _equalDropdbStmt(a, b); : break; : case T_VacuumStmt: : retval = _equalVacuumStmt(a, b); 0.00 : 5ebc50: e9 eb 32 00 00 jmpq 5eef40 <_equalVacuumStmt> : } : : static bool : _equalDropdbStmt(const DropdbStmt *a, const DropdbStmt *b) : { : COMPARE_STRING_FIELD(dbname); 0.00 : 5ebc55: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebc59: 48 85 ff test %rdi,%rdi 0.00 : 5ebc5c: 0f 84 fb 24 00 00 je 5ee15d 0.00 : 5ebc62: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebc66: 48 85 f6 test %rsi,%rsi 0.00 : 5ebc69: 0f 84 f2 24 00 00 je 5ee161 0.00 : 5ebc6f: e8 bc e0 e7 ff callq 469d30 0.00 : 5ebc74: 85 c0 test %eax,%eax 0.00 : 5ebc76: 0f 95 c0 setne %al 0.00 : 5ebc79: 84 c0 test %al,%al 0.00 : 5ebc7b: 0f 85 7a f4 ff ff jne 5eb0fb 0.00 : 5ebc81: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5ebc85: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5ebc8a: 0f 94 c2 sete %dl 0.00 : 5ebc8d: e9 6b f4 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebc92: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebc96: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebc9b: c9 leaveq : break; : case T_AlterOpFamilyStmt: : retval = _equalAlterOpFamilyStmt(a, b); : break; : case T_CreatedbStmt: : retval = _equalCreatedbStmt(a, b); 0.00 : 5ebc9c: e9 7f 31 00 00 jmpq 5eee20 <_equalCreatedbStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebca1: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebca5: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebcaa: c9 leaveq : break; : case T_AlterSystemStmt: : retval = _equalAlterSystemStmt(a, b); : break; : case T_CreateSeqStmt: : retval = _equalCreateSeqStmt(a, b); 0.00 : 5ebcab: e9 d0 33 00 00 jmpq 5ef080 <_equalCreateSeqStmt> : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebcb0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebcb4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebcb9: c9 leaveq : break; : case T_ExplainStmt: : retval = _equalExplainStmt(a, b); : break; : case T_CreateTableAsStmt: : retval = _equalCreateTableAsStmt(a, b); 0.00 : 5ebcba: e9 51 33 00 00 jmpq 5ef010 <_equalCreateTableAsStmt> : } : : static bool : _equalUnlistenStmt(const UnlistenStmt *a, const UnlistenStmt *b) : { : COMPARE_STRING_FIELD(conditionname); 0.00 : 5ebcbf: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebcc3: 48 85 ff test %rdi,%rdi 0.00 : 5ebcc6: 0f 84 be 24 00 00 je 5ee18a 0.00 : 5ebccc: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebcd0: 48 85 f6 test %rsi,%rsi 0.00 : 5ebcd3: 0f 84 b5 24 00 00 je 5ee18e 0.00 : 5ebcd9: e8 52 e0 e7 ff callq 469d30 0.00 : 5ebcde: 85 c0 test %eax,%eax 0.00 : 5ebce0: 0f 95 c0 setne %al 0.00 : 5ebce3: 89 c2 mov %eax,%edx 0.00 : 5ebce5: 83 f2 01 xor $0x1,%edx 0.00 : 5ebce8: e9 10 f4 ff ff jmpq 5eb0fd : } : : static bool : _equalListenStmt(const ListenStmt *a, const ListenStmt *b) : { : COMPARE_STRING_FIELD(conditionname); 0.00 : 5ebced: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebcf1: 48 85 ff test %rdi,%rdi 0.00 : 5ebcf4: 0f 84 9f 24 00 00 je 5ee199 0.00 : 5ebcfa: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebcfe: 48 85 f6 test %rsi,%rsi 0.00 : 5ebd01: 0f 84 96 24 00 00 je 5ee19d 0.00 : 5ebd07: e8 24 e0 e7 ff callq 469d30 0.00 : 5ebd0c: 85 c0 test %eax,%eax 0.00 : 5ebd0e: 0f 95 c0 setne %al 0.00 : 5ebd11: 89 c2 mov %eax,%edx 0.00 : 5ebd13: 83 f2 01 xor $0x1,%edx 0.00 : 5ebd16: e9 e2 f3 ff ff jmpq 5eb0fd : } : : static bool : _equalNotifyStmt(const NotifyStmt *a, const NotifyStmt *b) : { : COMPARE_STRING_FIELD(conditionname); 0.00 : 5ebd1b: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebd1f: 48 85 ff test %rdi,%rdi 0.00 : 5ebd22: 0f 84 26 24 00 00 je 5ee14e 0.00 : 5ebd28: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebd2c: 48 85 f6 test %rsi,%rsi 0.00 : 5ebd2f: 0f 84 1d 24 00 00 je 5ee152 0.00 : 5ebd35: e8 f6 df e7 ff callq 469d30 0.00 : 5ebd3a: 85 c0 test %eax,%eax 0.00 : 5ebd3c: 0f 95 c0 setne %al 0.00 : 5ebd3f: 84 c0 test %al,%al 0.00 : 5ebd41: 0f 85 b4 f3 ff ff jne 5eb0fb : COMPARE_STRING_FIELD(payload); 0.00 : 5ebd47: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ebd4b: 48 85 ff test %rdi,%rdi 0.00 : 5ebd4e: 0f 84 19 25 00 00 je 5ee26d 0.00 : 5ebd54: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ebd59: 48 85 f6 test %rsi,%rsi 0.00 : 5ebd5c: 0f 84 10 25 00 00 je 5ee272 0.00 : 5ebd62: e8 c9 df e7 ff callq 469d30 0.00 : 5ebd67: 85 c0 test %eax,%eax 0.00 : 5ebd69: 0f 95 c0 setne %al 0.00 : 5ebd6c: 89 c2 mov %eax,%edx 0.00 : 5ebd6e: 83 f2 01 xor $0x1,%edx 0.00 : 5ebd71: e9 87 f3 ff ff jmpq 5eb0fd : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ebd76: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ebd7a: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ebd7f: c9 leaveq : break; : case T_AlterOwnerStmt: : retval = _equalAlterOwnerStmt(a, b); : break; : case T_RuleStmt: : retval = _equalRuleStmt(a, b); 0.00 : 5ebd80: e9 7b 2a 00 00 jmpq 5ee800 <_equalRuleStmt> : } : : static bool : _equalGrantStmt(const GrantStmt *a, const GrantStmt *b) : { : COMPARE_SCALAR_FIELD(is_grant); 0.00 : 5ebd85: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 5ebd89: 3a 46 04 cmp 0x4(%rsi),%al 0.00 : 5ebd8c: 0f 84 56 16 00 00 je 5ed3e8 : COMPARE_SCALAR_FIELD(targtype); : COMPARE_SCALAR_FIELD(objtype); : COMPARE_NODE_FIELD(objects); : COMPARE_NODE_FIELD(privileges); : COMPARE_NODE_FIELD(grantees); : COMPARE_SCALAR_FIELD(grant_option); 0.00 : 5ebd92: 31 d2 xor %edx,%edx 0.00 : 5ebd94: e9 64 f3 ff ff jmpq 5eb0fd : } : : static bool : _equalSetOperationStmt(const SetOperationStmt *a, const SetOperationStmt *b) : { : COMPARE_SCALAR_FIELD(op); 0.00 : 5ebd99: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebd9c: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebd9f: 0f 84 ab 15 00 00 je 5ed350 : COMPARE_NODE_FIELD(larg); : COMPARE_NODE_FIELD(rarg); : COMPARE_NODE_FIELD(colTypes); : COMPARE_NODE_FIELD(colTypmods); : COMPARE_NODE_FIELD(colCollations); : COMPARE_NODE_FIELD(groupClauses); 0.00 : 5ebda5: 31 d2 xor %edx,%edx 0.00 : 5ebda7: e9 51 f3 ff ff jmpq 5eb0fd : } : : static bool : _equalAlterDomainStmt(const AlterDomainStmt *a, const AlterDomainStmt *b) : { : COMPARE_SCALAR_FIELD(subtype); 0.00 : 5ebdac: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 5ebdb0: 3a 46 04 cmp 0x4(%rsi),%al 0.00 : 5ebdb3: 0f 84 77 1f 00 00 je 5edd30 : COMPARE_NODE_FIELD(typeName); : COMPARE_STRING_FIELD(name); : COMPARE_NODE_FIELD(def); : COMPARE_SCALAR_FIELD(behavior); 0.00 : 5ebdb9: 31 d2 xor %edx,%edx 0.00 : 5ebdbb: e9 3d f3 ff ff jmpq 5eb0fd : } : : static bool : _equalAlterTableCmd(const AlterTableCmd *a, const AlterTableCmd *b) : { : COMPARE_SCALAR_FIELD(subtype); 0.00 : 5ebdc0: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebdc3: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebdc6: 0f 84 21 15 00 00 je 5ed2ed : COMPARE_STRING_FIELD(name); : COMPARE_NODE_FIELD(def); : COMPARE_SCALAR_FIELD(behavior); 0.00 : 5ebdcc: 31 d2 xor %edx,%edx 0.00 : 5ebdce: 66 90 xchg %ax,%ax 0.00 : 5ebdd0: e9 28 f3 ff ff jmpq 5eb0fd : } : : static bool : _equalAlterTableStmt(const AlterTableStmt *a, const AlterTableStmt *b) : { : COMPARE_NODE_FIELD(relation); 0.00 : 5ebdd5: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebdd9: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebddd: e8 ee f2 ff ff callq 5eb0d0 0.00 : 5ebde2: 84 c0 test %al,%al 0.00 : 5ebde4: 0f 85 ce 14 00 00 jne 5ed2b8 : COMPARE_NODE_FIELD(cmds); : COMPARE_SCALAR_FIELD(relkind); 0.00 : 5ebdea: 31 d2 xor %edx,%edx 0.00 : 5ebdec: e9 0c f3 ff ff jmpq 5eb0fd : } : : static bool : _equalSelectStmt(const SelectStmt *a, const SelectStmt *b) : { : COMPARE_NODE_FIELD(distinctClause); 0.00 : 5ebdf1: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebdf5: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebdf9: e8 d2 f2 ff ff callq 5eb0d0 0.00 : 5ebdfe: 84 c0 test %al,%al 0.00 : 5ebe00: 0f 85 3a 13 00 00 jne 5ed140 : COMPARE_NODE_FIELD(lockingClause); : COMPARE_NODE_FIELD(withClause); : COMPARE_SCALAR_FIELD(op); : COMPARE_SCALAR_FIELD(all); : COMPARE_NODE_FIELD(larg); : COMPARE_NODE_FIELD(rarg); 0.00 : 5ebe06: 31 d2 xor %edx,%edx 0.00 : 5ebe08: e9 f0 f2 ff ff jmpq 5eb0fd : } : : static bool : _equalUpdateStmt(const UpdateStmt *a, const UpdateStmt *b) : { : COMPARE_NODE_FIELD(relation); 0.00 : 5ebe0d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebe11: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebe15: e8 b6 f2 ff ff callq 5eb0d0 0.00 : 5ebe1a: 84 c0 test %al,%al 0.00 : 5ebe1c: 0f 85 ae 12 00 00 jne 5ed0d0 : COMPARE_NODE_FIELD(targetList); : COMPARE_NODE_FIELD(whereClause); : COMPARE_NODE_FIELD(fromClause); : COMPARE_NODE_FIELD(returningList); : COMPARE_NODE_FIELD(withClause); 0.00 : 5ebe22: 31 d2 xor %edx,%edx 0.00 : 5ebe24: e9 d4 f2 ff ff jmpq 5eb0fd : } : : static bool : _equalDeleteStmt(const DeleteStmt *a, const DeleteStmt *b) : { : COMPARE_NODE_FIELD(relation); 0.00 : 5ebe29: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebe2d: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebe31: e8 9a f2 ff ff callq 5eb0d0 0.00 : 5ebe36: 84 c0 test %al,%al 0.00 : 5ebe38: 0f 85 72 1c 00 00 jne 5edab0 : COMPARE_NODE_FIELD(usingClause); : COMPARE_NODE_FIELD(whereClause); : COMPARE_NODE_FIELD(returningList); : COMPARE_NODE_FIELD(withClause); 0.00 : 5ebe3e: 31 d2 xor %edx,%edx 0.00 : 5ebe40: e9 b8 f2 ff ff jmpq 5eb0fd : } : : static bool : _equalInsertStmt(const InsertStmt *a, const InsertStmt *b) : { : COMPARE_NODE_FIELD(relation); 0.00 : 5ebe45: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebe49: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebe4d: e8 7e f2 ff ff callq 5eb0d0 0.00 : 5ebe52: 84 c0 test %al,%al 0.00 : 5ebe54: 0f 85 f6 1b 00 00 jne 5eda50 : COMPARE_NODE_FIELD(cols); : COMPARE_NODE_FIELD(selectStmt); : COMPARE_NODE_FIELD(returningList); : COMPARE_NODE_FIELD(withClause); 0.00 : 5ebe5a: 31 d2 xor %edx,%edx 0.00 : 5ebe5c: e9 9c f2 ff ff jmpq 5eb0fd : */ : : static bool : _equalQuery(const Query *a, const Query *b) : { : COMPARE_SCALAR_FIELD(commandType); 0.00 : 5ebe61: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebe64: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebe67: 0f 84 eb 16 00 00 je 5ed558 : COMPARE_NODE_FIELD(sortClause); : COMPARE_NODE_FIELD(limitOffset); : COMPARE_NODE_FIELD(limitCount); : COMPARE_NODE_FIELD(rowMarks); : COMPARE_NODE_FIELD(setOperations); : COMPARE_NODE_FIELD(constraintDeps); 0.00 : 5ebe6d: 31 d2 xor %edx,%edx 0.00 : 5ebe6f: 90 nop 0.00 : 5ebe70: e9 88 f2 ff ff jmpq 5eb0fd : : /* : * Try to reject by simple scalar checks before grovelling through all the : * list elements... : */ : COMPARE_SCALAR_FIELD(type); 0.00 : 5ebe75: 8b 17 mov (%rdi),%edx 0.00 : 5ebe77: 3b 16 cmp (%rsi),%edx 0.00 : 5ebe79: 0f 84 71 16 00 00 je 5ed4f0 : if (lfirst_oid(item_a) != lfirst_oid(item_b)) : return false; : } : break; : default: : elog(ERROR, "unrecognized list node type: %d", 0.00 : 5ebe7f: 31 d2 xor %edx,%edx 0.00 : 5ebe81: e9 77 f2 ff ff jmpq 5eb0fd : */ : : static bool : _equalValue(const Value *a, const Value *b) : { : COMPARE_SCALAR_FIELD(type); 0.00 : 5ebe86: 8b 07 mov (%rdi),%eax 0.00 : 5ebe88: 3b 06 cmp (%rsi),%eax 0.00 : 5ebe8a: 0f 85 6b f2 ff ff jne 5eb0fb : : switch (a->type) 0.00 : 5ebe90: 3d 8e 02 00 00 cmp $0x28e,%eax 0.00 : 5ebe95: 0f 87 ad f2 ff ff ja 5eb148 0.00 : 5ebe9b: 3d 8c 02 00 00 cmp $0x28c,%eax 0.00 : 5ebea0: 0f 83 26 24 00 00 jae 5ee2cc 0.00 : 5ebea6: 3d 8b 02 00 00 cmp $0x28b,%eax 0.00 : 5ebeab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5ebeb0: 0f 84 5b 24 00 00 je 5ee311 : break; : case T_Null: : /* nothing to do */ : break; : default: : elog(ERROR, "unrecognized node type: %d", (int) a->type); 0.00 : 5ebeb6: ba a1 53 89 00 mov $0x8953a1,%edx 0.00 : 5ebebb: be e9 09 00 00 mov $0x9e9,%esi 0.00 : 5ebec0: e9 61 f2 ff ff jmpq 5eb126 : } : : static bool : _equalPlaceHolderInfo(const PlaceHolderInfo *a, const PlaceHolderInfo *b) : { : COMPARE_SCALAR_FIELD(phid); 0.00 : 5ebec5: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebec8: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebecb: 0f 84 4f 1f 00 00 je 5ede20 : COMPARE_NODE_FIELD(ph_var); /* should be redundant */ : COMPARE_BITMAPSET_FIELD(ph_eval_at); : COMPARE_BITMAPSET_FIELD(ph_lateral); : COMPARE_BITMAPSET_FIELD(ph_needed); 0.00 : 5ebed1: 31 d2 xor %edx,%edx 0.00 : 5ebed3: e9 25 f2 ff ff jmpq 5eb0fd : } : : static bool : _equalLateralJoinInfo(const LateralJoinInfo *a, const LateralJoinInfo *b) : { : COMPARE_BITMAPSET_FIELD(lateral_lhs); 0.00 : 5ebed8: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebedc: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebee0: e8 3b 67 ff ff callq 5e2620 0.00 : 5ebee5: 84 c0 test %al,%al 0.00 : 5ebee7: 0f 84 0e f2 ff ff je 5eb0fb : COMPARE_BITMAPSET_FIELD(lateral_rhs); 0.00 : 5ebeed: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ebef2: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ebef6: e8 25 67 ff ff callq 5e2620 0.00 : 5ebefb: 84 c0 test %al,%al 0.00 : 5ebefd: 0f 95 c2 setne %dl 0.00 : 5ebf00: e9 f8 f1 ff ff jmpq 5eb0fd : } : : static bool : _equalSpecialJoinInfo(const SpecialJoinInfo *a, const SpecialJoinInfo *b) : { : COMPARE_BITMAPSET_FIELD(min_lefthand); 0.00 : 5ebf05: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebf09: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebf0d: e8 0e 67 ff ff callq 5e2620 0.00 : 5ebf12: 84 c0 test %al,%al 0.00 : 5ebf14: 0f 85 29 11 00 00 jne 5ed043 : COMPARE_BITMAPSET_FIELD(syn_lefthand); : COMPARE_BITMAPSET_FIELD(syn_righthand); : COMPARE_SCALAR_FIELD(jointype); : COMPARE_SCALAR_FIELD(lhs_strict); : COMPARE_SCALAR_FIELD(delay_upper_joins); : COMPARE_NODE_FIELD(join_quals); 0.00 : 5ebf1a: 31 d2 xor %edx,%edx 0.00 : 5ebf1c: e9 dc f1 ff ff jmpq 5eb0fd : } : : static bool : _equalCoalesceExpr(const CoalesceExpr *a, const CoalesceExpr *b) : { : COMPARE_SCALAR_FIELD(coalescetype); 0.00 : 5ebf21: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebf24: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebf27: 0f 84 f3 10 00 00 je 5ed020 : COMPARE_SCALAR_FIELD(coalescecollid); : COMPARE_NODE_FIELD(args); 0.00 : 5ebf2d: 31 d2 xor %edx,%edx 0.00 : 5ebf2f: 90 nop 0.00 : 5ebf30: e9 c8 f1 ff ff jmpq 5eb0fd : } : : static bool : _equalRowCompareExpr(const RowCompareExpr *a, const RowCompareExpr *b) : { : COMPARE_SCALAR_FIELD(rctype); 0.00 : 5ebf35: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebf38: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebf3b: 0f 84 6f 1e 00 00 je 5eddb0 : COMPARE_NODE_FIELD(opnos); : COMPARE_NODE_FIELD(opfamilies); : COMPARE_NODE_FIELD(inputcollids); : COMPARE_NODE_FIELD(largs); : COMPARE_NODE_FIELD(rargs); 0.00 : 5ebf41: 31 d2 xor %edx,%edx 0.00 : 5ebf43: e9 b5 f1 ff ff jmpq 5eb0fd : } : : static bool : _equalRowExpr(const RowExpr *a, const RowExpr *b) : { : COMPARE_NODE_FIELD(args); 0.00 : 5ebf48: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebf4c: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebf50: e8 7b f1 ff ff callq 5eb0d0 0.00 : 5ebf55: 84 c0 test %al,%al 0.00 : 5ebf57: 74 0e je 5ebf67 : COMPARE_SCALAR_FIELD(row_typeid); 0.00 : 5ebf59: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ebf5c: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ebf61: 0f 84 51 21 00 00 je 5ee0b8 : COMPARE_COERCIONFORM_FIELD(row_format); : COMPARE_NODE_FIELD(colnames); 0.00 : 5ebf67: 31 d2 xor %edx,%edx 0.00 : 5ebf69: e9 8f f1 ff ff jmpq 5eb0fd : } : : static bool : _equalArrayExpr(const ArrayExpr *a, const ArrayExpr *b) : { : COMPARE_SCALAR_FIELD(array_typeid); 0.00 : 5ebf6e: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebf71: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebf74: 0f 84 66 10 00 00 je 5ecfe0 : COMPARE_SCALAR_FIELD(array_collid); : COMPARE_SCALAR_FIELD(element_typeid); : COMPARE_NODE_FIELD(elements); 0.00 : 5ebf7a: 31 d2 xor %edx,%edx 0.00 : 5ebf7c: e9 7c f1 ff ff jmpq 5eb0fd : } : : static bool : _equalCaseTestExpr(const CaseTestExpr *a, const CaseTestExpr *b) : { : COMPARE_SCALAR_FIELD(typeId); 0.00 : 5ebf81: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebf84: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebf87: 0f 85 6e f1 ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(typeMod); 0.00 : 5ebf8d: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ebf90: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ebf93: 0f 85 62 f1 ff ff jne 5eb0fb 0.00 : 5ebf99: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ebf9c: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ebf9f: 0f 94 c2 sete %dl 0.00 : 5ebfa2: e9 56 f1 ff ff jmpq 5eb0fd : } : : static bool : _equalCaseWhen(const CaseWhen *a, const CaseWhen *b) : { : COMPARE_NODE_FIELD(expr); 0.00 : 5ebfa7: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebfab: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebfaf: e8 1c f1 ff ff callq 5eb0d0 0.00 : 5ebfb4: 31 d2 xor %edx,%edx 0.00 : 5ebfb6: 84 c0 test %al,%al 0.00 : 5ebfb8: 0f 84 3f f1 ff ff je 5eb0fd : COMPARE_NODE_FIELD(result); 0.00 : 5ebfbe: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ebfc3: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ebfc7: e8 04 f1 ff ff callq 5eb0d0 0.00 : 5ebfcc: 84 c0 test %al,%al 0.00 : 5ebfce: 0f 95 c2 setne %dl 0.00 : 5ebfd1: e9 27 f1 ff ff jmpq 5eb0fd : } : : static bool : _equalCaseExpr(const CaseExpr *a, const CaseExpr *b) : { : COMPARE_SCALAR_FIELD(casetype); 0.00 : 5ebfd6: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ebfd9: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ebfdc: 0f 84 a6 0f 00 00 je 5ecf88 : COMPARE_SCALAR_FIELD(casecollid); : COMPARE_NODE_FIELD(arg); : COMPARE_NODE_FIELD(args); : COMPARE_NODE_FIELD(defresult); 0.00 : 5ebfe2: 31 d2 xor %edx,%edx 0.00 : 5ebfe4: e9 14 f1 ff ff jmpq 5eb0fd : } : : static bool : _equalCollateExpr(const CollateExpr *a, const CollateExpr *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ebfe9: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ebfed: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ebff1: e8 da f0 ff ff callq 5eb0d0 0.00 : 5ebff6: 31 d2 xor %edx,%edx 0.00 : 5ebff8: 84 c0 test %al,%al 0.00 : 5ebffa: 0f 84 fd f0 ff ff je 5eb0fd 0.00 : 5ec000: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec003: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec008: 0f 94 c2 sete %dl 0.00 : 5ec00b: e9 ed f0 ff ff jmpq 5eb0fd : } : : static bool : _equalConvertRowtypeExpr(const ConvertRowtypeExpr *a, const ConvertRowtypeExpr *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec010: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec014: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec018: e8 b3 f0 ff ff callq 5eb0d0 0.00 : 5ec01d: 31 d2 xor %edx,%edx 0.00 : 5ec01f: 84 c0 test %al,%al 0.00 : 5ec021: 0f 84 d6 f0 ff ff je 5eb0fd 0.00 : 5ec027: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec02a: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec02f: 0f 94 c2 sete %dl 0.00 : 5ec032: e9 c6 f0 ff ff jmpq 5eb0fd : } : : static bool : _equalArrayCoerceExpr(const ArrayCoerceExpr *a, const ArrayCoerceExpr *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec037: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec03b: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec03f: e8 8c f0 ff ff callq 5eb0d0 0.00 : 5ec044: 84 c0 test %al,%al 0.00 : 5ec046: 74 0e je 5ec056 : COMPARE_SCALAR_FIELD(elemfuncid); 0.00 : 5ec048: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec04b: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec050: 0f 84 66 1c 00 00 je 5edcbc : COMPARE_SCALAR_FIELD(resulttype); : COMPARE_SCALAR_FIELD(resulttypmod); : COMPARE_SCALAR_FIELD(resultcollid); 0.00 : 5ec056: 31 d2 xor %edx,%edx 0.00 : 5ec058: e9 a0 f0 ff ff jmpq 5eb0fd : } : : static bool : _equalCoerceViaIO(const CoerceViaIO *a, const CoerceViaIO *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec05d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec061: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec065: e8 66 f0 ff ff callq 5eb0d0 0.00 : 5ec06a: 84 c0 test %al,%al 0.00 : 5ec06c: 74 0e je 5ec07c : COMPARE_SCALAR_FIELD(resulttype); 0.00 : 5ec06e: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec071: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec076: 0f 84 f4 1b 00 00 je 5edc70 0.00 : 5ec07c: 31 d2 xor %edx,%edx 0.00 : 5ec07e: 66 90 xchg %ax,%ax 0.00 : 5ec080: e9 78 f0 ff ff jmpq 5eb0fd : } : : static bool : _equalRelabelType(const RelabelType *a, const RelabelType *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec085: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec089: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec08d: e8 3e f0 ff ff callq 5eb0d0 0.00 : 5ec092: 84 c0 test %al,%al 0.00 : 5ec094: 74 0e je 5ec0a4 : COMPARE_SCALAR_FIELD(resulttype); 0.00 : 5ec096: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec099: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec09e: 0f 84 fa 1b 00 00 je 5edc9e : COMPARE_SCALAR_FIELD(resulttypmod); 0.00 : 5ec0a4: 31 d2 xor %edx,%edx 0.00 : 5ec0a6: e9 52 f0 ff ff jmpq 5eb0fd : } : : static bool : _equalFieldStore(const FieldStore *a, const FieldStore *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec0ab: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec0af: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec0b3: e8 18 f0 ff ff callq 5eb0d0 0.00 : 5ec0b8: 84 c0 test %al,%al 0.00 : 5ec0ba: 0f 85 20 0e 00 00 jne 5ecee0 : COMPARE_NODE_FIELD(newvals); : COMPARE_NODE_FIELD(fieldnums); 0.00 : 5ec0c0: 31 d2 xor %edx,%edx 0.00 : 5ec0c2: e9 36 f0 ff ff jmpq 5eb0fd : } : : static bool : _equalFieldSelect(const FieldSelect *a, const FieldSelect *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec0c7: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec0cb: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec0cf: e8 fc ef ff ff callq 5eb0d0 0.00 : 5ec0d4: 84 c0 test %al,%al 0.00 : 5ec0d6: 74 10 je 5ec0e8 : COMPARE_SCALAR_FIELD(fieldnum); 0.00 : 5ec0d8: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.00 : 5ec0dc: 66 41 3b 44 24 10 cmp 0x10(%r12),%ax 0.00 : 5ec0e2: 0f 84 18 1c 00 00 je 5edd00 : COMPARE_SCALAR_FIELD(resulttype); : COMPARE_SCALAR_FIELD(resulttypmod); 0.00 : 5ec0e8: 31 d2 xor %edx,%edx 0.00 : 5ec0ea: e9 0e f0 ff ff jmpq 5eb0fd : } : : static bool : _equalAlternativeSubPlan(const AlternativeSubPlan *a, const AlternativeSubPlan *b) : { : COMPARE_NODE_FIELD(subplans); 0.00 : 5ec0ef: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec0f3: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec0f7: e8 d4 ef ff ff callq 5eb0d0 0.00 : 5ec0fc: 84 c0 test %al,%al 0.00 : 5ec0fe: 0f 95 c2 setne %dl : case T_SubPlan: : retval = _equalSubPlan(a, b); : break; : case T_AlternativeSubPlan: : retval = _equalAlternativeSubPlan(a, b); : break; 0.00 : 5ec101: e9 f7 ef ff ff jmpq 5eb0fd : } : : static bool : _equalSubPlan(const SubPlan *a, const SubPlan *b) : { : COMPARE_SCALAR_FIELD(subLinkType); 0.00 : 5ec106: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec109: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec10c: 0f 84 7e 1d 00 00 je 5ede90 : COMPARE_SCALAR_FIELD(useHashTable); : COMPARE_SCALAR_FIELD(unknownEqFalse); : COMPARE_NODE_FIELD(setParam); : COMPARE_NODE_FIELD(parParam); : COMPARE_NODE_FIELD(args); : COMPARE_SCALAR_FIELD(startup_cost); 0.00 : 5ec112: 31 d2 xor %edx,%edx 0.00 : 5ec114: e9 e4 ef ff ff jmpq 5eb0fd : } : : static bool : _equalSubLink(const SubLink *a, const SubLink *b) : { : COMPARE_SCALAR_FIELD(subLinkType); 0.00 : 5ec119: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec11c: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec11f: 0f 84 6b 0d 00 00 je 5ece90 : COMPARE_SCALAR_FIELD(subLinkId); : COMPARE_NODE_FIELD(testexpr); : COMPARE_NODE_FIELD(operName); : COMPARE_NODE_FIELD(subselect); 0.00 : 5ec125: 31 d2 xor %edx,%edx 0.00 : 5ec127: e9 d1 ef ff ff jmpq 5eb0fd : } : : static bool : _equalBoolExpr(const BoolExpr *a, const BoolExpr *b) : { : COMPARE_SCALAR_FIELD(boolop); 0.00 : 5ec12c: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec12f: 31 d2 xor %edx,%edx 0.00 : 5ec131: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec134: 0f 85 c3 ef ff ff jne 5eb0fd : COMPARE_NODE_FIELD(args); 0.00 : 5ec13a: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec13e: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec142: e8 89 ef ff ff callq 5eb0d0 0.00 : 5ec147: 84 c0 test %al,%al 0.00 : 5ec149: 0f 95 c2 setne %dl 0.00 : 5ec14c: e9 ac ef ff ff jmpq 5eb0fd : } : : static bool : _equalScalarArrayOpExpr(const ScalarArrayOpExpr *a, const ScalarArrayOpExpr *b) : { : COMPARE_SCALAR_FIELD(opno); 0.00 : 5ec151: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec154: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec157: 0f 84 e3 0c 00 00 je 5ece40 : b->opfuncid != 0) : return false; : : COMPARE_SCALAR_FIELD(useOr); : COMPARE_SCALAR_FIELD(inputcollid); : COMPARE_NODE_FIELD(args); 0.00 : 5ec15d: 31 d2 xor %edx,%edx 0.00 : 5ec15f: e9 99 ef ff ff jmpq 5eb0fd : } : : static bool : _equalNullIfExpr(const NullIfExpr *a, const NullIfExpr *b) : { : COMPARE_SCALAR_FIELD(opno); 0.00 : 5ec164: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec167: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec16a: 0f 84 88 05 00 00 je 5ec6f8 : : COMPARE_SCALAR_FIELD(opresulttype); : COMPARE_SCALAR_FIELD(opretset); : COMPARE_SCALAR_FIELD(opcollid); : COMPARE_SCALAR_FIELD(inputcollid); : COMPARE_NODE_FIELD(args); 0.00 : 5ec170: 31 d2 xor %edx,%edx 0.00 : 5ec172: e9 86 ef ff ff jmpq 5eb0fd : } : : static bool : _equalDistinctExpr(const DistinctExpr *a, const DistinctExpr *b) : { : COMPARE_SCALAR_FIELD(opno); 0.00 : 5ec177: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec17a: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec17d: 0f 84 0a 05 00 00 je 5ec68d : : COMPARE_SCALAR_FIELD(opresulttype); : COMPARE_SCALAR_FIELD(opretset); : COMPARE_SCALAR_FIELD(opcollid); : COMPARE_SCALAR_FIELD(inputcollid); : COMPARE_NODE_FIELD(args); 0.00 : 5ec183: 31 d2 xor %edx,%edx 0.00 : 5ec185: e9 73 ef ff ff jmpq 5eb0fd : } : : static bool : _equalOpExpr(const OpExpr *a, const OpExpr *b) : { : COMPARE_SCALAR_FIELD(opno); 0.00 : 5ec18a: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec18d: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec190: 0f 84 86 0d 00 00 je 5ecf1c : : COMPARE_SCALAR_FIELD(opresulttype); : COMPARE_SCALAR_FIELD(opretset); : COMPARE_SCALAR_FIELD(opcollid); : COMPARE_SCALAR_FIELD(inputcollid); : COMPARE_NODE_FIELD(args); 0.00 : 5ec196: 31 d2 xor %edx,%edx 0.00 : 5ec198: e9 60 ef ff ff jmpq 5eb0fd : } : : static bool : _equalNamedArgExpr(const NamedArgExpr *a, const NamedArgExpr *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec19d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec1a1: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec1a5: e8 26 ef ff ff callq 5eb0d0 0.00 : 5ec1aa: 84 c0 test %al,%al 0.00 : 5ec1ac: 0f 84 8e 1f 00 00 je 5ee140 : COMPARE_STRING_FIELD(name); 0.00 : 5ec1b2: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ec1b6: 48 85 ff test %rdi,%rdi 0.00 : 5ec1b9: 0f 84 ce 20 00 00 je 5ee28d 0.00 : 5ec1bf: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ec1c4: 48 85 f6 test %rsi,%rsi 0.00 : 5ec1c7: 0f 84 c5 20 00 00 je 5ee292 0.00 : 5ec1cd: e8 5e db e7 ff callq 469d30 0.00 : 5ec1d2: 85 c0 test %eax,%eax 0.00 : 5ec1d4: 0f 95 c0 setne %al 0.00 : 5ec1d7: 84 c0 test %al,%al 0.00 : 5ec1d9: 0f 85 61 1f 00 00 jne 5ee140 0.00 : 5ec1df: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5ec1e2: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5ec1e7: 0f 94 c2 sete %dl 0.00 : 5ec1ea: e9 0e ef ff ff jmpq 5eb0fd : } : : static bool : _equalFuncExpr(const FuncExpr *a, const FuncExpr *b) : { : COMPARE_SCALAR_FIELD(funcid); 0.00 : 5ec1ef: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec1f2: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec1f5: 0f 84 9d 16 00 00 je 5ed898 : COMPARE_SCALAR_FIELD(funcretset); : COMPARE_SCALAR_FIELD(funcvariadic); : COMPARE_COERCIONFORM_FIELD(funcformat); : COMPARE_SCALAR_FIELD(funccollid); : COMPARE_SCALAR_FIELD(inputcollid); : COMPARE_NODE_FIELD(args); 0.00 : 5ec1fb: 31 d2 xor %edx,%edx 0.00 : 5ec1fd: e9 fb ee ff ff jmpq 5eb0fd : * : * COMPARE_NODE_FIELD(phexpr); : * : * COMPARE_BITMAPSET_FIELD(phrels); : */ : COMPARE_SCALAR_FIELD(phid); 0.00 : 5ec202: 8b 47 18 mov 0x18(%rdi),%eax 0.00 : 5ec205: 3b 46 18 cmp 0x18(%rsi),%eax 0.00 : 5ec208: 0f 85 ed ee ff ff jne 5eb0fb 0.00 : 5ec20e: 8b 47 1c mov 0x1c(%rdi),%eax 0.00 : 5ec211: 3b 46 1c cmp 0x1c(%rsi),%eax 0.00 : 5ec214: 0f 94 c2 sete %dl 0.00 : 5ec217: e9 e1 ee ff ff jmpq 5eb0fd : } : : static bool : _equalRestrictInfo(const RestrictInfo *a, const RestrictInfo *b) : { : COMPARE_NODE_FIELD(clause); 0.00 : 5ec21c: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec220: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec224: e8 a7 ee ff ff callq 5eb0d0 0.00 : 5ec229: 84 c0 test %al,%al 0.00 : 5ec22b: 74 0f je 5ec23c : COMPARE_SCALAR_FIELD(is_pushed_down); 0.00 : 5ec22d: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5ec231: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5ec236: 0f 84 9d 1d 00 00 je 5edfd9 : COMPARE_SCALAR_FIELD(outerjoin_delayed); : COMPARE_BITMAPSET_FIELD(required_relids); : COMPARE_BITMAPSET_FIELD(outer_relids); : COMPARE_BITMAPSET_FIELD(nullable_relids); 0.00 : 5ec23c: 31 d2 xor %edx,%edx 0.00 : 5ec23e: 66 90 xchg %ax,%ax 0.00 : 5ec240: e9 b8 ee ff ff jmpq 5eb0fd : : static bool : _equalPathKey(const PathKey *a, const PathKey *b) : { : /* We assume pointer equality is sufficient to compare the eclasses */ : COMPARE_SCALAR_FIELD(pk_eclass); 0.00 : 5ec245: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 5ec249: 48 39 47 08 cmp %rax,0x8(%rdi) 0.00 : 5ec24d: 0f 85 a8 ee ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(pk_opfamily); 0.00 : 5ec253: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ec256: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ec259: 0f 85 9c ee ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(pk_strategy); 0.00 : 5ec25f: 8b 47 14 mov 0x14(%rdi),%eax 0.00 : 5ec262: 3b 46 14 cmp 0x14(%rsi),%eax 0.00 : 5ec265: 0f 85 90 ee ff ff jne 5eb0fb 0.00 : 5ec26b: 0f b6 47 18 movzbl 0x18(%rdi),%eax 0.00 : 5ec26f: 3a 46 18 cmp 0x18(%rsi),%al 0.00 : 5ec272: 0f 94 c2 sete %dl 0.00 : 5ec275: e9 83 ee ff ff jmpq 5eb0fd 0.00 : 5ec27a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : static bool : _equalIntoClause(const IntoClause *a, const IntoClause *b) : { : COMPARE_NODE_FIELD(rel); 0.00 : 5ec280: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec284: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec288: e8 43 ee ff ff callq 5eb0d0 0.00 : 5ec28d: 84 c0 test %al,%al 0.00 : 5ec28f: 0f 85 5b 16 00 00 jne 5ed8f0 : COMPARE_NODE_FIELD(colNames); : COMPARE_NODE_FIELD(options); : COMPARE_SCALAR_FIELD(onCommit); : COMPARE_STRING_FIELD(tableSpaceName); : COMPARE_NODE_FIELD(viewQuery); 0.00 : 5ec295: 31 d2 xor %edx,%edx 0.00 : 5ec297: e9 61 ee ff ff jmpq 5eb0fd : } : : static bool : _equalArrayRef(const ArrayRef *a, const ArrayRef *b) : { : COMPARE_SCALAR_FIELD(refarraytype); 0.00 : 5ec29c: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec29f: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec2a2: 0f 84 f0 14 00 00 je 5ed798 : COMPARE_SCALAR_FIELD(reftypmod); : COMPARE_SCALAR_FIELD(refcollid); : COMPARE_NODE_FIELD(refupperindexpr); : COMPARE_NODE_FIELD(reflowerindexpr); : COMPARE_NODE_FIELD(refexpr); : COMPARE_NODE_FIELD(refassgnexpr); 0.00 : 5ec2a8: 31 d2 xor %edx,%edx 0.00 : 5ec2aa: e9 4e ee ff ff jmpq 5eb0fd : } : : static bool : _equalWindowFunc(const WindowFunc *a, const WindowFunc *b) : { : COMPARE_SCALAR_FIELD(winfnoid); 0.00 : 5ec2af: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec2b2: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec2b5: 0f 84 5d 15 00 00 je 5ed818 : COMPARE_SCALAR_FIELD(wincollid); : COMPARE_SCALAR_FIELD(inputcollid); : COMPARE_NODE_FIELD(args); : COMPARE_NODE_FIELD(aggfilter); : COMPARE_SCALAR_FIELD(winref); : COMPARE_SCALAR_FIELD(winstar); 0.00 : 5ec2bb: 31 d2 xor %edx,%edx 0.00 : 5ec2bd: 0f 1f 00 nopl (%rax) 0.00 : 5ec2c0: e9 38 ee ff ff jmpq 5eb0fd : } : : static bool : _equalAggref(const Aggref *a, const Aggref *b) : { : COMPARE_SCALAR_FIELD(aggfnoid); 0.00 : 5ec2c5: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec2c8: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec2cb: 0f 84 af 16 00 00 je 5ed980 : COMPARE_NODE_FIELD(aggorder); : COMPARE_NODE_FIELD(aggdistinct); : COMPARE_NODE_FIELD(aggfilter); : COMPARE_SCALAR_FIELD(aggstar); : COMPARE_SCALAR_FIELD(aggvariadic); : COMPARE_SCALAR_FIELD(aggkind); 0.00 : 5ec2d1: 31 d2 xor %edx,%edx 0.00 : 5ec2d3: e9 25 ee ff ff jmpq 5eb0fd : } : : static bool : _equalParam(const Param *a, const Param *b) : { : COMPARE_SCALAR_FIELD(paramkind); 0.00 : 5ec2d8: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec2db: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec2de: 0f 85 17 ee ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(paramid); 0.00 : 5ec2e4: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ec2e7: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ec2ea: 0f 85 0b ee ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(paramtype); 0.00 : 5ec2f0: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ec2f3: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ec2f6: 0f 85 ff ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(paramtypmod); 0.00 : 5ec2fc: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ec2ff: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ec302: 0f 85 f3 ed ff ff jne 5eb0fb 0.00 : 5ec308: 8b 47 14 mov 0x14(%rdi),%eax 0.00 : 5ec30b: 3b 46 14 cmp 0x14(%rsi),%eax 0.00 : 5ec30e: 0f 94 c2 sete %dl 0.00 : 5ec311: e9 e7 ed ff ff jmpq 5eb0fd 0.00 : 5ec316: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ec31d: 00 00 00 : } : : static bool : _equalConst(const Const *a, const Const *b) : { : COMPARE_SCALAR_FIELD(consttype); 0.00 : 5ec320: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec323: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec326: 0f 85 cf ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(consttypmod); 0.00 : 5ec32c: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ec32f: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ec332: 0f 85 c3 ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(constcollid); 0.00 : 5ec338: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ec33b: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ec33e: 0f 85 b7 ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(constlen); 0.00 : 5ec344: 8b 4f 10 mov 0x10(%rdi),%ecx 0.00 : 5ec347: 3b 4e 10 cmp 0x10(%rsi),%ecx 0.00 : 5ec34a: 0f 85 ab ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(constisnull); 0.00 : 5ec350: 0f b6 57 20 movzbl 0x20(%rdi),%edx 0.00 : 5ec354: 3a 56 20 cmp 0x20(%rsi),%dl 0.00 : 5ec357: 0f 85 9e ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(constbyval); 0.00 : 5ec35d: 0f b6 47 21 movzbl 0x21(%rdi),%eax 0.00 : 5ec361: 3a 46 21 cmp 0x21(%rsi),%al 0.00 : 5ec364: 0f 85 91 ed ff ff jne 5eb0fb : : /* : * We treat all NULL constants of the same type as equal. Someday this : * might need to change? But datumIsEqual doesn't work on nulls, so... : */ : if (a->constisnull) 0.00 : 5ec36a: 84 d2 test %dl,%dl 0.00 : 5ec36c: 0f 85 e6 ed ff ff jne 5eb158 : return true; : return datumIsEqual(a->constvalue, b->constvalue, 0.00 : 5ec372: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : 5ec376: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5ec37a: 0f be d0 movsbl %al,%edx : retval = false; /* keep compiler quiet */ : break; : } : : return retval; : } 0.00 : 5ec37d: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5ec381: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5ec386: c9 leaveq : * We treat all NULL constants of the same type as equal. Someday this : * might need to change? But datumIsEqual doesn't work on nulls, so... : */ : if (a->constisnull) : return true; : return datumIsEqual(a->constvalue, b->constvalue, 0.00 : 5ec387: e9 64 3b 0e 00 jmpq 6cfef0 0.00 : 5ec38c: 0f 1f 40 00 nopl 0x0(%rax) : */ : : static bool : _equalVar(const Var *a, const Var *b) : { : COMPARE_SCALAR_FIELD(varno); 0.00 : 5ec390: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec393: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec396: 0f 85 5f ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(varattno); 0.00 : 5ec39c: 0f b7 47 08 movzwl 0x8(%rdi),%eax 0.00 : 5ec3a0: 66 3b 46 08 cmp 0x8(%rsi),%ax 0.00 : 5ec3a4: 0f 85 51 ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(vartype); 0.00 : 5ec3aa: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ec3ad: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ec3b0: 0f 85 45 ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(vartypmod); 0.00 : 5ec3b6: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ec3b9: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ec3bc: 0f 85 39 ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(varcollid); 0.00 : 5ec3c2: 8b 47 14 mov 0x14(%rdi),%eax 0.00 : 5ec3c5: 3b 46 14 cmp 0x14(%rsi),%eax 0.00 : 5ec3c8: 0f 85 2d ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(varlevelsup); 0.00 : 5ec3ce: 8b 47 18 mov 0x18(%rdi),%eax 0.00 : 5ec3d1: 3b 46 18 cmp 0x18(%rsi),%eax 0.00 : 5ec3d4: 0f 85 21 ed ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(varnoold); 0.00 : 5ec3da: 8b 47 1c mov 0x1c(%rdi),%eax 0.00 : 5ec3dd: 3b 46 1c cmp 0x1c(%rsi),%eax 0.00 : 5ec3e0: 0f 85 15 ed ff ff jne 5eb0fb 0.00 : 5ec3e6: 0f b7 47 20 movzwl 0x20(%rdi),%eax 0.00 : 5ec3ea: 66 3b 46 20 cmp 0x20(%rsi),%ax 0.00 : 5ec3ee: 0f 94 c2 sete %dl 0.00 : 5ec3f1: e9 07 ed ff ff jmpq 5eb0fd 0.00 : 5ec3f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5ec3fd: 00 00 00 : } : : static bool : _equalRangeVar(const RangeVar *a, const RangeVar *b) : { : COMPARE_STRING_FIELD(catalogname); 0.00 : 5ec400: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec404: 48 85 ff test %rdi,%rdi 0.00 : 5ec407: 0f 84 b9 1d 00 00 je 5ee1c6 0.00 : 5ec40d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec411: 48 85 f6 test %rsi,%rsi 0.00 : 5ec414: 0f 84 b0 1d 00 00 je 5ee1ca 0.00 : 5ec41a: e8 11 d9 e7 ff callq 469d30 0.00 : 5ec41f: 85 c0 test %eax,%eax 0.00 : 5ec421: 0f 95 c0 setne %al 0.00 : 5ec424: 84 c0 test %al,%al 0.00 : 5ec426: 75 60 jne 5ec488 : COMPARE_STRING_FIELD(schemaname); 0.00 : 5ec428: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ec42c: 48 85 ff test %rdi,%rdi 0.00 : 5ec42f: 0f 84 48 1e 00 00 je 5ee27d 0.00 : 5ec435: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ec43a: 48 85 f6 test %rsi,%rsi 0.00 : 5ec43d: 0f 84 3f 1e 00 00 je 5ee282 0.00 : 5ec443: e8 e8 d8 e7 ff callq 469d30 0.00 : 5ec448: 85 c0 test %eax,%eax 0.00 : 5ec44a: 0f 95 c0 setne %al 0.00 : 5ec44d: 84 c0 test %al,%al 0.00 : 5ec44f: 75 37 jne 5ec488 : COMPARE_STRING_FIELD(relname); 0.00 : 5ec451: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ec455: 48 85 ff test %rdi,%rdi 0.00 : 5ec458: 0f 84 3f 1e 00 00 je 5ee29d 0.00 : 5ec45e: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ec463: 48 85 f6 test %rsi,%rsi 0.00 : 5ec466: 0f 84 36 1e 00 00 je 5ee2a2 0.00 : 5ec46c: e8 bf d8 e7 ff callq 469d30 0.00 : 5ec471: 85 c0 test %eax,%eax 0.00 : 5ec473: 0f 95 c0 setne %al 0.00 : 5ec476: 84 c0 test %al,%al 0.00 : 5ec478: 75 0e jne 5ec488 : COMPARE_SCALAR_FIELD(inhOpt); 0.00 : 5ec47a: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 5ec47d: 41 3b 44 24 20 cmp 0x20(%r12),%eax 0.00 : 5ec482: 0f 84 e3 1e 00 00 je 5ee36b : COMPARE_SCALAR_FIELD(relpersistence); : COMPARE_NODE_FIELD(alias); 0.00 : 5ec488: 31 d2 xor %edx,%edx 0.00 : 5ec48a: e9 6e ec ff ff jmpq 5eb0fd : */ : : static bool : _equalAlias(const Alias *a, const Alias *b) : { : COMPARE_STRING_FIELD(aliasname); 0.00 : 5ec48f: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec493: 48 85 ff test %rdi,%rdi 0.00 : 5ec496: 0f 84 1b 1d 00 00 je 5ee1b7 0.00 : 5ec49c: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec4a0: 48 85 f6 test %rsi,%rsi 0.00 : 5ec4a3: 0f 84 12 1d 00 00 je 5ee1bb 0.00 : 5ec4a9: e8 82 d8 e7 ff callq 469d30 0.00 : 5ec4ae: 85 c0 test %eax,%eax 0.00 : 5ec4b0: 0f 95 c0 setne %al 0.00 : 5ec4b3: 31 d2 xor %edx,%edx 0.00 : 5ec4b5: 84 c0 test %al,%al 0.00 : 5ec4b7: 0f 85 40 ec ff ff jne 5eb0fd : COMPARE_NODE_FIELD(colnames); 0.00 : 5ec4bd: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ec4c2: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ec4c6: e8 05 ec ff ff callq 5eb0d0 0.00 : 5ec4cb: 84 c0 test %al,%al 0.00 : 5ec4cd: 0f 95 c2 setne %dl 0.00 : 5ec4d0: e9 28 ec ff ff jmpq 5eb0fd : } : : static bool : _equalAppendRelInfo(const AppendRelInfo *a, const AppendRelInfo *b) : { : COMPARE_SCALAR_FIELD(parent_relid); 0.00 : 5ec4d5: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec4d8: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec4db: 0f 84 7f 08 00 00 je 5ecd60 : COMPARE_SCALAR_FIELD(child_relid); : COMPARE_SCALAR_FIELD(parent_reltype); : COMPARE_SCALAR_FIELD(child_reltype); : COMPARE_NODE_FIELD(translated_vars); 0.00 : 5ec4e1: 31 d2 xor %edx,%edx 0.00 : 5ec4e3: e9 15 ec ff ff jmpq 5eb0fd : } : : static bool : _equalCurrentOfExpr(const CurrentOfExpr *a, const CurrentOfExpr *b) : { : COMPARE_SCALAR_FIELD(cvarno); 0.00 : 5ec4e8: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec4eb: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec4ee: 0f 85 07 ec ff ff jne 5eb0fb : COMPARE_STRING_FIELD(cursor_name); 0.00 : 5ec4f4: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec4f8: 48 85 ff test %rdi,%rdi 0.00 : 5ec4fb: 0f 84 01 1e 00 00 je 5ee302 0.00 : 5ec501: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec505: 48 85 f6 test %rsi,%rsi 0.00 : 5ec508: 0f 84 f8 1d 00 00 je 5ee306 0.00 : 5ec50e: e8 1d d8 e7 ff callq 469d30 0.00 : 5ec513: 85 c0 test %eax,%eax 0.00 : 5ec515: 0f 95 c0 setne %al 0.00 : 5ec518: 84 c0 test %al,%al 0.00 : 5ec51a: 0f 85 db eb ff ff jne 5eb0fb 0.00 : 5ec520: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec523: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec528: 0f 94 c2 sete %dl 0.00 : 5ec52b: e9 cd eb ff ff jmpq 5eb0fd : } : : static bool : _equalSetToDefault(const SetToDefault *a, const SetToDefault *b) : { : COMPARE_SCALAR_FIELD(typeId); 0.00 : 5ec530: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec533: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec536: 0f 85 bf eb ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(typeMod); 0.00 : 5ec53c: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ec53f: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ec542: 0f 85 b3 eb ff ff jne 5eb0fb 0.00 : 5ec548: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ec54b: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ec54e: 0f 94 c2 sete %dl 0.00 : 5ec551: e9 a7 eb ff ff jmpq 5eb0fd : } : : static bool : _equalFromExpr(const FromExpr *a, const FromExpr *b) : { : COMPARE_NODE_FIELD(fromlist); 0.00 : 5ec556: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec55a: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec55e: e8 6d eb ff ff callq 5eb0d0 0.00 : 5ec563: 31 d2 xor %edx,%edx 0.00 : 5ec565: 84 c0 test %al,%al 0.00 : 5ec567: 0f 84 90 eb ff ff je 5eb0fd : COMPARE_NODE_FIELD(quals); 0.00 : 5ec56d: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ec572: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ec576: e8 55 eb ff ff callq 5eb0d0 0.00 : 5ec57b: 84 c0 test %al,%al 0.00 : 5ec57d: 0f 95 c2 setne %dl 0.00 : 5ec580: e9 78 eb ff ff jmpq 5eb0fd : } : : static bool : _equalJoinExpr(const JoinExpr *a, const JoinExpr *b) : { : COMPARE_SCALAR_FIELD(jointype); 0.00 : 5ec585: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec588: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec58b: 0f 84 1f 08 00 00 je 5ecdb0 : COMPARE_SCALAR_FIELD(isNatural); : COMPARE_NODE_FIELD(larg); : COMPARE_NODE_FIELD(rarg); : COMPARE_NODE_FIELD(usingClause); : COMPARE_NODE_FIELD(quals); : COMPARE_NODE_FIELD(alias); 0.00 : 5ec591: 31 d2 xor %edx,%edx 0.00 : 5ec593: e9 65 eb ff ff jmpq 5eb0fd : COMPARE_NODE_FIELD(expr); : COMPARE_SCALAR_FIELD(resno); : COMPARE_STRING_FIELD(resname); : COMPARE_SCALAR_FIELD(ressortgroupref); : COMPARE_SCALAR_FIELD(resorigtbl); : COMPARE_SCALAR_FIELD(resorigcol); 0.00 : 5ec598: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec59b: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec59e: 0f 94 c2 sete %dl 0.00 : 5ec5a1: e9 57 eb ff ff jmpq 5eb0fd : } : : static bool : _equalTargetEntry(const TargetEntry *a, const TargetEntry *b) : { : COMPARE_NODE_FIELD(expr); 0.00 : 5ec5a6: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec5aa: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec5ae: e8 1d eb ff ff callq 5eb0d0 0.00 : 5ec5b3: 84 c0 test %al,%al 0.00 : 5ec5b5: 74 10 je 5ec5c7 : COMPARE_SCALAR_FIELD(resno); 0.00 : 5ec5b7: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.00 : 5ec5bb: 66 41 3b 44 24 10 cmp 0x10(%r12),%ax 0.00 : 5ec5c1: 0f 84 69 1a 00 00 je 5ee030 : COMPARE_STRING_FIELD(resname); : COMPARE_SCALAR_FIELD(ressortgroupref); : COMPARE_SCALAR_FIELD(resorigtbl); : COMPARE_SCALAR_FIELD(resorigcol); 0.00 : 5ec5c7: 31 d2 xor %edx,%edx 0.00 : 5ec5c9: e9 2f eb ff ff jmpq 5eb0fd : } : : static bool : _equalBooleanTest(const BooleanTest *a, const BooleanTest *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec5ce: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec5d2: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec5d6: e8 f5 ea ff ff callq 5eb0d0 0.00 : 5ec5db: 31 d2 xor %edx,%edx 0.00 : 5ec5dd: 84 c0 test %al,%al 0.00 : 5ec5df: 0f 84 18 eb ff ff je 5eb0fd 0.00 : 5ec5e5: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec5e8: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec5ed: 0f 94 c2 sete %dl 0.00 : 5ec5f0: e9 08 eb ff ff jmpq 5eb0fd : } : : static bool : _equalNullTest(const NullTest *a, const NullTest *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec5f5: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec5f9: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec5fd: e8 ce ea ff ff callq 5eb0d0 0.00 : 5ec602: 84 c0 test %al,%al 0.00 : 5ec604: 74 0e je 5ec614 : COMPARE_SCALAR_FIELD(nulltesttype); 0.00 : 5ec606: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec609: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec60e: 0f 84 a4 19 00 00 je 5edfb8 0.00 : 5ec614: 31 d2 xor %edx,%edx 0.00 : 5ec616: e9 e2 ea ff ff jmpq 5eb0fd : } : : static bool : _equalCoerceToDomainValue(const CoerceToDomainValue *a, const CoerceToDomainValue *b) : { : COMPARE_SCALAR_FIELD(typeId); 0.00 : 5ec61b: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec61e: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec621: 0f 85 d4 ea ff ff jne 5eb0fb : COMPARE_SCALAR_FIELD(typeMod); 0.00 : 5ec627: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ec62a: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ec62d: 0f 85 c8 ea ff ff jne 5eb0fb 0.00 : 5ec633: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ec636: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ec639: 0f 94 c2 sete %dl 0.00 : 5ec63c: e9 bc ea ff ff jmpq 5eb0fd : } : : static bool : _equalCoerceToDomain(const CoerceToDomain *a, const CoerceToDomain *b) : { : COMPARE_NODE_FIELD(arg); 0.00 : 5ec641: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec645: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec649: e8 82 ea ff ff callq 5eb0d0 0.00 : 5ec64e: 84 c0 test %al,%al 0.00 : 5ec650: 74 0e je 5ec660 : COMPARE_SCALAR_FIELD(resulttype); 0.00 : 5ec652: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ec655: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ec65a: 0f 84 20 16 00 00 je 5edc80 : COMPARE_SCALAR_FIELD(resulttypmod); 0.00 : 5ec660: 31 d2 xor %edx,%edx 0.00 : 5ec662: e9 96 ea ff ff jmpq 5eb0fd : } : : static bool : _equalXmlExpr(const XmlExpr *a, const XmlExpr *b) : { : COMPARE_SCALAR_FIELD(op); 0.00 : 5ec667: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec66a: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec66d: 0f 84 9d 04 00 00 je 5ecb10 : COMPARE_STRING_FIELD(name); : COMPARE_NODE_FIELD(named_args); : COMPARE_NODE_FIELD(arg_names); : COMPARE_NODE_FIELD(args); : COMPARE_SCALAR_FIELD(xmloption); : COMPARE_SCALAR_FIELD(type); 0.00 : 5ec673: 31 d2 xor %edx,%edx 0.00 : 5ec675: e9 83 ea ff ff jmpq 5eb0fd : } : : static bool : _equalMinMaxExpr(const MinMaxExpr *a, const MinMaxExpr *b) : { : COMPARE_SCALAR_FIELD(minmaxtype); 0.00 : 5ec67a: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ec67d: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ec680: 0f 84 2a 05 00 00 je 5ecbb0 : COMPARE_SCALAR_FIELD(minmaxcollid); : COMPARE_SCALAR_FIELD(inputcollid); : COMPARE_SCALAR_FIELD(op); : COMPARE_NODE_FIELD(args); 0.00 : 5ec686: 31 d2 xor %edx,%edx 0.00 : 5ec688: e9 70 ea ff ff jmpq 5eb0fd : * Special-case opfuncid: it is allowable for it to differ if one node : * contains zero and the other doesn't. This just means that the one node : * isn't as far along in the parse/plan pipeline and hasn't had the : * opfuncid cache filled yet. : */ : if (a->opfuncid != b->opfuncid && 0.00 : 5ec68d: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ec690: 8b 56 08 mov 0x8(%rsi),%edx 0.00 : 5ec693: 39 d0 cmp %edx,%eax 0.00 : 5ec695: 74 0c je 5ec6a3 0.00 : 5ec697: 85 c0 test %eax,%eax 0.00 : 5ec699: 74 08 je 5ec6a3 0.00 : 5ec69b: 85 d2 test %edx,%edx 0.00 : 5ec69d: 0f 85 e0 fa ff ff jne 5ec183 : a->opfuncid != 0 && : b->opfuncid != 0) : return false; : : COMPARE_SCALAR_FIELD(opresulttype); 0.00 : 5ec6a3: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 5ec6a6: 41 3b 44 24 0c cmp 0xc(%r12),%eax 0.00 : 5ec6ab: 0f 85 d2 fa ff ff jne 5ec183 : COMPARE_SCALAR_FIELD(opretset); 0.00 : 5ec6b1: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5ec6b5: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5ec6ba: 0f 85 c3 fa ff ff jne 5ec183 : COMPARE_SCALAR_FIELD(opcollid); 0.00 : 5ec6c0: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5ec6c3: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5ec6c8: 0f 85 b5 fa ff ff jne 5ec183 : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ec6ce: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5ec6d1: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5ec6d6: 0f 85 a7 fa ff ff jne 5ec183 : COMPARE_NODE_FIELD(args); 0.00 : 5ec6dc: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ec6e1: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ec6e5: e8 e6 e9 ff ff callq 5eb0d0 0.00 : 5ec6ea: 84 c0 test %al,%al 0.00 : 5ec6ec: 0f 95 c2 setne %dl 0.00 : 5ec6ef: e9 09 ea ff ff jmpq 5eb0fd 0.00 : 5ec6f4: 0f 1f 40 00 nopl 0x0(%rax) : * Special-case opfuncid: it is allowable for it to differ if one node : * contains zero and the other doesn't. This just means that the one node : * isn't as far along in the parse/plan pipeline and hasn't had the : * opfuncid cache filled yet. : */ : if (a->opfuncid != b->opfuncid && 0.00 : 5ec6f8: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ec6fb: 8b 56 08 mov 0x8(%rsi),%edx 0.00 : 5ec6fe: 39 d0 cmp %edx,%eax 0.00 : 5ec700: 74 0c je 5ec70e 0.00 : 5ec702: 85 c0 test %eax,%eax 0.00 : 5ec704: 74 08 je 5ec70e 0.00 : 5ec706: 85 d2 test %edx,%edx 0.00 : 5ec708: 0f 85 62 fa ff ff jne 5ec170 : a->opfuncid != 0 && : b->opfuncid != 0) : return false; : : COMPARE_SCALAR_FIELD(opresulttype); 0.00 : 5ec70e: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 5ec711: 41 3b 44 24 0c cmp 0xc(%r12),%eax 0.00 : 5ec716: 0f 85 54 fa ff ff jne 5ec170 : COMPARE_SCALAR_FIELD(opretset); 0.00 : 5ec71c: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5ec720: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5ec725: 0f 85 45 fa ff ff jne 5ec170 : COMPARE_SCALAR_FIELD(opcollid); 0.00 : 5ec72b: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5ec72e: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5ec733: 0f 85 37 fa ff ff jne 5ec170 : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ec739: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5ec73c: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5ec741: 0f 85 29 fa ff ff jne 5ec170 : COMPARE_NODE_FIELD(args); 0.00 : 5ec747: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ec74c: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ec750: e8 7b e9 ff ff callq 5eb0d0 0.00 : 5ec755: 84 c0 test %al,%al 0.00 : 5ec757: 0f 95 c2 setne %dl 0.00 : 5ec75a: e9 9e e9 ff ff jmpq 5eb0fd 0.00 : 5ec75f: 90 nop : : static bool : _equalRefreshMatViewStmt(const RefreshMatViewStmt *a, const RefreshMatViewStmt *b) : { : COMPARE_SCALAR_FIELD(concurrent); : COMPARE_SCALAR_FIELD(skipData); 0.00 : 5ec760: 0f b6 47 05 movzbl 0x5(%rdi),%eax 0.00 : 5ec764: 3a 46 05 cmp 0x5(%rsi),%al 0.00 : 5ec767: 0f 85 82 ed ff ff jne 5eb4ef : COMPARE_NODE_FIELD(relation); 0.00 : 5ec76d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ec771: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ec775: e8 56 e9 ff ff callq 5eb0d0 0.00 : 5ec77a: 84 c0 test %al,%al 0.00 : 5ec77c: 0f 95 c2 setne %dl 0.00 : 5ec77f: e9 79 e9 ff ff jmpq 5eb0fd : : static bool : _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b) : { : COMPARE_SCALAR_FIELD(rtekind); : COMPARE_SCALAR_FIELD(relid); 0.00 : 5ec784: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ec787: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ec78a: 0f 85 a1 eb ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(relkind); 0.00 : 5ec790: 0f b6 47 0c movzbl 0xc(%rdi),%eax 0.00 : 5ec794: 3a 46 0c cmp 0xc(%rsi),%al 0.00 : 5ec797: 0f 85 94 eb ff ff jne 5eb331 : COMPARE_NODE_FIELD(subquery); 0.00 : 5ec79d: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ec7a1: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ec7a5: e8 26 e9 ff ff callq 5eb0d0 0.00 : 5ec7aa: 84 c0 test %al,%al 0.00 : 5ec7ac: 0f 84 7f eb ff ff je 5eb331 : COMPARE_SCALAR_FIELD(security_barrier); 0.00 : 5ec7b2: 0f b6 43 18 movzbl 0x18(%rbx),%eax 0.00 : 5ec7b6: 41 3a 44 24 18 cmp 0x18(%r12),%al 0.00 : 5ec7bb: 0f 85 70 eb ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(jointype); 0.00 : 5ec7c1: 8b 43 1c mov 0x1c(%rbx),%eax 0.00 : 5ec7c4: 41 3b 44 24 1c cmp 0x1c(%r12),%eax 0.00 : 5ec7c9: 0f 85 62 eb ff ff jne 5eb331 : COMPARE_NODE_FIELD(joinaliasvars); 0.00 : 5ec7cf: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ec7d4: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ec7d8: e8 f3 e8 ff ff callq 5eb0d0 0.00 : 5ec7dd: 84 c0 test %al,%al 0.00 : 5ec7df: 0f 84 4c eb ff ff je 5eb331 : COMPARE_NODE_FIELD(functions); 0.00 : 5ec7e5: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ec7ea: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ec7ee: e8 dd e8 ff ff callq 5eb0d0 0.00 : 5ec7f3: 84 c0 test %al,%al 0.00 : 5ec7f5: 0f 84 36 eb ff ff je 5eb331 : COMPARE_SCALAR_FIELD(funcordinality); 0.00 : 5ec7fb: 0f b6 43 30 movzbl 0x30(%rbx),%eax 0.00 : 5ec7ff: 41 3a 44 24 30 cmp 0x30(%r12),%al 0.00 : 5ec804: 0f 85 27 eb ff ff jne 5eb331 : COMPARE_NODE_FIELD(values_lists); 0.00 : 5ec80a: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5ec80f: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5ec813: e8 b8 e8 ff ff callq 5eb0d0 0.00 : 5ec818: 84 c0 test %al,%al 0.00 : 5ec81a: 0f 84 11 eb ff ff je 5eb331 : COMPARE_NODE_FIELD(values_collations); 0.00 : 5ec820: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 5ec825: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 5ec829: e8 a2 e8 ff ff callq 5eb0d0 0.00 : 5ec82e: 84 c0 test %al,%al 0.00 : 5ec830: 0f 84 fb ea ff ff je 5eb331 : COMPARE_STRING_FIELD(ctename); 0.00 : 5ec836: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 5ec83a: 48 85 ff test %rdi,%rdi 0.00 : 5ec83d: 0f 84 fc 1a 00 00 je 5ee33f 0.00 : 5ec843: 49 8b 74 24 48 mov 0x48(%r12),%rsi 0.00 : 5ec848: 48 85 f6 test %rsi,%rsi 0.00 : 5ec84b: 0f 84 f3 1a 00 00 je 5ee344 0.00 : 5ec851: e8 da d4 e7 ff callq 469d30 0.00 : 5ec856: 85 c0 test %eax,%eax 0.00 : 5ec858: 0f 95 c0 setne %al 0.00 : 5ec85b: 84 c0 test %al,%al 0.00 : 5ec85d: 0f 85 ce ea ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(ctelevelsup); 0.00 : 5ec863: 8b 43 50 mov 0x50(%rbx),%eax 0.00 : 5ec866: 41 3b 44 24 50 cmp 0x50(%r12),%eax 0.00 : 5ec86b: 0f 85 c0 ea ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(self_reference); 0.00 : 5ec871: 0f b6 43 54 movzbl 0x54(%rbx),%eax 0.00 : 5ec875: 41 3a 44 24 54 cmp 0x54(%r12),%al 0.00 : 5ec87a: 0f 85 b1 ea ff ff jne 5eb331 : COMPARE_NODE_FIELD(ctecoltypes); 0.00 : 5ec880: 49 8b 74 24 58 mov 0x58(%r12),%rsi 0.00 : 5ec885: 48 8b 7b 58 mov 0x58(%rbx),%rdi 0.00 : 5ec889: e8 42 e8 ff ff callq 5eb0d0 0.00 : 5ec88e: 84 c0 test %al,%al 0.00 : 5ec890: 0f 84 9b ea ff ff je 5eb331 : COMPARE_NODE_FIELD(ctecoltypmods); 0.00 : 5ec896: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 5ec89b: 48 8b 7b 60 mov 0x60(%rbx),%rdi 0.00 : 5ec89f: e8 2c e8 ff ff callq 5eb0d0 0.00 : 5ec8a4: 84 c0 test %al,%al 0.00 : 5ec8a6: 0f 84 85 ea ff ff je 5eb331 : COMPARE_NODE_FIELD(ctecolcollations); 0.00 : 5ec8ac: 49 8b 74 24 68 mov 0x68(%r12),%rsi 0.00 : 5ec8b1: 48 8b 7b 68 mov 0x68(%rbx),%rdi 0.00 : 5ec8b5: e8 16 e8 ff ff callq 5eb0d0 0.00 : 5ec8ba: 84 c0 test %al,%al 0.00 : 5ec8bc: 0f 84 6f ea ff ff je 5eb331 : COMPARE_NODE_FIELD(alias); 0.00 : 5ec8c2: 49 8b 74 24 70 mov 0x70(%r12),%rsi 0.00 : 5ec8c7: 48 8b 7b 70 mov 0x70(%rbx),%rdi 0.00 : 5ec8cb: e8 00 e8 ff ff callq 5eb0d0 0.00 : 5ec8d0: 84 c0 test %al,%al 0.00 : 5ec8d2: 0f 84 59 ea ff ff je 5eb331 : COMPARE_NODE_FIELD(eref); 0.00 : 5ec8d8: 49 8b 74 24 78 mov 0x78(%r12),%rsi 0.00 : 5ec8dd: 48 8b 7b 78 mov 0x78(%rbx),%rdi 0.00 : 5ec8e1: e8 ea e7 ff ff callq 5eb0d0 0.00 : 5ec8e6: 84 c0 test %al,%al 0.00 : 5ec8e8: 0f 84 43 ea ff ff je 5eb331 : COMPARE_SCALAR_FIELD(lateral); 0.00 : 5ec8ee: 0f b6 83 80 00 00 00 movzbl 0x80(%rbx),%eax 0.00 : 5ec8f5: 41 3a 84 24 80 00 00 cmp 0x80(%r12),%al 0.00 : 5ec8fc: 00 0.00 : 5ec8fd: 0f 85 2e ea ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(inh); 0.00 : 5ec903: 0f b6 83 81 00 00 00 movzbl 0x81(%rbx),%eax 0.00 : 5ec90a: 41 3a 84 24 81 00 00 cmp 0x81(%r12),%al 0.00 : 5ec911: 00 0.00 : 5ec912: 0f 85 19 ea ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(inFromCl); 0.00 : 5ec918: 0f b6 83 82 00 00 00 movzbl 0x82(%rbx),%eax 0.00 : 5ec91f: 41 3a 84 24 82 00 00 cmp 0x82(%r12),%al 0.00 : 5ec926: 00 0.00 : 5ec927: 0f 85 04 ea ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(requiredPerms); 0.00 : 5ec92d: 8b 83 84 00 00 00 mov 0x84(%rbx),%eax 0.00 : 5ec933: 41 3b 84 24 84 00 00 cmp 0x84(%r12),%eax 0.00 : 5ec93a: 00 0.00 : 5ec93b: 0f 85 f0 e9 ff ff jne 5eb331 : COMPARE_SCALAR_FIELD(checkAsUser); 0.00 : 5ec941: 8b 83 88 00 00 00 mov 0x88(%rbx),%eax 0.00 : 5ec947: 41 3b 84 24 88 00 00 cmp 0x88(%r12),%eax 0.00 : 5ec94e: 00 0.00 : 5ec94f: 0f 85 dc e9 ff ff jne 5eb331 : COMPARE_BITMAPSET_FIELD(selectedCols); 0.00 : 5ec955: 49 8b b4 24 90 00 00 mov 0x90(%r12),%rsi 0.00 : 5ec95c: 00 0.00 : 5ec95d: 48 8b bb 90 00 00 00 mov 0x90(%rbx),%rdi 0.00 : 5ec964: e8 b7 5c ff ff callq 5e2620 0.00 : 5ec969: 84 c0 test %al,%al 0.00 : 5ec96b: 0f 84 c0 e9 ff ff je 5eb331 : COMPARE_BITMAPSET_FIELD(modifiedCols); 0.00 : 5ec971: 49 8b b4 24 98 00 00 mov 0x98(%r12),%rsi 0.00 : 5ec978: 00 0.00 : 5ec979: 48 8b bb 98 00 00 00 mov 0x98(%rbx),%rdi 0.00 : 5ec980: e8 9b 5c ff ff callq 5e2620 0.00 : 5ec985: 84 c0 test %al,%al 0.00 : 5ec987: 0f 84 a4 e9 ff ff je 5eb331 : COMPARE_NODE_FIELD(securityQuals); 0.00 : 5ec98d: 49 8b b4 24 a0 00 00 mov 0xa0(%r12),%rsi 0.00 : 5ec994: 00 0.00 : 5ec995: 48 8b bb a0 00 00 00 mov 0xa0(%rbx),%rdi 0.00 : 5ec99c: e8 2f e7 ff ff callq 5eb0d0 0.00 : 5ec9a1: 84 c0 test %al,%al 0.00 : 5ec9a3: 0f 95 c2 setne %dl 0.00 : 5ec9a6: e9 52 e7 ff ff jmpq 5eb0fd 0.00 : 5ec9ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : static bool : _equalFunctionParameter(const FunctionParameter *a, const FunctionParameter *b) : { : COMPARE_STRING_FIELD(name); : COMPARE_NODE_FIELD(argType); 0.00 : 5ec9b0: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ec9b5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ec9b9: e8 12 e7 ff ff callq 5eb0d0 0.00 : 5ec9be: 84 c0 test %al,%al 0.00 : 5ec9c0: 0f 84 4d e8 ff ff je 5eb213 : COMPARE_SCALAR_FIELD(mode); 0.00 : 5ec9c6: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5ec9c9: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5ec9ce: 0f 85 3f e8 ff ff jne 5eb213 : COMPARE_NODE_FIELD(defexpr); 0.00 : 5ec9d4: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ec9d9: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ec9dd: e8 ee e6 ff ff callq 5eb0d0 0.00 : 5ec9e2: 84 c0 test %al,%al 0.00 : 5ec9e4: 0f 95 c2 setne %dl 0.00 : 5ec9e7: e9 11 e7 ff ff jmpq 5eb0fd 0.00 : 5ec9ec: 0f 1f 40 00 nopl 0x0(%rax) : : static bool : _equalGrantRoleStmt(const GrantRoleStmt *a, const GrantRoleStmt *b) : { : COMPARE_NODE_FIELD(granted_roles); : COMPARE_NODE_FIELD(grantee_roles); 0.00 : 5ec9f0: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ec9f5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ec9f9: e8 d2 e6 ff ff callq 5eb0d0 0.00 : 5ec9fe: 84 c0 test %al,%al 0.00 : 5eca00: 0f 84 ff f1 ff ff je 5ebc05 : COMPARE_SCALAR_FIELD(is_grant); 0.00 : 5eca06: 0f b6 43 18 movzbl 0x18(%rbx),%eax 0.00 : 5eca0a: 41 3a 44 24 18 cmp 0x18(%r12),%al 0.00 : 5eca0f: 0f 85 f0 f1 ff ff jne 5ebc05 : COMPARE_SCALAR_FIELD(admin_opt); 0.00 : 5eca15: 0f b6 43 19 movzbl 0x19(%rbx),%eax 0.00 : 5eca19: 41 3a 44 24 19 cmp 0x19(%r12),%al 0.00 : 5eca1e: 0f 85 e1 f1 ff ff jne 5ebc05 : COMPARE_STRING_FIELD(grantor); 0.00 : 5eca24: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5eca28: 48 85 ff test %rdi,%rdi 0.00 : 5eca2b: 0f 84 2a 19 00 00 je 5ee35b 0.00 : 5eca31: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5eca36: 48 85 f6 test %rsi,%rsi 0.00 : 5eca39: 0f 84 21 19 00 00 je 5ee360 0.00 : 5eca3f: e8 ec d2 e7 ff callq 469d30 0.00 : 5eca44: 85 c0 test %eax,%eax 0.00 : 5eca46: 0f 95 c0 setne %al 0.00 : 5eca49: 84 c0 test %al,%al 0.00 : 5eca4b: 0f 85 b4 f1 ff ff jne 5ebc05 0.00 : 5eca51: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 5eca54: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 5eca59: 0f 94 c2 sete %dl 0.00 : 5eca5c: e9 9c e6 ff ff jmpq 5eb0fd 0.00 : 5eca61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : static bool : _equalDropStmt(const DropStmt *a, const DropStmt *b) : { : COMPARE_NODE_FIELD(objects); : COMPARE_NODE_FIELD(arguments); 0.00 : 5eca68: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5eca6d: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5eca71: e8 5a e6 ff ff callq 5eb0d0 0.00 : 5eca76: 84 c0 test %al,%al 0.00 : 5eca78: 0f 84 4c f0 ff ff je 5ebaca : COMPARE_SCALAR_FIELD(removeType); 0.00 : 5eca7e: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5eca81: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5eca86: 0f 85 3e f0 ff ff jne 5ebaca : COMPARE_SCALAR_FIELD(behavior); 0.00 : 5eca8c: 8b 43 1c mov 0x1c(%rbx),%eax 0.00 : 5eca8f: 41 3b 44 24 1c cmp 0x1c(%r12),%eax 0.00 : 5eca94: 0f 85 30 f0 ff ff jne 5ebaca : COMPARE_SCALAR_FIELD(missing_ok); 0.00 : 5eca9a: 0f b6 43 20 movzbl 0x20(%rbx),%eax 0.00 : 5eca9e: 41 3a 44 24 20 cmp 0x20(%r12),%al 0.00 : 5ecaa3: 0f 85 21 f0 ff ff jne 5ebaca 0.00 : 5ecaa9: 0f b6 43 21 movzbl 0x21(%rbx),%eax 0.00 : 5ecaad: 41 3a 44 24 21 cmp 0x21(%r12),%al 0.00 : 5ecab2: 0f 94 c2 sete %dl 0.00 : 5ecab5: e9 43 e6 ff ff jmpq 5eb0fd 0.00 : 5ecaba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalDefineStmt(const DefineStmt *a, const DefineStmt *b) : { : COMPARE_SCALAR_FIELD(kind); : COMPARE_SCALAR_FIELD(oldstyle); 0.00 : 5ecac0: 0f b6 47 08 movzbl 0x8(%rdi),%eax 0.00 : 5ecac4: 3a 46 08 cmp 0x8(%rsi),%al 0.00 : 5ecac7: 0f 85 10 f0 ff ff jne 5ebadd : COMPARE_NODE_FIELD(defnames); 0.00 : 5ecacd: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ecad1: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ecad5: e8 f6 e5 ff ff callq 5eb0d0 0.00 : 5ecada: 84 c0 test %al,%al 0.00 : 5ecadc: 0f 84 fb ef ff ff je 5ebadd : COMPARE_NODE_FIELD(args); 0.00 : 5ecae2: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ecae7: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ecaeb: e8 e0 e5 ff ff callq 5eb0d0 0.00 : 5ecaf0: 84 c0 test %al,%al 0.00 : 5ecaf2: 0f 84 e5 ef ff ff je 5ebadd : COMPARE_NODE_FIELD(definition); 0.00 : 5ecaf8: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ecafd: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ecb01: e8 ca e5 ff ff callq 5eb0d0 0.00 : 5ecb06: 84 c0 test %al,%al 0.00 : 5ecb08: 0f 95 c2 setne %dl 0.00 : 5ecb0b: e9 ed e5 ff ff jmpq 5eb0fd : : static bool : _equalXmlExpr(const XmlExpr *a, const XmlExpr *b) : { : COMPARE_SCALAR_FIELD(op); : COMPARE_STRING_FIELD(name); 0.00 : 5ecb10: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ecb14: 48 85 ff test %rdi,%rdi 0.00 : 5ecb17: 0f 84 04 18 00 00 je 5ee321 0.00 : 5ecb1d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ecb21: 48 85 f6 test %rsi,%rsi 0.00 : 5ecb24: 0f 84 fb 17 00 00 je 5ee325 0.00 : 5ecb2a: e8 01 d2 e7 ff callq 469d30 0.00 : 5ecb2f: 85 c0 test %eax,%eax 0.00 : 5ecb31: 0f 95 c0 setne %al 0.00 : 5ecb34: 84 c0 test %al,%al 0.00 : 5ecb36: 0f 85 37 fb ff ff jne 5ec673 : COMPARE_NODE_FIELD(named_args); 0.00 : 5ecb3c: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ecb41: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ecb45: e8 86 e5 ff ff callq 5eb0d0 0.00 : 5ecb4a: 84 c0 test %al,%al 0.00 : 5ecb4c: 0f 84 21 fb ff ff je 5ec673 : COMPARE_NODE_FIELD(arg_names); 0.00 : 5ecb52: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ecb57: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ecb5b: e8 70 e5 ff ff callq 5eb0d0 0.00 : 5ecb60: 84 c0 test %al,%al 0.00 : 5ecb62: 0f 84 0b fb ff ff je 5ec673 : COMPARE_NODE_FIELD(args); 0.00 : 5ecb68: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ecb6d: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ecb71: e8 5a e5 ff ff callq 5eb0d0 0.00 : 5ecb76: 84 c0 test %al,%al 0.00 : 5ecb78: 0f 84 f5 fa ff ff je 5ec673 : COMPARE_SCALAR_FIELD(xmloption); 0.00 : 5ecb7e: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 5ecb81: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 5ecb86: 0f 85 e7 fa ff ff jne 5ec673 : COMPARE_SCALAR_FIELD(type); 0.00 : 5ecb8c: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 5ecb8f: 41 3b 44 24 2c cmp 0x2c(%r12),%eax 0.00 : 5ecb94: 0f 85 d9 fa ff ff jne 5ec673 0.00 : 5ecb9a: 8b 43 30 mov 0x30(%rbx),%eax 0.00 : 5ecb9d: 41 3b 44 24 30 cmp 0x30(%r12),%eax 0.00 : 5ecba2: 0f 94 c2 sete %dl 0.00 : 5ecba5: e9 53 e5 ff ff jmpq 5eb0fd 0.00 : 5ecbaa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalMinMaxExpr(const MinMaxExpr *a, const MinMaxExpr *b) : { : COMPARE_SCALAR_FIELD(minmaxtype); : COMPARE_SCALAR_FIELD(minmaxcollid); 0.00 : 5ecbb0: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ecbb3: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ecbb6: 0f 85 ca fa ff ff jne 5ec686 : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ecbbc: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ecbbf: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ecbc2: 0f 85 be fa ff ff jne 5ec686 : COMPARE_SCALAR_FIELD(op); 0.00 : 5ecbc8: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ecbcb: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ecbce: 0f 85 b2 fa ff ff jne 5ec686 : COMPARE_NODE_FIELD(args); 0.00 : 5ecbd4: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : 5ecbd8: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5ecbdc: e8 ef e4 ff ff callq 5eb0d0 0.00 : 5ecbe1: 84 c0 test %al,%al 0.00 : 5ecbe3: 0f 95 c2 setne %dl 0.00 : 5ecbe6: e9 12 e5 ff ff jmpq 5eb0fd 0.00 : 5ecbeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : static bool : _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) : { : COMPARE_STRING_FIELD(idxname); : COMPARE_NODE_FIELD(relation); 0.00 : 5ecbf0: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ecbf5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ecbf9: e8 d2 e4 ff ff callq 5eb0d0 0.00 : 5ecbfe: 84 c0 test %al,%al 0.00 : 5ecc00: 0f 84 11 ee ff ff je 5eba17 : COMPARE_STRING_FIELD(accessMethod); 0.00 : 5ecc06: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ecc0a: 48 85 ff test %rdi,%rdi 0.00 : 5ecc0d: 0f 84 a9 16 00 00 je 5ee2bc 0.00 : 5ecc13: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ecc18: 48 85 f6 test %rsi,%rsi 0.00 : 5ecc1b: 0f 84 a0 16 00 00 je 5ee2c1 0.00 : 5ecc21: e8 0a d1 e7 ff callq 469d30 0.00 : 5ecc26: 85 c0 test %eax,%eax 0.00 : 5ecc28: 0f 95 c0 setne %al 0.00 : 5ecc2b: 84 c0 test %al,%al 0.00 : 5ecc2d: 0f 85 e4 ed ff ff jne 5eba17 : COMPARE_STRING_FIELD(tableSpace); 0.00 : 5ecc33: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ecc37: 48 85 ff test %rdi,%rdi 0.00 : 5ecc3a: 0f 84 39 18 00 00 je 5ee479 0.00 : 5ecc40: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ecc45: 48 85 f6 test %rsi,%rsi 0.00 : 5ecc48: 0f 84 30 18 00 00 je 5ee47e 0.00 : 5ecc4e: e8 dd d0 e7 ff callq 469d30 0.00 : 5ecc53: 85 c0 test %eax,%eax 0.00 : 5ecc55: 0f 95 c0 setne %al 0.00 : 5ecc58: 84 c0 test %al,%al 0.00 : 5ecc5a: 0f 85 b7 ed ff ff jne 5eba17 : COMPARE_NODE_FIELD(indexParams); 0.00 : 5ecc60: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ecc65: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ecc69: e8 62 e4 ff ff callq 5eb0d0 0.00 : 5ecc6e: 84 c0 test %al,%al 0.00 : 5ecc70: 0f 84 a1 ed ff ff je 5eba17 : COMPARE_NODE_FIELD(options); 0.00 : 5ecc76: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ecc7b: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ecc7f: e8 4c e4 ff ff callq 5eb0d0 0.00 : 5ecc84: 84 c0 test %al,%al 0.00 : 5ecc86: 0f 84 8b ed ff ff je 5eba17 : COMPARE_NODE_FIELD(whereClause); 0.00 : 5ecc8c: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5ecc91: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5ecc95: e8 36 e4 ff ff callq 5eb0d0 0.00 : 5ecc9a: 84 c0 test %al,%al 0.00 : 5ecc9c: 0f 84 75 ed ff ff je 5eba17 : COMPARE_NODE_FIELD(excludeOpNames); 0.00 : 5ecca2: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 5ecca7: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 5eccab: e8 20 e4 ff ff callq 5eb0d0 0.00 : 5eccb0: 84 c0 test %al,%al 0.00 : 5eccb2: 0f 84 5f ed ff ff je 5eba17 : COMPARE_STRING_FIELD(idxcomment); 0.00 : 5eccb8: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 5eccbc: 48 85 ff test %rdi,%rdi 0.00 : 5eccbf: 0f 84 c4 17 00 00 je 5ee489 0.00 : 5eccc5: 49 8b 74 24 48 mov 0x48(%r12),%rsi 0.00 : 5eccca: 48 85 f6 test %rsi,%rsi 0.00 : 5ecccd: 0f 84 bb 17 00 00 je 5ee48e 0.00 : 5eccd3: e8 58 d0 e7 ff callq 469d30 0.00 : 5eccd8: 85 c0 test %eax,%eax 0.00 : 5eccda: 0f 95 c0 setne %al 0.00 : 5eccdd: 84 c0 test %al,%al 0.00 : 5eccdf: 0f 85 32 ed ff ff jne 5eba17 : COMPARE_SCALAR_FIELD(indexOid); 0.00 : 5ecce5: 8b 43 50 mov 0x50(%rbx),%eax 0.00 : 5ecce8: 41 3b 44 24 50 cmp 0x50(%r12),%eax 0.00 : 5ecced: 0f 85 24 ed ff ff jne 5eba17 : COMPARE_SCALAR_FIELD(oldNode); 0.00 : 5eccf3: 8b 43 54 mov 0x54(%rbx),%eax 0.00 : 5eccf6: 41 3b 44 24 54 cmp 0x54(%r12),%eax 0.00 : 5eccfb: 0f 85 16 ed ff ff jne 5eba17 : COMPARE_SCALAR_FIELD(unique); 0.00 : 5ecd01: 0f b6 43 58 movzbl 0x58(%rbx),%eax 0.00 : 5ecd05: 41 3a 44 24 58 cmp 0x58(%r12),%al 0.00 : 5ecd0a: 0f 85 07 ed ff ff jne 5eba17 : COMPARE_SCALAR_FIELD(primary); 0.00 : 5ecd10: 0f b6 43 59 movzbl 0x59(%rbx),%eax 0.00 : 5ecd14: 41 3a 44 24 59 cmp 0x59(%r12),%al 0.00 : 5ecd19: 0f 85 f8 ec ff ff jne 5eba17 : COMPARE_SCALAR_FIELD(isconstraint); 0.00 : 5ecd1f: 0f b6 43 5a movzbl 0x5a(%rbx),%eax 0.00 : 5ecd23: 41 3a 44 24 5a cmp 0x5a(%r12),%al 0.00 : 5ecd28: 0f 85 e9 ec ff ff jne 5eba17 : COMPARE_SCALAR_FIELD(deferrable); 0.00 : 5ecd2e: 0f b6 43 5b movzbl 0x5b(%rbx),%eax 0.00 : 5ecd32: 41 3a 44 24 5b cmp 0x5b(%r12),%al 0.00 : 5ecd37: 0f 85 da ec ff ff jne 5eba17 : COMPARE_SCALAR_FIELD(initdeferred); 0.00 : 5ecd3d: 0f b6 43 5c movzbl 0x5c(%rbx),%eax 0.00 : 5ecd41: 41 3a 44 24 5c cmp 0x5c(%r12),%al 0.00 : 5ecd46: 0f 85 cb ec ff ff jne 5eba17 0.00 : 5ecd4c: 0f b6 43 5d movzbl 0x5d(%rbx),%eax 0.00 : 5ecd50: 41 3a 44 24 5d cmp 0x5d(%r12),%al 0.00 : 5ecd55: 0f 94 c2 sete %dl 0.00 : 5ecd58: e9 a0 e3 ff ff jmpq 5eb0fd 0.00 : 5ecd5d: 0f 1f 00 nopl (%rax) : : static bool : _equalAppendRelInfo(const AppendRelInfo *a, const AppendRelInfo *b) : { : COMPARE_SCALAR_FIELD(parent_relid); : COMPARE_SCALAR_FIELD(child_relid); 0.00 : 5ecd60: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ecd63: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ecd66: 0f 85 75 f7 ff ff jne 5ec4e1 : COMPARE_SCALAR_FIELD(parent_reltype); 0.00 : 5ecd6c: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ecd6f: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ecd72: 0f 85 69 f7 ff ff jne 5ec4e1 : COMPARE_SCALAR_FIELD(child_reltype); 0.00 : 5ecd78: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ecd7b: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ecd7e: 0f 85 5d f7 ff ff jne 5ec4e1 : COMPARE_NODE_FIELD(translated_vars); 0.00 : 5ecd84: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : 5ecd88: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5ecd8c: e8 3f e3 ff ff callq 5eb0d0 0.00 : 5ecd91: 84 c0 test %al,%al 0.00 : 5ecd93: 0f 84 48 f7 ff ff je 5ec4e1 0.00 : 5ecd99: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 5ecd9c: 41 3b 44 24 20 cmp 0x20(%r12),%eax 0.00 : 5ecda1: 0f 94 c2 sete %dl 0.00 : 5ecda4: e9 54 e3 ff ff jmpq 5eb0fd 0.00 : 5ecda9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : static bool : _equalJoinExpr(const JoinExpr *a, const JoinExpr *b) : { : COMPARE_SCALAR_FIELD(jointype); : COMPARE_SCALAR_FIELD(isNatural); 0.00 : 5ecdb0: 0f b6 47 08 movzbl 0x8(%rdi),%eax 0.00 : 5ecdb4: 3a 46 08 cmp 0x8(%rsi),%al 0.00 : 5ecdb7: 0f 85 d4 f7 ff ff jne 5ec591 : COMPARE_NODE_FIELD(larg); 0.00 : 5ecdbd: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ecdc1: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ecdc5: e8 06 e3 ff ff callq 5eb0d0 0.00 : 5ecdca: 84 c0 test %al,%al 0.00 : 5ecdcc: 0f 84 bf f7 ff ff je 5ec591 : COMPARE_NODE_FIELD(rarg); 0.00 : 5ecdd2: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ecdd7: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ecddb: e8 f0 e2 ff ff callq 5eb0d0 0.00 : 5ecde0: 84 c0 test %al,%al 0.00 : 5ecde2: 0f 84 a9 f7 ff ff je 5ec591 : COMPARE_NODE_FIELD(usingClause); 0.00 : 5ecde8: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ecded: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ecdf1: e8 da e2 ff ff callq 5eb0d0 0.00 : 5ecdf6: 84 c0 test %al,%al 0.00 : 5ecdf8: 0f 84 93 f7 ff ff je 5ec591 : COMPARE_NODE_FIELD(quals); 0.00 : 5ecdfe: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ece03: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ece07: e8 c4 e2 ff ff callq 5eb0d0 0.00 : 5ece0c: 84 c0 test %al,%al 0.00 : 5ece0e: 0f 84 7d f7 ff ff je 5ec591 : COMPARE_NODE_FIELD(alias); 0.00 : 5ece14: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ece19: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ece1d: e8 ae e2 ff ff callq 5eb0d0 0.00 : 5ece22: 84 c0 test %al,%al 0.00 : 5ece24: 0f 84 67 f7 ff ff je 5ec591 0.00 : 5ece2a: 8b 43 38 mov 0x38(%rbx),%eax 0.00 : 5ece2d: 41 3b 44 24 38 cmp 0x38(%r12),%eax 0.00 : 5ece32: 0f 94 c2 sete %dl 0.00 : 5ece35: e9 c3 e2 ff ff jmpq 5eb0fd 0.00 : 5ece3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Special-case opfuncid: it is allowable for it to differ if one node : * contains zero and the other doesn't. This just means that the one node : * isn't as far along in the parse/plan pipeline and hasn't had the : * opfuncid cache filled yet. : */ : if (a->opfuncid != b->opfuncid && 0.00 : 5ece40: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ece43: 8b 56 08 mov 0x8(%rsi),%edx 0.00 : 5ece46: 39 d0 cmp %edx,%eax 0.00 : 5ece48: 74 0c je 5ece56 0.00 : 5ece4a: 85 c0 test %eax,%eax 0.00 : 5ece4c: 74 08 je 5ece56 0.00 : 5ece4e: 85 d2 test %edx,%edx 0.00 : 5ece50: 0f 85 07 f3 ff ff jne 5ec15d : a->opfuncid != 0 && : b->opfuncid != 0) : return false; : : COMPARE_SCALAR_FIELD(useOr); 0.00 : 5ece56: 0f b6 43 0c movzbl 0xc(%rbx),%eax 0.00 : 5ece5a: 41 3a 44 24 0c cmp 0xc(%r12),%al 0.00 : 5ece5f: 90 nop 0.00 : 5ece60: 0f 85 f7 f2 ff ff jne 5ec15d : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ece66: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 5ece69: 41 3b 44 24 10 cmp 0x10(%r12),%eax 0.00 : 5ece6e: 0f 85 e9 f2 ff ff jne 5ec15d : COMPARE_NODE_FIELD(args); 0.00 : 5ece74: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ece79: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ece7d: e8 4e e2 ff ff callq 5eb0d0 0.00 : 5ece82: 84 c0 test %al,%al 0.00 : 5ece84: 0f 95 c2 setne %dl 0.00 : 5ece87: e9 71 e2 ff ff jmpq 5eb0fd 0.00 : 5ece8c: 0f 1f 40 00 nopl 0x0(%rax) : : static bool : _equalSubLink(const SubLink *a, const SubLink *b) : { : COMPARE_SCALAR_FIELD(subLinkType); : COMPARE_SCALAR_FIELD(subLinkId); 0.00 : 5ece90: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ece93: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ece96: 0f 85 89 f2 ff ff jne 5ec125 : COMPARE_NODE_FIELD(testexpr); 0.00 : 5ece9c: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ecea0: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ecea4: e8 27 e2 ff ff callq 5eb0d0 0.00 : 5ecea9: 84 c0 test %al,%al 0.00 : 5eceab: 0f 84 74 f2 ff ff je 5ec125 : COMPARE_NODE_FIELD(operName); 0.00 : 5eceb1: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5eceb6: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5eceba: e8 11 e2 ff ff callq 5eb0d0 0.00 : 5ecebf: 84 c0 test %al,%al 0.00 : 5ecec1: 0f 84 5e f2 ff ff je 5ec125 : COMPARE_NODE_FIELD(subselect); 0.00 : 5ecec7: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ececc: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5eced0: e8 fb e1 ff ff callq 5eb0d0 0.00 : 5eced5: 84 c0 test %al,%al 0.00 : 5eced7: 0f 95 c2 setne %dl 0.00 : 5eceda: e9 1e e2 ff ff jmpq 5eb0fd 0.00 : 5ecedf: 90 nop : : static bool : _equalFieldStore(const FieldStore *a, const FieldStore *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_NODE_FIELD(newvals); 0.00 : 5ecee0: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ecee5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ecee9: e8 e2 e1 ff ff callq 5eb0d0 0.00 : 5eceee: 84 c0 test %al,%al 0.00 : 5ecef0: 0f 84 ca f1 ff ff je 5ec0c0 : COMPARE_NODE_FIELD(fieldnums); 0.00 : 5ecef6: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ecefb: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5eceff: e8 cc e1 ff ff callq 5eb0d0 0.00 : 5ecf04: 84 c0 test %al,%al 0.00 : 5ecf06: 0f 84 b4 f1 ff ff je 5ec0c0 0.00 : 5ecf0c: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 5ecf0f: 41 3b 44 24 20 cmp 0x20(%r12),%eax 0.00 : 5ecf14: 0f 94 c2 sete %dl 0.00 : 5ecf17: e9 e1 e1 ff ff jmpq 5eb0fd : * Special-case opfuncid: it is allowable for it to differ if one node : * contains zero and the other doesn't. This just means that the one node : * isn't as far along in the parse/plan pipeline and hasn't had the : * opfuncid cache filled yet. : */ : if (a->opfuncid != b->opfuncid && 0.00 : 5ecf1c: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ecf1f: 8b 56 08 mov 0x8(%rsi),%edx 0.00 : 5ecf22: 39 d0 cmp %edx,%eax 0.00 : 5ecf24: 74 0c je 5ecf32 0.00 : 5ecf26: 85 c0 test %eax,%eax 0.00 : 5ecf28: 74 08 je 5ecf32 0.00 : 5ecf2a: 85 d2 test %edx,%edx 0.00 : 5ecf2c: 0f 85 64 f2 ff ff jne 5ec196 : a->opfuncid != 0 && : b->opfuncid != 0) : return false; : : COMPARE_SCALAR_FIELD(opresulttype); 0.00 : 5ecf32: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 5ecf35: 41 3b 44 24 0c cmp 0xc(%r12),%eax 0.00 : 5ecf3a: 0f 85 56 f2 ff ff jne 5ec196 : COMPARE_SCALAR_FIELD(opretset); 0.00 : 5ecf40: 0f b6 43 10 movzbl 0x10(%rbx),%eax 0.00 : 5ecf44: 41 3a 44 24 10 cmp 0x10(%r12),%al 0.00 : 5ecf49: 0f 85 47 f2 ff ff jne 5ec196 : COMPARE_SCALAR_FIELD(opcollid); 0.00 : 5ecf4f: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5ecf52: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5ecf57: 0f 85 39 f2 ff ff jne 5ec196 : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ecf5d: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5ecf60: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5ecf65: 0f 85 2b f2 ff ff jne 5ec196 : COMPARE_NODE_FIELD(args); 0.00 : 5ecf6b: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ecf70: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ecf74: e8 57 e1 ff ff callq 5eb0d0 0.00 : 5ecf79: 84 c0 test %al,%al 0.00 : 5ecf7b: 0f 95 c2 setne %dl 0.00 : 5ecf7e: e9 7a e1 ff ff jmpq 5eb0fd 0.00 : 5ecf83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : static bool : _equalCaseExpr(const CaseExpr *a, const CaseExpr *b) : { : COMPARE_SCALAR_FIELD(casetype); : COMPARE_SCALAR_FIELD(casecollid); 0.00 : 5ecf88: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ecf8b: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ecf8e: 0f 85 4e f0 ff ff jne 5ebfe2 : COMPARE_NODE_FIELD(arg); 0.00 : 5ecf94: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ecf98: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ecf9c: e8 2f e1 ff ff callq 5eb0d0 0.00 : 5ecfa1: 84 c0 test %al,%al 0.00 : 5ecfa3: 0f 84 39 f0 ff ff je 5ebfe2 : COMPARE_NODE_FIELD(args); 0.00 : 5ecfa9: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ecfae: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ecfb2: e8 19 e1 ff ff callq 5eb0d0 0.00 : 5ecfb7: 84 c0 test %al,%al 0.00 : 5ecfb9: 0f 84 23 f0 ff ff je 5ebfe2 : COMPARE_NODE_FIELD(defresult); 0.00 : 5ecfbf: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ecfc4: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ecfc8: e8 03 e1 ff ff callq 5eb0d0 0.00 : 5ecfcd: 84 c0 test %al,%al 0.00 : 5ecfcf: 0f 95 c2 setne %dl 0.00 : 5ecfd2: e9 26 e1 ff ff jmpq 5eb0fd 0.00 : 5ecfd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ecfde: 00 00 : : static bool : _equalArrayExpr(const ArrayExpr *a, const ArrayExpr *b) : { : COMPARE_SCALAR_FIELD(array_typeid); : COMPARE_SCALAR_FIELD(array_collid); 0.00 : 5ecfe0: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ecfe3: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ecfe6: 0f 85 8e ef ff ff jne 5ebf7a : COMPARE_SCALAR_FIELD(element_typeid); 0.00 : 5ecfec: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ecfef: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ecff2: 0f 85 82 ef ff ff jne 5ebf7a : COMPARE_NODE_FIELD(elements); 0.00 : 5ecff8: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ecffc: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ed000: e8 cb e0 ff ff callq 5eb0d0 0.00 : 5ed005: 84 c0 test %al,%al 0.00 : 5ed007: 0f 84 6d ef ff ff je 5ebf7a 0.00 : 5ed00d: 0f b6 43 18 movzbl 0x18(%rbx),%eax 0.00 : 5ed011: 41 3a 44 24 18 cmp 0x18(%r12),%al 0.00 : 5ed016: 0f 94 c2 sete %dl 0.00 : 5ed019: e9 df e0 ff ff jmpq 5eb0fd 0.00 : 5ed01e: 66 90 xchg %ax,%ax : : static bool : _equalCoalesceExpr(const CoalesceExpr *a, const CoalesceExpr *b) : { : COMPARE_SCALAR_FIELD(coalescetype); : COMPARE_SCALAR_FIELD(coalescecollid); 0.00 : 5ed020: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ed023: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ed026: 0f 85 01 ef ff ff jne 5ebf2d : COMPARE_NODE_FIELD(args); 0.00 : 5ed02c: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ed030: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ed034: e8 97 e0 ff ff callq 5eb0d0 0.00 : 5ed039: 84 c0 test %al,%al 0.00 : 5ed03b: 0f 95 c2 setne %dl 0.00 : 5ed03e: e9 ba e0 ff ff jmpq 5eb0fd : : static bool : _equalSpecialJoinInfo(const SpecialJoinInfo *a, const SpecialJoinInfo *b) : { : COMPARE_BITMAPSET_FIELD(min_lefthand); : COMPARE_BITMAPSET_FIELD(min_righthand); 0.00 : 5ed043: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ed048: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ed04c: e8 cf 55 ff ff callq 5e2620 0.00 : 5ed051: 84 c0 test %al,%al 0.00 : 5ed053: 0f 84 c1 ee ff ff je 5ebf1a : COMPARE_BITMAPSET_FIELD(syn_lefthand); 0.00 : 5ed059: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ed05e: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ed062: e8 b9 55 ff ff callq 5e2620 0.00 : 5ed067: 84 c0 test %al,%al 0.00 : 5ed069: 0f 84 ab ee ff ff je 5ebf1a : COMPARE_BITMAPSET_FIELD(syn_righthand); 0.00 : 5ed06f: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed074: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed078: e8 a3 55 ff ff callq 5e2620 0.00 : 5ed07d: 84 c0 test %al,%al 0.00 : 5ed07f: 0f 84 95 ee ff ff je 5ebf1a : COMPARE_SCALAR_FIELD(jointype); 0.00 : 5ed085: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 5ed088: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 5ed08d: 0f 85 87 ee ff ff jne 5ebf1a : COMPARE_SCALAR_FIELD(lhs_strict); 0.00 : 5ed093: 0f b6 43 2c movzbl 0x2c(%rbx),%eax 0.00 : 5ed097: 41 3a 44 24 2c cmp 0x2c(%r12),%al 0.00 : 5ed09c: 0f 85 78 ee ff ff jne 5ebf1a : COMPARE_SCALAR_FIELD(delay_upper_joins); 0.00 : 5ed0a2: 0f b6 43 2d movzbl 0x2d(%rbx),%eax 0.00 : 5ed0a6: 41 3a 44 24 2d cmp 0x2d(%r12),%al 0.00 : 5ed0ab: 0f 85 69 ee ff ff jne 5ebf1a : COMPARE_NODE_FIELD(join_quals); 0.00 : 5ed0b1: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed0b6: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed0ba: e8 11 e0 ff ff callq 5eb0d0 0.00 : 5ed0bf: 84 c0 test %al,%al 0.00 : 5ed0c1: 0f 95 c2 setne %dl 0.00 : 5ed0c4: e9 34 e0 ff ff jmpq 5eb0fd 0.00 : 5ed0c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : static bool : _equalUpdateStmt(const UpdateStmt *a, const UpdateStmt *b) : { : COMPARE_NODE_FIELD(relation); : COMPARE_NODE_FIELD(targetList); 0.00 : 5ed0d0: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ed0d5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ed0d9: e8 f2 df ff ff callq 5eb0d0 0.00 : 5ed0de: 84 c0 test %al,%al 0.00 : 5ed0e0: 0f 84 3c ed ff ff je 5ebe22 : COMPARE_NODE_FIELD(whereClause); 0.00 : 5ed0e6: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ed0eb: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ed0ef: e8 dc df ff ff callq 5eb0d0 0.00 : 5ed0f4: 84 c0 test %al,%al 0.00 : 5ed0f6: 0f 84 26 ed ff ff je 5ebe22 : COMPARE_NODE_FIELD(fromClause); 0.00 : 5ed0fc: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed101: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed105: e8 c6 df ff ff callq 5eb0d0 0.00 : 5ed10a: 84 c0 test %al,%al 0.00 : 5ed10c: 0f 84 10 ed ff ff je 5ebe22 : COMPARE_NODE_FIELD(returningList); 0.00 : 5ed112: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ed117: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ed11b: e8 b0 df ff ff callq 5eb0d0 0.00 : 5ed120: 84 c0 test %al,%al 0.00 : 5ed122: 0f 84 fa ec ff ff je 5ebe22 : COMPARE_NODE_FIELD(withClause); 0.00 : 5ed128: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed12d: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed131: e8 9a df ff ff callq 5eb0d0 0.00 : 5ed136: 84 c0 test %al,%al 0.00 : 5ed138: 0f 95 c2 setne %dl 0.00 : 5ed13b: e9 bd df ff ff jmpq 5eb0fd : : static bool : _equalSelectStmt(const SelectStmt *a, const SelectStmt *b) : { : COMPARE_NODE_FIELD(distinctClause); : COMPARE_NODE_FIELD(intoClause); 0.00 : 5ed140: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ed145: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ed149: e8 82 df ff ff callq 5eb0d0 0.00 : 5ed14e: 84 c0 test %al,%al 0.00 : 5ed150: 0f 84 b0 ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(targetList); 0.00 : 5ed156: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ed15b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ed15f: e8 6c df ff ff callq 5eb0d0 0.00 : 5ed164: 84 c0 test %al,%al 0.00 : 5ed166: 0f 84 9a ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(fromClause); 0.00 : 5ed16c: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed171: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed175: e8 56 df ff ff callq 5eb0d0 0.00 : 5ed17a: 84 c0 test %al,%al 0.00 : 5ed17c: 0f 84 84 ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(whereClause); 0.00 : 5ed182: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ed187: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ed18b: e8 40 df ff ff callq 5eb0d0 0.00 : 5ed190: 84 c0 test %al,%al 0.00 : 5ed192: 0f 84 6e ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(groupClause); 0.00 : 5ed198: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed19d: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed1a1: e8 2a df ff ff callq 5eb0d0 0.00 : 5ed1a6: 84 c0 test %al,%al 0.00 : 5ed1a8: 0f 84 58 ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(havingClause); 0.00 : 5ed1ae: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5ed1b3: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5ed1b7: e8 14 df ff ff callq 5eb0d0 0.00 : 5ed1bc: 84 c0 test %al,%al 0.00 : 5ed1be: 0f 84 42 ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(windowClause); 0.00 : 5ed1c4: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 5ed1c9: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 5ed1cd: e8 fe de ff ff callq 5eb0d0 0.00 : 5ed1d2: 84 c0 test %al,%al 0.00 : 5ed1d4: 0f 84 2c ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(valuesLists); 0.00 : 5ed1da: 49 8b 74 24 48 mov 0x48(%r12),%rsi 0.00 : 5ed1df: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 5ed1e3: e8 e8 de ff ff callq 5eb0d0 0.00 : 5ed1e8: 84 c0 test %al,%al 0.00 : 5ed1ea: 0f 84 16 ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(sortClause); 0.00 : 5ed1f0: 49 8b 74 24 50 mov 0x50(%r12),%rsi 0.00 : 5ed1f5: 48 8b 7b 50 mov 0x50(%rbx),%rdi 0.00 : 5ed1f9: e8 d2 de ff ff callq 5eb0d0 0.00 : 5ed1fe: 84 c0 test %al,%al 0.00 : 5ed200: 0f 84 00 ec ff ff je 5ebe06 : COMPARE_NODE_FIELD(limitOffset); 0.00 : 5ed206: 49 8b 74 24 58 mov 0x58(%r12),%rsi 0.00 : 5ed20b: 48 8b 7b 58 mov 0x58(%rbx),%rdi 0.00 : 5ed20f: e8 bc de ff ff callq 5eb0d0 0.00 : 5ed214: 84 c0 test %al,%al 0.00 : 5ed216: 0f 84 ea eb ff ff je 5ebe06 : COMPARE_NODE_FIELD(limitCount); 0.00 : 5ed21c: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 5ed221: 48 8b 7b 60 mov 0x60(%rbx),%rdi 0.00 : 5ed225: e8 a6 de ff ff callq 5eb0d0 0.00 : 5ed22a: 84 c0 test %al,%al 0.00 : 5ed22c: 0f 84 d4 eb ff ff je 5ebe06 : COMPARE_NODE_FIELD(lockingClause); 0.00 : 5ed232: 49 8b 74 24 68 mov 0x68(%r12),%rsi 0.00 : 5ed237: 48 8b 7b 68 mov 0x68(%rbx),%rdi 0.00 : 5ed23b: e8 90 de ff ff callq 5eb0d0 0.00 : 5ed240: 84 c0 test %al,%al 0.00 : 5ed242: 0f 84 be eb ff ff je 5ebe06 : COMPARE_NODE_FIELD(withClause); 0.00 : 5ed248: 49 8b 74 24 70 mov 0x70(%r12),%rsi 0.00 : 5ed24d: 48 8b 7b 70 mov 0x70(%rbx),%rdi 0.00 : 5ed251: e8 7a de ff ff callq 5eb0d0 0.00 : 5ed256: 84 c0 test %al,%al 0.00 : 5ed258: 0f 84 a8 eb ff ff je 5ebe06 : COMPARE_SCALAR_FIELD(op); 0.00 : 5ed25e: 8b 43 78 mov 0x78(%rbx),%eax 0.00 : 5ed261: 41 3b 44 24 78 cmp 0x78(%r12),%eax 0.00 : 5ed266: 0f 85 9a eb ff ff jne 5ebe06 : COMPARE_SCALAR_FIELD(all); 0.00 : 5ed26c: 0f b6 43 7c movzbl 0x7c(%rbx),%eax 0.00 : 5ed270: 41 3a 44 24 7c cmp 0x7c(%r12),%al 0.00 : 5ed275: 0f 85 8b eb ff ff jne 5ebe06 : COMPARE_NODE_FIELD(larg); 0.00 : 5ed27b: 49 8b b4 24 80 00 00 mov 0x80(%r12),%rsi 0.00 : 5ed282: 00 0.00 : 5ed283: 48 8b bb 80 00 00 00 mov 0x80(%rbx),%rdi 0.00 : 5ed28a: e8 41 de ff ff callq 5eb0d0 0.00 : 5ed28f: 84 c0 test %al,%al 0.00 : 5ed291: 0f 84 6f eb ff ff je 5ebe06 : COMPARE_NODE_FIELD(rarg); 0.00 : 5ed297: 49 8b b4 24 88 00 00 mov 0x88(%r12),%rsi 0.00 : 5ed29e: 00 0.00 : 5ed29f: 48 8b bb 88 00 00 00 mov 0x88(%rbx),%rdi 0.00 : 5ed2a6: e8 25 de ff ff callq 5eb0d0 0.00 : 5ed2ab: 84 c0 test %al,%al 0.00 : 5ed2ad: 0f 95 c2 setne %dl 0.00 : 5ed2b0: e9 48 de ff ff jmpq 5eb0fd 0.00 : 5ed2b5: 0f 1f 00 nopl (%rax) : : static bool : _equalAlterTableStmt(const AlterTableStmt *a, const AlterTableStmt *b) : { : COMPARE_NODE_FIELD(relation); : COMPARE_NODE_FIELD(cmds); 0.00 : 5ed2b8: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ed2bd: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ed2c1: e8 0a de ff ff callq 5eb0d0 0.00 : 5ed2c6: 84 c0 test %al,%al 0.00 : 5ed2c8: 0f 84 1c eb ff ff je 5ebdea : COMPARE_SCALAR_FIELD(relkind); 0.00 : 5ed2ce: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5ed2d1: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5ed2d6: 0f 85 0e eb ff ff jne 5ebdea 0.00 : 5ed2dc: 0f b6 43 1c movzbl 0x1c(%rbx),%eax 0.00 : 5ed2e0: 41 3a 44 24 1c cmp 0x1c(%r12),%al 0.00 : 5ed2e5: 0f 94 c2 sete %dl 0.00 : 5ed2e8: e9 10 de ff ff jmpq 5eb0fd : : static bool : _equalAlterTableCmd(const AlterTableCmd *a, const AlterTableCmd *b) : { : COMPARE_SCALAR_FIELD(subtype); : COMPARE_STRING_FIELD(name); 0.00 : 5ed2ed: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ed2f1: 48 85 ff test %rdi,%rdi 0.00 : 5ed2f4: 0f 84 b3 0f 00 00 je 5ee2ad 0.00 : 5ed2fa: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ed2fe: 48 85 f6 test %rsi,%rsi 0.00 : 5ed301: 0f 84 aa 0f 00 00 je 5ee2b1 0.00 : 5ed307: e8 24 ca e7 ff callq 469d30 0.00 : 5ed30c: 85 c0 test %eax,%eax 0.00 : 5ed30e: 0f 95 c0 setne %al 0.00 : 5ed311: 84 c0 test %al,%al 0.00 : 5ed313: 0f 85 b3 ea ff ff jne 5ebdcc : COMPARE_NODE_FIELD(def); 0.00 : 5ed319: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ed31e: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ed322: e8 a9 dd ff ff callq 5eb0d0 0.00 : 5ed327: 84 c0 test %al,%al 0.00 : 5ed329: 0f 84 9d ea ff ff je 5ebdcc : COMPARE_SCALAR_FIELD(behavior); 0.00 : 5ed32f: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5ed332: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5ed337: 0f 85 8f ea ff ff jne 5ebdcc 0.00 : 5ed33d: 0f b6 43 1c movzbl 0x1c(%rbx),%eax 0.00 : 5ed341: 41 3a 44 24 1c cmp 0x1c(%r12),%al 0.00 : 5ed346: 0f 94 c2 sete %dl 0.00 : 5ed349: e9 af dd ff ff jmpq 5eb0fd 0.00 : 5ed34e: 66 90 xchg %ax,%ax : : static bool : _equalSetOperationStmt(const SetOperationStmt *a, const SetOperationStmt *b) : { : COMPARE_SCALAR_FIELD(op); : COMPARE_SCALAR_FIELD(all); 0.00 : 5ed350: 0f b6 47 08 movzbl 0x8(%rdi),%eax 0.00 : 5ed354: 3a 46 08 cmp 0x8(%rsi),%al 0.00 : 5ed357: 0f 85 48 ea ff ff jne 5ebda5 : COMPARE_NODE_FIELD(larg); 0.00 : 5ed35d: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ed361: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ed365: e8 66 dd ff ff callq 5eb0d0 0.00 : 5ed36a: 84 c0 test %al,%al 0.00 : 5ed36c: 0f 84 33 ea ff ff je 5ebda5 : COMPARE_NODE_FIELD(rarg); 0.00 : 5ed372: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ed377: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ed37b: e8 50 dd ff ff callq 5eb0d0 0.00 : 5ed380: 84 c0 test %al,%al 0.00 : 5ed382: 0f 84 1d ea ff ff je 5ebda5 : COMPARE_NODE_FIELD(colTypes); 0.00 : 5ed388: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed38d: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed391: e8 3a dd ff ff callq 5eb0d0 0.00 : 5ed396: 84 c0 test %al,%al 0.00 : 5ed398: 0f 84 07 ea ff ff je 5ebda5 : COMPARE_NODE_FIELD(colTypmods); 0.00 : 5ed39e: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ed3a3: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ed3a7: e8 24 dd ff ff callq 5eb0d0 0.00 : 5ed3ac: 84 c0 test %al,%al 0.00 : 5ed3ae: 0f 84 f1 e9 ff ff je 5ebda5 : COMPARE_NODE_FIELD(colCollations); 0.00 : 5ed3b4: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed3b9: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed3bd: e8 0e dd ff ff callq 5eb0d0 0.00 : 5ed3c2: 84 c0 test %al,%al 0.00 : 5ed3c4: 0f 84 db e9 ff ff je 5ebda5 : COMPARE_NODE_FIELD(groupClauses); 0.00 : 5ed3ca: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5ed3cf: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5ed3d3: e8 f8 dc ff ff callq 5eb0d0 0.00 : 5ed3d8: 84 c0 test %al,%al 0.00 : 5ed3da: 0f 95 c2 setne %dl 0.00 : 5ed3dd: e9 1b dd ff ff jmpq 5eb0fd 0.00 : 5ed3e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalGrantStmt(const GrantStmt *a, const GrantStmt *b) : { : COMPARE_SCALAR_FIELD(is_grant); : COMPARE_SCALAR_FIELD(targtype); 0.00 : 5ed3e8: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ed3eb: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ed3ee: 0f 85 9e e9 ff ff jne 5ebd92 : COMPARE_SCALAR_FIELD(objtype); 0.00 : 5ed3f4: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ed3f7: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ed3fa: 0f 85 92 e9 ff ff jne 5ebd92 : COMPARE_NODE_FIELD(objects); 0.00 : 5ed400: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ed404: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 5ed408: e8 c3 dc ff ff callq 5eb0d0 0.00 : 5ed40d: 84 c0 test %al,%al 0.00 : 5ed40f: 0f 84 7d e9 ff ff je 5ebd92 : COMPARE_NODE_FIELD(privileges); 0.00 : 5ed415: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ed41a: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ed41e: e8 ad dc ff ff callq 5eb0d0 0.00 : 5ed423: 84 c0 test %al,%al 0.00 : 5ed425: 0f 84 67 e9 ff ff je 5ebd92 : COMPARE_NODE_FIELD(grantees); 0.00 : 5ed42b: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed430: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed434: e8 97 dc ff ff callq 5eb0d0 0.00 : 5ed439: 84 c0 test %al,%al 0.00 : 5ed43b: 0f 84 51 e9 ff ff je 5ebd92 : COMPARE_SCALAR_FIELD(grant_option); 0.00 : 5ed441: 0f b6 43 28 movzbl 0x28(%rbx),%eax 0.00 : 5ed445: 41 3a 44 24 28 cmp 0x28(%r12),%al 0.00 : 5ed44a: 0f 85 42 e9 ff ff jne 5ebd92 0.00 : 5ed450: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 5ed453: 41 3b 44 24 2c cmp 0x2c(%r12),%eax 0.00 : 5ed458: 0f 94 c2 sete %dl 0.00 : 5ed45b: e9 9d dc ff ff jmpq 5eb0fd : : static bool : _equalCopyStmt(const CopyStmt *a, const CopyStmt *b) : { : COMPARE_NODE_FIELD(relation); : COMPARE_NODE_FIELD(query); 0.00 : 5ed460: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ed465: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ed469: e8 62 dc ff ff callq 5eb0d0 0.00 : 5ed46e: 84 c0 test %al,%al 0.00 : 5ed470: 0f 84 ba e7 ff ff je 5ebc30 : COMPARE_NODE_FIELD(attlist); 0.00 : 5ed476: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ed47b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ed47f: e8 4c dc ff ff callq 5eb0d0 0.00 : 5ed484: 84 c0 test %al,%al 0.00 : 5ed486: 0f 84 a4 e7 ff ff je 5ebc30 : COMPARE_SCALAR_FIELD(is_from); 0.00 : 5ed48c: 0f b6 43 20 movzbl 0x20(%rbx),%eax 0.00 : 5ed490: 41 3a 44 24 20 cmp 0x20(%r12),%al 0.00 : 5ed495: 0f 85 95 e7 ff ff jne 5ebc30 : COMPARE_SCALAR_FIELD(is_program); 0.00 : 5ed49b: 0f b6 43 21 movzbl 0x21(%rbx),%eax 0.00 : 5ed49f: 41 3a 44 24 21 cmp 0x21(%r12),%al 0.00 : 5ed4a4: 0f 85 86 e7 ff ff jne 5ebc30 : COMPARE_STRING_FIELD(filename); 0.00 : 5ed4aa: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ed4ae: 48 85 ff test %rdi,%rdi 0.00 : 5ed4b1: 0f 84 22 10 00 00 je 5ee4d9 0.00 : 5ed4b7: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ed4bc: 48 85 f6 test %rsi,%rsi 0.00 : 5ed4bf: 0f 84 19 10 00 00 je 5ee4de 0.00 : 5ed4c5: e8 66 c8 e7 ff callq 469d30 0.00 : 5ed4ca: 85 c0 test %eax,%eax 0.00 : 5ed4cc: 0f 95 c0 setne %al 0.00 : 5ed4cf: 84 c0 test %al,%al 0.00 : 5ed4d1: 0f 85 59 e7 ff ff jne 5ebc30 : COMPARE_NODE_FIELD(options); 0.00 : 5ed4d7: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed4dc: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed4e0: e8 eb db ff ff callq 5eb0d0 0.00 : 5ed4e5: 84 c0 test %al,%al 0.00 : 5ed4e7: 0f 95 c2 setne %dl 0.00 : 5ed4ea: e9 0e dc ff ff jmpq 5eb0fd 0.00 : 5ed4ef: 90 nop : /* : * Try to reject by simple scalar checks before grovelling through all the : * list elements... : */ : COMPARE_SCALAR_FIELD(type); : COMPARE_SCALAR_FIELD(length); 0.00 : 5ed4f0: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5ed4f3: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 5ed4f6: 0f 85 83 e9 ff ff jne 5ebe7f : : /* : * We place the switch outside the loop for the sake of efficiency; this : * may not be worth doing... : */ : switch (a->type) 0.00 : 5ed4fc: 81 fa 91 02 00 00 cmp $0x291,%edx 0.00 : 5ed502: 0f 84 d6 0e 00 00 je 5ee3de 0.00 : 5ed508: 81 fa 92 02 00 00 cmp $0x292,%edx 0.00 : 5ed50e: 66 90 xchg %ax,%ax 0.00 : 5ed510: 0f 84 8c 0e 00 00 je 5ee3a2 0.00 : 5ed516: 81 fa 90 02 00 00 cmp $0x290,%edx 0.00 : 5ed51c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5ed520: 0f 84 e8 0e 00 00 je 5ee40e : if (lfirst_oid(item_a) != lfirst_oid(item_b)) : return false; : } : break; : default: : elog(ERROR, "unrecognized list node type: %d", 0.00 : 5ed526: ba 96 53 89 00 mov $0x895396,%edx 0.00 : 5ed52b: be c5 09 00 00 mov $0x9c5,%esi 0.00 : 5ed530: bf 72 3f 89 00 mov $0x893f72,%edi 0.00 : 5ed535: e8 e6 de 18 00 callq 77b420 0.00 : 5ed53a: 8b 13 mov (%rbx),%edx 0.00 : 5ed53c: be 80 3f 89 00 mov $0x893f80,%esi 0.00 : 5ed541: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ed546: 31 c0 xor %eax,%eax 0.00 : 5ed548: e8 e3 dc 18 00 callq 77b230 0.00 : 5ed54d: e8 7e bf e7 ff callq 4694d0 0.00 : 5ed552: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalQuery(const Query *a, const Query *b) : { : COMPARE_SCALAR_FIELD(commandType); : COMPARE_SCALAR_FIELD(querySource); 0.00 : 5ed558: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ed55b: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ed55e: 0f 85 09 e9 ff ff jne 5ebe6d : /* we intentionally ignore queryId, since it might not be set */ : COMPARE_SCALAR_FIELD(canSetTag); 0.00 : 5ed564: 0f b6 47 10 movzbl 0x10(%rdi),%eax 0.00 : 5ed568: 3a 46 10 cmp 0x10(%rsi),%al 0.00 : 5ed56b: 0f 85 fc e8 ff ff jne 5ebe6d : COMPARE_NODE_FIELD(utilityStmt); 0.00 : 5ed571: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : 5ed575: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5ed579: e8 52 db ff ff callq 5eb0d0 0.00 : 5ed57e: 84 c0 test %al,%al 0.00 : 5ed580: 0f 84 e7 e8 ff ff je 5ebe6d : COMPARE_SCALAR_FIELD(resultRelation); 0.00 : 5ed586: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 5ed589: 41 3b 44 24 20 cmp 0x20(%r12),%eax 0.00 : 5ed58e: 0f 85 d9 e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasAggs); 0.00 : 5ed594: 0f b6 43 24 movzbl 0x24(%rbx),%eax 0.00 : 5ed598: 41 3a 44 24 24 cmp 0x24(%r12),%al 0.00 : 5ed59d: 0f 85 ca e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasWindowFuncs); 0.00 : 5ed5a3: 0f b6 43 25 movzbl 0x25(%rbx),%eax 0.00 : 5ed5a7: 41 3a 44 24 25 cmp 0x25(%r12),%al 0.00 : 5ed5ac: 0f 85 bb e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasSubLinks); 0.00 : 5ed5b2: 0f b6 43 26 movzbl 0x26(%rbx),%eax 0.00 : 5ed5b6: 41 3a 44 24 26 cmp 0x26(%r12),%al 0.00 : 5ed5bb: 0f 85 ac e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasDistinctOn); 0.00 : 5ed5c1: 0f b6 43 27 movzbl 0x27(%rbx),%eax 0.00 : 5ed5c5: 41 3a 44 24 27 cmp 0x27(%r12),%al 0.00 : 5ed5ca: 0f 85 9d e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasRecursive); 0.00 : 5ed5d0: 0f b6 43 28 movzbl 0x28(%rbx),%eax 0.00 : 5ed5d4: 41 3a 44 24 28 cmp 0x28(%r12),%al 0.00 : 5ed5d9: 0f 85 8e e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasModifyingCTE); 0.00 : 5ed5df: 0f b6 43 29 movzbl 0x29(%rbx),%eax 0.00 : 5ed5e3: 41 3a 44 24 29 cmp 0x29(%r12),%al 0.00 : 5ed5e8: 0f 85 7f e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasForUpdate); 0.00 : 5ed5ee: 0f b6 43 2a movzbl 0x2a(%rbx),%eax 0.00 : 5ed5f2: 41 3a 44 24 2a cmp 0x2a(%r12),%al 0.00 : 5ed5f7: 0f 85 70 e8 ff ff jne 5ebe6d : COMPARE_SCALAR_FIELD(hasRowSecurity); 0.00 : 5ed5fd: 0f b6 43 2b movzbl 0x2b(%rbx),%eax 0.00 : 5ed601: 41 3a 44 24 2b cmp 0x2b(%r12),%al 0.00 : 5ed606: 0f 85 61 e8 ff ff jne 5ebe6d : COMPARE_NODE_FIELD(cteList); 0.00 : 5ed60c: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed611: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed615: e8 b6 da ff ff callq 5eb0d0 0.00 : 5ed61a: 84 c0 test %al,%al 0.00 : 5ed61c: 0f 84 4b e8 ff ff je 5ebe6d : COMPARE_NODE_FIELD(rtable); 0.00 : 5ed622: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5ed627: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5ed62b: e8 a0 da ff ff callq 5eb0d0 0.00 : 5ed630: 84 c0 test %al,%al 0.00 : 5ed632: 0f 84 35 e8 ff ff je 5ebe6d : COMPARE_NODE_FIELD(jointree); 0.00 : 5ed638: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 5ed63d: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 5ed641: e8 8a da ff ff callq 5eb0d0 0.00 : 5ed646: 84 c0 test %al,%al 0.00 : 5ed648: 0f 84 1f e8 ff ff je 5ebe6d : COMPARE_NODE_FIELD(targetList); 0.00 : 5ed64e: 49 8b 74 24 48 mov 0x48(%r12),%rsi 0.00 : 5ed653: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 5ed657: e8 74 da ff ff callq 5eb0d0 0.00 : 5ed65c: 84 c0 test %al,%al 0.00 : 5ed65e: 0f 84 09 e8 ff ff je 5ebe6d : COMPARE_NODE_FIELD(withCheckOptions); 0.00 : 5ed664: 49 8b 74 24 50 mov 0x50(%r12),%rsi 0.00 : 5ed669: 48 8b 7b 50 mov 0x50(%rbx),%rdi 0.00 : 5ed66d: e8 5e da ff ff callq 5eb0d0 0.00 : 5ed672: 84 c0 test %al,%al 0.00 : 5ed674: 0f 84 f3 e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(returningList); 0.00 : 5ed67a: 49 8b 74 24 58 mov 0x58(%r12),%rsi 0.00 : 5ed67f: 48 8b 7b 58 mov 0x58(%rbx),%rdi 0.00 : 5ed683: e8 48 da ff ff callq 5eb0d0 0.00 : 5ed688: 84 c0 test %al,%al 0.00 : 5ed68a: 0f 84 dd e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(groupClause); 0.00 : 5ed690: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 5ed695: 48 8b 7b 60 mov 0x60(%rbx),%rdi 0.00 : 5ed699: e8 32 da ff ff callq 5eb0d0 0.00 : 5ed69e: 84 c0 test %al,%al 0.00 : 5ed6a0: 0f 84 c7 e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(havingQual); 0.00 : 5ed6a6: 49 8b 74 24 68 mov 0x68(%r12),%rsi 0.00 : 5ed6ab: 48 8b 7b 68 mov 0x68(%rbx),%rdi 0.00 : 5ed6af: e8 1c da ff ff callq 5eb0d0 0.00 : 5ed6b4: 84 c0 test %al,%al 0.00 : 5ed6b6: 0f 84 b1 e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(windowClause); 0.00 : 5ed6bc: 49 8b 74 24 70 mov 0x70(%r12),%rsi 0.00 : 5ed6c1: 48 8b 7b 70 mov 0x70(%rbx),%rdi 0.00 : 5ed6c5: e8 06 da ff ff callq 5eb0d0 0.00 : 5ed6ca: 84 c0 test %al,%al 0.00 : 5ed6cc: 0f 84 9b e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(distinctClause); 0.00 : 5ed6d2: 49 8b 74 24 78 mov 0x78(%r12),%rsi 0.00 : 5ed6d7: 48 8b 7b 78 mov 0x78(%rbx),%rdi 0.00 : 5ed6db: e8 f0 d9 ff ff callq 5eb0d0 0.00 : 5ed6e0: 84 c0 test %al,%al 0.00 : 5ed6e2: 0f 84 85 e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(sortClause); 0.00 : 5ed6e8: 49 8b b4 24 80 00 00 mov 0x80(%r12),%rsi 0.00 : 5ed6ef: 00 0.00 : 5ed6f0: 48 8b bb 80 00 00 00 mov 0x80(%rbx),%rdi 0.00 : 5ed6f7: e8 d4 d9 ff ff callq 5eb0d0 0.00 : 5ed6fc: 84 c0 test %al,%al 0.00 : 5ed6fe: 0f 84 69 e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(limitOffset); 0.00 : 5ed704: 49 8b b4 24 88 00 00 mov 0x88(%r12),%rsi 0.00 : 5ed70b: 00 0.00 : 5ed70c: 48 8b bb 88 00 00 00 mov 0x88(%rbx),%rdi 0.00 : 5ed713: e8 b8 d9 ff ff callq 5eb0d0 0.00 : 5ed718: 84 c0 test %al,%al 0.00 : 5ed71a: 0f 84 4d e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(limitCount); 0.00 : 5ed720: 49 8b b4 24 90 00 00 mov 0x90(%r12),%rsi 0.00 : 5ed727: 00 0.00 : 5ed728: 48 8b bb 90 00 00 00 mov 0x90(%rbx),%rdi 0.00 : 5ed72f: e8 9c d9 ff ff callq 5eb0d0 0.00 : 5ed734: 84 c0 test %al,%al 0.00 : 5ed736: 0f 84 31 e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(rowMarks); 0.00 : 5ed73c: 49 8b b4 24 98 00 00 mov 0x98(%r12),%rsi 0.00 : 5ed743: 00 0.00 : 5ed744: 48 8b bb 98 00 00 00 mov 0x98(%rbx),%rdi 0.00 : 5ed74b: e8 80 d9 ff ff callq 5eb0d0 0.00 : 5ed750: 84 c0 test %al,%al 0.00 : 5ed752: 0f 84 15 e7 ff ff je 5ebe6d : COMPARE_NODE_FIELD(setOperations); 0.00 : 5ed758: 49 8b b4 24 a0 00 00 mov 0xa0(%r12),%rsi 0.00 : 5ed75f: 00 0.00 : 5ed760: 48 8b bb a0 00 00 00 mov 0xa0(%rbx),%rdi 0.00 : 5ed767: e8 64 d9 ff ff callq 5eb0d0 0.00 : 5ed76c: 84 c0 test %al,%al 0.00 : 5ed76e: 0f 84 f9 e6 ff ff je 5ebe6d : COMPARE_NODE_FIELD(constraintDeps); 0.00 : 5ed774: 49 8b b4 24 a8 00 00 mov 0xa8(%r12),%rsi 0.00 : 5ed77b: 00 0.00 : 5ed77c: 48 8b bb a8 00 00 00 mov 0xa8(%rbx),%rdi 0.00 : 5ed783: e8 48 d9 ff ff callq 5eb0d0 0.00 : 5ed788: 84 c0 test %al,%al 0.00 : 5ed78a: 0f 95 c2 setne %dl 0.00 : 5ed78d: e9 6b d9 ff ff jmpq 5eb0fd 0.00 : 5ed792: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalArrayRef(const ArrayRef *a, const ArrayRef *b) : { : COMPARE_SCALAR_FIELD(refarraytype); : COMPARE_SCALAR_FIELD(refelemtype); 0.00 : 5ed798: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ed79b: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ed79e: 0f 85 04 eb ff ff jne 5ec2a8 : COMPARE_SCALAR_FIELD(reftypmod); 0.00 : 5ed7a4: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ed7a7: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ed7aa: 0f 85 f8 ea ff ff jne 5ec2a8 : COMPARE_SCALAR_FIELD(refcollid); 0.00 : 5ed7b0: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ed7b3: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ed7b6: 0f 85 ec ea ff ff jne 5ec2a8 : COMPARE_NODE_FIELD(refupperindexpr); 0.00 : 5ed7bc: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : 5ed7c0: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5ed7c4: e8 07 d9 ff ff callq 5eb0d0 0.00 : 5ed7c9: 84 c0 test %al,%al 0.00 : 5ed7cb: 0f 84 d7 ea ff ff je 5ec2a8 : COMPARE_NODE_FIELD(reflowerindexpr); 0.00 : 5ed7d1: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed7d6: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed7da: e8 f1 d8 ff ff callq 5eb0d0 0.00 : 5ed7df: 84 c0 test %al,%al 0.00 : 5ed7e1: 0f 84 c1 ea ff ff je 5ec2a8 : COMPARE_NODE_FIELD(refexpr); 0.00 : 5ed7e7: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ed7ec: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ed7f0: e8 db d8 ff ff callq 5eb0d0 0.00 : 5ed7f5: 84 c0 test %al,%al 0.00 : 5ed7f7: 0f 84 ab ea ff ff je 5ec2a8 : COMPARE_NODE_FIELD(refassgnexpr); 0.00 : 5ed7fd: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed802: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed806: e8 c5 d8 ff ff callq 5eb0d0 0.00 : 5ed80b: 84 c0 test %al,%al 0.00 : 5ed80d: 0f 95 c2 setne %dl 0.00 : 5ed810: e9 e8 d8 ff ff jmpq 5eb0fd 0.00 : 5ed815: 0f 1f 00 nopl (%rax) : : static bool : _equalWindowFunc(const WindowFunc *a, const WindowFunc *b) : { : COMPARE_SCALAR_FIELD(winfnoid); : COMPARE_SCALAR_FIELD(wintype); 0.00 : 5ed818: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ed81b: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ed81e: 0f 85 97 ea ff ff jne 5ec2bb : COMPARE_SCALAR_FIELD(wincollid); 0.00 : 5ed824: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ed827: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ed82a: 0f 85 8b ea ff ff jne 5ec2bb : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ed830: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ed833: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ed836: 0f 85 7f ea ff ff jne 5ec2bb : COMPARE_NODE_FIELD(args); 0.00 : 5ed83c: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : 5ed840: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5ed844: e8 87 d8 ff ff callq 5eb0d0 0.00 : 5ed849: 84 c0 test %al,%al 0.00 : 5ed84b: 0f 84 6a ea ff ff je 5ec2bb : COMPARE_NODE_FIELD(aggfilter); 0.00 : 5ed851: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed856: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed85a: e8 71 d8 ff ff callq 5eb0d0 0.00 : 5ed85f: 84 c0 test %al,%al 0.00 : 5ed861: 0f 84 54 ea ff ff je 5ec2bb : COMPARE_SCALAR_FIELD(winref); 0.00 : 5ed867: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 5ed86a: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 5ed86f: 0f 85 46 ea ff ff jne 5ec2bb : COMPARE_SCALAR_FIELD(winstar); 0.00 : 5ed875: 0f b6 43 2c movzbl 0x2c(%rbx),%eax 0.00 : 5ed879: 41 3a 44 24 2c cmp 0x2c(%r12),%al 0.00 : 5ed87e: 0f 85 37 ea ff ff jne 5ec2bb 0.00 : 5ed884: 0f b6 43 2d movzbl 0x2d(%rbx),%eax 0.00 : 5ed888: 41 3a 44 24 2d cmp 0x2d(%r12),%al 0.00 : 5ed88d: 0f 94 c2 sete %dl 0.00 : 5ed890: e9 68 d8 ff ff jmpq 5eb0fd 0.00 : 5ed895: 0f 1f 00 nopl (%rax) : : static bool : _equalFuncExpr(const FuncExpr *a, const FuncExpr *b) : { : COMPARE_SCALAR_FIELD(funcid); : COMPARE_SCALAR_FIELD(funcresulttype); 0.00 : 5ed898: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ed89b: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ed89e: 0f 85 57 e9 ff ff jne 5ec1fb : COMPARE_SCALAR_FIELD(funcretset); 0.00 : 5ed8a4: 0f b6 47 0c movzbl 0xc(%rdi),%eax 0.00 : 5ed8a8: 3a 46 0c cmp 0xc(%rsi),%al 0.00 : 5ed8ab: 0f 85 4a e9 ff ff jne 5ec1fb : COMPARE_SCALAR_FIELD(funcvariadic); 0.00 : 5ed8b1: 0f b6 47 0d movzbl 0xd(%rdi),%eax 0.00 : 5ed8b5: 3a 46 0d cmp 0xd(%rsi),%al 0.00 : 5ed8b8: 0f 85 3d e9 ff ff jne 5ec1fb : COMPARE_COERCIONFORM_FIELD(funcformat); : COMPARE_SCALAR_FIELD(funccollid); 0.00 : 5ed8be: 8b 47 14 mov 0x14(%rdi),%eax 0.00 : 5ed8c1: 3b 46 14 cmp 0x14(%rsi),%eax 0.00 : 5ed8c4: 0f 85 31 e9 ff ff jne 5ec1fb : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ed8ca: 8b 47 18 mov 0x18(%rdi),%eax 0.00 : 5ed8cd: 3b 46 18 cmp 0x18(%rsi),%eax 0.00 : 5ed8d0: 0f 85 25 e9 ff ff jne 5ec1fb : COMPARE_NODE_FIELD(args); 0.00 : 5ed8d6: 48 8b 76 20 mov 0x20(%rsi),%rsi 0.00 : 5ed8da: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 5ed8de: e8 ed d7 ff ff callq 5eb0d0 0.00 : 5ed8e3: 84 c0 test %al,%al 0.00 : 5ed8e5: 0f 95 c2 setne %dl 0.00 : 5ed8e8: e9 10 d8 ff ff jmpq 5eb0fd 0.00 : 5ed8ed: 0f 1f 00 nopl (%rax) : : static bool : _equalIntoClause(const IntoClause *a, const IntoClause *b) : { : COMPARE_NODE_FIELD(rel); : COMPARE_NODE_FIELD(colNames); 0.00 : 5ed8f0: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ed8f5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ed8f9: e8 d2 d7 ff ff callq 5eb0d0 0.00 : 5ed8fe: 84 c0 test %al,%al 0.00 : 5ed900: 0f 84 8f e9 ff ff je 5ec295 : COMPARE_NODE_FIELD(options); 0.00 : 5ed906: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ed90b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ed90f: e8 bc d7 ff ff callq 5eb0d0 0.00 : 5ed914: 84 c0 test %al,%al 0.00 : 5ed916: 0f 84 79 e9 ff ff je 5ec295 : COMPARE_SCALAR_FIELD(onCommit); 0.00 : 5ed91c: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 5ed91f: 41 3b 44 24 20 cmp 0x20(%r12),%eax 0.00 : 5ed924: 0f 85 6b e9 ff ff jne 5ec295 : COMPARE_STRING_FIELD(tableSpaceName); 0.00 : 5ed92a: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ed92e: 48 85 ff test %rdi,%rdi 0.00 : 5ed931: 0f 84 62 0b 00 00 je 5ee499 0.00 : 5ed937: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ed93c: 48 85 f6 test %rsi,%rsi 0.00 : 5ed93f: 0f 84 59 0b 00 00 je 5ee49e 0.00 : 5ed945: e8 e6 c3 e7 ff callq 469d30 0.00 : 5ed94a: 85 c0 test %eax,%eax 0.00 : 5ed94c: 0f 95 c0 setne %al 0.00 : 5ed94f: 84 c0 test %al,%al 0.00 : 5ed951: 0f 85 3e e9 ff ff jne 5ec295 : COMPARE_NODE_FIELD(viewQuery); 0.00 : 5ed957: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed95c: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed960: e8 6b d7 ff ff callq 5eb0d0 0.00 : 5ed965: 84 c0 test %al,%al 0.00 : 5ed967: 0f 84 28 e9 ff ff je 5ec295 0.00 : 5ed96d: 0f b6 43 38 movzbl 0x38(%rbx),%eax 0.00 : 5ed971: 41 3a 44 24 38 cmp 0x38(%r12),%al 0.00 : 5ed976: 0f 94 c2 sete %dl 0.00 : 5ed979: e9 7f d7 ff ff jmpq 5eb0fd 0.00 : 5ed97e: 66 90 xchg %ax,%ax : : static bool : _equalAggref(const Aggref *a, const Aggref *b) : { : COMPARE_SCALAR_FIELD(aggfnoid); : COMPARE_SCALAR_FIELD(aggtype); 0.00 : 5ed980: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5ed983: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 5ed986: 0f 85 45 e9 ff ff jne 5ec2d1 : COMPARE_SCALAR_FIELD(aggcollid); 0.00 : 5ed98c: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 5ed98f: 3b 46 0c cmp 0xc(%rsi),%eax 0.00 : 5ed992: 0f 85 39 e9 ff ff jne 5ec2d1 : COMPARE_SCALAR_FIELD(inputcollid); 0.00 : 5ed998: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 5ed99b: 3b 46 10 cmp 0x10(%rsi),%eax 0.00 : 5ed99e: 0f 85 2d e9 ff ff jne 5ec2d1 : COMPARE_NODE_FIELD(aggdirectargs); 0.00 : 5ed9a4: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : 5ed9a8: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 5ed9ac: e8 1f d7 ff ff callq 5eb0d0 0.00 : 5ed9b1: 84 c0 test %al,%al 0.00 : 5ed9b3: 0f 84 18 e9 ff ff je 5ec2d1 : COMPARE_NODE_FIELD(args); 0.00 : 5ed9b9: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ed9be: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ed9c2: e8 09 d7 ff ff callq 5eb0d0 0.00 : 5ed9c7: 84 c0 test %al,%al 0.00 : 5ed9c9: 0f 84 02 e9 ff ff je 5ec2d1 : COMPARE_NODE_FIELD(aggorder); 0.00 : 5ed9cf: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ed9d4: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ed9d8: e8 f3 d6 ff ff callq 5eb0d0 0.00 : 5ed9dd: 84 c0 test %al,%al 0.00 : 5ed9df: 0f 84 ec e8 ff ff je 5ec2d1 : COMPARE_NODE_FIELD(aggdistinct); 0.00 : 5ed9e5: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ed9ea: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ed9ee: e8 dd d6 ff ff callq 5eb0d0 0.00 : 5ed9f3: 84 c0 test %al,%al 0.00 : 5ed9f5: 0f 84 d6 e8 ff ff je 5ec2d1 : COMPARE_NODE_FIELD(aggfilter); 0.00 : 5ed9fb: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5eda00: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5eda04: e8 c7 d6 ff ff callq 5eb0d0 0.00 : 5eda09: 84 c0 test %al,%al 0.00 : 5eda0b: 0f 84 c0 e8 ff ff je 5ec2d1 : COMPARE_SCALAR_FIELD(aggstar); 0.00 : 5eda11: 0f b6 43 40 movzbl 0x40(%rbx),%eax 0.00 : 5eda15: 41 3a 44 24 40 cmp 0x40(%r12),%al 0.00 : 5eda1a: 0f 85 b1 e8 ff ff jne 5ec2d1 : COMPARE_SCALAR_FIELD(aggvariadic); 0.00 : 5eda20: 0f b6 43 41 movzbl 0x41(%rbx),%eax 0.00 : 5eda24: 41 3a 44 24 41 cmp 0x41(%r12),%al 0.00 : 5eda29: 0f 85 a2 e8 ff ff jne 5ec2d1 : COMPARE_SCALAR_FIELD(aggkind); 0.00 : 5eda2f: 0f b6 43 42 movzbl 0x42(%rbx),%eax 0.00 : 5eda33: 41 3a 44 24 42 cmp 0x42(%r12),%al 0.00 : 5eda38: 0f 85 93 e8 ff ff jne 5ec2d1 0.00 : 5eda3e: 8b 43 44 mov 0x44(%rbx),%eax 0.00 : 5eda41: 41 3b 44 24 44 cmp 0x44(%r12),%eax 0.00 : 5eda46: 0f 94 c2 sete %dl 0.00 : 5eda49: e9 af d6 ff ff jmpq 5eb0fd 0.00 : 5eda4e: 66 90 xchg %ax,%ax : : static bool : _equalInsertStmt(const InsertStmt *a, const InsertStmt *b) : { : COMPARE_NODE_FIELD(relation); : COMPARE_NODE_FIELD(cols); 0.00 : 5eda50: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5eda55: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5eda59: e8 72 d6 ff ff callq 5eb0d0 0.00 : 5eda5e: 84 c0 test %al,%al 0.00 : 5eda60: 0f 84 f4 e3 ff ff je 5ebe5a : COMPARE_NODE_FIELD(selectStmt); 0.00 : 5eda66: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5eda6b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5eda6f: e8 5c d6 ff ff callq 5eb0d0 0.00 : 5eda74: 84 c0 test %al,%al 0.00 : 5eda76: 0f 84 de e3 ff ff je 5ebe5a : COMPARE_NODE_FIELD(returningList); 0.00 : 5eda7c: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5eda81: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5eda85: e8 46 d6 ff ff callq 5eb0d0 0.00 : 5eda8a: 84 c0 test %al,%al 0.00 : 5eda8c: 0f 84 c8 e3 ff ff je 5ebe5a : COMPARE_NODE_FIELD(withClause); 0.00 : 5eda92: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5eda97: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5eda9b: e8 30 d6 ff ff callq 5eb0d0 0.00 : 5edaa0: 84 c0 test %al,%al 0.00 : 5edaa2: 0f 95 c2 setne %dl 0.00 : 5edaa5: e9 53 d6 ff ff jmpq 5eb0fd 0.00 : 5edaaa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalDeleteStmt(const DeleteStmt *a, const DeleteStmt *b) : { : COMPARE_NODE_FIELD(relation); : COMPARE_NODE_FIELD(usingClause); 0.00 : 5edab0: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5edab5: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5edab9: e8 12 d6 ff ff callq 5eb0d0 0.00 : 5edabe: 84 c0 test %al,%al 0.00 : 5edac0: 0f 84 78 e3 ff ff je 5ebe3e : COMPARE_NODE_FIELD(whereClause); 0.00 : 5edac6: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5edacb: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5edacf: e8 fc d5 ff ff callq 5eb0d0 0.00 : 5edad4: 84 c0 test %al,%al 0.00 : 5edad6: 0f 84 62 e3 ff ff je 5ebe3e : COMPARE_NODE_FIELD(returningList); 0.00 : 5edadc: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5edae1: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5edae5: e8 e6 d5 ff ff callq 5eb0d0 0.00 : 5edaea: 84 c0 test %al,%al 0.00 : 5edaec: 0f 84 4c e3 ff ff je 5ebe3e : COMPARE_NODE_FIELD(withClause); 0.00 : 5edaf2: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5edaf7: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5edafb: e8 d0 d5 ff ff callq 5eb0d0 0.00 : 5edb00: 84 c0 test %al,%al 0.00 : 5edb02: 0f 95 c2 setne %dl 0.00 : 5edb05: e9 f3 d5 ff ff jmpq 5eb0fd 0.00 : 5edb0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalCommentStmt(const CommentStmt *a, const CommentStmt *b) : { : COMPARE_SCALAR_FIELD(objtype); : COMPARE_NODE_FIELD(objname); 0.00 : 5edb10: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5edb14: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5edb18: e8 b3 d5 ff ff callq 5eb0d0 0.00 : 5edb1d: 84 c0 test %al,%al 0.00 : 5edb1f: 0f 84 5f df ff ff je 5eba84 : COMPARE_NODE_FIELD(objargs); 0.00 : 5edb25: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5edb2a: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5edb2e: e8 9d d5 ff ff callq 5eb0d0 0.00 : 5edb33: 84 c0 test %al,%al 0.00 : 5edb35: 0f 84 49 df ff ff je 5eba84 : COMPARE_STRING_FIELD(comment); 0.00 : 5edb3b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5edb3f: 48 85 ff test %rdi,%rdi 0.00 : 5edb42: 0f 84 21 09 00 00 je 5ee469 0.00 : 5edb48: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5edb4d: 48 85 f6 test %rsi,%rsi 0.00 : 5edb50: 0f 84 18 09 00 00 je 5ee46e 0.00 : 5edb56: e8 d5 c1 e7 ff callq 469d30 0.00 : 5edb5b: 85 c0 test %eax,%eax 0.00 : 5edb5d: 0f 95 c0 setne %al 0.00 : 5edb60: 89 c2 mov %eax,%edx 0.00 : 5edb62: 83 f2 01 xor $0x1,%edx 0.00 : 5edb65: e9 93 d5 ff ff jmpq 5eb0fd 0.00 : 5edb6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : static bool : _equalSecLabelStmt(const SecLabelStmt *a, const SecLabelStmt *b) : { : COMPARE_SCALAR_FIELD(objtype); : COMPARE_NODE_FIELD(objname); 0.00 : 5edb70: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5edb74: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5edb78: e8 53 d5 ff ff callq 5eb0d0 0.00 : 5edb7d: 84 c0 test %al,%al 0.00 : 5edb7f: 0f 84 14 da ff ff je 5eb599 : COMPARE_NODE_FIELD(objargs); 0.00 : 5edb85: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5edb8a: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5edb8e: e8 3d d5 ff ff callq 5eb0d0 0.00 : 5edb93: 84 c0 test %al,%al 0.00 : 5edb95: 0f 84 fe d9 ff ff je 5eb599 : COMPARE_STRING_FIELD(provider); 0.00 : 5edb9b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5edb9f: 48 85 ff test %rdi,%rdi 0.00 : 5edba2: 0f 84 21 09 00 00 je 5ee4c9 0.00 : 5edba8: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5edbad: 48 85 f6 test %rsi,%rsi 0.00 : 5edbb0: 0f 84 18 09 00 00 je 5ee4ce 0.00 : 5edbb6: e8 75 c1 e7 ff callq 469d30 0.00 : 5edbbb: 85 c0 test %eax,%eax 0.00 : 5edbbd: 0f 95 c0 setne %al 0.00 : 5edbc0: 84 c0 test %al,%al 0.00 : 5edbc2: 0f 85 d1 d9 ff ff jne 5eb599 : COMPARE_STRING_FIELD(label); 0.00 : 5edbc8: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5edbcc: 48 85 ff test %rdi,%rdi 0.00 : 5edbcf: 0f 84 e4 08 00 00 je 5ee4b9 0.00 : 5edbd5: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5edbda: 48 85 f6 test %rsi,%rsi 0.00 : 5edbdd: 0f 84 db 08 00 00 je 5ee4be 0.00 : 5edbe3: e8 48 c1 e7 ff callq 469d30 0.00 : 5edbe8: 85 c0 test %eax,%eax 0.00 : 5edbea: 0f 95 c0 setne %al 0.00 : 5edbed: 89 c2 mov %eax,%edx 0.00 : 5edbef: 83 f2 01 xor $0x1,%edx 0.00 : 5edbf2: e9 06 d5 ff ff jmpq 5eb0fd 0.00 : 5edbf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5edbfe: 00 00 : : static bool : _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *b) : { : COMPARE_SCALAR_FIELD(replace); : COMPARE_NODE_FIELD(funcname); 0.00 : 5edc00: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5edc04: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5edc08: e8 c3 d4 ff ff callq 5eb0d0 0.00 : 5edc0d: 84 c0 test %al,%al 0.00 : 5edc0f: 0f 84 cf dd ff ff je 5eb9e4 : COMPARE_NODE_FIELD(parameters); 0.00 : 5edc15: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5edc1a: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5edc1e: e8 ad d4 ff ff callq 5eb0d0 0.00 : 5edc23: 84 c0 test %al,%al 0.00 : 5edc25: 0f 84 b9 dd ff ff je 5eb9e4 : COMPARE_NODE_FIELD(returnType); 0.00 : 5edc2b: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5edc30: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5edc34: e8 97 d4 ff ff callq 5eb0d0 0.00 : 5edc39: 84 c0 test %al,%al 0.00 : 5edc3b: 0f 84 a3 dd ff ff je 5eb9e4 : COMPARE_NODE_FIELD(options); 0.00 : 5edc41: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5edc46: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5edc4a: e8 81 d4 ff ff callq 5eb0d0 0.00 : 5edc4f: 84 c0 test %al,%al 0.00 : 5edc51: 0f 84 8d dd ff ff je 5eb9e4 : COMPARE_NODE_FIELD(withClause); 0.00 : 5edc57: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5edc5c: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5edc60: e8 6b d4 ff ff callq 5eb0d0 0.00 : 5edc65: 84 c0 test %al,%al 0.00 : 5edc67: 0f 95 c2 setne %dl 0.00 : 5edc6a: e9 8e d4 ff ff jmpq 5eb0fd 0.00 : 5edc6f: 90 nop : : static bool : _equalCoerceViaIO(const CoerceViaIO *a, const CoerceViaIO *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_SCALAR_FIELD(resulttype); 0.00 : 5edc70: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5edc73: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5edc78: 0f 94 c2 sete %dl 0.00 : 5edc7b: e9 7d d4 ff ff jmpq 5eb0fd : static bool : _equalCoerceToDomain(const CoerceToDomain *a, const CoerceToDomain *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_SCALAR_FIELD(resulttype); : COMPARE_SCALAR_FIELD(resulttypmod); 0.00 : 5edc80: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5edc83: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5edc88: 0f 85 d2 e9 ff ff jne 5ec660 0.00 : 5edc8e: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5edc91: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5edc96: 0f 94 c2 sete %dl 0.00 : 5edc99: e9 5f d4 ff ff jmpq 5eb0fd : static bool : _equalRelabelType(const RelabelType *a, const RelabelType *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_SCALAR_FIELD(resulttype); : COMPARE_SCALAR_FIELD(resulttypmod); 0.00 : 5edc9e: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5edca1: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5edca6: 0f 85 f8 e3 ff ff jne 5ec0a4 0.00 : 5edcac: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5edcaf: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5edcb4: 0f 94 c2 sete %dl 0.00 : 5edcb7: e9 41 d4 ff ff jmpq 5eb0fd : static bool : _equalArrayCoerceExpr(const ArrayCoerceExpr *a, const ArrayCoerceExpr *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_SCALAR_FIELD(elemfuncid); : COMPARE_SCALAR_FIELD(resulttype); 0.00 : 5edcbc: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5edcbf: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5edcc4: 0f 85 8c e3 ff ff jne 5ec056 : COMPARE_SCALAR_FIELD(resulttypmod); 0.00 : 5edcca: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5edccd: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5edcd2: 0f 85 7e e3 ff ff jne 5ec056 : COMPARE_SCALAR_FIELD(resultcollid); 0.00 : 5edcd8: 8b 43 1c mov 0x1c(%rbx),%eax 0.00 : 5edcdb: 41 3b 44 24 1c cmp 0x1c(%r12),%eax 0.00 : 5edce0: 0f 85 70 e3 ff ff jne 5ec056 0.00 : 5edce6: 0f b6 43 20 movzbl 0x20(%rbx),%eax 0.00 : 5edcea: 41 3a 44 24 20 cmp 0x20(%r12),%al 0.00 : 5edcef: 0f 94 c2 sete %dl 0.00 : 5edcf2: e9 06 d4 ff ff jmpq 5eb0fd 0.00 : 5edcf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5edcfe: 00 00 : static bool : _equalFieldSelect(const FieldSelect *a, const FieldSelect *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_SCALAR_FIELD(fieldnum); : COMPARE_SCALAR_FIELD(resulttype); 0.00 : 5edd00: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5edd03: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5edd08: 0f 85 da e3 ff ff jne 5ec0e8 : COMPARE_SCALAR_FIELD(resulttypmod); 0.00 : 5edd0e: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5edd11: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5edd16: 0f 85 cc e3 ff ff jne 5ec0e8 0.00 : 5edd1c: 8b 43 1c mov 0x1c(%rbx),%eax 0.00 : 5edd1f: 41 3b 44 24 1c cmp 0x1c(%r12),%eax 0.00 : 5edd24: 0f 94 c2 sete %dl 0.00 : 5edd27: e9 d1 d3 ff ff jmpq 5eb0fd 0.00 : 5edd2c: 0f 1f 40 00 nopl 0x0(%rax) : : static bool : _equalAlterDomainStmt(const AlterDomainStmt *a, const AlterDomainStmt *b) : { : COMPARE_SCALAR_FIELD(subtype); : COMPARE_NODE_FIELD(typeName); 0.00 : 5edd30: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5edd34: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5edd38: e8 93 d3 ff ff callq 5eb0d0 0.00 : 5edd3d: 84 c0 test %al,%al 0.00 : 5edd3f: 0f 84 74 e0 ff ff je 5ebdb9 : COMPARE_STRING_FIELD(name); 0.00 : 5edd45: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5edd49: 48 85 ff test %rdi,%rdi 0.00 : 5edd4c: 0f 84 57 07 00 00 je 5ee4a9 0.00 : 5edd52: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5edd57: 48 85 f6 test %rsi,%rsi 0.00 : 5edd5a: 0f 84 4e 07 00 00 je 5ee4ae 0.00 : 5edd60: e8 cb bf e7 ff callq 469d30 0.00 : 5edd65: 85 c0 test %eax,%eax 0.00 : 5edd67: 0f 95 c0 setne %al 0.00 : 5edd6a: 84 c0 test %al,%al 0.00 : 5edd6c: 0f 85 47 e0 ff ff jne 5ebdb9 : COMPARE_NODE_FIELD(def); 0.00 : 5edd72: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5edd77: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5edd7b: e8 50 d3 ff ff callq 5eb0d0 0.00 : 5edd80: 84 c0 test %al,%al 0.00 : 5edd82: 0f 84 31 e0 ff ff je 5ebdb9 : COMPARE_SCALAR_FIELD(behavior); 0.00 : 5edd88: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 5edd8b: 41 3b 44 24 20 cmp 0x20(%r12),%eax 0.00 : 5edd90: 0f 85 23 e0 ff ff jne 5ebdb9 0.00 : 5edd96: 0f b6 43 24 movzbl 0x24(%rbx),%eax 0.00 : 5edd9a: 41 3a 44 24 24 cmp 0x24(%r12),%al 0.00 : 5edd9f: 0f 94 c2 sete %dl 0.00 : 5edda2: e9 56 d3 ff ff jmpq 5eb0fd 0.00 : 5edda7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5eddae: 00 00 : : static bool : _equalRowCompareExpr(const RowCompareExpr *a, const RowCompareExpr *b) : { : COMPARE_SCALAR_FIELD(rctype); : COMPARE_NODE_FIELD(opnos); 0.00 : 5eddb0: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5eddb4: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5eddb8: e8 13 d3 ff ff callq 5eb0d0 0.00 : 5eddbd: 84 c0 test %al,%al 0.00 : 5eddbf: 0f 84 7c e1 ff ff je 5ebf41 : COMPARE_NODE_FIELD(opfamilies); 0.00 : 5eddc5: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5eddca: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5eddce: e8 fd d2 ff ff callq 5eb0d0 0.00 : 5eddd3: 84 c0 test %al,%al 0.00 : 5eddd5: 0f 84 66 e1 ff ff je 5ebf41 : COMPARE_NODE_FIELD(inputcollids); 0.00 : 5edddb: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5edde0: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5edde4: e8 e7 d2 ff ff callq 5eb0d0 0.00 : 5edde9: 84 c0 test %al,%al 0.00 : 5eddeb: 0f 84 50 e1 ff ff je 5ebf41 : COMPARE_NODE_FIELD(largs); 0.00 : 5eddf1: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5eddf6: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5eddfa: e8 d1 d2 ff ff callq 5eb0d0 0.00 : 5eddff: 84 c0 test %al,%al 0.00 : 5ede01: 0f 84 3a e1 ff ff je 5ebf41 : COMPARE_NODE_FIELD(rargs); 0.00 : 5ede07: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ede0c: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ede10: e8 bb d2 ff ff callq 5eb0d0 0.00 : 5ede15: 84 c0 test %al,%al 0.00 : 5ede17: 0f 95 c2 setne %dl 0.00 : 5ede1a: e9 de d2 ff ff jmpq 5eb0fd 0.00 : 5ede1f: 90 nop : : static bool : _equalPlaceHolderInfo(const PlaceHolderInfo *a, const PlaceHolderInfo *b) : { : COMPARE_SCALAR_FIELD(phid); : COMPARE_NODE_FIELD(ph_var); /* should be redundant */ 0.00 : 5ede20: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ede24: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ede28: e8 a3 d2 ff ff callq 5eb0d0 0.00 : 5ede2d: 84 c0 test %al,%al 0.00 : 5ede2f: 0f 84 9c e0 ff ff je 5ebed1 : COMPARE_BITMAPSET_FIELD(ph_eval_at); 0.00 : 5ede35: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ede3a: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5ede3e: e8 dd 47 ff ff callq 5e2620 0.00 : 5ede43: 84 c0 test %al,%al 0.00 : 5ede45: 0f 84 86 e0 ff ff je 5ebed1 : COMPARE_BITMAPSET_FIELD(ph_lateral); 0.00 : 5ede4b: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ede50: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ede54: e8 c7 47 ff ff callq 5e2620 0.00 : 5ede59: 84 c0 test %al,%al 0.00 : 5ede5b: 0f 84 70 e0 ff ff je 5ebed1 : COMPARE_BITMAPSET_FIELD(ph_needed); 0.00 : 5ede61: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ede66: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ede6a: e8 b1 47 ff ff callq 5e2620 0.00 : 5ede6f: 84 c0 test %al,%al 0.00 : 5ede71: 0f 84 5a e0 ff ff je 5ebed1 0.00 : 5ede77: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 5ede7a: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 5ede7f: 0f 94 c2 sete %dl 0.00 : 5ede82: e9 76 d2 ff ff jmpq 5eb0fd 0.00 : 5ede87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ede8e: 00 00 : : static bool : _equalSubPlan(const SubPlan *a, const SubPlan *b) : { : COMPARE_SCALAR_FIELD(subLinkType); : COMPARE_NODE_FIELD(testexpr); 0.00 : 5ede90: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ede94: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ede98: e8 33 d2 ff ff callq 5eb0d0 0.00 : 5ede9d: 84 c0 test %al,%al 0.00 : 5ede9f: 0f 84 6d e2 ff ff je 5ec112 : COMPARE_NODE_FIELD(paramIds); 0.00 : 5edea5: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5edeaa: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5edeae: e8 1d d2 ff ff callq 5eb0d0 0.00 : 5edeb3: 84 c0 test %al,%al 0.00 : 5edeb5: 0f 84 57 e2 ff ff je 5ec112 : COMPARE_SCALAR_FIELD(plan_id); 0.00 : 5edebb: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5edebe: 41 3b 44 24 18 cmp 0x18(%r12),%eax 0.00 : 5edec3: 0f 85 49 e2 ff ff jne 5ec112 : COMPARE_STRING_FIELD(plan_name); 0.00 : 5edec9: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5edecd: 48 85 ff test %rdi,%rdi 0.00 : 5eded0: 0f 84 bc 04 00 00 je 5ee392 0.00 : 5eded6: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ededb: 48 85 f6 test %rsi,%rsi 0.00 : 5edede: 0f 84 b3 04 00 00 je 5ee397 0.00 : 5edee4: e8 47 be e7 ff callq 469d30 0.00 : 5edee9: 85 c0 test %eax,%eax 0.00 : 5edeeb: 0f 95 c0 setne %al 0.00 : 5edeee: 84 c0 test %al,%al 0.00 : 5edef0: 0f 85 1c e2 ff ff jne 5ec112 : COMPARE_SCALAR_FIELD(firstColType); 0.00 : 5edef6: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 5edef9: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 5edefe: 0f 85 0e e2 ff ff jne 5ec112 : COMPARE_SCALAR_FIELD(firstColTypmod); 0.00 : 5edf04: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 5edf07: 41 3b 44 24 2c cmp 0x2c(%r12),%eax 0.00 : 5edf0c: 0f 85 00 e2 ff ff jne 5ec112 : COMPARE_SCALAR_FIELD(firstColCollation); 0.00 : 5edf12: 8b 43 30 mov 0x30(%rbx),%eax 0.00 : 5edf15: 41 3b 44 24 30 cmp 0x30(%r12),%eax 0.00 : 5edf1a: 0f 85 f2 e1 ff ff jne 5ec112 : COMPARE_SCALAR_FIELD(useHashTable); 0.00 : 5edf20: 0f b6 43 34 movzbl 0x34(%rbx),%eax 0.00 : 5edf24: 41 3a 44 24 34 cmp 0x34(%r12),%al 0.00 : 5edf29: 0f 85 e3 e1 ff ff jne 5ec112 : COMPARE_SCALAR_FIELD(unknownEqFalse); 0.00 : 5edf2f: 0f b6 43 35 movzbl 0x35(%rbx),%eax 0.00 : 5edf33: 41 3a 44 24 35 cmp 0x35(%r12),%al 0.00 : 5edf38: 0f 85 d4 e1 ff ff jne 5ec112 : COMPARE_NODE_FIELD(setParam); 0.00 : 5edf3e: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5edf43: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5edf47: e8 84 d1 ff ff callq 5eb0d0 0.00 : 5edf4c: 84 c0 test %al,%al 0.00 : 5edf4e: 0f 84 be e1 ff ff je 5ec112 : COMPARE_NODE_FIELD(parParam); 0.00 : 5edf54: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 5edf59: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 5edf5d: e8 6e d1 ff ff callq 5eb0d0 0.00 : 5edf62: 84 c0 test %al,%al 0.00 : 5edf64: 0f 84 a8 e1 ff ff je 5ec112 : COMPARE_NODE_FIELD(args); 0.00 : 5edf6a: 49 8b 74 24 48 mov 0x48(%r12),%rsi 0.00 : 5edf6f: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 5edf73: e8 58 d1 ff ff callq 5eb0d0 0.00 : 5edf78: 84 c0 test %al,%al 0.00 : 5edf7a: 0f 84 92 e1 ff ff je 5ec112 : COMPARE_SCALAR_FIELD(startup_cost); 0.00 : 5edf80: f2 0f 10 43 50 movsd 0x50(%rbx),%xmm0 0.00 : 5edf85: 66 41 0f 2e 44 24 50 ucomisd 0x50(%r12),%xmm0 0.00 : 5edf8c: 0f 85 80 e1 ff ff jne 5ec112 0.00 : 5edf92: 0f 8a 7a e1 ff ff jp 5ec112 0.00 : 5edf98: f2 0f 10 43 58 movsd 0x58(%rbx),%xmm0 0.00 : 5edf9d: 66 41 0f 2e 44 24 58 ucomisd 0x58(%r12),%xmm0 0.00 : 5edfa4: 0f 95 c2 setne %dl 0.00 : 5edfa7: 0f 9a c0 setp %al 0.00 : 5edfaa: 09 c2 or %eax,%edx 0.00 : 5edfac: 83 f2 01 xor $0x1,%edx 0.00 : 5edfaf: e9 49 d1 ff ff jmpq 5eb0fd 0.00 : 5edfb4: 0f 1f 40 00 nopl 0x0(%rax) : : static bool : _equalNullTest(const NullTest *a, const NullTest *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_SCALAR_FIELD(nulltesttype); 0.00 : 5edfb8: 0f b6 43 14 movzbl 0x14(%rbx),%eax 0.00 : 5edfbc: 41 3a 44 24 14 cmp 0x14(%r12),%al 0.00 : 5edfc1: 0f 94 c2 sete %dl 0.00 : 5edfc4: e9 34 d1 ff ff jmpq 5eb0fd : : static bool : _equalTruncateStmt(const TruncateStmt *a, const TruncateStmt *b) : { : COMPARE_NODE_FIELD(relations); : COMPARE_SCALAR_FIELD(restart_seqs); 0.00 : 5edfc9: 8b 43 14 mov 0x14(%rbx),%eax 0.00 : 5edfcc: 41 3b 44 24 14 cmp 0x14(%r12),%eax 0.00 : 5edfd1: 0f 94 c2 sete %dl 0.00 : 5edfd4: e9 24 d1 ff ff jmpq 5eb0fd : static bool : _equalRestrictInfo(const RestrictInfo *a, const RestrictInfo *b) : { : COMPARE_NODE_FIELD(clause); : COMPARE_SCALAR_FIELD(is_pushed_down); : COMPARE_SCALAR_FIELD(outerjoin_delayed); 0.00 : 5edfd9: 0f b6 43 11 movzbl 0x11(%rbx),%eax 0.00 : 5edfdd: 41 3a 44 24 11 cmp 0x11(%r12),%al 0.00 : 5edfe2: 0f 85 54 e2 ff ff jne 5ec23c : COMPARE_BITMAPSET_FIELD(required_relids); 0.00 : 5edfe8: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5edfed: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5edff1: e8 2a 46 ff ff callq 5e2620 0.00 : 5edff6: 84 c0 test %al,%al 0.00 : 5edff8: 0f 84 3e e2 ff ff je 5ec23c : COMPARE_BITMAPSET_FIELD(outer_relids); 0.00 : 5edffe: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ee003: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ee007: e8 14 46 ff ff callq 5e2620 0.00 : 5ee00c: 84 c0 test %al,%al 0.00 : 5ee00e: 0f 84 28 e2 ff ff je 5ec23c : COMPARE_BITMAPSET_FIELD(nullable_relids); 0.00 : 5ee014: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ee019: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ee01d: e8 fe 45 ff ff callq 5e2620 0.00 : 5ee022: 84 c0 test %al,%al 0.00 : 5ee024: 0f 95 c2 setne %dl 0.00 : 5ee027: e9 d1 d0 ff ff jmpq 5eb0fd 0.00 : 5ee02c: 0f 1f 40 00 nopl 0x0(%rax) : static bool : _equalTargetEntry(const TargetEntry *a, const TargetEntry *b) : { : COMPARE_NODE_FIELD(expr); : COMPARE_SCALAR_FIELD(resno); : COMPARE_STRING_FIELD(resname); 0.00 : 5ee030: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ee034: 48 85 ff test %rdi,%rdi 0.00 : 5ee037: 0f 84 b5 02 00 00 je 5ee2f2 0.00 : 5ee03d: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee042: 48 85 f6 test %rsi,%rsi 0.00 : 5ee045: 0f 84 ac 02 00 00 je 5ee2f7 0.00 : 5ee04b: e8 e0 bc e7 ff callq 469d30 0.00 : 5ee050: 85 c0 test %eax,%eax 0.00 : 5ee052: 0f 95 c0 setne %al 0.00 : 5ee055: 84 c0 test %al,%al 0.00 : 5ee057: 0f 85 6a e5 ff ff jne 5ec5c7 : COMPARE_SCALAR_FIELD(ressortgroupref); 0.00 : 5ee05d: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 5ee060: 41 3b 44 24 20 cmp 0x20(%r12),%eax 0.00 : 5ee065: 0f 85 5c e5 ff ff jne 5ec5c7 : COMPARE_SCALAR_FIELD(resorigtbl); 0.00 : 5ee06b: 8b 43 24 mov 0x24(%rbx),%eax 0.00 : 5ee06e: 41 3b 44 24 24 cmp 0x24(%r12),%eax 0.00 : 5ee073: 0f 85 4e e5 ff ff jne 5ec5c7 : COMPARE_SCALAR_FIELD(resorigcol); 0.00 : 5ee079: 0f b7 43 28 movzwl 0x28(%rbx),%eax 0.00 : 5ee07d: 66 41 3b 44 24 28 cmp 0x28(%r12),%ax 0.00 : 5ee083: 0f 85 3e e5 ff ff jne 5ec5c7 0.00 : 5ee089: 0f b6 43 2a movzbl 0x2a(%rbx),%eax 0.00 : 5ee08d: 41 3a 44 24 2a cmp 0x2a(%r12),%al 0.00 : 5ee092: 0f 94 c2 sete %dl 0.00 : 5ee095: e9 63 d0 ff ff jmpq 5eb0fd 0.00 : 5ee09a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : static bool : _equalDeclareCursorStmt(const DeclareCursorStmt *a, const DeclareCursorStmt *b) : { : COMPARE_STRING_FIELD(portalname); : COMPARE_SCALAR_FIELD(options); : COMPARE_NODE_FIELD(query); 0.00 : 5ee0a0: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee0a5: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ee0a9: e8 22 d0 ff ff callq 5eb0d0 0.00 : 5ee0ae: 84 c0 test %al,%al 0.00 : 5ee0b0: 0f 95 c2 setne %dl 0.00 : 5ee0b3: e9 45 d0 ff ff jmpq 5eb0fd : _equalRowExpr(const RowExpr *a, const RowExpr *b) : { : COMPARE_NODE_FIELD(args); : COMPARE_SCALAR_FIELD(row_typeid); : COMPARE_COERCIONFORM_FIELD(row_format); : COMPARE_NODE_FIELD(colnames); 0.00 : 5ee0b8: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee0bd: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ee0c1: e8 0a d0 ff ff callq 5eb0d0 0.00 : 5ee0c6: 84 c0 test %al,%al 0.00 : 5ee0c8: 0f 95 c2 setne %dl 0.00 : 5ee0cb: e9 2d d0 ff ff jmpq 5eb0fd : static bool : _equalRangeTblFunction(const RangeTblFunction *a, const RangeTblFunction *b) : { : COMPARE_NODE_FIELD(funcexpr); : COMPARE_SCALAR_FIELD(funccolcount); : COMPARE_NODE_FIELD(funccolnames); 0.00 : 5ee0d0: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee0d5: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 5ee0d9: e8 f2 cf ff ff callq 5eb0d0 0.00 : 5ee0de: 84 c0 test %al,%al 0.00 : 5ee0e0: 0f 84 38 d2 ff ff je 5eb31e : COMPARE_NODE_FIELD(funccoltypes); 0.00 : 5ee0e6: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ee0eb: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 5ee0ef: e8 dc cf ff ff callq 5eb0d0 0.00 : 5ee0f4: 84 c0 test %al,%al 0.00 : 5ee0f6: 0f 84 22 d2 ff ff je 5eb31e : COMPARE_NODE_FIELD(funccoltypmods); 0.00 : 5ee0fc: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ee101: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ee105: e8 c6 cf ff ff callq 5eb0d0 0.00 : 5ee10a: 84 c0 test %al,%al 0.00 : 5ee10c: 0f 84 0c d2 ff ff je 5eb31e : COMPARE_NODE_FIELD(funccolcollations); 0.00 : 5ee112: 49 8b 74 24 30 mov 0x30(%r12),%rsi 0.00 : 5ee117: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5ee11b: e8 b0 cf ff ff callq 5eb0d0 0.00 : 5ee120: 84 c0 test %al,%al 0.00 : 5ee122: 0f 84 f6 d1 ff ff je 5eb31e : COMPARE_BITMAPSET_FIELD(funcparams); 0.00 : 5ee128: 49 8b 74 24 38 mov 0x38(%r12),%rsi 0.00 : 5ee12d: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5ee131: e8 ea 44 ff ff callq 5e2620 0.00 : 5ee136: 84 c0 test %al,%al 0.00 : 5ee138: 0f 95 c2 setne %dl 0.00 : 5ee13b: e9 bd cf ff ff jmpq 5eb0fd : : static bool : _equalNamedArgExpr(const NamedArgExpr *a, const NamedArgExpr *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_STRING_FIELD(name); 0.00 : 5ee140: 31 d2 xor %edx,%edx 0.00 : 5ee142: e9 b6 cf ff ff jmpq 5eb0fd : : static bool : _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b) : { : COMPARE_NODE_FIELD(relation); : COMPARE_STRING_FIELD(indexname); 0.00 : 5ee147: 31 d2 xor %edx,%edx 0.00 : 5ee149: e9 af cf ff ff jmpq 5eb0fd : } : : static bool : _equalNotifyStmt(const NotifyStmt *a, const NotifyStmt *b) : { : COMPARE_STRING_FIELD(conditionname); 0.00 : 5ee14e: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee152: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee155: 0f 95 c0 setne %al 0.00 : 5ee158: e9 e2 db ff ff jmpq 5ebd3f : } : : static bool : _equalDropdbStmt(const DropdbStmt *a, const DropdbStmt *b) : { : COMPARE_STRING_FIELD(dbname); 0.00 : 5ee15d: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee161: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee164: 0f 95 c0 setne %al 0.00 : 5ee167: e9 0d db ff ff jmpq 5ebc79 : } : : static bool : _equalVariableShowStmt(const VariableShowStmt *a, const VariableShowStmt *b) : { : COMPARE_STRING_FIELD(name); 0.00 : 5ee16c: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee170: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee173: 0f 95 c0 setne %al 0.00 : 5ee176: e9 df d7 ff ff jmpq 5eb95a : } : : static bool : _equalClosePortalStmt(const ClosePortalStmt *a, const ClosePortalStmt *b) : { : COMPARE_STRING_FIELD(portalname); 0.00 : 5ee17b: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee17f: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee182: 0f 95 c0 setne %al 0.00 : 5ee185: e9 2d da ff ff jmpq 5ebbb7 : } : : static bool : _equalUnlistenStmt(const UnlistenStmt *a, const UnlistenStmt *b) : { : COMPARE_STRING_FIELD(conditionname); 0.00 : 5ee18a: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee18e: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee191: 0f 95 c0 setne %al 0.00 : 5ee194: e9 4a db ff ff jmpq 5ebce3 : } : : static bool : _equalListenStmt(const ListenStmt *a, const ListenStmt *b) : { : COMPARE_STRING_FIELD(conditionname); 0.00 : 5ee199: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee19d: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee1a0: 0f 95 c0 setne %al 0.00 : 5ee1a3: e9 69 db ff ff jmpq 5ebd11 : } : : static bool : _equalLoadStmt(const LoadStmt *a, const LoadStmt *b) : { : COMPARE_STRING_FIELD(filename); 0.00 : 5ee1a8: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee1ac: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee1af: 0f 95 c0 setne %al 0.00 : 5ee1b2: e9 61 d9 ff ff jmpq 5ebb18 : */ : : static bool : _equalAlias(const Alias *a, const Alias *b) : { : COMPARE_STRING_FIELD(aliasname); 0.00 : 5ee1b7: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee1bb: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee1be: 0f 95 c0 setne %al 0.00 : 5ee1c1: e9 ed e2 ff ff jmpq 5ec4b3 : } : : static bool : _equalRangeVar(const RangeVar *a, const RangeVar *b) : { : COMPARE_STRING_FIELD(catalogname); 0.00 : 5ee1c6: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee1ca: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee1cd: 0f 95 c0 setne %al 0.00 : 5ee1d0: e9 4f e2 ff ff jmpq 5ec424 : } : : static bool : _equalAlterEventTrigStmt(const AlterEventTrigStmt *a, const AlterEventTrigStmt *b) : { : COMPARE_STRING_FIELD(trigname); 0.00 : 5ee1d5: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee1d9: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee1dc: 0f 95 c0 setne %al 0.00 : 5ee1df: e9 36 d3 ff ff jmpq 5eb51a : } : : static bool : _equalDropUserMappingStmt(const DropUserMappingStmt *a, const DropUserMappingStmt *b) : { : COMPARE_STRING_FIELD(username); 0.00 : 5ee1e4: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee1e8: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee1eb: 0f 95 c0 setne %al 0.00 : 5ee1ee: e9 ef d3 ff ff jmpq 5eb5e2 : } : : static bool : _equalFunctionParameter(const FunctionParameter *a, const FunctionParameter *b) : { : COMPARE_STRING_FIELD(name); 0.00 : 5ee1f3: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee1f7: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee1fa: 0f 95 c0 setne %al 0.00 : 5ee1fd: e9 09 d0 ff ff jmpq 5eb20b : } : : static bool : _equalPrivGrantee(const PrivGrantee *a, const PrivGrantee *b) : { : COMPARE_STRING_FIELD(rolname); 0.00 : 5ee202: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee206: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee209: 0f 95 c0 setne %al 0.00 : 5ee20c: e9 81 d0 ff ff jmpq 5eb292 : } : : static bool : _equalDropTableSpaceStmt(const DropTableSpaceStmt *a, const DropTableSpaceStmt *b) : { : COMPARE_STRING_FIELD(tablespacename); 0.00 : 5ee211: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee215: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee218: 0f 95 c0 setne %al 0.00 : 5ee21b: e9 1c d5 ff ff jmpq 5eb73c : } : : static bool : _equalDeallocateStmt(const DeallocateStmt *a, const DeallocateStmt *b) : { : COMPARE_STRING_FIELD(name); 0.00 : 5ee220: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee224: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee227: 0f 95 c0 setne %al 0.00 : 5ee22a: e9 96 d5 ff ff jmpq 5eb7c5 : } : : static bool : _equalDeclareCursorStmt(const DeclareCursorStmt *a, const DeclareCursorStmt *b) : { : COMPARE_STRING_FIELD(portalname); 0.00 : 5ee22f: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee233: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee236: 0f 95 c0 setne %al 0.00 : 5ee239: e9 4a d5 ff ff jmpq 5eb788 : } : : static bool : _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) : { : COMPARE_STRING_FIELD(idxname); 0.00 : 5ee23e: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee242: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee245: 0f 95 c0 setne %al 0.00 : 5ee248: e9 c2 d7 ff ff jmpq 5eba0f : : static bool : _equalDropUserMappingStmt(const DropUserMappingStmt *a, const DropUserMappingStmt *b) : { : COMPARE_STRING_FIELD(username); : COMPARE_STRING_FIELD(servername); 0.00 : 5ee24d: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ee252: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee255: 0f 95 c0 setne %al 0.00 : 5ee258: e9 b2 d3 ff ff jmpq 5eb60f : : static bool : _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b) : { : COMPARE_NODE_FIELD(relation); : COMPARE_STRING_FIELD(indexname); 0.00 : 5ee25d: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ee262: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee265: 0f 95 c0 setne %al 0.00 : 5ee268: e9 0d d9 ff ff jmpq 5ebb7a : : static bool : _equalNotifyStmt(const NotifyStmt *a, const NotifyStmt *b) : { : COMPARE_STRING_FIELD(conditionname); : COMPARE_STRING_FIELD(payload); 0.00 : 5ee26d: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ee272: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee275: 0f 95 c0 setne %al 0.00 : 5ee278: e9 ef da ff ff jmpq 5ebd6c : : static bool : _equalRangeVar(const RangeVar *a, const RangeVar *b) : { : COMPARE_STRING_FIELD(catalogname); : COMPARE_STRING_FIELD(schemaname); 0.00 : 5ee27d: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ee282: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee285: 0f 95 c0 setne %al 0.00 : 5ee288: e9 c0 e1 ff ff jmpq 5ec44d : : static bool : _equalNamedArgExpr(const NamedArgExpr *a, const NamedArgExpr *b) : { : COMPARE_NODE_FIELD(arg); : COMPARE_STRING_FIELD(name); 0.00 : 5ee28d: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ee292: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee295: 0f 95 c0 setne %al 0.00 : 5ee298: e9 3a df ff ff jmpq 5ec1d7 : static bool : _equalRangeVar(const RangeVar *a, const RangeVar *b) : { : COMPARE_STRING_FIELD(catalogname); : COMPARE_STRING_FIELD(schemaname); : COMPARE_STRING_FIELD(relname); 0.00 : 5ee29d: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee2a2: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee2a5: 0f 95 c0 setne %al 0.00 : 5ee2a8: e9 c9 e1 ff ff jmpq 5ec476 : : static bool : _equalAlterTableCmd(const AlterTableCmd *a, const AlterTableCmd *b) : { : COMPARE_SCALAR_FIELD(subtype); : COMPARE_STRING_FIELD(name); 0.00 : 5ee2ad: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee2b1: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee2b4: 0f 95 c0 setne %al 0.00 : 5ee2b7: e9 55 f0 ff ff jmpq 5ed311 : static bool : _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) : { : COMPARE_STRING_FIELD(idxname); : COMPARE_NODE_FIELD(relation); : COMPARE_STRING_FIELD(accessMethod); 0.00 : 5ee2bc: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee2c1: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee2c4: 0f 95 c0 setne %al 0.00 : 5ee2c7: e9 5f e9 ff ff jmpq 5ecc2b : COMPARE_SCALAR_FIELD(val.ival); : break; : case T_Float: : case T_String: : case T_BitString: : COMPARE_STRING_FIELD(val.str); 0.00 : 5ee2cc: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 5ee2d0: 48 85 ff test %rdi,%rdi 0.00 : 5ee2d3: 74 7a je 5ee34f 0.00 : 5ee2d5: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee2d9: 48 85 f6 test %rsi,%rsi 0.00 : 5ee2dc: 74 75 je 5ee353 0.00 : 5ee2de: e8 4d ba e7 ff callq 469d30 0.00 : 5ee2e3: 85 c0 test %eax,%eax 0.00 : 5ee2e5: 0f 95 c0 setne %al 0.00 : 5ee2e8: 89 c2 mov %eax,%edx 0.00 : 5ee2ea: 83 f2 01 xor $0x1,%edx 0.00 : 5ee2ed: e9 0b ce ff ff jmpq 5eb0fd : static bool : _equalTargetEntry(const TargetEntry *a, const TargetEntry *b) : { : COMPARE_NODE_FIELD(expr); : COMPARE_SCALAR_FIELD(resno); : COMPARE_STRING_FIELD(resname); 0.00 : 5ee2f2: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee2f7: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee2fa: 0f 95 c0 setne %al 0.00 : 5ee2fd: e9 53 fd ff ff jmpq 5ee055 : : static bool : _equalCurrentOfExpr(const CurrentOfExpr *a, const CurrentOfExpr *b) : { : COMPARE_SCALAR_FIELD(cvarno); : COMPARE_STRING_FIELD(cursor_name); 0.00 : 5ee302: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee306: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee309: 0f 95 c0 setne %al 0.00 : 5ee30c: e9 07 e2 ff ff jmpq 5ec518 : static bool : _equalValue(const Value *a, const Value *b) : { : COMPARE_SCALAR_FIELD(type); : : switch (a->type) 0.00 : 5ee311: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 5ee315: 48 39 47 08 cmp %rax,0x8(%rdi) 0.00 : 5ee319: 0f 94 c2 sete %dl 0.00 : 5ee31c: e9 dc cd ff ff jmpq 5eb0fd : : static bool : _equalXmlExpr(const XmlExpr *a, const XmlExpr *b) : { : COMPARE_SCALAR_FIELD(op); : COMPARE_STRING_FIELD(name); 0.00 : 5ee321: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee325: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee328: 0f 95 c0 setne %al 0.00 : 5ee32b: e9 04 e8 ff ff jmpq 5ecb34 : : static bool : _equalReplicaIdentityStmt(const ReplicaIdentityStmt *a, const ReplicaIdentityStmt *b) : { : COMPARE_SCALAR_FIELD(identity_type); : COMPARE_STRING_FIELD(name); 0.00 : 5ee330: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee334: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee337: 0f 95 c0 setne %al 0.00 : 5ee33a: e9 99 d1 ff ff jmpq 5eb4d8 : COMPARE_NODE_FIELD(joinaliasvars); : COMPARE_NODE_FIELD(functions); : COMPARE_SCALAR_FIELD(funcordinality); : COMPARE_NODE_FIELD(values_lists); : COMPARE_NODE_FIELD(values_collations); : COMPARE_STRING_FIELD(ctename); 0.00 : 5ee33f: 49 8b 74 24 48 mov 0x48(%r12),%rsi 0.00 : 5ee344: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee347: 0f 95 c0 setne %al 0.00 : 5ee34a: e9 0c e5 ff ff jmpq 5ec85b : COMPARE_SCALAR_FIELD(val.ival); : break; : case T_Float: : case T_String: : case T_BitString: : COMPARE_STRING_FIELD(val.str); 0.00 : 5ee34f: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5ee353: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee356: 0f 95 c0 setne %al 0.00 : 5ee359: eb 8d jmp 5ee2e8 : { : COMPARE_NODE_FIELD(granted_roles); : COMPARE_NODE_FIELD(grantee_roles); : COMPARE_SCALAR_FIELD(is_grant); : COMPARE_SCALAR_FIELD(admin_opt); : COMPARE_STRING_FIELD(grantor); 0.00 : 5ee35b: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ee360: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee363: 0f 95 c0 setne %al 0.00 : 5ee366: e9 de e6 ff ff jmpq 5eca49 : { : COMPARE_STRING_FIELD(catalogname); : COMPARE_STRING_FIELD(schemaname); : COMPARE_STRING_FIELD(relname); : COMPARE_SCALAR_FIELD(inhOpt); : COMPARE_SCALAR_FIELD(relpersistence); 0.00 : 5ee36b: 0f b6 43 24 movzbl 0x24(%rbx),%eax 0.00 : 5ee36f: 41 3a 44 24 24 cmp 0x24(%r12),%al 0.00 : 5ee374: 0f 85 0e e1 ff ff jne 5ec488 : COMPARE_NODE_FIELD(alias); 0.00 : 5ee37a: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ee37f: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 5ee383: e8 48 cd ff ff callq 5eb0d0 0.00 : 5ee388: 84 c0 test %al,%al 0.00 : 5ee38a: 0f 95 c2 setne %dl 0.00 : 5ee38d: e9 6b cd ff ff jmpq 5eb0fd : { : COMPARE_SCALAR_FIELD(subLinkType); : COMPARE_NODE_FIELD(testexpr); : COMPARE_NODE_FIELD(paramIds); : COMPARE_SCALAR_FIELD(plan_id); : COMPARE_STRING_FIELD(plan_name); 0.00 : 5ee392: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ee397: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee39a: 0f 95 c0 setne %al 0.00 : 5ee39d: e9 4c fb ff ff jmpq 5edeee : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5ee3a2: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 5ee3a6: 48 8b 4e 08 mov 0x8(%rsi),%rcx : if (lfirst_int(item_a) != lfirst_int(item_b)) : return false; : } : break; : case T_OidList: : forboth(item_a, a, item_b, b) 0.00 : 5ee3aa: 48 85 d2 test %rdx,%rdx 0.00 : 5ee3ad: 75 20 jne 5ee3cf 0.00 : 5ee3af: eb 23 jmp 5ee3d4 0.00 : 5ee3b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : if (lfirst_oid(item_a) != lfirst_oid(item_b)) 0.00 : 5ee3b8: 8b 02 mov (%rdx),%eax 0.00 : 5ee3ba: 3b 01 cmp (%rcx),%eax 0.00 : 5ee3bc: 0f 85 bd da ff ff jne 5ebe7f : if (lfirst_int(item_a) != lfirst_int(item_b)) : return false; : } : break; : case T_OidList: : forboth(item_a, a, item_b, b) 0.00 : 5ee3c2: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 5ee3c6: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 5ee3ca: 48 85 d2 test %rdx,%rdx 0.00 : 5ee3cd: 74 05 je 5ee3d4 0.00 : 5ee3cf: 48 85 c9 test %rcx,%rcx 0.00 : 5ee3d2: 75 e4 jne 5ee3b8 : if (lfirst_oid(item_a) != lfirst_oid(item_b)) : return false; : } : break; : default: : elog(ERROR, "unrecognized list node type: %d", 0.00 : 5ee3d4: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5ee3d9: e9 1f cd ff ff jmpq 5eb0fd 0.00 : 5ee3de: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 5ee3e2: 48 8b 4e 08 mov 0x8(%rsi),%rcx : if (!equal(lfirst(item_a), lfirst(item_b))) : return false; : } : break; : case T_IntList: : forboth(item_a, a, item_b, b) 0.00 : 5ee3e6: 48 85 d2 test %rdx,%rdx 0.00 : 5ee3e9: 75 1c jne 5ee407 0.00 : 5ee3eb: eb e7 jmp 5ee3d4 0.00 : 5ee3ed: 0f 1f 00 nopl (%rax) : { : if (lfirst_int(item_a) != lfirst_int(item_b)) 0.00 : 5ee3f0: 8b 02 mov (%rdx),%eax 0.00 : 5ee3f2: 3b 01 cmp (%rcx),%eax 0.00 : 5ee3f4: 0f 85 85 da ff ff jne 5ebe7f : if (!equal(lfirst(item_a), lfirst(item_b))) : return false; : } : break; : case T_IntList: : forboth(item_a, a, item_b, b) 0.00 : 5ee3fa: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 5ee3fe: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 5ee402: 48 85 d2 test %rdx,%rdx 0.00 : 5ee405: 74 cd je 5ee3d4 0.00 : 5ee407: 48 85 c9 test %rcx,%rcx 0.00 : 5ee40a: 75 e4 jne 5ee3f0 0.00 : 5ee40c: eb c6 jmp 5ee3d4 0.00 : 5ee40e: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 5ee412: 48 8b 46 08 mov 0x8(%rsi),%rax : * may not be worth doing... : */ : switch (a->type) : { : case T_List: : forboth(item_a, a, item_b, b) 0.00 : 5ee416: 48 85 d2 test %rdx,%rdx 0.00 : 5ee419: 74 b9 je 5ee3d4 0.00 : 5ee41b: 48 85 c0 test %rax,%rax 0.00 : 5ee41e: 66 90 xchg %ax,%ax 0.00 : 5ee420: 74 b2 je 5ee3d4 0.00 : 5ee422: 49 89 c4 mov %rax,%r12 0.00 : 5ee425: 48 89 d3 mov %rdx,%rbx 0.00 : 5ee428: eb 19 jmp 5ee443 0.00 : 5ee42a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ee430: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5ee434: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5ee439: 48 85 db test %rbx,%rbx 0.00 : 5ee43c: 74 96 je 5ee3d4 0.00 : 5ee43e: 4d 85 e4 test %r12,%r12 0.00 : 5ee441: 74 91 je 5ee3d4 : { : if (!equal(lfirst(item_a), lfirst(item_b))) 0.00 : 5ee443: 49 8b 34 24 mov (%r12),%rsi 0.00 : 5ee447: 48 8b 3b mov (%rbx),%rdi 0.00 : 5ee44a: e8 81 cc ff ff callq 5eb0d0 0.00 : 5ee44f: 84 c0 test %al,%al 0.00 : 5ee451: 75 dd jne 5ee430 : if (lfirst_oid(item_a) != lfirst_oid(item_b)) : return false; : } : break; : default: : elog(ERROR, "unrecognized list node type: %d", 0.00 : 5ee453: 31 d2 xor %edx,%edx 0.00 : 5ee455: e9 a3 cc ff ff jmpq 5eb0fd : static bool : _equalFetchStmt(const FetchStmt *a, const FetchStmt *b) : { : COMPARE_SCALAR_FIELD(direction); : COMPARE_SCALAR_FIELD(howMany); : COMPARE_STRING_FIELD(portalname); 0.00 : 5ee45a: 48 8b 76 10 mov 0x10(%rsi),%rsi 0.00 : 5ee45e: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee461: 0f 95 c0 setne %al 0.00 : 5ee464: e9 f3 d5 ff ff jmpq 5eba5c : _equalCommentStmt(const CommentStmt *a, const CommentStmt *b) : { : COMPARE_SCALAR_FIELD(objtype); : COMPARE_NODE_FIELD(objname); : COMPARE_NODE_FIELD(objargs); : COMPARE_STRING_FIELD(comment); 0.00 : 5ee469: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee46e: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee471: 0f 95 c0 setne %al 0.00 : 5ee474: e9 e7 f6 ff ff jmpq 5edb60 : _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) : { : COMPARE_STRING_FIELD(idxname); : COMPARE_NODE_FIELD(relation); : COMPARE_STRING_FIELD(accessMethod); : COMPARE_STRING_FIELD(tableSpace); 0.00 : 5ee479: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ee47e: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee481: 0f 95 c0 setne %al 0.00 : 5ee484: e9 cf e7 ff ff jmpq 5ecc58 : COMPARE_NODE_FIELD(indexParams); : COMPARE_NODE_FIELD(options); : COMPARE_NODE_FIELD(whereClause); : COMPARE_NODE_FIELD(excludeOpNames); : COMPARE_STRING_FIELD(idxcomment); 0.00 : 5ee489: 49 8b 74 24 48 mov 0x48(%r12),%rsi 0.00 : 5ee48e: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee491: 0f 95 c0 setne %al 0.00 : 5ee494: e9 44 e8 ff ff jmpq 5eccdd : { : COMPARE_NODE_FIELD(rel); : COMPARE_NODE_FIELD(colNames); : COMPARE_NODE_FIELD(options); : COMPARE_SCALAR_FIELD(onCommit); : COMPARE_STRING_FIELD(tableSpaceName); 0.00 : 5ee499: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ee49e: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee4a1: 0f 95 c0 setne %al 0.00 : 5ee4a4: e9 a6 f4 ff ff jmpq 5ed94f : static bool : _equalAlterDomainStmt(const AlterDomainStmt *a, const AlterDomainStmt *b) : { : COMPARE_SCALAR_FIELD(subtype); : COMPARE_NODE_FIELD(typeName); : COMPARE_STRING_FIELD(name); 0.00 : 5ee4a9: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 5ee4ae: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee4b1: 0f 95 c0 setne %al 0.00 : 5ee4b4: e9 b1 f8 ff ff jmpq 5edd6a : { : COMPARE_SCALAR_FIELD(objtype); : COMPARE_NODE_FIELD(objname); : COMPARE_NODE_FIELD(objargs); : COMPARE_STRING_FIELD(provider); : COMPARE_STRING_FIELD(label); 0.00 : 5ee4b9: 49 8b 74 24 20 mov 0x20(%r12),%rsi 0.00 : 5ee4be: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee4c1: 0f 95 c0 setne %al 0.00 : 5ee4c4: e9 24 f7 ff ff jmpq 5edbed : _equalSecLabelStmt(const SecLabelStmt *a, const SecLabelStmt *b) : { : COMPARE_SCALAR_FIELD(objtype); : COMPARE_NODE_FIELD(objname); : COMPARE_NODE_FIELD(objargs); : COMPARE_STRING_FIELD(provider); 0.00 : 5ee4c9: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 5ee4ce: 48 39 fe cmp %rdi,%rsi 0.00 : 5ee4d1: 0f 95 c0 setne %al 0.00 : 5ee4d4: e9 e7 f6 ff ff jmpq 5edbc0 : COMPARE_NODE_FIELD(relation); : COMPARE_NODE_FIELD(query); : COMPARE_NODE_FIELD(attlist); : COMPARE_SCALAR_FIELD(is_from); : COMPARE_SCALAR_FIELD(is_program); : COMPARE_STRING_FIELD(filename); 0.00 : 5ee4d9: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 5ee4de: 48 39 f7 cmp %rsi,%rdi 0.00 : 5ee4e1: 0f 95 c0 setne %al 0.00 : 5ee4e4: e9 e6 ef ff ff jmpq 5ed4cf Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/read.c:138 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005fef30 : : * code should add backslashes to a string constant to ensure it is treated : * as a single token. : */ : char * : pg_strtok(int *length) : { 0.00 : 5fef30: 55 push %rbp : char *local_str; /* working pointer to string */ : char *ret_str; /* start of token to return */ : : local_str = pg_strtok_ptr; 0.00 : 5fef31: 48 8b 0d d8 ca 57 00 mov 0x57cad8(%rip),%rcx # b7ba10 : * code should add backslashes to a string constant to ensure it is treated : * as a single token. : */ : char * : pg_strtok(int *length) : { 0.00 : 5fef38: 48 89 e5 mov %rsp,%rbp : char *local_str; /* working pointer to string */ : char *ret_str; /* start of token to return */ : : local_str = pg_strtok_ptr; : : while (*local_str == ' ' || *local_str == '\n' || *local_str == '\t') 0.00 : 5fef3b: eb 07 jmp 5fef44 0.00 : 5fef3d: 0f 1f 00 nopl (%rax) : local_str++; 0.00 : 5fef40: 48 83 c1 01 add $0x1,%rcx : char *local_str; /* working pointer to string */ : char *ret_str; /* start of token to return */ : : local_str = pg_strtok_ptr; : : while (*local_str == ' ' || *local_str == '\n' || *local_str == '\t') 0.00 : 5fef44: 0f b6 11 movzbl (%rcx),%edx 0.00 : 5fef47: 80 fa 20 cmp $0x20,%dl 0.00 : 5fef4a: 74 f4 je 5fef40 0.00 : 5fef4c: 80 fa 0a cmp $0xa,%dl 0.00 : 5fef4f: 74 ef je 5fef40 0.00 : 5fef51: 80 fa 09 cmp $0x9,%dl 0.00 : 5fef54: 74 ea je 5fef40 : local_str++; : : if (*local_str == '\0') 0.00 : 5fef56: 84 d2 test %dl,%dl 0.00 : 5fef58: 0f 84 9d 00 00 00 je 5feffb : /* : * Now pointing at start of next token. : */ : ret_str = local_str; : : if (*local_str == '(' || *local_str == ')' || 0.00 : 5fef5e: 8d 42 d8 lea -0x28(%rdx),%eax 0.00 : 5fef61: 3c 01 cmp $0x1,%al 0.00 : 5fef63: 76 63 jbe 5fefc8 0.00 : 5fef65: 80 fa 7b cmp $0x7b,%dl 0.00 : 5fef68: 74 5e je 5fefc8 0.00 : 5fef6a: 80 fa 7d cmp $0x7d,%dl 0.00 : 5fef6d: 49 89 c8 mov %rcx,%r8 0.00 : 5fef70: 75 0c jne 5fef7e 0.00 : 5fef72: eb 54 jmp 5fefc8 0.00 : 5fef74: 0f 1f 40 00 nopl 0x0(%rax) : *local_str != ' ' && *local_str != '\n' && : *local_str != '\t' && : *local_str != '(' && *local_str != ')' && : *local_str != '{' && *local_str != '}') : { : if (*local_str == '\\' && local_str[1] != '\0') 0.00 : 5fef78: 0f b6 16 movzbl (%rsi),%edx 0.00 : 5fef7b: 49 89 f0 mov %rsi,%r8 : local_str++; : } : else : { : /* Normal token, possibly containing backslashes */ : while (*local_str != '\0' && 0.00 : 5fef7e: 84 d2 test %dl,%dl 0.00 : 5fef80: 74 4a je 5fefcc 0.00 : 5fef82: 80 fa 20 cmp $0x20,%dl 0.00 : 5fef85: 74 45 je 5fefcc 0.00 : 5fef87: 80 fa 0a cmp $0xa,%dl 0.00 : 5fef8a: 74 40 je 5fefcc 0.00 : 5fef8c: 80 fa 09 cmp $0x9,%dl 0.00 : 5fef8f: 90 nop 0.00 : 5fef90: 74 3a je 5fefcc 0.00 : 5fef92: 80 fa 28 cmp $0x28,%dl 0.00 : 5fef95: 74 35 je 5fefcc 0.00 : 5fef97: 80 fa 29 cmp $0x29,%dl 0.00 : 5fef9a: 74 30 je 5fefcc /home/Computational/mark/src/postgres-andres/src/backend/nodes/read.c:138 100.00 : 5fef9c: 80 fa 7b cmp $0x7b,%dl 0.00 : 5fef9f: 90 nop 0.00 : 5fefa0: 74 2a je 5fefcc 0.00 : 5fefa2: 80 fa 7d cmp $0x7d,%dl 0.00 : 5fefa5: 74 25 je 5fefcc : *local_str != ' ' && *local_str != '\n' && : *local_str != '\t' && : *local_str != '(' && *local_str != ')' && : *local_str != '{' && *local_str != '}') : { : if (*local_str == '\\' && local_str[1] != '\0') 0.00 : 5fefa7: 80 fa 5c cmp $0x5c,%dl 0.00 : 5fefaa: 49 8d 70 01 lea 0x1(%r8),%rsi 0.00 : 5fefae: 66 90 xchg %ax,%ax 0.00 : 5fefb0: 75 c6 jne 5fef78 : local_str += 2; 0.00 : 5fefb2: 41 80 78 01 00 cmpb $0x0,0x1(%r8) : *local_str != ' ' && *local_str != '\n' && : *local_str != '\t' && : *local_str != '(' && *local_str != ')' && : *local_str != '{' && *local_str != '}') : { : if (*local_str == '\\' && local_str[1] != '\0') 0.00 : 5fefb7: 49 8d 70 01 lea 0x1(%r8),%rsi : local_str += 2; 0.00 : 5fefbb: 49 8d 40 02 lea 0x2(%r8),%rax 0.00 : 5fefbf: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 5fefc3: eb b3 jmp 5fef78 0.00 : 5fefc5: 0f 1f 00 nopl (%rax) : : if (*local_str == '(' || *local_str == ')' || : *local_str == '{' || *local_str == '}') : { : /* special 1-character token */ : local_str++; 0.00 : 5fefc8: 4c 8d 41 01 lea 0x1(%rcx),%r8 : else : local_str++; : } : } : : *length = local_str - ret_str; 0.00 : 5fefcc: 44 89 c0 mov %r8d,%eax 0.00 : 5fefcf: 29 c8 sub %ecx,%eax : : /* Recognize special case for "empty" token */ : if (*length == 2 && ret_str[0] == '<' && ret_str[1] == '>') 0.00 : 5fefd1: 83 f8 02 cmp $0x2,%eax : else : local_str++; : } : } : : *length = local_str - ret_str; 0.00 : 5fefd4: 89 07 mov %eax,(%rdi) : : /* Recognize special case for "empty" token */ : if (*length == 2 && ret_str[0] == '<' && ret_str[1] == '>') 0.00 : 5fefd6: 74 10 je 5fefe8 : *length = 0; : : pg_strtok_ptr = local_str; 0.00 : 5fefd8: 4c 89 05 31 ca 57 00 mov %r8,0x57ca31(%rip) # b7ba10 0.00 : 5fefdf: 48 89 c8 mov %rcx,%rax : : return ret_str; : } 0.00 : 5fefe2: c9 leaveq 0.00 : 5fefe3: c3 retq 0.00 : 5fefe4: 0f 1f 40 00 nopl 0x0(%rax) : } : : *length = local_str - ret_str; : : /* Recognize special case for "empty" token */ : if (*length == 2 && ret_str[0] == '<' && ret_str[1] == '>') 0.00 : 5fefe8: 80 39 3c cmpb $0x3c,(%rcx) 0.00 : 5fefeb: 75 eb jne 5fefd8 0.00 : 5fefed: 80 79 01 3e cmpb $0x3e,0x1(%rcx) 0.00 : 5feff1: 75 e5 jne 5fefd8 : *length = 0; 0.00 : 5feff3: c7 07 00 00 00 00 movl $0x0,(%rdi) 0.00 : 5feff9: eb dd jmp 5fefd8 : while (*local_str == ' ' || *local_str == '\n' || *local_str == '\t') : local_str++; : : if (*local_str == '\0') : { : *length = 0; 0.00 : 5feffb: c7 07 00 00 00 00 movl $0x0,(%rdi) : pg_strtok_ptr = local_str; 0.00 : 5ff001: 31 c0 xor %eax,%eax 0.00 : 5ff003: 48 89 0d 06 ca 57 00 mov %rcx,0x57ca06(%rip) # b7ba10 : *length = 0; : : pg_strtok_ptr = local_str; : : return ret_str; : } 0.00 : 5ff00a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:3952 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000603f00 : : * The per-attribute width estimates are cached for possible re-use while : * building join relations. : */ : static void : set_rel_width(PlannerInfo *root, RelOptInfo *rel) : { 0.00 : 603f00: 55 push %rbp 0.00 : 603f01: 48 89 e5 mov %rsp,%rbp 0.00 : 603f04: 41 57 push %r15 0.00 : 603f06: 49 89 f7 mov %rsi,%r15 0.00 : 603f09: 41 56 push %r14 0.00 : 603f0b: 41 55 push %r13 0.00 : 603f0d: 41 54 push %r12 0.00 : 603f0f: 53 push %rbx 0.00 : 603f10: 48 83 ec 18 sub $0x18,%rsp 0.00 : 603f14: 48 89 7d c8 mov %rdi,-0x38(%rbp) : Oid reloid = planner_rt_fetch(rel->relid, root)->relid; 0.00 : 603f18: 48 8b 57 40 mov 0x40(%rdi),%rdx 0.00 : 603f1c: 48 85 d2 test %rdx,%rdx 0.00 : 603f1f: 0f 84 d3 01 00 00 je 6040f8 0.00 : 603f25: 8b 46 58 mov 0x58(%rsi),%eax 0.00 : 603f28: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 603f2c: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 603f2f: 89 45 d0 mov %eax,-0x30(%rbp) : int32 tuple_width = 0; : bool have_wholerow_var = false; : ListCell *lc; : : foreach(lc, rel->reltargetlist) 0.00 : 603f32: 49 8b 47 20 mov 0x20(%r15),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 603f36: 48 85 c0 test %rax,%rax 0.00 : 603f39: 0f 84 b1 01 00 00 je 6040f0 0.00 : 603f3f: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 603f43: 4d 85 ed test %r13,%r13 0.00 : 603f46: 0f 84 a4 01 00 00 je 6040f0 0.00 : 603f4c: 45 31 f6 xor %r14d,%r14d 0.00 : 603f4f: c6 45 d7 00 movb $0x0,-0x29(%rbp) 0.00 : 603f53: eb 35 jmp 603f8a 0.00 : 603f55: 0f 1f 00 nopl (%rax) : item_width = get_typavgwidth(var->vartype, var->vartypmod); : Assert(item_width > 0); : rel->attr_widths[ndx] = item_width; : tuple_width += item_width; : } : else if (IsA(node, PlaceHolderVar)) 0.00 : 603f58: 3d 0c 02 00 00 cmp $0x20c,%eax 0.00 : 603f5d: 0f 84 d5 00 00 00 je 604038 : * or a ROW() representing a whole-row child Var, etc. Do what we : * can using the expression type information. : */ : int32 item_width; : : item_width = get_typavgwidth(exprType(node), exprTypmod(node)); 0.00 : 603f63: 4c 89 e7 mov %r12,%rdi 0.00 : 603f66: e8 85 d0 fd ff callq 5e0ff0 0.00 : 603f6b: 4c 89 e7 mov %r12,%rdi 0.00 : 603f6e: 89 c3 mov %eax,%ebx 0.00 : 603f70: e8 5b cd fd ff callq 5e0cd0 0.00 : 603f75: 89 de mov %ebx,%esi 0.00 : 603f77: 89 c7 mov %eax,%edi 0.00 : 603f79: e8 42 01 17 00 callq 7740c0 : Assert(item_width > 0); : tuple_width += item_width; 0.00 : 603f7e: 41 01 c6 add %eax,%r14d : Oid reloid = planner_rt_fetch(rel->relid, root)->relid; : int32 tuple_width = 0; : bool have_wholerow_var = false; : ListCell *lc; : : foreach(lc, rel->reltargetlist) 0.00 : 603f81: 4d 8b 6d 08 mov 0x8(%r13),%r13 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:3952 100.00 : 603f85: 4d 85 ed test %r13,%r13 0.00 : 603f88: 74 3e je 603fc8 : { : Node *node = (Node *) lfirst(lc); 0.00 : 603f8a: 4d 8b 65 00 mov 0x0(%r13),%r12 : * Ordinarily, a Var in a rel's reltargetlist must belong to that rel; : * but there are corner cases involving LATERAL references where that : * isn't so. If the Var has the wrong varno, fall through to the : * generic case (it doesn't seem worth the trouble to be any smarter). : */ : if (IsA(node, Var) && 0.00 : 603f8e: 41 8b 04 24 mov (%r12),%eax 0.00 : 603f92: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 603f97: 75 bf jne 603f58 0.00 : 603f99: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 603f9e: 41 3b 47 58 cmp 0x58(%r15),%eax 0.00 : 603fa2: 75 bf jne 603f63 : int32 item_width; : : Assert(var->varattno >= rel->min_attr); : Assert(var->varattno <= rel->max_attr); : : ndx = var->varattno - rel->min_attr; 0.00 : 603fa4: 41 0f b7 54 24 08 movzwl 0x8(%r12),%edx 0.00 : 603faa: 41 0f b7 47 64 movzwl 0x64(%r15),%eax : : /* : * If it's a whole-row Var, we'll deal with it below after we have : * already cached as many attr widths as possible. : */ : if (var->varattno == 0) 0.00 : 603faf: 66 85 d2 test %dx,%dx 0.00 : 603fb2: 0f 85 98 00 00 00 jne 604050 0.00 : 603fb8: c6 45 d7 01 movb $0x1,-0x29(%rbp) : Oid reloid = planner_rt_fetch(rel->relid, root)->relid; : int32 tuple_width = 0; : bool have_wholerow_var = false; : ListCell *lc; : : foreach(lc, rel->reltargetlist) 0.00 : 603fbc: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 603fc0: 4d 85 ed test %r13,%r13 0.00 : 603fc3: 75 c5 jne 603f8a 0.00 : 603fc5: 0f 1f 00 nopl (%rax) : : /* : * If we have a whole-row reference, estimate its width as the sum of : * per-column widths plus sizeof(HeapTupleHeaderData). : */ : if (have_wholerow_var) 0.00 : 603fc8: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 603fcc: 74 51 je 60401f : { : int32 wholerow_width = sizeof(HeapTupleHeaderData); : : if (reloid != InvalidOid) 0.00 : 603fce: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 603fd1: 85 c0 test %eax,%eax 0.00 : 603fd3: 0f 85 bf 00 00 00 jne 604098 : else : { : /* Do what we can with info for a phony rel */ : AttrNumber i; : : for (i = 1; i <= rel->max_attr; i++) 0.00 : 603fd9: 45 0f b7 47 66 movzwl 0x66(%r15),%r8d 0.00 : 603fde: 66 45 85 c0 test %r8w,%r8w 0.00 : 603fe2: 0f 8e 2c 01 00 00 jle 604114 : int32 wholerow_width = sizeof(HeapTupleHeaderData); : : if (reloid != InvalidOid) : { : /* Real relation, so estimate true tuple width */ : wholerow_width += get_relation_data_width(reloid, 0.00 : 603fe8: 41 0f bf 77 64 movswl 0x64(%r15),%esi 0.00 : 603fed: 49 8b 7f 70 mov 0x70(%r15),%rdi 0.00 : 603ff1: b9 18 00 00 00 mov $0x18,%ecx 0.00 : 603ff6: ba 01 00 00 00 mov $0x1,%edx 0.00 : 603ffb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* Do what we can with info for a phony rel */ : AttrNumber i; : : for (i = 1; i <= rel->max_attr; i++) : wholerow_width += rel->attr_widths[i - rel->min_attr]; 0.00 : 604000: 0f bf c2 movswl %dx,%eax : else : { : /* Do what we can with info for a phony rel */ : AttrNumber i; : : for (i = 1; i <= rel->max_attr; i++) 0.00 : 604003: 83 c2 01 add $0x1,%edx : wholerow_width += rel->attr_widths[i - rel->min_attr]; 0.00 : 604006: 29 f0 sub %esi,%eax 0.00 : 604008: 48 98 cltq 0.00 : 60400a: 03 0c 87 add (%rdi,%rax,4),%ecx : else : { : /* Do what we can with info for a phony rel */ : AttrNumber i; : : for (i = 1; i <= rel->max_attr; i++) 0.00 : 60400d: 66 41 39 d0 cmp %dx,%r8w 0.00 : 604011: 7d ed jge 604000 : wholerow_width += rel->attr_widths[i - rel->min_attr]; : } : : rel->attr_widths[0 - rel->min_attr] = wholerow_width; 0.00 : 604013: f7 de neg %esi : : /* : * Include the whole-row Var as part of the output tuple. Yes, that : * really is what happens at runtime. : */ : tuple_width += wholerow_width; 0.00 : 604015: 46 8d 34 31 lea (%rcx,%r14,1),%r14d : : for (i = 1; i <= rel->max_attr; i++) : wholerow_width += rel->attr_widths[i - rel->min_attr]; : } : : rel->attr_widths[0 - rel->min_attr] = wholerow_width; 0.00 : 604019: 48 63 c6 movslq %esi,%rax 0.00 : 60401c: 89 0c 87 mov %ecx,(%rdi,%rax,4) : */ : tuple_width += wholerow_width; : } : : Assert(tuple_width >= 0); : rel->width = tuple_width; 0.00 : 60401f: 45 89 77 18 mov %r14d,0x18(%r15) : } 0.00 : 604023: 48 83 c4 18 add $0x18,%rsp 0.00 : 604027: 5b pop %rbx 0.00 : 604028: 41 5c pop %r12 0.00 : 60402a: 41 5d pop %r13 0.00 : 60402c: 41 5e pop %r14 0.00 : 60402e: 41 5f pop %r15 0.00 : 604030: c9 leaveq 0.00 : 604031: c3 retq 0.00 : 604032: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : tuple_width += item_width; : } : else if (IsA(node, PlaceHolderVar)) : { : PlaceHolderVar *phv = (PlaceHolderVar *) node; : PlaceHolderInfo *phinfo = find_placeholder_info(root, phv, false); 0.00 : 604038: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 60403c: 31 d2 xor %edx,%edx 0.00 : 60403e: 4c 89 e6 mov %r12,%rsi 0.00 : 604041: e8 6a e3 02 00 callq 6323b0 : : tuple_width += phinfo->ph_width; 0.00 : 604046: 44 03 70 28 add 0x28(%rax),%r14d 0.00 : 60404a: e9 32 ff ff ff jmpq 603f81 0.00 : 60404f: 90 nop : int32 item_width; : : Assert(var->varattno >= rel->min_attr); : Assert(var->varattno <= rel->max_attr); : : ndx = var->varattno - rel->min_attr; 0.00 : 604050: 0f bf f2 movswl %dx,%esi : : /* : * The width may have been cached already (especially if it's a : * subquery), so don't duplicate effort. : */ : if (rel->attr_widths[ndx] > 0) 0.00 : 604053: 98 cwtl 0.00 : 604054: 49 8b 7f 70 mov 0x70(%r15),%rdi 0.00 : 604058: 89 f1 mov %esi,%ecx 0.00 : 60405a: 29 c1 sub %eax,%ecx 0.00 : 60405c: 48 63 d9 movslq %ecx,%rbx 0.00 : 60405f: 8b 04 9f mov (%rdi,%rbx,4),%eax 0.00 : 604062: 85 c0 test %eax,%eax 0.00 : 604064: 0f 8f 14 ff ff ff jg 603f7e : tuple_width += rel->attr_widths[ndx]; : continue; : } : : /* Try to get column width from statistics */ : if (reloid != InvalidOid && var->varattno > 0) 0.00 : 60406a: 8b 4d d0 mov -0x30(%rbp),%ecx 0.00 : 60406d: 85 c9 test %ecx,%ecx 0.00 : 60406f: 74 5f je 6040d0 0.00 : 604071: 66 85 d2 test %dx,%dx 0.00 : 604074: 7e 5a jle 6040d0 : { : item_width = get_attavgwidth(reloid, var->varattno); 0.00 : 604076: 8b 7d d0 mov -0x30(%rbp),%edi 0.00 : 604079: e8 02 e0 16 00 callq 772080 : if (item_width > 0) 0.00 : 60407e: 85 c0 test %eax,%eax : } : : /* Try to get column width from statistics */ : if (reloid != InvalidOid && var->varattno > 0) : { : item_width = get_attavgwidth(reloid, var->varattno); 0.00 : 604080: 89 c2 mov %eax,%edx : if (item_width > 0) 0.00 : 604082: 7e 4c jle 6040d0 : { : rel->attr_widths[ndx] = item_width; 0.00 : 604084: 49 8b 47 70 mov 0x70(%r15),%rax : tuple_width += item_width; 0.00 : 604088: 41 01 d6 add %edx,%r14d : if (reloid != InvalidOid && var->varattno > 0) : { : item_width = get_attavgwidth(reloid, var->varattno); : if (item_width > 0) : { : rel->attr_widths[ndx] = item_width; 0.00 : 60408b: 89 14 98 mov %edx,(%rax,%rbx,4) : tuple_width += item_width; : continue; 0.00 : 60408e: e9 ee fe ff ff jmpq 603f81 0.00 : 604093: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int32 wholerow_width = sizeof(HeapTupleHeaderData); : : if (reloid != InvalidOid) : { : /* Real relation, so estimate true tuple width */ : wholerow_width += get_relation_data_width(reloid, 0.00 : 604098: 49 0f bf 77 64 movswq 0x64(%r15),%rsi 0.00 : 60409d: 8b 7d d0 mov -0x30(%rbp),%edi 0.00 : 6040a0: 48 c1 e6 02 shl $0x2,%rsi 0.00 : 6040a4: 48 f7 de neg %rsi 0.00 : 6040a7: 49 03 77 70 add 0x70(%r15),%rsi 0.00 : 6040ab: e8 70 f0 02 00 callq 633120 0.00 : 6040b0: 41 0f bf 77 64 movswl 0x64(%r15),%esi 0.00 : 6040b5: 49 8b 7f 70 mov 0x70(%r15),%rdi 0.00 : 6040b9: 8d 48 18 lea 0x18(%rax),%ecx : : /* : * Include the whole-row Var as part of the output tuple. Yes, that : * really is what happens at runtime. : */ : tuple_width += wholerow_width; 0.00 : 6040bc: 46 8d 34 31 lea (%rcx,%r14,1),%r14d : : for (i = 1; i <= rel->max_attr; i++) : wholerow_width += rel->attr_widths[i - rel->min_attr]; : } : : rel->attr_widths[0 - rel->min_attr] = wholerow_width; 0.00 : 6040c0: f7 de neg %esi 0.00 : 6040c2: 48 63 c6 movslq %esi,%rax 0.00 : 6040c5: 89 0c 87 mov %ecx,(%rdi,%rax,4) 0.00 : 6040c8: e9 52 ff ff ff jmpq 60401f 0.00 : 6040cd: 0f 1f 00 nopl (%rax) : : /* : * Not a plain relation, or can't find statistics for it. Estimate : * using just the type info. : */ : item_width = get_typavgwidth(var->vartype, var->vartypmod); 0.00 : 6040d0: 41 8b 74 24 10 mov 0x10(%r12),%esi 0.00 : 6040d5: 41 8b 7c 24 0c mov 0xc(%r12),%edi 0.00 : 6040da: e8 e1 ff 16 00 callq 7740c0 : Assert(item_width > 0); : rel->attr_widths[ndx] = item_width; 0.00 : 6040df: 49 8b 57 70 mov 0x70(%r15),%rdx : tuple_width += item_width; 0.00 : 6040e3: 41 01 c6 add %eax,%r14d : * Not a plain relation, or can't find statistics for it. Estimate : * using just the type info. : */ : item_width = get_typavgwidth(var->vartype, var->vartypmod); : Assert(item_width > 0); : rel->attr_widths[ndx] = item_width; 0.00 : 6040e6: 89 04 9a mov %eax,(%rdx,%rbx,4) : * Ordinarily, a Var in a rel's reltargetlist must belong to that rel; : * but there are corner cases involving LATERAL references where that : * isn't so. If the Var has the wrong varno, fall through to the : * generic case (it doesn't seem worth the trouble to be any smarter). : */ : if (IsA(node, Var) && 0.00 : 6040e9: e9 93 fe ff ff jmpq 603f81 0.00 : 6040ee: 66 90 xchg %ax,%ax : : /* : * Include the whole-row Var as part of the output tuple. Yes, that : * really is what happens at runtime. : */ : tuple_width += wholerow_width; 0.00 : 6040f0: 45 31 f6 xor %r14d,%r14d 0.00 : 6040f3: e9 27 ff ff ff jmpq 60401f : * building join relations. : */ : static void : set_rel_width(PlannerInfo *root, RelOptInfo *rel) : { : Oid reloid = planner_rt_fetch(rel->relid, root)->relid; 0.00 : 6040f8: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 6040fc: 8b 76 58 mov 0x58(%rsi),%esi 0.00 : 6040ff: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 604103: 83 ee 01 sub $0x1,%esi 0.00 : 604106: 48 8b 78 38 mov 0x38(%rax),%rdi 0.00 : 60410a: e8 51 d3 fd ff callq 5e1460 0.00 : 60410f: e9 18 fe ff ff jmpq 603f2c : else : { : /* Do what we can with info for a phony rel */ : AttrNumber i; : : for (i = 1; i <= rel->max_attr; i++) 0.00 : 604114: b9 18 00 00 00 mov $0x18,%ecx 0.00 : 604119: 49 8b 7f 70 mov 0x70(%r15),%rdi 0.00 : 60411d: 41 0f bf 77 64 movswl 0x64(%r15),%esi 0.00 : 604122: e9 ec fe ff ff jmpq 604013 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:2872 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000605fe0 : : initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace, : JoinType jointype, : Path *outer_path, Path *inner_path, : SpecialJoinInfo *sjinfo, : SemiAntiJoinFactors *semifactors) : { 0.00 : 605fe0: 55 push %rbp 0.00 : 605fe1: 48 89 e5 mov %rsp,%rbp 0.00 : 605fe4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 605fe8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 605fec: 4c 89 c3 mov %r8,%rbx 0.00 : 605fef: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 605ff3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 605ff7: 48 83 ec 70 sub $0x70,%rsp : static void : cost_rescan(PlannerInfo *root, Path *path, : Cost *rescan_startup_cost, /* output parameters */ : Cost *rescan_total_cost) : { : switch (path->pathtype) 0.00 : 605ffb: 41 8b 40 04 mov 0x4(%r8),%eax : initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace, : JoinType jointype, : Path *outer_path, Path *inner_path, : SpecialJoinInfo *sjinfo, : SemiAntiJoinFactors *semifactors) : { 0.00 : 605fff: 49 89 f5 mov %rsi,%r13 0.00 : 606002: 41 89 d6 mov %edx,%r14d 0.00 : 606005: 49 89 cc mov %rcx,%r12 : Cost startup_cost = 0; : Cost run_cost = 0; : double outer_path_rows = outer_path->rows; 0.00 : 606008: f2 0f 10 79 18 movsd 0x18(%rcx),%xmm7 : static void : cost_rescan(PlannerInfo *root, Path *path, : Cost *rescan_startup_cost, /* output parameters */ : Cost *rescan_total_cost) : { : switch (path->pathtype) 0.00 : 60600d: 83 e8 74 sub $0x74,%eax 0.00 : 606010: 83 f8 0a cmp $0xa,%eax 0.00 : 606013: 0f 86 b7 00 00 00 jbe 6060d0 : *rescan_startup_cost = 0; : *rescan_total_cost = run_cost; : } : break; : default: : *rescan_startup_cost = path->startup_cost; 0.00 : 606019: f2 0f 10 73 20 movsd 0x20(%rbx),%xmm6 : *rescan_total_cost = path->total_cost; 0.00 : 60601e: f2 0f 10 6b 28 movsd 0x28(%rbx),%xmm5 0.00 : 606023: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 606027: 66 0f 28 ce movapd %xmm6,%xmm1 0.00 : 60602b: f2 0f 5c ee subsd %xmm6,%xmm5 0.00 : 60602f: 66 0f 28 dd movapd %xmm5,%xmm3 : * NOTE: clearly, we must pay both outer and inner paths' startup_cost : * before we can start returning tuples, so the join's startup cost is : * their sum. We'll also pay the inner path's rescan startup cost : * multiple times. : */ : startup_cost += outer_path->startup_cost + inner_path->startup_cost; 0.00 : 606033: f2 41 0f 10 44 24 20 movsd 0x20(%r12),%xmm0 0.00 : 60603a: 66 0f 28 e0 movapd %xmm0,%xmm4 0.00 : 60603e: f2 0f 58 e1 addsd %xmm1,%xmm4 : run_cost += outer_path->total_cost - outer_path->startup_cost; 0.00 : 606042: f2 41 0f 10 4c 24 28 movsd 0x28(%r12),%xmm1 0.00 : 606049: f2 0f 5c c8 subsd %xmm0,%xmm1 : * NOTE: clearly, we must pay both outer and inner paths' startup_cost : * before we can start returning tuples, so the join's startup cost is : * their sum. We'll also pay the inner path's rescan startup cost : * multiple times. : */ : startup_cost += outer_path->startup_cost + inner_path->startup_cost; 0.00 : 60604d: f2 0f 58 e2 addsd %xmm2,%xmm4 : run_cost += outer_path->total_cost - outer_path->startup_cost; 0.00 : 606051: f2 0f 58 ca addsd %xmm2,%xmm1 : if (outer_path_rows > 1) 0.00 : 606055: f2 0f 10 15 fb 90 1a movsd 0x1a90fb(%rip),%xmm2 # 7af158 <__func__.15777+0x10> 0.00 : 60605c: 00 0.00 : 60605d: 66 0f 2e fa ucomisd %xmm2,%xmm7 0.00 : 606061: 76 10 jbe 606073 : run_cost += (outer_path_rows - 1) * inner_rescan_start_cost; 0.00 : 606063: 66 0f 28 c7 movapd %xmm7,%xmm0 0.00 : 606067: f2 0f 5c c2 subsd %xmm2,%xmm0 0.00 : 60606b: f2 0f 59 c6 mulsd %xmm6,%xmm0 0.00 : 60606f: f2 0f 58 c8 addsd %xmm0,%xmm1 : : inner_run_cost = inner_path->total_cost - inner_path->startup_cost; : inner_rescan_run_cost = inner_rescan_total_cost - inner_rescan_start_cost; : : if (jointype == JOIN_SEMI || jointype == JOIN_ANTI) 0.00 : 606073: 41 8d 46 fc lea -0x4(%r14),%eax 0.00 : 606077: 83 f8 01 cmp $0x1,%eax 0.00 : 60607a: 0f 86 18 01 00 00 jbe 606198 : workspace->inner_scan_frac = inner_scan_frac; : } : else : { : /* Normal case; we'll scan whole input rel for each outer row */ : run_cost += inner_run_cost; 0.00 : 606080: f2 0f 58 cb addsd %xmm3,%xmm1 : if (outer_path_rows > 1) 0.00 : 606084: 66 0f 2e fa ucomisd %xmm2,%xmm7 0.00 : 606088: 76 0c jbe 606096 : run_cost += (outer_path_rows - 1) * inner_rescan_run_cost; 0.00 : 60608a: f2 0f 5c fa subsd %xmm2,%xmm7 0.00 : 60608e: f2 0f 59 fd mulsd %xmm5,%xmm7 0.00 : 606092: f2 0f 58 cf addsd %xmm7,%xmm1 : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; : workspace->total_cost = startup_cost + run_cost; 0.00 : 606096: 66 0f 28 c4 movapd %xmm4,%xmm0 : } : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; 0.00 : 60609a: f2 41 0f 11 65 00 movsd %xmm4,0x0(%r13) : workspace->total_cost = startup_cost + run_cost; : /* Save private data for final_cost_nestloop */ : workspace->run_cost = run_cost; 0.00 : 6060a0: f2 41 0f 11 4d 10 movsd %xmm1,0x10(%r13) : workspace->inner_rescan_run_cost = inner_rescan_run_cost; : } 0.00 : 6060a6: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 6060aa: 4c 8b 65 e8 mov -0x18(%rbp),%r12 : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; : workspace->total_cost = startup_cost + run_cost; 0.00 : 6060ae: f2 0f 58 c1 addsd %xmm1,%xmm0 : /* Save private data for final_cost_nestloop */ : workspace->run_cost = run_cost; : workspace->inner_rescan_run_cost = inner_rescan_run_cost; 0.00 : 6060b2: f2 41 0f 11 6d 18 movsd %xmm5,0x18(%r13) : } 0.00 : 6060b8: 4c 8b 75 f8 mov -0x8(%rbp),%r14 : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; : workspace->total_cost = startup_cost + run_cost; 0.00 : 6060bc: f2 41 0f 11 45 08 movsd %xmm0,0x8(%r13) : /* Save private data for final_cost_nestloop */ : workspace->run_cost = run_cost; : workspace->inner_rescan_run_cost = inner_rescan_run_cost; : } 0.00 : 6060c2: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 6060c6: c9 leaveq 0.00 : 6060c7: c3 retq 0.00 : 6060c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6060cf: 00 : static void : cost_rescan(PlannerInfo *root, Path *path, : Cost *rescan_startup_cost, /* output parameters */ : Cost *rescan_total_cost) : { : switch (path->pathtype) 0.00 : 6060d0: 89 c0 mov %eax,%eax 0.00 : 6060d2: ff 24 c5 10 a5 89 00 jmpq *0x89a510(,%rax,8) 0.00 : 6060d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Assume that all of the startup cost represents hash table : * building, which we won't have to do over. : */ : *rescan_startup_cost = 0; : *rescan_total_cost = path->total_cost - path->startup_cost; 0.00 : 6060e0: f2 41 0f 10 48 20 movsd 0x20(%r8),%xmm1 0.00 : 6060e6: f2 41 0f 10 58 28 movsd 0x28(%r8),%xmm3 0.00 : 6060ec: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 6060f0: f2 0f 5c d9 subsd %xmm1,%xmm3 0.00 : 6060f4: 66 0f 28 f2 movapd %xmm2,%xmm6 0.00 : 6060f8: 66 0f 28 eb movapd %xmm3,%xmm5 0.00 : 6060fc: e9 32 ff ff ff jmpq 606033 0.00 : 606101: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * These plan types materialize their final result in a : * tuplestore or tuplesort object. So the rescan cost is only : * cpu_tuple_cost per tuple, unless the result is large enough : * to spill to disk. : */ : Cost run_cost = cpu_tuple_cost * path->rows; 0.00 : 606108: f2 41 0f 10 48 18 movsd 0x18(%r8),%xmm1 0.00 : 60610e: 66 0f 28 e1 movapd %xmm1,%xmm4 0.00 : 606112: f2 0f 59 25 66 24 56 mulsd 0x562466(%rip),%xmm4 # b68580 0.00 : 606119: 00 : * of a given width (size in bytes). : */ : static double : relation_byte_size(double tuples, int width) : { : return tuples * (MAXALIGN(width) + MAXALIGN(sizeof(HeapTupleHeaderData))); 0.00 : 60611a: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 60611e: 48 63 40 18 movslq 0x18(%rax),%rax 0.00 : 606122: 48 83 c0 07 add $0x7,%rax 0.00 : 606126: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 60612a: 48 83 c0 18 add $0x18,%rax 0.00 : 60612e: 0f 88 3c 01 00 00 js 606270 0.00 : 606134: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 : Cost run_cost = cpu_operator_cost * path->rows; : double nbytes = relation_byte_size(path->rows, : path->parent->width); : long work_mem_bytes = work_mem * 1024L; : : if (nbytes > work_mem_bytes) 0.00 : 606139: 48 63 05 d8 29 56 00 movslq 0x5629d8(%rip),%rax # b68b18 : * of a given width (size in bytes). : */ : static double : relation_byte_size(double tuples, int width) : { : return tuples * (MAXALIGN(width) + MAXALIGN(sizeof(HeapTupleHeaderData))); 0.00 : 606140: f2 0f 59 c8 mulsd %xmm0,%xmm1 : Cost run_cost = cpu_operator_cost * path->rows; : double nbytes = relation_byte_size(path->rows, : path->parent->width); : long work_mem_bytes = work_mem * 1024L; : : if (nbytes > work_mem_bytes) 0.00 : 606144: 48 c1 e0 0a shl $0xa,%rax 0.00 : 606148: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 60614d: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 606151: 0f 87 c9 00 00 00 ja 606220 0.00 : 606157: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 60615b: f2 0f 10 4b 20 movsd 0x20(%rbx),%xmm1 0.00 : 606160: 66 0f 28 ec movapd %xmm4,%xmm5 0.00 : 606164: f2 0f 10 5b 28 movsd 0x28(%rbx),%xmm3 0.00 : 606169: 66 0f 28 f2 movapd %xmm2,%xmm6 0.00 : 60616d: f2 0f 5c d9 subsd %xmm1,%xmm3 0.00 : 606171: e9 bd fe ff ff jmpq 606033 0.00 : 606176: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 60617d: 00 00 00 : * even cheaper to rescan than the ones above. We charge only : * cpu_operator_cost per tuple. (Note: keep that in sync with : * the run_cost charge in cost_sort, and also see comments in : * cost_material before you change it.) : */ : Cost run_cost = cpu_operator_cost * path->rows; 0.00 : 606180: f2 41 0f 10 48 18 movsd 0x18(%r8),%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:2872 100.00 : 606186: 66 0f 28 e1 movapd %xmm1,%xmm4 0.00 : 60618a: f2 0f 59 25 fe 23 56 mulsd 0x5623fe(%rip),%xmm4 # b68590 0.00 : 606191: 00 0.00 : 606192: eb 86 jmp 60611a 0.00 : 606194: 0f 1f 40 00 nopl 0x0(%rax) : * estimate whether that will happen, so be conservative and always : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); 0.00 : 606198: 48 8b 45 10 mov 0x10(%rbp),%rax : * it might be (depending on the plan type) that we'd never pay the : * whole inner first-scan run cost. However it is difficult to : * estimate whether that will happen, so be conservative and always : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; 0.00 : 60619c: f2 0f 58 cb addsd %xmm3,%xmm1 : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); 0.00 : 6061a0: f2 0f 59 38 mulsd (%rax),%xmm7 0.00 : 6061a4: f2 0f 11 55 c0 movsd %xmm2,-0x40(%rbp) 0.00 : 6061a9: f2 0f 11 4d d0 movsd %xmm1,-0x30(%rbp) 0.00 : 6061ae: f2 0f 11 65 b0 movsd %xmm4,-0x50(%rbp) 0.00 : 6061b3: f2 0f 11 6d a0 movsd %xmm5,-0x60(%rbp) 0.00 : 6061b8: 66 0f 28 c7 movapd %xmm7,%xmm0 0.00 : 6061bc: e8 3f 37 e6 ff callq 469900 : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061c1: 48 8b 45 10 mov 0x10(%rbp),%rax : * estimate whether that will happen, so be conservative and always : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); 0.00 : 6061c5: 66 0f 28 f0 movapd %xmm0,%xmm6 : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061c9: f2 0f 10 55 c0 movsd -0x40(%rbp),%xmm2 0.00 : 6061ce: f2 0f 10 1d 82 c4 1a movsd 0x1ac482(%rip),%xmm3 # 7b2658 <__func__.14520+0x17> 0.00 : 6061d5: 00 0.00 : 6061d6: f2 0f 10 40 08 movsd 0x8(%rax),%xmm0 : : /* Add inner run cost for additional outer tuples having matches */ : if (outer_matched_rows > 1) 0.00 : 6061db: 66 0f 2e f2 ucomisd %xmm2,%xmm6 0.00 : 6061df: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061e4: f2 0f 58 c2 addsd %xmm2,%xmm0 : : /* Add inner run cost for additional outer tuples having matches */ : if (outer_matched_rows > 1) 0.00 : 6061e8: f2 0f 10 65 b0 movsd -0x50(%rbp),%xmm4 0.00 : 6061ed: f2 0f 10 6d a0 movsd -0x60(%rbp),%xmm5 : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061f2: f2 0f 5e d8 divsd %xmm0,%xmm3 : : /* Add inner run cost for additional outer tuples having matches */ : if (outer_matched_rows > 1) 0.00 : 6061f6: 76 14 jbe 60620c : run_cost += (outer_matched_rows - 1) * inner_rescan_run_cost * inner_scan_frac; 0.00 : 6061f8: 66 0f 28 c6 movapd %xmm6,%xmm0 0.00 : 6061fc: f2 0f 5c c2 subsd %xmm2,%xmm0 0.00 : 606200: f2 0f 59 c5 mulsd %xmm5,%xmm0 0.00 : 606204: f2 0f 59 c3 mulsd %xmm3,%xmm0 0.00 : 606208: f2 0f 58 c8 addsd %xmm0,%xmm1 : * The cost of processing unmatched rows varies depending on the : * details of the joinclauses, so we leave that part for later. : */ : : /* Save private data for final_cost_nestloop */ : workspace->outer_matched_rows = outer_matched_rows; 0.00 : 60620c: f2 41 0f 11 75 20 movsd %xmm6,0x20(%r13) : workspace->inner_scan_frac = inner_scan_frac; 0.00 : 606212: f2 41 0f 11 5d 28 movsd %xmm3,0x28(%r13) 0.00 : 606218: e9 79 fe ff ff jmpq 606096 0.00 : 60621d: 0f 1f 00 nopl (%rax) : long work_mem_bytes = work_mem * 1024L; : : if (nbytes > work_mem_bytes) : { : /* It will spill, so account for re-read cost */ : double npages = ceil(nbytes / BLCKSZ); 0.00 : 606220: f2 0f 59 0d 10 be 1a mulsd 0x1abe10(%rip),%xmm1 # 7b2038 <__func__.15386+0x28> 0.00 : 606227: 00 0.00 : 606228: f2 0f 11 65 b0 movsd %xmm4,-0x50(%rbp) 0.00 : 60622d: f2 0f 11 7d 90 movsd %xmm7,-0x70(%rbp) 0.00 : 606232: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 606236: e8 65 32 e6 ff callq 4694a0 0.00 : 60623b: 66 0f 28 e8 movapd %xmm0,%xmm5 : : run_cost += seq_page_cost * npages; 0.00 : 60623f: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 606243: f2 0f 59 2d 25 23 56 mulsd 0x562325(%rip),%xmm5 # b68570 0.00 : 60624a: 00 0.00 : 60624b: f2 0f 10 4b 20 movsd 0x20(%rbx),%xmm1 0.00 : 606250: f2 0f 10 5b 28 movsd 0x28(%rbx),%xmm3 0.00 : 606255: 66 0f 28 f2 movapd %xmm2,%xmm6 0.00 : 606259: f2 0f 10 65 b0 movsd -0x50(%rbp),%xmm4 0.00 : 60625e: f2 0f 5c d9 subsd %xmm1,%xmm3 0.00 : 606262: f2 0f 10 7d 90 movsd -0x70(%rbp),%xmm7 0.00 : 606267: f2 0f 58 ec addsd %xmm4,%xmm5 0.00 : 60626b: e9 c3 fd ff ff jmpq 606033 : * of a given width (size in bytes). : */ : static double : relation_byte_size(double tuples, int width) : { : return tuples * (MAXALIGN(width) + MAXALIGN(sizeof(HeapTupleHeaderData))); 0.00 : 606270: 48 d1 e8 shr %rax 0.00 : 606273: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 606278: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 60627c: e9 b8 fe ff ff jmpq 606139 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:195 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000607850 : : * 'param_info' is the ParamPathInfo if this is a parameterized path, else NULL : */ : void : cost_seqscan(Path *path, PlannerInfo *root, : RelOptInfo *baserel, ParamPathInfo *param_info) : { 0.00 : 607850: 55 push %rbp 0.00 : 607851: 48 89 e5 mov %rsp,%rbp 0.00 : 607854: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 607858: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 60785c: 48 89 d3 mov %rdx,%rbx 0.00 : 60785f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 607863: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 607867: 48 83 ec 50 sub $0x50,%rsp : /* Should only be applied to base relations */ : Assert(baserel->relid > 0); : Assert(baserel->rtekind == RTE_RELATION); : : /* Mark the path with the correct row estimate */ : if (param_info) 0.00 : 60786b: 48 85 c9 test %rcx,%rcx : * 'param_info' is the ParamPathInfo if this is a parameterized path, else NULL : */ : void : cost_seqscan(Path *path, PlannerInfo *root, : RelOptInfo *baserel, ParamPathInfo *param_info) : { 0.00 : 60786e: 49 89 fd mov %rdi,%r13 0.00 : 607871: 49 89 f6 mov %rsi,%r14 0.00 : 607874: 49 89 cc mov %rcx,%r12 : /* Should only be applied to base relations */ : Assert(baserel->relid > 0); : Assert(baserel->rtekind == RTE_RELATION); : : /* Mark the path with the correct row estimate */ : if (param_info) 0.00 : 607877: 0f 84 cb 00 00 00 je 607948 : path->rows = param_info->ppi_rows; 0.00 : 60787d: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 607881: 48 89 47 18 mov %rax,0x18(%rdi) : else : path->rows = baserel->rows; : : if (!enable_seqscan) 0.00 : 607885: 80 3d 1c 0d 56 00 00 cmpb $0x0,0x560d1c(%rip) # b685a8 0.00 : 60788c: 0f 85 9e 00 00 00 jne 607930 : startup_cost += disable_cost; 0.00 : 607892: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 607896: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) 0.00 : 60789b: f2 0f 58 05 fd 0c 56 addsd 0x560cfd(%rip),%xmm0 # b685a0 0.00 : 6078a2: 00 0.00 : 6078a3: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) : : /* fetch estimated page cost for tablespace containing table */ : get_tablespace_page_costs(baserel->reltablespace, 0.00 : 6078a8: 8b 7b 5c mov 0x5c(%rbx),%edi 0.00 : 6078ab: 48 8d 55 d8 lea -0x28(%rbp),%rdx 0.00 : 6078af: 31 f6 xor %esi,%esi 0.00 : 6078b1: e8 fa 9c 16 00 callq 7715b0 : &spc_seq_page_cost); : : /* : * disk costs : */ : run_cost += spc_seq_page_cost * baserel->pages; 0.00 : 6078b6: 8b 83 98 00 00 00 mov 0x98(%rbx),%eax : : /* CPU costs */ : get_restriction_qual_cost(root, baserel, param_info, &qpqual_cost); 0.00 : 6078bc: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 6078c0: 4c 89 e2 mov %r12,%rdx 0.00 : 6078c3: 48 89 de mov %rbx,%rsi 0.00 : 6078c6: 4c 89 f7 mov %r14,%rdi : &spc_seq_page_cost); : : /* : * disk costs : */ : run_cost += spc_seq_page_cost * baserel->pages; 0.00 : 6078c9: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 6078ce: f2 0f 59 45 d8 mulsd -0x28(%rbp),%xmm0 0.00 : 6078d3: f2 0f 58 45 b0 addsd -0x50(%rbp),%xmm0 0.00 : 6078d8: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) : : /* CPU costs */ : get_restriction_qual_cost(root, baserel, param_info, &qpqual_cost); 0.00 : 6078dd: e8 ae d4 ff ff callq 604d90 : : startup_cost += qpqual_cost.startup; : cpu_per_tuple = cpu_tuple_cost + qpqual_cost.per_tuple; : run_cost += cpu_per_tuple * baserel->tuples; 0.00 : 6078e2: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 : run_cost += spc_seq_page_cost * baserel->pages; : : /* CPU costs */ : get_restriction_qual_cost(root, baserel, param_info, &qpqual_cost); : : startup_cost += qpqual_cost.startup; 0.00 : 6078e7: f2 0f 10 4d b8 movsd -0x48(%rbp),%xmm1 : cpu_per_tuple = cpu_tuple_cost + qpqual_cost.per_tuple; : run_cost += cpu_per_tuple * baserel->tuples; : : path->startup_cost = startup_cost; : path->total_cost = startup_cost + run_cost; : } 0.00 : 6078ec: 4c 8b 65 e8 mov -0x18(%rbp),%r12 : /* CPU costs */ : get_restriction_qual_cost(root, baserel, param_info, &qpqual_cost); : : startup_cost += qpqual_cost.startup; : cpu_per_tuple = cpu_tuple_cost + qpqual_cost.per_tuple; : run_cost += cpu_per_tuple * baserel->tuples; 0.00 : 6078f0: f2 0f 58 05 88 0c 56 addsd 0x560c88(%rip),%xmm0 # b68580 0.00 : 6078f7: 00 : : path->startup_cost = startup_cost; : path->total_cost = startup_cost + run_cost; : } 0.00 : 6078f8: 4c 8b 75 f8 mov -0x8(%rbp),%r14 : run_cost += spc_seq_page_cost * baserel->pages; : : /* CPU costs */ : get_restriction_qual_cost(root, baserel, param_info, &qpqual_cost); : : startup_cost += qpqual_cost.startup; 0.00 : 6078fc: f2 0f 58 4d c0 addsd -0x40(%rbp),%xmm1 : cpu_per_tuple = cpu_tuple_cost + qpqual_cost.per_tuple; : run_cost += cpu_per_tuple * baserel->tuples; 0.00 : 607901: f2 0f 59 83 a0 00 00 mulsd 0xa0(%rbx),%xmm0 0.00 : 607908: 00 : : path->startup_cost = startup_cost; : path->total_cost = startup_cost + run_cost; : } 0.00 : 607909: 48 8b 5d e0 mov -0x20(%rbp),%rbx : : startup_cost += qpqual_cost.startup; : cpu_per_tuple = cpu_tuple_cost + qpqual_cost.per_tuple; : run_cost += cpu_per_tuple * baserel->tuples; : : path->startup_cost = startup_cost; 0.00 : 60790d: f2 41 0f 11 4d 20 movsd %xmm1,0x20(%r13) : /* CPU costs */ : get_restriction_qual_cost(root, baserel, param_info, &qpqual_cost); : : startup_cost += qpqual_cost.startup; : cpu_per_tuple = cpu_tuple_cost + qpqual_cost.per_tuple; : run_cost += cpu_per_tuple * baserel->tuples; 0.00 : 607913: f2 0f 58 45 b0 addsd -0x50(%rbp),%xmm0 : : path->startup_cost = startup_cost; : path->total_cost = startup_cost + run_cost; 0.00 : 607918: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 60791c: f2 41 0f 11 4d 28 movsd %xmm1,0x28(%r13) : } 0.00 : 607922: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 607926: c9 leaveq 0.00 : 607927: c3 retq 0.00 : 607928: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 60792f: 00 : if (param_info) : path->rows = param_info->ppi_rows; : else : path->rows = baserel->rows; : : if (!enable_seqscan) 0.00 : 607930: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 607934: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) 0.00 : 607939: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) 0.00 : 60793e: e9 65 ff ff ff jmpq 6078a8 0.00 : 607943: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* Mark the path with the correct row estimate */ : if (param_info) : path->rows = param_info->ppi_rows; : else : path->rows = baserel->rows; /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:195 100.00 : 607948: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 60794c: 48 89 47 18 mov %rax,0x18(%rdi) 0.00 : 607950: e9 30 ff ff ff jmpq 607885 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:2167 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000060c470 : : */ : static void : match_clause_to_index(IndexOptInfo *index, : RestrictInfo *rinfo, : IndexClauseSet *clauseset) : { 0.00 : 60c470: 55 push %rbp 0.00 : 60c471: 48 89 e5 mov %rsp,%rbp 0.00 : 60c474: 41 57 push %r15 0.00 : 60c476: 41 56 push %r14 0.00 : 60c478: 41 55 push %r13 0.00 : 60c47a: 41 54 push %r12 0.00 : 60c47c: 53 push %rbx 0.00 : 60c47d: 48 89 fb mov %rdi,%rbx 0.00 : 60c480: 48 83 ec 68 sub $0x68,%rsp 0.00 : 60c484: 48 89 75 80 mov %rsi,-0x80(%rbp) 0.00 : 60c488: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) : int indexcol; : : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60c48f: 44 8b 67 2c mov 0x2c(%rdi),%r12d 0.00 : 60c493: 45 85 e4 test %r12d,%r12d 0.00 : 60c496: 0f 8e e7 00 00 00 jle 60c583 0.00 : 60c49c: 45 31 ed xor %r13d,%r13d 0.00 : 60c49f: eb 69 jmp 60c50a 0.00 : 60c4a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : if (rinfo->pseudoconstant) : return false; : : /* First check for boolean-index cases. */ : if (IsBooleanOpfamily(opfamily)) 0.00 : 60c4a8: 41 81 fe ae 08 00 00 cmp $0x8ae,%r14d 0.00 : 60c4af: 0f 84 94 00 00 00 je 60c549 : * Clause must be a binary opclause, or possibly a ScalarArrayOpExpr : * (which is always binary, by definition). Or it could be a : * RowCompareExpr, which we pass off to match_rowcompare_to_indexcol(). : * Or, if the index supports it, we can handle IS NULL/NOT NULL clauses. : */ : if (is_opclause(clause)) 0.00 : 60c4b5: 4d 85 e4 test %r12,%r12 0.00 : 60c4b8: 74 27 je 60c4e1 0.00 : 60c4ba: 41 8b 04 24 mov (%r12),%eax 0.00 : 60c4be: 3d 37 01 00 00 cmp $0x137,%eax 0.00 : 60c4c3: 0f 84 af 01 00 00 je 60c678 : right_relids = rinfo->right_relids; : expr_op = ((OpExpr *) clause)->opno; : expr_coll = ((OpExpr *) clause)->inputcollid; : plain_op = true; : } : else if (clause && IsA(clause, ScalarArrayOpExpr)) 0.00 : 60c4c9: 3d 3a 01 00 00 cmp $0x13a,%eax 0.00 : 60c4ce: 66 90 xchg %ax,%ax 0.00 : 60c4d0: 0f 84 c2 00 00 00 je 60c598 : right_relids = pull_varnos(rightop); : expr_op = saop->opno; : expr_coll = saop->inputcollid; : plain_op = false; : } : else if (clause && IsA(clause, RowCompareExpr)) 0.00 : 60c4d6: 3d 4b 01 00 00 cmp $0x14b,%eax 0.00 : 60c4db: 0f 84 6f 02 00 00 je 60c750 : { : return match_rowcompare_to_indexcol(index, indexcol, : opfamily, idxcollation, : (RowCompareExpr *) clause); : } : else if (index->amsearchnulls && IsA(clause, NullTest)) 0.00 : 60c4e1: 80 bb 90 00 00 00 00 cmpb $0x0,0x90(%rbx) 0.00 : 60c4e8: 74 16 je 60c500 0.00 : 60c4ea: 41 81 3c 24 4f 01 00 cmpl $0x14f,(%r12) 0.00 : 60c4f1: 00 0.00 : 60c4f2: 0f 84 28 02 00 00 je 60c720 0.00 : 60c4f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 60c4ff: 00 : RestrictInfo *rinfo, : IndexClauseSet *clauseset) : { : int indexcol; : : for (indexcol = 0; indexcol < index->ncolumns; indexcol++) 0.00 : 60c500: 41 83 c5 01 add $0x1,%r13d 0.00 : 60c504: 44 39 6b 2c cmp %r13d,0x2c(%rbx) 0.00 : 60c508: 7e 79 jle 60c583 : static bool : match_clause_to_indexcol(IndexOptInfo *index, : int indexcol, : RestrictInfo *rinfo) : { : Expr *clause = rinfo->clause; 0.00 : 60c50a: 48 8b 45 80 mov -0x80(%rbp),%rax : Index index_relid = index->rel->relid; : Oid opfamily = index->opfamily[indexcol]; 0.00 : 60c50e: 4d 63 fd movslq %r13d,%r15 : * Never match pseudoconstants to indexes. (Normally this could not : * happen anyway, since a pseudoconstant clause couldn't contain a Var, : * but what if someone builds an expression index on a constant? It's not : * totally unreasonable to do so with a partial index, either.) : */ : if (rinfo->pseudoconstant) 0.00 : 60c511: 48 8b 55 80 mov -0x80(%rbp),%rdx : static bool : match_clause_to_indexcol(IndexOptInfo *index, : int indexcol, : RestrictInfo *rinfo) : { : Expr *clause = rinfo->clause; 0.00 : 60c515: 4c 8b 60 08 mov 0x8(%rax),%r12 : Index index_relid = index->rel->relid; 0.00 : 60c519: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 60c51d: 8b 40 58 mov 0x58(%rax),%eax 0.00 : 60c520: 89 45 bc mov %eax,-0x44(%rbp) : Oid opfamily = index->opfamily[indexcol]; 0.00 : 60c523: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 60c527: 46 8b 34 b8 mov (%rax,%r15,4),%r14d : Oid idxcollation = index->indexcollations[indexcol]; 0.00 : 60c52b: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 60c52f: 42 8b 04 b8 mov (%rax,%r15,4),%eax 0.00 : 60c533: 89 45 b8 mov %eax,-0x48(%rbp) : * Never match pseudoconstants to indexes. (Normally this could not : * happen anyway, since a pseudoconstant clause couldn't contain a Var, : * but what if someone builds an expression index on a constant? It's not : * totally unreasonable to do so with a partial index, either.) : */ : if (rinfo->pseudoconstant) 0.00 : 60c536: 80 7a 13 00 cmpb $0x0,0x13(%rdx) 0.00 : 60c53a: 75 c4 jne 60c500 : return false; : : /* First check for boolean-index cases. */ : if (IsBooleanOpfamily(opfamily)) 0.00 : 60c53c: 41 81 fe a8 01 00 00 cmp $0x1a8,%r14d 0.00 : 60c543: 0f 85 5f ff ff ff jne 60c4a8 : match_boolean_index_clause(Node *clause, : int indexcol, : IndexOptInfo *index) : { : /* Direct match? */ : if (match_index_to_operand(clause, indexcol, index)) 0.00 : 60c549: 48 89 da mov %rbx,%rdx 0.00 : 60c54c: 44 89 ee mov %r13d,%esi 0.00 : 60c54f: 4c 89 e7 mov %r12,%rdi 0.00 : 60c552: e8 39 e7 ff ff callq 60ac90 0.00 : 60c557: 84 c0 test %al,%al 0.00 : 60c559: 0f 84 79 01 00 00 je 60c6d8 : { : if (match_clause_to_indexcol(index, : indexcol, : rinfo)) : { : clauseset->indexclauses[indexcol] = 0.00 : 60c55f: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 60c566: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 60c56a: 4a 8b 7c fa 08 mov 0x8(%rdx,%r15,8),%rdi 0.00 : 60c56f: e8 fc 59 fd ff callq 5e1f70 0.00 : 60c574: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 60c57b: 4a 89 44 fa 08 mov %rax,0x8(%rdx,%r15,8) : list_append_unique_ptr(clauseset->indexclauses[indexcol], : rinfo); : clauseset->nonempty = true; 0.00 : 60c580: c6 02 01 movb $0x1,(%rdx) : return; : } : } : } 0.00 : 60c583: 48 83 c4 68 add $0x68,%rsp 0.00 : 60c587: 5b pop %rbx 0.00 : 60c588: 41 5c pop %r12 0.00 : 60c58a: 41 5d pop %r13 0.00 : 60c58c: 41 5e pop %r14 0.00 : 60c58e: 41 5f pop %r15 0.00 : 60c590: c9 leaveq 0.00 : 60c591: c3 retq 0.00 : 60c592: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (clause && IsA(clause, ScalarArrayOpExpr)) : { : ScalarArrayOpExpr *saop = (ScalarArrayOpExpr *) clause; : : /* We only accept ANY clauses, not ALL */ : if (!saop->useOr) 0.00 : 60c598: 41 80 7c 24 0c 00 cmpb $0x0,0xc(%r12) 0.00 : 60c59e: 0f 84 5c ff ff ff je 60c500 : return false; : leftop = (Node *) linitial(saop->args); 0.00 : 60c5a4: 49 8b 44 24 18 mov 0x18(%r12),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 60c5a9: 48 85 c0 test %rax,%rax 0.00 : 60c5ac: 0f 84 4e 03 00 00 je 60c900 0.00 : 60c5b2: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 60c5b6: 48 8b 10 mov (%rax),%rdx 0.00 : 60c5b9: 48 89 55 b0 mov %rdx,-0x50(%rbp) : rightop = (Node *) lsecond(saop->args); 0.00 : 60c5bd: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 60c5c1: 48 8b 00 mov (%rax),%rax : left_relids = NULL; /* not actually needed */ : right_relids = pull_varnos(rightop); 0.00 : 60c5c4: 48 89 c7 mov %rax,%rdi : : /* We only accept ANY clauses, not ALL */ : if (!saop->useOr) : return false; : leftop = (Node *) linitial(saop->args); : rightop = (Node *) lsecond(saop->args); 0.00 : 60c5c7: 48 89 45 a8 mov %rax,-0x58(%rbp) : left_relids = NULL; /* not actually needed */ : right_relids = pull_varnos(rightop); 0.00 : 60c5cb: e8 f0 b6 02 00 callq 637cc0 0.00 : 60c5d0: 48 89 45 98 mov %rax,-0x68(%rbp) : expr_op = saop->opno; 0.00 : 60c5d4: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 60c5d9: 89 45 94 mov %eax,-0x6c(%rbp) : expr_coll = saop->inputcollid; 0.00 : 60c5dc: 41 8b 54 24 10 mov 0x10(%r12),%edx 0.00 : 60c5e1: c6 45 8f 00 movb $0x0,-0x71(%rbp) 0.00 : 60c5e5: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 60c5ec: 00 0.00 : 60c5ed: 89 55 90 mov %edx,-0x70(%rbp) : : /* : * Check for clauses of the form: (indexkey operator constant) or : * (constant operator indexkey). See above notes about const-ness. : */ : if (match_index_to_operand(leftop, indexcol, index) && 0.00 : 60c5f0: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 60c5f4: 48 89 da mov %rbx,%rdx 0.00 : 60c5f7: 44 89 ee mov %r13d,%esi 0.00 : 60c5fa: e8 91 e6 ff ff callq 60ac90 0.00 : 60c5ff: 84 c0 test %al,%al 0.00 : 60c601: 0f 85 59 02 00 00 jne 60c860 : idxcollation, true)) : return true; : return false; : } : : if (plain_op && 0.00 : 60c607: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 60c60b: 0f 84 ef fe ff ff je 60c500 0.00 : 60c611: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 60c615: 48 89 da mov %rbx,%rdx 0.00 : 60c618: 44 89 ee mov %r13d,%esi 0.00 : 60c61b: e8 70 e6 ff ff callq 60ac90 0.00 : 60c620: 84 c0 test %al,%al 0.00 : 60c622: 0f 84 d8 fe ff ff je 60c500 0.00 : 60c628: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 60c62c: 8b 7d bc mov -0x44(%rbp),%edi 0.00 : 60c62f: e8 dc 68 fd ff callq 5e2f10 0.00 : 60c634: 84 c0 test %al,%al 0.00 : 60c636: 0f 85 c4 fe ff ff jne 60c500 0.00 : 60c63c: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 60c640: e8 3b 05 02 00 callq 62cb80 0.00 : 60c645: 84 c0 test %al,%al 0.00 : 60c647: 0f 85 b3 fe ff ff jne 60c500 : match_index_to_operand(rightop, indexcol, index) && : !bms_is_member(index_relid, left_relids) && : !contain_volatile_functions(leftop)) : { : if (IndexCollMatchesExprColl(idxcollation, expr_coll) && 0.00 : 60c64d: 44 8b 4d b8 mov -0x48(%rbp),%r9d 0.00 : 60c651: 45 85 c9 test %r9d,%r9d 0.00 : 60c654: 0f 85 4b 03 00 00 jne 60c9a5 : is_indexable_operator(Oid expr_op, Oid opfamily, bool indexkey_on_left) : { : /* Get the commuted operator if necessary */ : if (!indexkey_on_left) : { : expr_op = get_commutator(expr_op); 0.00 : 60c65a: 8b 7d 94 mov -0x6c(%rbp),%edi 0.00 : 60c65d: e8 0e 61 16 00 callq 772770 : if (expr_op == InvalidOid) 0.00 : 60c662: 85 c0 test %eax,%eax : is_indexable_operator(Oid expr_op, Oid opfamily, bool indexkey_on_left) : { : /* Get the commuted operator if necessary */ : if (!indexkey_on_left) : { : expr_op = get_commutator(expr_op); 0.00 : 60c664: 89 c7 mov %eax,%edi : if (expr_op == InvalidOid) 0.00 : 60c666: 0f 85 02 03 00 00 jne 60c96e : : /* : * If we didn't find a member of the index's opfamily, see whether it : * is a "special" indexable operator. : */ : if (match_special_index_operator(clause, opfamily, 0.00 : 60c66c: 31 c9 xor %ecx,%ecx 0.00 : 60c66e: e9 43 02 00 00 jmpq 60c8b6 0.00 : 60c673: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * RowCompareExpr, which we pass off to match_rowcompare_to_indexcol(). : * Or, if the index supports it, we can handle IS NULL/NOT NULL clauses. : */ : if (is_opclause(clause)) : { : leftop = get_leftop(clause); 0.00 : 60c678: 4c 89 e7 mov %r12,%rdi 0.00 : 60c67b: e8 70 e4 01 00 callq 62aaf0 : rightop = get_rightop(clause); 0.00 : 60c680: 4c 89 e7 mov %r12,%rdi : * RowCompareExpr, which we pass off to match_rowcompare_to_indexcol(). : * Or, if the index supports it, we can handle IS NULL/NOT NULL clauses. : */ : if (is_opclause(clause)) : { : leftop = get_leftop(clause); 0.00 : 60c683: 48 89 45 b0 mov %rax,-0x50(%rbp) : rightop = get_rightop(clause); 0.00 : 60c687: e8 84 e4 01 00 callq 62ab10 : if (!leftop || !rightop) 0.00 : 60c68c: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) : * Or, if the index supports it, we can handle IS NULL/NOT NULL clauses. : */ : if (is_opclause(clause)) : { : leftop = get_leftop(clause); : rightop = get_rightop(clause); 0.00 : 60c691: 48 89 45 a8 mov %rax,-0x58(%rbp) : if (!leftop || !rightop) 0.00 : 60c695: 0f 84 65 fe ff ff je 60c500 0.00 : 60c69b: 48 85 c0 test %rax,%rax 0.00 : 60c69e: 0f 84 5c fe ff ff je 60c500 : return false; : left_relids = rinfo->left_relids; 0.00 : 60c6a4: 48 8b 45 80 mov -0x80(%rbp),%rax : right_relids = rinfo->right_relids; 0.00 : 60c6a8: 48 8b 55 80 mov -0x80(%rbp),%rdx : { : leftop = get_leftop(clause); : rightop = get_rightop(clause); : if (!leftop || !rightop) : return false; : left_relids = rinfo->left_relids; 0.00 : 60c6ac: 48 8b 40 38 mov 0x38(%rax),%rax 0.00 : 60c6b0: 48 89 45 a0 mov %rax,-0x60(%rbp) : right_relids = rinfo->right_relids; 0.00 : 60c6b4: 48 8b 52 40 mov 0x40(%rdx),%rdx 0.00 : 60c6b8: 48 89 55 98 mov %rdx,-0x68(%rbp) : expr_op = ((OpExpr *) clause)->opno; 0.00 : 60c6bc: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 60c6c1: 89 45 94 mov %eax,-0x6c(%rbp) : expr_coll = ((OpExpr *) clause)->inputcollid; 0.00 : 60c6c4: 41 8b 54 24 18 mov 0x18(%r12),%edx 0.00 : 60c6c9: c6 45 8f 01 movb $0x1,-0x71(%rbp) 0.00 : 60c6cd: 89 55 90 mov %edx,-0x70(%rbp) 0.00 : 60c6d0: e9 1b ff ff ff jmpq 60c5f0 0.00 : 60c6d5: 0f 1f 00 nopl (%rax) : { : /* Direct match? */ : if (match_index_to_operand(clause, indexcol, index)) : return true; : /* NOT clause? */ : if (not_clause(clause)) 0.00 : 60c6d8: 4c 89 e7 mov %r12,%rdi 0.00 : 60c6db: e8 60 e4 01 00 callq 62ab40 0.00 : 60c6e0: 84 c0 test %al,%al 0.00 : 60c6e2: 0f 85 f0 01 00 00 jne 60c8d8 : /* : * Since we only consider clauses at top level of WHERE, we can convert : * indexkey IS TRUE and indexkey IS FALSE to index searches as well. The : * different meaning for NULL isn't important. : */ : else if (clause && IsA(clause, BooleanTest)) 0.00 : 60c6e8: 4d 85 e4 test %r12,%r12 0.00 : 60c6eb: 0f 84 c4 fd ff ff je 60c4b5 0.00 : 60c6f1: 41 81 3c 24 50 01 00 cmpl $0x150,(%r12) 0.00 : 60c6f8: 00 0.00 : 60c6f9: 0f 85 b6 fd ff ff jne 60c4b5 : { : BooleanTest *btest = (BooleanTest *) clause; : : if (btest->booltesttype == IS_TRUE || 0.00 : 60c6ff: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.00 : 60c704: 85 c0 test %eax,%eax 0.00 : 60c706: 0f 85 12 02 00 00 jne 60c91e : btest->booltesttype == IS_FALSE) : if (match_index_to_operand((Node *) btest->arg, 0.00 : 60c70c: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 60c711: e9 d2 01 00 00 jmpq 60c8e8 0.00 : 60c716: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 60c71d: 00 00 00 : } : else if (index->amsearchnulls && IsA(clause, NullTest)) : { : NullTest *nt = (NullTest *) clause; : : if (!nt->argisrow && 0.00 : 60c720: 41 80 7c 24 14 00 cmpb $0x0,0x14(%r12) 0.00 : 60c726: 0f 85 d4 fd ff ff jne 60c500 0.00 : 60c72c: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 60c731: 48 89 da mov %rbx,%rdx 0.00 : 60c734: 44 89 ee mov %r13d,%esi 0.00 : 60c737: e8 54 e5 ff ff callq 60ac90 0.00 : 60c73c: 84 c0 test %al,%al 0.00 : 60c73e: 0f 85 1b fe ff ff jne 60c55f 0.00 : 60c744: e9 b7 fd ff ff jmpq 60c500 0.00 : 60c749: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : int indexcol, : Oid opfamily, : Oid idxcollation, : RowCompareExpr *clause) : { : Index index_relid = index->rel->relid; 0.00 : 60c750: 48 8b 43 10 mov 0x10(%rbx),%rax : *rightop; : Oid expr_op; : Oid expr_coll; : : /* Forget it if we're not dealing with a btree index */ : if (index->relam != BTREE_AM_OID) 0.00 : 60c754: 81 7b 68 93 01 00 00 cmpl $0x193,0x68(%rbx) : int indexcol, : Oid opfamily, : Oid idxcollation, : RowCompareExpr *clause) : { : Index index_relid = index->rel->relid; 0.00 : 60c75b: 8b 40 58 mov 0x58(%rax),%eax 0.00 : 60c75e: 89 45 c4 mov %eax,-0x3c(%rbp) : *rightop; : Oid expr_op; : Oid expr_coll; : : /* Forget it if we're not dealing with a btree index */ : if (index->relam != BTREE_AM_OID) 0.00 : 60c761: 0f 85 99 fd ff ff jne 60c500 : * reverse-sort family. So look only at the operator, and match if it is : * a member of the index's opfamily (after commutation, if the indexkey is : * on the right). We'll worry later about whether any additional : * operators are matchable to the index. : */ : leftop = (Node *) linitial(clause->largs); 0.00 : 60c767: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 60c76c: 31 d2 xor %edx,%edx 0.00 : 60c76e: 48 85 c0 test %rax,%rax 0.00 : 60c771: 74 04 je 60c777 0.00 : 60c773: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 60c777: 48 8b 12 mov (%rdx),%rdx 0.00 : 60c77a: 48 89 55 d0 mov %rdx,-0x30(%rbp) : rightop = (Node *) linitial(clause->rargs); 0.00 : 60c77e: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 60c783: 31 d2 xor %edx,%edx 0.00 : 60c785: 48 85 c0 test %rax,%rax 0.00 : 60c788: 74 04 je 60c78e 0.00 : 60c78a: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 60c78e: 48 8b 12 mov (%rdx),%rdx 0.00 : 60c791: 31 c0 xor %eax,%eax 0.00 : 60c793: 48 89 55 c8 mov %rdx,-0x38(%rbp) : expr_op = linitial_oid(clause->opnos); 0.00 : 60c797: 49 8b 54 24 08 mov 0x8(%r12),%rdx 0.00 : 60c79c: 48 85 d2 test %rdx,%rdx 0.00 : 60c79f: 74 04 je 60c7a5 0.00 : 60c7a1: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 60c7a5: 8b 00 mov (%rax),%eax 0.00 : 60c7a7: 31 d2 xor %edx,%edx 0.00 : 60c7a9: 89 45 c0 mov %eax,-0x40(%rbp) : expr_coll = linitial_oid(clause->inputcollids); 0.00 : 60c7ac: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 60c7b1: 48 85 c0 test %rax,%rax 0.00 : 60c7b4: 74 04 je 60c7ba 0.00 : 60c7b6: 48 8b 50 08 mov 0x8(%rax),%rdx : : /* Collations must match, if relevant */ : if (!IndexCollMatchesExprColl(idxcollation, expr_coll)) 0.00 : 60c7ba: 44 8b 5d b8 mov -0x48(%rbp),%r11d 0.00 : 60c7be: 45 85 db test %r11d,%r11d 0.00 : 60c7c1: 0f 85 47 01 00 00 jne 60c90e : return false; : : /* : * These syntactic tests are the same as in match_clause_to_indexcol() : */ : if (match_index_to_operand(leftop, indexcol, index) && 0.00 : 60c7c7: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 60c7cb: 48 89 da mov %rbx,%rdx 0.00 : 60c7ce: 44 89 ee mov %r13d,%esi 0.00 : 60c7d1: e8 ba e4 ff ff callq 60ac90 0.00 : 60c7d6: 84 c0 test %al,%al 0.00 : 60c7d8: 0f 85 57 01 00 00 jne 60c935 : !bms_is_member(index_relid, pull_varnos(rightop)) && : !contain_volatile_functions(rightop)) : { : /* OK, indexkey is on left */ : } : else if (match_index_to_operand(rightop, indexcol, index) && 0.00 : 60c7de: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 60c7e2: 48 89 da mov %rbx,%rdx 0.00 : 60c7e5: 44 89 ee mov %r13d,%esi 0.00 : 60c7e8: e8 a3 e4 ff ff callq 60ac90 0.00 : 60c7ed: 84 c0 test %al,%al 0.00 : 60c7ef: 0f 84 0b fd ff ff je 60c500 0.00 : 60c7f5: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 60c7f9: e8 c2 b4 02 00 callq 637cc0 0.00 : 60c7fe: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 60c801: 48 89 c6 mov %rax,%rsi 0.00 : 60c804: e8 07 67 fd ff callq 5e2f10 0.00 : 60c809: 84 c0 test %al,%al 0.00 : 60c80b: 0f 85 ef fc ff ff jne 60c500 0.00 : 60c811: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 60c815: e8 66 03 02 00 callq 62cb80 0.00 : 60c81a: 84 c0 test %al,%al 0.00 : 60c81c: 0f 85 de fc ff ff jne 60c500 : !bms_is_member(index_relid, pull_varnos(leftop)) && : !contain_volatile_functions(leftop)) : { : /* indexkey is on right, so commute the operator */ : expr_op = get_commutator(expr_op); 0.00 : 60c822: 8b 7d c0 mov -0x40(%rbp),%edi 0.00 : 60c825: e8 46 5f 16 00 callq 772770 : if (expr_op == InvalidOid) 0.00 : 60c82a: 85 c0 test %eax,%eax : else if (match_index_to_operand(rightop, indexcol, index) && : !bms_is_member(index_relid, pull_varnos(leftop)) && : !contain_volatile_functions(leftop)) : { : /* indexkey is on right, so commute the operator */ : expr_op = get_commutator(expr_op); 0.00 : 60c82c: 89 45 c0 mov %eax,-0x40(%rbp) : if (expr_op == InvalidOid) 0.00 : 60c82f: 0f 84 cb fc ff ff je 60c500 : } : else : return false; : : /* We're good if the operator is the right type of opfamily member */ : switch (get_op_opfamily_strategy(expr_op, opfamily)) 0.00 : 60c835: 8b 7d c0 mov -0x40(%rbp),%edi 0.00 : 60c838: 44 89 f6 mov %r14d,%esi 0.00 : 60c83b: e8 60 61 16 00 callq 7729a0 0.00 : 60c840: 83 f8 05 cmp $0x5,%eax 0.00 : 60c843: 89 c1 mov %eax,%ecx 0.00 : 60c845: 0f 87 b5 fc ff ff ja 60c500 0.00 : 60c84b: b8 01 00 00 00 mov $0x1,%eax 0.00 : 60c850: 48 d3 e0 shl %cl,%rax 0.00 : 60c853: a8 36 test $0x36,%al 0.00 : 60c855: 0f 85 04 fd ff ff jne 60c55f 0.00 : 60c85b: e9 a0 fc ff ff jmpq 60c500 : : /* : * Check for clauses of the form: (indexkey operator constant) or : * (constant operator indexkey). See above notes about const-ness. : */ : if (match_index_to_operand(leftop, indexcol, index) && 0.00 : 60c860: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 60c864: 8b 7d bc mov -0x44(%rbp),%edi 0.00 : 60c867: e8 a4 66 fd ff callq 5e2f10 0.00 : 60c86c: 84 c0 test %al,%al 0.00 : 60c86e: 66 90 xchg %ax,%ax 0.00 : 60c870: 0f 85 91 fd ff ff jne 60c607 0.00 : 60c876: 48 8b 7d a8 mov -0x58(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:2167 100.00 : 60c87a: e8 01 03 02 00 callq 62cb80 0.00 : 60c87f: 84 c0 test %al,%al 0.00 : 60c881: 0f 85 80 fd ff ff jne 60c607 : !bms_is_member(index_relid, right_relids) && : !contain_volatile_functions(rightop)) : { : if (IndexCollMatchesExprColl(idxcollation, expr_coll) && 0.00 : 60c887: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 60c88b: 45 85 d2 test %r10d,%r10d 0.00 : 60c88e: 0f 85 fc 00 00 00 jne 60c990 : if (expr_op == InvalidOid) : return false; : } : : /* OK if the (commuted) operator is a member of the index's opfamily */ : return op_in_opfamily(expr_op, opfamily); 0.00 : 60c894: 8b 7d 94 mov -0x6c(%rbp),%edi 0.00 : 60c897: 44 89 f6 mov %r14d,%esi 0.00 : 60c89a: e8 e1 83 16 00 callq 774c80 : */ : if (match_index_to_operand(leftop, indexcol, index) && : !bms_is_member(index_relid, right_relids) && : !contain_volatile_functions(rightop)) : { : if (IndexCollMatchesExprColl(idxcollation, expr_coll) && 0.00 : 60c89f: 84 c0 test %al,%al 0.00 : 60c8a1: 0f 85 b8 fc ff ff jne 60c55f : : /* : * If we didn't find a member of the index's opfamily, see whether it : * is a "special" indexable operator. : */ : if (plain_op && 0.00 : 60c8a7: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 60c8ab: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 60c8b0: 0f 84 4a fc ff ff je 60c500 : : /* : * If we didn't find a member of the index's opfamily, see whether it : * is a "special" indexable operator. : */ : if (match_special_index_operator(clause, opfamily, 0.00 : 60c8b6: 8b 55 b8 mov -0x48(%rbp),%edx 0.00 : 60c8b9: 44 89 f6 mov %r14d,%esi 0.00 : 60c8bc: 4c 89 e7 mov %r12,%rdi 0.00 : 60c8bf: e8 4c f8 ff ff callq 60c110 0.00 : 60c8c4: 84 c0 test %al,%al 0.00 : 60c8c6: 0f 84 34 fc ff ff je 60c500 0.00 : 60c8cc: e9 8e fc ff ff jmpq 60c55f 0.00 : 60c8d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (match_index_to_operand(clause, indexcol, index)) : return true; : /* NOT clause? */ : if (not_clause(clause)) : { : if (match_index_to_operand((Node *) get_notclausearg((Expr *) clause), 0.00 : 60c8d8: 4c 89 e7 mov %r12,%rdi 0.00 : 60c8db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 60c8e0: e8 8b e2 01 00 callq 62ab70 0.00 : 60c8e5: 48 89 c7 mov %rax,%rdi : { : BooleanTest *btest = (BooleanTest *) clause; : : if (btest->booltesttype == IS_TRUE || : btest->booltesttype == IS_FALSE) : if (match_index_to_operand((Node *) btest->arg, 0.00 : 60c8e8: 48 89 da mov %rbx,%rdx 0.00 : 60c8eb: 44 89 ee mov %r13d,%esi 0.00 : 60c8ee: e8 9d e3 ff ff callq 60ac90 0.00 : 60c8f3: 84 c0 test %al,%al 0.00 : 60c8f5: 0f 85 64 fc ff ff jne 60c55f 0.00 : 60c8fb: e9 b5 fb ff ff jmpq 60c4b5 : ScalarArrayOpExpr *saop = (ScalarArrayOpExpr *) clause; : : /* We only accept ANY clauses, not ALL */ : if (!saop->useOr) : return false; : leftop = (Node *) linitial(saop->args); 0.00 : 60c900: 48 8b 00 mov (%rax),%rax 0.00 : 60c903: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 60c907: 31 c0 xor %eax,%eax 0.00 : 60c909: e9 af fc ff ff jmpq 60c5bd : rightop = (Node *) linitial(clause->rargs); : expr_op = linitial_oid(clause->opnos); : expr_coll = linitial_oid(clause->inputcollids); : : /* Collations must match, if relevant */ : if (!IndexCollMatchesExprColl(idxcollation, expr_coll)) 0.00 : 60c90e: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 60c911: 3b 02 cmp (%rdx),%eax 0.00 : 60c913: 0f 85 e7 fb ff ff jne 60c500 0.00 : 60c919: e9 a9 fe ff ff jmpq 60c7c7 : */ : else if (clause && IsA(clause, BooleanTest)) : { : BooleanTest *btest = (BooleanTest *) clause; : : if (btest->booltesttype == IS_TRUE || 0.00 : 60c91e: 83 f8 02 cmp $0x2,%eax 0.00 : 60c921: 0f 85 8e fb ff ff jne 60c4b5 0.00 : 60c927: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 60c92e: 00 00 0.00 : 60c930: e9 d7 fd ff ff jmpq 60c70c : return false; : : /* : * These syntactic tests are the same as in match_clause_to_indexcol() : */ : if (match_index_to_operand(leftop, indexcol, index) && 0.00 : 60c935: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 60c939: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 60c940: e8 7b b3 02 00 callq 637cc0 0.00 : 60c945: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 60c948: 48 89 c6 mov %rax,%rsi 0.00 : 60c94b: e8 c0 65 fd ff callq 5e2f10 0.00 : 60c950: 84 c0 test %al,%al 0.00 : 60c952: 0f 85 86 fe ff ff jne 60c7de 0.00 : 60c958: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 60c95c: e8 1f 02 02 00 callq 62cb80 0.00 : 60c961: 84 c0 test %al,%al 0.00 : 60c963: 0f 84 cc fe ff ff je 60c835 0.00 : 60c969: e9 70 fe ff ff jmpq 60c7de : if (expr_op == InvalidOid) : return false; : } : : /* OK if the (commuted) operator is a member of the index's opfamily */ : return op_in_opfamily(expr_op, opfamily); 0.00 : 60c96e: 44 89 f6 mov %r14d,%esi 0.00 : 60c971: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 60c978: e8 03 83 16 00 callq 774c80 : if (plain_op && : match_index_to_operand(rightop, indexcol, index) && : !bms_is_member(index_relid, left_relids) && : !contain_volatile_functions(leftop)) : { : if (IndexCollMatchesExprColl(idxcollation, expr_coll) && 0.00 : 60c97d: 84 c0 test %al,%al 0.00 : 60c97f: 90 nop 0.00 : 60c980: 0f 85 d9 fb ff ff jne 60c55f : : /* : * If we didn't find a member of the index's opfamily, see whether it : * is a "special" indexable operator. : */ : if (match_special_index_operator(clause, opfamily, 0.00 : 60c986: 31 c9 xor %ecx,%ecx 0.00 : 60c988: e9 29 ff ff ff jmpq 60c8b6 0.00 : 60c98d: 0f 1f 00 nopl (%rax) : */ : if (match_index_to_operand(leftop, indexcol, index) && : !bms_is_member(index_relid, right_relids) && : !contain_volatile_functions(rightop)) : { : if (IndexCollMatchesExprColl(idxcollation, expr_coll) && 0.00 : 60c990: 8b 55 90 mov -0x70(%rbp),%edx 0.00 : 60c993: 39 55 b8 cmp %edx,-0x48(%rbp) 0.00 : 60c996: 0f 85 0b ff ff ff jne 60c8a7 0.00 : 60c99c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 60c9a0: e9 ef fe ff ff jmpq 60c894 : if (plain_op && : match_index_to_operand(rightop, indexcol, index) && : !bms_is_member(index_relid, left_relids) && : !contain_volatile_functions(leftop)) : { : if (IndexCollMatchesExprColl(idxcollation, expr_coll) && 0.00 : 60c9a5: 8b 45 90 mov -0x70(%rbp),%eax 0.00 : 60c9a8: 39 45 b8 cmp %eax,-0x48(%rbp) 0.00 : 60c9ab: 0f 84 a9 fc ff ff je 60c65a : : /* : * If we didn't find a member of the index's opfamily, see whether it : * is a "special" indexable operator. : */ : if (match_special_index_operator(clause, opfamily, 0.00 : 60c9b1: 31 c9 xor %ecx,%ecx 0.00 : 60c9b3: e9 fe fe ff ff jmpq 60c8b6 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/joinpath.c:322 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000060eea0 : : Relids extra_lateral_rels, : Path *outer_path, : Path *inner_path, : List *restrict_clauses, : List *pathkeys) : { 0.00 : 60eea0: 55 push %rbp 0.00 : 60eea1: 48 89 e5 mov %rsp,%rbp 0.00 : 60eea4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 60eea8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 60eeac: 4d 89 cc mov %r9,%r12 0.00 : 60eeaf: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 60eeb3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 60eeb7: 49 89 f5 mov %rsi,%r13 0.00 : 60eeba: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 60eebe: 48 81 ec e0 00 00 00 sub $0xe0,%rsp 0.00 : 60eec5: 4c 8b 7d 18 mov 0x18(%rbp),%r15 0.00 : 60eec9: 4c 8b 75 20 mov 0x20(%rbp),%r14 0.00 : 60eecd: 48 89 bd 68 ff ff ff mov %rdi,-0x98(%rbp) 0.00 : 60eed4: 89 95 64 ff ff ff mov %edx,-0x9c(%rbp) 0.00 : 60eeda: 48 89 8d 58 ff ff ff mov %rcx,-0xa8(%rbp) : : /* : * Check to see if proposed path is still parameterized, and reject if the : * parameterization wouldn't be sensible. : */ : required_outer = calc_nestloop_required_outer(outer_path, 0.00 : 60eee1: 4c 89 ff mov %r15,%rdi : Relids extra_lateral_rels, : Path *outer_path, : Path *inner_path, : List *restrict_clauses, : List *pathkeys) : { 0.00 : 60eee4: 4c 89 85 50 ff ff ff mov %r8,-0xb0(%rbp) : : /* : * Check to see if proposed path is still parameterized, and reject if the : * parameterization wouldn't be sensible. : */ : required_outer = calc_nestloop_required_outer(outer_path, 0.00 : 60eeeb: 4c 89 f6 mov %r14,%rsi 0.00 : 60eeee: e8 4d 15 02 00 callq 630440 : inner_path); : if (required_outer && 0.00 : 60eef3: 48 85 c0 test %rax,%rax : : /* : * Check to see if proposed path is still parameterized, and reject if the : * parameterization wouldn't be sensible. : */ : required_outer = calc_nestloop_required_outer(outer_path, 0.00 : 60eef6: 48 89 c3 mov %rax,%rbx : inner_path); : if (required_outer && 0.00 : 60eef9: 74 0f je 60ef0a 0.00 : 60eefb: 4c 89 e6 mov %r12,%rsi 0.00 : 60eefe: 48 89 c7 mov %rax,%rdi 0.00 : 60ef01: e8 7a 3a fd ff callq 5e2980 0.00 : 60ef06: 84 c0 test %al,%al 0.00 : 60ef08: 74 66 je 60ef70 : : /* : * Independently of that, add parameterization needed for any : * PlaceHolderVars that need to be computed at the join. : */ : required_outer = bms_add_members(required_outer, extra_lateral_rels); 0.00 : 60ef0a: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 60ef0e: 48 89 df mov %rbx,%rdi : * by some existing path for the joinrel. If not, do the full pushup with : * creating a fully valid path structure and submitting it to add_path(). : * The latter two steps are expensive enough to make this two-phase : * methodology worthwhile. : */ : initial_cost_nestloop(root, &workspace, jointype, 0.00 : 60ef11: 4c 8d a5 70 ff ff ff lea -0x90(%rbp),%r12 : : /* : * Independently of that, add parameterization needed for any : * PlaceHolderVars that need to be computed at the join. : */ : required_outer = bms_add_members(required_outer, extra_lateral_rels); 0.00 : 60ef18: e8 43 42 fd ff callq 5e3160 : * by some existing path for the joinrel. If not, do the full pushup with : * creating a fully valid path structure and submitting it to add_path(). : * The latter two steps are expensive enough to make this two-phase : * methodology worthwhile. : */ : initial_cost_nestloop(root, &workspace, jointype, 0.00 : 60ef1d: 4c 8b 8d 58 ff ff ff mov -0xa8(%rbp),%r9 : : /* : * Independently of that, add parameterization needed for any : * PlaceHolderVars that need to be computed at the join. : */ : required_outer = bms_add_members(required_outer, extra_lateral_rels); 0.00 : 60ef24: 48 89 c3 mov %rax,%rbx : * by some existing path for the joinrel. If not, do the full pushup with : * creating a fully valid path structure and submitting it to add_path(). : * The latter two steps are expensive enough to make this two-phase : * methodology worthwhile. : */ : initial_cost_nestloop(root, &workspace, jointype, 0.00 : 60ef27: 8b 95 64 ff ff ff mov -0x9c(%rbp),%edx 0.00 : 60ef2d: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 60ef34: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 60ef3b: 4d 89 f0 mov %r14,%r8 0.00 : 60ef3e: 4c 89 f9 mov %r15,%rcx 0.00 : 60ef41: 4c 89 e6 mov %r12,%rsi 0.00 : 60ef44: 48 89 04 24 mov %rax,(%rsp) 0.00 : 60ef48: e8 93 70 ff ff callq 605fe0 : outer_path, inner_path, : sjinfo, semifactors); : : if (add_path_precheck(joinrel, 0.00 : 60ef4d: 48 8b 75 30 mov 0x30(%rbp),%rsi 0.00 : 60ef51: f2 0f 10 85 70 ff ff movsd -0x90(%rbp),%xmm0 0.00 : 60ef58: ff 0.00 : 60ef59: f2 0f 10 8d 78 ff ff movsd -0x88(%rbp),%xmm1 0.00 : 60ef60: ff 0.00 : 60ef61: 48 89 da mov %rbx,%rdx 0.00 : 60ef64: 4c 89 ef mov %r13,%rdi 0.00 : 60ef67: e8 b4 28 02 00 callq 631820 0.00 : 60ef6c: 84 c0 test %al,%al 0.00 : 60ef6e: 75 20 jne 60ef90 : required_outer)); : } : else : { : /* Waste no memory when we reject a path here */ : bms_free(required_outer); 0.00 : 60ef70: 48 89 df mov %rbx,%rdi 0.00 : 60ef73: e8 38 3e fd ff callq 5e2db0 : } : } 0.00 : 60ef78: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 60ef7c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 60ef80: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 60ef84: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 60ef88: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 60ef8c: c9 leaveq 0.00 : 60ef8d: c3 retq 0.00 : 60ef8e: 66 90 xchg %ax,%ax : : if (add_path_precheck(joinrel, : workspace.startup_cost, workspace.total_cost, : pathkeys, required_outer)) : { : add_path(joinrel, (Path *) 0.00 : 60ef90: 48 8b 45 30 mov 0x30(%rbp),%rax 0.00 : 60ef94: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 60ef9b: 4c 89 ee mov %r13,%rsi 0.00 : 60ef9e: 4c 8b 8d 50 ff ff ff mov -0xb0(%rbp),%r9 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/joinpath.c:322 100.00 : 60efa5: 4c 8b 85 58 ff ff ff mov -0xa8(%rbp),%r8 0.00 : 60efac: 4c 89 e1 mov %r12,%rcx 0.00 : 60efaf: 8b 95 64 ff ff ff mov -0x9c(%rbp),%edx 0.00 : 60efb5: 48 89 5c 24 20 mov %rbx,0x20(%rsp) 0.00 : 60efba: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 60efbf: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 60efc3: 4c 89 74 24 08 mov %r14,0x8(%rsp) 0.00 : 60efc8: 4c 89 3c 24 mov %r15,(%rsp) 0.00 : 60efcc: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 60efd1: e8 da 12 02 00 callq 6302b0 0.00 : 60efd6: 4c 89 ef mov %r13,%rdi 0.00 : 60efd9: 48 89 c6 mov %rax,%rsi 0.00 : 60efdc: e8 3f 29 02 00 callq 631920 0.00 : 60efe1: eb 95 jmp 60ef78 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/../../../../src/include/nodes/pg_list.h:87 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000060f140 : : RelOptInfo *outerrel, : RelOptInfo *innerrel, : JoinType jointype, : SpecialJoinInfo *sjinfo, : List *restrictlist) : { 0.00 : 60f140: 55 push %rbp 0.00 : 60f141: 48 89 e5 mov %rsp,%rbp 0.00 : 60f144: 41 57 push %r15 0.00 : 60f146: 49 89 f7 mov %rsi,%r15 0.00 : 60f149: 41 56 push %r14 0.00 : 60f14b: 41 55 push %r13 0.00 : 60f14d: 41 54 push %r12 0.00 : 60f14f: 53 push %rbx 0.00 : 60f150: 48 81 ec 28 01 00 00 sub $0x128,%rsp : * Find potential mergejoin clauses. We can skip this if we are not : * interested in doing a mergejoin. However, mergejoin may be our only : * way of implementing a full outer join, so override enable_mergejoin if : * it's a full join. : */ : if (enable_mergejoin || jointype == JOIN_FULL) 0.00 : 60f157: 41 83 f8 02 cmp $0x2,%r8d : RelOptInfo *outerrel, : RelOptInfo *innerrel, : JoinType jointype, : SpecialJoinInfo *sjinfo, : List *restrictlist) : { 0.00 : 60f15b: 48 89 bd 10 ff ff ff mov %rdi,-0xf0(%rbp) : * Find potential mergejoin clauses. We can skip this if we are not : * interested in doing a mergejoin. However, mergejoin may be our only : * way of implementing a full outer join, so override enable_mergejoin if : * it's a full join. : */ : if (enable_mergejoin || jointype == JOIN_FULL) 0.00 : 60f162: 0f 94 85 1f ff ff ff sete -0xe1(%rbp) 0.00 : 60f169: 80 3d 41 94 55 00 00 cmpb $0x0,0x559441(%rip) # b685b1 : RelOptInfo *outerrel, : RelOptInfo *innerrel, : JoinType jointype, : SpecialJoinInfo *sjinfo, : List *restrictlist) : { 0.00 : 60f170: 48 89 95 08 ff ff ff mov %rdx,-0xf8(%rbp) 0.00 : 60f177: 48 89 8d 00 ff ff ff mov %rcx,-0x100(%rbp) 0.00 : 60f17e: 44 89 85 fc fe ff ff mov %r8d,-0x104(%rbp) 0.00 : 60f185: 4c 89 8d f0 fe ff ff mov %r9,-0x110(%rbp) : * Find potential mergejoin clauses. We can skip this if we are not : * interested in doing a mergejoin. However, mergejoin may be our only : * way of implementing a full outer join, so override enable_mergejoin if : * it's a full join. : */ : if (enable_mergejoin || jointype == JOIN_FULL) 0.00 : 60f18c: 0f 85 5e 03 00 00 jne 60f4f0 0.00 : 60f192: 80 bd 1f ff ff ff 00 cmpb $0x0,-0xe1(%rbp) 0.00 : 60f199: 48 c7 85 20 ff ff ff movq $0x0,-0xe0(%rbp) 0.00 : 60f1a0: 00 00 00 00 0.00 : 60f1a4: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 60f1aa: 0f 85 40 03 00 00 jne 60f4f0 : : /* : * If it's SEMI or ANTI join, compute correction factors for cost : * estimation. These will be the same for all paths. : */ : if (jointype == JOIN_SEMI || jointype == JOIN_ANTI) 0.00 : 60f1b0: 8b 85 fc fe ff ff mov -0x104(%rbp),%eax 0.00 : 60f1b6: 83 e8 04 sub $0x4,%eax 0.00 : 60f1b9: 83 f8 01 cmp $0x1,%eax 0.00 : 60f1bc: 0f 86 3a 04 00 00 jbe 60f5fc : * This restriction reduces the number of parameterized paths we have to : * deal with at higher join levels, without compromising the quality of : * the resulting plan. We express the restriction as a Relids set that : * must overlap the parameterization of any proposed join path. : */ : foreach(lc, root->join_info_list) 0.00 : 60f1c2: 48 8b 8d 10 ff ff ff mov -0xf0(%rbp),%rcx 0.00 : 60f1c9: 48 8b 81 b8 00 00 00 mov 0xb8(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 60f1d0: 48 85 c0 test %rax,%rax 0.00 : 60f1d3: 0f 84 07 0f 00 00 je 6100e0 0.00 : 60f1d9: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 60f1dd: 4d 85 e4 test %r12,%r12 0.00 : 60f1e0: 0f 84 fa 0e 00 00 je 6100e0 0.00 : 60f1e6: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 60f1ed: 00 00 00 00 0.00 : 60f1f1: eb 19 jmp 60f20c 0.00 : 60f1f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : param_source_rels = bms_join(param_source_rels, : bms_difference(root->all_baserels, : sjinfo->min_righthand)); : : /* full joins constrain both sides symmetrically */ : if (sjinfo->jointype == JOIN_FULL && 0.00 : 60f1f8: 83 7b 28 02 cmpl $0x2,0x28(%rbx) 0.00 : 60f1fc: 74 6a je 60f268 : * This restriction reduces the number of parameterized paths we have to : * deal with at higher join levels, without compromising the quality of : * the resulting plan. We express the restriction as a Relids set that : * must overlap the parameterization of any proposed join path. : */ : foreach(lc, root->join_info_list) 0.00 : 60f1fe: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 60f203: 4d 85 e4 test %r12,%r12 0.00 : 60f206: 0f 84 c4 00 00 00 je 60f2d0 : { : SpecialJoinInfo *sjinfo = (SpecialJoinInfo *) lfirst(lc); 0.00 : 60f20c: 49 8b 1c 24 mov (%r12),%rbx : * (possibly not all of it), and haven't yet joined to its LHS. (This : * test is pretty simplistic, but should be sufficient considering the : * join has already been proven legal.) If the SJ is relevant, it : * presents constraints for joining to anything not in its RHS. : */ : if (bms_overlap(joinrel->relids, sjinfo->min_righthand) && 0.00 : 60f210: 49 8b 7f 08 mov 0x8(%r15),%rdi 0.00 : 60f214: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 60f218: e8 63 37 fd ff callq 5e2980 0.00 : 60f21d: 84 c0 test %al,%al 0.00 : 60f21f: 74 d7 je 60f1f8 0.00 : 60f221: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 60f225: 49 8b 7f 08 mov 0x8(%r15),%rdi 0.00 : 60f229: e8 52 37 fd ff callq 5e2980 0.00 : 60f22e: 84 c0 test %al,%al 0.00 : 60f230: 75 c6 jne 60f1f8 : !bms_overlap(joinrel->relids, sjinfo->min_lefthand)) : param_source_rels = bms_join(param_source_rels, 0.00 : 60f232: 48 8b 85 10 ff ff ff mov -0xf0(%rbp),%rax 0.00 : 60f239: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 60f23d: 48 8b 78 48 mov 0x48(%rax),%rdi 0.00 : 60f241: e8 9a 3f fd ff callq 5e31e0 0.00 : 60f246: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 60f24d: 48 89 c6 mov %rax,%rsi 0.00 : 60f250: e8 5b 3a fd ff callq 5e2cb0 0.00 : 60f255: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : bms_difference(root->all_baserels, : sjinfo->min_righthand)); : : /* full joins constrain both sides symmetrically */ : if (sjinfo->jointype == JOIN_FULL && 0.00 : 60f25c: 83 7b 28 02 cmpl $0x2,0x28(%rbx) 0.00 : 60f260: 75 9c jne 60f1fe 0.00 : 60f262: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 60f268: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 60f26c: 49 8b 7f 08 mov 0x8(%r15),%rdi 0.00 : 60f270: e8 0b 37 fd ff callq 5e2980 0.00 : 60f275: 84 c0 test %al,%al 0.00 : 60f277: 74 85 je 60f1fe 0.00 : 60f279: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 60f27d: 49 8b 7f 08 mov 0x8(%r15),%rdi 0.00 : 60f281: e8 fa 36 fd ff callq 5e2980 0.00 : 60f286: 84 c0 test %al,%al 0.00 : 60f288: 0f 85 70 ff ff ff jne 60f1fe : bms_overlap(joinrel->relids, sjinfo->min_lefthand) && : !bms_overlap(joinrel->relids, sjinfo->min_righthand)) : param_source_rels = bms_join(param_source_rels, 0.00 : 60f28e: 48 8b 95 10 ff ff ff mov -0xf0(%rbp),%rdx 0.00 : 60f295: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 60f299: 48 8b 7a 48 mov 0x48(%rdx),%rdi 0.00 : 60f29d: e8 3e 3f fd ff callq 5e31e0 0.00 : 60f2a2: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 60f2a9: 48 89 c6 mov %rax,%rsi 0.00 : 60f2ac: e8 ff 39 fd ff callq 5e2cb0 0.00 : 60f2b1: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : * This restriction reduces the number of parameterized paths we have to : * deal with at higher join levels, without compromising the quality of : * the resulting plan. We express the restriction as a Relids set that : * must overlap the parameterization of any proposed join path. : */ : foreach(lc, root->join_info_list) 0.00 : 60f2b8: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 60f2bd: 4d 85 e4 test %r12,%r12 0.00 : 60f2c0: 0f 85 46 ff ff ff jne 60f20c 0.00 : 60f2c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 60f2cd: 00 00 00 : * aren't parameterized by whatever the subquery is parameterized by, : * unless its parameterization is resolved within the joinrel. Hence, add : * to param_source_rels anything that is laterally referenced in either : * input and is not in the join already. : */ : foreach(lc, root->lateral_info_list) 0.00 : 60f2d0: 48 8b 8d 10 ff ff ff mov -0xf0(%rbp),%rcx 0.00 : 60f2d7: 48 8b 81 c0 00 00 00 mov 0xc0(%rcx),%rax 0.00 : 60f2de: 48 85 c0 test %rax,%rax 0.00 : 60f2e1: 74 58 je 60f33b 0.00 : 60f2e3: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 60f2e7: 48 85 db test %rbx,%rbx 0.00 : 60f2ea: 75 0d jne 60f2f9 0.00 : 60f2ec: eb 4d jmp 60f33b 0.00 : 60f2ee: 66 90 xchg %ax,%ax 0.00 : 60f2f0: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 60f2f4: 48 85 db test %rbx,%rbx 0.00 : 60f2f7: 74 42 je 60f33b : { : LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(lc); 0.00 : 60f2f9: 4c 8b 23 mov (%rbx),%r12 : : if (bms_is_subset(ljinfo->lateral_rhs, joinrel->relids)) 0.00 : 60f2fc: 49 8b 77 08 mov 0x8(%r15),%rsi 0.00 : 60f300: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 60f305: e8 16 34 fd ff callq 5e2720 0.00 : 60f30a: 84 c0 test %al,%al 0.00 : 60f30c: 74 e2 je 60f2f0 : param_source_rels = bms_join(param_source_rels, 0.00 : 60f30e: 49 8b 77 08 mov 0x8(%r15),%rsi 0.00 : 60f312: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 60f317: e8 c4 3e fd ff callq 5e31e0 0.00 : 60f31c: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 60f323: 48 89 c6 mov %rax,%rsi 0.00 : 60f326: e8 85 39 fd ff callq 5e2cb0 0.00 : 60f32b: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : * aren't parameterized by whatever the subquery is parameterized by, : * unless its parameterization is resolved within the joinrel. Hence, add : * to param_source_rels anything that is laterally referenced in either : * input and is not in the join already. : */ : foreach(lc, root->lateral_info_list) 0.00 : 60f332: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 60f336: 48 85 db test %rbx,%rbx 0.00 : 60f339: 75 be jne 60f2f9 : * would need to be marked as parameterized by those rels, independently : * of all other considerations. Set extra_lateral_rels to the set of such : * rels. This will not affect our decisions as to which paths to : * generate; we merely add these rels to their required_outer sets. : */ : foreach(lc, root->placeholder_list) 0.00 : 60f33b: 48 8b 95 10 ff ff ff mov -0xf0(%rbp),%rdx 0.00 : 60f342: 48 8b 82 d8 00 00 00 mov 0xd8(%rdx),%rax 0.00 : 60f349: 48 85 c0 test %rax,%rax 0.00 : 60f34c: 0f 84 9e 0d 00 00 je 6100f0 0.00 : 60f352: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 60f356: 4d 85 e4 test %r12,%r12 0.00 : 60f359: 0f 84 91 0d 00 00 je 6100f0 0.00 : 60f35f: 45 31 ed xor %r13d,%r13d 0.00 : 60f362: eb 0e jmp 60f372 0.00 : 60f364: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 60f368: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 60f36d: 4d 85 e4 test %r12,%r12 0.00 : 60f370: 74 6e je 60f3e0 : { : PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(lc); 0.00 : 60f372: 49 8b 1c 24 mov (%r12),%rbx : : /* PHVs without lateral refs can be skipped over quickly */ : if (phinfo->ph_lateral == NULL) 0.00 : 60f376: 48 83 7b 18 00 cmpq $0x0,0x18(%rbx) 0.00 : 60f37b: 74 eb je 60f368 : continue; : /* Is it due to be evaluated at this join, and not in either input? */ : if (bms_is_subset(phinfo->ph_eval_at, joinrel->relids) && 0.00 : 60f37d: 49 8b 77 08 mov 0x8(%r15),%rsi 0.00 : 60f381: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 60f385: e8 96 33 fd ff callq 5e2720 0.00 : 60f38a: 84 c0 test %al,%al 0.00 : 60f38c: 74 da je 60f368 0.00 : 60f38e: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 60f395: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 60f399: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60f39d: e8 7e 33 fd ff callq 5e2720 0.00 : 60f3a2: 84 c0 test %al,%al 0.00 : 60f3a4: 75 c2 jne 60f368 0.00 : 60f3a6: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 60f3ad: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 60f3b1: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 60f3b5: e8 66 33 fd ff callq 5e2720 0.00 : 60f3ba: 84 c0 test %al,%al 0.00 : 60f3bc: 75 aa jne 60f368 : !bms_is_subset(phinfo->ph_eval_at, outerrel->relids) && : !bms_is_subset(phinfo->ph_eval_at, innerrel->relids)) : { : /* Yes, remember its lateral rels */ : extra_lateral_rels = bms_add_members(extra_lateral_rels, 0.00 : 60f3be: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 60f3c2: 4c 89 ef mov %r13,%rdi 0.00 : 60f3c5: e8 96 3d fd ff callq 5e3160 : * would need to be marked as parameterized by those rels, independently : * of all other considerations. Set extra_lateral_rels to the set of such : * rels. This will not affect our decisions as to which paths to : * generate; we merely add these rels to their required_outer sets. : */ : foreach(lc, root->placeholder_list) 0.00 : 60f3ca: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : if (bms_is_subset(phinfo->ph_eval_at, joinrel->relids) && : !bms_is_subset(phinfo->ph_eval_at, outerrel->relids) && : !bms_is_subset(phinfo->ph_eval_at, innerrel->relids)) : { : /* Yes, remember its lateral rels */ : extra_lateral_rels = bms_add_members(extra_lateral_rels, 0.00 : 60f3cf: 49 89 c5 mov %rax,%r13 : * would need to be marked as parameterized by those rels, independently : * of all other considerations. Set extra_lateral_rels to the set of such : * rels. This will not affect our decisions as to which paths to : * generate; we merely add these rels to their required_outer sets. : */ : foreach(lc, root->placeholder_list) 0.00 : 60f3d2: 4d 85 e4 test %r12,%r12 0.00 : 60f3d5: 75 9b jne 60f372 0.00 : 60f3d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 60f3de: 00 00 : * Make sure extra_lateral_rels doesn't list anything within the join, and : * that it's NULL if empty. (This allows us to use bms_add_members to add : * it to required_outer below, while preserving the property that : * required_outer is exactly NULL if empty.) : */ : extra_lateral_rels = bms_del_members(extra_lateral_rels, joinrel->relids); 0.00 : 60f3e0: 49 8b 77 08 mov 0x8(%r15),%rsi 0.00 : 60f3e4: 4c 89 ef mov %r13,%rdi 0.00 : 60f3e7: e8 b4 37 fd ff callq 5e2ba0 : if (bms_is_empty(extra_lateral_rels)) 0.00 : 60f3ec: 48 89 c7 mov %rax,%rdi : * Make sure extra_lateral_rels doesn't list anything within the join, and : * that it's NULL if empty. (This allows us to use bms_add_members to add : * it to required_outer below, while preserving the property that : * required_outer is exactly NULL if empty.) : */ : extra_lateral_rels = bms_del_members(extra_lateral_rels, joinrel->relids); 0.00 : 60f3ef: 48 89 45 a0 mov %rax,-0x60(%rbp) : if (bms_is_empty(extra_lateral_rels)) 0.00 : 60f3f3: e8 58 37 fd ff callq 5e2b50 0.00 : 60f3f8: 84 c0 test %al,%al 0.00 : 60f3fa: b8 00 00 00 00 mov $0x0,%eax 0.00 : 60f3ff: 48 0f 44 45 a0 cmove -0x60(%rbp),%rax : : /* : * 1. Consider mergejoin paths where both relations must be explicitly : * sorted. Skip this if we can't mergejoin. : */ : if (mergejoin_allowed) 0.00 : 60f404: 45 84 f6 test %r14b,%r14b : * that it's NULL if empty. (This allows us to use bms_add_members to add : * it to required_outer below, while preserving the property that : * required_outer is exactly NULL if empty.) : */ : extra_lateral_rels = bms_del_members(extra_lateral_rels, joinrel->relids); : if (bms_is_empty(extra_lateral_rels)) 0.00 : 60f407: 48 89 45 a0 mov %rax,-0x60(%rbp) : : /* : * 1. Consider mergejoin paths where both relations must be explicitly : * sorted. Skip this if we can't mergejoin. : */ : if (mergejoin_allowed) 0.00 : 60f40b: 0f 85 7f 03 00 00 jne 60f790 : /* : * 4. Consider paths where both outer and inner relations must be hashed : * before being joined. As above, disregard enable_hashjoin for full : * joins, because there may be no other alternative. : */ : if (enable_hashjoin || jointype == JOIN_FULL) 0.00 : 60f411: 80 bd 1f ff ff ff 00 cmpb $0x0,-0xe1(%rbp) 0.00 : 60f418: 75 0d jne 60f427 0.00 : 60f41a: 80 3d 91 91 55 00 00 cmpb $0x0,0x559191(%rip) # b685b2 0.00 : 60f421: 0f 84 c1 02 00 00 je 60f6e8 : SpecialJoinInfo *sjinfo, : SemiAntiJoinFactors *semifactors, : Relids param_source_rels, : Relids extra_lateral_rels) : { : bool isouterjoin = IS_OUTER_JOIN(jointype); 0.00 : 60f427: 0f b6 8d fc fe ff ff movzbl -0x104(%rbp),%ecx 0.00 : 60f42e: b8 2e 00 00 00 mov $0x2e,%eax 0.00 : 60f433: d3 f8 sar %cl,%eax 0.00 : 60f435: 83 e0 01 and $0x1,%eax 0.00 : 60f438: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 60f43d: 41 89 c5 mov %eax,%r13d 0.00 : 60f440: 0f 84 a2 02 00 00 je 60f6e8 0.00 : 60f446: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 60f44a: 4c 8b 60 08 mov 0x8(%rax),%r12 : * : * Scan the join's restrictinfo list to find hashjoinable clauses that are : * usable with this pair of sub-relations. : */ : hashclauses = NIL; : foreach(l, restrictlist) 0.00 : 60f44e: 4d 85 e4 test %r12,%r12 0.00 : 60f451: 0f 84 91 02 00 00 je 60f6e8 0.00 : 60f457: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 60f45e: 00 0.00 : 60f45f: eb 15 jmp 60f476 0.00 : 60f461: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 60f468: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 60f46d: 4d 85 e4 test %r12,%r12 0.00 : 60f470: 0f 84 ba 09 00 00 je 60fe30 : : /* : * If processing an outer join, only use its own join clauses for : * hashing. For inner joins we need not be so picky. : */ : if (isouterjoin && restrictinfo->is_pushed_down) 0.00 : 60f476: 45 84 ed test %r13b,%r13b : * usable with this pair of sub-relations. : */ : hashclauses = NIL; : foreach(l, restrictlist) : { : RestrictInfo *restrictinfo = (RestrictInfo *) lfirst(l); 0.00 : 60f479: 49 8b 1c 24 mov (%r12),%rbx : : /* : * If processing an outer join, only use its own join clauses for : * hashing. For inner joins we need not be so picky. : */ : if (isouterjoin && restrictinfo->is_pushed_down) 0.00 : 60f47d: 74 06 je 60f485 0.00 : 60f47f: 80 7b 10 00 cmpb $0x0,0x10(%rbx) 0.00 : 60f483: 75 e3 jne 60f468 : continue; : : if (!restrictinfo->can_join || 0.00 : 60f485: 80 7b 12 00 cmpb $0x0,0x12(%rbx) 0.00 : 60f489: 74 dd je 60f468 0.00 : 60f48b: 8b 83 ac 00 00 00 mov 0xac(%rbx),%eax 0.00 : 60f491: 85 c0 test %eax,%eax 0.00 : 60f493: 74 d3 je 60f468 : */ : static inline bool : clause_sides_match_join(RestrictInfo *rinfo, RelOptInfo *outerrel, : RelOptInfo *innerrel) : { : if (bms_is_subset(rinfo->left_relids, outerrel->relids) && 0.00 : 60f495: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 60f49c: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 60f4a0: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 60f4a4: e8 77 32 fd ff callq 5e2720 0.00 : 60f4a9: 84 c0 test %al,%al 0.00 : 60f4ab: 0f 84 87 01 00 00 je 60f638 0.00 : 60f4b1: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 60f4b8: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 60f4bc: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60f4c0: e8 5b 32 fd ff callq 5e2720 0.00 : 60f4c5: 84 c0 test %al,%al 0.00 : 60f4c7: 0f 84 6b 01 00 00 je 60f638 : bms_is_subset(rinfo->right_relids, innerrel->relids)) : { : /* lefthand side is outer */ : rinfo->outer_is_left = true; 0.00 : 60f4cd: c6 83 a8 00 00 00 01 movb $0x1,0xa8(%rbx) : * Check if clause has the form "outer op inner" or "inner op outer". : */ : if (!clause_sides_match_join(restrictinfo, outerrel, innerrel)) : continue; /* no good for these input relations */ : : hashclauses = lappend(hashclauses, restrictinfo); 0.00 : 60f4d4: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 60f4d8: 48 89 de mov %rbx,%rsi 0.00 : 60f4db: e8 a0 29 fd ff callq 5e1e80 0.00 : 60f4e0: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 60f4e4: eb 82 jmp 60f468 0.00 : 60f4e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 60f4ed: 00 00 00 : List *restrictlist, : JoinType jointype, : bool *mergejoin_allowed) : { : List *result_list = NIL; : bool isouterjoin = IS_OUTER_JOIN(jointype); 0.00 : 60f4f0: 0f b6 8d fc fe ff ff movzbl -0x104(%rbp),%ecx 0.00 : 60f4f7: b8 2e 00 00 00 mov $0x2e,%eax 0.00 : 60f4fc: d3 f8 sar %cl,%eax 0.00 : 60f4fe: 83 e0 01 and $0x1,%eax 0.00 : 60f501: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 60f506: 41 89 c6 mov %eax,%r14d 0.00 : 60f509: 0f 84 54 0c 00 00 je 610163 0.00 : 60f50f: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 60f513: 4c 8b 60 08 mov 0x8(%rax),%r12 : bool have_nonmergeable_joinclause = false; : ListCell *l; : : foreach(l, restrictlist) 0.00 : 60f517: 4d 85 e4 test %r12,%r12 0.00 : 60f51a: 0f 84 43 0c 00 00 je 610163 0.00 : 60f520: 48 c7 85 20 ff ff ff movq $0x0,-0xe0(%rbp) 0.00 : 60f527: 00 00 00 00 0.00 : 60f52b: 45 31 ed xor %r13d,%r13d 0.00 : 60f52e: eb 67 jmp 60f597 : */ : if (isouterjoin && restrictinfo->is_pushed_down) : continue; : : /* Check that clause is a mergeable operator clause */ : if (!restrictinfo->can_join || 0.00 : 60f530: 48 83 7b 78 00 cmpq $0x0,0x78(%rbx) 0.00 : 60f535: 74 75 je 60f5ac : */ : static inline bool : clause_sides_match_join(RestrictInfo *rinfo, RelOptInfo *outerrel, : RelOptInfo *innerrel) : { : if (bms_is_subset(rinfo->left_relids, outerrel->relids) && 0.00 : 60f537: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 60f53e: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 60f542: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 60f546: e8 d5 31 fd ff callq 5e2720 0.00 : 60f54b: 84 c0 test %al,%al 0.00 : 60f54d: 74 1c je 60f56b 0.00 : 60f54f: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 60f556: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 60f55a: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60f55e: e8 bd 31 fd ff callq 5e2720 0.00 : 60f563: 84 c0 test %al,%al 0.00 : 60f565: 0f 85 bd 01 00 00 jne 60f728 : { : /* lefthand side is outer */ : rinfo->outer_is_left = true; : return true; : } : else if (bms_is_subset(rinfo->left_relids, innerrel->relids) && 0.00 : 60f56b: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 60f572: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 60f576: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 60f57a: e8 a1 31 fd ff callq 5e2720 0.00 : 60f57f: 84 c0 test %al,%al 0.00 : 60f581: 0f 85 79 01 00 00 jne 60f700 : { : have_nonmergeable_joinclause = true; : continue; /* can't handle redundant eclasses */ : } : : result_list = lappend(result_list, restrictinfo); 0.00 : 60f587: 41 bd 01 00 00 00 mov $0x1,%r13d : List *result_list = NIL; : bool isouterjoin = IS_OUTER_JOIN(jointype); : bool have_nonmergeable_joinclause = false; : ListCell *l; : : foreach(l, restrictlist) 0.00 : 60f58d: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 60f592: 4d 85 e4 test %r12,%r12 0.00 : 60f595: 74 39 je 60f5d0 : * If processing an outer join, only use its own join clauses in the : * merge. For inner joins we can use pushed-down clauses too. (Note: : * we don't set have_nonmergeable_joinclause here because pushed-down : * clauses will become otherquals not joinquals.) : */ : if (isouterjoin && restrictinfo->is_pushed_down) 0.00 : 60f597: 45 84 f6 test %r14b,%r14b : bool have_nonmergeable_joinclause = false; : ListCell *l; : : foreach(l, restrictlist) : { : RestrictInfo *restrictinfo = (RestrictInfo *) lfirst(l); 0.00 : 60f59a: 49 8b 1c 24 mov (%r12),%rbx : * If processing an outer join, only use its own join clauses in the : * merge. For inner joins we can use pushed-down clauses too. (Note: : * we don't set have_nonmergeable_joinclause here because pushed-down : * clauses will become otherquals not joinquals.) : */ : if (isouterjoin && restrictinfo->is_pushed_down) 0.00 : 60f59e: 74 06 je 60f5a6 0.00 : 60f5a0: 80 7b 10 00 cmpb $0x0,0x10(%rbx) 0.00 : 60f5a4: 75 e7 jne 60f58d : continue; : : /* Check that clause is a mergeable operator clause */ : if (!restrictinfo->can_join || 0.00 : 60f5a6: 80 7b 12 00 cmpb $0x0,0x12(%rbx) 0.00 : 60f5aa: 75 84 jne 60f530 : * The executor can handle extra joinquals that are constants, but : * not anything else, when doing right/full merge join. (The : * reason to support constants is so we can do FULL JOIN ON : * FALSE.) : */ : if (!restrictinfo->clause || !IsA(restrictinfo->clause, Const)) 0.00 : 60f5ac: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 60f5b0: 48 85 c0 test %rax,%rax 0.00 : 60f5b3: 74 d2 je 60f587 0.00 : 60f5b5: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 60f5bb: 75 ca jne 60f587 : List *result_list = NIL; : bool isouterjoin = IS_OUTER_JOIN(jointype); : bool have_nonmergeable_joinclause = false; : ListCell *l; : : foreach(l, restrictlist) 0.00 : 60f5bd: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 60f5c2: 4d 85 e4 test %r12,%r12 0.00 : 60f5c5: 75 d0 jne 60f597 0.00 : 60f5c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 60f5ce: 00 00 : } : : /* : * Report whether mergejoin is allowed (see comment at top of function). : */ : switch (jointype) 0.00 : 60f5d0: 8b 85 fc fe ff ff mov -0x104(%rbp),%eax : { : case JOIN_RIGHT: : case JOIN_FULL: : *mergejoin_allowed = !have_nonmergeable_joinclause; 0.00 : 60f5d6: 41 83 f5 01 xor $0x1,%r13d : } : : /* : * Report whether mergejoin is allowed (see comment at top of function). : */ : switch (jointype) 0.00 : 60f5da: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 60f5e0: 83 e8 02 sub $0x2,%eax : { : case JOIN_RIGHT: : case JOIN_FULL: : *mergejoin_allowed = !have_nonmergeable_joinclause; 0.00 : 60f5e3: 83 f8 01 cmp $0x1,%eax : : /* : * If it's SEMI or ANTI join, compute correction factors for cost : * estimation. These will be the same for all paths. : */ : if (jointype == JOIN_SEMI || jointype == JOIN_ANTI) 0.00 : 60f5e6: 8b 85 fc fe ff ff mov -0x104(%rbp),%eax : */ : switch (jointype) : { : case JOIN_RIGHT: : case JOIN_FULL: : *mergejoin_allowed = !have_nonmergeable_joinclause; 0.00 : 60f5ec: 45 0f 46 f5 cmovbe %r13d,%r14d : : /* : * If it's SEMI or ANTI join, compute correction factors for cost : * estimation. These will be the same for all paths. : */ : if (jointype == JOIN_SEMI || jointype == JOIN_ANTI) 0.00 : 60f5f0: 83 e8 04 sub $0x4,%eax 0.00 : 60f5f3: 83 f8 01 cmp $0x1,%eax 0.00 : 60f5f6: 0f 87 c6 fb ff ff ja 60f1c2 : compute_semi_anti_join_factors(root, outerrel, innerrel, 0.00 : 60f5fc: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 60f600: 4c 8b 85 f0 fe ff ff mov -0x110(%rbp),%r8 0.00 : 60f607: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 60f60b: 8b 8d fc fe ff ff mov -0x104(%rbp),%ecx 0.00 : 60f611: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 60f618: 48 8b b5 08 ff ff ff mov -0xf8(%rbp),%rsi 0.00 : 60f61f: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f626: 48 89 04 24 mov %rax,(%rsp) 0.00 : 60f62a: e8 01 4b ff ff callq 604130 0.00 : 60f62f: e9 8e fb ff ff jmpq 60f1c2 0.00 : 60f634: 0f 1f 40 00 nopl 0x0(%rax) : { : /* lefthand side is outer */ : rinfo->outer_is_left = true; : return true; : } : else if (bms_is_subset(rinfo->left_relids, innerrel->relids) && 0.00 : 60f638: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 60f63f: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 60f643: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 60f647: e8 d4 30 fd ff callq 5e2720 0.00 : 60f64c: 84 c0 test %al,%al 0.00 : 60f64e: 0f 84 14 fe ff ff je 60f468 0.00 : 60f654: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 60f65b: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 60f65f: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 60f663: e8 b8 30 fd ff callq 5e2720 0.00 : 60f668: 84 c0 test %al,%al 0.00 : 60f66a: 0f 84 f8 fd ff ff je 60f468 : bms_is_subset(rinfo->right_relids, outerrel->relids)) : { : /* righthand side is outer */ : rinfo->outer_is_left = false; 0.00 : 60f670: c6 83 a8 00 00 00 00 movb $0x0,0xa8(%rbx) 0.00 : 60f677: e9 58 fe ff ff jmpq 60f4d4 : return; : : /* Unique-ify if need be; we ignore parameterized possibilities */ : if (jointype == JOIN_UNIQUE_OUTER) : { : cheapest_total_outer = (Path *) 0.00 : 60f67c: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60f683: 48 8b b5 08 ff ff ff mov -0xf8(%rbp),%rsi 0.00 : 60f68a: 48 89 da mov %rbx,%rdx 0.00 : 60f68d: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f694: e8 07 11 02 00 callq 6307a0 : create_unique_path(root, outerrel, : cheapest_total_outer, sjinfo); : Assert(cheapest_total_outer); : jointype = JOIN_INNER; : try_hashjoin_path(root, 0.00 : 60f699: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 60f69d: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 60f6a1: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 60f6a5: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 60f6ac: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 60f6b1: 48 89 54 24 20 mov %rdx,0x20(%rsp) 0.00 : 60f6b6: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 60f6bb: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 60f6bf: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 60f6c3: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 60f6c8: 48 89 0c 24 mov %rcx,(%rsp) : cheapest_total_inner, : restrictlist, : hashclauses); : if (cheapest_startup_outer != NULL && : cheapest_startup_outer != cheapest_total_outer) : try_hashjoin_path(root, 0.00 : 60f6cc: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60f6d3: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f6da: 31 d2 xor %edx,%edx 0.00 : 60f6dc: 4c 89 fe mov %r15,%rsi 0.00 : 60f6df: e8 0c f9 ff ff callq 60eff0 0.00 : 60f6e4: 0f 1f 40 00 nopl 0x0(%rax) : if (enable_hashjoin || jointype == JOIN_FULL) : hash_inner_and_outer(root, joinrel, outerrel, innerrel, : restrictlist, jointype, : sjinfo, &semifactors, : param_source_rels, extra_lateral_rels); : } 0.00 : 60f6e8: 48 81 c4 28 01 00 00 add $0x128,%rsp 0.00 : 60f6ef: 5b pop %rbx 0.00 : 60f6f0: 41 5c pop %r12 0.00 : 60f6f2: 41 5d pop %r13 0.00 : 60f6f4: 41 5e pop %r14 0.00 : 60f6f6: 41 5f pop %r15 0.00 : 60f6f8: c9 leaveq 0.00 : 60f6f9: c3 retq 0.00 : 60f6fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* lefthand side is outer */ : rinfo->outer_is_left = true; : return true; : } : else if (bms_is_subset(rinfo->left_relids, innerrel->relids) && 0.00 : 60f700: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 60f707: 48 8b 7b 40 mov 0x40(%rbx),%rdi 0.00 : 60f70b: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 60f70f: e8 0c 30 fd ff callq 5e2720 0.00 : 60f714: 84 c0 test %al,%al 0.00 : 60f716: 0f 84 6b fe ff ff je 60f587 : bms_is_subset(rinfo->right_relids, outerrel->relids)) : { : /* righthand side is outer */ : rinfo->outer_is_left = false; 0.00 : 60f71c: c6 83 a8 00 00 00 00 movb $0x0,0xa8(%rbx) 0.00 : 60f723: eb 0a jmp 60f72f 0.00 : 60f725: 0f 1f 00 nopl (%rax) : { : if (bms_is_subset(rinfo->left_relids, outerrel->relids) && : bms_is_subset(rinfo->right_relids, innerrel->relids)) : { : /* lefthand side is outer */ : rinfo->outer_is_left = true; 0.00 : 60f728: c6 83 a8 00 00 00 01 movb $0x1,0xa8(%rbx) : * variable could be equated to a constant. Because we will propagate : * that constant across the join clause, the loss of ability to do a : * mergejoin is not really all that big a deal, and so it's not clear : * that improving this is important. : */ : update_mergeclause_eclasses(root, restrictinfo); 0.00 : 60f72f: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f736: 48 89 de mov %rbx,%rsi 0.00 : 60f739: e8 d2 21 00 00 callq 611910 : : if (EC_MUST_BE_REDUNDANT(restrictinfo->left_ec) || 0.00 : 60f73e: 48 8b 83 80 00 00 00 mov 0x80(%rbx),%rax 0.00 : 60f745: 80 78 38 00 cmpb $0x0,0x38(%rax) 0.00 : 60f749: 75 35 jne 60f780 0.00 : 60f74b: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 60f752: 80 78 38 00 cmpb $0x0,0x38(%rax) 0.00 : 60f756: 74 0a je 60f762 0.00 : 60f758: 80 78 3a 00 cmpb $0x0,0x3a(%rax) 0.00 : 60f75c: 0f 84 25 fe ff ff je 60f587 : { : have_nonmergeable_joinclause = true; : continue; /* can't handle redundant eclasses */ : } : : result_list = lappend(result_list, restrictinfo); 0.00 : 60f762: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi 0.00 : 60f769: 48 89 de mov %rbx,%rsi 0.00 : 60f76c: e8 0f 27 fd ff callq 5e1e80 0.00 : 60f771: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) 0.00 : 60f778: e9 10 fe ff ff jmpq 60f58d 0.00 : 60f77d: 0f 1f 00 nopl (%rax) : * mergejoin is not really all that big a deal, and so it's not clear : * that improving this is important. : */ : update_mergeclause_eclasses(root, restrictinfo); : : if (EC_MUST_BE_REDUNDANT(restrictinfo->left_ec) || 0.00 : 60f780: 80 78 3a 00 cmpb $0x0,0x3a(%rax) 0.00 : 60f784: 0f 84 fd fd ff ff je 60f587 0.00 : 60f78a: eb bf jmp 60f74b 0.00 : 60f78c: 0f 1f 40 00 nopl 0x0(%rax) : * we'd have a combinatorial explosion of mergejoin paths of dubious : * value. This interacts with decisions elsewhere that also discriminate : * against mergejoins with parameterized inputs; see comments in : * src/backend/optimizer/README. : */ : outer_path = outerrel->cheapest_total_path; 0.00 : 60f790: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx : inner_path = innerrel->cheapest_total_path; 0.00 : 60f797: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx : * we'd have a combinatorial explosion of mergejoin paths of dubious : * value. This interacts with decisions elsewhere that also discriminate : * against mergejoins with parameterized inputs; see comments in : * src/backend/optimizer/README. : */ : outer_path = outerrel->cheapest_total_path; 0.00 : 60f79e: 48 8b 52 40 mov 0x40(%rdx),%rdx 0.00 : 60f7a2: 48 89 95 40 ff ff ff mov %rdx,-0xc0(%rbp) : inner_path = innerrel->cheapest_total_path; 0.00 : 60f7a9: 48 8b 49 40 mov 0x40(%rcx),%rcx 0.00 : 60f7ad: 48 89 8d 38 ff ff ff mov %rcx,-0xc8(%rbp) : * If either cheapest-total path is parameterized by the other rel, we : * can't use a mergejoin. (There's no use looking for alternative input : * paths, since these should already be the least-parameterized available : * paths.) : */ : if (PATH_PARAM_BY_REL(outer_path, innerrel) || 0.00 : 60f7b4: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 60f7b8: 48 85 c0 test %rax,%rax 0.00 : 60f7bb: 74 1c je 60f7d9 0.00 : 60f7bd: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 60f7c4: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60f7c8: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 60f7cc: e8 af 31 fd ff callq 5e2980 0.00 : 60f7d1: 84 c0 test %al,%al 0.00 : 60f7d3: 0f 85 69 01 00 00 jne 60f942 0.00 : 60f7d9: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 60f7e0: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 60f7e4: 48 85 c0 test %rax,%rax 0.00 : 60f7e7: 74 1c je 60f805 0.00 : 60f7e9: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 60f7f0: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60f7f4: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 60f7f8: e8 83 31 fd ff callq 5e2980 0.00 : 60f7fd: 84 c0 test %al,%al 0.00 : 60f7ff: 0f 85 3d 01 00 00 jne 60f942 : : /* : * If unique-ification is requested, do it and then handle as a plain : * inner join. : */ : if (jointype == JOIN_UNIQUE_OUTER) 0.00 : 60f805: 83 bd fc fe ff ff 06 cmpl $0x6,-0x104(%rbp) 0.00 : 60f80c: 0f 84 fe 0a 00 00 je 610310 : outer_path = (Path *) create_unique_path(root, outerrel, : outer_path, sjinfo); : Assert(outer_path); : jointype = JOIN_INNER; : } : else if (jointype == JOIN_UNIQUE_INNER) 0.00 : 60f812: 8b 8d fc fe ff ff mov -0x104(%rbp),%ecx 0.00 : 60f818: 83 f9 07 cmp $0x7,%ecx 0.00 : 60f81b: 89 4d ac mov %ecx,-0x54(%rbp) 0.00 : 60f81e: 0f 84 20 0b 00 00 je 610344 : * : * The pathkey order returned by select_outer_pathkeys_for_merge() has : * some heuristics behind it (see that function), so be sure to try it : * exactly as-is as well as making variants. : */ : all_pathkeys = select_outer_pathkeys_for_merge(root, 0.00 : 60f824: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 60f82b: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f832: 4c 89 fa mov %r15,%rdx 0.00 : 60f835: e8 b6 26 00 00 callq 611ef0 0.00 : 60f83a: 48 85 c0 test %rax,%rax 0.00 : 60f83d: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) 0.00 : 60f844: 0f 84 f8 00 00 00 je 60f942 0.00 : 60f84a: 4c 8b 70 08 mov 0x8(%rax),%r14 : mergeclause_list, : joinrel); : : foreach(l, all_pathkeys) 0.00 : 60f84e: 4d 85 f6 test %r14,%r14 0.00 : 60f851: 0f 84 eb 00 00 00 je 60f942 0.00 : 60f857: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 60f85e: 00 00 : List *outerkeys; : List *innerkeys; : List *merge_pathkeys; : : /* Make a pathkey list with this guy first */ : if (l != list_head(all_pathkeys)) 0.00 : 60f860: 4c 8b ad 30 ff ff ff mov -0xd0(%rbp),%r13 : mergeclause_list, : joinrel); : : foreach(l, all_pathkeys) : { : List *front_pathkey = (List *) lfirst(l); 0.00 : 60f867: 49 8b 1e mov (%r14),%rbx : List *outerkeys; : List *innerkeys; : List *merge_pathkeys; : : /* Make a pathkey list with this guy first */ : if (l != list_head(all_pathkeys)) 0.00 : 60f86a: 4d 3b 75 08 cmp 0x8(%r13),%r14 0.00 : 60f86e: 74 25 je 60f895 : outerkeys = lcons(front_pathkey, 0.00 : 60f870: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 60f877: e8 84 1e fd ff callq 5e1700 0.00 : 60f87c: 48 89 de mov %rbx,%rsi 0.00 : 60f87f: 48 89 c7 mov %rax,%rdi 0.00 : 60f882: e8 09 2a fd ff callq 5e2290 0.00 : 60f887: 48 89 df mov %rbx,%rdi 0.00 : 60f88a: 48 89 c6 mov %rax,%rsi 0.00 : 60f88d: e8 be 1f fd ff callq 5e1850 0.00 : 60f892: 49 89 c5 mov %rax,%r13 : front_pathkey)); : else : outerkeys = all_pathkeys; /* no work at first one... */ : : /* Sort the mergeclauses into the corresponding ordering */ : cur_mergeclauses = find_mergeclauses_for_pathkeys(root, 0.00 : 60f895: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 60f89c: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f8a3: ba 01 00 00 00 mov $0x1,%edx 0.00 : 60f8a8: 4c 89 ee mov %r13,%rsi 0.00 : 60f8ab: e8 80 29 00 00 callq 612230 : : /* Should have used them all... */ : Assert(list_length(cur_mergeclauses) == list_length(mergeclause_list)); : : /* Build sort pathkeys for the inner side */ : innerkeys = make_inner_pathkeys_for_merge(root, 0.00 : 60f8b0: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f8b7: 4c 89 ea mov %r13,%rdx 0.00 : 60f8ba: 48 89 c6 mov %rax,%rsi : front_pathkey)); : else : outerkeys = all_pathkeys; /* no work at first one... */ : : /* Sort the mergeclauses into the corresponding ordering */ : cur_mergeclauses = find_mergeclauses_for_pathkeys(root, 0.00 : 60f8bd: 49 89 c4 mov %rax,%r12 : : /* Should have used them all... */ : Assert(list_length(cur_mergeclauses) == list_length(mergeclause_list)); : : /* Build sort pathkeys for the inner side */ : innerkeys = make_inner_pathkeys_for_merge(root, 0.00 : 60f8c0: e8 5b 24 00 00 callq 611d20 : cur_mergeclauses, : outerkeys); : : /* Build pathkeys representing output sort order */ : merge_pathkeys = build_join_pathkeys(root, joinrel, jointype, 0.00 : 60f8c5: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 60f8c8: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f8cf: 4c 89 e9 mov %r13,%rcx 0.00 : 60f8d2: 4c 89 fe mov %r15,%rsi : : /* Should have used them all... */ : Assert(list_length(cur_mergeclauses) == list_length(mergeclause_list)); : : /* Build sort pathkeys for the inner side */ : innerkeys = make_inner_pathkeys_for_merge(root, 0.00 : 60f8d5: 48 89 c3 mov %rax,%rbx : cur_mergeclauses, : outerkeys); : : /* Build pathkeys representing output sort order */ : merge_pathkeys = build_join_pathkeys(root, joinrel, jointype, 0.00 : 60f8d8: e8 23 23 00 00 callq 611c00 : * : * Note: it's possible that the cheapest paths will already be sorted : * properly. try_mergejoin_path will detect that case and suppress an : * explicit sort step, so we needn't do so here. : */ : try_mergejoin_path(root, 0.00 : 60f8dd: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 60f8e4: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 60f8eb: 4c 89 fe mov %r15,%rsi 0.00 : 60f8ee: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 60f8f3: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 60f8f7: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 60f8fb: 4c 8b 85 28 ff ff ff mov -0xd8(%rbp),%r8 0.00 : 60f902: 48 89 54 24 08 mov %rdx,0x8(%rsp) 0.00 : 60f907: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 60f90b: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 60f90e: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60f915: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60f91c: 48 89 5c 24 30 mov %rbx,0x30(%rsp) 0.00 : 60f921: 4c 89 6c 24 28 mov %r13,0x28(%rsp) 0.00 : 60f926: 4c 89 64 24 20 mov %r12,0x20(%rsp) 0.00 : 60f92b: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 60f930: e8 bb f3 ff ff callq 60ecf0 : */ : all_pathkeys = select_outer_pathkeys_for_merge(root, : mergeclause_list, : joinrel); : : foreach(l, all_pathkeys) 0.00 : 60f935: 4d 8b 76 08 mov 0x8(%r14),%r14 0.00 : 60f939: 4d 85 f6 test %r14,%r14 0.00 : 60f93c: 0f 85 1e ff ff ff jne 60f860 : Relids extra_lateral_rels) : { : JoinType save_jointype = jointype; : bool nestjoinOK; : bool useallclauses; : Path *inner_cheapest_total = innerrel->cheapest_total_path; 0.00 : 60f942: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax : * are doing a right or full mergejoin, we must use *all* the mergeclauses : * as join clauses, else we will not have a valid plan. (Although these : * two flags are currently inverses, keep them separate for clarity and : * possible future changes.) : */ : switch (jointype) 0.00 : 60f949: 83 bd fc fe ff ff 07 cmpl $0x7,-0x104(%rbp) : Relids extra_lateral_rels) : { : JoinType save_jointype = jointype; : bool nestjoinOK; : bool useallclauses; : Path *inner_cheapest_total = innerrel->cheapest_total_path; 0.00 : 60f950: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 60f954: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : * are doing a right or full mergejoin, we must use *all* the mergeclauses : * as join clauses, else we will not have a valid plan. (Although these : * two flags are currently inverses, keep them separate for clarity and : * possible future changes.) : */ : switch (jointype) 0.00 : 60f95b: 0f 87 df 06 00 00 ja 610040 0.00 : 60f961: 0f b6 8d fc fe ff ff movzbl -0x104(%rbp),%ecx 0.00 : 60f968: b8 01 00 00 00 mov $0x1,%eax 0.00 : 60f96d: 48 d3 e0 shl %cl,%rax 0.00 : 60f970: a8 33 test $0x33,%al 0.00 : 60f972: 0f 85 80 07 00 00 jne 6100f8 0.00 : 60f978: a8 c0 test $0xc0,%al 0.00 : 60f97a: 0f 84 3a 08 00 00 je 6101ba 0.00 : 60f980: c6 45 86 00 movb $0x0,-0x7a(%rbp) 0.00 : 60f984: c6 45 87 01 movb $0x1,-0x79(%rbp) 0.00 : 60f988: c7 45 b0 00 00 00 00 movl $0x0,-0x50(%rbp) : /* : * If inner_cheapest_total is parameterized by the outer rel, ignore it; : * we will consider it below as a member of cheapest_parameterized_paths, : * but the other possibilities considered in this routine aren't usable. : */ : if (PATH_PARAM_BY_REL(inner_cheapest_total, outerrel)) 0.00 : 60f98f: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : 60f996: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 60f99a: 48 85 c0 test %rax,%rax 0.00 : 60f99d: 74 2a je 60f9c9 0.00 : 60f99f: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 60f9a6: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60f9aa: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60f9ae: e8 cd 2f fd ff callq 5e2980 0.00 : 60f9b3: 84 c0 test %al,%al 0.00 : 60f9b5: b8 00 00 00 00 mov $0x0,%eax 0.00 : 60f9ba: 48 0f 44 85 58 ff ff cmove -0xa8(%rbp),%rax 0.00 : 60f9c1: ff 0.00 : 60f9c2: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : : /* : * If we need to unique-ify the inner path, we will consider only the : * cheapest-total inner. : */ : if (save_jointype == JOIN_UNIQUE_INNER) 0.00 : 60f9c9: 83 bd fc fe ff ff 07 cmpl $0x7,-0x104(%rbp) 0.00 : 60f9d0: 0f 84 38 07 00 00 je 61010e : return; : inner_cheapest_total = (Path *) : create_unique_path(root, innerrel, inner_cheapest_total, sjinfo); : Assert(inner_cheapest_total); : } : else if (nestjoinOK) 0.00 : 60f9d6: 80 7d 87 00 cmpb $0x0,-0x79(%rbp) 0.00 : 60f9da: 74 0d je 60f9e9 : /* : * Consider materializing the cheapest inner path, unless : * enable_material is off or the path in question materializes its : * output anyway. : */ : if (enable_material && inner_cheapest_total != NULL && 0.00 : 60f9dc: 80 3d cd 8b 55 00 00 cmpb $0x0,0x558bcd(%rip) # b685b0 0.00 : 60f9e3: 0f 85 8d 07 00 00 jne 610176 : !ExecMaterializesOutput(inner_cheapest_total->pathtype)) : matpath = (Path *) 0.00 : 60f9e9: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : 60f9f0: 00 00 00 00 : create_material_path(innerrel, inner_cheapest_total); : } : : foreach(lc1, outerrel->pathlist) 0.00 : 60f9f4: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 60f9fb: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 60f9ff: 48 85 c0 test %rax,%rax 0.00 : 60fa02: 75 24 jne 60fa28 0.00 : 60fa04: e9 08 fa ff ff jmpq 60f411 0.00 : 60fa09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * any but the cheapest outer. (XXX we don't consider parameterized : * outers, nor inners, for unique-ified cases. Should we?) : */ : if (save_jointype == JOIN_UNIQUE_OUTER) : { : if (outerpath != outerrel->cheapest_total_path) 0.00 : 60fa10: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 60fa17: 4c 3b 69 40 cmp 0x40(%rcx),%r13 0.00 : 60fa1b: 0f 84 73 08 00 00 je 610294 : !ExecMaterializesOutput(inner_cheapest_total->pathtype)) : matpath = (Path *) : create_material_path(innerrel, inner_cheapest_total); : } : : foreach(lc1, outerrel->pathlist) 0.00 : 60fa21: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 60fa28: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 60fa2c: 48 85 c0 test %rax,%rax 0.00 : 60fa2f: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 60fa36: 0f 84 d5 f9 ff ff je 60f411 : { : Path *outerpath = (Path *) lfirst(lc1); 0.00 : 60fa3c: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 60fa43: 4c 8b 29 mov (%rcx),%r13 : int sortkeycnt; : : /* : * We cannot use an outer path that is parameterized by the inner rel. : */ : if (PATH_PARAM_BY_REL(outerpath, innerrel)) 0.00 : 60fa46: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 60fa4a: 48 85 c0 test %rax,%rax 0.00 : 60fa4d: 74 18 je 60fa67 0.00 : 60fa4f: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 60fa56: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60fa5a: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 60fa5e: e8 1d 2f fd ff callq 5e2980 0.00 : 60fa63: 84 c0 test %al,%al 0.00 : 60fa65: 75 ba jne 60fa21 : /* : * If we need to unique-ify the outer path, it's pointless to consider : * any but the cheapest outer. (XXX we don't consider parameterized : * outers, nor inners, for unique-ified cases. Should we?) : */ : if (save_jointype == JOIN_UNIQUE_OUTER) 0.00 : 60fa67: 83 bd fc fe ff ff 06 cmpl $0x6,-0x104(%rbp) 0.00 : 60fa6e: 74 a0 je 60fa10 : /* : * The result will have this sort order (even if it is implemented as : * a nestloop, and even if some of the mergeclauses are implemented by : * qpquals rather than as true mergeclauses): : */ : merge_pathkeys = build_join_pathkeys(root, joinrel, jointype, 0.00 : 60fa70: 49 8b 4d 30 mov 0x30(%r13),%rcx 0.00 : 60fa74: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 60fa77: 4c 89 fe mov %r15,%rsi 0.00 : 60fa7a: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fa81: e8 7a 21 00 00 callq 611c00 : outerpath->pathkeys); : : if (save_jointype == JOIN_UNIQUE_INNER) 0.00 : 60fa86: 83 bd fc fe ff ff 07 cmpl $0x7,-0x104(%rbp) : /* : * The result will have this sort order (even if it is implemented as : * a nestloop, and even if some of the mergeclauses are implemented by : * qpquals rather than as true mergeclauses): : */ : merge_pathkeys = build_join_pathkeys(root, joinrel, jointype, 0.00 : 60fa8d: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : outerpath->pathkeys); : : if (save_jointype == JOIN_UNIQUE_INNER) 0.00 : 60fa94: 0f 84 ee 05 00 00 je 610088 : outerpath, : inner_cheapest_total, : restrictlist, : merge_pathkeys); : } : else if (nestjoinOK) 0.00 : 60fa9a: 80 7d 87 00 cmpb $0x0,-0x79(%rbp) 0.00 : 60fa9e: 0f 84 cf 00 00 00 je 60fb73 : * cheapest-total paths for each available parameterization of the : * inner relation, including the unparameterized case. : */ : ListCell *lc2; : : foreach(lc2, innerrel->cheapest_parameterized_paths) 0.00 : 60faa4: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 60faab: 48 8b 42 50 mov 0x50(%rdx),%rax 0.00 : 60faaf: 48 85 c0 test %rax,%rax 0.00 : 60fab2: 74 63 je 60fb17 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/../../../../src/include/nodes/pg_list.h:87 100.00 : 60fab4: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 60fab8: 48 85 db test %rbx,%rbx 0.00 : 60fabb: 74 5a je 60fb17 0.00 : 60fabd: 0f 1f 00 nopl (%rax) : { : Path *innerpath = (Path *) lfirst(lc2); : : try_nestloop_path(root, 0.00 : 60fac0: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 60fac7: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 60facb: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 60facf: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 60fad3: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 60fada: 4c 89 fe mov %r15,%rsi 0.00 : 60fadd: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fae4: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : 60fae9: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 60faee: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60faf5: 48 8b 03 mov (%rbx),%rax 0.00 : 60faf8: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 60fafc: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 60faff: 4c 89 6c 24 08 mov %r13,0x8(%rsp) 0.00 : 60fb04: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 60fb09: e8 92 f3 ff ff callq 60eea0 : * cheapest-total paths for each available parameterization of the : * inner relation, including the unparameterized case. : */ : ListCell *lc2; : : foreach(lc2, innerrel->cheapest_parameterized_paths) 0.00 : 60fb0e: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 60fb12: 48 85 db test %rbx,%rbx 0.00 : 60fb15: 75 a9 jne 60fac0 : restrictlist, : merge_pathkeys); : } : : /* Also consider materialized form of the cheapest inner path */ : if (matpath != NULL) 0.00 : 60fb17: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : 60fb1e: 00 0.00 : 60fb1f: 74 52 je 60fb73 : try_nestloop_path(root, 0.00 : 60fb21: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 60fb28: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 60fb2f: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 60fb33: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 60fb37: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 60fb3e: 4c 89 fe mov %r15,%rsi 0.00 : 60fb41: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fb48: 4c 89 6c 24 08 mov %r13,0x8(%rsp) 0.00 : 60fb4d: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : 60fb52: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 60fb56: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 60fb5b: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 60fb5e: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 60fb63: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 60fb67: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60fb6e: e8 2d f3 ff ff callq 60eea0 : restrictlist, : merge_pathkeys); : } : : /* Can't do anything else if outer path needs to be unique'd */ : if (save_jointype == JOIN_UNIQUE_OUTER) 0.00 : 60fb73: 83 bd fc fe ff ff 06 cmpl $0x6,-0x104(%rbp) 0.00 : 60fb7a: 0f 84 a1 fe ff ff je 60fa21 : continue; : : /* Can't do anything else if inner rel is parameterized by outer */ : if (inner_cheapest_total == NULL) 0.00 : 60fb80: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 60fb87: 00 0.00 : 60fb88: 0f 84 93 fe ff ff je 60fa21 : continue; : : /* Look for useful mergeclauses (if any) */ : mergeclauses = find_mergeclauses_for_pathkeys(root, 0.00 : 60fb8e: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 60fb92: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 60fb99: ba 01 00 00 00 mov $0x1,%edx 0.00 : 60fb9e: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fba5: e8 86 26 00 00 callq 612230 : * join clauses at all. Ordinarily we'd generate a clauseless : * nestloop path, but since mergejoin is our only join type that : * supports FULL JOIN without any join clauses, it's necessary to : * generate a clauseless mergejoin path instead. : */ : if (mergeclauses == NIL) 0.00 : 60fbaa: 48 85 c0 test %rax,%rax : /* Can't do anything else if inner rel is parameterized by outer */ : if (inner_cheapest_total == NULL) : continue; : : /* Look for useful mergeclauses (if any) */ : mergeclauses = find_mergeclauses_for_pathkeys(root, 0.00 : 60fbad: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : * join clauses at all. Ordinarily we'd generate a clauseless : * nestloop path, but since mergejoin is our only join type that : * supports FULL JOIN without any join clauses, it's necessary to : * generate a clauseless mergejoin path instead. : */ : if (mergeclauses == NIL) 0.00 : 60fbb4: 0f 84 9a 05 00 00 je 610154 : if (jointype == JOIN_FULL) : /* okay to try for mergejoin */ ; : else : continue; : } : if (useallclauses && list_length(mergeclauses) != list_length(mergeclause_list)) 0.00 : 60fbba: 80 7d 86 00 cmpb $0x0,-0x7a(%rbp) 0.00 : 60fbbe: 74 34 je 60fbf4 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 60fbc0: 31 d2 xor %edx,%edx 0.00 : 60fbc2: 48 83 bd 48 ff ff ff cmpq $0x0,-0xb8(%rbp) 0.00 : 60fbc9: 00 0.00 : 60fbca: 74 0a je 60fbd6 0.00 : 60fbcc: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 60fbd3: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 60fbd6: 31 c0 xor %eax,%eax 0.00 : 60fbd8: 48 83 bd 20 ff ff ff cmpq $0x0,-0xe0(%rbp) 0.00 : 60fbdf: 00 0.00 : 60fbe0: 74 0a je 60fbec 0.00 : 60fbe2: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 60fbe9: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 60fbec: 39 c2 cmp %eax,%edx 0.00 : 60fbee: 0f 85 2d fe ff ff jne 60fa21 : continue; : : /* Compute the required ordering of the inner path */ : innersortkeys = make_inner_pathkeys_for_merge(root, 0.00 : 60fbf4: 49 8b 55 30 mov 0x30(%r13),%rdx 0.00 : 60fbf8: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 60fbff: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fc06: e8 15 21 00 00 callq 611d20 : * Generate a mergejoin on the basis of sorting the cheapest inner. : * Since a sort will be needed, only cheapest total cost matters. (But : * try_mergejoin_path will do the right thing if inner_cheapest_total : * is already correctly sorted.) : */ : try_mergejoin_path(root, 0.00 : 60fc0b: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 60fc12: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 60fc16: 4c 89 fe mov %r15,%rsi : } : if (useallclauses && list_length(mergeclauses) != list_length(mergeclause_list)) : continue; : : /* Compute the required ordering of the inner path */ : innersortkeys = make_inner_pathkeys_for_merge(root, 0.00 : 60fc19: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : * Generate a mergejoin on the basis of sorting the cheapest inner. : * Since a sort will be needed, only cheapest total cost matters. (But : * try_mergejoin_path will do the right thing if inner_cheapest_total : * is already correctly sorted.) : */ : try_mergejoin_path(root, 0.00 : 60fc20: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 60fc25: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 60fc2c: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 60fc30: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 60fc35: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 60fc3a: 4c 8b 85 28 ff ff ff mov -0xd8(%rbp),%r8 0.00 : 60fc41: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60fc48: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 60fc4d: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 60fc50: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 60fc57: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fc5e: 48 c7 44 24 28 00 00 movq $0x0,0x28(%rsp) 0.00 : 60fc65: 00 00 0.00 : 60fc67: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 60fc6b: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 60fc70: e8 7b f0 ff ff callq 60ecf0 : mergeclauses, : NIL, : innersortkeys); : : /* Can't do anything else if inner path needs to be unique'd */ : if (save_jointype == JOIN_UNIQUE_INNER) 0.00 : 60fc75: 83 bd fc fe ff ff 07 cmpl $0x7,-0x104(%rbp) 0.00 : 60fc7c: 0f 84 9f fd ff ff je 60fa21 : * inner_cheapest_total if we find it matches some shorter set of : * pathkeys. That case corresponds to using fewer mergekeys to avoid : * sorting inner_cheapest_total, whereas we did sort it above, so the : * plans being considered are different. : */ : if (pathkeys_contained_in(innersortkeys, 0.00 : 60fc82: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : 60fc89: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 60fc90: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : 60fc94: e8 47 1c 00 00 callq 6118e0 0.00 : 60fc99: 4c 8b a5 58 ff ff ff mov -0xa8(%rbp),%r12 0.00 : 60fca0: 31 d2 xor %edx,%edx 0.00 : 60fca2: 84 c0 test %al,%al 0.00 : 60fca4: 4c 0f 44 e2 cmove %rdx,%r12 0.00 : 60fca8: 48 83 bd 60 ff ff ff cmpq $0x0,-0xa0(%rbp) 0.00 : 60fcaf: 00 0.00 : 60fcb0: 4c 89 65 b8 mov %r12,-0x48(%rbp) 0.00 : 60fcb4: 0f 84 67 fd ff ff je 60fa21 0.00 : 60fcba: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 60fcc1: 8b 49 04 mov 0x4(%rcx),%ecx 0.00 : 60fcc4: 89 8d 54 ff ff ff mov %ecx,-0xac(%rbp) : /* it did require a sort, at least for the full set of keys */ : cheapest_startup_inner = NULL; : cheapest_total_inner = NULL; : } : num_sortkeys = list_length(innersortkeys); : if (num_sortkeys > 1 && !useallclauses) 0.00 : 60fcca: 83 e9 01 sub $0x1,%ecx 0.00 : 60fccd: 0f 8f 05 05 00 00 jg 6101d8 : trialsortkeys = list_copy(innersortkeys); /* need modifiable copy */ : else : trialsortkeys = innersortkeys; /* won't really truncate */ : : for (sortkeycnt = num_sortkeys; sortkeycnt > 0; sortkeycnt--) 0.00 : 60fcd3: 8b 8d 54 ff ff ff mov -0xac(%rbp),%ecx 0.00 : 60fcd9: 85 c9 test %ecx,%ecx 0.00 : 60fcdb: 0f 8e 40 fd ff ff jle 60fa21 0.00 : 60fce1: 8b 85 54 ff ff ff mov -0xac(%rbp),%eax 0.00 : 60fce7: 89 45 b4 mov %eax,-0x4c(%rbp) 0.00 : 60fcea: e9 87 00 00 00 jmpq 60fd76 0.00 : 60fcef: 90 nop : trialsortkeys = list_truncate(trialsortkeys, sortkeycnt); : innerpath = get_cheapest_path_for_pathkeys(innerrel->pathlist, : trialsortkeys, : NULL, : TOTAL_COST); : if (innerpath != NULL && 0.00 : 60fcf0: ba 01 00 00 00 mov $0x1,%edx 0.00 : 60fcf5: 4c 89 e6 mov %r12,%rsi 0.00 : 60fcf8: 48 89 c7 mov %rax,%rdi 0.00 : 60fcfb: e8 90 01 02 00 callq 62fe90 0.00 : 60fd00: 85 c0 test %eax,%eax 0.00 : 60fd02: 0f 88 b3 00 00 00 js 60fdbb : mergeclauses); : Assert(newclauses != NIL); : } : else : newclauses = mergeclauses; : try_mergejoin_path(root, 0.00 : 60fd08: 4d 89 e6 mov %r12,%r14 0.00 : 60fd0b: 45 31 e4 xor %r12d,%r12d : NIL, : NIL); : cheapest_total_inner = innerpath; : } : /* Same on the basis of cheapest startup cost ... */ : innerpath = get_cheapest_path_for_pathkeys(innerrel->pathlist, 0.00 : 60fd0e: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 60fd15: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 60fd1c: 31 d2 xor %edx,%edx 0.00 : 60fd1e: 48 8b 79 28 mov 0x28(%rcx),%rdi 0.00 : 60fd22: 31 c9 xor %ecx,%ecx 0.00 : 60fd24: e8 37 31 00 00 callq 612e60 : trialsortkeys, : NULL, : STARTUP_COST); : if (innerpath != NULL && 0.00 : 60fd29: 48 85 c0 test %rax,%rax : NIL, : NIL); : cheapest_total_inner = innerpath; : } : /* Same on the basis of cheapest startup cost ... */ : innerpath = get_cheapest_path_for_pathkeys(innerrel->pathlist, 0.00 : 60fd2c: 48 89 c3 mov %rax,%rbx : trialsortkeys, : NULL, : STARTUP_COST); : if (innerpath != NULL && 0.00 : 60fd2f: 74 21 je 60fd52 0.00 : 60fd31: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) 0.00 : 60fd36: 0f 84 c4 04 00 00 je 610200 0.00 : 60fd3c: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 60fd40: 31 d2 xor %edx,%edx 0.00 : 60fd42: 48 89 c7 mov %rax,%rdi 0.00 : 60fd45: e8 46 01 02 00 callq 62fe90 0.00 : 60fd4a: 85 c0 test %eax,%eax 0.00 : 60fd4c: 0f 88 ae 04 00 00 js 610200 : Assert(newclauses != NIL); : } : else : newclauses = mergeclauses; : } : try_mergejoin_path(root, 0.00 : 60fd52: 48 8b 5d b8 mov -0x48(%rbp),%rbx : } : : /* : * Don't consider truncated sortkeys if we need all clauses. : */ : if (useallclauses) 0.00 : 60fd56: 80 7d 86 00 cmpb $0x0,-0x7a(%rbp) 0.00 : 60fd5a: 0f 85 c1 fc ff ff jne 60fa21 : if (num_sortkeys > 1 && !useallclauses) : trialsortkeys = list_copy(innersortkeys); /* need modifiable copy */ : else : trialsortkeys = innersortkeys; /* won't really truncate */ : : for (sortkeycnt = num_sortkeys; sortkeycnt > 0; sortkeycnt--) 0.00 : 60fd60: 83 6d b4 01 subl $0x1,-0x4c(%rbp) 0.00 : 60fd64: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 60fd67: 85 d2 test %edx,%edx 0.00 : 60fd69: 0f 8e b2 fc ff ff jle 60fa21 0.00 : 60fd6f: 4d 89 f4 mov %r14,%r12 0.00 : 60fd72: 48 89 5d b8 mov %rbx,-0x48(%rbp) : /* : * Look for an inner path ordered well enough for the first : * 'sortkeycnt' innersortkeys. NB: trialsortkeys list is modified : * destructively, which is why we made a copy... : */ : trialsortkeys = list_truncate(trialsortkeys, sortkeycnt); 0.00 : 60fd76: 8b 75 b4 mov -0x4c(%rbp),%esi 0.00 : 60fd79: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 60fd80: e8 1b 16 fd ff callq 5e13a0 : innerpath = get_cheapest_path_for_pathkeys(innerrel->pathlist, 0.00 : 60fd85: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx : /* : * Look for an inner path ordered well enough for the first : * 'sortkeycnt' innersortkeys. NB: trialsortkeys list is modified : * destructively, which is why we made a copy... : */ : trialsortkeys = list_truncate(trialsortkeys, sortkeycnt); 0.00 : 60fd8c: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : innerpath = get_cheapest_path_for_pathkeys(innerrel->pathlist, 0.00 : 60fd93: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 60fd98: 48 89 c6 mov %rax,%rsi 0.00 : 60fd9b: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.00 : 60fd9f: 31 d2 xor %edx,%edx 0.00 : 60fda1: e8 ba 30 00 00 callq 612e60 : trialsortkeys, : NULL, : TOTAL_COST); : if (innerpath != NULL && 0.00 : 60fda6: 48 85 c0 test %rax,%rax : * Look for an inner path ordered well enough for the first : * 'sortkeycnt' innersortkeys. NB: trialsortkeys list is modified : * destructively, which is why we made a copy... : */ : trialsortkeys = list_truncate(trialsortkeys, sortkeycnt); : innerpath = get_cheapest_path_for_pathkeys(innerrel->pathlist, 0.00 : 60fda9: 49 89 c6 mov %rax,%r14 : trialsortkeys, : NULL, : TOTAL_COST); : if (innerpath != NULL && 0.00 : 60fdac: 0f 84 56 ff ff ff je 60fd08 0.00 : 60fdb2: 4d 85 e4 test %r12,%r12 0.00 : 60fdb5: 0f 85 35 ff ff ff jne 60fcf0 : compare_path_costs(innerpath, cheapest_total_inner, : TOTAL_COST) < 0)) : { : /* Found a cheap (or even-cheaper) sorted path */ : /* Select the right mergeclauses, if we didn't already */ : if (sortkeycnt < num_sortkeys) 0.00 : 60fdbb: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 60fdbe: 39 8d 54 ff ff ff cmp %ecx,-0xac(%rbp) 0.00 : 60fdc4: 4c 8b a5 48 ff ff ff mov -0xb8(%rbp),%r12 0.00 : 60fdcb: 0f 8f 9f 04 00 00 jg 610270 : mergeclauses); : Assert(newclauses != NIL); : } : else : newclauses = mergeclauses; : try_mergejoin_path(root, 0.00 : 60fdd1: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 60fdd5: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 60fddc: 4c 89 fe mov %r15,%rsi 0.00 : 60fddf: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 60fde3: 4c 8b 85 28 ff ff ff mov -0xd8(%rbp),%r8 0.00 : 60fdea: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60fdf1: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fdf8: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 60fdfd: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 60fe00: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) 0.00 : 60fe07: 00 00 0.00 : 60fe09: 48 c7 44 24 28 00 00 movq $0x0,0x28(%rsp) 0.00 : 60fe10: 00 00 0.00 : 60fe12: 4c 89 64 24 20 mov %r12,0x20(%rsp) 0.00 : 60fe17: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 60fe1c: 4c 89 74 24 08 mov %r14,0x8(%rsp) 0.00 : 60fe21: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 60fe25: e8 c6 ee ff ff callq 60ecf0 0.00 : 60fe2a: e9 df fe ff ff jmpq 60fd0e 0.00 : 60fe2f: 90 nop : : hashclauses = lappend(hashclauses, restrictinfo); : } : : /* If we found any usable hashclauses, make paths */ : if (hashclauses) 0.00 : 60fe30: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp) 0.00 : 60fe35: 0f 84 ad f8 ff ff je 60f6e8 : /* : * We consider both the cheapest-total-cost and cheapest-startup-cost : * outer paths. There's no need to consider any but the : * cheapest-total-cost inner path, however. : */ : Path *cheapest_startup_outer = outerrel->cheapest_startup_path; 0.00 : 60fe3b: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx : Path *cheapest_total_outer = outerrel->cheapest_total_path; 0.00 : 60fe42: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax : Path *cheapest_total_inner = innerrel->cheapest_total_path; 0.00 : 60fe49: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx : /* : * We consider both the cheapest-total-cost and cheapest-startup-cost : * outer paths. There's no need to consider any but the : * cheapest-total-cost inner path, however. : */ : Path *cheapest_startup_outer = outerrel->cheapest_startup_path; 0.00 : 60fe50: 48 8b 49 38 mov 0x38(%rcx),%rcx 0.00 : 60fe54: 48 89 4d 90 mov %rcx,-0x70(%rbp) : Path *cheapest_total_outer = outerrel->cheapest_total_path; 0.00 : 60fe58: 48 8b 58 40 mov 0x40(%rax),%rbx : Path *cheapest_total_inner = innerrel->cheapest_total_path; 0.00 : 60fe5c: 48 8b 52 40 mov 0x40(%rdx),%rdx 0.00 : 60fe60: 48 89 55 88 mov %rdx,-0x78(%rbp) : * If either cheapest-total path is parameterized by the other rel, we : * can't use a hashjoin. (There's no use looking for alternative : * input paths, since these should already be the least-parameterized : * available paths.) : */ : if (PATH_PARAM_BY_REL(cheapest_total_outer, innerrel) || 0.00 : 60fe64: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 60fe68: 48 85 c0 test %rax,%rax 0.00 : 60fe6b: 74 1c je 60fe89 0.00 : 60fe6d: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 60fe74: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60fe78: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60fe7c: e8 ff 2a fd ff callq 5e2980 0.00 : 60fe81: 84 c0 test %al,%al 0.00 : 60fe83: 0f 85 5f f8 ff ff jne 60f6e8 0.00 : 60fe89: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 60fe8d: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 60fe91: 48 85 c0 test %rax,%rax 0.00 : 60fe94: 74 1c je 60feb2 0.00 : 60fe96: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 60fe9d: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60fea1: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60fea5: e8 d6 2a fd ff callq 5e2980 0.00 : 60feaa: 84 c0 test %al,%al 0.00 : 60feac: 0f 85 36 f8 ff ff jne 60f6e8 : PATH_PARAM_BY_REL(cheapest_total_inner, outerrel)) : return; : : /* Unique-ify if need be; we ignore parameterized possibilities */ : if (jointype == JOIN_UNIQUE_OUTER) 0.00 : 60feb2: 83 bd fc fe ff ff 06 cmpl $0x6,-0x104(%rbp) 0.00 : 60feb9: 0f 84 bd f7 ff ff je 60f67c : cheapest_total_inner, : restrictlist, : hashclauses); : /* no possibility of cheap startup here */ : } : else if (jointype == JOIN_UNIQUE_INNER) 0.00 : 60febf: 83 bd fc fe ff ff 07 cmpl $0x7,-0x104(%rbp) 0.00 : 60fec6: 0f 84 ac 04 00 00 je 610378 : * of possibly cheap startup cost, so this is sufficient. : */ : ListCell *lc1; : ListCell *lc2; : : if (cheapest_startup_outer != NULL) 0.00 : 60fecc: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 60fed1: 74 53 je 60ff26 : try_hashjoin_path(root, 0.00 : 60fed3: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 60fed7: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 60fedb: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 60fedf: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 60fee3: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 60feea: 4c 89 fe mov %r15,%rsi 0.00 : 60feed: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fef4: 48 89 54 24 20 mov %rdx,0x20(%rsp) 0.00 : 60fef9: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 60fefe: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 60ff02: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 60ff06: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 60ff0b: 48 89 54 24 08 mov %rdx,0x8(%rsp) 0.00 : 60ff10: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 60ff14: 8b 95 fc fe ff ff mov -0x104(%rbp),%edx 0.00 : 60ff1a: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 60ff21: e8 ca f0 ff ff callq 60eff0 : cheapest_startup_outer, : cheapest_total_inner, : restrictlist, : hashclauses); : : foreach(lc1, outerrel->cheapest_parameterized_paths) 0.00 : 60ff26: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 60ff2d: 48 8b 42 50 mov 0x50(%rdx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 60ff31: 48 85 c0 test %rax,%rax 0.00 : 60ff34: 0f 84 ae f7 ff ff je 60f6e8 0.00 : 60ff3a: 4c 8b 70 08 mov 0x8(%rax),%r14 0.00 : 60ff3e: 4d 85 f6 test %r14,%r14 0.00 : 60ff41: 0f 84 a1 f7 ff ff je 60f6e8 0.00 : 60ff47: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 60ff4e: 00 00 : { : Path *outerpath = (Path *) lfirst(lc1); 0.00 : 60ff50: 4d 8b 2e mov (%r14),%r13 : : /* : * We cannot use an outer path that is parameterized by the : * inner rel. : */ : if (PATH_PARAM_BY_REL(outerpath, innerrel)) 0.00 : 60ff53: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 60ff57: 48 85 c0 test %rax,%rax 0.00 : 60ff5a: 74 1c je 60ff78 0.00 : 60ff5c: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 60ff63: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60ff67: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60ff6b: e8 10 2a fd ff callq 5e2980 0.00 : 60ff70: 84 c0 test %al,%al 0.00 : 60ff72: 0f 85 af 00 00 00 jne 610027 : continue; : : foreach(lc2, innerrel->cheapest_parameterized_paths) 0.00 : 60ff78: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 60ff7f: 48 8b 42 50 mov 0x50(%rdx),%rax 0.00 : 60ff83: 48 85 c0 test %rax,%rax 0.00 : 60ff86: 0f 84 9b 00 00 00 je 610027 0.00 : 60ff8c: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 60ff90: 48 85 db test %rbx,%rbx 0.00 : 60ff93: 0f 84 8e 00 00 00 je 610027 0.00 : 60ff99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : Path *innerpath = (Path *) lfirst(lc2); 0.00 : 60ffa0: 4c 8b 23 mov (%rbx),%r12 : : /* : * We cannot use an inner path that is parameterized by : * the outer rel, either. : */ : if (PATH_PARAM_BY_REL(innerpath, outerrel)) 0.00 : 60ffa3: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 60ffa8: 48 85 c0 test %rax,%rax 0.00 : 60ffab: 74 18 je 60ffc5 0.00 : 60ffad: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 60ffb4: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 60ffb8: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 60ffbc: e8 bf 29 fd ff callq 5e2980 0.00 : 60ffc1: 84 c0 test %al,%al 0.00 : 60ffc3: 75 55 jne 61001a : continue; : : if (outerpath == cheapest_startup_outer && 0.00 : 60ffc5: 4c 39 6d 90 cmp %r13,-0x70(%rbp) 0.00 : 60ffc9: 0f 84 a1 00 00 00 je 610070 : innerpath == cheapest_total_inner) : continue; /* already tried it */ : : try_hashjoin_path(root, 0.00 : 60ffcf: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 60ffd3: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 60ffd7: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 60ffdb: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 60ffdf: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 60ffe6: 4c 89 fe mov %r15,%rsi 0.00 : 60ffe9: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 60fff0: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 60fff5: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 60fffa: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 60fffe: 8b 95 fc fe ff ff mov -0x104(%rbp),%edx 0.00 : 610004: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 61000b: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 610010: 4c 89 6c 24 08 mov %r13,0x8(%rsp) 0.00 : 610015: e8 d6 ef ff ff callq 60eff0 : * inner rel. : */ : if (PATH_PARAM_BY_REL(outerpath, innerrel)) : continue; : : foreach(lc2, innerrel->cheapest_parameterized_paths) 0.00 : 61001a: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61001e: 48 85 db test %rbx,%rbx 0.00 : 610021: 0f 85 79 ff ff ff jne 60ffa0 : cheapest_startup_outer, : cheapest_total_inner, : restrictlist, : hashclauses); : : foreach(lc1, outerrel->cheapest_parameterized_paths) 0.00 : 610027: 4d 8b 76 08 mov 0x8(%r14),%r14 0.00 : 61002b: 4d 85 f6 test %r14,%r14 0.00 : 61002e: 0f 85 1c ff ff ff jne 60ff50 0.00 : 610034: e9 af f6 ff ff jmpq 60f6e8 0.00 : 610039: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : jointype = JOIN_INNER; : nestjoinOK = true; : useallclauses = false; : break; : default: : elog(ERROR, "unrecognized join type: %d", 0.00 : 610040: ba 70 a9 89 00 mov $0x89a970,%edx 0.00 : 610045: be 14 03 00 00 mov $0x314,%esi 0.00 : 61004a: bf 5f a9 89 00 mov $0x89a95f,%edi 0.00 : 61004f: e8 cc b3 16 00 callq 77b420 0.00 : 610054: 8b 95 fc fe ff ff mov -0x104(%rbp),%edx 0.00 : 61005a: be 39 17 87 00 mov $0x871739,%esi 0.00 : 61005f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 610064: 31 c0 xor %eax,%eax 0.00 : 610066: e8 c5 b1 16 00 callq 77b230 0.00 : 61006b: e8 60 94 e5 ff callq 4694d0 : * the outer rel, either. : */ : if (PATH_PARAM_BY_REL(innerpath, outerrel)) : continue; : : if (outerpath == cheapest_startup_outer && 0.00 : 610070: 4c 39 65 88 cmp %r12,-0x78(%rbp) 0.00 : 610074: 0f 85 55 ff ff ff jne 60ffcf 0.00 : 61007a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 610080: eb 98 jmp 61001a 0.00 : 610082: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* : * Consider nestloop join, but only with the unique-ified cheapest : * inner path : */ : try_nestloop_path(root, 0.00 : 610088: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : 61008f: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 610093: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 610097: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 61009c: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 6100a3: 4c 89 fe mov %r15,%rsi 0.00 : 6100a6: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 6100aa: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 6100b1: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 6100b6: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6100ba: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 6100bd: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 6100c4: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 6100c9: 4c 89 6c 24 08 mov %r13,0x8(%rsp) 0.00 : 6100ce: e8 cd ed ff ff callq 60eea0 0.00 : 6100d3: e9 a8 fa ff ff jmpq 60fb80 0.00 : 6100d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6100df: 00 : * This restriction reduces the number of parameterized paths we have to : * deal with at higher join levels, without compromising the quality of : * the resulting plan. We express the restriction as a Relids set that : * must overlap the parameterization of any proposed join path. : */ : foreach(lc, root->join_info_list) 0.00 : 6100e0: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 6100e7: 00 00 00 00 0.00 : 6100eb: e9 e0 f1 ff ff jmpq 60f2d0 : * would need to be marked as parameterized by those rels, independently : * of all other considerations. Set extra_lateral_rels to the set of such : * rels. This will not affect our decisions as to which paths to : * generate; we merely add these rels to their required_outer sets. : */ : foreach(lc, root->placeholder_list) 0.00 : 6100f0: 45 31 ed xor %r13d,%r13d 0.00 : 6100f3: e9 e8 f2 ff ff jmpq 60f3e0 : jointype = JOIN_INNER; : nestjoinOK = true; : useallclauses = false; : break; : default: : elog(ERROR, "unrecognized join type: %d", 0.00 : 6100f8: 8b 85 fc fe ff ff mov -0x104(%rbp),%eax 0.00 : 6100fe: c6 45 86 00 movb $0x0,-0x7a(%rbp) 0.00 : 610102: c6 45 87 01 movb $0x1,-0x79(%rbp) 0.00 : 610106: 89 45 b0 mov %eax,-0x50(%rbp) 0.00 : 610109: e9 81 f8 ff ff jmpq 60f98f : * cheapest-total inner. : */ : if (save_jointype == JOIN_UNIQUE_INNER) : { : /* No way to do this with an inner path parameterized by outer rel */ : if (inner_cheapest_total == NULL) 0.00 : 61010e: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 610115: 00 0.00 : 610116: 0f 84 f5 f2 ff ff je 60f411 : return; : inner_cheapest_total = (Path *) 0.00 : 61011c: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 610123: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : 61012a: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 610131: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 610138: e8 63 06 02 00 callq 6307a0 0.00 : 61013d: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : 610144: 00 00 00 00 0.00 : 610148: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 0.00 : 61014f: e9 a0 f8 ff ff jmpq 60f9f4 : * supports FULL JOIN without any join clauses, it's necessary to : * generate a clauseless mergejoin path instead. : */ : if (mergeclauses == NIL) : { : if (jointype == JOIN_FULL) 0.00 : 610154: 83 7d b0 02 cmpl $0x2,-0x50(%rbp) 0.00 : 610158: 0f 85 c3 f8 ff ff jne 60fa21 0.00 : 61015e: e9 57 fa ff ff jmpq 60fbba : List *result_list = NIL; : bool isouterjoin = IS_OUTER_JOIN(jointype); : bool have_nonmergeable_joinclause = false; : ListCell *l; : : foreach(l, restrictlist) 0.00 : 610163: 45 31 ed xor %r13d,%r13d 0.00 : 610166: 48 c7 85 20 ff ff ff movq $0x0,-0xe0(%rbp) 0.00 : 61016d: 00 00 00 00 0.00 : 610171: e9 5a f4 ff ff jmpq 60f5d0 : /* : * Consider materializing the cheapest inner path, unless : * enable_material is off or the path in question materializes its : * output anyway. : */ : if (enable_material && inner_cheapest_total != NULL && 0.00 : 610176: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 61017d: 00 0.00 : 61017e: 0f 84 65 f8 ff ff je 60f9e9 0.00 : 610184: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 61018b: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 61018e: e8 3d 7f f9 ff callq 5a80d0 0.00 : 610193: 84 c0 test %al,%al 0.00 : 610195: 0f 85 4e f8 ff ff jne 60f9e9 : !ExecMaterializesOutput(inner_cheapest_total->pathtype)) : matpath = (Path *) 0.00 : 61019b: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 6101a2: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 6101a9: e8 82 0d 02 00 callq 630f30 0.00 : 6101ae: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 6101b5: e9 3a f8 ff ff jmpq 60f9f4 : * are doing a right or full mergejoin, we must use *all* the mergeclauses : * as join clauses, else we will not have a valid plan. (Although these : * two flags are currently inverses, keep them separate for clarity and : * possible future changes.) : */ : switch (jointype) 0.00 : 6101ba: a8 0c test $0xc,%al 0.00 : 6101bc: 0f 84 7e fe ff ff je 610040 0.00 : 6101c2: 8b 85 fc fe ff ff mov -0x104(%rbp),%eax 0.00 : 6101c8: c6 45 86 01 movb $0x1,-0x7a(%rbp) 0.00 : 6101cc: c6 45 87 00 movb $0x0,-0x79(%rbp) 0.00 : 6101d0: 89 45 b0 mov %eax,-0x50(%rbp) 0.00 : 6101d3: e9 b7 f7 ff ff jmpq 60f98f : /* it did require a sort, at least for the full set of keys */ : cheapest_startup_inner = NULL; : cheapest_total_inner = NULL; : } : num_sortkeys = list_length(innersortkeys); : if (num_sortkeys > 1 && !useallclauses) 0.00 : 6101d8: 80 7d 86 00 cmpb $0x0,-0x7a(%rbp) 0.00 : 6101dc: 0f 85 f1 fa ff ff jne 60fcd3 : trialsortkeys = list_copy(innersortkeys); /* need modifiable copy */ 0.00 : 6101e2: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 6101e9: e8 12 15 fd ff callq 5e1700 0.00 : 6101ee: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 6101f5: e9 e7 fa ff ff jmpq 60fce1 0.00 : 6101fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : (cheapest_startup_inner == NULL || : compare_path_costs(innerpath, cheapest_startup_inner, : STARTUP_COST) < 0)) : { : /* Found a cheap (or even-cheaper) sorted path */ : if (innerpath != cheapest_total_inner) 0.00 : 610200: 4c 39 f3 cmp %r14,%rbx 0.00 : 610203: 0f 84 4d fb ff ff je 60fd56 : { : /* : * Avoid rebuilding clause list if we already made one; : * saves memory in big join trees... : */ : if (newclauses == NIL) 0.00 : 610209: 4d 85 e4 test %r12,%r12 0.00 : 61020c: 0f 84 c4 00 00 00 je 6102d6 : Assert(newclauses != NIL); : } : else : newclauses = mergeclauses; : } : try_mergejoin_path(root, 0.00 : 610212: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 610219: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 61021d: 4c 89 fe mov %r15,%rsi 0.00 : 610220: 4c 8b 4d a0 mov -0x60(%rbp),%r9 0.00 : 610224: 4c 8b 85 28 ff ff ff mov -0xd8(%rbp),%r8 0.00 : 61022b: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 610232: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) 0.00 : 610239: 00 00 0.00 : 61023b: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 610240: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 610245: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 610248: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 61024f: 48 c7 44 24 28 00 00 movq $0x0,0x28(%rsp) 0.00 : 610256: 00 00 0.00 : 610258: 4c 89 64 24 20 mov %r12,0x20(%rsp) 0.00 : 61025d: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 610262: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 610266: e8 85 ea ff ff callq 60ecf0 0.00 : 61026b: e9 e6 fa ff ff jmpq 60fd56 : { : /* Found a cheap (or even-cheaper) sorted path */ : /* Select the right mergeclauses, if we didn't already */ : if (sortkeycnt < num_sortkeys) : { : newclauses = 0.00 : 610270: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 610277: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 61027e: 31 d2 xor %edx,%edx 0.00 : 610280: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 610287: e8 a4 1f 00 00 callq 612230 0.00 : 61028c: 49 89 c4 mov %rax,%r12 0.00 : 61028f: e9 3d fb ff ff jmpq 60fdd1 : */ : if (save_jointype == JOIN_UNIQUE_OUTER) : { : if (outerpath != outerrel->cheapest_total_path) : continue; : outerpath = (Path *) create_unique_path(root, outerrel, 0.00 : 610294: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 61029b: 48 8b b5 08 ff ff ff mov -0xf8(%rbp),%rsi 0.00 : 6102a2: 4c 89 ea mov %r13,%rdx 0.00 : 6102a5: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 6102ac: e8 ef 04 02 00 callq 6307a0 : /* : * The result will have this sort order (even if it is implemented as : * a nestloop, and even if some of the mergeclauses are implemented by : * qpquals rather than as true mergeclauses): : */ : merge_pathkeys = build_join_pathkeys(root, joinrel, jointype, 0.00 : 6102b1: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 6102b4: 48 8b 48 30 mov 0x30(%rax),%rcx 0.00 : 6102b8: 4c 89 fe mov %r15,%rsi 0.00 : 6102bb: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi : */ : if (save_jointype == JOIN_UNIQUE_OUTER) : { : if (outerpath != outerrel->cheapest_total_path) : continue; : outerpath = (Path *) create_unique_path(root, outerrel, 0.00 : 6102c2: 49 89 c5 mov %rax,%r13 : /* : * The result will have this sort order (even if it is implemented as : * a nestloop, and even if some of the mergeclauses are implemented by : * qpquals rather than as true mergeclauses): : */ : merge_pathkeys = build_join_pathkeys(root, joinrel, jointype, 0.00 : 6102c5: e8 36 19 00 00 callq 611c00 0.00 : 6102ca: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 6102d1: e9 c4 f7 ff ff jmpq 60fa9a : * Avoid rebuilding clause list if we already made one; : * saves memory in big join trees... : */ : if (newclauses == NIL) : { : if (sortkeycnt < num_sortkeys) 0.00 : 6102d6: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 6102d9: 39 85 54 ff ff ff cmp %eax,-0xac(%rbp) 0.00 : 6102df: 4c 8b a5 48 ff ff ff mov -0xb8(%rbp),%r12 0.00 : 6102e6: 0f 8e 26 ff ff ff jle 610212 : { : newclauses = 0.00 : 6102ec: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 6102f3: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 6102fa: 31 d2 xor %edx,%edx 0.00 : 6102fc: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 610303: e8 28 1f 00 00 callq 612230 0.00 : 610308: 49 89 c4 mov %rax,%r12 0.00 : 61030b: e9 02 ff ff ff jmpq 610212 : * If unique-ification is requested, do it and then handle as a plain : * inner join. : */ : if (jointype == JOIN_UNIQUE_OUTER) : { : outer_path = (Path *) create_unique_path(root, outerrel, 0.00 : 610310: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 610317: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 61031e: 48 8b b5 08 ff ff ff mov -0xf8(%rbp),%rsi 0.00 : 610325: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 61032c: e8 6f 04 02 00 callq 6307a0 0.00 : 610331: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) 0.00 : 610338: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 61033f: e9 e0 f4 ff ff jmpq 60f824 : Assert(outer_path); : jointype = JOIN_INNER; : } : else if (jointype == JOIN_UNIQUE_INNER) : { : inner_path = (Path *) create_unique_path(root, innerrel, 0.00 : 610344: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 61034b: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 610352: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 610359: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 610360: e8 3b 04 02 00 callq 6307a0 0.00 : 610365: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) 0.00 : 61036c: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 610373: e9 ac f4 ff ff jmpq 60f824 : hashclauses); : /* no possibility of cheap startup here */ : } : else if (jointype == JOIN_UNIQUE_INNER) : { : cheapest_total_inner = (Path *) 0.00 : 610378: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 61037f: 48 8b 55 88 mov -0x78(%rbp),%rdx : create_unique_path(root, innerrel, : cheapest_total_inner, sjinfo); : Assert(cheapest_total_inner); : jointype = JOIN_INNER; : try_hashjoin_path(root, 0.00 : 610383: 4c 8d 6d c0 lea -0x40(%rbp),%r13 : hashclauses); : /* no possibility of cheap startup here */ : } : else if (jointype == JOIN_UNIQUE_INNER) : { : cheapest_total_inner = (Path *) 0.00 : 610387: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi 0.00 : 61038e: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 610395: e8 06 04 02 00 callq 6307a0 : create_unique_path(root, innerrel, : cheapest_total_inner, sjinfo); : Assert(cheapest_total_inner); : jointype = JOIN_INNER; : try_hashjoin_path(root, 0.00 : 61039a: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 61039e: 48 8b 55 10 mov 0x10(%rbp),%rdx : hashclauses); : /* no possibility of cheap startup here */ : } : else if (jointype == JOIN_UNIQUE_INNER) : { : cheapest_total_inner = (Path *) 0.00 : 6103a2: 49 89 c4 mov %rax,%r12 : create_unique_path(root, innerrel, : cheapest_total_inner, sjinfo); : Assert(cheapest_total_inner); : jointype = JOIN_INNER; : try_hashjoin_path(root, 0.00 : 6103a5: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 6103ac: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 6103b0: 4d 89 e8 mov %r13,%r8 0.00 : 6103b3: 48 8b bd 10 ff ff ff mov -0xf0(%rbp),%rdi 0.00 : 6103ba: 4c 89 fe mov %r15,%rsi 0.00 : 6103bd: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 6103c2: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6103c6: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 6103cd: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 6103d2: 31 d2 xor %edx,%edx 0.00 : 6103d4: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 6103d9: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 6103de: e8 0d ec ff ff callq 60eff0 : extra_lateral_rels, : cheapest_total_outer, : cheapest_total_inner, : restrictlist, : hashclauses); : if (cheapest_startup_outer != NULL && 0.00 : 6103e3: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 6103e8: 0f 84 fa f2 ff ff je 60f6e8 0.00 : 6103ee: 48 39 5d 90 cmp %rbx,-0x70(%rbp) 0.00 : 6103f2: 0f 84 f0 f2 ff ff je 60f6e8 : cheapest_startup_outer != cheapest_total_outer) : try_hashjoin_path(root, 0.00 : 6103f8: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 6103fc: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 610400: 4d 89 e8 mov %r13,%r8 0.00 : 610403: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 610407: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 61040c: 4c 8b 8d 28 ff ff ff mov -0xd8(%rbp),%r9 0.00 : 610413: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 610418: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 61041c: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 610421: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 610426: 48 89 04 24 mov %rax,(%rsp) 0.00 : 61042a: e9 9d f2 ff ff jmpq 60f6cc Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:331 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006118e0 : : * Common special case of compare_pathkeys: we just want to know : * if keys2 are at least as well sorted as keys1. : */ : bool : pathkeys_contained_in(List *keys1, List *keys2) : { 0.00 : 6118e0: 55 push %rbp 0.00 : 6118e1: 48 89 e5 mov %rsp,%rbp : switch (compare_pathkeys(keys1, keys2)) 0.00 : 6118e4: e8 77 ff ff ff callq 611860 0.00 : 6118e9: 85 c0 test %eax,%eax 0.00 : 6118eb: 74 13 je 611900 0.00 : 6118ed: 31 d2 xor %edx,%edx 0.00 : 6118ef: 83 f8 02 cmp $0x2,%eax 0.00 : 6118f2: 74 0c je 611900 : return true; : default: : break; : } : return false; : } 0.00 : 6118f4: 89 d0 mov %edx,%eax 0.00 : 6118f6: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:331 100.00 : 6118f7: c3 retq 0.00 : 6118f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6118ff: 00 : * if keys2 are at least as well sorted as keys1. : */ : bool : pathkeys_contained_in(List *keys1, List *keys2) : { : switch (compare_pathkeys(keys1, keys2)) 0.00 : 611900: ba 01 00 00 00 mov $0x1,%edx : return true; : default: : break; : } : return false; : } 0.00 : 611905: c9 leaveq 0.00 : 611906: 89 d0 mov %edx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:69 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000611c20 : : */ : static PathKey * : make_canonical_pathkey(PlannerInfo *root, : EquivalenceClass *eclass, Oid opfamily, : int strategy, bool nulls_first) : { 0.00 : 611c20: 55 push %rbp 0.00 : 611c21: 48 89 e5 mov %rsp,%rbp 0.00 : 611c24: 41 57 push %r15 0.00 : 611c26: 41 89 d7 mov %edx,%r15d 0.00 : 611c29: 41 56 push %r14 0.00 : 611c2b: 49 89 fe mov %rdi,%r14 0.00 : 611c2e: 41 55 push %r13 0.00 : 611c30: 41 54 push %r12 0.00 : 611c32: 53 push %rbx 0.00 : 611c33: 89 cb mov %ecx,%ebx 0.00 : 611c35: 48 83 ec 18 sub $0x18,%rsp 0.00 : 611c39: 44 88 45 cf mov %r8b,-0x31(%rbp) 0.00 : 611c3d: 0f 1f 00 nopl (%rax) : PathKey *pk; : ListCell *lc; : MemoryContext oldcontext; : : /* The passed eclass might be non-canonical, so chase up to the top */ : while (eclass->ec_merged) 0.00 : 611c40: 49 89 f5 mov %rsi,%r13 0.00 : 611c43: 48 8b 76 40 mov 0x40(%rsi),%rsi 0.00 : 611c47: 48 85 f6 test %rsi,%rsi 0.00 : 611c4a: 75 f4 jne 611c40 : eclass = eclass->ec_merged; : : foreach(lc, root->canon_pathkeys) 0.00 : 611c4c: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 611c53: 48 85 c0 test %rax,%rax 0.00 : 611c56: 74 48 je 611ca0 0.00 : 611c58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 611c5f: 00 0.00 : 611c60: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 611c64: 48 85 c0 test %rax,%rax 0.00 : 611c67: 74 37 je 611ca0 : { : pk = (PathKey *) lfirst(lc); 0.00 : 611c69: 4c 8b 20 mov (%rax),%r12 : if (eclass == pk->pk_eclass && /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:69 100.00 : 611c6c: 4d 39 6c 24 08 cmp %r13,0x8(%r12) 0.00 : 611c71: 75 ed jne 611c60 0.00 : 611c73: 45 39 7c 24 10 cmp %r15d,0x10(%r12) 0.00 : 611c78: 75 e6 jne 611c60 0.00 : 611c7a: 41 39 5c 24 14 cmp %ebx,0x14(%r12) 0.00 : 611c7f: 90 nop 0.00 : 611c80: 75 de jne 611c60 0.00 : 611c82: 0f b6 55 cf movzbl -0x31(%rbp),%edx 0.00 : 611c86: 41 38 54 24 18 cmp %dl,0x18(%r12) 0.00 : 611c8b: 74 72 je 611cff 0.00 : 611c8d: 48 8b 40 08 mov 0x8(%rax),%rax : : /* The passed eclass might be non-canonical, so chase up to the top */ : while (eclass->ec_merged) : eclass = eclass->ec_merged; : : foreach(lc, root->canon_pathkeys) 0.00 : 611c91: 48 85 c0 test %rax,%rax 0.00 : 611c94: 75 d3 jne 611c69 0.00 : 611c96: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 611c9d: 00 00 00 : : /* : * Be sure canonical pathkeys are allocated in the main planning context. : * Not an issue in normal planning, but it is for GEQO. : */ : oldcontext = MemoryContextSwitchTo(root->planner_cxt); 0.00 : 611ca0: 49 8b be 18 01 00 00 mov 0x118(%r14),%rdi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 611ca7: 48 8b 05 b2 8b 5a 00 mov 0x5a8bb2(%rip),%rax # bba860 : : pk = makeNode(PathKey); 0.00 : 611cae: be 20 00 00 00 mov $0x20,%esi : : CurrentMemoryContext = context; 0.00 : 611cb3: 48 89 3d a6 8b 5a 00 mov %rdi,0x5a8ba6(%rip) # bba860 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 611cba: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 611cbe: e8 4d 71 18 00 callq 798e10 0.00 : 611cc3: c7 00 0a 02 00 00 movl $0x20a,(%rax) : pk->pk_eclass = eclass; 0.00 : 611cc9: 4c 89 68 08 mov %r13,0x8(%rax) : pk->pk_opfamily = opfamily; : pk->pk_strategy = strategy; : pk->pk_nulls_first = nulls_first; : : root->canon_pathkeys = lappend(root->canon_pathkeys, pk); 0.00 : 611ccd: 48 89 c6 mov %rax,%rsi : */ : oldcontext = MemoryContextSwitchTo(root->planner_cxt); : : pk = makeNode(PathKey); : pk->pk_eclass = eclass; : pk->pk_opfamily = opfamily; 0.00 : 611cd0: 44 89 78 10 mov %r15d,0x10(%rax) : pk->pk_strategy = strategy; 0.00 : 611cd4: 89 58 14 mov %ebx,0x14(%rax) : * Be sure canonical pathkeys are allocated in the main planning context. : * Not an issue in normal planning, but it is for GEQO. : */ : oldcontext = MemoryContextSwitchTo(root->planner_cxt); : : pk = makeNode(PathKey); 0.00 : 611cd7: 49 89 c4 mov %rax,%r12 : pk->pk_eclass = eclass; : pk->pk_opfamily = opfamily; : pk->pk_strategy = strategy; : pk->pk_nulls_first = nulls_first; 0.00 : 611cda: 0f b6 55 cf movzbl -0x31(%rbp),%edx 0.00 : 611cde: 88 50 18 mov %dl,0x18(%rax) : : root->canon_pathkeys = lappend(root->canon_pathkeys, pk); 0.00 : 611ce1: 49 8b be 98 00 00 00 mov 0x98(%r14),%rdi 0.00 : 611ce8: e8 93 01 fd ff callq 5e1e80 0.00 : 611ced: 49 89 86 98 00 00 00 mov %rax,0x98(%r14) : : CurrentMemoryContext = context; 0.00 : 611cf4: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 611cf8: 48 89 05 61 8b 5a 00 mov %rax,0x5a8b61(%rip) # bba860 : : MemoryContextSwitchTo(oldcontext); : : return pk; : } 0.00 : 611cff: 48 83 c4 18 add $0x18,%rsp 0.00 : 611d03: 4c 89 e0 mov %r12,%rax 0.00 : 611d06: 5b pop %rbx 0.00 : 611d07: 41 5c pop %r12 0.00 : 611d09: 41 5d pop %r13 0.00 : 611d0b: 41 5e pop %r14 0.00 : 611d0d: 41 5f pop %r15 0.00 : 611d0f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:1137 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000611ef0 : : */ : List * : select_outer_pathkeys_for_merge(PlannerInfo *root, : List *mergeclauses, : RelOptInfo *joinrel) : { 0.00 : 611ef0: 55 push %rbp 0.00 : 611ef1: 48 89 e5 mov %rsp,%rbp 0.00 : 611ef4: 41 57 push %r15 0.00 : 611ef6: 41 56 push %r14 0.00 : 611ef8: 41 55 push %r13 0.00 : 611efa: 41 54 push %r12 0.00 : 611efc: 49 89 f4 mov %rsi,%r12 0.00 : 611eff: 53 push %rbx 0.00 : 611f00: 48 83 ec 28 sub $0x28,%rsp : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 611f04: 48 85 f6 test %rsi,%rsi 0.00 : 611f07: 48 89 7d c0 mov %rdi,-0x40(%rbp) 0.00 : 611f0b: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 611f0f: 74 07 je 611f18 0.00 : 611f11: 8b 46 04 mov 0x4(%rsi),%eax : int necs; : ListCell *lc; : int j; : : /* Might have no mergeclauses */ : if (nClauses == 0) 0.00 : 611f14: 85 c0 test %eax,%eax 0.00 : 611f16: 75 14 jne 611f2c : Assert(!pathkey_is_redundant(pathkey, pathkeys)); : pathkeys = lappend(pathkeys, pathkey); : } : : pfree(ecs); : pfree(scores); 0.00 : 611f18: 31 db xor %ebx,%ebx : : return pathkeys; : } 0.00 : 611f1a: 48 83 c4 28 add $0x28,%rsp 0.00 : 611f1e: 48 89 d8 mov %rbx,%rax 0.00 : 611f21: 5b pop %rbx 0.00 : 611f22: 41 5c pop %r12 0.00 : 611f24: 41 5d pop %r13 0.00 : 611f26: 41 5e pop %r14 0.00 : 611f28: 41 5f pop %r15 0.00 : 611f2a: c9 leaveq 0.00 : 611f2b: c3 retq : : /* : * Make arrays of the ECs used by the mergeclauses (dropping any : * duplicates) and their "popularity" scores. : */ : ecs = (EquivalenceClass **) palloc(nClauses * sizeof(EquivalenceClass *)); 0.00 : 611f2c: 48 63 d8 movslq %eax,%rbx : scores = (int *) palloc(nClauses * sizeof(int)); : necs = 0; : : foreach(lc, mergeclauses) 0.00 : 611f2f: 45 31 ed xor %r13d,%r13d : : /* : * Make arrays of the ECs used by the mergeclauses (dropping any : * duplicates) and their "popularity" scores. : */ : ecs = (EquivalenceClass **) palloc(nClauses * sizeof(EquivalenceClass *)); 0.00 : 611f32: 48 8d 3c dd 00 00 00 lea 0x0(,%rbx,8),%rdi 0.00 : 611f39: 00 : scores = (int *) palloc(nClauses * sizeof(int)); 0.00 : 611f3a: 48 c1 e3 02 shl $0x2,%rbx : : /* : * Make arrays of the ECs used by the mergeclauses (dropping any : * duplicates) and their "popularity" scores. : */ : ecs = (EquivalenceClass **) palloc(nClauses * sizeof(EquivalenceClass *)); 0.00 : 611f3e: e8 0d 6e 18 00 callq 798d50 : scores = (int *) palloc(nClauses * sizeof(int)); 0.00 : 611f43: 48 89 df mov %rbx,%rdi : : /* : * Make arrays of the ECs used by the mergeclauses (dropping any : * duplicates) and their "popularity" scores. : */ : ecs = (EquivalenceClass **) palloc(nClauses * sizeof(EquivalenceClass *)); 0.00 : 611f46: 48 89 45 c8 mov %rax,-0x38(%rbp) : scores = (int *) palloc(nClauses * sizeof(int)); 0.00 : 611f4a: e8 01 6e 18 00 callq 798d50 0.00 : 611f4f: 48 89 45 d0 mov %rax,-0x30(%rbp) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 611f53: 4d 8b 7c 24 08 mov 0x8(%r12),%r15 : necs = 0; : : foreach(lc, mergeclauses) 0.00 : 611f58: 4d 85 ff test %r15,%r15 0.00 : 611f5b: 0f 84 11 01 00 00 je 612072 0.00 : 611f61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 611f68: 49 8b 17 mov (%r15),%rdx : /* ... with pointers already set */ : Assert(restrictinfo->left_ec != NULL); : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) 0.00 : 611f6b: 48 8b 82 80 00 00 00 mov 0x80(%rdx),%rax 0.00 : 611f72: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 611f76: 48 85 c0 test %rax,%rax 0.00 : 611f79: 74 15 je 611f90 0.00 : 611f7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; 0.00 : 611f80: 48 89 82 80 00 00 00 mov %rax,0x80(%rdx) : /* ... with pointers already set */ : Assert(restrictinfo->left_ec != NULL); : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) 0.00 : 611f87: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 611f8b: 48 85 c0 test %rax,%rax 0.00 : 611f8e: 75 f0 jne 611f80 : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; : while (restrictinfo->right_ec->ec_merged) 0.00 : 611f90: 48 8b 9a 88 00 00 00 mov 0x88(%rdx),%rbx 0.00 : 611f97: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 611f9b: 48 85 c0 test %rax,%rax 0.00 : 611f9e: 74 13 je 611fb3 0.00 : 611fa0: 48 89 c3 mov %rax,%rbx : restrictinfo->right_ec = restrictinfo->right_ec->ec_merged; 0.00 : 611fa3: 48 89 82 88 00 00 00 mov %rax,0x88(%rdx) : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; : while (restrictinfo->right_ec->ec_merged) 0.00 : 611faa: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 611fae: 48 85 c0 test %rax,%rax 0.00 : 611fb1: 75 ed jne 611fa0 : ListCell *lc2; : : /* get the outer eclass */ : update_mergeclause_eclasses(root, rinfo); : : if (rinfo->outer_is_left) 0.00 : 611fb3: 80 ba a8 00 00 00 00 cmpb $0x0,0xa8(%rdx) 0.00 : 611fba: 74 07 je 611fc3 : oeclass = rinfo->left_ec; 0.00 : 611fbc: 48 8b 9a 80 00 00 00 mov 0x80(%rdx),%rbx : else : oeclass = rinfo->right_ec; : : /* reject duplicates */ : for (j = 0; j < necs; j++) 0.00 : 611fc3: 45 85 ed test %r13d,%r13d 0.00 : 611fc6: 7e 2d jle 611ff5 : { : if (ecs[j] == oeclass) 0.00 : 611fc8: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 611fcc: 31 d2 xor %edx,%edx 0.00 : 611fce: 48 39 19 cmp %rbx,(%rcx) 0.00 : 611fd1: 75 1a jne 611fed 0.00 : 611fd3: e9 8d 00 00 00 jmpq 612065 0.00 : 611fd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 611fdf: 00 0.00 : 611fe0: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 611fe4: 48 83 c1 08 add $0x8,%rcx 0.00 : 611fe8: 48 39 d8 cmp %rbx,%rax 0.00 : 611feb: 74 78 je 612065 : oeclass = rinfo->left_ec; : else : oeclass = rinfo->right_ec; : : /* reject duplicates */ : for (j = 0; j < necs; j++) 0.00 : 611fed: 83 c2 01 add $0x1,%edx 0.00 : 611ff0: 44 39 ea cmp %r13d,%edx 0.00 : 611ff3: 7c eb jl 611fe0 : if (j < necs) : continue; : : /* compute score */ : score = 0; : foreach(lc2, oeclass->ec_members) 0.00 : 611ff5: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 611ff9: 48 85 c0 test %rax,%rax 0.00 : 611ffc: 0f 84 82 01 00 00 je 612184 0.00 : 612002: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 612006: 4d 85 e4 test %r12,%r12 0.00 : 612009: 0f 84 75 01 00 00 je 612184 0.00 : 61200f: 45 31 f6 xor %r14d,%r14d 0.00 : 612012: eb 0e jmp 612022 0.00 : 612014: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 612018: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61201d: 4d 85 e4 test %r12,%r12 0.00 : 612020: 74 2c je 61204e : { : EquivalenceMember *em = (EquivalenceMember *) lfirst(lc2); 0.00 : 612022: 49 8b 04 24 mov (%r12),%rax : : /* Potential future join partner? */ : if (!em->em_is_const && !em->em_is_child && 0.00 : 612026: 66 83 78 20 00 cmpw $0x0,0x20(%rax) /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:1137 100.00 : 61202b: 75 eb jne 612018 0.00 : 61202d: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 612031: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 612035: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 612039: e8 42 09 fd ff callq 5e2980 : if (j < necs) : continue; : : /* compute score */ : score = 0; : foreach(lc2, oeclass->ec_members) 0.00 : 61203e: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : EquivalenceMember *em = (EquivalenceMember *) lfirst(lc2); : : /* Potential future join partner? */ : if (!em->em_is_const && !em->em_is_child && : !bms_overlap(em->em_relids, joinrel->relids)) : score++; 0.00 : 612043: 3c 01 cmp $0x1,%al 0.00 : 612045: 41 83 d6 00 adc $0x0,%r14d : if (j < necs) : continue; : : /* compute score */ : score = 0; : foreach(lc2, oeclass->ec_members) 0.00 : 612049: 4d 85 e4 test %r12,%r12 0.00 : 61204c: 75 d4 jne 612022 : if (!em->em_is_const && !em->em_is_child && : !bms_overlap(em->em_relids, joinrel->relids)) : score++; : } : : ecs[necs] = oeclass; 0.00 : 61204e: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 612052: 49 63 c5 movslq %r13d,%rax : scores[necs] = score; : necs++; 0.00 : 612055: 41 83 c5 01 add $0x1,%r13d : if (!em->em_is_const && !em->em_is_child && : !bms_overlap(em->em_relids, joinrel->relids)) : score++; : } : : ecs[necs] = oeclass; 0.00 : 612059: 48 89 1c c6 mov %rbx,(%rsi,%rax,8) : scores[necs] = score; 0.00 : 61205d: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 612061: 44 89 34 82 mov %r14d,(%rdx,%rax,4) : */ : ecs = (EquivalenceClass **) palloc(nClauses * sizeof(EquivalenceClass *)); : scores = (int *) palloc(nClauses * sizeof(int)); : necs = 0; : : foreach(lc, mergeclauses) 0.00 : 612065: 4d 8b 7f 08 mov 0x8(%r15),%r15 0.00 : 612069: 4d 85 ff test %r15,%r15 0.00 : 61206c: 0f 85 f6 fe ff ff jne 611f68 : /* : * Find out if we have all the ECs mentioned in query_pathkeys; if so we : * can generate a sort order that's also useful for final output. There is : * no percentage in a partial match, though, so we have to have 'em all. : */ : if (root->query_pathkeys) 0.00 : 612072: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 612076: 48 8b be e0 00 00 00 mov 0xe0(%rsi),%rdi 0.00 : 61207d: 48 85 ff test %rdi,%rdi 0.00 : 612080: 74 47 je 6120c9 0.00 : 612082: 4c 8b 47 08 mov 0x8(%rdi),%r8 : { : foreach(lc, root->query_pathkeys) 0.00 : 612086: 4d 85 c0 test %r8,%r8 0.00 : 612089: 0f 84 fd 00 00 00 je 61218c : { : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; 0.00 : 61208f: 49 8b 00 mov (%r8),%rax : : for (j = 0; j < necs; j++) 0.00 : 612092: 45 85 ed test %r13d,%r13d : if (root->query_pathkeys) : { : foreach(lc, root->query_pathkeys) : { : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; 0.00 : 612095: 48 8b 70 08 mov 0x8(%rax),%rsi : : for (j = 0; j < necs; j++) 0.00 : 612099: 7e 2e jle 6120c9 : { : if (ecs[j] == query_ec) 0.00 : 61209b: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 61209f: 31 d2 xor %edx,%edx 0.00 : 6120a1: 48 39 31 cmp %rsi,(%rcx) 0.00 : 6120a4: 75 1b jne 6120c1 0.00 : 6120a6: e9 ad 00 00 00 jmpq 612158 0.00 : 6120ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6120b0: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 6120b4: 48 83 c1 08 add $0x8,%rcx 0.00 : 6120b8: 48 39 f0 cmp %rsi,%rax 0.00 : 6120bb: 0f 84 97 00 00 00 je 612158 : foreach(lc, root->query_pathkeys) : { : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; : : for (j = 0; j < necs; j++) 0.00 : 6120c1: 83 c2 01 add $0x1,%edx 0.00 : 6120c4: 44 39 ea cmp %r13d,%edx 0.00 : 6120c7: 7c e7 jl 6120b0 : * can generate a sort order that's also useful for final output. There is : * no percentage in a partial match, though, so we have to have 'em all. : */ : if (root->query_pathkeys) : { : foreach(lc, root->query_pathkeys) 0.00 : 6120c9: 31 db xor %ebx,%ebx 0.00 : 6120cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int best_score; : EquivalenceClass *ec; : PathKey *pathkey; : : best_j = 0; : best_score = scores[0]; 0.00 : 6120d0: 48 8b 75 d0 mov -0x30(%rbp),%rsi : for (j = 1; j < necs; j++) 0.00 : 6120d4: 31 c0 xor %eax,%eax 0.00 : 6120d6: 41 83 fd 01 cmp $0x1,%r13d : int best_score; : EquivalenceClass *ec; : PathKey *pathkey; : : best_j = 0; : best_score = scores[0]; 0.00 : 6120da: 8b 3e mov (%rsi),%edi : for (j = 1; j < necs; j++) 0.00 : 6120dc: 7e 29 jle 612107 0.00 : 6120de: 48 8b 75 d0 mov -0x30(%rbp),%rsi 0.00 : 6120e2: 31 c0 xor %eax,%eax 0.00 : 6120e4: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6120e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : if (scores[j] > best_score) 0.00 : 6120f0: 8b 4e 04 mov 0x4(%rsi),%ecx 0.00 : 6120f3: 39 f9 cmp %edi,%ecx 0.00 : 6120f5: 7e 04 jle 6120fb 0.00 : 6120f7: 89 d0 mov %edx,%eax 0.00 : 6120f9: 89 cf mov %ecx,%edi : EquivalenceClass *ec; : PathKey *pathkey; : : best_j = 0; : best_score = scores[0]; : for (j = 1; j < necs; j++) 0.00 : 6120fb: 83 c2 01 add $0x1,%edx 0.00 : 6120fe: 48 83 c6 04 add $0x4,%rsi 0.00 : 612102: 44 39 ea cmp %r13d,%edx 0.00 : 612105: 7c e9 jl 6120f0 : { : best_j = j; : best_score = scores[j]; : } : } : if (best_score < 0) 0.00 : 612107: 85 ff test %edi,%edi 0.00 : 612109: 78 62 js 61216d : break; /* all done */ : ec = ecs[best_j]; 0.00 : 61210b: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 61210f: 48 98 cltq 0.00 : 612111: 48 8b 34 c2 mov (%rdx,%rax,8),%rsi : scores[best_j] = -1; 0.00 : 612115: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 612119: c7 04 82 ff ff ff ff movl $0xffffffff,(%rdx,%rax,4) : pathkey = make_canonical_pathkey(root, 0.00 : 612120: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 612124: 31 d2 xor %edx,%edx 0.00 : 612126: 48 85 c0 test %rax,%rax 0.00 : 612129: 74 04 je 61212f 0.00 : 61212b: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 61212f: 8b 12 mov (%rdx),%edx 0.00 : 612131: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 612135: 45 31 c0 xor %r8d,%r8d 0.00 : 612138: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 61213d: e8 de fa ff ff callq 611c20 : linitial_oid(ec->ec_opfamilies), : BTLessStrategyNumber, : false); : /* can't be redundant because no duplicate ECs */ : Assert(!pathkey_is_redundant(pathkey, pathkeys)); : pathkeys = lappend(pathkeys, pathkey); 0.00 : 612142: 48 89 df mov %rbx,%rdi : } : if (best_score < 0) : break; /* all done */ : ec = ecs[best_j]; : scores[best_j] = -1; : pathkey = make_canonical_pathkey(root, 0.00 : 612145: 48 89 c6 mov %rax,%rsi : linitial_oid(ec->ec_opfamilies), : BTLessStrategyNumber, : false); : /* can't be redundant because no duplicate ECs */ : Assert(!pathkey_is_redundant(pathkey, pathkeys)); : pathkeys = lappend(pathkeys, pathkey); 0.00 : 612148: e8 33 fd fc ff callq 5e1e80 0.00 : 61214d: 48 89 c3 mov %rax,%rbx : } 0.00 : 612150: e9 7b ff ff ff jmpq 6120d0 0.00 : 612155: 0f 1f 00 nopl (%rax) : * can generate a sort order that's also useful for final output. There is : * no percentage in a partial match, though, so we have to have 'em all. : */ : if (root->query_pathkeys) : { : foreach(lc, root->query_pathkeys) 0.00 : 612158: 4d 8b 40 08 mov 0x8(%r8),%r8 0.00 : 61215c: 4d 85 c0 test %r8,%r8 0.00 : 61215f: 74 2b je 61218c : { : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; 0.00 : 612161: 49 8b 00 mov (%r8),%rax 0.00 : 612164: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 612168: e9 2e ff ff ff jmpq 61209b : /* can't be redundant because no duplicate ECs */ : Assert(!pathkey_is_redundant(pathkey, pathkeys)); : pathkeys = lappend(pathkeys, pathkey); : } : : pfree(ecs); 0.00 : 61216d: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 612171: e8 0a 6a 18 00 callq 798b80 : pfree(scores); 0.00 : 612176: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 61217a: e8 01 6a 18 00 callq 798b80 : : return pathkeys; : } 0.00 : 61217f: e9 96 fd ff ff jmpq 611f1a : if (j < necs) : continue; : : /* compute score */ : score = 0; : foreach(lc2, oeclass->ec_members) 0.00 : 612184: 45 31 f6 xor %r14d,%r14d 0.00 : 612187: e9 c2 fe ff ff jmpq 61204e 0.00 : 61218c: 0f 1f 40 00 nopl 0x0(%rax) : } : /* if we got to the end of the list, we have them all */ : if (lc == NULL) : { : /* copy query_pathkeys as starting point for our output */ : pathkeys = list_copy(root->query_pathkeys); 0.00 : 612190: e8 6b f5 fc ff callq 5e1700 : /* mark their ECs as already-emitted */ : foreach(lc, root->query_pathkeys) 0.00 : 612195: 48 8b 75 c0 mov -0x40(%rbp),%rsi : } : /* if we got to the end of the list, we have them all */ : if (lc == NULL) : { : /* copy query_pathkeys as starting point for our output */ : pathkeys = list_copy(root->query_pathkeys); 0.00 : 612199: 48 89 c3 mov %rax,%rbx : /* mark their ECs as already-emitted */ : foreach(lc, root->query_pathkeys) 0.00 : 61219c: 48 8b 86 e0 00 00 00 mov 0xe0(%rsi),%rax 0.00 : 6121a3: 48 85 c0 test %rax,%rax 0.00 : 6121a6: 0f 84 24 ff ff ff je 6120d0 0.00 : 6121ac: 4c 8b 40 08 mov 0x8(%rax),%r8 0.00 : 6121b0: 4d 85 c0 test %r8,%r8 0.00 : 6121b3: 0f 84 17 ff ff ff je 6120d0 : { : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; 0.00 : 6121b9: 49 8b 00 mov (%r8),%rax : : for (j = 0; j < necs; j++) 0.00 : 6121bc: 45 85 ed test %r13d,%r13d : pathkeys = list_copy(root->query_pathkeys); : /* mark their ECs as already-emitted */ : foreach(lc, root->query_pathkeys) : { : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; 0.00 : 6121bf: 48 8b 78 08 mov 0x8(%rax),%rdi : : for (j = 0; j < necs; j++) 0.00 : 6121c3: 7e 2b jle 6121f0 : { : if (ecs[j] == query_ec) : { : scores[j] = -1; : break; 0.00 : 6121c5: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 6121c9: 31 d2 xor %edx,%edx : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; : : for (j = 0; j < necs; j++) : { : if (ecs[j] == query_ec) 0.00 : 6121cb: 31 c0 xor %eax,%eax 0.00 : 6121cd: 48 39 39 cmp %rdi,(%rcx) 0.00 : 6121d0: 75 16 jne 6121e8 0.00 : 6121d2: eb 34 jmp 612208 0.00 : 6121d4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6121d8: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 6121dc: 48 83 c1 08 add $0x8,%rcx 0.00 : 6121e0: 48 63 f2 movslq %edx,%rsi 0.00 : 6121e3: 48 39 f8 cmp %rdi,%rax 0.00 : 6121e6: 74 18 je 612200 : foreach(lc, root->query_pathkeys) : { : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; : : for (j = 0; j < necs; j++) 0.00 : 6121e8: 83 c2 01 add $0x1,%edx 0.00 : 6121eb: 44 39 ea cmp %r13d,%edx 0.00 : 6121ee: 7c e8 jl 6121d8 : if (lc == NULL) : { : /* copy query_pathkeys as starting point for our output */ : pathkeys = list_copy(root->query_pathkeys); : /* mark their ECs as already-emitted */ : foreach(lc, root->query_pathkeys) 0.00 : 6121f0: 4d 8b 40 08 mov 0x8(%r8),%r8 0.00 : 6121f4: 4d 85 c0 test %r8,%r8 0.00 : 6121f7: 75 c0 jne 6121b9 0.00 : 6121f9: e9 d2 fe ff ff jmpq 6120d0 0.00 : 6121fe: 66 90 xchg %ax,%ax : PathKey *query_pathkey = (PathKey *) lfirst(lc); : EquivalenceClass *query_ec = query_pathkey->pk_eclass; : : for (j = 0; j < necs; j++) : { : if (ecs[j] == query_ec) 0.00 : 612200: 48 8d 04 b5 00 00 00 lea 0x0(,%rsi,4),%rax 0.00 : 612207: 00 : { : scores[j] = -1; 0.00 : 612208: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 61220c: c7 04 02 ff ff ff ff movl $0xffffffff,(%rdx,%rax,1) : if (lc == NULL) : { : /* copy query_pathkeys as starting point for our output */ : pathkeys = list_copy(root->query_pathkeys); : /* mark their ECs as already-emitted */ : foreach(lc, root->query_pathkeys) 0.00 : 612213: 4d 8b 40 08 mov 0x8(%r8),%r8 0.00 : 612217: 4d 85 c0 test %r8,%r8 0.00 : 61221a: 75 9d jne 6121b9 0.00 : 61221c: e9 af fe ff ff jmpq 6120d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/../../../../src/include/nodes/pg_list.h:87 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000612790 : : */ : List * : build_index_pathkeys(PlannerInfo *root, : IndexOptInfo *index, : ScanDirection scandir) : { 0.00 : 612790: 55 push %rbp 0.00 : 612791: 48 89 e5 mov %rsp,%rbp 0.00 : 612794: 41 57 push %r15 0.00 : 612796: 49 89 ff mov %rdi,%r15 0.00 : 612799: 41 56 push %r14 0.00 : 61279b: 41 55 push %r13 0.00 : 61279d: 41 54 push %r12 0.00 : 61279f: 53 push %rbx 0.00 : 6127a0: 48 89 f3 mov %rsi,%rbx 0.00 : 6127a3: 48 83 ec 38 sub $0x38,%rsp 0.00 : 6127a7: 89 55 d4 mov %edx,-0x2c(%rbp) : List *retval = NIL; : ListCell *lc; : int i; : : if (index->sortopfamily == NULL) 0.00 : 6127aa: 48 8b 4e 50 mov 0x50(%rsi),%rcx 0.00 : 6127ae: 48 85 c9 test %rcx,%rcx 0.00 : 6127b1: 0f 84 49 01 00 00 je 612900 : return NIL; /* non-orderable index */ : : i = 0; : foreach(lc, index->indextlist) 0.00 : 6127b7: 48 8b 86 80 00 00 00 mov 0x80(%rsi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 6127be: 48 85 c0 test %rax,%rax 0.00 : 6127c1: 0f 84 39 01 00 00 je 612900 0.00 : 6127c7: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 6127cb: 4d 85 e4 test %r12,%r12 0.00 : 6127ce: 0f 84 2c 01 00 00 je 612900 0.00 : 6127d4: 45 31 f6 xor %r14d,%r14d 0.00 : 6127d7: 45 31 ed xor %r13d,%r13d 0.00 : 6127da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : PathKey *cpathkey; : : /* We assume we don't need to make a copy of the tlist item */ : indexkey = indextle->expr; : : if (ScanDirectionIsBackward(scandir)) 0.00 : 6127e0: 83 7d d4 ff cmpl $0xffffffff,-0x2c(%rbp) : bool reverse_sort; : bool nulls_first; : PathKey *cpathkey; : : /* We assume we don't need to make a copy of the tlist item */ : indexkey = indextle->expr; 0.00 : 6127e4: 49 8b 04 24 mov (%r12),%rax 0.00 : 6127e8: 48 8b 70 08 mov 0x8(%rax),%rsi : : if (ScanDirectionIsBackward(scandir)) 0.00 : 6127ec: 0f 84 ee 00 00 00 je 6128e0 : reverse_sort = !index->reverse_sort[i]; : nulls_first = !index->nulls_first[i]; : } : else : { : reverse_sort = index->reverse_sort[i]; 0.00 : 6127f2: 48 8b 43 58 mov 0x58(%rbx),%rax 0.00 : 6127f6: 49 63 d5 movslq %r13d,%rdx 0.00 : 6127f9: 44 0f b6 14 10 movzbl (%rax,%rdx,1),%r10d : nulls_first = index->nulls_first[i]; 0.00 : 6127fe: 48 8b 43 60 mov 0x60(%rbx),%rax 0.00 : 612802: 0f b6 3c 10 movzbl (%rax,%rdx,1),%edi : : /* : * OK, try to make a canonical pathkey for this sort key. Note we're : * underneath any outer joins, so nullable_relids should be NULL. : */ : cpathkey = make_pathkey_from_sortinfo(root, 0.00 : 612806: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 61280a: 8b 0c 91 mov (%rcx,%rdx,4),%ecx 0.00 : 61280d: 44 8b 0c 90 mov (%rax,%rdx,4),%r9d 0.00 : 612811: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 612815: 44 8b 04 90 mov (%rax,%rdx,4),%r8d 0.00 : 612819: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 61281d: 31 d2 xor %edx,%edx 0.00 : 61281f: c7 44 24 20 00 00 00 movl $0x0,0x20(%rsp) 0.00 : 612826: 00 0.00 : 612827: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 61282b: c7 44 24 10 00 00 00 movl $0x0,0x10(%rsp) 0.00 : 612832: 00 0.00 : 612833: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 612838: 40 0f be c7 movsbl %dil,%eax 0.00 : 61283c: 4c 89 ff mov %r15,%rdi 0.00 : 61283f: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 612843: 41 0f be c2 movsbl %r10b,%eax 0.00 : 612847: 89 04 24 mov %eax,(%rsp) 0.00 : 61284a: e8 51 fc ff ff callq 6124a0 : /* : * If the sort key isn't already present in any EquivalenceClass, then : * it's not an interesting sort order for this query. So we can stop : * now --- lower-order sort keys aren't useful either. : */ : if (!cpathkey) 0.00 : 61284f: 48 85 c0 test %rax,%rax : : /* : * OK, try to make a canonical pathkey for this sort key. Note we're : * underneath any outer joins, so nullable_relids should be NULL. : */ : cpathkey = make_pathkey_from_sortinfo(root, 0.00 : 612852: 48 89 c6 mov %rax,%rsi : /* : * If the sort key isn't already present in any EquivalenceClass, then : * it's not an interesting sort order for this query. So we can stop : * now --- lower-order sort keys aren't useful either. : */ : if (!cpathkey) 0.00 : 612855: 74 71 je 6128c8 : * pointer comparison is enough to decide whether canonical ECs are the same. : */ : static bool : pathkey_is_redundant(PathKey *new_pathkey, List *pathkeys) : { : EquivalenceClass *new_ec = new_pathkey->pk_eclass; 0.00 : 612857: 48 8b 48 08 mov 0x8(%rax),%rcx : ListCell *lc; : : /* Check for EC containing a constant --- unconditionally redundant */ : if (EC_MUST_BE_REDUNDANT(new_ec)) 0.00 : 61285b: 80 79 38 00 cmpb $0x0,0x38(%rcx) 0.00 : 61285f: 74 06 je 612867 0.00 : 612861: 80 79 3a 00 cmpb $0x0,0x3a(%rcx) 0.00 : 612865: 74 2b je 612892 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/../../../../src/include/nodes/pg_list.h:87 100.00 : 612867: 4d 85 f6 test %r14,%r14 0.00 : 61286a: 74 44 je 6128b0 0.00 : 61286c: 49 8b 56 08 mov 0x8(%r14),%rdx : return true; : : /* If same EC already used in list, then redundant */ : foreach(lc, pathkeys) 0.00 : 612870: 48 85 d2 test %rdx,%rdx 0.00 : 612873: 75 14 jne 612889 0.00 : 612875: eb 39 jmp 6128b0 0.00 : 612877: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61287e: 00 00 0.00 : 612880: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 612884: 48 85 d2 test %rdx,%rdx 0.00 : 612887: 74 27 je 6128b0 : { : PathKey *old_pathkey = (PathKey *) lfirst(lc); : : if (new_ec == old_pathkey->pk_eclass) 0.00 : 612889: 48 8b 02 mov (%rdx),%rax 0.00 : 61288c: 48 3b 48 08 cmp 0x8(%rax),%rcx 0.00 : 612890: 75 ee jne 612880 : : if (index->sortopfamily == NULL) : return NIL; /* non-orderable index */ : : i = 0; : foreach(lc, index->indextlist) 0.00 : 612892: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 612897: 4d 85 e4 test %r12,%r12 0.00 : 61289a: 74 2c je 6128c8 : : /* Add to list unless redundant */ : if (!pathkey_is_redundant(cpathkey, retval)) : retval = lappend(retval, cpathkey); : : i++; 0.00 : 61289c: 41 83 c5 01 add $0x1,%r13d 0.00 : 6128a0: 48 8b 4b 50 mov 0x50(%rbx),%rcx 0.00 : 6128a4: e9 37 ff ff ff jmpq 6127e0 0.00 : 6128a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (!cpathkey) : break; : : /* Add to list unless redundant */ : if (!pathkey_is_redundant(cpathkey, retval)) : retval = lappend(retval, cpathkey); 0.00 : 6128b0: 4c 89 f7 mov %r14,%rdi 0.00 : 6128b3: e8 c8 f5 fc ff callq 5e1e80 : : if (index->sortopfamily == NULL) : return NIL; /* non-orderable index */ : : i = 0; : foreach(lc, index->indextlist) 0.00 : 6128b8: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : if (!cpathkey) : break; : : /* Add to list unless redundant */ : if (!pathkey_is_redundant(cpathkey, retval)) : retval = lappend(retval, cpathkey); 0.00 : 6128bd: 49 89 c6 mov %rax,%r14 : : if (index->sortopfamily == NULL) : return NIL; /* non-orderable index */ : : i = 0; : foreach(lc, index->indextlist) 0.00 : 6128c0: 4d 85 e4 test %r12,%r12 0.00 : 6128c3: 75 d7 jne 61289c 0.00 : 6128c5: 0f 1f 00 nopl (%rax) : : i++; : } : : return retval; : } 0.00 : 6128c8: 48 83 c4 38 add $0x38,%rsp 0.00 : 6128cc: 4c 89 f0 mov %r14,%rax 0.00 : 6128cf: 5b pop %rbx 0.00 : 6128d0: 41 5c pop %r12 0.00 : 6128d2: 41 5d pop %r13 0.00 : 6128d4: 41 5e pop %r14 0.00 : 6128d6: 41 5f pop %r15 0.00 : 6128d8: c9 leaveq 0.00 : 6128d9: c3 retq 0.00 : 6128da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* We assume we don't need to make a copy of the tlist item */ : indexkey = indextle->expr; : : if (ScanDirectionIsBackward(scandir)) : { : reverse_sort = !index->reverse_sort[i]; 0.00 : 6128e0: 48 8b 43 58 mov 0x58(%rbx),%rax 0.00 : 6128e4: 49 63 d5 movslq %r13d,%rdx 0.00 : 6128e7: 80 3c 10 00 cmpb $0x0,(%rax,%rdx,1) : nulls_first = !index->nulls_first[i]; 0.00 : 6128eb: 48 8b 43 60 mov 0x60(%rbx),%rax : /* We assume we don't need to make a copy of the tlist item */ : indexkey = indextle->expr; : : if (ScanDirectionIsBackward(scandir)) : { : reverse_sort = !index->reverse_sort[i]; 0.00 : 6128ef: 41 0f 94 c2 sete %r10b : nulls_first = !index->nulls_first[i]; 0.00 : 6128f3: 80 3c 10 00 cmpb $0x0,(%rax,%rdx,1) 0.00 : 6128f7: 40 0f 94 c7 sete %dil 0.00 : 6128fb: e9 06 ff ff ff jmpq 612806 : : /* Add to list unless redundant */ : if (!pathkey_is_redundant(cpathkey, retval)) : retval = lappend(retval, cpathkey); : : i++; 0.00 : 612900: 45 31 f6 xor %r14d,%r14d 0.00 : 612903: eb c3 jmp 6128c8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/createplan.c:3637 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006186f0 : : * Create a join plan for 'best_path' and (recursively) plans for its : * inner and outer paths. : */ : static Plan * : create_join_plan(PlannerInfo *root, JoinPath *best_path) : { 0.00 : 6186f0: 55 push %rbp 0.00 : 6186f1: 48 89 e5 mov %rsp,%rbp 0.00 : 6186f4: 41 57 push %r15 0.00 : 6186f6: 49 89 f7 mov %rsi,%r15 0.00 : 6186f9: 41 56 push %r14 0.00 : 6186fb: 41 55 push %r13 0.00 : 6186fd: 41 54 push %r12 0.00 : 6186ff: 53 push %rbx 0.00 : 618700: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 618707: 48 89 bd 48 ff ff ff mov %rdi,-0xb8(%rbp) : Plan *outer_plan; : Plan *inner_plan; : Plan *plan; : Relids saveOuterRels = root->curOuterRels; : : outer_plan = create_plan_recurse(root, best_path->outerjoinpath); 0.00 : 61870e: 48 8b 76 40 mov 0x40(%rsi),%rsi : create_join_plan(PlannerInfo *root, JoinPath *best_path) : { : Plan *outer_plan; : Plan *inner_plan; : Plan *plan; : Relids saveOuterRels = root->curOuterRels; 0.00 : 618712: 48 8b 9f 50 01 00 00 mov 0x150(%rdi),%rbx : : outer_plan = create_plan_recurse(root, best_path->outerjoinpath); 0.00 : 618719: e8 82 e7 ff ff callq 616ea0 : : /* For a nestloop, include outer relids in curOuterRels for inner side */ : if (best_path->path.pathtype == T_NestLoop) 0.00 : 61871e: 41 83 7f 04 7a cmpl $0x7a,0x4(%r15) : Plan *outer_plan; : Plan *inner_plan; : Plan *plan; : Relids saveOuterRels = root->curOuterRels; : : outer_plan = create_plan_recurse(root, best_path->outerjoinpath); 0.00 : 618723: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : : /* For a nestloop, include outer relids in curOuterRels for inner side */ : if (best_path->path.pathtype == T_NestLoop) 0.00 : 61872a: 0f 84 92 09 00 00 je 6190c2 : root->curOuterRels = bms_union(root->curOuterRels, : best_path->outerjoinpath->parent->relids); : : inner_plan = create_plan_recurse(root, best_path->innerjoinpath); 0.00 : 618730: 49 8b 77 48 mov 0x48(%r15),%rsi 0.00 : 618734: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 61873b: e8 60 e7 ff ff callq 616ea0 0.00 : 618740: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : : switch (best_path->path.pathtype) 0.00 : 618747: 41 8b 47 04 mov 0x4(%r15),%eax 0.00 : 61874b: 83 f8 7b cmp $0x7b,%eax 0.00 : 61874e: 0f 84 1c 04 00 00 je 618b70 0.00 : 618754: 83 f8 7c cmp $0x7c,%eax 0.00 : 618757: 0f 84 cb 01 00 00 je 618928 0.00 : 61875d: 83 f8 7a cmp $0x7a,%eax 0.00 : 618760: 74 2e je 618790 : (NestPath *) best_path, : outer_plan, : inner_plan); : break; : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 618762: ba 90 b2 89 00 mov $0x89b290,%edx 0.00 : 618767: be 80 02 00 00 mov $0x280,%esi 0.00 : 61876c: bf 59 ac 89 00 mov $0x89ac59,%edi 0.00 : 618771: e8 aa 2c 16 00 callq 77b420 0.00 : 618776: 41 8b 57 04 mov 0x4(%r15),%edx 0.00 : 61877a: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 61877f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 618784: 31 c0 xor %eax,%eax 0.00 : 618786: e8 a5 2a 16 00 callq 77b230 0.00 : 61878b: e8 40 0d e5 ff callq 4694d0 : outer_plan, : inner_plan); : break; : case T_NestLoop: : /* Restore curOuterRels */ : bms_free(root->curOuterRels); 0.00 : 618790: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 618797: 48 8b b8 50 01 00 00 mov 0x150(%rax),%rdi 0.00 : 61879e: e8 0d a6 fc ff callq 5e2db0 : root->curOuterRels = saveOuterRels; 0.00 : 6187a3: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx : NestPath *best_path, : Plan *outer_plan, : Plan *inner_plan) : { : NestLoop *join_plan; : List *tlist = build_path_tlist(root, &best_path->path); 0.00 : 6187aa: 4c 89 fe mov %r15,%rsi 0.00 : 6187ad: 48 89 d7 mov %rdx,%rdi : inner_plan); : break; : case T_NestLoop: : /* Restore curOuterRels */ : bms_free(root->curOuterRels); : root->curOuterRels = saveOuterRels; 0.00 : 6187b0: 48 89 9a 50 01 00 00 mov %rbx,0x150(%rdx) : NestPath *best_path, : Plan *outer_plan, : Plan *inner_plan) : { : NestLoop *join_plan; : List *tlist = build_path_tlist(root, &best_path->path); 0.00 : 6187b7: e8 24 d5 ff ff callq 615ce0 : ListCell *cell; : ListCell *prev; : ListCell *next; : : /* Sort join qual clauses into best execution order */ : joinrestrictclauses = order_qual_clauses(root, joinrestrictclauses); 0.00 : 6187bc: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi : Plan *outer_plan, : Plan *inner_plan) : { : NestLoop *join_plan; : List *tlist = build_path_tlist(root, &best_path->path); : List *joinrestrictclauses = best_path->joinrestrictinfo; 0.00 : 6187c3: 49 8b 77 50 mov 0x50(%r15),%rsi : NestPath *best_path, : Plan *outer_plan, : Plan *inner_plan) : { : NestLoop *join_plan; : List *tlist = build_path_tlist(root, &best_path->path); 0.00 : 6187c7: 48 89 45 a8 mov %rax,-0x58(%rbp) : ListCell *cell; : ListCell *prev; : ListCell *next; : : /* Sort join qual clauses into best execution order */ : joinrestrictclauses = order_qual_clauses(root, joinrestrictclauses); 0.00 : 6187cb: e8 00 d6 ff ff callq 615dd0 : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jointype)) 0.00 : 6187d0: 41 8b 4f 38 mov 0x38(%r15),%ecx : ListCell *cell; : ListCell *prev; : ListCell *next; : : /* Sort join qual clauses into best execution order */ : joinrestrictclauses = order_qual_clauses(root, joinrestrictclauses); 0.00 : 6187d4: 48 89 c7 mov %rax,%rdi : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jointype)) 0.00 : 6187d7: b8 2e 00 00 00 mov $0x2e,%eax 0.00 : 6187dc: d3 f8 sar %cl,%eax 0.00 : 6187de: a8 01 test $0x1,%al 0.00 : 6187e0: 0f 85 53 07 00 00 jne 618f39 : &joinclauses, &otherclauses); : } : else : { : /* We can treat all clauses alike for an inner join */ : joinclauses = extract_actual_clauses(joinrestrictclauses, false); 0.00 : 6187e6: 31 f6 xor %esi,%esi 0.00 : 6187e8: e8 63 e0 01 00 callq 636850 : otherclauses = NIL; 0.00 : 6187ed: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 6187f4: 00 : &joinclauses, &otherclauses); : } : else : { : /* We can treat all clauses alike for an inner join */ : joinclauses = extract_actual_clauses(joinrestrictclauses, false); 0.00 : 6187f5: 48 89 45 d0 mov %rax,-0x30(%rbp) : otherclauses = NIL; : } : : /* Replace any outer-relation variables with nestloop params */ : if (best_path->path.param_info) 0.00 : 6187f9: 49 83 7f 10 00 cmpq $0x0,0x10(%r15) 0.00 : 6187fe: 74 28 je 618828 : */ : static Node * : replace_nestloop_params(PlannerInfo *root, Node *expr) : { : /* No setup needed for tree walk, so away we go */ : return replace_nestloop_params_mutator(expr, root); 0.00 : 618800: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 618804: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 61880b: e8 a0 d2 ff ff callq 615ab0 0.00 : 618810: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 618814: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi : } : : /* Replace any outer-relation variables with nestloop params */ : if (best_path->path.param_info) : { : joinclauses = (List *) 0.00 : 61881b: 48 89 45 d0 mov %rax,-0x30(%rbp) : */ : static Node * : replace_nestloop_params(PlannerInfo *root, Node *expr) : { : /* No setup needed for tree walk, so away we go */ : return replace_nestloop_params_mutator(expr, root); 0.00 : 61881f: e8 8c d2 ff ff callq 615ab0 : /* Replace any outer-relation variables with nestloop params */ : if (best_path->path.param_info) : { : joinclauses = (List *) : replace_nestloop_params(root, (Node *) joinclauses); : otherclauses = (List *) 0.00 : 618824: 48 89 45 c8 mov %rax,-0x38(%rbp) : : /* : * Identify any nestloop parameters that should be supplied by this join : * node, and move them from root->curOuterParams to the nestParams list. : */ : outerrelids = best_path->outerjoinpath->parent->relids; 0.00 : 618828: 49 8b 47 40 mov 0x40(%r15),%rax : nestParams = NIL; : prev = NULL; : for (cell = list_head(root->curOuterParams); cell; cell = next) 0.00 : 61882c: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx : : /* : * Identify any nestloop parameters that should be supplied by this join : * node, and move them from root->curOuterParams to the nestParams list. : */ : outerrelids = best_path->outerjoinpath->parent->relids; 0.00 : 618833: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 618837: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 61883b: 48 89 45 a0 mov %rax,-0x60(%rbp) : nestParams = NIL; : prev = NULL; : for (cell = list_head(root->curOuterParams); cell; cell = next) 0.00 : 61883f: 48 8b 81 58 01 00 00 mov 0x158(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 618846: 48 85 c0 test %rax,%rax 0.00 : 618849: 0f 84 ae 07 00 00 je 618ffd 0.00 : 61884f: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 618853: 48 85 db test %rbx,%rbx 0.00 : 618856: 0f 84 a1 07 00 00 je 618ffd 0.00 : 61885c: 45 31 f6 xor %r14d,%r14d 0.00 : 61885f: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 618866: 00 0.00 : 618867: eb 1d jmp 618886 0.00 : 618869: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : root->curOuterParams = list_delete_cell(root->curOuterParams, : cell, prev); : nestParams = lappend(nestParams, nlp); : } : else if (IsA(nlp->paramval, PlaceHolderVar) && 0.00 : 618870: 3d 0c 02 00 00 cmp $0x20c,%eax 0.00 : 618875: 74 49 je 6188c0 : * node, and move them from root->curOuterParams to the nestParams list. : */ : outerrelids = best_path->outerjoinpath->parent->relids; : nestParams = NIL; : prev = NULL; : for (cell = list_head(root->curOuterParams); cell; cell = next) 0.00 : 618877: 4d 85 ed test %r13,%r13 0.00 : 61887a: 0f 84 88 07 00 00 je 619008 0.00 : 618880: 49 89 de mov %rbx,%r14 0.00 : 618883: 4c 89 eb mov %r13,%rbx : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(cell); 0.00 : 618886: 4c 8b 23 mov (%rbx),%r12 : : next = lnext(cell); 0.00 : 618889: 4c 8b 6b 08 mov 0x8(%rbx),%r13 : if (IsA(nlp->paramval, Var) && 0.00 : 61888d: 49 8b 54 24 08 mov 0x8(%r12),%rdx 0.00 : 618892: 8b 02 mov (%rdx),%eax 0.00 : 618894: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 618899: 75 d5 jne 618870 0.00 : 61889b: 8b 7a 04 mov 0x4(%rdx),%edi 0.00 : 61889e: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 6188a2: e8 69 a6 fc ff callq 5e2f10 0.00 : 6188a7: 84 c0 test %al,%al 0.00 : 6188a9: 0f 85 6f 08 00 00 jne 61911e 0.00 : 6188af: 49 8b 54 24 08 mov 0x8(%r12),%rdx 0.00 : 6188b4: 8b 02 mov (%rdx),%eax : { : root->curOuterParams = list_delete_cell(root->curOuterParams, : cell, prev); : nestParams = lappend(nestParams, nlp); : } : else if (IsA(nlp->paramval, PlaceHolderVar) && 0.00 : 6188b6: 3d 0c 02 00 00 cmp $0x20c,%eax 0.00 : 6188bb: 75 ba jne 618877 0.00 : 6188bd: 0f 1f 00 nopl (%rax) 0.00 : 6188c0: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 6188c4: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 6188c8: e8 b3 a0 fc ff callq 5e2980 0.00 : 6188cd: 84 c0 test %al,%al 0.00 : 6188cf: 74 a6 je 618877 0.00 : 6188d1: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 6188d6: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 6188dd: 31 d2 xor %edx,%edx 0.00 : 6188df: e8 cc 9a 01 00 callq 6323b0 0.00 : 6188e4: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.00 : 6188e8: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 6188ec: e8 2f 9e fc ff callq 5e2720 0.00 : 6188f1: 84 c0 test %al,%al 0.00 : 6188f3: 74 82 je 618877 : bms_is_subset(find_placeholder_info(root, : (PlaceHolderVar *) nlp->paramval, : false)->ph_eval_at, : outerrelids)) : { : root->curOuterParams = list_delete_cell(root->curOuterParams, 0.00 : 6188f5: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 6188fc: 48 89 de mov %rbx,%rsi 0.00 : 6188ff: 4c 89 f2 mov %r14,%rdx 0.00 : 618902: 48 8b b9 58 01 00 00 mov 0x158(%rcx),%rdi 0.00 : 618909: e8 52 98 fc ff callq 5e2160 0.00 : 61890e: 48 8b 9d 48 ff ff ff mov -0xb8(%rbp),%rbx 0.00 : 618915: 48 89 83 58 01 00 00 mov %rax,0x158(%rbx) 0.00 : 61891c: e9 24 08 00 00 jmpq 619145 0.00 : 618921: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : create_hashjoin_plan(PlannerInfo *root, : HashPath *best_path, : Plan *outer_plan, : Plan *inner_plan) : { : List *tlist = build_path_tlist(root, &best_path->jpath.path); 0.00 : 618928: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 61892f: 4c 89 fe mov %r15,%rsi 0.00 : 618932: e8 a9 d3 ff ff callq 615ce0 : int32 skewColTypmod = -1; : HashJoin *join_plan; : Hash *hash_plan; : : /* Sort join qual clauses into best execution order */ : joinclauses = order_qual_clauses(root, best_path->jpath.joinrestrictinfo); 0.00 : 618937: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 61893e: 49 8b 77 50 mov 0x50(%r15),%rsi : create_hashjoin_plan(PlannerInfo *root, : HashPath *best_path, : Plan *outer_plan, : Plan *inner_plan) : { : List *tlist = build_path_tlist(root, &best_path->jpath.path); 0.00 : 618942: 48 89 45 90 mov %rax,-0x70(%rbp) : int32 skewColTypmod = -1; : HashJoin *join_plan; : Hash *hash_plan; : : /* Sort join qual clauses into best execution order */ : joinclauses = order_qual_clauses(root, best_path->jpath.joinrestrictinfo); 0.00 : 618946: e8 85 d4 ff ff callq 615dd0 : /* There's no point in sorting the hash clauses ... */ : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jpath.jointype)) 0.00 : 61894b: 41 8b 4f 38 mov 0x38(%r15),%ecx : int32 skewColTypmod = -1; : HashJoin *join_plan; : Hash *hash_plan; : : /* Sort join qual clauses into best execution order */ : joinclauses = order_qual_clauses(root, best_path->jpath.joinrestrictinfo); 0.00 : 61894f: 48 89 c7 mov %rax,%rdi 0.00 : 618952: 48 89 45 c8 mov %rax,-0x38(%rbp) : /* There's no point in sorting the hash clauses ... */ : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jpath.jointype)) 0.00 : 618956: b8 2e 00 00 00 mov $0x2e,%eax 0.00 : 61895b: d3 f8 sar %cl,%eax 0.00 : 61895d: a8 01 test $0x1,%al 0.00 : 61895f: 0f 84 e6 05 00 00 je 618f4b : { : extract_actual_join_clauses(joinclauses, 0.00 : 618965: 48 8d 55 d0 lea -0x30(%rbp),%rdx 0.00 : 618969: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 61896d: e8 3e de 01 00 callq 6367b0 : : /* : * Remove the hashclauses from the list of join qual clauses, leaving the : * list of quals that must be checked as qpquals. : */ : hashclauses = get_actual_clauses(best_path->path_hashclauses); 0.00 : 618972: 49 8b 7f 58 mov 0x58(%r15),%rdi 0.00 : 618976: e8 85 df 01 00 callq 636900 : joinclauses = list_difference(joinclauses, hashclauses); 0.00 : 61897b: 48 8b 7d c8 mov -0x38(%rbp),%rdi : : /* : * Remove the hashclauses from the list of join qual clauses, leaving the : * list of quals that must be checked as qpquals. : */ : hashclauses = get_actual_clauses(best_path->path_hashclauses); 0.00 : 61897f: 48 89 c6 mov %rax,%rsi : joinclauses = list_difference(joinclauses, hashclauses); 0.00 : 618982: e8 c9 9a fc ff callq 5e2450 : : /* : * Replace any outer-relation variables with nestloop params. There : * should not be any in the hashclauses. : */ : if (best_path->jpath.path.param_info) 0.00 : 618987: 49 83 7f 10 00 cmpq $0x0,0x10(%r15) : /* : * Remove the hashclauses from the list of join qual clauses, leaving the : * list of quals that must be checked as qpquals. : */ : hashclauses = get_actual_clauses(best_path->path_hashclauses); : joinclauses = list_difference(joinclauses, hashclauses); 0.00 : 61898c: 48 89 45 c8 mov %rax,-0x38(%rbp) : : /* : * Replace any outer-relation variables with nestloop params. There : * should not be any in the hashclauses. : */ : if (best_path->jpath.path.param_info) 0.00 : 618990: 74 27 je 6189b9 : */ : static Node * : replace_nestloop_params(PlannerInfo *root, Node *expr) : { : /* No setup needed for tree walk, so away we go */ : return replace_nestloop_params_mutator(expr, root); 0.00 : 618992: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 618999: 48 89 c7 mov %rax,%rdi 0.00 : 61899c: e8 0f d1 ff ff callq 615ab0 0.00 : 6189a1: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 6189a5: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi : * Replace any outer-relation variables with nestloop params. There : * should not be any in the hashclauses. : */ : if (best_path->jpath.path.param_info) : { : joinclauses = (List *) 0.00 : 6189ac: 48 89 45 c8 mov %rax,-0x38(%rbp) : */ : static Node * : replace_nestloop_params(PlannerInfo *root, Node *expr) : { : /* No setup needed for tree walk, so away we go */ : return replace_nestloop_params_mutator(expr, root); 0.00 : 6189b0: e8 fb d0 ff ff callq 615ab0 : */ : if (best_path->jpath.path.param_info) : { : joinclauses = (List *) : replace_nestloop_params(root, (Node *) joinclauses); : otherclauses = (List *) 0.00 : 6189b5: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* : * Rearrange hashclauses, if needed, so that the outer variable is always : * on the left. : */ : hashclauses = get_switched_clauses(best_path->path_hashclauses, 0.00 : 6189b9: 49 8b 47 40 mov 0x40(%r15),%rax 0.00 : 6189bd: 49 8b 7f 58 mov 0x58(%r15),%rdi 0.00 : 6189c1: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 6189c5: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 6189c9: e8 82 d5 ff ff callq 615f50 : best_path->jpath.outerjoinpath->parent->relids); : : /* We don't want any excess columns in the hashed tuples */ : disuse_physical_tlist(root, inner_plan, best_path->jpath.innerjoinpath); 0.00 : 6189ce: 49 8b 57 48 mov 0x48(%r15),%rdx 0.00 : 6189d2: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 6189d9: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi : : /* : * Rearrange hashclauses, if needed, so that the outer variable is always : * on the left. : */ : hashclauses = get_switched_clauses(best_path->path_hashclauses, 0.00 : 6189e0: 48 89 45 c0 mov %rax,-0x40(%rbp) : best_path->jpath.outerjoinpath->parent->relids); : : /* We don't want any excess columns in the hashed tuples */ : disuse_physical_tlist(root, inner_plan, best_path->jpath.innerjoinpath); 0.00 : 6189e4: e8 a7 d3 ff ff callq 615d90 : : /* If we expect batching, suppress excess columns in outer tuples too */ : if (best_path->num_batches > 1) 0.00 : 6189e9: 41 83 7f 60 01 cmpl $0x1,0x60(%r15) 0.00 : 6189ee: 7e 17 jle 618a07 : disuse_physical_tlist(root, outer_plan, best_path->jpath.outerjoinpath); 0.00 : 6189f0: 49 8b 57 40 mov 0x40(%r15),%rdx 0.00 : 6189f4: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 6189fb: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 618a02: e8 89 d3 ff ff callq 615d90 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 618a07: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 618a0c: 74 0e je 618a1c : * skew optimization. (Note: in principle we could do skew optimization : * with multiple join clauses, but we'd have to be able to determine the : * most common combinations of outer values, which we don't currently have : * enough stats for.) : */ : if (list_length(hashclauses) == 1) 0.00 : 618a0e: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 618a12: 83 7b 04 01 cmpl $0x1,0x4(%rbx) 0.00 : 618a16: 0f 84 d5 07 00 00 je 6191f1 : { : skewTable = rte->relid; : skewColumn = var->varattno; : skewInherit = rte->inh; : skewColType = var->vartype; : skewColTypmod = var->vartypmod; 0.00 : 618a1c: c7 45 88 ff ff ff ff movl $0xffffffff,-0x78(%rbp) 0.00 : 618a23: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : 618a2a: 45 31 ed xor %r13d,%r13d 0.00 : 618a2d: 45 31 e4 xor %r12d,%r12d 0.00 : 618a30: 31 db xor %ebx,%ebx : AttrNumber skewColumn, : bool skewInherit, : Oid skewColType, : int32 skewColTypmod) : { : Hash *node = makeNode(Hash); 0.00 : 618a32: 48 8b 3d 27 1e 5a 00 mov 0x5a1e27(%rip),%rdi # bba860 0.00 : 618a39: be 70 00 00 00 mov $0x70,%esi 0.00 : 618a3e: e8 cd 03 18 00 callq 798e10 0.00 : 618a43: c7 00 83 00 00 00 movl $0x83,(%rax) : * (Most callers alter the info after copying it.) : */ : static void : copy_plan_costsize(Plan *dest, Plan *src) : { : if (src) 0.00 : 618a49: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 618a50: 00 : AttrNumber skewColumn, : bool skewInherit, : Oid skewColType, : int32 skewColTypmod) : { : Hash *node = makeNode(Hash); 0.00 : 618a51: 49 89 c6 mov %rax,%r14 : * (Most callers alter the info after copying it.) : */ : static void : copy_plan_costsize(Plan *dest, Plan *src) : { : if (src) 0.00 : 618a54: 0f 84 94 08 00 00 je 6192ee : { : dest->startup_cost = src->startup_cost; 0.00 : 618a5a: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : 618a61: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 618a65: 49 89 46 08 mov %rax,0x8(%r14) : dest->total_cost = src->total_cost; 0.00 : 618a69: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 618a6d: 49 89 46 10 mov %rax,0x10(%r14) : dest->plan_rows = src->plan_rows; 0.00 : 618a71: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 618a75: 49 89 46 18 mov %rax,0x18(%r14) : dest->plan_width = src->plan_width; 0.00 : 618a79: 8b 42 20 mov 0x20(%rdx),%eax 0.00 : 618a7c: 41 89 46 20 mov %eax,0x20(%r14) : : /* : * For plausibility, make startup & total costs equal total cost of input : * plan; this only affects EXPLAIN display not decisions. : */ : plan->startup_cost = plan->total_cost; 0.00 : 618a80: 49 8b 46 10 mov 0x10(%r14),%rax : List *hashclauses, : Plan *lefttree, : Plan *righttree, : JoinType jointype) : { : HashJoin *node = makeNode(HashJoin); 0.00 : 618a84: be 78 00 00 00 mov $0x78,%esi : : /* : * For plausibility, make startup & total costs equal total cost of input : * plan; this only affects EXPLAIN display not decisions. : */ : plan->startup_cost = plan->total_cost; 0.00 : 618a89: 49 89 46 08 mov %rax,0x8(%r14) : plan->targetlist = lefttree->targetlist; 0.00 : 618a8d: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 618a94: 48 8b 41 28 mov 0x28(%rcx),%rax : plan->qual = NIL; : plan->lefttree = lefttree; 0.00 : 618a98: 49 89 4e 38 mov %rcx,0x38(%r14) : * For plausibility, make startup & total costs equal total cost of input : * plan; this only affects EXPLAIN display not decisions. : */ : plan->startup_cost = plan->total_cost; : plan->targetlist = lefttree->targetlist; : plan->qual = NIL; 0.00 : 618a9c: 49 c7 46 30 00 00 00 movq $0x0,0x30(%r14) 0.00 : 618aa3: 00 : plan->lefttree = lefttree; : plan->righttree = NULL; 0.00 : 618aa4: 49 c7 46 40 00 00 00 movq $0x0,0x40(%r14) 0.00 : 618aab: 00 : : node->skewTable = skewTable; 0.00 : 618aac: 41 89 5e 60 mov %ebx,0x60(%r14) : node->skewColumn = skewColumn; 0.00 : 618ab0: 66 45 89 66 64 mov %r12w,0x64(%r14) : /* : * For plausibility, make startup & total costs equal total cost of input : * plan; this only affects EXPLAIN display not decisions. : */ : plan->startup_cost = plan->total_cost; : plan->targetlist = lefttree->targetlist; 0.00 : 618ab5: 49 89 46 28 mov %rax,0x28(%r14) : plan->lefttree = lefttree; : plan->righttree = NULL; : : node->skewTable = skewTable; : node->skewColumn = skewColumn; : node->skewInherit = skewInherit; 0.00 : 618ab9: 45 88 6e 66 mov %r13b,0x66(%r14) : node->skewColType = skewColType; 0.00 : 618abd: 8b 5d 8c mov -0x74(%rbp),%ebx 0.00 : 618ac0: 41 89 5e 68 mov %ebx,0x68(%r14) : node->skewColTypmod = skewColTypmod; 0.00 : 618ac4: 8b 45 88 mov -0x78(%rbp),%eax 0.00 : 618ac7: 41 89 46 6c mov %eax,0x6c(%r14) : List *hashclauses, : Plan *lefttree, : Plan *righttree, : JoinType jointype) : { : HashJoin *node = makeNode(HashJoin); 0.00 : 618acb: 48 8b 3d 8e 1d 5a 00 mov 0x5a1d8e(%rip),%rdi # bba860 : skewTable, : skewColumn, : skewInherit, : skewColType, : skewColTypmod); : join_plan = make_hashjoin(tlist, 0.00 : 618ad2: 48 8b 5d d0 mov -0x30(%rbp),%rbx 0.00 : 618ad6: 45 8b 6f 38 mov 0x38(%r15),%r13d 0.00 : 618ada: 4c 8b 65 c8 mov -0x38(%rbp),%r12 : List *hashclauses, : Plan *lefttree, : Plan *righttree, : JoinType jointype) : { : HashJoin *node = makeNode(HashJoin); 0.00 : 618ade: e8 2d 03 18 00 callq 798e10 0.00 : 618ae3: c7 00 7c 00 00 00 movl $0x7c,(%rax) : Plan *plan = &node->join.plan; : : /* cost should be inserted by caller */ : plan->targetlist = tlist; 0.00 : 618ae9: 48 8b 55 90 mov -0x70(%rbp),%rdx : plan->qual = otherclauses; 0.00 : 618aed: 48 89 58 30 mov %rbx,0x30(%rax) : { : HashJoin *node = makeNode(HashJoin); : Plan *plan = &node->join.plan; : : /* cost should be inserted by caller */ : plan->targetlist = tlist; 0.00 : 618af1: 48 89 50 28 mov %rdx,0x28(%rax) : plan->qual = otherclauses; : plan->lefttree = lefttree; 0.00 : 618af5: 48 8b 8d 50 ff ff ff mov -0xb0(%rbp),%rcx : plan->righttree = righttree; 0.00 : 618afc: 4c 89 70 40 mov %r14,0x40(%rax) : Plan *plan = &node->join.plan; : : /* cost should be inserted by caller */ : plan->targetlist = tlist; : plan->qual = otherclauses; : plan->lefttree = lefttree; 0.00 : 618b00: 48 89 48 38 mov %rcx,0x38(%rax) : plan->righttree = righttree; : node->hashclauses = hashclauses; 0.00 : 618b04: 48 8b 5d c0 mov -0x40(%rbp),%rbx : node->join.jointype = jointype; 0.00 : 618b08: 44 89 68 60 mov %r13d,0x60(%rax) : node->join.joinqual = joinclauses; 0.00 : 618b0c: 4c 89 60 68 mov %r12,0x68(%rax) : /* cost should be inserted by caller */ : plan->targetlist = tlist; : plan->qual = otherclauses; : plan->lefttree = lefttree; : plan->righttree = righttree; : node->hashclauses = hashclauses; 0.00 : 618b10: 48 89 58 70 mov %rbx,0x70(%rax) : static void : copy_path_costsize(Plan *dest, Path *src) : { : if (src) : { : dest->startup_cost = src->startup_cost; 0.00 : 618b14: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 618b18: 48 89 50 08 mov %rdx,0x8(%rax) : dest->total_cost = src->total_cost; 0.00 : 618b1c: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 618b20: 48 89 50 10 mov %rdx,0x10(%rax) : dest->plan_rows = src->rows; 0.00 : 618b24: 49 8b 57 18 mov 0x18(%r15),%rdx 0.00 : 618b28: 48 89 50 18 mov %rdx,0x18(%rax) : dest->plan_width = src->parent->width; 0.00 : 618b2c: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : 618b30: 8b 52 18 mov 0x18(%rdx),%edx 0.00 : 618b33: 89 50 20 mov %edx,0x20(%rax) : /* : * If there are any pseudoconstant clauses attached to this node, insert a : * gating Result node that evaluates the pseudoconstants as one-time : * quals. : */ : if (root->hasPseudoConstantQuals) 0.00 : 618b36: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 618b3d: 80 b9 3c 01 00 00 00 cmpb $0x0,0x13c(%rcx) 0.00 : 618b44: 74 0f je 618b55 : plan = create_gating_plan(root, plan, best_path->joinrestrictinfo); 0.00 : 618b46: 49 8b 57 50 mov 0x50(%r15),%rdx 0.00 : 618b4a: 48 89 c6 mov %rax,%rsi 0.00 : 618b4d: 48 89 cf mov %rcx,%rdi 0.00 : 618b50: e8 ab d3 ff ff callq 615f00 : list_concat(get_qpqual((Plan) plan), : get_actual_clauses(get_loc_restrictinfo(best_path)))); : #endif : : return plan; : } 0.00 : 618b55: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 618b5c: 5b pop %rbx 0.00 : 618b5d: 41 5c pop %r12 0.00 : 618b5f: 41 5d pop %r13 0.00 : 618b61: 41 5e pop %r14 0.00 : 618b63: 41 5f pop %r15 0.00 : 618b65: c9 leaveq 0.00 : 618b66: c3 retq 0.00 : 618b67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 618b6e: 00 00 : create_mergejoin_plan(PlannerInfo *root, : MergePath *best_path, : Plan *outer_plan, : Plan *inner_plan) : { : List *tlist = build_path_tlist(root, &best_path->jpath.path); 0.00 : 618b70: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 618b77: 4c 89 fe mov %r15,%rsi 0.00 : 618b7a: e8 61 d1 ff ff callq 615ce0 : ListCell *lop; : ListCell *lip; : : /* Sort join qual clauses into best execution order */ : /* NB: do NOT reorder the mergeclauses */ : joinclauses = order_qual_clauses(root, best_path->jpath.joinrestrictinfo); 0.00 : 618b7f: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 618b86: 49 8b 77 50 mov 0x50(%r15),%rsi : create_mergejoin_plan(PlannerInfo *root, : MergePath *best_path, : Plan *outer_plan, : Plan *inner_plan) : { : List *tlist = build_path_tlist(root, &best_path->jpath.path); 0.00 : 618b8a: 48 89 45 80 mov %rax,-0x80(%rbp) : ListCell *lop; : ListCell *lip; : : /* Sort join qual clauses into best execution order */ : /* NB: do NOT reorder the mergeclauses */ : joinclauses = order_qual_clauses(root, best_path->jpath.joinrestrictinfo); 0.00 : 618b8e: e8 3d d2 ff ff callq 615dd0 : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jpath.jointype)) 0.00 : 618b93: 41 8b 4f 38 mov 0x38(%r15),%ecx : ListCell *lop; : ListCell *lip; : : /* Sort join qual clauses into best execution order */ : /* NB: do NOT reorder the mergeclauses */ : joinclauses = order_qual_clauses(root, best_path->jpath.joinrestrictinfo); 0.00 : 618b97: 48 89 c7 mov %rax,%rdi 0.00 : 618b9a: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jpath.jointype)) 0.00 : 618b9e: b8 2e 00 00 00 mov $0x2e,%eax 0.00 : 618ba3: d3 f8 sar %cl,%eax 0.00 : 618ba5: a8 01 test $0x1,%al 0.00 : 618ba7: 0f 85 7a 03 00 00 jne 618f27 : &joinclauses, &otherclauses); : } : else : { : /* We can treat all clauses alike for an inner join */ : joinclauses = extract_actual_clauses(joinclauses, false); 0.00 : 618bad: 31 f6 xor %esi,%esi 0.00 : 618baf: e8 9c dc 01 00 callq 636850 : otherclauses = NIL; 0.00 : 618bb4: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 618bbb: 00 : &joinclauses, &otherclauses); : } : else : { : /* We can treat all clauses alike for an inner join */ : joinclauses = extract_actual_clauses(joinclauses, false); 0.00 : 618bbc: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* : * Remove the mergeclauses from the list of join qual clauses, leaving the : * list of quals that must be checked as qpquals. : */ : mergeclauses = get_actual_clauses(best_path->path_mergeclauses); 0.00 : 618bc0: 49 8b 7f 58 mov 0x58(%r15),%rdi 0.00 : 618bc4: e8 37 dd 01 00 callq 636900 : joinclauses = list_difference(joinclauses, mergeclauses); 0.00 : 618bc9: 48 8b 7d d0 mov -0x30(%rbp),%rdi : : /* : * Remove the mergeclauses from the list of join qual clauses, leaving the : * list of quals that must be checked as qpquals. : */ : mergeclauses = get_actual_clauses(best_path->path_mergeclauses); 0.00 : 618bcd: 48 89 c6 mov %rax,%rsi : joinclauses = list_difference(joinclauses, mergeclauses); 0.00 : 618bd0: e8 7b 98 fc ff callq 5e2450 : : /* : * Replace any outer-relation variables with nestloop params. There : * should not be any in the mergeclauses. : */ : if (best_path->jpath.path.param_info) 0.00 : 618bd5: 49 83 7f 10 00 cmpq $0x0,0x10(%r15) : /* : * Remove the mergeclauses from the list of join qual clauses, leaving the : * list of quals that must be checked as qpquals. : */ : mergeclauses = get_actual_clauses(best_path->path_mergeclauses); : joinclauses = list_difference(joinclauses, mergeclauses); 0.00 : 618bda: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* : * Replace any outer-relation variables with nestloop params. There : * should not be any in the mergeclauses. : */ : if (best_path->jpath.path.param_info) 0.00 : 618bde: 74 27 je 618c07 : */ : static Node * : replace_nestloop_params(PlannerInfo *root, Node *expr) : { : /* No setup needed for tree walk, so away we go */ : return replace_nestloop_params_mutator(expr, root); 0.00 : 618be0: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 618be7: 48 89 c7 mov %rax,%rdi 0.00 : 618bea: e8 c1 ce ff ff callq 615ab0 0.00 : 618bef: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 618bf3: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi : * Replace any outer-relation variables with nestloop params. There : * should not be any in the mergeclauses. : */ : if (best_path->jpath.path.param_info) : { : joinclauses = (List *) 0.00 : 618bfa: 48 89 45 d0 mov %rax,-0x30(%rbp) : */ : static Node * : replace_nestloop_params(PlannerInfo *root, Node *expr) : { : /* No setup needed for tree walk, so away we go */ : return replace_nestloop_params_mutator(expr, root); 0.00 : 618bfe: e8 ad ce ff ff callq 615ab0 : */ : if (best_path->jpath.path.param_info) : { : joinclauses = (List *) : replace_nestloop_params(root, (Node *) joinclauses); : otherclauses = (List *) 0.00 : 618c03: 48 89 45 c8 mov %rax,-0x38(%rbp) : /* : * Rearrange mergeclauses, if needed, so that the outer variable is always : * on the left; mark the mergeclause restrictinfos with correct : * outer_is_left status. : */ : mergeclauses = get_switched_clauses(best_path->path_mergeclauses, 0.00 : 618c07: 49 8b 47 40 mov 0x40(%r15),%rax 0.00 : 618c0b: 49 8b 7f 58 mov 0x58(%r15),%rdi 0.00 : 618c0f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 618c13: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 618c17: e8 34 d3 ff ff callq 615f50 : : /* : * Create explicit sort nodes for the outer and inner paths if necessary. : * Make sure there are no excess columns in the inputs if sorting. : */ : if (best_path->outersortkeys) 0.00 : 618c1c: 49 83 7f 60 00 cmpq $0x0,0x60(%r15) : /* : * Rearrange mergeclauses, if needed, so that the outer variable is always : * on the left; mark the mergeclause restrictinfos with correct : * outer_is_left status. : */ : mergeclauses = get_switched_clauses(best_path->path_mergeclauses, 0.00 : 618c21: 48 89 45 b0 mov %rax,-0x50(%rbp) : : /* : * Create explicit sort nodes for the outer and inner paths if necessary. : * Make sure there are no excess columns in the inputs if sorting. : */ : if (best_path->outersortkeys) 0.00 : 618c25: 0f 84 b9 05 00 00 je 6191e4 : { : disuse_physical_tlist(root, outer_plan, best_path->jpath.outerjoinpath); 0.00 : 618c2b: 49 8b 57 40 mov 0x40(%r15),%rdx 0.00 : 618c2f: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 618c36: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 618c3d: e8 4e d1 ff ff callq 615d90 : outer_plan = (Plan *) 0.00 : 618c42: 49 8b 57 60 mov 0x60(%r15),%rdx 0.00 : 618c46: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 618c4d: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 618c54: f2 0f 10 05 fc 98 1a movsd 0x1a98fc(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 618c5b: 00 0.00 : 618c5c: e8 7f cc ff ff callq 6158e0 : make_sort_from_pathkeys(root, : outer_plan, : best_path->outersortkeys, : -1.0); : outerpathkeys = best_path->outersortkeys; 0.00 : 618c61: 4d 8b 77 60 mov 0x60(%r15),%r14 : * Make sure there are no excess columns in the inputs if sorting. : */ : if (best_path->outersortkeys) : { : disuse_physical_tlist(root, outer_plan, best_path->jpath.outerjoinpath); : outer_plan = (Plan *) 0.00 : 618c65: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : outerpathkeys = best_path->outersortkeys; : } : else : outerpathkeys = best_path->jpath.outerjoinpath->pathkeys; : : if (best_path->innersortkeys) 0.00 : 618c6c: 49 83 7f 68 00 cmpq $0x0,0x68(%r15) 0.00 : 618c71: 0f 84 60 05 00 00 je 6191d7 : { : disuse_physical_tlist(root, inner_plan, best_path->jpath.innerjoinpath); 0.00 : 618c77: 49 8b 57 48 mov 0x48(%r15),%rdx 0.00 : 618c7b: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 618c82: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 618c89: e8 02 d1 ff ff callq 615d90 : inner_plan = (Plan *) 0.00 : 618c8e: 49 8b 57 68 mov 0x68(%r15),%rdx 0.00 : 618c92: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 618c99: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 618ca0: f2 0f 10 05 b0 98 1a movsd 0x1a98b0(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 618ca7: 00 0.00 : 618ca8: e8 33 cc ff ff callq 6158e0 : make_sort_from_pathkeys(root, : inner_plan, : best_path->innersortkeys, : -1.0); : innerpathkeys = best_path->innersortkeys; 0.00 : 618cad: 4d 8b 6f 68 mov 0x68(%r15),%r13 : outerpathkeys = best_path->jpath.outerjoinpath->pathkeys; : : if (best_path->innersortkeys) : { : disuse_physical_tlist(root, inner_plan, best_path->jpath.innerjoinpath); : inner_plan = (Plan *) 0.00 : 618cb1: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : : /* : * If specified, add a materialize node to shield the inner plan from the : * need to handle mark/restore. : */ : if (best_path->materialize_inner) 0.00 : 618cb8: 41 80 7f 70 00 cmpb $0x0,0x70(%r15) 0.00 : 618cbd: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 618cc4: 48 89 4d b8 mov %rcx,-0x48(%rbp) 0.00 : 618cc8: 0f 85 8f 04 00 00 jne 61915d 0.00 : 618cce: 45 31 e4 xor %r12d,%r12d 0.00 : 618cd1: 31 db xor %ebx,%ebx 0.00 : 618cd3: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 0.00 : 618cd8: 74 10 je 618cea 0.00 : 618cda: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 618cde: 4c 63 61 04 movslq 0x4(%rcx),%r12 0.00 : 618ce2: 4a 8d 1c a5 00 00 00 lea 0x0(,%r12,4),%rbx 0.00 : 618ce9: 00 : * we need to be careful about the possibility of mergeclauses sharing a : * pathkey (compare find_mergeclauses_for_pathkeys()). : */ : nClauses = list_length(mergeclauses); : Assert(nClauses == list_length(best_path->path_mergeclauses)); : mergefamilies = (Oid *) palloc(nClauses * sizeof(Oid)); 0.00 : 618cea: 48 89 df mov %rbx,%rdi 0.00 : 618ced: e8 5e 00 18 00 callq 798d50 : mergecollations = (Oid *) palloc(nClauses * sizeof(Oid)); 0.00 : 618cf2: 48 89 df mov %rbx,%rdi : * we need to be careful about the possibility of mergeclauses sharing a : * pathkey (compare find_mergeclauses_for_pathkeys()). : */ : nClauses = list_length(mergeclauses); : Assert(nClauses == list_length(best_path->path_mergeclauses)); : mergefamilies = (Oid *) palloc(nClauses * sizeof(Oid)); 0.00 : 618cf5: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : mergecollations = (Oid *) palloc(nClauses * sizeof(Oid)); 0.00 : 618cfc: e8 4f 00 18 00 callq 798d50 : mergestrategies = (int *) palloc(nClauses * sizeof(int)); 0.00 : 618d01: 48 89 df mov %rbx,%rdi : * pathkey (compare find_mergeclauses_for_pathkeys()). : */ : nClauses = list_length(mergeclauses); : Assert(nClauses == list_length(best_path->path_mergeclauses)); : mergefamilies = (Oid *) palloc(nClauses * sizeof(Oid)); : mergecollations = (Oid *) palloc(nClauses * sizeof(Oid)); 0.00 : 618d04: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : mergestrategies = (int *) palloc(nClauses * sizeof(int)); 0.00 : 618d0b: e8 40 00 18 00 callq 798d50 : mergenullsfirst = (bool *) palloc(nClauses * sizeof(bool)); 0.00 : 618d10: 4c 89 e7 mov %r12,%rdi : */ : nClauses = list_length(mergeclauses); : Assert(nClauses == list_length(best_path->path_mergeclauses)); : mergefamilies = (Oid *) palloc(nClauses * sizeof(Oid)); : mergecollations = (Oid *) palloc(nClauses * sizeof(Oid)); : mergestrategies = (int *) palloc(nClauses * sizeof(int)); 0.00 : 618d13: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : mergenullsfirst = (bool *) palloc(nClauses * sizeof(bool)); 0.00 : 618d1a: e8 31 00 18 00 callq 798d50 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 618d1f: 45 31 c9 xor %r9d,%r9d 0.00 : 618d22: 4d 85 f6 test %r14,%r14 0.00 : 618d25: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 618d2c: 74 04 je 618d32 0.00 : 618d2e: 4d 8b 4e 08 mov 0x8(%r14),%r9 0.00 : 618d32: 45 31 c0 xor %r8d,%r8d 0.00 : 618d35: 4d 85 ed test %r13,%r13 0.00 : 618d38: 74 04 je 618d3e 0.00 : 618d3a: 4d 8b 45 08 mov 0x8(%r13),%r8 : : lop = list_head(outerpathkeys); : lip = list_head(innerpathkeys); : i = 0; : foreach(lc, best_path->path_mergeclauses) 0.00 : 618d3e: 49 8b 47 58 mov 0x58(%r15),%rax 0.00 : 618d42: 48 85 c0 test %rax,%rax 0.00 : 618d45: 0f 84 17 05 00 00 je 619262 0.00 : 618d4b: 4c 8b 50 08 mov 0x8(%rax),%r10 0.00 : 618d4f: 4d 85 d2 test %r10,%r10 0.00 : 618d52: 0f 84 0a 05 00 00 je 619262 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 618d58: 49 8b 02 mov (%r10),%rax : mergenullsfirst = (bool *) palloc(nClauses * sizeof(bool)); : : lop = list_head(outerpathkeys); : lip = list_head(innerpathkeys); : i = 0; : foreach(lc, best_path->path_mergeclauses) 0.00 : 618d5b: 45 31 db xor %r11d,%r11d : EquivalenceClass *ipeclass; : ListCell *l2; : : /* fetch outer/inner eclass from mergeclause */ : Assert(IsA(rinfo, RestrictInfo)); : if (rinfo->outer_is_left) 0.00 : 618d5e: 80 b8 a8 00 00 00 00 cmpb $0x0,0xa8(%rax) 0.00 : 618d65: 0f 84 6a 01 00 00 je 618ed5 0.00 : 618d6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * : * lop and lip reference the first as-yet-unused pathkey elements; : * it's okay to match them, or any element before them. If they're : * NULL then we have found all pathkey elements to be used. : */ : if (lop) 0.00 : 618d70: 4d 85 c9 test %r9,%r9 : : /* fetch outer/inner eclass from mergeclause */ : Assert(IsA(rinfo, RestrictInfo)); : if (rinfo->outer_is_left) : { : oeclass = rinfo->left_ec; 0.00 : 618d73: 48 8b 88 80 00 00 00 mov 0x80(%rax),%rcx : ieclass = rinfo->right_ec; 0.00 : 618d7a: 48 8b b8 88 00 00 00 mov 0x88(%rax),%rdi : * : * lop and lip reference the first as-yet-unused pathkey elements; : * it's okay to match them, or any element before them. If they're : * NULL then we have found all pathkey elements to be used. : */ : if (lop) 0.00 : 618d81: 0f 84 65 01 00 00 je 618eec : { : opathkey = (PathKey *) lfirst(lop); 0.00 : 618d87: 49 8b 31 mov (%r9),%rsi : opeclass = opathkey->pk_eclass; : if (oeclass == opeclass) 0.00 : 618d8a: 48 39 4e 08 cmp %rcx,0x8(%rsi) 0.00 : 618d8e: 0f 84 4c 02 00 00 je 618fe0 0.00 : 618d94: 4d 85 f6 test %r14,%r14 0.00 : 618d97: 0f 84 d4 01 00 00 je 618f71 0.00 : 618d9d: 49 8b 46 08 mov 0x8(%r14),%rax : lop = lnext(lop); : } : else : { : /* redundant clauses ... must match something before lop */ : foreach(l2, outerpathkeys) 0.00 : 618da1: 48 85 c0 test %rax,%rax 0.00 : 618da4: 0f 84 c7 01 00 00 je 618f71 : { : if (l2 == lop) 0.00 : 618daa: 4c 39 c8 cmp %r9,%rax 0.00 : 618dad: 0f 1f 00 nopl (%rax) 0.00 : 618db0: 75 24 jne 618dd6 0.00 : 618db2: e9 ba 01 00 00 jmpq 618f71 0.00 : 618db7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 618dbe: 00 00 : lop = lnext(lop); : } : else : { : /* redundant clauses ... must match something before lop */ : foreach(l2, outerpathkeys) 0.00 : 618dc0: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 618dc4: 48 85 c0 test %rax,%rax 0.00 : 618dc7: 0f 84 9b 01 00 00 je 618f68 : { : if (l2 == lop) 0.00 : 618dcd: 4c 39 c8 cmp %r9,%rax 0.00 : 618dd0: 0f 84 92 01 00 00 je 618f68 : break; : opathkey = (PathKey *) lfirst(l2); 0.00 : 618dd6: 48 8b 30 mov (%rax),%rsi : opeclass = opathkey->pk_eclass; 0.00 : 618dd9: 48 8b 56 08 mov 0x8(%rsi),%rdx : if (oeclass == opeclass) 0.00 : 618ddd: 48 39 d1 cmp %rdx,%rcx 0.00 : 618de0: 75 de jne 618dc0 : } : if (l2 == NULL) : elog(ERROR, "outer pathkeys do not match mergeclauses"); : } : : if (lip) 0.00 : 618de2: 4d 85 c0 test %r8,%r8 0.00 : 618de5: 0f 84 b5 01 00 00 je 618fa0 : { : ipathkey = (PathKey *) lfirst(lip); 0.00 : 618deb: 49 8b 08 mov (%r8),%rcx : ipeclass = ipathkey->pk_eclass; : if (ieclass == ipeclass) 0.00 : 618dee: 48 39 79 08 cmp %rdi,0x8(%rcx) 0.00 : 618df2: 0f 84 f8 01 00 00 je 618ff0 0.00 : 618df8: 4d 85 ed test %r13,%r13 0.00 : 618dfb: 0f 84 88 01 00 00 je 618f89 0.00 : 618e01: 49 8b 45 08 mov 0x8(%r13),%rax : lip = lnext(lip); : } : else : { : /* redundant clauses ... must match something before lip */ : foreach(l2, innerpathkeys) 0.00 : 618e05: 48 85 c0 test %rax,%rax 0.00 : 618e08: 0f 84 7b 01 00 00 je 618f89 : { : if (l2 == lip) 0.00 : 618e0e: 4c 39 c0 cmp %r8,%rax 0.00 : 618e11: 75 23 jne 618e36 0.00 : 618e13: e9 71 01 00 00 jmpq 618f89 0.00 : 618e18: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 618e1f: 00 : lip = lnext(lip); : } : else : { : /* redundant clauses ... must match something before lip */ : foreach(l2, innerpathkeys) 0.00 : 618e20: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 618e24: 48 85 c0 test %rax,%rax 0.00 : 618e27: 0f 84 53 01 00 00 je 618f80 : { : if (l2 == lip) 0.00 : 618e2d: 4c 39 c0 cmp %r8,%rax 0.00 : 618e30: 0f 84 4a 01 00 00 je 618f80 : break; : ipathkey = (PathKey *) lfirst(l2); 0.00 : 618e36: 48 8b 08 mov (%rax),%rcx : ipeclass = ipathkey->pk_eclass; 0.00 : 618e39: 48 8b 51 08 mov 0x8(%rcx),%rdx : if (ieclass == ipeclass) 0.00 : 618e3d: 48 39 d7 cmp %rdx,%rdi 0.00 : 618e40: 75 de jne 618e20 : if (l2 == NULL) : elog(ERROR, "inner pathkeys do not match mergeclauses"); : } : : /* pathkeys should match each other too (more debugging) */ : if (opathkey->pk_opfamily != ipathkey->pk_opfamily || 0.00 : 618e42: 8b 7e 10 mov 0x10(%rsi),%edi 0.00 : 618e45: 3b 79 10 cmp 0x10(%rcx),%edi 0.00 : 618e48: 0f 85 a6 02 00 00 jne 6190f4 0.00 : 618e4e: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 618e52: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 618e56: 8b 40 10 mov 0x10(%rax),%eax 0.00 : 618e59: 3b 42 10 cmp 0x10(%rdx),%eax 0.00 : 618e5c: 0f 85 92 02 00 00 jne 6190f4 0.00 : 618e62: 8b 46 14 mov 0x14(%rsi),%eax 0.00 : 618e65: 3b 41 14 cmp 0x14(%rcx),%eax 0.00 : 618e68: 0f 85 86 02 00 00 jne 6190f4 0.00 : 618e6e: 0f b6 46 18 movzbl 0x18(%rsi),%eax 0.00 : 618e72: 3a 41 18 cmp 0x18(%rcx),%al 0.00 : 618e75: 0f 85 79 02 00 00 jne 6190f4 : opathkey->pk_strategy != ipathkey->pk_strategy || : opathkey->pk_nulls_first != ipathkey->pk_nulls_first) : elog(ERROR, "left and right pathkeys do not match in mergejoin"); : : /* OK, save info for executor */ : mergefamilies[i] = opathkey->pk_opfamily; 0.00 : 618e7b: 48 8b 9d 78 ff ff ff mov -0x88(%rbp),%rbx 0.00 : 618e82: 49 63 d3 movslq %r11d,%rdx 0.00 : 618e85: 89 3c 93 mov %edi,(%rbx,%rdx,4) : mergecollations[i] = opathkey->pk_eclass->ec_collation; 0.00 : 618e88: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 618e8c: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 618e93: 8b 40 10 mov 0x10(%rax),%eax 0.00 : 618e96: 89 04 91 mov %eax,(%rcx,%rdx,4) : mergestrategies[i] = opathkey->pk_strategy; 0.00 : 618e99: 8b 46 14 mov 0x14(%rsi),%eax 0.00 : 618e9c: 48 8b 9d 68 ff ff ff mov -0x98(%rbp),%rbx 0.00 : 618ea3: 89 04 93 mov %eax,(%rbx,%rdx,4) : mergenullsfirst[i] = opathkey->pk_nulls_first; 0.00 : 618ea6: 0f b6 46 18 movzbl 0x18(%rsi),%eax 0.00 : 618eaa: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 618eb1: 88 04 11 mov %al,(%rcx,%rdx,1) : mergenullsfirst = (bool *) palloc(nClauses * sizeof(bool)); : : lop = list_head(outerpathkeys); : lip = list_head(innerpathkeys); : i = 0; : foreach(lc, best_path->path_mergeclauses) 0.00 : 618eb4: 4d 8b 52 08 mov 0x8(%r10),%r10 0.00 : 618eb8: 4d 85 d2 test %r10,%r10 0.00 : 618ebb: 0f 84 a1 03 00 00 je 619262 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 618ec1: 49 8b 02 mov (%r10),%rax : /* OK, save info for executor */ : mergefamilies[i] = opathkey->pk_opfamily; : mergecollations[i] = opathkey->pk_eclass->ec_collation; : mergestrategies[i] = opathkey->pk_strategy; : mergenullsfirst[i] = opathkey->pk_nulls_first; : i++; 0.00 : 618ec4: 41 83 c3 01 add $0x1,%r11d : EquivalenceClass *ipeclass; : ListCell *l2; : : /* fetch outer/inner eclass from mergeclause */ : Assert(IsA(rinfo, RestrictInfo)); : if (rinfo->outer_is_left) 0.00 : 618ec8: 80 b8 a8 00 00 00 00 cmpb $0x0,0xa8(%rax) 0.00 : 618ecf: 0f 85 9b fe ff ff jne 618d70 : * : * lop and lip reference the first as-yet-unused pathkey elements; : * it's okay to match them, or any element before them. If they're : * NULL then we have found all pathkey elements to be used. : */ : if (lop) 0.00 : 618ed5: 4d 85 c9 test %r9,%r9 : oeclass = rinfo->left_ec; : ieclass = rinfo->right_ec; : } : else : { : oeclass = rinfo->right_ec; 0.00 : 618ed8: 48 8b 88 88 00 00 00 mov 0x88(%rax),%rcx : ieclass = rinfo->left_ec; 0.00 : 618edf: 48 8b b8 80 00 00 00 mov 0x80(%rax),%rdi : * : * lop and lip reference the first as-yet-unused pathkey elements; : * it's okay to match them, or any element before them. If they're : * NULL then we have found all pathkey elements to be used. : */ : if (lop) 0.00 : 618ee6: 0f 85 9b fe ff ff jne 618d87 0.00 : 618eec: 4d 85 f6 test %r14,%r14 0.00 : 618eef: 0f 84 73 01 00 00 je 619068 0.00 : 618ef5: 49 8b 46 08 mov 0x8(%r14),%rax : else : { : /* redundant clauses ... must match some already-used pathkey */ : opathkey = NULL; : opeclass = NULL; : foreach(l2, outerpathkeys) 0.00 : 618ef9: 48 85 c0 test %rax,%rax 0.00 : 618efc: 75 18 jne 618f16 0.00 : 618efe: 66 90 xchg %ax,%ax 0.00 : 618f00: e9 63 01 00 00 jmpq 619068 0.00 : 618f05: 0f 1f 00 nopl (%rax) 0.00 : 618f08: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 618f0c: 48 85 c0 test %rax,%rax 0.00 : 618f0f: 90 nop 0.00 : 618f10: 0f 84 52 01 00 00 je 619068 : { : opathkey = (PathKey *) lfirst(l2); 0.00 : 618f16: 48 8b 30 mov (%rax),%rsi : opeclass = opathkey->pk_eclass; : if (oeclass == opeclass) 0.00 : 618f19: 48 3b 4e 08 cmp 0x8(%rsi),%rcx 0.00 : 618f1d: 0f 1f 00 nopl (%rax) 0.00 : 618f20: 75 e6 jne 618f08 0.00 : 618f22: e9 bb fe ff ff jmpq 618de2 : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jpath.jointype)) : { : extract_actual_join_clauses(joinclauses, 0.00 : 618f27: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 618f2b: 48 8d 75 d0 lea -0x30(%rbp),%rsi 0.00 : 618f2f: e8 7c d8 01 00 callq 6367b0 0.00 : 618f34: e9 87 fc ff ff jmpq 618bc0 : : /* Get the join qual clauses (in plain expression form) */ : /* Any pseudoconstant clauses are ignored here */ : if (IS_OUTER_JOIN(best_path->jointype)) : { : extract_actual_join_clauses(joinrestrictclauses, 0.00 : 618f39: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 618f3d: 48 8d 75 d0 lea -0x30(%rbp),%rsi 0.00 : 618f41: e8 6a d8 01 00 callq 6367b0 0.00 : 618f46: e9 ae f8 ff ff jmpq 6187f9 : &joinclauses, &otherclauses); : } : else : { : /* We can treat all clauses alike for an inner join */ : joinclauses = extract_actual_clauses(joinclauses, false); 0.00 : 618f4b: 31 f6 xor %esi,%esi 0.00 : 618f4d: e8 fe d8 01 00 callq 636850 : otherclauses = NIL; 0.00 : 618f52: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp) 0.00 : 618f59: 00 : &joinclauses, &otherclauses); : } : else : { : /* We can treat all clauses alike for an inner join */ : joinclauses = extract_actual_clauses(joinclauses, false); 0.00 : 618f5a: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 618f5e: 66 90 xchg %ax,%ax 0.00 : 618f60: e9 0d fa ff ff jmpq 618972 0.00 : 618f65: 0f 1f 00 nopl (%rax) : opathkey = (PathKey *) lfirst(l2); : opeclass = opathkey->pk_eclass; : if (oeclass == opeclass) : break; : } : if (oeclass != opeclass) 0.00 : 618f68: 48 39 d1 cmp %rdx,%rcx 0.00 : 618f6b: 0f 84 71 fe ff ff je 618de2 : elog(ERROR, "outer pathkeys do not match mergeclauses"); 0.00 : 618f71: ba b0 b2 89 00 mov $0x89b2b0,%edx 0.00 : 618f76: be fc 08 00 00 mov $0x8fc,%esi 0.00 : 618f7b: e9 f2 00 00 00 jmpq 619072 : ipathkey = (PathKey *) lfirst(l2); : ipeclass = ipathkey->pk_eclass; : if (ieclass == ipeclass) : break; : } : if (ieclass != ipeclass) 0.00 : 618f80: 48 39 d7 cmp %rdx,%rdi 0.00 : 618f83: 0f 84 b9 fe ff ff je 618e42 : elog(ERROR, "inner pathkeys do not match mergeclauses"); 0.00 : 618f89: ba b0 b2 89 00 mov $0x89b2b0,%edx 0.00 : 618f8e: be 25 09 00 00 mov $0x925,%esi 0.00 : 618f93: e9 0a 01 00 00 jmpq 6190a2 0.00 : 618f98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 618f9f: 00 0.00 : 618fa0: 4d 85 ed test %r13,%r13 0.00 : 618fa3: 0f 84 ef 00 00 00 je 619098 0.00 : 618fa9: 49 8b 45 08 mov 0x8(%r13),%rax : else : { : /* redundant clauses ... must match some already-used pathkey */ : ipathkey = NULL; : ipeclass = NULL; : foreach(l2, innerpathkeys) 0.00 : 618fad: 48 85 c0 test %rax,%rax 0.00 : 618fb0: 75 1b jne 618fcd 0.00 : 618fb2: e9 e1 00 00 00 jmpq 619098 0.00 : 618fb7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 618fbe: 00 00 0.00 : 618fc0: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 618fc4: 48 85 c0 test %rax,%rax 0.00 : 618fc7: 0f 84 cb 00 00 00 je 619098 : { : ipathkey = (PathKey *) lfirst(l2); 0.00 : 618fcd: 48 8b 08 mov (%rax),%rcx : ipeclass = ipathkey->pk_eclass; : if (ieclass == ipeclass) 0.00 : 618fd0: 48 3b 79 08 cmp 0x8(%rcx),%rdi 0.00 : 618fd4: 75 ea jne 618fc0 0.00 : 618fd6: e9 67 fe ff ff jmpq 618e42 0.00 : 618fdb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : opathkey = (PathKey *) lfirst(lop); : opeclass = opathkey->pk_eclass; : if (oeclass == opeclass) : { : /* fast path for typical case */ : lop = lnext(lop); 0.00 : 618fe0: 4d 8b 49 08 mov 0x8(%r9),%r9 0.00 : 618fe4: e9 f9 fd ff ff jmpq 618de2 0.00 : 618fe9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : ipathkey = (PathKey *) lfirst(lip); : ipeclass = ipathkey->pk_eclass; : if (ieclass == ipeclass) : { : /* fast path for typical case */ : lip = lnext(lip); 0.00 : 618ff0: 4d 8b 40 08 mov 0x8(%r8),%r8 0.00 : 618ff4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 618ff8: e9 45 fe ff ff jmpq 618e42 : * node, and move them from root->curOuterParams to the nestParams list. : */ : outerrelids = best_path->outerjoinpath->parent->relids; : nestParams = NIL; : prev = NULL; : for (cell = list_head(root->curOuterParams); cell; cell = next) 0.00 : 618ffd: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 619004: 00 0.00 : 619005: 0f 1f 00 nopl (%rax) : List *nestParams, : Plan *lefttree, : Plan *righttree, : JoinType jointype) : { : NestLoop *node = makeNode(NestLoop); 0.00 : 619008: 48 8b 3d 51 18 5a 00 mov 0x5a1851(%rip),%rdi # bba860 0.00 : 61900f: be 78 00 00 00 mov $0x78,%esi : } : else : prev = cell; : } : : join_plan = make_nestloop(tlist, 0.00 : 619014: 48 8b 5d c8 mov -0x38(%rbp),%rbx 0.00 : 619018: 45 8b 67 38 mov 0x38(%r15),%r12d 0.00 : 61901c: 4c 8b 6d d0 mov -0x30(%rbp),%r13 : List *nestParams, : Plan *lefttree, : Plan *righttree, : JoinType jointype) : { : NestLoop *node = makeNode(NestLoop); 0.00 : 619020: e8 eb fd 17 00 callq 798e10 0.00 : 619025: c7 00 7a 00 00 00 movl $0x7a,(%rax) : Plan *plan = &node->join.plan; : : /* cost should be inserted by caller */ : plan->targetlist = tlist; 0.00 : 61902b: 48 8b 55 a8 mov -0x58(%rbp),%rdx : plan->qual = otherclauses; 0.00 : 61902f: 48 89 58 30 mov %rbx,0x30(%rax) : { : NestLoop *node = makeNode(NestLoop); : Plan *plan = &node->join.plan; : : /* cost should be inserted by caller */ : plan->targetlist = tlist; 0.00 : 619033: 48 89 50 28 mov %rdx,0x28(%rax) : plan->qual = otherclauses; : plan->lefttree = lefttree; 0.00 : 619037: 48 8b 8d 50 ff ff ff mov -0xb0(%rbp),%rcx 0.00 : 61903e: 48 89 48 38 mov %rcx,0x38(%rax) : plan->righttree = righttree; 0.00 : 619042: 48 8b 9d 58 ff ff ff mov -0xa8(%rbp),%rbx : node->join.jointype = jointype; 0.00 : 619049: 44 89 60 60 mov %r12d,0x60(%rax) : node->join.joinqual = joinclauses; 0.00 : 61904d: 4c 89 68 68 mov %r13,0x68(%rax) : : /* cost should be inserted by caller */ : plan->targetlist = tlist; : plan->qual = otherclauses; : plan->lefttree = lefttree; : plan->righttree = righttree; 0.00 : 619051: 48 89 58 40 mov %rbx,0x40(%rax) : node->join.jointype = jointype; : node->join.joinqual = joinclauses; : node->nestParams = nestParams; /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/createplan.c:3637 100.00 : 619055: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 619059: 48 89 50 70 mov %rdx,0x70(%rax) 0.00 : 61905d: e9 b2 fa ff ff jmpq 618b14 0.00 : 619062: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : opeclass = opathkey->pk_eclass; : if (oeclass == opeclass) : break; : } : if (l2 == NULL) : elog(ERROR, "outer pathkeys do not match mergeclauses"); 0.00 : 619068: ba b0 b2 89 00 mov $0x89b2b0,%edx 0.00 : 61906d: be 0c 09 00 00 mov $0x90c,%esi 0.00 : 619072: bf 59 ac 89 00 mov $0x89ac59,%edi 0.00 : 619077: e8 a4 23 16 00 callq 77b420 0.00 : 61907c: be 58 af 89 00 mov $0x89af58,%esi 0.00 : 619081: bf 14 00 00 00 mov $0x14,%edi 0.00 : 619086: 31 c0 xor %eax,%eax 0.00 : 619088: e8 a3 21 16 00 callq 77b230 0.00 : 61908d: e8 3e 04 e5 ff callq 4694d0 0.00 : 619092: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ipeclass = ipathkey->pk_eclass; : if (ieclass == ipeclass) : break; : } : if (l2 == NULL) : elog(ERROR, "inner pathkeys do not match mergeclauses"); 0.00 : 619098: ba b0 b2 89 00 mov $0x89b2b0,%edx 0.00 : 61909d: be 35 09 00 00 mov $0x935,%esi 0.00 : 6190a2: bf 59 ac 89 00 mov $0x89ac59,%edi 0.00 : 6190a7: e8 74 23 16 00 callq 77b420 0.00 : 6190ac: be 88 af 89 00 mov $0x89af88,%esi 0.00 : 6190b1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6190b6: 31 c0 xor %eax,%eax 0.00 : 6190b8: e8 73 21 16 00 callq 77b230 0.00 : 6190bd: e8 0e 04 e5 ff callq 4694d0 : : outer_plan = create_plan_recurse(root, best_path->outerjoinpath); : : /* For a nestloop, include outer relids in curOuterRels for inner side */ : if (best_path->path.pathtype == T_NestLoop) : root->curOuterRels = bms_union(root->curOuterRels, 0.00 : 6190c2: 49 8b 47 40 mov 0x40(%r15),%rax 0.00 : 6190c6: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 6190ca: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 6190ce: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 6190d5: 48 8b b8 50 01 00 00 mov 0x150(%rax),%rdi 0.00 : 6190dc: e8 df a1 fc ff callq 5e32c0 0.00 : 6190e1: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 6190e8: 48 89 82 50 01 00 00 mov %rax,0x150(%rdx) 0.00 : 6190ef: e9 3c f6 ff ff jmpq 618730 : /* pathkeys should match each other too (more debugging) */ : if (opathkey->pk_opfamily != ipathkey->pk_opfamily || : opathkey->pk_eclass->ec_collation != ipathkey->pk_eclass->ec_collation || : opathkey->pk_strategy != ipathkey->pk_strategy || : opathkey->pk_nulls_first != ipathkey->pk_nulls_first) : elog(ERROR, "left and right pathkeys do not match in mergejoin"); 0.00 : 6190f4: ba b0 b2 89 00 mov $0x89b2b0,%edx 0.00 : 6190f9: be 3d 09 00 00 mov $0x93d,%esi 0.00 : 6190fe: bf 59 ac 89 00 mov $0x89ac59,%edi 0.00 : 619103: e8 18 23 16 00 callq 77b420 0.00 : 619108: be a8 a4 89 00 mov $0x89a4a8,%esi 0.00 : 61910d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 619112: 31 c0 xor %eax,%eax 0.00 : 619114: e8 17 21 16 00 callq 77b230 0.00 : 619119: e8 b2 03 e5 ff callq 4694d0 : : next = lnext(cell); : if (IsA(nlp->paramval, Var) && : bms_is_member(nlp->paramval->varno, outerrelids)) : { : root->curOuterParams = list_delete_cell(root->curOuterParams, 0.00 : 61911e: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 619125: 4c 89 f2 mov %r14,%rdx 0.00 : 619128: 48 89 de mov %rbx,%rsi 0.00 : 61912b: 48 8b b8 58 01 00 00 mov 0x158(%rax),%rdi 0.00 : 619132: e8 29 90 fc ff callq 5e2160 0.00 : 619137: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 61913e: 48 89 82 58 01 00 00 mov %rax,0x158(%rdx) : false)->ph_eval_at, : outerrelids)) : { : root->curOuterParams = list_delete_cell(root->curOuterParams, : cell, prev); : nestParams = lappend(nestParams, nlp); 0.00 : 619145: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 619149: 4c 89 e6 mov %r12,%rsi 0.00 : 61914c: 4c 89 f3 mov %r14,%rbx 0.00 : 61914f: e8 2c 8d fc ff callq 5e1e80 0.00 : 619154: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 619158: e9 1a f7 ff ff jmpq 618877 : } : : static Material * : make_material(Plan *lefttree) : { : Material *node = makeNode(Material); 0.00 : 61915d: 48 8b 3d fc 16 5a 00 mov 0x5a16fc(%rip),%rdi # bba860 0.00 : 619164: be 60 00 00 00 mov $0x60,%esi 0.00 : 619169: e8 a2 fc 17 00 callq 798e10 0.00 : 61916e: c7 00 7d 00 00 00 movl $0x7d,(%rax) : Plan *plan = &node->plan; : : /* cost should be inserted by caller */ : plan->targetlist = lefttree->targetlist; 0.00 : 619174: 48 8b 9d 58 ff ff ff mov -0xa8(%rbp),%rbx 0.00 : 61917b: 48 8b 53 28 mov 0x28(%rbx),%rdx : plan->qual = NIL; 0.00 : 61917f: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 619186: 00 : plan->lefttree = lefttree; 0.00 : 619187: 48 89 58 38 mov %rbx,0x38(%rax) : plan->righttree = NULL; 0.00 : 61918b: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 619192: 00 : { : Material *node = makeNode(Material); : Plan *plan = &node->plan; : : /* cost should be inserted by caller */ : plan->targetlist = lefttree->targetlist; 0.00 : 619193: 48 89 50 28 mov %rdx,0x28(%rax) : * If specified, add a materialize node to shield the inner plan from the : * need to handle mark/restore. : */ : if (best_path->materialize_inner) : { : Plan *matplan = (Plan *) make_material(inner_plan); 0.00 : 619197: 48 89 45 b8 mov %rax,-0x48(%rbp) : static void : copy_plan_costsize(Plan *dest, Plan *src) : { : if (src) : { : dest->startup_cost = src->startup_cost; 0.00 : 61919b: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 61919f: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 6191a3: 48 89 42 08 mov %rax,0x8(%rdx) : dest->total_cost = src->total_cost; 0.00 : 6191a7: f2 0f 10 4b 10 movsd 0x10(%rbx),%xmm1 0.00 : 6191ac: f2 0f 11 4a 10 movsd %xmm1,0x10(%rdx) : dest->plan_rows = src->plan_rows; 0.00 : 6191b1: f2 0f 10 43 18 movsd 0x18(%rbx),%xmm0 0.00 : 6191b6: f2 0f 11 42 18 movsd %xmm0,0x18(%rdx) : dest->plan_width = src->plan_width; 0.00 : 6191bb: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 6191be: 89 42 20 mov %eax,0x20(%rdx) : * We assume the materialize will not spill to disk, and therefore : * charge just cpu_operator_cost per tuple. (Keep this estimate in : * sync with final_cost_mergejoin.) : */ : copy_plan_costsize(matplan, inner_plan); : matplan->total_cost += cpu_operator_cost * matplan->plan_rows; 0.00 : 6191c1: f2 0f 59 05 c7 f3 54 mulsd 0x54f3c7(%rip),%xmm0 # b68590 0.00 : 6191c8: 00 0.00 : 6191c9: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 6191cd: f2 0f 11 4a 10 movsd %xmm1,0x10(%rdx) 0.00 : 6191d2: e9 f7 fa ff ff jmpq 618cce : best_path->innersortkeys, : -1.0); : innerpathkeys = best_path->innersortkeys; : } : else : innerpathkeys = best_path->jpath.innerjoinpath->pathkeys; 0.00 : 6191d7: 49 8b 47 48 mov 0x48(%r15),%rax 0.00 : 6191db: 4c 8b 68 30 mov 0x30(%rax),%r13 0.00 : 6191df: e9 d4 fa ff ff jmpq 618cb8 : best_path->outersortkeys, : -1.0); : outerpathkeys = best_path->outersortkeys; : } : else : outerpathkeys = best_path->jpath.outerjoinpath->pathkeys; 0.00 : 6191e4: 49 8b 47 40 mov 0x40(%r15),%rax 0.00 : 6191e8: 4c 8b 70 30 mov 0x30(%rax),%r14 0.00 : 6191ec: e9 7b fa ff ff jmpq 618c6c : { : OpExpr *clause = (OpExpr *) linitial(hashclauses); : Node *node; : : Assert(is_opclause(clause)); : node = (Node *) linitial(clause->args); 0.00 : 6191f1: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 6191f5: 31 d2 xor %edx,%edx 0.00 : 6191f7: 48 8b 00 mov (%rax),%rax 0.00 : 6191fa: 48 8b 40 20 mov 0x20(%rax),%rax 0.00 : 6191fe: 48 85 c0 test %rax,%rax 0.00 : 619201: 74 04 je 619207 0.00 : 619203: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 619207: 48 8b 0a mov (%rdx),%rcx : if (IsA(node, RelabelType)) 0.00 : 61920a: 81 39 41 01 00 00 cmpl $0x141,(%rcx) 0.00 : 619210: 0f 84 f3 00 00 00 je 619309 : node = (Node *) ((RelabelType *) node)->arg; : if (IsA(node, Var)) 0.00 : 619216: 81 39 2f 01 00 00 cmpl $0x12f,(%rcx) 0.00 : 61921c: 0f 85 fa f7 ff ff jne 618a1c : { : Var *var = (Var *) node; : RangeTblEntry *rte; : : rte = root->simple_rte_array[var->varno]; 0.00 : 619222: 48 8b 9d 48 ff ff ff mov -0xb8(%rbp),%rbx 0.00 : 619229: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 61922c: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 619230: 48 8b 04 d0 mov (%rax,%rdx,8),%rax : if (rte->rtekind == RTE_RELATION) 0.00 : 619234: 44 8b 58 04 mov 0x4(%rax),%r11d 0.00 : 619238: 45 85 db test %r11d,%r11d 0.00 : 61923b: 0f 85 db f7 ff ff jne 618a1c : { : skewTable = rte->relid; 0.00 : 619241: 8b 58 08 mov 0x8(%rax),%ebx : skewColumn = var->varattno; : skewInherit = rte->inh; 0.00 : 619244: 44 0f b6 a8 81 00 00 movzbl 0x81(%rax),%r13d 0.00 : 61924b: 00 : skewColType = var->vartype; 0.00 : 61924c: 8b 41 0c mov 0xc(%rcx),%eax : : rte = root->simple_rte_array[var->varno]; : if (rte->rtekind == RTE_RELATION) : { : skewTable = rte->relid; : skewColumn = var->varattno; 0.00 : 61924f: 44 0f b7 61 08 movzwl 0x8(%rcx),%r12d : skewInherit = rte->inh; : skewColType = var->vartype; 0.00 : 619254: 89 45 8c mov %eax,-0x74(%rbp) : skewColTypmod = var->vartypmod; 0.00 : 619257: 8b 49 10 mov 0x10(%rcx),%ecx 0.00 : 61925a: 89 4d 88 mov %ecx,-0x78(%rbp) 0.00 : 61925d: e9 d0 f7 ff ff jmpq 618a32 : bool *mergenullsfirst, : Plan *lefttree, : Plan *righttree, : JoinType jointype) : { : MergeJoin *node = makeNode(MergeJoin); 0.00 : 619262: 48 8b 3d f7 15 5a 00 mov 0x5a15f7(%rip),%rdi # bba860 0.00 : 619269: be 98 00 00 00 mov $0x98,%esi : */ : : /* : * Now we can build the mergejoin node. : */ : join_plan = make_mergejoin(tlist, 0.00 : 61926e: 48 8b 5d c8 mov -0x38(%rbp),%rbx 0.00 : 619272: 45 8b 67 38 mov 0x38(%r15),%r12d 0.00 : 619276: 4c 8b 6d d0 mov -0x30(%rbp),%r13 : bool *mergenullsfirst, : Plan *lefttree, : Plan *righttree, : JoinType jointype) : { : MergeJoin *node = makeNode(MergeJoin); 0.00 : 61927a: e8 91 fb 17 00 callq 798e10 0.00 : 61927f: c7 00 7b 00 00 00 movl $0x7b,(%rax) : Plan *plan = &node->join.plan; : : /* cost should be inserted by caller */ : plan->targetlist = tlist; 0.00 : 619285: 48 8b 55 80 mov -0x80(%rbp),%rdx : plan->qual = otherclauses; 0.00 : 619289: 48 89 58 30 mov %rbx,0x30(%rax) : { : MergeJoin *node = makeNode(MergeJoin); : Plan *plan = &node->join.plan; : : /* cost should be inserted by caller */ : plan->targetlist = tlist; 0.00 : 61928d: 48 89 50 28 mov %rdx,0x28(%rax) : plan->qual = otherclauses; : plan->lefttree = lefttree; 0.00 : 619291: 48 8b 8d 50 ff ff ff mov -0xb0(%rbp),%rcx 0.00 : 619298: 48 89 48 38 mov %rcx,0x38(%rax) : plan->righttree = righttree; 0.00 : 61929c: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 6192a0: 48 89 58 40 mov %rbx,0x40(%rax) : node->mergeclauses = mergeclauses; 0.00 : 6192a4: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 6192a8: 48 89 50 70 mov %rdx,0x70(%rax) : node->mergeFamilies = mergefamilies; 0.00 : 6192ac: 48 8b 8d 78 ff ff ff mov -0x88(%rbp),%rcx 0.00 : 6192b3: 48 89 48 78 mov %rcx,0x78(%rax) : node->mergeCollations = mergecollations; 0.00 : 6192b7: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx 0.00 : 6192be: 48 89 98 80 00 00 00 mov %rbx,0x80(%rax) : node->mergeStrategies = mergestrategies; 0.00 : 6192c5: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 6192cc: 48 89 90 88 00 00 00 mov %rdx,0x88(%rax) : node->mergeNullsFirst = mergenullsfirst; 0.00 : 6192d3: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx : node->join.jointype = jointype; 0.00 : 6192da: 44 89 60 60 mov %r12d,0x60(%rax) : node->join.joinqual = joinclauses; 0.00 : 6192de: 4c 89 68 68 mov %r13,0x68(%rax) : plan->righttree = righttree; : node->mergeclauses = mergeclauses; : node->mergeFamilies = mergefamilies; : node->mergeCollations = mergecollations; : node->mergeStrategies = mergestrategies; : node->mergeNullsFirst = mergenullsfirst; 0.00 : 6192e2: 48 89 88 90 00 00 00 mov %rcx,0x90(%rax) 0.00 : 6192e9: e9 26 f8 ff ff jmpq 618b14 : dest->plan_rows = src->plan_rows; : dest->plan_width = src->plan_width; : } : else : { : dest->startup_cost = 0; 0.00 : 6192ee: 31 c0 xor %eax,%eax : dest->total_cost = 0; : dest->plan_rows = 0; : dest->plan_width = 0; 0.00 : 6192f0: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 6192f7: 00 : dest->plan_rows = src->plan_rows; : dest->plan_width = src->plan_width; : } : else : { : dest->startup_cost = 0; 0.00 : 6192f8: 49 89 46 08 mov %rax,0x8(%r14) : dest->total_cost = 0; 0.00 : 6192fc: 49 89 46 10 mov %rax,0x10(%r14) : dest->plan_rows = 0; 0.00 : 619300: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 619304: e9 77 f7 ff ff jmpq 618a80 : Node *node; : : Assert(is_opclause(clause)); : node = (Node *) linitial(clause->args); : if (IsA(node, RelabelType)) : node = (Node *) ((RelabelType *) node)->arg; 0.00 : 619309: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 61930d: e9 04 ff ff ff jmpq 619216 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/initsplan.c:184 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000619840 : : * be true before deconstruct_jointree begins, and false after that.) : */ : void : add_vars_to_targetlist(PlannerInfo *root, List *vars, : Relids where_needed, bool create_new_ph) : { 0.00 : 619840: 55 push %rbp 0.00 : 619841: 48 89 e5 mov %rsp,%rbp 0.00 : 619844: 41 57 push %r15 0.00 : 619846: 49 89 d7 mov %rdx,%r15 0.00 : 619849: 41 56 push %r14 0.00 : 61984b: 41 55 push %r13 0.00 : 61984d: 41 54 push %r12 0.00 : 61984f: 53 push %rbx 0.00 : 619850: 48 83 ec 18 sub $0x18,%rsp : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 619854: 48 85 f6 test %rsi,%rsi 0.00 : 619857: 48 89 7d d0 mov %rdi,-0x30(%rbp) 0.00 : 61985b: 0f 84 c7 00 00 00 je 619928 0.00 : 619861: 4c 8b 66 08 mov 0x8(%rsi),%r12 : ListCell *temp; : : Assert(!bms_is_empty(where_needed)); : : foreach(temp, vars) 0.00 : 619865: 4d 85 e4 test %r12,%r12 0.00 : 619868: 0f 84 ba 00 00 00 je 619928 : } : else if (IsA(node, PlaceHolderVar)) : { : PlaceHolderVar *phv = (PlaceHolderVar *) node; : PlaceHolderInfo *phinfo = find_placeholder_info(root, phv, : create_new_ph); 0.00 : 61986e: 0f be c1 movsbl %cl,%eax 0.00 : 619871: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : 619874: eb 41 jmp 6198b7 0.00 : 619876: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 61987d: 00 00 00 : copyObject(var)); : } : rel->attr_needed[attno] = bms_add_members(rel->attr_needed[attno], : where_needed); : } : else if (IsA(node, PlaceHolderVar)) 0.00 : 619880: 3d 0c 02 00 00 cmp $0x20c,%eax 0.00 : 619885: 0f 85 ac 00 00 00 jne 619937 : { : PlaceHolderVar *phv = (PlaceHolderVar *) node; : PlaceHolderInfo *phinfo = find_placeholder_info(root, phv, : create_new_ph); 0.00 : 61988b: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 61988e: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 619892: 48 89 de mov %rbx,%rsi 0.00 : 619895: e8 16 8b 01 00 callq 6323b0 : : phinfo->ph_needed = bms_add_members(phinfo->ph_needed, 0.00 : 61989a: 48 8b 78 20 mov 0x20(%rax),%rdi : } : else if (IsA(node, PlaceHolderVar)) : { : PlaceHolderVar *phv = (PlaceHolderVar *) node; : PlaceHolderInfo *phinfo = find_placeholder_info(root, phv, : create_new_ph); 0.00 : 61989e: 48 89 c3 mov %rax,%rbx : : phinfo->ph_needed = bms_add_members(phinfo->ph_needed, 0.00 : 6198a1: 4c 89 fe mov %r15,%rsi 0.00 : 6198a4: e8 b7 98 fc ff callq 5e3160 0.00 : 6198a9: 48 89 43 20 mov %rax,0x20(%rbx) : { : ListCell *temp; : : Assert(!bms_is_empty(where_needed)); : : foreach(temp, vars) 0.00 : 6198ad: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 6198b2: 4d 85 e4 test %r12,%r12 0.00 : 6198b5: 74 71 je 619928 : { : Node *node = (Node *) lfirst(temp); 0.00 : 6198b7: 49 8b 1c 24 mov (%r12),%rbx : : if (IsA(node, Var)) 0.00 : 6198bb: 8b 03 mov (%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/initsplan.c:184 100.00 : 6198bd: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 6198c2: 75 bc jne 619880 : { : Var *var = (Var *) node; : RelOptInfo *rel = find_base_rel(root, var->varno); 0.00 : 6198c4: 8b 73 04 mov 0x4(%rbx),%esi 0.00 : 6198c7: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 6198cb: e8 30 c2 01 00 callq 635b00 : int attno = var->varattno; : : if (bms_is_subset(where_needed, rel->relids)) 0.00 : 6198d0: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 6198d4: 4c 89 ff mov %r15,%rdi : Node *node = (Node *) lfirst(temp); : : if (IsA(node, Var)) : { : Var *var = (Var *) node; : RelOptInfo *rel = find_base_rel(root, var->varno); 0.00 : 6198d7: 49 89 c6 mov %rax,%r14 : int attno = var->varattno; 0.00 : 6198da: 44 0f b7 6b 08 movzwl 0x8(%rbx),%r13d : : if (bms_is_subset(where_needed, rel->relids)) 0.00 : 6198df: e8 3c 8e fc ff callq 5e2720 0.00 : 6198e4: 84 c0 test %al,%al 0.00 : 6198e6: 75 c5 jne 6198ad : continue; : Assert(attno >= rel->min_attr && attno <= rel->max_attr); : attno -= rel->min_attr; : if (rel->attr_needed[attno] == NULL) 0.00 : 6198e8: 41 0f bf 56 64 movswl 0x64(%r14),%edx : : if (IsA(node, Var)) : { : Var *var = (Var *) node; : RelOptInfo *rel = find_base_rel(root, var->varno); : int attno = var->varattno; 0.00 : 6198ed: 41 0f bf c5 movswl %r13w,%eax : : if (bms_is_subset(where_needed, rel->relids)) : continue; : Assert(attno >= rel->min_attr && attno <= rel->max_attr); : attno -= rel->min_attr; : if (rel->attr_needed[attno] == NULL) 0.00 : 6198f1: 29 d0 sub %edx,%eax 0.00 : 6198f3: 48 98 cltq 0.00 : 6198f5: 4c 8d 04 c5 00 00 00 lea 0x0(,%rax,8),%r8 0.00 : 6198fc: 00 0.00 : 6198fd: 4d 89 c5 mov %r8,%r13 0.00 : 619900: 4d 03 6e 68 add 0x68(%r14),%r13 0.00 : 619904: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 619908: 48 85 ff test %rdi,%rdi 0.00 : 61990b: 74 56 je 619963 : /* Variable not yet requested, so add to reltargetlist */ : /* XXX is copyObject necessary here? */ : rel->reltargetlist = lappend(rel->reltargetlist, : copyObject(var)); : } : rel->attr_needed[attno] = bms_add_members(rel->attr_needed[attno], 0.00 : 61990d: 4c 89 fe mov %r15,%rsi 0.00 : 619910: e8 4b 98 fc ff callq 5e3160 0.00 : 619915: 49 89 45 00 mov %rax,0x0(%r13) : { : ListCell *temp; : : Assert(!bms_is_empty(where_needed)); : : foreach(temp, vars) 0.00 : 619919: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61991e: 4d 85 e4 test %r12,%r12 0.00 : 619921: 75 94 jne 6198b7 0.00 : 619923: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : where_needed); : } : else : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : } : } 0.00 : 619928: 48 83 c4 18 add $0x18,%rsp 0.00 : 61992c: 5b pop %rbx 0.00 : 61992d: 41 5c pop %r12 0.00 : 61992f: 41 5d pop %r13 0.00 : 619931: 41 5e pop %r14 0.00 : 619933: 41 5f pop %r15 0.00 : 619935: c9 leaveq 0.00 : 619936: c3 retq : : phinfo->ph_needed = bms_add_members(phinfo->ph_needed, : where_needed); : } : else : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); 0.00 : 619937: ba 80 b4 89 00 mov $0x89b480,%edx 0.00 : 61993c: be d6 00 00 00 mov $0xd6,%esi 0.00 : 619941: bf 03 b3 89 00 mov $0x89b303,%edi 0.00 : 619946: e8 d5 1a 16 00 callq 77b420 0.00 : 61994b: 8b 13 mov (%rbx),%edx 0.00 : 61994d: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 619952: bf 14 00 00 00 mov $0x14,%edi 0.00 : 619957: 31 c0 xor %eax,%eax 0.00 : 619959: e8 d2 18 16 00 callq 77b230 0.00 : 61995e: e8 6d fb e4 ff callq 4694d0 : attno -= rel->min_attr; : if (rel->attr_needed[attno] == NULL) : { : /* Variable not yet requested, so add to reltargetlist */ : /* XXX is copyObject necessary here? */ : rel->reltargetlist = lappend(rel->reltargetlist, 0.00 : 619963: 48 89 df mov %rbx,%rdi 0.00 : 619966: 4c 89 45 c0 mov %r8,-0x40(%rbp) 0.00 : 61996a: e8 21 a8 fc ff callq 5e4190 0.00 : 61996f: 49 8b 7e 20 mov 0x20(%r14),%rdi 0.00 : 619973: 48 89 c6 mov %rax,%rsi 0.00 : 619976: e8 05 85 fc ff callq 5e1e80 0.00 : 61997b: 49 89 46 20 mov %rax,0x20(%r14) 0.00 : 61997f: 4c 8b 45 c0 mov -0x40(%rbp),%r8 0.00 : 619983: 4d 89 c5 mov %r8,%r13 0.00 : 619986: 4d 03 6e 68 add 0x68(%r14),%r13 0.00 : 61998a: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 61998e: e9 7a ff ff ff jmpq 61990d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/initsplan.c:699 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000619f40 : : */ : static List * : deconstruct_recurse(PlannerInfo *root, Node *jtnode, bool below_outer_join, : Relids *qualscope, Relids *inner_join_rels, : List **postponed_qual_list) : { 0.00 : 619f40: 55 push %rbp 0.00 : 619f41: 48 89 e5 mov %rsp,%rbp 0.00 : 619f44: 41 57 push %r15 0.00 : 619f46: 49 89 cf mov %rcx,%r15 0.00 : 619f49: 41 56 push %r14 0.00 : 619f4b: 41 55 push %r13 0.00 : 619f4d: 41 54 push %r12 0.00 : 619f4f: 53 push %rbx 0.00 : 619f50: 48 81 ec e8 00 00 00 sub $0xe8,%rsp : List *joinlist; : : if (jtnode == NULL) 0.00 : 619f57: 48 85 f6 test %rsi,%rsi : */ : static List * : deconstruct_recurse(PlannerInfo *root, Node *jtnode, bool below_outer_join, : Relids *qualscope, Relids *inner_join_rels, : List **postponed_qual_list) : { 0.00 : 619f5a: 48 89 bd 38 ff ff ff mov %rdi,-0xc8(%rbp) 0.00 : 619f61: 48 89 b5 30 ff ff ff mov %rsi,-0xd0(%rbp) 0.00 : 619f68: 4c 89 85 20 ff ff ff mov %r8,-0xe0(%rbp) 0.00 : 619f6f: 4c 89 8d 18 ff ff ff mov %r9,-0xe8(%rbp) 0.00 : 619f76: 88 95 2f ff ff ff mov %dl,-0xd1(%rbp) : List *joinlist; : : if (jtnode == NULL) 0.00 : 619f7c: 0f 84 1f 0c 00 00 je 61aba1 : { : *qualscope = NULL; : *inner_join_rels = NULL; : return NIL; : } : if (IsA(jtnode, RangeTblRef)) 0.00 : 619f82: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 619f89: 8b 02 mov (%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/initsplan.c:699 100.00 : 619f8b: 3d 56 01 00 00 cmp $0x156,%eax 0.00 : 619f90: 0f 84 4a 07 00 00 je 61a6e0 : *qualscope = bms_make_singleton(varno); : /* A single baserel does not create an inner join */ : *inner_join_rels = NULL; : joinlist = list_make1(jtnode); : } : else if (IsA(jtnode, FromExpr)) 0.00 : 619f96: 3d 58 01 00 00 cmp $0x158,%eax 0.00 : 619f9b: 74 6b je 61a008 : false, below_outer_join, JOIN_INNER, : *qualscope, NULL, NULL, NULL, : postponed_qual_list); : } : } : else if (IsA(jtnode, JoinExpr)) 0.00 : 619f9d: 3d 57 01 00 00 cmp $0x157,%eax 0.00 : 619fa2: 0f 85 0f 0c 00 00 jne 61abb7 : * outer join, we create a join_info_list entry for the join. This : * will prevent quals above us in the join tree that use those rels : * from being pushed down below this level. (It's okay for upper : * quals to be pushed down to the outer side, however.) : */ : switch (j->jointype) 0.00 : 619fa8: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx : } : } : else if (IsA(jtnode, JoinExpr)) : { : JoinExpr *j = (JoinExpr *) jtnode; : List *child_postponed_quals = NIL; 0.00 : 619faf: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp) 0.00 : 619fb6: 00 : * outer join, we create a join_info_list entry for the join. This : * will prevent quals above us in the join tree that use those rels : * from being pushed down below this level. (It's okay for upper : * quals to be pushed down to the outer side, however.) : */ : switch (j->jointype) 0.00 : 619fb7: 83 7a 04 05 cmpl $0x5,0x4(%rdx) 0.00 : 619fbb: 76 3b jbe 619ff8 : nonnullable_rels = *qualscope; : nullable_rels = *qualscope; : break; : default: : /* JOIN_RIGHT was eliminated during reduce_outer_joins() */ : elog(ERROR, "unrecognized join type: %d", 0.00 : 619fbd: ba 40 b4 89 00 mov $0x89b440,%edx 0.00 : 619fc2: be 78 03 00 00 mov $0x378,%esi 0.00 : 619fc7: bf 03 b3 89 00 mov $0x89b303,%edi 0.00 : 619fcc: e8 4f 14 16 00 callq 77b420 0.00 : 619fd1: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 619fd8: be 39 17 87 00 mov $0x871739,%esi 0.00 : 619fdd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 619fe2: 31 c0 xor %eax,%eax 0.00 : 619fe4: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 619fe7: e8 44 12 16 00 callq 77b230 0.00 : 619fec: e8 df f4 e4 ff callq 4694d0 0.00 : 619ff1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * outer join, we create a join_info_list entry for the join. This : * will prevent quals above us in the join tree that use those rels : * from being pushed down below this level. (It's okay for upper : * quals to be pushed down to the outer side, however.) : */ : switch (j->jointype) 0.00 : 619ff8: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 619ffb: ff 24 c5 c0 b3 89 00 jmpq *0x89b3c0(,%rax,8) 0.00 : 61a002: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : joinlist = list_make1(jtnode); : } : else if (IsA(jtnode, FromExpr)) : { : FromExpr *f = (FromExpr *) jtnode; : List *child_postponed_quals = NIL; 0.00 : 61a008: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 61a00f: 00 : * First, recurse to handle child joins. We collapse subproblems into : * a single joinlist whenever the resulting joinlist wouldn't exceed : * from_collapse_limit members. Also, always collapse one-element : * subproblems, since that won't lengthen the joinlist anyway. : */ : *qualscope = NULL; 0.00 : 61a010: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61a017: 45 31 f6 xor %r14d,%r14d : *inner_join_rels = NULL; 0.00 : 61a01a: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 61a021: 48 c7 00 00 00 00 00 movq $0x0,(%rax) : joinlist = NIL; : remaining = list_length(f->fromlist); 0.00 : 61a028: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 61a02f: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 61a033: 48 85 d2 test %rdx,%rdx 0.00 : 61a036: 0f 84 e2 00 00 00 je 61a11e : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61a03c: 4c 8b 62 08 mov 0x8(%rdx),%r12 : foreach(l, f->fromlist) 0.00 : 61a040: 45 31 f6 xor %r14d,%r14d : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61a043: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 61a046: 4d 85 e4 test %r12,%r12 0.00 : 61a049: 0f 84 bc 00 00 00 je 61a10b 0.00 : 61a04f: 0f be 95 2f ff ff ff movsbl -0xd1(%rbp),%edx 0.00 : 61a056: 44 8d 68 ff lea -0x1(%rax),%r13d 0.00 : 61a05a: 45 31 f6 xor %r14d,%r14d 0.00 : 61a05d: 89 55 a4 mov %edx,-0x5c(%rbp) 0.00 : 61a060: eb 22 jmp 61a084 0.00 : 61a062: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : *qualscope = bms_add_members(*qualscope, sub_qualscope); : sub_members = list_length(sub_joinlist); : remaining--; : if (sub_members <= 1 || : list_length(joinlist) + sub_members + remaining <= from_collapse_limit) : joinlist = list_concat(joinlist, sub_joinlist); 0.00 : 61a068: 4c 89 f7 mov %r14,%rdi 0.00 : 61a06b: 48 89 de mov %rbx,%rsi : */ : *qualscope = NULL; : *inner_join_rels = NULL; : joinlist = NIL; : remaining = list_length(f->fromlist); : foreach(l, f->fromlist) 0.00 : 61a06e: 41 83 ed 01 sub $0x1,%r13d : *qualscope = bms_add_members(*qualscope, sub_qualscope); : sub_members = list_length(sub_joinlist); : remaining--; : if (sub_members <= 1 || : list_length(joinlist) + sub_members + remaining <= from_collapse_limit) : joinlist = list_concat(joinlist, sub_joinlist); 0.00 : 61a072: e8 49 85 fc ff callq 5e25c0 : */ : *qualscope = NULL; : *inner_join_rels = NULL; : joinlist = NIL; : remaining = list_length(f->fromlist); : foreach(l, f->fromlist) 0.00 : 61a077: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : *qualscope = bms_add_members(*qualscope, sub_qualscope); : sub_members = list_length(sub_joinlist); : remaining--; : if (sub_members <= 1 || : list_length(joinlist) + sub_members + remaining <= from_collapse_limit) : joinlist = list_concat(joinlist, sub_joinlist); 0.00 : 61a07c: 49 89 c6 mov %rax,%r14 : */ : *qualscope = NULL; : *inner_join_rels = NULL; : joinlist = NIL; : remaining = list_length(f->fromlist); : foreach(l, f->fromlist) 0.00 : 61a07f: 4d 85 e4 test %r12,%r12 0.00 : 61a082: 74 77 je 61a0fb : { : Relids sub_qualscope; : List *sub_joinlist; : int sub_members; : : sub_joinlist = deconstruct_recurse(root, lfirst(l), 0.00 : 61a084: 4c 8b 85 20 ff ff ff mov -0xe0(%rbp),%r8 0.00 : 61a08b: 8b 55 a4 mov -0x5c(%rbp),%edx 0.00 : 61a08e: 4c 8d 4d c8 lea -0x38(%rbp),%r9 0.00 : 61a092: 49 8b 34 24 mov (%r12),%rsi 0.00 : 61a096: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a09d: 48 8d 4d d0 lea -0x30(%rbp),%rcx 0.00 : 61a0a1: e8 9a fe ff ff callq 619f40 : below_outer_join, : &sub_qualscope, : inner_join_rels, : &child_postponed_quals); : *qualscope = bms_add_members(*qualscope, sub_qualscope); 0.00 : 61a0a6: 48 8b 75 d0 mov -0x30(%rbp),%rsi 0.00 : 61a0aa: 49 8b 3f mov (%r15),%rdi : { : Relids sub_qualscope; : List *sub_joinlist; : int sub_members; : : sub_joinlist = deconstruct_recurse(root, lfirst(l), 0.00 : 61a0ad: 48 89 c3 mov %rax,%rbx : below_outer_join, : &sub_qualscope, : inner_join_rels, : &child_postponed_quals); : *qualscope = bms_add_members(*qualscope, sub_qualscope); 0.00 : 61a0b0: e8 ab 90 fc ff callq 5e3160 0.00 : 61a0b5: 48 85 db test %rbx,%rbx 0.00 : 61a0b8: 49 89 07 mov %rax,(%r15) 0.00 : 61a0bb: 74 ab je 61a068 0.00 : 61a0bd: 8b 43 04 mov 0x4(%rbx),%eax : sub_members = list_length(sub_joinlist); : remaining--; : if (sub_members <= 1 || 0.00 : 61a0c0: 83 f8 01 cmp $0x1,%eax 0.00 : 61a0c3: 7e a3 jle 61a068 0.00 : 61a0c5: 31 d2 xor %edx,%edx 0.00 : 61a0c7: 4d 85 f6 test %r14,%r14 0.00 : 61a0ca: 74 04 je 61a0d0 0.00 : 61a0cc: 41 8b 56 04 mov 0x4(%r14),%edx 0.00 : 61a0d0: 41 8d 44 05 00 lea 0x0(%r13,%rax,1),%eax 0.00 : 61a0d5: 01 d0 add %edx,%eax 0.00 : 61a0d7: 3b 05 17 59 5a 00 cmp 0x5a5917(%rip),%eax # bbf9f4 0.00 : 61a0dd: 7e 89 jle 61a068 : list_length(joinlist) + sub_members + remaining <= from_collapse_limit) : joinlist = list_concat(joinlist, sub_joinlist); : else : joinlist = lappend(joinlist, sub_joinlist); 0.00 : 61a0df: 4c 89 f7 mov %r14,%rdi 0.00 : 61a0e2: 48 89 de mov %rbx,%rsi : */ : *qualscope = NULL; : *inner_join_rels = NULL; : joinlist = NIL; : remaining = list_length(f->fromlist); : foreach(l, f->fromlist) 0.00 : 61a0e5: 41 83 ed 01 sub $0x1,%r13d : remaining--; : if (sub_members <= 1 || : list_length(joinlist) + sub_members + remaining <= from_collapse_limit) : joinlist = list_concat(joinlist, sub_joinlist); : else : joinlist = lappend(joinlist, sub_joinlist); 0.00 : 61a0e9: e8 92 7d fc ff callq 5e1e80 : */ : *qualscope = NULL; : *inner_join_rels = NULL; : joinlist = NIL; : remaining = list_length(f->fromlist); : foreach(l, f->fromlist) 0.00 : 61a0ee: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : remaining--; : if (sub_members <= 1 || : list_length(joinlist) + sub_members + remaining <= from_collapse_limit) : joinlist = list_concat(joinlist, sub_joinlist); : else : joinlist = lappend(joinlist, sub_joinlist); 0.00 : 61a0f3: 49 89 c6 mov %rax,%r14 : */ : *qualscope = NULL; : *inner_join_rels = NULL; : joinlist = NIL; : remaining = list_length(f->fromlist); : foreach(l, f->fromlist) 0.00 : 61a0f6: 4d 85 e4 test %r12,%r12 0.00 : 61a0f9: 75 89 jne 61a084 0.00 : 61a0fb: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 61a102: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 61a106: 48 85 d2 test %rdx,%rdx 0.00 : 61a109: 74 13 je 61a11e : * all below it, so we should report inner_join_rels = qualscope. If : * there was exactly one element, we should (and already did) report : * whatever its inner_join_rels were. If there were no elements (is : * that possible?) the initialization before the loop fixed it. : */ : if (list_length(f->fromlist) > 1) 0.00 : 61a10b: 83 7a 04 01 cmpl $0x1,0x4(%rdx) 0.00 : 61a10f: 7e 0d jle 61a11e : *inner_join_rels = *qualscope; 0.00 : 61a111: 49 8b 07 mov (%r15),%rax 0.00 : 61a114: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : 61a11b: 48 89 02 mov %rax,(%rdx) : : /* : * Try to process any quals postponed by children. If they need : * further postponement, add them to my output postponed_qual_list. : */ : foreach(l, child_postponed_quals) 0.00 : 61a11e: 48 8b 45 c8 mov -0x38(%rbp),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61a122: 48 85 c0 test %rax,%rax 0.00 : 61a125: 0f 84 9e 00 00 00 je 61a1c9 0.00 : 61a12b: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 61a12f: 4d 85 e4 test %r12,%r12 0.00 : 61a132: 0f 84 91 00 00 00 je 61a1c9 : { : PostponedQual *pq = (PostponedQual *) lfirst(l); : : if (bms_is_subset(pq->relids, *qualscope)) : distribute_qual_to_rels(root, pq->qual, 0.00 : 61a138: 44 0f be ad 2f ff ff movsbl -0xd1(%rbp),%r13d 0.00 : 61a13f: ff 0.00 : 61a140: eb 4d jmp 61a18f 0.00 : 61a142: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61a148: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 61a14f: 00 00 0.00 : 61a151: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 61a158: 00 00 0.00 : 61a15a: 45 31 c0 xor %r8d,%r8d 0.00 : 61a15d: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 61a164: 00 00 0.00 : 61a166: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 61a16d: 00 0.00 : 61a16e: 31 d2 xor %edx,%edx 0.00 : 61a170: 4d 8b 0f mov (%r15),%r9 0.00 : 61a173: 48 8b 33 mov (%rbx),%rsi 0.00 : 61a176: 44 89 e9 mov %r13d,%ecx 0.00 : 61a179: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a180: e8 1b f8 ff ff callq 6199a0 : : /* : * Try to process any quals postponed by children. If they need : * further postponement, add them to my output postponed_qual_list. : */ : foreach(l, child_postponed_quals) 0.00 : 61a185: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61a18a: 4d 85 e4 test %r12,%r12 0.00 : 61a18d: 74 3a je 61a1c9 : { : PostponedQual *pq = (PostponedQual *) lfirst(l); 0.00 : 61a18f: 49 8b 1c 24 mov (%r12),%rbx : : if (bms_is_subset(pq->relids, *qualscope)) 0.00 : 61a193: 49 8b 37 mov (%r15),%rsi 0.00 : 61a196: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 61a19a: e8 81 85 fc ff callq 5e2720 0.00 : 61a19f: 84 c0 test %al,%al 0.00 : 61a1a1: 75 a5 jne 61a148 : distribute_qual_to_rels(root, pq->qual, : false, below_outer_join, JOIN_INNER, : *qualscope, NULL, NULL, NULL, : NULL); : else : *postponed_qual_list = lappend(*postponed_qual_list, pq); 0.00 : 61a1a3: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 61a1aa: 48 89 de mov %rbx,%rsi 0.00 : 61a1ad: 48 8b 39 mov (%rcx),%rdi 0.00 : 61a1b0: e8 cb 7c fc ff callq 5e1e80 0.00 : 61a1b5: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 61a1bc: 48 89 02 mov %rax,(%rdx) : : /* : * Try to process any quals postponed by children. If they need : * further postponement, add them to my output postponed_qual_list. : */ : foreach(l, child_postponed_quals) 0.00 : 61a1bf: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61a1c4: 4d 85 e4 test %r12,%r12 0.00 : 61a1c7: 75 c6 jne 61a18f : } : : /* : * Now process the top-level quals. : */ : foreach(l, (List *) f->quals) 0.00 : 61a1c9: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 61a1d0: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 61a1d4: 48 85 c0 test %rax,%rax 0.00 : 61a1d7: 74 60 je 61a239 0.00 : 61a1d9: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61a1dd: 48 85 db test %rbx,%rbx 0.00 : 61a1e0: 74 57 je 61a239 0.00 : 61a1e2: 44 0f be a5 2f ff ff movsbl -0xd1(%rbp),%r12d 0.00 : 61a1e9: ff 0.00 : 61a1ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : Node *qual = (Node *) lfirst(l); : : distribute_qual_to_rels(root, qual, 0.00 : 61a1f0: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : 61a1f7: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 61a1fe: 00 00 0.00 : 61a200: 45 31 c0 xor %r8d,%r8d 0.00 : 61a203: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 61a20a: 00 00 0.00 : 61a20c: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 61a213: 00 0.00 : 61a214: 31 d2 xor %edx,%edx 0.00 : 61a216: 4d 8b 0f mov (%r15),%r9 0.00 : 61a219: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a220: 44 89 e1 mov %r12d,%ecx 0.00 : 61a223: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 61a228: 48 8b 33 mov (%rbx),%rsi 0.00 : 61a22b: e8 70 f7 ff ff callq 6199a0 : } : : /* : * Now process the top-level quals. : */ : foreach(l, (List *) f->quals) 0.00 : 61a230: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61a234: 48 85 db test %rbx,%rbx 0.00 : 61a237: 75 b7 jne 61a1f0 : elog(ERROR, "unrecognized node type: %d", : (int) nodeTag(jtnode)); : joinlist = NIL; /* keep compiler quiet */ : } : return joinlist; : } 0.00 : 61a239: 48 81 c4 e8 00 00 00 add $0xe8,%rsp 0.00 : 61a240: 4c 89 f0 mov %r14,%rax 0.00 : 61a243: 5b pop %rbx 0.00 : 61a244: 41 5c pop %r12 0.00 : 61a246: 41 5d pop %r13 0.00 : 61a248: 41 5e pop %r14 0.00 : 61a24a: 41 5f pop %r15 0.00 : 61a24c: c9 leaveq 0.00 : 61a24d: c3 retq 0.00 : 61a24e: 66 90 xchg %ax,%ax : *inner_join_rels = bms_union(left_inners, right_inners); : nonnullable_rels = leftids; : nullable_rels = rightids; : break; : case JOIN_SEMI: : leftjoinlist = deconstruct_recurse(root, j->larg, 0.00 : 61a250: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 61a257: 44 0f be a5 2f ff ff movsbl -0xd1(%rbp),%r12d 0.00 : 61a25e: ff 0.00 : 61a25f: 48 8d 5d d0 lea -0x30(%rbp),%rbx 0.00 : 61a263: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a26a: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 61a26e: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : 61a272: 49 89 d9 mov %rbx,%r9 0.00 : 61a275: 48 8b 72 10 mov 0x10(%rdx),%rsi 0.00 : 61a279: 44 89 e2 mov %r12d,%edx 0.00 : 61a27c: e8 bf fc ff ff callq 619f40 0.00 : 61a281: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a288: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61a28f: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 61a293: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a29a: 4c 8d 45 b0 lea -0x50(%rbp),%r8 0.00 : 61a29e: 44 89 e2 mov %r12d,%edx 0.00 : 61a2a1: 49 89 d9 mov %rbx,%r9 0.00 : 61a2a4: 48 8b 70 18 mov 0x18(%rax),%rsi 0.00 : 61a2a8: e8 93 fc ff ff callq 619f40 : below_outer_join, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a2ad: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 61a2b1: 48 8b 7d c8 mov -0x38(%rbp),%rdi : case JOIN_SEMI: : leftjoinlist = deconstruct_recurse(root, j->larg, : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a2b5: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : below_outer_join, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a2bc: e8 ff 8f fc ff callq 5e32c0 : *inner_join_rels = bms_union(left_inners, right_inners); 0.00 : 61a2c1: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 61a2c5: 48 8b 7d b8 mov -0x48(%rbp),%rdi : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, : below_outer_join, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a2c9: 49 89 07 mov %rax,(%r15) : *inner_join_rels = bms_union(left_inners, right_inners); 0.00 : 61a2cc: e8 ef 8f fc ff callq 5e32c0 0.00 : 61a2d1: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : 61a2d8: 31 f6 xor %esi,%esi 0.00 : 61a2da: 48 89 02 mov %rax,(%rdx) 0.00 : 61a2dd: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 61a2e4: 00 00 00 00 : leftjoinlist = rightjoinlist = NIL; : break; : } : : /* Report all rels that will be nulled anywhere in the jointree */ : root->nullable_baserels = bms_add_members(root->nullable_baserels, 0.00 : 61a2e8: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 61a2ef: 48 8b 78 50 mov 0x50(%rax),%rdi 0.00 : 61a2f3: e8 68 8e fc ff callq 5e3160 0.00 : 61a2f8: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 61a2ff: 48 89 42 50 mov %rax,0x50(%rdx) : * further postponement, add them to my output postponed_qual_list. : * Quals that can be processed now must be included in my_quals, so : * that they'll be handled properly in make_outerjoininfo. : */ : my_quals = NIL; : foreach(l, child_postponed_quals) 0.00 : 61a303: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 61a307: 48 85 c0 test %rax,%rax 0.00 : 61a30a: 0f 84 20 08 00 00 je 61ab30 0.00 : 61a310: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 61a314: 4d 85 e4 test %r12,%r12 0.00 : 61a317: 0f 84 13 08 00 00 je 61ab30 0.00 : 61a31d: 45 31 ed xor %r13d,%r13d 0.00 : 61a320: eb 1e jmp 61a340 0.00 : 61a322: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : PostponedQual *pq = (PostponedQual *) lfirst(l); : : if (bms_is_subset(pq->relids, *qualscope)) : my_quals = lappend(my_quals, pq->qual); 0.00 : 61a328: 48 8b 33 mov (%rbx),%rsi 0.00 : 61a32b: 4c 89 ef mov %r13,%rdi 0.00 : 61a32e: e8 4d 7b fc ff callq 5e1e80 : * further postponement, add them to my output postponed_qual_list. : * Quals that can be processed now must be included in my_quals, so : * that they'll be handled properly in make_outerjoininfo. : */ : my_quals = NIL; : foreach(l, child_postponed_quals) 0.00 : 61a333: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : { : PostponedQual *pq = (PostponedQual *) lfirst(l); : : if (bms_is_subset(pq->relids, *qualscope)) : my_quals = lappend(my_quals, pq->qual); 0.00 : 61a338: 49 89 c5 mov %rax,%r13 : * further postponement, add them to my output postponed_qual_list. : * Quals that can be processed now must be included in my_quals, so : * that they'll be handled properly in make_outerjoininfo. : */ : my_quals = NIL; : foreach(l, child_postponed_quals) 0.00 : 61a33b: 4d 85 e4 test %r12,%r12 0.00 : 61a33e: 74 3a je 61a37a : { : PostponedQual *pq = (PostponedQual *) lfirst(l); 0.00 : 61a340: 49 8b 1c 24 mov (%r12),%rbx : : if (bms_is_subset(pq->relids, *qualscope)) 0.00 : 61a344: 49 8b 37 mov (%r15),%rsi 0.00 : 61a347: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 61a34b: e8 d0 83 fc ff callq 5e2720 0.00 : 61a350: 84 c0 test %al,%al 0.00 : 61a352: 75 d4 jne 61a328 : /* : * We should not be postponing any quals past an outer join. : * If this Assert fires, pull_up_subqueries() messed up. : */ : Assert(j->jointype == JOIN_INNER); : *postponed_qual_list = lappend(*postponed_qual_list, pq); 0.00 : 61a354: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 61a35b: 48 89 de mov %rbx,%rsi 0.00 : 61a35e: 48 8b 39 mov (%rcx),%rdi 0.00 : 61a361: e8 1a 7b fc ff callq 5e1e80 0.00 : 61a366: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 61a36d: 48 89 02 mov %rax,(%rdx) : * further postponement, add them to my output postponed_qual_list. : * Quals that can be processed now must be included in my_quals, so : * that they'll be handled properly in make_outerjoininfo. : */ : my_quals = NIL; : foreach(l, child_postponed_quals) 0.00 : 61a370: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61a375: 4d 85 e4 test %r12,%r12 0.00 : 61a378: 75 c6 jne 61a340 : Assert(j->jointype == JOIN_INNER); : *postponed_qual_list = lappend(*postponed_qual_list, pq); : } : } : /* list_concat is nondestructive of its second argument */ : my_quals = list_concat(my_quals, (List *) j->quals); 0.00 : 61a37a: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 61a381: 4c 89 ef mov %r13,%rdi : * distribute_qual_to_rels to think it is an outer join below us. : * : * Semijoins are a bit of a hybrid: we build a SpecialJoinInfo, but we : * want ojscope = NULL for distribute_qual_to_rels. : */ : if (j->jointype != JOIN_INNER) 0.00 : 61a384: 45 31 ed xor %r13d,%r13d : Assert(j->jointype == JOIN_INNER); : *postponed_qual_list = lappend(*postponed_qual_list, pq); : } : } : /* list_concat is nondestructive of its second argument */ : my_quals = list_concat(my_quals, (List *) j->quals); 0.00 : 61a387: 48 8b 71 28 mov 0x28(%rcx),%rsi 0.00 : 61a38b: e8 30 82 fc ff callq 5e25c0 0.00 : 61a390: 48 89 45 90 mov %rax,-0x70(%rbp) : * distribute_qual_to_rels to think it is an outer join below us. : * : * Semijoins are a bit of a hybrid: we build a SpecialJoinInfo, but we : * want ojscope = NULL for distribute_qual_to_rels. : */ : if (j->jointype != JOIN_INNER) 0.00 : 61a394: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61a39b: 44 8b 70 04 mov 0x4(%rax),%r14d 0.00 : 61a39f: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 61a3a6: 00 00 00 00 0.00 : 61a3aa: 45 85 f6 test %r14d,%r14d 0.00 : 61a3ad: 0f 85 5d 03 00 00 jne 61a710 0.00 : 61a3b3: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 61a3b8: 74 66 je 61a420 0.00 : 61a3ba: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 61a3be: 48 8b 59 08 mov 0x8(%rcx),%rbx : sjinfo = NULL; : ojscope = NULL; : } : : /* Process the JOIN's qual clauses */ : foreach(l, my_quals) 0.00 : 61a3c2: 48 85 db test %rbx,%rbx 0.00 : 61a3c5: 74 59 je 61a420 0.00 : 61a3c7: 44 0f be a5 2f ff ff movsbl -0xd1(%rbp),%r12d 0.00 : 61a3ce: ff 0.00 : 61a3cf: 90 nop : { : Node *qual = (Node *) lfirst(l); : : distribute_qual_to_rels(root, qual, 0.00 : 61a3d0: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 61a3d7: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 61a3de: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61a3e5: 4d 8b 0f mov (%r15),%r9 0.00 : 61a3e8: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a3ef: 44 8b 40 04 mov 0x4(%rax),%r8d 0.00 : 61a3f3: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 61a3f8: 31 d2 xor %edx,%edx 0.00 : 61a3fa: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 61a3ff: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 61a406: 00 00 0.00 : 61a408: 44 89 e1 mov %r12d,%ecx 0.00 : 61a40b: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 61a40f: 48 8b 33 mov (%rbx),%rsi 0.00 : 61a412: e8 89 f5 ff ff callq 6199a0 : sjinfo = NULL; : ojscope = NULL; : } : : /* Process the JOIN's qual clauses */ : foreach(l, my_quals) 0.00 : 61a417: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61a41b: 48 85 db test %rbx,%rbx 0.00 : 61a41e: 75 b0 jne 61a3d0 : ojscope, nonnullable_rels, NULL, : postponed_qual_list); : } : : /* Now we can add the SpecialJoinInfo to join_info_list */ : if (sjinfo) 0.00 : 61a420: 48 83 bd 60 ff ff ff cmpq $0x0,-0xa0(%rbp) 0.00 : 61a427: 00 0.00 : 61a428: 74 37 je 61a461 : { : root->join_info_list = lappend(root->join_info_list, sjinfo); 0.00 : 61a42a: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 61a431: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 61a438: 48 8b b8 b8 00 00 00 mov 0xb8(%rax),%rdi 0.00 : 61a43f: e8 3c 7a fc ff callq 5e1e80 0.00 : 61a444: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 61a44b: 48 89 82 b8 00 00 00 mov %rax,0xb8(%rdx) : /* Each time we do that, recheck placeholder eval levels */ : update_placeholder_eval_levels(root, sjinfo); 0.00 : 61a452: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 61a459: 48 89 d7 mov %rdx,%rdi 0.00 : 61a45c: e8 2f 7d 01 00 callq 632190 : /* : * Finally, compute the output joinlist. We fold subproblems together : * except at a FULL JOIN or where join_collapse_limit would be : * exceeded. : */ : if (j->jointype == JOIN_FULL) 0.00 : 61a461: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 61a468: 83 79 04 02 cmpl $0x2,0x4(%rcx) 0.00 : 61a46c: 0f 84 4e 06 00 00 je 61aac0 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61a472: 31 d2 xor %edx,%edx 0.00 : 61a474: 48 83 bd 50 ff ff ff cmpq $0x0,-0xb0(%rbp) 0.00 : 61a47b: 00 0.00 : 61a47c: 74 0a je 61a488 0.00 : 61a47e: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 61a485: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 61a488: 31 c0 xor %eax,%eax 0.00 : 61a48a: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 61a491: 00 0.00 : 61a492: 74 0a je 61a49e 0.00 : 61a494: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 61a49b: 8b 41 04 mov 0x4(%rcx),%eax : { : /* force the join order exactly at this node */ : joinlist = list_make1(list_make2(leftjoinlist, rightjoinlist)); : } : else if (list_length(leftjoinlist) + list_length(rightjoinlist) <= 0.00 : 61a49e: 01 d0 add %edx,%eax 0.00 : 61a4a0: 3b 05 4a 55 5a 00 cmp 0x5a554a(%rip),%eax # bbf9f0 0.00 : 61a4a6: 0f 8e 34 03 00 00 jle 61a7e0 0.00 : 61a4ac: 48 83 bd 50 ff ff ff cmpq $0x0,-0xb0(%rbp) 0.00 : 61a4b3: 00 0.00 : 61a4b4: 74 11 je 61a4c7 : /* can't combine, but needn't force join order above here */ : Node *leftpart, : *rightpart; : : /* avoid creating useless 1-element sublists */ : if (list_length(leftjoinlist) == 1) 0.00 : 61a4b6: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 61a4bd: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 61a4c1: 0f 84 29 06 00 00 je 61aaf0 : leftpart = (Node *) linitial(leftjoinlist); : else : leftpart = (Node *) leftjoinlist; 0.00 : 61a4c7: 48 8b 9d 50 ff ff ff mov -0xb0(%rbp),%rbx 0.00 : 61a4ce: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 61a4d5: 00 0.00 : 61a4d6: 74 11 je 61a4e9 : if (list_length(rightjoinlist) == 1) 0.00 : 61a4d8: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 61a4df: 83 79 04 01 cmpl $0x1,0x4(%rcx) 0.00 : 61a4e3: 0f 84 17 06 00 00 je 61ab00 : rightpart = (Node *) linitial(rightjoinlist); : else : rightpart = (Node *) rightjoinlist; 0.00 : 61a4e9: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi : joinlist = list_make2(leftpart, rightpart); 0.00 : 61a4f0: 31 f6 xor %esi,%esi 0.00 : 61a4f2: e8 59 73 fc ff callq 5e1850 0.00 : 61a4f7: 48 89 df mov %rbx,%rdi 0.00 : 61a4fa: 48 89 c6 mov %rax,%rsi 0.00 : 61a4fd: e8 4e 73 fc ff callq 5e1850 0.00 : 61a502: 49 89 c6 mov %rax,%r14 0.00 : 61a505: e9 2f fd ff ff jmpq 61a239 0.00 : 61a50a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * and we needn't account for it. : */ : nullable_rels = NULL; : break; : case JOIN_FULL: : leftjoinlist = deconstruct_recurse(root, j->larg, 0.00 : 61a510: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61a517: 48 8d 5d d0 lea -0x30(%rbp),%rbx 0.00 : 61a51b: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a522: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 61a526: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : 61a52a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 61a52f: 49 89 d9 mov %rbx,%r9 0.00 : 61a532: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 61a536: e8 05 fa ff ff callq 619f40 : true, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a53b: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx : * and we needn't account for it. : */ : nullable_rels = NULL; : break; : case JOIN_FULL: : leftjoinlist = deconstruct_recurse(root, j->larg, 0.00 : 61a542: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : true, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a549: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 61a54d: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a554: 4c 8d 45 b0 lea -0x50(%rbp),%r8 0.00 : 61a558: 49 89 d9 mov %rbx,%r9 0.00 : 61a55b: 48 8b 72 18 mov 0x18(%rdx),%rsi 0.00 : 61a55f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 61a564: e8 d7 f9 ff ff callq 619f40 : true, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a569: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 61a56d: 48 8b 7d c8 mov -0x38(%rbp),%rdi : case JOIN_FULL: : leftjoinlist = deconstruct_recurse(root, j->larg, : true, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a571: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : true, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a578: e8 43 8d fc ff callq 5e32c0 : *inner_join_rels = bms_union(left_inners, right_inners); 0.00 : 61a57d: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 61a581: 48 8b 7d b8 mov -0x48(%rbp),%rdi : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, : true, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a585: 49 89 07 mov %rax,(%r15) : *inner_join_rels = bms_union(left_inners, right_inners); 0.00 : 61a588: e8 33 8d fc ff callq 5e32c0 0.00 : 61a58d: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 61a594: 48 89 01 mov %rax,(%rcx) : /* each side is both outer and inner */ : nonnullable_rels = *qualscope; 0.00 : 61a597: 49 8b 07 mov (%r15),%rax 0.00 : 61a59a: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) 0.00 : 61a5a1: 48 89 c6 mov %rax,%rsi : nullable_rels = *qualscope; : break; 0.00 : 61a5a4: e9 3f fd ff ff jmpq 61a2e8 0.00 : 61a5a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* and it doesn't force anything to null, either */ : nullable_rels = NULL; : break; : case JOIN_LEFT: : case JOIN_ANTI: : leftjoinlist = deconstruct_recurse(root, j->larg, 0.00 : 61a5b0: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61a5b7: 0f be 95 2f ff ff ff movsbl -0xd1(%rbp),%edx 0.00 : 61a5be: 48 8d 5d d0 lea -0x30(%rbp),%rbx 0.00 : 61a5c2: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a5c9: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 61a5cd: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : 61a5d1: 49 89 d9 mov %rbx,%r9 0.00 : 61a5d4: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 61a5d8: e8 63 f9 ff ff callq 619f40 : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a5dd: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx : /* and it doesn't force anything to null, either */ : nullable_rels = NULL; : break; : case JOIN_LEFT: : case JOIN_ANTI: : leftjoinlist = deconstruct_recurse(root, j->larg, 0.00 : 61a5e4: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a5eb: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 61a5ef: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a5f6: 4c 8d 45 b0 lea -0x50(%rbp),%r8 0.00 : 61a5fa: 49 89 d9 mov %rbx,%r9 0.00 : 61a5fd: 48 8b 72 18 mov 0x18(%rdx),%rsi 0.00 : 61a601: ba 01 00 00 00 mov $0x1,%edx 0.00 : 61a606: e8 35 f9 ff ff callq 619f40 : true, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a60b: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 61a60f: 48 8b 7d c8 mov -0x38(%rbp),%rdi : case JOIN_ANTI: : leftjoinlist = deconstruct_recurse(root, j->larg, : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a613: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : true, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a61a: e8 a1 8c fc ff callq 5e32c0 : *inner_join_rels = bms_union(left_inners, right_inners); 0.00 : 61a61f: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 61a623: 48 8b 7d b8 mov -0x48(%rbp),%rdi : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, : true, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a627: 49 89 07 mov %rax,(%r15) : *inner_join_rels = bms_union(left_inners, right_inners); 0.00 : 61a62a: e8 91 8c fc ff callq 5e32c0 0.00 : 61a62f: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 61a636: 48 89 01 mov %rax,(%rcx) : nonnullable_rels = leftids; 0.00 : 61a639: 48 8b 45 c8 mov -0x38(%rbp),%rax : nullable_rels = rightids; 0.00 : 61a63d: 48 8b 75 c0 mov -0x40(%rbp),%rsi : true, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); : *inner_join_rels = bms_union(left_inners, right_inners); : nonnullable_rels = leftids; 0.00 : 61a641: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : nullable_rels = rightids; : break; 0.00 : 61a648: e9 9b fc ff ff jmpq 61a2e8 0.00 : 61a64d: 0f 1f 00 nopl (%rax) : * quals to be pushed down to the outer side, however.) : */ : switch (j->jointype) : { : case JOIN_INNER: : leftjoinlist = deconstruct_recurse(root, j->larg, 0.00 : 61a650: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61a657: 44 0f be a5 2f ff ff movsbl -0xd1(%rbp),%r12d 0.00 : 61a65e: ff 0.00 : 61a65f: 48 8d 5d d0 lea -0x30(%rbp),%rbx 0.00 : 61a663: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a66a: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 61a66e: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : 61a672: 49 89 d9 mov %rbx,%r9 0.00 : 61a675: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 61a679: 44 89 e2 mov %r12d,%edx 0.00 : 61a67c: e8 bf f8 ff ff callq 619f40 : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a681: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx : * quals to be pushed down to the outer side, however.) : */ : switch (j->jointype) : { : case JOIN_INNER: : leftjoinlist = deconstruct_recurse(root, j->larg, 0.00 : 61a688: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a68f: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 61a693: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 61a69a: 4c 8d 45 b0 lea -0x50(%rbp),%r8 0.00 : 61a69e: 49 89 d9 mov %rbx,%r9 0.00 : 61a6a1: 48 8b 72 18 mov 0x18(%rdx),%rsi 0.00 : 61a6a5: 44 89 e2 mov %r12d,%edx 0.00 : 61a6a8: e8 93 f8 ff ff callq 619f40 : below_outer_join, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a6ad: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 61a6b1: 48 8b 7d c8 mov -0x38(%rbp),%rdi : case JOIN_INNER: : leftjoinlist = deconstruct_recurse(root, j->larg, : below_outer_join, : &leftids, &left_inners, : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, 0.00 : 61a6b5: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : below_outer_join, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a6bc: e8 ff 8b fc ff callq 5e32c0 : *inner_join_rels = *qualscope; 0.00 : 61a6c1: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx : &child_postponed_quals); : rightjoinlist = deconstruct_recurse(root, j->rarg, : below_outer_join, : &rightids, &right_inners, : &child_postponed_quals); : *qualscope = bms_union(leftids, rightids); 0.00 : 61a6c8: 49 89 07 mov %rax,(%r15) : *inner_join_rels = *qualscope; 0.00 : 61a6cb: 31 f6 xor %esi,%esi 0.00 : 61a6cd: 48 89 01 mov %rax,(%rcx) 0.00 : 61a6d0: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 61a6d7: 00 00 00 00 : /* Inner join adds no restrictions for quals */ : nonnullable_rels = NULL; : /* and it doesn't force anything to null, either */ : nullable_rels = NULL; : break; 0.00 : 61a6db: e9 08 fc ff ff jmpq 61a2e8 : if (IsA(jtnode, RangeTblRef)) : { : int varno = ((RangeTblRef *) jtnode)->rtindex; : : /* No quals to deal with, just return correct result */ : *qualscope = bms_make_singleton(varno); 0.00 : 61a6e0: 8b 7a 04 mov 0x4(%rdx),%edi 0.00 : 61a6e3: e8 88 88 fc ff callq 5e2f70 : /* A single baserel does not create an inner join */ : *inner_join_rels = NULL; 0.00 : 61a6e8: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx : if (IsA(jtnode, RangeTblRef)) : { : int varno = ((RangeTblRef *) jtnode)->rtindex; : : /* No quals to deal with, just return correct result */ : *qualscope = bms_make_singleton(varno); 0.00 : 61a6ef: 49 89 07 mov %rax,(%r15) : /* A single baserel does not create an inner join */ : *inner_join_rels = NULL; : joinlist = list_make1(jtnode); 0.00 : 61a6f2: 31 f6 xor %esi,%esi : int varno = ((RangeTblRef *) jtnode)->rtindex; : : /* No quals to deal with, just return correct result */ : *qualscope = bms_make_singleton(varno); : /* A single baserel does not create an inner join */ : *inner_join_rels = NULL; 0.00 : 61a6f4: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) : joinlist = list_make1(jtnode); 0.00 : 61a6fb: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 61a702: e8 49 71 fc ff callq 5e1850 0.00 : 61a707: 49 89 c6 mov %rax,%r14 0.00 : 61a70a: e9 2a fb ff ff jmpq 61a239 0.00 : 61a70f: 90 nop : * Semijoins are a bit of a hybrid: we build a SpecialJoinInfo, but we : * want ojscope = NULL for distribute_qual_to_rels. : */ : if (j->jointype != JOIN_INNER) : { : sjinfo = make_outerjoininfo(root, 0.00 : 61a710: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.00 : 61a717: 48 8b 4d c8 mov -0x38(%rbp),%rcx : make_outerjoininfo(PlannerInfo *root, : Relids left_rels, Relids right_rels, : Relids inner_join_rels, : JoinType jointype, List *clause) : { : SpecialJoinInfo *sjinfo = makeNode(SpecialJoinInfo); 0.00 : 61a71b: be 38 00 00 00 mov $0x38,%esi 0.00 : 61a720: 48 8b 3d 39 01 5a 00 mov 0x5a0139(%rip),%rdi # bba860 : * Semijoins are a bit of a hybrid: we build a SpecialJoinInfo, but we : * want ojscope = NULL for distribute_qual_to_rels. : */ : if (j->jointype != JOIN_INNER) : { : sjinfo = make_outerjoininfo(root, 0.00 : 61a727: 4c 8b 6d c0 mov -0x40(%rbp),%r13 0.00 : 61a72b: 48 8b 12 mov (%rdx),%rdx 0.00 : 61a72e: 48 89 4d 98 mov %rcx,-0x68(%rbp) 0.00 : 61a732: 48 89 95 40 ff ff ff mov %rdx,-0xc0(%rbp) : make_outerjoininfo(PlannerInfo *root, : Relids left_rels, Relids right_rels, : Relids inner_join_rels, : JoinType jointype, List *clause) : { : SpecialJoinInfo *sjinfo = makeNode(SpecialJoinInfo); 0.00 : 61a739: e8 d2 e6 17 00 callq 798e10 0.00 : 61a73e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 61a745: c7 00 0d 02 00 00 movl $0x20d,(%rax) : * we know whether the view contains an outer join. : * : * We use the original RowMarkClause list here; the PlanRowMark list would : * list everything. : */ : foreach(l, root->parse->rowMarks) 0.00 : 61a74b: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 61a752: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 61a756: 48 8b 80 98 00 00 00 mov 0x98(%rax),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61a75d: 48 85 c0 test %rax,%rax 0.00 : 61a760: 0f 84 9a 00 00 00 je 61a800 0.00 : 61a766: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61a76a: 48 85 db test %rbx,%rbx 0.00 : 61a76d: 75 13 jne 61a782 0.00 : 61a76f: e9 8c 00 00 00 jmpq 61a800 0.00 : 61a774: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 61a778: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61a77c: 48 85 db test %rbx,%rbx 0.00 : 61a77f: 90 nop 0.00 : 61a780: 74 7e je 61a800 : { : RowMarkClause *rc = (RowMarkClause *) lfirst(l); 0.00 : 61a782: 4c 8b 23 mov (%rbx),%r12 : : if (bms_is_member(rc->rti, right_rels) || 0.00 : 61a785: 4c 89 ee mov %r13,%rsi 0.00 : 61a788: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 61a78d: e8 7e 87 fc ff callq 5e2f10 0.00 : 61a792: 84 c0 test %al,%al 0.00 : 61a794: 75 18 jne 61a7ae 0.00 : 61a796: 41 83 fe 02 cmp $0x2,%r14d 0.00 : 61a79a: 75 dc jne 61a778 0.00 : 61a79c: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 61a7a1: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 61a7a5: e8 66 87 fc ff callq 5e2f10 0.00 : 61a7aa: 84 c0 test %al,%al 0.00 : 61a7ac: 74 ca je 61a778 : (jointype == JOIN_FULL && bms_is_member(rc->rti, left_rels))) : ereport(ERROR, 0.00 : 61a7ae: 45 31 c0 xor %r8d,%r8d 0.00 : 61a7b1: b9 60 b4 89 00 mov $0x89b460,%ecx 0.00 : 61a7b6: ba 38 04 00 00 mov $0x438,%edx 0.00 : 61a7bb: be 03 b3 89 00 mov $0x89b303,%esi 0.00 : 61a7c0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61a7c5: e8 f6 02 16 00 callq 77aac0 0.00 : 61a7ca: 84 c0 test %al,%al 0.00 : 61a7cc: 0f 85 9a 03 00 00 jne 61ab6c : joinlist = list_make2(leftpart, rightpart); : } : } : else : { : elog(ERROR, "unrecognized node type: %d", 0.00 : 61a7d2: e8 f9 ec e4 ff callq 4694d0 0.00 : 61a7d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61a7de: 00 00 : } : else if (list_length(leftjoinlist) + list_length(rightjoinlist) <= : join_collapse_limit) : { : /* OK to combine subproblems */ : joinlist = list_concat(leftjoinlist, rightjoinlist); 0.00 : 61a7e0: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 61a7e7: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 61a7ee: e8 cd 7d fc ff callq 5e25c0 0.00 : 61a7f3: 49 89 c6 mov %rax,%r14 0.00 : 61a7f6: e9 3e fa ff ff jmpq 61a239 0.00 : 61a7fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : make_outerjoininfo(PlannerInfo *root, : Relids left_rels, Relids right_rels, : Relids inner_join_rels, : JoinType jointype, List *clause) : { : SpecialJoinInfo *sjinfo = makeNode(SpecialJoinInfo); 0.00 : 61a800: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx : translator: %s is a SQL row locking clause such as FOR UPDATE */ : errmsg("%s cannot be applied to the nullable side of an outer join", : LCS_asString(rc->strength)))); : } : : sjinfo->syn_lefthand = left_rels; 0.00 : 61a807: 48 8b 45 98 mov -0x68(%rbp),%rax : /* this always starts out false */ : sjinfo->delay_upper_joins = false; : sjinfo->join_quals = clause; : : /* If it's a full join, no need to be very smart */ : if (jointype == JOIN_FULL) 0.00 : 61a80b: 41 83 fe 02 cmp $0x2,%r14d : make_outerjoininfo(PlannerInfo *root, : Relids left_rels, Relids right_rels, : Relids inner_join_rels, : JoinType jointype, List *clause) : { : SpecialJoinInfo *sjinfo = makeNode(SpecialJoinInfo); 0.00 : 61a80f: 48 89 8d 60 ff ff ff mov %rcx,-0xa0(%rbp) : translator: %s is a SQL row locking clause such as FOR UPDATE */ : errmsg("%s cannot be applied to the nullable side of an outer join", : LCS_asString(rc->strength)))); : } : : sjinfo->syn_lefthand = left_rels; 0.00 : 61a816: 48 89 41 18 mov %rax,0x18(%rcx) : sjinfo->syn_righthand = right_rels; 0.00 : 61a81a: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 61a821: 4c 89 6a 20 mov %r13,0x20(%rdx) : sjinfo->jointype = jointype; 0.00 : 61a825: 44 89 72 28 mov %r14d,0x28(%rdx) : /* this always starts out false */ : sjinfo->delay_upper_joins = false; 0.00 : 61a829: c6 42 2d 00 movb $0x0,0x2d(%rdx) : sjinfo->join_quals = clause; 0.00 : 61a82d: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 61a831: 48 89 4a 30 mov %rcx,0x30(%rdx) : : /* If it's a full join, no need to be very smart */ : if (jointype == JOIN_FULL) 0.00 : 61a835: 0f 84 fd 02 00 00 je 61ab38 : } : : /* : * Retrieve all relids mentioned within the join clause. : */ : clause_relids = pull_varnos((Node *) clause); 0.00 : 61a83b: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 61a83f: e8 7c d4 01 00 callq 637cc0 : : /* : * For which relids is the clause strict, ie, it cannot succeed if the : * rel's columns are all NULL? : */ : strict_relids = find_nonnullable_rels((Node *) clause); 0.00 : 61a844: 48 8b 7d 90 mov -0x70(%rbp),%rdi : } : : /* : * Retrieve all relids mentioned within the join clause. : */ : clause_relids = pull_varnos((Node *) clause); 0.00 : 61a848: 48 89 45 88 mov %rax,-0x78(%rbp) : : /* : * For which relids is the clause strict, ie, it cannot succeed if the : * rel's columns are all NULL? : */ : strict_relids = find_nonnullable_rels((Node *) clause); 0.00 : 61a84c: e8 9f 19 01 00 callq 62c1f0 : : /* Remember whether the clause is strict for any LHS relations */ : sjinfo->lhs_strict = bms_overlap(strict_relids, left_rels); 0.00 : 61a851: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 61a855: 48 89 c7 mov %rax,%rdi : : /* : * For which relids is the clause strict, ie, it cannot succeed if the : * rel's columns are all NULL? : */ : strict_relids = find_nonnullable_rels((Node *) clause); 0.00 : 61a858: 48 89 45 80 mov %rax,-0x80(%rbp) : : /* Remember whether the clause is strict for any LHS relations */ : sjinfo->lhs_strict = bms_overlap(strict_relids, left_rels); 0.00 : 61a85c: e8 1f 81 fc ff callq 5e2980 0.00 : 61a861: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 61a868: 88 42 2c mov %al,0x2c(%rdx) : : /* : * Required LHS always includes the LHS rels mentioned in the clause. We : * may have to add more rels based on lower outer joins; see below. : */ : min_lefthand = bms_intersect(clause_relids, left_rels); 0.00 : 61a86b: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 61a86f: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 61a873: e8 d8 89 fc ff callq 5e3250 : : /* : * Similarly for required RHS. But here, we must also include any lower : * inner joins, to ensure we don't try to commute with any of them. : */ : min_righthand = bms_int_members(bms_union(clause_relids, inner_join_rels), 0.00 : 61a878: 48 8b b5 40 ff ff ff mov -0xc0(%rbp),%rsi 0.00 : 61a87f: 48 8b 7d 88 mov -0x78(%rbp),%rdi : : /* : * Required LHS always includes the LHS rels mentioned in the clause. We : * may have to add more rels based on lower outer joins; see below. : */ : min_lefthand = bms_intersect(clause_relids, left_rels); 0.00 : 61a883: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : : /* : * Similarly for required RHS. But here, we must also include any lower : * inner joins, to ensure we don't try to commute with any of them. : */ : min_righthand = bms_int_members(bms_union(clause_relids, inner_join_rels), 0.00 : 61a88a: e8 31 8a fc ff callq 5e32c0 0.00 : 61a88f: 4c 89 ee mov %r13,%rsi 0.00 : 61a892: 48 89 c7 mov %rax,%rdi 0.00 : 61a895: e8 96 84 fc ff callq 5e2d30 : right_rels); : : foreach(l, root->join_info_list) 0.00 : 61a89a: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx : : /* : * Similarly for required RHS. But here, we must also include any lower : * inner joins, to ensure we don't try to commute with any of them. : */ : min_righthand = bms_int_members(bms_union(clause_relids, inner_join_rels), 0.00 : 61a8a1: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : right_rels); : : foreach(l, root->join_info_list) 0.00 : 61a8a8: 48 8b 81 b8 00 00 00 mov 0xb8(%rcx),%rax 0.00 : 61a8af: 48 85 c0 test %rax,%rax 0.00 : 61a8b2: 0f 84 28 01 00 00 je 61a9e0 0.00 : 61a8b8: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 61a8bc: 4d 85 e4 test %r12,%r12 0.00 : 61a8bf: 0f 84 1b 01 00 00 je 61a9e0 : * Note: I believe we have to insist on being strict for at least one : * rel in the lower OJ's min_righthand, not its whole syn_righthand. : */ : if (bms_overlap(left_rels, otherinfo->syn_righthand)) : { : if (bms_overlap(clause_relids, otherinfo->syn_righthand) && 0.00 : 61a8c5: 41 8d 46 fc lea -0x4(%r14),%eax 0.00 : 61a8c9: 89 85 14 ff ff ff mov %eax,-0xec(%rbp) 0.00 : 61a8cf: eb 29 jmp 61a8fa 0.00 : 61a8d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * join). Hence the other ways in which we handle clauses within our : * join condition are not affected by them. The net effect is : * therefore sufficiently represented by the delay_upper_joins flag : * saved for us by check_outerjoin_delay. : */ : if (bms_overlap(right_rels, otherinfo->syn_righthand)) 0.00 : 61a8d8: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 61a8dc: 4c 89 ef mov %r13,%rdi 0.00 : 61a8df: e8 9c 80 fc ff callq 5e2980 0.00 : 61a8e4: 84 c0 test %al,%al 0.00 : 61a8e6: 0f 85 84 00 00 00 jne 61a970 : * inner joins, to ensure we don't try to commute with any of them. : */ : min_righthand = bms_int_members(bms_union(clause_relids, inner_join_rels), : right_rels); : : foreach(l, root->join_info_list) 0.00 : 61a8ec: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61a8f1: 4d 85 e4 test %r12,%r12 0.00 : 61a8f4: 0f 84 e6 00 00 00 je 61a9e0 : { : SpecialJoinInfo *otherinfo = (SpecialJoinInfo *) lfirst(l); 0.00 : 61a8fa: 49 8b 1c 24 mov (%r12),%rbx : : /* ignore full joins --- other mechanisms preserve their ordering */ : if (otherinfo->jointype == JOIN_FULL) 0.00 : 61a8fe: 83 7b 28 02 cmpl $0x2,0x28(%rbx) 0.00 : 61a902: 74 e8 je 61a8ec : * regardless of strictness. : * : * Note: I believe we have to insist on being strict for at least one : * rel in the lower OJ's min_righthand, not its whole syn_righthand. : */ : if (bms_overlap(left_rels, otherinfo->syn_righthand)) 0.00 : 61a904: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 61a908: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 61a90c: e8 6f 80 fc ff callq 5e2980 0.00 : 61a911: 84 c0 test %al,%al 0.00 : 61a913: 74 c3 je 61a8d8 : { : if (bms_overlap(clause_relids, otherinfo->syn_righthand) && 0.00 : 61a915: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 61a919: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 61a91d: e8 5e 80 fc ff callq 5e2980 0.00 : 61a922: 84 c0 test %al,%al 0.00 : 61a924: 74 b2 je 61a8d8 0.00 : 61a926: 83 bd 14 ff ff ff 01 cmpl $0x1,-0xec(%rbp) 0.00 : 61a92d: 76 11 jbe 61a940 0.00 : 61a92f: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 61a933: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 61a937: e8 44 80 fc ff callq 5e2980 0.00 : 61a93c: 84 c0 test %al,%al 0.00 : 61a93e: 75 98 jne 61a8d8 : (jointype == JOIN_SEMI || jointype == JOIN_ANTI || : !bms_overlap(strict_relids, otherinfo->min_righthand))) : { : min_lefthand = bms_add_members(min_lefthand, 0.00 : 61a940: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 61a944: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 61a94b: e8 10 88 fc ff callq 5e3160 : otherinfo->syn_lefthand); : min_lefthand = bms_add_members(min_lefthand, 0.00 : 61a950: 48 8b 73 20 mov 0x20(%rbx),%rsi : { : if (bms_overlap(clause_relids, otherinfo->syn_righthand) && : (jointype == JOIN_SEMI || jointype == JOIN_ANTI || : !bms_overlap(strict_relids, otherinfo->min_righthand))) : { : min_lefthand = bms_add_members(min_lefthand, 0.00 : 61a954: 48 89 c7 mov %rax,%rdi : otherinfo->syn_lefthand); : min_lefthand = bms_add_members(min_lefthand, 0.00 : 61a957: e8 04 88 fc ff callq 5e3160 0.00 : 61a95c: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 61a963: e9 70 ff ff ff jmpq 61a8d8 0.00 : 61a968: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 61a96f: 00 : * therefore sufficiently represented by the delay_upper_joins flag : * saved for us by check_outerjoin_delay. : */ : if (bms_overlap(right_rels, otherinfo->syn_righthand)) : { : if (bms_overlap(clause_relids, otherinfo->syn_righthand) || 0.00 : 61a970: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 61a974: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 61a978: e8 03 80 fc ff callq 5e2980 0.00 : 61a97d: 84 c0 test %al,%al 0.00 : 61a97f: 75 2f jne 61a9b0 0.00 : 61a981: 41 83 fe 04 cmp $0x4,%r14d 0.00 : 61a985: 74 29 je 61a9b0 0.00 : 61a987: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 61a98a: 83 f8 04 cmp $0x4,%eax 0.00 : 61a98d: 0f 1f 00 nopl (%rax) 0.00 : 61a990: 74 1e je 61a9b0 0.00 : 61a992: 83 f8 05 cmp $0x5,%eax 0.00 : 61a995: 74 19 je 61a9b0 0.00 : 61a997: 80 7b 2c 00 cmpb $0x0,0x2c(%rbx) 0.00 : 61a99b: 74 13 je 61a9b0 0.00 : 61a99d: 80 7b 2d 00 cmpb $0x0,0x2d(%rbx) 0.00 : 61a9a1: 0f 84 45 ff ff ff je 61a8ec 0.00 : 61a9a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61a9ae: 00 00 : jointype == JOIN_SEMI || : otherinfo->jointype == JOIN_SEMI || : otherinfo->jointype == JOIN_ANTI || : !otherinfo->lhs_strict || otherinfo->delay_upper_joins) : { : min_righthand = bms_add_members(min_righthand, 0.00 : 61a9b0: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 61a9b4: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 61a9bb: e8 a0 87 fc ff callq 5e3160 : otherinfo->syn_lefthand); : min_righthand = bms_add_members(min_righthand, 0.00 : 61a9c0: 48 8b 73 20 mov 0x20(%rbx),%rsi : jointype == JOIN_SEMI || : otherinfo->jointype == JOIN_SEMI || : otherinfo->jointype == JOIN_ANTI || : !otherinfo->lhs_strict || otherinfo->delay_upper_joins) : { : min_righthand = bms_add_members(min_righthand, 0.00 : 61a9c4: 48 89 c7 mov %rax,%rdi : otherinfo->syn_lefthand); : min_righthand = bms_add_members(min_righthand, 0.00 : 61a9c7: e8 94 87 fc ff callq 5e3160 0.00 : 61a9cc: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 61a9d3: e9 14 ff ff ff jmpq 61a8ec 0.00 : 61a9d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 61a9df: 00 : * full eval_at set of the PHV. This ensures that the PHV actually can be : * evaluated within the RHS. Note that this works only because we should : * already have determined the final eval_at level for any PHV : * syntactically within this join. : */ : foreach(l, root->placeholder_list) 0.00 : 61a9e0: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx : * inner joins, to ensure we don't try to commute with any of them. : */ : min_righthand = bms_int_members(bms_union(clause_relids, inner_join_rels), : right_rels); : : foreach(l, root->join_info_list) 0.00 : 61a9e7: 4c 8b b5 78 ff ff ff mov -0x88(%rbp),%r14 : * full eval_at set of the PHV. This ensures that the PHV actually can be : * evaluated within the RHS. Note that this works only because we should : * already have determined the final eval_at level for any PHV : * syntactically within this join. : */ : foreach(l, root->placeholder_list) 0.00 : 61a9ee: 48 8b 82 d8 00 00 00 mov 0xd8(%rdx),%rax 0.00 : 61a9f5: 48 85 c0 test %rax,%rax 0.00 : 61a9f8: 74 4e je 61aa48 0.00 : 61a9fa: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61a9fe: 48 85 db test %rbx,%rbx 0.00 : 61aa01: 75 0f jne 61aa12 0.00 : 61aa03: eb 43 jmp 61aa48 0.00 : 61aa05: 0f 1f 00 nopl (%rax) 0.00 : 61aa08: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61aa0c: 48 85 db test %rbx,%rbx 0.00 : 61aa0f: 90 nop 0.00 : 61aa10: 74 36 je 61aa48 : { : PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(l); 0.00 : 61aa12: 4c 8b 23 mov (%rbx),%r12 : Relids ph_syn_level = phinfo->ph_var->phrels; : : /* Ignore placeholder if it didn't syntactically come from RHS */ : if (!bms_is_subset(ph_syn_level, right_rels)) 0.00 : 61aa15: 4c 89 ee mov %r13,%rsi 0.00 : 61aa18: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 61aa1d: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 61aa21: e8 fa 7c fc ff callq 5e2720 0.00 : 61aa26: 84 c0 test %al,%al 0.00 : 61aa28: 74 de je 61aa08 : continue; : : /* Else, prevent join from being formed before we eval the PHV */ : min_righthand = bms_add_members(min_righthand, phinfo->ph_eval_at); 0.00 : 61aa2a: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : 61aa2f: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 61aa36: e8 25 87 fc ff callq 5e3160 0.00 : 61aa3b: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 61aa42: eb c4 jmp 61aa08 0.00 : 61aa44: 0f 1f 40 00 nopl 0x0(%rax) : * If we found nothing to put in min_lefthand, punt and make it the full : * LHS, to avoid having an empty min_lefthand which will confuse later : * processing. (We don't try to be smart about such cases, just correct.) : * Likewise for min_righthand. : */ : if (bms_is_empty(min_lefthand)) 0.00 : 61aa48: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi : * full eval_at set of the PHV. This ensures that the PHV actually can be : * evaluated within the RHS. Note that this works only because we should : * already have determined the final eval_at level for any PHV : * syntactically within this join. : */ : foreach(l, root->placeholder_list) 0.00 : 61aa4f: 48 8b 9d 70 ff ff ff mov -0x90(%rbp),%rbx : * If we found nothing to put in min_lefthand, punt and make it the full : * LHS, to avoid having an empty min_lefthand which will confuse later : * processing. (We don't try to be smart about such cases, just correct.) : * Likewise for min_righthand. : */ : if (bms_is_empty(min_lefthand)) 0.00 : 61aa56: e8 f5 80 fc ff callq 5e2b50 0.00 : 61aa5b: 84 c0 test %al,%al 0.00 : 61aa5d: 0f 85 b9 00 00 00 jne 61ab1c : min_lefthand = bms_copy(left_rels); : if (bms_is_empty(min_righthand)) 0.00 : 61aa63: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 61aa6a: e8 e1 80 fc ff callq 5e2b50 0.00 : 61aa6f: 84 c0 test %al,%al 0.00 : 61aa71: 0f 85 95 00 00 00 jne 61ab0c : Assert(!bms_is_empty(min_lefthand)); : Assert(!bms_is_empty(min_righthand)); : /* Shouldn't overlap either */ : Assert(!bms_overlap(min_lefthand, min_righthand)); : : sjinfo->min_lefthand = min_lefthand; 0.00 : 61aa77: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 61aa7e: 4c 89 71 08 mov %r14,0x8(%rcx) : sjinfo->min_righthand = min_righthand; 0.00 : 61aa82: 48 89 59 10 mov %rbx,0x10(%rcx) : sjinfo = make_outerjoininfo(root, : leftids, rightids, : *inner_join_rels, : j->jointype, : my_quals); : if (j->jointype == JOIN_SEMI) 0.00 : 61aa86: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61aa8d: 45 31 ed xor %r13d,%r13d 0.00 : 61aa90: 83 78 04 04 cmpl $0x4,0x4(%rax) 0.00 : 61aa94: 0f 84 19 f9 ff ff je 61a3b3 : ojscope = NULL; : else : ojscope = bms_union(sjinfo->min_lefthand, 0.00 : 61aa9a: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 61aaa1: 48 8b 72 10 mov 0x10(%rdx),%rsi 0.00 : 61aaa5: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 61aaa9: e8 12 88 fc ff callq 5e32c0 0.00 : 61aaae: 49 89 c5 mov %rax,%r13 0.00 : 61aab1: e9 fd f8 ff ff jmpq 61a3b3 0.00 : 61aab6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 61aabd: 00 00 00 : * exceeded. : */ : if (j->jointype == JOIN_FULL) : { : /* force the join order exactly at this node */ : joinlist = list_make1(list_make2(leftjoinlist, rightjoinlist)); 0.00 : 61aac0: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 61aac7: 31 f6 xor %esi,%esi 0.00 : 61aac9: e8 82 6d fc ff callq 5e1850 0.00 : 61aace: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 61aad5: 48 89 c6 mov %rax,%rsi 0.00 : 61aad8: e8 73 6d fc ff callq 5e1850 0.00 : 61aadd: 31 f6 xor %esi,%esi 0.00 : 61aadf: 48 89 c7 mov %rax,%rdi 0.00 : 61aae2: e8 69 6d fc ff callq 5e1850 0.00 : 61aae7: 49 89 c6 mov %rax,%r14 0.00 : 61aaea: e9 4a f7 ff ff jmpq 61a239 0.00 : 61aaef: 90 nop : Node *leftpart, : *rightpart; : : /* avoid creating useless 1-element sublists */ : if (list_length(leftjoinlist) == 1) : leftpart = (Node *) linitial(leftjoinlist); 0.00 : 61aaf0: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 61aaf4: 48 8b 18 mov (%rax),%rbx 0.00 : 61aaf7: e9 d2 f9 ff ff jmpq 61a4ce 0.00 : 61aafc: 0f 1f 40 00 nopl 0x0(%rax) : else : leftpart = (Node *) leftjoinlist; : if (list_length(rightjoinlist) == 1) : rightpart = (Node *) linitial(rightjoinlist); 0.00 : 61ab00: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 61ab04: 48 8b 38 mov (%rax),%rdi 0.00 : 61ab07: e9 e4 f9 ff ff jmpq 61a4f0 : * Likewise for min_righthand. : */ : if (bms_is_empty(min_lefthand)) : min_lefthand = bms_copy(left_rels); : if (bms_is_empty(min_righthand)) : min_righthand = bms_copy(right_rels); 0.00 : 61ab0c: 4c 89 ef mov %r13,%rdi 0.00 : 61ab0f: e8 ec 85 fc ff callq 5e3100 0.00 : 61ab14: 48 89 c3 mov %rax,%rbx 0.00 : 61ab17: e9 5b ff ff ff jmpq 61aa77 : * LHS, to avoid having an empty min_lefthand which will confuse later : * processing. (We don't try to be smart about such cases, just correct.) : * Likewise for min_righthand. : */ : if (bms_is_empty(min_lefthand)) : min_lefthand = bms_copy(left_rels); 0.00 : 61ab1c: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 61ab20: e8 db 85 fc ff callq 5e3100 0.00 : 61ab25: 49 89 c6 mov %rax,%r14 0.00 : 61ab28: e9 36 ff ff ff jmpq 61aa63 0.00 : 61ab2d: 0f 1f 00 nopl (%rax) : * further postponement, add them to my output postponed_qual_list. : * Quals that can be processed now must be included in my_quals, so : * that they'll be handled properly in make_outerjoininfo. : */ : my_quals = NIL; : foreach(l, child_postponed_quals) 0.00 : 61ab30: 45 31 ed xor %r13d,%r13d 0.00 : 61ab33: e9 42 f8 ff ff jmpq 61a37a : sjinfo->join_quals = clause; : : /* If it's a full join, no need to be very smart */ : if (jointype == JOIN_FULL) : { : sjinfo->min_lefthand = bms_copy(left_rels); 0.00 : 61ab38: 48 89 c7 mov %rax,%rdi 0.00 : 61ab3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 61ab40: e8 bb 85 fc ff callq 5e3100 0.00 : 61ab45: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx : sjinfo->min_righthand = bms_copy(right_rels); 0.00 : 61ab4c: 4c 89 ef mov %r13,%rdi : sjinfo->join_quals = clause; : : /* If it's a full join, no need to be very smart */ : if (jointype == JOIN_FULL) : { : sjinfo->min_lefthand = bms_copy(left_rels); 0.00 : 61ab4f: 48 89 42 08 mov %rax,0x8(%rdx) : sjinfo->min_righthand = bms_copy(right_rels); 0.00 : 61ab53: e8 a8 85 fc ff callq 5e3100 0.00 : 61ab58: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 61ab5f: 48 89 41 10 mov %rax,0x10(%rcx) : sjinfo->lhs_strict = false; /* don't care about this */ 0.00 : 61ab63: c6 41 2c 00 movb $0x0,0x2c(%rcx) 0.00 : 61ab67: e9 1a ff ff ff jmpq 61aa86 : { : RowMarkClause *rc = (RowMarkClause *) lfirst(l); : : if (bms_is_member(rc->rti, right_rels) || : (jointype == JOIN_FULL && bms_is_member(rc->rti, left_rels))) : ereport(ERROR, 0.00 : 61ab6c: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 61ab71: e8 3a f0 ee ff callq 509bb0 0.00 : 61ab76: bf 70 b3 89 00 mov $0x89b370,%edi 0.00 : 61ab7b: 48 89 c6 mov %rax,%rsi 0.00 : 61ab7e: 31 c0 xor %eax,%eax 0.00 : 61ab80: e8 1b 1d 16 00 callq 77c8a0 0.00 : 61ab85: bf 40 04 00 00 mov $0x440,%edi 0.00 : 61ab8a: 89 c3 mov %eax,%ebx 0.00 : 61ab8c: e8 bf 21 16 00 callq 77cd50 0.00 : 61ab91: 89 de mov %ebx,%esi 0.00 : 61ab93: 89 c7 mov %eax,%edi 0.00 : 61ab95: 31 c0 xor %eax,%eax 0.00 : 61ab97: e8 44 fa 15 00 callq 77a5e0 0.00 : 61ab9c: e9 31 fc ff ff jmpq 61a7d2 : { : List *joinlist; : : if (jtnode == NULL) : { : *qualscope = NULL; 0.00 : 61aba1: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) : *inner_join_rels = NULL; 0.00 : 61aba8: 45 31 f6 xor %r14d,%r14d 0.00 : 61abab: 49 c7 00 00 00 00 00 movq $0x0,(%r8) : elog(ERROR, "unrecognized node type: %d", : (int) nodeTag(jtnode)); : joinlist = NIL; /* keep compiler quiet */ : } : return joinlist; : } 0.00 : 61abb2: e9 82 f6 ff ff jmpq 61a239 : joinlist = list_make2(leftpart, rightpart); : } : } : else : { : elog(ERROR, "unrecognized node type: %d", 0.00 : 61abb7: ba 40 b4 89 00 mov $0x89b440,%edx 0.00 : 61abbc: be f2 03 00 00 mov $0x3f2,%esi 0.00 : 61abc1: bf 03 b3 89 00 mov $0x89b303,%edi 0.00 : 61abc6: e8 55 08 16 00 callq 77b420 0.00 : 61abcb: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 61abd2: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 61abd7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61abdc: 8b 10 mov (%rax),%edx 0.00 : 61abde: 31 c0 xor %eax,%eax 0.00 : 61abe0: e8 4b 06 16 00 callq 77b230 0.00 : 61abe5: e9 e8 fb ff ff jmpq 61a7d2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/planmain.c:103 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000061bd10 : : * (We cannot construct canonical pathkeys until that's done.) : */ : RelOptInfo * : query_planner(PlannerInfo *root, List *tlist, : query_pathkeys_callback qp_callback, void *qp_extra) : { 0.00 : 61bd10: 55 push %rbp 0.00 : 61bd11: 48 89 e5 mov %rsp,%rbp 0.00 : 61bd14: 41 57 push %r15 0.00 : 61bd16: 49 89 d7 mov %rdx,%r15 0.00 : 61bd19: 41 56 push %r14 0.00 : 61bd1b: 49 89 ce mov %rcx,%r14 0.00 : 61bd1e: 41 55 push %r13 0.00 : 61bd20: 49 89 f5 mov %rsi,%r13 0.00 : 61bd23: 41 54 push %r12 0.00 : 61bd25: 49 89 fc mov %rdi,%r12 0.00 : 61bd28: 53 push %rbx 0.00 : 61bd29: 48 83 ec 08 sub $0x8,%rsp : Query *parse = root->parse; 0.00 : 61bd2d: 48 8b 5f 08 mov 0x8(%rdi),%rbx : : /* : * If the query has an empty join tree, then it's something easy like : * "SELECT 2+2;" or "INSERT ... VALUES()". Fall through quickly. : */ : if (parse->jointree->fromlist == NIL) 0.00 : 61bd31: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 61bd35: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 61bd3a: 0f 84 b0 01 00 00 je 61bef0 : * Init planner lists to empty. : * : * NOTE: append_rel_list was set up by subquery_planner, so do not touch : * here; eq_classes and minmax_aggs may contain data already, too. : */ : root->join_rel_list = NIL; 0.00 : 61bd40: 48 c7 47 58 00 00 00 movq $0x0,0x58(%rdi) 0.00 : 61bd47: 00 : root->join_rel_hash = NULL; 0.00 : 61bd48: 48 c7 47 60 00 00 00 movq $0x0,0x60(%rdi) 0.00 : 61bd4f: 00 : root->join_rel_level = NULL; 0.00 : 61bd50: 48 c7 47 68 00 00 00 movq $0x0,0x68(%rdi) 0.00 : 61bd57: 00 : root->join_cur_level = 0; 0.00 : 61bd58: c7 47 70 00 00 00 00 movl $0x0,0x70(%rdi) : root->canon_pathkeys = NIL; 0.00 : 61bd5f: 48 c7 87 98 00 00 00 movq $0x0,0x98(%rdi) 0.00 : 61bd66: 00 00 00 00 : root->left_join_clauses = NIL; 0.00 : 61bd6a: 48 c7 87 a0 00 00 00 movq $0x0,0xa0(%rdi) 0.00 : 61bd71: 00 00 00 00 : root->right_join_clauses = NIL; 0.00 : 61bd75: 48 c7 87 a8 00 00 00 movq $0x0,0xa8(%rdi) 0.00 : 61bd7c: 00 00 00 00 : root->full_join_clauses = NIL; /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/planmain.c:103 100.00 : 61bd80: 48 c7 87 b0 00 00 00 movq $0x0,0xb0(%rdi) 0.00 : 61bd87: 00 00 00 00 : root->join_info_list = NIL; 0.00 : 61bd8b: 48 c7 87 b8 00 00 00 movq $0x0,0xb8(%rdi) 0.00 : 61bd92: 00 00 00 00 : root->lateral_info_list = NIL; 0.00 : 61bd96: 48 c7 87 c0 00 00 00 movq $0x0,0xc0(%rdi) 0.00 : 61bd9d: 00 00 00 00 : root->placeholder_list = NIL; 0.00 : 61bda1: 48 c7 87 d8 00 00 00 movq $0x0,0xd8(%rdi) 0.00 : 61bda8: 00 00 00 00 : root->initial_rels = NIL; 0.00 : 61bdac: 48 c7 87 10 01 00 00 movq $0x0,0x110(%rdi) 0.00 : 61bdb3: 00 00 00 00 : /* : * Make a flattened version of the rangetable for faster access (this is : * OK because the rangetable won't change any more), and set up an empty : * array for indexing base relations. : */ : setup_simple_rel_arrays(root); 0.00 : 61bdb7: e8 64 a8 01 00 callq 636620 : * Note: the reason we find the rels by searching the jointree and : * appendrel list, rather than just scanning the rangetable, is that the : * rangetable may contain RTEs for rels not actively part of the query, : * for example views. We don't want to make RelOptInfos for them. : */ : add_base_rels_to_query(root, (Node *) parse->jointree); 0.00 : 61bdbc: 48 8b 73 40 mov 0x40(%rbx),%rsi 0.00 : 61bdc0: 4c 89 e7 mov %r12,%rdi 0.00 : 61bdc3: e8 48 f5 ff ff callq 61b310 : * also build EquivalenceClasses for provably equivalent expressions. The : * SpecialJoinInfo list is also built to hold information about join order : * restrictions. Finally, we form a target joinlist for make_one_rel() to : * work from. : */ : build_base_rel_tlists(root, tlist); 0.00 : 61bdc8: 4c 89 ee mov %r13,%rsi 0.00 : 61bdcb: 4c 89 e7 mov %r12,%rdi 0.00 : 61bdce: e8 5d ee ff ff callq 61ac30 : : find_placeholders_in_jointree(root); 0.00 : 61bdd3: 4c 89 e7 mov %r12,%rdi 0.00 : 61bdd6: e8 75 6a 01 00 callq 632850 : : find_lateral_references(root); 0.00 : 61bddb: 4c 89 e7 mov %r12,%rdi 0.00 : 61bdde: e8 5d f3 ff ff callq 61b140 : : joinlist = deconstruct_jointree(root); 0.00 : 61bde3: 4c 89 e7 mov %r12,%rdi 0.00 : 61bde6: e8 05 ee ff ff callq 61abf0 : /* : * Reconsider any postponed outer-join quals now that we have built up : * equivalence classes. (This could result in further additions or : * mergings of classes.) : */ : reconsider_outer_join_clauses(root); 0.00 : 61bdeb: 4c 89 e7 mov %r12,%rdi : : find_placeholders_in_jointree(root); : : find_lateral_references(root); : : joinlist = deconstruct_jointree(root); 0.00 : 61bdee: 48 89 c3 mov %rax,%rbx : /* : * Reconsider any postponed outer-join quals now that we have built up : * equivalence classes. (This could result in further additions or : * mergings of classes.) : */ : reconsider_outer_join_clauses(root); 0.00 : 61bdf1: e8 da e3 fe ff callq 60a1d0 : /* : * If we formed any equivalence classes, generate additional restriction : * clauses as appropriate. (Implied join clauses are formed on-the-fly : * later.) : */ : generate_base_implied_equalities(root); 0.00 : 61bdf6: 4c 89 e7 mov %r12,%rdi 0.00 : 61bdf9: e8 92 d2 fe ff callq 609090 : /* : * We have completed merging equivalence sets, so it's now possible to : * generate pathkeys in canonical form; so compute query_pathkeys and : * other pathkeys fields in PlannerInfo. : */ : (*qp_callback) (root, qp_extra); 0.00 : 61bdfe: 4c 89 f6 mov %r14,%rsi 0.00 : 61be01: 4c 89 e7 mov %r12,%rdi 0.00 : 61be04: 41 ff d7 callq *%r15 : * Make sure that the Vars they need are marked as needed at the relevant : * join level. This must be done before join removal because it might : * cause Vars or placeholders to be needed above a join when they weren't : * so marked before. : */ : fix_placeholder_input_needed_levels(root); 0.00 : 61be07: 4c 89 e7 mov %r12,%rdi 0.00 : 61be0a: e8 01 63 01 00 callq 632110 : /* : * Remove any useless outer joins. Ideally this would be done during : * jointree preprocessing, but the necessary information isn't available : * until we've built baserel data structures and classified qual clauses. : */ : joinlist = remove_useless_joins(root, joinlist); 0.00 : 61be0f: 48 89 de mov %rbx,%rsi 0.00 : 61be12: 4c 89 e7 mov %r12,%rdi 0.00 : 61be15: e8 56 78 ff ff callq 613670 : /* : * Now distribute "placeholders" to base rels as needed. This has to be : * done after join removal because removal could change whether a : * placeholder is evaluatable at a base rel. : */ : add_placeholders_to_base_rels(root); 0.00 : 61be1a: 4c 89 e7 mov %r12,%rdi : /* : * Remove any useless outer joins. Ideally this would be done during : * jointree preprocessing, but the necessary information isn't available : * until we've built baserel data structures and classified qual clauses. : */ : joinlist = remove_useless_joins(root, joinlist); 0.00 : 61be1d: 48 89 c3 mov %rax,%rbx : /* : * Now distribute "placeholders" to base rels as needed. This has to be : * done after join removal because removal could change whether a : * placeholder is evaluatable at a base rel. : */ : add_placeholders_to_base_rels(root); 0.00 : 61be20: e8 0b 67 01 00 callq 632530 : /* : * Create the LateralJoinInfo list now that we have finalized : * PlaceHolderVar eval levels and made any necessary additions to the : * lateral_vars lists for lateral references within PlaceHolderVars. : */ : create_lateral_join_info(root); 0.00 : 61be25: 4c 89 e7 mov %r12,%rdi 0.00 : 61be28: e8 53 ef ff ff callq 61ad80 : : /* : * Look for join OR clauses that we can extract single-relation : * restriction OR clauses from. : */ : extract_restriction_or_clauses(root); 0.00 : 61be2d: 4c 89 e7 mov %r12,%rdi 0.00 : 61be30: e8 6b 3e 01 00 callq 62fca0 : * XXX if a table is self-joined, we will count it once per appearance, : * which perhaps is the wrong thing ... but that's not completely clear, : * and detecting self-joins here is difficult, so ignore it for now. : */ : total_pages = 0; : for (rti = 1; rti < root->simple_rel_array_size; rti++) 0.00 : 61be35: 41 8b 44 24 38 mov 0x38(%r12),%eax 0.00 : 61be3a: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 61be3e: 83 f8 01 cmp $0x1,%eax 0.00 : 61be41: 76 54 jbe 61be97 0.00 : 61be43: 83 e8 02 sub $0x2,%eax 0.00 : 61be46: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 61be4b: 31 c9 xor %ecx,%ecx 0.00 : 61be4d: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 61be51: 48 8d 34 c5 08 00 00 lea 0x8(,%rax,8),%rsi 0.00 : 61be58: 00 0.00 : 61be59: eb 13 jmp 61be6e 0.00 : 61be5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (brel == NULL) : continue; : : Assert(brel->relid == rti); /* sanity check on array */ : : if (brel->reloptkind == RELOPT_BASEREL || 0.00 : 61be60: 83 fa 02 cmp $0x2,%edx 0.00 : 61be63: 74 1a je 61be7f : brel->reloptkind == RELOPT_OTHER_MEMBER_REL) : total_pages += (double) brel->pages; 0.00 : 61be65: 48 83 c1 08 add $0x8,%rcx : * XXX if a table is self-joined, we will count it once per appearance, : * which perhaps is the wrong thing ... but that's not completely clear, : * and detecting self-joins here is difficult, so ignore it for now. : */ : total_pages = 0; : for (rti = 1; rti < root->simple_rel_array_size; rti++) 0.00 : 61be69: 48 39 f1 cmp %rsi,%rcx 0.00 : 61be6c: 74 29 je 61be97 : { : RelOptInfo *brel = root->simple_rel_array[rti]; 0.00 : 61be6e: 48 8b 44 0f 08 mov 0x8(%rdi,%rcx,1),%rax : : if (brel == NULL) 0.00 : 61be73: 48 85 c0 test %rax,%rax 0.00 : 61be76: 74 ed je 61be65 : continue; : : Assert(brel->relid == rti); /* sanity check on array */ : : if (brel->reloptkind == RELOPT_BASEREL || 0.00 : 61be78: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 61be7b: 85 d2 test %edx,%edx 0.00 : 61be7d: 75 e1 jne 61be60 : brel->reloptkind == RELOPT_OTHER_MEMBER_REL) : total_pages += (double) brel->pages; 0.00 : 61be7f: 8b 80 98 00 00 00 mov 0x98(%rax),%eax 0.00 : 61be85: 48 83 c1 08 add $0x8,%rcx : * XXX if a table is self-joined, we will count it once per appearance, : * which perhaps is the wrong thing ... but that's not completely clear, : * and detecting self-joins here is difficult, so ignore it for now. : */ : total_pages = 0; : for (rti = 1; rti < root->simple_rel_array_size; rti++) 0.00 : 61be89: 48 39 f1 cmp %rsi,%rcx : : Assert(brel->relid == rti); /* sanity check on array */ : : if (brel->reloptkind == RELOPT_BASEREL || : brel->reloptkind == RELOPT_OTHER_MEMBER_REL) : total_pages += (double) brel->pages; 0.00 : 61be8c: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 61be91: f2 0f 58 c8 addsd %xmm0,%xmm1 : * XXX if a table is self-joined, we will count it once per appearance, : * which perhaps is the wrong thing ... but that's not completely clear, : * and detecting self-joins here is difficult, so ignore it for now. : */ : total_pages = 0; : for (rti = 1; rti < root->simple_rel_array_size; rti++) 0.00 : 61be95: 75 d7 jne 61be6e : : if (brel->reloptkind == RELOPT_BASEREL || : brel->reloptkind == RELOPT_OTHER_MEMBER_REL) : total_pages += (double) brel->pages; : } : root->total_table_pages = total_pages; 0.00 : 61be97: f2 41 0f 11 8c 24 20 movsd %xmm1,0x120(%r12) 0.00 : 61be9e: 01 00 00 : : /* : * Ready to do the primary planning. : */ : final_rel = make_one_rel(root, joinlist); 0.00 : 61bea1: 48 89 de mov %rbx,%rsi 0.00 : 61bea4: 4c 89 e7 mov %r12,%rdi 0.00 : 61bea7: e8 a4 73 fe ff callq 603250 : : /* Check that we got at least one usable path */ : if (!final_rel || !final_rel->cheapest_total_path || 0.00 : 61beac: 48 85 c0 test %rax,%rax : root->total_table_pages = total_pages; : : /* : * Ready to do the primary planning. : */ : final_rel = make_one_rel(root, joinlist); 0.00 : 61beaf: 49 89 c5 mov %rax,%r13 : : /* Check that we got at least one usable path */ : if (!final_rel || !final_rel->cheapest_total_path || 0.00 : 61beb2: 74 10 je 61bec4 0.00 : 61beb4: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 61beb8: 48 85 c0 test %rax,%rax 0.00 : 61bebb: 74 07 je 61bec4 0.00 : 61bebd: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 61bec2: 74 69 je 61bf2d : final_rel->cheapest_total_path->param_info != NULL) : elog(ERROR, "failed to construct the join relation"); 0.00 : 61bec4: ba 7e b5 89 00 mov $0x89b57e,%edx 0.00 : 61bec9: be f1 00 00 00 mov $0xf1,%esi 0.00 : 61bece: bf 4d b5 89 00 mov $0x89b54d,%edi 0.00 : 61bed3: e8 48 f5 15 00 callq 77b420 0.00 : 61bed8: be 58 b5 89 00 mov $0x89b558,%esi 0.00 : 61bedd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61bee2: 31 c0 xor %eax,%eax 0.00 : 61bee4: e8 47 f3 15 00 callq 77b230 0.00 : 61bee9: e8 e2 d5 e4 ff callq 4694d0 0.00 : 61beee: 66 90 xchg %ax,%ax : * "SELECT 2+2;" or "INSERT ... VALUES()". Fall through quickly. : */ : if (parse->jointree->fromlist == NIL) : { : /* We need a dummy joinrel to describe the empty set of baserels */ : final_rel = build_empty_join_rel(root); 0.00 : 61bef0: e8 eb 96 01 00 callq 6355e0 0.00 : 61bef5: 49 89 c5 mov %rax,%r13 : : /* The only path for it is a trivial Result path */ : add_path(final_rel, (Path *) 0.00 : 61bef8: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 61befc: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 61bf00: e8 8b 40 01 00 callq 62ff90 0.00 : 61bf05: 4c 89 ef mov %r13,%rdi 0.00 : 61bf08: 48 89 c6 mov %rax,%rsi 0.00 : 61bf0b: e8 10 5a 01 00 callq 631920 : create_result_path((List *) parse->jointree->quals)); : : /* Select cheapest path (pretty easy in this case...) */ : set_cheapest(final_rel); 0.00 : 61bf10: 4c 89 ef mov %r13,%rdi 0.00 : 61bf13: e8 28 5f 01 00 callq 631e40 : : /* : * We still are required to call qp_callback, in case it's something : * like "SELECT 2+2 ORDER BY 1". : */ : root->canon_pathkeys = NIL; 0.00 : 61bf18: 49 c7 84 24 98 00 00 movq $0x0,0x98(%r12) 0.00 : 61bf1f: 00 00 00 00 00 : (*qp_callback) (root, qp_extra); 0.00 : 61bf24: 4c 89 f6 mov %r14,%rsi 0.00 : 61bf27: 4c 89 e7 mov %r12,%rdi 0.00 : 61bf2a: 41 ff d7 callq *%r15 : if (!final_rel || !final_rel->cheapest_total_path || : final_rel->cheapest_total_path->param_info != NULL) : elog(ERROR, "failed to construct the join relation"); : : return final_rel; : } 0.00 : 61bf2d: 48 83 c4 08 add $0x8,%rsp 0.00 : 61bf31: 4c 89 e8 mov %r13,%rax 0.00 : 61bf34: 5b pop %rbx 0.00 : 61bf35: 41 5c pop %r12 0.00 : 61bf37: 41 5d pop %r13 0.00 : 61bf39: 41 5e pop %r14 0.00 : 61bf3b: 41 5f pop %r15 0.00 : 61bf3d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/planner.c:2117 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000061c370 : : * the only good way to distinguish baserels from appendrel children : * is to see what is in the join tree. : */ : static Bitmapset * : get_base_rel_indexes(Node *jtnode) : { 0.00 : 61c370: 55 push %rbp : Bitmapset *result; : : if (jtnode == NULL) 0.00 : 61c371: 48 85 ff test %rdi,%rdi : * the only good way to distinguish baserels from appendrel children : * is to see what is in the join tree. : */ : static Bitmapset * : get_base_rel_indexes(Node *jtnode) : { 0.00 : 61c374: 48 89 e5 mov %rsp,%rbp 0.00 : 61c377: 41 54 push %r12 0.00 : 61c379: 49 89 fc mov %rdi,%r12 0.00 : 61c37c: 53 push %rbx : Bitmapset *result; : : if (jtnode == NULL) 0.00 : 61c37d: 0f 84 8d 00 00 00 je 61c410 : return NULL; : if (IsA(jtnode, RangeTblRef)) 0.00 : 61c383: 8b 07 mov (%rdi),%eax 0.00 : 61c385: 3d 56 01 00 00 cmp $0x156,%eax 0.00 : 61c38a: 0f 84 90 00 00 00 je 61c420 : { : int varno = ((RangeTblRef *) jtnode)->rtindex; : : result = bms_make_singleton(varno); : } : else if (IsA(jtnode, FromExpr)) 0.00 : 61c390: 3d 58 01 00 00 cmp $0x158,%eax 0.00 : 61c395: 74 39 je 61c3d0 : result = NULL; : foreach(l, f->fromlist) : result = bms_join(result, : get_base_rel_indexes(lfirst(l))); : } : else if (IsA(jtnode, JoinExpr)) 0.00 : 61c397: 3d 57 01 00 00 cmp $0x157,%eax 0.00 : 61c39c: 0f 85 8a 00 00 00 jne 61c42c : { : JoinExpr *j = (JoinExpr *) jtnode; : : result = bms_join(get_base_rel_indexes(j->larg), 0.00 : 61c3a2: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 61c3a6: e8 c5 ff ff ff callq 61c370 0.00 : 61c3ab: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 61c3b0: 48 89 c3 mov %rax,%rbx 0.00 : 61c3b3: e8 b8 ff ff ff callq 61c370 0.00 : 61c3b8: 48 89 de mov %rbx,%rsi 0.00 : 61c3bb: 48 89 c7 mov %rax,%rdi : elog(ERROR, "unrecognized node type: %d", : (int) nodeTag(jtnode)); : result = NULL; /* keep compiler quiet */ : } : return result; : } 0.00 : 61c3be: 5b pop %rbx 0.00 : 61c3bf: 41 5c pop %r12 0.00 : 61c3c1: c9 leaveq : } : else if (IsA(jtnode, JoinExpr)) : { : JoinExpr *j = (JoinExpr *) jtnode; : : result = bms_join(get_base_rel_indexes(j->larg), 0.00 : 61c3c2: e9 e9 68 fc ff jmpq 5e2cb0 0.00 : 61c3c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61c3ce: 00 00 : { : FromExpr *f = (FromExpr *) jtnode; : ListCell *l; : : result = NULL; : foreach(l, f->fromlist) /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/planner.c:2117 100.00 : 61c3d0: 48 8b 47 08 mov 0x8(%rdi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61c3d4: 48 85 c0 test %rax,%rax 0.00 : 61c3d7: 74 37 je 61c410 0.00 : 61c3d9: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61c3dd: 48 85 db test %rbx,%rbx 0.00 : 61c3e0: 74 2e je 61c410 0.00 : 61c3e2: 45 31 e4 xor %r12d,%r12d 0.00 : 61c3e5: 0f 1f 00 nopl (%rax) : result = bms_join(result, 0.00 : 61c3e8: 48 8b 3b mov (%rbx),%rdi 0.00 : 61c3eb: e8 80 ff ff ff callq 61c370 0.00 : 61c3f0: 4c 89 e7 mov %r12,%rdi 0.00 : 61c3f3: 48 89 c6 mov %rax,%rsi 0.00 : 61c3f6: e8 b5 68 fc ff callq 5e2cb0 : { : FromExpr *f = (FromExpr *) jtnode; : ListCell *l; : : result = NULL; : foreach(l, f->fromlist) 0.00 : 61c3fb: 48 8b 5b 08 mov 0x8(%rbx),%rbx : result = bms_join(result, 0.00 : 61c3ff: 49 89 c4 mov %rax,%r12 : { : FromExpr *f = (FromExpr *) jtnode; : ListCell *l; : : result = NULL; : foreach(l, f->fromlist) 0.00 : 61c402: 48 85 db test %rbx,%rbx 0.00 : 61c405: 75 e1 jne 61c3e8 : elog(ERROR, "unrecognized node type: %d", : (int) nodeTag(jtnode)); : result = NULL; /* keep compiler quiet */ : } : return result; : } 0.00 : 61c407: 5b pop %rbx 0.00 : 61c408: 4c 89 e0 mov %r12,%rax 0.00 : 61c40b: 41 5c pop %r12 0.00 : 61c40d: c9 leaveq 0.00 : 61c40e: c3 retq 0.00 : 61c40f: 90 nop : result = bms_join(get_base_rel_indexes(j->larg), : get_base_rel_indexes(j->rarg)); : } : else : { : elog(ERROR, "unrecognized node type: %d", 0.00 : 61c410: 45 31 e4 xor %r12d,%r12d : (int) nodeTag(jtnode)); : result = NULL; /* keep compiler quiet */ : } : return result; : } 0.00 : 61c413: 5b pop %rbx 0.00 : 61c414: 4c 89 e0 mov %r12,%rax 0.00 : 61c417: 41 5c pop %r12 0.00 : 61c419: c9 leaveq 0.00 : 61c41a: c3 retq 0.00 : 61c41b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 61c420: 5b pop %rbx : return NULL; : if (IsA(jtnode, RangeTblRef)) : { : int varno = ((RangeTblRef *) jtnode)->rtindex; : : result = bms_make_singleton(varno); 0.00 : 61c421: 8b 7f 04 mov 0x4(%rdi),%edi : elog(ERROR, "unrecognized node type: %d", : (int) nodeTag(jtnode)); : result = NULL; /* keep compiler quiet */ : } : return result; : } 0.00 : 61c424: 41 5c pop %r12 0.00 : 61c426: c9 leaveq : return NULL; : if (IsA(jtnode, RangeTblRef)) : { : int varno = ((RangeTblRef *) jtnode)->rtindex; : : result = bms_make_singleton(varno); 0.00 : 61c427: e9 44 6b fc ff jmpq 5e2f70 : result = bms_join(get_base_rel_indexes(j->larg), : get_base_rel_indexes(j->rarg)); : } : else : { : elog(ERROR, "unrecognized node type: %d", 0.00 : 61c42c: ba c0 b7 89 00 mov $0x89b7c0,%edx 0.00 : 61c431: be 53 08 00 00 mov $0x853,%esi 0.00 : 61c436: bf 8c b5 89 00 mov $0x89b58c,%edi 0.00 : 61c43b: e8 e0 ef 15 00 callq 77b420 0.00 : 61c440: 41 8b 14 24 mov (%r12),%edx 0.00 : 61c444: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 61c449: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61c44e: 31 c0 xor %eax,%eax 0.00 : 61c450: e8 db ed 15 00 callq 77b230 0.00 : 61c455: e8 76 d0 e4 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/../../../../src/include/nodes/pg_list.h:99 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000061cba0 : : * actual output ordering of the plan (in pathkey format). : *-------------------- : */ : static Plan * : grouping_planner(PlannerInfo *root, double tuple_fraction) : { 0.00 : 61cba0: 55 push %rbp 0.00 : 61cba1: 48 89 e5 mov %rsp,%rbp 0.00 : 61cba4: 41 57 push %r15 0.00 : 61cba6: 41 56 push %r14 0.00 : 61cba8: 41 55 push %r13 0.00 : 61cbaa: 41 54 push %r12 0.00 : 61cbac: 53 push %rbx 0.00 : 61cbad: 48 81 ec 48 02 00 00 sub $0x248,%rsp 0.00 : 61cbb4: 48 89 bd e0 fd ff ff mov %rdi,-0x220(%rbp) 0.00 : 61cbbb: f2 0f 11 85 d8 fd ff movsd %xmm0,-0x228(%rbp) 0.00 : 61cbc2: ff : Query *parse = root->parse; 0.00 : 61cbc3: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 61cbc7: 48 89 85 f0 fd ff ff mov %rax,-0x210(%rbp) : List *tlist = parse->targetList; 0.00 : 61cbce: 48 8b 50 48 mov 0x48(%rax),%rdx 0.00 : 61cbd2: 48 89 95 f8 fd ff ff mov %rdx,-0x208(%rbp) : double dNumGroups = 0; : bool use_hashed_distinct = false; : bool tested_hashed_distinct = false; : : /* Tweak caller-supplied tuple_fraction if have LIMIT/OFFSET */ : if (parse->limitCount || parse->limitOffset) 0.00 : 61cbd9: 48 8b b0 90 00 00 00 mov 0x90(%rax),%rsi 0.00 : 61cbe0: 48 85 f6 test %rsi,%rsi 0.00 : 61cbe3: 0f 84 4f 05 00 00 je 61d138 : * Try to obtain the clause values. We use estimate_expression_value : * primarily because it can sometimes do something useful with Params. : */ : if (parse->limitCount) : { : est = estimate_expression_value(root, parse->limitCount); 0.00 : 61cbe9: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61cbf0: e8 5b 21 01 00 callq 62ed50 : if (est && IsA(est, Const)) 0.00 : 61cbf5: 48 85 c0 test %rax,%rax 0.00 : 61cbf8: 74 0c je 61cc06 0.00 : 61cbfa: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 61cc00: 0f 84 5a 07 00 00 je 61d360 : *count_est = 0; /* treat as not present */ : } : else : { : *count_est = DatumGetInt64(((Const *) est)->constvalue); : if (*count_est <= 0) 0.00 : 61cc06: 48 c7 85 08 fe ff ff movq $0xffffffffffffffff,-0x1f8(%rbp) 0.00 : 61cc0d: ff ff ff ff : *count_est = -1; /* can't estimate */ : } : else : *count_est = 0; /* not present */ : : if (parse->limitOffset) 0.00 : 61cc11: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61cc18: 48 8b b0 88 00 00 00 mov 0x88(%rax),%rsi 0.00 : 61cc1f: 48 85 f6 test %rsi,%rsi 0.00 : 61cc22: 0f 84 c8 04 00 00 je 61d0f0 : { : est = estimate_expression_value(root, parse->limitOffset); 0.00 : 61cc28: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61cc2f: e8 1c 21 01 00 callq 62ed50 : if (est && IsA(est, Const)) 0.00 : 61cc34: 48 85 c0 test %rax,%rax 0.00 : 61cc37: 74 0c je 61cc45 0.00 : 61cc39: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 61cc3f: 0f 84 8b 04 00 00 je 61d0d0 : *offset_est = 0; /* treat as not present */ : } : else : { : *offset_est = DatumGetInt64(((Const *) est)->constvalue); : if (*offset_est < 0) 0.00 : 61cc45: 48 c7 85 00 fe ff ff movq $0xffffffffffffffff,-0x200(%rbp) 0.00 : 61cc4c: ff ff ff ff : *offset_est = -1; /* can't estimate */ : } : else : *offset_est = 0; /* not present */ : : if (*count_est != 0) 0.00 : 61cc50: 48 83 bd 08 fe ff ff cmpq $0x0,-0x1f8(%rbp) 0.00 : 61cc57: 00 0.00 : 61cc58: 0f 84 0a 04 00 00 je 61d068 : /* : * A LIMIT clause limits the absolute number of tuples returned. : * However, if it's not a constant LIMIT then we have to guess; for : * lack of a better idea, assume 10% of the plan's result is wanted. : */ : if (*count_est < 0 || *offset_est < 0) 0.00 : 61cc5e: 0f 8c a4 05 00 00 jl 61d208 0.00 : 61cc64: 48 83 bd 00 fe ff ff cmpq $0x0,-0x200(%rbp) 0.00 : 61cc6b: 00 0.00 : 61cc6c: 0f 88 96 05 00 00 js 61d208 : limit_fraction = 0.10; : } : else : { : /* LIMIT (plus OFFSET, if any) is max number of tuples needed */ : limit_fraction = (double) *count_est + (double) *offset_est; 0.00 : 61cc72: f2 48 0f 2a 8d 08 fe cvtsi2sdq -0x1f8(%rbp),%xmm1 0.00 : 61cc79: ff ff 0.00 : 61cc7b: f2 48 0f 2a 85 00 fe cvtsi2sdq -0x200(%rbp),%xmm0 0.00 : 61cc82: ff ff 0.00 : 61cc84: f2 0f 58 c8 addsd %xmm0,%xmm1 : * smaller value; likewise if they are both fractional. If one is : * fractional and the other absolute, we can't easily determine which : * is smaller, but we use the heuristic that the absolute will usually : * be smaller. : */ : if (tuple_fraction >= 1.0) 0.00 : 61cc88: f2 0f 10 05 c8 24 19 movsd 0x1924c8(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 61cc8f: 00 0.00 : 61cc90: f2 0f 10 95 d8 fd ff movsd -0x228(%rbp),%xmm2 0.00 : 61cc97: ff 0.00 : 61cc98: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 61cc9c: 0f 82 22 0a 00 00 jb 61d6c4 : { : if (limit_fraction >= 1.0) 0.00 : 61cca2: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 61cca6: 72 12 jb 61ccba : tuple_fraction = limit_fraction; : } : else : { : /* both fractional */ : tuple_fraction = Min(tuple_fraction, limit_fraction); 0.00 : 61cca8: 66 0f 2e 8d d8 fd ff ucomisd -0x228(%rbp),%xmm1 0.00 : 61ccaf: ff 0.00 : 61ccb0: 77 08 ja 61ccba : } : else : { : /* both fractional, so add them together */ : tuple_fraction += limit_fraction; : if (tuple_fraction >= 1.0) 0.00 : 61ccb2: f2 0f 11 8d d8 fd ff movsd %xmm1,-0x228(%rbp) 0.00 : 61ccb9: ff : : /* : * If we have a known LIMIT, and don't have an unknown OFFSET, we can : * estimate the effects of using a bounded sort. : */ : if (count_est > 0 && offset_est >= 0) 0.00 : 61ccba: 48 83 bd 08 fe ff ff cmpq $0x0,-0x1f8(%rbp) 0.00 : 61ccc1: 00 0.00 : 61ccc2: 0f 8e b0 1b 00 00 jle 61e878 0.00 : 61ccc8: 48 83 bd 00 fe ff ff cmpq $0x0,-0x200(%rbp) 0.00 : 61cccf: 00 0.00 : 61ccd0: 0f 88 a2 1b 00 00 js 61e878 : limit_tuples = (double) count_est + (double) offset_est; 0.00 : 61ccd6: f2 48 0f 2a 95 08 fe cvtsi2sdq -0x1f8(%rbp),%xmm2 0.00 : 61ccdd: ff ff 0.00 : 61ccdf: f2 48 0f 2a 85 00 fe cvtsi2sdq -0x200(%rbp),%xmm0 0.00 : 61cce6: ff ff 0.00 : 61cce8: f2 0f 58 c2 addsd %xmm2,%xmm0 0.00 : 61ccec: f2 0f 11 85 10 fe ff movsd %xmm0,-0x1f0(%rbp) 0.00 : 61ccf3: ff : } : : if (parse->setOperations) 0.00 : 61ccf4: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61ccfb: 48 83 b8 a0 00 00 00 cmpq $0x0,0xa0(%rax) 0.00 : 61cd02: 00 0.00 : 61cd03: 0f 84 a6 06 00 00 je 61d3af : * If there's a top-level ORDER BY, assume we have to fetch all the : * tuples. This might be too simplistic given all the hackery below : * to possibly avoid the sort; but the odds of accurate estimates here : * are pretty low anyway. : */ : if (parse->sortClause) 0.00 : 61cd09: 48 83 b8 80 00 00 00 cmpq $0x0,0x80(%rax) 0.00 : 61cd10: 00 0.00 : 61cd11: 74 0c je 61cd1f 0.00 : 61cd13: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 61cd17: f2 0f 11 85 d8 fd ff movsd %xmm0,-0x228(%rbp) 0.00 : 61cd1e: ff : * Construct the plan for set operations. The result will not need : * any work except perhaps a top-level sort and/or LIMIT. Note that : * any special work for recursive unions is the responsibility of : * plan_set_operations. : */ : result_plan = plan_set_operations(root, tuple_fraction, 0.00 : 61cd1f: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61cd26: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61cd2d: ff 0.00 : 61cd2e: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 61cd32: e8 e9 d9 00 00 callq 62a720 : /* : * Calculate pathkeys representing the sort order (if any) of the set : * operation's result. We have to do this before overwriting the sort : * key information... : */ : current_pathkeys = make_pathkeys_for_sortclauses(root, 0.00 : 61cd37: 48 8b 75 c8 mov -0x38(%rbp),%rsi : * Construct the plan for set operations. The result will not need : * any work except perhaps a top-level sort and/or LIMIT. Note that : * any special work for recursive unions is the responsibility of : * plan_set_operations. : */ : result_plan = plan_set_operations(root, tuple_fraction, 0.00 : 61cd3b: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : /* : * Calculate pathkeys representing the sort order (if any) of the set : * operation's result. We have to do this before overwriting the sort : * key information... : */ : current_pathkeys = make_pathkeys_for_sortclauses(root, 0.00 : 61cd42: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61cd49: 48 8b 50 28 mov 0x28(%rax),%rdx 0.00 : 61cd4d: e8 ae 58 ff ff callq 612600 0.00 : 61cd52: 48 89 85 20 fe ff ff mov %rax,-0x1e0(%rbp) : * resjunk columns!), and transfer any sort key information from the : * original tlist. : */ : Assert(parse->commandType == CMD_SELECT); : : tlist = postprocess_setop_tlist(copyObject(result_plan->targetlist), 0.00 : 61cd59: 48 8b 85 18 fe ff ff mov -0x1e8(%rbp),%rax 0.00 : 61cd60: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 61cd64: e8 27 74 fc ff callq 5e4190 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61cd69: 31 f6 xor %esi,%esi 0.00 : 61cd6b: 48 83 bd f8 fd ff ff cmpq $0x0,-0x208(%rbp) 0.00 : 61cd72: 00 0.00 : 61cd73: 48 89 c7 mov %rax,%rdi 0.00 : 61cd76: 74 0b je 61cd83 0.00 : 61cd78: 48 8b 95 f8 fd ff ff mov -0x208(%rbp),%rdx 0.00 : 61cd7f: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 61cd83: 48 85 ff test %rdi,%rdi 0.00 : 61cd86: 74 39 je 61cdc1 0.00 : 61cd88: 48 8b 57 08 mov 0x8(%rdi),%rdx : postprocess_setop_tlist(List *new_tlist, List *orig_tlist) : { : ListCell *l; : ListCell *orig_tlist_item = list_head(orig_tlist); : : foreach(l, new_tlist) 0.00 : 61cd8c: 48 85 d2 test %rdx,%rdx 0.00 : 61cd8f: 74 30 je 61cdc1 0.00 : 61cd91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : TargetEntry *new_tle = (TargetEntry *) lfirst(l); 0.00 : 61cd98: 48 8b 0a mov (%rdx),%rcx : TargetEntry *orig_tle; : : /* ignore resjunk columns in setop result */ : if (new_tle->resjunk) 0.00 : 61cd9b: 80 79 2a 00 cmpb $0x0,0x2a(%rcx) 0.00 : 61cd9f: 75 17 jne 61cdb8 : continue; : : Assert(orig_tlist_item != NULL); : orig_tle = (TargetEntry *) lfirst(orig_tlist_item); 0.00 : 61cda1: 48 8b 06 mov (%rsi),%rax : orig_tlist_item = lnext(orig_tlist_item); 0.00 : 61cda4: 48 8b 76 08 mov 0x8(%rsi),%rsi : if (orig_tle->resjunk) /* should not happen */ 0.00 : 61cda8: 80 78 2a 00 cmpb $0x0,0x2a(%rax) 0.00 : 61cdac: 0f 85 e8 12 00 00 jne 61e09a : elog(ERROR, "resjunk output columns are not implemented"); : Assert(new_tle->resno == orig_tle->resno); : new_tle->ressortgroupref = orig_tle->ressortgroupref; 0.00 : 61cdb2: 8b 40 20 mov 0x20(%rax),%eax 0.00 : 61cdb5: 89 41 20 mov %eax,0x20(%rcx) : postprocess_setop_tlist(List *new_tlist, List *orig_tlist) : { : ListCell *l; : ListCell *orig_tlist_item = list_head(orig_tlist); : : foreach(l, new_tlist) 0.00 : 61cdb8: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 61cdbc: 48 85 d2 test %rdx,%rdx 0.00 : 61cdbf: 75 d7 jne 61cd98 : if (orig_tle->resjunk) /* should not happen */ : elog(ERROR, "resjunk output columns are not implemented"); : Assert(new_tle->resno == orig_tle->resno); : new_tle->ressortgroupref = orig_tle->ressortgroupref; : } : if (orig_tlist_item != NULL) 0.00 : 61cdc1: 48 85 f6 test %rsi,%rsi 0.00 : 61cdc4: 0f 85 d3 1c 00 00 jne 61ea9d : : /* : * Can't handle FOR [KEY] UPDATE/SHARE here (parser should have : * checked already, but let's make sure). : */ : if (parse->rowMarks) 0.00 : 61cdca: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61cdd1: 48 83 b9 98 00 00 00 cmpq $0x0,0x98(%rcx) 0.00 : 61cdd8: 00 0.00 : 61cdd9: 0f 85 cd 1c 00 00 jne 61eaac : : /* : * Calculate pathkeys that represent result ordering requirements : */ : Assert(parse->distinctClause == NIL); : root->sort_pathkeys = make_pathkeys_for_sortclauses(root, 0.00 : 61cddf: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61cde6: 48 89 fa mov %rdi,%rdx 0.00 : 61cde9: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61cdf0: 48 8b b0 80 00 00 00 mov 0x80(%rax),%rsi 0.00 : 61cdf7: e8 04 58 ff ff callq 612600 0.00 : 61cdfc: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61ce03: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 61ce07: 48 89 82 00 01 00 00 mov %rax,0x100(%rdx) 0.00 : 61ce0e: f2 0f 11 85 28 fe ff movsd %xmm0,-0x1d8(%rbp) 0.00 : 61ce15: ff 0.00 : 61ce16: c6 85 36 fe ff ff 00 movb $0x0,-0x1ca(%rbp) 0.00 : 61ce1d: c6 85 37 fe ff ff 00 movb $0x0,-0x1c9(%rbp) : } /* end of if (setOperations) */ : : /* : * If there is a DISTINCT clause, add the necessary node(s). : */ : if (parse->distinctClause) 0.00 : 61ce24: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61ce2b: 48 83 79 78 00 cmpq $0x0,0x78(%rcx) 0.00 : 61ce30: 0f 84 35 01 00 00 je 61cf6b : * If there was grouping or aggregation, use the current number of : * rows as the estimated number of DISTINCT rows (ie, assume the : * result was already mostly unique). If not, use the number of : * distinct-groups calculated previously. : */ : if (parse->groupClause || root->hasHavingQual || parse->hasAggs) 0.00 : 61ce36: 48 83 79 60 00 cmpq $0x0,0x60(%rcx) 0.00 : 61ce3b: 0f 84 f6 0c 00 00 je 61db37 : dNumDistinctRows = result_plan->plan_rows; 0.00 : 61ce41: 48 8b 85 18 fe ff ff mov -0x1e8(%rbp),%rax 0.00 : 61ce48: f2 0f 10 40 18 movsd 0x18(%rax),%xmm0 0.00 : 61ce4d: f2 0f 11 85 b8 fe ff movsd %xmm0,-0x148(%rbp) 0.00 : 61ce54: ff : else : dNumDistinctRows = dNumGroups; : : /* Also convert to long int --- but 'ware overflow! */ : numDistinctRows = (long) Min(dNumDistinctRows, (double) LONG_MAX); 0.00 : 61ce55: f2 0f 10 8d b8 fe ff movsd -0x148(%rbp),%xmm1 0.00 : 61ce5c: ff 0.00 : 61ce5d: 48 bb ff ff ff ff ff movabs $0x7fffffffffffffff,%rbx 0.00 : 61ce64: ff ff 7f 0.00 : 61ce67: 66 0f 2e 0d b9 51 19 ucomisd 0x1951b9(%rip),%xmm1 # 7b2028 <__func__.15386+0x18> 0.00 : 61ce6e: 00 0.00 : 61ce6f: 73 0f jae 61ce80 0.00 : 61ce71: 7a 0d jp 61ce80 0.00 : 61ce73: f2 0f 10 85 b8 fe ff movsd -0x148(%rbp),%xmm0 0.00 : 61ce7a: ff 0.00 : 61ce7b: f2 48 0f 2c d8 cvttsd2si %xmm0,%rbx : : /* Choose implementation method if we didn't already */ : if (!tested_hashed_distinct) 0.00 : 61ce80: 80 bd 37 fe ff ff 00 cmpb $0x0,-0x1c9(%rbp) 0.00 : 61ce87: 0f 84 23 04 00 00 je 61d2b0 : result_plan->total_cost, : current_pathkeys, : dNumDistinctRows); : } : : if (use_hashed_distinct) 0.00 : 61ce8d: 80 bd 36 fe ff ff 00 cmpb $0x0,-0x1ca(%rbp) 0.00 : 61ce94: 0f 85 7e 03 00 00 jne 61d218 : * DISTINCT ON, we *must* force the final sort now, else it won't : * have the desired behavior. : */ : List *needed_pathkeys; : : if (parse->hasDistinctOn && 0.00 : 61ce9a: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61cea1: 80 79 27 00 cmpb $0x0,0x27(%rcx) 0.00 : 61cea5: 0f 85 cd 02 00 00 jne 61d178 0.00 : 61ceab: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 61ceb2: 48 8b 83 f8 00 00 00 mov 0xf8(%rbx),%rax 0.00 : 61ceb9: 48 89 c7 mov %rax,%rdi : list_length(root->sort_pathkeys)) : needed_pathkeys = root->sort_pathkeys; : else : needed_pathkeys = root->distinct_pathkeys; : : if (!pathkeys_contained_in(needed_pathkeys, current_pathkeys)) 0.00 : 61cebc: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 61cec3: e8 18 4a ff ff callq 6118e0 0.00 : 61cec8: 84 c0 test %al,%al 0.00 : 61ceca: 75 74 jne 61cf40 : { : if (list_length(root->distinct_pathkeys) >= 0.00 : 61cecc: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61ced3: 31 c9 xor %ecx,%ecx 0.00 : 61ced5: 48 8b 80 f8 00 00 00 mov 0xf8(%rax),%rax 0.00 : 61cedc: 48 85 c0 test %rax,%rax 0.00 : 61cedf: 48 89 85 20 fe ff ff mov %rax,-0x1e0(%rbp) 0.00 : 61cee6: 74 0a je 61cef2 0.00 : 61cee8: 48 8b 95 20 fe ff ff mov -0x1e0(%rbp),%rdx 0.00 : 61ceef: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 61cef2: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 61cef9: 31 d2 xor %edx,%edx 0.00 : 61cefb: 48 8b 83 00 01 00 00 mov 0x100(%rbx),%rax 0.00 : 61cf02: 48 85 c0 test %rax,%rax 0.00 : 61cf05: 74 03 je 61cf0a 0.00 : 61cf07: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 61cf0a: 39 d1 cmp %edx,%ecx 0.00 : 61cf0c: 48 0f 4d 85 20 fe ff cmovge -0x1e0(%rbp),%rax 0.00 : 61cf13: ff : /* Assert checks that parser didn't mess up... */ : Assert(pathkeys_contained_in(root->distinct_pathkeys, : current_pathkeys)); : } : : result_plan = (Plan *) make_sort_from_pathkeys(root, 0.00 : 61cf14: 48 8b b5 18 fe ff ff mov -0x1e8(%rbp),%rsi 0.00 : 61cf1b: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61cf22: f2 0f 10 05 2e 56 1a movsd 0x1a562e(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 61cf29: 00 0.00 : 61cf2a: 48 89 c2 mov %rax,%rdx : else : needed_pathkeys = root->distinct_pathkeys; : : if (!pathkeys_contained_in(needed_pathkeys, current_pathkeys)) : { : if (list_length(root->distinct_pathkeys) >= 0.00 : 61cf2d: 48 89 85 20 fe ff ff mov %rax,-0x1e0(%rbp) : /* Assert checks that parser didn't mess up... */ : Assert(pathkeys_contained_in(root->distinct_pathkeys, : current_pathkeys)); : } : : result_plan = (Plan *) make_sort_from_pathkeys(root, 0.00 : 61cf34: e8 a7 89 ff ff callq 6158e0 0.00 : 61cf39: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : result_plan, : current_pathkeys, : -1.0); : } : : result_plan = (Plan *) make_unique(result_plan, 0.00 : 61cf40: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61cf47: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 61cf4e: 48 8b 70 78 mov 0x78(%rax),%rsi 0.00 : 61cf52: e8 09 79 ff ff callq 614860 : parse->distinctClause); : result_plan->plan_rows = dNumDistinctRows; 0.00 : 61cf57: f2 0f 10 85 b8 fe ff movsd -0x148(%rbp),%xmm0 0.00 : 61cf5e: ff : result_plan, : current_pathkeys, : -1.0); : } : : result_plan = (Plan *) make_unique(result_plan, 0.00 : 61cf5f: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : parse->distinctClause); : result_plan->plan_rows = dNumDistinctRows; 0.00 : 61cf66: f2 0f 11 40 18 movsd %xmm0,0x18(%rax) : : /* : * If ORDER BY was given and we were not able to make the plan come out in : * the right order, add an explicit sort step. : */ : if (parse->sortClause) 0.00 : 61cf6b: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61cf72: 48 83 b8 80 00 00 00 cmpq $0x0,0x80(%rax) 0.00 : 61cf79: 00 0.00 : 61cf7a: 74 22 je 61cf9e : { : if (!pathkeys_contained_in(root->sort_pathkeys, current_pathkeys)) 0.00 : 61cf7c: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61cf83: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 61cf8a: 48 8b ba 00 01 00 00 mov 0x100(%rdx),%rdi 0.00 : 61cf91: e8 4a 49 ff ff callq 6118e0 0.00 : 61cf96: 84 c0 test %al,%al 0.00 : 61cf98: 0f 84 72 03 00 00 je 61d310 : * If there is a FOR [KEY] UPDATE/SHARE clause, add the LockRows node. : * (Note: we intentionally test parse->rowMarks not root->rowMarks here. : * If there are only non-locking rowmarks, they should be handled by the : * ModifyTable node instead.) : */ : if (parse->rowMarks) 0.00 : 61cf9e: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61cfa5: 48 83 b8 98 00 00 00 cmpq $0x0,0x98(%rax) 0.00 : 61cfac: 00 0.00 : 61cfad: 74 3a je 61cfe9 : { : result_plan = (Plan *) make_lockrows(result_plan, 0.00 : 61cfaf: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61cfb6: e8 15 4f 00 00 callq 621ed0 0.00 : 61cfbb: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61cfc2: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 61cfc9: 48 8b b2 d0 00 00 00 mov 0xd0(%rdx),%rsi 0.00 : 61cfd0: 89 c2 mov %eax,%edx 0.00 : 61cfd2: e8 09 6e ff ff callq 613de0 0.00 : 61cfd7: 48 c7 85 20 fe ff ff movq $0x0,-0x1e0(%rbp) 0.00 : 61cfde: 00 00 00 00 0.00 : 61cfe2: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : static bool : limit_needed(Query *parse) : { : Node *node; : : node = parse->limitCount; 0.00 : 61cfe9: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61cff0: 48 8b 91 90 00 00 00 mov 0x90(%rcx),%rdx : if (node) 0.00 : 61cff7: 48 85 d2 test %rdx,%rdx 0.00 : 61cffa: 0f 84 c6 01 00 00 je 61d1c6 : { : if (IsA(node, Const)) 0.00 : 61d000: 81 3a 30 01 00 00 cmpl $0x130,(%rdx) 0.00 : 61d006: 0f 84 ac 01 00 00 je 61d1b8 0.00 : 61d00c: 48 8b b1 88 00 00 00 mov 0x88(%rcx),%rsi : /* : * Finally, if there is a LIMIT/OFFSET clause, add the LIMIT node. : */ : if (limit_needed(parse)) : { : result_plan = (Plan *) make_limit(result_plan, 0.00 : 61d013: 4c 8b 85 08 fe ff ff mov -0x1f8(%rbp),%r8 0.00 : 61d01a: 48 8b 8d 00 fe ff ff mov -0x200(%rbp),%rcx 0.00 : 61d021: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 61d028: e8 53 74 ff ff callq 614480 0.00 : 61d02d: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : : /* : * Return the actual output ordering in query_pathkeys for possible use by : * an outer query level. : */ : root->query_pathkeys = current_pathkeys; 0.00 : 61d034: 48 8b 8d 20 fe ff ff mov -0x1e0(%rbp),%rcx 0.00 : 61d03b: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61d042: 48 89 8a e0 00 00 00 mov %rcx,0xe0(%rdx) : : return result_plan; : } 0.00 : 61d049: 48 8b 85 18 fe ff ff mov -0x1e8(%rbp),%rax 0.00 : 61d050: 48 81 c4 48 02 00 00 add $0x248,%rsp 0.00 : 61d057: 5b pop %rbx 0.00 : 61d058: 41 5c pop %r12 0.00 : 61d05a: 41 5d pop %r13 0.00 : 61d05c: 41 5e pop %r14 0.00 : 61d05e: 41 5f pop %r15 0.00 : 61d060: c9 leaveq 0.00 : 61d061: c3 retq 0.00 : 61d062: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* no info from caller, just use limit */ : tuple_fraction = limit_fraction; : } : } : else if (*offset_est != 0 && tuple_fraction > 0.0) 0.00 : 61d068: 48 83 bd 00 fe ff ff cmpq $0x0,-0x200(%rbp) 0.00 : 61d06f: 00 0.00 : 61d070: 0f 84 9a 00 00 00 je 61d110 0.00 : 61d076: 66 0f 57 db xorpd %xmm3,%xmm3 0.00 : 61d07a: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61d081: ff 0.00 : 61d082: 66 0f 2e c3 ucomisd %xmm3,%xmm0 0.00 : 61d086: 0f 86 84 00 00 00 jbe 61d110 : * tuples to be fetched instead of fewer. This only matters if we got : * a tuple_fraction > 0, however. : * : * As above, use 10% if OFFSET is present but unestimatable. : */ : if (*offset_est < 0) 0.00 : 61d08c: 48 83 bd 00 fe ff ff cmpq $0x0,-0x200(%rbp) 0.00 : 61d093: 00 0.00 : 61d094: 0f 88 99 11 00 00 js 61e233 : limit_fraction = 0.10; : else : limit_fraction = (double) *offset_est; 0.00 : 61d09a: f2 48 0f 2a 95 00 fe cvtsi2sdq -0x200(%rbp),%xmm2 0.00 : 61d0a1: ff ff : * If we have absolute counts from both caller and OFFSET, add them : * together; likewise if they are both fractional. If one is : * fractional and the other absolute, we want to take the larger, and : * we heuristically assume that's the fractional one. : */ : if (tuple_fraction >= 1.0) 0.00 : 61d0a3: f2 0f 10 05 ad 20 19 movsd 0x1920ad(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 61d0aa: 00 0.00 : 61d0ab: f2 0f 10 8d d8 fd ff movsd -0x228(%rbp),%xmm1 0.00 : 61d0b2: ff 0.00 : 61d0b3: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 61d0b7: 72 47 jb 61d100 : { : if (limit_fraction >= 1.0) 0.00 : 61d0b9: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 61d0bd: 72 59 jb 61d118 : { : /* both absolute, so add them together */ : tuple_fraction += limit_fraction; 0.00 : 61d0bf: f2 0f 58 95 d8 fd ff addsd -0x228(%rbp),%xmm2 0.00 : 61d0c6: ff 0.00 : 61d0c7: eb 4f jmp 61d118 0.00 : 61d0c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (parse->limitOffset) : { : est = estimate_expression_value(root, parse->limitOffset); : if (est && IsA(est, Const)) : { : if (((Const *) est)->constisnull) 0.00 : 61d0d0: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 61d0d4: 75 1a jne 61d0f0 : /* Treat NULL as no offset; the executor will too */ : *offset_est = 0; /* treat as not present */ : } : else : { : *offset_est = DatumGetInt64(((Const *) est)->constvalue); 0.00 : 61d0d6: 48 8b 40 18 mov 0x18(%rax),%rax : if (*offset_est < 0) 0.00 : 61d0da: 48 85 c0 test %rax,%rax : /* Treat NULL as no offset; the executor will too */ : *offset_est = 0; /* treat as not present */ : } : else : { : *offset_est = DatumGetInt64(((Const *) est)->constvalue); 0.00 : 61d0dd: 48 89 85 00 fe ff ff mov %rax,-0x200(%rbp) : if (*offset_est < 0) 0.00 : 61d0e4: 0f 89 66 fb ff ff jns 61cc50 0.00 : 61d0ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61d0f0: 48 c7 85 00 fe ff ff movq $0x0,-0x200(%rbp) 0.00 : 61d0f7: 00 00 00 00 0.00 : 61d0fb: e9 50 fb ff ff jmpq 61cc50 : tuple_fraction = limit_fraction; : } : } : else : { : if (limit_fraction >= 1.0) 0.00 : 61d100: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 61d104: 0f 82 86 11 00 00 jb 61e290 0.00 : 61d10a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Return the actual output ordering in query_pathkeys for possible use by : * an outer query level. : */ : root->query_pathkeys = current_pathkeys; 0.00 : 61d110: f2 0f 10 95 d8 fd ff movsd -0x228(%rbp),%xmm2 0.00 : 61d117: ff 0.00 : 61d118: f2 0f 10 05 38 54 1a movsd 0x1a5438(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 61d11f: 00 0.00 : 61d120: f2 0f 11 95 d8 fd ff movsd %xmm2,-0x228(%rbp) 0.00 : 61d127: ff 0.00 : 61d128: f2 0f 11 85 10 fe ff movsd %xmm0,-0x1f0(%rbp) 0.00 : 61d12f: ff 0.00 : 61d130: e9 bf fb ff ff jmpq 61ccf4 0.00 : 61d135: 0f 1f 00 nopl (%rax) : double dNumGroups = 0; : bool use_hashed_distinct = false; : bool tested_hashed_distinct = false; : : /* Tweak caller-supplied tuple_fraction if have LIMIT/OFFSET */ : if (parse->limitCount || parse->limitOffset) 0.00 : 61d138: 48 8b b0 88 00 00 00 mov 0x88(%rax),%rsi 0.00 : 61d13f: 48 c7 85 08 fe ff ff movq $0x0,-0x1f8(%rbp) 0.00 : 61d146: 00 00 00 00 0.00 : 61d14a: 48 85 f6 test %rsi,%rsi 0.00 : 61d14d: 0f 85 d5 fa ff ff jne 61cc28 0.00 : 61d153: f2 0f 10 05 fd 53 1a movsd 0x1a53fd(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 61d15a: 00 0.00 : 61d15b: 48 c7 85 00 fe ff ff movq $0x0,-0x200(%rbp) 0.00 : 61d162: 00 00 00 00 0.00 : 61d166: f2 0f 11 85 10 fe ff movsd %xmm0,-0x1f0(%rbp) 0.00 : 61d16d: ff 0.00 : 61d16e: e9 81 fb ff ff jmpq 61ccf4 0.00 : 61d173: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * DISTINCT ON, we *must* force the final sort now, else it won't : * have the desired behavior. : */ : List *needed_pathkeys; : : if (parse->hasDistinctOn && 0.00 : 61d178: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61d17f: 31 c9 xor %ecx,%ecx 0.00 : 61d181: 48 8b 82 f8 00 00 00 mov 0xf8(%rdx),%rax 0.00 : 61d188: 48 85 c0 test %rax,%rax 0.00 : 61d18b: 74 03 je 61d190 0.00 : 61d18d: 8b 48 04 mov 0x4(%rax),%ecx 0.00 : 61d190: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 61d197: 31 d2 xor %edx,%edx 0.00 : 61d199: 48 8b bb 00 01 00 00 mov 0x100(%rbx),%rdi 0.00 : 61d1a0: 48 85 ff test %rdi,%rdi 0.00 : 61d1a3: 74 03 je 61d1a8 0.00 : 61d1a5: 8b 57 04 mov 0x4(%rdi),%edx 0.00 : 61d1a8: 39 d1 cmp %edx,%ecx 0.00 : 61d1aa: 0f 8c 0c fd ff ff jl 61cebc 0.00 : 61d1b0: e9 04 fd ff ff jmpq 61ceb9 0.00 : 61d1b5: 0f 1f 00 nopl (%rax) : if (node) : { : if (IsA(node, Const)) : { : /* NULL indicates LIMIT ALL, ie, no limit */ : if (!((Const *) node)->constisnull) 0.00 : 61d1b8: 80 7a 20 00 cmpb $0x0,0x20(%rdx) 0.00 : 61d1bc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 61d1c0: 0f 84 d6 01 00 00 je 61d39c : } : else : return true; /* non-constant LIMIT */ : } : : node = parse->limitOffset; 0.00 : 61d1c6: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61d1cd: 48 8b b0 88 00 00 00 mov 0x88(%rax),%rsi : if (node) 0.00 : 61d1d4: 48 85 f6 test %rsi,%rsi 0.00 : 61d1d7: 0f 84 57 fe ff ff je 61d034 : { : if (IsA(node, Const)) 0.00 : 61d1dd: 81 3e 30 01 00 00 cmpl $0x130,(%rsi) 0.00 : 61d1e3: 0f 85 2a fe ff ff jne 61d013 : { : /* Treat NULL as no offset; the executor would too */ : if (!((Const *) node)->constisnull) 0.00 : 61d1e9: 80 7e 20 00 cmpb $0x0,0x20(%rsi) 0.00 : 61d1ed: 0f 85 41 fe ff ff jne 61d034 : { : int64 offset = DatumGetInt64(((Const *) node)->constvalue); : : if (offset != 0) 0.00 : 61d1f3: 48 83 7e 18 00 cmpq $0x0,0x18(%rsi) 0.00 : 61d1f8: 0f 84 36 fe ff ff je 61d034 0.00 : 61d1fe: 66 90 xchg %ax,%ax 0.00 : 61d200: e9 0e fe ff ff jmpq 61d013 0.00 : 61d205: 0f 1f 00 nopl (%rax) : limit_fraction = 0.10; : } : else : { : /* LIMIT (plus OFFSET, if any) is max number of tuples needed */ : limit_fraction = (double) *count_est + (double) *offset_est; 0.00 : 61d208: f2 0f 10 0d e0 a7 25 movsd 0x25a7e0(%rip),%xmm1 # 8779f0 <__func__.20024+0x30> 0.00 : 61d20f: 00 0.00 : 61d210: e9 73 fa ff ff jmpq 61cc88 0.00 : 61d215: 0f 1f 00 nopl (%rax) : } : : if (use_hashed_distinct) : { : /* Hashed aggregate plan --- no sort needed */ : result_plan = (Plan *) make_agg(root, 0.00 : 61d218: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 61d21f: 48 8b 7a 78 mov 0x78(%rdx),%rdi 0.00 : 61d223: e8 98 9d 01 00 callq 636fc0 0.00 : 61d228: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61d22f: 49 89 c4 mov %rax,%r12 0.00 : 61d232: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61d239: 48 8b 71 28 mov 0x28(%rcx),%rsi 0.00 : 61d23d: 48 8b 78 78 mov 0x78(%rax),%rdi 0.00 : 61d241: e8 ba 9e 01 00 callq 637100 0.00 : 61d246: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61d24d: 48 8b 51 78 mov 0x78(%rcx),%rdx 0.00 : 61d251: 31 c9 xor %ecx,%ecx 0.00 : 61d253: 48 85 d2 test %rdx,%rdx 0.00 : 61d256: 74 03 je 61d25b 0.00 : 61d258: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 61d25b: 48 8b 95 18 fe ff ff mov -0x1e8(%rbp),%rdx 0.00 : 61d262: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61d269: 41 89 c9 mov %ecx,%r9d 0.00 : 61d26c: 45 31 c0 xor %r8d,%r8d 0.00 : 61d26f: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 61d274: 48 8b 72 28 mov 0x28(%rdx),%rsi 0.00 : 61d278: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 61d27d: 31 d2 xor %edx,%edx 0.00 : 61d27f: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 61d284: 4c 89 64 24 08 mov %r12,0x8(%rsp) 0.00 : 61d289: 48 89 04 24 mov %rax,(%rsp) 0.00 : 61d28d: e8 6e 7a ff ff callq 614d00 0.00 : 61d292: 48 c7 85 20 fe ff ff movq $0x0,-0x1e0(%rbp) 0.00 : 61d299: 00 00 00 00 0.00 : 61d29d: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) 0.00 : 61d2a4: e9 c2 fc ff ff jmpq 61cf6b 0.00 : 61d2a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * At this point, either hashed or sorted grouping will have to : * work from result_plan, so we pass that as both "cheapest" and : * "sorted". : */ : use_hashed_distinct = 0.00 : 61d2b0: 48 8b 85 18 fe ff ff mov -0x1e8(%rbp),%rax 0.00 : 61d2b7: 48 8b 95 20 fe ff ff mov -0x1e0(%rbp),%rdx 0.00 : 61d2be: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61d2c5: f2 0f 10 bd b8 fe ff movsd -0x148(%rbp),%xmm7 0.00 : 61d2cc: ff 0.00 : 61d2cd: f2 0f 10 8d 10 fe ff movsd -0x1f0(%rbp),%xmm1 0.00 : 61d2d4: ff 0.00 : 61d2d5: f2 0f 10 60 10 movsd 0x10(%rax),%xmm4 0.00 : 61d2da: 8b 70 20 mov 0x20(%rax),%esi 0.00 : 61d2dd: f2 0f 10 58 08 movsd 0x8(%rax),%xmm3 0.00 : 61d2e2: 66 0f 28 f4 movapd %xmm4,%xmm6 0.00 : 61d2e6: f2 0f 10 50 18 movsd 0x18(%rax),%xmm2 0.00 : 61d2eb: 66 0f 28 eb movapd %xmm3,%xmm5 0.00 : 61d2ef: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61d2f6: ff 0.00 : 61d2f7: e8 d4 f4 ff ff callq 61c7d0 0.00 : 61d2fc: 88 85 36 fe ff ff mov %al,-0x1ca(%rbp) 0.00 : 61d302: e9 86 fb ff ff jmpq 61ce8d 0.00 : 61d307: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61d30e: 00 00 : */ : if (parse->sortClause) : { : if (!pathkeys_contained_in(root->sort_pathkeys, current_pathkeys)) : { : result_plan = (Plan *) make_sort_from_pathkeys(root, 0.00 : 61d310: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61d317: 48 8b b5 18 fe ff ff mov -0x1e8(%rbp),%rsi 0.00 : 61d31e: f2 0f 10 85 10 fe ff movsd -0x1f0(%rbp),%xmm0 0.00 : 61d325: ff 0.00 : 61d326: 48 8b 91 00 01 00 00 mov 0x100(%rcx),%rdx 0.00 : 61d32d: 48 89 cf mov %rcx,%rdi 0.00 : 61d330: e8 ab 85 ff ff callq 6158e0 : result_plan, : root->sort_pathkeys, : limit_tuples); : current_pathkeys = root->sort_pathkeys; 0.00 : 61d335: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx : */ : if (parse->sortClause) : { : if (!pathkeys_contained_in(root->sort_pathkeys, current_pathkeys)) : { : result_plan = (Plan *) make_sort_from_pathkeys(root, 0.00 : 61d33c: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : result_plan, : root->sort_pathkeys, : limit_tuples); : current_pathkeys = root->sort_pathkeys; 0.00 : 61d343: 48 8b 9b 00 01 00 00 mov 0x100(%rbx),%rbx 0.00 : 61d34a: 48 89 9d 20 fe ff ff mov %rbx,-0x1e0(%rbp) 0.00 : 61d351: e9 48 fc ff ff jmpq 61cf9e 0.00 : 61d356: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 61d35d: 00 00 00 : if (parse->limitCount) : { : est = estimate_expression_value(root, parse->limitCount); : if (est && IsA(est, Const)) : { : if (((Const *) est)->constisnull) 0.00 : 61d360: 48 c7 85 08 fe ff ff movq $0x0,-0x1f8(%rbp) 0.00 : 61d367: 00 00 00 00 0.00 : 61d36b: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 61d36f: 0f 85 9c f8 ff ff jne 61cc11 : /* NULL indicates LIMIT ALL, ie, no limit */ : *count_est = 0; /* treat as not present */ : } : else : { : *count_est = DatumGetInt64(((Const *) est)->constvalue); 0.00 : 61d375: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 61d379: 48 89 85 08 fe ff ff mov %rax,-0x1f8(%rbp) : if (*count_est <= 0) 0.00 : 61d380: 48 85 c0 test %rax,%rax 0.00 : 61d383: b8 01 00 00 00 mov $0x1,%eax 0.00 : 61d388: 48 0f 4f 85 08 fe ff cmovg -0x1f8(%rbp),%rax 0.00 : 61d38f: ff 0.00 : 61d390: 48 89 85 08 fe ff ff mov %rax,-0x1f8(%rbp) 0.00 : 61d397: e9 75 f8 ff ff jmpq 61cc11 : if (node) : { : if (IsA(node, Const)) : { : /* NULL indicates LIMIT ALL, ie, no limit */ : if (!((Const *) node)->constisnull) 0.00 : 61d39c: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 61d3a3: 48 8b b3 88 00 00 00 mov 0x88(%rbx),%rsi 0.00 : 61d3aa: e9 64 fc ff ff jmpq 61d013 : : /* A recursive query should always have setOperations */ : Assert(!root->hasRecursion); : : /* Preprocess GROUP BY clause, if any */ : if (parse->groupClause) 0.00 : 61d3af: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx : int path_width; : bool use_hashed_grouping = false; : WindowFuncLists *wflists = NULL; : List *activeWindows = NIL; : : MemSet(&agg_costs, 0, sizeof(AggClauseCosts)); 0.00 : 61d3b6: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 61d3bd: 00 0.00 : 61d3be: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) 0.00 : 61d3c5: 00 0.00 : 61d3c6: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 61d3cd: 00 0.00 : 61d3ce: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 61d3d5: 00 0.00 : 61d3d6: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 61d3dd: 00 : : /* A recursive query should always have setOperations */ : Assert(!root->hasRecursion); : : /* Preprocess GROUP BY clause, if any */ : if (parse->groupClause) 0.00 : 61d3de: 48 8b 42 60 mov 0x60(%rdx),%rax 0.00 : 61d3e2: 48 85 c0 test %rax,%rax 0.00 : 61d3e5: 0f 84 1e 11 00 00 je 61e509 : * the parser already enforced that that matches ORDER BY. : */ : static void : preprocess_groupclause(PlannerInfo *root) : { : Query *parse = root->parse; 0.00 : 61d3eb: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61d3f2: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 61d3f6: 48 89 8d c0 fe ff ff mov %rcx,-0x140(%rbp) : bool partial_match; : ListCell *sl; : ListCell *gl; : : /* If no ORDER BY, nothing useful to do here */ : if (parse->sortClause == NIL) 0.00 : 61d3fd: 48 8b 91 80 00 00 00 mov 0x80(%rcx),%rdx 0.00 : 61d404: 48 85 d2 test %rdx,%rdx 0.00 : 61d407: 0f 84 f0 00 00 00 je 61d4fd : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61d40d: 4c 8b 7a 08 mov 0x8(%rdx),%r15 : * items, but only as far as we can make a matching prefix. : * : * This code assumes that the sortClause contains no duplicate items. : */ : new_groupclause = NIL; : foreach(sl, parse->sortClause) 0.00 : 61d411: 4d 85 ff test %r15,%r15 0.00 : 61d414: 0f 84 e3 00 00 00 je 61d4fd 0.00 : 61d41a: 45 31 f6 xor %r14d,%r14d 0.00 : 61d41d: 0f 1f 00 nopl (%rax) : { : SortGroupClause *sc = (SortGroupClause *) lfirst(sl); : : foreach(gl, parse->groupClause) 0.00 : 61d420: 48 8b 9d c0 fe ff ff mov -0x140(%rbp),%rbx : * This code assumes that the sortClause contains no duplicate items. : */ : new_groupclause = NIL; : foreach(sl, parse->sortClause) : { : SortGroupClause *sc = (SortGroupClause *) lfirst(sl); 0.00 : 61d427: 4d 8b 2f mov (%r15),%r13 : : foreach(gl, parse->groupClause) 0.00 : 61d42a: 48 8b 43 60 mov 0x60(%rbx),%rax 0.00 : 61d42e: 48 85 c0 test %rax,%rax 0.00 : 61d431: 74 45 je 61d478 0.00 : 61d433: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61d437: 48 85 db test %rbx,%rbx 0.00 : 61d43a: 75 0d jne 61d449 0.00 : 61d43c: eb 3a jmp 61d478 0.00 : 61d43e: 66 90 xchg %ax,%ax 0.00 : 61d440: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61d444: 48 85 db test %rbx,%rbx 0.00 : 61d447: 74 2f je 61d478 : { : SortGroupClause *gc = (SortGroupClause *) lfirst(gl); 0.00 : 61d449: 4c 8b 23 mov (%rbx),%r12 : : if (equal(gc, sc)) 0.00 : 61d44c: 4c 89 ee mov %r13,%rsi 0.00 : 61d44f: 4c 89 e7 mov %r12,%rdi 0.00 : 61d452: e8 79 dc fc ff callq 5eb0d0 0.00 : 61d457: 84 c0 test %al,%al 0.00 : 61d459: 74 e5 je 61d440 : { : new_groupclause = lappend(new_groupclause, gc); 0.00 : 61d45b: 4c 89 f7 mov %r14,%rdi 0.00 : 61d45e: 4c 89 e6 mov %r12,%rsi 0.00 : 61d461: e8 1a 4a fc ff callq 5e1e80 : * items, but only as far as we can make a matching prefix. : * : * This code assumes that the sortClause contains no duplicate items. : */ : new_groupclause = NIL; : foreach(sl, parse->sortClause) 0.00 : 61d466: 4d 8b 7f 08 mov 0x8(%r15),%r15 : { : SortGroupClause *gc = (SortGroupClause *) lfirst(gl); : : if (equal(gc, sc)) : { : new_groupclause = lappend(new_groupclause, gc); 0.00 : 61d46a: 49 89 c6 mov %rax,%r14 : * items, but only as far as we can make a matching prefix. : * : * This code assumes that the sortClause contains no duplicate items. : */ : new_groupclause = NIL; : foreach(sl, parse->sortClause) 0.00 : 61d46d: 4d 85 ff test %r15,%r15 0.00 : 61d470: 75 ae jne 61d420 0.00 : 61d472: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* Did we match all of the ORDER BY list, or just some of it? */ : partial_match = (sl != NULL); : : /* If no match at all, no point in reordering GROUP BY */ : if (new_groupclause == NIL) 0.00 : 61d478: 4d 85 f6 test %r14,%r14 0.00 : 61d47b: 0f 84 e3 0f 00 00 je 61e464 : * GROUP BY list if the result is that one list is a prefix of the other : * --- otherwise there's no possibility of a common sort. Also, give up : * if there are any non-sortable GROUP BY items, since then there's no : * hope anyway. : */ : foreach(gl, parse->groupClause) 0.00 : 61d481: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : 61d488: 48 8b 41 60 mov 0x60(%rcx),%rax 0.00 : 61d48c: 48 85 c0 test %rax,%rax 0.00 : 61d48f: 74 4d je 61d4de 0.00 : 61d491: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 61d495: 4d 85 e4 test %r12,%r12 0.00 : 61d498: 74 44 je 61d4de 0.00 : 61d49a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : SortGroupClause *gc = (SortGroupClause *) lfirst(gl); 0.00 : 61d4a0: 49 8b 1c 24 mov (%r12),%rbx : : if (list_member_ptr(new_groupclause, gc)) 0.00 : 61d4a4: 4c 89 f7 mov %r14,%rdi 0.00 : 61d4a7: 48 89 de mov %rbx,%rsi 0.00 : 61d4aa: e8 71 40 fc ff callq 5e1520 0.00 : 61d4af: 84 c0 test %al,%al 0.00 : 61d4b1: 75 21 jne 61d4d4 : continue; /* it matched an ORDER BY item */ : if (partial_match) 0.00 : 61d4b3: 4d 85 ff test %r15,%r15 0.00 : 61d4b6: 75 31 jne 61d4e9 : return; /* give up, no common sort possible */ : if (!OidIsValid(gc->sortop)) 0.00 : 61d4b8: 8b 43 0c mov 0xc(%rbx),%eax 0.00 : 61d4bb: 85 c0 test %eax,%eax 0.00 : 61d4bd: 0f 1f 00 nopl (%rax) 0.00 : 61d4c0: 0f 84 9e 0f 00 00 je 61e464 : return; /* give up, GROUP BY can't be sorted */ : new_groupclause = lappend(new_groupclause, gc); 0.00 : 61d4c6: 4c 89 f7 mov %r14,%rdi 0.00 : 61d4c9: 48 89 de mov %rbx,%rsi 0.00 : 61d4cc: e8 af 49 fc ff callq 5e1e80 0.00 : 61d4d1: 49 89 c6 mov %rax,%r14 : * GROUP BY list if the result is that one list is a prefix of the other : * --- otherwise there's no possibility of a common sort. Also, give up : * if there are any non-sortable GROUP BY items, since then there's no : * hope anyway. : */ : foreach(gl, parse->groupClause) 0.00 : 61d4d4: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61d4d9: 4d 85 e4 test %r12,%r12 0.00 : 61d4dc: 75 c2 jne 61d4a0 : new_groupclause = lappend(new_groupclause, gc); : } : : /* Success --- install the rearranged GROUP BY list */ : Assert(list_length(parse->groupClause) == list_length(new_groupclause)); : parse->groupClause = new_groupclause; 0.00 : 61d4de: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : 61d4e5: 4c 89 71 60 mov %r14,0x60(%rcx) 0.00 : 61d4e9: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 61d4f0: 48 8b 43 60 mov 0x60(%rbx),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61d4f4: 48 85 c0 test %rax,%rax 0.00 : 61d4f7: 0f 84 0c 10 00 00 je 61e509 0.00 : 61d4fd: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 61d500: 89 85 4c fe ff ff mov %eax,-0x1b4(%rbp) : if (parse->groupClause) : preprocess_groupclause(root); : numGroupCols = list_length(parse->groupClause); : : /* Preprocess targetlist */ : tlist = preprocess_targetlist(root, tlist); 0.00 : 61d506: 48 8b b5 f8 fd ff ff mov -0x208(%rbp),%rsi 0.00 : 61d50d: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61d514: e8 57 ad 00 00 callq 628270 : : /* : * Expand any rangetable entries that have security barrier quals. : * This may add new security barrier subquery RTEs to the rangetable. : */ : expand_security_quals(root, tlist); 0.00 : 61d519: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61d520: 48 89 c6 mov %rax,%rsi : if (parse->groupClause) : preprocess_groupclause(root); : numGroupCols = list_length(parse->groupClause); : : /* Preprocess targetlist */ : tlist = preprocess_targetlist(root, tlist); 0.00 : 61d523: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) : : /* : * Expand any rangetable entries that have security barrier quals. : * This may add new security barrier subquery RTEs to the rangetable. : */ : expand_security_quals(root, tlist); 0.00 : 61d52a: e8 41 a7 00 00 callq 627c70 : root->glob->has_rls = parse->hasRowSecurity; 0.00 : 61d52f: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 61d536: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61d53d: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 61d541: 0f b6 41 2b movzbl 0x2b(%rcx),%eax 0.00 : 61d545: 88 42 5d mov %al,0x5d(%rdx) : * Locate any window functions in the tlist. (We don't need to look : * anywhere else, since expressions used in ORDER BY will be in there : * too.) Note that they could all have been eliminated by constant : * folding, in which case we don't need to do any more work. : */ : if (parse->hasWindowFuncs) 0.00 : 61d548: 80 79 25 00 cmpb $0x0,0x25(%rcx) 0.00 : 61d54c: 0f 85 72 0b 00 00 jne 61e0c4 0.00 : 61d552: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 61d559: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61d55d: 48 c7 85 60 fe ff ff movq $0x0,-0x1a0(%rbp) 0.00 : 61d564: 00 00 00 00 0.00 : 61d568: 48 c7 85 68 fe ff ff movq $0x0,-0x198(%rbp) 0.00 : 61d56f: 00 00 00 00 0.00 : 61d573: 48 89 9d e8 fe ff ff mov %rbx,-0x118(%rbp) : : /* : * If we're not grouping or aggregating, there's nothing to do here; : * query_planner should receive the unmodified target list. : */ : if (!parse->hasAggs && !parse->groupClause && !root->hasHavingQual && 0.00 : 61d57a: 48 8b 9d e8 fe ff ff mov -0x118(%rbp),%rbx 0.00 : 61d581: 80 7b 24 00 cmpb $0x0,0x24(%rbx) 0.00 : 61d585: 0f 85 6b 0c 00 00 jne 61e1f6 0.00 : 61d58b: 48 8b 43 60 mov 0x60(%rbx),%rax 0.00 : 61d58f: 48 85 c0 test %rax,%rax 0.00 : 61d592: 0f 84 98 12 00 00 je 61e830 0.00 : 61d598: 8b 40 04 mov 0x4(%rax),%eax : sub_tlist = NIL; : non_group_cols = NIL; : *need_tlist_eval = false; /* only eval if not flat tlist */ : : numCols = list_length(parse->groupClause); : if (numCols > 0) 0.00 : 61d59b: 85 c0 test %eax,%eax 0.00 : 61d59d: 0f 8e 67 0c 00 00 jle 61e20a : * 1..N, but we don't want callers to assume that. : */ : AttrNumber *grpColIdx; : ListCell *tl; : : grpColIdx = (AttrNumber *) palloc0(sizeof(AttrNumber) * numCols); 0.00 : 61d5a3: 48 63 f8 movslq %eax,%rdi 0.00 : 61d5a6: 48 01 ff add %rdi,%rdi 0.00 : 61d5a9: e8 c2 b9 17 00 callq 798f70 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61d5ae: 48 83 bd f0 fe ff ff cmpq $0x0,-0x110(%rbp) 0.00 : 61d5b5: 00 0.00 : 61d5b6: 48 89 85 40 fe ff ff mov %rax,-0x1c0(%rbp) 0.00 : 61d5bd: 0f 84 26 01 00 00 je 61d6e9 0.00 : 61d5c3: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 61d5ca: 4c 8b 6b 08 mov 0x8(%rbx),%r13 : *groupColIdx = grpColIdx; : : foreach(tl, tlist) 0.00 : 61d5ce: 4d 85 ed test %r13,%r13 0.00 : 61d5d1: 0f 84 12 01 00 00 je 61d6e9 0.00 : 61d5d7: 45 31 e4 xor %r12d,%r12d 0.00 : 61d5da: 45 31 ff xor %r15d,%r15d 0.00 : 61d5dd: c6 85 4b fe ff ff 00 movb $0x0,-0x1b5(%rbp) 0.00 : 61d5e4: eb 27 jmp 61d60d 0.00 : 61d5e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 61d5ed: 00 00 00 : /* : * Non-grouping column, so just remember the expression for : * later call to pull_var_clause. There's no need for : * pull_var_clause to examine the TargetEntry node itself. : */ : non_group_cols = lappend(non_group_cols, tle->expr); 0.00 : 61d5f0: 48 8b 77 08 mov 0x8(%rdi),%rsi 0.00 : 61d5f4: 4c 89 ff mov %r15,%rdi 0.00 : 61d5f7: e8 84 48 fc ff callq 5e1e80 0.00 : 61d5fc: 49 89 c7 mov %rax,%r15 0.00 : 61d5ff: 90 nop : ListCell *tl; : : grpColIdx = (AttrNumber *) palloc0(sizeof(AttrNumber) * numCols); : *groupColIdx = grpColIdx; : : foreach(tl, tlist) 0.00 : 61d600: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 61d604: 4d 85 ed test %r13,%r13 0.00 : 61d607: 0f 84 e9 00 00 00 je 61d6f6 : { : TargetEntry *tle = (TargetEntry *) lfirst(tl); 0.00 : 61d60d: 49 8b 7d 00 mov 0x0(%r13),%rdi : */ : static int : get_grouping_column_index(Query *parse, TargetEntry *tle) : { : int colno = 0; : Index ressortgroupref = tle->ressortgroupref; 0.00 : 61d611: 8b 77 20 mov 0x20(%rdi),%esi : ListCell *gl; : : /* No need to search groupClause if TLE hasn't got a sortgroupref */ : if (ressortgroupref == 0) 0.00 : 61d614: 85 f6 test %esi,%esi 0.00 : 61d616: 74 d8 je 61d5f0 : return -1; : : foreach(gl, parse->groupClause) 0.00 : 61d618: 48 8b 95 e8 fe ff ff mov -0x118(%rbp),%rdx 0.00 : 61d61f: 48 8b 42 60 mov 0x60(%rdx),%rax 0.00 : 61d623: 48 85 c0 test %rax,%rax 0.00 : 61d626: 74 c8 je 61d5f0 0.00 : 61d628: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 61d62c: 48 85 d2 test %rdx,%rdx 0.00 : 61d62f: 74 bf je 61d5f0 : { : SortGroupClause *grpcl = (SortGroupClause *) lfirst(gl); : : if (grpcl->tleSortGroupRef == ressortgroupref) 0.00 : 61d631: 48 8b 02 mov (%rdx),%rax 0.00 : 61d634: 31 c9 xor %ecx,%ecx 0.00 : 61d636: 45 31 f6 xor %r14d,%r14d 0.00 : 61d639: 3b 70 04 cmp 0x4(%rax),%esi 0.00 : 61d63c: 74 21 je 61d65f 0.00 : 61d63e: 66 90 xchg %ax,%ax : : /* No need to search groupClause if TLE hasn't got a sortgroupref */ : if (ressortgroupref == 0) : return -1; : : foreach(gl, parse->groupClause) 0.00 : 61d640: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 61d644: 48 85 d2 test %rdx,%rdx 0.00 : 61d647: 74 a7 je 61d5f0 : { : SortGroupClause *grpcl = (SortGroupClause *) lfirst(gl); : : if (grpcl->tleSortGroupRef == ressortgroupref) 0.00 : 61d649: 48 8b 02 mov (%rdx),%rax : return colno; : colno++; 0.00 : 61d64c: 83 c1 01 add $0x1,%ecx : : foreach(gl, parse->groupClause) : { : SortGroupClause *grpcl = (SortGroupClause *) lfirst(gl); : : if (grpcl->tleSortGroupRef == ressortgroupref) 0.00 : 61d64f: 3b 70 04 cmp 0x4(%rax),%esi 0.00 : 61d652: 75 ec jne 61d640 : { : TargetEntry *tle = (TargetEntry *) lfirst(tl); : int colno; : : colno = get_grouping_column_index(parse, tle); : if (colno >= 0) 0.00 : 61d654: 85 c9 test %ecx,%ecx 0.00 : 61d656: 78 98 js 61d5f0 0.00 : 61d658: 48 63 c1 movslq %ecx,%rax 0.00 : 61d65b: 4c 8d 34 00 lea (%rax,%rax,1),%r14 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61d65f: 4d 85 e4 test %r12,%r12 0.00 : 61d662: be 01 00 00 00 mov $0x1,%esi 0.00 : 61d667: 74 0c je 61d675 0.00 : 61d669: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 61d66f: 83 c0 01 add $0x1,%eax 0.00 : 61d672: 0f bf f0 movswl %ax,%esi : * It's a grouping column, so add it to the result tlist and : * remember its resno in grpColIdx[]. : */ : TargetEntry *newtle; : : newtle = makeTargetEntry(tle->expr, 0.00 : 61d675: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 61d679: 31 c9 xor %ecx,%ecx 0.00 : 61d67b: 31 d2 xor %edx,%edx 0.00 : 61d67d: e8 4e 42 fd ff callq 5f18d0 : list_length(sub_tlist) + 1, : NULL, : false); : sub_tlist = lappend(sub_tlist, newtle); 0.00 : 61d682: 4c 89 e7 mov %r12,%rdi : * It's a grouping column, so add it to the result tlist and : * remember its resno in grpColIdx[]. : */ : TargetEntry *newtle; : : newtle = makeTargetEntry(tle->expr, 0.00 : 61d685: 48 89 c3 mov %rax,%rbx : list_length(sub_tlist) + 1, : NULL, : false); : sub_tlist = lappend(sub_tlist, newtle); 0.00 : 61d688: 48 89 c6 mov %rax,%rsi 0.00 : 61d68b: e8 f0 47 fc ff callq 5e1e80 0.00 : 61d690: 49 89 c4 mov %rax,%r12 : : Assert(grpColIdx[colno] == 0); /* no dups expected */ : grpColIdx[colno] = newtle->resno; 0.00 : 61d693: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.00 : 61d697: 48 8b 8d 40 fe ff ff mov -0x1c0(%rbp),%rcx 0.00 : 61d69e: 66 42 89 04 31 mov %ax,(%rcx,%r14,1) : : if (!(newtle->expr && IsA(newtle->expr, Var))) 0.00 : 61d6a3: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 61d6a7: 48 85 c0 test %rax,%rax 0.00 : 61d6aa: 74 0c je 61d6b8 0.00 : 61d6ac: 81 38 2f 01 00 00 cmpl $0x12f,(%rax) 0.00 : 61d6b2: 0f 84 48 ff ff ff je 61d600 : /* : * Non-grouping column, so just remember the expression for : * later call to pull_var_clause. There's no need for : * pull_var_clause to examine the TargetEntry node itself. : */ : non_group_cols = lappend(non_group_cols, tle->expr); 0.00 : 61d6b8: c6 85 4b fe ff ff 01 movb $0x1,-0x1b5(%rbp) 0.00 : 61d6bf: e9 3c ff ff ff jmpq 61d600 : else : { : /* caller absolute, limit fractional; use caller's value */ : } : } : else if (tuple_fraction > 0.0) 0.00 : 61d6c4: f2 0f 10 95 d8 fd ff movsd -0x228(%rbp),%xmm2 0.00 : 61d6cb: ff 0.00 : 61d6cc: 66 0f 2e 15 04 4c 19 ucomisd 0x194c04(%rip),%xmm2 # 7b22d8 <__func__.14992+0xcf> 0.00 : 61d6d3: 00 0.00 : 61d6d4: 0f 86 d8 f5 ff ff jbe 61ccb2 : { : if (limit_fraction >= 1.0) 0.00 : 61d6da: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 61d6de: 0f 83 ce f5 ff ff jae 61ccb2 0.00 : 61d6e4: e9 bf f5 ff ff jmpq 61cca8 : { : /* : * With no grouping columns, just pass whole tlist to pull_var_clause. : * Need (shallow) copy to avoid damaging input tlist below. : */ : non_group_cols = list_copy(tlist); 0.00 : 61d6e9: 45 31 ff xor %r15d,%r15d 0.00 : 61d6ec: 45 31 e4 xor %r12d,%r12d 0.00 : 61d6ef: c6 85 4b fe ff ff 00 movb $0x0,-0x1b5(%rbp) : } : : /* : * If there's a HAVING clause, we'll need the Vars it uses, too. : */ : if (parse->havingQual) 0.00 : 61d6f6: 48 8b 9d e8 fe ff ff mov -0x118(%rbp),%rbx 0.00 : 61d6fd: 48 8b 73 68 mov 0x68(%rbx),%rsi 0.00 : 61d701: 48 85 f6 test %rsi,%rsi 0.00 : 61d704: 74 0b je 61d711 : non_group_cols = lappend(non_group_cols, parse->havingQual); 0.00 : 61d706: 4c 89 ff mov %r15,%rdi 0.00 : 61d709: e8 72 47 fc ff callq 5e1e80 0.00 : 61d70e: 49 89 c7 mov %rax,%r15 : * directly as a GROUP BY item will be present already.) Note this : * includes Vars used in resjunk items, so we are covering the needs of : * ORDER BY and window specifications. Vars used within Aggrefs will be : * pulled out here, too. : */ : non_group_vars = pull_var_clause((Node *) non_group_cols, 0.00 : 61d711: ba 01 00 00 00 mov $0x1,%edx 0.00 : 61d716: be 02 00 00 00 mov $0x2,%esi 0.00 : 61d71b: 4c 89 ff mov %r15,%rdi 0.00 : 61d71e: e8 ad a3 01 00 callq 637ad0 : PVC_RECURSE_AGGREGATES, : PVC_INCLUDE_PLACEHOLDERS); : sub_tlist = add_to_flat_tlist(sub_tlist, non_group_vars); 0.00 : 61d723: 4c 89 e7 mov %r12,%rdi : * directly as a GROUP BY item will be present already.) Note this : * includes Vars used in resjunk items, so we are covering the needs of : * ORDER BY and window specifications. Vars used within Aggrefs will be : * pulled out here, too. : */ : non_group_vars = pull_var_clause((Node *) non_group_cols, 0.00 : 61d726: 48 89 c3 mov %rax,%rbx : PVC_RECURSE_AGGREGATES, : PVC_INCLUDE_PLACEHOLDERS); : sub_tlist = add_to_flat_tlist(sub_tlist, non_group_vars); 0.00 : 61d729: 48 89 c6 mov %rax,%rsi 0.00 : 61d72c: e8 8f 9d 01 00 callq 6374c0 : : /* clean up cruft */ : list_free(non_group_vars); 0.00 : 61d731: 48 89 df mov %rbx,%rdi : * pulled out here, too. : */ : non_group_vars = pull_var_clause((Node *) non_group_cols, : PVC_RECURSE_AGGREGATES, : PVC_INCLUDE_PLACEHOLDERS); : sub_tlist = add_to_flat_tlist(sub_tlist, non_group_vars); 0.00 : 61d734: 48 89 85 38 fe ff ff mov %rax,-0x1c8(%rbp) : : /* clean up cruft */ : list_free(non_group_vars); 0.00 : 61d73b: e8 10 4a fc ff callq 5e2150 : list_free(non_group_cols); 0.00 : 61d740: 4c 89 ff mov %r15,%rdi 0.00 : 61d743: e8 08 4a fc ff callq 5e2150 : * Note: think not that we can turn off hasAggs if we find no aggs. It : * is possible for constant-expression simplification to remove all : * explicit references to aggs, but we still have to follow the : * aggregate semantics (eg, producing only one output row). : */ : if (parse->hasAggs) 0.00 : 61d748: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61d74f: 80 78 24 00 cmpb $0x0,0x24(%rax) 0.00 : 61d753: 0f 85 83 0b 00 00 jne 61e2dc : */ : preprocess_minmax_aggregates(root, tlist); : } : : /* Make tuple_fraction accessible to lower-level routines */ : root->tuple_fraction = tuple_fraction; 0.00 : 61d759: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61d760: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61d767: ff 0.00 : 61d768: f2 0f 11 81 28 01 00 movsd %xmm0,0x128(%rcx) 0.00 : 61d76f: 00 : * Figure out whether there's a hard limit on the number of rows that : * query_planner's result subplan needs to return. Even if we know a : * hard limit overall, it doesn't apply if the query has any : * grouping/aggregation operations. : */ : if (parse->groupClause || 0.00 : 61d770: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61d777: 48 83 78 60 00 cmpq $0x0,0x60(%rax) 0.00 : 61d77c: 0f 84 96 0d 00 00 je 61e518 : parse->distinctClause || : parse->hasAggs || : parse->hasWindowFuncs || : root->hasHavingQual) : root->limit_tuples = -1.0; 0.00 : 61d782: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61d789: 48 b8 00 00 00 00 00 movabs $0xbff0000000000000,%rax 0.00 : 61d790: 00 f0 bf 0.00 : 61d793: 48 89 82 30 01 00 00 mov %rax,0x130(%rdx) : else : root->limit_tuples = limit_tuples; : : /* Set up data needed by standard_qp_callback */ : qp_extra.tlist = tlist; : qp_extra.activeWindows = activeWindows; 0.00 : 61d79a: 48 8b 95 68 fe ff ff mov -0x198(%rbp),%rdx : root->limit_tuples = -1.0; : else : root->limit_tuples = limit_tuples; : : /* Set up data needed by standard_qp_callback */ : qp_extra.tlist = tlist; 0.00 : 61d7a1: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax : * Generate the best unsorted and presorted paths for this Query (but : * note there may not be any presorted paths). We also generate (in : * standard_qp_callback) pathkey representations of the query's sort : * clause, distinct clause, etc. : */ : final_rel = query_planner(root, sub_tlist, 0.00 : 61d7a8: 48 8d 4d b0 lea -0x50(%rbp),%rcx 0.00 : 61d7ac: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61d7b3: 48 8b b5 38 fe ff ff mov -0x1c8(%rbp),%rsi : else : root->limit_tuples = limit_tuples; : : /* Set up data needed by standard_qp_callback */ : qp_extra.tlist = tlist; : qp_extra.activeWindows = activeWindows; 0.00 : 61d7ba: 48 89 55 b8 mov %rdx,-0x48(%rbp) : * Generate the best unsorted and presorted paths for this Query (but : * note there may not be any presorted paths). We also generate (in : * standard_qp_callback) pathkey representations of the query's sort : * clause, distinct clause, etc. : */ : final_rel = query_planner(root, sub_tlist, 0.00 : 61d7be: ba 70 c6 61 00 mov $0x61c670,%edx : root->limit_tuples = -1.0; : else : root->limit_tuples = limit_tuples; : : /* Set up data needed by standard_qp_callback */ : qp_extra.tlist = tlist; 0.00 : 61d7c3: 48 89 45 b0 mov %rax,-0x50(%rbp) : * Generate the best unsorted and presorted paths for this Query (but : * note there may not be any presorted paths). We also generate (in : * standard_qp_callback) pathkey representations of the query's sort : * clause, distinct clause, etc. : */ : final_rel = query_planner(root, sub_tlist, 0.00 : 61d7c7: e8 44 e5 ff ff callq 61bd10 : standard_qp_callback, &qp_extra); : : /* : * Extract rowcount and width estimates for use below. : */ : path_rows = final_rel->rows; 0.00 : 61d7cc: f2 0f 10 40 10 movsd 0x10(%rax),%xmm0 : * Generate the best unsorted and presorted paths for this Query (but : * note there may not be any presorted paths). We also generate (in : * standard_qp_callback) pathkey representations of the query's sort : * clause, distinct clause, etc. : */ : final_rel = query_planner(root, sub_tlist, 0.00 : 61d7d1: 48 89 c3 mov %rax,%rbx : * to describe the fraction of the underlying un-aggregated tuples : * that will be fetched. : */ : dNumGroups = 1; /* in case not grouping */ : : if (parse->groupClause) 0.00 : 61d7d4: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx : standard_qp_callback, &qp_extra); : : /* : * Extract rowcount and width estimates for use below. : */ : path_rows = final_rel->rows; 0.00 : 61d7db: f2 0f 11 85 50 fe ff movsd %xmm0,-0x1b0(%rbp) 0.00 : 61d7e2: ff : path_width = final_rel->width; 0.00 : 61d7e3: 8b 40 18 mov 0x18(%rax),%eax 0.00 : 61d7e6: 89 85 5c fe ff ff mov %eax,-0x1a4(%rbp) : * to describe the fraction of the underlying un-aggregated tuples : * that will be fetched. : */ : dNumGroups = 1; /* in case not grouping */ : : if (parse->groupClause) 0.00 : 61d7ec: 48 8b 7a 60 mov 0x60(%rdx),%rdi 0.00 : 61d7f0: 48 85 ff test %rdi,%rdi 0.00 : 61d7f3: 0f 84 2d 0b 00 00 je 61e326 : { : List *groupExprs; : : groupExprs = get_sortgrouplist_exprs(parse->groupClause, 0.00 : 61d7f9: 48 8b 72 48 mov 0x48(%rdx),%rsi 0.00 : 61d7fd: e8 9e 99 01 00 callq 6371a0 : parse->targetList); : dNumGroups = estimate_num_groups(root, groupExprs, path_rows); 0.00 : 61d802: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61d809: f2 0f 10 85 50 fe ff movsd -0x1b0(%rbp),%xmm0 0.00 : 61d810: ff : : if (parse->groupClause) : { : List *groupExprs; : : groupExprs = get_sortgrouplist_exprs(parse->groupClause, 0.00 : 61d811: 48 89 c6 mov %rax,%rsi : parse->targetList); : dNumGroups = estimate_num_groups(root, groupExprs, path_rows); 0.00 : 61d814: e8 67 b9 11 00 callq 739180 0.00 : 61d819: f2 0f 11 85 28 fe ff movsd %xmm0,-0x1d8(%rbp) 0.00 : 61d820: ff : * In GROUP BY mode, an absolute LIMIT is relative to the number : * of groups not the number of tuples. If the caller gave us a : * fraction, keep it as-is. (In both cases, we are effectively : * assuming that all the groups are about the same size.) : */ : if (tuple_fraction >= 1.0) 0.00 : 61d821: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61d828: ff 0.00 : 61d829: 66 0f 2e 05 27 19 19 ucomisd 0x191927(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 61d830: 00 0.00 : 61d831: 72 18 jb 61d84b : tuple_fraction /= dNumGroups; 0.00 : 61d833: f2 0f 10 8d d8 fd ff movsd -0x228(%rbp),%xmm1 0.00 : 61d83a: ff 0.00 : 61d83b: f2 0f 5e 8d 28 fe ff divsd -0x1d8(%rbp),%xmm1 0.00 : 61d842: ff 0.00 : 61d843: f2 0f 11 8d d8 fd ff movsd %xmm1,-0x228(%rbp) 0.00 : 61d84a: ff : * levels of sort --- and, therefore, certainly need to read all : * the tuples --- unless ORDER BY is a subset of GROUP BY. : * Likewise if we have both DISTINCT and GROUP BY, or if we have a : * window specification not compatible with the GROUP BY. : */ : if (!pathkeys_contained_in(root->sort_pathkeys, 0.00 : 61d84b: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 61d852: 48 8b b0 e8 00 00 00 mov 0xe8(%rax),%rsi 0.00 : 61d859: 48 8b b8 00 01 00 00 mov 0x100(%rax),%rdi 0.00 : 61d860: e8 7b 40 ff ff callq 6118e0 0.00 : 61d865: 84 c0 test %al,%al 0.00 : 61d867: 0f 85 ae 0b 00 00 jne 61e41b : /* : * Plain non-grouped, non-aggregated query: an absolute tuple : * fraction can be divided by the number of tuples. : */ : if (tuple_fraction >= 1.0) : tuple_fraction /= path_rows; 0.00 : 61d86d: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 61d871: f2 0f 11 95 d8 fd ff movsd %xmm2,-0x228(%rbp) 0.00 : 61d878: ff : * order doesn't matter, then the "cheapest presorted" path will be : * the cheapest overall for the tuple fraction.) : */ : cheapest_path = final_rel->cheapest_total_path; : : sorted_path = 0.00 : 61d879: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax : * since if we have to sort then we'll have to fetch all the tuples. : * (But there's a special case: if query_pathkeys is NIL, meaning : * order doesn't matter, then the "cheapest presorted" path will be : * the cheapest overall for the tuple fraction.) : */ : cheapest_path = final_rel->cheapest_total_path; 0.00 : 61d880: 4c 8b 73 40 mov 0x40(%rbx),%r14 : : sorted_path = 0.00 : 61d884: 31 d2 xor %edx,%edx 0.00 : 61d886: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 61d88a: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61d891: ff 0.00 : 61d892: 48 8b b0 e0 00 00 00 mov 0xe0(%rax),%rsi 0.00 : 61d899: e8 12 55 ff ff callq 612db0 : root->query_pathkeys, : NULL, : tuple_fraction); : : /* Don't consider same path in both guises; just wastes effort */ : if (sorted_path == cheapest_path) 0.00 : 61d89e: 49 39 c6 cmp %rax,%r14 : * order doesn't matter, then the "cheapest presorted" path will be : * the cheapest overall for the tuple fraction.) : */ : cheapest_path = final_rel->cheapest_total_path; : : sorted_path = 0.00 : 61d8a1: 49 89 c4 mov %rax,%r12 : root->query_pathkeys, : NULL, : tuple_fraction); : : /* Don't consider same path in both guises; just wastes effort */ : if (sorted_path == cheapest_path) 0.00 : 61d8a4: 74 5d je 61d903 : * cheapest-total path. Here we need consider only the behavior at : * the tuple_fraction point. Also, limit_tuples is only relevant if : * not grouping/aggregating, so use root->limit_tuples in the : * cost_sort call. : */ : if (sorted_path) 0.00 : 61d8a6: 48 85 c0 test %rax,%rax 0.00 : 61d8a9: 74 5b je 61d906 : { : Path sort_path; /* dummy for result of cost_sort */ : : if (root->query_pathkeys == NIL || 0.00 : 61d8ab: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61d8b2: 48 8b ba e0 00 00 00 mov 0xe0(%rdx),%rdi 0.00 : 61d8b9: 48 85 ff test %rdi,%rdi 0.00 : 61d8bc: 74 11 je 61d8cf 0.00 : 61d8be: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 61d8c2: e8 19 40 ff ff callq 6118e0 0.00 : 61d8c7: 84 c0 test %al,%al 0.00 : 61d8c9: 0f 84 ea 0b 00 00 je 61e4b9 : pathkeys_contained_in(root->query_pathkeys, : cheapest_path->pathkeys)) : { : /* No sort needed for cheapest path */ : sort_path.startup_cost = cheapest_path->startup_cost; 0.00 : 61d8cf: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 61d8d3: 48 8d 9d 40 ff ff ff lea -0xc0(%rbp),%rbx 0.00 : 61d8da: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : sort_path.total_cost = cheapest_path->total_cost; 0.00 : 61d8e1: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 61d8e5: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : cheapest_path->total_cost, : path_rows, path_width, : 0.0, work_mem, root->limit_tuples); : } : : if (compare_fractional_path_costs(sorted_path, &sort_path, 0.00 : 61d8ec: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61d8f3: ff 0.00 : 61d8f4: 48 89 de mov %rbx,%rsi 0.00 : 61d8f7: 4c 89 e7 mov %r12,%rdi 0.00 : 61d8fa: e8 11 26 01 00 callq 62ff10 0.00 : 61d8ff: 85 c0 test %eax,%eax 0.00 : 61d901: 7e 03 jle 61d906 0.00 : 61d903: 45 31 e4 xor %r12d,%r12d : } : : /* : * Consider whether we want to use hashing instead of sorting. : */ : if (parse->groupClause) 0.00 : 61d906: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 61d90d: 48 83 7b 60 00 cmpq $0x0,0x60(%rbx) 0.00 : 61d912: 0f 84 9b 0a 00 00 je 61e3b3 : double tuple_fraction, double limit_tuples, : double path_rows, int path_width, : Path *cheapest_path, Path *sorted_path, : double dNumGroups, AggClauseCosts *agg_costs) : { : Query *parse = root->parse; 0.00 : 61d918: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 61d91f: 45 31 ff xor %r15d,%r15d 0.00 : 61d922: 4c 8b 68 08 mov 0x8(%rax),%r13 : int numGroupCols = list_length(parse->groupClause); 0.00 : 61d926: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 61d92a: 48 85 ff test %rdi,%rdi 0.00 : 61d92d: 74 04 je 61d933 0.00 : 61d92f: 44 8b 7f 04 mov 0x4(%rdi),%r15d : * the hash table, and/or running many sorts in parallel, either of which : * seems like a certain loser.) We similarly don't support ordered-set : * aggregates in hashed aggregation, but that case is included in the : * numOrderedAggs count. : */ : can_hash = (agg_costs->numOrderedAggs == 0 && 0.00 : 61d933: 8b 45 84 mov -0x7c(%rbp),%eax 0.00 : 61d936: 85 c0 test %eax,%eax 0.00 : 61d938: 0f 84 c7 0a 00 00 je 61e405 : grouping_is_hashable(parse->groupClause)); : can_sort = grouping_is_sortable(parse->groupClause); 0.00 : 61d93e: e8 fd 95 01 00 callq 636f40 : /* Quick out if only one choice is workable */ : if (!(can_hash && can_sort)) : { : if (can_hash) : return true; : else if (can_sort) 0.00 : 61d943: 84 c0 test %al,%al 0.00 : 61d945: 0f 84 c2 15 00 00 je 61ef0d : 0.0, work_mem, limit_tuples); : : /* : * Now make the decision using the top-level tuple fraction. : */ : if (compare_fractional_path_costs(&hashed_p, &sorted_p, 0.00 : 61d94b: 45 31 ed xor %r13d,%r13d : tuple_fraction, limit_tuples, : path_rows, path_width, : cheapest_path, sorted_path, : dNumGroups, &agg_costs); : /* Also convert # groups to long int --- but 'ware overflow! */ : numGroups = (long) Min(dNumGroups, (double) LONG_MAX); 0.00 : 61d94e: f2 0f 10 85 28 fe ff movsd -0x1d8(%rbp),%xmm0 0.00 : 61d955: ff 0.00 : 61d956: 66 0f 2e 05 ca 46 19 ucomisd 0x1946ca(%rip),%xmm0 # 7b2028 <__func__.15386+0x18> 0.00 : 61d95d: 00 0.00 : 61d95e: 7a 06 jp 61d966 0.00 : 61d960: 0f 82 da 08 00 00 jb 61e240 0.00 : 61d966: 44 89 e8 mov %r13d,%eax 0.00 : 61d969: c6 85 36 fe ff ff 00 movb $0x0,-0x1ca(%rbp) 0.00 : 61d970: c6 85 37 fe ff ff 00 movb $0x0,-0x1c9(%rbp) 0.00 : 61d977: 49 bf ff ff ff ff ff movabs $0x7fffffffffffffff,%r15 0.00 : 61d97e: ff ff 7f : /* : * Select the best path. If we are doing hashed grouping, we will : * always read all the input tuples, so use the cheapest-total path. : * Otherwise, the comparison above is correct. : */ : if (use_hashed_grouping || use_hashed_distinct || !sorted_path) 0.00 : 61d981: 4d 85 e4 test %r12,%r12 0.00 : 61d984: 74 07 je 61d98d 0.00 : 61d986: 84 c0 test %al,%al 0.00 : 61d988: 4c 89 e3 mov %r12,%rbx 0.00 : 61d98b: 74 03 je 61d990 0.00 : 61d98d: 4c 89 f3 mov %r14,%rbx : * Check to see if it's possible to optimize MIN/MAX aggregates. If : * so, we will forget all the work we did so far to choose a "regular" : * path ... but we had to do it anyway to be able to tell which way is : * cheaper. : */ : result_plan = optimize_minmax_aggregates(root, 0.00 : 61d990: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61d997: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61d99e: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 61d9a2: 48 89 d9 mov %rbx,%rcx 0.00 : 61d9a5: e8 06 db ff ff callq 61b4b0 : tlist, : &agg_costs, : best_path); : if (result_plan != NULL) 0.00 : 61d9aa: 48 85 c0 test %rax,%rax : * Check to see if it's possible to optimize MIN/MAX aggregates. If : * so, we will forget all the work we did so far to choose a "regular" : * path ... but we had to do it anyway to be able to tell which way is : * cheaper. : */ : result_plan = optimize_minmax_aggregates(root, 0.00 : 61d9ad: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : tlist, : &agg_costs, : best_path); : if (result_plan != NULL) 0.00 : 61d9b4: 48 c7 85 20 fe ff ff movq $0x0,-0x1e0(%rbp) 0.00 : 61d9bb: 00 00 00 00 0.00 : 61d9bf: 0f 84 d5 0e 00 00 je 61e89a : /* : * Since each window function could require a different sort order, we : * stack up a WindowAgg node for each window, with sort steps between : * them as needed. : */ : if (activeWindows) 0.00 : 61d9c5: 48 83 bd 68 fe ff ff cmpq $0x0,-0x198(%rbp) 0.00 : 61d9cc: 00 0.00 : 61d9cd: 0f 84 51 f4 ff ff je 61ce24 : * inside the following loop.) Note that on second and subsequent : * passes through the following loop, the top-level node will be a : * WindowAgg which we know can project; so we only need to check : * once. : */ : if (!is_projection_capable_plan(result_plan)) 0.00 : 61d9d3: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 61d9da: e8 c1 63 ff ff callq 613da0 0.00 : 61d9df: 84 c0 test %al,%al 0.00 : 61d9e1: 0f 84 8e 0a 00 00 je 61e475 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61d9e7: 48 8b 85 68 fe ff ff mov -0x198(%rbp),%rax : static List * : make_windowInputTargetList(PlannerInfo *root, : List *tlist, : List *activeWindows) : { : Query *parse = root->parse; 0.00 : 61d9ee: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx : /* : * Collect the sortgroupref numbers of window PARTITION/ORDER BY clauses : * into a bitmapset for convenient reference below. : */ : sgrefs = NULL; : foreach(lc, activeWindows) 0.00 : 61d9f5: 45 31 e4 xor %r12d,%r12d 0.00 : 61d9f8: 4c 8b 68 08 mov 0x8(%rax),%r13 : static List * : make_windowInputTargetList(PlannerInfo *root, : List *tlist, : List *activeWindows) : { : Query *parse = root->parse; 0.00 : 61d9fc: 4c 8b 7b 08 mov 0x8(%rbx),%r15 : /* : * Collect the sortgroupref numbers of window PARTITION/ORDER BY clauses : * into a bitmapset for convenient reference below. : */ : sgrefs = NULL; : foreach(lc, activeWindows) 0.00 : 61da00: 4d 85 ed test %r13,%r13 0.00 : 61da03: 74 6e je 61da73 0.00 : 61da05: 0f 1f 00 nopl (%rax) : { : WindowClause *wc = (WindowClause *) lfirst(lc); 0.00 : 61da08: 4d 8b 75 00 mov 0x0(%r13),%r14 : ListCell *lc2; : : foreach(lc2, wc->partitionClause) 0.00 : 61da0c: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 61da10: 48 85 c0 test %rax,%rax 0.00 : 61da13: 74 25 je 61da3a 0.00 : 61da15: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61da19: 48 85 db test %rbx,%rbx 0.00 : 61da1c: 74 1c je 61da3a 0.00 : 61da1e: 66 90 xchg %ax,%ax : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc2); : : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); 0.00 : 61da20: 48 8b 03 mov (%rbx),%rax 0.00 : 61da23: 4c 89 e7 mov %r12,%rdi 0.00 : 61da26: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 61da29: e8 d2 55 fc ff callq 5e3000 : foreach(lc, activeWindows) : { : WindowClause *wc = (WindowClause *) lfirst(lc); : ListCell *lc2; : : foreach(lc2, wc->partitionClause) 0.00 : 61da2e: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc2); : : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); 0.00 : 61da32: 49 89 c4 mov %rax,%r12 : foreach(lc, activeWindows) : { : WindowClause *wc = (WindowClause *) lfirst(lc); : ListCell *lc2; : : foreach(lc2, wc->partitionClause) 0.00 : 61da35: 48 85 db test %rbx,%rbx 0.00 : 61da38: 75 e6 jne 61da20 : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc2); : : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); : } : foreach(lc2, wc->orderClause) 0.00 : 61da3a: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 61da3e: 48 85 c0 test %rax,%rax 0.00 : 61da41: 74 27 je 61da6a 0.00 : 61da43: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61da47: 48 85 db test %rbx,%rbx 0.00 : 61da4a: 74 1e je 61da6a 0.00 : 61da4c: 0f 1f 40 00 nopl 0x0(%rax) : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc2); : : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); 0.00 : 61da50: 48 8b 03 mov (%rbx),%rax 0.00 : 61da53: 4c 89 e7 mov %r12,%rdi 0.00 : 61da56: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 61da59: e8 a2 55 fc ff callq 5e3000 : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc2); : : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); : } : foreach(lc2, wc->orderClause) 0.00 : 61da5e: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc2); : : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); 0.00 : 61da62: 49 89 c4 mov %rax,%r12 : { : SortGroupClause *sortcl = (SortGroupClause *) lfirst(lc2); : : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); : } : foreach(lc2, wc->orderClause) 0.00 : 61da65: 48 85 db test %rbx,%rbx 0.00 : 61da68: 75 e6 jne 61da50 : /* : * Collect the sortgroupref numbers of window PARTITION/ORDER BY clauses : * into a bitmapset for convenient reference below. : */ : sgrefs = NULL; : foreach(lc, activeWindows) 0.00 : 61da6a: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 61da6e: 4d 85 ed test %r13,%r13 0.00 : 61da71: 75 95 jne 61da08 : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); : } : } : : /* Add in sortgroupref numbers of GROUP BY clauses, too */ : foreach(lc, parse->groupClause) 0.00 : 61da73: 49 8b 47 60 mov 0x60(%r15),%rax 0.00 : 61da77: 48 85 c0 test %rax,%rax 0.00 : 61da7a: 74 26 je 61daa2 0.00 : 61da7c: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61da80: 48 85 db test %rbx,%rbx 0.00 : 61da83: 74 1d je 61daa2 0.00 : 61da85: 0f 1f 00 nopl (%rax) : { : SortGroupClause *grpcl = (SortGroupClause *) lfirst(lc); : : sgrefs = bms_add_member(sgrefs, grpcl->tleSortGroupRef); 0.00 : 61da88: 48 8b 03 mov (%rbx),%rax 0.00 : 61da8b: 4c 89 e7 mov %r12,%rdi 0.00 : 61da8e: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 61da91: e8 6a 55 fc ff callq 5e3000 : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); : } : } : : /* Add in sortgroupref numbers of GROUP BY clauses, too */ : foreach(lc, parse->groupClause) 0.00 : 61da96: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : SortGroupClause *grpcl = (SortGroupClause *) lfirst(lc); : : sgrefs = bms_add_member(sgrefs, grpcl->tleSortGroupRef); 0.00 : 61da9a: 49 89 c4 mov %rax,%r12 : sgrefs = bms_add_member(sgrefs, sortcl->tleSortGroupRef); : } : } : : /* Add in sortgroupref numbers of GROUP BY clauses, too */ : foreach(lc, parse->groupClause) 0.00 : 61da9d: 48 85 db test %rbx,%rbx 0.00 : 61daa0: 75 e6 jne 61da88 0.00 : 61daa2: 48 83 bd f0 fe ff ff cmpq $0x0,-0x110(%rbp) 0.00 : 61daa9: 00 0.00 : 61daaa: 0f 84 dd 0d 00 00 je 61e88d 0.00 : 61dab0: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 61dab7: 4c 8b 6a 08 mov 0x8(%rdx),%r13 : * save aside the others for a moment. : */ : new_tlist = NIL; : flattenable_cols = NIL; : : foreach(lc, tlist) 0.00 : 61dabb: 4d 85 ed test %r13,%r13 0.00 : 61dabe: 0f 84 c9 0d 00 00 je 61e88d 0.00 : 61dac4: 45 31 ff xor %r15d,%r15d 0.00 : 61dac7: 45 31 f6 xor %r14d,%r14d 0.00 : 61daca: eb 4f jmp 61db1b 0.00 : 61dacc: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Don't want to deconstruct window clauses or GROUP BY items. (Note : * that such items can't contain window functions, so it's okay to : * compute them below the WindowAgg nodes.) : */ : if (tle->ressortgroupref != 0 && 0.00 : 61dad0: 4c 89 e6 mov %r12,%rsi 0.00 : 61dad3: e8 38 54 fc ff callq 5e2f10 0.00 : 61dad8: 84 c0 test %al,%al 0.00 : 61dada: 74 4a je 61db26 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61dadc: 4d 85 ff test %r15,%r15 0.00 : 61dadf: be 01 00 00 00 mov $0x1,%esi 0.00 : 61dae4: 74 0b je 61daf1 0.00 : 61dae6: 41 0f b7 47 04 movzwl 0x4(%r15),%eax 0.00 : 61daeb: 83 c0 01 add $0x1,%eax 0.00 : 61daee: 0f bf f0 movswl %ax,%esi : bms_is_member(tle->ressortgroupref, sgrefs)) : { : /* Don't want to deconstruct this value, so add to new_tlist */ : TargetEntry *newtle; : : newtle = makeTargetEntry(tle->expr, 0.00 : 61daf1: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 61daf5: 31 c9 xor %ecx,%ecx 0.00 : 61daf7: 31 d2 xor %edx,%edx 0.00 : 61daf9: e8 d2 3d fd ff callq 5f18d0 0.00 : 61dafe: 48 89 c6 mov %rax,%rsi : list_length(new_tlist) + 1, : NULL, : false); : /* Preserve its sortgroupref marking, in case it's volatile */ : newtle->ressortgroupref = tle->ressortgroupref; 0.00 : 61db01: 8b 43 20 mov 0x20(%rbx),%eax : new_tlist = lappend(new_tlist, newtle); 0.00 : 61db04: 4c 89 ff mov %r15,%rdi : newtle = makeTargetEntry(tle->expr, : list_length(new_tlist) + 1, : NULL, : false); : /* Preserve its sortgroupref marking, in case it's volatile */ : newtle->ressortgroupref = tle->ressortgroupref; 0.00 : 61db07: 89 46 20 mov %eax,0x20(%rsi) : new_tlist = lappend(new_tlist, newtle); 0.00 : 61db0a: e8 71 43 fc ff callq 5e1e80 0.00 : 61db0f: 49 89 c7 mov %rax,%r15 : * save aside the others for a moment. : */ : new_tlist = NIL; : flattenable_cols = NIL; : : foreach(lc, tlist) 0.00 : 61db12: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 61db16: 4d 85 ed test %r13,%r13 0.00 : 61db19: 74 4f je 61db6a : { : TargetEntry *tle = (TargetEntry *) lfirst(lc); 0.00 : 61db1b: 49 8b 5d 00 mov 0x0(%r13),%rbx : /* : * Don't want to deconstruct window clauses or GROUP BY items. (Note : * that such items can't contain window functions, so it's okay to : * compute them below the WindowAgg nodes.) : */ : if (tle->ressortgroupref != 0 && 0.00 : 61db1f: 8b 7b 20 mov 0x20(%rbx),%edi 0.00 : 61db22: 85 ff test %edi,%edi 0.00 : 61db24: 75 aa jne 61dad0 : /* : * Column is to be flattened, so just remember the expression for : * later call to pull_var_clause. There's no need for : * pull_var_clause to examine the TargetEntry node itself. : */ : flattenable_cols = lappend(flattenable_cols, tle->expr); 0.00 : 61db26: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 61db2a: 4c 89 f7 mov %r14,%rdi 0.00 : 61db2d: e8 4e 43 fc ff callq 5e1e80 0.00 : 61db32: 49 89 c6 mov %rax,%r14 0.00 : 61db35: eb db jmp 61db12 : * If there was grouping or aggregation, use the current number of : * rows as the estimated number of DISTINCT rows (ie, assume the : * result was already mostly unique). If not, use the number of : * distinct-groups calculated previously. : */ : if (parse->groupClause || root->hasHavingQual || parse->hasAggs) 0.00 : 61db37: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 61db3e: 80 bb 3b 01 00 00 00 cmpb $0x0,0x13b(%rbx) 0.00 : 61db45: 0f 85 f6 f2 ff ff jne 61ce41 0.00 : 61db4b: f2 0f 10 85 28 fe ff movsd -0x1d8(%rbp),%xmm0 0.00 : 61db52: ff 0.00 : 61db53: f2 0f 11 85 b8 fe ff movsd %xmm0,-0x148(%rbp) 0.00 : 61db5a: ff 0.00 : 61db5b: 80 79 24 00 cmpb $0x0,0x24(%rcx) 0.00 : 61db5f: 0f 84 f0 f2 ff ff je 61ce55 0.00 : 61db65: e9 d7 f2 ff ff jmpq 61ce41 : * save aside the others for a moment. : */ : new_tlist = NIL; : flattenable_cols = NIL; : : foreach(lc, tlist) 0.00 : 61db6a: 4c 89 f7 mov %r14,%rdi : * : * Note: it's essential to use PVC_INCLUDE_AGGREGATES here, so that the : * Aggrefs are placed in the Agg node's tlist and not left to be computed : * at higher levels. : */ : flattenable_vars = pull_var_clause((Node *) flattenable_cols, 0.00 : 61db6d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 61db72: be 01 00 00 00 mov $0x1,%esi 0.00 : 61db77: e8 54 9f 01 00 callq 637ad0 : PVC_INCLUDE_AGGREGATES, : PVC_INCLUDE_PLACEHOLDERS); : new_tlist = add_to_flat_tlist(new_tlist, flattenable_vars); 0.00 : 61db7c: 4c 89 ff mov %r15,%rdi 0.00 : 61db7f: 48 89 c6 mov %rax,%rsi : * : * Note: it's essential to use PVC_INCLUDE_AGGREGATES here, so that the : * Aggrefs are placed in the Agg node's tlist and not left to be computed : * at higher levels. : */ : flattenable_vars = pull_var_clause((Node *) flattenable_cols, 0.00 : 61db82: 48 89 c3 mov %rax,%rbx : PVC_INCLUDE_AGGREGATES, : PVC_INCLUDE_PLACEHOLDERS); : new_tlist = add_to_flat_tlist(new_tlist, flattenable_vars); 0.00 : 61db85: e8 36 99 01 00 callq 6374c0 : : /* clean up cruft */ : list_free(flattenable_vars); 0.00 : 61db8a: 48 89 df mov %rbx,%rdi : * at higher levels. : */ : flattenable_vars = pull_var_clause((Node *) flattenable_cols, : PVC_INCLUDE_AGGREGATES, : PVC_INCLUDE_PLACEHOLDERS); : new_tlist = add_to_flat_tlist(new_tlist, flattenable_vars); 0.00 : 61db8d: 48 89 85 70 fe ff ff mov %rax,-0x190(%rbp) : : /* clean up cruft */ : list_free(flattenable_vars); 0.00 : 61db94: e8 b7 45 fc ff callq 5e2150 : list_free(flattenable_cols); 0.00 : 61db99: 4c 89 f7 mov %r14,%rdi 0.00 : 61db9c: e8 af 45 fc ff callq 5e2150 : /* : * The copyObject steps here are needed to ensure that each plan : * node has a separately modifiable tlist. (XXX wouldn't a : * shallow list copy do for that?) : */ : result_plan->targetlist = (List *) copyObject(window_tlist); 0.00 : 61dba1: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 61dba8: e8 e3 65 fc ff callq 5e4190 0.00 : 61dbad: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61dbb4: 48 89 41 28 mov %rax,0x28(%rcx) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61dbb8: 48 8b 9d 68 fe ff ff mov -0x198(%rbp),%rbx 0.00 : 61dbbf: 48 8b 5b 08 mov 0x8(%rbx),%rbx : : foreach(l, activeWindows) 0.00 : 61dbc3: 48 85 db test %rbx,%rbx 0.00 : 61dbc6: 48 89 9d 78 fe ff ff mov %rbx,-0x188(%rbp) 0.00 : 61dbcd: 0f 84 51 f2 ff ff je 61ce24 0.00 : 61dbd3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : WindowClause *wc = (WindowClause *) lfirst(l); 0.00 : 61dbd8: 48 8b 85 78 fe ff ff mov -0x188(%rbp),%rax : Oid *partOperators; : int ordNumCols; : AttrNumber *ordColIdx; : Oid *ordOperators; : : window_pathkeys = make_pathkeys_for_window(root, 0.00 : 61dbdf: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 61dbe6: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi : */ : result_plan->targetlist = (List *) copyObject(window_tlist); : : foreach(l, activeWindows) : { : WindowClause *wc = (WindowClause *) lfirst(l); 0.00 : 61dbed: 48 8b 00 mov (%rax),%rax : Oid *partOperators; : int ordNumCols; : AttrNumber *ordColIdx; : Oid *ordOperators; : : window_pathkeys = make_pathkeys_for_window(root, 0.00 : 61dbf0: 48 89 c6 mov %rax,%rsi : */ : result_plan->targetlist = (List *) copyObject(window_tlist); : : foreach(l, activeWindows) : { : WindowClause *wc = (WindowClause *) lfirst(l); 0.00 : 61dbf3: 48 89 85 80 fe ff ff mov %rax,-0x180(%rbp) : Oid *partOperators; : int ordNumCols; : AttrNumber *ordColIdx; : Oid *ordOperators; : : window_pathkeys = make_pathkeys_for_window(root, 0.00 : 61dbfa: e8 41 e9 ff ff callq 61c540 : * should have provided all such columns, but let's not assume : * that here.) Furthermore, this way we can use existing : * infrastructure to identify which input columns are the : * interesting ones. : */ : if (window_pathkeys) 0.00 : 61dbff: 48 85 c0 test %rax,%rax : Oid *partOperators; : int ordNumCols; : AttrNumber *ordColIdx; : Oid *ordOperators; : : window_pathkeys = make_pathkeys_for_window(root, 0.00 : 61dc02: 49 89 c4 mov %rax,%r12 : * should have provided all such columns, but let's not assume : * that here.) Furthermore, this way we can use existing : * infrastructure to identify which input columns are the : * interesting ones. : */ : if (window_pathkeys) 0.00 : 61dc05: 0f 84 e5 03 00 00 je 61dff0 : { : Sort *sort_plan; : : sort_plan = make_sort_from_pathkeys(root, 0.00 : 61dc0b: 48 8b b5 18 fe ff ff mov -0x1e8(%rbp),%rsi 0.00 : 61dc12: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61dc19: 48 89 c2 mov %rax,%rdx 0.00 : 61dc1c: f2 0f 10 05 34 49 1a movsd 0x1a4934(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 61dc23: 00 0.00 : 61dc24: e8 b7 7c ff ff callq 6158e0 : result_plan, : window_pathkeys, : -1.0); : if (!pathkeys_contained_in(window_pathkeys, 0.00 : 61dc29: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 61dc30: 4c 89 e7 mov %r12,%rdi : */ : if (window_pathkeys) : { : Sort *sort_plan; : : sort_plan = make_sort_from_pathkeys(root, 0.00 : 61dc33: 48 89 c3 mov %rax,%rbx : result_plan, : window_pathkeys, : -1.0); : if (!pathkeys_contained_in(window_pathkeys, 0.00 : 61dc36: e8 a5 3c ff ff callq 6118e0 : current_pathkeys)) : { : /* we do indeed need to sort */ : result_plan = (Plan *) sort_plan; 0.00 : 61dc3b: 48 8b 95 18 fe ff ff mov -0x1e8(%rbp),%rdx 0.00 : 61dc42: 84 c0 test %al,%al 0.00 : 61dc44: 4c 0f 45 a5 20 fe ff cmovne -0x1e0(%rbp),%r12 0.00 : 61dc4b: ff 0.00 : 61dc4c: 48 0f 44 d3 cmove %rbx,%rdx 0.00 : 61dc50: 48 89 95 18 fe ff ff mov %rdx,-0x1e8(%rbp) 0.00 : 61dc57: 4c 89 a5 20 fe ff ff mov %r12,-0x1e0(%rbp) : current_pathkeys = window_pathkeys; : } : /* In either case, extract the per-column information */ : get_column_info_for_window(root, wc, tlist, 0.00 : 61dc5e: 48 8b 4b 68 mov 0x68(%rbx),%rcx 0.00 : 61dc62: 48 89 8d 90 fe ff ff mov %rcx,-0x170(%rbp) 0.00 : 61dc69: 8b 5b 60 mov 0x60(%rbx),%ebx 0.00 : 61dc6c: 89 9d ec fd ff ff mov %ebx,-0x214(%rbp) : Oid **partOperators, : int *ordNumCols, : AttrNumber **ordColIdx, : Oid **ordOperators) : { : int numPart = list_length(wc->partitionClause); 0.00 : 61dc72: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 61dc79: 48 8b 7b 18 mov 0x18(%rbx),%rdi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61dc7d: 48 85 ff test %rdi,%rdi 0.00 : 61dc80: 0f 84 00 04 00 00 je 61e086 0.00 : 61dc86: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 61dc89: 48 63 d8 movslq %eax,%rbx 0.00 : 61dc8c: 89 85 8c fe ff ff mov %eax,-0x174(%rbp) 0.00 : 61dc92: 4c 8d 24 1b lea (%rbx,%rbx,1),%r12 : int numOrder = list_length(wc->orderClause); 0.00 : 61dc96: 48 8b 95 80 fe ff ff mov -0x180(%rbp),%rdx 0.00 : 61dc9d: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 61dca1: c7 85 a4 fe ff ff 00 movl $0x0,-0x15c(%rbp) 0.00 : 61dca8: 00 00 00 0.00 : 61dcab: 48 85 c0 test %rax,%rax 0.00 : 61dcae: 74 09 je 61dcb9 0.00 : 61dcb0: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 61dcb3: 89 85 a4 fe ff ff mov %eax,-0x15c(%rbp) : : if (numSortCols == numPart + numOrder) 0.00 : 61dcb9: 8b 85 a4 fe ff ff mov -0x15c(%rbp),%eax 0.00 : 61dcbf: 03 85 8c fe ff ff add -0x174(%rbp),%eax 0.00 : 61dcc5: 39 85 ec fd ff ff cmp %eax,-0x214(%rbp) 0.00 : 61dccb: 0f 84 7f 03 00 00 je 61e050 : int scidx; : ListCell *lc; : : /* first, allocate what's certainly enough space for the arrays */ : *partNumCols = 0; : *partColIdx = (AttrNumber *) palloc(numPart * sizeof(AttrNumber)); 0.00 : 61dcd1: 4c 89 e7 mov %r12,%rdi 0.00 : 61dcd4: e8 77 b0 17 00 callq 798d50 : *partOperators = (Oid *) palloc(numPart * sizeof(Oid)); 0.00 : 61dcd9: 48 8d 3c 9d 00 00 00 lea 0x0(,%rbx,4),%rdi 0.00 : 61dce0: 00 : int scidx; : ListCell *lc; : : /* first, allocate what's certainly enough space for the arrays */ : *partNumCols = 0; : *partColIdx = (AttrNumber *) palloc(numPart * sizeof(AttrNumber)); 0.00 : 61dce1: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) : *partOperators = (Oid *) palloc(numPart * sizeof(Oid)); 0.00 : 61dce8: e8 63 b0 17 00 callq 798d50 : *ordNumCols = 0; : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); 0.00 : 61dced: 48 63 9d a4 fe ff ff movslq -0x15c(%rbp),%rbx : ListCell *lc; : : /* first, allocate what's certainly enough space for the arrays */ : *partNumCols = 0; : *partColIdx = (AttrNumber *) palloc(numPart * sizeof(AttrNumber)); : *partOperators = (Oid *) palloc(numPart * sizeof(Oid)); 0.00 : 61dcf4: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : *ordNumCols = 0; : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); 0.00 : 61dcfb: 48 8d 3c 1b lea (%rbx,%rbx,1),%rdi : *ordOperators = (Oid *) palloc(numOrder * sizeof(Oid)); 0.00 : 61dcff: 48 c1 e3 02 shl $0x2,%rbx : /* first, allocate what's certainly enough space for the arrays */ : *partNumCols = 0; : *partColIdx = (AttrNumber *) palloc(numPart * sizeof(AttrNumber)); : *partOperators = (Oid *) palloc(numPart * sizeof(Oid)); : *ordNumCols = 0; : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); 0.00 : 61dd03: e8 48 b0 17 00 callq 798d50 : *ordOperators = (Oid *) palloc(numOrder * sizeof(Oid)); 0.00 : 61dd08: 48 89 df mov %rbx,%rdi : /* first, allocate what's certainly enough space for the arrays */ : *partNumCols = 0; : *partColIdx = (AttrNumber *) palloc(numPart * sizeof(AttrNumber)); : *partOperators = (Oid *) palloc(numPart * sizeof(Oid)); : *ordNumCols = 0; : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); 0.00 : 61dd0b: 48 89 85 a8 fe ff ff mov %rax,-0x158(%rbp) : *ordOperators = (Oid *) palloc(numOrder * sizeof(Oid)); 0.00 : 61dd12: e8 39 b0 17 00 callq 798d50 : sortclauses = NIL; : pathkeys = NIL; : scidx = 0; : foreach(lc, wc->partitionClause) 0.00 : 61dd17: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx : *partNumCols = 0; : *partColIdx = (AttrNumber *) palloc(numPart * sizeof(AttrNumber)); : *partOperators = (Oid *) palloc(numPart * sizeof(Oid)); : *ordNumCols = 0; : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); : *ordOperators = (Oid *) palloc(numOrder * sizeof(Oid)); 0.00 : 61dd1e: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) : sortclauses = NIL; : pathkeys = NIL; : scidx = 0; : foreach(lc, wc->partitionClause) 0.00 : 61dd25: 48 8b 43 18 mov 0x18(%rbx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61dd29: 48 85 c0 test %rax,%rax 0.00 : 61dd2c: 0f 84 93 05 00 00 je 61e2c5 0.00 : 61dd32: 4c 8b 70 08 mov 0x8(%rax),%r14 0.00 : 61dd36: 4d 85 f6 test %r14,%r14 0.00 : 61dd39: 0f 84 86 05 00 00 je 61e2c5 0.00 : 61dd3f: 45 31 ed xor %r13d,%r13d 0.00 : 61dd42: 45 31 e4 xor %r12d,%r12d 0.00 : 61dd45: 45 31 ff xor %r15d,%r15d 0.00 : 61dd48: c7 85 8c fe ff ff 00 movl $0x0,-0x174(%rbp) 0.00 : 61dd4f: 00 00 00 0.00 : 61dd52: eb 17 jmp 61dd6b 0.00 : 61dd54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 61dd58: 4d 8b 76 08 mov 0x8(%r14),%r14 : : sortclauses = lappend(sortclauses, sgc); : new_pathkeys = make_pathkeys_for_sortclauses(root, : sortclauses, : tlist); : if (list_length(new_pathkeys) > list_length(pathkeys)) 0.00 : 61dd5c: 4c 89 e3 mov %r12,%rbx : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); : *ordOperators = (Oid *) palloc(numOrder * sizeof(Oid)); : sortclauses = NIL; : pathkeys = NIL; : scidx = 0; : foreach(lc, wc->partitionClause) 0.00 : 61dd5f: 4d 85 f6 test %r14,%r14 0.00 : 61dd62: 0f 84 9a 00 00 00 je 61de02 0.00 : 61dd68: 49 89 dc mov %rbx,%r12 : { : SortGroupClause *sgc = (SortGroupClause *) lfirst(lc); 0.00 : 61dd6b: 49 8b 06 mov (%r14),%rax : List *new_pathkeys; : : sortclauses = lappend(sortclauses, sgc); 0.00 : 61dd6e: 4c 89 ef mov %r13,%rdi 0.00 : 61dd71: 48 89 c6 mov %rax,%rsi : sortclauses = NIL; : pathkeys = NIL; : scidx = 0; : foreach(lc, wc->partitionClause) : { : SortGroupClause *sgc = (SortGroupClause *) lfirst(lc); 0.00 : 61dd74: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) : List *new_pathkeys; : : sortclauses = lappend(sortclauses, sgc); 0.00 : 61dd7b: e8 00 41 fc ff callq 5e1e80 : new_pathkeys = make_pathkeys_for_sortclauses(root, 0.00 : 61dd80: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 61dd87: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61dd8e: 48 89 c6 mov %rax,%rsi : foreach(lc, wc->partitionClause) : { : SortGroupClause *sgc = (SortGroupClause *) lfirst(lc); : List *new_pathkeys; : : sortclauses = lappend(sortclauses, sgc); 0.00 : 61dd91: 49 89 c5 mov %rax,%r13 : new_pathkeys = make_pathkeys_for_sortclauses(root, 0.00 : 61dd94: e8 67 48 ff ff callq 612600 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61dd99: 31 d2 xor %edx,%edx 0.00 : 61dd9b: 48 85 c0 test %rax,%rax 0.00 : 61dd9e: 48 89 c3 mov %rax,%rbx 0.00 : 61dda1: 74 03 je 61dda6 0.00 : 61dda3: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 61dda6: 31 c0 xor %eax,%eax 0.00 : 61dda8: 4d 85 e4 test %r12,%r12 0.00 : 61ddab: 74 05 je 61ddb2 0.00 : 61ddad: 41 8b 44 24 04 mov 0x4(%r12),%eax : sortclauses, : tlist); : if (list_length(new_pathkeys) > list_length(pathkeys)) 0.00 : 61ddb2: 39 c2 cmp %eax,%edx 0.00 : 61ddb4: 7e a2 jle 61dd58 : { : /* this sort clause is actually significant */ : (*partColIdx)[*partNumCols] = sortColIdx[scidx++]; 0.00 : 61ddb6: 48 8b 8d 90 fe ff ff mov -0x170(%rbp),%rcx 0.00 : 61ddbd: 49 63 c7 movslq %r15d,%rax 0.00 : 61ddc0: 48 63 95 8c fe ff ff movslq -0x174(%rbp),%rdx 0.00 : 61ddc7: 41 83 c7 01 add $0x1,%r15d 0.00 : 61ddcb: 0f b7 04 41 movzwl (%rcx,%rax,2),%eax 0.00 : 61ddcf: 48 8b 8d f8 fe ff ff mov -0x108(%rbp),%rcx 0.00 : 61ddd6: 66 89 04 51 mov %ax,(%rcx,%rdx,2) : (*partOperators)[*partNumCols] = sgc->eqop; 0.00 : 61ddda: 48 8b 8d e0 fe ff ff mov -0x120(%rbp),%rcx 0.00 : 61dde1: 8b 41 08 mov 0x8(%rcx),%eax 0.00 : 61dde4: 48 8b 8d 98 fe ff ff mov -0x168(%rbp),%rcx 0.00 : 61ddeb: 89 04 91 mov %eax,(%rcx,%rdx,4) : (*partNumCols)++; 0.00 : 61ddee: 83 85 8c fe ff ff 01 addl $0x1,-0x174(%rbp) : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); : *ordOperators = (Oid *) palloc(numOrder * sizeof(Oid)); : sortclauses = NIL; : pathkeys = NIL; : scidx = 0; : foreach(lc, wc->partitionClause) 0.00 : 61ddf5: 4d 8b 76 08 mov 0x8(%r14),%r14 0.00 : 61ddf9: 4d 85 f6 test %r14,%r14 0.00 : 61ddfc: 0f 85 66 ff ff ff jne 61dd68 : (*partOperators)[*partNumCols] = sgc->eqop; : (*partNumCols)++; : pathkeys = new_pathkeys; : } : } : foreach(lc, wc->orderClause) 0.00 : 61de02: 48 8b 95 80 fe ff ff mov -0x180(%rbp),%rdx 0.00 : 61de09: 48 8b 42 20 mov 0x20(%rdx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61de0d: 48 85 c0 test %rax,%rax 0.00 : 61de10: 0f 84 a0 04 00 00 je 61e2b6 0.00 : 61de16: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 61de1a: 4d 85 e4 test %r12,%r12 0.00 : 61de1d: 0f 84 93 04 00 00 je 61e2b6 0.00 : 61de23: c7 85 a4 fe ff ff 00 movl $0x0,-0x15c(%rbp) 0.00 : 61de2a: 00 00 00 0.00 : 61de2d: eb 15 jmp 61de44 0.00 : 61de2f: 90 nop 0.00 : 61de30: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : : sortclauses = lappend(sortclauses, sgc); : new_pathkeys = make_pathkeys_for_sortclauses(root, : sortclauses, : tlist); : if (list_length(new_pathkeys) > list_length(pathkeys)) 0.00 : 61de35: 48 89 d9 mov %rbx,%rcx : (*partOperators)[*partNumCols] = sgc->eqop; : (*partNumCols)++; : pathkeys = new_pathkeys; : } : } : foreach(lc, wc->orderClause) 0.00 : 61de38: 4d 85 e4 test %r12,%r12 0.00 : 61de3b: 0f 84 8d 00 00 00 je 61dece 0.00 : 61de41: 48 89 cb mov %rcx,%rbx : { : SortGroupClause *sgc = (SortGroupClause *) lfirst(lc); 0.00 : 61de44: 4d 8b 34 24 mov (%r12),%r14 : List *new_pathkeys; : : sortclauses = lappend(sortclauses, sgc); 0.00 : 61de48: 4c 89 ef mov %r13,%rdi 0.00 : 61de4b: 4c 89 f6 mov %r14,%rsi 0.00 : 61de4e: e8 2d 40 fc ff callq 5e1e80 : new_pathkeys = make_pathkeys_for_sortclauses(root, 0.00 : 61de53: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 61de5a: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61de61: 48 89 c6 mov %rax,%rsi : foreach(lc, wc->orderClause) : { : SortGroupClause *sgc = (SortGroupClause *) lfirst(lc); : List *new_pathkeys; : : sortclauses = lappend(sortclauses, sgc); 0.00 : 61de64: 49 89 c5 mov %rax,%r13 : new_pathkeys = make_pathkeys_for_sortclauses(root, 0.00 : 61de67: e8 94 47 ff ff callq 612600 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61de6c: 31 d2 xor %edx,%edx 0.00 : 61de6e: 48 85 c0 test %rax,%rax 0.00 : 61de71: 48 89 c1 mov %rax,%rcx 0.00 : 61de74: 74 03 je 61de79 0.00 : 61de76: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 61de79: 31 c0 xor %eax,%eax 0.00 : 61de7b: 48 85 db test %rbx,%rbx 0.00 : 61de7e: 74 03 je 61de83 0.00 : 61de80: 8b 43 04 mov 0x4(%rbx),%eax : sortclauses, : tlist); : if (list_length(new_pathkeys) > list_length(pathkeys)) 0.00 : 61de83: 39 c2 cmp %eax,%edx 0.00 : 61de85: 7e a9 jle 61de30 : { : /* this sort clause is actually significant */ : (*ordColIdx)[*ordNumCols] = sortColIdx[scidx++]; 0.00 : 61de87: 48 8b 9d 90 fe ff ff mov -0x170(%rbp),%rbx 0.00 : 61de8e: 49 63 c7 movslq %r15d,%rax 0.00 : 61de91: 48 63 95 a4 fe ff ff movslq -0x15c(%rbp),%rdx 0.00 : 61de98: 41 83 c7 01 add $0x1,%r15d 0.00 : 61de9c: 0f b7 04 43 movzwl (%rbx,%rax,2),%eax 0.00 : 61dea0: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 61dea7: 66 89 04 53 mov %ax,(%rbx,%rdx,2) : (*ordOperators)[*ordNumCols] = sgc->eqop; 0.00 : 61deab: 41 8b 46 08 mov 0x8(%r14),%eax 0.00 : 61deaf: 48 8b 9d b0 fe ff ff mov -0x150(%rbp),%rbx 0.00 : 61deb6: 89 04 93 mov %eax,(%rbx,%rdx,4) : (*ordNumCols)++; 0.00 : 61deb9: 83 85 a4 fe ff ff 01 addl $0x1,-0x15c(%rbp) : (*partOperators)[*partNumCols] = sgc->eqop; : (*partNumCols)++; : pathkeys = new_pathkeys; : } : } : foreach(lc, wc->orderClause) 0.00 : 61dec0: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 61dec5: 4d 85 e4 test %r12,%r12 0.00 : 61dec8: 0f 85 73 ff ff ff jne 61de41 : (*ordNumCols)++; : pathkeys = new_pathkeys; : } : } : /* complain if we didn't eat exactly the right number of sort cols */ : if (scidx != numSortCols) 0.00 : 61dece: 44 39 bd ec fd ff ff cmp %r15d,-0x214(%rbp) 0.00 : 61ded5: 0f 85 8b 0c 00 00 jne 61eb66 0.00 : 61dedb: 48 8b 85 f8 fe ff ff mov -0x108(%rbp),%rax 0.00 : 61dee2: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : ordNumCols = 0; : ordColIdx = NULL; : ordOperators = NULL; : } : : if (lnext(l)) 0.00 : 61dee9: 48 8b 95 78 fe ff ff mov -0x188(%rbp),%rdx 0.00 : 61def0: 48 83 7a 08 00 cmpq $0x0,0x8(%rdx) 0.00 : 61def5: 0f 84 3d 01 00 00 je 61e038 : { : /* Add the current WindowFuncs to the running tlist */ : window_tlist = add_to_flat_tlist(window_tlist, 0.00 : 61defb: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 61df02: 48 8b 8d 60 fe ff ff mov -0x1a0(%rbp),%rcx 0.00 : 61df09: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 61df10: 8b 43 40 mov 0x40(%rbx),%eax 0.00 : 61df13: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 61df17: 48 8b 34 c2 mov (%rdx,%rax,8),%rsi 0.00 : 61df1b: e8 a0 95 01 00 callq 6374c0 0.00 : 61df20: 48 89 85 70 fe ff ff mov %rax,-0x190(%rbp) : /* Install the original tlist in the topmost WindowAgg */ : window_tlist = tlist; : } : : /* ... and make the WindowAgg plan node */ : result_plan = (Plan *) 0.00 : 61df27: 48 8b 85 80 fe ff ff mov -0x180(%rbp),%rax 0.00 : 61df2e: 48 8b 8d 60 fe ff ff mov -0x1a0(%rbp),%rcx 0.00 : 61df35: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 61df3c: 44 8b 70 40 mov 0x40(%rax),%r14d 0.00 : 61df40: 48 8b 58 38 mov 0x38(%rax),%rbx 0.00 : 61df44: 4c 8b 60 30 mov 0x30(%rax),%r12 0.00 : 61df48: 44 8b 68 28 mov 0x28(%rax),%r13d 0.00 : 61df4c: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 61df50: 44 89 f2 mov %r14d,%edx 0.00 : 61df53: 4c 8b 3c d0 mov (%rax,%rdx,8),%r15 0.00 : 61df57: e8 34 62 fc ff callq 5e4190 0.00 : 61df5c: 48 89 c6 mov %rax,%rsi 0.00 : 61df5f: 48 8b 85 18 fe ff ff mov -0x1e8(%rbp),%rax 0.00 : 61df66: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 61df6d: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 61df74: 48 89 5c 24 30 mov %rbx,0x30(%rsp) 0.00 : 61df79: 4c 8b 8d 90 fe ff ff mov -0x170(%rbp),%r9 0.00 : 61df80: 8b 9d a4 fe ff ff mov -0x15c(%rbp),%ebx 0.00 : 61df86: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.00 : 61df8b: 44 8b 85 8c fe ff ff mov -0x174(%rbp),%r8d 0.00 : 61df92: 48 8b 85 98 fe ff ff mov -0x168(%rbp),%rax 0.00 : 61df99: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61dfa0: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 61dfa5: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 61dfaa: 4c 89 fa mov %r15,%rdx 0.00 : 61dfad: 44 89 f1 mov %r14d,%ecx 0.00 : 61dfb0: 4c 89 64 24 28 mov %r12,0x28(%rsp) 0.00 : 61dfb5: 44 89 6c 24 20 mov %r13d,0x20(%rsp) 0.00 : 61dfba: 89 5c 24 08 mov %ebx,0x8(%rsp) 0.00 : 61dfbe: 48 89 04 24 mov %rax,(%rsp) 0.00 : 61dfc2: e8 c9 6b ff ff callq 614b90 : * node has a separately modifiable tlist. (XXX wouldn't a : * shallow list copy do for that?) : */ : result_plan->targetlist = (List *) copyObject(window_tlist); : : foreach(l, activeWindows) 0.00 : 61dfc7: 48 8b 95 78 fe ff ff mov -0x188(%rbp),%rdx : /* Install the original tlist in the topmost WindowAgg */ : window_tlist = tlist; : } : : /* ... and make the WindowAgg plan node */ : result_plan = (Plan *) 0.00 : 61dfce: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : * node has a separately modifiable tlist. (XXX wouldn't a : * shallow list copy do for that?) : */ : result_plan->targetlist = (List *) copyObject(window_tlist); : : foreach(l, activeWindows) 0.00 : 61dfd5: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 61dfd9: 48 85 d2 test %rdx,%rdx 0.00 : 61dfdc: 48 89 95 78 fe ff ff mov %rdx,-0x188(%rbp) 0.00 : 61dfe3: 0f 85 ef fb ff ff jne 61dbd8 0.00 : 61dfe9: e9 36 ee ff ff jmpq 61ce24 0.00 : 61dfee: 66 90 xchg %ax,%ax : pathkeys = new_pathkeys; : } : } : /* complain if we didn't eat exactly the right number of sort cols */ : if (scidx != numSortCols) : elog(ERROR, "failed to deconstruct sort operators into partitioning/ordering operators"); 0.00 : 61dff0: c7 85 8c fe ff ff 00 movl $0x0,-0x174(%rbp) 0.00 : 61dff7: 00 00 00 0.00 : 61dffa: 48 c7 85 90 fe ff ff movq $0x0,-0x170(%rbp) 0.00 : 61e001: 00 00 00 00 0.00 : 61e005: 48 c7 85 98 fe ff ff movq $0x0,-0x168(%rbp) 0.00 : 61e00c: 00 00 00 00 0.00 : 61e010: c7 85 a4 fe ff ff 00 movl $0x0,-0x15c(%rbp) 0.00 : 61e017: 00 00 00 0.00 : 61e01a: 48 c7 85 a8 fe ff ff movq $0x0,-0x158(%rbp) 0.00 : 61e021: 00 00 00 00 0.00 : 61e025: 48 c7 85 b0 fe ff ff movq $0x0,-0x150(%rbp) 0.00 : 61e02c: 00 00 00 00 0.00 : 61e030: e9 b4 fe ff ff jmpq 61dee9 0.00 : 61e035: 0f 1f 00 nopl (%rax) : ordNumCols = 0; : ordColIdx = NULL; : ordOperators = NULL; : } : : if (lnext(l)) 0.00 : 61e038: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 61e03f: 48 89 8d 70 fe ff ff mov %rcx,-0x190(%rbp) 0.00 : 61e046: e9 dc fe ff ff jmpq 61df27 0.00 : 61e04b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (numSortCols == numPart + numOrder) : { : /* easy case */ : *partNumCols = numPart; : *partColIdx = sortColIdx; : *partOperators = extract_grouping_ops(wc->partitionClause); 0.00 : 61e050: e8 6b 8f 01 00 callq 636fc0 : *ordNumCols = numOrder; : *ordColIdx = sortColIdx + numPart; 0.00 : 61e055: 4c 03 a5 90 fe ff ff add -0x170(%rbp),%r12 : *ordOperators = extract_grouping_ops(wc->orderClause); 0.00 : 61e05c: 48 8b 8d 80 fe ff ff mov -0x180(%rbp),%rcx : if (numSortCols == numPart + numOrder) : { : /* easy case */ : *partNumCols = numPart; : *partColIdx = sortColIdx; : *partOperators = extract_grouping_ops(wc->partitionClause); 0.00 : 61e063: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : *ordNumCols = numOrder; : *ordColIdx = sortColIdx + numPart; 0.00 : 61e06a: 4c 89 a5 a8 fe ff ff mov %r12,-0x158(%rbp) : *ordOperators = extract_grouping_ops(wc->orderClause); 0.00 : 61e071: 48 8b 79 20 mov 0x20(%rcx),%rdi 0.00 : 61e075: e8 46 8f 01 00 callq 636fc0 0.00 : 61e07a: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) 0.00 : 61e081: e9 63 fe ff ff jmpq 61dee9 0.00 : 61e086: c7 85 8c fe ff ff 00 movl $0x0,-0x174(%rbp) 0.00 : 61e08d: 00 00 00 0.00 : 61e090: 31 db xor %ebx,%ebx 0.00 : 61e092: 45 31 e4 xor %r12d,%r12d 0.00 : 61e095: e9 fc fb ff ff jmpq 61dc96 : : Assert(orig_tlist_item != NULL); : orig_tle = (TargetEntry *) lfirst(orig_tlist_item); : orig_tlist_item = lnext(orig_tlist_item); : if (orig_tle->resjunk) /* should not happen */ : elog(ERROR, "resjunk output columns are not implemented"); 0.00 : 61e09a: ba 20 b8 89 00 mov $0x89b820,%edx 0.00 : 61e09f: be be 0c 00 00 mov $0xcbe,%esi : Assert(new_tle->resno == orig_tle->resno); : new_tle->ressortgroupref = orig_tle->ressortgroupref; : } : if (orig_tlist_item != NULL) : elog(ERROR, "resjunk output columns are not implemented"); 0.00 : 61e0a4: bf 8c b5 89 00 mov $0x89b58c,%edi 0.00 : 61e0a9: e8 72 d3 15 00 callq 77b420 0.00 : 61e0ae: be e8 b6 89 00 mov $0x89b6e8,%esi 0.00 : 61e0b3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61e0b8: 31 c0 xor %eax,%eax 0.00 : 61e0ba: e8 71 d1 15 00 callq 77b230 0.00 : 61e0bf: e8 0c b4 e4 ff callq 4694d0 : * too.) Note that they could all have been eliminated by constant : * folding, in which case we don't need to do any more work. : */ : if (parse->hasWindowFuncs) : { : wflists = find_window_functions((Node *) tlist, 0.00 : 61e0c4: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 61e0cb: 31 f6 xor %esi,%esi 0.00 : 61e0cd: 48 8b 42 70 mov 0x70(%rdx),%rax 0.00 : 61e0d1: 48 85 c0 test %rax,%rax 0.00 : 61e0d4: 74 03 je 61e0d9 0.00 : 61e0d6: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 61e0d9: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 61e0e0: e8 4b 14 01 00 callq 62f530 0.00 : 61e0e5: 48 89 85 60 fe ff ff mov %rax,-0x1a0(%rbp) : list_length(parse->windowClause)); : if (wflists->numWindowFuncs > 0) 0.00 : 61e0ec: 8b 00 mov (%rax),%eax 0.00 : 61e0ee: 85 c0 test %eax,%eax 0.00 : 61e0f0: 0f 8e 6d 01 00 00 jle 61e263 : List *actives; : ListCell *lc; : : /* First, make a list of the active windows */ : actives = NIL; : foreach(lc, root->parse->windowClause) 0.00 : 61e0f6: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61e0fd: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 61e101: 48 89 8d e8 fe ff ff mov %rcx,-0x118(%rbp) 0.00 : 61e108: 48 8b 41 70 mov 0x70(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61e10c: 48 85 c0 test %rax,%rax 0.00 : 61e10f: 0f 84 41 0a 00 00 je 61eb56 0.00 : 61e115: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 61e119: 48 85 db test %rbx,%rbx 0.00 : 61e11c: 0f 84 34 0a 00 00 je 61eb56 0.00 : 61e122: 45 31 e4 xor %r12d,%r12d 0.00 : 61e125: 0f 1f 00 nopl (%rax) : { : WindowClause *wc = (WindowClause *) lfirst(lc); 0.00 : 61e128: 48 8b 33 mov (%rbx),%rsi : : /* It's only active if wflists shows some related WindowFuncs */ : Assert(wc->winref <= wflists->maxWinRef); : if (wflists->windowFuncs[wc->winref] != NIL) 0.00 : 61e12b: 48 8b 8d 60 fe ff ff mov -0x1a0(%rbp),%rcx 0.00 : 61e132: 8b 56 40 mov 0x40(%rsi),%edx 0.00 : 61e135: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 61e139: 48 83 3c d0 00 cmpq $0x0,(%rax,%rdx,8) 0.00 : 61e13e: 74 0b je 61e14b : actives = lappend(actives, wc); 0.00 : 61e140: 4c 89 e7 mov %r12,%rdi 0.00 : 61e143: e8 38 3d fc ff callq 5e1e80 0.00 : 61e148: 49 89 c4 mov %rax,%r12 : List *actives; : ListCell *lc; : : /* First, make a list of the active windows */ : actives = NIL; : foreach(lc, root->parse->windowClause) 0.00 : 61e14b: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61e14f: 48 85 db test %rbx,%rbx 0.00 : 61e152: 75 d4 jne 61e128 : * the latter would do for the former), or putting windows first that : * match a sort order available for the underlying query. For the moment : * we are content with meeting the spec. : */ : result = NIL; : while (actives != NIL) 0.00 : 61e154: 4d 85 e4 test %r12,%r12 0.00 : 61e157: 0f 84 a9 0c 00 00 je 61ee06 : List *actives; : ListCell *lc; : : /* First, make a list of the active windows */ : actives = NIL; : foreach(lc, root->parse->windowClause) 0.00 : 61e15d: 48 c7 85 68 fe ff ff movq $0x0,-0x198(%rbp) 0.00 : 61e164: 00 00 00 00 0.00 : 61e168: 49 8b 44 24 08 mov 0x8(%r12),%rax : WindowClause *wc = (WindowClause *) linitial(actives); : ListCell *prev; : ListCell *next; : : /* Move wc from actives to result */ : actives = list_delete_first(actives); 0.00 : 61e16d: 4c 89 e7 mov %r12,%rdi : * we are content with meeting the spec. : */ : result = NIL; : while (actives != NIL) : { : WindowClause *wc = (WindowClause *) linitial(actives); 0.00 : 61e170: 4c 8b 28 mov (%rax),%r13 : ListCell *prev; : ListCell *next; : : /* Move wc from actives to result */ : actives = list_delete_first(actives); 0.00 : 61e173: e8 58 40 fc ff callq 5e21d0 : result = lappend(result, wc); 0.00 : 61e178: 48 8b bd 68 fe ff ff mov -0x198(%rbp),%rdi : WindowClause *wc = (WindowClause *) linitial(actives); : ListCell *prev; : ListCell *next; : : /* Move wc from actives to result */ : actives = list_delete_first(actives); 0.00 : 61e17f: 49 89 c4 mov %rax,%r12 : result = lappend(result, wc); 0.00 : 61e182: 4c 89 ee mov %r13,%rsi 0.00 : 61e185: e8 f6 3c fc ff callq 5e1e80 0.00 : 61e18a: 4d 85 e4 test %r12,%r12 0.00 : 61e18d: 48 89 85 68 fe ff ff mov %rax,-0x198(%rbp) 0.00 : 61e194: 74 49 je 61e1df 0.00 : 61e196: 49 8b 5c 24 08 mov 0x8(%r12),%rbx : : /* Now move any matching windows from actives to result */ : prev = NULL; : for (lc = list_head(actives); lc; lc = next) 0.00 : 61e19b: 48 85 db test %rbx,%rbx 0.00 : 61e19e: 48 89 d8 mov %rbx,%rax 0.00 : 61e1a1: 74 ca je 61e16d 0.00 : 61e1a3: 48 c7 85 c8 fe ff ff movq $0x0,-0x138(%rbp) 0.00 : 61e1aa: 00 00 00 00 : { : WindowClause *wc2 = (WindowClause *) lfirst(lc); 0.00 : 61e1ae: 4c 8b 33 mov (%rbx),%r14 : : next = lnext(lc); : /* framing options are NOT to be compared here! */ : if (equal(wc->partitionClause, wc2->partitionClause) && 0.00 : 61e1b1: 49 8b 7d 18 mov 0x18(%r13),%rdi : prev = NULL; : for (lc = list_head(actives); lc; lc = next) : { : WindowClause *wc2 = (WindowClause *) lfirst(lc); : : next = lnext(lc); 0.00 : 61e1b5: 4c 8b 7b 08 mov 0x8(%rbx),%r15 : /* framing options are NOT to be compared here! */ : if (equal(wc->partitionClause, wc2->partitionClause) && 0.00 : 61e1b9: 49 8b 76 18 mov 0x18(%r14),%rsi 0.00 : 61e1bd: e8 0e cf fc ff callq 5eb0d0 0.00 : 61e1c2: 84 c0 test %al,%al 0.00 : 61e1c4: 0f 85 96 03 00 00 jne 61e560 : equal(wc->orderClause, wc2->orderClause)) : { : actives = list_delete_cell(actives, lc, prev); : result = lappend(result, wc2); 0.00 : 61e1ca: 48 89 9d c8 fe ff ff mov %rbx,-0x138(%rbp) : actives = list_delete_first(actives); : result = lappend(result, wc); : : /* Now move any matching windows from actives to result */ : prev = NULL; : for (lc = list_head(actives); lc; lc = next) 0.00 : 61e1d1: 4d 85 ff test %r15,%r15 0.00 : 61e1d4: 0f 85 f6 07 00 00 jne 61e9d0 : * the latter would do for the former), or putting windows first that : * match a sort order available for the underlying query. For the moment : * we are content with meeting the spec. : */ : result = NIL; : while (actives != NIL) 0.00 : 61e1da: 4d 85 e4 test %r12,%r12 0.00 : 61e1dd: 75 89 jne 61e168 0.00 : 61e1df: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 61e1e6: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61e1ea: 48 89 9d e8 fe ff ff mov %rbx,-0x118(%rbp) 0.00 : 61e1f1: e9 84 f3 ff ff jmpq 61d57a : */ : sub_tlist = NIL; : non_group_cols = NIL; : *need_tlist_eval = false; /* only eval if not flat tlist */ : : numCols = list_length(parse->groupClause); 0.00 : 61e1f6: 48 8b 8d e8 fe ff ff mov -0x118(%rbp),%rcx 0.00 : 61e1fd: 48 8b 41 60 mov 0x60(%rcx),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 61e201: 48 85 c0 test %rax,%rax 0.00 : 61e204: 0f 85 8e f3 ff ff jne 61d598 : { : /* : * With no grouping columns, just pass whole tlist to pull_var_clause. : * Need (shallow) copy to avoid damaging input tlist below. : */ : non_group_cols = list_copy(tlist); 0.00 : 61e20a: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 61e211: 45 31 e4 xor %r12d,%r12d 0.00 : 61e214: e8 e7 34 fc ff callq 5e1700 0.00 : 61e219: 48 c7 85 40 fe ff ff movq $0x0,-0x1c0(%rbp) 0.00 : 61e220: 00 00 00 00 0.00 : 61e224: 49 89 c7 mov %rax,%r15 0.00 : 61e227: c6 85 4b fe ff ff 00 movb $0x0,-0x1b5(%rbp) 0.00 : 61e22e: e9 c3 f4 ff ff jmpq 61d6f6 : * tuples to be fetched instead of fewer. This only matters if we got : * a tuple_fraction > 0, however. : * : * As above, use 10% if OFFSET is present but unestimatable. : */ : if (*offset_est < 0) 0.00 : 61e233: f2 0f 10 15 b5 97 25 movsd 0x2597b5(%rip),%xmm2 # 8779f0 <__func__.20024+0x30> 0.00 : 61e23a: 00 0.00 : 61e23b: e9 63 ee ff ff jmpq 61d0a3 : tuple_fraction, limit_tuples, : path_rows, path_width, : cheapest_path, sorted_path, : dNumGroups, &agg_costs); : /* Also convert # groups to long int --- but 'ware overflow! */ : numGroups = (long) Min(dNumGroups, (double) LONG_MAX); 0.00 : 61e240: f2 0f 10 8d 28 fe ff movsd -0x1d8(%rbp),%xmm1 0.00 : 61e247: ff 0.00 : 61e248: 44 89 e8 mov %r13d,%eax 0.00 : 61e24b: c6 85 36 fe ff ff 00 movb $0x0,-0x1ca(%rbp) 0.00 : 61e252: c6 85 37 fe ff ff 00 movb $0x0,-0x1c9(%rbp) 0.00 : 61e259: f2 4c 0f 2c f9 cvttsd2si %xmm1,%r15 0.00 : 61e25e: e9 1e f7 ff ff jmpq 61d981 : wflists = find_window_functions((Node *) tlist, : list_length(parse->windowClause)); : if (wflists->numWindowFuncs > 0) : activeWindows = select_active_windows(root, wflists); : else : parse->hasWindowFuncs = false; 0.00 : 61e263: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 61e26a: c6 42 25 00 movb $0x0,0x25(%rdx) 0.00 : 61e26e: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61e275: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 61e279: 48 c7 85 68 fe ff ff movq $0x0,-0x198(%rbp) 0.00 : 61e280: 00 00 00 00 0.00 : 61e284: 48 89 8d e8 fe ff ff mov %rcx,-0x118(%rbp) 0.00 : 61e28b: e9 ea f2 ff ff jmpq 61d57a : /* caller fractional, limit absolute; use caller's value */ : } : else : { : /* both fractional, so add them together */ : tuple_fraction += limit_fraction; 0.00 : 61e290: f2 0f 58 95 d8 fd ff addsd -0x228(%rbp),%xmm2 0.00 : 61e297: ff : : /* : * Return the actual output ordering in query_pathkeys for possible use by : * an outer query level. : */ : root->query_pathkeys = current_pathkeys; 0.00 : 61e298: f2 0f c2 c2 06 cmpnlesd %xmm2,%xmm0 0.00 : 61e29d: 66 0f 28 ca movapd %xmm2,%xmm1 0.00 : 61e2a1: 66 0f 28 d0 movapd %xmm0,%xmm2 0.00 : 61e2a5: 66 0f 54 c8 andpd %xmm0,%xmm1 0.00 : 61e2a9: 66 0f 55 d3 andnpd %xmm3,%xmm2 0.00 : 61e2ad: 66 0f 56 d1 orpd %xmm1,%xmm2 0.00 : 61e2b1: e9 62 ee ff ff jmpq 61d118 : (*partOperators)[*partNumCols] = sgc->eqop; : (*partNumCols)++; : pathkeys = new_pathkeys; : } : } : foreach(lc, wc->orderClause) 0.00 : 61e2b6: c7 85 a4 fe ff ff 00 movl $0x0,-0x15c(%rbp) 0.00 : 61e2bd: 00 00 00 0.00 : 61e2c0: e9 09 fc ff ff jmpq 61dece : *ordColIdx = (AttrNumber *) palloc(numOrder * sizeof(AttrNumber)); : *ordOperators = (Oid *) palloc(numOrder * sizeof(Oid)); : sortclauses = NIL; : pathkeys = NIL; : scidx = 0; : foreach(lc, wc->partitionClause) 0.00 : 61e2c5: 45 31 ed xor %r13d,%r13d 0.00 : 61e2c8: 31 db xor %ebx,%ebx 0.00 : 61e2ca: 45 31 ff xor %r15d,%r15d 0.00 : 61e2cd: c7 85 8c fe ff ff 00 movl $0x0,-0x174(%rbp) 0.00 : 61e2d4: 00 00 00 0.00 : 61e2d7: e9 26 fb ff ff jmpq 61de02 : /* : * Collect statistics about aggregates for estimating costs. Note: : * we do not attempt to detect duplicate aggregates here; a : * somewhat-overestimated cost is okay for our present purposes. : */ : count_agg_clauses(root, (Node *) tlist, &agg_costs); 0.00 : 61e2dc: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61e2e3: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e2ea: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 61e2ee: e8 ed 15 01 00 callq 62f8e0 : count_agg_clauses(root, parse->havingQual, &agg_costs); 0.00 : 61e2f3: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 61e2fa: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e301: 48 8b 72 68 mov 0x68(%rdx),%rsi 0.00 : 61e305: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 61e309: e8 d2 15 01 00 callq 62f8e0 : * Preprocess MIN/MAX aggregates, if any. Note: be careful about : * adding logic between here and the optimize_minmax_aggregates : * call. Anything that is needed in MIN/MAX-optimizable cases : * will have to be duplicated in planagg.c. : */ : preprocess_minmax_aggregates(root, tlist); 0.00 : 61e30e: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61e315: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e31c: e8 bf d7 ff ff callq 61bae0 0.00 : 61e321: e9 33 f4 ff ff jmpq 61d759 : root->group_pathkeys) || : !pathkeys_contained_in(root->window_pathkeys, : root->group_pathkeys)) : tuple_fraction = 0.0; : } : else if (parse->hasAggs || root->hasHavingQual) 0.00 : 61e326: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61e32d: 80 78 24 00 cmpb $0x0,0x24(%rax) 0.00 : 61e331: 0f 85 61 01 00 00 jne 61e498 0.00 : 61e337: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61e33e: 80 ba 3b 01 00 00 00 cmpb $0x0,0x13b(%rdx) 0.00 : 61e345: 0f 85 4d 01 00 00 jne 61e498 : * and it will deliver a single result row (so leave dNumGroups : * set to 1). : */ : tuple_fraction = 0.0; : } : else if (parse->distinctClause) 0.00 : 61e34b: 48 8b 78 78 mov 0x78(%rax),%rdi 0.00 : 61e34f: 48 85 ff test %rdi,%rdi 0.00 : 61e352: 0f 84 cd 08 00 00 je 61ec25 : * rowcount estimation purposes; this amounts to assuming the : * grouped rows are distinct already.) : */ : List *distinctExprs; : : distinctExprs = get_sortgrouplist_exprs(parse->distinctClause, 0.00 : 61e358: 48 8b 70 48 mov 0x48(%rax),%rsi 0.00 : 61e35c: e8 3f 8e 01 00 callq 6371a0 : parse->targetList); : dNumGroups = estimate_num_groups(root, distinctExprs, path_rows); 0.00 : 61e361: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e368: f2 0f 10 85 50 fe ff movsd -0x1b0(%rbp),%xmm0 0.00 : 61e36f: ff : * rowcount estimation purposes; this amounts to assuming the : * grouped rows are distinct already.) : */ : List *distinctExprs; : : distinctExprs = get_sortgrouplist_exprs(parse->distinctClause, 0.00 : 61e370: 48 89 c6 mov %rax,%rsi : parse->targetList); : dNumGroups = estimate_num_groups(root, distinctExprs, path_rows); 0.00 : 61e373: e8 08 ae 11 00 callq 739180 0.00 : 61e378: f2 0f 11 85 28 fe ff movsd %xmm0,-0x1d8(%rbp) 0.00 : 61e37f: ff : : /* : * Adjust tuple_fraction the same way as for GROUP BY, too. : */ : if (tuple_fraction >= 1.0) 0.00 : 61e380: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61e387: ff 0.00 : 61e388: 66 0f 2e 05 c8 0d 19 ucomisd 0x190dc8(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 61e38f: 00 0.00 : 61e390: 0f 82 e3 f4 ff ff jb 61d879 : tuple_fraction /= dNumGroups; 0.00 : 61e396: f2 0f 10 8d d8 fd ff movsd -0x228(%rbp),%xmm1 0.00 : 61e39d: ff 0.00 : 61e39e: f2 0f 5e 8d 28 fe ff divsd -0x1d8(%rbp),%xmm1 0.00 : 61e3a5: ff 0.00 : 61e3a6: f2 0f 11 8d d8 fd ff movsd %xmm1,-0x228(%rbp) 0.00 : 61e3ad: ff 0.00 : 61e3ae: e9 c6 f4 ff ff jmpq 61d879 : cheapest_path, sorted_path, : dNumGroups, &agg_costs); : /* Also convert # groups to long int --- but 'ware overflow! */ : numGroups = (long) Min(dNumGroups, (double) LONG_MAX); : } : else if (parse->distinctClause && sorted_path && 0.00 : 61e3b3: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61e3ba: 48 83 78 78 00 cmpq $0x0,0x78(%rax) 0.00 : 61e3bf: 74 29 je 61e3ea 0.00 : 61e3c1: 4d 85 e4 test %r12,%r12 0.00 : 61e3c4: 74 24 je 61e3ea 0.00 : 61e3c6: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61e3cd: 80 ba 3b 01 00 00 00 cmpb $0x0,0x13b(%rdx) 0.00 : 61e3d4: 75 14 jne 61e3ea 0.00 : 61e3d6: 80 78 24 00 cmpb $0x0,0x24(%rax) 0.00 : 61e3da: 75 0e jne 61e3ea 0.00 : 61e3dc: 48 83 bd 68 fe ff ff cmpq $0x0,-0x198(%rbp) 0.00 : 61e3e3: 00 0.00 : 61e3e4: 0f 84 cd 07 00 00 je 61ebb7 : /* : * We'll reach the DISTINCT stage without any intermediate : * processing, so figure out whether we will want to hash or not : * so we can choose whether to use cheapest or sorted path. : */ : use_hashed_distinct = 0.00 : 61e3ea: c6 85 36 fe ff ff 00 movb $0x0,-0x1ca(%rbp) 0.00 : 61e3f1: c6 85 37 fe ff ff 00 movb $0x0,-0x1c9(%rbp) 0.00 : 61e3f8: 45 31 ff xor %r15d,%r15d 0.00 : 61e3fb: 45 31 ed xor %r13d,%r13d 0.00 : 61e3fe: 31 c0 xor %eax,%eax 0.00 : 61e400: e9 7c f5 ff ff jmpq 61d981 : * the hash table, and/or running many sorts in parallel, either of which : * seems like a certain loser.) We similarly don't support ordered-set : * aggregates in hashed aggregation, but that case is included in the : * numOrderedAggs count. : */ : can_hash = (agg_costs->numOrderedAggs == 0 && 0.00 : 61e405: e8 76 8b 01 00 callq 636f80 0.00 : 61e40a: 84 c0 test %al,%al 0.00 : 61e40c: 0f 85 93 01 00 00 jne 61e5a5 0.00 : 61e412: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 61e416: e9 23 f5 ff ff jmpq 61d93e : * levels of sort --- and, therefore, certainly need to read all : * the tuples --- unless ORDER BY is a subset of GROUP BY. : * Likewise if we have both DISTINCT and GROUP BY, or if we have a : * window specification not compatible with the GROUP BY. : */ : if (!pathkeys_contained_in(root->sort_pathkeys, 0.00 : 61e41b: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61e422: 48 8b b2 e8 00 00 00 mov 0xe8(%rdx),%rsi 0.00 : 61e429: 48 8b ba f8 00 00 00 mov 0xf8(%rdx),%rdi 0.00 : 61e430: e8 ab 34 ff ff callq 6118e0 0.00 : 61e435: 84 c0 test %al,%al 0.00 : 61e437: 0f 84 30 f4 ff ff je 61d86d 0.00 : 61e43d: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61e444: 48 8b b1 e8 00 00 00 mov 0xe8(%rcx),%rsi 0.00 : 61e44b: 48 8b b9 f0 00 00 00 mov 0xf0(%rcx),%rdi 0.00 : 61e452: e8 89 34 ff ff callq 6118e0 0.00 : 61e457: 84 c0 test %al,%al 0.00 : 61e459: 0f 84 0e f4 ff ff je 61d86d 0.00 : 61e45f: e9 15 f4 ff ff jmpq 61d879 : : if (list_member_ptr(new_groupclause, gc)) : continue; /* it matched an ORDER BY item */ : if (partial_match) : return; /* give up, no common sort possible */ : if (!OidIsValid(gc->sortop)) 0.00 : 61e464: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 61e46b: 48 8b 42 60 mov 0x60(%rdx),%rax 0.00 : 61e46f: 90 nop 0.00 : 61e470: e9 7f f0 ff ff jmpq 61d4f4 : * WindowAgg which we know can project; so we only need to check : * once. : */ : if (!is_projection_capable_plan(result_plan)) : { : result_plan = (Plan *) make_result(root, 0.00 : 61e475: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61e47c: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e483: 31 d2 xor %edx,%edx 0.00 : 61e485: 31 f6 xor %esi,%esi 0.00 : 61e487: e8 e4 5e ff ff callq 614370 0.00 : 61e48c: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) 0.00 : 61e493: e9 4f f5 ff ff jmpq 61d9e7 : /* : * Plain non-grouped, non-aggregated query: an absolute tuple : * fraction can be divided by the number of tuples. : */ : if (tuple_fraction >= 1.0) : tuple_fraction /= path_rows; 0.00 : 61e498: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 61e49c: f2 0f 10 0d b4 0c 19 movsd 0x190cb4(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 61e4a3: 00 0.00 : 61e4a4: f2 0f 11 85 d8 fd ff movsd %xmm0,-0x228(%rbp) 0.00 : 61e4ab: ff 0.00 : 61e4ac: f2 0f 11 8d 28 fe ff movsd %xmm1,-0x1d8(%rbp) 0.00 : 61e4b3: ff 0.00 : 61e4b4: e9 c0 f3 ff ff jmpq 61d879 : sort_path.total_cost = cheapest_path->total_cost; : } : else : { : /* Figure cost for sorting */ : cost_sort(&sort_path, root, root->query_pathkeys, 0.00 : 61e4b9: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61e4c0: 48 8d 9d 40 ff ff ff lea -0xc0(%rbp),%rbx 0.00 : 61e4c7: 44 8b 05 4a a6 54 00 mov 0x54a64a(%rip),%r8d # b68b18 0.00 : 61e4ce: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 61e4d2: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 61e4d9: f2 41 0f 10 46 28 movsd 0x28(%r14),%xmm0 0.00 : 61e4df: 48 89 df mov %rbx,%rdi 0.00 : 61e4e2: 48 8b 91 e0 00 00 00 mov 0xe0(%rcx),%rdx 0.00 : 61e4e9: f2 0f 10 99 30 01 00 movsd 0x130(%rcx),%xmm3 0.00 : 61e4f0: 00 0.00 : 61e4f1: 8b 8d 5c fe ff ff mov -0x1a4(%rbp),%ecx 0.00 : 61e4f7: f2 0f 10 8d 50 fe ff movsd -0x1b0(%rbp),%xmm1 0.00 : 61e4fe: ff 0.00 : 61e4ff: e8 8c 87 fe ff callq 606c90 0.00 : 61e504: e9 e3 f3 ff ff jmpq 61d8ec 0.00 : 61e509: c7 85 4c fe ff ff 00 movl $0x0,-0x1b4(%rbp) 0.00 : 61e510: 00 00 00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/../../../../src/include/nodes/pg_list.h:99 100.00 : 61e513: e9 ee ef ff ff jmpq 61d506 : * Figure out whether there's a hard limit on the number of rows that : * query_planner's result subplan needs to return. Even if we know a : * hard limit overall, it doesn't apply if the query has any : * grouping/aggregation operations. : */ : if (parse->groupClause || 0.00 : 61e518: 48 83 78 78 00 cmpq $0x0,0x78(%rax) 0.00 : 61e51d: 0f 1f 00 nopl (%rax) 0.00 : 61e520: 0f 85 5c f2 ff ff jne 61d782 0.00 : 61e526: 66 83 78 24 00 cmpw $0x0,0x24(%rax) 0.00 : 61e52b: 0f 85 51 f2 ff ff jne 61d782 0.00 : 61e531: 80 b9 3b 01 00 00 00 cmpb $0x0,0x13b(%rcx) 0.00 : 61e538: 0f 85 44 f2 ff ff jne 61d782 : parse->hasAggs || : parse->hasWindowFuncs || : root->hasHavingQual) : root->limit_tuples = -1.0; : else : root->limit_tuples = limit_tuples; 0.00 : 61e53e: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61e545: f2 0f 10 85 10 fe ff movsd -0x1f0(%rbp),%xmm0 0.00 : 61e54c: ff 0.00 : 61e54d: f2 0f 11 81 30 01 00 movsd %xmm0,0x130(%rcx) 0.00 : 61e554: 00 0.00 : 61e555: e9 40 f2 ff ff jmpq 61d79a 0.00 : 61e55a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : WindowClause *wc2 = (WindowClause *) lfirst(lc); : : next = lnext(lc); : /* framing options are NOT to be compared here! */ : if (equal(wc->partitionClause, wc2->partitionClause) && 0.00 : 61e560: 49 8b 76 20 mov 0x20(%r14),%rsi 0.00 : 61e564: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 61e568: e8 63 cb fc ff callq 5eb0d0 0.00 : 61e56d: 84 c0 test %al,%al 0.00 : 61e56f: 0f 84 55 fc ff ff je 61e1ca : equal(wc->orderClause, wc2->orderClause)) : { : actives = list_delete_cell(actives, lc, prev); 0.00 : 61e575: 48 8b 95 c8 fe ff ff mov -0x138(%rbp),%rdx 0.00 : 61e57c: 4c 89 e7 mov %r12,%rdi 0.00 : 61e57f: 48 89 de mov %rbx,%rsi 0.00 : 61e582: e8 d9 3b fc ff callq 5e2160 : result = lappend(result, wc2); 0.00 : 61e587: 48 8b bd 68 fe ff ff mov -0x198(%rbp),%rdi 0.00 : 61e58e: 4c 89 f6 mov %r14,%rsi : next = lnext(lc); : /* framing options are NOT to be compared here! */ : if (equal(wc->partitionClause, wc2->partitionClause) && : equal(wc->orderClause, wc2->orderClause)) : { : actives = list_delete_cell(actives, lc, prev); 0.00 : 61e591: 49 89 c4 mov %rax,%r12 : result = lappend(result, wc2); 0.00 : 61e594: e8 e7 38 fc ff callq 5e1e80 0.00 : 61e599: 48 89 85 68 fe ff ff mov %rax,-0x198(%rbp) 0.00 : 61e5a0: e9 2c fc ff ff jmpq 61e1d1 : * aggregates in hashed aggregation, but that case is included in the : * numOrderedAggs count. : */ : can_hash = (agg_costs->numOrderedAggs == 0 && : grouping_is_hashable(parse->groupClause)); : can_sort = grouping_is_sortable(parse->groupClause); 0.00 : 61e5a5: 49 8b 7d 60 mov 0x60(%r13),%rdi 0.00 : 61e5a9: e8 92 89 01 00 callq 636f40 : : /* Quick out if only one choice is workable */ : if (!(can_hash && can_sort)) 0.00 : 61e5ae: 84 c0 test %al,%al 0.00 : 61e5b0: 0f 84 6e 02 00 00 je 61e824 : errmsg("could not implement GROUP BY"), : errdetail("Some of the datatypes only support hashing, while others only support sorting."))); : } : : /* Prefer sorting when enable_hashagg is off */ : if (!enable_hashagg) 0.00 : 61e5b6: 80 3d f1 9f 54 00 00 cmpb $0x0,0x549ff1(%rip) # b685ae 0.00 : 61e5bd: 0f 84 88 f3 ff ff je 61d94b : /* Estimate per-hash-entry space at tuple width... */ : hashentrysize = MAXALIGN(path_width) + MAXALIGN(sizeof(MinimalTupleData)); : /* plus space for pass-by-ref transition values... */ : hashentrysize += agg_costs->transitionSpace; : /* plus the per-hash-entry overhead */ : hashentrysize += hash_agg_entry_size(agg_costs->numAggs); 0.00 : 61e5c3: 8b 7d 80 mov -0x80(%rbp),%edi : */ : : /* Estimate per-hash-entry space at tuple width... */ : hashentrysize = MAXALIGN(path_width) + MAXALIGN(sizeof(MinimalTupleData)); : /* plus space for pass-by-ref transition values... */ : hashentrysize += agg_costs->transitionSpace; 0.00 : 61e5c6: 48 8b 5d a0 mov -0x60(%rbp),%rbx : /* plus the per-hash-entry overhead */ : hashentrysize += hash_agg_entry_size(agg_costs->numAggs); 0.00 : 61e5ca: e8 51 9d f9 ff callq 5b8320 : */ : : /* Estimate per-hash-entry space at tuple width... */ : hashentrysize = MAXALIGN(path_width) + MAXALIGN(sizeof(MinimalTupleData)); : /* plus space for pass-by-ref transition values... */ : hashentrysize += agg_costs->transitionSpace; 0.00 : 61e5cf: 48 63 95 5c fe ff ff movslq -0x1a4(%rbp),%rdx 0.00 : 61e5d6: 48 83 c2 07 add $0x7,%rdx 0.00 : 61e5da: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.00 : 61e5de: 48 8d 5c 13 10 lea 0x10(%rbx,%rdx,1),%rbx : /* plus the per-hash-entry overhead */ : hashentrysize += hash_agg_entry_size(agg_costs->numAggs); : : if (hashentrysize * dNumGroups > work_mem * 1024L) 0.00 : 61e5e3: 48 89 da mov %rbx,%rdx 0.00 : 61e5e6: 48 01 c2 add %rax,%rdx 0.00 : 61e5e9: 0f 88 a6 05 00 00 js 61eb95 0.00 : 61e5ef: f2 48 0f 2a ca cvtsi2sd %rdx,%xmm1 0.00 : 61e5f4: 48 63 05 1d a5 54 00 movslq 0x54a51d(%rip),%rax # b68b18 0.00 : 61e5fb: f2 0f 59 8d 28 fe ff mulsd -0x1d8(%rbp),%xmm1 0.00 : 61e602: ff 0.00 : 61e603: 48 c1 e0 0a shl $0xa,%rax 0.00 : 61e607: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 61e60c: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 61e610: 0f 87 35 f3 ff ff ja 61d94b : * DISTINCT and ORDER BY as the assumed required output sort order. This : * is an oversimplification because the DISTINCT might get implemented via : * hashing, but it's not clear that the case is common enough (or that our : * estimates are good enough) to justify trying to solve it exactly. : */ : if (list_length(root->distinct_pathkeys) > 0.00 : 61e616: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61e61d: 31 c9 xor %ecx,%ecx 0.00 : 61e61f: 48 8b 92 f8 00 00 00 mov 0xf8(%rdx),%rdx 0.00 : 61e626: 48 85 d2 test %rdx,%rdx 0.00 : 61e629: 48 89 95 d8 fe ff ff mov %rdx,-0x128(%rbp) 0.00 : 61e630: 74 0a je 61e63c 0.00 : 61e632: 48 8b 9d d8 fe ff ff mov -0x128(%rbp),%rbx 0.00 : 61e639: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : 61e63c: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61e643: 48 8b 82 00 01 00 00 mov 0x100(%rdx),%rax 0.00 : 61e64a: 31 d2 xor %edx,%edx 0.00 : 61e64c: 48 85 c0 test %rax,%rax 0.00 : 61e64f: 74 03 je 61e654 0.00 : 61e651: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 61e654: 39 d1 cmp %edx,%ecx 0.00 : 61e656: 48 0f 4f 85 d8 fe ff cmovg -0x128(%rbp),%rax 0.00 : 61e65d: ff : * cheapest_path for this purpose. : * : * These path variables are dummies that just hold cost fields; we don't : * make actual Paths for these steps. : */ : cost_agg(&hashed_p, root, AGG_HASHED, agg_costs, 0.00 : 61e65e: 48 8d 9d 40 ff ff ff lea -0xc0(%rbp),%rbx 0.00 : 61e665: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 61e66c: f2 0f 10 9d 50 fe ff movsd -0x1b0(%rbp),%xmm3 0.00 : 61e673: ff 0.00 : 61e674: f2 0f 10 85 28 fe ff movsd -0x1d8(%rbp),%xmm0 0.00 : 61e67b: ff 0.00 : 61e67c: 48 8d 4d 80 lea -0x80(%rbp),%rcx 0.00 : 61e680: 45 89 f8 mov %r15d,%r8d 0.00 : 61e683: ba 02 00 00 00 mov $0x2,%edx 0.00 : 61e688: 48 89 df mov %rbx,%rdi : * DISTINCT and ORDER BY as the assumed required output sort order. This : * is an oversimplification because the DISTINCT might get implemented via : * hashing, but it's not clear that the case is common enough (or that our : * estimates are good enough) to justify trying to solve it exactly. : */ : if (list_length(root->distinct_pathkeys) > 0.00 : 61e68b: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) : * cheapest_path for this purpose. : * : * These path variables are dummies that just hold cost fields; we don't : * make actual Paths for these steps. : */ : cost_agg(&hashed_p, root, AGG_HASHED, agg_costs, 0.00 : 61e692: f2 41 0f 10 56 28 movsd 0x28(%r14),%xmm2 0.00 : 61e698: f2 41 0f 10 4e 20 movsd 0x20(%r14),%xmm1 0.00 : 61e69e: e8 ed 83 fe ff callq 606a90 : numGroupCols, dNumGroups, : cheapest_path->startup_cost, cheapest_path->total_cost, : path_rows); : /* Result of hashed agg is always unsorted */ : if (target_pathkeys) 0.00 : 61e6a3: 48 83 bd d8 fe ff ff cmpq $0x0,-0x128(%rbp) 0.00 : 61e6aa: 00 0.00 : 61e6ab: 74 3f je 61e6ec : cost_sort(&hashed_p, root, target_pathkeys, hashed_p.total_cost, 0.00 : 61e6ad: 44 8b 05 64 a4 54 00 mov 0x54a464(%rip),%r8d # b68b18 0.00 : 61e6b4: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 61e6b8: 8b 8d 5c fe ff ff mov -0x1a4(%rbp),%ecx 0.00 : 61e6be: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 61e6c5: 48 89 df mov %rbx,%rdi 0.00 : 61e6c8: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 61e6cf: f2 0f 10 85 68 ff ff movsd -0x98(%rbp),%xmm0 0.00 : 61e6d6: ff 0.00 : 61e6d7: f2 0f 10 9d 10 fe ff movsd -0x1f0(%rbp),%xmm3 0.00 : 61e6de: ff 0.00 : 61e6df: f2 0f 10 8d 28 fe ff movsd -0x1d8(%rbp),%xmm1 0.00 : 61e6e6: ff 0.00 : 61e6e7: e8 a4 85 fe ff callq 606c90 : dNumGroups, path_width, : 0.0, work_mem, limit_tuples); : : if (sorted_path) 0.00 : 61e6ec: 4d 85 e4 test %r12,%r12 0.00 : 61e6ef: 0f 84 a3 06 00 00 je 61ed98 : { : sorted_p.startup_cost = sorted_path->startup_cost; 0.00 : 61e6f5: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 61e6fa: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : sorted_p.total_cost = sorted_path->total_cost; 0.00 : 61e701: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 61e706: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : current_pathkeys = sorted_path->pathkeys; 0.00 : 61e70d: 49 8b 4c 24 30 mov 0x30(%r12),%rcx 0.00 : 61e712: 48 89 8d d0 fe ff ff mov %rcx,-0x130(%rbp) : { : sorted_p.startup_cost = cheapest_path->startup_cost; : sorted_p.total_cost = cheapest_path->total_cost; : current_pathkeys = cheapest_path->pathkeys; : } : if (!pathkeys_contained_in(root->group_pathkeys, current_pathkeys)) 0.00 : 61e719: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx 0.00 : 61e720: 48 8b b5 d0 fe ff ff mov -0x130(%rbp),%rsi 0.00 : 61e727: 48 8b ba e8 00 00 00 mov 0xe8(%rdx),%rdi 0.00 : 61e72e: e8 ad 31 ff ff callq 6118e0 0.00 : 61e733: 84 c0 test %al,%al 0.00 : 61e735: 75 5f jne 61e796 : { : cost_sort(&sorted_p, root, root->group_pathkeys, sorted_p.total_cost, 0.00 : 61e737: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx 0.00 : 61e73e: 44 8b 05 d3 a3 54 00 mov 0x54a3d3(%rip),%r8d # b68b18 0.00 : 61e745: 48 8d bd 00 ff ff ff lea -0x100(%rbp),%rdi 0.00 : 61e74c: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 61e750: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 61e757: f2 0f 10 85 28 ff ff movsd -0xd8(%rbp),%xmm0 0.00 : 61e75e: ff 0.00 : 61e75f: 48 8b 91 e8 00 00 00 mov 0xe8(%rcx),%rdx 0.00 : 61e766: 8b 8d 5c fe ff ff mov -0x1a4(%rbp),%ecx 0.00 : 61e76c: f2 0f 10 1d e4 3d 1a movsd 0x1a3de4(%rip),%xmm3 # 7c2558 <__func__.23237+0x18> 0.00 : 61e773: 00 0.00 : 61e774: f2 0f 10 8d 50 fe ff movsd -0x1b0(%rbp),%xmm1 0.00 : 61e77b: ff 0.00 : 61e77c: e8 0f 85 fe ff callq 606c90 : path_rows, path_width, : 0.0, work_mem, -1.0); : current_pathkeys = root->group_pathkeys; 0.00 : 61e781: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 61e788: 48 8b 80 e8 00 00 00 mov 0xe8(%rax),%rax 0.00 : 61e78f: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp) : } : : if (parse->hasAggs) 0.00 : 61e796: 41 80 7d 24 00 cmpb $0x0,0x24(%r13) 0.00 : 61e79b: 0f 84 7a 03 00 00 je 61eb1b : cost_agg(&sorted_p, root, AGG_SORTED, agg_costs, 0.00 : 61e7a1: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 61e7a8: f2 0f 10 9d 50 fe ff movsd -0x1b0(%rbp),%xmm3 0.00 : 61e7af: ff 0.00 : 61e7b0: f2 0f 10 95 28 ff ff movsd -0xd8(%rbp),%xmm2 0.00 : 61e7b7: ff 0.00 : 61e7b8: 48 8d 4d 80 lea -0x80(%rbp),%rcx 0.00 : 61e7bc: f2 0f 10 8d 20 ff ff movsd -0xe0(%rbp),%xmm1 0.00 : 61e7c3: ff 0.00 : 61e7c4: 48 8d bd 00 ff ff ff lea -0x100(%rbp),%rdi 0.00 : 61e7cb: f2 0f 10 85 28 fe ff movsd -0x1d8(%rbp),%xmm0 0.00 : 61e7d2: ff 0.00 : 61e7d3: 45 89 f8 mov %r15d,%r8d 0.00 : 61e7d6: ba 01 00 00 00 mov $0x1,%edx 0.00 : 61e7db: e8 b0 82 fe ff callq 606a90 : else : cost_group(&sorted_p, root, numGroupCols, dNumGroups, : sorted_p.startup_cost, sorted_p.total_cost, : path_rows); : /* The Agg or Group node will preserve ordering */ : if (target_pathkeys && 0.00 : 61e7e0: 48 83 bd d8 fe ff ff cmpq $0x0,-0x128(%rbp) 0.00 : 61e7e7: 00 0.00 : 61e7e8: 74 1b je 61e805 0.00 : 61e7ea: 48 8b b5 d0 fe ff ff mov -0x130(%rbp),%rsi 0.00 : 61e7f1: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : 61e7f8: e8 e3 30 ff ff callq 6118e0 0.00 : 61e7fd: 84 c0 test %al,%al 0.00 : 61e7ff: 0f 84 b9 05 00 00 je 61edbe : 0.0, work_mem, limit_tuples); : : /* : * Now make the decision using the top-level tuple fraction. : */ : if (compare_fractional_path_costs(&hashed_p, &sorted_p, 0.00 : 61e805: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61e80c: ff 0.00 : 61e80d: 48 8d b5 00 ff ff ff lea -0x100(%rbp),%rsi 0.00 : 61e814: 48 89 df mov %rbx,%rdi 0.00 : 61e817: e8 f4 16 01 00 callq 62ff10 0.00 : 61e81c: 85 c0 test %eax,%eax 0.00 : 61e81e: 0f 89 27 f1 ff ff jns 61d94b 0.00 : 61e824: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 61e82a: e9 1f f1 ff ff jmpq 61d94e 0.00 : 61e82f: 90 nop : : /* : * If we're not grouping or aggregating, there's nothing to do here; : * query_planner should receive the unmodified target list. : */ : if (!parse->hasAggs && !parse->groupClause && !root->hasHavingQual && 0.00 : 61e830: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 61e837: 80 b8 3b 01 00 00 00 cmpb $0x0,0x13b(%rax) 0.00 : 61e83e: 0f 85 c6 f9 ff ff jne 61e20a 0.00 : 61e844: 80 7b 25 00 cmpb $0x0,0x25(%rbx) 0.00 : 61e848: 0f 85 bc f9 ff ff jne 61e20a 0.00 : 61e84e: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 61e855: 48 c7 85 40 fe ff ff movq $0x0,-0x1c0(%rbp) 0.00 : 61e85c: 00 00 00 00 0.00 : 61e860: c6 85 4b fe ff ff 01 movb $0x1,-0x1b5(%rbp) 0.00 : 61e867: 48 89 95 38 fe ff ff mov %rdx,-0x1c8(%rbp) 0.00 : 61e86e: e9 d5 ee ff ff jmpq 61d748 0.00 : 61e873: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * If we have a known LIMIT, and don't have an unknown OFFSET, we can : * estimate the effects of using a bounded sort. : */ : if (count_est > 0 && offset_est >= 0) : limit_tuples = (double) count_est + (double) offset_est; 0.00 : 61e878: f2 0f 10 05 d8 3c 1a movsd 0x1a3cd8(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 61e87f: 00 0.00 : 61e880: f2 0f 11 85 10 fe ff movsd %xmm0,-0x1f0(%rbp) 0.00 : 61e887: ff 0.00 : 61e888: e9 67 e4 ff ff jmpq 61ccf4 : * save aside the others for a moment. : */ : new_tlist = NIL; : flattenable_cols = NIL; : : foreach(lc, tlist) 0.00 : 61e88d: 45 31 ff xor %r15d,%r15d 0.00 : 61e890: 45 31 f6 xor %r14d,%r14d 0.00 : 61e893: 31 ff xor %edi,%edi 0.00 : 61e895: e9 d3 f2 ff ff jmpq 61db6d : * Normal case --- create a plan according to query_planner's : * results. : */ : bool need_sort_for_grouping = false; : : result_plan = create_plan(root, best_path); 0.00 : 61e89a: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e8a1: 48 89 de mov %rbx,%rsi 0.00 : 61e8a4: e8 d7 9d ff ff callq 618680 : current_pathkeys = best_path->pathkeys; : : /* Detect if we'll need an explicit sort for grouping */ : if (parse->groupClause && !use_hashed_grouping && 0.00 : 61e8a9: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx : * Normal case --- create a plan according to query_planner's : * results. : */ : bool need_sort_for_grouping = false; : : result_plan = create_plan(root, best_path); 0.00 : 61e8b0: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : current_pathkeys = best_path->pathkeys; 0.00 : 61e8b7: 48 8b 5b 30 mov 0x30(%rbx),%rbx 0.00 : 61e8bb: 48 89 9d 20 fe ff ff mov %rbx,-0x1e0(%rbp) : : /* Detect if we'll need an explicit sort for grouping */ : if (parse->groupClause && !use_hashed_grouping && 0.00 : 61e8c2: 48 83 79 60 00 cmpq $0x0,0x60(%rcx) 0.00 : 61e8c7: 0f 84 0b 01 00 00 je 61e9d8 0.00 : 61e8cd: 45 84 ed test %r13b,%r13b 0.00 : 61e8d0: 0f 85 02 01 00 00 jne 61e9d8 0.00 : 61e8d6: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 61e8dd: 48 8b b5 20 fe ff ff mov -0x1e0(%rbp),%rsi 0.00 : 61e8e4: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 61e8ea: 48 8b bb e8 00 00 00 mov 0xe8(%rbx),%rdi 0.00 : 61e8f1: e8 ea 2f ff ff callq 6118e0 0.00 : 61e8f6: 84 c0 test %al,%al 0.00 : 61e8f8: 0f 85 da 00 00 00 jne 61e9d8 : * If the top-level plan node is one that cannot do expression : * evaluation and its existing target list isn't already what : * we need, we must insert a Result node to project the : * desired tlist. : */ : if (!is_projection_capable_plan(result_plan) && 0.00 : 61e8fe: 48 8b bd 18 fe ff ff mov -0x1e8(%rbp),%rdi 0.00 : 61e905: e8 96 54 ff ff callq 613da0 0.00 : 61e90a: 84 c0 test %al,%al 0.00 : 61e90c: 0f 84 38 04 00 00 je 61ed4a : { : /* : * Otherwise, just replace the subplan's flat tlist with : * the desired tlist. : */ : result_plan->targetlist = sub_tlist; 0.00 : 61e912: 48 8b 8d 38 fe ff ff mov -0x1c8(%rbp),%rcx 0.00 : 61e919: 48 8b 95 18 fe ff ff mov -0x1e8(%rbp),%rdx 0.00 : 61e920: 48 89 4a 28 mov %rcx,0x28(%rdx) : : /* : * Also, account for the cost of evaluation of the sub_tlist. : * See comments for add_tlist_costs_to_plan() for more info. : */ : add_tlist_costs_to_plan(root, result_plan, sub_tlist); 0.00 : 61e924: 48 8b 95 38 fe ff ff mov -0x1c8(%rbp),%rdx 0.00 : 61e92b: 48 8b b5 18 fe ff ff mov -0x1e8(%rbp),%rsi 0.00 : 61e932: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e939: e8 b2 d8 ff ff callq 61c1f0 : * Insert AGG or GROUP node if needed, plus an explicit sort step : * if necessary. : * : * HAVING clause, if any, becomes qual of the Agg or Group node. : */ : if (use_hashed_grouping) 0.00 : 61e93e: 45 84 ed test %r13b,%r13b 0.00 : 61e941: 0f 85 94 03 00 00 jne 61ecdb : numGroups, : result_plan); : /* Hashed aggregation produces randomly-ordered results */ : current_pathkeys = NIL; : } : else if (parse->hasAggs) 0.00 : 61e947: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 61e94e: 80 78 24 00 cmpb $0x0,0x24(%rax) 0.00 : 61e952: 0f 84 14 03 00 00 je 61ec6c : { : /* Plain aggregate plan --- sort if needed */ : AggStrategy aggstrategy; : : if (parse->groupClause) 0.00 : 61e958: 48 8b 78 60 mov 0x60(%rax),%rdi 0.00 : 61e95c: 48 85 ff test %rdi,%rdi 0.00 : 61e95f: 0f 84 11 05 00 00 je 61ee76 : { : if (need_sort_for_grouping) 0.00 : 61e965: 45 84 e4 test %r12b,%r12b 0.00 : 61e968: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 61e96d: 0f 85 b5 04 00 00 jne 61ee28 : aggstrategy = AGG_PLAIN; : /* Result will be only one row anyway; no sort order */ : current_pathkeys = NIL; : } : : result_plan = (Plan *) make_agg(root, 0.00 : 61e973: e8 48 86 01 00 callq 636fc0 0.00 : 61e978: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61e97f: 44 8b 8d 4c fe ff ff mov -0x1b4(%rbp),%r9d 0.00 : 61e986: 4c 8d 45 80 lea -0x80(%rbp),%r8 0.00 : 61e98a: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61e991: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61e998: 48 8b 51 68 mov 0x68(%rcx),%rdx 0.00 : 61e99c: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61e9a3: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 61e9a8: 48 8b 85 40 fe ff ff mov -0x1c0(%rbp),%rax 0.00 : 61e9af: 4c 89 7c 24 10 mov %r15,0x10(%rsp) 0.00 : 61e9b4: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 61e9b9: 89 d9 mov %ebx,%ecx 0.00 : 61e9bb: 48 89 04 24 mov %rax,(%rsp) 0.00 : 61e9bf: e8 3c 63 ff ff callq 614d00 0.00 : 61e9c4: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) 0.00 : 61e9cb: e9 f5 ef ff ff jmpq 61d9c5 : actives = list_delete_first(actives); : result = lappend(result, wc); : : /* Now move any matching windows from actives to result */ : prev = NULL; : for (lc = list_head(actives); lc; lc = next) 0.00 : 61e9d0: 4c 89 fb mov %r15,%rbx 0.00 : 61e9d3: e9 d6 f7 ff ff jmpq 61e1ae : * create_plan returns a plan with just a "flat" tlist of required : * Vars. Usually we need to insert the sub_tlist as the tlist of : * the top plan node. However, we can skip that if we determined : * that whatever create_plan chose to return will be good enough. : */ : if (need_tlist_eval) 0.00 : 61e9d8: 80 bd 4b fe ff ff 00 cmpb $0x0,-0x1b5(%rbp) 0.00 : 61e9df: 0f 85 a8 01 00 00 jne 61eb8d : ListCell *gl; : : /* : * No work unless grouping. : */ : if (!root->parse->groupClause) 0.00 : 61e9e5: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx : /* : * Since we're using create_plan's tlist and not the one : * make_subplanTargetList calculated, we have to refigure any : * grouping-column indexes make_subplanTargetList computed. : */ : locate_grouping_columns(root, tlist, result_plan->targetlist, 0.00 : 61e9ec: 48 8b 9d 18 fe ff ff mov -0x1e8(%rbp),%rbx : ListCell *gl; : : /* : * No work unless grouping. : */ : if (!root->parse->groupClause) 0.00 : 61e9f3: 48 8b 42 08 mov 0x8(%rdx),%rax : /* : * Since we're using create_plan's tlist and not the one : * make_subplanTargetList calculated, we have to refigure any : * grouping-column indexes make_subplanTargetList computed. : */ : locate_grouping_columns(root, tlist, result_plan->targetlist, 0.00 : 61e9f7: 4c 8b 73 28 mov 0x28(%rbx),%r14 : ListCell *gl; : : /* : * No work unless grouping. : */ : if (!root->parse->groupClause) 0.00 : 61e9fb: 48 8b 40 60 mov 0x60(%rax),%rax 0.00 : 61e9ff: 48 85 c0 test %rax,%rax 0.00 : 61ea02: 0f 84 a7 01 00 00 je 61ebaf : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 61ea08: 48 8b 58 08 mov 0x8(%rax),%rbx : Assert(groupColIdx == NULL); : return; : } : Assert(groupColIdx != NULL); : : foreach(gl, root->parse->groupClause) 0.00 : 61ea0c: 48 85 db test %rbx,%rbx 0.00 : 61ea0f: 0f 84 9a 01 00 00 je 61ebaf 0.00 : 61ea15: 45 31 e4 xor %r12d,%r12d 0.00 : 61ea18: eb 3a jmp 61ea54 0.00 : 61ea1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * instead use tlist_member_match_var. For safety, still check that : * the vartype matches. : */ : if (!(groupexpr && IsA(groupexpr, Var))) : elog(ERROR, "grouping column is not a Var as expected"); : te = tlist_member_match_var(groupexpr, sub_tlist); 0.00 : 61ea20: 4c 89 f6 mov %r14,%rsi 0.00 : 61ea23: e8 78 84 01 00 callq 636ea0 : if (!te) 0.00 : 61ea28: 48 85 c0 test %rax,%rax 0.00 : 61ea2b: 0f 84 3a 05 00 00 je 61ef6b : elog(ERROR, "failed to locate grouping columns"); : Assert(((Var *) te->expr)->vartype == groupexpr->vartype); : groupColIdx[keyno++] = te->resno; 0.00 : 61ea31: 0f b7 40 10 movzwl 0x10(%rax),%eax 0.00 : 61ea35: 48 8b 8d 40 fe ff ff mov -0x1c0(%rbp),%rcx 0.00 : 61ea3c: 49 63 d4 movslq %r12d,%rdx 0.00 : 61ea3f: 66 89 04 51 mov %ax,(%rcx,%rdx,2) : Assert(groupColIdx == NULL); : return; : } : Assert(groupColIdx != NULL); : : foreach(gl, root->parse->groupClause) 0.00 : 61ea43: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 61ea47: 48 85 db test %rbx,%rbx 0.00 : 61ea4a: 0f 84 5f 01 00 00 je 61ebaf : elog(ERROR, "grouping column is not a Var as expected"); : te = tlist_member_match_var(groupexpr, sub_tlist); : if (!te) : elog(ERROR, "failed to locate grouping columns"); : Assert(((Var *) te->expr)->vartype == groupexpr->vartype); : groupColIdx[keyno++] = te->resno; 0.00 : 61ea50: 41 83 c4 01 add $0x1,%r12d : Assert(groupColIdx != NULL); : : foreach(gl, root->parse->groupClause) : { : SortGroupClause *grpcl = (SortGroupClause *) lfirst(gl); : Var *groupexpr = (Var *) get_sortgroupclause_expr(grpcl, tlist); 0.00 : 61ea54: 48 8b 3b mov (%rbx),%rdi 0.00 : 61ea57: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61ea5e: e8 1d 87 01 00 callq 637180 : * knowledge about what it returns than we did when the original Var : * was created.) So we can't use tlist_member() to search the tlist; : * instead use tlist_member_match_var. For safety, still check that : * the vartype matches. : */ : if (!(groupexpr && IsA(groupexpr, Var))) 0.00 : 61ea63: 48 85 c0 test %rax,%rax : Assert(groupColIdx != NULL); : : foreach(gl, root->parse->groupClause) : { : SortGroupClause *grpcl = (SortGroupClause *) lfirst(gl); : Var *groupexpr = (Var *) get_sortgroupclause_expr(grpcl, tlist); 0.00 : 61ea66: 48 89 c7 mov %rax,%rdi : * knowledge about what it returns than we did when the original Var : * was created.) So we can't use tlist_member() to search the tlist; : * instead use tlist_member_match_var. For safety, still check that : * the vartype matches. : */ : if (!(groupexpr && IsA(groupexpr, Var))) 0.00 : 61ea69: 74 08 je 61ea73 0.00 : 61ea6b: 81 38 2f 01 00 00 cmpl $0x12f,(%rax) 0.00 : 61ea71: 74 ad je 61ea20 : elog(ERROR, "grouping column is not a Var as expected"); 0.00 : 61ea73: ba 60 b8 89 00 mov $0x89b860,%edx 0.00 : 61ea78: be 98 0c 00 00 mov $0xc98,%esi 0.00 : 61ea7d: bf 8c b5 89 00 mov $0x89b58c,%edi 0.00 : 61ea82: e8 99 c9 15 00 callq 77b420 0.00 : 61ea87: be 18 b7 89 00 mov $0x89b718,%esi 0.00 : 61ea8c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61ea91: 31 c0 xor %eax,%eax 0.00 : 61ea93: e8 98 c7 15 00 callq 77b230 0.00 : 61ea98: e8 33 aa e4 ff callq 4694d0 : elog(ERROR, "resjunk output columns are not implemented"); : Assert(new_tle->resno == orig_tle->resno); : new_tle->ressortgroupref = orig_tle->ressortgroupref; : } : if (orig_tlist_item != NULL) : elog(ERROR, "resjunk output columns are not implemented"); 0.00 : 61ea9d: ba 20 b8 89 00 mov $0x89b820,%edx 0.00 : 61eaa2: be c3 0c 00 00 mov $0xcc3,%esi 0.00 : 61eaa7: e9 f8 f5 ff ff jmpq 61e0a4 : /* : * Can't handle FOR [KEY] UPDATE/SHARE here (parser should have : * checked already, but let's make sure). : */ : if (parse->rowMarks) : ereport(ERROR, 0.00 : 61eaac: 45 31 c0 xor %r8d,%r8d 0.00 : 61eaaf: b9 00 b8 89 00 mov $0x89b800,%ecx 0.00 : 61eab4: ba 8b 04 00 00 mov $0x48b,%edx 0.00 : 61eab9: be 8c b5 89 00 mov $0x89b58c,%esi 0.00 : 61eabe: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61eac3: e8 f8 bf 15 00 callq 77aac0 0.00 : 61eac8: 84 c0 test %al,%al 0.00 : 61eaca: 74 4a je 61eb16 0.00 : 61eacc: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 61ead3: 31 c0 xor %eax,%eax 0.00 : 61ead5: 48 8b 93 98 00 00 00 mov 0x98(%rbx),%rdx 0.00 : 61eadc: 48 85 d2 test %rdx,%rdx 0.00 : 61eadf: 74 04 je 61eae5 0.00 : 61eae1: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 61eae5: 48 8b 00 mov (%rax),%rax 0.00 : 61eae8: 8b 78 08 mov 0x8(%rax),%edi 0.00 : 61eaeb: e8 c0 b0 ee ff callq 509bb0 0.00 : 61eaf0: bf 50 86 7c 00 mov $0x7c8650,%edi 0.00 : 61eaf5: 48 89 c6 mov %rax,%rsi 0.00 : 61eaf8: 31 c0 xor %eax,%eax 0.00 : 61eafa: e8 a1 dd 15 00 callq 77c8a0 0.00 : 61eaff: bf 40 04 00 00 mov $0x440,%edi 0.00 : 61eb04: 89 c3 mov %eax,%ebx 0.00 : 61eb06: e8 45 e2 15 00 callq 77cd50 0.00 : 61eb0b: 89 de mov %ebx,%esi 0.00 : 61eb0d: 89 c7 mov %eax,%edi 0.00 : 61eb0f: 31 c0 xor %eax,%eax 0.00 : 61eb11: e8 ca ba 15 00 callq 77a5e0 : pathkeys = new_pathkeys; : } : } : /* complain if we didn't eat exactly the right number of sort cols */ : if (scidx != numSortCols) : elog(ERROR, "failed to deconstruct sort operators into partitioning/ordering operators"); 0.00 : 61eb16: e8 b5 a9 e4 ff callq 4694d0 : cost_agg(&sorted_p, root, AGG_SORTED, agg_costs, : numGroupCols, dNumGroups, : sorted_p.startup_cost, sorted_p.total_cost, : path_rows); : else : cost_group(&sorted_p, root, numGroupCols, dNumGroups, 0.00 : 61eb1b: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 61eb22: f2 0f 10 9d 50 fe ff movsd -0x1b0(%rbp),%xmm3 0.00 : 61eb29: ff 0.00 : 61eb2a: f2 0f 10 95 28 ff ff movsd -0xd8(%rbp),%xmm2 0.00 : 61eb31: ff 0.00 : 61eb32: 48 8d bd 00 ff ff ff lea -0x100(%rbp),%rdi 0.00 : 61eb39: f2 0f 10 8d 20 ff ff movsd -0xe0(%rbp),%xmm1 0.00 : 61eb40: ff 0.00 : 61eb41: 44 89 fa mov %r15d,%edx 0.00 : 61eb44: f2 0f 10 85 28 fe ff movsd -0x1d8(%rbp),%xmm0 0.00 : 61eb4b: ff 0.00 : 61eb4c: e8 7f 53 fe ff callq 603ed0 0.00 : 61eb51: e9 8a fc ff ff jmpq 61e7e0 : wflists = find_window_functions((Node *) tlist, : list_length(parse->windowClause)); : if (wflists->numWindowFuncs > 0) : activeWindows = select_active_windows(root, wflists); : else : parse->hasWindowFuncs = false; 0.00 : 61eb56: 48 c7 85 68 fe ff ff movq $0x0,-0x198(%rbp) 0.00 : 61eb5d: 00 00 00 00 0.00 : 61eb61: e9 14 ea ff ff jmpq 61d57a : pathkeys = new_pathkeys; : } : } : /* complain if we didn't eat exactly the right number of sort cols */ : if (scidx != numSortCols) : elog(ERROR, "failed to deconstruct sort operators into partitioning/ordering operators"); 0.00 : 61eb66: ba a0 b8 89 00 mov $0x89b8a0,%edx 0.00 : 61eb6b: be 26 0e 00 00 mov $0xe26,%esi 0.00 : 61eb70: bf 8c b5 89 00 mov $0x89b58c,%edi 0.00 : 61eb75: e8 a6 c8 15 00 callq 77b420 0.00 : 61eb7a: be 70 b7 89 00 mov $0x89b770,%esi 0.00 : 61eb7f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61eb84: 31 c0 xor %eax,%eax 0.00 : 61eb86: e8 a5 c6 15 00 callq 77b230 0.00 : 61eb8b: eb 89 jmp 61eb16 : * create_plan returns a plan with just a "flat" tlist of required : * Vars. Usually we need to insert the sub_tlist as the tlist of : * the top plan node. However, we can skip that if we determined : * that whatever create_plan chose to return will be good enough. : */ : if (need_tlist_eval) 0.00 : 61eb8d: 45 31 e4 xor %r12d,%r12d 0.00 : 61eb90: e9 69 fd ff ff jmpq 61e8fe : /* plus space for pass-by-ref transition values... */ : hashentrysize += agg_costs->transitionSpace; : /* plus the per-hash-entry overhead */ : hashentrysize += hash_agg_entry_size(agg_costs->numAggs); : : if (hashentrysize * dNumGroups > work_mem * 1024L) 0.00 : 61eb95: 48 89 d0 mov %rdx,%rax 0.00 : 61eb98: 83 e2 01 and $0x1,%edx 0.00 : 61eb9b: 48 d1 e8 shr %rax 0.00 : 61eb9e: 48 09 d0 or %rdx,%rax 0.00 : 61eba1: f2 48 0f 2a c8 cvtsi2sd %rax,%xmm1 0.00 : 61eba6: f2 0f 58 c9 addsd %xmm1,%xmm1 0.00 : 61ebaa: e9 45 fa ff ff jmpq 61e5f4 : elog(ERROR, "grouping column is not a Var as expected"); : te = tlist_member_match_var(groupexpr, sub_tlist); : if (!te) : elog(ERROR, "failed to locate grouping columns"); : Assert(((Var *) te->expr)->vartype == groupexpr->vartype); : groupColIdx[keyno++] = te->resno; 0.00 : 61ebaf: 45 31 e4 xor %r12d,%r12d 0.00 : 61ebb2: e9 87 fd ff ff jmpq 61e93e : /* : * We'll reach the DISTINCT stage without any intermediate : * processing, so figure out whether we will want to hash or not : * so we can choose whether to use cheapest or sorted path. : */ : use_hashed_distinct = 0.00 : 61ebb7: 49 8b 54 24 30 mov 0x30(%r12),%rdx 0.00 : 61ebbc: 8b b5 5c fe ff ff mov -0x1a4(%rbp),%esi 0.00 : 61ebc2: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61ebc9: f2 0f 10 bd 28 fe ff movsd -0x1d8(%rbp),%xmm7 0.00 : 61ebd0: ff 0.00 : 61ebd1: f2 41 0f 10 74 24 28 movsd 0x28(%r12),%xmm6 0.00 : 61ebd8: f2 41 0f 10 6c 24 20 movsd 0x20(%r12),%xmm5 0.00 : 61ebdf: f2 41 0f 10 66 28 movsd 0x28(%r14),%xmm4 0.00 : 61ebe5: f2 41 0f 10 5e 20 movsd 0x20(%r14),%xmm3 0.00 : 61ebeb: f2 0f 10 95 50 fe ff movsd -0x1b0(%rbp),%xmm2 0.00 : 61ebf2: ff 0.00 : 61ebf3: f2 0f 10 8d 10 fe ff movsd -0x1f0(%rbp),%xmm1 0.00 : 61ebfa: ff 0.00 : 61ebfb: f2 0f 10 85 d8 fd ff movsd -0x228(%rbp),%xmm0 0.00 : 61ec02: ff 0.00 : 61ec03: e8 c8 db ff ff callq 61c7d0 0.00 : 61ec08: 84 c0 test %al,%al 0.00 : 61ec0a: 88 85 36 fe ff ff mov %al,-0x1ca(%rbp) 0.00 : 61ec10: c6 85 37 fe ff ff 01 movb $0x1,-0x1c9(%rbp) 0.00 : 61ec17: 0f 95 c0 setne %al 0.00 : 61ec1a: 45 31 ff xor %r15d,%r15d 0.00 : 61ec1d: 45 31 ed xor %r13d,%r13d 0.00 : 61ec20: e9 5c ed ff ff jmpq 61d981 : { : /* : * Plain non-grouped, non-aggregated query: an absolute tuple : * fraction can be divided by the number of tuples. : */ : if (tuple_fraction >= 1.0) 0.00 : 61ec25: f2 0f 10 05 2b 05 19 movsd 0x19052b(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 61ec2c: 00 0.00 : 61ec2d: f2 0f 10 95 d8 fd ff movsd -0x228(%rbp),%xmm2 0.00 : 61ec34: ff 0.00 : 61ec35: f2 0f 11 85 28 fe ff movsd %xmm0,-0x1d8(%rbp) 0.00 : 61ec3c: ff 0.00 : 61ec3d: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 61ec41: 0f 82 32 ec ff ff jb 61d879 : tuple_fraction /= path_rows; 0.00 : 61ec47: f2 0f 10 8d d8 fd ff movsd -0x228(%rbp),%xmm1 0.00 : 61ec4e: ff 0.00 : 61ec4f: f2 0f 11 85 28 fe ff movsd %xmm0,-0x1d8(%rbp) 0.00 : 61ec56: ff 0.00 : 61ec57: f2 0f 5e 8d 50 fe ff divsd -0x1b0(%rbp),%xmm1 0.00 : 61ec5e: ff 0.00 : 61ec5f: f2 0f 11 8d d8 fd ff movsd %xmm1,-0x228(%rbp) 0.00 : 61ec66: ff 0.00 : 61ec67: e9 0d ec ff ff jmpq 61d879 : groupColIdx, : extract_grouping_ops(parse->groupClause), : numGroups, : result_plan); : } : else if (parse->groupClause) 0.00 : 61ec6c: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 61ec73: 48 8b 7a 60 mov 0x60(%rdx),%rdi 0.00 : 61ec77: 48 85 ff test %rdi,%rdi 0.00 : 61ec7a: 0f 84 51 02 00 00 je 61eed1 : * the appropriate sort node, if necessary). : * : * Add an explicit sort if we couldn't make the path come out : * the way the GROUP node needs it. : */ : if (need_sort_for_grouping) 0.00 : 61ec80: 45 84 e4 test %r12b,%r12b 0.00 : 61ec83: 0f 85 ff 01 00 00 jne 61ee88 : groupColIdx, : result_plan); : current_pathkeys = root->group_pathkeys; : } : : result_plan = (Plan *) make_group(root, 0.00 : 61ec89: e8 32 83 01 00 callq 636fc0 0.00 : 61ec8e: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61ec95: 48 8b 9d 18 fe ff ff mov -0x1e8(%rbp),%rbx 0.00 : 61ec9c: 49 89 c1 mov %rax,%r9 0.00 : 61ec9f: 4c 8b 85 40 fe ff ff mov -0x1c0(%rbp),%r8 0.00 : 61eca6: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61ecad: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61ecb4: f2 0f 10 85 28 fe ff movsd -0x1d8(%rbp),%xmm0 0.00 : 61ecbb: ff 0.00 : 61ecbc: 48 8b 51 68 mov 0x68(%rcx),%rdx 0.00 : 61ecc0: 8b 8d 4c fe ff ff mov -0x1b4(%rbp),%ecx 0.00 : 61ecc6: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 61ecca: e8 11 5d ff ff callq 6149e0 0.00 : 61eccf: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) 0.00 : 61ecd6: e9 ea ec ff ff jmpq 61d9c5 : * HAVING clause, if any, becomes qual of the Agg or Group node. : */ : if (use_hashed_grouping) : { : /* Hashed aggregate plan --- no sort needed */ : result_plan = (Plan *) make_agg(root, 0.00 : 61ecdb: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 61ece2: 48 8b 7b 60 mov 0x60(%rbx),%rdi 0.00 : 61ece6: e8 d5 82 01 00 callq 636fc0 0.00 : 61eceb: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61ecf2: 48 8b 53 68 mov 0x68(%rbx),%rdx 0.00 : 61ecf6: 4c 8d 45 80 lea -0x80(%rbp),%r8 0.00 : 61ecfa: 48 8b 9d 40 fe ff ff mov -0x1c0(%rbp),%rbx 0.00 : 61ed01: 44 8b 8d 4c fe ff ff mov -0x1b4(%rbp),%r9d 0.00 : 61ed08: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61ed0f: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61ed16: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 61ed1b: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 61ed20: 4c 89 7c 24 10 mov %r15,0x10(%rsp) 0.00 : 61ed25: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 61ed2a: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 61ed2e: e8 cd 5f ff ff callq 614d00 0.00 : 61ed33: 48 c7 85 20 fe ff ff movq $0x0,-0x1e0(%rbp) 0.00 : 61ed3a: 00 00 00 00 0.00 : 61ed3e: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) 0.00 : 61ed45: e9 7b ec ff ff jmpq 61d9c5 : * If the top-level plan node is one that cannot do expression : * evaluation and its existing target list isn't already what : * we need, we must insert a Result node to project the : * desired tlist. : */ : if (!is_projection_capable_plan(result_plan) && 0.00 : 61ed4a: 48 8b 85 18 fe ff ff mov -0x1e8(%rbp),%rax 0.00 : 61ed51: 48 8b bd 38 fe ff ff mov -0x1c8(%rbp),%rdi 0.00 : 61ed58: 48 8b 70 28 mov 0x28(%rax),%rsi 0.00 : 61ed5c: e8 cf 85 01 00 callq 637330 0.00 : 61ed61: 84 c0 test %al,%al 0.00 : 61ed63: 0f 85 a9 fb ff ff jne 61e912 : !tlist_same_exprs(sub_tlist, result_plan->targetlist)) : { : result_plan = (Plan *) make_result(root, 0.00 : 61ed69: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61ed70: 48 8b b5 38 fe ff ff mov -0x1c8(%rbp),%rsi 0.00 : 61ed77: 31 d2 xor %edx,%edx 0.00 : 61ed79: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61ed80: e8 eb 55 ff ff callq 614370 0.00 : 61ed85: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : * If the top-level plan node is one that cannot do expression : * evaluation and its existing target list isn't already what : * we need, we must insert a Result node to project the : * desired tlist. : */ : if (!is_projection_capable_plan(result_plan) && 0.00 : 61ed8c: e9 93 fb ff ff jmpq 61e924 0.00 : 61ed91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : sorted_p.total_cost = sorted_path->total_cost; : current_pathkeys = sorted_path->pathkeys; : } : else : { : sorted_p.startup_cost = cheapest_path->startup_cost; 0.00 : 61ed98: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : 61ed9c: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : sorted_p.total_cost = cheapest_path->total_cost; 0.00 : 61eda3: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : 61eda7: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : current_pathkeys = cheapest_path->pathkeys; 0.00 : 61edae: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 61edb2: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp) 0.00 : 61edb9: e9 5b f9 ff ff jmpq 61e719 : sorted_p.startup_cost, sorted_p.total_cost, : path_rows); : /* The Agg or Group node will preserve ordering */ : if (target_pathkeys && : !pathkeys_contained_in(target_pathkeys, current_pathkeys)) : cost_sort(&sorted_p, root, target_pathkeys, sorted_p.total_cost, 0.00 : 61edbe: 44 8b 05 53 9d 54 00 mov 0x549d53(%rip),%r8d # b68b18 0.00 : 61edc5: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 61edc9: 8b 8d 5c fe ff ff mov -0x1a4(%rbp),%ecx 0.00 : 61edcf: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 61edd6: 48 8d bd 00 ff ff ff lea -0x100(%rbp),%rdi 0.00 : 61eddd: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 61ede4: f2 0f 10 85 28 ff ff movsd -0xd8(%rbp),%xmm0 0.00 : 61edeb: ff 0.00 : 61edec: f2 0f 10 9d 10 fe ff movsd -0x1f0(%rbp),%xmm3 0.00 : 61edf3: ff 0.00 : 61edf4: f2 0f 10 8d 28 fe ff movsd -0x1d8(%rbp),%xmm1 0.00 : 61edfb: ff 0.00 : 61edfc: e8 8f 7e fe ff callq 606c90 0.00 : 61ee01: e9 ff f9 ff ff jmpq 61e805 : * the latter would do for the former), or putting windows first that : * match a sort order available for the underlying query. For the moment : * we are content with meeting the spec. : */ : result = NIL; : while (actives != NIL) 0.00 : 61ee06: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 61ee0d: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 61ee11: 48 c7 85 68 fe ff ff movq $0x0,-0x198(%rbp) 0.00 : 61ee18: 00 00 00 00 0.00 : 61ee1c: 48 89 85 e8 fe ff ff mov %rax,-0x118(%rbp) 0.00 : 61ee23: e9 52 e7 ff ff jmpq 61d57a : : if (parse->groupClause) : { : if (need_sort_for_grouping) : { : result_plan = (Plan *) 0.00 : 61ee28: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61ee2f: 48 8b 95 40 fe ff ff mov -0x1c0(%rbp),%rdx 0.00 : 61ee36: 48 89 fe mov %rdi,%rsi 0.00 : 61ee39: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi : make_sort_from_groupcols(root, : parse->groupClause, : groupColIdx, : result_plan); : current_pathkeys = root->group_pathkeys; 0.00 : 61ee40: bb 01 00 00 00 mov $0x1,%ebx : : if (parse->groupClause) : { : if (need_sort_for_grouping) : { : result_plan = (Plan *) 0.00 : 61ee45: e8 96 62 ff ff callq 6150e0 : make_sort_from_groupcols(root, : parse->groupClause, : groupColIdx, : result_plan); : current_pathkeys = root->group_pathkeys; 0.00 : 61ee4a: 48 8b 95 e0 fd ff ff mov -0x220(%rbp),%rdx : : if (parse->groupClause) : { : if (need_sort_for_grouping) : { : result_plan = (Plan *) 0.00 : 61ee51: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : make_sort_from_groupcols(root, : parse->groupClause, : groupColIdx, : result_plan); : current_pathkeys = root->group_pathkeys; 0.00 : 61ee58: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61ee5f: 48 8b 92 e8 00 00 00 mov 0xe8(%rdx),%rdx 0.00 : 61ee66: 48 89 95 20 fe ff ff mov %rdx,-0x1e0(%rbp) 0.00 : 61ee6d: 48 8b 79 60 mov 0x60(%rcx),%rdi 0.00 : 61ee71: e9 fd fa ff ff jmpq 61e973 : else if (parse->hasAggs) : { : /* Plain aggregate plan --- sort if needed */ : AggStrategy aggstrategy; : : if (parse->groupClause) 0.00 : 61ee76: 48 c7 85 20 fe ff ff movq $0x0,-0x1e0(%rbp) 0.00 : 61ee7d: 00 00 00 00 0.00 : 61ee81: 31 db xor %ebx,%ebx 0.00 : 61ee83: e9 eb fa ff ff jmpq 61e973 : * Add an explicit sort if we couldn't make the path come out : * the way the GROUP node needs it. : */ : if (need_sort_for_grouping) : { : result_plan = (Plan *) 0.00 : 61ee88: 48 8b 8d 18 fe ff ff mov -0x1e8(%rbp),%rcx 0.00 : 61ee8f: 48 89 fe mov %rdi,%rsi 0.00 : 61ee92: 48 8b 95 40 fe ff ff mov -0x1c0(%rbp),%rdx 0.00 : 61ee99: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 61eea0: e8 3b 62 ff ff callq 6150e0 : make_sort_from_groupcols(root, : parse->groupClause, : groupColIdx, : result_plan); : current_pathkeys = root->group_pathkeys; 0.00 : 61eea5: 48 8b 8d e0 fd ff ff mov -0x220(%rbp),%rcx : * Add an explicit sort if we couldn't make the path come out : * the way the GROUP node needs it. : */ : if (need_sort_for_grouping) : { : result_plan = (Plan *) 0.00 : 61eeac: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) : make_sort_from_groupcols(root, : parse->groupClause, : groupColIdx, : result_plan); : current_pathkeys = root->group_pathkeys; 0.00 : 61eeb3: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 61eeba: 48 8b 89 e8 00 00 00 mov 0xe8(%rcx),%rcx 0.00 : 61eec1: 48 89 8d 20 fe ff ff mov %rcx,-0x1e0(%rbp) 0.00 : 61eec8: 48 8b 7b 60 mov 0x60(%rbx),%rdi 0.00 : 61eecc: e9 b8 fd ff ff jmpq 61ec89 : extract_grouping_ops(parse->groupClause), : dNumGroups, : result_plan); : /* The Group node won't change sort ordering */ : } : else if (root->hasHavingQual) 0.00 : 61eed1: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 61eed8: 80 b8 3b 01 00 00 00 cmpb $0x0,0x13b(%rax) 0.00 : 61eedf: 0f 84 e0 ea ff ff je 61d9c5 : * generate a Result node. This is a sufficiently unusual : * corner case that it's not worth contorting the structure of : * this routine to avoid having to generate the plan in the : * first place. : */ : result_plan = (Plan *) make_result(root, 0.00 : 61eee5: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 61eeec: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 61eef3: 48 89 c7 mov %rax,%rdi 0.00 : 61eef6: 48 8b 51 68 mov 0x68(%rcx),%rdx 0.00 : 61eefa: 31 c9 xor %ecx,%ecx 0.00 : 61eefc: e8 6f 54 ff ff callq 614370 0.00 : 61ef01: 48 89 85 18 fe ff ff mov %rax,-0x1e8(%rbp) 0.00 : 61ef08: e9 b8 ea ff ff jmpq 61d9c5 : if (can_hash) : return true; : else if (can_sort) : return false; : else : ereport(ERROR, 0.00 : 61ef0d: 45 31 c0 xor %r8d,%r8d 0.00 : 61ef10: b9 40 b8 89 00 mov $0x89b840,%ecx 0.00 : 61ef15: ba a8 0a 00 00 mov $0xaa8,%edx 0.00 : 61ef1a: be 8c b5 89 00 mov $0x89b58c,%esi 0.00 : 61ef1f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61ef24: e8 97 bb 15 00 callq 77aac0 0.00 : 61ef29: 84 c0 test %al,%al 0.00 : 61ef2b: 0f 84 e5 fb ff ff je 61eb16 0.00 : 61ef31: bf 98 b6 89 00 mov $0x89b698,%edi 0.00 : 61ef36: 31 c0 xor %eax,%eax 0.00 : 61ef38: e8 f3 d5 15 00 callq 77c530 0.00 : 61ef3d: bf b3 b5 89 00 mov $0x89b5b3,%edi 0.00 : 61ef42: 41 89 c4 mov %eax,%r12d 0.00 : 61ef45: 31 c0 xor %eax,%eax 0.00 : 61ef47: e8 54 d9 15 00 callq 77c8a0 0.00 : 61ef4c: bf 40 04 00 00 mov $0x440,%edi 0.00 : 61ef51: 89 c3 mov %eax,%ebx 0.00 : 61ef53: e8 f8 dd 15 00 callq 77cd50 0.00 : 61ef58: 44 89 e2 mov %r12d,%edx 0.00 : 61ef5b: 89 c7 mov %eax,%edi 0.00 : 61ef5d: 89 de mov %ebx,%esi 0.00 : 61ef5f: 31 c0 xor %eax,%eax 0.00 : 61ef61: e8 7a b6 15 00 callq 77a5e0 0.00 : 61ef66: e9 ab fb ff ff jmpq 61eb16 : */ : if (!(groupexpr && IsA(groupexpr, Var))) : elog(ERROR, "grouping column is not a Var as expected"); : te = tlist_member_match_var(groupexpr, sub_tlist); : if (!te) : elog(ERROR, "failed to locate grouping columns"); 0.00 : 61ef6b: ba 60 b8 89 00 mov $0x89b860,%edx 0.00 : 61ef70: be 9b 0c 00 00 mov $0xc9b,%esi 0.00 : 61ef75: bf 8c b5 89 00 mov $0x89b58c,%edi 0.00 : 61ef7a: e8 a1 c4 15 00 callq 77b420 0.00 : 61ef7f: be 48 b7 89 00 mov $0x89b748,%esi 0.00 : 61ef84: bf 14 00 00 00 mov $0x14,%edi 0.00 : 61ef89: 31 c0 xor %eax,%eax 0.00 : 61ef8b: e8 a0 c2 15 00 callq 77b230 0.00 : 61ef90: e8 3b a5 e4 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/setrefs.c:1268 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006212a0 : : /* : * set_plan_refs: recurse through the Plan nodes of a single subquery level : */ : static Plan * : set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) : { 0.00 : 6212a0: 55 push %rbp 0.00 : 6212a1: 48 89 e5 mov %rsp,%rbp 0.00 : 6212a4: 41 57 push %r15 0.00 : 6212a6: 49 89 ff mov %rdi,%r15 0.00 : 6212a9: 41 56 push %r14 0.00 : 6212ab: 41 89 d6 mov %edx,%r14d 0.00 : 6212ae: 41 55 push %r13 0.00 : 6212b0: 49 89 f5 mov %rsi,%r13 0.00 : 6212b3: 41 54 push %r12 0.00 : 6212b5: 53 push %rbx 0.00 : 6212b6: 48 81 ec 88 00 00 00 sub $0x88,%rsp : ListCell *l; : : if (plan == NULL) 0.00 : 6212bd: 48 85 f6 test %rsi,%rsi 0.00 : 6212c0: 0f 84 9e 00 00 00 je 621364 : return NULL; : : /* : * Plan-type-specific fixes : */ : switch (nodeTag(plan)) 0.00 : 6212c6: 8b 06 mov (%rsi),%eax 0.00 : 6212c8: 83 e8 65 sub $0x65,%eax 0.00 : 6212cb: 83 f8 21 cmp $0x21,%eax 0.00 : 6212ce: 0f 86 ac 00 00 00 jbe 621380 : rtoffset); : } : } : break; : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 6212d4: ba e7 ba 89 00 mov $0x89bae7,%edx 0.00 : 6212d9: be 4e 03 00 00 mov $0x34e,%esi 0.00 : 6212de: bf d7 b8 89 00 mov $0x89b8d7,%edi 0.00 : 6212e3: e8 38 a1 15 00 callq 77b420 0.00 : 6212e8: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 6212ec: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 6212f1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6212f6: 31 c0 xor %eax,%eax 0.00 : 6212f8: e8 33 9f 15 00 callq 77b230 0.00 : 6212fd: e8 ce 81 e4 ff callq 4694d0 0.00 : 621302: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : case T_ForeignScan: : { : ForeignScan *splan = (ForeignScan *) plan; : : splan->scan.scanrelid += rtoffset; 0.00 : 621308: 01 56 60 add %edx,0x60(%rsi) : splan->scan.plan.targetlist = 0.00 : 62130b: 48 8b 76 28 mov 0x28(%rsi),%rsi 0.00 : 62130f: e8 dc f8 ff ff callq 620bf0 : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = 0.00 : 621314: 49 8b 75 30 mov 0x30(%r13),%rsi : case T_ForeignScan: : { : ForeignScan *splan = (ForeignScan *) plan; : : splan->scan.scanrelid += rtoffset; : splan->scan.plan.targetlist = 0.00 : 621318: 49 89 45 28 mov %rax,0x28(%r13) : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = 0.00 : 62131c: 44 89 f2 mov %r14d,%edx 0.00 : 62131f: 4c 89 ff mov %r15,%rdi 0.00 : 621322: e8 c9 f8 ff ff callq 620bf0 0.00 : 621327: 49 89 45 30 mov %rax,0x30(%r13) : set_dummy_tlist_references(plan, rtoffset); : Assert(splan->plan.qual == NIL); : : splan->limitOffset = : fix_scan_expr(root, splan->limitOffset, rtoffset); : splan->limitCount = 0.00 : 62132b: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 62132f: 44 89 f2 mov %r14d,%edx 0.00 : 621332: 4c 89 ff mov %r15,%rdi 0.00 : 621335: e8 b6 f8 ff ff callq 620bf0 0.00 : 62133a: 49 89 45 68 mov %rax,0x68(%r13) : * NOTE: it is essential that we recurse into child plans AFTER we set : * subplan references in this plan's tlist and quals. If we did the : * reference-adjustments bottom-up, then we would fail to match this : * plan's var nodes against the already-modified nodes of the children. : */ : plan->lefttree = set_plan_refs(root, plan->lefttree, rtoffset); 0.00 : 62133e: 49 8b 75 38 mov 0x38(%r13),%rsi 0.00 : 621342: 44 89 f2 mov %r14d,%edx 0.00 : 621345: 4c 89 ff mov %r15,%rdi 0.00 : 621348: e8 53 ff ff ff callq 6212a0 : plan->righttree = set_plan_refs(root, plan->righttree, rtoffset); 0.00 : 62134d: 49 8b 75 40 mov 0x40(%r13),%rsi : * NOTE: it is essential that we recurse into child plans AFTER we set : * subplan references in this plan's tlist and quals. If we did the : * reference-adjustments bottom-up, then we would fail to match this : * plan's var nodes against the already-modified nodes of the children. : */ : plan->lefttree = set_plan_refs(root, plan->lefttree, rtoffset); 0.00 : 621351: 49 89 45 38 mov %rax,0x38(%r13) : plan->righttree = set_plan_refs(root, plan->righttree, rtoffset); 0.00 : 621355: 44 89 f2 mov %r14d,%edx 0.00 : 621358: 4c 89 ff mov %r15,%rdi 0.00 : 62135b: e8 40 ff ff ff callq 6212a0 0.00 : 621360: 49 89 45 40 mov %rax,0x40(%r13) : : return plan; : } 0.00 : 621364: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 62136b: 4c 89 e8 mov %r13,%rax 0.00 : 62136e: 5b pop %rbx 0.00 : 62136f: 41 5c pop %r12 0.00 : 621371: 41 5d pop %r13 0.00 : 621373: 41 5e pop %r14 0.00 : 621375: 41 5f pop %r15 0.00 : 621377: c9 leaveq 0.00 : 621378: c3 retq 0.00 : 621379: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return NULL; : : /* : * Plan-type-specific fixes : */ : switch (nodeTag(plan)) 0.00 : 621380: 89 c0 mov %eax,%eax 0.00 : 621382: ff 24 c5 c0 b9 89 00 jmpq *0x89b9c0(,%rax,8) 0.00 : 621389: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : case T_WorkTableScan: : { : WorkTableScan *splan = (WorkTableScan *) plan; : : splan->scan.scanrelid += rtoffset; 0.00 : 621390: 01 56 60 add %edx,0x60(%rsi) : splan->scan.plan.targetlist = 0.00 : 621393: 48 8b 76 28 mov 0x28(%rsi),%rsi 0.00 : 621397: e8 54 f8 ff ff callq 620bf0 : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = 0.00 : 62139c: 49 8b 75 30 mov 0x30(%r13),%rsi : case T_WorkTableScan: : { : WorkTableScan *splan = (WorkTableScan *) plan; : : splan->scan.scanrelid += rtoffset; : splan->scan.plan.targetlist = 0.00 : 6213a0: 49 89 45 28 mov %rax,0x28(%r13) : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = 0.00 : 6213a4: 44 89 f2 mov %r14d,%edx 0.00 : 6213a7: 4c 89 ff mov %r15,%rdi 0.00 : 6213aa: e8 41 f8 ff ff callq 620bf0 0.00 : 6213af: 49 89 45 30 mov %rax,0x30(%r13) : fix_scan_list(root, splan->scan.plan.qual, rtoffset); : } : break; 0.00 : 6213b3: eb 89 jmp 62133e 0.00 : 6213b5: 0f 1f 00 nopl (%rax) : } : } : break; : case T_RecursiveUnion: : /* This doesn't evaluate targetlist or check quals either */ : set_dummy_tlist_references(plan, rtoffset); 0.00 : 6213b8: 89 d6 mov %edx,%esi 0.00 : 6213ba: 4c 89 ef mov %r13,%rdi 0.00 : 6213bd: e8 de fd ff ff callq 6211a0 : Assert(plan->qual == NIL); : break; 0.00 : 6213c2: e9 77 ff ff ff jmpq 62133e : IndexOnlyScan *plan, : int rtoffset) : { : indexed_tlist *index_itlist; : : index_itlist = build_tlist_index(plan->indextlist); 0.00 : 6213c7: 48 8b be 80 00 00 00 mov 0x80(%rsi),%rdi : : context.root = root; : context.subplan_itlist = subplan_itlist; : context.newvarno = newvarno; : context.rtoffset = rtoffset; : return fix_upper_expr_mutator(node, &context); 0.00 : 6213ce: 48 8d 5d b0 lea -0x50(%rbp),%rbx : IndexOnlyScan *plan, : int rtoffset) : { : indexed_tlist *index_itlist; : : index_itlist = build_tlist_index(plan->indextlist); 0.00 : 6213d2: e8 d9 f1 ff ff callq 6205b0 : : plan->scan.scanrelid += rtoffset; 0.00 : 6213d7: 45 01 75 60 add %r14d,0x60(%r13) : plan->scan.plan.targetlist = (List *) 0.00 : 6213db: 49 8b 7d 28 mov 0x28(%r13),%rdi : : context.root = root; : context.subplan_itlist = subplan_itlist; : context.newvarno = newvarno; : context.rtoffset = rtoffset; : return fix_upper_expr_mutator(node, &context); 0.00 : 6213df: 48 89 de mov %rbx,%rsi : IndexOnlyScan *plan, : int rtoffset) : { : indexed_tlist *index_itlist; : : index_itlist = build_tlist_index(plan->indextlist); 0.00 : 6213e2: 49 89 c4 mov %rax,%r12 : Index newvarno, : int rtoffset) : { : fix_upper_expr_context context; : : context.root = root; 0.00 : 6213e5: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.subplan_itlist = subplan_itlist; 0.00 : 6213e9: 48 89 45 b8 mov %rax,-0x48(%rbp) : context.newvarno = newvarno; 0.00 : 6213ed: c7 45 c0 ea fd 00 00 movl $0xfdea,-0x40(%rbp) : context.rtoffset = rtoffset; 0.00 : 6213f4: 44 89 75 c4 mov %r14d,-0x3c(%rbp) : return fix_upper_expr_mutator(node, &context); 0.00 : 6213f8: e8 93 f8 ff ff callq 620c90 : fix_upper_expr(root, : (Node *) plan->scan.plan.targetlist, : index_itlist, : INDEX_VAR, : rtoffset); : plan->scan.plan.qual = (List *) 0.00 : 6213fd: 49 8b 7d 30 mov 0x30(%r13),%rdi : indexed_tlist *index_itlist; : : index_itlist = build_tlist_index(plan->indextlist); : : plan->scan.scanrelid += rtoffset; : plan->scan.plan.targetlist = (List *) 0.00 : 621401: 49 89 45 28 mov %rax,0x28(%r13) : : context.root = root; : context.subplan_itlist = subplan_itlist; : context.newvarno = newvarno; : context.rtoffset = rtoffset; : return fix_upper_expr_mutator(node, &context); 0.00 : 621405: 48 89 de mov %rbx,%rsi : Index newvarno, : int rtoffset) : { : fix_upper_expr_context context; : : context.root = root; 0.00 : 621408: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.subplan_itlist = subplan_itlist; 0.00 : 62140c: 4c 89 65 b8 mov %r12,-0x48(%rbp) : context.newvarno = newvarno; 0.00 : 621410: c7 45 c0 ea fd 00 00 movl $0xfdea,-0x40(%rbp) : context.rtoffset = rtoffset; 0.00 : 621417: 44 89 75 c4 mov %r14d,-0x3c(%rbp) : return fix_upper_expr_mutator(node, &context); 0.00 : 62141b: e8 70 f8 ff ff callq 620c90 : (Node *) plan->scan.plan.qual, : index_itlist, : INDEX_VAR, : rtoffset); : /* indexqual is already transformed to reference index columns */ : plan->indexqual = fix_scan_list(root, plan->indexqual, rtoffset); 0.00 : 621420: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 621424: 44 89 f2 mov %r14d,%edx 0.00 : 621427: 4c 89 ff mov %r15,%rdi : fix_upper_expr(root, : (Node *) plan->scan.plan.targetlist, : index_itlist, : INDEX_VAR, : rtoffset); : plan->scan.plan.qual = (List *) 0.00 : 62142a: 49 89 45 30 mov %rax,0x30(%r13) : (Node *) plan->scan.plan.qual, : index_itlist, : INDEX_VAR, : rtoffset); : /* indexqual is already transformed to reference index columns */ : plan->indexqual = fix_scan_list(root, plan->indexqual, rtoffset); 0.00 : 62142e: e8 bd f7 ff ff callq 620bf0 : /* indexorderby is already transformed to reference index columns */ : plan->indexorderby = fix_scan_list(root, plan->indexorderby, rtoffset); 0.00 : 621433: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 621437: 44 89 f2 mov %r14d,%edx 0.00 : 62143a: 4c 89 ff mov %r15,%rdi : (Node *) plan->scan.plan.qual, : index_itlist, : INDEX_VAR, : rtoffset); : /* indexqual is already transformed to reference index columns */ : plan->indexqual = fix_scan_list(root, plan->indexqual, rtoffset); 0.00 : 62143d: 49 89 45 70 mov %rax,0x70(%r13) : /* indexorderby is already transformed to reference index columns */ : plan->indexorderby = fix_scan_list(root, plan->indexorderby, rtoffset); 0.00 : 621441: e8 aa f7 ff ff callq 620bf0 : /* indextlist must NOT be transformed to reference index columns */ : plan->indextlist = fix_scan_list(root, plan->indextlist, rtoffset); 0.00 : 621446: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 62144d: 4c 89 ff mov %r15,%rdi : INDEX_VAR, : rtoffset); : /* indexqual is already transformed to reference index columns */ : plan->indexqual = fix_scan_list(root, plan->indexqual, rtoffset); : /* indexorderby is already transformed to reference index columns */ : plan->indexorderby = fix_scan_list(root, plan->indexorderby, rtoffset); 0.00 : 621450: 49 89 45 78 mov %rax,0x78(%r13) : /* indextlist must NOT be transformed to reference index columns */ : plan->indextlist = fix_scan_list(root, plan->indextlist, rtoffset); 0.00 : 621454: 44 89 f2 mov %r14d,%edx 0.00 : 621457: e8 94 f7 ff ff callq 620bf0 : : pfree(index_itlist); 0.00 : 62145c: 4c 89 e7 mov %r12,%rdi : /* indexqual is already transformed to reference index columns */ : plan->indexqual = fix_scan_list(root, plan->indexqual, rtoffset); : /* indexorderby is already transformed to reference index columns */ : plan->indexorderby = fix_scan_list(root, plan->indexorderby, rtoffset); : /* indextlist must NOT be transformed to reference index columns */ : plan->indextlist = fix_scan_list(root, plan->indextlist, rtoffset); 0.00 : 62145f: 49 89 85 80 00 00 00 mov %rax,0x80(%r13) : : pfree(index_itlist); 0.00 : 621466: e8 15 77 17 00 callq 798b80 : */ : plan->lefttree = set_plan_refs(root, plan->lefttree, rtoffset); : plan->righttree = set_plan_refs(root, plan->righttree, rtoffset); : : return plan; : } 0.00 : 62146b: e9 f4 fe ff ff jmpq 621364 : break; : case T_BitmapIndexScan: : { : BitmapIndexScan *splan = (BitmapIndexScan *) plan; : : splan->scan.scanrelid += rtoffset; 0.00 : 621470: 01 56 60 add %edx,0x60(%rsi) : /* no need to fix targetlist and qual */ : Assert(splan->scan.plan.targetlist == NIL); : Assert(splan->scan.plan.qual == NIL); : splan->indexqual = 0.00 : 621473: 48 8b 76 70 mov 0x70(%rsi),%rsi 0.00 : 621477: e8 74 f7 ff ff callq 620bf0 : fix_scan_list(root, splan->indexqual, rtoffset); : splan->indexqualorig = 0.00 : 62147c: 49 8b 75 78 mov 0x78(%r13),%rsi : : splan->scan.scanrelid += rtoffset; : /* no need to fix targetlist and qual */ : Assert(splan->scan.plan.targetlist == NIL); : Assert(splan->scan.plan.qual == NIL); : splan->indexqual = 0.00 : 621480: 49 89 45 70 mov %rax,0x70(%r13) : fix_scan_list(root, splan->indexqual, rtoffset); : splan->indexqualorig = 0.00 : 621484: 44 89 f2 mov %r14d,%edx 0.00 : 621487: 4c 89 ff mov %r15,%rdi 0.00 : 62148a: e8 61 f7 ff ff callq 620bf0 0.00 : 62148f: 49 89 45 78 mov %rax,0x78(%r13) : fix_scan_list(root, splan->indexqualorig, rtoffset); : } : break; 0.00 : 621493: e9 a6 fe ff ff jmpq 62133e : * Like the plan types above, Limit doesn't evaluate its tlist : * or quals. It does have live expressions for limit/offset, : * however; and those cannot contain subplan variable refs, so : * fix_scan_expr works for them. : */ : set_dummy_tlist_references(plan, rtoffset); 0.00 : 621498: 89 d6 mov %edx,%esi 0.00 : 62149a: 4c 89 ef mov %r13,%rdi 0.00 : 62149d: e8 fe fc ff ff callq 6211a0 : Assert(splan->plan.qual == NIL); : : splan->limitOffset = 0.00 : 6214a2: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 6214a6: 44 89 f2 mov %r14d,%edx 0.00 : 6214a9: 4c 89 ff mov %r15,%rdi 0.00 : 6214ac: e8 3f f7 ff ff callq 620bf0 0.00 : 6214b1: 49 89 45 60 mov %rax,0x60(%r13) 0.00 : 6214b5: e9 71 fe ff ff jmpq 62132b : /* : * Like the plan types above, LockRows doesn't evaluate its : * tlist or quals. But we have to fix up the RT indexes in : * its rowmarks. : */ : set_dummy_tlist_references(plan, rtoffset); 0.00 : 6214ba: 89 d6 mov %edx,%esi 0.00 : 6214bc: 4c 89 ef mov %r13,%rdi 0.00 : 6214bf: e8 dc fc ff ff callq 6211a0 : Assert(splan->plan.qual == NIL); : : foreach(l, splan->rowMarks) 0.00 : 6214c4: 49 8b 45 60 mov 0x60(%r13),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 6214c8: 48 85 c0 test %rax,%rax 0.00 : 6214cb: 0f 84 6d fe ff ff je 62133e 0.00 : 6214d1: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 6214d5: 48 85 d2 test %rdx,%rdx 0.00 : 6214d8: 0f 84 60 fe ff ff je 62133e 0.00 : 6214de: 66 90 xchg %ax,%ax : { : PlanRowMark *rc = (PlanRowMark *) lfirst(l); 0.00 : 6214e0: 48 8b 02 mov (%rdx),%rax : : rc->rti += rtoffset; 0.00 : 6214e3: 44 01 70 04 add %r14d,0x4(%rax) : rc->prti += rtoffset; 0.00 : 6214e7: 44 01 70 08 add %r14d,0x8(%rax) : * its rowmarks. : */ : set_dummy_tlist_references(plan, rtoffset); : Assert(splan->plan.qual == NIL); : : foreach(l, splan->rowMarks) 0.00 : 6214eb: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 6214ef: 48 85 d2 test %rdx,%rdx 0.00 : 6214f2: 75 ec jne 6214e0 0.00 : 6214f4: e9 45 fe ff ff jmpq 62133e : fix_scan_list(root, splan->tidquals, rtoffset); : } : break; : case T_SubqueryScan: : /* Needs special treatment, see comments below */ : return set_subqueryscan_references(root, 0.00 : 6214f9: 48 89 b5 68 ff ff ff mov %rsi,-0x98(%rbp) : { : RelOptInfo *rel; : Plan *result; : : /* Need to look up the subquery's RelOptInfo, since we need its subroot */ : rel = find_base_rel(root, plan->scan.scanrelid); 0.00 : 621500: 8b 76 60 mov 0x60(%rsi),%esi 0.00 : 621503: e8 f8 45 01 00 callq 635b00 : Assert(rel->subplan == plan->subplan); : : /* Recursively process the subplan */ : plan->subplan = set_plan_references(rel->subroot, plan->subplan); 0.00 : 621508: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 62150c: 48 8b b8 b8 00 00 00 mov 0xb8(%rax),%rdi 0.00 : 621513: e8 f8 08 00 00 callq 621e10 : { : int attrno; : ListCell *lp, : *lc; : : if (plan->scan.plan.qual != NIL) 0.00 : 621518: 49 83 7d 30 00 cmpq $0x0,0x30(%r13) : /* Need to look up the subquery's RelOptInfo, since we need its subroot */ : rel = find_base_rel(root, plan->scan.scanrelid); : Assert(rel->subplan == plan->subplan); : : /* Recursively process the subplan */ : plan->subplan = set_plan_references(rel->subroot, plan->subplan); 0.00 : 62151d: 49 89 45 68 mov %rax,0x68(%r13) : { : int attrno; : ListCell *lp, : *lc; : : if (plan->scan.plan.qual != NIL) 0.00 : 621521: 0f 84 66 07 00 00 je 621c8d 0.00 : 621527: 49 8b 75 28 mov 0x28(%r13),%rsi : * set_plan_references would otherwise have done on it. Notice we do : * not do set_upper_references() here, because a SubqueryScan will : * always have been created with correct references to its subplan's : * outputs to begin with. : */ : plan->scan.scanrelid += rtoffset; 0.00 : 62152b: 45 01 75 60 add %r14d,0x60(%r13) : plan->scan.plan.targetlist = 0.00 : 62152f: 44 89 f2 mov %r14d,%edx 0.00 : 621532: 4c 89 ff mov %r15,%rdi 0.00 : 621535: e8 b6 f6 ff ff callq 620bf0 : fix_scan_list(root, plan->scan.plan.targetlist, rtoffset); : plan->scan.plan.qual = 0.00 : 62153a: 49 8b 75 30 mov 0x30(%r13),%rsi : * not do set_upper_references() here, because a SubqueryScan will : * always have been created with correct references to its subplan's : * outputs to begin with. : */ : plan->scan.scanrelid += rtoffset; : plan->scan.plan.targetlist = 0.00 : 62153e: 49 89 45 28 mov %rax,0x28(%r13) : fix_scan_list(root, plan->scan.plan.targetlist, rtoffset); : plan->scan.plan.qual = 0.00 : 621542: 44 89 f2 mov %r14d,%edx 0.00 : 621545: 4c 89 ff mov %r15,%rdi 0.00 : 621548: e8 a3 f6 ff ff callq 620bf0 0.00 : 62154d: 49 89 45 30 mov %rax,0x30(%r13) 0.00 : 621551: e9 0e fe ff ff jmpq 621364 : break; : case T_WindowAgg: : { : WindowAgg *wplan = (WindowAgg *) plan; : : set_upper_references(root, plan, rtoffset); 0.00 : 621556: e8 35 fa ff ff callq 620f90 : /* : * Like Limit node limit/offset expressions, WindowAgg has : * frame offset expressions, which cannot contain subplan : * variable refs, so fix_scan_expr works for them. : */ : wplan->startOffset = 0.00 : 62155b: 49 8b b5 98 00 00 00 mov 0x98(%r13),%rsi 0.00 : 621562: 44 89 f2 mov %r14d,%edx 0.00 : 621565: 4c 89 ff mov %r15,%rdi 0.00 : 621568: e8 83 f6 ff ff callq 620bf0 : fix_scan_expr(root, wplan->startOffset, rtoffset); : wplan->endOffset = 0.00 : 62156d: 49 8b b5 a0 00 00 00 mov 0xa0(%r13),%rsi : /* : * Like Limit node limit/offset expressions, WindowAgg has : * frame offset expressions, which cannot contain subplan : * variable refs, so fix_scan_expr works for them. : */ : wplan->startOffset = 0.00 : 621574: 49 89 85 98 00 00 00 mov %rax,0x98(%r13) : fix_scan_expr(root, wplan->startOffset, rtoffset); : wplan->endOffset = 0.00 : 62157b: 44 89 f2 mov %r14d,%edx 0.00 : 62157e: 4c 89 ff mov %r15,%rdi 0.00 : 621581: e8 6a f6 ff ff callq 620bf0 0.00 : 621586: 49 89 85 a0 00 00 00 mov %rax,0xa0(%r13) : fix_scan_expr(root, wplan->endOffset, rtoffset); : } : break; 0.00 : 62158d: e9 ac fd ff ff jmpq 62133e : fix_scan_expr(root, splan->limitCount, rtoffset); : } : break; : case T_Agg: : case T_Group: : set_upper_references(root, plan, rtoffset); 0.00 : 621592: e8 f9 f9 ff ff callq 620f90 : break; 0.00 : 621597: e9 a2 fd ff ff jmpq 62133e : Plan *outer_plan = join->plan.lefttree; : Plan *inner_plan = join->plan.righttree; : indexed_tlist *outer_itlist; : indexed_tlist *inner_itlist; : : outer_itlist = build_tlist_index(outer_plan->targetlist); /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/setrefs.c:1268 100.00 : 62159c: 48 8b 46 38 mov 0x38(%rsi),%rax : */ : static void : set_join_references(PlannerInfo *root, Join *join, int rtoffset) : { : Plan *outer_plan = join->plan.lefttree; : Plan *inner_plan = join->plan.righttree; 0.00 : 6215a0: 48 8b 5e 40 mov 0x40(%rsi),%rbx : indexed_tlist *outer_itlist; : indexed_tlist *inner_itlist; : : outer_itlist = build_tlist_index(outer_plan->targetlist); 0.00 : 6215a4: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 6215a8: e8 03 f0 ff ff callq 6205b0 0.00 : 6215ad: 48 89 45 a8 mov %rax,-0x58(%rbp) : inner_itlist = build_tlist_index(inner_plan->targetlist); 0.00 : 6215b1: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 6215b5: e8 f6 ef ff ff callq 6205b0 0.00 : 6215ba: 48 89 45 a0 mov %rax,-0x60(%rbp) : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 6215be: 48 8b 45 a8 mov -0x58(%rbp),%rax : : outer_itlist = build_tlist_index(outer_plan->targetlist); : inner_itlist = build_tlist_index(inner_plan->targetlist); : : /* All join plans have tlist, qual, and joinqual */ : join->plan.targetlist = fix_join_expr(root, 0.00 : 6215c2: 49 8b 7d 28 mov 0x28(%r13),%rdi : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; 0.00 : 6215c6: 48 8b 55 a0 mov -0x60(%rbp),%rdx : Index acceptable_rel, : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; 0.00 : 6215ca: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; 0.00 : 6215ce: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 6215d5: 48 89 45 b8 mov %rax,-0x48(%rbp) : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 6215d9: 48 8d 45 b0 lea -0x50(%rbp),%rax : : context.root = root; : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; 0.00 : 6215dd: 44 89 75 cc mov %r14d,-0x34(%rbp) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; 0.00 : 6215e1: 48 89 55 c0 mov %rdx,-0x40(%rbp) : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 6215e5: 48 89 c6 mov %rax,%rsi 0.00 : 6215e8: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 6215ef: e8 ac f7 ff ff callq 620da0 : join->plan.targetlist, : outer_itlist, : inner_itlist, : (Index) 0, : rtoffset); : join->plan.qual = fix_join_expr(root, 0.00 : 6215f4: 49 8b 7d 30 mov 0x30(%r13),%rdi : : outer_itlist = build_tlist_index(outer_plan->targetlist); : inner_itlist = build_tlist_index(inner_plan->targetlist); : : /* All join plans have tlist, qual, and joinqual */ : join->plan.targetlist = fix_join_expr(root, 0.00 : 6215f8: 49 89 45 28 mov %rax,0x28(%r13) : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 6215fc: 48 8b 55 a8 mov -0x58(%rbp),%rdx : context.inner_itlist = inner_itlist; 0.00 : 621600: 48 8b 45 a0 mov -0x60(%rbp),%rax : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621604: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi : Index acceptable_rel, : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; 0.00 : 62160b: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; 0.00 : 62160f: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : context.rtoffset = rtoffset; 0.00 : 621616: 44 89 75 cc mov %r14d,-0x34(%rbp) : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 62161a: 48 89 55 b8 mov %rdx,-0x48(%rbp) : context.inner_itlist = inner_itlist; 0.00 : 62161e: 48 89 45 c0 mov %rax,-0x40(%rbp) : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621622: e8 79 f7 ff ff callq 620da0 : join->plan.qual, : outer_itlist, : inner_itlist, : (Index) 0, : rtoffset); : join->joinqual = fix_join_expr(root, 0.00 : 621627: 49 8b 7d 68 mov 0x68(%r13),%rdi : join->plan.targetlist, : outer_itlist, : inner_itlist, : (Index) 0, : rtoffset); : join->plan.qual = fix_join_expr(root, 0.00 : 62162b: 49 89 45 30 mov %rax,0x30(%r13) : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 62162f: 48 8b 55 a8 mov -0x58(%rbp),%rdx : context.inner_itlist = inner_itlist; 0.00 : 621633: 48 8b 45 a0 mov -0x60(%rbp),%rax : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621637: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi : Index acceptable_rel, : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; 0.00 : 62163e: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; 0.00 : 621642: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : context.rtoffset = rtoffset; 0.00 : 621649: 44 89 75 cc mov %r14d,-0x34(%rbp) : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 62164d: 48 89 55 b8 mov %rdx,-0x48(%rbp) : context.inner_itlist = inner_itlist; 0.00 : 621651: 48 89 45 c0 mov %rax,-0x40(%rbp) : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621655: e8 46 f7 ff ff callq 620da0 : join->plan.qual, : outer_itlist, : inner_itlist, : (Index) 0, : rtoffset); : join->joinqual = fix_join_expr(root, 0.00 : 62165a: 49 89 45 68 mov %rax,0x68(%r13) : inner_itlist, : (Index) 0, : rtoffset); : : /* Now do join-type-specific stuff */ : if (IsA(join, NestLoop)) 0.00 : 62165e: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 621662: 83 f8 7a cmp $0x7a,%eax 0.00 : 621665: 0f 84 2b 05 00 00 je 621b96 : if (!(IsA(nlp->paramval, Var) && : nlp->paramval->varno == OUTER_VAR)) : elog(ERROR, "NestLoopParam was not reduced to a simple Var"); : } : } : else if (IsA(join, MergeJoin)) 0.00 : 62166b: 83 f8 7b cmp $0x7b,%eax 0.00 : 62166e: 0f 84 bc 05 00 00 je 621c30 : outer_itlist, : inner_itlist, : (Index) 0, : rtoffset); : } : else if (IsA(join, HashJoin)) 0.00 : 621674: 83 f8 7c cmp $0x7c,%eax 0.00 : 621677: 0f 84 b3 05 00 00 je 621c30 : inner_itlist, : (Index) 0, : rtoffset); : } : : pfree(outer_itlist); 0.00 : 62167d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 621681: e8 fa 74 17 00 callq 798b80 : pfree(inner_itlist); 0.00 : 621686: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 62168a: e8 f1 74 17 00 callq 798b80 : : case T_NestLoop: : case T_MergeJoin: : case T_HashJoin: : set_join_references(root, (Join *) plan, rtoffset); : break; 0.00 : 62168f: e9 aa fc ff ff jmpq 62133e : : /* : * Result may or may not have a subplan; if not, it's more : * like a scan node than an upper node. : */ : if (splan->plan.lefttree != NULL) 0.00 : 621694: 48 83 7e 38 00 cmpq $0x0,0x38(%rsi) 0.00 : 621699: 0f 84 c9 05 00 00 je 621c68 0.00 : 62169f: 90 nop : set_upper_references(root, plan, rtoffset); 0.00 : 6216a0: e8 eb f8 ff ff callq 620f90 : fix_scan_list(root, splan->plan.targetlist, rtoffset); : splan->plan.qual = : fix_scan_list(root, splan->plan.qual, rtoffset); : } : /* resconstantqual can't contain any subplan variable refs */ : splan->resconstantqual = 0.00 : 6216a5: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 6216a9: 44 89 f2 mov %r14d,%edx 0.00 : 6216ac: 4c 89 ff mov %r15,%rdi 0.00 : 6216af: e8 3c f5 ff ff callq 620bf0 0.00 : 6216b4: 49 89 45 60 mov %rax,0x60(%r13) : fix_scan_expr(root, splan->resconstantqual, rtoffset); : } : break; 0.00 : 6216b8: e9 81 fc ff ff jmpq 62133e : : /* : * MergeAppend, like Sort et al, doesn't actually evaluate its : * targetlist or check quals. : */ : set_dummy_tlist_references(plan, rtoffset); 0.00 : 6216bd: 89 d6 mov %edx,%esi 0.00 : 6216bf: 4c 89 ef mov %r13,%rdi 0.00 : 6216c2: e8 d9 fa ff ff callq 6211a0 : Assert(splan->plan.qual == NIL); : foreach(l, splan->mergeplans) 0.00 : 6216c7: 49 8b 45 60 mov 0x60(%r13),%rax 0.00 : 6216cb: 48 85 c0 test %rax,%rax 0.00 : 6216ce: 0f 84 6a fc ff ff je 62133e 0.00 : 6216d4: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 6216d8: 48 85 db test %rbx,%rbx 0.00 : 6216db: 0f 84 5d fc ff ff je 62133e 0.00 : 6216e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : lfirst(l) = set_plan_refs(root, 0.00 : 6216e8: 48 8b 33 mov (%rbx),%rsi 0.00 : 6216eb: 44 89 f2 mov %r14d,%edx 0.00 : 6216ee: 4c 89 ff mov %r15,%rdi 0.00 : 6216f1: e8 aa fb ff ff callq 6212a0 0.00 : 6216f6: 48 89 03 mov %rax,(%rbx) : * MergeAppend, like Sort et al, doesn't actually evaluate its : * targetlist or check quals. : */ : set_dummy_tlist_references(plan, rtoffset); : Assert(splan->plan.qual == NIL); : foreach(l, splan->mergeplans) 0.00 : 6216f9: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 6216fd: 48 85 db test %rbx,%rbx 0.00 : 621700: 75 e6 jne 6216e8 0.00 : 621702: e9 37 fc ff ff jmpq 62133e : ModifyTable *splan = (ModifyTable *) plan; : : Assert(splan->plan.targetlist == NIL); : Assert(splan->plan.qual == NIL); : : splan->withCheckOptionLists = 0.00 : 621707: 48 8b b6 80 00 00 00 mov 0x80(%rsi),%rsi 0.00 : 62170e: e8 dd f4 ff ff callq 620bf0 0.00 : 621713: 49 89 85 80 00 00 00 mov %rax,0x80(%r13) : fix_scan_list(root, splan->withCheckOptionLists, rtoffset); : : if (splan->returningLists) 0.00 : 62171a: 49 8b 85 88 00 00 00 mov 0x88(%r13),%rax 0.00 : 621721: 48 85 c0 test %rax,%rax 0.00 : 621724: 74 63 je 621789 0.00 : 621726: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 62172a: 31 d2 xor %edx,%edx 0.00 : 62172c: 48 89 45 80 mov %rax,-0x80(%rbp) : * Pass each per-subplan returningList through : * set_returning_clause_references(). : */ : Assert(list_length(splan->returningLists) == list_length(splan->resultRelations)); : Assert(list_length(splan->returningLists) == list_length(splan->plans)); : forthree(lcrl, splan->returningLists, 0.00 : 621730: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 621734: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) 0.00 : 62173b: 00 0.00 : 62173c: 48 85 c0 test %rax,%rax 0.00 : 62173f: 74 0e je 62174f 0.00 : 621741: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 621745: 48 85 c0 test %rax,%rax 0.00 : 621748: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 62174c: 0f 95 c2 setne %dl 0.00 : 62174f: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 621753: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 62175a: 00 0.00 : 62175b: 48 85 c0 test %rax,%rax 0.00 : 62175e: 74 08 je 621768 0.00 : 621760: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 621764: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 621768: 84 d2 test %dl,%dl 0.00 : 62176a: 0f 85 1f 02 00 00 jne 62198f : subplan, : resultrel, : rtoffset); : newRL = lappend(newRL, rlist); : } : splan->returningLists = newRL; 0.00 : 621770: 49 c7 85 88 00 00 00 movq $0x0,0x88(%r13) 0.00 : 621777: 00 00 00 00 0.00 : 62177b: 31 c0 xor %eax,%eax : * EXPLAIN; the executor won't pay any attention to the : * targetlist. We postpone this step until here so that : * we don't have to do set_returning_clause_references() : * twice on identical targetlists. : */ : splan->plan.targetlist = copyObject(linitial(newRL)); 0.00 : 62177d: 48 8b 38 mov (%rax),%rdi 0.00 : 621780: e8 0b 2a fc ff callq 5e4190 0.00 : 621785: 49 89 45 28 mov %rax,0x28(%r13) : } : : foreach(l, splan->resultRelations) 0.00 : 621789: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 62178d: 48 85 c0 test %rax,%rax 0.00 : 621790: 75 09 jne 62179b 0.00 : 621792: eb 10 jmp 6217a4 0.00 : 621794: 0f 1f 40 00 nopl 0x0(%rax) : { : lfirst_int(l) += rtoffset; 0.00 : 621798: 44 01 30 add %r14d,(%rax) : * twice on identical targetlists. : */ : splan->plan.targetlist = copyObject(linitial(newRL)); : } : : foreach(l, splan->resultRelations) 0.00 : 62179b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 62179f: 48 85 c0 test %rax,%rax 0.00 : 6217a2: 75 f4 jne 621798 : { : lfirst_int(l) += rtoffset; : } : foreach(l, splan->rowMarks) 0.00 : 6217a4: 49 8b 85 98 00 00 00 mov 0x98(%r13),%rax 0.00 : 6217ab: 48 85 c0 test %rax,%rax 0.00 : 6217ae: 74 24 je 6217d4 0.00 : 6217b0: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 6217b4: 48 85 d2 test %rdx,%rdx 0.00 : 6217b7: 74 1b je 6217d4 0.00 : 6217b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : PlanRowMark *rc = (PlanRowMark *) lfirst(l); 0.00 : 6217c0: 48 8b 02 mov (%rdx),%rax : : rc->rti += rtoffset; 0.00 : 6217c3: 44 01 70 04 add %r14d,0x4(%rax) : rc->prti += rtoffset; 0.00 : 6217c7: 44 01 70 08 add %r14d,0x8(%rax) : : foreach(l, splan->resultRelations) : { : lfirst_int(l) += rtoffset; : } : foreach(l, splan->rowMarks) 0.00 : 6217cb: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 6217cf: 48 85 d2 test %rdx,%rdx 0.00 : 6217d2: 75 ec jne 6217c0 : PlanRowMark *rc = (PlanRowMark *) lfirst(l); : : rc->rti += rtoffset; : rc->prti += rtoffset; : } : foreach(l, splan->plans) 0.00 : 6217d4: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 6217d8: 48 85 c0 test %rax,%rax 0.00 : 6217db: 74 2d je 62180a 0.00 : 6217dd: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 6217e1: 48 85 db test %rbx,%rbx 0.00 : 6217e4: 74 24 je 62180a 0.00 : 6217e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6217ed: 00 00 00 : { : lfirst(l) = set_plan_refs(root, 0.00 : 6217f0: 48 8b 33 mov (%rbx),%rsi 0.00 : 6217f3: 44 89 f2 mov %r14d,%edx 0.00 : 6217f6: 4c 89 ff mov %r15,%rdi 0.00 : 6217f9: e8 a2 fa ff ff callq 6212a0 0.00 : 6217fe: 48 89 03 mov %rax,(%rbx) : PlanRowMark *rc = (PlanRowMark *) lfirst(l); : : rc->rti += rtoffset; : rc->prti += rtoffset; : } : foreach(l, splan->plans) 0.00 : 621801: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 621805: 48 85 db test %rbx,%rbx 0.00 : 621808: 75 e6 jne 6217f0 : * Append this ModifyTable node's final result relation RT : * index(es) to the global list for the plan, and set its : * resultRelIndex to reflect their starting position in the : * global list. : */ : splan->resultRelIndex = list_length(root->glob->resultRelations); 0.00 : 62180a: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 62180e: 48 8b 50 38 mov 0x38(%rax),%rdx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 621812: 31 c0 xor %eax,%eax 0.00 : 621814: 48 85 d2 test %rdx,%rdx 0.00 : 621817: 74 03 je 62181c 0.00 : 621819: 8b 42 04 mov 0x4(%rdx),%eax : root->glob->resultRelations = 0.00 : 62181c: 49 8b 7d 68 mov 0x68(%r13),%rdi : * Append this ModifyTable node's final result relation RT : * index(es) to the global list for the plan, and set its : * resultRelIndex to reflect their starting position in the : * global list. : */ : splan->resultRelIndex = list_length(root->glob->resultRelations); 0.00 : 621820: 41 89 45 70 mov %eax,0x70(%r13) : root->glob->resultRelations = 0.00 : 621824: e8 d7 fe fb ff callq 5e1700 0.00 : 621829: 49 8b 5f 10 mov 0x10(%r15),%rbx 0.00 : 62182d: 48 89 c6 mov %rax,%rsi 0.00 : 621830: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 621834: e8 87 0d fc ff callq 5e25c0 0.00 : 621839: 48 89 43 38 mov %rax,0x38(%rbx) : list_concat(root->glob->resultRelations, : list_copy(splan->resultRelations)); : } : break; 0.00 : 62183d: e9 fc fa ff ff jmpq 62133e : : /* : * Append, like Sort et al, doesn't actually evaluate its : * targetlist or check quals. : */ : set_dummy_tlist_references(plan, rtoffset); 0.00 : 621842: 89 d6 mov %edx,%esi 0.00 : 621844: 4c 89 ef mov %r13,%rdi 0.00 : 621847: e8 54 f9 ff ff callq 6211a0 : Assert(splan->plan.qual == NIL); : foreach(l, splan->appendplans) 0.00 : 62184c: 49 8b 45 60 mov 0x60(%r13),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 621850: 48 85 c0 test %rax,%rax 0.00 : 621853: 0f 84 e5 fa ff ff je 62133e 0.00 : 621859: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 62185d: 48 85 db test %rbx,%rbx 0.00 : 621860: 0f 84 d8 fa ff ff je 62133e 0.00 : 621866: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 62186d: 00 00 00 : { : lfirst(l) = set_plan_refs(root, 0.00 : 621870: 48 8b 33 mov (%rbx),%rsi 0.00 : 621873: 44 89 f2 mov %r14d,%edx 0.00 : 621876: 4c 89 ff mov %r15,%rdi 0.00 : 621879: e8 22 fa ff ff callq 6212a0 0.00 : 62187e: 48 89 03 mov %rax,(%rbx) : * Append, like Sort et al, doesn't actually evaluate its : * targetlist or check quals. : */ : set_dummy_tlist_references(plan, rtoffset); : Assert(splan->plan.qual == NIL); : foreach(l, splan->appendplans) 0.00 : 621881: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 621885: 48 85 db test %rbx,%rbx 0.00 : 621888: 75 e6 jne 621870 0.00 : 62188a: e9 af fa ff ff jmpq 62133e : break; : case T_IndexScan: : { : IndexScan *splan = (IndexScan *) plan; : : splan->scan.scanrelid += rtoffset; 0.00 : 62188f: 01 56 60 add %edx,0x60(%rsi) : splan->scan.plan.targetlist = 0.00 : 621892: 48 8b 76 28 mov 0x28(%rsi),%rsi 0.00 : 621896: e8 55 f3 ff ff callq 620bf0 : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = 0.00 : 62189b: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 62189f: 44 89 f2 mov %r14d,%edx 0.00 : 6218a2: 4c 89 ff mov %r15,%rdi : case T_IndexScan: : { : IndexScan *splan = (IndexScan *) plan; : : splan->scan.scanrelid += rtoffset; : splan->scan.plan.targetlist = 0.00 : 6218a5: 49 89 45 28 mov %rax,0x28(%r13) : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = 0.00 : 6218a9: e8 42 f3 ff ff callq 620bf0 : fix_scan_list(root, splan->scan.plan.qual, rtoffset); : splan->indexqual = 0.00 : 6218ae: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 6218b2: 44 89 f2 mov %r14d,%edx 0.00 : 6218b5: 4c 89 ff mov %r15,%rdi : IndexScan *splan = (IndexScan *) plan; : : splan->scan.scanrelid += rtoffset; : splan->scan.plan.targetlist = : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = 0.00 : 6218b8: 49 89 45 30 mov %rax,0x30(%r13) : fix_scan_list(root, splan->scan.plan.qual, rtoffset); : splan->indexqual = 0.00 : 6218bc: e8 2f f3 ff ff callq 620bf0 : fix_scan_list(root, splan->indexqual, rtoffset); : splan->indexqualorig = 0.00 : 6218c1: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 6218c5: 44 89 f2 mov %r14d,%edx 0.00 : 6218c8: 4c 89 ff mov %r15,%rdi : splan->scan.scanrelid += rtoffset; : splan->scan.plan.targetlist = : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = : fix_scan_list(root, splan->scan.plan.qual, rtoffset); : splan->indexqual = 0.00 : 6218cb: 49 89 45 70 mov %rax,0x70(%r13) : fix_scan_list(root, splan->indexqual, rtoffset); : splan->indexqualorig = 0.00 : 6218cf: e8 1c f3 ff ff callq 620bf0 : fix_scan_list(root, splan->indexqualorig, rtoffset); : splan->indexorderby = 0.00 : 6218d4: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 6218db: 44 89 f2 mov %r14d,%edx 0.00 : 6218de: 4c 89 ff mov %r15,%rdi : fix_scan_list(root, splan->scan.plan.targetlist, rtoffset); : splan->scan.plan.qual = : fix_scan_list(root, splan->scan.plan.qual, rtoffset); : splan->indexqual = : fix_scan_list(root, splan->indexqual, rtoffset); : splan->indexqualorig = 0.00 : 6218e1: 49 89 45 78 mov %rax,0x78(%r13) : fix_scan_list(root, splan->indexqualorig, rtoffset); : splan->indexorderby = 0.00 : 6218e5: e8 06 f3 ff ff callq 620bf0 : fix_scan_list(root, splan->indexorderby, rtoffset); : splan->indexorderbyorig = 0.00 : 6218ea: 49 8b b5 88 00 00 00 mov 0x88(%r13),%rsi : fix_scan_list(root, splan->scan.plan.qual, rtoffset); : splan->indexqual = : fix_scan_list(root, splan->indexqual, rtoffset); : splan->indexqualorig = : fix_scan_list(root, splan->indexqualorig, rtoffset); : splan->indexorderby = 0.00 : 6218f1: 49 89 85 80 00 00 00 mov %rax,0x80(%r13) : fix_scan_list(root, splan->indexorderby, rtoffset); : splan->indexorderbyorig = 0.00 : 6218f8: 44 89 f2 mov %r14d,%edx 0.00 : 6218fb: 4c 89 ff mov %r15,%rdi 0.00 : 6218fe: e8 ed f2 ff ff callq 620bf0 0.00 : 621903: 49 89 85 88 00 00 00 mov %rax,0x88(%r13) : fix_scan_list(root, splan->indexorderbyorig, rtoffset); : } : break; 0.00 : 62190a: e9 2f fa ff ff jmpq 62133e : BitmapAnd *splan = (BitmapAnd *) plan; : : /* BitmapAnd works like Append, but has no tlist */ : Assert(splan->plan.targetlist == NIL); : Assert(splan->plan.qual == NIL); : foreach(l, splan->bitmapplans) 0.00 : 62190f: 48 8b 46 60 mov 0x60(%rsi),%rax 0.00 : 621913: 48 85 c0 test %rax,%rax 0.00 : 621916: 0f 84 22 fa ff ff je 62133e 0.00 : 62191c: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 621920: 48 85 db test %rbx,%rbx 0.00 : 621923: 0f 84 15 fa ff ff je 62133e 0.00 : 621929: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : lfirst(l) = set_plan_refs(root, 0.00 : 621930: 48 8b 33 mov (%rbx),%rsi 0.00 : 621933: 44 89 f2 mov %r14d,%edx 0.00 : 621936: 4c 89 ff mov %r15,%rdi 0.00 : 621939: e8 62 f9 ff ff callq 6212a0 0.00 : 62193e: 48 89 03 mov %rax,(%rbx) : BitmapAnd *splan = (BitmapAnd *) plan; : : /* BitmapAnd works like Append, but has no tlist */ : Assert(splan->plan.targetlist == NIL); : Assert(splan->plan.qual == NIL); : foreach(l, splan->bitmapplans) 0.00 : 621941: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 621945: 48 85 db test %rbx,%rbx 0.00 : 621948: 75 e6 jne 621930 0.00 : 62194a: e9 ef f9 ff ff jmpq 62133e : BitmapOr *splan = (BitmapOr *) plan; : : /* BitmapOr works like Append, but has no tlist */ : Assert(splan->plan.targetlist == NIL); : Assert(splan->plan.qual == NIL); : foreach(l, splan->bitmapplans) 0.00 : 62194f: 48 8b 46 60 mov 0x60(%rsi),%rax 0.00 : 621953: 48 85 c0 test %rax,%rax 0.00 : 621956: 0f 84 e2 f9 ff ff je 62133e 0.00 : 62195c: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 621960: 48 85 db test %rbx,%rbx 0.00 : 621963: 0f 84 d5 f9 ff ff je 62133e 0.00 : 621969: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : lfirst(l) = set_plan_refs(root, 0.00 : 621970: 48 8b 33 mov (%rbx),%rsi 0.00 : 621973: 44 89 f2 mov %r14d,%edx 0.00 : 621976: 4c 89 ff mov %r15,%rdi 0.00 : 621979: e8 22 f9 ff ff callq 6212a0 0.00 : 62197e: 48 89 03 mov %rax,(%rbx) : BitmapOr *splan = (BitmapOr *) plan; : : /* BitmapOr works like Append, but has no tlist */ : Assert(splan->plan.targetlist == NIL); : Assert(splan->plan.qual == NIL); : foreach(l, splan->bitmapplans) 0.00 : 621981: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 621985: 48 85 db test %rbx,%rbx 0.00 : 621988: 75 e6 jne 621970 0.00 : 62198a: e9 af f9 ff ff jmpq 62133e : * Pass each per-subplan returningList through : * set_returning_clause_references(). : */ : Assert(list_length(splan->returningLists) == list_length(splan->resultRelations)); : Assert(list_length(splan->returningLists) == list_length(splan->plans)); : forthree(lcrl, splan->returningLists, 0.00 : 62198f: 48 83 7d 80 00 cmpq $0x0,-0x80(%rbp) 0.00 : 621994: 0f 84 d6 fd ff ff je 621770 0.00 : 62199a: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 62199f: 90 nop 0.00 : 6219a0: 0f 84 ca fd ff ff je 621770 0.00 : 6219a6: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 6219aa: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : 6219b1: 00 00 00 00 0.00 : 6219b5: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 6219bc: 0f 1f 40 00 nopl 0x0(%rax) : lcrr, splan->resultRelations, : lcp, splan->plans) : { : List *rlist = (List *) lfirst(lcrl); 0.00 : 6219c0: 48 8b 55 80 mov -0x80(%rbp),%rdx : Index resultrel = lfirst_int(lcrr); 0.00 : 6219c4: 48 8b 45 88 mov -0x78(%rbp),%rax : Assert(list_length(splan->returningLists) == list_length(splan->plans)); : forthree(lcrl, splan->returningLists, : lcrr, splan->resultRelations, : lcp, splan->plans) : { : List *rlist = (List *) lfirst(lcrl); 0.00 : 6219c8: 48 8b 12 mov (%rdx),%rdx 0.00 : 6219cb: 48 89 95 70 ff ff ff mov %rdx,-0x90(%rbp) : * PlaceHolderVar to refer to the result relation, since the result is : * never below an outer join. If that case could happen, we'd have to be : * prepared to pick apart the PlaceHolderVar and evaluate its contained : * expression instead. : */ : itlist = build_tlist_index_other_vars(topplan->targetlist, resultRelation); 0.00 : 6219d2: 48 8b 55 90 mov -0x70(%rbp),%rdx : forthree(lcrl, splan->returningLists, : lcrr, splan->resultRelations, : lcp, splan->plans) : { : List *rlist = (List *) lfirst(lcrl); : Index resultrel = lfirst_int(lcrr); 0.00 : 6219d6: 44 8b 08 mov (%rax),%r9d : * PlaceHolderVar to refer to the result relation, since the result is : * never below an outer join. If that case could happen, we'd have to be : * prepared to pick apart the PlaceHolderVar and evaluate its contained : * expression instead. : */ : itlist = build_tlist_index_other_vars(topplan->targetlist, resultRelation); 0.00 : 6219d9: 48 8b 02 mov (%rdx),%rax 0.00 : 6219dc: 48 8b 58 28 mov 0x28(%rax),%rbx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 6219e0: 48 85 db test %rbx,%rbx 0.00 : 6219e3: 0f 84 77 01 00 00 je 621b60 : indexed_tlist *itlist; : tlist_vinfo *vinfo; : ListCell *l; : : /* Create data structure with enough slots for all tlist entries */ : itlist = (indexed_tlist *) 0.00 : 6219e9: 48 63 7b 04 movslq 0x4(%rbx),%rdi 0.00 : 6219ed: 44 89 8d 58 ff ff ff mov %r9d,-0xa8(%rbp) 0.00 : 6219f4: 48 8d 3c fd 10 00 00 lea 0x10(,%rdi,8),%rdi 0.00 : 6219fb: 00 0.00 : 6219fc: e8 4f 73 17 00 callq 798d50 : palloc(offsetof(indexed_tlist, vars) + : list_length(tlist) * sizeof(tlist_vinfo)); : : itlist->tlist = tlist; 0.00 : 621a01: 48 89 18 mov %rbx,(%rax) : itlist->has_ph_vars = false; 0.00 : 621a04: c6 40 0c 00 movb $0x0,0xc(%rax) : itlist->has_non_vars = false; : : /* Find the desired Vars and fill in the index array */ : vinfo = itlist->vars; 0.00 : 621a08: 4c 8d 40 10 lea 0x10(%rax),%r8 : palloc(offsetof(indexed_tlist, vars) + : list_length(tlist) * sizeof(tlist_vinfo)); : : itlist->tlist = tlist; : itlist->has_ph_vars = false; : itlist->has_non_vars = false; 0.00 : 621a0c: c6 40 0d 00 movb $0x0,0xd(%rax) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 621a10: 48 8b 4b 08 mov 0x8(%rbx),%rcx : indexed_tlist *itlist; : tlist_vinfo *vinfo; : ListCell *l; : : /* Create data structure with enough slots for all tlist entries */ : itlist = (indexed_tlist *) 0.00 : 621a14: 49 89 c4 mov %rax,%r12 : itlist->tlist = tlist; : itlist->has_ph_vars = false; : itlist->has_non_vars = false; : : /* Find the desired Vars and fill in the index array */ : vinfo = itlist->vars; 0.00 : 621a17: 4c 89 c7 mov %r8,%rdi : foreach(l, tlist) 0.00 : 621a1a: 44 8b 8d 58 ff ff ff mov -0xa8(%rbp),%r9d 0.00 : 621a21: 48 85 c9 test %rcx,%rcx 0.00 : 621a24: 75 1f jne 621a45 0.00 : 621a26: eb 60 jmp 621a88 0.00 : 621a28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 621a2f: 00 : vinfo->varattno = var->varattno; : vinfo->resno = tle->resno; : vinfo++; : } : } : else if (tle->expr && IsA(tle->expr, PlaceHolderVar)) 0.00 : 621a30: 81 fa 0c 02 00 00 cmp $0x20c,%edx 0.00 : 621a36: 0f 84 14 01 00 00 je 621b50 : itlist->has_ph_vars = false; : itlist->has_non_vars = false; : : /* Find the desired Vars and fill in the index array */ : vinfo = itlist->vars; : foreach(l, tlist) 0.00 : 621a3c: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 621a40: 48 85 c9 test %rcx,%rcx 0.00 : 621a43: 74 43 je 621a88 : { : TargetEntry *tle = (TargetEntry *) lfirst(l); 0.00 : 621a45: 48 8b 31 mov (%rcx),%rsi : : if (tle->expr && IsA(tle->expr, Var)) 0.00 : 621a48: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 621a4c: 48 85 c0 test %rax,%rax 0.00 : 621a4f: 74 eb je 621a3c 0.00 : 621a51: 8b 10 mov (%rax),%edx 0.00 : 621a53: 81 fa 2f 01 00 00 cmp $0x12f,%edx 0.00 : 621a59: 75 d5 jne 621a30 : { : Var *var = (Var *) tle->expr; : : if (var->varno != ignore_rel) 0.00 : 621a5b: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 621a5e: 41 39 d1 cmp %edx,%r9d 0.00 : 621a61: 74 d9 je 621a3c : { : vinfo->varno = var->varno; 0.00 : 621a63: 89 17 mov %edx,(%rdi) : vinfo->varattno = var->varattno; 0.00 : 621a65: 0f b7 40 08 movzwl 0x8(%rax),%eax 0.00 : 621a69: 66 89 47 04 mov %ax,0x4(%rdi) : vinfo->resno = tle->resno; 0.00 : 621a6d: 0f b7 46 10 movzwl 0x10(%rsi),%eax 0.00 : 621a71: 66 89 47 06 mov %ax,0x6(%rdi) : itlist->has_ph_vars = false; : itlist->has_non_vars = false; : : /* Find the desired Vars and fill in the index array */ : vinfo = itlist->vars; : foreach(l, tlist) 0.00 : 621a75: 48 8b 49 08 mov 0x8(%rcx),%rcx : if (var->varno != ignore_rel) : { : vinfo->varno = var->varno; : vinfo->varattno = var->varattno; : vinfo->resno = tle->resno; : vinfo++; 0.00 : 621a79: 48 83 c7 08 add $0x8,%rdi : itlist->has_ph_vars = false; : itlist->has_non_vars = false; : : /* Find the desired Vars and fill in the index array */ : vinfo = itlist->vars; : foreach(l, tlist) 0.00 : 621a7d: 48 85 c9 test %rcx,%rcx 0.00 : 621a80: 75 c3 jne 621a45 0.00 : 621a82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else if (tle->expr && IsA(tle->expr, PlaceHolderVar)) : itlist->has_ph_vars = true; : } : : itlist->num_vars = (vinfo - itlist->vars); 0.00 : 621a88: 4c 29 c7 sub %r8,%rdi 0.00 : 621a8b: 48 c1 ff 03 sar $0x3,%rdi 0.00 : 621a8f: 41 89 7c 24 08 mov %edi,0x8(%r12) : context.root = root; : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621a94: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 621a9b: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; 0.00 : 621aa2: 44 89 4d c8 mov %r9d,-0x38(%rbp) : Index acceptable_rel, : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; 0.00 : 621aa6: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.outer_itlist = outer_itlist; 0.00 : 621aaa: 4c 89 65 b8 mov %r12,-0x48(%rbp) : context.inner_itlist = inner_itlist; 0.00 : 621aae: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 621ab5: 00 : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; 0.00 : 621ab6: 44 89 75 cc mov %r14d,-0x34(%rbp) : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621aba: e8 e1 f2 ff ff callq 620da0 : itlist, : NULL, : resultRelation, : rtoffset); : : pfree(itlist); 0.00 : 621abf: 4c 89 e7 mov %r12,%rdi : context.root = root; : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621ac2: 48 89 c3 mov %rax,%rbx : itlist, : NULL, : resultRelation, : rtoffset); : : pfree(itlist); 0.00 : 621ac5: e8 b6 70 17 00 callq 798b80 : rlist = set_returning_clause_references(root, : rlist, : subplan, : resultrel, : rtoffset); : newRL = lappend(newRL, rlist); 0.00 : 621aca: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 621ad1: 48 89 de mov %rbx,%rsi 0.00 : 621ad4: e8 a7 03 fc ff callq 5e1e80 0.00 : 621ad9: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : * Pass each per-subplan returningList through : * set_returning_clause_references(). : */ : Assert(list_length(splan->returningLists) == list_length(splan->resultRelations)); : Assert(list_length(splan->returningLists) == list_length(splan->plans)); : forthree(lcrl, splan->returningLists, 0.00 : 621ae0: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 621ae4: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 621ae8: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 621aec: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 621af0: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 621af4: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 621af8: 48 83 7d 80 00 cmpq $0x0,-0x80(%rbp) 0.00 : 621afd: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.00 : 621b01: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 621b05: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 621b09: 74 15 je 621b20 0.00 : 621b0b: 48 85 d2 test %rdx,%rdx 0.00 : 621b0e: 74 10 je 621b20 0.00 : 621b10: 48 85 c0 test %rax,%rax 0.00 : 621b13: 0f 85 a7 fe ff ff jne 6219c0 0.00 : 621b19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : subplan, : resultrel, : rtoffset); : newRL = lappend(newRL, rlist); : } : splan->returningLists = newRL; 0.00 : 621b20: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 621b27: 31 c0 xor %eax,%eax 0.00 : 621b29: 48 85 d2 test %rdx,%rdx 0.00 : 621b2c: 49 89 95 88 00 00 00 mov %rdx,0x88(%r13) 0.00 : 621b33: 0f 84 44 fc ff ff je 62177d 0.00 : 621b39: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 621b40: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 621b44: e9 34 fc ff ff jmpq 62177d 0.00 : 621b49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : vinfo->resno = tle->resno; : vinfo++; : } : } : else if (tle->expr && IsA(tle->expr, PlaceHolderVar)) : itlist->has_ph_vars = true; 0.00 : 621b50: 41 c6 44 24 0c 01 movb $0x1,0xc(%r12) 0.00 : 621b56: e9 e1 fe ff ff jmpq 621a3c 0.00 : 621b5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : indexed_tlist *itlist; : tlist_vinfo *vinfo; : ListCell *l; : : /* Create data structure with enough slots for all tlist entries */ : itlist = (indexed_tlist *) 0.00 : 621b60: bf 10 00 00 00 mov $0x10,%edi 0.00 : 621b65: 44 89 8d 58 ff ff ff mov %r9d,-0xa8(%rbp) 0.00 : 621b6c: e8 df 71 17 00 callq 798d50 : itlist->tlist = tlist; : itlist->has_ph_vars = false; : itlist->has_non_vars = false; : : /* Find the desired Vars and fill in the index array */ : vinfo = itlist->vars; 0.00 : 621b71: 4c 8d 40 10 lea 0x10(%rax),%r8 : /* Create data structure with enough slots for all tlist entries */ : itlist = (indexed_tlist *) : palloc(offsetof(indexed_tlist, vars) + : list_length(tlist) * sizeof(tlist_vinfo)); : : itlist->tlist = tlist; 0.00 : 621b75: 48 c7 00 00 00 00 00 movq $0x0,(%rax) : itlist->has_ph_vars = false; 0.00 : 621b7c: c6 40 0c 00 movb $0x0,0xc(%rax) : itlist->has_non_vars = false; 0.00 : 621b80: c6 40 0d 00 movb $0x0,0xd(%rax) : indexed_tlist *itlist; : tlist_vinfo *vinfo; : ListCell *l; : : /* Create data structure with enough slots for all tlist entries */ : itlist = (indexed_tlist *) 0.00 : 621b84: 49 89 c4 mov %rax,%r12 0.00 : 621b87: 44 8b 8d 58 ff ff ff mov -0xa8(%rbp),%r9d : itlist->tlist = tlist; : itlist->has_ph_vars = false; : itlist->has_non_vars = false; : : /* Find the desired Vars and fill in the index array */ : vinfo = itlist->vars; 0.00 : 621b8e: 4c 89 c7 mov %r8,%rdi 0.00 : 621b91: e9 f2 fe ff ff jmpq 621a88 : if (IsA(join, NestLoop)) : { : NestLoop *nl = (NestLoop *) join; : ListCell *lc; : : foreach(lc, nl->nestParams) 0.00 : 621b96: 49 8b 45 70 mov 0x70(%r13),%rax 0.00 : 621b9a: 48 85 c0 test %rax,%rax 0.00 : 621b9d: 0f 84 da fa ff ff je 62167d 0.00 : 621ba3: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 621ba7: 4d 85 e4 test %r12,%r12 0.00 : 621baa: 75 1a jne 621bc6 0.00 : 621bac: e9 cc fa ff ff jmpq 62167d 0.00 : 621bb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 621bb8: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 621bbd: 4d 85 e4 test %r12,%r12 0.00 : 621bc0: 0f 84 b7 fa ff ff je 62167d : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(lc); 0.00 : 621bc6: 49 8b 1c 24 mov (%r12),%rbx : int rtoffset) : { : fix_upper_expr_context context; : : context.root = root; : context.subplan_itlist = subplan_itlist; 0.00 : 621bca: 48 8b 55 a8 mov -0x58(%rbp),%rdx : context.newvarno = newvarno; : context.rtoffset = rtoffset; : return fix_upper_expr_mutator(node, &context); 0.00 : 621bce: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi : : foreach(lc, nl->nestParams) : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(lc); : : nlp->paramval = (Var *) fix_upper_expr(root, 0.00 : 621bd5: 48 8b 7b 08 mov 0x8(%rbx),%rdi : Index newvarno, : int rtoffset) : { : fix_upper_expr_context context; : : context.root = root; 0.00 : 621bd9: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.subplan_itlist = subplan_itlist; 0.00 : 621bdd: 48 89 55 b8 mov %rdx,-0x48(%rbp) : context.newvarno = newvarno; 0.00 : 621be1: c7 45 c0 e9 fd 00 00 movl $0xfde9,-0x40(%rbp) : context.rtoffset = rtoffset; 0.00 : 621be8: 44 89 75 c4 mov %r14d,-0x3c(%rbp) : return fix_upper_expr_mutator(node, &context); 0.00 : 621bec: e8 9f f0 ff ff callq 620c90 : : foreach(lc, nl->nestParams) : { : NestLoopParam *nlp = (NestLoopParam *) lfirst(lc); : : nlp->paramval = (Var *) fix_upper_expr(root, 0.00 : 621bf1: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *) nlp->paramval, : outer_itlist, : OUTER_VAR, : rtoffset); : /* Check we replaced any PlaceHolderVar with simple Var */ : if (!(IsA(nlp->paramval, Var) && 0.00 : 621bf5: 81 38 2f 01 00 00 cmpl $0x12f,(%rax) 0.00 : 621bfb: 75 09 jne 621c06 0.00 : 621bfd: 81 78 04 e9 fd 00 00 cmpl $0xfde9,0x4(%rax) 0.00 : 621c04: 74 b2 je 621bb8 : nlp->paramval->varno == OUTER_VAR)) : elog(ERROR, "NestLoopParam was not reduced to a simple Var"); 0.00 : 621c06: ba 30 bb 89 00 mov $0x89bb30,%edx 0.00 : 621c0b: be 1d 05 00 00 mov $0x51d,%esi 0.00 : 621c10: bf d7 b8 89 00 mov $0x89b8d7,%edi 0.00 : 621c15: e8 06 98 15 00 callq 77b420 0.00 : 621c1a: be 88 b9 89 00 mov $0x89b988,%esi 0.00 : 621c1f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 621c24: 31 c0 xor %eax,%eax 0.00 : 621c26: e8 05 96 15 00 callq 77b230 0.00 : 621c2b: e8 a0 78 e4 ff callq 4694d0 : } : else if (IsA(join, HashJoin)) : { : HashJoin *hj = (HashJoin *) join; : : hj->hashclauses = fix_join_expr(root, 0.00 : 621c30: 49 8b 7d 70 mov 0x70(%r13),%rdi : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 621c34: 48 8b 45 a8 mov -0x58(%rbp),%rax : context.inner_itlist = inner_itlist; 0.00 : 621c38: 48 8b 55 a0 mov -0x60(%rbp),%rdx : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621c3c: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi : Index acceptable_rel, : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; 0.00 : 621c43: 4c 89 7d b0 mov %r15,-0x50(%rbp) : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; 0.00 : 621c47: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : int rtoffset) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; 0.00 : 621c4e: 48 89 45 b8 mov %rax,-0x48(%rbp) : context.inner_itlist = inner_itlist; : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; 0.00 : 621c52: 44 89 75 cc mov %r14d,-0x34(%rbp) : { : fix_join_expr_context context; : : context.root = root; : context.outer_itlist = outer_itlist; : context.inner_itlist = inner_itlist; 0.00 : 621c56: 48 89 55 c0 mov %rdx,-0x40(%rbp) : context.acceptable_rel = acceptable_rel; : context.rtoffset = rtoffset; : return (List *) fix_join_expr_mutator((Node *) clauses, &context); 0.00 : 621c5a: e8 41 f1 ff ff callq 620da0 : } : else if (IsA(join, HashJoin)) : { : HashJoin *hj = (HashJoin *) join; : : hj->hashclauses = fix_join_expr(root, 0.00 : 621c5f: 49 89 45 70 mov %rax,0x70(%r13) 0.00 : 621c63: e9 15 fa ff ff jmpq 62167d : */ : if (splan->plan.lefttree != NULL) : set_upper_references(root, plan, rtoffset); : else : { : splan->plan.targetlist = 0.00 : 621c68: 48 8b 76 28 mov 0x28(%rsi),%rsi 0.00 : 621c6c: e8 7f ef ff ff callq 620bf0 : fix_scan_list(root, splan->plan.targetlist, rtoffset); : splan->plan.qual = 0.00 : 621c71: 49 8b 75 30 mov 0x30(%r13),%rsi : */ : if (splan->plan.lefttree != NULL) : set_upper_references(root, plan, rtoffset); : else : { : splan->plan.targetlist = 0.00 : 621c75: 49 89 45 28 mov %rax,0x28(%r13) : fix_scan_list(root, splan->plan.targetlist, rtoffset); : splan->plan.qual = 0.00 : 621c79: 44 89 f2 mov %r14d,%edx 0.00 : 621c7c: 4c 89 ff mov %r15,%rdi 0.00 : 621c7f: e8 6c ef ff ff callq 620bf0 0.00 : 621c84: 49 89 45 30 mov %rax,0x30(%r13) 0.00 : 621c88: e9 18 fa ff ff jmpq 6216a5 : *lc; : : if (plan->scan.plan.qual != NIL) : return false; : : if (list_length(plan->scan.plan.targetlist) != 0.00 : 621c8d: 49 8b 75 28 mov 0x28(%r13),%rsi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 621c91: 31 c9 xor %ecx,%ecx 0.00 : 621c93: 48 85 f6 test %rsi,%rsi 0.00 : 621c96: 74 03 je 621c9b 0.00 : 621c98: 8b 4e 04 mov 0x4(%rsi),%ecx 0.00 : 621c9b: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 621c9f: 31 d2 xor %edx,%edx 0.00 : 621ca1: 48 85 c0 test %rax,%rax 0.00 : 621ca4: 74 03 je 621ca9 0.00 : 621ca6: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 621ca9: 39 d1 cmp %edx,%ecx 0.00 : 621cab: 0f 85 7a f8 ff ff jne 62152b : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 621cb1: 31 db xor %ebx,%ebx 0.00 : 621cb3: 48 85 f6 test %rsi,%rsi 0.00 : 621cb6: 74 04 je 621cbc 0.00 : 621cb8: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 621cbc: 48 85 c0 test %rax,%rax 0.00 : 621cbf: 0f 84 bb 00 00 00 je 621d80 : list_length(plan->subplan->targetlist)) : return false; /* tlists not same length */ : : attrno = 1; : forboth(lp, plan->scan.plan.targetlist, lc, plan->subplan->targetlist) 0.00 : 621cc5: 48 85 db test %rbx,%rbx 0.00 : 621cc8: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 621ccc: 0f 84 ae 00 00 00 je 621d80 0.00 : 621cd2: 4d 85 e4 test %r12,%r12 0.00 : 621cd5: 0f 84 a5 00 00 00 je 621d80 : { : TargetEntry *ptle = (TargetEntry *) lfirst(lp); 0.00 : 621cdb: 48 8b 13 mov (%rbx),%rdx : TargetEntry *ctle = (TargetEntry *) lfirst(lc); 0.00 : 621cde: 49 8b 0c 24 mov (%r12),%rcx : : if (ptle->resjunk != ctle->resjunk) 0.00 : 621ce2: 0f b6 42 2a movzbl 0x2a(%rdx),%eax 0.00 : 621ce6: 3a 41 2a cmp 0x2a(%rcx),%al 0.00 : 621ce9: 0f 85 3c f8 ff ff jne 62152b : /* : * We accept either a Var referencing the corresponding element of the : * subplan tlist, or a Const equaling the subplan element. See : * generate_setop_tlist() for motivation. : */ : if (ptle->expr && IsA(ptle->expr, Var)) 0.00 : 621cef: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 621cf3: c7 45 9c 01 00 00 00 movl $0x1,-0x64(%rbp) 0.00 : 621cfa: 48 85 ff test %rdi,%rdi 0.00 : 621cfd: 75 66 jne 621d65 0.00 : 621cff: e9 27 f8 ff ff jmpq 62152b 0.00 : 621d04: 0f 1f 40 00 nopl 0x0(%rax) : Assert(var->varno == plan->scan.scanrelid); : Assert(var->varlevelsup == 0); : if (var->varattno != attrno) : return false; /* out of order */ : } : else if (ptle->expr && IsA(ptle->expr, Const)) 0.00 : 621d08: 3d 30 01 00 00 cmp $0x130,%eax 0.00 : 621d0d: 0f 1f 00 nopl (%rax) 0.00 : 621d10: 0f 85 11 f8 ff ff jne 621527 : { : if (!equal(ptle->expr, ctle->expr)) 0.00 : 621d16: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : 621d1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 621d20: e8 ab 93 fc ff callq 5eb0d0 0.00 : 621d25: 84 c0 test %al,%al 0.00 : 621d27: 0f 84 fa f7 ff ff je 621527 : if (list_length(plan->scan.plan.targetlist) != : list_length(plan->subplan->targetlist)) : return false; /* tlists not same length */ : : attrno = 1; : forboth(lp, plan->scan.plan.targetlist, lc, plan->subplan->targetlist) 0.00 : 621d2d: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 621d31: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 621d36: 48 85 db test %rbx,%rbx 0.00 : 621d39: 74 45 je 621d80 0.00 : 621d3b: 4d 85 e4 test %r12,%r12 0.00 : 621d3e: 74 40 je 621d80 : { : TargetEntry *ptle = (TargetEntry *) lfirst(lp); 0.00 : 621d40: 48 8b 13 mov (%rbx),%rdx : TargetEntry *ctle = (TargetEntry *) lfirst(lc); 0.00 : 621d43: 49 8b 0c 24 mov (%r12),%rcx : : if (ptle->resjunk != ctle->resjunk) 0.00 : 621d47: 0f b6 42 2a movzbl 0x2a(%rdx),%eax 0.00 : 621d4b: 3a 41 2a cmp 0x2a(%rcx),%al 0.00 : 621d4e: 0f 85 d3 f7 ff ff jne 621527 : /* : * We accept either a Var referencing the corresponding element of the : * subplan tlist, or a Const equaling the subplan element. See : * generate_setop_tlist() for motivation. : */ : if (ptle->expr && IsA(ptle->expr, Var)) 0.00 : 621d54: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 621d58: 48 85 ff test %rdi,%rdi 0.00 : 621d5b: 0f 84 c6 f7 ff ff je 621527 : return false; : } : else : return false; : : attrno++; 0.00 : 621d61: 83 45 9c 01 addl $0x1,-0x64(%rbp) : /* : * We accept either a Var referencing the corresponding element of the : * subplan tlist, or a Const equaling the subplan element. See : * generate_setop_tlist() for motivation. : */ : if (ptle->expr && IsA(ptle->expr, Var)) 0.00 : 621d65: 8b 07 mov (%rdi),%eax 0.00 : 621d67: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 621d6c: 75 9a jne 621d08 : { : Var *var = (Var *) ptle->expr; : : Assert(var->varno == plan->scan.scanrelid); : Assert(var->varlevelsup == 0); : if (var->varattno != attrno) 0.00 : 621d6e: 0f bf 47 08 movswl 0x8(%rdi),%eax 0.00 : 621d72: 3b 45 9c cmp -0x64(%rbp),%eax 0.00 : 621d75: 74 b6 je 621d2d 0.00 : 621d77: e9 ab f7 ff ff jmpq 621527 0.00 : 621d7c: 0f 1f 40 00 nopl 0x0(%rax) : * We can omit the SubqueryScan node and just pull up the subplan. : */ : ListCell *lp, : *lc; : : result = plan->subplan; 0.00 : 621d80: 4d 8b 6d 68 mov 0x68(%r13),%r13 : : /* We have to be sure we don't lose any initplans */ : result->initPlan = list_concat(plan->scan.plan.initPlan, 0.00 : 621d84: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 621d8b: 49 8b 75 48 mov 0x48(%r13),%rsi 0.00 : 621d8f: 48 8b 78 48 mov 0x48(%rax),%rdi 0.00 : 621d93: e8 28 08 fc ff callq 5e25c0 0.00 : 621d98: 49 89 45 48 mov %rax,0x48(%r13) : * We also have to transfer the SubqueryScan's result-column names : * into the subplan, else columns sent to client will be improperly : * labeled if this is the topmost plan level. Copy the "source : * column" information too. : */ : forboth(lp, plan->scan.plan.targetlist, lc, result->targetlist) 0.00 : 621d9c: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 621da3: 31 ff xor %edi,%edi 0.00 : 621da5: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 621da9: 48 85 c0 test %rax,%rax 0.00 : 621dac: 74 04 je 621db2 0.00 : 621dae: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 621db2: 49 8b 45 28 mov 0x28(%r13),%rax 0.00 : 621db6: 48 85 c0 test %rax,%rax 0.00 : 621db9: 0f 84 a5 f5 ff ff je 621364 0.00 : 621dbf: 48 85 ff test %rdi,%rdi 0.00 : 621dc2: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 621dc6: 0f 84 98 f5 ff ff je 621364 0.00 : 621dcc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 621dd0: 48 85 f6 test %rsi,%rsi 0.00 : 621dd3: 0f 84 8b f5 ff ff je 621364 : { : TargetEntry *ptle = (TargetEntry *) lfirst(lp); 0.00 : 621dd9: 48 8b 17 mov (%rdi),%rdx : TargetEntry *ctle = (TargetEntry *) lfirst(lc); 0.00 : 621ddc: 48 8b 0e mov (%rsi),%rcx : : ctle->resname = ptle->resname; 0.00 : 621ddf: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 621de3: 48 89 41 18 mov %rax,0x18(%rcx) : ctle->resorigtbl = ptle->resorigtbl; 0.00 : 621de7: 8b 42 24 mov 0x24(%rdx),%eax 0.00 : 621dea: 89 41 24 mov %eax,0x24(%rcx) : ctle->resorigcol = ptle->resorigcol; 0.00 : 621ded: 0f b7 42 28 movzwl 0x28(%rdx),%eax 0.00 : 621df1: 66 89 41 28 mov %ax,0x28(%rcx) : * We also have to transfer the SubqueryScan's result-column names : * into the subplan, else columns sent to client will be improperly : * labeled if this is the topmost plan level. Copy the "source : * column" information too. : */ : forboth(lp, plan->scan.plan.targetlist, lc, result->targetlist) 0.00 : 621df5: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 621df9: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 621dfd: 48 85 ff test %rdi,%rdi 0.00 : 621e00: 75 ce jne 621dd0 0.00 : 621e02: e9 5d f5 ff ff jmpq 621364 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/clauses.c:4087 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000062cde0 : : static Expr * : simplify_function(Oid funcid, Oid result_type, int32 result_typmod, : Oid result_collid, Oid input_collid, List **args_p, : bool funcvariadic, bool process_args, bool allow_non_const, : eval_const_expressions_context *context) : { 0.00 : 62cde0: 55 push %rbp 0.00 : 62cde1: 48 89 e5 mov %rsp,%rbp 0.00 : 62cde4: 41 57 push %r15 0.00 : 62cde6: 41 56 push %r14 0.00 : 62cde8: 41 55 push %r13 0.00 : 62cdea: 41 54 push %r12 0.00 : 62cdec: 4d 89 cc mov %r9,%r12 0.00 : 62cdef: 53 push %rbx 0.00 : 62cdf0: 48 81 ec c8 00 00 00 sub $0xc8,%rsp 0.00 : 62cdf7: 89 95 24 ff ff ff mov %edx,-0xdc(%rbp) 0.00 : 62cdfd: 0f b6 55 20 movzbl 0x20(%rbp),%edx 0.00 : 62ce01: 0f b6 45 10 movzbl 0x10(%rbp),%eax 0.00 : 62ce05: 89 bd 2c ff ff ff mov %edi,-0xd4(%rbp) 0.00 : 62ce0b: 89 b5 28 ff ff ff mov %esi,-0xd8(%rbp) 0.00 : 62ce11: 89 8d 20 ff ff ff mov %ecx,-0xe0(%rbp) : * : * Note: the allow_non_const flag suppresses both the second and third : * strategies; so if !allow_non_const, simplify_function can only return a : * Const or NULL. Argument-list rewriting happens anyway, though. : */ : func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); 0.00 : 62ce17: 89 fe mov %edi,%esi : static Expr * : simplify_function(Oid funcid, Oid result_type, int32 result_typmod, : Oid result_collid, Oid input_collid, List **args_p, : bool funcvariadic, bool process_args, bool allow_non_const, : eval_const_expressions_context *context) : { 0.00 : 62ce19: 44 89 85 1c ff ff ff mov %r8d,-0xe4(%rbp) : * : * Note: the allow_non_const flag suppresses both the second and third : * strategies; so if !allow_non_const, simplify_function can only return a : * Const or NULL. Argument-list rewriting happens anyway, though. : */ : func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); 0.00 : 62ce20: 31 c9 xor %ecx,%ecx 0.00 : 62ce22: 45 31 c0 xor %r8d,%r8d : static Expr * : simplify_function(Oid funcid, Oid result_type, int32 result_typmod, : Oid result_collid, Oid input_collid, List **args_p, : bool funcvariadic, bool process_args, bool allow_non_const, : eval_const_expressions_context *context) : { 0.00 : 62ce25: 88 95 1a ff ff ff mov %dl,-0xe6(%rbp) : * : * Note: the allow_non_const flag suppresses both the second and third : * strategies; so if !allow_non_const, simplify_function can only return a : * Const or NULL. Argument-list rewriting happens anyway, though. : */ : func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); 0.00 : 62ce2b: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 62ce30: 31 d2 xor %edx,%edx : static Expr * : simplify_function(Oid funcid, Oid result_type, int32 result_typmod, : Oid result_collid, Oid input_collid, List **args_p, : bool funcvariadic, bool process_args, bool allow_non_const, : eval_const_expressions_context *context) : { 0.00 : 62ce32: 88 85 1b ff ff ff mov %al,-0xe5(%rbp) 0.00 : 62ce38: 0f b6 5d 18 movzbl 0x18(%rbp),%ebx : List *args = *args_p; 0.00 : 62ce3c: 4d 8b 39 mov (%r9),%r15 : * : * Note: the allow_non_const flag suppresses both the second and third : * strategies; so if !allow_non_const, simplify_function can only return a : * Const or NULL. Argument-list rewriting happens anyway, though. : */ : func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); 0.00 : 62ce3f: e8 7c 4e 14 00 callq 771cc0 : if (!HeapTupleIsValid(func_tuple)) 0.00 : 62ce44: 48 85 c0 test %rax,%rax : * : * Note: the allow_non_const flag suppresses both the second and third : * strategies; so if !allow_non_const, simplify_function can only return a : * Const or NULL. Argument-list rewriting happens anyway, though. : */ : func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); 0.00 : 62ce47: 49 89 c6 mov %rax,%r14 : if (!HeapTupleIsValid(func_tuple)) 0.00 : 62ce4a: 0f 84 b0 04 00 00 je 62d300 : elog(ERROR, "cache lookup failed for function %u", funcid); : func_form = (Form_pg_proc) GETSTRUCT(func_tuple); 0.00 : 62ce50: 48 8b 50 10 mov 0x10(%rax),%rdx : * Process the function arguments, unless the caller did it already. : * : * Here we must deal with named or defaulted arguments, and then : * recursively apply eval_const_expressions to the whole argument list. : */ : if (process_args) 0.00 : 62ce54: 84 db test %bl,%bl : * Const or NULL. Argument-list rewriting happens anyway, though. : */ : func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); : if (!HeapTupleIsValid(func_tuple)) : elog(ERROR, "cache lookup failed for function %u", funcid); : func_form = (Form_pg_proc) GETSTRUCT(func_tuple); 0.00 : 62ce56: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 62ce5a: 4c 8d 2c 02 lea (%rdx,%rax,1),%r13 : * Process the function arguments, unless the caller did it already. : * : * Here we must deal with named or defaulted arguments, and then : * recursively apply eval_const_expressions to the whole argument list. : */ : if (process_args) 0.00 : 62ce5e: 4c 89 ea mov %r13,%rdx 0.00 : 62ce61: 0f 85 d9 00 00 00 jne 62cf40 : FuncExpr *newexpr; : : /* : * Can't simplify if it returns a set. : */ : if (funcform->proretset) 0.00 : 62ce67: 80 7a 61 00 cmpb $0x0,0x61(%rdx) 0.00 : 62ce6b: 75 73 jne 62cee0 : * doesn't know how to extract type info from a RECORD constant, and in : * the case of a NULL function result there doesn't seem to be any clean : * way to fix that. In view of the likelihood of there being still other : * gotchas, seems best to leave the function call unreduced. : */ : if (funcform->prorettype == RECORDOID) 0.00 : 62ce6d: 81 7a 68 c9 08 00 00 cmpl $0x8c9,0x68(%rdx) 0.00 : 62ce74: 74 6a je 62cee0 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 62ce76: 4d 85 ff test %r15,%r15 0.00 : 62ce79: 74 4a je 62cec5 0.00 : 62ce7b: 49 8b 4f 08 mov 0x8(%r15),%rcx : return NULL; : : /* : * Check for constant inputs and especially constant-NULL inputs. : */ : foreach(arg, args) 0.00 : 62ce7f: 48 85 c9 test %rcx,%rcx 0.00 : 62ce82: 74 41 je 62cec5 0.00 : 62ce84: 31 f6 xor %esi,%esi 0.00 : 62ce86: 31 ff xor %edi,%edi 0.00 : 62ce88: eb 14 jmp 62ce9e 0.00 : 62ce8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 62ce90: 48 8b 49 08 mov 0x8(%rcx),%rcx : { : if (IsA(lfirst(arg), Const)) 0.00 : 62ce94: bf 01 00 00 00 mov $0x1,%edi : return NULL; : : /* : * Check for constant inputs and especially constant-NULL inputs. : */ : foreach(arg, args) 0.00 : 62ce99: 48 85 c9 test %rcx,%rcx 0.00 : 62ce9c: 74 18 je 62ceb6 : { : if (IsA(lfirst(arg), Const)) 0.00 : 62ce9e: 48 8b 01 mov (%rcx),%rax 0.00 : 62cea1: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 62cea7: 75 e7 jne 62ce90 : return NULL; : : /* : * Check for constant inputs and especially constant-NULL inputs. : */ : foreach(arg, args) 0.00 : 62cea9: 48 8b 49 08 mov 0x8(%rcx),%rcx : { : if (IsA(lfirst(arg), Const)) : has_null_input |= ((Const *) lfirst(arg))->constisnull; 0.00 : 62cead: 40 0a 70 20 or 0x20(%rax),%sil : return NULL; : : /* : * Check for constant inputs and especially constant-NULL inputs. : */ : foreach(arg, args) 0.00 : 62ceb1: 48 85 c9 test %rcx,%rcx 0.00 : 62ceb4: 75 e8 jne 62ce9e : * If the function is strict and has a constant-NULL input, it will never : * be called at all, so we can replace the call by a NULL constant, even : * if there are other inputs that aren't constant, and even if the : * function is not otherwise immutable. : */ : if (funcform->proisstrict && has_null_input) /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/clauses.c:4087 100.00 : 62ceb6: 80 7a 60 00 cmpb $0x0,0x60(%rdx) 0.00 : 62ceba: 0f 85 c0 00 00 00 jne 62cf80 : /* : * Otherwise, can simplify only if all inputs are constants. (For a : * non-strict function, constant NULL inputs are treated the same as : * constant non-NULL inputs.) : */ : if (has_nonconst_input) 0.00 : 62cec0: 40 84 ff test %dil,%dil 0.00 : 62cec3: 75 1b jne 62cee0 : * purposes of estimation, we consider it okay to simplify functions that : * are merely stable; the risk that the result might change from planning : * time to execution time is worth taking in preference to not being able : * to estimate the value at all. : */ : if (funcform->provolatile == PROVOLATILE_IMMUTABLE) 0.00 : 62cec5: 0f b6 42 62 movzbl 0x62(%rdx),%eax 0.00 : 62cec9: 3c 69 cmp $0x69,%al 0.00 : 62cecb: 0f 84 77 01 00 00 je 62d048 : /* okay */ ; : else if (context->estimate && funcform->provolatile == PROVOLATILE_STABLE) 0.00 : 62ced1: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 62ced5: 80 7a 20 00 cmpb $0x0,0x20(%rdx) 0.00 : 62ced9: 0f 85 61 01 00 00 jne 62d040 0.00 : 62cedf: 90 nop : newexpr->funccollid = result_collid; /* doesn't matter */ : newexpr->inputcollid = input_collid; : newexpr->args = args; : newexpr->location = -1; : : return evaluate_expr((Expr *) newexpr, result_type, result_typmod, 0.00 : 62cee0: 31 db xor %ebx,%ebx 0.00 : 62cee2: b8 01 00 00 00 mov $0x1,%eax : newexpr = evaluate_function(funcid, result_type, result_typmod, : result_collid, input_collid, : args, funcvariadic, : func_tuple, context); : : if (!newexpr && allow_non_const && OidIsValid(func_form->protransform)) 0.00 : 62cee7: 80 bd 1a ff ff ff 00 cmpb $0x0,-0xe6(%rbp) 0.00 : 62ceee: 74 2a je 62cf1a 0.00 : 62cef0: 84 c0 test %al,%al 0.00 : 62cef2: 74 26 je 62cf1a 0.00 : 62cef4: 41 8b 45 58 mov 0x58(%r13),%eax 0.00 : 62cef8: 85 c0 test %eax,%eax 0.00 : 62cefa: 0f 85 b0 00 00 00 jne 62cfb0 : Oid input_collid, List *args, : bool funcvariadic, : HeapTuple func_tuple, : eval_const_expressions_context *context) : { : Form_pg_proc funcform = (Form_pg_proc) GETSTRUCT(func_tuple); 0.00 : 62cf00: 49 8b 56 10 mov 0x10(%r14),%rdx 0.00 : 62cf04: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 62cf08: 4c 8d 24 02 lea (%rdx,%rax,1),%r12 : : /* : * Forget it if the function is not SQL-language or has other showstopper : * properties. (The nargs check is just paranoia.) : */ : if (funcform->prolang != SQLlanguageId || 0.00 : 62cf0c: 41 83 7c 24 48 0e cmpl $0xe,0x48(%r12) 0.00 : 62cf12: 0f 84 af 01 00 00 je 62d0c7 : : /* Here if func is not inlinable: release temp memory and return NULL */ : fail: : MemoryContextSwitchTo(oldcxt); : MemoryContextDelete(mycxt); : error_context_stack = sqlerrcontext.previous; 0.00 : 62cf18: 31 db xor %ebx,%ebx : if (!newexpr && allow_non_const) : newexpr = inline_function(funcid, result_type, result_collid, : input_collid, args, funcvariadic, : func_tuple, context); : : ReleaseSysCache(func_tuple); 0.00 : 62cf1a: 4c 89 f7 mov %r14,%rdi 0.00 : 62cf1d: e8 8e 4d 14 00 callq 771cb0 : : return newexpr; : } 0.00 : 62cf22: 48 81 c4 c8 00 00 00 add $0xc8,%rsp 0.00 : 62cf29: 48 89 d8 mov %rbx,%rax 0.00 : 62cf2c: 5b pop %rbx 0.00 : 62cf2d: 41 5c pop %r12 0.00 : 62cf2f: 41 5d pop %r13 0.00 : 62cf31: 41 5e pop %r14 0.00 : 62cf33: 41 5f pop %r15 0.00 : 62cf35: c9 leaveq 0.00 : 62cf36: c3 retq 0.00 : 62cf37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 62cf3e: 00 00 : * Here we must deal with named or defaulted arguments, and then : * recursively apply eval_const_expressions to the whole argument list. : */ : if (process_args) : { : args = expand_function_arguments(args, result_type, func_tuple); 0.00 : 62cf40: 8b b5 28 ff ff ff mov -0xd8(%rbp),%esi 0.00 : 62cf46: 4c 89 ff mov %r15,%rdi 0.00 : 62cf49: 4c 89 f2 mov %r14,%rdx 0.00 : 62cf4c: e8 2f e6 ff ff callq 62b580 : args = (List *) expression_tree_mutator((Node *) args, 0.00 : 62cf51: 48 8b 55 28 mov 0x28(%rbp),%rdx : * Here we must deal with named or defaulted arguments, and then : * recursively apply eval_const_expressions to the whole argument list. : */ : if (process_args) : { : args = expand_function_arguments(args, result_type, func_tuple); 0.00 : 62cf55: 48 89 c7 mov %rax,%rdi : args = (List *) expression_tree_mutator((Node *) args, 0.00 : 62cf58: be 10 d7 62 00 mov $0x62d710,%esi 0.00 : 62cf5d: e8 2e 30 fb ff callq 5dff90 : eval_const_expressions_mutator, : (void *) context); : /* Argument processing done, give it back to the caller */ : *args_p = args; 0.00 : 62cf62: 49 89 04 24 mov %rax,(%r12) 0.00 : 62cf66: 49 8b 56 10 mov 0x10(%r14),%rdx : * recursively apply eval_const_expressions to the whole argument list. : */ : if (process_args) : { : args = expand_function_arguments(args, result_type, func_tuple); : args = (List *) expression_tree_mutator((Node *) args, 0.00 : 62cf6a: 49 89 c7 mov %rax,%r15 : eval_const_expressions_mutator, : (void *) context); : /* Argument processing done, give it back to the caller */ : *args_p = args; 0.00 : 62cf6d: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 62cf71: 48 01 c2 add %rax,%rdx 0.00 : 62cf74: e9 ee fe ff ff jmpq 62ce67 0.00 : 62cf79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * If the function is strict and has a constant-NULL input, it will never : * be called at all, so we can replace the call by a NULL constant, even : * if there are other inputs that aren't constant, and even if the : * function is not otherwise immutable. : */ : if (funcform->proisstrict && has_null_input) 0.00 : 62cf80: 40 84 f6 test %sil,%sil 0.00 : 62cf83: 0f 84 37 ff ff ff je 62cec0 : return (Expr *) makeNullConst(result_type, result_typmod, 0.00 : 62cf89: 8b 95 20 ff ff ff mov -0xe0(%rbp),%edx 0.00 : 62cf8f: 8b b5 24 ff ff ff mov -0xdc(%rbp),%esi 0.00 : 62cf95: 8b bd 28 ff ff ff mov -0xd8(%rbp),%edi 0.00 : 62cf9b: e8 c0 4b fc ff callq 5f1b60 0.00 : 62cfa0: 48 85 c0 test %rax,%rax 0.00 : 62cfa3: 48 89 c3 mov %rax,%rbx 0.00 : 62cfa6: 0f 94 c0 sete %al 0.00 : 62cfa9: e9 39 ff ff ff jmpq 62cee7 0.00 : 62cfae: 66 90 xchg %ax,%ax : * function regardless of how the function is actually being invoked. : */ : FuncExpr fexpr; : : fexpr.xpr.type = T_FuncExpr; : fexpr.funcid = funcid; 0.00 : 62cfb0: 8b 95 2c ff ff ff mov -0xd4(%rbp),%edx : fexpr.funcresulttype = result_type; 0.00 : 62cfb6: 8b 85 28 ff ff ff mov -0xd8(%rbp),%eax : fexpr.funccollid = result_collid; : fexpr.inputcollid = input_collid; : fexpr.args = args; : fexpr.location = -1; : : newexpr = (Expr *) 0.00 : 62cfbc: 31 f6 xor %esi,%esi : * use this approach to present a uniform interface to the transform : * function regardless of how the function is actually being invoked. : */ : FuncExpr fexpr; : : fexpr.xpr.type = T_FuncExpr; 0.00 : 62cfbe: c7 85 60 ff ff ff 35 movl $0x135,-0xa0(%rbp) 0.00 : 62cfc5: 01 00 00 : fexpr.funcid = funcid; 0.00 : 62cfc8: 89 95 64 ff ff ff mov %edx,-0x9c(%rbp) : fexpr.funcresulttype = result_type; 0.00 : 62cfce: 89 85 68 ff ff ff mov %eax,-0x98(%rbp) : fexpr.funcretset = func_form->proretset; : fexpr.funcvariadic = funcvariadic; 0.00 : 62cfd4: 0f b6 95 1b ff ff ff movzbl -0xe5(%rbp),%edx : FuncExpr fexpr; : : fexpr.xpr.type = T_FuncExpr; : fexpr.funcid = funcid; : fexpr.funcresulttype = result_type; : fexpr.funcretset = func_form->proretset; 0.00 : 62cfdb: 41 0f b6 45 61 movzbl 0x61(%r13),%eax : fexpr.funcvariadic = funcvariadic; : fexpr.funcformat = COERCE_EXPLICIT_CALL; 0.00 : 62cfe0: c7 85 70 ff ff ff 00 movl $0x0,-0x90(%rbp) 0.00 : 62cfe7: 00 00 00 : fexpr.funccollid = result_collid; : fexpr.inputcollid = input_collid; : fexpr.args = args; 0.00 : 62cfea: 4c 89 7d 80 mov %r15,-0x80(%rbp) : fexpr.location = -1; 0.00 : 62cfee: c7 45 88 ff ff ff ff movl $0xffffffff,-0x78(%rbp) : FuncExpr fexpr; : : fexpr.xpr.type = T_FuncExpr; : fexpr.funcid = funcid; : fexpr.funcresulttype = result_type; : fexpr.funcretset = func_form->proretset; 0.00 : 62cff5: 88 85 6c ff ff ff mov %al,-0x94(%rbp) : fexpr.funcvariadic = funcvariadic; 0.00 : 62cffb: 88 95 6d ff ff ff mov %dl,-0x93(%rbp) : fexpr.funcformat = COERCE_EXPLICIT_CALL; : fexpr.funccollid = result_collid; 0.00 : 62d001: 8b 85 20 ff ff ff mov -0xe0(%rbp),%eax : fexpr.inputcollid = input_collid; 0.00 : 62d007: 8b 95 1c ff ff ff mov -0xe4(%rbp),%edx : fexpr.funcid = funcid; : fexpr.funcresulttype = result_type; : fexpr.funcretset = func_form->proretset; : fexpr.funcvariadic = funcvariadic; : fexpr.funcformat = COERCE_EXPLICIT_CALL; : fexpr.funccollid = result_collid; 0.00 : 62d00d: 89 85 74 ff ff ff mov %eax,-0x8c(%rbp) : fexpr.inputcollid = input_collid; 0.00 : 62d013: 89 95 78 ff ff ff mov %edx,-0x88(%rbp) : fexpr.args = args; : fexpr.location = -1; : : newexpr = (Expr *) 0.00 : 62d019: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 62d020: 41 8b 7d 58 mov 0x58(%r13),%edi 0.00 : 62d024: e8 27 3c 15 00 callq 780c50 : DatumGetPointer(OidFunctionCall1(func_form->protransform, : PointerGetDatum(&fexpr))); : } : : if (!newexpr && allow_non_const) 0.00 : 62d029: 48 85 c0 test %rax,%rax : fexpr.funccollid = result_collid; : fexpr.inputcollid = input_collid; : fexpr.args = args; : fexpr.location = -1; : : newexpr = (Expr *) 0.00 : 62d02c: 48 89 c3 mov %rax,%rbx : DatumGetPointer(OidFunctionCall1(func_form->protransform, : PointerGetDatum(&fexpr))); : } : : if (!newexpr && allow_non_const) 0.00 : 62d02f: 0f 85 e5 fe ff ff jne 62cf1a 0.00 : 62d035: e9 c6 fe ff ff jmpq 62cf00 0.00 : 62d03a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * time to execution time is worth taking in preference to not being able : * to estimate the value at all. : */ : if (funcform->provolatile == PROVOLATILE_IMMUTABLE) : /* okay */ ; : else if (context->estimate && funcform->provolatile == PROVOLATILE_STABLE) 0.00 : 62d040: 3c 73 cmp $0x73,%al 0.00 : 62d042: 0f 85 98 fe ff ff jne 62cee0 : /* : * OK, looks like we can simplify this operator/function. : * : * Build a new FuncExpr node containing the already-simplified arguments. : */ : newexpr = makeNode(FuncExpr); 0.00 : 62d048: 48 8b 3d 11 d8 58 00 mov 0x58d811(%rip),%rdi # bba860 0.00 : 62d04f: be 30 00 00 00 mov $0x30,%esi 0.00 : 62d054: e8 b7 bd 16 00 callq 798e10 0.00 : 62d059: c7 00 35 01 00 00 movl $0x135,(%rax) 0.00 : 62d05f: 48 89 c7 mov %rax,%rdi : newexpr->funcid = funcid; 0.00 : 62d062: 8b 85 2c ff ff ff mov -0xd4(%rbp),%eax 0.00 : 62d068: 89 47 04 mov %eax,0x4(%rdi) : newexpr->funcresulttype = result_type; 0.00 : 62d06b: 8b 95 28 ff ff ff mov -0xd8(%rbp),%edx : newexpr->funcretset = false; 0.00 : 62d071: c6 47 0c 00 movb $0x0,0xc(%rdi) : * : * Build a new FuncExpr node containing the already-simplified arguments. : */ : newexpr = makeNode(FuncExpr); : newexpr->funcid = funcid; : newexpr->funcresulttype = result_type; 0.00 : 62d075: 89 57 08 mov %edx,0x8(%rdi) : newexpr->funcretset = false; : newexpr->funcvariadic = funcvariadic; 0.00 : 62d078: 0f b6 85 1b ff ff ff movzbl -0xe5(%rbp),%eax : newexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */ 0.00 : 62d07f: c7 47 10 00 00 00 00 movl $0x0,0x10(%rdi) : */ : newexpr = makeNode(FuncExpr); : newexpr->funcid = funcid; : newexpr->funcresulttype = result_type; : newexpr->funcretset = false; : newexpr->funcvariadic = funcvariadic; 0.00 : 62d086: 88 47 0d mov %al,0xd(%rdi) : newexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */ : newexpr->funccollid = result_collid; /* doesn't matter */ 0.00 : 62d089: 8b 95 20 ff ff ff mov -0xe0(%rbp),%edx 0.00 : 62d08f: 89 57 14 mov %edx,0x14(%rdi) : newexpr->inputcollid = input_collid; 0.00 : 62d092: 8b 85 1c ff ff ff mov -0xe4(%rbp),%eax : newexpr->args = args; : newexpr->location = -1; : : return evaluate_expr((Expr *) newexpr, result_type, result_typmod, 0.00 : 62d098: 89 d1 mov %edx,%ecx : newexpr->funcretset = false; : newexpr->funcvariadic = funcvariadic; : newexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */ : newexpr->funccollid = result_collid; /* doesn't matter */ : newexpr->inputcollid = input_collid; : newexpr->args = args; 0.00 : 62d09a: 4c 89 7f 20 mov %r15,0x20(%rdi) : newexpr->location = -1; 0.00 : 62d09e: c7 47 28 ff ff ff ff movl $0xffffffff,0x28(%rdi) : newexpr->funcresulttype = result_type; : newexpr->funcretset = false; : newexpr->funcvariadic = funcvariadic; : newexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */ : newexpr->funccollid = result_collid; /* doesn't matter */ : newexpr->inputcollid = input_collid; 0.00 : 62d0a5: 89 47 18 mov %eax,0x18(%rdi) : newexpr->args = args; : newexpr->location = -1; : : return evaluate_expr((Expr *) newexpr, result_type, result_typmod, 0.00 : 62d0a8: 8b 95 24 ff ff ff mov -0xdc(%rbp),%edx 0.00 : 62d0ae: 8b b5 28 ff ff ff mov -0xd8(%rbp),%esi 0.00 : 62d0b4: e8 f7 e5 ff ff callq 62b6b0 0.00 : 62d0b9: 48 85 c0 test %rax,%rax 0.00 : 62d0bc: 48 89 c3 mov %rax,%rbx 0.00 : 62d0bf: 0f 94 c0 sete %al 0.00 : 62d0c2: e9 20 fe ff ff jmpq 62cee7 : : /* : * Forget it if the function is not SQL-language or has other showstopper : * properties. (The nargs check is just paranoia.) : */ : if (funcform->prolang != SQLlanguageId || 0.00 : 62d0c7: 41 80 7c 24 5e 00 cmpb $0x0,0x5e(%r12) 0.00 : 62d0cd: 0f 85 45 fe ff ff jne 62cf18 0.00 : 62d0d3: 41 80 7c 24 61 00 cmpb $0x0,0x61(%r12) 0.00 : 62d0d9: 0f 85 39 fe ff ff jne 62cf18 0.00 : 62d0df: 41 81 7c 24 68 c9 08 cmpl $0x8c9,0x68(%r12) 0.00 : 62d0e6: 00 00 0.00 : 62d0e8: 0f 84 2a fe ff ff je 62cf18 0.00 : 62d0ee: be 1a 00 00 00 mov $0x1a,%esi 0.00 : 62d0f3: 4c 89 f7 mov %r14,%rdi 0.00 : 62d0f6: e8 a5 1c e4 ff callq 46eda0 0.00 : 62d0fb: 84 c0 test %al,%al 0.00 : 62d0fd: 0f 84 15 fe ff ff je 62cf18 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 62d103: 31 d2 xor %edx,%edx 0.00 : 62d105: 4d 85 ff test %r15,%r15 0.00 : 62d108: 41 0f b7 44 24 64 movzwl 0x64(%r12),%eax 0.00 : 62d10e: 74 04 je 62d114 0.00 : 62d110: 41 8b 57 04 mov 0x4(%r15),%edx 0.00 : 62d114: 98 cwtl 0.00 : 62d115: 39 d0 cmp %edx,%eax 0.00 : 62d117: 0f 85 fb fd ff ff jne 62cf18 : !heap_attisnull(func_tuple, Anum_pg_proc_proconfig) || : funcform->pronargs != list_length(args)) : return NULL; : : /* Check for recursive function, and give up trying to expand if so */ : if (list_member_oid(context->active_fns, funcid)) 0.00 : 62d11d: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 62d121: 8b b5 2c ff ff ff mov -0xd4(%rbp),%esi 0.00 : 62d127: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 62d12b: e8 70 44 fb ff callq 5e15a0 0.00 : 62d130: 84 c0 test %al,%al 0.00 : 62d132: 0f 85 e0 fd ff ff jne 62cf18 : return NULL; : : /* Check permission to call function (fail later, if not) */ : if (pg_proc_aclcheck(funcid, GetUserId(), ACL_EXECUTE) != ACLCHECK_OK) 0.00 : 62d138: e8 73 7e 15 00 callq 784fb0 0.00 : 62d13d: 8b bd 2c ff ff ff mov -0xd4(%rbp),%edi 0.00 : 62d143: 89 c6 mov %eax,%esi 0.00 : 62d145: ba 80 00 00 00 mov $0x80,%edx 0.00 : 62d14a: e8 c1 59 ec ff callq 4f2b10 0.00 : 62d14f: 85 c0 test %eax,%eax 0.00 : 62d151: 0f 85 c1 fd ff ff jne 62cf18 : return NULL; : : /* Check whether a plugin wants to hook function entry/exit */ : if (FmgrHookIsNeeded(funcid)) 0.00 : 62d157: 48 8b 05 2a ca 58 00 mov 0x58ca2a(%rip),%rax # bb9b88 0.00 : 62d15e: 48 85 c0 test %rax,%rax 0.00 : 62d161: 0f 85 2a 04 00 00 jne 62d591 : : /* : * Make a temporary memory context, so that we don't leak all the stuff : * that parsing might create. : */ : mycxt = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 62d167: 48 8b 3d f2 d6 58 00 mov 0x58d6f2(%rip),%rdi # bba860 0.00 : 62d16e: 31 d2 xor %edx,%edx 0.00 : 62d170: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 62d176: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 62d17b: be 64 c7 89 00 mov $0x89c764,%esi 0.00 : 62d180: e8 0b ae 16 00 callq 797f90 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 62d185: 48 8b 15 d4 d6 58 00 mov 0x58d6d4(%rip),%rdx # bba860 : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : oldcxt = MemoryContextSwitchTo(mycxt); : : /* Fetch the function body */ : tmp = SysCacheGetAttr(PROCOID, 0.00 : 62d18c: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 62d190: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 62d195: 4c 89 f6 mov %r14,%rsi : : /* : * Make a temporary memory context, so that we don't leak all the stuff : * that parsing might create. : */ : mycxt = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 62d198: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) : : CurrentMemoryContext = context; 0.00 : 62d19f: 48 89 05 ba d6 58 00 mov %rax,0x58d6ba(%rip) # bba860 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 62d1a6: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : oldcxt = MemoryContextSwitchTo(mycxt); : : /* Fetch the function body */ : tmp = SysCacheGetAttr(PROCOID, 0.00 : 62d1ad: ba 18 00 00 00 mov $0x18,%edx 0.00 : 62d1b2: e8 d9 48 14 00 callq 771a90 : func_tuple, : Anum_pg_proc_prosrc, : &isNull); : if (isNull) 0.00 : 62d1b7: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : oldcxt = MemoryContextSwitchTo(mycxt); : : /* Fetch the function body */ : tmp = SysCacheGetAttr(PROCOID, 0.00 : 62d1bb: 48 89 c7 mov %rax,%rdi : func_tuple, : Anum_pg_proc_prosrc, : &isNull); : if (isNull) 0.00 : 62d1be: 0f 85 9d 03 00 00 jne 62d561 : elog(ERROR, "null prosrc for function %u", funcid); : src = TextDatumGetCString(tmp); 0.00 : 62d1c4: e8 e7 cf 12 00 callq 75a1b0 0.00 : 62d1c9: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : /* : * Setup error traceback support for ereport(). This is so that we can : * finger the function that bad information came from. : */ : callback_arg.proname = NameStr(funcform->proname); : callback_arg.prosrc = src; 0.00 : 62d1d0: 48 89 45 b8 mov %rax,-0x48(%rbp) : : sqlerrcontext.callback = sql_inline_error_callback; : sqlerrcontext.arg = (void *) &callback_arg; 0.00 : 62d1d4: 48 8d 45 b0 lea -0x50(%rbp),%rax : * Set up to handle parameters while parsing the function body. We need a : * dummy FuncExpr node containing the already-simplified arguments to pass : * to prepare_sql_fn_parse_info. (It is really only needed if there are : * some polymorphic arguments, but for simplicity we always build it.) : */ : fexpr = makeNode(FuncExpr); 0.00 : 62d1d8: 48 8b 3d 81 d6 58 00 mov 0x58d681(%rip),%rdi # bba860 0.00 : 62d1df: be 30 00 00 00 mov $0x30,%esi : : /* : * Setup error traceback support for ereport(). This is so that we can : * finger the function that bad information came from. : */ : callback_arg.proname = NameStr(funcform->proname); 0.00 : 62d1e4: 4c 89 65 b0 mov %r12,-0x50(%rbp) : callback_arg.prosrc = src; : : sqlerrcontext.callback = sql_inline_error_callback; : sqlerrcontext.arg = (void *) &callback_arg; 0.00 : 62d1e8: 48 89 45 a0 mov %rax,-0x60(%rbp) : sqlerrcontext.previous = error_context_stack; 0.00 : 62d1ec: 48 8b 05 4d c4 58 00 mov 0x58c44d(%rip),%rax # bb9640 : * finger the function that bad information came from. : */ : callback_arg.proname = NameStr(funcform->proname); : callback_arg.prosrc = src; : : sqlerrcontext.callback = sql_inline_error_callback; 0.00 : 62d1f3: 48 c7 45 98 40 ae 62 movq $0x62ae40,-0x68(%rbp) 0.00 : 62d1fa: 00 : sqlerrcontext.arg = (void *) &callback_arg; : sqlerrcontext.previous = error_context_stack; 0.00 : 62d1fb: 48 89 45 90 mov %rax,-0x70(%rbp) : error_context_stack = &sqlerrcontext; 0.00 : 62d1ff: 48 8d 45 90 lea -0x70(%rbp),%rax 0.00 : 62d203: 48 89 05 36 c4 58 00 mov %rax,0x58c436(%rip) # bb9640 : * Set up to handle parameters while parsing the function body. We need a : * dummy FuncExpr node containing the already-simplified arguments to pass : * to prepare_sql_fn_parse_info. (It is really only needed if there are : * some polymorphic arguments, but for simplicity we always build it.) : */ : fexpr = makeNode(FuncExpr); 0.00 : 62d20a: e8 01 bc 16 00 callq 798e10 0.00 : 62d20f: c7 00 35 01 00 00 movl $0x135,(%rax) 0.00 : 62d215: 48 89 c6 mov %rax,%rsi : fexpr->funcid = funcid; 0.00 : 62d218: 8b 85 2c ff ff ff mov -0xd4(%rbp),%eax : fexpr->funccollid = result_collid; /* doesn't matter */ : fexpr->inputcollid = input_collid; : fexpr->args = args; : fexpr->location = -1; : : pinfo = prepare_sql_fn_parse_info(func_tuple, 0.00 : 62d21e: 4c 89 f7 mov %r14,%rdi : * dummy FuncExpr node containing the already-simplified arguments to pass : * to prepare_sql_fn_parse_info. (It is really only needed if there are : * some polymorphic arguments, but for simplicity we always build it.) : */ : fexpr = makeNode(FuncExpr); : fexpr->funcid = funcid; 0.00 : 62d221: 89 46 04 mov %eax,0x4(%rsi) : fexpr->funcresulttype = result_type; 0.00 : 62d224: 8b 95 28 ff ff ff mov -0xd8(%rbp),%edx : fexpr->funcretset = false; 0.00 : 62d22a: c6 46 0c 00 movb $0x0,0xc(%rsi) : * to prepare_sql_fn_parse_info. (It is really only needed if there are : * some polymorphic arguments, but for simplicity we always build it.) : */ : fexpr = makeNode(FuncExpr); : fexpr->funcid = funcid; : fexpr->funcresulttype = result_type; 0.00 : 62d22e: 89 56 08 mov %edx,0x8(%rsi) : fexpr->funcretset = false; : fexpr->funcvariadic = funcvariadic; 0.00 : 62d231: 0f b6 85 1b ff ff ff movzbl -0xe5(%rbp),%eax : fexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */ 0.00 : 62d238: c7 46 10 00 00 00 00 movl $0x0,0x10(%rsi) : */ : fexpr = makeNode(FuncExpr); : fexpr->funcid = funcid; : fexpr->funcresulttype = result_type; : fexpr->funcretset = false; : fexpr->funcvariadic = funcvariadic; 0.00 : 62d23f: 88 46 0d mov %al,0xd(%rsi) : fexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */ : fexpr->funccollid = result_collid; /* doesn't matter */ 0.00 : 62d242: 8b 95 20 ff ff ff mov -0xe0(%rbp),%edx 0.00 : 62d248: 89 56 14 mov %edx,0x14(%rsi) : fexpr->inputcollid = input_collid; 0.00 : 62d24b: 8b 85 1c ff ff ff mov -0xe4(%rbp),%eax : fexpr->args = args; 0.00 : 62d251: 4c 89 7e 20 mov %r15,0x20(%rsi) : fexpr->location = -1; 0.00 : 62d255: c7 46 28 ff ff ff ff movl $0xffffffff,0x28(%rsi) : fexpr->funcresulttype = result_type; : fexpr->funcretset = false; : fexpr->funcvariadic = funcvariadic; : fexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */ : fexpr->funccollid = result_collid; /* doesn't matter */ : fexpr->inputcollid = input_collid; 0.00 : 62d25c: 89 46 18 mov %eax,0x18(%rsi) : fexpr->args = args; : fexpr->location = -1; : : pinfo = prepare_sql_fn_parse_info(func_tuple, 0.00 : 62d25f: 89 c2 mov %eax,%edx 0.00 : 62d261: e8 2a 99 f8 ff callq 5b6b90 : * We just do parsing and parse analysis, not rewriting, because rewriting : * will not affect table-free-SELECT-only queries, which is all that we : * care about. Also, we can punt as soon as we detect more than one : * command in the function body. : */ : raw_parsetree_list = pg_parse_query(src); 0.00 : 62d266: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi : fexpr->funccollid = result_collid; /* doesn't matter */ : fexpr->inputcollid = input_collid; : fexpr->args = args; : fexpr->location = -1; : : pinfo = prepare_sql_fn_parse_info(func_tuple, 0.00 : 62d26d: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) : * We just do parsing and parse analysis, not rewriting, because rewriting : * will not affect table-free-SELECT-only queries, which is all that we : * care about. Also, we can punt as soon as we detect more than one : * command in the function body. : */ : raw_parsetree_list = pg_parse_query(src); 0.00 : 62d274: e8 67 07 07 00 callq 69d9e0 0.00 : 62d279: 48 85 c0 test %rax,%rax 0.00 : 62d27c: 49 89 c5 mov %rax,%r13 0.00 : 62d27f: 74 4e je 62d2cf : if (list_length(raw_parsetree_list) != 1) 0.00 : 62d281: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 62d285: 75 48 jne 62d2cf : goto fail; : : pstate = make_parsestate(NULL); 0.00 : 62d287: 31 ff xor %edi,%edi 0.00 : 62d289: e8 82 d8 f0 ff callq 53ab10 : pstate->p_sourcetext = src; 0.00 : 62d28e: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx : sql_fn_parser_setup(pstate, pinfo); 0.00 : 62d295: 48 89 c7 mov %rax,%rdi : */ : raw_parsetree_list = pg_parse_query(src); : if (list_length(raw_parsetree_list) != 1) : goto fail; : : pstate = make_parsestate(NULL); 0.00 : 62d298: 48 89 c3 mov %rax,%rbx : pstate->p_sourcetext = src; 0.00 : 62d29b: 48 89 50 08 mov %rdx,0x8(%rax) : sql_fn_parser_setup(pstate, pinfo); 0.00 : 62d29f: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 62d2a6: e8 85 8a f8 ff callq 5b5d30 : : querytree = transformTopLevelStmt(pstate, linitial(raw_parsetree_list)); 0.00 : 62d2ab: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 62d2af: 48 89 df mov %rbx,%rdi 0.00 : 62d2b2: 48 8b 30 mov (%rax),%rsi 0.00 : 62d2b5: e8 56 f1 ed ff callq 50c410 : : free_parsestate(pstate); 0.00 : 62d2ba: 48 89 df mov %rbx,%rdi : : pstate = make_parsestate(NULL); : pstate->p_sourcetext = src; : sql_fn_parser_setup(pstate, pinfo); : : querytree = transformTopLevelStmt(pstate, linitial(raw_parsetree_list)); 0.00 : 62d2bd: 49 89 c5 mov %rax,%r13 : : free_parsestate(pstate); 0.00 : 62d2c0: e8 bb d7 f0 ff callq 53aa80 : : /* : * The single command must be a simple "SELECT expression". : */ : if (!IsA(querytree, Query) || 0.00 : 62d2c5: 41 81 7d 00 bc 02 00 cmpl $0x2bc,0x0(%r13) 0.00 : 62d2cc: 00 0.00 : 62d2cd: 74 61 je 62d330 : : CurrentMemoryContext = context; 0.00 : 62d2cf: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax : return (Expr *) newexpr; : : /* Here if func is not inlinable: release temp memory and return NULL */ : fail: : MemoryContextSwitchTo(oldcxt); : MemoryContextDelete(mycxt); 0.00 : 62d2d6: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi : error_context_stack = sqlerrcontext.previous; 0.00 : 62d2dd: 31 db xor %ebx,%ebx 0.00 : 62d2df: 48 89 05 7a d5 58 00 mov %rax,0x58d57a(%rip) # bba860 : return (Expr *) newexpr; : : /* Here if func is not inlinable: release temp memory and return NULL */ : fail: : MemoryContextSwitchTo(oldcxt); : MemoryContextDelete(mycxt); 0.00 : 62d2e6: e8 b5 b8 16 00 callq 798ba0 : error_context_stack = sqlerrcontext.previous; 0.00 : 62d2eb: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 62d2ef: 48 89 05 4a c3 58 00 mov %rax,0x58c34a(%rip) # bb9640 0.00 : 62d2f6: e9 1f fc ff ff jmpq 62cf1a 0.00 : 62d2fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * strategies; so if !allow_non_const, simplify_function can only return a : * Const or NULL. Argument-list rewriting happens anyway, though. : */ : func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid)); : if (!HeapTupleIsValid(func_tuple)) : elog(ERROR, "cache lookup failed for function %u", funcid); 0.00 : 62d300: ba f0 c9 89 00 mov $0x89c9f0,%edx 0.00 : 62d305: be a3 0e 00 00 mov $0xea3,%esi 0.00 : 62d30a: bf f7 c6 89 00 mov $0x89c6f7,%edi 0.00 : 62d30f: e8 0c e1 14 00 callq 77b420 0.00 : 62d314: 8b 95 2c ff ff ff mov -0xd4(%rbp),%edx 0.00 : 62d31a: be b8 2b 7c 00 mov $0x7c2bb8,%esi 0.00 : 62d31f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 62d324: 31 c0 xor %eax,%eax 0.00 : 62d326: e8 05 df 14 00 callq 77b230 0.00 : 62d32b: e8 a0 c1 e3 ff callq 4694d0 : free_parsestate(pstate); : : /* : * The single command must be a simple "SELECT expression". : */ : if (!IsA(querytree, Query) || 0.00 : 62d330: 41 83 7d 04 01 cmpl $0x1,0x4(%r13) 0.00 : 62d335: 75 98 jne 62d2cf 0.00 : 62d337: 49 83 7d 18 00 cmpq $0x0,0x18(%r13) 0.00 : 62d33c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 62d340: 75 8d jne 62d2cf 0.00 : 62d342: 41 f7 45 24 ff ff ff testl $0xffffff,0x24(%r13) 0.00 : 62d349: 00 0.00 : 62d34a: 75 83 jne 62d2cf 0.00 : 62d34c: 49 83 7d 30 00 cmpq $0x0,0x30(%r13) 0.00 : 62d351: 0f 85 78 ff ff ff jne 62d2cf 0.00 : 62d357: 49 83 7d 38 00 cmpq $0x0,0x38(%r13) 0.00 : 62d35c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 62d360: 0f 85 69 ff ff ff jne 62d2cf 0.00 : 62d366: 49 8b 45 40 mov 0x40(%r13),%rax 0.00 : 62d36a: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 62d36f: 90 nop 0.00 : 62d370: 0f 85 59 ff ff ff jne 62d2cf 0.00 : 62d376: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 62d37b: 0f 85 4e ff ff ff jne 62d2cf 0.00 : 62d381: 49 83 7d 60 00 cmpq $0x0,0x60(%r13) 0.00 : 62d386: 0f 85 43 ff ff ff jne 62d2cf 0.00 : 62d38c: 49 83 7d 68 00 cmpq $0x0,0x68(%r13) 0.00 : 62d391: 0f 85 38 ff ff ff jne 62d2cf 0.00 : 62d397: 49 83 7d 70 00 cmpq $0x0,0x70(%r13) 0.00 : 62d39c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 62d3a0: 0f 85 29 ff ff ff jne 62d2cf 0.00 : 62d3a6: 49 83 7d 78 00 cmpq $0x0,0x78(%r13) 0.00 : 62d3ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 62d3b0: 0f 85 19 ff ff ff jne 62d2cf 0.00 : 62d3b6: 49 83 bd 80 00 00 00 cmpq $0x0,0x80(%r13) 0.00 : 62d3bd: 00 0.00 : 62d3be: 66 90 xchg %ax,%ax 0.00 : 62d3c0: 0f 85 09 ff ff ff jne 62d2cf 0.00 : 62d3c6: 49 83 bd 88 00 00 00 cmpq $0x0,0x88(%r13) 0.00 : 62d3cd: 00 0.00 : 62d3ce: 0f 85 fb fe ff ff jne 62d2cf 0.00 : 62d3d4: 49 83 bd 90 00 00 00 cmpq $0x0,0x90(%r13) 0.00 : 62d3db: 00 0.00 : 62d3dc: 0f 85 ed fe ff ff jne 62d2cf 0.00 : 62d3e2: 49 83 bd a0 00 00 00 cmpq $0x0,0xa0(%r13) 0.00 : 62d3e9: 00 0.00 : 62d3ea: 0f 85 df fe ff ff jne 62d2cf 0.00 : 62d3f0: 49 8b 45 48 mov 0x48(%r13),%rax 0.00 : 62d3f4: 48 85 c0 test %rax,%rax 0.00 : 62d3f7: 0f 84 d2 fe ff ff je 62d2cf 0.00 : 62d3fd: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 62d401: 0f 85 c8 fe ff ff jne 62d2cf : * type of the function. : * : * Note: we do not try this until we have verified that no rewriting was : * needed; that's probably not important, but let's be careful. : */ : if (check_sql_fn_retval(funcid, result_type, list_make1(querytree), 0.00 : 62d407: 31 f6 xor %esi,%esi 0.00 : 62d409: 4c 89 ef mov %r13,%rdi 0.00 : 62d40c: e8 3f 44 fb ff callq 5e1850 0.00 : 62d411: 8b b5 28 ff ff ff mov -0xd8(%rbp),%esi 0.00 : 62d417: 8b bd 2c ff ff ff mov -0xd4(%rbp),%edi 0.00 : 62d41d: 48 8d 4d ce lea -0x32(%rbp),%rcx 0.00 : 62d421: 45 31 c0 xor %r8d,%r8d 0.00 : 62d424: 48 89 c2 mov %rax,%rdx 0.00 : 62d427: e8 d4 89 f8 ff callq 5b5e00 0.00 : 62d42c: 84 c0 test %al,%al 0.00 : 62d42e: 0f 85 9b fe ff ff jne 62d2cf : &modifyTargetList, NULL)) : goto fail; /* reject whole-tuple-result cases */ : : /* Now we can grab the tlist expression */ : newexpr = (Node *) ((TargetEntry *) linitial(querytree->targetList))->expr; 0.00 : 62d434: 49 8b 45 48 mov 0x48(%r13),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 62d438: 31 d2 xor %edx,%edx 0.00 : 62d43a: 48 85 c0 test %rax,%rax 0.00 : 62d43d: 74 04 je 62d443 0.00 : 62d43f: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 62d443: 48 8b 02 mov (%rdx),%rax 0.00 : 62d446: 48 8b 58 08 mov 0x8(%rax),%rbx : * when it really ain't). If the surrounding function is declared strict, : * then the expression must contain only strict constructs and must use : * all of the function parameters (this is overkill, but an exact analysis : * is hard). : */ : if (expression_returns_set(newexpr)) 0.00 : 62d44a: 48 89 df mov %rbx,%rdi 0.00 : 62d44d: e8 fe 25 fb ff callq 5dfa50 0.00 : 62d452: 84 c0 test %al,%al 0.00 : 62d454: 0f 85 75 fe ff ff jne 62d2cf : goto fail; : : if (funcform->provolatile == PROVOLATILE_IMMUTABLE && 0.00 : 62d45a: 41 0f b6 44 24 62 movzbl 0x62(%r12),%eax 0.00 : 62d460: 3c 69 cmp $0x69,%al 0.00 : 62d462: 0f 84 d8 00 00 00 je 62d540 : contain_mutable_functions(newexpr)) : goto fail; : else if (funcform->provolatile == PROVOLATILE_STABLE && 0.00 : 62d468: 3c 73 cmp $0x73,%al 0.00 : 62d46a: 0f 84 bb 00 00 00 je 62d52b : contain_volatile_functions(newexpr)) : goto fail; : : if (funcform->proisstrict && 0.00 : 62d470: 41 80 7c 24 60 00 cmpb $0x0,0x60(%r12) 0.00 : 62d476: 74 15 je 62d48d 0.00 : 62d478: 48 89 df mov %rbx,%rdi 0.00 : 62d47b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 62d480: e8 3b f2 ff ff callq 62c6c0 0.00 : 62d485: 84 c0 test %al,%al 0.00 : 62d487: 0f 85 42 fe ff ff jne 62d2cf : * We may be able to do it; there are still checks on parameter usage to : * make, but those are most easily done in combination with the actual : * substitution of the inputs. So start building expression with inputs : * substituted. : */ : usecounts = (int *) palloc0(funcform->pronargs * sizeof(int)); 0.00 : 62d48d: 49 0f bf 7c 24 64 movswq 0x64(%r12),%rdi 0.00 : 62d493: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 62d497: e8 d4 ba 16 00 callq 798f70 0.00 : 62d49c: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : substitute_actual_parameters(Node *expr, int nargs, List *args, : int *usecounts) : { : substitute_actual_parameters_context context; : : context.nargs = nargs; 0.00 : 62d4a3: 41 0f bf 44 24 64 movswl 0x64(%r12),%eax : context.args = args; : context.usecounts = usecounts; : : return substitute_actual_parameters_mutator(expr, &context); 0.00 : 62d4a9: 48 8d b5 60 ff ff ff lea -0xa0(%rbp),%rsi 0.00 : 62d4b0: 48 89 df mov %rbx,%rdi : int *usecounts) : { : substitute_actual_parameters_context context; : : context.nargs = nargs; : context.args = args; 0.00 : 62d4b3: 4c 89 bd 68 ff ff ff mov %r15,-0x98(%rbp) : substitute_actual_parameters(Node *expr, int nargs, List *args, : int *usecounts) : { : substitute_actual_parameters_context context; : : context.nargs = nargs; 0.00 : 62d4ba: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : context.args = args; : context.usecounts = usecounts; 0.00 : 62d4c0: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 62d4c7: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : : return substitute_actual_parameters_mutator(expr, &context); 0.00 : 62d4ce: e8 8d d8 ff ff callq 62ad60 0.00 : 62d4d3: 4d 85 ff test %r15,%r15 0.00 : 62d4d6: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 0.00 : 62d4dd: 0f 84 3d 01 00 00 je 62d620 0.00 : 62d4e3: 4d 8b 6f 08 mov 0x8(%r15),%r13 : newexpr = substitute_actual_parameters(newexpr, funcform->pronargs, : args, usecounts); : : /* Now check for parameter usage */ : i = 0; : foreach(arg, args) 0.00 : 62d4e7: 4d 85 ed test %r13,%r13 0.00 : 62d4ea: 0f 84 30 01 00 00 je 62d620 0.00 : 62d4f0: 45 31 ff xor %r15d,%r15d : { : Node *param = lfirst(arg); : : if (usecounts[i] == 0) 0.00 : 62d4f3: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 62d4fa: 49 63 c7 movslq %r15d,%rax : : /* Now check for parameter usage */ : i = 0; : foreach(arg, args) : { : Node *param = lfirst(arg); 0.00 : 62d4fd: 49 8b 5d 00 mov 0x0(%r13),%rbx : : if (usecounts[i] == 0) 0.00 : 62d501: 8b 04 82 mov (%rdx,%rax,4),%eax 0.00 : 62d504: 85 c0 test %eax,%eax 0.00 : 62d506: 0f 85 9c 00 00 00 jne 62d5a8 : { : /* Param not used at all: uncool if func is strict */ : if (funcform->proisstrict) 0.00 : 62d50c: 41 80 7c 24 60 00 cmpb $0x0,0x60(%r12) 0.00 : 62d512: 0f 85 b7 fd ff ff jne 62d2cf : newexpr = substitute_actual_parameters(newexpr, funcform->pronargs, : args, usecounts); : : /* Now check for parameter usage */ : i = 0; : foreach(arg, args) 0.00 : 62d518: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 62d51c: 4d 85 ed test %r13,%r13 0.00 : 62d51f: 0f 84 fb 00 00 00 je 62d620 : * above tests : */ : if (contain_volatile_functions(param)) : goto fail; : } : i++; 0.00 : 62d525: 41 83 c7 01 add $0x1,%r15d 0.00 : 62d529: eb c8 jmp 62d4f3 : goto fail; : : if (funcform->provolatile == PROVOLATILE_IMMUTABLE && : contain_mutable_functions(newexpr)) : goto fail; : else if (funcform->provolatile == PROVOLATILE_STABLE && 0.00 : 62d52b: 48 89 df mov %rbx,%rdi 0.00 : 62d52e: e8 4d f6 ff ff callq 62cb80 0.00 : 62d533: 84 c0 test %al,%al 0.00 : 62d535: 0f 85 94 fd ff ff jne 62d2cf 0.00 : 62d53b: e9 30 ff ff ff jmpq 62d470 : * is hard). : */ : if (expression_returns_set(newexpr)) : goto fail; : : if (funcform->provolatile == PROVOLATILE_IMMUTABLE && 0.00 : 62d540: 48 89 df mov %rbx,%rdi 0.00 : 62d543: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 62d548: e8 83 f8 ff ff callq 62cdd0 0.00 : 62d54d: 84 c0 test %al,%al 0.00 : 62d54f: 90 nop 0.00 : 62d550: 0f 85 79 fd ff ff jne 62d2cf 0.00 : 62d556: 41 0f b6 44 24 62 movzbl 0x62(%r12),%eax 0.00 : 62d55c: e9 07 ff ff ff jmpq 62d468 : tmp = SysCacheGetAttr(PROCOID, : func_tuple, : Anum_pg_proc_prosrc, : &isNull); : if (isNull) : elog(ERROR, "null prosrc for function %u", funcid); 0.00 : 62d561: ba 10 ca 89 00 mov $0x89ca10,%edx 0.00 : 62d566: be 85 10 00 00 mov $0x1085,%esi 0.00 : 62d56b: bf f7 c6 89 00 mov $0x89c6f7,%edi 0.00 : 62d570: e8 ab de 14 00 callq 77b420 0.00 : 62d575: 8b 95 2c ff ff ff mov -0xd4(%rbp),%edx 0.00 : 62d57b: be 9d b2 88 00 mov $0x88b29d,%esi 0.00 : 62d580: bf 14 00 00 00 mov $0x14,%edi 0.00 : 62d585: 31 c0 xor %eax,%eax 0.00 : 62d587: e8 a4 dc 14 00 callq 77b230 0.00 : 62d58c: e8 3f bf e3 ff callq 4694d0 : /* Check permission to call function (fail later, if not) */ : if (pg_proc_aclcheck(funcid, GetUserId(), ACL_EXECUTE) != ACLCHECK_OK) : return NULL; : : /* Check whether a plugin wants to hook function entry/exit */ : if (FmgrHookIsNeeded(funcid)) 0.00 : 62d591: 8b bd 2c ff ff ff mov -0xd4(%rbp),%edi 0.00 : 62d597: ff d0 callq *%rax 0.00 : 62d599: 84 c0 test %al,%al 0.00 : 62d59b: 0f 84 c6 fb ff ff je 62d167 : : /* Here if func is not inlinable: release temp memory and return NULL */ : fail: : MemoryContextSwitchTo(oldcxt); : MemoryContextDelete(mycxt); : error_context_stack = sqlerrcontext.previous; 0.00 : 62d5a1: 31 db xor %ebx,%ebx 0.00 : 62d5a3: e9 72 f9 ff ff jmpq 62cf1a : { : /* Param not used at all: uncool if func is strict */ : if (funcform->proisstrict) : goto fail; : } : else if (usecounts[i] != 1) 0.00 : 62d5a8: 83 e8 01 sub $0x1,%eax 0.00 : 62d5ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 62d5b0: 0f 84 62 ff ff ff je 62d518 : * We define "expensive" as "contains any subplan or more than 10 : * operators". Note that the subplan search has to be done : * explicitly, since cost_qual_eval() will barf on unplanned : * subselects. : */ : if (contain_subplans(param)) 0.00 : 62d5b6: 48 89 df mov %rbx,%rdi 0.00 : 62d5b9: e8 42 f1 ff ff callq 62c700 0.00 : 62d5be: 84 c0 test %al,%al 0.00 : 62d5c0: 0f 85 09 fd ff ff jne 62d2cf : goto fail; : cost_qual_eval(&eval_cost, list_make1(param), NULL); 0.00 : 62d5c6: 31 f6 xor %esi,%esi 0.00 : 62d5c8: 48 89 df mov %rbx,%rdi 0.00 : 62d5cb: e8 80 42 fb ff callq 5e1850 0.00 : 62d5d0: 48 8d bd 60 ff ff ff lea -0xa0(%rbp),%rdi 0.00 : 62d5d7: 31 d2 xor %edx,%edx 0.00 : 62d5d9: 48 89 c6 mov %rax,%rsi 0.00 : 62d5dc: e8 ff 76 fd ff callq 604ce0 : if (eval_cost.startup + eval_cost.per_tuple > 0.00 : 62d5e1: f2 0f 10 85 60 ff ff movsd -0xa0(%rbp),%xmm0 0.00 : 62d5e8: ff 0.00 : 62d5e9: f2 0f 10 0d 5f 50 18 movsd 0x18505f(%rip),%xmm1 # 7b2650 <__func__.14520+0xf> 0.00 : 62d5f0: 00 0.00 : 62d5f1: f2 0f 58 85 68 ff ff addsd -0x98(%rbp),%xmm0 0.00 : 62d5f8: ff 0.00 : 62d5f9: f2 0f 59 0d 8f af 53 mulsd 0x53af8f(%rip),%xmm1 # b68590 0.00 : 62d600: 00 0.00 : 62d601: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 62d605: 0f 87 c4 fc ff ff ja 62d2cf : : /* : * Check volatility last since this is more expensive than the : * above tests : */ : if (contain_volatile_functions(param)) 0.00 : 62d60b: 48 89 df mov %rbx,%rdi 0.00 : 62d60e: e8 6d f5 ff ff callq 62cb80 0.00 : 62d613: 84 c0 test %al,%al 0.00 : 62d615: 0f 84 fd fe ff ff je 62d518 0.00 : 62d61b: e9 af fc ff ff jmpq 62d2cf 0.00 : 62d620: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax : * Whew --- we can make the substitution. Copy the modified expression : * out of the temporary memory context, and clean up. : */ : MemoryContextSwitchTo(oldcxt); : : newexpr = copyObject(newexpr); 0.00 : 62d627: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 62d62e: 48 89 05 2b d2 58 00 mov %rax,0x58d22b(%rip) # bba860 0.00 : 62d635: e8 56 6b fb ff callq 5e4190 : : MemoryContextDelete(mycxt); 0.00 : 62d63a: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi : * Whew --- we can make the substitution. Copy the modified expression : * out of the temporary memory context, and clean up. : */ : MemoryContextSwitchTo(oldcxt); : : newexpr = copyObject(newexpr); 0.00 : 62d641: 49 89 c4 mov %rax,%r12 : : MemoryContextDelete(mycxt); 0.00 : 62d644: e8 57 b5 16 00 callq 798ba0 : * If the result is of a collatable type, force the result to expose the : * correct collation. In most cases this does not matter, but it's : * possible that the function result is used directly as a sort key or in : * other places where we expect exprCollation() to tell the truth. : */ : if (OidIsValid(result_collid)) 0.00 : 62d649: 44 8b ad 20 ff ff ff mov -0xe0(%rbp),%r13d 0.00 : 62d650: 45 85 ed test %r13d,%r13d 0.00 : 62d653: 75 69 jne 62d6be : { : CollateExpr *newnode = makeNode(CollateExpr); : : newnode->arg = (Expr *) newexpr; : newnode->collOid = result_collid; : newnode->location = -1; 0.00 : 62d655: 4c 89 e3 mov %r12,%rbx : : /* : * Since there is now no trace of the function in the plan tree, we must : * explicitly record the plan's dependency on the function. : */ : if (context->root) 0.00 : 62d658: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 62d65c: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 62d660: 48 85 ff test %rdi,%rdi 0.00 : 62d663: 74 0b je 62d670 : record_plan_function_dependency(context->root, funcid); 0.00 : 62d665: 8b b5 2c ff ff ff mov -0xd4(%rbp),%esi 0.00 : 62d66b: e8 80 2a ff ff callq 6200f0 : : /* : * Recursively try to simplify the modified expression. Here we must add : * the current function to the context list of active functions. : */ : context->active_fns = lcons_oid(funcid, context->active_fns); 0.00 : 62d670: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 62d674: 8b bd 2c ff ff ff mov -0xd4(%rbp),%edi 0.00 : 62d67a: 48 8b 72 10 mov 0x10(%rdx),%rsi 0.00 : 62d67e: e8 0d 41 fb ff callq 5e1790 0.00 : 62d683: 48 8b 55 28 mov 0x28(%rbp),%rdx : newexpr = eval_const_expressions_mutator(newexpr, context); 0.00 : 62d687: 48 89 df mov %rbx,%rdi : : /* : * Recursively try to simplify the modified expression. Here we must add : * the current function to the context list of active functions. : */ : context->active_fns = lcons_oid(funcid, context->active_fns); 0.00 : 62d68a: 48 89 42 10 mov %rax,0x10(%rdx) : newexpr = eval_const_expressions_mutator(newexpr, context); 0.00 : 62d68e: 48 89 d6 mov %rdx,%rsi 0.00 : 62d691: e8 7a 00 00 00 callq 62d710 0.00 : 62d696: 48 89 c3 mov %rax,%rbx : context->active_fns = list_delete_first(context->active_fns); 0.00 : 62d699: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 62d69d: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 62d6a1: e8 2a 4b fb ff callq 5e21d0 0.00 : 62d6a6: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 62d6aa: 48 89 42 10 mov %rax,0x10(%rdx) : : error_context_stack = sqlerrcontext.previous; 0.00 : 62d6ae: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 62d6b2: 48 89 05 87 bf 58 00 mov %rax,0x58bf87(%rip) # bb9640 0.00 : 62d6b9: e9 5c f8 ff ff jmpq 62cf1a : * possible that the function result is used directly as a sort key or in : * other places where we expect exprCollation() to tell the truth. : */ : if (OidIsValid(result_collid)) : { : Oid exprcoll = exprCollation(newexpr); 0.00 : 62d6be: 4c 89 e7 mov %r12,%rdi 0.00 : 62d6c1: e8 4a 24 fb ff callq 5dfb10 : : if (OidIsValid(exprcoll) && exprcoll != result_collid) 0.00 : 62d6c6: 85 c0 test %eax,%eax 0.00 : 62d6c8: 74 8b je 62d655 0.00 : 62d6ca: 39 85 20 ff ff ff cmp %eax,-0xe0(%rbp) 0.00 : 62d6d0: 74 83 je 62d655 : { : CollateExpr *newnode = makeNode(CollateExpr); 0.00 : 62d6d2: 48 8b 3d 87 d1 58 00 mov 0x58d187(%rip),%rdi # bba860 0.00 : 62d6d9: be 18 00 00 00 mov $0x18,%esi 0.00 : 62d6de: e8 2d b7 16 00 callq 798e10 0.00 : 62d6e3: c7 00 45 01 00 00 movl $0x145,(%rax) : : newnode->arg = (Expr *) newexpr; 0.00 : 62d6e9: 4c 89 60 08 mov %r12,0x8(%rax) : { : Oid exprcoll = exprCollation(newexpr); : : if (OidIsValid(exprcoll) && exprcoll != result_collid) : { : CollateExpr *newnode = makeNode(CollateExpr); 0.00 : 62d6ed: 48 89 c3 mov %rax,%rbx : : newnode->arg = (Expr *) newexpr; : newnode->collOid = result_collid; 0.00 : 62d6f0: 8b 95 20 ff ff ff mov -0xe0(%rbp),%edx : newnode->location = -1; 0.00 : 62d6f6: c7 40 14 ff ff ff ff movl $0xffffffff,0x14(%rax) : if (OidIsValid(exprcoll) && exprcoll != result_collid) : { : CollateExpr *newnode = makeNode(CollateExpr); : : newnode->arg = (Expr *) newexpr; : newnode->collOid = result_collid; 0.00 : 62d6fd: 89 50 10 mov %edx,0x10(%rax) 0.00 : 62d700: e9 53 ff ff ff jmpq 62d658 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/pathnode.c:630 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000631820 : : */ : bool : add_path_precheck(RelOptInfo *parent_rel, : Cost startup_cost, Cost total_cost, : List *pathkeys, Relids required_outer) : { 0.00 : 631820: 55 push %rbp 0.00 : 631821: 48 89 e5 mov %rsp,%rbp 0.00 : 631824: 41 57 push %r15 0.00 : 631826: 41 56 push %r14 0.00 : 631828: 49 89 d6 mov %rdx,%r14 0.00 : 63182b: 41 55 push %r13 : List *new_path_pathkeys; : ListCell *p1; : : /* Pretend parameterized paths have no pathkeys, per add_path policy */ : new_path_pathkeys = required_outer ? NIL : pathkeys; 0.00 : 63182d: 45 31 ed xor %r13d,%r13d : */ : bool : add_path_precheck(RelOptInfo *parent_rel, : Cost startup_cost, Cost total_cost, : List *pathkeys, Relids required_outer) : { 0.00 : 631830: 41 54 push %r12 0.00 : 631832: 53 push %rbx 0.00 : 631833: 48 83 ec 18 sub $0x18,%rsp 0.00 : 631837: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) : List *new_path_pathkeys; : ListCell *p1; : : /* Pretend parameterized paths have no pathkeys, per add_path policy */ : new_path_pathkeys = required_outer ? NIL : pathkeys; 0.00 : 63183c: 48 85 d2 test %rdx,%rdx : */ : bool : add_path_precheck(RelOptInfo *parent_rel, : Cost startup_cost, Cost total_cost, : List *pathkeys, Relids required_outer) : { 0.00 : 63183f: f2 0f 11 4d c8 movsd %xmm1,-0x38(%rbp) : ListCell *p1; : : /* Pretend parameterized paths have no pathkeys, per add_path policy */ : new_path_pathkeys = required_outer ? NIL : pathkeys; : : foreach(p1, parent_rel->pathlist) 0.00 : 631844: 48 8b 47 28 mov 0x28(%rdi),%rax : { : List *new_path_pathkeys; : ListCell *p1; : : /* Pretend parameterized paths have no pathkeys, per add_path policy */ : new_path_pathkeys = required_outer ? NIL : pathkeys; 0.00 : 631848: 4c 0f 44 ee cmove %rsi,%r13 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 63184c: 48 85 c0 test %rax,%rax 0.00 : 63184f: 0f 84 ab 00 00 00 je 631900 0.00 : 631855: 4c 8b 60 08 mov 0x8(%rax),%r12 : : foreach(p1, parent_rel->pathlist) 100.00 : 631859: 4d 85 e4 test %r12,%r12 0.00 : 63185c: 0f 84 9e 00 00 00 je 631900 : { : Path *old_path = (Path *) lfirst(p1); 0.00 : 631862: 49 8b 1c 24 mov (%r12),%rbx : * : * For speed, we make exact rather than fuzzy cost comparisons. If an : * old path dominates the new path exactly on both costs, it will : * surely do so fuzzily. : */ : if (total_cost >= old_path->total_cost) 0.00 : 631866: 66 0f 2e 4b 28 ucomisd 0x28(%rbx),%xmm1 0.00 : 63186b: 0f 82 8f 00 00 00 jb 631900 0.00 : 631871: 48 85 d2 test %rdx,%rdx 0.00 : 631874: 41 0f 95 c7 setne %r15b 0.00 : 631878: eb 25 jmp 63189f 0.00 : 63187a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; : keyscmp = compare_pathkeys(new_path_pathkeys, : old_path_pathkeys); : if (keyscmp == PATHKEYS_EQUAL || 0.00 : 631880: 83 f8 02 cmp $0x2,%eax 0.00 : 631883: 74 40 je 6318c5 : ListCell *p1; : : /* Pretend parameterized paths have no pathkeys, per add_path policy */ : new_path_pathkeys = required_outer ? NIL : pathkeys; : : foreach(p1, parent_rel->pathlist) 0.00 : 631885: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 63188a: 4d 85 e4 test %r12,%r12 0.00 : 63188d: 74 71 je 631900 : { : Path *old_path = (Path *) lfirst(p1); 0.00 : 63188f: 49 8b 1c 24 mov (%r12),%rbx : * : * For speed, we make exact rather than fuzzy cost comparisons. If an : * old path dominates the new path exactly on both costs, it will : * surely do so fuzzily. : */ : if (total_cost >= old_path->total_cost) 0.00 : 631893: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 631898: 66 0f 2e 43 28 ucomisd 0x28(%rbx),%xmm0 0.00 : 63189d: 72 61 jb 631900 : { : /* can win on startup cost only if unparameterized */ : if (startup_cost >= old_path->startup_cost || required_outer) 0.00 : 63189f: f2 0f 10 45 d0 movsd -0x30(%rbp),%xmm0 0.00 : 6318a4: 66 0f 2e 43 20 ucomisd 0x20(%rbx),%xmm0 0.00 : 6318a9: 73 05 jae 6318b0 0.00 : 6318ab: 45 84 ff test %r15b,%r15b 0.00 : 6318ae: 74 d5 je 631885 : { : /* new path does not win on cost, so check pathkeys... */ : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; 0.00 : 6318b0: 31 f6 xor %esi,%esi 0.00 : 6318b2: 48 83 7b 10 00 cmpq $0x0,0x10(%rbx) 0.00 : 6318b7: 74 3f je 6318f8 : keyscmp = compare_pathkeys(new_path_pathkeys, 0.00 : 6318b9: 4c 89 ef mov %r13,%rdi 0.00 : 6318bc: e8 9f ff fd ff callq 611860 : old_path_pathkeys); : if (keyscmp == PATHKEYS_EQUAL || 0.00 : 6318c1: 85 c0 test %eax,%eax 0.00 : 6318c3: 75 bb jne 631880 : keyscmp == PATHKEYS_BETTER2) : { : /* new path does not win on pathkeys... */ : if (bms_equal(required_outer, PATH_REQ_OUTER(old_path))) 0.00 : 6318c5: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 6318c9: 31 f6 xor %esi,%esi 0.00 : 6318cb: 48 85 c0 test %rax,%rax 0.00 : 6318ce: 74 04 je 6318d4 0.00 : 6318d0: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 6318d4: 4c 89 f7 mov %r14,%rdi 0.00 : 6318d7: e8 44 0d fb ff callq 5e2620 0.00 : 6318dc: 84 c0 test %al,%al 0.00 : 6318de: 74 a5 je 631885 : break; : } : } : : return true; : } 0.00 : 6318e0: 48 83 c4 18 add $0x18,%rsp : old_path_pathkeys); : if (keyscmp == PATHKEYS_EQUAL || : keyscmp == PATHKEYS_BETTER2) : { : /* new path does not win on pathkeys... */ : if (bms_equal(required_outer, PATH_REQ_OUTER(old_path))) 0.00 : 6318e4: 31 c0 xor %eax,%eax : break; : } : } : : return true; : } 0.00 : 6318e6: 5b pop %rbx 0.00 : 6318e7: 41 5c pop %r12 0.00 : 6318e9: 41 5d pop %r13 0.00 : 6318eb: 41 5e pop %r14 0.00 : 6318ed: 41 5f pop %r15 0.00 : 6318ef: c9 leaveq 0.00 : 6318f0: c3 retq 0.00 : 6318f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (startup_cost >= old_path->startup_cost || required_outer) : { : /* new path does not win on cost, so check pathkeys... */ : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; 0.00 : 6318f8: 48 8b 73 30 mov 0x30(%rbx),%rsi 0.00 : 6318fc: eb bb jmp 6318b9 0.00 : 6318fe: 66 90 xchg %ax,%ax : break; : } : } : : return true; : } 0.00 : 631900: 48 83 c4 18 add $0x18,%rsp : ListCell *p1; : : /* Pretend parameterized paths have no pathkeys, per add_path policy */ : new_path_pathkeys = required_outer ? NIL : pathkeys; : : foreach(p1, parent_rel->pathlist) 0.00 : 631904: b8 01 00 00 00 mov $0x1,%eax : break; : } : } : : return true; : } 0.00 : 631909: 5b pop %rbx 0.00 : 63190a: 41 5c pop %r12 0.00 : 63190c: 41 5d pop %r13 0.00 : 63190e: 41 5e pop %r14 0.00 : 631910: 41 5f pop %r15 0.00 : 631912: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/pathnode.c:158 50.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/pathnode.c:571 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000631920 : : * : * Returns nothing, but modifies parent_rel->pathlist. : */ : void : add_path(RelOptInfo *parent_rel, Path *new_path) : { 0.00 : 631920: 55 push %rbp 0.00 : 631921: 48 89 e5 mov %rsp,%rbp 0.00 : 631924: 41 57 push %r15 0.00 : 631926: 41 56 push %r14 0.00 : 631928: 49 89 f6 mov %rsi,%r14 0.00 : 63192b: 41 55 push %r13 0.00 : 63192d: 41 54 push %r12 0.00 : 63192f: 53 push %rbx 0.00 : 631930: 48 83 ec 38 sub $0x38,%rsp : : /* : * This is a convenient place to check for query cancel --- no part of the : * planner goes very long without calling add_path(). : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 631934: 0f b6 05 55 87 58 00 movzbl 0x588755(%rip),%eax # bba090 : * : * Returns nothing, but modifies parent_rel->pathlist. : */ : void : add_path(RelOptInfo *parent_rel, Path *new_path) : { 0.00 : 63193b: 48 89 7d a8 mov %rdi,-0x58(%rbp) : : /* : * This is a convenient place to check for query cancel --- no part of the : * planner goes very long without calling add_path(). : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 63193f: 84 c0 test %al,%al 0.00 : 631941: 0f 85 21 04 00 00 jne 631d68 : : /* Pretend parameterized paths have no pathkeys, per comment above */ : new_path_pathkeys = new_path->param_info ? NIL : new_path->pathkeys; 0.00 : 631947: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 63194e: 00 0.00 : 63194f: 49 83 7e 10 00 cmpq $0x0,0x10(%r14) 0.00 : 631954: 0f 84 2e 04 00 00 je 631d88 : * : * We can't use foreach here because the loop body may delete the current : * list cell. : */ : p1_prev = NULL; : for (p1 = list_head(parent_rel->pathlist); p1 != NULL; p1 = p1_next) 0.00 : 63195a: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 63195e: 48 8b 7a 28 mov 0x28(%rdx),%rdi : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 631962: 48 85 ff test %rdi,%rdi 0.00 : 631965: 0f 84 65 03 00 00 je 631cd0 0.00 : 63196b: 4c 8b 7f 08 mov 0x8(%rdi),%r15 0.00 : 63196f: 4d 85 ff test %r15,%r15 0.00 : 631972: 0f 84 58 03 00 00 je 631cd0 0.00 : 631978: c6 45 b7 01 movb $0x1,-0x49(%rbp) 0.00 : 63197c: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 631983: 00 0.00 : 631984: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 63198b: 00 0.00 : 63198c: 0f 1f 40 00 nopl 0x0(%rax) : bool remove_old = false; /* unless new proves superior */ : PathCostComparison costcmp; : PathKeysComparison keyscmp; : BMS_Comparison outercmp; : : p1_next = lnext(p1); 0.00 : 631990: 49 8b 47 08 mov 0x8(%r15),%rax : * list cell. : */ : p1_prev = NULL; : for (p1 = list_head(parent_rel->pathlist); p1 != NULL; p1 = p1_next) : { : Path *old_path = (Path *) lfirst(p1); 0.00 : 631994: 4d 8b 2f mov (%r15),%r13 : { : /* : * Check total cost first since it's more likely to be different; many : * paths have zero startup cost. : */ : if (path1->total_cost > path2->total_cost * fuzz_factor) 0.00 : 631997: f2 0f 10 05 f1 b1 26 movsd 0x26b1f1(%rip),%xmm0 # 89cb90 <__func__.11460+0x50> 0.00 : 63199e: 00 : : /* : * Do a fuzzy cost comparison with 1% fuzziness limit. (XXX does this : * percentage need to be user-configurable?) : */ : costcmp = compare_path_costs_fuzzily(new_path, old_path, 1.01, 0.00 : 63199f: 48 8b 55 a8 mov -0x58(%rbp),%rdx : bool remove_old = false; /* unless new proves superior */ : PathCostComparison costcmp; : PathKeysComparison keyscmp; : BMS_Comparison outercmp; : : p1_next = lnext(p1); 0.00 : 6319a3: 48 89 45 d0 mov %rax,-0x30(%rbp) : { : /* : * Check total cost first since it's more likely to be different; many : * paths have zero startup cost. : */ : if (path1->total_cost > path2->total_cost * fuzz_factor) 0.00 : 6319a7: f2 41 0f 10 55 28 movsd 0x28(%r13),%xmm2 : : /* : * Do a fuzzy cost comparison with 1% fuzziness limit. (XXX does this : * percentage need to be user-configurable?) : */ : costcmp = compare_path_costs_fuzzily(new_path, old_path, 1.01, 0.00 : 6319ad: 0f b6 42 1c movzbl 0x1c(%rdx),%eax : { : /* : * Check total cost first since it's more likely to be different; many : * paths have zero startup cost. : */ : if (path1->total_cost > path2->total_cost * fuzz_factor) 0.00 : 6319b1: f2 41 0f 10 5e 28 movsd 0x28(%r14),%xmm3 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/pathnode.c:158 50.00 : 6319b7: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 6319bb: 66 0f 2e d8 ucomisd %xmm0,%xmm3 0.00 : 6319bf: 0f 86 9b 01 00 00 jbe 631b60 : { : /* path1 fuzzily worse on total cost */ : if (consider_startup && 0.00 : 6319c5: 84 c0 test %al,%al 0.00 : 6319c7: 74 25 je 6319ee 0.00 : 6319c9: f2 0f 10 0d bf b1 26 movsd 0x26b1bf(%rip),%xmm1 # 89cb90 <__func__.11460+0x50> 0.00 : 6319d0: 00 0.00 : 6319d1: f2 41 0f 10 45 20 movsd 0x20(%r13),%xmm0 0.00 : 6319d7: f2 41 0f 59 4e 20 mulsd 0x20(%r14),%xmm1 0.00 : 6319dd: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 6319e1: 76 0b jbe 6319ee 0.00 : 6319e3: 49 83 7e 10 00 cmpq $0x0,0x10(%r14) 0.00 : 6319e8: 0f 84 16 01 00 00 je 631b04 : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) : pfree(new_path); : } : } 0.00 : 6319ee: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 6319f2: bb 02 00 00 00 mov $0x2,%ebx : if (costcmp != COSTS_DIFFERENT) : { : /* Similarly check to see if either dominates on pathkeys */ : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; 0.00 : 6319f7: 31 f6 xor %esi,%esi 0.00 : 6319f9: 48 85 c0 test %rax,%rax 0.00 : 6319fc: 0f 84 c2 01 00 00 je 631bc4 : keyscmp = compare_pathkeys(new_path_pathkeys, 0.00 : 631a02: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 631a06: e8 55 fe fd ff callq 611860 : old_path_pathkeys); : if (keyscmp != PATHKEYS_DIFFERENT) 0.00 : 631a0b: 83 f8 03 cmp $0x3,%eax : { : /* Similarly check to see if either dominates on pathkeys */ : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; : keyscmp = compare_pathkeys(new_path_pathkeys, 0.00 : 631a0e: 41 89 c4 mov %eax,%r12d : old_path_pathkeys); : if (keyscmp != PATHKEYS_DIFFERENT) 0.00 : 631a11: 0f 84 e1 00 00 00 je 631af8 : { : switch (costcmp) 0.00 : 631a17: 83 fb 01 cmp $0x1,%ebx 0.00 : 631a1a: 0f 84 a0 00 00 00 je 631ac0 0.00 : 631a20: 0f 83 fa 01 00 00 jae 631c20 : { : case COSTS_EQUAL: : outercmp = bms_subset_compare(PATH_REQ_OUTER(new_path), 0.00 : 631a26: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 631a2a: 31 f6 xor %esi,%esi 0.00 : 631a2c: 48 85 c0 test %rax,%rax 0.00 : 631a2f: 90 nop 0.00 : 631a30: 74 04 je 631a36 0.00 : 631a32: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 631a36: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 631a3a: 31 ff xor %edi,%edi 0.00 : 631a3c: 48 85 c0 test %rax,%rax 0.00 : 631a3f: 74 04 je 631a45 0.00 : 631a41: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 631a45: e8 96 0d fb ff callq 5e27e0 : PATH_REQ_OUTER(old_path)); : if (keyscmp == PATHKEYS_BETTER1) 0.00 : 631a4a: 41 83 fc 01 cmp $0x1,%r12d 0.00 : 631a4e: 0f 84 94 00 00 00 je 631ae8 : if ((outercmp == BMS_EQUAL || : outercmp == BMS_SUBSET1) && : new_path->rows <= old_path->rows) : remove_old = true; /* new dominates old */ : } : else if (keyscmp == PATHKEYS_BETTER2) 0.00 : 631a54: 41 83 fc 02 cmp $0x2,%r12d 0.00 : 631a58: 0f 84 fb 01 00 00 je 631c59 : new_path->rows >= old_path->rows) : accept_new = false; /* old dominates new */ : } : else /* keyscmp == PATHKEYS_EQUAL */ : { : if (outercmp == BMS_EQUAL) 0.00 : 631a5e: 85 c0 test %eax,%eax 0.00 : 631a60: 0f 85 92 02 00 00 jne 631cf8 : * old path. Notice that we will keep only : * the old path even if the less-fuzzy : * comparison decides the startup and total : * costs compare differently. : */ : if (new_path->rows < old_path->rows) 0.00 : 631a66: f2 41 0f 10 4e 18 movsd 0x18(%r14),%xmm1 0.00 : 631a6c: f2 41 0f 10 45 18 movsd 0x18(%r13),%xmm0 0.00 : 631a72: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 631a76: 0f 87 96 02 00 00 ja 631d12 : remove_old = true; /* new dominates old */ : else if (new_path->rows > old_path->rows) 0.00 : 631a7c: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 631a80: 0f 87 ed 01 00 00 ja 631c73 : { : /* : * Check total cost first since it's more likely to be different; many : * paths have zero startup cost. : */ : if (path1->total_cost > path2->total_cost * fuzz_factor) 0.00 : 631a86: f2 41 0f 10 55 28 movsd 0x28(%r13),%xmm2 : */ : if (new_path->rows < old_path->rows) : remove_old = true; /* new dominates old */ : else if (new_path->rows > old_path->rows) : accept_new = false; /* old dominates new */ : else if (compare_path_costs_fuzzily(new_path, 0.00 : 631a8c: 48 8b 55 a8 mov -0x58(%rbp),%rdx : { : /* : * Check total cost first since it's more likely to be different; many : * paths have zero startup cost. : */ : if (path1->total_cost > path2->total_cost * fuzz_factor) 0.00 : 631a90: f2 0f 10 05 00 b1 26 movsd 0x26b100(%rip),%xmm0 # 89cb98 <__func__.11460+0x58> 0.00 : 631a97: 00 0.00 : 631a98: f2 41 0f 10 5e 28 movsd 0x28(%r14),%xmm3 0.00 : 631a9e: f2 0f 59 c2 mulsd %xmm2,%xmm0 : */ : if (new_path->rows < old_path->rows) : remove_old = true; /* new dominates old */ : else if (new_path->rows > old_path->rows) : accept_new = false; /* old dominates new */ : else if (compare_path_costs_fuzzily(new_path, 0.00 : 631aa2: 0f b6 42 1c movzbl 0x1c(%rdx),%eax : { : /* : * Check total cost first since it's more likely to be different; many : * paths have zero startup cost. : */ : if (path1->total_cost > path2->total_cost * fuzz_factor) 0.00 : 631aa6: 66 0f 2e d8 ucomisd %xmm0,%xmm3 0.00 : 631aaa: 0f 86 f2 02 00 00 jbe 631da2 : case COSTS_BETTER2: : if (keyscmp != PATHKEYS_BETTER1) : { : outercmp = bms_subset_compare(PATH_REQ_OUTER(new_path), : PATH_REQ_OUTER(old_path)); : if ((outercmp == BMS_EQUAL || 0.00 : 631ab0: c6 45 b7 00 movb $0x0,-0x49(%rbp) 0.00 : 631ab4: eb 4e jmp 631b04 0.00 : 631ab6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 631abd: 00 00 00 : accept_new = false; /* old dominates new */ : /* else different parameterizations, keep both */ : } : break; : case COSTS_BETTER1: : if (keyscmp != PATHKEYS_BETTER2) 0.00 : 631ac0: 83 f8 02 cmp $0x2,%eax 0.00 : 631ac3: 74 33 je 631af8 : { : outercmp = bms_subset_compare(PATH_REQ_OUTER(new_path), 0.00 : 631ac5: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 631ac9: 31 f6 xor %esi,%esi 0.00 : 631acb: 48 85 c0 test %rax,%rax 0.00 : 631ace: 74 04 je 631ad4 0.00 : 631ad0: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 631ad4: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 631ad8: 31 ff xor %edi,%edi 0.00 : 631ada: 48 85 c0 test %rax,%rax 0.00 : 631add: 74 04 je 631ae3 0.00 : 631adf: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 631ae3: e8 f8 0c fb ff callq 5e27e0 : PATH_REQ_OUTER(old_path)); : if ((outercmp == BMS_EQUAL || 0.00 : 631ae8: 83 f8 01 cmp $0x1,%eax 0.00 : 631aeb: 0f 86 0f 02 00 00 jbe 631d00 0.00 : 631af1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case COSTS_BETTER2: : if (keyscmp != PATHKEYS_BETTER1) : { : outercmp = bms_subset_compare(PATH_REQ_OUTER(new_path), : PATH_REQ_OUTER(old_path)); : if ((outercmp == BMS_EQUAL || 0.00 : 631af8: f2 41 0f 10 5e 28 movsd 0x28(%r14),%xmm3 0.00 : 631afe: f2 41 0f 10 55 28 movsd 0x28(%r13),%xmm2 : /* p1_prev does not advance */ : } : else : { : /* new belongs after this old path if it has cost >= old's */ : if (new_path->total_cost >= old_path->total_cost) 0.00 : 631b04: 4c 89 7d c8 mov %r15,-0x38(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/pathnode.c:571 50.00 : 631b08: 66 0f 2e da ucomisd %xmm2,%xmm3 0.00 : 631b0c: 0f 83 83 02 00 00 jae 631d95 0.00 : 631b12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * If we found an old path that dominates new_path, we can quit : * scanning the pathlist; we will not add new_path, and we assume : * new_path cannot dominate any other elements of the pathlist. : */ : if (!accept_new) 0.00 : 631b18: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 631b1c: 0f 84 8e 01 00 00 je 631cb0 : break; 0.00 : 631b22: 4c 8b 7d d0 mov -0x30(%rbp),%r15 : * : * We can't use foreach here because the loop body may delete the current : * list cell. : */ : p1_prev = NULL; : for (p1 = list_head(parent_rel->pathlist); p1 != NULL; p1 = p1_next) 0.00 : 631b26: 4d 85 ff test %r15,%r15 0.00 : 631b29: 0f 85 61 fe ff ff jne 631990 : } : : if (accept_new) : { : /* Accept the new path: insert it at proper place in pathlist */ : if (insert_after) 0.00 : 631b2f: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) : * : * We can't use foreach here because the loop body may delete the current : * list cell. : */ : p1_prev = NULL; : for (p1 = list_head(parent_rel->pathlist); p1 != NULL; p1 = p1_next) 0.00 : 631b34: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 631b38: 48 8b 78 28 mov 0x28(%rax),%rdi : } : : if (accept_new) : { : /* Accept the new path: insert it at proper place in pathlist */ : if (insert_after) 0.00 : 631b3c: 0f 84 8e 01 00 00 je 631cd0 : lappend_cell(parent_rel->pathlist, insert_after, new_path); 0.00 : 631b42: 48 8b 75 b8 mov -0x48(%rbp),%rsi : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) : pfree(new_path); : } : } 0.00 : 631b46: 48 83 c4 38 add $0x38,%rsp : : if (accept_new) : { : /* Accept the new path: insert it at proper place in pathlist */ : if (insert_after) : lappend_cell(parent_rel->pathlist, insert_after, new_path); 0.00 : 631b4a: 4c 89 f2 mov %r14,%rdx : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) : pfree(new_path); : } : } 0.00 : 631b4d: 5b pop %rbx 0.00 : 631b4e: 41 5c pop %r12 0.00 : 631b50: 41 5d pop %r13 0.00 : 631b52: 41 5e pop %r14 0.00 : 631b54: 41 5f pop %r15 0.00 : 631b56: c9 leaveq : : if (accept_new) : { : /* Accept the new path: insert it at proper place in pathlist */ : if (insert_after) : lappend_cell(parent_rel->pathlist, insert_after, new_path); 0.00 : 631b57: e9 34 fe fa ff jmpq 5e1990 0.00 : 631b5c: 0f 1f 40 00 nopl 0x0(%rax) : return COSTS_DIFFERENT; : } : /* else path2 dominates */ : return COSTS_BETTER2; : } : if (path2->total_cost > path1->total_cost * fuzz_factor) 0.00 : 631b60: f2 0f 10 05 28 b0 26 movsd 0x26b028(%rip),%xmm0 # 89cb90 <__func__.11460+0x50> 0.00 : 631b67: 00 0.00 : 631b68: f2 0f 59 c3 mulsd %xmm3,%xmm0 0.00 : 631b6c: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 631b70: 76 5e jbe 631bd0 : { : /* path2 fuzzily worse on total cost */ : if (consider_startup && 0.00 : 631b72: 84 c0 test %al,%al 0.00 : 631b74: 74 3a je 631bb0 0.00 : 631b76: f2 0f 10 0d 12 b0 26 movsd 0x26b012(%rip),%xmm1 # 89cb90 <__func__.11460+0x50> 0.00 : 631b7d: 00 0.00 : 631b7e: f2 41 0f 10 46 20 movsd 0x20(%r14),%xmm0 0.00 : 631b84: f2 41 0f 59 4d 20 mulsd 0x20(%r13),%xmm1 0.00 : 631b8a: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 631b8e: 76 20 jbe 631bb0 0.00 : 631b90: 31 f6 xor %esi,%esi 0.00 : 631b92: 49 83 7d 10 00 cmpq $0x0,0x10(%r13) 0.00 : 631b97: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 631b9c: 0f 85 60 fe ff ff jne 631a02 0.00 : 631ba2: e9 5d ff ff ff jmpq 631b04 0.00 : 631ba7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 631bae: 00 00 0.00 : 631bb0: 49 8b 45 10 mov 0x10(%r13),%rax : if (costcmp != COSTS_DIFFERENT) : { : /* Similarly check to see if either dominates on pathkeys */ : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; 0.00 : 631bb4: 31 f6 xor %esi,%esi : return COSTS_BETTER2; : } : if (path2->total_cost > path1->total_cost * fuzz_factor) : { : /* path2 fuzzily worse on total cost */ : if (consider_startup && 0.00 : 631bb6: bb 01 00 00 00 mov $0x1,%ebx : if (costcmp != COSTS_DIFFERENT) : { : /* Similarly check to see if either dominates on pathkeys */ : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; 0.00 : 631bbb: 48 85 c0 test %rax,%rax 0.00 : 631bbe: 0f 85 3e fe ff ff jne 631a02 0.00 : 631bc4: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 631bc8: e9 35 fe ff ff jmpq 631a02 0.00 : 631bcd: 0f 1f 00 nopl (%rax) : /* else path1 dominates */ : return COSTS_BETTER1; : } : /* fuzzily the same on total cost */ : /* (so we may as well compare startup cost, even if !consider_startup) */ : if (path1->startup_cost > path2->startup_cost * fuzz_factor && 0.00 : 631bd0: f2 41 0f 10 55 20 movsd 0x20(%r13),%xmm2 0.00 : 631bd6: f2 0f 10 05 b2 af 26 movsd 0x26afb2(%rip),%xmm0 # 89cb90 <__func__.11460+0x50> 0.00 : 631bdd: 00 0.00 : 631bde: f2 41 0f 10 4e 20 movsd 0x20(%r14),%xmm1 0.00 : 631be4: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 631be8: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 631bec: 0f 87 9e 00 00 00 ja 631c90 0.00 : 631bf2: 49 8b 45 10 mov 0x10(%r13),%rax : path2->param_info == NULL) : { : /* ... but path1 fuzzily worse on startup, so path2 wins */ : return COSTS_BETTER2; : } : if (path2->startup_cost > path1->startup_cost * fuzz_factor && 0.00 : 631bf6: f2 0f 59 0d 92 af 26 mulsd 0x26af92(%rip),%xmm1 # 89cb90 <__func__.11460+0x50> 0.00 : 631bfd: 00 0.00 : 631bfe: 66 0f 2e d1 ucomisd %xmm1,%xmm2 0.00 : 631c02: 76 10 jbe 631c14 0.00 : 631c04: 49 83 7e 10 00 cmpq $0x0,0x10(%r14) 0.00 : 631c09: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 631c0e: 0f 84 e3 fd ff ff je 6319f7 : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) : pfree(new_path); : } : } 0.00 : 631c14: 31 db xor %ebx,%ebx 0.00 : 631c16: e9 dc fd ff ff jmpq 6319f7 0.00 : 631c1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; : keyscmp = compare_pathkeys(new_path_pathkeys, : old_path_pathkeys); : if (keyscmp != PATHKEYS_DIFFERENT) : { : switch (costcmp) 0.00 : 631c20: 83 fb 02 cmp $0x2,%ebx 0.00 : 631c23: 0f 85 cf fe ff ff jne 631af8 : new_path->rows <= old_path->rows) : remove_old = true; /* new dominates old */ : } : break; : case COSTS_BETTER2: : if (keyscmp != PATHKEYS_BETTER1) 0.00 : 631c29: 41 83 ec 01 sub $0x1,%r12d 0.00 : 631c2d: 0f 1f 00 nopl (%rax) 0.00 : 631c30: 0f 84 c2 fe ff ff je 631af8 : { : outercmp = bms_subset_compare(PATH_REQ_OUTER(new_path), 0.00 : 631c36: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 631c3a: 31 f6 xor %esi,%esi 0.00 : 631c3c: 48 85 c0 test %rax,%rax 0.00 : 631c3f: 74 04 je 631c45 0.00 : 631c41: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 631c45: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 631c49: 31 ff xor %edi,%edi 0.00 : 631c4b: 48 85 c0 test %rax,%rax 0.00 : 631c4e: 74 04 je 631c54 0.00 : 631c50: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 631c54: e8 87 0b fb ff callq 5e27e0 : PATH_REQ_OUTER(old_path)); : if ((outercmp == BMS_EQUAL || 0.00 : 631c59: 85 c0 test %eax,%eax 0.00 : 631c5b: 0f 85 ef 00 00 00 jne 631d50 0.00 : 631c61: f2 41 0f 10 46 18 movsd 0x18(%r14),%xmm0 0.00 : 631c67: 66 41 0f 2e 45 18 ucomisd 0x18(%r13),%xmm0 0.00 : 631c6d: 0f 82 85 fe ff ff jb 631af8 0.00 : 631c73: f2 41 0f 10 5e 28 movsd 0x28(%r14),%xmm3 0.00 : 631c79: f2 41 0f 10 55 28 movsd 0x28(%r13),%xmm2 0.00 : 631c7f: c6 45 b7 00 movb $0x0,-0x49(%rbp) 0.00 : 631c83: e9 7c fe ff ff jmpq 631b04 0.00 : 631c88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 631c8f: 00 : /* else path1 dominates */ : return COSTS_BETTER1; : } : /* fuzzily the same on total cost */ : /* (so we may as well compare startup cost, even if !consider_startup) */ : if (path1->startup_cost > path2->startup_cost * fuzz_factor && 0.00 : 631c90: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 631c94: 48 85 c0 test %rax,%rax 0.00 : 631c97: 0f 85 59 ff ff ff jne 631bf6 : path2->param_info == NULL) : { : /* ... but path1 fuzzily worse on startup, so path2 wins */ : return COSTS_BETTER2; : } : if (path2->startup_cost > path1->startup_cost * fuzz_factor && 0.00 : 631c9d: bb 02 00 00 00 mov $0x2,%ebx : if (costcmp != COSTS_DIFFERENT) : { : /* Similarly check to see if either dominates on pathkeys */ : List *old_path_pathkeys; : : old_path_pathkeys = old_path->param_info ? NIL : old_path->pathkeys; 0.00 : 631ca2: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 631ca6: e9 57 fd ff ff jmpq 631a02 0.00 : 631cab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : parent_rel->pathlist = lcons(new_path, parent_rel->pathlist); : } : else : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) 0.00 : 631cb0: 41 81 3e fa 01 00 00 cmpl $0x1fa,(%r14) 0.00 : 631cb7: 74 2a je 631ce3 : pfree(new_path); : } : } 0.00 : 631cb9: 48 83 c4 38 add $0x38,%rsp : } : else : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) : pfree(new_path); 0.00 : 631cbd: 4c 89 f7 mov %r14,%rdi : } : } 0.00 : 631cc0: 5b pop %rbx 0.00 : 631cc1: 41 5c pop %r12 0.00 : 631cc3: 41 5d pop %r13 0.00 : 631cc5: 41 5e pop %r14 0.00 : 631cc7: 41 5f pop %r15 0.00 : 631cc9: c9 leaveq : } : else : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) : pfree(new_path); 0.00 : 631cca: e9 b1 6e 16 00 jmpq 798b80 0.00 : 631ccf: 90 nop : { : /* Accept the new path: insert it at proper place in pathlist */ : if (insert_after) : lappend_cell(parent_rel->pathlist, insert_after, new_path); : else : parent_rel->pathlist = lcons(new_path, parent_rel->pathlist); 0.00 : 631cd0: 48 89 fe mov %rdi,%rsi 0.00 : 631cd3: 4c 89 f7 mov %r14,%rdi 0.00 : 631cd6: e8 75 fb fa ff callq 5e1850 0.00 : 631cdb: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 631cdf: 48 89 42 28 mov %rax,0x28(%rdx) : { : /* Reject and recycle the new path */ : if (!IsA(new_path, IndexPath)) : pfree(new_path); : } : } 0.00 : 631ce3: 48 83 c4 38 add $0x38,%rsp 0.00 : 631ce7: 5b pop %rbx 0.00 : 631ce8: 41 5c pop %r12 0.00 : 631cea: 41 5d pop %r13 0.00 : 631cec: 41 5e pop %r14 0.00 : 631cee: 41 5f pop %r15 0.00 : 631cf0: c9 leaveq 0.00 : 631cf1: c3 retq 0.00 : 631cf2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : remove_old = true; /* new dominates old */ : else : accept_new = false; /* old equals or : * dominates new */ : } : else if (outercmp == BMS_SUBSET1 && 0.00 : 631cf8: 83 f8 01 cmp $0x1,%eax 0.00 : 631cfb: 75 53 jne 631d50 0.00 : 631cfd: 0f 1f 00 nopl (%rax) : case COSTS_BETTER1: : if (keyscmp != PATHKEYS_BETTER2) : { : outercmp = bms_subset_compare(PATH_REQ_OUTER(new_path), : PATH_REQ_OUTER(old_path)); : if ((outercmp == BMS_EQUAL || 0.00 : 631d00: f2 41 0f 10 45 18 movsd 0x18(%r13),%xmm0 0.00 : 631d06: 66 41 0f 2e 46 18 ucomisd 0x18(%r14),%xmm0 0.00 : 631d0c: 0f 82 e6 fd ff ff jb 631af8 : /* : * Remove current element from pathlist if dominated by new. : */ : if (remove_old) : { : parent_rel->pathlist = list_delete_cell(parent_rel->pathlist, 0.00 : 631d12: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 631d16: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 631d1a: 4c 89 fe mov %r15,%rsi 0.00 : 631d1d: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 631d21: e8 3a 04 fb ff callq 5e2160 0.00 : 631d26: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 631d2a: 48 89 42 28 mov %rax,0x28(%rdx) : p1, p1_prev); : : /* : * Delete the data pointed-to by the deleted cell, if possible : */ : if (!IsA(old_path, IndexPath)) 0.00 : 631d2e: 41 81 7d 00 fa 01 00 cmpl $0x1fa,0x0(%r13) 0.00 : 631d35: 00 0.00 : 631d36: 0f 84 dc fd ff ff je 631b18 : pfree(old_path); 0.00 : 631d3c: 4c 89 ef mov %r13,%rdi 0.00 : 631d3f: e8 3c 6e 16 00 callq 798b80 0.00 : 631d44: e9 cf fd ff ff jmpq 631b18 0.00 : 631d49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case COSTS_BETTER2: : if (keyscmp != PATHKEYS_BETTER1) : { : outercmp = bms_subset_compare(PATH_REQ_OUTER(new_path), : PATH_REQ_OUTER(old_path)); : if ((outercmp == BMS_EQUAL || 0.00 : 631d50: 83 f8 02 cmp $0x2,%eax 0.00 : 631d53: 0f 85 9f fd ff ff jne 631af8 0.00 : 631d59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 631d60: e9 fc fe ff ff jmpq 631c61 0.00 : 631d65: 0f 1f 00 nopl (%rax) 0.00 : 631d68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 631d6f: 00 : : /* : * This is a convenient place to check for query cancel --- no part of the : * planner goes very long without calling add_path(). : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 631d70: e8 2b a5 06 00 callq 69c2a0 : : /* Pretend parameterized paths have no pathkeys, per comment above */ : new_path_pathkeys = new_path->param_info ? NIL : new_path->pathkeys; 0.00 : 631d75: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 631d7c: 00 0.00 : 631d7d: 49 83 7e 10 00 cmpq $0x0,0x10(%r14) 0.00 : 631d82: 0f 85 d2 fb ff ff jne 63195a 0.00 : 631d88: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 631d8c: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 631d90: e9 c5 fb ff ff jmpq 63195a : /* p1_prev does not advance */ : } : else : { : /* new belongs after this old path if it has cost >= old's */ : if (new_path->total_cost >= old_path->total_cost) 0.00 : 631d95: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : 631d99: 4c 89 7d c8 mov %r15,-0x38(%rbp) 0.00 : 631d9d: e9 76 fd ff ff jmpq 631b18 : return COSTS_DIFFERENT; : } : /* else path2 dominates */ : return COSTS_BETTER2; : } : if (path2->total_cost > path1->total_cost * fuzz_factor) 0.00 : 631da2: f2 0f 10 05 ee ad 26 movsd 0x26adee(%rip),%xmm0 # 89cb98 <__func__.11460+0x58> 0.00 : 631da9: 00 0.00 : 631daa: f2 0f 59 c3 mulsd %xmm3,%xmm0 0.00 : 631dae: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 631db2: 76 3c jbe 631df0 : { : /* path2 fuzzily worse on total cost */ : if (consider_startup && 0.00 : 631db4: 84 c0 test %al,%al 0.00 : 631db6: 0f 84 56 ff ff ff je 631d12 0.00 : 631dbc: f2 0f 10 0d d4 ad 26 movsd 0x26add4(%rip),%xmm1 # 89cb98 <__func__.11460+0x58> 0.00 : 631dc3: 00 0.00 : 631dc4: f2 41 0f 10 46 20 movsd 0x20(%r14),%xmm0 0.00 : 631dca: f2 41 0f 59 4d 20 mulsd 0x20(%r13),%xmm1 0.00 : 631dd0: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 631dd4: 0f 86 38 ff ff ff jbe 631d12 0.00 : 631dda: 49 83 7d 10 00 cmpq $0x0,0x10(%r13) 0.00 : 631ddf: 0f 85 2d ff ff ff jne 631d12 0.00 : 631de5: e9 c6 fc ff ff jmpq 631ab0 0.00 : 631dea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* else path1 dominates */ : return COSTS_BETTER1; : } : /* fuzzily the same on total cost */ : /* (so we may as well compare startup cost, even if !consider_startup) */ : if (path1->startup_cost > path2->startup_cost * fuzz_factor && 0.00 : 631df0: f2 41 0f 10 65 20 movsd 0x20(%r13),%xmm4 0.00 : 631df6: f2 0f 10 05 9a ad 26 movsd 0x26ad9a(%rip),%xmm0 # 89cb98 <__func__.11460+0x58> 0.00 : 631dfd: 00 0.00 : 631dfe: f2 41 0f 10 4e 20 movsd 0x20(%r14),%xmm1 0.00 : 631e04: f2 0f 59 c4 mulsd %xmm4,%xmm0 0.00 : 631e08: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 631e0c: 76 0b jbe 631e19 0.00 : 631e0e: 49 83 7d 10 00 cmpq $0x0,0x10(%r13) 0.00 : 631e13: 0f 84 97 fc ff ff je 631ab0 : path2->param_info == NULL) : { : /* ... but path1 fuzzily worse on startup, so path2 wins */ : return COSTS_BETTER2; : } : if (path2->startup_cost > path1->startup_cost * fuzz_factor && 0.00 : 631e19: f2 0f 59 0d 77 ad 26 mulsd 0x26ad77(%rip),%xmm1 # 89cb98 <__func__.11460+0x58> 0.00 : 631e20: 00 0.00 : 631e21: 66 0f 2e e1 ucomisd %xmm1,%xmm4 0.00 : 631e25: 0f 86 85 fc ff ff jbe 631ab0 0.00 : 631e2b: 49 83 7e 10 00 cmpq $0x0,0x10(%r14) 0.00 : 631e30: 0f 85 7a fc ff ff jne 631ab0 0.00 : 631e36: e9 d7 fe ff ff jmpq 631d12 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/predtest.c:801 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000633e10 : : * cannot just stop after considering MAX_SAOP_ARRAY_SIZE elements; in general : * that would result in wrong proofs, rather than failing to prove anything. : */ : static PredClass : predicate_classify(Node *clause, PredIterInfo info) : { 0.00 : 633e10: 55 push %rbp 0.00 : 633e11: 48 89 e5 mov %rsp,%rbp 0.00 : 633e14: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 633e18: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 633e1c: 48 83 ec 10 sub $0x10,%rsp : : /* : * If we see a List, assume it's an implicit-AND list; this is the correct : * semantics for lists of RestrictInfo nodes. : */ : if (IsA(clause, List)) 0.00 : 633e20: 81 3f 90 02 00 00 cmpl $0x290,(%rdi) : * cannot just stop after considering MAX_SAOP_ARRAY_SIZE elements; in general : * that would result in wrong proofs, rather than failing to prove anything. : */ : static PredClass : predicate_classify(Node *clause, PredIterInfo info) : { 0.00 : 633e26: 49 89 fc mov %rdi,%r12 0.00 : 633e29: 48 89 f3 mov %rsi,%rbx : : /* : * If we see a List, assume it's an implicit-AND list; this is the correct : * semantics for lists of RestrictInfo nodes. : */ : if (IsA(clause, List)) 0.00 : 633e2c: 74 32 je 633e60 : info->cleanup_fn = list_cleanup_fn; : return CLASS_AND; : } : : /* Handle normal AND and OR boolean clauses */ : if (and_clause(clause)) 0.00 : 633e2e: e8 8d 6d ff ff callq 62abc0 0.00 : 633e33: 84 c0 test %al,%al 0.00 : 633e35: 74 49 je 633e80 : { : info->startup_fn = boolexpr_startup_fn; 0.00 : 633e37: 48 c7 43 08 e0 3c 63 movq $0x633ce0,0x8(%rbx) 0.00 : 633e3e: 00 : info->next_fn = list_next_fn; 0.00 : 633e3f: 48 c7 43 10 b0 3c 63 movq $0x633cb0,0x10(%rbx) 0.00 : 633e46: 00 : info->cleanup_fn = list_cleanup_fn; 0.00 : 633e47: b8 01 00 00 00 mov $0x1,%eax 0.00 : 633e4c: 48 c7 43 18 d0 3c 63 movq $0x633cd0,0x18(%rbx) 0.00 : 633e53: 00 : } : } : : /* None of the above, so it's an atom */ : return CLASS_ATOM; : } 0.00 : 633e54: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 633e58: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 633e5d: c9 leaveq 0.00 : 633e5e: c3 retq 0.00 : 633e5f: 90 nop : * If we see a List, assume it's an implicit-AND list; this is the correct : * semantics for lists of RestrictInfo nodes. : */ : if (IsA(clause, List)) : { : info->startup_fn = list_startup_fn; 0.00 : 633e60: 48 c7 46 08 90 3c 63 movq $0x633c90,0x8(%rsi) 0.00 : 633e67: 00 : info->next_fn = list_next_fn; 0.00 : 633e68: 48 c7 46 10 b0 3c 63 movq $0x633cb0,0x10(%rsi) 0.00 : 633e6f: 00 : info->cleanup_fn = list_cleanup_fn; 0.00 : 633e70: b8 01 00 00 00 mov $0x1,%eax 0.00 : 633e75: 48 c7 46 18 d0 3c 63 movq $0x633cd0,0x18(%rsi) 0.00 : 633e7c: 00 : } : } : : /* None of the above, so it's an atom */ : return CLASS_ATOM; : } 0.00 : 633e7d: eb d5 jmp 633e54 0.00 : 633e7f: 90 nop : info->startup_fn = boolexpr_startup_fn; : info->next_fn = list_next_fn; : info->cleanup_fn = list_cleanup_fn; : return CLASS_AND; : } : if (or_clause(clause)) 0.00 : 633e80: 4c 89 e7 mov %r12,%rdi 0.00 : 633e83: e8 08 6d ff ff callq 62ab90 0.00 : 633e88: 84 c0 test %al,%al 0.00 : 633e8a: 74 24 je 633eb0 : { : info->startup_fn = boolexpr_startup_fn; 0.00 : 633e8c: 48 c7 43 08 e0 3c 63 movq $0x633ce0,0x8(%rbx) 0.00 : 633e93: 00 : info->next_fn = list_next_fn; 0.00 : 633e94: 48 c7 43 10 b0 3c 63 movq $0x633cb0,0x10(%rbx) 0.00 : 633e9b: 00 : info->cleanup_fn = list_cleanup_fn; 0.00 : 633e9c: b8 02 00 00 00 mov $0x2,%eax 0.00 : 633ea1: 48 c7 43 18 d0 3c 63 movq $0x633cd0,0x18(%rbx) 0.00 : 633ea8: 00 : } : } : : /* None of the above, so it's an atom */ : return CLASS_ATOM; : } 0.00 : 633ea9: eb a9 jmp 633e54 0.00 : 633eab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : info->cleanup_fn = list_cleanup_fn; : return CLASS_OR; : } : : /* Handle ScalarArrayOpExpr */ : if (IsA(clause, ScalarArrayOpExpr)) 0.00 : 633eb0: 41 81 3c 24 3a 01 00 cmpl $0x13a,(%r12) 0.00 : 633eb7: 00 0.00 : 633eb8: 74 06 je 633ec0 : list_length(((ArrayExpr *) arraynode)->elements) <= MAX_SAOP_ARRAY_SIZE) : { : info->startup_fn = arrayexpr_startup_fn; : info->next_fn = arrayexpr_next_fn; : info->cleanup_fn = arrayexpr_cleanup_fn; : return saop->useOr ? CLASS_OR : CLASS_AND; 0.00 : 633eba: 31 c0 xor %eax,%eax 0.00 : 633ebc: eb 96 jmp 633e54 0.00 : 633ebe: 66 90 xchg %ax,%ax : : /* Handle ScalarArrayOpExpr */ : if (IsA(clause, ScalarArrayOpExpr)) : { : ScalarArrayOpExpr *saop = (ScalarArrayOpExpr *) clause; : Node *arraynode = (Node *) lsecond(saop->args); 0.00 : 633ec0: 49 8b 54 24 18 mov 0x18(%r12),%rdx : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 633ec5: 31 c0 xor %eax,%eax 0.00 : 633ec7: 48 85 d2 test %rdx,%rdx 0.00 : 633eca: 74 04 je 633ed0 0.00 : 633ecc: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 633ed0: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 633ed4: 48 8b 00 mov (%rax),%rax : * We can break this down into an AND or OR structure, but only if we : * know how to iterate through expressions for the array's elements. : * We can do that if the array operand is a non-null constant or a : * simple ArrayExpr. : */ : if (arraynode && IsA(arraynode, Const) && 0.00 : 633ed7: 48 85 c0 test %rax,%rax 0.00 : 633eda: 74 de je 633eba 0.00 : 633edc: 8b 10 mov (%rax),%edx 0.00 : 633ede: 81 fa 30 01 00 00 cmp $0x130,%edx 0.00 : 633ee4: 74 47 je 633f2d : info->next_fn = arrayconst_next_fn; : info->cleanup_fn = arrayconst_cleanup_fn; : return saop->useOr ? CLASS_OR : CLASS_AND; : } : } : else if (arraynode && IsA(arraynode, ArrayExpr) && 0.00 : 633ee6: 81 fa 49 01 00 00 cmp $0x149,%edx 0.00 : 633eec: 75 cc jne 633eba 0.00 : 633eee: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 633ef2: 75 c6 jne 633eba 0.00 : 633ef4: 48 8b 40 10 mov 0x10(%rax),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 633ef8: 48 85 c0 test %rax,%rax 0.00 : 633efb: 74 06 je 633f03 0.00 : 633efd: 83 78 04 64 cmpl $0x64,0x4(%rax) 0.00 : 633f01: 7f b7 jg 633eba : !((ArrayExpr *) arraynode)->multidims && : list_length(((ArrayExpr *) arraynode)->elements) <= MAX_SAOP_ARRAY_SIZE) : { : info->startup_fn = arrayexpr_startup_fn; 0.00 : 633f03: 48 c7 43 08 f0 3f 63 movq $0x633ff0,0x8(%rbx) 0.00 : 633f0a: 00 : info->next_fn = arrayexpr_next_fn; 0.00 : 633f0b: 48 c7 43 10 40 3d 63 movq $0x633d40,0x10(%rbx) 0.00 : 633f12: 00 : info->cleanup_fn = arrayexpr_cleanup_fn; 0.00 : 633f13: 48 c7 43 18 80 3f 63 movq $0x633f80,0x18(%rbx) 0.00 : 633f1a: 00 : return saop->useOr ? CLASS_OR : CLASS_AND; 0.00 : 633f1b: 41 80 7c 24 0c 00 cmpb $0x0,0xc(%r12) 0.00 : 633f21: 75 4e jne 633f71 0.00 : 633f23: b8 01 00 00 00 mov $0x1,%eax 0.00 : 633f28: e9 27 ff ff ff jmpq 633e54 : * We can break this down into an AND or OR structure, but only if we : * know how to iterate through expressions for the array's elements. : * We can do that if the array operand is a non-null constant or a : * simple ArrayExpr. : */ : if (arraynode && IsA(arraynode, Const) && 0.00 : 633f2d: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 633f31: 75 87 jne 633eba : !((Const *) arraynode)->constisnull) : { : ArrayType *arrayval; : int nelems; : : arrayval = DatumGetArrayTypeP(((Const *) arraynode)->constvalue); 0.00 : 633f33: 48 8b 78 18 mov 0x18(%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/predtest.c:801 100.00 : 633f37: e8 d4 ad 14 00 callq 77ed10 : nelems = ArrayGetNItems(ARR_NDIM(arrayval), ARR_DIMS(arrayval)); 0.00 : 633f3c: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 633f3f: 48 8d 70 10 lea 0x10(%rax),%rsi 0.00 : 633f43: e8 08 04 09 00 callq 6c4350 : if (nelems <= MAX_SAOP_ARRAY_SIZE) 0.00 : 633f48: 83 f8 64 cmp $0x64,%eax 0.00 : 633f4b: 0f 8f 69 ff ff ff jg 633eba : { : info->startup_fn = arrayconst_startup_fn; 0.00 : 633f51: 48 c7 43 08 90 40 63 movq $0x634090,0x8(%rbx) 0.00 : 633f58: 00 : info->next_fn = arrayconst_next_fn; 0.00 : 633f59: 48 c7 43 10 00 3d 63 movq $0x633d00,0x10(%rbx) 0.00 : 633f60: 00 : info->cleanup_fn = arrayconst_cleanup_fn; 0.00 : 633f61: 48 c7 43 18 b0 3f 63 movq $0x633fb0,0x18(%rbx) 0.00 : 633f68: 00 : return saop->useOr ? CLASS_OR : CLASS_AND; 0.00 : 633f69: 41 80 7c 24 0c 00 cmpb $0x0,0xc(%r12) 0.00 : 633f6f: 74 b2 je 633f23 : list_length(((ArrayExpr *) arraynode)->elements) <= MAX_SAOP_ARRAY_SIZE) : { : info->startup_fn = arrayexpr_startup_fn; : info->next_fn = arrayexpr_next_fn; : info->cleanup_fn = arrayexpr_cleanup_fn; : return saop->useOr ? CLASS_OR : CLASS_AND; 0.00 : 633f71: b8 02 00 00 00 mov $0x2,%eax 0.00 : 633f76: e9 d9 fe ff ff jmpq 633e54 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1672 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000642140 : : /* : * get_tabstat_entry - find or create a PgStat_TableStatus entry for rel : */ : static PgStat_TableStatus * : get_tabstat_entry(Oid rel_id, bool isshared) : { 0.00 : 642140: 55 push %rbp 0.00 : 642141: 48 89 e5 mov %rsp,%rbp 0.00 : 642144: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1672 100.00 : 642146: 41 89 f5 mov %esi,%r13d 0.00 : 642149: 41 54 push %r12 0.00 : 64214b: 41 89 fc mov %edi,%r12d 0.00 : 64214e: 53 push %rbx 0.00 : 64214f: 48 83 ec 08 sub $0x8,%rsp : : /* : * Search the already-used tabstat slots for this relation. : */ : prev_tsa = NULL; : for (tsa = pgStatTabList; tsa != NULL; prev_tsa = tsa, tsa = tsa->tsa_next) 0.00 : 642153: 48 8b 1d 36 9b 53 00 mov 0x539b36(%rip),%rbx # b7bc90 0.00 : 64215a: 48 85 db test %rbx,%rbx 0.00 : 64215d: 74 5a je 6421b9 : { : for (i = 0; i < tsa->tsa_used; i++) 0.00 : 64215f: 8b 7b 08 mov 0x8(%rbx),%edi 0.00 : 642162: 85 ff test %edi,%edi 0.00 : 642164: 7e 41 jle 6421a7 : { : entry = &tsa->tsa_entries[i]; : if (entry->t_id == rel_id) 0.00 : 642166: 44 39 63 10 cmp %r12d,0x10(%rbx) : prev_tsa = NULL; : for (tsa = pgStatTabList; tsa != NULL; prev_tsa = tsa, tsa = tsa->tsa_next) : { : for (i = 0; i < tsa->tsa_used; i++) : { : entry = &tsa->tsa_entries[i]; 0.00 : 64216a: 48 8d 73 10 lea 0x10(%rbx),%rsi : if (entry->t_id == rel_id) 0.00 : 64216e: 0f 84 8c 00 00 00 je 642200 0.00 : 642174: 31 c9 xor %ecx,%ecx 0.00 : 642176: eb 28 jmp 6421a0 0.00 : 642178: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 64217f: 00 : prev_tsa = NULL; : for (tsa = pgStatTabList; tsa != NULL; prev_tsa = tsa, tsa = tsa->tsa_next) : { : for (i = 0; i < tsa->tsa_used; i++) : { : entry = &tsa->tsa_entries[i]; 0.00 : 642180: 48 63 d1 movslq %ecx,%rdx 0.00 : 642183: 48 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%rax 0.00 : 64218a: 00 0.00 : 64218b: 48 29 d0 sub %rdx,%rax 0.00 : 64218e: 48 83 c0 01 add $0x1,%rax 0.00 : 642192: 48 c1 e0 04 shl $0x4,%rax : if (entry->t_id == rel_id) 0.00 : 642196: 44 39 24 18 cmp %r12d,(%rax,%rbx,1) : prev_tsa = NULL; : for (tsa = pgStatTabList; tsa != NULL; prev_tsa = tsa, tsa = tsa->tsa_next) : { : for (i = 0; i < tsa->tsa_used; i++) : { : entry = &tsa->tsa_entries[i]; 0.00 : 64219a: 48 8d 34 03 lea (%rbx,%rax,1),%rsi : if (entry->t_id == rel_id) 0.00 : 64219e: 74 60 je 642200 : * Search the already-used tabstat slots for this relation. : */ : prev_tsa = NULL; : for (tsa = pgStatTabList; tsa != NULL; prev_tsa = tsa, tsa = tsa->tsa_next) : { : for (i = 0; i < tsa->tsa_used; i++) 0.00 : 6421a0: 83 c1 01 add $0x1,%ecx 0.00 : 6421a3: 39 f9 cmp %edi,%ecx 0.00 : 6421a5: 7c d9 jl 642180 : entry = &tsa->tsa_entries[i]; : if (entry->t_id == rel_id) : return entry; : } : : if (tsa->tsa_used < TABSTAT_QUANTUM) 0.00 : 6421a7: 83 ff 63 cmp $0x63,%edi 0.00 : 6421aa: 7e 7b jle 642227 : : /* : * Search the already-used tabstat slots for this relation. : */ : prev_tsa = NULL; : for (tsa = pgStatTabList; tsa != NULL; prev_tsa = tsa, tsa = tsa->tsa_next) 0.00 : 6421ac: 48 8b 03 mov (%rbx),%rax 0.00 : 6421af: 48 85 c0 test %rax,%rax 0.00 : 6421b2: 74 5a je 64220e 0.00 : 6421b4: 48 89 c3 mov %rax,%rbx 0.00 : 6421b7: eb a6 jmp 64215f : } : : /* : * We ran out of tabstat slots, so allocate more. Be sure they're zeroed. : */ : tsa = (TabStatusArray *) MemoryContextAllocZero(TopMemoryContext, 0.00 : 6421b9: 48 8b 3d a8 86 57 00 mov 0x5786a8(%rip),%rdi # bba868 0.00 : 6421c0: be d0 2b 00 00 mov $0x2bd0,%esi 0.00 : 6421c5: e8 56 6e 15 00 callq 799020 0.00 : 6421ca: 48 89 c7 mov %rax,%rdi : sizeof(TabStatusArray)); : if (prev_tsa) : prev_tsa->tsa_next = tsa; : else : pgStatTabList = tsa; 0.00 : 6421cd: 48 89 05 bc 9a 53 00 mov %rax,0x539abc(%rip) # b7bc90 : : /* : * Use the first entry of the new TabStatusArray. : */ : entry = &tsa->tsa_entries[tsa->tsa_used++]; 0.00 : 6421d4: 8b 4f 08 mov 0x8(%rdi),%ecx 0.00 : 6421d7: 48 63 d1 movslq %ecx,%rdx 0.00 : 6421da: 83 c1 01 add $0x1,%ecx 0.00 : 6421dd: 48 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%rax 0.00 : 6421e4: 00 0.00 : 6421e5: 89 4f 08 mov %ecx,0x8(%rdi) 0.00 : 6421e8: 48 29 d0 sub %rdx,%rax 0.00 : 6421eb: 48 83 c0 01 add $0x1,%rax 0.00 : 6421ef: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6421f3: 48 8d 34 07 lea (%rdi,%rax,1),%rsi : entry->t_id = rel_id; 0.00 : 6421f7: 44 89 24 38 mov %r12d,(%rax,%rdi,1) : entry->t_shared = isshared; 0.00 : 6421fb: 44 88 6c 38 04 mov %r13b,0x4(%rax,%rdi,1) : return entry; : } 0.00 : 642200: 48 83 c4 08 add $0x8,%rsp 0.00 : 642204: 48 89 f0 mov %rsi,%rax 0.00 : 642207: 5b pop %rbx 0.00 : 642208: 41 5c pop %r12 0.00 : 64220a: 41 5d pop %r13 0.00 : 64220c: c9 leaveq 0.00 : 64220d: c3 retq : } : : /* : * We ran out of tabstat slots, so allocate more. Be sure they're zeroed. : */ : tsa = (TabStatusArray *) MemoryContextAllocZero(TopMemoryContext, 0.00 : 64220e: 48 8b 3d 53 86 57 00 mov 0x578653(%rip),%rdi # bba868 0.00 : 642215: be d0 2b 00 00 mov $0x2bd0,%esi 0.00 : 64221a: e8 01 6e 15 00 callq 799020 0.00 : 64221f: 48 89 c7 mov %rax,%rdi : sizeof(TabStatusArray)); : if (prev_tsa) : prev_tsa->tsa_next = tsa; 0.00 : 642222: 48 89 03 mov %rax,(%rbx) 0.00 : 642225: eb ad jmp 6421d4 : /* : * It must not be present, but we found a free slot instead. Fine, : * let's use this one. We assume the entry was already zeroed, : * either at creation or after last use. : */ : entry = &tsa->tsa_entries[tsa->tsa_used++]; 0.00 : 642227: 48 63 c7 movslq %edi,%rax 0.00 : 64222a: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 642231: 00 0.00 : 642232: 48 29 c2 sub %rax,%rdx 0.00 : 642235: 8d 47 01 lea 0x1(%rdi),%eax 0.00 : 642238: 48 83 c2 01 add $0x1,%rdx 0.00 : 64223c: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 642240: 89 43 08 mov %eax,0x8(%rbx) 0.00 : 642243: 48 8d 34 13 lea (%rbx,%rdx,1),%rsi : entry->t_id = rel_id; 0.00 : 642247: 44 89 24 1a mov %r12d,(%rdx,%rbx,1) : entry->t_shared = isshared; 0.00 : 64224b: 44 88 6c 1a 04 mov %r13b,0x4(%rdx,%rbx,1) : */ : entry = &tsa->tsa_entries[tsa->tsa_used++]; : entry->t_id = rel_id; : entry->t_shared = isshared; : return entry; : } 0.00 : 642250: eb ae jmp 642200 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/rewrite/rewriteHandler.c:733 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000066f4f0 : : * processing VALUES RTEs. : */ : static void : rewriteTargetListIU(Query *parsetree, Relation target_relation, : List **attrno_list) : { 0.00 : 66f4f0: 55 push %rbp 0.00 : 66f4f1: 48 89 e5 mov %rsp,%rbp 0.00 : 66f4f4: 41 57 push %r15 0.00 : 66f4f6: 41 56 push %r14 0.00 : 66f4f8: 41 55 push %r13 0.00 : 66f4fa: 41 54 push %r12 0.00 : 66f4fc: 53 push %rbx 0.00 : 66f4fd: 48 83 ec 78 sub $0x78,%rsp 0.00 : 66f501: 48 89 7d 88 mov %rdi,-0x78(%rbp) 0.00 : 66f505: 48 89 75 80 mov %rsi,-0x80(%rbp) 0.00 : 66f509: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) : CmdType commandType = parsetree->commandType; 0.00 : 66f510: 8b 47 04 mov 0x4(%rdi),%eax : int attrno, : next_junk_attrno, : numattrs; : ListCell *temp; : : if (attrno_list) /* initialize optional result list */ 0.00 : 66f513: 48 85 d2 test %rdx,%rdx : */ : static void : rewriteTargetListIU(Query *parsetree, Relation target_relation, : List **attrno_list) : { : CmdType commandType = parsetree->commandType; 0.00 : 66f516: 89 45 9c mov %eax,-0x64(%rbp) : int attrno, : next_junk_attrno, : numattrs; : ListCell *temp; : : if (attrno_list) /* initialize optional result list */ 0.00 : 66f519: 74 07 je 66f522 : *attrno_list = NIL; 0.00 : 66f51b: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) : * of attributes. : * : * Junk attributes are tossed into a separate list during the same tlist : * scan, then appended to the reconstructed tlist. : */ : numattrs = RelationGetNumberOfAttributes(target_relation); 0.00 : 66f522: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 66f526: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 66f52a: 0f bf 40 70 movswl 0x70(%rax),%eax : new_tles = (TargetEntry **) palloc0(numattrs * sizeof(TargetEntry *)); 0.00 : 66f52e: 48 63 f8 movslq %eax,%rdi : * of attributes. : * : * Junk attributes are tossed into a separate list during the same tlist : * scan, then appended to the reconstructed tlist. : */ : numattrs = RelationGetNumberOfAttributes(target_relation); 0.00 : 66f531: 89 45 bc mov %eax,-0x44(%rbp) : new_tles = (TargetEntry **) palloc0(numattrs * sizeof(TargetEntry *)); 0.00 : 66f534: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 66f538: e8 33 9a 12 00 callq 798f70 : next_junk_attrno = numattrs + 1; : : foreach(temp, parsetree->targetList) 0.00 : 66f53d: 48 8b 4d 88 mov -0x78(%rbp),%rcx : * : * Junk attributes are tossed into a separate list during the same tlist : * scan, then appended to the reconstructed tlist. : */ : numattrs = RelationGetNumberOfAttributes(target_relation); : new_tles = (TargetEntry **) palloc0(numattrs * sizeof(TargetEntry *)); 0.00 : 66f541: 48 89 45 a0 mov %rax,-0x60(%rbp) : next_junk_attrno = numattrs + 1; : : foreach(temp, parsetree->targetList) 0.00 : 66f545: 48 8b 41 48 mov 0x48(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 66f549: 48 85 c0 test %rax,%rax 0.00 : 66f54c: 0f 84 be 05 00 00 je 66fb10 0.00 : 66f552: 4c 8b 70 08 mov 0x8(%rax),%r14 0.00 : 66f556: 4d 85 f6 test %r14,%r14 0.00 : 66f559: 0f 84 b1 05 00 00 je 66fb10 : * Junk attributes are tossed into a separate list during the same tlist : * scan, then appended to the reconstructed tlist. : */ : numattrs = RelationGetNumberOfAttributes(target_relation); : new_tles = (TargetEntry **) palloc0(numattrs * sizeof(TargetEntry *)); : next_junk_attrno = numattrs + 1; 0.00 : 66f55f: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 66f562: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 66f569: 00 0.00 : 66f56a: 83 c0 01 add $0x1,%eax 0.00 : 66f56d: 89 45 b8 mov %eax,-0x48(%rbp) : : foreach(temp, parsetree->targetList) : { : TargetEntry *old_tle = (TargetEntry *) lfirst(temp); 0.00 : 66f570: 4d 8b 26 mov (%r14),%r12 : : if (!old_tle->resjunk) 0.00 : 66f573: 41 80 7c 24 2a 00 cmpb $0x0,0x2a(%r12) 0.00 : 66f579: 75 45 jne 66f5c0 : { : /* Normal attr: stash it into new_tles[] */ : attrno = old_tle->resno; 0.00 : 66f57b: 41 0f bf 5c 24 10 movswl 0x10(%r12),%ebx : if (attrno < 1 || attrno > numattrs) 0.00 : 66f581: 85 db test %ebx,%ebx 0.00 : 66f583: 7e 09 jle 66f58e 0.00 : 66f585: 3b 5d bc cmp -0x44(%rbp),%ebx 0.00 : 66f588: 0f 8e 62 01 00 00 jle 66f6f0 : elog(ERROR, "bogus resno %d in targetlist", attrno); 0.00 : 66f58e: ba 10 97 8a 00 mov $0x8a9710,%edx 0.00 : 66f593: be d1 02 00 00 mov $0x2d1,%esi 0.00 : 66f598: bf bf 8c 8a 00 mov $0x8a8cbf,%edi 0.00 : 66f59d: e8 7e be 10 00 callq 77b420 0.00 : 66f5a2: 89 da mov %ebx,%edx 0.00 : 66f5a4: be d0 8c 8a 00 mov $0x8a8cd0,%esi 0.00 : 66f5a9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 66f5ae: 31 c0 xor %eax,%eax 0.00 : 66f5b0: e8 7b bc 10 00 callq 77b230 0.00 : 66f5b5: e8 16 9f df ff callq 4694d0 0.00 : 66f5ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * (are these actually possible in an INSERT or UPDATE?), system : * attribute references, etc. : */ : : /* Get the resno right, but don't copy unnecessarily */ : if (old_tle->resno != next_junk_attrno) 0.00 : 66f5c0: 41 0f bf 44 24 10 movswl 0x10(%r12),%eax 0.00 : 66f5c6: 3b 45 b8 cmp -0x48(%rbp),%eax 0.00 : 66f5c9: 74 13 je 66f5de : { : old_tle = flatCopyTargetEntry(old_tle); 0.00 : 66f5cb: 4c 89 e7 mov %r12,%rdi 0.00 : 66f5ce: e8 ed 25 f8 ff callq 5f1bc0 : old_tle->resno = next_junk_attrno; 0.00 : 66f5d3: 0f b7 55 b8 movzwl -0x48(%rbp),%edx : */ : : /* Get the resno right, but don't copy unnecessarily */ : if (old_tle->resno != next_junk_attrno) : { : old_tle = flatCopyTargetEntry(old_tle); 0.00 : 66f5d7: 49 89 c4 mov %rax,%r12 : old_tle->resno = next_junk_attrno; 0.00 : 66f5da: 66 89 50 10 mov %dx,0x10(%rax) : } : junk_tlist = lappend(junk_tlist, old_tle); 0.00 : 66f5de: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 66f5e2: 4c 89 e6 mov %r12,%rsi 0.00 : 66f5e5: e8 96 28 f7 ff callq 5e1e80 : next_junk_attrno++; 0.00 : 66f5ea: 83 45 b8 01 addl $0x1,-0x48(%rbp) : if (old_tle->resno != next_junk_attrno) : { : old_tle = flatCopyTargetEntry(old_tle); : old_tle->resno = next_junk_attrno; : } : junk_tlist = lappend(junk_tlist, old_tle); 0.00 : 66f5ee: 48 89 45 b0 mov %rax,-0x50(%rbp) : */ : numattrs = RelationGetNumberOfAttributes(target_relation); : new_tles = (TargetEntry **) palloc0(numattrs * sizeof(TargetEntry *)); : next_junk_attrno = numattrs + 1; : : foreach(temp, parsetree->targetList) 0.00 : 66f5f2: 4d 8b 76 08 mov 0x8(%r14),%r14 0.00 : 66f5f6: 4d 85 f6 test %r14,%r14 0.00 : 66f5f9: 0f 85 71 ff ff ff jne 66f570 : junk_tlist = lappend(junk_tlist, old_tle); : next_junk_attrno++; : } : } : : for (attrno = 1; attrno <= numattrs; attrno++) 0.00 : 66f5ff: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 66f603: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 66f60a: 00 0.00 : 66f60b: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 66f611: 45 85 c0 test %r8d,%r8d 0.00 : 66f614: 7f 7c jg 66f692 0.00 : 66f616: e9 b5 02 00 00 jmpq 66f8d0 0.00 : 66f61b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * Handle the two cases where we need to insert a default expression: : * it's an INSERT and there's no tlist entry for the column, or the : * tlist entry is a DEFAULT placeholder node. : */ : if ((new_tle == NULL && commandType == CMD_INSERT) || 0.00 : 66f620: 80 7d 9b 00 cmpb $0x0,-0x65(%rbp) 0.00 : 66f624: 74 3f je 66f665 : (new_tle && new_tle->expr && IsA(new_tle->expr, SetToDefault))) : { : Node *new_expr; : : new_expr = build_column_default(target_relation, attrno); 0.00 : 66f626: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 66f62a: 44 89 ee mov %r13d,%esi 0.00 : 66f62d: 0f 1f 00 nopl (%rax) 0.00 : 66f630: e8 3b fd ff ff callq 66f370 : * can omit the tlist entry in the INSERT case, since the planner : * can insert a NULL for itself, and there's no point in spending : * any more rewriter cycles on the entry. But in the UPDATE case : * we've got to explicitly set the column to NULL. : */ : if (!new_expr) 0.00 : 66f635: 48 85 c0 test %rax,%rax : if ((new_tle == NULL && commandType == CMD_INSERT) || : (new_tle && new_tle->expr && IsA(new_tle->expr, SetToDefault))) : { : Node *new_expr; : : new_expr = build_column_default(target_relation, attrno); 0.00 : 66f638: 49 89 c4 mov %rax,%r12 : * can omit the tlist entry in the INSERT case, since the planner : * can insert a NULL for itself, and there's no point in spending : * any more rewriter cycles on the entry. But in the UPDATE case : * we've got to explicitly set the column to NULL. : */ : if (!new_expr) 0.00 : 66f63b: 0f 84 ef 03 00 00 je 66fa30 : false); : } : } : : if (new_expr) : new_tle = makeTargetEntry((Expr *) new_expr, 0.00 : 66f641: 49 8d 7e 04 lea 0x4(%r14),%rdi 0.00 : 66f645: e8 06 99 12 00 callq 798f50 0.00 : 66f64a: 31 c9 xor %ecx,%ecx 0.00 : 66f64c: 41 0f bf f5 movswl %r13w,%esi 0.00 : 66f650: 48 89 c2 mov %rax,%rdx 0.00 : 66f653: 4c 89 e7 mov %r12,%rdi 0.00 : 66f656: e8 75 22 f8 ff callq 5f18d0 0.00 : 66f65b: 48 85 c0 test %rax,%rax 0.00 : 66f65e: 48 89 c3 mov %rax,%rbx 0.00 : 66f661: 41 0f 94 c7 sete %r15b : : /* : * For an UPDATE on a trigger-updatable view, provide a dummy entry : * whenever there is no explicit assignment. : */ : if (new_tle == NULL && commandType == CMD_UPDATE && 0.00 : 66f665: 83 7d 9c 02 cmpl $0x2,-0x64(%rbp) 0.00 : 66f669: 0f 84 91 02 00 00 je 66f900 : attrno, : pstrdup(NameStr(att_tup->attname)), : false); : } : : if (new_tle) 0.00 : 66f66f: 48 85 db test %rbx,%rbx 0.00 : 66f672: 74 10 je 66f684 : new_tlist = lappend(new_tlist, new_tle); 0.00 : 66f674: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 66f678: 48 89 de mov %rbx,%rsi 0.00 : 66f67b: e8 00 28 f7 ff callq 5e1e80 0.00 : 66f680: 48 89 45 a8 mov %rax,-0x58(%rbp) : junk_tlist = lappend(junk_tlist, old_tle); : next_junk_attrno++; : } : } : : for (attrno = 1; attrno <= numattrs; attrno++) 0.00 : 66f684: 41 83 c5 01 add $0x1,%r13d 0.00 : 66f688: 44 39 6d bc cmp %r13d,-0x44(%rbp) 0.00 : 66f68c: 0f 8c 3e 02 00 00 jl 66f8d0 : { : TargetEntry *new_tle = new_tles[attrno - 1]; 0.00 : 66f692: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 66f696: 49 63 c5 movslq %r13d,%rax 0.00 : 66f699: 48 83 e8 01 sub $0x1,%rax 0.00 : 66f69d: 48 8b 1c c1 mov (%rcx,%rax,8),%rbx : : att_tup = target_relation->rd_att->attrs[attrno - 1]; 0.00 : 66f6a1: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 66f6a5: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 66f6a9: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 66f6ad: 4c 8b 34 c2 mov (%rdx,%rax,8),%r14 : : /* We can (and must) ignore deleted attributes */ : if (att_tup->attisdropped) 0.00 : 66f6b1: 41 80 7e 61 00 cmpb $0x0,0x61(%r14) 0.00 : 66f6b6: 75 cc jne 66f684 : /* : * Handle the two cases where we need to insert a default expression: : * it's an INSERT and there's no tlist entry for the column, or the : * tlist entry is a DEFAULT placeholder node. : */ : if ((new_tle == NULL && commandType == CMD_INSERT) || 0.00 : 66f6b8: 48 85 db test %rbx,%rbx 0.00 : 66f6bb: 41 0f 94 c7 sete %r15b 0.00 : 66f6bf: 83 7d 9c 03 cmpl $0x3,-0x64(%rbp) 0.00 : 66f6c3: 0f 94 45 9b sete -0x65(%rbp) 0.00 : 66f6c7: 45 84 ff test %r15b,%r15b 0.00 : 66f6ca: 0f 85 50 ff ff ff jne 66f620 0.00 : 66f6d0: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 66f6d4: 48 85 c0 test %rax,%rax 0.00 : 66f6d7: 74 96 je 66f66f 0.00 : 66f6d9: 81 38 53 01 00 00 cmpl $0x153,(%rax) 0.00 : 66f6df: 75 8e jne 66f66f 0.00 : 66f6e1: e9 40 ff ff ff jmpq 66f626 0.00 : 66f6e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 66f6ed: 00 00 00 : { : /* Normal attr: stash it into new_tles[] */ : attrno = old_tle->resno; : if (attrno < 1 || attrno > numattrs) : elog(ERROR, "bogus resno %d in targetlist", attrno); : att_tup = target_relation->rd_att->attrs[attrno - 1]; 0.00 : 66f6f0: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 66f6f4: 48 63 c3 movslq %ebx,%rax 0.00 : 66f6f7: 48 83 e8 01 sub $0x1,%rax : : /* put attrno into attrno_list even if it's dropped */ : if (attrno_list) 0.00 : 66f6fb: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : 66f702: 00 : { : /* Normal attr: stash it into new_tles[] */ : attrno = old_tle->resno; : if (attrno < 1 || attrno > numattrs) : elog(ERROR, "bogus resno %d in targetlist", attrno); : att_tup = target_relation->rd_att->attrs[attrno - 1]; 0.00 : 66f703: 4c 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%r13 0.00 : 66f70a: 00 0.00 : 66f70b: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 66f70f: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 66f713: 4c 8b 3c c2 mov (%rdx,%rax,8),%r15 : : /* put attrno into attrno_list even if it's dropped */ : if (attrno_list) 0.00 : 66f717: 74 1b je 66f734 : *attrno_list = lappend_int(*attrno_list, attrno); 0.00 : 66f719: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 66f720: 89 de mov %ebx,%esi 0.00 : 66f722: 48 8b 38 mov (%rax),%rdi 0.00 : 66f725: e8 16 25 f7 ff callq 5e1c40 0.00 : 66f72a: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 66f731: 48 89 02 mov %rax,(%rdx) : : /* We can (and must) ignore deleted attributes */ : if (att_tup->attisdropped) 0.00 : 66f734: 41 80 7f 61 00 cmpb $0x0,0x61(%r15) 0.00 : 66f739: 0f 85 b3 fe ff ff jne 66f5f2 : continue; : : /* Merge with any prior assignment to same attribute */ : new_tles[attrno - 1] = 0.00 : 66f73f: 4c 03 6d a0 add -0x60(%rbp),%r13 0.00 : 66f743: 4c 89 6d 90 mov %r13,-0x70(%rbp) 0.00 : 66f747: 49 8b 45 00 mov 0x0(%r13),%rax : Node *src_input; : Node *prior_input; : Node *priorbottom; : Node *newexpr; : : if (prior_tle == NULL) 0.00 : 66f74b: 48 85 c0 test %rax,%rax 0.00 : 66f74e: 0f 84 6e 01 00 00 je 66f8c2 : * For FieldStore, instead of nesting we can generate a single : * FieldStore with multiple target fields. We must nest when : * ArrayRefs are involved though. : *---------- : */ : src_expr = (Node *) src_tle->expr; 0.00 : 66f754: 49 8b 4c 24 08 mov 0x8(%r12),%rcx 0.00 : 66f759: 48 89 4d c8 mov %rcx,-0x38(%rbp) : prior_expr = (Node *) prior_tle->expr; 0.00 : 66f75d: 48 8b 40 08 mov 0x8(%rax),%rax : * If node is an assignment node, return its input; else return NULL : */ : static Node * : get_assignment_input(Node *node) : { : if (node == NULL) 0.00 : 66f761: 48 85 c9 test %rcx,%rcx : * FieldStore with multiple target fields. We must nest when : * ArrayRefs are involved though. : *---------- : */ : src_expr = (Node *) src_tle->expr; : prior_expr = (Node *) prior_tle->expr; 0.00 : 66f764: 48 89 45 d0 mov %rax,-0x30(%rbp) : * If node is an assignment node, return its input; else return NULL : */ : static Node * : get_assignment_input(Node *node) : { : if (node == NULL) 0.00 : 66f768: 74 18 je 66f782 : return NULL; : if (IsA(node, FieldStore)) 0.00 : 66f76a: 8b 01 mov (%rcx),%eax 0.00 : 66f76c: 3d 40 01 00 00 cmp $0x140,%eax 0.00 : 66f771: 0f 84 39 02 00 00 je 66f9b0 : { : FieldStore *fstore = (FieldStore *) node; : : return (Node *) fstore->arg; : } : else if (IsA(node, ArrayRef)) 0.00 : 66f777: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 66f77c: 0f 84 6e 02 00 00 je 66f9f0 : { : ArrayRef *aref = (ArrayRef *) node; : : if (aref->refassgnexpr == NULL) : return NULL; : return (Node *) aref->refexpr; 0.00 : 66f782: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 66f789: 00 : /* We can (and must) ignore deleted attributes */ : if (att_tup->attisdropped) : continue; : : /* Merge with any prior assignment to same attribute */ : new_tles[attrno - 1] = 0.00 : 66f78a: 49 83 c7 04 add $0x4,%r15 : * If node is an assignment node, return its input; else return NULL : */ : static Node * : get_assignment_input(Node *node) : { : if (node == NULL) 0.00 : 66f78e: 48 83 7d d0 00 cmpq $0x0,-0x30(%rbp) 0.00 : 66f793: 74 18 je 66f7ad : return NULL; : if (IsA(node, FieldStore)) 0.00 : 66f795: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 66f799: 8b 02 mov (%rdx),%eax 0.00 : 66f79b: 3d 40 01 00 00 cmp $0x140,%eax 0.00 : 66f7a0: 74 3e je 66f7e0 : { : FieldStore *fstore = (FieldStore *) node; : : return (Node *) fstore->arg; : } : else if (IsA(node, ArrayRef)) 0.00 : 66f7a2: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 66f7a7: 0f 84 63 02 00 00 je 66fa10 : src_input = get_assignment_input(src_expr); : prior_input = get_assignment_input(prior_expr); : if (src_input == NULL || : prior_input == NULL || : exprType(src_expr) != exprType(prior_expr)) : ereport(ERROR, 0.00 : 66f7ad: 45 31 c0 xor %r8d,%r8d 0.00 : 66f7b0: b9 30 97 8a 00 mov $0x8a9730,%ecx 0.00 : 66f7b5: ba 91 03 00 00 mov $0x391,%edx : if (newbottom == NULL) : break; /* found the original Var reference */ : priorbottom = newbottom; : } : if (!equal(priorbottom, src_input)) : ereport(ERROR, 0.00 : 66f7ba: be bf 8c 8a 00 mov $0x8a8cbf,%esi 0.00 : 66f7bf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 66f7c4: e8 f7 b2 10 00 callq 77aac0 0.00 : 66f7c9: 84 c0 test %al,%al 0.00 : 66f7cb: 0f 85 ef 01 00 00 jne 66f9c0 : aref->refexpr = (Expr *) prior_expr; : newexpr = (Node *) aref; : } : else : { : elog(ERROR, "cannot happen"); 0.00 : 66f7d1: e8 fa 9c df ff callq 4694d0 0.00 : 66f7d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 66f7dd: 00 00 00 : return NULL; : if (IsA(node, FieldStore)) : { : FieldStore *fstore = (FieldStore *) node; : : return (Node *) fstore->arg; 0.00 : 66f7e0: 4c 8b 6a 08 mov 0x8(%rdx),%r13 : */ : src_expr = (Node *) src_tle->expr; : prior_expr = (Node *) prior_tle->expr; : src_input = get_assignment_input(src_expr); : prior_input = get_assignment_input(prior_expr); : if (src_input == NULL || 0.00 : 66f7e4: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 66f7e9: 74 c2 je 66f7ad 0.00 : 66f7eb: 4d 85 ed test %r13,%r13 0.00 : 66f7ee: 66 90 xchg %ax,%ax 0.00 : 66f7f0: 74 bb je 66f7ad 0.00 : 66f7f2: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 66f7f6: e8 d5 14 f7 ff callq 5e0cd0 0.00 : 66f7fb: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 66f7ff: 89 c3 mov %eax,%ebx 0.00 : 66f801: e8 ca 14 f7 ff callq 5e0cd0 0.00 : 66f806: 39 c3 cmp %eax,%ebx 0.00 : 66f808: 75 a3 jne 66f7ad : static Node * : get_assignment_input(Node *node) : { : if (node == NULL) : return NULL; : if (IsA(node, FieldStore)) 0.00 : 66f80a: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 66f80e: 3d 40 01 00 00 cmp $0x140,%eax 0.00 : 66f813: 0f 84 67 01 00 00 je 66f980 : { : FieldStore *fstore = (FieldStore *) node; : : return (Node *) fstore->arg; : } : else if (IsA(node, ArrayRef)) 0.00 : 66f819: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 66f81e: 66 90 xchg %ax,%ax 0.00 : 66f820: 0f 84 72 01 00 00 je 66f998 : : if (newbottom == NULL) : break; /* found the original Var reference */ : priorbottom = newbottom; : } : if (!equal(priorbottom, src_input)) 0.00 : 66f826: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 66f82a: 4c 89 ef mov %r13,%rdi 0.00 : 66f82d: e8 9e b8 f7 ff callq 5eb0d0 0.00 : 66f832: 84 c0 test %al,%al 0.00 : 66f834: 0f 84 67 03 00 00 je 66fba1 : attrName))); : : /* : * Looks OK to nest 'em. : */ : if (IsA(src_expr, FieldStore)) 0.00 : 66f83a: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 66f83e: 8b 02 mov (%rdx),%eax 0.00 : 66f840: 3d 40 01 00 00 cmp $0x140,%eax 0.00 : 66f845: 0f 84 65 02 00 00 je 66fab0 : memcpy(fstore, src_expr, sizeof(FieldStore)); : fstore->arg = (Expr *) prior_expr; : } : newexpr = (Node *) fstore; : } : else if (IsA(src_expr, ArrayRef)) 0.00 : 66f84b: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 66f850: 0f 85 5d 03 00 00 jne 66fbb3 : { : ArrayRef *aref = makeNode(ArrayRef); 0.00 : 66f856: 48 8b 3d 03 b0 54 00 mov 0x54b003(%rip),%rdi # bba860 0.00 : 66f85d: be 38 00 00 00 mov $0x38,%esi 0.00 : 66f862: e8 a9 95 12 00 callq 798e10 0.00 : 66f867: c7 00 34 01 00 00 movl $0x134,(%rax) : : memcpy(aref, src_expr, sizeof(ArrayRef)); 0.00 : 66f86d: 48 8b 55 c8 mov -0x38(%rbp),%rdx : } : newexpr = (Node *) fstore; : } : else if (IsA(src_expr, ArrayRef)) : { : ArrayRef *aref = makeNode(ArrayRef); 0.00 : 66f871: 49 89 c5 mov %rax,%r13 : : memcpy(aref, src_expr, sizeof(ArrayRef)); 0.00 : 66f874: 48 8b 02 mov (%rdx),%rax 0.00 : 66f877: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 66f87b: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 66f87f: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 66f883: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 66f887: 49 89 45 10 mov %rax,0x10(%r13) 0.00 : 66f88b: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 66f88f: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : 66f893: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 66f897: 49 89 45 20 mov %rax,0x20(%r13) 0.00 : 66f89b: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 66f89f: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 66f8a3: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 66f8a7: 49 89 45 30 mov %rax,0x30(%r13) : aref->refexpr = (Expr *) prior_expr; 0.00 : 66f8ab: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 66f8af: 49 89 4d 28 mov %rcx,0x28(%r13) : { : elog(ERROR, "cannot happen"); : newexpr = NULL; : } : : result = flatCopyTargetEntry(src_tle); 0.00 : 66f8b3: 4c 89 e7 mov %r12,%rdi 0.00 : 66f8b6: e8 05 23 f8 ff callq 5f1bc0 0.00 : 66f8bb: 49 89 c4 mov %rax,%r12 : result->expr = (Expr *) newexpr; 0.00 : 66f8be: 4c 89 68 08 mov %r13,0x8(%rax) : /* We can (and must) ignore deleted attributes */ : if (att_tup->attisdropped) : continue; : : /* Merge with any prior assignment to same attribute */ : new_tles[attrno - 1] = /home/Computational/mark/src/postgres-andres/src/backend/rewrite/rewriteHandler.c:733 100.00 : 66f8c2: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 66f8c6: 4c 89 20 mov %r12,(%rax) 0.00 : 66f8c9: e9 24 fd ff ff jmpq 66f5f2 0.00 : 66f8ce: 66 90 xchg %ax,%ax : : if (new_tle) : new_tlist = lappend(new_tlist, new_tle); : } : : pfree(new_tles); 0.00 : 66f8d0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 66f8d4: e8 a7 92 12 00 callq 798b80 : : parsetree->targetList = list_concat(new_tlist, junk_tlist); 0.00 : 66f8d9: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 66f8dd: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 66f8e1: e8 da 2c f7 ff callq 5e25c0 0.00 : 66f8e6: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 66f8ea: 48 89 42 48 mov %rax,0x48(%rdx) : } 0.00 : 66f8ee: 48 83 c4 78 add $0x78,%rsp 0.00 : 66f8f2: 5b pop %rbx 0.00 : 66f8f3: 41 5c pop %r12 0.00 : 66f8f5: 41 5d pop %r13 0.00 : 66f8f7: 41 5e pop %r14 0.00 : 66f8f9: 41 5f pop %r15 0.00 : 66f8fb: c9 leaveq 0.00 : 66f8fc: c3 retq 0.00 : 66f8fd: 0f 1f 00 nopl (%rax) : : /* : * For an UPDATE on a trigger-updatable view, provide a dummy entry : * whenever there is no explicit assignment. : */ : if (new_tle == NULL && commandType == CMD_UPDATE && 0.00 : 66f900: 45 84 ff test %r15b,%r15b 0.00 : 66f903: 0f 84 66 fd ff ff je 66f66f 0.00 : 66f909: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 66f90d: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 66f911: 80 78 6f 76 cmpb $0x76,0x6f(%rax) 0.00 : 66f915: 0f 85 54 fd ff ff jne 66f66f 0.00 : 66f91b: be 02 00 00 00 mov $0x2,%esi 0.00 : 66f920: 48 89 d7 mov %rdx,%rdi 0.00 : 66f923: e8 d8 ef ff ff callq 66e900 0.00 : 66f928: 84 c0 test %al,%al 0.00 : 66f92a: 0f 84 3f fd ff ff je 66f66f : target_relation->rd_rel->relkind == RELKIND_VIEW && : view_has_instead_trigger(target_relation, CMD_UPDATE)) : { : Node *new_expr; : : new_expr = (Node *) makeVar(parsetree->resultRelation, 0.00 : 66f930: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 66f934: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 66f938: 45 0f bf e5 movswl %r13w,%r12d 0.00 : 66f93c: 41 8b 56 44 mov 0x44(%r14),%edx 0.00 : 66f940: 45 8b 46 68 mov 0x68(%r14),%r8d 0.00 : 66f944: 45 31 c9 xor %r9d,%r9d 0.00 : 66f947: 44 89 e6 mov %r12d,%esi 0.00 : 66f94a: 8b 78 20 mov 0x20(%rax),%edi 0.00 : 66f94d: e8 fe 1f f8 ff callq 5f1950 : att_tup->atttypid, : att_tup->atttypmod, : att_tup->attcollation, : 0); : : new_tle = makeTargetEntry((Expr *) new_expr, 0.00 : 66f952: 49 8d 7e 04 lea 0x4(%r14),%rdi : target_relation->rd_rel->relkind == RELKIND_VIEW && : view_has_instead_trigger(target_relation, CMD_UPDATE)) : { : Node *new_expr; : : new_expr = (Node *) makeVar(parsetree->resultRelation, 0.00 : 66f956: 48 89 c3 mov %rax,%rbx : att_tup->atttypid, : att_tup->atttypmod, : att_tup->attcollation, : 0); : : new_tle = makeTargetEntry((Expr *) new_expr, 0.00 : 66f959: e8 f2 95 12 00 callq 798f50 0.00 : 66f95e: 48 89 df mov %rbx,%rdi 0.00 : 66f961: 31 c9 xor %ecx,%ecx 0.00 : 66f963: 48 89 c2 mov %rax,%rdx 0.00 : 66f966: 44 89 e6 mov %r12d,%esi 0.00 : 66f969: e8 62 1f f8 ff callq 5f18d0 0.00 : 66f96e: 48 89 c3 mov %rax,%rbx 0.00 : 66f971: e9 f9 fc ff ff jmpq 66f66f 0.00 : 66f976: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 66f97d: 00 00 00 : return NULL; : if (IsA(node, FieldStore)) : { : FieldStore *fstore = (FieldStore *) node; : : return (Node *) fstore->arg; 0.00 : 66f980: 49 8b 7d 08 mov 0x8(%r13),%rdi : priorbottom = prior_input; : for (;;) : { : Node *newbottom = get_assignment_input(priorbottom); : : if (newbottom == NULL) 0.00 : 66f984: 48 85 ff test %rdi,%rdi 0.00 : 66f987: 0f 84 99 fe ff ff je 66f826 : src_input = get_assignment_input(src_expr); : prior_input = get_assignment_input(prior_expr); : if (src_input == NULL || : prior_input == NULL || : exprType(src_expr) != exprType(prior_expr)) : ereport(ERROR, 0.00 : 66f98d: 49 89 fd mov %rdi,%r13 0.00 : 66f990: e9 75 fe ff ff jmpq 66f80a 0.00 : 66f995: 0f 1f 00 nopl (%rax) : } : else if (IsA(node, ArrayRef)) : { : ArrayRef *aref = (ArrayRef *) node; : : if (aref->refassgnexpr == NULL) 0.00 : 66f998: 49 83 7d 30 00 cmpq $0x0,0x30(%r13) 0.00 : 66f99d: 0f 1f 00 nopl (%rax) 0.00 : 66f9a0: 0f 84 80 fe ff ff je 66f826 : return NULL; : return (Node *) aref->refexpr; 0.00 : 66f9a6: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 66f9aa: eb d8 jmp 66f984 0.00 : 66f9ac: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : if (IsA(node, FieldStore)) : { : FieldStore *fstore = (FieldStore *) node; : : return (Node *) fstore->arg; 0.00 : 66f9b0: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 66f9b4: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 66f9b8: e9 cd fd ff ff jmpq 66f78a 0.00 : 66f9bd: 0f 1f 00 nopl (%rax) : if (newbottom == NULL) : break; /* found the original Var reference */ : priorbottom = newbottom; : } : if (!equal(priorbottom, src_input)) : ereport(ERROR, 0.00 : 66f9c0: 4c 89 fe mov %r15,%rsi 0.00 : 66f9c3: bf d8 91 8a 00 mov $0x8a91d8,%edi 0.00 : 66f9c8: 31 c0 xor %eax,%eax 0.00 : 66f9ca: e8 d1 ce 10 00 callq 77c8a0 0.00 : 66f9cf: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 66f9d4: 89 c3 mov %eax,%ebx 0.00 : 66f9d6: e8 75 d3 10 00 callq 77cd50 0.00 : 66f9db: 89 de mov %ebx,%esi 0.00 : 66f9dd: 89 c7 mov %eax,%edi 0.00 : 66f9df: 31 c0 xor %eax,%eax 0.00 : 66f9e1: e8 fa ab 10 00 callq 77a5e0 : aref->refexpr = (Expr *) prior_expr; : newexpr = (Node *) aref; : } : else : { : elog(ERROR, "cannot happen"); 0.00 : 66f9e6: e8 e5 9a df ff callq 4694d0 0.00 : 66f9eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else if (IsA(node, ArrayRef)) : { : ArrayRef *aref = (ArrayRef *) node; : : if (aref->refassgnexpr == NULL) 0.00 : 66f9f0: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 66f9f4: 48 83 7a 30 00 cmpq $0x0,0x30(%rdx) 0.00 : 66f9f9: 0f 84 83 fd ff ff je 66f782 : return NULL; : return (Node *) aref->refexpr; 0.00 : 66f9ff: 48 8b 4a 28 mov 0x28(%rdx),%rcx 0.00 : 66fa03: 48 89 4d c0 mov %rcx,-0x40(%rbp) 0.00 : 66fa07: e9 7e fd ff ff jmpq 66f78a 0.00 : 66fa0c: 0f 1f 40 00 nopl 0x0(%rax) : } : else if (IsA(node, ArrayRef)) : { : ArrayRef *aref = (ArrayRef *) node; : : if (aref->refassgnexpr == NULL) 0.00 : 66fa10: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 66fa14: 48 83 79 30 00 cmpq $0x0,0x30(%rcx) 0.00 : 66fa19: 0f 84 8e fd ff ff je 66f7ad : return NULL; : return (Node *) aref->refexpr; 0.00 : 66fa1f: 4c 8b 69 28 mov 0x28(%rcx),%r13 0.00 : 66fa23: e9 bc fd ff ff jmpq 66f7e4 0.00 : 66fa28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 66fa2f: 00 : * any more rewriter cycles on the entry. But in the UPDATE case : * we've got to explicitly set the column to NULL. : */ : if (!new_expr) : { : if (commandType == CMD_INSERT) 0.00 : 66fa30: 80 7d 9b 00 cmpb $0x0,-0x65(%rbp) 0.00 : 66fa34: 74 0f je 66fa45 0.00 : 66fa36: 31 db xor %ebx,%ebx 0.00 : 66fa38: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 66fa3e: 66 90 xchg %ax,%ax 0.00 : 66fa40: e9 20 fc ff ff jmpq 66f665 : new_tle = NULL; : else : { : new_expr = (Node *) makeConst(att_tup->atttypid, 0.00 : 66fa45: 41 0f bf 4e 4c movswl 0x4c(%r14),%ecx 0.00 : 66fa4a: 41 0f be 46 5c movsbl 0x5c(%r14),%eax 0.00 : 66fa4f: 45 31 c0 xor %r8d,%r8d 0.00 : 66fa52: 41 8b 56 68 mov 0x68(%r14),%edx 0.00 : 66fa56: 41 8b 7e 44 mov 0x44(%r14),%edi 0.00 : 66fa5a: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 66fa60: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 66fa65: 89 04 24 mov %eax,(%rsp) 0.00 : 66fa68: e8 53 1d f8 ff callq 5f17c0 : att_tup->attlen, : (Datum) 0, : true, /* isnull */ : att_tup->attbyval); : /* this is to catch a NOT NULL domain constraint */ : new_expr = coerce_to_domain(new_expr, 0.00 : 66fa6d: 41 8b 4e 44 mov 0x44(%r14),%ecx 0.00 : 66fa71: 41 b9 ff ff ff ff mov $0xffffffff,%r9d 0.00 : 66fa77: 31 f6 xor %esi,%esi : { : if (commandType == CMD_INSERT) : new_tle = NULL; : else : { : new_expr = (Node *) makeConst(att_tup->atttypid, 0.00 : 66fa79: 48 89 c7 mov %rax,%rdi : att_tup->attlen, : (Datum) 0, : true, /* isnull */ : att_tup->attbyval); : /* this is to catch a NOT NULL domain constraint */ : new_expr = coerce_to_domain(new_expr, 0.00 : 66fa7c: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 66fa82: 44 89 ca mov %r9d,%edx 0.00 : 66fa85: c7 44 24 08 00 00 00 movl $0x0,0x8(%rsp) 0.00 : 66fa8c: 00 0.00 : 66fa8d: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 66fa94: e8 e7 0a ec ff callq 530580 : false, : false); : } : } : : if (new_expr) 0.00 : 66fa99: 48 85 c0 test %rax,%rax : att_tup->attlen, : (Datum) 0, : true, /* isnull */ : att_tup->attbyval); : /* this is to catch a NOT NULL domain constraint */ : new_expr = coerce_to_domain(new_expr, 0.00 : 66fa9c: 49 89 c4 mov %rax,%r12 : false, : false); : } : } : : if (new_expr) 0.00 : 66fa9f: 0f 84 c0 fb ff ff je 66f665 0.00 : 66faa5: e9 97 fb ff ff jmpq 66f641 0.00 : 66faaa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * Looks OK to nest 'em. : */ : if (IsA(src_expr, FieldStore)) : { : FieldStore *fstore = makeNode(FieldStore); 0.00 : 66fab0: 48 8b 3d a9 ad 54 00 mov 0x54ada9(%rip),%rdi # bba860 0.00 : 66fab7: be 28 00 00 00 mov $0x28,%esi 0.00 : 66fabc: e8 4f 93 12 00 callq 798e10 0.00 : 66fac1: c7 00 40 01 00 00 movl $0x140,(%rax) : : if (IsA(prior_expr, FieldStore)) 0.00 : 66fac7: 48 8b 4d d0 mov -0x30(%rbp),%rcx : /* : * Looks OK to nest 'em. : */ : if (IsA(src_expr, FieldStore)) : { : FieldStore *fstore = makeNode(FieldStore); 0.00 : 66facb: 49 89 c5 mov %rax,%r13 : : if (IsA(prior_expr, FieldStore)) 0.00 : 66face: 81 39 40 01 00 00 cmpl $0x140,(%rcx) 0.00 : 66fad4: 74 47 je 66fb1d : list_copy(((FieldStore *) src_expr)->fieldnums)); : } : else : { : /* general case, just nest 'em */ : memcpy(fstore, src_expr, sizeof(FieldStore)); 0.00 : 66fad6: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 66fada: 48 8b 02 mov (%rdx),%rax 0.00 : 66fadd: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 66fae1: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 66fae5: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 66fae9: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 66faed: 49 89 45 10 mov %rax,0x10(%r13) 0.00 : 66faf1: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 66faf5: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : 66faf9: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 66fafd: 49 89 45 20 mov %rax,0x20(%r13) : fstore->arg = (Expr *) prior_expr; 0.00 : 66fb01: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 66fb05: 49 89 4d 08 mov %rcx,0x8(%r13) 0.00 : 66fb09: e9 a5 fd ff ff jmpq 66f8b3 0.00 : 66fb0e: 66 90 xchg %ax,%ax : */ : numattrs = RelationGetNumberOfAttributes(target_relation); : new_tles = (TargetEntry **) palloc0(numattrs * sizeof(TargetEntry *)); : next_junk_attrno = numattrs + 1; : : foreach(temp, parsetree->targetList) 0.00 : 66fb10: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 66fb17: 00 0.00 : 66fb18: e9 e2 fa ff ff jmpq 66f5ff : FieldStore *fstore = makeNode(FieldStore); : : if (IsA(prior_expr, FieldStore)) : { : /* combine the two */ : memcpy(fstore, prior_expr, sizeof(FieldStore)); 0.00 : 66fb1d: 48 8b 01 mov (%rcx),%rax 0.00 : 66fb20: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 66fb24: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 66fb28: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 66fb2c: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 66fb30: 49 89 45 10 mov %rax,0x10(%r13) 0.00 : 66fb34: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 66fb38: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : 66fb3c: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 66fb40: 49 89 45 20 mov %rax,0x20(%r13) : fstore->newvals = 0.00 : 66fb44: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 66fb48: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 66fb4c: e8 af 1b f7 ff callq 5e1700 0.00 : 66fb51: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 66fb55: 48 89 c3 mov %rax,%rbx 0.00 : 66fb58: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 66fb5c: e8 9f 1b f7 ff callq 5e1700 0.00 : 66fb61: 48 89 de mov %rbx,%rsi 0.00 : 66fb64: 48 89 c7 mov %rax,%rdi 0.00 : 66fb67: e8 54 2a f7 ff callq 5e25c0 0.00 : 66fb6c: 49 89 45 10 mov %rax,0x10(%r13) : list_concat(list_copy(((FieldStore *) prior_expr)->newvals), : list_copy(((FieldStore *) src_expr)->newvals)); : fstore->fieldnums = 0.00 : 66fb70: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 66fb74: 48 8b 79 18 mov 0x18(%rcx),%rdi 0.00 : 66fb78: e8 83 1b f7 ff callq 5e1700 0.00 : 66fb7d: 48 89 c3 mov %rax,%rbx 0.00 : 66fb80: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 66fb84: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 66fb88: e8 73 1b f7 ff callq 5e1700 0.00 : 66fb8d: 48 89 de mov %rbx,%rsi 0.00 : 66fb90: 48 89 c7 mov %rax,%rdi 0.00 : 66fb93: e8 28 2a f7 ff callq 5e25c0 0.00 : 66fb98: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : 66fb9c: e9 12 fd ff ff jmpq 66f8b3 : if (newbottom == NULL) : break; /* found the original Var reference */ : priorbottom = newbottom; : } : if (!equal(priorbottom, src_input)) : ereport(ERROR, 0.00 : 66fba1: 45 31 c0 xor %r8d,%r8d 0.00 : 66fba4: b9 30 97 8a 00 mov $0x8a9730,%ecx 0.00 : 66fba9: ba a3 03 00 00 mov $0x3a3,%edx 0.00 : 66fbae: e9 07 fc ff ff jmpq 66f7ba : aref->refexpr = (Expr *) prior_expr; : newexpr = (Node *) aref; : } : else : { : elog(ERROR, "cannot happen"); 0.00 : 66fbb3: ba 30 97 8a 00 mov $0x8a9730,%edx 0.00 : 66fbb8: be c9 03 00 00 mov $0x3c9,%esi 0.00 : 66fbbd: bf bf 8c 8a 00 mov $0x8a8cbf,%edi 0.00 : 66fbc2: e8 59 b8 10 00 callq 77b420 0.00 : 66fbc7: be ed 8c 8a 00 mov $0x8a8ced,%esi 0.00 : 66fbcc: bf 14 00 00 00 mov $0x14,%edi 0.00 : 66fbd1: 31 c0 xor %eax,%eax 0.00 : 66fbd3: e8 58 b6 10 00 callq 77b230 0.00 : 66fbd8: e9 f4 fb ff ff jmpq 66f7d1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3157 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000676f60 : : * We won't loop, but just check once to see if the pin count is OK. If : * not, return FALSE with no lock held. : */ : bool : ConditionalLockBufferForCleanup(Buffer buffer) : { 0.00 : 676f60: 55 push %rbp 0.00 : 676f61: 48 89 e5 mov %rsp,%rbp 0.00 : 676f64: 48 89 5d f0 mov %rbx,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3157 100.00 : 676f68: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 676f6c: 48 83 ec 10 sub $0x10,%rsp : volatile BufferDesc *bufHdr; : : Assert(BufferIsValid(buffer)); : : if (BufferIsLocal(buffer)) 0.00 : 676f70: 85 ff test %edi,%edi : * We won't loop, but just check once to see if the pin count is OK. If : * not, return FALSE with no lock held. : */ : bool : ConditionalLockBufferForCleanup(Buffer buffer) : { 0.00 : 676f72: 89 fb mov %edi,%ebx : volatile BufferDesc *bufHdr; : : Assert(BufferIsValid(buffer)); : : if (BufferIsLocal(buffer)) 0.00 : 676f74: 78 2a js 676fa0 : PrivateRefCountEntry *ref; : : Assert(BufferIsValid(buffer)); : Assert(!BufferIsLocal(buffer)); : : ref = GetPrivateRefCountEntry(buffer, false, false); 0.00 : 676f76: 31 d2 xor %edx,%edx 0.00 : 676f78: 31 f6 xor %esi,%esi 0.00 : 676f7a: e8 a1 d5 ff ff callq 674520 : : if (ref == NULL) 0.00 : 676f7f: 48 85 c0 test %rax,%rax 0.00 : 676f82: 74 06 je 676f8a : return true; : } : : /* There should be exactly one local pin */ : Assert(GetPrivateRefCount(buffer) > 0); : if (GetPrivateRefCount(buffer) != 1) 0.00 : 676f84: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 676f88: 74 2e je 676fb8 : return true; : } : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 676f8a: 31 c0 xor %eax,%eax : return false; : } 0.00 : 676f8c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 676f90: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 676f95: c9 leaveq 0.00 : 676f96: c3 retq 0.00 : 676f97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 676f9e: 00 00 : { : volatile BufferDesc *bufHdr; : : Assert(BufferIsValid(buffer)); : : if (BufferIsLocal(buffer)) 0.00 : 676fa0: 48 8b 05 79 61 50 00 mov 0x506179(%rip),%rax # b7d120 0.00 : 676fa7: f7 d3 not %ebx 0.00 : 676fa9: 48 63 d3 movslq %ebx,%rdx 0.00 : 676fac: 83 3c 90 01 cmpl $0x1,(%rax,%rdx,4) 0.00 : 676fb0: 0f 94 c0 sete %al 0.00 : 676fb3: eb d7 jmp 676f8c 0.00 : 676fb5: 0f 1f 00 nopl (%rax) : Assert(GetPrivateRefCount(buffer) > 0); : if (GetPrivateRefCount(buffer) != 1) : return false; : : /* Try to acquire lock */ : if (!ConditionalLockBuffer(buffer)) 0.00 : 676fb8: 89 df mov %ebx,%edi 0.00 : 676fba: e8 f1 d7 ff ff callq 6747b0 0.00 : 676fbf: 84 c0 test %al,%al 0.00 : 676fc1: 74 c7 je 676f8a : return false; : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 676fc3: 48 63 c3 movslq %ebx,%rax 0.00 : 676fc6: 4c 8d 60 ff lea -0x1(%rax),%r12 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 676fca: b8 01 00 00 00 mov $0x1,%eax 0.00 : 676fcf: 49 c1 e4 06 shl $0x6,%r12 0.00 : 676fd3: 4c 03 25 26 8b 54 00 add 0x548b26(%rip),%r12 # bbfb00 : LockBufHdr(bufHdr); 0.00 : 676fda: 49 8d 7c 24 20 lea 0x20(%r12),%rdi 0.00 : 676fdf: f0 86 07 lock xchg %al,(%rdi) 0.00 : 676fe2: 84 c0 test %al,%al 0.00 : 676fe4: 75 32 jne 677018 : Assert(bufHdr->refcount > 0); : if (bufHdr->refcount == 1) 0.00 : 676fe6: 41 8b 44 24 18 mov 0x18(%r12),%eax 0.00 : 676feb: 83 f8 01 cmp $0x1,%eax 0.00 : 676fee: 74 18 je 677008 : return true; : } : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 676ff0: 31 f6 xor %esi,%esi : UnlockBufHdr(bufHdr); : return true; : } : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); 0.00 : 676ff2: 41 c6 44 24 20 00 movb $0x0,0x20(%r12) : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 676ff8: 89 df mov %ebx,%edi 0.00 : 676ffa: e8 11 d7 ff ff callq 674710 0.00 : 676fff: 31 c0 xor %eax,%eax : return false; : } 0.00 : 677001: eb 89 jmp 676f8c 0.00 : 677003: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : LockBufHdr(bufHdr); : Assert(bufHdr->refcount > 0); : if (bufHdr->refcount == 1) : { : /* Successfully acquired exclusive lock with pincount 1 */ : UnlockBufHdr(bufHdr); 0.00 : 677008: 41 c6 44 24 20 00 movb $0x0,0x20(%r12) : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : return false; : } 0.00 : 67700e: e9 79 ff ff ff jmpq 676f8c 0.00 : 677013: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* Try to acquire lock */ : if (!ConditionalLockBuffer(buffer)) : return false; : : bufHdr = &BufferDescriptors[buffer - 1]; : LockBufHdr(bufHdr); 0.00 : 677018: ba 6e 0c 00 00 mov $0xc6e,%edx 0.00 : 67701d: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 677022: e8 19 90 01 00 callq 690040 0.00 : 677027: eb bd jmp 676fe6 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:817 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000678830 : : * Release kernel FDs as needed to get under the max_safe_fds limit. : * After calling this, it's OK to try to open another file. : */ : static void : ReleaseLruFiles(void) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:817 100.00 : 678830: 55 push %rbp 0.00 : 678831: 48 89 e5 mov %rsp,%rbp : while (nfile + numAllocatedDescs >= max_safe_fds) 0.00 : 678834: 8b 15 46 49 50 00 mov 0x504946(%rip),%edx # b7d180 0.00 : 67883a: 89 d0 mov %edx,%eax 0.00 : 67883c: 03 05 36 49 50 00 add 0x504936(%rip),%eax # b7d178 0.00 : 678842: 3b 05 60 fe 4e 00 cmp 0x4efe60(%rip),%eax # b686a8 0.00 : 678848: 7c 16 jl 678860 : static bool : ReleaseLruFile(void) : { : DO_DB(elog(LOG, "ReleaseLruFile. Opened %d", nfile)); : : if (nfile > 0) 0.00 : 67884a: 85 d2 test %edx,%edx 0.00 : 67884c: 7e 12 jle 678860 : /* : * There are opened files and so there should be at least one used vfd : * in the ring. : */ : Assert(VfdCache[0].lruMoreRecently != 0); : LruDelete(VfdCache[0].lruMoreRecently); 0.00 : 67884e: 48 8b 05 43 49 50 00 mov 0x504943(%rip),%rax # b7d198 0.00 : 678855: 8b 78 14 mov 0x14(%rax),%edi 0.00 : 678858: e8 d3 fe ff ff callq 678730 0.00 : 67885d: eb d5 jmp 678834 0.00 : 67885f: 90 nop : while (nfile + numAllocatedDescs >= max_safe_fds) : { : if (!ReleaseLruFile()) : break; : } : } 0.00 : 678860: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1687 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679840 : : /* : * Like AllocateFile, but returns an unbuffered fd like open(2) : */ : int : OpenTransientFile(FileName fileName, int fileFlags, int fileMode) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1687 100.00 : 679840: 55 push %rbp 0.00 : 679841: 48 89 e5 mov %rsp,%rbp 0.00 : 679844: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 679848: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 67984c: 89 d3 mov %edx,%ebx 0.00 : 67984e: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 679852: 48 83 ec 20 sub $0x20,%rsp 0.00 : 679856: 49 89 fd mov %rdi,%r13 0.00 : 679859: 41 89 f4 mov %esi,%r12d : : DO_DB(elog(LOG, "OpenTransientFile: Allocated %d (%s)", : numAllocatedDescs, fileName)); : : /* Can we allocate another non-virtual FD? */ : if (!reserveAllocatedDesc()) 0.00 : 67985c: e8 cf f0 ff ff callq 678930 0.00 : 679861: 84 c0 test %al,%al 0.00 : 679863: 74 63 je 6798c8 : (errcode(ERRCODE_INSUFFICIENT_RESOURCES), : errmsg("exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"", : maxAllocatedDescs, fileName))); : : /* Close excess kernel FDs. */ : ReleaseLruFiles(); 0.00 : 679865: e8 c6 ef ff ff callq 678830 : : fd = BasicOpenFile(fileName, fileFlags, fileMode); 0.00 : 67986a: 44 89 e6 mov %r12d,%esi 0.00 : 67986d: 89 da mov %ebx,%edx 0.00 : 67986f: 4c 89 ef mov %r13,%rdi 0.00 : 679872: e8 e9 fe ff ff callq 679760 : : if (fd >= 0) 0.00 : 679877: 85 c0 test %eax,%eax : maxAllocatedDescs, fileName))); : : /* Close excess kernel FDs. */ : ReleaseLruFiles(); : : fd = BasicOpenFile(fileName, fileFlags, fileMode); 0.00 : 679879: 41 89 c4 mov %eax,%r12d : : if (fd >= 0) 0.00 : 67987c: 78 42 js 6798c0 : { : AllocateDesc *desc = &allocatedDescs[numAllocatedDescs]; 0.00 : 67987e: 48 63 1d f3 38 50 00 movslq 0x5038f3(%rip),%rbx # b7d178 0.00 : 679885: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 679889: 48 03 1d e0 38 50 00 add 0x5038e0(%rip),%rbx # b7d170 : : desc->kind = AllocateDescRawFD; 0.00 : 679890: c7 03 03 00 00 00 movl $0x3,(%rbx) : desc->desc.fd = fd; 0.00 : 679896: 89 43 08 mov %eax,0x8(%rbx) : desc->create_subid = GetCurrentSubTransactionId(); 0.00 : 679899: e8 22 73 e4 ff callq 4c0bc0 0.00 : 67989e: 89 43 04 mov %eax,0x4(%rbx) : numAllocatedDescs++; 0.00 : 6798a1: 83 05 d0 38 50 00 01 addl $0x1,0x5038d0(%rip) # b7d178 : : return fd; : } : : return -1; /* failure */ : } 0.00 : 6798a8: 44 89 e0 mov %r12d,%eax 0.00 : 6798ab: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 6798af: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 6798b3: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 6798b7: c9 leaveq 0.00 : 6798b8: c3 retq 0.00 : 6798b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Close excess kernel FDs. */ : ReleaseLruFiles(); : : fd = BasicOpenFile(fileName, fileFlags, fileMode); : : if (fd >= 0) 0.00 : 6798c0: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 6798c6: eb e0 jmp 6798a8 : DO_DB(elog(LOG, "OpenTransientFile: Allocated %d (%s)", : numAllocatedDescs, fileName)); : : /* Can we allocate another non-virtual FD? */ : if (!reserveAllocatedDesc()) : ereport(ERROR, 0.00 : 6798c8: 45 31 c0 xor %r8d,%r8d 0.00 : 6798cb: b9 a0 a9 8a 00 mov $0x8aa9a0,%ecx 0.00 : 6798d0: ba a2 06 00 00 mov $0x6a2,%edx 0.00 : 6798d5: be f1 a2 8a 00 mov $0x8aa2f1,%esi 0.00 : 6798da: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6798df: e8 dc 11 10 00 callq 77aac0 0.00 : 6798e4: 84 c0 test %al,%al 0.00 : 6798e6: 75 05 jne 6798ed 0.00 : 6798e8: e8 e3 fb de ff callq 4694d0 0.00 : 6798ed: 8b 35 91 38 50 00 mov 0x503891(%rip),%esi # b7d184 0.00 : 6798f3: 4c 89 ea mov %r13,%rdx 0.00 : 6798f6: bf 78 a6 8a 00 mov $0x8aa678,%edi 0.00 : 6798fb: 31 c0 xor %eax,%eax 0.00 : 6798fd: e8 9e 2f 10 00 callq 77c8a0 0.00 : 679902: bf c5 00 00 00 mov $0xc5,%edi 0.00 : 679907: 89 c3 mov %eax,%ebx 0.00 : 679909: e8 42 34 10 00 callq 77cd50 0.00 : 67990e: 89 de mov %ebx,%esi 0.00 : 679910: 89 c7 mov %eax,%edi 0.00 : 679912: 31 c0 xor %eax,%eax 0.00 : 679914: e8 c7 0c 10 00 callq 77a5e0 0.00 : 679919: eb cd jmp 6798e8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1359 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1510 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006815c0 : : * Note: this function should probably not be called with an argument that's : * not statically allocated (see xip allocation below). : */ : Snapshot : GetSnapshotData(Snapshot snapshot) : { 0.00 : 6815c0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1359 50.00 : 6815c1: 48 89 e5 mov %rsp,%rbp 0.00 : 6815c4: 41 57 push %r15 0.00 : 6815c6: 41 56 push %r14 0.00 : 6815c8: 41 55 push %r13 0.00 : 6815ca: 41 54 push %r12 0.00 : 6815cc: 49 89 fc mov %rdi,%r12 0.00 : 6815cf: 53 push %rbx 0.00 : 6815d0: 48 83 ec 48 sub $0x48,%rsp : TransactionId globalxmin; : int index; : int count = 0; : int subcount = 0; : bool suboverflowed = false; : volatile TransactionId replication_slot_xmin = InvalidTransactionId; 0.00 : 6815d4: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : volatile TransactionId replication_slot_catalog_xmin = InvalidTransactionId; 0.00 : 6815db: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : * This does open a possibility for avoiding repeated malloc/free: since : * maxProcs does not change at runtime, we can simply reuse the previous : * xip arrays if any. (This relies on the fact that all callers pass : * static SnapshotData structs.) : */ : if (snapshot->xip == NULL) 0.00 : 6815e2: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) : * not statically allocated (see xip allocation below). : */ : Snapshot : GetSnapshotData(Snapshot snapshot) : { : ProcArrayStruct *arrayP = procArray; 0.00 : 6815e7: 4c 8b 35 3a c0 4f 00 mov 0x4fc03a(%rip),%r14 # b7d628 : * This does open a possibility for avoiding repeated malloc/free: since : * maxProcs does not change at runtime, we can simply reuse the previous : * xip arrays if any. (This relies on the fact that all callers pass : * static SnapshotData structs.) : */ : if (snapshot->xip == NULL) 0.00 : 6815ee: 0f 84 74 02 00 00 je 681868 : : /* : * It is sufficient to get shared lock on ProcArrayLock, even if we are : * going to set MyPgXact->xmin. : */ : LWLockAcquire(ProcArrayLock, LW_SHARED); 0.00 : 6815f4: 48 8b 3d 05 c4 4f 00 mov 0x4fc405(%rip),%rdi # b7da00 0.00 : 6815fb: be 01 00 00 00 mov $0x1,%esi 0.00 : 681600: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681604: e8 e7 e4 00 00 callq 68faf0 : : /* xmax is always latestCompletedXid + 1 */ : xmax = ShmemVariableCache->latestCompletedXid; 0.00 : 681609: 48 8b 05 78 77 4f 00 mov 0x4f7778(%rip),%rax # b78d88 0.00 : 681610: 8b 40 24 mov 0x24(%rax),%eax : Assert(TransactionIdIsNormal(xmax)); : TransactionIdAdvance(xmax); 0.00 : 681613: 44 8d 78 01 lea 0x1(%rax),%r15d 0.00 : 681617: b8 03 00 00 00 mov $0x3,%eax 0.00 : 68161c: 41 83 ff 02 cmp $0x2,%r15d 0.00 : 681620: 44 0f 46 f8 cmovbe %eax,%r15d : : /* initialize xmin calculation with xmax */ : globalxmin = xmin = xmax; 0.00 : 681624: 44 89 7d cc mov %r15d,-0x34(%rbp) : : snapshot->takenDuringRecovery = RecoveryInProgress(); 0.00 : 681628: e8 93 be e4 ff callq 4cd4c0 : : if (!snapshot->takenDuringRecovery) 0.00 : 68162d: 84 c0 test %al,%al : TransactionIdAdvance(xmax); : : /* initialize xmin calculation with xmax */ : globalxmin = xmin = xmax; : : snapshot->takenDuringRecovery = RecoveryInProgress(); 0.00 : 68162f: 41 88 44 24 29 mov %al,0x29(%r12) : : if (!snapshot->takenDuringRecovery) 0.00 : 681634: 0f 85 9e 01 00 00 jne 6817d8 : /* : * Spin over procArray checking xid, xmin, and subxids. The goal is : * to gather all active xids, find the lowest xmin, and try to record : * subxids. : */ : numProcs = arrayP->numProcs; 0.00 : 68163a: 45 8b 06 mov (%r14),%r8d : for (index = 0; index < numProcs; index++) 0.00 : 68163d: 45 85 c0 test %r8d,%r8d 0.00 : 681640: 0f 8e c8 02 00 00 jle 68190e 0.00 : 681646: 45 89 fd mov %r15d,%r13d 0.00 : 681649: 45 31 c9 xor %r9d,%r9d 0.00 : 68164c: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) 0.00 : 681653: c6 45 b0 00 movb $0x0,-0x50(%rbp) 0.00 : 681657: 31 db xor %ebx,%ebx 0.00 : 681659: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : int pgprocno = pgprocnos[index]; : volatile PGXACT *pgxact = &allPgXact[pgprocno]; 0.00 : 681660: 49 63 74 9e 28 movslq 0x28(%r14,%rbx,4),%rsi 0.00 : 681665: 48 8d 04 76 lea (%rsi,%rsi,2),%rax 0.00 : 681669: 48 8d 0c 85 00 00 00 lea 0x0(,%rax,4),%rcx 0.00 : 681670: 00 0.00 : 681671: 48 03 0d c0 bf 4f 00 add 0x4fbfc0(%rip),%rcx # b7d638 : : /* : * Backend is doing logical decoding which manages xmin : * separately, check below. : */ : if (pgxact->vacuumFlags & PROC_IN_LOGICAL_DECODING) 0.00 : 681678: 0f b6 41 08 movzbl 0x8(%rcx),%eax 0.00 : 68167c: a8 10 test $0x10,%al 0.00 : 68167e: 75 30 jne 6816b0 : continue; : : /* Ignore procs running LAZY VACUUM */ : if (pgxact->vacuumFlags & PROC_IN_VACUUM) 0.00 : 681680: 0f b6 41 08 movzbl 0x8(%rcx),%eax 0.00 : 681684: a8 02 test $0x2,%al 0.00 : 681686: 75 28 jne 6816b0 : continue; : : /* Update globalxmin to be the smallest valid xmin */ : xid = pgxact->xmin; /* fetch just once */ 0.00 : 681688: 8b 41 04 mov 0x4(%rcx),%eax : if (TransactionIdIsNormal(xid) && 0.00 : 68168b: 83 f8 02 cmp $0x2,%eax 0.00 : 68168e: 76 07 jbe 681697 0.00 : 681690: 44 39 e8 cmp %r13d,%eax 0.00 : 681693: 44 0f 48 e8 cmovs %eax,%r13d : NormalTransactionIdPrecedes(xid, globalxmin)) : globalxmin = xid; : : /* Fetch xid just once - see GetNewTransactionId */ : xid = pgxact->xid; 0.00 : 681697: 8b 39 mov (%rcx),%edi : * If the transaction has no XID assigned, we can skip it; it : * won't have sub-XIDs either. If the XID is >= xmax, we can also : * skip it; such transactions will be treated as running anyway : * (and any sub-XIDs will also be >= xmax). : */ : if (!TransactionIdIsNormal(xid) 0.00 : 681699: 83 ff 02 cmp $0x2,%edi 0.00 : 68169c: 76 12 jbe 6816b0 0.00 : 68169e: 44 39 ff cmp %r15d,%edi 0.00 : 6816a1: 0f 88 71 01 00 00 js 681818 0.00 : 6816a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6816ae: 00 00 : volatile PGPROC *proc = &allProcs[pgprocno]; : : memcpy(snapshot->subxip + subcount, : (void *) proc->subxids.xids, : nxids * sizeof(TransactionId)); : subcount += nxids; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1510 50.00 : 6816b0: 48 83 c3 01 add $0x1,%rbx : * Spin over procArray checking xid, xmin, and subxids. The goal is : * to gather all active xids, find the lowest xmin, and try to record : * subxids. : */ : numProcs = arrayP->numProcs; : for (index = 0; index < numProcs; index++) 0.00 : 6816b4: 41 39 d8 cmp %ebx,%r8d 0.00 : 6816b7: 7f a7 jg 681660 0.00 : 6816b9: 44 89 cb mov %r9d,%ebx : suboverflowed = true; : } : : : /* fetch into volatile var while ProcArrayLock is held */ : replication_slot_xmin = procArray->replication_slot_xmin; 0.00 : 6816bc: 48 8b 05 65 bf 4f 00 mov 0x4fbf65(%rip),%rax # b7d628 0.00 : 6816c3: 8b 50 20 mov 0x20(%rax),%edx 0.00 : 6816c6: 89 55 c8 mov %edx,-0x38(%rbp) : replication_slot_catalog_xmin = procArray->replication_slot_catalog_xmin; : : if (!TransactionIdIsValid(MyPgXact->xmin)) 0.00 : 6816c9: 48 8b 15 80 c2 4f 00 mov 0x4fc280(%rip),%rdx # b7d950 : } : : : /* fetch into volatile var while ProcArrayLock is held */ : replication_slot_xmin = procArray->replication_slot_xmin; : replication_slot_catalog_xmin = procArray->replication_slot_catalog_xmin; 0.00 : 6816d0: 8b 40 24 mov 0x24(%rax),%eax 0.00 : 6816d3: 89 45 c4 mov %eax,-0x3c(%rbp) : : if (!TransactionIdIsValid(MyPgXact->xmin)) 0.00 : 6816d6: 44 8b 72 04 mov 0x4(%rdx),%r14d 0.00 : 6816da: 45 85 f6 test %r14d,%r14d 0.00 : 6816dd: 75 0c jne 6816eb : MyPgXact->xmin = TransactionXmin = xmin; 0.00 : 6816df: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 6816e2: 89 05 70 10 4f 00 mov %eax,0x4f1070(%rip) # b72758 0.00 : 6816e8: 89 42 04 mov %eax,0x4(%rdx) : : LWLockRelease(ProcArrayLock); 0.00 : 6816eb: 48 8b 3d 0e c3 4f 00 mov 0x4fc30e(%rip),%rdi # b7da00 0.00 : 6816f2: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 6816f6: e8 a5 dc 00 00 callq 68f3a0 : /* : * Update globalxmin to include actual process xids. This is a slightly : * different way of computing it than GetOldestXmin uses, but should give : * the same result. : */ : if (TransactionIdPrecedes(xmin, globalxmin)) 0.00 : 6816fb: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 6816fe: 44 89 ee mov %r13d,%esi 0.00 : 681701: e8 da e8 e3 ff callq 4bffe0 0.00 : 681706: 84 c0 test %al,%al 0.00 : 681708: 0f 85 ba 00 00 00 jne 6817c8 0.00 : 68170e: 8b 4d cc mov -0x34(%rbp),%ecx : globalxmin = xmin; : : /* Update global variables too */ : RecentGlobalXmin = globalxmin - vacuum_defer_cleanup_age; 0.00 : 681711: 44 89 e8 mov %r13d,%eax 0.00 : 681714: 2b 05 06 e4 53 00 sub 0x53e406(%rip),%eax # bbfb20 : if (!TransactionIdIsNormal(RecentGlobalXmin)) : RecentGlobalXmin = FirstNormalTransactionId; 0.00 : 68171a: ba 03 00 00 00 mov $0x3,%edx 0.00 : 68171f: 83 f8 02 cmp $0x2,%eax 0.00 : 681722: 0f 47 d0 cmova %eax,%edx : : /* Check whether there's a replication slot requiring an older xmin. */ : if (TransactionIdIsValid(replication_slot_xmin) && 0.00 : 681725: 8b 45 c8 mov -0x38(%rbp),%eax : globalxmin = xmin; : : /* Update global variables too */ : RecentGlobalXmin = globalxmin - vacuum_defer_cleanup_age; : if (!TransactionIdIsNormal(RecentGlobalXmin)) : RecentGlobalXmin = FirstNormalTransactionId; 0.00 : 681728: 89 15 d2 91 53 00 mov %edx,0x5391d2(%rip) # bba900 : : /* Check whether there's a replication slot requiring an older xmin. */ : if (TransactionIdIsValid(replication_slot_xmin) && 0.00 : 68172e: 85 c0 test %eax,%eax 0.00 : 681730: 74 0b je 68173d 0.00 : 681732: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 681735: 39 d0 cmp %edx,%eax 0.00 : 681737: 0f 88 c3 01 00 00 js 681900 : : /* : * Check whether there's a replication slot requiring an older catalog : * xmin. : */ : if (TransactionIdIsNormal(replication_slot_catalog_xmin) && 0.00 : 68173d: 8b 45 c4 mov -0x3c(%rbp),%eax : if (TransactionIdIsValid(replication_slot_xmin) && : NormalTransactionIdPrecedes(replication_slot_xmin, RecentGlobalXmin)) : RecentGlobalXmin = replication_slot_xmin; : : /* Non-catalog tables can be vacuumed if older than this xid */ : RecentGlobalDataXmin = RecentGlobalXmin; 0.00 : 681740: 8b 15 ba 91 53 00 mov 0x5391ba(%rip),%edx # bba900 : : /* : * Check whether there's a replication slot requiring an older catalog : * xmin. : */ : if (TransactionIdIsNormal(replication_slot_catalog_xmin) && 0.00 : 681746: 83 f8 02 cmp $0x2,%eax : if (TransactionIdIsValid(replication_slot_xmin) && : NormalTransactionIdPrecedes(replication_slot_xmin, RecentGlobalXmin)) : RecentGlobalXmin = replication_slot_xmin; : : /* Non-catalog tables can be vacuumed if older than this xid */ : RecentGlobalDataXmin = RecentGlobalXmin; 0.00 : 681749: 89 15 b5 91 53 00 mov %edx,0x5391b5(%rip) # bba904 : : /* : * Check whether there's a replication slot requiring an older catalog : * xmin. : */ : if (TransactionIdIsNormal(replication_slot_catalog_xmin) && 0.00 : 68174f: 76 17 jbe 681768 0.00 : 681751: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 681754: 39 d0 cmp %edx,%eax 0.00 : 681756: 79 10 jns 681768 : NormalTransactionIdPrecedes(replication_slot_catalog_xmin, RecentGlobalXmin)) : RecentGlobalXmin = replication_slot_catalog_xmin; 0.00 : 681758: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 68175b: 89 05 9f 91 53 00 mov %eax,0x53919f(%rip) # bba900 0.00 : 681761: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : RecentXmin = xmin; : : snapshot->xmin = xmin; : snapshot->xmax = xmax; : snapshot->xcnt = count; : snapshot->subxcnt = subcount; 0.00 : 681768: 8b 45 ac mov -0x54(%rbp),%eax : */ : if (TransactionIdIsNormal(replication_slot_catalog_xmin) && : NormalTransactionIdPrecedes(replication_slot_catalog_xmin, RecentGlobalXmin)) : RecentGlobalXmin = replication_slot_catalog_xmin; : : RecentXmin = xmin; 0.00 : 68176b: 89 0d eb 0f 4f 00 mov %ecx,0x4f0feb(%rip) # b7275c : snapshot->xmax = xmax; : snapshot->xcnt = count; : snapshot->subxcnt = subcount; : snapshot->suboverflowed = suboverflowed; : : snapshot->curcid = GetCurrentCommandId(false); 0.00 : 681771: 31 ff xor %edi,%edi : RecentGlobalXmin = replication_slot_catalog_xmin; : : RecentXmin = xmin; : : snapshot->xmin = xmin; : snapshot->xmax = xmax; 0.00 : 681773: 45 89 7c 24 0c mov %r15d,0xc(%r12) : snapshot->xcnt = count; 0.00 : 681778: 41 89 5c 24 18 mov %ebx,0x18(%r12) : NormalTransactionIdPrecedes(replication_slot_catalog_xmin, RecentGlobalXmin)) : RecentGlobalXmin = replication_slot_catalog_xmin; : : RecentXmin = xmin; : : snapshot->xmin = xmin; 0.00 : 68177d: 41 89 4c 24 08 mov %ecx,0x8(%r12) : snapshot->xmax = xmax; : snapshot->xcnt = count; : snapshot->subxcnt = subcount; 0.00 : 681782: 41 89 44 24 1c mov %eax,0x1c(%r12) : snapshot->suboverflowed = suboverflowed; 0.00 : 681787: 0f b6 45 b0 movzbl -0x50(%rbp),%eax 0.00 : 68178b: 41 88 44 24 28 mov %al,0x28(%r12) : : snapshot->curcid = GetCurrentCommandId(false); 0.00 : 681790: e8 7b f4 e3 ff callq 4c0c10 : : /* : * This is a new snapshot, so set both refcounts are zero, and mark it as : * not copied in persistent memory. : */ : snapshot->active_count = 0; 0.00 : 681795: 41 c7 44 24 30 00 00 movl $0x0,0x30(%r12) 0.00 : 68179c: 00 00 : snapshot->xmax = xmax; : snapshot->xcnt = count; : snapshot->subxcnt = subcount; : snapshot->suboverflowed = suboverflowed; : : snapshot->curcid = GetCurrentCommandId(false); 0.00 : 68179e: 41 89 44 24 2c mov %eax,0x2c(%r12) : snapshot->active_count = 0; : snapshot->regd_count = 0; : snapshot->copied = false; : : return snapshot; : } 0.00 : 6817a3: 4c 89 e0 mov %r12,%rax : /* : * This is a new snapshot, so set both refcounts are zero, and mark it as : * not copied in persistent memory. : */ : snapshot->active_count = 0; : snapshot->regd_count = 0; 0.00 : 6817a6: 41 c7 44 24 34 00 00 movl $0x0,0x34(%r12) 0.00 : 6817ad: 00 00 : snapshot->copied = false; 0.00 : 6817af: 41 c6 44 24 2a 00 movb $0x0,0x2a(%r12) : : return snapshot; : } 0.00 : 6817b5: 48 83 c4 48 add $0x48,%rsp 0.00 : 6817b9: 5b pop %rbx 0.00 : 6817ba: 41 5c pop %r12 0.00 : 6817bc: 41 5d pop %r13 0.00 : 6817be: 41 5e pop %r14 0.00 : 6817c0: 41 5f pop %r15 0.00 : 6817c2: c9 leaveq 0.00 : 6817c3: c3 retq 0.00 : 6817c4: 0f 1f 40 00 nopl 0x0(%rax) : * Update globalxmin to include actual process xids. This is a slightly : * different way of computing it than GetOldestXmin uses, but should give : * the same result. : */ : if (TransactionIdPrecedes(xmin, globalxmin)) : globalxmin = xmin; 0.00 : 6817c8: 44 8b 6d cc mov -0x34(%rbp),%r13d 0.00 : 6817cc: 44 89 e9 mov %r13d,%ecx 0.00 : 6817cf: e9 3d ff ff ff jmpq 681711 0.00 : 6817d4: 0f 1f 40 00 nopl 0x0(%rax) : * the snapshot, and for newly assigned transaction ids to be added to : * the ProcArray. xmax cannot change while we hold ProcArrayLock, so : * those newly added transaction ids would be filtered away, so we : * need not be concerned about them. : */ : subcount = KnownAssignedXidsGetAndSetXmin(snapshot->subxip, &xmin, 0.00 : 6817d8: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 6817dd: 48 8d 75 cc lea -0x34(%rbp),%rsi 0.00 : 6817e1: 44 89 fa mov %r15d,%edx : xmax); : : if (TransactionIdPrecedesOrEquals(xmin, procArray->lastOverflowedXid)) 0.00 : 6817e4: 45 89 fd mov %r15d,%r13d : * the snapshot, and for newly assigned transaction ids to be added to : * the ProcArray. xmax cannot change while we hold ProcArrayLock, so : * those newly added transaction ids would be filtered away, so we : * need not be concerned about them. : */ : subcount = KnownAssignedXidsGetAndSetXmin(snapshot->subxip, &xmin, 0.00 : 6817e7: e8 14 ed ff ff callq 680500 0.00 : 6817ec: 89 45 ac mov %eax,-0x54(%rbp) : xmax); : : if (TransactionIdPrecedesOrEquals(xmin, procArray->lastOverflowedXid)) 0.00 : 6817ef: 48 8b 05 32 be 4f 00 mov 0x4fbe32(%rip),%rax # b7d628 0.00 : 6817f6: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 6817f9: 8b 70 1c mov 0x1c(%rax),%esi 0.00 : 6817fc: e8 0f e8 e3 ff callq 4c0010 0.00 : 681801: 3c 01 cmp $0x1,%al 0.00 : 681803: 19 c0 sbb %eax,%eax 0.00 : 681805: 31 db xor %ebx,%ebx 0.00 : 681807: 83 c0 01 add $0x1,%eax 0.00 : 68180a: 88 45 b0 mov %al,-0x50(%rbp) 0.00 : 68180d: e9 aa fe ff ff jmpq 6816bc 0.00 : 681812: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * We don't include our own XIDs (if any) in the snapshot, but we : * must include them in xmin. : */ : if (NormalTransactionIdPrecedes(xid, xmin)) 0.00 : 681818: 3b 7d cc cmp -0x34(%rbp),%edi 0.00 : 68181b: 78 43 js 681860 : xmin = xid; : if (pgxact == MyPgXact) 0.00 : 68181d: 48 3b 0d 2c c1 4f 00 cmp 0x4fc12c(%rip),%rcx # b7d950 0.00 : 681824: 0f 84 86 fe ff ff je 6816b0 : continue; : : /* Add XID to snapshot. */ : snapshot->xip[count++] = xid; 0.00 : 68182a: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 68182f: 49 63 d1 movslq %r9d,%rdx 0.00 : 681832: 41 83 c1 01 add $0x1,%r9d 0.00 : 681836: 89 3c 90 mov %edi,(%rax,%rdx,4) : * missing any xids added concurrently, because they must postdate : * xmax.) : * : * Again, our own XIDs are not included in the snapshot. : */ : if (!suboverflowed) 0.00 : 681839: 80 7d b0 00 cmpb $0x0,-0x50(%rbp) 0.00 : 68183d: 0f 85 6d fe ff ff jne 6816b0 : { : if (pgxact->overflowed) 0.00 : 681843: 0f b6 41 09 movzbl 0x9(%rcx),%eax 0.00 : 681847: 84 c0 test %al,%al 0.00 : 681849: 0f 84 d4 00 00 00 je 681923 0.00 : 68184f: c6 45 b0 01 movb $0x1,-0x50(%rbp) 0.00 : 681853: e9 58 fe ff ff jmpq 6816b0 0.00 : 681858: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68185f: 00 : /* : * We don't include our own XIDs (if any) in the snapshot, but we : * must include them in xmin. : */ : if (NormalTransactionIdPrecedes(xid, xmin)) : xmin = xid; 0.00 : 681860: 89 7d cc mov %edi,-0x34(%rbp) 0.00 : 681863: eb b8 jmp 68181d 0.00 : 681865: 0f 1f 00 nopl (%rax) : { : /* : * First call for this snapshot. Snapshot is same size whether or not : * we are in recovery, see later comments. : */ : snapshot->xip = (TransactionId *) 0.00 : 681868: 49 63 7e 04 movslq 0x4(%r14),%rdi 0.00 : 68186c: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 681870: e8 bb 7d de ff callq 469630 : malloc(GetMaxSnapshotXidCount() * sizeof(TransactionId)); : if (snapshot->xip == NULL) 0.00 : 681875: 48 85 c0 test %rax,%rax : { : /* : * First call for this snapshot. Snapshot is same size whether or not : * we are in recovery, see later comments. : */ : snapshot->xip = (TransactionId *) 0.00 : 681878: 49 89 44 24 10 mov %rax,0x10(%r12) : malloc(GetMaxSnapshotXidCount() * sizeof(TransactionId)); : if (snapshot->xip == NULL) 0.00 : 68187d: 0f 84 00 01 00 00 je 681983 : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : Assert(snapshot->subxip == NULL); : snapshot->subxip = (TransactionId *) 0.00 : 681883: 8b 05 67 78 4f 00 mov 0x4f7867(%rip),%eax # b790f0 0.00 : 681889: 03 05 3d 88 53 00 add 0x53883d(%rip),%eax # bba0cc 0.00 : 68188f: 89 c7 mov %eax,%edi 0.00 : 681891: c1 e7 06 shl $0x6,%edi 0.00 : 681894: 01 c7 add %eax,%edi 0.00 : 681896: 48 63 ff movslq %edi,%rdi 0.00 : 681899: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 68189d: e8 8e 7d de ff callq 469630 : malloc(GetMaxSnapshotSubxidCount() * sizeof(TransactionId)); : if (snapshot->subxip == NULL) 0.00 : 6818a2: 48 85 c0 test %rax,%rax : if (snapshot->xip == NULL) : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : Assert(snapshot->subxip == NULL); : snapshot->subxip = (TransactionId *) 0.00 : 6818a5: 49 89 44 24 20 mov %rax,0x20(%r12) : malloc(GetMaxSnapshotSubxidCount() * sizeof(TransactionId)); : if (snapshot->subxip == NULL) 0.00 : 6818aa: 0f 85 44 fd ff ff jne 6815f4 : ereport(ERROR, 0.00 : 6818b0: 45 31 c0 xor %r8d,%r8d 0.00 : 6818b3: b9 10 b9 8a 00 mov $0x8ab910,%ecx 0.00 : 6818b8: ba 7a 05 00 00 mov $0x57a,%edx 0.00 : 6818bd: be 7a b5 8a 00 mov $0x8ab57a,%esi 0.00 : 6818c2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6818c7: e8 f4 91 0f 00 callq 77aac0 0.00 : 6818cc: 84 c0 test %al,%al 0.00 : 6818ce: 74 23 je 6818f3 0.00 : 6818d0: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 6818d5: 31 c0 xor %eax,%eax 0.00 : 6818d7: e8 c4 af 0f 00 callq 77c8a0 0.00 : 6818dc: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 6818e1: 89 c3 mov %eax,%ebx 0.00 : 6818e3: e8 68 b4 0f 00 callq 77cd50 0.00 : 6818e8: 89 de mov %ebx,%esi 0.00 : 6818ea: 89 c7 mov %eax,%edi 0.00 : 6818ec: 31 c0 xor %eax,%eax 0.00 : 6818ee: e8 ed 8c 0f 00 callq 77a5e0 0.00 : 6818f3: e8 d8 7b de ff callq 4694d0 0.00 : 6818f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6818ff: 00 : RecentGlobalXmin = FirstNormalTransactionId; : : /* Check whether there's a replication slot requiring an older xmin. */ : if (TransactionIdIsValid(replication_slot_xmin) && : NormalTransactionIdPrecedes(replication_slot_xmin, RecentGlobalXmin)) : RecentGlobalXmin = replication_slot_xmin; 0.00 : 681900: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 681903: 89 05 f7 8f 53 00 mov %eax,0x538ff7(%rip) # bba900 0.00 : 681909: e9 2f fe ff ff jmpq 68173d : * Spin over procArray checking xid, xmin, and subxids. The goal is : * to gather all active xids, find the lowest xmin, and try to record : * subxids. : */ : numProcs = arrayP->numProcs; : for (index = 0; index < numProcs; index++) 0.00 : 68190e: 45 89 fd mov %r15d,%r13d 0.00 : 681911: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) 0.00 : 681918: c6 45 b0 00 movb $0x0,-0x50(%rbp) 0.00 : 68191c: 31 db xor %ebx,%ebx 0.00 : 68191e: e9 99 fd ff ff jmpq 6816bc : { : if (pgxact->overflowed) : suboverflowed = true; : else : { : int nxids = pgxact->nxids; 0.00 : 681923: 0f b6 41 0b movzbl 0xb(%rcx),%eax 0.00 : 681927: 44 0f b6 d0 movzbl %al,%r10d : : if (nxids > 0) 0.00 : 68192b: 45 85 d2 test %r10d,%r10d 0.00 : 68192e: 0f 84 7c fd ff ff je 6816b0 : { : volatile PGPROC *proc = &allProcs[pgprocno]; : : memcpy(snapshot->subxip + subcount, 0.00 : 681934: 48 63 7d ac movslq -0x54(%rbp),%rdi 0.00 : 681938: 49 63 d2 movslq %r10d,%rdx 0.00 : 68193b: 44 89 45 a0 mov %r8d,-0x60(%rbp) : { : int nxids = pgxact->nxids; : : if (nxids > 0) : { : volatile PGPROC *proc = &allProcs[pgprocno]; 0.00 : 68193f: 48 69 f6 f0 02 00 00 imul $0x2f0,%rsi,%rsi : : memcpy(snapshot->subxip + subcount, 0.00 : 681946: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 68194a: 44 89 4d 98 mov %r9d,-0x68(%rbp) : { : int nxids = pgxact->nxids; : : if (nxids > 0) : { : volatile PGPROC *proc = &allProcs[pgprocno]; 0.00 : 68194e: 48 03 35 db bc 4f 00 add 0x4fbcdb(%rip),%rsi # b7d630 : : memcpy(snapshot->subxip + subcount, 0.00 : 681955: 44 89 55 90 mov %r10d,-0x70(%rbp) 0.00 : 681959: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 68195d: 49 03 7c 24 20 add 0x20(%r12),%rdi 0.00 : 681962: 48 81 c6 90 01 00 00 add $0x190,%rsi 0.00 : 681969: e8 82 82 de ff callq 469bf0 : (void *) proc->subxids.xids, : nxids * sizeof(TransactionId)); : subcount += nxids; 0.00 : 68196e: 44 8b 55 90 mov -0x70(%rbp),%r10d 0.00 : 681972: 44 8b 4d 98 mov -0x68(%rbp),%r9d 0.00 : 681976: 44 01 55 ac add %r10d,-0x54(%rbp) 0.00 : 68197a: 44 8b 45 a0 mov -0x60(%rbp),%r8d 0.00 : 68197e: e9 2d fd ff ff jmpq 6816b0 : * we are in recovery, see later comments. : */ : snapshot->xip = (TransactionId *) : malloc(GetMaxSnapshotXidCount() * sizeof(TransactionId)); : if (snapshot->xip == NULL) : ereport(ERROR, 0.00 : 681983: 45 31 c0 xor %r8d,%r8d 0.00 : 681986: b9 10 b9 8a 00 mov $0x8ab910,%ecx 0.00 : 68198b: ba 73 05 00 00 mov $0x573,%edx 0.00 : 681990: e9 28 ff ff ff jmpq 6818bd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1202 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006819a0 : : * increasing that setting on the fly is another easy way to make : * GetOldestXmin() move backwards, with no consequences for data integrity. : */ : TransactionId : GetOldestXmin(Relation rel, bool ignoreVacuum) : { 0.00 : 6819a0: 55 push %rbp 0.00 : 6819a1: 48 89 e5 mov %rsp,%rbp 0.00 : 6819a4: 41 57 push %r15 0.00 : 6819a6: 41 56 push %r14 0.00 : 6819a8: 41 55 push %r13 0.00 : 6819aa: 41 54 push %r12 0.00 : 6819ac: 53 push %rbx 0.00 : 6819ad: 48 83 ec 28 sub $0x28,%rsp : /* : * If we're not computing a relation specific limit, or if a shared : * relation has been passed in, backends in all databases have to be : * considered. : */ : allDbs = rel == NULL || rel->rd_rel->relisshared; 0.00 : 6819b1: 48 85 ff test %rdi,%rdi : ProcArrayStruct *arrayP = procArray; : TransactionId result; : int index; : bool allDbs; : : volatile TransactionId replication_slot_xmin = InvalidTransactionId; 0.00 : 6819b4: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%rbp) : * increasing that setting on the fly is another easy way to make : * GetOldestXmin() move backwards, with no consequences for data integrity. : */ : TransactionId : GetOldestXmin(Relation rel, bool ignoreVacuum) : { 0.00 : 6819bb: 48 89 7d b8 mov %rdi,-0x48(%rbp) 0.00 : 6819bf: 40 88 75 b7 mov %sil,-0x49(%rbp) : ProcArrayStruct *arrayP = procArray; 0.00 : 6819c3: 4c 8b 35 5e bc 4f 00 mov 0x4fbc5e(%rip),%r14 # b7d628 : TransactionId result; : int index; : bool allDbs; : : volatile TransactionId replication_slot_xmin = InvalidTransactionId; : volatile TransactionId replication_slot_catalog_xmin = InvalidTransactionId; 0.00 : 6819ca: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%rbp) : /* : * If we're not computing a relation specific limit, or if a shared : * relation has been passed in, backends in all databases have to be : * considered. : */ : allDbs = rel == NULL || rel->rd_rel->relisshared; 0.00 : 6819d1: c6 45 c7 01 movb $0x1,-0x39(%rbp) 0.00 : 6819d5: 74 10 je 6819e7 0.00 : 6819d7: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 6819db: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 6819df: 80 78 6d 00 cmpb $0x0,0x6d(%rax) 0.00 : 6819e3: 0f 95 45 c7 setne -0x39(%rbp) : : /* Cannot look for individual databases during recovery */ : Assert(allDbs || !RecoveryInProgress()); : : LWLockAcquire(ProcArrayLock, LW_SHARED); 0.00 : 6819e7: 48 8b 3d 12 c0 4f 00 mov 0x4fc012(%rip),%rdi # b7da00 0.00 : 6819ee: be 01 00 00 00 mov $0x1,%esi 0.00 : 6819f3: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 6819f7: e8 f4 e0 00 00 callq 68faf0 : * We initialize the MIN() calculation with latestCompletedXid + 1. This : * is a lower bound for the XIDs that might appear in the ProcArray later, : * and so protects us against overestimating the result due to future : * additions. : */ : result = ShmemVariableCache->latestCompletedXid; 0.00 : 6819fc: 48 8b 05 85 73 4f 00 mov 0x4f7385(%rip),%rax # b78d88 0.00 : 681a03: 8b 40 24 mov 0x24(%rax),%eax : Assert(TransactionIdIsNormal(result)); : TransactionIdAdvance(result); 0.00 : 681a06: 44 8d 78 01 lea 0x1(%rax),%r15d 0.00 : 681a0a: b8 03 00 00 00 mov $0x3,%eax 0.00 : 681a0f: 41 83 ff 02 cmp $0x2,%r15d 0.00 : 681a13: 44 0f 46 f8 cmovbe %eax,%r15d : : for (index = 0; index < arrayP->numProcs; index++) 0.00 : 681a17: 41 8b 06 mov (%r14),%eax 0.00 : 681a1a: 85 c0 test %eax,%eax 0.00 : 681a1c: 0f 8e ce 00 00 00 jle 681af0 0.00 : 681a22: 45 31 ed xor %r13d,%r13d 0.00 : 681a25: eb 26 jmp 681a4d 0.00 : 681a27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 681a2e: 00 00 : * : * We must check both Xid and Xmin because a transaction might : * have an Xmin but not (yet) an Xid; conversely, if it has an : * Xid, that could determine some not-yet-set Xmin. : */ : xid = pgxact->xmin; /* Fetch just once */ 0.00 : 681a30: 8b 5b 04 mov 0x4(%rbx),%ebx : if (TransactionIdIsNormal(xid) && 0.00 : 681a33: 83 fb 02 cmp $0x2,%ebx 0.00 : 681a36: 0f 87 96 00 00 00 ja 681ad2 0.00 : 681a3c: 0f 1f 40 00 nopl 0x0(%rax) : */ : result = ShmemVariableCache->latestCompletedXid; : Assert(TransactionIdIsNormal(result)); : TransactionIdAdvance(result); : : for (index = 0; index < arrayP->numProcs; index++) 0.00 : 681a40: 41 83 c5 01 add $0x1,%r13d 0.00 : 681a44: 45 39 2e cmp %r13d,(%r14) 0.00 : 681a47: 0f 8e a3 00 00 00 jle 681af0 : { : int pgprocno = arrayP->pgprocnos[index]; : volatile PGPROC *proc = &allProcs[pgprocno]; 0.00 : 681a4d: 49 63 c5 movslq %r13d,%rax 0.00 : 681a50: 48 8b 0d d9 bb 4f 00 mov 0x4fbbd9(%rip),%rcx # b7d630 0.00 : 681a57: 49 63 54 86 28 movslq 0x28(%r14,%rax,4),%rdx : volatile PGXACT *pgxact = &allPgXact[pgprocno]; 0.00 : 681a5c: 48 8d 04 52 lea (%rdx,%rdx,2),%rax 0.00 : 681a60: 48 8d 1c 85 00 00 00 lea 0x0(,%rax,4),%rbx 0.00 : 681a67: 00 0.00 : 681a68: 48 03 1d c9 bb 4f 00 add 0x4fbbc9(%rip),%rbx # b7d638 : : /* : * Backend is doing logical decoding which manages xmin separately, : * check below. : */ : if (pgxact->vacuumFlags & PROC_IN_LOGICAL_DECODING) 0.00 : 681a6f: 0f b6 43 08 movzbl 0x8(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1202 100.00 : 681a73: a8 10 test $0x10,%al 0.00 : 681a75: 75 c9 jne 681a40 : continue; : : if (ignoreVacuum && (pgxact->vacuumFlags & PROC_IN_VACUUM)) 0.00 : 681a77: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 681a7b: 74 08 je 681a85 0.00 : 681a7d: 0f b6 43 08 movzbl 0x8(%rbx),%eax 0.00 : 681a81: a8 02 test $0x2,%al 0.00 : 681a83: 75 bb jne 681a40 : continue; : : if (allDbs || 0.00 : 681a85: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) 0.00 : 681a89: 75 1d jne 681aa8 : TransactionIdAdvance(result); : : for (index = 0; index < arrayP->numProcs; index++) : { : int pgprocno = arrayP->pgprocnos[index]; : volatile PGPROC *proc = &allProcs[pgprocno]; 0.00 : 681a8b: 48 69 c2 f0 02 00 00 imul $0x2f0,%rdx,%rax 0.00 : 681a92: 48 8d 14 01 lea (%rcx,%rax,1),%rdx : continue; : : if (ignoreVacuum && (pgxact->vacuumFlags & PROC_IN_VACUUM)) : continue; : : if (allDbs || 0.00 : 681a96: 8b 42 38 mov 0x38(%rdx),%eax 0.00 : 681a99: 3b 05 09 86 53 00 cmp 0x538609(%rip),%eax # bba0a8 0.00 : 681a9f: 74 07 je 681aa8 0.00 : 681aa1: 8b 42 38 mov 0x38(%rdx),%eax 0.00 : 681aa4: 85 c0 test %eax,%eax 0.00 : 681aa6: 75 98 jne 681a40 : proc->databaseId == MyDatabaseId || : proc->databaseId == 0) /* always include WalSender */ : { : /* Fetch xid just once - see GetNewTransactionId */ : TransactionId xid = pgxact->xid; 0.00 : 681aa8: 44 8b 23 mov (%rbx),%r12d : : /* First consider the transaction's own Xid, if any */ : if (TransactionIdIsNormal(xid) && 0.00 : 681aab: 41 83 fc 02 cmp $0x2,%r12d 0.00 : 681aaf: 0f 86 7b ff ff ff jbe 681a30 0.00 : 681ab5: 44 89 fe mov %r15d,%esi 0.00 : 681ab8: 44 89 e7 mov %r12d,%edi 0.00 : 681abb: e8 20 e5 e3 ff callq 4bffe0 : * : * We must check both Xid and Xmin because a transaction might : * have an Xmin but not (yet) an Xid; conversely, if it has an : * Xid, that could determine some not-yet-set Xmin. : */ : xid = pgxact->xmin; /* Fetch just once */ 0.00 : 681ac0: 8b 5b 04 mov 0x4(%rbx),%ebx : { : /* Fetch xid just once - see GetNewTransactionId */ : TransactionId xid = pgxact->xid; : : /* First consider the transaction's own Xid, if any */ : if (TransactionIdIsNormal(xid) && 0.00 : 681ac3: 84 c0 test %al,%al 0.00 : 681ac5: 45 0f 45 fc cmovne %r12d,%r15d : * We must check both Xid and Xmin because a transaction might : * have an Xmin but not (yet) an Xid; conversely, if it has an : * Xid, that could determine some not-yet-set Xmin. : */ : xid = pgxact->xmin; /* Fetch just once */ : if (TransactionIdIsNormal(xid) && 0.00 : 681ac9: 83 fb 02 cmp $0x2,%ebx 0.00 : 681acc: 0f 86 6e ff ff ff jbe 681a40 0.00 : 681ad2: 44 89 fe mov %r15d,%esi 0.00 : 681ad5: 89 df mov %ebx,%edi 0.00 : 681ad7: e8 04 e5 e3 ff callq 4bffe0 0.00 : 681adc: 84 c0 test %al,%al 0.00 : 681ade: 44 0f 45 fb cmovne %ebx,%r15d : */ : result = ShmemVariableCache->latestCompletedXid; : Assert(TransactionIdIsNormal(result)); : TransactionIdAdvance(result); : : for (index = 0; index < arrayP->numProcs; index++) 0.00 : 681ae2: 41 83 c5 01 add $0x1,%r13d 0.00 : 681ae6: 45 39 2e cmp %r13d,(%r14) 0.00 : 681ae9: 0f 8f 5e ff ff ff jg 681a4d 0.00 : 681aef: 90 nop : result = xid; : } : } : : /* fetch into volatile var while ProcArrayLock is held */ : replication_slot_xmin = procArray->replication_slot_xmin; 0.00 : 681af0: 48 8b 15 31 bb 4f 00 mov 0x4fbb31(%rip),%rdx # b7d628 : */ : result = ShmemVariableCache->latestCompletedXid; : Assert(TransactionIdIsNormal(result)); : TransactionIdAdvance(result); : : for (index = 0; index < arrayP->numProcs; index++) 0.00 : 681af7: 45 89 fc mov %r15d,%r12d : result = xid; : } : } : : /* fetch into volatile var while ProcArrayLock is held */ : replication_slot_xmin = procArray->replication_slot_xmin; 0.00 : 681afa: 8b 42 20 mov 0x20(%rdx),%eax 0.00 : 681afd: 89 45 d4 mov %eax,-0x2c(%rbp) : replication_slot_catalog_xmin = procArray->replication_slot_catalog_xmin; 0.00 : 681b00: 8b 42 24 mov 0x24(%rdx),%eax 0.00 : 681b03: 89 45 d0 mov %eax,-0x30(%rbp) : : if (RecoveryInProgress()) 0.00 : 681b06: e8 b5 b9 e4 ff callq 4cd4c0 0.00 : 681b0b: 84 c0 test %al,%al 0.00 : 681b0d: 0f 84 0d 01 00 00 je 681c20 : */ : static TransactionId : KnownAssignedXidsGetOldestXmin(void) : { : /* use volatile pointer to prevent code rearrangement */ : volatile ProcArrayStruct *pArray = procArray; 0.00 : 681b13: 48 8b 1d 0e bb 4f 00 mov 0x4fbb0e(%rip),%rbx # b7d628 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 681b1a: b8 01 00 00 00 mov $0x1,%eax : int i; : : /* : * Fetch head just once, since it may change while we loop. : */ : SpinLockAcquire(&pArray->known_assigned_xids_lck); 0.00 : 681b1f: 48 8d 7b 18 lea 0x18(%rbx),%rdi 0.00 : 681b23: f0 86 07 lock xchg %al,(%rdi) 0.00 : 681b26: 84 c0 test %al,%al 0.00 : 681b28: 0f 85 9a 00 00 00 jne 681bc8 : tail = pArray->tailKnownAssignedXids; 0.00 : 681b2e: 8b 43 10 mov 0x10(%rbx),%eax : head = pArray->headKnownAssignedXids; 0.00 : 681b31: 8b 73 14 mov 0x14(%rbx),%esi : SpinLockRelease(&pArray->known_assigned_xids_lck); : : for (i = tail; i < head; i++) 0.00 : 681b34: 39 f0 cmp %esi,%eax : * Fetch head just once, since it may change while we loop. : */ : SpinLockAcquire(&pArray->known_assigned_xids_lck); : tail = pArray->tailKnownAssignedXids; : head = pArray->headKnownAssignedXids; : SpinLockRelease(&pArray->known_assigned_xids_lck); 0.00 : 681b36: c6 43 18 00 movb $0x0,0x18(%rbx) : : for (i = tail; i < head; i++) 0.00 : 681b3a: 7d 2c jge 681b68 : { : /* Skip any gaps in the array */ : if (KnownAssignedXidsValid[i]) 0.00 : 681b3c: 48 8b 0d 05 bb 4f 00 mov 0x4fbb05(%rip),%rcx # b7d648 0.00 : 681b43: 48 63 d0 movslq %eax,%rdx 0.00 : 681b46: 80 3c 11 00 cmpb $0x0,(%rcx,%rdx,1) 0.00 : 681b4a: 74 15 je 681b61 0.00 : 681b4c: e9 8f 00 00 00 jmpq 681be0 0.00 : 681b51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 681b58: 48 63 d0 movslq %eax,%rdx 0.00 : 681b5b: 80 3c 11 00 cmpb $0x0,(%rcx,%rdx,1) 0.00 : 681b5f: 75 7f jne 681be0 : SpinLockAcquire(&pArray->known_assigned_xids_lck); : tail = pArray->tailKnownAssignedXids; : head = pArray->headKnownAssignedXids; : SpinLockRelease(&pArray->known_assigned_xids_lck); : : for (i = tail; i < head; i++) 0.00 : 681b61: 83 c0 01 add $0x1,%eax 0.00 : 681b64: 39 c6 cmp %eax,%esi 0.00 : 681b66: 7f f0 jg 681b58 : * Check to see whether KnownAssignedXids contains an xid value older : * than the main procarray. : */ : TransactionId kaxmin = KnownAssignedXidsGetOldestXmin(); : : LWLockRelease(ProcArrayLock); 0.00 : 681b68: 48 8b 3d 91 be 4f 00 mov 0x4fbe91(%rip),%rdi # b7da00 0.00 : 681b6f: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681b73: e8 28 d8 00 00 callq 68f3a0 : } : : /* : * Check whether there are replication slots requiring an older xmin. : */ : if (TransactionIdIsValid(replication_slot_xmin) && 0.00 : 681b78: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 681b7b: 85 c0 test %eax,%eax 0.00 : 681b7d: 74 0c je 681b8b 0.00 : 681b7f: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 681b82: 44 39 e0 cmp %r12d,%eax 0.00 : 681b85: 0f 88 15 01 00 00 js 681ca0 : * After locks have been released and defer_cleanup_age has been applied, : * check whether we need to back up further to make logical decoding : * possible. We need to do so if we're computing the global limit (rel = : * NULL) or if the passed relation is a catalog relation of some kind. : */ : if ((rel == NULL || 0.00 : 681b8b: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp) 0.00 : 681b90: 0f 84 e2 00 00 00 je 681c78 0.00 : 681b96: 83 3d bf 75 4f 00 02 cmpl $0x2,0x4f75bf(%rip) # b7915c 0.00 : 681b9d: 7e 12 jle 681bb1 0.00 : 681b9f: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 681ba3: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 681ba7: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 681bab: 0f 84 98 00 00 00 je 681c49 : TransactionIdIsValid(replication_slot_catalog_xmin) && : NormalTransactionIdPrecedes(replication_slot_catalog_xmin, result)) : result = replication_slot_catalog_xmin; : : return result; : } 0.00 : 681bb1: 48 83 c4 28 add $0x28,%rsp 0.00 : 681bb5: 44 89 e0 mov %r12d,%eax 0.00 : 681bb8: 5b pop %rbx 0.00 : 681bb9: 41 5c pop %r12 0.00 : 681bbb: 41 5d pop %r13 0.00 : 681bbd: 41 5e pop %r14 0.00 : 681bbf: 41 5f pop %r15 0.00 : 681bc1: c9 leaveq 0.00 : 681bc2: c3 retq 0.00 : 681bc3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int i; : : /* : * Fetch head just once, since it may change while we loop. : */ : SpinLockAcquire(&pArray->known_assigned_xids_lck); 0.00 : 681bc8: ba 12 0e 00 00 mov $0xe12,%edx 0.00 : 681bcd: be 7a b5 8a 00 mov $0x8ab57a,%esi 0.00 : 681bd2: e8 69 e4 00 00 callq 690040 0.00 : 681bd7: e9 52 ff ff ff jmpq 681b2e 0.00 : 681bdc: 0f 1f 40 00 nopl 0x0(%rax) : : for (i = tail; i < head; i++) : { : /* Skip any gaps in the array */ : if (KnownAssignedXidsValid[i]) : return KnownAssignedXids[i]; 0.00 : 681be0: 48 8b 05 59 ba 4f 00 mov 0x4fba59(%rip),%rax # b7d640 : * Check to see whether KnownAssignedXids contains an xid value older : * than the main procarray. : */ : TransactionId kaxmin = KnownAssignedXidsGetOldestXmin(); : : LWLockRelease(ProcArrayLock); 0.00 : 681be7: 48 8b 3d 12 be 4f 00 mov 0x4fbe12(%rip),%rdi # b7da00 : : for (i = tail; i < head; i++) : { : /* Skip any gaps in the array */ : if (KnownAssignedXidsValid[i]) : return KnownAssignedXids[i]; 0.00 : 681bee: 8b 1c 90 mov (%rax,%rdx,4),%ebx : * Check to see whether KnownAssignedXids contains an xid value older : * than the main procarray. : */ : TransactionId kaxmin = KnownAssignedXidsGetOldestXmin(); : : LWLockRelease(ProcArrayLock); 0.00 : 681bf1: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681bf5: e8 a6 d7 00 00 callq 68f3a0 : : if (TransactionIdIsNormal(kaxmin) && 0.00 : 681bfa: 83 fb 02 cmp $0x2,%ebx 0.00 : 681bfd: 0f 86 75 ff ff ff jbe 681b78 0.00 : 681c03: 44 89 fe mov %r15d,%esi 0.00 : 681c06: 89 df mov %ebx,%edi 0.00 : 681c08: 41 89 dc mov %ebx,%r12d 0.00 : 681c0b: e8 d0 e3 e3 ff callq 4bffe0 0.00 : 681c10: 84 c0 test %al,%al 0.00 : 681c12: 45 0f 44 e7 cmove %r15d,%r12d 0.00 : 681c16: e9 5d ff ff ff jmpq 681b78 0.00 : 681c1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : else : { : /* : * No other information needed, so release the lock immediately. : */ : LWLockRelease(ProcArrayLock); 0.00 : 681c20: 48 8b 3d d9 bd 4f 00 mov 0x4fbdd9(%rip),%rdi # b7da00 0.00 : 681c27: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681c2b: e8 70 d7 00 00 callq 68f3a0 : * vacuum_defer_cleanup_age isn't large enough to cause wraparound --- : * so guc.c should limit it to no more than the xidStopLimit threshold : * in varsup.c. Also note that we intentionally don't apply : * vacuum_defer_cleanup_age on standby servers. : */ : result -= vacuum_defer_cleanup_age; 0.00 : 681c30: 44 2b 25 e9 de 53 00 sub 0x53dee9(%rip),%r12d # bbfb20 : if (!TransactionIdIsNormal(result)) 0.00 : 681c37: b8 03 00 00 00 mov $0x3,%eax 0.00 : 681c3c: 41 83 fc 02 cmp $0x2,%r12d 0.00 : 681c40: 44 0f 46 e0 cmovbe %eax,%r12d 0.00 : 681c44: e9 2f ff ff ff jmpq 681b78 : * After locks have been released and defer_cleanup_age has been applied, : * check whether we need to back up further to make logical decoding : * possible. We need to do so if we're computing the global limit (rel = : * NULL) or if the passed relation is a catalog relation of some kind. : */ : if ((rel == NULL || 0.00 : 681c49: 48 89 d7 mov %rdx,%rdi 0.00 : 681c4c: e8 8f 11 e6 ff callq 4e2de0 0.00 : 681c51: 84 c0 test %al,%al 0.00 : 681c53: 75 23 jne 681c78 0.00 : 681c55: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 681c59: 48 8b 82 98 00 00 00 mov 0x98(%rdx),%rax 0.00 : 681c60: 48 85 c0 test %rax,%rax 0.00 : 681c63: 0f 84 48 ff ff ff je 681bb1 0.00 : 681c69: 80 78 48 00 cmpb $0x0,0x48(%rax) 0.00 : 681c6d: 0f 84 3e ff ff ff je 681bb1 0.00 : 681c73: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 681c78: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 681c7b: 85 c0 test %eax,%eax 0.00 : 681c7d: 0f 84 2e ff ff ff je 681bb1 0.00 : 681c83: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 681c86: 44 39 e0 cmp %r12d,%eax 0.00 : 681c89: 0f 89 22 ff ff ff jns 681bb1 : RelationIsAccessibleInLogicalDecoding(rel)) && : TransactionIdIsValid(replication_slot_catalog_xmin) && : NormalTransactionIdPrecedes(replication_slot_catalog_xmin, result)) : result = replication_slot_catalog_xmin; 0.00 : 681c8f: 44 8b 65 d0 mov -0x30(%rbp),%r12d 0.00 : 681c93: e9 19 ff ff ff jmpq 681bb1 0.00 : 681c98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 681c9f: 00 : /* : * Check whether there are replication slots requiring an older xmin. : */ : if (TransactionIdIsValid(replication_slot_xmin) && : NormalTransactionIdPrecedes(replication_slot_xmin, result)) : result = replication_slot_xmin; 0.00 : 681ca0: 44 8b 65 d4 mov -0x2c(%rbp),%r12d 0.00 : 681ca4: e9 e2 fe ff ff jmpq 681b8b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:146 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:155 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006834d0 : : *-------------------- : */ : Pointer : SHMQueueNext(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, Size linkOffset) : { : SHM_QUEUE *elemPtr = curElem->next; 0.00 : 6834d0: 48 8b 4e 08 mov 0x8(%rsi),%rcx : * &(queueHead), &(curElem->elem), offsetof(ELEMType, elem) : *-------------------- : */ : Pointer : SHMQueueNext(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, Size linkOffset) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:146 50.00 : 6834d4: 55 push %rbp 0.00 : 6834d5: 48 89 e5 mov %rsp,%rbp : : if (elemPtr == queue) /* back to the queue head? */ : return NULL; : : return (Pointer) (((char *) elemPtr) - linkOffset); : } 0.00 : 6834d8: c9 leaveq : { : SHM_QUEUE *elemPtr = curElem->next; : : Assert(ShmemAddrIsValid(curElem)); : : if (elemPtr == queue) /* back to the queue head? */ 0.00 : 6834d9: 48 89 c8 mov %rcx,%rax 0.00 : 6834dc: 48 29 d0 sub %rdx,%rax 0.00 : 6834df: 48 89 c2 mov %rax,%rdx 0.00 : 6834e2: 31 c0 xor %eax,%eax 0.00 : 6834e4: 48 39 f9 cmp %rdi,%rcx /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:155 50.00 : 6834e7: 48 0f 45 c2 cmovne %rdx,%rax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinval.c:80 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006849b0 : : */ : void : ReceiveSharedInvalidMessages( : void (*invalFunction) (SharedInvalidationMessage *msg), : void (*resetFunction) (void)) : { 0.00 : 6849b0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinval.c:80 100.00 : 6849b1: 48 89 e5 mov %rsp,%rbp 0.00 : 6849b4: 41 55 push %r13 0.00 : 6849b6: 49 89 f5 mov %rsi,%r13 0.00 : 6849b9: 41 54 push %r12 0.00 : 6849bb: 53 push %rbx 0.00 : 6849bc: 48 89 fb mov %rdi,%rbx 0.00 : 6849bf: 48 83 ec 28 sub $0x28,%rsp : */ : static volatile int nextmsg = 0; : static volatile int nummsgs = 0; : : /* Deal with any messages still pending from an outer recursion */ : while (nextmsg < nummsgs) 0.00 : 6849c3: 8b 15 e3 8c 4f 00 mov 0x4f8ce3(%rip),%edx # b7d6ac 0.00 : 6849c9: 8b 05 d9 8c 4f 00 mov 0x4f8cd9(%rip),%eax # b7d6a8 0.00 : 6849cf: 39 c2 cmp %eax,%edx 0.00 : 6849d1: 7d 56 jge 684a29 0.00 : 6849d3: 4c 8d 65 d0 lea -0x30(%rbp),%r12 0.00 : 6849d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6849de: 00 00 : { : SharedInvalidationMessage msg = messages[nextmsg++]; 0.00 : 6849e0: 8b 0d c6 8c 4f 00 mov 0x4f8cc6(%rip),%ecx # b7d6ac : : SharedInvalidMessageCounter++; 0.00 : 6849e6: 48 83 05 2a b1 53 00 addq $0x1,0x53b12a(%rip) # bbfb18 0.00 : 6849ed: 01 : invalFunction(&msg); 0.00 : 6849ee: 4c 89 e7 mov %r12,%rdi : static volatile int nummsgs = 0; : : /* Deal with any messages still pending from an outer recursion */ : while (nextmsg < nummsgs) : { : SharedInvalidationMessage msg = messages[nextmsg++]; 0.00 : 6849f1: 48 63 c1 movslq %ecx,%rax 0.00 : 6849f4: 83 c1 01 add $0x1,%ecx 0.00 : 6849f7: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6849fb: 89 0d ab 8c 4f 00 mov %ecx,0x4f8cab(%rip) # b7d6ac 0.00 : 684a01: 48 8b 90 c0 d6 b7 00 mov 0xb7d6c0(%rax),%rdx 0.00 : 684a08: 48 8b 80 c8 d6 b7 00 mov 0xb7d6c8(%rax),%rax 0.00 : 684a0f: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 684a13: 48 89 45 d8 mov %rax,-0x28(%rbp) : : SharedInvalidMessageCounter++; : invalFunction(&msg); 0.00 : 684a17: ff d3 callq *%rbx : */ : static volatile int nextmsg = 0; : static volatile int nummsgs = 0; : : /* Deal with any messages still pending from an outer recursion */ : while (nextmsg < nummsgs) 0.00 : 684a19: 8b 15 8d 8c 4f 00 mov 0x4f8c8d(%rip),%edx # b7d6ac 0.00 : 684a1f: 8b 05 83 8c 4f 00 mov 0x4f8c83(%rip),%eax # b7d6a8 0.00 : 684a25: 39 c2 cmp %eax,%edx 0.00 : 684a27: 7c b7 jl 6849e0 0.00 : 684a29: 4c 8d 65 c0 lea -0x40(%rbp),%r12 0.00 : 684a2d: 0f 1f 00 nopl (%rax) : : do : { : int getResult; : : nextmsg = nummsgs = 0; 0.00 : 684a30: c7 05 6e 8c 4f 00 00 movl $0x0,0x4f8c6e(%rip) # b7d6a8 0.00 : 684a37: 00 00 00 0.00 : 684a3a: 8b 05 68 8c 4f 00 mov 0x4f8c68(%rip),%eax # b7d6a8 : : /* Try to get some more messages */ : getResult = SIGetDataEntries(messages, MAXINVALMSGS); 0.00 : 684a40: be 20 00 00 00 mov $0x20,%esi 0.00 : 684a45: bf c0 d6 b7 00 mov $0xb7d6c0,%edi : : do : { : int getResult; : : nextmsg = nummsgs = 0; 0.00 : 684a4a: 89 05 5c 8c 4f 00 mov %eax,0x4f8c5c(%rip) # b7d6ac : : /* Try to get some more messages */ : getResult = SIGetDataEntries(messages, MAXINVALMSGS); 0.00 : 684a50: e8 9b 05 00 00 callq 684ff0 : : if (getResult < 0) 0.00 : 684a55: 85 c0 test %eax,%eax 0.00 : 684a57: 0f 88 c8 00 00 00 js 684b25 : resetFunction(); : break; /* nothing more to do */ : } : : /* Process them, being wary that a recursive call might eat some */ : nextmsg = 0; 0.00 : 684a5d: c7 05 45 8c 4f 00 00 movl $0x0,0x4f8c45(%rip) # b7d6ac 0.00 : 684a64: 00 00 00 : nummsgs = getResult; 0.00 : 684a67: 89 05 3b 8c 4f 00 mov %eax,0x4f8c3b(%rip) # b7d6a8 : : while (nextmsg < nummsgs) 0.00 : 684a6d: 8b 15 39 8c 4f 00 mov 0x4f8c39(%rip),%edx # b7d6ac 0.00 : 684a73: 8b 05 2f 8c 4f 00 mov 0x4f8c2f(%rip),%eax # b7d6a8 0.00 : 684a79: 39 c2 cmp %eax,%edx 0.00 : 684a7b: 7d 4c jge 684ac9 0.00 : 684a7d: 0f 1f 00 nopl (%rax) : { : SharedInvalidationMessage msg = messages[nextmsg++]; 0.00 : 684a80: 8b 0d 26 8c 4f 00 mov 0x4f8c26(%rip),%ecx # b7d6ac : : SharedInvalidMessageCounter++; 0.00 : 684a86: 48 83 05 8a b0 53 00 addq $0x1,0x53b08a(%rip) # bbfb18 0.00 : 684a8d: 01 : invalFunction(&msg); 0.00 : 684a8e: 4c 89 e7 mov %r12,%rdi : nextmsg = 0; : nummsgs = getResult; : : while (nextmsg < nummsgs) : { : SharedInvalidationMessage msg = messages[nextmsg++]; 0.00 : 684a91: 48 63 c1 movslq %ecx,%rax 0.00 : 684a94: 83 c1 01 add $0x1,%ecx 0.00 : 684a97: 48 c1 e0 04 shl $0x4,%rax 0.00 : 684a9b: 89 0d 0b 8c 4f 00 mov %ecx,0x4f8c0b(%rip) # b7d6ac 0.00 : 684aa1: 48 8b 90 c0 d6 b7 00 mov 0xb7d6c0(%rax),%rdx 0.00 : 684aa8: 48 8b 80 c8 d6 b7 00 mov 0xb7d6c8(%rax),%rax 0.00 : 684aaf: 48 89 55 c0 mov %rdx,-0x40(%rbp) 0.00 : 684ab3: 48 89 45 c8 mov %rax,-0x38(%rbp) : : SharedInvalidMessageCounter++; : invalFunction(&msg); 0.00 : 684ab7: ff d3 callq *%rbx : : /* Process them, being wary that a recursive call might eat some */ : nextmsg = 0; : nummsgs = getResult; : : while (nextmsg < nummsgs) 0.00 : 684ab9: 8b 15 ed 8b 4f 00 mov 0x4f8bed(%rip),%edx # b7d6ac 0.00 : 684abf: 8b 05 e3 8b 4f 00 mov 0x4f8be3(%rip),%eax # b7d6a8 0.00 : 684ac5: 39 c2 cmp %eax,%edx 0.00 : 684ac7: 7c b7 jl 684a80 : : /* : * We only need to loop if the last SIGetDataEntries call (which might : * have been within a recursive call) returned a full buffer. : */ : } while (nummsgs == MAXINVALMSGS); 0.00 : 684ac9: 8b 05 d9 8b 4f 00 mov 0x4f8bd9(%rip),%eax # b7d6a8 0.00 : 684acf: 83 f8 20 cmp $0x20,%eax 0.00 : 684ad2: 0f 84 58 ff ff ff je 684a30 : * to flush dead messages right now, as that we want to pass on the : * catchup signal to the next slowest backend. "Daisy chaining" the : * catchup signal this way avoids creating spikes in system load for what : * should be just a background maintenance activity. : */ : if (catchupInterruptOccurred) 0.00 : 684ad8: 8b 05 c6 8b 4f 00 mov 0x4f8bc6(%rip),%eax # b7d6a4 0.00 : 684ade: 85 c0 test %eax,%eax 0.00 : 684ae0: 74 38 je 684b1a : { : catchupInterruptOccurred = 0; : elog(DEBUG4, "sinval catchup complete, cleaning queue"); 0.00 : 684ae2: ba 00 bd 8a 00 mov $0x8abd00,%edx 0.00 : 684ae7: be 93 00 00 00 mov $0x93,%esi 0.00 : 684aec: bf 41 bc 8a 00 mov $0x8abc41,%edi : * catchup signal this way avoids creating spikes in system load for what : * should be just a background maintenance activity. : */ : if (catchupInterruptOccurred) : { : catchupInterruptOccurred = 0; 0.00 : 684af1: c7 05 a9 8b 4f 00 00 movl $0x0,0x4f8ba9(%rip) # b7d6a4 0.00 : 684af8: 00 00 00 : elog(DEBUG4, "sinval catchup complete, cleaning queue"); 0.00 : 684afb: e8 20 69 0f 00 callq 77b420 0.00 : 684b00: be b0 bc 8a 00 mov $0x8abcb0,%esi 0.00 : 684b05: bf 0b 00 00 00 mov $0xb,%edi 0.00 : 684b0a: 31 c0 xor %eax,%eax 0.00 : 684b0c: e8 1f 67 0f 00 callq 77b230 : SICleanupQueue(false, 0); 0.00 : 684b11: 31 f6 xor %esi,%esi 0.00 : 684b13: 31 ff xor %edi,%edi 0.00 : 684b15: e8 66 02 00 00 callq 684d80 : } : } 0.00 : 684b1a: 48 83 c4 28 add $0x28,%rsp 0.00 : 684b1e: 5b pop %rbx 0.00 : 684b1f: 41 5c pop %r12 0.00 : 684b21: 41 5d pop %r13 0.00 : 684b23: c9 leaveq 0.00 : 684b24: c3 retq : getResult = SIGetDataEntries(messages, MAXINVALMSGS); : : if (getResult < 0) : { : /* got a reset message */ : elog(DEBUG4, "cache state reset"); 0.00 : 684b25: ba 00 bd 8a 00 mov $0x8abd00,%edx 0.00 : 684b2a: be 70 00 00 00 mov $0x70,%esi 0.00 : 684b2f: bf 41 bc 8a 00 mov $0x8abc41,%edi 0.00 : 684b34: e8 e7 68 0f 00 callq 77b420 0.00 : 684b39: be 4a bc 8a 00 mov $0x8abc4a,%esi 0.00 : 684b3e: bf 0b 00 00 00 mov $0xb,%edi 0.00 : 684b43: 31 c0 xor %eax,%eax 0.00 : 684b45: e8 e6 66 0f 00 callq 77b230 : SharedInvalidMessageCounter++; 0.00 : 684b4a: 48 83 05 c6 af 53 00 addq $0x1,0x53afc6(%rip) # bbfb18 0.00 : 684b51: 01 : resetFunction(); 0.00 : 684b52: 41 ff d5 callq *%r13 : break; /* nothing more to do */ 0.00 : 684b55: eb 81 jmp 684ad8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1087 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000688670 : : * held at exit. : */ : static PROCLOCK * : SetupLockInTable(LockMethod lockMethodTable, PGPROC *proc, : const LOCKTAG *locktag, uint32 hashcode, LOCKMODE lockmode) : { 0.00 : 688670: 55 push %rbp 0.00 : 688671: 48 89 e5 mov %rsp,%rbp 0.00 : 688674: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 688678: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 68867c: 41 89 cc mov %ecx,%r12d 0.00 : 68867f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 688683: 4c 89 75 f0 mov %r14,-0x10(%rbp) : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 688687: 4c 8d 6d cf lea -0x31(%rbp),%r13 : * held at exit. : */ : static PROCLOCK * : SetupLockInTable(LockMethod lockMethodTable, PGPROC *proc, : const LOCKTAG *locktag, uint32 hashcode, LOCKMODE lockmode) : { 0.00 : 68868b: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 68868f: 48 83 ec 60 sub $0x60,%rsp 0.00 : 688693: 48 89 7d a8 mov %rdi,-0x58(%rbp) : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 688697: 48 8b 3d 62 52 4f 00 mov 0x4f5262(%rip),%rdi # b7d900 : * held at exit. : */ : static PROCLOCK * : SetupLockInTable(LockMethod lockMethodTable, PGPROC *proc, : const LOCKTAG *locktag, uint32 hashcode, LOCKMODE lockmode) : { 0.00 : 68869e: 49 89 f6 mov %rsi,%r14 0.00 : 6886a1: 45 89 c7 mov %r8d,%r15d 0.00 : 6886a4: 48 89 d6 mov %rdx,%rsi : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 6886a7: 4d 89 e8 mov %r13,%r8 0.00 : 6886aa: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 6886af: 44 89 e2 mov %r12d,%edx 0.00 : 6886b2: e8 99 b9 0f 00 callq 784050 : (const void *) locktag, : hashcode, : HASH_ENTER_NULL, : &found); : if (!lock) 0.00 : 6886b7: 48 85 c0 test %rax,%rax : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 6886ba: 48 89 c3 mov %rax,%rbx : (const void *) locktag, : hashcode, : HASH_ENTER_NULL, : &found); : if (!lock) 0.00 : 6886bd: 0f 84 c5 01 00 00 je 688888 : return NULL; : : /* : * if it's a new lock object, initialize it : */ : if (!found) 0.00 : 6886c3: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 6886c7: 74 77 je 688740 : proclock_hashcode = ProcLockHashCode(&proclocktag, hashcode); : : /* : * Find or create a proclock entry with this tag : */ : proclock = (PROCLOCK *) hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 6886c9: 44 89 f2 mov %r14d,%edx 0.00 : 6886cc: 48 8b 3d 35 52 4f 00 mov 0x4f5235(%rip),%rdi # b7d908 0.00 : 6886d3: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 6886d7: c1 e2 04 shl $0x4,%edx 0.00 : 6886da: 4d 89 e8 mov %r13,%r8 0.00 : 6886dd: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 6886e2: 44 31 e2 xor %r12d,%edx : } : : /* : * Create the hash key for the proclock table. : */ : proclocktag.myLock = lock; 0.00 : 6886e5: 48 89 5d b0 mov %rbx,-0x50(%rbp) : proclocktag.myProc = proc; 0.00 : 6886e9: 4c 89 75 b8 mov %r14,-0x48(%rbp) : proclock_hashcode = ProcLockHashCode(&proclocktag, hashcode); : : /* : * Find or create a proclock entry with this tag : */ : proclock = (PROCLOCK *) hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 6886ed: e8 5e b9 0f 00 callq 784050 : (void *) &proclocktag, : proclock_hashcode, : HASH_ENTER_NULL, : &found); : if (!proclock) 0.00 : 6886f2: 48 85 c0 test %rax,%rax : proclock_hashcode = ProcLockHashCode(&proclocktag, hashcode); : : /* : * Find or create a proclock entry with this tag : */ : proclock = (PROCLOCK *) hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 6886f5: 49 89 c5 mov %rax,%r13 : (void *) &proclocktag, : proclock_hashcode, : HASH_ENTER_NULL, : &found); : if (!proclock) 0.00 : 6886f8: 0f 84 d2 01 00 00 je 6888d0 : } : : /* : * If new, initialize the new entry : */ : if (!found) 0.00 : 6886fe: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 688702: 0f 84 e0 00 00 00 je 6887e8 : /* : * lock->nRequested and lock->requested[] count the total number of : * requests, whether granted or waiting, so increment those immediately. : * The other counts don't increment till we get the lock. : */ : lock->nRequested++; 0.00 : 688708: 83 43 68 01 addl $0x1,0x68(%rbx) : lock->requested[lockmode]++; 0.00 : 68870c: 4d 63 e7 movslq %r15d,%r12 : : /* : * We shouldn't already hold the desired lock; else locallock table is : * broken. : */ : if (proclock->holdMask & LOCKBIT_ON(lockmode)) 0.00 : 68870f: 44 89 f9 mov %r15d,%ecx : * lock->nRequested and lock->requested[] count the total number of : * requests, whether granted or waiting, so increment those immediately. : * The other counts don't increment till we get the lock. : */ : lock->nRequested++; : lock->requested[lockmode]++; 0.00 : 688712: 42 83 44 a3 40 01 addl $0x1,0x40(%rbx,%r12,4) : : /* : * We shouldn't already hold the desired lock; else locallock table is : * broken. : */ : if (proclock->holdMask & LOCKBIT_ON(lockmode)) 0.00 : 688718: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 68871c: d3 f8 sar %cl,%eax 0.00 : 68871e: a8 01 test $0x1,%al 0.00 : 688720: 0f 85 6a 01 00 00 jne 688890 : lockMethodTable->lockModeNames[lockmode], : lock->tag.locktag_field1, lock->tag.locktag_field2, : lock->tag.locktag_field3); : : return proclock; : } 0.00 : 688726: 4c 89 e8 mov %r13,%rax 0.00 : 688729: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 68872d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 688731: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 688735: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 688739: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 68873d: c9 leaveq 0.00 : 68873e: c3 retq 0.00 : 68873f: 90 nop : */ : if (!found) : { : lock->grantMask = 0; : lock->waitMask = 0; : SHMQueueInit(&(lock->procLocks)); 0.00 : 688740: 48 8d 78 18 lea 0x18(%rax),%rdi : /* : * if it's a new lock object, initialize it : */ : if (!found) : { : lock->grantMask = 0; 0.00 : 688744: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : lock->waitMask = 0; 0.00 : 68874b: c7 40 14 00 00 00 00 movl $0x0,0x14(%rax) : SHMQueueInit(&(lock->procLocks)); 0.00 : 688752: e8 c9 ac ff ff callq 683420 : ProcQueueInit(&(lock->waitProcs)); 0.00 : 688757: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 68875b: e8 00 4a 00 00 callq 68d160 : lock->nRequested = 0; : lock->nGranted = 0; : MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688760: 48 8d 43 40 lea 0x40(%rbx),%rax : { : lock->grantMask = 0; : lock->waitMask = 0; : SHMQueueInit(&(lock->procLocks)); : ProcQueueInit(&(lock->waitProcs)); : lock->nRequested = 0; 0.00 : 688764: c7 43 68 00 00 00 00 movl $0x0,0x68(%rbx) : lock->nGranted = 0; 0.00 : 68876b: c7 83 94 00 00 00 00 movl $0x0,0x94(%rbx) 0.00 : 688772: 00 00 00 : MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688775: a8 07 test $0x7,%al 0.00 : 688777: 0f 85 ab 00 00 00 jne 688828 0.00 : 68877d: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 688784: 00 0.00 : 688785: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 68878c: 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1087 100.00 : 68878d: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 688794: 00 0.00 : 688795: 48 c7 43 58 00 00 00 movq $0x0,0x58(%rbx) 0.00 : 68879c: 00 0.00 : 68879d: 48 c7 43 60 00 00 00 movq $0x0,0x60(%rbx) 0.00 : 6887a4: 00 : MemSet(lock->granted, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 6887a5: 48 8d 43 6c lea 0x6c(%rbx),%rax 0.00 : 6887a9: a8 07 test $0x7,%al 0.00 : 6887ab: 0f 85 a7 00 00 00 jne 688858 0.00 : 6887b1: 48 c7 43 6c 00 00 00 movq $0x0,0x6c(%rbx) 0.00 : 6887b8: 00 0.00 : 6887b9: 48 c7 43 74 00 00 00 movq $0x0,0x74(%rbx) 0.00 : 6887c0: 00 0.00 : 6887c1: 48 c7 43 7c 00 00 00 movq $0x0,0x7c(%rbx) 0.00 : 6887c8: 00 0.00 : 6887c9: 48 c7 83 84 00 00 00 movq $0x0,0x84(%rbx) 0.00 : 6887d0: 00 00 00 00 0.00 : 6887d4: 48 c7 83 8c 00 00 00 movq $0x0,0x8c(%rbx) 0.00 : 6887db: 00 00 00 00 0.00 : 6887df: e9 e5 fe ff ff jmpq 6886c9 0.00 : 6887e4: 0f 1f 40 00 nopl 0x0(%rax) : uint32 partition = LockHashPartition(hashcode); : : proclock->holdMask = 0; : proclock->releaseMask = 0; : /* Add proclock to appropriate lists */ : SHMQueueInsertBefore(&lock->procLocks, &proclock->lockLink); 0.00 : 6887e8: 48 8d 70 18 lea 0x18(%rax),%rsi 0.00 : 6887ec: 48 8d 7b 18 lea 0x18(%rbx),%rdi : */ : if (!found) : { : uint32 partition = LockHashPartition(hashcode); : : proclock->holdMask = 0; 0.00 : 6887f0: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : proclock->releaseMask = 0; 0.00 : 6887f7: c7 40 14 00 00 00 00 movl $0x0,0x14(%rax) : /* Add proclock to appropriate lists */ : SHMQueueInsertBefore(&lock->procLocks, &proclock->lockLink); 0.00 : 6887fe: e8 8d ac ff ff callq 683490 : SHMQueueInsertBefore(&(proc->myProcLocks[partition]), 0.00 : 688803: 4c 89 e0 mov %r12,%rax 0.00 : 688806: 49 8d 75 28 lea 0x28(%r13),%rsi 0.00 : 68880a: 83 e0 0f and $0xf,%eax 0.00 : 68880d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 688811: 49 8d bc 06 90 00 00 lea 0x90(%r14,%rax,1),%rdi 0.00 : 688818: 00 0.00 : 688819: e8 72 ac ff ff callq 683490 0.00 : 68881e: e9 e5 fe ff ff jmpq 688708 0.00 : 688823: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : lock->waitMask = 0; : SHMQueueInit(&(lock->procLocks)); : ProcQueueInit(&(lock->waitProcs)); : lock->nRequested = 0; : lock->nGranted = 0; : MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688828: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 68882f: 00 0.00 : 688830: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 688837: 00 0.00 : 688838: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 68883f: 00 0.00 : 688840: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 688847: 00 0.00 : 688848: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 68884f: 00 0.00 : 688850: e9 50 ff ff ff jmpq 6887a5 0.00 : 688855: 0f 1f 00 nopl (%rax) : MemSet(lock->granted, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688858: 48 c7 43 6c 00 00 00 movq $0x0,0x6c(%rbx) 0.00 : 68885f: 00 0.00 : 688860: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 688867: 00 0.00 : 688868: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 68886f: 00 0.00 : 688870: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 688877: 00 0.00 : 688878: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 68887f: 00 0.00 : 688880: e9 44 fe ff ff jmpq 6886c9 0.00 : 688885: 0f 1f 00 nopl (%rax) : /* : * We shouldn't already hold the desired lock; else locallock table is : * broken. : */ : if (proclock->holdMask & LOCKBIT_ON(lockmode)) : elog(ERROR, "lock %s on object %u/%u/%u is already held", 0.00 : 688888: 45 31 ed xor %r13d,%r13d 0.00 : 68888b: e9 96 fe ff ff jmpq 688726 0.00 : 688890: ba 40 ca 8a 00 mov $0x8aca40,%edx 0.00 : 688895: be bc 04 00 00 mov $0x4bc,%esi 0.00 : 68889a: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68889f: e8 7c 2b 0f 00 callq 77b420 0.00 : 6888a4: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 6888a8: 44 8b 4b 08 mov 0x8(%rbx),%r9d 0.00 : 6888ac: be 30 c7 8a 00 mov $0x8ac730,%esi 0.00 : 6888b1: 44 8b 43 04 mov 0x4(%rbx),%r8d 0.00 : 6888b5: 8b 0b mov (%rbx),%ecx 0.00 : 6888b7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6888bc: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 6888c0: 4a 8b 14 e0 mov (%rax,%r12,8),%rdx 0.00 : 6888c4: 31 c0 xor %eax,%eax 0.00 : 6888c6: e8 65 29 0f 00 callq 77b230 0.00 : 6888cb: e8 00 0c de ff callq 4694d0 : HASH_ENTER_NULL, : &found); : if (!proclock) : { : /* Ooops, not enough shmem for the proclock */ : if (lock->nRequested == 0) 0.00 : 6888d0: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 6888d3: 85 c0 test %eax,%eax 0.00 : 6888d5: 0f 85 4b fe ff ff jne 688726 : * the lock object. We *must* do this to avoid a permanent leak : * of shared memory, because there won't be anything to cause : * anyone to release the lock object later. : */ : Assert(SHMQueueEmpty(&(lock->procLocks))); : if (!hash_search_with_hash_value(LockMethodLockHash, 0.00 : 6888db: 48 8b 3d 1e 50 4f 00 mov 0x4f501e(%rip),%rdi # b7d900 0.00 : 6888e2: 45 31 c0 xor %r8d,%r8d 0.00 : 6888e5: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 6888ea: 44 89 e2 mov %r12d,%edx 0.00 : 6888ed: 48 89 de mov %rbx,%rsi 0.00 : 6888f0: e8 5b b7 0f 00 callq 784050 0.00 : 6888f5: 48 85 c0 test %rax,%rax 0.00 : 6888f8: 0f 85 28 fe ff ff jne 688726 : (void *) &(lock->tag), : hashcode, : HASH_REMOVE, : NULL)) : elog(PANIC, "lock table corrupted"); 0.00 : 6888fe: ba 40 ca 8a 00 mov $0x8aca40,%edx 0.00 : 688903: be 6c 04 00 00 mov $0x46c,%esi 0.00 : 688908: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68890d: e8 0e 2b 0f 00 callq 77b420 0.00 : 688912: be 14 c6 8a 00 mov $0x8ac614,%esi 0.00 : 688917: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68891c: 31 c0 xor %eax,%eax 0.00 : 68891e: e8 0d 29 0f 00 callq 77b230 0.00 : 688923: e8 a8 0b de ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1469 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068a2f0 : : * We expect that LockAcquire made sure there is room to add a new : * ResourceOwner entry. : */ : static void : GrantLockLocal(LOCALLOCK *locallock, ResourceOwner owner) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1469 100.00 : 68a2f0: 55 push %rbp : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68a2f1: 44 8b 4f 38 mov 0x38(%rdi),%r9d 0.00 : 68a2f5: 31 c0 xor %eax,%eax : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : int i; : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; 0.00 : 68a2f7: 48 83 47 30 01 addq $0x1,0x30(%rdi) : * We expect that LockAcquire made sure there is room to add a new : * ResourceOwner entry. : */ : static void : GrantLockLocal(LOCALLOCK *locallock, ResourceOwner owner) : { 0.00 : 68a2fc: 49 89 f0 mov %rsi,%r8 : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; 0.00 : 68a2ff: 4c 8b 57 48 mov 0x48(%rdi),%r10 : * We expect that LockAcquire made sure there is room to add a new : * ResourceOwner entry. : */ : static void : GrantLockLocal(LOCALLOCK *locallock, ResourceOwner owner) : { 0.00 : 68a303: 48 89 e5 mov %rsp,%rbp : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68a306: 45 85 c9 test %r9d,%r9d 0.00 : 68a309: 7e 33 jle 68a33e : { : if (lockOwners[i].owner == owner) 0.00 : 68a30b: 49 39 32 cmp %rsi,(%r10) 0.00 : 68a30e: 74 5b je 68a36b : { : lockOwners[i].nLocks++; 0.00 : 68a310: 49 8d 52 10 lea 0x10(%r10),%rdx 0.00 : 68a314: 31 c9 xor %ecx,%ecx 0.00 : 68a316: eb 17 jmp 68a32f 0.00 : 68a318: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68a31f: 00 : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) : { : if (lockOwners[i].owner == owner) 0.00 : 68a320: 48 8b 02 mov (%rdx),%rax 0.00 : 68a323: 48 89 d6 mov %rdx,%rsi 0.00 : 68a326: 48 83 c2 10 add $0x10,%rdx 0.00 : 68a32a: 4c 39 c0 cmp %r8,%rax 0.00 : 68a32d: 74 39 je 68a368 : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68a32f: 83 c1 01 add $0x1,%ecx 0.00 : 68a332: 44 39 c9 cmp %r9d,%ecx 0.00 : 68a335: 7c e9 jl 68a320 0.00 : 68a337: 48 63 c1 movslq %ecx,%rax 0.00 : 68a33a: 48 c1 e0 04 shl $0x4,%rax : { : lockOwners[i].nLocks++; : return; : } : } : lockOwners[i].owner = owner; 0.00 : 68a33e: 49 8d 04 02 lea (%r10,%rax,1),%rax 0.00 : 68a342: 4c 89 00 mov %r8,(%rax) : lockOwners[i].nLocks = 1; 0.00 : 68a345: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 68a34c: 00 : locallock->numLockOwners++; 0.00 : 68a34d: 83 47 38 01 addl $0x1,0x38(%rdi) : if (owner != NULL) 0.00 : 68a351: 4d 85 c0 test %r8,%r8 0.00 : 68a354: 74 1a je 68a370 : ResourceOwnerRememberLock(owner, locallock); : } 0.00 : 68a356: c9 leaveq : } : lockOwners[i].owner = owner; : lockOwners[i].nLocks = 1; : locallock->numLockOwners++; : if (owner != NULL) : ResourceOwnerRememberLock(owner, locallock); 0.00 : 68a357: 48 89 fe mov %rdi,%rsi 0.00 : 68a35a: 4c 89 c7 mov %r8,%rdi 0.00 : 68a35d: e9 5e fe 10 00 jmpq 79a1c0 0.00 : 68a362: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) : { : if (lockOwners[i].owner == owner) 0.00 : 68a368: 49 89 f2 mov %rsi,%r10 : { : lockOwners[i].nLocks++; 0.00 : 68a36b: 49 83 42 08 01 addq $0x1,0x8(%r10) : lockOwners[i].owner = owner; : lockOwners[i].nLocks = 1; : locallock->numLockOwners++; : if (owner != NULL) : ResourceOwnerRememberLock(owner, locallock); : } 0.00 : 68a370: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2464 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2203 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068b190 : : * allLocks == true: release all locks including session locks. : * allLocks == false: release all non-session locks. : */ : void : LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks) : { 0.00 : 68b190: 55 push %rbp : LOCK *lock; : PROCLOCK *proclock; : int partition; : bool have_fast_path_lwlock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) 0.00 : 68b191: 89 f8 mov %edi,%eax 0.00 : 68b193: 83 e8 01 sub $0x1,%eax : * allLocks == true: release all locks including session locks. : * allLocks == false: release all non-session locks. : */ : void : LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks) : { 0.00 : 68b196: 48 89 e5 mov %rsp,%rbp 0.00 : 68b199: 41 57 push %r15 0.00 : 68b19b: 41 56 push %r14 0.00 : 68b19d: 41 55 push %r13 0.00 : 68b19f: 41 54 push %r12 0.00 : 68b1a1: 53 push %rbx 0.00 : 68b1a2: 48 83 ec 58 sub $0x58,%rsp : LOCK *lock; : PROCLOCK *proclock; : int partition; : bool have_fast_path_lwlock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) 0.00 : 68b1a6: 66 83 f8 01 cmp $0x1,%ax : * allLocks == true: release all locks including session locks. : * allLocks == false: release all non-session locks. : */ : void : LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks) : { 0.00 : 68b1aa: 66 89 7d 86 mov %di,-0x7a(%rbp) 0.00 : 68b1ae: 40 88 75 85 mov %sil,-0x7b(%rbp) : LOCK *lock; : PROCLOCK *proclock; : int partition; : bool have_fast_path_lwlock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) 0.00 : 68b1b2: 0f 87 7d 04 00 00 ja 68b635 : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68b1b8: 0f b7 45 86 movzwl -0x7a(%rbp),%eax : * Get rid of our fast-path VXID lock, if appropriate. Note that this is : * the only way that the lock we hold on our own VXID can ever get : * released: it is always and only released when a toplevel transaction : * ends. : */ : if (lockmethodid == DEFAULT_LOCKMETHOD) 0.00 : 68b1bc: 66 83 7d 86 01 cmpw $0x1,-0x7a(%rbp) : int partition; : bool have_fast_path_lwlock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68b1c1: 48 8b 04 c5 e0 c9 8a mov 0x8ac9e0(,%rax,8),%rax 0.00 : 68b1c8: 00 0.00 : 68b1c9: 48 89 45 88 mov %rax,-0x78(%rbp) : * Get rid of our fast-path VXID lock, if appropriate. Note that this is : * the only way that the lock we hold on our own VXID can ever get : * released: it is always and only released when a toplevel transaction : * ends. : */ : if (lockmethodid == DEFAULT_LOCKMETHOD) 0.00 : 68b1cd: 0f 84 56 04 00 00 je 68b629 : VirtualXactLockTableCleanup(); : : numLockModes = lockMethodTable->numLockModes; 0.00 : 68b1d3: 48 8b 45 88 mov -0x78(%rbp),%rax : * do this separately because we may have multiple locallock entries : * pointing to the same proclock, and we daren't end up with any dangling : * pointers. Fast-path locks are cleaned up during the locallock table : * scan, though. : */ : hash_seq_init(&status, LockMethodLocalHash); 0.00 : 68b1d7: 4c 8d 75 b0 lea -0x50(%rbp),%r14 0.00 : 68b1db: 48 8b 35 2e 27 4f 00 mov 0x4f272e(%rip),%rsi # b7d910 0.00 : 68b1e2: 45 31 ff xor %r15d,%r15d 0.00 : 68b1e5: 4c 89 f7 mov %r14,%rdi : * ends. : */ : if (lockmethodid == DEFAULT_LOCKMETHOD) : VirtualXactLockTableCleanup(); : : numLockModes = lockMethodTable->numLockModes; 0.00 : 68b1e8: 8b 00 mov (%rax),%eax 0.00 : 68b1ea: 89 45 94 mov %eax,-0x6c(%rbp) : * do this separately because we may have multiple locallock entries : * pointing to the same proclock, and we daren't end up with any dangling : * pointers. Fast-path locks are cleaned up during the locallock table : * scan, though. : */ : hash_seq_init(&status, LockMethodLocalHash); 0.00 : 68b1ed: e8 3e 8c 0f 00 callq 783e30 0.00 : 68b1f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : while ((locallock = (LOCALLOCK *) hash_seq_search(&status)) != NULL) 0.00 : 68b1f8: 4c 89 f7 mov %r14,%rdi 0.00 : 68b1fb: e8 c0 88 0f 00 callq 783ac0 0.00 : 68b200: 48 85 c0 test %rax,%rax 0.00 : 68b203: 49 89 c4 mov %rax,%r12 0.00 : 68b206: 0f 84 f9 01 00 00 je 68b405 : /* : * If the LOCALLOCK entry is unused, we must've run out of shared : * memory while trying to set up this lock. Just forget the local : * entry. : */ : if (locallock->nLocks == 0) 0.00 : 68b20c: 49 83 7c 24 30 00 cmpq $0x0,0x30(%r12) 0.00 : 68b212: 0f 84 ad 00 00 00 je 68b2c5 : RemoveLocalLock(locallock); : continue; : } : : /* Ignore items that are not of the lockmethod to be removed */ : if (LOCALLOCK_LOCKMETHOD(*locallock) != lockmethodid) 0.00 : 68b218: 41 0f b6 44 24 0f movzbl 0xf(%r12),%eax 0.00 : 68b21e: 66 3b 45 86 cmp -0x7a(%rbp),%ax 0.00 : 68b222: 75 d4 jne 68b1f8 : /* : * If we are asked to release all locks, we can just zap the entry. : * Otherwise, must scan to see if there are session locks. We assume : * there is at most one lockOwners entry for session locks. : */ : if (!allLocks) 0.00 : 68b224: 80 7d 85 00 cmpb $0x0,-0x7b(%rbp) 0.00 : 68b228: 75 72 jne 68b29c : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : : /* If session lock is above array position 0, move it down to 0 */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68b22a: 41 8b 74 24 38 mov 0x38(%r12),%esi : * Otherwise, must scan to see if there are session locks. We assume : * there is at most one lockOwners entry for session locks. : */ : if (!allLocks) : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; 0.00 : 68b22f: 4d 8b 6c 24 48 mov 0x48(%r12),%r13 : : /* If session lock is above array position 0, move it down to 0 */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68b234: 85 f6 test %esi,%esi 0.00 : 68b236: 7e 5b jle 68b293 0.00 : 68b238: 31 db xor %ebx,%ebx 0.00 : 68b23a: eb 18 jmp 68b254 0.00 : 68b23c: 0f 1f 40 00 nopl 0x0(%rax) : { : if (lockOwners[i].owner == NULL) : lockOwners[0] = lockOwners[i]; : else : ResourceOwnerForgetLock(lockOwners[i].owner, locallock); 0.00 : 68b240: 4c 89 e6 mov %r12,%rsi : if (!allLocks) : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : : /* If session lock is above array position 0, move it down to 0 */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68b243: 83 c3 01 add $0x1,%ebx : { : if (lockOwners[i].owner == NULL) : lockOwners[0] = lockOwners[i]; : else : ResourceOwnerForgetLock(lockOwners[i].owner, locallock); 0.00 : 68b246: e8 25 f6 10 00 callq 79a870 : if (!allLocks) : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : : /* If session lock is above array position 0, move it down to 0 */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68b24b: 41 8b 44 24 38 mov 0x38(%r12),%eax 0.00 : 68b250: 39 d8 cmp %ebx,%eax 0.00 : 68b252: 7e 30 jle 68b284 : { : if (lockOwners[i].owner == NULL) 0.00 : 68b254: 48 63 c3 movslq %ebx,%rax 0.00 : 68b257: 48 c1 e0 04 shl $0x4,%rax 0.00 : 68b25b: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax 0.00 : 68b260: 48 8b 38 mov (%rax),%rdi 0.00 : 68b263: 48 85 ff test %rdi,%rdi 0.00 : 68b266: 75 d8 jne 68b240 : lockOwners[0] = lockOwners[i]; 0.00 : 68b268: 49 c7 45 00 00 00 00 movq $0x0,0x0(%r13) 0.00 : 68b26f: 00 0.00 : 68b270: 48 8b 40 08 mov 0x8(%rax),%rax : if (!allLocks) : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : : /* If session lock is above array position 0, move it down to 0 */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68b274: 83 c3 01 add $0x1,%ebx : { : if (lockOwners[i].owner == NULL) : lockOwners[0] = lockOwners[i]; 0.00 : 68b277: 49 89 45 08 mov %rax,0x8(%r13) : if (!allLocks) : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : : /* If session lock is above array position 0, move it down to 0 */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68b27b: 41 8b 44 24 38 mov 0x38(%r12),%eax 0.00 : 68b280: 39 d8 cmp %ebx,%eax 0.00 : 68b282: 7f d0 jg 68b254 : lockOwners[0] = lockOwners[i]; : else : ResourceOwnerForgetLock(lockOwners[i].owner, locallock); : } : : if (locallock->numLockOwners > 0 && 0.00 : 68b284: 85 c0 test %eax,%eax 0.00 : 68b286: 7e 0b jle 68b293 0.00 : 68b288: 49 83 7d 00 00 cmpq $0x0,0x0(%r13) 0.00 : 68b28d: 0f 84 5e 03 00 00 je 68b5f1 : locallock->numLockOwners = 1; : /* We aren't deleting this locallock, so done */ : continue; : } : else : locallock->numLockOwners = 0; 0.00 : 68b293: 41 c7 44 24 38 00 00 movl $0x0,0x38(%r12) 0.00 : 68b29a: 00 00 : : /* : * If the lock or proclock pointers are NULL, this lock was taken via : * the relation fast-path (and is not known to have been transferred). : */ : if (locallock->proclock == NULL || locallock->lock == NULL) 0.00 : 68b29c: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 68b2a1: 48 85 c0 test %rax,%rax 0.00 : 68b2a4: 74 32 je 68b2d8 0.00 : 68b2a6: 49 83 7c 24 18 00 cmpq $0x0,0x18(%r12) 0.00 : 68b2ac: 74 2a je 68b2d8 : RemoveLocalLock(locallock); : continue; : } : : /* Mark the proclock to show we need to release this lockmode */ : if (locallock->nLocks > 0) 0.00 : 68b2ae: 49 83 7c 24 30 00 cmpq $0x0,0x30(%r12) 0.00 : 68b2b4: 7e 0f jle 68b2c5 : locallock->proclock->releaseMask |= LOCKBIT_ON(locallock->tag.mode); 0.00 : 68b2b6: 41 8b 4c 24 10 mov 0x10(%r12),%ecx 0.00 : 68b2bb: ba 01 00 00 00 mov $0x1,%edx 0.00 : 68b2c0: d3 e2 shl %cl,%edx 0.00 : 68b2c2: 09 50 14 or %edx,0x14(%rax) : : /* And remove the locallock hashtable entry */ : RemoveLocalLock(locallock); 0.00 : 68b2c5: 4c 89 e7 mov %r12,%rdi 0.00 : 68b2c8: e8 73 de ff ff callq 689140 0.00 : 68b2cd: e9 26 ff ff ff jmpq 68b1f8 0.00 : 68b2d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : LOCKMODE lockmode = locallock->tag.mode; : Oid relid; : : /* Verify that a fast-path lock is what we've got. */ : if (!EligibleForRelationFastPath(&locallock->tag.lock, lockmode)) 0.00 : 68b2d8: 66 41 81 7c 24 0e 00 cmpw $0x100,0xe(%r12) 0.00 : 68b2df: 01 : * If the lock or proclock pointers are NULL, this lock was taken via : * the relation fast-path (and is not known to have been transferred). : */ : if (locallock->proclock == NULL || locallock->lock == NULL) : { : LOCKMODE lockmode = locallock->tag.mode; 0.00 : 68b2e0: 41 8b 5c 24 10 mov 0x10(%r12),%ebx : Oid relid; : : /* Verify that a fast-path lock is what we've got. */ : if (!EligibleForRelationFastPath(&locallock->tag.lock, lockmode)) 0.00 : 68b2e5: 75 10 jne 68b2f7 0.00 : 68b2e7: 41 8b 04 24 mov (%r12),%eax 0.00 : 68b2eb: 3b 05 b7 ed 52 00 cmp 0x52edb7(%rip),%eax # bba0a8 0.00 : 68b2f1: 75 04 jne 68b2f7 0.00 : 68b2f3: 85 c0 test %eax,%eax 0.00 : 68b2f5: 75 2a jne 68b321 : elog(PANIC, "locallock table corrupted"); 0.00 : 68b2f7: ba a3 cb 8a 00 mov $0x8acba3,%edx 0.00 : 68b2fc: be f6 07 00 00 mov $0x7f6,%esi 0.00 : 68b301: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68b306: e8 15 01 0f 00 callq 77b420 0.00 : 68b30b: be 46 c6 8a 00 mov $0x8ac646,%esi 0.00 : 68b310: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68b315: 31 c0 xor %eax,%eax 0.00 : 68b317: e8 14 ff 0e 00 callq 77b230 0.00 : 68b31c: e8 af e1 dd ff callq 4694d0 : { : LOCKMODE lockmode = locallock->tag.mode; : Oid relid; : : /* Verify that a fast-path lock is what we've got. */ : if (!EligibleForRelationFastPath(&locallock->tag.lock, lockmode)) 0.00 : 68b321: 83 fb 03 cmp $0x3,%ebx 0.00 : 68b324: 7f d1 jg 68b2f7 : * to release the lock via the fast-path. We will continue to : * hold the LWLock until we're done scanning the locallock table, : * unless we hit a transferred fast-path lock. (XXX is this : * really such a good idea? There could be a lot of entries ...) : */ : if (!have_fast_path_lwlock) 0.00 : 68b326: 45 84 ff test %r15b,%r15b 0.00 : 68b329: 0f 84 a2 02 00 00 je 68b5d1 : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : have_fast_path_lwlock = true; : } : : /* Attempt fast-path release. */ : relid = locallock->tag.lock.locktag_field2; 0.00 : 68b32f: 45 8b 4c 24 04 mov 0x4(%r12),%r9d : FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode) : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; 0.00 : 68b334: 8d 7b ff lea -0x1(%rbx),%edi 0.00 : 68b337: c7 05 af 25 4f 00 00 movl $0x0,0x4f25af(%rip) # b7d8f0 0.00 : 68b33e: 00 00 00 0.00 : 68b341: 31 d2 xor %edx,%edx 0.00 : 68b343: 45 31 d2 xor %r10d,%r10d 0.00 : 68b346: 45 31 db xor %r11d,%r11d 0.00 : 68b349: 48 8b 35 f8 25 4f 00 mov 0x4f25f8(%rip),%rsi # b7d948 0.00 : 68b350: eb 2d jmp 68b37f 0.00 : 68b352: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); : result = true; : /* we continue iterating so as to update FastPathLocalUseCount */ : } : if (FAST_PATH_GET_BITS(MyProc, f) != 0) 0.00 : 68b358: 48 8b 86 98 02 00 00 mov 0x298(%rsi),%rax 0.00 : 68b35f: 44 89 d9 mov %r11d,%ecx 0.00 : 68b362: 48 d3 e8 shr %cl,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2464 50.00 : 68b365: a8 07 test $0x7,%al 0.00 : 68b367: 74 07 je 68b370 : ++FastPathLocalUseCount; 0.00 : 68b369: 83 05 80 25 4f 00 01 addl $0x1,0x4f2580(%rip) # b7d8f0 : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) 0.00 : 68b370: 83 c2 01 add $0x1,%edx 0.00 : 68b373: 41 83 c3 03 add $0x3,%r11d 0.00 : 68b377: 83 c7 03 add $0x3,%edi 0.00 : 68b37a: 83 fa 10 cmp $0x10,%edx 0.00 : 68b37d: 74 49 je 68b3c8 : { : if (MyProc->fpRelId[f] == relid 0.00 : 68b37f: 89 d0 mov %edx,%eax 0.00 : 68b381: 44 3b 8c 86 a0 02 00 cmp 0x2a0(%rsi,%rax,4),%r9d 0.00 : 68b388: 00 0.00 : 68b389: 75 cd jne 68b358 0.00 : 68b38b: 4c 8b 86 98 02 00 00 mov 0x298(%rsi),%r8 0.00 : 68b392: 89 f9 mov %edi,%ecx 0.00 : 68b394: 4c 89 c0 mov %r8,%rax 0.00 : 68b397: 48 d3 e8 shr %cl,%rax 0.00 : 68b39a: a8 01 test $0x1,%al 0.00 : 68b39c: 74 ba je 68b358 : && FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)) : { : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); 0.00 : 68b39e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68b3a3: 41 ba 01 00 00 00 mov $0x1,%r10d 0.00 : 68b3a9: 48 d3 e0 shl %cl,%rax 0.00 : 68b3ac: 48 f7 d0 not %rax 0.00 : 68b3af: 4c 21 c0 and %r8,%rax 0.00 : 68b3b2: 48 89 86 98 02 00 00 mov %rax,0x298(%rsi) 0.00 : 68b3b9: 48 8b 35 88 25 4f 00 mov 0x4f2588(%rip),%rsi # b7d948 0.00 : 68b3c0: eb 96 jmp 68b358 0.00 : 68b3c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : have_fast_path_lwlock = true; : } : : /* Attempt fast-path release. */ : relid = locallock->tag.lock.locktag_field2; : if (FastPathUnGrantRelationLock(relid, lockmode)) 0.00 : 68b3c8: 45 84 d2 test %r10b,%r10b 0.00 : 68b3cb: 0f 85 f4 fe ff ff jne 68b2c5 : /* : * Our lock, originally taken via the fast path, has been : * transferred to the main lock table. That's going to require : * some extra work, so release our fast-path lock before starting. : */ : LWLockRelease(MyProc->backendLock); 0.00 : 68b3d1: 48 8b be 90 02 00 00 mov 0x290(%rsi),%rdi : * requires an extra LWLock acquire-and-release cycle on the : * partitionLock, but hopefully it shouldn't happen often. : */ : LockRefindAndRelease(lockMethodTable, MyProc, : &locallock->tag.lock, lockmode, false); : RemoveLocalLock(locallock); 0.00 : 68b3d8: 45 31 ff xor %r15d,%r15d : /* : * Our lock, originally taken via the fast path, has been : * transferred to the main lock table. That's going to require : * some extra work, so release our fast-path lock before starting. : */ : LWLockRelease(MyProc->backendLock); 0.00 : 68b3db: e8 c0 3f 00 00 callq 68f3a0 : * PROCLOCK in this case, so we have to handle this a bit : * differently than a normal lock release. Unfortunately, this : * requires an extra LWLock acquire-and-release cycle on the : * partitionLock, but hopefully it shouldn't happen often. : */ : LockRefindAndRelease(lockMethodTable, MyProc, 0.00 : 68b3e0: 48 8b 35 61 25 4f 00 mov 0x4f2561(%rip),%rsi # b7d948 0.00 : 68b3e7: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 68b3eb: 45 31 c0 xor %r8d,%r8d 0.00 : 68b3ee: 89 d9 mov %ebx,%ecx 0.00 : 68b3f0: 4c 89 e2 mov %r12,%rdx 0.00 : 68b3f3: e8 c8 f1 ff ff callq 68a5c0 : &locallock->tag.lock, lockmode, false); : RemoveLocalLock(locallock); 0.00 : 68b3f8: 4c 89 e7 mov %r12,%rdi 0.00 : 68b3fb: e8 40 dd ff ff callq 689140 : continue; 0.00 : 68b400: e9 f3 fd ff ff jmpq 68b1f8 : /* And remove the locallock hashtable entry */ : RemoveLocalLock(locallock); : } : : /* Done with the fast-path data structures */ : if (have_fast_path_lwlock) 0.00 : 68b405: 45 84 ff test %r15b,%r15b 0.00 : 68b408: 0f 85 03 02 00 00 jne 68b611 : LWLockRelease(MyProc->backendLock); 0.00 : 68b40e: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 68b415: 00 0.00 : 68b416: 48 c7 45 a8 c0 04 00 movq $0x4c0,-0x58(%rbp) 0.00 : 68b41d: 00 0.00 : 68b41e: 66 90 xchg %ax,%ax : * Now, scan each lock partition separately. : */ : for (partition = 0; partition < NUM_LOCK_PARTITIONS; partition++) : { : LWLock *partitionLock; : SHM_QUEUE *procLocks = &(MyProc->myProcLocks[partition]); 0.00 : 68b420: 4c 8b 6d a0 mov -0x60(%rbp),%r13 : * represents all of our fast-path locks. While allLocks mode : * guarantees to clean up all of our normal locks regardless of the : * locallock situation, we lose that guarantee for fast-path locks. : * This is not ideal. : */ : if (SHMQueueNext(procLocks, procLocks, 0.00 : 68b424: ba 28 00 00 00 mov $0x28,%edx : { : LWLock *partitionLock; : SHM_QUEUE *procLocks = &(MyProc->myProcLocks[partition]); : PROCLOCK *nextplock; : : partitionLock = LockHashPartitionLockByIndex(partition); 0.00 : 68b429: 48 8b 1d d0 25 4f 00 mov 0x4f25d0(%rip),%rbx # b7da00 : * Now, scan each lock partition separately. : */ : for (partition = 0; partition < NUM_LOCK_PARTITIONS; partition++) : { : LWLock *partitionLock; : SHM_QUEUE *procLocks = &(MyProc->myProcLocks[partition]); 0.00 : 68b430: 49 83 c5 09 add $0x9,%r13 0.00 : 68b434: 49 c1 e5 04 shl $0x4,%r13 0.00 : 68b438: 4c 03 2d 09 25 4f 00 add 0x4f2509(%rip),%r13 # b7d948 : * represents all of our fast-path locks. While allLocks mode : * guarantees to clean up all of our normal locks regardless of the : * locallock situation, we lose that guarantee for fast-path locks. : * This is not ideal. : */ : if (SHMQueueNext(procLocks, procLocks, 0.00 : 68b43f: 4c 89 ee mov %r13,%rsi 0.00 : 68b442: 4c 89 ef mov %r13,%rdi 0.00 : 68b445: e8 86 80 ff ff callq 6834d0 0.00 : 68b44a: 48 85 c0 test %rax,%rax 0.00 : 68b44d: 0f 84 5a 01 00 00 je 68b5ad : { : LWLock *partitionLock; : SHM_QUEUE *procLocks = &(MyProc->myProcLocks[partition]); : PROCLOCK *nextplock; : : partitionLock = LockHashPartitionLockByIndex(partition); 0.00 : 68b453: 48 03 5d a8 add -0x58(%rbp),%rbx : */ : if (SHMQueueNext(procLocks, procLocks, : offsetof(PROCLOCK, procLink)) == NULL) : continue; /* needn't examine this partition */ : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 68b457: 31 f6 xor %esi,%esi 0.00 : 68b459: 48 89 df mov %rbx,%rdi : { : LWLock *partitionLock; : SHM_QUEUE *procLocks = &(MyProc->myProcLocks[partition]); : PROCLOCK *nextplock; : : partitionLock = LockHashPartitionLockByIndex(partition); 0.00 : 68b45c: 48 89 5d 98 mov %rbx,-0x68(%rbp) : */ : if (SHMQueueNext(procLocks, procLocks, : offsetof(PROCLOCK, procLink)) == NULL) : continue; /* needn't examine this partition */ : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 68b460: e8 8b 46 00 00 callq 68faf0 : : for (proclock = (PROCLOCK *) SHMQueueNext(procLocks, procLocks, : offsetof(PROCLOCK, procLink)); 0.00 : 68b465: ba 28 00 00 00 mov $0x28,%edx 0.00 : 68b46a: 4c 89 ee mov %r13,%rsi 0.00 : 68b46d: 4c 89 ef mov %r13,%rdi 0.00 : 68b470: e8 5b 80 ff ff callq 6834d0 : proclock; 0.00 : 68b475: 48 85 c0 test %rax,%rax : continue; /* needn't examine this partition */ : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); : : for (proclock = (PROCLOCK *) SHMQueueNext(procLocks, procLocks, : offsetof(PROCLOCK, procLink)); 0.00 : 68b478: 49 89 c4 mov %rax,%r12 : proclock; 0.00 : 68b47b: 75 19 jne 68b496 0.00 : 68b47d: e9 22 01 00 00 jmpq 68b5a4 0.00 : 68b482: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68b488: 4d 85 ff test %r15,%r15 : LOCK_PRINT("LockReleaseAll: updated", lock, 0); : : proclock->releaseMask = 0; : : /* CleanUpLock will wake up waiters if needed. */ : CleanUpLock(lock, proclock, 0.00 : 68b48b: 4d 89 fc mov %r15,%r12 0.00 : 68b48e: 66 90 xchg %ax,%ax : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); : : for (proclock = (PROCLOCK *) SHMQueueNext(procLocks, procLocks, : offsetof(PROCLOCK, procLink)); : proclock; 0.00 : 68b490: 0f 84 0e 01 00 00 je 68b5a4 : proclock = nextplock) : { : bool wakeupNeeded = false; : : /* Get link first, since we may unlink/delete this proclock */ : nextplock = (PROCLOCK *) 0.00 : 68b496: 49 8d 74 24 28 lea 0x28(%r12),%rsi 0.00 : 68b49b: ba 28 00 00 00 mov $0x28,%edx 0.00 : 68b4a0: 4c 89 ef mov %r13,%rdi 0.00 : 68b4a3: e8 28 80 ff ff callq 6834d0 : SHMQueueNext(procLocks, &proclock->procLink, : offsetof(PROCLOCK, procLink)); : : Assert(proclock->tag.myProc == MyProc); : : lock = proclock->tag.myLock; 0.00 : 68b4a8: 49 8b 1c 24 mov (%r12),%rbx : proclock = nextplock) : { : bool wakeupNeeded = false; : : /* Get link first, since we may unlink/delete this proclock */ : nextplock = (PROCLOCK *) 0.00 : 68b4ac: 49 89 c7 mov %rax,%r15 : Assert(proclock->tag.myProc == MyProc); : : lock = proclock->tag.myLock; : : /* Ignore items that are not of the lockmethod to be removed */ : if (LOCK_LOCKMETHOD(*lock) != lockmethodid) 0.00 : 68b4af: 0f b6 43 0f movzbl 0xf(%rbx),%eax 0.00 : 68b4b3: 66 3b 45 86 cmp -0x7a(%rbp),%ax 0.00 : 68b4b7: 75 cf jne 68b488 : : /* : * In allLocks mode, force release of all locks even if locallock : * table had problems : */ : if (allLocks) 0.00 : 68b4b9: 80 7d 85 00 cmpb $0x0,-0x7b(%rbp) 0.00 : 68b4bd: 74 0a je 68b4c9 : proclock->releaseMask = proclock->holdMask; 0.00 : 68b4bf: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.00 : 68b4c4: 41 89 44 24 14 mov %eax,0x14(%r12) : : /* : * Ignore items that have nothing to be released, unless they have : * holdMask == 0 and are therefore recyclable : */ : if (proclock->releaseMask == 0 && proclock->holdMask != 0) 0.00 : 68b4c9: 41 8b 44 24 14 mov 0x14(%r12),%eax 0.00 : 68b4ce: 85 c0 test %eax,%eax 0.00 : 68b4d0: 75 09 jne 68b4db 0.00 : 68b4d2: 41 8b 4c 24 10 mov 0x10(%r12),%ecx 0.00 : 68b4d7: 85 c9 test %ecx,%ecx 0.00 : 68b4d9: 75 ad jne 68b488 : Assert((proclock->holdMask & ~lock->grantMask) == 0); : : /* : * Release the previously-marked lock modes : */ : for (i = 1; i <= numLockModes; i++) 0.00 : 68b4db: 8b 55 94 mov -0x6c(%rbp),%edx 0.00 : 68b4de: 45 31 c0 xor %r8d,%r8d 0.00 : 68b4e1: 45 31 f6 xor %r14d,%r14d 0.00 : 68b4e4: be 01 00 00 00 mov $0x1,%esi 0.00 : 68b4e9: 85 d2 test %edx,%edx 0.00 : 68b4eb: 7f 35 jg 68b522 0.00 : 68b4ed: eb 7d jmp 68b56c 0.00 : 68b4ef: 90 nop : lock->nRequested--; : lock->requested[lockmode]--; : lock->nGranted--; : lock->granted[lockmode]--; : : if (lock->granted[lockmode] == 0) 0.00 : 68b4f0: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 68b4f6: 41 d3 e1 shl %cl,%r9d 0.00 : 68b4f9: 41 f7 d1 not %r9d : { : /* change the conflict mask. No more of this lock type. */ : lock->grantMask &= LOCKBIT_OFF(lockmode); 0.00 : 68b4fc: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 68b500: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 68b504: 8b 04 b8 mov (%rax,%rdi,4),%eax 0.00 : 68b507: 85 43 14 test %eax,0x14(%rbx) 0.00 : 68b50a: 0f 95 c0 setne %al : wakeupNeeded = true; : : /* : * Now fix the per-proclock state. : */ : proclock->holdMask &= LOCKBIT_OFF(lockmode); 0.00 : 68b50d: 45 21 4c 24 10 and %r9d,0x10(%r12) : * Release the previously-marked lock modes : */ : for (i = 1; i <= numLockModes; i++) : { : if (proclock->releaseMask & LOCKBIT_ON(i)) : wakeupNeeded |= UnGrantLock(lock, i, proclock, 0.00 : 68b512: 41 09 c0 or %eax,%r8d : Assert((proclock->holdMask & ~lock->grantMask) == 0); : : /* : * Release the previously-marked lock modes : */ : for (i = 1; i <= numLockModes; i++) 0.00 : 68b515: 83 c6 01 add $0x1,%esi 0.00 : 68b518: 39 75 94 cmp %esi,-0x6c(%rbp) 0.00 : 68b51b: 7c 4b jl 68b568 0.00 : 68b51d: 41 8b 44 24 14 mov 0x14(%r12),%eax : { : if (proclock->releaseMask & LOCKBIT_ON(i)) 0.00 : 68b522: 89 f1 mov %esi,%ecx 0.00 : 68b524: d3 f8 sar %cl,%eax 0.00 : 68b526: a8 01 test $0x1,%al 0.00 : 68b528: 74 eb je 68b515 : Assert(lock->nGranted <= lock->nRequested); : : /* : * fix the general lock stats : */ : lock->nRequested--; 0.00 : 68b52a: 83 6b 68 01 subl $0x1,0x68(%rbx) : lock->requested[lockmode]--; 0.00 : 68b52e: 48 63 fe movslq %esi,%rdi 0.00 : 68b531: 83 6c bb 40 01 subl $0x1,0x40(%rbx,%rdi,4) : lock->nGranted--; : lock->granted[lockmode]--; 0.00 : 68b536: 48 8d 57 18 lea 0x18(%rdi),%rdx : /* : * fix the general lock stats : */ : lock->nRequested--; : lock->requested[lockmode]--; : lock->nGranted--; 0.00 : 68b53a: 83 ab 94 00 00 00 01 subl $0x1,0x94(%rbx) : lock->granted[lockmode]--; 0.00 : 68b541: 8b 44 93 0c mov 0xc(%rbx,%rdx,4),%eax 0.00 : 68b545: 83 e8 01 sub $0x1,%eax : : if (lock->granted[lockmode] == 0) 0.00 : 68b548: 85 c0 test %eax,%eax : * fix the general lock stats : */ : lock->nRequested--; : lock->requested[lockmode]--; : lock->nGranted--; : lock->granted[lockmode]--; 0.00 : 68b54a: 89 44 93 0c mov %eax,0xc(%rbx,%rdx,4) : : if (lock->granted[lockmode] == 0) 0.00 : 68b54e: 75 a0 jne 68b4f0 : { : /* change the conflict mask. No more of this lock type. */ : lock->grantMask &= LOCKBIT_OFF(lockmode); 0.00 : 68b550: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 68b556: 89 f1 mov %esi,%ecx 0.00 : 68b558: 41 d3 e1 shl %cl,%r9d 0.00 : 68b55b: 41 f7 d1 not %r9d 0.00 : 68b55e: 44 21 4b 10 and %r9d,0x10(%rbx) 0.00 : 68b562: eb 98 jmp 68b4fc 0.00 : 68b564: 0f 1f 40 00 nopl 0x0(%rax) : Assert((proclock->holdMask & ~lock->grantMask) == 0); : : /* : * Release the previously-marked lock modes : */ : for (i = 1; i <= numLockModes; i++) 0.00 : 68b568: 45 0f be f0 movsbl %r8b,%r14d : } : Assert((lock->nRequested >= 0) && (lock->nGranted >= 0)); : Assert(lock->nGranted <= lock->nRequested); : LOCK_PRINT("LockReleaseAll: updated", lock, 0); : : proclock->releaseMask = 0; 0.00 : 68b56c: 41 c7 44 24 14 00 00 movl $0x0,0x14(%r12) 0.00 : 68b573: 00 00 : * the lock partition number from the hashcode. : */ : uint32 : LockTagHashCode(const LOCKTAG *locktag) : { : return get_hash_value(LockMethodLockHash, (const void *) locktag); 0.00 : 68b575: 48 8b 3d 84 23 4f 00 mov 0x4f2384(%rip),%rdi # b7d900 0.00 : 68b57c: 48 89 de mov %rbx,%rsi 0.00 : 68b57f: e8 4c 82 0f 00 callq 7837d0 : LOCK_PRINT("LockReleaseAll: updated", lock, 0); : : proclock->releaseMask = 0; : : /* CleanUpLock will wake up waiters if needed. */ : CleanUpLock(lock, proclock, 0.00 : 68b584: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 68b588: 4c 89 e6 mov %r12,%rsi : * the lock partition number from the hashcode. : */ : uint32 : LockTagHashCode(const LOCKTAG *locktag) : { : return get_hash_value(LockMethodLockHash, (const void *) locktag); 0.00 : 68b58b: 89 c1 mov %eax,%ecx : LOCK_PRINT("LockReleaseAll: updated", lock, 0); : : proclock->releaseMask = 0; : : /* CleanUpLock will wake up waiters if needed. */ : CleanUpLock(lock, proclock, 0.00 : 68b58d: 45 89 f0 mov %r14d,%r8d 0.00 : 68b590: 48 89 df mov %rbx,%rdi 0.00 : 68b593: 4d 89 fc mov %r15,%r12 0.00 : 68b596: e8 25 d4 ff ff callq 6889c0 : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); : : for (proclock = (PROCLOCK *) SHMQueueNext(procLocks, procLocks, : offsetof(PROCLOCK, procLink)); : proclock; 0.00 : 68b59b: 4d 85 ff test %r15,%r15 0.00 : 68b59e: 0f 85 f2 fe ff ff jne 68b496 : lockMethodTable, : LockTagHashCode(&lock->tag), : wakeupNeeded); : } /* loop over PROCLOCKs within this partition */ : : LWLockRelease(partitionLock); 0.00 : 68b5a4: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 68b5a8: e8 f3 3d 00 00 callq 68f3a0 0.00 : 68b5ad: 48 83 45 a0 01 addq $0x1,-0x60(%rbp) 0.00 : 68b5b2: 48 83 45 a8 20 addq $0x20,-0x58(%rbp) : LWLockRelease(MyProc->backendLock); : : /* : * Now, scan each lock partition separately. : */ : for (partition = 0; partition < NUM_LOCK_PARTITIONS; partition++) 0.00 : 68b5b7: 48 83 7d a0 10 cmpq $0x10,-0x60(%rbp) 0.00 : 68b5bc: 0f 85 5e fe ff ff jne 68b420 : : #ifdef LOCK_DEBUG : if (*(lockMethodTable->trace_flag)) : elog(LOG, "LockReleaseAll done"); : #endif : } /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:2203 50.00 : 68b5c2: 48 83 c4 58 add $0x58,%rsp 0.00 : 68b5c6: 5b pop %rbx 0.00 : 68b5c7: 41 5c pop %r12 0.00 : 68b5c9: 41 5d pop %r13 0.00 : 68b5cb: 41 5e pop %r14 0.00 : 68b5cd: 41 5f pop %r15 0.00 : 68b5cf: c9 leaveq 0.00 : 68b5d0: c3 retq : * unless we hit a transferred fast-path lock. (XXX is this : * really such a good idea? There could be a lot of entries ...) : */ : if (!have_fast_path_lwlock) : { : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 68b5d1: 48 8b 05 70 23 4f 00 mov 0x4f2370(%rip),%rax # b7d948 0.00 : 68b5d8: 31 f6 xor %esi,%esi 0.00 : 68b5da: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 68b5e0: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi 0.00 : 68b5e7: e8 04 45 00 00 callq 68faf0 0.00 : 68b5ec: e9 3e fd ff ff jmpq 68b32f : lockOwners[0] = lockOwners[i]; : else : ResourceOwnerForgetLock(lockOwners[i].owner, locallock); : } : : if (locallock->numLockOwners > 0 && 0.00 : 68b5f1: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 68b5f5: 48 85 c0 test %rax,%rax 0.00 : 68b5f8: 0f 8e 95 fc ff ff jle 68b293 : lockOwners[0].owner == NULL && : lockOwners[0].nLocks > 0) : { : /* Fix the locallock to show just the session locks */ : locallock->nLocks = lockOwners[0].nLocks; 0.00 : 68b5fe: 49 89 44 24 30 mov %rax,0x30(%r12) : locallock->numLockOwners = 1; 0.00 : 68b603: 41 c7 44 24 38 01 00 movl $0x1,0x38(%r12) 0.00 : 68b60a: 00 00 : /* We aren't deleting this locallock, so done */ : continue; 0.00 : 68b60c: e9 e7 fb ff ff jmpq 68b1f8 : RemoveLocalLock(locallock); : } : : /* Done with the fast-path data structures */ : if (have_fast_path_lwlock) : LWLockRelease(MyProc->backendLock); 0.00 : 68b611: 48 8b 05 30 23 4f 00 mov 0x4f2330(%rip),%rax # b7d948 0.00 : 68b618: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi 0.00 : 68b61f: e8 7c 3d 00 00 callq 68f3a0 0.00 : 68b624: e9 e5 fd ff ff jmpq 68b40e : * the only way that the lock we hold on our own VXID can ever get : * released: it is always and only released when a toplevel transaction : * ends. : */ : if (lockmethodid == DEFAULT_LOCKMETHOD) : VirtualXactLockTableCleanup(); 0.00 : 68b629: e8 12 f2 ff ff callq 68a840 0.00 : 68b62e: 66 90 xchg %ax,%ax 0.00 : 68b630: e9 9e fb ff ff jmpq 68b1d3 : PROCLOCK *proclock; : int partition; : bool have_fast_path_lwlock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); 0.00 : 68b635: ba a3 cb 8a 00 mov $0x8acba3,%edx 0.00 : 68b63a: be 9d 07 00 00 mov $0x79d,%esi 0.00 : 68b63f: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68b644: e8 d7 fd 0e 00 callq 77b420 0.00 : 68b649: 0f b7 55 86 movzwl -0x7a(%rbp),%edx 0.00 : 68b64d: be 29 c6 8a 00 mov $0x8ac629,%esi 0.00 : 68b652: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68b657: 31 c0 xor %eax,%eax 0.00 : 68b659: e8 d2 fb 0e 00 callq 77b230 0.00 : 68b65e: e8 6d de dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:860 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f1d0 : : * discovered that we don't actually need to do so. Somebody else might have : * already woken us up though, in that case return false. : */ : static bool : LWLockDequeueSelf(LWLock *lock) : { 0.00 : 68f1d0: 55 push %rbp : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68f1d1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f1d6: 48 89 e5 mov %rsp,%rbp 0.00 : 68f1d9: 53 push %rbx 0.00 : 68f1da: 48 89 fb mov %rdi,%rbx 0.00 : 68f1dd: 48 83 ec 08 sub $0x8,%rsp 0.00 : 68f1e1: f0 86 07 lock xchg %al,(%rdi) : #endif : : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:860 100.00 : 68f1e4: 84 c0 test %al,%al 0.00 : 68f1e6: 0f 85 94 00 00 00 jne 68f280 : #endif : : /* need to iterate, somebody else could have unqueued us */ : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f1ec: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 68f1f0: 48 85 c0 test %rax,%rax 0.00 : 68f1f3: 74 38 je 68f22d 0.00 : 68f1f5: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 68f1f9: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 68f1fd: 48 39 c7 cmp %rax,%rdi 0.00 : 68f200: 74 2b je 68f22d : { : PGPROC *proc = dlist_container(PGPROC, lwWaitLink, iter.cur); : if (proc == MyProc) 0.00 : 68f202: 48 8b 35 3f e7 4e 00 mov 0x4ee73f(%rip),%rsi # b7d948 0.00 : 68f209: 48 83 e8 48 sub $0x48,%rax 0.00 : 68f20d: 48 39 c6 cmp %rax,%rsi 0.00 : 68f210: 75 12 jne 68f224 0.00 : 68f212: eb 3c jmp 68f250 0.00 : 68f214: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 68f218: 48 8d 42 b8 lea -0x48(%rdx),%rax 0.00 : 68f21c: 48 39 c6 cmp %rax,%rsi 0.00 : 68f21f: 74 2f je 68f250 : } : } : : /* clear waiting state again, nice for debugging */ : if (found) : MyProc->lwWaiting = false; 0.00 : 68f221: 48 89 ca mov %rcx,%rdx : #else : SpinLockAcquire(&lock->mutex); : #endif : : /* need to iterate, somebody else could have unqueued us */ : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f224: 48 39 d7 cmp %rdx,%rdi 0.00 : 68f227: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 68f22b: 75 eb jne 68f218 0.00 : 68f22d: 31 c9 xor %ecx,%ecx : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68f22f: ba ff ff ff ff mov $0xffffffff,%edx : : /* clear waiting state again, nice for debugging */ : if (found) : MyProc->lwWaiting = false; : : SpinLockRelease(&lock->mutex); 0.00 : 68f234: c6 03 00 movb $0x0,(%rbx) : : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); 0.00 : 68f237: 48 8d 43 08 lea 0x8(%rbx),%rax 0.00 : 68f23b: f0 0f c1 10 lock xadd %edx,(%rax) : return found; : } 0.00 : 68f23f: 48 83 c4 08 add $0x8,%rsp 0.00 : 68f243: 89 c8 mov %ecx,%eax 0.00 : 68f245: 5b pop %rbx 0.00 : 68f246: c9 leaveq 0.00 : 68f247: c3 retq 0.00 : 68f248: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68f24f: 00 : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 68f250: 48 8b 56 48 mov 0x48(%rsi),%rdx 0.00 : 68f254: 48 8b 46 50 mov 0x50(%rsi),%rax : } : } : : /* clear waiting state again, nice for debugging */ : if (found) : MyProc->lwWaiting = false; 0.00 : 68f258: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 68f25d: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.00 : 68f261: 48 8b 46 48 mov 0x48(%rsi),%rax 0.00 : 68f265: 48 8b 56 50 mov 0x50(%rsi),%rdx 0.00 : 68f269: 48 89 02 mov %rax,(%rdx) 0.00 : 68f26c: 48 8b 05 d5 e6 4e 00 mov 0x4ee6d5(%rip),%rax # b7d948 0.00 : 68f273: c6 40 41 00 movb $0x0,0x41(%rax) 0.00 : 68f277: eb b6 jmp 68f22f 0.00 : 68f279: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif : : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f280: ba 5c 03 00 00 mov $0x35c,%edx 0.00 : 68f285: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f28a: e8 b1 0d 00 00 callq 690040 0.00 : 68f28f: e9 58 ff ff ff jmpq 68f1ec Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:906 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:908 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068fe70 : : * : * The lock is always acquired in exclusive mode with this function. : */ : bool : LWLockAcquireWithVar(LWLock *l, uint64 *valptr, uint64 val) : { 0.00 : 68fe70: 55 push %rbp 0.00 : 68fe71: 48 89 e5 mov %rsp,%rbp 0.00 : 68fe74: 41 57 push %r15 0.00 : 68fe76: 41 56 push %r14 0.00 : 68fe78: 49 89 fe mov %rdi,%r14 0.00 : 68fe7b: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:906 50.00 : 68fe7d: 41 54 push %r12 0.00 : 68fe7f: 53 push %rbx 0.00 : 68fe80: 48 83 ec 28 sub $0x28,%rsp : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) 0.00 : 68fe84: 81 3d 7a db 4e 00 c7 cmpl $0xc7,0x4edb7a(%rip) # b7da08 0.00 : 68fe8b: 00 00 00 : * : * The lock is always acquired in exclusive mode with this function. : */ : bool : LWLockAcquireWithVar(LWLock *l, uint64 *valptr, uint64 val) : { 0.00 : 68fe8e: 48 89 75 c0 mov %rsi,-0x40(%rbp) 0.00 : 68fe92: 48 89 55 b8 mov %rdx,-0x48(%rbp) : : /* internal function to implement LWLockAcquire and LWLockAcquireWithVar */ : static inline bool : LWLockAcquireCommon(LWLock *lock, LWLockMode mode, uint64 *valptr, uint64 val) : { : PGPROC *proc = MyProc; 0.00 : 68fe96: 4c 8b 25 ab da 4e 00 mov 0x4edaab(%rip),%r12 # b7d948 : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) 0.00 : 68fe9d: 0f 8f 1f 01 00 00 jg 68ffc2 : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); 0.00 : 68fea3: 8b 05 ef a1 52 00 mov 0x52a1ef(%rip),%eax # bba098 : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68fea9: 4d 8d 6c 24 10 lea 0x10(%r12),%r13 : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; : : /* not waiting anymore */ : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); 0.00 : 68feae: 4c 8d 7f 08 lea 0x8(%rdi),%r15 0.00 : 68feb2: 31 db xor %ebx,%ebx 0.00 : 68feb4: c6 45 cf 01 movb $0x1,-0x31(%rbp) : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); 0.00 : 68feb8: 83 c0 01 add $0x1,%eax 0.00 : 68febb: 89 05 d7 a1 52 00 mov %eax,0x52a1d7(%rip) # bba098 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68fec1: 48 8d 47 01 lea 0x1(%rdi),%rax 0.00 : 68fec5: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 68fec9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : bool mustwait; : : /* : * try to grab the lock the first time, we're not in the waitqueue yet. : */ : mustwait = LWLockAttemptLock(lock, mode, NULL); 0.00 : 68fed0: 31 d2 xor %edx,%edx 0.00 : 68fed2: 31 f6 xor %esi,%esi 0.00 : 68fed4: 4c 89 f7 mov %r14,%rdi 0.00 : 68fed7: e8 e4 ef ff ff callq 68eec0 : : if (!mustwait) 0.00 : 68fedc: 84 c0 test %al,%al 0.00 : 68fede: 74 7a je 68ff5a : * other lock will see our queue entries when releasing since they : * existed before we checked for the lock. : */ : : /* add to the queue */ : LWLockQueueSelf(lock, mode); 0.00 : 68fee0: 31 f6 xor %esi,%esi 0.00 : 68fee2: 4c 89 f7 mov %r14,%rdi 0.00 : 68fee5: e8 96 f1 ff ff callq 68f080 : : /* we're now guaranteed to be woken up if necessary */ : mustwait = LWLockAttemptLock(lock, mode, NULL); 0.00 : 68feea: 31 d2 xor %edx,%edx 0.00 : 68feec: 31 f6 xor %esi,%esi 0.00 : 68feee: 4c 89 f7 mov %r14,%rdi 0.00 : 68fef1: e8 ca ef ff ff callq 68eec0 : : /* ok, grabbed the lock the second time round, need to undo queueing */ : if (!mustwait) 0.00 : 68fef6: 84 c0 test %al,%al 0.00 : 68fef8: 75 09 jne 68ff03 0.00 : 68fefa: eb 30 jmp 68ff2c 0.00 : 68fefc: 0f 1f 40 00 nopl 0x0(%rax) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68ff00: 83 c3 01 add $0x1,%ebx : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68ff03: 31 f6 xor %esi,%esi 0.00 : 68ff05: 4c 89 ef mov %r13,%rdi 0.00 : 68ff08: e8 13 82 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68ff0d: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) 0.00 : 68ff13: 75 eb jne 68ff00 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68ff15: 48 8b 55 d0 mov -0x30(%rbp),%rdx : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68ff19: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68ff1e: c6 02 01 movb $0x1,(%rdx) 0.00 : 68ff21: f0 41 0f c1 07 lock xadd %eax,(%r15) 0.00 : 68ff26: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 68ff2a: eb a4 jmp 68fed0 : LOG_LWDEBUG("LWLockAcquire", lock, "acquired, undoing queue"); : : #ifdef LWLOCK_STATS : lwstats->dequeue_self_count++; : #endif : if (!LWLockDequeueSelf(lock)) 0.00 : 68ff2c: 4c 89 f7 mov %r14,%rdi 0.00 : 68ff2f: e8 9c f2 ff ff callq 68f1d0 0.00 : 68ff34: 84 c0 test %al,%al 0.00 : 68ff36: 75 22 jne 68ff5a 0.00 : 68ff38: eb 09 jmp 68ff43 0.00 : 68ff3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : for (;;) : { : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68ff40: 83 c3 01 add $0x1,%ebx : * reset at some inconvenient point later, and releaseOk : * wouldn't be managed correctly. : */ : for (;;) : { : PGSemaphoreLock(&proc->sem, false); 0.00 : 68ff43: 31 f6 xor %esi,%esi 0.00 : 68ff45: 4c 89 ef mov %r13,%rdi 0.00 : 68ff48: e8 d3 81 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68ff4d: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) 0.00 : 68ff53: 75 eb jne 68ff40 : /* : * Reset releaseOk - if somebody woke us they'll have set it : * to false. No need for a barrier here - we got the lock and : * will perform wakeup if necessary. : */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68ff55: 41 c6 46 01 01 movb $0x1,0x1(%r14) : /* Now loop back and try to acquire lock again. */ : result = false; : } : : /* If there's a variable associated with this lock, initialize it */ : if (valptr) 0.00 : 68ff5a: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 68ff5f: 74 0b je 68ff6c : *valptr = val; 0.00 : 68ff61: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 68ff65: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 68ff69: 48 89 10 mov %rdx,(%rax) : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68ff6c: 8b 15 96 da 4e 00 mov 0x4eda96(%rip),%edx # b7da08 0.00 : 68ff72: 48 63 c2 movslq %edx,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68ff75: 83 c2 01 add $0x1,%edx : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68ff78: 48 c1 e0 04 shl $0x4,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68ff7c: 85 db test %ebx,%ebx : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68ff7e: 89 15 84 da 4e 00 mov %edx,0x4eda84(%rip) # b7da08 : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68ff84: 4c 89 b0 40 da b7 00 mov %r14,0xb7da40(%rax) : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68ff8b: c7 80 48 da b7 00 00 movl $0x0,0xb7da48(%rax) 0.00 : 68ff92: 00 00 00 : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68ff95: 7e 18 jle 68ffaf 0.00 : 68ff97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68ff9e: 00 00 : PGSemaphoreUnlock(&proc->sem); 0.00 : 68ffa0: 4c 89 ef mov %r13,%rdi 0.00 : 68ffa3: 83 eb 01 sub $0x1,%ebx 0.00 : 68ffa6: e8 e5 80 fa ff callq 638090 : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68ffab: 85 db test %ebx,%ebx 0.00 : 68ffad: 7f f1 jg 68ffa0 : */ : bool : LWLockAcquireWithVar(LWLock *l, uint64 *valptr, uint64 val) : { : return LWLockAcquireCommon(l, LW_EXCLUSIVE, valptr, val); : } 0.00 : 68ffaf: 0f b6 45 cf movzbl -0x31(%rbp),%eax 0.00 : 68ffb3: 48 83 c4 28 add $0x28,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:908 50.00 : 68ffb7: 5b pop %rbx 0.00 : 68ffb8: 41 5c pop %r12 0.00 : 68ffba: 41 5d pop %r13 0.00 : 68ffbc: 41 5e pop %r14 0.00 : 68ffbe: 41 5f pop %r15 0.00 : 68ffc0: c9 leaveq 0.00 : 68ffc1: c3 retq : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) : elog(ERROR, "too many LWLocks taken"); 0.00 : 68ffc2: ba 70 d1 8a 00 mov $0x8ad170,%edx 0.00 : 68ffc7: be b0 03 00 00 mov $0x3b0,%esi 0.00 : 68ffcc: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68ffd1: e8 4a b4 0e 00 callq 77b420 0.00 : 68ffd6: be 8e d0 8a 00 mov $0x8ad08e,%esi 0.00 : 68ffdb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68ffe0: 31 c0 xor %eax,%eax 0.00 : 68ffe2: e8 49 b2 0e 00 callq 77b230 0.00 : 68ffe7: e8 e4 94 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4251 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000692790 : : * tuple itself. : */ : void : CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, : Buffer buffer) : { 0.00 : 692790: 55 push %rbp 0.00 : 692791: 48 89 e5 mov %rsp,%rbp 0.00 : 692794: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4251 100.00 : 692798: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 69279c: 48 89 fb mov %rdi,%rbx 0.00 : 69279f: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 6927a3: 48 83 ec 30 sub $0x30,%rsp : */ : static inline bool : SerializationNeededForWrite(Relation relation) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) 0.00 : 6927a7: 48 8b 0d 12 bf 4e 00 mov 0x4ebf12(%rip),%rcx # b7e6c0 : * tuple itself. : */ : void : CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, : Buffer buffer) : { 0.00 : 6927ae: 41 89 d5 mov %edx,%r13d : */ : static inline bool : SerializationNeededForWrite(Relation relation) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) 0.00 : 6927b1: 48 85 c9 test %rcx,%rcx 0.00 : 6927b4: 0f 84 84 00 00 00 je 69283e : * relations are exempt, as are materialized views. : */ : static inline bool : PredicateLockingNeededForRelation(Relation relation) : { : return !(relation->rd_id < FirstBootstrapObjectId || 0.00 : 6927ba: 8b 57 40 mov 0x40(%rdi),%edx 0.00 : 6927bd: 81 fa 0f 27 00 00 cmp $0x270f,%edx 0.00 : 6927c3: 76 79 jbe 69283e 0.00 : 6927c5: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 6927c9: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 0.00 : 6927cd: 74 6f je 69283e 0.00 : 6927cf: 80 78 6f 6d cmpb $0x6d,0x6f(%rax) 0.00 : 6927d3: 74 69 je 69283e : : if (!SerializationNeededForWrite(relation)) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) 0.00 : 6927d5: f6 41 7c 08 testb $0x8,0x7c(%rcx) 0.00 : 6927d9: 0f 85 99 00 00 00 jne 692878 : * old (finer) locks are released. : * : * It is not possible to take and hold a lock across the checks for all : * granularities because each target could be in a separate partition. : */ : if (tuple != NULL) 0.00 : 6927df: 48 85 f6 test %rsi,%rsi : : /* : * We're doing a write which might cause rw-conflicts now or later. : * Memorize that fact. : */ : MyXactDidWrite = true; 0.00 : 6927e2: c6 05 df be 4e 00 01 movb $0x1,0x4ebedf(%rip) # b7e6c8 0.00 : 6927e9: 4c 8d 65 d0 lea -0x30(%rbp),%r12 : * old (finer) locks are released. : * : * It is not possible to take and hold a lock across the checks for all : * granularities because each target could be in a separate partition. : */ : if (tuple != NULL) 0.00 : 6927ed: 74 2b je 69281a : { : SET_PREDICATELOCKTARGETTAG_TUPLE(targettag, 0.00 : 6927ef: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6927f2: 89 55 d4 mov %edx,-0x2c(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : ItemPointerGetBlockNumber(&(tuple->t_self)), : ItemPointerGetOffsetNumber(&(tuple->t_self))); : CheckTargetForConflictsIn(&targettag); 0.00 : 6927f5: 4c 89 e7 mov %r12,%rdi : * It is not possible to take and hold a lock across the checks for all : * granularities because each target could be in a separate partition. : */ : if (tuple != NULL) : { : SET_PREDICATELOCKTARGETTAG_TUPLE(targettag, 0.00 : 6927f8: 89 45 d0 mov %eax,-0x30(%rbp) 0.00 : 6927fb: 0f b7 46 04 movzwl 0x4(%rsi),%eax 0.00 : 6927ff: 0f b7 56 06 movzwl 0x6(%rsi),%edx 0.00 : 692803: c1 e0 10 shl $0x10,%eax 0.00 : 692806: 09 d0 or %edx,%eax 0.00 : 692808: 89 45 d8 mov %eax,-0x28(%rbp) 0.00 : 69280b: 0f b7 46 08 movzwl 0x8(%rsi),%eax 0.00 : 69280f: 89 45 dc mov %eax,-0x24(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : ItemPointerGetBlockNumber(&(tuple->t_self)), : ItemPointerGetOffsetNumber(&(tuple->t_self))); : CheckTargetForConflictsIn(&targettag); 0.00 : 692812: e8 c9 fb ff ff callq 6923e0 0.00 : 692817: 8b 53 40 mov 0x40(%rbx),%edx : } : : if (BufferIsValid(buffer)) 0.00 : 69281a: 45 85 ed test %r13d,%r13d 0.00 : 69281d: 75 31 jne 692850 : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); : } : : SET_PREDICATELOCKTARGETTAG_RELATION(targettag, 0.00 : 69281f: 8b 43 04 mov 0x4(%rbx),%eax : relation->rd_node.dbNode, : relation->rd_id); : CheckTargetForConflictsIn(&targettag); 0.00 : 692822: 4c 89 e7 mov %r12,%rdi : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); : } : : SET_PREDICATELOCKTARGETTAG_RELATION(targettag, 0.00 : 692825: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 692828: c7 45 d8 ff ff ff ff movl $0xffffffff,-0x28(%rbp) 0.00 : 69282f: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%rbp) 0.00 : 692836: 89 45 d0 mov %eax,-0x30(%rbp) : relation->rd_node.dbNode, : relation->rd_id); : CheckTargetForConflictsIn(&targettag); 0.00 : 692839: e8 a2 fb ff ff callq 6923e0 : } 0.00 : 69283e: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 692842: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 692846: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 69284a: c9 leaveq 0.00 : 69284b: c3 retq 0.00 : 69284c: 0f 1f 40 00 nopl 0x0(%rax) : CheckTargetForConflictsIn(&targettag); : } : : if (BufferIsValid(buffer)) : { : SET_PREDICATELOCKTARGETTAG_PAGE(targettag, 0.00 : 692850: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 692853: 44 89 ef mov %r13d,%edi 0.00 : 692856: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 692859: 89 45 d0 mov %eax,-0x30(%rbp) 0.00 : 69285c: e8 cf 17 fe ff callq 674030 : relation->rd_node.dbNode, : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); 0.00 : 692861: 4c 89 e7 mov %r12,%rdi : CheckTargetForConflictsIn(&targettag); : } : : if (BufferIsValid(buffer)) : { : SET_PREDICATELOCKTARGETTAG_PAGE(targettag, 0.00 : 692864: 89 45 d8 mov %eax,-0x28(%rbp) 0.00 : 692867: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); 0.00 : 69286e: e8 6d fb ff ff callq 6923e0 0.00 : 692873: 8b 53 40 mov 0x40(%rbx),%edx 0.00 : 692876: eb a7 jmp 69281f : if (!SerializationNeededForWrite(relation)) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) : ereport(ERROR, 0.00 : 692878: 45 31 c0 xor %r8d,%r8d 0.00 : 69287b: b9 c0 da 8a 00 mov $0x8adac0,%ecx 0.00 : 692880: ba a7 10 00 00 mov $0x10a7,%edx 0.00 : 692885: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 69288a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69288f: e8 2c 82 0e 00 callq 77aac0 0.00 : 692894: 84 c0 test %al,%al 0.00 : 692896: 75 05 jne 69289d 0.00 : 692898: e8 33 6c dd ff callq 4694d0 0.00 : 69289d: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 6928a2: 31 c0 xor %eax,%eax 0.00 : 6928a4: e8 f7 93 0e 00 callq 77bca0 0.00 : 6928a9: bf 08 d5 8a 00 mov $0x8ad508,%edi 0.00 : 6928ae: 41 89 c5 mov %eax,%r13d 0.00 : 6928b1: 31 c0 xor %eax,%eax 0.00 : 6928b3: e8 c8 9a 0e 00 callq 77c380 0.00 : 6928b8: bf 48 d3 8a 00 mov $0x8ad348,%edi 0.00 : 6928bd: 89 c3 mov %eax,%ebx 0.00 : 6928bf: 31 c0 xor %eax,%eax 0.00 : 6928c1: e8 da 9f 0e 00 callq 77c8a0 0.00 : 6928c6: bf 04 00 00 01 mov $0x1000004,%edi 0.00 : 6928cb: 41 89 c4 mov %eax,%r12d 0.00 : 6928ce: e8 7d a4 0e 00 callq 77cd50 0.00 : 6928d3: 44 89 e9 mov %r13d,%ecx 0.00 : 6928d6: 89 c7 mov %eax,%edi 0.00 : 6928d8: 89 da mov %ebx,%edx 0.00 : 6928da: 44 89 e6 mov %r12d,%esi 0.00 : 6928dd: 31 c0 xor %eax,%eax 0.00 : 6928df: e8 fc 7c 0e 00 callq 77a5e0 0.00 : 6928e4: eb b2 jmp 692898 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694d20 : : : /* : * Use signed arithmetic here so that we behave sensibly if pd_lower > : * pd_upper. : */ : space = (int) ((PageHeader) page)->pd_upper - 0.00 : 694d20: 0f b7 47 0c movzwl 0xc(%rdi),%eax 0.00 : 694d24: 0f b7 57 0e movzwl 0xe(%rdi),%edx : * Note: this should usually only be used on index pages. Use : * PageGetHeapFreeSpace on heap pages. : */ : Size : PageGetFreeSpace(Page page) : { 0.00 : 694d28: 55 push %rbp 0.00 : 694d29: 48 89 e5 mov %rsp,%rbp : : /* : * Use signed arithmetic here so that we behave sensibly if pd_lower > : * pd_upper. : */ : space = (int) ((PageHeader) page)->pd_upper - /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 100.00 : 694d2c: 29 c2 sub %eax,%edx : (int) ((PageHeader) page)->pd_lower; : : if (space < (int) sizeof(ItemIdData)) 0.00 : 694d2e: 31 c0 xor %eax,%eax 0.00 : 694d30: 83 fa 03 cmp $0x3,%edx 0.00 : 694d33: 7e 05 jle 694d3a : return 0; : space -= sizeof(ItemIdData); 0.00 : 694d35: 8d 42 fc lea -0x4(%rdx),%eax : : return (Size) space; 0.00 : 694d38: 48 98 cltq : } 0.00 : 694d3a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:812 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697d70 : : * called, then only segments up to the last one actually touched : * are present in the chain. : */ : BlockNumber : mdnblocks(SMgrRelation reln, ForkNumber forknum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:812 100.00 : 697d70: 55 push %rbp : MdfdVec *v = mdopen(reln, forknum, EXTENSION_FAIL); 0.00 : 697d71: 31 d2 xor %edx,%edx : * called, then only segments up to the last one actually touched : * are present in the chain. : */ : BlockNumber : mdnblocks(SMgrRelation reln, ForkNumber forknum) : { 0.00 : 697d73: 48 89 e5 mov %rsp,%rbp 0.00 : 697d76: 41 56 push %r14 0.00 : 697d78: 49 89 fe mov %rdi,%r14 0.00 : 697d7b: 41 55 push %r13 0.00 : 697d7d: 41 89 f5 mov %esi,%r13d 0.00 : 697d80: 41 54 push %r12 : * relcache flush. (Since the checkpointer doesn't participate in : * relcache flush, it could have segment chain entries for inactive : * segments; that's OK because the checkpointer never needs to compute : * relation size.) : */ : while (v->mdfd_chain != NULL) 0.00 : 697d82: 45 31 e4 xor %r12d,%r12d : * called, then only segments up to the last one actually touched : * are present in the chain. : */ : BlockNumber : mdnblocks(SMgrRelation reln, ForkNumber forknum) : { 0.00 : 697d85: 53 push %rbx : MdfdVec *v = mdopen(reln, forknum, EXTENSION_FAIL); 0.00 : 697d86: e8 b5 fb ff ff callq 697940 0.00 : 697d8b: 48 89 c3 mov %rax,%rbx : * relcache flush. (Since the checkpointer doesn't participate in : * relcache flush, it could have segment chain entries for inactive : * segments; that's OK because the checkpointer never needs to compute : * relation size.) : */ : while (v->mdfd_chain != NULL) 0.00 : 697d8e: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 697d92: 48 85 c0 test %rax,%rax 0.00 : 697d95: 74 3c je 697dd3 0.00 : 697d97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 697d9e: 00 00 0.00 : 697da0: 48 89 c3 mov %rax,%rbx 0.00 : 697da3: 48 8b 40 08 mov 0x8(%rax),%rax : { : segno++; 0.00 : 697da7: 41 83 c4 01 add $0x1,%r12d : * relcache flush. (Since the checkpointer doesn't participate in : * relcache flush, it could have segment chain entries for inactive : * segments; that's OK because the checkpointer never needs to compute : * relation size.) : */ : while (v->mdfd_chain != NULL) 0.00 : 697dab: 48 85 c0 test %rax,%rax 0.00 : 697dae: 75 f0 jne 697da0 0.00 : 697db0: eb 21 jmp 697dd3 : * Because we pass O_CREAT, we will create the next segment (with : * zero length) immediately, if the last segment is of length : * RELSEG_SIZE. While perhaps not strictly necessary, this keeps : * the logic simple. : */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, segno, O_CREAT); 0.00 : 697db2: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 697db7: 44 89 e2 mov %r12d,%edx 0.00 : 697dba: 44 89 ee mov %r13d,%esi 0.00 : 697dbd: 4c 89 f7 mov %r14,%rdi 0.00 : 697dc0: e8 3b ff ff ff callq 697d00 <_mdfd_openseg> : if (v->mdfd_chain == NULL) 0.00 : 697dc5: 48 85 c0 test %rax,%rax : * Because we pass O_CREAT, we will create the next segment (with : * zero length) immediately, if the last segment is of length : * RELSEG_SIZE. While perhaps not strictly necessary, this keeps : * the logic simple. : */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, segno, O_CREAT); 0.00 : 697dc8: 48 89 43 08 mov %rax,0x8(%rbx) : if (v->mdfd_chain == NULL) 0.00 : 697dcc: 74 6d je 697e3b 0.00 : 697dce: 66 90 xchg %ax,%ax : ereport(ERROR, 0.00 : 697dd0: 48 89 c3 mov %rax,%rbx : v = v->mdfd_chain; : } : : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); 0.00 : 697dd3: 48 89 da mov %rbx,%rdx 0.00 : 697dd6: 44 89 ee mov %r13d,%esi 0.00 : 697dd9: 4c 89 f7 mov %r14,%rdi 0.00 : 697ddc: e8 2f fe ff ff callq 697c10 <_mdnblocks> : if (nblocks > ((BlockNumber) RELSEG_SIZE)) 0.00 : 697de1: 3d 00 00 02 00 cmp $0x20000,%eax 0.00 : 697de6: 77 29 ja 697e11 : elog(FATAL, "segment too big"); : if (nblocks < ((BlockNumber) RELSEG_SIZE)) 0.00 : 697de8: 75 16 jne 697e00 : /* : * If segment is exactly RELSEG_SIZE, advance to next one. : */ : segno++; : : if (v->mdfd_chain == NULL) 0.00 : 697dea: 48 8b 43 08 mov 0x8(%rbx),%rax : return (segno * ((BlockNumber) RELSEG_SIZE)) + nblocks; : : /* : * If segment is exactly RELSEG_SIZE, advance to next one. : */ : segno++; 0.00 : 697dee: 41 83 c4 01 add $0x1,%r12d : : if (v->mdfd_chain == NULL) 0.00 : 697df2: 48 85 c0 test %rax,%rax 0.00 : 697df5: 75 d9 jne 697dd0 0.00 : 697df7: eb b9 jmp 697db2 0.00 : 697df9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); : if (nblocks > ((BlockNumber) RELSEG_SIZE)) : elog(FATAL, "segment too big"); : if (nblocks < ((BlockNumber) RELSEG_SIZE)) 0.00 : 697e00: 41 c1 e4 11 shl $0x11,%r12d : _mdfd_segpath(reln, forknum, segno)))); : } : : v = v->mdfd_chain; : } : } 0.00 : 697e04: 5b pop %rbx : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); : if (nblocks > ((BlockNumber) RELSEG_SIZE)) : elog(FATAL, "segment too big"); : if (nblocks < ((BlockNumber) RELSEG_SIZE)) 0.00 : 697e05: 41 8d 04 04 lea (%r12,%rax,1),%eax : _mdfd_segpath(reln, forknum, segno)))); : } : : v = v->mdfd_chain; : } : } 0.00 : 697e09: 41 5c pop %r12 0.00 : 697e0b: 41 5d pop %r13 0.00 : 697e0d: 41 5e pop %r14 0.00 : 697e0f: c9 leaveq 0.00 : 697e10: c3 retq : : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); : if (nblocks > ((BlockNumber) RELSEG_SIZE)) : elog(FATAL, "segment too big"); 0.00 : 697e11: ba c7 e3 8a 00 mov $0x8ae3c7,%edx 0.00 : 697e16: be 48 03 00 00 mov $0x348,%esi 0.00 : 697e1b: bf db 5b 87 00 mov $0x875bdb,%edi 0.00 : 697e20: e8 fb 35 0e 00 callq 77b420 0.00 : 697e25: be 96 df 8a 00 mov $0x8adf96,%esi 0.00 : 697e2a: bf 15 00 00 00 mov $0x15,%edi 0.00 : 697e2f: 31 c0 xor %eax,%eax 0.00 : 697e31: e8 fa 33 0e 00 callq 77b230 0.00 : 697e36: e8 95 16 dd ff callq 4694d0 : * RELSEG_SIZE. While perhaps not strictly necessary, this keeps : * the logic simple. : */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, segno, O_CREAT); : if (v->mdfd_chain == NULL) : ereport(ERROR, 0.00 : 697e3b: 45 31 c0 xor %r8d,%r8d 0.00 : 697e3e: b9 c7 e3 8a 00 mov $0x8ae3c7,%ecx 0.00 : 697e43: ba 5e 03 00 00 mov $0x35e,%edx 0.00 : 697e48: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 697e4d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 697e52: e8 69 2c 0e 00 callq 77aac0 0.00 : 697e57: 84 c0 test %al,%al 0.00 : 697e59: 75 05 jne 697e60 0.00 : 697e5b: e8 70 16 dd ff callq 4694d0 0.00 : 697e60: 44 89 e2 mov %r12d,%edx 0.00 : 697e63: 44 89 ee mov %r13d,%esi 0.00 : 697e66: 4c 89 f7 mov %r14,%rdi 0.00 : 697e69: e8 22 fe ff ff callq 697c90 <_mdfd_segpath> 0.00 : 697e6e: bf 53 31 7b 00 mov $0x7b3153,%edi 0.00 : 697e73: 48 89 c6 mov %rax,%rsi 0.00 : 697e76: 31 c0 xor %eax,%eax 0.00 : 697e78: e8 23 4a 0e 00 callq 77c8a0 0.00 : 697e7d: 89 c3 mov %eax,%ebx 0.00 : 697e7f: e8 6c 4c 0e 00 callq 77caf0 0.00 : 697e84: 89 de mov %ebx,%esi 0.00 : 697e86: 89 c7 mov %eax,%edi 0.00 : 697e88: 31 c0 xor %eax,%eax 0.00 : 697e8a: e8 51 27 0e 00 callq 77a5e0 0.00 : 697e8f: eb ca jmp 697e5b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:514 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698150 : : * causes intervening file space to become filled with zeroes. : */ : void : mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698150: 55 push %rbp 0.00 : 698151: 48 89 e5 mov %rsp,%rbp 0.00 : 698154: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 698158: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 69815c: 49 89 fc mov %rdi,%r12 0.00 : 69815f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 698163: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 698167: 41 89 d6 mov %edx,%r14d 0.00 : 69816a: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 69816e: 48 83 ec 30 sub $0x30,%rsp : /* : * If a relation manages to grow to 2^32-1 blocks, refuse to extend it any : * more --- we mustn't create a block whose number actually is : * InvalidBlockNumber. : */ : if (blocknum == InvalidBlockNumber) 0.00 : 698172: 83 fa ff cmp $0xffffffff,%edx : * causes intervening file space to become filled with zeroes. : */ : void : mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698175: 89 75 d4 mov %esi,-0x2c(%rbp) 0.00 : 698178: 49 89 cf mov %rcx,%r15 0.00 : 69817b: 44 88 45 d3 mov %r8b,-0x2d(%rbp) : /* : * If a relation manages to grow to 2^32-1 blocks, refuse to extend it any : * more --- we mustn't create a block whose number actually is : * InvalidBlockNumber. : */ : if (blocknum == InvalidBlockNumber) 0.00 : 69817f: 0f 84 1e 01 00 00 je 6982a3 : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("cannot extend file \"%s\" beyond %u blocks", : relpath(reln->smgr_rnode, forknum), : InvalidBlockNumber))); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_CREATE); 0.00 : 698185: 0f be 4d d3 movsbl -0x2d(%rbp),%ecx /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:514 100.00 : 698189: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 69818c: 41 b8 02 00 00 00 mov $0x2,%r8d : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698192: 4c 89 f3 mov %r14,%rbx 0.00 : 698195: 81 e3 ff ff 01 00 and $0x1ffff,%ebx 0.00 : 69819b: 48 c1 e3 0d shl $0xd,%rbx : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("cannot extend file \"%s\" beyond %u blocks", : relpath(reln->smgr_rnode, forknum), : InvalidBlockNumber))); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_CREATE); 0.00 : 69819f: e8 2c 02 00 00 callq 6983d0 <_mdfd_getseg> : * partial page at the end of the file. In that case we want to try to : * overwrite the partial page with a full page. It's also not redundant : * if bufmgr.c had to dump another buffer of the same file to make room : * for the new page's buffer. : */ : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 6981a4: 8b 38 mov (%rax),%edi 0.00 : 6981a6: 31 d2 xor %edx,%edx 0.00 : 6981a8: 48 89 de mov %rbx,%rsi : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("cannot extend file \"%s\" beyond %u blocks", : relpath(reln->smgr_rnode, forknum), : InvalidBlockNumber))); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_CREATE); 0.00 : 6981ab: 49 89 c5 mov %rax,%r13 : * partial page at the end of the file. In that case we want to try to : * overwrite the partial page with a full page. It's also not redundant : * if bufmgr.c had to dump another buffer of the same file to make room : * for the new page's buffer. : */ : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 6981ae: e8 dd 18 fe ff callq 679a90 0.00 : 6981b3: 48 39 d8 cmp %rbx,%rax 0.00 : 6981b6: 0f 85 55 01 00 00 jne 698311 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : if ((nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ)) != BLCKSZ) 0.00 : 6981bc: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 6981c0: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 6981c5: 4c 89 fe mov %r15,%rsi 0.00 : 6981c8: e8 83 1a fe ff callq 679c50 0.00 : 6981cd: 3d 00 20 00 00 cmp $0x2000,%eax 0.00 : 6981d2: 89 c3 mov %eax,%ebx 0.00 : 6981d4: 74 7a je 698250 : { : if (nbytes < 0) 0.00 : 6981d6: 85 c0 test %eax,%eax 0.00 : 6981d8: 0f 89 89 01 00 00 jns 698367 : ereport(ERROR, 0.00 : 6981de: 45 31 c0 xor %r8d,%r8d 0.00 : 6981e1: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 6981e6: ba 1e 02 00 00 mov $0x21e,%edx 0.00 : 6981eb: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6981f0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6981f5: e8 c6 28 0e 00 callq 77aac0 0.00 : 6981fa: 84 c0 test %al,%al 0.00 : 6981fc: 75 0a jne 698208 : (errcode_for_file_access(), : errmsg("could not extend file \"%s\": %m", : FilePathName(v->mdfd_vfd)), : errhint("Check free disk space."))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 6981fe: e8 cd 12 dd ff callq 4694d0 0.00 : 698203: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : blocknum, FilePathName(v->mdfd_vfd)))); : : if ((nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ)) != BLCKSZ) : { : if (nbytes < 0) : ereport(ERROR, 0.00 : 698208: bf a6 df 8a 00 mov $0x8adfa6,%edi 0.00 : 69820d: 31 c0 xor %eax,%eax 0.00 : 69820f: e8 8c 3a 0e 00 callq 77bca0 0.00 : 698214: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698218: 41 89 c4 mov %eax,%r12d 0.00 : 69821b: e8 90 00 fe ff callq 6782b0 0.00 : 698220: bf 48 e1 8a 00 mov $0x8ae148,%edi 0.00 : 698225: 48 89 c6 mov %rax,%rsi 0.00 : 698228: 31 c0 xor %eax,%eax 0.00 : 69822a: e8 71 46 0e 00 callq 77c8a0 0.00 : 69822f: 89 c3 mov %eax,%ebx 0.00 : 698231: e8 ba 48 0e 00 callq 77caf0 : (errcode_for_file_access(), : errmsg("could not extend file \"%s\": %m", : FilePathName(v->mdfd_vfd)), : errhint("Check free disk space."))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698236: 89 c7 mov %eax,%edi 0.00 : 698238: 44 89 e2 mov %r12d,%edx 0.00 : 69823b: 89 de mov %ebx,%esi 0.00 : 69823d: 31 c0 xor %eax,%eax 0.00 : 69823f: e8 9c 23 0e 00 callq 77a5e0 0.00 : 698244: e8 87 12 dd ff callq 4694d0 0.00 : 698249: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : FilePathName(v->mdfd_vfd), : nbytes, BLCKSZ, blocknum), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) 0.00 : 698250: 80 7d d3 00 cmpb $0x0,-0x2d(%rbp) 0.00 : 698254: 75 0c jne 698262 0.00 : 698256: 41 83 7c 24 0c ff cmpl $0xffffffff,0xc(%r12) 0.00 : 69825c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 698260: 74 1e je 698280 : register_dirty_segment(reln, forknum, v); : : Assert(_mdnblocks(reln, forknum, v) <= ((BlockNumber) RELSEG_SIZE)); : } 0.00 : 698262: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 698266: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 69826a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 69826e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698272: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 698276: c9 leaveq 0.00 : 698277: c3 retq 0.00 : 698278: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 69827f: 00 : nbytes, BLCKSZ, blocknum), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); 0.00 : 698280: 4c 89 ea mov %r13,%rdx 0.00 : 698283: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 698286: 4c 89 e7 mov %r12,%rdi : : Assert(_mdnblocks(reln, forknum, v) <= ((BlockNumber) RELSEG_SIZE)); : } 0.00 : 698289: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 69828d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 698291: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 698295: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698299: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 69829d: c9 leaveq : nbytes, BLCKSZ, blocknum), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); 0.00 : 69829e: e9 ad f5 ff ff jmpq 697850 : * If a relation manages to grow to 2^32-1 blocks, refuse to extend it any : * more --- we mustn't create a block whose number actually is : * InvalidBlockNumber. : */ : if (blocknum == InvalidBlockNumber) : ereport(ERROR, 0.00 : 6982a3: 45 31 c0 xor %r8d,%r8d 0.00 : 6982a6: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 6982ab: ba 00 02 00 00 mov $0x200,%edx 0.00 : 6982b0: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6982b5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6982ba: e8 01 28 0e 00 callq 77aac0 0.00 : 6982bf: 84 c0 test %al,%al 0.00 : 6982c1: 0f 84 37 ff ff ff je 6981fe 0.00 : 6982c7: 41 8b 4c 24 0c mov 0xc(%r12),%ecx 0.00 : 6982cc: 44 8b 45 d4 mov -0x2c(%rbp),%r8d 0.00 : 6982d0: 41 8b 54 24 08 mov 0x8(%r12),%edx 0.00 : 6982d5: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 6982da: 41 8b 34 24 mov (%r12),%esi 0.00 : 6982de: e8 ed 62 11 00 callq 7ae5d0 0.00 : 6982e3: 44 89 f2 mov %r14d,%edx 0.00 : 6982e6: 48 89 c6 mov %rax,%rsi 0.00 : 6982e9: bf e8 e0 8a 00 mov $0x8ae0e8,%edi 0.00 : 6982ee: 31 c0 xor %eax,%eax 0.00 : 6982f0: e8 ab 45 0e 00 callq 77c8a0 0.00 : 6982f5: bf 05 01 00 00 mov $0x105,%edi 0.00 : 6982fa: 89 c3 mov %eax,%ebx 0.00 : 6982fc: e8 4f 4a 0e 00 callq 77cd50 0.00 : 698301: 89 de mov %ebx,%esi 0.00 : 698303: 89 c7 mov %eax,%edi 0.00 : 698305: 31 c0 xor %eax,%eax 0.00 : 698307: e8 d4 22 0e 00 callq 77a5e0 0.00 : 69830c: e9 ed fe ff ff jmpq 6981fe : * overwrite the partial page with a full page. It's also not redundant : * if bufmgr.c had to dump another buffer of the same file to make room : * for the new page's buffer. : */ : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698311: 45 31 c0 xor %r8d,%r8d 0.00 : 698314: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 698319: ba 15 02 00 00 mov $0x215,%edx 0.00 : 69831e: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698323: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698328: e8 93 27 0e 00 callq 77aac0 0.00 : 69832d: 84 c0 test %al,%al 0.00 : 69832f: 0f 84 c9 fe ff ff je 6981fe 0.00 : 698335: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698339: e8 72 ff fd ff callq 6782b0 0.00 : 69833e: 44 89 f6 mov %r14d,%esi 0.00 : 698341: 48 89 c2 mov %rax,%rdx 0.00 : 698344: bf 18 e1 8a 00 mov $0x8ae118,%edi 0.00 : 698349: 31 c0 xor %eax,%eax 0.00 : 69834b: e8 50 45 0e 00 callq 77c8a0 0.00 : 698350: 89 c3 mov %eax,%ebx 0.00 : 698352: e8 99 47 0e 00 callq 77caf0 0.00 : 698357: 89 de mov %ebx,%esi 0.00 : 698359: 89 c7 mov %eax,%edi 0.00 : 69835b: 31 c0 xor %eax,%eax 0.00 : 69835d: e8 7e 22 0e 00 callq 77a5e0 0.00 : 698362: e9 97 fe ff ff jmpq 6981fe : (errcode_for_file_access(), : errmsg("could not extend file \"%s\": %m", : FilePathName(v->mdfd_vfd)), : errhint("Check free disk space."))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698367: 45 31 c0 xor %r8d,%r8d 0.00 : 69836a: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 69836f: ba 25 02 00 00 mov $0x225,%edx 0.00 : 698374: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698379: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69837e: e8 3d 27 0e 00 callq 77aac0 0.00 : 698383: 84 c0 test %al,%al 0.00 : 698385: 0f 84 73 fe ff ff je 6981fe 0.00 : 69838b: bf a6 df 8a 00 mov $0x8adfa6,%edi 0.00 : 698390: 31 c0 xor %eax,%eax 0.00 : 698392: e8 09 39 0e 00 callq 77bca0 0.00 : 698397: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 69839b: 41 89 c4 mov %eax,%r12d 0.00 : 69839e: e8 0d ff fd ff callq 6782b0 0.00 : 6983a3: 89 da mov %ebx,%edx 0.00 : 6983a5: 48 89 c6 mov %rax,%rsi 0.00 : 6983a8: 45 89 f0 mov %r14d,%r8d 0.00 : 6983ab: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 6983b0: bf 68 e1 8a 00 mov $0x8ae168,%edi 0.00 : 6983b5: 31 c0 xor %eax,%eax 0.00 : 6983b7: e8 e4 44 0e 00 callq 77c8a0 0.00 : 6983bc: bf c5 10 00 00 mov $0x10c5,%edi 0.00 : 6983c1: 89 c3 mov %eax,%ebx 0.00 : 6983c3: e8 88 49 0e 00 callq 77cd50 0.00 : 6983c8: e9 69 fe ff ff jmpq 698236 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:273 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698e20 : : * : * Note: this will return true for lingering files, with pending deletions : */ : bool : mdexists(SMgrRelation reln, ForkNumber forkNum) : { 0.00 : 698e20: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:273 100.00 : 698e21: 48 89 e5 mov %rsp,%rbp 0.00 : 698e24: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 698e28: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 698e2c: 89 f3 mov %esi,%ebx 0.00 : 698e2e: 48 83 ec 10 sub $0x10,%rsp 0.00 : 698e32: 49 89 fc mov %rdi,%r12 : /* : * Close it first, to ensure that we notice if the fork has been unlinked : * since we opened it. : */ : mdclose(reln, forkNum); 0.00 : 698e35: e8 96 ff ff ff callq 698dd0 : : return (mdopen(reln, forkNum, EXTENSION_RETURN_NULL) != NULL); 0.00 : 698e3a: 89 de mov %ebx,%esi 0.00 : 698e3c: 4c 89 e7 mov %r12,%rdi 0.00 : 698e3f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 698e44: e8 f7 ea ff ff callq 697940 0.00 : 698e49: 48 85 c0 test %rax,%rax : } 0.00 : 698e4c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 698e50: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 : * Close it first, to ensure that we notice if the fork has been unlinked : * since we opened it. : */ : mdclose(reln, forkNum); : : return (mdopen(reln, forkNum, EXTENSION_RETURN_NULL) != NULL); 0.00 : 698e55: 0f 95 c0 setne %al : } 0.00 : 698e58: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:213 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699300 : : * relcache entry early in that case.) : * : * If there isn't an old owner, then the reln should be in the unowned : * list, and we need to remove it. : */ : if (reln->smgr_owner) 0.00 : 699300: 48 8b 46 10 mov 0x10(%rsi),%rax : * There can be only one owner at a time; this is sufficient since currently : * the only such owners exist in the relcache. : */ : void : smgrsetowner(SMgrRelation *owner, SMgrRelation reln) : { 0.00 : 699304: 55 push %rbp 0.00 : 699305: 48 89 e5 mov %rsp,%rbp : * relcache entry early in that case.) : * : * If there isn't an old owner, then the reln should be in the unowned : * list, and we need to remove it. : */ : if (reln->smgr_owner) 0.00 : 699308: 48 85 c0 test %rax,%rax 0.00 : 69930b: 74 13 je 699320 : *(reln->smgr_owner) = NULL; 0.00 : 69930d: 48 c7 00 00 00 00 00 movq $0x0,(%rax) : else : remove_from_unowned_list(reln); : : /* Now establish the ownership relationship. */ : reln->smgr_owner = owner; 0.00 : 699314: 48 89 7e 10 mov %rdi,0x10(%rsi) : *owner = reln; /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:213 100.00 : 699318: 48 89 37 mov %rsi,(%rdi) : } 0.00 : 69931b: c9 leaveq 0.00 : 69931c: c3 retq 0.00 : 69931d: 0f 1f 00 nopl (%rax) : remove_from_unowned_list(SMgrRelation reln) : { : SMgrRelation *link; : SMgrRelation cur; : : for (link = &first_unowned_reln, cur = *link; 0.00 : 699320: 48 8b 05 99 54 4e 00 mov 0x4e5499(%rip),%rax # b7e7c0 : cur != NULL; 0.00 : 699327: 48 85 c0 test %rax,%rax 0.00 : 69932a: 74 e8 je 699314 : link = &cur->next_unowned_reln, cur = *link) : { : if (cur == reln) 0.00 : 69932c: 48 39 c6 cmp %rax,%rsi 0.00 : 69932f: ba c0 e7 b7 00 mov $0xb7e7c0,%edx 0.00 : 699334: 74 1c je 699352 0.00 : 699336: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69933d: 00 00 00 : SMgrRelation *link; : SMgrRelation cur; : : for (link = &first_unowned_reln, cur = *link; : cur != NULL; : link = &cur->next_unowned_reln, cur = *link) 0.00 : 699340: 48 8d 50 48 lea 0x48(%rax),%rdx 0.00 : 699344: 48 8b 40 48 mov 0x48(%rax),%rax : { : SMgrRelation *link; : SMgrRelation cur; : : for (link = &first_unowned_reln, cur = *link; : cur != NULL; 0.00 : 699348: 48 85 c0 test %rax,%rax 0.00 : 69934b: 74 c7 je 699314 : link = &cur->next_unowned_reln, cur = *link) : { : if (cur == reln) 0.00 : 69934d: 48 39 c6 cmp %rax,%rsi 0.00 : 699350: 75 ee jne 699340 : { : *link = cur->next_unowned_reln; 0.00 : 699352: 48 8b 46 48 mov 0x48(%rsi),%rax 0.00 : 699356: 48 89 02 mov %rax,(%rdx) : cur->next_unowned_reln = NULL; 0.00 : 699359: 48 c7 46 48 00 00 00 movq $0x0,0x48(%rsi) 0.00 : 699360: 00 0.00 : 699361: eb b1 jmp 699314 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:4119 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000069e690 : : */ : void : PostgresMain(int argc, char *argv[], : const char *dbname, : const char *username) : { 0.00 : 69e690: 55 push %rbp 0.00 : 69e691: 48 89 e5 mov %rsp,%rbp 0.00 : 69e694: 41 57 push %r15 0.00 : 69e696: 41 56 push %r14 0.00 : 69e698: 41 55 push %r13 0.00 : 69e69a: 49 89 cd mov %rcx,%r13 0.00 : 69e69d: 41 54 push %r12 0.00 : 69e69f: 41 89 fc mov %edi,%r12d 0.00 : 69e6a2: 53 push %rbx 0.00 : 69e6a3: 48 89 f3 mov %rsi,%rbx 0.00 : 69e6a6: 48 81 ec c8 01 00 00 sub $0x1c8,%rsp : : /* : * Initialize globals (already done if under postmaster, but not if : * standalone). : */ : if (!IsUnderPostmaster) 0.00 : 69e6ad: 80 3d 09 ba 51 00 00 cmpb $0x0,0x51ba09(%rip) # bba0bd : */ : void : PostgresMain(int argc, char *argv[], : const char *dbname, : const char *username) : { 0.00 : 69e6b4: 48 89 95 78 fe ff ff mov %rdx,-0x188(%rbp) : int firstchar; : StringInfoData input_message; : sigjmp_buf local_sigjmp_buf; : volatile bool send_ready_for_query = true; 0.00 : 69e6bb: c6 45 cf 01 movb $0x1,-0x31(%rbp) : : /* : * Initialize globals (already done if under postmaster, but not if : * standalone). : */ : if (!IsUnderPostmaster) 0.00 : 69e6bf: 0f 84 c3 07 00 00 je 69ee88 : } : : SetProcessingMode(InitProcessing); : : /* Compute paths, if we didn't inherit them from postmaster */ : if (my_exec_path[0] == '\0') 0.00 : 69e6c5: 80 3d 34 16 52 00 00 cmpb $0x0,0x521634(%rip) # bbfd00 : MyProcPid = getpid(); : : MyStartTime = time(NULL); : } : : SetProcessingMode(InitProcessing); 0.00 : 69e6cc: c7 05 66 a4 4c 00 01 movl $0x1,0x4ca466(%rip) # b68b3c 0.00 : 69e6d3: 00 00 00 : : /* Compute paths, if we didn't inherit them from postmaster */ : if (my_exec_path[0] == '\0') 0.00 : 69e6d6: 0f 84 65 07 00 00 je 69ee41 : if (find_my_exec(argv[0], my_exec_path) < 0) : elog(FATAL, "%s: could not locate my own executable path", : argv[0]); : } : : if (pkglib_path[0] == '\0') 0.00 : 69e6dc: 80 3d 1d 1a 52 00 00 cmpb $0x0,0x521a1d(%rip) # bc0100 0.00 : 69e6e3: 0f 84 9c 08 00 00 je 69ef85 : get_pkglib_path(my_exec_path, pkglib_path); : : /* : * Set default values for command-line options. : */ : if (!IsUnderPostmaster) 0.00 : 69e6e9: 80 3d cd b9 51 00 00 cmpb $0x0,0x51b9cd(%rip) # bba0bd 0.00 : 69e6f0: 0f 84 82 08 00 00 je 69ef78 : InitializeGUCOptions(); : : /* : * Parse command-line options. : */ : process_postgres_switches(argc, argv, PGC_POSTMASTER, &dbname); 0.00 : 69e6f6: 48 8d 8d 78 fe ff ff lea -0x188(%rbp),%rcx 0.00 : 69e6fd: ba 01 00 00 00 mov $0x1,%edx 0.00 : 69e702: 48 89 de mov %rbx,%rsi 0.00 : 69e705: 44 89 e7 mov %r12d,%edi 0.00 : 69e708: e8 b3 d4 ff ff callq 69bbc0 : : /* Must have gotten a database name, or have a default (the username) */ : if (dbname == NULL) 0.00 : 69e70d: 48 83 bd 78 fe ff ff cmpq $0x0,-0x188(%rbp) 0.00 : 69e714: 00 0.00 : 69e715: 0f 84 55 0f 00 00 je 69f670 : errmsg("%s: no database nor user name specified", : progname))); : } : : /* Acquire configuration parameters, unless inherited from postmaster */ : if (!IsUnderPostmaster) 0.00 : 69e71b: 80 3d 9b b9 51 00 00 cmpb $0x0,0x51b99b(%rip) # bba0bd 0.00 : 69e722: 0f 84 27 08 00 00 je 69ef4f : * handler to non-SIG_IGN, it'll get dropped. Instead, make a dummy : * handler in the postmaster to reserve the signal. (Of course, this isn't : * an issue for signals that are locally generated, such as SIGALRM and : * SIGPIPE.) : */ : if (am_walsender) 0.00 : 69e728: 80 3d 91 e6 4d 00 00 cmpb $0x0,0x4de691(%rip) # b7cdc0 0.00 : 69e72f: 0f 84 ee 05 00 00 je 69ed23 : WalSndSignals(); 0.00 : 69e735: e8 26 25 fc ff callq 660c60 : */ : pqsignal(SIGCHLD, SIG_DFL); /* system() requires this on some : * platforms */ : } : : pqinitmask(); 0.00 : 69e73a: e8 61 f2 f3 ff callq 5dd9a0 : : if (IsUnderPostmaster) 0.00 : 69e73f: 80 3d 77 b9 51 00 00 cmpb $0x0,0x51b977(%rip) # bba0bd 0.00 : 69e746: 0f 85 7f 06 00 00 jne 69edcb : { : /* We allow SIGQUIT (quickdie) at all times */ : sigdelset(&BlockSig, SIGQUIT); : } : : PG_SETMASK(&BlockSig); /* block everything except SIGQUIT */ 0.00 : 69e74c: 31 d2 xor %edx,%edx 0.00 : 69e74e: be c0 f8 bb 00 mov $0xbbf8c0,%esi 0.00 : 69e753: bf 02 00 00 00 mov $0x2,%edi 0.00 : 69e758: e8 63 b3 dc ff callq 469ac0 : : if (!IsUnderPostmaster) 0.00 : 69e75d: 80 3d 59 b9 51 00 00 cmpb $0x0,0x51b959(%rip) # bba0bd 0.00 : 69e764: 0f 84 c3 07 00 00 je 69ef2d : /* Initialize MaxBackends (if under postmaster, was done already) */ : InitializeMaxBackends(); : } : : /* Early initialization */ : BaseInit(); 0.00 : 69e76a: e8 d1 80 0e 00 callq 786840 : */ : #ifdef EXEC_BACKEND : if (!IsUnderPostmaster) : InitProcess(); : #else : InitProcess(); 0.00 : 69e76f: e8 6c ee fe ff callq 68d5e0 : #endif : : /* We need to allow SIGINT, etc during the initial transaction */ : PG_SETMASK(&UnBlockSig); 0.00 : 69e774: 31 d2 xor %edx,%edx 0.00 : 69e776: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 69e77b: bf 02 00 00 00 mov $0x2,%edi 0.00 : 69e780: e8 3b b3 dc ff callq 469ac0 : * : * NOTE: if you are tempted to add code in this vicinity, consider putting : * it inside InitPostgres() instead. In particular, anything that : * involves database access should be there, not here. : */ : InitPostgres(dbname, InvalidOid, username, NULL); 0.00 : 69e785: 48 8b bd 78 fe ff ff mov -0x188(%rbp),%rdi 0.00 : 69e78c: 31 c9 xor %ecx,%ecx 0.00 : 69e78e: 31 f6 xor %esi,%esi 0.00 : 69e790: 4c 89 ea mov %r13,%rdx 0.00 : 69e793: e8 98 82 0e 00 callq 786a30 : * need it anymore after InitPostgres completes. Note this does not trash : * *MyProcPort, because ConnCreate() allocated that space with malloc() : * ... else we'd need to copy the Port data first. Also, subsidiary data : * such as the username isn't lost either; see ProcessStartupPacket(). : */ : if (PostmasterContext) 0.00 : 69e798: 48 8b 3d d9 c0 51 00 mov 0x51c0d9(%rip),%rdi # bba878 0.00 : 69e79f: 48 85 ff test %rdi,%rdi 0.00 : 69e7a2: 74 10 je 69e7b4 : { : MemoryContextDelete(PostmasterContext); 0.00 : 69e7a4: e8 f7 a3 0f 00 callq 798ba0 : PostmasterContext = NULL; 0.00 : 69e7a9: 48 c7 05 c4 c0 51 00 movq $0x0,0x51c0c4(%rip) # bba878 0.00 : 69e7b0: 00 00 00 00 : } : : SetProcessingMode(NormalProcessing); 0.00 : 69e7b4: c7 05 7e a3 4c 00 02 movl $0x2,0x4ca37e(%rip) # b68b3c 0.00 : 69e7bb: 00 00 00 : : /* : * Now all GUC states are fully set up. Report them to client if : * appropriate. : */ : BeginReportingGUCOptions(); 0.00 : 69e7be: e8 1d 24 0f 00 callq 790be0 : : /* : * Also set up handler to log session end; we have to wait till now to be : * sure Log_disconnections has its final value. : */ : if (IsUnderPostmaster && Log_disconnections) 0.00 : 69e7c3: 80 3d f3 b8 51 00 00 cmpb $0x0,0x51b8f3(%rip) # bba0bd 0.00 : 69e7ca: 74 0d je 69e7d9 0.00 : 69e7cc: 80 3d 0d 00 4e 00 00 cmpb $0x0,0x4e000d(%rip) # b7e7e0 0.00 : 69e7d3: 0f 85 a9 08 00 00 jne 69f082 : on_proc_exit(log_disconnections, 0); : : /* Perform initialization specific to a WAL sender process. */ : if (am_walsender) 0.00 : 69e7d9: 80 3d e0 e5 4d 00 00 cmpb $0x0,0x4de5e0(%rip) # b7cdc0 0.00 : 69e7e0: 0f 85 c0 06 00 00 jne 69eea6 : : /* : * process any libraries that should be preloaded at backend start (this : * likewise can't be done until GUC settings are complete) : */ : process_session_preload_libraries(); 0.00 : 69e7e6: e8 c5 6a 0e 00 callq 7852b0 : : /* : * Send this backend's cancellation info to the frontend. : */ : if (whereToSendOutput == DestRemote && 0.00 : 69e7eb: 83 3d b6 9f 4c 00 02 cmpl $0x2,0x4c9fb6(%rip) # b687a8 0.00 : 69e7f2: 0f 84 c5 06 00 00 je 69eebd : pq_endmessage(&buf); : /* Need not flush since ReadyForQuery will do it. */ : } : : /* Welcome banner for standalone case */ : if (whereToSendOutput == DestDebug) 0.00 : 69e7f8: 83 3d a9 9f 4c 00 01 cmpl $0x1,0x4c9fa9(%rip) # b687a8 0.00 : 69e7ff: 0f 84 12 07 00 00 je 69ef17 : * Create the memory context we will use in the main loop. : * : * MessageContext is reset once per iteration of the main loop, ie, upon : * completion of processing of each command message from the client. : */ : MessageContext = AllocSetContextCreate(TopMemoryContext, 0.00 : 69e805: 48 8b 3d 5c c0 51 00 mov 0x51c05c(%rip),%rdi # bba868 0.00 : 69e80c: 31 d2 xor %edx,%edx 0.00 : 69e80e: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 69e814: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 69e819: be a7 eb 8a 00 mov $0x8aeba7,%esi 0.00 : 69e81e: e8 6d 97 0f 00 callq 797f90 : ALLOCSET_DEFAULT_MAXSIZE); : : /* : * Remember stand-alone backend startup time : */ : if (!IsUnderPostmaster) 0.00 : 69e823: 80 3d 93 b8 51 00 00 cmpb $0x0,0x51b893(%rip) # bba0bd : * Create the memory context we will use in the main loop. : * : * MessageContext is reset once per iteration of the main loop, ie, upon : * completion of processing of each command message from the client. : */ : MessageContext = AllocSetContextCreate(TopMemoryContext, 0.00 : 69e82a: 48 89 05 57 c0 51 00 mov %rax,0x51c057(%rip) # bba888 : ALLOCSET_DEFAULT_MAXSIZE); : : /* : * Remember stand-alone backend startup time : */ : if (!IsUnderPostmaster) 0.00 : 69e831: 0f 84 0f 08 00 00 je 69f046 : * where that leaves the signal blocked. It's not redundant with the : * unblock in AbortTransaction() because the latter is only called if we : * were inside a transaction. : */ : : if (sigsetjmp(local_sigjmp_buf, 1) != 0) 0.00 : 69e837: 48 8d bd 80 fe ff ff lea -0x180(%rbp),%rdi 0.00 : 69e83e: be 01 00 00 00 mov $0x1,%esi 0.00 : 69e843: e8 08 b8 dc ff callq 46a050 <__sigsetjmp@plt> 0.00 : 69e848: 85 c0 test %eax,%eax 0.00 : 69e84a: 0f 85 49 07 00 00 jne 69ef99 : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; : : if (!ignore_till_sync) 0.00 : 69e850: 80 3d b3 ff 4d 00 00 cmpb $0x0,0x4dffb3(%rip) # b7e80a : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; 0.00 : 69e857: 48 8d 85 80 fe ff ff lea -0x180(%rbp),%rax 0.00 : 69e85e: 48 89 05 e3 ad 51 00 mov %rax,0x51ade3(%rip) # bb9648 : : if (!ignore_till_sync) 0.00 : 69e865: 75 04 jne 69e86b : send_ready_for_query = true; /* initially, or after error */ 0.00 : 69e867: c6 45 cf 01 movb $0x1,-0x31(%rbp) : * query input buffer in the cleared MessageContext. : */ : MemoryContextSwitchTo(MessageContext); : MemoryContextResetAndDeleteChildren(MessageContext); : : initStringInfo(&input_message); 0.00 : 69e86b: 4c 8d 6d b0 lea -0x50(%rbp),%r13 : { : /* : * At top of loop, reset extended-query-message flag, so that any : * errors encountered in "idle" state don't provoke skip. : */ : doing_extended_query_message = false; 0.00 : 69e86f: 45 31 f6 xor %r14d,%r14d 0.00 : 69e872: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 69e878: 48 8b 3d 09 c0 51 00 mov 0x51c009(%rip),%rdi # bba888 0.00 : 69e87f: 44 88 35 83 ff 4d 00 mov %r14b,0x4dff83(%rip) # b7e809 0.00 : 69e886: 48 89 3d d3 bf 51 00 mov %rdi,0x51bfd3(%rip) # bba860 : /* : * Release storage left over from prior query cycle, and create a new : * query input buffer in the cleared MessageContext. : */ : MemoryContextSwitchTo(MessageContext); : MemoryContextResetAndDeleteChildren(MessageContext); 0.00 : 69e88d: e8 7e a3 0f 00 callq 798c10 : : initStringInfo(&input_message); 0.00 : 69e892: 4c 89 ef mov %r13,%rdi 0.00 : 69e895: e8 46 36 f3 ff callq 5d1ee0 : * those every time through the message loop because it'd slow down : * processing of batched messages, and because we don't want to report : * uncommitted updates (that confuses autovacuum). The notification : * processor wants a call too, if we are not in a transaction block. : */ : if (send_ready_for_query) 0.00 : 69e89a: 0f b6 45 cf movzbl -0x31(%rbp),%eax 0.00 : 69e89e: 84 c0 test %al,%al 0.00 : 69e8a0: 0f 85 0a 02 00 00 jne 69eab0 : static int : ReadCommand(StringInfo inBuf) : { : int result; : : if (whereToSendOutput == DestRemote) 0.00 : 69e8a6: 83 3d fb 9e 4c 00 02 cmpl $0x2,0x4c9efb(%rip) # b687a8 : * (2) Allow asynchronous signals to be executed immediately if they : * come in while we are waiting for client input. (This must be : * conditional since we don't want, say, reads on behalf of COPY FROM : * STDIN doing the same thing.) : */ : DoingCommandRead = true; 0.00 : 69e8ad: c6 05 54 ff 4d 00 01 movb $0x1,0x4dff54(%rip) # b7e808 : static int : ReadCommand(StringInfo inBuf) : { : int result; : : if (whereToSendOutput == DestRemote) 0.00 : 69e8b4: 0f 84 9e 01 00 00 je 69ea58 : bool backslashSeen = false; /* have we seen a \ ? */ : : /* : * display a prompt and obtain input from the user : */ : printf("backend> "); 0.00 : 69e8ba: bf e8 eb 8a 00 mov $0x8aebe8,%edi 0.00 : 69e8bf: 44 89 f0 mov %r14d,%eax : fflush(stdout); : : resetStringInfo(inBuf); : : if (UseNewLine) 0.00 : 69e8c2: 44 89 f3 mov %r14d,%ebx : bool backslashSeen = false; /* have we seen a \ ? */ : : /* : * display a prompt and obtain input from the user : */ : printf("backend> "); 0.00 : 69e8c5: e8 26 ab dc ff callq 4693f0 : fflush(stdout); 0.00 : 69e8ca: 48 8b 3d 9f 41 4d 00 mov 0x4d419f(%rip),%rdi # b72a70 0.00 : 69e8d1: e8 ea b8 dc ff callq 46a1c0 : : resetStringInfo(inBuf); 0.00 : 69e8d6: 4c 89 ef mov %r13,%rdi 0.00 : 69e8d9: e8 42 32 f3 ff callq 5d1b20 : : if (UseNewLine) 0.00 : 69e8de: 44 8b 1d cb 9e 4c 00 mov 0x4c9ecb(%rip),%r11d # b687b0 0.00 : 69e8e5: 45 85 db test %r11d,%r11d 0.00 : 69e8e8: 0f 85 ef 00 00 00 jne 69e9dd 0.00 : 69e8ee: eb 0b jmp 69e8fb : { : /* : * otherwise read characters until EOF. : */ : while ((c = interactive_getc()) != EOF) : appendStringInfoChar(inBuf, (char) c); 0.00 : 69e8f0: 0f be f0 movsbl %al,%esi 0.00 : 69e8f3: 4c 89 ef mov %r13,%rdi 0.00 : 69e8f6: e8 95 33 f3 ff callq 5d1c90 : else : { : /* : * otherwise read characters until EOF. : */ : while ((c = interactive_getc()) != EOF) 0.00 : 69e8fb: e8 60 fd ff ff callq 69e660 0.00 : 69e900: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 69e903: 75 eb jne 69e8f0 : appendStringInfoChar(inBuf, (char) c); : : /* No input before EOF signal means time to quit. */ : if (inBuf->len == 0) 0.00 : 69e905: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 69e909: 45 85 d2 test %r10d,%r10d 0.00 : 69e90c: 0f 84 f5 00 00 00 je 69ea07 : /* : * otherwise we have a user query so process it. : */ : : /* Add '\0' to make it look the same as message case. */ : appendStringInfoChar(inBuf, (char) '\0'); 0.00 : 69e912: 31 f6 xor %esi,%esi 0.00 : 69e914: 4c 89 ef mov %r13,%rdi 0.00 : 69e917: e8 74 33 f3 ff callq 5d1c90 : : /* : * if the query echo flag was given, print the query.. : */ : if (EchoQuery) 0.00 : 69e91c: 80 3d ed fe 4d 00 00 cmpb $0x0,0x4dfeed(%rip) # b7e810 0.00 : 69e923: 74 11 je 69e936 : printf("statement: %s\n", inBuf->data); 0.00 : 69e925: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 69e929: bf f2 eb 8a 00 mov $0x8aebf2,%edi 0.00 : 69e92e: 44 89 f0 mov %r14d,%eax 0.00 : 69e931: e8 ba aa dc ff callq 4693f0 : fflush(stdout); 0.00 : 69e936: 48 8b 3d 33 41 4d 00 mov 0x4d4133(%rip),%rdi # b72a70 0.00 : 69e93d: 41 bc 51 00 00 00 mov $0x51,%r12d 0.00 : 69e943: e8 78 b8 dc ff callq 46a1c0 0.00 : 69e948: bb 01 00 00 00 mov $0x1,%ebx : : /* : * (5) check for any other interesting events that happened while we : * slept. : */ : if (got_SIGHUP) 0.00 : 69e94d: 8b 05 b9 fe 4d 00 mov 0x4dfeb9(%rip),%eax # b7e80c : firstchar = ReadCommand(&input_message); : : /* : * (4) disable async signal conditions again. : */ : DoingCommandRead = false; 0.00 : 69e953: 44 88 35 ae fe 4d 00 mov %r14b,0x4dfeae(%rip) # b7e808 : : /* : * (5) check for any other interesting events that happened while we : * slept. : */ : if (got_SIGHUP) 0.00 : 69e95a: 85 c0 test %eax,%eax 0.00 : 69e95c: 0f 85 c3 00 00 00 jne 69ea25 : : /* : * (6) process the command. But ignore it if we're skipping till : * Sync. : */ : if (ignore_till_sync && firstchar != EOF) 0.00 : 69e962: 80 3d a1 fe 4d 00 00 cmpb $0x0,0x4dfea1(%rip) # b7e80a 0.00 : 69e969: 0f 85 d7 00 00 00 jne 69ea46 : continue; : : switch (firstchar) 0.00 : 69e96f: 41 8d 44 24 01 lea 0x1(%r12),%eax 0.00 : 69e974: 83 f8 67 cmp $0x67,%eax 0.00 : 69e977: 0f 86 53 03 00 00 jbe 69ecd0 : * is still sending data. : */ : break; : : default: : ereport(FATAL, 0.00 : 69e97d: 45 31 c0 xor %r8d,%r8d 0.00 : 69e980: b9 5a ff 8a 00 mov $0x8aff5a,%ecx 0.00 : 69e985: ba 99 10 00 00 mov $0x1099,%edx 0.00 : 69e98a: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69e98f: bf 15 00 00 00 mov $0x15,%edi 0.00 : 69e994: e8 27 c1 0d 00 callq 77aac0 0.00 : 69e999: 84 c0 test %al,%al 0.00 : 69e99b: 0f 84 02 01 00 00 je 69eaa3 0.00 : 69e9a1: 44 89 e6 mov %r12d,%esi 0.00 : 69e9a4: bf d8 f6 8a 00 mov $0x8af6d8,%edi 0.00 : 69e9a9: 31 c0 xor %eax,%eax 0.00 : 69e9ab: e8 f0 de 0d 00 callq 77c8a0 0.00 : 69e9b0: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 69e9b5: 89 c3 mov %eax,%ebx 0.00 : 69e9b7: e9 b1 06 00 00 jmpq 69f06d 0.00 : 69e9bc: 0f 1f 40 00 nopl 0x0(%rax) : */ : while ((c = interactive_getc()) != EOF) : { : if (c == '\n') : { : if (backslashSeen) 0.00 : 69e9c0: 84 db test %bl,%bl 0.00 : 69e9c2: 0f 84 c0 02 00 00 je 69ec88 : { : /* discard backslash from inBuf */ : inBuf->data[--inBuf->len] = '\0'; 0.00 : 69e9c8: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 69e9cb: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 69e9cf: 31 db xor %ebx,%ebx 0.00 : 69e9d1: 83 e8 01 sub $0x1,%eax 0.00 : 69e9d4: 89 45 b8 mov %eax,-0x48(%rbp) 0.00 : 69e9d7: 48 98 cltq 0.00 : 69e9d9: c6 04 02 00 movb $0x0,(%rdx,%rax,1) : { : /* : * if we are using \n as a delimiter, then read characters until the : * \n. : */ : while ((c = interactive_getc()) != EOF) 0.00 : 69e9dd: e8 7e fc ff ff callq 69e660 0.00 : 69e9e2: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 69e9e5: 74 20 je 69ea07 : { : if (c == '\n') 0.00 : 69e9e7: 83 f8 0a cmp $0xa,%eax 0.00 : 69e9ea: 74 d4 je 69e9c0 : continue; : } : else : { : /* keep the newline character */ : appendStringInfoChar(inBuf, '\n'); 0.00 : 69e9ec: 83 f8 5c cmp $0x5c,%eax : else if (c == '\\') : backslashSeen = true; : else : backslashSeen = false; : : appendStringInfoChar(inBuf, (char) c); 0.00 : 69e9ef: 0f be f0 movsbl %al,%esi 0.00 : 69e9f2: 4c 89 ef mov %r13,%rdi : continue; : } : else : { : /* keep the newline character */ : appendStringInfoChar(inBuf, '\n'); 0.00 : 69e9f5: 0f 94 c3 sete %bl : else if (c == '\\') : backslashSeen = true; : else : backslashSeen = false; : : appendStringInfoChar(inBuf, (char) c); 0.00 : 69e9f8: e8 93 32 f3 ff callq 5d1c90 : { : /* : * if we are using \n as a delimiter, then read characters until the : * \n. : */ : while ((c = interactive_getc()) != EOF) 0.00 : 69e9fd: e8 5e fc ff ff callq 69e660 0.00 : 69ea02: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 69ea05: 75 e0 jne 69e9e7 : : /* : * (5) check for any other interesting events that happened while we : * slept. : */ : if (got_SIGHUP) 0.00 : 69ea07: 8b 05 ff fd 4d 00 mov 0x4dfdff(%rip),%eax # b7e80c : * Can't send DEBUG log messages to client at this : * point.Since we're disconnecting right away, we : * don't need to restore whereToSendOutput. : */ : whereToSendOutput = DestNone; : ereport(DEBUG1, 0.00 : 69ea0d: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 69ea13: 44 89 f3 mov %r14d,%ebx : firstchar = ReadCommand(&input_message); : : /* : * (4) disable async signal conditions again. : */ : DoingCommandRead = false; 0.00 : 69ea16: 44 88 35 eb fd 4d 00 mov %r14b,0x4dfdeb(%rip) # b7e808 : : /* : * (5) check for any other interesting events that happened while we : * slept. : */ : if (got_SIGHUP) 0.00 : 69ea1d: 85 c0 test %eax,%eax 0.00 : 69ea1f: 0f 84 3d ff ff ff je 69e962 : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); 0.00 : 69ea25: bf 02 00 00 00 mov $0x2,%edi : * (5) check for any other interesting events that happened while we : * slept. : */ : if (got_SIGHUP) : { : got_SIGHUP = false; 0.00 : 69ea2a: c7 05 d8 fd 4d 00 00 movl $0x0,0x4dfdd8(%rip) # b7e80c 0.00 : 69ea31: 00 00 00 : ProcessConfigFile(PGC_SIGHUP); 0.00 : 69ea34: e8 c7 5d 0f 00 callq 794800 : : /* : * (6) process the command. But ignore it if we're skipping till : * Sync. : */ : if (ignore_till_sync && firstchar != EOF) 0.00 : 69ea39: 80 3d ca fd 4d 00 00 cmpb $0x0,0x4dfdca(%rip) # b7e80a 0.00 : 69ea40: 0f 84 29 ff ff ff je 69e96f 0.00 : 69ea46: 84 db test %bl,%bl 0.00 : 69ea48: 0f 85 2a fe ff ff jne 69e878 0.00 : 69ea4e: 66 90 xchg %ax,%ax 0.00 : 69ea50: e9 1a ff ff ff jmpq 69e96f 0.00 : 69ea55: 0f 1f 00 nopl (%rax) 0.00 : 69ea58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 69ea5f: 00 : int qtype; : : /* : * Get message type code from the frontend. : */ : qtype = pq_getbyte(); 0.00 : 69ea60: e8 8b d6 f3 ff callq 5dc0f0 : : if (qtype == EOF) /* frontend disconnected */ 0.00 : 69ea65: 83 f8 ff cmp $0xffffffff,%eax : int qtype; : : /* : * Get message type code from the frontend. : */ : qtype = pq_getbyte(); 0.00 : 69ea68: 41 89 c4 mov %eax,%r12d : : if (qtype == EOF) /* frontend disconnected */ 0.00 : 69ea6b: 0f 84 68 02 00 00 je 69ecd9 : * we used garbage as a length word. : * : * This also gives us a place to set the doing_extended_query_message flag : * as soon as possible. : */ : switch (qtype) 0.00 : 69ea71: 41 8d 44 24 be lea -0x42(%r12),%eax 0.00 : 69ea76: 83 f8 24 cmp $0x24,%eax 0.00 : 69ea79: 0f 86 91 00 00 00 jbe 69eb10 : /* : * Otherwise we got garbage from the frontend. We treat this as : * fatal because we have probably lost message boundary sync, and : * there's no good way to recover. : */ : ereport(FATAL, 0.00 : 69ea7f: 45 31 c0 xor %r8d,%r8d 0.00 : 69ea82: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69ea87: ba c4 01 00 00 mov $0x1c4,%edx 0.00 : 69ea8c: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69ea91: bf 15 00 00 00 mov $0x15,%edi 0.00 : 69ea96: e8 25 c0 0d 00 callq 77aac0 0.00 : 69ea9b: 84 c0 test %al,%al 0.00 : 69ea9d: 0f 85 b4 05 00 00 jne 69f057 : * is still sending data. : */ : break; : : default: : ereport(FATAL, 0.00 : 69eaa3: e8 28 aa dc ff callq 4694d0 0.00 : 69eaa8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 69eaaf: 00 : * uncommitted updates (that confuses autovacuum). The notification : * processor wants a call too, if we are not in a transaction block. : */ : if (send_ready_for_query) : { : if (IsAbortedTransactionBlockState()) 0.00 : 69eab0: e8 ab 20 e2 ff callq 4c0b60 0.00 : 69eab5: 84 c0 test %al,%al 0.00 : 69eab7: 74 2f je 69eae8 : { : set_ps_display("idle in transaction (aborted)", false); 0.00 : 69eab9: 31 f6 xor %esi,%esi 0.00 : 69eabb: bf b6 eb 8a 00 mov $0x8aebb6,%edi 0.00 : 69eac0: e8 2b 71 0f 00 callq 795bf0 : pgstat_report_activity(STATE_IDLEINTRANSACTION_ABORTED, NULL); 0.00 : 69eac5: 31 f6 xor %esi,%esi 0.00 : 69eac7: bf 05 00 00 00 mov $0x5,%edi 0.00 : 69eacc: e8 8f 17 fa ff callq 640260 : : set_ps_display("idle", false); : pgstat_report_activity(STATE_IDLE, NULL); : } : : ReadyForQuery(whereToSendOutput); 0.00 : 69ead1: 8b 3d d1 9c 4c 00 mov 0x4c9cd1(%rip),%edi # b687a8 0.00 : 69ead7: e8 14 b2 ff ff callq 699cf0 : send_ready_for_query = false; 0.00 : 69eadc: 44 88 75 cf mov %r14b,-0x31(%rbp) 0.00 : 69eae0: e9 c1 fd ff ff jmpq 69e8a6 0.00 : 69eae5: 0f 1f 00 nopl (%rax) : if (IsAbortedTransactionBlockState()) : { : set_ps_display("idle in transaction (aborted)", false); : pgstat_report_activity(STATE_IDLEINTRANSACTION_ABORTED, NULL); : } : else if (IsTransactionOrTransactionBlock()) 0.00 : 69eae8: e8 f3 21 e2 ff callq 4c0ce0 0.00 : 69eaed: 84 c0 test %al,%al 0.00 : 69eaef: 90 nop 0.00 : 69eaf0: 0f 84 aa 01 00 00 je 69eca0 : { : set_ps_display("idle in transaction", false); 0.00 : 69eaf6: 31 f6 xor %esi,%esi 0.00 : 69eaf8: bf d4 eb 8a 00 mov $0x8aebd4,%edi 0.00 : 69eafd: e8 ee 70 0f 00 callq 795bf0 : pgstat_report_activity(STATE_IDLEINTRANSACTION, NULL); 0.00 : 69eb02: 31 f6 xor %esi,%esi 0.00 : 69eb04: bf 03 00 00 00 mov $0x3,%edi 0.00 : 69eb09: e8 52 17 fa ff callq 640260 0.00 : 69eb0e: eb c1 jmp 69ead1 : * we used garbage as a length word. : * : * This also gives us a place to set the doing_extended_query_message flag : * as soon as possible. : */ : switch (qtype) 0.00 : 69eb10: 89 c0 mov %eax,%eax 0.00 : 69eb12: ff 24 c5 e8 fa 8a 00 jmpq *0x8afae8(,%rax,8) : case 'd': /* copy data */ : case 'c': /* copy done */ : case 'f': /* copy fail */ : doing_extended_query_message = false; : /* these are only legal in protocol 3 */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69eb19: 66 83 3d c1 11 52 00 cmpw $0x2,0x5211c1(%rip) # bbfce2 0.00 : 69eb20: 02 : break; : : case 'd': /* copy data */ : case 'c': /* copy done */ : case 'f': /* copy fail */ : doing_extended_query_message = false; 0.00 : 69eb21: 44 88 35 e1 fc 4d 00 mov %r14b,0x4dfce1(%rip) # b7e809 : /* these are only legal in protocol 3 */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69eb28: 0f 86 b2 10 00 00 jbe 69fbe0 : * after the type code; we can read the message contents independently of : * the type. : */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) : { : if (pq_getmessage(inBuf, 0)) 0.00 : 69eb2e: 31 f6 xor %esi,%esi 0.00 : 69eb30: 4c 89 ef mov %r13,%rdi 0.00 : 69eb33: e8 c8 d2 f3 ff callq 5dbe00 0.00 : 69eb38: 85 c0 test %eax,%eax 0.00 : 69eb3a: 0f 84 08 fe ff ff je 69e948 0.00 : 69eb40: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 69eb46: e9 d0 01 00 00 jmpq 69ed1b : /* we let fastpath.c cope with old-style input of this */ : doing_extended_query_message = false; : break; : : case 'X': /* terminate */ : doing_extended_query_message = false; 0.00 : 69eb4b: 44 88 35 b7 fc 4d 00 mov %r14b,0x4dfcb7(%rip) # b7e809 : ignore_till_sync = false; 0.00 : 69eb52: 44 88 35 b1 fc 4d 00 mov %r14b,0x4dfcb1(%rip) # b7e80a : /* : * In protocol version 3, all frontend messages have a length word next : * after the type code; we can read the message contents independently of : * the type. : */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) 0.00 : 69eb59: 66 83 3d 81 11 52 00 cmpw $0x2,0x521181(%rip) # bbfce2 0.00 : 69eb60: 02 0.00 : 69eb61: 0f 86 e1 fd ff ff jbe 69e948 0.00 : 69eb67: eb c5 jmp 69eb2e 0.00 : 69eb69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* stop any active skip-till-Sync */ : ignore_till_sync = false; : /* mark not-extended, so that a new error doesn't begin skip */ : doing_extended_query_message = false; : /* only legal in protocol 3 */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69eb70: 66 83 3d 6a 11 52 00 cmpw $0x2,0x52116a(%rip) # bbfce2 0.00 : 69eb77: 02 : errmsg("invalid frontend message type %d", qtype))); : break; : : case 'S': /* sync */ : /* stop any active skip-till-Sync */ : ignore_till_sync = false; 0.00 : 69eb78: 44 88 35 8b fc 4d 00 mov %r14b,0x4dfc8b(%rip) # b7e80a : /* mark not-extended, so that a new error doesn't begin skip */ : doing_extended_query_message = false; 0.00 : 69eb7f: 44 88 35 83 fc 4d 00 mov %r14b,0x4dfc83(%rip) # b7e809 : /* only legal in protocol 3 */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69eb86: 77 a6 ja 69eb2e : ereport(FATAL, 0.00 : 69eb88: 45 31 c0 xor %r8d,%r8d 0.00 : 69eb8b: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69eb90: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69eb95: ba ad 01 00 00 mov $0x1ad,%edx 0.00 : 69eb9a: bf 15 00 00 00 mov $0x15,%edi 0.00 : 69eb9f: e8 1c bf 0d 00 callq 77aac0 0.00 : 69eba4: 84 c0 test %al,%al 0.00 : 69eba6: be 53 00 00 00 mov $0x53,%esi 0.00 : 69ebab: 0f 84 f2 fe ff ff je 69eaa3 0.00 : 69ebb1: e9 ee fd ff ff jmpq 69e9a4 0.00 : 69ebb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69ebbd: 00 00 00 : */ : switch (qtype) : { : case 'Q': /* simple query */ : doing_extended_query_message = false; : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69ebc0: 66 83 3d 1a 11 52 00 cmpw $0x2,0x52111a(%rip) # bbfce2 0.00 : 69ebc7: 02 : * as soon as possible. : */ : switch (qtype) : { : case 'Q': /* simple query */ : doing_extended_query_message = false; 0.00 : 69ebc8: 44 88 35 3a fc 4d 00 mov %r14b,0x4dfc3a(%rip) # b7e809 : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69ebcf: 0f 87 59 ff ff ff ja 69eb2e : { : /* old style without length word; convert */ : if (pq_getstring(inBuf)) 0.00 : 69ebd5: 4c 89 ef mov %r13,%rdi 0.00 : 69ebd8: e8 43 d6 f3 ff callq 5dc220 0.00 : 69ebdd: 85 c0 test %eax,%eax 0.00 : 69ebdf: 0f 84 74 ff ff ff je 69eb59 : { : if (IsTransactionState()) 0.00 : 69ebe5: e8 56 1f e2 ff callq 4c0b40 0.00 : 69ebea: 84 c0 test %al,%al 0.00 : 69ebec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 69ebf0: 0f 85 7d 0e 00 00 jne 69fa73 : * Can't send DEBUG log messages to client at this : * point.Since we're disconnecting right away, we : * don't need to restore whereToSendOutput. : */ : whereToSendOutput = DestNone; : ereport(DEBUG1, 0.00 : 69ebf6: 45 31 c0 xor %r8d,%r8d 0.00 : 69ebf9: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69ebfe: ba 85 01 00 00 mov $0x185,%edx 0.00 : 69ec03: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69ec08: bf 0e 00 00 00 mov $0xe,%edi : /* : * Can't send DEBUG log messages to client at this : * point.Since we're disconnecting right away, we : * don't need to restore whereToSendOutput. : */ : whereToSendOutput = DestNone; 0.00 : 69ec0d: c7 05 91 9b 4c 00 00 movl $0x0,0x4c9b91(%rip) # b687a8 0.00 : 69ec14: 00 00 00 : ereport(DEBUG1, 0.00 : 69ec17: e8 a4 be 0d 00 callq 77aac0 0.00 : 69ec1c: 84 c0 test %al,%al 0.00 : 69ec1e: 0f 84 1c ff ff ff je 69eb40 0.00 : 69ec24: bf 10 e6 8a 00 mov $0x8ae610,%edi 0.00 : 69ec29: 44 89 f0 mov %r14d,%eax 0.00 : 69ec2c: e8 6f dc 0d 00 callq 77c8a0 0.00 : 69ec31: bf 00 02 00 03 mov $0x3000200,%edi 0.00 : 69ec36: 89 c3 mov %eax,%ebx 0.00 : 69ec38: e8 13 e1 0d 00 callq 77cd50 0.00 : 69ec3d: 89 de mov %ebx,%esi 0.00 : 69ec3f: 89 c7 mov %eax,%edi 0.00 : 69ec41: 44 89 f0 mov %r14d,%eax 0.00 : 69ec44: e8 97 b9 0d 00 callq 77a5e0 0.00 : 69ec49: e9 b9 fd ff ff jmpq 69ea07 0.00 : 69ec4e: 66 90 xchg %ax,%ax : } : break; : : case 'F': /* fastpath function call */ : /* we let fastpath.c cope with old-style input of this */ : doing_extended_query_message = false; 0.00 : 69ec50: 44 88 35 b2 fb 4d 00 mov %r14b,0x4dfbb2(%rip) # b7e809 0.00 : 69ec57: e9 fd fe ff ff jmpq 69eb59 : case 'E': /* execute */ : case 'H': /* flush */ : case 'P': /* parse */ : doing_extended_query_message = true; : /* these are only legal in protocol 3 */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69ec5c: 66 83 3d 7e 10 52 00 cmpw $0x2,0x52107e(%rip) # bbfce2 0.00 : 69ec63: 02 : case 'C': /* close */ : case 'D': /* describe */ : case 'E': /* execute */ : case 'H': /* flush */ : case 'P': /* parse */ : doing_extended_query_message = true; 0.00 : 69ec64: c6 05 9e fb 4d 00 01 movb $0x1,0x4dfb9e(%rip) # b7e809 : /* these are only legal in protocol 3 */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) 0.00 : 69ec6b: 0f 87 bd fe ff ff ja 69eb2e : ereport(FATAL, 0.00 : 69ec71: 45 31 c0 xor %r8d,%r8d 0.00 : 69ec74: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69ec79: ba a1 01 00 00 mov $0x1a1,%edx 0.00 : 69ec7e: e9 07 fd ff ff jmpq 69e98a 0.00 : 69ec83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : continue; : } : else : { : /* keep the newline character */ : appendStringInfoChar(inBuf, '\n'); 0.00 : 69ec88: be 0a 00 00 00 mov $0xa,%esi 0.00 : 69ec8d: 4c 89 ef mov %r13,%rdi 0.00 : 69ec90: e8 fb 2f f3 ff callq 5d1c90 0.00 : 69ec95: e9 78 fc ff ff jmpq 69e912 0.00 : 69ec9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : set_ps_display("idle in transaction", false); : pgstat_report_activity(STATE_IDLEINTRANSACTION, NULL); : } : else : { : ProcessCompletedNotifies(); 0.00 : 69eca0: e8 8b 0a eb ff callq 54f730 : pgstat_report_stat(false); 0.00 : 69eca5: 31 ff xor %edi,%edi 0.00 : 69eca7: e8 14 43 fa ff callq 642fc0 : : set_ps_display("idle", false); 0.00 : 69ecac: 31 f6 xor %esi,%esi 0.00 : 69ecae: bf 40 af 8d 00 mov $0x8daf40,%edi 0.00 : 69ecb3: e8 38 6f 0f 00 callq 795bf0 : pgstat_report_activity(STATE_IDLE, NULL); 0.00 : 69ecb8: 31 f6 xor %esi,%esi 0.00 : 69ecba: bf 01 00 00 00 mov $0x1,%edi 0.00 : 69ecbf: e8 9c 15 fa ff callq 640260 0.00 : 69ecc4: e9 08 fe ff ff jmpq 69ead1 0.00 : 69ecc9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Sync. : */ : if (ignore_till_sync && firstchar != EOF) : continue; : : switch (firstchar) 0.00 : 69ecd0: 89 c0 mov %eax,%eax 0.00 : 69ecd2: ff 24 c5 10 fc 8a 00 jmpq *0x8afc10(,%rax,8) 0.00 : 69ecd9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : qtype = pq_getbyte(); : : if (qtype == EOF) /* frontend disconnected */ : { : if (IsTransactionState()) 0.00 : 69ece0: e8 5b 1e e2 ff callq 4c0b40 0.00 : 69ece5: 84 c0 test %al,%al 0.00 : 69ece7: 0f 85 f2 00 00 00 jne 69eddf : * Can't send DEBUG log messages to client at this point. Since : * we're disconnecting right away, we don't need to restore : * whereToSendOutput. : */ : whereToSendOutput = DestNone; : ereport(DEBUG1, 0.00 : 69eced: 45 31 c0 xor %r8d,%r8d 0.00 : 69ecf0: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69ecf5: ba 61 01 00 00 mov $0x161,%edx 0.00 : 69ecfa: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69ecff: bf 0e 00 00 00 mov $0xe,%edi : /* : * Can't send DEBUG log messages to client at this point. Since : * we're disconnecting right away, we don't need to restore : * whereToSendOutput. : */ : whereToSendOutput = DestNone; 0.00 : 69ed04: c7 05 9a 9a 4c 00 00 movl $0x0,0x4c9a9a(%rip) # b687a8 0.00 : 69ed0b: 00 00 00 : ereport(DEBUG1, 0.00 : 69ed0e: e8 ad bd 0d 00 callq 77aac0 0.00 : 69ed13: 84 c0 test %al,%al 0.00 : 69ed15: 0f 85 ad 09 00 00 jne 69f6c8 0.00 : 69ed1b: 44 89 f3 mov %r14d,%ebx 0.00 : 69ed1e: e9 2a fc ff ff jmpq 69e94d : */ : if (am_walsender) : WalSndSignals(); : else : { : pqsignal(SIGHUP, SigHupHandler); /* set flag to read config 0.00 : 69ed23: be e0 b8 69 00 mov $0x69b8e0,%esi 0.00 : 69ed28: bf 01 00 00 00 mov $0x1,%edi 0.00 : 69ed2d: e8 ce dd 10 00 callq 7acb00 : * file */ : pqsignal(SIGINT, StatementCancelHandler); /* cancel current query */ 0.00 : 69ed32: be 90 c9 69 00 mov $0x69c990,%esi 0.00 : 69ed37: bf 02 00 00 00 mov $0x2,%edi 0.00 : 69ed3c: e8 bf dd 10 00 callq 7acb00 : pqsignal(SIGTERM, die); /* cancel current query and exit */ 0.00 : 69ed41: be 40 ca 69 00 mov $0x69ca40,%esi 0.00 : 69ed46: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 69ed4b: e8 b0 dd 10 00 callq 7acb00 : /* : * In a standalone backend, SIGQUIT can be generated from the keyboard : * easily, while SIGTERM cannot, so we make both signals do die() : * rather than quickdie(). : */ : if (IsUnderPostmaster) 0.00 : 69ed50: 80 3d 66 b3 51 00 00 cmpb $0x0,0x51b366(%rip) # bba0bd 0.00 : 69ed57: 0f 85 d0 00 00 00 jne 69ee2d : pqsignal(SIGQUIT, quickdie); /* hard crash time */ : else : pqsignal(SIGQUIT, die); /* cancel current query and exit */ 0.00 : 69ed5d: be 40 ca 69 00 mov $0x69ca40,%esi 0.00 : 69ed62: bf 03 00 00 00 mov $0x3,%edi 0.00 : 69ed67: e8 94 dd 10 00 callq 7acb00 : InitializeTimeouts(); /* establishes SIGALRM handler */ 0.00 : 69ed6c: e8 2f 86 0f 00 callq 7973a0 : * Ignore failure to write to frontend. Note: if frontend closes : * connection, we will notice it and exit cleanly when control next : * returns to outer loop. This seems safer than forcing exit in the : * midst of output during who-knows-what operation... : */ : pqsignal(SIGPIPE, SIG_IGN); 0.00 : 69ed71: be 01 00 00 00 mov $0x1,%esi 0.00 : 69ed76: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 69ed7b: e8 80 dd 10 00 callq 7acb00 : pqsignal(SIGUSR1, procsignal_sigusr1_handler); 0.00 : 69ed80: be 60 29 68 00 mov $0x682960,%esi 0.00 : 69ed85: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 69ed8a: e8 71 dd 10 00 callq 7acb00 : pqsignal(SIGUSR2, SIG_IGN); 0.00 : 69ed8f: be 01 00 00 00 mov $0x1,%esi 0.00 : 69ed94: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 69ed99: e8 62 dd 10 00 callq 7acb00 : pqsignal(SIGFPE, FloatExceptionHandler); 0.00 : 69ed9e: be 30 b2 69 00 mov $0x69b230,%esi 0.00 : 69eda3: bf 08 00 00 00 mov $0x8,%edi 0.00 : 69eda8: e8 53 dd 10 00 callq 7acb00 : : /* : * Reset some signals that are accepted by postmaster but not by : * backend : */ : pqsignal(SIGCHLD, SIG_DFL); /* system() requires this on some 0.00 : 69edad: 31 f6 xor %esi,%esi 0.00 : 69edaf: bf 11 00 00 00 mov $0x11,%edi 0.00 : 69edb4: e8 47 dd 10 00 callq 7acb00 : * platforms */ : } : : pqinitmask(); 0.00 : 69edb9: e8 e2 eb f3 ff callq 5dd9a0 : : if (IsUnderPostmaster) 0.00 : 69edbe: 80 3d f8 b2 51 00 00 cmpb $0x0,0x51b2f8(%rip) # bba0bd 0.00 : 69edc5: 0f 84 81 f9 ff ff je 69e74c : { : /* We allow SIGQUIT (quickdie) at all times */ : sigdelset(&BlockSig, SIGQUIT); 0.00 : 69edcb: be 03 00 00 00 mov $0x3,%esi 0.00 : 69edd0: bf c0 f8 bb 00 mov $0xbbf8c0,%edi 0.00 : 69edd5: e8 06 b2 dc ff callq 469fe0 0.00 : 69edda: e9 6d f9 ff ff jmpq 69e74c : qtype = pq_getbyte(); : : if (qtype == EOF) /* frontend disconnected */ : { : if (IsTransactionState()) : ereport(COMMERROR, 0.00 : 69eddf: 45 31 c0 xor %r8d,%r8d 0.00 : 69ede2: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69ede7: ba 56 01 00 00 mov $0x156,%edx 0.00 : 69edec: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69edf1: bf 10 00 00 00 mov $0x10,%edi 0.00 : 69edf6: e8 c5 bc 0d 00 callq 77aac0 0.00 : 69edfb: 84 c0 test %al,%al 0.00 : 69edfd: 0f 84 18 ff ff ff je 69ed1b 0.00 : 69ee03: bf 00 8c 87 00 mov $0x878c00,%edi 0.00 : 69ee08: 44 89 f0 mov %r14d,%eax 0.00 : 69ee0b: e8 90 da 0d 00 callq 77c8a0 0.00 : 69ee10: bf 00 02 00 06 mov $0x6000200,%edi 0.00 : 69ee15: 89 c3 mov %eax,%ebx : * Can't send DEBUG log messages to client at this point. Since : * we're disconnecting right away, we don't need to restore : * whereToSendOutput. : */ : whereToSendOutput = DestNone; : ereport(DEBUG1, 0.00 : 69ee17: e8 34 df 0d 00 callq 77cd50 0.00 : 69ee1c: 89 de mov %ebx,%esi 0.00 : 69ee1e: 89 c7 mov %eax,%edi 0.00 : 69ee20: 44 89 f0 mov %r14d,%eax 0.00 : 69ee23: e8 b8 b7 0d 00 callq 77a5e0 0.00 : 69ee28: e9 ee fe ff ff jmpq 69ed1b : * In a standalone backend, SIGQUIT can be generated from the keyboard : * easily, while SIGTERM cannot, so we make both signals do die() : * rather than quickdie(). : */ : if (IsUnderPostmaster) : pqsignal(SIGQUIT, quickdie); /* hard crash time */ 0.00 : 69ee2d: be f0 ca 69 00 mov $0x69caf0,%esi 0.00 : 69ee32: bf 03 00 00 00 mov $0x3,%edi 0.00 : 69ee37: e8 c4 dc 10 00 callq 7acb00 0.00 : 69ee3c: e9 2b ff ff ff jmpq 69ed6c : SetProcessingMode(InitProcessing); : : /* Compute paths, if we didn't inherit them from postmaster */ : if (my_exec_path[0] == '\0') : { : if (find_my_exec(argv[0], my_exec_path) < 0) 0.00 : 69ee41: 48 8b 3b mov (%rbx),%rdi 0.00 : 69ee44: be 00 fd bb 00 mov $0xbbfd00,%esi 0.00 : 69ee49: e8 12 f0 10 00 callq 7ade60 0.00 : 69ee4e: 85 c0 test %eax,%eax 0.00 : 69ee50: 0f 89 86 f8 ff ff jns 69e6dc : elog(FATAL, "%s: could not locate my own executable path", 0.00 : 69ee56: ba 5a ff 8a 00 mov $0x8aff5a,%edx 0.00 : 69ee5b: be e3 0d 00 00 mov $0xde3,%esi 0.00 : 69ee60: bf d0 e8 8a 00 mov $0x8ae8d0,%edi 0.00 : 69ee65: e8 b6 c5 0d 00 callq 77b420 0.00 : 69ee6a: 48 8b 13 mov (%rbx),%rdx 0.00 : 69ee6d: be 10 00 7c 00 mov $0x7c0010,%esi 0.00 : 69ee72: bf 15 00 00 00 mov $0x15,%edi 0.00 : 69ee77: 31 c0 xor %eax,%eax 0.00 : 69ee79: e8 b2 c3 0d 00 callq 77b230 0.00 : 69ee7e: e8 4d a6 dc ff callq 4694d0 0.00 : 69ee83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Initialize globals (already done if under postmaster, but not if : * standalone). : */ : if (!IsUnderPostmaster) : { : MyProcPid = getpid(); 0.00 : 69ee88: e8 c3 a8 dc ff callq 469750 : : MyStartTime = time(NULL); 0.00 : 69ee8d: 31 ff xor %edi,%edi : * Initialize globals (already done if under postmaster, but not if : * standalone). : */ : if (!IsUnderPostmaster) : { : MyProcPid = getpid(); 0.00 : 69ee8f: 89 05 4f 0e 52 00 mov %eax,0x520e4f(%rip) # bbfce4 : : MyStartTime = time(NULL); 0.00 : 69ee95: e8 06 b3 dc ff callq 46a1a0 0.00 : 69ee9a: 48 89 05 67 16 52 00 mov %rax,0x521667(%rip) # bc0508 0.00 : 69eea1: e9 1f f8 ff ff jmpq 69e6c5 : if (IsUnderPostmaster && Log_disconnections) : on_proc_exit(log_disconnections, 0); : : /* Perform initialization specific to a WAL sender process. */ : if (am_walsender) : InitWalSender(); 0.00 : 69eea6: e8 d5 4d fc ff callq 663c80 : : /* : * process any libraries that should be preloaded at backend start (this : * likewise can't be done until GUC settings are complete) : */ : process_session_preload_libraries(); 0.00 : 69eeab: e8 00 64 0e 00 callq 7852b0 : : /* : * Send this backend's cancellation info to the frontend. : */ : if (whereToSendOutput == DestRemote && 0.00 : 69eeb0: 83 3d f1 98 4c 00 02 cmpl $0x2,0x4c98f1(%rip) # b687a8 0.00 : 69eeb7: 0f 85 3b f9 ff ff jne 69e7f8 0.00 : 69eebd: 66 83 3d 1d 0e 52 00 cmpw $0x1,0x520e1d(%rip) # bbfce2 0.00 : 69eec4: 01 0.00 : 69eec5: 0f 86 2d f9 ff ff jbe 69e7f8 : PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2) : { : StringInfoData buf; : : pq_beginmessage(&buf, 'K'); 0.00 : 69eecb: 48 8d 5d 90 lea -0x70(%rbp),%rbx 0.00 : 69eecf: be 4b 00 00 00 mov $0x4b,%esi 0.00 : 69eed4: 48 89 df mov %rbx,%rdi 0.00 : 69eed7: e8 44 e5 f3 ff callq 5dd420 : pq_sendint(&buf, (int32) MyProcPid, sizeof(int32)); 0.00 : 69eedc: 8b 35 02 0e 52 00 mov 0x520e02(%rip),%esi # bbfce4 0.00 : 69eee2: ba 04 00 00 00 mov $0x4,%edx 0.00 : 69eee7: 48 89 df mov %rbx,%rdi 0.00 : 69eeea: e8 f1 e7 f3 ff callq 5dd6e0 : pq_sendint(&buf, (int32) MyCancelKey, sizeof(int32)); 0.00 : 69eeef: 8b 35 0b 16 52 00 mov 0x52160b(%rip),%esi # bc0500 0.00 : 69eef5: ba 04 00 00 00 mov $0x4,%edx 0.00 : 69eefa: 48 89 df mov %rbx,%rdi 0.00 : 69eefd: e8 de e7 f3 ff callq 5dd6e0 : pq_endmessage(&buf); 0.00 : 69ef02: 48 89 df mov %rbx,%rdi 0.00 : 69ef05: e8 d6 e4 f3 ff callq 5dd3e0 : /* Need not flush since ReadyForQuery will do it. */ : } : : /* Welcome banner for standalone case */ : if (whereToSendOutput == DestDebug) 0.00 : 69ef0a: 83 3d 97 98 4c 00 01 cmpl $0x1,0x4c9897(%rip) # b687a8 0.00 : 69ef11: 0f 85 ee f8 ff ff jne 69e805 : printf("\nPostgreSQL stand-alone backend %s\n", PG_VERSION); 0.00 : 69ef17: be 9e eb 8a 00 mov $0x8aeb9e,%esi 0.00 : 69ef1c: bf b0 f6 8a 00 mov $0x8af6b0,%edi 0.00 : 69ef21: 31 c0 xor %eax,%eax 0.00 : 69ef23: e8 c8 a4 dc ff callq 4693f0 0.00 : 69ef28: e9 d8 f8 ff ff jmpq 69e805 : /* : * Validate we have been given a reasonable-looking DataDir (if under : * postmaster, assume postmaster did this already). : */ : Assert(DataDir); : ValidatePgVersion(DataDir); 0.00 : 69ef2d: 48 8b 3d 6c b1 51 00 mov 0x51b16c(%rip),%rdi # bba0a0 0.00 : 69ef34: e8 67 64 0e 00 callq 7853a0 : : /* Change into DataDir (if under postmaster, was done already) */ : ChangeToDataDir(); 0.00 : 69ef39: e8 b2 76 0e 00 callq 7865f0 : : /* : * Create lockfile for data directory. : */ : CreateDataDirLockFile(false); 0.00 : 69ef3e: 31 ff xor %edi,%edi 0.00 : 69ef40: e8 8b 72 0e 00 callq 7861d0 : : /* Initialize MaxBackends (if under postmaster, was done already) */ : InitializeMaxBackends(); 0.00 : 69ef45: e8 66 77 0e 00 callq 7866b0 0.00 : 69ef4a: e9 1b f8 ff ff jmpq 69e76a : } : : /* Acquire configuration parameters, unless inherited from postmaster */ : if (!IsUnderPostmaster) : { : if (!SelectConfigFiles(userDoption, progname)) 0.00 : 69ef4f: 48 8b 35 6a 0a 52 00 mov 0x520a6a(%rip),%rsi # bbf9c0 0.00 : 69ef56: 48 8b 3d a3 f8 4d 00 mov 0x4df8a3(%rip),%rdi # b7e800 0.00 : 69ef5d: e8 0e 5f 0f 00 callq 794e70 0.00 : 69ef62: 84 c0 test %al,%al 0.00 : 69ef64: 0f 85 be f7 ff ff jne 69e728 : proc_exit(1); 0.00 : 69ef6a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 69ef6f: e8 ac fd fd ff callq 67ed20 0.00 : 69ef74: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Set default values for command-line options. : */ : if (!IsUnderPostmaster) : InitializeGUCOptions(); 0.00 : 69ef78: e8 23 62 0f 00 callq 7951a0 0.00 : 69ef7d: 0f 1f 00 nopl (%rax) 0.00 : 69ef80: e9 71 f7 ff ff jmpq 69e6f6 : elog(FATAL, "%s: could not locate my own executable path", : argv[0]); : } : : if (pkglib_path[0] == '\0') : get_pkglib_path(my_exec_path, pkglib_path); 0.00 : 69ef85: be 00 01 bc 00 mov $0xbc0100,%esi 0.00 : 69ef8a: bf 00 fd bb 00 mov $0xbbfd00,%edi 0.00 : 69ef8f: e8 dc d6 10 00 callq 7ac670 0.00 : 69ef94: e9 50 f7 ff ff jmpq 69e6e9 : : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 69ef99: 8b 05 f9 b0 51 00 mov 0x51b0f9(%rip),%eax # bba098 : * interrupt handler.) Note in particular that we must clear the : * statement and lock timeout indicators, to prevent any future plain : * query cancels from being misreported as timeouts in case we're : * forgetting a timeout cancel. : */ : disable_all_timeouts(false); 0.00 : 69ef9f: 31 ff xor %edi,%edi : * should be stuff that is guaranteed to apply *only* for outer-level : * error recovery, such as adjusting the FE/BE protocol status. : */ : : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; 0.00 : 69efa1: 48 c7 05 94 a6 51 00 movq $0x0,0x51a694(%rip) # bb9640 0.00 : 69efa8: 00 00 00 00 : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 69efac: 83 c0 01 add $0x1,%eax 0.00 : 69efaf: 89 05 e3 b0 51 00 mov %eax,0x51b0e3(%rip) # bba098 : * interrupt handler.) Note in particular that we must clear the : * statement and lock timeout indicators, to prevent any future plain : * query cancels from being misreported as timeouts in case we're : * forgetting a timeout cancel. : */ : disable_all_timeouts(false); 0.00 : 69efb5: e8 36 7c 0f 00 callq 796bf0 : QueryCancelPending = false; /* second to avoid race condition */ 0.00 : 69efba: c6 05 d0 b0 51 00 00 movb $0x0,0x51b0d0(%rip) # bba091 : /* : * Turn off these interrupts too. This is only needed here and not in : * other exception-catching places since these interrupts are only : * enabled while we wait for client input. : */ : DoingCommandRead = false; 0.00 : 69efc1: c6 05 40 f8 4d 00 00 movb $0x0,0x4df840(%rip) # b7e808 : DisableNotifyInterrupt(); 0.00 : 69efc8: e8 a3 fb ea ff callq 54eb70 : DisableCatchupInterrupt(); 0.00 : 69efcd: e8 0e 58 fe ff callq 6847e0 : : /* Make sure libpq is in a good state */ : pq_comm_reset(); 0.00 : 69efd2: e8 d9 cb f3 ff callq 5dbbb0 : : /* Report the error to the client and/or server log */ : EmitErrorReport(); 0.00 : 69efd7: e8 44 9c 0d 00 callq 778c20 : : /* : * Make sure debug_query_string gets reset before we possibly clobber : * the storage it points at. : */ : debug_query_string = NULL; 0.00 : 69efdc: 48 c7 05 49 0b 52 00 movq $0x0,0x520b49(%rip) # bbfb30 0.00 : 69efe3: 00 00 00 00 : : /* : * Abort the current transaction in order to recover. : */ : AbortCurrentTransaction(); 0.00 : 69efe7: e8 84 35 e2 ff callq 4c2570 : : if (am_walsender) 0.00 : 69efec: 80 3d cd dd 4d 00 00 cmpb $0x0,0x4dddcd(%rip) # b7cdc0 0.00 : 69eff3: 0f 85 e8 06 00 00 jne 69f6e1 : * need to be able to start and abort transactions while having a slot : * acquired. But we never need to hold them across top level errors, : * so releasing here is fine. There's another cleanup in ProcKill() : * ensuring we'll correctly cleanup on FATAL errors as well. : */ : if (MyReplicationSlot != NULL) 0.00 : 69eff9: 48 83 3d 3f e0 4d 00 cmpq $0x0,0x4de03f(%rip) # b7d040 0.00 : 69f000: 00 0.00 : 69f001: 74 05 je 69f008 : ReplicationSlotRelease(); 0.00 : 69f003: e8 18 cb fc ff callq 66bb20 0.00 : 69f008: 48 8b 05 59 b8 51 00 mov 0x51b859(%rip),%rax # bba868 0.00 : 69f00f: 48 89 05 4a b8 51 00 mov %rax,0x51b84a(%rip) # bba860 : /* : * Now return to normal top-level context and clear ErrorContext for : * next time. : */ : MemoryContextSwitchTo(TopMemoryContext); : FlushErrorState(); 0.00 : 69f016: e8 15 86 0d 00 callq 777630 : /* : * If we were handling an extended-query-protocol message, initiate : * skip till next Sync. This also causes us not to issue : * ReadyForQuery (until we get Sync). : */ : if (doing_extended_query_message) 0.00 : 69f01b: 80 3d e7 f7 4d 00 00 cmpb $0x0,0x4df7e7(%rip) # b7e809 0.00 : 69f022: 74 07 je 69f02b : ignore_till_sync = true; 0.00 : 69f024: c6 05 df f7 4d 00 01 movb $0x1,0x4df7df(%rip) # b7e80a : : /* We don't have a transaction command open anymore */ : xact_started = false; : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 69f02b: 8b 05 67 b0 51 00 mov 0x51b067(%rip),%eax # bba098 : */ : if (doing_extended_query_message) : ignore_till_sync = true; : : /* We don't have a transaction command open anymore */ : xact_started = false; 0.00 : 69f031: c6 05 d3 f7 4d 00 00 movb $0x0,0x4df7d3(%rip) # b7e80b : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 69f038: 83 e8 01 sub $0x1,%eax 0.00 : 69f03b: 89 05 57 b0 51 00 mov %eax,0x51b057(%rip) # bba098 0.00 : 69f041: e9 0a f8 ff ff jmpq 69e850 : : /* : * Remember stand-alone backend startup time : */ : if (!IsUnderPostmaster) : PgStartTime = GetCurrentTimestamp(); 0.00 : 69f046: e8 25 73 0a 00 callq 746370 0.00 : 69f04b: 48 89 05 5e 0c 52 00 mov %rax,0x520c5e(%rip) # bbfcb0 0.00 : 69f052: e9 e0 f7 ff ff jmpq 69e837 : /* : * Otherwise we got garbage from the frontend. We treat this as : * fatal because we have probably lost message boundary sync, and : * there's no good way to recover. : */ : ereport(FATAL, 0.00 : 69f057: bf d8 f6 8a 00 mov $0x8af6d8,%edi 0.00 : 69f05c: 44 89 e6 mov %r12d,%esi 0.00 : 69f05f: 31 c0 xor %eax,%eax 0.00 : 69f061: e8 3a d8 0d 00 callq 77c8a0 0.00 : 69f066: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 69f06b: 89 c3 mov %eax,%ebx : * is still sending data. : */ : break; : : default: : ereport(FATAL, 0.00 : 69f06d: e8 de dc 0d 00 callq 77cd50 0.00 : 69f072: 89 de mov %ebx,%esi 0.00 : 69f074: 89 c7 mov %eax,%edi 0.00 : 69f076: 31 c0 xor %eax,%eax 0.00 : 69f078: e8 63 b5 0d 00 callq 77a5e0 0.00 : 69f07d: e8 4e a4 dc ff callq 4694d0 : /* : * Also set up handler to log session end; we have to wait till now to be : * sure Log_disconnections has its final value. : */ : if (IsUnderPostmaster && Log_disconnections) : on_proc_exit(log_disconnections, 0); 0.00 : 69f082: 31 f6 xor %esi,%esi 0.00 : 69f084: bf 30 b7 69 00 mov $0x69b730,%edi 0.00 : 69f089: e8 22 fa fd ff callq 67eab0 0.00 : 69f08e: e9 46 f7 ff ff jmpq 69e7d9 : if (whereToSendOutput == DestRemote) : pq_flush(); : break; : : case 'S': /* sync */ : pq_getmsgend(&input_message); 0.00 : 69f093: 4c 89 ef mov %r13,%rdi 0.00 : 69f096: e8 85 dd f3 ff callq 5dce20 0.00 : 69f09b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : finish_xact_command(); 0.00 : 69f0a0: e8 1b c6 ff ff callq 69b6c0 : send_ready_for_query = true; 0.00 : 69f0a5: c6 45 cf 01 movb $0x1,-0x31(%rbp) 0.00 : 69f0a9: e9 ca f7 ff ff jmpq 69e878 : } : } : break; : : case 'H': /* flush */ : pq_getmsgend(&input_message); 0.00 : 69f0ae: 4c 89 ef mov %r13,%rdi 0.00 : 69f0b1: e8 6a dd f3 ff callq 5dce20 : if (whereToSendOutput == DestRemote) 0.00 : 69f0b6: 83 3d eb 96 4c 00 02 cmpl $0x2,0x4c96eb(%rip) # b687a8 0.00 : 69f0bd: 0f 85 b5 f7 ff ff jne 69e878 : pq_flush(); 0.00 : 69f0c3: e8 48 cb f3 ff callq 5dbc10 0.00 : 69f0c8: e9 ab f7 ff ff jmpq 69e878 : const char *stmt_name; : const char *query_string; : int numParams; : Oid *paramTypes = NULL; : : forbidden_in_wal_sender(firstchar); 0.00 : 69f0cd: bf 50 00 00 00 mov $0x50,%edi 0.00 : 69f0d2: e8 39 c0 ff ff callq 69b110 : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); 0.00 : 69f0d7: e8 34 24 e2 ff callq 4c1510 : : stmt_name = pq_getmsgstring(&input_message); 0.00 : 69f0dc: 4c 89 ef mov %r13,%rdi 0.00 : 69f0df: e8 ac de f3 ff callq 5dcf90 : query_string = pq_getmsgstring(&input_message); 0.00 : 69f0e4: 4c 89 ef mov %r13,%rdi : forbidden_in_wal_sender(firstchar); : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); : : stmt_name = pq_getmsgstring(&input_message); 0.00 : 69f0e7: 48 89 85 28 fe ff ff mov %rax,-0x1d8(%rbp) : query_string = pq_getmsgstring(&input_message); 0.00 : 69f0ee: e8 9d de f3 ff callq 5dcf90 : numParams = pq_getmsgint(&input_message, 2); 0.00 : 69f0f3: be 02 00 00 00 mov $0x2,%esi 0.00 : 69f0f8: 4c 89 ef mov %r13,%rdi : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); : : stmt_name = pq_getmsgstring(&input_message); : query_string = pq_getmsgstring(&input_message); 0.00 : 69f0fb: 48 89 85 30 fe ff ff mov %rax,-0x1d0(%rbp) : numParams = pq_getmsgint(&input_message, 2); 0.00 : 69f102: e8 49 e1 f3 ff callq 5dd250 : if (numParams > 0) 0.00 : 69f107: 85 c0 test %eax,%eax : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); : : stmt_name = pq_getmsgstring(&input_message); : query_string = pq_getmsgstring(&input_message); : numParams = pq_getmsgint(&input_message, 2); 0.00 : 69f109: 41 89 c7 mov %eax,%r15d : if (numParams > 0) 0.00 : 69f10c: 48 c7 85 38 fe ff ff movq $0x0,-0x1c8(%rbp) 0.00 : 69f113: 00 00 00 00 0.00 : 69f117: 7e 3c jle 69f155 : { : int i; : : paramTypes = (Oid *) palloc(numParams * sizeof(Oid)); 0.00 : 69f119: 48 63 f8 movslq %eax,%rdi 0.00 : 69f11c: 31 db xor %ebx,%ebx 0.00 : 69f11e: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 69f122: e8 29 9c 0f 00 callq 798d50 0.00 : 69f127: 48 89 85 38 fe ff ff mov %rax,-0x1c8(%rbp) 0.00 : 69f12e: 49 89 c4 mov %rax,%r12 0.00 : 69f131: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : for (i = 0; i < numParams; i++) : paramTypes[i] = pq_getmsgint(&input_message, 4); 0.00 : 69f138: be 04 00 00 00 mov $0x4,%esi 0.00 : 69f13d: 4c 89 ef mov %r13,%rdi : if (numParams > 0) : { : int i; : : paramTypes = (Oid *) palloc(numParams * sizeof(Oid)); : for (i = 0; i < numParams; i++) 0.00 : 69f140: 83 c3 01 add $0x1,%ebx : paramTypes[i] = pq_getmsgint(&input_message, 4); 0.00 : 69f143: e8 08 e1 f3 ff callq 5dd250 0.00 : 69f148: 41 89 04 24 mov %eax,(%r12) : if (numParams > 0) : { : int i; : : paramTypes = (Oid *) palloc(numParams * sizeof(Oid)); : for (i = 0; i < numParams; i++) 0.00 : 69f14c: 49 83 c4 04 add $0x4,%r12 0.00 : 69f150: 41 39 df cmp %ebx,%r15d 0.00 : 69f153: 7f e3 jg 69f138 : paramTypes[i] = pq_getmsgint(&input_message, 4); : } : pq_getmsgend(&input_message); 0.00 : 69f155: 4c 89 ef mov %r13,%rdi 0.00 : 69f158: e8 c3 dc f3 ff callq 5dce20 : : exec_parse_message(query_string, stmt_name, 0.00 : 69f15d: 48 8b 95 38 fe ff ff mov -0x1c8(%rbp),%rdx 0.00 : 69f164: 48 8b b5 28 fe ff ff mov -0x1d8(%rbp),%rsi 0.00 : 69f16b: 44 89 f9 mov %r15d,%ecx 0.00 : 69f16e: 48 8b bd 30 fe ff ff mov -0x1d0(%rbp),%rdi 0.00 : 69f175: e8 e6 ee ff ff callq 69e060 : paramTypes, numParams); : } : break; 0.00 : 69f17a: e9 f9 f6 ff ff jmpq 69e878 : case 'Q': /* simple query */ : { : const char *query_string; : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); 0.00 : 69f17f: e8 8c 23 e2 ff callq 4c1510 : : query_string = pq_getmsgstring(&input_message); 0.00 : 69f184: 4c 89 ef mov %r13,%rdi 0.00 : 69f187: e8 04 de f3 ff callq 5dcf90 : pq_getmsgend(&input_message); 0.00 : 69f18c: 4c 89 ef mov %r13,%rdi : const char *query_string; : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); : : query_string = pq_getmsgstring(&input_message); 0.00 : 69f18f: 48 89 c3 mov %rax,%rbx : pq_getmsgend(&input_message); 0.00 : 69f192: e8 89 dc f3 ff callq 5dce20 : : if (am_walsender) 0.00 : 69f197: 80 3d 22 dc 4d 00 00 cmpb $0x0,0x4ddc22(%rip) # b7cdc0 0.00 : 69f19e: 0f 84 47 05 00 00 je 69f6eb : exec_replication_command(query_string); 0.00 : 69f1a4: 48 89 df mov %rbx,%rdi 0.00 : 69f1a7: e8 54 39 fc ff callq 662b00 : } : : /* commit the function-invocation transaction */ : finish_xact_command(); : : send_ready_for_query = true; /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:4119 100.00 : 69f1ac: c6 45 cf 01 movb $0x1,-0x31(%rbp) : break; 0.00 : 69f1b0: e9 c3 f6 ff ff jmpq 69e878 : : /* : * Reset whereToSendOutput to prevent ereport from attempting : * to send any more messages to client. : */ : if (whereToSendOutput == DestRemote) 0.00 : 69f1b5: 83 3d ec 95 4c 00 02 cmpl $0x2,0x4c95ec(%rip) # b687a8 0.00 : 69f1bc: 0f 84 5c 05 00 00 je 69f71e : * Whatever you had in mind to do should be set up as an : * on_proc_exit or on_shmem_exit callback, instead. Otherwise : * it will fail to be called during other backend-shutdown : * scenarios. : */ : proc_exit(0); 0.00 : 69f1c2: 31 ff xor %edi,%edi 0.00 : 69f1c4: e8 57 fb fd ff callq 67ed20 : paramTypes, numParams); : } : break; : : case 'B': /* bind */ : forbidden_in_wal_sender(firstchar); 0.00 : 69f1c9: bf 42 00 00 00 mov $0x42,%edi 0.00 : 69f1ce: e8 3d bf ff ff callq 69b110 : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); 0.00 : 69f1d3: e8 38 23 e2 ff callq 4c1510 : : /* : * this message is complex enough that it seems best to put : * the field extraction out-of-line : */ : exec_bind_message(&input_message); 0.00 : 69f1d8: 4c 89 ef mov %r13,%rdi 0.00 : 69f1db: e8 80 db ff ff callq 69cd60 : break; 0.00 : 69f1e0: e9 93 f6 ff ff jmpq 69e878 : case 'C': /* close */ : { : int close_type; : const char *close_target; : : forbidden_in_wal_sender(firstchar); 0.00 : 69f1e5: bf 43 00 00 00 mov $0x43,%edi 0.00 : 69f1ea: e8 21 bf ff ff callq 69b110 : : close_type = pq_getmsgbyte(&input_message); 0.00 : 69f1ef: 4c 89 ef mov %r13,%rdi 0.00 : 69f1f2: e8 19 dd f3 ff callq 5dcf10 : close_target = pq_getmsgstring(&input_message); 0.00 : 69f1f7: 4c 89 ef mov %r13,%rdi : int close_type; : const char *close_target; : : forbidden_in_wal_sender(firstchar); : : close_type = pq_getmsgbyte(&input_message); 0.00 : 69f1fa: 41 89 c4 mov %eax,%r12d : close_target = pq_getmsgstring(&input_message); 0.00 : 69f1fd: e8 8e dd f3 ff callq 5dcf90 : pq_getmsgend(&input_message); 0.00 : 69f202: 4c 89 ef mov %r13,%rdi : const char *close_target; : : forbidden_in_wal_sender(firstchar); : : close_type = pq_getmsgbyte(&input_message); : close_target = pq_getmsgstring(&input_message); 0.00 : 69f205: 48 89 c3 mov %rax,%rbx : pq_getmsgend(&input_message); 0.00 : 69f208: e8 13 dc f3 ff callq 5dce20 : : switch (close_type) 0.00 : 69f20d: 41 83 fc 50 cmp $0x50,%r12d 0.00 : 69f211: 0f 84 3d 05 00 00 je 69f754 0.00 : 69f217: 41 83 fc 53 cmp $0x53,%r12d 0.00 : 69f21b: 0f 84 0c 05 00 00 je 69f72d : if (PortalIsValid(portal)) : PortalDrop(portal, false); : } : break; : default: : ereport(ERROR, 0.00 : 69f221: 45 31 c0 xor %r8d,%r8d 0.00 : 69f224: b9 5a ff 8a 00 mov $0x8aff5a,%ecx 0.00 : 69f229: ba 3d 10 00 00 mov $0x103d,%edx 0.00 : 69f22e: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69f233: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69f238: e8 83 b8 0d 00 callq 77aac0 0.00 : 69f23d: 84 c0 test %al,%al 0.00 : 69f23f: 0f 84 5e f8 ff ff je 69eaa3 0.00 : 69f245: bf 20 f7 8a 00 mov $0x8af720,%edi 0.00 : 69f24a: 44 89 e6 mov %r12d,%esi 0.00 : 69f24d: 31 c0 xor %eax,%eax 0.00 : 69f24f: e8 4c d6 0d 00 callq 77c8a0 0.00 : 69f254: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 69f259: 89 c3 mov %eax,%ebx 0.00 : 69f25b: e9 0d fe ff ff jmpq 69f06d : case 'D': /* describe */ : { : int describe_type; : const char *describe_target; : : forbidden_in_wal_sender(firstchar); 0.00 : 69f260: bf 44 00 00 00 mov $0x44,%edi 0.00 : 69f265: e8 a6 be ff ff callq 69b110 : : /* Set statement_timestamp() (needed for xact) */ : SetCurrentStatementStartTimestamp(); 0.00 : 69f26a: e8 a1 22 e2 ff callq 4c1510 : : describe_type = pq_getmsgbyte(&input_message); 0.00 : 69f26f: 4c 89 ef mov %r13,%rdi 0.00 : 69f272: e8 99 dc f3 ff callq 5dcf10 : describe_target = pq_getmsgstring(&input_message); 0.00 : 69f277: 4c 89 ef mov %r13,%rdi : forbidden_in_wal_sender(firstchar); : : /* Set statement_timestamp() (needed for xact) */ : SetCurrentStatementStartTimestamp(); : : describe_type = pq_getmsgbyte(&input_message); 0.00 : 69f27a: 89 c3 mov %eax,%ebx : describe_target = pq_getmsgstring(&input_message); 0.00 : 69f27c: e8 0f dd f3 ff callq 5dcf90 : pq_getmsgend(&input_message); 0.00 : 69f281: 4c 89 ef mov %r13,%rdi : : /* Set statement_timestamp() (needed for xact) */ : SetCurrentStatementStartTimestamp(); : : describe_type = pq_getmsgbyte(&input_message); : describe_target = pq_getmsgstring(&input_message); 0.00 : 69f284: 49 89 c7 mov %rax,%r15 : pq_getmsgend(&input_message); 0.00 : 69f287: e8 94 db f3 ff callq 5dce20 : : switch (describe_type) 0.00 : 69f28c: 83 fb 50 cmp $0x50,%ebx 0.00 : 69f28f: 0f 84 c2 05 00 00 je 69f857 0.00 : 69f295: 83 fb 53 cmp $0x53,%ebx 0.00 : 69f298: 0f 84 e9 04 00 00 je 69f787 : break; : case 'P': : exec_describe_portal_message(describe_target); : break; : default: : ereport(ERROR, 0.00 : 69f29e: 45 31 c0 xor %r8d,%r8d 0.00 : 69f2a1: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69f2a6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69f2ab: b9 5a ff 8a 00 mov $0x8aff5a,%ecx 0.00 : 69f2b0: ba 60 10 00 00 mov $0x1060,%edx 0.00 : 69f2b5: e8 06 b8 0d 00 callq 77aac0 0.00 : 69f2ba: 84 c0 test %al,%al 0.00 : 69f2bc: 89 de mov %ebx,%esi 0.00 : 69f2be: bf 48 f7 8a 00 mov $0x8af748,%edi 0.00 : 69f2c3: 0f 84 da f7 ff ff je 69eaa3 0.00 : 69f2c9: e9 db f6 ff ff jmpq 69e9a9 : case 'E': /* execute */ : { : const char *portal_name; : int max_rows; : : forbidden_in_wal_sender(firstchar); 0.00 : 69f2ce: bf 45 00 00 00 mov $0x45,%edi 0.00 : 69f2d3: e8 38 be ff ff callq 69b110 : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); 0.00 : 69f2d8: e8 33 22 e2 ff callq 4c1510 : : portal_name = pq_getmsgstring(&input_message); 0.00 : 69f2dd: 4c 89 ef mov %r13,%rdi 0.00 : 69f2e0: e8 ab dc f3 ff callq 5dcf90 : max_rows = pq_getmsgint(&input_message, 4); 0.00 : 69f2e5: be 04 00 00 00 mov $0x4,%esi 0.00 : 69f2ea: 4c 89 ef mov %r13,%rdi : forbidden_in_wal_sender(firstchar); : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); : : portal_name = pq_getmsgstring(&input_message); 0.00 : 69f2ed: 48 89 85 40 fe ff ff mov %rax,-0x1c0(%rbp) : max_rows = pq_getmsgint(&input_message, 4); 0.00 : 69f2f4: e8 57 df f3 ff callq 5dd250 : pq_getmsgend(&input_message); 0.00 : 69f2f9: 4c 89 ef mov %r13,%rdi : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); : : portal_name = pq_getmsgstring(&input_message); : max_rows = pq_getmsgint(&input_message, 4); 0.00 : 69f2fc: 89 85 24 fe ff ff mov %eax,-0x1dc(%rbp) : pq_getmsgend(&input_message); 0.00 : 69f302: e8 19 db f3 ff callq 5dce20 : bool completed; : char completionTag[COMPLETION_TAG_BUFSIZE]; : const char *sourceText; : const char *prepStmtName; : ParamListInfo portalParams; : bool save_log_statement_stats = log_statement_stats; 0.00 : 69f307: 0f b6 05 59 ae 51 00 movzbl 0x51ae59(%rip),%eax # bba167 : /* Adjust destination to tell printtup.c what to do */ : dest = whereToSendOutput; : if (dest == DestRemote) : dest = DestRemoteExecute; : : portal = GetPortalByName(portal_name); 0.00 : 69f30e: 48 8b bd 40 fe ff ff mov -0x1c0(%rbp),%rdi : bool completed; : char completionTag[COMPLETION_TAG_BUFSIZE]; : const char *sourceText; : const char *prepStmtName; : ParamListInfo portalParams; : bool save_log_statement_stats = log_statement_stats; 0.00 : 69f315: 88 85 4f fe ff ff mov %al,-0x1b1(%rbp) : bool execute_is_fetch; : bool was_logged = false; : char msec_str[32]; : : /* Adjust destination to tell printtup.c what to do */ : dest = whereToSendOutput; 0.00 : 69f31b: 8b 05 87 94 4c 00 mov 0x4c9487(%rip),%eax # b687a8 0.00 : 69f321: 89 85 74 fe ff ff mov %eax,-0x18c(%rbp) : if (dest == DestRemote) 0.00 : 69f327: 83 f8 02 cmp $0x2,%eax 0.00 : 69f32a: b8 03 00 00 00 mov $0x3,%eax 0.00 : 69f32f: 0f 45 85 74 fe ff ff cmovne -0x18c(%rbp),%eax 0.00 : 69f336: 89 85 74 fe ff ff mov %eax,-0x18c(%rbp) : dest = DestRemoteExecute; : : portal = GetPortalByName(portal_name); 0.00 : 69f33c: e8 8f a5 0f 00 callq 7998d0 : if (!PortalIsValid(portal)) 0.00 : 69f341: 48 85 c0 test %rax,%rax : /* Adjust destination to tell printtup.c what to do */ : dest = whereToSendOutput; : if (dest == DestRemote) : dest = DestRemoteExecute; : : portal = GetPortalByName(portal_name); 0.00 : 69f344: 49 89 c7 mov %rax,%r15 : if (!PortalIsValid(portal)) 0.00 : 69f347: 0f 84 a5 08 00 00 je 69fbf2 : : /* : * If the original query was a null string, just return : * EmptyQueryResponse. : */ : if (portal->commandTag == NULL) 0.00 : 69f34d: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 69f352: 0f 84 45 08 00 00 je 69fb9d : NullCommand(dest); : return; : } : : /* Does the portal contain a transaction command? */ : is_xact_command = IsTransactionStmtList(portal->stmts); 0.00 : 69f358: 48 8b 40 40 mov 0x40(%rax),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 69f35c: 48 85 c0 test %rax,%rax 0.00 : 69f35f: 74 0a je 69f36b : : /* Test a list that might contain Query nodes or bare parsetrees */ : static bool : IsTransactionStmtList(List *parseTrees) : { : if (list_length(parseTrees) == 1) 0.00 : 69f361: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 69f365: 0f 84 9a 06 00 00 je 69fa05 : */ : portalParams = NULL; : } : else : { : sourceText = portal->sourceText; 0.00 : 69f36b: 49 8b 47 30 mov 0x30(%r15),%rax 0.00 : 69f36f: 48 89 85 60 fe ff ff mov %rax,-0x1a0(%rbp) : if (portal->prepStmtName) 0.00 : 69f376: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 69f37a: 48 89 85 58 fe ff ff mov %rax,-0x1a8(%rbp) 0.00 : 69f381: 48 85 c0 test %rax,%rax 0.00 : 69f384: b8 a2 55 88 00 mov $0x8855a2,%eax 0.00 : 69f389: 48 0f 45 85 58 fe ff cmovne -0x1a8(%rbp),%rax 0.00 : 69f390: ff 0.00 : 69f391: 48 89 85 58 fe ff ff mov %rax,-0x1a8(%rbp) : prepStmtName = portal->prepStmtName; : else : prepStmtName = ""; : portalParams = portal->portalParams; 0.00 : 69f398: 49 8b 47 50 mov 0x50(%r15),%rax 0.00 : 69f39c: 44 88 b5 4e fe ff ff mov %r14b,-0x1b2(%rbp) 0.00 : 69f3a3: 48 89 85 50 fe ff ff mov %rax,-0x1b0(%rbp) : } : : /* : * Report query to various monitoring facilities. : */ : debug_query_string = sourceText; 0.00 : 69f3aa: 48 8b 85 60 fe ff ff mov -0x1a0(%rbp),%rax : : pgstat_report_activity(STATE_RUNNING, sourceText); 0.00 : 69f3b1: bf 02 00 00 00 mov $0x2,%edi 0.00 : 69f3b6: 48 89 c6 mov %rax,%rsi : } : : /* : * Report query to various monitoring facilities. : */ : debug_query_string = sourceText; 0.00 : 69f3b9: 48 89 05 70 07 52 00 mov %rax,0x520770(%rip) # bbfb30 : : pgstat_report_activity(STATE_RUNNING, sourceText); 0.00 : 69f3c0: e8 9b 0e fa ff callq 640260 : : set_ps_display(portal->commandTag, false); 0.00 : 69f3c5: 49 8b 7f 38 mov 0x38(%r15),%rdi 0.00 : 69f3c9: 31 f6 xor %esi,%esi 0.00 : 69f3cb: e8 20 68 0f 00 callq 795bf0 : : if (save_log_statement_stats) 0.00 : 69f3d0: 80 bd 4f fe ff ff 00 cmpb $0x0,-0x1b1(%rbp) 0.00 : 69f3d7: 0f 85 19 06 00 00 jne 69f9f6 : ResetUsage(); : : BeginCommand(portal->commandTag, dest); 0.00 : 69f3dd: 49 8b 7f 38 mov 0x38(%r15),%rdi 0.00 : 69f3e1: 8b b5 74 fe ff ff mov -0x18c(%rbp),%esi 0.00 : 69f3e7: e8 f4 a8 ff ff callq 699ce0 : : /* : * Create dest receiver in MessageContext (we don't want it in transaction : * context, because that may get deleted if portal contains VACUUM). : */ : receiver = CreateDestReceiver(dest); 0.00 : 69f3ec: 8b bd 74 fe ff ff mov -0x18c(%rbp),%edi 0.00 : 69f3f2: e8 e9 a9 ff ff callq 699de0 : if (dest == DestRemoteExecute) 0.00 : 69f3f7: 83 bd 74 fe ff ff 03 cmpl $0x3,-0x18c(%rbp) : : /* : * Create dest receiver in MessageContext (we don't want it in transaction : * context, because that may get deleted if portal contains VACUUM). : */ : receiver = CreateDestReceiver(dest); 0.00 : 69f3fe: 48 89 85 68 fe ff ff mov %rax,-0x198(%rbp) : if (dest == DestRemoteExecute) 0.00 : 69f405: 0f 84 82 07 00 00 je 69fb8d : : /* : * Ensure we are in a transaction command (this should normally be the : * case already due to prior BIND). : */ : start_xact_command(); 0.00 : 69f40b: e8 20 c2 ff ff callq 69b630 : * If we re-issue an Execute protocol request against an existing portal, : * then we are only fetching more rows rather than completely re-executing : * the query from the start. atStart is never reset for a v3 portal, so we : * are safe to use this check. : */ : execute_is_fetch = !portal->atStart; 0.00 : 69f410: 41 80 bf 90 00 00 00 cmpb $0x0,0x90(%r15) 0.00 : 69f417: 00 : static bool : check_log_statement(List *stmt_list) : { : ListCell *stmt_item; : : if (log_statement == LOGSTMT_NONE) 0.00 : 69f418: 8b 05 c6 f3 4d 00 mov 0x4df3c6(%rip),%eax # b7e7e4 : * If we re-issue an Execute protocol request against an existing portal, : * then we are only fetching more rows rather than completely re-executing : * the query from the start. atStart is never reset for a v3 portal, so we : * are safe to use this check. : */ : execute_is_fetch = !portal->atStart; 0.00 : 69f41e: 0f 94 85 4d fe ff ff sete -0x1b3(%rbp) : static bool : check_log_statement(List *stmt_list) : { : ListCell *stmt_item; : : if (log_statement == LOGSTMT_NONE) 0.00 : 69f425: 85 c0 test %eax,%eax : * are safe to use this check. : */ : execute_is_fetch = !portal->atStart; : : /* Log immediately if dictated by log_statement */ : if (check_log_statement(portal->stmts)) 0.00 : 69f427: 49 8b 57 40 mov 0x40(%r15),%rdx : static bool : check_log_statement(List *stmt_list) : { : ListCell *stmt_item; : : if (log_statement == LOGSTMT_NONE) 0.00 : 69f42b: 0f 84 e5 02 00 00 je 69f716 : return false; : if (log_statement == LOGSTMT_ALL) 0.00 : 69f431: 83 f8 03 cmp $0x3,%eax 0.00 : 69f434: 74 37 je 69f46d : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 69f436: 48 85 d2 test %rdx,%rdx 0.00 : 69f439: 0f 84 d7 02 00 00 je 69f716 0.00 : 69f43f: 48 8b 5a 08 mov 0x8(%rdx),%rbx : return true; : : /* Else we have to inspect the statement(s) to see whether to log */ : foreach(stmt_item, stmt_list) 0.00 : 69f443: 48 85 db test %rbx,%rbx 0.00 : 69f446: 75 15 jne 69f45d 0.00 : 69f448: e9 c9 02 00 00 jmpq 69f716 0.00 : 69f44d: 0f 1f 00 nopl (%rax) 0.00 : 69f450: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 69f454: 48 85 db test %rbx,%rbx 0.00 : 69f457: 0f 84 b9 02 00 00 je 69f716 : { : Node *stmt = (Node *) lfirst(stmt_item); : : if (GetCommandLogLevel(stmt) <= log_statement) 0.00 : 69f45d: 48 8b 3b mov (%rbx),%rdi 0.00 : 69f460: e8 0b 29 00 00 callq 6a1d70 0.00 : 69f465: 3b 05 79 f3 4d 00 cmp 0x4df379(%rip),%eax # b7e7e4 0.00 : 69f46b: 77 e3 ja 69f450 : execute_is_fetch = !portal->atStart; : : /* Log immediately if dictated by log_statement */ : if (check_log_statement(portal->stmts)) : { : ereport(LOG, 0.00 : 69f46d: 45 31 c0 xor %r8d,%r8d 0.00 : 69f470: b9 e0 ff 8a 00 mov $0x8affe0,%ecx 0.00 : 69f475: ba 6f 07 00 00 mov $0x76f,%edx 0.00 : 69f47a: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69f47f: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 69f484: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 69f48a: e8 31 b6 0d 00 callq 77aac0 0.00 : 69f48f: 84 c0 test %al,%al 0.00 : 69f491: 0f 85 19 06 00 00 jne 69fab0 : : /* : * If we are in aborted transaction state, the only portals we can : * actually run are those containing COMMIT or ROLLBACK commands. : */ : if (IsAbortedTransactionBlockState() && 0.00 : 69f497: e8 c4 16 e2 ff callq 4c0b60 0.00 : 69f49c: 84 c0 test %al,%al 0.00 : 69f49e: 66 90 xchg %ax,%ax 0.00 : 69f4a0: 0f 84 11 01 00 00 je 69f5b7 0.00 : 69f4a6: 49 8b 47 40 mov 0x40(%r15),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 69f4aa: 48 85 c0 test %rax,%rax 0.00 : 69f4ad: 74 0a je 69f4b9 : : /* Test a list that might contain Query nodes or bare parsetrees */ : static bool : IsTransactionExitStmtList(List *parseTrees) : { : if (list_length(parseTrees) == 1) 0.00 : 69f4af: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 69f4b3: 0f 84 c2 00 00 00 je 69f57b : * If we are in aborted transaction state, the only portals we can : * actually run are those containing COMMIT or ROLLBACK commands. : */ : if (IsAbortedTransactionBlockState() && : !IsTransactionExitStmtList(portal->stmts)) : ereport(ERROR, 0.00 : 69f4b9: 45 31 c0 xor %r8d,%r8d 0.00 : 69f4bc: b9 e0 ff 8a 00 mov $0x8affe0,%ecx 0.00 : 69f4c1: ba 7d 07 00 00 mov $0x77d,%edx : * clients to issue COMMIT or ROLLBACK commands, if they use code that : * blindly Describes whatever it does.) : */ : if (IsAbortedTransactionBlockState() && : portal->tupDesc) : ereport(ERROR, 0.00 : 69f4c6: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69f4cb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69f4d0: e8 eb b5 0d 00 callq 77aac0 0.00 : 69f4d5: 84 c0 test %al,%al 0.00 : 69f4d7: 0f 84 c6 f5 ff ff je 69eaa3 : * Add an errdetail() line showing abort reason, if any. : */ : static int : errdetail_abort(void) : { : if (MyProc->recoveryConflictPending) 0.00 : 69f4dd: 48 8b 05 64 e4 4d 00 mov 0x4de464(%rip),%rax # b7d948 0.00 : 69f4e4: 80 78 40 00 cmpb $0x0,0x40(%rax) 0.00 : 69f4e8: 74 0c je 69f4f6 : errdetail("abort reason: recovery conflict"); 0.00 : 69f4ea: bf a8 f5 8a 00 mov $0x8af5a8,%edi 0.00 : 69f4ef: 31 c0 xor %eax,%eax 0.00 : 69f4f1: e8 3a d0 0d 00 callq 77c530 : * clients to issue COMMIT or ROLLBACK commands, if they use code that : * blindly Describes whatever it does.) : */ : if (IsAbortedTransactionBlockState() && : portal->tupDesc) : ereport(ERROR, 0.00 : 69f4f6: bf 38 e6 8a 00 mov $0x8ae638,%edi 0.00 : 69f4fb: 31 c0 xor %eax,%eax 0.00 : 69f4fd: e8 9e d3 0d 00 callq 77c8a0 0.00 : 69f502: bf 42 01 02 02 mov $0x2020142,%edi 0.00 : 69f507: 89 c3 mov %eax,%ebx 0.00 : 69f509: e8 42 d8 0d 00 callq 77cd50 0.00 : 69f50e: 31 d2 xor %edx,%edx 0.00 : 69f510: 89 c7 mov %eax,%edi 0.00 : 69f512: 89 de mov %ebx,%esi 0.00 : 69f514: 31 c0 xor %eax,%eax 0.00 : 69f516: e8 c5 b0 0d 00 callq 77a5e0 0.00 : 69f51b: e9 83 f5 ff ff jmpq 69eaa3 : exec_execute_message(portal_name, max_rows); : } : break; : : case 'F': /* fastpath function call */ : forbidden_in_wal_sender(firstchar); 0.00 : 69f520: bf 46 00 00 00 mov $0x46,%edi 0.00 : 69f525: e8 e6 bb ff ff callq 69b110 0.00 : 69f52a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* Set statement_timestamp() */ : SetCurrentStatementStartTimestamp(); 0.00 : 69f530: e8 db 1f e2 ff callq 4c1510 : : /* Report query to various monitoring facilities. */ : pgstat_report_activity(STATE_FASTPATH, NULL); 0.00 : 69f535: 31 f6 xor %esi,%esi 0.00 : 69f537: bf 04 00 00 00 mov $0x4,%edi 0.00 : 69f53c: e8 1f 0d fa ff callq 640260 : set_ps_display("", false); 0.00 : 69f541: 31 f6 xor %esi,%esi 0.00 : 69f543: bf 58 ec 8a 00 mov $0x8aec58,%edi 0.00 : 69f548: e8 a3 66 0f 00 callq 795bf0 : : /* start an xact for this function invocation */ : start_xact_command(); 0.00 : 69f54d: e8 de c0 ff ff callq 69b630 0.00 : 69f552: 48 8b 05 2f b3 51 00 mov 0x51b32f(%rip),%rax # bba888 : */ : : /* switch back to message context */ : MemoryContextSwitchTo(MessageContext); : : if (HandleFunctionRequest(&input_message) == EOF) 0.00 : 69f559: 4c 89 ef mov %r13,%rdi 0.00 : 69f55c: 48 89 05 fd b2 51 00 mov %rax,0x51b2fd(%rip) # bba860 0.00 : 69f563: e8 18 a9 ff ff callq 699e80 0.00 : 69f568: 83 c0 01 add $0x1,%eax 0.00 : 69f56b: 0f 84 44 fc ff ff je 69f1b5 : : proc_exit(0); : } : : /* commit the function-invocation transaction */ : finish_xact_command(); 0.00 : 69f571: e8 4a c1 ff ff callq 69b6c0 0.00 : 69f576: e9 31 fc ff ff jmpq 69f1ac : static bool : IsTransactionExitStmtList(List *parseTrees) : { : if (list_length(parseTrees) == 1) : { : Node *stmt = (Node *) linitial(parseTrees); 0.00 : 69f57b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 69f57f: 48 8b 00 mov (%rax),%rax : : if (IsA(stmt, Query)) 0.00 : 69f582: 8b 10 mov (%rax),%edx 0.00 : 69f584: 81 fa bc 02 00 00 cmp $0x2bc,%edx 0.00 : 69f58a: 0f 84 1d 06 00 00 je 69fbad : : /* Test a bare parsetree */ : static bool : IsTransactionExitStmt(Node *parsetree) : { : if (parsetree && IsA(parsetree, TransactionStmt)) 0.00 : 69f590: 81 fa db 02 00 00 cmp $0x2db,%edx 0.00 : 69f596: 0f 85 1d ff ff ff jne 69f4b9 : { : TransactionStmt *stmt = (TransactionStmt *) parsetree; : : if (stmt->kind == TRANS_STMT_COMMIT || 0.00 : 69f59c: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 69f59f: 83 f8 02 cmp $0x2,%eax 0.00 : 69f5a2: 74 13 je 69f5b7 0.00 : 69f5a4: 83 f8 07 cmp $0x7,%eax 0.00 : 69f5a7: 74 0e je 69f5b7 0.00 : 69f5a9: 83 f8 03 cmp $0x3,%eax 0.00 : 69f5ac: 74 09 je 69f5b7 0.00 : 69f5ae: 83 f8 06 cmp $0x6,%eax 0.00 : 69f5b1: 0f 85 02 ff ff ff jne 69f4b9 : errmsg("current transaction is aborted, " : "commands ignored until end of transaction block"), : errdetail_abort())); : : /* Check for cancel signal before we start execution */ : CHECK_FOR_INTERRUPTS(); 0.00 : 69f5b7: 0f b6 05 d2 aa 51 00 movzbl 0x51aad2(%rip),%eax # bba090 0.00 : 69f5be: 84 c0 test %al,%al 0.00 : 69f5c0: 0f 85 a3 04 00 00 jne 69fa69 : : portal_name = pq_getmsgstring(&input_message); : max_rows = pq_getmsgint(&input_message, 4); : pq_getmsgend(&input_message); : : exec_execute_message(portal_name, max_rows); 0.00 : 69f5c6: 48 63 b5 24 fe ff ff movslq -0x1dc(%rbp),%rsi : * Okay to run the portal. : */ : if (max_rows <= 0) : max_rows = FETCH_ALL; : : completed = PortalRun(portal, 0.00 : 69f5cd: 4c 8b 85 68 fe ff ff mov -0x198(%rbp),%r8 : CHECK_FOR_INTERRUPTS(); : : /* : * Okay to run the portal. : */ : if (max_rows <= 0) 0.00 : 69f5d4: 48 b8 ff ff ff ff ff movabs $0x7fffffffffffffff,%rax 0.00 : 69f5db: ff ff 7f : max_rows = FETCH_ALL; : : completed = PortalRun(portal, 0.00 : 69f5de: 4c 8d 8d 50 ff ff ff lea -0xb0(%rbp),%r9 0.00 : 69f5e5: ba 01 00 00 00 mov $0x1,%edx 0.00 : 69f5ea: 4c 89 ff mov %r15,%rdi 0.00 : 69f5ed: 4c 89 c1 mov %r8,%rcx : CHECK_FOR_INTERRUPTS(); : : /* : * Okay to run the portal. : */ : if (max_rows <= 0) 0.00 : 69f5f0: 48 85 f6 test %rsi,%rsi 0.00 : 69f5f3: 48 0f 4e f0 cmovle %rax,%rsi : max_rows = FETCH_ALL; : : completed = PortalRun(portal, 0.00 : 69f5f7: e8 34 1d 00 00 callq 6a1330 : true, /* always top level */ : receiver, : receiver, : completionTag); : : (*receiver->rDestroy) (receiver); 0.00 : 69f5fc: 48 8b bd 68 fe ff ff mov -0x198(%rbp),%rdi : * Okay to run the portal. : */ : if (max_rows <= 0) : max_rows = FETCH_ALL; : : completed = PortalRun(portal, 0.00 : 69f603: 89 c3 mov %eax,%ebx : true, /* always top level */ : receiver, : receiver, : completionTag); : : (*receiver->rDestroy) (receiver); 0.00 : 69f605: ff 57 18 callq *0x18(%rdi) : : if (completed) 0.00 : 69f608: 84 db test %bl,%bl 0.00 : 69f60a: 0f 84 ea 00 00 00 je 69f6fa : { : if (is_xact_command) 0.00 : 69f610: 80 bd 4e fe ff ff 00 cmpb $0x0,-0x1b2(%rbp) 0.00 : 69f617: 0f 84 63 05 00 00 je 69fb80 : { : /* : * If this was a transaction control statement, commit it. We : * will start a new xact command for the next command (if any). : */ : finish_xact_command(); 0.00 : 69f61d: e8 9e c0 ff ff callq 69b6c0 : */ : CommandCounterIncrement(); : } : : /* Send appropriate CommandComplete to client */ : EndCommand(completionTag, dest); 0.00 : 69f622: 8b b5 74 fe ff ff mov -0x18c(%rbp),%esi 0.00 : 69f628: 48 8d bd 50 ff ff ff lea -0xb0(%rbp),%rdi 0.00 : 69f62f: e8 6c a7 ff ff callq 699da0 : } : : /* : * Emit duration logging if appropriate. : */ : switch (check_log_duration(msec_str, was_logged)) 0.00 : 69f634: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 69f638: 41 0f be f4 movsbl %r12b,%esi 0.00 : 69f63c: e8 9f d5 ff ff callq 69cbe0 0.00 : 69f641: 83 f8 01 cmp $0x1,%eax 0.00 : 69f644: 0f 84 99 02 00 00 je 69f8e3 0.00 : 69f64a: 83 f8 02 cmp $0x2,%eax 0.00 : 69f64d: 0f 84 e2 02 00 00 je 69f935 : errhidestmt(true), : errdetail_params(portalParams))); : break; : } : : if (save_log_statement_stats) 0.00 : 69f653: 80 bd 4f fe ff ff 00 cmpb $0x0,-0x1b1(%rbp) 0.00 : 69f65a: 0f 85 87 03 00 00 jne 69f9e7 : ShowUsage("EXECUTE MESSAGE STATISTICS"); : : debug_query_string = NULL; 0.00 : 69f660: 48 c7 05 c5 04 52 00 movq $0x0,0x5204c5(%rip) # bbfb30 0.00 : 69f667: 00 00 00 00 0.00 : 69f66b: e9 08 f2 ff ff jmpq 69e878 : : /* Must have gotten a database name, or have a default (the username) */ : if (dbname == NULL) : { : dbname = username; : if (dbname == NULL) 0.00 : 69f670: 4d 85 ed test %r13,%r13 : process_postgres_switches(argc, argv, PGC_POSTMASTER, &dbname); : : /* Must have gotten a database name, or have a default (the username) */ : if (dbname == NULL) : { : dbname = username; 0.00 : 69f673: 4c 89 ad 78 fe ff ff mov %r13,-0x188(%rbp) : if (dbname == NULL) 0.00 : 69f67a: 0f 85 9b f0 ff ff jne 69e71b : ereport(FATAL, 0.00 : 69f680: 45 31 c0 xor %r8d,%r8d 0.00 : 69f683: b9 5a ff 8a 00 mov $0x8aff5a,%ecx 0.00 : 69f688: ba fc 0d 00 00 mov $0xdfc,%edx 0.00 : 69f68d: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69f692: bf 15 00 00 00 mov $0x15,%edi 0.00 : 69f697: e8 24 b4 0d 00 callq 77aac0 0.00 : 69f69c: 84 c0 test %al,%al 0.00 : 69f69e: 0f 84 ff f3 ff ff je 69eaa3 0.00 : 69f6a4: 48 8b 35 15 03 52 00 mov 0x520315(%rip),%rsi # bbf9c0 0.00 : 69f6ab: bf 88 f6 8a 00 mov $0x8af688,%edi 0.00 : 69f6b0: 31 c0 xor %eax,%eax 0.00 : 69f6b2: e8 e9 d1 0d 00 callq 77c8a0 0.00 : 69f6b7: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 69f6bc: 89 c3 mov %eax,%ebx 0.00 : 69f6be: e9 aa f9 ff ff jmpq 69f06d 0.00 : 69f6c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Can't send DEBUG log messages to client at this point. Since : * we're disconnecting right away, we don't need to restore : * whereToSendOutput. : */ : whereToSendOutput = DestNone; : ereport(DEBUG1, 0.00 : 69f6c8: bf 10 e6 8a 00 mov $0x8ae610,%edi 0.00 : 69f6cd: 44 89 f0 mov %r14d,%eax 0.00 : 69f6d0: e8 cb d1 0d 00 callq 77c8a0 0.00 : 69f6d5: bf 00 02 00 03 mov $0x3000200,%edi 0.00 : 69f6da: 89 c3 mov %eax,%ebx 0.00 : 69f6dc: e9 36 f7 ff ff jmpq 69ee17 : * Abort the current transaction in order to recover. : */ : AbortCurrentTransaction(); : : if (am_walsender) : WalSndErrorCleanup(); 0.00 : 69f6e1: e8 3a 45 fc ff callq 663c20 0.00 : 69f6e6: e9 0e f9 ff ff jmpq 69eff9 : pq_getmsgend(&input_message); : : if (am_walsender) : exec_replication_command(query_string); : else : exec_simple_query(query_string); 0.00 : 69f6eb: 48 89 df mov %rbx,%rdi 0.00 : 69f6ee: 66 90 xchg %ax,%ax 0.00 : 69f6f0: e8 3b e3 ff ff callq 69da30 0.00 : 69f6f5: e9 b2 fa ff ff jmpq 69f1ac : EndCommand(completionTag, dest); : } : else : { : /* Portal run not complete, so send PortalSuspended */ : if (whereToSendOutput == DestRemote) 0.00 : 69f6fa: 83 3d a7 90 4c 00 02 cmpl $0x2,0x4c90a7(%rip) # b687a8 0.00 : 69f701: 0f 85 2d ff ff ff jne 69f634 : pq_putemptymessage('s'); 0.00 : 69f707: bf 73 00 00 00 mov $0x73,%edi 0.00 : 69f70c: e8 0f dc f3 ff callq 5dd320 0.00 : 69f711: e9 1e ff ff ff jmpq 69f634 : return false; : if (log_statement == LOGSTMT_ALL) : return true; : : /* Else we have to inspect the statement(s) to see whether to log */ : foreach(stmt_item, stmt_list) 0.00 : 69f716: 45 89 f4 mov %r14d,%r12d 0.00 : 69f719: e9 79 fd ff ff jmpq 69f497 : /* : * Reset whereToSendOutput to prevent ereport from attempting : * to send any more messages to client. : */ : if (whereToSendOutput == DestRemote) : whereToSendOutput = DestNone; 0.00 : 69f71e: c7 05 80 90 4c 00 00 movl $0x0,0x4c9080(%rip) # b687a8 0.00 : 69f725: 00 00 00 0.00 : 69f728: e9 95 fa ff ff jmpq 69f1c2 : pq_getmsgend(&input_message); : : switch (close_type) : { : case 'S': : if (close_target[0] != '\0') 0.00 : 69f72d: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 69f730: 0f 85 fc 03 00 00 jne 69fb32 : /* Release any existing unnamed prepared statement */ : static void : drop_unnamed_stmt(void) : { : /* paranoia to avoid a dangling pointer in case of error */ : if (unnamed_stmt_psrc) 0.00 : 69f736: 48 8b 3d db f0 4d 00 mov 0x4df0db(%rip),%rdi # b7e818 0.00 : 69f73d: 48 85 ff test %rdi,%rdi 0.00 : 69f740: 74 29 je 69f76b : { : CachedPlanSource *psrc = unnamed_stmt_psrc; : : unnamed_stmt_psrc = NULL; 0.00 : 69f742: 48 c7 05 cb f0 4d 00 movq $0x0,0x4df0cb(%rip) # b7e818 0.00 : 69f749: 00 00 00 00 : DropCachedPlan(psrc); 0.00 : 69f74d: e8 be 95 0c 00 callq 768d10 0.00 : 69f752: eb 17 jmp 69f76b : break; : case 'P': : { : Portal portal; : : portal = GetPortalByName(close_target); 0.00 : 69f754: 48 89 df mov %rbx,%rdi 0.00 : 69f757: e8 74 a1 0f 00 callq 7998d0 : if (PortalIsValid(portal)) 0.00 : 69f75c: 48 85 c0 test %rax,%rax : break; : case 'P': : { : Portal portal; : : portal = GetPortalByName(close_target); 0.00 : 69f75f: 48 89 c7 mov %rax,%rdi : if (PortalIsValid(portal)) 0.00 : 69f762: 74 07 je 69f76b : PortalDrop(portal, false); 0.00 : 69f764: 31 f6 xor %esi,%esi 0.00 : 69f766: e8 95 a1 0f 00 callq 799900 : errmsg("invalid CLOSE message subtype %d", : close_type))); : break; : } : : if (whereToSendOutput == DestRemote) 0.00 : 69f76b: 83 3d 36 90 4c 00 02 cmpl $0x2,0x4c9036(%rip) # b687a8 0.00 : 69f772: 0f 85 00 f1 ff ff jne 69e878 : pq_putemptymessage('3'); /* CloseComplete */ 0.00 : 69f778: bf 33 00 00 00 mov $0x33,%edi 0.00 : 69f77d: e8 9e db f3 ff callq 5dd320 0.00 : 69f782: e9 f1 f0 ff ff jmpq 69e878 : : /* : * Start up a transaction command. (Note that this will normally change : * current memory context.) Nothing happens if we are already in one. : */ : start_xact_command(); 0.00 : 69f787: e8 a4 be ff ff callq 69b630 0.00 : 69f78c: 48 8b 05 f5 b0 51 00 mov 0x51b0f5(%rip),%rax # bba888 0.00 : 69f793: 48 89 05 c6 b0 51 00 mov %rax,0x51b0c6(%rip) # bba860 : : /* Switch back to message context */ : MemoryContextSwitchTo(MessageContext); : : /* Find prepared statement */ : if (stmt_name[0] != '\0') 0.00 : 69f79a: 41 80 3f 00 cmpb $0x0,(%r15) 0.00 : 69f79e: 0f 85 a1 03 00 00 jne 69fb45 : psrc = pstmt->plansource; : } : else : { : /* special-case the unnamed statement */ : psrc = unnamed_stmt_psrc; 0.00 : 69f7a4: 4c 8b 25 6d f0 4d 00 mov 0x4df06d(%rip),%r12 # b7e818 : if (!psrc) 0.00 : 69f7ab: 4d 85 e4 test %r12,%r12 0.00 : 69f7ae: 0f 84 93 04 00 00 je 69fc47 : * just refuse all Describes, since that might break the ability of some : * clients to issue COMMIT or ROLLBACK commands, if they use code that : * blindly Describes whatever it does.) We can Describe parameters : * without doing anything dangerous, so we don't restrict that. : */ : if (IsAbortedTransactionBlockState() && 0.00 : 69f7b4: e8 a7 13 e2 ff callq 4c0b60 0.00 : 69f7b9: 84 c0 test %al,%al 0.00 : 69f7bb: 74 0c je 69f7c9 0.00 : 69f7bd: 49 83 7c 24 48 00 cmpq $0x0,0x48(%r12) 0.00 : 69f7c3: 0f 85 6c 04 00 00 jne 69fc35 : (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION), : errmsg("current transaction is aborted, " : "commands ignored until end of transaction block"), : errdetail_abort())); : : if (whereToSendOutput != DestRemote) 0.00 : 69f7c9: 83 3d d8 8f 4c 00 02 cmpl $0x2,0x4c8fd8(%rip) # b687a8 0.00 : 69f7d0: 0f 85 a2 f0 ff ff jne 69e878 : return; /* can't actually do anything... */ : : /* : * First describe the parameters... : */ : pq_beginmessage(&buf, 't'); /* parameter description message type */ 0.00 : 69f7d6: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 69f7da: be 74 00 00 00 mov $0x74,%esi 0.00 : 69f7df: e8 3c dc f3 ff callq 5dd420 : pq_sendint(&buf, psrc->num_params, 2); 0.00 : 69f7e4: 41 8b 74 24 28 mov 0x28(%r12),%esi 0.00 : 69f7e9: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 69f7ed: ba 02 00 00 00 mov $0x2,%edx 0.00 : 69f7f2: e8 e9 de f3 ff callq 5dd6e0 : : for (i = 0; i < psrc->num_params; i++) 0.00 : 69f7f7: 45 8b 4c 24 28 mov 0x28(%r12),%r9d 0.00 : 69f7fc: 45 85 c9 test %r9d,%r9d 0.00 : 69f7ff: 7e 25 jle 69f826 0.00 : 69f801: 31 db xor %ebx,%ebx : { : Oid ptype = psrc->param_types[i]; : : pq_sendint(&buf, (int) ptype, 4); 0.00 : 69f803: 49 8b 54 24 20 mov 0x20(%r12),%rdx 0.00 : 69f808: 48 63 c3 movslq %ebx,%rax 0.00 : 69f80b: 48 8d 7d 90 lea -0x70(%rbp),%rdi : * First describe the parameters... : */ : pq_beginmessage(&buf, 't'); /* parameter description message type */ : pq_sendint(&buf, psrc->num_params, 2); : : for (i = 0; i < psrc->num_params; i++) 0.00 : 69f80f: 83 c3 01 add $0x1,%ebx : { : Oid ptype = psrc->param_types[i]; : : pq_sendint(&buf, (int) ptype, 4); 0.00 : 69f812: 8b 34 82 mov (%rdx,%rax,4),%esi 0.00 : 69f815: ba 04 00 00 00 mov $0x4,%edx 0.00 : 69f81a: e8 c1 de f3 ff callq 5dd6e0 : * First describe the parameters... : */ : pq_beginmessage(&buf, 't'); /* parameter description message type */ : pq_sendint(&buf, psrc->num_params, 2); : : for (i = 0; i < psrc->num_params; i++) 0.00 : 69f81f: 41 3b 5c 24 28 cmp 0x28(%r12),%ebx 0.00 : 69f824: 7c dd jl 69f803 : { : Oid ptype = psrc->param_types[i]; : : pq_sendint(&buf, (int) ptype, 4); : } : pq_endmessage(&buf); 0.00 : 69f826: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 69f82a: e8 b1 db f3 ff callq 5dd3e0 : : /* : * Next send RowDescription or NoData to describe the result... : */ : if (psrc->resultDesc) 0.00 : 69f82f: 49 83 7c 24 48 00 cmpq $0x0,0x48(%r12) 0.00 : 69f835: 0f 84 48 04 00 00 je 69fc83 : { : List *tlist; : : /* Get the plan's primary targetlist */ : tlist = CachedPlanGetTargetList(psrc); 0.00 : 69f83b: 4c 89 e7 mov %r12,%rdi 0.00 : 69f83e: e8 8d 94 0c 00 callq 768cd0 : : SendRowDescriptionMessage(psrc->resultDesc, tlist, NULL); 0.00 : 69f843: 49 8b 7c 24 48 mov 0x48(%r12),%rdi : if (psrc->resultDesc) : { : List *tlist; : : /* Get the plan's primary targetlist */ : tlist = CachedPlanGetTargetList(psrc); 0.00 : 69f848: 48 89 c6 mov %rax,%rsi : : SendRowDescriptionMessage(psrc->resultDesc, tlist, NULL); 0.00 : 69f84b: 31 d2 xor %edx,%edx 0.00 : 69f84d: e8 1e 20 dd ff callq 471870 0.00 : 69f852: e9 21 f0 ff ff jmpq 69e878 : : /* : * Start up a transaction command. (Note that this will normally change : * current memory context.) Nothing happens if we are already in one. : */ : start_xact_command(); 0.00 : 69f857: e8 d4 bd ff ff callq 69b630 0.00 : 69f85c: 48 8b 05 25 b0 51 00 mov 0x51b025(%rip),%rax # bba888 : : /* Switch back to message context */ : MemoryContextSwitchTo(MessageContext); : : portal = GetPortalByName(portal_name); 0.00 : 69f863: 4c 89 ff mov %r15,%rdi 0.00 : 69f866: 48 89 05 f3 af 51 00 mov %rax,0x51aff3(%rip) # bba860 0.00 : 69f86d: e8 5e a0 0f 00 callq 7998d0 : if (!PortalIsValid(portal)) 0.00 : 69f872: 48 85 c0 test %rax,%rax : start_xact_command(); : : /* Switch back to message context */ : MemoryContextSwitchTo(MessageContext); : : portal = GetPortalByName(portal_name); 0.00 : 69f875: 49 89 c4 mov %rax,%r12 : if (!PortalIsValid(portal)) 0.00 : 69f878: 0f 84 14 04 00 00 je 69fc92 : * Hence, refuse to Describe portals that return data. (We shouldn't just : * refuse all Describes, since that might break the ability of some : * clients to issue COMMIT or ROLLBACK commands, if they use code that : * blindly Describes whatever it does.) : */ : if (IsAbortedTransactionBlockState() && 0.00 : 69f87e: e8 dd 12 e2 ff callq 4c0b60 0.00 : 69f883: 84 c0 test %al,%al 0.00 : 69f885: 74 21 je 69f8a8 0.00 : 69f887: 49 83 7c 24 70 00 cmpq $0x0,0x70(%r12) 0.00 : 69f88d: 0f 1f 00 nopl (%rax) 0.00 : 69f890: 74 16 je 69f8a8 : portal->tupDesc) : ereport(ERROR, 0.00 : 69f892: 45 31 c0 xor %r8d,%r8d 0.00 : 69f895: b9 60 00 8b 00 mov $0x8b0060,%ecx 0.00 : 69f89a: ba 37 09 00 00 mov $0x937,%edx 0.00 : 69f89f: e9 22 fc ff ff jmpq 69f4c6 0.00 : 69f8a4: 0f 1f 40 00 nopl 0x0(%rax) : (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION), : errmsg("current transaction is aborted, " : "commands ignored until end of transaction block"), : errdetail_abort())); : : if (whereToSendOutput != DestRemote) 0.00 : 69f8a8: 83 3d f9 8e 4c 00 02 cmpl $0x2,0x4c8ef9(%rip) # b687a8 0.00 : 69f8af: 0f 85 c3 ef ff ff jne 69e878 : return; /* can't actually do anything... */ : : if (portal->tupDesc) 0.00 : 69f8b5: 49 83 7c 24 70 00 cmpq $0x0,0x70(%r12) 0.00 : 69f8bb: 0f 84 c2 03 00 00 je 69fc83 : SendRowDescriptionMessage(portal->tupDesc, 0.00 : 69f8c1: 49 8b 5c 24 78 mov 0x78(%r12),%rbx 0.00 : 69f8c6: 4c 89 e7 mov %r12,%rdi 0.00 : 69f8c9: e8 32 0f 00 00 callq 6a0800 0.00 : 69f8ce: 49 8b 7c 24 70 mov 0x70(%r12),%rdi 0.00 : 69f8d3: 48 89 c6 mov %rax,%rsi 0.00 : 69f8d6: 48 89 da mov %rbx,%rdx 0.00 : 69f8d9: e8 92 1f dd ff callq 471870 0.00 : 69f8de: e9 95 ef ff ff jmpq 69e878 : * Emit duration logging if appropriate. : */ : switch (check_log_duration(msec_str, was_logged)) : { : case 1: : ereport(LOG, 0.00 : 69f8e3: 45 31 c0 xor %r8d,%r8d 0.00 : 69f8e6: b9 e0 ff 8a 00 mov $0x8affe0,%ecx 0.00 : 69f8eb: ba b6 07 00 00 mov $0x7b6,%edx 0.00 : 69f8f0: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69f8f5: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 69f8fa: e8 c1 b1 0d 00 callq 77aac0 0.00 : 69f8ff: 84 c0 test %al,%al 0.00 : 69f901: 0f 84 4c fd ff ff je 69f653 0.00 : 69f907: bf 01 00 00 00 mov $0x1,%edi 0.00 : 69f90c: e8 df c0 0d 00 callq 77b9f0 0.00 : 69f911: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 69f915: 89 c3 mov %eax,%ebx 0.00 : 69f917: bf c3 e5 8a 00 mov $0x8ae5c3,%edi 0.00 : 69f91c: 44 89 f0 mov %r14d,%eax 0.00 : 69f91f: e8 7c cf 0d 00 callq 77c8a0 0.00 : 69f924: 89 de mov %ebx,%esi 0.00 : 69f926: 89 c7 mov %eax,%edi 0.00 : 69f928: 44 89 f0 mov %r14d,%eax 0.00 : 69f92b: e8 b0 ac 0d 00 callq 77a5e0 0.00 : 69f930: e9 1e fd ff ff jmpq 69f653 : (errmsg("duration: %s ms", msec_str), : errhidestmt(true))); : break; : case 2: : ereport(LOG, 0.00 : 69f935: 45 31 c0 xor %r8d,%r8d 0.00 : 69f938: b9 e0 ff 8a 00 mov $0x8affe0,%ecx 0.00 : 69f93d: ba c4 07 00 00 mov $0x7c4,%edx 0.00 : 69f942: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69f947: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 69f94c: e8 6f b1 0d 00 callq 77aac0 0.00 : 69f951: 84 c0 test %al,%al 0.00 : 69f953: 0f 84 fa fc ff ff je 69f653 0.00 : 69f959: 48 8b bd 50 fe ff ff mov -0x1b0(%rbp),%rdi 0.00 : 69f960: e8 6b ba ff ff callq 69b3d0 0.00 : 69f965: bf 01 00 00 00 mov $0x1,%edi 0.00 : 69f96a: 89 c3 mov %eax,%ebx 0.00 : 69f96c: e8 7f c0 0d 00 callq 77b9f0 0.00 : 69f971: 41 89 c4 mov %eax,%r12d 0.00 : 69f974: 48 8b 85 40 fe ff ff mov -0x1c0(%rbp),%rax 0.00 : 69f97b: b9 8a e7 87 00 mov $0x87e78a,%ecx 0.00 : 69f980: 80 38 00 cmpb $0x0,(%rax) 0.00 : 69f983: 75 0c jne 69f991 0.00 : 69f985: b9 96 16 8e 00 mov $0x8e1696,%ecx 0.00 : 69f98a: 48 89 8d 40 fe ff ff mov %rcx,-0x1c0(%rbp) 0.00 : 69f991: 80 bd 4d fe ff ff 00 cmpb $0x0,-0x1b3(%rbp) 0.00 : 69f998: b8 1c ec 8a 00 mov $0x8aec1c,%eax 0.00 : 69f99d: ba 82 31 7c 00 mov $0x7c3182,%edx 0.00 : 69f9a2: 49 89 c8 mov %rcx,%r8 0.00 : 69f9a5: 4c 8b 8d 40 fe ff ff mov -0x1c0(%rbp),%r9 0.00 : 69f9ac: 48 8b 8d 58 fe ff ff mov -0x1a8(%rbp),%rcx 0.00 : 69f9b3: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 69f9b7: bf 00 f7 8a 00 mov $0x8af700,%edi 0.00 : 69f9bc: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 69f9c0: 48 8b 85 60 fe ff ff mov -0x1a0(%rbp),%rax 0.00 : 69f9c7: 48 89 04 24 mov %rax,(%rsp) 0.00 : 69f9cb: 44 89 f0 mov %r14d,%eax 0.00 : 69f9ce: e8 cd ce 0d 00 callq 77c8a0 0.00 : 69f9d3: 89 da mov %ebx,%edx 0.00 : 69f9d5: 89 c7 mov %eax,%edi 0.00 : 69f9d7: 44 89 e6 mov %r12d,%esi 0.00 : 69f9da: 44 89 f0 mov %r14d,%eax 0.00 : 69f9dd: e8 fe ab 0d 00 callq 77a5e0 0.00 : 69f9e2: e9 6c fc ff ff jmpq 69f653 : errdetail_params(portalParams))); : break; : } : : if (save_log_statement_stats) : ShowUsage("EXECUTE MESSAGE STATISTICS"); 0.00 : 69f9e7: bf 3d ec 8a 00 mov $0x8aec3d,%edi 0.00 : 69f9ec: e8 bf b3 ff ff callq 69adb0 0.00 : 69f9f1: e9 6a fc ff ff jmpq 69f660 : pgstat_report_activity(STATE_RUNNING, sourceText); : : set_ps_display(portal->commandTag, false); : : if (save_log_statement_stats) : ResetUsage(); 0.00 : 69f9f6: e8 95 b3 ff ff callq 69ad90 0.00 : 69f9fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 69fa00: e9 d8 f9 ff ff jmpq 69f3dd : static bool : IsTransactionStmtList(List *parseTrees) : { : if (list_length(parseTrees) == 1) : { : Node *stmt = (Node *) linitial(parseTrees); 0.00 : 69fa05: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 69fa09: 48 8b 00 mov (%rax),%rax : : if (IsA(stmt, Query)) 0.00 : 69fa0c: 8b 10 mov (%rax),%edx 0.00 : 69fa0e: 81 fa bc 02 00 00 cmp $0x2bc,%edx 0.00 : 69fa14: 0f 84 41 01 00 00 je 69fb5b : : if (query->commandType == CMD_UTILITY && : IsA(query->utilityStmt, TransactionStmt)) : return true; : } : else if (IsA(stmt, TransactionStmt)) 0.00 : 69fa1a: 81 fa db 02 00 00 cmp $0x2db,%edx 0.00 : 69fa20: 0f 85 45 f9 ff ff jne 69f36b : * case the portal is destroyed during finish_xact_command. Can avoid the : * copy if it's not an xact command, though. : */ : if (is_xact_command) : { : sourceText = pstrdup(portal->sourceText); 0.00 : 69fa26: 49 8b 7f 30 mov 0x30(%r15),%rdi 0.00 : 69fa2a: e8 21 95 0f 00 callq 798f50 : if (portal->prepStmtName) 0.00 : 69fa2f: 49 8b 7f 08 mov 0x8(%r15),%rdi : * case the portal is destroyed during finish_xact_command. Can avoid the : * copy if it's not an xact command, though. : */ : if (is_xact_command) : { : sourceText = pstrdup(portal->sourceText); 0.00 : 69fa33: 48 89 c3 mov %rax,%rbx : if (portal->prepStmtName) 0.00 : 69fa36: 48 85 ff test %rdi,%rdi 0.00 : 69fa39: 0f 84 7f 02 00 00 je 69fcbe : prepStmtName = pstrdup(portal->prepStmtName); 0.00 : 69fa3f: e8 0c 95 0f 00 callq 798f50 0.00 : 69fa44: 48 89 9d 60 fe ff ff mov %rbx,-0x1a0(%rbp) 0.00 : 69fa4b: 48 89 85 58 fe ff ff mov %rax,-0x1a8(%rbp) 0.00 : 69fa52: 48 c7 85 50 fe ff ff movq $0x0,-0x1b0(%rbp) 0.00 : 69fa59: 00 00 00 00 0.00 : 69fa5d: c6 85 4e fe ff ff 01 movb $0x1,-0x1b2(%rbp) 0.00 : 69fa64: e9 41 f9 ff ff jmpq 69f3aa : errmsg("current transaction is aborted, " : "commands ignored until end of transaction block"), : errdetail_abort())); : : /* Check for cancel signal before we start execution */ : CHECK_FOR_INTERRUPTS(); 0.00 : 69fa69: e8 32 c8 ff ff callq 69c2a0 0.00 : 69fa6e: e9 53 fb ff ff jmpq 69f5c6 : { : /* old style without length word; convert */ : if (pq_getstring(inBuf)) : { : if (IsTransactionState()) : ereport(COMMERROR, 0.00 : 69fa73: 45 31 c0 xor %r8d,%r8d 0.00 : 69fa76: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69fa7b: ba 7a 01 00 00 mov $0x17a,%edx 0.00 : 69fa80: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69fa85: bf 10 00 00 00 mov $0x10,%edi 0.00 : 69fa8a: e8 31 b0 0d 00 callq 77aac0 0.00 : 69fa8f: 84 c0 test %al,%al 0.00 : 69fa91: 0f 84 a9 f0 ff ff je 69eb40 0.00 : 69fa97: bf 00 8c 87 00 mov $0x878c00,%edi 0.00 : 69fa9c: 44 89 f0 mov %r14d,%eax 0.00 : 69fa9f: e8 fc cd 0d 00 callq 77c8a0 0.00 : 69faa4: bf 00 02 00 06 mov $0x6000200,%edi 0.00 : 69faa9: 89 c3 mov %eax,%ebx 0.00 : 69faab: e9 88 f1 ff ff jmpq 69ec38 : execute_is_fetch = !portal->atStart; : : /* Log immediately if dictated by log_statement */ : if (check_log_statement(portal->stmts)) : { : ereport(LOG, 0.00 : 69fab0: 48 8b bd 50 fe ff ff mov -0x1b0(%rbp),%rdi 0.00 : 69fab7: e8 14 b9 ff ff callq 69b3d0 0.00 : 69fabc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 69fac1: 89 c3 mov %eax,%ebx 0.00 : 69fac3: e8 28 bf 0d 00 callq 77b9f0 0.00 : 69fac8: 41 89 c4 mov %eax,%r12d 0.00 : 69facb: 48 8b 85 40 fe ff ff mov -0x1c0(%rbp),%rax 0.00 : 69fad2: 41 b8 96 16 8e 00 mov $0x8e1696,%r8d 0.00 : 69fad8: b9 8a e7 87 00 mov $0x87e78a,%ecx 0.00 : 69fadd: 4c 8b 8d 60 fe ff ff mov -0x1a0(%rbp),%r9 0.00 : 69fae4: 48 8b 95 58 fe ff ff mov -0x1a8(%rbp),%rdx 0.00 : 69faeb: be 82 31 7c 00 mov $0x7c3182,%esi 0.00 : 69faf0: bf 2f ec 8a 00 mov $0x8aec2f,%edi 0.00 : 69faf5: 80 38 00 cmpb $0x0,(%rax) 0.00 : 69faf8: 49 0f 44 c8 cmove %r8,%rcx 0.00 : 69fafc: 4c 0f 45 c0 cmovne %rax,%r8 0.00 : 69fb00: 80 bd 4d fe ff ff 00 cmpb $0x0,-0x1b3(%rbp) 0.00 : 69fb07: b8 1c ec 8a 00 mov $0x8aec1c,%eax 0.00 : 69fb0c: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 69fb10: 44 89 f0 mov %r14d,%eax 0.00 : 69fb13: e8 88 cd 0d 00 callq 77c8a0 0.00 : 69fb18: 44 89 e6 mov %r12d,%esi 0.00 : 69fb1b: 89 c7 mov %eax,%edi 0.00 : 69fb1d: 89 da mov %ebx,%edx 0.00 : 69fb1f: 44 89 f0 mov %r14d,%eax 0.00 : 69fb22: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 69fb28: e8 b3 aa 0d 00 callq 77a5e0 0.00 : 69fb2d: e9 65 f9 ff ff jmpq 69f497 : : switch (close_type) : { : case 'S': : if (close_target[0] != '\0') : DropPreparedStatement(close_target, false); 0.00 : 69fb32: 31 f6 xor %esi,%esi 0.00 : 69fb34: 48 89 df mov %rbx,%rdi 0.00 : 69fb37: e8 54 8e ed ff callq 578990 0.00 : 69fb3c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 69fb40: e9 26 fc ff ff jmpq 69f76b : /* Find prepared statement */ : if (stmt_name[0] != '\0') : { : PreparedStatement *pstmt; : : pstmt = FetchPreparedStatement(stmt_name, true); 0.00 : 69fb45: be 01 00 00 00 mov $0x1,%esi 0.00 : 69fb4a: 4c 89 ff mov %r15,%rdi 0.00 : 69fb4d: e8 2e 8c ed ff callq 578780 : psrc = pstmt->plansource; 0.00 : 69fb52: 4c 8b 60 40 mov 0x40(%rax),%r12 0.00 : 69fb56: e9 59 fc ff ff jmpq 69f7b4 : : if (IsA(stmt, Query)) : { : Query *query = (Query *) stmt; : : if (query->commandType == CMD_UTILITY && 0.00 : 69fb5b: 83 78 04 05 cmpl $0x5,0x4(%rax) 0.00 : 69fb5f: 0f 85 06 f8 ff ff jne 69f36b 0.00 : 69fb65: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 69fb69: 81 38 db 02 00 00 cmpl $0x2db,(%rax) 0.00 : 69fb6f: 90 nop 0.00 : 69fb70: 0f 85 f5 f7 ff ff jne 69f36b 0.00 : 69fb76: e9 ab fe ff ff jmpq 69fa26 0.00 : 69fb7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * We need a CommandCounterIncrement after every query, except : * those that start or end a transaction block. : */ : CommandCounterIncrement(); 0.00 : 69fb80: e8 bb 43 e2 ff callq 4c3f40 0.00 : 69fb85: 0f 1f 00 nopl (%rax) 0.00 : 69fb88: e9 95 fa ff ff jmpq 69f622 : * Create dest receiver in MessageContext (we don't want it in transaction : * context, because that may get deleted if portal contains VACUUM). : */ : receiver = CreateDestReceiver(dest); : if (dest == DestRemoteExecute) : SetRemoteDestReceiverParams(receiver, portal); 0.00 : 69fb8d: 4c 89 fe mov %r15,%rsi 0.00 : 69fb90: 48 89 c7 mov %rax,%rdi 0.00 : 69fb93: e8 f8 1a dd ff callq 471690 0.00 : 69fb98: e9 6e f8 ff ff jmpq 69f40b : * EmptyQueryResponse. : */ : if (portal->commandTag == NULL) : { : Assert(portal->stmts == NIL); : NullCommand(dest); 0.00 : 69fb9d: 8b bd 74 fe ff ff mov -0x18c(%rbp),%edi 0.00 : 69fba3: e8 b8 a1 ff ff callq 699d60 0.00 : 69fba8: e9 cb ec ff ff jmpq 69e878 : : if (IsA(stmt, Query)) : { : Query *query = (Query *) stmt; : : if (query->commandType == CMD_UTILITY && 0.00 : 69fbad: 83 78 04 05 cmpl $0x5,0x4(%rax) 0.00 : 69fbb1: 0f 85 02 f9 ff ff jne 69f4b9 0.00 : 69fbb7: 48 8b 40 18 mov 0x18(%rax),%rax : : /* Test a bare parsetree */ : static bool : IsTransactionExitStmt(Node *parsetree) : { : if (parsetree && IsA(parsetree, TransactionStmt)) 0.00 : 69fbbb: 48 85 c0 test %rax,%rax 0.00 : 69fbbe: 66 90 xchg %ax,%ax 0.00 : 69fbc0: 0f 84 f3 f8 ff ff je 69f4b9 0.00 : 69fbc6: 81 38 db 02 00 00 cmpl $0x2db,(%rax) 0.00 : 69fbcc: 0f 85 e7 f8 ff ff jne 69f4b9 0.00 : 69fbd2: e9 c5 f9 ff ff jmpq 69f59c 0.00 : 69fbd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 69fbde: 00 00 : case 'c': /* copy done */ : case 'f': /* copy fail */ : doing_extended_query_message = false; : /* these are only legal in protocol 3 */ : if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) : ereport(FATAL, 0.00 : 69fbe0: 45 31 c0 xor %r8d,%r8d 0.00 : 69fbe3: b9 67 ff 8a 00 mov $0x8aff67,%ecx 0.00 : 69fbe8: ba b8 01 00 00 mov $0x1b8,%edx 0.00 : 69fbed: e9 9a ee ff ff jmpq 69ea8c : if (dest == DestRemote) : dest = DestRemoteExecute; : : portal = GetPortalByName(portal_name); : if (!PortalIsValid(portal)) : ereport(ERROR, 0.00 : 69fbf2: 45 31 c0 xor %r8d,%r8d 0.00 : 69fbf5: b9 e0 ff 8a 00 mov $0x8affe0,%ecx 0.00 : 69fbfa: ba 11 07 00 00 mov $0x711,%edx 0.00 : 69fbff: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69fc04: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69fc09: e8 b2 ae 0d 00 callq 77aac0 0.00 : 69fc0e: 84 c0 test %al,%al 0.00 : 69fc10: 0f 84 8d ee ff ff je 69eaa3 0.00 : 69fc16: 48 8b b5 40 fe ff ff mov -0x1c0(%rbp),%rsi : /* Switch back to message context */ : MemoryContextSwitchTo(MessageContext); : : portal = GetPortalByName(portal_name); : if (!PortalIsValid(portal)) : ereport(ERROR, 0.00 : 69fc1d: bf 01 ec 8a 00 mov $0x8aec01,%edi 0.00 : 69fc22: 31 c0 xor %eax,%eax 0.00 : 69fc24: e8 77 cc 0d 00 callq 77c8a0 0.00 : 69fc29: bf 03 01 00 00 mov $0x103,%edi 0.00 : 69fc2e: 89 c3 mov %eax,%ebx 0.00 : 69fc30: e9 38 f4 ff ff jmpq 69f06d : * blindly Describes whatever it does.) We can Describe parameters : * without doing anything dangerous, so we don't restrict that. : */ : if (IsAbortedTransactionBlockState() && : psrc->resultDesc) : ereport(ERROR, 0.00 : 69fc35: 45 31 c0 xor %r8d,%r8d 0.00 : 69fc38: b9 40 00 8b 00 mov $0x8b0040,%ecx 0.00 : 69fc3d: ba ec 08 00 00 mov $0x8ec,%edx 0.00 : 69fc42: e9 7f f8 ff ff jmpq 69f4c6 : else : { : /* special-case the unnamed statement */ : psrc = unnamed_stmt_psrc; : if (!psrc) : ereport(ERROR, 0.00 : 69fc47: 45 31 c0 xor %r8d,%r8d 0.00 : 69fc4a: b9 40 00 8b 00 mov $0x8b0040,%ecx 0.00 : 69fc4f: ba d7 08 00 00 mov $0x8d7,%edx 0.00 : 69fc54: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69fc59: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69fc5e: e8 5d ae 0d 00 callq 77aac0 0.00 : 69fc63: 84 c0 test %al,%al 0.00 : 69fc65: 0f 84 38 ee ff ff je 69eaa3 0.00 : 69fc6b: bf f0 f4 8a 00 mov $0x8af4f0,%edi 0.00 : 69fc70: 31 c0 xor %eax,%eax 0.00 : 69fc72: e8 29 cc 0d 00 callq 77c8a0 0.00 : 69fc77: bf 82 01 00 00 mov $0x182,%edi 0.00 : 69fc7c: 89 c3 mov %eax,%ebx 0.00 : 69fc7e: e9 ea f3 ff ff jmpq 69f06d : if (portal->tupDesc) : SendRowDescriptionMessage(portal->tupDesc, : FetchPortalTargetList(portal), : portal->formats); : else : pq_putemptymessage('n'); /* NoData */ 0.00 : 69fc83: bf 6e 00 00 00 mov $0x6e,%edi 0.00 : 69fc88: e8 93 d6 f3 ff callq 5dd320 0.00 : 69fc8d: e9 e6 eb ff ff jmpq 69e878 : /* Switch back to message context */ : MemoryContextSwitchTo(MessageContext); : : portal = GetPortalByName(portal_name); : if (!PortalIsValid(portal)) : ereport(ERROR, 0.00 : 69fc92: 45 31 c0 xor %r8d,%r8d 0.00 : 69fc95: b9 60 00 8b 00 mov $0x8b0060,%ecx 0.00 : 69fc9a: ba 27 09 00 00 mov $0x927,%edx 0.00 : 69fc9f: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69fca4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69fca9: e8 12 ae 0d 00 callq 77aac0 0.00 : 69fcae: 84 c0 test %al,%al 0.00 : 69fcb0: 0f 84 ed ed ff ff je 69eaa3 0.00 : 69fcb6: 4c 89 fe mov %r15,%rsi 0.00 : 69fcb9: e9 5f ff ff ff jmpq 69fc1d : * copy if it's not an xact command, though. : */ : if (is_xact_command) : { : sourceText = pstrdup(portal->sourceText); : if (portal->prepStmtName) 0.00 : 69fcbe: 48 89 85 60 fe ff ff mov %rax,-0x1a0(%rbp) 0.00 : 69fcc5: 48 c7 85 50 fe ff ff movq $0x0,-0x1b0(%rbp) 0.00 : 69fccc: 00 00 00 00 0.00 : 69fcd0: 48 c7 85 58 fe ff ff movq $0x8855a2,-0x1a8(%rbp) 0.00 : 69fcd7: a2 55 88 00 0.00 : 69fcdb: c6 85 4e fe ff ff 01 movb $0x1,-0x1b2(%rbp) 0.00 : 69fce2: e9 c3 f6 ff ff jmpq 69f3aa Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/tcop/utility.c:1707 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006a1f70 : : * NB: all result strings must be shorter than COMPLETION_TAG_BUFSIZE. : * Also, the result must point at a true constant (permanent storage). : */ : const char * : CreateCommandTag(Node *parsetree) : { 0.00 : 6a1f70: 55 push %rbp 0.00 : 6a1f71: 48 89 e5 mov %rsp,%rbp 0.00 : 6a1f74: 53 push %rbx 0.00 : 6a1f75: 48 89 fb mov %rdi,%rbx 0.00 : 6a1f78: 48 83 ec 08 sub $0x8,%rsp : const char *tag; : : switch (nodeTag(parsetree)) 0.00 : 6a1f7c: 8b 03 mov (%rbx),%eax 0.00 : 6a1f7e: 2d bc 02 00 00 sub $0x2bc,%eax 0.00 : 6a1f83: 83 f8 64 cmp $0x64,%eax 0.00 : 6a1f86: 76 40 jbe 6a1fc8 : } : } : break; : : default: : elog(WARNING, "unrecognized node type: %d", 0.00 : 6a1f88: ba f0 22 8b 00 mov $0x8b22f0,%edx 0.00 : 6a1f8d: be a1 09 00 00 mov $0x9a1,%esi 0.00 : 6a1f92: bf 8b 05 8b 00 mov $0x8b058b,%edi 0.00 : 6a1f97: e8 84 94 0d 00 callq 77b420 0.00 : 6a1f9c: 8b 13 mov (%rbx),%edx 0.00 : 6a1f9e: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 6a1fa3: bf 13 00 00 00 mov $0x13,%edi 0.00 : 6a1fa8: 31 c0 xor %eax,%eax 0.00 : 6a1faa: e8 81 92 0d 00 callq 77b230 0.00 : 6a1faf: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a1fb4: 0f 1f 40 00 nopl 0x0(%rax) : tag = "???"; : break; : } : : return tag; : } 0.00 : 6a1fb8: 48 83 c4 08 add $0x8,%rsp 0.00 : 6a1fbc: 48 89 c8 mov %rcx,%rax 0.00 : 6a1fbf: 5b pop %rbx 0.00 : 6a1fc0: c9 leaveq 0.00 : 6a1fc1: c3 retq 0.00 : 6a1fc2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : const char * : CreateCommandTag(Node *parsetree) : { : const char *tag; : : switch (nodeTag(parsetree)) /home/Computational/mark/src/postgres-andres/src/backend/tcop/utility.c:1707 100.00 : 6a1fc8: 89 c0 mov %eax,%eax 0.00 : 6a1fca: ff 24 c5 c8 11 8b 00 jmpq *0x8b11c8(,%rax,8) 0.00 : 6a1fd1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case T_AlterObjectSchemaStmt: : tag = AlterObjectTypeCommandTag(((AlterObjectSchemaStmt *) parsetree)->objectType); : break; : : case T_AlterOwnerStmt: : tag = AlterObjectTypeCommandTag(((AlterOwnerStmt *) parsetree)->objectType); 0.00 : 6a1fd8: 8b 7b 04 mov 0x4(%rbx),%edi : tag = "???"; : break; : } : : return tag; : } 0.00 : 6a1fdb: 48 83 c4 08 add $0x8,%rsp 0.00 : 6a1fdf: 5b pop %rbx 0.00 : 6a1fe0: c9 leaveq : case T_AlterObjectSchemaStmt: : tag = AlterObjectTypeCommandTag(((AlterObjectSchemaStmt *) parsetree)->objectType); : break; : : case T_AlterOwnerStmt: : tag = AlterObjectTypeCommandTag(((AlterOwnerStmt *) parsetree)->objectType); 0.00 : 6a1fe1: e9 5a fb ff ff jmpq 6a1b40 : tag = "ALTER TEXT SEARCH CONFIGURATION"; : break; : : case T_CreatePolicyStmt: : tag = "CREATE POLICY"; : break; 0.00 : 6a1fe6: b9 a5 04 8b 00 mov $0x8b04a5,%ecx : : case T_AlterPolicyStmt: : tag = "ALTER POLICY"; : break; 0.00 : 6a1feb: eb cb jmp 6a1fb8 : tag = "CREATE TABLE"; : break; : : case T_CreateTableSpaceStmt: : tag = "CREATE TABLESPACE"; : break; 0.00 : 6a1fed: b9 32 06 8b 00 mov $0x8b0632,%ecx : : case T_DropTableSpaceStmt: : tag = "DROP TABLESPACE"; : break; 0.00 : 6a1ff2: eb c4 jmp 6a1fb8 : tag = "CREATE SCHEMA"; : break; : : case T_CreateStmt: : tag = "CREATE TABLE"; : break; 0.00 : 6a1ff4: b9 20 06 8b 00 mov $0x8b0620,%ecx : : case T_CreateTableSpaceStmt: : tag = "CREATE TABLESPACE"; : break; 0.00 : 6a1ff9: eb bd jmp 6a1fb8 : tag = "COMMIT PREPARED"; : break; : : case TRANS_STMT_ROLLBACK_PREPARED: : tag = "ROLLBACK PREPARED"; : break; 0.00 : 6a1ffb: b9 ef 04 88 00 mov $0x8804ef,%ecx : } : break; : : case T_DeclareCursorStmt: : tag = "DECLARE CURSOR"; : break; 0.00 : 6a2000: eb b6 jmp 6a1fb8 : : case T_DeallocateStmt: : { : DeallocateStmt *stmt = (DeallocateStmt *) parsetree; : : if (stmt->name == NULL) 0.00 : 6a2002: 48 83 7b 08 00 cmpq $0x0,0x8(%rbx) 0.00 : 6a2007: b9 e3 0a 8b 00 mov $0x8b0ae3,%ecx 0.00 : 6a200c: b8 ee 0a 8b 00 mov $0x8b0aee,%eax 0.00 : 6a2011: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 6a2015: eb a1 jmp 6a1fb8 : tag = "ALTER POLICY"; : break; : : case T_PrepareStmt: : tag = "PREPARE"; : break; 0.00 : 6a2017: b9 2e 31 7c 00 mov $0x7c312e,%ecx : : case T_ExecuteStmt: : tag = "EXECUTE"; : break; 0.00 : 6a201c: eb 9a jmp 6a1fb8 : tag = "CREATE POLICY"; : break; : : case T_AlterPolicyStmt: : tag = "ALTER POLICY"; : break; 0.00 : 6a201e: b9 c5 57 7b 00 mov $0x7b57c5,%ecx : : case T_PrepareStmt: : tag = "PREPARE"; : break; 0.00 : 6a2023: eb 93 jmp 6a1fb8 : tag = "CREATE OPERATOR CLASS"; : break; : : case T_CreateOpFamilyStmt: : tag = "CREATE OPERATOR FAMILY"; : break; 0.00 : 6a2025: b9 8f 04 8b 00 mov $0x8b048f,%ecx : : case T_AlterOpFamilyStmt: : tag = "ALTER OPERATOR FAMILY"; : break; 0.00 : 6a202a: eb 8c jmp 6a1fb8 : tag = "CREATE CAST"; : break; : : case T_CreateOpClassStmt: : tag = "CREATE OPERATOR CLASS"; : break; 0.00 : 6a202c: b9 be 0a 8b 00 mov $0x8b0abe,%ecx : : case T_CreateOpFamilyStmt: : tag = "CREATE OPERATOR FAMILY"; : break; 0.00 : 6a2031: eb 85 jmp 6a1fb8 : tag = "CREATE CONVERSION"; : break; : : case T_CreateCastStmt: : tag = "CREATE CAST"; : break; 0.00 : 6a2033: b9 a8 0a 8b 00 mov $0x8b0aa8,%ecx : : case T_CreateOpClassStmt: : tag = "CREATE OPERATOR CLASS"; : break; 0.00 : 6a2038: e9 7b ff ff ff jmpq 6a1fb8 : tag = "REINDEX"; : break; : : case T_CreateConversionStmt: : tag = "CREATE CONVERSION"; : break; 0.00 : 6a203d: b9 9c 0a 8b 00 mov $0x8b0a9c,%ecx : : case T_CreateCastStmt: : tag = "CREATE CAST"; : break; 0.00 : 6a2042: e9 71 ff ff ff jmpq 6a1fb8 : tag = "CHECKPOINT"; : break; : : case T_ReindexStmt: : tag = "REINDEX"; : break; 0.00 : 6a2047: b9 8a 0a 8b 00 mov $0x8b0a8a,%ecx : : case T_CreateConversionStmt: : tag = "CREATE CONVERSION"; : break; 0.00 : 6a204c: e9 67 ff ff ff jmpq 6a1fb8 : tag = "CREATE ROLE"; : break; : : case T_AlterRoleStmt: : tag = "ALTER ROLE"; : break; 0.00 : 6a2051: b9 b2 04 8b 00 mov $0x8b04b2,%ecx : : case T_AlterRoleSetStmt: : tag = "ALTER ROLE"; : break; 0.00 : 6a2056: e9 5d ff ff ff jmpq 6a1fb8 : tag = "CREATE DATABASE"; : break; : : case T_AlterDatabaseStmt: : tag = "ALTER DATABASE"; : break; 0.00 : 6a205b: b9 ed 03 8b 00 mov $0x8b03ed,%ecx : : case T_AlterDatabaseSetStmt: : tag = "ALTER DATABASE"; : break; 0.00 : 6a2060: e9 53 ff ff ff jmpq 6a1fb8 : tag = "DO"; : break; : : case T_CreatedbStmt: : tag = "CREATE DATABASE"; : break; 0.00 : 6a2065: b9 ed 03 8b 00 mov $0x8b03ed,%ecx : : case T_AlterDatabaseStmt: : tag = "ALTER DATABASE"; : break; 0.00 : 6a206a: e9 49 ff ff ff jmpq 6a1fb8 : } : break; : : case T_CreateDomainStmt: : tag = "CREATE DOMAIN"; : break; 0.00 : 6a206f: b9 12 06 8b 00 mov $0x8b0612,%ecx : : case T_CreateSchemaStmt: : tag = "CREATE SCHEMA"; : break; 0.00 : 6a2074: e9 3f ff ff ff jmpq 6a1fb8 : tag = "LOCK TABLE"; : break; : : case T_ConstraintsSetStmt: : tag = "SET CONSTRAINTS"; : break; 0.00 : 6a2079: b9 77 0a 8b 00 mov $0x8b0a77,%ecx : : case T_CheckPointStmt: : tag = "CHECKPOINT"; : break; 0.00 : 6a207e: e9 35 ff ff ff jmpq 6a1fb8 0.00 : 6a2083: b9 82 0a 8b 00 mov $0x8b0a82,%ecx : : case T_ReindexStmt: : tag = "REINDEX"; : break; 0.00 : 6a2088: e9 2b ff ff ff jmpq 6a1fb8 : tag = "REASSIGN OWNED"; : break; : : case T_LockStmt: : tag = "LOCK TABLE"; : break; 0.00 : 6a208d: b9 67 0a 8b 00 mov $0x8b0a67,%ecx : : case T_ConstraintsSetStmt: : tag = "SET CONSTRAINTS"; : break; 0.00 : 6a2092: e9 21 ff ff ff jmpq 6a1fb8 : tag = "DROP OWNED"; : break; : : case T_ReassignOwnedStmt: : tag = "REASSIGN OWNED"; : break; 0.00 : 6a2097: b9 e0 ee 87 00 mov $0x87eee0,%ecx : : case T_LockStmt: : tag = "LOCK TABLE"; : break; 0.00 : 6a209c: e9 17 ff ff ff jmpq 6a1fb8 : tag = "ALTER ROLE"; : break; : : case T_AlterRoleSetStmt: : tag = "ALTER ROLE"; : break; 0.00 : 6a20a1: b9 4e 0a 8b 00 mov $0x8b0a4e,%ecx : : case T_DropRoleStmt: : tag = "DROP ROLE"; : break; 0.00 : 6a20a6: e9 0d ff ff ff jmpq 6a1fb8 : tag = "CREATE LANGUAGE"; : break; : : case T_CreateRoleStmt: : tag = "CREATE ROLE"; : break; 0.00 : 6a20ab: b9 b2 04 8b 00 mov $0x8b04b2,%ecx : : case T_AlterRoleStmt: : tag = "ALTER ROLE"; : break; 0.00 : 6a20b0: e9 03 ff ff ff jmpq 6a1fb8 : tag = "ALTER EVENT TRIGGER"; : break; : : case T_CreatePLangStmt: : tag = "CREATE LANGUAGE"; : break; 0.00 : 6a20b5: b9 42 0a 8b 00 mov $0x8b0a42,%ecx : : case T_CreateRoleStmt: : tag = "CREATE ROLE"; : break; 0.00 : 6a20ba: e9 f9 fe ff ff jmpq 6a1fb8 : tag = "CREATE EVENT TRIGGER"; : break; : : case T_AlterEventTrigStmt: : tag = "ALTER EVENT TRIGGER"; : break; 0.00 : 6a20bf: b9 32 0a 8b 00 mov $0x8b0a32,%ecx : : case T_CreatePLangStmt: : tag = "CREATE LANGUAGE"; : break; 0.00 : 6a20c4: e9 ef fe ff ff jmpq 6a1fb8 : case DISCARD_TEMP: : tag = "DISCARD TEMP"; : break; : case DISCARD_SEQUENCES: : tag = "DISCARD SEQUENCES"; : break; 0.00 : 6a20c9: b9 0e 0a 8b 00 mov $0x8b0a0e,%ecx : } : break; : : case T_CreateTrigStmt: : tag = "CREATE TRIGGER"; : break; 0.00 : 6a20ce: e9 e5 fe ff ff jmpq 6a1fb8 : case T_VariableShowStmt: : tag = "SHOW"; : break; : : case T_DiscardStmt: : switch (((DiscardStmt *) parsetree)->target) 0.00 : 6a20d3: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6a20d6: b9 e1 09 8b 00 mov $0x8b09e1,%ecx 0.00 : 6a20db: 83 f8 01 cmp $0x1,%eax 0.00 : 6a20de: 0f 84 d4 fe ff ff je 6a1fb8 0.00 : 6a20e4: b9 15 ab 87 00 mov $0x87ab15,%ecx 0.00 : 6a20e9: 0f 82 c9 fe ff ff jb 6a1fb8 0.00 : 6a20ef: 83 f8 02 cmp $0x2,%eax : case DISCARD_PLANS: : tag = "DISCARD PLANS"; : break; : case DISCARD_TEMP: : tag = "DISCARD TEMP"; : break; 0.00 : 6a20f2: b9 fc 09 8b 00 mov $0x8b09fc,%ecx : case T_VariableShowStmt: : tag = "SHOW"; : break; : : case T_DiscardStmt: : switch (((DiscardStmt *) parsetree)->target) 0.00 : 6a20f7: 0f 84 bb fe ff ff je 6a1fb8 : case DISCARD_TEMP: : tag = "DISCARD TEMP"; : break; : case DISCARD_SEQUENCES: : tag = "DISCARD SEQUENCES"; : break; 0.00 : 6a20fd: 83 f8 03 cmp $0x3,%eax 0.00 : 6a2100: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a2105: b8 ef 09 8b 00 mov $0x8b09ef,%eax 0.00 : 6a210a: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 6a210e: e9 a5 fe ff ff jmpq 6a1fb8 : case T_AlterSystemStmt: : tag = "ALTER SYSTEM"; : break; : : case T_VariableSetStmt: : switch (((VariableSetStmt *) parsetree)->kind) 0.00 : 6a2113: b9 dc 09 8b 00 mov $0x8b09dc,%ecx : } : break; : : case T_VariableShowStmt: : tag = "SHOW"; : break; 0.00 : 6a2118: e9 9b fe ff ff jmpq 6a1fb8 : case T_AlterSystemStmt: : tag = "ALTER SYSTEM"; : break; : : case T_VariableSetStmt: : switch (((VariableSetStmt *) parsetree)->kind) 0.00 : 6a211d: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6a2120: b9 e3 61 8c 00 mov $0x8c61e3,%ecx 0.00 : 6a2125: 83 f8 03 cmp $0x3,%eax 0.00 : 6a2128: 0f 86 8a fe ff ff jbe 6a1fb8 0.00 : 6a212e: 83 f8 05 cmp $0x5,%eax 0.00 : 6a2131: b9 21 3b 8d 00 mov $0x8d3b21,%ecx 0.00 : 6a2136: b8 cc 50 7b 00 mov $0x7b50cc,%eax 0.00 : 6a213b: 48 0f 47 c8 cmova %rax,%rcx 0.00 : 6a213f: e9 74 fe ff ff jmpq 6a1fb8 : tag = "CREATE RULE"; : break; : : case T_CreateSeqStmt: : tag = "CREATE SEQUENCE"; : break; 0.00 : 6a2144: b9 d5 04 8b 00 mov $0x8b04d5,%ecx : : case T_AlterSeqStmt: : tag = "ALTER SEQUENCE"; : break; 0.00 : 6a2149: e9 6a fe ff ff jmpq 6a1fb8 : tag = "CREATE INDEX"; : break; : : case T_RuleStmt: : tag = "CREATE RULE"; : break; 0.00 : 6a214e: b9 6f 09 8b 00 mov $0x8b096f,%ecx : : case T_CreateSeqStmt: : tag = "CREATE SEQUENCE"; : break; 0.00 : 6a2153: e9 60 fe ff ff jmpq 6a1fb8 : case T_ExplainStmt: : tag = "EXPLAIN"; : break; : : case T_CreateTableAsStmt: : switch (((CreateTableAsStmt *) parsetree)->relkind) 0.00 : 6a2158: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 6a215b: b9 b6 09 8b 00 mov $0x8b09b6,%ecx 0.00 : 6a2160: 83 f8 12 cmp $0x12,%eax 0.00 : 6a2163: 0f 84 4f fe ff ff je 6a1fb8 0.00 : 6a2169: 83 f8 1b cmp $0x1b,%eax 0.00 : 6a216c: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a2171: 0f 85 41 fe ff ff jne 6a1fb8 : { : case OBJECT_TABLE: : if (((CreateTableAsStmt *) parsetree)->is_select_into) 0.00 : 6a2177: 80 7b 1c 00 cmpb $0x0,0x1c(%rbx) 0.00 : 6a217b: b9 0a b2 87 00 mov $0x87b20a,%ecx 0.00 : 6a2180: b8 1a b2 87 00 mov $0x87b21a,%eax 0.00 : 6a2185: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 6a2189: e9 2a fe ff ff jmpq 6a1fb8 : case T_ClusterStmt: : tag = "CLUSTER"; : break; : : case T_VacuumStmt: : if (((VacuumStmt *) parsetree)->options & VACOPT_VACUUM) 0.00 : 6a218e: b9 ae 09 8b 00 mov $0x8b09ae,%ecx : tag = "ANALYZE"; : break; : : case T_ExplainStmt: : tag = "EXPLAIN"; : break; 0.00 : 6a2193: e9 20 fe ff ff jmpq 6a1fb8 : case T_ClusterStmt: : tag = "CLUSTER"; : break; : : case T_VacuumStmt: : if (((VacuumStmt *) parsetree)->options & VACOPT_VACUUM) 0.00 : 6a2198: f6 43 04 01 testb $0x1,0x4(%rbx) 0.00 : 6a219c: b9 b9 de 89 00 mov $0x89deb9,%ecx 0.00 : 6a21a1: b8 8f 54 7b 00 mov $0x7b548f,%eax 0.00 : 6a21a6: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 6a21aa: e9 09 fe ff ff jmpq 6a1fb8 : tag = "ALTER DATABASE"; : break; : : case T_AlterDatabaseSetStmt: : tag = "ALTER DATABASE"; : break; 0.00 : 6a21af: b9 92 09 8b 00 mov $0x8b0992,%ecx : : case T_DropdbStmt: : tag = "DROP DATABASE"; : break; 0.00 : 6a21b4: e9 ff fd ff ff jmpq 6a1fb8 : tag = "ALTER SEQUENCE"; : break; : : case T_DoStmt: : tag = "DO"; : break; 0.00 : 6a21b9: b9 82 09 8b 00 mov $0x8b0982,%ecx : : case T_CreatedbStmt: : tag = "CREATE DATABASE"; : break; 0.00 : 6a21be: e9 f5 fd ff ff jmpq 6a1fb8 : : case T_FetchStmt: : { : FetchStmt *stmt = (FetchStmt *) parsetree; : : tag = (stmt->ismove) ? "MOVE" : "FETCH"; 0.00 : 6a21c3: b9 04 06 8b 00 mov $0x8b0604,%ecx : } : break; : : case T_CreateDomainStmt: : tag = "CREATE DOMAIN"; : break; 0.00 : 6a21c8: e9 eb fd ff ff jmpq 6a1fb8 : tag = "LISTEN"; : break; : : case T_UnlistenStmt: : tag = "UNLISTEN"; : break; 0.00 : 6a21cd: b9 a9 09 8b 00 mov $0x8b09a9,%ecx : : case T_LoadStmt: : tag = "LOAD"; : break; 0.00 : 6a21d2: e9 e1 fd ff ff jmpq 6a1fb8 : tag = "CREATE TYPE"; : break; : : case T_AlterEnumStmt: : tag = "ALTER TYPE"; : break; 0.00 : 6a21d7: b9 3a 09 8b 00 mov $0x8b093a,%ecx : : case T_ViewStmt: : tag = "CREATE VIEW"; : break; 0.00 : 6a21dc: e9 d7 fd ff ff jmpq 6a1fb8 : /* utility statements --- same whether raw or cooked */ : case T_TransactionStmt: : { : TransactionStmt *stmt = (TransactionStmt *) parsetree; : : switch (stmt->kind) 0.00 : 6a21e1: 83 7b 04 09 cmpl $0x9,0x4(%rbx) : tag = "COMMIT PREPARED"; : break; : : case TRANS_STMT_ROLLBACK_PREPARED: : tag = "ROLLBACK PREPARED"; : break; 0.00 : 6a21e5: b9 cc 50 7b 00 mov $0x7b50cc,%ecx : /* utility statements --- same whether raw or cooked */ : case T_TransactionStmt: : { : TransactionStmt *stmt = (TransactionStmt *) parsetree; : : switch (stmt->kind) 0.00 : 6a21ea: 0f 87 c8 fd ff ff ja 6a1fb8 0.00 : 6a21f0: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6a21f3: ff 24 c5 f0 14 8b 00 jmpq *0x8b14f0(,%rax,8) : tag = "NOTIFY"; : break; : : case T_ListenStmt: : tag = "LISTEN"; : break; 0.00 : 6a21fa: b9 a0 09 8b 00 mov $0x8b09a0,%ecx : : case T_UnlistenStmt: : tag = "UNLISTEN"; : break; 0.00 : 6a21ff: e9 b4 fd ff ff jmpq 6a1fb8 : tag = "CREATE SEQUENCE"; : break; : : case T_AlterSeqStmt: : tag = "ALTER SEQUENCE"; : break; 0.00 : 6a2204: b9 7f 09 8b 00 mov $0x8b097f,%ecx : : case T_DoStmt: : tag = "DO"; : break; 0.00 : 6a2209: e9 aa fd ff ff jmpq 6a1fb8 : tag = AlterObjectTypeCommandTag(((AlterTableStmt *) parsetree)->relkind); : break; : : case T_AlterDomainStmt: : tag = "ALTER DOMAIN"; : break; 0.00 : 6a220e: b9 41 04 8b 00 mov $0x8b0441,%ecx : : case T_AlterFunctionStmt: : tag = "ALTER FUNCTION"; : break; 0.00 : 6a2213: e9 a0 fd ff ff jmpq 6a1fb8 : tag = "ALTER TYPE"; : break; : : case T_ViewStmt: : tag = "CREATE VIEW"; : break; 0.00 : 6a2218: b9 46 09 8b 00 mov $0x8b0946,%ecx : : case T_CreateFunctionStmt: : tag = "CREATE FUNCTION"; : break; 0.00 : 6a221d: e9 96 fd ff ff jmpq 6a1fb8 0.00 : 6a2222: b9 56 09 8b 00 mov $0x8b0956,%ecx : : case T_IndexStmt: : tag = "CREATE INDEX"; : break; 0.00 : 6a2227: e9 8c fd ff ff jmpq 6a1fb8 : tag = "ALTER DATABASE"; : break; : : case T_DropdbStmt: : tag = "DROP DATABASE"; : break; 0.00 : 6a222c: b9 11 7c 87 00 mov $0x877c11,%ecx : : case T_NotifyStmt: : tag = "NOTIFY"; : break; 0.00 : 6a2231: e9 82 fd ff ff jmpq 6a1fb8 : tag = "CREATE FUNCTION"; : break; : : case T_IndexStmt: : tag = "CREATE INDEX"; : break; 0.00 : 6a2236: b9 63 09 8b 00 mov $0x8b0963,%ecx : : case T_RuleStmt: : tag = "CREATE RULE"; : break; 0.00 : 6a223b: e9 78 fd ff ff jmpq 6a1fb8 : tag = "DROP DATABASE"; : break; : : case T_NotifyStmt: : tag = "NOTIFY"; : break; 0.00 : 6a2240: b9 a2 09 8b 00 mov $0x8b09a2,%ecx : : case T_ListenStmt: : tag = "LISTEN"; : break; 0.00 : 6a2245: e9 6e fd ff ff jmpq 6a1fb8 : : case T_FetchStmt: : { : FetchStmt *stmt = (FetchStmt *) parsetree; : : tag = (stmt->ismove) ? "MOVE" : "FETCH"; 0.00 : 6a224a: 80 7b 18 00 cmpb $0x0,0x18(%rbx) 0.00 : 6a224e: b9 27 cd 88 00 mov $0x88cd27,%ecx 0.00 : 6a2253: b8 e3 04 88 00 mov $0x8804e3,%eax 0.00 : 6a2258: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 6a225c: e9 57 fd ff ff jmpq 6a1fb8 : } : break; : : case T_TruncateStmt: : tag = "TRUNCATE TABLE"; : break; 0.00 : 6a2261: b9 6d 08 8b 00 mov $0x8b086d,%ecx : : case T_CommentStmt: : tag = "COMMENT"; : break; 0.00 : 6a2266: e9 4d fd ff ff jmpq 6a1fb8 : case OBJECT_OPFAMILY: : tag = "DROP OPERATOR FAMILY"; : break; : case OBJECT_POLICY: : tag = "DROP POLICY"; : break; 0.00 : 6a226b: b9 5e 08 8b 00 mov $0x8b085e,%ecx : } : break; : : case T_TruncateStmt: : tag = "TRUNCATE TABLE"; : break; 0.00 : 6a2270: e9 43 fd ff ff jmpq 6a1fb8 : case T_ImportForeignSchemaStmt: : tag = "IMPORT FOREIGN SCHEMA"; : break; : : case T_DropStmt: : switch (((DropStmt *) parsetree)->removeType) 0.00 : 6a2275: 83 7b 18 23 cmpl $0x23,0x18(%rbx) 0.00 : 6a2279: 0f 86 d7 02 00 00 jbe 6a2556 : case OBJECT_OPFAMILY: : tag = "DROP OPERATOR FAMILY"; : break; : case OBJECT_POLICY: : tag = "DROP POLICY"; : break; 0.00 : 6a227f: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a2284: e9 2f fd ff ff jmpq 6a1fb8 0.00 : 6a2289: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case T_AlterDefaultPrivilegesStmt: : tag = "ALTER DEFAULT PRIVILEGES"; : break; : : case T_DefineStmt: : switch (((DefineStmt *) parsetree)->kind) 0.00 : 6a2290: 83 7b 04 22 cmpl $0x22,0x4(%rbx) 0.00 : 6a2294: 0f 86 ee 03 00 00 jbe 6a2688 : case OBJECT_TSCONFIGURATION: : tag = "CREATE TEXT SEARCH CONFIGURATION"; : break; : case OBJECT_COLLATION: : tag = "CREATE COLLATION"; : break; 0.00 : 6a229a: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a229f: e9 14 fd ff ff jmpq 6a1fb8 : tag = "COMMENT"; : break; : : case T_SecLabelStmt: : tag = "SECURITY LABEL"; : break; 0.00 : 6a22a4: b9 4a cc 88 00 mov $0x88cc4a,%ecx : : case T_CopyStmt: : tag = "COPY"; : break; 0.00 : 6a22a9: e9 0a fd ff ff jmpq 6a1fb8 : tag = "CREATE DOMAIN"; : break; : : case T_CreateSchemaStmt: : tag = "CREATE SCHEMA"; : break; 0.00 : 6a22ae: b9 7f 5d 87 00 mov $0x875d7f,%ecx : : case T_CreateStmt: : tag = "CREATE TABLE"; : break; 0.00 : 6a22b3: e9 00 fd ff ff jmpq 6a1fb8 : tag = "UNLISTEN"; : break; : : case T_LoadStmt: : tag = "LOAD"; : break; 0.00 : 6a22b8: b9 ef 7f 87 00 mov $0x877fef,%ecx : : case T_ClusterStmt: : tag = "CLUSTER"; : break; 0.00 : 6a22bd: e9 f6 fc ff ff jmpq 6a1fb8 : : case T_ClosePortalStmt: : { : ClosePortalStmt *stmt = (ClosePortalStmt *) parsetree; : : if (stmt->portalname == NULL) 0.00 : 6a22c2: 48 83 7b 08 00 cmpq $0x0,0x8(%rbx) 0.00 : 6a22c7: b9 e6 05 8b 00 mov $0x8b05e6,%ecx 0.00 : 6a22cc: b8 f3 05 8b 00 mov $0x8b05f3,%eax 0.00 : 6a22d1: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 6a22d5: e9 de fc ff ff jmpq 6a1fb8 : : case T_GrantRoleStmt: : { : GrantRoleStmt *stmt = (GrantRoleStmt *) parsetree; : : tag = (stmt->is_grant) ? "GRANT ROLE" : "REVOKE ROLE"; 0.00 : 6a22da: b9 40 b2 87 00 mov $0x87b240,%ecx : } : break; : : case T_AlterDefaultPrivilegesStmt: : tag = "ALTER DEFAULT PRIVILEGES"; : break; 0.00 : 6a22df: e9 d4 fc ff ff jmpq 6a1fb8 : : case T_GrantRoleStmt: : { : GrantRoleStmt *stmt = (GrantRoleStmt *) parsetree; : : tag = (stmt->is_grant) ? "GRANT ROLE" : "REVOKE ROLE"; 0.00 : 6a22e4: 80 7b 18 00 cmpb $0x0,0x18(%rbx) 0.00 : 6a22e8: b9 91 08 8b 00 mov $0x8b0891,%ecx 0.00 : 6a22ed: b8 9d 08 8b 00 mov $0x8b089d,%eax 0.00 : 6a22f2: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 6a22f6: e9 bd fc ff ff jmpq 6a1fb8 : : case T_GrantStmt: : { : GrantStmt *stmt = (GrantStmt *) parsetree; : : tag = (stmt->is_grant) ? "GRANT" : "REVOKE"; 0.00 : 6a22fb: 80 7b 04 00 cmpb $0x0,0x4(%rbx) 0.00 : 6a22ff: b9 84 08 8b 00 mov $0x8b0884,%ecx 0.00 : 6a2304: b8 8b 08 8b 00 mov $0x8b088b,%eax 0.00 : 6a2309: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 6a230d: e9 a6 fc ff ff jmpq 6a1fb8 : case T_AlterTableMoveAllStmt: : tag = AlterObjectTypeCommandTag(((AlterTableMoveAllStmt *) parsetree)->objtype); : break; : : case T_AlterTableStmt: : tag = AlterObjectTypeCommandTag(((AlterTableStmt *) parsetree)->relkind); 0.00 : 6a2312: b9 fc 03 8b 00 mov $0x8b03fc,%ecx : break; : : case T_AlterDomainStmt: : tag = "ALTER DOMAIN"; : break; 0.00 : 6a2317: e9 9c fc ff ff jmpq 6a1fb8 : case T_AlterTableMoveAllStmt: : tag = AlterObjectTypeCommandTag(((AlterTableMoveAllStmt *) parsetree)->objtype); : break; : : case T_AlterTableStmt: : tag = AlterObjectTypeCommandTag(((AlterTableStmt *) parsetree)->relkind); 0.00 : 6a231c: 8b 7b 18 mov 0x18(%rbx),%edi : tag = "???"; : break; : } : : return tag; : } 0.00 : 6a231f: 48 83 c4 08 add $0x8,%rsp 0.00 : 6a2323: 5b pop %rbx 0.00 : 6a2324: c9 leaveq : case T_AlterTableMoveAllStmt: : tag = AlterObjectTypeCommandTag(((AlterTableMoveAllStmt *) parsetree)->objtype); : break; : : case T_AlterTableStmt: : tag = AlterObjectTypeCommandTag(((AlterTableStmt *) parsetree)->relkind); 0.00 : 6a2325: e9 16 f8 ff ff jmpq 6a1b40 : tag = "DELETE"; : break; : : case T_UpdateStmt: : tag = "UPDATE"; : break; 0.00 : 6a232a: b9 e3 7d 89 00 mov $0x897de3,%ecx : : case T_SelectStmt: : tag = "SELECT"; : break; 0.00 : 6a232f: e9 84 fc ff ff jmpq 6a1fb8 : const char * : CreateCommandTag(Node *parsetree) : { : const char *tag; : : switch (nodeTag(parsetree)) 0.00 : 6a2334: b9 c7 73 8c 00 mov $0x8c73c7,%ecx : tag = "DELETE"; : break; : : case T_UpdateStmt: : tag = "UPDATE"; : break; 0.00 : 6a2339: e9 7a fc ff ff jmpq 6a1fb8 : const char * : CreateCommandTag(Node *parsetree) : { : const char *tag; : : switch (nodeTag(parsetree)) 0.00 : 6a233e: b9 bc 73 8c 00 mov $0x8c73bc,%ecx 0.00 : 6a2343: e9 70 fc ff ff jmpq 6a1fb8 0.00 : 6a2348: b9 b1 73 8c 00 mov $0x8c73b1,%ecx 0.00 : 6a234d: e9 66 fc ff ff jmpq 6a1fb8 : /* already-planned queries */ : case T_PlannedStmt: : { : PlannedStmt *stmt = (PlannedStmt *) parsetree; : : switch (stmt->commandType) 0.00 : 6a2352: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6a2355: b9 c7 73 8c 00 mov $0x8c73c7,%ecx 0.00 : 6a235a: 83 f8 02 cmp $0x2,%eax 0.00 : 6a235d: 0f 84 55 fc ff ff je 6a1fb8 0.00 : 6a2363: 0f 87 17 04 00 00 ja 6a2780 0.00 : 6a2369: 83 e8 01 sub $0x1,%eax 0.00 : 6a236c: 0f 84 2f 04 00 00 je 6a27a1 : break; : case CMD_DELETE: : tag = "DELETE"; : break; : default: : elog(WARNING, "unrecognized commandType: %d", 0.00 : 6a2372: ba f0 22 8b 00 mov $0x8b22f0,%edx 0.00 : 6a2377: be 57 09 00 00 mov $0x957,%esi 0.00 : 6a237c: bf 8b 05 8b 00 mov $0x8b058b,%edi 0.00 : 6a2381: e8 9a 90 0d 00 callq 77b420 0.00 : 6a2386: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 6a2389: be fb 8c 8a 00 mov $0x8a8cfb,%esi 0.00 : 6a238e: bf 13 00 00 00 mov $0x13,%edi 0.00 : 6a2393: 31 c0 xor %eax,%eax 0.00 : 6a2395: e8 96 8e 0d 00 callq 77b230 0.00 : 6a239a: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a239f: e9 14 fc ff ff jmpq 6a1fb8 : /* parsed-and-rewritten-but-not-planned queries */ : case T_Query: : { : Query *stmt = (Query *) parsetree; : : switch (stmt->commandType) 0.00 : 6a23a4: 83 7b 04 05 cmpl $0x5,0x4(%rbx) 0.00 : 6a23a8: 0f 86 34 03 00 00 jbe 6a26e2 : break; : case CMD_UTILITY: : tag = CreateCommandTag(stmt->utilityStmt); : break; : default: : elog(WARNING, "unrecognized commandType: %d", 0.00 : 6a23ae: ba f0 22 8b 00 mov $0x8b22f0,%edx 0.00 : 6a23b3: be 98 09 00 00 mov $0x998,%esi 0.00 : 6a23b8: bf 8b 05 8b 00 mov $0x8b058b,%edi 0.00 : 6a23bd: e8 5e 90 0d 00 callq 77b420 0.00 : 6a23c2: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 6a23c5: be fb 8c 8a 00 mov $0x8a8cfb,%esi 0.00 : 6a23ca: bf 13 00 00 00 mov $0x13,%edi 0.00 : 6a23cf: 31 c0 xor %eax,%eax 0.00 : 6a23d1: e8 5a 8e 0d 00 callq 77b230 0.00 : 6a23d6: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a23db: e9 d8 fb ff ff jmpq 6a1fb8 : tag = "CREATE TABLESPACE"; : break; : : case T_DropTableSpaceStmt: : tag = "DROP TABLESPACE"; : break; 0.00 : 6a23e0: b9 e4 04 8b 00 mov $0x8b04e4,%ecx : : case T_AlterTableSpaceOptionsStmt: : tag = "ALTER TABLESPACE"; : break; 0.00 : 6a23e5: e9 ce fb ff ff jmpq 6a1fb8 : } : break; : : case T_CreateTrigStmt: : tag = "CREATE TRIGGER"; : break; 0.00 : 6a23ea: b9 1d 0a 8b 00 mov $0x8b0a1d,%ecx : : case T_CreateEventTrigStmt: : tag = "CREATE EVENT TRIGGER"; : break; 0.00 : 6a23ef: e9 c4 fb ff ff jmpq 6a1fb8 : tag = "CREATE EXTENSION"; : break; : : case T_AlterExtensionStmt: : tag = "ALTER EXTENSION"; : break; 0.00 : 6a23f4: b9 09 04 8b 00 mov $0x8b0409,%ecx : : case T_AlterExtensionContentsStmt: : tag = "ALTER EXTENSION"; : break; 0.00 : 6a23f9: e9 ba fb ff ff jmpq 6a1fb8 : tag = "ALTER TABLESPACE"; : break; : : case T_CreateExtensionStmt: : tag = "CREATE EXTENSION"; : break; 0.00 : 6a23fe: b9 09 04 8b 00 mov $0x8b0409,%ecx : : case T_AlterExtensionStmt: : tag = "ALTER EXTENSION"; : break; 0.00 : 6a2403: e9 b0 fb ff ff jmpq 6a1fb8 : tag = "DROP TABLESPACE"; : break; : : case T_AlterTableSpaceOptionsStmt: : tag = "ALTER TABLESPACE"; : break; 0.00 : 6a2408: b9 42 06 8b 00 mov $0x8b0642,%ecx : : case T_CreateExtensionStmt: : tag = "CREATE EXTENSION"; : break; 0.00 : 6a240d: e9 a6 fb ff ff jmpq 6a1fb8 : tag = "DROP USER MAPPING"; : break; : : case T_CreateForeignTableStmt: : tag = "CREATE FOREIGN TABLE"; : break; 0.00 : 6a2412: b9 77 b2 87 00 mov $0x87b277,%ecx : : case T_ImportForeignSchemaStmt: : tag = "IMPORT FOREIGN SCHEMA"; : break; 0.00 : 6a2417: e9 9c fb ff ff jmpq 6a1fb8 : tag = "ALTER USER MAPPING"; : break; : : case T_DropUserMappingStmt: : tag = "DROP USER MAPPING"; : break; 0.00 : 6a241c: b9 6a 5d 87 00 mov $0x875d6a,%ecx : : case T_CreateForeignTableStmt: : tag = "CREATE FOREIGN TABLE"; : break; 0.00 : 6a2421: e9 92 fb ff ff jmpq 6a1fb8 : tag = "TRUNCATE TABLE"; : break; : : case T_CommentStmt: : tag = "COMMENT"; : break; 0.00 : 6a2426: b9 75 08 8b 00 mov $0x8b0875,%ecx : : case T_SecLabelStmt: : tag = "SECURITY LABEL"; : break; 0.00 : 6a242b: e9 88 fb ff ff jmpq 6a1fb8 : case T_AlterOwnerStmt: : tag = AlterObjectTypeCommandTag(((AlterOwnerStmt *) parsetree)->objectType); : break; : : case T_AlterTableMoveAllStmt: : tag = AlterObjectTypeCommandTag(((AlterTableMoveAllStmt *) parsetree)->objtype); 0.00 : 6a2430: 8b 7b 10 mov 0x10(%rbx),%edi : tag = "???"; : break; : } : : return tag; : } 0.00 : 6a2433: 48 83 c4 08 add $0x8,%rsp 0.00 : 6a2437: 5b pop %rbx 0.00 : 6a2438: c9 leaveq : case T_AlterOwnerStmt: : tag = AlterObjectTypeCommandTag(((AlterOwnerStmt *) parsetree)->objectType); : break; : : case T_AlterTableMoveAllStmt: : tag = AlterObjectTypeCommandTag(((AlterTableMoveAllStmt *) parsetree)->objtype); 0.00 : 6a2439: e9 02 f7 ff ff jmpq 6a1b40 : tag = "ALTER TEXT SEARCH DICTIONARY"; : break; : : case T_AlterTSConfigurationStmt: : tag = "ALTER TEXT SEARCH CONFIGURATION"; : break; 0.00 : 6a243e: b9 d5 0a 8b 00 mov $0x8b0ad5,%ecx : : case T_CreatePolicyStmt: : tag = "CREATE POLICY"; : break; 0.00 : 6a2443: e9 70 fb ff ff jmpq 6a1fb8 : } : break; : : case T_RefreshMatViewStmt: : tag = "REFRESH MATERIALIZED VIEW"; : break; 0.00 : 6a2448: b9 cf 09 8b 00 mov $0x8b09cf,%ecx : : case T_AlterSystemStmt: : tag = "ALTER SYSTEM"; : break; 0.00 : 6a244d: e9 66 fb ff ff jmpq 6a1fb8 : : case T_CreateTableAsStmt: : switch (((CreateTableAsStmt *) parsetree)->relkind) : { : case OBJECT_TABLE: : if (((CreateTableAsStmt *) parsetree)->is_select_into) 0.00 : 6a2452: b9 26 b2 87 00 mov $0x87b226,%ecx : } : break; : : case T_RefreshMatViewStmt: : tag = "REFRESH MATERIALIZED VIEW"; : break; 0.00 : 6a2457: e9 5c fb ff ff jmpq 6a1fb8 : tag = "CREATE TRIGGER"; : break; : : case T_CreateEventTrigStmt: : tag = "CREATE EVENT TRIGGER"; : break; 0.00 : 6a245c: b9 03 05 8b 00 mov $0x8b0503,%ecx : : case T_AlterEventTrigStmt: : tag = "ALTER EVENT TRIGGER"; : break; 0.00 : 6a2461: e9 52 fb ff ff jmpq 6a1fb8 : tag = "ALTER OPERATOR FAMILY"; : break; : : case T_AlterTSDictionaryStmt: : tag = "ALTER TEXT SEARCH DICTIONARY"; : break; 0.00 : 6a2466: b9 d0 0b 8b 00 mov $0x8b0bd0,%ecx : : case T_AlterTSConfigurationStmt: : tag = "ALTER TEXT SEARCH CONFIGURATION"; : break; 0.00 : 6a246b: e9 48 fb ff ff jmpq 6a1fb8 : tag = "CREATE OPERATOR FAMILY"; : break; : : case T_AlterOpFamilyStmt: : tag = "ALTER OPERATOR FAMILY"; : break; 0.00 : 6a2470: b9 17 05 8b 00 mov $0x8b0517,%ecx : : case T_AlterTSDictionaryStmt: : tag = "ALTER TEXT SEARCH DICTIONARY"; : break; 0.00 : 6a2475: e9 3e fb ff ff jmpq 6a1fb8 : tag = "CREATE TYPE"; : break; : : case T_CreateRangeStmt: : tag = "CREATE TYPE"; : break; 0.00 : 6a247a: b9 a6 03 8b 00 mov $0x8b03a6,%ecx : : case T_AlterEnumStmt: : tag = "ALTER TYPE"; : break; 0.00 : 6a247f: e9 34 fb ff ff jmpq 6a1fb8 : tag = "CREATE TYPE"; : break; : : case T_CreateEnumStmt: : tag = "CREATE TYPE"; : break; 0.00 : 6a2484: b9 c9 08 8b 00 mov $0x8b08c9,%ecx : : case T_CreateRangeStmt: : tag = "CREATE TYPE"; : break; 0.00 : 6a2489: e9 2a fb ff ff jmpq 6a1fb8 : } : break; : : case T_CompositeTypeStmt: : tag = "CREATE TYPE"; : break; 0.00 : 6a248e: b9 c9 08 8b 00 mov $0x8b08c9,%ecx : : case T_CreateEnumStmt: : tag = "CREATE TYPE"; : break; 0.00 : 6a2493: e9 20 fb ff ff jmpq 6a1fb8 : case OBJECT_TSCONFIGURATION: : tag = "CREATE TEXT SEARCH CONFIGURATION"; : break; : case OBJECT_COLLATION: : tag = "CREATE COLLATION"; : break; 0.00 : 6a2498: b9 c9 08 8b 00 mov $0x8b08c9,%ecx : } : break; : : case T_CompositeTypeStmt: : tag = "CREATE TYPE"; : break; 0.00 : 6a249d: e9 16 fb ff ff jmpq 6a1fb8 : tag = "DROP ROLE"; : break; : : case T_DropOwnedStmt: : tag = "DROP OWNED"; : break; 0.00 : 6a24a2: b9 58 0a 8b 00 mov $0x8b0a58,%ecx : : case T_ReassignOwnedStmt: : tag = "REASSIGN OWNED"; : break; 0.00 : 6a24a7: e9 0c fb ff ff jmpq 6a1fb8 : tag = "ALTER ROLE"; : break; : : case T_DropRoleStmt: : tag = "DROP ROLE"; : break; 0.00 : 6a24ac: b9 6c b2 87 00 mov $0x87b26c,%ecx : : case T_DropOwnedStmt: : tag = "DROP OWNED"; : break; 0.00 : 6a24b1: e9 02 fb ff ff jmpq 6a1fb8 : tag = "ALTER FOREIGN DATA WRAPPER"; : break; : : case T_CreateForeignServerStmt: : tag = "CREATE SERVER"; : break; 0.00 : 6a24b6: b9 34 04 8b 00 mov $0x8b0434,%ecx : : case T_AlterForeignServerStmt: : tag = "ALTER SERVER"; : break; 0.00 : 6a24bb: e9 f8 fa ff ff jmpq 6a1fb8 : tag = "CREATE FOREIGN DATA WRAPPER"; : break; : : case T_AlterFdwStmt: : tag = "ALTER FOREIGN DATA WRAPPER"; : break; 0.00 : 6a24c0: b9 6f 06 8b 00 mov $0x8b066f,%ecx : : case T_CreateForeignServerStmt: : tag = "CREATE SERVER"; : break; 0.00 : 6a24c5: e9 ee fa ff ff jmpq 6a1fb8 : tag = "ALTER EXTENSION"; : break; : : case T_CreateFdwStmt: : tag = "CREATE FOREIGN DATA WRAPPER"; : break; 0.00 : 6a24ca: b9 19 04 8b 00 mov $0x8b0419,%ecx : : case T_AlterFdwStmt: : tag = "ALTER FOREIGN DATA WRAPPER"; : break; 0.00 : 6a24cf: e9 e4 fa ff ff jmpq 6a1fb8 : tag = "ALTER EXTENSION"; : break; : : case T_AlterExtensionContentsStmt: : tag = "ALTER EXTENSION"; : break; 0.00 : 6a24d4: b9 53 06 8b 00 mov $0x8b0653,%ecx : : case T_CreateFdwStmt: : tag = "CREATE FOREIGN DATA WRAPPER"; : break; 0.00 : 6a24d9: e9 da fa ff ff jmpq 6a1fb8 : tag = "ALTER SERVER"; : break; : : case T_CreateUserMappingStmt: : tag = "CREATE USER MAPPING"; : break; 0.00 : 6a24de: b9 91 06 8b 00 mov $0x8b0691,%ecx : : case T_AlterUserMappingStmt: : tag = "ALTER USER MAPPING"; : break; 0.00 : 6a24e3: e9 d0 fa ff ff jmpq 6a1fb8 : tag = "CREATE SERVER"; : break; : : case T_AlterForeignServerStmt: : tag = "ALTER SERVER"; : break; 0.00 : 6a24e8: b9 7d 06 8b 00 mov $0x8b067d,%ecx : : case T_CreateUserMappingStmt: : tag = "CREATE USER MAPPING"; : break; 0.00 : 6a24ed: e9 c6 fa ff ff jmpq 6a1fb8 : : case T_AlterUserMappingStmt: : tag = "ALTER USER MAPPING"; : break; 0.00 : 6a24f2: b9 a4 06 8b 00 mov $0x8b06a4,%ecx : : case T_DropUserMappingStmt: : tag = "DROP USER MAPPING"; : break; 0.00 : 6a24f7: e9 bc fa ff ff jmpq 6a1fb8 : tag = "PREPARE TRANSACTION"; : break; : : case TRANS_STMT_COMMIT_PREPARED: : tag = "COMMIT PREPARED"; : break; 0.00 : 6a24fc: b9 d4 05 8b 00 mov $0x8b05d4,%ecx : : case TRANS_STMT_ROLLBACK_PREPARED: : tag = "ROLLBACK PREPARED"; : break; 0.00 : 6a2501: e9 b2 fa ff ff jmpq 6a1fb8 : tag = "RELEASE"; : break; : : case TRANS_STMT_PREPARE: : tag = "PREPARE TRANSACTION"; : break; 0.00 : 6a2506: b9 c4 05 8b 00 mov $0x8b05c4,%ecx : : case TRANS_STMT_COMMIT_PREPARED: : tag = "COMMIT PREPARED"; : break; 0.00 : 6a250b: e9 a8 fa ff ff jmpq 6a1fb8 : tag = "SAVEPOINT"; : break; : : case TRANS_STMT_RELEASE: : tag = "RELEASE"; : break; 0.00 : 6a2510: b9 b0 05 8b 00 mov $0x8b05b0,%ecx : : case TRANS_STMT_PREPARE: : tag = "PREPARE TRANSACTION"; : break; 0.00 : 6a2515: e9 9e fa ff ff jmpq 6a1fb8 : tag = "ROLLBACK"; : break; : : case TRANS_STMT_SAVEPOINT: : tag = "SAVEPOINT"; : break; 0.00 : 6a251a: b9 f2 69 7b 00 mov $0x7b69f2,%ecx : : case TRANS_STMT_RELEASE: : tag = "RELEASE"; : break; 0.00 : 6a251f: e9 94 fa ff ff jmpq 6a1fb8 : break; : : case TRANS_STMT_ROLLBACK: : case TRANS_STMT_ROLLBACK_TO: : tag = "ROLLBACK"; : break; 0.00 : 6a2524: b9 88 0b 8b 00 mov $0x8b0b88,%ecx : : case TRANS_STMT_SAVEPOINT: : tag = "SAVEPOINT"; : break; 0.00 : 6a2529: e9 8a fa ff ff jmpq 6a1fb8 : tag = "START TRANSACTION"; : break; : : case TRANS_STMT_COMMIT: : tag = "COMMIT"; : break; 0.00 : 6a252e: b9 a7 05 8b 00 mov $0x8b05a7,%ecx : : case TRANS_STMT_ROLLBACK: : case TRANS_STMT_ROLLBACK_TO: : tag = "ROLLBACK"; : break; 0.00 : 6a2533: e9 80 fa ff ff jmpq 6a1fb8 : /* utility statements --- same whether raw or cooked */ : case T_TransactionStmt: : { : TransactionStmt *stmt = (TransactionStmt *) parsetree; : : switch (stmt->kind) 0.00 : 6a2538: b9 fe 69 7b 00 mov $0x7b69fe,%ecx : tag = "START TRANSACTION"; : break; : : case TRANS_STMT_COMMIT: : tag = "COMMIT"; : break; 0.00 : 6a253d: e9 76 fa ff ff jmpq 6a1fb8 : /* utility statements --- same whether raw or cooked */ : case T_TransactionStmt: : { : TransactionStmt *stmt = (TransactionStmt *) parsetree; : : switch (stmt->kind) 0.00 : 6a2542: b9 95 05 8b 00 mov $0x8b0595,%ecx 0.00 : 6a2547: e9 6c fa ff ff jmpq 6a1fb8 0.00 : 6a254c: b9 db 69 7b 00 mov $0x7b69db,%ecx 0.00 : 6a2551: e9 62 fa ff ff jmpq 6a1fb8 : case T_ImportForeignSchemaStmt: : tag = "IMPORT FOREIGN SCHEMA"; : break; : : case T_DropStmt: : switch (((DropStmt *) parsetree)->removeType) 0.00 : 6a2556: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 6a2559: ff 24 c5 40 15 8b 00 jmpq *0x8b1540(,%rax,8) 0.00 : 6a2560: b9 c4 06 8b 00 mov $0x8b06c4,%ecx : case OBJECT_SEQUENCE: : tag = "DROP SEQUENCE"; : break; : case OBJECT_VIEW: : tag = "DROP VIEW"; : break; 0.00 : 6a2565: e9 4e fa ff ff jmpq 6a1fb8 : case OBJECT_MATVIEW: : tag = "DROP MATERIALIZED VIEW"; : break; : case OBJECT_INDEX: : tag = "DROP INDEX"; : break; 0.00 : 6a256a: b9 e5 06 8b 00 mov $0x8b06e5,%ecx : case OBJECT_TYPE: : tag = "DROP TYPE"; : break; 0.00 : 6a256f: e9 44 fa ff ff jmpq 6a1fb8 : case OBJECT_TSPARSER: : tag = "DROP TEXT SEARCH PARSER"; : break; : case OBJECT_TSDICTIONARY: : tag = "DROP TEXT SEARCH DICTIONARY"; : break; 0.00 : 6a2574: b9 5a 07 8b 00 mov $0x8b075a,%ecx : case OBJECT_TSTEMPLATE: : tag = "DROP TEXT SEARCH TEMPLATE"; : break; 0.00 : 6a2579: e9 3a fa ff ff jmpq 6a1fb8 : case OBJECT_CONVERSION: : tag = "DROP CONVERSION"; : break; : case OBJECT_SCHEMA: : tag = "DROP SCHEMA"; : break; 0.00 : 6a257e: b9 26 07 8b 00 mov $0x8b0726,%ecx : case OBJECT_TSPARSER: : tag = "DROP TEXT SEARCH PARSER"; : break; 0.00 : 6a2583: e9 30 fa ff ff jmpq 6a1fb8 0.00 : 6a2588: b9 3e 07 8b 00 mov $0x8b073e,%ecx : case OBJECT_TSDICTIONARY: : tag = "DROP TEXT SEARCH DICTIONARY"; : break; 0.00 : 6a258d: e9 26 fa ff ff jmpq 6a1fb8 : case OBJECT_TSTEMPLATE: : tag = "DROP TEXT SEARCH TEMPLATE"; : break; 0.00 : 6a2592: b9 f0 0b 8b 00 mov $0x8b0bf0,%ecx : case OBJECT_TSCONFIGURATION: : tag = "DROP TEXT SEARCH CONFIGURATION"; : break; 0.00 : 6a2597: e9 1c fa ff ff jmpq 6a1fb8 : case OBJECT_LANGUAGE: : tag = "DROP LANGUAGE"; : break; : case OBJECT_CAST: : tag = "DROP CAST"; : break; 0.00 : 6a259c: b9 d9 07 8b 00 mov $0x8b07d9,%ecx : case OBJECT_TRIGGER: : tag = "DROP TRIGGER"; : break; 0.00 : 6a25a1: e9 12 fa ff ff jmpq 6a1fb8 : case T_ImportForeignSchemaStmt: : tag = "IMPORT FOREIGN SCHEMA"; : break; : : case T_DropStmt: : switch (((DropStmt *) parsetree)->removeType) 0.00 : 6a25a6: b9 bb 13 7c 00 mov $0x7c13bb,%ecx 0.00 : 6a25ab: e9 08 fa ff ff jmpq 6a1fb8 0.00 : 6a25b0: b9 b6 06 8b 00 mov $0x8b06b6,%ecx 0.00 : 6a25b5: e9 fe f9 ff ff jmpq 6a1fb8 : case OBJECT_COLLATION: : tag = "DROP COLLATION"; : break; : case OBJECT_CONVERSION: : tag = "DROP CONVERSION"; : break; 0.00 : 6a25ba: b9 1a 07 8b 00 mov $0x8b071a,%ecx : case OBJECT_SCHEMA: : tag = "DROP SCHEMA"; : break; 0.00 : 6a25bf: e9 f4 f9 ff ff jmpq 6a1fb8 : case OBJECT_TRIGGER: : tag = "DROP TRIGGER"; : break; : case OBJECT_EVENT_TRIGGER: : tag = "DROP EVENT TRIGGER"; : break; 0.00 : 6a25c4: b9 f9 07 8b 00 mov $0x8b07f9,%ecx : case OBJECT_RULE: : tag = "DROP RULE"; : break; 0.00 : 6a25c9: e9 ea f9 ff ff jmpq 6a1fb8 : case OBJECT_OPCLASS: : tag = "DROP OPERATOR CLASS"; : break; : case OBJECT_OPFAMILY: : tag = "DROP OPERATOR FAMILY"; : break; 0.00 : 6a25ce: b9 52 08 8b 00 mov $0x8b0852,%ecx : case OBJECT_POLICY: : tag = "DROP POLICY"; : break; 0.00 : 6a25d3: e9 e0 f9 ff ff jmpq 6a1fb8 : case OBJECT_FOREIGN_SERVER: : tag = "DROP SERVER"; : break; : case OBJECT_OPCLASS: : tag = "DROP OPERATOR CLASS"; : break; 0.00 : 6a25d8: b9 3d 08 8b 00 mov $0x8b083d,%ecx : case OBJECT_OPFAMILY: : tag = "DROP OPERATOR FAMILY"; : break; 0.00 : 6a25dd: e9 d6 f9 ff ff jmpq 6a1fb8 : case OBJECT_FUNCTION: : tag = "DROP FUNCTION"; : break; : case OBJECT_AGGREGATE: : tag = "DROP AGGREGATE"; : break; 0.00 : 6a25e2: b9 b3 07 8b 00 mov $0x8b07b3,%ecx : case OBJECT_OPERATOR: : tag = "DROP OPERATOR"; : break; 0.00 : 6a25e7: e9 cc f9 ff ff jmpq 6a1fb8 : case OBJECT_FDW: : tag = "DROP FOREIGN DATA WRAPPER"; : break; : case OBJECT_FOREIGN_SERVER: : tag = "DROP SERVER"; : break; 0.00 : 6a25ec: b9 29 08 8b 00 mov $0x8b0829,%ecx : case OBJECT_OPCLASS: : tag = "DROP OPERATOR CLASS"; : break; 0.00 : 6a25f1: e9 c2 f9 ff ff jmpq 6a1fb8 : case OBJECT_SEQUENCE: : tag = "DROP SEQUENCE"; : break; : case OBJECT_VIEW: : tag = "DROP VIEW"; : break; 0.00 : 6a25f6: b9 ce 06 8b 00 mov $0x8b06ce,%ecx : case OBJECT_MATVIEW: : tag = "DROP MATERIALIZED VIEW"; : break; 0.00 : 6a25fb: e9 b8 f9 ff ff jmpq 6a1fb8 : case OBJECT_AGGREGATE: : tag = "DROP AGGREGATE"; : break; : case OBJECT_OPERATOR: : tag = "DROP OPERATOR"; : break; 0.00 : 6a2600: b9 c1 07 8b 00 mov $0x8b07c1,%ecx : case OBJECT_LANGUAGE: : tag = "DROP LANGUAGE"; : break; 0.00 : 6a2605: e9 ae f9 ff ff jmpq 6a1fb8 : case OBJECT_VIEW: : tag = "DROP VIEW"; : break; : case OBJECT_MATVIEW: : tag = "DROP MATERIALIZED VIEW"; : break; 0.00 : 6a260a: b9 e0 1d 7c 00 mov $0x7c1de0,%ecx : case OBJECT_INDEX: : tag = "DROP INDEX"; : break; 0.00 : 6a260f: e9 a4 f9 ff ff jmpq 6a1fb8 : case OBJECT_FOREIGN_TABLE: : tag = "DROP FOREIGN TABLE"; : break; : case OBJECT_EXTENSION: : tag = "DROP EXTENSION"; : break; 0.00 : 6a2614: b9 96 07 8b 00 mov $0x8b0796,%ecx : case OBJECT_FUNCTION: : tag = "DROP FUNCTION"; : break; 0.00 : 6a2619: e9 9a f9 ff ff jmpq 6a1fb8 : case OBJECT_TSTEMPLATE: : tag = "DROP TEXT SEARCH TEMPLATE"; : break; : case OBJECT_TSCONFIGURATION: : tag = "DROP TEXT SEARCH CONFIGURATION"; : break; 0.00 : 6a261e: b9 74 07 8b 00 mov $0x8b0774,%ecx : case OBJECT_FOREIGN_TABLE: : tag = "DROP FOREIGN TABLE"; : break; 0.00 : 6a2623: e9 90 f9 ff ff jmpq 6a1fb8 : case OBJECT_RULE: : tag = "DROP RULE"; : break; : case OBJECT_FDW: : tag = "DROP FOREIGN DATA WRAPPER"; : break; 0.00 : 6a2628: b9 1d 08 8b 00 mov $0x8b081d,%ecx : case OBJECT_FOREIGN_SERVER: : tag = "DROP SERVER"; : break; 0.00 : 6a262d: e9 86 f9 ff ff jmpq 6a1fb8 : case OBJECT_EVENT_TRIGGER: : tag = "DROP EVENT TRIGGER"; : break; : case OBJECT_RULE: : tag = "DROP RULE"; : break; 0.00 : 6a2632: b9 03 08 8b 00 mov $0x8b0803,%ecx : case OBJECT_FDW: : tag = "DROP FOREIGN DATA WRAPPER"; : break; 0.00 : 6a2637: e9 7c f9 ff ff jmpq 6a1fb8 : case OBJECT_TSCONFIGURATION: : tag = "DROP TEXT SEARCH CONFIGURATION"; : break; : case OBJECT_FOREIGN_TABLE: : tag = "DROP FOREIGN TABLE"; : break; 0.00 : 6a263c: b9 87 07 8b 00 mov $0x8b0787,%ecx : case OBJECT_EXTENSION: : tag = "DROP EXTENSION"; : break; 0.00 : 6a2641: e9 72 f9 ff ff jmpq 6a1fb8 : case OBJECT_CAST: : tag = "DROP CAST"; : break; : case OBJECT_TRIGGER: : tag = "DROP TRIGGER"; : break; 0.00 : 6a2646: b9 e6 07 8b 00 mov $0x8b07e6,%ecx : case OBJECT_EVENT_TRIGGER: : tag = "DROP EVENT TRIGGER"; : break; 0.00 : 6a264b: e9 68 f9 ff ff jmpq 6a1fb8 : case OBJECT_INDEX: : tag = "DROP INDEX"; : break; : case OBJECT_TYPE: : tag = "DROP TYPE"; : break; 0.00 : 6a2650: b9 ef 06 8b 00 mov $0x8b06ef,%ecx : case OBJECT_DOMAIN: : tag = "DROP DOMAIN"; : break; 0.00 : 6a2655: e9 5e f9 ff ff jmpq 6a1fb8 : case OBJECT_COLLATION: : tag = "DROP COLLATION"; : break; 0.00 : 6a265a: b9 0a 07 8b 00 mov $0x8b070a,%ecx : case OBJECT_CONVERSION: : tag = "DROP CONVERSION"; : break; 0.00 : 6a265f: e9 54 f9 ff ff jmpq 6a1fb8 : case OBJECT_TYPE: : tag = "DROP TYPE"; : break; : case OBJECT_DOMAIN: : tag = "DROP DOMAIN"; : break; 0.00 : 6a2664: b9 fb 06 8b 00 mov $0x8b06fb,%ecx : case OBJECT_COLLATION: : tag = "DROP COLLATION"; : break; 0.00 : 6a2669: e9 4a f9 ff ff jmpq 6a1fb8 : case OBJECT_OPERATOR: : tag = "DROP OPERATOR"; : break; : case OBJECT_LANGUAGE: : tag = "DROP LANGUAGE"; : break; 0.00 : 6a266e: b9 cf 07 8b 00 mov $0x8b07cf,%ecx : case OBJECT_CAST: : tag = "DROP CAST"; : break; 0.00 : 6a2673: e9 40 f9 ff ff jmpq 6a1fb8 : case OBJECT_EXTENSION: : tag = "DROP EXTENSION"; : break; : case OBJECT_FUNCTION: : tag = "DROP FUNCTION"; : break; 0.00 : 6a2678: b9 a4 07 8b 00 mov $0x8b07a4,%ecx : case OBJECT_AGGREGATE: : tag = "DROP AGGREGATE"; : break; 0.00 : 6a267d: e9 36 f9 ff ff jmpq 6a1fb8 0.00 : 6a2682: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_AlterDefaultPrivilegesStmt: : tag = "ALTER DEFAULT PRIVILEGES"; : break; : : case T_DefineStmt: : switch (((DefineStmt *) parsetree)->kind) 0.00 : 6a2688: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6a268b: ff 24 c5 60 16 8b 00 jmpq *0x8b1660(,%rax,8) 0.00 : 6a2692: b9 c9 08 8b 00 mov $0x8b08c9,%ecx : case OBJECT_OPERATOR: : tag = "CREATE OPERATOR"; : break; : case OBJECT_TYPE: : tag = "CREATE TYPE"; : break; 0.00 : 6a2697: e9 1c f9 ff ff jmpq 6a1fb8 : case OBJECT_TSPARSER: : tag = "CREATE TEXT SEARCH PARSER"; : break; : case OBJECT_TSDICTIONARY: : tag = "CREATE TEXT SEARCH DICTIONARY"; : break; 0.00 : 6a269c: b9 0d 09 8b 00 mov $0x8b090d,%ecx : case OBJECT_TSTEMPLATE: : tag = "CREATE TEXT SEARCH TEMPLATE"; : break; 0.00 : 6a26a1: e9 12 f9 ff ff jmpq 6a1fb8 : case OBJECT_OPERATOR: : tag = "CREATE OPERATOR"; : break; : case OBJECT_TYPE: : tag = "CREATE TYPE"; : break; 0.00 : 6a26a6: b9 d5 08 8b 00 mov $0x8b08d5,%ecx : case OBJECT_TSPARSER: : tag = "CREATE TEXT SEARCH PARSER"; : break; 0.00 : 6a26ab: e9 08 f9 ff ff jmpq 6a1fb8 0.00 : 6a26b0: b9 ef 08 8b 00 mov $0x8b08ef,%ecx : case OBJECT_TSDICTIONARY: : tag = "CREATE TEXT SEARCH DICTIONARY"; : break; 0.00 : 6a26b5: e9 fe f8 ff ff jmpq 6a1fb8 : case OBJECT_TSTEMPLATE: : tag = "CREATE TEXT SEARCH TEMPLATE"; : break; 0.00 : 6a26ba: b9 10 0c 8b 00 mov $0x8b0c10,%ecx : case OBJECT_TSCONFIGURATION: : tag = "CREATE TEXT SEARCH CONFIGURATION"; : break; 0.00 : 6a26bf: e9 f4 f8 ff ff jmpq 6a1fb8 : case T_AlterDefaultPrivilegesStmt: : tag = "ALTER DEFAULT PRIVILEGES"; : break; : : case T_DefineStmt: : switch (((DefineStmt *) parsetree)->kind) 0.00 : 6a26c4: b9 a8 08 8b 00 mov $0x8b08a8,%ecx 0.00 : 6a26c9: e9 ea f8 ff ff jmpq 6a1fb8 : case OBJECT_TSTEMPLATE: : tag = "CREATE TEXT SEARCH TEMPLATE"; : break; : case OBJECT_TSCONFIGURATION: : tag = "CREATE TEXT SEARCH CONFIGURATION"; : break; 0.00 : 6a26ce: b9 29 09 8b 00 mov $0x8b0929,%ecx : case OBJECT_COLLATION: : tag = "CREATE COLLATION"; : break; 0.00 : 6a26d3: e9 e0 f8 ff ff jmpq 6a1fb8 : case T_AlterDefaultPrivilegesStmt: : tag = "ALTER DEFAULT PRIVILEGES"; : break; : : case T_DefineStmt: : switch (((DefineStmt *) parsetree)->kind) 0.00 : 6a26d8: b9 b8 08 8b 00 mov $0x8b08b8,%ecx 0.00 : 6a26dd: e9 d6 f8 ff ff jmpq 6a1fb8 : /* parsed-and-rewritten-but-not-planned queries */ : case T_Query: : { : Query *stmt = (Query *) parsetree; : : switch (stmt->commandType) 0.00 : 6a26e2: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6a26e5: ff 24 c5 78 17 8b 00 jmpq *0x8b1778(,%rax,8) : break; : case CMD_DELETE: : tag = "DELETE"; : break; : case CMD_UTILITY: : tag = CreateCommandTag(stmt->utilityStmt); 0.00 : 6a26ec: 48 8b 5b 18 mov 0x18(%rbx),%rbx : break; 0.00 : 6a26f0: e9 87 f8 ff ff jmpq 6a1f7c : case LCS_FORNOKEYUPDATE: : tag = "SELECT FOR NO KEY UPDATE"; : break; : case LCS_FORUPDATE: : tag = "SELECT FOR UPDATE"; : break; 0.00 : 6a26f5: b9 bc 73 8c 00 mov $0x8c73bc,%ecx : case CMD_INSERT: : tag = "INSERT"; : break; : case CMD_DELETE: : tag = "DELETE"; : break; 0.00 : 6a26fa: e9 b9 f8 ff ff jmpq 6a1fb8 : /* parsed-and-rewritten-but-not-planned queries */ : case T_Query: : { : Query *stmt = (Query *) parsetree; : : switch (stmt->commandType) 0.00 : 6a26ff: b9 b1 73 8c 00 mov $0x8c73b1,%ecx 0.00 : 6a2704: e9 af f8 ff ff jmpq 6a1fb8 0.00 : 6a2709: b9 c7 73 8c 00 mov $0x8c73c7,%ecx 0.00 : 6a270e: e9 a5 f8 ff ff jmpq 6a1fb8 : /* : * We take a little extra care here so that the result : * will be useful for complaints about read-only : * statements : */ : if (stmt->utilityStmt != NULL) 0.00 : 6a2713: 48 83 7b 18 00 cmpq $0x0,0x18(%rbx) 0.00 : 6a2718: b9 ef 04 88 00 mov $0x8804ef,%ecx 0.00 : 6a271d: 0f 85 95 f8 ff ff jne 6a1fb8 : { : Assert(IsA(stmt->utilityStmt, DeclareCursorStmt)); : tag = "DECLARE CURSOR"; : } : else if (stmt->rowMarks != NIL) 0.00 : 6a2723: 48 8b 83 98 00 00 00 mov 0x98(%rbx),%rax 0.00 : 6a272a: b9 e3 7d 89 00 mov $0x897de3,%ecx 0.00 : 6a272f: 48 85 c0 test %rax,%rax 0.00 : 6a2732: 0f 84 80 f8 ff ff je 6a1fb8 : { : /* not 100% but probably close enough */ : switch (((RowMarkClause *) linitial(stmt->rowMarks))->strength) 0.00 : 6a2738: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 6a273c: b9 28 0b 8b 00 mov $0x8b0b28,%ecx 0.00 : 6a2741: 48 8b 00 mov (%rax),%rax 0.00 : 6a2744: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 6a2747: 83 f8 01 cmp $0x1,%eax 0.00 : 6a274a: 0f 84 68 f8 ff ff je 6a1fb8 0.00 : 6a2750: b9 39 0b 8b 00 mov $0x8b0b39,%ecx 0.00 : 6a2755: 0f 82 5d f8 ff ff jb 6a1fb8 0.00 : 6a275b: 83 f8 02 cmp $0x2,%eax 0.00 : 6a275e: b9 fd 0a 8b 00 mov $0x8b0afd,%ecx 0.00 : 6a2763: 0f 84 4f f8 ff ff je 6a1fb8 : case LCS_FORNOKEYUPDATE: : tag = "SELECT FOR NO KEY UPDATE"; : break; : case LCS_FORUPDATE: : tag = "SELECT FOR UPDATE"; : break; 0.00 : 6a2769: 83 f8 03 cmp $0x3,%eax 0.00 : 6a276c: b9 cc 50 7b 00 mov $0x7b50cc,%ecx 0.00 : 6a2771: b8 16 0b 8b 00 mov $0x8b0b16,%eax 0.00 : 6a2776: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 6a277a: e9 39 f8 ff ff jmpq 6a1fb8 0.00 : 6a277f: 90 nop : /* already-planned queries */ : case T_PlannedStmt: : { : PlannedStmt *stmt = (PlannedStmt *) parsetree; : : switch (stmt->commandType) 0.00 : 6a2780: 83 f8 03 cmp $0x3,%eax 0.00 : 6a2783: b9 b1 73 8c 00 mov $0x8c73b1,%ecx 0.00 : 6a2788: 0f 84 2a f8 ff ff je 6a1fb8 0.00 : 6a278e: 83 f8 04 cmp $0x4,%eax : tag = "SELECT FOR KEY SHARE"; : break; : case ROW_MARK_REFERENCE: : case ROW_MARK_COPY: : tag = "SELECT"; : break; 0.00 : 6a2791: b9 bc 73 8c 00 mov $0x8c73bc,%ecx : /* already-planned queries */ : case T_PlannedStmt: : { : PlannedStmt *stmt = (PlannedStmt *) parsetree; : : switch (stmt->commandType) 0.00 : 6a2796: 0f 85 d6 fb ff ff jne 6a2372 0.00 : 6a279c: e9 17 f8 ff ff jmpq 6a1fb8 : /* : * We take a little extra care here so that the result : * will be useful for complaints about read-only : * statements : */ : if (stmt->utilityStmt != NULL) 0.00 : 6a27a1: 48 83 7b 28 00 cmpq $0x0,0x28(%rbx) 0.00 : 6a27a6: b9 ef 04 88 00 mov $0x8804ef,%ecx 0.00 : 6a27ab: 0f 85 07 f8 ff ff jne 6a1fb8 : { : Assert(IsA(stmt->utilityStmt, DeclareCursorStmt)); : tag = "DECLARE CURSOR"; : } : else if (stmt->rowMarks != NIL) 0.00 : 6a27b1: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 6a27b5: b9 e3 7d 89 00 mov $0x897de3,%ecx 0.00 : 6a27ba: 48 85 c0 test %rax,%rax 0.00 : 6a27bd: 0f 84 f5 f7 ff ff je 6a1fb8 : { : /* not 100% but probably close enough */ : switch (((PlanRowMark *) linitial(stmt->rowMarks))->markType) 0.00 : 6a27c3: 48 8b 40 08 mov 0x8(%rax),%rax : tag = "SELECT FOR KEY SHARE"; : break; : case ROW_MARK_REFERENCE: : case ROW_MARK_COPY: : tag = "SELECT"; : break; 0.00 : 6a27c7: b9 cc 50 7b 00 mov $0x7b50cc,%ecx : tag = "DECLARE CURSOR"; : } : else if (stmt->rowMarks != NIL) : { : /* not 100% but probably close enough */ : switch (((PlanRowMark *) linitial(stmt->rowMarks))->markType) 0.00 : 6a27cc: 48 8b 00 mov (%rax),%rax 0.00 : 6a27cf: 83 78 10 05 cmpl $0x5,0x10(%rax) 0.00 : 6a27d3: 0f 87 df f7 ff ff ja 6a1fb8 0.00 : 6a27d9: 8b 40 10 mov 0x10(%rax),%eax 0.00 : 6a27dc: ff 24 c5 a8 17 8b 00 jmpq *0x8b17a8(,%rax,8) 0.00 : 6a27e3: b9 16 0b 8b 00 mov $0x8b0b16,%ecx 0.00 : 6a27e8: e9 cb f7 ff ff jmpq 6a1fb8 : case ROW_MARK_SHARE: : tag = "SELECT FOR SHARE"; : break; : case ROW_MARK_KEYSHARE: : tag = "SELECT FOR KEY SHARE"; : break; 0.00 : 6a27ed: b9 e3 7d 89 00 mov $0x897de3,%ecx : case ROW_MARK_REFERENCE: : case ROW_MARK_COPY: : tag = "SELECT"; : break; 0.00 : 6a27f2: e9 c1 f7 ff ff jmpq 6a1fb8 : case ROW_MARK_NOKEYEXCLUSIVE: : tag = "SELECT FOR NO KEY UPDATE"; : break; : case ROW_MARK_SHARE: : tag = "SELECT FOR SHARE"; : break; 0.00 : 6a27f7: b9 39 0b 8b 00 mov $0x8b0b39,%ecx : case ROW_MARK_KEYSHARE: : tag = "SELECT FOR KEY SHARE"; : break; 0.00 : 6a27fc: e9 b7 f7 ff ff jmpq 6a1fb8 : tag = "DECLARE CURSOR"; : } : else if (stmt->rowMarks != NIL) : { : /* not 100% but probably close enough */ : switch (((PlanRowMark *) linitial(stmt->rowMarks))->markType) 0.00 : 6a2801: b9 28 0b 8b 00 mov $0x8b0b28,%ecx : case ROW_MARK_NOKEYEXCLUSIVE: : tag = "SELECT FOR NO KEY UPDATE"; : break; : case ROW_MARK_SHARE: : tag = "SELECT FOR SHARE"; : break; 0.00 : 6a2806: e9 ad f7 ff ff jmpq 6a1fb8 : tag = "DECLARE CURSOR"; : } : else if (stmt->rowMarks != NIL) : { : /* not 100% but probably close enough */ : switch (((PlanRowMark *) linitial(stmt->rowMarks))->markType) 0.00 : 6a280b: b9 fd 0a 8b 00 mov $0x8b0afd,%ecx 0.00 : 6a2810: e9 a3 f7 ff ff jmpq 6a1fb8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:276 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cc7d0 : : /* : * strtoi --- just like strtol, but returns int not long : */ : static int : strtoi(const char *nptr, char **endptr, int base) : { 0.00 : 6cc7d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 50.00 : 6cc7d1: 48 89 e5 mov %rsp,%rbp 0.00 : 6cc7d4: 53 push %rbx 0.00 : 6cc7d5: 48 83 ec 08 sub $0x8,%rsp : long val; : : val = strtol(nptr, endptr, base); 0.00 : 6cc7d9: e8 b2 d3 d9 ff callq 469b90 : #ifdef HAVE_LONG_INT_64 : if (val != (long) ((int32) val)) 0.00 : 6cc7de: 48 63 d0 movslq %eax,%rdx 0.00 : 6cc7e1: 89 c3 mov %eax,%ebx 0.00 : 6cc7e3: 48 39 d0 cmp %rdx,%rax 0.00 : 6cc7e6: 74 0b je 6cc7f3 : errno = ERANGE; 0.00 : 6cc7e8: e8 d3 d4 d9 ff callq 469cc0 <__errno_location@plt> 0.00 : 6cc7ed: c7 00 22 00 00 00 movl $0x22,(%rax) : #endif : return (int) val; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:276 50.00 : 6cc7f3: 89 d8 mov %ebx,%eax 0.00 : 6cc7f5: 48 83 c4 08 add $0x8,%rsp 0.00 : 6cc7f9: 5b pop %rbx 0.00 : 6cc7fa: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ea7e0 : : PG_RETURN_BOOL(arg1 != arg2); : } : : Datum : int4lt(PG_FUNCTION_ARGS) : { 0.00 : 6ea7e0: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 6ea7e4: 39 47 20 cmp %eax,0x20(%rdi) 0.00 : 6ea7e7: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 100.00 : 6ea7e8: 48 89 e5 mov %rsp,%rbp : int32 arg1 = PG_GETARG_INT32(0); : int32 arg2 = PG_GETARG_INT32(1); : : PG_RETURN_BOOL(arg1 < arg2); : } 0.00 : 6ea7eb: c9 leaveq : PG_RETURN_BOOL(arg1 != arg2); : } : : Datum : int4lt(PG_FUNCTION_ARGS) : { 0.00 : 6ea7ec: 0f 9c c0 setl %al 0.00 : 6ea7ef: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3892 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007077c0 : : * The var is displayed to the number of digits indicated by its dscale. : * Returns a palloc'd string. : */ : static char * : get_str_from_var(NumericVar *var) : { 0.00 : 7077c0: 55 push %rbp : * # of decimal digits we will print after decimal point. We may generate : * as many as DEC_DIGITS-1 excess digits at the end, and in addition we : * need room for sign, decimal point, null terminator. : */ : i = (var->weight + 1) * DEC_DIGITS; : if (i <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:3892 100.00 : 7077c1: b8 01 00 00 00 mov $0x1,%eax : * The var is displayed to the number of digits indicated by its dscale. : * Returns a palloc'd string. : */ : static char * : get_str_from_var(NumericVar *var) : { 0.00 : 7077c6: 48 89 e5 mov %rsp,%rbp 0.00 : 7077c9: 41 56 push %r14 0.00 : 7077cb: 41 55 push %r13 0.00 : 7077cd: 41 54 push %r12 0.00 : 7077cf: 49 89 fc mov %rdi,%r12 0.00 : 7077d2: 53 push %rbx : : #if DEC_DIGITS > 1 : NumericDigit d1; : #endif : : dscale = var->dscale; 0.00 : 7077d3: 44 8b 6f 0c mov 0xc(%rdi),%r13d : * i is set to the # of decimal digits before decimal point. dscale is the : * # of decimal digits we will print after decimal point. We may generate : * as many as DEC_DIGITS-1 excess digits at the end, and in addition we : * need room for sign, decimal point, null terminator. : */ : i = (var->weight + 1) * DEC_DIGITS; 0.00 : 7077d7: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 7077da: 8d 3c bd 04 00 00 00 lea 0x4(,%rdi,4),%edi : if (i <= 0) 0.00 : 7077e1: 85 ff test %edi,%edi 0.00 : 7077e3: 0f 4e f8 cmovle %eax,%edi : i = 1; : : str = palloc(i + dscale + DEC_DIGITS + 2); 0.00 : 7077e6: 42 8d 7c 2f 06 lea 0x6(%rdi,%r13,1),%edi 0.00 : 7077eb: 48 63 ff movslq %edi,%rdi 0.00 : 7077ee: e8 5d 15 09 00 callq 798d50 : cp = str; : : /* : * Output a dash for negative values : */ : if (var->sign == NUMERIC_NEG) 0.00 : 7077f3: 41 81 7c 24 08 00 40 cmpl $0x4000,0x8(%r12) 0.00 : 7077fa: 00 00 : */ : i = (var->weight + 1) * DEC_DIGITS; : if (i <= 0) : i = 1; : : str = palloc(i + dscale + DEC_DIGITS + 2); 0.00 : 7077fc: 49 89 c6 mov %rax,%r14 : cp = str; : : /* : * Output a dash for negative values : */ : if (var->sign == NUMERIC_NEG) 0.00 : 7077ff: 49 89 c0 mov %rax,%r8 0.00 : 707802: 0f 84 38 02 00 00 je 707a40 : *cp++ = '-'; : : /* : * Output all digits before the decimal point : */ : if (var->weight < 0) 0.00 : 707808: 41 8b 44 24 04 mov 0x4(%r12),%eax : { : d = var->weight + 1; : *cp++ = '0'; 0.00 : 70780d: 45 31 d2 xor %r10d,%r10d : *cp++ = '-'; : : /* : * Output all digits before the decimal point : */ : if (var->weight < 0) 0.00 : 707810: 85 c0 test %eax,%eax 0.00 : 707812: 79 69 jns 70787d 0.00 : 707814: e9 10 01 00 00 jmpq 707929 0.00 : 707819: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : else : { : for (d = 0; d <= var->weight; d++) : { : dig = (d < var->ndigits) ? var->digits[d] : 0; 0.00 : 707820: 31 ff xor %edi,%edi 0.00 : 707822: 31 f6 xor %esi,%esi 0.00 : 707824: 45 31 db xor %r11d,%r11d 0.00 : 707827: 31 c9 xor %ecx,%ecx 0.00 : 707829: 45 31 c9 xor %r9d,%r9d 0.00 : 70782c: 31 db xor %ebx,%ebx 0.00 : 70782e: ba 30 00 00 00 mov $0x30,%edx : /* In the first digit, suppress extra leading decimal zeroes */ : #if DEC_DIGITS == 4 : { : bool putit = (d > 0); 0.00 : 707833: 45 85 d2 test %r10d,%r10d 0.00 : 707836: 0f 9f c0 setg %al : : d1 = dig / 1000; : dig -= d1 * 1000; : putit |= (d1 > 0); : if (putit) 0.00 : 707839: 40 08 c6 or %al,%sil 0.00 : 70783c: 74 0a je 707848 : *cp++ = d1 + '0'; 0.00 : 70783e: 8d 47 30 lea 0x30(%rdi),%eax 0.00 : 707841: 41 88 00 mov %al,(%r8) 0.00 : 707844: 49 83 c0 01 add $0x1,%r8 : d1 = dig / 100; : dig -= d1 * 100; : putit |= (d1 > 0); : if (putit) 0.00 : 707848: 40 08 f1 or %sil,%cl 0.00 : 70784b: 74 0b je 707858 : *cp++ = d1 + '0'; 0.00 : 70784d: 41 8d 43 30 lea 0x30(%r11),%eax 0.00 : 707851: 41 88 00 mov %al,(%r8) 0.00 : 707854: 49 83 c0 01 add $0x1,%r8 : d1 = dig / 10; : dig -= d1 * 10; : putit |= (d1 > 0); : if (putit) 0.00 : 707858: 08 d9 or %bl,%cl 0.00 : 70785a: 74 0b je 707867 : *cp++ = d1 + '0'; 0.00 : 70785c: 41 8d 41 30 lea 0x30(%r9),%eax 0.00 : 707860: 41 88 00 mov %al,(%r8) 0.00 : 707863: 49 83 c0 01 add $0x1,%r8 : *cp++ = dig + '0'; 0.00 : 707867: 41 88 10 mov %dl,(%r8) : d = var->weight + 1; : *cp++ = '0'; : } : else : { : for (d = 0; d <= var->weight; d++) 0.00 : 70786a: 41 83 c2 01 add $0x1,%r10d : d1 = dig / 10; : dig -= d1 * 10; : putit |= (d1 > 0); : if (putit) : *cp++ = d1 + '0'; : *cp++ = dig + '0'; 0.00 : 70786e: 49 83 c0 01 add $0x1,%r8 : d = var->weight + 1; : *cp++ = '0'; : } : else : { : for (d = 0; d <= var->weight; d++) 0.00 : 707872: 45 39 54 24 04 cmp %r10d,0x4(%r12) 0.00 : 707877: 0f 8c b8 00 00 00 jl 707935 : { : dig = (d < var->ndigits) ? var->digits[d] : 0; 0.00 : 70787d: 45 39 14 24 cmp %r10d,(%r12) 0.00 : 707881: 7e 9d jle 707820 0.00 : 707883: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 707888: 49 63 d2 movslq %r10d,%rdx 0.00 : 70788b: bb 9c ff ff ff mov $0xffffff9c,%ebx 0.00 : 707890: 0f b7 14 50 movzwl (%rax,%rdx,2),%edx 0.00 : 707894: 0f bf c2 movswl %dx,%eax 0.00 : 707897: 69 c0 13 83 ff ff imul $0xffff8313,%eax,%eax 0.00 : 70789d: c1 e8 10 shr $0x10,%eax 0.00 : 7078a0: 8d 3c 02 lea (%rdx,%rax,1),%edi 0.00 : 7078a3: 89 d0 mov %edx,%eax 0.00 : 7078a5: 66 c1 f8 0f sar $0xf,%ax 0.00 : 7078a9: 66 c1 ff 09 sar $0x9,%di 0.00 : 7078ad: 66 29 c7 sub %ax,%di 0.00 : 7078b0: b8 18 fc ff ff mov $0xfffffc18,%eax 0.00 : 7078b5: 89 f9 mov %edi,%ecx 0.00 : 7078b7: 0f af c8 imul %eax,%ecx 0.00 : 7078ba: 01 d1 add %edx,%ecx 0.00 : 7078bc: 66 85 ff test %di,%di 0.00 : 7078bf: 0f bf c1 movswl %cx,%eax 0.00 : 7078c2: 40 0f 9f c6 setg %sil 0.00 : 7078c6: 69 c0 7b 14 00 00 imul $0x147b,%eax,%eax 0.00 : 7078cc: c1 e8 10 shr $0x10,%eax 0.00 : 7078cf: 41 89 c3 mov %eax,%r11d 0.00 : 7078d2: 89 c8 mov %ecx,%eax 0.00 : 7078d4: 66 c1 f8 0f sar $0xf,%ax 0.00 : 7078d8: 66 41 c1 fb 03 sar $0x3,%r11w 0.00 : 7078dd: 66 41 29 c3 sub %ax,%r11w 0.00 : 7078e1: 44 89 da mov %r11d,%edx 0.00 : 7078e4: 0f af d3 imul %ebx,%edx 0.00 : 7078e7: 01 ca add %ecx,%edx 0.00 : 7078e9: 66 45 85 db test %r11w,%r11w 0.00 : 7078ed: 0f bf c2 movswl %dx,%eax 0.00 : 7078f0: 0f 9f c1 setg %cl 0.00 : 7078f3: 69 c0 67 66 00 00 imul $0x6667,%eax,%eax 0.00 : 7078f9: c1 e8 10 shr $0x10,%eax 0.00 : 7078fc: 41 89 c1 mov %eax,%r9d 0.00 : 7078ff: 89 d0 mov %edx,%eax 0.00 : 707901: 66 c1 f8 0f sar $0xf,%ax 0.00 : 707905: 66 41 c1 f9 02 sar $0x2,%r9w 0.00 : 70790a: 66 41 29 c1 sub %ax,%r9w 0.00 : 70790e: 41 0f bf c1 movswl %r9w,%eax 0.00 : 707912: 8d 04 80 lea (%rax,%rax,4),%eax 0.00 : 707915: 01 c0 add %eax,%eax 0.00 : 707917: 66 45 85 c9 test %r9w,%r9w 0.00 : 70791b: 0f 9f c3 setg %bl 0.00 : 70791e: 66 29 c2 sub %ax,%dx 0.00 : 707921: 83 c2 30 add $0x30,%edx 0.00 : 707924: e9 0a ff ff ff jmpq 707833 : /* : * Output all digits before the decimal point : */ : if (var->weight < 0) : { : d = var->weight + 1; 0.00 : 707929: 44 8d 50 01 lea 0x1(%rax),%r10d : *cp++ = '0'; 0.00 : 70792d: 41 c6 00 30 movb $0x30,(%r8) 0.00 : 707931: 49 83 c0 01 add $0x1,%r8 : /* : * If requested, output a decimal point and all the digits that follow it. : * We initially put out a multiple of DEC_DIGITS digits, then truncate if : * needed. : */ : if (dscale > 0) 0.00 : 707935: 45 85 ed test %r13d,%r13d 0.00 : 707938: 0f 8e f1 00 00 00 jle 707a2f : { : *cp++ = '.'; 0.00 : 70793e: 41 c6 00 2e movb $0x2e,(%r8) 0.00 : 707942: 4d 8d 58 01 lea 0x1(%r8),%r11 0.00 : 707946: 31 ff xor %edi,%edi 0.00 : 707948: e9 b0 00 00 00 jmpq 7079fd 0.00 : 70794d: 0f 1f 00 nopl (%rax) : endcp = cp + dscale; : for (i = 0; i < dscale; d++, i += DEC_DIGITS) : { : dig = (d >= 0 && d < var->ndigits) ? var->digits[d] : 0; 0.00 : 707950: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 707955: 49 63 d2 movslq %r10d,%rdx 0.00 : 707958: 41 b9 18 fc ff ff mov $0xfffffc18,%r9d 0.00 : 70795e: 0f b7 0c 50 movzwl (%rax,%rdx,2),%ecx 0.00 : 707962: 0f bf c1 movswl %cx,%eax 0.00 : 707965: 89 ca mov %ecx,%edx 0.00 : 707967: 69 c0 13 83 ff ff imul $0xffff8313,%eax,%eax 0.00 : 70796d: 66 c1 fa 0f sar $0xf,%dx 0.00 : 707971: c1 e8 10 shr $0x10,%eax 0.00 : 707974: 8d 04 01 lea (%rcx,%rax,1),%eax 0.00 : 707977: 66 c1 f8 09 sar $0x9,%ax 0.00 : 70797b: 66 29 d0 sub %dx,%ax 0.00 : 70797e: 89 c6 mov %eax,%esi 0.00 : 707980: 41 0f af f1 imul %r9d,%esi 0.00 : 707984: 44 8d 48 30 lea 0x30(%rax),%r9d 0.00 : 707988: 01 ce add %ecx,%esi 0.00 : 70798a: 0f bf c6 movswl %si,%eax 0.00 : 70798d: 89 f2 mov %esi,%edx 0.00 : 70798f: 69 c0 7b 14 00 00 imul $0x147b,%eax,%eax 0.00 : 707995: 66 c1 fa 0f sar $0xf,%dx 0.00 : 707999: c1 e8 10 shr $0x10,%eax 0.00 : 70799c: 66 c1 f8 03 sar $0x3,%ax 0.00 : 7079a0: 66 29 d0 sub %dx,%ax 0.00 : 7079a3: ba 9c ff ff ff mov $0xffffff9c,%edx 0.00 : 7079a8: 89 c1 mov %eax,%ecx 0.00 : 7079aa: 0f af ca imul %edx,%ecx 0.00 : 7079ad: 01 f1 add %esi,%ecx 0.00 : 7079af: 8d 70 30 lea 0x30(%rax),%esi 0.00 : 7079b2: 0f bf c1 movswl %cx,%eax 0.00 : 7079b5: 89 ca mov %ecx,%edx 0.00 : 7079b7: 69 c0 67 66 00 00 imul $0x6667,%eax,%eax 0.00 : 7079bd: 66 c1 fa 0f sar $0xf,%dx 0.00 : 7079c1: c1 e8 10 shr $0x10,%eax 0.00 : 7079c4: 66 c1 f8 02 sar $0x2,%ax 0.00 : 7079c8: 66 29 d0 sub %dx,%ax 0.00 : 7079cb: 0f bf d0 movswl %ax,%edx 0.00 : 7079ce: 83 c0 30 add $0x30,%eax 0.00 : 7079d1: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 7079d4: 01 d2 add %edx,%edx 0.00 : 7079d6: 66 29 d1 sub %dx,%cx 0.00 : 7079d9: 8d 51 30 lea 0x30(%rcx),%edx : #if DEC_DIGITS == 4 : d1 = dig / 1000; : dig -= d1 * 1000; : *cp++ = d1 + '0'; 0.00 : 7079dc: 45 88 4c 38 01 mov %r9b,0x1(%r8,%rdi,1) : d1 = dig / 100; : dig -= d1 * 100; : *cp++ = d1 + '0'; 0.00 : 7079e1: 41 88 74 38 02 mov %sil,0x2(%r8,%rdi,1) : d1 = dig / 10; : dig -= d1 * 10; : *cp++ = d1 + '0'; 0.00 : 7079e6: 41 88 44 38 03 mov %al,0x3(%r8,%rdi,1) : *cp++ = dig + '0'; 0.00 : 7079eb: 41 88 54 38 04 mov %dl,0x4(%r8,%rdi,1) 0.00 : 7079f0: 48 83 c7 04 add $0x4,%rdi : */ : if (dscale > 0) : { : *cp++ = '.'; : endcp = cp + dscale; : for (i = 0; i < dscale; d++, i += DEC_DIGITS) 0.00 : 7079f4: 41 39 fd cmp %edi,%r13d 0.00 : 7079f7: 7e 2f jle 707a28 0.00 : 7079f9: 41 83 c2 01 add $0x1,%r10d : { : dig = (d >= 0 && d < var->ndigits) ? var->digits[d] : 0; 0.00 : 7079fd: 45 85 d2 test %r10d,%r10d 0.00 : 707a00: 78 0a js 707a0c 0.00 : 707a02: 45 39 14 24 cmp %r10d,(%r12) 0.00 : 707a06: 0f 8f 44 ff ff ff jg 707950 0.00 : 707a0c: 41 b9 30 00 00 00 mov $0x30,%r9d 0.00 : 707a12: be 30 00 00 00 mov $0x30,%esi 0.00 : 707a17: b8 30 00 00 00 mov $0x30,%eax 0.00 : 707a1c: ba 30 00 00 00 mov $0x30,%edx 0.00 : 707a21: eb b9 jmp 7079dc 0.00 : 707a23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * needed. : */ : if (dscale > 0) : { : *cp++ = '.'; : endcp = cp + dscale; 0.00 : 707a28: 49 63 c5 movslq %r13d,%rax 0.00 : 707a2b: 4d 8d 04 03 lea (%r11,%rax,1),%r8 : } : : /* : * terminate the string and return it : */ : *cp = '\0'; 0.00 : 707a2f: 41 c6 00 00 movb $0x0,(%r8) : return str; : } 0.00 : 707a33: 4c 89 f0 mov %r14,%rax 0.00 : 707a36: 5b pop %rbx 0.00 : 707a37: 41 5c pop %r12 0.00 : 707a39: 41 5d pop %r13 0.00 : 707a3b: 41 5e pop %r14 0.00 : 707a3d: c9 leaveq 0.00 : 707a3e: c3 retq 0.00 : 707a3f: 90 nop : : /* : * Output a dash for negative values : */ : if (var->sign == NUMERIC_NEG) : *cp++ = '-'; 0.00 : 707a40: c6 00 2d movb $0x2d,(%rax) 0.00 : 707a43: 4c 8d 40 01 lea 0x1(%rax),%r8 0.00 : 707a47: e9 bc fd ff ff jmpq 707808 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:452 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070d860 : : * : * Input function for numeric data type : */ : Datum : numeric_in(PG_FUNCTION_ARGS) : { 0.00 : 70d860: 55 push %rbp 0.00 : 70d861: 48 89 e5 mov %rsp,%rbp 0.00 : 70d864: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:452 100.00 : 70d866: 41 56 push %r14 0.00 : 70d868: 41 55 push %r13 0.00 : 70d86a: 41 54 push %r12 0.00 : 70d86c: 53 push %rbx 0.00 : 70d86d: 48 83 ec 28 sub $0x28,%rsp : char *str = PG_GETARG_CSTRING(0); 0.00 : 70d871: 4c 8b 77 20 mov 0x20(%rdi),%r14 : : #ifdef NOT_USED : Oid typelem = PG_GETARG_OID(1); : #endif : int32 typmod = PG_GETARG_INT32(2); 0.00 : 70d875: 4c 8b 7f 30 mov 0x30(%rdi),%r15 : Numeric res; : const char *cp; : : /* Skip leading spaces */ : cp = str; : while (*cp) 0.00 : 70d879: 41 0f b6 1e movzbl (%r14),%ebx 0.00 : 70d87d: 4d 89 f4 mov %r14,%r12 0.00 : 70d880: 84 db test %bl,%bl 0.00 : 70d882: 74 2b je 70d8af : * : * Input function for numeric data type : */ : Datum : numeric_in(PG_FUNCTION_ARGS) : { 0.00 : 70d884: e8 37 c0 d5 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 70d889: 4d 89 f4 mov %r14,%r12 0.00 : 70d88c: 48 8b 10 mov (%rax),%rdx 0.00 : 70d88f: eb 14 jmp 70d8a5 0.00 : 70d891: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : cp = str; : while (*cp) : { : if (!isspace((unsigned char) *cp)) : break; : cp++; 0.00 : 70d898: 49 83 c4 01 add $0x1,%r12 : Numeric res; : const char *cp; : : /* Skip leading spaces */ : cp = str; : while (*cp) 0.00 : 70d89c: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 70d8a1: 84 db test %bl,%bl 0.00 : 70d8a3: 74 0a je 70d8af : { : if (!isspace((unsigned char) *cp)) 0.00 : 70d8a5: 0f b6 c3 movzbl %bl,%eax 0.00 : 70d8a8: f6 44 42 01 20 testb $0x20,0x1(%rdx,%rax,2) 0.00 : 70d8ad: 75 e9 jne 70d898 : } : : /* : * Check for NaN : */ : if (pg_strncasecmp(cp, "NaN", 3) == 0) 0.00 : 70d8af: ba 03 00 00 00 mov $0x3,%edx 0.00 : 70d8b4: be e7 b5 8b 00 mov $0x8bb5e7,%esi 0.00 : 70d8b9: 4c 89 e7 mov %r12,%rdi 0.00 : 70d8bc: e8 7f ef 09 00 callq 7ac840 0.00 : 70d8c1: 85 c0 test %eax,%eax 0.00 : 70d8c3: 0f 84 97 00 00 00 je 70d960 : /* : * Use set_var_from_str() to parse a normal numeric value : */ : NumericVar value; : : init_var(&value); 0.00 : 70d8c9: 4c 8d 6d b0 lea -0x50(%rbp),%r13 0.00 : 70d8cd: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 70d8d4: 00 0.00 : 70d8d5: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 70d8dc: 00 0.00 : 70d8dd: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 70d8e4: 00 : : cp = set_var_from_str(str, cp, &value); 0.00 : 70d8e5: 4c 89 e6 mov %r12,%rsi 0.00 : 70d8e8: 4c 89 f7 mov %r14,%rdi : /* : * Use set_var_from_str() to parse a normal numeric value : */ : NumericVar value; : : init_var(&value); 0.00 : 70d8eb: 49 c7 45 18 00 00 00 movq $0x0,0x18(%r13) 0.00 : 70d8f2: 00 : : cp = set_var_from_str(str, cp, &value); 0.00 : 70d8f3: 4c 89 ea mov %r13,%rdx 0.00 : 70d8f6: e8 45 e2 ff ff callq 70bb40 : * We duplicate a few lines of code here because we would like to : * throw any trailing-junk syntax error before any semantic error : * resulting from apply_typmod. We can't easily fold the two cases : * together because we mustn't apply apply_typmod to a NaN. : */ : while (*cp) 0.00 : 70d8fb: 0f b6 18 movzbl (%rax),%ebx : */ : NumericVar value; : : init_var(&value); : : cp = set_var_from_str(str, cp, &value); 0.00 : 70d8fe: 49 89 c4 mov %rax,%r12 : * We duplicate a few lines of code here because we would like to : * throw any trailing-junk syntax error before any semantic error : * resulting from apply_typmod. We can't easily fold the two cases : * together because we mustn't apply apply_typmod to a NaN. : */ : while (*cp) 0.00 : 70d901: 84 db test %bl,%bl 0.00 : 70d903: 74 26 je 70d92b : * : * Input function for numeric data type : */ : Datum : numeric_in(PG_FUNCTION_ARGS) : { 0.00 : 70d905: e8 b6 bf d5 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 70d90a: 48 8b 10 mov (%rax),%rdx 0.00 : 70d90d: 0f 1f 00 nopl (%rax) : * resulting from apply_typmod. We can't easily fold the two cases : * together because we mustn't apply apply_typmod to a NaN. : */ : while (*cp) : { : if (!isspace((unsigned char) *cp)) 0.00 : 70d910: 0f b6 c3 movzbl %bl,%eax 0.00 : 70d913: f6 44 42 01 20 testb $0x20,0x1(%rdx,%rax,2) 0.00 : 70d918: 0f 84 b2 00 00 00 je 70d9d0 : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : cp++; 0.00 : 70d91e: 49 83 c4 01 add $0x1,%r12 : * We duplicate a few lines of code here because we would like to : * throw any trailing-junk syntax error before any semantic error : * resulting from apply_typmod. We can't easily fold the two cases : * together because we mustn't apply apply_typmod to a NaN. : */ : while (*cp) 0.00 : 70d922: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 70d927: 84 db test %bl,%bl 0.00 : 70d929: 75 e5 jne 70d910 : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : cp++; : } : : apply_typmod(&value, typmod); 0.00 : 70d92b: 44 89 fe mov %r15d,%esi 0.00 : 70d92e: 4c 89 ef mov %r13,%rdi 0.00 : 70d931: e8 fa f5 ff ff callq 70cf30 : : res = make_result(&value); 0.00 : 70d936: 4c 89 ef mov %r13,%rdi 0.00 : 70d939: e8 c2 bf ff ff callq 709900 : free_var(&value); 0.00 : 70d93e: 4c 89 ef mov %r13,%rdi : cp++; : } : : apply_typmod(&value, typmod); : : res = make_result(&value); 0.00 : 70d941: 49 89 c7 mov %rax,%r15 : free_var(&value); 0.00 : 70d944: e8 07 93 ff ff callq 706c50 : } : : PG_RETURN_NUMERIC(res); : } 0.00 : 70d949: 48 83 c4 28 add $0x28,%rsp 0.00 : 70d94d: 4c 89 f8 mov %r15,%rax 0.00 : 70d950: 5b pop %rbx 0.00 : 70d951: 41 5c pop %r12 0.00 : 70d953: 41 5d pop %r13 0.00 : 70d955: 41 5e pop %r14 0.00 : 70d957: 41 5f pop %r15 0.00 : 70d959: c9 leaveq 0.00 : 70d95a: c3 retq 0.00 : 70d95b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * Check for NaN : */ : if (pg_strncasecmp(cp, "NaN", 3) == 0) : { : res = make_result(&const_nan); 0.00 : 70d960: bf 00 89 b6 00 mov $0xb68900,%edi : : /* Should be nothing left but spaces */ : cp += 3; 0.00 : 70d965: 4d 8d 6c 24 03 lea 0x3(%r12),%r13 : /* : * Check for NaN : */ : if (pg_strncasecmp(cp, "NaN", 3) == 0) : { : res = make_result(&const_nan); 0.00 : 70d96a: e8 91 bf ff ff callq 709900 : : /* Should be nothing left but spaces */ : cp += 3; : while (*cp) 0.00 : 70d96f: 41 0f b6 5c 24 03 movzbl 0x3(%r12),%ebx : /* : * Check for NaN : */ : if (pg_strncasecmp(cp, "NaN", 3) == 0) : { : res = make_result(&const_nan); 0.00 : 70d975: 49 89 c7 mov %rax,%r15 : : /* Should be nothing left but spaces */ : cp += 3; : while (*cp) 0.00 : 70d978: 84 db test %bl,%bl 0.00 : 70d97a: 74 cd je 70d949 : * : * Input function for numeric data type : */ : Datum : numeric_in(PG_FUNCTION_ARGS) : { 0.00 : 70d97c: e8 3f bf d5 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 70d981: 48 8b 10 mov (%rax),%rdx 0.00 : 70d984: eb 17 jmp 70d99d 0.00 : 70d986: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 70d98d: 00 00 00 : if (!isspace((unsigned char) *cp)) : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type numeric: \"%s\"", : str))); : cp++; 0.00 : 70d990: 49 83 c5 01 add $0x1,%r13 : { : res = make_result(&const_nan); : : /* Should be nothing left but spaces */ : cp += 3; : while (*cp) 0.00 : 70d994: 41 0f b6 5d 00 movzbl 0x0(%r13),%ebx 0.00 : 70d999: 84 db test %bl,%bl 0.00 : 70d99b: 74 ac je 70d949 : { : if (!isspace((unsigned char) *cp)) 0.00 : 70d99d: 0f b6 c3 movzbl %bl,%eax 0.00 : 70d9a0: f6 44 42 01 20 testb $0x20,0x1(%rdx,%rax,2) 0.00 : 70d9a5: 75 e9 jne 70d990 : ereport(ERROR, 0.00 : 70d9a7: 45 31 c0 xor %r8d,%r8d 0.00 : 70d9aa: b9 ca 42 8c 00 mov $0x8c42ca,%ecx 0.00 : 70d9af: ba e6 01 00 00 mov $0x1e6,%edx : * together because we mustn't apply apply_typmod to a NaN. : */ : while (*cp) : { : if (!isspace((unsigned char) *cp)) : ereport(ERROR, 0.00 : 70d9b4: be e5 3c 8c 00 mov $0x8c3ce5,%esi 0.00 : 70d9b9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70d9be: e8 fd d0 06 00 callq 77aac0 0.00 : 70d9c3: 84 c0 test %al,%al 0.00 : 70d9c5: 75 18 jne 70d9df 0.00 : 70d9c7: e8 04 bb d5 ff callq 4694d0 0.00 : 70d9cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 70d9d0: 45 31 c0 xor %r8d,%r8d 0.00 : 70d9d3: b9 ca 42 8c 00 mov $0x8c42ca,%ecx 0.00 : 70d9d8: ba 01 02 00 00 mov $0x201,%edx 0.00 : 70d9dd: eb d5 jmp 70d9b4 0.00 : 70d9df: 4c 89 f6 mov %r14,%rsi 0.00 : 70d9e2: bf d0 3e 8c 00 mov $0x8c3ed0,%edi 0.00 : 70d9e7: 31 c0 xor %eax,%eax 0.00 : 70d9e9: e8 b2 ee 06 00 callq 77c8a0 0.00 : 70d9ee: bf 82 00 02 02 mov $0x2020082,%edi 0.00 : 70d9f3: 89 c3 mov %eax,%ebx 0.00 : 70d9f5: e8 56 f3 06 00 callq 77cd50 0.00 : 70d9fa: 89 de mov %ebx,%esi 0.00 : 70d9fc: 89 c7 mov %eax,%edi 0.00 : 70d9fe: 31 c0 xor %eax,%eax 0.00 : 70da00: e8 db cb 06 00 callq 77a5e0 0.00 : 70da05: eb c0 jmp 70d9c7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/ruleutils.c:3165 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000072acc0 : : * choices. : */ : static void : set_relation_column_names(deparse_namespace *dpns, RangeTblEntry *rte, : deparse_columns *colinfo) : { 0.00 : 72acc0: 55 push %rbp 0.00 : 72acc1: 48 89 e5 mov %rsp,%rbp 0.00 : 72acc4: 41 57 push %r15 0.00 : 72acc6: 49 89 d7 mov %rdx,%r15 0.00 : 72acc9: 41 56 push %r14 0.00 : 72accb: 41 55 push %r13 0.00 : 72accd: 41 54 push %r12 0.00 : 72accf: 53 push %rbx 0.00 : 72acd0: 48 83 ec 58 sub $0x58,%rsp 0.00 : 72acd4: 48 89 7d 88 mov %rdi,-0x78(%rbp) 0.00 : 72acd8: 48 89 75 80 mov %rsi,-0x80(%rbp) : /* : * Extract the RTE's "real" column names. This is comparable to : * get_rte_attribute_name, except that it's important to disregard dropped : * columns. We put NULL into the array for a dropped column. : */ : if (rte->rtekind == RTE_RELATION) 0.00 : 72acdc: 8b 4e 04 mov 0x4(%rsi),%ecx 0.00 : 72acdf: 85 c9 test %ecx,%ecx 0.00 : 72ace1: 0f 84 19 02 00 00 je 72af00 : else : { : /* Otherwise use the column names from eref */ : ListCell *lc; : : ncolumns = list_length(rte->eref->colnames); 0.00 : 72ace7: 48 8b 5d 80 mov -0x80(%rbp),%rbx 0.00 : 72aceb: 48 8b 43 78 mov 0x78(%rbx),%rax 0.00 : 72acef: 48 8b 40 10 mov 0x10(%rax),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 72acf3: 48 85 c0 test %rax,%rax 0.00 : 72acf6: 0f 84 c4 02 00 00 je 72afc0 0.00 : 72acfc: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 72acff: 89 45 94 mov %eax,-0x6c(%rbp) 0.00 : 72ad02: 48 98 cltq 0.00 : 72ad04: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 72ad08: 48 c1 e0 03 shl $0x3,%rax 0.00 : 72ad0c: 48 89 45 c8 mov %rax,-0x38(%rbp) : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); 0.00 : 72ad10: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 72ad14: e8 37 e0 06 00 callq 798d50 : : i = 0; : foreach(lc, rte->eref->colnames) 0.00 : 72ad19: 48 8b 55 80 mov -0x80(%rbp),%rdx : { : /* Otherwise use the column names from eref */ : ListCell *lc; : : ncolumns = list_length(rte->eref->colnames); : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); 0.00 : 72ad1d: 48 89 45 98 mov %rax,-0x68(%rbp) : : i = 0; : foreach(lc, rte->eref->colnames) 0.00 : 72ad21: 48 8b 42 78 mov 0x78(%rdx),%rax 0.00 : 72ad25: 48 8b 40 10 mov 0x10(%rax),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 72ad29: 48 85 c0 test %rax,%rax 0.00 : 72ad2c: 74 37 je 72ad65 0.00 : 72ad2e: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 72ad32: 48 85 c9 test %rcx,%rcx 0.00 : 72ad35: 74 2e je 72ad65 0.00 : 72ad37: 31 f6 xor %esi,%esi : * a column that was dropped at the time of parsing the query, so : * treat it as dropped. : */ : char *cname = strVal(lfirst(lc)); : : if (cname[0] == '\0') 0.00 : 72ad39: 31 ff xor %edi,%edi 0.00 : 72ad3b: eb 06 jmp 72ad43 0.00 : 72ad3d: 0f 1f 00 nopl (%rax) : cname = NULL; : real_colnames[i] = cname; : i++; 0.00 : 72ad40: 83 c6 01 add $0x1,%esi : /* : * If the column name shown in eref is an empty string, then it's : * a column that was dropped at the time of parsing the query, so : * treat it as dropped. : */ : char *cname = strVal(lfirst(lc)); 0.00 : 72ad43: 48 8b 01 mov (%rcx),%rax : : if (cname[0] == '\0') : cname = NULL; : real_colnames[i] = cname; 0.00 : 72ad46: 48 8b 5d 98 mov -0x68(%rbp),%rbx 0.00 : 72ad4a: 48 63 d6 movslq %esi,%rdx : /* : * If the column name shown in eref is an empty string, then it's : * a column that was dropped at the time of parsing the query, so : * treat it as dropped. : */ : char *cname = strVal(lfirst(lc)); 0.00 : 72ad4d: 48 8b 40 08 mov 0x8(%rax),%rax : : if (cname[0] == '\0') 0.00 : 72ad51: 80 38 00 cmpb $0x0,(%rax) 0.00 : 72ad54: 48 0f 44 c7 cmove %rdi,%rax : cname = NULL; : real_colnames[i] = cname; 0.00 : 72ad58: 48 89 04 d3 mov %rax,(%rbx,%rdx,8) : : ncolumns = list_length(rte->eref->colnames); : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); : : i = 0; : foreach(lc, rte->eref->colnames) 0.00 : 72ad5c: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 72ad60: 48 85 c9 test %rcx,%rcx 0.00 : 72ad63: 75 db jne 72ad40 : * it's possible that there are now more columns than there were when the : * query was parsed, ie colnames could be longer than rte->eref->colnames. : * We must assign unique aliases to the new columns too, else there could : * be unresolved conflicts when the view/rule is reloaded. : */ : expand_colnames_array_to(colinfo, ncolumns); 0.00 : 72ad65: 8b 75 94 mov -0x6c(%rbp),%esi 0.00 : 72ad68: 4c 89 ff mov %r15,%rdi 0.00 : 72ad6b: e8 d0 fe ff ff callq 72ac40 : * : * Note: because we leave colinfo->num_new_cols zero until after the loop, : * colname_is_unique will not consult that array, which is fine because it : * would only be duplicate effort. : */ : colinfo->new_colnames = (char **) palloc(ncolumns * sizeof(char *)); 0.00 : 72ad70: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 72ad74: e8 d7 df 06 00 callq 798d50 0.00 : 72ad79: 49 89 47 18 mov %rax,0x18(%r15) : colinfo->is_new_col = (bool *) palloc(ncolumns * sizeof(bool)); 0.00 : 72ad7d: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 72ad81: e8 ca df 06 00 callq 798d50 0.00 : 72ad86: 49 89 47 20 mov %rax,0x20(%r15) : * colinfo->colnames and colinfo->new_colnames. The former array has NULL : * entries for dropped columns, the latter omits them. Also mark : * new_colnames entries as to whether they are new since parse time; this : * is the case for entries beyond the length of rte->eref->colnames. : */ : noldcolumns = list_length(rte->eref->colnames); 0.00 : 72ad8a: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 72ad8e: 48 8b 42 78 mov 0x78(%rdx),%rax 0.00 : 72ad92: 48 8b 40 10 mov 0x10(%rax),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 72ad96: c7 45 b4 00 00 00 00 movl $0x0,-0x4c(%rbp) 0.00 : 72ad9d: 48 85 c0 test %rax,%rax 0.00 : 72ada0: 74 06 je 72ada8 0.00 : 72ada2: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 72ada5: 89 45 b4 mov %eax,-0x4c(%rbp) : changed_any = false; : j = 0; : for (i = 0; i < ncolumns; i++) 0.00 : 72ada8: 8b 45 94 mov -0x6c(%rbp),%eax 0.00 : 72adab: 45 31 f6 xor %r14d,%r14d 0.00 : 72adae: c6 45 a0 00 movb $0x0,-0x60(%rbp) 0.00 : 72adb2: 85 c0 test %eax,%eax 0.00 : 72adb4: 0f 8e 8a 00 00 00 jle 72ae44 0.00 : 72adba: c6 45 a0 00 movb $0x0,-0x60(%rbp) 0.00 : 72adbe: 45 31 e4 xor %r12d,%r12d 0.00 : 72adc1: 45 31 f6 xor %r14d,%r14d 0.00 : 72adc4: 31 db xor %ebx,%ebx 0.00 : 72adc6: eb 16 jmp 72adde 0.00 : 72adc8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 72adcf: 00 0.00 : 72add0: 41 83 c4 01 add $0x1,%r12d 0.00 : 72add4: 48 83 c3 08 add $0x8,%rbx 0.00 : 72add8: 44 39 65 94 cmp %r12d,-0x6c(%rbp) 0.00 : 72addc: 7e 66 jle 72ae44 : { : char *real_colname = real_colnames[i]; 0.00 : 72adde: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 72ade2: 4c 8b 2c 18 mov (%rax,%rbx,1),%r13 : char *colname = colinfo->colnames[i]; 0.00 : 72ade6: 49 8b 47 08 mov 0x8(%r15),%rax : : /* Skip dropped columns */ : if (real_colname == NULL) 0.00 : 72adea: 4d 85 ed test %r13,%r13 : changed_any = false; : j = 0; : for (i = 0; i < ncolumns; i++) : { : char *real_colname = real_colnames[i]; : char *colname = colinfo->colnames[i]; 0.00 : 72aded: 48 8b 3c 18 mov (%rax,%rbx,1),%rdi : : /* Skip dropped columns */ : if (real_colname == NULL) 0.00 : 72adf1: 74 dd je 72add0 : Assert(colname == NULL); /* colnames[i] is already NULL */ : continue; : } : : /* If alias already assigned, that's what to use */ : if (colname == NULL) 0.00 : 72adf3: 48 85 ff test %rdi,%rdi 0.00 : 72adf6: 0f 84 94 00 00 00 je 72ae90 : : colinfo->colnames[i] = colname; : } : : /* Put names of non-dropped columns in new_colnames[] too */ : colinfo->new_colnames[j] = colname; 0.00 : 72adfc: 49 8b 57 18 mov 0x18(%r15),%rdx 0.00 : 72ae00: 49 63 c6 movslq %r14d,%rax 0.00 : 72ae03: 48 89 3c c2 mov %rdi,(%rdx,%rax,8) : /* And mark them as new or not */ : colinfo->is_new_col[j] = (i >= noldcolumns); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/ruleutils.c:3165 100.00 : 72ae07: 44 3b 65 b4 cmp -0x4c(%rbp),%r12d 0.00 : 72ae0b: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 72ae0f: 0f 9d 04 02 setge (%rdx,%rax,1) : j++; 0.00 : 72ae13: 41 83 c6 01 add $0x1,%r14d : : /* Remember if any assigned aliases differ from "real" name */ : if (!changed_any && strcmp(colname, real_colname) != 0) 0.00 : 72ae17: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) 0.00 : 72ae1b: 75 b3 jne 72add0 0.00 : 72ae1d: 4c 89 ee mov %r13,%rsi 0.00 : 72ae20: e8 0b ef d3 ff callq 469d30 0.00 : 72ae25: 85 c0 test %eax,%eax 0.00 : 72ae27: 0f b6 45 a0 movzbl -0x60(%rbp),%eax 0.00 : 72ae2b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72ae30: 0f 44 d0 cmove %eax,%edx : * is the case for entries beyond the length of rte->eref->colnames. : */ : noldcolumns = list_length(rte->eref->colnames); : changed_any = false; : j = 0; : for (i = 0; i < ncolumns; i++) 0.00 : 72ae33: 41 83 c4 01 add $0x1,%r12d 0.00 : 72ae37: 48 83 c3 08 add $0x8,%rbx 0.00 : 72ae3b: 44 39 65 94 cmp %r12d,-0x6c(%rbp) : /* And mark them as new or not */ : colinfo->is_new_col[j] = (i >= noldcolumns); : j++; : : /* Remember if any assigned aliases differ from "real" name */ : if (!changed_any && strcmp(colname, real_colname) != 0) 0.00 : 72ae3f: 88 55 a0 mov %dl,-0x60(%rbp) : * is the case for entries beyond the length of rte->eref->colnames. : */ : noldcolumns = list_length(rte->eref->colnames); : changed_any = false; : j = 0; : for (i = 0; i < ncolumns; i++) 0.00 : 72ae42: 7f 9a jg 72adde : * Set correct length for new_colnames[] array. (Note: if columns have : * been added, colinfo->num_cols includes them, which is not really quite : * right but is harmless, since any new columns must be at the end where : * they won't affect varattnos of pre-existing columns.) : */ : colinfo->num_new_cols = j; 0.00 : 72ae44: 45 89 77 10 mov %r14d,0x10(%r15) : * possible instability of the default column names (eg, from altering : * parameter names). For other RTE types, print if we changed anything OR : * if there were user-written column aliases (since the latter would be : * part of the underlying "reality"). : */ : if (rte->rtekind == RTE_RELATION) 0.00 : 72ae48: 48 8b 5d 80 mov -0x80(%rbp),%rbx 0.00 : 72ae4c: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 72ae4f: 85 c0 test %eax,%eax 0.00 : 72ae51: 74 7d je 72aed0 : colinfo->printaliases = changed_any; : else if (rte->rtekind == RTE_FUNCTION) 0.00 : 72ae53: 83 f8 03 cmp $0x3,%eax 0.00 : 72ae56: 74 1c je 72ae74 : colinfo->printaliases = true; : else if (rte->alias && rte->alias->colnames != NIL) 0.00 : 72ae58: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 72ae5c: 48 8b 42 70 mov 0x70(%rdx),%rax 0.00 : 72ae60: 48 85 c0 test %rax,%rax 0.00 : 72ae63: 0f 84 37 01 00 00 je 72afa0 0.00 : 72ae69: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 0.00 : 72ae6e: 0f 84 2c 01 00 00 je 72afa0 : colinfo->printaliases = true; 0.00 : 72ae74: 41 c6 47 28 01 movb $0x1,0x28(%r15) : else : colinfo->printaliases = changed_any; : } 0.00 : 72ae79: 48 83 c4 58 add $0x58,%rsp 0.00 : 72ae7d: 5b pop %rbx 0.00 : 72ae7e: 41 5c pop %r12 0.00 : 72ae80: 41 5d pop %r13 0.00 : 72ae82: 41 5e pop %r14 0.00 : 72ae84: 41 5f pop %r15 0.00 : 72ae86: c9 leaveq 0.00 : 72ae87: c3 retq 0.00 : 72ae88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 72ae8f: 00 : : /* If alias already assigned, that's what to use */ : if (colname == NULL) : { : /* If user wrote an alias, prefer that over real column name */ : if (rte->alias && i < list_length(rte->alias->colnames)) 0.00 : 72ae90: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 72ae94: 48 8b 42 70 mov 0x70(%rdx),%rax 0.00 : 72ae98: 48 85 c0 test %rax,%rax 0.00 : 72ae9b: 74 0f je 72aeac 0.00 : 72ae9d: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 72aea1: 48 85 ff test %rdi,%rdi 0.00 : 72aea4: 74 06 je 72aeac 0.00 : 72aea6: 44 3b 67 04 cmp 0x4(%rdi),%r12d 0.00 : 72aeaa: 7c 44 jl 72aef0 0.00 : 72aeac: 4c 89 ef mov %r13,%rdi : colname = strVal(list_nth(rte->alias->colnames, i)); : else : colname = real_colname; : : /* Unique-ify and insert into colinfo */ : colname = make_colname_unique(colname, dpns, colinfo); 0.00 : 72aeaf: 48 8b 75 88 mov -0x78(%rbp),%rsi 0.00 : 72aeb3: 4c 89 fa mov %r15,%rdx 0.00 : 72aeb6: e8 05 fb ff ff callq 72a9c0 0.00 : 72aebb: 48 89 c7 mov %rax,%rdi : : colinfo->colnames[i] = colname; 0.00 : 72aebe: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 72aec2: 48 89 3c 18 mov %rdi,(%rax,%rbx,1) 0.00 : 72aec6: e9 31 ff ff ff jmpq 72adfc 0.00 : 72aecb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * parameter names). For other RTE types, print if we changed anything OR : * if there were user-written column aliases (since the latter would be : * part of the underlying "reality"). : */ : if (rte->rtekind == RTE_RELATION) : colinfo->printaliases = changed_any; 0.00 : 72aed0: 0f b6 45 a0 movzbl -0x60(%rbp),%eax 0.00 : 72aed4: 41 88 47 28 mov %al,0x28(%r15) : colinfo->printaliases = true; : else if (rte->alias && rte->alias->colnames != NIL) : colinfo->printaliases = true; : else : colinfo->printaliases = changed_any; : } 0.00 : 72aed8: 48 83 c4 58 add $0x58,%rsp 0.00 : 72aedc: 5b pop %rbx 0.00 : 72aedd: 41 5c pop %r12 0.00 : 72aedf: 41 5d pop %r13 0.00 : 72aee1: 41 5e pop %r14 0.00 : 72aee3: 41 5f pop %r15 0.00 : 72aee5: c9 leaveq 0.00 : 72aee6: c3 retq 0.00 : 72aee7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72aeee: 00 00 : /* If alias already assigned, that's what to use */ : if (colname == NULL) : { : /* If user wrote an alias, prefer that over real column name */ : if (rte->alias && i < list_length(rte->alias->colnames)) : colname = strVal(list_nth(rte->alias->colnames, i)); 0.00 : 72aef0: 44 89 e6 mov %r12d,%esi 0.00 : 72aef3: e8 68 65 eb ff callq 5e1460 0.00 : 72aef8: 48 8b 78 08 mov 0x8(%rax),%rdi : : /* If alias already assigned, that's what to use */ : if (colname == NULL) : { : /* If user wrote an alias, prefer that over real column name */ : if (rte->alias && i < list_length(rte->alias->colnames)) 0.00 : 72aefc: eb b1 jmp 72aeaf 0.00 : 72aefe: 66 90 xchg %ax,%ax : { : /* Relation --- look to the system catalogs for up-to-date info */ : Relation rel; : TupleDesc tupdesc; : : rel = relation_open(rte->relid, AccessShareLock); 0.00 : 72af00: 8b 7e 08 mov 0x8(%rsi),%edi 0.00 : 72af03: be 01 00 00 00 mov $0x1,%esi 0.00 : 72af08: e8 c3 2b d7 ff callq 49dad0 0.00 : 72af0d: 48 89 45 b8 mov %rax,-0x48(%rbp) : tupdesc = RelationGetDescr(rel); 0.00 : 72af11: 4c 8b 70 38 mov 0x38(%rax),%r14 : : ncolumns = tupdesc->natts; 0.00 : 72af15: 41 8b 06 mov (%r14),%eax : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); 0.00 : 72af18: 48 63 d0 movslq %eax,%rdx : TupleDesc tupdesc; : : rel = relation_open(rte->relid, AccessShareLock); : tupdesc = RelationGetDescr(rel); : : ncolumns = tupdesc->natts; 0.00 : 72af1b: 89 45 94 mov %eax,-0x6c(%rbp) : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); 0.00 : 72af1e: 48 89 55 c0 mov %rdx,-0x40(%rbp) 0.00 : 72af22: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 72af26: 48 89 55 c8 mov %rdx,-0x38(%rbp) 0.00 : 72af2a: 48 89 d7 mov %rdx,%rdi 0.00 : 72af2d: e8 1e de 06 00 callq 798d50 : : for (i = 0; i < ncolumns; i++) 0.00 : 72af32: 8b 55 94 mov -0x6c(%rbp),%edx : : rel = relation_open(rte->relid, AccessShareLock); : tupdesc = RelationGetDescr(rel); : : ncolumns = tupdesc->natts; : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); 0.00 : 72af35: 49 89 c4 mov %rax,%r12 0.00 : 72af38: 48 89 45 98 mov %rax,-0x68(%rbp) : : for (i = 0; i < ncolumns; i++) 0.00 : 72af3c: 85 d2 test %edx,%edx 0.00 : 72af3e: 7e 4d jle 72af8d 0.00 : 72af40: 8b 45 94 mov -0x6c(%rbp),%eax 0.00 : 72af43: 31 db xor %ebx,%ebx 0.00 : 72af45: 83 e8 01 sub $0x1,%eax 0.00 : 72af48: 4c 8d 2c c5 08 00 00 lea 0x8(,%rax,8),%r13 0.00 : 72af4f: 00 0.00 : 72af50: eb 17 jmp 72af69 0.00 : 72af52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (tupdesc->attrs[i]->attisdropped) : real_colnames[i] = NULL; 0.00 : 72af58: 49 c7 04 1c 00 00 00 movq $0x0,(%r12,%rbx,1) 0.00 : 72af5f: 00 : else : real_colnames[i] = pstrdup(NameStr(tupdesc->attrs[i]->attname)); 0.00 : 72af60: 48 83 c3 08 add $0x8,%rbx : tupdesc = RelationGetDescr(rel); : : ncolumns = tupdesc->natts; : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); : : for (i = 0; i < ncolumns; i++) 0.00 : 72af64: 4c 39 eb cmp %r13,%rbx 0.00 : 72af67: 74 24 je 72af8d : { : if (tupdesc->attrs[i]->attisdropped) 0.00 : 72af69: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 72af6d: 48 8b 04 18 mov (%rax,%rbx,1),%rax 0.00 : 72af71: 80 78 61 00 cmpb $0x0,0x61(%rax) 0.00 : 72af75: 75 e1 jne 72af58 : real_colnames[i] = NULL; : else : real_colnames[i] = pstrdup(NameStr(tupdesc->attrs[i]->attname)); 0.00 : 72af77: 48 8d 78 04 lea 0x4(%rax),%rdi 0.00 : 72af7b: e8 d0 df 06 00 callq 798f50 0.00 : 72af80: 49 89 04 1c mov %rax,(%r12,%rbx,1) 0.00 : 72af84: 48 83 c3 08 add $0x8,%rbx : tupdesc = RelationGetDescr(rel); : : ncolumns = tupdesc->natts; : real_colnames = (char **) palloc(ncolumns * sizeof(char *)); : : for (i = 0; i < ncolumns; i++) 0.00 : 72af88: 4c 39 eb cmp %r13,%rbx 0.00 : 72af8b: 75 dc jne 72af69 : if (tupdesc->attrs[i]->attisdropped) : real_colnames[i] = NULL; : else : real_colnames[i] = pstrdup(NameStr(tupdesc->attrs[i]->attname)); : } : relation_close(rel, AccessShareLock); 0.00 : 72af8d: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 72af91: be 01 00 00 00 mov $0x1,%esi 0.00 : 72af96: e8 25 2a d7 ff callq 49d9c0 0.00 : 72af9b: e9 c5 fd ff ff jmpq 72ad65 : else if (rte->rtekind == RTE_FUNCTION) : colinfo->printaliases = true; : else if (rte->alias && rte->alias->colnames != NIL) : colinfo->printaliases = true; : else : colinfo->printaliases = changed_any; 0.00 : 72afa0: 0f b6 5d a0 movzbl -0x60(%rbp),%ebx 0.00 : 72afa4: 41 88 5f 28 mov %bl,0x28(%r15) : } 0.00 : 72afa8: 48 83 c4 58 add $0x58,%rsp 0.00 : 72afac: 5b pop %rbx 0.00 : 72afad: 41 5c pop %r12 0.00 : 72afaf: 41 5d pop %r13 0.00 : 72afb1: 41 5e pop %r14 0.00 : 72afb3: 41 5f pop %r15 0.00 : 72afb5: c9 leaveq 0.00 : 72afb6: c3 retq 0.00 : 72afb7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72afbe: 00 00 0.00 : 72afc0: c7 45 94 00 00 00 00 movl $0x0,-0x6c(%rbp) 0.00 : 72afc7: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 72afce: 00 0.00 : 72afcf: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 72afd6: 00 0.00 : 72afd7: e9 34 fd ff ff jmpq 72ad10 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/ruleutils.c:6840 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000072d8d0 : : * ---------- : */ : static void : get_rule_expr(Node *node, deparse_context *context, : bool showimplicit) : { 0.00 : 72d8d0: 55 push %rbp 0.00 : 72d8d1: 48 89 e5 mov %rsp,%rbp 0.00 : 72d8d4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 72d8d8: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 72d8dc: 41 89 d4 mov %edx,%r12d 0.00 : 72d8df: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 72d8e3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 72d8e7: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 72d8eb: 48 81 ec e0 00 00 00 sub $0xe0,%rsp 0.00 : 72d8f2: 48 89 bd 40 ff ff ff mov %rdi,-0xc0(%rbp) 0.00 : 72d8f9: 48 89 b5 38 ff ff ff mov %rsi,-0xc8(%rbp) : StringInfo buf = context->buf; 0.00 : 72d900: 48 8b 06 mov (%rsi),%rax : : if (node == NULL) 0.00 : 72d903: 48 85 ff test %rdi,%rdi : */ : static void : get_rule_expr(Node *node, deparse_context *context, : bool showimplicit) : { : StringInfo buf = context->buf; 0.00 : 72d906: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : : if (node == NULL) 0.00 : 72d90d: 0f 84 95 01 00 00 je 72daa8 : return; : : /* Guard against excessively long or deeply-nested queries */ : CHECK_FOR_INTERRUPTS(); 0.00 : 72d913: 0f b6 05 76 c7 48 00 movzbl 0x48c776(%rip),%eax # bba090 0.00 : 72d91a: 84 c0 test %al,%al 0.00 : 72d91c: 0f 85 ae 01 00 00 jne 72dad0 : check_stack_depth(); 0.00 : 72d922: e8 b9 e0 f6 ff callq 69b9e0 : * (parenthesized if necessary) to ensure result is reparsed into the same : * expression tree. The only exception is that when the input is a List, : * we emit the component items comma-separated with no surrounding : * decoration; this is convenient for most callers. : */ : switch (nodeTag(node)) 0.00 : 72d927: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72d92e: 8b 02 mov (%rdx),%eax 0.00 : 72d930: 2d 2f 01 00 00 sub $0x12f,%eax 0.00 : 72d935: 3d 61 01 00 00 cmp $0x161,%eax 0.00 : 72d93a: 0f 86 80 01 00 00 jbe 72dac0 : } : } : break; : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); 0.00 : 72d940: ba 18 8a 8c 00 mov $0x8c8a18,%edx 0.00 : 72d945: be b2 1d 00 00 mov $0x1db2,%esi 0.00 : 72d94a: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72d94f: e8 cc da 04 00 callq 77b420 0.00 : 72d954: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72d95b: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 72d960: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72d965: 31 c0 xor %eax,%eax 0.00 : 72d967: 8b 11 mov (%rcx),%edx 0.00 : 72d969: e8 c2 d8 04 00 callq 77b230 0.00 : 72d96e: e8 5d bb d3 ff callq 4694d0 : * If it's a PARAM_EXEC parameter, try to locate the expression from which : * the parameter was computed. Note that failing to find a referent isn't : * an error, since the Param might well be a subplan output rather than an : * input. : */ : expr = find_param_referent(param, context, &dpns, &ancestor_cell); 0.00 : 72d973: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72d97a: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72d981: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 72d985: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 72d989: e8 a2 c7 ff ff callq 72a130 : if (expr) 0.00 : 72d98e: 48 85 c0 test %rax,%rax : * If it's a PARAM_EXEC parameter, try to locate the expression from which : * the parameter was computed. Note that failing to find a referent isn't : * an error, since the Param might well be a subplan output rather than an : * input. : */ : expr = find_param_referent(param, context, &dpns, &ancestor_cell); 0.00 : 72d991: 48 89 c3 mov %rax,%rbx : if (expr) 0.00 : 72d994: 0f 84 62 1c 00 00 je 72f5fc : deparse_namespace save_dpns; : bool save_varprefix; : bool need_paren; : : /* Switch attention to the ancestor plan node */ : push_ancestor_plan(dpns, ancestor_cell, &save_dpns); 0.00 : 72d99a: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 72d99e: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 72d9a2: 48 8d 95 50 ff ff ff lea -0xb0(%rbp),%rdx 0.00 : 72d9a9: e8 f2 cb ff ff callq 72a5a0 : : /* : * Force prefixing of Vars, since they won't belong to the relation : * being scanned in the original plan node. : */ : save_varprefix = context->varprefix; 0.00 : 72d9ae: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 72d9b5: 44 0f b6 61 2c movzbl 0x2c(%rcx),%r12d : context->varprefix = true; 0.00 : 72d9ba: c6 41 2c 01 movb $0x1,0x2c(%rcx) : /* : * A Param's expansion is typically a Var, Aggref, or upper-level : * Param, which wouldn't need extra parentheses. Otherwise, insert : * parens to ensure the expression looks atomic. : */ : need_paren = !(IsA(expr, Var) || 0.00 : 72d9be: 8b 03 mov (%rbx),%eax 0.00 : 72d9c0: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 72d9c5: 0f 84 14 15 00 00 je 72eedf 0.00 : 72d9cb: 3d 32 01 00 00 cmp $0x132,%eax 0.00 : 72d9d0: 0f 84 09 15 00 00 je 72eedf 0.00 : 72d9d6: 3d 31 01 00 00 cmp $0x131,%eax 0.00 : 72d9db: 0f 84 fe 14 00 00 je 72eedf : IsA(expr, Aggref) || : IsA(expr, Param)); : if (need_paren) : appendStringInfoChar(context->buf, '('); 0.00 : 72d9e1: 48 8b 39 mov (%rcx),%rdi 0.00 : 72d9e4: be 28 00 00 00 mov $0x28,%esi 0.00 : 72d9e9: e8 a2 42 ea ff callq 5d1c90 : : get_rule_expr(expr, context, false); 0.00 : 72d9ee: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72d9f5: 48 89 df mov %rbx,%rdi 0.00 : 72d9f8: 31 d2 xor %edx,%edx 0.00 : 72d9fa: e8 d1 fe ff ff callq 72d8d0 : : if (need_paren) : appendStringInfoChar(context->buf, ')'); 0.00 : 72d9ff: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72da06: be 29 00 00 00 mov $0x29,%esi 0.00 : 72da0b: 48 8b 38 mov (%rax),%rdi 0.00 : 72da0e: e8 7d 42 ea ff callq 5d1c90 : : context->varprefix = save_varprefix; 0.00 : 72da13: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 72da1a: 44 88 62 2c mov %r12b,0x2c(%rdx) : : pop_ancestor_plan(dpns, &save_dpns); 0.00 : 72da1e: 48 8b 5d c8 mov -0x38(%rbp),%rbx : */ : static void : pop_ancestor_plan(deparse_namespace *dpns, deparse_namespace *save_dpns) : { : /* Free the ancestor list made in push_ancestor_plan */ : list_free(dpns->ancestors); 0.00 : 72da22: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 72da26: e8 25 47 eb ff callq 5e2150 : : /* Restore fields changed by push_ancestor_plan */ : *dpns = *save_dpns; 0.00 : 72da2b: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 72da32: 48 89 03 mov %rax,(%rbx) 0.00 : 72da35: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 72da3c: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 72da40: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 72da47: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 72da4b: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 72da52: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 72da56: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 72da5d: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 72da61: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 72da68: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 72da6c: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 72da70: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 72da74: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 72da78: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 72da7c: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 72da80: 48 89 43 40 mov %rax,0x40(%rbx) 0.00 : 72da84: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 72da88: 48 89 43 48 mov %rax,0x48(%rbx) 0.00 : 72da8c: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 72da90: 48 89 43 50 mov %rax,0x50(%rbx) 0.00 : 72da94: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 72da98: 48 89 43 58 mov %rax,0x58(%rbx) 0.00 : 72da9c: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 72daa0: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 72daa4: 0f 1f 40 00 nopl 0x0(%rax) : : default: : elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); : break; : } : } 0.00 : 72daa8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 72daac: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 72dab0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 72dab4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 72dab8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 72dabc: c9 leaveq 0.00 : 72dabd: c3 retq 0.00 : 72dabe: 66 90 xchg %ax,%ax : * (parenthesized if necessary) to ensure result is reparsed into the same : * expression tree. The only exception is that when the input is a List, : * we emit the component items comma-separated with no surrounding : * decoration; this is convenient for most callers. : */ : switch (nodeTag(node)) 0.00 : 72dac0: 89 c0 mov %eax,%eax 0.00 : 72dac2: ff 24 c5 00 7a 8c 00 jmpq *0x8c7a00(,%rax,8) 0.00 : 72dac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (node == NULL) : return; : : /* Guard against excessively long or deeply-nested queries */ : CHECK_FOR_INTERRUPTS(); 0.00 : 72dad0: e8 cb e7 f6 ff callq 69c2a0 0.00 : 72dad5: e9 48 fe ff ff jmpq 72d922 : * decoration; this is convenient for most callers. : */ : switch (nodeTag(node)) : { : case T_Var: : (void) get_variable((Var *) node, 0, false, context); 0.00 : 72dada: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 72dae1: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72dae8: 31 d2 xor %edx,%edx 0.00 : 72daea: 31 f6 xor %esi,%esi 0.00 : 72daec: e8 bf 24 00 00 callq 72ffb0 : break; 0.00 : 72daf1: eb b5 jmp 72daa8 : : case T_Const: : get_const_expr((Const *) node, context, 0); 0.00 : 72daf3: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72dafa: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72db01: 31 d2 xor %edx,%edx 0.00 : 72db03: e8 98 da ff ff callq 72b5a0 : break; 0.00 : 72db08: eb 9e jmp 72daa8 : case T_Param: : get_parameter((Param *) node, context); : break; : : case T_Aggref: : get_agg_expr((Aggref *) node, context); 0.00 : 72db0a: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72db11: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72db18: e8 c3 2b 00 00 callq 7306e0 : break; 0.00 : 72db1d: eb 89 jmp 72daa8 : : case T_WindowFunc: : get_windowfunc_expr((WindowFunc *) node, context); 0.00 : 72db1f: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72db26: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72db2d: e8 ae 30 00 00 callq 730be0 : break; 0.00 : 72db32: e9 71 ff ff ff jmpq 72daa8 : * within a composite column. Since we already punted on : * displaying the FieldStore's target information, just punt : * here too, and display only the assignment source : * expression. : */ : if (IsA(aref->refexpr, CaseTestExpr)) 0.00 : 72db37: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72db3e: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.00 : 72db42: 8b 07 mov (%rdi),%eax 0.00 : 72db44: 3d 48 01 00 00 cmp $0x148,%eax 0.00 : 72db49: 0f 84 e6 1a 00 00 je 72f635 : * FieldSelect. (In particular, if it's another ArrayRef, we : * *must* parenthesize to avoid confusion.) : */ : need_parens = !IsA(aref->refexpr, Var) && : !IsA(aref->refexpr, FieldSelect); : if (need_parens) 0.00 : 72db4f: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 72db54: 0f 95 c2 setne %dl 0.00 : 72db57: 3d 3f 01 00 00 cmp $0x13f,%eax 0.00 : 72db5c: 0f 95 c0 setne %al 0.00 : 72db5f: 84 d0 test %dl,%al 0.00 : 72db61: 0f 85 45 18 00 00 jne 72f3ac : appendStringInfoChar(buf, '('); : get_rule_expr((Node *) aref->refexpr, context, showimplicit); 0.00 : 72db67: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72db6e: 45 0f be e4 movsbl %r12b,%r12d 0.00 : 72db72: 44 89 e2 mov %r12d,%edx 0.00 : 72db75: e8 56 fd ff ff callq 72d8d0 : * should always use processIndirection as part of the : * statement-level syntax. We should only see this when : * EXPLAIN tries to print the targetlist of a plan resulting : * from such a statement. : */ : if (aref->refassgnexpr) 0.00 : 72db7a: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72db81: 48 83 7a 30 00 cmpq $0x0,0x30(%rdx) 0.00 : 72db86: 0f 84 d3 1a 00 00 je 72f65f : * Use processIndirection to print this node's subscripts : * as well as any additional field selections or : * subscripting in immediate descendants. It returns the : * RHS expr that is actually being "assigned". : */ : refassgnexpr = processIndirection(node, context, true); 0.00 : 72db8c: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72db93: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72db9a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72db9f: e8 8c 33 00 00 callq 730f30 : appendStringInfoString(buf, " := "); 0.00 : 72dba4: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72dbab: be da 3c 87 00 mov $0x873cda,%esi : * Use processIndirection to print this node's subscripts : * as well as any additional field selections or : * subscripting in immediate descendants. It returns the : * RHS expr that is actually being "assigned". : */ : refassgnexpr = processIndirection(node, context, true); 0.00 : 72dbb0: 48 89 c3 mov %rax,%rbx : appendStringInfoString(buf, " := "); 0.00 : 72dbb3: e8 98 41 ea ff callq 5d1d50 : get_rule_expr(refassgnexpr, context, showimplicit); 0.00 : 72dbb8: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72dbbf: 44 89 e2 mov %r12d,%edx 0.00 : 72dbc2: 48 89 df mov %rbx,%rdi 0.00 : 72dbc5: e8 06 fd ff ff callq 72d8d0 0.00 : 72dbca: e9 d9 fe ff ff jmpq 72daa8 : } : } : break; : : case T_FuncExpr: : get_func_expr((FuncExpr *) node, context, showimplicit); 0.00 : 72dbcf: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72dbd6: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72dbdd: 41 0f be d4 movsbl %r12b,%edx 0.00 : 72dbe1: e8 7a 20 00 00 callq 72fc60 : break; 0.00 : 72dbe6: e9 bd fe ff ff jmpq 72daa8 : * get_oper_expr - Parse back an OpExpr node : */ : static void : get_oper_expr(OpExpr *expr, deparse_context *context) : { : StringInfo buf = context->buf; 0.00 : 72dbeb: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx : Oid opno = expr->opno; 0.00 : 72dbf2: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx : List *args = expr->args; : : if (!PRETTY_PAREN(context)) 0.00 : 72dbf9: f6 42 20 01 testb $0x1,0x20(%rdx) : * get_oper_expr - Parse back an OpExpr node : */ : static void : get_oper_expr(OpExpr *expr, deparse_context *context) : { : StringInfo buf = context->buf; 0.00 : 72dbfd: 4c 8b 3a mov (%rdx),%r15 : Oid opno = expr->opno; 0.00 : 72dc00: 44 8b 71 04 mov 0x4(%rcx),%r14d : List *args = expr->args; 0.00 : 72dc04: 48 8b 59 20 mov 0x20(%rcx),%rbx : : if (!PRETTY_PAREN(context)) 0.00 : 72dc08: 0f 84 5b 15 00 00 je 72f169 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 72dc0e: 31 c0 xor %eax,%eax 0.00 : 72dc10: 48 85 db test %rbx,%rbx 0.00 : 72dc13: 74 0e je 72dc23 : appendStringInfoChar(buf, '('); : if (list_length(args) == 2) 0.00 : 72dc15: 83 7b 04 02 cmpl $0x2,0x4(%rbx) 0.00 : 72dc19: 0f 84 e0 16 00 00 je 72f2ff : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 72dc1f: 48 8b 43 08 mov 0x8(%rbx),%rax : /* unary operator --- but which side? */ : Node *arg = (Node *) linitial(args); : HeapTuple tp; : Form_pg_operator optup; : : tp = SearchSysCache1(OPEROID, ObjectIdGetDatum(opno)); 0.00 : 72dc23: 45 31 c0 xor %r8d,%r8d 0.00 : 72dc26: 31 c9 xor %ecx,%ecx 0.00 : 72dc28: 31 d2 xor %edx,%edx 0.00 : 72dc2a: 44 89 f6 mov %r14d,%esi 0.00 : 72dc2d: bf 26 00 00 00 mov $0x26,%edi : get_rule_expr_paren(arg2, context, true, (Node *) expr); : } : else : { : /* unary operator --- but which side? */ : Node *arg = (Node *) linitial(args); 0.00 : 72dc32: 4c 8b 28 mov (%rax),%r13 : HeapTuple tp; : Form_pg_operator optup; : : tp = SearchSysCache1(OPEROID, ObjectIdGetDatum(opno)); 0.00 : 72dc35: e8 86 40 04 00 callq 771cc0 : if (!HeapTupleIsValid(tp)) 0.00 : 72dc3a: 48 85 c0 test %rax,%rax : /* unary operator --- but which side? */ : Node *arg = (Node *) linitial(args); : HeapTuple tp; : Form_pg_operator optup; : : tp = SearchSysCache1(OPEROID, ObjectIdGetDatum(opno)); 0.00 : 72dc3d: 49 89 c4 mov %rax,%r12 : if (!HeapTupleIsValid(tp)) 0.00 : 72dc40: 0f 84 e5 1b 00 00 je 72f82b : elog(ERROR, "cache lookup failed for operator %u", opno); : optup = (Form_pg_operator) GETSTRUCT(tp); 0.00 : 72dc46: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 72dc4a: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 72dc4e: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : switch (optup->oprkind) 0.00 : 72dc52: 0f b6 43 48 movzbl 0x48(%rbx),%eax 0.00 : 72dc56: 3c 6c cmp $0x6c,%al 0.00 : 72dc58: 0f 84 b5 18 00 00 je 72f513 0.00 : 72dc5e: 3c 72 cmp $0x72,%al 0.00 : 72dc60: 0f 84 5f 18 00 00 je 72f4c5 : generate_operator_name(opno, : exprType(arg), : InvalidOid)); : break; : default: : elog(ERROR, "bogus oprkind: %d", optup->oprkind); 0.00 : 72dc66: ba a1 8a 8c 00 mov $0x8c8aa1,%edx 0.00 : 72dc6b: be ed 1d 00 00 mov $0x1ded,%esi 0.00 : 72dc70: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72dc75: e8 a6 d7 04 00 callq 77b420 0.00 : 72dc7a: 0f be 53 48 movsbl 0x48(%rbx),%edx 0.00 : 72dc7e: be 6c 6c 8c 00 mov $0x8c6c6c,%esi 0.00 : 72dc83: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72dc88: 31 c0 xor %eax,%eax 0.00 : 72dc8a: e8 a1 d5 04 00 callq 77b230 0.00 : 72dc8f: e8 3c b8 d3 ff callq 4694d0 : break; : : case T_DistinctExpr: : { : DistinctExpr *expr = (DistinctExpr *) node; : List *args = expr->args; 0.00 : 72dc94: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72dc9b: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 72dc9f: 48 85 c0 test %rax,%rax 0.00 : 72dca2: 0f 84 ad 19 00 00 je 72f655 0.00 : 72dca8: 48 8b 40 08 mov 0x8(%rax),%rax : Node *arg1 = (Node *) linitial(args); 0.00 : 72dcac: 48 8b 18 mov (%rax),%rbx : Node *arg2 = (Node *) lsecond(args); : : if (!PRETTY_PAREN(context)) 0.00 : 72dcaf: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx : case T_DistinctExpr: : { : DistinctExpr *expr = (DistinctExpr *) node; : List *args = expr->args; : Node *arg1 = (Node *) linitial(args); : Node *arg2 = (Node *) lsecond(args); 0.00 : 72dcb6: 48 8b 40 08 mov 0x8(%rax),%rax : : if (!PRETTY_PAREN(context)) 0.00 : 72dcba: f6 41 20 01 testb $0x1,0x20(%rcx) : case T_DistinctExpr: : { : DistinctExpr *expr = (DistinctExpr *) node; : List *args = expr->args; : Node *arg1 = (Node *) linitial(args); : Node *arg2 = (Node *) lsecond(args); 0.00 : 72dcbe: 4c 8b 20 mov (%rax),%r12 : : if (!PRETTY_PAREN(context)) 0.00 : 72dcc1: 0f 84 47 15 00 00 je 72f20e : appendStringInfoChar(buf, '('); : get_rule_expr_paren(arg1, context, true, node); 0.00 : 72dcc7: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72dcce: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72dcd5: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72dcda: 48 89 df mov %rbx,%rdi 0.00 : 72dcdd: e8 ae 1b 00 00 callq 72f890 : appendStringInfoString(buf, " IS DISTINCT FROM "); 0.00 : 72dce2: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72dce9: be 7e 6c 8c 00 mov $0x8c6c7e,%esi 0.00 : 72dcee: e8 5d 40 ea ff callq 5d1d50 : get_rule_expr_paren(arg2, context, true, node); 0.00 : 72dcf3: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72dcfa: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72dd01: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72dd06: 4c 89 e7 mov %r12,%rdi 0.00 : 72dd09: e8 82 1b 00 00 callq 72f890 : if (!PRETTY_PAREN(context)) 0.00 : 72dd0e: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72dd15: f6 40 20 01 testb $0x1,0x20(%rax) 0.00 : 72dd19: 0f 85 89 fd ff ff jne 72daa8 0.00 : 72dd1f: 90 nop : { : CoalesceExpr *coalesceexpr = (CoalesceExpr *) node; : : appendStringInfoString(buf, "COALESCE("); : get_rule_expr((Node *) coalesceexpr->args, context, true); : appendStringInfoChar(buf, ')'); 0.00 : 72dd20: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72dd27: be 29 00 00 00 mov $0x29,%esi 0.00 : 72dd2c: e8 5f 3f ea ff callq 5d1c90 : } : break; 0.00 : 72dd31: e9 72 fd ff ff jmpq 72daa8 : case T_CollateExpr: : { : CollateExpr *collate = (CollateExpr *) node; : Node *arg = (Node *) collate->arg; : : if (!PRETTY_PAREN(context)) 0.00 : 72dd36: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx : break; : : case T_CollateExpr: : { : CollateExpr *collate = (CollateExpr *) node; : Node *arg = (Node *) collate->arg; 0.00 : 72dd3d: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax : : if (!PRETTY_PAREN(context)) 0.00 : 72dd44: f6 42 20 01 testb $0x1,0x20(%rdx) : break; : : case T_CollateExpr: : { : CollateExpr *collate = (CollateExpr *) node; : Node *arg = (Node *) collate->arg; 0.00 : 72dd48: 48 8b 58 08 mov 0x8(%rax),%rbx : : if (!PRETTY_PAREN(context)) 0.00 : 72dd4c: 0f 84 29 14 00 00 je 72f17b : appendStringInfoChar(buf, '('); : get_rule_expr_paren(arg, context, showimplicit, node); 0.00 : 72dd52: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72dd59: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72dd60: 41 0f be d4 movsbl %r12b,%edx 0.00 : 72dd64: 48 89 df mov %rbx,%rdi 0.00 : 72dd67: e8 24 1b 00 00 callq 72f890 : appendStringInfo(buf, " COLLATE %s", 0.00 : 72dd6c: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72dd73: 8b 79 10 mov 0x10(%rcx),%edi 0.00 : 72dd76: e8 25 c7 ff ff callq 72a4a0 0.00 : 72dd7b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72dd82: 48 89 c2 mov %rax,%rdx 0.00 : 72dd85: be 93 61 8c 00 mov $0x8c6193,%esi 0.00 : 72dd8a: 31 c0 xor %eax,%eax 0.00 : 72dd8c: e8 7f 40 ea ff callq 5d1e10 : generate_collation_name(collate->collOid)); : if (!PRETTY_PAREN(context)) 0.00 : 72dd91: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72dd98: f6 40 20 01 testb $0x1,0x20(%rax) 0.00 : 72dd9c: 0f 85 06 fd ff ff jne 72daa8 0.00 : 72dda2: e9 79 ff ff ff jmpq 72dd20 : case T_CaseExpr: : { : CaseExpr *caseexpr = (CaseExpr *) node; : ListCell *temp; : : appendContextKeyword(context, "CASE", 0.00 : 72dda7: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 72ddae: 31 d2 xor %edx,%edx 0.00 : 72ddb0: 45 31 c0 xor %r8d,%r8d 0.00 : 72ddb3: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 72ddb8: be 30 32 87 00 mov $0x873230,%esi 0.00 : 72ddbd: e8 5e f7 ff ff callq 72d520 : 0, PRETTYINDENT_VAR, 0); : if (caseexpr->arg) 0.00 : 72ddc2: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72ddc9: 48 83 7a 10 00 cmpq $0x0,0x10(%rdx) 0.00 : 72ddce: 74 2d je 72ddfd : { : appendStringInfoChar(buf, ' '); 0.00 : 72ddd0: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ddd7: be 20 00 00 00 mov $0x20,%esi 0.00 : 72dddc: e8 af 3e ea ff callq 5d1c90 : get_rule_expr((Node *) caseexpr->arg, context, true); 0.00 : 72dde1: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72dde8: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72ddef: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72ddf4: 48 8b 79 10 mov 0x10(%rcx),%rdi 0.00 : 72ddf8: e8 d3 fa ff ff callq 72d8d0 : } : foreach(temp, caseexpr->args) 0.00 : 72ddfd: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72de04: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 72de08: 48 85 c0 test %rax,%rax 0.00 : 72de0b: 0f 84 0f 10 00 00 je 72ee20 0.00 : 72de11: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 72de15: 4d 85 e4 test %r12,%r12 0.00 : 72de18: 75 63 jne 72de7d 0.00 : 72de1a: e9 01 10 00 00 jmpq 72ee20 0.00 : 72de1f: 90 nop : } : } : : if (!PRETTY_INDENT(context)) : appendStringInfoChar(buf, ' '); : appendContextKeyword(context, "WHEN ", 0.00 : 72de20: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 72de27: 45 31 c0 xor %r8d,%r8d 0.00 : 72de2a: 31 c9 xor %ecx,%ecx 0.00 : 72de2c: 31 d2 xor %edx,%edx 0.00 : 72de2e: be 11 6d 8c 00 mov $0x8c6d11,%esi 0.00 : 72de33: e8 e8 f6 ff ff callq 72d520 : 0, 0, 0); : get_rule_expr(w, context, false); 0.00 : 72de38: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72de3f: 31 d2 xor %edx,%edx 0.00 : 72de41: 48 89 df mov %rbx,%rdi 0.00 : 72de44: e8 87 fa ff ff callq 72d8d0 : appendStringInfoString(buf, " THEN "); 0.00 : 72de49: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72de50: be 17 6d 8c 00 mov $0x8c6d17,%esi 0.00 : 72de55: e8 f6 3e ea ff callq 5d1d50 : get_rule_expr((Node *) when->result, context, true); 0.00 : 72de5a: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 72de5e: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72de65: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72de6a: e8 61 fa ff ff callq 72d8d0 : if (caseexpr->arg) : { : appendStringInfoChar(buf, ' '); : get_rule_expr((Node *) caseexpr->arg, context, true); : } : foreach(temp, caseexpr->args) 0.00 : 72de6f: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 72de74: 4d 85 e4 test %r12,%r12 0.00 : 72de77: 0f 84 a3 0f 00 00 je 72ee20 : { : CaseWhen *when = (CaseWhen *) lfirst(temp); : Node *w = (Node *) when->expr; : : if (caseexpr->arg) 0.00 : 72de7d: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx : appendStringInfoChar(buf, ' '); : get_rule_expr((Node *) caseexpr->arg, context, true); : } : foreach(temp, caseexpr->args) : { : CaseWhen *when = (CaseWhen *) lfirst(temp); 0.00 : 72de84: 4d 8b 34 24 mov (%r12),%r14 : Node *w = (Node *) when->expr; : : if (caseexpr->arg) 0.00 : 72de88: 48 83 79 10 00 cmpq $0x0,0x10(%rcx) : get_rule_expr((Node *) caseexpr->arg, context, true); : } : foreach(temp, caseexpr->args) : { : CaseWhen *when = (CaseWhen *) lfirst(temp); : Node *w = (Node *) when->expr; 0.00 : 72de8d: 49 8b 5e 08 mov 0x8(%r14),%rbx : : if (caseexpr->arg) 0.00 : 72de91: 74 0c je 72de9f : * WHEN clause could be almost anything (since the : * equality operator could have been expanded into an : * inline function). If we don't recognize the form : * of the WHEN clause, just punt and display it as-is. : */ : if (IsA(w, OpExpr)) 0.00 : 72de93: 81 3b 37 01 00 00 cmpl $0x137,(%rbx) 0.00 : 72de99: 0f 84 21 0f 00 00 je 72edc0 : CaseTestExpr)) : w = (Node *) lsecond(args); : } : } : : if (!PRETTY_INDENT(context)) 0.00 : 72de9f: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72dea6: f6 40 20 02 testb $0x2,0x20(%rax) 0.00 : 72deaa: 0f 85 70 ff ff ff jne 72de20 : appendStringInfoChar(buf, ' '); 0.00 : 72deb0: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72deb7: be 20 00 00 00 mov $0x20,%esi 0.00 : 72debc: e8 cf 3d ea ff callq 5d1c90 0.00 : 72dec1: e9 5a ff ff ff jmpq 72de20 : * We cannot see an already-planned subplan in rule deparsing, : * only while EXPLAINing a query plan. We don't try to : * reconstruct the original SQL, just reference the subplan : * that appears elsewhere in EXPLAIN's result. : */ : if (subplan->useHashTable) 0.00 : 72dec6: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72decd: 80 78 34 00 cmpb $0x0,0x34(%rax) 0.00 : 72ded1: 0f 84 08 11 00 00 je 72efdf : appendStringInfo(buf, "(hashed %s)", subplan->plan_name); 0.00 : 72ded7: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 72dedb: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72dee2: be e6 6c 8c 00 mov $0x8c6ce6,%esi 0.00 : 72dee7: 31 c0 xor %eax,%eax 0.00 : 72dee9: e8 22 3f ea ff callq 5d1e10 0.00 : 72deee: e9 b5 fb ff ff jmpq 72daa8 : { : AlternativeSubPlan *asplan = (AlternativeSubPlan *) node; : ListCell *lc; : : /* As above, this can only happen during EXPLAIN */ : appendStringInfoString(buf, "(alternatives: "); 0.00 : 72def3: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72defa: be f2 6c 8c 00 mov $0x8c6cf2,%esi 0.00 : 72deff: e8 4c 3e ea ff callq 5d1d50 : foreach(lc, asplan->subplans) 0.00 : 72df04: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72df0b: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72df0f: 48 85 c0 test %rax,%rax 0.00 : 72df12: 0f 84 08 fe ff ff je 72dd20 0.00 : 72df18: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 72df1c: 48 85 db test %rbx,%rbx 0.00 : 72df1f: 0f 84 fb fd ff ff je 72dd20 : { : SubPlan *splan = (SubPlan *) lfirst(lc); 0.00 : 72df25: 48 8b 03 mov (%rbx),%rax : : Assert(IsA(splan, SubPlan)); : if (splan->useHashTable) 0.00 : 72df28: 80 78 34 00 cmpb $0x0,0x34(%rax) 0.00 : 72df2c: 74 49 je 72df77 : appendStringInfo(buf, "hashed %s", splan->plan_name); 0.00 : 72df2e: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 72df32: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72df39: be 02 6d 8c 00 mov $0x8c6d02,%esi 0.00 : 72df3e: 31 c0 xor %eax,%eax 0.00 : 72df40: e8 cb 3e ea ff callq 5d1e10 : else : appendStringInfoString(buf, splan->plan_name); : if (lnext(lc)) 0.00 : 72df45: 48 83 7b 08 00 cmpq $0x0,0x8(%rbx) 0.00 : 72df4a: 0f 84 d0 fd ff ff je 72dd20 : appendStringInfoString(buf, " or "); 0.00 : 72df50: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72df57: be 0c 6d 8c 00 mov $0x8c6d0c,%esi 0.00 : 72df5c: e8 ef 3d ea ff callq 5d1d50 : AlternativeSubPlan *asplan = (AlternativeSubPlan *) node; : ListCell *lc; : : /* As above, this can only happen during EXPLAIN */ : appendStringInfoString(buf, "(alternatives: "); : foreach(lc, asplan->subplans) 0.00 : 72df61: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 72df65: 48 85 db test %rbx,%rbx 0.00 : 72df68: 0f 84 b2 fd ff ff je 72dd20 : { : SubPlan *splan = (SubPlan *) lfirst(lc); 0.00 : 72df6e: 48 8b 03 mov (%rbx),%rax : : Assert(IsA(splan, SubPlan)); : if (splan->useHashTable) 0.00 : 72df71: 80 78 34 00 cmpb $0x0,0x34(%rax) 0.00 : 72df75: 75 b7 jne 72df2e : appendStringInfo(buf, "hashed %s", splan->plan_name); : else : appendStringInfoString(buf, splan->plan_name); 0.00 : 72df77: 48 8b 70 20 mov 0x20(%rax),%rsi 0.00 : 72df7b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72df82: e8 c9 3d ea ff callq 5d1d50 0.00 : 72df87: eb bc jmp 72df45 : break; : : case T_FieldSelect: : { : FieldSelect *fselect = (FieldSelect *) node; : Node *arg = (Node *) fselect->arg; 0.00 : 72df89: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72df90: 48 8b 59 08 mov 0x8(%rcx),%rbx : int fno = fselect->fieldnum; 0.00 : 72df94: 44 0f b7 61 10 movzwl 0x10(%rcx),%r12d : * Parenthesize the argument unless it's an ArrayRef or : * another FieldSelect. Note in particular that it would be : * WRONG to not parenthesize a Var argument; simplicity is not : * the issue here, having the right number of names is. : */ : need_parens = !IsA(arg, ArrayRef) &&!IsA(arg, FieldSelect); 0.00 : 72df99: 8b 03 mov (%rbx),%eax : if (need_parens) 0.00 : 72df9b: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 72dfa0: 0f 95 c2 setne %dl 0.00 : 72dfa3: 3d 3f 01 00 00 cmp $0x13f,%eax 0.00 : 72dfa8: 0f 95 c0 setne %al 0.00 : 72dfab: 84 d0 test %dl,%al 0.00 : 72dfad: 0f 85 de 11 00 00 jne 72f191 : appendStringInfoChar(buf, '('); : get_rule_expr(arg, context, true); 0.00 : 72dfb3: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72dfba: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72dfbf: 48 89 df mov %rbx,%rdi 0.00 : 72dfc2: e8 09 f9 ff ff callq 72d8d0 : appendStringInfoChar(buf, ')'); : : /* : * Get and print the field name. : */ : fieldname = get_name_for_var_field((Var *) arg, fno, 0.00 : 72dfc7: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 72dfce: 41 0f bf f4 movswl %r12w,%esi 0.00 : 72dfd2: 31 d2 xor %edx,%edx 0.00 : 72dfd4: 48 89 df mov %rbx,%rdi 0.00 : 72dfd7: e8 a4 ec ff ff callq 72cc80 0.00 : 72dfdc: 48 89 c7 mov %rax,%rdi : 0, context); : appendStringInfo(buf, ".%s", quote_identifier(fieldname)); 0.00 : 72dfdf: e8 3c c3 ff ff callq 72a320 0.00 : 72dfe4: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72dfeb: 48 89 c2 mov %rax,%rdx 0.00 : 72dfee: be 8f 61 8c 00 mov $0x8c618f,%esi 0.00 : 72dff3: 31 c0 xor %eax,%eax 0.00 : 72dff5: e8 16 3e ea ff callq 5d1e10 : } : break; 0.00 : 72dffa: e9 a9 fa ff ff jmpq 72daa8 : bool needcomma = false; : ListCell *arg; : ListCell *narg; : Const *con; : : switch (xexpr->op) 0.00 : 72dfff: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e006: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 72e009: 83 f8 06 cmp $0x6,%eax 0.00 : 72e00c: 0f 87 96 09 00 00 ja 72e9a8 0.00 : 72e012: 89 c0 mov %eax,%eax 0.00 : 72e014: ff 24 c5 10 85 8c 00 jmpq *0x8c8510(,%rax,8) : : case T_NullIfExpr: : { : NullIfExpr *nullifexpr = (NullIfExpr *) node; : : appendStringInfoString(buf, "NULLIF("); 0.00 : 72e01b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e022: be 91 6c 8c 00 mov $0x8c6c91,%esi 0.00 : 72e027: e8 24 3d ea ff callq 5d1d50 : get_rule_expr((Node *) nullifexpr->args, context, true); 0.00 : 72e02c: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e033: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e03a: 48 8b 7a 20 mov 0x20(%rdx),%rdi 0.00 : 72e03e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e043: e8 88 f8 ff ff callq 72d8d0 0.00 : 72e048: e9 d3 fc ff ff jmpq 72dd20 : break; : : case T_ScalarArrayOpExpr: : { : ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) node; : List *args = expr->args; 0.00 : 72e04d: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e054: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 72e058: 48 85 c0 test %rax,%rax 0.00 : 72e05b: 0f 84 c8 15 00 00 je 72f629 0.00 : 72e061: 48 8b 40 08 mov 0x8(%rax),%rax : Node *arg1 = (Node *) linitial(args); 0.00 : 72e065: 4c 8b 28 mov (%rax),%r13 : Node *arg2 = (Node *) lsecond(args); 0.00 : 72e068: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 72e06c: 4c 8b 30 mov (%rax),%r14 : : if (!PRETTY_PAREN(context)) 0.00 : 72e06f: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72e076: f6 40 20 01 testb $0x1,0x20(%rax) 0.00 : 72e07a: 0f 84 62 11 00 00 je 72f1e2 : appendStringInfoChar(buf, '('); : get_rule_expr_paren(arg1, context, true, node); 0.00 : 72e080: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e087: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e08e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e093: 4c 89 ef mov %r13,%rdi : appendStringInfo(buf, " %s %s (", 0.00 : 72e096: bb 1d ab 87 00 mov $0x87ab1d,%ebx : Node *arg1 = (Node *) linitial(args); : Node *arg2 = (Node *) lsecond(args); : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); : get_rule_expr_paren(arg1, context, true, node); 0.00 : 72e09b: e8 f0 17 00 00 callq 72f890 : appendStringInfo(buf, " %s %s (", 0.00 : 72e0a0: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e0a7: b8 8e 6c 87 00 mov $0x876c8e,%eax 0.00 : 72e0ac: 4c 89 f7 mov %r14,%rdi 0.00 : 72e0af: 80 7a 0c 00 cmpb $0x0,0xc(%rdx) 0.00 : 72e0b3: 48 0f 45 d8 cmovne %rax,%rbx 0.00 : 72e0b7: e8 14 2c eb ff callq 5e0cd0 0.00 : 72e0bc: 89 c7 mov %eax,%edi 0.00 : 72e0be: e8 dd 40 04 00 callq 7721a0 0.00 : 72e0c3: 4c 89 ef mov %r13,%rdi 0.00 : 72e0c6: 41 89 c4 mov %eax,%r12d 0.00 : 72e0c9: e8 02 2c eb ff callq 5e0cd0 0.00 : 72e0ce: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e0d5: 89 c6 mov %eax,%esi 0.00 : 72e0d7: 44 89 e2 mov %r12d,%edx 0.00 : 72e0da: 8b 79 04 mov 0x4(%rcx),%edi 0.00 : 72e0dd: e8 4e f5 ff ff callq 72d630 0.00 : 72e0e2: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e0e9: 48 89 c2 mov %rax,%rdx 0.00 : 72e0ec: 48 89 d9 mov %rbx,%rcx 0.00 : 72e0ef: 31 c0 xor %eax,%eax 0.00 : 72e0f1: be 99 6c 8c 00 mov $0x8c6c99,%esi 0.00 : 72e0f6: e8 15 3d ea ff callq 5d1e10 : generate_operator_name(expr->opno, : exprType(arg1), : get_base_element_type(exprType(arg2))), : expr->useOr ? "ANY" : "ALL"); : get_rule_expr_paren(arg2, context, true, node); 0.00 : 72e0fb: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e102: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e109: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e10e: 4c 89 f7 mov %r14,%rdi 0.00 : 72e111: e8 7a 17 00 00 callq 72f890 : appendStringInfoChar(buf, ')'); 0.00 : 72e116: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e11d: be 29 00 00 00 mov $0x29,%esi 0.00 : 72e122: e8 69 3b ea ff callq 5d1c90 : if (!PRETTY_PAREN(context)) 0.00 : 72e127: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72e12e: f6 40 20 01 testb $0x1,0x20(%rax) 0.00 : 72e132: 0f 85 70 f9 ff ff jne 72daa8 0.00 : 72e138: e9 e3 fb ff ff jmpq 72dd20 : break; : : case T_BoolExpr: : { : BoolExpr *expr = (BoolExpr *) node; : Node *first_arg = linitial(expr->args); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/ruleutils.c:6840 100.00 : 72e13d: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e144: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72e148: 48 85 c0 test %rax,%rax 0.00 : 72e14b: 0f 84 7f 14 00 00 je 72f5d0 0.00 : 72e151: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 72e155: 4c 8b 20 mov (%rax),%r12 : ListCell *arg = lnext(list_head(expr->args)); : : switch (expr->boolop) 0.00 : 72e158: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx : : case T_BoolExpr: : { : BoolExpr *expr = (BoolExpr *) node; : Node *first_arg = linitial(expr->args); : ListCell *arg = lnext(list_head(expr->args)); 0.00 : 72e15f: 48 8b 58 08 mov 0x8(%rax),%rbx : : switch (expr->boolop) 0.00 : 72e163: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 72e166: 83 f8 01 cmp $0x1,%eax 0.00 : 72e169: 0f 84 82 12 00 00 je 72f3f1 0.00 : 72e16f: 0f 83 a1 0f 00 00 jae 72f116 : { : case AND_EXPR: : if (!PRETTY_PAREN(context)) 0.00 : 72e175: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72e17c: f6 40 20 01 testb $0x1,0x20(%rax) 0.00 : 72e180: 0f 84 1b 16 00 00 je 72f7a1 : appendStringInfoChar(buf, '('); : get_rule_expr_paren(first_arg, context, 0.00 : 72e186: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e18d: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e194: 31 d2 xor %edx,%edx 0.00 : 72e196: 4c 89 e7 mov %r12,%rdi 0.00 : 72e199: e8 f2 16 00 00 callq 72f890 : false, node); : while (arg) 0.00 : 72e19e: 48 85 db test %rbx,%rbx 0.00 : 72e1a1: 74 37 je 72e1da 0.00 : 72e1a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : appendStringInfoString(buf, " AND "); 0.00 : 72e1a8: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e1af: be 75 ef 87 00 mov $0x87ef75,%esi 0.00 : 72e1b4: e8 97 3b ea ff callq 5d1d50 : get_rule_expr_paren((Node *) lfirst(arg), context, 0.00 : 72e1b9: 48 8b 3b mov (%rbx),%rdi 0.00 : 72e1bc: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e1c3: 31 d2 xor %edx,%edx 0.00 : 72e1c5: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e1cc: e8 bf 16 00 00 callq 72f890 : false, node); : arg = lnext(arg); 0.00 : 72e1d1: 48 8b 5b 08 mov 0x8(%rbx),%rbx : case AND_EXPR: : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); : get_rule_expr_paren(first_arg, context, : false, node); : while (arg) 0.00 : 72e1d5: 48 85 db test %rbx,%rbx 0.00 : 72e1d8: 75 ce jne 72e1a8 : appendStringInfoString(buf, " AND "); : get_rule_expr_paren((Node *) lfirst(arg), context, : false, node); : arg = lnext(arg); : } : if (!PRETTY_PAREN(context)) 0.00 : 72e1da: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 72e1e1: f6 42 20 01 testb $0x1,0x20(%rdx) 0.00 : 72e1e5: 0f 85 bd f8 ff ff jne 72daa8 0.00 : 72e1eb: e9 30 fb ff ff jmpq 72dd20 : */ : static void : get_sublink_expr(SubLink *sublink, deparse_context *context) : { : StringInfo buf = context->buf; : Query *query = (Query *) (sublink->subselect); 0.00 : 72e1f0: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx : * ---------- : */ : static void : get_sublink_expr(SubLink *sublink, deparse_context *context) : { : StringInfo buf = context->buf; 0.00 : 72e1f7: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx : Query *query = (Query *) (sublink->subselect); : char *opname = NULL; : bool need_paren; : : if (sublink->subLinkType == ARRAY_SUBLINK) 0.00 : 72e1fe: 83 79 04 06 cmpl $0x6,0x4(%rcx) : * ---------- : */ : static void : get_sublink_expr(SubLink *sublink, deparse_context *context) : { : StringInfo buf = context->buf; 0.00 : 72e202: 4c 8b 32 mov (%rdx),%r14 : Query *query = (Query *) (sublink->subselect); 0.00 : 72e205: 4c 8b 79 20 mov 0x20(%rcx),%r15 : char *opname = NULL; : bool need_paren; : : if (sublink->subLinkType == ARRAY_SUBLINK) 0.00 : 72e209: 0f 84 2b 10 00 00 je 72f23a : appendStringInfoString(buf, "ARRAY("); : else : appendStringInfoChar(buf, '('); 0.00 : 72e20f: be 28 00 00 00 mov $0x28,%esi 0.00 : 72e214: 4c 89 f7 mov %r14,%rdi 0.00 : 72e217: e8 74 3a ea ff callq 5d1c90 : * multiple combining operators. This is an approximation that could go : * wrong in various scenarios (operators in different schemas, renamed : * operators, etc) but there is not a whole lot we can do about it, since : * the syntax allows only one operator to be shown. : */ : if (sublink->testexpr) 0.00 : 72e21c: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e223: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 72e227: 48 85 db test %rbx,%rbx 0.00 : 72e22a: 0f 84 f1 13 00 00 je 72f621 : { : if (IsA(sublink->testexpr, OpExpr)) 0.00 : 72e230: 8b 03 mov (%rbx),%eax 0.00 : 72e232: 3d 37 01 00 00 cmp $0x137,%eax 0.00 : 72e237: 0f 84 55 10 00 00 je 72f292 : get_rule_expr(linitial(opexpr->args), context, true); : opname = generate_operator_name(opexpr->opno, : exprType(linitial(opexpr->args)), : exprType(lsecond(opexpr->args))); : } : else if (IsA(sublink->testexpr, BoolExpr)) 0.00 : 72e23d: 3d 3b 01 00 00 cmp $0x13b,%eax 0.00 : 72e242: 0f 84 2f 14 00 00 je 72f677 : exprType(lsecond(opexpr->args))); : sep = ", "; : } : appendStringInfoChar(buf, ')'); : } : else if (IsA(sublink->testexpr, RowCompareExpr)) 0.00 : 72e248: 3d 4b 01 00 00 cmp $0x14b,%eax 0.00 : 72e24d: 0f 1f 00 nopl (%rax) 0.00 : 72e250: 0f 85 02 16 00 00 jne 72f858 : { : /* multiple combining operators, < <= > >= cases */ : RowCompareExpr *rcexpr = (RowCompareExpr *) sublink->testexpr; : : appendStringInfoChar(buf, '('); 0.00 : 72e256: be 28 00 00 00 mov $0x28,%esi 0.00 : 72e25b: 4c 89 f7 mov %r14,%rdi 0.00 : 72e25e: e8 2d 3a ea ff callq 5d1c90 : get_rule_expr((Node *) rcexpr->largs, context, true); 0.00 : 72e263: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 72e267: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e26e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e273: e8 58 f6 ff ff callq 72d8d0 : opname = generate_operator_name(linitial_oid(rcexpr->opnos), 0.00 : 72e278: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 72e27c: 31 d2 xor %edx,%edx 0.00 : 72e27e: 48 85 c0 test %rax,%rax 0.00 : 72e281: 74 04 je 72e287 0.00 : 72e283: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72e287: 48 8b 3a mov (%rdx),%rdi 0.00 : 72e28a: e8 41 2a eb ff callq 5e0cd0 0.00 : 72e28f: 41 89 c4 mov %eax,%r12d 0.00 : 72e292: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 72e296: 31 d2 xor %edx,%edx 0.00 : 72e298: 48 85 c0 test %rax,%rax 0.00 : 72e29b: 74 04 je 72e2a1 0.00 : 72e29d: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72e2a1: 48 8b 3a mov (%rdx),%rdi 0.00 : 72e2a4: e8 27 2a eb ff callq 5e0cd0 0.00 : 72e2a9: 89 c6 mov %eax,%esi 0.00 : 72e2ab: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 72e2af: 31 c9 xor %ecx,%ecx 0.00 : 72e2b1: 48 85 c0 test %rax,%rax 0.00 : 72e2b4: 74 04 je 72e2ba 0.00 : 72e2b6: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 72e2ba: 8b 39 mov (%rcx),%edi 0.00 : 72e2bc: 44 89 e2 mov %r12d,%edx 0.00 : 72e2bf: e8 6c f3 ff ff callq 72d630 0.00 : 72e2c4: 49 89 c4 mov %rax,%r12 : exprType(linitial(rcexpr->largs)), : exprType(linitial(rcexpr->rargs))); : appendStringInfoChar(buf, ')'); 0.00 : 72e2c7: be 29 00 00 00 mov $0x29,%esi 0.00 : 72e2cc: 4c 89 f7 mov %r14,%rdi 0.00 : 72e2cf: e8 bc 39 ea ff callq 5d1c90 : (int) nodeTag(sublink->testexpr)); : } : : need_paren = true; : : switch (sublink->subLinkType) 0.00 : 72e2d4: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e2db: 83 78 04 06 cmpl $0x6,0x4(%rax) 0.00 : 72e2df: 0f 86 1d 0d 00 00 jbe 72f002 : need_paren = false; : break; : : case CTE_SUBLINK: /* shouldn't occur in a SubLink */ : default: : elog(ERROR, "unrecognized sublink type: %d", 0.00 : 72e2e5: ba b0 8a 8c 00 mov $0x8c8ab0,%edx 0.00 : 72e2ea: be 30 20 00 00 mov $0x2030,%esi 0.00 : 72e2ef: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72e2f4: e8 27 d1 04 00 callq 77b420 0.00 : 72e2f9: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e300: be c8 6c 8c 00 mov $0x8c6cc8,%esi 0.00 : 72e305: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72e30a: 31 c0 xor %eax,%eax 0.00 : 72e30c: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 72e30f: e8 1c cf 04 00 callq 77b230 0.00 : 72e314: e8 b7 b1 d3 ff callq 4694d0 : : case T_NamedArgExpr: : { : NamedArgExpr *na = (NamedArgExpr *) node; : : appendStringInfo(buf, "%s := ", quote_identifier(na->name)); 0.00 : 72e319: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e320: 48 8b 79 10 mov 0x10(%rcx),%rdi 0.00 : 72e324: e8 f7 bf ff ff callq 72a320 0.00 : 72e329: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e330: 48 89 c2 mov %rax,%rdx 0.00 : 72e333: be d8 3c 87 00 mov $0x873cd8,%esi 0.00 : 72e338: 31 c0 xor %eax,%eax 0.00 : 72e33a: e8 d1 3a ea ff callq 5d1e10 : get_rule_expr((Node *) na->arg, context, showimplicit); 0.00 : 72e33f: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e346: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e34d: 41 0f be d4 movsbl %r12b,%edx 0.00 : 72e351: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 72e355: e8 76 f5 ff ff callq 72d8d0 : } : break; 0.00 : 72e35a: e9 49 f7 ff ff jmpq 72daa8 : /* : * If it's a named type and not RECORD, we may have to skip : * dropped columns and/or claim there are NULLs for added : * columns. : */ : if (rowexpr->row_typeid != RECORDOID) 0.00 : 72e35f: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e366: 45 31 ed xor %r13d,%r13d 0.00 : 72e369: 8b 78 10 mov 0x10(%rax),%edi 0.00 : 72e36c: 81 ff c9 08 00 00 cmp $0x8c9,%edi 0.00 : 72e372: 74 0d je 72e381 : { : tupdesc = lookup_rowtype_tupdesc(rowexpr->row_typeid, -1); 0.00 : 72e374: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 72e379: e8 02 7f 04 00 callq 776280 0.00 : 72e37e: 49 89 c5 mov %rax,%r13 : : /* : * SQL99 allows "ROW" to be omitted when there is more than : * one column, but for simplicity we always print it. : */ : appendStringInfoString(buf, "ROW("); 0.00 : 72e381: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e388: be 45 6d 8c 00 mov $0x8c6d45,%esi 0.00 : 72e38d: e8 be 39 ea ff callq 5d1d50 : sep = ""; : i = 0; : foreach(arg, rowexpr->args) 0.00 : 72e392: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e399: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72e39d: 48 85 c0 test %rax,%rax 0.00 : 72e3a0: 0f 84 a2 13 00 00 je 72f748 0.00 : 72e3a6: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 72e3aa: 4d 85 e4 test %r12,%r12 0.00 : 72e3ad: 0f 84 95 13 00 00 je 72f748 0.00 : 72e3b3: 31 db xor %ebx,%ebx 0.00 : 72e3b5: be 96 16 8e 00 mov $0x8e1696,%esi 0.00 : 72e3ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : Node *e = (Node *) lfirst(arg); : : if (tupdesc == NULL || 0.00 : 72e3c0: 4d 85 ed test %r13,%r13 : appendStringInfoString(buf, "ROW("); : sep = ""; : i = 0; : foreach(arg, rowexpr->args) : { : Node *e = (Node *) lfirst(arg); 0.00 : 72e3c3: 4d 8b 34 24 mov (%r12),%r14 : : if (tupdesc == NULL || 0.00 : 72e3c7: 74 11 je 72e3da 0.00 : 72e3c9: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 72e3cd: 48 63 c3 movslq %ebx,%rax 0.00 : 72e3d0: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 72e3d4: 80 78 61 00 cmpb $0x0,0x61(%rax) 0.00 : 72e3d8: 75 25 jne 72e3ff : !tupdesc->attrs[i]->attisdropped) : { : appendStringInfoString(buf, sep); 0.00 : 72e3da: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e3e1: e8 6a 39 ea ff callq 5d1d50 : get_rule_expr(e, context, true); 0.00 : 72e3e6: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e3ed: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e3f2: 4c 89 f7 mov %r14,%rdi 0.00 : 72e3f5: e8 d6 f4 ff ff callq 72d8d0 0.00 : 72e3fa: be 5c 51 7b 00 mov $0x7b515c,%esi : * one column, but for simplicity we always print it. : */ : appendStringInfoString(buf, "ROW("); : sep = ""; : i = 0; : foreach(arg, rowexpr->args) 0.00 : 72e3ff: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : { : appendStringInfoString(buf, sep); : get_rule_expr(e, context, true); : sep = ", "; : } : i++; 0.00 : 72e404: 83 c3 01 add $0x1,%ebx : * one column, but for simplicity we always print it. : */ : appendStringInfoString(buf, "ROW("); : sep = ""; : i = 0; : foreach(arg, rowexpr->args) 0.00 : 72e407: 4d 85 e4 test %r12,%r12 0.00 : 72e40a: 75 b4 jne 72e3c0 : get_rule_expr(e, context, true); : sep = ", "; : } : i++; : } : if (tupdesc != NULL) 0.00 : 72e40c: 4d 85 ed test %r13,%r13 0.00 : 72e40f: 75 12 jne 72e423 0.00 : 72e411: e9 9f 0a 00 00 jmpq 72eeb5 0.00 : 72e416: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 72e41d: 00 00 00 : { : appendStringInfoString(buf, sep); : appendStringInfoString(buf, "NULL"); : sep = ", "; : } : i++; 0.00 : 72e420: 83 c3 01 add $0x1,%ebx : } : i++; : } : if (tupdesc != NULL) : { : while (i < tupdesc->natts) 0.00 : 72e423: 41 39 5d 00 cmp %ebx,0x0(%r13) 0.00 : 72e427: 0f 8e 76 0a 00 00 jle 72eea3 : { : if (!tupdesc->attrs[i]->attisdropped) 0.00 : 72e42d: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 72e431: 48 63 c3 movslq %ebx,%rax 0.00 : 72e434: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 72e438: 80 78 61 00 cmpb $0x0,0x61(%rax) 0.00 : 72e43c: 75 e2 jne 72e420 : { : appendStringInfoString(buf, sep); 0.00 : 72e43e: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e445: e8 06 39 ea ff callq 5d1d50 : appendStringInfoString(buf, "NULL"); 0.00 : 72e44a: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e451: be ef 61 8c 00 mov $0x8c61ef,%esi 0.00 : 72e456: e8 f5 38 ea ff callq 5d1d50 0.00 : 72e45b: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72e460: eb be jmp 72e420 : : /* : * SQL99 allows "ROW" to be omitted when there is more than : * one column, but for simplicity we always print it. : */ : appendStringInfoString(buf, "(ROW("); 0.00 : 72e462: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e469: be 3a 6d 8c 00 mov $0x8c6d3a,%esi 0.00 : 72e46e: e8 dd 38 ea ff callq 5d1d50 : sep = ""; : foreach(arg, rcexpr->largs) 0.00 : 72e473: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e47a: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 72e47e: 48 85 c0 test %rax,%rax 0.00 : 72e481: 74 48 je 72e4cb 0.00 : 72e483: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 72e487: 4d 85 e4 test %r12,%r12 0.00 : 72e48a: 74 3f je 72e4cb 0.00 : 72e48c: be 96 16 8e 00 mov $0x8e1696,%esi 0.00 : 72e491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : Node *e = (Node *) lfirst(arg); : : appendStringInfoString(buf, sep); 0.00 : 72e498: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi : */ : appendStringInfoString(buf, "(ROW("); : sep = ""; : foreach(arg, rcexpr->largs) : { : Node *e = (Node *) lfirst(arg); 0.00 : 72e49f: 49 8b 1c 24 mov (%r12),%rbx : : appendStringInfoString(buf, sep); 0.00 : 72e4a3: e8 a8 38 ea ff callq 5d1d50 : get_rule_expr(e, context, true); 0.00 : 72e4a8: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e4af: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e4b4: 48 89 df mov %rbx,%rdi 0.00 : 72e4b7: e8 14 f4 ff ff callq 72d8d0 : * SQL99 allows "ROW" to be omitted when there is more than : * one column, but for simplicity we always print it. : */ : appendStringInfoString(buf, "(ROW("); : sep = ""; : foreach(arg, rcexpr->largs) 0.00 : 72e4bc: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 72e4c1: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72e4c6: 4d 85 e4 test %r12,%r12 0.00 : 72e4c9: 75 cd jne 72e498 : * do for all the rest too. This is definitely open to : * failure, eg if some but not all operators were renamed : * since the construct was parsed, but there seems no way to : * be perfect. : */ : appendStringInfo(buf, ") %s ROW(", 0.00 : 72e4cb: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e4d2: 31 c0 xor %eax,%eax 0.00 : 72e4d4: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 72e4d8: 48 85 d2 test %rdx,%rdx 0.00 : 72e4db: 74 04 je 72e4e1 0.00 : 72e4dd: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72e4e1: 48 8b 38 mov (%rax),%rdi 0.00 : 72e4e4: e8 e7 27 eb ff callq 5e0cd0 0.00 : 72e4e9: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e4f0: 89 c3 mov %eax,%ebx 0.00 : 72e4f2: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 72e4f6: 31 d2 xor %edx,%edx 0.00 : 72e4f8: 48 85 c0 test %rax,%rax 0.00 : 72e4fb: 74 04 je 72e501 0.00 : 72e4fd: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72e501: 48 8b 3a mov (%rdx),%rdi 0.00 : 72e504: e8 c7 27 eb ff callq 5e0cd0 0.00 : 72e509: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e510: 89 c6 mov %eax,%esi 0.00 : 72e512: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 72e516: 31 c9 xor %ecx,%ecx 0.00 : 72e518: 48 85 c0 test %rax,%rax 0.00 : 72e51b: 74 04 je 72e521 0.00 : 72e51d: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 72e521: 8b 39 mov (%rcx),%edi 0.00 : 72e523: 89 da mov %ebx,%edx 0.00 : 72e525: e8 06 f1 ff ff callq 72d630 0.00 : 72e52a: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e531: 48 89 c2 mov %rax,%rdx 0.00 : 72e534: be 40 6d 8c 00 mov $0x8c6d40,%esi 0.00 : 72e539: 31 c0 xor %eax,%eax 0.00 : 72e53b: e8 d0 38 ea ff callq 5d1e10 : generate_operator_name(linitial_oid(rcexpr->opnos), : exprType(linitial(rcexpr->largs)), : exprType(linitial(rcexpr->rargs)))); : sep = ""; : foreach(arg, rcexpr->rargs) 0.00 : 72e540: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e547: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 72e54b: 48 85 c0 test %rax,%rax 0.00 : 72e54e: 74 43 je 72e593 0.00 : 72e550: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 72e554: 4d 85 e4 test %r12,%r12 0.00 : 72e557: 74 3a je 72e593 0.00 : 72e559: be 96 16 8e 00 mov $0x8e1696,%esi 0.00 : 72e55e: 66 90 xchg %ax,%ax : { : Node *e = (Node *) lfirst(arg); : : appendStringInfoString(buf, sep); 0.00 : 72e560: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi : exprType(linitial(rcexpr->largs)), : exprType(linitial(rcexpr->rargs)))); : sep = ""; : foreach(arg, rcexpr->rargs) : { : Node *e = (Node *) lfirst(arg); 0.00 : 72e567: 49 8b 1c 24 mov (%r12),%rbx : : appendStringInfoString(buf, sep); 0.00 : 72e56b: e8 e0 37 ea ff callq 5d1d50 : get_rule_expr(e, context, true); 0.00 : 72e570: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e577: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e57c: 48 89 df mov %rbx,%rdi 0.00 : 72e57f: e8 4c f3 ff ff callq 72d8d0 : appendStringInfo(buf, ") %s ROW(", : generate_operator_name(linitial_oid(rcexpr->opnos), : exprType(linitial(rcexpr->largs)), : exprType(linitial(rcexpr->rargs)))); : sep = ""; : foreach(arg, rcexpr->rargs) 0.00 : 72e584: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 72e589: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72e58e: 4d 85 e4 test %r12,%r12 0.00 : 72e591: 75 cd jne 72e560 : : appendStringInfoString(buf, sep); : get_rule_expr(e, context, true); : sep = ", "; : } : appendStringInfoString(buf, "))"); 0.00 : 72e593: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e59a: be 4a 6d 8c 00 mov $0x8c6d4a,%esi 0.00 : 72e59f: e8 ac 37 ea ff callq 5d1d50 : } : break; 0.00 : 72e5a4: e9 ff f4 ff ff jmpq 72daa8 : : case T_CoalesceExpr: : { : CoalesceExpr *coalesceexpr = (CoalesceExpr *) node; : : appendStringInfoString(buf, "COALESCE("); 0.00 : 72e5a9: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e5b0: be 4d 6d 8c 00 mov $0x8c6d4d,%esi 0.00 : 72e5b5: e8 96 37 ea ff callq 5d1d50 : get_rule_expr((Node *) coalesceexpr->args, context, true); 0.00 : 72e5ba: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e5c1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e5c6: 48 8b 79 10 mov 0x10(%rcx),%rdi 0.00 : 72e5ca: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e5d1: e8 fa f2 ff ff callq 72d8d0 0.00 : 72e5d6: e9 45 f7 ff ff jmpq 72dd20 : : case T_MinMaxExpr: : { : MinMaxExpr *minmaxexpr = (MinMaxExpr *) node; : : switch (minmaxexpr->op) 0.00 : 72e5db: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e5e2: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 72e5e5: 85 c0 test %eax,%eax 0.00 : 72e5e7: 0f 85 96 09 00 00 jne 72ef83 : { : case IS_GREATEST: : appendStringInfoString(buf, "GREATEST("); 0.00 : 72e5ed: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e5f4: be 57 6d 8c 00 mov $0x8c6d57,%esi 0.00 : 72e5f9: e8 52 37 ea ff callq 5d1d50 : break; : case IS_LEAST: : appendStringInfoString(buf, "LEAST("); : break; : } : get_rule_expr((Node *) minmaxexpr->args, context, true); 0.00 : 72e5fe: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e605: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e60c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e611: 48 8b 79 18 mov 0x18(%rcx),%rdi 0.00 : 72e615: e8 b6 f2 ff ff callq 72d8d0 : appendStringInfoChar(buf, ')'); 0.00 : 72e61a: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e621: be 29 00 00 00 mov $0x29,%esi 0.00 : 72e626: e8 65 36 ea ff callq 5d1c90 : } : break; 0.00 : 72e62b: e9 78 f4 ff ff jmpq 72daa8 : * that can contain this node type we attempt to avoid : * recursing to it. But in an optimized expression we might : * be unable to avoid that (see comments for CaseExpr). If we : * do see one, print it as CASE_TEST_EXPR. : */ : appendStringInfoString(buf, "CASE_TEST_EXPR"); 0.00 : 72e630: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e637: be 24 6d 8c 00 mov $0x8c6d24,%esi 0.00 : 72e63c: e8 0f 37 ea ff callq 5d1d50 : } : break; 0.00 : 72e641: e9 62 f4 ff ff jmpq 72daa8 : break; : : case T_RelabelType: : { : RelabelType *relabel = (RelabelType *) node; : Node *arg = (Node *) relabel->arg; 0.00 : 72e646: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax : : if (relabel->relabelformat == COERCE_IMPLICIT_CAST && 0.00 : 72e64d: 83 78 1c 02 cmpl $0x2,0x1c(%rax) : break; : : case T_RelabelType: : { : RelabelType *relabel = (RelabelType *) node; : Node *arg = (Node *) relabel->arg; 0.00 : 72e651: 48 8b 78 08 mov 0x8(%rax),%rdi : : if (relabel->relabelformat == COERCE_IMPLICIT_CAST && 0.00 : 72e655: 0f 84 0d 0c 00 00 je 72f268 : /* don't show the implicit cast */ : get_rule_expr_paren(arg, context, false, node); : } : else : { : get_coercion_expr(arg, context, 0.00 : 72e65b: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e662: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e669: 48 89 d0 mov %rdx,%rax 0.00 : 72e66c: 8b 4a 14 mov 0x14(%rdx),%ecx 0.00 : 72e66f: 8b 52 10 mov 0x10(%rdx),%edx 0.00 : 72e672: 49 89 c0 mov %rax,%r8 0.00 : 72e675: e8 06 15 00 00 callq 72fb80 0.00 : 72e67a: e9 29 f4 ff ff jmpq 72daa8 : break; : : case T_CoerceViaIO: : { : CoerceViaIO *iocoerce = (CoerceViaIO *) node; : Node *arg = (Node *) iocoerce->arg; 0.00 : 72e67f: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx : : if (iocoerce->coerceformat == COERCE_IMPLICIT_CAST && 0.00 : 72e686: 83 7a 18 02 cmpl $0x2,0x18(%rdx) : break; : : case T_CoerceViaIO: : { : CoerceViaIO *iocoerce = (CoerceViaIO *) node; : Node *arg = (Node *) iocoerce->arg; 0.00 : 72e68a: 48 8b 7a 08 mov 0x8(%rdx),%rdi : : if (iocoerce->coerceformat == COERCE_IMPLICIT_CAST && 0.00 : 72e68e: 74 6d je 72e6fd : /* don't show the implicit cast */ : get_rule_expr_paren(arg, context, false, node); : } : else : { : get_coercion_expr(arg, context, 0.00 : 72e690: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e697: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e69e: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : 72e6a1: 49 89 c8 mov %rcx,%r8 0.00 : 72e6a4: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 72e6a9: e8 d2 14 00 00 callq 72fb80 0.00 : 72e6ae: e9 f5 f3 ff ff jmpq 72daa8 : break; : : case T_ArrayCoerceExpr: : { : ArrayCoerceExpr *acoerce = (ArrayCoerceExpr *) node; : Node *arg = (Node *) acoerce->arg; 0.00 : 72e6b3: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax : : if (acoerce->coerceformat == COERCE_IMPLICIT_CAST && 0.00 : 72e6ba: 83 78 24 02 cmpl $0x2,0x24(%rax) : break; : : case T_ArrayCoerceExpr: : { : ArrayCoerceExpr *acoerce = (ArrayCoerceExpr *) node; : Node *arg = (Node *) acoerce->arg; 0.00 : 72e6be: 48 8b 78 08 mov 0x8(%rax),%rdi : : if (acoerce->coerceformat == COERCE_IMPLICIT_CAST && 0.00 : 72e6c2: 0f 84 bf 0b 00 00 je 72f287 : /* don't show the implicit cast */ : get_rule_expr_paren(arg, context, false, node); : } : else : { : get_coercion_expr(arg, context, 0.00 : 72e6c8: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e6cf: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e6d6: 48 89 d0 mov %rdx,%rax 0.00 : 72e6d9: 8b 4a 18 mov 0x18(%rdx),%ecx 0.00 : 72e6dc: 8b 52 14 mov 0x14(%rdx),%edx 0.00 : 72e6df: 49 89 c0 mov %rax,%r8 0.00 : 72e6e2: e8 99 14 00 00 callq 72fb80 0.00 : 72e6e7: e9 bc f3 ff ff jmpq 72daa8 : break; : : case T_ConvertRowtypeExpr: : { : ConvertRowtypeExpr *convert = (ConvertRowtypeExpr *) node; : Node *arg = (Node *) convert->arg; 0.00 : 72e6ec: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx : : if (convert->convertformat == COERCE_IMPLICIT_CAST && 0.00 : 72e6f3: 83 7a 14 02 cmpl $0x2,0x14(%rdx) : break; : : case T_ConvertRowtypeExpr: : { : ConvertRowtypeExpr *convert = (ConvertRowtypeExpr *) node; : Node *arg = (Node *) convert->arg; 0.00 : 72e6f7: 48 8b 7a 08 mov 0x8(%rdx),%rdi : : if (convert->convertformat == COERCE_IMPLICIT_CAST && 0.00 : 72e6fb: 75 93 jne 72e690 0.00 : 72e6fd: 45 84 e4 test %r12b,%r12b 0.00 : 72e700: 75 8e jne 72e690 : !showimplicit) : { : /* don't show the implicit cast */ : get_rule_expr_paren(arg, context, false, node); 0.00 : 72e702: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e709: 48 89 d1 mov %rdx,%rcx 0.00 : 72e70c: 31 d2 xor %edx,%edx 0.00 : 72e70e: e8 7d 11 00 00 callq 72f890 0.00 : 72e713: e9 90 f3 ff ff jmpq 72daa8 : * terribly complete, but it's probably good enough for : * EXPLAIN's purposes; especially since anything more would be : * either hopelessly confusing or an even poorer : * representation of what the plan is actually doing. : */ : need_parens = (list_length(fstore->newvals) != 1); 0.00 : 72e718: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e71f: 48 8b 78 10 mov 0x10(%rax),%rdi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 72e723: 48 85 ff test %rdi,%rdi 0.00 : 72e726: 0f 84 77 0e 00 00 je 72f5a3 : if (need_parens) 0.00 : 72e72c: 83 7f 04 01 cmpl $0x1,0x4(%rdi) 0.00 : 72e730: 0f 85 6d 0e 00 00 jne 72f5a3 : appendStringInfoString(buf, "ROW("); : get_rule_expr((Node *) fstore->newvals, context, showimplicit); 0.00 : 72e736: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e73d: 41 0f be d4 movsbl %r12b,%edx 0.00 : 72e741: e8 8a f1 ff ff callq 72d8d0 0.00 : 72e746: e9 5d f3 ff ff jmpq 72daa8 : } : } : break; : : case T_CoerceToDomainValue: : appendStringInfoString(buf, "VALUE"); 0.00 : 72e74b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e752: be 46 6e 8c 00 mov $0x8c6e46,%esi 0.00 : 72e757: e8 f4 35 ea ff callq 5d1d50 : break; 0.00 : 72e75c: e9 47 f3 ff ff jmpq 72daa8 : : case T_ArrayExpr: : { : ArrayExpr *arrayexpr = (ArrayExpr *) node; : : appendStringInfoString(buf, "ARRAY["); 0.00 : 72e761: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e768: be 33 6d 8c 00 mov $0x8c6d33,%esi 0.00 : 72e76d: e8 de 35 ea ff callq 5d1d50 : get_rule_expr((Node *) arrayexpr->elements, context, true); 0.00 : 72e772: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e779: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e780: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 72e784: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e789: e8 42 f1 ff ff callq 72d8d0 : appendStringInfoChar(buf, ']'); 0.00 : 72e78e: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e795: be 5d 00 00 00 mov $0x5d,%esi 0.00 : 72e79a: e8 f1 34 ea ff callq 5d1c90 : /* : * If the array isn't empty, we assume its elements are : * coerced to the desired type. If it's empty, though, we : * need an explicit coercion to the array type. : */ : if (arrayexpr->elements == NIL) 0.00 : 72e79f: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e7a6: 48 83 79 10 00 cmpq $0x0,0x10(%rcx) 0.00 : 72e7ab: 0f 85 f7 f2 ff ff jne 72daa8 : appendStringInfo(buf, "::%s", 0.00 : 72e7b1: 8b 79 04 mov 0x4(%rcx),%edi : : ReleaseTupleDesc(tupdesc); : } : appendStringInfoChar(buf, ')'); : if (rowexpr->row_format == COERCE_EXPLICIT_CAST) : appendStringInfo(buf, "::%s", 0.00 : 72e7b4: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 72e7b9: e8 22 ac fa ff callq 6d93e0 0.00 : 72e7be: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e7c5: 48 89 c2 mov %rax,%rdx 0.00 : 72e7c8: be 92 59 87 00 mov $0x875992,%esi 0.00 : 72e7cd: 31 c0 xor %eax,%eax 0.00 : 72e7cf: e8 3c 36 ea ff callq 5d1e10 0.00 : 72e7d4: e9 cf f2 ff ff jmpq 72daa8 : : case T_BooleanTest: : { : BooleanTest *btest = (BooleanTest *) node; : : if (!PRETTY_PAREN(context)) 0.00 : 72e7d9: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 72e7e0: f6 42 20 01 testb $0x1,0x20(%rdx) 0.00 : 72e7e4: 0f 84 e2 09 00 00 je 72f1cc : appendStringInfoChar(buf, '('); : get_rule_expr_paren((Node *) btest->arg, context, false, node); 0.00 : 72e7ea: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e7f1: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e7f8: 31 d2 xor %edx,%edx 0.00 : 72e7fa: 48 8b 79 08 mov 0x8(%rcx),%rdi 0.00 : 72e7fe: e8 8d 10 00 00 callq 72f890 : switch (btest->booltesttype) 0.00 : 72e803: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e80a: 83 78 10 05 cmpl $0x5,0x10(%rax) 0.00 : 72e80e: 0f 86 e1 06 00 00 jbe 72eef5 : break; : case IS_NOT_UNKNOWN: : appendStringInfoString(buf, " IS NOT UNKNOWN"); : break; : default: : elog(ERROR, "unrecognized booltesttype: %d", 0.00 : 72e814: ba 18 8a 8c 00 mov $0x8c8a18,%edx 0.00 : 72e819: be 71 1d 00 00 mov $0x1d71,%esi 0.00 : 72e81e: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72e823: e8 f8 cb 04 00 callq 77b420 0.00 : 72e828: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e82f: be 61 32 87 00 mov $0x873261,%esi 0.00 : 72e834: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72e839: 31 c0 xor %eax,%eax 0.00 : 72e83b: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : 72e83e: e8 ed c9 04 00 callq 77b230 0.00 : 72e843: e8 88 ac d3 ff callq 4694d0 : break; : : case T_CoerceToDomain: : { : CoerceToDomain *ctest = (CoerceToDomain *) node; : Node *arg = (Node *) ctest->arg; 0.00 : 72e848: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx : : if (ctest->coercionformat == COERCE_IMPLICIT_CAST && 0.00 : 72e84f: 83 7a 1c 02 cmpl $0x2,0x1c(%rdx) : break; : : case T_CoerceToDomain: : { : CoerceToDomain *ctest = (CoerceToDomain *) node; : Node *arg = (Node *) ctest->arg; 0.00 : 72e853: 48 8b 7a 08 mov 0x8(%rdx),%rdi : : if (ctest->coercionformat == COERCE_IMPLICIT_CAST && 0.00 : 72e857: 0f 84 ef 09 00 00 je 72f24c : /* don't show the implicit cast */ : get_rule_expr(arg, context, false); : } : else : { : get_coercion_expr(arg, context, 0.00 : 72e85d: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e864: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e86b: 8b 48 14 mov 0x14(%rax),%ecx 0.00 : 72e86e: 8b 50 10 mov 0x10(%rax),%edx 0.00 : 72e871: 49 89 c0 mov %rax,%r8 0.00 : 72e874: e8 07 13 00 00 callq 72fb80 0.00 : 72e879: e9 2a f2 ff ff jmpq 72daa8 : : case T_NullTest: : { : NullTest *ntest = (NullTest *) node; : : if (!PRETTY_PAREN(context)) 0.00 : 72e87e: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 72e885: f6 41 20 01 testb $0x1,0x20(%rcx) 0.00 : 72e889: 0f 84 95 09 00 00 je 72f224 : appendStringInfoChar(buf, '('); : get_rule_expr_paren((Node *) ntest->arg, context, true, node); 0.00 : 72e88f: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e896: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e89d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72e8a2: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 72e8a6: 48 89 c1 mov %rax,%rcx 0.00 : 72e8a9: e8 e2 0f 00 00 callq 72f890 : switch (ntest->nulltesttype) 0.00 : 72e8ae: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e8b5: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 72e8b8: 85 c0 test %eax,%eax 0.00 : 72e8ba: 0f 85 e2 06 00 00 jne 72efa2 : { : case IS_NULL: : appendStringInfoString(buf, " IS NULL"); 0.00 : 72e8c0: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e8c7: be 59 6e 8c 00 mov $0x8c6e59,%esi 0.00 : 72e8cc: e8 7f 34 ea ff callq 5d1d50 0.00 : 72e8d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : default: : elog(ERROR, "unrecognized booltesttype: %d", : (int) btest->booltesttype); : } : if (!PRETTY_PAREN(context)) 0.00 : 72e8d8: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72e8df: f6 40 20 01 testb $0x1,0x20(%rax) 0.00 : 72e8e3: 0f 85 bf f1 ff ff jne 72daa8 0.00 : 72e8e9: e9 32 f4 ff ff jmpq 72dd20 : : case T_CurrentOfExpr: : { : CurrentOfExpr *cexpr = (CurrentOfExpr *) node; : : if (cexpr->cursor_name) 0.00 : 72e8ee: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e8f5: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 72e8f9: 48 85 ff test %rdi,%rdi 0.00 : 72e8fc: 0f 84 d8 0c 00 00 je 72f5da : appendStringInfo(buf, "CURRENT OF %s", 0.00 : 72e902: e8 19 ba ff ff callq 72a320 0.00 : 72e907: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e90e: 48 89 c2 mov %rax,%rdx 0.00 : 72e911: be ac 6e 8c 00 mov $0x8c6eac,%esi 0.00 : 72e916: 31 c0 xor %eax,%eax 0.00 : 72e918: e8 f3 34 ea ff callq 5d1e10 0.00 : 72e91d: e9 86 f1 ff ff jmpq 72daa8 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 72e922: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72e929: 48 8b 58 08 mov 0x8(%rax),%rbx : { : char *sep; : ListCell *l; : : sep = ""; : foreach(l, (List *) node) 0.00 : 72e92d: 48 85 db test %rbx,%rbx 0.00 : 72e930: 0f 84 72 f1 ff ff je 72daa8 0.00 : 72e936: 45 0f be e4 movsbl %r12b,%r12d 0.00 : 72e93a: be 96 16 8e 00 mov $0x8e1696,%esi 0.00 : 72e93f: 90 nop : { : appendStringInfoString(buf, sep); 0.00 : 72e940: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e947: e8 04 34 ea ff callq 5d1d50 : get_rule_expr((Node *) lfirst(l), context, showimplicit); 0.00 : 72e94c: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72e953: 48 8b 3b mov (%rbx),%rdi 0.00 : 72e956: 44 89 e2 mov %r12d,%edx 0.00 : 72e959: e8 72 ef ff ff callq 72d8d0 : { : char *sep; : ListCell *l; : : sep = ""; : foreach(l, (List *) node) 0.00 : 72e95e: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 72e962: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72e967: 48 85 db test %rbx,%rbx 0.00 : 72e96a: 75 d4 jne 72e940 0.00 : 72e96c: e9 37 f1 ff ff jmpq 72daa8 : case T_CoerceToDomainValue: : appendStringInfoString(buf, "VALUE"); : break; : : case T_SetToDefault: : appendStringInfoString(buf, "DEFAULT"); 0.00 : 72e971: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e978: be 48 62 8c 00 mov $0x8c6248,%esi 0.00 : 72e97d: e8 ce 33 ea ff callq 5d1d50 : break; 0.00 : 72e982: e9 21 f1 ff ff jmpq 72daa8 : break; : case IS_XMLROOT: : appendStringInfoString(buf, "XMLROOT("); : break; : case IS_XMLSERIALIZE: : appendStringInfoString(buf, "XMLSERIALIZE("); 0.00 : 72e987: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e98e: be a4 6d 8c 00 mov $0x8c6da4,%esi 0.00 : 72e993: e8 b8 33 ea ff callq 5d1d50 0.00 : 72e998: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e99f: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 72e9a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : case IS_DOCUMENT: : break; : } : if (xexpr->op == IS_XMLPARSE || xexpr->op == IS_XMLSERIALIZE) 0.00 : 72e9a8: 83 f8 03 cmp $0x3,%eax 0.00 : 72e9ab: 0f 84 3d 07 00 00 je 72f0ee 0.00 : 72e9b1: 83 f8 06 cmp $0x6,%eax 0.00 : 72e9b4: 0f 84 34 07 00 00 je 72f0ee : if (xexpr->xmloption == XMLOPTION_DOCUMENT) : appendStringInfoString(buf, "DOCUMENT "); : else : appendStringInfoString(buf, "CONTENT "); : } : if (xexpr->name) 0.00 : 72e9ba: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72e9c1: 45 31 ed xor %r13d,%r13d 0.00 : 72e9c4: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 72e9c8: 48 85 ff test %rdi,%rdi 0.00 : 72e9cb: 74 29 je 72e9f6 : { : appendStringInfo(buf, "NAME %s", 0.00 : 72e9cd: e8 1e 57 03 00 callq 7640f0 0.00 : 72e9d2: 48 89 c7 mov %rax,%rdi 0.00 : 72e9d5: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 72e9db: e8 40 b9 ff ff callq 72a320 0.00 : 72e9e0: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72e9e7: 48 89 c2 mov %rax,%rdx 0.00 : 72e9ea: be c5 6d 8c 00 mov $0x8c6dc5,%esi 0.00 : 72e9ef: 31 c0 xor %eax,%eax 0.00 : 72e9f1: e8 1a 34 ea ff callq 5d1e10 : quote_identifier(map_xml_name_to_sql_identifier(xexpr->name))); : needcomma = true; : } : if (xexpr->named_args) 0.00 : 72e9f6: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72e9fd: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 72ea01: 48 85 c0 test %rax,%rax 0.00 : 72ea04: 0f 84 f1 00 00 00 je 72eafb : { : if (xexpr->op != IS_XMLFOREST) 0.00 : 72ea0a: 83 79 04 02 cmpl $0x2,0x4(%rcx) 0.00 : 72ea0e: 74 30 je 72ea40 : { : if (needcomma) 0.00 : 72ea10: 45 84 ed test %r13b,%r13b 0.00 : 72ea13: 0f 85 3d 0b 00 00 jne 72f556 : appendStringInfoString(buf, ", "); : appendStringInfoString(buf, "XMLATTRIBUTES("); 0.00 : 72ea19: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ea20: be cd 6d 8c 00 mov $0x8c6dcd,%esi 0.00 : 72ea25: 45 31 ed xor %r13d,%r13d 0.00 : 72ea28: 45 31 e4 xor %r12d,%r12d 0.00 : 72ea2b: e8 20 33 ea ff callq 5d1d50 : needcomma = false; : } : forboth(arg, xexpr->named_args, narg, xexpr->arg_names) 0.00 : 72ea30: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72ea37: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 72ea3b: 48 85 c0 test %rax,%rax 0.00 : 72ea3e: 74 04 je 72ea44 0.00 : 72ea40: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 72ea44: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ea4b: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 72ea4f: 48 85 c0 test %rax,%rax 0.00 : 72ea52: 0f 84 85 00 00 00 je 72eadd 0.00 : 72ea58: 4d 85 e4 test %r12,%r12 0.00 : 72ea5b: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 72ea5f: 74 7c je 72eadd 0.00 : 72ea61: 48 85 db test %rbx,%rbx 0.00 : 72ea64: 74 77 je 72eadd 0.00 : 72ea66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 72ea6d: 00 00 00 : { : Node *e = (Node *) lfirst(arg); : char *argname = strVal(lfirst(narg)); 0.00 : 72ea70: 48 8b 03 mov (%rbx),%rax : : if (needcomma) 0.00 : 72ea73: 45 84 ed test %r13b,%r13b : appendStringInfoString(buf, "XMLATTRIBUTES("); : needcomma = false; : } : forboth(arg, xexpr->named_args, narg, xexpr->arg_names) : { : Node *e = (Node *) lfirst(arg); 0.00 : 72ea76: 4d 8b 3c 24 mov (%r12),%r15 : char *argname = strVal(lfirst(narg)); 0.00 : 72ea7a: 4c 8b 70 08 mov 0x8(%rax),%r14 : : if (needcomma) 0.00 : 72ea7e: 0f 85 7c 03 00 00 jne 72ee00 : appendStringInfoString(buf, ", "); : get_rule_expr((Node *) e, context, true); 0.00 : 72ea84: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72ea8b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72ea90: 4c 89 ff mov %r15,%rdi : if (needcomma) : appendStringInfoString(buf, ", "); : appendStringInfoString(buf, "XMLATTRIBUTES("); : needcomma = false; : } : forboth(arg, xexpr->named_args, narg, xexpr->arg_names) 0.00 : 72ea93: 41 bd 01 00 00 00 mov $0x1,%r13d : Node *e = (Node *) lfirst(arg); : char *argname = strVal(lfirst(narg)); : : if (needcomma) : appendStringInfoString(buf, ", "); : get_rule_expr((Node *) e, context, true); 0.00 : 72ea99: e8 32 ee ff ff callq 72d8d0 : appendStringInfo(buf, " AS %s", 0.00 : 72ea9e: 4c 89 f7 mov %r14,%rdi 0.00 : 72eaa1: e8 4a 56 03 00 callq 7640f0 0.00 : 72eaa6: 48 89 c7 mov %rax,%rdi 0.00 : 72eaa9: e8 72 b8 ff ff callq 72a320 0.00 : 72eaae: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72eab5: 48 89 c2 mov %rax,%rdx 0.00 : 72eab8: be dc 6d 8c 00 mov $0x8c6ddc,%esi 0.00 : 72eabd: 31 c0 xor %eax,%eax 0.00 : 72eabf: e8 4c 33 ea ff callq 5d1e10 : if (needcomma) : appendStringInfoString(buf, ", "); : appendStringInfoString(buf, "XMLATTRIBUTES("); : needcomma = false; : } : forboth(arg, xexpr->named_args, narg, xexpr->arg_names) 0.00 : 72eac4: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 72eac9: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 72eacd: 4d 85 e4 test %r12,%r12 0.00 : 72ead0: 74 05 je 72ead7 0.00 : 72ead2: 48 85 db test %rbx,%rbx 0.00 : 72ead5: 75 99 jne 72ea70 0.00 : 72ead7: 41 bd 01 00 00 00 mov $0x1,%r13d : get_rule_expr((Node *) e, context, true); : appendStringInfo(buf, " AS %s", : quote_identifier(map_xml_name_to_sql_identifier(argname))); : needcomma = true; : } : if (xexpr->op != IS_XMLFOREST) 0.00 : 72eadd: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72eae4: 83 78 04 02 cmpl $0x2,0x4(%rax) 0.00 : 72eae8: 74 11 je 72eafb : appendStringInfoChar(buf, ')'); 0.00 : 72eaea: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72eaf1: be 29 00 00 00 mov $0x29,%esi 0.00 : 72eaf6: e8 95 31 ea ff callq 5d1c90 : } : if (xexpr->args) 0.00 : 72eafb: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72eb02: 48 83 7a 20 00 cmpq $0x0,0x20(%rdx) 0.00 : 72eb07: 0f 84 bb 0a 00 00 je 72f5c8 : { : if (needcomma) 0.00 : 72eb0d: 45 84 ed test %r13b,%r13b 0.00 : 72eb10: 0f 85 80 08 00 00 jne 72f396 : appendStringInfoString(buf, ", "); : switch (xexpr->op) 0.00 : 72eb16: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72eb1d: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 72eb20: 83 f8 07 cmp $0x7,%eax 0.00 : 72eb23: 89 c2 mov %eax,%edx 0.00 : 72eb25: 77 2f ja 72eb56 0.00 : 72eb27: 89 c0 mov %eax,%eax 0.00 : 72eb29: ff 24 c5 48 85 8c 00 jmpq *0x8c8548(,%rax,8) : break; : } : } : break; : case IS_DOCUMENT: : get_rule_expr_paren((Node *) xexpr->args, context, false, node); 0.00 : 72eb30: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72eb37: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72eb3e: 31 d2 xor %edx,%edx 0.00 : 72eb40: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 72eb44: 48 89 c1 mov %rax,%rcx 0.00 : 72eb47: e8 44 0d 00 00 callq 72f890 0.00 : 72eb4c: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72eb53: 8b 51 04 mov 0x4(%rcx),%edx : break; : } : : } : if (xexpr->op == IS_XMLSERIALIZE) 0.00 : 72eb56: 83 fa 06 cmp $0x6,%edx 0.00 : 72eb59: 89 d0 mov %edx,%eax 0.00 : 72eb5b: 0f 84 0b 0a 00 00 je 72f56c : appendStringInfo(buf, " AS %s", : format_type_with_typemod(xexpr->type, : xexpr->typmod)); : if (xexpr->op == IS_DOCUMENT) 0.00 : 72eb61: 83 f8 07 cmp $0x7,%eax 0.00 : 72eb64: 0f 85 b6 f1 ff ff jne 72dd20 : appendStringInfoString(buf, " IS DOCUMENT"); 0.00 : 72eb6a: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72eb71: be 4c 6e 8c 00 mov $0x8c6e4c,%esi 0.00 : 72eb76: e8 d5 31 ea ff callq 5d1d50 0.00 : 72eb7b: e9 28 ef ff ff jmpq 72daa8 : get_rule_expr((Node *) xexpr->args, context, true); : break; : case IS_XMLPARSE: : Assert(list_length(xexpr->args) == 2); : : get_rule_expr((Node *) linitial(xexpr->args), 0.00 : 72eb80: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72eb87: 31 c9 xor %ecx,%ecx 0.00 : 72eb89: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 72eb8d: 48 85 c0 test %rax,%rax 0.00 : 72eb90: 74 04 je 72eb96 0.00 : 72eb92: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 72eb96: 48 8b 39 mov (%rcx),%rdi 0.00 : 72eb99: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72eba0: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72eba5: e8 26 ed ff ff callq 72d8d0 : context, true); : : con = (Const *) lsecond(xexpr->args); 0.00 : 72ebaa: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ebb1: 31 d2 xor %edx,%edx 0.00 : 72ebb3: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 72ebb7: 48 85 c0 test %rax,%rax 0.00 : 72ebba: 74 04 je 72ebc0 0.00 : 72ebbc: 48 8b 50 08 mov 0x8(%rax),%rdx : Assert(IsA(con, Const)); : Assert(!con->constisnull); : if (DatumGetBool(con->constvalue)) 0.00 : 72ebc0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72ebc4: 48 8b 00 mov (%rax),%rax 0.00 : 72ebc7: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 72ebcb: 0f 84 83 0b 00 00 je 72f754 : appendStringInfoString(buf, 0.00 : 72ebd1: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ebd8: be e3 6d 8c 00 mov $0x8c6de3,%esi 0.00 : 72ebdd: e8 6e 31 ea ff callq 5d1d50 0.00 : 72ebe2: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72ebe9: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 72ebec: e9 65 ff ff ff jmpq 72eb56 : case IS_XMLELEMENT: : case IS_XMLFOREST: : case IS_XMLPI: : case IS_XMLSERIALIZE: : /* no extra decoration needed */ : get_rule_expr((Node *) xexpr->args, context, true); 0.00 : 72ebf1: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ebf8: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72ebff: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72ec04: 48 8b 79 20 mov 0x20(%rcx),%rdi 0.00 : 72ec08: e8 c3 ec ff ff callq 72d8d0 0.00 : 72ec0d: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72ec14: 8b 50 04 mov 0x4(%rax),%edx : break; 0.00 : 72ec17: e9 3a ff ff ff jmpq 72eb56 : " STRIP WHITESPACE"); : break; : case IS_XMLROOT: : Assert(list_length(xexpr->args) == 3); : : get_rule_expr((Node *) linitial(xexpr->args), 0.00 : 72ec1c: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72ec23: 31 c9 xor %ecx,%ecx 0.00 : 72ec25: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 72ec29: 48 85 c0 test %rax,%rax 0.00 : 72ec2c: 74 04 je 72ec32 0.00 : 72ec2e: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 72ec32: 48 8b 39 mov (%rcx),%rdi 0.00 : 72ec35: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72ec3c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72ec41: e8 8a ec ff ff callq 72d8d0 : context, true); : : appendStringInfoString(buf, ", VERSION "); 0.00 : 72ec46: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ec4d: be 0a 6e 8c 00 mov $0x8c6e0a,%esi 0.00 : 72ec52: e8 f9 30 ea ff callq 5d1d50 : con = (Const *) lsecond(xexpr->args); 0.00 : 72ec57: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ec5e: 31 d2 xor %edx,%edx 0.00 : 72ec60: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 72ec64: 48 85 c0 test %rax,%rax 0.00 : 72ec67: 74 04 je 72ec6d 0.00 : 72ec69: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72ec6d: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72ec71: 48 8b 38 mov (%rax),%rdi : if (IsA(con, Const) && 0.00 : 72ec74: 81 3f 30 01 00 00 cmpl $0x130,(%rdi) 0.00 : 72ec7a: 75 0a jne 72ec86 0.00 : 72ec7c: 80 7f 20 00 cmpb $0x0,0x20(%rdi) 0.00 : 72ec80: 0f 85 67 0b 00 00 jne 72f7ed : con->constisnull) : appendStringInfoString(buf, "NO VALUE"); : else : get_rule_expr((Node *) con, context, false); 0.00 : 72ec86: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72ec8d: 31 d2 xor %edx,%edx 0.00 : 72ec8f: e8 3c ec ff ff callq 72d8d0 : : con = (Const *) lthird(xexpr->args); 0.00 : 72ec94: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72ec9b: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 72ec9f: 31 d2 xor %edx,%edx 0.00 : 72eca1: 48 85 c0 test %rax,%rax 0.00 : 72eca4: 74 04 je 72ecaa 0.00 : 72eca6: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72ecaa: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72ecae: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 72ecb2: 48 8b 00 mov (%rax),%rax : Assert(IsA(con, Const)); : if (con->constisnull) 0.00 : 72ecb5: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 72ecb9: 0f 85 8d fe ff ff jne 72eb4c : /* suppress STANDALONE NO VALUE */ ; : else : { : switch (DatumGetInt32(con->constvalue)) 0.00 : 72ecbf: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 72ecc3: 83 f8 01 cmp $0x1,%eax 0.00 : 72ecc6: 0f 84 01 0b 00 00 je 72f7cd 0.00 : 72eccc: 83 f8 02 cmp $0x2,%eax 0.00 : 72eccf: 0f 84 2e 0b 00 00 je 72f803 0.00 : 72ecd5: 85 c0 test %eax,%eax 0.00 : 72ecd7: 0f 85 01 0b 00 00 jne 72f7de : { : case XML_STANDALONE_YES: : appendStringInfoString(buf, 0.00 : 72ecdd: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ece4: be 15 6e 8c 00 mov $0x8c6e15,%esi 0.00 : 72ece9: e8 62 30 ea ff callq 5d1d50 0.00 : 72ecee: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ecf5: 8b 51 04 mov 0x4(%rcx),%edx : ", STANDALONE YES"); : break; 0.00 : 72ecf8: e9 59 fe ff ff jmpq 72eb56 : break; : case IS_XMLPI: : appendStringInfoString(buf, "XMLPI("); : break; : case IS_XMLROOT: : appendStringInfoString(buf, "XMLROOT("); 0.00 : 72ecfd: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ed04: be 9b 6d 8c 00 mov $0x8c6d9b,%esi 0.00 : 72ed09: e8 42 30 ea ff callq 5d1d50 0.00 : 72ed0e: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72ed15: 8b 42 04 mov 0x4(%rdx),%eax : break; 0.00 : 72ed18: e9 8b fc ff ff jmpq 72e9a8 : break; : case IS_XMLPARSE: : appendStringInfoString(buf, "XMLPARSE("); : break; : case IS_XMLPI: : appendStringInfoString(buf, "XMLPI("); 0.00 : 72ed1d: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ed24: be 94 6d 8c 00 mov $0x8c6d94,%esi 0.00 : 72ed29: e8 22 30 ea ff callq 5d1d50 0.00 : 72ed2e: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ed35: 8b 41 04 mov 0x4(%rcx),%eax : break; 0.00 : 72ed38: e9 6b fc ff ff jmpq 72e9a8 : break; : case IS_XMLFOREST: : appendStringInfoString(buf, "XMLFOREST("); : break; : case IS_XMLPARSE: : appendStringInfoString(buf, "XMLPARSE("); 0.00 : 72ed3d: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ed44: be 8a 6d 8c 00 mov $0x8c6d8a,%esi 0.00 : 72ed49: e8 02 30 ea ff callq 5d1d50 0.00 : 72ed4e: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72ed55: 8b 42 04 mov 0x4(%rdx),%eax : break; 0.00 : 72ed58: e9 4b fc ff ff jmpq 72e9a8 : break; : case IS_XMLELEMENT: : appendStringInfoString(buf, "XMLELEMENT("); : break; : case IS_XMLFOREST: : appendStringInfoString(buf, "XMLFOREST("); 0.00 : 72ed5d: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ed64: be 7f 6d 8c 00 mov $0x8c6d7f,%esi 0.00 : 72ed69: e8 e2 2f ea ff callq 5d1d50 0.00 : 72ed6e: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ed75: 8b 41 04 mov 0x4(%rcx),%eax : break; 0.00 : 72ed78: e9 2b fc ff ff jmpq 72e9a8 : Const *con; : : switch (xexpr->op) : { : case IS_XMLCONCAT: : appendStringInfoString(buf, "XMLCONCAT("); 0.00 : 72ed7d: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ed84: be 68 6d 8c 00 mov $0x8c6d68,%esi 0.00 : 72ed89: e8 c2 2f ea ff callq 5d1d50 0.00 : 72ed8e: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ed95: 8b 41 04 mov 0x4(%rcx),%eax : break; 0.00 : 72ed98: e9 0b fc ff ff jmpq 72e9a8 : case IS_XMLELEMENT: : appendStringInfoString(buf, "XMLELEMENT("); 0.00 : 72ed9d: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72eda4: be 73 6d 8c 00 mov $0x8c6d73,%esi 0.00 : 72eda9: e8 a2 2f ea ff callq 5d1d50 0.00 : 72edae: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72edb5: 8b 42 04 mov 0x4(%rdx),%eax : break; 0.00 : 72edb8: e9 eb fb ff ff jmpq 72e9a8 0.00 : 72edbd: 0f 1f 00 nopl (%rax) : * inline function). If we don't recognize the form : * of the WHEN clause, just punt and display it as-is. : */ : if (IsA(w, OpExpr)) : { : List *args = ((OpExpr *) w)->args; 0.00 : 72edc0: 4c 8b 6b 20 mov 0x20(%rbx),%r13 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 72edc4: 4d 85 ed test %r13,%r13 0.00 : 72edc7: 0f 84 d2 f0 ff ff je 72de9f : : if (list_length(args) == 2 && 0.00 : 72edcd: 41 83 7d 04 02 cmpl $0x2,0x4(%r13) 0.00 : 72edd2: 0f 85 c7 f0 ff ff jne 72de9f 0.00 : 72edd8: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 72eddc: 48 8b 38 mov (%rax),%rdi 0.00 : 72eddf: e8 bc f1 ea ff callq 5ddfa0 0.00 : 72ede4: 81 38 48 01 00 00 cmpl $0x148,(%rax) 0.00 : 72edea: 0f 85 af f0 ff ff jne 72de9f : IsA(strip_implicit_coercions(linitial(args)), : CaseTestExpr)) : w = (Node *) lsecond(args); 0.00 : 72edf0: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 72edf4: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 72edf8: 48 8b 18 mov (%rax),%rbx 0.00 : 72edfb: e9 9f f0 ff ff jmpq 72de9f : { : Node *e = (Node *) lfirst(arg); : char *argname = strVal(lfirst(narg)); : : if (needcomma) : appendStringInfoString(buf, ", "); 0.00 : 72ee00: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ee07: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72ee0c: e8 3f 2f ea ff callq 5d1d50 0.00 : 72ee11: e9 6e fc ff ff jmpq 72ea84 0.00 : 72ee16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 72ee1d: 00 00 00 : 0, 0, 0); : get_rule_expr(w, context, false); : appendStringInfoString(buf, " THEN "); : get_rule_expr((Node *) when->result, context, true); : } : if (!PRETTY_INDENT(context)) 0.00 : 72ee20: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 72ee27: f6 42 20 02 testb $0x2,0x20(%rdx) 0.00 : 72ee2b: 0f 84 c7 03 00 00 je 72f1f8 : appendStringInfoChar(buf, ' '); : appendContextKeyword(context, "ELSE ", 0.00 : 72ee31: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 72ee38: 45 31 c0 xor %r8d,%r8d 0.00 : 72ee3b: 31 c9 xor %ecx,%ecx 0.00 : 72ee3d: 31 d2 xor %edx,%edx 0.00 : 72ee3f: be 1e 6d 8c 00 mov $0x8c6d1e,%esi 0.00 : 72ee44: e8 d7 e6 ff ff callq 72d520 : 0, 0, 0); : get_rule_expr((Node *) caseexpr->defresult, context, true); 0.00 : 72ee49: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72ee50: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72ee57: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72ee5c: 48 8b 79 20 mov 0x20(%rcx),%rdi 0.00 : 72ee60: e8 6b ea ff ff callq 72d8d0 : if (!PRETTY_INDENT(context)) 0.00 : 72ee65: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72ee6c: f6 40 20 02 testb $0x2,0x20(%rax) 0.00 : 72ee70: 75 11 jne 72ee83 : appendStringInfoChar(buf, ' '); 0.00 : 72ee72: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ee79: be 20 00 00 00 mov $0x20,%esi 0.00 : 72ee7e: e8 0d 2e ea ff callq 5d1c90 : appendContextKeyword(context, "END", 0.00 : 72ee83: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 72ee8a: 45 31 c0 xor %r8d,%r8d 0.00 : 72ee8d: 31 c9 xor %ecx,%ecx 0.00 : 72ee8f: ba fc ff ff ff mov $0xfffffffc,%edx 0.00 : 72ee94: be 19 6a 7b 00 mov $0x7b6a19,%esi 0.00 : 72ee99: e8 82 e6 ff ff callq 72d520 : -PRETTYINDENT_VAR, 0, 0); : } : break; 0.00 : 72ee9e: e9 05 ec ff ff jmpq 72daa8 : sep = ", "; : } : i++; : } : : ReleaseTupleDesc(tupdesc); 0.00 : 72eea3: 41 8b 55 24 mov 0x24(%r13),%edx 0.00 : 72eea7: 85 d2 test %edx,%edx 0.00 : 72eea9: 78 0a js 72eeb5 0.00 : 72eeab: 4c 89 ef mov %r13,%rdi 0.00 : 72eeae: 66 90 xchg %ax,%ax 0.00 : 72eeb0: e8 cb 5a d4 ff callq 474980 : } : appendStringInfoChar(buf, ')'); 0.00 : 72eeb5: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72eebc: be 29 00 00 00 mov $0x29,%esi 0.00 : 72eec1: e8 ca 2d ea ff callq 5d1c90 : if (rowexpr->row_format == COERCE_EXPLICIT_CAST) 0.00 : 72eec6: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72eecd: 83 79 14 01 cmpl $0x1,0x14(%rcx) 0.00 : 72eed1: 0f 85 d1 eb ff ff jne 72daa8 : appendStringInfo(buf, "::%s", 0.00 : 72eed7: 8b 79 10 mov 0x10(%rcx),%edi 0.00 : 72eeda: e9 d5 f8 ff ff jmpq 72e7b4 : IsA(expr, Aggref) || : IsA(expr, Param)); : if (need_paren) : appendStringInfoChar(context->buf, '('); : : get_rule_expr(expr, context, false); 0.00 : 72eedf: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72eee6: 31 d2 xor %edx,%edx 0.00 : 72eee8: 48 89 df mov %rbx,%rdi 0.00 : 72eeeb: e8 e0 e9 ff ff callq 72d8d0 0.00 : 72eef0: e9 1e eb ff ff jmpq 72da13 : BooleanTest *btest = (BooleanTest *) node; : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); : get_rule_expr_paren((Node *) btest->arg, context, false, node); : switch (btest->booltesttype) 0.00 : 72eef5: 8b 40 10 mov 0x10(%rax),%eax 0.00 : 72eef8: ff 24 c5 88 85 8c 00 jmpq *0x8c8588(,%rax,8) : break; : case IS_UNKNOWN: : appendStringInfoString(buf, " IS UNKNOWN"); : break; : case IS_NOT_UNKNOWN: : appendStringInfoString(buf, " IS NOT UNKNOWN"); 0.00 : 72eeff: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ef06: be 9c 6e 8c 00 mov $0x8c6e9c,%esi 0.00 : 72ef0b: e8 40 2e ea ff callq 5d1d50 : break; 0.00 : 72ef10: e9 c3 f9 ff ff jmpq 72e8d8 : break; : case IS_NOT_FALSE: : appendStringInfoString(buf, " IS NOT FALSE"); : break; : case IS_UNKNOWN: : appendStringInfoString(buf, " IS UNKNOWN"); 0.00 : 72ef15: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ef1c: be 90 6e 8c 00 mov $0x8c6e90,%esi 0.00 : 72ef21: e8 2a 2e ea ff callq 5d1d50 : break; 0.00 : 72ef26: e9 ad f9 ff ff jmpq 72e8d8 : break; : case IS_FALSE: : appendStringInfoString(buf, " IS FALSE"); : break; : case IS_NOT_FALSE: : appendStringInfoString(buf, " IS NOT FALSE"); 0.00 : 72ef2b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ef32: be 82 6e 8c 00 mov $0x8c6e82,%esi 0.00 : 72ef37: e8 14 2e ea ff callq 5d1d50 : break; 0.00 : 72ef3c: e9 97 f9 ff ff jmpq 72e8d8 : break; : case IS_NOT_TRUE: : appendStringInfoString(buf, " IS NOT TRUE"); : break; : case IS_FALSE: : appendStringInfoString(buf, " IS FALSE"); 0.00 : 72ef41: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ef48: be 78 6e 8c 00 mov $0x8c6e78,%esi 0.00 : 72ef4d: e8 fe 2d ea ff callq 5d1d50 : break; 0.00 : 72ef52: e9 81 f9 ff ff jmpq 72e8d8 : { : case IS_TRUE: : appendStringInfoString(buf, " IS TRUE"); : break; : case IS_NOT_TRUE: : appendStringInfoString(buf, " IS NOT TRUE"); 0.00 : 72ef57: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ef5e: be 6b 6e 8c 00 mov $0x8c6e6b,%esi 0.00 : 72ef63: e8 e8 2d ea ff callq 5d1d50 : break; 0.00 : 72ef68: e9 6b f9 ff ff jmpq 72e8d8 : appendStringInfoChar(buf, '('); : get_rule_expr_paren((Node *) btest->arg, context, false, node); : switch (btest->booltesttype) : { : case IS_TRUE: : appendStringInfoString(buf, " IS TRUE"); 0.00 : 72ef6d: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ef74: be 62 6e 8c 00 mov $0x8c6e62,%esi 0.00 : 72ef79: e8 d2 2d ea ff callq 5d1d50 : break; 0.00 : 72ef7e: e9 55 f9 ff ff jmpq 72e8d8 : : case T_MinMaxExpr: : { : MinMaxExpr *minmaxexpr = (MinMaxExpr *) node; : : switch (minmaxexpr->op) 0.00 : 72ef83: 83 e8 01 sub $0x1,%eax 0.00 : 72ef86: 0f 85 72 f6 ff ff jne 72e5fe : { : case IS_GREATEST: : appendStringInfoString(buf, "GREATEST("); : break; : case IS_LEAST: : appendStringInfoString(buf, "LEAST("); 0.00 : 72ef8c: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72ef93: be 61 6d 8c 00 mov $0x8c6d61,%esi 0.00 : 72ef98: e8 b3 2d ea ff callq 5d1d50 0.00 : 72ef9d: e9 5c f6 ff ff jmpq 72e5fe : NullTest *ntest = (NullTest *) node; : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); : get_rule_expr_paren((Node *) ntest->arg, context, true, node); : switch (ntest->nulltesttype) 0.00 : 72efa2: 83 e8 01 sub $0x1,%eax 0.00 : 72efa5: 0f 84 a8 01 00 00 je 72f153 : break; : case IS_NOT_NULL: : appendStringInfoString(buf, " IS NOT NULL"); : break; : default: : elog(ERROR, "unrecognized nulltesttype: %d", 0.00 : 72efab: ba 18 8a 8c 00 mov $0x8c8a18,%edx 0.00 : 72efb0: be 4d 1d 00 00 mov $0x1d4d,%esi 0.00 : 72efb5: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72efba: e8 61 c4 04 00 callq 77b420 0.00 : 72efbf: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72efc6: be 3e a4 88 00 mov $0x88a43e,%esi 0.00 : 72efcb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72efd0: 31 c0 xor %eax,%eax 0.00 : 72efd2: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : 72efd5: e8 56 c2 04 00 callq 77b230 0.00 : 72efda: e8 f1 a4 d3 ff callq 4694d0 : * that appears elsewhere in EXPLAIN's result. : */ : if (subplan->useHashTable) : appendStringInfo(buf, "(hashed %s)", subplan->plan_name); : else : appendStringInfo(buf, "(%s)", subplan->plan_name); 0.00 : 72efdf: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72efe6: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72efed: be 14 72 8c 00 mov $0x8c7214,%esi 0.00 : 72eff2: 31 c0 xor %eax,%eax 0.00 : 72eff4: 48 8b 51 20 mov 0x20(%rcx),%rdx 0.00 : 72eff8: e8 13 2e ea ff callq 5d1e10 0.00 : 72effd: e9 a6 ea ff ff jmpq 72daa8 : (int) nodeTag(sublink->testexpr)); : } : : need_paren = true; : : switch (sublink->subLinkType) 0.00 : 72f002: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 72f005: ff 24 c5 b8 85 8c 00 jmpq *0x8c85b8(,%rax,8) : } : : if (need_paren) : appendStringInfoChar(buf, '('); : : get_query_def(query, buf, context->namespaces, NULL, 0.00 : 72f00c: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72f013: 4c 89 f6 mov %r14,%rsi 0.00 : 72f016: 4c 89 ff mov %r15,%rdi 0.00 : 72f019: 31 c9 xor %ecx,%ecx 0.00 : 72f01b: 44 8b 48 24 mov 0x24(%rax),%r9d 0.00 : 72f01f: 44 8b 40 20 mov 0x20(%rax),%r8d 0.00 : 72f023: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72f027: 8b 40 28 mov 0x28(%rax),%eax 0.00 : 72f02a: 89 04 24 mov %eax,(%rsp) 0.00 : 72f02d: e8 8e 23 00 00 callq 7313c0 : context->indentLevel); : : if (need_paren) : appendStringInfoString(buf, "))"); : else : appendStringInfoChar(buf, ')'); 0.00 : 72f032: be 29 00 00 00 mov $0x29,%esi 0.00 : 72f037: 4c 89 f7 mov %r14,%rdi 0.00 : 72f03a: e8 51 2c ea ff callq 5d1c90 0.00 : 72f03f: e9 64 ea ff ff jmpq 72daa8 : case ALL_SUBLINK: : appendStringInfo(buf, " %s ALL ", opname); : break; : : case ROWCOMPARE_SUBLINK: : appendStringInfo(buf, " %s ", opname); 0.00 : 72f044: 4c 89 e2 mov %r12,%rdx 0.00 : 72f047: be e7 73 8c 00 mov $0x8c73e7,%esi 0.00 : 72f04c: 4c 89 f7 mov %r14,%rdi 0.00 : 72f04f: 31 c0 xor %eax,%eax 0.00 : 72f051: e8 ba 2d ea ff callq 5d1e10 : (int) sublink->subLinkType); : break; : } : : if (need_paren) : appendStringInfoChar(buf, '('); 0.00 : 72f056: 4c 89 f7 mov %r14,%rdi 0.00 : 72f059: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f05e: e8 2d 2c ea ff callq 5d1c90 : : get_query_def(query, buf, context->namespaces, NULL, 0.00 : 72f063: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72f06a: 4c 89 f6 mov %r14,%rsi 0.00 : 72f06d: 4c 89 ff mov %r15,%rdi 0.00 : 72f070: 31 c9 xor %ecx,%ecx 0.00 : 72f072: 44 8b 48 24 mov 0x24(%rax),%r9d 0.00 : 72f076: 44 8b 40 20 mov 0x20(%rax),%r8d 0.00 : 72f07a: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72f07e: 8b 40 28 mov 0x28(%rax),%eax 0.00 : 72f081: 89 04 24 mov %eax,(%rsp) 0.00 : 72f084: e8 37 23 00 00 callq 7313c0 : context->prettyFlags, context->wrapColumn, : context->indentLevel); : : if (need_paren) : appendStringInfoString(buf, "))"); 0.00 : 72f089: be 4a 6d 8c 00 mov $0x8c6d4a,%esi 0.00 : 72f08e: 4c 89 f7 mov %r14,%rdi 0.00 : 72f091: e8 ba 2c ea ff callq 5d1d50 0.00 : 72f096: e9 0d ea ff ff jmpq 72daa8 : case EXISTS_SUBLINK: : appendStringInfoString(buf, "EXISTS "); : break; : : case ANY_SUBLINK: : if (strcmp(opname, "=") == 0) /* Represent = ANY as IN */ 0.00 : 72f09b: 41 80 3c 24 3d cmpb $0x3d,(%r12) 0.00 : 72f0a0: 0f 85 ce 06 00 00 jne 72f774 0.00 : 72f0a6: 41 80 7c 24 01 00 cmpb $0x0,0x1(%r12) 0.00 : 72f0ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 72f0b0: 0f 85 be 06 00 00 jne 72f774 : appendStringInfoString(buf, " IN "); 0.00 : 72f0b6: be f7 7c 89 00 mov $0x897cf7,%esi 0.00 : 72f0bb: 4c 89 f7 mov %r14,%rdi 0.00 : 72f0be: e8 8d 2c ea ff callq 5d1d50 0.00 : 72f0c3: eb 91 jmp 72f056 : else : appendStringInfo(buf, " %s ANY ", opname); : break; : : case ALL_SUBLINK: : appendStringInfo(buf, " %s ALL ", opname); 0.00 : 72f0c5: 4c 89 e2 mov %r12,%rdx 0.00 : 72f0c8: be bf 6c 8c 00 mov $0x8c6cbf,%esi 0.00 : 72f0cd: 4c 89 f7 mov %r14,%rdi 0.00 : 72f0d0: 31 c0 xor %eax,%eax 0.00 : 72f0d2: e8 39 2d ea ff callq 5d1e10 0.00 : 72f0d7: e9 7a ff ff ff jmpq 72f056 : need_paren = true; : : switch (sublink->subLinkType) : { : case EXISTS_SUBLINK: : appendStringInfoString(buf, "EXISTS "); 0.00 : 72f0dc: be ae 6c 8c 00 mov $0x8c6cae,%esi 0.00 : 72f0e1: 4c 89 f7 mov %r14,%rdi 0.00 : 72f0e4: e8 67 2c ea ff callq 5d1d50 0.00 : 72f0e9: e9 68 ff ff ff jmpq 72f056 : case IS_DOCUMENT: : break; : } : if (xexpr->op == IS_XMLPARSE || xexpr->op == IS_XMLSERIALIZE) : { : if (xexpr->xmloption == XMLOPTION_DOCUMENT) 0.00 : 72f0ee: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72f0f5: 8b 40 28 mov 0x28(%rax),%eax 0.00 : 72f0f8: 85 c0 test %eax,%eax 0.00 : 72f0fa: 0f 85 5f 03 00 00 jne 72f45f : appendStringInfoString(buf, "DOCUMENT "); 0.00 : 72f100: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f107: be b2 6d 8c 00 mov $0x8c6db2,%esi 0.00 : 72f10c: e8 3f 2c ea ff callq 5d1d50 0.00 : 72f111: e9 a4 f8 ff ff jmpq 72e9ba : { : BoolExpr *expr = (BoolExpr *) node; : Node *first_arg = linitial(expr->args); : ListCell *arg = lnext(list_head(expr->args)); : : switch (expr->boolop) 0.00 : 72f116: 83 f8 02 cmp $0x2,%eax 0.00 : 72f119: 0f 84 56 03 00 00 je 72f475 : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, ')'); : break; : : default: : elog(ERROR, "unrecognized boolop: %d", 0.00 : 72f11f: ba 18 8a 8c 00 mov $0x8c8a18,%edx 0.00 : 72f124: be e9 1a 00 00 mov $0x1ae9,%esi 0.00 : 72f129: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72f12e: e8 ed c2 04 00 callq 77b420 0.00 : 72f133: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72f13a: be dd 31 87 00 mov $0x8731dd,%esi 0.00 : 72f13f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72f144: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 72f147: 31 c0 xor %eax,%eax 0.00 : 72f149: e8 e2 c0 04 00 callq 77b230 0.00 : 72f14e: e8 7d a3 d3 ff callq 4694d0 : { : case IS_NULL: : appendStringInfoString(buf, " IS NULL"); : break; : case IS_NOT_NULL: : appendStringInfoString(buf, " IS NOT NULL"); 0.00 : 72f153: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f15a: be c2 61 8c 00 mov $0x8c61c2,%esi 0.00 : 72f15f: e8 ec 2b ea ff callq 5d1d50 : break; 0.00 : 72f164: e9 6f f7 ff ff jmpq 72e8d8 : StringInfo buf = context->buf; : Oid opno = expr->opno; : List *args = expr->args; : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f169: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f16e: 4c 89 ff mov %r15,%rdi 0.00 : 72f171: e8 1a 2b ea ff callq 5d1c90 0.00 : 72f176: e9 93 ea ff ff jmpq 72dc0e : { : CollateExpr *collate = (CollateExpr *) node; : Node *arg = (Node *) collate->arg; : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f17b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f182: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f187: e8 04 2b ea ff callq 5d1c90 0.00 : 72f18c: e9 c1 eb ff ff jmpq 72dd52 : * WRONG to not parenthesize a Var argument; simplicity is not : * the issue here, having the right number of names is. : */ : need_parens = !IsA(arg, ArrayRef) &&!IsA(arg, FieldSelect); : if (need_parens) : appendStringInfoChar(buf, '('); 0.00 : 72f191: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f198: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f19d: e8 ee 2a ea ff callq 5d1c90 : get_rule_expr(arg, context, true); 0.00 : 72f1a2: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f1a9: 48 89 df mov %rbx,%rdi 0.00 : 72f1ac: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72f1b1: e8 1a e7 ff ff callq 72d8d0 : if (need_parens) : appendStringInfoChar(buf, ')'); 0.00 : 72f1b6: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f1bd: be 29 00 00 00 mov $0x29,%esi 0.00 : 72f1c2: e8 c9 2a ea ff callq 5d1c90 0.00 : 72f1c7: e9 fb ed ff ff jmpq 72dfc7 : case T_BooleanTest: : { : BooleanTest *btest = (BooleanTest *) node; : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f1cc: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f1d3: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f1d8: e8 b3 2a ea ff callq 5d1c90 0.00 : 72f1dd: e9 08 f6 ff ff jmpq 72e7ea : List *args = expr->args; : Node *arg1 = (Node *) linitial(args); : Node *arg2 = (Node *) lsecond(args); : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f1e2: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f1e9: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f1ee: e8 9d 2a ea ff callq 5d1c90 0.00 : 72f1f3: e9 88 ee ff ff jmpq 72e080 : get_rule_expr(w, context, false); : appendStringInfoString(buf, " THEN "); : get_rule_expr((Node *) when->result, context, true); : } : if (!PRETTY_INDENT(context)) : appendStringInfoChar(buf, ' '); 0.00 : 72f1f8: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f1ff: be 20 00 00 00 mov $0x20,%esi 0.00 : 72f204: e8 87 2a ea ff callq 5d1c90 0.00 : 72f209: e9 23 fc ff ff jmpq 72ee31 : List *args = expr->args; : Node *arg1 = (Node *) linitial(args); : Node *arg2 = (Node *) lsecond(args); : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f20e: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f215: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f21a: e8 71 2a ea ff callq 5d1c90 0.00 : 72f21f: e9 a3 ea ff ff jmpq 72dcc7 : case T_NullTest: : { : NullTest *ntest = (NullTest *) node; : : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f224: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f22b: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f230: e8 5b 2a ea ff callq 5d1c90 0.00 : 72f235: e9 55 f6 ff ff jmpq 72e88f : Query *query = (Query *) (sublink->subselect); : char *opname = NULL; : bool need_paren; : : if (sublink->subLinkType == ARRAY_SUBLINK) : appendStringInfoString(buf, "ARRAY("); 0.00 : 72f23a: be a7 6c 8c 00 mov $0x8c6ca7,%esi 0.00 : 72f23f: 4c 89 f7 mov %r14,%rdi 0.00 : 72f242: e8 09 2b ea ff callq 5d1d50 0.00 : 72f247: e9 d0 ef ff ff jmpq 72e21c : case T_CoerceToDomain: : { : CoerceToDomain *ctest = (CoerceToDomain *) node; : Node *arg = (Node *) ctest->arg; : : if (ctest->coercionformat == COERCE_IMPLICIT_CAST && 0.00 : 72f24c: 45 84 e4 test %r12b,%r12b 0.00 : 72f24f: 0f 85 08 f6 ff ff jne 72e85d : !showimplicit) : { : /* don't show the implicit cast */ : get_rule_expr(arg, context, false); 0.00 : 72f255: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f25c: 31 d2 xor %edx,%edx 0.00 : 72f25e: e8 6d e6 ff ff callq 72d8d0 0.00 : 72f263: e9 40 e8 ff ff jmpq 72daa8 : case T_RelabelType: : { : RelabelType *relabel = (RelabelType *) node; : Node *arg = (Node *) relabel->arg; : : if (relabel->relabelformat == COERCE_IMPLICIT_CAST && 0.00 : 72f268: 45 84 e4 test %r12b,%r12b 0.00 : 72f26b: 0f 85 ea f3 ff ff jne 72e65b : : if (acoerce->coerceformat == COERCE_IMPLICIT_CAST && : !showimplicit) : { : /* don't show the implicit cast */ : get_rule_expr_paren(arg, context, false, node); 0.00 : 72f271: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f278: 48 89 c1 mov %rax,%rcx 0.00 : 72f27b: 31 d2 xor %edx,%edx 0.00 : 72f27d: e8 0e 06 00 00 callq 72f890 0.00 : 72f282: e9 21 e8 ff ff jmpq 72daa8 : case T_ArrayCoerceExpr: : { : ArrayCoerceExpr *acoerce = (ArrayCoerceExpr *) node; : Node *arg = (Node *) acoerce->arg; : : if (acoerce->coerceformat == COERCE_IMPLICIT_CAST && 0.00 : 72f287: 45 84 e4 test %r12b,%r12b 0.00 : 72f28a: 0f 85 38 f4 ff ff jne 72e6c8 0.00 : 72f290: eb df jmp 72f271 : if (IsA(sublink->testexpr, OpExpr)) : { : /* single combining operator */ : OpExpr *opexpr = (OpExpr *) sublink->testexpr; : : get_rule_expr(linitial(opexpr->args), context, true); 0.00 : 72f292: 48 8b 43 20 mov 0x20(%rbx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 72f296: 31 c9 xor %ecx,%ecx 0.00 : 72f298: 48 85 c0 test %rax,%rax 0.00 : 72f29b: 74 04 je 72f2a1 0.00 : 72f29d: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 72f2a1: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f2a8: 48 8b 39 mov (%rcx),%rdi 0.00 : 72f2ab: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72f2b0: e8 1b e6 ff ff callq 72d8d0 : opname = generate_operator_name(opexpr->opno, 0.00 : 72f2b5: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 72f2b9: 31 d2 xor %edx,%edx 0.00 : 72f2bb: 48 85 c0 test %rax,%rax 0.00 : 72f2be: 74 04 je 72f2c4 0.00 : 72f2c0: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72f2c4: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72f2c8: 48 8b 38 mov (%rax),%rdi 0.00 : 72f2cb: e8 00 1a eb ff callq 5e0cd0 0.00 : 72f2d0: 41 89 c4 mov %eax,%r12d 0.00 : 72f2d3: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 72f2d7: 31 d2 xor %edx,%edx 0.00 : 72f2d9: 48 85 c0 test %rax,%rax 0.00 : 72f2dc: 74 04 je 72f2e2 0.00 : 72f2de: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72f2e2: 48 8b 3a mov (%rdx),%rdi 0.00 : 72f2e5: e8 e6 19 eb ff callq 5e0cd0 0.00 : 72f2ea: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 72f2ed: 44 89 e2 mov %r12d,%edx 0.00 : 72f2f0: 89 c6 mov %eax,%esi 0.00 : 72f2f2: e8 39 e3 ff ff callq 72d630 0.00 : 72f2f7: 49 89 c4 mov %rax,%r12 0.00 : 72f2fa: e9 d5 ef ff ff jmpq 72e2d4 0.00 : 72f2ff: 48 8b 43 08 mov 0x8(%rbx),%rax : { : /* binary operator */ : Node *arg1 = (Node *) linitial(args); : Node *arg2 = (Node *) lsecond(args); : : get_rule_expr_paren(arg1, context, true, (Node *) expr); 0.00 : 72f303: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f30a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72f30f: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); : if (list_length(args) == 2) : { : /* binary operator */ : Node *arg1 = (Node *) linitial(args); 0.00 : 72f316: 4c 8b 20 mov (%rax),%r12 : Node *arg2 = (Node *) lsecond(args); 0.00 : 72f319: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 72f31d: 4c 8b 28 mov (%rax),%r13 : : get_rule_expr_paren(arg1, context, true, (Node *) expr); 0.00 : 72f320: 4c 89 e7 mov %r12,%rdi 0.00 : 72f323: e8 68 05 00 00 callq 72f890 : appendStringInfo(buf, " %s ", 0.00 : 72f328: 4c 89 ef mov %r13,%rdi 0.00 : 72f32b: e8 a0 19 eb ff callq 5e0cd0 0.00 : 72f330: 4c 89 e7 mov %r12,%rdi 0.00 : 72f333: 89 c3 mov %eax,%ebx 0.00 : 72f335: e8 96 19 eb ff callq 5e0cd0 0.00 : 72f33a: 89 da mov %ebx,%edx 0.00 : 72f33c: 89 c6 mov %eax,%esi 0.00 : 72f33e: 44 89 f7 mov %r14d,%edi 0.00 : 72f341: e8 ea e2 ff ff callq 72d630 0.00 : 72f346: be e7 73 8c 00 mov $0x8c73e7,%esi 0.00 : 72f34b: 48 89 c2 mov %rax,%rdx 0.00 : 72f34e: 4c 89 ff mov %r15,%rdi 0.00 : 72f351: 31 c0 xor %eax,%eax 0.00 : 72f353: e8 b8 2a ea ff callq 5d1e10 : generate_operator_name(opno, : exprType(arg1), : exprType(arg2))); : get_rule_expr_paren(arg2, context, true, (Node *) expr); 0.00 : 72f358: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f35f: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f366: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72f36b: 4c 89 ef mov %r13,%rdi 0.00 : 72f36e: e8 1d 05 00 00 callq 72f890 : default: : elog(ERROR, "bogus oprkind: %d", optup->oprkind); : } : ReleaseSysCache(tp); : } : if (!PRETTY_PAREN(context)) 0.00 : 72f373: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72f37a: f6 40 20 01 testb $0x1,0x20(%rax) 0.00 : 72f37e: 0f 85 24 e7 ff ff jne 72daa8 : appendStringInfoChar(buf, ')'); 0.00 : 72f384: be 29 00 00 00 mov $0x29,%esi 0.00 : 72f389: 4c 89 ff mov %r15,%rdi 0.00 : 72f38c: e8 ff 28 ea ff callq 5d1c90 0.00 : 72f391: e9 12 e7 ff ff jmpq 72daa8 : appendStringInfoChar(buf, ')'); : } : if (xexpr->args) : { : if (needcomma) : appendStringInfoString(buf, ", "); 0.00 : 72f396: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f39d: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72f3a2: e8 a9 29 ea ff callq 5d1d50 0.00 : 72f3a7: e9 6a f7 ff ff jmpq 72eb16 : * *must* parenthesize to avoid confusion.) : */ : need_parens = !IsA(aref->refexpr, Var) && : !IsA(aref->refexpr, FieldSelect); : if (need_parens) : appendStringInfoChar(buf, '('); 0.00 : 72f3ac: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f3b3: be 28 00 00 00 mov $0x28,%esi : get_rule_expr((Node *) aref->refexpr, context, showimplicit); 0.00 : 72f3b8: 45 0f be e4 movsbl %r12b,%r12d : * *must* parenthesize to avoid confusion.) : */ : need_parens = !IsA(aref->refexpr, Var) && : !IsA(aref->refexpr, FieldSelect); : if (need_parens) : appendStringInfoChar(buf, '('); 0.00 : 72f3bc: e8 cf 28 ea ff callq 5d1c90 : get_rule_expr((Node *) aref->refexpr, context, showimplicit); 0.00 : 72f3c1: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72f3c8: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f3cf: 44 89 e2 mov %r12d,%edx 0.00 : 72f3d2: 48 8b 78 28 mov 0x28(%rax),%rdi 0.00 : 72f3d6: e8 f5 e4 ff ff callq 72d8d0 : if (need_parens) : appendStringInfoChar(buf, ')'); 0.00 : 72f3db: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f3e2: be 29 00 00 00 mov $0x29,%esi 0.00 : 72f3e7: e8 a4 28 ea ff callq 5d1c90 0.00 : 72f3ec: e9 89 e7 ff ff jmpq 72db7a : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, ')'); : break; : : case OR_EXPR: : if (!PRETTY_PAREN(context)) 0.00 : 72f3f1: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 72f3f8: f6 41 20 01 testb $0x1,0x20(%rcx) 0.00 : 72f3fc: 0f 84 b5 03 00 00 je 72f7b7 : appendStringInfoChar(buf, '('); : get_rule_expr_paren(first_arg, context, 0.00 : 72f402: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f409: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f410: 31 d2 xor %edx,%edx 0.00 : 72f412: 4c 89 e7 mov %r12,%rdi 0.00 : 72f415: e8 76 04 00 00 callq 72f890 : false, node); : while (arg) 0.00 : 72f41a: 48 85 db test %rbx,%rbx 0.00 : 72f41d: 0f 84 b5 f4 ff ff je 72e8d8 0.00 : 72f423: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : appendStringInfoString(buf, " OR "); 0.00 : 72f428: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f42f: be cf 61 8c 00 mov $0x8c61cf,%esi 0.00 : 72f434: e8 17 29 ea ff callq 5d1d50 : get_rule_expr_paren((Node *) lfirst(arg), context, 0.00 : 72f439: 48 8b 3b mov (%rbx),%rdi 0.00 : 72f43c: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f443: 31 d2 xor %edx,%edx 0.00 : 72f445: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f44c: e8 3f 04 00 00 callq 72f890 : false, node); : arg = lnext(arg); 0.00 : 72f451: 48 8b 5b 08 mov 0x8(%rbx),%rbx : case OR_EXPR: : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); : get_rule_expr_paren(first_arg, context, : false, node); : while (arg) 0.00 : 72f455: 48 85 db test %rbx,%rbx 0.00 : 72f458: 75 ce jne 72f428 0.00 : 72f45a: e9 79 f4 ff ff jmpq 72e8d8 : if (xexpr->op == IS_XMLPARSE || xexpr->op == IS_XMLSERIALIZE) : { : if (xexpr->xmloption == XMLOPTION_DOCUMENT) : appendStringInfoString(buf, "DOCUMENT "); : else : appendStringInfoString(buf, "CONTENT "); 0.00 : 72f45f: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f466: be bc 6d 8c 00 mov $0x8c6dbc,%esi 0.00 : 72f46b: e8 e0 28 ea ff callq 5d1d50 0.00 : 72f470: e9 45 f5 ff ff jmpq 72e9ba : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, ')'); : break; : : case NOT_EXPR: : if (!PRETTY_PAREN(context)) 0.00 : 72f475: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 72f47c: f6 42 20 01 testb $0x1,0x20(%rdx) 0.00 : 72f480: 0f 84 05 03 00 00 je 72f78b : appendStringInfoChar(buf, '('); : appendStringInfoString(buf, "NOT "); 0.00 : 72f486: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f48d: be a2 6c 8c 00 mov $0x8c6ca2,%esi 0.00 : 72f492: e8 b9 28 ea ff callq 5d1d50 : get_rule_expr_paren(first_arg, context, 0.00 : 72f497: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f49e: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f4a5: 31 d2 xor %edx,%edx 0.00 : 72f4a7: 4c 89 e7 mov %r12,%rdi 0.00 : 72f4aa: e8 e1 03 00 00 callq 72f890 : false, node); : if (!PRETTY_PAREN(context)) 0.00 : 72f4af: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 72f4b6: f6 41 20 01 testb $0x1,0x20(%rcx) 0.00 : 72f4ba: 0f 85 e8 e5 ff ff jne 72daa8 0.00 : 72f4c0: e9 5b e8 ff ff jmpq 72dd20 : InvalidOid, : exprType(arg))); : get_rule_expr_paren(arg, context, true, (Node *) expr); : break; : case 'r': : get_rule_expr_paren(arg, context, true, (Node *) expr); 0.00 : 72f4c5: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f4cc: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f4d3: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72f4d8: 4c 89 ef mov %r13,%rdi 0.00 : 72f4db: e8 b0 03 00 00 callq 72f890 : appendStringInfo(buf, " %s", 0.00 : 72f4e0: 4c 89 ef mov %r13,%rdi 0.00 : 72f4e3: e8 e8 17 eb ff callq 5e0cd0 0.00 : 72f4e8: 31 d2 xor %edx,%edx 0.00 : 72f4ea: 89 c6 mov %eax,%esi 0.00 : 72f4ec: 44 89 f7 mov %r14d,%edi 0.00 : 72f4ef: e8 3c e1 ff ff callq 72d630 0.00 : 72f4f4: be 60 a7 8c 00 mov $0x8ca760,%esi 0.00 : 72f4f9: 48 89 c2 mov %rax,%rdx 0.00 : 72f4fc: 4c 89 ff mov %r15,%rdi 0.00 : 72f4ff: 31 c0 xor %eax,%eax 0.00 : 72f501: e8 0a 29 ea ff callq 5d1e10 : InvalidOid)); : break; : default: : elog(ERROR, "bogus oprkind: %d", optup->oprkind); : } : ReleaseSysCache(tp); 0.00 : 72f506: 4c 89 e7 mov %r12,%rdi 0.00 : 72f509: e8 a2 27 04 00 callq 771cb0 0.00 : 72f50e: e9 60 fe ff ff jmpq 72f373 : elog(ERROR, "cache lookup failed for operator %u", opno); : optup = (Form_pg_operator) GETSTRUCT(tp); : switch (optup->oprkind) : { : case 'l': : appendStringInfo(buf, "%s ", 0.00 : 72f513: 4c 89 ef mov %r13,%rdi 0.00 : 72f516: e8 b5 17 eb ff callq 5e0cd0 0.00 : 72f51b: 31 f6 xor %esi,%esi 0.00 : 72f51d: 44 89 f7 mov %r14d,%edi 0.00 : 72f520: 89 c2 mov %eax,%edx 0.00 : 72f522: e8 09 e1 ff ff callq 72d630 0.00 : 72f527: 4c 89 ff mov %r15,%rdi 0.00 : 72f52a: 48 89 c2 mov %rax,%rdx 0.00 : 72f52d: be e8 73 8c 00 mov $0x8c73e8,%esi 0.00 : 72f532: 31 c0 xor %eax,%eax 0.00 : 72f534: e8 d7 28 ea ff callq 5d1e10 : generate_operator_name(opno, : InvalidOid, : exprType(arg))); : get_rule_expr_paren(arg, context, true, (Node *) expr); 0.00 : 72f539: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f540: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f547: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72f54c: 4c 89 ef mov %r13,%rdi 0.00 : 72f54f: e8 3c 03 00 00 callq 72f890 0.00 : 72f554: eb b0 jmp 72f506 : if (xexpr->named_args) : { : if (xexpr->op != IS_XMLFOREST) : { : if (needcomma) : appendStringInfoString(buf, ", "); 0.00 : 72f556: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f55d: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72f562: e8 e9 27 ea ff callq 5d1d50 0.00 : 72f567: e9 ad f4 ff ff jmpq 72ea19 : break; : } : : } : if (xexpr->op == IS_XMLSERIALIZE) : appendStringInfo(buf, " AS %s", 0.00 : 72f56c: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72f573: 8b 70 30 mov 0x30(%rax),%esi 0.00 : 72f576: 8b 78 2c mov 0x2c(%rax),%edi 0.00 : 72f579: e8 62 9e fa ff callq 6d93e0 0.00 : 72f57e: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f585: 48 89 c2 mov %rax,%rdx 0.00 : 72f588: be dc 6d 8c 00 mov $0x8c6ddc,%esi 0.00 : 72f58d: 31 c0 xor %eax,%eax 0.00 : 72f58f: e8 7c 28 ea ff callq 5d1e10 0.00 : 72f594: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72f59b: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 72f59e: e9 be f5 ff ff jmpq 72eb61 : * either hopelessly confusing or an even poorer : * representation of what the plan is actually doing. : */ : need_parens = (list_length(fstore->newvals) != 1); : if (need_parens) : appendStringInfoString(buf, "ROW("); 0.00 : 72f5a3: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f5aa: be 45 6d 8c 00 mov $0x8c6d45,%esi 0.00 : 72f5af: e8 9c 27 ea ff callq 5d1d50 : get_rule_expr((Node *) fstore->newvals, context, showimplicit); 0.00 : 72f5b4: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f5bb: 41 0f be d4 movsbl %r12b,%edx 0.00 : 72f5bf: 48 8b 79 10 mov 0x10(%rcx),%rdi 0.00 : 72f5c3: e9 02 f0 ff ff jmpq 72e5ca : needcomma = true; : } : if (xexpr->op != IS_XMLFOREST) : appendStringInfoChar(buf, ')'); : } : if (xexpr->args) 0.00 : 72f5c8: 8b 52 04 mov 0x4(%rdx),%edx 0.00 : 72f5cb: e9 86 f5 ff ff jmpq 72eb56 : break; : : case T_BoolExpr: : { : BoolExpr *expr = (BoolExpr *) node; : Node *first_arg = linitial(expr->args); 0.00 : 72f5d0: 4c 8b 20 mov (%rax),%r12 0.00 : 72f5d3: 31 c0 xor %eax,%eax 0.00 : 72f5d5: e9 7e eb ff ff jmpq 72e158 : : if (cexpr->cursor_name) : appendStringInfo(buf, "CURRENT OF %s", : quote_identifier(cexpr->cursor_name)); : else : appendStringInfo(buf, "CURRENT OF $%d", 0.00 : 72f5da: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f5e1: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f5e8: be ba 6e 8c 00 mov $0x8c6eba,%esi 0.00 : 72f5ed: 31 c0 xor %eax,%eax 0.00 : 72f5ef: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : 72f5f2: e8 19 28 ea ff callq 5d1e10 0.00 : 72f5f7: e9 ac e4 ff ff jmpq 72daa8 : } : : /* : * Not PARAM_EXEC, or couldn't find referent: just print $N. : */ : appendStringInfo(context->buf, "$%d", param->paramid); 0.00 : 72f5fc: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 72f603: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f60a: be fc 61 8c 00 mov $0x8c61fc,%esi 0.00 : 72f60f: 48 8b 38 mov (%rax),%rdi 0.00 : 72f612: 8b 51 08 mov 0x8(%rcx),%edx 0.00 : 72f615: 31 c0 xor %eax,%eax 0.00 : 72f617: e8 f4 27 ea ff callq 5d1e10 0.00 : 72f61c: e9 87 e4 ff ff jmpq 72daa8 : exprType(linitial(rcexpr->largs)), : exprType(linitial(rcexpr->rargs))); : appendStringInfoChar(buf, ')'); : } : else : elog(ERROR, "unrecognized testexpr type: %d", 0.00 : 72f621: 45 31 e4 xor %r12d,%r12d 0.00 : 72f624: e9 ab ec ff ff jmpq 72e2d4 : : case T_ScalarArrayOpExpr: : { : ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) node; : List *args = expr->args; : Node *arg1 = (Node *) linitial(args); 0.00 : 72f629: 4c 8b 28 mov (%rax),%r13 0.00 : 72f62c: 31 c0 xor %eax,%eax 0.00 : 72f62e: 66 90 xchg %ax,%ax 0.00 : 72f630: e9 33 ea ff ff jmpq 72e068 : * expression. : */ : if (IsA(aref->refexpr, CaseTestExpr)) : { : Assert(aref->refassgnexpr); : get_rule_expr((Node *) aref->refassgnexpr, 0.00 : 72f635: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f63c: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f643: 41 0f be d4 movsbl %r12b,%edx 0.00 : 72f647: 48 8b 79 30 mov 0x30(%rcx),%rdi 0.00 : 72f64b: e8 80 e2 ff ff callq 72d8d0 : context, showimplicit); : break; 0.00 : 72f650: e9 53 e4 ff ff jmpq 72daa8 : : case T_DistinctExpr: : { : DistinctExpr *expr = (DistinctExpr *) node; : List *args = expr->args; : Node *arg1 = (Node *) linitial(args); 0.00 : 72f655: 48 8b 18 mov (%rax),%rbx 0.00 : 72f658: 31 c0 xor %eax,%eax 0.00 : 72f65a: e9 50 e6 ff ff jmpq 72dcaf : get_rule_expr(refassgnexpr, context, showimplicit); : } : else : { : /* Just an ordinary array fetch, so print subscripts */ : printSubscripts(aref, context); 0.00 : 72f65f: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f666: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 72f66d: e8 1e 18 00 00 callq 730e90 0.00 : 72f672: e9 31 e4 ff ff jmpq 72daa8 : { : /* multiple combining operators, = or <> cases */ : char *sep; : ListCell *l; : : appendStringInfoChar(buf, '('); 0.00 : 72f677: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f67c: 4c 89 f7 mov %r14,%rdi 0.00 : 72f67f: e8 0c 26 ea ff callq 5d1c90 : sep = ""; : foreach(l, ((BoolExpr *) sublink->testexpr)->args) 0.00 : 72f684: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 72f68b: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 72f68f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 72f693: 48 85 c0 test %rax,%rax 0.00 : 72f696: 0f 84 87 01 00 00 je 72f823 0.00 : 72f69c: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 72f6a0: 48 85 db test %rbx,%rbx 0.00 : 72f6a3: 0f 84 7a 01 00 00 je 72f823 0.00 : 72f6a9: be 96 16 8e 00 mov $0x8e1696,%esi 0.00 : 72f6ae: 45 31 e4 xor %r12d,%r12d 0.00 : 72f6b1: eb 17 jmp 72f6ca 0.00 : 72f6b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 72f6b8: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 72f6bc: be 5c 51 7b 00 mov $0x7b515c,%esi 0.00 : 72f6c1: 48 85 db test %rbx,%rbx 0.00 : 72f6c4: 0f 84 fd eb ff ff je 72e2c7 : { : OpExpr *opexpr = (OpExpr *) lfirst(l); 0.00 : 72f6ca: 4c 8b 2b mov (%rbx),%r13 : : Assert(IsA(opexpr, OpExpr)); : appendStringInfoString(buf, sep); 0.00 : 72f6cd: 4c 89 f7 mov %r14,%rdi 0.00 : 72f6d0: e8 7b 26 ea ff callq 5d1d50 0.00 : 72f6d5: 31 c9 xor %ecx,%ecx : get_rule_expr(linitial(opexpr->args), context, true); 0.00 : 72f6d7: 49 8b 45 20 mov 0x20(%r13),%rax 0.00 : 72f6db: 48 85 c0 test %rax,%rax 0.00 : 72f6de: 74 04 je 72f6e4 0.00 : 72f6e0: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 72f6e4: 48 8b b5 38 ff ff ff mov -0xc8(%rbp),%rsi 0.00 : 72f6eb: 48 8b 39 mov (%rcx),%rdi 0.00 : 72f6ee: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72f6f3: e8 d8 e1 ff ff callq 72d8d0 : if (!opname) 0.00 : 72f6f8: 4d 85 e4 test %r12,%r12 0.00 : 72f6fb: 75 bb jne 72f6b8 : opname = generate_operator_name(opexpr->opno, 0.00 : 72f6fd: 49 8b 45 20 mov 0x20(%r13),%rax 0.00 : 72f701: 31 d2 xor %edx,%edx 0.00 : 72f703: 48 85 c0 test %rax,%rax 0.00 : 72f706: 74 04 je 72f70c 0.00 : 72f708: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72f70c: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 72f710: 48 8b 38 mov (%rax),%rdi 0.00 : 72f713: e8 b8 15 eb ff callq 5e0cd0 0.00 : 72f718: 41 89 c4 mov %eax,%r12d 0.00 : 72f71b: 49 8b 45 20 mov 0x20(%r13),%rax 0.00 : 72f71f: 31 d2 xor %edx,%edx 0.00 : 72f721: 48 85 c0 test %rax,%rax 0.00 : 72f724: 74 04 je 72f72a 0.00 : 72f726: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 72f72a: 48 8b 3a mov (%rdx),%rdi 0.00 : 72f72d: e8 9e 15 eb ff callq 5e0cd0 0.00 : 72f732: 41 8b 7d 04 mov 0x4(%r13),%edi 0.00 : 72f736: 44 89 e2 mov %r12d,%edx 0.00 : 72f739: 89 c6 mov %eax,%esi 0.00 : 72f73b: e8 f0 de ff ff callq 72d630 0.00 : 72f740: 49 89 c4 mov %rax,%r12 0.00 : 72f743: e9 70 ff ff ff jmpq 72f6b8 : * one column, but for simplicity we always print it. : */ : appendStringInfoString(buf, "ROW("); : sep = ""; : i = 0; : foreach(arg, rowexpr->args) 0.00 : 72f748: 31 db xor %ebx,%ebx 0.00 : 72f74a: be 96 16 8e 00 mov $0x8e1696,%esi 0.00 : 72f74f: e9 b8 ec ff ff jmpq 72e40c : Assert(!con->constisnull); : if (DatumGetBool(con->constvalue)) : appendStringInfoString(buf, : " PRESERVE WHITESPACE"); : else : appendStringInfoString(buf, 0.00 : 72f754: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f75b: be f8 6d 8c 00 mov $0x8c6df8,%esi 0.00 : 72f760: e8 eb 25 ea ff callq 5d1d50 0.00 : 72f765: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f76c: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 72f76f: e9 e2 f3 ff ff jmpq 72eb56 : : case ANY_SUBLINK: : if (strcmp(opname, "=") == 0) /* Represent = ANY as IN */ : appendStringInfoString(buf, " IN "); : else : appendStringInfo(buf, " %s ANY ", opname); 0.00 : 72f774: 4c 89 e2 mov %r12,%rdx 0.00 : 72f777: be b6 6c 8c 00 mov $0x8c6cb6,%esi 0.00 : 72f77c: 4c 89 f7 mov %r14,%rdi 0.00 : 72f77f: 31 c0 xor %eax,%eax 0.00 : 72f781: e8 8a 26 ea ff callq 5d1e10 0.00 : 72f786: e9 cb f8 ff ff jmpq 72f056 : appendStringInfoChar(buf, ')'); : break; : : case NOT_EXPR: : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f78b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f792: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f797: e8 f4 24 ea ff callq 5d1c90 0.00 : 72f79c: e9 e5 fc ff ff jmpq 72f486 : : switch (expr->boolop) : { : case AND_EXPR: : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f7a1: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f7a8: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f7ad: e8 de 24 ea ff callq 5d1c90 0.00 : 72f7b2: e9 cf e9 ff ff jmpq 72e186 : appendStringInfoChar(buf, ')'); : break; : : case OR_EXPR: : if (!PRETTY_PAREN(context)) : appendStringInfoChar(buf, '('); 0.00 : 72f7b7: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f7be: be 28 00 00 00 mov $0x28,%esi 0.00 : 72f7c3: e8 c8 24 ea ff callq 5d1c90 0.00 : 72f7c8: e9 35 fc ff ff jmpq 72f402 : case XML_STANDALONE_YES: : appendStringInfoString(buf, : ", STANDALONE YES"); : break; : case XML_STANDALONE_NO: : appendStringInfoString(buf, 0.00 : 72f7cd: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f7d4: be 26 6e 8c 00 mov $0x8c6e26,%esi 0.00 : 72f7d9: e8 72 25 ea ff callq 5d1d50 0.00 : 72f7de: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 72f7e5: 8b 50 04 mov 0x4(%rax),%edx : ", STANDALONE NO"); : break; 0.00 : 72f7e8: e9 69 f3 ff ff jmpq 72eb56 : : appendStringInfoString(buf, ", VERSION "); : con = (Const *) lsecond(xexpr->args); : if (IsA(con, Const) && : con->constisnull) : appendStringInfoString(buf, "NO VALUE"); 0.00 : 72f7ed: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f7f4: be 43 6e 8c 00 mov $0x8c6e43,%esi 0.00 : 72f7f9: e8 52 25 ea ff callq 5d1d50 : get_rule_expr((Node *) linitial(xexpr->args), : context, true); : : appendStringInfoString(buf, ", VERSION "); : con = (Const *) lsecond(xexpr->args); : if (IsA(con, Const) && 0.00 : 72f7fe: e9 91 f4 ff ff jmpq 72ec94 : case XML_STANDALONE_NO: : appendStringInfoString(buf, : ", STANDALONE NO"); : break; : case XML_STANDALONE_NO_VALUE: : appendStringInfoString(buf, 0.00 : 72f803: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 72f80a: be 36 6e 8c 00 mov $0x8c6e36,%esi 0.00 : 72f80f: e8 3c 25 ea ff callq 5d1d50 0.00 : 72f814: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f81b: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 72f81e: e9 33 f3 ff ff jmpq 72eb56 : char *sep; : ListCell *l; : : appendStringInfoChar(buf, '('); : sep = ""; : foreach(l, ((BoolExpr *) sublink->testexpr)->args) 0.00 : 72f823: 45 31 e4 xor %r12d,%r12d 0.00 : 72f826: e9 9c ea ff ff jmpq 72e2c7 : HeapTuple tp; : Form_pg_operator optup; : : tp = SearchSysCache1(OPEROID, ObjectIdGetDatum(opno)); : if (!HeapTupleIsValid(tp)) : elog(ERROR, "cache lookup failed for operator %u", opno); 0.00 : 72f82b: ba a1 8a 8c 00 mov $0x8c8aa1,%edx 0.00 : 72f830: be da 1d 00 00 mov $0x1dda,%esi 0.00 : 72f835: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72f83a: e8 e1 bb 04 00 callq 77b420 0.00 : 72f83f: 44 89 f2 mov %r14d,%edx 0.00 : 72f842: be 90 2b 7c 00 mov $0x7c2b90,%esi 0.00 : 72f847: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72f84c: 31 c0 xor %eax,%eax 0.00 : 72f84e: e8 dd b9 04 00 callq 77b230 0.00 : 72f853: e8 78 9c d3 ff callq 4694d0 : exprType(linitial(rcexpr->largs)), : exprType(linitial(rcexpr->rargs))); : appendStringInfoChar(buf, ')'); : } : else : elog(ERROR, "unrecognized testexpr type: %d", 0.00 : 72f858: ba b0 8a 8c 00 mov $0x8c8ab0,%edx 0.00 : 72f85d: be 0d 20 00 00 mov $0x200d,%esi 0.00 : 72f862: bf 1b 6c 8c 00 mov $0x8c6c1b,%edi 0.00 : 72f867: e8 b4 bb 04 00 callq 77b420 0.00 : 72f86c: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : 72f873: be 20 c6 88 00 mov $0x88c620,%esi 0.00 : 72f878: bf 14 00 00 00 mov $0x14,%edi 0.00 : 72f87d: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 72f881: 8b 10 mov (%rax),%edx 0.00 : 72f883: 31 c0 xor %eax,%eax 0.00 : 72f885: e8 a6 b9 04 00 callq 77b230 0.00 : 72f88a: e8 41 9c d3 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:718 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000737580 : : double : histogram_selectivity(VariableStatData *vardata, FmgrInfo *opproc, : Datum constval, bool varonleft, : int min_hist_size, int n_skip, : int *hist_size) : { 0.00 : 737580: 55 push %rbp 0.00 : 737581: 48 89 e5 mov %rsp,%rbp 0.00 : 737584: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 737588: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 73758c: 44 89 c3 mov %r8d,%ebx 0.00 : 73758f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 737593: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 737597: 49 89 fe mov %rdi,%r14 0.00 : 73759a: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 73759e: 48 83 c4 80 add $0xffffffffffffff80,%rsp 0.00 : 7375a2: 48 89 75 b8 mov %rsi,-0x48(%rbp) 0.00 : 7375a6: 48 89 55 b0 mov %rdx,-0x50(%rbp) : : /* check sanity of parameters */ : Assert(n_skip >= 0); : Assert(min_hist_size > 2 * n_skip); : : if (HeapTupleIsValid(vardata->statsTuple) && 0.00 : 7375aa: 48 8b 7f 10 mov 0x10(%rdi),%rdi : double : histogram_selectivity(VariableStatData *vardata, FmgrInfo *opproc, : Datum constval, bool varonleft, : int min_hist_size, int n_skip, : int *hist_size) : { 0.00 : 7375ae: 45 89 cd mov %r9d,%r13d 0.00 : 7375b1: 41 89 cf mov %ecx,%r15d : : /* check sanity of parameters */ : Assert(n_skip >= 0); : Assert(min_hist_size > 2 * n_skip); : : if (HeapTupleIsValid(vardata->statsTuple) && 0.00 : 7375b4: 48 85 ff test %rdi,%rdi 0.00 : 7375b7: 74 3f je 7375f8 0.00 : 7375b9: 48 8d 45 cc lea -0x34(%rbp),%rax 0.00 : 7375bd: 41 8b 56 28 mov 0x28(%r14),%edx 0.00 : 7375c1: 41 8b 76 24 mov 0x24(%r14),%esi 0.00 : 7375c5: 45 31 c9 xor %r9d,%r9d 0.00 : 7375c8: 45 31 c0 xor %r8d,%r8d 0.00 : 7375cb: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7375d0: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 7375d5: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 7375d9: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 7375e0: 00 00 0.00 : 7375e2: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 7375e9: 00 00 0.00 : 7375eb: 48 89 04 24 mov %rax,(%rsp) 0.00 : 7375ef: e8 dc c1 03 00 callq 7737d0 0.00 : 7375f4: 84 c0 test %al,%al 0.00 : 7375f6: 75 30 jne 737628 : result = -1; : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); : } : else : { : *hist_size = 0; 0.00 : 7375f8: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 7375fc: f2 0f 10 0d 54 af 08 movsd 0x8af54(%rip),%xmm1 # 7c2558 <__func__.23237+0x18> 0.00 : 737603: 00 0.00 : 737604: c7 00 00 00 00 00 movl $0x0,(%rax) : result = -1; : } : : return result; : } 0.00 : 73760a: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 73760e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 737612: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 737616: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 73761a: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 73761e: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 737622: c9 leaveq 0.00 : 737623: c3 retq 0.00 : 737624: 0f 1f 40 00 nopl 0x0(%rax) : STATISTIC_KIND_HISTOGRAM, InvalidOid, : NULL, : &values, &nvalues, : NULL, NULL)) : { : *hist_size = nvalues; 0.00 : 737628: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 73762b: 48 8b 45 10 mov 0x10(%rbp),%rax : if (nvalues >= min_hist_size) 0.00 : 73762f: 39 da cmp %ebx,%edx : STATISTIC_KIND_HISTOGRAM, InvalidOid, : NULL, : &values, &nvalues, : NULL, NULL)) : { : *hist_size = nvalues; 0.00 : 737631: 89 10 mov %edx,(%rax) : if (nvalues >= min_hist_size) 0.00 : 737633: 7c 6b jl 7376a0 : { : int nmatch = 0; : int i; : : for (i = n_skip; i < nvalues - n_skip; i++) 0.00 : 737635: 89 d0 mov %edx,%eax 0.00 : 737637: 45 31 e4 xor %r12d,%r12d 0.00 : 73763a: 44 89 eb mov %r13d,%ebx 0.00 : 73763d: 44 29 e8 sub %r13d,%eax 0.00 : 737640: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 737644: 41 39 c5 cmp %eax,%r13d 0.00 : 737647: 7c 3e jl 737687 0.00 : 737649: e9 87 00 00 00 jmpq 7376d5 0.00 : 73764e: 66 90 xchg %ax,%ax : { : if (varonleft ? 0.00 : 737650: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 737654: 48 63 d3 movslq %ebx,%rdx 0.00 : 737657: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 73765b: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 73765f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 737663: be 64 00 00 00 mov $0x64,%esi 0.00 : 737668: e8 c3 69 04 00 callq 77e030 : if (nvalues >= min_hist_size) : { : int nmatch = 0; : int i; : : for (i = n_skip; i < nvalues - n_skip; i++) 0.00 : 73766d: 8b 55 cc mov -0x34(%rbp),%edx : { : if (varonleft ? 0.00 : 737670: 84 c0 test %al,%al 0.00 : 737672: 0f 95 c0 setne %al : constval)) : : DatumGetBool(FunctionCall2Coll(opproc, : DEFAULT_COLLATION_OID, : constval, : values[i]))) : nmatch++; 0.00 : 737675: 3c 01 cmp $0x1,%al : if (nvalues >= min_hist_size) : { : int nmatch = 0; : int i; : : for (i = n_skip; i < nvalues - n_skip; i++) 0.00 : 737677: 89 d0 mov %edx,%eax : constval)) : : DatumGetBool(FunctionCall2Coll(opproc, : DEFAULT_COLLATION_OID, : constval, : values[i]))) : nmatch++; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:718 100.00 : 737679: 41 83 dc ff sbb $0xffffffff,%r12d : if (nvalues >= min_hist_size) : { : int nmatch = 0; : int i; : : for (i = n_skip; i < nvalues - n_skip; i++) 0.00 : 73767d: 83 c3 01 add $0x1,%ebx 0.00 : 737680: 44 29 e8 sub %r13d,%eax 0.00 : 737683: 39 d8 cmp %ebx,%eax 0.00 : 737685: 7e 49 jle 7376d0 : { : if (varonleft ? 0.00 : 737687: 45 84 ff test %r15b,%r15b 0.00 : 73768a: 75 c4 jne 737650 0.00 : 73768c: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 737690: 48 63 d3 movslq %ebx,%rdx 0.00 : 737693: 48 8b 0c d0 mov (%rax,%rdx,8),%rcx 0.00 : 737697: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 73769b: eb c2 jmp 73765f 0.00 : 73769d: 0f 1f 00 nopl (%rax) : NULL, : &values, &nvalues, : NULL, NULL)) : { : *hist_size = nvalues; : if (nvalues >= min_hist_size) 0.00 : 7376a0: f2 0f 10 0d b0 ae 08 movsd 0x8aeb0(%rip),%xmm1 # 7c2558 <__func__.23237+0x18> 0.00 : 7376a7: 00 : } : result = ((double) nmatch) / ((double) (nvalues - 2 * n_skip)); : } : else : result = -1; : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); 0.00 : 7376a8: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 7376ac: 41 8b 7e 24 mov 0x24(%r14),%edi 0.00 : 7376b0: 45 31 c0 xor %r8d,%r8d 0.00 : 7376b3: 31 c9 xor %ecx,%ecx 0.00 : 7376b5: f2 0f 11 4d a0 movsd %xmm1,-0x60(%rbp) 0.00 : 7376ba: e8 c1 b5 03 00 callq 772c80 : : /* check sanity of parameters */ : Assert(n_skip >= 0); : Assert(min_hist_size > 2 * n_skip); : : if (HeapTupleIsValid(vardata->statsTuple) && 0.00 : 7376bf: f2 0f 10 4d a0 movsd -0x60(%rbp),%xmm1 0.00 : 7376c4: e9 41 ff ff ff jmpq 73760a 0.00 : 7376c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (nvalues >= min_hist_size) : { : int nmatch = 0; : int i; : : for (i = n_skip; i < nvalues - n_skip; i++) 0.00 : 7376d0: f2 41 0f 2a cc cvtsi2sd %r12d,%xmm1 : DEFAULT_COLLATION_OID, : constval, : values[i]))) : nmatch++; : } : result = ((double) nmatch) / ((double) (nvalues - 2 * n_skip)); 0.00 : 7376d5: 43 8d 44 2d 00 lea 0x0(%r13,%r13,1),%eax 0.00 : 7376da: 89 d1 mov %edx,%ecx 0.00 : 7376dc: 29 c1 sub %eax,%ecx 0.00 : 7376de: f2 0f 2a c1 cvtsi2sd %ecx,%xmm0 0.00 : 7376e2: f2 0f 5e c8 divsd %xmm0,%xmm1 0.00 : 7376e6: eb c0 jmp 7376a8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:627 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:637 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:636 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007376f0 : : */ : double : mcv_selectivity(VariableStatData *vardata, FmgrInfo *opproc, : Datum constval, bool varonleft, : double *sumcommonp) : { 0.00 : 7376f0: 55 push %rbp 0.00 : 7376f1: 48 89 e5 mov %rsp,%rbp 0.00 : 7376f4: 41 57 push %r15 0.00 : 7376f6: 49 89 d7 mov %rdx,%r15 0.00 : 7376f9: 41 56 push %r14 0.00 : 7376fb: 41 89 ce mov %ecx,%r14d 0.00 : 7376fe: 41 55 push %r13 0.00 : 737700: 49 89 fd mov %rdi,%r13 0.00 : 737703: 41 54 push %r12 0.00 : 737705: 53 push %rbx 0.00 : 737706: 48 83 ec 68 sub $0x68,%rsp 0.00 : 73770a: 48 89 75 a0 mov %rsi,-0x60(%rbp) 0.00 : 73770e: 4c 89 45 98 mov %r8,-0x68(%rbp) : int i; : : mcv_selec = 0.0; : sumcommon = 0.0; : : if (HeapTupleIsValid(vardata->statsTuple) && 0.00 : 737712: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 737716: 48 85 ff test %rdi,%rdi 0.00 : 737719: 0f 84 d1 00 00 00 je 7377f0 0.00 : 73771f: 48 8d 45 d0 lea -0x30(%rbp),%rax 0.00 : 737723: 41 8b 55 28 mov 0x28(%r13),%edx 0.00 : 737727: 41 8b 75 24 mov 0x24(%r13),%esi 0.00 : 73772b: 45 31 c9 xor %r9d,%r9d 0.00 : 73772e: 45 31 c0 xor %r8d,%r8d 0.00 : 737731: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 737736: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 73773b: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 73773f: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 737744: 48 8d 45 d4 lea -0x2c(%rbp),%rax 0.00 : 737748: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 73774d: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : 737751: 48 89 04 24 mov %rax,(%rsp) 0.00 : 737755: e8 76 c0 03 00 callq 7737d0 0.00 : 73775a: 84 c0 test %al,%al 0.00 : 73775c: 0f 84 8e 00 00 00 je 7377f0 : STATISTIC_KIND_MCV, InvalidOid, : NULL, : &values, &nvalues, : &numbers, &nnumbers)) : { : for (i = 0; i < nvalues; i++) 0.00 : 737762: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 737765: 85 d2 test %edx,%edx 0.00 : 737767: 0f 8e d6 00 00 00 jle 737843 0.00 : 73776d: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 737771: 45 31 e4 xor %r12d,%r12d 0.00 : 737774: f2 0f 11 45 a8 movsd %xmm0,-0x58(%rbp) 0.00 : 737779: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) 0.00 : 73777e: eb 53 jmp 7377d3 : { : if (varonleft ? 0.00 : 737780: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 737784: 49 63 dc movslq %r12d,%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:627 33.33 : 737787: 4c 89 f9 mov %r15,%rcx 0.00 : 73778a: 48 8b 14 d8 mov (%rax,%rbx,8),%rdx 0.00 : 73778e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 737792: be 64 00 00 00 mov $0x64,%esi 0.00 : 737797: e8 94 68 04 00 callq 77e030 0.00 : 73779c: 84 c0 test %al,%al 0.00 : 73779e: 0f 95 c0 setne %al 0.00 : 7377a1: 84 c0 test %al,%al 0.00 : 7377a3: 75 7b jne 737820 0.00 : 7377a5: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 7377a9: 48 8d 04 9d 00 00 00 lea 0x0(,%rbx,4),%rax 0.00 : 7377b0: 00 : DatumGetBool(FunctionCall2Coll(opproc, : DEFAULT_COLLATION_OID, : constval, : values[i]))) : mcv_selec += numbers[i]; : sumcommon += numbers[i]; 0.00 : 7377b1: f3 0f 10 04 01 movss (%rcx,%rax,1),%xmm0 : STATISTIC_KIND_MCV, InvalidOid, : NULL, : &values, &nvalues, : &numbers, &nnumbers)) : { : for (i = 0; i < nvalues; i++) 0.00 : 7377b6: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 7377b9: 41 83 c4 01 add $0x1,%r12d : DatumGetBool(FunctionCall2Coll(opproc, : DEFAULT_COLLATION_OID, : constval, : values[i]))) : mcv_selec += numbers[i]; : sumcommon += numbers[i]; 0.00 : 7377bd: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 7377c0: f2 0f 58 45 b0 addsd -0x50(%rbp),%xmm0 : STATISTIC_KIND_MCV, InvalidOid, : NULL, : &values, &nvalues, : &numbers, &nnumbers)) : { : for (i = 0; i < nvalues; i++) 0.00 : 7377c5: 44 39 e2 cmp %r12d,%edx : DatumGetBool(FunctionCall2Coll(opproc, : DEFAULT_COLLATION_OID, : constval, : values[i]))) : mcv_selec += numbers[i]; : sumcommon += numbers[i]; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:637 33.33 : 7377c8: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) : STATISTIC_KIND_MCV, InvalidOid, : NULL, : &values, &nvalues, : &numbers, &nnumbers)) : { : for (i = 0; i < nvalues; i++) 0.00 : 7377cd: 0f 8e 85 00 00 00 jle 737858 : { : if (varonleft ? 0.00 : 7377d3: 45 84 f6 test %r14b,%r14b 0.00 : 7377d6: 75 a8 jne 737780 0.00 : 7377d8: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 7377dc: 49 63 dc movslq %r12d,%rbx 0.00 : 7377df: 4c 89 fa mov %r15,%rdx 0.00 : 7377e2: 48 8b 0c d8 mov (%rax,%rbx,8),%rcx 0.00 : 7377e6: eb a6 jmp 73778e 0.00 : 7377e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7377ef: 00 : constval, : values[i]))) : mcv_selec += numbers[i]; : sumcommon += numbers[i]; : } : free_attstatsslot(vardata->atttype, values, nvalues, 0.00 : 7377f0: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 7377f4: f2 0f 11 45 a8 movsd %xmm0,-0x58(%rbp) 0.00 : 7377f9: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) : numbers, nnumbers); : } : : *sumcommonp = sumcommon; 0.00 : 7377fe: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 737802: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 0.00 : 737807: f2 0f 11 00 movsd %xmm0,(%rax) : return mcv_selec; : } 0.00 : 73780b: f2 0f 10 45 a8 movsd -0x58(%rbp),%xmm0 0.00 : 737810: 48 83 c4 68 add $0x68,%rsp 0.00 : 737814: 5b pop %rbx 0.00 : 737815: 41 5c pop %r12 0.00 : 737817: 41 5d pop %r13 0.00 : 737819: 41 5e pop %r14 0.00 : 73781b: 41 5f pop %r15 0.00 : 73781d: c9 leaveq 0.00 : 73781e: c3 retq 0.00 : 73781f: 90 nop : constval)) : : DatumGetBool(FunctionCall2Coll(opproc, : DEFAULT_COLLATION_OID, : constval, : values[i]))) : mcv_selec += numbers[i]; 0.00 : 737820: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 737824: 48 8d 04 9d 00 00 00 lea 0x0(,%rbx,4),%rax 0.00 : 73782b: 00 0.00 : 73782c: f3 0f 10 04 99 movss (%rcx,%rbx,4),%xmm0 0.00 : 737831: 0f 5a c0 cvtps2pd %xmm0,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:636 33.33 : 737834: f2 0f 58 45 a8 addsd -0x58(%rbp),%xmm0 0.00 : 737839: f2 0f 11 45 a8 movsd %xmm0,-0x58(%rbp) 0.00 : 73783e: e9 6e ff ff ff jmpq 7377b1 : STATISTIC_KIND_MCV, InvalidOid, : NULL, : &values, &nvalues, : &numbers, &nnumbers)) : { : for (i = 0; i < nvalues; i++) 0.00 : 737843: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 737847: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 73784b: f2 0f 11 45 a8 movsd %xmm0,-0x58(%rbp) 0.00 : 737850: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) 0.00 : 737855: 0f 1f 00 nopl (%rax) : constval, : values[i]))) : mcv_selec += numbers[i]; : sumcommon += numbers[i]; : } : free_attstatsslot(vardata->atttype, values, nvalues, 0.00 : 737858: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 73785c: 41 8b 7d 24 mov 0x24(%r13),%edi 0.00 : 737860: 44 8b 45 d0 mov -0x30(%rbp),%r8d 0.00 : 737864: e8 17 b4 03 00 callq 772c80 0.00 : 737869: eb 93 jmp 7377fe Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:3624 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000073a3b0 : : static double : ineq_histogram_selectivity(PlannerInfo *root, : VariableStatData *vardata, : FmgrInfo *opproc, bool isgt, : Datum constval, Oid consttype) : { 0.00 : 73a3b0: 55 push %rbp 0.00 : 73a3b1: 48 89 e5 mov %rsp,%rbp 0.00 : 73a3b4: 41 57 push %r15 0.00 : 73a3b6: 4d 89 c7 mov %r8,%r15 0.00 : 73a3b9: 41 56 push %r14 0.00 : 73a3bb: 41 55 push %r13 0.00 : 73a3bd: 41 54 push %r12 0.00 : 73a3bf: 53 push %rbx 0.00 : 73a3c0: 48 81 ec c8 00 00 00 sub $0xc8,%rsp 0.00 : 73a3c7: 48 89 bd 70 ff ff ff mov %rdi,-0x90(%rbp) 0.00 : 73a3ce: 48 89 b5 68 ff ff ff mov %rsi,-0x98(%rbp) 0.00 : 73a3d5: 48 89 95 60 ff ff ff mov %rdx,-0xa0(%rbp) 0.00 : 73a3dc: 44 89 8d 58 ff ff ff mov %r9d,-0xa8(%rbp) 0.00 : 73a3e3: 88 8d 5f ff ff ff mov %cl,-0xa1(%rbp) : * hand! (For example, we might have a '<=' operator rather than the '<' : * operator that will appear in staop.) For now, assume that whatever : * appears in pg_statistic is sorted the same way our operator sorts, or : * the reverse way if isgt is TRUE. : */ : if (HeapTupleIsValid(vardata->statsTuple) && 0.00 : 73a3e9: 48 8b 7e 10 mov 0x10(%rsi),%rdi 0.00 : 73a3ed: 48 85 ff test %rdi,%rdi 0.00 : 73a3f0: 0f 84 6a 01 00 00 je 73a560 0.00 : 73a3f6: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : 73a3fa: 8b 56 28 mov 0x28(%rsi),%edx 0.00 : 73a3fd: 8b 76 24 mov 0x24(%rsi),%esi 0.00 : 73a400: 4c 8d 4d cc lea -0x34(%rbp),%r9 0.00 : 73a404: 45 31 c0 xor %r8d,%r8d 0.00 : 73a407: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 73a40c: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 73a411: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 73a415: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 73a41c: 00 00 0.00 : 73a41e: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 73a425: 00 00 0.00 : 73a427: 48 89 04 24 mov %rax,(%rsp) 0.00 : 73a42b: e8 a0 93 03 00 callq 7737d0 0.00 : 73a430: 84 c0 test %al,%al 0.00 : 73a432: 0f 84 28 01 00 00 je 73a560 : STATISTIC_KIND_HISTOGRAM, InvalidOid, : &hist_op, : &values, &nvalues, : NULL, NULL)) : { : if (nvalues > 1) 0.00 : 73a438: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73a43b: 83 fa 01 cmp $0x1,%edx 0.00 : 73a43e: 41 89 d5 mov %edx,%r13d 0.00 : 73a441: 0f 8e d1 01 00 00 jle 73a618 : * If there are only two histogram entries, we'll want up-to-date : * values for both. (If there are more than two, we need at most : * one of them to be updated, so we deal with that within the : * loop.) : */ : if (nvalues == 2) 0.00 : 73a447: 83 fa 02 cmp $0x2,%edx 0.00 : 73a44a: c6 45 8f 00 movb $0x0,-0x71(%rbp) 0.00 : 73a44e: 0f 84 fc 02 00 00 je 73a750 : have_end = get_actual_variable_range(root, 0.00 : 73a454: 45 31 f6 xor %r14d,%r14d 0.00 : 73a457: eb 0f jmp 73a468 0.00 : 73a459: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : DEFAULT_COLLATION_OID, : values[probe], : constval)); : if (isgt) : ltcmp = !ltcmp; : if (ltcmp) 0.00 : 73a460: 45 89 e5 mov %r12d,%r13d : vardata, : hist_op, : &values[0], : &values[1]); : : while (lobound < hibound) 0.00 : 73a463: 45 39 ee cmp %r13d,%r14d 0.00 : 73a466: 7d 6e jge 73a4d6 : { : int probe = (lobound + hibound) / 2; 0.00 : 73a468: 43 8d 54 35 00 lea 0x0(%r13,%r14,1),%edx 0.00 : 73a46d: 89 d0 mov %edx,%eax 0.00 : 73a46f: c1 e8 1f shr $0x1f,%eax 0.00 : 73a472: 01 d0 add %edx,%eax : /* : * If we find ourselves about to compare to the first or last : * histogram entry, first try to replace it with the actual : * current min or max (unless we already did so above). : */ : if (probe == 0 && nvalues > 2) 0.00 : 73a474: 41 89 c4 mov %eax,%r12d 0.00 : 73a477: 41 d1 fc sar %r12d 0.00 : 73a47a: 75 0a jne 73a486 0.00 : 73a47c: 83 7d c8 02 cmpl $0x2,-0x38(%rbp) 0.00 : 73a480: 0f 8f 32 01 00 00 jg 73a5b8 : have_end = get_actual_variable_range(root, : vardata, : hist_op, : &values[0], : NULL); : else if (probe == nvalues - 1 && nvalues > 2) 0.00 : 73a486: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73a489: 49 63 dc movslq %r12d,%rbx 0.00 : 73a48c: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 73a48f: 44 39 e0 cmp %r12d,%eax 0.00 : 73a492: 0f 84 e8 00 00 00 je 73a580 : vardata, : hist_op, : NULL, : &values[probe]); : : ltcmp = DatumGetBool(FunctionCall2Coll(opproc, 0.00 : 73a498: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 73a49c: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 73a4a3: 4c 89 f9 mov %r15,%rcx 0.00 : 73a4a6: be 64 00 00 00 mov $0x64,%esi 0.00 : 73a4ab: 48 8b 14 d8 mov (%rax,%rbx,8),%rdx 0.00 : 73a4af: e8 7c 3b 04 00 callq 77e030 0.00 : 73a4b4: 84 c0 test %al,%al 0.00 : 73a4b6: 0f 95 c0 setne %al : DEFAULT_COLLATION_OID, : values[probe], : constval)); : if (isgt) : ltcmp = !ltcmp; 0.00 : 73a4b9: 89 c2 mov %eax,%edx 0.00 : 73a4bb: 83 f2 01 xor $0x1,%edx 0.00 : 73a4be: 80 bd 5f ff ff ff 00 cmpb $0x0,-0xa1(%rbp) 0.00 : 73a4c5: 0f 45 c2 cmovne %edx,%eax : if (ltcmp) 0.00 : 73a4c8: 84 c0 test %al,%al 0.00 : 73a4ca: 74 94 je 73a460 : lobound = probe + 1; 0.00 : 73a4cc: 45 8d 74 24 01 lea 0x1(%r12),%r14d : vardata, : hist_op, : &values[0], : &values[1]); : : while (lobound < hibound) 0.00 : 73a4d1: 45 39 ee cmp %r13d,%r14d 0.00 : 73a4d4: 7c 92 jl 73a468 : lobound = probe + 1; : else : hibound = probe; : } : : if (lobound <= 0) 0.00 : 73a4d6: 45 85 f6 test %r14d,%r14d 0.00 : 73a4d9: 0f 8e 01 01 00 00 jle 73a5e0 : { : /* Constant is below lower histogram boundary. */ : histfrac = 0.0; : } : else if (lobound >= nvalues) 0.00 : 73a4df: 44 39 75 c8 cmp %r14d,-0x38(%rbp) 0.00 : 73a4e3: 0f 8f 47 01 00 00 jg 73a630 0.00 : 73a4e9: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73a4ec: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73a4f0: f2 0f 10 15 60 4c 07 movsd 0x74c60(%rip),%xmm2 # 7af158 <__func__.15777+0x10> 0.00 : 73a4f7: 00 : * Now histfrac = fraction of histogram entries below the : * constant. : * : * Account for "<" vs ">" : */ : hist_selec = isgt ? (1.0 - histfrac) : histfrac; 0.00 : 73a4f8: 80 bd 5f ff ff ff 00 cmpb $0x0,-0xa1(%rbp) 0.00 : 73a4ff: 66 0f 28 ca movapd %xmm2,%xmm1 0.00 : 73a503: 74 0c je 73a511 0.00 : 73a505: f2 0f 10 0d 4b 4c 07 movsd 0x74c4b(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 73a50c: 00 0.00 : 73a50d: f2 0f 5c ca subsd %xmm2,%xmm1 : * The histogram boundaries are only approximate to begin with, : * and may well be out of date anyway. Therefore, don't believe : * extremely small or large selectivity estimates --- unless we : * got actual current endpoint values from the table. : */ : if (have_end) 0.00 : 73a511: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 73a515: 0f 84 d5 00 00 00 je 73a5f0 : CLAMP_PROBABILITY(hist_selec); 0.00 : 73a51b: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 73a51f: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 73a523: 0f 87 e1 00 00 00 ja 73a60a 0.00 : 73a529: f2 0f 10 05 27 4c 07 movsd 0x74c27(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 73a530: 00 0.00 : 73a531: f2 0f 5d c1 minsd %xmm1,%xmm0 0.00 : 73a535: 66 0f 28 c8 movapd %xmm0,%xmm1 : else if (hist_selec > 0.9999) : hist_selec = 0.9999; : } : } : : free_attstatsslot(vardata->atttype, values, nvalues, NULL, 0); 0.00 : 73a539: 4c 8b 8d 68 ff ff ff mov -0x98(%rbp),%r9 0.00 : 73a540: 45 31 c0 xor %r8d,%r8d 0.00 : 73a543: 31 c9 xor %ecx,%ecx 0.00 : 73a545: 41 8b 79 24 mov 0x24(%r9),%edi 0.00 : 73a549: f2 0f 11 8d 40 ff ff movsd %xmm1,-0xc0(%rbp) 0.00 : 73a550: ff 0.00 : 73a551: e8 2a 87 03 00 callq 772c80 0.00 : 73a556: f2 0f 10 8d 40 ff ff movsd -0xc0(%rbp),%xmm1 0.00 : 73a55d: ff 0.00 : 73a55e: eb 08 jmp 73a568 0.00 : 73a560: f2 0f 10 0d f0 7f 08 movsd 0x87ff0(%rip),%xmm1 # 7c2558 <__func__.23237+0x18> 0.00 : 73a567: 00 : } : : return hist_selec; : } 0.00 : 73a568: 48 81 c4 c8 00 00 00 add $0xc8,%rsp 0.00 : 73a56f: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 73a573: 5b pop %rbx 0.00 : 73a574: 41 5c pop %r12 0.00 : 73a576: 41 5d pop %r13 0.00 : 73a578: 41 5e pop %r14 0.00 : 73a57a: 41 5f pop %r15 0.00 : 73a57c: c9 leaveq 0.00 : 73a57d: c3 retq 0.00 : 73a57e: 66 90 xchg %ax,%ax : have_end = get_actual_variable_range(root, : vardata, : hist_op, : &values[0], : NULL); : else if (probe == nvalues - 1 && nvalues > 2) 0.00 : 73a580: 83 fa 02 cmp $0x2,%edx 0.00 : 73a583: 0f 8e 0f ff ff ff jle 73a498 : have_end = get_actual_variable_range(root, 0.00 : 73a589: 4c 8d 04 dd 00 00 00 lea 0x0(,%rbx,8),%r8 0.00 : 73a590: 00 0.00 : 73a591: 4c 03 45 c0 add -0x40(%rbp),%r8 0.00 : 73a595: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 73a598: 48 8b b5 68 ff ff ff mov -0x98(%rbp),%rsi 0.00 : 73a59f: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 73a5a6: 31 c9 xor %ecx,%ecx 0.00 : 73a5a8: e8 b3 f5 ff ff callq 739b60 0.00 : 73a5ad: 88 45 8f mov %al,-0x71(%rbp) 0.00 : 73a5b0: e9 e3 fe ff ff jmpq 73a498 0.00 : 73a5b5: 0f 1f 00 nopl (%rax) : * If we find ourselves about to compare to the first or last : * histogram entry, first try to replace it with the actual : * current min or max (unless we already did so above). : */ : if (probe == 0 && nvalues > 2) : have_end = get_actual_variable_range(root, 0.00 : 73a5b8: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 73a5bc: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 73a5bf: 45 31 c0 xor %r8d,%r8d 0.00 : 73a5c2: 48 8b b5 68 ff ff ff mov -0x98(%rbp),%rsi 0.00 : 73a5c9: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 73a5d0: 31 db xor %ebx,%ebx 0.00 : 73a5d2: e8 89 f5 ff ff callq 739b60 0.00 : 73a5d7: 88 45 8f mov %al,-0x71(%rbp) : /* : * If we find ourselves about to compare to the first or last : * histogram entry, first try to replace it with the actual : * current min or max (unless we already did so above). : */ : if (probe == 0 && nvalues > 2) 0.00 : 73a5da: e9 b9 fe ff ff jmpq 73a498 0.00 : 73a5df: 90 nop : lobound = probe + 1; : else : hibound = probe; : } : : if (lobound <= 0) 0.00 : 73a5e0: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 73a5e4: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 73a5e7: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73a5eb: e9 08 ff ff ff jmpq 73a4f8 : */ : if (have_end) : CLAMP_PROBABILITY(hist_selec); : else : { : if (hist_selec < 0.0001) 0.00 : 73a5f0: f2 0f 10 05 e8 ec 18 movsd 0x18ece8(%rip),%xmm0 # 8c92e0 <__func__.22852+0x40> 0.00 : 73a5f7: 00 0.00 : 73a5f8: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 73a5fc: 77 0c ja 73a60a : hist_selec = 0.0001; : else if (hist_selec > 0.9999) 0.00 : 73a5fe: f2 0f 10 05 e2 ec 18 movsd 0x18ece2(%rip),%xmm0 # 8c92e8 <__func__.22852+0x48> 0.00 : 73a605: 00 0.00 : 73a606: f2 0f 5d c1 minsd %xmm1,%xmm0 0.00 : 73a60a: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 73a60e: e9 26 ff ff ff jmpq 73a539 0.00 : 73a613: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : STATISTIC_KIND_HISTOGRAM, InvalidOid, : &hist_op, : &values, &nvalues, : NULL, NULL)) : { : if (nvalues > 1) 0.00 : 73a618: f2 0f 10 0d 38 7f 08 movsd 0x87f38(%rip),%xmm1 # 7c2558 <__func__.23237+0x18> 0.00 : 73a61f: 00 0.00 : 73a620: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73a624: e9 10 ff ff ff jmpq 73a539 0.00 : 73a629: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * : * Convert the constant and the two nearest bin boundary : * values to a uniform comparison scale, and do a linear : * interpolation within this bin. : */ : if (convert_to_scalar(constval, consttype, &val, 0.00 : 73a630: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73a634: 49 63 c6 movslq %r14d,%rax 0.00 : 73a637: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73a63e: 81 bd 58 ff ff ff c0 cmpl $0x2c0,-0xa8(%rbp) 0.00 : 73a645: 02 00 00 : * : * Convert the constant and the two nearest bin boundary : * values to a uniform comparison scale, and do a linear : * interpolation within this bin. : */ : if (convert_to_scalar(constval, consttype, &val, 0.00 : 73a648: 4c 8b 0c c6 mov (%rsi,%rax,8),%r9 0.00 : 73a64c: 8b 5a 20 mov 0x20(%rdx),%ebx 0.00 : 73a64f: 4c 89 8d 78 ff ff ff mov %r9,-0x88(%rbp) 0.00 : 73a656: 48 8b 44 c6 f8 mov -0x8(%rsi,%rax,8),%rax 0.00 : 73a65b: 48 89 45 80 mov %rax,-0x80(%rbp) : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73a65f: 76 5f jbe 73a6c0 0.00 : 73a661: 81 bd 58 ff ff ff a0 cmpl $0x4a0,-0xa8(%rbp) 0.00 : 73a668: 04 00 00 0.00 : 73a66b: 74 63 je 73a6d0 0.00 : 73a66d: 0f 87 a0 02 00 00 ja 73a913 0.00 : 73a673: 81 bd 58 ff ff ff 13 cmpl $0x413,-0xa8(%rbp) 0.00 : 73a67a: 04 00 00 0.00 : 73a67d: 0f 87 93 05 00 00 ja 73ac16 0.00 : 73a683: 81 bd 58 ff ff ff 12 cmpl $0x412,-0xa8(%rbp) 0.00 : 73a68a: 04 00 00 0.00 : 73a68d: 0f 83 18 03 00 00 jae 73a9ab 0.00 : 73a693: 81 bd 58 ff ff ff 3d cmpl $0x33d,-0xa8(%rbp) 0.00 : 73a69a: 03 00 00 0.00 : 73a69d: 0f 84 cd 02 00 00 je 73a970 0.00 : 73a6a3: 81 bd 58 ff ff ff 65 cmpl $0x365,-0xa8(%rbp) 0.00 : 73a6aa: 03 00 00 0.00 : 73a6ad: 0f 84 bd 02 00 00 je 73a970 0.00 : 73a6b3: f2 0f 10 0d 2d d3 13 movsd 0x13d32d(%rip),%xmm1 # 8779e8 <__func__.20024+0x28> 0.00 : 73a6ba: 00 0.00 : 73a6bb: eb 73 jmp 73a730 0.00 : 73a6bd: 0f 1f 00 nopl (%rax) 0.00 : 73a6c0: 81 bd 58 ff ff ff be cmpl $0x2be,-0xa8(%rbp) 0.00 : 73a6c7: 02 00 00 0.00 : 73a6ca: 0f 82 02 01 00 00 jb 73a7d2 : case INTERVALOID: : case RELTIMEOID: : case TINTERVALOID: : case TIMEOID: : case TIMETZOID: : *scaledvalue = convert_timevalue_to_scalar(value, valuetypid); 0.00 : 73a6d0: 8b b5 58 ff ff ff mov -0xa8(%rbp),%esi 0.00 : 73a6d6: 4c 89 ff mov %r15,%rdi 0.00 : 73a6d9: e8 32 fb ff ff callq 73a210 : *scaledlobound = convert_timevalue_to_scalar(lobound, boundstypid); 0.00 : 73a6de: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 73a6e2: 89 de mov %ebx,%esi : case INTERVALOID: : case RELTIMEOID: : case TINTERVALOID: : case TIMEOID: : case TIMETZOID: : *scaledvalue = convert_timevalue_to_scalar(value, valuetypid); 0.00 : 73a6e4: f2 0f 11 45 90 movsd %xmm0,-0x70(%rbp) : *scaledlobound = convert_timevalue_to_scalar(lobound, boundstypid); 0.00 : 73a6e9: e8 22 fb ff ff callq 73a210 : *scaledhibound = convert_timevalue_to_scalar(hibound, boundstypid); 0.00 : 73a6ee: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 73a6f5: 89 de mov %ebx,%esi : case RELTIMEOID: : case TINTERVALOID: : case TIMEOID: : case TIMETZOID: : *scaledvalue = convert_timevalue_to_scalar(value, valuetypid); : *scaledlobound = convert_timevalue_to_scalar(lobound, boundstypid); 0.00 : 73a6f7: f2 0f 11 45 a0 movsd %xmm0,-0x60(%rbp) : *scaledhibound = convert_timevalue_to_scalar(hibound, boundstypid); 0.00 : 73a6fc: e8 0f fb ff ff callq 73a210 0.00 : 73a701: f2 0f 11 45 98 movsd %xmm0,-0x68(%rbp) : if (convert_to_scalar(constval, consttype, &val, : values[i - 1], values[i], : vardata->vartype, : &low, &high)) : { : if (high <= low) 0.00 : 73a706: f2 0f 10 45 a0 movsd -0x60(%rbp),%xmm0 0.00 : 73a70b: 66 0f 2e 45 98 ucomisd -0x68(%rbp),%xmm0 0.00 : 73a710: 0f 83 ab 00 00 00 jae 73a7c1 : { : /* cope if bin boundaries appear identical */ : binfrac = 0.5; : } : else if (val <= low) 0.00 : 73a716: f2 0f 10 45 a0 movsd -0x60(%rbp),%xmm0 0.00 : 73a71b: 66 0f 2e 45 90 ucomisd -0x70(%rbp),%xmm0 0.00 : 73a720: 0f 82 cf 04 00 00 jb 73abf5 0.00 : 73a726: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 73a72a: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73a72e: 66 90 xchg %ax,%ax : /* : * Now, compute the overall selectivity across the values : * represented by the histogram. We have i-1 full bins and : * binfrac partial bin below the constant. : */ : histfrac = (double) (i - 1) + binfrac; 0.00 : 73a730: 41 8d 46 ff lea -0x1(%r14),%eax : histfrac /= (double) (nvalues - 1); 0.00 : 73a734: 8b 55 c8 mov -0x38(%rbp),%edx : /* : * Now, compute the overall selectivity across the values : * represented by the histogram. We have i-1 full bins and : * binfrac partial bin below the constant. : */ : histfrac = (double) (i - 1) + binfrac; 0.00 : 73a737: f2 0f 2a d0 cvtsi2sd %eax,%xmm2 : histfrac /= (double) (nvalues - 1); 0.00 : 73a73b: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 73a73e: f2 0f 2a c0 cvtsi2sd %eax,%xmm0 : /* : * Now, compute the overall selectivity across the values : * represented by the histogram. We have i-1 full bins and : * binfrac partial bin below the constant. : */ : histfrac = (double) (i - 1) + binfrac; 0.00 : 73a742: f2 0f 58 d1 addsd %xmm1,%xmm2 : histfrac /= (double) (nvalues - 1); 0.00 : 73a746: f2 0f 5e d0 divsd %xmm0,%xmm2 0.00 : 73a74a: e9 a9 fd ff ff jmpq 73a4f8 0.00 : 73a74f: 90 nop : * values for both. (If there are more than two, we need at most : * one of them to be updated, so we deal with that within the : * loop.) : */ : if (nvalues == 2) : have_end = get_actual_variable_range(root, 0.00 : 73a750: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 73a754: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 73a757: 48 8b b5 68 ff ff ff mov -0x98(%rbp),%rsi 0.00 : 73a75e: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 73a765: 4c 8d 41 08 lea 0x8(%rcx),%r8 0.00 : 73a769: e8 f2 f3 ff ff callq 739b60 0.00 : 73a76e: 88 45 8f mov %al,-0x71(%rbp) 0.00 : 73a771: e9 de fc ff ff jmpq 73a454 : binfrac = 0.0; : else if (val >= high) : binfrac = 1.0; : else : { : binfrac = (val - low) / (high - low); 0.00 : 73a776: f2 0f 10 4d 90 movsd -0x70(%rbp),%xmm1 0.00 : 73a77b: f2 0f 10 45 98 movsd -0x68(%rbp),%xmm0 0.00 : 73a780: f2 0f 5c 4d a0 subsd -0x60(%rbp),%xmm1 0.00 : 73a785: f2 0f 5c 45 a0 subsd -0x60(%rbp),%xmm0 0.00 : 73a78a: f2 0f 5e c8 divsd %xmm0,%xmm1 : * Watch out for the possibility that we got a NaN or : * Infinity from the division. This can happen : * despite the previous checks, if for example "low" : * is -Infinity. : */ : if (isnan(binfrac) || 0.00 : 73a78e: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 73a792: f2 0f 11 8d 40 ff ff movsd %xmm1,-0xc0(%rbp) 0.00 : 73a799: ff 0.00 : 73a79a: e8 81 f1 d2 ff callq 469920 <__isnan@plt> 0.00 : 73a79f: 85 c0 test %eax,%eax 0.00 : 73a7a1: f2 0f 10 8d 40 ff ff movsd -0xc0(%rbp),%xmm1 0.00 : 73a7a8: ff 0.00 : 73a7a9: 75 16 jne 73a7c1 0.00 : 73a7ab: 66 0f 2e 0d 25 7b 07 ucomisd 0x77b25(%rip),%xmm1 # 7b22d8 <__func__.14992+0xcf> 0.00 : 73a7b2: 00 0.00 : 73a7b3: 7a 02 jp 73a7b7 0.00 : 73a7b5: 72 0a jb 73a7c1 0.00 : 73a7b7: 66 0f 2e 0d 99 49 07 ucomisd 0x74999(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 73a7be: 00 0.00 : 73a7bf: 76 08 jbe 73a7c9 0.00 : 73a7c1: f2 0f 10 0d 1f d2 13 movsd 0x13d21f(%rip),%xmm1 # 8779e8 <__func__.20024+0x28> 0.00 : 73a7c8: 00 0.00 : 73a7c9: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73a7cd: e9 5e ff ff ff jmpq 73a730 : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73a7d2: 83 bd 58 ff ff ff 18 cmpl $0x18,-0xa8(%rbp) 0.00 : 73a7d9: 0f 87 c6 03 00 00 ja 73aba5 0.00 : 73a7df: 83 bd 58 ff ff ff 17 cmpl $0x17,-0xa8(%rbp) 0.00 : 73a7e6: 0f 83 7e 03 00 00 jae 73ab6a 0.00 : 73a7ec: 83 bd 58 ff ff ff 13 cmpl $0x13,-0xa8(%rbp) 0.00 : 73a7f3: 0f 87 64 03 00 00 ja 73ab5d 0.00 : 73a7f9: 83 bd 58 ff ff ff 12 cmpl $0x12,-0xa8(%rbp) 0.00 : 73a800: 0f 83 a5 01 00 00 jae 73a9ab 0.00 : 73a806: 83 bd 58 ff ff ff 10 cmpl $0x10,-0xa8(%rbp) 0.00 : 73a80d: 0f 84 57 03 00 00 je 73ab6a 0.00 : 73a813: 83 bd 58 ff ff ff 11 cmpl $0x11,-0xa8(%rbp) 0.00 : 73a81a: 0f 85 93 fe ff ff jne 73a6b3 : Datum hibound, : double *scaledhibound) : { : int rangelo, : rangehi, : valuelen = VARSIZE(DatumGetPointer(value)) - VARHDRSZ, 0.00 : 73a820: 41 8b 07 mov (%r15),%eax : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, 0.00 : 73a823: 4c 8b 4d 80 mov -0x80(%rbp),%r9 : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, : i, : minlen; : unsigned char *valstr = (unsigned char *) VARDATA(DatumGetPointer(value)), 0.00 : 73a827: 49 8d 7f 04 lea 0x4(%r15),%rdi : { : int rangelo, : rangehi, : valuelen = VARSIZE(DatumGetPointer(value)) - VARHDRSZ, : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, 0.00 : 73a82b: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx : Datum hibound, : double *scaledhibound) : { : int rangelo, : rangehi, : valuelen = VARSIZE(DatumGetPointer(value)) - VARHDRSZ, 0.00 : 73a832: c1 e8 02 shr $0x2,%eax : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, : i, : minlen; : unsigned char *valstr = (unsigned char *) VARDATA(DatumGetPointer(value)), : *lostr = (unsigned char *) VARDATA(DatumGetPointer(lobound)), 0.00 : 73a835: 4c 89 c9 mov %r9,%rcx : Datum hibound, : double *scaledhibound) : { : int rangelo, : rangehi, : valuelen = VARSIZE(DatumGetPointer(value)) - VARHDRSZ, 0.00 : 73a838: 8d 70 fc lea -0x4(%rax),%esi : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, 0.00 : 73a83b: 41 8b 01 mov (%r9),%eax : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, : i, : minlen; : unsigned char *valstr = (unsigned char *) VARDATA(DatumGetPointer(value)), : *lostr = (unsigned char *) VARDATA(DatumGetPointer(lobound)), : *histr = (unsigned char *) VARDATA(DatumGetPointer(hibound)); 0.00 : 73a83e: 49 89 d4 mov %rdx,%r12 : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, : i, : minlen; : unsigned char *valstr = (unsigned char *) VARDATA(DatumGetPointer(value)), : *lostr = (unsigned char *) VARDATA(DatumGetPointer(lobound)), 0.00 : 73a841: 48 83 c1 04 add $0x4,%rcx : *histr = (unsigned char *) VARDATA(DatumGetPointer(hibound)); 0.00 : 73a845: 49 83 c4 04 add $0x4,%r12 : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, : i, : minlen; : unsigned char *valstr = (unsigned char *) VARDATA(DatumGetPointer(value)), : *lostr = (unsigned char *) VARDATA(DatumGetPointer(lobound)), 0.00 : 73a849: 48 89 cb mov %rcx,%rbx : double *scaledhibound) : { : int rangelo, : rangehi, : valuelen = VARSIZE(DatumGetPointer(value)) - VARHDRSZ, : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, 0.00 : 73a84c: c1 e8 02 shr $0x2,%eax 0.00 : 73a84f: 44 8d 68 fc lea -0x4(%rax),%r13d : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, 0.00 : 73a853: 8b 02 mov (%rdx),%eax : rangehi = 255; : : /* : * Now strip any common prefix of the three strings. : */ : minlen = Min(Min(valuelen, loboundlen), hiboundlen); 0.00 : 73a855: 89 f2 mov %esi,%edx : { : int rangelo, : rangehi, : valuelen = VARSIZE(DatumGetPointer(value)) - VARHDRSZ, : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, 0.00 : 73a857: c1 e8 02 shr $0x2,%eax : rangehi = 255; : : /* : * Now strip any common prefix of the three strings. : */ : minlen = Min(Min(valuelen, loboundlen), hiboundlen); 0.00 : 73a85a: 41 39 f5 cmp %esi,%r13d : { : int rangelo, : rangehi, : valuelen = VARSIZE(DatumGetPointer(value)) - VARHDRSZ, : loboundlen = VARSIZE(DatumGetPointer(lobound)) - VARHDRSZ, : hiboundlen = VARSIZE(DatumGetPointer(hibound)) - VARHDRSZ, 0.00 : 73a85d: 44 8d 40 fc lea -0x4(%rax),%r8d : rangehi = 255; : : /* : * Now strip any common prefix of the three strings. : */ : minlen = Min(Min(valuelen, loboundlen), hiboundlen); 0.00 : 73a861: 41 0f 4e d5 cmovle %r13d,%edx 0.00 : 73a865: 44 39 c2 cmp %r8d,%edx 0.00 : 73a868: 41 0f 4f d0 cmovg %r8d,%edx : for (i = 0; i < minlen; i++) 0.00 : 73a86c: 85 d2 test %edx,%edx 0.00 : 73a86e: 7e 51 jle 73a8c1 : { : if (*lostr != *histr || *lostr != *valstr) 0.00 : 73a870: 41 0f b6 41 04 movzbl 0x4(%r9),%eax 0.00 : 73a875: 4c 8b 8d 78 ff ff ff mov -0x88(%rbp),%r9 0.00 : 73a87c: 41 3a 41 04 cmp 0x4(%r9),%al 0.00 : 73a880: 75 3f jne 73a8c1 0.00 : 73a882: 41 38 47 04 cmp %al,0x4(%r15) 0.00 : 73a886: 74 1a je 73a8a2 0.00 : 73a888: eb 37 jmp 73a8c1 0.00 : 73a88a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73a890: 0f b6 03 movzbl (%rbx),%eax 0.00 : 73a893: 41 3a 04 24 cmp (%r12),%al 0.00 : 73a897: 75 28 jne 73a8c1 0.00 : 73a899: 3a 07 cmp (%rdi),%al 0.00 : 73a89b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 73a8a0: 75 1f jne 73a8c1 : break; : lostr++, histr++, valstr++; 0.00 : 73a8a2: 48 83 c3 01 add $0x1,%rbx 0.00 : 73a8a6: 49 83 c4 01 add $0x1,%r12 0.00 : 73a8aa: 48 83 c7 01 add $0x1,%rdi : : /* : * Now strip any common prefix of the three strings. : */ : minlen = Min(Min(valuelen, loboundlen), hiboundlen); : for (i = 0; i < minlen; i++) 0.00 : 73a8ae: 89 d8 mov %ebx,%eax : { : if (*lostr != *histr || *lostr != *valstr) : break; : lostr++, histr++, valstr++; : loboundlen--, hiboundlen--, valuelen--; 0.00 : 73a8b0: 41 83 ed 01 sub $0x1,%r13d 0.00 : 73a8b4: 41 83 e8 01 sub $0x1,%r8d : : /* : * Now strip any common prefix of the three strings. : */ : minlen = Min(Min(valuelen, loboundlen), hiboundlen); : for (i = 0; i < minlen; i++) 0.00 : 73a8b8: 29 c8 sub %ecx,%eax : { : if (*lostr != *histr || *lostr != *valstr) : break; : lostr++, histr++, valstr++; : loboundlen--, hiboundlen--, valuelen--; 0.00 : 73a8ba: 83 ee 01 sub $0x1,%esi : : /* : * Now strip any common prefix of the three strings. : */ : minlen = Min(Min(valuelen, loboundlen), hiboundlen); : for (i = 0; i < minlen; i++) 0.00 : 73a8bd: 39 c2 cmp %eax,%edx 0.00 : 73a8bf: 7f cf jg 73a890 : } : : /* : * Now we can do the conversions. : */ : *scaledvalue = convert_one_bytea_to_scalar(valstr, valuelen, rangelo, rangehi); 0.00 : 73a8c1: b9 ff 00 00 00 mov $0xff,%ecx 0.00 : 73a8c6: 31 d2 xor %edx,%edx 0.00 : 73a8c8: 44 89 85 38 ff ff ff mov %r8d,-0xc8(%rbp) 0.00 : 73a8cf: e8 fc c3 ff ff callq 736cd0 : *scaledlobound = convert_one_bytea_to_scalar(lostr, loboundlen, rangelo, rangehi); 0.00 : 73a8d4: b9 ff 00 00 00 mov $0xff,%ecx 0.00 : 73a8d9: 31 d2 xor %edx,%edx 0.00 : 73a8db: 44 89 ee mov %r13d,%esi 0.00 : 73a8de: 48 89 df mov %rbx,%rdi : } : : /* : * Now we can do the conversions. : */ : *scaledvalue = convert_one_bytea_to_scalar(valstr, valuelen, rangelo, rangehi); 0.00 : 73a8e1: f2 0f 11 45 90 movsd %xmm0,-0x70(%rbp) : *scaledlobound = convert_one_bytea_to_scalar(lostr, loboundlen, rangelo, rangehi); 0.00 : 73a8e6: e8 e5 c3 ff ff callq 736cd0 : *scaledhibound = convert_one_bytea_to_scalar(histr, hiboundlen, rangelo, rangehi); 0.00 : 73a8eb: 44 8b 85 38 ff ff ff mov -0xc8(%rbp),%r8d 0.00 : 73a8f2: b9 ff 00 00 00 mov $0xff,%ecx 0.00 : 73a8f7: 31 d2 xor %edx,%edx 0.00 : 73a8f9: 4c 89 e7 mov %r12,%rdi : : /* : * Now we can do the conversions. : */ : *scaledvalue = convert_one_bytea_to_scalar(valstr, valuelen, rangelo, rangehi); : *scaledlobound = convert_one_bytea_to_scalar(lostr, loboundlen, rangelo, rangehi); 0.00 : 73a8fc: f2 0f 11 45 a0 movsd %xmm0,-0x60(%rbp) : *scaledhibound = convert_one_bytea_to_scalar(histr, hiboundlen, rangelo, rangehi); 0.00 : 73a901: 44 89 c6 mov %r8d,%esi 0.00 : 73a904: e8 c7 c3 ff ff callq 736cd0 0.00 : 73a909: f2 0f 11 45 98 movsd %xmm0,-0x68(%rbp) 0.00 : 73a90e: e9 f3 fd ff ff jmpq 73a706 : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73a913: 81 bd 58 ff ff ff 9e cmpl $0x89e,-0xa8(%rbp) 0.00 : 73a91a: 08 00 00 0.00 : 73a91d: 0f 87 2d 03 00 00 ja 73ac50 0.00 : 73a923: 81 bd 58 ff ff ff 9a cmpl $0x89a,-0xa8(%rbp) 0.00 : 73a92a: 08 00 00 0.00 : 73a92d: 0f 83 37 02 00 00 jae 73ab6a 0.00 : 73a933: 81 bd 58 ff ff ff f2 cmpl $0x4f2,-0xa8(%rbp) 0.00 : 73a93a: 04 00 00 0.00 : 73a93d: 0f 84 8d fd ff ff je 73a6d0 0.00 : 73a943: 81 bd 58 ff ff ff a4 cmpl $0x6a4,-0xa8(%rbp) 0.00 : 73a94a: 06 00 00 0.00 : 73a94d: 0f 84 17 02 00 00 je 73ab6a 0.00 : 73a953: 81 bd 58 ff ff ff a2 cmpl $0x4a2,-0xa8(%rbp) 0.00 : 73a95a: 04 00 00 0.00 : 73a95d: 0f 85 50 fd ff ff jne 73a6b3 0.00 : 73a963: e9 68 fd ff ff jmpq 73a6d0 0.00 : 73a968: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 73a96f: 00 : * Built-in network types : */ : case INETOID: : case CIDROID: : case MACADDROID: : *scaledvalue = convert_network_to_scalar(value, valuetypid); 0.00 : 73a970: 8b b5 58 ff ff ff mov -0xa8(%rbp),%esi 0.00 : 73a976: 4c 89 ff mov %r15,%rdi 0.00 : 73a979: e8 d2 95 fc ff callq 703f50 : *scaledlobound = convert_network_to_scalar(lobound, boundstypid); 0.00 : 73a97e: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 73a982: 89 de mov %ebx,%esi : * Built-in network types : */ : case INETOID: : case CIDROID: : case MACADDROID: : *scaledvalue = convert_network_to_scalar(value, valuetypid); 0.00 : 73a984: f2 0f 11 45 90 movsd %xmm0,-0x70(%rbp) : *scaledlobound = convert_network_to_scalar(lobound, boundstypid); 0.00 : 73a989: e8 c2 95 fc ff callq 703f50 : *scaledhibound = convert_network_to_scalar(hibound, boundstypid); 0.00 : 73a98e: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 73a995: 89 de mov %ebx,%esi : */ : case INETOID: : case CIDROID: : case MACADDROID: : *scaledvalue = convert_network_to_scalar(value, valuetypid); : *scaledlobound = convert_network_to_scalar(lobound, boundstypid); 0.00 : 73a997: f2 0f 11 45 a0 movsd %xmm0,-0x60(%rbp) : *scaledhibound = convert_network_to_scalar(hibound, boundstypid); 0.00 : 73a99c: e8 af 95 fc ff callq 703f50 0.00 : 73a9a1: f2 0f 11 45 98 movsd %xmm0,-0x68(%rbp) 0.00 : 73a9a6: e9 5b fd ff ff jmpq 73a706 : case BPCHAROID: : case VARCHAROID: : case TEXTOID: : case NAMEOID: : { : char *valstr = convert_string_datum(value, valuetypid); 0.00 : 73a9ab: 8b b5 58 ff ff ff mov -0xa8(%rbp),%esi 0.00 : 73a9b1: 4c 89 ff mov %r15,%rdi 0.00 : 73a9b4: e8 57 f7 ff ff callq 73a110 : char *lostr = convert_string_datum(lobound, boundstypid); 0.00 : 73a9b9: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 73a9bd: 89 de mov %ebx,%esi : case BPCHAROID: : case VARCHAROID: : case TEXTOID: : case NAMEOID: : { : char *valstr = convert_string_datum(value, valuetypid); 0.00 : 73a9bf: 48 89 45 a8 mov %rax,-0x58(%rbp) : char *lostr = convert_string_datum(lobound, boundstypid); 0.00 : 73a9c3: e8 48 f7 ff ff callq 73a110 : char *histr = convert_string_datum(hibound, boundstypid); 0.00 : 73a9c8: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 73a9cf: 89 de mov %ebx,%esi : case VARCHAROID: : case TEXTOID: : case NAMEOID: : { : char *valstr = convert_string_datum(value, valuetypid); : char *lostr = convert_string_datum(lobound, boundstypid); 0.00 : 73a9d1: 48 89 45 b0 mov %rax,-0x50(%rbp) : char *histr = convert_string_datum(hibound, boundstypid); 0.00 : 73a9d5: e8 36 f7 ff ff callq 73a110 0.00 : 73a9da: 48 89 45 b8 mov %rax,-0x48(%rbp) : { : int rangelo, : rangehi; : char *sptr; : : rangelo = rangehi = (unsigned char) hibound[0]; 0.00 : 73a9de: 0f b6 38 movzbl (%rax),%edi : for (sptr = lobound; *sptr; sptr++) 0.00 : 73a9e1: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 73a9e5: 0f b6 30 movzbl (%rax),%esi : { : int rangelo, : rangehi; : char *sptr; : : rangelo = rangehi = (unsigned char) hibound[0]; 0.00 : 73a9e8: 40 0f b6 df movzbl %dil,%ebx : for (sptr = lobound; *sptr; sptr++) 0.00 : 73a9ec: 41 89 df mov %ebx,%r15d 0.00 : 73a9ef: 40 84 f6 test %sil,%sil 0.00 : 73a9f2: 74 2f je 73aa23 0.00 : 73a9f4: 48 89 c1 mov %rax,%rcx 0.00 : 73a9f7: 89 da mov %ebx,%edx 0.00 : 73a9f9: 89 f0 mov %esi,%eax 0.00 : 73a9fb: eb 08 jmp 73aa05 0.00 : 73a9fd: 0f 1f 00 nopl (%rax) 0.00 : 73aa00: 89 da mov %ebx,%edx 0.00 : 73aa02: 44 89 fb mov %r15d,%ebx : { : if (rangelo > (unsigned char) *sptr) 0.00 : 73aa05: 0f b6 c0 movzbl %al,%eax 0.00 : 73aa08: 41 89 df mov %ebx,%r15d 0.00 : 73aa0b: 39 d8 cmp %ebx,%eax 0.00 : 73aa0d: 89 d3 mov %edx,%ebx 0.00 : 73aa0f: 44 0f 4e f8 cmovle %eax,%r15d 0.00 : 73aa13: 39 d0 cmp %edx,%eax 0.00 : 73aa15: 0f 4d d8 cmovge %eax,%ebx : int rangelo, : rangehi; : char *sptr; : : rangelo = rangehi = (unsigned char) hibound[0]; : for (sptr = lobound; *sptr; sptr++) 0.00 : 73aa18: 48 83 c1 01 add $0x1,%rcx 0.00 : 73aa1c: 0f b6 01 movzbl (%rcx),%eax 0.00 : 73aa1f: 84 c0 test %al,%al 0.00 : 73aa21: 75 dd jne 73aa00 : if (rangelo > (unsigned char) *sptr) : rangelo = (unsigned char) *sptr; : if (rangehi < (unsigned char) *sptr) : rangehi = (unsigned char) *sptr; : } : for (sptr = hibound; *sptr; sptr++) 0.00 : 73aa23: 40 84 ff test %dil,%dil 0.00 : 73aa26: 74 22 je 73aa4a 0.00 : 73aa28: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 73aa2c: 89 f8 mov %edi,%eax 0.00 : 73aa2e: 66 90 xchg %ax,%ax : { : if (rangelo > (unsigned char) *sptr) 0.00 : 73aa30: 0f b6 c0 movzbl %al,%eax 0.00 : 73aa33: 41 39 c7 cmp %eax,%r15d 0.00 : 73aa36: 44 0f 4f f8 cmovg %eax,%r15d 0.00 : 73aa3a: 39 c3 cmp %eax,%ebx 0.00 : 73aa3c: 0f 4c d8 cmovl %eax,%ebx : if (rangelo > (unsigned char) *sptr) : rangelo = (unsigned char) *sptr; : if (rangehi < (unsigned char) *sptr) : rangehi = (unsigned char) *sptr; : } : for (sptr = hibound; *sptr; sptr++) 0.00 : 73aa3f: 48 83 c2 01 add $0x1,%rdx 0.00 : 73aa43: 0f b6 02 movzbl (%rdx),%eax 0.00 : 73aa46: 84 c0 test %al,%al 0.00 : 73aa48: 75 e6 jne 73aa30 : rangelo = (unsigned char) *sptr; : if (rangehi < (unsigned char) *sptr) : rangehi = (unsigned char) *sptr; : } : /* If range includes any upper-case ASCII chars, make it include all */ : if (rangelo <= 'Z' && rangehi >= 'A') 0.00 : 73aa4a: 41 83 ff 5a cmp $0x5a,%r15d 0.00 : 73aa4e: 0f 8f 8c 01 00 00 jg 73abe0 0.00 : 73aa54: 83 fb 40 cmp $0x40,%ebx 0.00 : 73aa57: 0f 8e 83 01 00 00 jle 73abe0 : { : if (rangelo > 'A') 0.00 : 73aa5d: 41 83 ff 42 cmp $0x42,%r15d 0.00 : 73aa61: b8 41 00 00 00 mov $0x41,%eax 0.00 : 73aa66: 44 0f 4d f8 cmovge %eax,%r15d : rangelo = 'A'; : if (rangehi < 'Z') 0.00 : 73aa6a: 83 fb 59 cmp $0x59,%ebx 0.00 : 73aa6d: 0f 8f 6d 01 00 00 jg 73abe0 0.00 : 73aa73: bb 5a 00 00 00 mov $0x5a,%ebx 0.00 : 73aa78: ba 01 00 00 00 mov $0x1,%edx : rangelo = 'a'; : if (rangehi < 'z') : rangehi = 'z'; : } : /* Ditto digits */ : if (rangelo <= '9' && rangehi >= '0') 0.00 : 73aa7d: 41 83 ff 39 cmp $0x39,%r15d 0.00 : 73aa81: 7f 19 jg 73aa9c 0.00 : 73aa83: 84 d2 test %dl,%dl 0.00 : 73aa85: 74 15 je 73aa9c 0.00 : 73aa87: 41 83 ff 30 cmp $0x30,%r15d 0.00 : 73aa8b: b8 30 00 00 00 mov $0x30,%eax 0.00 : 73aa90: 44 0f 4f f8 cmovg %eax,%r15d : { : if (rangelo > '0') : rangelo = '0'; : if (rangehi < '9') 0.00 : 73aa94: 83 fb 38 cmp $0x38,%ebx 0.00 : 73aa97: b0 39 mov $0x39,%al 0.00 : 73aa99: 0f 4e d8 cmovle %eax,%ebx : : /* : * If range includes less than 10 chars, assume we have not got enough : * data, and make it include regular ASCII set. : */ : if (rangehi - rangelo < 9) 0.00 : 73aa9c: 89 d8 mov %ebx,%eax 0.00 : 73aa9e: ba 7f 00 00 00 mov $0x7f,%edx 0.00 : 73aaa3: 44 29 f8 sub %r15d,%eax 0.00 : 73aaa6: 83 f8 08 cmp $0x8,%eax 0.00 : 73aaa9: b8 20 00 00 00 mov $0x20,%eax 0.00 : 73aaae: 0f 4e da cmovle %edx,%ebx 0.00 : 73aab1: 44 0f 4e f8 cmovle %eax,%r15d : } : : /* : * Now strip any common prefix of the three strings. : */ : while (*lobound) 0.00 : 73aab5: 40 84 f6 test %sil,%sil 0.00 : 73aab8: 0f 84 f4 01 00 00 je 73acb2 : { : if (*lobound != *hibound || *lobound != *value) 0.00 : 73aabe: 40 38 fe cmp %dil,%sil 0.00 : 73aac1: 0f 85 eb 01 00 00 jne 73acb2 0.00 : 73aac7: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 73aacb: 40 3a 32 cmp (%rdx),%sil 0.00 : 73aace: 0f 85 de 01 00 00 jne 73acb2 0.00 : 73aad4: 4c 8b 65 b0 mov -0x50(%rbp),%r12 0.00 : 73aad8: 4c 8b 6d b8 mov -0x48(%rbp),%r13 0.00 : 73aadc: 48 89 d7 mov %rdx,%rdi 0.00 : 73aadf: eb 14 jmp 73aaf5 0.00 : 73aae1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 73aae8: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : 73aaed: 38 d0 cmp %dl,%al 0.00 : 73aaef: 75 19 jne 73ab0a 0.00 : 73aaf1: 3a 07 cmp (%rdi),%al 0.00 : 73aaf3: 75 15 jne 73ab0a : break; : lobound++, hibound++, value++; 0.00 : 73aaf5: 49 83 c4 01 add $0x1,%r12 0.00 : 73aaf9: 49 83 c5 01 add $0x1,%r13 0.00 : 73aafd: 48 83 c7 01 add $0x1,%rdi : } : : /* : * Now strip any common prefix of the three strings. : */ : while (*lobound) 0.00 : 73ab01: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 73ab06: 84 d2 test %dl,%dl 0.00 : 73ab08: 75 de jne 73aae8 : } : : /* : * Now we can do the conversions. : */ : *scaledvalue = convert_one_string_to_scalar(value, rangelo, rangehi); 0.00 : 73ab0a: 89 da mov %ebx,%edx 0.00 : 73ab0c: 44 89 fe mov %r15d,%esi 0.00 : 73ab0f: e8 cc c9 ff ff callq 7374e0 : *scaledlobound = convert_one_string_to_scalar(lobound, rangelo, rangehi); 0.00 : 73ab14: 89 da mov %ebx,%edx 0.00 : 73ab16: 44 89 fe mov %r15d,%esi 0.00 : 73ab19: 4c 89 e7 mov %r12,%rdi : } : : /* : * Now we can do the conversions. : */ : *scaledvalue = convert_one_string_to_scalar(value, rangelo, rangehi); 0.00 : 73ab1c: f2 0f 11 45 90 movsd %xmm0,-0x70(%rbp) : *scaledlobound = convert_one_string_to_scalar(lobound, rangelo, rangehi); 0.00 : 73ab21: e8 ba c9 ff ff callq 7374e0 : *scaledhibound = convert_one_string_to_scalar(hibound, rangelo, rangehi); 0.00 : 73ab26: 89 da mov %ebx,%edx 0.00 : 73ab28: 44 89 fe mov %r15d,%esi 0.00 : 73ab2b: 4c 89 ef mov %r13,%rdi : : /* : * Now we can do the conversions. : */ : *scaledvalue = convert_one_string_to_scalar(value, rangelo, rangehi); : *scaledlobound = convert_one_string_to_scalar(lobound, rangelo, rangehi); 0.00 : 73ab2e: f2 0f 11 45 a0 movsd %xmm0,-0x60(%rbp) : *scaledhibound = convert_one_string_to_scalar(hibound, rangelo, rangehi); 0.00 : 73ab33: e8 a8 c9 ff ff callq 7374e0 : char *histr = convert_string_datum(hibound, boundstypid); : : convert_string_to_scalar(valstr, scaledvalue, : lostr, scaledlobound, : histr, scaledhibound); : pfree(valstr); 0.00 : 73ab38: 48 8b 7d a8 mov -0x58(%rbp),%rdi : /* : * Now we can do the conversions. : */ : *scaledvalue = convert_one_string_to_scalar(value, rangelo, rangehi); : *scaledlobound = convert_one_string_to_scalar(lobound, rangelo, rangehi); : *scaledhibound = convert_one_string_to_scalar(hibound, rangelo, rangehi); 0.00 : 73ab3c: f2 0f 11 45 98 movsd %xmm0,-0x68(%rbp) : char *histr = convert_string_datum(hibound, boundstypid); : : convert_string_to_scalar(valstr, scaledvalue, : lostr, scaledlobound, : histr, scaledhibound); : pfree(valstr); 0.00 : 73ab41: e8 3a e0 05 00 callq 798b80 : pfree(lostr); 0.00 : 73ab46: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 73ab4a: e8 31 e0 05 00 callq 798b80 : pfree(histr); 0.00 : 73ab4f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 73ab53: e8 28 e0 05 00 callq 798b80 0.00 : 73ab58: e9 a9 fb ff ff jmpq 73a706 : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73ab5d: 83 bd 58 ff ff ff 15 cmpl $0x15,-0xa8(%rbp) 0.00 : 73ab64: 0f 87 49 fb ff ff ja 73a6b3 : case REGOPERATOROID: : case REGCLASSOID: : case REGTYPEOID: : case REGCONFIGOID: : case REGDICTIONARYOID: : *scaledvalue = convert_numeric_to_scalar(value, valuetypid); 0.00 : 73ab6a: 8b b5 58 ff ff ff mov -0xa8(%rbp),%esi 0.00 : 73ab70: 4c 89 ff mov %r15,%rdi 0.00 : 73ab73: e8 28 f4 ff ff callq 739fa0 : *scaledlobound = convert_numeric_to_scalar(lobound, boundstypid); 0.00 : 73ab78: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 73ab7c: 89 de mov %ebx,%esi : case REGOPERATOROID: : case REGCLASSOID: : case REGTYPEOID: : case REGCONFIGOID: : case REGDICTIONARYOID: : *scaledvalue = convert_numeric_to_scalar(value, valuetypid); 0.00 : 73ab7e: f2 0f 11 45 90 movsd %xmm0,-0x70(%rbp) : *scaledlobound = convert_numeric_to_scalar(lobound, boundstypid); 0.00 : 73ab83: e8 18 f4 ff ff callq 739fa0 : *scaledhibound = convert_numeric_to_scalar(hibound, boundstypid); 0.00 : 73ab88: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 73ab8f: 89 de mov %ebx,%esi : case REGCLASSOID: : case REGTYPEOID: : case REGCONFIGOID: : case REGDICTIONARYOID: : *scaledvalue = convert_numeric_to_scalar(value, valuetypid); : *scaledlobound = convert_numeric_to_scalar(lobound, boundstypid); 0.00 : 73ab91: f2 0f 11 45 a0 movsd %xmm0,-0x60(%rbp) : *scaledhibound = convert_numeric_to_scalar(hibound, boundstypid); 0.00 : 73ab96: e8 05 f4 ff ff callq 739fa0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:3624 100.00 : 73ab9b: f2 0f 11 45 98 movsd %xmm0,-0x68(%rbp) 0.00 : 73aba0: e9 61 fb ff ff jmpq 73a706 : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73aba5: 81 bd 58 ff ff ff 8a cmpl $0x28a,-0xa8(%rbp) 0.00 : 73abac: 02 00 00 0.00 : 73abaf: 0f 84 bb fd ff ff je 73a970 0.00 : 73abb5: 0f 87 e2 00 00 00 ja 73ac9d 0.00 : 73abbb: 83 bd 58 ff ff ff 19 cmpl $0x19,-0xa8(%rbp) 0.00 : 73abc2: 0f 84 e3 fd ff ff je 73a9ab 0.00 : 73abc8: 83 bd 58 ff ff ff 1a cmpl $0x1a,-0xa8(%rbp) 0.00 : 73abcf: 0f 85 de fa ff ff jne 73a6b3 0.00 : 73abd5: eb 93 jmp 73ab6a 0.00 : 73abd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73abde: 00 00 : rangelo = 'A'; : if (rangehi < 'Z') : rangehi = 'Z'; : } : /* Ditto lower-case */ : if (rangelo <= 'z' && rangehi >= 'a') 0.00 : 73abe0: 41 83 ff 7a cmp $0x7a,%r15d 0.00 : 73abe4: 0f 8e 8b 00 00 00 jle 73ac75 0.00 : 73abea: 83 fb 2f cmp $0x2f,%ebx 0.00 : 73abed: 0f 9f c2 setg %dl 0.00 : 73abf0: e9 88 fe ff ff jmpq 73aa7d : /* cope if bin boundaries appear identical */ : binfrac = 0.5; : } : else if (val <= low) : binfrac = 0.0; : else if (val >= high) 0.00 : 73abf5: f2 0f 10 45 90 movsd -0x70(%rbp),%xmm0 0.00 : 73abfa: 66 0f 2e 45 98 ucomisd -0x68(%rbp),%xmm0 0.00 : 73abff: 0f 82 71 fb ff ff jb 73a776 0.00 : 73ac05: f2 0f 10 0d 4b 45 07 movsd 0x7454b(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 73ac0c: 00 0.00 : 73ac0d: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 73ac11: e9 1a fb ff ff jmpq 73a730 : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73ac16: 81 bd 58 ff ff ff 3a cmpl $0x43a,-0xa8(%rbp) 0.00 : 73ac1d: 04 00 00 0.00 : 73ac20: 0f 82 8d fa ff ff jb 73a6b3 0.00 : 73ac26: 81 bd 58 ff ff ff 3b cmpl $0x43b,-0xa8(%rbp) 0.00 : 73ac2d: 04 00 00 0.00 : 73ac30: 0f 86 9a fa ff ff jbe 73a6d0 0.00 : 73ac36: 81 bd 58 ff ff ff 5a cmpl $0x45a,-0xa8(%rbp) 0.00 : 73ac3d: 04 00 00 0.00 : 73ac40: 0f 85 6d fa ff ff jne 73a6b3 0.00 : 73ac46: e9 85 fa ff ff jmpq 73a6d0 0.00 : 73ac4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 73ac50: 81 bd 58 ff ff ff 96 cmpl $0xe96,-0xa8(%rbp) 0.00 : 73ac57: 0e 00 00 0.00 : 73ac5a: 0f 84 0a ff ff ff je 73ab6a 0.00 : 73ac60: 81 bd 58 ff ff ff b9 cmpl $0xeb9,-0xa8(%rbp) 0.00 : 73ac67: 0e 00 00 0.00 : 73ac6a: 0f 85 43 fa ff ff jne 73a6b3 0.00 : 73ac70: e9 f5 fe ff ff jmpq 73ab6a : rangelo = 'A'; : if (rangehi < 'Z') : rangehi = 'Z'; : } : /* Ditto lower-case */ : if (rangelo <= 'z' && rangehi >= 'a') 0.00 : 73ac75: 83 fb 60 cmp $0x60,%ebx 0.00 : 73ac78: 0f 8e 6c ff ff ff jle 73abea 0.00 : 73ac7e: 41 83 ff 61 cmp $0x61,%r15d 0.00 : 73ac82: b8 61 00 00 00 mov $0x61,%eax : { : if (rangelo > 'a') : rangelo = 'a'; : if (rangehi < 'z') 0.00 : 73ac87: ba 01 00 00 00 mov $0x1,%edx : rangelo = 'A'; : if (rangehi < 'Z') : rangehi = 'Z'; : } : /* Ditto lower-case */ : if (rangelo <= 'z' && rangehi >= 'a') 0.00 : 73ac8c: 44 0f 4f f8 cmovg %eax,%r15d : { : if (rangelo > 'a') : rangelo = 'a'; : if (rangehi < 'z') 0.00 : 73ac90: 83 fb 79 cmp $0x79,%ebx 0.00 : 73ac93: b0 7a mov $0x7a,%al 0.00 : 73ac95: 0f 4e d8 cmovle %eax,%ebx 0.00 : 73ac98: e9 e0 fd ff ff jmpq 73aa7d : * wrong in some cases --- in particular signed versus unsigned : * interpretation could trip us up. But it's useful enough in the : * majority of cases that we do it anyway. Should think about more : * rigorous ways to do it. : */ : switch (valuetypid) 0.00 : 73ac9d: 81 bd 58 ff ff ff bc cmpl $0x2bc,-0xa8(%rbp) 0.00 : 73aca4: 02 00 00 0.00 : 73aca7: 0f 82 06 fa ff ff jb 73a6b3 0.00 : 73acad: e9 b8 fe ff ff jmpq 73ab6a : } : : /* : * Now strip any common prefix of the three strings. : */ : while (*lobound) 0.00 : 73acb2: 4c 8b 65 b0 mov -0x50(%rbp),%r12 0.00 : 73acb6: 4c 8b 6d b8 mov -0x48(%rbp),%r13 0.00 : 73acba: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 73acbe: e9 47 fe ff ff jmpq 73ab0a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:1035 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000073b750 : : /* : * scalargtsel - Selectivity of ">" (also ">=") for integers. : */ : Datum : scalargtsel(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/selfuncs.c:1035 100.00 : 73b750: 55 push %rbp 0.00 : 73b751: 48 89 e5 mov %rsp,%rbp 0.00 : 73b754: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 73b758: 48 89 5d d8 mov %rbx,-0x28(%rbp) : : /* : * If expression is not variable op something or something op variable, : * then punt and return a default estimate. : */ : if (!get_restriction_variable(root, args, varRelid, 0.00 : 73b75c: 4c 8d 6d 90 lea -0x70(%rbp),%r13 : /* : * scalargtsel - Selectivity of ">" (also ">=") for integers. : */ : Datum : scalargtsel(PG_FUNCTION_ARGS) : { 0.00 : 73b760: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 73b764: 4c 89 75 f0 mov %r14,-0x10(%rbp) : : /* : * If expression is not variable op something or something op variable, : * then punt and return a default estimate. : */ : if (!get_restriction_variable(root, args, varRelid, 0.00 : 73b768: 4c 8d 4d cf lea -0x31(%rbp),%r9 : /* : * scalargtsel - Selectivity of ">" (also ">=") for integers. : */ : Datum : scalargtsel(PG_FUNCTION_ARGS) : { 0.00 : 73b76c: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 73b770: 48 83 c4 80 add $0xffffffffffffff80,%rsp : PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); 0.00 : 73b774: 48 8b 5f 20 mov 0x20(%rdi),%rbx : : /* : * If expression is not variable op something or something op variable, : * then punt and return a default estimate. : */ : if (!get_restriction_variable(root, args, varRelid, 0.00 : 73b778: 48 8b 57 38 mov 0x38(%rdi),%rdx 0.00 : 73b77c: 48 8b 77 30 mov 0x30(%rdi),%rsi 0.00 : 73b780: 4c 8d 45 c0 lea -0x40(%rbp),%r8 : */ : Datum : scalargtsel(PG_FUNCTION_ARGS) : { : PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); : Oid operator = PG_GETARG_OID(1); 0.00 : 73b784: 4c 8b 67 28 mov 0x28(%rdi),%r12 : : /* : * If expression is not variable op something or something op variable, : * then punt and return a default estimate. : */ : if (!get_restriction_variable(root, args, varRelid, 0.00 : 73b788: 4c 89 e9 mov %r13,%rcx 0.00 : 73b78b: 48 89 df mov %rbx,%rdi 0.00 : 73b78e: e8 4d d3 ff ff callq 738ae0 0.00 : 73b793: 84 c0 test %al,%al 0.00 : 73b795: 74 18 je 73b7af : PG_RETURN_FLOAT8(DEFAULT_INEQ_SEL); : : /* : * Can't do anything useful if the something is not a constant, either. : */ : if (!IsA(other, Const)) 0.00 : 73b797: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 73b79b: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 73b7a1: 74 35 je 73b7d8 : /* we have other > var, commute to make var < other */ : operator = get_commutator(operator); : if (!operator) : { : /* Use default selectivity (should we raise an error instead?) */ : ReleaseVariableStats(vardata); 0.00 : 73b7a3: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 73b7a7: 48 85 ff test %rdi,%rdi 0.00 : 73b7aa: 74 03 je 73b7af 0.00 : 73b7ac: ff 55 a8 callq *-0x58(%rbp) : PG_RETURN_FLOAT8(DEFAULT_INEQ_SEL); 0.00 : 73b7af: f2 0f 10 05 91 ec 15 movsd 0x15ec91(%rip),%xmm0 # 89a448 <__func__.16936+0x18> 0.00 : 73b7b6: 00 0.00 : 73b7b7: e8 04 22 04 00 callq 77d9c0 : selec = scalarineqsel(root, operator, isgt, &vardata, constval, consttype); : : ReleaseVariableStats(vardata); : : PG_RETURN_FLOAT8((float8) selec); : } 0.00 : 73b7bc: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 73b7c0: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 73b7c4: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 73b7c8: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 73b7cc: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 73b7d0: c9 leaveq 0.00 : 73b7d1: c3 retq 0.00 : 73b7d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * If the constant is NULL, assume operator is strict and return zero, ie, : * operator will never return TRUE. : */ : if (((Const *) other)->constisnull) 0.00 : 73b7d8: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 73b7dc: 74 22 je 73b800 : { : ReleaseVariableStats(vardata); 0.00 : 73b7de: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 73b7e2: 48 85 ff test %rdi,%rdi 0.00 : 73b7e5: 74 03 je 73b7ea 0.00 : 73b7e7: ff 55 a8 callq *-0x58(%rbp) : PG_RETURN_FLOAT8(0.0); 0.00 : 73b7ea: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 73b7ee: 66 90 xchg %ax,%ax 0.00 : 73b7f0: e8 cb 21 04 00 callq 77d9c0 : selec = scalarineqsel(root, operator, isgt, &vardata, constval, consttype); : : ReleaseVariableStats(vardata); : : PG_RETURN_FLOAT8((float8) selec); : } 0.00 : 73b7f5: eb c5 jmp 73b7bc 0.00 : 73b7f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 73b7fe: 00 00 : consttype = ((Const *) other)->consttype; : : /* : * Force the var to be on the left to simplify logic in scalarineqsel. : */ : if (varonleft) 0.00 : 73b800: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : */ : Datum : scalargtsel(PG_FUNCTION_ARGS) : { : PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); : Oid operator = PG_GETARG_OID(1); 0.00 : 73b804: 44 89 e6 mov %r12d,%esi : if (((Const *) other)->constisnull) : { : ReleaseVariableStats(vardata); : PG_RETURN_FLOAT8(0.0); : } : constval = ((Const *) other)->constvalue; 0.00 : 73b807: 4c 8b 78 18 mov 0x18(%rax),%r15 : consttype = ((Const *) other)->consttype; 0.00 : 73b80b: 44 8b 70 04 mov 0x4(%rax),%r14d : operator = get_commutator(operator); : if (!operator) : { : /* Use default selectivity (should we raise an error instead?) */ : ReleaseVariableStats(vardata); : PG_RETURN_FLOAT8(DEFAULT_INEQ_SEL); 0.00 : 73b80f: ba 01 00 00 00 mov $0x1,%edx : consttype = ((Const *) other)->consttype; : : /* : * Force the var to be on the left to simplify logic in scalarineqsel. : */ : if (varonleft) 0.00 : 73b814: 75 14 jne 73b82a : isgt = true; : } : else : { : /* we have other > var, commute to make var < other */ : operator = get_commutator(operator); 0.00 : 73b816: 44 89 e7 mov %r12d,%edi 0.00 : 73b819: e8 52 6f 03 00 callq 772770 : if (!operator) 0.00 : 73b81e: 31 d2 xor %edx,%edx 0.00 : 73b820: 85 c0 test %eax,%eax : isgt = true; : } : else : { : /* we have other > var, commute to make var < other */ : operator = get_commutator(operator); 0.00 : 73b822: 89 c6 mov %eax,%esi : if (!operator) 0.00 : 73b824: 0f 84 79 ff ff ff je 73b7a3 : PG_RETURN_FLOAT8(DEFAULT_INEQ_SEL); : } : isgt = false; : } : : selec = scalarineqsel(root, operator, isgt, &vardata, constval, consttype); 0.00 : 73b82a: 48 89 df mov %rbx,%rdi 0.00 : 73b82d: 45 89 f1 mov %r14d,%r9d 0.00 : 73b830: 4d 89 f8 mov %r15,%r8 0.00 : 73b833: 4c 89 e9 mov %r13,%rcx 0.00 : 73b836: e8 95 f4 ff ff callq 73acd0 : : ReleaseVariableStats(vardata); 0.00 : 73b83b: 48 8b 7d a0 mov -0x60(%rbp),%rdi : PG_RETURN_FLOAT8(DEFAULT_INEQ_SEL); : } : isgt = false; : } : : selec = scalarineqsel(root, operator, isgt, &vardata, constval, consttype); 0.00 : 73b83f: f2 0f 11 45 88 movsd %xmm0,-0x78(%rbp) : : ReleaseVariableStats(vardata); 0.00 : 73b844: 48 85 ff test %rdi,%rdi 0.00 : 73b847: 74 03 je 73b84c 0.00 : 73b849: ff 55 a8 callq *-0x58(%rbp) : : PG_RETURN_FLOAT8((float8) selec); 0.00 : 73b84c: f2 0f 10 45 88 movsd -0x78(%rbp),%xmm0 0.00 : 73b851: e8 6a 21 04 00 callq 77d9c0 : } 0.00 : 73b856: e9 61 ff ff ff jmpq 73b7bc Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:5027 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000743870 : : /* timestamptz_timestamp() : * Convert timestamp at GMT to local timestamp : */ : Datum : timestamptz_timestamp(PG_FUNCTION_ARGS) : { 0.00 : 743870: 55 push %rbp : struct pg_tm tt, : *tm = &tt; : fsec_t fsec; : int tz; : : if (TIMESTAMP_NOT_FINITE(timestamp)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/timestamp.c:5027 100.00 : 743871: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 743878: 00 00 80 : /* timestamptz_timestamp() : * Convert timestamp at GMT to local timestamp : */ : Datum : timestamptz_timestamp(PG_FUNCTION_ARGS) : { 0.00 : 74387b: 48 89 e5 mov %rsp,%rbp 0.00 : 74387e: 53 push %rbx 0.00 : 74387f: 48 83 ec 58 sub $0x58,%rsp : TimestampTz timestamp = PG_GETARG_TIMESTAMPTZ(0); 0.00 : 743883: 48 8b 7f 20 mov 0x20(%rdi),%rdi : struct pg_tm tt, : *tm = &tt; : fsec_t fsec; : int tz; : : if (TIMESTAMP_NOT_FINITE(timestamp)) 0.00 : 743887: 48 39 c7 cmp %rax,%rdi 0.00 : 74388a: 74 54 je 7438e0 0.00 : 74388c: 48 83 e8 01 sub $0x1,%rax 0.00 : 743890: 48 39 c7 cmp %rax,%rdi 0.00 : 743893: 74 4b je 7438e0 : result = timestamp; : else : { : if (timestamp2tm(timestamp, &tz, tm, &fsec, NULL, NULL) != 0) 0.00 : 743895: 48 8d 5d a0 lea -0x60(%rbp),%rbx 0.00 : 743899: 48 8d 4d ec lea -0x14(%rbp),%rcx 0.00 : 74389d: 48 8d 75 e8 lea -0x18(%rbp),%rsi 0.00 : 7438a1: 45 31 c9 xor %r9d,%r9d 0.00 : 7438a4: 45 31 c0 xor %r8d,%r8d 0.00 : 7438a7: 48 89 da mov %rbx,%rdx 0.00 : 7438aa: e8 f1 fb ff ff callq 7434a0 0.00 : 7438af: 85 c0 test %eax,%eax 0.00 : 7438b1: 75 3c jne 7438ef : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : if (tm2timestamp(tm, fsec, NULL, &result) != 0) 0.00 : 7438b3: 8b 75 ec mov -0x14(%rbp),%esi 0.00 : 7438b6: 48 8d 4d e0 lea -0x20(%rbp),%rcx 0.00 : 7438ba: 31 d2 xor %edx,%edx 0.00 : 7438bc: 48 89 df mov %rbx,%rdi 0.00 : 7438bf: e8 6c ef ff ff callq 742830 0.00 : 7438c4: 85 c0 test %eax,%eax 0.00 : 7438c6: 74 1c je 7438e4 : ereport(ERROR, 0.00 : 7438c8: 45 31 c0 xor %r8d,%r8d 0.00 : 7438cb: b9 00 9f 8c 00 mov $0x8c9f00,%ecx 0.00 : 7438d0: ba ae 13 00 00 mov $0x13ae,%edx 0.00 : 7438d5: eb 25 jmp 7438fc 0.00 : 7438d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7438de: 00 00 : *tm = &tt; : fsec_t fsec; : int tz; : : if (TIMESTAMP_NOT_FINITE(timestamp)) : result = timestamp; 0.00 : 7438e0: 48 89 7d e0 mov %rdi,-0x20(%rbp) : if (timestamp2tm(timestamp, &tz, tm, &fsec, NULL, NULL) != 0) : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : if (tm2timestamp(tm, fsec, NULL, &result) != 0) : ereport(ERROR, 0.00 : 7438e4: 48 8b 45 e0 mov -0x20(%rbp),%rax : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : } : PG_RETURN_TIMESTAMP(result); : } 0.00 : 7438e8: 48 83 c4 58 add $0x58,%rsp 0.00 : 7438ec: 5b pop %rbx 0.00 : 7438ed: c9 leaveq 0.00 : 7438ee: c3 retq : if (TIMESTAMP_NOT_FINITE(timestamp)) : result = timestamp; : else : { : if (timestamp2tm(timestamp, &tz, tm, &fsec, NULL, NULL) != 0) : ereport(ERROR, 0.00 : 7438ef: 45 31 c0 xor %r8d,%r8d 0.00 : 7438f2: b9 00 9f 8c 00 mov $0x8c9f00,%ecx 0.00 : 7438f7: ba aa 13 00 00 mov $0x13aa,%edx : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("timestamp out of range"))); : if (tm2timestamp(tm, fsec, NULL, &result) != 0) : ereport(ERROR, 0.00 : 7438fc: be 17 94 8c 00 mov $0x8c9417,%esi 0.00 : 743901: bf 14 00 00 00 mov $0x14,%edi 0.00 : 743906: e8 b5 71 03 00 callq 77aac0 0.00 : 74390b: 84 c0 test %al,%al 0.00 : 74390d: 75 05 jne 743914 0.00 : 74390f: e8 bc 5b d2 ff callq 4694d0 0.00 : 743914: bf f8 94 8b 00 mov $0x8b94f8,%edi 0.00 : 743919: 31 c0 xor %eax,%eax 0.00 : 74391b: e8 80 8f 03 00 callq 77c8a0 0.00 : 743920: bf 82 00 00 08 mov $0x8000082,%edi 0.00 : 743925: 89 c3 mov %eax,%ebx 0.00 : 743927: e8 24 94 03 00 callq 77cd50 0.00 : 74392c: 89 de mov %ebx,%esi 0.00 : 74392e: 89 c7 mov %eax,%edi 0.00 : 743930: 31 c0 xor %eax,%eax 0.00 : 743932: e8 a9 6c 03 00 callq 77a5e0 0.00 : 743937: eb d6 jmp 74390f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:178 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075a1b0 : : * "text *", but it seems useful for robustness. If we didn't handle that : * case here, we'd need another routine that did, anyway. : */ : char * : text_to_cstring(const text *t) : { 0.00 : 75a1b0: 55 push %rbp 0.00 : 75a1b1: 48 89 e5 mov %rsp,%rbp 0.00 : 75a1b4: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 75a1b8: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 75a1bc: 49 89 fe mov %rdi,%r14 0.00 : 75a1bf: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 75a1c3: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 75a1c7: 48 83 ec 20 sub $0x20,%rsp : /* must cast away the const, unfortunately */ : text *tunpacked = pg_detoast_datum_packed((struct varlena *) t); 0.00 : 75a1cb: e8 10 4b 02 00 callq 77ece0 0.00 : 75a1d0: 49 89 c5 mov %rax,%r13 : int len = VARSIZE_ANY_EXHDR(tunpacked); 0.00 : 75a1d3: 0f b6 00 movzbl (%rax),%eax 0.00 : 75a1d6: 3c 01 cmp $0x1,%al 0.00 : 75a1d8: 74 76 je 75a250 0.00 : 75a1da: a8 01 test $0x1,%al 0.00 : 75a1dc: 75 62 jne 75a240 0.00 : 75a1de: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 75a1e2: c1 e8 02 shr $0x2,%eax 0.00 : 75a1e5: 83 e8 04 sub $0x4,%eax 0.00 : 75a1e8: 8d 50 01 lea 0x1(%rax),%edx 0.00 : 75a1eb: 4c 63 e0 movslq %eax,%r12 0.00 : 75a1ee: 48 63 fa movslq %edx,%rdi : char *result; : : result = (char *) palloc(len + 1); 0.00 : 75a1f1: e8 5a eb 03 00 callq 798d50 : memcpy(result, VARDATA_ANY(tunpacked), len); 0.00 : 75a1f6: 41 f6 45 00 01 testb $0x1,0x0(%r13) : /* must cast away the const, unfortunately */ : text *tunpacked = pg_detoast_datum_packed((struct varlena *) t); : int len = VARSIZE_ANY_EXHDR(tunpacked); : char *result; : : result = (char *) palloc(len + 1); 0.00 : 75a1fb: 48 89 c3 mov %rax,%rbx : memcpy(result, VARDATA_ANY(tunpacked), len); 0.00 : 75a1fe: 49 8d 75 01 lea 0x1(%r13),%rsi 0.00 : 75a202: 49 8d 45 04 lea 0x4(%r13),%rax 0.00 : 75a206: 4c 89 e2 mov %r12,%rdx 0.00 : 75a209: 48 89 df mov %rbx,%rdi 0.00 : 75a20c: 48 0f 44 f0 cmove %rax,%rsi 0.00 : 75a210: e8 db f9 d0 ff callq 469bf0 : result[len] = '\0'; : : if (tunpacked != t) 0.00 : 75a215: 4d 39 ee cmp %r13,%r14 : int len = VARSIZE_ANY_EXHDR(tunpacked); : char *result; : : result = (char *) palloc(len + 1); : memcpy(result, VARDATA_ANY(tunpacked), len); : result[len] = '\0'; 0.00 : 75a218: 42 c6 04 23 00 movb $0x0,(%rbx,%r12,1) : : if (tunpacked != t) 0.00 : 75a21d: 74 08 je 75a227 : pfree(tunpacked); 0.00 : 75a21f: 4c 89 ef mov %r13,%rdi 0.00 : 75a222: e8 59 e9 03 00 callq 798b80 : : return result; : } 0.00 : 75a227: 48 89 d8 mov %rbx,%rax 0.00 : 75a22a: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 75a22f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 75a233: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 75a238: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 75a23d: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:178 100.00 : 75a23e: c3 retq 0.00 : 75a23f: 90 nop : char * : text_to_cstring(const text *t) : { : /* must cast away the const, unfortunately */ : text *tunpacked = pg_detoast_datum_packed((struct varlena *) t); : int len = VARSIZE_ANY_EXHDR(tunpacked); 0.00 : 75a240: d0 e8 shr %al 0.00 : 75a242: 0f b6 c0 movzbl %al,%eax 0.00 : 75a245: 8d 50 ff lea -0x1(%rax),%edx 0.00 : 75a248: 48 63 f8 movslq %eax,%rdi 0.00 : 75a24b: 4c 63 e2 movslq %edx,%r12 0.00 : 75a24e: eb a1 jmp 75a1f1 0.00 : 75a250: 41 0f b6 55 01 movzbl 0x1(%r13),%edx 0.00 : 75a255: bf 09 00 00 00 mov $0x9,%edi 0.00 : 75a25a: 41 bc 08 00 00 00 mov $0x8,%r12d 0.00 : 75a260: 80 fa 01 cmp $0x1,%dl 0.00 : 75a263: 74 8c je 75a1f1 0.00 : 75a265: 80 fa 12 cmp $0x12,%dl 0.00 : 75a268: b8 11 00 00 00 mov $0x11,%eax 0.00 : 75a26d: bf 02 00 00 00 mov $0x2,%edi 0.00 : 75a272: 48 0f 44 f8 cmove %rax,%rdi 0.00 : 75a276: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 75a27c: b0 10 mov $0x10,%al 0.00 : 75a27e: 4c 0f 44 e0 cmove %rax,%r12 0.00 : 75a282: e9 6a ff ff ff jmpq 75a1f1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:832 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075c520 : : * : * The result is always a freshly palloc'd datum. : */ : static text * : text_substring(Datum str, int32 start, int32 length, bool length_not_specified) : { 0.00 : 75c520: 55 push %rbp 0.00 : 75c521: 48 89 e5 mov %rsp,%rbp 0.00 : 75c524: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 75c528: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 75c52c: 89 f3 mov %esi,%ebx 0.00 : 75c52e: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 75c532: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 75c536: 41 89 d5 mov %edx,%r13d 0.00 : 75c539: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 75c53d: 48 83 ec 40 sub $0x40,%rsp 0.00 : 75c541: 48 89 7d c8 mov %rdi,-0x38(%rbp) 0.00 : 75c545: 41 89 cc mov %ecx,%r12d : int32 eml = pg_database_encoding_max_length(); 0.00 : 75c548: e8 43 f3 02 00 callq 78b890 : int32 S = start; /* start position */ : int32 S1; /* adjusted start position */ : int32 L1; /* adjusted substring length */ : : /* life is easy if the encoding max length is 1 */ : if (eml == 1) 0.00 : 75c54d: 83 f8 01 cmp $0x1,%eax 0.00 : 75c550: 0f 84 da 00 00 00 je 75c630 : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); : } : else if (eml > 1) 0.00 : 75c556: 0f 8e 5e 02 00 00 jle 75c7ba : : /* : * if S is past the end of the string, the tuple toaster will return a : * zero-length string to us : */ : S1 = Max(S, 1); 0.00 : 75c55c: 85 db test %ebx,%ebx 0.00 : 75c55e: ba 01 00 00 00 mov $0x1,%edx : * in advance which byte offset corresponds to the supplied start : * position. : */ : slice_start = 0; : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c563: c7 45 d0 ff ff ff ff movl $0xffffffff,-0x30(%rbp) : : /* : * if S is past the end of the string, the tuple toaster will return a : * zero-length string to us : */ : S1 = Max(S, 1); 0.00 : 75c56a: 0f 4f d3 cmovg %ebx,%edx : * in advance which byte offset corresponds to the supplied start : * position. : */ : slice_start = 0; : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c56d: 45 84 e4 test %r12b,%r12b : : /* : * if S is past the end of the string, the tuple toaster will return a : * zero-length string to us : */ : S1 = Max(S, 1); 0.00 : 75c570: 89 55 d4 mov %edx,-0x2c(%rbp) : * in advance which byte offset corresponds to the supplied start : * position. : */ : slice_start = 0; : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c573: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 75c578: 75 1c jne 75c596 : * string */ : slice_size = L1 = -1; : else : { : int E = S + length; 0.00 : 75c57a: 41 8d 54 1d 00 lea 0x0(%r13,%rbx,1),%edx : : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) 0.00 : 75c57f: 39 d3 cmp %edx,%ebx 0.00 : 75c581: 0f 8f 5d 02 00 00 jg 75c7e4 : /* : * A zero or negative value for the end position can happen if the : * start was negative or one. SQL99 says to return a zero-length : * string. : */ : if (E < 1) 0.00 : 75c587: 85 d2 test %edx,%edx 0.00 : 75c589: 7e 5c jle 75c5e7 : : /* : * Total slice size in bytes can't be any longer than the start : * position plus substring length times the encoding max length. : */ : slice_size = (S1 + L1) * eml; 0.00 : 75c58b: 89 d1 mov %edx,%ecx 0.00 : 75c58d: 2b 4d d4 sub -0x2c(%rbp),%ecx 0.00 : 75c590: 0f af d0 imul %eax,%edx 0.00 : 75c593: 89 4d d0 mov %ecx,-0x30(%rbp) : : /* : * If we're working with an untoasted source, no need to do an extra : * copying step. : */ : if (VARATT_IS_COMPRESSED(DatumGetPointer(str)) || 0.00 : 75c596: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 75c59a: 0f b6 08 movzbl (%rax),%ecx 0.00 : 75c59d: 89 c8 mov %ecx,%eax 0.00 : 75c59f: 83 e0 03 and $0x3,%eax 0.00 : 75c5a2: 83 f8 02 cmp $0x2,%eax 0.00 : 75c5a5: 74 69 je 75c610 0.00 : 75c5a7: 80 e9 01 sub $0x1,%cl : VARATT_IS_EXTERNAL(DatumGetPointer(str))) : slice = DatumGetTextPSlice(str, slice_start, slice_size); : else : slice = (text *) DatumGetPointer(str); 0.00 : 75c5aa: 4c 8b 75 c8 mov -0x38(%rbp),%r14 : : /* : * If we're working with an untoasted source, no need to do an extra : * copying step. : */ : if (VARATT_IS_COMPRESSED(DatumGetPointer(str)) || 0.00 : 75c5ae: 74 60 je 75c610 : slice = DatumGetTextPSlice(str, slice_start, slice_size); : else : slice = (text *) DatumGetPointer(str); : : /* see if we got back an empty string */ : if (VARSIZE_ANY_EXHDR(slice) == 0) 0.00 : 75c5b0: 41 0f b6 16 movzbl (%r14),%edx 0.00 : 75c5b4: 80 fa 01 cmp $0x1,%dl 0.00 : 75c5b7: 0f 84 e3 00 00 00 je 75c6a0 0.00 : 75c5bd: 89 d1 mov %edx,%ecx 0.00 : 75c5bf: 83 e1 01 and $0x1,%ecx 0.00 : 75c5c2: 0f 84 b0 00 00 00 je 75c678 0.00 : 75c5c8: 89 d0 mov %edx,%eax 0.00 : 75c5ca: d0 e8 shr %al 0.00 : 75c5cc: 2c 01 sub $0x1,%al 0.00 : 75c5ce: 0f 94 c0 sete %al 0.00 : 75c5d1: 84 c0 test %al,%al 0.00 : 75c5d3: 0f 84 b3 00 00 00 je 75c68c : * Check that the start position wasn't > slice_strlen. If so, SQL99 : * says to return a zero-length string. : */ : if (S1 > slice_strlen) : { : if (slice != (text *) DatumGetPointer(str)) 0.00 : 75c5d9: 4c 3b 75 c8 cmp -0x38(%rbp),%r14 0.00 : 75c5dd: 74 08 je 75c5e7 : pfree(slice); 0.00 : 75c5df: 4c 89 f7 mov %r14,%rdi 0.00 : 75c5e2: e8 99 c5 03 00 callq 798b80 : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c5e7: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75c5eb: 4c 8b 65 e0 mov -0x20(%rbp),%r12 : */ : if (S1 > slice_strlen) : { : if (slice != (text *) DatumGetPointer(str)) : pfree(slice); : return cstring_to_text(""); 0.00 : 75c5ef: bf 96 16 8e 00 mov $0x8e1696,%edi : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c5f4: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 75c5f8: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75c5fc: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 75c600: c9 leaveq : */ : if (S1 > slice_strlen) : { : if (slice != (text *) DatumGetPointer(str)) : pfree(slice); : return cstring_to_text(""); 0.00 : 75c601: e9 6a ef ff ff jmpq 75b570 0.00 : 75c606: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 75c60d: 00 00 00 : * If we're working with an untoasted source, no need to do an extra : * copying step. : */ : if (VARATT_IS_COMPRESSED(DatumGetPointer(str)) || : VARATT_IS_EXTERNAL(DatumGetPointer(str))) : slice = DatumGetTextPSlice(str, slice_start, slice_size); 0.00 : 75c610: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 75c614: 31 f6 xor %esi,%esi 0.00 : 75c616: e8 75 2c 02 00 callq 77f290 0.00 : 75c61b: 49 89 c6 mov %rax,%r14 : else : slice = (text *) DatumGetPointer(str); : : /* see if we got back an empty string */ : if (VARSIZE_ANY_EXHDR(slice) == 0) 0.00 : 75c61e: 41 0f b6 16 movzbl (%r14),%edx 0.00 : 75c622: 80 fa 01 cmp $0x1,%dl 0.00 : 75c625: 75 96 jne 75c5bd 0.00 : 75c627: eb 77 jmp 75c6a0 0.00 : 75c629: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : int32 L1; /* adjusted substring length */ : : /* life is easy if the encoding max length is 1 */ : if (eml == 1) : { : S1 = Max(S, 1); 0.00 : 75c630: 85 db test %ebx,%ebx : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c632: ba ff ff ff ff mov $0xffffffff,%edx : int32 L1; /* adjusted substring length */ : : /* life is easy if the encoding max length is 1 */ : if (eml == 1) : { : S1 = Max(S, 1); 0.00 : 75c637: 0f 4f c3 cmovg %ebx,%eax : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c63a: 45 84 e4 test %r12b,%r12b 0.00 : 75c63d: 75 13 jne 75c652 : * string */ : L1 = -1; : else : { : /* end position */ : int E = S + length; 0.00 : 75c63f: 41 8d 54 1d 00 lea 0x0(%r13,%rbx,1),%edx : : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) 0.00 : 75c644: 39 d3 cmp %edx,%ebx 0.00 : 75c646: 0f 8f dd 01 00 00 jg 75c829 : /* : * A zero or negative value for the end position can happen if the : * start was negative or one. SQL99 says to return a zero-length : * string. : */ : if (E < 1) 0.00 : 75c64c: 85 d2 test %edx,%edx 0.00 : 75c64e: 7e 97 jle 75c5e7 : return cstring_to_text(""); : : L1 = E - S1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:832 100.00 : 75c650: 29 c2 sub %eax,%edx : /* : * If the start position is past the end of the string, SQL99 says to : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); 0.00 : 75c652: 48 8b 7d c8 mov -0x38(%rbp),%rdi : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c656: 48 8b 5d d8 mov -0x28(%rbp),%rbx : /* : * If the start position is past the end of the string, SQL99 says to : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); 0.00 : 75c65a: 8d 70 ff lea -0x1(%rax),%esi : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c65d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 75c661: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 75c665: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75c669: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 75c66d: c9 leaveq : /* : * If the start position is past the end of the string, SQL99 says to : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); 0.00 : 75c66e: e9 1d 2c 02 00 jmpq 77f290 0.00 : 75c673: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : slice = DatumGetTextPSlice(str, slice_start, slice_size); : else : slice = (text *) DatumGetPointer(str); : : /* see if we got back an empty string */ : if (VARSIZE_ANY_EXHDR(slice) == 0) 0.00 : 75c678: 41 8b 06 mov (%r14),%eax 0.00 : 75c67b: c1 e8 02 shr $0x2,%eax 0.00 : 75c67e: 83 f8 04 cmp $0x4,%eax 0.00 : 75c681: 0f 94 c0 sete %al 0.00 : 75c684: 84 c0 test %al,%al 0.00 : 75c686: 0f 85 4d ff ff ff jne 75c5d9 : pfree(slice); : return cstring_to_text(""); : } : : /* Now we can get the actual length of the slice in MB characters */ : slice_strlen = pg_mbstrlen_with_len(VARDATA_ANY(slice), 0.00 : 75c68c: 85 c9 test %ecx,%ecx 0.00 : 75c68e: 0f 84 14 01 00 00 je 75c7a8 0.00 : 75c694: d0 ea shr %dl 0.00 : 75c696: 0f b6 c2 movzbl %dl,%eax 0.00 : 75c699: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 75c69c: eb 1d jmp 75c6bb 0.00 : 75c69e: 66 90 xchg %ax,%ax 0.00 : 75c6a0: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 75c6a5: be 08 00 00 00 mov $0x8,%esi 0.00 : 75c6aa: 3c 01 cmp $0x1,%al 0.00 : 75c6ac: 74 0d je 75c6bb 0.00 : 75c6ae: 3c 12 cmp $0x12,%al 0.00 : 75c6b0: 40 b6 10 mov $0x10,%sil 0.00 : 75c6b3: b8 01 00 00 00 mov $0x1,%eax 0.00 : 75c6b8: 0f 45 f0 cmovne %eax,%esi 0.00 : 75c6bb: 49 8d 7e 01 lea 0x1(%r14),%rdi 0.00 : 75c6bf: e8 bc c3 02 00 callq 788a80 : : /* : * Check that the start position wasn't > slice_strlen. If so, SQL99 : * says to return a zero-length string. : */ : if (S1 > slice_strlen) 0.00 : 75c6c4: 39 45 d4 cmp %eax,-0x2c(%rbp) 0.00 : 75c6c7: 0f 8f 0c ff ff ff jg 75c5d9 : : /* : * Adjust L1 and E1 now that we know the slice string length. Again : * remember that S1 is one based, and slice_start is zero based. : */ : if (L1 > -1) 0.00 : 75c6cd: 44 8b 4d d0 mov -0x30(%rbp),%r9d : E1 = Min(S1 + L1, slice_start + 1 + slice_strlen); : else : E1 = slice_start + 1 + slice_strlen; 0.00 : 75c6d1: 44 8d 78 01 lea 0x1(%rax),%r15d : : /* : * Adjust L1 and E1 now that we know the slice string length. Again : * remember that S1 is one based, and slice_start is zero based. : */ : if (L1 > -1) 0.00 : 75c6d5: 45 85 c9 test %r9d,%r9d 0.00 : 75c6d8: 78 11 js 75c6eb : E1 = Min(S1 + L1, slice_start + 1 + slice_strlen); 0.00 : 75c6da: 44 8d 78 01 lea 0x1(%rax),%r15d 0.00 : 75c6de: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 75c6e1: 03 45 d4 add -0x2c(%rbp),%eax 0.00 : 75c6e4: 41 39 c7 cmp %eax,%r15d 0.00 : 75c6e7: 44 0f 4f f8 cmovg %eax,%r15d : E1 = slice_start + 1 + slice_strlen; : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); 0.00 : 75c6eb: 41 f6 06 01 testb $0x1,(%r14) : for (i = 0; i < S1 - 1; i++) 0.00 : 75c6ef: 44 8b 65 d4 mov -0x2c(%rbp),%r12d : E1 = slice_start + 1 + slice_strlen; : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); 0.00 : 75c6f3: 4d 8d 6e 01 lea 0x1(%r14),%r13 0.00 : 75c6f7: 49 8d 46 04 lea 0x4(%r14),%rax 0.00 : 75c6fb: 4c 0f 44 e8 cmove %rax,%r13 : for (i = 0; i < S1 - 1; i++) 0.00 : 75c6ff: 41 83 ec 01 sub $0x1,%r12d : E1 = slice_start + 1 + slice_strlen; : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); 0.00 : 75c703: 31 db xor %ebx,%ebx : for (i = 0; i < S1 - 1; i++) 0.00 : 75c705: 45 85 e4 test %r12d,%r12d 0.00 : 75c708: 7e 1b jle 75c725 0.00 : 75c70a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : p += pg_mblen(p); 0.00 : 75c710: 4c 89 ef mov %r13,%rdi : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); : for (i = 0; i < S1 - 1; i++) 0.00 : 75c713: 83 c3 01 add $0x1,%ebx : p += pg_mblen(p); 0.00 : 75c716: e8 45 c1 02 00 callq 788860 0.00 : 75c71b: 48 98 cltq 0.00 : 75c71d: 49 01 c5 add %rax,%r13 : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); : for (i = 0; i < S1 - 1; i++) 0.00 : 75c720: 41 39 dc cmp %ebx,%r12d 0.00 : 75c723: 7f eb jg 75c710 : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c725: 44 3b 7d d4 cmp -0x2c(%rbp),%r15d : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); : for (i = 0; i < S1 - 1; i++) 0.00 : 75c729: 4d 89 ec mov %r13,%r12 : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c72c: 7e 1f jle 75c74d 0.00 : 75c72e: 8b 5d d4 mov -0x2c(%rbp),%ebx 0.00 : 75c731: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : p += pg_mblen(p); 0.00 : 75c738: 4c 89 e7 mov %r12,%rdi : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c73b: 83 c3 01 add $0x1,%ebx : p += pg_mblen(p); 0.00 : 75c73e: e8 1d c1 02 00 callq 788860 0.00 : 75c743: 48 98 cltq 0.00 : 75c745: 49 01 c4 add %rax,%r12 : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c748: 41 39 df cmp %ebx,%r15d 0.00 : 75c74b: 7f eb jg 75c738 : p += pg_mblen(p); : : ret = (text *) palloc(VARHDRSZ + (p - s)); 0.00 : 75c74d: 4c 89 e3 mov %r12,%rbx 0.00 : 75c750: 4c 29 eb sub %r13,%rbx 0.00 : 75c753: 48 8d 7b 04 lea 0x4(%rbx),%rdi 0.00 : 75c757: e8 f4 c5 03 00 callq 798d50 0.00 : 75c75c: 49 89 c7 mov %rax,%r15 : SET_VARSIZE(ret, VARHDRSZ + (p - s)); 0.00 : 75c75f: 44 89 e0 mov %r12d,%eax : memcpy(VARDATA(ret), s, (p - s)); 0.00 : 75c762: 48 89 da mov %rbx,%rdx : */ : for (i = S1; i < E1; i++) : p += pg_mblen(p); : : ret = (text *) palloc(VARHDRSZ + (p - s)); : SET_VARSIZE(ret, VARHDRSZ + (p - s)); 0.00 : 75c765: 44 29 e8 sub %r13d,%eax : memcpy(VARDATA(ret), s, (p - s)); 0.00 : 75c768: 49 8d 7f 04 lea 0x4(%r15),%rdi 0.00 : 75c76c: 4c 89 ee mov %r13,%rsi : */ : for (i = S1; i < E1; i++) : p += pg_mblen(p); : : ret = (text *) palloc(VARHDRSZ + (p - s)); : SET_VARSIZE(ret, VARHDRSZ + (p - s)); 0.00 : 75c76f: 8d 04 85 10 00 00 00 lea 0x10(,%rax,4),%eax 0.00 : 75c776: 41 89 07 mov %eax,(%r15) : memcpy(VARDATA(ret), s, (p - s)); 0.00 : 75c779: e8 72 d4 d0 ff callq 469bf0 : : if (slice != (text *) DatumGetPointer(str)) 0.00 : 75c77e: 4c 3b 75 c8 cmp -0x38(%rbp),%r14 0.00 : 75c782: 74 08 je 75c78c : pfree(slice); 0.00 : 75c784: 4c 89 f7 mov %r14,%rdi 0.00 : 75c787: e8 f4 c3 03 00 callq 798b80 : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c78c: 4c 89 f8 mov %r15,%rax 0.00 : 75c78f: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75c793: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 75c797: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 75c79b: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75c79f: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 75c7a3: c9 leaveq 0.00 : 75c7a4: c3 retq 0.00 : 75c7a5: 0f 1f 00 nopl (%rax) : pfree(slice); : return cstring_to_text(""); : } : : /* Now we can get the actual length of the slice in MB characters */ : slice_strlen = pg_mbstrlen_with_len(VARDATA_ANY(slice), 0.00 : 75c7a8: 41 8b 06 mov (%r14),%eax 0.00 : 75c7ab: 49 8d 7e 04 lea 0x4(%r14),%rdi 0.00 : 75c7af: c1 e8 02 shr $0x2,%eax 0.00 : 75c7b2: 8d 70 fc lea -0x4(%rax),%esi 0.00 : 75c7b5: e9 05 ff ff ff jmpq 75c6bf : pfree(slice); : : return ret; : } : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); 0.00 : 75c7ba: be d2 03 00 00 mov $0x3d2,%esi 0.00 : 75c7bf: bf 8b bb 8c 00 mov $0x8cbb8b,%edi 0.00 : 75c7c4: ba 40 bf 8c 00 mov $0x8cbf40,%edx 0.00 : 75c7c9: e8 52 ec 01 00 callq 77b420 0.00 : 75c7ce: be 88 bd 8c 00 mov $0x8cbd88,%esi 0.00 : 75c7d3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 75c7d8: 31 c0 xor %eax,%eax 0.00 : 75c7da: e8 51 ea 01 00 callq 77b230 0.00 : 75c7df: e8 ec cc d0 ff callq 4694d0 : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) : ereport(ERROR, 0.00 : 75c7e4: 45 31 c0 xor %r8d,%r8d 0.00 : 75c7e7: b9 40 bf 8c 00 mov $0x8cbf40,%ecx 0.00 : 75c7ec: ba 76 03 00 00 mov $0x376,%edx 0.00 : 75c7f1: be 8b bb 8c 00 mov $0x8cbb8b,%esi 0.00 : 75c7f6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 75c7fb: e8 c0 e2 01 00 callq 77aac0 0.00 : 75c800: 84 c0 test %al,%al 0.00 : 75c802: 74 db je 75c7df 0.00 : 75c804: bf 98 b8 8c 00 mov $0x8cb898,%edi 0.00 : 75c809: 31 c0 xor %eax,%eax 0.00 : 75c80b: e8 90 00 02 00 callq 77c8a0 0.00 : 75c810: bf 82 00 04 01 mov $0x1040082,%edi 0.00 : 75c815: 89 c3 mov %eax,%ebx 0.00 : 75c817: e8 34 05 02 00 callq 77cd50 0.00 : 75c81c: 89 de mov %ebx,%esi 0.00 : 75c81e: 89 c7 mov %eax,%edi 0.00 : 75c820: 31 c0 xor %eax,%eax 0.00 : 75c822: e8 b9 dd 01 00 callq 77a5e0 0.00 : 75c827: eb b6 jmp 75c7df : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) : ereport(ERROR, 0.00 : 75c829: 45 31 c0 xor %r8d,%r8d 0.00 : 75c82c: b9 40 bf 8c 00 mov $0x8cbf40,%ecx 0.00 : 75c831: ba 36 03 00 00 mov $0x336,%edx 0.00 : 75c836: eb b9 jmp 75c7f1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:488 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007653c0 : : * : * This routine is only quasi-public: it should only be used by inval.c. : */ : void : CatalogCacheIdInvalidate(int cacheId, uint32 hashValue) : { 0.00 : 7653c0: 55 push %rbp : CACHE1_elog(DEBUG2, "CatalogCacheIdInvalidate: called"); : : /* : * inspect caches to find the proper cache : */ : slist_foreach(cache_iter, &CacheHdr->ch_caches) 0.00 : 7653c1: 48 8b 05 00 2d 45 00 mov 0x452d00(%rip),%rax # bb80c8 : * : * This routine is only quasi-public: it should only be used by inval.c. : */ : void : CatalogCacheIdInvalidate(int cacheId, uint32 hashValue) : { 0.00 : 7653c8: 48 89 e5 mov %rsp,%rbp 0.00 : 7653cb: 41 56 push %r14 0.00 : 7653cd: 41 89 f6 mov %esi,%r14d 0.00 : 7653d0: 41 55 push %r13 0.00 : 7653d2: 41 54 push %r12 0.00 : 7653d4: 53 push %rbx 0.00 : 7653d5: eb 12 jmp 7653e9 0.00 : 7653d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7653de: 00 00 : { : CatCache *ccp = slist_container(CatCache, cc_next, cache_iter.cur); : Index hashIndex; : dlist_mutable_iter iter; : : if (cacheId != ccp->id) 0.00 : 7653e0: 39 78 f8 cmp %edi,-0x8(%rax) : /* : * inspect caches to find the proper cache : */ : slist_foreach(cache_iter, &CacheHdr->ch_caches) : { : CatCache *ccp = slist_container(CatCache, cc_next, cache_iter.cur); 0.00 : 7653e3: 4c 8d 68 f8 lea -0x8(%rax),%r13 : Index hashIndex; : dlist_mutable_iter iter; : : if (cacheId != ccp->id) 0.00 : 7653e7: 74 17 je 765400 : CACHE1_elog(DEBUG2, "CatalogCacheIdInvalidate: called"); : : /* : * inspect caches to find the proper cache : */ : slist_foreach(cache_iter, &CacheHdr->ch_caches) 0.00 : 7653e9: 48 8b 00 mov (%rax),%rax 0.00 : 7653ec: 48 85 c0 test %rax,%rax 0.00 : 7653ef: 75 ef jne 7653e0 : /* could be multiple matches, so keep looking! */ : } : } : break; /* need only search this one cache */ : } : } 0.00 : 7653f1: 5b pop %rbx 0.00 : 7653f2: 41 5c pop %r12 0.00 : 7653f4: 41 5d pop %r13 0.00 : 7653f6: 41 5e pop %r14 0.00 : 7653f8: c9 leaveq 0.00 : 7653f9: c3 retq 0.00 : 7653fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Invalidate *all* CatCLists in this cache; it's too hard to tell : * which searches might still be correct, so just zap 'em all. : */ : dlist_foreach_modify(iter, &ccp->cc_lists) 0.00 : 765400: 49 8b 85 a0 01 00 00 mov 0x1a0(%r13),%rax 0.00 : 765407: 48 85 c0 test %rax,%rax 0.00 : 76540a: 74 44 je 765450 0.00 : 76540c: 4d 8d a5 98 01 00 00 lea 0x198(%r13),%r12 0.00 : 765413: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 765417: 49 39 c4 cmp %rax,%r12 0.00 : 76541a: 75 17 jne 765433 0.00 : 76541c: eb 32 jmp 765450 0.00 : 76541e: 66 90 xchg %ax,%ax : { : CatCList *cl = dlist_container(CatCList, cache_elem, iter.cur); : : if (cl->refcount > 0) : cl->dead = true; 0.00 : 765420: c6 46 24 01 movb $0x1,0x24(%rsi) : : /* : * Invalidate *all* CatCLists in this cache; it's too hard to tell : * which searches might still be correct, so just zap 'em all. : */ : dlist_foreach_modify(iter, &ccp->cc_lists) 0.00 : 765424: 49 39 dc cmp %rbx,%r12 0.00 : 765427: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 76542b: 48 89 d8 mov %rbx,%rax 0.00 : 76542e: 74 20 je 765450 0.00 : 765430: 48 89 d3 mov %rdx,%rbx : { : CatCList *cl = dlist_container(CatCList, cache_elem, iter.cur); 0.00 : 765433: 48 8d 70 f0 lea -0x10(%rax),%rsi : : if (cl->refcount > 0) 0.00 : 765437: 8b 46 20 mov 0x20(%rsi),%eax 0.00 : 76543a: 85 c0 test %eax,%eax 0.00 : 76543c: 7f e2 jg 765420 : cl->dead = true; : else : CatCacheRemoveCList(ccp, cl); 0.00 : 76543e: 4c 89 ef mov %r13,%rdi 0.00 : 765441: e8 da fc ff ff callq 765120 0.00 : 765446: eb dc jmp 765424 0.00 : 765448: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 76544f: 00 : : /* : * inspect the proper hash bucket for tuple matches : */ : hashIndex = HASH_INDEX(hashValue, ccp->cc_nbuckets); : dlist_foreach_modify(iter, &ccp->cc_bucket[hashIndex]) 0.00 : 765450: 41 8b 45 34 mov 0x34(%r13),%eax 0.00 : 765454: 45 89 f4 mov %r14d,%r12d 0.00 : 765457: 83 e8 01 sub $0x1,%eax 0.00 : 76545a: 41 21 c4 and %eax,%r12d 0.00 : 76545d: 49 c1 e4 04 shl $0x4,%r12 0.00 : 765461: 4d 03 a5 a8 01 00 00 add 0x1a8(%r13),%r12 0.00 : 765468: 49 8b 44 24 08 mov 0x8(%r12),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/catcache.c:488 100.00 : 76546d: 48 85 c0 test %rax,%rax 0.00 : 765470: 0f 84 7b ff ff ff je 7653f1 0.00 : 765476: 49 39 c4 cmp %rax,%r12 0.00 : 765479: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 76547d: 75 1c jne 76549b 0.00 : 76547f: e9 6d ff ff ff jmpq 7653f1 0.00 : 765484: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 765488: 49 39 dc cmp %rbx,%r12 0.00 : 76548b: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 76548f: 48 89 d8 mov %rbx,%rax 0.00 : 765492: 0f 84 59 ff ff ff je 7653f1 0.00 : 765498: 48 89 d3 mov %rdx,%rbx : { : CatCTup *ct = dlist_container(CatCTup, cache_elem, iter.cur); 0.00 : 76549b: 48 8d 70 f0 lea -0x10(%rax),%rsi : : if (hashValue == ct->hash_value) 0.00 : 76549f: 44 39 76 30 cmp %r14d,0x30(%rsi) 0.00 : 7654a3: 75 e3 jne 765488 : { : if (ct->refcount > 0 || 0.00 : 7654a5: 8b 46 28 mov 0x28(%rsi),%eax 0.00 : 7654a8: 85 c0 test %eax,%eax 0.00 : 7654aa: 7e 0c jle 7654b8 : (ct->c_list && ct->c_list->refcount > 0)) : { : ct->dead = true; 0.00 : 7654ac: c6 46 2c 01 movb $0x1,0x2c(%rsi) : { : CatCTup *ct = dlist_container(CatCTup, cache_elem, iter.cur); : : if (hashValue == ct->hash_value) : { : if (ct->refcount > 0 || 0.00 : 7654b0: eb d6 jmp 765488 0.00 : 7654b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7654b8: 48 8b 46 20 mov 0x20(%rsi),%rax 0.00 : 7654bc: 48 85 c0 test %rax,%rax 0.00 : 7654bf: 74 09 je 7654ca 0.00 : 7654c1: 44 8b 58 20 mov 0x20(%rax),%r11d 0.00 : 7654c5: 45 85 db test %r11d,%r11d 0.00 : 7654c8: 7f e2 jg 7654ac : ct->dead = true; : /* list, if any, was marked dead above */ : Assert(ct->c_list == NULL || ct->c_list->dead); : } : else : CatCacheRemoveCTup(ccp, ct); 0.00 : 7654ca: 4c 89 ef mov %r13,%rdi 0.00 : 7654cd: e8 de fc ff ff callq 7651b0 0.00 : 7654d2: eb b4 jmp 765488 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/inval.c:1341 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000767100 : : */ : void : CacheRegisterRelcacheCallback(RelcacheCallbackFunction func, : Datum arg) : { : if (relcache_callback_count >= MAX_RELCACHE_CALLBACKS) 0.00 : 767100: 8b 15 fe 0f 45 00 mov 0x450ffe(%rip),%edx # bb8104 : * In this case the called routines should flush all cached state. : */ : void : CacheRegisterRelcacheCallback(RelcacheCallbackFunction func, : Datum arg) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/inval.c:1341 100.00 : 767106: 55 push %rbp 0.00 : 767107: 48 89 e5 mov %rsp,%rbp : if (relcache_callback_count >= MAX_RELCACHE_CALLBACKS) 0.00 : 76710a: 83 fa 09 cmp $0x9,%edx 0.00 : 76710d: 7f 20 jg 76712f : elog(FATAL, "out of relcache_callback_list slots"); : : relcache_callback_list[relcache_callback_count].function = func; 0.00 : 76710f: 48 63 c2 movslq %edx,%rax 0.00 : 767112: 48 c1 e0 04 shl $0x4,%rax 0.00 : 767116: 48 89 b8 20 84 bb 00 mov %rdi,0xbb8420(%rax) : relcache_callback_list[relcache_callback_count].arg = arg; 0.00 : 76711d: 48 89 b0 28 84 bb 00 mov %rsi,0xbb8428(%rax) : : ++relcache_callback_count; 0.00 : 767124: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 767127: 89 05 d7 0f 45 00 mov %eax,0x450fd7(%rip) # bb8104 : } 0.00 : 76712d: c9 leaveq 0.00 : 76712e: c3 retq : void : CacheRegisterRelcacheCallback(RelcacheCallbackFunction func, : Datum arg) : { : if (relcache_callback_count >= MAX_RELCACHE_CALLBACKS) : elog(FATAL, "out of relcache_callback_list slots"); 0.00 : 76712f: ba 40 d5 8c 00 mov $0x8cd540,%edx 0.00 : 767134: be 3f 05 00 00 mov $0x53f,%esi 0.00 : 767139: bf 42 bc 8a 00 mov $0x8abc42,%edi 0.00 : 76713e: e8 dd 42 01 00 callq 77b420 0.00 : 767143: be 50 d4 8c 00 mov $0x8cd450,%esi 0.00 : 767148: bf 15 00 00 00 mov $0x15,%edi 0.00 : 76714d: 31 c0 xor %eax,%eax 0.00 : 76714f: e8 dc 40 01 00 callq 77b230 0.00 : 767154: e8 77 23 d0 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:990 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076d980 : : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76d980: 55 push %rbp : Form_pg_class relp; : : /* : * find the tuple in pg_class corresponding to the given relation id : */ : pg_class_tuple = ScanPgRelation(targetRelId, true, false); 0.00 : 76d981: 31 d2 xor %edx,%edx : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76d983: 48 89 e5 mov %rsp,%rbp 0.00 : 76d986: 41 57 push %r15 0.00 : 76d988: 41 56 push %r14 : pg_class_tuple = ScanPgRelation(targetRelId, true, false); : : /* : * if no such tuple exists, return NULL : */ : if (!HeapTupleIsValid(pg_class_tuple)) 0.00 : 76d98a: 45 31 f6 xor %r14d,%r14d : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76d98d: 41 55 push %r13 0.00 : 76d98f: 41 54 push %r12 0.00 : 76d991: 53 push %rbx 0.00 : 76d992: 48 81 ec 48 01 00 00 sub $0x148,%rsp 0.00 : 76d999: 40 88 b5 9f fe ff ff mov %sil,-0x161(%rbp) : Form_pg_class relp; : : /* : * find the tuple in pg_class corresponding to the given relation id : */ : pg_class_tuple = ScanPgRelation(targetRelId, true, false); 0.00 : 76d9a0: be 01 00 00 00 mov $0x1,%esi 0.00 : 76d9a5: e8 f6 d5 ff ff callq 76afa0 : : /* : * if no such tuple exists, return NULL : */ : if (!HeapTupleIsValid(pg_class_tuple)) 0.00 : 76d9aa: 48 85 c0 test %rax,%rax : Form_pg_class relp; : : /* : * find the tuple in pg_class corresponding to the given relation id : */ : pg_class_tuple = ScanPgRelation(targetRelId, true, false); 0.00 : 76d9ad: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) : : /* : * if no such tuple exists, return NULL : */ : if (!HeapTupleIsValid(pg_class_tuple)) 0.00 : 76d9b4: 0f 84 0b 04 00 00 je 76ddc5 : return NULL; : : /* : * get information from the pg_class_tuple : */ : relid = HeapTupleGetOid(pg_class_tuple); 0.00 : 76d9ba: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 76d9c1: 4c 8b 60 10 mov 0x10(%rax),%r12 0.00 : 76d9c5: 41 f6 44 24 14 08 testb $0x8,0x14(%r12) 0.00 : 76d9cb: 0f 85 0f 04 00 00 jne 76dde0 0.00 : 76d9d1: 45 0f b6 6c 24 16 movzbl 0x16(%r12),%r13d 0.00 : 76d9d7: 45 31 ff xor %r15d,%r15d : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 76d9da: 48 8b 05 9f ce 44 00 mov 0x44ce9f(%rip),%rax # bba880 : oldcxt = MemoryContextSwitchTo(CacheMemoryContext); : : /* : * allocate and zero space for new relation descriptor : */ : relation = (Relation) palloc0(sizeof(RelationData)); 0.00 : 76d9e1: bf 40 01 00 00 mov $0x140,%edi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 76d9e6: 48 8b 1d 73 ce 44 00 mov 0x44ce73(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 76d9ed: 48 89 05 6c ce 44 00 mov %rax,0x44ce6c(%rip) # bba860 0.00 : 76d9f4: e8 77 b5 02 00 callq 798f70 : * Bottom line is that relacl *cannot* be retrieved from the relcache. Get : * it from the syscache if you need it. The same goes for the original : * form of reloptions (however, we do store the parsed form of reloptions : * in rd_options). : */ : relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE); 0.00 : 76d9f9: bf 84 00 00 00 mov $0x84,%edi : * allocate and zero space for new relation descriptor : */ : relation = (Relation) palloc0(sizeof(RelationData)); : : /* make sure relation is marked as having no open file yet */ : relation->rd_smgr = NULL; 0.00 : 76d9fe: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 76da05: 00 : oldcxt = MemoryContextSwitchTo(CacheMemoryContext); : : /* : * allocate and zero space for new relation descriptor : */ : relation = (Relation) palloc0(sizeof(RelationData)); 0.00 : 76da06: 49 89 c6 mov %rax,%r14 : * Bottom line is that relacl *cannot* be retrieved from the relcache. Get : * it from the syscache if you need it. The same goes for the original : * form of reloptions (however, we do store the parsed form of reloptions : * in rd_options). : */ : relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE); 0.00 : 76da09: e8 42 b3 02 00 callq 798d50 : : memcpy(relationForm, relp, CLASS_TUPLE_SIZE); 0.00 : 76da0e: 4b 8d 34 2c lea (%r12,%r13,1),%rsi 0.00 : 76da12: 48 89 c7 mov %rax,%rdi 0.00 : 76da15: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 76da1a: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : * Bottom line is that relacl *cannot* be retrieved from the relcache. Get : * it from the syscache if you need it. The same goes for the original : * form of reloptions (however, we do store the parsed form of reloptions : * in rd_options). : */ : relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE); 0.00 : 76da1d: 49 89 c0 mov %rax,%r8 : : memcpy(relationForm, relp, CLASS_TUPLE_SIZE); 0.00 : 76da20: 8b 06 mov (%rsi),%eax 0.00 : 76da22: 89 07 mov %eax,(%rdi) : : /* initialize relation tuple form */ : relation->rd_rel = relationForm; 0.00 : 76da24: 4d 89 46 30 mov %r8,0x30(%r14) : : /* and allocate attribute tuple form storage */ : relation->rd_att = CreateTemplateTupleDesc(relationForm->relnatts, 0.00 : 76da28: 41 0f be 70 74 movsbl 0x74(%r8),%esi 0.00 : 76da2d: 41 0f bf 78 70 movswl 0x70(%r8),%edi 0.00 : 76da32: e8 b9 70 d0 ff callq 474af0 0.00 : 76da37: 49 89 46 38 mov %rax,0x38(%r14) : relationForm->relhasoids); : /* which we mark as a reference-counted tupdesc */ : relation->rd_att->tdrefcount = 1; 0.00 : 76da3b: c7 40 24 01 00 00 00 movl $0x1,0x24(%rax) 0.00 : 76da42: 48 89 1d 17 ce 44 00 mov %rbx,0x44ce17(%rip) # bba860 : */ : relation->rd_refcnt = 0; : relation->rd_isnailed = false; : relation->rd_createSubid = InvalidSubTransactionId; : relation->rd_newRelfilenodeSubid = InvalidSubTransactionId; : switch (relation->rd_rel->relpersistence) 0.00 : 76da49: 49 8b 4e 30 mov 0x30(%r14),%rcx : relation = AllocateRelationDesc(relp); : : /* : * initialize the relation's relation id (relation->rd_id) : */ : RelationGetRelid(relation) = relid; 0.00 : 76da4d: 45 89 7e 40 mov %r15d,0x40(%r14) : /* : * normal relations are not nailed into the cache; nor can a pre-existing : * relation be new. It could be temp though. (Actually, it could be new : * too, but it's okay to forget that fact if forced to flush the entry.) : */ : relation->rd_refcnt = 0; 0.00 : 76da51: 41 c7 46 18 00 00 00 movl $0x0,0x18(%r14) 0.00 : 76da58: 00 : relation->rd_isnailed = false; 0.00 : 76da59: 41 c6 46 21 00 movb $0x0,0x21(%r14) : relation->rd_createSubid = InvalidSubTransactionId; 0.00 : 76da5e: 41 c7 46 24 00 00 00 movl $0x0,0x24(%r14) 0.00 : 76da65: 00 : relation->rd_newRelfilenodeSubid = InvalidSubTransactionId; 0.00 : 76da66: 41 c7 46 28 00 00 00 movl $0x0,0x28(%r14) 0.00 : 76da6d: 00 : switch (relation->rd_rel->relpersistence) 0.00 : 76da6e: 0f b6 41 6e movzbl 0x6e(%rcx),%eax 0.00 : 76da72: 3c 74 cmp $0x74,%al 0.00 : 76da74: 0f 84 ec 04 00 00 je 76df66 0.00 : 76da7a: 3c 75 cmp $0x75,%al 0.00 : 76da7c: 74 3a je 76dab8 0.00 : 76da7e: 3c 70 cmp $0x70,%al /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:990 100.00 : 76da80: 74 36 je 76dab8 : Assert(relation->rd_backend != InvalidBackendId); : relation->rd_islocaltemp = false; : } : break; : default: : elog(ERROR, "invalid relpersistence: %c", 0.00 : 76da82: ba d0 15 8d 00 mov $0x8d15d0,%edx 0.00 : 76da87: be 02 04 00 00 mov $0x402,%esi 0.00 : 76da8c: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76da91: e8 8a d9 00 00 callq 77b420 0.00 : 76da96: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76da9a: be 8c 0c 7c 00 mov $0x7c0c8c,%esi 0.00 : 76da9f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76daa4: 0f be 50 6e movsbl 0x6e(%rax),%edx 0.00 : 76daa8: 31 c0 xor %eax,%eax 0.00 : 76daaa: e8 81 d7 00 00 callq 77b230 0.00 : 76daaf: e8 1c ba cf ff callq 4694d0 0.00 : 76dab4: 0f 1f 40 00 nopl 0x0(%rax) : relation->rd_newRelfilenodeSubid = InvalidSubTransactionId; : switch (relation->rd_rel->relpersistence) : { : case RELPERSISTENCE_UNLOGGED: : case RELPERSISTENCE_PERMANENT: : relation->rd_backend = InvalidBackendId; 0.00 : 76dab8: 41 c7 46 1c ff ff ff movl $0xffffffff,0x1c(%r14) 0.00 : 76dabf: ff : relation->rd_islocaltemp = false; 0.00 : 76dac0: 41 c6 46 20 00 movb $0x0,0x20(%r14) : TupleConstr *constr; : AttrDefault *attrdef = NULL; : int ndef = 0; : : /* copy some fields from pg_class row to rd_att */ : relation->rd_att->tdtypeid = relation->rd_rel->reltype; 0.00 : 76dac5: 8b 41 44 mov 0x44(%rcx),%eax 0.00 : 76dac8: 49 8b 56 38 mov 0x38(%r14),%rdx : relation->rd_att->tdtypmod = -1; /* unnecessary, but... */ : relation->rd_att->tdhasoid = relation->rd_rel->relhasoids; : : constr = (TupleConstr *) MemoryContextAlloc(CacheMemoryContext, 0.00 : 76dacc: be 18 00 00 00 mov $0x18,%esi : /* : * Form a scan key that selects only user attributes (attnum > 0). : * (Eliminating system attribute rows at the index level is lots faster : * than fetching them.) : */ : ScanKeyInit(&skey[0], 0.00 : 76dad1: 48 8d 9d f0 fe ff ff lea -0x110(%rbp),%rbx : 2, skey); : : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; 0.00 : 76dad8: 45 31 ed xor %r13d,%r13d 0.00 : 76dadb: 45 31 e4 xor %r12d,%r12d : TupleConstr *constr; : AttrDefault *attrdef = NULL; : int ndef = 0; : : /* copy some fields from pg_class row to rd_att */ : relation->rd_att->tdtypeid = relation->rd_rel->reltype; 0.00 : 76dade: 89 42 18 mov %eax,0x18(%rdx) : relation->rd_att->tdtypmod = -1; /* unnecessary, but... */ 0.00 : 76dae1: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dae5: c7 40 1c ff ff ff ff movl $0xffffffff,0x1c(%rax) : relation->rd_att->tdhasoid = relation->rd_rel->relhasoids; 0.00 : 76daec: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76daf0: 49 8b 56 38 mov 0x38(%r14),%rdx 0.00 : 76daf4: 0f b6 40 74 movzbl 0x74(%rax),%eax 0.00 : 76daf8: 88 42 20 mov %al,0x20(%rdx) : : constr = (TupleConstr *) MemoryContextAlloc(CacheMemoryContext, 0.00 : 76dafb: 48 8b 3d 7e cd 44 00 mov 0x44cd7e(%rip),%rdi # bba880 0.00 : 76db02: e8 89 b3 02 00 callq 798e90 0.00 : 76db07: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) : sizeof(TupleConstr)); : constr->has_not_null = false; 0.00 : 76db0e: c6 40 14 00 movb $0x0,0x14(%rax) : /* : * Form a scan key that selects only user attributes (attnum > 0). : * (Eliminating system attribute rows at the index level is lots faster : * than fetching them.) : */ : ScanKeyInit(&skey[0], 0.00 : 76db12: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76db17: 45 8b 46 40 mov 0x40(%r14),%r8d 0.00 : 76db1b: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76db20: be 01 00 00 00 mov $0x1,%esi 0.00 : 76db25: 48 89 df mov %rbx,%rdi 0.00 : 76db28: e8 53 60 d0 ff callq 473b80 : Anum_pg_attribute_attrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : ScanKeyInit(&skey[1], 0.00 : 76db2d: 48 8d 7b 48 lea 0x48(%rbx),%rdi 0.00 : 76db31: 45 31 c0 xor %r8d,%r8d 0.00 : 76db34: b9 92 00 00 00 mov $0x92,%ecx 0.00 : 76db39: ba 05 00 00 00 mov $0x5,%edx 0.00 : 76db3e: be 06 00 00 00 mov $0x6,%esi 0.00 : 76db43: e8 38 60 d0 ff callq 473b80 : /* : * Open pg_attribute and begin a scan. Force heap scan if we haven't yet : * built the critical relcache entries (this includes initdb and startup : * without a pg_internal.init file). : */ : pg_attribute_desc = heap_open(AttributeRelationId, AccessShareLock); 0.00 : 76db48: be 01 00 00 00 mov $0x1,%esi 0.00 : 76db4d: bf e1 04 00 00 mov $0x4e1,%edi 0.00 : 76db52: e8 09 00 d3 ff callq 49db60 : pg_attribute_scan = systable_beginscan(pg_attribute_desc, 0.00 : 76db57: 0f be 15 82 a9 44 00 movsbl 0x44a982(%rip),%edx # bb84e0 0.00 : 76db5e: 49 89 d9 mov %rbx,%r9 0.00 : 76db61: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 76db67: 31 c9 xor %ecx,%ecx 0.00 : 76db69: be 63 0a 00 00 mov $0xa63,%esi 0.00 : 76db6e: 48 89 c7 mov %rax,%rdi : /* : * Open pg_attribute and begin a scan. Force heap scan if we haven't yet : * built the critical relcache entries (this includes initdb and startup : * without a pg_internal.init file). : */ : pg_attribute_desc = heap_open(AttributeRelationId, AccessShareLock); 0.00 : 76db71: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) : pg_attribute_scan = systable_beginscan(pg_attribute_desc, 0.00 : 76db78: e8 23 71 d3 ff callq 4a4ca0 0.00 : 76db7d: 49 89 c7 mov %rax,%r15 : 2, skey); : : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; 0.00 : 76db80: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76db84: 48 c7 85 a8 fe ff ff movq $0x0,-0x158(%rbp) 0.00 : 76db8b: 00 00 00 00 0.00 : 76db8f: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 76db93: 89 85 98 fe ff ff mov %eax,-0x168(%rbp) 0.00 : 76db99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76dba0: 8b 9d 98 fe ff ff mov -0x168(%rbp),%ebx : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; : : while (HeapTupleIsValid(pg_attribute_tuple = systable_getnext(pg_attribute_scan))) 0.00 : 76dba6: 4c 89 ff mov %r15,%rdi 0.00 : 76dba9: e8 72 70 d3 ff callq 4a4c20 : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76dbae: 44 29 e3 sub %r12d,%ebx : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; : : while (HeapTupleIsValid(pg_attribute_tuple = systable_getnext(pg_attribute_scan))) 0.00 : 76dbb1: 48 85 c0 test %rax,%rax 0.00 : 76dbb4: 0f 84 d8 09 00 00 je 76e592 : { : Form_pg_attribute attp; : : attp = (Form_pg_attribute) GETSTRUCT(pg_attribute_tuple); 0.00 : 76dbba: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 76dbbe: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 76dbc2: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : : if (attp->attnum <= 0 || 0.00 : 76dbc6: 0f b7 53 4e movzwl 0x4e(%rbx),%edx 0.00 : 76dbca: 66 85 d2 test %dx,%dx 0.00 : 76dbcd: 0f 8e 53 09 00 00 jle 76e526 0.00 : 76dbd3: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dbd7: 66 3b 50 70 cmp 0x70(%rax),%dx 0.00 : 76dbdb: 0f 8f 45 09 00 00 jg 76e526 : attp->attnum > relation->rd_rel->relnatts) : elog(ERROR, "invalid attribute number %d for %s", : attp->attnum, RelationGetRelationName(relation)); : : memcpy(relation->rd_att->attrs[attp->attnum - 1], 0.00 : 76dbe1: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dbe5: 48 0f bf d2 movswq %dx,%rdx 0.00 : 76dbe9: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76dbed: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 76dbf2: 48 8b 03 mov (%rbx),%rax 0.00 : 76dbf5: 48 89 02 mov %rax,(%rdx) 0.00 : 76dbf8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 76dbfc: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 76dc00: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 76dc04: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 76dc08: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 76dc0c: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 76dc10: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 76dc14: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 76dc18: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 76dc1c: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 76dc20: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 76dc24: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 76dc28: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 76dc2c: 48 89 42 38 mov %rax,0x38(%rdx) 0.00 : 76dc30: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 76dc34: 48 89 42 40 mov %rax,0x40(%rdx) 0.00 : 76dc38: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 76dc3c: 48 89 42 48 mov %rax,0x48(%rdx) 0.00 : 76dc40: 48 8b 43 50 mov 0x50(%rbx),%rax 0.00 : 76dc44: 48 89 42 50 mov %rax,0x50(%rdx) 0.00 : 76dc48: 48 8b 43 58 mov 0x58(%rbx),%rax 0.00 : 76dc4c: 48 89 42 58 mov %rax,0x58(%rdx) 0.00 : 76dc50: 48 8b 43 60 mov 0x60(%rbx),%rax 0.00 : 76dc54: 48 89 42 60 mov %rax,0x60(%rdx) 0.00 : 76dc58: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 76dc5b: 89 42 68 mov %eax,0x68(%rdx) : attp, : ATTRIBUTE_FIXED_PART_SIZE); : : /* Update constraint/default info */ : if (attp->attnotnull) 0.00 : 76dc5e: 80 7b 5f 00 cmpb $0x0,0x5f(%rbx) 0.00 : 76dc62: 74 0b je 76dc6f : constr->has_not_null = true; 0.00 : 76dc64: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 76dc6b: c6 40 14 01 movb $0x1,0x14(%rax) : : if (attp->atthasdef) 0.00 : 76dc6f: 80 7b 60 00 cmpb $0x0,0x60(%rbx) 0.00 : 76dc73: 74 2f je 76dca4 : { : if (attrdef == NULL) 0.00 : 76dc75: 48 83 bd a8 fe ff ff cmpq $0x0,-0x158(%rbp) 0.00 : 76dc7c: 00 0.00 : 76dc7d: 0f 84 7e 08 00 00 je 76e501 : attrdef = (AttrDefault *) : MemoryContextAllocZero(CacheMemoryContext, : relation->rd_rel->relnatts * : sizeof(AttrDefault)); : attrdef[ndef].adnum = attp->attnum; 0.00 : 76dc83: 49 63 c5 movslq %r13d,%rax 0.00 : 76dc86: 0f b7 53 4e movzwl 0x4e(%rbx),%edx : attrdef[ndef].adbin = NULL; : ndef++; 0.00 : 76dc8a: 41 83 c5 01 add $0x1,%r13d : if (attrdef == NULL) : attrdef = (AttrDefault *) : MemoryContextAllocZero(CacheMemoryContext, : relation->rd_rel->relnatts * : sizeof(AttrDefault)); : attrdef[ndef].adnum = attp->attnum; 0.00 : 76dc8e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 76dc92: 48 03 85 a8 fe ff ff add -0x158(%rbp),%rax 0.00 : 76dc99: 66 89 10 mov %dx,(%rax) : attrdef[ndef].adbin = NULL; 0.00 : 76dc9c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 76dca3: 00 : ndef++; 0.00 : 76dca4: 49 83 c4 01 add $0x1,%r12 : } : need--; : if (need == 0) 0.00 : 76dca8: 44 39 a5 98 fe ff ff cmp %r12d,-0x168(%rbp) 0.00 : 76dcaf: 0f 85 eb fe ff ff jne 76dba0 : } : : /* : * end the scan and close the attribute relation : */ : systable_endscan(pg_attribute_scan); 0.00 : 76dcb5: 4c 89 ff mov %r15,%rdi 0.00 : 76dcb8: e8 63 6e d3 ff callq 4a4b20 : heap_close(pg_attribute_desc, AccessShareLock); 0.00 : 76dcbd: 48 8b bd b8 fe ff ff mov -0x148(%rbp),%rdi 0.00 : 76dcc4: be 01 00 00 00 mov $0x1,%esi 0.00 : 76dcc9: e8 f2 fc d2 ff callq 49d9c0 : /* : * However, we can easily set the attcacheoff value for the first : * attribute: it must be zero. This eliminates the need for special cases : * for attnum=1 that used to exist in fastgetattr() and index_getattr(). : */ : if (relation->rd_rel->relnatts > 0) 0.00 : 76dcce: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dcd2: 66 83 78 70 00 cmpw $0x0,0x70(%rax) 0.00 : 76dcd7: 7e 12 jle 76dceb : relation->rd_att->attrs[0]->attcacheoff = 0; 0.00 : 76dcd9: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dcdd: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76dce1: 48 8b 00 mov (%rax),%rax 0.00 : 76dce4: c7 40 54 00 00 00 00 movl $0x0,0x54(%rax) : : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) 0.00 : 76dceb: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx 0.00 : 76dcf2: 45 85 ed test %r13d,%r13d 0.00 : 76dcf5: 0f 9f c2 setg %dl 0.00 : 76dcf8: 80 79 14 00 cmpb $0x0,0x14(%rcx) 0.00 : 76dcfc: 0f 85 ee 00 00 00 jne 76ddf0 0.00 : 76dd02: 84 d2 test %dl,%dl 0.00 : 76dd04: 0f 85 e6 00 00 00 jne 76ddf0 0.00 : 76dd0a: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dd0e: 66 83 78 72 00 cmpw $0x0,0x72(%rax) 0.00 : 76dd13: 0f 85 75 02 00 00 jne 76df8e : else : constr->num_check = 0; : } : else : { : pfree(constr); 0.00 : 76dd19: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 76dd20: e8 5b ae 02 00 callq 798b80 : relation->rd_att->constr = NULL; 0.00 : 76dd25: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dd29: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 76dd30: 00 : RelationBuildTupleDesc(relation); : : /* : * Fetch rules and triggers that affect this relation : */ : if (relation->rd_rel->relhasrules) 0.00 : 76dd31: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76dd35: 80 79 76 00 cmpb $0x0,0x76(%rcx) 0.00 : 76dd39: 0f 85 3d 06 00 00 jne 76e37c : RelationBuildRuleLock(relation); : else : { : relation->rd_rules = NULL; 0.00 : 76dd3f: 49 c7 46 50 00 00 00 movq $0x0,0x50(%r14) 0.00 : 76dd46: 00 : relation->rd_rulescxt = NULL; 0.00 : 76dd47: 49 c7 46 58 00 00 00 movq $0x0,0x58(%r14) 0.00 : 76dd4e: 00 : } : : if (relation->rd_rel->relhastriggers) 0.00 : 76dd4f: 80 79 77 00 cmpb $0x0,0x77(%rcx) 0.00 : 76dd53: 0f 85 39 06 00 00 jne 76e392 : RelationBuildTriggers(relation); : else : relation->trigdesc = NULL; 0.00 : 76dd59: 49 c7 46 60 00 00 00 movq $0x0,0x60(%r14) 0.00 : 76dd60: 00 : : if (relation->rd_rel->relrowsecurity) 0.00 : 76dd61: 80 79 79 00 cmpb $0x0,0x79(%rcx) 0.00 : 76dd65: 0f 85 3d 06 00 00 jne 76e3a8 : RelationBuildRowSecurity(relation); : else : relation->rsdesc = NULL; 0.00 : 76dd6b: 49 c7 46 68 00 00 00 movq $0x0,0x68(%r14) 0.00 : 76dd72: 00 : : /* : * if it's an index, initialize index-related information : */ : if (OidIsValid(relation->rd_rel->relam)) 0.00 : 76dd73: 44 8b 79 50 mov 0x50(%rcx),%r15d 0.00 : 76dd77: 45 85 ff test %r15d,%r15d 0.00 : 76dd7a: 0f 85 41 06 00 00 jne 76e3c1 : RelationInitIndexAccessInfo(relation); : : /* extract reloptions if any */ : RelationParseRelOptions(relation, pg_class_tuple); 0.00 : 76dd80: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 76dd87: 4c 89 f7 mov %r14,%rdi 0.00 : 76dd8a: e8 01 e3 ff ff callq 76c090 : : /* : * initialize the relation lock manager information : */ : RelationInitLockInfo(relation); /* see lmgr.c */ 0.00 : 76dd8f: 4c 89 f7 mov %r14,%rdi 0.00 : 76dd92: e8 29 9b f1 ff callq 6878c0 : : /* : * initialize physical addressing information for the relation : */ : RelationInitPhysicalAddr(relation); 0.00 : 76dd97: 4c 89 f7 mov %r14,%rdi 0.00 : 76dd9a: e8 21 d3 ff ff callq 76b0c0 : : /* make sure relation is marked as having no open file yet */ : relation->rd_smgr = NULL; 0.00 : 76dd9f: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 76dda6: 00 : : /* : * now we can free the memory allocated for pg_class_tuple : */ : heap_freetuple(pg_class_tuple); 0.00 : 76dda7: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 76ddae: e8 0d 0f d0 ff callq 46ecc0 : * So allow RelationCacheInsert to delete any already-present relcache : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) 0.00 : 76ddb3: 80 bd 9f fe ff ff 00 cmpb $0x0,-0x161(%rbp) 0.00 : 76ddba: 0f 85 70 06 00 00 jne 76e430 : RelationCacheInsert(relation, true); : : /* It's fully valid */ : relation->rd_isvalid = true; 0.00 : 76ddc0: 41 c6 46 22 01 movb $0x1,0x22(%r14) : : return relation; : } 0.00 : 76ddc5: 48 81 c4 48 01 00 00 add $0x148,%rsp 0.00 : 76ddcc: 4c 89 f0 mov %r14,%rax 0.00 : 76ddcf: 5b pop %rbx 0.00 : 76ddd0: 41 5c pop %r12 0.00 : 76ddd2: 41 5d pop %r13 0.00 : 76ddd4: 41 5e pop %r14 0.00 : 76ddd6: 41 5f pop %r15 0.00 : 76ddd8: c9 leaveq 0.00 : 76ddd9: c3 retq 0.00 : 76ddda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; : : /* : * get information from the pg_class_tuple : */ : relid = HeapTupleGetOid(pg_class_tuple); 0.00 : 76dde0: 45 0f b6 6c 24 16 movzbl 0x16(%r12),%r13d 0.00 : 76dde6: 47 8b 7c 2c fc mov -0x4(%r12,%r13,1),%r15d 0.00 : 76ddeb: e9 ea fb ff ff jmpq 76d9da : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) : { : relation->rd_att->constr = constr; 0.00 : 76ddf0: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76ddf4: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi : : if (ndef > 0) /* DEFAULTs */ 0.00 : 76ddfb: 84 d2 test %dl,%dl : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) : { : relation->rd_att->constr = constr; 0.00 : 76ddfd: 48 89 78 10 mov %rdi,0x10(%rax) : : if (ndef > 0) /* DEFAULTs */ 0.00 : 76de01: 0f 84 96 01 00 00 je 76df9d : { : if (ndef < relation->rd_rel->relnatts) 0.00 : 76de07: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76de0b: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 76de0f: 44 39 e8 cmp %r13d,%eax 0.00 : 76de12: 0f 8f 0b 03 00 00 jg 76e123 : constr->defval = (AttrDefault *) : repalloc(attrdef, ndef * sizeof(AttrDefault)); : else : constr->defval = attrdef; 0.00 : 76de18: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 76de1f: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx 0.00 : 76de26: 48 89 39 mov %rdi,(%rcx) : constr->num_defval = ndef; 0.00 : 76de29: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax : Datum val; : bool isnull; : int found; : int i; : : ScanKeyInit(&skey, 0.00 : 76de30: 48 8d 5d 80 lea -0x80(%rbp),%rbx 0.00 : 76de34: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76de39: be 01 00 00 00 mov $0x1,%esi 0.00 : 76de3e: 48 89 df mov %rbx,%rdi : if (ndef < relation->rd_rel->relnatts) : constr->defval = (AttrDefault *) : repalloc(attrdef, ndef * sizeof(AttrDefault)); : else : constr->defval = attrdef; : constr->num_defval = ndef; 0.00 : 76de41: 66 44 89 68 10 mov %r13w,0x10(%rax) : * Load any default attribute value definitions for the relation. : */ : static void : AttrDefaultFetch(Relation relation) : { : AttrDefault *attrdef = relation->rd_att->constr->defval; 0.00 : 76de46: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76de4a: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 76de4e: 48 8b 10 mov (%rax),%rdx 0.00 : 76de51: 48 89 95 d8 fe ff ff mov %rdx,-0x128(%rbp) : Datum val; : bool isnull; : int found; : int i; : : ScanKeyInit(&skey, 0.00 : 76de58: 45 8b 46 40 mov 0x40(%r14),%r8d 0.00 : 76de5c: ba 03 00 00 00 mov $0x3,%edx : */ : static void : AttrDefaultFetch(Relation relation) : { : AttrDefault *attrdef = relation->rd_att->constr->defval; : int ndef = relation->rd_att->constr->num_defval; 0.00 : 76de61: 44 0f b7 68 10 movzwl 0x10(%rax),%r13d : Datum val; : bool isnull; : int found; : int i; : : ScanKeyInit(&skey, 0.00 : 76de66: e8 15 5d d0 ff callq 473b80 : Anum_pg_attrdef_adrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); 0.00 : 76de6b: be 01 00 00 00 mov $0x1,%esi 0.00 : 76de70: bf 2c 0a 00 00 mov $0xa2c,%edi 0.00 : 76de75: e8 e6 fc d2 ff callq 49db60 : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, 0.00 : 76de7a: 31 c9 xor %ecx,%ecx 0.00 : 76de7c: 49 89 d9 mov %rbx,%r9 0.00 : 76de7f: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 76de85: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76de8a: be 60 0a 00 00 mov $0xa60,%esi 0.00 : 76de8f: 48 89 c7 mov %rax,%rdi : ScanKeyInit(&skey, : Anum_pg_attrdef_adrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); 0.00 : 76de92: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp) : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, 0.00 : 76de99: e8 02 6e d3 ff callq 4a4ca0 : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76de9e: 48 8b 8d d8 fe ff ff mov -0x128(%rbp),%rcx : Anum_pg_attrdef_adrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, 0.00 : 76dea5: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp) 0.00 : 76deac: c7 85 c4 fe ff ff 00 movl $0x0,-0x13c(%rbp) 0.00 : 76deb3: 00 00 00 : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76deb6: 48 83 c1 10 add $0x10,%rcx 0.00 : 76deba: 48 89 8d 90 fe ff ff mov %rcx,-0x170(%rbp) 0.00 : 76dec1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, : NULL, 1, &skey); : found = 0; : : while (HeapTupleIsValid(htup = systable_getnext(adscan))) 0.00 : 76dec8: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 76decf: e8 4c 6d d3 ff callq 4a4c20 0.00 : 76ded4: 48 85 c0 test %rax,%rax 0.00 : 76ded7: 48 89 c3 mov %rax,%rbx 0.00 : 76deda: 0f 84 13 04 00 00 je 76e2f3 : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); 0.00 : 76dee0: 48 8b 7b 10 mov 0x10(%rbx),%rdi : : for (i = 0; i < ndef; i++) 0.00 : 76dee4: 45 85 ed test %r13d,%r13d : NULL, 1, &skey); : found = 0; : : while (HeapTupleIsValid(htup = systable_getnext(adscan))) : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); 0.00 : 76dee7: 0f b6 47 16 movzbl 0x16(%rdi),%eax 0.00 : 76deeb: 4c 8d 3c 07 lea (%rdi,%rax,1),%r15 : : for (i = 0; i < ndef; i++) 0.00 : 76deef: 74 42 je 76df33 : { : if (adform->adnum != attrdef[i].adnum) 0.00 : 76def1: 4c 8b a5 d8 fe ff ff mov -0x128(%rbp),%r12 0.00 : 76def8: 41 0f b7 77 04 movzwl 0x4(%r15),%esi 0.00 : 76defd: 66 41 3b 34 24 cmp (%r12),%si 0.00 : 76df02: 0f 84 40 02 00 00 je 76e148 : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76df08: 48 8b 95 90 fe ff ff mov -0x170(%rbp),%rdx 0.00 : 76df0f: 31 c9 xor %ecx,%ecx 0.00 : 76df11: eb 18 jmp 76df2b 0.00 : 76df13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); : : for (i = 0; i < ndef; i++) : { : if (adform->adnum != attrdef[i].adnum) 0.00 : 76df18: 0f b7 02 movzwl (%rdx),%eax 0.00 : 76df1b: 49 89 d4 mov %rdx,%r12 0.00 : 76df1e: 48 83 c2 10 add $0x10,%rdx 0.00 : 76df22: 66 39 f0 cmp %si,%ax 0.00 : 76df25: 0f 84 1d 02 00 00 je 76e148 : : while (HeapTupleIsValid(htup = systable_getnext(adscan))) : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); : : for (i = 0; i < ndef; i++) 0.00 : 76df2b: 83 c1 01 add $0x1,%ecx 0.00 : 76df2e: 41 39 cd cmp %ecx,%r13d 0.00 : 76df31: 7f e5 jg 76df18 : } : break; : } : : if (i >= ndef) : elog(WARNING, "unexpected attrdef record found for attr %d of rel %s", 0.00 : 76df33: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76df38: be 38 0e 00 00 mov $0xe38,%esi 0.00 : 76df3d: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76df42: e8 d9 d4 00 00 callq 77b420 0.00 : 76df47: 41 0f bf 57 04 movswl 0x4(%r15),%edx 0.00 : 76df4c: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76df50: be e0 dc 8c 00 mov $0x8cdce0,%esi 0.00 : 76df55: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76df5a: 31 c0 xor %eax,%eax 0.00 : 76df5c: e8 cf d2 00 00 callq 77b230 0.00 : 76df61: e9 62 ff ff ff jmpq 76dec8 : case RELPERSISTENCE_PERMANENT: : relation->rd_backend = InvalidBackendId; : relation->rd_islocaltemp = false; : break; : case RELPERSISTENCE_TEMP: : if (isTempOrTempToastNamespace(relation->rd_rel->relnamespace)) 0.00 : 76df66: 8b 79 40 mov 0x40(%rcx),%edi 0.00 : 76df69: e8 32 ea d7 ff callq 4ec9a0 0.00 : 76df6e: 84 c0 test %al,%al 0.00 : 76df70: 0f 84 e2 05 00 00 je 76e558 : { : relation->rd_backend = MyBackendId; 0.00 : 76df76: 8b 05 8c ab 3f 00 mov 0x3fab8c(%rip),%eax # b68b08 0.00 : 76df7c: 49 8b 4e 30 mov 0x30(%r14),%rcx : relation->rd_islocaltemp = true; 0.00 : 76df80: 41 c6 46 20 01 movb $0x1,0x20(%r14) : relation->rd_islocaltemp = false; : break; : case RELPERSISTENCE_TEMP: : if (isTempOrTempToastNamespace(relation->rd_rel->relnamespace)) : { : relation->rd_backend = MyBackendId; 0.00 : 76df85: 41 89 46 1c mov %eax,0x1c(%r14) 0.00 : 76df89: e9 37 fb ff ff jmpq 76dac5 : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) : { : relation->rd_att->constr = constr; 0.00 : 76df8e: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76df92: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx 0.00 : 76df99: 48 89 48 10 mov %rcx,0x10(%rax) : constr->defval = attrdef; : constr->num_defval = ndef; : AttrDefaultFetch(relation); : } : else : constr->num_defval = 0; 0.00 : 76df9d: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 76dfa4: 66 c7 47 10 00 00 movw $0x0,0x10(%rdi) : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ 0.00 : 76dfaa: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dfae: 0f b7 40 72 movzwl 0x72(%rax),%eax 0.00 : 76dfb2: 66 85 c0 test %ax,%ax 0.00 : 76dfb5: 0f 8e a6 03 00 00 jle 76e361 : { : constr->num_check = relation->rd_rel->relchecks; 0.00 : 76dfbb: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx : constr->check = (ConstrCheck *) 0.00 : 76dfc2: 0f b7 f0 movzwl %ax,%esi : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76dfc5: 48 8d 5d 80 lea -0x80(%rbp),%rbx : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ : { : constr->num_check = relation->rd_rel->relchecks; : constr->check = (ConstrCheck *) 0.00 : 76dfc9: 48 8d 34 76 lea (%rsi,%rsi,2),%rsi : Anum_pg_constraint_conrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : conrel = heap_open(ConstraintRelationId, AccessShareLock); : conscan = systable_beginscan(conrel, ConstraintRelidIndexId, true, 0.00 : 76dfcd: 45 31 ff xor %r15d,%r15d : else : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ : { : constr->num_check = relation->rd_rel->relchecks; 0.00 : 76dfd0: 66 89 42 12 mov %ax,0x12(%rdx) : constr->check = (ConstrCheck *) 0.00 : 76dfd4: 48 8b 3d a5 c8 44 00 mov 0x44c8a5(%rip),%rdi # bba880 0.00 : 76dfdb: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 76dfdf: e8 3c b0 02 00 callq 799020 0.00 : 76dfe4: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76dfeb: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76dff0: be 07 00 00 00 mov $0x7,%esi 0.00 : 76dff5: 48 89 df mov %rbx,%rdi : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ : { : constr->num_check = relation->rd_rel->relchecks; : constr->check = (ConstrCheck *) 0.00 : 76dff8: 48 89 41 08 mov %rax,0x8(%rcx) : * Load any check constraints for the relation. : */ : static void : CheckConstraintFetch(Relation relation) : { : ConstrCheck *check = relation->rd_att->constr->check; 0.00 : 76dffc: 49 8b 46 38 mov 0x38(%r14),%rax : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76e000: b9 b8 00 00 00 mov $0xb8,%ecx : * Load any check constraints for the relation. : */ : static void : CheckConstraintFetch(Relation relation) : { : ConstrCheck *check = relation->rd_att->constr->check; 0.00 : 76e005: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 76e009: 4c 8b 60 08 mov 0x8(%rax),%r12 : int ncheck = relation->rd_att->constr->num_check; 0.00 : 76e00d: 0f b7 40 12 movzwl 0x12(%rax),%eax 0.00 : 76e011: 89 85 ec fe ff ff mov %eax,-0x114(%rbp) : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76e017: 45 8b 46 40 mov 0x40(%r14),%r8d 0.00 : 76e01b: e8 60 5b d0 ff callq 473b80 : Anum_pg_constraint_conrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : conrel = heap_open(ConstraintRelationId, AccessShareLock); 0.00 : 76e020: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e025: bf 2e 0a 00 00 mov $0xa2e,%edi 0.00 : 76e02a: e8 31 fb d2 ff callq 49db60 : conscan = systable_beginscan(conrel, ConstraintRelidIndexId, true, 0.00 : 76e02f: 49 89 d9 mov %rbx,%r9 0.00 : 76e032: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 76e038: 31 c9 xor %ecx,%ecx 0.00 : 76e03a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76e03f: be 69 0a 00 00 mov $0xa69,%esi 0.00 : 76e044: 48 89 c7 mov %rax,%rdi : ScanKeyInit(&skey[0], : Anum_pg_constraint_conrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : conrel = heap_open(ConstraintRelationId, AccessShareLock); 0.00 : 76e047: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) : conscan = systable_beginscan(conrel, ConstraintRelidIndexId, true, 0.00 : 76e04e: e8 4d 6c d3 ff callq 4a4ca0 0.00 : 76e053: 49 89 c5 mov %rax,%r13 0.00 : 76e056: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 76e05d: 00 00 00 : NULL, 1, skey); : : while (HeapTupleIsValid(htup = systable_getnext(conscan))) 0.00 : 76e060: 4c 89 ef mov %r13,%rdi 0.00 : 76e063: e8 b8 6b d3 ff callq 4a4c20 0.00 : 76e068: 48 85 c0 test %rax,%rax 0.00 : 76e06b: 48 89 c3 mov %rax,%rbx 0.00 : 76e06e: 0f 84 5a 03 00 00 je 76e3ce : { : Form_pg_constraint conform = (Form_pg_constraint) GETSTRUCT(htup); 0.00 : 76e074: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 76e078: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 76e07c: 48 8d 34 02 lea (%rdx,%rax,1),%rsi : Datum val; : bool isnull; : char *s; : : /* We want check constraints only */ : if (conform->contype != CONSTRAINT_CHECK) 0.00 : 76e080: 80 7e 44 63 cmpb $0x63,0x44(%rsi) 0.00 : 76e084: 75 da jne 76e060 : continue; : : if (found >= ncheck) 0.00 : 76e086: 44 39 bd ec fe ff ff cmp %r15d,-0x114(%rbp) 0.00 : 76e08d: 0f 8e c1 05 00 00 jle 76e654 : elog(ERROR, "unexpected constraint record found for rel %s", : RelationGetRelationName(relation)); : : check[found].ccvalid = conform->convalidated; 0.00 : 76e093: 0f b6 46 47 movzbl 0x47(%rsi),%eax 0.00 : 76e097: 41 88 44 24 10 mov %al,0x10(%r12) : check[found].ccnoinherit = conform->connoinherit; 0.00 : 76e09c: 0f b6 46 60 movzbl 0x60(%rsi),%eax 0.00 : 76e0a0: 41 88 44 24 11 mov %al,0x11(%r12) : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, 0.00 : 76e0a5: 48 8b 3d d4 c7 44 00 mov 0x44c7d4(%rip),%rdi # bba880 0.00 : 76e0ac: e8 3f ae 02 00 callq 798ef0 0.00 : 76e0b1: 49 89 04 24 mov %rax,(%r12) : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e0b5: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 76e0b9: f6 46 14 01 testb $0x1,0x14(%rsi) 0.00 : 76e0bd: 0f 85 f8 01 00 00 jne 76e2bb 0.00 : 76e0c3: 48 8b bd e0 fe ff ff mov -0x120(%rbp),%rdi 0.00 : 76e0ca: 48 8b 57 38 mov 0x38(%rdi),%rdx 0.00 : 76e0ce: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 76e0d2: 48 8b 88 b0 00 00 00 mov 0xb0(%rax),%rcx 0.00 : 76e0d9: 8b 41 54 mov 0x54(%rcx),%eax 0.00 : 76e0dc: 85 c0 test %eax,%eax 0.00 : 76e0de: 0f 88 cd 03 00 00 js 76e4b1 0.00 : 76e0e4: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 76e0e8: 0f 84 04 04 00 00 je 76e4f2 0.00 : 76e0ee: 0f b7 51 4c movzwl 0x4c(%rcx),%edx 0.00 : 76e0f2: 66 83 fa 08 cmp $0x8,%dx 0.00 : 76e0f6: 0f 84 24 05 00 00 je 76e620 0.00 : 76e0fc: 66 83 fa 04 cmp $0x4,%dx 0.00 : 76e100: 0f 84 2d 05 00 00 je 76e633 0.00 : 76e106: 66 83 fa 02 cmp $0x2,%dx 0.00 : 76e10a: 0f 84 ea 04 00 00 je 76e5fa 0.00 : 76e110: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e114: 48 98 cltq 0.00 : 76e116: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e11a: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 76e11e: e9 9b 03 00 00 jmpq 76e4be : relation->rd_att->constr = constr; : : if (ndef > 0) /* DEFAULTs */ : { : if (ndef < relation->rd_rel->relnatts) : constr->defval = (AttrDefault *) 0.00 : 76e123: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 76e12a: 49 63 f5 movslq %r13d,%rsi 0.00 : 76e12d: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 76e131: e8 ba ab 02 00 callq 798cf0 0.00 : 76e136: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 76e13d: 48 89 02 mov %rax,(%rdx) 0.00 : 76e140: e9 e4 fc ff ff jmpq 76de29 0.00 : 76e145: 0f 1f 00 nopl (%rax) : : for (i = 0; i < ndef; i++) : { : if (adform->adnum != attrdef[i].adnum) : continue; : if (attrdef[i].adbin != NULL) 0.00 : 76e148: 49 83 7c 24 08 00 cmpq $0x0,0x8(%r12) 0.00 : 76e14e: 0f 84 2c 01 00 00 je 76e280 : elog(WARNING, "multiple attrdef records found for attr %s of rel %s", 0.00 : 76e154: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76e159: be 20 0e 00 00 mov $0xe20,%esi 0.00 : 76e15e: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e163: e8 b8 d2 00 00 callq 77b420 0.00 : 76e168: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76e16c: 49 0f bf 57 04 movswq 0x4(%r15),%rdx 0.00 : 76e171: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e176: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e17a: be f8 db 8c 00 mov $0x8cdbf8,%esi 0.00 : 76e17f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76e183: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 76e188: 31 c0 xor %eax,%eax 0.00 : 76e18a: 48 83 c2 04 add $0x4,%rdx 0.00 : 76e18e: e8 9d d0 00 00 callq 77b230 0.00 : 76e193: 48 8b 7b 10 mov 0x10(%rbx),%rdi : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e197: f6 47 14 01 testb $0x1,0x14(%rdi) 0.00 : 76e19b: 0f 85 8f 00 00 00 jne 76e230 0.00 : 76e1a1: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 76e1a8: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 76e1ac: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 76e1b0: 48 8b 48 10 mov 0x10(%rax),%rcx 0.00 : 76e1b4: 8b 41 54 mov 0x54(%rcx),%eax 0.00 : 76e1b7: 85 c0 test %eax,%eax 0.00 : 76e1b9: 0f 88 d8 00 00 00 js 76e297 0.00 : 76e1bf: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 76e1c3: 0f 84 e0 00 00 00 je 76e2a9 0.00 : 76e1c9: 0f b7 51 4c movzwl 0x4c(%rcx),%edx 0.00 : 76e1cd: 66 83 fa 08 cmp $0x8,%dx 0.00 : 76e1d1: 0f 84 9f 03 00 00 je 76e576 0.00 : 76e1d7: 66 83 fa 04 cmp $0x4,%dx 0.00 : 76e1db: 0f 84 07 04 00 00 je 76e5e8 0.00 : 76e1e1: 66 83 fa 02 cmp $0x2,%dx 0.00 : 76e1e5: 0f 84 22 04 00 00 je 76e60d 0.00 : 76e1eb: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e1ef: 48 98 cltq 0.00 : 76e1f1: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e1f5: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 76e1f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); 0.00 : 76e200: 48 89 c7 mov %rax,%rdi 0.00 : 76e203: e8 a8 bf fe ff callq 75a1b0 : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e208: 48 8b 3d 71 c6 44 00 mov 0x44c671(%rip),%rdi # bba880 : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); 0.00 : 76e20f: 48 89 c3 mov %rax,%rbx : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e212: 48 89 c6 mov %rax,%rsi 0.00 : 76e215: e8 d6 ac 02 00 callq 798ef0 : pfree(s); 0.00 : 76e21a: 48 89 df mov %rbx,%rdi : else : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e21d: 49 89 44 24 08 mov %rax,0x8(%r12) : pfree(s); 0.00 : 76e222: e8 59 a9 02 00 callq 798b80 0.00 : 76e227: e9 9c fc ff ff jmpq 76dec8 0.00 : 76e22c: 0f 1f 40 00 nopl 0x0(%rax) : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e230: f6 47 17 04 testb $0x4,0x17(%rdi) 0.00 : 76e234: 75 56 jne 76e28c : Anum_pg_attrdef_adbin, : adrel->rd_att, &isnull); : if (isnull) : elog(WARNING, "null adbin for attr %s of rel %s", 0.00 : 76e236: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76e23b: be 2a 0e 00 00 mov $0xe2a,%esi 0.00 : 76e240: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e245: e8 d6 d1 00 00 callq 77b420 0.00 : 76e24a: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76e24e: 49 0f bf 57 04 movswq 0x4(%r15),%rdx 0.00 : 76e253: be b8 dc 8c 00 mov $0x8cdcb8,%esi 0.00 : 76e258: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e25c: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e261: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76e265: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 76e26a: 31 c0 xor %eax,%eax 0.00 : 76e26c: 48 83 c2 04 add $0x4,%rdx 0.00 : 76e270: e8 bb cf 00 00 callq 77b230 0.00 : 76e275: e9 4e fc ff ff jmpq 76dec8 0.00 : 76e27a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (attrdef[i].adbin != NULL) : elog(WARNING, "multiple attrdef records found for attr %s of rel %s", : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; 0.00 : 76e280: 83 85 c4 fe ff ff 01 addl $0x1,-0x13c(%rbp) 0.00 : 76e287: e9 0b ff ff ff jmpq 76e197 : : val = fastgetattr(htup, 0.00 : 76e28c: 48 8b 8d d0 fe ff ff mov -0x130(%rbp),%rcx 0.00 : 76e293: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 76e297: be 03 00 00 00 mov $0x3,%esi 0.00 : 76e29c: 48 89 df mov %rbx,%rdi 0.00 : 76e29f: e8 ec 16 d0 ff callq 46f990 0.00 : 76e2a4: e9 57 ff ff ff jmpq 76e200 0.00 : 76e2a9: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e2ad: 48 98 cltq 0.00 : 76e2af: 48 01 d0 add %rdx,%rax 0.00 : 76e2b2: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e2b6: e9 45 ff ff ff jmpq 76e200 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e2bb: f6 46 19 40 testb $0x40,0x19(%rsi) 0.00 : 76e2bf: 0f 85 e1 01 00 00 jne 76e4a6 : Anum_pg_constraint_conbin, : conrel->rd_att, &isnull); : if (isnull) : elog(ERROR, "null conbin for rel %s", 0.00 : 76e2c5: ba 30 16 8d 00 mov $0x8d1630,%edx 0.00 : 76e2ca: be 74 0e 00 00 mov $0xe74,%esi 0.00 : 76e2cf: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e2d4: e8 47 d1 00 00 callq 77b420 0.00 : 76e2d9: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 76e2dd: be a4 13 7c 00 mov $0x7c13a4,%esi 0.00 : 76e2e2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e2e7: 31 c0 xor %eax,%eax 0.00 : 76e2e9: e8 42 cf 00 00 callq 77b230 0.00 : 76e2ee: e8 dd b1 cf ff callq 4694d0 : if (i >= ndef) : elog(WARNING, "unexpected attrdef record found for attr %d of rel %s", : adform->adnum, RelationGetRelationName(relation)); : } : : systable_endscan(adscan); 0.00 : 76e2f3: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 76e2fa: e8 21 68 d3 ff callq 4a4b20 : heap_close(adrel, AccessShareLock); 0.00 : 76e2ff: 48 8b bd d0 fe ff ff mov -0x130(%rbp),%rdi 0.00 : 76e306: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e30b: e8 b0 f6 d2 ff callq 49d9c0 : : if (found != ndef) 0.00 : 76e310: 44 3b ad c4 fe ff ff cmp -0x13c(%rbp),%r13d 0.00 : 76e317: 0f 84 8d fc ff ff je 76dfaa : elog(WARNING, "%d attrdef record(s) missing for rel %s", 0.00 : 76e31d: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76e322: be 40 0e 00 00 mov $0xe40,%esi 0.00 : 76e327: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e32c: e8 ef d0 00 00 callq 77b420 0.00 : 76e331: 44 2b ad c4 fe ff ff sub -0x13c(%rbp),%r13d 0.00 : 76e338: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e33c: 31 c0 xor %eax,%eax 0.00 : 76e33e: be 30 dc 8c 00 mov $0x8cdc30,%esi 0.00 : 76e343: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e348: 44 89 ea mov %r13d,%edx 0.00 : 76e34b: e8 e0 ce 00 00 callq 77b230 : AttrDefaultFetch(relation); : } : else : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ 0.00 : 76e350: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76e354: 0f b7 40 72 movzwl 0x72(%rax),%eax 0.00 : 76e358: 66 85 c0 test %ax,%ax 0.00 : 76e35b: 0f 8f 5a fc ff ff jg 76dfbb : MemoryContextAllocZero(CacheMemoryContext, : constr->num_check * sizeof(ConstrCheck)); : CheckConstraintFetch(relation); : } : else : constr->num_check = 0; 0.00 : 76e361: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 76e368: 66 c7 42 12 00 00 movw $0x0,0x12(%rdx) : RelationBuildTupleDesc(relation); : : /* : * Fetch rules and triggers that affect this relation : */ : if (relation->rd_rel->relhasrules) 0.00 : 76e36e: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e372: 80 79 76 00 cmpb $0x0,0x76(%rcx) 0.00 : 76e376: 0f 84 c3 f9 ff ff je 76dd3f : RelationBuildRuleLock(relation); 0.00 : 76e37c: 4c 89 f7 mov %r14,%rdi 0.00 : 76e37f: e8 1c de ff ff callq 76c1a0 0.00 : 76e384: 49 8b 4e 30 mov 0x30(%r14),%rcx : { : relation->rd_rules = NULL; : relation->rd_rulescxt = NULL; : } : : if (relation->rd_rel->relhastriggers) 0.00 : 76e388: 80 79 77 00 cmpb $0x0,0x77(%rcx) 0.00 : 76e38c: 0f 84 c7 f9 ff ff je 76dd59 : RelationBuildTriggers(relation); 0.00 : 76e392: 4c 89 f7 mov %r14,%rdi 0.00 : 76e395: e8 46 60 e2 ff callq 5943e0 0.00 : 76e39a: 49 8b 4e 30 mov 0x30(%r14),%rcx : else : relation->trigdesc = NULL; : : if (relation->rd_rel->relrowsecurity) 0.00 : 76e39e: 80 79 79 00 cmpb $0x0,0x79(%rcx) 0.00 : 76e3a2: 0f 84 c3 f9 ff ff je 76dd6b : RelationBuildRowSecurity(relation); 0.00 : 76e3a8: 4c 89 f7 mov %r14,%rdi 0.00 : 76e3ab: e8 60 8b e0 ff callq 576f10 0.00 : 76e3b0: 49 8b 4e 30 mov 0x30(%r14),%rcx : relation->rsdesc = NULL; : : /* : * if it's an index, initialize index-related information : */ : if (OidIsValid(relation->rd_rel->relam)) 0.00 : 76e3b4: 44 8b 79 50 mov 0x50(%rcx),%r15d 0.00 : 76e3b8: 45 85 ff test %r15d,%r15d 0.00 : 76e3bb: 0f 84 bf f9 ff ff je 76dd80 : RelationInitIndexAccessInfo(relation); 0.00 : 76e3c1: 4c 89 f7 mov %r14,%rdi 0.00 : 76e3c4: e8 a7 eb ff ff callq 76cf70 0.00 : 76e3c9: e9 b2 f9 ff ff jmpq 76dd80 : pfree(s); : : found++; : } : : systable_endscan(conscan); 0.00 : 76e3ce: 4c 89 ef mov %r13,%rdi 0.00 : 76e3d1: e8 4a 67 d3 ff callq 4a4b20 : heap_close(conrel, AccessShareLock); 0.00 : 76e3d6: 48 8b bd e0 fe ff ff mov -0x120(%rbp),%rdi 0.00 : 76e3dd: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e3e2: e8 d9 f5 d2 ff callq 49d9c0 : : if (found != ncheck) 0.00 : 76e3e7: 44 39 bd ec fe ff ff cmp %r15d,-0x114(%rbp) 0.00 : 76e3ee: 0f 84 3d f9 ff ff je 76dd31 : elog(ERROR, "%d constraint record(s) missing for rel %s", 0.00 : 76e3f4: ba 30 16 8d 00 mov $0x8d1630,%edx 0.00 : 76e3f9: be 83 0e 00 00 mov $0xe83,%esi 0.00 : 76e3fe: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e403: e8 18 d0 00 00 callq 77b420 0.00 : 76e408: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e40c: 44 29 bd ec fe ff ff sub %r15d,-0x114(%rbp) 0.00 : 76e413: be 88 dc 8c 00 mov $0x8cdc88,%esi 0.00 : 76e418: 8b 95 ec fe ff ff mov -0x114(%rbp),%edx 0.00 : 76e41e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e423: 31 c0 xor %eax,%eax 0.00 : 76e425: e8 06 ce 00 00 callq 77b230 0.00 : 76e42a: e8 a1 b0 cf ff callq 4694d0 0.00 : 76e42f: 90 nop : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) : RelationCacheInsert(relation, true); 0.00 : 76e430: 48 8b 3d e9 a0 44 00 mov 0x44a0e9(%rip),%rdi # bb8520 0.00 : 76e437: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 76e43b: 49 8d 76 40 lea 0x40(%r14),%rsi 0.00 : 76e43f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76e444: e8 57 62 01 00 callq 7846a0 0.00 : 76e449: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 76e44d: 0f 84 36 01 00 00 je 76e589 0.00 : 76e453: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 76e457: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 76e45b: 44 8b 6b 18 mov 0x18(%rbx),%r13d 0.00 : 76e45f: 45 85 ed test %r13d,%r13d 0.00 : 76e462: 0f 84 dd 01 00 00 je 76e645 0.00 : 76e468: 44 8b 25 cd a6 3f 00 mov 0x3fa6cd(%rip),%r12d # b68b3c 0.00 : 76e46f: 45 85 e4 test %r12d,%r12d 0.00 : 76e472: 0f 84 48 f9 ff ff je 76ddc0 0.00 : 76e478: ba d0 15 8d 00 mov $0x8d15d0,%edx 0.00 : 76e47d: be 48 04 00 00 mov $0x448,%esi 0.00 : 76e482: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e487: e8 94 cf 00 00 callq 77b420 0.00 : 76e48c: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 76e490: be 78 da 8c 00 mov $0x8cda78,%esi 0.00 : 76e495: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e49a: 31 c0 xor %eax,%eax 0.00 : 76e49c: e8 8f cd 00 00 callq 77b230 0.00 : 76e4a1: e9 1a f9 ff ff jmpq 76ddc0 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e4a6: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 76e4ad: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 76e4b1: be 17 00 00 00 mov $0x17,%esi 0.00 : 76e4b6: 48 89 df mov %rbx,%rdi 0.00 : 76e4b9: e8 d2 14 d0 ff callq 46f990 : if (isnull) : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); 0.00 : 76e4be: 48 89 c7 mov %rax,%rdi : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); : : found++; 0.00 : 76e4c1: 41 83 c7 01 add $0x1,%r15d : if (isnull) : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); 0.00 : 76e4c5: e8 e6 bc fe ff callq 75a1b0 : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e4ca: 48 8b 3d af c3 44 00 mov 0x44c3af(%rip),%rdi # bba880 : if (isnull) : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); 0.00 : 76e4d1: 48 89 c3 mov %rax,%rbx : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e4d4: 48 89 c6 mov %rax,%rsi 0.00 : 76e4d7: e8 14 aa 02 00 callq 798ef0 : pfree(s); 0.00 : 76e4dc: 48 89 df mov %rbx,%rdi : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e4df: 49 89 44 24 08 mov %rax,0x8(%r12) : pfree(s); : : found++; 0.00 : 76e4e4: 49 83 c4 18 add $0x18,%r12 : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76e4e8: e8 93 a6 02 00 callq 798b80 0.00 : 76e4ed: e9 6e fb ff ff jmpq 76e060 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e4f2: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e4f6: 48 98 cltq 0.00 : 76e4f8: 48 01 d0 add %rdx,%rax 0.00 : 76e4fb: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e4ff: eb bd jmp 76e4be : constr->has_not_null = true; : : if (attp->atthasdef) : { : if (attrdef == NULL) : attrdef = (AttrDefault *) 0.00 : 76e501: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76e505: 48 8b 3d 74 c3 44 00 mov 0x44c374(%rip),%rdi # bba880 0.00 : 76e50c: 48 0f bf 70 70 movswq 0x70(%rax),%rsi 0.00 : 76e511: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 76e515: e8 06 ab 02 00 callq 799020 0.00 : 76e51a: 48 89 85 a8 fe ff ff mov %rax,-0x158(%rbp) 0.00 : 76e521: e9 5d f7 ff ff jmpq 76dc83 : : attp = (Form_pg_attribute) GETSTRUCT(pg_attribute_tuple); : : if (attp->attnum <= 0 || : attp->attnum > relation->rd_rel->relnatts) : elog(ERROR, "invalid attribute number %d for %s", 0.00 : 76e526: ba f0 15 8d 00 mov $0x8d15f0,%edx 0.00 : 76e52b: be 19 02 00 00 mov $0x219,%esi 0.00 : 76e530: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e535: e8 e6 ce 00 00 callq 77b420 0.00 : 76e53a: 0f bf 53 4e movswl 0x4e(%rbx),%edx 0.00 : 76e53e: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e542: be a0 db 8c 00 mov $0x8cdba0,%esi 0.00 : 76e547: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e54c: 31 c0 xor %eax,%eax 0.00 : 76e54e: e8 dd cc 00 00 callq 77b230 0.00 : 76e553: e8 78 af cf ff callq 4694d0 : * table to be "ours"; this is why we need the separate : * rd_islocaltemp flag. The pg_class entry will get flushed : * if/when we clean out the corresponding temp table namespace : * in preparation for using it. : */ : relation->rd_backend = 0.00 : 76e558: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76e55c: 8b 78 40 mov 0x40(%rax),%edi 0.00 : 76e55f: e8 ac 04 d8 ff callq 4eea10 : GetTempNamespaceBackendId(relation->rd_rel->relnamespace); : Assert(relation->rd_backend != InvalidBackendId); : relation->rd_islocaltemp = false; 0.00 : 76e564: 41 c6 46 20 00 movb $0x0,0x20(%r14) : * table to be "ours"; this is why we need the separate : * rd_islocaltemp flag. The pg_class entry will get flushed : * if/when we clean out the corresponding temp table namespace : * in preparation for using it. : */ : relation->rd_backend = 0.00 : 76e569: 41 89 46 1c mov %eax,0x1c(%r14) 0.00 : 76e56d: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e571: e9 4f f5 ff ff jmpq 76dac5 : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e576: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e57a: 48 98 cltq 0.00 : 76e57c: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e580: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 76e584: e9 77 fc ff ff jmpq 76e200 : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) : RelationCacheInsert(relation, true); 0.00 : 76e589: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 76e58d: e9 2e f8 ff ff jmpq 76ddc0 : } : : /* : * end the scan and close the attribute relation : */ : systable_endscan(pg_attribute_scan); 0.00 : 76e592: 4c 89 ff mov %r15,%rdi 0.00 : 76e595: e8 86 65 d3 ff callq 4a4b20 : heap_close(pg_attribute_desc, AccessShareLock); 0.00 : 76e59a: 48 8b bd b8 fe ff ff mov -0x148(%rbp),%rdi 0.00 : 76e5a1: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e5a6: e8 15 f4 d2 ff callq 49d9c0 : : if (need != 0) 0.00 : 76e5ab: 85 db test %ebx,%ebx 0.00 : 76e5ad: 0f 84 1b f7 ff ff je 76dcce : elog(ERROR, "catalog is missing %d attribute(s) for relid %u", 0.00 : 76e5b3: ba f0 15 8d 00 mov $0x8d15f0,%edx 0.00 : 76e5b8: be 3b 02 00 00 mov $0x23b,%esi 0.00 : 76e5bd: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e5c2: e8 59 ce 00 00 callq 77b420 0.00 : 76e5c7: 41 8b 4e 40 mov 0x40(%r14),%ecx 0.00 : 76e5cb: 89 da mov %ebx,%edx 0.00 : 76e5cd: be c8 db 8c 00 mov $0x8cdbc8,%esi 0.00 : 76e5d2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e5d7: 31 c0 xor %eax,%eax 0.00 : 76e5d9: e8 52 cc 00 00 callq 77b230 0.00 : 76e5de: e8 ed ae cf ff callq 4694d0 0.00 : 76e5e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e5e8: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e5ec: 48 98 cltq 0.00 : 76e5ee: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e5f2: 8b 04 10 mov (%rax,%rdx,1),%eax 0.00 : 76e5f5: e9 06 fc ff ff jmpq 76e200 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e5fa: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e5fe: 48 98 cltq 0.00 : 76e600: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e604: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax 0.00 : 76e608: e9 b1 fe ff ff jmpq 76e4be : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e60d: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e611: 48 98 cltq 0.00 : 76e613: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e617: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax 0.00 : 76e61b: e9 e0 fb ff ff jmpq 76e200 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e620: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e624: 48 98 cltq 0.00 : 76e626: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e62a: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 76e62e: e9 8b fe ff ff jmpq 76e4be 0.00 : 76e633: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e637: 48 98 cltq 0.00 : 76e639: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e63d: 8b 04 10 mov (%rax,%rdx,1),%eax 0.00 : 76e640: e9 79 fe ff ff jmpq 76e4be : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) : RelationCacheInsert(relation, true); 0.00 : 76e645: 31 f6 xor %esi,%esi 0.00 : 76e647: 48 89 df mov %rbx,%rdi 0.00 : 76e64a: e8 21 cc ff ff callq 76b270 0.00 : 76e64f: e9 6c f7 ff ff jmpq 76ddc0 : /* We want check constraints only */ : if (conform->contype != CONSTRAINT_CHECK) : continue; : : if (found >= ncheck) : elog(ERROR, "unexpected constraint record found for rel %s", 0.00 : 76e654: ba 30 16 8d 00 mov $0x8d1630,%edx 0.00 : 76e659: be 67 0e 00 00 mov $0xe67,%esi 0.00 : 76e65e: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e663: e8 b8 cd 00 00 callq 77b420 0.00 : 76e668: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 76e66c: be 58 dc 8c 00 mov $0x8cdc58,%esi 0.00 : 76e671: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e676: 31 c0 xor %eax,%eax 0.00 : 76e678: e8 b3 cb 00 00 callq 77b230 0.00 : 76e67d: e8 4e ae cf ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:2545 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076f3d0 : : * cleanup when the current transaction created any relations or made use : * of forced index lists. : */ : void : AtEOXact_RelationCache(bool isCommit) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:2545 100.00 : 76f3d0: 55 push %rbp 0.00 : 76f3d1: 48 89 e5 mov %rsp,%rbp 0.00 : 76f3d4: 41 55 push %r13 0.00 : 76f3d6: 41 54 push %r12 0.00 : 76f3d8: 41 89 fc mov %edi,%r12d 0.00 : 76f3db: 53 push %rbx 0.00 : 76f3dc: 48 83 ec 28 sub $0x28,%rsp : * subtransaction end in some cases, or remove relations from the list if : * they are cleared for other reasons. Therefore we should expect the : * case that list entries are not found in the hashtable; if not, there's : * nothing to do for them. : */ : if (eoxact_list_overflowed) 0.00 : 76f3e0: 80 3d 15 91 44 00 00 cmpb $0x0,0x449115(%rip) # bb84fc 0.00 : 76f3e7: 0f 85 d3 00 00 00 jne 76f4c0 : AtEOXact_cleanup(idhentry->reldesc, isCommit); : } : } : else : { : for (i = 0; i < eoxact_list_len; i++) 0.00 : 76f3ed: 44 8b 15 04 91 44 00 mov 0x449104(%rip),%r10d # bb84f8 : * nothing to do for them. : */ : if (eoxact_list_overflowed) : { : hash_seq_init(&status, RelationIdCache); : while ((idhentry = (RelIdCacheEnt *) hash_seq_search(&status)) != NULL) 0.00 : 76f3f4: 31 db xor %ebx,%ebx : idhentry = (RelIdCacheEnt *) hash_search(RelationIdCache, : (void *) &eoxact_list[i], : HASH_FIND, : NULL); : if (idhentry != NULL) : AtEOXact_cleanup(idhentry->reldesc, isCommit); 0.00 : 76f3f6: 44 0f be e7 movsbl %dil,%r12d : AtEOXact_cleanup(idhentry->reldesc, isCommit); : } : } : else : { : for (i = 0; i < eoxact_list_len; i++) 0.00 : 76f3fa: 45 85 d2 test %r10d,%r10d 0.00 : 76f3fd: 7e 38 jle 76f437 0.00 : 76f3ff: 90 nop : { : idhentry = (RelIdCacheEnt *) hash_search(RelationIdCache, 0.00 : 76f400: 48 63 f3 movslq %ebx,%rsi 0.00 : 76f403: 48 8b 3d 16 91 44 00 mov 0x449116(%rip),%rdi # bb8520 0.00 : 76f40a: 31 c9 xor %ecx,%ecx 0.00 : 76f40c: 48 8d 34 b5 40 85 bb lea 0xbb8540(,%rsi,4),%rsi 0.00 : 76f413: 00 0.00 : 76f414: 31 d2 xor %edx,%edx 0.00 : 76f416: e8 85 52 01 00 callq 7846a0 : (void *) &eoxact_list[i], : HASH_FIND, : NULL); : if (idhentry != NULL) 0.00 : 76f41b: 48 85 c0 test %rax,%rax 0.00 : 76f41e: 74 0c je 76f42c : AtEOXact_cleanup(idhentry->reldesc, isCommit); 0.00 : 76f420: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 76f424: 44 89 e6 mov %r12d,%esi 0.00 : 76f427: e8 24 ff ff ff callq 76f350 : AtEOXact_cleanup(idhentry->reldesc, isCommit); : } : } : else : { : for (i = 0; i < eoxact_list_len; i++) 0.00 : 76f42c: 83 c3 01 add $0x1,%ebx 0.00 : 76f42f: 39 1d c3 90 44 00 cmp %ebx,0x4490c3(%rip) # bb84f8 0.00 : 76f435: 7f c9 jg 76f400 : if (idhentry != NULL) : AtEOXact_cleanup(idhentry->reldesc, isCommit); : } : } : : if (EOXactTupleDescArrayLen > 0) 0.00 : 76f437: 44 8b 0d c2 90 44 00 mov 0x4490c2(%rip),%r9d # bb8500 0.00 : 76f43e: 45 85 c9 test %r9d,%r9d 0.00 : 76f441: 7e 4a jle 76f48d : { : Assert(EOXactTupleDescArray != NULL); : for (i = 0; i < NextEOXactTupleDescNum; i++) 0.00 : 76f443: 44 8b 05 ba 90 44 00 mov 0x4490ba(%rip),%r8d # bb8504 0.00 : 76f44a: 45 85 c0 test %r8d,%r8d 0.00 : 76f44d: 7e 27 jle 76f476 0.00 : 76f44f: 31 db xor %ebx,%ebx 0.00 : 76f451: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : FreeTupleDesc(EOXactTupleDescArray[i]); 0.00 : 76f458: 48 8b 15 61 91 44 00 mov 0x449161(%rip),%rdx # bb85c0 0.00 : 76f45f: 48 63 c3 movslq %ebx,%rax : } : : if (EOXactTupleDescArrayLen > 0) : { : Assert(EOXactTupleDescArray != NULL); : for (i = 0; i < NextEOXactTupleDescNum; i++) 0.00 : 76f462: 83 c3 01 add $0x1,%ebx : FreeTupleDesc(EOXactTupleDescArray[i]); 0.00 : 76f465: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 76f469: e8 12 54 d0 ff callq 474880 : } : : if (EOXactTupleDescArrayLen > 0) : { : Assert(EOXactTupleDescArray != NULL); : for (i = 0; i < NextEOXactTupleDescNum; i++) 0.00 : 76f46e: 39 1d 90 90 44 00 cmp %ebx,0x449090(%rip) # bb8504 0.00 : 76f474: 7f e2 jg 76f458 : FreeTupleDesc(EOXactTupleDescArray[i]); : pfree(EOXactTupleDescArray); 0.00 : 76f476: 48 8b 3d 43 91 44 00 mov 0x449143(%rip),%rdi # bb85c0 0.00 : 76f47d: e8 fe 96 02 00 callq 798b80 : EOXactTupleDescArray = NULL; 0.00 : 76f482: 48 c7 05 33 91 44 00 movq $0x0,0x449133(%rip) # bb85c0 0.00 : 76f489: 00 00 00 00 : } : : /* Now we're out of the transaction and can clear the lists */ : eoxact_list_len = 0; 0.00 : 76f48d: c7 05 61 90 44 00 00 movl $0x0,0x449061(%rip) # bb84f8 0.00 : 76f494: 00 00 00 : eoxact_list_overflowed = false; 0.00 : 76f497: c6 05 5e 90 44 00 00 movb $0x0,0x44905e(%rip) # bb84fc : NextEOXactTupleDescNum = 0; 0.00 : 76f49e: c7 05 5c 90 44 00 00 movl $0x0,0x44905c(%rip) # bb8504 0.00 : 76f4a5: 00 00 00 : EOXactTupleDescArrayLen = 0; 0.00 : 76f4a8: c7 05 4e 90 44 00 00 movl $0x0,0x44904e(%rip) # bb8500 0.00 : 76f4af: 00 00 00 : } 0.00 : 76f4b2: 48 83 c4 28 add $0x28,%rsp 0.00 : 76f4b6: 5b pop %rbx 0.00 : 76f4b7: 41 5c pop %r12 0.00 : 76f4b9: 41 5d pop %r13 0.00 : 76f4bb: c9 leaveq 0.00 : 76f4bc: c3 retq 0.00 : 76f4bd: 0f 1f 00 nopl (%rax) : * case that list entries are not found in the hashtable; if not, there's : * nothing to do for them. : */ : if (eoxact_list_overflowed) : { : hash_seq_init(&status, RelationIdCache); 0.00 : 76f4c0: 4c 8d 6d c0 lea -0x40(%rbp),%r13 0.00 : 76f4c4: 48 8b 35 55 90 44 00 mov 0x449055(%rip),%rsi # bb8520 : while ((idhentry = (RelIdCacheEnt *) hash_seq_search(&status)) != NULL) : { : AtEOXact_cleanup(idhentry->reldesc, isCommit); 0.00 : 76f4cb: 41 0f be dc movsbl %r12b,%ebx : * case that list entries are not found in the hashtable; if not, there's : * nothing to do for them. : */ : if (eoxact_list_overflowed) : { : hash_seq_init(&status, RelationIdCache); 0.00 : 76f4cf: 4c 89 ef mov %r13,%rdi 0.00 : 76f4d2: e8 59 49 01 00 callq 783e30 : while ((idhentry = (RelIdCacheEnt *) hash_seq_search(&status)) != NULL) 0.00 : 76f4d7: eb 12 jmp 76f4eb 0.00 : 76f4d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : AtEOXact_cleanup(idhentry->reldesc, isCommit); 0.00 : 76f4e0: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 76f4e4: 89 de mov %ebx,%esi 0.00 : 76f4e6: e8 65 fe ff ff callq 76f350 : * nothing to do for them. : */ : if (eoxact_list_overflowed) : { : hash_seq_init(&status, RelationIdCache); : while ((idhentry = (RelIdCacheEnt *) hash_seq_search(&status)) != NULL) 0.00 : 76f4eb: 4c 89 ef mov %r13,%rdi 0.00 : 76f4ee: e8 cd 45 01 00 callq 783ac0 0.00 : 76f4f3: 48 85 c0 test %rax,%rax 0.00 : 76f4f6: 75 e8 jne 76f4e0 0.00 : 76f4f8: e9 3a ff ff ff jmpq 76f437 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1800 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1800 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076f760 : : * behavior; we ought to fix it someday, but for now, just disable : * reference count ownership tracking in bootstrap mode. : */ : void : RelationIncrementReferenceCount(Relation rel) : { 0.00 : 76f760: 55 push %rbp 0.00 : 76f761: 48 89 e5 mov %rsp,%rbp 0.00 : 76f764: 53 push %rbx 0.00 : 76f765: 48 89 fb mov %rdi,%rbx 0.00 : 76f768: 48 83 ec 08 sub $0x8,%rsp : ResourceOwnerEnlargeRelationRefs(CurrentResourceOwner); 0.00 : 76f76c: 48 8b 3d 4d b1 44 00 mov 0x44b14d(%rip),%rdi # bba8c0 0.00 : 76f773: e8 48 b5 02 00 callq 79acc0 : rel->rd_refcnt += 1; 0.00 : 76f778: 83 43 18 01 addl $0x1,0x18(%rbx) : if (!IsBootstrapProcessingMode()) 33.33 : 76f77c: 8b 05 ba 93 3f 00 mov 0x3f93ba(%rip),%eax # b68b3c 66.67 : 76f782: 85 c0 test %eax,%eax 0.00 : 76f784: 75 0a jne 76f790 : ResourceOwnerRememberRelationRef(CurrentResourceOwner, rel); : } 0.00 : 76f786: 48 83 c4 08 add $0x8,%rsp 0.00 : 76f78a: 5b pop %rbx 0.00 : 76f78b: c9 leaveq 0.00 : 76f78c: c3 retq 0.00 : 76f78d: 0f 1f 00 nopl (%rax) : RelationIncrementReferenceCount(Relation rel) : { : ResourceOwnerEnlargeRelationRefs(CurrentResourceOwner); : rel->rd_refcnt += 1; : if (!IsBootstrapProcessingMode()) : ResourceOwnerRememberRelationRef(CurrentResourceOwner, rel); 0.00 : 76f790: 48 8b 3d 29 b1 44 00 mov 0x44b129(%rip),%rdi # bba8c0 0.00 : 76f797: 48 89 de mov %rbx,%rsi : } 0.00 : 76f79a: 48 83 c4 08 add $0x8,%rsp 0.00 : 76f79e: 5b pop %rbx 0.00 : 76f79f: c9 leaveq : RelationIncrementReferenceCount(Relation rel) : { : ResourceOwnerEnlargeRelationRefs(CurrentResourceOwner); : rel->rd_refcnt += 1; : if (!IsBootstrapProcessingMode()) : ResourceOwnerRememberRelationRef(CurrentResourceOwner, rel); 0.00 : 76f7a0: e9 8b aa 02 00 jmpq 79a230 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1750 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007700f0 : : * Caller should eventually decrement count. (Usually, : * that happens by calling RelationClose().) : */ : Relation : RelationIdGetRelation(Oid relationId) : { 0.00 : 7700f0: 55 push %rbp : Assert(IsTransactionState()); : : /* : * first try to find reldesc in the cache : */ : RelationIdCacheLookup(relationId, rd); 0.00 : 7700f1: 31 c9 xor %ecx,%ecx 0.00 : 7700f3: 31 d2 xor %edx,%edx : * Caller should eventually decrement count. (Usually, : * that happens by calling RelationClose().) : */ : Relation : RelationIdGetRelation(Oid relationId) : { 0.00 : 7700f5: 48 89 e5 mov %rsp,%rbp 0.00 : 7700f8: 53 push %rbx : Assert(IsTransactionState()); : : /* : * first try to find reldesc in the cache : */ : RelationIdCacheLookup(relationId, rd); 0.00 : 7700f9: 48 8d 75 f4 lea -0xc(%rbp),%rsi : * Caller should eventually decrement count. (Usually, : * that happens by calling RelationClose().) : */ : Relation : RelationIdGetRelation(Oid relationId) : { 0.00 : 7700fd: 48 83 ec 08 sub $0x8,%rsp 0.00 : 770101: 89 7d f4 mov %edi,-0xc(%rbp) : Assert(IsTransactionState()); : : /* : * first try to find reldesc in the cache : */ : RelationIdCacheLookup(relationId, rd); 0.00 : 770104: 48 8b 3d 15 84 44 00 mov 0x448415(%rip),%rdi # bb8520 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1750 100.00 : 77010b: e8 90 45 01 00 callq 7846a0 0.00 : 770110: 48 85 c0 test %rax,%rax 0.00 : 770113: 74 3b je 770150 0.00 : 770115: 48 8b 58 08 mov 0x8(%rax),%rbx : : if (RelationIsValid(rd)) 0.00 : 770119: 48 85 db test %rbx,%rbx 0.00 : 77011c: 74 32 je 770150 : { : RelationIncrementReferenceCount(rd); 0.00 : 77011e: 48 89 df mov %rbx,%rdi 0.00 : 770121: e8 3a f6 ff ff callq 76f760 : /* revalidate cache entry if necessary */ : if (!rd->rd_isvalid) 0.00 : 770126: 80 7b 22 00 cmpb $0x0,0x22(%rbx) 0.00 : 77012a: 75 17 jne 770143 : /* : * Indexes only have a limited number of possible schema changes, : * and we don't want to use the full-blown procedure because it's : * a headache for indexes that reload itself depends on. : */ : if (rd->rd_rel->relkind == RELKIND_INDEX) 0.00 : 77012c: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 770130: 80 78 6f 69 cmpb $0x69,0x6f(%rax) 0.00 : 770134: 74 4a je 770180 : RelationReloadIndexInfo(rd); : else : RelationClearRelation(rd, true); 0.00 : 770136: be 01 00 00 00 mov $0x1,%esi 0.00 : 77013b: 48 89 df mov %rbx,%rdi 0.00 : 77013e: e8 3d ea ff ff callq 76eb80 : */ : rd = RelationBuildDesc(relationId, true); : if (RelationIsValid(rd)) : RelationIncrementReferenceCount(rd); : return rd; : } 0.00 : 770143: 48 89 d8 mov %rbx,%rax 0.00 : 770146: 48 83 c4 08 add $0x8,%rsp 0.00 : 77014a: 5b pop %rbx 0.00 : 77014b: c9 leaveq 0.00 : 77014c: c3 retq 0.00 : 77014d: 0f 1f 00 nopl (%rax) : : /* : * no reldesc in the cache, so have RelationBuildDesc() build one and add : * it. : */ : rd = RelationBuildDesc(relationId, true); 0.00 : 770150: 8b 7d f4 mov -0xc(%rbp),%edi 0.00 : 770153: be 01 00 00 00 mov $0x1,%esi 0.00 : 770158: e8 23 d8 ff ff callq 76d980 : if (RelationIsValid(rd)) 0.00 : 77015d: 48 85 c0 test %rax,%rax : : /* : * no reldesc in the cache, so have RelationBuildDesc() build one and add : * it. : */ : rd = RelationBuildDesc(relationId, true); 0.00 : 770160: 48 89 c3 mov %rax,%rbx : if (RelationIsValid(rd)) 0.00 : 770163: 74 de je 770143 : RelationIncrementReferenceCount(rd); 0.00 : 770165: 48 89 c7 mov %rax,%rdi 0.00 : 770168: e8 f3 f5 ff ff callq 76f760 : return rd; : } 0.00 : 77016d: 48 89 d8 mov %rbx,%rax 0.00 : 770170: 48 83 c4 08 add $0x8,%rsp 0.00 : 770174: 5b pop %rbx 0.00 : 770175: c9 leaveq 0.00 : 770176: c3 retq 0.00 : 770177: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 77017e: 00 00 : * Indexes only have a limited number of possible schema changes, : * and we don't want to use the full-blown procedure because it's : * a headache for indexes that reload itself depends on. : */ : if (rd->rd_rel->relkind == RELKIND_INDEX) : RelationReloadIndexInfo(rd); 0.00 : 770180: 48 89 df mov %rbx,%rdi 0.00 : 770183: e8 e8 e7 ff ff callq 76e970 : */ : rd = RelationBuildDesc(relationId, true); : if (RelationIsValid(rd)) : RelationIncrementReferenceCount(rd); : return rd; : } 0.00 : 770188: 48 89 d8 mov %rbx,%rax 0.00 : 77018b: 48 83 c4 08 add $0x8,%rsp 0.00 : 77018f: 5b pop %rbx 0.00 : 770190: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relmapper.c:560 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000770400 : : * This initializes the mapper module at process startup. We can't access the : * database yet, so just make sure the maps are empty. : */ : void : RelationMapInitialize(void) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relmapper.c:560 100.00 : 770400: 55 push %rbp : /* The static variables should initialize to zeroes, but let's be sure */ : shared_map.magic = 0; /* mark it not loaded */ 0.00 : 770401: c7 05 d5 81 44 00 00 movl $0x0,0x4481d5(%rip) # bb85e0 0.00 : 770408: 00 00 00 : local_map.magic = 0; 0.00 : 77040b: c7 05 cb 83 44 00 00 movl $0x0,0x4483cb(%rip) # bb87e0 0.00 : 770412: 00 00 00 : shared_map.num_mappings = 0; 0.00 : 770415: c7 05 c5 81 44 00 00 movl $0x0,0x4481c5(%rip) # bb85e4 0.00 : 77041c: 00 00 00 : * This initializes the mapper module at process startup. We can't access the : * database yet, so just make sure the maps are empty. : */ : void : RelationMapInitialize(void) : { 0.00 : 77041f: 48 89 e5 mov %rsp,%rbp : /* The static variables should initialize to zeroes, but let's be sure */ : shared_map.magic = 0; /* mark it not loaded */ : local_map.magic = 0; : shared_map.num_mappings = 0; : local_map.num_mappings = 0; 0.00 : 770422: c7 05 b8 83 44 00 00 movl $0x0,0x4483b8(%rip) # bb87e4 0.00 : 770429: 00 00 00 : active_shared_updates.num_mappings = 0; 0.00 : 77042c: c7 05 ae 85 44 00 00 movl $0x0,0x4485ae(%rip) # bb89e4 0.00 : 770433: 00 00 00 : active_local_updates.num_mappings = 0; 0.00 : 770436: c7 05 a4 87 44 00 00 movl $0x0,0x4487a4(%rip) # bb8be4 0.00 : 77043d: 00 00 00 : pending_shared_updates.num_mappings = 0; 0.00 : 770440: c7 05 9a 89 44 00 00 movl $0x0,0x44899a(%rip) # bb8de4 0.00 : 770447: 00 00 00 : pending_local_updates.num_mappings = 0; 0.00 : 77044a: c7 05 90 8b 44 00 00 movl $0x0,0x448b90(%rip) # bb8fe4 0.00 : 770451: 00 00 00 : } 0.00 : 770454: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/spccache.c:201 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007715b0 : : */ : void : get_tablespace_page_costs(Oid spcid, : double *spc_random_page_cost, : double *spc_seq_page_cost) : { 0.00 : 7715b0: 55 push %rbp 0.00 : 7715b1: 48 89 e5 mov %rsp,%rbp 0.00 : 7715b4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 7715b8: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 7715bc: 49 89 f4 mov %rsi,%r12 0.00 : 7715bf: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 7715c3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 7715c7: 49 89 d5 mov %rdx,%r13 0.00 : 7715ca: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 7715ce: 48 81 ec b0 00 00 00 sub $0xb0,%rsp : : /* : * Since spcid is always from a pg_class tuple, InvalidOid implies the : * default. : */ : if (spcid == InvalidOid) 0.00 : 7715d5: 85 ff test %edi,%edi : void : get_tablespace_page_costs(Oid spcid, : double *spc_random_page_cost, : double *spc_seq_page_cost) : { : TableSpaceCacheEntry *spc = get_tablespace(spcid); 0.00 : 7715d7: 89 7d c8 mov %edi,-0x38(%rbp) : : /* : * Since spcid is always from a pg_class tuple, InvalidOid implies the : * default. : */ : if (spcid == InvalidOid) 0.00 : 7715da: 75 09 jne 7715e5 : spcid = MyDatabaseTableSpace; 0.00 : 7715dc: 8b 05 ca 8a 44 00 mov 0x448aca(%rip),%eax # bba0ac 0.00 : 7715e2: 89 45 c8 mov %eax,-0x38(%rbp) : : /* Find existing cache entry, if any. */ : if (!TableSpaceCacheHash) 0.00 : 7715e5: 48 83 3d a3 7c 44 00 cmpq $0x0,0x447ca3(%rip) # bb9290 0.00 : 7715ec: 00 0.00 : 7715ed: 0f 84 ad 00 00 00 je 7716a0 : InitializeTableSpaceCache(); : spc = (TableSpaceCacheEntry *) hash_search(TableSpaceCacheHash, 0.00 : 7715f3: 4c 8d 7d c8 lea -0x38(%rbp),%r15 0.00 : 7715f7: 48 8b 3d 92 7c 44 00 mov 0x447c92(%rip),%rdi # bb9290 0.00 : 7715fe: 31 d2 xor %edx,%edx 0.00 : 771600: 31 c9 xor %ecx,%ecx 0.00 : 771602: 4c 89 fe mov %r15,%rsi 0.00 : 771605: e8 96 30 01 00 callq 7846a0 : (void *) &spcid, : HASH_FIND, : NULL); : if (spc) 0.00 : 77160a: 48 85 c0 test %rax,%rax : spcid = MyDatabaseTableSpace; : : /* Find existing cache entry, if any. */ : if (!TableSpaceCacheHash) : InitializeTableSpaceCache(); : spc = (TableSpaceCacheEntry *) hash_search(TableSpaceCacheHash, 0.00 : 77160d: 48 89 c2 mov %rax,%rdx : (void *) &spcid, : HASH_FIND, : NULL); : if (spc) 0.00 : 771610: 0f 84 0a 01 00 00 je 771720 : { : TableSpaceCacheEntry *spc = get_tablespace(spcid); : : Assert(spc != NULL); : : if (spc_random_page_cost) 0.00 : 771616: 4d 85 e4 test %r12,%r12 0.00 : 771619: 74 1e je 771639 : { : if (!spc->opts || spc->opts->random_page_cost < 0) 0.00 : 77161b: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 77161f: 48 85 c0 test %rax,%rax 0.00 : 771622: 74 56 je 77167a 0.00 : 771624: f2 0f 10 40 08 movsd 0x8(%rax),%xmm0 0.00 : 771629: 66 0f 2e 05 a7 0c 04 ucomisd 0x40ca7(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 771630: 00 0.00 : 771631: 72 45 jb 771678 : *spc_random_page_cost = random_page_cost; : else : *spc_random_page_cost = spc->opts->random_page_cost; 0.00 : 771633: f2 41 0f 11 04 24 movsd %xmm0,(%r12) : } : : if (spc_seq_page_cost) 0.00 : 771639: 4d 85 ed test %r13,%r13 0.00 : 77163c: 74 1e je 77165c : { : if (!spc->opts || spc->opts->seq_page_cost < 0) 0.00 : 77163e: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 771642: 48 85 c0 test %rax,%rax 0.00 : 771645: 74 4b je 771692 0.00 : 771647: f2 0f 10 40 10 movsd 0x10(%rax),%xmm0 0.00 : 77164c: 66 0f 2e 05 84 0c 04 ucomisd 0x40c84(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 771653: 00 0.00 : 771654: 72 3a jb 771690 : *spc_seq_page_cost = seq_page_cost; : else : *spc_seq_page_cost = spc->opts->seq_page_cost; 0.00 : 771656: f2 41 0f 11 45 00 movsd %xmm0,0x0(%r13) : } : } 0.00 : 77165c: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 771660: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 771664: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 771668: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 77166c: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 771670: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/spccache.c:201 100.00 : 771671: c3 retq 0.00 : 771672: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : Assert(spc != NULL); : : if (spc_random_page_cost) : { : if (!spc->opts || spc->opts->random_page_cost < 0) 0.00 : 771678: 7a b9 jp 771633 : *spc_random_page_cost = random_page_cost; 0.00 : 77167a: 48 8b 05 f7 6e 3f 00 mov 0x3f6ef7(%rip),%rax # b68578 0.00 : 771681: 49 89 04 24 mov %rax,(%r12) : : Assert(spc != NULL); : : if (spc_random_page_cost) : { : if (!spc->opts || spc->opts->random_page_cost < 0) 0.00 : 771685: eb b2 jmp 771639 0.00 : 771687: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 77168e: 00 00 : *spc_random_page_cost = spc->opts->random_page_cost; : } : : if (spc_seq_page_cost) : { : if (!spc->opts || spc->opts->seq_page_cost < 0) 0.00 : 771690: 7a c4 jp 771656 : *spc_seq_page_cost = seq_page_cost; 0.00 : 771692: 48 8b 05 d7 6e 3f 00 mov 0x3f6ed7(%rip),%rax # b68570 0.00 : 771699: 49 89 45 00 mov %rax,0x0(%r13) : *spc_random_page_cost = spc->opts->random_page_cost; : } : : if (spc_seq_page_cost) : { : if (!spc->opts || spc->opts->seq_page_cost < 0) 0.00 : 77169d: eb bd jmp 77165c 0.00 : 77169f: 90 nop : InitializeTableSpaceCache(void) : { : HASHCTL ctl; : : /* Initialize the hash table. */ : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 7716a0: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 7716a7: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 7716ab: 48 39 d1 cmp %rdx,%rcx 0.00 : 7716ae: 76 18 jbe 7716c8 0.00 : 7716b0: 48 89 d0 mov %rdx,%rax 0.00 : 7716b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7716b8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 7716bf: 48 83 c0 08 add $0x8,%rax 0.00 : 7716c3: 48 39 c1 cmp %rax,%rcx 0.00 : 7716c6: 75 f0 jne 7716b8 : ctl.keysize = sizeof(Oid); : ctl.entrysize = sizeof(TableSpaceCacheEntry); : ctl.hash = oid_hash; : TableSpaceCacheHash = 0.00 : 7716c8: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 7716cd: be 10 00 00 00 mov $0x10,%esi 0.00 : 7716d2: bf 61 28 8d 00 mov $0x8d2861,%edi : { : HASHCTL ctl; : : /* Initialize the hash table. */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(Oid); 0.00 : 7716d7: 48 c7 45 88 04 00 00 movq $0x4,-0x78(%rbp) 0.00 : 7716de: 00 : ctl.entrysize = sizeof(TableSpaceCacheEntry); 0.00 : 7716df: 48 c7 45 90 10 00 00 movq $0x10,-0x70(%rbp) 0.00 : 7716e6: 00 : ctl.hash = oid_hash; 0.00 : 7716e7: 48 c7 45 98 50 4f 78 movq $0x784f50,-0x68(%rbp) 0.00 : 7716ee: 00 : TableSpaceCacheHash = 0.00 : 7716ef: e8 bc 31 01 00 callq 7848b0 : hash_create("TableSpace cache", 16, &ctl, : HASH_ELEM | HASH_FUNCTION); : : /* Make sure we've initialized CacheMemoryContext. */ : if (!CacheMemoryContext) 0.00 : 7716f4: 48 83 3d 84 91 44 00 cmpq $0x0,0x449184(%rip) # bba880 0.00 : 7716fb: 00 : /* Initialize the hash table. */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(Oid); : ctl.entrysize = sizeof(TableSpaceCacheEntry); : ctl.hash = oid_hash; : TableSpaceCacheHash = 0.00 : 7716fc: 48 89 05 8d 7b 44 00 mov %rax,0x447b8d(%rip) # bb9290 : hash_create("TableSpace cache", 16, &ctl, : HASH_ELEM | HASH_FUNCTION); : : /* Make sure we've initialized CacheMemoryContext. */ : if (!CacheMemoryContext) 0.00 : 771703: 0f 84 c9 00 00 00 je 7717d2 : CreateCacheMemoryContext(); : : /* Watch for invalidation events. */ : CacheRegisterSyscacheCallback(TABLESPACEOID, 0.00 : 771709: 31 d2 xor %edx,%edx 0.00 : 77170b: be e0 17 77 00 mov $0x7717e0,%esi 0.00 : 771710: bf 30 00 00 00 mov $0x30,%edi 0.00 : 771715: e8 46 5a ff ff callq 767160 0.00 : 77171a: e9 d4 fe ff ff jmpq 7715f3 0.00 : 77171f: 90 nop : * Not found in TableSpace cache. Check catcache. If we don't find a : * valid HeapTuple, it must mean someone has managed to request tablespace : * details for a non-existent tablespace. We'll just treat that case as : * if no options were specified. : */ : tp = SearchSysCache1(TABLESPACEOID, ObjectIdGetDatum(spcid)); 0.00 : 771720: 8b 75 c8 mov -0x38(%rbp),%esi 0.00 : 771723: 45 31 c0 xor %r8d,%r8d 0.00 : 771726: 31 c9 xor %ecx,%ecx 0.00 : 771728: bf 30 00 00 00 mov $0x30,%edi : if (!HeapTupleIsValid(tp)) 0.00 : 77172d: 45 31 f6 xor %r14d,%r14d : * Not found in TableSpace cache. Check catcache. If we don't find a : * valid HeapTuple, it must mean someone has managed to request tablespace : * details for a non-existent tablespace. We'll just treat that case as : * if no options were specified. : */ : tp = SearchSysCache1(TABLESPACEOID, ObjectIdGetDatum(spcid)); 0.00 : 771730: e8 8b 05 00 00 callq 771cc0 : if (!HeapTupleIsValid(tp)) 0.00 : 771735: 48 85 c0 test %rax,%rax : * Not found in TableSpace cache. Check catcache. If we don't find a : * valid HeapTuple, it must mean someone has managed to request tablespace : * details for a non-existent tablespace. We'll just treat that case as : * if no options were specified. : */ : tp = SearchSysCache1(TABLESPACEOID, ObjectIdGetDatum(spcid)); 0.00 : 771738: 48 89 c3 mov %rax,%rbx : if (!HeapTupleIsValid(tp)) 0.00 : 77173b: 74 27 je 771764 : else : { : Datum datum; : bool isNull; : : datum = SysCacheGetAttr(TABLESPACEOID, 0.00 : 77173d: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 771741: ba 04 00 00 00 mov $0x4,%edx 0.00 : 771746: 48 89 c6 mov %rax,%rsi 0.00 : 771749: bf 30 00 00 00 mov $0x30,%edi : tp, : Anum_pg_tablespace_spcoptions, : &isNull); : if (isNull) 0.00 : 77174e: 45 31 f6 xor %r14d,%r14d : else : { : Datum datum; : bool isNull; : : datum = SysCacheGetAttr(TABLESPACEOID, 0.00 : 771751: e8 3a 03 00 00 callq 771a90 : tp, : Anum_pg_tablespace_spcoptions, : &isNull); : if (isNull) 0.00 : 771756: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 77175a: 74 34 je 771790 : bytea *bytea_opts = tablespace_reloptions(datum, false); : : opts = MemoryContextAlloc(CacheMemoryContext, VARSIZE(bytea_opts)); : memcpy(opts, bytea_opts, VARSIZE(bytea_opts)); : } : ReleaseSysCache(tp); 0.00 : 77175c: 48 89 df mov %rbx,%rdi 0.00 : 77175f: e8 4c 05 00 00 callq 771cb0 : /* : * Now create the cache entry. It's important to do this only after : * reading the pg_tablespace entry, since doing so could cause a cache : * flush. : */ : spc = (TableSpaceCacheEntry *) hash_search(TableSpaceCacheHash, 0.00 : 771764: 48 8b 3d 25 7b 44 00 mov 0x447b25(%rip),%rdi # bb9290 0.00 : 77176b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 771770: 31 c9 xor %ecx,%ecx 0.00 : 771772: 4c 89 fe mov %r15,%rsi 0.00 : 771775: e8 26 2f 01 00 callq 7846a0 0.00 : 77177a: 48 89 c2 mov %rax,%rdx : (void *) &spcid, : HASH_ENTER, : NULL); : spc->opts = opts; 0.00 : 77177d: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 771781: e9 90 fe ff ff jmpq 771616 0.00 : 771786: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 77178d: 00 00 00 : &isNull); : if (isNull) : opts = NULL; : else : { : bytea *bytea_opts = tablespace_reloptions(datum, false); 0.00 : 771790: 31 f6 xor %esi,%esi 0.00 : 771792: 48 89 c7 mov %rax,%rdi 0.00 : 771795: e8 46 17 d0 ff callq 472ee0 0.00 : 77179a: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : : opts = MemoryContextAlloc(CacheMemoryContext, VARSIZE(bytea_opts)); 0.00 : 7717a1: 8b 30 mov (%rax),%esi 0.00 : 7717a3: 48 8b 3d d6 90 44 00 mov 0x4490d6(%rip),%rdi # bba880 0.00 : 7717aa: c1 ee 02 shr $0x2,%esi 0.00 : 7717ad: 89 f6 mov %esi,%esi 0.00 : 7717af: e8 dc 76 02 00 callq 798e90 0.00 : 7717b4: 49 89 c6 mov %rax,%r14 : memcpy(opts, bytea_opts, VARSIZE(bytea_opts)); 0.00 : 7717b7: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 7717be: 4c 89 f7 mov %r14,%rdi 0.00 : 7717c1: 8b 10 mov (%rax),%edx 0.00 : 7717c3: 48 89 c6 mov %rax,%rsi 0.00 : 7717c6: c1 ea 02 shr $0x2,%edx 0.00 : 7717c9: 89 d2 mov %edx,%edx 0.00 : 7717cb: e8 20 84 cf ff callq 469bf0 0.00 : 7717d0: eb 8a jmp 77175c : hash_create("TableSpace cache", 16, &ctl, : HASH_ELEM | HASH_FUNCTION); : : /* Make sure we've initialized CacheMemoryContext. */ : if (!CacheMemoryContext) : CreateCacheMemoryContext(); 0.00 : 7717d2: e8 e9 4f ff ff callq 7667c0 0.00 : 7717d7: 90 nop 0.00 : 7717d8: e9 2c ff ff ff jmpq 771709 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1205 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000771970 : : * OID comparator for pg_qsort : */ : static int : oid_compare(const void *a, const void *b) : { : Oid oa = *((Oid *) a); /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1205 100.00 : 771970: 8b 0f mov (%rdi),%ecx : Oid ob = *((Oid *) b); 0.00 : 771972: 8b 16 mov (%rsi),%edx : : if (oa == ob) 0.00 : 771974: 31 c0 xor %eax,%eax : /* : * OID comparator for pg_qsort : */ : static int : oid_compare(const void *a, const void *b) : { 0.00 : 771976: 55 push %rbp : Oid oa = *((Oid *) a); : Oid ob = *((Oid *) b); : : if (oa == ob) 0.00 : 771977: 39 d1 cmp %edx,%ecx : /* : * OID comparator for pg_qsort : */ : static int : oid_compare(const void *a, const void *b) : { 0.00 : 771979: 48 89 e5 mov %rsp,%rbp : Oid oa = *((Oid *) a); : Oid ob = *((Oid *) b); : : if (oa == ob) 0.00 : 77197c: 74 0a je 771988 : return 0; : return (oa > ob) ? 1 : -1; 0.00 : 77197e: 39 ca cmp %ecx,%edx 0.00 : 771980: 19 c0 sbb %eax,%eax 0.00 : 771982: 83 e0 02 and $0x2,%eax 0.00 : 771985: 83 e8 01 sub $0x1,%eax : } 0.00 : 771988: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:2811 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007737d0 : : Oid atttype, int32 atttypmod, : int reqkind, Oid reqop, : Oid *actualop, : Datum **values, int *nvalues, : float4 **numbers, int *nnumbers) : { 0.00 : 7737d0: 55 push %rbp 0.00 : 7737d1: 48 89 e5 mov %rsp,%rbp 0.00 : 7737d4: 41 57 push %r15 0.00 : 7737d6: 41 56 push %r14 0.00 : 7737d8: 41 55 push %r13 : HeapTuple typeTuple; : Form_pg_type typeForm; : : for (i = 0; i < STATISTIC_NUM_SLOTS; i++) : { : if ((&stats->stakind1)[i] == reqkind && 0.00 : 7737da: 45 31 ed xor %r13d,%r13d : Oid atttype, int32 atttypmod, : int reqkind, Oid reqop, : Oid *actualop, : Datum **values, int *nvalues, : float4 **numbers, int *nnumbers) : { 0.00 : 7737dd: 41 54 push %r12 0.00 : 7737df: 53 push %rbx 0.00 : 7737e0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 7737e4: 48 89 7d b0 mov %rdi,-0x50(%rbp) : Form_pg_statistic stats = (Form_pg_statistic) GETSTRUCT(statstuple); 0.00 : 7737e8: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 7737ec: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 7737f0: 48 01 d0 add %rdx,%rax : HeapTuple typeTuple; : Form_pg_type typeForm; : : for (i = 0; i < STATISTIC_NUM_SLOTS; i++) : { : if ((&stats->stakind1)[i] == reqkind && 0.00 : 7737f3: 31 d2 xor %edx,%edx 0.00 : 7737f5: 48 8d 70 14 lea 0x14(%rax),%rsi 0.00 : 7737f9: 48 8d 78 20 lea 0x20(%rax),%rdi 0.00 : 7737fd: 0f bf 04 16 movswl (%rsi,%rdx,1),%eax 0.00 : 773801: 39 c8 cmp %ecx,%eax 0.00 : 773803: 74 23 je 773828 : Oid arrayelemtype; : int narrayelem; : HeapTuple typeTuple; : Form_pg_type typeForm; : : for (i = 0; i < STATISTIC_NUM_SLOTS; i++) 0.00 : 773805: 41 83 c5 01 add $0x1,%r13d 0.00 : 773809: 48 83 c2 02 add $0x2,%rdx 0.00 : 77380d: 41 83 fd 05 cmp $0x5,%r13d 0.00 : 773811: 75 ea jne 7737fd 0.00 : 773813: 31 c0 xor %eax,%eax : if ((Pointer) statarray != DatumGetPointer(val)) : pfree(statarray); : } : : return true; : } 0.00 : 773815: 48 83 c4 38 add $0x38,%rsp 0.00 : 773819: 5b pop %rbx 0.00 : 77381a: 41 5c pop %r12 0.00 : 77381c: 41 5d pop %r13 0.00 : 77381e: 41 5e pop %r14 0.00 : 773820: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:2811 100.00 : 773822: c9 leaveq 0.00 : 773823: c3 retq 0.00 : 773824: 0f 1f 40 00 nopl 0x0(%rax) : HeapTuple typeTuple; : Form_pg_type typeForm; : : for (i = 0; i < STATISTIC_NUM_SLOTS; i++) : { : if ((&stats->stakind1)[i] == reqkind && 0.00 : 773828: 45 85 c0 test %r8d,%r8d 0.00 : 77382b: 74 06 je 773833 0.00 : 77382d: 44 39 04 57 cmp %r8d,(%rdi,%rdx,2) 0.00 : 773831: 75 d2 jne 773805 : break; : } : if (i >= STATISTIC_NUM_SLOTS) : return false; /* not there */ : : if (actualop) 0.00 : 773833: 4d 85 c9 test %r9,%r9 0.00 : 773836: 74 09 je 773841 : *actualop = (&stats->staop1)[i]; 0.00 : 773838: 49 63 c5 movslq %r13d,%rax 0.00 : 77383b: 8b 04 87 mov (%rdi,%rax,4),%eax 0.00 : 77383e: 41 89 01 mov %eax,(%r9) : : if (values) 0.00 : 773841: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 773846: 0f 84 fa 00 00 00 je 773946 : { : val = SysCacheGetAttr(STATRELATTINH, statstuple, 0.00 : 77384c: 41 8d 55 16 lea 0x16(%r13),%edx 0.00 : 773850: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 773854: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 773858: bf 2f 00 00 00 mov $0x2f,%edi 0.00 : 77385d: 0f bf d2 movswl %dx,%edx 0.00 : 773860: e8 2b e2 ff ff callq 771a90 : Anum_pg_statistic_stavalues1 + i, : &isnull); : if (isnull) 0.00 : 773865: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) : if (actualop) : *actualop = (&stats->staop1)[i]; : : if (values) : { : val = SysCacheGetAttr(STATRELATTINH, statstuple, 0.00 : 773869: 48 89 45 b8 mov %rax,-0x48(%rbp) : Anum_pg_statistic_stavalues1 + i, : &isnull); : if (isnull) 0.00 : 77386d: 0f 85 d5 01 00 00 jne 773a48 : elog(ERROR, "stavalues is null"); : statarray = DatumGetArrayTypeP(val); 0.00 : 773873: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 773877: e8 94 b4 00 00 callq 77ed10 0.00 : 77387c: 48 89 45 c0 mov %rax,-0x40(%rbp) : * actual element type embedded in the array, which might be only : * binary-compatible with the passed-in atttype. The info we extract : * here should be the same either way, but deconstruct_array is picky : * about having an exact type OID match. : */ : arrayelemtype = ARR_ELEMTYPE(statarray); 0.00 : 773880: 8b 58 0c mov 0xc(%rax),%ebx : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(arrayelemtype)); 0.00 : 773883: 45 31 c0 xor %r8d,%r8d 0.00 : 773886: 31 c9 xor %ecx,%ecx 0.00 : 773888: 31 d2 xor %edx,%edx 0.00 : 77388a: bf 3b 00 00 00 mov $0x3b,%edi 0.00 : 77388f: 89 de mov %ebx,%esi 0.00 : 773891: e8 2a e4 ff ff callq 771cc0 : if (!HeapTupleIsValid(typeTuple)) 0.00 : 773896: 48 85 c0 test %rax,%rax : * binary-compatible with the passed-in atttype. The info we extract : * here should be the same either way, but deconstruct_array is picky : * about having an exact type OID match. : */ : arrayelemtype = ARR_ELEMTYPE(statarray); : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(arrayelemtype)); 0.00 : 773899: 49 89 c7 mov %rax,%r15 : if (!HeapTupleIsValid(typeTuple)) 0.00 : 77389c: 0f 84 fa 01 00 00 je 773a9c : elog(ERROR, "cache lookup failed for type %u", arrayelemtype); : typeForm = (Form_pg_type) GETSTRUCT(typeTuple); 0.00 : 7738a2: 48 8b 50 10 mov 0x10(%rax),%rdx : : /* Deconstruct array into Datum elements; NULLs not expected */ : deconstruct_array(statarray, 0.00 : 7738a6: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 7738aa: 89 de mov %ebx,%esi 0.00 : 7738ac: 48 8b 7d c0 mov -0x40(%rbp),%rdi : */ : arrayelemtype = ARR_ELEMTYPE(statarray); : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(arrayelemtype)); : if (!HeapTupleIsValid(typeTuple)) : elog(ERROR, "cache lookup failed for type %u", arrayelemtype); : typeForm = (Form_pg_type) GETSTRUCT(typeTuple); 0.00 : 7738b0: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 7738b4: 4c 8d 34 02 lea (%rdx,%rax,1),%r14 : : /* Deconstruct array into Datum elements; NULLs not expected */ : deconstruct_array(statarray, 0.00 : 7738b8: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 7738bc: 45 0f be 46 78 movsbl 0x78(%r14),%r8d 0.00 : 7738c1: 41 0f be 4e 4a movsbl 0x4a(%r14),%ecx 0.00 : 7738c6: 41 0f bf 56 48 movswl 0x48(%r14),%edx 0.00 : 7738cb: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 7738d0: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 7738d7: 00 0.00 : 7738d8: e8 83 53 f4 ff callq 6b8c60 : /* : * If the element type is pass-by-reference, we now have a bunch of : * Datums that are pointers into the syscache value. Copy them to : * avoid problems if syscache decides to drop the entry. : */ : if (!typeForm->typbyval) 0.00 : 7738dd: 41 80 7e 4a 00 cmpb $0x0,0x4a(%r14) 0.00 : 7738e2: 75 47 jne 77392b : { : for (j = 0; j < *nvalues; j++) 0.00 : 7738e4: 48 8b 55 18 mov 0x18(%rbp),%rdx 0.00 : 7738e8: 8b 12 mov (%rdx),%edx 0.00 : 7738ea: 85 d2 test %edx,%edx 0.00 : 7738ec: 7e 3d jle 77392b 0.00 : 7738ee: 45 31 e4 xor %r12d,%r12d 0.00 : 7738f1: 31 c0 xor %eax,%eax 0.00 : 7738f3: eb 08 jmp 7738fd 0.00 : 7738f5: 0f 1f 00 nopl (%rax) 0.00 : 7738f8: 41 0f b6 46 4a movzbl 0x4a(%r14),%eax : { : (*values)[j] = datumCopy((*values)[j], 0.00 : 7738fd: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 773901: 49 63 dc movslq %r12d,%rbx 0.00 : 773904: 0f be f0 movsbl %al,%esi 0.00 : 773907: 48 c1 e3 03 shl $0x3,%rbx : * Datums that are pointers into the syscache value. Copy them to : * avoid problems if syscache decides to drop the entry. : */ : if (!typeForm->typbyval) : { : for (j = 0; j < *nvalues; j++) 0.00 : 77390b: 41 83 c4 01 add $0x1,%r12d : { : (*values)[j] = datumCopy((*values)[j], 0.00 : 77390f: 48 03 1a add (%rdx),%rbx 0.00 : 773912: 41 0f bf 56 48 movswl 0x48(%r14),%edx 0.00 : 773917: 48 8b 3b mov (%rbx),%rdi 0.00 : 77391a: e8 51 c6 f5 ff callq 6cff70 0.00 : 77391f: 48 89 03 mov %rax,(%rbx) : * Datums that are pointers into the syscache value. Copy them to : * avoid problems if syscache decides to drop the entry. : */ : if (!typeForm->typbyval) : { : for (j = 0; j < *nvalues; j++) 0.00 : 773922: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 773926: 44 39 20 cmp %r12d,(%rax) 0.00 : 773929: 7f cd jg 7738f8 : typeForm->typbyval, : typeForm->typlen); : } : } : : ReleaseSysCache(typeTuple); 0.00 : 77392b: 4c 89 ff mov %r15,%rdi 0.00 : 77392e: e8 7d e3 ff ff callq 771cb0 : : /* : * Free statarray if it's a detoasted copy. : */ : if ((Pointer) statarray != DatumGetPointer(val)) 0.00 : 773933: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 773937: 48 39 55 c0 cmp %rdx,-0x40(%rbp) 0.00 : 77393b: 74 09 je 773946 : pfree(statarray); 0.00 : 77393d: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 773941: e8 3a 52 02 00 callq 798b80 : } : : if (numbers) 0.00 : 773946: 48 83 7d 20 00 cmpq $0x0,0x20(%rbp) 0.00 : 77394b: 0f 84 e7 00 00 00 je 773a38 : { : val = SysCacheGetAttr(STATRELATTINH, statstuple, 0.00 : 773951: 41 8d 55 11 lea 0x11(%r13),%edx 0.00 : 773955: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 773959: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 77395d: bf 2f 00 00 00 mov $0x2f,%edi 0.00 : 773962: 0f bf d2 movswl %dx,%edx 0.00 : 773965: e8 26 e1 ff ff callq 771a90 : Anum_pg_statistic_stanumbers1 + i, : &isnull); : if (isnull) 0.00 : 77396a: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) : pfree(statarray); : } : : if (numbers) : { : val = SysCacheGetAttr(STATRELATTINH, statstuple, 0.00 : 77396e: 49 89 c5 mov %rax,%r13 : Anum_pg_statistic_stanumbers1 + i, : &isnull); : if (isnull) 0.00 : 773971: 0f 85 fb 00 00 00 jne 773a72 : elog(ERROR, "stanumbers is null"); : statarray = DatumGetArrayTypeP(val); 0.00 : 773977: 48 89 c7 mov %rax,%rdi 0.00 : 77397a: e8 91 b3 00 00 callq 77ed10 : * We expect the array to be a 1-D float4 array; verify that. We don't : * need to use deconstruct_array() since the array data is just going : * to look like a C array of float4 values. : */ : narrayelem = ARR_DIMS(statarray)[0]; : if (ARR_NDIM(statarray) != 1 || narrayelem <= 0 || 0.00 : 77397f: 83 78 04 01 cmpl $0x1,0x4(%rax) : val = SysCacheGetAttr(STATRELATTINH, statstuple, : Anum_pg_statistic_stanumbers1 + i, : &isnull); : if (isnull) : elog(ERROR, "stanumbers is null"); : statarray = DatumGetArrayTypeP(val); 0.00 : 773983: 48 89 c3 mov %rax,%rbx : /* : * We expect the array to be a 1-D float4 array; verify that. We don't : * need to use deconstruct_array() since the array data is just going : * to look like a C array of float4 values. : */ : narrayelem = ARR_DIMS(statarray)[0]; 0.00 : 773986: 44 8b 60 10 mov 0x10(%rax),%r12d : if (ARR_NDIM(statarray) != 1 || narrayelem <= 0 || 0.00 : 77398a: 74 34 je 7739c0 : ARR_HASNULL(statarray) || : ARR_ELEMTYPE(statarray) != FLOAT4OID) : elog(ERROR, "stanumbers is not a 1-D float4 array"); 0.00 : 77398c: ba 60 32 8d 00 mov $0x8d3260,%edx 0.00 : 773991: be ee 0a 00 00 mov $0xaee,%esi 0.00 : 773996: bf 11 31 8d 00 mov $0x8d3111,%edi 0.00 : 77399b: e8 80 7a 00 00 callq 77b420 0.00 : 7739a0: be a8 31 8d 00 mov $0x8d31a8,%esi 0.00 : 7739a5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 7739aa: 31 c0 xor %eax,%eax 0.00 : 7739ac: e8 7f 78 00 00 callq 77b230 0.00 : 7739b1: e8 1a 5b cf ff callq 4694d0 0.00 : 7739b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7739bd: 00 00 00 : * We expect the array to be a 1-D float4 array; verify that. We don't : * need to use deconstruct_array() since the array data is just going : * to look like a C array of float4 values. : */ : narrayelem = ARR_DIMS(statarray)[0]; : if (ARR_NDIM(statarray) != 1 || narrayelem <= 0 || 0.00 : 7739c0: 45 85 e4 test %r12d,%r12d 0.00 : 7739c3: 7e c7 jle 77398c 0.00 : 7739c5: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 7739c8: 85 c0 test %eax,%eax 0.00 : 7739ca: 75 c0 jne 77398c 0.00 : 7739cc: 81 7b 0c bc 02 00 00 cmpl $0x2bc,0xc(%rbx) 0.00 : 7739d3: 75 b7 jne 77398c : ARR_HASNULL(statarray) || : ARR_ELEMTYPE(statarray) != FLOAT4OID) : elog(ERROR, "stanumbers is not a 1-D float4 array"); : *numbers = (float4 *) palloc(narrayelem * sizeof(float4)); 0.00 : 7739d5: 49 63 c4 movslq %r12d,%rax 0.00 : 7739d8: 4c 8d 34 85 00 00 00 lea 0x0(,%rax,4),%r14 0.00 : 7739df: 00 0.00 : 7739e0: 4c 89 f7 mov %r14,%rdi 0.00 : 7739e3: e8 68 53 02 00 callq 798d50 0.00 : 7739e8: 48 89 c7 mov %rax,%rdi 0.00 : 7739eb: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 7739ef: 48 89 38 mov %rdi,(%rax) : memcpy(*numbers, ARR_DATA_PTR(statarray), narrayelem * sizeof(float4)); 0.00 : 7739f2: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : 7739f5: 85 c0 test %eax,%eax 0.00 : 7739f7: 48 63 d0 movslq %eax,%rdx 0.00 : 7739fa: 75 0c jne 773a08 0.00 : 7739fc: 48 63 43 04 movslq 0x4(%rbx),%rax 0.00 : 773a00: 48 8d 14 c5 10 00 00 lea 0x10(,%rax,8),%rdx 0.00 : 773a07: 00 0.00 : 773a08: 48 8d 34 13 lea (%rbx,%rdx,1),%rsi 0.00 : 773a0c: 4c 89 f2 mov %r14,%rdx 0.00 : 773a0f: e8 dc 61 cf ff callq 469bf0 : *nnumbers = narrayelem; 0.00 : 773a14: 48 8b 55 28 mov 0x28(%rbp),%rdx : : /* : * Free statarray if it's a detoasted copy. : */ : if ((Pointer) statarray != DatumGetPointer(val)) 0.00 : 773a18: 4c 39 eb cmp %r13,%rbx : ARR_HASNULL(statarray) || : ARR_ELEMTYPE(statarray) != FLOAT4OID) : elog(ERROR, "stanumbers is not a 1-D float4 array"); : *numbers = (float4 *) palloc(narrayelem * sizeof(float4)); : memcpy(*numbers, ARR_DATA_PTR(statarray), narrayelem * sizeof(float4)); : *nnumbers = narrayelem; 0.00 : 773a1b: 44 89 22 mov %r12d,(%rdx) : : /* : * Free statarray if it's a detoasted copy. : */ : if ((Pointer) statarray != DatumGetPointer(val)) 0.00 : 773a1e: 74 18 je 773a38 : pfree(statarray); 0.00 : 773a20: 48 89 df mov %rbx,%rdi 0.00 : 773a23: e8 58 51 02 00 callq 798b80 0.00 : 773a28: b8 01 00 00 00 mov $0x1,%eax 0.00 : 773a2d: e9 e3 fd ff ff jmpq 773815 0.00 : 773a32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 773a38: b8 01 00 00 00 mov $0x1,%eax 0.00 : 773a3d: e9 d3 fd ff ff jmpq 773815 0.00 : 773a42: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : val = SysCacheGetAttr(STATRELATTINH, statstuple, : Anum_pg_statistic_stavalues1 + i, : &isnull); : if (isnull) : elog(ERROR, "stavalues is null"); 0.00 : 773a48: ba 60 32 8d 00 mov $0x8d3260,%edx 0.00 : 773a4d: be ac 0a 00 00 mov $0xaac,%esi 0.00 : 773a52: bf 11 31 8d 00 mov $0x8d3111,%edi 0.00 : 773a57: e8 c4 79 00 00 callq 77b420 0.00 : 773a5c: be 38 31 8d 00 mov $0x8d3138,%esi 0.00 : 773a61: bf 14 00 00 00 mov $0x14,%edi 0.00 : 773a66: 31 c0 xor %eax,%eax 0.00 : 773a68: e8 c3 77 00 00 callq 77b230 0.00 : 773a6d: e8 5e 5a cf ff callq 4694d0 : { : val = SysCacheGetAttr(STATRELATTINH, statstuple, : Anum_pg_statistic_stanumbers1 + i, : &isnull); : if (isnull) : elog(ERROR, "stanumbers is null"); 0.00 : 773a72: ba 60 32 8d 00 mov $0x8d3260,%edx 0.00 : 773a77: be e2 0a 00 00 mov $0xae2,%esi 0.00 : 773a7c: bf 11 31 8d 00 mov $0x8d3111,%edi 0.00 : 773a81: e8 9a 79 00 00 callq 77b420 0.00 : 773a86: be 4a 31 8d 00 mov $0x8d314a,%esi 0.00 : 773a8b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 773a90: 31 c0 xor %eax,%eax 0.00 : 773a92: e8 99 77 00 00 callq 77b230 0.00 : 773a97: e8 34 5a cf ff callq 4694d0 : * about having an exact type OID match. : */ : arrayelemtype = ARR_ELEMTYPE(statarray); : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(arrayelemtype)); : if (!HeapTupleIsValid(typeTuple)) : elog(ERROR, "cache lookup failed for type %u", arrayelemtype); 0.00 : 773a9c: ba 60 32 8d 00 mov $0x8d3260,%edx 0.00 : 773aa1: be b9 0a 00 00 mov $0xab9,%esi 0.00 : 773aa6: bf 11 31 8d 00 mov $0x8d3111,%edi 0.00 : 773aab: e8 70 79 00 00 callq 77b420 0.00 : 773ab0: 89 da mov %ebx,%edx 0.00 : 773ab2: be 58 09 7b 00 mov $0x7b0958,%esi 0.00 : 773ab7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 773abc: 31 c0 xor %eax,%eax 0.00 : 773abe: e8 6d 77 00 00 callq 77b230 0.00 : 773ac3: e8 08 5a cf ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:2443 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000773e30 : : * : * Get info needed for printing values of a type : */ : void : getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena) : { 0.00 : 773e30: 55 push %rbp : HeapTuple typeTuple; : Form_pg_type pt; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type)); 0.00 : 773e31: 31 c9 xor %ecx,%ecx 0.00 : 773e33: 45 31 c0 xor %r8d,%r8d : * : * Get info needed for printing values of a type : */ : void : getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena) : { 0.00 : 773e36: 48 89 e5 mov %rsp,%rbp 0.00 : 773e39: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/lsyscache.c:2443 100.00 : 773e3d: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 773e41: 48 89 f3 mov %rsi,%rbx 0.00 : 773e44: 4c 89 6d f8 mov %r13,-0x8(%rbp) : HeapTuple typeTuple; : Form_pg_type pt; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type)); 0.00 : 773e48: 89 fe mov %edi,%esi : * : * Get info needed for printing values of a type : */ : void : getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena) : { 0.00 : 773e4a: 48 83 ec 20 sub $0x20,%rsp 0.00 : 773e4e: 41 89 fc mov %edi,%r12d 0.00 : 773e51: 49 89 d5 mov %rdx,%r13 : HeapTuple typeTuple; : Form_pg_type pt; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type)); 0.00 : 773e54: bf 3b 00 00 00 mov $0x3b,%edi 0.00 : 773e59: 31 d2 xor %edx,%edx 0.00 : 773e5b: e8 60 de ff ff callq 771cc0 : if (!HeapTupleIsValid(typeTuple)) 0.00 : 773e60: 48 85 c0 test %rax,%rax : getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena) : { : HeapTuple typeTuple; : Form_pg_type pt; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type)); 0.00 : 773e63: 48 89 c1 mov %rax,%rcx : if (!HeapTupleIsValid(typeTuple)) 0.00 : 773e66: 74 42 je 773eaa : elog(ERROR, "cache lookup failed for type %u", type); : pt = (Form_pg_type) GETSTRUCT(typeTuple); 0.00 : 773e68: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 773e6c: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 773e70: 48 8d 04 02 lea (%rdx,%rax,1),%rax : : if (!pt->typisdefined) 0.00 : 773e74: 80 78 4e 00 cmpb $0x0,0x4e(%rax) 0.00 : 773e78: 74 5d je 773ed7 : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_OBJECT), : errmsg("type %s is only a shell", : format_type_be(type)))); : if (!OidIsValid(pt->typoutput)) 0.00 : 773e7a: 8b 50 60 mov 0x60(%rax),%edx 0.00 : 773e7d: 85 d2 test %edx,%edx 0.00 : 773e7f: 74 7b je 773efc : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_FUNCTION), : errmsg("no output function available for type %s", : format_type_be(type)))); : : *typOutput = pt->typoutput; 0.00 : 773e81: 89 13 mov %edx,(%rbx) : *typIsVarlena = (!pt->typbyval) && (pt->typlen == -1); 0.00 : 773e83: 8b 40 48 mov 0x48(%rax),%eax : : ReleaseSysCache(typeTuple); 0.00 : 773e86: 48 89 cf mov %rcx,%rdi : (errcode(ERRCODE_UNDEFINED_FUNCTION), : errmsg("no output function available for type %s", : format_type_be(type)))); : : *typOutput = pt->typoutput; : *typIsVarlena = (!pt->typbyval) && (pt->typlen == -1); 0.00 : 773e89: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : 773e8e: 3d ff ff 00 00 cmp $0xffff,%eax 0.00 : 773e93: 41 0f 94 45 00 sete 0x0(%r13) : : ReleaseSysCache(typeTuple); : } 0.00 : 773e98: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 773e9c: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 773ea0: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 773ea4: c9 leaveq : format_type_be(type)))); : : *typOutput = pt->typoutput; : *typIsVarlena = (!pt->typbyval) && (pt->typlen == -1); : : ReleaseSysCache(typeTuple); 0.00 : 773ea5: e9 06 de ff ff jmpq 771cb0 : HeapTuple typeTuple; : Form_pg_type pt; : : typeTuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type)); : if (!HeapTupleIsValid(typeTuple)) : elog(ERROR, "cache lookup failed for type %u", type); 0.00 : 773eaa: ba c0 32 8d 00 mov $0x8d32c0,%edx 0.00 : 773eaf: be 91 09 00 00 mov $0x991,%esi 0.00 : 773eb4: bf 11 31 8d 00 mov $0x8d3111,%edi 0.00 : 773eb9: e8 62 75 00 00 callq 77b420 0.00 : 773ebe: 44 89 e2 mov %r12d,%edx 0.00 : 773ec1: be 58 09 7b 00 mov $0x7b0958,%esi 0.00 : 773ec6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 773ecb: 31 c0 xor %eax,%eax 0.00 : 773ecd: e8 5e 73 00 00 callq 77b230 0.00 : 773ed2: e8 f9 55 cf ff callq 4694d0 : pt = (Form_pg_type) GETSTRUCT(typeTuple); : : if (!pt->typisdefined) : ereport(ERROR, 0.00 : 773ed7: 45 31 c0 xor %r8d,%r8d 0.00 : 773eda: b9 c0 32 8d 00 mov $0x8d32c0,%ecx 0.00 : 773edf: ba 98 09 00 00 mov $0x998,%edx 0.00 : 773ee4: be 11 31 8d 00 mov $0x8d3111,%esi 0.00 : 773ee9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 773eee: e8 cd 6b 00 00 callq 77aac0 0.00 : 773ef3: 84 c0 test %al,%al 0.00 : 773ef5: 75 54 jne 773f4b : (errcode(ERRCODE_UNDEFINED_OBJECT), : errmsg("type %s is only a shell", : format_type_be(type)))); : if (!OidIsValid(pt->typoutput)) : ereport(ERROR, 0.00 : 773ef7: e8 d4 55 cf ff callq 4694d0 0.00 : 773efc: 45 31 c0 xor %r8d,%r8d 0.00 : 773eff: b9 c0 32 8d 00 mov $0x8d32c0,%ecx 0.00 : 773f04: 66 ba 9d 09 mov $0x99d,%dx 0.00 : 773f08: be 11 31 8d 00 mov $0x8d3111,%esi 0.00 : 773f0d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 773f12: e8 a9 6b 00 00 callq 77aac0 0.00 : 773f17: 84 c0 test %al,%al 0.00 : 773f19: 74 dc je 773ef7 0.00 : 773f1b: 44 89 e7 mov %r12d,%edi 0.00 : 773f1e: e8 fd 54 f6 ff callq 6d9420 0.00 : 773f23: bf d0 31 8d 00 mov $0x8d31d0,%edi 0.00 : 773f28: 48 89 c6 mov %rax,%rsi 0.00 : 773f2b: 31 c0 xor %eax,%eax 0.00 : 773f2d: e8 6e 89 00 00 callq 77c8a0 0.00 : 773f32: bf 84 80 20 03 mov $0x3208084,%edi 0.00 : 773f37: 89 c3 mov %eax,%ebx 0.00 : 773f39: e8 12 8e 00 00 callq 77cd50 0.00 : 773f3e: 89 de mov %ebx,%esi 0.00 : 773f40: 89 c7 mov %eax,%edi 0.00 : 773f42: 31 c0 xor %eax,%eax 0.00 : 773f44: e8 97 66 00 00 callq 77a5e0 0.00 : 773f49: eb ac jmp 773ef7 : if (!HeapTupleIsValid(typeTuple)) : elog(ERROR, "cache lookup failed for type %u", type); : pt = (Form_pg_type) GETSTRUCT(typeTuple); : : if (!pt->typisdefined) : ereport(ERROR, 0.00 : 773f4b: 44 89 e7 mov %r12d,%edi 0.00 : 773f4e: e8 cd 54 f6 ff callq 6d9420 0.00 : 773f53: bf 5d 31 8d 00 mov $0x8d315d,%edi 0.00 : 773f58: 48 89 c6 mov %rax,%rsi 0.00 : 773f5b: 31 c0 xor %eax,%eax 0.00 : 773f5d: e8 3e 89 00 00 callq 77c8a0 0.00 : 773f62: bf 84 70 00 04 mov $0x4007084,%edi 0.00 : 773f67: 89 c3 mov %eax,%ebx 0.00 : 773f69: eb ce jmp 773f39 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/typcache.c:237 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000775690 : : * requested opclass-dependent fields; the caller needs to check whether : * the fields are InvalidOid or not. : */ : TypeCacheEntry * : lookup_type_cache(Oid type_id, int flags) : { 0.00 : 775690: 55 push %rbp 0.00 : 775691: 48 89 e5 mov %rsp,%rbp 0.00 : 775694: 41 57 push %r15 0.00 : 775696: 41 56 push %r14 0.00 : 775698: 41 55 push %r13 0.00 : 77569a: 41 89 f5 mov %esi,%r13d 0.00 : 77569d: 41 54 push %r12 0.00 : 77569f: 53 push %rbx 0.00 : 7756a0: 48 81 ec 88 00 00 00 sub $0x88,%rsp : TypeCacheEntry *typentry; : bool found; : : if (TypeCacheHash == NULL) 0.00 : 7756a7: 48 83 3d 31 3f 44 00 cmpq $0x0,0x443f31(%rip) # bb95e0 0.00 : 7756ae: 00 : * requested opclass-dependent fields; the caller needs to check whether : * the fields are InvalidOid or not. : */ : TypeCacheEntry * : lookup_type_cache(Oid type_id, int flags) : { 0.00 : 7756af: 89 bd 5c ff ff ff mov %edi,-0xa4(%rbp) : TypeCacheEntry *typentry; : bool found; : : if (TypeCacheHash == NULL) 0.00 : 7756b5: 0f 84 0d 05 00 00 je 775bc8 : if (!CacheMemoryContext) : CreateCacheMemoryContext(); : } : : /* Try to look up an existing entry */ : typentry = (TypeCacheEntry *) hash_search(TypeCacheHash, 0.00 : 7756bb: 4c 8d bd 5c ff ff ff lea -0xa4(%rbp),%r15 0.00 : 7756c2: 48 8b 3d 17 3f 44 00 mov 0x443f17(%rip),%rdi # bb95e0 0.00 : 7756c9: 31 c9 xor %ecx,%ecx 0.00 : 7756cb: 31 d2 xor %edx,%edx 0.00 : 7756cd: 4c 89 fe mov %r15,%rsi 0.00 : 7756d0: e8 cb ef 00 00 callq 7846a0 : (void *) &type_id, : HASH_FIND, NULL); : if (typentry == NULL) 0.00 : 7756d5: 48 85 c0 test %rax,%rax : if (!CacheMemoryContext) : CreateCacheMemoryContext(); : } : : /* Try to look up an existing entry */ : typentry = (TypeCacheEntry *) hash_search(TypeCacheHash, 0.00 : 7756d8: 49 89 c4 mov %rax,%r12 0.00 : 7756db: 49 89 c6 mov %rax,%r14 : (void *) &type_id, : HASH_FIND, NULL); : if (typentry == NULL) 0.00 : 7756de: 0f 84 ec 05 00 00 je 775cd0 : } : : /* : * If we haven't already found the opclasses, try to do so : */ : if ((flags & (TYPECACHE_EQ_OPR | TYPECACHE_LT_OPR | TYPECACHE_GT_OPR | 0.00 : 7756e4: 41 f7 c5 6f 02 00 00 test $0x26f,%r13d 0.00 : 7756eb: 74 0d je 7756fa 0.00 : 7756ed: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.00 : 7756f2: 85 c0 test %eax,%eax 0.00 : 7756f4: 0f 84 d6 01 00 00 je 7758d0 : typentry->hash_proc = InvalidOid; : typentry->hash_proc_finfo.fn_oid = InvalidOid; : } : } : : if ((flags & (TYPECACHE_HASH_PROC | TYPECACHE_HASH_PROC_FINFO | 0.00 : 7756fa: 41 f7 c5 90 04 00 00 test $0x490,%r13d 0.00 : 775701: 74 0d je 775710 0.00 : 775703: 41 8b 5c 24 18 mov 0x18(%r12),%ebx 0.00 : 775708: 85 db test %ebx,%ebx 0.00 : 77570a: 0f 84 30 02 00 00 je 775940 : typentry->hash_opintype = get_opclass_input_type(opclass); : } : } : : /* Look for requested operators and functions */ : if ((flags & (TYPECACHE_EQ_OPR | TYPECACHE_EQ_OPR_FINFO)) && 0.00 : 775710: 41 f6 c5 21 test $0x21,%r13b 0.00 : 775714: 74 40 je 775756 0.00 : 775716: 45 8b 5c 24 20 mov 0x20(%r12),%r11d 0.00 : 77571b: 45 85 db test %r11d,%r11d 0.00 : 77571e: 75 36 jne 775756 : typentry->eq_opr == InvalidOid) : { : Oid eq_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) 0.00 : 775720: 41 8b 7c 24 10 mov 0x10(%r12),%edi 0.00 : 775725: 85 ff test %edi,%edi 0.00 : 775727: 0f 85 93 03 00 00 jne 775ac0 : eq_opr = get_opfamily_member(typentry->btree_opf, : typentry->btree_opintype, : typentry->btree_opintype, : BTEqualStrategyNumber); : if (eq_opr == InvalidOid && 0.00 : 77572d: 41 8b 7c 24 18 mov 0x18(%r12),%edi 0.00 : 775732: 31 db xor %ebx,%ebx 0.00 : 775734: 85 ff test %edi,%edi 0.00 : 775736: 0f 85 7c 07 00 00 jne 775eb8 : eq_opr = InvalidOid; : else if (eq_opr == RECORD_EQ_OP && : !record_fields_have_equality(typentry)) : eq_opr = InvalidOid; : : typentry->eq_opr = eq_opr; 0.00 : 77573c: 41 89 5c 24 20 mov %ebx,0x20(%r12) : /* : * Reset info about hash function whenever we pick up new info about : * equality operator. This is so we can ensure that the hash function : * matches the operator. : */ : typentry->hash_proc = InvalidOid; 0.00 : 775741: 41 c7 44 24 30 00 00 movl $0x0,0x30(%r12) 0.00 : 775748: 00 00 : typentry->hash_proc_finfo.fn_oid = InvalidOid; 0.00 : 77574a: 41 c7 84 24 a0 00 00 movl $0x0,0xa0(%r12) 0.00 : 775751: 00 00 00 00 00 : } : if ((flags & TYPECACHE_LT_OPR) && typentry->lt_opr == InvalidOid) 0.00 : 775756: 41 f6 c5 02 test $0x2,%r13b 0.00 : 77575a: 74 1e je 77577a 0.00 : 77575c: 45 8b 54 24 24 mov 0x24(%r12),%r10d 0.00 : 775761: 45 85 d2 test %r10d,%r10d 0.00 : 775764: 75 14 jne 77577a : { : Oid lt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) 0.00 : 775766: 41 8b 7c 24 10 mov 0x10(%r12),%edi : if (OidIsValid(subdiffOid)) : fmgr_info_cxt(subdiffOid, &typentry->rng_subdiff_finfo, : CacheMemoryContext); : : /* Lastly, set up link to the element type --- this marks data valid */ : typentry->rngelemtype = lookup_type_cache(subtypeOid, 0); 0.00 : 77576b: 31 db xor %ebx,%ebx : } : if ((flags & TYPECACHE_LT_OPR) && typentry->lt_opr == InvalidOid) : { : Oid lt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) 0.00 : 77576d: 85 ff test %edi,%edi 0.00 : 77576f: 0f 85 1b 04 00 00 jne 775b90 : lt_opr = InvalidOid; : else if (lt_opr == RECORD_LT_OP && : !record_fields_have_compare(typentry)) : lt_opr = InvalidOid; : : typentry->lt_opr = lt_opr; 0.00 : 775775: 41 89 5c 24 24 mov %ebx,0x24(%r12) : } : if ((flags & TYPECACHE_GT_OPR) && typentry->gt_opr == InvalidOid) 0.00 : 77577a: 41 f6 c5 04 test $0x4,%r13b 0.00 : 77577e: 74 1e je 77579e 0.00 : 775780: 45 8b 4c 24 28 mov 0x28(%r12),%r9d 0.00 : 775785: 45 85 c9 test %r9d,%r9d 0.00 : 775788: 75 14 jne 77579e : { : Oid gt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) 0.00 : 77578a: 41 8b 7c 24 10 mov 0x10(%r12),%edi : if (OidIsValid(subdiffOid)) : fmgr_info_cxt(subdiffOid, &typentry->rng_subdiff_finfo, : CacheMemoryContext); : : /* Lastly, set up link to the element type --- this marks data valid */ : typentry->rngelemtype = lookup_type_cache(subtypeOid, 0); 0.00 : 77578f: 31 db xor %ebx,%ebx : } : if ((flags & TYPECACHE_GT_OPR) && typentry->gt_opr == InvalidOid) : { : Oid gt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) 0.00 : 775791: 85 ff test %edi,%edi 0.00 : 775793: 0f 85 7f 03 00 00 jne 775b18 : gt_opr = InvalidOid; : else if (gt_opr == RECORD_GT_OP && : !record_fields_have_compare(typentry)) : gt_opr = InvalidOid; : : typentry->gt_opr = gt_opr; 0.00 : 775799: 41 89 5c 24 28 mov %ebx,0x28(%r12) : } : if ((flags & (TYPECACHE_CMP_PROC | TYPECACHE_CMP_PROC_FINFO)) && 0.00 : 77579e: 41 f6 c5 48 test $0x48,%r13b 0.00 : 7757a2: 74 1e je 7757c2 0.00 : 7757a4: 45 8b 44 24 2c mov 0x2c(%r12),%r8d 0.00 : 7757a9: 45 85 c0 test %r8d,%r8d 0.00 : 7757ac: 75 14 jne 7757c2 : typentry->cmp_proc == InvalidOid) : { : Oid cmp_proc = InvalidOid; : : if (typentry->btree_opf != InvalidOid) 0.00 : 7757ae: 41 8b 7c 24 10 mov 0x10(%r12),%edi : if (OidIsValid(subdiffOid)) : fmgr_info_cxt(subdiffOid, &typentry->rng_subdiff_finfo, : CacheMemoryContext); : : /* Lastly, set up link to the element type --- this marks data valid */ : typentry->rngelemtype = lookup_type_cache(subtypeOid, 0); 0.00 : 7757b3: 31 db xor %ebx,%ebx : if ((flags & (TYPECACHE_CMP_PROC | TYPECACHE_CMP_PROC_FINFO)) && : typentry->cmp_proc == InvalidOid) : { : Oid cmp_proc = InvalidOid; : : if (typentry->btree_opf != InvalidOid) 0.00 : 7757b5: 85 ff test %edi,%edi 0.00 : 7757b7: 0f 85 a3 02 00 00 jne 775a60 : cmp_proc = InvalidOid; : else if (cmp_proc == F_BTRECORDCMP && : !record_fields_have_compare(typentry)) : cmp_proc = InvalidOid; : : typentry->cmp_proc = cmp_proc; 0.00 : 7757bd: 41 89 5c 24 2c mov %ebx,0x2c(%r12) : } : if ((flags & (TYPECACHE_HASH_PROC | TYPECACHE_HASH_PROC_FINFO)) && 0.00 : 7757c2: 41 f6 c5 90 test $0x90,%r13b 0.00 : 7757c6: 74 3f je 775807 0.00 : 7757c8: 41 8b 7c 24 30 mov 0x30(%r12),%edi 0.00 : 7757cd: 85 ff test %edi,%edi 0.00 : 7757cf: 75 36 jne 775807 : : /* : * We insist that the eq_opr, if one has been determined, match the : * hash opclass; else report there is no hash function. : */ : if (typentry->hash_opf != InvalidOid && 0.00 : 7757d1: 41 8b 7c 24 18 mov 0x18(%r12),%edi 0.00 : 7757d6: 85 ff test %edi,%edi 0.00 : 7757d8: 74 26 je 775800 0.00 : 7757da: 41 8b 5c 24 20 mov 0x20(%r12),%ebx 0.00 : 7757df: 85 db test %ebx,%ebx 0.00 : 7757e1: 0f 84 6e 04 00 00 je 775c55 0.00 : 7757e7: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 7757ec: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 7757f1: 89 f2 mov %esi,%edx 0.00 : 7757f3: e8 08 d1 ff ff callq 772900 0.00 : 7757f8: 39 c3 cmp %eax,%ebx 0.00 : 7757fa: 0f 84 50 04 00 00 je 775c50 : /* : * As above, make sure hash_array will succeed. We don't currently : * support hashing for composite types, but when we do, we'll need : * more logic here to check that case too. : */ : if (hash_proc == F_HASH_ARRAY && 0.00 : 775800: 31 db xor %ebx,%ebx : !array_element_has_hashing(typentry)) : hash_proc = InvalidOid; : : typentry->hash_proc = hash_proc; 0.00 : 775802: 41 89 5c 24 30 mov %ebx,0x30(%r12) : * : * Note: we tell fmgr the finfo structures live in CacheMemoryContext, : * which is not quite right (they're really in the hash table's private : * memory context) but this will do for our purposes. : */ : if ((flags & TYPECACHE_EQ_OPR_FINFO) && 0.00 : 775807: 41 f6 c5 20 test $0x20,%r13b 0.00 : 77580b: 74 1b je 775828 0.00 : 77580d: 41 8b 74 24 40 mov 0x40(%r12),%esi 0.00 : 775812: 85 f6 test %esi,%esi 0.00 : 775814: 75 12 jne 775828 0.00 : 775816: 41 8b 7c 24 20 mov 0x20(%r12),%edi 0.00 : 77581b: 85 ff test %edi,%edi 0.00 : 77581d: 0f 85 75 02 00 00 jne 775a98 0.00 : 775823: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : eq_opr_func = get_opcode(typentry->eq_opr); : if (eq_opr_func != InvalidOid) : fmgr_info_cxt(eq_opr_func, &typentry->eq_opr_finfo, : CacheMemoryContext); : } : if ((flags & TYPECACHE_CMP_PROC_FINFO) && 0.00 : 775828: 41 f6 c5 40 test $0x40,%r13b 0.00 : 77582c: 74 1a je 775848 0.00 : 77582e: 41 8b 4c 24 70 mov 0x70(%r12),%ecx 0.00 : 775833: 85 c9 test %ecx,%ecx 0.00 : 775835: 75 11 jne 775848 0.00 : 775837: 41 8b 7c 24 2c mov 0x2c(%r12),%edi 0.00 : 77583c: 85 ff test %edi,%edi 0.00 : 77583e: 0f 85 0c 03 00 00 jne 775b50 0.00 : 775844: 0f 1f 40 00 nopl 0x0(%rax) : typentry->cmp_proc != InvalidOid) : { : fmgr_info_cxt(typentry->cmp_proc, &typentry->cmp_proc_finfo, : CacheMemoryContext); : } : if ((flags & TYPECACHE_HASH_PROC_FINFO) && 0.00 : 775848: 45 84 ed test %r13b,%r13b 0.00 : 77584b: 79 23 jns 775870 0.00 : 77584d: 41 8b 94 24 a0 00 00 mov 0xa0(%r12),%edx 0.00 : 775854: 00 0.00 : 775855: 85 d2 test %edx,%edx 0.00 : 775857: 75 17 jne 775870 0.00 : 775859: 41 8b 7c 24 30 mov 0x30(%r12),%edi 0.00 : 77585e: 85 ff test %edi,%edi 0.00 : 775860: 0f 85 0a 03 00 00 jne 775b70 0.00 : 775866: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 77586d: 00 00 00 : } : : /* : * If it's a composite type (row type), get tupdesc if requested : */ : if ((flags & TYPECACHE_TUPDESC) && 0.00 : 775870: 41 f7 c5 00 01 00 00 test $0x100,%r13d 0.00 : 775877: 75 37 jne 7758b0 : } : : /* : * If requested, get information about a range type : */ : if ((flags & TYPECACHE_RANGE_INFO) && 0.00 : 775879: 41 81 e5 00 08 00 00 and $0x800,%r13d 0.00 : 775880: 74 0f je 775891 0.00 : 775882: 49 83 bc 24 d0 00 00 cmpq $0x0,0xd0(%r12) 0.00 : 775889: 00 00 0.00 : 77588b: 0f 84 ef 00 00 00 je 775980 : { : load_rangetype_info(typentry); : } : : return typentry; : } 0.00 : 775891: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 775898: 4c 89 e0 mov %r12,%rax 0.00 : 77589b: 5b pop %rbx 0.00 : 77589c: 41 5c pop %r12 0.00 : 77589e: 41 5d pop %r13 0.00 : 7758a0: 41 5e pop %r14 0.00 : 7758a2: 41 5f pop %r15 0.00 : 7758a4: c9 leaveq 0.00 : 7758a5: c3 retq 0.00 : 7758a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7758ad: 00 00 00 : } : : /* : * If it's a composite type (row type), get tupdesc if requested : */ : if ((flags & TYPECACHE_TUPDESC) && 0.00 : 7758b0: 49 83 bc 24 c8 00 00 cmpq $0x0,0xc8(%r12) 0.00 : 7758b7: 00 00 0.00 : 7758b9: 75 be jne 775879 0.00 : 7758bb: 41 80 7c 24 09 63 cmpb $0x63,0x9(%r12) 0.00 : 7758c1: 75 b6 jne 775879 : typentry->tupDesc == NULL && : typentry->typtype == TYPTYPE_COMPOSITE) : { : load_typcache_tupdesc(typentry); 0.00 : 7758c3: 4c 89 e7 mov %r12,%rdi 0.00 : 7758c6: e8 55 fd ff ff callq 775620 0.00 : 7758cb: eb ac jmp 775879 0.00 : 7758cd: 0f 1f 00 nopl (%rax) : TYPECACHE_BTREE_OPFAMILY)) && : typentry->btree_opf == InvalidOid) : { : Oid opclass; : : opclass = GetDefaultOpClass(type_id, BTREE_AM_OID); 0.00 : 7758d0: 8b bd 5c ff ff ff mov -0xa4(%rbp),%edi 0.00 : 7758d6: be 93 01 00 00 mov $0x193,%esi 0.00 : 7758db: e8 50 9e df ff callq 56f730 : if (OidIsValid(opclass)) 0.00 : 7758e0: 85 c0 test %eax,%eax : TYPECACHE_BTREE_OPFAMILY)) && : typentry->btree_opf == InvalidOid) : { : Oid opclass; : : opclass = GetDefaultOpClass(type_id, BTREE_AM_OID); 0.00 : 7758e2: 89 c3 mov %eax,%ebx : if (OidIsValid(opclass)) 0.00 : 7758e4: 0f 85 7e 05 00 00 jne 775e68 : { : typentry->btree_opf = get_opclass_family(opclass); : typentry->btree_opintype = get_opclass_input_type(opclass); : } : /* If no btree opclass, we force lookup of the hash opclass */ : if (typentry->btree_opf == InvalidOid) /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/typcache.c:237 100.00 : 7758ea: 45 8b 7c 24 10 mov 0x10(%r12),%r15d 0.00 : 7758ef: 45 85 ff test %r15d,%r15d 0.00 : 7758f2: 0f 85 a8 03 00 00 jne 775ca0 : { : if (typentry->hash_opf == InvalidOid) 0.00 : 7758f8: 45 8b 74 24 18 mov 0x18(%r12),%r14d 0.00 : 7758fd: 45 85 f6 test %r14d,%r14d 0.00 : 775900: 0f 85 f4 fd ff ff jne 7756fa : { : opclass = GetDefaultOpClass(type_id, HASH_AM_OID); 0.00 : 775906: 8b bd 5c ff ff ff mov -0xa4(%rbp),%edi 0.00 : 77590c: be 95 01 00 00 mov $0x195,%esi 0.00 : 775911: e8 1a 9e df ff callq 56f730 : if (OidIsValid(opclass)) 0.00 : 775916: 85 c0 test %eax,%eax : /* If no btree opclass, we force lookup of the hash opclass */ : if (typentry->btree_opf == InvalidOid) : { : if (typentry->hash_opf == InvalidOid) : { : opclass = GetDefaultOpClass(type_id, HASH_AM_OID); 0.00 : 775918: 89 c3 mov %eax,%ebx : if (OidIsValid(opclass)) 0.00 : 77591a: 0f 84 da fd ff ff je 7756fa : { : typentry->hash_opf = get_opclass_family(opclass); 0.00 : 775920: 89 c7 mov %eax,%edi 0.00 : 775922: e8 59 dc ff ff callq 773580 : typentry->hash_opintype = get_opclass_input_type(opclass); 0.00 : 775927: 89 df mov %ebx,%edi : if (typentry->hash_opf == InvalidOid) : { : opclass = GetDefaultOpClass(type_id, HASH_AM_OID); : if (OidIsValid(opclass)) : { : typentry->hash_opf = get_opclass_family(opclass); 0.00 : 775929: 41 89 44 24 18 mov %eax,0x18(%r12) : typentry->hash_opintype = get_opclass_input_type(opclass); 0.00 : 77592e: e8 dd db ff ff callq 773510 0.00 : 775933: 41 89 44 24 1c mov %eax,0x1c(%r12) 0.00 : 775938: e9 bd fd ff ff jmpq 7756fa 0.00 : 77593d: 0f 1f 00 nopl (%rax) : TYPECACHE_HASH_OPFAMILY)) && : typentry->hash_opf == InvalidOid) : { : Oid opclass; : : opclass = GetDefaultOpClass(type_id, HASH_AM_OID); 0.00 : 775940: 8b bd 5c ff ff ff mov -0xa4(%rbp),%edi 0.00 : 775946: be 95 01 00 00 mov $0x195,%esi 0.00 : 77594b: e8 e0 9d df ff callq 56f730 : if (OidIsValid(opclass)) 0.00 : 775950: 85 c0 test %eax,%eax : TYPECACHE_HASH_OPFAMILY)) && : typentry->hash_opf == InvalidOid) : { : Oid opclass; : : opclass = GetDefaultOpClass(type_id, HASH_AM_OID); 0.00 : 775952: 89 c3 mov %eax,%ebx : if (OidIsValid(opclass)) 0.00 : 775954: 0f 84 b6 fd ff ff je 775710 : { : typentry->hash_opf = get_opclass_family(opclass); 0.00 : 77595a: 89 c7 mov %eax,%edi 0.00 : 77595c: e8 1f dc ff ff callq 773580 : typentry->hash_opintype = get_opclass_input_type(opclass); 0.00 : 775961: 89 df mov %ebx,%edi : Oid opclass; : : opclass = GetDefaultOpClass(type_id, HASH_AM_OID); : if (OidIsValid(opclass)) : { : typentry->hash_opf = get_opclass_family(opclass); 0.00 : 775963: 41 89 44 24 18 mov %eax,0x18(%r12) : typentry->hash_opintype = get_opclass_input_type(opclass); 0.00 : 775968: e8 a3 db ff ff callq 773510 0.00 : 77596d: 41 89 44 24 1c mov %eax,0x1c(%r12) 0.00 : 775972: e9 99 fd ff ff jmpq 775710 0.00 : 775977: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 77597e: 00 00 : } : : /* : * If requested, get information about a range type : */ : if ((flags & TYPECACHE_RANGE_INFO) && 0.00 : 775980: 41 80 7c 24 09 72 cmpb $0x72,0x9(%r12) 0.00 : 775986: 0f 85 05 ff ff ff jne 775891 : Oid opfamilyOid; : Oid opcintype; : Oid cmpFnOid; : : /* get information from pg_range */ : tup = SearchSysCache1(RANGETYPE, ObjectIdGetDatum(typentry->type_id)); 0.00 : 77598c: 41 8b 34 24 mov (%r12),%esi 0.00 : 775990: 45 31 c0 xor %r8d,%r8d 0.00 : 775993: 31 c9 xor %ecx,%ecx 0.00 : 775995: 31 d2 xor %edx,%edx 0.00 : 775997: bf 2b 00 00 00 mov $0x2b,%edi 0.00 : 77599c: e8 1f c3 ff ff callq 771cc0 : /* should not fail, since we already checked typtype ... */ : if (!HeapTupleIsValid(tup)) 0.00 : 7759a1: 48 85 c0 test %rax,%rax : Oid opfamilyOid; : Oid opcintype; : Oid cmpFnOid; : : /* get information from pg_range */ : tup = SearchSysCache1(RANGETYPE, ObjectIdGetDatum(typentry->type_id)); 0.00 : 7759a4: 48 89 c7 mov %rax,%rdi : /* should not fail, since we already checked typtype ... */ : if (!HeapTupleIsValid(tup)) 0.00 : 7759a7: 0f 84 36 06 00 00 je 775fe3 : elog(ERROR, "cache lookup failed for range type %u", : typentry->type_id); : pg_range = (Form_pg_range) GETSTRUCT(tup); 0.00 : 7759ad: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 7759b1: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 7759b5: 48 01 d0 add %rdx,%rax : : subtypeOid = pg_range->rngsubtype; 0.00 : 7759b8: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 7759bb: 89 95 58 ff ff ff mov %edx,-0xa8(%rbp) : typentry->rng_collation = pg_range->rngcollation; 0.00 : 7759c1: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 7759c4: 41 89 94 24 d8 00 00 mov %edx,0xd8(%r12) 0.00 : 7759cb: 00 : opclassOid = pg_range->rngsubopc; 0.00 : 7759cc: 8b 58 0c mov 0xc(%rax),%ebx : canonicalOid = pg_range->rngcanonical; 0.00 : 7759cf: 44 8b 70 10 mov 0x10(%rax),%r14d : subdiffOid = pg_range->rngsubdiff; 0.00 : 7759d3: 44 8b 78 14 mov 0x14(%rax),%r15d : : ReleaseSysCache(tup); 0.00 : 7759d7: e8 d4 c2 ff ff callq 771cb0 : : /* get opclass properties and look up the comparison function */ : opfamilyOid = get_opclass_family(opclassOid); 0.00 : 7759dc: 89 df mov %ebx,%edi 0.00 : 7759de: e8 9d db ff ff callq 773580 : opcintype = get_opclass_input_type(opclassOid); 0.00 : 7759e3: 89 df mov %ebx,%edi : subdiffOid = pg_range->rngsubdiff; : : ReleaseSysCache(tup); : : /* get opclass properties and look up the comparison function */ : opfamilyOid = get_opclass_family(opclassOid); 0.00 : 7759e5: 41 89 c5 mov %eax,%r13d : opcintype = get_opclass_input_type(opclassOid); 0.00 : 7759e8: e8 23 db ff ff callq 773510 : : cmpFnOid = get_opfamily_proc(opfamilyOid, opcintype, opcintype, 0.00 : 7759ed: 44 89 ef mov %r13d,%edi 0.00 : 7759f0: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 7759f5: 89 c2 mov %eax,%edx 0.00 : 7759f7: 89 c6 mov %eax,%esi : : ReleaseSysCache(tup); : : /* get opclass properties and look up the comparison function */ : opfamilyOid = get_opclass_family(opclassOid); : opcintype = get_opclass_input_type(opclassOid); 0.00 : 7759f9: 89 c3 mov %eax,%ebx : : cmpFnOid = get_opfamily_proc(opfamilyOid, opcintype, opcintype, 0.00 : 7759fb: e8 b0 ce ff ff callq 7728b0 : BTORDER_PROC); : if (!RegProcedureIsValid(cmpFnOid)) 0.00 : 775a00: 85 c0 test %eax,%eax : : /* get opclass properties and look up the comparison function */ : opfamilyOid = get_opclass_family(opclassOid); : opcintype = get_opclass_input_type(opclassOid); : : cmpFnOid = get_opfamily_proc(opfamilyOid, opcintype, opcintype, 0.00 : 775a02: 89 c7 mov %eax,%edi : BTORDER_PROC); : if (!RegProcedureIsValid(cmpFnOid)) 0.00 : 775a04: 0f 84 a2 05 00 00 je 775fac : elog(ERROR, "missing support function %d(%u,%u) in opfamily %u", : BTORDER_PROC, opcintype, opcintype, opfamilyOid); : : /* set up cached fmgrinfo structs */ : fmgr_info_cxt(cmpFnOid, &typentry->rng_cmp_proc_finfo, 0.00 : 775a0a: 48 8b 15 6f 4e 44 00 mov 0x444e6f(%rip),%rdx # bba880 0.00 : 775a11: 49 8d b4 24 e0 00 00 lea 0xe0(%r12),%rsi 0.00 : 775a18: 00 0.00 : 775a19: e8 32 a6 00 00 callq 780050 : CacheMemoryContext); : if (OidIsValid(canonicalOid)) 0.00 : 775a1e: 45 85 f6 test %r14d,%r14d 0.00 : 775a21: 0f 85 ee 04 00 00 jne 775f15 : fmgr_info_cxt(canonicalOid, &typentry->rng_canonical_finfo, : CacheMemoryContext); : if (OidIsValid(subdiffOid)) 0.00 : 775a27: 45 85 ff test %r15d,%r15d 0.00 : 775a2a: 74 17 je 775a43 : fmgr_info_cxt(subdiffOid, &typentry->rng_subdiff_finfo, 0.00 : 775a2c: 48 8b 15 4d 4e 44 00 mov 0x444e4d(%rip),%rdx # bba880 0.00 : 775a33: 49 8d b4 24 40 01 00 lea 0x140(%r12),%rsi 0.00 : 775a3a: 00 0.00 : 775a3b: 44 89 ff mov %r15d,%edi 0.00 : 775a3e: e8 0d a6 00 00 callq 780050 : CacheMemoryContext); : : /* Lastly, set up link to the element type --- this marks data valid */ : typentry->rngelemtype = lookup_type_cache(subtypeOid, 0); 0.00 : 775a43: 8b bd 58 ff ff ff mov -0xa8(%rbp),%edi 0.00 : 775a49: 31 f6 xor %esi,%esi 0.00 : 775a4b: e8 40 fc ff ff callq 775690 0.00 : 775a50: 49 89 84 24 d0 00 00 mov %rax,0xd0(%r12) 0.00 : 775a57: 00 0.00 : 775a58: e9 34 fe ff ff jmpq 775891 0.00 : 775a5d: 0f 1f 00 nopl (%rax) : typentry->cmp_proc == InvalidOid) : { : Oid cmp_proc = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : cmp_proc = get_opfamily_proc(typentry->btree_opf, 0.00 : 775a60: 41 8b 74 24 14 mov 0x14(%r12),%esi 0.00 : 775a65: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 775a6a: 89 f2 mov %esi,%edx 0.00 : 775a6c: e8 3f ce ff ff callq 7728b0 : typentry->btree_opintype, : typentry->btree_opintype, : BTORDER_PROC); : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (cmp_proc == F_BTARRAYCMP && 0.00 : 775a71: 3d 7e 01 00 00 cmp $0x17e,%eax : typentry->cmp_proc == InvalidOid) : { : Oid cmp_proc = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : cmp_proc = get_opfamily_proc(typentry->btree_opf, 0.00 : 775a76: 89 c3 mov %eax,%ebx : typentry->btree_opintype, : typentry->btree_opintype, : BTORDER_PROC); : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (cmp_proc == F_BTARRAYCMP && 0.00 : 775a78: 0f 85 8a 03 00 00 jne 775e08 0.00 : 775a7e: 4c 89 e7 mov %r12,%rdi 0.00 : 775a81: e8 9a 08 00 00 callq 776320 0.00 : 775a86: 84 c0 test %al,%al 0.00 : 775a88: 0f 85 2f fd ff ff jne 7757bd : !array_element_has_compare(typentry)) : cmp_proc = InvalidOid; : else if (cmp_proc == F_BTRECORDCMP && 0.00 : 775a8e: 31 db xor %ebx,%ebx 0.00 : 775a90: e9 28 fd ff ff jmpq 7757bd 0.00 : 775a95: 0f 1f 00 nopl (%rax) : typentry->eq_opr_finfo.fn_oid == InvalidOid && : typentry->eq_opr != InvalidOid) : { : Oid eq_opr_func; : : eq_opr_func = get_opcode(typentry->eq_opr); 0.00 : 775a98: e8 23 cd ff ff callq 7727c0 : if (eq_opr_func != InvalidOid) 0.00 : 775a9d: 85 c0 test %eax,%eax 0.00 : 775a9f: 90 nop 0.00 : 775aa0: 0f 84 82 fd ff ff je 775828 : fmgr_info_cxt(eq_opr_func, &typentry->eq_opr_finfo, 0.00 : 775aa6: 48 8b 15 d3 4d 44 00 mov 0x444dd3(%rip),%rdx # bba880 0.00 : 775aad: 49 8d 74 24 38 lea 0x38(%r12),%rsi 0.00 : 775ab2: 89 c7 mov %eax,%edi 0.00 : 775ab4: e8 97 a5 00 00 callq 780050 0.00 : 775ab9: e9 6a fd ff ff jmpq 775828 0.00 : 775abe: 66 90 xchg %ax,%ax : typentry->eq_opr == InvalidOid) : { : Oid eq_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : eq_opr = get_opfamily_member(typentry->btree_opf, 0.00 : 775ac0: 41 8b 74 24 14 mov 0x14(%r12),%esi 0.00 : 775ac5: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 775aca: 89 f2 mov %esi,%edx 0.00 : 775acc: e8 2f ce ff ff callq 772900 : typentry->btree_opintype, : typentry->btree_opintype, : BTEqualStrategyNumber); : if (eq_opr == InvalidOid && 0.00 : 775ad1: 85 c0 test %eax,%eax : typentry->eq_opr == InvalidOid) : { : Oid eq_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : eq_opr = get_opfamily_member(typentry->btree_opf, 0.00 : 775ad3: 89 c3 mov %eax,%ebx : typentry->btree_opintype, : typentry->btree_opintype, : BTEqualStrategyNumber); : if (eq_opr == InvalidOid && 0.00 : 775ad5: 0f 84 52 fc ff ff je 77572d : * If the proposed equality operator is array_eq or record_eq, check : * to see if the element type or column types support equality. If : * not, array_eq or record_eq would fail at runtime, so we don't want : * to report that the type has equality. : */ : if (eq_opr == ARRAY_EQ_OP && 0.00 : 775adb: 81 fb 2e 04 00 00 cmp $0x42e,%ebx 0.00 : 775ae1: 0f 84 a1 03 00 00 je 775e88 : !array_element_has_equality(typentry)) : eq_opr = InvalidOid; : else if (eq_opr == RECORD_EQ_OP && 0.00 : 775ae7: 81 fb ac 0b 00 00 cmp $0xbac,%ebx 0.00 : 775aed: 0f 1f 00 nopl (%rax) 0.00 : 775af0: 0f 85 46 fc ff ff jne 77573c : } : : static bool : record_fields_have_equality(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_FIELD_PROPERTIES)) 0.00 : 775af6: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775afd: 00 0.00 : 775afe: a8 10 test $0x10,%al 0.00 : 775b00: 0f 84 4a 03 00 00 je 775e50 : * to report that the type has equality. : */ : if (eq_opr == ARRAY_EQ_OP && : !array_element_has_equality(typentry)) : eq_opr = InvalidOid; : else if (eq_opr == RECORD_EQ_OP && 0.00 : 775b06: a8 20 test $0x20,%al 0.00 : 775b08: 0f 85 2e fc ff ff jne 77573c 0.00 : 775b0e: 31 db xor %ebx,%ebx 0.00 : 775b10: e9 27 fc ff ff jmpq 77573c 0.00 : 775b15: 0f 1f 00 nopl (%rax) : if ((flags & TYPECACHE_GT_OPR) && typentry->gt_opr == InvalidOid) : { : Oid gt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : gt_opr = get_opfamily_member(typentry->btree_opf, 0.00 : 775b18: 41 8b 74 24 14 mov 0x14(%r12),%esi 0.00 : 775b1d: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 775b22: 89 f2 mov %esi,%edx 0.00 : 775b24: e8 d7 cd ff ff callq 772900 : typentry->btree_opintype, : typentry->btree_opintype, : BTGreaterStrategyNumber); : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (gt_opr == ARRAY_GT_OP && 0.00 : 775b29: 3d 31 04 00 00 cmp $0x431,%eax : if ((flags & TYPECACHE_GT_OPR) && typentry->gt_opr == InvalidOid) : { : Oid gt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : gt_opr = get_opfamily_member(typentry->btree_opf, 0.00 : 775b2e: 89 c3 mov %eax,%ebx : typentry->btree_opintype, : typentry->btree_opintype, : BTGreaterStrategyNumber); : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (gt_opr == ARRAY_GT_OP && 0.00 : 775b30: 0f 85 a2 02 00 00 jne 775dd8 0.00 : 775b36: 4c 89 e7 mov %r12,%rdi 0.00 : 775b39: e8 e2 07 00 00 callq 776320 0.00 : 775b3e: 84 c0 test %al,%al 0.00 : 775b40: 0f 85 53 fc ff ff jne 775799 : !array_element_has_compare(typentry)) : gt_opr = InvalidOid; : else if (gt_opr == RECORD_GT_OP && 0.00 : 775b46: 31 db xor %ebx,%ebx 0.00 : 775b48: e9 4c fc ff ff jmpq 775799 0.00 : 775b4d: 0f 1f 00 nopl (%rax) : } : if ((flags & TYPECACHE_CMP_PROC_FINFO) && : typentry->cmp_proc_finfo.fn_oid == InvalidOid && : typentry->cmp_proc != InvalidOid) : { : fmgr_info_cxt(typentry->cmp_proc, &typentry->cmp_proc_finfo, 0.00 : 775b50: 48 8b 15 29 4d 44 00 mov 0x444d29(%rip),%rdx # bba880 0.00 : 775b57: 49 8d 74 24 68 lea 0x68(%r12),%rsi 0.00 : 775b5c: e8 ef a4 00 00 callq 780050 0.00 : 775b61: e9 e2 fc ff ff jmpq 775848 0.00 : 775b66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 775b6d: 00 00 00 : } : if ((flags & TYPECACHE_HASH_PROC_FINFO) && : typentry->hash_proc_finfo.fn_oid == InvalidOid && : typentry->hash_proc != InvalidOid) : { : fmgr_info_cxt(typentry->hash_proc, &typentry->hash_proc_finfo, 0.00 : 775b70: 48 8b 15 09 4d 44 00 mov 0x444d09(%rip),%rdx # bba880 0.00 : 775b77: 49 8d b4 24 98 00 00 lea 0x98(%r12),%rsi 0.00 : 775b7e: 00 0.00 : 775b7f: e8 cc a4 00 00 callq 780050 0.00 : 775b84: e9 e7 fc ff ff jmpq 775870 0.00 : 775b89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if ((flags & TYPECACHE_LT_OPR) && typentry->lt_opr == InvalidOid) : { : Oid lt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : lt_opr = get_opfamily_member(typentry->btree_opf, 0.00 : 775b90: 41 8b 74 24 14 mov 0x14(%r12),%esi 0.00 : 775b95: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 775b9a: 89 f2 mov %esi,%edx 0.00 : 775b9c: e8 5f cd ff ff callq 772900 : typentry->btree_opintype, : typentry->btree_opintype, : BTLessStrategyNumber); : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (lt_opr == ARRAY_LT_OP && 0.00 : 775ba1: 3d 30 04 00 00 cmp $0x430,%eax : if ((flags & TYPECACHE_LT_OPR) && typentry->lt_opr == InvalidOid) : { : Oid lt_opr = InvalidOid; : : if (typentry->btree_opf != InvalidOid) : lt_opr = get_opfamily_member(typentry->btree_opf, 0.00 : 775ba6: 89 c3 mov %eax,%ebx : typentry->btree_opintype, : typentry->btree_opintype, : BTLessStrategyNumber); : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (lt_opr == ARRAY_LT_OP && 0.00 : 775ba8: 0f 85 fa 01 00 00 jne 775da8 0.00 : 775bae: 4c 89 e7 mov %r12,%rdi 0.00 : 775bb1: e8 6a 07 00 00 callq 776320 0.00 : 775bb6: 84 c0 test %al,%al 0.00 : 775bb8: 0f 85 b7 fb ff ff jne 775775 : !array_element_has_compare(typentry)) : lt_opr = InvalidOid; : else if (lt_opr == RECORD_LT_OP && 0.00 : 775bbe: 31 db xor %ebx,%ebx 0.00 : 775bc0: e9 b0 fb ff ff jmpq 775775 0.00 : 775bc5: 0f 1f 00 nopl (%rax) : if (TypeCacheHash == NULL) : { : /* First time through: initialize the hash table */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 775bc8: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 775bcf: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 775bd3: 48 39 d1 cmp %rdx,%rcx 0.00 : 775bd6: 76 18 jbe 775bf0 0.00 : 775bd8: 48 89 d0 mov %rdx,%rax 0.00 : 775bdb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 775be0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 775be7: 48 83 c0 08 add $0x8,%rax 0.00 : 775beb: 48 39 c1 cmp %rax,%rcx 0.00 : 775bee: 75 f0 jne 775be0 : ctl.keysize = sizeof(Oid); : ctl.entrysize = sizeof(TypeCacheEntry); : ctl.hash = oid_hash; : TypeCacheHash = hash_create("Type information cache", 64, 0.00 : 775bf0: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 775bf5: be 40 00 00 00 mov $0x40,%esi 0.00 : 775bfa: bf 4f 35 8d 00 mov $0x8d354f,%edi : { : /* First time through: initialize the hash table */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(Oid); 0.00 : 775bff: 48 c7 45 88 04 00 00 movq $0x4,-0x78(%rbp) 0.00 : 775c06: 00 : ctl.entrysize = sizeof(TypeCacheEntry); 0.00 : 775c07: 48 c7 45 90 80 01 00 movq $0x180,-0x70(%rbp) 0.00 : 775c0e: 00 : ctl.hash = oid_hash; 0.00 : 775c0f: 48 c7 45 98 50 4f 78 movq $0x784f50,-0x68(%rbp) 0.00 : 775c16: 00 : TypeCacheHash = hash_create("Type information cache", 64, 0.00 : 775c17: e8 94 ec 00 00 callq 7848b0 : &ctl, HASH_ELEM | HASH_FUNCTION); : : /* Also set up a callback for relcache SI invalidations */ : CacheRegisterRelcacheCallback(TypeCacheRelCallback, (Datum) 0); 0.00 : 775c1c: 31 f6 xor %esi,%esi 0.00 : 775c1e: bf 50 63 77 00 mov $0x776350,%edi : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(Oid); : ctl.entrysize = sizeof(TypeCacheEntry); : ctl.hash = oid_hash; : TypeCacheHash = hash_create("Type information cache", 64, 0.00 : 775c23: 48 89 05 b6 39 44 00 mov %rax,0x4439b6(%rip) # bb95e0 : &ctl, HASH_ELEM | HASH_FUNCTION); : : /* Also set up a callback for relcache SI invalidations */ : CacheRegisterRelcacheCallback(TypeCacheRelCallback, (Datum) 0); 0.00 : 775c2a: e8 d1 14 ff ff callq 767100 : : /* Also make sure CacheMemoryContext exists */ : if (!CacheMemoryContext) 0.00 : 775c2f: 48 83 3d 49 4c 44 00 cmpq $0x0,0x444c49(%rip) # bba880 0.00 : 775c36: 00 0.00 : 775c37: 0f 85 7e fa ff ff jne 7756bb : CreateCacheMemoryContext(); 0.00 : 775c3d: e8 7e 0b ff ff callq 7667c0 0.00 : 775c42: e9 74 fa ff ff jmpq 7756bb 0.00 : 775c47: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 775c4e: 00 00 : : /* : * We insist that the eq_opr, if one has been determined, match the : * hash opclass; else report there is no hash function. : */ : if (typentry->hash_opf != InvalidOid && 0.00 : 775c50: 41 8b 7c 24 18 mov 0x18(%r12),%edi : (!OidIsValid(typentry->eq_opr) || : typentry->eq_opr == get_opfamily_member(typentry->hash_opf, : typentry->hash_opintype, : typentry->hash_opintype, : HTEqualStrategyNumber))) : hash_proc = get_opfamily_proc(typentry->hash_opf, 0.00 : 775c55: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 775c5a: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 775c5f: 89 f2 mov %esi,%edx 0.00 : 775c61: e8 4a cc ff ff callq 7728b0 : /* : * As above, make sure hash_array will succeed. We don't currently : * support hashing for composite types, but when we do, we'll need : * more logic here to check that case too. : */ : if (hash_proc == F_HASH_ARRAY && 0.00 : 775c66: 3d 72 02 00 00 cmp $0x272,%eax : (!OidIsValid(typentry->eq_opr) || : typentry->eq_opr == get_opfamily_member(typentry->hash_opf, : typentry->hash_opintype, : typentry->hash_opintype, : HTEqualStrategyNumber))) : hash_proc = get_opfamily_proc(typentry->hash_opf, 0.00 : 775c6b: 89 c3 mov %eax,%ebx : /* : * As above, make sure hash_array will succeed. We don't currently : * support hashing for composite types, but when we do, we'll need : * more logic here to check that case too. : */ : if (hash_proc == F_HASH_ARRAY && 0.00 : 775c6d: 0f 85 8f fb ff ff jne 775802 : } : : static bool : array_element_has_hashing(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_ELEM_PROPERTIES)) 0.00 : 775c73: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775c7a: 00 0.00 : 775c7b: a8 01 test $0x1,%al 0.00 : 775c7d: 75 10 jne 775c8f : cache_array_element_properties(typentry); 0.00 : 775c7f: 4c 89 e7 mov %r12,%rdi 0.00 : 775c82: e8 29 06 00 00 callq 7762b0 0.00 : 775c87: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775c8e: 00 : /* : * As above, make sure hash_array will succeed. We don't currently : * support hashing for composite types, but when we do, we'll need : * more logic here to check that case too. : */ : if (hash_proc == F_HASH_ARRAY && 0.00 : 775c8f: a8 08 test $0x8,%al 0.00 : 775c91: 0f 85 6b fb ff ff jne 775802 0.00 : 775c97: e9 64 fb ff ff jmpq 775800 0.00 : 775c9c: 0f 1f 40 00 nopl 0x0(%rax) : * a hash opclass, reset eq_opr and derived information so that we : * can fetch the btree equality operator instead of the hash : * equality operator. (They're probably the same operator, but we : * don't assume that here.) : */ : typentry->eq_opr = InvalidOid; 0.00 : 775ca0: 41 c7 44 24 20 00 00 movl $0x0,0x20(%r12) 0.00 : 775ca7: 00 00 : typentry->eq_opr_finfo.fn_oid = InvalidOid; 0.00 : 775ca9: 41 c7 44 24 40 00 00 movl $0x0,0x40(%r12) 0.00 : 775cb0: 00 00 : typentry->hash_proc = InvalidOid; 0.00 : 775cb2: 41 c7 44 24 30 00 00 movl $0x0,0x30(%r12) 0.00 : 775cb9: 00 00 : typentry->hash_proc_finfo.fn_oid = InvalidOid; 0.00 : 775cbb: 41 c7 84 24 a0 00 00 movl $0x0,0xa0(%r12) 0.00 : 775cc2: 00 00 00 00 00 0.00 : 775cc7: e9 2e fa ff ff jmpq 7756fa 0.00 : 775ccc: 0f 1f 40 00 nopl 0x0(%rax) : * invalid type OID. : */ : HeapTuple tp; : Form_pg_type typtup; : : tp = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); 0.00 : 775cd0: 8b b5 5c ff ff ff mov -0xa4(%rbp),%esi 0.00 : 775cd6: 45 31 c0 xor %r8d,%r8d 0.00 : 775cd9: 31 c9 xor %ecx,%ecx 0.00 : 775cdb: 31 d2 xor %edx,%edx 0.00 : 775cdd: bf 3b 00 00 00 mov $0x3b,%edi 0.00 : 775ce2: e8 d9 bf ff ff callq 771cc0 : if (!HeapTupleIsValid(tp)) 0.00 : 775ce7: 48 85 c0 test %rax,%rax : * invalid type OID. : */ : HeapTuple tp; : Form_pg_type typtup; : : tp = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); 0.00 : 775cea: 49 89 c0 mov %rax,%r8 : if (!HeapTupleIsValid(tp)) 0.00 : 775ced: 0f 84 89 02 00 00 je 775f7c : elog(ERROR, "cache lookup failed for type %u", type_id); : typtup = (Form_pg_type) GETSTRUCT(tp); 0.00 : 775cf3: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 775cf7: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 775cfb: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : if (!typtup->typisdefined) 0.00 : 775cff: 80 7b 4e 00 cmpb $0x0,0x4e(%rbx) 0.00 : 775d03: 0f 84 28 02 00 00 je 775f31 : (errcode(ERRCODE_UNDEFINED_OBJECT), : errmsg("type \"%s\" is only a shell", : NameStr(typtup->typname)))); : : /* Now make the typcache entry */ : typentry = (TypeCacheEntry *) hash_search(TypeCacheHash, 0.00 : 775d09: 48 8b 3d d0 38 44 00 mov 0x4438d0(%rip),%rdi # bb95e0 0.00 : 775d10: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 775d14: ba 01 00 00 00 mov $0x1,%edx 0.00 : 775d19: 4c 89 fe mov %r15,%rsi 0.00 : 775d1c: 4c 89 85 50 ff ff ff mov %r8,-0xb0(%rbp) 0.00 : 775d23: e8 78 e9 00 00 callq 7846a0 : (void *) &type_id, : HASH_ENTER, &found); : Assert(!found); /* it wasn't there a moment ago */ : : MemSet(typentry, 0, sizeof(TypeCacheEntry)); 0.00 : 775d28: a8 07 test $0x7,%al : (errcode(ERRCODE_UNDEFINED_OBJECT), : errmsg("type \"%s\" is only a shell", : NameStr(typtup->typname)))); : : /* Now make the typcache entry */ : typentry = (TypeCacheEntry *) hash_search(TypeCacheHash, 0.00 : 775d2a: 49 89 c4 mov %rax,%r12 : (void *) &type_id, : HASH_ENTER, &found); : Assert(!found); /* it wasn't there a moment ago */ : : MemSet(typentry, 0, sizeof(TypeCacheEntry)); 0.00 : 775d2d: 4c 8b 85 50 ff ff ff mov -0xb0(%rbp),%r8 0.00 : 775d34: 0f 85 fe 00 00 00 jne 775e38 0.00 : 775d3a: 49 8d 94 24 80 01 00 lea 0x180(%r12),%rdx 0.00 : 775d41: 00 0.00 : 775d42: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 775d48: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 775d4f: 48 83 c0 08 add $0x8,%rax 0.00 : 775d53: 48 39 d0 cmp %rdx,%rax 0.00 : 775d56: 75 f0 jne 775d48 : typentry->type_id = type_id; 0.00 : 775d58: 8b 85 5c ff ff ff mov -0xa4(%rbp),%eax : typentry->typalign = typtup->typalign; : typentry->typstorage = typtup->typstorage; : typentry->typtype = typtup->typtype; : typentry->typrelid = typtup->typrelid; : : ReleaseSysCache(tp); 0.00 : 775d5e: 4c 89 c7 mov %r8,%rdi : (void *) &type_id, : HASH_ENTER, &found); : Assert(!found); /* it wasn't there a moment ago */ : : MemSet(typentry, 0, sizeof(TypeCacheEntry)); : typentry->type_id = type_id; 0.00 : 775d61: 41 89 04 24 mov %eax,(%r12) : typentry->typlen = typtup->typlen; 0.00 : 775d65: 0f b7 43 48 movzwl 0x48(%rbx),%eax 0.00 : 775d69: 66 41 89 44 24 04 mov %ax,0x4(%r12) : typentry->typbyval = typtup->typbyval; 0.00 : 775d6f: 0f b6 43 4a movzbl 0x4a(%rbx),%eax 0.00 : 775d73: 41 88 44 24 06 mov %al,0x6(%r12) : typentry->typalign = typtup->typalign; 0.00 : 775d78: 0f b6 43 78 movzbl 0x78(%rbx),%eax 0.00 : 775d7c: 41 88 44 24 07 mov %al,0x7(%r12) : typentry->typstorage = typtup->typstorage; 0.00 : 775d81: 0f b6 43 79 movzbl 0x79(%rbx),%eax 0.00 : 775d85: 41 88 44 24 08 mov %al,0x8(%r12) : typentry->typtype = typtup->typtype; 0.00 : 775d8a: 0f b6 43 4b movzbl 0x4b(%rbx),%eax 0.00 : 775d8e: 41 88 44 24 09 mov %al,0x9(%r12) : typentry->typrelid = typtup->typrelid; 0.00 : 775d93: 8b 43 50 mov 0x50(%rbx),%eax 0.00 : 775d96: 41 89 44 24 0c mov %eax,0xc(%r12) : : ReleaseSysCache(tp); 0.00 : 775d9b: e8 10 bf ff ff callq 771cb0 0.00 : 775da0: e9 3f f9 ff ff jmpq 7756e4 0.00 : 775da5: 0f 1f 00 nopl (%rax) : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (lt_opr == ARRAY_LT_OP && : !array_element_has_compare(typentry)) : lt_opr = InvalidOid; : else if (lt_opr == RECORD_LT_OP && 0.00 : 775da8: 3d ae 0b 00 00 cmp $0xbae,%eax 0.00 : 775dad: 0f 85 c2 f9 ff ff jne 775775 : } : : static bool : record_fields_have_compare(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_FIELD_PROPERTIES)) 0.00 : 775db3: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775dba: 00 0.00 : 775dbb: a8 10 test $0x10,%al 0.00 : 775dbd: 0f 84 25 01 00 00 je 775ee8 : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (lt_opr == ARRAY_LT_OP && : !array_element_has_compare(typentry)) : lt_opr = InvalidOid; : else if (lt_opr == RECORD_LT_OP && 0.00 : 775dc3: a8 40 test $0x40,%al 0.00 : 775dc5: 0f 85 aa f9 ff ff jne 775775 0.00 : 775dcb: 31 db xor %ebx,%ebx 0.00 : 775dcd: e9 a3 f9 ff ff jmpq 775775 0.00 : 775dd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (gt_opr == ARRAY_GT_OP && : !array_element_has_compare(typentry)) : gt_opr = InvalidOid; : else if (gt_opr == RECORD_GT_OP && 0.00 : 775dd8: 3d af 0b 00 00 cmp $0xbaf,%eax 0.00 : 775ddd: 0f 1f 00 nopl (%rax) 0.00 : 775de0: 0f 85 b3 f9 ff ff jne 775799 : } : : static bool : record_fields_have_compare(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_FIELD_PROPERTIES)) 0.00 : 775de6: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775ded: 00 0.00 : 775dee: a8 10 test $0x10,%al 0.00 : 775df0: 0f 84 da 00 00 00 je 775ed0 : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (gt_opr == ARRAY_GT_OP && : !array_element_has_compare(typentry)) : gt_opr = InvalidOid; : else if (gt_opr == RECORD_GT_OP && 0.00 : 775df6: a8 40 test $0x40,%al 0.00 : 775df8: 0f 85 9b f9 ff ff jne 775799 0.00 : 775dfe: 31 db xor %ebx,%ebx 0.00 : 775e00: e9 94 f9 ff ff jmpq 775799 0.00 : 775e05: 0f 1f 00 nopl (%rax) : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (cmp_proc == F_BTARRAYCMP && : !array_element_has_compare(typentry)) : cmp_proc = InvalidOid; : else if (cmp_proc == F_BTRECORDCMP && 0.00 : 775e08: 3d ab 0b 00 00 cmp $0xbab,%eax 0.00 : 775e0d: 0f 1f 00 nopl (%rax) 0.00 : 775e10: 0f 85 a7 f9 ff ff jne 7757bd : } : : static bool : record_fields_have_compare(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_FIELD_PROPERTIES)) 0.00 : 775e16: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775e1d: 00 0.00 : 775e1e: a8 10 test $0x10,%al 0.00 : 775e20: 0f 84 da 00 00 00 je 775f00 : : /* As above, make sure array_cmp or record_cmp will succeed */ : if (cmp_proc == F_BTARRAYCMP && : !array_element_has_compare(typentry)) : cmp_proc = InvalidOid; : else if (cmp_proc == F_BTRECORDCMP && 0.00 : 775e26: a8 40 test $0x40,%al 0.00 : 775e28: 0f 85 8f f9 ff ff jne 7757bd 0.00 : 775e2e: 31 db xor %ebx,%ebx 0.00 : 775e30: e9 88 f9 ff ff jmpq 7757bd 0.00 : 775e35: 0f 1f 00 nopl (%rax) : typentry = (TypeCacheEntry *) hash_search(TypeCacheHash, : (void *) &type_id, : HASH_ENTER, &found); : Assert(!found); /* it wasn't there a moment ago */ : : MemSet(typentry, 0, sizeof(TypeCacheEntry)); 0.00 : 775e38: 48 89 c7 mov %rax,%rdi 0.00 : 775e3b: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 775e40: 4c 89 f0 mov %r14,%rax 0.00 : 775e43: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 775e46: e9 0d ff ff ff jmpq 775d58 0.00 : 775e4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : static bool : record_fields_have_equality(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_FIELD_PROPERTIES)) : cache_record_field_properties(typentry); 0.00 : 775e50: 4c 89 e7 mov %r12,%rdi 0.00 : 775e53: e8 c8 01 00 00 callq 776020 0.00 : 775e58: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775e5f: 00 0.00 : 775e60: e9 a1 fc ff ff jmpq 775b06 0.00 : 775e65: 0f 1f 00 nopl (%rax) : Oid opclass; : : opclass = GetDefaultOpClass(type_id, BTREE_AM_OID); : if (OidIsValid(opclass)) : { : typentry->btree_opf = get_opclass_family(opclass); 0.00 : 775e68: 89 c7 mov %eax,%edi 0.00 : 775e6a: e8 11 d7 ff ff callq 773580 : typentry->btree_opintype = get_opclass_input_type(opclass); 0.00 : 775e6f: 89 df mov %ebx,%edi : Oid opclass; : : opclass = GetDefaultOpClass(type_id, BTREE_AM_OID); : if (OidIsValid(opclass)) : { : typentry->btree_opf = get_opclass_family(opclass); 0.00 : 775e71: 41 89 44 24 10 mov %eax,0x10(%r12) : typentry->btree_opintype = get_opclass_input_type(opclass); 0.00 : 775e76: e8 95 d6 ff ff callq 773510 0.00 : 775e7b: 41 89 44 24 14 mov %eax,0x14(%r12) 0.00 : 775e80: e9 65 fa ff ff jmpq 7758ea 0.00 : 775e85: 0f 1f 00 nopl (%rax) : */ : : static bool : array_element_has_equality(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_ELEM_PROPERTIES)) 0.00 : 775e88: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775e8f: 00 0.00 : 775e90: a8 01 test $0x1,%al 0.00 : 775e92: 75 10 jne 775ea4 : cache_array_element_properties(typentry); 0.00 : 775e94: 4c 89 e7 mov %r12,%rdi 0.00 : 775e97: e8 14 04 00 00 callq 7762b0 0.00 : 775e9c: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775ea3: 00 : * If the proposed equality operator is array_eq or record_eq, check : * to see if the element type or column types support equality. If : * not, array_eq or record_eq would fail at runtime, so we don't want : * to report that the type has equality. : */ : if (eq_opr == ARRAY_EQ_OP && 0.00 : 775ea4: a8 02 test $0x2,%al 0.00 : 775ea6: 0f 85 90 f8 ff ff jne 77573c : !array_element_has_equality(typentry)) : eq_opr = InvalidOid; : else if (eq_opr == RECORD_EQ_OP && 0.00 : 775eac: 31 db xor %ebx,%ebx 0.00 : 775eae: e9 89 f8 ff ff jmpq 77573c 0.00 : 775eb3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : typentry->btree_opintype, : typentry->btree_opintype, : BTEqualStrategyNumber); : if (eq_opr == InvalidOid && : typentry->hash_opf != InvalidOid) : eq_opr = get_opfamily_member(typentry->hash_opf, 0.00 : 775eb8: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 775ebd: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 775ec2: 89 f2 mov %esi,%edx 0.00 : 775ec4: e8 37 ca ff ff callq 772900 0.00 : 775ec9: 89 c3 mov %eax,%ebx 0.00 : 775ecb: e9 0b fc ff ff jmpq 775adb : : static bool : record_fields_have_compare(TypeCacheEntry *typentry) : { : if (!(typentry->flags & TCFLAGS_CHECKED_FIELD_PROPERTIES)) : cache_record_field_properties(typentry); 0.00 : 775ed0: 4c 89 e7 mov %r12,%rdi 0.00 : 775ed3: e8 48 01 00 00 callq 776020 0.00 : 775ed8: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775edf: 00 0.00 : 775ee0: e9 11 ff ff ff jmpq 775df6 0.00 : 775ee5: 0f 1f 00 nopl (%rax) 0.00 : 775ee8: 4c 89 e7 mov %r12,%rdi 0.00 : 775eeb: e8 30 01 00 00 callq 776020 0.00 : 775ef0: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775ef7: 00 0.00 : 775ef8: e9 c6 fe ff ff jmpq 775dc3 0.00 : 775efd: 0f 1f 00 nopl (%rax) 0.00 : 775f00: 4c 89 e7 mov %r12,%rdi 0.00 : 775f03: e8 18 01 00 00 callq 776020 0.00 : 775f08: 41 8b 84 24 70 01 00 mov 0x170(%r12),%eax 0.00 : 775f0f: 00 0.00 : 775f10: e9 11 ff ff ff jmpq 775e26 : : /* set up cached fmgrinfo structs */ : fmgr_info_cxt(cmpFnOid, &typentry->rng_cmp_proc_finfo, : CacheMemoryContext); : if (OidIsValid(canonicalOid)) : fmgr_info_cxt(canonicalOid, &typentry->rng_canonical_finfo, 0.00 : 775f15: 48 8b 15 64 49 44 00 mov 0x444964(%rip),%rdx # bba880 0.00 : 775f1c: 49 8d b4 24 10 01 00 lea 0x110(%r12),%rsi 0.00 : 775f23: 00 0.00 : 775f24: 44 89 f7 mov %r14d,%edi 0.00 : 775f27: e8 24 a1 00 00 callq 780050 0.00 : 775f2c: e9 f6 fa ff ff jmpq 775a27 : tp = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); : if (!HeapTupleIsValid(tp)) : elog(ERROR, "cache lookup failed for type %u", type_id); : typtup = (Form_pg_type) GETSTRUCT(tp); : if (!typtup->typisdefined) : ereport(ERROR, 0.00 : 775f31: 45 31 c0 xor %r8d,%r8d 0.00 : 775f34: b9 a0 36 8d 00 mov $0x8d36a0,%ecx 0.00 : 775f39: ba c7 00 00 00 mov $0xc7,%edx 0.00 : 775f3e: be 2b 35 8d 00 mov $0x8d352b,%esi 0.00 : 775f43: bf 14 00 00 00 mov $0x14,%edi 0.00 : 775f48: e8 73 4b 00 00 callq 77aac0 0.00 : 775f4d: 84 c0 test %al,%al 0.00 : 775f4f: 74 26 je 775f77 0.00 : 775f51: 48 89 de mov %rbx,%rsi 0.00 : 775f54: bf 97 59 87 00 mov $0x875997,%edi 0.00 : 775f59: 31 c0 xor %eax,%eax 0.00 : 775f5b: e8 40 69 00 00 callq 77c8a0 0.00 : 775f60: bf 84 70 00 04 mov $0x4007084,%edi 0.00 : 775f65: 89 c3 mov %eax,%ebx 0.00 : 775f67: e8 e4 6d 00 00 callq 77cd50 0.00 : 775f6c: 89 de mov %ebx,%esi 0.00 : 775f6e: 89 c7 mov %eax,%edi 0.00 : 775f70: 31 c0 xor %eax,%eax 0.00 : 775f72: e8 69 46 00 00 callq 77a5e0 : : /* get information from pg_range */ : tup = SearchSysCache1(RANGETYPE, ObjectIdGetDatum(typentry->type_id)); : /* should not fail, since we already checked typtype ... */ : if (!HeapTupleIsValid(tup)) : elog(ERROR, "cache lookup failed for range type %u", 0.00 : 775f77: e8 54 35 cf ff callq 4694d0 : HeapTuple tp; : Form_pg_type typtup; : : tp = SearchSysCache1(TYPEOID, ObjectIdGetDatum(type_id)); : if (!HeapTupleIsValid(tp)) : elog(ERROR, "cache lookup failed for type %u", type_id); 0.00 : 775f7c: ba a0 36 8d 00 mov $0x8d36a0,%edx 0.00 : 775f81: be c1 00 00 00 mov $0xc1,%esi 0.00 : 775f86: bf 2b 35 8d 00 mov $0x8d352b,%edi 0.00 : 775f8b: e8 90 54 00 00 callq 77b420 0.00 : 775f90: 8b 95 5c ff ff ff mov -0xa4(%rbp),%edx 0.00 : 775f96: be 58 09 7b 00 mov $0x7b0958,%esi 0.00 : 775f9b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 775fa0: 31 c0 xor %eax,%eax 0.00 : 775fa2: e8 89 52 00 00 callq 77b230 0.00 : 775fa7: e8 24 35 cf ff callq 4694d0 : opcintype = get_opclass_input_type(opclassOid); : : cmpFnOid = get_opfamily_proc(opfamilyOid, opcintype, opcintype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmpFnOid)) : elog(ERROR, "missing support function %d(%u,%u) in opfamily %u", 0.00 : 775fac: ba e0 36 8d 00 mov $0x8d36e0,%edx 0.00 : 775fb1: be 19 02 00 00 mov $0x219,%esi 0.00 : 775fb6: bf 2b 35 8d 00 mov $0x8d352b,%edi 0.00 : 775fbb: e8 60 54 00 00 callq 77b420 0.00 : 775fc0: 45 89 e9 mov %r13d,%r9d 0.00 : 775fc3: 41 89 d8 mov %ebx,%r8d 0.00 : 775fc6: 89 d9 mov %ebx,%ecx 0.00 : 775fc8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 775fcd: be 38 4a 7b 00 mov $0x7b4a38,%esi 0.00 : 775fd2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 775fd7: 31 c0 xor %eax,%eax 0.00 : 775fd9: e8 52 52 00 00 callq 77b230 0.00 : 775fde: e8 ed 34 cf ff callq 4694d0 : : /* get information from pg_range */ : tup = SearchSysCache1(RANGETYPE, ObjectIdGetDatum(typentry->type_id)); : /* should not fail, since we already checked typtype ... */ : if (!HeapTupleIsValid(tup)) : elog(ERROR, "cache lookup failed for range type %u", 0.00 : 775fe3: ba e0 36 8d 00 mov $0x8d36e0,%edx 0.00 : 775fe8: be 06 02 00 00 mov $0x206,%esi 0.00 : 775fed: bf 2b 35 8d 00 mov $0x8d352b,%edi 0.00 : 775ff2: e8 29 54 00 00 callq 77b420 0.00 : 775ff7: 41 8b 14 24 mov (%r12),%edx 0.00 : 775ffb: be d8 35 8d 00 mov $0x8d35d8,%esi 0.00 : 776000: bf 14 00 00 00 mov $0x14,%edi 0.00 : 776005: 31 c0 xor %eax,%eax 0.00 : 776007: e8 24 52 00 00 callq 77b230 0.00 : 77600c: e9 66 ff ff ff jmpq 775f77 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1440 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1440 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077dd10 : : : Datum : FunctionCall6Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, : Datum arg3, Datum arg4, Datum arg5, : Datum arg6) : { 0.00 : 77dd10: 55 push %rbp 0.00 : 77dd11: 49 89 fa mov %rdi,%r10 0.00 : 77dd14: 48 89 e5 mov %rsp,%rbp 0.00 : 77dd17: 48 81 ec b0 03 00 00 sub $0x3b0,%rsp : : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.arg[2] = arg3; : fcinfo.arg[3] = arg4; : fcinfo.arg[4] = arg5; 0.00 : 77dd1e: 48 8b 45 10 mov 0x10(%rbp),%rax : Datum arg6) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 6, collation, NULL, NULL); 0.00 : 77dd22: 48 89 bd 50 fc ff ff mov %rdi,-0x3b0(%rbp) : fcinfo.argnull[2] = false; : fcinfo.argnull[3] = false; : fcinfo.argnull[4] = false; : fcinfo.argnull[5] = false; : : result = FunctionCallInvoke(&fcinfo); 0.00 : 77dd29: 48 8d bd 50 fc ff ff lea -0x3b0(%rbp),%rdi : Datum arg6) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 6, collation, NULL, NULL); 0.00 : 77dd30: 48 c7 85 58 fc ff ff movq $0x0,-0x3a8(%rbp) 0.00 : 77dd37: 00 00 00 00 0.00 : 77dd3b: 48 c7 85 60 fc ff ff movq $0x0,-0x3a0(%rbp) 0.00 : 77dd42: 00 00 00 00 0.00 : 77dd46: 89 b5 68 fc ff ff mov %esi,-0x398(%rbp) 0.00 : 77dd4c: c6 85 6c fc ff ff 00 movb $0x0,-0x394(%rbp) : : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.arg[2] = arg3; : fcinfo.arg[3] = arg4; : fcinfo.arg[4] = arg5; 0.00 : 77dd53: 48 89 85 90 fc ff ff mov %rax,-0x370(%rbp) : fcinfo.arg[5] = arg6; 0.00 : 77dd5a: 48 8b 45 18 mov 0x18(%rbp),%rax : Datum arg6) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 6, collation, NULL, NULL); 0.00 : 77dd5e: 66 c7 85 6e fc ff ff movw $0x6,-0x392(%rbp) 0.00 : 77dd65: 06 00 : : fcinfo.arg[0] = arg1; 0.00 : 77dd67: 48 89 95 70 fc ff ff mov %rdx,-0x390(%rbp) : fcinfo.arg[1] = arg2; 0.00 : 77dd6e: 48 89 8d 78 fc ff ff mov %rcx,-0x388(%rbp) : fcinfo.arg[2] = arg3; 0.00 : 77dd75: 4c 89 85 80 fc ff ff mov %r8,-0x380(%rbp) : fcinfo.arg[3] = arg4; 0.00 : 77dd7c: 4c 89 8d 88 fc ff ff mov %r9,-0x378(%rbp) : fcinfo.arg[4] = arg5; : fcinfo.arg[5] = arg6; 0.00 : 77dd83: 48 89 85 98 fc ff ff mov %rax,-0x368(%rbp) : fcinfo.argnull[0] = false; 0.00 : 77dd8a: c6 45 90 00 movb $0x0,-0x70(%rbp) : fcinfo.argnull[1] = false; 0.00 : 77dd8e: c6 45 91 00 movb $0x0,-0x6f(%rbp) : fcinfo.argnull[2] = false; 0.00 : 77dd92: c6 45 92 00 movb $0x0,-0x6e(%rbp) : fcinfo.argnull[3] = false; 0.00 : 77dd96: c6 45 93 00 movb $0x0,-0x6d(%rbp) : fcinfo.argnull[4] = false; 0.00 : 77dd9a: c6 45 94 00 movb $0x0,-0x6c(%rbp) : fcinfo.argnull[5] = false; 0.00 : 77dd9e: c6 45 95 00 movb $0x0,-0x6b(%rbp) : : result = FunctionCallInvoke(&fcinfo); 0.00 : 77dda2: 41 ff 12 callq *(%r10) : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1440 50.00 : 77dda5: 80 bd 6c fc ff ff 00 cmpb $0x0,-0x394(%rbp) 50.00 : 77ddac: 75 02 jne 77ddb0 : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); : : return result; : } 0.00 : 77ddae: c9 leaveq 0.00 : 77ddaf: c3 retq : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 77ddb0: ba c0 51 8d 00 mov $0x8d51c0,%edx 0.00 : 77ddb5: be a1 05 00 00 mov $0x5a1,%esi 0.00 : 77ddba: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77ddbf: e8 5c d6 ff ff callq 77b420 0.00 : 77ddc4: 48 8b 85 50 fc ff ff mov -0x3b0(%rbp),%rax 0.00 : 77ddcb: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 77ddd0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ddd5: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77ddd8: 31 c0 xor %eax,%eax 0.00 : 77ddda: e8 51 d4 ff ff callq 77b230 0.00 : 77dddf: e8 ec b6 ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1356 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077df80 : : } : : Datum : FunctionCall3Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, : Datum arg3) : { 0.00 : 77df80: 55 push %rbp 0.00 : 77df81: 48 89 f8 mov %rdi,%rax 0.00 : 77df84: 48 89 e5 mov %rsp,%rbp 0.00 : 77df87: 48 81 ec b0 03 00 00 sub $0x3b0,%rsp : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 3, collation, NULL, NULL); 0.00 : 77df8e: 48 89 bd 50 fc ff ff mov %rdi,-0x3b0(%rbp) 0.00 : 77df95: 48 c7 85 58 fc ff ff movq $0x0,-0x3a8(%rbp) 0.00 : 77df9c: 00 00 00 00 : fcinfo.arg[2] = arg3; : fcinfo.argnull[0] = false; : fcinfo.argnull[1] = false; : fcinfo.argnull[2] = false; : : result = FunctionCallInvoke(&fcinfo); 0.00 : 77dfa0: 48 8d bd 50 fc ff ff lea -0x3b0(%rbp),%rdi : Datum arg3) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 3, collation, NULL, NULL); 0.00 : 77dfa7: 48 c7 85 60 fc ff ff movq $0x0,-0x3a0(%rbp) 0.00 : 77dfae: 00 00 00 00 0.00 : 77dfb2: 89 b5 68 fc ff ff mov %esi,-0x398(%rbp) 0.00 : 77dfb8: c6 85 6c fc ff ff 00 movb $0x0,-0x394(%rbp) 0.00 : 77dfbf: 66 c7 85 6e fc ff ff movw $0x3,-0x392(%rbp) 0.00 : 77dfc6: 03 00 : : fcinfo.arg[0] = arg1; 0.00 : 77dfc8: 48 89 95 70 fc ff ff mov %rdx,-0x390(%rbp) : fcinfo.arg[1] = arg2; 0.00 : 77dfcf: 48 89 8d 78 fc ff ff mov %rcx,-0x388(%rbp) : fcinfo.arg[2] = arg3; 0.00 : 77dfd6: 4c 89 85 80 fc ff ff mov %r8,-0x380(%rbp) : fcinfo.argnull[0] = false; 0.00 : 77dfdd: c6 45 90 00 movb $0x0,-0x70(%rbp) : fcinfo.argnull[1] = false; 0.00 : 77dfe1: c6 45 91 00 movb $0x0,-0x6f(%rbp) : fcinfo.argnull[2] = false; 0.00 : 77dfe5: c6 45 92 00 movb $0x0,-0x6e(%rbp) : : result = FunctionCallInvoke(&fcinfo); 0.00 : 77dfe9: ff 10 callq *(%rax) : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) 0.00 : 77dfeb: 80 bd 6c fc ff ff 00 cmpb $0x0,-0x394(%rbp) 0.00 : 77dff2: 75 02 jne 77dff6 : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); : : return result; : } 0.00 : 77dff4: c9 leaveq 100.00 : 77dff5: c3 retq : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 77dff6: ba 20 52 8d 00 mov $0x8d5220,%edx 0.00 : 77dffb: be 49 05 00 00 mov $0x549,%esi 0.00 : 77e000: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77e005: e8 16 d4 ff ff callq 77b420 0.00 : 77e00a: 48 8b 85 50 fc ff ff mov -0x3b0(%rbp),%rax 0.00 : 77e011: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 77e016: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77e01b: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77e01e: 31 c0 xor %eax,%eax 0.00 : 77e020: e8 0b d2 ff ff callq 77b230 0.00 : 77e025: e8 a6 b4 ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1023 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077e840 : : * are allowed to be NULL. Also, the function cannot be one that needs to : * look at FmgrInfo, since there won't be any. : */ : Datum : DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1) : { 0.00 : 77e840: 55 push %rbp 0.00 : 77e841: 48 89 e5 mov %rsp,%rbp 0.00 : 77e844: 53 push %rbx 0.00 : 77e845: 48 89 fb mov %rdi,%rbx : InitFunctionCallInfoData(fcinfo, NULL, 1, collation, NULL, NULL); : : fcinfo.arg[0] = arg1; : fcinfo.argnull[0] = false; : : result = (*func) (&fcinfo); 0.00 : 77e848: 48 8d bd 40 fc ff ff lea -0x3c0(%rbp),%rdi : * are allowed to be NULL. Also, the function cannot be one that needs to : * look at FmgrInfo, since there won't be any. : */ : Datum : DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1) : { 0.00 : 77e84f: 48 81 ec b8 03 00 00 sub $0x3b8,%rsp : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, NULL, 1, collation, NULL, NULL); 0.00 : 77e856: 48 c7 85 40 fc ff ff movq $0x0,-0x3c0(%rbp) 0.00 : 77e85d: 00 00 00 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1023 100.00 : 77e861: 48 c7 85 48 fc ff ff movq $0x0,-0x3b8(%rbp) 0.00 : 77e868: 00 00 00 00 0.00 : 77e86c: 48 c7 85 50 fc ff ff movq $0x0,-0x3b0(%rbp) 0.00 : 77e873: 00 00 00 00 0.00 : 77e877: 89 b5 58 fc ff ff mov %esi,-0x3a8(%rbp) 0.00 : 77e87d: c6 85 5c fc ff ff 00 movb $0x0,-0x3a4(%rbp) 0.00 : 77e884: 66 c7 85 5e fc ff ff movw $0x1,-0x3a2(%rbp) 0.00 : 77e88b: 01 00 : : fcinfo.arg[0] = arg1; 0.00 : 77e88d: 48 89 95 60 fc ff ff mov %rdx,-0x3a0(%rbp) : fcinfo.argnull[0] = false; 0.00 : 77e894: c6 45 80 00 movb $0x0,-0x80(%rbp) : : result = (*func) (&fcinfo); 0.00 : 77e898: ff d3 callq *%rbx : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) 0.00 : 77e89a: 80 bd 5c fc ff ff 00 cmpb $0x0,-0x3a4(%rbp) 0.00 : 77e8a1: 75 0a jne 77e8ad : elog(ERROR, "function %p returned NULL", (void *) func); : : return result; : } 0.00 : 77e8a3: 48 81 c4 b8 03 00 00 add $0x3b8,%rsp 0.00 : 77e8aa: 5b pop %rbx 0.00 : 77e8ab: c9 leaveq 0.00 : 77e8ac: c3 retq : : result = (*func) (&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %p returned NULL", (void *) func); 0.00 : 77e8ad: ba 80 53 8d 00 mov $0x8d5380,%edx 0.00 : 77e8b2: be 08 04 00 00 mov $0x408,%esi 0.00 : 77e8b7: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77e8bc: e8 5f cb ff ff callq 77b420 0.00 : 77e8c1: 48 89 da mov %rbx,%rdx 0.00 : 77e8c4: be b1 4c 8d 00 mov $0x8d4cb1,%esi 0.00 : 77e8c9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77e8ce: 31 c0 xor %eax,%eax 0.00 : 77e8d0: e8 5b c9 ff ff callq 77b230 0.00 : 77e8d5: e8 f6 ab ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:172 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:172 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000780050 : : * Fill a FmgrInfo struct, specifying a memory context in which its : * subsidiary data should go. : */ : void : fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt) : { 0.00 : 780050: 55 push %rbp : fmgr_info_cxt_security(functionId, finfo, mcxt, false); 50.00 : 780051: 31 c9 xor %ecx,%ecx : * Fill a FmgrInfo struct, specifying a memory context in which its : * subsidiary data should go. : */ : void : fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt) : { 0.00 : 780053: 48 89 e5 mov %rsp,%rbp : fmgr_info_cxt_security(functionId, finfo, mcxt, false); : } 0.00 : 780056: c9 leaveq : * subsidiary data should go. : */ : void : fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt) : { : fmgr_info_cxt_security(functionId, finfo, mcxt, false); 50.00 : 780057: e9 e4 f8 ff ff jmpq 77f940 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1576 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000783800 : : } : : /* calculate ceil(log base 2) of num */ : int : my_log2(long num) : { 0.00 : 783800: 48 b8 ff ff ff ff ff movabs $0x3fffffffffffffff,%rax 0.00 : 783807: ff ff 3f 0.00 : 78380a: 55 push %rbp : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 78380b: ba 01 00 00 00 mov $0x1,%edx : } : : /* calculate ceil(log base 2) of num */ : int : my_log2(long num) : { 0.00 : 783810: 48 39 c7 cmp %rax,%rdi 0.00 : 783813: 48 89 c1 mov %rax,%rcx 0.00 : 783816: 48 0f 4e cf cmovle %rdi,%rcx : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1576 100.00 : 78381a: 31 c0 xor %eax,%eax : } : : /* calculate ceil(log base 2) of num */ : int : my_log2(long num) : { 0.00 : 78381c: 48 89 e5 mov %rsp,%rbp : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 78381f: 48 83 f9 01 cmp $0x1,%rcx 0.00 : 783823: 7e 0e jle 783833 0.00 : 783825: 0f 1f 00 nopl (%rax) 0.00 : 783828: 48 01 d2 add %rdx,%rdx 0.00 : 78382b: 83 c0 01 add $0x1,%eax 0.00 : 78382e: 48 39 ca cmp %rcx,%rdx 0.00 : 783831: 7c f5 jl 783828 : ; : return i; : } 0.00 : 783833: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000788a80 : : /* returns the length (counted in wchars) of a multibyte string : * (not necessarily NULL terminated) : */ : int : pg_mbstrlen_with_len(const char *mbstr, int limit) : { 0.00 : 788a80: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 50.00 : 788a81: 48 89 e5 mov %rsp,%rbp 0.00 : 788a84: 41 55 push %r13 0.00 : 788a86: 41 54 push %r12 0.00 : 788a88: 49 89 fc mov %rdi,%r12 0.00 : 788a8b: 53 push %rbx 0.00 : 788a8c: 89 f3 mov %esi,%ebx 0.00 : 788a8e: 48 83 ec 08 sub $0x8,%rsp : int len = 0; : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) 0.00 : 788a92: e8 f9 2d 00 00 callq 78b890 0.00 : 788a97: 83 e8 01 sub $0x1,%eax 0.00 : 788a9a: 74 49 je 788ae5 : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788a9c: 85 db test %ebx,%ebx 0.00 : 788a9e: 7e 52 jle 788af2 0.00 : 788aa0: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 788aa5: 74 4b je 788af2 0.00 : 788aa7: 45 31 ed xor %r13d,%r13d 0.00 : 788aaa: eb 10 jmp 788abc 0.00 : 788aac: 0f 1f 40 00 nopl 0x0(%rax) : { : int l = pg_mblen(mbstr); : : limit -= l; : mbstr += l; 0.00 : 788ab0: 48 98 cltq 0.00 : 788ab2: 49 01 c4 add %rax,%r12 : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788ab5: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 788aba: 74 26 je 788ae2 : : /* returns the byte length of a multibyte character */ : int : pg_mblen(const char *mbstr) : { : return ((*pg_wchar_table[DatabaseEncoding->encoding].mblen) ((const unsigned char *) mbstr)); 0.00 : 788abc: 48 8b 05 8d 00 3e 00 mov 0x3e008d(%rip),%rax # b68b50 0.00 : 788ac3: 4c 89 e7 mov %r12,%rdi : { : int l = pg_mblen(mbstr); : : limit -= l; : mbstr += l; : len++; 0.00 : 788ac6: 41 83 c5 01 add $0x1,%r13d : : /* returns the byte length of a multibyte character */ : int : pg_mblen(const char *mbstr) : { : return ((*pg_wchar_table[DatabaseEncoding->encoding].mblen) ((const unsigned char *) mbstr)); 0.00 : 788aca: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 788acd: 48 8d 44 40 01 lea 0x1(%rax,%rax,2),%rax 0.00 : 788ad2: 48 c1 e0 04 shl $0x4,%rax 0.00 : 788ad6: ff 90 60 7d 8d 00 callq *0x8d7d60(%rax) : : while (limit > 0 && *mbstr) : { : int l = pg_mblen(mbstr); : : limit -= l; 0.00 : 788adc: 29 c3 sub %eax,%ebx : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788ade: 85 db test %ebx,%ebx 0.00 : 788ae0: 7f ce jg 788ab0 0.00 : 788ae2: 44 89 eb mov %r13d,%ebx : limit -= l; : mbstr += l; : len++; : } : return len; : } 0.00 : 788ae5: 48 83 c4 08 add $0x8,%rsp 0.00 : 788ae9: 89 d8 mov %ebx,%eax 0.00 : 788aeb: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 50.00 : 788aec: 41 5c pop %r12 0.00 : 788aee: 41 5d pop %r13 0.00 : 788af0: c9 leaveq 0.00 : 788af1: c3 retq : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788af2: 31 db xor %ebx,%ebx 0.00 : 788af4: eb ef jmp 788ae5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:123 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000789700 : : * : * Returns 0 if okay, -1 if not (bad encoding or can't support conversion) : */ : int : PrepareClientEncoding(int encoding) : { 0.00 : 789700: 55 push %rbp 0.00 : 789701: 48 89 e5 mov %rsp,%rbp 0.00 : 789704: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 789708: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 78970c: 41 89 fc mov %edi,%r12d 0.00 : 78970f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 789713: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 789717: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 78971b: 48 83 ec 30 sub $0x30,%rsp : int current_server_encoding; : ListCell *lc; : : if (!PG_VALID_FE_ENCODING(encoding)) 0.00 : 78971f: 83 ff 29 cmp $0x29,%edi 0.00 : 789722: 77 64 ja 789788 : return -1; : : /* Can't do anything during startup, per notes above */ : if (!backend_startup_complete) 0.00 : 789724: 80 3d 1d 0a 43 00 00 cmpb $0x0,0x430a1d(%rip) # bba148 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:123 100.00 : 78972b: 74 53 je 789780 : * cstring, text, varchar, name, xml, and json. : */ : int : GetDatabaseEncoding(void) : { : return DatabaseEncoding->encoding; 0.00 : 78972d: 48 8b 05 1c f4 3d 00 mov 0x3df41c(%rip),%rax # b68b50 0.00 : 789734: 44 8b 68 08 mov 0x8(%rax),%r13d : current_server_encoding = GetDatabaseEncoding(); : : /* : * Check for cases that require no conversion function. : */ : if (current_server_encoding == encoding || 0.00 : 789738: 44 39 ef cmp %r13d,%edi 0.00 : 78973b: 74 43 je 789780 0.00 : 78973d: 45 85 ed test %r13d,%r13d 0.00 : 789740: 74 3e je 789780 0.00 : 789742: 85 ff test %edi,%edi 0.00 : 789744: 74 3a je 789780 0.00 : 789746: 66 90 xchg %ax,%ax : current_server_encoding == PG_SQL_ASCII || : encoding == PG_SQL_ASCII) : return 0; : : if (IsTransactionState()) 0.00 : 789748: e8 f3 73 d3 ff callq 4c0b40 0.00 : 78974d: 84 c0 test %al,%al 0.00 : 78974f: 90 nop 0.00 : 789750: 75 56 jne 7897a8 : * transaction-rollback cases. The only case it might not work for is : * trying to change client_encoding on the fly by editing : * postgresql.conf and SIGHUP'ing. Which would probably be a stupid : * thing to do anyway. : */ : foreach(lc, ConvProcList) 0.00 : 789752: 48 8b 05 f7 09 43 00 mov 0x4309f7(%rip),%rax # bba150 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 789759: 48 85 c0 test %rax,%rax 0.00 : 78975c: 74 2a je 789788 0.00 : 78975e: 66 90 xchg %ax,%ax 0.00 : 789760: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 789764: 48 85 c0 test %rax,%rax 0.00 : 789767: 74 1f je 789788 : { : ConvProcInfo *oldinfo = (ConvProcInfo *) lfirst(lc); 0.00 : 789769: 48 8b 10 mov (%rax),%rdx : : if (oldinfo->s_encoding == current_server_encoding && 0.00 : 78976c: 44 39 2a cmp %r13d,(%rdx) 0.00 : 78976f: 75 ef jne 789760 0.00 : 789771: 44 39 62 04 cmp %r12d,0x4(%rdx) 0.00 : 789775: 75 e9 jne 789760 0.00 : 789777: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 78977e: 00 00 : * transaction-rollback cases. The only case it might not work for is : * trying to change client_encoding on the fly by editing : * postgresql.conf and SIGHUP'ing. Which would probably be a stupid : * thing to do anyway. : */ : foreach(lc, ConvProcList) 0.00 : 789780: 31 c0 xor %eax,%eax 0.00 : 789782: eb 09 jmp 78978d 0.00 : 789784: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 789788: b8 ff ff ff ff mov $0xffffffff,%eax : return 0; : } : : return -1; /* it's not cached, so fail */ : } : } 0.00 : 78978d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 789791: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 789795: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 789799: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 78979d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 7897a1: c9 leaveq 0.00 : 7897a2: c3 retq 0.00 : 7897a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Oid to_server_proc, : to_client_proc; : ConvProcInfo *convinfo; : MemoryContext oldcontext; : : to_server_proc = FindDefaultConversionProc(encoding, 0.00 : 7897a8: 44 89 ee mov %r13d,%esi 0.00 : 7897ab: 44 89 e7 mov %r12d,%edi 0.00 : 7897ae: e8 4d 3c d6 ff callq 4ed400 : current_server_encoding); : if (!OidIsValid(to_server_proc)) 0.00 : 7897b3: 85 c0 test %eax,%eax : Oid to_server_proc, : to_client_proc; : ConvProcInfo *convinfo; : MemoryContext oldcontext; : : to_server_proc = FindDefaultConversionProc(encoding, 0.00 : 7897b5: 41 89 c6 mov %eax,%r14d : current_server_encoding); : if (!OidIsValid(to_server_proc)) 0.00 : 7897b8: 74 ce je 789788 : return -1; : to_client_proc = FindDefaultConversionProc(current_server_encoding, 0.00 : 7897ba: 44 89 e6 mov %r12d,%esi 0.00 : 7897bd: 44 89 ef mov %r13d,%edi 0.00 : 7897c0: e8 3b 3c d6 ff callq 4ed400 : encoding); : if (!OidIsValid(to_client_proc)) 0.00 : 7897c5: 85 c0 test %eax,%eax : : to_server_proc = FindDefaultConversionProc(encoding, : current_server_encoding); : if (!OidIsValid(to_server_proc)) : return -1; : to_client_proc = FindDefaultConversionProc(current_server_encoding, 0.00 : 7897c7: 41 89 c7 mov %eax,%r15d : encoding); : if (!OidIsValid(to_client_proc)) 0.00 : 7897ca: 74 bc je 789788 : return -1; : : /* : * Load the fmgr info into TopMemoryContext (could still fail here) : */ : convinfo = (ConvProcInfo *) MemoryContextAlloc(TopMemoryContext, 0.00 : 7897cc: 48 8b 3d 95 10 43 00 mov 0x431095(%rip),%rdi # bba868 0.00 : 7897d3: be 68 00 00 00 mov $0x68,%esi 0.00 : 7897d8: e8 b3 f6 00 00 callq 798e90 : sizeof(ConvProcInfo)); : convinfo->s_encoding = current_server_encoding; : convinfo->c_encoding = encoding; 0.00 : 7897dd: 44 89 60 04 mov %r12d,0x4(%rax) : /* : * Load the fmgr info into TopMemoryContext (could still fail here) : */ : convinfo = (ConvProcInfo *) MemoryContextAlloc(TopMemoryContext, : sizeof(ConvProcInfo)); : convinfo->s_encoding = current_server_encoding; 0.00 : 7897e1: 44 89 28 mov %r13d,(%rax) : convinfo->c_encoding = encoding; : fmgr_info_cxt(to_server_proc, &convinfo->to_server_info, 0.00 : 7897e4: 48 8d 70 08 lea 0x8(%rax),%rsi 0.00 : 7897e8: 48 8b 15 79 10 43 00 mov 0x431079(%rip),%rdx # bba868 0.00 : 7897ef: 44 89 f7 mov %r14d,%edi : return -1; : : /* : * Load the fmgr info into TopMemoryContext (could still fail here) : */ : convinfo = (ConvProcInfo *) MemoryContextAlloc(TopMemoryContext, 0.00 : 7897f2: 48 89 c3 mov %rax,%rbx : sizeof(ConvProcInfo)); : convinfo->s_encoding = current_server_encoding; : convinfo->c_encoding = encoding; : fmgr_info_cxt(to_server_proc, &convinfo->to_server_info, 0.00 : 7897f5: e8 56 68 ff ff callq 780050 : TopMemoryContext); : fmgr_info_cxt(to_client_proc, &convinfo->to_client_info, 0.00 : 7897fa: 48 8b 15 67 10 43 00 mov 0x431067(%rip),%rdx # bba868 0.00 : 789801: 48 8d 73 38 lea 0x38(%rbx),%rsi 0.00 : 789805: 44 89 ff mov %r15d,%edi 0.00 : 789808: e8 43 68 ff ff callq 780050 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 78980d: 4c 8b 25 4c 10 43 00 mov 0x43104c(%rip),%r12 # bba860 : : CurrentMemoryContext = context; 0.00 : 789814: 48 8b 05 4d 10 43 00 mov 0x43104d(%rip),%rax # bba868 : TopMemoryContext); : : /* Attach new info to head of list */ : oldcontext = MemoryContextSwitchTo(TopMemoryContext); : ConvProcList = lcons(convinfo, ConvProcList); 0.00 : 78981b: 48 89 df mov %rbx,%rdi 0.00 : 78981e: 48 8b 35 2b 09 43 00 mov 0x43092b(%rip),%rsi # bba150 0.00 : 789825: 48 89 05 34 10 43 00 mov %rax,0x431034(%rip) # bba860 0.00 : 78982c: e8 1f 80 e5 ff callq 5e1850 0.00 : 789831: 4c 89 25 28 10 43 00 mov %r12,0x431028(%rip) # bba860 0.00 : 789838: 48 89 05 11 09 43 00 mov %rax,0x430911(%rip) # bba150 0.00 : 78983f: 31 c0 xor %eax,%eax : return 0; : } : : return -1; /* it's not cached, so fail */ : } : } 0.00 : 789841: e9 47 ff ff ff jmpq 78978d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:3662 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000078c1b0 : : * value if it's not referenced anywhere else in the item (including stacked : * states). : */ : static void : set_string_field(struct config_string * conf, char **field, char *newval) : { 0.00 : 78c1b0: 55 push %rbp 0.00 : 78c1b1: 48 89 f9 mov %rdi,%rcx : char *oldval = *field; 0.00 : 78c1b4: 48 8b 3e mov (%rsi),%rdi : : /* Do the assignment */ : *field = newval; 0.00 : 78c1b7: 48 89 16 mov %rdx,(%rsi) : * value if it's not referenced anywhere else in the item (including stacked : * states). : */ : static void : set_string_field(struct config_string * conf, char **field, char *newval) : { 0.00 : 78c1ba: 48 89 e5 mov %rsp,%rbp : : /* Do the assignment */ : *field = newval; : : /* Free old value if it's not NULL and isn't referenced anymore */ : if (oldval && !string_field_used(conf, oldval)) 0.00 : 78c1bd: 48 85 ff test %rdi,%rdi 0.00 : 78c1c0: 74 40 je 78c202 : static bool : string_field_used(struct config_string * conf, char *strval) : { : GucStack *stack; : : if (strval == *(conf->variable) || 0.00 : 78c1c2: 48 8b 41 60 mov 0x60(%rcx),%rax 0.00 : 78c1c6: 48 3b 38 cmp (%rax),%rdi 0.00 : 78c1c9: 74 37 je 78c202 0.00 : 78c1cb: 48 3b b9 88 00 00 00 cmp 0x88(%rcx),%rdi 0.00 : 78c1d2: 74 2e je 78c202 0.00 : 78c1d4: 48 3b 79 68 cmp 0x68(%rcx),%rdi 0.00 : 78c1d8: 74 28 je 78c202 : strval == conf->reset_val || : strval == conf->boot_val) : return true; : for (stack = conf->gen.stack; stack; stack = stack->prev) 0.00 : 78c1da: 48 8b 41 40 mov 0x40(%rcx),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:3662 100.00 : 78c1de: 48 85 c0 test %rax,%rax 0.00 : 78c1e1: 75 17 jne 78c1fa 0.00 : 78c1e3: eb 23 jmp 78c208 0.00 : 78c1e5: 0f 1f 00 nopl (%rax) : { : if (strval == stack->prior.val.stringval || 0.00 : 78c1e8: 48 3b 78 30 cmp 0x30(%rax),%rdi 0.00 : 78c1ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 78c1f0: 74 10 je 78c202 : : if (strval == *(conf->variable) || : strval == conf->reset_val || : strval == conf->boot_val) : return true; : for (stack = conf->gen.stack; stack; stack = stack->prev) 0.00 : 78c1f2: 48 8b 00 mov (%rax),%rax 0.00 : 78c1f5: 48 85 c0 test %rax,%rax 0.00 : 78c1f8: 74 0e je 78c208 : { : if (strval == stack->prior.val.stringval || 0.00 : 78c1fa: 48 3b 78 20 cmp 0x20(%rax),%rdi 0.00 : 78c1fe: 66 90 xchg %ax,%ax 0.00 : 78c200: 75 e6 jne 78c1e8 : *field = newval; : : /* Free old value if it's not NULL and isn't referenced anymore */ : if (oldval && !string_field_used(conf, oldval)) : free(oldval); : } 0.00 : 78c202: c9 leaveq 0.00 : 78c203: c3 retq 0.00 : 78c204: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 78c208: c9 leaveq 0.00 : 78c209: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Do the assignment */ : *field = newval; : : /* Free old value if it's not NULL and isn't referenced anymore */ : if (oldval && !string_field_used(conf, oldval)) : free(oldval); 0.00 : 78c210: e9 0b d6 cd ff jmpq 469820 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:4013 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000078c960 : : * else return NULL. If create_placeholders is TRUE, we'll create a : * placeholder record for a valid-looking custom variable name. : */ : static struct config_generic * : find_option(const char *name, bool create_placeholders, int elevel) : { 0.00 : 78c960: 55 push %rbp : : /* : * By equating const char ** with struct config_generic *, we are assuming : * the name field is first in config_generic. : */ : res = (struct config_generic **) bsearch((void *) &key, 0.00 : 78c961: 41 b8 d0 ba 78 00 mov $0x78bad0,%r8d 0.00 : 78c967: b9 08 00 00 00 mov $0x8,%ecx : * else return NULL. If create_placeholders is TRUE, we'll create a : * placeholder record for a valid-looking custom variable name. : */ : static struct config_generic * : find_option(const char *name, bool create_placeholders, int elevel) : { 0.00 : 78c96c: 48 89 e5 mov %rsp,%rbp 0.00 : 78c96f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 78c973: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 78c977: 41 89 d7 mov %edx,%r15d 0.00 : 78c97a: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 78c97e: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 78c982: 41 89 f6 mov %esi,%r14d 0.00 : 78c985: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 78c989: 48 83 ec 40 sub $0x40,%rsp : : /* : * By equating const char ** with struct config_generic *, we are assuming : * the name field is first in config_generic. : */ : res = (struct config_generic **) bsearch((void *) &key, 0.00 : 78c98d: 48 63 15 94 da 42 00 movslq 0x42da94(%rip),%rdx # bba428 /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:4013 100.00 : 78c994: 48 8b 35 85 da 42 00 mov 0x42da85(%rip),%rsi # bba420 : * else return NULL. If create_placeholders is TRUE, we'll create a : * placeholder record for a valid-looking custom variable name. : */ : static struct config_generic * : find_option(const char *name, bool create_placeholders, int elevel) : { 0.00 : 78c99b: 48 89 7d c0 mov %rdi,-0x40(%rbp) : const char **key = &name; 0.00 : 78c99f: 48 8d 45 c0 lea -0x40(%rbp),%rax : : /* : * By equating const char ** with struct config_generic *, we are assuming : * the name field is first in config_generic. : */ : res = (struct config_generic **) bsearch((void *) &key, 0.00 : 78c9a3: 48 8d 7d d0 lea -0x30(%rbp),%rdi : * placeholder record for a valid-looking custom variable name. : */ : static struct config_generic * : find_option(const char *name, bool create_placeholders, int elevel) : { : const char **key = &name; 0.00 : 78c9a7: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* : * By equating const char ** with struct config_generic *, we are assuming : * the name field is first in config_generic. : */ : res = (struct config_generic **) bsearch((void *) &key, 0.00 : 78c9ab: e8 90 cf cd ff callq 469940 : (void *) guc_variables, : num_guc_variables, : sizeof(struct config_generic *), : guc_var_compare); : if (res) 0.00 : 78c9b0: 48 85 c0 test %rax,%rax 0.00 : 78c9b3: 74 23 je 78c9d8 : return *res; 0.00 : 78c9b5: 48 8b 18 mov (%rax),%rbx : return add_placeholder_variable(name, elevel); : } : : /* Unknown name */ : return NULL; : } 0.00 : 78c9b8: 48 89 d8 mov %rbx,%rax 0.00 : 78c9bb: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 78c9bf: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 78c9c3: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 78c9c7: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 78c9cb: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 78c9cf: c9 leaveq 0.00 : 78c9d0: c3 retq 0.00 : 78c9d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * See if the name is an obsolete name for a variable. We assume that the : * set of supported old names is short enough that a brute-force search is : * the best way. : */ : for (i = 0; map_old_guc_names[i] != NULL; i += 2) 0.00 : 78c9d8: 41 bd 91 a2 8d 00 mov $0x8da291,%r13d : (void *) guc_variables, : num_guc_variables, : sizeof(struct config_generic *), : guc_var_compare); : if (res) : return *res; 0.00 : 78c9de: bb f0 8e 8d 00 mov $0x8d8ef0,%ebx 0.00 : 78c9e3: 45 31 e4 xor %r12d,%r12d 0.00 : 78c9e6: eb 18 jmp 78ca00 0.00 : 78c9e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 78c9ef: 00 : /* : * See if the name is an obsolete name for a variable. We assume that the : * set of supported old names is short enough that a brute-force search is : * the best way. : */ : for (i = 0; map_old_guc_names[i] != NULL; i += 2) 0.00 : 78c9f0: 4c 8b 2b mov (%rbx),%r13 0.00 : 78c9f3: 41 83 c4 02 add $0x2,%r12d 0.00 : 78c9f7: 48 83 c3 10 add $0x10,%rbx 0.00 : 78c9fb: 4d 85 ed test %r13,%r13 0.00 : 78c9fe: 74 30 je 78ca30 : { : if (guc_name_compare(name, map_old_guc_names[i]) == 0) 0.00 : 78ca00: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 78ca04: 4c 89 ee mov %r13,%rsi 0.00 : 78ca07: e8 44 f0 ff ff callq 78ba50 0.00 : 78ca0c: 85 c0 test %eax,%eax 0.00 : 78ca0e: 75 e0 jne 78c9f0 : return find_option(map_old_guc_names[i + 1], false, elevel); 0.00 : 78ca10: 41 8d 44 24 01 lea 0x1(%r12),%eax 0.00 : 78ca15: 44 89 fa mov %r15d,%edx 0.00 : 78ca18: 31 f6 xor %esi,%esi 0.00 : 78ca1a: 48 98 cltq 0.00 : 78ca1c: 48 8b 3c c5 e0 8e 8d mov 0x8d8ee0(,%rax,8),%rdi 0.00 : 78ca23: 00 0.00 : 78ca24: e8 37 ff ff ff callq 78c960 0.00 : 78ca29: 48 89 c3 mov %rax,%rbx : return add_placeholder_variable(name, elevel); : } : : /* Unknown name */ : return NULL; : } 0.00 : 78ca2c: eb 8a jmp 78c9b8 0.00 : 78ca2e: 66 90 xchg %ax,%ax : { : if (guc_name_compare(name, map_old_guc_names[i]) == 0) : return find_option(map_old_guc_names[i + 1], false, elevel); : } : : if (create_placeholders) 0.00 : 78ca30: 45 84 f6 test %r14b,%r14b 0.00 : 78ca33: 75 07 jne 78ca3c : var->variable = (char **) (var + 1); : : if (!add_guc_variable((struct config_generic *) var, elevel)) : { : free((void *) gen->name); : free(var); 0.00 : 78ca35: 31 db xor %ebx,%ebx 0.00 : 78ca37: e9 7c ff ff ff jmpq 78c9b8 : if (create_placeholders) : { : /* : * Check if the name is qualified, and if so, add a placeholder. : */ : if (strchr(name, GUC_QUALIFIER_SEPARATOR) != NULL) 0.00 : 78ca3c: 4c 8b 75 c0 mov -0x40(%rbp),%r14 0.00 : 78ca40: be 2e 00 00 00 mov $0x2e,%esi 0.00 : 78ca45: 4c 89 f7 mov %r14,%rdi 0.00 : 78ca48: e8 03 d2 cd ff callq 469c50 0.00 : 78ca4d: 48 85 c0 test %rax,%rax 0.00 : 78ca50: 74 e3 je 78ca35 : { : size_t sz = sizeof(struct config_string) + sizeof(char *); : struct config_string *var; : struct config_generic *gen; : : var = (struct config_string *) guc_malloc(elevel, sz); 0.00 : 78ca52: be a0 00 00 00 mov $0xa0,%esi 0.00 : 78ca57: 44 89 ff mov %r15d,%edi : if (var == NULL) 0.00 : 78ca5a: 31 db xor %ebx,%ebx : { : size_t sz = sizeof(struct config_string) + sizeof(char *); : struct config_string *var; : struct config_generic *gen; : : var = (struct config_string *) guc_malloc(elevel, sz); 0.00 : 78ca5c: e8 df f8 ff ff callq 78c340 : if (var == NULL) 0.00 : 78ca61: 48 85 c0 test %rax,%rax : { : size_t sz = sizeof(struct config_string) + sizeof(char *); : struct config_string *var; : struct config_generic *gen; : : var = (struct config_string *) guc_malloc(elevel, sz); 0.00 : 78ca64: 49 89 c4 mov %rax,%r12 : if (var == NULL) 0.00 : 78ca67: 0f 84 4b ff ff ff je 78c9b8 : return NULL; : memset(var, 0, sz); 0.00 : 78ca6d: 48 89 c7 mov %rax,%rdi 0.00 : 78ca70: b9 14 00 00 00 mov $0x14,%ecx 0.00 : 78ca75: 4c 89 e8 mov %r13,%rax 0.00 : 78ca78: f3 48 ab rep stos %rax,%es:(%rdi) : gen = &var->gen; : : gen->name = guc_strdup(elevel, name); 0.00 : 78ca7b: 4c 89 f6 mov %r14,%rsi 0.00 : 78ca7e: 44 89 ff mov %r15d,%edi 0.00 : 78ca81: e8 1a fc ff ff callq 78c6a0 : if (gen->name == NULL) 0.00 : 78ca86: 48 85 c0 test %rax,%rax : if (var == NULL) : return NULL; : memset(var, 0, sz); : gen = &var->gen; : : gen->name = guc_strdup(elevel, name); 0.00 : 78ca89: 49 89 04 24 mov %rax,(%r12) : if (gen->name == NULL) 0.00 : 78ca8d: 74 68 je 78caf7 : /* : * The char* is allocated at the end of the struct since we have no : * 'static' place to point to. Note that the current value, as well as : * the boot and reset values, start out NULL. : */ : var->variable = (char **) (var + 1); 0.00 : 78ca8f: 49 8d 84 24 98 00 00 lea 0x98(%r12),%rax 0.00 : 78ca96: 00 : { : free(var); : return NULL; : } : : gen->context = PGC_USERSET; 0.00 : 78ca97: 41 c7 44 24 08 06 00 movl $0x6,0x8(%r12) 0.00 : 78ca9e: 00 00 : gen->group = CUSTOM_OPTIONS; 0.00 : 78caa0: 41 c7 44 24 0c 2c 00 movl $0x2c,0xc(%r12) 0.00 : 78caa7: 00 00 : gen->short_desc = "GUC placeholder variable"; 0.00 : 78caa9: 49 c7 44 24 10 9a a2 movq $0x8da29a,0x10(%r12) 0.00 : 78cab0: 8d 00 : gen->flags = GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_CUSTOM_PLACEHOLDER; 0.00 : 78cab2: 41 c7 44 24 20 a4 00 movl $0xa4,0x20(%r12) 0.00 : 78cab9: 00 00 : * 'static' place to point to. Note that the current value, as well as : * the boot and reset values, start out NULL. : */ : var->variable = (char **) (var + 1); : : if (!add_guc_variable((struct config_generic *) var, elevel)) 0.00 : 78cabb: 44 89 fe mov %r15d,%esi : : gen->context = PGC_USERSET; : gen->group = CUSTOM_OPTIONS; : gen->short_desc = "GUC placeholder variable"; : gen->flags = GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_CUSTOM_PLACEHOLDER; : gen->vartype = PGC_STRING; 0.00 : 78cabe: 41 c7 44 24 24 03 00 movl $0x3,0x24(%r12) 0.00 : 78cac5: 00 00 : /* : * The char* is allocated at the end of the struct since we have no : * 'static' place to point to. Note that the current value, as well as : * the boot and reset values, start out NULL. : */ : var->variable = (char **) (var + 1); 0.00 : 78cac7: 49 89 44 24 60 mov %rax,0x60(%r12) : : if (!add_guc_variable((struct config_generic *) var, elevel)) 0.00 : 78cacc: 4c 89 e7 mov %r12,%rdi 0.00 : 78cacf: e8 2c fd ff ff callq 78c800 0.00 : 78cad4: 84 c0 test %al,%al : : var = (struct config_string *) guc_malloc(elevel, sz); : if (var == NULL) : return NULL; : memset(var, 0, sz); : gen = &var->gen; 0.00 : 78cad6: 4c 89 e3 mov %r12,%rbx : * 'static' place to point to. Note that the current value, as well as : * the boot and reset values, start out NULL. : */ : var->variable = (char **) (var + 1); : : if (!add_guc_variable((struct config_generic *) var, elevel)) 0.00 : 78cad9: 0f 85 d9 fe ff ff jne 78c9b8 : { : free((void *) gen->name); 0.00 : 78cadf: 49 8b 3c 24 mov (%r12),%rdi : free(var); 0.00 : 78cae3: 31 db xor %ebx,%ebx : */ : var->variable = (char **) (var + 1); : : if (!add_guc_variable((struct config_generic *) var, elevel)) : { : free((void *) gen->name); 0.00 : 78cae5: e8 36 cd cd ff callq 469820 : free(var); 0.00 : 78caea: 4c 89 e7 mov %r12,%rdi 0.00 : 78caed: e8 2e cd cd ff callq 469820 0.00 : 78caf2: e9 c1 fe ff ff jmpq 78c9b8 : gen = &var->gen; : : gen->name = guc_strdup(elevel, name); : if (gen->name == NULL) : { : free(var); 0.00 : 78caf7: 4c 89 e7 mov %r12,%rdi 0.00 : 78cafa: 31 db xor %ebx,%ebx 0.00 : 78cafc: e8 1f cd cd ff callq 469820 0.00 : 78cb01: e9 b2 fe ff ff jmpq 78c9b8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/superuser.c:71 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000796ab0 : : /* : * The specified role has Postgres superuser privileges : */ : bool : superuser_arg(Oid roleid) : { 0.00 : 796ab0: 55 push %rbp 0.00 : 796ab1: 48 89 e5 mov %rsp,%rbp 0.00 : 796ab4: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 796ab8: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 796abc: 48 83 ec 10 sub $0x10,%rsp : bool result; : HeapTuple rtup; : : /* Quick out for cache hit */ : if (OidIsValid(last_roleid) && last_roleid == roleid) 0.00 : 796ac0: 8b 05 da 3a 42 00 mov 0x423ada(%rip),%eax # bba5a0 : /* : * The specified role has Postgres superuser privileges : */ : bool : superuser_arg(Oid roleid) : { 0.00 : 796ac6: 41 89 fc mov %edi,%r12d : bool result; : HeapTuple rtup; : : /* Quick out for cache hit */ : if (OidIsValid(last_roleid) && last_roleid == roleid) 0.00 : 796ac9: 85 c0 test %eax,%eax 0.00 : 796acb: 74 04 je 796ad1 0.00 : 796acd: 39 f8 cmp %edi,%eax 0.00 : 796acf: 74 6f je 796b40 : return last_roleid_is_super; : : /* Special escape path in case you deleted all your users. */ : if (!IsUnderPostmaster && roleid == BOOTSTRAP_SUPERUSERID) 0.00 : 796ad1: 80 3d e5 35 42 00 00 cmpb $0x0,0x4235e5(%rip) # bba0bd 0.00 : 796ad8: 75 0b jne 796ae5 0.00 : 796ada: 41 83 fc 0a cmp $0xa,%r12d 0.00 : 796ade: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 796ae3: 74 49 je 796b2e : return true; : : /* OK, look up the information in pg_authid */ : rtup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleid)); 0.00 : 796ae5: 31 c9 xor %ecx,%ecx 0.00 : 796ae7: 45 31 c0 xor %r8d,%r8d 0.00 : 796aea: 31 d2 xor %edx,%edx 0.00 : 796aec: 44 89 e6 mov %r12d,%esi 0.00 : 796aef: bf 0b 00 00 00 mov $0xb,%edi : if (HeapTupleIsValid(rtup)) 0.00 : 796af4: 31 db xor %ebx,%ebx : /* Special escape path in case you deleted all your users. */ : if (!IsUnderPostmaster && roleid == BOOTSTRAP_SUPERUSERID) : return true; : : /* OK, look up the information in pg_authid */ : rtup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleid)); 0.00 : 796af6: e8 c5 b1 fd ff callq 771cc0 : if (HeapTupleIsValid(rtup)) 0.00 : 796afb: 48 85 c0 test %rax,%rax : /* Special escape path in case you deleted all your users. */ : if (!IsUnderPostmaster && roleid == BOOTSTRAP_SUPERUSERID) : return true; : : /* OK, look up the information in pg_authid */ : rtup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleid)); /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/superuser.c:71 100.00 : 796afe: 48 89 c1 mov %rax,%rcx : if (HeapTupleIsValid(rtup)) 0.00 : 796b01: 74 15 je 796b18 : { : result = ((Form_pg_authid) GETSTRUCT(rtup))->rolsuper; 0.00 : 796b03: 48 8b 50 10 mov 0x10(%rax),%rdx : ReleaseSysCache(rtup); 0.00 : 796b07: 48 89 cf mov %rcx,%rdi : : /* OK, look up the information in pg_authid */ : rtup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleid)); : if (HeapTupleIsValid(rtup)) : { : result = ((Form_pg_authid) GETSTRUCT(rtup))->rolsuper; 0.00 : 796b0a: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 796b0e: 0f b6 5c 02 40 movzbl 0x40(%rdx,%rax,1),%ebx : ReleaseSysCache(rtup); 0.00 : 796b13: e8 98 b1 fd ff callq 771cb0 : /* Report "not superuser" for invalid roleids */ : result = false; : } : : /* If first time through, set up callback for cache flushes */ : if (!roleid_callback_registered) 0.00 : 796b18: 80 3d 86 3a 42 00 00 cmpb $0x0,0x423a86(%rip) # bba5a5 0.00 : 796b1f: 74 2f je 796b50 : (Datum) 0); : roleid_callback_registered = true; : } : : /* Cache the result for next time */ : last_roleid = roleid; 0.00 : 796b21: 44 89 25 78 3a 42 00 mov %r12d,0x423a78(%rip) # bba5a0 : last_roleid_is_super = result; 0.00 : 796b28: 88 1d 76 3a 42 00 mov %bl,0x423a76(%rip) # bba5a4 : : return result; : } 0.00 : 796b2e: 89 d8 mov %ebx,%eax 0.00 : 796b30: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 796b35: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 796b39: c9 leaveq 0.00 : 796b3a: c3 retq 0.00 : 796b3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : bool result; : HeapTuple rtup; : : /* Quick out for cache hit */ : if (OidIsValid(last_roleid) && last_roleid == roleid) : return last_roleid_is_super; 0.00 : 796b40: 0f b6 1d 5d 3a 42 00 movzbl 0x423a5d(%rip),%ebx # bba5a4 : /* Cache the result for next time */ : last_roleid = roleid; : last_roleid_is_super = result; : : return result; : } 0.00 : 796b47: eb e5 jmp 796b2e 0.00 : 796b49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : : /* If first time through, set up callback for cache flushes */ : if (!roleid_callback_registered) : { : CacheRegisterSyscacheCallback(AUTHOID, 0.00 : 796b50: 31 d2 xor %edx,%edx 0.00 : 796b52: be a0 6a 79 00 mov $0x796aa0,%esi 0.00 : 796b57: bf 0b 00 00 00 mov $0xb,%edi 0.00 : 796b5c: e8 ff 05 fd ff callq 767160 : RoleidCallback, : (Datum) 0); : roleid_callback_registered = true; 0.00 : 796b61: c6 05 3d 3a 42 00 01 movb $0x1,0x423a3d(%rip) # bba5a5 0.00 : 796b68: eb b7 jmp 796b21 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:217 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798be0 : : * Delete all the descendants of the named context and release all : * space allocated therein. The named context itself is not touched. : */ : void : MemoryContextDeleteChildren(MemoryContext context) : { 0.00 : 798be0: 55 push %rbp 0.00 : 798be1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:217 100.00 : 798be4: 53 push %rbx 0.00 : 798be5: 48 89 fb mov %rdi,%rbx 0.00 : 798be8: 48 83 ec 08 sub $0x8,%rsp : : /* : * MemoryContextDelete will delink the child from me, so just iterate as : * long as there is a child. : */ : while (context->firstchild != NULL) 0.00 : 798bec: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 798bf0: 48 85 ff test %rdi,%rdi 0.00 : 798bf3: 74 11 je 798c06 0.00 : 798bf5: 0f 1f 00 nopl (%rax) : MemoryContextDelete(context->firstchild); 0.00 : 798bf8: e8 a3 ff ff ff callq 798ba0 : : /* : * MemoryContextDelete will delink the child from me, so just iterate as : * long as there is a child. : */ : while (context->firstchild != NULL) 0.00 : 798bfd: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 798c01: 48 85 ff test %rdi,%rdi 0.00 : 798c04: 75 f2 jne 798bf8 : MemoryContextDelete(context->firstchild); : } 0.00 : 798c06: 48 83 c4 08 add $0x8,%rsp 0.00 : 798c0a: 5b pop %rbx 0.00 : 798c0b: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:748 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a1f0 : : */ : void : ResourceOwnerRememberCatCacheRef(ResourceOwner owner, HeapTuple tuple) : { : Assert(owner->ncatrefs < owner->maxcatrefs); : owner->catrefs[owner->ncatrefs] = tuple; 0.00 : 79a1f0: 48 63 97 b0 00 00 00 movslq 0xb0(%rdi),%rdx 0.00 : 79a1f7: 48 8b 87 b8 00 00 00 mov 0xb8(%rdi),%rax : * : * Caller must have previously done ResourceOwnerEnlargeCatCacheRefs() : */ : void : ResourceOwnerRememberCatCacheRef(ResourceOwner owner, HeapTuple tuple) : { 0.00 : 79a1fe: 55 push %rbp 0.00 : 79a1ff: 48 89 e5 mov %rsp,%rbp : Assert(owner->ncatrefs < owner->maxcatrefs); : owner->catrefs[owner->ncatrefs] = tuple; 0.00 : 79a202: 48 89 34 d0 mov %rsi,(%rax,%rdx,8) : owner->ncatrefs++; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:748 100.00 : 79a206: 83 87 b0 00 00 00 01 addl $0x1,0xb0(%rdi) : } 0.00 : 79a20d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:1141 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a450 : : /* : * Forget that a snapshot reference is owned by a ResourceOwner : */ : void : ResourceOwnerForgetSnapshot(ResourceOwner owner, Snapshot snapshot) : { 0.00 : 79a450: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:1141 100.00 : 79a451: 48 89 e5 mov %rsp,%rbp 0.00 : 79a454: 41 54 push %r12 0.00 : 79a456: 49 89 fc mov %rdi,%r12 0.00 : 79a459: 53 push %rbx : Snapshot *snapshots = owner->snapshots; : int ns1 = owner->nsnapshots - 1; 0.00 : 79a45a: 8b 87 04 01 00 00 mov 0x104(%rdi),%eax : /* : * Forget that a snapshot reference is owned by a ResourceOwner : */ : void : ResourceOwnerForgetSnapshot(ResourceOwner owner, Snapshot snapshot) : { 0.00 : 79a460: 48 89 f3 mov %rsi,%rbx : Snapshot *snapshots = owner->snapshots; 0.00 : 79a463: 48 8b b7 08 01 00 00 mov 0x108(%rdi),%rsi : int ns1 = owner->nsnapshots - 1; : int i; : : for (i = ns1; i >= 0; i--) 0.00 : 79a46a: 89 c7 mov %eax,%edi 0.00 : 79a46c: 83 ef 01 sub $0x1,%edi 0.00 : 79a46f: 78 4f js 79a4c0 : { : if (snapshots[i] == snapshot) 0.00 : 79a471: 48 63 c7 movslq %edi,%rax : while (i < ns1) : { : snapshots[i] = snapshots[i + 1]; : i++; : } : owner->nsnapshots = ns1; 0.00 : 79a474: 89 fa mov %edi,%edx : int ns1 = owner->nsnapshots - 1; : int i; : : for (i = ns1; i >= 0; i--) : { : if (snapshots[i] == snapshot) 0.00 : 79a476: 48 39 1c c6 cmp %rbx,(%rsi,%rax,8) 0.00 : 79a47a: 74 2f je 79a4ab 0.00 : 79a47c: 0f 1f 40 00 nopl 0x0(%rax) : { : Snapshot *snapshots = owner->snapshots; : int ns1 = owner->nsnapshots - 1; : int i; : : for (i = ns1; i >= 0; i--) 0.00 : 79a480: 83 ea 01 sub $0x1,%edx 0.00 : 79a483: 78 3b js 79a4c0 : { : if (snapshots[i] == snapshot) 0.00 : 79a485: 48 63 ca movslq %edx,%rcx 0.00 : 79a488: 48 39 1c ce cmp %rbx,(%rsi,%rcx,8) 0.00 : 79a48c: 75 f2 jne 79a480 : { : while (i < ns1) 0.00 : 79a48e: 39 d7 cmp %edx,%edi 0.00 : 79a490: 7f 09 jg 79a49b 0.00 : 79a492: eb 17 jmp 79a4ab 0.00 : 79a494: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79a498: 48 63 ca movslq %edx,%rcx : { : snapshots[i] = snapshots[i + 1]; 0.00 : 79a49b: 48 8b 44 ce 08 mov 0x8(%rsi,%rcx,8),%rax : i++; 0.00 : 79a4a0: 83 c2 01 add $0x1,%edx : : for (i = ns1; i >= 0; i--) : { : if (snapshots[i] == snapshot) : { : while (i < ns1) 0.00 : 79a4a3: 39 d7 cmp %edx,%edi : { : snapshots[i] = snapshots[i + 1]; 0.00 : 79a4a5: 48 89 04 ce mov %rax,(%rsi,%rcx,8) : : for (i = ns1; i >= 0; i--) : { : if (snapshots[i] == snapshot) : { : while (i < ns1) 0.00 : 79a4a9: 7f ed jg 79a498 : return; : } : } : elog(ERROR, "snapshot reference %p is not owned by resource owner %s", : snapshot, owner->name); : } 0.00 : 79a4ab: 5b pop %rbx : while (i < ns1) : { : snapshots[i] = snapshots[i + 1]; : i++; : } : owner->nsnapshots = ns1; 0.00 : 79a4ac: 41 89 bc 24 04 01 00 mov %edi,0x104(%r12) 0.00 : 79a4b3: 00 : return; : } : } : elog(ERROR, "snapshot reference %p is not owned by resource owner %s", : snapshot, owner->name); : } 0.00 : 79a4b4: 41 5c pop %r12 0.00 : 79a4b6: c9 leaveq 0.00 : 79a4b7: c3 retq 0.00 : 79a4b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79a4bf: 00 : } : owner->nsnapshots = ns1; : return; : } : } : elog(ERROR, "snapshot reference %p is not owned by resource owner %s", 0.00 : 79a4c0: ba 80 26 8e 00 mov $0x8e2680,%edx 0.00 : 79a4c5: be 88 04 00 00 mov $0x488,%esi 0.00 : 79a4ca: bf 90 22 8e 00 mov $0x8e2290,%edi 0.00 : 79a4cf: e8 4c 0f fe ff callq 77b420 0.00 : 79a4d4: 49 8b 4c 24 18 mov 0x18(%r12),%rcx 0.00 : 79a4d9: 48 89 da mov %rbx,%rdx 0.00 : 79a4dc: be 20 23 8e 00 mov $0x8e2320,%esi 0.00 : 79a4e1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79a4e6: 31 c0 xor %eax,%eax 0.00 : 79a4e8: e8 43 0d fe ff callq 77b230 0.00 : 79a4ed: e8 de ef cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079ca30 : : } while (0); : : #define vecswap(a, b, n) if ((n) > 0) swapfunc((a), (b), (size_t)(n)) : static SortTuple * : med3_tuple(SortTuple *a, SortTuple *b, SortTuple *c, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { 0.00 : 79ca30: 55 push %rbp 0.00 : 79ca31: 48 89 e5 mov %rsp,%rbp 0.00 : 79ca34: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 79ca38: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 100.00 : 79ca3c: 48 89 d3 mov %rdx,%rbx 0.00 : 79ca3f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 79ca43: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 79ca47: 49 89 f4 mov %rsi,%r12 0.00 : 79ca4a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 79ca4e: 49 89 ce mov %rcx,%r14 0.00 : 79ca51: 48 83 ec 30 sub $0x30,%rsp 0.00 : 79ca55: 49 89 ff mov %rdi,%r15 0.00 : 79ca58: 4d 89 c5 mov %r8,%r13 : return cmp_tuple(a, b, state) < 0 ? 0.00 : 79ca5b: 4c 89 c2 mov %r8,%rdx 0.00 : 79ca5e: ff d1 callq *%rcx 0.00 : 79ca60: 85 c0 test %eax,%eax 0.00 : 79ca62: 78 2c js 79ca90 0.00 : 79ca64: 4c 89 ea mov %r13,%rdx 0.00 : 79ca67: 48 89 de mov %rbx,%rsi 0.00 : 79ca6a: 4c 89 e7 mov %r12,%rdi 0.00 : 79ca6d: 41 ff d6 callq *%r14 0.00 : 79ca70: 85 c0 test %eax,%eax 0.00 : 79ca72: 7e 44 jle 79cab8 0.00 : 79ca74: 4c 89 e3 mov %r12,%rbx : (cmp_tuple(b, c, state) < 0 ? b : : (cmp_tuple(a, c, state) < 0 ? c : a)) : : (cmp_tuple(b, c, state) > 0 ? b : : (cmp_tuple(a, c, state) < 0 ? a : c)); : } 0.00 : 79ca77: 48 89 d8 mov %rbx,%rax 0.00 : 79ca7a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 79ca7e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 79ca82: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 79ca86: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 79ca8a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 79ca8e: c9 leaveq 0.00 : 79ca8f: c3 retq : : #define vecswap(a, b, n) if ((n) > 0) swapfunc((a), (b), (size_t)(n)) : static SortTuple * : med3_tuple(SortTuple *a, SortTuple *b, SortTuple *c, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { : return cmp_tuple(a, b, state) < 0 ? 0.00 : 79ca90: 4c 89 ea mov %r13,%rdx 0.00 : 79ca93: 48 89 de mov %rbx,%rsi 0.00 : 79ca96: 4c 89 e7 mov %r12,%rdi 0.00 : 79ca99: 41 ff d6 callq *%r14 0.00 : 79ca9c: 85 c0 test %eax,%eax 0.00 : 79ca9e: 78 d4 js 79ca74 0.00 : 79caa0: 4c 89 ea mov %r13,%rdx 0.00 : 79caa3: 48 89 de mov %rbx,%rsi 0.00 : 79caa6: 4c 89 ff mov %r15,%rdi 0.00 : 79caa9: 41 ff d6 callq *%r14 0.00 : 79caac: 85 c0 test %eax,%eax 0.00 : 79caae: 78 c7 js 79ca77 0.00 : 79cab0: 4c 89 fb mov %r15,%rbx 0.00 : 79cab3: eb c2 jmp 79ca77 0.00 : 79cab5: 0f 1f 00 nopl (%rax) 0.00 : 79cab8: 4c 89 ea mov %r13,%rdx 0.00 : 79cabb: 48 89 de mov %rbx,%rsi 0.00 : 79cabe: 4c 89 ff mov %r15,%rdi 0.00 : 79cac1: 41 ff d6 callq *%r14 0.00 : 79cac4: 85 c0 test %eax,%eax 0.00 : 79cac6: 79 af jns 79ca77 0.00 : 79cac8: eb e6 jmp 79cab0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:291 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a7580 : : * catalog with the specified OID, even while historic snapshots are set : * up. : */ : Snapshot : GetNonHistoricCatalogSnapshot(Oid relid) : { 0.00 : 7a7580: 55 push %rbp 0.00 : 7a7581: 48 89 e5 mov %rsp,%rbp 0.00 : 7a7584: 53 push %rbx 0.00 : 7a7585: 89 fb mov %edi,%ebx 0.00 : 7a7587: 48 83 ec 08 sub $0x8,%rsp : * catcache invalidations will be sent when it is updated. For a a few : * key relations, snapshot invalidations are sent instead. If we're : * trying to scan a relation for which neither catcache nor snapshot : * invalidations are sent, we must refresh the snapshot every time. : */ : if (!CatalogSnapshotStale && !RelationInvalidatesSnapshotsOnly(relid) && 0.00 : 7a758b: 80 3d 06 b2 3c 00 00 cmpb $0x0,0x3cb206(%rip) # b72798 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:291 100.00 : 7a7592: 74 2c je 7a75c0 : CatalogSnapshotStale = true; : : if (CatalogSnapshotStale) : { : /* Get new snapshot. */ : CatalogSnapshot = GetSnapshotData(&CatalogSnapshotData); 0.00 : 7a7594: bf 20 27 b7 00 mov $0xb72720,%edi 0.00 : 7a7599: e8 22 a0 ed ff callq 6815c0 : : /* : * Mark new snapshost as valid. We must do this last, in case an : * ERROR occurs inside GetSnapshotData(). : */ : CatalogSnapshotStale = false; 0.00 : 7a759e: c6 05 f3 b1 3c 00 00 movb $0x0,0x3cb1f3(%rip) # b72798 : CatalogSnapshotStale = true; : : if (CatalogSnapshotStale) : { : /* Get new snapshot. */ : CatalogSnapshot = GetSnapshotData(&CatalogSnapshotData); 0.00 : 7a75a5: 48 89 05 a4 33 41 00 mov %rax,0x4133a4(%rip) # bba950 : : /* : * Mark new snapshost as valid. We must do this last, in case an : * ERROR occurs inside GetSnapshotData(). : */ : CatalogSnapshotStale = false; 0.00 : 7a75ac: 48 8b 05 9d 33 41 00 mov 0x41339d(%rip),%rax # bba950 : } : : return CatalogSnapshot; : } 0.00 : 7a75b3: 48 83 c4 08 add $0x8,%rsp 0.00 : 7a75b7: 5b pop %rbx 0.00 : 7a75b8: c9 leaveq 0.00 : 7a75b9: c3 retq 0.00 : 7a75ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * catcache invalidations will be sent when it is updated. For a a few : * key relations, snapshot invalidations are sent instead. If we're : * trying to scan a relation for which neither catcache nor snapshot : * invalidations are sent, we must refresh the snapshot every time. : */ : if (!CatalogSnapshotStale && !RelationInvalidatesSnapshotsOnly(relid) && 0.00 : 7a75c0: e8 bb a2 fc ff callq 771880 0.00 : 7a75c5: 84 c0 test %al,%al 0.00 : 7a75c7: 74 0f je 7a75d8 : !RelationHasSysCache(relid)) : CatalogSnapshotStale = true; : : if (CatalogSnapshotStale) 0.00 : 7a75c9: 80 3d c8 b1 3c 00 00 cmpb $0x0,0x3cb1c8(%rip) # b72798 0.00 : 7a75d0: 74 da je 7a75ac 0.00 : 7a75d2: eb c0 jmp 7a7594 0.00 : 7a75d4: 0f 1f 40 00 nopl 0x0(%rax) : * catcache invalidations will be sent when it is updated. For a a few : * key relations, snapshot invalidations are sent instead. If we're : * trying to scan a relation for which neither catcache nor snapshot : * invalidations are sent, we must refresh the snapshot every time. : */ : if (!CatalogSnapshotStale && !RelationInvalidatesSnapshotsOnly(relid) && 0.00 : 7a75d8: 89 df mov %ebx,%edi 0.00 : 7a75da: e8 11 a3 fc ff callq 7718f0 0.00 : 7a75df: 84 c0 test %al,%al 0.00 : 7a75e1: 75 e6 jne 7a75c9 : !RelationHasSysCache(relid)) : CatalogSnapshotStale = true; 0.00 : 7a75e3: c6 05 ae b1 3c 00 01 movb $0x1,0x3cb1ae(%rip) # b72798 0.00 : 7a75ea: eb a8 jmp 7a7594 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/common/psprintf.c:47 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007ae4e0 : : * in the backend, or printf-to-stderr-and-exit() in frontend builds. : * One should therefore think twice about using this in libpq. : */ : char * : psprintf(const char *fmt,...) : { /home/Computational/mark/src/postgres-andres/src/common/psprintf.c:47 100.00 : 7ae4e0: 55 push %rbp 0.00 : 7ae4e1: 48 89 e5 mov %rsp,%rbp 0.00 : 7ae4e4: 41 57 push %r15 0.00 : 7ae4e6: 49 89 ff mov %rdi,%r15 0.00 : 7ae4e9: 41 56 push %r14 0.00 : 7ae4eb: 4c 8d b5 00 ff ff ff lea -0x100(%rbp),%r14 0.00 : 7ae4f2: 41 55 push %r13 0.00 : 7ae4f4: 41 54 push %r12 0.00 : 7ae4f6: 41 bc 80 00 00 00 mov $0x80,%r12d 0.00 : 7ae4fc: 53 push %rbx 0.00 : 7ae4fd: 48 81 ec d8 00 00 00 sub $0xd8,%rsp 0.00 : 7ae504: 48 89 95 30 ff ff ff mov %rdx,-0xd0(%rbp) 0.00 : 7ae50b: 0f b6 d0 movzbl %al,%edx 0.00 : 7ae50e: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : 7ae515: 00 0.00 : 7ae516: ba 60 e5 7a 00 mov $0x7ae560,%edx 0.00 : 7ae51b: 48 89 b5 28 ff ff ff mov %rsi,-0xd8(%rbp) 0.00 : 7ae522: 48 89 8d 38 ff ff ff mov %rcx,-0xc8(%rbp) 0.00 : 7ae529: 4c 89 85 40 ff ff ff mov %r8,-0xc0(%rbp) 0.00 : 7ae530: 48 29 c2 sub %rax,%rdx 0.00 : 7ae533: 48 8d 45 cf lea -0x31(%rbp),%rax 0.00 : 7ae537: 4c 89 8d 48 ff ff ff mov %r9,-0xb8(%rbp) 0.00 : 7ae53e: ff e2 jmpq *%rdx 0.00 : 7ae540: 0f 29 78 f1 movaps %xmm7,-0xf(%rax) 0.00 : 7ae544: 0f 29 70 e1 movaps %xmm6,-0x1f(%rax) 0.00 : 7ae548: 0f 29 68 d1 movaps %xmm5,-0x2f(%rax) 0.00 : 7ae54c: 0f 29 60 c1 movaps %xmm4,-0x3f(%rax) 0.00 : 7ae550: 0f 29 58 b1 movaps %xmm3,-0x4f(%rax) 0.00 : 7ae554: 0f 29 50 a1 movaps %xmm2,-0x5f(%rax) 0.00 : 7ae558: 0f 29 48 91 movaps %xmm1,-0x6f(%rax) 0.00 : 7ae55c: 0f 29 40 81 movaps %xmm0,-0x7f(%rax) 0.00 : 7ae560: eb 11 jmp 7ae573 0.00 : 7ae562: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (newlen < len) : return result; /* success */ : : /* Release buffer and loop around to try again with larger len. */ : pfree(result); 0.00 : 7ae568: 4c 89 ef mov %r13,%rdi 0.00 : 7ae56b: 49 89 dc mov %rbx,%r12 0.00 : 7ae56e: e8 0d a6 fe ff callq 798b80 : : /* : * Allocate result buffer. Note that in frontend this maps to malloc : * with exit-on-error. : */ : result = (char *) palloc(len); 0.00 : 7ae573: 4c 89 e7 mov %r12,%rdi 0.00 : 7ae576: e8 d5 a7 fe ff callq 798d50 0.00 : 7ae57b: 49 89 c5 mov %rax,%r13 : : /* Try to format the data. */ : va_start(args, fmt); 0.00 : 7ae57e: 48 8d 45 10 lea 0x10(%rbp),%rax 0.00 : 7ae582: 41 c7 06 08 00 00 00 movl $0x8,(%r14) 0.00 : 7ae589: 41 c7 46 04 30 00 00 movl $0x30,0x4(%r14) 0.00 : 7ae590: 00 : newlen = pvsnprintf(result, len, fmt, args); 0.00 : 7ae591: 4c 89 f1 mov %r14,%rcx 0.00 : 7ae594: 4c 89 fa mov %r15,%rdx : * with exit-on-error. : */ : result = (char *) palloc(len); : : /* Try to format the data. */ : va_start(args, fmt); 0.00 : 7ae597: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 7ae59b: 48 8d 85 20 ff ff ff lea -0xe0(%rbp),%rax : newlen = pvsnprintf(result, len, fmt, args); 0.00 : 7ae5a2: 4c 89 e6 mov %r12,%rsi 0.00 : 7ae5a5: 4c 89 ef mov %r13,%rdi : * with exit-on-error. : */ : result = (char *) palloc(len); : : /* Try to format the data. */ : va_start(args, fmt); 0.00 : 7ae5a8: 49 89 46 10 mov %rax,0x10(%r14) : newlen = pvsnprintf(result, len, fmt, args); 0.00 : 7ae5ac: e8 ff fd ff ff callq 7ae3b0 : va_end(args); : : if (newlen < len) 0.00 : 7ae5b1: 49 39 c4 cmp %rax,%r12 : */ : result = (char *) palloc(len); : : /* Try to format the data. */ : va_start(args, fmt); : newlen = pvsnprintf(result, len, fmt, args); 0.00 : 7ae5b4: 48 89 c3 mov %rax,%rbx : va_end(args); : : if (newlen < len) 0.00 : 7ae5b7: 76 af jbe 7ae568 : : /* Release buffer and loop around to try again with larger len. */ : pfree(result); : len = newlen; : } : } 0.00 : 7ae5b9: 48 81 c4 d8 00 00 00 add $0xd8,%rsp 0.00 : 7ae5c0: 4c 89 e8 mov %r13,%rax 0.00 : 7ae5c3: 5b pop %rbx 0.00 : 7ae5c4: 41 5c pop %r12 0.00 : 7ae5c6: 41 5d pop %r13 0.00 : 7ae5c8: 41 5e pop %r14 0.00 : 7ae5ca: 41 5f pop %r15 0.00 : 7ae5cc: c9 leaveq Sorted summary for file /lib64/libreadline.so.5.2 ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libreadline.so.5.2 ------------------------------------------------ : : : : Disassembly of section .init: : : 00000000000148f0 <_init>: 0.00 : 148f0: 48 83 ec 08 sub $0x8,%rsp 0.00 : 148f4: e8 07 16 00 00 callq 15f00 <__mbrlen@plt+0x10> 0.00 : 148f9: e8 a2 16 00 00 callq 15fa0 <__mbrlen@plt+0xb0> 0.00 : 148fe: e8 4d e1 01 00 callq 32a50 0.00 : 14903: 48 83 c4 08 add $0x8,%rsp 0.00 : 14907: c3 retq : : Disassembly of section .plt: : : 0000000000014910 <_rl_clear_screen@plt-0x10>: ??:0 50.00 : 14910: ff 35 f2 56 22 00 pushq 0x2256f2(%rip) # 23a008 <_fini+0x207580> 50.00 : 14916: ff 25 f4 56 22 00 jmpq *0x2256f4(%rip) # 23a010 <_fini+0x207588> 0.00 : 1491c: 0f 1f 40 00 nopl 0x0(%rax) : : 0000000000014920 <_rl_clear_screen@plt>: 0.00 : 14920: ff 25 f2 56 22 00 jmpq *0x2256f2(%rip) # 23a018 <_fini+0x207590> 0.00 : 14926: 68 00 00 00 00 pushq $0x0 0.00 : 1492b: e9 e0 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014930 <_rl_insert_typein@plt>: 0.00 : 14930: ff 25 ea 56 22 00 jmpq *0x2256ea(%rip) # 23a020 <_fini+0x207598> 0.00 : 14936: 68 01 00 00 00 pushq $0x1 0.00 : 1493b: e9 d0 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014940 : 0.00 : 14940: ff 25 e2 56 22 00 jmpq *0x2256e2(%rip) # 23a028 <_fini+0x2075a0> 0.00 : 14946: 68 02 00 00 00 pushq $0x2 0.00 : 1494b: e9 c0 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014950 <_rl_find_completion_word@plt>: 0.00 : 14950: ff 25 da 56 22 00 jmpq *0x2256da(%rip) # 23a030 <_fini+0x2075a8> 0.00 : 14956: 68 03 00 00 00 pushq $0x3 0.00 : 1495b: e9 b0 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014960 : 0.00 : 14960: ff 25 d2 56 22 00 jmpq *0x2256d2(%rip) # 23a038 <_fini+0x2075b0> 0.00 : 14966: 68 04 00 00 00 pushq $0x4 0.00 : 1496b: e9 a0 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014970 <_rl_disable_tty_signals@plt>: 0.00 : 14970: ff 25 ca 56 22 00 jmpq *0x2256ca(%rip) # 23a040 <_fini+0x2075b8> 0.00 : 14976: 68 05 00 00 00 pushq $0x5 0.00 : 1497b: e9 90 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014980 : 0.00 : 14980: ff 25 c2 56 22 00 jmpq *0x2256c2(%rip) # 23a048 <_fini+0x2075c0> 0.00 : 14986: 68 06 00 00 00 pushq $0x6 0.00 : 1498b: e9 80 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014990 <_rl_nsearch_callback@plt>: 0.00 : 14990: ff 25 ba 56 22 00 jmpq *0x2256ba(%rip) # 23a050 <_fini+0x2075c8> 0.00 : 14996: 68 07 00 00 00 pushq $0x7 0.00 : 1499b: e9 70 ff ff ff jmpq 14910 <_init+0x20> : : 00000000000149a0 : 0.00 : 149a0: ff 25 b2 56 22 00 jmpq *0x2256b2(%rip) # 23a058 <_fini+0x2075d0> 0.00 : 149a6: 68 08 00 00 00 pushq $0x8 0.00 : 149ab: e9 60 ff ff ff jmpq 14910 <_init+0x20> : : 00000000000149b0 <_rl_init_line_state@plt>: 0.00 : 149b0: ff 25 aa 56 22 00 jmpq *0x2256aa(%rip) # 23a060 <_fini+0x2075d8> 0.00 : 149b6: 68 09 00 00 00 pushq $0x9 0.00 : 149bb: e9 50 ff ff ff jmpq 14910 <_init+0x20> : : 00000000000149c0 : 0.00 : 149c0: ff 25 a2 56 22 00 jmpq *0x2256a2(%rip) # 23a068 <_fini+0x2075e0> 0.00 : 149c6: 68 0a 00 00 00 pushq $0xa 0.00 : 149cb: e9 40 ff ff ff jmpq 14910 <_init+0x20> : : 00000000000149d0 : 0.00 : 149d0: ff 25 9a 56 22 00 jmpq *0x22569a(%rip) # 23a070 <_fini+0x2075e8> 0.00 : 149d6: 68 0b 00 00 00 pushq $0xb 0.00 : 149db: e9 30 ff ff ff jmpq 14910 <_init+0x20> : : 00000000000149e0 : 0.00 : 149e0: ff 25 92 56 22 00 jmpq *0x225692(%rip) # 23a078 <_fini+0x2075f0> 0.00 : 149e6: 68 0c 00 00 00 pushq $0xc 0.00 : 149eb: e9 20 ff ff ff jmpq 14910 <_init+0x20> : : 00000000000149f0 <_rl_erase_entire_line@plt>: 0.00 : 149f0: ff 25 8a 56 22 00 jmpq *0x22568a(%rip) # 23a080 <_fini+0x2075f8> 0.00 : 149f6: 68 0d 00 00 00 pushq $0xd 0.00 : 149fb: e9 10 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014a00 : 0.00 : 14a00: ff 25 82 56 22 00 jmpq *0x225682(%rip) # 23a088 <_fini+0x207600> 0.00 : 14a06: 68 0e 00 00 00 pushq $0xe 0.00 : 14a0b: e9 00 ff ff ff jmpq 14910 <_init+0x20> : : 0000000000014a10 <_rl_keyseq_cxt_alloc@plt>: 0.00 : 14a10: ff 25 7a 56 22 00 jmpq *0x22567a(%rip) # 23a090 <_fini+0x207608> 0.00 : 14a16: 68 0f 00 00 00 pushq $0xf 0.00 : 14a1b: e9 f0 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a20 : 0.00 : 14a20: ff 25 72 56 22 00 jmpq *0x225672(%rip) # 23a098 <_fini+0x207610> 0.00 : 14a26: 68 10 00 00 00 pushq $0x10 0.00 : 14a2b: e9 e0 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a30 : 0.00 : 14a30: ff 25 6a 56 22 00 jmpq *0x22566a(%rip) # 23a0a0 <_fini+0x207618> 0.00 : 14a36: 68 11 00 00 00 pushq $0x11 0.00 : 14a3b: e9 d0 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a40 : 0.00 : 14a40: ff 25 62 56 22 00 jmpq *0x225662(%rip) # 23a0a8 <_fini+0x207620> 0.00 : 14a46: 68 12 00 00 00 pushq $0x12 0.00 : 14a4b: e9 c0 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a50 <_rl_input_queued@plt>: 0.00 : 14a50: ff 25 5a 56 22 00 jmpq *0x22565a(%rip) # 23a0b0 <_fini+0x207628> 0.00 : 14a56: 68 13 00 00 00 pushq $0x13 0.00 : 14a5b: e9 b0 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a60 : 0.00 : 14a60: ff 25 52 56 22 00 jmpq *0x225652(%rip) # 23a0b8 <_fini+0x207630> 0.00 : 14a66: 68 14 00 00 00 pushq $0x14 0.00 : 14a6b: e9 a0 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a70 <_rl_strip_prompt@plt>: 0.00 : 14a70: ff 25 4a 56 22 00 jmpq *0x22564a(%rip) # 23a0c0 <_fini+0x207638> 0.00 : 14a76: 68 15 00 00 00 pushq $0x15 0.00 : 14a7b: e9 90 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a80 : 0.00 : 14a80: ff 25 42 56 22 00 jmpq *0x225642(%rip) # 23a0c8 <_fini+0x207640> 0.00 : 14a86: 68 16 00 00 00 pushq $0x16 0.00 : 14a8b: e9 80 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014a90 : 0.00 : 14a90: ff 25 3a 56 22 00 jmpq *0x22563a(%rip) # 23a0d0 <_fini+0x207648> 0.00 : 14a96: 68 17 00 00 00 pushq $0x17 0.00 : 14a9b: e9 70 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014aa0 : 0.00 : 14aa0: ff 25 32 56 22 00 jmpq *0x225632(%rip) # 23a0d8 <_fini+0x207650> 0.00 : 14aa6: 68 18 00 00 00 pushq $0x18 0.00 : 14aab: e9 60 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014ab0 : 0.00 : 14ab0: ff 25 2a 56 22 00 jmpq *0x22562a(%rip) # 23a0e0 <_fini+0x207658> 0.00 : 14ab6: 68 19 00 00 00 pushq $0x19 0.00 : 14abb: e9 50 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014ac0 : 0.00 : 14ac0: ff 25 22 56 22 00 jmpq *0x225622(%rip) # 23a0e8 <_fini+0x207660> 0.00 : 14ac6: 68 1a 00 00 00 pushq $0x1a 0.00 : 14acb: e9 40 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014ad0 <_rl_get_screen_size@plt>: 0.00 : 14ad0: ff 25 1a 56 22 00 jmpq *0x22561a(%rip) # 23a0f0 <_fini+0x207668> 0.00 : 14ad6: 68 1b 00 00 00 pushq $0x1b 0.00 : 14adb: e9 30 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014ae0 <_rl_enable_meta_key@plt>: 0.00 : 14ae0: ff 25 12 56 22 00 jmpq *0x225612(%rip) # 23a0f8 <_fini+0x207670> 0.00 : 14ae6: 68 1c 00 00 00 pushq $0x1c 0.00 : 14aeb: e9 20 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014af0 : 0.00 : 14af0: ff 25 0a 56 22 00 jmpq *0x22560a(%rip) # 23a100 <_fini+0x207678> 0.00 : 14af6: 68 1d 00 00 00 pushq $0x1d 0.00 : 14afb: e9 10 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014b00 <_rl_set_mark_at_pos@plt>: 0.00 : 14b00: ff 25 02 56 22 00 jmpq *0x225602(%rip) # 23a108 <_fini+0x207680> 0.00 : 14b06: 68 1e 00 00 00 pushq $0x1e 0.00 : 14b0b: e9 00 fe ff ff jmpq 14910 <_init+0x20> : : 0000000000014b10 : 0.00 : 14b10: ff 25 fa 55 22 00 jmpq *0x2255fa(%rip) # 23a110 <_fini+0x207688> 0.00 : 14b16: 68 1f 00 00 00 pushq $0x1f 0.00 : 14b1b: e9 f0 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b20 : 0.00 : 14b20: ff 25 f2 55 22 00 jmpq *0x2255f2(%rip) # 23a118 <_fini+0x207690> 0.00 : 14b26: 68 20 00 00 00 pushq $0x20 0.00 : 14b2b: e9 e0 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b30 : 0.00 : 14b30: ff 25 ea 55 22 00 jmpq *0x2255ea(%rip) # 23a120 <_fini+0x207698> 0.00 : 14b36: 68 21 00 00 00 pushq $0x21 0.00 : 14b3b: e9 d0 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b40 <__longjmp_chk@plt>: 0.00 : 14b40: ff 25 e2 55 22 00 jmpq *0x2255e2(%rip) # 23a128 <_fini+0x2076a0> 0.00 : 14b46: 68 22 00 00 00 pushq $0x22 0.00 : 14b4b: e9 c0 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b50 : 0.00 : 14b50: ff 25 da 55 22 00 jmpq *0x2255da(%rip) # 23a130 <_fini+0x2076a8> 0.00 : 14b56: 68 23 00 00 00 pushq $0x23 0.00 : 14b5b: e9 b0 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b60 : 0.00 : 14b60: ff 25 d2 55 22 00 jmpq *0x2255d2(%rip) # 23a138 <_fini+0x2076b0> 0.00 : 14b66: 68 24 00 00 00 pushq $0x24 0.00 : 14b6b: e9 a0 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b70 : 0.00 : 14b70: ff 25 ca 55 22 00 jmpq *0x2255ca(%rip) # 23a140 <_fini+0x2076b8> 0.00 : 14b76: 68 25 00 00 00 pushq $0x25 0.00 : 14b7b: e9 90 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b80 : 0.00 : 14b80: ff 25 c2 55 22 00 jmpq *0x2255c2(%rip) # 23a148 <_fini+0x2076c0> 0.00 : 14b86: 68 26 00 00 00 pushq $0x26 0.00 : 14b8b: e9 80 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014b90 : 0.00 : 14b90: ff 25 ba 55 22 00 jmpq *0x2255ba(%rip) # 23a150 <_fini+0x2076c8> 0.00 : 14b96: 68 27 00 00 00 pushq $0x27 0.00 : 14b9b: e9 70 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014ba0 <_rl_vi_initialize_line@plt>: 0.00 : 14ba0: ff 25 b2 55 22 00 jmpq *0x2255b2(%rip) # 23a158 <_fini+0x2076d0> 0.00 : 14ba6: 68 28 00 00 00 pushq $0x28 0.00 : 14bab: e9 60 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014bb0 : 0.00 : 14bb0: ff 25 aa 55 22 00 jmpq *0x2255aa(%rip) # 23a160 <_fini+0x2076d8> 0.00 : 14bb6: 68 29 00 00 00 pushq $0x29 0.00 : 14bbb: e9 50 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014bc0 : 0.00 : 14bc0: ff 25 a2 55 22 00 jmpq *0x2255a2(%rip) # 23a168 <_fini+0x2076e0> 0.00 : 14bc6: 68 2a 00 00 00 pushq $0x2a 0.00 : 14bcb: e9 40 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014bd0 : 0.00 : 14bd0: ff 25 9a 55 22 00 jmpq *0x22559a(%rip) # 23a170 <_fini+0x2076e8> 0.00 : 14bd6: 68 2b 00 00 00 pushq $0x2b 0.00 : 14bdb: e9 30 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014be0 <_rl_init_terminal_io@plt>: 0.00 : 14be0: ff 25 92 55 22 00 jmpq *0x225592(%rip) # 23a178 <_fini+0x2076f0> 0.00 : 14be6: 68 2c 00 00 00 pushq $0x2c 0.00 : 14beb: e9 20 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014bf0 : 0.00 : 14bf0: ff 25 8a 55 22 00 jmpq *0x22558a(%rip) # 23a180 <_fini+0x2076f8> 0.00 : 14bf6: 68 2d 00 00 00 pushq $0x2d 0.00 : 14bfb: e9 10 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014c00 : 0.00 : 14c00: ff 25 82 55 22 00 jmpq *0x225582(%rip) # 23a188 <_fini+0x207700> 0.00 : 14c06: 68 2e 00 00 00 pushq $0x2e 0.00 : 14c0b: e9 00 fd ff ff jmpq 14910 <_init+0x20> : : 0000000000014c10 <_rl_copy_undo_entry@plt>: 0.00 : 14c10: ff 25 7a 55 22 00 jmpq *0x22557a(%rip) # 23a190 <_fini+0x207708> 0.00 : 14c16: 68 2f 00 00 00 pushq $0x2f 0.00 : 14c1b: e9 f0 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c20 : 0.00 : 14c20: ff 25 72 55 22 00 jmpq *0x225572(%rip) # 23a198 <_fini+0x207710> 0.00 : 14c26: 68 30 00 00 00 pushq $0x30 0.00 : 14c2b: e9 e0 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c30 : 0.00 : 14c30: ff 25 6a 55 22 00 jmpq *0x22556a(%rip) # 23a1a0 <_fini+0x207718> 0.00 : 14c36: 68 31 00 00 00 pushq $0x31 0.00 : 14c3b: e9 d0 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c40 <_rl_control_keypad@plt>: 0.00 : 14c40: ff 25 62 55 22 00 jmpq *0x225562(%rip) # 23a1a8 <_fini+0x207720> 0.00 : 14c46: 68 32 00 00 00 pushq $0x32 0.00 : 14c4b: e9 c0 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c50 : 0.00 : 14c50: ff 25 5a 55 22 00 jmpq *0x22555a(%rip) # 23a1b0 <_fini+0x207728> 0.00 : 14c56: 68 33 00 00 00 pushq $0x33 0.00 : 14c5b: e9 b0 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c60 : 0.00 : 14c60: ff 25 52 55 22 00 jmpq *0x225552(%rip) # 23a1b8 <_fini+0x207730> 0.00 : 14c66: 68 34 00 00 00 pushq $0x34 0.00 : 14c6b: e9 a0 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c70 <_rl_free_saved_history_line@plt>: 0.00 : 14c70: ff 25 4a 55 22 00 jmpq *0x22554a(%rip) # 23a1c0 <_fini+0x207738> 0.00 : 14c76: 68 35 00 00 00 pushq $0x35 0.00 : 14c7b: e9 90 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c80 <__fprintf_chk@plt>: 0.00 : 14c80: ff 25 42 55 22 00 jmpq *0x225542(%rip) # 23a1c8 <_fini+0x207740> 0.00 : 14c86: 68 36 00 00 00 pushq $0x36 0.00 : 14c8b: e9 80 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014c90 : 0.00 : 14c90: ff 25 3a 55 22 00 jmpq *0x22553a(%rip) # 23a1d0 <_fini+0x207748> 0.00 : 14c96: 68 37 00 00 00 pushq $0x37 0.00 : 14c9b: e9 70 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014ca0 <_rl_adjust_point@plt>: 0.00 : 14ca0: ff 25 32 55 22 00 jmpq *0x225532(%rip) # 23a1d8 <_fini+0x207750> 0.00 : 14ca6: 68 38 00 00 00 pushq $0x38 0.00 : 14cab: e9 60 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014cb0 : 0.00 : 14cb0: ff 25 2a 55 22 00 jmpq *0x22552a(%rip) # 23a1e0 <_fini+0x207758> 0.00 : 14cb6: 68 39 00 00 00 pushq $0x39 0.00 : 14cbb: e9 50 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014cc0 : 0.00 : 14cc0: ff 25 22 55 22 00 jmpq *0x225522(%rip) # 23a1e8 <_fini+0x207760> 0.00 : 14cc6: 68 3a 00 00 00 pushq $0x3a 0.00 : 14ccb: e9 40 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014cd0 : 0.00 : 14cd0: ff 25 1a 55 22 00 jmpq *0x22551a(%rip) # 23a1f0 <_fini+0x207768> 0.00 : 14cd6: 68 3b 00 00 00 pushq $0x3b 0.00 : 14cdb: e9 30 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014ce0 : 0.00 : 14ce0: ff 25 12 55 22 00 jmpq *0x225512(%rip) # 23a1f8 <_fini+0x207770> 0.00 : 14ce6: 68 3c 00 00 00 pushq $0x3c 0.00 : 14ceb: e9 20 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014cf0 <_rl_set_insert_mode@plt>: 0.00 : 14cf0: ff 25 0a 55 22 00 jmpq *0x22550a(%rip) # 23a200 <_fini+0x207778> 0.00 : 14cf6: 68 3d 00 00 00 pushq $0x3d 0.00 : 14cfb: e9 10 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014d00 <_rl_output_some_chars@plt>: 0.00 : 14d00: ff 25 02 55 22 00 jmpq *0x225502(%rip) # 23a208 <_fini+0x207780> 0.00 : 14d06: 68 3e 00 00 00 pushq $0x3e 0.00 : 14d0b: e9 00 fc ff ff jmpq 14910 <_init+0x20> : : 0000000000014d10 <_rl_keyseq_chain_dispose@plt>: 0.00 : 14d10: ff 25 fa 54 22 00 jmpq *0x2254fa(%rip) # 23a210 <_fini+0x207788> 0.00 : 14d16: 68 3f 00 00 00 pushq $0x3f 0.00 : 14d1b: e9 f0 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d20 : 0.00 : 14d20: ff 25 f2 54 22 00 jmpq *0x2254f2(%rip) # 23a218 <_fini+0x207790> 0.00 : 14d26: 68 40 00 00 00 pushq $0x40 0.00 : 14d2b: e9 e0 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d30 : 0.00 : 14d30: ff 25 ea 54 22 00 jmpq *0x2254ea(%rip) # 23a220 <_fini+0x207798> 0.00 : 14d36: 68 41 00 00 00 pushq $0x41 0.00 : 14d3b: e9 d0 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d40 : 0.00 : 14d40: ff 25 e2 54 22 00 jmpq *0x2254e2(%rip) # 23a228 <_fini+0x2077a0> 0.00 : 14d46: 68 42 00 00 00 pushq $0x42 0.00 : 14d4b: e9 c0 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d50 : 0.00 : 14d50: ff 25 da 54 22 00 jmpq *0x2254da(%rip) # 23a230 <_fini+0x2077a8> 0.00 : 14d56: 68 43 00 00 00 pushq $0x43 0.00 : 14d5b: e9 b0 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d60 <_rl_arg_overflow@plt>: 0.00 : 14d60: ff 25 d2 54 22 00 jmpq *0x2254d2(%rip) # 23a238 <_fini+0x2077b0> 0.00 : 14d66: 68 44 00 00 00 pushq $0x44 0.00 : 14d6b: e9 a0 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d70 : 0.00 : 14d70: ff 25 ca 54 22 00 jmpq *0x2254ca(%rip) # 23a240 <_fini+0x2077b8> 0.00 : 14d76: 68 45 00 00 00 pushq $0x45 0.00 : 14d7b: e9 90 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d80 : 0.00 : 14d80: ff 25 c2 54 22 00 jmpq *0x2254c2(%rip) # 23a248 <_fini+0x2077c0> 0.00 : 14d86: 68 46 00 00 00 pushq $0x46 0.00 : 14d8b: e9 80 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014d90 : 0.00 : 14d90: ff 25 ba 54 22 00 jmpq *0x2254ba(%rip) # 23a250 <_fini+0x2077c8> 0.00 : 14d96: 68 47 00 00 00 pushq $0x47 0.00 : 14d9b: e9 70 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014da0 : 0.00 : 14da0: ff 25 b2 54 22 00 jmpq *0x2254b2(%rip) # 23a258 <_fini+0x2077d0> 0.00 : 14da6: 68 48 00 00 00 pushq $0x48 0.00 : 14dab: e9 60 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014db0 : 0.00 : 14db0: ff 25 aa 54 22 00 jmpq *0x2254aa(%rip) # 23a260 <_fini+0x2077d8> 0.00 : 14db6: 68 49 00 00 00 pushq $0x49 0.00 : 14dbb: e9 50 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014dc0 : 0.00 : 14dc0: ff 25 a2 54 22 00 jmpq *0x2254a2(%rip) # 23a268 <_fini+0x2077e0> 0.00 : 14dc6: 68 4a 00 00 00 pushq $0x4a 0.00 : 14dcb: e9 40 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014dd0 <_rl_isearch_dispatch@plt>: 0.00 : 14dd0: ff 25 9a 54 22 00 jmpq *0x22549a(%rip) # 23a270 <_fini+0x2077e8> 0.00 : 14dd6: 68 4b 00 00 00 pushq $0x4b 0.00 : 14ddb: e9 30 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014de0 : 0.00 : 14de0: ff 25 92 54 22 00 jmpq *0x225492(%rip) # 23a278 <_fini+0x2077f0> 0.00 : 14de6: 68 4c 00 00 00 pushq $0x4c 0.00 : 14deb: e9 20 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014df0 : 0.00 : 14df0: ff 25 8a 54 22 00 jmpq *0x22548a(%rip) # 23a280 <_fini+0x2077f8> 0.00 : 14df6: 68 4d 00 00 00 pushq $0x4d 0.00 : 14dfb: e9 10 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014e00 <_rl_push_executing_macro@plt>: 0.00 : 14e00: ff 25 82 54 22 00 jmpq *0x225482(%rip) # 23a288 <_fini+0x207800> 0.00 : 14e06: 68 4e 00 00 00 pushq $0x4e 0.00 : 14e0b: e9 00 fb ff ff jmpq 14910 <_init+0x20> : : 0000000000014e10 <_rl_dispatch_subseq@plt>: 0.00 : 14e10: ff 25 7a 54 22 00 jmpq *0x22547a(%rip) # 23a290 <_fini+0x207808> 0.00 : 14e16: 68 4f 00 00 00 pushq $0x4f 0.00 : 14e1b: e9 f0 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e20 : 0.00 : 14e20: ff 25 72 54 22 00 jmpq *0x225472(%rip) # 23a298 <_fini+0x207810> 0.00 : 14e26: 68 50 00 00 00 pushq $0x50 0.00 : 14e2b: e9 e0 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e30 <_rl_input_available@plt>: 0.00 : 14e30: ff 25 6a 54 22 00 jmpq *0x22546a(%rip) # 23a2a0 <_fini+0x207818> 0.00 : 14e36: 68 51 00 00 00 pushq $0x51 0.00 : 14e3b: e9 d0 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e40 : 0.00 : 14e40: ff 25 62 54 22 00 jmpq *0x225462(%rip) # 23a2a8 <_fini+0x207820> 0.00 : 14e46: 68 52 00 00 00 pushq $0x52 0.00 : 14e4b: e9 c0 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e50 : 0.00 : 14e50: ff 25 5a 54 22 00 jmpq *0x22545a(%rip) # 23a2b0 <_fini+0x207828> 0.00 : 14e56: 68 53 00 00 00 pushq $0x53 0.00 : 14e5b: e9 b0 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e60 : 0.00 : 14e60: ff 25 52 54 22 00 jmpq *0x225452(%rip) # 23a2b8 <_fini+0x207830> 0.00 : 14e66: 68 54 00 00 00 pushq $0x54 0.00 : 14e6b: e9 a0 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e70 <_rl_char_value@plt>: 0.00 : 14e70: ff 25 4a 54 22 00 jmpq *0x22544a(%rip) # 23a2c0 <_fini+0x207838> 0.00 : 14e76: 68 55 00 00 00 pushq $0x55 0.00 : 14e7b: e9 90 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e80 : 0.00 : 14e80: ff 25 42 54 22 00 jmpq *0x225442(%rip) # 23a2c8 <_fini+0x207840> 0.00 : 14e86: 68 56 00 00 00 pushq $0x56 0.00 : 14e8b: e9 80 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014e90 : 0.00 : 14e90: ff 25 3a 54 22 00 jmpq *0x22543a(%rip) # 23a2d0 <_fini+0x207848> 0.00 : 14e96: 68 57 00 00 00 pushq $0x57 0.00 : 14e9b: e9 70 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014ea0 <_rl_vi_reset_last@plt>: 0.00 : 14ea0: ff 25 32 54 22 00 jmpq *0x225432(%rip) # 23a2d8 <_fini+0x207850> 0.00 : 14ea6: 68 58 00 00 00 pushq $0x58 0.00 : 14eab: e9 60 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014eb0 : 0.00 : 14eb0: ff 25 2a 54 22 00 jmpq *0x22542a(%rip) # 23a2e0 <_fini+0x207858> 0.00 : 14eb6: 68 59 00 00 00 pushq $0x59 0.00 : 14ebb: e9 50 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014ec0 : 0.00 : 14ec0: ff 25 22 54 22 00 jmpq *0x225422(%rip) # 23a2e8 <_fini+0x207860> 0.00 : 14ec6: 68 5a 00 00 00 pushq $0x5a 0.00 : 14ecb: e9 40 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014ed0 <_rl_backspace@plt>: 0.00 : 14ed0: ff 25 1a 54 22 00 jmpq *0x22541a(%rip) # 23a2f0 <_fini+0x207868> 0.00 : 14ed6: 68 5b 00 00 00 pushq $0x5b 0.00 : 14edb: e9 30 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014ee0 : 0.00 : 14ee0: ff 25 12 54 22 00 jmpq *0x225412(%rip) # 23a2f8 <_fini+0x207870> 0.00 : 14ee6: 68 5c 00 00 00 pushq $0x5c 0.00 : 14eeb: e9 20 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014ef0 <_rl_insert_char@plt>: 0.00 : 14ef0: ff 25 0a 54 22 00 jmpq *0x22540a(%rip) # 23a300 <_fini+0x207878> 0.00 : 14ef6: 68 5d 00 00 00 pushq $0x5d 0.00 : 14efb: e9 10 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014f00 : 0.00 : 14f00: ff 25 02 54 22 00 jmpq *0x225402(%rip) # 23a308 <_fini+0x207880> 0.00 : 14f06: 68 5e 00 00 00 pushq $0x5e 0.00 : 14f0b: e9 00 fa ff ff jmpq 14910 <_init+0x20> : : 0000000000014f10 <_rl_clear_to_eol@plt>: 0.00 : 14f10: ff 25 fa 53 22 00 jmpq *0x2253fa(%rip) # 23a310 <_fini+0x207888> 0.00 : 14f16: 68 5f 00 00 00 pushq $0x5f 0.00 : 14f1b: e9 f0 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f20 : 0.00 : 14f20: ff 25 f2 53 22 00 jmpq *0x2253f2(%rip) # 23a318 <_fini+0x207890> 0.00 : 14f26: 68 60 00 00 00 pushq $0x60 0.00 : 14f2b: e9 e0 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f30 <__memcpy_chk@plt>: 0.00 : 14f30: ff 25 ea 53 22 00 jmpq *0x2253ea(%rip) # 23a320 <_fini+0x207898> 0.00 : 14f36: 68 61 00 00 00 pushq $0x61 0.00 : 14f3b: e9 d0 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f40 : 0.00 : 14f40: ff 25 e2 53 22 00 jmpq *0x2253e2(%rip) # 23a328 <_fini+0x2078a0> 0.00 : 14f46: 68 62 00 00 00 pushq $0x62 0.00 : 14f4b: e9 c0 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f50 : 0.00 : 14f50: ff 25 da 53 22 00 jmpq *0x2253da(%rip) # 23a330 <_fini+0x2078a8> 0.00 : 14f56: 68 63 00 00 00 pushq $0x63 0.00 : 14f5b: e9 b0 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f60 : 0.00 : 14f60: ff 25 d2 53 22 00 jmpq *0x2253d2(%rip) # 23a338 <_fini+0x2078b0> 0.00 : 14f66: 68 64 00 00 00 pushq $0x64 0.00 : 14f6b: e9 a0 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f70 : 0.00 : 14f70: ff 25 ca 53 22 00 jmpq *0x2253ca(%rip) # 23a340 <_fini+0x2078b8> 0.00 : 14f76: 68 65 00 00 00 pushq $0x65 0.00 : 14f7b: e9 90 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f80 : 0.00 : 14f80: ff 25 c2 53 22 00 jmpq *0x2253c2(%rip) # 23a348 <_fini+0x2078c0> 0.00 : 14f86: 68 66 00 00 00 pushq $0x66 0.00 : 14f8b: e9 80 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014f90 <_rl_internal_char_cleanup@plt>: 0.00 : 14f90: ff 25 ba 53 22 00 jmpq *0x2253ba(%rip) # 23a350 <_fini+0x2078c8> 0.00 : 14f96: 68 67 00 00 00 pushq $0x67 0.00 : 14f9b: e9 70 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014fa0 <__vsnprintf_chk@plt>: 0.00 : 14fa0: ff 25 b2 53 22 00 jmpq *0x2253b2(%rip) # 23a358 <_fini+0x2078d0> 0.00 : 14fa6: 68 68 00 00 00 pushq $0x68 0.00 : 14fab: e9 60 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014fb0 <_rl_enable_paren_matching@plt>: 0.00 : 14fb0: ff 25 aa 53 22 00 jmpq *0x2253aa(%rip) # 23a360 <_fini+0x2078d8> 0.00 : 14fb6: 68 69 00 00 00 pushq $0x69 0.00 : 14fbb: e9 50 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014fc0 <_rl_dispatch@plt>: 0.00 : 14fc0: ff 25 a2 53 22 00 jmpq *0x2253a2(%rip) # 23a368 <_fini+0x2078e0> 0.00 : 14fc6: 68 6a 00 00 00 pushq $0x6a 0.00 : 14fcb: e9 40 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014fd0 <_rl_rubout_char@plt>: 0.00 : 14fd0: ff 25 9a 53 22 00 jmpq *0x22539a(%rip) # 23a370 <_fini+0x2078e8> 0.00 : 14fd6: 68 6b 00 00 00 pushq $0x6b 0.00 : 14fdb: e9 30 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014fe0 <_rl_set_the_line@plt>: 0.00 : 14fe0: ff 25 92 53 22 00 jmpq *0x225392(%rip) # 23a378 <_fini+0x2078f0> 0.00 : 14fe6: 68 6c 00 00 00 pushq $0x6c 0.00 : 14feb: e9 20 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000014ff0 : 0.00 : 14ff0: ff 25 8a 53 22 00 jmpq *0x22538a(%rip) # 23a380 <_fini+0x2078f8> 0.00 : 14ff6: 68 6d 00 00 00 pushq $0x6d 0.00 : 14ffb: e9 10 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000015000 <_rl_search_getchar@plt>: 0.00 : 15000: ff 25 82 53 22 00 jmpq *0x225382(%rip) # 23a388 <_fini+0x207900> 0.00 : 15006: 68 6e 00 00 00 pushq $0x6e 0.00 : 1500b: e9 00 f9 ff ff jmpq 14910 <_init+0x20> : : 0000000000015010 : 0.00 : 15010: ff 25 7a 53 22 00 jmpq *0x22537a(%rip) # 23a390 <_fini+0x207908> 0.00 : 15016: 68 6f 00 00 00 pushq $0x6f 0.00 : 1501b: e9 f0 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015020 : 0.00 : 15020: ff 25 72 53 22 00 jmpq *0x225372(%rip) # 23a398 <_fini+0x207910> 0.00 : 15026: 68 70 00 00 00 pushq $0x70 0.00 : 1502b: e9 e0 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015030 : 0.00 : 15030: ff 25 6a 53 22 00 jmpq *0x22536a(%rip) # 23a3a0 <_fini+0x207918> 0.00 : 15036: 68 71 00 00 00 pushq $0x71 0.00 : 1503b: e9 d0 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015040 <_rl_redisplay_after_sigwinch@plt>: 0.00 : 15040: ff 25 62 53 22 00 jmpq *0x225362(%rip) # 23a3a8 <_fini+0x207920> 0.00 : 15046: 68 72 00 00 00 pushq $0x72 0.00 : 1504b: e9 c0 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015050 <_rl_make_prompt_for_search@plt>: 0.00 : 15050: ff 25 5a 53 22 00 jmpq *0x22535a(%rip) # 23a3b0 <_fini+0x207928> 0.00 : 15056: 68 73 00 00 00 pushq $0x73 0.00 : 1505b: e9 b0 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015060 <_rl_get_char_len@plt>: 0.00 : 15060: ff 25 52 53 22 00 jmpq *0x225352(%rip) # 23a3b8 <_fini+0x207930> 0.00 : 15066: 68 74 00 00 00 pushq $0x74 0.00 : 1506b: e9 a0 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015070 <_rl_abort_internal@plt>: 0.00 : 15070: ff 25 4a 53 22 00 jmpq *0x22534a(%rip) # 23a3c0 <_fini+0x207938> 0.00 : 15076: 68 75 00 00 00 pushq $0x75 0.00 : 1507b: e9 90 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015080 <_rl_move_vert@plt>: 0.00 : 15080: ff 25 42 53 22 00 jmpq *0x225342(%rip) # 23a3c8 <_fini+0x207940> 0.00 : 15086: 68 76 00 00 00 pushq $0x76 0.00 : 1508b: e9 80 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015090 <_rl_reset_argument@plt>: 0.00 : 15090: ff 25 3a 53 22 00 jmpq *0x22533a(%rip) # 23a3d0 <_fini+0x207948> 0.00 : 15096: 68 77 00 00 00 pushq $0x77 0.00 : 1509b: e9 70 f8 ff ff jmpq 14910 <_init+0x20> : : 00000000000150a0 : 0.00 : 150a0: ff 25 32 53 22 00 jmpq *0x225332(%rip) # 23a3d8 <_fini+0x207950> 0.00 : 150a6: 68 78 00 00 00 pushq $0x78 0.00 : 150ab: e9 60 f8 ff ff jmpq 14910 <_init+0x20> : : 00000000000150b0 : 0.00 : 150b0: ff 25 2a 53 22 00 jmpq *0x22532a(%rip) # 23a3e0 <_fini+0x207958> 0.00 : 150b6: 68 79 00 00 00 pushq $0x79 0.00 : 150bb: e9 50 f8 ff ff jmpq 14910 <_init+0x20> : : 00000000000150c0 <__ctype_toupper_loc@plt>: 0.00 : 150c0: ff 25 22 53 22 00 jmpq *0x225322(%rip) # 23a3e8 <_fini+0x207960> 0.00 : 150c6: 68 7a 00 00 00 pushq $0x7a 0.00 : 150cb: e9 40 f8 ff ff jmpq 14910 <_init+0x20> : : 00000000000150d0 : 0.00 : 150d0: ff 25 1a 53 22 00 jmpq *0x22531a(%rip) # 23a3f0 <_fini+0x207968> 0.00 : 150d6: 68 7b 00 00 00 pushq $0x7b 0.00 : 150db: e9 30 f8 ff ff jmpq 14910 <_init+0x20> : : 00000000000150e0 : 0.00 : 150e0: ff 25 12 53 22 00 jmpq *0x225312(%rip) # 23a3f8 <_fini+0x207970> 0.00 : 150e6: 68 7c 00 00 00 pushq $0x7c 0.00 : 150eb: e9 20 f8 ff ff jmpq 14910 <_init+0x20> : : 00000000000150f0 : 0.00 : 150f0: ff 25 0a 53 22 00 jmpq *0x22530a(%rip) # 23a400 <_fini+0x207978> 0.00 : 150f6: 68 7d 00 00 00 pushq $0x7d 0.00 : 150fb: e9 10 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015100 : 0.00 : 15100: ff 25 02 53 22 00 jmpq *0x225302(%rip) # 23a408 <_fini+0x207980> 0.00 : 15106: 68 7e 00 00 00 pushq $0x7e 0.00 : 1510b: e9 00 f8 ff ff jmpq 14910 <_init+0x20> : : 0000000000015110 : 0.00 : 15110: ff 25 fa 52 22 00 jmpq *0x2252fa(%rip) # 23a410 <_fini+0x207988> 0.00 : 15116: 68 7f 00 00 00 pushq $0x7f 0.00 : 1511b: e9 f0 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015120 : 0.00 : 15120: ff 25 f2 52 22 00 jmpq *0x2252f2(%rip) # 23a418 <_fini+0x207990> 0.00 : 15126: 68 80 00 00 00 pushq $0x80 0.00 : 1512b: e9 e0 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015130 <_rl_restore_tty_signals@plt>: 0.00 : 15130: ff 25 ea 52 22 00 jmpq *0x2252ea(%rip) # 23a420 <_fini+0x207998> 0.00 : 15136: 68 81 00 00 00 pushq $0x81 0.00 : 1513b: e9 d0 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015140 : 0.00 : 15140: ff 25 e2 52 22 00 jmpq *0x2252e2(%rip) # 23a428 <_fini+0x2079a0> 0.00 : 15146: 68 82 00 00 00 pushq $0x82 0.00 : 1514b: e9 c0 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015150 : 0.00 : 15150: ff 25 da 52 22 00 jmpq *0x2252da(%rip) # 23a430 <_fini+0x2079a8> 0.00 : 15156: 68 83 00 00 00 pushq $0x83 0.00 : 1515b: e9 b0 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015160 : 0.00 : 15160: ff 25 d2 52 22 00 jmpq *0x2252d2(%rip) # 23a438 <_fini+0x2079b0> 0.00 : 15166: 68 84 00 00 00 pushq $0x84 0.00 : 1516b: e9 a0 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015170 : 0.00 : 15170: ff 25 ca 52 22 00 jmpq *0x2252ca(%rip) # 23a440 <_fini+0x2079b8> 0.00 : 15176: 68 85 00 00 00 pushq $0x85 0.00 : 1517b: e9 90 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015180 : 0.00 : 15180: ff 25 c2 52 22 00 jmpq *0x2252c2(%rip) # 23a448 <_fini+0x2079c0> 0.00 : 15186: 68 86 00 00 00 pushq $0x86 0.00 : 1518b: e9 80 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015190 <_rl_move_cursor_relative@plt>: 0.00 : 15190: ff 25 ba 52 22 00 jmpq *0x2252ba(%rip) # 23a450 <_fini+0x2079c8> 0.00 : 15196: 68 87 00 00 00 pushq $0x87 0.00 : 1519b: e9 70 f7 ff ff jmpq 14910 <_init+0x20> : : 00000000000151a0 : 0.00 : 151a0: ff 25 b2 52 22 00 jmpq *0x2252b2(%rip) # 23a458 <_fini+0x2079d0> 0.00 : 151a6: 68 88 00 00 00 pushq $0x88 0.00 : 151ab: e9 60 f7 ff ff jmpq 14910 <_init+0x20> : : 00000000000151b0 : 0.00 : 151b0: ff 25 aa 52 22 00 jmpq *0x2252aa(%rip) # 23a460 <_fini+0x2079d8> 0.00 : 151b6: 68 89 00 00 00 pushq $0x89 0.00 : 151bb: e9 50 f7 ff ff jmpq 14910 <_init+0x20> : : 00000000000151c0 : 0.00 : 151c0: ff 25 a2 52 22 00 jmpq *0x2252a2(%rip) # 23a468 <_fini+0x2079e0> 0.00 : 151c6: 68 8a 00 00 00 pushq $0x8a 0.00 : 151cb: e9 40 f7 ff ff jmpq 14910 <_init+0x20> : : 00000000000151d0 : 0.00 : 151d0: ff 25 9a 52 22 00 jmpq *0x22529a(%rip) # 23a470 <_fini+0x2079e8> 0.00 : 151d6: 68 8b 00 00 00 pushq $0x8b 0.00 : 151db: e9 30 f7 ff ff jmpq 14910 <_init+0x20> : : 00000000000151e0 : 0.00 : 151e0: ff 25 92 52 22 00 jmpq *0x225292(%rip) # 23a478 <_fini+0x2079f0> 0.00 : 151e6: 68 8c 00 00 00 pushq $0x8c 0.00 : 151eb: e9 20 f7 ff ff jmpq 14910 <_init+0x20> : : 00000000000151f0 <__xstat@plt>: 0.00 : 151f0: ff 25 8a 52 22 00 jmpq *0x22528a(%rip) # 23a480 <_fini+0x2079f8> 0.00 : 151f6: 68 8d 00 00 00 pushq $0x8d 0.00 : 151fb: e9 10 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015200 <_rl_callback_data_dispose@plt>: 0.00 : 15200: ff 25 82 52 22 00 jmpq *0x225282(%rip) # 23a488 <_fini+0x207a00> 0.00 : 15206: 68 8e 00 00 00 pushq $0x8e 0.00 : 1520b: e9 00 f7 ff ff jmpq 14910 <_init+0x20> : : 0000000000015210 <__ctype_get_mb_cur_max@plt>: 0.00 : 15210: ff 25 7a 52 22 00 jmpq *0x22527a(%rip) # 23a490 <_fini+0x207a08> 0.00 : 15216: 68 8f 00 00 00 pushq $0x8f 0.00 : 1521b: e9 f0 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015220 <_rl_free_history_entry@plt>: 0.00 : 15220: ff 25 72 52 22 00 jmpq *0x225272(%rip) # 23a498 <_fini+0x207a10> 0.00 : 15226: 68 90 00 00 00 pushq $0x90 0.00 : 1522b: e9 e0 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015230 : 0.00 : 15230: ff 25 6a 52 22 00 jmpq *0x22526a(%rip) # 23a4a0 <_fini+0x207a18> 0.00 : 15236: 68 91 00 00 00 pushq $0x91 0.00 : 1523b: e9 d0 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015240 : 0.00 : 15240: ff 25 62 52 22 00 jmpq *0x225262(%rip) # 23a4a8 <_fini+0x207a20> 0.00 : 15246: 68 92 00 00 00 pushq $0x92 0.00 : 1524b: e9 c0 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015250 <__ctype_b_loc@plt>: 0.00 : 15250: ff 25 5a 52 22 00 jmpq *0x22525a(%rip) # 23a4b0 <_fini+0x207a28> 0.00 : 15256: 68 93 00 00 00 pushq $0x93 0.00 : 1525b: e9 b0 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015260 : 0.00 : 15260: ff 25 52 52 22 00 jmpq *0x225252(%rip) # 23a4b8 <_fini+0x207a30> 0.00 : 15266: 68 94 00 00 00 pushq $0x94 0.00 : 1526b: e9 a0 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015270 <__cxa_finalize@plt>: 0.00 : 15270: ff 25 4a 52 22 00 jmpq *0x22524a(%rip) # 23a4c0 <_fini+0x207a38> 0.00 : 15276: 68 95 00 00 00 pushq $0x95 0.00 : 1527b: e9 90 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015280 <_rl_char_search_internal@plt>: 0.00 : 15280: ff 25 42 52 22 00 jmpq *0x225242(%rip) # 23a4c8 <_fini+0x207a40> 0.00 : 15286: 68 96 00 00 00 pushq $0x96 0.00 : 1528b: e9 80 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015290 : 0.00 : 15290: ff 25 3a 52 22 00 jmpq *0x22523a(%rip) # 23a4d0 <_fini+0x207a48> 0.00 : 15296: 68 97 00 00 00 pushq $0x97 0.00 : 1529b: e9 70 f6 ff ff jmpq 14910 <_init+0x20> : : 00000000000152a0 : 0.00 : 152a0: ff 25 32 52 22 00 jmpq *0x225232(%rip) # 23a4d8 <_fini+0x207a50> 0.00 : 152a6: 68 98 00 00 00 pushq $0x98 0.00 : 152ab: e9 60 f6 ff ff jmpq 14910 <_init+0x20> : : 00000000000152b0 : 0.00 : 152b0: ff 25 2a 52 22 00 jmpq *0x22522a(%rip) # 23a4e0 <_fini+0x207a58> 0.00 : 152b6: 68 99 00 00 00 pushq $0x99 0.00 : 152bb: e9 50 f6 ff ff jmpq 14910 <_init+0x20> : : 00000000000152c0 : 0.00 : 152c0: ff 25 22 52 22 00 jmpq *0x225222(%rip) # 23a4e8 <_fini+0x207a60> 0.00 : 152c6: 68 9a 00 00 00 pushq $0x9a 0.00 : 152cb: e9 40 f6 ff ff jmpq 14910 <_init+0x20> : : 00000000000152d0 <_rl_vi_textmod_command@plt>: 0.00 : 152d0: ff 25 1a 52 22 00 jmpq *0x22521a(%rip) # 23a4f0 <_fini+0x207a68> 0.00 : 152d6: 68 9b 00 00 00 pushq $0x9b 0.00 : 152db: e9 30 f6 ff ff jmpq 14910 <_init+0x20> : : 00000000000152e0 : 0.00 : 152e0: ff 25 12 52 22 00 jmpq *0x225212(%rip) # 23a4f8 <_fini+0x207a70> 0.00 : 152e6: 68 9c 00 00 00 pushq $0x9c 0.00 : 152eb: e9 20 f6 ff ff jmpq 14910 <_init+0x20> : : 00000000000152f0 : 0.00 : 152f0: ff 25 0a 52 22 00 jmpq *0x22520a(%rip) # 23a500 <_fini+0x207a78> 0.00 : 152f6: 68 9d 00 00 00 pushq $0x9d 0.00 : 152fb: e9 10 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015300 : 0.00 : 15300: ff 25 02 52 22 00 jmpq *0x225202(%rip) # 23a508 <_fini+0x207a80> 0.00 : 15306: 68 9e 00 00 00 pushq $0x9e 0.00 : 1530b: e9 00 f6 ff ff jmpq 14910 <_init+0x20> : : 0000000000015310 <_rl_arg_callback@plt>: 0.00 : 15310: ff 25 fa 51 22 00 jmpq *0x2251fa(%rip) # 23a510 <_fini+0x207a88> 0.00 : 15316: 68 9f 00 00 00 pushq $0x9f 0.00 : 1531b: e9 f0 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015320 : 0.00 : 15320: ff 25 f2 51 22 00 jmpq *0x2251f2(%rip) # 23a518 <_fini+0x207a90> 0.00 : 15326: 68 a0 00 00 00 pushq $0xa0 0.00 : 1532b: e9 e0 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015330 : 0.00 : 15330: ff 25 ea 51 22 00 jmpq *0x2251ea(%rip) # 23a520 <_fini+0x207a98> 0.00 : 15336: 68 a1 00 00 00 pushq $0xa1 0.00 : 1533b: e9 d0 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015340 : 0.00 : 15340: ff 25 e2 51 22 00 jmpq *0x2251e2(%rip) # 23a528 <_fini+0x207aa0> 0.00 : 15346: 68 a2 00 00 00 pushq $0xa2 0.00 : 1534b: e9 c0 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015350 : 0.00 : 15350: ff 25 da 51 22 00 jmpq *0x2251da(%rip) # 23a530 <_fini+0x207aa8> 0.00 : 15356: 68 a3 00 00 00 pushq $0xa3 0.00 : 1535b: e9 b0 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015360 <_rl_fix_point@plt>: 0.00 : 15360: ff 25 d2 51 22 00 jmpq *0x2251d2(%rip) # 23a538 <_fini+0x207ab0> 0.00 : 15366: 68 a4 00 00 00 pushq $0xa4 0.00 : 1536b: e9 a0 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015370 <_rl_with_macro_input@plt>: 0.00 : 15370: ff 25 ca 51 22 00 jmpq *0x2251ca(%rip) # 23a540 <_fini+0x207ab8> 0.00 : 15376: 68 a5 00 00 00 pushq $0xa5 0.00 : 1537b: e9 90 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015380 <_rl_find_prev_mbchar@plt>: 0.00 : 15380: ff 25 c2 51 22 00 jmpq *0x2251c2(%rip) # 23a548 <_fini+0x207ac0> 0.00 : 15386: 68 a6 00 00 00 pushq $0xa6 0.00 : 1538b: e9 80 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015390 : 0.00 : 15390: ff 25 ba 51 22 00 jmpq *0x2251ba(%rip) # 23a550 <_fini+0x207ac8> 0.00 : 15396: 68 a7 00 00 00 pushq $0xa7 0.00 : 1539b: e9 70 f5 ff ff jmpq 14910 <_init+0x20> : : 00000000000153a0 <_rl_block_sigint@plt>: 0.00 : 153a0: ff 25 b2 51 22 00 jmpq *0x2251b2(%rip) # 23a558 <_fini+0x207ad0> 0.00 : 153a6: 68 a8 00 00 00 pushq $0xa8 0.00 : 153ab: e9 60 f5 ff ff jmpq 14910 <_init+0x20> : : 00000000000153b0 : 0.00 : 153b0: ff 25 aa 51 22 00 jmpq *0x2251aa(%rip) # 23a560 <_fini+0x207ad8> 0.00 : 153b6: 68 a9 00 00 00 pushq $0xa9 0.00 : 153bb: e9 50 f5 ff ff jmpq 14910 <_init+0x20> : : 00000000000153c0 : 0.00 : 153c0: ff 25 a2 51 22 00 jmpq *0x2251a2(%rip) # 23a568 <_fini+0x207ae0> 0.00 : 153c6: 68 aa 00 00 00 pushq $0xaa 0.00 : 153cb: e9 40 f5 ff ff jmpq 14910 <_init+0x20> : : 00000000000153d0 : 0.00 : 153d0: ff 25 9a 51 22 00 jmpq *0x22519a(%rip) # 23a570 <_fini+0x207ae8> 0.00 : 153d6: 68 ab 00 00 00 pushq $0xab 0.00 : 153db: e9 30 f5 ff ff jmpq 14910 <_init+0x20> : : 00000000000153e0 : 0.00 : 153e0: ff 25 92 51 22 00 jmpq *0x225192(%rip) # 23a578 <_fini+0x207af0> 0.00 : 153e6: 68 ac 00 00 00 pushq $0xac 0.00 : 153eb: e9 20 f5 ff ff jmpq 14910 <_init+0x20> : : 00000000000153f0 <_rl_unget_char@plt>: 0.00 : 153f0: ff 25 8a 51 22 00 jmpq *0x22518a(%rip) # 23a580 <_fini+0x207af8> 0.00 : 153f6: 68 ad 00 00 00 pushq $0xad 0.00 : 153fb: e9 10 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015400 <_rl_pop_executing_macro@plt>: 0.00 : 15400: ff 25 82 51 22 00 jmpq *0x225182(%rip) # 23a588 <_fini+0x207b00> 0.00 : 15406: 68 ae 00 00 00 pushq $0xae 0.00 : 1540b: e9 00 f5 ff ff jmpq 14910 <_init+0x20> : : 0000000000015410 : 0.00 : 15410: ff 25 7a 51 22 00 jmpq *0x22517a(%rip) # 23a590 <_fini+0x207b08> 0.00 : 15416: 68 af 00 00 00 pushq $0xaf 0.00 : 1541b: e9 f0 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015420 : 0.00 : 15420: ff 25 72 51 22 00 jmpq *0x225172(%rip) # 23a598 <_fini+0x207b10> 0.00 : 15426: 68 b0 00 00 00 pushq $0xb0 0.00 : 1542b: e9 e0 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015430 <_rl_init_eightbit@plt>: 0.00 : 15430: ff 25 6a 51 22 00 jmpq *0x22516a(%rip) # 23a5a0 <_fini+0x207b18> 0.00 : 15436: 68 b1 00 00 00 pushq $0xb1 0.00 : 1543b: e9 d0 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015440 <_rl_find_next_mbchar@plt>: 0.00 : 15440: ff 25 62 51 22 00 jmpq *0x225162(%rip) # 23a5a8 <_fini+0x207b20> 0.00 : 15446: 68 b2 00 00 00 pushq $0xb2 0.00 : 1544b: e9 c0 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015450 : 0.00 : 15450: ff 25 5a 51 22 00 jmpq *0x22515a(%rip) # 23a5b0 <_fini+0x207b28> 0.00 : 15456: 68 b3 00 00 00 pushq $0xb3 0.00 : 1545b: e9 b0 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015460 : 0.00 : 15460: ff 25 52 51 22 00 jmpq *0x225152(%rip) # 23a5b8 <_fini+0x207b30> 0.00 : 15466: 68 b4 00 00 00 pushq $0xb4 0.00 : 1546b: e9 a0 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015470 <_rl_scxt_dispose@plt>: 0.00 : 15470: ff 25 4a 51 22 00 jmpq *0x22514a(%rip) # 23a5c0 <_fini+0x207b38> 0.00 : 15476: 68 b5 00 00 00 pushq $0xb5 0.00 : 1547b: e9 90 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015480 : 0.00 : 15480: ff 25 42 51 22 00 jmpq *0x225142(%rip) # 23a5c8 <_fini+0x207b40> 0.00 : 15486: 68 b6 00 00 00 pushq $0xb6 0.00 : 1548b: e9 80 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015490 : 0.00 : 15490: ff 25 3a 51 22 00 jmpq *0x22513a(%rip) # 23a5d0 <_fini+0x207b48> 0.00 : 15496: 68 b7 00 00 00 pushq $0xb7 0.00 : 1549b: e9 70 f4 ff ff jmpq 14910 <_init+0x20> : : 00000000000154a0 : 0.00 : 154a0: ff 25 32 51 22 00 jmpq *0x225132(%rip) # 23a5d8 <_fini+0x207b50> 0.00 : 154a6: 68 b8 00 00 00 pushq $0xb8 0.00 : 154ab: e9 60 f4 ff ff jmpq 14910 <_init+0x20> : : 00000000000154b0 <_rl_dispatch_callback@plt>: 0.00 : 154b0: ff 25 2a 51 22 00 jmpq *0x22512a(%rip) # 23a5e0 <_fini+0x207b58> 0.00 : 154b6: 68 b9 00 00 00 pushq $0xb9 0.00 : 154bb: e9 50 f4 ff ff jmpq 14910 <_init+0x20> : : 00000000000154c0 : 0.00 : 154c0: ff 25 22 51 22 00 jmpq *0x225122(%rip) # 23a5e8 <_fini+0x207b60> 0.00 : 154c6: 68 ba 00 00 00 pushq $0xba 0.00 : 154cb: e9 40 f4 ff ff jmpq 14910 <_init+0x20> : : 00000000000154d0 : 0.00 : 154d0: ff 25 1a 51 22 00 jmpq *0x22511a(%rip) # 23a5f0 <_fini+0x207b68> 0.00 : 154d6: 68 bb 00 00 00 pushq $0xbb 0.00 : 154db: e9 30 f4 ff ff jmpq 14910 <_init+0x20> : : 00000000000154e0 : 0.00 : 154e0: ff 25 12 51 22 00 jmpq *0x225112(%rip) # 23a5f8 <_fini+0x207b70> 0.00 : 154e6: 68 bc 00 00 00 pushq $0xbc 0.00 : 154eb: e9 20 f4 ff ff jmpq 14910 <_init+0x20> : : 00000000000154f0 <_rl_pushed_input_available@plt>: 0.00 : 154f0: ff 25 0a 51 22 00 jmpq *0x22510a(%rip) # 23a600 <_fini+0x207b78> 0.00 : 154f6: 68 bd 00 00 00 pushq $0xbd 0.00 : 154fb: e9 10 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015500 : 0.00 : 15500: ff 25 02 51 22 00 jmpq *0x225102(%rip) # 23a608 <_fini+0x207b80> 0.00 : 15506: 68 be 00 00 00 pushq $0xbe 0.00 : 1550b: e9 00 f4 ff ff jmpq 14910 <_init+0x20> : : 0000000000015510 <_rl_overwrite_rubout@plt>: 0.00 : 15510: ff 25 fa 50 22 00 jmpq *0x2250fa(%rip) # 23a610 <_fini+0x207b88> 0.00 : 15516: 68 bf 00 00 00 pushq $0xbf 0.00 : 1551b: e9 f0 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015520 <_rl_strindex@plt>: 0.00 : 15520: ff 25 f2 50 22 00 jmpq *0x2250f2(%rip) # 23a618 <_fini+0x207b90> 0.00 : 15526: 68 c0 00 00 00 pushq $0xc0 0.00 : 1552b: e9 e0 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015530 : 0.00 : 15530: ff 25 ea 50 22 00 jmpq *0x2250ea(%rip) # 23a620 <_fini+0x207b98> 0.00 : 15536: 68 c1 00 00 00 pushq $0xc1 0.00 : 1553b: e9 d0 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015540 <_rl_release_sigint@plt>: 0.00 : 15540: ff 25 e2 50 22 00 jmpq *0x2250e2(%rip) # 23a628 <_fini+0x207ba0> 0.00 : 15546: 68 c2 00 00 00 pushq $0xc2 0.00 : 1554b: e9 c0 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015550 : 0.00 : 15550: ff 25 da 50 22 00 jmpq *0x2250da(%rip) # 23a630 <_fini+0x207ba8> 0.00 : 15556: 68 c3 00 00 00 pushq $0xc3 0.00 : 1555b: e9 b0 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015560 : 0.00 : 15560: ff 25 d2 50 22 00 jmpq *0x2250d2(%rip) # 23a638 <_fini+0x207bb0> 0.00 : 15566: 68 c4 00 00 00 pushq $0xc4 0.00 : 1556b: e9 a0 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015570 : 0.00 : 15570: ff 25 ca 50 22 00 jmpq *0x2250ca(%rip) # 23a640 <_fini+0x207bb8> 0.00 : 15576: 68 c5 00 00 00 pushq $0xc5 0.00 : 1557b: e9 90 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015580 : 0.00 : 15580: ff 25 c2 50 22 00 jmpq *0x2250c2(%rip) # 23a648 <_fini+0x207bc0> 0.00 : 15586: 68 c6 00 00 00 pushq $0xc6 0.00 : 1558b: e9 80 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015590 : 0.00 : 15590: ff 25 ba 50 22 00 jmpq *0x2250ba(%rip) # 23a650 <_fini+0x207bc8> 0.00 : 15596: 68 c7 00 00 00 pushq $0xc7 0.00 : 1559b: e9 70 f3 ff ff jmpq 14910 <_init+0x20> : : 00000000000155a0 : 0.00 : 155a0: ff 25 b2 50 22 00 jmpq *0x2250b2(%rip) # 23a658 <_fini+0x207bd0> 0.00 : 155a6: 68 c8 00 00 00 pushq $0xc8 0.00 : 155ab: e9 60 f3 ff ff jmpq 14910 <_init+0x20> : : 00000000000155b0 : 0.00 : 155b0: ff 25 aa 50 22 00 jmpq *0x2250aa(%rip) # 23a660 <_fini+0x207bd8> 0.00 : 155b6: 68 c9 00 00 00 pushq $0xc9 0.00 : 155bb: e9 50 f3 ff ff jmpq 14910 <_init+0x20> : : 00000000000155c0 <_rl_isearch_callback@plt>: 0.00 : 155c0: ff 25 a2 50 22 00 jmpq *0x2250a2(%rip) # 23a668 <_fini+0x207be0> 0.00 : 155c6: 68 ca 00 00 00 pushq $0xca 0.00 : 155cb: e9 40 f3 ff ff jmpq 14910 <_init+0x20> : : 00000000000155d0 : 0.00 : 155d0: ff 25 9a 50 22 00 jmpq *0x22509a(%rip) # 23a670 <_fini+0x207be8> 0.00 : 155d6: 68 cb 00 00 00 pushq $0xcb 0.00 : 155db: e9 30 f3 ff ff jmpq 14910 <_init+0x20> : : 00000000000155e0 : 0.00 : 155e0: ff 25 92 50 22 00 jmpq *0x225092(%rip) # 23a678 <_fini+0x207bf0> 0.00 : 155e6: 68 cc 00 00 00 pushq $0xcc 0.00 : 155eb: e9 20 f3 ff ff jmpq 14910 <_init+0x20> : : 00000000000155f0 <_rl_arg_getchar@plt>: 0.00 : 155f0: ff 25 8a 50 22 00 jmpq *0x22508a(%rip) # 23a680 <_fini+0x207bf8> 0.00 : 155f6: 68 cd 00 00 00 pushq $0xcd 0.00 : 155fb: e9 10 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015600 : 0.00 : 15600: ff 25 82 50 22 00 jmpq *0x225082(%rip) # 23a688 <_fini+0x207c00> 0.00 : 15606: 68 ce 00 00 00 pushq $0xce 0.00 : 1560b: e9 00 f3 ff ff jmpq 14910 <_init+0x20> : : 0000000000015610 : 0.00 : 15610: ff 25 7a 50 22 00 jmpq *0x22507a(%rip) # 23a690 <_fini+0x207c08> 0.00 : 15616: 68 cf 00 00 00 pushq $0xcf 0.00 : 1561b: e9 f0 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015620 : 0.00 : 15620: ff 25 72 50 22 00 jmpq *0x225072(%rip) # 23a698 <_fini+0x207c10> 0.00 : 15626: 68 d0 00 00 00 pushq $0xd0 0.00 : 1562b: e9 e0 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015630 : 0.00 : 15630: ff 25 6a 50 22 00 jmpq *0x22506a(%rip) # 23a6a0 <_fini+0x207c18> 0.00 : 15636: 68 d1 00 00 00 pushq $0xd1 0.00 : 1563b: e9 d0 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015640 : 0.00 : 15640: ff 25 62 50 22 00 jmpq *0x225062(%rip) # 23a6a8 <_fini+0x207c20> 0.00 : 15646: 68 d2 00 00 00 pushq $0xd2 0.00 : 1564b: e9 c0 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015650 : 0.00 : 15650: ff 25 5a 50 22 00 jmpq *0x22505a(%rip) # 23a6b0 <_fini+0x207c28> 0.00 : 15656: 68 d3 00 00 00 pushq $0xd3 0.00 : 1565b: e9 b0 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015660 : 0.00 : 15660: ff 25 52 50 22 00 jmpq *0x225052(%rip) # 23a6b8 <_fini+0x207c30> 0.00 : 15666: 68 d4 00 00 00 pushq $0xd4 0.00 : 1566b: e9 a0 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015670 : 0.00 : 15670: ff 25 4a 50 22 00 jmpq *0x22504a(%rip) # 23a6c0 <_fini+0x207c38> 0.00 : 15676: 68 d5 00 00 00 pushq $0xd5 0.00 : 1567b: e9 90 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015680 : 0.00 : 15680: ff 25 42 50 22 00 jmpq *0x225042(%rip) # 23a6c8 <_fini+0x207c40> 0.00 : 15686: 68 d6 00 00 00 pushq $0xd6 0.00 : 1568b: e9 80 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015690 : 0.00 : 15690: ff 25 3a 50 22 00 jmpq *0x22503a(%rip) # 23a6d0 <_fini+0x207c48> 0.00 : 15696: 68 d7 00 00 00 pushq $0xd7 0.00 : 1569b: e9 70 f2 ff ff jmpq 14910 <_init+0x20> : : 00000000000156a0 <_rl_callback_data_alloc@plt>: 0.00 : 156a0: ff 25 32 50 22 00 jmpq *0x225032(%rip) # 23a6d8 <_fini+0x207c50> 0.00 : 156a6: 68 d8 00 00 00 pushq $0xd8 0.00 : 156ab: e9 60 f2 ff ff jmpq 14910 <_init+0x20> : : 00000000000156b0 : 0.00 : 156b0: ff 25 2a 50 22 00 jmpq *0x22502a(%rip) # 23a6e0 <_fini+0x207c58> 0.00 : 156b6: 68 d9 00 00 00 pushq $0xd9 0.00 : 156bb: e9 50 f2 ff ff jmpq 14910 <_init+0x20> : : 00000000000156c0 <_rl_is_mbchar_matched@plt>: 0.00 : 156c0: ff 25 22 50 22 00 jmpq *0x225022(%rip) # 23a6e8 <_fini+0x207c60> 0.00 : 156c6: 68 da 00 00 00 pushq $0xda 0.00 : 156cb: e9 40 f2 ff ff jmpq 14910 <_init+0x20> : : 00000000000156d0 : 0.00 : 156d0: ff 25 1a 50 22 00 jmpq *0x22501a(%rip) # 23a6f0 <_fini+0x207c68> 0.00 : 156d6: 68 db 00 00 00 pushq $0xdb 0.00 : 156db: e9 30 f2 ff ff jmpq 14910 <_init+0x20> : : 00000000000156e0 : 0.00 : 156e0: ff 25 12 50 22 00 jmpq *0x225012(%rip) # 23a6f8 <_fini+0x207c70> 0.00 : 156e6: 68 dc 00 00 00 pushq $0xdc 0.00 : 156eb: e9 20 f2 ff ff jmpq 14910 <_init+0x20> : : 00000000000156f0 : 0.00 : 156f0: ff 25 0a 50 22 00 jmpq *0x22500a(%rip) # 23a700 <_fini+0x207c78> 0.00 : 156f6: 68 dd 00 00 00 pushq $0xdd 0.00 : 156fb: e9 10 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015700 : 0.00 : 15700: ff 25 02 50 22 00 jmpq *0x225002(%rip) # 23a708 <_fini+0x207c80> 0.00 : 15706: 68 de 00 00 00 pushq $0xde 0.00 : 1570b: e9 00 f2 ff ff jmpq 14910 <_init+0x20> : : 0000000000015710 : 0.00 : 15710: ff 25 fa 4f 22 00 jmpq *0x224ffa(%rip) # 23a710 <_fini+0x207c88> 0.00 : 15716: 68 df 00 00 00 pushq $0xdf 0.00 : 1571b: e9 f0 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015720 <__fxstat@plt>: 0.00 : 15720: ff 25 f2 4f 22 00 jmpq *0x224ff2(%rip) # 23a718 <_fini+0x207c90> 0.00 : 15726: 68 e0 00 00 00 pushq $0xe0 0.00 : 1572b: e9 e0 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015730 : 0.00 : 15730: ff 25 ea 4f 22 00 jmpq *0x224fea(%rip) # 23a720 <_fini+0x207c98> 0.00 : 15736: 68 e1 00 00 00 pushq $0xe1 0.00 : 1573b: e9 d0 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015740 <_rl_erase_at_end_of_line@plt>: 0.00 : 15740: ff 25 e2 4f 22 00 jmpq *0x224fe2(%rip) # 23a728 <_fini+0x207ca0> 0.00 : 15746: 68 e2 00 00 00 pushq $0xe2 0.00 : 1574b: e9 c0 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015750 : 0.00 : 15750: ff 25 da 4f 22 00 jmpq *0x224fda(%rip) # 23a730 <_fini+0x207ca8> 0.00 : 15756: 68 e3 00 00 00 pushq $0xe3 0.00 : 1575b: e9 b0 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015760 : 0.00 : 15760: ff 25 d2 4f 22 00 jmpq *0x224fd2(%rip) # 23a738 <_fini+0x207cb0> 0.00 : 15766: 68 e4 00 00 00 pushq $0xe4 0.00 : 1576b: e9 a0 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015770 : 0.00 : 15770: ff 25 ca 4f 22 00 jmpq *0x224fca(%rip) # 23a740 <_fini+0x207cb8> 0.00 : 15776: 68 e5 00 00 00 pushq $0xe5 0.00 : 1577b: e9 90 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015780 : 0.00 : 15780: ff 25 c2 4f 22 00 jmpq *0x224fc2(%rip) # 23a748 <_fini+0x207cc0> 0.00 : 15786: 68 e6 00 00 00 pushq $0xe6 0.00 : 1578b: e9 80 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015790 : 0.00 : 15790: ff 25 ba 4f 22 00 jmpq *0x224fba(%rip) # 23a750 <_fini+0x207cc8> 0.00 : 15796: 68 e7 00 00 00 pushq $0xe7 0.00 : 1579b: e9 70 f1 ff ff jmpq 14910 <_init+0x20> : : 00000000000157a0 : 0.00 : 157a0: ff 25 b2 4f 22 00 jmpq *0x224fb2(%rip) # 23a758 <_fini+0x207cd0> 0.00 : 157a6: 68 e8 00 00 00 pushq $0xe8 0.00 : 157ab: e9 60 f1 ff ff jmpq 14910 <_init+0x20> : : 00000000000157b0 : 0.00 : 157b0: ff 25 aa 4f 22 00 jmpq *0x224faa(%rip) # 23a760 <_fini+0x207cd8> 0.00 : 157b6: 68 e9 00 00 00 pushq $0xe9 0.00 : 157bb: e9 50 f1 ff ff jmpq 14910 <_init+0x20> : : 00000000000157c0 : 0.00 : 157c0: ff 25 a2 4f 22 00 jmpq *0x224fa2(%rip) # 23a768 <_fini+0x207ce0> 0.00 : 157c6: 68 ea 00 00 00 pushq $0xea 0.00 : 157cb: e9 40 f1 ff ff jmpq 14910 <_init+0x20> : : 00000000000157d0 <_rl_scxt_alloc@plt>: 0.00 : 157d0: ff 25 9a 4f 22 00 jmpq *0x224f9a(%rip) # 23a770 <_fini+0x207ce8> 0.00 : 157d6: 68 eb 00 00 00 pushq $0xeb 0.00 : 157db: e9 30 f1 ff ff jmpq 14910 <_init+0x20> : : 00000000000157e0 : 0.00 : 157e0: ff 25 92 4f 22 00 jmpq *0x224f92(%rip) # 23a778 <_fini+0x207cf0> 0.00 : 157e6: 68 ec 00 00 00 pushq $0xec 0.00 : 157eb: e9 20 f1 ff ff jmpq 14910 <_init+0x20> : : 00000000000157f0 : 0.00 : 157f0: ff 25 8a 4f 22 00 jmpq *0x224f8a(%rip) # 23a780 <_fini+0x207cf8> 0.00 : 157f6: 68 ed 00 00 00 pushq $0xed 0.00 : 157fb: e9 10 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015800 : 0.00 : 15800: ff 25 82 4f 22 00 jmpq *0x224f82(%rip) # 23a788 <_fini+0x207d00> 0.00 : 15806: 68 ee 00 00 00 pushq $0xee 0.00 : 1580b: e9 00 f1 ff ff jmpq 14910 <_init+0x20> : : 0000000000015810 <__errno_location@plt>: 0.00 : 15810: ff 25 7a 4f 22 00 jmpq *0x224f7a(%rip) # 23a790 <_fini+0x207d08> 0.00 : 15816: 68 ef 00 00 00 pushq $0xef 0.00 : 1581b: e9 f0 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015820 : 0.00 : 15820: ff 25 72 4f 22 00 jmpq *0x224f72(%rip) # 23a798 <_fini+0x207d10> 0.00 : 15826: 68 f0 00 00 00 pushq $0xf0 0.00 : 1582b: e9 e0 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015830 : 0.00 : 15830: ff 25 6a 4f 22 00 jmpq *0x224f6a(%rip) # 23a7a0 <_fini+0x207d18> 0.00 : 15836: 68 f1 00 00 00 pushq $0xf1 0.00 : 1583b: e9 d0 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015840 : 0.00 : 15840: ff 25 62 4f 22 00 jmpq *0x224f62(%rip) # 23a7a8 <_fini+0x207d20> 0.00 : 15846: 68 f2 00 00 00 pushq $0xf2 0.00 : 1584b: e9 c0 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015850 : 0.00 : 15850: ff 25 5a 4f 22 00 jmpq *0x224f5a(%rip) # 23a7b0 <_fini+0x207d28> 0.00 : 15856: 68 f3 00 00 00 pushq $0xf3 0.00 : 1585b: e9 b0 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015860 : 0.00 : 15860: ff 25 52 4f 22 00 jmpq *0x224f52(%rip) # 23a7b8 <_fini+0x207d30> 0.00 : 15866: 68 f4 00 00 00 pushq $0xf4 0.00 : 1586b: e9 a0 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015870 : 0.00 : 15870: ff 25 4a 4f 22 00 jmpq *0x224f4a(%rip) # 23a7c0 <_fini+0x207d38> 0.00 : 15876: 68 f5 00 00 00 pushq $0xf5 0.00 : 1587b: e9 90 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015880 : 0.00 : 15880: ff 25 42 4f 22 00 jmpq *0x224f42(%rip) # 23a7c8 <_fini+0x207d40> 0.00 : 15886: 68 f6 00 00 00 pushq $0xf6 0.00 : 1588b: e9 80 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015890 : 0.00 : 15890: ff 25 3a 4f 22 00 jmpq *0x224f3a(%rip) # 23a7d0 <_fini+0x207d48> 0.00 : 15896: 68 f7 00 00 00 pushq $0xf7 0.00 : 1589b: e9 70 f0 ff ff jmpq 14910 <_init+0x20> : : 00000000000158a0 : 0.00 : 158a0: ff 25 32 4f 22 00 jmpq *0x224f32(%rip) # 23a7d8 <_fini+0x207d50> 0.00 : 158a6: 68 f8 00 00 00 pushq $0xf8 0.00 : 158ab: e9 60 f0 ff ff jmpq 14910 <_init+0x20> : : 00000000000158b0 : 0.00 : 158b0: ff 25 2a 4f 22 00 jmpq *0x224f2a(%rip) # 23a7e0 <_fini+0x207d58> 0.00 : 158b6: 68 f9 00 00 00 pushq $0xf9 0.00 : 158bb: e9 50 f0 ff ff jmpq 14910 <_init+0x20> : : 00000000000158c0 : 0.00 : 158c0: ff 25 22 4f 22 00 jmpq *0x224f22(%rip) # 23a7e8 <_fini+0x207d60> 0.00 : 158c6: 68 fa 00 00 00 pushq $0xfa 0.00 : 158cb: e9 40 f0 ff ff jmpq 14910 <_init+0x20> : : 00000000000158d0 <_rl_compare_chars@plt>: 0.00 : 158d0: ff 25 1a 4f 22 00 jmpq *0x224f1a(%rip) # 23a7f0 <_fini+0x207d68> 0.00 : 158d6: 68 fb 00 00 00 pushq $0xfb 0.00 : 158db: e9 30 f0 ff ff jmpq 14910 <_init+0x20> : : 00000000000158e0 : 0.00 : 158e0: ff 25 12 4f 22 00 jmpq *0x224f12(%rip) # 23a7f8 <_fini+0x207d70> 0.00 : 158e6: 68 fc 00 00 00 pushq $0xfc 0.00 : 158eb: e9 20 f0 ff ff jmpq 14910 <_init+0x20> : : 00000000000158f0 <_rl_any_typein@plt>: 0.00 : 158f0: ff 25 0a 4f 22 00 jmpq *0x224f0a(%rip) # 23a800 <_fini+0x207d78> 0.00 : 158f6: 68 fd 00 00 00 pushq $0xfd 0.00 : 158fb: e9 10 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015900 <__stack_chk_fail@plt>: 0.00 : 15900: ff 25 02 4f 22 00 jmpq *0x224f02(%rip) # 23a808 <_fini+0x207d80> 0.00 : 15906: 68 fe 00 00 00 pushq $0xfe 0.00 : 1590b: e9 00 f0 ff ff jmpq 14910 <_init+0x20> : : 0000000000015910 : 0.00 : 15910: ff 25 fa 4e 22 00 jmpq *0x224efa(%rip) # 23a810 <_fini+0x207d88> 0.00 : 15916: 68 ff 00 00 00 pushq $0xff 0.00 : 1591b: e9 f0 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015920 : 0.00 : 15920: ff 25 f2 4e 22 00 jmpq *0x224ef2(%rip) # 23a818 <_fini+0x207d90> 0.00 : 15926: 68 00 01 00 00 pushq $0x100 0.00 : 1592b: e9 e0 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015930 : 0.00 : 15930: ff 25 ea 4e 22 00 jmpq *0x224eea(%rip) # 23a820 <_fini+0x207d98> 0.00 : 15936: 68 01 01 00 00 pushq $0x101 0.00 : 1593b: e9 d0 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015940 <_rl_free_match_list@plt>: 0.00 : 15940: ff 25 e2 4e 22 00 jmpq *0x224ee2(%rip) # 23a828 <_fini+0x207da0> 0.00 : 15946: 68 02 01 00 00 pushq $0x102 0.00 : 1594b: e9 c0 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015950 : 0.00 : 15950: ff 25 da 4e 22 00 jmpq *0x224eda(%rip) # 23a830 <_fini+0x207da8> 0.00 : 15956: 68 03 01 00 00 pushq $0x103 0.00 : 1595b: e9 b0 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015960 : 0.00 : 15960: ff 25 d2 4e 22 00 jmpq *0x224ed2(%rip) # 23a838 <_fini+0x207db0> 0.00 : 15966: 68 04 01 00 00 pushq $0x104 0.00 : 1596b: e9 a0 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015970 : 0.00 : 15970: ff 25 ca 4e 22 00 jmpq *0x224eca(%rip) # 23a840 <_fini+0x207db8> 0.00 : 15976: 68 05 01 00 00 pushq $0x105 0.00 : 1597b: e9 90 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015980 : 0.00 : 15980: ff 25 c2 4e 22 00 jmpq *0x224ec2(%rip) # 23a848 <_fini+0x207dc0> 0.00 : 15986: 68 06 01 00 00 pushq $0x106 0.00 : 1598b: e9 80 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015990 : 0.00 : 15990: ff 25 ba 4e 22 00 jmpq *0x224eba(%rip) # 23a850 <_fini+0x207dc8> 0.00 : 15996: 68 07 01 00 00 pushq $0x107 0.00 : 1599b: e9 70 ef ff ff jmpq 14910 <_init+0x20> : : 00000000000159a0 <_rl_set_screen_size@plt>: 0.00 : 159a0: ff 25 b2 4e 22 00 jmpq *0x224eb2(%rip) # 23a858 <_fini+0x207dd0> 0.00 : 159a6: 68 08 01 00 00 pushq $0x108 0.00 : 159ab: e9 60 ef ff ff jmpq 14910 <_init+0x20> : : 00000000000159b0 <_rl_current_display_line@plt>: 0.00 : 159b0: ff 25 aa 4e 22 00 jmpq *0x224eaa(%rip) # 23a860 <_fini+0x207dd8> 0.00 : 159b6: 68 09 01 00 00 pushq $0x109 0.00 : 159bb: e9 50 ef ff ff jmpq 14910 <_init+0x20> : : 00000000000159c0 : 0.00 : 159c0: ff 25 a2 4e 22 00 jmpq *0x224ea2(%rip) # 23a868 <_fini+0x207de0> 0.00 : 159c6: 68 0a 01 00 00 pushq $0x10a 0.00 : 159cb: e9 40 ef ff ff jmpq 14910 <_init+0x20> : : 00000000000159d0 : 0.00 : 159d0: ff 25 9a 4e 22 00 jmpq *0x224e9a(%rip) # 23a870 <_fini+0x207de8> 0.00 : 159d6: 68 0b 01 00 00 pushq $0x10b 0.00 : 159db: e9 30 ef ff ff jmpq 14910 <_init+0x20> : : 00000000000159e0 <_rl_vi_set_last@plt>: 0.00 : 159e0: ff 25 92 4e 22 00 jmpq *0x224e92(%rip) # 23a878 <_fini+0x207df0> 0.00 : 159e6: 68 0c 01 00 00 pushq $0x10c 0.00 : 159eb: e9 20 ef ff ff jmpq 14910 <_init+0x20> : : 00000000000159f0 : 0.00 : 159f0: ff 25 8a 4e 22 00 jmpq *0x224e8a(%rip) # 23a880 <_fini+0x207df8> 0.00 : 159f6: 68 0d 01 00 00 pushq $0x10d 0.00 : 159fb: e9 10 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015a00 : 0.00 : 15a00: ff 25 82 4e 22 00 jmpq *0x224e82(%rip) # 23a888 <_fini+0x207e00> 0.00 : 15a06: 68 0e 01 00 00 pushq $0x10e 0.00 : 15a0b: e9 00 ef ff ff jmpq 14910 <_init+0x20> : : 0000000000015a10 : 0.00 : 15a10: ff 25 7a 4e 22 00 jmpq *0x224e7a(%rip) # 23a890 <_fini+0x207e08> 0.00 : 15a16: 68 0f 01 00 00 pushq $0x10f 0.00 : 15a1b: e9 f0 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a20 : 0.00 : 15a20: ff 25 72 4e 22 00 jmpq *0x224e72(%rip) # 23a898 <_fini+0x207e10> 0.00 : 15a26: 68 10 01 00 00 pushq $0x110 0.00 : 15a2b: e9 e0 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a30 : 0.00 : 15a30: ff 25 6a 4e 22 00 jmpq *0x224e6a(%rip) # 23a8a0 <_fini+0x207e18> 0.00 : 15a36: 68 11 01 00 00 pushq $0x111 0.00 : 15a3b: e9 d0 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a40 : 0.00 : 15a40: ff 25 62 4e 22 00 jmpq *0x224e62(%rip) # 23a8a8 <_fini+0x207e20> 0.00 : 15a46: 68 12 01 00 00 pushq $0x112 0.00 : 15a4b: e9 c0 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a50 <_rl_arg_init@plt>: 0.00 : 15a50: ff 25 5a 4e 22 00 jmpq *0x224e5a(%rip) # 23a8b0 <_fini+0x207e28> 0.00 : 15a56: 68 13 01 00 00 pushq $0x113 0.00 : 15a5b: e9 b0 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a60 <_rl_vi_done_inserting@plt>: 0.00 : 15a60: ff 25 52 4e 22 00 jmpq *0x224e52(%rip) # 23a8b8 <_fini+0x207e30> 0.00 : 15a66: 68 14 01 00 00 pushq $0x114 0.00 : 15a6b: e9 a0 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a70 <_rl_update_final@plt>: 0.00 : 15a70: ff 25 4a 4e 22 00 jmpq *0x224e4a(%rip) # 23a8c0 <_fini+0x207e38> 0.00 : 15a76: 68 15 01 00 00 pushq $0x115 0.00 : 15a7b: e9 90 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a80 : 0.00 : 15a80: ff 25 42 4e 22 00 jmpq *0x224e42(%rip) # 23a8c8 <_fini+0x207e40> 0.00 : 15a86: 68 16 01 00 00 pushq $0x116 0.00 : 15a8b: e9 80 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015a90 : 0.00 : 15a90: ff 25 3a 4e 22 00 jmpq *0x224e3a(%rip) # 23a8d0 <_fini+0x207e48> 0.00 : 15a96: 68 17 01 00 00 pushq $0x117 0.00 : 15a9b: e9 70 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015aa0 : 0.00 : 15aa0: ff 25 32 4e 22 00 jmpq *0x224e32(%rip) # 23a8d8 <_fini+0x207e50> 0.00 : 15aa6: 68 18 01 00 00 pushq $0x118 0.00 : 15aab: e9 60 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015ab0 <__ctype_tolower_loc@plt>: 0.00 : 15ab0: ff 25 2a 4e 22 00 jmpq *0x224e2a(%rip) # 23a8e0 <_fini+0x207e58> 0.00 : 15ab6: 68 19 01 00 00 pushq $0x119 0.00 : 15abb: e9 50 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015ac0 <_rl_next_macro_key@plt>: 0.00 : 15ac0: ff 25 22 4e 22 00 jmpq *0x224e22(%rip) # 23a8e8 <_fini+0x207e60> 0.00 : 15ac6: 68 1a 01 00 00 pushq $0x11a 0.00 : 15acb: e9 40 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015ad0 : 0.00 : 15ad0: ff 25 1a 4e 22 00 jmpq *0x224e1a(%rip) # 23a8f0 <_fini+0x207e68> 0.00 : 15ad6: 68 1b 01 00 00 pushq $0x11b 0.00 : 15adb: e9 30 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015ae0 : 0.00 : 15ae0: ff 25 12 4e 22 00 jmpq *0x224e12(%rip) # 23a8f8 <_fini+0x207e70> 0.00 : 15ae6: 68 1c 01 00 00 pushq $0x11c 0.00 : 15aeb: e9 20 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015af0 : 0.00 : 15af0: ff 25 0a 4e 22 00 jmpq *0x224e0a(%rip) # 23a900 <_fini+0x207e78> 0.00 : 15af6: 68 1d 01 00 00 pushq $0x11d 0.00 : 15afb: e9 10 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015b00 : 0.00 : 15b00: ff 25 02 4e 22 00 jmpq *0x224e02(%rip) # 23a908 <_fini+0x207e80> 0.00 : 15b06: 68 1e 01 00 00 pushq $0x11e 0.00 : 15b0b: e9 00 ee ff ff jmpq 14910 <_init+0x20> : : 0000000000015b10 <_rl_arg_dispatch@plt>: 0.00 : 15b10: ff 25 fa 4d 22 00 jmpq *0x224dfa(%rip) # 23a910 <_fini+0x207e88> 0.00 : 15b16: 68 1f 01 00 00 pushq $0x11f 0.00 : 15b1b: e9 f0 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b20 : 0.00 : 15b20: ff 25 f2 4d 22 00 jmpq *0x224df2(%rip) # 23a918 <_fini+0x207e90> 0.00 : 15b26: 68 20 01 00 00 pushq $0x120 0.00 : 15b2b: e9 e0 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b30 : 0.00 : 15b30: ff 25 ea 4d 22 00 jmpq *0x224dea(%rip) # 23a920 <_fini+0x207e98> 0.00 : 15b36: 68 21 01 00 00 pushq $0x121 0.00 : 15b3b: e9 d0 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b40 : 0.00 : 15b40: ff 25 e2 4d 22 00 jmpq *0x224de2(%rip) # 23a928 <_fini+0x207ea0> 0.00 : 15b46: 68 22 01 00 00 pushq $0x122 0.00 : 15b4b: e9 c0 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b50 : 0.00 : 15b50: ff 25 da 4d 22 00 jmpq *0x224dda(%rip) # 23a930 <_fini+0x207ea8> 0.00 : 15b56: 68 23 01 00 00 pushq $0x123 0.00 : 15b5b: e9 b0 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b60 : 0.00 : 15b60: ff 25 d2 4d 22 00 jmpq *0x224dd2(%rip) # 23a938 <_fini+0x207eb0> 0.00 : 15b66: 68 24 01 00 00 pushq $0x124 0.00 : 15b6b: e9 a0 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b70 : 0.00 : 15b70: ff 25 ca 4d 22 00 jmpq *0x224dca(%rip) # 23a940 <_fini+0x207eb8> 0.00 : 15b76: 68 25 01 00 00 pushq $0x125 0.00 : 15b7b: e9 90 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b80 <_rl_read_mbchar@plt>: 0.00 : 15b80: ff 25 c2 4d 22 00 jmpq *0x224dc2(%rip) # 23a948 <_fini+0x207ec0> 0.00 : 15b86: 68 26 01 00 00 pushq $0x126 0.00 : 15b8b: e9 80 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015b90 : 0.00 : 15b90: ff 25 ba 4d 22 00 jmpq *0x224dba(%rip) # 23a950 <_fini+0x207ec8> 0.00 : 15b96: 68 27 01 00 00 pushq $0x127 0.00 : 15b9b: e9 70 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015ba0 <_rl_start_using_history@plt>: 0.00 : 15ba0: ff 25 b2 4d 22 00 jmpq *0x224db2(%rip) # 23a958 <_fini+0x207ed0> 0.00 : 15ba6: 68 28 01 00 00 pushq $0x128 0.00 : 15bab: e9 60 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015bb0 <__lxstat@plt>: 0.00 : 15bb0: ff 25 aa 4d 22 00 jmpq *0x224daa(%rip) # 23a960 <_fini+0x207ed8> 0.00 : 15bb6: 68 29 01 00 00 pushq $0x129 0.00 : 15bbb: e9 50 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015bc0 : 0.00 : 15bc0: ff 25 a2 4d 22 00 jmpq *0x224da2(%rip) # 23a968 <_fini+0x207ee0> 0.00 : 15bc6: 68 2a 01 00 00 pushq $0x12a 0.00 : 15bcb: e9 40 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015bd0 : 0.00 : 15bd0: ff 25 9a 4d 22 00 jmpq *0x224d9a(%rip) # 23a970 <_fini+0x207ee8> 0.00 : 15bd6: 68 2b 01 00 00 pushq $0x12b 0.00 : 15bdb: e9 30 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015be0 : 0.00 : 15be0: ff 25 92 4d 22 00 jmpq *0x224d92(%rip) # 23a978 <_fini+0x207ef0> 0.00 : 15be6: 68 2c 01 00 00 pushq $0x12c 0.00 : 15beb: e9 20 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015bf0 : 0.00 : 15bf0: ff 25 8a 4d 22 00 jmpq *0x224d8a(%rip) # 23a980 <_fini+0x207ef8> 0.00 : 15bf6: 68 2d 01 00 00 pushq $0x12d 0.00 : 15bfb: e9 10 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015c00 <__sprintf_chk@plt>: 0.00 : 15c00: ff 25 82 4d 22 00 jmpq *0x224d82(%rip) # 23a988 <_fini+0x207f00> 0.00 : 15c06: 68 2e 01 00 00 pushq $0x12e 0.00 : 15c0b: e9 00 ed ff ff jmpq 14910 <_init+0x20> : : 0000000000015c10 : 0.00 : 15c10: ff 25 7a 4d 22 00 jmpq *0x224d7a(%rip) # 23a990 <_fini+0x207f08> 0.00 : 15c16: 68 2f 01 00 00 pushq $0x12f 0.00 : 15c1b: e9 f0 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c20 <__snprintf_chk@plt>: 0.00 : 15c20: ff 25 72 4d 22 00 jmpq *0x224d72(%rip) # 23a998 <_fini+0x207f10> 0.00 : 15c26: 68 30 01 00 00 pushq $0x130 0.00 : 15c2b: e9 e0 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c30 : 0.00 : 15c30: ff 25 6a 4d 22 00 jmpq *0x224d6a(%rip) # 23a9a0 <_fini+0x207f18> 0.00 : 15c36: 68 31 01 00 00 pushq $0x131 0.00 : 15c3b: e9 d0 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c40 : 0.00 : 15c40: ff 25 62 4d 22 00 jmpq *0x224d62(%rip) # 23a9a8 <_fini+0x207f20> 0.00 : 15c46: 68 32 01 00 00 pushq $0x132 0.00 : 15c4b: e9 c0 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c50 : 0.00 : 15c50: ff 25 5a 4d 22 00 jmpq *0x224d5a(%rip) # 23a9b0 <_fini+0x207f28> 0.00 : 15c56: 68 33 01 00 00 pushq $0x133 0.00 : 15c5b: e9 b0 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c60 <_rl_kill_kbd_macro@plt>: 0.00 : 15c60: ff 25 52 4d 22 00 jmpq *0x224d52(%rip) # 23a9b8 <_fini+0x207f30> 0.00 : 15c66: 68 34 01 00 00 pushq $0x134 0.00 : 15c6b: e9 a0 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c70 : 0.00 : 15c70: ff 25 4a 4d 22 00 jmpq *0x224d4a(%rip) # 23a9c0 <_fini+0x207f38> 0.00 : 15c76: 68 35 01 00 00 pushq $0x135 0.00 : 15c7b: e9 90 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c80 : 0.00 : 15c80: ff 25 42 4d 22 00 jmpq *0x224d42(%rip) # 23a9c8 <_fini+0x207f40> 0.00 : 15c86: 68 36 01 00 00 pushq $0x136 0.00 : 15c8b: e9 80 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015c90 : 0.00 : 15c90: ff 25 3a 4d 22 00 jmpq *0x224d3a(%rip) # 23a9d0 <_fini+0x207f48> 0.00 : 15c96: 68 37 01 00 00 pushq $0x137 0.00 : 15c9b: e9 70 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015ca0 : 0.00 : 15ca0: ff 25 32 4d 22 00 jmpq *0x224d32(%rip) # 23a9d8 <_fini+0x207f50> 0.00 : 15ca6: 68 38 01 00 00 pushq $0x138 0.00 : 15cab: e9 60 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015cb0 : 0.00 : 15cb0: ff 25 2a 4d 22 00 jmpq *0x224d2a(%rip) # 23a9e0 <_fini+0x207f58> 0.00 : 15cb6: 68 39 01 00 00 pushq $0x139 0.00 : 15cbb: e9 50 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015cc0 : 0.00 : 15cc0: ff 25 22 4d 22 00 jmpq *0x224d22(%rip) # 23a9e8 <_fini+0x207f60> 0.00 : 15cc6: 68 3a 01 00 00 pushq $0x13a 0.00 : 15ccb: e9 40 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015cd0 : 0.00 : 15cd0: ff 25 1a 4d 22 00 jmpq *0x224d1a(%rip) # 23a9f0 <_fini+0x207f68> 0.00 : 15cd6: 68 3b 01 00 00 pushq $0x13b 0.00 : 15cdb: e9 30 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015ce0 : 0.00 : 15ce0: ff 25 12 4d 22 00 jmpq *0x224d12(%rip) # 23a9f8 <_fini+0x207f70> 0.00 : 15ce6: 68 3c 01 00 00 pushq $0x13c 0.00 : 15ceb: e9 20 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015cf0 <__sigsetjmp@plt>: 0.00 : 15cf0: ff 25 0a 4d 22 00 jmpq *0x224d0a(%rip) # 23aa00 <_fini+0x207f78> 0.00 : 15cf6: 68 3d 01 00 00 pushq $0x13d 0.00 : 15cfb: e9 10 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015d00 : 0.00 : 15d00: ff 25 02 4d 22 00 jmpq *0x224d02(%rip) # 23aa08 <_fini+0x207f80> 0.00 : 15d06: 68 3e 01 00 00 pushq $0x13e 0.00 : 15d0b: e9 00 ec ff ff jmpq 14910 <_init+0x20> : : 0000000000015d10 <__memmove_chk@plt>: 0.00 : 15d10: ff 25 fa 4c 22 00 jmpq *0x224cfa(%rip) # 23aa10 <_fini+0x207f88> 0.00 : 15d16: 68 3f 01 00 00 pushq $0x13f 0.00 : 15d1b: e9 f0 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d20 : 0.00 : 15d20: ff 25 f2 4c 22 00 jmpq *0x224cf2(%rip) # 23aa18 <_fini+0x207f90> 0.00 : 15d26: 68 40 01 00 00 pushq $0x140 0.00 : 15d2b: e9 e0 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d30 : 0.00 : 15d30: ff 25 ea 4c 22 00 jmpq *0x224cea(%rip) # 23aa20 <_fini+0x207f98> 0.00 : 15d36: 68 41 01 00 00 pushq $0x141 0.00 : 15d3b: e9 d0 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d40 <_rl_read_mbstring@plt>: 0.00 : 15d40: ff 25 e2 4c 22 00 jmpq *0x224ce2(%rip) # 23aa28 <_fini+0x207fa0> 0.00 : 15d46: 68 42 01 00 00 pushq $0x142 0.00 : 15d4b: e9 c0 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d50 : 0.00 : 15d50: ff 25 da 4c 22 00 jmpq *0x224cda(%rip) # 23aa30 <_fini+0x207fa8> 0.00 : 15d56: 68 43 01 00 00 pushq $0x143 0.00 : 15d5b: e9 b0 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d60 : 0.00 : 15d60: ff 25 d2 4c 22 00 jmpq *0x224cd2(%rip) # 23aa38 <_fini+0x207fb0> 0.00 : 15d66: 68 44 01 00 00 pushq $0x144 0.00 : 15d6b: e9 a0 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d70 <_rl_overwrite_char@plt>: 0.00 : 15d70: ff 25 ca 4c 22 00 jmpq *0x224cca(%rip) # 23aa40 <_fini+0x207fb8> 0.00 : 15d76: 68 45 01 00 00 pushq $0x145 0.00 : 15d7b: e9 90 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d80 : 0.00 : 15d80: ff 25 c2 4c 22 00 jmpq *0x224cc2(%rip) # 23aa48 <_fini+0x207fc0> 0.00 : 15d86: 68 46 01 00 00 pushq $0x146 0.00 : 15d8b: e9 80 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015d90 : 0.00 : 15d90: ff 25 ba 4c 22 00 jmpq *0x224cba(%rip) # 23aa50 <_fini+0x207fc8> 0.00 : 15d96: 68 47 01 00 00 pushq $0x147 0.00 : 15d9b: e9 70 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015da0 : 0.00 : 15da0: ff 25 b2 4c 22 00 jmpq *0x224cb2(%rip) # 23aa58 <_fini+0x207fd0> 0.00 : 15da6: 68 48 01 00 00 pushq $0x148 0.00 : 15dab: e9 60 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015db0 : 0.00 : 15db0: ff 25 aa 4c 22 00 jmpq *0x224caa(%rip) # 23aa60 <_fini+0x207fd8> 0.00 : 15db6: 68 49 01 00 00 pushq $0x149 0.00 : 15dbb: e9 50 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015dc0 <_rl_clean_up_for_exit@plt>: 0.00 : 15dc0: ff 25 a2 4c 22 00 jmpq *0x224ca2(%rip) # 23aa68 <_fini+0x207fe0> 0.00 : 15dc6: 68 4a 01 00 00 pushq $0x14a 0.00 : 15dcb: e9 40 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015dd0 <_rl_keyseq_cxt_dispose@plt>: 0.00 : 15dd0: ff 25 9a 4c 22 00 jmpq *0x224c9a(%rip) # 23aa70 <_fini+0x207fe8> 0.00 : 15dd6: 68 4b 01 00 00 pushq $0x14b 0.00 : 15ddb: e9 30 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015de0 : 0.00 : 15de0: ff 25 92 4c 22 00 jmpq *0x224c92(%rip) # 23aa78 <_fini+0x207ff0> 0.00 : 15de6: 68 4c 01 00 00 pushq $0x14c 0.00 : 15deb: e9 20 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015df0 : 0.00 : 15df0: ff 25 8a 4c 22 00 jmpq *0x224c8a(%rip) # 23aa80 <_fini+0x207ff8> 0.00 : 15df6: 68 4d 01 00 00 pushq $0x14d 0.00 : 15dfb: e9 10 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015e00 <_rl_replace_text@plt>: 0.00 : 15e00: ff 25 82 4c 22 00 jmpq *0x224c82(%rip) # 23aa88 <_fini+0x208000> 0.00 : 15e06: 68 4e 01 00 00 pushq $0x14e 0.00 : 15e0b: e9 00 eb ff ff jmpq 14910 <_init+0x20> : : 0000000000015e10 <_rl_walphabetic@plt>: 0.00 : 15e10: ff 25 7a 4c 22 00 jmpq *0x224c7a(%rip) # 23aa90 <_fini+0x208008> 0.00 : 15e16: 68 4f 01 00 00 pushq $0x14f 0.00 : 15e1b: e9 f0 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e20 : 0.00 : 15e20: ff 25 72 4c 22 00 jmpq *0x224c72(%rip) # 23aa98 <_fini+0x208010> 0.00 : 15e26: 68 50 01 00 00 pushq $0x150 0.00 : 15e2b: e9 e0 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e30 : 0.00 : 15e30: ff 25 6a 4c 22 00 jmpq *0x224c6a(%rip) # 23aaa0 <_fini+0x208018> 0.00 : 15e36: 68 51 01 00 00 pushq $0x151 0.00 : 15e3b: e9 d0 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e40 : 0.00 : 15e40: ff 25 62 4c 22 00 jmpq *0x224c62(%rip) # 23aaa8 <_fini+0x208020> 0.00 : 15e46: 68 52 01 00 00 pushq $0x152 0.00 : 15e4b: e9 c0 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e50 <_rl_add_macro_char@plt>: 0.00 : 15e50: ff 25 5a 4c 22 00 jmpq *0x224c5a(%rip) # 23aab0 <_fini+0x208028> 0.00 : 15e56: 68 53 01 00 00 pushq $0x153 0.00 : 15e5b: e9 b0 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e60 : 0.00 : 15e60: ff 25 52 4c 22 00 jmpq *0x224c52(%rip) # 23aab8 <_fini+0x208030> 0.00 : 15e66: 68 54 01 00 00 pushq $0x154 0.00 : 15e6b: e9 a0 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e70 : 0.00 : 15e70: ff 25 4a 4c 22 00 jmpq *0x224c4a(%rip) # 23aac0 <_fini+0x208038> 0.00 : 15e76: 68 55 01 00 00 pushq $0x155 0.00 : 15e7b: e9 90 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e80 <_IO_putc@plt>: 0.00 : 15e80: ff 25 42 4c 22 00 jmpq *0x224c42(%rip) # 23aac8 <_fini+0x208040> 0.00 : 15e86: 68 56 01 00 00 pushq $0x156 0.00 : 15e8b: e9 80 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015e90 : 0.00 : 15e90: ff 25 3a 4c 22 00 jmpq *0x224c3a(%rip) # 23aad0 <_fini+0x208048> 0.00 : 15e96: 68 57 01 00 00 pushq $0x157 0.00 : 15e9b: e9 70 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015ea0 : 0.00 : 15ea0: ff 25 32 4c 22 00 jmpq *0x224c32(%rip) # 23aad8 <_fini+0x208050> 0.00 : 15ea6: 68 58 01 00 00 pushq $0x158 0.00 : 15eab: e9 60 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015eb0 : 0.00 : 15eb0: ff 25 2a 4c 22 00 jmpq *0x224c2a(%rip) # 23aae0 <_fini+0x208058> 0.00 : 15eb6: 68 59 01 00 00 pushq $0x159 0.00 : 15ebb: e9 50 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015ec0 : 0.00 : 15ec0: ff 25 22 4c 22 00 jmpq *0x224c22(%rip) # 23aae8 <_fini+0x208060> 0.00 : 15ec6: 68 5a 01 00 00 pushq $0x15a 0.00 : 15ecb: e9 40 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015ed0 : 0.00 : 15ed0: ff 25 1a 4c 22 00 jmpq *0x224c1a(%rip) # 23aaf0 <_fini+0x208068> 0.00 : 15ed6: 68 5b 01 00 00 pushq $0x15b 0.00 : 15edb: e9 30 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015ee0 : 0.00 : 15ee0: ff 25 12 4c 22 00 jmpq *0x224c12(%rip) # 23aaf8 <_fini+0x208070> 0.00 : 15ee6: 68 5c 01 00 00 pushq $0x15c 0.00 : 15eeb: e9 20 ea ff ff jmpq 14910 <_init+0x20> : : 0000000000015ef0 <__mbrlen@plt>: 0.00 : 15ef0: ff 25 0a 4c 22 00 jmpq *0x224c0a(%rip) # 23ab00 <_fini+0x208078> 0.00 : 15ef6: 68 5d 01 00 00 pushq $0x15d 0.00 : 15efb: e9 10 ea ff ff jmpq 14910 <_init+0x20> : : Disassembly of section .text: : : 0000000000015f00 <_rl_init_line_state-0xe0>: 0.00 : 15f00: 48 83 ec 08 sub $0x8,%rsp 0.00 : 15f04: 48 8b 05 4d 3b 22 00 mov 0x223b4d(%rip),%rax # 239a58 <_fini+0x206fd0> 0.00 : 15f0b: 48 85 c0 test %rax,%rax 0.00 : 15f0e: 74 02 je 15f12 <__mbrlen@plt+0x22> 0.00 : 15f10: ff d0 callq *%rax 0.00 : 15f12: 48 83 c4 08 add $0x8,%rsp 0.00 : 15f16: c3 retq 0.00 : 15f17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 15f1e: 00 00 0.00 : 15f20: 55 push %rbp 0.00 : 15f21: 80 3d 58 9e 22 00 00 cmpb $0x0,0x229e58(%rip) # 23fd80 <_edata+0x18> 0.00 : 15f28: 48 89 e5 mov %rsp,%rbp 0.00 : 15f2b: 41 54 push %r12 0.00 : 15f2d: 53 push %rbx 0.00 : 15f2e: 75 62 jne 15f92 <__mbrlen@plt+0xa2> 0.00 : 15f30: 48 83 3d 48 3d 22 00 cmpq $0x0,0x223d48(%rip) # 239c80 <_fini+0x2071f8> 0.00 : 15f37: 00 0.00 : 15f38: 74 0c je 15f46 <__mbrlen@plt+0x56> 0.00 : 15f3a: 48 8b 3d df 4b 22 00 mov 0x224bdf(%rip),%rdi # 23ab20 <_fini+0x208098> 0.00 : 15f41: e8 2a f3 ff ff callq 15270 <__cxa_finalize@plt> 0.00 : 15f46: 48 8d 05 c3 29 22 00 lea 0x2229c3(%rip),%rax # 238910 <_fini+0x205e88> 0.00 : 15f4d: 4c 8d 25 b4 29 22 00 lea 0x2229b4(%rip),%r12 # 238908 <_fini+0x205e80> 0.00 : 15f54: 48 8b 15 2d 9e 22 00 mov 0x229e2d(%rip),%rdx # 23fd88 <_edata+0x20> 0.00 : 15f5b: 4c 29 e0 sub %r12,%rax 0.00 : 15f5e: 48 c1 f8 03 sar $0x3,%rax 0.00 : 15f62: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 15f66: 48 39 da cmp %rbx,%rdx 0.00 : 15f69: 73 20 jae 15f8b <__mbrlen@plt+0x9b> 0.00 : 15f6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 15f70: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 15f74: 48 89 05 0d 9e 22 00 mov %rax,0x229e0d(%rip) # 23fd88 <_edata+0x20> 0.00 : 15f7b: 41 ff 14 c4 callq *(%r12,%rax,8) 0.00 : 15f7f: 48 8b 15 02 9e 22 00 mov 0x229e02(%rip),%rdx # 23fd88 <_edata+0x20> 0.00 : 15f86: 48 39 da cmp %rbx,%rdx 0.00 : 15f89: 72 e5 jb 15f70 <__mbrlen@plt+0x80> 0.00 : 15f8b: c6 05 ee 9d 22 00 01 movb $0x1,0x229dee(%rip) # 23fd80 <_edata+0x18> 0.00 : 15f92: 5b pop %rbx 0.00 : 15f93: 41 5c pop %r12 0.00 : 15f95: c9 leaveq 0.00 : 15f96: c3 retq 0.00 : 15f97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 15f9e: 00 00 0.00 : 15fa0: 55 push %rbp 0.00 : 15fa1: 48 83 3d 6f 29 22 00 cmpq $0x0,0x22296f(%rip) # 238918 <_fini+0x205e90> 0.00 : 15fa8: 00 0.00 : 15fa9: 48 89 e5 mov %rsp,%rbp 0.00 : 15fac: 74 22 je 15fd0 <__mbrlen@plt+0xe0> 0.00 : 15fae: 48 8b 05 ab 3a 22 00 mov 0x223aab(%rip),%rax # 239a60 <_fini+0x206fd8> 0.00 : 15fb5: 48 85 c0 test %rax,%rax 0.00 : 15fb8: 74 16 je 15fd0 <__mbrlen@plt+0xe0> 0.00 : 15fba: 48 8d 3d 57 29 22 00 lea 0x222957(%rip),%rdi # 238918 <_fini+0x205e90> 0.00 : 15fc1: 49 89 c3 mov %rax,%r11 0.00 : 15fc4: c9 leaveq 0.00 : 15fc5: 41 ff e3 jmpq *%r11 0.00 : 15fc8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 15fcf: 00 0.00 : 15fd0: c9 leaveq 0.00 : 15fd1: c3 retq 0.00 : 15fd2: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 15fd9: 00 00 00 0.00 : 15fdc: 0f 1f 40 00 nopl 0x0(%rax) Sorted summary for file /lib64/libreadline.so.5.2 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libreadline.so.5.2 ------------------------------------------------ : : : : Disassembly of section .fini: : : 0000000000032a88 <_fini>: 100.00 : 32a88: 55 push %rbp 0.00 : 32a89: 48 83 ec 08 sub $0x8,%rsp 0.00 : 32a8d: e8 06 00 00 00 callq 32a98 <_fini+0x10> 0.00 : 32a92: 48 83 c4 08 add $0x8,%rsp 0.00 : 32a96: 5d pop %rbp Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000007c10 : ??:0 100.00 : 7c10: ff 25 ea 04 22 00 jmpq *0x2204ea(%rip) # 228100 <_GLOBAL_OFFSET_TABLE_+0x100> 0.00 : 7c16: 68 1d 00 00 00 pushq $0x1d 0.00 : 7c1b: e9 10 fe ff ff jmpq 7a30 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000007e30 : 0.00 : 7e30: ff 25 da 03 22 00 jmpq *0x2203da(%rip) # 228210 <_GLOBAL_OFFSET_TABLE_+0x210> ??:0 100.00 : 7e36: 68 3f 00 00 00 pushq $0x3f 0.00 : 7e3b: e9 f0 fb ff ff jmpq 7a30 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008490 : : * pg_fe_sendauth : * client demux routine for outgoing authentication information : */ : int : pg_fe_sendauth(AuthRequest areq, PGconn *conn) : { 0.00 : 8490: 55 push %rbp 0.00 : 8491: 89 f9 mov %edi,%ecx 0.00 : 8493: 48 89 e5 mov %rsp,%rbp 0.00 : 8496: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 849a: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 849e: 49 89 f5 mov %rsi,%r13 0.00 : 84a1: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 84a5: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 84a9: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 84ad: 48 83 ec 30 sub $0x30,%rsp : switch (areq) 0.00 : 84b1: 83 ff 09 cmp $0x9,%edi 0.00 : 84b4: 76 3a jbe 84f0 : if (pg_local_sendauth(conn) != STATUS_OK) : return STATUS_ERROR; : break; : : default: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 84b6: 48 8d be 00 03 00 00 lea 0x300(%rsi),%rdi 0.00 : 84bd: 48 8d 35 84 59 01 00 lea 0x15984(%rip),%rsi # 1de48 <_real_fini+0x170> 0.00 : 84c4: 31 c0 xor %eax,%eax 0.00 : 84c6: 89 ca mov %ecx,%edx 0.00 : 84c8: e8 03 fa ff ff callq 7ed0 0.00 : 84cd: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 84d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 84d8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 84dc: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 84e0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 84e4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 84e8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 84ec: c9 leaveq 0.00 : 84ed: c3 retq 0.00 : 84ee: 66 90 xchg %ax,%ax : * client demux routine for outgoing authentication information : */ : int : pg_fe_sendauth(AuthRequest areq, PGconn *conn) : { : switch (areq) ??:0 100.00 : 84f0: 48 8d 15 89 59 01 00 lea 0x15989(%rip),%rdx # 1de80 <_real_fini+0x1a8> 0.00 : 84f7: 89 f8 mov %edi,%eax 0.00 : 84f9: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : 84fd: 48 01 d0 add %rdx,%rax 0.00 : 8500: ff e0 jmpq *%rax 0.00 : 8502: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (pg_local_sendauth(conn) != STATUS_OK) : return STATUS_ERROR; : break; : : default: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 8508: 31 c0 xor %eax,%eax 0.00 : 850a: eb cc jmp 84d8 0.00 : 850c: 0f 1f 40 00 nopl 0x0(%rax) : { : case AUTH_REQ_OK: : break; : : case AUTH_REQ_KRB4: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 8510: 48 8d be 00 03 00 00 lea 0x300(%rsi),%rdi 0.00 : 8517: 48 8d 35 c2 57 01 00 lea 0x157c2(%rip),%rsi # 1dce0 <_real_fini+0x8> 0.00 : 851e: 31 c0 xor %eax,%eax 0.00 : 8520: e8 ab f9 ff ff callq 7ed0 0.00 : 8525: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 852a: eb ac jmp 84d8 0.00 : 852c: 0f 1f 40 00 nopl 0x0(%rax) : printfPQExpBuffer(&conn->errorMessage, : libpq_gettext("Kerberos 4 authentication not supported\n")); : return STATUS_ERROR; : : case AUTH_REQ_KRB5: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 8530: 48 8d be 00 03 00 00 lea 0x300(%rsi),%rdi 0.00 : 8537: 48 8d 35 d2 57 01 00 lea 0x157d2(%rip),%rsi # 1dd10 <_real_fini+0x38> 0.00 : 853e: 31 c0 xor %eax,%eax 0.00 : 8540: e8 8b f9 ff ff callq 7ed0 0.00 : 8545: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 854a: eb 8c jmp 84d8 0.00 : 854c: 0f 1f 40 00 nopl 0x0(%rax) : return STATUS_ERROR; : : case AUTH_REQ_MD5: : case AUTH_REQ_PASSWORD: : conn->password_needed = true; : if (conn->pgpass == NULL || conn->pgpass[0] == '\0') 0.00 : 8550: 4c 8b 76 68 mov 0x68(%rsi),%r14 : libpq_gettext("Crypt authentication not supported\n")); : return STATUS_ERROR; : : case AUTH_REQ_MD5: : case AUTH_REQ_PASSWORD: : conn->password_needed = true; 0.00 : 8554: c6 86 59 02 00 00 01 movb $0x1,0x259(%rsi) : if (conn->pgpass == NULL || conn->pgpass[0] == '\0') 0.00 : 855b: 4d 85 f6 test %r14,%r14 0.00 : 855e: 74 0a je 856a 0.00 : 8560: 41 80 3e 00 cmpb $0x0,(%r14) 0.00 : 8564: 0f 85 a6 00 00 00 jne 8610 : { : printfPQExpBuffer(&conn->errorMessage, 0.00 : 856a: 49 8d bd 00 03 00 00 lea 0x300(%r13),%rdi 0.00 : 8571: 48 8d 35 40 58 01 00 lea 0x15840(%rip),%rsi # 1ddb8 <_real_fini+0xe0> 0.00 : 8578: 31 c0 xor %eax,%eax 0.00 : 857a: e8 51 f9 ff ff callq 7ed0 0.00 : 857f: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 8584: e9 4f ff ff ff jmpq 84d8 0.00 : 8589: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif /* !define(ENABLE_GSSAPI) */ : #endif /* ENABLE_SSPI */ : : : case AUTH_REQ_CRYPT: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 8590: 48 8d be 00 03 00 00 lea 0x300(%rsi),%rdi 0.00 : 8597: 48 8d 35 f2 57 01 00 lea 0x157f2(%rip),%rsi # 1dd90 <_real_fini+0xb8> 0.00 : 859e: 31 c0 xor %eax,%eax 0.00 : 85a0: e8 2b f9 ff ff callq 7ed0 0.00 : 85a5: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 85aa: e9 29 ff ff ff jmpq 84d8 0.00 : 85af: 90 nop : pqStrerror(errno, sebuf, sizeof(sebuf))); : return STATUS_ERROR; : } : return STATUS_OK; : #else : printfPQExpBuffer(&conn->errorMessage, 0.00 : 85b0: 48 8d be 00 03 00 00 lea 0x300(%rsi),%rdi 0.00 : 85b7: 48 8d 35 5a 58 01 00 lea 0x1585a(%rip),%rsi # 1de18 <_real_fini+0x140> 0.00 : 85be: 31 c0 xor %eax,%eax 0.00 : 85c0: e8 0b f9 ff ff callq 7ed0 0.00 : 85c5: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 85ca: e9 09 ff ff ff jmpq 84d8 0.00 : 85cf: 90 nop : break; : #else /* defined(ENABLE_GSS) || defined(ENABLE_SSPI) */ : /* No GSSAPI *or* SSPI support */ : case AUTH_REQ_GSS: : case AUTH_REQ_GSS_CONT: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 85d0: 48 8d be 00 03 00 00 lea 0x300(%rsi),%rdi 0.00 : 85d7: 48 8d 35 62 57 01 00 lea 0x15762(%rip),%rsi # 1dd40 <_real_fini+0x68> 0.00 : 85de: 31 c0 xor %eax,%eax 0.00 : 85e0: e8 eb f8 ff ff callq 7ed0 0.00 : 85e5: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 85ea: e9 e9 fe ff ff jmpq 84d8 0.00 : 85ef: 90 nop : * for AUTH_REQ_GSSAPI above, so don't duplicate the case label in : * that case. : */ : #if !defined(ENABLE_GSS) : case AUTH_REQ_SSPI: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 85f0: 48 8d be 00 03 00 00 lea 0x300(%rsi),%rdi 0.00 : 85f7: 48 8d 35 6a 57 01 00 lea 0x1576a(%rip),%rsi # 1dd68 <_real_fini+0x90> 0.00 : 85fe: 31 c0 xor %eax,%eax 0.00 : 8600: e8 cb f8 ff ff callq 7ed0 0.00 : 8605: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 860a: e9 c9 fe ff ff jmpq 84d8 0.00 : 860f: 90 nop : char *crypt_pwd = NULL; : const char *pwd_to_send; : : /* Encrypt the password if needed. */ : : switch (areq) 0.00 : 8610: 83 ff 03 cmp $0x3,%edi 0.00 : 8613: 74 2b je 8640 0.00 : 8615: 83 ff 05 cmp $0x5,%edi 0.00 : 8618: 48 8d 9e 00 03 00 00 lea 0x300(%rsi),%rbx 0.00 : 861f: 74 77 je 8698 : PQnoPasswordSupplied); : return STATUS_ERROR; : } : if (pg_password_sendauth(conn, conn->pgpass, areq) != STATUS_OK) : { : printfPQExpBuffer(&conn->errorMessage, 0.00 : 8621: 48 8d 35 b8 57 01 00 lea 0x157b8(%rip),%rsi # 1dde0 <_real_fini+0x108> 0.00 : 8628: 31 c0 xor %eax,%eax 0.00 : 862a: 48 89 df mov %rbx,%rdi 0.00 : 862d: e8 9e f8 ff ff callq 7ed0 0.00 : 8632: b8 ff ff ff ff mov $0xffffffff,%eax : libpq_gettext("authentication method %u not supported\n"), areq); : return STATUS_ERROR; : } : : return STATUS_OK; : } 0.00 : 8637: e9 9c fe ff ff jmpq 84d8 0.00 : 863c: 0f 1f 40 00 nopl 0x0(%rax) : return STATUS_ERROR; : } : if (!pg_md5_encrypt(crypt_pwd2 + strlen("md5"), conn->md5Salt, : sizeof(conn->md5Salt), crypt_pwd)) : { : free(crypt_pwd); 0.00 : 8640: 4c 89 f3 mov %r14,%rbx 0.00 : 8643: 45 31 ff xor %r15d,%r15d : break; : default: : return STATUS_ERROR; : } : /* Packet has a message type as of protocol 3.0 */ : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) 0.00 : 8646: 66 41 83 bd 52 02 00 cmpw $0x2,0x252(%r13) 0.00 : 864d: 00 02 0.00 : 864f: 0f 86 bb 00 00 00 jbe 8710 : ret = pqPacketSend(conn, 'p', pwd_to_send, strlen(pwd_to_send) + 1); 0.00 : 8655: 48 89 df mov %rbx,%rdi 0.00 : 8658: e8 a3 f5 ff ff callq 7c00 0.00 : 865d: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 8661: 48 89 da mov %rbx,%rdx 0.00 : 8664: be 70 00 00 00 mov $0x70,%esi 0.00 : 8669: 4c 89 ef mov %r13,%rdi 0.00 : 866c: e8 5f 24 00 00 callq aad0 0.00 : 8671: 89 c3 mov %eax,%ebx : else : ret = pqPacketSend(conn, 0, pwd_to_send, strlen(pwd_to_send) + 1); : if (crypt_pwd) 0.00 : 8673: 4d 85 ff test %r15,%r15 0.00 : 8676: 74 08 je 8680 : free(crypt_pwd); 0.00 : 8678: 4c 89 ff mov %r15,%rdi 0.00 : 867b: e8 f0 f3 ff ff callq 7a70 : { : printfPQExpBuffer(&conn->errorMessage, : PQnoPasswordSupplied); : return STATUS_ERROR; : } : if (pg_password_sendauth(conn, conn->pgpass, areq) != STATUS_OK) 0.00 : 8680: 85 db test %ebx,%ebx 0.00 : 8682: 0f 84 80 fe ff ff je 8508 0.00 : 8688: 49 8d 9d 00 03 00 00 lea 0x300(%r13),%rbx 0.00 : 868f: eb 90 jmp 8621 0.00 : 8691: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case AUTH_REQ_MD5: : { : char *crypt_pwd2; : : /* Allocate enough space for two MD5 hashes */ : crypt_pwd = malloc(2 * (MD5_PASSWD_LEN + 1)); 0.00 : 8698: bf 48 00 00 00 mov $0x48,%edi 0.00 : 869d: e8 9e f8 ff ff callq 7f40 : if (!crypt_pwd) 0.00 : 86a2: 48 85 c0 test %rax,%rax : case AUTH_REQ_MD5: : { : char *crypt_pwd2; : : /* Allocate enough space for two MD5 hashes */ : crypt_pwd = malloc(2 * (MD5_PASSWD_LEN + 1)); 0.00 : 86a5: 49 89 c7 mov %rax,%r15 0.00 : 86a8: 48 89 45 d0 mov %rax,-0x30(%rbp) : if (!crypt_pwd) 0.00 : 86ac: 0f 84 92 00 00 00 je 8744 : libpq_gettext("out of memory\n")); : return STATUS_ERROR; : } : : crypt_pwd2 = crypt_pwd + MD5_PASSWD_LEN + 1; : if (!pg_md5_encrypt(password, conn->pguser, 0.00 : 86b2: 49 8b 5d 60 mov 0x60(%r13),%rbx : printfPQExpBuffer(&conn->errorMessage, : libpq_gettext("out of memory\n")); : return STATUS_ERROR; : } : : crypt_pwd2 = crypt_pwd + MD5_PASSWD_LEN + 1; 0.00 : 86b6: 4c 8d 60 24 lea 0x24(%rax),%r12 : if (!pg_md5_encrypt(password, conn->pguser, 0.00 : 86ba: 48 89 df mov %rbx,%rdi 0.00 : 86bd: e8 3e f5 ff ff callq 7c00 0.00 : 86c2: 4c 89 e1 mov %r12,%rcx 0.00 : 86c5: 48 89 c2 mov %rax,%rdx 0.00 : 86c8: 48 89 de mov %rbx,%rsi 0.00 : 86cb: 4c 89 f7 mov %r14,%rdi 0.00 : 86ce: e8 bd 3b 01 00 callq 1c290 0.00 : 86d3: 84 c0 test %al,%al 0.00 : 86d5: 74 59 je 8730 : strlen(conn->pguser), crypt_pwd2)) : { : free(crypt_pwd); : return STATUS_ERROR; : } : if (!pg_md5_encrypt(crypt_pwd2 + strlen("md5"), conn->md5Salt, 0.00 : 86d7: 49 8d b5 8c 02 00 00 lea 0x28c(%r13),%rsi 0.00 : 86de: 49 8d 7f 27 lea 0x27(%r15),%rdi 0.00 : 86e2: 4c 89 f9 mov %r15,%rcx 0.00 : 86e5: ba 04 00 00 00 mov $0x4,%edx 0.00 : 86ea: 4c 89 fb mov %r15,%rbx 0.00 : 86ed: e8 9e 3b 01 00 callq 1c290 0.00 : 86f2: 84 c0 test %al,%al 0.00 : 86f4: 0f 85 4c ff ff ff jne 8646 : sizeof(conn->md5Salt), crypt_pwd)) : { : free(crypt_pwd); 0.00 : 86fa: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 86fe: 49 8d 9d 00 03 00 00 lea 0x300(%r13),%rbx 0.00 : 8705: e8 66 f3 ff ff callq 7a70 0.00 : 870a: e9 12 ff ff ff jmpq 8621 0.00 : 870f: 90 nop : } : /* Packet has a message type as of protocol 3.0 */ : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) : ret = pqPacketSend(conn, 'p', pwd_to_send, strlen(pwd_to_send) + 1); : else : ret = pqPacketSend(conn, 0, pwd_to_send, strlen(pwd_to_send) + 1); 0.00 : 8710: 48 89 df mov %rbx,%rdi 0.00 : 8713: e8 e8 f4 ff ff callq 7c00 0.00 : 8718: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 871c: 48 89 da mov %rbx,%rdx 0.00 : 871f: 31 f6 xor %esi,%esi 0.00 : 8721: 4c 89 ef mov %r13,%rdi 0.00 : 8724: e8 a7 23 00 00 callq aad0 0.00 : 8729: 89 c3 mov %eax,%ebx 0.00 : 872b: e9 43 ff ff ff jmpq 8673 : : crypt_pwd2 = crypt_pwd + MD5_PASSWD_LEN + 1; : if (!pg_md5_encrypt(password, conn->pguser, : strlen(conn->pguser), crypt_pwd2)) : { : free(crypt_pwd); 0.00 : 8730: 4c 89 ff mov %r15,%rdi 0.00 : 8733: 49 8d 9d 00 03 00 00 lea 0x300(%r13),%rbx 0.00 : 873a: e8 31 f3 ff ff callq 7a70 0.00 : 873f: e9 dd fe ff ff jmpq 8621 : : /* Allocate enough space for two MD5 hashes */ : crypt_pwd = malloc(2 * (MD5_PASSWD_LEN + 1)); : if (!crypt_pwd) : { : printfPQExpBuffer(&conn->errorMessage, 0.00 : 8744: 49 8d 9d 00 03 00 00 lea 0x300(%r13),%rbx 0.00 : 874b: 48 8d 35 1e 57 01 00 lea 0x1571e(%rip),%rsi # 1de70 <_real_fini+0x198> 0.00 : 8752: 31 c0 xor %eax,%eax 0.00 : 8754: 48 89 df mov %rbx,%rdi 0.00 : 8757: e8 74 f7 ff ff callq 7ed0 0.00 : 875c: e9 c0 fe ff ff jmpq 8621 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009380 : : * makeEmptyPGconn : * - create a PGconn data structure with (as yet) no interesting data : */ : static PGconn * : makeEmptyPGconn(void) : { ??:0 100.00 : 9380: 55 push %rbp : if (WSAStartup(MAKEWORD(1, 1), &wsaData)) : return NULL; : WSASetLastError(0); : #endif : : conn = (PGconn *) malloc(sizeof(PGconn)); 0.00 : 9381: bf 30 03 00 00 mov $0x330,%edi : * makeEmptyPGconn : * - create a PGconn data structure with (as yet) no interesting data : */ : static PGconn * : makeEmptyPGconn(void) : { 0.00 : 9386: 48 89 e5 mov %rsp,%rbp 0.00 : 9389: 41 54 push %r12 0.00 : 938b: 53 push %rbx : if (WSAStartup(MAKEWORD(1, 1), &wsaData)) : return NULL; : WSASetLastError(0); : #endif : : conn = (PGconn *) malloc(sizeof(PGconn)); 0.00 : 938c: e8 af eb ff ff callq 7f40 : if (conn == NULL) 0.00 : 9391: 48 85 c0 test %rax,%rax : if (WSAStartup(MAKEWORD(1, 1), &wsaData)) : return NULL; : WSASetLastError(0); : #endif : : conn = (PGconn *) malloc(sizeof(PGconn)); 0.00 : 9394: 48 89 c3 mov %rax,%rbx 0.00 : 9397: 49 89 c4 mov %rax,%r12 : if (conn == NULL) 0.00 : 939a: 0f 84 48 01 00 00 je 94e8 : #endif : return conn; : } : : /* Zero all pointers and booleans */ : MemSet(conn, 0, sizeof(PGconn)); 0.00 : 93a0: a8 07 test $0x7,%al 0.00 : 93a2: 0f 85 48 01 00 00 jne 94f0 0.00 : 93a8: 48 8d 93 30 03 00 00 lea 0x330(%rbx),%rdx 0.00 : 93af: 90 nop 0.00 : 93b0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 93b7: 48 83 c0 08 add $0x8,%rax 0.00 : 93bb: 48 39 d0 cmp %rdx,%rax 0.00 : 93be: 75 f0 jne 93b0 : : /* install default notice hooks */ : conn->noticeHooks.noticeRec = defaultNoticeReceiver; 0.00 : 93c0: 48 8d 05 e9 1c 00 00 lea 0x1ce9(%rip),%rax # b0b0 : * With the same goal of minimizing context swaps, the input buffer will : * be enlarged anytime it has less than 8K free, so we initially allocate : * twice that. : */ : conn->inBufSize = 16 * 1024; : conn->inBuffer = (char *) malloc(conn->inBufSize); 0.00 : 93c7: bf 00 40 00 00 mov $0x4000,%edi : : /* install default notice hooks */ : conn->noticeHooks.noticeRec = defaultNoticeReceiver; : conn->noticeHooks.noticeProc = defaultNoticeProcessor; : : conn->status = CONNECTION_BAD; 0.00 : 93cc: c7 83 00 01 00 00 01 movl $0x1,0x100(%rbx) 0.00 : 93d3: 00 00 00 : conn->asyncStatus = PGASYNC_IDLE; 0.00 : 93d6: c7 83 04 01 00 00 00 movl $0x0,0x104(%rbx) 0.00 : 93dd: 00 00 00 : conn->xactStatus = PQTRANS_IDLE; 0.00 : 93e0: c7 83 08 01 00 00 00 movl $0x0,0x108(%rbx) 0.00 : 93e7: 00 00 00 : : /* Zero all pointers and booleans */ : MemSet(conn, 0, sizeof(PGconn)); : : /* install default notice hooks */ : conn->noticeHooks.noticeRec = defaultNoticeReceiver; 0.00 : 93ea: 48 89 83 d0 00 00 00 mov %rax,0xd0(%rbx) : conn->noticeHooks.noticeProc = defaultNoticeProcessor; 0.00 : 93f1: 48 8d 05 98 1c 00 00 lea 0x1c98(%rip),%rax # b090 : : conn->status = CONNECTION_BAD; : conn->asyncStatus = PGASYNC_IDLE; : conn->xactStatus = PQTRANS_IDLE; : conn->options_valid = false; 0.00 : 93f8: c6 83 1e 01 00 00 00 movb $0x0,0x11e(%rbx) : conn->nonblocking = false; 0.00 : 93ff: c6 83 1f 01 00 00 00 movb $0x0,0x11f(%rbx) : conn->setenv_state = SETENV_STATE_IDLE; 0.00 : 9406: c7 83 74 02 00 00 08 movl $0x8,0x274(%rbx) 0.00 : 940d: 00 00 00 : /* Zero all pointers and booleans */ : MemSet(conn, 0, sizeof(PGconn)); : : /* install default notice hooks */ : conn->noticeHooks.noticeRec = defaultNoticeReceiver; : conn->noticeHooks.noticeProc = defaultNoticeProcessor; 0.00 : 9410: 48 89 83 e0 00 00 00 mov %rax,0xe0(%rbx) : conn->asyncStatus = PGASYNC_IDLE; : conn->xactStatus = PQTRANS_IDLE; : conn->options_valid = false; : conn->nonblocking = false; : conn->setenv_state = SETENV_STATE_IDLE; : conn->client_encoding = PG_SQL_ASCII; 0.00 : 9417: c7 83 98 02 00 00 00 movl $0x0,0x298(%rbx) 0.00 : 941e: 00 00 00 : conn->std_strings = false; /* unless server says differently */ 0.00 : 9421: c6 83 9c 02 00 00 00 movb $0x0,0x29c(%rbx) : conn->verbosity = PQERRORS_DEFAULT; 0.00 : 9428: c7 83 a0 02 00 00 01 movl $0x1,0x2a0(%rbx) 0.00 : 942f: 00 00 00 : conn->sock = PGINVALID_SOCKET; 0.00 : 9432: c7 83 38 01 00 00 ff movl $0xffffffff,0x138(%rbx) 0.00 : 9439: ff ff ff : conn->auth_req_received = false; 0.00 : 943c: c6 83 58 02 00 00 00 movb $0x0,0x258(%rbx) : conn->password_needed = false; 0.00 : 9443: c6 83 59 02 00 00 00 movb $0x0,0x259(%rbx) : conn->dot_pgpass_used = false; 0.00 : 944a: c6 83 5a 02 00 00 00 movb $0x0,0x25a(%rbx) : * : * With the same goal of minimizing context swaps, the input buffer will : * be enlarged anytime it has less than 8K free, so we initially allocate : * twice that. : */ : conn->inBufSize = 16 * 1024; 0.00 : 9451: c7 83 b8 02 00 00 00 movl $0x4000,0x2b8(%rbx) 0.00 : 9458: 40 00 00 : conn->inBuffer = (char *) malloc(conn->inBufSize); 0.00 : 945b: e8 e0 ea ff ff callq 7f40 : conn->outBufSize = 16 * 1024; : conn->outBuffer = (char *) malloc(conn->outBufSize); 0.00 : 9460: bf 00 40 00 00 mov $0x4000,%edi : * With the same goal of minimizing context swaps, the input buffer will : * be enlarged anytime it has less than 8K free, so we initially allocate : * twice that. : */ : conn->inBufSize = 16 * 1024; : conn->inBuffer = (char *) malloc(conn->inBufSize); 0.00 : 9465: 48 89 83 b0 02 00 00 mov %rax,0x2b0(%rbx) : conn->outBufSize = 16 * 1024; 0.00 : 946c: c7 83 d0 02 00 00 00 movl $0x4000,0x2d0(%rbx) 0.00 : 9473: 40 00 00 : conn->outBuffer = (char *) malloc(conn->outBufSize); 0.00 : 9476: e8 c5 ea ff ff callq 7f40 : conn->rowBufLen = 32; : conn->rowBuf = (PGdataValue *) malloc(conn->rowBufLen * sizeof(PGdataValue)); 0.00 : 947b: bf 00 02 00 00 mov $0x200,%edi : * twice that. : */ : conn->inBufSize = 16 * 1024; : conn->inBuffer = (char *) malloc(conn->inBufSize); : conn->outBufSize = 16 * 1024; : conn->outBuffer = (char *) malloc(conn->outBufSize); 0.00 : 9480: 48 89 83 c8 02 00 00 mov %rax,0x2c8(%rbx) : conn->rowBufLen = 32; 0.00 : 9487: c7 83 e8 02 00 00 20 movl $0x20,0x2e8(%rbx) 0.00 : 948e: 00 00 00 : conn->rowBuf = (PGdataValue *) malloc(conn->rowBufLen * sizeof(PGdataValue)); 0.00 : 9491: e8 aa ea ff ff callq 7f40 : initPQExpBuffer(&conn->errorMessage); 0.00 : 9496: 48 8d bb 00 03 00 00 lea 0x300(%rbx),%rdi : conn->inBufSize = 16 * 1024; : conn->inBuffer = (char *) malloc(conn->inBufSize); : conn->outBufSize = 16 * 1024; : conn->outBuffer = (char *) malloc(conn->outBufSize); : conn->rowBufLen = 32; : conn->rowBuf = (PGdataValue *) malloc(conn->rowBufLen * sizeof(PGdataValue)); 0.00 : 949d: 48 89 83 e0 02 00 00 mov %rax,0x2e0(%rbx) : initPQExpBuffer(&conn->errorMessage); 0.00 : 94a4: e8 97 e9 ff ff callq 7e40 : initPQExpBuffer(&conn->workBuffer); 0.00 : 94a9: 48 8d bb 18 03 00 00 lea 0x318(%rbx),%rdi 0.00 : 94b0: e8 8b e9 ff ff callq 7e40 : : if (conn->inBuffer == NULL || 0.00 : 94b5: 48 83 bb b0 02 00 00 cmpq $0x0,0x2b0(%rbx) 0.00 : 94bc: 00 0.00 : 94bd: 74 1e je 94dd 0.00 : 94bf: 48 83 bb c8 02 00 00 cmpq $0x0,0x2c8(%rbx) 0.00 : 94c6: 00 0.00 : 94c7: 74 14 je 94dd 0.00 : 94c9: 48 83 bb e0 02 00 00 cmpq $0x0,0x2e0(%rbx) 0.00 : 94d0: 00 0.00 : 94d1: 74 0a je 94dd 0.00 : 94d3: 48 83 bb 10 03 00 00 cmpq $0x0,0x310(%rbx) 0.00 : 94da: 00 0.00 : 94db: 75 25 jne 9502 : conn->rowBuf == NULL || : PQExpBufferBroken(&conn->errorMessage) || : PQExpBufferBroken(&conn->workBuffer)) : { : /* out of memory already :-( */ : freePGconn(conn); 0.00 : 94dd: 48 89 df mov %rbx,%rdi 0.00 : 94e0: 45 31 e4 xor %r12d,%r12d 0.00 : 94e3: e8 b8 f9 ff ff callq 8ea0 : conn = NULL; : } : : return conn; : } 0.00 : 94e8: 5b pop %rbx 0.00 : 94e9: 4c 89 e0 mov %r12,%rax 0.00 : 94ec: 41 5c pop %r12 0.00 : 94ee: c9 leaveq 0.00 : 94ef: c3 retq : #endif : return conn; : } : : /* Zero all pointers and booleans */ : MemSet(conn, 0, sizeof(PGconn)); 0.00 : 94f0: b9 66 00 00 00 mov $0x66,%ecx 0.00 : 94f5: 31 c0 xor %eax,%eax 0.00 : 94f7: 48 89 df mov %rbx,%rdi 0.00 : 94fa: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 94fd: e9 be fe ff ff jmpq 93c0 : conn->rowBufLen = 32; : conn->rowBuf = (PGdataValue *) malloc(conn->rowBufLen * sizeof(PGdataValue)); : initPQExpBuffer(&conn->errorMessage); : initPQExpBuffer(&conn->workBuffer); : : if (conn->inBuffer == NULL || 0.00 : 9502: 48 83 bb 28 03 00 00 cmpq $0x0,0x328(%rbx) 0.00 : 9509: 00 0.00 : 950a: 74 d1 je 94dd : freePGconn(conn); : conn = NULL; : } : : return conn; : } 0.00 : 950c: 5b pop %rbx 0.00 : 950d: 4c 89 e0 mov %r12,%rax 0.00 : 9510: 41 5c pop %r12 0.00 : 9512: c9 leaveq Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000b6d0 : : * parameters. On exit, the PGconn should be in condition to start a fresh : * connection with the same parameters (see PQreset()). : */ : static void : closePGconn(PGconn *conn) : { ??:0 100.00 : b6d0: 55 push %rbp 0.00 : b6d1: 48 89 e5 mov %rsp,%rbp 0.00 : b6d4: 41 54 push %r12 0.00 : b6d6: 49 89 fc mov %rdi,%r12 0.00 : b6d9: 53 push %rbx : : /* : * Note that the protocol doesn't allow us to send Terminate messages : * during the startup phase. : */ : if (conn->sock != PGINVALID_SOCKET && conn->status == CONNECTION_OK) 0.00 : b6da: 83 bf 38 01 00 00 ff cmpl $0xffffffff,0x138(%rdi) 0.00 : b6e1: 74 0e je b6f1 0.00 : b6e3: 8b 9f 00 01 00 00 mov 0x100(%rdi),%ebx 0.00 : b6e9: 85 db test %ebx,%ebx 0.00 : b6eb: 0f 84 f7 00 00 00 je b7e8 : conn->nonblocking = FALSE; : : /* : * Close the connection, reset all transient state, flush I/O buffers. : */ : pqDropConnection(conn); 0.00 : b6f1: 4c 89 e7 mov %r12,%rdi : * Must reset the blocking status so a possible reconnect will work. : * : * Don't call PQsetnonblocking() because it will fail if it's unable to : * flush the connection. : */ : conn->nonblocking = FALSE; 0.00 : b6f4: 41 c6 84 24 1f 01 00 movb $0x0,0x11f(%r12) 0.00 : b6fb: 00 00 : : /* : * Close the connection, reset all transient state, flush I/O buffers. : */ : pqDropConnection(conn); 0.00 : b6fd: e8 6e ff ff ff callq b670 : conn->status = CONNECTION_BAD; /* Well, not really _bad_ - just : * absent */ : conn->asyncStatus = PGASYNC_IDLE; : pqClearAsyncResult(conn); /* deallocate result */ 0.00 : b702: 4c 89 e7 mov %r12,%rdi : : /* : * Close the connection, reset all transient state, flush I/O buffers. : */ : pqDropConnection(conn); : conn->status = CONNECTION_BAD; /* Well, not really _bad_ - just 0.00 : b705: 41 c7 84 24 00 01 00 movl $0x1,0x100(%r12) 0.00 : b70c: 00 01 00 00 00 : * absent */ : conn->asyncStatus = PGASYNC_IDLE; 0.00 : b711: 41 c7 84 24 04 01 00 movl $0x0,0x104(%r12) 0.00 : b718: 00 00 00 00 00 : pqClearAsyncResult(conn); /* deallocate result */ 0.00 : b71d: e8 9e 23 00 00 callq dac0 : pg_freeaddrinfo_all(conn->addrlist_family, conn->addrlist); 0.00 : b722: 41 8b bc 24 70 02 00 mov 0x270(%r12),%edi 0.00 : b729: 00 0.00 : b72a: 49 8b b4 24 60 02 00 mov 0x260(%r12),%rsi 0.00 : b731: 00 0.00 : b732: e8 59 ff 00 00 callq 1b690 : conn->addrlist = NULL; : conn->addr_cur = NULL; : notify = conn->notifyHead; 0.00 : b737: 49 8b bc 24 28 01 00 mov 0x128(%r12),%rdi 0.00 : b73e: 00 : conn->status = CONNECTION_BAD; /* Well, not really _bad_ - just : * absent */ : conn->asyncStatus = PGASYNC_IDLE; : pqClearAsyncResult(conn); /* deallocate result */ : pg_freeaddrinfo_all(conn->addrlist_family, conn->addrlist); : conn->addrlist = NULL; 0.00 : b73f: 49 c7 84 24 60 02 00 movq $0x0,0x260(%r12) 0.00 : b746: 00 00 00 00 00 : conn->addr_cur = NULL; 0.00 : b74b: 49 c7 84 24 68 02 00 movq $0x0,0x268(%r12) 0.00 : b752: 00 00 00 00 00 : notify = conn->notifyHead; : while (notify != NULL) 0.00 : b757: 48 85 ff test %rdi,%rdi 0.00 : b75a: 75 07 jne b763 0.00 : b75c: eb 14 jmp b772 0.00 : b75e: 66 90 xchg %ax,%ax 0.00 : b760: 48 89 df mov %rbx,%rdi : { : PGnotify *prev = notify; : : notify = notify->next; 0.00 : b763: 48 8b 5f 18 mov 0x18(%rdi),%rbx : free(prev); 0.00 : b767: e8 04 c3 ff ff callq 7a70 : pqClearAsyncResult(conn); /* deallocate result */ : pg_freeaddrinfo_all(conn->addrlist_family, conn->addrlist); : conn->addrlist = NULL; : conn->addr_cur = NULL; : notify = conn->notifyHead; : while (notify != NULL) 0.00 : b76c: 48 85 db test %rbx,%rbx 0.00 : b76f: 90 nop 0.00 : b770: 75 ee jne b760 : : notify = notify->next; : free(prev); : } : conn->notifyHead = conn->notifyTail = NULL; : pstatus = conn->pstatus; 0.00 : b772: 49 8b bc 24 90 02 00 mov 0x290(%r12),%rdi 0.00 : b779: 00 : PGnotify *prev = notify; : : notify = notify->next; : free(prev); : } : conn->notifyHead = conn->notifyTail = NULL; 0.00 : b77a: 49 c7 84 24 30 01 00 movq $0x0,0x130(%r12) 0.00 : b781: 00 00 00 00 00 0.00 : b786: 49 c7 84 24 28 01 00 movq $0x0,0x128(%r12) 0.00 : b78d: 00 00 00 00 00 : pstatus = conn->pstatus; : while (pstatus != NULL) 0.00 : b792: 48 85 ff test %rdi,%rdi 0.00 : b795: 75 0c jne b7a3 0.00 : b797: eb 19 jmp b7b2 0.00 : b799: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b7a0: 48 89 df mov %rbx,%rdi : { : pgParameterStatus *prev = pstatus; : : pstatus = pstatus->next; 0.00 : b7a3: 48 8b 1f mov (%rdi),%rbx : free(prev); 0.00 : b7a6: e8 c5 c2 ff ff callq 7a70 : notify = notify->next; : free(prev); : } : conn->notifyHead = conn->notifyTail = NULL; : pstatus = conn->pstatus; : while (pstatus != NULL) 0.00 : b7ab: 48 85 db test %rbx,%rbx 0.00 : b7ae: 66 90 xchg %ax,%ax 0.00 : b7b0: 75 ee jne b7a0 : : pstatus = pstatus->next; : free(prev); : } : conn->pstatus = NULL; : if (conn->lobjfuncs) 0.00 : b7b2: 49 8b bc 24 a8 02 00 mov 0x2a8(%r12),%rdi 0.00 : b7b9: 00 : pgParameterStatus *prev = pstatus; : : pstatus = pstatus->next; : free(prev); : } : conn->pstatus = NULL; 0.00 : b7ba: 49 c7 84 24 90 02 00 movq $0x0,0x290(%r12) 0.00 : b7c1: 00 00 00 00 00 : if (conn->lobjfuncs) 0.00 : b7c6: 48 85 ff test %rdi,%rdi 0.00 : b7c9: 74 05 je b7d0 : free(conn->lobjfuncs); 0.00 : b7cb: e8 a0 c2 ff ff callq 7a70 : DeleteSecurityContext(conn->sspictx); : free(conn->sspictx); : conn->sspictx = NULL; : } : #endif : } 0.00 : b7d0: 5b pop %rbx : free(prev); : } : conn->pstatus = NULL; : if (conn->lobjfuncs) : free(conn->lobjfuncs); : conn->lobjfuncs = NULL; 0.00 : b7d1: 49 c7 84 24 a8 02 00 movq $0x0,0x2a8(%r12) 0.00 : b7d8: 00 00 00 00 00 : DeleteSecurityContext(conn->sspictx); : free(conn->sspictx); : conn->sspictx = NULL; : } : #endif : } 0.00 : b7dd: 41 5c pop %r12 0.00 : b7df: c9 leaveq 0.00 : b7e0: c3 retq 0.00 : b7e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* : * Try to send "close connection" message to backend. Ignore any : * error. : */ : pqPutMsgStart('X', false, conn); 0.00 : b7e8: 48 89 fa mov %rdi,%rdx 0.00 : b7eb: 31 f6 xor %esi,%esi 0.00 : b7ed: bf 58 00 00 00 mov $0x58,%edi 0.00 : b7f2: e8 49 67 00 00 callq 11f40 : pqPutMsgEnd(conn); 0.00 : b7f7: 4c 89 e7 mov %r12,%rdi 0.00 : b7fa: e8 b1 65 00 00 callq 11db0 : (void) pqFlush(conn); 0.00 : b7ff: 4c 89 e7 mov %r12,%rdi 0.00 : b802: e8 59 65 00 00 callq 11d60 0.00 : b807: e9 e5 fe ff ff jmpq b6f1 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000fdf0 : : /* : * pqSaveParameterStatus - remember parameter status sent by backend : */ : void : pqSaveParameterStatus(PGconn *conn, const char *name, const char *value) : { 0.00 : fdf0: 55 push %rbp 0.00 : fdf1: 48 89 e5 mov %rsp,%rbp 0.00 : fdf4: 41 57 push %r15 0.00 : fdf6: 49 89 ff mov %rdi,%r15 0.00 : fdf9: 41 56 push %r14 0.00 : fdfb: 49 89 d6 mov %rdx,%r14 0.00 : fdfe: 41 55 push %r13 0.00 : fe00: 49 89 f5 mov %rsi,%r13 0.00 : fe03: 41 54 push %r12 0.00 : fe05: 53 push %rbx 0.00 : fe06: 48 83 ec 18 sub $0x18,%rsp : pgParameterStatus *pstatus; : pgParameterStatus *prev; : : if (conn->Pfdebug) 0.00 : fe0a: 48 8b bf c8 00 00 00 mov 0xc8(%rdi),%rdi 0.00 : fe11: 48 85 ff test %rdi,%rdi 0.00 : fe14: 74 14 je fe2a : fprintf(conn->Pfdebug, "pqSaveParameterStatus: '%s' = '%s'\n", 0.00 : fe16: 48 89 d1 mov %rdx,%rcx 0.00 : fe19: 48 89 f2 mov %rsi,%rdx 0.00 : fe1c: 48 8d 35 ed f4 00 00 lea 0xf4ed(%rip),%rsi # 1f310 0.00 : fe23: 31 c0 xor %eax,%eax 0.00 : fe25: e8 26 80 ff ff callq 7e50 : name, value); : : /* : * Forget any old information about the parameter : */ : for (pstatus = conn->pstatus, prev = NULL; 0.00 : fe2a: 49 8b 9f 90 02 00 00 mov 0x290(%r15),%rbx : pstatus != NULL; 0.00 : fe31: 48 85 db test %rbx,%rbx 0.00 : fe34: 74 40 je fe76 0.00 : fe36: 45 31 e4 xor %r12d,%r12d 0.00 : fe39: eb 13 jmp fe4e 0.00 : fe3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : prev = pstatus, pstatus = pstatus->next) 0.00 : fe40: 48 8b 3b mov (%rbx),%rdi 0.00 : fe43: 49 89 dc mov %rbx,%r12 : : /* : * Forget any old information about the parameter : */ : for (pstatus = conn->pstatus, prev = NULL; : pstatus != NULL; 0.00 : fe46: 48 85 ff test %rdi,%rdi 0.00 : fe49: 74 2b je fe76 0.00 : fe4b: 48 89 fb mov %rdi,%rbx : prev = pstatus, pstatus = pstatus->next) : { : if (strcmp(pstatus->name, name) == 0) 0.00 : fe4e: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : fe52: 4c 89 ee mov %r13,%rsi 0.00 : fe55: e8 b6 7f ff ff callq 7e10 0.00 : fe5a: 85 c0 test %eax,%eax 0.00 : fe5c: 75 e2 jne fe40 : { : if (prev) 0.00 : fe5e: 4d 85 e4 test %r12,%r12 0.00 : fe61: 0f 84 70 01 00 00 je ffd7 : prev->next = pstatus->next; 0.00 : fe67: 48 8b 03 mov (%rbx),%rax 0.00 : fe6a: 49 89 04 24 mov %rax,(%r12) : else : conn->pstatus = pstatus->next; : free(pstatus); /* frees name and value strings too */ 0.00 : fe6e: 48 89 df mov %rbx,%rdi 0.00 : fe71: e8 fa 7b ff ff callq 7a70 : } : : /* : * Store new info as a single malloc block : */ : pstatus = (pgParameterStatus *) malloc(sizeof(pgParameterStatus) + 0.00 : fe76: 4c 89 ef mov %r13,%rdi 0.00 : fe79: e8 82 7d ff ff callq 7c00 0.00 : fe7e: 4c 89 f7 mov %r14,%rdi 0.00 : fe81: 48 89 c3 mov %rax,%rbx 0.00 : fe84: e8 77 7d ff ff callq 7c00 0.00 : fe89: 48 8d 7c 03 1a lea 0x1a(%rbx,%rax,1),%rdi 0.00 : fe8e: e8 ad 80 ff ff callq 7f40 : strlen(name) +strlen(value) + 2); : if (pstatus) 0.00 : fe93: 48 85 c0 test %rax,%rax : } : : /* : * Store new info as a single malloc block : */ : pstatus = (pgParameterStatus *) malloc(sizeof(pgParameterStatus) + 0.00 : fe96: 49 89 c4 mov %rax,%r12 : strlen(name) +strlen(value) + 2); : if (pstatus) 0.00 : fe99: 74 3f je feda : { : char *ptr; : : ptr = ((char *) pstatus) + sizeof(pgParameterStatus); 0.00 : fe9b: 48 8d 58 18 lea 0x18(%rax),%rbx : pstatus->name = ptr; : strcpy(ptr, name); 0.00 : fe9f: 4c 89 ee mov %r13,%rsi 0.00 : fea2: 48 89 df mov %rbx,%rdi : if (pstatus) : { : char *ptr; : : ptr = ((char *) pstatus) + sizeof(pgParameterStatus); : pstatus->name = ptr; 0.00 : fea5: 48 89 58 08 mov %rbx,0x8(%rax) : strcpy(ptr, name); 0.00 : fea9: e8 42 7c ff ff callq 7af0 : ptr += strlen(name) + 1; 0.00 : feae: 4c 89 ef mov %r13,%rdi 0.00 : feb1: e8 4a 7d ff ff callq 7c00 0.00 : feb6: 48 8d 7c 03 01 lea 0x1(%rbx,%rax,1),%rdi : pstatus->value = ptr; : strcpy(ptr, value); 0.00 : febb: 4c 89 f6 mov %r14,%rsi : : ptr = ((char *) pstatus) + sizeof(pgParameterStatus); : pstatus->name = ptr; : strcpy(ptr, name); : ptr += strlen(name) + 1; : pstatus->value = ptr; 0.00 : febe: 49 89 7c 24 10 mov %rdi,0x10(%r12) : strcpy(ptr, value); 0.00 : fec3: e8 28 7c ff ff callq 7af0 : pstatus->next = conn->pstatus; 0.00 : fec8: 49 8b 87 90 02 00 00 mov 0x290(%r15),%rax 0.00 : fecf: 49 89 04 24 mov %rax,(%r12) : conn->pstatus = pstatus; 0.00 : fed3: 4d 89 a7 90 02 00 00 mov %r12,0x290(%r15) : * standard_conforming_strings, and convert server version to a numeric : * form. We keep the first two of these in static variables as well, so : * that PQescapeString and PQescapeBytea can behave somewhat sanely (at : * least in single-connection-using programs). : */ : if (strcmp(name, "client_encoding") == 0) 0.00 : feda: 48 8d 3d 14 e0 00 00 lea 0xe014(%rip),%rdi # 1def5 <_real_fini+0x21d> 0.00 : fee1: b9 10 00 00 00 mov $0x10,%ecx 0.00 : fee6: 4c 89 ee mov %r13,%rsi 0.00 : fee9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : feeb: 0f 97 c2 seta %dl 0.00 : feee: 0f 92 c0 setb %al 0.00 : fef1: 89 d3 mov %edx,%ebx 0.00 : fef3: 28 c3 sub %al,%bl 0.00 : fef5: 0f be db movsbl %bl,%ebx 0.00 : fef8: 85 db test %ebx,%ebx 0.00 : fefa: 75 2c jne ff28 : { : conn->client_encoding = pg_char_to_encoding(value); 0.00 : fefc: 4c 89 f7 mov %r14,%rdi 0.00 : feff: e8 0c 7c ff ff callq 7b10 : /* if we don't recognize the encoding name, fall back to SQL_ASCII */ : if (conn->client_encoding < 0) : conn->client_encoding = PG_SQL_ASCII; 0.00 : ff04: 85 c0 test %eax,%eax 0.00 : ff06: 0f 48 c3 cmovs %ebx,%eax 0.00 : ff09: 41 89 87 98 02 00 00 mov %eax,0x298(%r15) : static_client_encoding = conn->client_encoding; 0.00 : ff10: 89 05 be 85 21 00 mov %eax,0x2185be(%rip) # 2284d4 : if (cnt == 2) : vrev = 0; : conn->sversion = (100 * vmaj + vmin) * 100 + vrev; : } : } : } 0.00 : ff16: 48 83 c4 18 add $0x18,%rsp 0.00 : ff1a: 5b pop %rbx 0.00 : ff1b: 41 5c pop %r12 0.00 : ff1d: 41 5d pop %r13 0.00 : ff1f: 41 5e pop %r14 0.00 : ff21: 41 5f pop %r15 0.00 : ff23: c9 leaveq 0.00 : ff24: c3 retq 0.00 : ff25: 0f 1f 00 nopl (%rax) : /* if we don't recognize the encoding name, fall back to SQL_ASCII */ : if (conn->client_encoding < 0) : conn->client_encoding = PG_SQL_ASCII; : static_client_encoding = conn->client_encoding; : } : else if (strcmp(name, "standard_conforming_strings") == 0) 0.00 : ff28: 48 8d 3d 57 f1 00 00 lea 0xf157(%rip),%rdi # 1f086 0.00 : ff2f: b9 1c 00 00 00 mov $0x1c,%ecx 0.00 : ff34: 4c 89 ee mov %r13,%rsi 0.00 : ff37: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : ff39: 75 3d jne ff78 : { : conn->std_strings = (strcmp(value, "on") == 0); 0.00 : ff3b: 41 0f b6 06 movzbl (%r14),%eax 0.00 : ff3f: 83 e8 6f sub $0x6f,%eax 0.00 : ff42: 75 0f jne ff53 0.00 : ff44: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : ff49: 83 e8 6e sub $0x6e,%eax 0.00 : ff4c: 75 05 jne ff53 0.00 : ff4e: 41 0f b6 46 02 movzbl 0x2(%r14),%eax 0.00 : ff53: 85 c0 test %eax,%eax 0.00 : ff55: 0f 94 c0 sete %al 0.00 : ff58: 41 88 87 9c 02 00 00 mov %al,0x29c(%r15) : static_std_strings = conn->std_strings; 0.00 : ff5f: 88 05 6b 85 21 00 mov %al,0x21856b(%rip) # 2284d0 : if (cnt == 2) : vrev = 0; : conn->sversion = (100 * vmaj + vmin) * 100 + vrev; : } : } : } 0.00 : ff65: 48 83 c4 18 add $0x18,%rsp 0.00 : ff69: 5b pop %rbx 0.00 : ff6a: 41 5c pop %r12 0.00 : ff6c: 41 5d pop %r13 0.00 : ff6e: 41 5e pop %r14 0.00 : ff70: 41 5f pop %r15 0.00 : ff72: c9 leaveq 0.00 : ff73: c3 retq 0.00 : ff74: 0f 1f 40 00 nopl 0x0(%rax) : else if (strcmp(name, "standard_conforming_strings") == 0) : { : conn->std_strings = (strcmp(value, "on") == 0); : static_std_strings = conn->std_strings; : } : else if (strcmp(name, "server_version") == 0) 0.00 : ff78: 48 8d 3d 23 f1 00 00 lea 0xf123(%rip),%rdi # 1f0a2 0.00 : ff7f: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : ff84: 4c 89 ee mov %r13,%rsi 0.00 : ff87: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) ??:0 100.00 : ff89: 75 8b jne ff16 : int cnt; : int vmaj, : vmin, : vrev; : : cnt = sscanf(value, "%d.%d.%d", &vmaj, &vmin, &vrev); 0.00 : ff8b: 48 8d 4d d0 lea -0x30(%rbp),%rcx 0.00 : ff8f: 48 8d 55 d4 lea -0x2c(%rbp),%rdx 0.00 : ff93: 4c 8d 45 cc lea -0x34(%rbp),%r8 0.00 : ff97: 48 8d 35 13 f1 00 00 lea 0xf113(%rip),%rsi # 1f0b1 0.00 : ff9e: 31 c0 xor %eax,%eax 0.00 : ffa0: 4c 89 f7 mov %r14,%rdi 0.00 : ffa3: e8 e8 7f ff ff callq 7f90 : : if (cnt < 2) 0.00 : ffa8: 83 f8 01 cmp $0x1,%eax 0.00 : ffab: 7e 39 jle ffe6 : conn->sversion = 0; /* unknown */ : else : { : if (cnt == 2) 0.00 : ffad: 83 f8 02 cmp $0x2,%eax 0.00 : ffb0: 74 44 je fff6 : vrev = 0; : conn->sversion = (100 * vmaj + vmin) * 100 + vrev; 0.00 : ffb2: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : ffb5: b9 64 00 00 00 mov $0x64,%ecx 0.00 : ffba: ba 64 00 00 00 mov $0x64,%edx 0.00 : ffbf: 0f af c1 imul %ecx,%eax 0.00 : ffc2: 03 45 d0 add -0x30(%rbp),%eax 0.00 : ffc5: 0f af c2 imul %edx,%eax 0.00 : ffc8: 03 45 cc add -0x34(%rbp),%eax 0.00 : ffcb: 41 89 87 54 02 00 00 mov %eax,0x254(%r15) 0.00 : ffd2: e9 3f ff ff ff jmpq ff16 : if (strcmp(pstatus->name, name) == 0) : { : if (prev) : prev->next = pstatus->next; : else : conn->pstatus = pstatus->next; 0.00 : ffd7: 48 8b 03 mov (%rbx),%rax 0.00 : ffda: 49 89 87 90 02 00 00 mov %rax,0x290(%r15) 0.00 : ffe1: e9 88 fe ff ff jmpq fe6e : vrev; : : cnt = sscanf(value, "%d.%d.%d", &vmaj, &vmin, &vrev); : : if (cnt < 2) : conn->sversion = 0; /* unknown */ 0.00 : ffe6: 41 c7 87 54 02 00 00 movl $0x0,0x254(%r15) 0.00 : ffed: 00 00 00 00 0.00 : fff1: e9 20 ff ff ff jmpq ff16 : else : { : if (cnt == 2) : vrev = 0; 0.00 : fff6: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) 0.00 : fffd: eb b3 jmp ffb2 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000010290 : : /* PQgetisnull: : * returns the null status of a field value. : */ : int : PQgetisnull(const PGresult *res, int tup_num, int field_num) : { 0.00 : 10290: 55 push %rbp 0.00 : 10291: 48 89 e5 mov %rsp,%rbp 0.00 : 10294: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 10298: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 1029c: 89 f3 mov %esi,%ebx 0.00 : 1029e: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 102a2: 48 83 ec 20 sub $0x20,%rsp 0.00 : 102a6: 41 89 d4 mov %edx,%r12d 0.00 : 102a9: 49 89 fd mov %rdi,%r13 : if (!check_tuple_field_number(res, tup_num, field_num)) 0.00 : 102ac: e8 6f ff ff ff callq 10220 0.00 : 102b1: 85 c0 test %eax,%eax 0.00 : 102b3: ba 01 00 00 00 mov $0x1,%edx 0.00 : 102b8: 74 1c je 102d6 0.00 : 102ba: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : 102be: 48 63 cb movslq %ebx,%rcx 0.00 : 102c1: 49 63 c4 movslq %r12d,%rax 0.00 : 102c4: 48 c1 e0 04 shl $0x4,%rax ??:0 100.00 : 102c8: 48 8b 14 ca mov (%rdx,%rcx,8),%rdx 0.00 : 102cc: 83 3c 02 ff cmpl $0xffffffff,(%rdx,%rax,1) 0.00 : 102d0: 0f 94 c0 sete %al 0.00 : 102d3: 0f b6 d0 movzbl %al,%edx : return 1; /* pretend it is null */ : if (res->tuples[tup_num][field_num].len == NULL_LEN) : return 1; : else : return 0; : } 0.00 : 102d6: 89 d0 mov %edx,%eax 0.00 : 102d8: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 102dc: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 102e0: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 102e4: c9 leaveq Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001ac30 : : #include : : : bool : pg_set_noblock(pgsocket sock) : { 0.00 : 1ac30: 55 push %rbp : #if !defined(WIN32) : return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1); ??:0 100.00 : 1ac31: 31 c0 xor %eax,%eax 0.00 : 1ac33: ba 00 08 00 00 mov $0x800,%edx 0.00 : 1ac38: be 04 00 00 00 mov $0x4,%esi : #include : : : bool : pg_set_noblock(pgsocket sock) : { 0.00 : 1ac3d: 48 89 e5 mov %rsp,%rbp : #if !defined(WIN32) : return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1); 0.00 : 1ac40: e8 6b cf fe ff callq 7bb0 0.00 : 1ac45: 83 c0 01 add $0x1,%eax : unsigned long ioctlsocket_ret = 1; : : /* Returns non-0 on failure, while fcntl() returns -1 on failure */ : return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0); : #endif : } 0.00 : 1ac48: c9 leaveq : : bool : pg_set_noblock(pgsocket sock) : { : #if !defined(WIN32) : return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1); 0.00 : 1ac49: 0f 95 c0 setne %al Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001b020 : : */ : #ifndef WIN32 : int : pqGetpwuid(uid_t uid, struct passwd * resultbuf, char *buffer, : size_t buflen, struct passwd ** result) : { 0.00 : 1b020: 55 push %rbp ??:0 100.00 : 1b021: 48 89 e5 mov %rsp,%rbp 0.00 : 1b024: 53 push %rbx 0.00 : 1b025: 4c 89 c3 mov %r8,%rbx 0.00 : 1b028: 48 83 ec 08 sub $0x8,%rsp : #if defined(FRONTEND) && defined(ENABLE_THREAD_SAFETY) && defined(HAVE_GETPWUID_R) : : #ifdef GETPWUID_R_5ARG : /* POSIX version */ : getpwuid_r(uid, resultbuf, buffer, buflen, result); 0.00 : 1b02c: e8 ef cb fe ff callq 7c20 : : /* no getpwuid_r() available, just use getpwuid() */ : *result = getpwuid(uid); : #endif : : return (*result == NULL) ? -1 : 0; 0.00 : 1b031: 48 83 3b 01 cmpq $0x1,(%rbx) 0.00 : 1b035: 19 c0 sbb %eax,%eax : } 0.00 : 1b037: 48 83 c4 08 add $0x8,%rsp 0.00 : 1b03b: 5b pop %rbx 0.00 : 1b03c: c9 leaveq Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001c580 : : return cnt; : } : : static int : pg_ascii_mblen(const unsigned char *s) : { ??:0 100.00 : 1c580: 55 push %rbp : return 1; : } 0.00 : 1c581: b8 01 00 00 00 mov $0x1,%eax : return cnt; : } : : static int : pg_ascii_mblen(const unsigned char *s) : { 0.00 : 1c586: 48 89 e5 mov %rsp,%rbp : return 1; : } 0.00 : 1c589: c9 leaveq Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001dbb0 : : /* : * Returns the byte length of a multibyte character. : */ : int : pg_encoding_mblen(int encoding, const char *mbstr) : { 0.00 : 1dbb0: 55 push %rbp : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dbb1: 83 ff 29 cmp $0x29,%edi : /* : * Returns the byte length of a multibyte character. : */ : int : pg_encoding_mblen(int encoding, const char *mbstr) : { 0.00 : 1dbb4: 48 89 e5 mov %rsp,%rbp : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dbb7: 76 17 jbe 1dbd0 0.00 : 1dbb9: 48 8b 05 18 a4 20 00 mov 0x20a418(%rip),%rax # 227fd8 <_DYNAMIC+0x1f8> 0.00 : 1dbc0: 48 89 f7 mov %rsi,%rdi 0.00 : 1dbc3: 4c 8b 58 10 mov 0x10(%rax),%r11 : ((*pg_wchar_table[encoding].mblen) ((const unsigned char *) mbstr)) : : ((*pg_wchar_table[PG_SQL_ASCII].mblen) ((const unsigned char *) mbstr))); : } 0.00 : 1dbc7: c9 leaveq : * Returns the byte length of a multibyte character. : */ : int : pg_encoding_mblen(int encoding, const char *mbstr) : { : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dbc8: 41 ff e3 jmpq *%r11 0.00 : 1dbcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1dbd0: 48 63 c7 movslq %edi,%rax ??:0 50.00 : 1dbd3: 48 8b 15 fe a3 20 00 mov 0x20a3fe(%rip),%rdx # 227fd8 <_DYNAMIC+0x1f8> 0.00 : 1dbda: 48 89 f7 mov %rsi,%rdi 0.00 : 1dbdd: 48 8d 44 40 01 lea 0x1(%rax,%rax,2),%rax 0.00 : 1dbe2: 48 c1 e0 04 shl $0x4,%rax 50.00 : 1dbe6: 4c 8b 1c 02 mov (%rdx,%rax,1),%r11 : ((*pg_wchar_table[encoding].mblen) ((const unsigned char *) mbstr)) : : ((*pg_wchar_table[PG_SQL_ASCII].mblen) ((const unsigned char *) mbstr))); : } 0.00 : 1dbea: c9 leaveq : * Returns the byte length of a multibyte character. : */ : int : pg_encoding_mblen(int encoding, const char *mbstr) : { : return (PG_VALID_ENCODING(encoding) ? 0.00 : 1dbeb: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libncurses.so.5.6 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libncurses.so.5.6 ------------------------------------------------ : : : : Disassembly of section .init: : : 00000000000143f8 <_init>: 0.00 : 143f8: 48 83 ec 08 sub $0x8,%rsp 0.00 : 143fc: e8 0f 12 00 00 callq 15610 0.00 : 14401: e8 aa 12 00 00 callq 156b0 0.00 : 14406: e8 75 03 02 00 callq 34780 0.00 : 1440b: 48 83 c4 08 add $0x8,%rsp 0.00 : 1440f: c3 retq : : Disassembly of section .plt: : : 0000000000014410 : 0.00 : 14410: ff 35 da db 22 00 pushq 0x22dbda(%rip) # 241ff0 ??:0 100.00 : 14416: ff 25 dc db 22 00 jmpq *0x22dbdc(%rip) # 241ff8 0.00 : 1441c: 0f 1f 40 00 nopl 0x0(%rax) : : 0000000000014420 : 0.00 : 14420: ff 25 da db 22 00 jmpq *0x22dbda(%rip) # 242000 0.00 : 14426: 68 00 00 00 00 pushq $0x0 0.00 : 1442b: e9 e0 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014430 : 0.00 : 14430: ff 25 d2 db 22 00 jmpq *0x22dbd2(%rip) # 242008 0.00 : 14436: 68 01 00 00 00 pushq $0x1 0.00 : 1443b: e9 d0 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014440 : 0.00 : 14440: ff 25 ca db 22 00 jmpq *0x22dbca(%rip) # 242010 0.00 : 14446: 68 02 00 00 00 pushq $0x2 0.00 : 1444b: e9 c0 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014450 <_nc_name_match@plt>: 0.00 : 14450: ff 25 c2 db 22 00 jmpq *0x22dbc2(%rip) # 242018 0.00 : 14456: 68 03 00 00 00 pushq $0x3 0.00 : 1445b: e9 b0 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014460 : 0.00 : 14460: ff 25 ba db 22 00 jmpq *0x22dbba(%rip) # 242020 0.00 : 14466: 68 04 00 00 00 pushq $0x4 0.00 : 1446b: e9 a0 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014470 <_nc_access@plt>: 0.00 : 14470: ff 25 b2 db 22 00 jmpq *0x22dbb2(%rip) # 242028 0.00 : 14476: 68 05 00 00 00 pushq $0x5 0.00 : 1447b: e9 90 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014480 : 0.00 : 14480: ff 25 aa db 22 00 jmpq *0x22dbaa(%rip) # 242030 0.00 : 14486: 68 06 00 00 00 pushq $0x6 0.00 : 1448b: e9 80 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014490 : 0.00 : 14490: ff 25 a2 db 22 00 jmpq *0x22dba2(%rip) # 242038 0.00 : 14496: 68 07 00 00 00 pushq $0x7 0.00 : 1449b: e9 70 ff ff ff jmpq 14410 <_init+0x18> : : 00000000000144a0 <_nc_last_db@plt>: 0.00 : 144a0: ff 25 9a db 22 00 jmpq *0x22db9a(%rip) # 242040 0.00 : 144a6: 68 08 00 00 00 pushq $0x8 0.00 : 144ab: e9 60 ff ff ff jmpq 14410 <_init+0x18> : : 00000000000144b0 : 0.00 : 144b0: ff 25 92 db 22 00 jmpq *0x22db92(%rip) # 242048 0.00 : 144b6: 68 09 00 00 00 pushq $0x9 0.00 : 144bb: e9 50 ff ff ff jmpq 14410 <_init+0x18> : : 00000000000144c0 <_nc_keyname@plt>: 0.00 : 144c0: ff 25 8a db 22 00 jmpq *0x22db8a(%rip) # 242050 0.00 : 144c6: 68 0a 00 00 00 pushq $0xa 0.00 : 144cb: e9 40 ff ff ff jmpq 14410 <_init+0x18> : : 00000000000144d0 <_nc_slk_initialize@plt>: 0.00 : 144d0: ff 25 82 db 22 00 jmpq *0x22db82(%rip) # 242058 0.00 : 144d6: 68 0b 00 00 00 pushq $0xb 0.00 : 144db: e9 30 ff ff ff jmpq 14410 <_init+0x18> : : 00000000000144e0 <_nc_free_tparm@plt>: 0.00 : 144e0: ff 25 7a db 22 00 jmpq *0x22db7a(%rip) # 242060 0.00 : 144e6: 68 0c 00 00 00 pushq $0xc 0.00 : 144eb: e9 20 ff ff ff jmpq 14410 <_init+0x18> : : 00000000000144f0 : 0.00 : 144f0: ff 25 72 db 22 00 jmpq *0x22db72(%rip) # 242068 0.00 : 144f6: 68 0d 00 00 00 pushq $0xd 0.00 : 144fb: e9 10 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014500 : 0.00 : 14500: ff 25 6a db 22 00 jmpq *0x22db6a(%rip) # 242070 0.00 : 14506: 68 0e 00 00 00 pushq $0xe 0.00 : 1450b: e9 00 ff ff ff jmpq 14410 <_init+0x18> : : 0000000000014510 : 0.00 : 14510: ff 25 62 db 22 00 jmpq *0x22db62(%rip) # 242078 0.00 : 14516: 68 0f 00 00 00 pushq $0xf 0.00 : 1451b: e9 f0 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014520 : 0.00 : 14520: ff 25 5a db 22 00 jmpq *0x22db5a(%rip) # 242080 0.00 : 14526: 68 10 00 00 00 pushq $0x10 0.00 : 1452b: e9 e0 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014530 : 0.00 : 14530: ff 25 52 db 22 00 jmpq *0x22db52(%rip) # 242088 0.00 : 14536: 68 11 00 00 00 pushq $0x11 0.00 : 1453b: e9 d0 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014540 : 0.00 : 14540: ff 25 4a db 22 00 jmpq *0x22db4a(%rip) # 242090 0.00 : 14546: 68 12 00 00 00 pushq $0x12 0.00 : 1454b: e9 c0 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014550 : 0.00 : 14550: ff 25 42 db 22 00 jmpq *0x22db42(%rip) # 242098 0.00 : 14556: 68 13 00 00 00 pushq $0x13 0.00 : 1455b: e9 b0 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014560 <_nc_fsid@plt>: 0.00 : 14560: ff 25 3a db 22 00 jmpq *0x22db3a(%rip) # 2420a0 0.00 : 14566: 68 14 00 00 00 pushq $0x14 0.00 : 1456b: e9 a0 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014570 : 0.00 : 14570: ff 25 32 db 22 00 jmpq *0x22db32(%rip) # 2420a8 0.00 : 14576: 68 15 00 00 00 pushq $0x15 0.00 : 1457b: e9 90 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014580 <_nc_unctrl@plt>: 0.00 : 14580: ff 25 2a db 22 00 jmpq *0x22db2a(%rip) # 2420b0 0.00 : 14586: 68 16 00 00 00 pushq $0x16 0.00 : 1458b: e9 80 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014590 <_nc_trim_sgr0@plt>: 0.00 : 14590: ff 25 22 db 22 00 jmpq *0x22db22(%rip) # 2420b8 0.00 : 14596: 68 17 00 00 00 pushq $0x17 0.00 : 1459b: e9 70 fe ff ff jmpq 14410 <_init+0x18> : : 00000000000145a0 <_nc_hash_map@plt>: 0.00 : 145a0: ff 25 1a db 22 00 jmpq *0x22db1a(%rip) # 2420c0 0.00 : 145a6: 68 18 00 00 00 pushq $0x18 0.00 : 145ab: e9 60 fe ff ff jmpq 14410 <_init+0x18> : : 00000000000145b0 : 0.00 : 145b0: ff 25 12 db 22 00 jmpq *0x22db12(%rip) # 2420c8 0.00 : 145b6: 68 19 00 00 00 pushq $0x19 0.00 : 145bb: e9 50 fe ff ff jmpq 14410 <_init+0x18> : : 00000000000145c0 <_nc_scroll_optimize@plt>: 0.00 : 145c0: ff 25 0a db 22 00 jmpq *0x22db0a(%rip) # 2420d0 0.00 : 145c6: 68 1a 00 00 00 pushq $0x1a 0.00 : 145cb: e9 40 fe ff ff jmpq 14410 <_init+0x18> : : 00000000000145d0 : 0.00 : 145d0: ff 25 02 db 22 00 jmpq *0x22db02(%rip) # 2420d8 0.00 : 145d6: 68 1b 00 00 00 pushq $0x1b 0.00 : 145db: e9 30 fe ff ff jmpq 14410 <_init+0x18> : : 00000000000145e0 : 0.00 : 145e0: ff 25 fa da 22 00 jmpq *0x22dafa(%rip) # 2420e0 0.00 : 145e6: 68 1c 00 00 00 pushq $0x1c 0.00 : 145eb: e9 20 fe ff ff jmpq 14410 <_init+0x18> : : 00000000000145f0 : 0.00 : 145f0: ff 25 f2 da 22 00 jmpq *0x22daf2(%rip) # 2420e8 0.00 : 145f6: 68 1d 00 00 00 pushq $0x1d 0.00 : 145fb: e9 10 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014600 : 0.00 : 14600: ff 25 ea da 22 00 jmpq *0x22daea(%rip) # 2420f0 0.00 : 14606: 68 1e 00 00 00 pushq $0x1e 0.00 : 1460b: e9 00 fe ff ff jmpq 14410 <_init+0x18> : : 0000000000014610 : 0.00 : 14610: ff 25 e2 da 22 00 jmpq *0x22dae2(%rip) # 2420f8 0.00 : 14616: 68 1f 00 00 00 pushq $0x1f 0.00 : 1461b: e9 f0 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014620 : 0.00 : 14620: ff 25 da da 22 00 jmpq *0x22dada(%rip) # 242100 0.00 : 14626: 68 20 00 00 00 pushq $0x20 0.00 : 1462b: e9 e0 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014630 : 0.00 : 14630: ff 25 d2 da 22 00 jmpq *0x22dad2(%rip) # 242108 0.00 : 14636: 68 21 00 00 00 pushq $0x21 0.00 : 1463b: e9 d0 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014640 : 0.00 : 14640: ff 25 ca da 22 00 jmpq *0x22daca(%rip) # 242110 0.00 : 14646: 68 22 00 00 00 pushq $0x22 0.00 : 1464b: e9 c0 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014650 : 0.00 : 14650: ff 25 c2 da 22 00 jmpq *0x22dac2(%rip) # 242118 0.00 : 14656: 68 23 00 00 00 pushq $0x23 0.00 : 1465b: e9 b0 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014660 : 0.00 : 14660: ff 25 ba da 22 00 jmpq *0x22daba(%rip) # 242120 0.00 : 14666: 68 24 00 00 00 pushq $0x24 0.00 : 1466b: e9 a0 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014670 <_nc_ungetch@plt>: 0.00 : 14670: ff 25 b2 da 22 00 jmpq *0x22dab2(%rip) # 242128 0.00 : 14676: 68 25 00 00 00 pushq $0x25 0.00 : 1467b: e9 90 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014680 : 0.00 : 14680: ff 25 aa da 22 00 jmpq *0x22daaa(%rip) # 242130 0.00 : 14686: 68 26 00 00 00 pushq $0x26 0.00 : 1468b: e9 80 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014690 : 0.00 : 14690: ff 25 a2 da 22 00 jmpq *0x22daa2(%rip) # 242138 0.00 : 14696: 68 27 00 00 00 pushq $0x27 0.00 : 1469b: e9 70 fd ff ff jmpq 14410 <_init+0x18> : : 00000000000146a0 <__fprintf_chk@plt>: 0.00 : 146a0: ff 25 9a da 22 00 jmpq *0x22da9a(%rip) # 242140 0.00 : 146a6: 68 28 00 00 00 pushq $0x28 0.00 : 146ab: e9 60 fd ff ff jmpq 14410 <_init+0x18> : : 00000000000146b0 : 0.00 : 146b0: ff 25 92 da 22 00 jmpq *0x22da92(%rip) # 242148 0.00 : 146b6: 68 29 00 00 00 pushq $0x29 0.00 : 146bb: e9 50 fd ff ff jmpq 14410 <_init+0x18> : : 00000000000146c0 : 0.00 : 146c0: ff 25 8a da 22 00 jmpq *0x22da8a(%rip) # 242150 0.00 : 146c6: 68 2a 00 00 00 pushq $0x2a 0.00 : 146cb: e9 40 fd ff ff jmpq 14410 <_init+0x18> : : 00000000000146d0 : 0.00 : 146d0: ff 25 82 da 22 00 jmpq *0x22da82(%rip) # 242158 0.00 : 146d6: 68 2b 00 00 00 pushq $0x2b 0.00 : 146db: e9 30 fd ff ff jmpq 14410 <_init+0x18> : : 00000000000146e0 <_nc_next_db@plt>: 0.00 : 146e0: ff 25 7a da 22 00 jmpq *0x22da7a(%rip) # 242160 0.00 : 146e6: 68 2c 00 00 00 pushq $0x2c 0.00 : 146eb: e9 20 fd ff ff jmpq 14410 <_init+0x18> : : 00000000000146f0 : 0.00 : 146f0: ff 25 72 da 22 00 jmpq *0x22da72(%rip) # 242168 0.00 : 146f6: 68 2d 00 00 00 pushq $0x2d 0.00 : 146fb: e9 10 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014700 : 0.00 : 14700: ff 25 6a da 22 00 jmpq *0x22da6a(%rip) # 242170 0.00 : 14706: 68 2e 00 00 00 pushq $0x2e 0.00 : 1470b: e9 00 fd ff ff jmpq 14410 <_init+0x18> : : 0000000000014710 <_nc_first_name@plt>: 0.00 : 14710: ff 25 62 da 22 00 jmpq *0x22da62(%rip) # 242178 0.00 : 14716: 68 2f 00 00 00 pushq $0x2f 0.00 : 1471b: e9 f0 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014720 : 0.00 : 14720: ff 25 5a da 22 00 jmpq *0x22da5a(%rip) # 242180 0.00 : 14726: 68 30 00 00 00 pushq $0x30 0.00 : 1472b: e9 e0 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014730 : 0.00 : 14730: ff 25 52 da 22 00 jmpq *0x22da52(%rip) # 242188 0.00 : 14736: 68 31 00 00 00 pushq $0x31 0.00 : 1473b: e9 d0 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014740 : 0.00 : 14740: ff 25 4a da 22 00 jmpq *0x22da4a(%rip) # 242190 0.00 : 14746: 68 32 00 00 00 pushq $0x32 0.00 : 1474b: e9 c0 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014750 : 0.00 : 14750: ff 25 42 da 22 00 jmpq *0x22da42(%rip) # 242198 0.00 : 14756: 68 33 00 00 00 pushq $0x33 0.00 : 1475b: e9 b0 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014760 : 0.00 : 14760: ff 25 3a da 22 00 jmpq *0x22da3a(%rip) # 2421a0 0.00 : 14766: 68 34 00 00 00 pushq $0x34 0.00 : 1476b: e9 a0 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014770 <_nc_freeall@plt>: 0.00 : 14770: ff 25 32 da 22 00 jmpq *0x22da32(%rip) # 2421a8 0.00 : 14776: 68 35 00 00 00 pushq $0x35 0.00 : 1477b: e9 90 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014780 : 0.00 : 14780: ff 25 2a da 22 00 jmpq *0x22da2a(%rip) # 2421b0 0.00 : 14786: 68 36 00 00 00 pushq $0x36 0.00 : 1478b: e9 80 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014790 : 0.00 : 14790: ff 25 22 da 22 00 jmpq *0x22da22(%rip) # 2421b8 0.00 : 14796: 68 37 00 00 00 pushq $0x37 0.00 : 1479b: e9 70 fc ff ff jmpq 14410 <_init+0x18> : : 00000000000147a0 <_nc_get_screensize@plt>: 0.00 : 147a0: ff 25 1a da 22 00 jmpq *0x22da1a(%rip) # 2421c0 0.00 : 147a6: 68 38 00 00 00 pushq $0x38 0.00 : 147ab: e9 60 fc ff ff jmpq 14410 <_init+0x18> : : 00000000000147b0 <_nc_keypad@plt>: 0.00 : 147b0: ff 25 12 da 22 00 jmpq *0x22da12(%rip) # 2421c8 0.00 : 147b6: 68 39 00 00 00 pushq $0x39 0.00 : 147bb: e9 50 fc ff ff jmpq 14410 <_init+0x18> : : 00000000000147c0 : 0.00 : 147c0: ff 25 0a da 22 00 jmpq *0x22da0a(%rip) # 2421d0 0.00 : 147c6: 68 3a 00 00 00 pushq $0x3a 0.00 : 147cb: e9 40 fc ff ff jmpq 14410 <_init+0x18> : : 00000000000147d0 <_nc_scrolln@plt>: 0.00 : 147d0: ff 25 02 da 22 00 jmpq *0x22da02(%rip) # 2421d8 0.00 : 147d6: 68 3b 00 00 00 pushq $0x3b 0.00 : 147db: e9 30 fc ff ff jmpq 14410 <_init+0x18> : : 00000000000147e0 : 0.00 : 147e0: ff 25 fa d9 22 00 jmpq *0x22d9fa(%rip) # 2421e0 0.00 : 147e6: 68 3c 00 00 00 pushq $0x3c 0.00 : 147eb: e9 20 fc ff ff jmpq 14410 <_init+0x18> : : 00000000000147f0 : 0.00 : 147f0: ff 25 f2 d9 22 00 jmpq *0x22d9f2(%rip) # 2421e8 0.00 : 147f6: 68 3d 00 00 00 pushq $0x3d 0.00 : 147fb: e9 10 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014800 : 0.00 : 14800: ff 25 ea d9 22 00 jmpq *0x22d9ea(%rip) # 2421f0 0.00 : 14806: 68 3e 00 00 00 pushq $0x3e 0.00 : 1480b: e9 00 fc ff ff jmpq 14410 <_init+0x18> : : 0000000000014810 : 0.00 : 14810: ff 25 e2 d9 22 00 jmpq *0x22d9e2(%rip) # 2421f8 0.00 : 14816: 68 3f 00 00 00 pushq $0x3f 0.00 : 1481b: e9 f0 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014820 : 0.00 : 14820: ff 25 da d9 22 00 jmpq *0x22d9da(%rip) # 242200 0.00 : 14826: 68 40 00 00 00 pushq $0x40 0.00 : 1482b: e9 e0 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014830 : 0.00 : 14830: ff 25 d2 d9 22 00 jmpq *0x22d9d2(%rip) # 242208 0.00 : 14836: 68 41 00 00 00 pushq $0x41 0.00 : 1483b: e9 d0 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014840 <_nc_setupscreen@plt>: 0.00 : 14840: ff 25 ca d9 22 00 jmpq *0x22d9ca(%rip) # 242210 0.00 : 14846: 68 42 00 00 00 pushq $0x42 0.00 : 1484b: e9 c0 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014850 <_nc_free_entry@plt>: 0.00 : 14850: ff 25 c2 d9 22 00 jmpq *0x22d9c2(%rip) # 242218 0.00 : 14856: 68 43 00 00 00 pushq $0x43 0.00 : 1485b: e9 b0 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014860 <_nc_get_tty_mode@plt>: 0.00 : 14860: ff 25 ba d9 22 00 jmpq *0x22d9ba(%rip) # 242220 0.00 : 14866: 68 44 00 00 00 pushq $0x44 0.00 : 1486b: e9 a0 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014870 <_nc_getenv_num@plt>: 0.00 : 14870: ff 25 b2 d9 22 00 jmpq *0x22d9b2(%rip) # 242228 0.00 : 14876: 68 45 00 00 00 pushq $0x45 0.00 : 1487b: e9 90 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014880 : 0.00 : 14880: ff 25 aa d9 22 00 jmpq *0x22d9aa(%rip) # 242230 0.00 : 14886: 68 46 00 00 00 pushq $0x46 0.00 : 1488b: e9 80 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014890 : 0.00 : 14890: ff 25 a2 d9 22 00 jmpq *0x22d9a2(%rip) # 242238 0.00 : 14896: 68 47 00 00 00 pushq $0x47 0.00 : 1489b: e9 70 fb ff ff jmpq 14410 <_init+0x18> : : 00000000000148a0 : 0.00 : 148a0: ff 25 9a d9 22 00 jmpq *0x22d99a(%rip) # 242240 0.00 : 148a6: 68 48 00 00 00 pushq $0x48 0.00 : 148ab: e9 60 fb ff ff jmpq 14410 <_init+0x18> : : 00000000000148b0 : 0.00 : 148b0: ff 25 92 d9 22 00 jmpq *0x22d992(%rip) # 242248 0.00 : 148b6: 68 49 00 00 00 pushq $0x49 0.00 : 148bb: e9 50 fb ff ff jmpq 14410 <_init+0x18> : : 00000000000148c0 <_nc_str_init@plt>: 0.00 : 148c0: ff 25 8a d9 22 00 jmpq *0x22d98a(%rip) # 242250 0.00 : 148c6: 68 4a 00 00 00 pushq $0x4a 0.00 : 148cb: e9 40 fb ff ff jmpq 14410 <_init+0x18> : : 00000000000148d0 : 0.00 : 148d0: ff 25 82 d9 22 00 jmpq *0x22d982(%rip) # 242258 0.00 : 148d6: 68 4b 00 00 00 pushq $0x4b 0.00 : 148db: e9 30 fb ff ff jmpq 14410 <_init+0x18> : : 00000000000148e0 : 0.00 : 148e0: ff 25 7a d9 22 00 jmpq *0x22d97a(%rip) # 242260 0.00 : 148e6: 68 4c 00 00 00 pushq $0x4c 0.00 : 148eb: e9 20 fb ff ff jmpq 14410 <_init+0x18> : : 00000000000148f0 <_nc_flush@plt>: 0.00 : 148f0: ff 25 72 d9 22 00 jmpq *0x22d972(%rip) # 242268 0.00 : 148f6: 68 4d 00 00 00 pushq $0x4d 0.00 : 148fb: e9 10 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014900 : 0.00 : 14900: ff 25 6a d9 22 00 jmpq *0x22d96a(%rip) # 242270 0.00 : 14906: 68 4e 00 00 00 pushq $0x4e 0.00 : 1490b: e9 00 fb ff ff jmpq 14410 <_init+0x18> : : 0000000000014910 : 0.00 : 14910: ff 25 62 d9 22 00 jmpq *0x22d962(%rip) # 242278 0.00 : 14916: 68 4f 00 00 00 pushq $0x4f 0.00 : 1491b: e9 f0 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014920 : 0.00 : 14920: ff 25 5a d9 22 00 jmpq *0x22d95a(%rip) # 242280 0.00 : 14926: 68 50 00 00 00 pushq $0x50 0.00 : 1492b: e9 e0 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014930 <_nc_make_oldhash@plt>: 0.00 : 14930: ff 25 52 d9 22 00 jmpq *0x22d952(%rip) # 242288 0.00 : 14936: 68 51 00 00 00 pushq $0x51 0.00 : 1493b: e9 d0 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014940 <_nc_set_buffer@plt>: 0.00 : 14940: ff 25 4a d9 22 00 jmpq *0x22d94a(%rip) # 242290 0.00 : 14946: 68 52 00 00 00 pushq $0x52 0.00 : 1494b: e9 c0 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014950 <__vsnprintf_chk@plt>: 0.00 : 14950: ff 25 42 d9 22 00 jmpq *0x22d942(%rip) # 242298 0.00 : 14956: 68 53 00 00 00 pushq $0x53 0.00 : 1495b: e9 b0 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014960 : 0.00 : 14960: ff 25 3a d9 22 00 jmpq *0x22d93a(%rip) # 2422a0 0.00 : 14966: 68 54 00 00 00 pushq $0x54 0.00 : 1496b: e9 a0 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014970 <_nc_remove_key@plt>: 0.00 : 14970: ff 25 32 d9 22 00 jmpq *0x22d932(%rip) # 2422a8 0.00 : 14976: 68 55 00 00 00 pushq $0x55 0.00 : 1497b: e9 90 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014980 <_nc_get_type@plt>: 0.00 : 14980: ff 25 2a d9 22 00 jmpq *0x22d92a(%rip) # 2422b0 0.00 : 14986: 68 56 00 00 00 pushq $0x56 0.00 : 1498b: e9 80 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014990 <_nc_remove_string@plt>: 0.00 : 14990: ff 25 22 d9 22 00 jmpq *0x22d922(%rip) # 2422b8 0.00 : 14996: 68 57 00 00 00 pushq $0x57 0.00 : 1499b: e9 70 fa ff ff jmpq 14410 <_init+0x18> : : 00000000000149a0 <_nc_home_terminfo@plt>: 0.00 : 149a0: ff 25 1a d9 22 00 jmpq *0x22d91a(%rip) # 2422c0 0.00 : 149a6: 68 58 00 00 00 pushq $0x58 0.00 : 149ab: e9 60 fa ff ff jmpq 14410 <_init+0x18> : : 00000000000149b0 : 0.00 : 149b0: ff 25 12 d9 22 00 jmpq *0x22d912(%rip) # 2422c8 0.00 : 149b6: 68 59 00 00 00 pushq $0x59 0.00 : 149bb: e9 50 fa ff ff jmpq 14410 <_init+0x18> : : 00000000000149c0 : 0.00 : 149c0: ff 25 0a d9 22 00 jmpq *0x22d90a(%rip) # 2422d0 0.00 : 149c6: 68 5a 00 00 00 pushq $0x5a 0.00 : 149cb: e9 40 fa ff ff jmpq 14410 <_init+0x18> : : 00000000000149d0 : 0.00 : 149d0: ff 25 02 d9 22 00 jmpq *0x22d902(%rip) # 2422d8 0.00 : 149d6: 68 5b 00 00 00 pushq $0x5b 0.00 : 149db: e9 30 fa ff ff jmpq 14410 <_init+0x18> : : 00000000000149e0 <_nc_freewin@plt>: 0.00 : 149e0: ff 25 fa d8 22 00 jmpq *0x22d8fa(%rip) # 2422e0 0.00 : 149e6: 68 5c 00 00 00 pushq $0x5c 0.00 : 149eb: e9 20 fa ff ff jmpq 14410 <_init+0x18> : : 00000000000149f0 <_nc_reset_colors@plt>: 0.00 : 149f0: ff 25 f2 d8 22 00 jmpq *0x22d8f2(%rip) # 2422e8 0.00 : 149f6: 68 5d 00 00 00 pushq $0x5d 0.00 : 149fb: e9 10 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014a00 : 0.00 : 14a00: ff 25 ea d8 22 00 jmpq *0x22d8ea(%rip) # 2422f0 0.00 : 14a06: 68 5e 00 00 00 pushq $0x5e 0.00 : 14a0b: e9 00 fa ff ff jmpq 14410 <_init+0x18> : : 0000000000014a10 <_nc_leaks_tinfo@plt>: 0.00 : 14a10: ff 25 e2 d8 22 00 jmpq *0x22d8e2(%rip) # 2422f8 0.00 : 14a16: 68 5f 00 00 00 pushq $0x5f 0.00 : 14a1b: e9 f0 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a20 <__strdup@plt>: 0.00 : 14a20: ff 25 da d8 22 00 jmpq *0x22d8da(%rip) # 242300 0.00 : 14a26: 68 60 00 00 00 pushq $0x60 0.00 : 14a2b: e9 e0 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a30 : 0.00 : 14a30: ff 25 d2 d8 22 00 jmpq *0x22d8d2(%rip) # 242308 0.00 : 14a36: 68 61 00 00 00 pushq $0x61 0.00 : 14a3b: e9 d0 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a40 : 0.00 : 14a40: ff 25 ca d8 22 00 jmpq *0x22d8ca(%rip) # 242310 0.00 : 14a46: 68 62 00 00 00 pushq $0x62 0.00 : 14a4b: e9 c0 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a50 : 0.00 : 14a50: ff 25 c2 d8 22 00 jmpq *0x22d8c2(%rip) # 242318 0.00 : 14a56: 68 63 00 00 00 pushq $0x63 0.00 : 14a5b: e9 b0 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a60 <_nc_basename@plt>: 0.00 : 14a60: ff 25 ba d8 22 00 jmpq *0x22d8ba(%rip) # 242320 0.00 : 14a66: 68 64 00 00 00 pushq $0x64 0.00 : 14a6b: e9 a0 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a70 : 0.00 : 14a70: ff 25 b2 d8 22 00 jmpq *0x22d8b2(%rip) # 242328 0.00 : 14a76: 68 65 00 00 00 pushq $0x65 0.00 : 14a7b: e9 90 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a80 : 0.00 : 14a80: ff 25 aa d8 22 00 jmpq *0x22d8aa(%rip) # 242330 0.00 : 14a86: 68 66 00 00 00 pushq $0x66 0.00 : 14a8b: e9 80 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014a90 : 0.00 : 14a90: ff 25 a2 d8 22 00 jmpq *0x22d8a2(%rip) # 242338 0.00 : 14a96: 68 67 00 00 00 pushq $0x67 0.00 : 14a9b: e9 70 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014aa0 : 0.00 : 14aa0: ff 25 9a d8 22 00 jmpq *0x22d89a(%rip) # 242340 0.00 : 14aa6: 68 68 00 00 00 pushq $0x68 0.00 : 14aab: e9 60 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ab0 : 0.00 : 14ab0: ff 25 92 d8 22 00 jmpq *0x22d892(%rip) # 242348 0.00 : 14ab6: 68 69 00 00 00 pushq $0x69 0.00 : 14abb: e9 50 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ac0 : 0.00 : 14ac0: ff 25 8a d8 22 00 jmpq *0x22d88a(%rip) # 242350 0.00 : 14ac6: 68 6a 00 00 00 pushq $0x6a 0.00 : 14acb: e9 40 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ad0 <_nc_scroll_window@plt>: 0.00 : 14ad0: ff 25 82 d8 22 00 jmpq *0x22d882(%rip) # 242358 0.00 : 14ad6: 68 6b 00 00 00 pushq $0x6b 0.00 : 14adb: e9 30 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ae0 <_nc_init_keytry@plt>: 0.00 : 14ae0: ff 25 7a d8 22 00 jmpq *0x22d87a(%rip) # 242360 0.00 : 14ae6: 68 6c 00 00 00 pushq $0x6c 0.00 : 14aeb: e9 20 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014af0 : 0.00 : 14af0: ff 25 72 d8 22 00 jmpq *0x22d872(%rip) # 242368 0.00 : 14af6: 68 6d 00 00 00 pushq $0x6d 0.00 : 14afb: e9 10 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b00 : 0.00 : 14b00: ff 25 6a d8 22 00 jmpq *0x22d86a(%rip) # 242370 0.00 : 14b06: 68 6e 00 00 00 pushq $0x6e 0.00 : 14b0b: e9 00 f9 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b10 : 0.00 : 14b10: ff 25 62 d8 22 00 jmpq *0x22d862(%rip) # 242378 0.00 : 14b16: 68 6f 00 00 00 pushq $0x6f 0.00 : 14b1b: e9 f0 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b20 <_nc_delink_entry@plt>: 0.00 : 14b20: ff 25 5a d8 22 00 jmpq *0x22d85a(%rip) # 242380 0.00 : 14b26: 68 70 00 00 00 pushq $0x70 0.00 : 14b2b: e9 e0 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b30 : 0.00 : 14b30: ff 25 52 d8 22 00 jmpq *0x22d852(%rip) # 242388 0.00 : 14b36: 68 71 00 00 00 pushq $0x71 0.00 : 14b3b: e9 d0 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b40 <__xstat@plt>: 0.00 : 14b40: ff 25 4a d8 22 00 jmpq *0x22d84a(%rip) # 242390 0.00 : 14b46: 68 72 00 00 00 pushq $0x72 0.00 : 14b4b: e9 c0 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b50 : 0.00 : 14b50: ff 25 42 d8 22 00 jmpq *0x22d842(%rip) # 242398 0.00 : 14b56: 68 73 00 00 00 pushq $0x73 0.00 : 14b5b: e9 b0 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b60 <__vfprintf_chk@plt>: 0.00 : 14b60: ff 25 3a d8 22 00 jmpq *0x22d83a(%rip) # 2423a0 0.00 : 14b66: 68 74 00 00 00 pushq $0x74 0.00 : 14b6b: e9 a0 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b70 <_nc_msec_cost@plt>: 0.00 : 14b70: ff 25 32 d8 22 00 jmpq *0x22d832(%rip) # 2423a8 0.00 : 14b76: 68 75 00 00 00 pushq $0x75 0.00 : 14b7b: e9 90 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b80 : 0.00 : 14b80: ff 25 2a d8 22 00 jmpq *0x22d82a(%rip) # 2423b0 0.00 : 14b86: 68 76 00 00 00 pushq $0x76 0.00 : 14b8b: e9 80 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014b90 <_nc_locale_breaks_acs@plt>: 0.00 : 14b90: ff 25 22 d8 22 00 jmpq *0x22d822(%rip) # 2423b8 0.00 : 14b96: 68 77 00 00 00 pushq $0x77 0.00 : 14b9b: e9 70 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ba0 <__ctype_b_loc@plt>: 0.00 : 14ba0: ff 25 1a d8 22 00 jmpq *0x22d81a(%rip) # 2423c0 0.00 : 14ba6: 68 78 00 00 00 pushq $0x78 0.00 : 14bab: e9 60 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014bb0 : 0.00 : 14bb0: ff 25 12 d8 22 00 jmpq *0x22d812(%rip) # 2423c8 0.00 : 14bb6: 68 79 00 00 00 pushq $0x79 0.00 : 14bbb: e9 50 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014bc0 <__cxa_finalize@plt>: 0.00 : 14bc0: ff 25 0a d8 22 00 jmpq *0x22d80a(%rip) # 2423d0 0.00 : 14bc6: 68 7a 00 00 00 pushq $0x7a 0.00 : 14bcb: e9 40 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014bd0 : 0.00 : 14bd0: ff 25 02 d8 22 00 jmpq *0x22d802(%rip) # 2423d8 0.00 : 14bd6: 68 7b 00 00 00 pushq $0x7b 0.00 : 14bdb: e9 30 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014be0 <_nc_render@plt>: 0.00 : 14be0: ff 25 fa d7 22 00 jmpq *0x22d7fa(%rip) # 2423e0 0.00 : 14be6: 68 7c 00 00 00 pushq $0x7c 0.00 : 14beb: e9 20 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014bf0 : 0.00 : 14bf0: ff 25 f2 d7 22 00 jmpq *0x22d7f2(%rip) # 2423e8 0.00 : 14bf6: 68 7d 00 00 00 pushq $0x7d 0.00 : 14bfb: e9 10 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c00 : 0.00 : 14c00: ff 25 ea d7 22 00 jmpq *0x22d7ea(%rip) # 2423f0 0.00 : 14c06: 68 7e 00 00 00 pushq $0x7e 0.00 : 14c0b: e9 00 f8 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c10 : 0.00 : 14c10: ff 25 e2 d7 22 00 jmpq *0x22d7e2(%rip) # 2423f8 0.00 : 14c16: 68 7f 00 00 00 pushq $0x7f 0.00 : 14c1b: e9 f0 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c20 : 0.00 : 14c20: ff 25 da d7 22 00 jmpq *0x22d7da(%rip) # 242400 0.00 : 14c26: 68 80 00 00 00 pushq $0x80 0.00 : 14c2b: e9 e0 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c30 : 0.00 : 14c30: ff 25 d2 d7 22 00 jmpq *0x22d7d2(%rip) # 242408 0.00 : 14c36: 68 81 00 00 00 pushq $0x81 0.00 : 14c3b: e9 d0 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c40 : 0.00 : 14c40: ff 25 ca d7 22 00 jmpq *0x22d7ca(%rip) # 242410 0.00 : 14c46: 68 82 00 00 00 pushq $0x82 0.00 : 14c4b: e9 c0 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c50 : 0.00 : 14c50: ff 25 c2 d7 22 00 jmpq *0x22d7c2(%rip) # 242418 0.00 : 14c56: 68 83 00 00 00 pushq $0x83 0.00 : 14c5b: e9 b0 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c60 <_nc_insert_ch@plt>: 0.00 : 14c60: ff 25 ba d7 22 00 jmpq *0x22d7ba(%rip) # 242420 0.00 : 14c66: 68 84 00 00 00 pushq $0x84 0.00 : 14c6b: e9 a0 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c70 : 0.00 : 14c70: ff 25 b2 d7 22 00 jmpq *0x22d7b2(%rip) # 242428 0.00 : 14c76: 68 85 00 00 00 pushq $0x85 0.00 : 14c7b: e9 90 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c80 <_nc_timed_wait@plt>: 0.00 : 14c80: ff 25 aa d7 22 00 jmpq *0x22d7aa(%rip) # 242430 0.00 : 14c86: 68 86 00 00 00 pushq $0x86 0.00 : 14c8b: e9 80 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014c90 <_nc_set_tty_mode@plt>: 0.00 : 14c90: ff 25 a2 d7 22 00 jmpq *0x22d7a2(%rip) # 242438 0.00 : 14c96: 68 87 00 00 00 pushq $0x87 0.00 : 14c9b: e9 70 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ca0 <_nc_doalloc@plt>: 0.00 : 14ca0: ff 25 9a d7 22 00 jmpq *0x22d79a(%rip) # 242440 0.00 : 14ca6: 68 88 00 00 00 pushq $0x88 0.00 : 14cab: e9 60 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014cb0 : 0.00 : 14cb0: ff 25 92 d7 22 00 jmpq *0x22d792(%rip) # 242448 0.00 : 14cb6: 68 89 00 00 00 pushq $0x89 0.00 : 14cbb: e9 50 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014cc0 : 0.00 : 14cc0: ff 25 8a d7 22 00 jmpq *0x22d78a(%rip) # 242450 0.00 : 14cc6: 68 8a 00 00 00 pushq $0x8a 0.00 : 14ccb: e9 40 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014cd0 <_nc_scroll_oldhash@plt>: 0.00 : 14cd0: ff 25 82 d7 22 00 jmpq *0x22d782(%rip) # 242458 0.00 : 14cd6: 68 8b 00 00 00 pushq $0x8b 0.00 : 14cdb: e9 30 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ce0 <_nc_err_abort@plt>: 0.00 : 14ce0: ff 25 7a d7 22 00 jmpq *0x22d77a(%rip) # 242460 0.00 : 14ce6: 68 8c 00 00 00 pushq $0x8c 0.00 : 14ceb: e9 20 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014cf0 : 0.00 : 14cf0: ff 25 72 d7 22 00 jmpq *0x22d772(%rip) # 242468 0.00 : 14cf6: 68 8d 00 00 00 pushq $0x8d 0.00 : 14cfb: e9 10 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d00 : 0.00 : 14d00: ff 25 6a d7 22 00 jmpq *0x22d76a(%rip) # 242470 0.00 : 14d06: 68 8e 00 00 00 pushq $0x8e 0.00 : 14d0b: e9 00 f7 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d10 : 0.00 : 14d10: ff 25 62 d7 22 00 jmpq *0x22d762(%rip) # 242478 0.00 : 14d16: 68 8f 00 00 00 pushq $0x8f 0.00 : 14d1b: e9 f0 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d20 : 0.00 : 14d20: ff 25 5a d7 22 00 jmpq *0x22d75a(%rip) # 242480 0.00 : 14d26: 68 90 00 00 00 pushq $0x90 0.00 : 14d2b: e9 e0 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d30 : 0.00 : 14d30: ff 25 52 d7 22 00 jmpq *0x22d752(%rip) # 242488 0.00 : 14d36: 68 91 00 00 00 pushq $0x91 0.00 : 14d3b: e9 d0 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d40 <_nc_is_dir_path@plt>: 0.00 : 14d40: ff 25 4a d7 22 00 jmpq *0x22d74a(%rip) # 242490 0.00 : 14d46: 68 92 00 00 00 pushq $0x92 0.00 : 14d4b: e9 c0 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d50 : 0.00 : 14d50: ff 25 42 d7 22 00 jmpq *0x22d742(%rip) # 242498 0.00 : 14d56: 68 93 00 00 00 pushq $0x93 0.00 : 14d5b: e9 b0 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d60 : 0.00 : 14d60: ff 25 3a d7 22 00 jmpq *0x22d73a(%rip) # 2424a0 0.00 : 14d66: 68 94 00 00 00 pushq $0x94 0.00 : 14d6b: e9 a0 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d70 : 0.00 : 14d70: ff 25 32 d7 22 00 jmpq *0x22d732(%rip) # 2424a8 0.00 : 14d76: 68 95 00 00 00 pushq $0x95 0.00 : 14d7b: e9 90 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d80 <_nc_screen_wrap@plt>: 0.00 : 14d80: ff 25 2a d7 22 00 jmpq *0x22d72a(%rip) # 2424b0 0.00 : 14d86: 68 96 00 00 00 pushq $0x96 0.00 : 14d8b: e9 80 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014d90 : 0.00 : 14d90: ff 25 22 d7 22 00 jmpq *0x22d722(%rip) # 2424b8 0.00 : 14d96: 68 97 00 00 00 pushq $0x97 0.00 : 14d9b: e9 70 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014da0 <_nc_free_entries@plt>: 0.00 : 14da0: ff 25 1a d7 22 00 jmpq *0x22d71a(%rip) # 2424c0 0.00 : 14da6: 68 98 00 00 00 pushq $0x98 0.00 : 14dab: e9 60 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014db0 : 0.00 : 14db0: ff 25 12 d7 22 00 jmpq *0x22d712(%rip) # 2424c8 0.00 : 14db6: 68 99 00 00 00 pushq $0x99 0.00 : 14dbb: e9 50 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014dc0 : 0.00 : 14dc0: ff 25 0a d7 22 00 jmpq *0x22d70a(%rip) # 2424d0 0.00 : 14dc6: 68 9a 00 00 00 pushq $0x9a 0.00 : 14dcb: e9 40 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014dd0 <_nc_update_screensize@plt>: 0.00 : 14dd0: ff 25 02 d7 22 00 jmpq *0x22d702(%rip) # 2424d8 0.00 : 14dd6: 68 9b 00 00 00 pushq $0x9b 0.00 : 14ddb: e9 30 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014de0 <_nc_str_copy@plt>: 0.00 : 14de0: ff 25 fa d6 22 00 jmpq *0x22d6fa(%rip) # 2424e0 0.00 : 14de6: 68 9c 00 00 00 pushq $0x9c 0.00 : 14deb: e9 20 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014df0 <_nc_str_null@plt>: 0.00 : 14df0: ff 25 f2 d6 22 00 jmpq *0x22d6f2(%rip) # 2424e8 0.00 : 14df6: 68 9d 00 00 00 pushq $0x9d 0.00 : 14dfb: e9 10 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e00 : 0.00 : 14e00: ff 25 ea d6 22 00 jmpq *0x22d6ea(%rip) # 2424f0 0.00 : 14e06: 68 9e 00 00 00 pushq $0x9e 0.00 : 14e0b: e9 00 f6 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e10 <_nc_signal_handler@plt>: 0.00 : 14e10: ff 25 e2 d6 22 00 jmpq *0x22d6e2(%rip) # 2424f8 0.00 : 14e16: 68 9f 00 00 00 pushq $0x9f 0.00 : 14e1b: e9 f0 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e20 : 0.00 : 14e20: ff 25 da d6 22 00 jmpq *0x22d6da(%rip) # 242500 0.00 : 14e26: 68 a0 00 00 00 pushq $0xa0 0.00 : 14e2b: e9 e0 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e30 <_nc_mvcur_init@plt>: 0.00 : 14e30: ff 25 d2 d6 22 00 jmpq *0x22d6d2(%rip) # 242508 0.00 : 14e36: 68 a1 00 00 00 pushq $0xa1 0.00 : 14e3b: e9 d0 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e40 : 0.00 : 14e40: ff 25 ca d6 22 00 jmpq *0x22d6ca(%rip) # 242510 0.00 : 14e46: 68 a2 00 00 00 pushq $0xa2 0.00 : 14e4b: e9 c0 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e50 <_nc_pathlast@plt>: 0.00 : 14e50: ff 25 c2 d6 22 00 jmpq *0x22d6c2(%rip) # 242518 0.00 : 14e56: 68 a3 00 00 00 pushq $0xa3 0.00 : 14e5b: e9 b0 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e60 <_nc_setupterm@plt>: 0.00 : 14e60: ff 25 ba d6 22 00 jmpq *0x22d6ba(%rip) # 242520 0.00 : 14e66: 68 a4 00 00 00 pushq $0xa4 0.00 : 14e6b: e9 a0 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e70 : 0.00 : 14e70: ff 25 b2 d6 22 00 jmpq *0x22d6b2(%rip) # 242528 0.00 : 14e76: 68 a5 00 00 00 pushq $0xa5 0.00 : 14e7b: e9 90 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e80 <_nc_free_termtype@plt>: 0.00 : 14e80: ff 25 aa d6 22 00 jmpq *0x22d6aa(%rip) # 242530 0.00 : 14e86: 68 a6 00 00 00 pushq $0xa6 0.00 : 14e8b: e9 80 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014e90 : 0.00 : 14e90: ff 25 a2 d6 22 00 jmpq *0x22d6a2(%rip) # 242538 0.00 : 14e96: 68 a7 00 00 00 pushq $0xa7 0.00 : 14e9b: e9 70 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ea0 <_nc_safe_strcpy@plt>: 0.00 : 14ea0: ff 25 9a d6 22 00 jmpq *0x22d69a(%rip) # 242540 0.00 : 14ea6: 68 a8 00 00 00 pushq $0xa8 0.00 : 14eab: e9 60 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014eb0 : 0.00 : 14eb0: ff 25 92 d6 22 00 jmpq *0x22d692(%rip) # 242548 0.00 : 14eb6: 68 a9 00 00 00 pushq $0xa9 0.00 : 14ebb: e9 50 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ec0 <__strcpy_chk@plt>: 0.00 : 14ec0: ff 25 8a d6 22 00 jmpq *0x22d68a(%rip) # 242550 0.00 : 14ec6: 68 aa 00 00 00 pushq $0xaa 0.00 : 14ecb: e9 40 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ed0 <_nc_tic_dir@plt>: 0.00 : 14ed0: ff 25 82 d6 22 00 jmpq *0x22d682(%rip) # 242558 0.00 : 14ed6: 68 ab 00 00 00 pushq $0xab 0.00 : 14edb: e9 30 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ee0 : 0.00 : 14ee0: ff 25 7a d6 22 00 jmpq *0x22d67a(%rip) # 242560 0.00 : 14ee6: 68 ac 00 00 00 pushq $0xac 0.00 : 14eeb: e9 20 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ef0 : 0.00 : 14ef0: ff 25 72 d6 22 00 jmpq *0x22d672(%rip) # 242568 0.00 : 14ef6: 68 ad 00 00 00 pushq $0xad 0.00 : 14efb: e9 10 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f00 <_nc_makenew@plt>: 0.00 : 14f00: ff 25 6a d6 22 00 jmpq *0x22d66a(%rip) # 242570 0.00 : 14f06: 68 ae 00 00 00 pushq $0xae 0.00 : 14f0b: e9 00 f5 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f10 : 0.00 : 14f10: ff 25 62 d6 22 00 jmpq *0x22d662(%rip) # 242578 0.00 : 14f16: 68 af 00 00 00 pushq $0xaf 0.00 : 14f1b: e9 f0 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f20 : 0.00 : 14f20: ff 25 5a d6 22 00 jmpq *0x22d65a(%rip) # 242580 0.00 : 14f26: 68 b0 00 00 00 pushq $0xb0 0.00 : 14f2b: e9 e0 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f30 : 0.00 : 14f30: ff 25 52 d6 22 00 jmpq *0x22d652(%rip) # 242588 0.00 : 14f36: 68 b1 00 00 00 pushq $0xb1 0.00 : 14f3b: e9 d0 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f40 : 0.00 : 14f40: ff 25 4a d6 22 00 jmpq *0x22d64a(%rip) # 242590 0.00 : 14f46: 68 b2 00 00 00 pushq $0xb2 0.00 : 14f4b: e9 c0 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f50 : 0.00 : 14f50: ff 25 42 d6 22 00 jmpq *0x22d642(%rip) # 242598 0.00 : 14f56: 68 b3 00 00 00 pushq $0xb3 0.00 : 14f5b: e9 b0 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f60 : 0.00 : 14f60: ff 25 3a d6 22 00 jmpq *0x22d63a(%rip) # 2425a0 0.00 : 14f66: 68 b4 00 00 00 pushq $0xb4 0.00 : 14f6b: e9 a0 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f70 <_nc_outch@plt>: 0.00 : 14f70: ff 25 32 d6 22 00 jmpq *0x22d632(%rip) # 2425a8 0.00 : 14f76: 68 b5 00 00 00 pushq $0xb5 0.00 : 14f7b: e9 90 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f80 : 0.00 : 14f80: ff 25 2a d6 22 00 jmpq *0x22d62a(%rip) # 2425b0 0.00 : 14f86: 68 b6 00 00 00 pushq $0xb6 0.00 : 14f8b: e9 80 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014f90 : 0.00 : 14f90: ff 25 22 d6 22 00 jmpq *0x22d622(%rip) # 2425b8 0.00 : 14f96: 68 b7 00 00 00 pushq $0xb7 0.00 : 14f9b: e9 70 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014fa0 : 0.00 : 14fa0: ff 25 1a d6 22 00 jmpq *0x22d61a(%rip) # 2425c0 0.00 : 14fa6: 68 b8 00 00 00 pushq $0xb8 0.00 : 14fab: e9 60 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014fb0 : 0.00 : 14fb0: ff 25 12 d6 22 00 jmpq *0x22d612(%rip) # 2425c8 0.00 : 14fb6: 68 b9 00 00 00 pushq $0xb9 0.00 : 14fbb: e9 50 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014fc0 <_nc_screen_init@plt>: 0.00 : 14fc0: ff 25 0a d6 22 00 jmpq *0x22d60a(%rip) # 2425d0 0.00 : 14fc6: 68 ba 00 00 00 pushq $0xba 0.00 : 14fcb: e9 40 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014fd0 <_nc_mvcur_resume@plt>: 0.00 : 14fd0: ff 25 02 d6 22 00 jmpq *0x22d602(%rip) # 2425d8 0.00 : 14fd6: 68 bb 00 00 00 pushq $0xbb 0.00 : 14fdb: e9 30 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014fe0 <_nc_wgetch@plt>: 0.00 : 14fe0: ff 25 fa d5 22 00 jmpq *0x22d5fa(%rip) # 2425e0 0.00 : 14fe6: 68 bc 00 00 00 pushq $0xbc 0.00 : 14feb: e9 20 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000014ff0 <_nc_tgetent_leaks@plt>: 0.00 : 14ff0: ff 25 f2 d5 22 00 jmpq *0x22d5f2(%rip) # 2425e8 0.00 : 14ff6: 68 bd 00 00 00 pushq $0xbd 0.00 : 14ffb: e9 10 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000015000 : 0.00 : 15000: ff 25 ea d5 22 00 jmpq *0x22d5ea(%rip) # 2425f0 0.00 : 15006: 68 be 00 00 00 pushq $0xbe 0.00 : 1500b: e9 00 f4 ff ff jmpq 14410 <_init+0x18> : : 0000000000015010 : 0.00 : 15010: ff 25 e2 d5 22 00 jmpq *0x22d5e2(%rip) # 2425f8 0.00 : 15016: 68 bf 00 00 00 pushq $0xbf 0.00 : 1501b: e9 f0 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015020 <__errno_location@plt>: 0.00 : 15020: ff 25 da d5 22 00 jmpq *0x22d5da(%rip) # 242600 0.00 : 15026: 68 c0 00 00 00 pushq $0xc0 0.00 : 1502b: e9 e0 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015030 : 0.00 : 15030: ff 25 d2 d5 22 00 jmpq *0x22d5d2(%rip) # 242608 0.00 : 15036: 68 c1 00 00 00 pushq $0xc1 0.00 : 1503b: e9 d0 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015040 <_nc_fseid@plt>: 0.00 : 15040: ff 25 ca d5 22 00 jmpq *0x22d5ca(%rip) # 242610 0.00 : 15046: 68 c2 00 00 00 pushq $0xc2 0.00 : 1504b: e9 c0 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015050 : 0.00 : 15050: ff 25 c2 d5 22 00 jmpq *0x22d5c2(%rip) # 242618 0.00 : 15056: 68 c3 00 00 00 pushq $0xc3 0.00 : 1505b: e9 b0 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015060 : 0.00 : 15060: ff 25 ba d5 22 00 jmpq *0x22d5ba(%rip) # 242620 0.00 : 15066: 68 c4 00 00 00 pushq $0xc4 0.00 : 1506b: e9 a0 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015070 : 0.00 : 15070: ff 25 b2 d5 22 00 jmpq *0x22d5b2(%rip) # 242628 0.00 : 15076: 68 c5 00 00 00 pushq $0xc5 0.00 : 1507b: e9 90 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015080 : 0.00 : 15080: ff 25 aa d5 22 00 jmpq *0x22d5aa(%rip) # 242630 0.00 : 15086: 68 c6 00 00 00 pushq $0xc6 0.00 : 1508b: e9 80 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015090 <_nc_baudrate@plt>: 0.00 : 15090: ff 25 a2 d5 22 00 jmpq *0x22d5a2(%rip) # 242638 0.00 : 15096: 68 c7 00 00 00 pushq $0xc7 0.00 : 1509b: e9 70 f3 ff ff jmpq 14410 <_init+0x18> : : 00000000000150a0 : 0.00 : 150a0: ff 25 9a d5 22 00 jmpq *0x22d59a(%rip) # 242640 0.00 : 150a6: 68 c8 00 00 00 pushq $0xc8 0.00 : 150ab: e9 60 f3 ff ff jmpq 14410 <_init+0x18> : : 00000000000150b0 <_nc_screen_of@plt>: 0.00 : 150b0: ff 25 92 d5 22 00 jmpq *0x22d592(%rip) # 242648 0.00 : 150b6: 68 c9 00 00 00 pushq $0xc9 0.00 : 150bb: e9 50 f3 ff ff jmpq 14410 <_init+0x18> : : 00000000000150c0 : 0.00 : 150c0: ff 25 8a d5 22 00 jmpq *0x22d58a(%rip) # 242650 0.00 : 150c6: 68 ca 00 00 00 pushq $0xca 0.00 : 150cb: e9 40 f3 ff ff jmpq 14410 <_init+0x18> : : 00000000000150d0 : 0.00 : 150d0: ff 25 82 d5 22 00 jmpq *0x22d582(%rip) # 242658 0.00 : 150d6: 68 cb 00 00 00 pushq $0xcb 0.00 : 150db: e9 30 f3 ff ff jmpq 14410 <_init+0x18> : : 00000000000150e0 <__stack_chk_fail@plt>: 0.00 : 150e0: ff 25 7a d5 22 00 jmpq *0x22d57a(%rip) # 242660 0.00 : 150e6: 68 cc 00 00 00 pushq $0xcc 0.00 : 150eb: e9 20 f3 ff ff jmpq 14410 <_init+0x18> : : 00000000000150f0 : 0.00 : 150f0: ff 25 72 d5 22 00 jmpq *0x22d572(%rip) # 242668 0.00 : 150f6: 68 cd 00 00 00 pushq $0xcd 0.00 : 150fb: e9 10 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015100 : 0.00 : 15100: ff 25 6a d5 22 00 jmpq *0x22d56a(%rip) # 242670 0.00 : 15106: 68 ce 00 00 00 pushq $0xce 0.00 : 1510b: e9 00 f3 ff ff jmpq 14410 <_init+0x18> : : 0000000000015110 <_nc_expand_try@plt>: 0.00 : 15110: ff 25 62 d5 22 00 jmpq *0x22d562(%rip) # 242678 0.00 : 15116: 68 cf 00 00 00 pushq $0xcf 0.00 : 1511b: e9 f0 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015120 <_nc_eventlist_timeout@plt>: 0.00 : 15120: ff 25 5a d5 22 00 jmpq *0x22d55a(%rip) # 242680 0.00 : 15126: 68 d0 00 00 00 pushq $0xd0 0.00 : 1512b: e9 e0 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015130 <_nc_get_locale@plt>: 0.00 : 15130: ff 25 52 d5 22 00 jmpq *0x22d552(%rip) # 242688 0.00 : 15136: 68 d1 00 00 00 pushq $0xd1 0.00 : 1513b: e9 d0 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015140 : 0.00 : 15140: ff 25 4a d5 22 00 jmpq *0x22d54a(%rip) # 242690 0.00 : 15146: 68 d2 00 00 00 pushq $0xd2 0.00 : 1514b: e9 c0 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015150 <_nc_screen_resume@plt>: 0.00 : 15150: ff 25 42 d5 22 00 jmpq *0x22d542(%rip) # 242698 0.00 : 15156: 68 d3 00 00 00 pushq $0xd3 0.00 : 1515b: e9 b0 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015160 : 0.00 : 15160: ff 25 3a d5 22 00 jmpq *0x22d53a(%rip) # 2426a0 0.00 : 15166: 68 d4 00 00 00 pushq $0xd4 0.00 : 1516b: e9 a0 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015170 : 0.00 : 15170: ff 25 32 d5 22 00 jmpq *0x22d532(%rip) # 2426a8 0.00 : 15176: 68 d5 00 00 00 pushq $0xd5 0.00 : 1517b: e9 90 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015180 : 0.00 : 15180: ff 25 2a d5 22 00 jmpq *0x22d52a(%rip) # 2426b0 0.00 : 15186: 68 d6 00 00 00 pushq $0xd6 0.00 : 1518b: e9 80 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015190 : 0.00 : 15190: ff 25 22 d5 22 00 jmpq *0x22d522(%rip) # 2426b8 0.00 : 15196: 68 d7 00 00 00 pushq $0xd7 0.00 : 1519b: e9 70 f2 ff ff jmpq 14410 <_init+0x18> : : 00000000000151a0 <_nc_copy_termtype@plt>: 0.00 : 151a0: ff 25 1a d5 22 00 jmpq *0x22d51a(%rip) # 2426c0 0.00 : 151a6: 68 d8 00 00 00 pushq $0xd8 0.00 : 151ab: e9 60 f2 ff ff jmpq 14410 <_init+0x18> : : 00000000000151b0 <_nc_keyname_leaks@plt>: 0.00 : 151b0: ff 25 12 d5 22 00 jmpq *0x22d512(%rip) # 2426c8 0.00 : 151b6: 68 d9 00 00 00 pushq $0xd9 0.00 : 151bb: e9 50 f2 ff ff jmpq 14410 <_init+0x18> : : 00000000000151c0 : 0.00 : 151c0: ff 25 0a d5 22 00 jmpq *0x22d50a(%rip) # 2426d0 0.00 : 151c6: 68 da 00 00 00 pushq $0xda 0.00 : 151cb: e9 40 f2 ff ff jmpq 14410 <_init+0x18> : : 00000000000151d0 : 0.00 : 151d0: ff 25 02 d5 22 00 jmpq *0x22d502(%rip) # 2426d8 0.00 : 151d6: 68 db 00 00 00 pushq $0xdb 0.00 : 151db: e9 30 f2 ff ff jmpq 14410 <_init+0x18> : : 00000000000151e0 <_nc_read_file_entry@plt>: 0.00 : 151e0: ff 25 fa d4 22 00 jmpq *0x22d4fa(%rip) # 2426e0 0.00 : 151e6: 68 dc 00 00 00 pushq $0xdc 0.00 : 151eb: e9 20 f2 ff ff jmpq 14410 <_init+0x18> : : 00000000000151f0 <_nc_fallback@plt>: 0.00 : 151f0: ff 25 f2 d4 22 00 jmpq *0x22d4f2(%rip) # 2426e8 0.00 : 151f6: 68 dd 00 00 00 pushq $0xdd 0.00 : 151fb: e9 10 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015200 <_nc_printf_string@plt>: 0.00 : 15200: ff 25 ea d4 22 00 jmpq *0x22d4ea(%rip) # 2426f0 0.00 : 15206: 68 de 00 00 00 pushq $0xde 0.00 : 1520b: e9 00 f2 ff ff jmpq 14410 <_init+0x18> : : 0000000000015210 <_nc_env_access@plt>: 0.00 : 15210: ff 25 e2 d4 22 00 jmpq *0x22d4e2(%rip) # 2426f8 0.00 : 15216: 68 df 00 00 00 pushq $0xdf 0.00 : 1521b: e9 f0 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015220 <_nc_synchook@plt>: 0.00 : 15220: ff 25 da d4 22 00 jmpq *0x22d4da(%rip) # 242700 0.00 : 15226: 68 e0 00 00 00 pushq $0xe0 0.00 : 1522b: e9 e0 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015230 : 0.00 : 15230: ff 25 d2 d4 22 00 jmpq *0x22d4d2(%rip) # 242708 0.00 : 15236: 68 e1 00 00 00 pushq $0xe1 0.00 : 1523b: e9 d0 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015240 : 0.00 : 15240: ff 25 ca d4 22 00 jmpq *0x22d4ca(%rip) # 242710 0.00 : 15246: 68 e2 00 00 00 pushq $0xe2 0.00 : 1524b: e9 c0 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015250 : 0.00 : 15250: ff 25 c2 d4 22 00 jmpq *0x22d4c2(%rip) # 242718 0.00 : 15256: 68 e3 00 00 00 pushq $0xe3 0.00 : 1525b: e9 b0 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015260 <_nc_safe_strcat@plt>: 0.00 : 15260: ff 25 ba d4 22 00 jmpq *0x22d4ba(%rip) # 242720 0.00 : 15266: 68 e4 00 00 00 pushq $0xe4 0.00 : 1526b: e9 a0 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015270 : 0.00 : 15270: ff 25 b2 d4 22 00 jmpq *0x22d4b2(%rip) # 242728 0.00 : 15276: 68 e5 00 00 00 pushq $0xe5 0.00 : 1527b: e9 90 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015280 : 0.00 : 15280: ff 25 aa d4 22 00 jmpq *0x22d4aa(%rip) # 242730 0.00 : 15286: 68 e6 00 00 00 pushq $0xe6 0.00 : 1528b: e9 80 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015290 : 0.00 : 15290: ff 25 a2 d4 22 00 jmpq *0x22d4a2(%rip) # 242738 0.00 : 15296: 68 e7 00 00 00 pushq $0xe7 0.00 : 1529b: e9 70 f1 ff ff jmpq 14410 <_init+0x18> : : 00000000000152a0 : 0.00 : 152a0: ff 25 9a d4 22 00 jmpq *0x22d49a(%rip) # 242740 0.00 : 152a6: 68 e8 00 00 00 pushq $0xe8 0.00 : 152ab: e9 60 f1 ff ff jmpq 14410 <_init+0x18> : : 00000000000152b0 : 0.00 : 152b0: ff 25 92 d4 22 00 jmpq *0x22d492(%rip) # 242748 0.00 : 152b6: 68 e9 00 00 00 pushq $0xe9 0.00 : 152bb: e9 50 f1 ff ff jmpq 14410 <_init+0x18> : : 00000000000152c0 : 0.00 : 152c0: ff 25 8a d4 22 00 jmpq *0x22d48a(%rip) # 242750 0.00 : 152c6: 68 ea 00 00 00 pushq $0xea 0.00 : 152cb: e9 40 f1 ff ff jmpq 14410 <_init+0x18> : : 00000000000152d0 : 0.00 : 152d0: ff 25 82 d4 22 00 jmpq *0x22d482(%rip) # 242758 0.00 : 152d6: 68 eb 00 00 00 pushq $0xeb 0.00 : 152db: e9 30 f1 ff ff jmpq 14410 <_init+0x18> : : 00000000000152e0 : 0.00 : 152e0: ff 25 7a d4 22 00 jmpq *0x22d47a(%rip) # 242760 0.00 : 152e6: 68 ec 00 00 00 pushq $0xec 0.00 : 152eb: e9 20 f1 ff ff jmpq 14410 <_init+0x18> : : 00000000000152f0 : 0.00 : 152f0: ff 25 72 d4 22 00 jmpq *0x22d472(%rip) # 242768 0.00 : 152f6: 68 ed 00 00 00 pushq $0xed 0.00 : 152fb: e9 10 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015300 <_nc_add_to_try@plt>: 0.00 : 15300: ff 25 6a d4 22 00 jmpq *0x22d46a(%rip) # 242770 0.00 : 15306: 68 ee 00 00 00 pushq $0xee 0.00 : 1530b: e9 00 f1 ff ff jmpq 14410 <_init+0x18> : : 0000000000015310 : 0.00 : 15310: ff 25 62 d4 22 00 jmpq *0x22d462(%rip) # 242778 0.00 : 15316: 68 ef 00 00 00 pushq $0xef 0.00 : 1531b: e9 f0 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015320 <_nc_set_no_padding@plt>: 0.00 : 15320: ff 25 5a d4 22 00 jmpq *0x22d45a(%rip) # 242780 0.00 : 15326: 68 f0 00 00 00 pushq $0xf0 0.00 : 1532b: e9 e0 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015330 : 0.00 : 15330: ff 25 52 d4 22 00 jmpq *0x22d452(%rip) # 242788 0.00 : 15336: 68 f1 00 00 00 pushq $0xf1 0.00 : 1533b: e9 d0 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015340 <_nc_tparm_analyze@plt>: 0.00 : 15340: ff 25 4a d4 22 00 jmpq *0x22d44a(%rip) # 242790 0.00 : 15346: 68 f2 00 00 00 pushq $0xf2 0.00 : 1534b: e9 c0 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015350 : 0.00 : 15350: ff 25 42 d4 22 00 jmpq *0x22d442(%rip) # 242798 0.00 : 15356: 68 f3 00 00 00 pushq $0xf3 0.00 : 1535b: e9 b0 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015360 <_nc_ospeed@plt>: 0.00 : 15360: ff 25 3a d4 22 00 jmpq *0x22d43a(%rip) # 2427a0 0.00 : 15366: 68 f4 00 00 00 pushq $0xf4 0.00 : 1536b: e9 a0 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015370 <_nc_do_color@plt>: 0.00 : 15370: ff 25 32 d4 22 00 jmpq *0x22d432(%rip) # 2427a8 0.00 : 15376: 68 f5 00 00 00 pushq $0xf5 0.00 : 1537b: e9 90 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015380 <__sprintf_chk@plt>: 0.00 : 15380: ff 25 2a d4 22 00 jmpq *0x22d42a(%rip) # 2427b0 0.00 : 15386: 68 f6 00 00 00 pushq $0xf6 0.00 : 1538b: e9 80 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015390 : 0.00 : 15390: ff 25 22 d4 22 00 jmpq *0x22d422(%rip) # 2427b8 0.00 : 15396: 68 f7 00 00 00 pushq $0xf7 0.00 : 1539b: e9 70 f0 ff ff jmpq 14410 <_init+0x18> : : 00000000000153a0 <_nc_handle_sigwinch@plt>: 0.00 : 153a0: ff 25 1a d4 22 00 jmpq *0x22d41a(%rip) # 2427c0 0.00 : 153a6: 68 f8 00 00 00 pushq $0xf8 0.00 : 153ab: e9 60 f0 ff ff jmpq 14410 <_init+0x18> : : 00000000000153b0 : 0.00 : 153b0: ff 25 12 d4 22 00 jmpq *0x22d412(%rip) # 2427c8 0.00 : 153b6: 68 f9 00 00 00 pushq $0xf9 0.00 : 153bb: e9 50 f0 ff ff jmpq 14410 <_init+0x18> : : 00000000000153c0 : 0.00 : 153c0: ff 25 0a d4 22 00 jmpq *0x22d40a(%rip) # 2427d0 0.00 : 153c6: 68 fa 00 00 00 pushq $0xfa 0.00 : 153cb: e9 40 f0 ff ff jmpq 14410 <_init+0x18> : : 00000000000153d0 : 0.00 : 153d0: ff 25 02 d4 22 00 jmpq *0x22d402(%rip) # 2427d8 0.00 : 153d6: 68 fb 00 00 00 pushq $0xfb 0.00 : 153db: e9 30 f0 ff ff jmpq 14410 <_init+0x18> : : 00000000000153e0 : 0.00 : 153e0: ff 25 fa d3 22 00 jmpq *0x22d3fa(%rip) # 2427e0 0.00 : 153e6: 68 fc 00 00 00 pushq $0xfc 0.00 : 153eb: e9 20 f0 ff ff jmpq 14410 <_init+0x18> : : 00000000000153f0 : 0.00 : 153f0: ff 25 f2 d3 22 00 jmpq *0x22d3f2(%rip) # 2427e8 0.00 : 153f6: 68 fd 00 00 00 pushq $0xfd 0.00 : 153fb: e9 10 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015400 : 0.00 : 15400: ff 25 ea d3 22 00 jmpq *0x22d3ea(%rip) # 2427f0 0.00 : 15406: 68 fe 00 00 00 pushq $0xfe 0.00 : 1540b: e9 00 f0 ff ff jmpq 14410 <_init+0x18> : : 0000000000015410 : 0.00 : 15410: ff 25 e2 d3 22 00 jmpq *0x22d3e2(%rip) # 2427f8 0.00 : 15416: 68 ff 00 00 00 pushq $0xff 0.00 : 1541b: e9 f0 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015420 : 0.00 : 15420: ff 25 da d3 22 00 jmpq *0x22d3da(%rip) # 242800 0.00 : 15426: 68 00 01 00 00 pushq $0x100 0.00 : 1542b: e9 e0 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015430 : 0.00 : 15430: ff 25 d2 d3 22 00 jmpq *0x22d3d2(%rip) # 242808 0.00 : 15436: 68 01 01 00 00 pushq $0x101 0.00 : 1543b: e9 d0 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015440 : 0.00 : 15440: ff 25 ca d3 22 00 jmpq *0x22d3ca(%rip) # 242810 0.00 : 15446: 68 02 01 00 00 pushq $0x102 0.00 : 1544b: e9 c0 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015450 : 0.00 : 15450: ff 25 c2 d3 22 00 jmpq *0x22d3c2(%rip) # 242818 0.00 : 15456: 68 03 01 00 00 pushq $0x103 0.00 : 1545b: e9 b0 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015460 : 0.00 : 15460: ff 25 ba d3 22 00 jmpq *0x22d3ba(%rip) # 242820 0.00 : 15466: 68 04 01 00 00 pushq $0x104 0.00 : 1546b: e9 a0 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015470 : 0.00 : 15470: ff 25 b2 d3 22 00 jmpq *0x22d3b2(%rip) # 242828 0.00 : 15476: 68 05 01 00 00 pushq $0x105 0.00 : 1547b: e9 90 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015480 : 0.00 : 15480: ff 25 aa d3 22 00 jmpq *0x22d3aa(%rip) # 242830 0.00 : 15486: 68 06 01 00 00 pushq $0x106 0.00 : 1548b: e9 80 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015490 <_nc_waddch_nosync@plt>: 0.00 : 15490: ff 25 a2 d3 22 00 jmpq *0x22d3a2(%rip) # 242838 0.00 : 15496: 68 07 01 00 00 pushq $0x107 0.00 : 1549b: e9 70 ef ff ff jmpq 14410 <_init+0x18> : : 00000000000154a0 <_nc_mvcur_wrap@plt>: 0.00 : 154a0: ff 25 9a d3 22 00 jmpq *0x22d39a(%rip) # 242840 0.00 : 154a6: 68 08 01 00 00 pushq $0x108 0.00 : 154ab: e9 60 ef ff ff jmpq 14410 <_init+0x18> : : 00000000000154b0 : 0.00 : 154b0: ff 25 92 d3 22 00 jmpq *0x22d392(%rip) # 242848 0.00 : 154b6: 68 09 01 00 00 pushq $0x109 0.00 : 154bb: e9 50 ef ff ff jmpq 14410 <_init+0x18> : : 00000000000154c0 : 0.00 : 154c0: ff 25 8a d3 22 00 jmpq *0x22d38a(%rip) # 242850 0.00 : 154c6: 68 0a 01 00 00 pushq $0x10a 0.00 : 154cb: e9 40 ef ff ff jmpq 14410 <_init+0x18> : : 00000000000154d0 <_nc_ripoffline@plt>: 0.00 : 154d0: ff 25 82 d3 22 00 jmpq *0x22d382(%rip) # 242858 0.00 : 154d6: 68 0b 01 00 00 pushq $0x10b 0.00 : 154db: e9 30 ef ff ff jmpq 14410 <_init+0x18> : : 00000000000154e0 : 0.00 : 154e0: ff 25 7a d3 22 00 jmpq *0x22d37a(%rip) # 242860 0.00 : 154e6: 68 0c 01 00 00 pushq $0x10c 0.00 : 154eb: e9 20 ef ff ff jmpq 14410 <_init+0x18> : : 00000000000154f0 : 0.00 : 154f0: ff 25 72 d3 22 00 jmpq *0x22d372(%rip) # 242868 0.00 : 154f6: 68 0d 01 00 00 pushq $0x10d 0.00 : 154fb: e9 10 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015500 : 0.00 : 15500: ff 25 6a d3 22 00 jmpq *0x22d36a(%rip) # 242870 0.00 : 15506: 68 0e 01 00 00 pushq $0x10e 0.00 : 1550b: e9 00 ef ff ff jmpq 14410 <_init+0x18> : : 0000000000015510 : 0.00 : 15510: ff 25 62 d3 22 00 jmpq *0x22d362(%rip) # 242878 0.00 : 15516: 68 0f 01 00 00 pushq $0x10f 0.00 : 1551b: e9 f0 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015520 : 0.00 : 15520: ff 25 5a d3 22 00 jmpq *0x22d35a(%rip) # 242880 0.00 : 15526: 68 10 01 00 00 pushq $0x110 0.00 : 1552b: e9 e0 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015530 : 0.00 : 15530: ff 25 52 d3 22 00 jmpq *0x22d352(%rip) # 242888 0.00 : 15536: 68 11 01 00 00 pushq $0x111 0.00 : 1553b: e9 d0 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015540 <_nc_read_entry@plt>: 0.00 : 15540: ff 25 4a d3 22 00 jmpq *0x22d34a(%rip) # 242890 0.00 : 15546: 68 12 01 00 00 pushq $0x112 0.00 : 1554b: e9 c0 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015550 : 0.00 : 15550: ff 25 42 d3 22 00 jmpq *0x22d342(%rip) # 242898 0.00 : 15556: 68 13 01 00 00 pushq $0x113 0.00 : 1555b: e9 b0 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015560 <_nc_init_acs@plt>: 0.00 : 15560: ff 25 3a d3 22 00 jmpq *0x22d33a(%rip) # 2428a0 0.00 : 15566: 68 14 01 00 00 pushq $0x114 0.00 : 1556b: e9 a0 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015570 : 0.00 : 15570: ff 25 32 d3 22 00 jmpq *0x22d332(%rip) # 2428a8 0.00 : 15576: 68 15 01 00 00 pushq $0x115 0.00 : 1557b: e9 90 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015580 <_nc_visbuf2@plt>: 0.00 : 15580: ff 25 2a d3 22 00 jmpq *0x22d32a(%rip) # 2428b0 0.00 : 15586: 68 16 01 00 00 pushq $0x116 0.00 : 1558b: e9 80 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015590 : 0.00 : 15590: ff 25 22 d3 22 00 jmpq *0x22d322(%rip) # 2428b8 0.00 : 15596: 68 17 01 00 00 pushq $0x117 0.00 : 1559b: e9 70 ee ff ff jmpq 14410 <_init+0x18> : : 00000000000155a0 <_nc_unicode_locale@plt>: 0.00 : 155a0: ff 25 1a d3 22 00 jmpq *0x22d31a(%rip) # 2428c0 0.00 : 155a6: 68 18 01 00 00 pushq $0x118 0.00 : 155ab: e9 60 ee ff ff jmpq 14410 <_init+0x18> : : 00000000000155b0 <_IO_putc@plt>: 0.00 : 155b0: ff 25 12 d3 22 00 jmpq *0x22d312(%rip) # 2428c8 0.00 : 155b6: 68 19 01 00 00 pushq $0x119 0.00 : 155bb: e9 50 ee ff ff jmpq 14410 <_init+0x18> : : 00000000000155c0 : 0.00 : 155c0: ff 25 0a d3 22 00 jmpq *0x22d30a(%rip) # 2428d0 0.00 : 155c6: 68 1a 01 00 00 pushq $0x11a 0.00 : 155cb: e9 40 ee ff ff jmpq 14410 <_init+0x18> : : 00000000000155d0 <_nc_read_termtype@plt>: 0.00 : 155d0: ff 25 02 d3 22 00 jmpq *0x22d302(%rip) # 2428d8 0.00 : 155d6: 68 1b 01 00 00 pushq $0x11b 0.00 : 155db: e9 30 ee ff ff jmpq 14410 <_init+0x18> : : 00000000000155e0 : 0.00 : 155e0: ff 25 fa d2 22 00 jmpq *0x22d2fa(%rip) # 2428e0 0.00 : 155e6: 68 1c 01 00 00 pushq $0x11c 0.00 : 155eb: e9 20 ee ff ff jmpq 14410 <_init+0x18> : : 00000000000155f0 : 0.00 : 155f0: ff 25 f2 d2 22 00 jmpq *0x22d2f2(%rip) # 2428e8 0.00 : 155f6: 68 1d 01 00 00 pushq $0x11d 0.00 : 155fb: e9 10 ee ff ff jmpq 14410 <_init+0x18> : : 0000000000015600 : 0.00 : 15600: ff 25 ea d2 22 00 jmpq *0x22d2ea(%rip) # 2428f0 0.00 : 15606: 68 1e 01 00 00 pushq $0x11e 0.00 : 1560b: e9 00 ee ff ff jmpq 14410 <_init+0x18> : : Disassembly of section .text: : : 0000000000015610 <_nc_scroll_optimize-0xe0>: 0.00 : 15610: 48 83 ec 08 sub $0x8,%rsp 0.00 : 15614: 48 8b 05 8d c8 22 00 mov 0x22c88d(%rip),%rax # 241ea8 0.00 : 1561b: 48 85 c0 test %rax,%rax 0.00 : 1561e: 74 02 je 15622 0.00 : 15620: ff d0 callq *%rax 0.00 : 15622: 48 83 c4 08 add $0x8,%rsp 0.00 : 15626: c3 retq 0.00 : 15627: 90 nop 0.00 : 15628: 90 nop 0.00 : 15629: 90 nop 0.00 : 1562a: 90 nop 0.00 : 1562b: 90 nop 0.00 : 1562c: 90 nop 0.00 : 1562d: 90 nop 0.00 : 1562e: 90 nop 0.00 : 1562f: 90 nop 0.00 : 15630: 55 push %rbp 0.00 : 15631: 80 3d a8 1d 23 00 00 cmpb $0x0,0x231da8(%rip) # 2473e0 <__bss_start+0x10> 0.00 : 15638: 48 89 e5 mov %rsp,%rbp 0.00 : 1563b: 41 54 push %r12 0.00 : 1563d: 53 push %rbx 0.00 : 1563e: 75 62 jne 156a2 0.00 : 15640: 48 83 3d a0 c8 22 00 cmpq $0x0,0x22c8a0(%rip) # 241ee8 0.00 : 15647: 00 0.00 : 15648: 74 0c je 15656 0.00 : 1564a: 48 8b 3d af d2 22 00 mov 0x22d2af(%rip),%rdi # 242900 0.00 : 15651: e8 6a f5 ff ff callq 14bc0 <__cxa_finalize@plt> 0.00 : 15656: 48 8d 05 f3 95 22 00 lea 0x2295f3(%rip),%rax # 23ec50 <_nc_tinfo_fkeys+0x209cb0> 0.00 : 1565d: 4c 8d 25 e4 95 22 00 lea 0x2295e4(%rip),%r12 # 23ec48 <_nc_tinfo_fkeys+0x209ca8> 0.00 : 15664: 48 8b 15 7d 1d 23 00 mov 0x231d7d(%rip),%rdx # 2473e8 <__bss_start+0x18> 0.00 : 1566b: 4c 29 e0 sub %r12,%rax 0.00 : 1566e: 48 c1 f8 03 sar $0x3,%rax 0.00 : 15672: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 15676: 48 39 da cmp %rbx,%rdx 0.00 : 15679: 73 20 jae 1569b 0.00 : 1567b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 15680: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 15684: 48 89 05 5d 1d 23 00 mov %rax,0x231d5d(%rip) # 2473e8 <__bss_start+0x18> 0.00 : 1568b: 41 ff 14 c4 callq *(%r12,%rax,8) 0.00 : 1568f: 48 8b 15 52 1d 23 00 mov 0x231d52(%rip),%rdx # 2473e8 <__bss_start+0x18> 0.00 : 15696: 48 39 da cmp %rbx,%rdx 0.00 : 15699: 72 e5 jb 15680 0.00 : 1569b: c6 05 3e 1d 23 00 01 movb $0x1,0x231d3e(%rip) # 2473e0 <__bss_start+0x10> 0.00 : 156a2: 5b pop %rbx 0.00 : 156a3: 41 5c pop %r12 0.00 : 156a5: c9 leaveq 0.00 : 156a6: c3 retq 0.00 : 156a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 156ae: 00 00 0.00 : 156b0: 55 push %rbp 0.00 : 156b1: 48 83 3d 9f 95 22 00 cmpq $0x0,0x22959f(%rip) # 23ec58 <_nc_tinfo_fkeys+0x209cb8> 0.00 : 156b8: 00 0.00 : 156b9: 48 89 e5 mov %rsp,%rbp 0.00 : 156bc: 74 22 je 156e0 0.00 : 156be: 48 8b 05 eb c7 22 00 mov 0x22c7eb(%rip),%rax # 241eb0 0.00 : 156c5: 48 85 c0 test %rax,%rax 0.00 : 156c8: 74 16 je 156e0 0.00 : 156ca: 48 8d 3d 87 95 22 00 lea 0x229587(%rip),%rdi # 23ec58 <_nc_tinfo_fkeys+0x209cb8> 0.00 : 156d1: 49 89 c3 mov %rax,%r11 0.00 : 156d4: c9 leaveq 0.00 : 156d5: 41 ff e3 jmpq *%r11 0.00 : 156d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 156df: 00 0.00 : 156e0: c9 leaveq 0.00 : 156e1: c3 retq 0.00 : 156e2: 90 nop 0.00 : 156e3: 90 nop 0.00 : 156e4: 90 nop 0.00 : 156e5: 90 nop 0.00 : 156e6: 90 nop 0.00 : 156e7: 90 nop 0.00 : 156e8: 90 nop 0.00 : 156e9: 90 nop 0.00 : 156ea: 90 nop 0.00 : 156eb: 90 nop 0.00 : 156ec: 90 nop 0.00 : 156ed: 90 nop 0.00 : 156ee: 90 nop Sorted summary for file /lib64/libncurses.so.5.6 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libncurses.so.5.6 ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000014bc0 <__cxa_finalize@plt>: 0.00 : 14bc0: ff 25 0a d8 22 00 jmpq *0x22d80a(%rip) # 2423d0 ??:0 100.00 : 14bc6: 68 7a 00 00 00 pushq $0x7a 0.00 : 14bcb: e9 40 f8 ff ff jmpq 14410 <_init+0x18> Sorted summary for file /lib64/libdl-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libdl-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .fini: : : 0000000000001948 <_fini>: ??:0 100.00 : 1948: 55 push %rbp 0.00 : 1949: 48 83 ec 08 sub $0x8,%rsp 0.00 : 194d: e8 06 00 00 00 callq 1958 <_real_fini> 0.00 : 1952: 48 83 c4 08 add $0x8,%rsp 0.00 : 1956: 5d pop %rbp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .plt: : : 000000000001e8a0 : ??:0 100.00 : 1e8a0: ff 25 a2 37 35 00 jmpq *0x3537a2(%rip) # 372048 <_GLOBAL_OFFSET_TABLE_+0x48> 0.00 : 1e8a6: 68 06 00 00 00 pushq $0x6 0.00 : 1e8ab: e9 80 ff ff ff jmpq 1e830 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000029900 : 0.00 : 29900: 0f b6 06 movzbl (%rsi),%eax 0.00 : 29903: 84 c0 test %al,%al 0.00 : 29905: 0f 84 98 00 00 00 je 299a3 0.00 : 2990b: 45 31 c9 xor %r9d,%r9d 0.00 : 2990e: 48 8b 0d 33 72 34 00 mov 0x347233(%rip),%rcx # 370b48 <_nl_C_locobj+0x68> ??:0 33.33 : 29915: 4c 8b 05 3c 72 34 00 mov 0x34723c(%rip),%r8 # 370b58 <_nl_C_locobj+0x78> 0.00 : 2991c: eb 2a jmp 29948 0.00 : 2991e: 66 90 xchg %ax,%ax 0.00 : 29920: 3c 5f cmp $0x5f,%al 0.00 : 29922: 74 2e je 29952 0.00 : 29924: 3c 2d cmp $0x2d,%al 0.00 : 29926: 74 2a je 29952 0.00 : 29928: 3c 2e cmp $0x2e,%al 0.00 : 2992a: 74 26 je 29952 0.00 : 2992c: 3c 2c cmp $0x2c,%al 0.00 : 2992e: 66 90 xchg %ax,%ax 0.00 : 29930: 74 20 je 29952 0.00 : 29932: 3c 3a cmp $0x3a,%al 0.00 : 29934: 74 1c je 29952 0.00 : 29936: 3c 2f cmp $0x2f,%al 0.00 : 29938: 74 56 je 29990 0.00 : 2993a: 48 83 c6 01 add $0x1,%rsi 0.00 : 2993e: 0f b6 06 movzbl (%rsi),%eax 0.00 : 29941: 84 c0 test %al,%al 0.00 : 29943: 74 22 je 29967 0.00 : 29945: 0f 1f 00 nopl (%rax) 0.00 : 29948: 48 0f be d0 movsbq %al,%rdx 0.00 : 2994c: f6 04 51 08 testb $0x8,(%rcx,%rdx,2) 0.00 : 29950: 74 ce je 29920 0.00 : 29952: 41 8b 04 90 mov (%r8,%rdx,4),%eax 0.00 : 29956: 48 83 c6 01 add $0x1,%rsi 0.00 : 2995a: 88 07 mov %al,(%rdi) 0.00 : 2995c: 0f b6 06 movzbl (%rsi),%eax 0.00 : 2995f: 48 83 c7 01 add $0x1,%rdi 0.00 : 29963: 84 c0 test %al,%al 0.00 : 29965: 75 e1 jne 29948 33.33 : 29967: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 2996b: 41 8d 51 01 lea 0x1(%r9),%edx 0.00 : 2996f: 7f 19 jg 2998a 0.00 : 29971: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 29978: 83 c2 01 add $0x1,%edx 0.00 : 2997b: c6 07 2f movb $0x2f,(%rdi) 0.00 : 2997e: 48 83 c7 01 add $0x1,%rdi 0.00 : 29982: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 29985: 83 e8 01 sub $0x1,%eax 0.00 : 29988: 7e ee jle 29978 33.33 : 2998a: c6 07 00 movb $0x0,(%rdi) 0.00 : 2998d: c3 retq 0.00 : 2998e: 66 90 xchg %ax,%ax 0.00 : 29990: 41 83 c1 01 add $0x1,%r9d 0.00 : 29994: 41 83 f9 03 cmp $0x3,%r9d 0.00 : 29998: 74 f0 je 2998a 0.00 : 2999a: c6 07 2f movb $0x2f,(%rdi) 0.00 : 2999d: 48 83 c7 01 add $0x1,%rdi 0.00 : 299a1: eb 97 jmp 2993a 0.00 : 299a3: ba 01 00 00 00 mov $0x1,%edx 0.00 : 299a8: eb ce jmp 29978 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002c2a0 <__ctype_tolower_loc>: 0.00 : 2c2a0: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx 0.00 : 2c2a7: 00 00 0.00 : 2c2a9: 48 8b 15 50 5c 34 00 mov 0x345c50(%rip),%rdx # 371f00 <_DYNAMIC+0x3a0> 0.00 : 2c2b0: 48 83 3c 11 00 cmpq $0x0,(%rcx,%rdx,1) ??:0 100.00 : 2c2b5: 74 05 je 2c2bc <__ctype_tolower_loc+0x1c> 0.00 : 2c2b7: 48 8d 04 11 lea (%rcx,%rdx,1),%rax 0.00 : 2c2bb: c3 retq 0.00 : 2c2bc: 48 8b 05 c5 5a 34 00 mov 0x345ac5(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2c2c3: 48 8b 04 01 mov (%rcx,%rax,1),%rax 0.00 : 2c2c7: 48 8b 00 mov (%rax),%rax 0.00 : 2c2ca: 48 8b 40 58 mov 0x58(%rax),%rax 0.00 : 2c2ce: 48 05 00 02 00 00 add $0x200,%rax 0.00 : 2c2d4: 48 89 04 11 mov %rax,(%rcx,%rdx,1) 0.00 : 2c2d8: eb dd jmp 2c2b7 <__ctype_tolower_loc+0x17> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000032a20 <_longjmp_unwind>: ??:0 100.00 : 32a20: 8b 05 8a 4c 34 00 mov 0x344c8a(%rip),%eax # 3776b0 <__libc_pthread_functions_init> 0.00 : 32a26: 85 c0 test %eax,%eax 0.00 : 32a28: 75 06 jne 32a30 <_longjmp_unwind+0x10> 0.00 : 32a2a: f3 c3 repz retq 0.00 : 32a2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 32a30: 4c 8b 1d f9 4b 34 00 mov 0x344bf9(%rip),%r11 # 377630 <__libc_pthread_functions+0x130> 0.00 : 32a37: 48 89 e6 mov %rsp,%rsi 0.00 : 32a3a: 49 c1 cb 11 ror $0x11,%r11 0.00 : 32a3e: 64 4c 33 1c 25 30 00 xor %fs:0x30,%r11 0.00 : 32a45: 00 00 0.00 : 32a47: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000034ae0 : 0.00 : 34ae0: 55 push %rbp 0.00 : 34ae1: 48 89 e5 mov %rsp,%rbp 0.00 : 34ae4: 41 57 push %r15 0.00 : 34ae6: 41 56 push %r14 0.00 : 34ae8: 49 89 d6 mov %rdx,%r14 0.00 : 34aeb: 41 55 push %r13 0.00 : 34aed: 41 54 push %r12 0.00 : 34aef: 53 push %rbx 0.00 : 34af0: 48 83 ec 78 sub $0x78,%rsp 0.00 : 34af4: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 34af8: 48 89 bd 78 ff ff ff mov %rdi,-0x88(%rbp) 0.00 : 34aff: 48 89 b5 70 ff ff ff mov %rsi,-0x90(%rbp) 0.00 : 34b06: 48 89 8d 68 ff ff ff mov %rcx,-0x98(%rbp) 0.00 : 34b0d: 4c 89 85 60 ff ff ff mov %r8,-0xa0(%rbp) 0.00 : 34b14: 0f 87 c6 01 00 00 ja 34ce0 0.00 : 34b1a: 49 89 f7 mov %rsi,%r15 0.00 : 34b1d: 4c 0f af fa imul %rdx,%r15 0.00 : 34b21: 49 81 ff ff 03 00 00 cmp $0x3ff,%r15 0.00 : 34b28: 0f 86 ce 01 00 00 jbe 34cfc 0.00 : 34b2e: 8b 05 ac e7 33 00 mov 0x33e7ac(%rip),%eax # 3732e0 0.00 : 34b34: 85 c0 test %eax,%eax 0.00 : 34b36: 0f 84 24 02 00 00 je 34d60 0.00 : 34b3c: 48 63 0d 9d e7 33 00 movslq 0x33e79d(%rip),%rcx # 3732e0 0.00 : 34b43: 31 d2 xor %edx,%edx 0.00 : 34b45: 4c 89 f8 mov %r15,%rax 0.00 : 34b48: 48 f7 f1 div %rcx 0.00 : 34b4b: 48 3b 05 96 e7 33 00 cmp 0x33e796(%rip),%rax # 3732e8 0.00 : 34b52: 0f 87 d0 01 00 00 ja 34d28 0.00 : 34b58: 4c 8b 25 d9 d2 33 00 mov 0x33d2d9(%rip),%r12 # 371e38 <_DYNAMIC+0x2d8> 0.00 : 34b5f: 64 48 8b 1c 25 00 00 mov %fs:0x0,%rbx 0.00 : 34b66: 00 00 0.00 : 34b68: 4c 89 ff mov %r15,%rdi 0.00 : 34b6b: 46 8b 2c 23 mov (%rbx,%r12,1),%r13d 0.00 : 34b6f: e8 dc 9c fe ff callq 1e850 0.00 : 34b74: 48 85 c0 test %rax,%rax 0.00 : 34b77: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 34b7b: 46 89 2c 23 mov %r13d,(%rbx,%r12,1) 0.00 : 34b7f: 0f 84 a3 01 00 00 je 34d28 0.00 : 34b85: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 34b89: 48 89 55 c0 mov %rdx,-0x40(%rbp) 0.00 : 34b8d: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 34b94: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 34b9b: 49 83 fe 20 cmp $0x20,%r14 0.00 : 34b9f: 4c 89 75 a0 mov %r14,-0x60(%rbp) 0.00 : 34ba3: 48 c7 45 a8 04 00 00 movq $0x4,-0x58(%rbp) 0.00 : 34baa: 00 0.00 : 34bab: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 34baf: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 34bb3: 0f 86 f7 01 00 00 jbe 34db0 0.00 : 34bb9: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 34bc0: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 34bc4: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 34bcb: 48 c1 e1 03 shl $0x3,%rcx 0.00 : 34bcf: 48 01 ce add %rcx,%rsi 0.00 : 34bd2: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 34bd6: 48 8d 14 0e lea (%rsi,%rcx,1),%rdx 0.00 : 34bda: 49 89 f7 mov %rsi,%r15 0.00 : 34bdd: 48 39 d6 cmp %rdx,%rsi 0.00 : 34be0: 48 89 55 90 mov %rdx,-0x70(%rbp) 0.00 : 34be4: 73 21 jae 34c07 0.00 : 34be6: 48 89 c2 mov %rax,%rdx 0.00 : 34be9: 48 89 f0 mov %rsi,%rax 0.00 : 34bec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 34bf0: 48 89 10 mov %rdx,(%rax) 0.00 : 34bf3: 48 83 c0 08 add $0x8,%rax 0.00 : 34bf7: 4c 01 f2 add %r14,%rdx 0.00 : 34bfa: 48 39 45 90 cmp %rax,-0x70(%rbp) 0.00 : 34bfe: 77 f0 ja 34bf0 0.00 : 34c00: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 34c04: 48 01 ce add %rcx,%rsi 0.00 : 34c07: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 34c0e: 48 8d 7d a0 lea -0x60(%rbp),%rdi 0.00 : 34c12: 48 c7 45 a0 08 00 00 movq $0x8,-0x60(%rbp) 0.00 : 34c19: 00 0.00 : 34c1a: 48 c7 45 a8 03 00 00 movq $0x3,-0x58(%rbp) 0.00 : 34c21: 00 0.00 : 34c22: e8 69 fb ff ff callq 34790 0.00 : 34c27: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 34c2e: 00 0.00 : 34c2f: 0f 84 ca 01 00 00 je 34dff 0.00 : 34c35: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 34c3c: 00 0.00 : 34c3d: 0f 1f 00 nopl (%rax) 0.00 : 34c40: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 34c44: 4d 8b 24 c7 mov (%r15,%rax,8),%r12 0.00 : 34c48: 4c 3b 65 88 cmp -0x78(%rbp),%r12 0.00 : 34c4c: 74 6b je 34cb9 0.00 : 34c4e: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 34c52: 48 8b 75 88 mov -0x78(%rbp),%rsi 0.00 : 34c56: 4c 89 f2 mov %r14,%rdx 0.00 : 34c59: e8 f2 fa 04 00 callq 84750 0.00 : 34c5e: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 34c62: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 34c66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 34c6d: 00 00 00 0.00 : 34c70: 4c 89 e3 mov %r12,%rbx 0.00 : 34c73: 48 2b 9d 78 ff ff ff sub -0x88(%rbp),%rbx 0.00 : 34c7a: 31 d2 xor %edx,%edx 0.00 : 34c7c: 49 89 3c cf mov %rdi,(%r15,%rcx,8) 0.00 : 34c80: 4c 89 e6 mov %r12,%rsi 0.00 : 34c83: 4d 89 e5 mov %r12,%r13 0.00 : 34c86: 48 89 d8 mov %rbx,%rax 0.00 : 34c89: 49 f7 f6 div %r14 0.00 : 34c8c: 4c 89 f2 mov %r14,%rdx 0.00 : 34c8f: 48 89 c3 mov %rax,%rbx 0.00 : 34c92: e8 b9 fa 04 00 callq 84750 0.00 : 34c97: 49 8d 04 df lea (%r15,%rbx,8),%rax 0.00 : 34c9b: 4c 89 e7 mov %r12,%rdi 0.00 : 34c9e: 48 89 d9 mov %rbx,%rcx 0.00 : 34ca1: 4c 8b 20 mov (%rax),%r12 0.00 : 34ca4: 4c 3b 65 88 cmp -0x78(%rbp),%r12 0.00 : 34ca8: 75 c6 jne 34c70 0.00 : 34caa: 4c 89 28 mov %r13,(%rax) 0.00 : 34cad: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 34cb1: 4c 89 f2 mov %r14,%rdx 0.00 : 34cb4: e8 97 fa 04 00 callq 84750 0.00 : 34cb9: 48 83 45 98 01 addq $0x1,-0x68(%rbp) 0.00 : 34cbe: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 34cc2: 48 39 85 70 ff ff ff cmp %rax,-0x90(%rbp) 0.00 : 34cc9: 0f 86 30 01 00 00 jbe 34dff 0.00 : 34ccf: 4c 01 75 88 add %r14,-0x78(%rbp) 0.00 : 34cd3: e9 68 ff ff ff jmpq 34c40 0.00 : 34cd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 34cdf: 00 0.00 : 34ce0: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 34ce7: 48 c1 e0 04 shl $0x4,%rax 0.00 : 34ceb: 4c 8d 3c 10 lea (%rax,%rdx,1),%r15 0.00 : 34cef: 49 81 ff ff 03 00 00 cmp $0x3ff,%r15 0.00 : 34cf6: 0f 87 32 fe ff ff ja 34b2e ??:0 50.00 : 34cfc: 49 8d 47 1e lea 0x1e(%r15),%rax 0.00 : 34d00: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 34d07: 00 0.00 : 34d08: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 34d0c: 48 29 c4 sub %rax,%rsp 0.00 : 34d0f: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 34d14: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 34d18: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 34d1c: e9 6c fe ff ff jmpq 34b8d 0.00 : 34d21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 34d28: 4c 8b 85 60 ff ff ff mov -0xa0(%rbp),%r8 0.00 : 34d2f: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 34d36: 4c 89 f2 mov %r14,%rdx 0.00 : 34d39: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 34d40: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 34d47: e8 94 f5 ff ff callq 342e0 <_quicksort> 0.00 : 34d4c: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 34d50: 5b pop %rbx 0.00 : 34d51: 41 5c pop %r12 0.00 : 34d53: 41 5d pop %r13 0.00 : 34d55: 41 5e pop %r14 0.00 : 34d57: 41 5f pop %r15 0.00 : 34d59: c9 leaveq 0.00 : 34d5a: c3 retq 0.00 : 34d5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 34d60: bf 55 00 00 00 mov $0x55,%edi 0.00 : 34d65: e8 f6 56 07 00 callq aa460 <__sysconf> 0.00 : 34d6a: 48 ba ff ff ff ff ff movabs $0x7fffffffffffffff,%rdx 0.00 : 34d71: ff ff 7f 0.00 : 34d74: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 34d78: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 34d7c: 48 8d 42 03 lea 0x3(%rdx),%rax 0.00 : 34d80: 48 85 d2 test %rdx,%rdx 0.00 : 34d83: 48 0f 48 d0 cmovs %rax,%rdx 0.00 : 34d87: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 34d8b: 48 89 15 56 e5 33 00 mov %rdx,0x33e556(%rip) # 3732e8 0.00 : 34d92: bf 1e 00 00 00 mov $0x1e,%edi 0.00 : 34d97: e8 c4 56 07 00 callq aa460 <__sysconf> 0.00 : 34d9c: 89 05 3e e5 33 00 mov %eax,0x33e53e(%rip) # 3732e0 0.00 : 34da2: e9 95 fd ff ff jmpq 34b3c 0.00 : 34da7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 34dae: 00 00 0.00 : 34db0: 41 f6 c6 03 test $0x3,%r14b 0.00 : 34db4: 75 32 jne 34de8 0.00 : 34db6: f6 85 78 ff ff ff 03 testb $0x3,-0x88(%rbp) 0.00 : 34dbd: 75 29 jne 34de8 0.00 : 34dbf: 49 83 fe 04 cmp $0x4,%r14 0.00 : 34dc3: 74 65 je 34e2a 50.00 : 34dc5: 49 83 fe 08 cmp $0x8,%r14 0.00 : 34dc9: 74 4c je 34e17 0.00 : 34dcb: 41 83 e6 07 and $0x7,%r14d 0.00 : 34dcf: 90 nop 0.00 : 34dd0: 75 16 jne 34de8 0.00 : 34dd2: f6 85 78 ff ff ff 07 testb $0x7,-0x88(%rbp) 0.00 : 34dd9: 75 0d jne 34de8 0.00 : 34ddb: 48 c7 45 a8 02 00 00 movq $0x2,-0x58(%rbp) 0.00 : 34de2: 00 0.00 : 34de3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 34de8: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 34def: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 34df6: 48 8d 7d a0 lea -0x60(%rbp),%rdi 0.00 : 34dfa: e8 91 f9 ff ff callq 34790 0.00 : 34dff: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 34e03: e8 98 9a fe ff callq 1e8a0 0.00 : 34e08: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 34e0c: 5b pop %rbx 0.00 : 34e0d: 41 5c pop %r12 0.00 : 34e0f: 41 5d pop %r13 0.00 : 34e11: 41 5e pop %r14 0.00 : 34e13: 41 5f pop %r15 0.00 : 34e15: c9 leaveq 0.00 : 34e16: c3 retq 0.00 : 34e17: f6 85 78 ff ff ff 07 testb $0x7,-0x88(%rbp) 0.00 : 34e1e: 75 c8 jne 34de8 0.00 : 34e20: 48 c7 45 a8 01 00 00 movq $0x1,-0x58(%rbp) 0.00 : 34e27: 00 0.00 : 34e28: eb be jmp 34de8 0.00 : 34e2a: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 34e31: 00 0.00 : 34e32: eb b4 jmp 34de8 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000351a0 <__add_to_environ>: ??:0 100.00 : 351a0: 55 push %rbp 0.00 : 351a1: 48 89 e5 mov %rsp,%rbp 0.00 : 351a4: 41 57 push %r15 0.00 : 351a6: 49 89 ff mov %rdi,%r15 0.00 : 351a9: 41 56 push %r14 0.00 : 351ab: 41 55 push %r13 0.00 : 351ad: 41 54 push %r12 0.00 : 351af: 53 push %rbx 0.00 : 351b0: 48 83 ec 48 sub $0x48,%rsp 0.00 : 351b4: 48 89 75 a8 mov %rsi,-0x58(%rbp) 0.00 : 351b8: 48 89 55 a0 mov %rdx,-0x60(%rbp) 0.00 : 351bc: 89 4d 9c mov %ecx,-0x64(%rbp) 0.00 : 351bf: e8 ec b9 04 00 callq 80bb0 <__GI_strlen> 0.00 : 351c4: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) 0.00 : 351c9: 49 89 c6 mov %rax,%r14 0.00 : 351cc: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 351d3: 00 0.00 : 351d4: 74 11 je 351e7 <__add_to_environ+0x47> 0.00 : 351d6: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 351da: e8 d1 b9 04 00 callq 80bb0 <__GI_strlen> 0.00 : 351df: 48 83 c0 01 add $0x1,%rax 0.00 : 351e3: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 351e7: be 01 00 00 00 mov $0x1,%esi 0.00 : 351ec: 31 c0 xor %eax,%eax 0.00 : 351ee: 83 3d bf 24 34 00 00 cmpl $0x0,0x3424bf(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 351f5: 74 10 je 35207 <__add_to_environ+0x67> 0.00 : 351f7: f0 0f b1 35 f1 e0 33 lock cmpxchg %esi,0x33e0f1(%rip) # 3732f0 0.00 : 351fe: 00 0.00 : 351ff: 0f 85 5f 04 00 00 jne 35664 <_L_lock_238> 0.00 : 35205: eb 0d jmp 35214 <__add_to_environ+0x74> 0.00 : 35207: 0f b1 35 e2 e0 33 00 cmpxchg %esi,0x33e0e2(%rip) # 3732f0 0.00 : 3520e: 0f 85 50 04 00 00 jne 35664 <_L_lock_238> 0.00 : 35214: 48 8b 05 5d cc 33 00 mov 0x33cc5d(%rip),%rax # 371e78 <_DYNAMIC+0x318> 0.00 : 3521b: 45 31 ed xor %r13d,%r13d 0.00 : 3521e: be 10 00 00 00 mov $0x10,%esi 0.00 : 35223: 4c 8b 20 mov (%rax),%r12 0.00 : 35226: 4d 85 e4 test %r12,%r12 0.00 : 35229: 74 5f je 3528a <__add_to_environ+0xea> 0.00 : 3522b: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 3522f: 45 31 ed xor %r13d,%r13d 0.00 : 35232: 48 85 db test %rbx,%rbx 0.00 : 35235: 74 4b je 35282 <__add_to_environ+0xe2> 0.00 : 35237: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3523e: 00 00 0.00 : 35240: 4c 89 f2 mov %r14,%rdx 0.00 : 35243: 4c 89 fe mov %r15,%rsi 0.00 : 35246: 48 89 df mov %rbx,%rdi 0.00 : 35249: e8 a2 bb 04 00 callq 80df0 <__GI_strncmp> 0.00 : 3524e: 85 c0 test %eax,%eax 0.00 : 35250: 75 07 jne 35259 <__add_to_environ+0xb9> 0.00 : 35252: 42 80 3c 33 3d cmpb $0x3d,(%rbx,%r14,1) 0.00 : 35257: 74 11 je 3526a <__add_to_environ+0xca> 0.00 : 35259: 49 83 c4 08 add $0x8,%r12 0.00 : 3525d: 49 83 c5 01 add $0x1,%r13 0.00 : 35261: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 35265: 48 85 db test %rbx,%rbx 0.00 : 35268: 75 d6 jne 35240 <__add_to_environ+0xa0> 0.00 : 3526a: 4d 85 e4 test %r12,%r12 0.00 : 3526d: 4a 8d 34 ed 10 00 00 lea 0x10(,%r13,8),%rsi 0.00 : 35274: 00 0.00 : 35275: 74 13 je 3528a <__add_to_environ+0xea> 0.00 : 35277: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 3527c: 0f 85 5e 01 00 00 jne 353e0 <__add_to_environ+0x240> 0.00 : 35282: 4a 8d 34 ed 10 00 00 lea 0x10(,%r13,8),%rsi 0.00 : 35289: 00 0.00 : 3528a: 48 8b 3d 6f e0 33 00 mov 0x33e06f(%rip),%rdi # 373300 0.00 : 35291: e8 aa 95 fe ff callq 1e840 0.00 : 35296: 48 85 c0 test %rax,%rax 0.00 : 35299: 48 89 c3 mov %rax,%rbx 0.00 : 3529c: 0f 84 5f 01 00 00 je 35401 <__add_to_environ+0x261> 0.00 : 352a2: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : 352a7: 74 7a je 35323 <__add_to_environ+0x183> 0.00 : 352a9: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 352ad: 4a 89 04 eb mov %rax,(%rbx,%r13,8) 0.00 : 352b1: 48 8b 05 c0 cb 33 00 mov 0x33cbc0(%rip),%rax # 371e78 <_DYNAMIC+0x318> 0.00 : 352b8: 48 8b 30 mov (%rax),%rsi 0.00 : 352bb: 48 3b 35 3e e0 33 00 cmp 0x33e03e(%rip),%rsi # 373300 0.00 : 352c2: 74 10 je 352d4 <__add_to_environ+0x134> 0.00 : 352c4: 4a 8d 14 ed 00 00 00 lea 0x0(,%r13,8),%rdx 0.00 : 352cb: 00 0.00 : 352cc: 48 89 df mov %rbx,%rdi 0.00 : 352cf: e8 7c f4 04 00 callq 84750 0.00 : 352d4: 48 8b 05 9d cb 33 00 mov 0x33cb9d(%rip),%rax # 371e78 <_DYNAMIC+0x318> 0.00 : 352db: 4a c7 44 eb 08 00 00 movq $0x0,0x8(%rbx,%r13,8) 0.00 : 352e2: 00 00 0.00 : 352e4: 48 89 1d 15 e0 33 00 mov %rbx,0x33e015(%rip) # 373300 0.00 : 352eb: 48 89 18 mov %rbx,(%rax) 0.00 : 352ee: 83 3d bf 23 34 00 00 cmpl $0x0,0x3423bf(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 352f5: 74 0f je 35306 <__add_to_environ+0x166> 0.00 : 352f7: f0 ff 0d f2 df 33 00 lock decl 0x33dff2(%rip) # 3732f0 0.00 : 352fe: 0f 85 7f 03 00 00 jne 35683 <_L_unlock_331> 0.00 : 35304: eb 0c jmp 35312 <__add_to_environ+0x172> 0.00 : 35306: ff 0d e4 df 33 00 decl 0x33dfe4(%rip) # 3732f0 0.00 : 3530c: 0f 85 71 03 00 00 jne 35683 <_L_unlock_331> 0.00 : 35312: 31 c0 xor %eax,%eax 0.00 : 35314: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 35318: 5b pop %rbx 0.00 : 35319: 41 5c pop %r12 0.00 : 3531b: 41 5d pop %r13 0.00 : 3531d: 41 5e pop %r14 0.00 : 3531f: 41 5f pop %r15 0.00 : 35321: c9 leaveq 0.00 : 35322: c3 retq 0.00 : 35323: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 35327: 48 89 65 b8 mov %rsp,-0x48(%rbp) 0.00 : 3532b: 4c 89 f2 mov %r14,%rdx 0.00 : 3532e: 4c 89 fe mov %r15,%rsi 0.00 : 35331: 4a 8d 44 30 01 lea 0x1(%rax,%r14,1),%rax 0.00 : 35336: 4e 8d 34 eb lea (%rbx,%r13,8),%r14 0.00 : 3533a: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 3533e: 48 83 c0 1e add $0x1e,%rax 0.00 : 35342: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 35346: 48 29 c4 sub %rax,%rsp 0.00 : 35349: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 3534e: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 35352: 4c 89 e7 mov %r12,%rdi 0.00 : 35355: e8 36 ec 04 00 callq 83f90 <__mempcpy> 0.00 : 3535a: c6 00 3d movb $0x3d,(%rax) 0.00 : 3535d: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 35361: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 35365: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 35369: e8 e2 f3 04 00 callq 84750 0.00 : 3536e: 48 8d 15 db 9d 04 00 lea 0x49ddb(%rip),%rdx # 7f150 <__GI_strcmp> 0.00 : 35375: 48 8d 35 7c df 33 00 lea 0x33df7c(%rip),%rsi # 3732f8 0.00 : 3537c: 4c 89 e7 mov %r12,%rdi 0.00 : 3537f: e8 dc 3c 0a 00 callq d9060 0.00 : 35384: 48 85 c0 test %rax,%rax 0.00 : 35387: 74 4e je 353d7 <__add_to_environ+0x237> 0.00 : 35389: 48 8b 00 mov (%rax),%rax 0.00 : 3538c: 48 85 c0 test %rax,%rax 0.00 : 3538f: 49 89 06 mov %rax,(%r14) 0.00 : 35392: 75 3a jne 353ce <__add_to_environ+0x22e> 0.00 : 35394: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 35398: e8 b3 94 fe ff callq 1e850 0.00 : 3539d: 48 85 c0 test %rax,%rax 0.00 : 353a0: 48 89 c7 mov %rax,%rdi 0.00 : 353a3: 49 89 06 mov %rax,(%r14) 0.00 : 353a6: 0f 84 83 00 00 00 je 3542f <__add_to_environ+0x28f> 0.00 : 353ac: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 353b0: 4c 89 e6 mov %r12,%rsi 0.00 : 353b3: e8 98 f3 04 00 callq 84750 0.00 : 353b8: 49 8b 3e mov (%r14),%rdi 0.00 : 353bb: 48 8d 15 8e 9d 04 00 lea 0x49d8e(%rip),%rdx # 7f150 <__GI_strcmp> 0.00 : 353c2: 48 8d 35 2f df 33 00 lea 0x33df2f(%rip),%rsi # 3732f8 0.00 : 353c9: e8 92 42 0a 00 callq d9660 0.00 : 353ce: 48 8b 65 b8 mov -0x48(%rbp),%rsp 0.00 : 353d2: e9 da fe ff ff jmpq 352b1 <__add_to_environ+0x111> 0.00 : 353d7: 49 c7 06 00 00 00 00 movq $0x0,(%r14) 0.00 : 353de: eb b4 jmp 35394 <__add_to_environ+0x1f4> 0.00 : 353e0: 8b 45 9c mov -0x64(%rbp),%eax 0.00 : 353e3: 85 c0 test %eax,%eax 0.00 : 353e5: 0f 84 03 ff ff ff je 352ee <__add_to_environ+0x14e> 0.00 : 353eb: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 353ef: 48 85 db test %rbx,%rbx 0.00 : 353f2: 0f 84 80 00 00 00 je 35478 <__add_to_environ+0x2d8> 0.00 : 353f8: 49 89 1c 24 mov %rbx,(%r12) 0.00 : 353fc: e9 ed fe ff ff jmpq 352ee <__add_to_environ+0x14e> 0.00 : 35401: 83 3d ac 22 34 00 00 cmpl $0x0,0x3422ac(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 35408: 74 0f je 35419 <__add_to_environ+0x279> 0.00 : 3540a: f0 ff 0d df de 33 00 lock decl 0x33dedf(%rip) # 3732f0 0.00 : 35411: 0f 85 8b 02 00 00 jne 356a2 <_L_unlock_472> 0.00 : 35417: eb 0c jmp 35425 <__add_to_environ+0x285> 0.00 : 35419: ff 0d d1 de 33 00 decl 0x33ded1(%rip) # 3732f0 0.00 : 3541f: 0f 85 7d 02 00 00 jne 356a2 <_L_unlock_472> 0.00 : 35425: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 3542a: e9 e5 fe ff ff jmpq 35314 <__add_to_environ+0x174> 0.00 : 3542f: 48 8b 15 02 ca 33 00 mov 0x33ca02(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 35436: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3543d: 00 00 0.00 : 3543f: c7 04 10 0c 00 00 00 movl $0xc,(%rax,%rdx,1) 0.00 : 35446: 83 3d 67 22 34 00 00 cmpl $0x0,0x342267(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 3544d: 74 0f je 3545e <__add_to_environ+0x2be> 0.00 : 3544f: f0 ff 0d 9a de 33 00 lock decl 0x33de9a(%rip) # 3732f0 0.00 : 35456: 0f 85 65 02 00 00 jne 356c1 <_L_unlock_489> 0.00 : 3545c: eb 0c jmp 3546a <__add_to_environ+0x2ca> 0.00 : 3545e: ff 0d 8c de 33 00 decl 0x33de8c(%rip) # 3732f0 0.00 : 35464: 0f 85 57 02 00 00 jne 356c1 <_L_unlock_489> 0.00 : 3546a: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 3546f: 48 8b 65 b8 mov -0x48(%rbp),%rsp 0.00 : 35473: e9 9c fe ff ff jmpq 35314 <__add_to_environ+0x174> 0.00 : 35478: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 3547c: 48 89 65 c0 mov %rsp,-0x40(%rbp) 0.00 : 35480: 4c 89 f2 mov %r14,%rdx 0.00 : 35483: 4c 89 fe mov %r15,%rsi 0.00 : 35486: 4a 8d 44 30 01 lea 0x1(%rax,%r14,1),%rax 0.00 : 3548b: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 3548f: 48 83 c0 1e add $0x1e,%rax 0.00 : 35493: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 35497: 48 29 c4 sub %rax,%rsp 0.00 : 3549a: 4c 8d 6c 24 0f lea 0xf(%rsp),%r13 0.00 : 3549f: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 354a3: 4c 89 ef mov %r13,%rdi 0.00 : 354a6: e8 e5 ea 04 00 callq 83f90 <__mempcpy> 0.00 : 354ab: c6 00 3d movb $0x3d,(%rax) 0.00 : 354ae: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 354b2: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 354b6: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 354ba: e8 91 f2 04 00 callq 84750 0.00 : 354bf: 48 8d 15 8a 9c 04 00 lea 0x49c8a(%rip),%rdx # 7f150 <__GI_strcmp> 0.00 : 354c6: 48 8d 35 2b de 33 00 lea 0x33de2b(%rip),%rsi # 3732f8 0.00 : 354cd: 4c 89 ef mov %r13,%rdi 0.00 : 354d0: e8 8b 3b 0a 00 callq d9060 0.00 : 354d5: 48 85 c0 test %rax,%rax 0.00 : 354d8: 74 08 je 354e2 <__add_to_environ+0x342> 0.00 : 354da: 48 8b 18 mov (%rax),%rbx 0.00 : 354dd: 48 85 db test %rbx,%rbx 0.00 : 354e0: 75 36 jne 35518 <__add_to_environ+0x378> 0.00 : 354e2: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 354e6: e8 65 93 fe ff callq 1e850 0.00 : 354eb: 48 85 c0 test %rax,%rax 0.00 : 354ee: 48 89 c3 mov %rax,%rbx 0.00 : 354f1: 74 2e je 35521 <__add_to_environ+0x381> 0.00 : 354f3: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 354f7: 4c 89 ee mov %r13,%rsi 0.00 : 354fa: 48 89 c7 mov %rax,%rdi 0.00 : 354fd: e8 4e f2 04 00 callq 84750 0.00 : 35502: 48 8d 15 47 9c 04 00 lea 0x49c47(%rip),%rdx # 7f150 <__GI_strcmp> 0.00 : 35509: 48 8d 35 e8 dd 33 00 lea 0x33dde8(%rip),%rsi # 3732f8 0.00 : 35510: 48 89 df mov %rbx,%rdi 0.00 : 35513: e8 48 41 0a 00 callq d9660 0.00 : 35518: 48 8b 65 c0 mov -0x40(%rbp),%rsp 0.00 : 3551c: e9 d7 fe ff ff jmpq 353f8 <__add_to_environ+0x258> 0.00 : 35521: 83 3d 8c 21 34 00 00 cmpl $0x0,0x34218c(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 35528: 74 0f je 35539 <__add_to_environ+0x399> 0.00 : 3552a: f0 ff 0d bf dd 33 00 lock decl 0x33ddbf(%rip) # 3732f0 0.00 : 35531: 0f 85 a9 01 00 00 jne 356e0 <_L_unlock_574> 0.00 : 35537: eb 0c jmp 35545 <__add_to_environ+0x3a5> 0.00 : 35539: ff 0d b1 dd 33 00 decl 0x33ddb1(%rip) # 3732f0 0.00 : 3553f: 0f 85 9b 01 00 00 jne 356e0 <_L_unlock_574> 0.00 : 35545: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 3554a: 48 8b 65 c0 mov -0x40(%rbp),%rsp 0.00 : 3554e: e9 c1 fd ff ff jmpq 35314 <__add_to_environ+0x174> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035720 <__run_exit_handlers>: 0.00 : 35720: 41 55 push %r13 0.00 : 35722: 41 89 d5 mov %edx,%r13d 0.00 : 35725: 41 54 push %r12 0.00 : 35727: 49 89 f4 mov %rsi,%r12 0.00 : 3572a: 55 push %rbp 0.00 : 3572b: 89 fd mov %edi,%ebp 0.00 : 3572d: 53 push %rbx 0.00 : 3572e: 48 83 ec 08 sub $0x8,%rsp 0.00 : 35732: 48 8b 1e mov (%rsi),%rbx 0.00 : 35735: 48 85 db test %rbx,%rbx 0.00 : 35738: 74 6c je 357a6 <__run_exit_handlers+0x86> 0.00 : 3573a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 35740: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 35744: 48 85 c0 test %rax,%rax 0.00 : 35747: 74 51 je 3579a <__run_exit_handlers+0x7a> 0.00 : 35749: 48 83 e8 01 sub $0x1,%rax 0.00 : 3574d: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 35751: 48 8d 44 00 01 lea 0x1(%rax,%rax,1),%rax 0.00 : 35756: 48 c1 e0 04 shl $0x4,%rax 0.00 : 3575a: 48 8b 14 18 mov (%rax,%rbx,1),%rdx 0.00 : 3575e: 48 83 fa 03 cmp $0x3,%rdx 0.00 : 35762: 0f 84 98 00 00 00 je 35800 <__run_exit_handlers+0xe0> ??:0 100.00 : 35768: 48 83 fa 04 cmp $0x4,%rdx 0.00 : 3576c: 74 6a je 357d8 <__run_exit_handlers+0xb8> 0.00 : 3576e: 48 83 fa 02 cmp $0x2,%rdx 0.00 : 35772: 75 cc jne 35740 <__run_exit_handlers+0x20> 0.00 : 35774: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 35778: 89 ef mov %ebp,%edi 0.00 : 3577a: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 3577e: 48 8b 72 10 mov 0x10(%rdx),%rsi 0.00 : 35782: 48 c1 c8 11 ror $0x11,%rax 0.00 : 35786: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 3578d: 00 00 0.00 : 3578f: ff d0 callq *%rax 0.00 : 35791: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 35795: 48 85 c0 test %rax,%rax 0.00 : 35798: 75 af jne 35749 <__run_exit_handlers+0x29> 0.00 : 3579a: 48 8b 03 mov (%rbx),%rax 0.00 : 3579d: 48 85 c0 test %rax,%rax 0.00 : 357a0: 49 89 04 24 mov %rax,(%r12) 0.00 : 357a4: 75 73 jne 35819 <__run_exit_handlers+0xf9> 0.00 : 357a6: 45 84 ed test %r13b,%r13b 0.00 : 357a9: 74 1e je 357c9 <__run_exit_handlers+0xa9> 0.00 : 357ab: 48 8d 1d c6 90 33 00 lea 0x3390c6(%rip),%rbx # 36e878 <__start___libc_atexit> 0.00 : 357b2: 4c 8d 25 c7 90 33 00 lea 0x3390c7(%rip),%r12 # 36e880 <__start___libc_thread_subfreeres> 0.00 : 357b9: 49 39 dc cmp %rbx,%r12 0.00 : 357bc: 76 0b jbe 357c9 <__run_exit_handlers+0xa9> 0.00 : 357be: ff 13 callq *(%rbx) 0.00 : 357c0: 48 83 c3 08 add $0x8,%rbx 0.00 : 357c4: 49 39 dc cmp %rbx,%r12 0.00 : 357c7: 77 f5 ja 357be <__run_exit_handlers+0x9e> 0.00 : 357c9: 89 ef mov %ebp,%edi 0.00 : 357cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 357d0: e8 2b 32 07 00 callq a8a00 <_exit> 0.00 : 357d5: 0f 1f 00 nopl (%rax) 0.00 : 357d8: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 357dc: 89 ee mov %ebp,%esi 0.00 : 357de: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 357e2: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 357e6: 48 c1 c8 11 ror $0x11,%rax 0.00 : 357ea: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 357f1: 00 00 0.00 : 357f3: ff d0 callq *%rax 0.00 : 357f5: e9 46 ff ff ff jmpq 35740 <__run_exit_handlers+0x20> 0.00 : 357fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 35800: 48 8b 44 03 08 mov 0x8(%rbx,%rax,1),%rax 0.00 : 35805: 48 c1 c8 11 ror $0x11,%rax 0.00 : 35809: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 35810: 00 00 0.00 : 35812: ff d0 callq *%rax 0.00 : 35814: e9 27 ff ff ff jmpq 35740 <__run_exit_handlers+0x20> 0.00 : 35819: 48 89 df mov %rbx,%rdi 0.00 : 3581c: e8 7f 90 fe ff callq 1e8a0 0.00 : 35821: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 35825: e9 0b ff ff ff jmpq 35735 <__run_exit_handlers+0x15> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000358b0 <__new_exitfn>: 0.00 : 358b0: 53 push %rbx 0.00 : 358b1: be 01 00 00 00 mov $0x1,%esi 0.00 : 358b6: 48 89 fb mov %rdi,%rbx 0.00 : 358b9: 31 c0 xor %eax,%eax 0.00 : 358bb: 83 3d f2 1d 34 00 00 cmpl $0x0,0x341df2(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 358c2: 74 10 je 358d4 <__new_exitfn+0x24> 0.00 : 358c4: f0 0f b1 35 54 da 33 lock cmpxchg %esi,0x33da54(%rip) # 373320 0.00 : 358cb: 00 0.00 : 358cc: 0f 85 da 01 00 00 jne 35aac <_L_lock_15> 0.00 : 358d2: eb 0d jmp 358e1 <__new_exitfn+0x31> 0.00 : 358d4: 0f b1 35 45 da 33 00 cmpxchg %esi,0x33da45(%rip) # 373320 0.00 : 358db: 0f 85 cb 01 00 00 jne 35aac <_L_lock_15> 0.00 : 358e1: 48 8b 3b mov (%rbx),%rdi ??:0 50.00 : 358e4: 45 31 c0 xor %r8d,%r8d 0.00 : 358e7: 31 c0 xor %eax,%eax 0.00 : 358e9: 48 85 ff test %rdi,%rdi 0.00 : 358ec: 74 65 je 35953 <__new_exitfn+0xa3> 0.00 : 358ee: 66 90 xchg %ax,%ax 0.00 : 358f0: 48 8b 4f 08 mov 0x8(%rdi),%rcx 0.00 : 358f4: 48 85 c9 test %rcx,%rcx 0.00 : 358f7: 74 3f je 35938 <__new_exitfn+0x88> 0.00 : 358f9: 48 8d 71 ff lea -0x1(%rcx),%rsi 0.00 : 358fd: 48 8d 44 36 01 lea 0x1(%rsi,%rsi,1),%rax 0.00 : 35902: 48 c1 e0 04 shl $0x4,%rax 0.00 : 35906: 48 83 3c 07 00 cmpq $0x0,(%rdi,%rax,1) 0.00 : 3590b: 0f 85 8f 00 00 00 jne 359a0 <__new_exitfn+0xf0> 0.00 : 35911: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 35915: 48 8d 54 0f d0 lea -0x30(%rdi,%rcx,1),%rdx 0.00 : 3591a: 48 89 f1 mov %rsi,%rcx 0.00 : 3591d: eb 14 jmp 35933 <__new_exitfn+0x83> 0.00 : 3591f: 90 nop 0.00 : 35920: 48 8b 02 mov (%rdx),%rax 0.00 : 35923: 48 83 ea 20 sub $0x20,%rdx 0.00 : 35927: 48 8d 71 ff lea -0x1(%rcx),%rsi 0.00 : 3592b: 48 85 c0 test %rax,%rax 0.00 : 3592e: 75 70 jne 359a0 <__new_exitfn+0xf0> 0.00 : 35930: 48 89 f1 mov %rsi,%rcx 0.00 : 35933: 48 85 c9 test %rcx,%rcx 0.00 : 35936: 75 e8 jne 35920 <__new_exitfn+0x70> 50.00 : 35938: 48 8b 07 mov (%rdi),%rax 0.00 : 3593b: 48 c7 47 08 00 00 00 movq $0x0,0x8(%rdi) 0.00 : 35942: 00 0.00 : 35943: 49 89 f8 mov %rdi,%r8 0.00 : 35946: 48 85 c0 test %rax,%rax 0.00 : 35949: 74 05 je 35950 <__new_exitfn+0xa0> 0.00 : 3594b: 48 89 c7 mov %rax,%rdi 0.00 : 3594e: eb a0 jmp 358f0 <__new_exitfn+0x40> 0.00 : 35950: 48 89 f8 mov %rdi,%rax 0.00 : 35953: ba 01 00 00 00 mov $0x1,%edx 0.00 : 35958: 48 85 c0 test %rax,%rax 0.00 : 3595b: 0f 85 91 00 00 00 jne 359f2 <__new_exitfn+0x142> 0.00 : 35961: 84 d2 test %dl,%dl 0.00 : 35963: 0f 85 92 00 00 00 jne 359fb <__new_exitfn+0x14b> 0.00 : 35969: be 10 04 00 00 mov $0x410,%esi 0.00 : 3596e: bf 01 00 00 00 mov $0x1,%edi 0.00 : 35973: e8 18 8f fe ff callq 1e890 0.00 : 35978: 48 85 c0 test %rax,%rax 0.00 : 3597b: 49 89 c0 mov %rax,%r8 0.00 : 3597e: 74 77 je 359f7 <__new_exitfn+0x147> 0.00 : 35980: 48 8b 03 mov (%rbx),%rax 0.00 : 35983: 49 89 00 mov %rax,(%r8) 0.00 : 35986: 4c 89 03 mov %r8,(%rbx) 0.00 : 35989: 49 8d 50 10 lea 0x10(%r8),%rdx 0.00 : 3598d: 49 c7 40 08 01 00 00 movq $0x1,0x8(%r8) 0.00 : 35994: 00 0.00 : 35995: eb 23 jmp 359ba <__new_exitfn+0x10a> 0.00 : 35997: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3599e: 00 00 0.00 : 359a0: 48 83 f9 20 cmp $0x20,%rcx 0.00 : 359a4: 74 74 je 35a1a <__new_exitfn+0x16a> 0.00 : 359a6: 48 89 c8 mov %rcx,%rax 0.00 : 359a9: 48 c1 e0 05 shl $0x5,%rax 0.00 : 359ad: 48 8d 54 38 10 lea 0x10(%rax,%rdi,1),%rdx 0.00 : 359b2: 48 8d 41 01 lea 0x1(%rcx),%rax 0.00 : 359b6: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 359ba: 48 c7 02 01 00 00 00 movq $0x1,(%rdx) 0.00 : 359c1: 48 83 05 f7 19 34 00 addq $0x1,0x3419f7(%rip) # 3773c0 <__new_exitfn_called> 0.00 : 359c8: 01 0.00 : 359c9: 83 3d e4 1c 34 00 00 cmpl $0x0,0x341ce4(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 359d0: 74 0f je 359e1 <__new_exitfn+0x131> 0.00 : 359d2: f0 ff 0d 47 d9 33 00 lock decl 0x33d947(%rip) # 373320 0.00 : 359d9: 0f 85 ec 00 00 00 jne 35acb <_L_unlock_159> 0.00 : 359df: eb 0c jmp 359ed <__new_exitfn+0x13d> 0.00 : 359e1: ff 0d 39 d9 33 00 decl 0x33d939(%rip) # 373320 0.00 : 359e7: 0f 85 de 00 00 00 jne 35acb <_L_unlock_159> 0.00 : 359ed: 48 89 d0 mov %rdx,%rax 0.00 : 359f0: 5b pop %rbx 0.00 : 359f1: c3 retq 0.00 : 359f2: 4d 85 c0 test %r8,%r8 0.00 : 359f5: 75 92 jne 35989 <__new_exitfn+0xd9> 0.00 : 359f7: 31 d2 xor %edx,%edx 0.00 : 359f9: eb ce jmp 359c9 <__new_exitfn+0x119> 0.00 : 359fb: 48 8d 0d 7c 51 10 00 lea 0x10517c(%rip),%rcx # 13ab7e <__PRETTY_FUNCTION__.8908> 0.00 : 35a02: 48 8d 35 57 51 10 00 lea 0x105157(%rip),%rsi # 13ab60 <_nl_default_default_domain+0x4a> 0.00 : 35a09: 48 8d 3d 5d 51 10 00 lea 0x10515d(%rip),%rdi # 13ab6d <_nl_default_default_domain+0x57> 0.00 : 35a10: ba 64 00 00 00 mov $0x64,%edx 0.00 : 35a15: e8 06 5f ff ff callq 2b920 <__assert_fail> 0.00 : 35a1a: 4c 89 c0 mov %r8,%rax 0.00 : 35a1d: 31 d2 xor %edx,%edx 0.00 : 35a1f: e9 34 ff ff ff jmpq 35958 <__new_exitfn+0xa8> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035aa0 <__cxa_atexit>: ??:0 100.00 : 35aa0: 48 8d 0d 41 ca 33 00 lea 0x33ca41(%rip),%rcx # 3724e8 <__exit_funcs> 0.00 : 35aa7: e9 84 ff ff ff jmpq 35a30 <__internal_atexit> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035af0 <__cxa_finalize>: 0.00 : 35af0: 41 57 push %r15 ??:0 33.33 : 35af2: 45 31 c0 xor %r8d,%r8d 0.00 : 35af5: 41 bf 04 00 00 00 mov $0x4,%r15d 0.00 : 35afb: 41 56 push %r14 0.00 : 35afd: 41 55 push %r13 0.00 : 35aff: 41 54 push %r12 0.00 : 35b01: 49 89 fc mov %rdi,%r12 0.00 : 35b04: 55 push %rbp 0.00 : 35b05: 53 push %rbx 0.00 : 35b06: 48 83 ec 08 sub $0x8,%rsp 0.00 : 35b0a: 4c 8b 35 d7 c9 33 00 mov 0x33c9d7(%rip),%r14 # 3724e8 <__exit_funcs> 0.00 : 35b11: 4d 85 f6 test %r14,%r14 0.00 : 35b14: 0f 84 a2 00 00 00 je 35bbc <__cxa_finalize+0xcc> 0.00 : 35b1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 35b20: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 35b24: 4d 8d 6e 10 lea 0x10(%r14),%r13 0.00 : 35b28: 48 c1 e0 05 shl $0x5,%rax 0.00 : 35b2c: 49 8d 6c 06 f0 lea -0x10(%r14,%rax,1),%rbp 0.00 : 35b31: 4c 39 ed cmp %r13,%rbp 0.00 : 35b34: 73 1c jae 35b52 <__cxa_finalize+0x62> 33.33 : 35b36: eb 78 jmp 35bb0 <__cxa_finalize+0xc0> 0.00 : 35b38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 35b3f: 00 0.00 : 35b40: 4c 39 65 18 cmp %r12,0x18(%rbp) 0.00 : 35b44: 74 11 je 35b57 <__cxa_finalize+0x67> 0.00 : 35b46: 48 83 ed 20 sub $0x20,%rbp 0.00 : 35b4a: 4c 39 ed cmp %r13,%rbp 0.00 : 35b4d: 0f 1f 00 nopl (%rax) 0.00 : 35b50: 72 5e jb 35bb0 <__cxa_finalize+0xc0> 0.00 : 35b52: 4d 85 e4 test %r12,%r12 0.00 : 35b55: 75 e9 jne 35b40 <__cxa_finalize+0x50> 0.00 : 35b57: 48 8b 55 08 mov 0x8(%rbp),%rdx 0.00 : 35b5b: 48 8b 7d 10 mov 0x10(%rbp),%rdi 0.00 : 35b5f: 4c 89 f8 mov %r15,%rax 0.00 : 35b62: 64 83 3c 25 18 00 00 cmpl $0x0,%fs:0x18 0.00 : 35b69: 00 00 0.00 : 35b6b: 74 01 je 35b6e <__cxa_finalize+0x7e> 0.00 : 35b6d: f0 4c 0f b1 45 00 lock cmpxchg %r8,0x0(%rbp) 0.00 : 35b73: 48 83 f8 04 cmp $0x4,%rax 0.00 : 35b77: 75 cd jne 35b46 <__cxa_finalize+0x56> 0.00 : 35b79: 48 8b 1d 40 18 34 00 mov 0x341840(%rip),%rbx # 3773c0 <__new_exitfn_called> 0.00 : 35b80: 31 f6 xor %esi,%esi 0.00 : 35b82: 4c 89 04 24 mov %r8,(%rsp) 0.00 : 35b86: 48 c1 ca 11 ror $0x11,%rdx 0.00 : 35b8a: 64 48 33 14 25 30 00 xor %fs:0x30,%rdx 0.00 : 35b91: 00 00 0.00 : 35b93: ff d2 callq *%rdx 0.00 : 35b95: 48 3b 1d 24 18 34 00 cmp 0x341824(%rip),%rbx # 3773c0 <__new_exitfn_called> 0.00 : 35b9c: 4c 8b 04 24 mov (%rsp),%r8 0.00 : 35ba0: 0f 85 64 ff ff ff jne 35b0a <__cxa_finalize+0x1a> 0.00 : 35ba6: 48 83 ed 20 sub $0x20,%rbp 0.00 : 35baa: 4c 39 ed cmp %r13,%rbp 0.00 : 35bad: 73 a3 jae 35b52 <__cxa_finalize+0x62> 0.00 : 35baf: 90 nop 0.00 : 35bb0: 4d 8b 36 mov (%r14),%r14 0.00 : 35bb3: 4d 85 f6 test %r14,%r14 0.00 : 35bb6: 0f 85 64 ff ff ff jne 35b20 <__cxa_finalize+0x30> 0.00 : 35bbc: 48 8b 0d 2d c9 33 00 mov 0x33c92d(%rip),%rcx # 3724f0 <__quick_exit_funcs> 0.00 : 35bc3: 48 85 c9 test %rcx,%rcx 0.00 : 35bc6: 74 57 je 35c1f <__cxa_finalize+0x12f> 0.00 : 35bc8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 35bcf: 00 0.00 : 35bd0: 48 8b 41 08 mov 0x8(%rcx),%rax 33.33 : 35bd4: 48 8d 51 10 lea 0x10(%rcx),%rdx 0.00 : 35bd8: 48 c1 e0 05 shl $0x5,%rax 0.00 : 35bdc: 48 8d 44 01 f0 lea -0x10(%rcx,%rax,1),%rax 0.00 : 35be1: 48 39 d0 cmp %rdx,%rax 0.00 : 35be4: 73 1c jae 35c02 <__cxa_finalize+0x112> 0.00 : 35be6: eb 2f jmp 35c17 <__cxa_finalize+0x127> 0.00 : 35be8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 35bef: 00 0.00 : 35bf0: 4c 39 60 18 cmp %r12,0x18(%rax) 0.00 : 35bf4: 74 11 je 35c07 <__cxa_finalize+0x117> 0.00 : 35bf6: 48 83 e8 20 sub $0x20,%rax 0.00 : 35bfa: 48 39 d0 cmp %rdx,%rax 0.00 : 35bfd: 0f 1f 00 nopl (%rax) 0.00 : 35c00: 72 15 jb 35c17 <__cxa_finalize+0x127> 0.00 : 35c02: 4d 85 e4 test %r12,%r12 0.00 : 35c05: 75 e9 jne 35bf0 <__cxa_finalize+0x100> 0.00 : 35c07: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 35c0e: 48 83 e8 20 sub $0x20,%rax 0.00 : 35c12: 48 39 d0 cmp %rdx,%rax 0.00 : 35c15: 73 eb jae 35c02 <__cxa_finalize+0x112> 0.00 : 35c17: 48 8b 09 mov (%rcx),%rcx 0.00 : 35c1a: 48 85 c9 test %rcx,%rcx 0.00 : 35c1d: 75 b1 jne 35bd0 <__cxa_finalize+0xe0> 0.00 : 35c1f: 4d 85 e4 test %r12,%r12 0.00 : 35c22: 74 16 je 35c3a <__cxa_finalize+0x14a> 0.00 : 35c24: 48 83 c4 08 add $0x8,%rsp 0.00 : 35c28: 4c 89 e7 mov %r12,%rdi 0.00 : 35c2b: 5b pop %rbx 0.00 : 35c2c: 5d pop %rbp 0.00 : 35c2d: 41 5c pop %r12 0.00 : 35c2f: 41 5d pop %r13 0.00 : 35c31: 41 5e pop %r14 0.00 : 35c33: 41 5f pop %r15 0.00 : 35c35: e9 96 28 0b 00 jmpq e84d0 <__unregister_atfork> 0.00 : 35c3a: 48 83 c4 08 add $0x8,%rsp 0.00 : 35c3e: 5b pop %rbx 0.00 : 35c3f: 5d pop %rbp 0.00 : 35c40: 41 5c pop %r12 0.00 : 35c42: 41 5d pop %r13 0.00 : 35c44: 41 5e pop %r14 0.00 : 35c46: 41 5f pop %r15 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035d80 : 0.00 : 35d80: 48 85 ff test %rdi,%rdi ??:0 100.00 : 35d83: 53 push %rbx 0.00 : 35d84: 74 3a je 35dc0 0.00 : 35d86: 31 d2 xor %edx,%edx 0.00 : 35d88: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 35d8b: 74 2b je 35db8 0.00 : 35d8d: 48 8d 0d dc dd 33 00 lea 0x33dddc(%rip),%rcx # 373b70 0.00 : 35d94: 48 89 f2 mov %rsi,%rdx 0.00 : 35d97: 48 89 fe mov %rdi,%rsi 0.00 : 35d9a: 31 ff xor %edi,%edi 0.00 : 35d9c: 48 c7 05 c9 dd 33 00 movq $0x0,0x33ddc9(%rip) # 373b70 0.00 : 35da3: 00 00 00 00 0.00 : 35da7: e8 e4 6f 05 00 callq 8cd90 <__mbrtowc> 0.00 : 35dac: 89 c2 mov %eax,%edx 0.00 : 35dae: 85 c0 test %eax,%eax 0.00 : 35db0: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 35db5: 0f 48 d0 cmovs %eax,%edx 0.00 : 35db8: 89 d0 mov %edx,%eax 0.00 : 35dba: 5b pop %rbx 0.00 : 35dbb: c3 retq 0.00 : 35dbc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 35dc0: 64 48 8b 14 25 00 00 mov %fs:0x0,%rdx 0.00 : 35dc7: 00 00 0.00 : 35dc9: 48 8b 05 b8 bf 33 00 mov 0x33bfb8(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 35dd0: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 35dd4: 48 8b 18 mov (%rax),%rbx 0.00 : 35dd7: 48 8b 53 28 mov 0x28(%rbx),%rdx 0.00 : 35ddb: 48 85 d2 test %rdx,%rdx 0.00 : 35dde: 74 18 je 35df8 0.00 : 35de0: 48 c7 05 85 dd 33 00 movq $0x0,0x33dd85(%rip) # 373b70 0.00 : 35de7: 00 00 00 00 0.00 : 35deb: 48 8b 02 mov (%rdx),%rax 0.00 : 35dee: 5b pop %rbx 0.00 : 35def: 8b 50 58 mov 0x58(%rax),%edx 0.00 : 35df2: 89 d0 mov %edx,%eax 0.00 : 35df4: c3 retq 0.00 : 35df5: 0f 1f 00 nopl (%rax) 0.00 : 35df8: 48 8d 05 41 9f 33 00 lea 0x339f41(%rip),%rax # 36fd40 <_nl_C_LC_CTYPE> 0.00 : 35dff: 48 8d 15 fa 95 33 00 lea 0x3395fa(%rip),%rdx # 36f400 <__wcsmbs_gconv_fcts_c> 0.00 : 35e06: 48 39 c3 cmp %rax,%rbx 0.00 : 35e09: 74 d5 je 35de0 0.00 : 35e0b: 48 89 df mov %rbx,%rdi 0.00 : 35e0e: e8 dd 14 06 00 callq 972f0 <__wcsmbs_load_conv> 0.00 : 35e13: 48 8b 53 28 mov 0x28(%rbx),%rdx 0.00 : 35e17: eb c7 jmp 35de0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000036130 : 0.00 : 36130: 48 83 ec 08 sub $0x8,%rsp ??:0 100.00 : 36134: 41 89 f8 mov %edi,%r8d 0.00 : 36137: be 01 00 00 00 mov $0x1,%esi 0.00 : 3613c: 31 c0 xor %eax,%eax 0.00 : 3613e: 83 3d 6f 15 34 00 00 cmpl $0x0,0x34156f(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 36145: 74 10 je 36157 0.00 : 36147: f0 0f b1 35 31 da 33 lock cmpxchg %esi,0x33da31(%rip) # 373b80 0.00 : 3614e: 00 0.00 : 3614f: 0f 85 01 01 00 00 jne 36256 <_L_lock_137> 0.00 : 36155: eb 0d jmp 36164 0.00 : 36157: 0f b1 35 22 da 33 00 cmpxchg %esi,0x33da22(%rip) # 373b80 0.00 : 3615e: 0f 85 f2 00 00 00 jne 36256 <_L_lock_137> 0.00 : 36164: 48 8d 35 95 c3 33 00 lea 0x33c395(%rip),%rsi # 372500 0.00 : 3616b: 44 89 c7 mov %r8d,%edi 0.00 : 3616e: e8 dd 02 00 00 callq 36450 0.00 : 36173: 83 3d 3a 15 34 00 00 cmpl $0x0,0x34153a(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 3617a: 74 0f je 3618b 0.00 : 3617c: f0 ff 0d fd d9 33 00 lock decl 0x33d9fd(%rip) # 373b80 0.00 : 36183: 0f 85 ec 00 00 00 jne 36275 <_L_unlock_148> 0.00 : 36189: eb 0c jmp 36197 0.00 : 3618b: ff 0d ef d9 33 00 decl 0x33d9ef(%rip) # 373b80 0.00 : 36191: 0f 85 de 00 00 00 jne 36275 <_L_unlock_148> 0.00 : 36197: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000049db0 <__printf_fp>: 0.00 : 49db0: 55 push %rbp 0.00 : 49db1: 48 89 e5 mov %rsp,%rbp 0.00 : 49db4: 41 57 push %r15 0.00 : 49db6: 41 56 push %r14 0.00 : 49db8: 41 55 push %r13 0.00 : 49dba: 41 54 push %r12 0.00 : 49dbc: 53 push %rbx 0.00 : 49dbd: 48 81 ec 88 01 00 00 sub $0x188,%rsp 0.00 : 49dc4: 48 89 bd a8 fe ff ff mov %rdi,-0x158(%rbp) 0.00 : 49dcb: 48 89 b5 a0 fe ff ff mov %rsi,-0x160(%rbp) 0.00 : 49dd2: c7 45 a0 00 00 00 00 movl $0x0,-0x60(%rbp) 0.00 : 49dd9: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) 0.00 : 49de0: 48 89 d7 mov %rdx,%rdi 0.00 : 49de3: 0f b6 46 0d movzbl 0xd(%rsi),%eax 0.00 : 49de7: 89 c2 mov %eax,%edx 0.00 : 49de9: c0 ea 02 shr $0x2,%dl 0.00 : 49dec: 89 d1 mov %edx,%ecx 0.00 : 49dee: 83 e1 01 and $0x1,%ecx 0.00 : 49df1: 83 e0 01 and $0x1,%eax 0.00 : 49df4: 89 8d 14 ff ff ff mov %ecx,-0xec(%rbp) 0.00 : 49dfa: 89 c6 mov %eax,%esi 0.00 : 49dfc: 0f 85 66 02 00 00 jne 4a068 <__printf_fp+0x2b8> 0.00 : 49e02: 64 48 8b 1c 25 00 00 mov %fs:0x0,%rbx 0.00 : 49e09: 00 00 0.00 : 49e0b: 48 8b 05 76 7f 32 00 mov 0x327f76(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 49e12: 48 89 9d 80 fe ff ff mov %rbx,-0x180(%rbp) 0.00 : 49e19: 48 89 85 88 fe ff ff mov %rax,-0x178(%rbp) 0.00 : 49e20: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : 49e24: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 49e28: 48 8b 48 40 mov 0x40(%rax),%rcx 0.00 : 49e2c: 48 89 8d e8 fe ff ff mov %rcx,-0x118(%rbp) 0.00 : 49e33: 8b 40 58 mov 0x58(%rax),%eax 0.00 : 49e36: 89 85 f4 fe ff ff mov %eax,-0x10c(%rbp) 0.00 : 49e3c: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 49e43: 0f b6 58 0c movzbl 0xc(%rax),%ebx 0.00 : 49e47: 84 db test %bl,%bl 0.00 : 49e49: 0f 89 b9 01 00 00 jns 4a008 <__printf_fp+0x258> 0.00 : 49e4f: 40 84 f6 test %sil,%sil 0.00 : 49e52: 0f 84 80 02 00 00 je 4a0d8 <__printf_fp+0x328> 0.00 : 49e58: 48 8b 8d 80 fe ff ff mov -0x180(%rbp),%rcx 0.00 : 49e5f: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 49e66: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : 49e6a: 48 8b 40 20 mov 0x20(%rax),%rax 0.00 : 49e6e: 48 8b 40 60 mov 0x60(%rax),%rax 0.00 : 49e72: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 49e79: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 49e80: 0f b6 02 movzbl (%rdx),%eax 0.00 : 49e83: 83 e8 01 sub $0x1,%eax 0.00 : 49e86: 3c 7d cmp $0x7d,%al 0.00 : 49e88: 0f 87 7a 01 00 00 ja 4a008 <__printf_fp+0x258> 0.00 : 49e8e: 44 8b 8d 14 ff ff ff mov -0xec(%rbp),%r9d 0.00 : 49e95: 45 85 c9 test %r9d,%r9d 0.00 : 49e98: 0f 84 a2 04 00 00 je 4a340 <__printf_fp+0x590> 0.00 : 49e9e: 40 84 f6 test %sil,%sil 0.00 : 49ea1: 0f 85 59 05 00 00 jne 4a400 <__printf_fp+0x650> 0.00 : 49ea7: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 49eae: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 49eb5: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : 49eb9: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 49ebd: 8b 40 60 mov 0x60(%rax),%eax 0.00 : 49ec0: 89 85 04 ff ff ff mov %eax,-0xfc(%rbp) 0.00 : 49ec6: 44 8b 85 04 ff ff ff mov -0xfc(%rbp),%r8d 0.00 : 49ecd: b8 00 00 00 00 mov $0x0,%eax 0.00 : 49ed2: 48 c7 85 f8 fe ff ff movq $0x0,-0x108(%rbp) 0.00 : 49ed9: 00 00 00 00 0.00 : 49edd: 45 85 c0 test %r8d,%r8d 0.00 : 49ee0: 48 0f 45 85 08 ff ff cmovne -0xf8(%rbp),%rax 0.00 : 49ee7: ff 0.00 : 49ee8: f6 c3 01 test $0x1,%bl 0.00 : 49eeb: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 49ef2: 0f 85 39 01 00 00 jne 4a031 <__printf_fp+0x281> 0.00 : 49ef8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49eff: 00 0.00 : 49f00: 48 8b 07 mov (%rdi),%rax 0.00 : 49f03: f2 0f 10 00 movsd (%rax),%xmm0 0.00 : 49f07: f2 0f 11 85 c8 fe ff movsd %xmm0,-0x138(%rbp) 0.00 : 49f0e: ff 0.00 : 49f0f: e8 ec 7e fe ff callq 31e00 <__isnan> 0.00 : 49f14: 85 c0 test %eax,%eax 0.00 : 49f16: 0f 84 64 03 00 00 je 4a280 <__printf_fp+0x4d0> 0.00 : 49f1c: 48 8b 85 c8 fe ff ff mov -0x138(%rbp),%rax 0.00 : 49f23: 48 c1 e8 38 shr $0x38,%rax 0.00 : 49f27: c1 e8 07 shr $0x7,%eax 0.00 : 49f2a: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : 49f2d: 48 8b 0d 9c 7e 32 00 mov 0x327e9c(%rip),%rcx # 371dd0 <_DYNAMIC+0x270> 0.00 : 49f34: 48 8b 85 80 fe ff ff mov -0x180(%rbp),%rax 0.00 : 49f3b: 48 83 3c 08 00 cmpq $0x0,(%rax,%rcx,1) 0.00 : 49f40: 0f 84 5a 04 00 00 je 4a3a0 <__printf_fp+0x5f0> 0.00 : 49f46: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 49f4d: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 49f54: 4c 8d 35 55 0c 0f 00 lea 0xf0c55(%rip),%r14 # 13abb0 <__PRETTY_FUNCTION__.8908+0x32> 0.00 : 49f5b: 4c 8d 2d d6 96 0f 00 lea 0xf96d6(%rip),%r13 # 143638 0.00 : 49f62: 48 63 50 08 movslq 0x8(%rax),%rdx 0.00 : 49f66: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : 49f6a: 0f b7 14 50 movzwl (%rax,%rdx,2),%edx 0.00 : 49f6e: 48 8d 05 b6 0d 0f 00 lea 0xf0db6(%rip),%rax # 13ad2b <__PRETTY_FUNCTION__.14304+0x13> 0.00 : 49f75: 81 e2 00 01 00 00 and $0x100,%edx 0.00 : 49f7b: 4c 0f 45 f0 cmovne %rax,%r14 0.00 : 49f7f: 48 8d 05 e2 96 0f 00 lea 0xf96e2(%rip),%rax # 143668 0.00 : 49f86: 4c 0f 45 e8 cmovne %rax,%r13 0.00 : 49f8a: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 49f8d: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 49f94: 85 f6 test %esi,%esi 0.00 : 49f96: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 49f99: 0f 84 61 01 00 00 je 4a100 <__printf_fp+0x350> 0.00 : 49f9f: 90 nop 0.00 : 49fa0: 83 e8 01 sub $0x1,%eax 0.00 : 49fa3: 44 8d 78 fd lea -0x3(%rax),%r15d 0.00 : 49fa7: 45 85 ff test %r15d,%r15d 0.00 : 49faa: 41 0f 9f c0 setg %r8b 0.00 : 49fae: 83 e3 20 and $0x20,%ebx 0.00 : 49fb1: 0f 85 69 01 00 00 jne 4a120 <__printf_fp+0x370> 0.00 : 49fb7: 45 84 c0 test %r8b,%r8b 0.00 : 49fba: 0f 84 60 01 00 00 je 4a120 <__printf_fp+0x370> 0.00 : 49fc0: 8b 8d 14 ff ff ff mov -0xec(%rbp),%ecx 0.00 : 49fc6: 85 c9 test %ecx,%ecx 0.00 : 49fc8: 0f 85 62 04 00 00 jne 4a430 <__printf_fp+0x680> 0.00 : 49fce: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 49fd5: 49 63 df movslq %r15d,%rbx 0.00 : 49fd8: be 20 00 00 00 mov $0x20,%esi 0.00 : 49fdd: 48 89 da mov %rbx,%rdx 0.00 : 49fe0: 44 88 85 70 fe ff ff mov %r8b,-0x190(%rbp) 0.00 : 49fe7: e8 54 e2 01 00 callq 68240 <_IO_padn> 0.00 : 49fec: 44 0f b6 85 70 fe ff movzbl -0x190(%rbp),%r8d 0.00 : 49ff3: ff 0.00 : 49ff4: 48 39 d8 cmp %rbx,%rax 0.00 : 49ff7: 0f 85 73 02 00 00 jne 4a270 <__printf_fp+0x4c0> 0.00 : 49ffd: 45 89 fc mov %r15d,%r12d 0.00 : 4a000: e9 1e 01 00 00 jmpq 4a123 <__printf_fp+0x373> 0.00 : 4a005: 0f 1f 00 nopl (%rax) 0.00 : 4a008: 48 c7 85 f8 fe ff ff movq $0x0,-0x108(%rbp) 0.00 : 4a00f: 00 00 00 00 0.00 : 4a013: c7 85 04 ff ff ff 00 movl $0x0,-0xfc(%rbp) 0.00 : 4a01a: 00 00 00 0.00 : 4a01d: 48 c7 85 08 ff ff ff movq $0x0,-0xf8(%rbp) 0.00 : 4a024: 00 00 00 00 0.00 : 4a028: f6 c3 01 test $0x1,%bl 0.00 : 4a02b: 0f 84 cf fe ff ff je 49f00 <__printf_fp+0x150> 0.00 : 4a031: 48 8b 07 mov (%rdi),%rax 0.00 : 4a034: db 28 fldt (%rax) 0.00 : 4a036: d9 c0 fld %st(0) 0.00 : 4a038: db bd b0 fe ff ff fstpt -0x150(%rbp) 0.00 : 4a03e: db 3c 24 fstpt (%rsp) 0.00 : 4a041: e8 fa 84 fe ff callq 32540 <__isnanl> 0.00 : 4a046: 85 c0 test %eax,%eax 0.00 : 4a048: 0f 84 c2 02 00 00 je 4a310 <__printf_fp+0x560> 0.00 : 4a04e: db ad b0 fe ff ff fldt -0x150(%rbp) 0.00 : 4a054: db 7d b0 fstpt -0x50(%rbp) 0.00 : 4a057: 0f be 45 b9 movsbl -0x47(%rbp),%eax 0.00 : 4a05b: c1 e8 1f shr $0x1f,%eax 0.00 : 4a05e: e9 c7 fe ff ff jmpq 49f2a <__printf_fp+0x17a> 0.00 : 4a063: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a068: 64 48 8b 1c 25 00 00 mov %fs:0x0,%rbx 0.00 : 4a06f: 00 00 0.00 : 4a071: 48 8b 05 10 7d 32 00 mov 0x327d10(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 4a078: 48 89 9d 80 fe ff ff mov %rbx,-0x180(%rbp) 0.00 : 4a07f: 48 89 85 88 fe ff ff mov %rax,-0x178(%rbp) 0.00 : 4a086: 48 8b 14 03 mov (%rbx,%rax,1),%rdx 0.00 : 4a08a: 48 8b 4a 20 mov 0x20(%rdx),%rcx 0.00 : 4a08e: 48 8b 59 50 mov 0x50(%rcx),%rbx 0.00 : 4a092: 48 89 9d e8 fe ff ff mov %rbx,-0x118(%rbp) 0.00 : 4a099: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 4a09c: 75 0f jne 4a0ad <__printf_fp+0x2fd> 0.00 : 4a09e: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4a0a2: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 4a0a6: 48 89 85 e8 fe ff ff mov %rax,-0x118(%rbp) 0.00 : 4a0ad: 8b 89 98 01 00 00 mov 0x198(%rcx),%ecx 0.00 : 4a0b3: 85 c9 test %ecx,%ecx 0.00 : 4a0b5: 89 8d f4 fe ff ff mov %ecx,-0x10c(%rbp) 0.00 : 4a0bb: 0f 85 7b fd ff ff jne 49e3c <__printf_fp+0x8c> 0.00 : 4a0c1: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4a0c5: 8b 40 58 mov 0x58(%rax),%eax 0.00 : 4a0c8: 89 85 f4 fe ff ff mov %eax,-0x10c(%rbp) 0.00 : 4a0ce: e9 69 fd ff ff jmpq 49e3c <__printf_fp+0x8c> 0.00 : 4a0d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a0d8: 48 8b 8d 80 fe ff ff mov -0x180(%rbp),%rcx 0.00 : 4a0df: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 4a0e6: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : 4a0ea: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 4a0ee: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 4a0f2: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 4a0f9: e9 7b fd ff ff jmpq 49e79 <__printf_fp+0xc9> 0.00 : 4a0fe: 66 90 xchg %ax,%ax 0.00 : 4a100: f6 c3 50 test $0x50,%bl 0.00 : 4a103: 0f 85 97 fe ff ff jne 49fa0 <__printf_fp+0x1f0> 0.00 : 4a109: 44 8d 78 fd lea -0x3(%rax),%r15d 0.00 : 4a10d: 45 85 ff test %r15d,%r15d 0.00 : 4a110: 41 0f 9f c0 setg %r8b 0.00 : 4a114: 83 e3 20 and $0x20,%ebx 0.00 : 4a117: 0f 84 9a fe ff ff je 49fb7 <__printf_fp+0x207> 0.00 : 4a11d: 0f 1f 00 nopl (%rax) 0.00 : 4a120: 45 31 e4 xor %r12d,%r12d 0.00 : 4a123: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 4a126: 85 d2 test %edx,%edx 0.00 : 4a128: 0f 85 d2 0c 00 00 jne 4ae00 <__printf_fp+0x1050> 0.00 : 4a12e: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 4a135: 0f b6 42 0c movzbl 0xc(%rdx),%eax 0.00 : 4a139: a8 40 test $0x40,%al 0.00 : 4a13b: 0f 85 87 0d 00 00 jne 4aec8 <__printf_fp+0x1118> 0.00 : 4a141: a8 10 test $0x10,%al 0.00 : 4a143: 0f 85 c7 0d 00 00 jne 4af10 <__printf_fp+0x1160> 0.00 : 4a149: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4a14f: 31 db xor %ebx,%ebx 0.00 : 4a151: 85 c0 test %eax,%eax 0.00 : 4a153: 0f 84 af 00 00 00 je 4a208 <__printf_fp+0x458> 0.00 : 4a159: 48 8b 85 a8 fe ff ff mov -0x158(%rbp),%rax 0.00 : 4a160: 41 8b 74 1d 00 mov 0x0(%r13,%rbx,1),%esi 0.00 : 4a165: 48 8b 90 a0 00 00 00 mov 0xa0(%rax),%rdx 0.00 : 4a16c: 48 85 d2 test %rdx,%rdx 0.00 : 4a16f: 0f 84 d5 17 00 00 je 4b94a <__printf_fp+0x1b9a> 0.00 : 4a175: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4a179: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4a17d: 0f 83 c7 17 00 00 jae 4b94a <__printf_fp+0x1b9a> 0.00 : 4a183: 89 30 mov %esi,(%rax) 0.00 : 4a185: 83 c6 01 add $0x1,%esi 0.00 : 4a188: 0f 94 c1 sete %cl 0.00 : 4a18b: 48 83 c0 04 add $0x4,%rax 0.00 : 4a18f: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4a193: 84 c9 test %cl,%cl 0.00 : 4a195: 0f 85 d5 00 00 00 jne 4a270 <__printf_fp+0x4c0> 0.00 : 4a19b: 48 83 c3 04 add $0x4,%rbx 0.00 : 4a19f: 41 83 c4 01 add $0x1,%r12d 0.00 : 4a1a3: 48 83 fb 0c cmp $0xc,%rbx 0.00 : 4a1a7: 75 b0 jne 4a159 <__printf_fp+0x3a9> 0.00 : 4a1a9: 45 84 c0 test %r8b,%r8b 0.00 : 4a1ac: 74 42 je 4a1f0 <__printf_fp+0x440> 0.00 : 4a1ae: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4a1b5: f6 40 0c 20 testb $0x20,0xc(%rax) 0.00 : 4a1b9: 74 35 je 4a1f0 <__printf_fp+0x440> 0.00 : 4a1bb: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4a1c1: 85 c0 test %eax,%eax 0.00 : 4a1c3: 0f 84 d4 15 00 00 je 4b79d <__printf_fp+0x19ed> 0.00 : 4a1c9: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4a1d0: 49 63 df movslq %r15d,%rbx 0.00 : 4a1d3: be 20 00 00 00 mov $0x20,%esi 0.00 : 4a1d8: 48 89 da mov %rbx,%rdx 0.00 : 4a1db: e8 40 03 02 00 callq 6a520 <_IO_wpadn> 0.00 : 4a1e0: 48 39 d8 cmp %rbx,%rax 0.00 : 4a1e3: 0f 85 87 00 00 00 jne 4a270 <__printf_fp+0x4c0> 0.00 : 4a1e9: 45 01 fc add %r15d,%r12d 0.00 : 4a1ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4a1f0: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 4a1f4: 44 89 e0 mov %r12d,%eax 0.00 : 4a1f7: 5b pop %rbx 0.00 : 4a1f8: 41 5c pop %r12 0.00 : 4a1fa: 41 5d pop %r13 0.00 : 4a1fc: 41 5e pop %r14 0.00 : 4a1fe: 41 5f pop %r15 0.00 : 4a200: c9 leaveq 0.00 : 4a201: c3 retq 0.00 : 4a202: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a208: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4a20f: 41 0f b6 14 1e movzbl (%r14,%rbx,1),%edx 0.00 : 4a214: 48 8b 41 28 mov 0x28(%rcx),%rax 0.00 : 4a218: 48 3b 41 30 cmp 0x30(%rcx),%rax 0.00 : 4a21c: 0f 83 f9 1c 00 00 jae 4bf1b <__printf_fp+0x216b> 0.00 : 4a222: 88 10 mov %dl,(%rax) 0.00 : 4a224: 48 8b b5 a8 fe ff ff mov -0x158(%rbp),%rsi 0.00 : 4a22b: 48 83 c0 01 add $0x1,%rax 0.00 : 4a22f: 48 89 46 28 mov %rax,0x28(%rsi) 0.00 : 4a233: 48 83 c3 01 add $0x1,%rbx 0.00 : 4a237: 41 83 c4 01 add $0x1,%r12d 0.00 : 4a23b: 48 83 fb 03 cmp $0x3,%rbx 0.00 : 4a23f: 75 c7 jne 4a208 <__printf_fp+0x458> 0.00 : 4a241: e9 63 ff ff ff jmpq 4a1a9 <__printf_fp+0x3f9> 0.00 : 4a246: be 20 00 00 00 mov $0x20,%esi 0.00 : 4a24b: 48 89 d7 mov %rdx,%rdi 0.00 : 4a24e: 44 88 85 70 fe ff ff mov %r8b,-0x190(%rbp) 0.00 : 4a255: e8 46 9b 02 00 callq 73da0 <__overflow> 0.00 : 4a25a: 44 0f b6 85 70 fe ff movzbl -0x190(%rbp),%r8d 0.00 : 4a261: ff 0.00 : 4a262: 83 c0 01 add $0x1,%eax 0.00 : 4a265: 0f 94 c0 sete %al 0.00 : 4a268: 84 c0 test %al,%al 0.00 : 4a26a: 0f 84 d8 0b 00 00 je 4ae48 <__printf_fp+0x1098> 0.00 : 4a270: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 4a276: e9 75 ff ff ff jmpq 4a1f0 <__printf_fp+0x440> 0.00 : 4a27b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a280: f2 0f 10 85 c8 fe ff movsd -0x138(%rbp),%xmm0 0.00 : 4a287: ff 0.00 : 4a288: e8 33 7b fe ff callq 31dc0 <__isinf> 0.00 : 4a28d: 85 c0 test %eax,%eax 0.00 : 4a28f: 0f 84 d3 02 00 00 je 4a568 <__printf_fp+0x7b8> 0.00 : 4a295: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 4a299: 66 0f 2e 85 c8 fe ff ucomisd -0x138(%rbp),%xmm0 0.00 : 4a2a0: ff 0.00 : 4a2a1: 0f 97 c0 seta %al 0.00 : 4a2a4: 48 8b 0d 25 7b 32 00 mov 0x327b25(%rip),%rcx # 371dd0 <_DYNAMIC+0x270> 0.00 : 4a2ab: 0f b6 c0 movzbl %al,%eax 0.00 : 4a2ae: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : 4a2b1: 48 8b 85 80 fe ff ff mov -0x180(%rbp),%rax 0.00 : 4a2b8: 48 83 3c 08 00 cmpq $0x0,(%rax,%rcx,1) 0.00 : 4a2bd: 0f 84 4d 0d 00 00 je 4b010 <__printf_fp+0x1260> 0.00 : 4a2c3: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4a2ca: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 4a2d1: 4c 8d 35 ce 08 0f 00 lea 0xf08ce(%rip),%r14 # 13aba6 <__PRETTY_FUNCTION__.8908+0x28> 0.00 : 4a2d8: 4c 8d 2d 69 93 0f 00 lea 0xf9369(%rip),%r13 # 143648 0.00 : 4a2df: 48 63 50 08 movslq 0x8(%rax),%rdx 0.00 : 4a2e3: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : 4a2e7: 0f b7 14 50 movzwl (%rax,%rdx,2),%edx 0.00 : 4a2eb: 48 8d 05 35 0a 0f 00 lea 0xf0a35(%rip),%rax # 13ad27 <__PRETTY_FUNCTION__.14304+0xf> 0.00 : 4a2f2: 81 e2 00 01 00 00 and $0x100,%edx 0.00 : 4a2f8: 4c 0f 45 f0 cmovne %rax,%r14 0.00 : 4a2fc: 48 8d 05 55 93 0f 00 lea 0xf9355(%rip),%rax # 143658 0.00 : 4a303: 4c 0f 45 e8 cmovne %rax,%r13 0.00 : 4a307: e9 7e fc ff ff jmpq 49f8a <__printf_fp+0x1da> 0.00 : 4a30c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4a310: db ad b0 fe ff ff fldt -0x150(%rbp) 0.00 : 4a316: db 3c 24 fstpt (%rsp) 0.00 : 4a319: e8 d2 81 fe ff callq 324f0 <__isinfl> 0.00 : 4a31e: 85 c0 test %eax,%eax 0.00 : 4a320: 0f 84 3a 01 00 00 je 4a460 <__printf_fp+0x6b0> 0.00 : 4a326: d9 ee fldz 0.00 : 4a328: db ad b0 fe ff ff fldt -0x150(%rbp) 0.00 : 4a32e: d9 c9 fxch %st(1) 0.00 : 4a330: df e9 fucomip %st(1),%st 0.00 : 4a332: dd d8 fstp %st(0) 0.00 : 4a334: e9 68 ff ff ff jmpq 4a2a1 <__printf_fp+0x4f1> 0.00 : 4a339: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4a340: 40 84 f6 test %sil,%sil 0.00 : 4a343: 0f 85 87 00 00 00 jne 4a3d0 <__printf_fp+0x620> 0.00 : 4a349: 48 8b 95 80 fe ff ff mov -0x180(%rbp),%rdx 0.00 : 4a350: 48 8b b5 88 fe ff ff mov -0x178(%rbp),%rsi 0.00 : 4a357: 48 8b 04 32 mov (%rdx,%rsi,1),%rax 0.00 : 4a35b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 4a35f: 48 8b 40 48 mov 0x48(%rax),%rax 0.00 : 4a363: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 4a36a: 48 8b 8d f8 fe ff ff mov -0x108(%rbp),%rcx 0.00 : 4a371: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4a376: 80 39 01 cmpb $0x1,(%rcx) 0.00 : 4a379: 19 f6 sbb %esi,%esi 0.00 : 4a37b: f7 d6 not %esi 0.00 : 4a37d: 83 e6 fe and $0xfffffffe,%esi 0.00 : 4a380: 89 b5 04 ff ff ff mov %esi,-0xfc(%rbp) 0.00 : 4a386: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 4a389: 48 0f 45 85 08 ff ff cmovne -0xf8(%rbp),%rax 0.00 : 4a390: ff 0.00 : 4a391: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 4a398: e9 8b fc ff ff jmpq 4a028 <__printf_fp+0x278> 0.00 : 4a39d: 0f 1f 00 nopl (%rax) 0.00 : 4a3a0: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 4a3a7: 48 89 c3 mov %rax,%rbx 0.00 : 4a3aa: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4a3b1: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 4a3b5: 48 8b 00 mov (%rax),%rax 0.00 : 4a3b8: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 4a3bc: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 4a3c2: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 0.00 : 4a3c6: 0f b6 5e 0c movzbl 0xc(%rsi),%ebx 0.00 : 4a3ca: e9 77 fb ff ff jmpq 49f46 <__printf_fp+0x196> 0.00 : 4a3cf: 90 nop 0.00 : 4a3d0: 48 8b b5 80 fe ff ff mov -0x180(%rbp),%rsi 0.00 : 4a3d7: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 4a3de: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : 4a3e2: 48 8b 40 20 mov 0x20(%rax),%rax 0.00 : 4a3e6: 48 8b 40 58 mov 0x58(%rax),%rax 0.00 : 4a3ea: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 4a3f1: e9 74 ff ff ff jmpq 4a36a <__printf_fp+0x5ba> 0.00 : 4a3f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4a3fd: 00 00 00 0.00 : 4a400: 48 8b 8d 80 fe ff ff mov -0x180(%rbp),%rcx 0.00 : 4a407: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 4a40e: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : 4a412: 48 8b 40 20 mov 0x20(%rax),%rax 0.00 : 4a416: 8b 80 a0 01 00 00 mov 0x1a0(%rax),%eax 0.00 : 4a41c: 89 85 04 ff ff ff mov %eax,-0xfc(%rbp) 0.00 : 4a422: e9 9f fa ff ff jmpq 49ec6 <__printf_fp+0x116> 0.00 : 4a427: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a42e: 00 00 0.00 : 4a430: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4a437: 49 63 df movslq %r15d,%rbx 0.00 : 4a43a: be 20 00 00 00 mov $0x20,%esi 0.00 : 4a43f: 48 89 da mov %rbx,%rdx 0.00 : 4a442: 44 88 85 70 fe ff ff mov %r8b,-0x190(%rbp) 0.00 : 4a449: e8 d2 00 02 00 callq 6a520 <_IO_wpadn> 0.00 : 4a44e: 44 0f b6 85 70 fe ff movzbl -0x190(%rbp),%r8d 0.00 : 4a455: ff 0.00 : 4a456: e9 99 fb ff ff jmpq 49ff4 <__printf_fp+0x244> 0.00 : 4a45b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a460: db ad b0 fe ff ff fldt -0x150(%rbp) 0.00 : 4a466: 48 8d 85 70 ff ff ff lea -0x90(%rbp),%rax 0.00 : 4a46d: 4c 8d 65 c0 lea -0x40(%rbp),%r12 0.00 : 4a471: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 4a475: be 01 00 00 00 mov $0x1,%esi 0.00 : 4a47a: 48 89 c2 mov %rax,%rdx 0.00 : 4a47d: 4c 89 e7 mov %r12,%rdi 0.00 : 4a480: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) 0.00 : 4a487: 48 83 c2 28 add $0x28,%rdx 0.00 : 4a48b: db 3c 24 fstpt (%rsp) 0.00 : 4a48e: e8 bd 91 ff ff callq 43650 <__mpn_extract_long_double> 0.00 : 4a493: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 4a497: 48 c1 e0 06 shl $0x6,%rax 0.00 : 4a49b: 8d 58 c1 lea -0x3f(%rax),%ebx 0.00 : 4a49e: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4a4a2: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 4a4a9: 00 0.00 : 4a4aa: 44 89 c2 mov %r8d,%edx 0.00 : 4a4ad: c1 fa 1f sar $0x1f,%edx 0.00 : 4a4b0: 89 d0 mov %edx,%eax 0.00 : 4a4b2: 44 31 c0 xor %r8d,%eax 0.00 : 4a4b5: 29 d0 sub %edx,%eax 0.00 : 4a4b7: 83 c0 3f add $0x3f,%eax 0.00 : 4a4ba: c1 f8 06 sar $0x6,%eax 0.00 : 4a4bd: 83 c0 04 add $0x4,%eax 0.00 : 4a4c0: 48 98 cltq 0.00 : 4a4c2: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : 4a4c9: 00 0.00 : 4a4ca: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4a4ce: 48 29 c4 sub %rax,%rsp 0.00 : 4a4d1: 48 8d 7c 24 1f lea 0x1f(%rsp),%rdi 0.00 : 4a4d6: 48 29 c4 sub %rax,%rsp 0.00 : 4a4d9: 48 8d 54 24 1f lea 0x1f(%rsp),%rdx 0.00 : 4a4de: 48 29 c4 sub %rax,%rsp 0.00 : 4a4e1: 48 8d 44 24 1f lea 0x1f(%rsp),%rax 0.00 : 4a4e6: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 4a4ea: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 4a4ee: 48 89 7d 80 mov %rdi,-0x80(%rbp) 0.00 : 4a4f2: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4a4f6: 41 83 f8 02 cmp $0x2,%r8d 0.00 : 4a4fa: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) 0.00 : 4a501: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 4a508: 44 89 c2 mov %r8d,%edx 0.00 : 4a50b: 0f 8e 9f 00 00 00 jle 4a5b0 <__printf_fp+0x800> 0.00 : 4a511: 8d 34 13 lea (%rbx,%rdx,1),%esi 0.00 : 4a514: 40 f6 c6 3f test $0x3f,%sil 0.00 : 4a518: 0f 85 c1 13 00 00 jne 4b8df <__printf_fp+0x1b2f> 0.00 : 4a51e: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 4a522: 49 89 c1 mov %rax,%r9 0.00 : 4a525: 49 83 e9 01 sub $0x1,%r9 0.00 : 4a529: 0f 88 47 0b 00 00 js 4b076 <__printf_fp+0x12c6> 0.00 : 4a52f: 4b 8d 34 cc lea (%r12,%r9,8),%rsi 0.00 : 4a533: 8d 04 1a lea (%rdx,%rbx,1),%eax 0.00 : 4a536: 48 8b 0e mov (%rsi),%rcx 0.00 : 4a539: 8d 50 3f lea 0x3f(%rax),%edx 0.00 : 4a53c: 85 c0 test %eax,%eax 0.00 : 4a53e: 0f 48 c2 cmovs %edx,%eax 0.00 : 4a541: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4a545: 48 83 ee 08 sub $0x8,%rsi 0.00 : 4a549: c1 f8 06 sar $0x6,%eax 0.00 : 4a54c: 48 98 cltq 0.00 : 4a54e: 4c 01 c8 add %r9,%rax 0.00 : 4a551: 49 83 e9 01 sub $0x1,%r9 0.00 : 4a555: 48 89 0c c2 mov %rcx,(%rdx,%rax,8) 0.00 : 4a559: 0f 88 0e 0b 00 00 js 4b06d <__printf_fp+0x12bd> 0.00 : 4a55f: 8b 55 98 mov -0x68(%rbp),%edx 0.00 : 4a562: eb cf jmp 4a533 <__printf_fp+0x783> 0.00 : 4a564: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4a568: 48 8d 85 70 ff ff ff lea -0x90(%rbp),%rax 0.00 : 4a56f: 4c 8d 65 c0 lea -0x40(%rbp),%r12 0.00 : 4a573: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 4a577: f2 0f 10 85 c8 fe ff movsd -0x138(%rbp),%xmm0 0.00 : 4a57e: ff 0.00 : 4a57f: be 01 00 00 00 mov $0x1,%esi 0.00 : 4a584: 48 89 c2 mov %rax,%rdx 0.00 : 4a587: 4c 89 e7 mov %r12,%rdi 0.00 : 4a58a: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) 0.00 : 4a591: 48 83 c2 28 add $0x28,%rdx 0.00 : 4a595: e8 16 90 ff ff callq 435b0 <__mpn_extract_double> 0.00 : 4a59a: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 4a59e: 48 c1 e0 06 shl $0x6,%rax 0.00 : 4a5a2: 8d 58 cc lea -0x34(%rax),%ebx 0.00 : 4a5a5: e9 f4 fe ff ff jmpq 4a49e <__printf_fp+0x6ee> 0.00 : 4a5aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a5b0: 45 85 c0 test %r8d,%r8d 0.00 : 4a5b3: 0f 88 8b 14 00 00 js 4ba44 <__printf_fp+0x1c94> 0.00 : 4a5b9: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4a5bd: 42 8d 0c 03 lea (%rbx,%r8,1),%ecx 0.00 : 4a5c1: 4c 89 e6 mov %r12,%rsi 0.00 : 4a5c4: e8 c7 7f ff ff callq 42590 <__mpn_lshift> 0.00 : 4a5c9: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4a5cd: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 4a5d1: 48 89 04 d1 mov %rax,(%rcx,%rdx,8) 0.00 : 4a5d5: 48 83 45 88 01 addq $0x1,-0x78(%rbp) 0.00 : 4a5da: c7 45 98 00 00 00 00 movl $0x0,-0x68(%rbp) 0.00 : 4a5e1: 48 8b 0d 18 79 32 00 mov 0x327918(%rip),%rcx # 371f00 <_DYNAMIC+0x3a0> 0.00 : 4a5e8: 48 8b 85 80 fe ff ff mov -0x180(%rbp),%rax 0.00 : 4a5ef: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4a5f6: 48 83 3c 08 00 cmpq $0x0,(%rax,%rcx,1) 0.00 : 4a5fb: 8b 76 04 mov 0x4(%rsi),%esi 0.00 : 4a5fe: 89 b5 2c ff ff ff mov %esi,-0xd4(%rbp) 0.00 : 4a604: 0f 84 16 14 00 00 je 4ba20 <__printf_fp+0x1c70> 0.00 : 4a60a: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4a611: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 4a618: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 4a61b: 48 8b 04 0b mov (%rbx,%rcx,1),%rax 0.00 : 4a61f: 48 63 d6 movslq %esi,%rdx 0.00 : 4a622: 0f b6 04 90 movzbl (%rax,%rdx,4),%eax 0.00 : 4a626: 3c 65 cmp $0x65,%al 0.00 : 4a628: 88 85 5f ff ff ff mov %al,-0xa1(%rbp) 0.00 : 4a62e: 0f 84 cc 0c 00 00 je 4b300 <__printf_fp+0x1550> 0.00 : 4a634: 80 bd 5f ff ff ff 66 cmpb $0x66,-0xa1(%rbp) 0.00 : 4a63b: 0f 84 ee 10 00 00 je 4b72f <__printf_fp+0x197f> 0.00 : 4a641: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4a648: 8b 00 mov (%rax),%eax 0.00 : 4a64a: 83 f8 00 cmp $0x0,%eax 0.00 : 4a64d: 89 85 54 ff ff ff mov %eax,-0xac(%rbp) 0.00 : 4a653: 0f 8c 93 16 00 00 jl 4bcec <__printf_fp+0x1f3c> 0.00 : 4a659: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4a65e: 0f 45 85 54 ff ff ff cmovne -0xac(%rbp),%eax 0.00 : 4a665: 89 85 54 ff ff ff mov %eax,-0xac(%rbp) 0.00 : 4a66b: 44 8b 5d a0 mov -0x60(%rbp),%r11d 0.00 : 4a66f: 45 85 db test %r11d,%r11d 0.00 : 4a672: 0f 84 80 0d 00 00 je 4b3f8 <__printf_fp+0x1648> 0.00 : 4a678: 83 7d 98 04 cmpl $0x4,-0x68(%rbp) 0.00 : 4a67c: 0f 8e 85 0d 00 00 jle 4b407 <__printf_fp+0x1657> 0.00 : 4a682: 8b 8d 54 ff ff ff mov -0xac(%rbp),%ecx 0.00 : 4a688: 8d 46 fe lea -0x2(%rsi),%eax 0.00 : 4a68b: c7 85 44 ff ff ff 01 movl $0x1,-0xbc(%rbp) 0.00 : 4a692: 00 00 00 0.00 : 4a695: 89 45 9c mov %eax,-0x64(%rbp) 0.00 : 4a698: 83 e9 01 sub $0x1,%ecx 0.00 : 4a69b: 48 63 c1 movslq %ecx,%rax 0.00 : 4a69e: 89 8d 50 ff ff ff mov %ecx,-0xb0(%rbp) 0.00 : 4a6a4: 48 83 c0 08 add $0x8,%rax 0.00 : 4a6a8: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 4a6af: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4a6b6: c7 85 4c ff ff ff 00 movl $0x0,-0xb4(%rbp) 0.00 : 4a6bd: 00 00 00 0.00 : 4a6c0: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4a6c5: f6 46 0c 08 testb $0x8,0xc(%rsi) 0.00 : 4a6c9: 0f 45 85 50 ff ff ff cmovne -0xb0(%rbp),%eax 0.00 : 4a6d0: 45 31 f6 xor %r14d,%r14d 0.00 : 4a6d3: 89 85 4c ff ff ff mov %eax,-0xb4(%rbp) 0.00 : 4a6d9: 48 83 bd 08 ff ff ff cmpq $0x0,-0xf8(%rbp) 0.00 : 4a6e0: 00 0.00 : 4a6e1: c7 85 58 ff ff ff 00 movl $0x0,-0xa8(%rbp) 0.00 : 4a6e8: 00 00 00 0.00 : 4a6eb: 74 24 je 4a711 <__printf_fp+0x961> 0.00 : 4a6ed: 48 8b b5 08 ff ff ff mov -0xf8(%rbp),%rsi 0.00 : 4a6f4: 8b bd 44 ff ff ff mov -0xbc(%rbp),%edi 0.00 : 4a6fa: e8 51 f2 ff ff callq 49950 <__guess_grouping> 0.00 : 4a6ff: 89 85 58 ff ff ff mov %eax,-0xa8(%rbp) 0.00 : 4a705: 83 c0 01 add $0x1,%eax 0.00 : 4a708: 48 98 cltq 0.00 : 4a70a: 48 01 85 38 ff ff ff add %rax,-0xc8(%rbp) 0.00 : 4a711: 48 b8 fc ff ff ff ff movabs $0x3ffffffffffffffc,%rax 0.00 : 4a718: ff ff 3f 0.00 : 4a71b: 48 39 85 38 ff ff ff cmp %rax,-0xc8(%rbp) 0.00 : 4a722: 0f 87 36 1a 00 00 ja 4c15e <__printf_fp+0x23ae> 0.00 : 4a728: 48 63 85 50 ff ff ff movslq -0xb0(%rbp),%rax 0.00 : 4a72f: 48 39 85 38 ff ff ff cmp %rax,-0xc8(%rbp) 0.00 : 4a736: 0f 82 22 1a 00 00 jb 4c15e <__printf_fp+0x23ae> 0.00 : 4a73c: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 4a743: 48 8d 1c 8d 08 00 00 lea 0x8(,%rcx,4),%rbx 0.00 : 4a74a: 00 0.00 : 4a74b: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 4a752: 0f 87 08 0c 00 00 ja 4b360 <__printf_fp+0x15b0> 0.00 : 4a758: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 4a75c: c7 85 24 ff ff ff 00 movl $0x0,-0xdc(%rbp) 0.00 : 4a763: 00 00 00 0.00 : 4a766: 48 c7 85 d0 fe ff ff movq $0x0,-0x130(%rbp) 0.00 : 4a76d: 00 00 00 00 0.00 : 4a771: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4a775: 48 29 c4 sub %rax,%rsp 0.00 : 4a778: 48 8d 5c 24 1f lea 0x1f(%rsp),%rbx 0.00 : 4a77d: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 4a781: 48 89 9d 18 ff ff ff mov %rbx,-0xe8(%rbp) 0.00 : 4a788: 48 8b b5 18 ff ff ff mov -0xe8(%rbp),%rsi 0.00 : 4a78f: 44 8b 4d a0 mov -0x60(%rbp),%r9d 0.00 : 4a793: 48 83 c6 08 add $0x8,%rsi 0.00 : 4a797: 45 85 c9 test %r9d,%r9d 0.00 : 4a79a: 48 89 b5 30 ff ff ff mov %rsi,-0xd0(%rbp) 0.00 : 4a7a1: 74 0a je 4a7ad <__printf_fp+0x9fd> 0.00 : 4a7a3: 83 7d 9c 66 cmpl $0x66,-0x64(%rbp) 0.00 : 4a7a7: 0f 84 c3 11 00 00 je 4b970 <__printf_fp+0x1bc0> 0.00 : 4a7ad: 44 8b 85 44 ff ff ff mov -0xbc(%rbp),%r8d 0.00 : 4a7b4: 31 db xor %ebx,%ebx 0.00 : 4a7b6: 4c 8b a5 30 ff ff ff mov -0xd0(%rbp),%r12 0.00 : 4a7bd: 45 85 c0 test %r8d,%r8d 0.00 : 4a7c0: 0f 8e 7d 17 00 00 jle 4bf43 <__printf_fp+0x2193> 0.00 : 4a7c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4a7cd: 00 00 00 0.00 : 4a7d0: 4c 8b 95 90 fe ff ff mov -0x170(%rbp),%r10 0.00 : 4a7d7: 83 c3 01 add $0x1,%ebx 0.00 : 4a7da: e8 c1 f1 ff ff callq 499a0 0.00 : 4a7df: 41 89 04 24 mov %eax,(%r12) 0.00 : 4a7e3: 49 83 c4 04 add $0x4,%r12 0.00 : 4a7e7: 39 9d 44 ff ff ff cmp %ebx,-0xbc(%rbp) 0.00 : 4a7ed: 7f e1 jg 4a7d0 <__printf_fp+0xa20> 0.00 : 4a7ef: 8b 85 44 ff ff ff mov -0xbc(%rbp),%eax 0.00 : 4a7f5: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 4a7fc: 8b 8d 44 ff ff ff mov -0xbc(%rbp),%ecx 0.00 : 4a802: 83 e8 01 sub $0x1,%eax 0.00 : 4a805: 4c 8d 6c 82 04 lea 0x4(%rdx,%rax,4),%r13 0.00 : 4a80a: 89 8d 48 ff ff ff mov %ecx,-0xb8(%rbp) 0.00 : 4a810: 4c 89 ea mov %r13,%rdx 0.00 : 4a813: 48 8b 9d a0 fe ff ff mov -0x160(%rbp),%rbx 0.00 : 4a81a: f6 43 0c 08 testb $0x8,0xc(%rbx) 0.00 : 4a81e: 75 0e jne 4a82e <__printf_fp+0xa7e> 0.00 : 4a820: 8b bd 4c ff ff ff mov -0xb4(%rbp),%edi 0.00 : 4a826: 85 ff test %edi,%edi 0.00 : 4a828: 0f 8e 11 08 00 00 jle 4b03f <__printf_fp+0x128f> 0.00 : 4a82e: 8b b5 f4 fe ff ff mov -0x10c(%rbp),%esi 0.00 : 4a834: 4c 8d 6a 04 lea 0x4(%rdx),%r13 0.00 : 4a838: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4a83e: 89 32 mov %esi,(%rdx) 0.00 : 4a840: 45 31 e4 xor %r12d,%r12d 0.00 : 4a843: 45 31 ff xor %r15d,%r15d 0.00 : 4a846: eb 16 jmp 4a85e <__printf_fp+0xaae> 0.00 : 4a848: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a84f: 00 0.00 : 4a850: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4a856: 41 83 c4 01 add $0x1,%r12d 0.00 : 4a85a: 49 83 c5 04 add $0x4,%r13 0.00 : 4a85e: 8b b5 4c ff ff ff mov -0xb4(%rbp),%esi 0.00 : 4a864: 41 8d 1c 37 lea (%r15,%rsi,1),%ebx 0.00 : 4a868: 41 39 dc cmp %ebx,%r12d 0.00 : 4a86b: 7c 10 jl 4a87d <__printf_fp+0xacd> 0.00 : 4a86d: 44 39 a5 50 ff ff ff cmp %r12d,-0xb0(%rbp) 0.00 : 4a874: 7e 44 jle 4a8ba <__printf_fp+0xb0a> 0.00 : 4a876: 48 83 7d 88 01 cmpq $0x1,-0x78(%rbp) 0.00 : 4a87b: 7e 33 jle 4a8b0 <__printf_fp+0xb00> 0.00 : 4a87d: 4c 8b 95 90 fe ff ff mov -0x170(%rbp),%r10 0.00 : 4a884: e8 17 f1 ff ff callq 499a0 0.00 : 4a889: 83 f8 30 cmp $0x30,%eax 0.00 : 4a88c: 41 89 45 00 mov %eax,0x0(%r13) 0.00 : 4a890: 75 be jne 4a850 <__printf_fp+0xaa0> 0.00 : 4a892: 45 85 f6 test %r14d,%r14d 0.00 : 4a895: 75 bf jne 4a856 <__printf_fp+0xaa6> 0.00 : 4a897: 31 c0 xor %eax,%eax 0.00 : 4a899: 83 85 50 ff ff ff 01 addl $0x1,-0xb0(%rbp) 0.00 : 4a8a0: 83 bd 4c ff ff ff 00 cmpl $0x0,-0xb4(%rbp) 0.00 : 4a8a7: 0f 9f c0 setg %al 0.00 : 4a8aa: 41 01 c7 add %eax,%r15d 0.00 : 4a8ad: eb a7 jmp 4a856 <__printf_fp+0xaa6> 0.00 : 4a8af: 90 nop 0.00 : 4a8b0: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4a8b4: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 4a8b8: 75 c3 jne 4a87d <__printf_fp+0xacd> 0.00 : 4a8ba: 4c 8b 95 90 fe ff ff mov -0x170(%rbp),%r10 0.00 : 4a8c1: 44 89 bd 6c ff ff ff mov %r15d,-0x94(%rbp) 0.00 : 4a8c8: 4d 89 ee mov %r13,%r14 0.00 : 4a8cb: e8 d0 f0 ff ff callq 499a0 0.00 : 4a8d0: 83 f8 34 cmp $0x34,%eax 0.00 : 4a8d3: 0f 8e a9 00 00 00 jle 4a982 <__printf_fp+0xbd2> 0.00 : 4a8d9: 83 f8 35 cmp $0x35,%eax 0.00 : 4a8dc: 0f 84 c5 10 00 00 je 4b9a7 <__printf_fp+0x1bf7> 0.00 : 4a8e2: 41 83 fc 00 cmp $0x0,%r12d 0.00 : 4a8e6: 0f 8e 5d 14 00 00 jle 4bd49 <__printf_fp+0x1f99> 0.00 : 4a8ec: 41 8b 45 fc mov -0x4(%r13),%eax 0.00 : 4a8f0: 3b 85 f4 fe ff ff cmp -0x10c(%rbp),%eax 0.00 : 4a8f6: 49 8d 4d fc lea -0x4(%r13),%rcx 0.00 : 4a8fa: 0f 84 d1 17 00 00 je 4c0d1 <__printf_fp+0x2321> 0.00 : 4a900: 83 f8 39 cmp $0x39,%eax 0.00 : 4a903: 0f 85 c8 17 00 00 jne 4c0d1 <__printf_fp+0x2321> 0.00 : 4a909: 31 d2 xor %edx,%edx 0.00 : 4a90b: eb 08 jmp 4a915 <__printf_fp+0xb65> 0.00 : 4a90d: 0f 1f 00 nopl (%rax) 0.00 : 4a910: 83 f8 39 cmp $0x39,%eax 0.00 : 4a913: 75 17 jne 4a92c <__printf_fp+0xb7c> 0.00 : 4a915: c7 01 30 00 00 00 movl $0x30,(%rcx) 0.00 : 4a91b: 48 83 e9 04 sub $0x4,%rcx 0.00 : 4a91f: 83 c2 01 add $0x1,%edx 0.00 : 4a922: 8b 01 mov (%rcx),%eax 0.00 : 4a924: 3b 85 f4 fe ff ff cmp -0x10c(%rbp),%eax 0.00 : 4a92a: 75 e4 jne 4a910 <__printf_fp+0xb60> 0.00 : 4a92c: 3b 95 4c ff ff ff cmp -0xb4(%rbp),%edx 0.00 : 4a932: 0f 84 2d 15 00 00 je 4be65 <__printf_fp+0x20b5> 0.00 : 4a938: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 4a93e: 0f 84 7e 16 00 00 je 4bfc2 <__printf_fp+0x2212> 0.00 : 4a944: 83 c0 01 add $0x1,%eax 0.00 : 4a947: 48 89 ce mov %rcx,%rsi 0.00 : 4a94a: 89 01 mov %eax,(%rcx) 0.00 : 4a94c: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 4a952: 0f 84 50 0a 00 00 je 4b3a8 <__printf_fp+0x15f8> 0.00 : 4a958: 8b 9d 6c ff ff ff mov -0x94(%rbp),%ebx 0.00 : 4a95e: 03 9d 4c ff ff ff add -0xb4(%rbp),%ebx 0.00 : 4a964: eb 1c jmp 4a982 <__printf_fp+0xbd2> 0.00 : 4a966: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4a96d: 00 00 00 0.00 : 4a970: 41 83 7e fc 30 cmpl $0x30,-0x4(%r14) 0.00 : 4a975: 49 8d 46 fc lea -0x4(%r14),%rax 0.00 : 4a979: 75 0c jne 4a987 <__printf_fp+0xbd7> 0.00 : 4a97b: 49 89 c6 mov %rax,%r14 0.00 : 4a97e: 41 83 ec 01 sub $0x1,%r12d 0.00 : 4a982: 41 39 dc cmp %ebx,%r12d 0.00 : 4a985: 7f e9 jg 4a970 <__printf_fp+0xbc0> 0.00 : 4a987: 45 85 e4 test %r12d,%r12d 0.00 : 4a98a: 75 24 jne 4a9b0 <__printf_fp+0xc00> 0.00 : 4a98c: 48 8b 9d a0 fe ff ff mov -0x160(%rbp),%rbx 0.00 : 4a993: f6 43 0c 08 testb $0x8,0xc(%rbx) 0.00 : 4a997: 75 17 jne 4a9b0 <__printf_fp+0xc00> 0.00 : 4a999: 8b b5 f4 fe ff ff mov -0x10c(%rbp),%esi 0.00 : 4a99f: 41 39 76 fc cmp %esi,-0x4(%r14) 0.00 : 4a9a3: 4d 8d 6e fc lea -0x4(%r14),%r13 0.00 : 4a9a7: 74 0a je 4a9b3 <__printf_fp+0xc03> 0.00 : 4a9a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4a9b0: 4d 89 f5 mov %r14,%r13 0.00 : 4a9b3: 48 83 bd 08 ff ff ff cmpq $0x0,-0xf8(%rbp) 0.00 : 4a9ba: 00 0.00 : 4a9bb: 74 3a je 4a9f7 <__printf_fp+0xc47> 0.00 : 4a9bd: 44 8b a5 44 ff ff ff mov -0xbc(%rbp),%r12d 0.00 : 4a9c4: 44 3b a5 48 ff ff ff cmp -0xb8(%rbp),%r12d 0.00 : 4a9cb: 74 1c je 4a9e9 <__printf_fp+0xc39> 0.00 : 4a9cd: 44 8b a5 48 ff ff ff mov -0xb8(%rbp),%r12d 0.00 : 4a9d4: 48 8b b5 08 ff ff ff mov -0xf8(%rbp),%rsi 0.00 : 4a9db: 44 89 e7 mov %r12d,%edi 0.00 : 4a9de: e8 6d ef ff ff callq 49950 <__guess_grouping> 0.00 : 4a9e3: 89 85 58 ff ff ff mov %eax,-0xa8(%rbp) 0.00 : 4a9e9: 8b 8d 58 ff ff ff mov -0xa8(%rbp),%ecx 0.00 : 4a9ef: 85 c9 test %ecx,%ecx 0.00 : 4a9f1: 0f 85 69 0a 00 00 jne 4b460 <__printf_fp+0x16b0> 0.00 : 4a9f7: 8b 45 9c mov -0x64(%rbp),%eax 0.00 : 4a9fa: 83 f8 66 cmp $0x66,%eax 0.00 : 4a9fd: 0f 84 90 00 00 00 je 4aa93 <__printf_fp+0xce3> 0.00 : 4aa03: 8b 55 a0 mov -0x60(%rbp),%edx 0.00 : 4aa06: 85 d2 test %edx,%edx 0.00 : 4aa08: 0f 85 eb 18 00 00 jne 4c2f9 <__printf_fp+0x2549> 0.00 : 4aa0e: 41 89 45 00 mov %eax,0x0(%r13) 0.00 : 4aa12: 83 7d a0 01 cmpl $0x1,-0x60(%rbp) 0.00 : 4aa16: 49 8d 7d 08 lea 0x8(%r13),%rdi 0.00 : 4aa1a: 19 c0 sbb %eax,%eax 0.00 : 4aa1c: 83 e0 fe and $0xfffffffe,%eax 0.00 : 4aa1f: 83 c0 2d add $0x2d,%eax 0.00 : 4aa22: 41 89 45 04 mov %eax,0x4(%r13) 0.00 : 4aa26: 8b 75 98 mov -0x68(%rbp),%esi 0.00 : 4aa29: 83 fe 09 cmp $0x9,%esi 0.00 : 4aa2c: 0f 8e 31 16 00 00 jle 4c063 <__printf_fp+0x22b3> 0.00 : 4aa32: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 4aa37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4aa3e: 00 00 0.00 : 4aa40: 8d 04 89 lea (%rcx,%rcx,4),%eax 0.00 : 4aa43: 8d 0c 00 lea (%rax,%rax,1),%ecx 0.00 : 4aa46: 39 f1 cmp %esi,%ecx 0.00 : 4aa48: 7e f6 jle 4aa40 <__printf_fp+0xc90> 0.00 : 4aa4a: 41 b8 67 66 66 66 mov $0x66666667,%r8d 0.00 : 4aa50: 89 c8 mov %ecx,%eax 0.00 : 4aa52: 41 f7 e8 imul %r8d 0.00 : 4aa55: 89 c8 mov %ecx,%eax 0.00 : 4aa57: c1 f8 1f sar $0x1f,%eax 0.00 : 4aa5a: c1 fa 02 sar $0x2,%edx 0.00 : 4aa5d: 89 d1 mov %edx,%ecx 0.00 : 4aa5f: 89 f2 mov %esi,%edx 0.00 : 4aa61: 29 c1 sub %eax,%ecx 0.00 : 4aa63: c1 fa 1f sar $0x1f,%edx 0.00 : 4aa66: 89 f0 mov %esi,%eax 0.00 : 4aa68: f7 f9 idiv %ecx 0.00 : 4aa6a: 83 c0 30 add $0x30,%eax 0.00 : 4aa6d: 89 07 mov %eax,(%rdi) 0.00 : 4aa6f: 8b 45 98 mov -0x68(%rbp),%eax 0.00 : 4aa72: 48 83 c7 04 add $0x4,%rdi 0.00 : 4aa76: 89 c2 mov %eax,%edx 0.00 : 4aa78: c1 fa 1f sar $0x1f,%edx 0.00 : 4aa7b: f7 f9 idiv %ecx 0.00 : 4aa7d: 83 f9 0a cmp $0xa,%ecx 0.00 : 4aa80: 89 d6 mov %edx,%esi 0.00 : 4aa82: 89 55 98 mov %edx,-0x68(%rbp) 0.00 : 4aa85: 7f c9 jg 4aa50 <__printf_fp+0xca0> 0.00 : 4aa87: 8b 45 98 mov -0x68(%rbp),%eax 0.00 : 4aa8a: 4c 8d 6f 04 lea 0x4(%rdi),%r13 0.00 : 4aa8e: 83 c0 30 add $0x30,%eax 0.00 : 4aa91: 89 07 mov %eax,(%rdi) 0.00 : 4aa93: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 4aa96: 85 c0 test %eax,%eax 0.00 : 4aa98: 0f 84 42 03 00 00 je 4ade0 <__printf_fp+0x1030> 0.00 : 4aa9e: 48 8b 8d a0 fe ff ff mov -0x160(%rbp),%rcx 0.00 : 4aaa5: 0f b6 59 0c movzbl 0xc(%rcx),%ebx 0.00 : 4aaa9: 83 ad 2c ff ff ff 01 subl $0x1,-0xd4(%rbp) 0.00 : 4aab0: 4c 89 e8 mov %r13,%rax 0.00 : 4aab3: 48 2b 85 30 ff ff ff sub -0xd0(%rbp),%rax 0.00 : 4aaba: 8b 95 2c ff ff ff mov -0xd4(%rbp),%edx 0.00 : 4aac0: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) 0.00 : 4aac7: 48 c1 f8 02 sar $0x2,%rax 0.00 : 4aacb: 29 c2 sub %eax,%edx 0.00 : 4aacd: 83 e3 20 and $0x20,%ebx 0.00 : 4aad0: 89 95 e0 fe ff ff mov %edx,-0x120(%rbp) 0.00 : 4aad6: 0f 85 f4 02 00 00 jne 4add0 <__printf_fp+0x1020> 0.00 : 4aadc: 48 8b 8d a0 fe ff ff mov -0x160(%rbp),%rcx 0.00 : 4aae3: 8b 71 10 mov 0x10(%rcx),%esi 0.00 : 4aae6: 83 fe 30 cmp $0x30,%esi 0.00 : 4aae9: 0f 84 e1 02 00 00 je 4add0 <__printf_fp+0x1020> 0.00 : 4aaef: 85 d2 test %edx,%edx 0.00 : 4aaf1: 0f 8e d9 02 00 00 jle 4add0 <__printf_fp+0x1020> 0.00 : 4aaf7: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4aafd: 85 c0 test %eax,%eax 0.00 : 4aaff: 0f 84 5b 12 00 00 je 4bd60 <__printf_fp+0x1fb0> 0.00 : 4ab05: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4ab0c: 48 63 da movslq %edx,%rbx 0.00 : 4ab0f: 48 89 da mov %rbx,%rdx 0.00 : 4ab12: e8 09 fa 01 00 callq 6a520 <_IO_wpadn> 0.00 : 4ab17: 48 39 d8 cmp %rbx,%rax 0.00 : 4ab1a: 44 8b a5 e0 fe ff ff mov -0x120(%rbp),%r12d 0.00 : 4ab21: 0f 85 55 0a 00 00 jne 4b57c <__printf_fp+0x17cc> 0.00 : 4ab27: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 4ab2a: 85 c0 test %eax,%eax 0.00 : 4ab2c: 0f 84 26 03 00 00 je 4ae58 <__printf_fp+0x10a8> 0.00 : 4ab32: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4ab38: 85 c0 test %eax,%eax 0.00 : 4ab3a: 0f 84 ed 0a 00 00 je 4b62d <__printf_fp+0x187d> 0.00 : 4ab40: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 4ab47: 48 8b 93 a0 00 00 00 mov 0xa0(%rbx),%rdx 0.00 : 4ab4e: 48 85 d2 test %rdx,%rdx 0.00 : 4ab51: 0f 84 06 0a 00 00 je 4b55d <__printf_fp+0x17ad> 0.00 : 4ab57: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4ab5b: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4ab5f: 0f 83 f8 09 00 00 jae 4b55d <__printf_fp+0x17ad> 0.00 : 4ab65: c7 00 2d 00 00 00 movl $0x2d,(%rax) 0.00 : 4ab6b: 48 83 c0 04 add $0x4,%rax 0.00 : 4ab6f: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4ab73: 48 8b 8d a0 fe ff ff mov -0x160(%rbp),%rcx 0.00 : 4ab7a: 41 83 c4 01 add $0x1,%r12d 0.00 : 4ab7e: 0f b6 59 0c movzbl 0xc(%rcx),%ebx 0.00 : 4ab82: 83 e3 20 and $0x20,%ebx 0.00 : 4ab85: 75 11 jne 4ab98 <__printf_fp+0xde8> 0.00 : 4ab87: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4ab8e: 83 78 10 30 cmpl $0x30,0x10(%rax) 0.00 : 4ab92: 0f 84 63 11 00 00 je 4bcfb <__printf_fp+0x1f4b> 0.00 : 4ab98: 44 8b 9d 14 ff ff ff mov -0xec(%rbp),%r11d 0.00 : 4ab9f: 45 85 db test %r11d,%r11d 0.00 : 4aba2: 0f 85 08 01 00 00 jne 4acb0 <__printf_fp+0xf00> 0.00 : 4aba8: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 4abaf: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 4abb4: f6 42 0d 08 testb $0x8,0xd(%rdx) 0.00 : 4abb8: 74 1b je 4abd5 <__printf_fp+0xe25> 0.00 : 4abba: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 4abc1: 48 8b 8d 88 fe ff ff mov -0x178(%rbp),%rcx 0.00 : 4abc8: 48 8b 04 0b mov (%rbx,%rcx,1),%rax 0.00 : 4abcc: 48 8b 00 mov (%rax),%rax 0.00 : 4abcf: 8b 98 a8 00 00 00 mov 0xa8(%rax),%ebx 0.00 : 4abd5: 48 8b bd e8 fe ff ff mov -0x118(%rbp),%rdi 0.00 : 4abdc: 45 31 f6 xor %r14d,%r14d 0.00 : 4abdf: e8 cc 5f 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4abe4: 31 d2 xor %edx,%edx 0.00 : 4abe6: 48 83 bd f8 fe ff ff cmpq $0x0,-0x108(%rbp) 0.00 : 4abed: 00 0.00 : 4abee: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) 0.00 : 4abf5: 74 1a je 4ac11 <__printf_fp+0xe61> 0.00 : 4abf7: 48 8b bd f8 fe ff ff mov -0x108(%rbp),%rdi 0.00 : 4abfe: e8 ad 5f 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4ac03: 48 63 95 58 ff ff ff movslq -0xa8(%rbp),%rdx 0.00 : 4ac0a: 49 89 c6 mov %rax,%r14 0.00 : 4ac0d: 48 0f af d0 imul %rax,%rdx 0.00 : 4ac11: 48 0f af 9d 38 ff ff imul -0xc8(%rbp),%rbx 0.00 : 4ac18: ff 0.00 : 4ac19: 48 8b b5 98 fe ff ff mov -0x168(%rbp),%rsi 0.00 : 4ac20: 48 83 bd d0 fe ff ff cmpq $0x0,-0x130(%rbp) 0.00 : 4ac27: 00 0.00 : 4ac28: 48 8d 44 1e 02 lea 0x2(%rsi,%rbx,1),%rax 0.00 : 4ac2d: 48 8d 1c 10 lea (%rax,%rdx,1),%rbx 0.00 : 4ac31: 0f 85 6d 16 00 00 jne 4c2a4 <__printf_fp+0x24f4> 0.00 : 4ac37: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 4ac3b: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4ac3f: 48 29 c4 sub %rax,%rsp 0.00 : 4ac42: 4c 8d 7c 24 1f lea 0x1f(%rsp),%r15 0.00 : 4ac47: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 4ac4b: 49 8d 1c 1f lea (%r15,%rbx,1),%rbx 0.00 : 4ac4f: 4c 89 ff mov %r15,%rdi 0.00 : 4ac52: 48 89 9d 60 ff ff ff mov %rbx,-0xa0(%rbp) 0.00 : 4ac59: 48 8b 9d 30 ff ff ff mov -0xd0(%rbp),%rbx 0.00 : 4ac60: 49 39 dd cmp %rbx,%r13 0.00 : 4ac63: 77 26 ja 4ac8b <__printf_fp+0xedb> 0.00 : 4ac65: eb 59 jmp 4acc0 <__printf_fp+0xf10> 0.00 : 4ac67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ac6e: 00 00 0.00 : 4ac70: 39 85 04 ff ff ff cmp %eax,-0xfc(%rbp) 0.00 : 4ac76: 0f 84 34 01 00 00 je 4adb0 <__printf_fp+0x1000> 0.00 : 4ac7c: 88 07 mov %al,(%rdi) 0.00 : 4ac7e: 48 83 c7 01 add $0x1,%rdi 0.00 : 4ac82: 48 83 c3 04 add $0x4,%rbx 0.00 : 4ac86: 49 39 dd cmp %rbx,%r13 0.00 : 4ac89: 76 35 jbe 4acc0 <__printf_fp+0xf10> 0.00 : 4ac8b: 8b 03 mov (%rbx),%eax 0.00 : 4ac8d: 3b 85 f4 fe ff ff cmp -0x10c(%rbp),%eax 0.00 : 4ac93: 75 db jne 4ac70 <__printf_fp+0xec0> 0.00 : 4ac95: 48 8b 95 98 fe ff ff mov -0x168(%rbp),%rdx 0.00 : 4ac9c: 48 8b b5 e8 fe ff ff mov -0x118(%rbp),%rsi 0.00 : 4aca3: e8 e8 92 03 00 callq 83f90 <__mempcpy> 0.00 : 4aca8: 48 89 c7 mov %rax,%rdi 0.00 : 4acab: eb d5 jmp 4ac82 <__printf_fp+0xed2> 0.00 : 4acad: 0f 1f 00 nopl (%rax) 0.00 : 4acb0: 45 31 ff xor %r15d,%r15d 0.00 : 4acb3: 48 c7 85 60 ff ff ff movq $0x0,-0xa0(%rbp) 0.00 : 4acba: 00 00 00 00 0.00 : 4acbe: 31 ff xor %edi,%edi 0.00 : 4acc0: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4acc7: 4d 89 fe mov %r15,%r14 0.00 : 4acca: f6 40 0d 08 testb $0x8,0xd(%rax) 0.00 : 4acce: 0f 85 96 15 00 00 jne 4c26a <__printf_fp+0x24ba> 0.00 : 4acd4: 44 8b 95 14 ff ff ff mov -0xec(%rbp),%r10d 0.00 : 4acdb: 45 85 d2 test %r10d,%r10d 0.00 : 4acde: 0f 84 14 03 00 00 je 4aff8 <__printf_fp+0x1248> 0.00 : 4ace4: 48 8b 85 d8 fe ff ff mov -0x128(%rbp),%rax 0.00 : 4aceb: 4c 8b ad d8 fe ff ff mov -0x128(%rbp),%r13 0.00 : 4acf2: 48 83 c0 03 add $0x3,%rax 0.00 : 4acf6: 49 c1 fd 02 sar $0x2,%r13 0.00 : 4acfa: 48 83 f8 06 cmp $0x6,%rax 0.00 : 4acfe: 0f 97 c0 seta %al 0.00 : 4ad01: 84 c0 test %al,%al 0.00 : 4ad03: 0f 84 57 02 00 00 je 4af60 <__printf_fp+0x11b0> 0.00 : 4ad09: 44 8b 8d 14 ff ff ff mov -0xec(%rbp),%r9d 0.00 : 4ad10: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 4ad17: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4ad1e: 45 85 c9 test %r9d,%r9d 0.00 : 4ad21: 4c 0f 45 b5 30 ff ff cmovne -0xd0(%rbp),%r14 0.00 : 4ad28: ff 0.00 : 4ad29: 48 8b 82 d8 00 00 00 mov 0xd8(%rdx),%rax 0.00 : 4ad30: 4c 89 ea mov %r13,%rdx 0.00 : 4ad33: 4c 89 f6 mov %r14,%rsi 0.00 : 4ad36: ff 50 38 callq *0x38(%rax) 0.00 : 4ad39: 49 39 c5 cmp %rax,%r13 0.00 : 4ad3c: 0f 85 3a 08 00 00 jne 4b57c <__printf_fp+0x17cc> 0.00 : 4ad42: 45 01 ec add %r13d,%r12d 0.00 : 4ad45: 48 83 bd d0 fe ff ff cmpq $0x0,-0x130(%rbp) 0.00 : 4ad4c: 00 0.00 : 4ad4d: 0f 85 38 15 00 00 jne 4c28b <__printf_fp+0x24db> 0.00 : 4ad53: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4ad5a: f6 40 0c 20 testb $0x20,0xc(%rax) 0.00 : 4ad5e: 0f 84 8c f4 ff ff je 4a1f0 <__printf_fp+0x440> 0.00 : 4ad64: 8b b5 e0 fe ff ff mov -0x120(%rbp),%esi 0.00 : 4ad6a: 85 f6 test %esi,%esi 0.00 : 4ad6c: 0f 8e 7e f4 ff ff jle 4a1f0 <__printf_fp+0x440> 0.00 : 4ad72: 8b 8d 14 ff ff ff mov -0xec(%rbp),%ecx 0.00 : 4ad78: 85 c9 test %ecx,%ecx 0.00 : 4ad7a: 0f 84 cd 0a 00 00 je 4b84d <__printf_fp+0x1a9d> 0.00 : 4ad80: 48 63 9d e0 fe ff ff movslq -0x120(%rbp),%rbx 0.00 : 4ad87: 8b 70 10 mov 0x10(%rax),%esi 0.00 : 4ad8a: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4ad91: 48 89 da mov %rbx,%rdx 0.00 : 4ad94: e8 87 f7 01 00 callq 6a520 <_IO_wpadn> 0.00 : 4ad99: 48 39 d8 cmp %rbx,%rax 0.00 : 4ad9c: 0f 85 da 07 00 00 jne 4b57c <__printf_fp+0x17cc> 0.00 : 4ada2: 44 03 a5 e0 fe ff ff add -0x120(%rbp),%r12d 0.00 : 4ada9: e9 42 f4 ff ff jmpq 4a1f0 <__printf_fp+0x440> 0.00 : 4adae: 66 90 xchg %ax,%ax 0.00 : 4adb0: 48 8b b5 f8 fe ff ff mov -0x108(%rbp),%rsi 0.00 : 4adb7: 4c 89 f2 mov %r14,%rdx 0.00 : 4adba: e8 d1 91 03 00 callq 83f90 <__mempcpy> 0.00 : 4adbf: 48 89 c7 mov %rax,%rdi 0.00 : 4adc2: e9 bb fe ff ff jmpq 4ac82 <__printf_fp+0xed2> 0.00 : 4adc7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4adce: 00 00 0.00 : 4add0: 45 31 e4 xor %r12d,%r12d 0.00 : 4add3: e9 4f fd ff ff jmpq 4ab27 <__printf_fp+0xd77> 0.00 : 4add8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4addf: 00 0.00 : 4ade0: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4ade7: 0f b6 5e 0c movzbl 0xc(%rsi),%ebx 0.00 : 4adeb: f6 c3 50 test $0x50,%bl 0.00 : 4adee: 0f 84 bc fc ff ff je 4aab0 <__printf_fp+0xd00> 0.00 : 4adf4: e9 b0 fc ff ff jmpq 4aaa9 <__printf_fp+0xcf9> 0.00 : 4adf9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4ae00: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4ae06: 85 c0 test %eax,%eax 0.00 : 4ae08: 0f 84 9a 07 00 00 je 4b5a8 <__printf_fp+0x17f8> 0.00 : 4ae0e: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4ae15: 48 8b 91 a0 00 00 00 mov 0xa0(%rcx),%rdx 0.00 : 4ae1c: 48 85 d2 test %rdx,%rdx 0.00 : 4ae1f: 0f 84 c6 14 00 00 je 4c2eb <__printf_fp+0x253b> 0.00 : 4ae25: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4ae29: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4ae2d: 0f 83 b8 14 00 00 jae 4c2eb <__printf_fp+0x253b> 0.00 : 4ae33: c7 00 2d 00 00 00 movl $0x2d,(%rax) 0.00 : 4ae39: 48 83 c0 04 add $0x4,%rax 0.00 : 4ae3d: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4ae41: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4ae48: 41 83 c4 01 add $0x1,%r12d 0.00 : 4ae4c: e9 f8 f2 ff ff jmpq 4a149 <__printf_fp+0x399> 0.00 : 4ae51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4ae58: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4ae5f: 0f b6 5e 0c movzbl 0xc(%rsi),%ebx 0.00 : 4ae63: f6 c3 40 test $0x40,%bl 0.00 : 4ae66: 0f 84 70 07 00 00 je 4b5dc <__printf_fp+0x182c> 0.00 : 4ae6c: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4ae72: 85 c0 test %eax,%eax 0.00 : 4ae74: 0f 84 01 0f 00 00 je 4bd7b <__printf_fp+0x1fcb> 0.00 : 4ae7a: 48 8b 85 a8 fe ff ff mov -0x158(%rbp),%rax 0.00 : 4ae81: 48 8b 90 a0 00 00 00 mov 0xa0(%rax),%rdx 0.00 : 4ae88: 48 85 d2 test %rdx,%rdx 0.00 : 4ae8b: 0f 84 c7 14 00 00 je 4c358 <__printf_fp+0x25a8> 0.00 : 4ae91: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4ae95: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4ae99: 0f 83 b9 14 00 00 jae 4c358 <__printf_fp+0x25a8> 0.00 : 4ae9f: c7 00 2b 00 00 00 movl $0x2b,(%rax) 0.00 : 4aea5: 48 83 c0 04 add $0x4,%rax 0.00 : 4aea9: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4aead: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4aeb4: 41 83 c4 01 add $0x1,%r12d 0.00 : 4aeb8: 0f b6 5e 0c movzbl 0xc(%rsi),%ebx 0.00 : 4aebc: e9 c1 fc ff ff jmpq 4ab82 <__printf_fp+0xdd2> 0.00 : 4aec1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4aec8: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4aece: 85 c0 test %eax,%eax 0.00 : 4aed0: 0f 84 83 07 00 00 je 4b659 <__printf_fp+0x18a9> 0.00 : 4aed6: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4aedd: 48 8b 91 a0 00 00 00 mov 0xa0(%rcx),%rdx 0.00 : 4aee4: 48 85 d2 test %rdx,%rdx 0.00 : 4aee7: 0f 84 d3 13 00 00 je 4c2c0 <__printf_fp+0x2510> 0.00 : 4aeed: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4aef1: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4aef5: 0f 83 c5 13 00 00 jae 4c2c0 <__printf_fp+0x2510> 0.00 : 4aefb: c7 00 2b 00 00 00 movl $0x2b,(%rax) 0.00 : 4af01: 48 83 c0 04 add $0x4,%rax 0.00 : 4af05: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4af09: e9 3a ff ff ff jmpq 4ae48 <__printf_fp+0x1098> 0.00 : 4af0e: 66 90 xchg %ax,%ax 0.00 : 4af10: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 4af16: 85 c0 test %eax,%eax 0.00 : 4af18: 0f 84 e5 07 00 00 je 4b703 <__printf_fp+0x1953> 0.00 : 4af1e: 48 8b 85 a8 fe ff ff mov -0x158(%rbp),%rax 0.00 : 4af25: 48 8b 90 a0 00 00 00 mov 0xa0(%rax),%rdx 0.00 : 4af2c: 48 85 d2 test %rdx,%rdx 0.00 : 4af2f: 0f 84 bd 13 00 00 je 4c2f2 <__printf_fp+0x2542> 0.00 : 4af35: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4af39: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4af3d: 0f 83 af 13 00 00 jae 4c2f2 <__printf_fp+0x2542> 0.00 : 4af43: c7 00 20 00 00 00 movl $0x20,(%rax) 0.00 : 4af49: 48 83 c0 04 add $0x4,%rax 0.00 : 4af4d: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4af51: e9 f2 fe ff ff jmpq 4ae48 <__printf_fp+0x1098> 0.00 : 4af56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4af5d: 00 00 00 0.00 : 4af60: 44 8b 85 14 ff ff ff mov -0xec(%rbp),%r8d 0.00 : 4af67: 45 85 c0 test %r8d,%r8d 0.00 : 4af6a: 0f 85 1d 07 00 00 jne 4b68d <__printf_fp+0x18dd> 0.00 : 4af70: 31 db xor %ebx,%ebx 0.00 : 4af72: 4d 85 ed test %r13,%r13 0.00 : 4af75: 75 2b jne 4afa2 <__printf_fp+0x11f2> 0.00 : 4af77: e9 c9 fd ff ff jmpq 4ad45 <__printf_fp+0xf95> 0.00 : 4af7c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4af80: 88 10 mov %dl,(%rax) 0.00 : 4af82: 48 8b b5 a8 fe ff ff mov -0x158(%rbp),%rsi 0.00 : 4af89: 48 83 c0 01 add $0x1,%rax 0.00 : 4af8d: 48 89 46 28 mov %rax,0x28(%rsi) 0.00 : 4af91: 48 83 c3 01 add $0x1,%rbx 0.00 : 4af95: 41 83 c4 01 add $0x1,%r12d 0.00 : 4af99: 4c 39 eb cmp %r13,%rbx 0.00 : 4af9c: 0f 84 a3 fd ff ff je 4ad45 <__printf_fp+0xf95> 0.00 : 4afa2: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4afa9: 41 0f b6 14 1e movzbl (%r14,%rbx,1),%edx 0.00 : 4afae: 48 8b 41 28 mov 0x28(%rcx),%rax 0.00 : 4afb2: 48 3b 41 30 cmp 0x30(%rcx),%rax 0.00 : 4afb6: 72 c8 jb 4af80 <__printf_fp+0x11d0> 0.00 : 4afb8: 0f b6 f2 movzbl %dl,%esi 0.00 : 4afbb: 48 89 cf mov %rcx,%rdi 0.00 : 4afbe: e8 dd 8d 02 00 callq 73da0 <__overflow> 0.00 : 4afc3: 89 85 e4 fe ff ff mov %eax,-0x11c(%rbp) 0.00 : 4afc9: 83 c0 01 add $0x1,%eax 0.00 : 4afcc: 75 c3 jne 4af91 <__printf_fp+0x11e1> 0.00 : 4afce: 8b bd 24 ff ff ff mov -0xdc(%rbp),%edi 0.00 : 4afd4: 85 ff test %edi,%edi 0.00 : 4afd6: 0f 84 94 f2 ff ff je 4a270 <__printf_fp+0x4c0> 0.00 : 4afdc: 48 8b bd 18 ff ff ff mov -0xe8(%rbp),%rdi 0.00 : 4afe3: e8 b8 38 fd ff callq 1e8a0 0.00 : 4afe8: 44 8b a5 e4 fe ff ff mov -0x11c(%rbp),%r12d 0.00 : 4afef: e9 fc f1 ff ff jmpq 4a1f0 <__printf_fp+0x440> 0.00 : 4aff4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4aff8: 49 89 fd mov %rdi,%r13 0.00 : 4affb: 4d 29 f5 sub %r14,%r13 0.00 : 4affe: 49 83 fd 14 cmp $0x14,%r13 0.00 : 4b002: 0f 9f c0 setg %al 0.00 : 4b005: e9 f7 fc ff ff jmpq 4ad01 <__printf_fp+0xf51> 0.00 : 4b00a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4b010: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 4b017: 48 89 c3 mov %rax,%rbx 0.00 : 4b01a: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4b021: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 4b025: 48 8b 00 mov (%rax),%rax 0.00 : 4b028: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 4b02c: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 4b032: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 0.00 : 4b036: 0f b6 5e 0c movzbl 0xc(%rsi),%ebx 0.00 : 4b03a: e9 84 f2 ff ff jmpq 4a2c3 <__printf_fp+0x513> 0.00 : 4b03f: 8b b5 50 ff ff ff mov -0xb0(%rbp),%esi 0.00 : 4b045: 85 f6 test %esi,%esi 0.00 : 4b047: 7e 19 jle 4b062 <__printf_fp+0x12b2> 0.00 : 4b049: 48 83 7d 88 01 cmpq $0x1,-0x78(%rbp) 0.00 : 4b04e: 0f 8f da f7 ff ff jg 4a82e <__printf_fp+0xa7e> 0.00 : 4b054: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4b058: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 4b05c: 0f 85 cc f7 ff ff jne 4a82e <__printf_fp+0xa7e> 0.00 : 4b062: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4b068: e9 d3 f7 ff ff jmpq 4a840 <__printf_fp+0xa90> 0.00 : 4b06d: 89 de mov %ebx,%esi 0.00 : 4b06f: 03 75 98 add -0x68(%rbp),%esi 0.00 : 4b072: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4b076: 8d 46 3f lea 0x3f(%rsi),%eax 0.00 : 4b079: 85 f6 test %esi,%esi 0.00 : 4b07b: 0f 48 f0 cmovs %eax,%esi 0.00 : 4b07e: c1 fe 06 sar $0x6,%esi 0.00 : 4b081: 48 63 c6 movslq %esi,%rax 0.00 : 4b084: 48 01 45 88 add %rax,-0x78(%rbp) 0.00 : 4b088: 44 89 c6 mov %r8d,%esi 0.00 : 4b08b: 31 c9 xor %ecx,%ecx 0.00 : 4b08d: 8d 04 33 lea (%rbx,%rsi,1),%eax 0.00 : 4b090: 83 f8 3f cmp $0x3f,%eax 0.00 : 4b093: 7e 2b jle 4b0c0 <__printf_fp+0x1310> 0.00 : 4b095: 0f 1f 00 nopl (%rax) 0.00 : 4b098: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4b09c: 48 c7 04 c8 00 00 00 movq $0x0,(%rax,%rcx,8) 0.00 : 4b0a3: 00 0.00 : 4b0a4: 8b 75 98 mov -0x68(%rbp),%esi 0.00 : 4b0a7: 48 83 c1 01 add $0x1,%rcx 0.00 : 4b0ab: 8d 04 33 lea (%rbx,%rsi,1),%eax 0.00 : 4b0ae: 8d 50 3f lea 0x3f(%rax),%edx 0.00 : 4b0b1: 85 c0 test %eax,%eax 0.00 : 4b0b3: 0f 48 c2 cmovs %edx,%eax 0.00 : 4b0b6: c1 f8 06 sar $0x6,%eax 0.00 : 4b0b9: 48 98 cltq 0.00 : 4b0bb: 48 39 c8 cmp %rcx,%rax 0.00 : 4b0be: 7f d8 jg 4b098 <__printf_fp+0x12e8> ??:0 50.00 : 4b0c0: 4c 8d 25 71 98 0e 00 lea 0xe9871(%rip),%r12 # 134938 <_fpioconst_pow10+0x138> 0.00 : 4b0c7: 45 31 f6 xor %r14d,%r14d 0.00 : 4b0ca: 41 bd 0c 00 00 00 mov $0xc,%r13d 0.00 : 4b0d0: 45 31 ff xor %r15d,%r15d 0.00 : 4b0d3: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 4b0d7: eb 54 jmp 4b12d <__printf_fp+0x137d> 0.00 : 4b0d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4b0e0: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.00 : 4b0e5: 49 8b 34 24 mov (%r12),%rsi 0.00 : 4b0e9: 48 8d 0d 10 89 0e 00 lea 0xe8910(%rip),%rcx # 133a00 <__tens> 0.00 : 4b0f0: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 4b0f7: 48 8d 14 dd 00 00 00 lea 0x0(,%rbx,8),%rdx 0.00 : 4b0fe: 00 0.00 : 4b0ff: 48 8d 34 f1 lea (%rcx,%rsi,8),%rsi 0.00 : 4b103: e8 48 96 03 00 callq 84750 0.00 : 4b108: 48 3b 5d 88 cmp -0x78(%rbp),%rbx 0.00 : 4b10c: 0f 8c 99 00 00 00 jl 4b1ab <__printf_fp+0x13fb> 0.00 : 4b112: 74 7c je 4b190 <__printf_fp+0x13e0> 0.00 : 4b114: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 4b118: 45 85 ed test %r13d,%r13d 0.00 : 4b11b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4b120: 0f 84 da 00 00 00 je 4b200 <__printf_fp+0x1450> 0.00 : 4b126: 8b 75 98 mov -0x68(%rbp),%esi 0.00 : 4b129: 41 83 ed 01 sub $0x1,%r13d 0.00 : 4b12d: 49 83 ec 18 sub $0x18,%r12 0.00 : 4b131: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.00 : 4b136: 41 8d 44 06 ff lea -0x1(%r14,%rax,1),%eax 0.00 : 4b13b: 39 c6 cmp %eax,%esi 0.00 : 4b13d: 7c d9 jl 4b118 <__printf_fp+0x1368> 0.00 : 4b13f: 4d 85 c9 test %r9,%r9 0.00 : 4b142: 74 9c je 4b0e0 <__printf_fp+0x1330> 0.00 : 4b144: 49 8b 0c 24 mov (%r12),%rcx 0.00 : 4b148: 4d 8b 44 24 08 mov 0x8(%r12),%r8 0.00 : 4b14d: 48 8d 1d ac 88 0e 00 lea 0xe88ac(%rip),%rbx # 133a00 <__tens> 0.00 : 4b154: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 4b15b: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 4b162: 4c 89 ca mov %r9,%rdx 0.00 : 4b165: 48 8d 4c cb 08 lea 0x8(%rbx,%rcx,8),%rcx 0.00 : 4b16a: 49 83 e8 01 sub $0x1,%r8 0.00 : 4b16e: e8 4d 75 ff ff callq 426c0 <__mpn_mul> 0.00 : 4b173: 49 8b 54 24 08 mov 0x8(%r12),%rdx 0.00 : 4b178: 48 03 55 90 add -0x70(%rbp),%rdx 0.00 : 4b17c: 48 8d 5a ff lea -0x1(%rdx),%rbx 0.00 : 4b180: 48 83 ea 02 sub $0x2,%rdx 0.00 : 4b184: 48 85 c0 test %rax,%rax 0.00 : 4b187: 48 0f 44 da cmove %rdx,%rbx 0.00 : 4b18b: e9 78 ff ff ff jmpq 4b108 <__printf_fp+0x1358> 0.00 : 4b190: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 4b197: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4b19b: 48 89 da mov %rbx,%rdx 0.00 : 4b19e: e8 5d 6e ff ff callq 42000 <__mpn_cmp> 0.00 : 4b1a3: 85 c0 test %eax,%eax 0.00 : 4b1a5: 0f 88 69 ff ff ff js 4b114 <__printf_fp+0x1364> 0.00 : 4b1ab: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 4b1b2: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 4b1b9: 48 8d 14 dd 00 00 00 lea 0x0(,%rbx,8),%rdx 0.00 : 4b1c0: 00 0.00 : 4b1c1: 48 89 5d 90 mov %rbx,-0x70(%rbp) 0.00 : 4b1c5: e8 86 95 03 00 callq 84750 0.00 : 4b1ca: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 4b1ce: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 4b1d5: 44 89 e9 mov %r13d,%ecx 0.00 : 4b1d8: 4a 0f bd 44 c8 f8 bsr -0x8(%rax,%r9,8),%rax 0.00 : 4b1de: 44 89 ca mov %r9d,%edx 0.00 : 4b1e1: 83 f0 c0 xor $0xffffffc0,%eax 0.00 : 4b1e4: c1 e2 06 shl $0x6,%edx 0.00 : 4b1e7: 44 8d 74 02 80 lea -0x80(%rdx,%rax,1),%r14d 0.00 : 4b1ec: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4b1f1: d3 e0 shl %cl,%eax 0.00 : 4b1f3: 41 09 c7 or %eax,%r15d 0.00 : 4b1f6: e9 1d ff ff ff jmpq 4b118 <__printf_fp+0x1368> 0.00 : 4b1fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4b200: 4d 85 c9 test %r9,%r9 0.00 : 4b203: 44 89 7d 98 mov %r15d,-0x68(%rbp) 0.00 : 4b207: 0f 8e d4 f3 ff ff jle 4a5e1 <__printf_fp+0x831> 0.00 : 4b20d: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 4b214: 48 8b 0f mov (%rdi),%rcx 0.00 : 4b217: 48 85 c9 test %rcx,%rcx 0.00 : 4b21a: 0f 85 b8 0e 00 00 jne 4c0d8 <__printf_fp+0x2328> 0.00 : 4b220: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 4b224: 48 83 3e 00 cmpq $0x0,(%rsi) 0.00 : 4b228: 0f 85 aa 0e 00 00 jne 4c0d8 <__printf_fp+0x2328> 50.00 : 4b22e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4b233: eb 11 jmp 4b246 <__printf_fp+0x1496> 0.00 : 4b235: 0f 1f 00 nopl (%rax) 0.00 : 4b238: 48 83 3c d6 00 cmpq $0x0,(%rsi,%rdx,8) 0.00 : 4b23d: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 4b241: 75 17 jne 4b25a <__printf_fp+0x14aa> 0.00 : 4b243: 48 89 c2 mov %rax,%rdx 0.00 : 4b246: 48 8b 0c d7 mov (%rdi,%rdx,8),%rcx 0.00 : 4b24a: 41 89 d5 mov %edx,%r13d 0.00 : 4b24d: 4c 8d 34 d5 00 00 00 lea 0x0(,%rdx,8),%r14 0.00 : 4b254: 00 0.00 : 4b255: 48 85 c9 test %rcx,%rcx 0.00 : 4b258: 74 de je 4b238 <__printf_fp+0x1488> 0.00 : 4b25a: 4a 0f bd 44 cf f8 bsr -0x8(%rdi,%r9,8),%rax 0.00 : 4b260: 89 c3 mov %eax,%ebx 0.00 : 4b262: 83 f3 3f xor $0x3f,%ebx 0.00 : 4b265: 0f 85 4e 05 00 00 jne 4b7b9 <__printf_fp+0x1a09> 0.00 : 4b26b: 45 85 ed test %r13d,%r13d 0.00 : 4b26e: 0f 84 6d f3 ff ff je 4a5e1 <__printf_fp+0x831> 0.00 : 4b274: 4d 63 e5 movslq %r13d,%r12 0.00 : 4b277: 4c 89 c8 mov %r9,%rax 0.00 : 4b27a: 4c 29 e0 sub %r12,%rax 0.00 : 4b27d: 48 85 c0 test %rax,%rax 0.00 : 4b280: 7e 31 jle 4b2b3 <__printf_fp+0x1503> 0.00 : 4b282: 48 8d 34 d5 00 00 00 lea 0x0(,%rdx,8),%rsi 0.00 : 4b289: 00 0.00 : 4b28a: 31 c9 xor %ecx,%ecx 0.00 : 4b28c: eb 09 jmp 4b297 <__printf_fp+0x14e7> 0.00 : 4b28e: 66 90 xchg %ax,%ax 0.00 : 4b290: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 4b297: 48 8b 04 37 mov (%rdi,%rsi,1),%rax 0.00 : 4b29b: 48 83 c6 08 add $0x8,%rsi 0.00 : 4b29f: 48 89 04 cf mov %rax,(%rdi,%rcx,8) 0.00 : 4b2a3: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 4b2a7: 48 83 c1 01 add $0x1,%rcx 0.00 : 4b2ab: 4c 29 e0 sub %r12,%rax 0.00 : 4b2ae: 48 39 c8 cmp %rcx,%rax 0.00 : 4b2b1: 7f dd jg 4b290 <__printf_fp+0x14e0> 0.00 : 4b2b3: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 4b2b7: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 4b2bb: 4c 29 e0 sub %r12,%rax 0.00 : 4b2be: 48 85 c0 test %rax,%rax 0.00 : 4b2c1: 7e 2d jle 4b2f0 <__printf_fp+0x1540> 0.00 : 4b2c3: 48 8d 34 d5 00 00 00 lea 0x0(,%rdx,8),%rsi 0.00 : 4b2ca: 00 0.00 : 4b2cb: 31 c9 xor %ecx,%ecx 0.00 : 4b2cd: 0f 1f 00 nopl (%rax) 0.00 : 4b2d0: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4b2d4: 48 8b 04 32 mov (%rdx,%rsi,1),%rax 0.00 : 4b2d8: 48 83 c6 08 add $0x8,%rsi 0.00 : 4b2dc: 48 89 04 ca mov %rax,(%rdx,%rcx,8) 0.00 : 4b2e0: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 4b2e4: 48 83 c1 01 add $0x1,%rcx 0.00 : 4b2e8: 4c 29 e0 sub %r12,%rax 0.00 : 4b2eb: 48 39 c8 cmp %rcx,%rax 0.00 : 4b2ee: 7f e0 jg 4b2d0 <__printf_fp+0x1520> 0.00 : 4b2f0: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 4b2f4: e9 e8 f2 ff ff jmpq 4a5e1 <__printf_fp+0x831> 0.00 : 4b2f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4b300: 89 75 9c mov %esi,-0x64(%rbp) 0.00 : 4b303: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4b30a: 8b 36 mov (%rsi),%esi 0.00 : 4b30c: 85 f6 test %esi,%esi 0.00 : 4b30e: 89 b5 50 ff ff ff mov %esi,-0xb0(%rbp) 0.00 : 4b314: 0f 88 64 0b 00 00 js 4be7e <__printf_fp+0x20ce> 0.00 : 4b31a: 48 63 85 50 ff ff ff movslq -0xb0(%rbp),%rax 0.00 : 4b321: 48 83 c0 08 add $0x8,%rax 0.00 : 4b325: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 4b32c: 8b 85 50 ff ff ff mov -0xb0(%rbp),%eax 0.00 : 4b332: c7 85 44 ff ff ff 01 movl $0x1,-0xbc(%rbp) 0.00 : 4b339: 00 00 00 0.00 : 4b33c: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4b342: c7 85 54 ff ff ff ff movl $0x7fffffff,-0xac(%rbp) 0.00 : 4b349: ff ff 7f 0.00 : 4b34c: 89 85 4c ff ff ff mov %eax,-0xb4(%rbp) 0.00 : 4b352: e9 82 f3 ff ff jmpq 4a6d9 <__printf_fp+0x929> 0.00 : 4b357: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4b35e: 00 00 0.00 : 4b360: 48 89 df mov %rbx,%rdi 0.00 : 4b363: e8 58 c8 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 4b368: 85 c0 test %eax,%eax 0.00 : 4b36a: 0f 85 e8 f3 ff ff jne 4a758 <__printf_fp+0x9a8> 0.00 : 4b370: 48 89 df mov %rbx,%rdi 0.00 : 4b373: e8 d8 34 fd ff callq 1e850 0.00 : 4b378: 48 85 c0 test %rax,%rax 0.00 : 4b37b: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) 0.00 : 4b382: c7 85 24 ff ff ff 01 movl $0x1,-0xdc(%rbp) 0.00 : 4b389: 00 00 00 0.00 : 4b38c: 48 c7 85 d0 fe ff ff movq $0x1,-0x130(%rbp) 0.00 : 4b393: 01 00 00 00 0.00 : 4b397: 0f 85 eb f3 ff ff jne 4a788 <__printf_fp+0x9d8> 0.00 : 4b39d: e9 ce ee ff ff jmpq 4a270 <__printf_fp+0x4c0> 0.00 : 4b3a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4b3a8: 8b 9d f4 fe ff ff mov -0x10c(%rbp),%ebx 0.00 : 4b3ae: 39 5e fc cmp %ebx,-0x4(%rsi) 0.00 : 4b3b1: 48 8d 56 fc lea -0x4(%rsi),%rdx 0.00 : 4b3b5: 48 8d 46 f8 lea -0x8(%rsi),%rax 0.00 : 4b3b9: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 4b3bd: 48 39 95 30 ff ff ff cmp %rdx,-0xd0(%rbp) 0.00 : 4b3c4: 76 21 jbe 4b3e7 <__printf_fp+0x1637> 0.00 : 4b3c6: e9 a7 04 00 00 jmpq 4b872 <__printf_fp+0x1ac2> 0.00 : 4b3cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4b3d0: c7 02 30 00 00 00 movl $0x30,(%rdx) 0.00 : 4b3d6: 48 83 ea 04 sub $0x4,%rdx 0.00 : 4b3da: 48 39 95 30 ff ff ff cmp %rdx,-0xd0(%rbp) 0.00 : 4b3e1: 0f 87 8b 04 00 00 ja 4b872 <__printf_fp+0x1ac2> 0.00 : 4b3e7: 8b 02 mov (%rdx),%eax 0.00 : 4b3e9: 83 f8 39 cmp $0x39,%eax 0.00 : 4b3ec: 74 e2 je 4b3d0 <__printf_fp+0x1620> 0.00 : 4b3ee: 83 c0 01 add $0x1,%eax 0.00 : 4b3f1: 89 02 mov %eax,(%rdx) 0.00 : 4b3f3: e9 60 f5 ff ff jmpq 4a958 <__printf_fp+0xba8> 0.00 : 4b3f8: 8b 95 54 ff ff ff mov -0xac(%rbp),%edx 0.00 : 4b3fe: 3b 55 98 cmp -0x68(%rbp),%edx 0.00 : 4b401: 0f 8e 7b f2 ff ff jle 4a682 <__printf_fp+0x8d2> 0.00 : 4b407: 44 8b 55 a0 mov -0x60(%rbp),%r10d 0.00 : 4b40b: c7 45 9c 66 00 00 00 movl $0x66,-0x64(%rbp) 0.00 : 4b412: c7 85 44 ff ff ff 00 movl $0x0,-0xbc(%rbp) 0.00 : 4b419: 00 00 00 0.00 : 4b41c: 45 85 d2 test %r10d,%r10d 0.00 : 4b41f: 75 0c jne 4b42d <__printf_fp+0x167d> 0.00 : 4b421: 8b 45 98 mov -0x68(%rbp),%eax 0.00 : 4b424: 83 c0 01 add $0x1,%eax 0.00 : 4b427: 89 85 44 ff ff ff mov %eax,-0xbc(%rbp) 0.00 : 4b42d: 48 63 85 54 ff ff ff movslq -0xac(%rbp),%rax 0.00 : 4b434: 8b 9d 54 ff ff ff mov -0xac(%rbp),%ebx 0.00 : 4b43a: 2b 9d 44 ff ff ff sub -0xbc(%rbp),%ebx 0.00 : 4b440: 48 83 c0 05 add $0x5,%rax 0.00 : 4b444: 89 9d 50 ff ff ff mov %ebx,-0xb0(%rbp) 0.00 : 4b44a: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 4b451: e9 59 f2 ff ff jmpq 4a6af <__printf_fp+0x8ff> 0.00 : 4b456: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4b45d: 00 00 00 0.00 : 4b460: 4c 63 b5 58 ff ff ff movslq -0xa8(%rbp),%r14 0.00 : 4b467: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 4b46e: 44 89 e6 mov %r12d,%esi 0.00 : 4b471: 4c 89 ea mov %r13,%rdx 0.00 : 4b474: 49 8d 1c 36 lea (%r14,%rsi,1),%rbx 0.00 : 4b478: 48 8d 34 b0 lea (%rax,%rsi,4),%rsi 0.00 : 4b47c: 48 8d 3c 98 lea (%rax,%rbx,4),%rdi 0.00 : 4b480: 48 29 f2 sub %rsi,%rdx 0.00 : 4b483: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 4b487: e8 e4 13 04 00 callq 8c870 0.00 : 4b48c: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 4b493: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 4b49a: 0f be 39 movsbl (%rcx),%edi 0.00 : 4b49d: 4c 8d 4c 9a fc lea -0x4(%rdx,%rbx,4),%r9 0.00 : 4b4a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4b4a8: 44 8d 47 ff lea -0x1(%rdi),%r8d 0.00 : 4b4ac: 4c 8b 95 08 ff ff ff mov -0xf8(%rbp),%r10 0.00 : 4b4b3: 49 8d 71 fc lea -0x4(%r9),%rsi 0.00 : 4b4b7: 4c 89 ca mov %r9,%rdx 0.00 : 4b4ba: 44 89 e1 mov %r12d,%ecx 0.00 : 4b4bd: 4a 8d 04 85 00 00 00 lea 0x0(,%r8,4),%rax 0.00 : 4b4c4: 00 0.00 : 4b4c5: 49 83 c2 01 add $0x1,%r10 0.00 : 4b4c9: 48 29 c6 sub %rax,%rsi 0.00 : 4b4cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4b4d0: 48 8b 9d 30 ff ff ff mov -0xd0(%rbp),%rbx 0.00 : 4b4d7: 83 e9 01 sub $0x1,%ecx 0.00 : 4b4da: 89 c8 mov %ecx,%eax 0.00 : 4b4dc: 8b 04 83 mov (%rbx,%rax,4),%eax 0.00 : 4b4df: 89 02 mov %eax,(%rdx) 0.00 : 4b4e1: 48 83 ea 04 sub $0x4,%rdx 0.00 : 4b4e5: 48 39 f2 cmp %rsi,%rdx 0.00 : 4b4e8: 75 e6 jne 4b4d0 <__printf_fp+0x1720> 0.00 : 4b4ea: 49 f7 d0 not %r8 0.00 : 4b4ed: 8b b5 04 ff ff ff mov -0xfc(%rbp),%esi 0.00 : 4b4f3: 44 89 e2 mov %r12d,%edx 0.00 : 4b4f6: 4b 8d 04 81 lea (%r9,%r8,4),%rax 0.00 : 4b4fa: 29 fa sub %edi,%edx 0.00 : 4b4fc: 89 30 mov %esi,(%rax) 0.00 : 4b4fe: 4c 8d 48 fc lea -0x4(%rax),%r9 0.00 : 4b502: 41 0f b6 02 movzbl (%r10),%eax 0.00 : 4b506: 3c 7f cmp $0x7f,%al 0.00 : 4b508: 74 2e je 4b538 <__printf_fp+0x1788> 0.00 : 4b50a: 3c 00 cmp $0x0,%al 0.00 : 4b50c: 7c 2a jl 4b538 <__printf_fp+0x1788> 0.00 : 4b50e: 75 0d jne 4b51d <__printf_fp+0x176d> 0.00 : 4b510: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 0.00 : 4b517: 0f b6 01 movzbl (%rcx),%eax 0.00 : 4b51a: 49 89 ca mov %rcx,%r10 0.00 : 4b51d: 0f be f8 movsbl %al,%edi 0.00 : 4b520: 39 d7 cmp %edx,%edi 0.00 : 4b522: 73 14 jae 4b538 <__printf_fp+0x1788> 0.00 : 4b524: 4c 89 95 08 ff ff ff mov %r10,-0xf8(%rbp) 0.00 : 4b52b: 41 89 d4 mov %edx,%r12d 0.00 : 4b52e: e9 75 ff ff ff jmpq 4b4a8 <__printf_fp+0x16f8> 0.00 : 4b533: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4b538: 48 8b 9d 30 ff ff ff mov -0xd0(%rbp),%rbx 0.00 : 4b53f: 83 ea 01 sub $0x1,%edx 0.00 : 4b542: 89 d0 mov %edx,%eax 0.00 : 4b544: 8b 04 83 mov (%rbx,%rax,4),%eax 0.00 : 4b547: 41 89 01 mov %eax,(%r9) 0.00 : 4b54a: 49 83 e9 04 sub $0x4,%r9 0.00 : 4b54e: 4c 39 cb cmp %r9,%rbx 0.00 : 4b551: 72 e5 jb 4b538 <__printf_fp+0x1788> 0.00 : 4b553: 4f 8d 6c b5 00 lea 0x0(%r13,%r14,4),%r13 0.00 : 4b558: e9 9a f4 ff ff jmpq 4a9f7 <__printf_fp+0xc47> 0.00 : 4b55d: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4b564: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4b569: e8 e2 02 02 00 callq 6b850 <__woverflow> 0.00 : 4b56e: 83 c0 01 add $0x1,%eax 0.00 : 4b571: 0f 94 c0 sete %al 0.00 : 4b574: 84 c0 test %al,%al 0.00 : 4b576: 0f 84 f7 f5 ff ff je 4ab73 <__printf_fp+0xdc3> 0.00 : 4b57c: 8b 95 24 ff ff ff mov -0xdc(%rbp),%edx 0.00 : 4b582: 85 d2 test %edx,%edx 0.00 : 4b584: 0f 84 e6 ec ff ff je 4a270 <__printf_fp+0x4c0> 0.00 : 4b58a: 48 8b bd 18 ff ff ff mov -0xe8(%rbp),%rdi 0.00 : 4b591: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 4b597: e8 04 33 fd ff callq 1e8a0 0.00 : 4b59c: e9 4f ec ff ff jmpq 4a1f0 <__printf_fp+0x440> 0.00 : 4b5a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4b5a8: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 4b5af: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4b5b4: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 4b5b8: 48 3b 43 30 cmp 0x30(%rbx),%rax 0.00 : 4b5bc: 48 89 df mov %rbx,%rdi 0.00 : 4b5bf: 0f 83 89 ec ff ff jae 4a24e <__printf_fp+0x49e> 0.00 : 4b5c5: c6 00 2d movb $0x2d,(%rax) 0.00 : 4b5c8: 48 8b b5 a8 fe ff ff mov -0x158(%rbp),%rsi 0.00 : 4b5cf: 48 83 c0 01 add $0x1,%rax 0.00 : 4b5d3: 48 89 46 28 mov %rax,0x28(%rsi) 0.00 : 4b5d7: e9 6c f8 ff ff jmpq 4ae48 <__printf_fp+0x1098> 0.00 : 4b5dc: f6 c3 10 test $0x10,%bl 0.00 : 4b5df: 0f 84 9d f5 ff ff je 4ab82 <__printf_fp+0xdd2> 0.00 : 4b5e5: 44 8b bd 14 ff ff ff mov -0xec(%rbp),%r15d 0.00 : 4b5ec: 45 85 ff test %r15d,%r15d 0.00 : 4b5ef: 0f 84 7f 09 00 00 je 4bf74 <__printf_fp+0x21c4> 0.00 : 4b5f5: 48 8b 85 a8 fe ff ff mov -0x158(%rbp),%rax 0.00 : 4b5fc: 48 8b 90 a0 00 00 00 mov 0xa0(%rax),%rdx 0.00 : 4b603: 48 85 d2 test %rdx,%rdx 0.00 : 4b606: 0f 84 db 0d 00 00 je 4c3e7 <__printf_fp+0x2637> 0.00 : 4b60c: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4b610: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4b614: 0f 83 cd 0d 00 00 jae 4c3e7 <__printf_fp+0x2637> 0.00 : 4b61a: c7 00 20 00 00 00 movl $0x20,(%rax) 0.00 : 4b620: 48 83 c0 04 add $0x4,%rax 0.00 : 4b624: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4b628: e9 80 f8 ff ff jmpq 4aead <__printf_fp+0x10fd> 0.00 : 4b62d: 48 8b b5 a8 fe ff ff mov -0x158(%rbp),%rsi 0.00 : 4b634: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 4b638: 48 3b 46 30 cmp 0x30(%rsi),%rax 0.00 : 4b63c: 0f 83 3e 0d 00 00 jae 4c380 <__printf_fp+0x25d0> 0.00 : 4b642: c6 00 2d movb $0x2d,(%rax) 0.00 : 4b645: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 4b64c: 48 83 c0 01 add $0x1,%rax 0.00 : 4b650: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 4b654: e9 1a f5 ff ff jmpq 4ab73 <__printf_fp+0xdc3> 0.00 : 4b659: 48 8b 9d a8 fe ff ff mov -0x158(%rbp),%rbx 0.00 : 4b660: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 4b665: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 4b669: 48 3b 43 30 cmp 0x30(%rbx),%rax 0.00 : 4b66d: 48 89 df mov %rbx,%rdi 0.00 : 4b670: 0f 83 d8 eb ff ff jae 4a24e <__printf_fp+0x49e> 0.00 : 4b676: c6 00 2b movb $0x2b,(%rax) 0.00 : 4b679: 48 8b b5 a8 fe ff ff mov -0x158(%rbp),%rsi 0.00 : 4b680: 48 83 c0 01 add $0x1,%rax 0.00 : 4b684: 48 89 46 28 mov %rax,0x28(%rsi) 0.00 : 4b688: e9 bb f7 ff ff jmpq 4ae48 <__printf_fp+0x1098> 0.00 : 4b68d: 4d 85 ed test %r13,%r13 0.00 : 4b690: 0f 84 af f6 ff ff je 4ad45 <__printf_fp+0xf95> 0.00 : 4b696: 49 8d 5d ff lea -0x1(%r13),%rbx 0.00 : 4b69a: eb 15 jmp 4b6b1 <__printf_fp+0x1901> 0.00 : 4b69c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4b6a0: 41 83 c4 01 add $0x1,%r12d 0.00 : 4b6a4: 48 85 db test %rbx,%rbx 0.00 : 4b6a7: 0f 84 98 f6 ff ff je 4ad45 <__printf_fp+0xf95> 0.00 : 4b6ad: 48 83 eb 01 sub $0x1,%rbx 0.00 : 4b6b1: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 4b6b8: 48 8b 85 a8 fe ff ff mov -0x158(%rbp),%rax 0.00 : 4b6bf: 8b 31 mov (%rcx),%esi 0.00 : 4b6c1: 48 83 c1 04 add $0x4,%rcx 0.00 : 4b6c5: 48 89 8d 30 ff ff ff mov %rcx,-0xd0(%rbp) 0.00 : 4b6cc: 48 8b 90 a0 00 00 00 mov 0xa0(%rax),%rdx 0.00 : 4b6d3: 48 85 d2 test %rdx,%rdx 0.00 : 4b6d6: 0f 84 58 0a 00 00 je 4c134 <__printf_fp+0x2384> 0.00 : 4b6dc: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 4b6e0: 48 3b 42 28 cmp 0x28(%rdx),%rax 0.00 : 4b6e4: 0f 83 4a 0a 00 00 jae 4c134 <__printf_fp+0x2384> 0.00 : 4b6ea: 89 30 mov %esi,(%rax) 0.00 : 4b6ec: 83 c6 01 add $0x1,%esi 0.00 : 4b6ef: 0f 94 c1 sete %cl 0.00 : 4b6f2: 48 83 c0 04 add $0x4,%rax 0.00 : 4b6f6: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 4b6fa: 84 c9 test %cl,%cl 0.00 : 4b6fc: 74 a2 je 4b6a0 <__printf_fp+0x18f0> 0.00 : 4b6fe: e9 79 fe ff ff jmpq 4b57c <__printf_fp+0x17cc> 0.00 : 4b703: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 4b70a: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 4b70e: 48 3b 42 30 cmp 0x30(%rdx),%rax 0.00 : 4b712: 0f 83 2e eb ff ff jae 4a246 <__printf_fp+0x496> 0.00 : 4b718: c6 00 20 movb $0x20,(%rax) 0.00 : 4b71b: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4b722: 48 83 c0 01 add $0x1,%rax 0.00 : 4b726: 48 89 41 28 mov %rax,0x28(%rcx) 0.00 : 4b72a: e9 19 f7 ff ff jmpq 4ae48 <__printf_fp+0x1098> 0.00 : 4b72f: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 4b736: c7 45 9c 66 00 00 00 movl $0x66,-0x64(%rbp) 0.00 : 4b73d: 8b 12 mov (%rdx),%edx 0.00 : 4b73f: 89 95 50 ff ff ff mov %edx,-0xb0(%rbp) 0.00 : 4b745: 44 8b a5 50 ff ff ff mov -0xb0(%rbp),%r12d 0.00 : 4b74c: 48 63 d2 movslq %edx,%rdx 0.00 : 4b74f: 45 85 e4 test %r12d,%r12d 0.00 : 4b752: 0f 88 00 08 00 00 js 4bf58 <__printf_fp+0x21a8> 0.00 : 4b758: 8b 5d a0 mov -0x60(%rbp),%ebx 0.00 : 4b75b: 85 db test %ebx,%ebx 0.00 : 4b75d: 0f 85 8f 06 00 00 jne 4bdf2 <__printf_fp+0x2042> 0.00 : 4b763: 48 63 45 98 movslq -0x68(%rbp),%rax 0.00 : 4b767: 8b 9d 50 ff ff ff mov -0xb0(%rbp),%ebx 0.00 : 4b76d: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4b773: c7 85 54 ff ff ff ff movl $0x7fffffff,-0xac(%rbp) 0.00 : 4b77a: ff ff 7f 0.00 : 4b77d: 89 9d 4c ff ff ff mov %ebx,-0xb4(%rbp) 0.00 : 4b783: 8d 48 01 lea 0x1(%rax),%ecx 0.00 : 4b786: 48 8d 44 02 02 lea 0x2(%rdx,%rax,1),%rax 0.00 : 4b78b: 89 8d 44 ff ff ff mov %ecx,-0xbc(%rbp) 0.00 : 4b791: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) 0.00 : 4b798: e9 3c ef ff ff jmpq 4a6d9 <__printf_fp+0x929> 0.00 : 4b79d: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4b7a4: 49 63 df movslq %r15d,%rbx 0.00 : 4b7a7: be 20 00 00 00 mov $0x20,%esi 0.00 : 4b7ac: 48 89 da mov %rbx,%rdx 0.00 : 4b7af: e8 8c ca 01 00 callq 68240 <_IO_padn> 0.00 : 4b7b4: e9 27 ea ff ff jmpq 4a1e0 <__printf_fp+0x430> 0.00 : 4b7b9: 48 85 c9 test %rcx,%rcx 0.00 : 4b7bc: 0f 84 d6 06 00 00 je 4be98 <__printf_fp+0x20e8> 0.00 : 4b7c2: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4b7c6: 48 0f bc c9 bsf %rcx,%rcx 0.00 : 4b7ca: 4a 8b 04 30 mov (%rax,%r14,1),%rax 0.00 : 4b7ce: 48 85 c0 test %rax,%rax 0.00 : 4b7d1: 0f 85 4f 09 00 00 jne 4c126 <__printf_fp+0x2376> 0.00 : 4b7d7: 45 85 ed test %r13d,%r13d 0.00 : 4b7da: 0f 85 c6 06 00 00 jne 4bea6 <__printf_fp+0x20f6> 0.00 : 4b7e0: 41 bf 40 00 00 00 mov $0x40,%r15d 0.00 : 4b7e6: 41 29 df sub %ebx,%r15d 0.00 : 4b7e9: 44 39 f9 cmp %r15d,%ecx 0.00 : 4b7ec: 0f 8c f3 08 00 00 jl 4c0e5 <__printf_fp+0x2335> 0.00 : 4b7f2: 4d 63 e5 movslq %r13d,%r12 0.00 : 4b7f5: 4a 8d 34 37 lea (%rdi,%r14,1),%rsi 0.00 : 4b7f9: 44 89 f9 mov %r15d,%ecx 0.00 : 4b7fc: 4d 29 e1 sub %r12,%r9 0.00 : 4b7ff: 41 8d 5d 01 lea 0x1(%r13),%ebx 0.00 : 4b803: 4c 89 ca mov %r9,%rdx 0.00 : 4b806: e8 f5 6d ff ff callq 42600 <__mpn_rshift> 0.00 : 4b80b: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4b80f: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b813: 44 89 f9 mov %r15d,%ecx 0.00 : 4b816: 48 63 db movslq %ebx,%rbx 0.00 : 4b819: 48 29 5d 90 sub %rbx,-0x70(%rbp) 0.00 : 4b81d: 4a 8d 34 37 lea (%rdi,%r14,1),%rsi 0.00 : 4b821: 4c 29 e2 sub %r12,%rdx 0.00 : 4b824: e8 d7 6d ff ff callq 42600 <__mpn_rshift> 0.00 : 4b829: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 4b82d: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 4b831: 48 89 c2 mov %rax,%rdx 0.00 : 4b834: 48 29 d8 sub %rbx,%rax 0.00 : 4b837: 4c 29 e2 sub %r12,%rdx 0.00 : 4b83a: 48 83 7c d1 f8 00 cmpq $0x0,-0x8(%rcx,%rdx,8) 0.00 : 4b840: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 4b844: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.00 : 4b848: e9 94 ed ff ff jmpq 4a5e1 <__printf_fp+0x831> 0.00 : 4b84d: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 4b854: 48 63 9d e0 fe ff ff movslq -0x120(%rbp),%rbx 0.00 : 4b85b: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4b862: 8b 72 10 mov 0x10(%rdx),%esi 0.00 : 4b865: 48 89 da mov %rbx,%rdx 0.00 : 4b868: e8 d3 c9 01 00 callq 68240 <_IO_padn> 0.00 : 4b86d: e9 27 f5 ff ff jmpq 4ad99 <__printf_fp+0xfe9> 0.00 : 4b872: 83 7d 9c 66 cmpl $0x66,-0x64(%rbp) 0.00 : 4b876: 0f 84 a4 07 00 00 je 4c020 <__printf_fp+0x2270> 0.00 : 4b87c: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 4b883: c7 06 31 00 00 00 movl $0x31,(%rsi) 0.00 : 4b889: 83 7d a0 01 cmpl $0x1,-0x60(%rbp) 0.00 : 4b88d: 19 c0 sbb %eax,%eax 0.00 : 4b88f: 83 e0 02 and $0x2,%eax 0.00 : 4b892: 83 e8 01 sub $0x1,%eax 0.00 : 4b895: 03 45 98 add -0x68(%rbp),%eax 0.00 : 4b898: 85 c0 test %eax,%eax 0.00 : 4b89a: 89 45 98 mov %eax,-0x68(%rbp) 0.00 : 4b89d: 75 07 jne 4b8a6 <__printf_fp+0x1af6> 0.00 : 4b89f: c7 45 a0 00 00 00 00 movl $0x0,-0x60(%rbp) 0.00 : 4b8a6: 8b 8d 48 ff ff ff mov -0xb8(%rbp),%ecx 0.00 : 4b8ac: 41 8d 14 0c lea (%r12,%rcx,1),%edx 0.00 : 4b8b0: 39 95 54 ff ff ff cmp %edx,-0xac(%rbp) 0.00 : 4b8b6: 0f 8d 9c f0 ff ff jge 4a958 <__printf_fp+0xba8> 0.00 : 4b8bc: 89 d0 mov %edx,%eax 0.00 : 4b8be: 2b 85 54 ff ff ff sub -0xac(%rbp),%eax 0.00 : 4b8c4: 44 03 a5 54 ff ff ff add -0xac(%rbp),%r12d 0.00 : 4b8cb: 4d 89 ee mov %r13,%r14 0.00 : 4b8ce: 48 98 cltq 0.00 : 4b8d0: 41 29 d4 sub %edx,%r12d 0.00 : 4b8d3: 48 c1 e0 02 shl $0x2,%rax 0.00 : 4b8d7: 49 29 c6 sub %rax,%r14 0.00 : 4b8da: e9 79 f0 ff ff jmpq 4a958 <__printf_fp+0xba8> 0.00 : 4b8df: 89 f0 mov %esi,%eax 0.00 : 4b8e1: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b8e5: c1 f8 1f sar $0x1f,%eax 0.00 : 4b8e8: c1 e8 1a shr $0x1a,%eax 0.00 : 4b8eb: 8d 0c 06 lea (%rsi,%rax,1),%ecx 0.00 : 4b8ee: 83 e1 3f and $0x3f,%ecx 0.00 : 4b8f1: 29 c1 sub %eax,%ecx 0.00 : 4b8f3: 8d 46 3f lea 0x3f(%rsi),%eax 0.00 : 4b8f6: 85 f6 test %esi,%esi 0.00 : 4b8f8: 0f 48 f0 cmovs %eax,%esi 0.00 : 4b8fb: c1 fe 06 sar $0x6,%esi 0.00 : 4b8fe: 48 63 fe movslq %esi,%rdi 0.00 : 4b901: 4c 89 e6 mov %r12,%rsi 0.00 : 4b904: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 4b908: 48 03 7d 80 add -0x80(%rbp),%rdi 0.00 : 4b90c: e8 7f 6c ff ff callq 42590 <__mpn_lshift> 0.00 : 4b911: 48 89 c1 mov %rax,%rcx 0.00 : 4b914: 89 d8 mov %ebx,%eax 0.00 : 4b916: 03 45 98 add -0x68(%rbp),%eax 0.00 : 4b919: 8d 50 3f lea 0x3f(%rax),%edx 0.00 : 4b91c: 85 c0 test %eax,%eax 0.00 : 4b91e: 0f 48 c2 cmovs %edx,%eax 0.00 : 4b921: c1 f8 06 sar $0x6,%eax 0.00 : 4b924: 48 63 d0 movslq %eax,%rdx 0.00 : 4b927: 48 03 55 88 add -0x78(%rbp),%rdx 0.00 : 4b92b: 48 85 c9 test %rcx,%rcx 0.00 : 4b92e: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.00 : 4b932: 74 0d je 4b941 <__printf_fp+0x1b91> 0.00 : 4b934: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4b938: 48 89 0c d0 mov %rcx,(%rax,%rdx,8) 0.00 : 4b93c: 48 83 45 88 01 addq $0x1,-0x78(%rbp) 0.00 : 4b941: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4b945: e9 3e f7 ff ff jmpq 4b088 <__printf_fp+0x12d8> 0.00 : 4b94a: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4b951: 44 88 85 70 fe ff ff mov %r8b,-0x190(%rbp) 0.00 : 4b958: e8 f3 fe 01 00 callq 6b850 <__woverflow> 0.00 : 4b95d: 83 c0 01 add $0x1,%eax 0.00 : 4b960: 44 0f b6 85 70 fe ff movzbl -0x190(%rbp),%r8d 0.00 : 4b967: ff 0.00 : 4b968: 0f 94 c1 sete %cl 0.00 : 4b96b: e9 23 e8 ff ff jmpq 4a193 <__printf_fp+0x3e3> 0.00 : 4b970: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 4b977: c7 00 30 00 00 00 movl $0x30,(%rax) 0.00 : 4b97d: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 4b984: 8b 8d f4 fe ff ff mov -0x10c(%rbp),%ecx 0.00 : 4b98a: 83 6d 98 01 subl $0x1,-0x68(%rbp) 0.00 : 4b98e: 49 89 d5 mov %rdx,%r13 0.00 : 4b991: 89 4a 0c mov %ecx,0xc(%rdx) 0.00 : 4b994: 49 83 c5 10 add $0x10,%r13 0.00 : 4b998: c7 85 48 ff ff ff 00 movl $0x0,-0xb8(%rbp) 0.00 : 4b99f: 00 00 00 0.00 : 4b9a2: e9 99 ee ff ff jmpq 4a840 <__printf_fp+0xa90> 0.00 : 4b9a7: 41 8b 45 fc mov -0x4(%r13),%eax 0.00 : 4b9ab: 3b 85 f4 fe ff ff cmp -0x10c(%rbp),%eax 0.00 : 4b9b1: 0f 84 9c 06 00 00 je 4c053 <__printf_fp+0x22a3> 0.00 : 4b9b7: a8 01 test $0x1,%al 0.00 : 4b9b9: 0f 85 23 ef ff ff jne 4a8e2 <__printf_fp+0xb32> 0.00 : 4b9bf: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b9c3: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 4b9c7: 0f 84 7e 07 00 00 je 4c14b <__printf_fp+0x239b> 0.00 : 4b9cd: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 4b9d2: 0f 85 0a ef ff ff jne 4a8e2 <__printf_fp+0xb32> 0.00 : 4b9d8: 48 85 d2 test %rdx,%rdx 0.00 : 4b9db: 48 89 d1 mov %rdx,%rcx 0.00 : 4b9de: 0f 84 9e ef ff ff je 4a982 <__printf_fp+0xbd2> 0.00 : 4b9e4: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4b9e8: 48 83 7c d0 f8 00 cmpq $0x0,-0x8(%rax,%rdx,8) 0.00 : 4b9ee: 0f 85 ee ee ff ff jne 4a8e2 <__printf_fp+0xb32> 0.00 : 4b9f4: 48 8d 54 d0 f0 lea -0x10(%rax,%rdx,8),%rdx 0.00 : 4b9f9: eb 15 jmp 4ba10 <__printf_fp+0x1c60> 0.00 : 4b9fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ba00: 48 8b 02 mov (%rdx),%rax 0.00 : 4ba03: 48 83 ea 08 sub $0x8,%rdx 0.00 : 4ba07: 48 85 c0 test %rax,%rax 0.00 : 4ba0a: 0f 85 d2 ee ff ff jne 4a8e2 <__printf_fp+0xb32> 0.00 : 4ba10: 48 83 e9 01 sub $0x1,%rcx 0.00 : 4ba14: 75 ea jne 4ba00 <__printf_fp+0x1c50> 0.00 : 4ba16: e9 67 ef ff ff jmpq 4a982 <__printf_fp+0xbd2> 0.00 : 4ba1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ba20: 48 8b 95 88 fe ff ff mov -0x178(%rbp),%rdx 0.00 : 4ba27: 48 89 c3 mov %rax,%rbx 0.00 : 4ba2a: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 4ba2e: 48 8b 00 mov (%rax),%rax 0.00 : 4ba31: 48 8b 40 58 mov 0x58(%rax),%rax 0.00 : 4ba35: 48 05 00 02 00 00 add $0x200,%rax 0.00 : 4ba3b: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 0.00 : 4ba3f: e9 c6 eb ff ff jmpq 4a60a <__printf_fp+0x85a> 0.00 : 4ba44: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4ba48: 89 d9 mov %ebx,%ecx 0.00 : 4ba4a: 4c 89 e6 mov %r12,%rsi 0.00 : 4ba4d: 48 8d 5d b0 lea -0x50(%rbp),%rbx 0.00 : 4ba51: 4c 8d 35 e0 8e 0e 00 lea 0xe8ee0(%rip),%r14 # 134938 <_fpioconst_pow10+0x138> 0.00 : 4ba58: 41 bf 0c 00 00 00 mov $0xc,%r15d 0.00 : 4ba5e: e8 2d 6b ff ff callq 42590 <__mpn_lshift> 0.00 : 4ba63: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4ba67: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 4ba6b: 48 89 04 d1 mov %rax,(%rcx,%rdx,8) 0.00 : 4ba6f: f7 5d 98 negl -0x68(%rbp) 0.00 : 4ba72: 48 83 45 88 01 addq $0x1,-0x78(%rbp) 0.00 : 4ba77: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4ba7b: c7 45 a0 01 00 00 00 movl $0x1,-0x60(%rbp) 0.00 : 4ba82: c7 85 28 ff ff ff 00 movl $0x0,-0xd8(%rbp) 0.00 : 4ba89: 00 00 00 0.00 : 4ba8c: 48 89 9d 78 fe ff ff mov %rbx,-0x188(%rbp) 0.00 : 4ba93: 49 83 ee 18 sub $0x18,%r14 0.00 : 4ba97: 45 39 46 14 cmp %r8d,0x14(%r14) 0.00 : 4ba9b: 0f 8f 4f 01 00 00 jg 4bbf0 <__printf_fp+0x1e40> 0.00 : 4baa1: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 4baa5: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4baa9: 48 83 e8 01 sub $0x1,%rax 0.00 : 4baad: 48 39 d0 cmp %rdx,%rax 0.00 : 4bab0: 0f 8e 8a 01 00 00 jle 4bc40 <__printf_fp+0x1e90> 0.00 : 4bab6: 49 8b 36 mov (%r14),%rsi 0.00 : 4bab9: 48 8d 1d 40 7f 0e 00 lea 0xe7f40(%rip),%rbx # 133a00 <__tens> 0.00 : 4bac0: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 4bac4: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 4bacb: 49 89 d0 mov %rdx,%r8 0.00 : 4bace: 48 89 c2 mov %rax,%rdx 0.00 : 4bad1: 48 8d 74 f3 08 lea 0x8(%rbx,%rsi,8),%rsi 0.00 : 4bad6: e8 e5 6b ff ff callq 426c0 <__mpn_mul> 0.00 : 4badb: 48 89 c2 mov %rax,%rdx 0.00 : 4bade: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 4bae2: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 4bae9: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4baed: 48 89 c8 mov %rcx,%rax 0.00 : 4baf0: 49 03 46 08 add 0x8(%r14),%rax 0.00 : 4baf4: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 4baf8: 48 83 e8 02 sub $0x2,%rax 0.00 : 4bafc: 48 85 d2 test %rdx,%rdx 0.00 : 4baff: 48 0f 44 d8 cmove %rax,%rbx 0.00 : 4bb03: 4c 8d 4b ff lea -0x1(%rbx),%r9 0.00 : 4bb07: 4a 0f bd 04 ce bsr (%rsi,%r9,8),%rax 0.00 : 4bb0c: 41 89 c5 mov %eax,%r13d 0.00 : 4bb0f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4bb14: 41 83 f5 3f xor $0x3f,%r13d 0.00 : 4bb18: 48 29 c8 sub %rcx,%rax 0.00 : 4bb1b: 48 01 d8 add %rbx,%rax 0.00 : 4bb1e: 44 89 ea mov %r13d,%edx 0.00 : 4bb21: 48 c1 e0 06 shl $0x6,%rax 0.00 : 4bb25: f7 d2 not %edx 0.00 : 4bb27: 44 8d 24 02 lea (%rdx,%rax,1),%r12d 0.00 : 4bb2b: 41 8d 40 03 lea 0x3(%r8),%eax 0.00 : 4bb2f: 44 39 e0 cmp %r12d,%eax 0.00 : 4bb32: 0f 84 8f 02 00 00 je 4bdc7 <__printf_fp+0x2017> 0.00 : 4bb38: 41 8d 40 02 lea 0x2(%r8),%eax 0.00 : 4bb3c: 41 39 c4 cmp %eax,%r12d 0.00 : 4bb3f: 0f 8f c3 00 00 00 jg 4bc08 <__printf_fp+0x1e58> 0.00 : 4bb45: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 4bb4c: 44 89 c2 mov %r8d,%edx 0.00 : 4bb4f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4bb54: 44 89 f9 mov %r15d,%ecx 0.00 : 4bb57: 44 29 e2 sub %r12d,%edx 0.00 : 4bb5a: d3 e0 shl %cl,%eax 0.00 : 4bb5c: 09 85 28 ff ff ff or %eax,-0xd8(%rbp) 0.00 : 4bb62: 85 d2 test %edx,%edx 0.00 : 4bb64: 89 55 98 mov %edx,-0x68(%rbp) 0.00 : 4bb67: 0f 88 ff 03 00 00 js 4bf6c <__printf_fp+0x21bc> 0.00 : 4bb6d: 48 8b 3e mov (%rsi),%rdi 0.00 : 4bb70: 49 89 f1 mov %rsi,%r9 0.00 : 4bb73: 48 85 ff test %rdi,%rdi 0.00 : 4bb76: 0f 85 02 06 00 00 jne 4c17e <__printf_fp+0x23ce> 0.00 : 4bb7c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4bb81: eb 08 jmp 4bb8b <__printf_fp+0x1ddb> 0.00 : 4bb83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4bb88: 48 89 ca mov %rcx,%rdx 0.00 : 4bb8b: 48 8b 3c d6 mov (%rsi,%rdx,8),%rdi 0.00 : 4bb8f: 89 d0 mov %edx,%eax 0.00 : 4bb91: 4c 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%r8 0.00 : 4bb98: 00 0.00 : 4bb99: 48 8d 4a 01 lea 0x1(%rdx),%rcx 0.00 : 4bb9d: 48 85 ff test %rdi,%rdi 0.00 : 4bba0: 74 e6 je 4bb88 <__printf_fp+0x1dd8> 0.00 : 4bba2: 41 83 fd 3f cmp $0x3f,%r13d 0.00 : 4bba6: 0f 85 7c 02 00 00 jne 4be28 <__printf_fp+0x2078> 0.00 : 4bbac: 48 98 cltq 0.00 : 4bbae: 48 89 df mov %rbx,%rdi 0.00 : 4bbb1: 48 29 c7 sub %rax,%rdi 0.00 : 4bbb4: 48 85 ff test %rdi,%rdi 0.00 : 4bbb7: 7e 2f jle 4bbe8 <__printf_fp+0x1e38> 0.00 : 4bbb9: 48 8d 34 d5 00 00 00 lea 0x0(,%rdx,8),%rsi 0.00 : 4bbc0: 00 0.00 : 4bbc1: 31 c9 xor %ecx,%ecx 0.00 : 4bbc3: eb 0a jmp 4bbcf <__printf_fp+0x1e1f> 0.00 : 4bbc5: 0f 1f 00 nopl (%rax) 0.00 : 4bbc8: 4c 8b 8d 78 ff ff ff mov -0x88(%rbp),%r9 0.00 : 4bbcf: 49 8b 14 31 mov (%r9,%rsi,1),%rdx 0.00 : 4bbd3: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4bbd7: 48 83 c6 08 add $0x8,%rsi 0.00 : 4bbdb: 48 89 14 c8 mov %rdx,(%rax,%rcx,8) 0.00 : 4bbdf: 48 83 c1 01 add $0x1,%rcx 0.00 : 4bbe3: 48 39 cf cmp %rcx,%rdi 0.00 : 4bbe6: 7f e0 jg 4bbc8 <__printf_fp+0x1e18> 0.00 : 4bbe8: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4bbec: 48 89 7d 88 mov %rdi,-0x78(%rbp) 0.00 : 4bbf0: 41 83 ff 01 cmp $0x1,%r15d 0.00 : 4bbf4: 74 74 je 4bc6a <__printf_fp+0x1eba> 0.00 : 4bbf6: 45 85 c0 test %r8d,%r8d 0.00 : 4bbf9: 0f 8e df 00 00 00 jle 4bcde <__printf_fp+0x1f2e> 0.00 : 4bbff: 41 83 ef 01 sub $0x1,%r15d 0.00 : 4bc03: e9 8b fe ff ff jmpq 4ba93 <__printf_fp+0x1ce3> 0.00 : 4bc08: 41 8d 40 03 lea 0x3(%r8),%eax 0.00 : 4bc0c: 44 39 e0 cmp %r12d,%eax 0.00 : 4bc0f: 90 nop 0.00 : 4bc10: 75 de jne 4bbf0 <__printf_fp+0x1e40> 0.00 : 4bc12: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 4bc19: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 4bc1d: 4a 39 14 ce cmp %rdx,(%rsi,%r9,8) 0.00 : 4bc21: 0f 82 25 ff ff ff jb 4bb4c <__printf_fp+0x1d9c> 0.00 : 4bc27: 75 c7 jne 4bbf0 <__printf_fp+0x1e40> 0.00 : 4bc29: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 4bc2d: 48 39 4c de f0 cmp %rcx,-0x10(%rsi,%rbx,8) 0.00 : 4bc32: 73 bc jae 4bbf0 <__printf_fp+0x1e40> 0.00 : 4bc34: e9 13 ff ff ff jmpq 4bb4c <__printf_fp+0x1d9c> 0.00 : 4bc39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4bc40: 49 8b 0e mov (%r14),%rcx 0.00 : 4bc43: 48 8d 35 b6 7d 0e 00 lea 0xe7db6(%rip),%rsi # 133a00 <__tens> 0.00 : 4bc4a: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 4bc51: 49 89 c0 mov %rax,%r8 0.00 : 4bc54: 48 8d 4c ce 08 lea 0x8(%rsi,%rcx,8),%rcx 0.00 : 4bc59: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 4bc5d: e8 5e 6a ff ff callq 426c0 <__mpn_mul> 0.00 : 4bc62: 48 89 c2 mov %rax,%rdx 0.00 : 4bc65: e9 74 fe ff ff jmpq 4bade <__printf_fp+0x1d2e> 0.00 : 4bc6a: 45 85 c0 test %r8d,%r8d 0.00 : 4bc6d: 7e 6f jle 4bcde <__printf_fp+0x1f2e> 0.00 : 4bc6f: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4bc73: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 4bc77: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 4bc7c: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : 4bc83: e8 b8 6d ff ff callq 42a40 <__mpn_mul_1> 0.00 : 4bc88: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 4bc8f: ba 04 00 00 00 mov $0x4,%edx 0.00 : 4bc94: 48 8b 5d 88 mov -0x78(%rbp),%rbx 0.00 : 4bc98: 48 0f bc 06 bsf (%rsi),%rax 0.00 : 4bc9c: 83 7d 98 04 cmpl $0x4,-0x68(%rbp) 0.00 : 4bca0: 0f 4e 55 98 cmovle -0x68(%rbp),%edx 0.00 : 4bca4: 39 d0 cmp %edx,%eax 0.00 : 4bca6: 0f 8d c9 03 00 00 jge 4c075 <__printf_fp+0x22c5> 0.00 : 4bcac: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4bcb0: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 4bcb5: 29 d1 sub %edx,%ecx 0.00 : 4bcb7: 48 89 da mov %rbx,%rdx 0.00 : 4bcba: e8 d1 68 ff ff callq 42590 <__mpn_lshift> 0.00 : 4bcbf: 48 85 c0 test %rax,%rax 0.00 : 4bcc2: 48 89 c2 mov %rax,%rdx 0.00 : 4bcc5: 74 0c je 4bcd3 <__printf_fp+0x1f23> 0.00 : 4bcc7: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4bccb: 48 89 14 d8 mov %rdx,(%rax,%rbx,8) 0.00 : 4bccf: 48 83 c3 01 add $0x1,%rbx 0.00 : 4bcd3: 83 8d 28 ff ff ff 01 orl $0x1,-0xd8(%rbp) 0.00 : 4bcda: 48 89 5d 88 mov %rbx,-0x78(%rbp) 0.00 : 4bcde: 8b 9d 28 ff ff ff mov -0xd8(%rbp),%ebx 0.00 : 4bce4: 89 5d 98 mov %ebx,-0x68(%rbp) 0.00 : 4bce7: e9 f5 e8 ff ff jmpq 4a5e1 <__printf_fp+0x831> 0.00 : 4bcec: c7 85 54 ff ff ff 06 movl $0x6,-0xac(%rbp) 0.00 : 4bcf3: 00 00 00 0.00 : 4bcf6: e9 70 e9 ff ff jmpq 4a66b <__printf_fp+0x8bb> 0.00 : 4bcfb: 44 8b b5 e0 fe ff ff mov -0x120(%rbp),%r14d 0.00 : 4bd02: 45 85 f6 test %r14d,%r14d 0.00 : 4bd05: 0f 8e 8d ee ff ff jle 4ab98 <__printf_fp+0xde8> 0.00 : 4bd0b: 8b 9d 14 ff ff ff mov -0xec(%rbp),%ebx 0.00 : 4bd11: 85 db test %ebx,%ebx 0.00 : 4bd13: 0f 84 8e 00 00 00 je 4bda7 <__printf_fp+0x1ff7> 0.00 : 4bd19: 48 63 9d e0 fe ff ff movslq -0x120(%rbp),%rbx 0.00 : 4bd20: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4bd27: be 30 00 00 00 mov $0x30,%esi 0.00 : 4bd2c: 48 89 da mov %rbx,%rdx 0.00 : 4bd2f: e8 ec e7 01 00 callq 6a520 <_IO_wpadn> 0.00 : 4bd34: 48 39 d8 cmp %rbx,%rax 0.00 : 4bd37: 0f 85 3f f8 ff ff jne 4b57c <__printf_fp+0x17cc> 0.00 : 4bd3d: 44 03 a5 e0 fe ff ff add -0x120(%rbp),%r12d 0.00 : 4bd44: e9 4f ee ff ff jmpq 4ab98 <__printf_fp+0xde8> 0.00 : 4bd49: 4c 89 ee mov %r13,%rsi 0.00 : 4bd4c: 0f 84 56 f6 ff ff je 4b3a8 <__printf_fp+0x15f8> 0.00 : 4bd52: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 4bd56: e9 f1 eb ff ff jmpq 4a94c <__printf_fp+0xb9c> 0.00 : 4bd5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4bd60: 48 63 9d e0 fe ff ff movslq -0x120(%rbp),%rbx 0.00 : 4bd67: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4bd6e: 48 89 da mov %rbx,%rdx 0.00 : 4bd71: e8 ca c4 01 00 callq 68240 <_IO_padn> 0.00 : 4bd76: e9 9c ed ff ff jmpq 4ab17 <__printf_fp+0xd67> 0.00 : 4bd7b: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 4bd82: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 4bd86: 48 3b 42 30 cmp 0x30(%rdx),%rax 0.00 : 4bd8a: 0f 83 42 06 00 00 jae 4c3d2 <__printf_fp+0x2622> 0.00 : 4bd90: c6 00 2b movb $0x2b,(%rax) 0.00 : 4bd93: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4bd9a: 48 83 c0 01 add $0x1,%rax 0.00 : 4bd9e: 48 89 41 28 mov %rax,0x28(%rcx) 0.00 : 4bda2: e9 06 f1 ff ff jmpq 4aead <__printf_fp+0x10fd> 0.00 : 4bda7: 48 63 9d e0 fe ff ff movslq -0x120(%rbp),%rbx 0.00 : 4bdae: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4bdb5: be 30 00 00 00 mov $0x30,%esi 0.00 : 4bdba: 48 89 da mov %rbx,%rdx 0.00 : 4bdbd: e8 7e c4 01 00 callq 68240 <_IO_padn> 0.00 : 4bdc2: e9 6d ff ff ff jmpq 4bd34 <__printf_fp+0x1f84> 0.00 : 4bdc7: 41 83 fd 3c cmp $0x3c,%r13d 0.00 : 4bdcb: 0f 8f b7 02 00 00 jg 4c088 <__printf_fp+0x22d8> 0.00 : 4bdd1: b9 3c 00 00 00 mov $0x3c,%ecx 0.00 : 4bdd6: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 4bddb: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 4bde2: 00 0.00 : 4bde3: 44 29 e9 sub %r13d,%ecx 0.00 : 4bde6: 48 d3 e0 shl %cl,%rax 0.00 : 4bde9: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 4bded: e9 46 fd ff ff jmpq 4bb38 <__printf_fp+0x1d88> 0.00 : 4bdf2: 8b b5 50 ff ff ff mov -0xb0(%rbp),%esi 0.00 : 4bdf8: 48 83 c2 02 add $0x2,%rdx 0.00 : 4bdfc: c7 85 44 ff ff ff 01 movl $0x1,-0xbc(%rbp) 0.00 : 4be03: 00 00 00 0.00 : 4be06: 48 89 95 38 ff ff ff mov %rdx,-0xc8(%rbp) 0.00 : 4be0d: c7 85 54 ff ff ff ff movl $0x7fffffff,-0xac(%rbp) 0.00 : 4be14: ff ff 7f 0.00 : 4be17: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4be1d: 89 b5 4c ff ff ff mov %esi,-0xb4(%rbp) 0.00 : 4be23: e9 b1 e8 ff ff jmpq 4a6d9 <__printf_fp+0x929> 0.00 : 4be28: 48 0f bc ff bsf %rdi,%rdi 0.00 : 4be2c: 85 c0 test %eax,%eax 0.00 : 4be2e: 0f 85 6c 01 00 00 jne 4bfa0 <__printf_fp+0x21f0> 0.00 : 4be34: b9 3f 00 00 00 mov $0x3f,%ecx 0.00 : 4be39: 44 29 e9 sub %r13d,%ecx 0.00 : 4be3c: 39 cf cmp %ecx,%edi 0.00 : 4be3e: 0f 8c 46 03 00 00 jl 4c18a <__printf_fp+0x23da> 0.00 : 4be44: 48 98 cltq 0.00 : 4be46: 4c 01 c6 add %r8,%rsi 0.00 : 4be49: 48 29 c3 sub %rax,%rbx 0.00 : 4be4c: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4be50: 48 89 da mov %rbx,%rdx 0.00 : 4be53: e8 a8 67 ff ff callq 42600 <__mpn_rshift> 0.00 : 4be58: 48 89 5d 88 mov %rbx,-0x78(%rbp) 0.00 : 4be5c: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4be60: e9 8b fd ff ff jmpq 4bbf0 <__printf_fp+0x1e40> 0.00 : 4be65: 45 85 ff test %r15d,%r15d 0.00 : 4be68: 0f 8e ca ea ff ff jle 4a938 <__printf_fp+0xb88> 0.00 : 4be6e: 41 83 ef 01 sub $0x1,%r15d 0.00 : 4be72: 44 89 bd 6c ff ff ff mov %r15d,-0x94(%rbp) 0.00 : 4be79: e9 ba ea ff ff jmpq 4a938 <__printf_fp+0xb88> 0.00 : 4be7e: c7 85 50 ff ff ff 06 movl $0x6,-0xb0(%rbp) 0.00 : 4be85: 00 00 00 0.00 : 4be88: 48 c7 85 38 ff ff ff movq $0xe,-0xc8(%rbp) 0.00 : 4be8f: 0e 00 00 00 0.00 : 4be93: e9 94 f4 ff ff jmpq 4b32c <__printf_fp+0x157c> 0.00 : 4be98: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4be9c: 4a 0f bc 0c 30 bsf (%rax,%r14,1),%rcx 0.00 : 4bea1: e9 31 f9 ff ff jmpq 4b7d7 <__printf_fp+0x1a27> 0.00 : 4bea6: 41 bf 40 00 00 00 mov $0x40,%r15d 0.00 : 4beac: 41 29 df sub %ebx,%r15d 0.00 : 4beaf: 44 39 f9 cmp %r15d,%ecx 0.00 : 4beb2: 0f 8d 3a f9 ff ff jge 4b7f2 <__printf_fp+0x1a42> 0.00 : 4beb8: 41 8d 5d ff lea -0x1(%r13),%ebx 0.00 : 4bebc: 4c 8d 34 d5 f8 ff ff lea -0x8(,%rdx,8),%r14 0.00 : 4bec3: ff 0.00 : 4bec4: 44 89 f9 mov %r15d,%ecx 0.00 : 4bec7: 4d 63 e5 movslq %r13d,%r12 0.00 : 4beca: 48 63 db movslq %ebx,%rbx 0.00 : 4becd: 4a 8d 34 37 lea (%rdi,%r14,1),%rsi 0.00 : 4bed1: 49 29 d9 sub %rbx,%r9 0.00 : 4bed4: 4c 89 ca mov %r9,%rdx 0.00 : 4bed7: e8 24 67 ff ff callq 42600 <__mpn_rshift> 0.00 : 4bedc: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4bee0: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4bee4: 44 89 f9 mov %r15d,%ecx 0.00 : 4bee7: 4c 29 65 90 sub %r12,-0x70(%rbp) 0.00 : 4beeb: 4a 8d 34 37 lea (%rdi,%r14,1),%rsi 0.00 : 4beef: 48 29 da sub %rbx,%rdx 0.00 : 4bef2: e8 09 67 ff ff callq 42600 <__mpn_rshift> 0.00 : 4bef7: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 4befb: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 4beff: 48 89 c2 mov %rax,%rdx 0.00 : 4bf02: 4c 29 e0 sub %r12,%rax 0.00 : 4bf05: 48 29 da sub %rbx,%rdx 0.00 : 4bf08: 48 83 7c d1 f8 00 cmpq $0x0,-0x8(%rcx,%rdx,8) 0.00 : 4bf0e: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 4bf12: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.00 : 4bf16: e9 c6 e6 ff ff jmpq 4a5e1 <__printf_fp+0x831> 0.00 : 4bf1b: 0f b6 f2 movzbl %dl,%esi 0.00 : 4bf1e: 48 89 cf mov %rcx,%rdi 0.00 : 4bf21: 44 88 85 70 fe ff ff mov %r8b,-0x190(%rbp) 0.00 : 4bf28: e8 73 7e 02 00 callq 73da0 <__overflow> 0.00 : 4bf2d: 83 c0 01 add $0x1,%eax 0.00 : 4bf30: 44 0f b6 85 70 fe ff movzbl -0x190(%rbp),%r8d 0.00 : 4bf37: ff 0.00 : 4bf38: 0f 85 f5 e2 ff ff jne 4a233 <__printf_fp+0x483> 0.00 : 4bf3e: e9 2d e3 ff ff jmpq 4a270 <__printf_fp+0x4c0> 0.00 : 4bf43: 4c 89 e2 mov %r12,%rdx 0.00 : 4bf46: 4d 89 e5 mov %r12,%r13 0.00 : 4bf49: c7 85 48 ff ff ff 00 movl $0x0,-0xb8(%rbp) 0.00 : 4bf50: 00 00 00 0.00 : 4bf53: e9 bb e8 ff ff jmpq 4a813 <__printf_fp+0xa63> 0.00 : 4bf58: c7 85 50 ff ff ff 06 movl $0x6,-0xb0(%rbp) 0.00 : 4bf5f: 00 00 00 0.00 : 4bf62: ba 06 00 00 00 mov $0x6,%edx 0.00 : 4bf67: e9 ec f7 ff ff jmpq 4b758 <__printf_fp+0x19a8> 0.00 : 4bf6c: 41 29 d5 sub %edx,%r13d 0.00 : 4bf6f: e9 f9 fb ff ff jmpq 4bb6d <__printf_fp+0x1dbd> 0.00 : 4bf74: 48 8b 95 a8 fe ff ff mov -0x158(%rbp),%rdx 0.00 : 4bf7b: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 4bf7f: 48 3b 42 30 cmp 0x30(%rdx),%rax 0.00 : 4bf83: 0f 83 34 04 00 00 jae 4c3bd <__printf_fp+0x260d> 0.00 : 4bf89: c6 00 20 movb $0x20,(%rax) 0.00 : 4bf8c: 48 8b 8d a8 fe ff ff mov -0x158(%rbp),%rcx 0.00 : 4bf93: 48 83 c0 01 add $0x1,%rax 0.00 : 4bf97: 48 89 41 28 mov %rax,0x28(%rcx) 0.00 : 4bf9b: e9 0d ef ff ff jmpq 4aead <__printf_fp+0x10fd> 0.00 : 4bfa0: b9 3f 00 00 00 mov $0x3f,%ecx 0.00 : 4bfa5: 44 29 e9 sub %r13d,%ecx 0.00 : 4bfa8: 39 cf cmp %ecx,%edi 0.00 : 4bfaa: 0f 8d 94 fe ff ff jge 4be44 <__printf_fp+0x2094> 0.00 : 4bfb0: 83 e8 01 sub $0x1,%eax 0.00 : 4bfb3: 48 8d 74 d6 f8 lea -0x8(%rsi,%rdx,8),%rsi 0.00 : 4bfb8: 48 98 cltq 0.00 : 4bfba: 48 29 c3 sub %rax,%rbx 0.00 : 4bfbd: e9 8a fe ff ff jmpq 4be4c <__printf_fp+0x209c> 0.00 : 4bfc2: 80 bd 5f ff ff ff 67 cmpb $0x67,-0xa1(%rbp) 0.00 : 4bfc9: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 4bfcf: 48 89 ce mov %rcx,%rsi 0.00 : 4bfd2: 0f 85 74 e9 ff ff jne 4a94c <__printf_fp+0xb9c> 0.00 : 4bfd8: 83 7d 9c 66 cmpl $0x66,-0x64(%rbp) 0.00 : 4bfdc: 0f 85 6a e9 ff ff jne 4a94c <__printf_fp+0xb9c> 0.00 : 4bfe2: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 4bfe9: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 4bfef: f6 42 0c 08 testb $0x8,0xc(%rdx) 0.00 : 4bff3: 0f 84 53 e9 ff ff je 4a94c <__printf_fp+0xb9c> 0.00 : 4bff9: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 4c000: 48 83 c6 04 add $0x4,%rsi 0.00 : 4c004: 48 39 ce cmp %rcx,%rsi 0.00 : 4c007: 0f 84 f6 03 00 00 je 4c403 <__printf_fp+0x2653> 0.00 : 4c00d: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 4c013: 48 89 ce mov %rcx,%rsi 0.00 : 4c016: e9 31 e9 ff ff jmpq 4a94c <__printf_fp+0xb9c> 0.00 : 4c01b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4c020: 8b 85 54 ff ff ff mov -0xac(%rbp),%eax 0.00 : 4c026: 39 85 48 ff ff ff cmp %eax,-0xb8(%rbp) 0.00 : 4c02c: 0f 84 81 01 00 00 je 4c1b3 <__printf_fp+0x2403> 0.00 : 4c032: 48 83 ad 30 ff ff ff subq $0x4,-0xd0(%rbp) 0.00 : 4c039: 04 0.00 : 4c03a: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax 0.00 : 4c041: c7 00 31 00 00 00 movl $0x31,(%rax) 0.00 : 4c047: 83 85 48 ff ff ff 01 addl $0x1,-0xb8(%rbp) 0.00 : 4c04e: e9 53 f8 ff ff jmpq 4b8a6 <__printf_fp+0x1af6> 0.00 : 4c053: 41 f6 45 f8 01 testb $0x1,-0x8(%r13) 0.00 : 4c058: 0f 85 84 e8 ff ff jne 4a8e2 <__printf_fp+0xb32> 0.00 : 4c05e: e9 5c f9 ff ff jmpq 4b9bf <__printf_fp+0x1c0f> 0.00 : 4c063: 41 c7 45 08 30 00 00 movl $0x30,0x8(%r13) 0.00 : 4c06a: 00 0.00 : 4c06b: 49 8d 7d 0c lea 0xc(%r13),%rdi 0.00 : 4c06f: 90 nop 0.00 : 4c070: e9 12 ea ff ff jmpq 4aa87 <__printf_fp+0xcd7> 0.00 : 4c075: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4c079: 89 d1 mov %edx,%ecx 0.00 : 4c07b: 48 89 da mov %rbx,%rdx 0.00 : 4c07e: e8 7d 65 ff ff callq 42600 <__mpn_rshift> 0.00 : 4c083: e9 4b fc ff ff jmpq 4bcd3 <__printf_fp+0x1f23> 0.00 : 4c088: 48 8b b5 78 fe ff ff mov -0x188(%rbp),%rsi 0.00 : 4c08f: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 4c094: 48 b8 00 00 00 00 00 movabs $0xa000000000000000,%rax 0.00 : 4c09b: 00 00 a0 0.00 : 4c09e: 44 29 e9 sub %r13d,%ecx 0.00 : 4c0a1: ba 02 00 00 00 mov $0x2,%edx 0.00 : 4c0a6: 4c 89 8d 68 fe ff ff mov %r9,-0x198(%rbp) 0.00 : 4c0ad: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 4c0b1: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4c0b8: 00 0.00 : 4c0b9: 48 89 f7 mov %rsi,%rdi 0.00 : 4c0bc: e8 cf 64 ff ff callq 42590 <__mpn_lshift> 0.00 : 4c0c1: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4c0c5: 4c 8b 8d 68 fe ff ff mov -0x198(%rbp),%r9 0.00 : 4c0cc: e9 67 fa ff ff jmpq 4bb38 <__printf_fp+0x1d88> 0.00 : 4c0d1: 31 d2 xor %edx,%edx 0.00 : 4c0d3: e9 54 e8 ff ff jmpq 4a92c <__printf_fp+0xb7c> 0.00 : 4c0d8: 45 31 ed xor %r13d,%r13d 0.00 : 4c0db: 31 d2 xor %edx,%edx 0.00 : 4c0dd: 45 31 f6 xor %r14d,%r14d 0.00 : 4c0e0: e9 75 f1 ff ff jmpq 4b25a <__printf_fp+0x14aa> 0.00 : 4c0e5: 4c 89 ca mov %r9,%rdx 0.00 : 4c0e8: 48 89 fe mov %rdi,%rsi 0.00 : 4c0eb: 89 d9 mov %ebx,%ecx 0.00 : 4c0ed: e8 9e 64 ff ff callq 42590 <__mpn_lshift> 0.00 : 4c0f2: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4c0f6: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4c0fa: 89 d9 mov %ebx,%ecx 0.00 : 4c0fc: 48 89 fe mov %rdi,%rsi 0.00 : 4c0ff: e8 8c 64 ff ff callq 42590 <__mpn_lshift> 0.00 : 4c104: 48 85 c0 test %rax,%rax 0.00 : 4c107: 48 89 c1 mov %rax,%rcx 0.00 : 4c10a: 0f 84 d1 e4 ff ff je 4a5e1 <__printf_fp+0x831> 0.00 : 4c110: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 4c114: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4c118: 48 89 0c c2 mov %rcx,(%rdx,%rax,8) 0.00 : 4c11c: 48 83 45 88 01 addq $0x1,-0x78(%rbp) 0.00 : 4c121: e9 bb e4 ff ff jmpq 4a5e1 <__printf_fp+0x831> 0.00 : 4c126: 48 0f bc c0 bsf %rax,%rax 0.00 : 4c12a: 39 c1 cmp %eax,%ecx 0.00 : 4c12c: 0f 4f c8 cmovg %eax,%ecx 0.00 : 4c12f: e9 a3 f6 ff ff jmpq 4b7d7 <__printf_fp+0x1a27> 0.00 : 4c134: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4c13b: e8 10 f7 01 00 callq 6b850 <__woverflow> 0.00 : 4c140: 83 c0 01 add $0x1,%eax 0.00 : 4c143: 0f 94 c1 sete %cl 0.00 : 4c146: e9 af f5 ff ff jmpq 4b6fa <__printf_fp+0x194a> 0.00 : 4c14b: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 4c14f: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 4c153: 0f 84 29 e8 ff ff je 4a982 <__printf_fp+0xbd2> 0.00 : 4c159: e9 6f f8 ff ff jmpq 4b9cd <__printf_fp+0x1c1d> 0.00 : 4c15e: 48 8b 05 d3 5c 32 00 mov 0x325cd3(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 4c165: 48 8b 95 80 fe ff ff mov -0x180(%rbp),%rdx 0.00 : 4c16c: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 4c172: c7 04 02 22 00 00 00 movl $0x22,(%rdx,%rax,1) 0.00 : 4c179: e9 72 e0 ff ff jmpq 4a1f0 <__printf_fp+0x440> 0.00 : 4c17e: 31 c0 xor %eax,%eax 0.00 : 4c180: 31 d2 xor %edx,%edx 0.00 : 4c182: 45 31 c0 xor %r8d,%r8d 0.00 : 4c185: e9 18 fa ff ff jmpq 4bba2 <__printf_fp+0x1df2> 0.00 : 4c18a: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 4c18e: 41 8d 4d 01 lea 0x1(%r13),%ecx 0.00 : 4c192: 48 89 da mov %rbx,%rdx 0.00 : 4c195: e8 f6 63 ff ff callq 42590 <__mpn_lshift> 0.00 : 4c19a: 48 8d 53 01 lea 0x1(%rbx),%rdx 0.00 : 4c19e: 48 89 55 88 mov %rdx,-0x78(%rbp) 0.00 : 4c1a2: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4c1a6: 48 89 04 da mov %rax,(%rdx,%rbx,8) 0.00 : 4c1aa: 44 8b 45 98 mov -0x68(%rbp),%r8d 0.00 : 4c1ae: e9 3d fa ff ff jmpq 4bbf0 <__printf_fp+0x1e40> 0.00 : 4c1b3: 8b 8d f4 fe ff ff mov -0x10c(%rbp),%ecx 0.00 : 4c1b9: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 4c1c0: 89 4a fc mov %ecx,-0x4(%rdx) 0.00 : 4c1c3: 48 8b 9d 18 ff ff ff mov -0xe8(%rbp),%rbx 0.00 : 4c1ca: c7 03 31 00 00 00 movl $0x31,(%rbx) 0.00 : 4c1d0: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 4c1d7: f6 46 0c 08 testb $0x8,0xc(%rsi) 0.00 : 4c1db: 75 05 jne 4c1e2 <__printf_fp+0x2432> 0.00 : 4c1dd: 45 85 e4 test %r12d,%r12d 0.00 : 4c1e0: 7e 1a jle 4c1fc <__printf_fp+0x244c> 0.00 : 4c1e2: 48 63 85 48 ff ff ff movslq -0xb8(%rbp),%rax 0.00 : 4c1e9: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 4c1f0: 41 83 c4 01 add $0x1,%r12d 0.00 : 4c1f4: c7 44 82 08 30 00 00 movl $0x30,0x8(%rdx,%rax,4) 0.00 : 4c1fb: 00 0.00 : 4c1fc: 48 8b 0d cd 5b 32 00 mov 0x325bcd(%rip),%rcx # 371dd0 <_DYNAMIC+0x270> 0.00 : 4c203: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 4c20a: 83 45 98 01 addl $0x1,-0x68(%rbp) 0.00 : 4c20e: 48 83 3c 0b 00 cmpq $0x0,(%rbx,%rcx,1) 0.00 : 4c213: 0f 84 83 01 00 00 je 4c39c <__printf_fp+0x25ec> 0.00 : 4c219: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 4c220: 48 8b 9d 80 fe ff ff mov -0x180(%rbp),%rbx 0.00 : 4c227: 48 8b b5 18 ff ff ff mov -0xe8(%rbp),%rsi 0.00 : 4c22e: 48 63 50 08 movslq 0x8(%rax),%rdx 0.00 : 4c232: 48 8b 04 0b mov (%rbx,%rcx,1),%rax 0.00 : 4c236: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 4c23a: 48 89 b5 30 ff ff ff mov %rsi,-0xd0(%rbp) 0.00 : 4c241: 25 00 01 00 00 and $0x100,%eax 0.00 : 4c246: 83 f8 01 cmp $0x1,%eax 0.00 : 4c249: 19 c0 sbb %eax,%eax 0.00 : 4c24b: 44 03 a5 48 ff ff ff add -0xb8(%rbp),%r12d 0.00 : 4c252: c7 85 48 ff ff ff 01 movl $0x1,-0xb8(%rbp) 0.00 : 4c259: 00 00 00 0.00 : 4c25c: 83 e0 20 and $0x20,%eax 0.00 : 4c25f: 83 c0 45 add $0x45,%eax 0.00 : 4c262: 89 45 9c mov %eax,-0x64(%rbp) 0.00 : 4c265: e9 3c f6 ff ff jmpq 4b8a6 <__printf_fp+0x1af6> 0.00 : 4c26a: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 4c271: 48 89 fe mov %rdi,%rsi 0.00 : 4c274: 4c 89 ff mov %r15,%rdi 0.00 : 4c277: e8 94 d8 ff ff callq 49b10 <_i18n_number_rewrite> 0.00 : 4c27c: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 4c283: 49 89 c6 mov %rax,%r14 0.00 : 4c286: e9 49 ea ff ff jmpq 4acd4 <__printf_fp+0xf24> 0.00 : 4c28b: 4c 89 ff mov %r15,%rdi 0.00 : 4c28e: e8 0d 26 fd ff callq 1e8a0 0.00 : 4c293: 48 8b bd 18 ff ff ff mov -0xe8(%rbp),%rdi 0.00 : 4c29a: e8 01 26 fd ff callq 1e8a0 0.00 : 4c29f: e9 af ea ff ff jmpq 4ad53 <__printf_fp+0xfa3> 0.00 : 4c2a4: 48 89 df mov %rbx,%rdi 0.00 : 4c2a7: e8 a4 25 fd ff callq 1e850 0.00 : 4c2ac: 48 85 c0 test %rax,%rax 0.00 : 4c2af: 49 89 c7 mov %rax,%r15 0.00 : 4c2b2: 0f 85 93 e9 ff ff jne 4ac4b <__printf_fp+0xe9b> 0.00 : 4c2b8: e9 cd f2 ff ff jmpq 4b58a <__printf_fp+0x17da> 0.00 : 4c2bd: 0f 1f 00 nopl (%rax) 0.00 : 4c2c0: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 4c2c5: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4c2cc: 44 88 85 70 fe ff ff mov %r8b,-0x190(%rbp) 0.00 : 4c2d3: e8 78 f5 01 00 callq 6b850 <__woverflow> 0.00 : 4c2d8: 83 c0 01 add $0x1,%eax 0.00 : 4c2db: 44 0f b6 85 70 fe ff movzbl -0x190(%rbp),%r8d 0.00 : 4c2e2: ff 0.00 : 4c2e3: 0f 94 c0 sete %al 0.00 : 4c2e6: e9 7d df ff ff jmpq 4a268 <__printf_fp+0x4b8> 0.00 : 4c2eb: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4c2f0: eb d3 jmp 4c2c5 <__printf_fp+0x2515> 0.00 : 4c2f2: be 20 00 00 00 mov $0x20,%esi 0.00 : 4c2f7: eb cc jmp 4c2c5 <__printf_fp+0x2515> 0.00 : 4c2f9: 83 7d 98 04 cmpl $0x4,-0x68(%rbp) 0.00 : 4c2fd: 0f 1f 00 nopl (%rax) 0.00 : 4c300: 0f 85 08 e7 ff ff jne 4aa0e <__printf_fp+0xc5e> 0.00 : 4c306: 80 bd 5f ff ff ff 67 cmpb $0x67,-0xa1(%rbp) 0.00 : 4c30d: 0f 85 fb e6 ff ff jne 4aa0e <__printf_fp+0xc5e> 0.00 : 4c313: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 4c31a: 48 8d 35 57 73 0f 00 lea 0xf7357(%rip),%rsi # 143678 0.00 : 4c321: ba 06 00 00 00 mov $0x6,%edx 0.00 : 4c326: e8 35 05 04 00 callq 8c860 0.00 : 4c32b: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 4c331: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi 0.00 : 4c338: 89 46 04 mov %eax,0x4(%rsi) 0.00 : 4c33b: 48 89 f0 mov %rsi,%rax 0.00 : 4c33e: 48 83 c0 08 add $0x8,%rax 0.00 : 4c342: 49 39 c5 cmp %rax,%r13 0.00 : 4c345: 0f 83 e0 00 00 00 jae 4c42b <__printf_fp+0x267b> 0.00 : 4c34b: 49 83 c5 14 add $0x14,%r13 0.00 : 4c34f: e9 3f e7 ff ff jmpq 4aa93 <__printf_fp+0xce3> 0.00 : 4c354: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4c358: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4c35f: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 4c364: e8 e7 f4 01 00 callq 6b850 <__woverflow> 0.00 : 4c369: 83 c0 01 add $0x1,%eax 0.00 : 4c36c: 0f 94 c0 sete %al 0.00 : 4c36f: 84 c0 test %al,%al 0.00 : 4c371: 0f 85 05 f2 ff ff jne 4b57c <__printf_fp+0x17cc> 0.00 : 4c377: e9 31 eb ff ff jmpq 4aead <__printf_fp+0x10fd> 0.00 : 4c37c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4c380: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4c387: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4c38c: e8 0f 7a 02 00 callq 73da0 <__overflow> 0.00 : 4c391: 83 c0 01 add $0x1,%eax 0.00 : 4c394: 0f 94 c0 sete %al 0.00 : 4c397: e9 d8 f1 ff ff jmpq 4b574 <__printf_fp+0x17c4> 0.00 : 4c39c: 48 8b b5 88 fe ff ff mov -0x178(%rbp),%rsi 0.00 : 4c3a3: 48 8b 04 33 mov (%rbx,%rsi,1),%rax 0.00 : 4c3a7: 48 8b 00 mov (%rax),%rax 0.00 : 4c3aa: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 4c3ae: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 4c3b4: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 0.00 : 4c3b8: e9 5c fe ff ff jmpq 4c219 <__printf_fp+0x2469> 0.00 : 4c3bd: be 20 00 00 00 mov $0x20,%esi 0.00 : 4c3c2: 48 89 d7 mov %rdx,%rdi 0.00 : 4c3c5: e8 d6 79 02 00 callq 73da0 <__overflow> 0.00 : 4c3ca: 83 c0 01 add $0x1,%eax 0.00 : 4c3cd: 0f 94 c0 sete %al 0.00 : 4c3d0: eb 9d jmp 4c36f <__printf_fp+0x25bf> 0.00 : 4c3d2: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 4c3d7: 48 89 d7 mov %rdx,%rdi 0.00 : 4c3da: e8 c1 79 02 00 callq 73da0 <__overflow> 0.00 : 4c3df: 83 c0 01 add $0x1,%eax 0.00 : 4c3e2: 0f 94 c0 sete %al 0.00 : 4c3e5: eb 88 jmp 4c36f <__printf_fp+0x25bf> 0.00 : 4c3e7: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 4c3ee: be 20 00 00 00 mov $0x20,%esi 0.00 : 4c3f3: e8 58 f4 01 00 callq 6b850 <__woverflow> 0.00 : 4c3f8: 83 c0 01 add $0x1,%eax 0.00 : 4c3fb: 0f 94 c0 sete %al 0.00 : 4c3fe: e9 6c ff ff ff jmpq 4c36f <__printf_fp+0x25bf> 0.00 : 4c403: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 4c40a: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 4c410: 83 39 30 cmpl $0x30,(%rcx) 0.00 : 4c413: 0f 85 33 e5 ff ff jne 4a94c <__printf_fp+0xb9c> 0.00 : 4c419: 83 ad 6c ff ff ff 01 subl $0x1,-0x94(%rbp) 0.00 : 4c420: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 4c426: e9 21 e5 ff ff jmpq 4a94c <__printf_fp+0xb9c> 0.00 : 4c42b: 4c 89 ea mov %r13,%rdx 0.00 : 4c42e: 48 89 f7 mov %rsi,%rdi 0.00 : 4c431: be 30 00 00 00 mov $0x30,%esi 0.00 : 4c436: 48 29 c2 sub %rax,%rdx 0.00 : 4c439: 48 83 c7 18 add $0x18,%rdi 0.00 : 4c43d: 49 83 c5 10 add $0x10,%r13 0.00 : 4c441: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 4c445: e8 36 04 04 00 callq 8c880 0.00 : 4c44a: e9 44 e6 ff ff jmpq 4aa93 <__printf_fp+0xce3> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000066110 <_IO_file_doallocate>: 0.00 : 66110: 55 push %rbp ??:0 50.00 : 66111: 48 89 fd mov %rdi,%rbp 0.00 : 66114: 53 push %rbx 0.00 : 66115: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 6611c: 8b 47 70 mov 0x70(%rdi),%eax 0.00 : 6611f: 85 c0 test %eax,%eax 0.00 : 66121: 78 45 js 66168 <_IO_file_doallocate+0x58> 50.00 : 66123: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 6612a: 48 89 e6 mov %rsp,%rsi 0.00 : 6612d: ff 90 90 00 00 00 callq *0x90(%rax) 0.00 : 66133: 85 c0 test %eax,%eax 0.00 : 66135: 78 31 js 66168 <_IO_file_doallocate+0x58> 0.00 : 66137: 8b 44 24 18 mov 0x18(%rsp),%eax 0.00 : 6613b: 25 00 f0 00 00 and $0xf000,%eax 0.00 : 66140: 3d 00 20 00 00 cmp $0x2000,%eax 0.00 : 66145: 74 79 je 661c0 <_IO_file_doallocate+0xb0> 0.00 : 66147: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 6614c: 48 85 c0 test %rax,%rax 0.00 : 6614f: 7e 17 jle 66168 <_IO_file_doallocate+0x58> 0.00 : 66151: 48 8d b0 ff 0f 00 00 lea 0xfff(%rax),%rsi 0.00 : 66158: 48 89 c3 mov %rax,%rbx 0.00 : 6615b: 48 81 e6 00 f0 ff ff and $0xfffffffffffff000,%rsi 0.00 : 66162: eb 0e jmp 66172 <_IO_file_doallocate+0x62> 0.00 : 66164: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 66168: bb 00 20 00 00 mov $0x2000,%ebx 0.00 : 6616d: be 00 20 00 00 mov $0x2000,%esi 0.00 : 66172: 45 31 c9 xor %r9d,%r9d 0.00 : 66175: ba 03 00 00 00 mov $0x3,%edx 0.00 : 6617a: 31 ff xor %edi,%edi 0.00 : 6617c: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 66182: b9 22 00 00 00 mov $0x22,%ecx 0.00 : 66187: e8 c4 1a 07 00 callq d7c50 0.00 : 6618c: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 66190: 89 c2 mov %eax,%edx 0.00 : 66192: 74 19 je 661ad <_IO_file_doallocate+0x9d> 0.00 : 66194: 48 8d 14 18 lea (%rax,%rbx,1),%rdx 0.00 : 66198: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 6619d: 48 89 c6 mov %rax,%rsi 0.00 : 661a0: 48 89 ef mov %rbp,%rdi 0.00 : 661a3: e8 28 eb 00 00 callq 74cd0 <_IO_setb> 0.00 : 661a8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 661ad: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 661b4: 89 d0 mov %edx,%eax 0.00 : 661b6: 5b pop %rbx 0.00 : 661b7: 5d pop %rbp 0.00 : 661b8: c3 retq 0.00 : 661b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 661c0: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 661c5: 48 89 d0 mov %rdx,%rax 0.00 : 661c8: 48 c1 ea 08 shr $0x8,%rdx 0.00 : 661cc: 48 c1 e8 20 shr $0x20,%rax 0.00 : 661d0: 81 e2 ff 0f 00 00 and $0xfff,%edx 0.00 : 661d6: 25 00 f0 ff ff and $0xfffff000,%eax 0.00 : 661db: 09 d0 or %edx,%eax 0.00 : 661dd: 2d 88 00 00 00 sub $0x88,%eax 0.00 : 661e2: 83 f8 07 cmp $0x7,%eax 0.00 : 661e5: 77 21 ja 66208 <_IO_file_doallocate+0xf8> 0.00 : 661e7: 81 4d 00 00 02 00 00 orl $0x200,0x0(%rbp) 0.00 : 661ee: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 661f3: 48 85 c0 test %rax,%rax 0.00 : 661f6: 0f 8f 55 ff ff ff jg 66151 <_IO_file_doallocate+0x41> 0.00 : 661fc: e9 67 ff ff ff jmpq 66168 <_IO_file_doallocate+0x58> 0.00 : 66201: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 66208: 8b 7d 70 mov 0x70(%rbp),%edi 0.00 : 6620b: e8 90 89 06 00 callq ceba0 0.00 : 66210: 85 c0 test %eax,%eax 0.00 : 66212: 0f 84 2f ff ff ff je 66147 <_IO_file_doallocate+0x37> 0.00 : 66218: eb cd jmp 661e7 <_IO_file_doallocate+0xd7> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000664e0 <_IO_fdopen@@GLIBC_2.2.5>: 0.00 : 664e0: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 664e5: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 664ea: 41 89 fd mov %edi,%r13d 0.00 : 664ed: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 664f2: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 664f7: 48 83 ec 28 sub $0x28,%rsp ??:0 100.00 : 664fb: 0f b6 06 movzbl (%rsi),%eax 0.00 : 664fe: 3c 72 cmp $0x72,%al 0.00 : 66500: 0f 84 ba 01 00 00 je 666c0 <_IO_fdopen@@GLIBC_2.2.5+0x1e0> 0.00 : 66506: 3c 77 cmp $0x77,%al 0.00 : 66508: 0f 84 a2 01 00 00 je 666b0 <_IO_fdopen@@GLIBC_2.2.5+0x1d0> 0.00 : 6650e: 3c 61 cmp $0x61,%al 0.00 : 66510: 74 3e je 66550 <_IO_fdopen@@GLIBC_2.2.5+0x70> 0.00 : 66512: 48 8b 15 1f b9 30 00 mov 0x30b91f(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 66519: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 66520: 00 00 0.00 : 66522: 31 ed xor %ebp,%ebp 0.00 : 66524: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 6652b: 48 89 e8 mov %rbp,%rax 0.00 : 6652e: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 66533: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 66538: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 6653d: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 66542: 48 83 c4 28 add $0x28,%rsp 0.00 : 66546: c3 retq 0.00 : 66547: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6654e: 00 00 0.00 : 66550: 41 bc 04 10 00 00 mov $0x1004,%r12d 0.00 : 66556: bb 00 04 00 00 mov $0x400,%ebx 0.00 : 6655b: 31 ed xor %ebp,%ebp 0.00 : 6655d: 31 d2 xor %edx,%edx 0.00 : 6655f: 0f b6 44 16 01 movzbl 0x1(%rsi,%rdx,1),%eax 0.00 : 66564: 3c 6d cmp $0x6d,%al 0.00 : 66566: 0f 84 d4 00 00 00 je 66640 <_IO_fdopen@@GLIBC_2.2.5+0x160> 0.00 : 6656c: 0f 8f d3 00 00 00 jg 66645 <_IO_fdopen@@GLIBC_2.2.5+0x165> 0.00 : 66572: 84 c0 test %al,%al 0.00 : 66574: 0f 85 56 01 00 00 jne 666d0 <_IO_fdopen@@GLIBC_2.2.5+0x1f0> 0.00 : 6657a: 31 c0 xor %eax,%eax 0.00 : 6657c: be 03 00 00 00 mov $0x3,%esi 0.00 : 66581: 44 89 ef mov %r13d,%edi 0.00 : 66584: e8 d7 76 06 00 callq cdc60 <__fcntl> 0.00 : 66589: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 6658c: 0f 84 0e 01 00 00 je 666a0 <_IO_fdopen@@GLIBC_2.2.5+0x1c0> 0.00 : 66592: 89 c2 mov %eax,%edx 0.00 : 66594: 83 e2 03 and $0x3,%edx 0.00 : 66597: 0f 85 c3 00 00 00 jne 66660 <_IO_fdopen@@GLIBC_2.2.5+0x180> 0.00 : 6659d: 41 f6 c4 08 test $0x8,%r12b 0.00 : 665a1: 0f 84 6b ff ff ff je 66512 <_IO_fdopen@@GLIBC_2.2.5+0x32> 0.00 : 665a7: 85 db test %ebx,%ebx 0.00 : 665a9: 74 0b je 665b6 <_IO_fdopen@@GLIBC_2.2.5+0xd6> 0.00 : 665ab: f6 c4 04 test $0x4,%ah 0.00 : 665ae: 66 90 xchg %ax,%ax 0.00 : 665b0: 0f 84 c7 00 00 00 je 6667d <_IO_fdopen@@GLIBC_2.2.5+0x19d> 0.00 : 665b6: bf 38 02 00 00 mov $0x238,%edi 0.00 : 665bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 665c0: e8 8b 82 fb ff callq 1e850 0.00 : 665c5: 48 85 c0 test %rax,%rax 0.00 : 665c8: 48 89 c3 mov %rax,%rbx 0.00 : 665cb: 0f 84 cf 00 00 00 je 666a0 <_IO_fdopen@@GLIBC_2.2.5+0x1c0> 0.00 : 665d1: 48 8d 80 e0 00 00 00 lea 0xe0(%rax),%rax 0.00 : 665d8: 85 ed test %ebp,%ebp 0.00 : 665da: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx) 0.00 : 665e1: 0f 85 01 01 00 00 jne 666e8 <_IO_fdopen@@GLIBC_2.2.5+0x208> 0.00 : 665e7: 48 8d 8b f0 00 00 00 lea 0xf0(%rbx),%rcx 0.00 : 665ee: 4c 8d 05 6b aa 30 00 lea 0x30aa6b(%rip),%r8 # 371060 <_IO_wfile_jumps> 0.00 : 665f5: 31 d2 xor %edx,%edx 0.00 : 665f7: 31 f6 xor %esi,%esi 0.00 : 665f9: 48 89 df mov %rbx,%rdi 0.00 : 665fc: 48 89 dd mov %rbx,%rbp 0.00 : 665ff: e8 0c da 00 00 callq 74010 <_IO_no_init> 0.00 : 66604: 48 8d 05 15 af 30 00 lea 0x30af15(%rip),%rax # 371520 <_IO_file_jumps> 0.00 : 6660b: 48 89 83 d8 00 00 00 mov %rax,0xd8(%rbx) 0.00 : 66612: 48 89 df mov %rbx,%rdi 0.00 : 66615: e8 c6 ce 00 00 callq 734e0 <_IO_file_init@@GLIBC_2.2.5> 0.00 : 6661a: 44 89 ee mov %r13d,%esi 0.00 : 6661d: 48 89 df mov %rbx,%rdi 0.00 : 66620: e8 eb b0 00 00 callq 71710 <_IO_file_attach@@GLIBC_2.2.5> 0.00 : 66625: 48 85 c0 test %rax,%rax 0.00 : 66628: 0f 84 f1 00 00 00 je 6671f <_IO_fdopen@@GLIBC_2.2.5+0x23f> 0.00 : 6662e: 8b 03 mov (%rbx),%eax 0.00 : 66630: 25 b3 ef ff ff and $0xffffefb3,%eax 0.00 : 66635: 41 09 c4 or %eax,%r12d 0.00 : 66638: 44 89 23 mov %r12d,(%rbx) 0.00 : 6663b: e9 eb fe ff ff jmpq 6652b <_IO_fdopen@@GLIBC_2.2.5+0x4b> 0.00 : 66640: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 66645: 48 83 c2 01 add $0x1,%rdx 0.00 : 66649: 48 83 fa 04 cmp $0x4,%rdx 0.00 : 6664d: 0f 85 0c ff ff ff jne 6655f <_IO_fdopen@@GLIBC_2.2.5+0x7f> 0.00 : 66653: e9 22 ff ff ff jmpq 6657a <_IO_fdopen@@GLIBC_2.2.5+0x9a> 0.00 : 66658: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6665f: 00 0.00 : 66660: 83 ea 01 sub $0x1,%edx 0.00 : 66663: 0f 85 3e ff ff ff jne 665a7 <_IO_fdopen@@GLIBC_2.2.5+0xc7> 0.00 : 66669: 41 f6 c4 04 test $0x4,%r12b 0.00 : 6666d: 0f 1f 00 nopl (%rax) 0.00 : 66670: 0f 85 31 ff ff ff jne 665a7 <_IO_fdopen@@GLIBC_2.2.5+0xc7> 0.00 : 66676: 66 90 xchg %ax,%ax 0.00 : 66678: e9 95 fe ff ff jmpq 66512 <_IO_fdopen@@GLIBC_2.2.5+0x32> 0.00 : 6667d: 80 cc 04 or $0x4,%ah 0.00 : 66680: be 04 00 00 00 mov $0x4,%esi 0.00 : 66685: 44 89 ef mov %r13d,%edi 0.00 : 66688: 89 c2 mov %eax,%edx 0.00 : 6668a: 31 c0 xor %eax,%eax 0.00 : 6668c: e8 cf 75 06 00 callq cdc60 <__fcntl> 0.00 : 66691: 83 c0 01 add $0x1,%eax 0.00 : 66694: 0f 85 1c ff ff ff jne 665b6 <_IO_fdopen@@GLIBC_2.2.5+0xd6> 0.00 : 6669a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 666a0: 31 ed xor %ebp,%ebp 0.00 : 666a2: e9 84 fe ff ff jmpq 6652b <_IO_fdopen@@GLIBC_2.2.5+0x4b> 0.00 : 666a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 666ae: 00 00 0.00 : 666b0: 41 bc 04 00 00 00 mov $0x4,%r12d 0.00 : 666b6: 31 db xor %ebx,%ebx 0.00 : 666b8: e9 9e fe ff ff jmpq 6655b <_IO_fdopen@@GLIBC_2.2.5+0x7b> 0.00 : 666bd: 0f 1f 00 nopl (%rax) 0.00 : 666c0: 41 bc 08 00 00 00 mov $0x8,%r12d 0.00 : 666c6: 31 db xor %ebx,%ebx 0.00 : 666c8: e9 8e fe ff ff jmpq 6655b <_IO_fdopen@@GLIBC_2.2.5+0x7b> 0.00 : 666cd: 0f 1f 00 nopl (%rax) 0.00 : 666d0: 3c 2b cmp $0x2b,%al 0.00 : 666d2: 0f 85 6d ff ff ff jne 66645 <_IO_fdopen@@GLIBC_2.2.5+0x165> 0.00 : 666d8: 41 81 e4 00 10 00 00 and $0x1000,%r12d 0.00 : 666df: 90 nop 0.00 : 666e0: e9 95 fe ff ff jmpq 6657a <_IO_fdopen@@GLIBC_2.2.5+0x9a> 0.00 : 666e5: 0f 1f 00 nopl (%rax) 0.00 : 666e8: 41 f6 c4 08 test $0x8,%r12b 0.00 : 666ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 666f0: 0f 84 f1 fe ff ff je 665e7 <_IO_fdopen@@GLIBC_2.2.5+0x107> 0.00 : 666f6: 48 8d 8b f0 00 00 00 lea 0xf0(%rbx),%rcx 0.00 : 666fd: 4c 8d 05 dc aa 30 00 lea 0x30aadc(%rip),%r8 # 3711e0 <_IO_wfile_jumps_maybe_mmap> 0.00 : 66704: 31 d2 xor %edx,%edx 0.00 : 66706: 31 f6 xor %esi,%esi 0.00 : 66708: 48 89 df mov %rbx,%rdi 0.00 : 6670b: 48 89 dd mov %rbx,%rbp 0.00 : 6670e: e8 fd d8 00 00 callq 74010 <_IO_no_init> 0.00 : 66713: 48 8d 05 86 af 30 00 lea 0x30af86(%rip),%rax # 3716a0 <_IO_file_jumps_maybe_mmap> 0.00 : 6671a: e9 ec fe ff ff jmpq 6660b <_IO_fdopen@@GLIBC_2.2.5+0x12b> 0.00 : 6671f: 31 c9 xor %ecx,%ecx 0.00 : 66721: 31 d2 xor %edx,%edx 0.00 : 66723: 31 f6 xor %esi,%esi 0.00 : 66725: 48 89 df mov %rbx,%rdi 0.00 : 66728: 31 ed xor %ebp,%ebp 0.00 : 6672a: e8 a1 e5 00 00 callq 74cd0 <_IO_setb> 0.00 : 6672f: 48 89 df mov %rbx,%rdi 0.00 : 66732: e8 d9 d0 00 00 callq 73810 <_IO_un_link> 0.00 : 66737: 48 89 df mov %rbx,%rdi 0.00 : 6673a: e8 61 81 fb ff callq 1e8a0 0.00 : 6673f: e9 e7 fd ff ff jmpq 6652b <_IO_fdopen@@GLIBC_2.2.5+0x4b> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000006e990 : ??:0 100.00 : 6e990: 53 push %rbx 0.00 : 6e991: 8b 07 mov (%rdi),%eax 0.00 : 6e993: 48 89 fb mov %rdi,%rbx 0.00 : 6e996: 66 85 c0 test %ax,%ax 0.00 : 6e999: 78 50 js 6e9eb 0.00 : 6e99b: 4c 8b 97 88 00 00 00 mov 0x88(%rdi),%r10 0.00 : 6e9a2: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 6e9a9: 00 00 0.00 : 6e9ab: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 6e9af: 74 33 je 6e9e4 0.00 : 6e9b1: 31 d2 xor %edx,%edx 0.00 : 6e9b3: be 01 00 00 00 mov $0x1,%esi 0.00 : 6e9b8: 89 d0 mov %edx,%eax 0.00 : 6e9ba: 83 3d f3 8c 30 00 00 cmpl $0x0,0x308cf3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6e9c1: 74 09 je 6e9cc 0.00 : 6e9c3: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 6e9c8: 75 6b jne 6ea35 <_L_lock_30> 0.00 : 6e9ca: eb 06 jmp 6e9d2 0.00 : 6e9cc: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : 6e9d0: 75 63 jne 6ea35 <_L_lock_30> 0.00 : 6e9d2: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6e9d9: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 6e9dd: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 6e9e4: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : 6e9e9: 8b 03 mov (%rbx),%eax 0.00 : 6e9eb: 83 e0 cf and $0xffffffcf,%eax 0.00 : 6e9ee: 66 85 c0 test %ax,%ax 0.00 : 6e9f1: 89 03 mov %eax,(%rbx) 0.00 : 6e9f3: 78 3e js 6ea33 0.00 : 6e9f5: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6e9fc: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6e9ff: 83 e8 01 sub $0x1,%eax 0.00 : 6ea02: 85 c0 test %eax,%eax 0.00 : 6ea04: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6ea07: 75 2a jne 6ea33 0.00 : 6ea09: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ea10: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6ea17: 00 0.00 : 6ea18: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ea1f: 83 3d 8e 8c 30 00 00 cmpl $0x0,0x308c8e(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6ea26: 74 07 je 6ea2f 0.00 : 6ea28: f0 ff 0a lock decl (%rdx) 0.00 : 6ea2b: 75 20 jne 6ea4d <_L_unlock_62> 0.00 : 6ea2d: eb 04 jmp 6ea33 0.00 : 6ea2f: ff 0a decl (%rdx) 0.00 : 6ea31: 75 1a jne 6ea4d <_L_unlock_62> 0.00 : 6ea33: 5b pop %rbx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000006eb60 <_IO_ferror>: 0.00 : 6eb60: 53 push %rbx ??:0 100.00 : 6eb61: 8b 07 mov (%rdi),%eax 0.00 : 6eb63: 48 89 fb mov %rdi,%rbx 0.00 : 6eb66: 66 85 c0 test %ax,%ax 0.00 : 6eb69: 0f 88 a1 00 00 00 js 6ec10 <_IO_ferror+0xb0> 0.00 : 6eb6f: 4c 8b 97 88 00 00 00 mov 0x88(%rdi),%r10 0.00 : 6eb76: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 6eb7d: 00 00 0.00 : 6eb7f: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 6eb83: 74 33 je 6ebb8 <_IO_ferror+0x58> 0.00 : 6eb85: 31 d2 xor %edx,%edx 0.00 : 6eb87: be 01 00 00 00 mov $0x1,%esi 0.00 : 6eb8c: 89 d0 mov %edx,%eax 0.00 : 6eb8e: 83 3d 1f 8b 30 00 00 cmpl $0x0,0x308b1f(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6eb95: 74 09 je 6eba0 <_IO_ferror+0x40> 0.00 : 6eb97: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 6eb9c: 75 7e jne 6ec1c <_L_lock_30> 0.00 : 6eb9e: eb 06 jmp 6eba6 <_IO_ferror+0x46> 0.00 : 6eba0: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : 6eba4: 75 76 jne 6ec1c <_L_lock_30> 0.00 : 6eba6: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ebad: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 6ebb1: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 6ebb8: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : 6ebbd: 8b 03 mov (%rbx),%eax 0.00 : 6ebbf: 89 c6 mov %eax,%esi 0.00 : 6ebc1: c1 ee 05 shr $0x5,%esi 0.00 : 6ebc4: 83 e6 01 and $0x1,%esi 0.00 : 6ebc7: 66 85 c0 test %ax,%ax 0.00 : 6ebca: 78 3e js 6ec0a <_IO_ferror+0xaa> 0.00 : 6ebcc: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ebd3: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6ebd6: 83 e8 01 sub $0x1,%eax 0.00 : 6ebd9: 85 c0 test %eax,%eax 0.00 : 6ebdb: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6ebde: 75 2a jne 6ec0a <_IO_ferror+0xaa> 0.00 : 6ebe0: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ebe7: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6ebee: 00 0.00 : 6ebef: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ebf6: 83 3d b7 8a 30 00 00 cmpl $0x0,0x308ab7(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6ebfd: 74 07 je 6ec06 <_IO_ferror+0xa6> 0.00 : 6ebff: f0 ff 0a lock decl (%rdx) 0.00 : 6ec02: 75 33 jne 6ec37 <_L_unlock_63> 0.00 : 6ec04: eb 04 jmp 6ec0a <_IO_ferror+0xaa> 0.00 : 6ec06: ff 0a decl (%rdx) 0.00 : 6ec08: 75 2d jne 6ec37 <_L_unlock_63> 0.00 : 6ec0a: 89 f0 mov %esi,%eax 0.00 : 6ec0c: 5b pop %rbx 0.00 : 6ec0d: c3 retq 0.00 : 6ec0e: 66 90 xchg %ax,%ax 0.00 : 6ec10: 89 c6 mov %eax,%esi 0.00 : 6ec12: c1 ee 05 shr $0x5,%esi 0.00 : 6ec15: 83 e6 01 and $0x1,%esi 0.00 : 6ec18: 89 f0 mov %esi,%eax 0.00 : 6ec1a: 5b pop %rbx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000006ec50 : ??:0 50.00 : 6ec50: 8b 07 mov (%rdi),%eax 50.00 : 6ec52: f6 c4 20 test $0x20,%ah 0.00 : 6ec55: 74 09 je 6ec60 0.00 : 6ec57: 8b 47 70 mov 0x70(%rdi),%eax 0.00 : 6ec5a: 85 c0 test %eax,%eax 0.00 : 6ec5c: 78 02 js 6ec60 0.00 : 6ec5e: f3 c3 repz retq 0.00 : 6ec60: 48 8b 15 d1 31 30 00 mov 0x3031d1(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 6ec67: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 6ec6e: 00 00 0.00 : 6ec70: c7 04 10 09 00 00 00 movl $0x9,(%rax,%rdx,1) 0.00 : 6ec77: b8 ff ff ff ff mov $0xffffffff,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000071970 <_IO_file_seek>: 0.00 : 71970: 8b 7f 70 mov 0x70(%rdi),%edi ??:0 100.00 : 71973: e9 48 97 06 00 jmpq db0c0 <__lseek> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000723f0 <_IO_file_write@@GLIBC_2.2.5>: ??:0 100.00 : 723f0: 41 55 push %r13 0.00 : 723f2: 49 89 d5 mov %rdx,%r13 0.00 : 723f5: 41 54 push %r12 0.00 : 723f7: 49 89 fc mov %rdi,%r12 0.00 : 723fa: 55 push %rbp 0.00 : 723fb: 48 89 f5 mov %rsi,%rbp 0.00 : 723fe: 53 push %rbx 0.00 : 723ff: 48 89 d3 mov %rdx,%rbx 0.00 : 72402: 31 d2 xor %edx,%edx 0.00 : 72404: 48 83 ec 08 sub $0x8,%rsp 0.00 : 72408: 4d 85 ed test %r13,%r13 0.00 : 7240b: 7f 0e jg 7241b <_IO_file_write@@GLIBC_2.2.5+0x2b> 0.00 : 7240d: eb 34 jmp 72443 <_IO_file_write@@GLIBC_2.2.5+0x53> 0.00 : 7240f: 90 nop 0.00 : 72410: 48 29 c3 sub %rax,%rbx 0.00 : 72413: 48 85 db test %rbx,%rbx 0.00 : 72416: 7e 58 jle 72470 <_IO_file_write@@GLIBC_2.2.5+0x80> 0.00 : 72418: 48 01 c5 add %rax,%rbp 0.00 : 7241b: 41 f6 44 24 74 02 testb $0x2,0x74(%r12) 0.00 : 72421: 75 55 jne 72478 <_IO_file_write@@GLIBC_2.2.5+0x88> 0.00 : 72423: 41 8b 7c 24 70 mov 0x70(%r12),%edi 0.00 : 72428: 48 89 da mov %rbx,%rdx 0.00 : 7242b: 48 89 ee mov %rbp,%rsi 0.00 : 7242e: e8 ed b1 05 00 callq cd620 <__write> 0.00 : 72433: 48 85 c0 test %rax,%rax 0.00 : 72436: 79 d8 jns 72410 <_IO_file_write@@GLIBC_2.2.5+0x20> 0.00 : 72438: 41 83 0c 24 20 orl $0x20,(%r12) 0.00 : 7243d: 4c 89 ea mov %r13,%rdx 0.00 : 72440: 48 29 da sub %rbx,%rdx 0.00 : 72443: 49 8b 84 24 90 00 00 mov 0x90(%r12),%rax 0.00 : 7244a: 00 0.00 : 7244b: 48 85 c0 test %rax,%rax 0.00 : 7244e: 78 0c js 7245c <_IO_file_write@@GLIBC_2.2.5+0x6c> 0.00 : 72450: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 72454: 49 89 84 24 90 00 00 mov %rax,0x90(%r12) 0.00 : 7245b: 00 0.00 : 7245c: 48 83 c4 08 add $0x8,%rsp 0.00 : 72460: 48 89 d0 mov %rdx,%rax 0.00 : 72463: 5b pop %rbx 0.00 : 72464: 5d pop %rbp 0.00 : 72465: 41 5c pop %r12 0.00 : 72467: 41 5d pop %r13 0.00 : 72469: c3 retq 0.00 : 7246a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72470: 4c 89 ea mov %r13,%rdx 0.00 : 72473: 48 29 da sub %rbx,%rdx 0.00 : 72476: eb cb jmp 72443 <_IO_file_write@@GLIBC_2.2.5+0x53> 0.00 : 72478: 41 8b 7c 24 70 mov 0x70(%r12),%edi 0.00 : 7247d: 48 89 da mov %rbx,%rdx 0.00 : 72480: 48 89 ee mov %rbp,%rsi 0.00 : 72483: e8 a1 b1 05 00 callq cd629 <__write_nocancel> 0.00 : 72488: 48 98 cltq 0.00 : 7248a: eb a7 jmp 72433 <_IO_file_write@@GLIBC_2.2.5+0x43> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000724f0 <_IO_file_read>: ??:0 100.00 : 724f0: 48 83 ec 08 sub $0x8,%rsp 0.00 : 724f4: f6 47 74 02 testb $0x2,0x74(%rdi) 0.00 : 724f8: 75 0c jne 72506 <_IO_file_read+0x16> 0.00 : 724fa: 8b 7f 70 mov 0x70(%rdi),%edi 0.00 : 724fd: 48 83 c4 08 add $0x8,%rsp 0.00 : 72501: e9 ba b0 05 00 jmpq cd5c0 <__read> 0.00 : 72506: 8b 7f 70 mov 0x70(%rdi),%edi 0.00 : 72509: e8 bb b0 05 00 callq cd5c9 <__read_nocancel> 0.00 : 7250e: 48 83 c4 08 add $0x8,%rsp 0.00 : 72512: 48 98 cltq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072b90 <_IO_file_sync@@GLIBC_2.2.5>: 0.00 : 72b90: 53 push %rbx 0.00 : 72b91: 48 8b 57 28 mov 0x28(%rdi),%rdx 0.00 : 72b95: 48 89 fb mov %rdi,%rbx 0.00 : 72b98: 48 8b 77 20 mov 0x20(%rdi),%rsi 0.00 : 72b9c: 48 39 f2 cmp %rsi,%rdx 0.00 : 72b9f: 77 67 ja 72c08 <_IO_file_sync@@GLIBC_2.2.5+0x78> 0.00 : 72ba1: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 72ba5: 48 89 c6 mov %rax,%rsi 0.00 : 72ba8: 48 2b 73 10 sub 0x10(%rbx),%rsi 0.00 : 72bac: 75 12 jne 72bc0 <_IO_file_sync@@GLIBC_2.2.5+0x30> ??:0 100.00 : 72bae: 48 c7 83 90 00 00 00 movq $0xffffffffffffffff,0x90(%rbx) 0.00 : 72bb5: ff ff ff ff 0.00 : 72bb9: 31 c0 xor %eax,%eax 0.00 : 72bbb: 5b pop %rbx 0.00 : 72bbc: c3 retq 0.00 : 72bbd: 0f 1f 00 nopl (%rax) 0.00 : 72bc0: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72bc7: ba 01 00 00 00 mov $0x1,%edx 0.00 : 72bcc: 48 89 df mov %rbx,%rdi 0.00 : 72bcf: ff 90 80 00 00 00 callq *0x80(%rax) 0.00 : 72bd5: 48 83 c0 01 add $0x1,%rax 0.00 : 72bd9: 74 0d je 72be8 <_IO_file_sync@@GLIBC_2.2.5+0x58> 0.00 : 72bdb: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 72bdf: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 72be3: eb c9 jmp 72bae <_IO_file_sync@@GLIBC_2.2.5+0x1e> 0.00 : 72be5: 0f 1f 00 nopl (%rax) 0.00 : 72be8: 48 8b 15 49 f2 2f 00 mov 0x2ff249(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 72bef: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 72bf6: 00 00 0.00 : 72bf8: 83 3c 10 1d cmpl $0x1d,(%rax,%rdx,1) 0.00 : 72bfc: 74 b0 je 72bae <_IO_file_sync@@GLIBC_2.2.5+0x1e> 0.00 : 72bfe: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 72c03: 5b pop %rbx 0.00 : 72c04: c3 retq 0.00 : 72c05: 0f 1f 00 nopl (%rax) 0.00 : 72c08: 44 8b 8f c0 00 00 00 mov 0xc0(%rdi),%r9d 0.00 : 72c0f: 45 85 c9 test %r9d,%r9d 0.00 : 72c12: 7e 2c jle 72c40 <_IO_file_sync@@GLIBC_2.2.5+0xb0> 0.00 : 72c14: 48 8b 87 a0 00 00 00 mov 0xa0(%rdi),%rax 0.00 : 72c1b: 48 8b 70 18 mov 0x18(%rax),%rsi 0.00 : 72c1f: 48 8b 50 20 mov 0x20(%rax),%rdx 0.00 : 72c23: 48 29 f2 sub %rsi,%rdx 0.00 : 72c26: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 72c2a: e8 21 b2 ff ff callq 6de50 <_IO_wdo_write> 0.00 : 72c2f: 85 c0 test %eax,%eax 0.00 : 72c31: 0f 95 c0 setne %al 0.00 : 72c34: 84 c0 test %al,%al 0.00 : 72c36: 0f 84 65 ff ff ff je 72ba1 <_IO_file_sync@@GLIBC_2.2.5+0x11> 0.00 : 72c3c: eb c0 jmp 72bfe <_IO_file_sync@@GLIBC_2.2.5+0x6e> 0.00 : 72c3e: 66 90 xchg %ax,%ax 0.00 : 72c40: 48 29 f2 sub %rsi,%rdx 0.00 : 72c43: e8 78 f7 ff ff callq 723c0 <_IO_do_write@@GLIBC_2.2.5> 0.00 : 72c48: 85 c0 test %eax,%eax 0.00 : 72c4a: 0f 95 c0 setne %al 0.00 : 72c4d: eb e5 jmp 72c34 <_IO_file_sync@@GLIBC_2.2.5+0xa4> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072ea0 <_IO_file_setbuf@@GLIBC_2.2.5>: ??:0 100.00 : 72ea0: 53 push %rbx 0.00 : 72ea1: 48 89 fb mov %rdi,%rbx 0.00 : 72ea4: e8 c7 0f 00 00 callq 73e70 <_IO_default_setbuf> 0.00 : 72ea9: 48 85 c0 test %rax,%rax 0.00 : 72eac: 74 22 je 72ed0 <_IO_file_setbuf@@GLIBC_2.2.5+0x30> 0.00 : 72eae: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 72eb2: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 72eb6: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 72eba: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 72ebe: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 72ec2: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 72ec6: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 72eca: 48 89 d8 mov %rbx,%rax 0.00 : 72ecd: 5b pop %rbx 0.00 : 72ece: c3 retq 0.00 : 72ecf: 90 nop 0.00 : 72ed0: 31 db xor %ebx,%ebx 0.00 : 72ed2: 48 89 d8 mov %rbx,%rax 0.00 : 72ed5: 5b pop %rbx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074b40 <_IO_unsave_markers>: ??:0 100.00 : 74b40: 48 83 7f 60 00 cmpq $0x0,0x60(%rdi) 0.00 : 74b45: 74 08 je 74b4f <_IO_unsave_markers+0xf> 0.00 : 74b47: 48 c7 47 60 00 00 00 movq $0x0,0x60(%rdi) 0.00 : 74b4e: 00 0.00 : 74b4f: 48 83 7f 48 00 cmpq $0x0,0x48(%rdi) 0.00 : 74b54: 74 0a je 74b60 <_IO_unsave_markers+0x20> 0.00 : 74b56: e9 85 02 00 00 jmpq 74de0 <_IO_free_backup_area> 0.00 : 74b5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 74b60: f3 c3 repz retq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074c10 <_IO_list_lock>: 0.00 : 74c10: 64 48 8b 14 25 10 00 mov %fs:0x10,%rdx 0.00 : 74c17: 00 00 0.00 : 74c19: 48 3b 15 f8 f1 2f 00 cmp 0x2ff1f8(%rip),%rdx # 373e18 0.00 : 74c20: 74 34 je 74c56 <_IO_list_lock+0x46> 0.00 : 74c22: be 01 00 00 00 mov $0x1,%esi 0.00 : 74c27: 31 c0 xor %eax,%eax 0.00 : 74c29: 83 3d 84 2a 30 00 00 cmpl $0x0,0x302a84(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 74c30: 74 10 je 74c42 <_IO_list_lock+0x32> 0.00 : 74c32: f0 0f b1 35 d6 f1 2f lock cmpxchg %esi,0x2ff1d6(%rip) # 373e10 0.00 : 74c39: 00 0.00 : 74c3a: 0f 85 c9 0a 00 00 jne 75709 <_L_lock_2491> 0.00 : 74c40: eb 0d jmp 74c4f <_IO_list_lock+0x3f> 0.00 : 74c42: 0f b1 35 c7 f1 2f 00 cmpxchg %esi,0x2ff1c7(%rip) # 373e10 0.00 : 74c49: 0f 85 ba 0a 00 00 jne 75709 <_L_lock_2491> 100.00 : 74c4f: 48 89 15 c2 f1 2f 00 mov %rdx,0x2ff1c2(%rip) # 373e18 0.00 : 74c56: 83 05 b7 f1 2f 00 01 addl $0x1,0x2ff1b7(%rip) # 373e14 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074cb0 <_IO_list_resetlock>: 100.00 : 74cb0: c7 05 56 f1 2f 00 00 movl $0x0,0x2ff156(%rip) # 373e10 0.00 : 74cb7: 00 00 00 0.00 : 74cba: c7 05 50 f1 2f 00 00 movl $0x0,0x2ff150(%rip) # 373e14 0.00 : 74cc1: 00 00 00 0.00 : 74cc4: 48 c7 05 49 f1 2f 00 movq $0x0,0x2ff149(%rip) # 373e18 0.00 : 74ccb: 00 00 00 00 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000075d00 <_IO_str_init_static_internal>: 0.00 : 75d00: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 100.00 : 75d05: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 75d0a: 48 89 fb mov %rdi,%rbx 0.00 : 75d0d: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 75d12: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 75d17: 48 83 ec 28 sub $0x28,%rsp 0.00 : 75d1b: 48 85 d2 test %rdx,%rdx 0.00 : 75d1e: 48 89 f5 mov %rsi,%rbp 0.00 : 75d21: 49 89 cd mov %rcx,%r13 0.00 : 75d24: 74 6a je 75d90 <_IO_str_init_static_internal+0x90> 0.00 : 75d26: 4c 8d 24 16 lea (%rsi,%rdx,1),%r12 0.00 : 75d2a: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 75d31: 49 39 f4 cmp %rsi,%r12 0.00 : 75d34: 4c 0f 46 e0 cmovbe %rax,%r12 0.00 : 75d38: 31 c9 xor %ecx,%ecx 0.00 : 75d3a: 4c 89 e2 mov %r12,%rdx 0.00 : 75d3d: 48 89 ee mov %rbp,%rsi 0.00 : 75d40: 48 89 df mov %rbx,%rdi 0.00 : 75d43: e8 88 ef ff ff callq 74cd0 <_IO_setb> 0.00 : 75d48: 4d 85 ed test %r13,%r13 0.00 : 75d4b: 48 89 6b 20 mov %rbp,0x20(%rbx) 0.00 : 75d4f: 48 89 6b 18 mov %rbp,0x18(%rbx) 0.00 : 75d53: 48 89 6b 08 mov %rbp,0x8(%rbx) 0.00 : 75d57: 74 47 je 75da0 <_IO_str_init_static_internal+0xa0> 0.00 : 75d59: 4c 89 6b 28 mov %r13,0x28(%rbx) 0.00 : 75d5d: 4c 89 63 30 mov %r12,0x30(%rbx) 0.00 : 75d61: 4c 89 6b 10 mov %r13,0x10(%rbx) 0.00 : 75d65: 48 c7 83 e0 00 00 00 movq $0x0,0xe0(%rbx) 0.00 : 75d6c: 00 00 00 00 0.00 : 75d70: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 75d75: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 75d7a: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 75d7f: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 75d84: 48 83 c4 28 add $0x28,%rsp 0.00 : 75d88: c3 retq 0.00 : 75d89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 75d90: 31 f6 xor %esi,%esi 0.00 : 75d92: 48 89 ef mov %rbp,%rdi 0.00 : 75d95: e8 16 fe 00 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 75d9a: 49 89 c4 mov %rax,%r12 0.00 : 75d9d: eb 99 jmp 75d38 <_IO_str_init_static_internal+0x38> 0.00 : 75d9f: 90 nop 0.00 : 75da0: 48 89 6b 28 mov %rbp,0x28(%rbx) 0.00 : 75da4: 48 89 6b 30 mov %rbp,0x30(%rbx) 0.00 : 75da8: 4c 89 63 10 mov %r12,0x10(%rbx) 0.00 : 75dac: eb b7 jmp 75d65 <_IO_str_init_static_internal+0x65> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000808b0 <__strdup>: 0.00 : 808b0: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 0.00 : 808b5: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 808ba: 48 83 ec 18 sub $0x18,%rsp 0.00 : 808be: 48 89 fd mov %rdi,%rbp 0.00 : 808c1: e8 ea 02 00 00 callq 80bb0 <__GI_strlen> 50.00 : 808c6: 48 8d 58 01 lea 0x1(%rax),%rbx 50.00 : 808ca: 48 89 df mov %rbx,%rdi 0.00 : 808cd: e8 7e df f9 ff callq 1e850 0.00 : 808d2: 48 85 c0 test %rax,%rax 0.00 : 808d5: 74 21 je 808f8 <__strdup+0x48> 0.00 : 808d7: 48 89 da mov %rbx,%rdx 0.00 : 808da: 48 89 ee mov %rbp,%rsi 0.00 : 808dd: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 808e2: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 808e7: 48 89 c7 mov %rax,%rdi 0.00 : 808ea: 48 83 c4 18 add $0x18,%rsp 0.00 : 808ee: e9 5d 3e 00 00 jmpq 84750 0.00 : 808f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 808f8: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 808fd: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 80902: 48 83 c4 18 add $0x18,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000080df0 <__GI_strncmp>: 0.00 : 80df0: 48 85 d2 test %rdx,%rdx 0.00 : 80df3: 0f 84 2b 18 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 80df9: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 80dfd: 0f 84 2d 18 00 00 je 82630 <__GI_strncmp+0x1840> 0.00 : 80e03: 49 89 d3 mov %rdx,%r11 0.00 : 80e06: 89 f1 mov %esi,%ecx 0.00 : 80e08: 89 f8 mov %edi,%eax 0.00 : 80e0a: 48 83 e1 3f and $0x3f,%rcx 0.00 : 80e0e: 48 83 e0 3f and $0x3f,%rax 0.00 : 80e12: 83 f9 30 cmp $0x30,%ecx 0.00 : 80e15: 77 49 ja 80e60 <__GI_strncmp+0x70> 33.33 : 80e17: 83 f8 30 cmp $0x30,%eax 0.00 : 80e1a: 77 44 ja 80e60 <__GI_strncmp+0x70> 0.00 : 80e1c: 66 0f 12 0f movlpd (%rdi),%xmm1 0.00 : 80e20: 66 0f 12 16 movlpd (%rsi),%xmm2 0.00 : 80e24: 66 0f 16 4f 08 movhpd 0x8(%rdi),%xmm1 0.00 : 80e29: 66 0f 16 56 08 movhpd 0x8(%rsi),%xmm2 0.00 : 80e2e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80e32: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80e36: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 80e3a: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80e3e: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 80e42: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 80e48: 0f 85 c2 17 00 00 jne 82610 <__GI_strncmp+0x1820> 0.00 : 80e4e: 49 83 eb 10 sub $0x10,%r11 0.00 : 80e52: 0f 86 cc 17 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 80e58: 48 83 c6 10 add $0x10,%rsi 0.00 : 80e5c: 48 83 c7 10 add $0x10,%rdi 0.00 : 80e60: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 80e64: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 80e68: ba ff ff 00 00 mov $0xffff,%edx 0.00 : 80e6d: 45 31 c0 xor %r8d,%r8d 0.00 : 80e70: 83 e1 0f and $0xf,%ecx 0.00 : 80e73: 83 e0 0f and $0xf,%eax 0.00 : 80e76: 39 c1 cmp %eax,%ecx 0.00 : 80e78: 74 26 je 80ea0 <__GI_strncmp+0xb0> 0.00 : 80e7a: 77 07 ja 80e83 <__GI_strncmp+0x93> 0.00 : 80e7c: 41 89 d0 mov %edx,%r8d 0.00 : 80e7f: 91 xchg %eax,%ecx 0.00 : 80e80: 48 87 f7 xchg %rsi,%rdi 0.00 : 80e83: 4c 8d 48 0f lea 0xf(%rax),%r9 0.00 : 80e87: 49 29 c9 sub %rcx,%r9 0.00 : 80e8a: 4c 8d 15 ff 52 0b 00 lea 0xb52ff(%rip),%r10 # 136190 0.00 : 80e91: 4f 63 0c 8a movslq (%r10,%r9,4),%r9 0.00 : 80e95: 4f 8d 14 0a lea (%r10,%r9,1),%r10 0.00 : 80e99: 41 ff e2 jmpq *%r10 0.00 : 80e9c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 80ea0: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 80ea4: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80ea8: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80eac: 66 0f 74 0f pcmpeqb (%rdi),%xmm1 0.00 : 80eb0: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80eb4: 66 44 0f d7 c9 pmovmskb %xmm1,%r9d 0.00 : 80eb9: d3 ea shr %cl,%edx 0.00 : 80ebb: 41 d3 e9 shr %cl,%r9d 0.00 : 80ebe: 44 29 ca sub %r9d,%edx 0.00 : 80ec1: 0f 85 2e 17 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 80ec7: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 80ecc: 4d 39 cb cmp %r9,%r11 0.00 : 80ecf: 0f 82 4f 17 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 80ed5: 4d 85 c9 test %r9,%r9 0.00 : 80ed8: 0f 84 46 17 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 80ede: 4d 89 cb mov %r9,%r11 0.00 : 80ee1: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 80ee8: 49 c7 c1 10 00 00 00 mov $0x10,%r9 0.00 : 80eef: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80ef3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 80efa: 84 00 00 00 00 00 0.00 : 80f00: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80f05: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 80f0a: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80f0e: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 80f12: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80f16: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 80f1a: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 80f20: 0f 85 ca 16 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 80f26: 49 83 eb 10 sub $0x10,%r11 0.00 : 80f2a: 0f 86 f4 16 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 80f30: 48 83 c1 10 add $0x10,%rcx 0.00 : 80f34: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80f39: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 80f3e: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80f42: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 80f46: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 80f4a: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 80f4e: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 80f54: 0f 85 96 16 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 80f5a: 49 83 eb 10 sub $0x10,%r11 0.00 : 80f5e: 0f 86 c0 16 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 80f64: 48 83 c1 10 add $0x10,%rcx 0.00 : 80f68: eb 96 jmp 80f00 <__GI_strncmp+0x110> 0.00 : 80f6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 80f70: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80f74: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 80f78: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 80f7c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80f80: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 80f85: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 80f89: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 80f8d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 80f92: d3 ea shr %cl,%edx 0.00 : 80f94: 41 d3 e9 shr %cl,%r9d 0.00 : 80f97: 44 29 ca sub %r9d,%edx 0.00 : 80f9a: 0f 85 55 16 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 80fa0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 80fa4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 80fa9: 4d 39 cb cmp %r9,%r11 0.00 : 80fac: 0f 82 72 16 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 80fb2: 4d 85 c9 test %r9,%r9 0.00 : 80fb5: 0f 84 69 16 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 80fbb: 4d 89 cb mov %r9,%r11 0.00 : 80fbe: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 80fc2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 80fc9: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 80fcf: 4c 8d 57 01 lea 0x1(%rdi),%r10 0.00 : 80fd3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 80fda: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 80fe1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 80fe8: 0f 1f 84 00 00 00 00 0.00 : 80fef: 00 0.00 : 80ff0: 49 83 c2 10 add $0x10,%r10 0.00 : 80ff4: 0f 8f a6 00 00 00 jg 810a0 <__GI_strncmp+0x2b0> 0.00 : 80ffa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 80fff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81004: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81008: 66 0f 73 db 01 psrldq $0x1,%xmm3 0.00 : 8100d: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 81012: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81016: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8101a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8101e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81022: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81026: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8102c: 0f 85 be 15 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81032: 49 83 eb 10 sub $0x10,%r11 0.00 : 81036: 0f 86 e8 15 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8103c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81040: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81044: 49 83 c2 10 add $0x10,%r10 0.00 : 81048: 7f 56 jg 810a0 <__GI_strncmp+0x2b0> 0.00 : 8104a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8104f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81054: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81058: 66 0f 73 db 01 psrldq $0x1,%xmm3 0.00 : 8105d: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 81062: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81066: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8106a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8106e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81072: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81076: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8107c: 0f 85 6e 15 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81082: 49 83 eb 10 sub $0x10,%r11 0.00 : 81086: 0f 86 98 15 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8108c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81090: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81094: e9 57 ff ff ff jmpq 80ff0 <__GI_strncmp+0x200> 0.00 : 81099: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 810a0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 810a4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 810a8: f7 c2 fe ff 00 00 test $0xfffe,%edx 0.00 : 810ae: 75 20 jne 810d0 <__GI_strncmp+0x2e0> 0.00 : 810b0: 49 83 fb 0f cmp $0xf,%r11 0.00 : 810b4: 76 1a jbe 810d0 <__GI_strncmp+0x2e0> 0.00 : 810b6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 810ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 810c1: e9 34 ff ff ff jmpq 80ffa <__GI_strncmp+0x20a> 0.00 : 810c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 810cd: 00 00 00 0.00 : 810d0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 810d5: 66 0f 73 d8 01 psrldq $0x1,%xmm0 0.00 : 810da: 66 0f 73 db 01 psrldq $0x1,%xmm3 0.00 : 810df: e9 fc 14 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 810e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 810eb: 00 00 00 00 00 0.00 : 810f0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 810f4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 810f8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 810fc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81100: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 81105: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81109: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8110d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81112: d3 ea shr %cl,%edx 0.00 : 81114: 41 d3 e9 shr %cl,%r9d 0.00 : 81117: 44 29 ca sub %r9d,%edx 0.00 : 8111a: 0f 85 d5 14 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 81120: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 81124: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 81129: 4d 39 cb cmp %r9,%r11 0.00 : 8112c: 0f 82 f2 14 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 81132: 4d 85 c9 test %r9,%r9 0.00 : 81135: 0f 84 e9 14 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 8113b: 4d 89 cb mov %r9,%r11 0.00 : 8113e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81142: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 81149: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 8114f: 4c 8d 57 02 lea 0x2(%rdi),%r10 0.00 : 81153: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 8115a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81161: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81168: 0f 1f 84 00 00 00 00 0.00 : 8116f: 00 0.00 : 81170: 49 83 c2 10 add $0x10,%r10 0.00 : 81174: 0f 8f a6 00 00 00 jg 81220 <__GI_strncmp+0x430> 0.00 : 8117a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8117f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81184: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81188: 66 0f 73 db 02 psrldq $0x2,%xmm3 0.00 : 8118d: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 81192: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81196: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8119a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8119e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 811a2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 811a6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 811ac: 0f 85 3e 14 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 811b2: 49 83 eb 10 sub $0x10,%r11 0.00 : 811b6: 0f 86 68 14 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 811bc: 48 83 c1 10 add $0x10,%rcx 0.00 : 811c0: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 811c4: 49 83 c2 10 add $0x10,%r10 0.00 : 811c8: 7f 56 jg 81220 <__GI_strncmp+0x430> 0.00 : 811ca: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 811cf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 811d4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 811d8: 66 0f 73 db 02 psrldq $0x2,%xmm3 0.00 : 811dd: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 811e2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 811e6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 811ea: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 811ee: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 811f2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 811f6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 811fc: 0f 85 ee 13 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81202: 49 83 eb 10 sub $0x10,%r11 0.00 : 81206: 0f 86 18 14 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8120c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81210: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81214: e9 57 ff ff ff jmpq 81170 <__GI_strncmp+0x380> 0.00 : 81219: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 81220: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 81224: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 81228: f7 c2 fc ff 00 00 test $0xfffc,%edx 0.00 : 8122e: 75 20 jne 81250 <__GI_strncmp+0x460> 0.00 : 81230: 49 83 fb 0e cmp $0xe,%r11 0.00 : 81234: 76 1a jbe 81250 <__GI_strncmp+0x460> 0.00 : 81236: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 8123a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81241: e9 34 ff ff ff jmpq 8117a <__GI_strncmp+0x38a> 0.00 : 81246: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8124d: 00 00 00 0.00 : 81250: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81255: 66 0f 73 d8 02 psrldq $0x2,%xmm0 0.00 : 8125a: 66 0f 73 db 02 psrldq $0x2,%xmm3 0.00 : 8125f: e9 7c 13 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 81264: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8126b: 00 00 00 00 00 0.00 : 81270: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81274: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 81278: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 8127c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81280: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 81285: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81289: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8128d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81292: d3 ea shr %cl,%edx 0.00 : 81294: 41 d3 e9 shr %cl,%r9d 0.00 : 81297: 44 29 ca sub %r9d,%edx 0.00 : 8129a: 0f 85 55 13 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 812a0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 812a4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 812a9: 4d 39 cb cmp %r9,%r11 0.00 : 812ac: 0f 82 72 13 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 812b2: 4d 85 c9 test %r9,%r9 0.00 : 812b5: 0f 84 69 13 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 812bb: 4d 89 cb mov %r9,%r11 0.00 : 812be: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 812c2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 812c9: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 812cf: 4c 8d 57 03 lea 0x3(%rdi),%r10 0.00 : 812d3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 812da: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 812e1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 812e8: 0f 1f 84 00 00 00 00 0.00 : 812ef: 00 0.00 : 812f0: 49 83 c2 10 add $0x10,%r10 0.00 : 812f4: 0f 8f a6 00 00 00 jg 813a0 <__GI_strncmp+0x5b0> 0.00 : 812fa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 812ff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81304: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81308: 66 0f 73 db 03 psrldq $0x3,%xmm3 0.00 : 8130d: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 81312: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81316: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8131a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8131e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81322: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81326: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8132c: 0f 85 be 12 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81332: 49 83 eb 10 sub $0x10,%r11 0.00 : 81336: 0f 86 e8 12 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8133c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81340: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81344: 49 83 c2 10 add $0x10,%r10 0.00 : 81348: 7f 56 jg 813a0 <__GI_strncmp+0x5b0> 0.00 : 8134a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8134f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81354: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81358: 66 0f 73 db 03 psrldq $0x3,%xmm3 0.00 : 8135d: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 81362: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81366: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8136a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8136e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81372: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81376: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8137c: 0f 85 6e 12 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81382: 49 83 eb 10 sub $0x10,%r11 0.00 : 81386: 0f 86 98 12 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8138c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81390: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81394: e9 57 ff ff ff jmpq 812f0 <__GI_strncmp+0x500> 0.00 : 81399: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 813a0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 813a4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 813a8: f7 c2 f8 ff 00 00 test $0xfff8,%edx 0.00 : 813ae: 75 20 jne 813d0 <__GI_strncmp+0x5e0> 0.00 : 813b0: 49 83 fb 0d cmp $0xd,%r11 0.00 : 813b4: 76 1a jbe 813d0 <__GI_strncmp+0x5e0> 0.00 : 813b6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 813ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 813c1: e9 34 ff ff ff jmpq 812fa <__GI_strncmp+0x50a> 0.00 : 813c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 813cd: 00 00 00 0.00 : 813d0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 813d5: 66 0f 73 d8 03 psrldq $0x3,%xmm0 0.00 : 813da: 66 0f 73 db 03 psrldq $0x3,%xmm3 0.00 : 813df: e9 fc 11 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 813e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 813eb: 00 00 00 00 00 0.00 : 813f0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 813f4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 813f8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 813fc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81400: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 81405: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81409: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8140d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81412: d3 ea shr %cl,%edx 0.00 : 81414: 41 d3 e9 shr %cl,%r9d 0.00 : 81417: 44 29 ca sub %r9d,%edx 0.00 : 8141a: 0f 85 d5 11 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 81420: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 81424: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 81429: 4d 39 cb cmp %r9,%r11 0.00 : 8142c: 0f 82 f2 11 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 81432: 4d 85 c9 test %r9,%r9 0.00 : 81435: 0f 84 e9 11 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 8143b: 4d 89 cb mov %r9,%r11 0.00 : 8143e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81442: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 81449: 41 b9 04 00 00 00 mov $0x4,%r9d 0.00 : 8144f: 4c 8d 57 04 lea 0x4(%rdi),%r10 0.00 : 81453: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 8145a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81461: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81468: 0f 1f 84 00 00 00 00 0.00 : 8146f: 00 0.00 : 81470: 49 83 c2 10 add $0x10,%r10 0.00 : 81474: 0f 8f a6 00 00 00 jg 81520 <__GI_strncmp+0x730> 0.00 : 8147a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8147f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81484: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81488: 66 0f 73 db 04 psrldq $0x4,%xmm3 0.00 : 8148d: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 81492: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81496: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8149a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8149e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 814a2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 814a6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 814ac: 0f 85 3e 11 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 814b2: 49 83 eb 10 sub $0x10,%r11 0.00 : 814b6: 0f 86 68 11 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 814bc: 48 83 c1 10 add $0x10,%rcx 0.00 : 814c0: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 814c4: 49 83 c2 10 add $0x10,%r10 0.00 : 814c8: 7f 56 jg 81520 <__GI_strncmp+0x730> 0.00 : 814ca: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 814cf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 814d4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 814d8: 66 0f 73 db 04 psrldq $0x4,%xmm3 0.00 : 814dd: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 814e2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 814e6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 814ea: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 814ee: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 814f2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 814f6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 814fc: 0f 85 ee 10 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81502: 49 83 eb 10 sub $0x10,%r11 0.00 : 81506: 0f 86 18 11 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8150c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81510: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81514: e9 57 ff ff ff jmpq 81470 <__GI_strncmp+0x680> 0.00 : 81519: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 81520: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 81524: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 81528: f7 c2 f0 ff 00 00 test $0xfff0,%edx 0.00 : 8152e: 75 20 jne 81550 <__GI_strncmp+0x760> 0.00 : 81530: 49 83 fb 0c cmp $0xc,%r11 0.00 : 81534: 76 1a jbe 81550 <__GI_strncmp+0x760> 0.00 : 81536: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 8153a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81541: e9 34 ff ff ff jmpq 8147a <__GI_strncmp+0x68a> 0.00 : 81546: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8154d: 00 00 00 0.00 : 81550: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81555: 66 0f 73 d8 04 psrldq $0x4,%xmm0 0.00 : 8155a: 66 0f 73 db 04 psrldq $0x4,%xmm3 0.00 : 8155f: e9 7c 10 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 81564: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8156b: 00 00 00 00 00 0.00 : 81570: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81574: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 81578: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 8157c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81580: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 81585: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81589: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8158d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81592: d3 ea shr %cl,%edx 0.00 : 81594: 41 d3 e9 shr %cl,%r9d 0.00 : 81597: 44 29 ca sub %r9d,%edx 0.00 : 8159a: 0f 85 55 10 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 815a0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 815a4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 815a9: 4d 39 cb cmp %r9,%r11 0.00 : 815ac: 0f 82 72 10 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 815b2: 4d 85 c9 test %r9,%r9 0.00 : 815b5: 0f 84 69 10 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 815bb: 4d 89 cb mov %r9,%r11 0.00 : 815be: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 815c2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 815c9: 41 b9 05 00 00 00 mov $0x5,%r9d 0.00 : 815cf: 4c 8d 57 05 lea 0x5(%rdi),%r10 0.00 : 815d3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 815da: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 815e1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 815e8: 0f 1f 84 00 00 00 00 0.00 : 815ef: 00 0.00 : 815f0: 49 83 c2 10 add $0x10,%r10 0.00 : 815f4: 0f 8f a6 00 00 00 jg 816a0 <__GI_strncmp+0x8b0> 0.00 : 815fa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 815ff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81604: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81608: 66 0f 73 db 05 psrldq $0x5,%xmm3 0.00 : 8160d: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 81612: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81616: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8161a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8161e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81622: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81626: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8162c: 0f 85 be 0f 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81632: 49 83 eb 10 sub $0x10,%r11 0.00 : 81636: 0f 86 e8 0f 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8163c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81640: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81644: 49 83 c2 10 add $0x10,%r10 0.00 : 81648: 7f 56 jg 816a0 <__GI_strncmp+0x8b0> 0.00 : 8164a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8164f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81654: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81658: 66 0f 73 db 05 psrldq $0x5,%xmm3 0.00 : 8165d: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 81662: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81666: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8166a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8166e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81672: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81676: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8167c: 0f 85 6e 0f 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81682: 49 83 eb 10 sub $0x10,%r11 0.00 : 81686: 0f 86 98 0f 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8168c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81690: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81694: e9 57 ff ff ff jmpq 815f0 <__GI_strncmp+0x800> 0.00 : 81699: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 816a0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 816a4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 816a8: f7 c2 e0 ff 00 00 test $0xffe0,%edx 0.00 : 816ae: 75 20 jne 816d0 <__GI_strncmp+0x8e0> 0.00 : 816b0: 49 83 fb 0b cmp $0xb,%r11 0.00 : 816b4: 76 1a jbe 816d0 <__GI_strncmp+0x8e0> 0.00 : 816b6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 816ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 816c1: e9 34 ff ff ff jmpq 815fa <__GI_strncmp+0x80a> 0.00 : 816c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 816cd: 00 00 00 0.00 : 816d0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 816d5: 66 0f 73 d8 05 psrldq $0x5,%xmm0 0.00 : 816da: 66 0f 73 db 05 psrldq $0x5,%xmm3 0.00 : 816df: e9 fc 0e 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 816e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 816eb: 00 00 00 00 00 0.00 : 816f0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 816f4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 816f8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 816fc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81700: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 81705: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81709: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8170d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81712: d3 ea shr %cl,%edx 0.00 : 81714: 41 d3 e9 shr %cl,%r9d 0.00 : 81717: 44 29 ca sub %r9d,%edx 0.00 : 8171a: 0f 85 d5 0e 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 81720: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 81724: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 81729: 4d 39 cb cmp %r9,%r11 0.00 : 8172c: 0f 82 f2 0e 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 81732: 4d 85 c9 test %r9,%r9 0.00 : 81735: 0f 84 e9 0e 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 8173b: 4d 89 cb mov %r9,%r11 0.00 : 8173e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81742: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 81749: 41 b9 06 00 00 00 mov $0x6,%r9d 0.00 : 8174f: 4c 8d 57 06 lea 0x6(%rdi),%r10 0.00 : 81753: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 8175a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81761: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81768: 0f 1f 84 00 00 00 00 0.00 : 8176f: 00 0.00 : 81770: 49 83 c2 10 add $0x10,%r10 0.00 : 81774: 0f 8f a6 00 00 00 jg 81820 <__GI_strncmp+0xa30> 0.00 : 8177a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8177f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81784: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81788: 66 0f 73 db 06 psrldq $0x6,%xmm3 0.00 : 8178d: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 81792: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81796: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8179a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8179e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 817a2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 817a6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 817ac: 0f 85 3e 0e 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 817b2: 49 83 eb 10 sub $0x10,%r11 0.00 : 817b6: 0f 86 68 0e 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 817bc: 48 83 c1 10 add $0x10,%rcx 0.00 : 817c0: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 817c4: 49 83 c2 10 add $0x10,%r10 0.00 : 817c8: 7f 56 jg 81820 <__GI_strncmp+0xa30> 0.00 : 817ca: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 817cf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 817d4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 817d8: 66 0f 73 db 06 psrldq $0x6,%xmm3 0.00 : 817dd: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 817e2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 817e6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 817ea: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 817ee: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 817f2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 817f6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 817fc: 0f 85 ee 0d 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81802: 49 83 eb 10 sub $0x10,%r11 0.00 : 81806: 0f 86 18 0e 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8180c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81810: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81814: e9 57 ff ff ff jmpq 81770 <__GI_strncmp+0x980> 0.00 : 81819: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 81820: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 81824: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 81828: f7 c2 c0 ff 00 00 test $0xffc0,%edx 0.00 : 8182e: 75 20 jne 81850 <__GI_strncmp+0xa60> 0.00 : 81830: 49 83 fb 0a cmp $0xa,%r11 0.00 : 81834: 76 1a jbe 81850 <__GI_strncmp+0xa60> 0.00 : 81836: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 8183a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81841: e9 34 ff ff ff jmpq 8177a <__GI_strncmp+0x98a> 0.00 : 81846: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8184d: 00 00 00 0.00 : 81850: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81855: 66 0f 73 d8 06 psrldq $0x6,%xmm0 0.00 : 8185a: 66 0f 73 db 06 psrldq $0x6,%xmm3 0.00 : 8185f: e9 7c 0d 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 81864: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8186b: 00 00 00 00 00 0.00 : 81870: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81874: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 81878: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 8187c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81880: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 81885: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81889: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8188d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81892: d3 ea shr %cl,%edx 0.00 : 81894: 41 d3 e9 shr %cl,%r9d 0.00 : 81897: 44 29 ca sub %r9d,%edx 0.00 : 8189a: 0f 85 55 0d 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 818a0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 818a4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 818a9: 4d 39 cb cmp %r9,%r11 0.00 : 818ac: 0f 82 72 0d 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 818b2: 4d 85 c9 test %r9,%r9 0.00 : 818b5: 0f 84 69 0d 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 818bb: 4d 89 cb mov %r9,%r11 0.00 : 818be: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 818c2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 818c9: 41 b9 07 00 00 00 mov $0x7,%r9d 0.00 : 818cf: 4c 8d 57 07 lea 0x7(%rdi),%r10 0.00 : 818d3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 818da: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 818e1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 818e8: 0f 1f 84 00 00 00 00 0.00 : 818ef: 00 0.00 : 818f0: 49 83 c2 10 add $0x10,%r10 0.00 : 818f4: 0f 8f a6 00 00 00 jg 819a0 <__GI_strncmp+0xbb0> 0.00 : 818fa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 818ff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81904: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81908: 66 0f 73 db 07 psrldq $0x7,%xmm3 0.00 : 8190d: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 81912: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81916: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8191a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8191e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81922: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81926: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8192c: 0f 85 be 0c 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81932: 49 83 eb 10 sub $0x10,%r11 0.00 : 81936: 0f 86 e8 0c 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8193c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81940: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81944: 49 83 c2 10 add $0x10,%r10 0.00 : 81948: 7f 56 jg 819a0 <__GI_strncmp+0xbb0> 0.00 : 8194a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8194f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81954: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81958: 66 0f 73 db 07 psrldq $0x7,%xmm3 0.00 : 8195d: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 81962: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81966: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8196a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8196e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81972: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81976: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8197c: 0f 85 6e 0c 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81982: 49 83 eb 10 sub $0x10,%r11 0.00 : 81986: 0f 86 98 0c 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8198c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81990: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81994: e9 57 ff ff ff jmpq 818f0 <__GI_strncmp+0xb00> 0.00 : 81999: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 819a0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 819a4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 819a8: f7 c2 80 ff 00 00 test $0xff80,%edx 0.00 : 819ae: 75 20 jne 819d0 <__GI_strncmp+0xbe0> 0.00 : 819b0: 49 83 fb 09 cmp $0x9,%r11 0.00 : 819b4: 76 1a jbe 819d0 <__GI_strncmp+0xbe0> 0.00 : 819b6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 819ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 819c1: e9 34 ff ff ff jmpq 818fa <__GI_strncmp+0xb0a> 0.00 : 819c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 819cd: 00 00 00 0.00 : 819d0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 819d5: 66 0f 73 d8 07 psrldq $0x7,%xmm0 0.00 : 819da: 66 0f 73 db 07 psrldq $0x7,%xmm3 0.00 : 819df: e9 fc 0b 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 819e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 819eb: 00 00 00 00 00 0.00 : 819f0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 819f4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 819f8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 819fc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81a00: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 81a05: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81a09: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 81a0d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81a12: d3 ea shr %cl,%edx 0.00 : 81a14: 41 d3 e9 shr %cl,%r9d 0.00 : 81a17: 44 29 ca sub %r9d,%edx 0.00 : 81a1a: 0f 85 d5 0b 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 81a20: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 81a24: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 81a29: 4d 39 cb cmp %r9,%r11 0.00 : 81a2c: 0f 82 f2 0b 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 81a32: 4d 85 c9 test %r9,%r9 0.00 : 81a35: 0f 84 e9 0b 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 81a3b: 4d 89 cb mov %r9,%r11 0.00 : 81a3e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81a42: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 81a49: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 81a4f: 4c 8d 57 08 lea 0x8(%rdi),%r10 0.00 : 81a53: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 81a5a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81a61: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81a68: 0f 1f 84 00 00 00 00 0.00 : 81a6f: 00 0.00 : 81a70: 49 83 c2 10 add $0x10,%r10 0.00 : 81a74: 0f 8f a6 00 00 00 jg 81b20 <__GI_strncmp+0xd30> 0.00 : 81a7a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81a7f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81a84: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81a88: 66 0f 73 db 08 psrldq $0x8,%xmm3 0.00 : 81a8d: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 81a92: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81a96: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81a9a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81a9e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81aa2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81aa6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81aac: 0f 85 3e 0b 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81ab2: 49 83 eb 10 sub $0x10,%r11 0.00 : 81ab6: 0f 86 68 0b 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81abc: 48 83 c1 10 add $0x10,%rcx 0.00 : 81ac0: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81ac4: 49 83 c2 10 add $0x10,%r10 0.00 : 81ac8: 7f 56 jg 81b20 <__GI_strncmp+0xd30> 0.00 : 81aca: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81acf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81ad4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81ad8: 66 0f 73 db 08 psrldq $0x8,%xmm3 0.00 : 81add: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 81ae2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81ae6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81aea: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81aee: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81af2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81af6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81afc: 0f 85 ee 0a 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81b02: 49 83 eb 10 sub $0x10,%r11 0.00 : 81b06: 0f 86 18 0b 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81b0c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81b10: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81b14: e9 57 ff ff ff jmpq 81a70 <__GI_strncmp+0xc80> 0.00 : 81b19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 81b20: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 81b24: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 81b28: f7 c2 00 ff 00 00 test $0xff00,%edx 0.00 : 81b2e: 75 20 jne 81b50 <__GI_strncmp+0xd60> 0.00 : 81b30: 49 83 fb 08 cmp $0x8,%r11 0.00 : 81b34: 76 1a jbe 81b50 <__GI_strncmp+0xd60> 0.00 : 81b36: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81b3a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81b41: e9 34 ff ff ff jmpq 81a7a <__GI_strncmp+0xc8a> 0.00 : 81b46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81b4d: 00 00 00 0.00 : 81b50: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81b55: 66 0f 73 d8 08 psrldq $0x8,%xmm0 0.00 : 81b5a: 66 0f 73 db 08 psrldq $0x8,%xmm3 0.00 : 81b5f: e9 7c 0a 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 81b64: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81b6b: 00 00 00 00 00 0.00 : 81b70: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81b74: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 81b78: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 81b7c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81b80: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 81b85: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81b89: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 81b8d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81b92: d3 ea shr %cl,%edx 0.00 : 81b94: 41 d3 e9 shr %cl,%r9d 0.00 : 81b97: 44 29 ca sub %r9d,%edx 0.00 : 81b9a: 0f 85 55 0a 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 81ba0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 81ba4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 81ba9: 4d 39 cb cmp %r9,%r11 0.00 : 81bac: 0f 82 72 0a 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 81bb2: 4d 85 c9 test %r9,%r9 0.00 : 81bb5: 0f 84 69 0a 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 81bbb: 4d 89 cb mov %r9,%r11 0.00 : 81bbe: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81bc2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 81bc9: 41 b9 09 00 00 00 mov $0x9,%r9d 0.00 : 81bcf: 4c 8d 57 09 lea 0x9(%rdi),%r10 0.00 : 81bd3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 81bda: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81be1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81be8: 0f 1f 84 00 00 00 00 0.00 : 81bef: 00 0.00 : 81bf0: 49 83 c2 10 add $0x10,%r10 0.00 : 81bf4: 0f 8f a6 00 00 00 jg 81ca0 <__GI_strncmp+0xeb0> 0.00 : 81bfa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81bff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81c04: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81c08: 66 0f 73 db 09 psrldq $0x9,%xmm3 0.00 : 81c0d: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 81c12: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81c16: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81c1a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81c1e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81c22: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81c26: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81c2c: 0f 85 be 09 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81c32: 49 83 eb 10 sub $0x10,%r11 0.00 : 81c36: 0f 86 e8 09 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81c3c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81c40: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81c44: 49 83 c2 10 add $0x10,%r10 0.00 : 81c48: 7f 56 jg 81ca0 <__GI_strncmp+0xeb0> 0.00 : 81c4a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81c4f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81c54: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81c58: 66 0f 73 db 09 psrldq $0x9,%xmm3 0.00 : 81c5d: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 81c62: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81c66: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81c6a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81c6e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81c72: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81c76: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81c7c: 0f 85 6e 09 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81c82: 49 83 eb 10 sub $0x10,%r11 0.00 : 81c86: 0f 86 98 09 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81c8c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81c90: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81c94: e9 57 ff ff ff jmpq 81bf0 <__GI_strncmp+0xe00> 0.00 : 81c99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 81ca0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 81ca4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 81ca8: f7 c2 00 fe 00 00 test $0xfe00,%edx 0.00 : 81cae: 75 20 jne 81cd0 <__GI_strncmp+0xee0> 0.00 : 81cb0: 49 83 fb 07 cmp $0x7,%r11 0.00 : 81cb4: 76 1a jbe 81cd0 <__GI_strncmp+0xee0> 0.00 : 81cb6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81cba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81cc1: e9 34 ff ff ff jmpq 81bfa <__GI_strncmp+0xe0a> 0.00 : 81cc6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81ccd: 00 00 00 0.00 : 81cd0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81cd5: 66 0f 73 d8 09 psrldq $0x9,%xmm0 0.00 : 81cda: 66 0f 73 db 09 psrldq $0x9,%xmm3 0.00 : 81cdf: e9 fc 08 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 81ce4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81ceb: 00 00 00 00 00 0.00 : 81cf0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81cf4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 81cf8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 81cfc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81d00: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 81d05: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81d09: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 81d0d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81d12: d3 ea shr %cl,%edx 0.00 : 81d14: 41 d3 e9 shr %cl,%r9d 0.00 : 81d17: 44 29 ca sub %r9d,%edx 0.00 : 81d1a: 0f 85 d5 08 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 81d20: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 81d24: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 81d29: 4d 39 cb cmp %r9,%r11 0.00 : 81d2c: 0f 82 f2 08 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 81d32: 4d 85 c9 test %r9,%r9 0.00 : 81d35: 0f 84 e9 08 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 81d3b: 4d 89 cb mov %r9,%r11 0.00 : 81d3e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81d42: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 81d49: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 81d4f: 4c 8d 57 0a lea 0xa(%rdi),%r10 0.00 : 81d53: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 81d5a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81d61: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81d68: 0f 1f 84 00 00 00 00 0.00 : 81d6f: 00 0.00 : 81d70: 49 83 c2 10 add $0x10,%r10 0.00 : 81d74: 0f 8f a6 00 00 00 jg 81e20 <__GI_strncmp+0x1030> 0.00 : 81d7a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81d7f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81d84: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81d88: 66 0f 73 db 0a psrldq $0xa,%xmm3 0.00 : 81d8d: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 81d92: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81d96: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81d9a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81d9e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81da2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81da6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81dac: 0f 85 3e 08 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81db2: 49 83 eb 10 sub $0x10,%r11 0.00 : 81db6: 0f 86 68 08 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81dbc: 48 83 c1 10 add $0x10,%rcx 0.00 : 81dc0: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81dc4: 49 83 c2 10 add $0x10,%r10 0.00 : 81dc8: 7f 56 jg 81e20 <__GI_strncmp+0x1030> 0.00 : 81dca: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81dcf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81dd4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81dd8: 66 0f 73 db 0a psrldq $0xa,%xmm3 0.00 : 81ddd: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 81de2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81de6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81dea: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81dee: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81df2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81df6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81dfc: 0f 85 ee 07 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81e02: 49 83 eb 10 sub $0x10,%r11 0.00 : 81e06: 0f 86 18 08 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81e0c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81e10: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81e14: e9 57 ff ff ff jmpq 81d70 <__GI_strncmp+0xf80> 0.00 : 81e19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 81e20: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 81e24: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 81e28: f7 c2 00 fc 00 00 test $0xfc00,%edx 0.00 : 81e2e: 75 20 jne 81e50 <__GI_strncmp+0x1060> 0.00 : 81e30: 49 83 fb 06 cmp $0x6,%r11 0.00 : 81e34: 76 1a jbe 81e50 <__GI_strncmp+0x1060> 0.00 : 81e36: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81e3a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81e41: e9 34 ff ff ff jmpq 81d7a <__GI_strncmp+0xf8a> 0.00 : 81e46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81e4d: 00 00 00 0.00 : 81e50: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81e55: 66 0f 73 d8 0a psrldq $0xa,%xmm0 0.00 : 81e5a: 66 0f 73 db 0a psrldq $0xa,%xmm3 0.00 : 81e5f: e9 7c 07 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 81e64: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81e6b: 00 00 00 00 00 0.00 : 81e70: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81e74: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 81e78: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 81e7c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81e80: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 81e85: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 81e89: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 81e8d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 81e92: d3 ea shr %cl,%edx 0.00 : 81e94: 41 d3 e9 shr %cl,%r9d 0.00 : 81e97: 44 29 ca sub %r9d,%edx 0.00 : 81e9a: 0f 85 55 07 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 81ea0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 81ea4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 81ea9: 4d 39 cb cmp %r9,%r11 0.00 : 81eac: 0f 82 72 07 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 81eb2: 4d 85 c9 test %r9,%r9 0.00 : 81eb5: 0f 84 69 07 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 81ebb: 4d 89 cb mov %r9,%r11 0.00 : 81ebe: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81ec2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 81ec9: 41 b9 0b 00 00 00 mov $0xb,%r9d 0.00 : 81ecf: 4c 8d 57 0b lea 0xb(%rdi),%r10 0.00 : 81ed3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 81eda: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81ee1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81ee8: 0f 1f 84 00 00 00 00 0.00 : 81eef: 00 0.00 : 81ef0: 49 83 c2 10 add $0x10,%r10 0.00 : 81ef4: 0f 8f a6 00 00 00 jg 81fa0 <__GI_strncmp+0x11b0> 0.00 : 81efa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81eff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81f04: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81f08: 66 0f 73 db 0b psrldq $0xb,%xmm3 0.00 : 81f0d: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 81f12: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81f16: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81f1a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81f1e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81f22: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81f26: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81f2c: 0f 85 be 06 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81f32: 49 83 eb 10 sub $0x10,%r11 0.00 : 81f36: 0f 86 e8 06 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81f3c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81f40: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81f44: 49 83 c2 10 add $0x10,%r10 0.00 : 81f48: 7f 56 jg 81fa0 <__GI_strncmp+0x11b0> 0.00 : 81f4a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81f4f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 81f54: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 81f58: 66 0f 73 db 0b psrldq $0xb,%xmm3 0.00 : 81f5d: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 81f62: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 81f66: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 81f6a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 81f6e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 81f72: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 81f76: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 81f7c: 0f 85 6e 06 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 81f82: 49 83 eb 10 sub $0x10,%r11 0.00 : 81f86: 0f 86 98 06 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 81f8c: 48 83 c1 10 add $0x10,%rcx 0.00 : 81f90: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 81f94: e9 57 ff ff ff jmpq 81ef0 <__GI_strncmp+0x1100> 0.00 : 81f99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 81fa0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 81fa4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 81fa8: f7 c2 00 f8 00 00 test $0xf800,%edx 0.00 : 81fae: 75 20 jne 81fd0 <__GI_strncmp+0x11e0> 0.00 : 81fb0: 49 83 fb 05 cmp $0x5,%r11 0.00 : 81fb4: 76 1a jbe 81fd0 <__GI_strncmp+0x11e0> 0.00 : 81fb6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81fba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 81fc1: e9 34 ff ff ff jmpq 81efa <__GI_strncmp+0x110a> 0.00 : 81fc6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81fcd: 00 00 00 0.00 : 81fd0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 81fd5: 66 0f 73 d8 0b psrldq $0xb,%xmm0 0.00 : 81fda: 66 0f 73 db 0b psrldq $0xb,%xmm3 0.00 : 81fdf: e9 fc 05 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 81fe4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 81feb: 00 00 00 00 00 0.00 : 81ff0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 81ff4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 81ff8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 81ffc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 82000: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 82005: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 82009: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8200d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 82012: d3 ea shr %cl,%edx 0.00 : 82014: 41 d3 e9 shr %cl,%r9d 0.00 : 82017: 44 29 ca sub %r9d,%edx 0.00 : 8201a: 0f 85 d5 05 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 82020: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 82024: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 82029: 4d 39 cb cmp %r9,%r11 0.00 : 8202c: 0f 82 f2 05 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 82032: 4d 85 c9 test %r9,%r9 0.00 : 82035: 0f 84 e9 05 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 8203b: 4d 89 cb mov %r9,%r11 0.00 : 8203e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 82042: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 82049: 41 b9 0c 00 00 00 mov $0xc,%r9d 0.00 : 8204f: 4c 8d 57 0c lea 0xc(%rdi),%r10 0.00 : 82053: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 8205a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 82061: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 82068: 0f 1f 84 00 00 00 00 0.00 : 8206f: 00 0.00 : 82070: 49 83 c2 10 add $0x10,%r10 0.00 : 82074: 0f 8f a6 00 00 00 jg 82120 <__GI_strncmp+0x1330> 0.00 : 8207a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8207f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 82084: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 82088: 66 0f 73 db 0c psrldq $0xc,%xmm3 0.00 : 8208d: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 82092: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 82096: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8209a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8209e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 820a2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 820a6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 820ac: 0f 85 3e 05 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 820b2: 49 83 eb 10 sub $0x10,%r11 0.00 : 820b6: 0f 86 68 05 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 820bc: 48 83 c1 10 add $0x10,%rcx 0.00 : 820c0: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 820c4: 49 83 c2 10 add $0x10,%r10 0.00 : 820c8: 7f 56 jg 82120 <__GI_strncmp+0x1330> 0.00 : 820ca: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 820cf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 820d4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 820d8: 66 0f 73 db 0c psrldq $0xc,%xmm3 0.00 : 820dd: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 820e2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 820e6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 820ea: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 820ee: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 820f2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 820f6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 820fc: 0f 85 ee 04 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 82102: 49 83 eb 10 sub $0x10,%r11 0.00 : 82106: 0f 86 18 05 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8210c: 48 83 c1 10 add $0x10,%rcx 0.00 : 82110: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 82114: e9 57 ff ff ff jmpq 82070 <__GI_strncmp+0x1280> 0.00 : 82119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 82120: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 82124: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 82128: f7 c2 00 f0 00 00 test $0xf000,%edx 0.00 : 8212e: 75 20 jne 82150 <__GI_strncmp+0x1360> 0.00 : 82130: 49 83 fb 04 cmp $0x4,%r11 0.00 : 82134: 76 1a jbe 82150 <__GI_strncmp+0x1360> 0.00 : 82136: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 8213a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 82141: e9 34 ff ff ff jmpq 8207a <__GI_strncmp+0x128a> 0.00 : 82146: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8214d: 00 00 00 0.00 : 82150: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 82155: 66 0f 73 d8 0c psrldq $0xc,%xmm0 0.00 : 8215a: 66 0f 73 db 0c psrldq $0xc,%xmm3 0.00 : 8215f: e9 7c 04 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 82164: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8216b: 00 00 00 00 00 0.00 : 82170: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 82174: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 82178: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 8217c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 82180: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 82185: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 82189: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8218d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 82192: d3 ea shr %cl,%edx 0.00 : 82194: 41 d3 e9 shr %cl,%r9d 0.00 : 82197: 44 29 ca sub %r9d,%edx 0.00 : 8219a: 0f 85 55 04 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 821a0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 821a4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 821a9: 4d 39 cb cmp %r9,%r11 0.00 : 821ac: 0f 82 72 04 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 821b2: 4d 85 c9 test %r9,%r9 0.00 : 821b5: 0f 84 69 04 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 821bb: 4d 89 cb mov %r9,%r11 0.00 : 821be: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 821c2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 821c9: 41 b9 0d 00 00 00 mov $0xd,%r9d 0.00 : 821cf: 4c 8d 57 0d lea 0xd(%rdi),%r10 0.00 : 821d3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 821da: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 821e1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 821e8: 0f 1f 84 00 00 00 00 0.00 : 821ef: 00 0.00 : 821f0: 49 83 c2 10 add $0x10,%r10 0.00 : 821f4: 0f 8f a6 00 00 00 jg 822a0 <__GI_strncmp+0x14b0> 0.00 : 821fa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 821ff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 82204: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 82208: 66 0f 73 db 0d psrldq $0xd,%xmm3 0.00 : 8220d: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 82212: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 82216: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8221a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8221e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 82222: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 82226: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8222c: 0f 85 be 03 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 82232: 49 83 eb 10 sub $0x10,%r11 0.00 : 82236: 0f 86 e8 03 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8223c: 48 83 c1 10 add $0x10,%rcx 0.00 : 82240: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 82244: 49 83 c2 10 add $0x10,%r10 0.00 : 82248: 7f 56 jg 822a0 <__GI_strncmp+0x14b0> 0.00 : 8224a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8224f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 82254: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 82258: 66 0f 73 db 0d psrldq $0xd,%xmm3 0.00 : 8225d: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 82262: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 82266: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8226a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8226e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 82272: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 82276: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8227c: 0f 85 6e 03 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 82282: 49 83 eb 10 sub $0x10,%r11 0.00 : 82286: 0f 86 98 03 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8228c: 48 83 c1 10 add $0x10,%rcx 0.00 : 82290: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 82294: e9 57 ff ff ff jmpq 821f0 <__GI_strncmp+0x1400> 0.00 : 82299: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 822a0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 822a4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 822a8: f7 c2 00 e0 00 00 test $0xe000,%edx 0.00 : 822ae: 75 20 jne 822d0 <__GI_strncmp+0x14e0> 0.00 : 822b0: 49 83 fb 03 cmp $0x3,%r11 0.00 : 822b4: 76 1a jbe 822d0 <__GI_strncmp+0x14e0> 0.00 : 822b6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 822ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 822c1: e9 34 ff ff ff jmpq 821fa <__GI_strncmp+0x140a> 0.00 : 822c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 822cd: 00 00 00 0.00 : 822d0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 822d5: 66 0f 73 d8 0d psrldq $0xd,%xmm0 0.00 : 822da: 66 0f 73 db 0d psrldq $0xd,%xmm3 0.00 : 822df: e9 fc 02 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 822e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 822eb: 00 00 00 00 00 0.00 : 822f0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 822f4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 822f8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 822fc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 82300: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 82305: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 82309: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8230d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 82312: d3 ea shr %cl,%edx 0.00 : 82314: 41 d3 e9 shr %cl,%r9d 0.00 : 82317: 44 29 ca sub %r9d,%edx 0.00 : 8231a: 0f 85 d5 02 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 82320: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 82324: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 82329: 4d 39 cb cmp %r9,%r11 0.00 : 8232c: 0f 82 f2 02 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 82332: 4d 85 c9 test %r9,%r9 0.00 : 82335: 0f 84 e9 02 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 8233b: 4d 89 cb mov %r9,%r11 0.00 : 8233e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 82342: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 82349: 41 b9 0e 00 00 00 mov $0xe,%r9d 0.00 : 8234f: 4c 8d 57 0e lea 0xe(%rdi),%r10 0.00 : 82353: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 8235a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 82361: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 82368: 0f 1f 84 00 00 00 00 0.00 : 8236f: 00 0.00 : 82370: 49 83 c2 10 add $0x10,%r10 0.00 : 82374: 0f 8f a6 00 00 00 jg 82420 <__GI_strncmp+0x1630> 0.00 : 8237a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8237f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 82384: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 82388: 66 0f 73 db 0e psrldq $0xe,%xmm3 0.00 : 8238d: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 82392: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 82396: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8239a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8239e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 823a2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 823a6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 823ac: 0f 85 3e 02 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 823b2: 49 83 eb 10 sub $0x10,%r11 0.00 : 823b6: 0f 86 68 02 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 823bc: 48 83 c1 10 add $0x10,%rcx 0.00 : 823c0: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 823c4: 49 83 c2 10 add $0x10,%r10 0.00 : 823c8: 7f 56 jg 82420 <__GI_strncmp+0x1630> 0.00 : 823ca: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 823cf: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 823d4: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 823d8: 66 0f 73 db 0e psrldq $0xe,%xmm3 0.00 : 823dd: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 823e2: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 823e6: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 823ea: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 823ee: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 823f2: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 823f6: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 823fc: 0f 85 ee 01 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 82402: 49 83 eb 10 sub $0x10,%r11 0.00 : 82406: 0f 86 18 02 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8240c: 48 83 c1 10 add $0x10,%rcx 0.00 : 82410: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 82414: e9 57 ff ff ff jmpq 82370 <__GI_strncmp+0x1580> 0.00 : 82419: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 82420: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 82424: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 82428: f7 c2 00 c0 00 00 test $0xc000,%edx 0.00 : 8242e: 75 20 jne 82450 <__GI_strncmp+0x1660> 0.00 : 82430: 49 83 fb 02 cmp $0x2,%r11 0.00 : 82434: 76 1a jbe 82450 <__GI_strncmp+0x1660> 0.00 : 82436: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 8243a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 82441: e9 34 ff ff ff jmpq 8237a <__GI_strncmp+0x158a> 0.00 : 82446: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8244d: 00 00 00 0.00 : 82450: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 82455: 66 0f 73 d8 0e psrldq $0xe,%xmm0 0.00 : 8245a: 66 0f 73 db 0e psrldq $0xe,%xmm3 0.00 : 8245f: e9 7c 01 00 00 jmpq 825e0 <__GI_strncmp+0x17f0> 0.00 : 82464: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8246b: 00 00 00 00 00 33.33 : 82470: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 82474: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 82478: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 8247c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 82480: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 82485: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 82489: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 8248d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 82492: d3 ea shr %cl,%edx 0.00 : 82494: 41 d3 e9 shr %cl,%r9d 0.00 : 82497: 44 29 ca sub %r9d,%edx 0.00 : 8249a: 0f 85 55 01 00 00 jne 825f5 <__GI_strncmp+0x1805> 0.00 : 824a0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 824a4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 824a9: 4d 39 cb cmp %r9,%r11 0.00 : 824ac: 0f 82 72 01 00 00 jb 82624 <__GI_strncmp+0x1834> 0.00 : 824b2: 4d 85 c9 test %r9,%r9 0.00 : 824b5: 0f 84 69 01 00 00 je 82624 <__GI_strncmp+0x1834> 0.00 : 824bb: 4d 89 cb mov %r9,%r11 0.00 : 824be: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 824c2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 824c9: 41 b9 0f 00 00 00 mov $0xf,%r9d 0.00 : 824cf: 4c 8d 57 0f lea 0xf(%rdi),%r10 0.00 : 824d3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 824da: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 824e1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 824e8: 0f 1f 84 00 00 00 00 0.00 : 824ef: 00 0.00 : 824f0: 49 83 c2 10 add $0x10,%r10 0.00 : 824f4: 0f 8f a6 00 00 00 jg 825a0 <__GI_strncmp+0x17b0> 0.00 : 824fa: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 824ff: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 82504: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 82508: 66 0f 73 db 0f psrldq $0xf,%xmm3 0.00 : 8250d: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 82512: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 82516: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8251a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8251e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 82522: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 82526: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8252c: 0f 85 be 00 00 00 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 82532: 49 83 eb 10 sub $0x10,%r11 0.00 : 82536: 0f 86 e8 00 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 8253c: 48 83 c1 10 add $0x10,%rcx 0.00 : 82540: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 82544: 49 83 c2 10 add $0x10,%r10 0.00 : 82548: 7f 56 jg 825a0 <__GI_strncmp+0x17b0> 0.00 : 8254a: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 8254f: 66 0f 6f 14 0f movdqa (%rdi,%rcx,1),%xmm2 0.00 : 82554: 66 0f 6f e2 movdqa %xmm2,%xmm4 0.00 : 82558: 66 0f 73 db 0f psrldq $0xf,%xmm3 0.00 : 8255d: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 82562: 66 0f eb d3 por %xmm3,%xmm2 0.00 : 82566: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 8256a: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 8256e: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 82572: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 82576: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8257c: 75 72 jne 825f0 <__GI_strncmp+0x1800> 0.00 : 8257e: 49 83 eb 10 sub $0x10,%r11 0.00 : 82582: 0f 86 9c 00 00 00 jbe 82624 <__GI_strncmp+0x1834> 0.00 : 82588: 48 83 c1 10 add $0x10,%rcx 0.00 : 8258c: 66 0f 6f dc movdqa %xmm4,%xmm3 0.00 : 82590: e9 5b ff ff ff jmpq 824f0 <__GI_strncmp+0x1700> 0.00 : 82595: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8259c: 00 00 00 00 0.00 : 825a0: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 825a4: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 825a8: f7 c2 00 80 00 00 test $0x8000,%edx 0.00 : 825ae: 75 20 jne 825d0 <__GI_strncmp+0x17e0> 0.00 : 825b0: 49 83 fb 01 cmp $0x1,%r11 0.00 : 825b4: 76 1a jbe 825d0 <__GI_strncmp+0x17e0> 0.00 : 825b6: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 825ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 825c1: e9 34 ff ff ff jmpq 824fa <__GI_strncmp+0x170a> 0.00 : 825c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 825cd: 00 00 00 0.00 : 825d0: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 825d5: 66 0f 73 db 0f psrldq $0xf,%xmm3 0.00 : 825da: 66 0f 73 d8 0f psrldq $0xf,%xmm0 0.00 : 825df: 90 nop 0.00 : 825e0: 66 0f 74 cb pcmpeqb %xmm3,%xmm1 0.00 : 825e4: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 825e8: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 825ec: f7 d2 not %edx 0.00 : 825ee: 66 90 xchg %ax,%ax 0.00 : 825f0: 49 8d 44 09 f0 lea -0x10(%r9,%rcx,1),%rax 0.00 : 825f5: 48 8d 3c 07 lea (%rdi,%rax,1),%rdi 0.00 : 825f9: 48 8d 34 0e lea (%rsi,%rcx,1),%rsi 0.00 : 825fd: 45 85 c0 test %r8d,%r8d 0.00 : 82600: 74 0e je 82610 <__GI_strncmp+0x1820> 0.00 : 82602: 48 87 f7 xchg %rsi,%rdi 0.00 : 82605: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8260c: 00 00 00 00 0.00 : 82610: 48 0f bc d2 bsf %rdx,%rdx 0.00 : 82614: 49 29 d3 sub %rdx,%r11 0.00 : 82617: 76 0b jbe 82624 <__GI_strncmp+0x1834> 0.00 : 82619: 0f b6 0c 16 movzbl (%rsi,%rdx,1),%ecx 0.00 : 8261d: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 33.33 : 82621: 29 c8 sub %ecx,%eax 0.00 : 82623: c3 retq 0.00 : 82624: 31 c0 xor %eax,%eax 0.00 : 82626: c3 retq 0.00 : 82627: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8262e: 00 00 0.00 : 82630: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 82633: 0f b6 07 movzbl (%rdi),%eax 0.00 : 82636: 29 c8 sub %ecx,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008bc00 : 0.00 : 8bc00: 41 57 push %r15 0.00 : 8bc02: 41 56 push %r14 0.00 : 8bc04: 41 55 push %r13 0.00 : 8bc06: 41 54 push %r12 0.00 : 8bc08: 55 push %rbp 0.00 : 8bc09: 89 fd mov %edi,%ebp 0.00 : 8bc0b: 53 push %rbx 0.00 : 8bc0c: 48 83 ec 28 sub $0x28,%rsp 0.00 : 8bc10: 83 fe 01 cmp $0x1,%esi 0.00 : 8bc13: 0f 86 f9 00 00 00 jbe 8bd12 0.00 : 8bc19: 4c 8d 74 24 27 lea 0x27(%rsp),%r14 0.00 : 8bc1e: 4c 8d 6c 24 26 lea 0x26(%rsp),%r13 0.00 : 8bc23: c6 44 24 27 00 movb $0x0,0x27(%rsp) 0.00 : 8bc28: c6 44 24 26 00 movb $0x0,0x26(%rsp) 0.00 : 8bc2d: c7 44 24 10 01 00 00 movl $0x1,0x10(%rsp) 0.00 : 8bc34: 00 0.00 : 8bc35: c7 44 24 0c 01 00 00 movl $0x1,0xc(%rsp) 0.00 : 8bc3c: 00 0.00 : 8bc3d: b8 02 00 00 00 mov $0x2,%eax 0.00 : 8bc42: 0f a2 cpuid 0.00 : 8bc44: 83 7c 24 0c 01 cmpl $0x1,0xc(%rsp) 33.33 : 8bc49: 89 54 24 14 mov %edx,0x14(%rsp) 0.00 : 8bc4d: 41 89 cf mov %ecx,%r15d 0.00 : 8bc50: 41 89 dc mov %ebx,%r12d 0.00 : 8bc53: 74 7b je 8bcd0 0.00 : 8bc55: 4c 89 ea mov %r13,%rdx 0.00 : 8bc58: 4c 89 f1 mov %r14,%rcx 0.00 : 8bc5b: 89 c6 mov %eax,%esi 0.00 : 8bc5d: 89 ef mov %ebp,%edi 0.00 : 8bc5f: e8 3c fe ff ff callq 8baa0 33.33 : 8bc64: 48 85 c0 test %rax,%rax 0.00 : 8bc67: 48 89 c2 mov %rax,%rdx 0.00 : 8bc6a: 0f 85 90 00 00 00 jne 8bd00 0.00 : 8bc70: 4c 89 ea mov %r13,%rdx 0.00 : 8bc73: 4c 89 f1 mov %r14,%rcx 0.00 : 8bc76: 44 89 e6 mov %r12d,%esi 0.00 : 8bc79: 89 ef mov %ebp,%edi 0.00 : 8bc7b: e8 20 fe ff ff callq 8baa0 0.00 : 8bc80: 48 85 c0 test %rax,%rax 0.00 : 8bc83: 48 89 c2 mov %rax,%rdx 0.00 : 8bc86: 75 78 jne 8bd00 0.00 : 8bc88: 4c 89 ea mov %r13,%rdx 0.00 : 8bc8b: 4c 89 f1 mov %r14,%rcx 0.00 : 8bc8e: 44 89 fe mov %r15d,%esi 0.00 : 8bc91: 89 ef mov %ebp,%edi 0.00 : 8bc93: e8 08 fe ff ff callq 8baa0 0.00 : 8bc98: 48 85 c0 test %rax,%rax 0.00 : 8bc9b: 48 89 c2 mov %rax,%rdx 0.00 : 8bc9e: 75 60 jne 8bd00 0.00 : 8bca0: 8b 74 24 14 mov 0x14(%rsp),%esi 0.00 : 8bca4: 4c 89 ea mov %r13,%rdx 0.00 : 8bca7: 4c 89 f1 mov %r14,%rcx 0.00 : 8bcaa: 89 ef mov %ebp,%edi 0.00 : 8bcac: e8 ef fd ff ff callq 8baa0 0.00 : 8bcb1: 48 85 c0 test %rax,%rax 0.00 : 8bcb4: 48 89 c2 mov %rax,%rdx 0.00 : 8bcb7: 75 47 jne 8bd00 0.00 : 8bcb9: 8b 4c 24 0c mov 0xc(%rsp),%ecx 0.00 : 8bcbd: 39 4c 24 10 cmp %ecx,0x10(%rsp) 0.00 : 8bcc1: 76 1d jbe 8bce0 0.00 : 8bcc3: 83 c1 01 add $0x1,%ecx 0.00 : 8bcc6: 89 4c 24 0c mov %ecx,0xc(%rsp) 0.00 : 8bcca: e9 6e ff ff ff jmpq 8bc3d 0.00 : 8bccf: 90 nop 0.00 : 8bcd0: 0f b6 d0 movzbl %al,%edx 0.00 : 8bcd3: 30 c0 xor %al,%al 0.00 : 8bcd5: 89 54 24 10 mov %edx,0x10(%rsp) 0.00 : 8bcd9: e9 77 ff ff ff jmpq 8bc55 0.00 : 8bcde: 66 90 xchg %ax,%ax 0.00 : 8bce0: 8d 85 41 ff ff ff lea -0xbf(%rbp),%eax 33.33 : 8bce6: 83 f8 05 cmp $0x5,%eax 0.00 : 8bce9: 77 15 ja 8bd00 0.00 : 8bceb: 80 7c 24 27 00 cmpb $0x0,0x27(%rsp) 0.00 : 8bcf0: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 8bcf7: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 8bcfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8bd00: 48 83 c4 28 add $0x28,%rsp 0.00 : 8bd04: 48 89 d0 mov %rdx,%rax 0.00 : 8bd07: 5b pop %rbx 0.00 : 8bd08: 5d pop %rbp 0.00 : 8bd09: 41 5c pop %r12 0.00 : 8bd0b: 41 5d pop %r13 0.00 : 8bd0d: 41 5e pop %r14 0.00 : 8bd0f: 41 5f pop %r15 0.00 : 8bd11: c3 retq 0.00 : 8bd12: 48 8d 0d b4 02 0b 00 lea 0xb02b4(%rip),%rcx # 13bfcd <__PRETTY_FUNCTION__.3655> 0.00 : 8bd19: 48 8d 35 c8 45 0b 00 lea 0xb45c8(%rip),%rsi # 1402e8 <__PRETTY_FUNCTION__.11129+0x290f> 0.00 : 8bd20: 48 8d 3d 9a 02 0b 00 lea 0xb029a(%rip),%rdi # 13bfc1 <__PRETTY_FUNCTION__.9176+0x2f> 0.00 : 8bd27: ba 01 01 00 00 mov $0x101,%edx 0.00 : 8bd2c: e8 ef fb f9 ff callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008c1f0 : 0.00 : 8c1f0: 8b 07 mov (%rdi),%eax 100.00 : 8c1f2: 31 d2 xor %edx,%edx 0.00 : 8c1f4: 85 c0 test %eax,%eax 0.00 : 8c1f6: 74 6e je 8c266 0.00 : 8c1f8: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 8c1fb: ba 01 00 00 00 mov $0x1,%edx 0.00 : 8c200: 85 c0 test %eax,%eax 0.00 : 8c202: 74 62 je 8c266 0.00 : 8c204: 44 8b 5f 08 mov 0x8(%rdi),%r11d 0.00 : 8c208: ba 02 00 00 00 mov $0x2,%edx 0.00 : 8c20d: 45 85 db test %r11d,%r11d 0.00 : 8c210: 74 54 je 8c266 0.00 : 8c212: 44 8b 57 0c mov 0xc(%rdi),%r10d 0.00 : 8c216: b8 03 00 00 00 mov $0x3,%eax 0.00 : 8c21b: ba 03 00 00 00 mov $0x3,%edx 0.00 : 8c220: 45 85 d2 test %r10d,%r10d 0.00 : 8c223: 75 35 jne 8c25a 0.00 : 8c225: eb 3f jmp 8c266 0.00 : 8c227: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8c22e: 00 00 0.00 : 8c230: 44 8b 4c 87 08 mov 0x8(%rdi,%rax,4),%r9d 0.00 : 8c235: 48 8d 50 02 lea 0x2(%rax),%rdx 0.00 : 8c239: 45 85 c9 test %r9d,%r9d 0.00 : 8c23c: 74 28 je 8c266 0.00 : 8c23e: 44 8b 44 87 0c mov 0xc(%rdi,%rax,4),%r8d 0.00 : 8c243: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 8c247: 45 85 c0 test %r8d,%r8d 0.00 : 8c24a: 74 1a je 8c266 0.00 : 8c24c: 48 8d 50 04 lea 0x4(%rax),%rdx 0.00 : 8c250: 8b 34 97 mov (%rdi,%rdx,4),%esi 0.00 : 8c253: 85 f6 test %esi,%esi 0.00 : 8c255: 74 0f je 8c266 0.00 : 8c257: 48 89 d0 mov %rdx,%rax 0.00 : 8c25a: 8b 4c 87 04 mov 0x4(%rdi,%rax,4),%ecx 0.00 : 8c25e: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 8c262: 85 c9 test %ecx,%ecx 0.00 : 8c264: 75 ca jne 8c230 0.00 : 8c266: 48 89 d0 mov %rdx,%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000aa130 : 0.00 : aa130: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 100.00 : aa135: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : aa13a: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : aa13f: 48 81 ec 28 01 00 00 sub $0x128,%rsp 0.00 : aa146: 83 fe 06 cmp $0x6,%esi 0.00 : aa149: 0f 84 b1 00 00 00 je aa200 0.00 : aa14f: 7e 4f jle aa1a0 0.00 : aa151: 83 fe 0d cmp $0xd,%esi 0.00 : aa154: 0f 84 c6 00 00 00 je aa220 0.00 : aa15a: 83 fe 14 cmp $0x14,%esi 0.00 : aa15d: 0f 1f 00 nopl (%rax) 0.00 : aa160: 74 7e je aa1e0 0.00 : aa162: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : aa165: 0f 84 d5 00 00 00 je aa240 0.00 : aa16b: 83 fe 14 cmp $0x14,%esi 0.00 : aa16e: 66 90 xchg %ax,%ax 0.00 : aa170: 0f 86 f2 00 00 00 jbe aa268 0.00 : aa176: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : aa17d: 00 00 0.00 : aa17f: 48 8b 15 b2 7c 2c 00 mov 0x2c7cb2(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : aa186: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : aa18d: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : aa194: eb 28 jmp aa1be 0.00 : aa196: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : aa19d: 00 00 00 0.00 : aa1a0: 85 f6 test %esi,%esi 0.00 : aa1a2: 75 be jne aa162 0.00 : aa1a4: 48 8d 9c 24 90 00 00 lea 0x90(%rsp),%rbx 0.00 : aa1ab: 00 0.00 : aa1ac: 48 89 de mov %rbx,%rsi 0.00 : aa1af: e8 dc 2a 02 00 callq ccc90 <__statfs> 0.00 : aa1b4: 48 89 de mov %rbx,%rsi 0.00 : aa1b7: 89 c7 mov %eax,%edi 0.00 : aa1b9: e8 a2 fb ff ff callq a9d60 <__statfs_link_max> 0.00 : aa1be: 48 8b 9c 24 10 01 00 mov 0x110(%rsp),%rbx 0.00 : aa1c5: 00 0.00 : aa1c6: 48 8b ac 24 18 01 00 mov 0x118(%rsp),%rbp 0.00 : aa1cd: 00 0.00 : aa1ce: 4c 8b a4 24 20 01 00 mov 0x120(%rsp),%r12 0.00 : aa1d5: 00 0.00 : aa1d6: 48 81 c4 28 01 00 00 add $0x128,%rsp 0.00 : aa1dd: c3 retq 0.00 : aa1de: 66 90 xchg %ax,%ax 0.00 : aa1e0: 48 8d 9c 24 90 00 00 lea 0x90(%rsp),%rbx 0.00 : aa1e7: 00 0.00 : aa1e8: 48 89 de mov %rbx,%rsi 0.00 : aa1eb: e8 a0 2a 02 00 callq ccc90 <__statfs> 0.00 : aa1f0: 48 89 de mov %rbx,%rsi 0.00 : aa1f3: 89 c7 mov %eax,%edi 0.00 : aa1f5: e8 56 fd ff ff callq a9f50 <__statfs_symlinks> 0.00 : aa1fa: eb c2 jmp aa1be 0.00 : aa1fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : aa200: 48 8d 9c 24 90 00 00 lea 0x90(%rsp),%rbx 0.00 : aa207: 00 0.00 : aa208: 48 89 de mov %rbx,%rsi 0.00 : aa20b: e8 80 2a 02 00 callq ccc90 <__statfs> 0.00 : aa210: 48 89 de mov %rbx,%rsi 0.00 : aa213: 89 c7 mov %eax,%edi 0.00 : aa215: e8 16 fe ff ff callq aa030 <__statfs_chown_restricted> 0.00 : aa21a: eb a2 jmp aa1be 0.00 : aa21c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : aa220: 48 8d 9c 24 90 00 00 lea 0x90(%rsp),%rbx 0.00 : aa227: 00 0.00 : aa228: 48 89 de mov %rbx,%rsi 0.00 : aa22b: e8 60 2a 02 00 callq ccc90 <__statfs> 0.00 : aa230: 48 89 de mov %rbx,%rsi 0.00 : aa233: 89 c7 mov %eax,%edi 0.00 : aa235: e8 26 fc ff ff callq a9e60 <__statfs_filesize_max> 0.00 : aa23a: eb 82 jmp aa1be 0.00 : aa23c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : aa240: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : aa247: 00 00 0.00 : aa249: 48 8b 15 e8 7b 2c 00 mov 0x2c7be8(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : aa250: c7 04 10 02 00 00 00 movl $0x2,(%rax,%rdx,1) 0.00 : aa257: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : aa25e: e9 5b ff ff ff jmpq aa1be 0.00 : aa263: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : aa268: 48 8d 15 b9 d2 08 00 lea 0x8d2b9(%rip),%rdx # 137528 <__mon_yday+0x708> 0.00 : aa26f: 89 f0 mov %esi,%eax 0.00 : aa271: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : aa275: 48 01 d0 add %rdx,%rax 0.00 : aa278: ff e0 jmpq *%rax 0.00 : aa27a: 48 89 e6 mov %rsp,%rsi 0.00 : aa27d: e8 6e 2a 02 00 callq cccf0 0.00 : aa282: 85 c0 test %eax,%eax 0.00 : aa284: 78 3a js aa2c0 0.00 : aa286: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : aa28b: e9 2e ff ff ff jmpq aa1be 0.00 : aa290: 48 89 fe mov %rdi,%rsi 0.00 : aa293: 48 89 e2 mov %rsp,%rdx 0.00 : aa296: bf 01 00 00 00 mov $0x1,%edi 0.00 : aa29b: e8 b0 24 02 00 callq cc750 <__xstat> 0.00 : aa2a0: 85 c0 test %eax,%eax 0.00 : aa2a2: 78 1c js aa2c0 0.00 : aa2a4: 8b 44 24 18 mov 0x18(%rsp),%eax 0.00 : aa2a8: 25 00 f0 00 00 and $0xf000,%eax 0.00 : aa2ad: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : aa2b2: 74 18 je aa2cc 0.00 : aa2b4: 3d 00 60 00 00 cmp $0x6000,%eax 0.00 : aa2b9: 74 11 je aa2cc 0.00 : aa2bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : aa2c0: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : aa2c7: e9 f2 fe ff ff jmpq aa1be 0.00 : aa2cc: b8 01 00 00 00 mov $0x1,%eax 0.00 : aa2d1: e9 e8 fe ff ff jmpq aa1be 0.00 : aa2d6: 83 7c 1d 00 26 cmpl $0x26,0x0(%rbp,%rbx,1) 0.00 : aa2db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : aa2e0: 75 de jne aa2c0 0.00 : aa2e2: 44 89 64 1d 00 mov %r12d,0x0(%rbp,%rbx,1) 0.00 : aa2e7: b8 ff 00 00 00 mov $0xff,%eax 0.00 : aa2ec: e9 cd fe ff ff jmpq aa1be 0.00 : aa2f1: 31 c0 xor %eax,%eax 0.00 : aa2f3: e9 c6 fe ff ff jmpq aa1be 0.00 : aa2f8: b8 00 10 00 00 mov $0x1000,%eax 0.00 : aa2fd: 0f 1f 00 nopl (%rax) 0.00 : aa300: e9 b9 fe ff ff jmpq aa1be 0.00 : aa305: 48 89 e6 mov %rsp,%rsi 0.00 : aa308: e8 e3 29 02 00 callq cccf0 0.00 : aa30d: 85 c0 test %eax,%eax 0.00 : aa30f: 90 nop 0.00 : aa310: 78 ae js aa2c0 0.00 : aa312: 48 8b 04 24 mov (%rsp),%rax 0.00 : aa316: e9 a3 fe ff ff jmpq aa1be 0.00 : aa31b: b8 20 00 00 00 mov $0x20,%eax 0.00 : aa320: e9 99 fe ff ff jmpq aa1be 0.00 : aa325: 48 8b 1d 0c 7b 2c 00 mov 0x2c7b0c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : aa32c: 64 48 8b 2c 25 00 00 mov %fs:0x0,%rbp 0.00 : aa333: 00 00 0.00 : aa335: 48 89 e6 mov %rsp,%rsi 0.00 : aa338: 44 8b 64 1d 00 mov 0x0(%rbp,%rbx,1),%r12d 0.00 : aa33d: e8 4e 29 02 00 callq ccc90 <__statfs> 0.00 : aa342: 85 c0 test %eax,%eax 0.00 : aa344: 78 90 js aa2d6 0.00 : aa346: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : aa34b: e9 6e fe ff ff jmpq aa1be Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b0e20 : 0.00 : b0e20: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : b0e23: 85 c0 test %eax,%eax 0.00 : b0e25: 7e 48 jle b0e6f 0.00 : b0e27: 44 8d 40 ff lea -0x1(%rax),%r8d 0.00 : b0e2b: 31 c9 xor %ecx,%ecx 0.00 : b0e2d: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : b0e31: 41 39 c8 cmp %ecx,%r8d 0.00 : b0e34: 76 32 jbe b0e68 100.00 : b0e36: 42 8d 14 01 lea (%rcx,%r8,1),%edx 0.00 : b0e3a: d1 ea shr %edx 0.00 : b0e3c: 89 d0 mov %edx,%eax 0.00 : b0e3e: 3b 34 87 cmp (%rdi,%rax,4),%esi 0.00 : b0e41: 7f 17 jg b0e5a 0.00 : b0e43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b0e48: 39 d1 cmp %edx,%ecx 0.00 : b0e4a: 41 89 d0 mov %edx,%r8d 0.00 : b0e4d: 73 19 jae b0e68 0.00 : b0e4f: 01 ca add %ecx,%edx 0.00 : b0e51: d1 ea shr %edx 0.00 : b0e53: 89 d0 mov %edx,%eax 0.00 : b0e55: 39 34 87 cmp %esi,(%rdi,%rax,4) 0.00 : b0e58: 7d ee jge b0e48 0.00 : b0e5a: 8d 4a 01 lea 0x1(%rdx),%ecx 0.00 : b0e5d: 41 39 c8 cmp %ecx,%r8d 0.00 : b0e60: 77 d4 ja b0e36 0.00 : b0e62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b0e68: 89 c8 mov %ecx,%eax 0.00 : b0e6a: 39 34 87 cmp %esi,(%rdi,%rax,4) 0.00 : b0e6d: 74 09 je b0e78 0.00 : b0e6f: 31 c0 xor %eax,%eax 0.00 : b0e71: c3 retq 0.00 : b0e72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b0e78: 8d 41 01 lea 0x1(%rcx),%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b3940 : 0.00 : b3940: 41 57 push %r15 0.00 : b3942: 41 56 push %r14 0.00 : b3944: 4c 63 f2 movslq %edx,%r14 0.00 : b3947: 49 c1 e6 04 shl $0x4,%r14 0.00 : b394b: 41 55 push %r13 0.00 : b394d: 49 89 f5 mov %rsi,%r13 0.00 : b3950: 41 54 push %r12 0.00 : b3952: 55 push %rbp 0.00 : b3953: 53 push %rbx 0.00 : b3954: 48 83 ec 48 sub $0x48,%rsp 0.00 : b3958: 48 89 7c 24 18 mov %rdi,0x18(%rsp) 0.00 : b395d: 89 54 24 14 mov %edx,0x14(%rsp) 0.00 : b3961: 89 4c 24 10 mov %ecx,0x10(%rsp) 0.00 : b3965: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : b3969: 42 8b 74 30 04 mov 0x4(%rax,%r14,1),%esi 0.00 : b396e: 48 8d 44 24 30 lea 0x30(%rsp),%rax 0.00 : b3973: 48 89 c7 mov %rax,%rdi 0.00 : b3976: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : b397b: 83 c6 01 add $0x1,%esi 0.00 : b397e: e8 ad df ff ff callq b1930 0.00 : b3983: 85 c0 test %eax,%eax 0.00 : b3985: 89 c2 mov %eax,%edx 0.00 : b3987: 0f 85 47 01 00 00 jne b3ad4 0.00 : b398d: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : b3991: 42 c7 44 30 04 ff ff movl $0xffffffff,0x4(%rax,%r14,1) 0.00 : b3998: ff ff 0.00 : b399a: 49 8b 75 00 mov 0x0(%r13),%rsi 100.00 : b399e: 4a 8d 14 36 lea (%rsi,%r14,1),%rdx 0.00 : b39a2: 8b 4a 08 mov 0x8(%rdx),%ecx 0.00 : b39a5: f7 c1 00 ff 03 00 test $0x3ff00,%ecx 0.00 : b39ab: 74 2b je b39d8 0.00 : b39ad: 4c 89 f0 mov %r14,%rax 0.00 : b39b0: 49 03 45 28 add 0x28(%r13),%rax 0.00 : b39b4: 44 8b 50 04 mov 0x4(%rax),%r10d 0.00 : b39b8: 45 85 d2 test %r10d,%r10d 0.00 : b39bb: 74 1b je b39d8 0.00 : b39bd: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b39c1: 48 63 00 movslq (%rax),%rax 0.00 : b39c4: 48 c1 e0 04 shl $0x4,%rax 0.00 : b39c8: f6 44 06 0a 04 testb $0x4,0xa(%rsi,%rax,1) 0.00 : b39cd: 0f 84 66 01 00 00 je b3b39 0.00 : b39d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b39d8: f6 42 08 08 testb $0x8,0x8(%rdx) 0.00 : b39dc: 0f 84 a6 00 00 00 je b3a88 0.00 : b39e2: 4c 89 f0 mov %r14,%rax 0.00 : b39e5: 49 03 45 28 add 0x28(%r13),%rax 0.00 : b39e9: 44 8b 48 04 mov 0x4(%rax),%r9d 0.00 : b39ed: 45 85 c9 test %r9d,%r9d 0.00 : b39f0: 0f 8e 92 00 00 00 jle b3a88 0.00 : b39f6: 48 8d 54 24 20 lea 0x20(%rsp),%rdx 0.00 : b39fb: 45 31 e4 xor %r12d,%r12d 0.00 : b39fe: 45 31 ff xor %r15d,%r15d 0.00 : b3a01: 31 ed xor %ebp,%ebp 0.00 : b3a03: 48 89 14 24 mov %rdx,(%rsp) 0.00 : b3a07: eb 55 jmp b3a5e 0.00 : b3a09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b3a10: 85 c0 test %eax,%eax 0.00 : b3a12: 0f 84 d0 00 00 00 je b3ae8 0.00 : b3a18: 48 8b 01 mov (%rcx),%rax 0.00 : b3a1b: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : b3a20: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : b3a24: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : b3a29: 48 8b 34 24 mov (%rsp),%rsi 0.00 : b3a2d: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : b3a32: e8 49 ed ff ff callq b2780 0.00 : b3a37: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : b3a3b: 44 8b 44 18 04 mov 0x4(%rax,%rbx,1),%r8d 0.00 : b3a40: 45 85 c0 test %r8d,%r8d 0.00 : b3a43: 0f 84 bf 00 00 00 je b3b08 0.00 : b3a49: 4c 89 f0 mov %r14,%rax 0.00 : b3a4c: 49 03 45 28 add 0x28(%r13),%rax 0.00 : b3a50: 41 83 c4 01 add $0x1,%r12d 0.00 : b3a54: 48 83 c5 04 add $0x4,%rbp 0.00 : b3a58: 44 39 60 04 cmp %r12d,0x4(%rax) 0.00 : b3a5c: 7e 2d jle b3a8b 0.00 : b3a5e: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b3a62: 8b 14 28 mov (%rax,%rbp,1),%edx 0.00 : b3a65: 48 63 da movslq %edx,%rbx 0.00 : b3a68: 48 c1 e3 04 shl $0x4,%rbx 0.00 : b3a6c: 48 89 d9 mov %rbx,%rcx 0.00 : b3a6f: 49 03 4d 30 add 0x30(%r13),%rcx 0.00 : b3a73: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : b3a76: 83 f8 ff cmp $0xffffffff,%eax 0.00 : b3a79: 75 95 jne b3a10 0.00 : b3a7b: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : b3a81: eb c6 jmp b3a49 0.00 : b3a83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b3a88: 45 31 ff xor %r15d,%r15d 0.00 : b3a8b: 8b 74 24 14 mov 0x14(%rsp),%esi 0.00 : b3a8f: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : b3a94: e8 a7 ee ff ff callq b2940 0.00 : b3a99: 85 c0 test %eax,%eax 0.00 : b3a9b: ba 0c 00 00 00 mov $0xc,%edx 0.00 : b3aa0: 78 32 js b3ad4 0.00 : b3aa2: 45 85 ff test %r15d,%r15d 0.00 : b3aa5: 74 79 je b3b20 0.00 : b3aa7: 8b 7c 24 10 mov 0x10(%rsp),%edi 0.00 : b3aab: 85 ff test %edi,%edi 0.00 : b3aad: 75 71 jne b3b20 0.00 : b3aaf: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : b3ab3: 42 c7 44 30 04 00 00 movl $0x0,0x4(%rax,%r14,1) 0.00 : b3aba: 00 00 0.00 : b3abc: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : b3ac1: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : b3ac6: 48 89 02 mov %rax,(%rdx) 0.00 : b3ac9: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : b3ace: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : b3ad2: 31 d2 xor %edx,%edx 0.00 : b3ad4: 48 83 c4 48 add $0x48,%rsp 0.00 : b3ad8: 89 d0 mov %edx,%eax 0.00 : b3ada: 5b pop %rbx 0.00 : b3adb: 5d pop %rbp 0.00 : b3adc: 41 5c pop %r12 0.00 : b3ade: 41 5d pop %r13 0.00 : b3ae0: 41 5e pop %r14 0.00 : b3ae2: 41 5f pop %r15 0.00 : b3ae4: c3 retq 0.00 : b3ae5: 0f 1f 00 nopl (%rax) 0.00 : b3ae8: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : b3aec: 31 c9 xor %ecx,%ecx 0.00 : b3aee: 4c 89 ee mov %r13,%rsi 0.00 : b3af1: e8 4a fe ff ff callq b3940 0.00 : b3af6: 85 c0 test %eax,%eax 0.00 : b3af8: 0f 84 2b ff ff ff je b3a29 0.00 : b3afe: 89 c2 mov %eax,%edx 0.00 : b3b00: eb d2 jmp b3ad4 0.00 : b3b02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b3b08: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : b3b0d: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : b3b13: e8 88 ad f6 ff callq 1e8a0 0.00 : b3b18: e9 2c ff ff ff jmpq b3a49 0.00 : b3b1d: 0f 1f 00 nopl (%rax) 0.00 : b3b20: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : b3b25: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : b3b29: 4a 89 14 30 mov %rdx,(%rax,%r14,1) 0.00 : b3b2d: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : b3b32: 4a 89 54 30 08 mov %rdx,0x8(%rax,%r14,1) 0.00 : b3b37: eb 83 jmp b3abc 0.00 : b3b39: c1 e9 08 shr $0x8,%ecx 0.00 : b3b3c: 4c 89 ef mov %r13,%rdi 0.00 : b3b3f: 41 89 c8 mov %ecx,%r8d 0.00 : b3b42: 8b 4c 24 14 mov 0x14(%rsp),%ecx 0.00 : b3b46: 41 81 e0 ff 03 00 00 and $0x3ff,%r8d 0.00 : b3b4d: 89 ca mov %ecx,%edx 0.00 : b3b4f: 89 ce mov %ecx,%esi 0.00 : b3b51: e8 da fa ff ff callq b3630 0.00 : b3b56: 85 c0 test %eax,%eax 0.00 : b3b58: 89 c2 mov %eax,%edx 0.00 : b3b5a: 0f 85 74 ff ff ff jne b3ad4 0.00 : b3b60: 4c 89 f2 mov %r14,%rdx 0.00 : b3b63: 49 03 55 00 add 0x0(%r13),%rdx 0.00 : b3b67: e9 6c fe ff ff jmpq b39d8 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b3ee0 : 0.00 : b3ee0: 48 8b 47 08 mov 0x8(%rdi),%rax 100.00 : b3ee4: 41 89 d0 mov %edx,%r8d 0.00 : b3ee7: 48 63 d2 movslq %edx,%rdx 0.00 : b3eea: 53 push %rbx 0.00 : b3eeb: 0f b6 0c 10 movzbl (%rax,%rdx,1),%ecx 0.00 : b3eef: 0f b6 46 08 movzbl 0x8(%rsi),%eax 0.00 : b3ef3: 3c 03 cmp $0x3,%al 0.00 : b3ef5: 74 61 je b3f58 0.00 : b3ef7: 76 17 jbe b3f10 0.00 : b3ef9: 3c 05 cmp $0x5,%al 0.00 : b3efb: 74 37 je b3f34 0.00 : b3efd: 3c 07 cmp $0x7,%al 0.00 : b3eff: 90 nop 0.00 : b3f00: 74 2e je b3f30 0.00 : b3f02: 31 c0 xor %eax,%eax 0.00 : b3f04: 5b pop %rbx 0.00 : b3f05: c3 retq 0.00 : b3f06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b3f0d: 00 00 00 0.00 : b3f10: 2c 01 sub $0x1,%al 0.00 : b3f12: 75 ee jne b3f02 0.00 : b3f14: 38 0e cmp %cl,(%rsi) 0.00 : b3f16: 75 ea jne b3f02 0.00 : b3f18: 8b 5e 08 mov 0x8(%rsi),%ebx 0.00 : b3f1b: f7 c3 00 ff 03 00 test $0x3ff00,%ebx 0.00 : b3f21: 75 59 jne b3f7c 0.00 : b3f23: b8 01 00 00 00 mov $0x1,%eax 0.00 : b3f28: 5b pop %rbx 0.00 : b3f29: c3 retq 0.00 : b3f2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b3f30: 84 c9 test %cl,%cl 0.00 : b3f32: 78 ce js b3f02 0.00 : b3f34: 80 f9 0a cmp $0xa,%cl 0.00 : b3f37: 0f 84 83 00 00 00 je b3fc0 0.00 : b3f3d: 84 c9 test %cl,%cl 0.00 : b3f3f: 90 nop 0.00 : b3f40: 75 d6 jne b3f18 0.00 : b3f42: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : b3f46: 80 b8 c8 00 00 00 00 cmpb $0x0,0xc8(%rax) 0.00 : b3f4d: 79 c9 jns b3f18 0.00 : b3f4f: 90 nop 0.00 : b3f50: eb b0 jmp b3f02 0.00 : b3f52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b3f58: 89 c8 mov %ecx,%eax 0.00 : b3f5a: 48 8b 16 mov (%rsi),%rdx 0.00 : b3f5d: 83 e1 3f and $0x3f,%ecx 0.00 : b3f60: c0 e8 06 shr $0x6,%al 0.00 : b3f63: 0f b6 c0 movzbl %al,%eax 0.00 : b3f66: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : b3f6a: 48 d3 e8 shr %cl,%rax 0.00 : b3f6d: a8 01 test $0x1,%al 0.00 : b3f6f: 74 91 je b3f02 0.00 : b3f71: 8b 5e 08 mov 0x8(%rsi),%ebx 0.00 : b3f74: f7 c3 00 ff 03 00 test $0x3ff00,%ebx 0.00 : b3f7a: 74 a7 je b3f23 0.00 : b3f7c: 8b 57 78 mov 0x78(%rdi),%edx 0.00 : b3f7f: 44 89 c6 mov %r8d,%esi 0.00 : b3f82: e8 79 fe ff ff callq b3e00 0.00 : b3f87: 89 da mov %ebx,%edx 0.00 : b3f89: c1 ea 08 shr $0x8,%edx 0.00 : b3f8c: 81 e2 ff 03 00 00 and $0x3ff,%edx 0.00 : b3f92: f6 c2 04 test $0x4,%dl 0.00 : b3f95: 74 08 je b3f9f 0.00 : b3f97: a8 01 test $0x1,%al 0.00 : b3f99: 0f 84 63 ff ff ff je b3f02 0.00 : b3f9f: f6 c2 08 test $0x8,%dl 0.00 : b3fa2: 75 3c jne b3fe0 0.00 : b3fa4: f6 c2 20 test $0x20,%dl 0.00 : b3fa7: 75 47 jne b3ff0 0.00 : b3fa9: 84 d2 test %dl,%dl 0.00 : b3fab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b3fb0: 0f 89 6d ff ff ff jns b3f23 0.00 : b3fb6: c1 e8 03 shr $0x3,%eax 0.00 : b3fb9: 83 e0 01 and $0x1,%eax 0.00 : b3fbc: 5b pop %rbx 0.00 : b3fbd: c3 retq 0.00 : b3fbe: 66 90 xchg %ax,%ax 0.00 : b3fc0: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : b3fc4: f6 80 c8 00 00 00 40 testb $0x40,0xc8(%rax) 0.00 : b3fcb: 0f 85 47 ff ff ff jne b3f18 0.00 : b3fd1: 31 c0 xor %eax,%eax 0.00 : b3fd3: e9 2c ff ff ff jmpq b3f04 0.00 : b3fd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b3fdf: 00 0.00 : b3fe0: a8 01 test $0x1,%al 0.00 : b3fe2: 74 c0 je b3fa4 0.00 : b3fe4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b3fe8: e9 15 ff ff ff jmpq b3f02 0.00 : b3fed: 0f 1f 00 nopl (%rax) 0.00 : b3ff0: a8 02 test $0x2,%al 0.00 : b3ff2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b3ff8: 75 af jne b3fa9 0.00 : b3ffa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b4000: e9 fd fe ff ff jmpq b3f02 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b40f0 : 0.00 : b40f0: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : b40f5: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : b40fa: 48 89 f5 mov %rsi,%rbp 0.00 : b40fd: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : b4102: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : b4107: 49 89 fd mov %rdi,%r13 0.00 : b410a: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : b410f: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : b4114: 48 83 ec 48 sub $0x48,%rsp 0.00 : b4118: 8b 46 38 mov 0x38(%rsi),%eax 0.00 : b411b: 39 46 48 cmp %eax,0x48(%rsi) 0.00 : b411e: 49 89 d7 mov %rdx,%r15 0.00 : b4121: 0f 8e 99 00 00 00 jle b41c0 0.00 : b4127: 48 63 d0 movslq %eax,%rdx 0.00 : b412a: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : b412e: 44 0f b6 67 0a movzbl 0xa(%rdi),%r12d 0.00 : b4133: 44 0f b6 34 10 movzbl (%rax,%rdx,1),%r14d 0.00 : b4138: 41 83 e4 9f and $0xffffff9f,%r12d 0.00 : b413c: 44 88 37 mov %r14b,(%rdi) 0.00 : b413f: 45 88 65 0a mov %r12b,0xa(%r13) 0.00 : b4143: 44 89 e7 mov %r12d,%edi 0.00 : b4146: 8b 4e 68 mov 0x68(%rsi),%ecx 0.00 : b4149: 83 f9 01 cmp $0x1,%ecx 0.00 : b414c: 7e 19 jle b4167 0.00 : b414e: 8b 46 38 mov 0x38(%rsi),%eax 0.00 : b4151: 3b 46 2c cmp 0x2c(%rsi),%eax 0.00 : b4154: 74 11 je b4167 0.00 : b4156: 48 63 d0 movslq %eax,%rdx 0.00 : b4159: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : b415d: 83 3c 90 ff cmpl $0xffffffff,(%rax,%rdx,4) 0.00 : b4161: 0f 84 a1 00 00 00 je b4208 0.00 : b4167: 41 80 fe 5c cmp $0x5c,%r14b 0.00 : b416b: 0f 84 af 00 00 00 je b4220 0.00 : b4171: 41 c6 45 08 01 movb $0x1,0x8(%r13) 0.00 : b4176: 83 7d 68 01 cmpl $0x1,0x68(%rbp) 0.00 : b417a: 0f 8e 68 01 00 00 jle b42e8 0.00 : b4180: 48 63 55 38 movslq 0x38(%rbp),%rdx 0.00 : b4184: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b4188: 8b 1c 90 mov (%rax,%rdx,4),%ebx 0.00 : b418b: 89 df mov %ebx,%edi 0.00 : b418d: e8 0e 9c 02 00 callq ddda0 0.00 : b4192: 85 c0 test %eax,%eax 0.00 : b4194: 0f 95 c2 setne %dl 0.00 : b4197: 83 fb 5f cmp $0x5f,%ebx 0.00 : b419a: 0f 94 c0 sete %al 0.00 : b419d: 09 d0 or %edx,%eax 0.00 : b419f: c1 e0 06 shl $0x6,%eax 0.00 : b41a2: 41 09 c4 or %eax,%r12d 0.00 : b41a5: 45 88 65 0a mov %r12b,0xa(%r13) 0.00 : b41a9: 41 8d 46 f6 lea -0xa(%r14),%eax 0.00 : b41ad: 3c 73 cmp $0x73,%al 0.00 : b41af: 76 3f jbe b41f0 0.00 : b41b1: b8 01 00 00 00 mov $0x1,%eax 0.00 : b41b6: eb 0e jmp b41c6 0.00 : b41b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b41bf: 00 0.00 : b41c0: c6 47 08 02 movb $0x2,0x8(%rdi) 0.00 : b41c4: 31 c0 xor %eax,%eax 0.00 : b41c6: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 0.00 : b41cb: 48 8b 6c 24 20 mov 0x20(%rsp),%rbp 0.00 : b41d0: 4c 8b 64 24 28 mov 0x28(%rsp),%r12 0.00 : b41d5: 4c 8b 6c 24 30 mov 0x30(%rsp),%r13 0.00 : b41da: 4c 8b 74 24 38 mov 0x38(%rsp),%r14 0.00 : b41df: 4c 8b 7c 24 40 mov 0x40(%rsp),%r15 0.00 : b41e4: 48 83 c4 48 add $0x48,%rsp 0.00 : b41e8: c3 retq 0.00 : b41e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b41f0: 48 8d 15 ed 3a 08 00 lea 0x83aed(%rip),%rdx # 137ce4 <__mon_yday+0xec4> 0.00 : b41f7: 0f b6 c0 movzbl %al,%eax 0.00 : b41fa: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : b41fe: 48 01 d0 add %rdx,%rax 0.00 : b4201: ff e0 jmpq *%rax 0.00 : b4203: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b4208: 41 83 cc 20 or $0x20,%r12d 0.00 : b420c: 41 c6 45 08 01 movb $0x1,0x8(%r13) 0.00 : b4211: b8 01 00 00 00 mov $0x1,%eax 0.00 : b4216: 45 88 65 0a mov %r12b,0xa(%r13) 0.00 : b421a: eb aa jmp b41c6 0.00 : b421c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b4220: 8b 45 38 mov 0x38(%rbp),%eax 0.00 : b4223: 8d 50 01 lea 0x1(%rax),%edx 0.00 : b4226: 3b 55 40 cmp 0x40(%rbp),%edx 0.00 : b4229: 0f 8d 71 05 00 00 jge b47a0 0.00 : b422f: 80 7d 63 00 cmpb $0x0,0x63(%rbp) 0.00 : b4233: 0f 84 ff 00 00 00 je b4338 0.00 : b4239: 83 e9 01 sub $0x1,%ecx 0.00 : b423c: 7e 1c jle b425a 0.00 : b423e: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : b4242: 48 63 ca movslq %edx,%rcx 0.00 : b4245: 83 3c 8e ff cmpl $0xffffffff,(%rsi,%rcx,4) 0.00 : b4249: 74 39 je b4284 0.00 : b424b: 83 c0 02 add $0x2,%eax 0.00 : b424e: 39 45 2c cmp %eax,0x2c(%rbp) 0.00 : b4251: 74 07 je b425a 0.00 : b4253: 83 7c 8e 04 ff cmpl $0xffffffff,0x4(%rsi,%rcx,4) 0.00 : b4258: 74 2a je b4284 0.00 : b425a: 80 7d 64 00 cmpb $0x0,0x64(%rbp) 0.00 : b425e: 66 90 xchg %ax,%ax 0.00 : b4260: 0f 84 92 05 00 00 je b47f8 0.00 : b4266: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : b426a: 48 63 ca movslq %edx,%rcx 0.00 : b426d: 48 8b 55 00 mov 0x0(%rbp),%rdx 0.00 : b4271: 8b 04 88 mov (%rax,%rcx,4),%eax 0.00 : b4274: 03 45 28 add 0x28(%rbp),%eax 0.00 : b4277: 48 98 cltq 0.00 : b4279: 44 0f b6 34 02 movzbl (%rdx,%rax,1),%r14d 0.00 : b427e: 41 f6 c6 80 test $0x80,%r14b 0.00 : b4282: 74 09 je b428d 0.00 : b4284: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : b4288: 44 0f b6 34 08 movzbl (%rax,%rcx,1),%r14d 0.00 : b428d: 45 88 75 00 mov %r14b,0x0(%r13) 0.00 : b4291: 41 c6 45 08 01 movb $0x1,0x8(%r13) 0.00 : b4296: 83 7d 68 01 cmpl $0x1,0x68(%rbp) 0.00 : b429a: 0f 8e 10 05 00 00 jle b47b0 0.00 : b42a0: 8b 45 38 mov 0x38(%rbp),%eax 0.00 : b42a3: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : b42a7: 83 c0 01 add $0x1,%eax 0.00 : b42aa: 48 98 cltq 0.00 : b42ac: 8b 1c 82 mov (%rdx,%rax,4),%ebx 0.00 : b42af: 89 df mov %ebx,%edi 0.00 : b42b1: e8 ea 9a 02 00 callq ddda0 0.00 : b42b6: 85 c0 test %eax,%eax 0.00 : b42b8: 0f 95 c2 setne %dl 0.00 : b42bb: 83 fb 5f cmp $0x5f,%ebx 0.00 : b42be: 0f 94 c0 sete %al 0.00 : b42c1: 09 d0 or %edx,%eax 0.00 : b42c3: c1 e0 06 shl $0x6,%eax 0.00 : b42c6: 41 09 c4 or %eax,%r12d 0.00 : b42c9: 45 88 65 0a mov %r12b,0xa(%r13) 0.00 : b42cd: 41 8d 46 d9 lea -0x27(%r14),%eax 0.00 : b42d1: 3c 56 cmp $0x56,%al 0.00 : b42d3: 0f 86 67 02 00 00 jbe b4540 0.00 : b42d9: b8 02 00 00 00 mov $0x2,%eax 0.00 : b42de: e9 e3 fe ff ff jmpq b41c6 0.00 : b42e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b42e8: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi 0.00 : b42ef: 00 00 0.00 : b42f1: 48 8b 0d d8 da 2b 00 mov 0x2bdad8(%rip),%rcx # 371dd0 <_DYNAMIC+0x270> 0.00 : b42f8: 48 83 3c 0e 00 cmpq $0x0,(%rsi,%rcx,1) 0.00 : b42fd: 0f 84 0d 05 00 00 je b4810 0.00 : b4303: 45 0f b6 45 00 movzbl 0x0(%r13),%r8d 0.00 : b4308: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : b430c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b4311: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : b4315: f6 04 50 08 testb $0x8,(%rax,%rdx,2) 0.00 : b4319: 75 07 jne b4322 0.00 : b431b: 41 80 f8 5f cmp $0x5f,%r8b 0.00 : b431f: 0f 94 c1 sete %cl 0.00 : b4322: c1 e1 06 shl $0x6,%ecx 0.00 : b4325: 83 e7 bf and $0xffffffbf,%edi 0.00 : b4328: 09 cf or %ecx,%edi 0.00 : b432a: 41 88 7d 0a mov %dil,0xa(%r13) 0.00 : b432e: e9 76 fe ff ff jmpq b41a9 0.00 : b4333: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b4338: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : b433c: 48 63 d2 movslq %edx,%rdx 0.00 : b433f: 44 0f b6 34 10 movzbl (%rax,%rdx,1),%r14d 0.00 : b4344: e9 44 ff ff ff jmpq b428d 0.00 : b4349: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b4350: 41 f6 c7 08 test $0x8,%r15b 0.00 : b4354: 75 3a jne b4390 0.00 : b4356: 8b 45 38 mov 0x38(%rbp),%eax 0.00 : b4359: 83 c0 01 add $0x1,%eax 0.00 : b435c: 3b 45 40 cmp 0x40(%rbp),%eax 0.00 : b435f: 74 2f je b4390 0.00 : b4361: 89 45 38 mov %eax,0x38(%rbp) 0.00 : b4364: 48 89 e7 mov %rsp,%rdi 0.00 : b4367: 4c 89 fa mov %r15,%rdx 0.00 : b436a: 48 89 ee mov %rbp,%rsi 0.00 : b436d: e8 7e fd ff ff callq b40f0 0.00 : b4372: 83 6d 38 01 subl $0x1,0x38(%rbp) 0.00 : b4376: 0f b6 44 24 08 movzbl 0x8(%rsp),%eax 0.00 : b437b: 83 e8 09 sub $0x9,%eax 0.00 : b437e: 3c 01 cmp $0x1,%al 0.00 : b4380: 0f 87 2b fe ff ff ja b41b1 0.00 : b4386: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b438d: 00 00 00 0.00 : b4390: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b4395: 41 c7 45 00 20 00 00 movl $0x20,0x0(%r13) 0.00 : b439c: 00 0.00 : b439d: b8 01 00 00 00 mov $0x1,%eax 0.00 : b43a2: e9 1f fe ff ff jmpq b41c6 0.00 : b43a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b43ae: 00 00 0.00 : b43b0: 41 f7 c7 00 08 00 00 test $0x800,%r15d 0.00 : b43b7: 0f 84 f4 fd ff ff je b41b1 0.00 : b43bd: 41 c6 45 08 0a movb $0xa,0x8(%r13) 0.00 : b43c2: b8 01 00 00 00 mov $0x1,%eax 0.00 : b43c7: e9 fa fd ff ff jmpq b41c6 0.00 : b43cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b43d0: 41 f7 c7 02 04 00 00 test $0x402,%r15d 0.00 : b43d7: 0f 85 d4 fd ff ff jne b41b1 0.00 : b43dd: 41 c6 45 08 12 movb $0x12,0x8(%r13) 0.00 : b43e2: b8 01 00 00 00 mov $0x1,%eax 0.00 : b43e7: e9 da fd ff ff jmpq b41c6 0.00 : b43ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b43f0: 41 c6 45 08 0b movb $0xb,0x8(%r13) 0.00 : b43f5: b8 01 00 00 00 mov $0x1,%eax 0.00 : b43fa: e9 c7 fd ff ff jmpq b41c6 0.00 : b43ff: 90 nop 0.00 : b4400: 41 f7 c7 00 20 00 00 test $0x2000,%r15d 0.00 : b4407: 0f 84 a4 fd ff ff je b41b1 0.00 : b440d: 41 c6 45 08 09 movb $0x9,0x8(%r13) 0.00 : b4412: b8 01 00 00 00 mov $0x1,%eax 0.00 : b4417: e9 aa fd ff ff jmpq b41c6 0.00 : b441c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b4420: 41 f7 c7 00 20 00 00 test $0x2000,%r15d 0.00 : b4427: 0f 84 84 fd ff ff je b41b1 0.00 : b442d: 41 c6 45 08 08 movb $0x8,0x8(%r13) 0.00 : b4432: b8 01 00 00 00 mov $0x1,%eax 0.00 : b4437: e9 8a fd ff ff jmpq b41c6 0.00 : b443c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b4440: 41 81 e7 00 12 00 00 and $0x1200,%r15d 0.00 : b4447: 49 81 ff 00 12 00 00 cmp $0x1200,%r15 0.00 : b444e: 0f 85 5d fd ff ff jne b41b1 0.00 : b4454: 41 c6 45 08 18 movb $0x18,0x8(%r13) 0.00 : b4459: b8 01 00 00 00 mov $0x1,%eax 0.00 : b445e: e9 63 fd ff ff jmpq b41c6 0.00 : b4463: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b4468: 41 81 e7 00 84 00 00 and $0x8400,%r15d 0.00 : b446f: 49 81 ff 00 80 00 00 cmp $0x8000,%r15 0.00 : b4476: 0f 85 35 fd ff ff jne b41b1 0.00 : b447c: e9 3c ff ff ff jmpq b43bd 0.00 : b4481: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b4488: 41 81 e7 00 12 00 00 and $0x1200,%r15d 0.00 : b448f: 49 81 ff 00 12 00 00 cmp $0x1200,%r15 0.00 : b4496: 0f 85 15 fd ff ff jne b41b1 0.00 : b449c: 41 c6 45 08 17 movb $0x17,0x8(%r13) 0.00 : b44a1: b8 01 00 00 00 mov $0x1,%eax 0.00 : b44a6: e9 1b fd ff ff jmpq b41c6 0.00 : b44ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b44b0: 41 f7 c7 08 00 80 00 test $0x800008,%r15d 0.00 : b44b7: 75 27 jne b44e0 0.00 : b44b9: 8b 45 38 mov 0x38(%rbp),%eax 0.00 : b44bc: 85 c0 test %eax,%eax 0.00 : b44be: 74 20 je b44e0 0.00 : b44c0: 41 f7 c7 00 08 00 00 test $0x800,%r15d 0.00 : b44c7: 0f 84 e4 fc ff ff je b41b1 0.00 : b44cd: 48 63 d0 movslq %eax,%rdx 0.00 : b44d0: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : b44d4: 80 7c 10 ff 0a cmpb $0xa,-0x1(%rax,%rdx,1) 0.00 : b44d9: 0f 85 d2 fc ff ff jne b41b1 0.00 : b44df: 90 nop 0.00 : b44e0: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b44e5: 41 c7 45 00 10 00 00 movl $0x10,0x0(%r13) 0.00 : b44ec: 00 0.00 : b44ed: b8 01 00 00 00 mov $0x1,%eax 0.00 : b44f2: e9 cf fc ff ff jmpq b41c6 0.00 : b44f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b44fe: 00 00 0.00 : b4500: 41 c6 45 08 14 movb $0x14,0x8(%r13) 0.00 : b4505: b8 01 00 00 00 mov $0x1,%eax 0.00 : b450a: e9 b7 fc ff ff jmpq b41c6 0.00 : b450f: 90 nop 0.00 : b4510: 41 f7 c7 02 04 00 00 test $0x402,%r15d 0.00 : b4517: 0f 85 94 fc ff ff jne b41b1 0.00 : b451d: 41 c6 45 08 13 movb $0x13,0x8(%r13) 0.00 : b4522: b8 01 00 00 00 mov $0x1,%eax 0.00 : b4527: e9 9a fc ff ff jmpq b41c6 0.00 : b452c: 0f 1f 40 00 nopl 0x0(%rax) 100.00 : b4530: 41 c6 45 08 05 movb $0x5,0x8(%r13) 0.00 : b4535: b8 01 00 00 00 mov $0x1,%eax 0.00 : b453a: e9 87 fc ff ff jmpq b41c6 0.00 : b453f: 90 nop 0.00 : b4540: 48 8d 15 6d 39 08 00 lea 0x8396d(%rip),%rdx # 137eb4 <__mon_yday+0x1094> 0.00 : b4547: 0f b6 c0 movzbl %al,%eax 0.00 : b454a: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : b454e: 48 01 d0 add %rdx,%rax 0.00 : b4551: ff e0 jmpq *%rax 0.00 : b4553: 41 81 e7 00 12 00 00 and $0x1200,%r15d 0.00 : b455a: 49 81 ff 00 02 00 00 cmp $0x200,%r15 0.00 : b4561: 0f 85 72 fd ff ff jne b42d9 0.00 : b4567: 41 c6 45 08 18 movb $0x18,0x8(%r13) 0.00 : b456c: b8 02 00 00 00 mov $0x2,%eax 0.00 : b4571: e9 50 fc ff ff jmpq b41c6 0.00 : b4576: 66 41 f7 c7 00 84 test $0x8400,%r15w 0.00 : b457c: 0f 85 57 fd ff ff jne b42d9 0.00 : b4582: 41 c6 45 08 0a movb $0xa,0x8(%r13) 0.00 : b4587: b8 02 00 00 00 mov $0x2,%eax 0.00 : b458c: e9 35 fc ff ff jmpq b41c6 0.00 : b4591: 41 81 e7 00 12 00 00 and $0x1200,%r15d 0.00 : b4598: 49 81 ff 00 02 00 00 cmp $0x200,%r15 0.00 : b459f: 0f 85 34 fd ff ff jne b42d9 0.00 : b45a5: 41 c6 45 08 17 movb $0x17,0x8(%r13) 0.00 : b45aa: b8 02 00 00 00 mov $0x2,%eax 0.00 : b45af: e9 12 fc ff ff jmpq b41c6 0.00 : b45b4: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b45bb: 0f 85 18 fd ff ff jne b42d9 0.00 : b45c1: 41 c6 45 08 20 movb $0x20,0x8(%r13) 0.00 : b45c6: b8 02 00 00 00 mov $0x2,%eax 0.00 : b45cb: e9 f6 fb ff ff jmpq b41c6 0.00 : b45d0: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b45d7: 0f 85 fc fc ff ff jne b42d9 0.00 : b45dd: 41 c6 45 08 22 movb $0x22,0x8(%r13) 0.00 : b45e2: b8 02 00 00 00 mov $0x2,%eax 0.00 : b45e7: e9 da fb ff ff jmpq b41c6 0.00 : b45ec: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b45f3: 0f 85 e0 fc ff ff jne b42d9 0.00 : b45f9: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b45fe: 41 c7 45 00 00 01 00 movl $0x100,0x0(%r13) 0.00 : b4605: 00 0.00 : b4606: b8 02 00 00 00 mov $0x2,%eax 0.00 : b460b: e9 b6 fb ff ff jmpq b41c6 0.00 : b4610: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b4617: 0f 85 bc fc ff ff jne b42d9 0.00 : b461d: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b4622: 41 c7 45 00 40 00 00 movl $0x40,0x0(%r13) 0.00 : b4629: 00 0.00 : b462a: b8 02 00 00 00 mov $0x2,%eax 0.00 : b462f: e9 92 fb ff ff jmpq b41c6 0.00 : b4634: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b463b: 0f 85 98 fc ff ff jne b42d9 0.00 : b4641: 41 c6 45 08 21 movb $0x21,0x8(%r13) 0.00 : b4646: b8 02 00 00 00 mov $0x2,%eax 0.00 : b464b: e9 76 fb ff ff jmpq b41c6 0.00 : b4650: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b4657: 0f 85 7c fc ff ff jne b42d9 0.00 : b465d: 41 c6 45 08 23 movb $0x23,0x8(%r13) 0.00 : b4662: b8 02 00 00 00 mov $0x2,%eax 0.00 : b4667: e9 5a fb ff ff jmpq b41c6 0.00 : b466c: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b4673: 0f 85 60 fc ff ff jne b42d9 0.00 : b4679: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b467e: 41 c7 45 00 00 02 00 movl $0x200,0x0(%r13) 0.00 : b4685: 00 0.00 : b4686: b8 02 00 00 00 mov $0x2,%eax 0.00 : b468b: e9 36 fb ff ff jmpq b41c6 0.00 : b4690: 41 81 e7 02 04 00 00 and $0x402,%r15d 0.00 : b4697: 49 83 ff 02 cmp $0x2,%r15 0.00 : b469b: 0f 85 38 fc ff ff jne b42d9 0.00 : b46a1: 41 c6 45 08 13 movb $0x13,0x8(%r13) 0.00 : b46a6: b8 02 00 00 00 mov $0x2,%eax 0.00 : b46ab: e9 16 fb ff ff jmpq b41c6 0.00 : b46b0: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b46b7: 0f 85 1c fc ff ff jne b42d9 0.00 : b46bd: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b46c2: 41 c7 45 00 09 00 00 movl $0x9,0x0(%r13) 0.00 : b46c9: 00 0.00 : b46ca: b8 02 00 00 00 mov $0x2,%eax 0.00 : b46cf: e9 f2 fa ff ff jmpq b41c6 0.00 : b46d4: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b46db: 0f 85 f8 fb ff ff jne b42d9 0.00 : b46e1: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b46e6: 41 c7 45 00 06 00 00 movl $0x6,0x0(%r13) 0.00 : b46ed: 00 0.00 : b46ee: b8 02 00 00 00 mov $0x2,%eax 0.00 : b46f3: e9 ce fa ff ff jmpq b41c6 0.00 : b46f8: 41 f7 c7 00 40 00 00 test $0x4000,%r15d 0.00 : b46ff: 0f 85 d4 fb ff ff jne b42d9 0.00 : b4705: 41 0f b6 c6 movzbl %r14b,%eax 0.00 : b4709: 41 c6 45 08 04 movb $0x4,0x8(%r13) 0.00 : b470e: 83 e8 31 sub $0x31,%eax 0.00 : b4711: 41 89 45 00 mov %eax,0x0(%r13) 0.00 : b4715: b8 02 00 00 00 mov $0x2,%eax 0.00 : b471a: e9 a7 fa ff ff jmpq b41c6 0.00 : b471f: 41 81 e7 02 04 00 00 and $0x402,%r15d 0.00 : b4726: 49 83 ff 02 cmp $0x2,%r15 0.00 : b472a: 0f 85 a9 fb ff ff jne b42d9 0.00 : b4730: 41 c6 45 08 12 movb $0x12,0x8(%r13) 0.00 : b4735: b8 02 00 00 00 mov $0x2,%eax 0.00 : b473a: e9 87 fa ff ff jmpq b41c6 0.00 : b473f: 41 f7 c7 00 20 00 00 test $0x2000,%r15d 0.00 : b4746: 0f 85 8d fb ff ff jne b42d9 0.00 : b474c: 41 c6 45 08 09 movb $0x9,0x8(%r13) 0.00 : b4751: b8 02 00 00 00 mov $0x2,%eax 0.00 : b4756: e9 6b fa ff ff jmpq b41c6 0.00 : b475b: 41 f7 c7 00 20 00 00 test $0x2000,%r15d 0.00 : b4762: 0f 85 71 fb ff ff jne b42d9 0.00 : b4768: 41 c6 45 08 08 movb $0x8,0x8(%r13) 0.00 : b476d: b8 02 00 00 00 mov $0x2,%eax 0.00 : b4772: e9 4f fa ff ff jmpq b41c6 0.00 : b4777: 41 f7 c7 00 00 08 00 test $0x80000,%r15d 0.00 : b477e: 66 90 xchg %ax,%ax 0.00 : b4780: 0f 85 53 fb ff ff jne b42d9 0.00 : b4786: 41 c6 45 08 0c movb $0xc,0x8(%r13) 0.00 : b478b: 41 c7 45 00 80 00 00 movl $0x80,0x0(%r13) 0.00 : b4792: 00 0.00 : b4793: b8 02 00 00 00 mov $0x2,%eax 0.00 : b4798: e9 29 fa ff ff jmpq b41c6 0.00 : b479d: 0f 1f 00 nopl (%rax) 0.00 : b47a0: 41 c6 45 08 24 movb $0x24,0x8(%r13) 0.00 : b47a5: b8 01 00 00 00 mov $0x1,%eax 0.00 : b47aa: e9 17 fa ff ff jmpq b41c6 0.00 : b47af: 90 nop 0.00 : b47b0: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi 0.00 : b47b7: 00 00 0.00 : b47b9: 48 8b 0d 10 d6 2b 00 mov 0x2bd610(%rip),%rcx # 371dd0 <_DYNAMIC+0x270> 0.00 : b47c0: 48 83 3c 0e 00 cmpq $0x0,(%rsi,%rcx,1) 0.00 : b47c5: 74 6f je b4836 0.00 : b47c7: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : b47cb: 41 0f b6 d6 movzbl %r14b,%edx 0.00 : b47cf: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : b47d3: c1 e8 03 shr $0x3,%eax 0.00 : b47d6: 41 80 fe 5f cmp $0x5f,%r14b 0.00 : b47da: 0f 94 c2 sete %dl 0.00 : b47dd: 83 e7 bf and $0xffffffbf,%edi 0.00 : b47e0: 09 d0 or %edx,%eax 0.00 : b47e2: 83 e0 01 and $0x1,%eax 0.00 : b47e5: c1 e0 06 shl $0x6,%eax 0.00 : b47e8: 09 c7 or %eax,%edi 0.00 : b47ea: 41 88 7d 0a mov %dil,0xa(%r13) 0.00 : b47ee: e9 da fa ff ff jmpq b42cd 0.00 : b47f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b47f8: 89 d0 mov %edx,%eax 0.00 : b47fa: 03 45 28 add 0x28(%rbp),%eax 0.00 : b47fd: 48 8b 55 00 mov 0x0(%rbp),%rdx 0.00 : b4801: 48 98 cltq 0.00 : b4803: 44 0f b6 34 02 movzbl (%rdx,%rax,1),%r14d 0.00 : b4808: e9 80 fa ff ff jmpq b428d 0.00 : b480d: 0f 1f 00 nopl (%rax) 0.00 : b4810: 48 8b 05 71 d5 2b 00 mov 0x2bd571(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : b4817: 48 8b 04 06 mov (%rsi,%rax,1),%rax 0.00 : b481b: 48 8b 00 mov (%rax),%rax 0.00 : b481e: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : b4822: 48 05 00 01 00 00 add $0x100,%rax 0.00 : b4828: 48 89 04 0e mov %rax,(%rsi,%rcx,1) 0.00 : b482c: 41 0f b6 7d 0a movzbl 0xa(%r13),%edi 0.00 : b4831: e9 cd fa ff ff jmpq b4303 0.00 : b4836: 48 8b 05 4b d5 2b 00 mov 0x2bd54b(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : b483d: 48 8b 04 06 mov (%rsi,%rax,1),%rax 0.00 : b4841: 48 8b 00 mov (%rax),%rax 0.00 : b4844: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : b4848: 48 05 00 01 00 00 add $0x100,%rax 0.00 : b484e: 48 89 04 0e mov %rax,(%rsi,%rcx,1) 0.00 : b4852: 41 0f b6 7d 0a movzbl 0xa(%r13),%edi 0.00 : b4857: e9 6b ff ff ff jmpq b47c7 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b8150 : 0.00 : b8150: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : b8155: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : b815a: 48 89 f3 mov %rsi,%rbx 0.00 : b815d: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : b8162: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : b8167: 48 89 d5 mov %rdx,%rbp 0.00 : b816a: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : b816f: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 100.00 : b8174: 48 83 ec 58 sub $0x58,%rsp 0.00 : b8178: 48 89 7c 24 08 mov %rdi,0x8(%rsp) 0.00 : b817d: 44 8b 6e 38 mov 0x38(%rsi),%r13d 0.00 : b8181: 44 3b ae 90 00 00 00 cmp 0x90(%rsi),%r13d 0.00 : b8188: 4c 8b 76 70 mov 0x70(%rsi),%r14 0.00 : b818c: 0f 8e ae 00 00 00 jle b8240 0.00 : b8192: 49 63 c5 movslq %r13d,%rax 0.00 : b8195: 48 89 04 24 mov %rax,(%rsp) 0.00 : b8199: 48 8b 14 24 mov (%rsp),%rdx 0.00 : b819d: 48 8b 86 88 00 00 00 mov 0x88(%rsi),%rax 0.00 : b81a4: 48 89 2c d0 mov %rbp,(%rax,%rdx,8) 0.00 : b81a8: 44 89 ae 90 00 00 00 mov %r13d,0x90(%rsi) 0.00 : b81af: 45 8b 96 8c 00 00 00 mov 0x8c(%r14),%r10d 0.00 : b81b6: 45 85 d2 test %r10d,%r10d 0.00 : b81b9: 74 55 je b8210 0.00 : b81bb: 48 85 ed test %rbp,%rbp 0.00 : b81be: 74 50 je b8210 0.00 : b81c0: 4c 8d 65 08 lea 0x8(%rbp),%r12 0.00 : b81c4: 44 89 ea mov %r13d,%edx 0.00 : b81c7: 48 89 df mov %rbx,%rdi 0.00 : b81ca: 4c 89 e6 mov %r12,%rsi 0.00 : b81cd: e8 8e db ff ff callq b5d60 0.00 : b81d2: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : b81d7: 85 c0 test %eax,%eax 0.00 : b81d9: 89 02 mov %eax,(%rdx) 0.00 : b81db: 0f 85 c9 00 00 00 jne b82aa 0.00 : b81e1: f6 45 50 40 testb $0x40,0x50(%rbp) 0.00 : b81e5: 74 29 je b8210 0.00 : b81e7: 4c 89 e6 mov %r12,%rsi 0.00 : b81ea: 48 89 df mov %rbx,%rdi 0.00 : b81ed: e8 0e f7 ff ff callq b7900 0.00 : b81f2: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : b81f7: 85 c0 test %eax,%eax 0.00 : b81f9: 89 02 mov %eax,(%rdx) 0.00 : b81fb: 0f 85 a9 00 00 00 jne b82aa 0.00 : b8201: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : b8208: 48 8b 14 24 mov (%rsp),%rdx 0.00 : b820c: 48 8b 2c d0 mov (%rax,%rdx,8),%rbp 0.00 : b8210: 48 89 e8 mov %rbp,%rax 0.00 : b8213: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : b8218: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp 0.00 : b821d: 4c 8b 64 24 38 mov 0x38(%rsp),%r12 0.00 : b8222: 4c 8b 6c 24 40 mov 0x40(%rsp),%r13 0.00 : b8227: 4c 8b 74 24 48 mov 0x48(%rsp),%r14 0.00 : b822c: 4c 8b 7c 24 50 mov 0x50(%rsp),%r15 0.00 : b8231: 48 83 c4 58 add $0x58,%rsp 0.00 : b8235: c3 retq 0.00 : b8236: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b823d: 00 00 00 0.00 : b8240: 49 63 c5 movslq %r13d,%rax 0.00 : b8243: 49 89 c7 mov %rax,%r15 0.00 : b8246: 48 89 04 24 mov %rax,(%rsp) 0.00 : b824a: 49 c1 e7 03 shl $0x3,%r15 0.00 : b824e: 4d 89 fc mov %r15,%r12 0.00 : b8251: 4c 03 a6 88 00 00 00 add 0x88(%rsi),%r12 0.00 : b8258: 49 8b 04 24 mov (%r12),%rax 0.00 : b825c: 48 85 c0 test %rax,%rax 0.00 : b825f: 74 40 je b82a1 0.00 : b8261: 48 85 ed test %rbp,%rbp 0.00 : b8264: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : b8268: 75 4e jne b82b8 0.00 : b826a: 48 8b 02 mov (%rdx),%rax 0.00 : b826d: 48 89 df mov %rbx,%rdi 0.00 : b8270: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : b8275: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : b8279: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : b827e: 8b 56 78 mov 0x78(%rsi),%edx 0.00 : b8281: 41 8d 75 ff lea -0x1(%r13),%esi 0.00 : b8285: e8 76 bb ff ff callq b3e00 0.00 : b828a: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : b828f: 48 8d 54 24 10 lea 0x10(%rsp),%rdx 0.00 : b8294: 89 c1 mov %eax,%ecx 0.00 : b8296: 4c 89 f6 mov %r14,%rsi 0.00 : b8299: e8 32 d7 ff ff callq b59d0 0.00 : b829e: 48 89 c5 mov %rax,%rbp 0.00 : b82a1: 49 89 2c 24 mov %rbp,(%r12) 0.00 : b82a5: e9 05 ff ff ff jmpq b81af 0.00 : b82aa: 31 ed xor %ebp,%ebp 0.00 : b82ac: e9 5f ff ff ff jmpq b8210 0.00 : b82b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b82b8: 4c 8b 65 38 mov 0x38(%rbp),%r12 0.00 : b82bc: 48 8d 6c 24 10 lea 0x10(%rsp),%rbp 0.00 : b82c1: 48 89 ef mov %rbp,%rdi 0.00 : b82c4: 4c 89 e6 mov %r12,%rsi 0.00 : b82c7: e8 b4 ac ff ff callq b2f80 0.00 : b82cc: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : b82d1: 85 c0 test %eax,%eax 0.00 : b82d3: 89 02 mov %eax,(%rdx) 0.00 : b82d5: 75 d3 jne b82aa 0.00 : b82d7: 8b 73 38 mov 0x38(%rbx),%esi 0.00 : b82da: 8b 53 78 mov 0x78(%rbx),%edx 0.00 : b82dd: 48 89 df mov %rbx,%rdi 0.00 : b82e0: 83 ee 01 sub $0x1,%esi 0.00 : b82e3: e8 18 bb ff ff callq b3e00 0.00 : b82e8: 4c 03 bb 88 00 00 00 add 0x88(%rbx),%r15 0.00 : b82ef: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : b82f4: 48 89 ea mov %rbp,%rdx 0.00 : b82f7: 89 c1 mov %eax,%ecx 0.00 : b82f9: 4c 89 f6 mov %r14,%rsi 0.00 : b82fc: e8 cf d6 ff ff callq b59d0 0.00 : b8301: 4d 85 e4 test %r12,%r12 0.00 : b8304: 48 89 c5 mov %rax,%rbp 0.00 : b8307: 49 89 07 mov %rax,(%r15) 0.00 : b830a: 0f 84 9f fe ff ff je b81af 0.00 : b8310: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : b8315: e8 86 65 f6 ff callq 1e8a0 0.00 : b831a: e9 90 fe ff ff jmpq b81af Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b9d30 : 0.00 : b9d30: 55 push %rbp 0.00 : b9d31: 49 89 c9 mov %rcx,%r9 0.00 : b9d34: 48 89 e5 mov %rsp,%rbp 0.00 : b9d37: 41 57 push %r15 0.00 : b9d39: 41 56 push %r14 0.00 : b9d3b: 41 55 push %r13 0.00 : b9d3d: 41 54 push %r12 0.00 : b9d3f: 53 push %rbx 0.00 : b9d40: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : b9d47: 48 89 b5 60 ff ff ff mov %rsi,-0xa0(%rbp) 0.00 : b9d4e: 48 89 95 58 ff ff ff mov %rdx,-0xa8(%rbp) 0.00 : b9d55: 48 8b 3f mov (%rdi),%rdi 0.00 : b9d58: 45 85 c0 test %r8d,%r8d 0.00 : b9d5b: c7 45 a0 00 00 00 00 movl $0x0,-0x60(%rbp) 0.00 : b9d62: c7 45 a4 02 00 00 00 movl $0x2,-0x5c(%rbp) 0.00 : b9d69: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : b9d70: 00 0.00 : b9d71: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : b9d78: 00 00 00 00 0.00 : b9d7c: 48 89 bd 68 ff ff ff mov %rdi,-0x98(%rbp) 0.00 : b9d83: 74 35 je b9dba 0.00 : b9d85: bf 40 00 00 00 mov $0x40,%edi 0.00 : b9d8a: 48 89 8d 40 ff ff ff mov %rcx,-0xc0(%rbp) 0.00 : b9d91: e8 ba 4a f6 ff callq 1e850 0.00 : b9d96: 48 85 c0 test %rax,%rax 0.00 : b9d99: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : b9d9d: ba 0c 00 00 00 mov $0xc,%edx 0.00 : b9da2: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : b9da9: 0f 84 0d 02 00 00 je b9fbc 0.00 : b9daf: 48 8d 45 a0 lea -0x60(%rbp),%rax 0.00 : b9db3: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : b9dba: 48 8b 9d 58 ff ff ff mov -0xa8(%rbp),%rbx 0.00 : b9dc1: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : b9dc8: 48 8d 4d b0 lea -0x50(%rbp),%rcx 0.00 : b9dcc: 48 c1 e3 03 shl $0x3,%rbx 0.00 : b9dd0: 44 8b aa 88 00 00 00 mov 0x88(%rdx),%r13d 0.00 : b9dd7: 48 89 8d 50 ff ff ff mov %rcx,-0xb0(%rbp) 0.00 : b9dde: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : b9de5: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : b9dec: 00 0.00 : b9ded: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : b9df4: 00 0.00 : b9df5: 0f 87 11 05 00 00 ja ba30c 0.00 : b9dfb: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : b9dff: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : b9e06: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : b9e0a: 48 29 c4 sub %rax,%rsp 0.00 : b9e0d: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : b9e12: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : b9e16: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : b9e1a: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : b9e1e: 48 89 da mov %rbx,%rdx 0.00 : b9e21: 4c 89 ce mov %r9,%rsi 0.00 : b9e24: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : b9e2b: e8 20 a9 fc ff callq 84750 0.00 : b9e30: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : b9e37: 8b 95 58 ff ff ff mov -0xa8(%rbp),%edx 0.00 : b9e3d: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : b9e41: 41 8b 01 mov (%r9),%eax 0.00 : b9e44: 89 95 74 ff ff ff mov %edx,-0x8c(%rbp) 0.00 : b9e4a: 48 89 8d 48 ff ff ff mov %rcx,-0xb8(%rbp) 0.00 : b9e51: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : b9e54: 48 63 c2 movslq %edx,%rax 0.00 : b9e57: 48 c1 e0 03 shl $0x3,%rax 0.00 : b9e5b: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : b9e5f: 90 nop 0.00 : b9e60: 41 8b 49 04 mov 0x4(%r9),%ecx 0.00 : b9e64: 8b 5d cc mov -0x34(%rbp),%ebx 0.00 : b9e67: 39 d9 cmp %ebx,%ecx 0.00 : b9e69: 0f 8c 29 01 00 00 jl b9f98 0.00 : b9e6f: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : b9e76: 4d 63 fd movslq %r13d,%r15 0.00 : b9e79: 4d 89 fe mov %r15,%r14 0.00 : b9e7c: 49 c1 e6 04 shl $0x4,%r14 0.00 : b9e80: 48 8b 10 mov (%rax),%rdx 0.00 : b9e83: 4c 01 f2 add %r14,%rdx 0.00 : b9e86: 0f b6 42 08 movzbl 0x8(%rdx),%eax 0.00 : b9e8a: 83 f8 08 cmp $0x8,%eax 0.00 : b9e8d: 0f 84 3d 01 00 00 je b9fd0 0.00 : b9e93: 83 f8 09 cmp $0x9,%eax 0.00 : b9e96: 0f 84 d4 01 00 00 je ba070 0.00 : b9e9c: 39 4d cc cmp %ecx,-0x34(%rbp) 0.00 : b9e9f: 75 14 jne b9eb5 0.00 : b9ea1: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : b9ea8: 44 39 a9 80 00 00 00 cmp %r13d,0x80(%rcx) 0.00 : b9eaf: 0f 84 53 02 00 00 je ba108 0.00 : b9eb5: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : b9ebc: 4c 8b 60 70 mov 0x70(%rax),%r12 0.00 : b9ec0: 4c 89 f0 mov %r14,%rax 0.00 : b9ec3: 49 03 04 24 add (%r12),%rax 0.00 : b9ec7: 0f b6 50 08 movzbl 0x8(%rax),%edx 100.00 : b9ecb: f6 c2 08 test $0x8,%dl 0.00 : b9ece: 0f 85 86 03 00 00 jne ba25a 0.00 : b9ed4: f6 40 0a 10 testb $0x10,0xa(%rax) 0.00 : b9ed8: 0f 85 22 01 00 00 jne ba000 0.00 : b9ede: 80 fa 04 cmp $0x4,%dl 0.00 : b9ee1: 0f 84 e9 01 00 00 je ba0d0 0.00 : b9ee7: 8b 5d cc mov -0x34(%rbp),%ebx 0.00 : b9eea: 4d 03 34 24 add (%r12),%r14 0.00 : b9eee: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : b9ef5: 89 da mov %ebx,%edx 0.00 : b9ef7: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : b9efe: 4c 89 f6 mov %r14,%rsi 0.00 : b9f01: e8 da 9f ff ff callq b3ee0 0.00 : b9f06: 85 c0 test %eax,%eax 0.00 : b9f08: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : b9f0f: 74 2f je b9f40 0.00 : b9f11: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : b9f16: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : b9f1d: 00 0.00 : b9f1e: 46 8b 2c b8 mov (%rax,%r15,4),%r13d 0.00 : b9f22: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : b9f25: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : b9f28: 0f 84 20 01 00 00 je ba04e 0.00 : b9f2e: 66 90 xchg %ax,%ax 0.00 : b9f30: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : b9f37: 3b 42 7c cmp 0x7c(%rdx),%eax 0.00 : b9f3a: 0f 8e 38 04 00 00 jle ba378 0.00 : b9f40: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : b9f47: 00 0.00 : b9f48: 0f 84 ca 04 00 00 je ba418 0.00 : b9f4e: 4c 8b 85 50 ff ff ff mov -0xb0(%rbp),%r8 0.00 : b9f55: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : b9f5b: 4c 89 c9 mov %r9,%rcx 0.00 : b9f5e: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : b9f65: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : b9f6c: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : b9f73: e8 38 83 ff ff callq b22b0 0.00 : b9f78: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : b9f7f: 8b 5d cc mov -0x34(%rbp),%ebx 0.00 : b9f82: 41 89 c5 mov %eax,%r13d 0.00 : b9f85: 41 8b 49 04 mov 0x4(%r9),%ecx 0.00 : b9f89: 39 d9 cmp %ebx,%ecx 0.00 : b9f8b: 0f 8d de fe ff ff jge b9e6f 0.00 : b9f91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b9f98: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : b9f9c: e8 ff 48 f6 ff callq 1e8a0 0.00 : b9fa1: 44 8b 45 8c mov -0x74(%rbp),%r8d 0.00 : b9fa5: 45 85 c0 test %r8d,%r8d 0.00 : b9fa8: 0f 85 bc 03 00 00 jne ba36a 0.00 : b9fae: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : b9fb5: e8 76 7f ff ff callq b1f30 0.00 : b9fba: 89 c2 mov %eax,%edx 0.00 : b9fbc: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : b9fc0: 89 d0 mov %edx,%eax 0.00 : b9fc2: 5b pop %rbx 0.00 : b9fc3: 41 5c pop %r12 0.00 : b9fc5: 41 5d pop %r13 0.00 : b9fc7: 41 5e pop %r14 0.00 : b9fc9: 41 5f pop %r15 0.00 : b9fcb: c9 leaveq 0.00 : b9fcc: c3 retq 0.00 : b9fcd: 0f 1f 00 nopl (%rax) 0.00 : b9fd0: 8b 02 mov (%rdx),%eax 0.00 : b9fd2: 83 c0 01 add $0x1,%eax 0.00 : b9fd5: 39 85 74 ff ff ff cmp %eax,-0x8c(%rbp) 0.00 : b9fdb: 0f 8e bb fe ff ff jle b9e9c 0.00 : b9fe1: 48 98 cltq 0.00 : b9fe3: 49 8d 04 c1 lea (%r9,%rax,8),%rax 0.00 : b9fe7: 89 18 mov %ebx,(%rax) 0.00 : b9fe9: c7 40 04 ff ff ff ff movl $0xffffffff,0x4(%rax) 0.00 : b9ff0: 41 8b 49 04 mov 0x4(%r9),%ecx 0.00 : b9ff4: e9 a3 fe ff ff jmpq b9e9c 0.00 : b9ff9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : ba000: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : ba003: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : ba00a: 44 89 ee mov %r13d,%esi 0.00 : ba00d: 4c 89 e7 mov %r12,%rdi 0.00 : ba010: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba017: e8 14 c4 ff ff callq b6430 0.00 : ba01c: 85 c0 test %eax,%eax 0.00 : ba01e: 41 89 c0 mov %eax,%r8d 0.00 : ba021: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba028: 0f 84 b9 fe ff ff je b9ee7 0.00 : ba02e: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : ba033: 46 8b 2c b8 mov (%rax,%r15,4),%r13d 0.00 : ba037: 44 89 c0 mov %r8d,%eax 0.00 : ba03a: 03 45 cc add -0x34(%rbp),%eax 0.00 : ba03d: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : ba044: 00 0.00 : ba045: 89 45 cc mov %eax,-0x34(%rbp) 0.00 : ba048: 0f 85 e2 fe ff ff jne b9f30 0.00 : ba04e: c7 45 b4 00 00 00 00 movl $0x0,-0x4c(%rbp) 0.00 : ba055: 45 85 ed test %r13d,%r13d 0.00 : ba058: 0f 89 02 fe ff ff jns b9e60 0.00 : ba05e: 41 83 fd fe cmp $0xfffffffe,%r13d 0.00 : ba062: 0f 85 d8 fe ff ff jne b9f40 0.00 : ba068: e9 92 04 00 00 jmpq ba4ff 0.00 : ba06d: 0f 1f 00 nopl (%rax) 0.00 : ba070: 8b 02 mov (%rdx),%eax 0.00 : ba072: 83 c0 01 add $0x1,%eax 0.00 : ba075: 39 85 74 ff ff ff cmp %eax,-0x8c(%rbp) 0.00 : ba07b: 0f 8e 1b fe ff ff jle b9e9c 0.00 : ba081: 48 98 cltq 0.00 : ba083: 49 8d 0c c1 lea (%r9,%rax,8),%rcx 0.00 : ba087: 3b 19 cmp (%rcx),%ebx 0.00 : ba089: 0f 8f a1 01 00 00 jg ba230 0.00 : ba08f: f6 42 0a 08 testb $0x8,0xa(%rdx) 0.00 : ba093: 0f 84 07 01 00 00 je ba1a0 0.00 : ba099: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : ba09d: 83 3c c2 ff cmpl $0xffffffff,(%rdx,%rax,8) 0.00 : ba0a1: 0f 84 f9 00 00 00 je ba1a0 0.00 : ba0a7: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : ba0ab: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : ba0af: 4c 89 cf mov %r9,%rdi 0.00 : ba0b2: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba0b9: e8 92 a6 fc ff callq 84750 0.00 : ba0be: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba0c5: 41 8b 49 04 mov 0x4(%r9),%ecx 0.00 : ba0c9: e9 ce fd ff ff jmpq b9e9c 0.00 : ba0ce: 66 90 xchg %ax,%ax 0.00 : ba0d0: 8b 00 mov (%rax),%eax 0.00 : ba0d2: 83 c0 01 add $0x1,%eax 0.00 : ba0d5: 48 98 cltq 0.00 : ba0d7: 49 8d 04 c1 lea (%r9,%rax,8),%rax 0.00 : ba0db: 8b 50 04 mov 0x4(%rax),%edx 0.00 : ba0de: 8b 00 mov (%rax),%eax 0.00 : ba0e0: 41 89 d0 mov %edx,%r8d 0.00 : ba0e3: 41 29 c0 sub %eax,%r8d 0.00 : ba0e6: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : ba0ed: 00 0.00 : ba0ee: 0f 85 bc 00 00 00 jne ba1b0 0.00 : ba0f4: 45 85 c0 test %r8d,%r8d 0.00 : ba0f7: 0f 85 31 ff ff ff jne ba02e 0.00 : ba0fd: e9 c9 00 00 00 jmpq ba1cb 0.00 : ba102: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : ba108: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : ba10f: 00 0.00 : ba110: 0f 84 da 02 00 00 je ba3f0 0.00 : ba116: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : ba11d: 00 0.00 : ba11e: 0f 84 74 fe ff ff je b9f98 0.00 : ba124: 31 d2 xor %edx,%edx 0.00 : ba126: 31 c9 xor %ecx,%ecx 0.00 : ba128: eb 09 jmp ba133 0.00 : ba12a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : ba130: 48 89 d1 mov %rdx,%rcx 0.00 : ba133: 49 8d 04 d1 lea (%r9,%rdx,8),%rax 0.00 : ba137: 8b 18 mov (%rax),%ebx 0.00 : ba139: 85 db test %ebx,%ebx 0.00 : ba13b: 78 06 js ba143 0.00 : ba13d: 83 78 04 ff cmpl $0xffffffff,0x4(%rax) 0.00 : ba141: 74 0d je ba150 0.00 : ba143: 48 8d 51 01 lea 0x1(%rcx),%rdx 0.00 : ba147: 48 39 95 58 ff ff ff cmp %rdx,-0xa8(%rbp) 0.00 : ba14e: 77 e0 ja ba130 0.00 : ba150: 48 39 95 58 ff ff ff cmp %rdx,-0xa8(%rbp) 0.00 : ba157: 0f 84 3b fe ff ff je b9f98 0.00 : ba15d: 4c 8b 85 50 ff ff ff mov -0xb0(%rbp),%r8 0.00 : ba164: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : ba16a: 4c 89 c9 mov %r9,%rcx 0.00 : ba16d: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : ba174: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : ba17b: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba182: e8 29 81 ff ff callq b22b0 0.00 : ba187: 4c 63 f8 movslq %eax,%r15 0.00 : ba18a: 41 89 c5 mov %eax,%r13d 0.00 : ba18d: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba194: 4d 89 fe mov %r15,%r14 0.00 : ba197: 49 c1 e6 04 shl $0x4,%r14 0.00 : ba19b: e9 15 fd ff ff jmpq b9eb5 0.00 : ba1a0: 89 59 04 mov %ebx,0x4(%rcx) 0.00 : ba1a3: 41 8b 49 04 mov 0x4(%r9),%ecx 0.00 : ba1a7: e9 f0 fc ff ff jmpq b9e9c 0.00 : ba1ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : ba1b0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : ba1b3: 0f 84 87 fd ff ff je b9f40 0.00 : ba1b9: 83 c2 01 add $0x1,%edx 0.00 : ba1bc: 0f 84 7e fd ff ff je b9f40 0.00 : ba1c2: 45 85 c0 test %r8d,%r8d 0.00 : ba1c5: 0f 85 93 03 00 00 jne ba55e 0.00 : ba1cb: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : ba1d2: 44 89 ee mov %r13d,%esi 0.00 : ba1d5: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba1dc: e8 5f 87 ff ff callq b2940 0.00 : ba1e1: 85 c0 test %eax,%eax 0.00 : ba1e3: 0f 88 16 03 00 00 js ba4ff 0.00 : ba1e9: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : ba1ee: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : ba1f5: 8b 5d cc mov -0x34(%rbp),%ebx 0.00 : ba1f8: 4a 8b 44 30 08 mov 0x8(%rax,%r14,1),%rax 0.00 : ba1fd: 48 63 d3 movslq %ebx,%rdx 0.00 : ba200: 44 8b 28 mov (%rax),%r13d 0.00 : ba203: 48 8b 81 88 00 00 00 mov 0x88(%rcx),%rax 0.00 : ba20a: 48 8b 3c d0 mov (%rax,%rdx,8),%rdi 0.00 : ba20e: 44 89 ee mov %r13d,%esi 0.00 : ba211: 48 83 c7 08 add $0x8,%rdi 0.00 : ba215: e8 06 6c ff ff callq b0e20 0.00 : ba21a: 85 c0 test %eax,%eax 0.00 : ba21c: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba223: 0f 84 c1 fc ff ff je b9eea 0.00 : ba229: e9 27 fe ff ff jmpq ba055 0.00 : ba22e: 66 90 xchg %ax,%ax 0.00 : ba230: 89 59 04 mov %ebx,0x4(%rcx) 0.00 : ba233: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : ba237: 4c 89 ce mov %r9,%rsi 0.00 : ba23a: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : ba23e: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba245: e8 06 a5 fc ff callq 84750 0.00 : ba24a: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba251: 41 8b 49 04 mov 0x4(%r9),%ecx 0.00 : ba255: e9 42 fc ff ff jmpq b9e9c 0.00 : ba25a: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : ba261: 48 63 55 cc movslq -0x34(%rbp),%rdx 0.00 : ba265: 44 89 ee mov %r13d,%esi 0.00 : ba268: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : ba26f: 48 8b 81 88 00 00 00 mov 0x88(%rcx),%rax 0.00 : ba276: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : ba27a: 48 83 c0 08 add $0x8,%rax 0.00 : ba27e: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : ba282: 49 8b 5c 24 28 mov 0x28(%r12),%rbx 0.00 : ba287: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba28e: e8 ad 86 ff ff callq b2940 0.00 : ba293: 85 c0 test %eax,%eax 0.00 : ba295: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba29c: 0f 88 5d 02 00 00 js ba4ff 0.00 : ba2a2: 4a 8d 04 33 lea (%rbx,%r14,1),%rax 0.00 : ba2a6: 44 8b 78 04 mov 0x4(%rax),%r15d 0.00 : ba2aa: 45 85 ff test %r15d,%r15d 0.00 : ba2ad: 0f 8e 8d fc ff ff jle b9f40 0.00 : ba2b3: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : ba2b7: 31 db xor %ebx,%ebx 0.00 : ba2b9: 41 be ff ff ff ff mov $0xffffffff,%r14d 0.00 : ba2bf: eb 24 jmp ba2e5 0.00 : ba2c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : ba2c8: 41 83 fe ff cmp $0xffffffff,%r14d 0.00 : ba2cc: 0f 85 ee 00 00 00 jne ba3c0 0.00 : ba2d2: 83 c3 01 add $0x1,%ebx 0.00 : ba2d5: 49 83 c4 04 add $0x4,%r12 0.00 : ba2d9: 44 39 fb cmp %r15d,%ebx 0.00 : ba2dc: 0f 8d 73 fd ff ff jge ba055 0.00 : ba2e2: 45 89 ee mov %r13d,%r14d 0.00 : ba2e5: 45 8b 2c 24 mov (%r12),%r13d 0.00 : ba2e9: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : ba2ed: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba2f4: 44 89 ee mov %r13d,%esi 0.00 : ba2f7: e8 24 6b ff ff callq b0e20 0.00 : ba2fc: 85 c0 test %eax,%eax 0.00 : ba2fe: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba305: 75 c1 jne ba2c8 0.00 : ba307: 45 89 f5 mov %r14d,%r13d 0.00 : ba30a: eb c6 jmp ba2d2 0.00 : ba30c: 48 89 df mov %rbx,%rdi 0.00 : ba30f: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba316: e8 a5 d8 02 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : ba31b: 85 c0 test %eax,%eax 0.00 : ba31d: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba324: 0f 85 d1 fa ff ff jne b9dfb 0.00 : ba32a: 48 89 df mov %rbx,%rdi 0.00 : ba32d: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba334: e8 17 45 f6 ff callq 1e850 0.00 : ba339: 48 85 c0 test %rax,%rax 0.00 : ba33c: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : ba340: c7 45 8c 01 00 00 00 movl $0x1,-0x74(%rbp) 0.00 : ba347: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba34e: 0f 85 c6 fa ff ff jne b9e1a 0.00 : ba354: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.00 : ba35b: e8 d0 7b ff ff callq b1f30 0.00 : ba360: ba 0c 00 00 00 mov $0xc,%edx 0.00 : ba365: e9 52 fc ff ff jmpq b9fbc 0.00 : ba36a: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : ba36e: e8 2d 45 f6 ff callq 1e8a0 0.00 : ba373: e9 36 fc ff ff jmpq b9fae 0.00 : ba378: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : ba37f: 48 63 d0 movslq %eax,%rdx 0.00 : ba382: 48 8b 81 88 00 00 00 mov 0x88(%rcx),%rax 0.00 : ba389: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : ba38d: 48 85 c0 test %rax,%rax 0.00 : ba390: 0f 84 aa fb ff ff je b9f40 0.00 : ba396: 48 8d 78 08 lea 0x8(%rax),%rdi 0.00 : ba39a: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba3a1: 44 89 ee mov %r13d,%esi 0.00 : ba3a4: e8 77 6a ff ff callq b0e20 0.00 : ba3a9: 85 c0 test %eax,%eax 0.00 : ba3ab: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba3b2: 0f 85 96 fc ff ff jne ba04e 0.00 : ba3b8: e9 83 fb ff ff jmpq b9f40 0.00 : ba3bd: 0f 1f 00 nopl (%rax) 0.00 : ba3c0: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : ba3c7: 44 89 f6 mov %r14d,%esi 0.00 : ba3ca: e8 51 6a ff ff callq b0e20 0.00 : ba3cf: 85 c0 test %eax,%eax 0.00 : ba3d1: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba3d8: 0f 85 77 fc ff ff jne ba055 0.00 : ba3de: 48 83 bd 78 ff ff ff cmpq $0x0,-0x88(%rbp) 0.00 : ba3e5: 00 0.00 : ba3e6: 75 68 jne ba450 0.00 : ba3e8: 45 89 f5 mov %r14d,%r13d 0.00 : ba3eb: e9 65 fc ff ff jmpq ba055 0.00 : ba3f0: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : ba3f4: e8 a7 44 f6 ff callq 1e8a0 0.00 : ba3f9: 44 8b 5d 8c mov -0x74(%rbp),%r11d 0.00 : ba3fd: 31 d2 xor %edx,%edx 0.00 : ba3ff: 45 85 db test %r11d,%r11d 0.00 : ba402: 0f 84 b4 fb ff ff je b9fbc 0.00 : ba408: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : ba40c: e8 8f 44 f6 ff callq 1e8a0 0.00 : ba411: 31 d2 xor %edx,%edx 0.00 : ba413: e9 a4 fb ff ff jmpq b9fbc 0.00 : ba418: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : ba41c: e8 7f 44 f6 ff callq 1e8a0 0.00 : ba421: 44 8b 4d 8c mov -0x74(%rbp),%r9d 0.00 : ba425: ba 01 00 00 00 mov $0x1,%edx 0.00 : ba42a: 45 85 c9 test %r9d,%r9d 0.00 : ba42d: 0f 84 89 fb ff ff je b9fbc 0.00 : ba433: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : ba437: e8 64 44 f6 ff callq 1e8a0 0.00 : ba43c: ba 01 00 00 00 mov $0x1,%edx 0.00 : ba441: e9 76 fb ff ff jmpq b9fbc 0.00 : ba446: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : ba44d: 00 00 00 0.00 : ba450: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : ba457: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : ba45e: 44 8b 7d cc mov -0x34(%rbp),%r15d 0.00 : ba462: 8b 18 mov (%rax),%ebx 0.00 : ba464: 8d 43 01 lea 0x1(%rbx),%eax 0.00 : ba467: 3b 42 04 cmp 0x4(%rdx),%eax 0.00 : ba46a: 89 02 mov %eax,(%rdx) 0.00 : ba46c: 0f 84 b6 00 00 00 je ba528 0.00 : ba472: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : ba479: 4c 63 e3 movslq %ebx,%r12 0.00 : ba47c: 49 c1 e4 05 shl $0x5,%r12 0.00 : ba480: 4c 89 e3 mov %r12,%rbx 0.00 : ba483: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : ba487: 46 89 3c 20 mov %r15d,(%rax,%r12,1) 0.00 : ba48b: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : ba48f: 46 89 6c 20 04 mov %r13d,0x4(%rax,%r12,1) 0.00 : ba494: 48 03 5a 08 add 0x8(%rdx),%rbx 0.00 : ba498: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : ba49c: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba4a3: e8 a8 43 f6 ff callq 1e850 0.00 : ba4a8: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : ba4ac: 48 8b 8d 78 ff ff ff mov -0x88(%rbp),%rcx 0.00 : ba4b3: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba4ba: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : ba4be: 4a 8b 7c 20 08 mov 0x8(%rax,%r12,1),%rdi 0.00 : ba4c3: 48 85 ff test %rdi,%rdi 0.00 : ba4c6: 74 37 je ba4ff 0.00 : ba4c8: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : ba4cc: 4c 89 ce mov %r9,%rsi 0.00 : ba4cf: e8 7c a2 fc ff callq 84750 0.00 : ba4d4: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : ba4db: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : ba4e2: 4c 03 60 08 add 0x8(%rax),%r12 0.00 : ba4e6: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : ba4eb: e8 10 8a ff ff callq b2f00 0.00 : ba4f0: 85 c0 test %eax,%eax 0.00 : ba4f2: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba4f9: 0f 84 e9 fe ff ff je ba3e8 0.00 : ba4ff: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : ba503: e8 98 43 f6 ff callq 1e8a0 0.00 : ba508: 44 8b 55 8c mov -0x74(%rbp),%r10d 0.00 : ba50c: 45 85 d2 test %r10d,%r10d 0.00 : ba50f: 0f 84 3f fe ff ff je ba354 0.00 : ba515: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : ba519: e8 82 43 f6 ff callq 1e8a0 0.00 : ba51e: 66 90 xchg %ax,%ax 0.00 : ba520: e9 2f fe ff ff jmpq ba354 0.00 : ba525: 0f 1f 00 nopl (%rax) 0.00 : ba528: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : ba52c: 48 63 f0 movslq %eax,%rsi 0.00 : ba52f: 4c 89 8d 40 ff ff ff mov %r9,-0xc0(%rbp) 0.00 : ba536: 48 c1 e6 06 shl $0x6,%rsi 0.00 : ba53a: e8 01 43 f6 ff callq 1e840 0.00 : ba53f: 48 85 c0 test %rax,%rax 0.00 : ba542: 4c 8b 8d 40 ff ff ff mov -0xc0(%rbp),%r9 0.00 : ba549: 74 b4 je ba4ff 0.00 : ba54b: 48 8b 8d 78 ff ff ff mov -0x88(%rbp),%rcx 0.00 : ba552: d1 61 04 shll 0x4(%rcx) 0.00 : ba555: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : ba559: e9 14 ff ff ff jmpq ba472 0.00 : ba55e: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : ba565: 48 63 f0 movslq %eax,%rsi 0.00 : ba568: 48 63 45 cc movslq -0x34(%rbp),%rax 0.00 : ba56c: 49 63 c8 movslq %r8d,%rcx 0.00 : ba56f: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : ba573: 48 8d 34 37 lea (%rdi,%rsi,1),%rsi 0.00 : ba577: 48 01 c7 add %rax,%rdi 0.00 : ba57a: 48 39 c9 cmp %rcx,%rcx 0.00 : ba57d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : ba57f: 0f 84 a9 fa ff ff je ba02e 0.00 : ba585: e9 b6 f9 ff ff jmpq b9f40 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cdc60 <__fcntl>: 0.00 : cdc60: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : cdc65: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : cdc6a: 41 89 fc mov %edi,%r12d 0.00 : cdc6d: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : cdc72: 48 83 ec 68 sub $0x68,%rsp 0.00 : cdc76: 48 8d 44 24 70 lea 0x70(%rsp),%rax 0.00 : cdc7b: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.00 : cdc80: c7 04 24 10 00 00 00 movl $0x10,(%rsp) 0.00 : cdc87: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : cdc8c: 48 8d 44 24 20 lea 0x20(%rsp),%rax 0.00 : cdc91: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : cdc96: b8 10 00 00 00 mov $0x10,%eax 0.00 : cdc9b: 83 f8 30 cmp $0x30,%eax 0.00 : cdc9e: 73 70 jae cdd10 <__fcntl+0xb0> 0.00 : cdca0: 89 c2 mov %eax,%edx 0.00 : cdca2: 48 03 54 24 10 add 0x10(%rsp),%rdx 0.00 : cdca7: 83 c0 08 add $0x8,%eax 0.00 : cdcaa: 89 04 24 mov %eax,(%rsp) 0.00 : cdcad: 48 8b 2a mov (%rdx),%rbp 0.00 : cdcb0: 8b 15 fe 99 2a 00 mov 0x2a99fe(%rip),%edx # 3776b4 <__libc_multiple_threads> 0.00 : cdcb6: 85 d2 test %edx,%edx 0.00 : cdcb8: 74 05 je cdcbf <__fcntl+0x5f> 0.00 : cdcba: 83 fe 07 cmp $0x7,%esi 0.00 : cdcbd: 74 11 je cdcd0 <__fcntl+0x70> 0.00 : cdcbf: 48 89 ea mov %rbp,%rdx 0.00 : cdcc2: 44 89 e7 mov %r12d,%edi 0.00 : cdcc5: e8 36 fe ff ff callq cdb00 0.00 : cdcca: 89 c5 mov %eax,%ebp 0.00 : cdccc: eb 22 jmp cdcf0 <__fcntl+0x90> 0.00 : cdcce: 66 90 xchg %ax,%ax 0.00 : cdcd0: e8 5b a5 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : cdcd5: 48 89 ea mov %rbp,%rdx 0.00 : cdcd8: 89 c3 mov %eax,%ebx 0.00 : cdcda: 44 89 e7 mov %r12d,%edi 0.00 : cdcdd: be 07 00 00 00 mov $0x7,%esi 0.00 : cdce2: e8 19 fe ff ff callq cdb00 0.00 : cdce7: 89 df mov %ebx,%edi 0.00 : cdce9: 89 c5 mov %eax,%ebp 0.00 : cdceb: e8 a0 a5 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : cdcf0: 89 e8 mov %ebp,%eax 0.00 : cdcf2: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : cdcf7: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 100.00 : cdcfc: 4c 8b 64 24 60 mov 0x60(%rsp),%r12 0.00 : cdd01: 48 83 c4 68 add $0x68,%rsp 0.00 : cdd05: c3 retq 0.00 : cdd06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : cdd0d: 00 00 00 0.00 : cdd10: 48 8b 54 24 08 mov 0x8(%rsp),%rdx 0.00 : cdd15: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : cdd19: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : cdd1e: eb 8d jmp cdcad <__fcntl+0x4d> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cde70 : 100.00 : cde70: b8 20 00 00 00 mov $0x20,%eax 0.00 : cde75: 0f 05 syscall 0.00 : cde77: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cde7d: 73 01 jae cde80 0.00 : cde7f: c3 retq 0.00 : cde80: 48 8b 0d b1 3f 2a 00 mov 0x2a3fb1(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cde87: 31 d2 xor %edx,%edx 0.00 : cde89: 48 29 c2 sub %rax,%rdx 0.00 : cde8c: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cde8f: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cde93: eb ea jmp cde7f Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cdea0 <__dup2>: 50.00 : cdea0: b8 21 00 00 00 mov $0x21,%eax 0.00 : cdea5: 0f 05 syscall 50.00 : cdea7: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cdead: 73 01 jae cdeb0 <__dup2+0x10> 0.00 : cdeaf: c3 retq 0.00 : cdeb0: 48 8b 0d 81 3f 2a 00 mov 0x2a3f81(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cdeb7: 31 d2 xor %edx,%edx 0.00 : cdeb9: 48 29 c2 sub %rax,%rdx 0.00 : cdebc: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cdebf: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cdec3: eb ea jmp cdeaf <__dup2+0xf> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cdfc0 : 100.00 : cdfc0: b8 50 00 00 00 mov $0x50,%eax 0.00 : cdfc5: 0f 05 syscall 0.00 : cdfc7: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cdfcd: 73 01 jae cdfd0 0.00 : cdfcf: c3 retq 0.00 : cdfd0: 48 8b 0d 61 3e 2a 00 mov 0x2a3e61(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cdfd7: 31 d2 xor %edx,%edx 0.00 : cdfd9: 48 29 c2 sub %rax,%rdx 0.00 : cdfdc: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cdfdf: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cdfe3: eb ea jmp cdfcf Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000f19e0 <__longjmp_chk>: 0.00 : f19e0: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 100.00 : f19e5: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : f19ea: 48 83 ec 18 sub $0x18,%rsp 0.00 : f19ee: 48 89 fd mov %rdi,%rbp 0.00 : f19f1: 89 f3 mov %esi,%ebx 0.00 : f19f3: e8 28 10 f4 ff callq 32a20 <_longjmp_unwind> 0.00 : f19f8: 8b 45 40 mov 0x40(%rbp),%eax 0.00 : f19fb: 85 c0 test %eax,%eax 0.00 : f19fd: 75 19 jne f1a18 <__longjmp_chk+0x38> 0.00 : f19ff: 85 db test %ebx,%ebx 0.00 : f1a01: b8 01 00 00 00 mov $0x1,%eax 0.00 : f1a06: 48 89 ef mov %rbp,%rdi 0.00 : f1a09: 0f 44 d8 cmove %eax,%ebx 0.00 : f1a0c: 89 de mov %ebx,%esi 0.00 : f1a0e: e8 1d 00 00 00 callq f1a30 <____longjmp_chk> 0.00 : f1a13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : f1a18: 48 8d 75 48 lea 0x48(%rbp),%rsi 0.00 : f1a1c: 31 d2 xor %edx,%edx 0.00 : f1a1e: bf 02 00 00 00 mov $0x2,%edi 0.00 : f1a23: e8 f8 13 f4 ff callq 32e20 0.00 : f1a28: eb d5 jmp f19ff <__longjmp_chk+0x1f> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000f1a30 <____longjmp_chk>: 100.00 : f1a30: 4c 8b 47 30 mov 0x30(%rdi),%r8 0.00 : f1a34: 4c 8b 4f 08 mov 0x8(%rdi),%r9 0.00 : f1a38: 48 8b 57 38 mov 0x38(%rdi),%rdx 0.00 : f1a3c: 49 c1 c8 11 ror $0x11,%r8 0.00 : f1a40: 64 4c 33 04 25 30 00 xor %fs:0x30,%r8 0.00 : f1a47: 00 00 0.00 : f1a49: 49 c1 c9 11 ror $0x11,%r9 0.00 : f1a4d: 64 4c 33 0c 25 30 00 xor %fs:0x30,%r9 0.00 : f1a54: 00 00 0.00 : f1a56: 48 c1 ca 11 ror $0x11,%rdx 0.00 : f1a5a: 64 48 33 14 25 30 00 xor %fs:0x30,%rdx 0.00 : f1a61: 00 00 0.00 : f1a63: 4c 39 c4 cmp %r8,%rsp 0.00 : f1a66: 76 4b jbe f1ab3 <____longjmp_chk+0x83> 0.00 : f1a68: 49 89 fa mov %rdi,%r10 0.00 : f1a6b: 89 f3 mov %esi,%ebx 0.00 : f1a6d: 31 ff xor %edi,%edi 0.00 : f1a6f: 48 8d 74 24 e8 lea -0x18(%rsp),%rsi 0.00 : f1a74: b8 83 00 00 00 mov $0x83,%eax 0.00 : f1a79: 0f 05 syscall 0.00 : f1a7b: 85 c0 test %eax,%eax 0.00 : f1a7d: 75 2f jne f1aae <____longjmp_chk+0x7e> 0.00 : f1a7f: f7 44 24 f0 01 00 00 testl $0x1,-0x10(%rsp) 0.00 : f1a86: 00 0.00 : f1a87: 74 14 je f1a9d <____longjmp_chk+0x6d> 0.00 : f1a89: 48 8b 44 24 e8 mov -0x18(%rsp),%rax 0.00 : f1a8e: 48 03 44 24 f8 add -0x8(%rsp),%rax 0.00 : f1a93: 4c 29 c0 sub %r8,%rax 0.00 : f1a96: 48 3b 44 24 f8 cmp -0x8(%rsp),%rax 0.00 : f1a9b: 73 11 jae f1aae <____longjmp_chk+0x7e> 0.00 : f1a9d: 48 83 ec 08 sub $0x8,%rsp 0.00 : f1aa1: 48 8d 3d 3b b6 04 00 lea 0x4b63b(%rip),%rdi # 13d0e3 0.00 : f1aa8: e8 33 00 00 00 callq f1ae0 <__fortify_fail> 0.00 : f1aad: 90 nop 0.00 : f1aae: 4c 89 d7 mov %r10,%rdi 0.00 : f1ab1: 89 de mov %ebx,%esi 0.00 : f1ab3: 48 8b 1f mov (%rdi),%rbx 0.00 : f1ab6: 4c 8b 67 10 mov 0x10(%rdi),%r12 0.00 : f1aba: 4c 8b 6f 18 mov 0x18(%rdi),%r13 0.00 : f1abe: 4c 8b 77 20 mov 0x20(%rdi),%r14 0.00 : f1ac2: 4c 8b 7f 28 mov 0x28(%rdi),%r15 0.00 : f1ac6: 89 f0 mov %esi,%eax 0.00 : f1ac8: 4c 89 c4 mov %r8,%rsp 0.00 : f1acb: 4c 89 cd mov %r9,%rbp 0.00 : f1ace: ff e2 jmpq *%rdx Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008440 <_dl_init_paths>: 50.00 : 8440: 55 push %rbp 0.00 : 8441: 48 8b 35 e8 67 21 00 mov 0x2167e8(%rip),%rsi # 21ec30 <_rtld_global_ro+0x10> 0.00 : 8448: 48 8d 0d e1 69 21 00 lea 0x2169e1(%rip),%rcx # 21ee30 0.00 : 844f: 48 8d 15 d2 69 21 00 lea 0x2169d2(%rip),%rdx # 21ee28 0.00 : 8456: 48 89 e5 mov %rsp,%rbp 0.00 : 8459: 41 56 push %r14 0.00 : 845b: 41 55 push %r13 0.00 : 845d: 49 89 fd mov %rdi,%r13 0.00 : 8460: 48 8b 3d c1 67 21 00 mov 0x2167c1(%rip),%rdi # 21ec28 <_rtld_global_ro+0x8> 0.00 : 8467: 41 54 push %r12 0.00 : 8469: 53 push %rbx 0.00 : 846a: e8 b1 bc 00 00 callq 14120 <_dl_important_hwcaps> 0.00 : 846f: bf 18 00 00 00 mov $0x18,%edi 0.00 : 8474: 48 89 05 a5 69 21 00 mov %rax,0x2169a5(%rip) # 21ee20 0.00 : 847b: e8 30 86 ff ff callq ab0 0.00 : 8480: 48 85 c0 test %rax,%rax 0.00 : 8483: 49 89 c4 mov %rax,%r12 0.00 : 8486: 48 89 05 b3 69 21 00 mov %rax,0x2169b3(%rip) # 21ee40 0.00 : 848d: 0f 84 76 02 00 00 je 8709 <_dl_init_paths+0x2c9> 0.00 : 8493: 48 8b 15 8e 69 21 00 mov 0x21698e(%rip),%rdx # 21ee28 0.00 : 849a: 48 b8 cd cc cc cc cc movabs $0xcccccccccccccccd,%rax 0.00 : 84a1: cc cc cc 0.00 : 84a4: 48 8d 14 95 4f 00 00 lea 0x4f(,%rdx,4),%rdx 0.00 : 84ab: 00 0.00 : 84ac: 48 f7 e2 mul %rdx 0.00 : 84af: 48 c1 ea 05 shr $0x5,%rdx 0.00 : 84b3: 48 8d 1c 92 lea (%rdx,%rdx,4),%rbx 0.00 : 84b7: 48 8d 3c 9b lea (%rbx,%rbx,4),%rdi 0.00 : 84bb: 48 c1 e7 05 shl $0x5,%rdi 0.00 : 84bf: e8 ec 85 ff ff callq ab0 0.00 : 84c4: 49 89 04 24 mov %rax,(%r12) 0.00 : 84c8: 48 8b 05 71 69 21 00 mov 0x216971(%rip),%rax # 21ee40 0.00 : 84cf: 48 8d 0d 72 2c 01 00 lea 0x12c72(%rip),%rcx # 1b148 <__PRETTY_FUNCTION__.3644+0xdd7> 0.00 : 84d6: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 84da: 0f 84 30 02 00 00 je 8710 <_dl_init_paths+0x2d0> 0.00 : 84e0: c7 05 5e 69 21 00 00 movl $0x0,0x21695e(%rip) # 21ee48 0.00 : 84e7: 00 00 00 0.00 : 84ea: 4c 8d 04 dd 00 00 00 lea 0x0(,%rbx,8),%r8 0.00 : 84f1: 00 0.00 : 84f2: 48 8b 08 mov (%rax),%rcx 0.00 : 84f5: 48 8d 35 e4 04 01 00 lea 0x104e4(%rip),%rsi # 189e0 0.00 : 84fc: 4c 8d 15 fd 04 01 00 lea 0x104fd(%rip),%r10 # 18a00 0.00 : 8503: 31 ff xor %edi,%edi 0.00 : 8505: 4d 89 c1 mov %r8,%r9 0.00 : 8508: 48 89 0d b1 74 21 00 mov %rcx,0x2174b1(%rip) # 21f9c0 <_rtld_global+0x960> 0.00 : 850f: 49 f7 d9 neg %r9 0.00 : 8512: 48 8d 05 e0 15 01 00 lea 0x115e0(%rip),%rax # 19af9 <__PRETTY_FUNCTION__.12417+0x1f7> 0.00 : 8519: 49 89 0c 24 mov %rcx,(%r12) 0.00 : 851d: 48 89 f2 mov %rsi,%rdx 0.00 : 8520: 48 89 71 18 mov %rsi,0x18(%rcx) 0.00 : 8524: 48 c7 41 10 00 00 00 movq $0x0,0x10(%rcx) 0.00 : 852b: 00 0.00 : 852c: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 8530: 49 8b 04 fa mov (%r10,%rdi,8),%rax 0.00 : 8534: 48 89 41 20 mov %rax,0x20(%rcx) 0.00 : 8538: 80 3a 2f cmpb $0x2f,(%rdx) 0.00 : 853b: 48 8d 74 06 01 lea 0x1(%rsi,%rax,1),%rsi 0.00 : 8540: 0f 85 32 02 00 00 jne 8778 <_dl_init_paths+0x338> 0.00 : 8546: 31 c0 xor %eax,%eax 0.00 : 8548: 48 83 3d d8 68 21 00 cmpq $0x0,0x2168d8(%rip) # 21ee28 0.00 : 854f: 00 0.00 : 8550: 74 1b je 856d <_dl_init_paths+0x12d> 0.00 : 8552: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8558: c7 44 81 28 00 00 00 movl $0x0,0x28(%rcx,%rax,4) 0.00 : 855f: 00 0.00 : 8560: 48 83 c0 01 add $0x1,%rax 0.00 : 8564: 48 39 05 bd 68 21 00 cmp %rax,0x2168bd(%rip) # 21ee28 0.00 : 856b: 77 eb ja 8558 <_dl_init_paths+0x118> 0.00 : 856d: 49 83 c4 08 add $0x8,%r12 0.00 : 8571: 48 83 ef 01 sub $0x1,%rdi 0.00 : 8575: 74 11 je 8588 <_dl_init_paths+0x148> 0.00 : 8577: 4c 01 c1 add %r8,%rcx 0.00 : 857a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 857f: 4a 89 0c 09 mov %rcx,(%rcx,%r9,1) 0.00 : 8583: eb 8d jmp 8512 <_dl_init_paths+0xd2> 0.00 : 8585: 0f 1f 00 nopl (%rax) 0.00 : 8588: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 858f: 48 c7 05 de 7a 21 00 movq $0xb,0x217ade(%rip) # 220078 0.00 : 8596: 0b 00 00 00 0.00 : 859a: 49 c7 04 24 00 00 00 movq $0x0,(%r12) 0.00 : 85a1: 00 0.00 : 85a2: 48 8b 1d b7 6a 21 00 mov 0x216ab7(%rip),%rbx # 21f060 <_rtld_global> 0.00 : 85a9: 48 85 db test %rbx,%rbx 0.00 : 85ac: 74 4f je 85fd <_dl_init_paths+0x1bd> 0.00 : 85ae: 0f b6 83 14 03 00 00 movzbl 0x314(%rbx),%eax 0.00 : 85b5: 83 e0 03 and $0x3,%eax 0.00 : 85b8: 3c 02 cmp $0x2,%al 0.00 : 85ba: 0f 84 ec 01 00 00 je 87ac <_dl_init_paths+0x36c> 50.00 : 85c0: 48 8b 93 28 01 00 00 mov 0x128(%rbx),%rdx 0.00 : 85c7: 48 85 d2 test %rdx,%rdx 0.00 : 85ca: 0f 84 50 01 00 00 je 8720 <_dl_init_paths+0x2e0> 0.00 : 85d0: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 85d4: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 85d8: 48 8d bb a8 03 00 00 lea 0x3a8(%rbx),%rdi 0.00 : 85df: 48 8d 0d ca 14 01 00 lea 0x114ca(%rip),%rcx # 19ab0 <__PRETTY_FUNCTION__.12417+0x1ae> 0.00 : 85e6: 48 89 da mov %rbx,%rdx 0.00 : 85e9: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : 85ed: e8 ee f1 ff ff callq 77e0 0.00 : 85f2: 48 c7 83 18 03 00 00 movq $0xffffffffffffffff,0x318(%rbx) 0.00 : 85f9: ff ff ff ff 0.00 : 85fd: 4d 85 ed test %r13,%r13 0.00 : 8600: 74 07 je 8609 <_dl_init_paths+0x1c9> 0.00 : 8602: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 0.00 : 8607: 75 27 jne 8630 <_dl_init_paths+0x1f0> 0.00 : 8609: 48 c7 05 fc 67 21 00 movq $0xffffffffffffffff,0x2167fc(%rip) # 21ee10 0.00 : 8610: ff ff ff ff 0.00 : 8614: 48 8b 05 a5 73 21 00 mov 0x2173a5(%rip),%rax # 21f9c0 <_rtld_global+0x960> 0.00 : 861b: 48 89 05 9e 66 21 00 mov %rax,0x21669e(%rip) # 21ecc0 <_rtld_global_ro+0xa0> 0.00 : 8622: 48 8d 65 e0 lea -0x20(%rbp),%rsp 0.00 : 8626: 5b pop %rbx 0.00 : 8627: 41 5c pop %r12 0.00 : 8629: 41 5d pop %r13 0.00 : 862b: 41 5e pop %r14 0.00 : 862d: c9 leaveq 0.00 : 862e: c3 retq 0.00 : 862f: 90 nop 0.00 : 8630: be 24 00 00 00 mov $0x24,%esi 0.00 : 8635: 4c 89 ef mov %r13,%rdi 0.00 : 8638: e8 a3 df 00 00 callq 165e0 0.00 : 863d: 48 85 c0 test %rax,%rax 0.00 : 8640: 0f 85 85 01 00 00 jne 87cb <_dl_init_paths+0x38b> 0.00 : 8646: 4c 89 ef mov %r13,%rdi 0.00 : 8649: e8 22 e1 00 00 callq 16770 <__GI_strlen> 0.00 : 864e: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 8652: 48 83 c0 1f add $0x1f,%rax 0.00 : 8656: 4c 89 ee mov %r13,%rsi 0.00 : 8659: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 865d: 48 29 c4 sub %rax,%rsp 0.00 : 8660: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : 8665: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 8669: e8 82 ec 00 00 callq 172f0 0.00 : 866e: 48 89 c3 mov %rax,%rbx 0.00 : 8671: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : 8676: 4c 89 ef mov %r13,%rdi 0.00 : 8679: ba 01 00 00 00 mov $0x1,%edx 0.00 : 867e: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 8683: 84 c0 test %al,%al 0.00 : 8685: 74 25 je 86ac <_dl_init_paths+0x26c> 0.00 : 8687: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 868e: 00 00 0.00 : 8690: 83 e8 3a sub $0x3a,%eax 0.00 : 8693: 3c 02 cmp $0x2,%al 0.00 : 8695: 48 83 d2 00 adc $0x0,%rdx 0.00 : 8699: 48 83 c7 01 add $0x1,%rdi 0.00 : 869d: 0f b6 07 movzbl (%rdi),%eax 0.00 : 86a0: 84 c0 test %al,%al 0.00 : 86a2: 75 ec jne 8690 <_dl_init_paths+0x250> 0.00 : 86a4: 48 8d 0c d5 08 00 00 lea 0x8(,%rdx,8),%rcx 0.00 : 86ab: 00 0.00 : 86ac: 48 89 cf mov %rcx,%rdi 0.00 : 86af: e8 fc 83 ff ff callq ab0 0.00 : 86b4: 48 85 c0 test %rax,%rax 0.00 : 86b7: 48 89 05 52 67 21 00 mov %rax,0x216752(%rip) # 21ee10 0.00 : 86be: 48 8d 0d 83 2a 01 00 lea 0x12a83(%rip),%rcx # 1b148 <__PRETTY_FUNCTION__.3644+0xdd7> 0.00 : 86c5: 74 49 je 8710 <_dl_init_paths+0x2d0> 0.00 : 86c7: 8b 0d 83 67 21 00 mov 0x216783(%rip),%ecx # 21ee50 <__libc_enable_secure> 0.00 : 86cd: 4c 8d 05 68 14 01 00 lea 0x11468(%rip),%r8 # 19b3c <__PRETTY_FUNCTION__.12417+0x23a> 0.00 : 86d4: 48 8d 15 71 14 01 00 lea 0x11471(%rip),%rdx # 19b4c <__PRETTY_FUNCTION__.12417+0x24a> 0.00 : 86db: 45 31 c9 xor %r9d,%r9d 0.00 : 86de: 48 89 df mov %rbx,%rdi 0.00 : 86e1: 48 89 c6 mov %rax,%rsi 0.00 : 86e4: e8 37 c9 ff ff callq 5020 0.00 : 86e9: 48 8b 3d 20 67 21 00 mov 0x216720(%rip),%rdi # 21ee10 0.00 : 86f0: 48 83 3f 00 cmpq $0x0,(%rdi) 0.00 : 86f4: 0f 84 9d 00 00 00 je 8797 <_dl_init_paths+0x357> 0.00 : 86fa: c7 05 14 67 21 00 00 movl $0x0,0x216714(%rip) # 21ee18 0.00 : 8701: 00 00 00 0.00 : 8704: e9 0b ff ff ff jmpq 8614 <_dl_init_paths+0x1d4> 0.00 : 8709: 48 8d 0d b0 2e 01 00 lea 0x12eb0(%rip),%rcx # 1b5c0 <__PRETTY_FUNCTION__.3644+0x124f> 0.00 : 8710: 31 d2 xor %edx,%edx 0.00 : 8712: 31 f6 xor %esi,%esi 0.00 : 8714: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 8719: e8 e2 57 00 00 callq df00 <_dl_signal_error> 0.00 : 871e: 66 90 xchg %ax,%ax 0.00 : 8720: 48 8b 93 b8 00 00 00 mov 0xb8(%rbx),%rdx 0.00 : 8727: 48 c7 83 a8 03 00 00 movq $0xffffffffffffffff,0x3a8(%rbx) 0.00 : 872e: ff ff ff ff 0.00 : 8732: 48 85 d2 test %rdx,%rdx 0.00 : 8735: 74 31 je 8768 <_dl_init_paths+0x328> 0.00 : 8737: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 873b: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 873f: 48 8d bb 18 03 00 00 lea 0x318(%rbx),%rdi 0.00 : 8746: 48 8d 0d 5d 13 01 00 lea 0x1135d(%rip),%rcx # 19aaa <__PRETTY_FUNCTION__.12417+0x1a8> 0.00 : 874d: 48 89 da mov %rbx,%rdx 0.00 : 8750: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : 8754: e8 87 f0 ff ff callq 77e0 0.00 : 8759: c7 83 20 03 00 00 00 movl $0x0,0x320(%rbx) 0.00 : 8760: 00 00 00 0.00 : 8763: e9 95 fe ff ff jmpq 85fd <_dl_init_paths+0x1bd> 0.00 : 8768: 48 c7 83 18 03 00 00 movq $0xffffffffffffffff,0x318(%rbx) 0.00 : 876f: ff ff ff ff 0.00 : 8773: e9 85 fe ff ff jmpq 85fd <_dl_init_paths+0x1bd> 0.00 : 8778: 48 8d 0d e2 13 01 00 lea 0x113e2(%rip),%rcx # 19b61 <__PRETTY_FUNCTION__.12287> 0.00 : 877f: 48 8d 35 b5 11 01 00 lea 0x111b5(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 8786: 48 8d 3d 7f 13 01 00 lea 0x1137f(%rip),%rdi # 19b0c <__PRETTY_FUNCTION__.12417+0x20a> 0.00 : 878d: ba 04 03 00 00 mov $0x304,%edx 0.00 : 8792: e8 d9 c5 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 8797: e8 54 83 ff ff callq af0 0.00 : 879c: 48 c7 05 69 66 21 00 movq $0xffffffffffffffff,0x216669(%rip) # 21ee10 0.00 : 87a3: ff ff ff ff 0.00 : 87a7: e9 4e ff ff ff jmpq 86fa <_dl_init_paths+0x2ba> 0.00 : 87ac: 48 8d 0d ae 13 01 00 lea 0x113ae(%rip),%rcx # 19b61 <__PRETTY_FUNCTION__.12287> 0.00 : 87b3: 48 8d 35 81 11 01 00 lea 0x11181(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 87ba: 48 8d 3d 64 13 01 00 lea 0x11364(%rip),%rdi # 19b25 <__PRETTY_FUNCTION__.12417+0x223> 0.00 : 87c1: ba 16 03 00 00 mov $0x316,%edx 0.00 : 87c6: e8 a5 c5 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 87cb: be 01 00 00 00 mov $0x1,%esi 0.00 : 87d0: 48 89 c7 mov %rax,%rdi 0.00 : 87d3: e8 58 c6 ff ff callq 4e30 <_dl_dst_count> 0.00 : 87d8: 48 85 c0 test %rax,%rax 0.00 : 87db: 49 89 c4 mov %rax,%r12 0.00 : 87de: 0f 84 62 fe ff ff je 8646 <_dl_init_paths+0x206> 0.00 : 87e4: 4c 89 ef mov %r13,%rdi 0.00 : 87e7: e8 84 df 00 00 callq 16770 <__GI_strlen> 0.00 : 87ec: 48 8b bb 38 03 00 00 mov 0x338(%rbx),%rdi 0.00 : 87f3: 49 89 c6 mov %rax,%r14 0.00 : 87f6: 48 85 ff test %rdi,%rdi 0.00 : 87f9: 74 63 je 885e <_dl_init_paths+0x41e> 0.00 : 87fb: 48 83 ff ff cmp $0xffffffffffffffff,%rdi 0.00 : 87ff: 74 59 je 885a <_dl_init_paths+0x41a> 0.00 : 8801: e8 6a df 00 00 callq 16770 <__GI_strlen> 0.00 : 8806: 48 89 c2 mov %rax,%rdx 0.00 : 8809: 48 83 3d 1f 64 21 00 cmpq $0x5,0x21641f(%rip) # 21ec30 <_rtld_global_ro+0x10> 0.00 : 8810: 05 0.00 : 8811: b8 05 00 00 00 mov $0x5,%eax 0.00 : 8816: 48 89 df mov %rbx,%rdi 0.00 : 8819: 48 0f 43 05 0f 64 21 cmovae 0x21640f(%rip),%rax # 21ec30 <_rtld_global_ro+0x10> 0.00 : 8820: 00 0.00 : 8821: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 8826: 4c 89 ee mov %r13,%rsi 0.00 : 8829: 48 39 d0 cmp %rdx,%rax 0.00 : 882c: 48 0f 42 c2 cmovb %rdx,%rax 0.00 : 8830: 48 83 e8 04 sub $0x4,%rax 0.00 : 8834: 49 0f af c4 imul %r12,%rax 0.00 : 8838: 49 8d 44 06 1f lea 0x1f(%r14,%rax,1),%rax 0.00 : 883d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 8841: 48 29 c4 sub %rax,%rsp 0.00 : 8844: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 8849: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 884d: e8 2e eb ff ff callq 7380 <_dl_dst_substitute> 0.00 : 8852: 48 89 c3 mov %rax,%rbx 0.00 : 8855: e9 17 fe ff ff jmpq 8671 <_dl_init_paths+0x231> 0.00 : 885a: 31 d2 xor %edx,%edx 0.00 : 885c: eb ab jmp 8809 <_dl_init_paths+0x3c9> 0.00 : 885e: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 8862: 80 38 00 cmpb $0x0,(%rax) 0.00 : 8865: 74 0c je 8873 <_dl_init_paths+0x433> 0.00 : 8867: 48 8d 05 62 71 21 00 lea 0x217162(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 886e: 48 39 c3 cmp %rax,%rbx 0.00 : 8871: 75 26 jne 8899 <_dl_init_paths+0x459> 0.00 : 8873: e8 38 8f 00 00 callq 117b0 <_dl_get_origin> 0.00 : 8878: 48 89 c7 mov %rax,%rdi 0.00 : 887b: 48 89 83 38 03 00 00 mov %rax,0x338(%rbx) 0.00 : 8882: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : 8886: 48 83 f8 fd cmp $0xfffffffffffffffd,%rax 0.00 : 888a: 77 ce ja 885a <_dl_init_paths+0x41a> 0.00 : 888c: e8 df de 00 00 callq 16770 <__GI_strlen> 0.00 : 8891: 48 89 c2 mov %rax,%rdx 0.00 : 8894: e9 70 ff ff ff jmpq 8809 <_dl_init_paths+0x3c9> 0.00 : 8899: 48 8d 0d c1 12 01 00 lea 0x112c1(%rip),%rcx # 19b61 <__PRETTY_FUNCTION__.12287> 0.00 : 88a0: 48 8d 35 94 10 01 00 lea 0x11094(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 88a7: 48 8d 3d 3a 2c 01 00 lea 0x12c3a(%rip),%rdi # 1b4e8 <__PRETTY_FUNCTION__.3644+0x1177> 0.00 : 88ae: ba 46 03 00 00 mov $0x346,%edx 0.00 : 88b3: e8 b8 c4 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000dd90 <_dl_receive_error>: 0.00 : dd90: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : dd95: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : dd9a: 48 89 f5 mov %rsi,%rbp 0.00 : dd9d: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : dda2: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : dda7: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : ddac: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : ddb1: 49 89 d6 mov %rdx,%r14 0.00 : ddb4: 48 83 ec 38 sub $0x38,%rsp 0.00 : ddb8: 49 89 ff mov %rdi,%r15 0.00 : ddbb: ff 15 07 1c 21 00 callq *0x211c07(%rip) # 21f9c8 <_rtld_global+0x968> 0.00 : ddc1: 4c 8b 2d d0 22 21 00 mov 0x2122d0(%rip),%r13 # 220098 100.00 : ddc8: 4c 8b 20 mov (%rax),%r12 0.00 : ddcb: 48 89 c3 mov %rax,%rbx 0.00 : ddce: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : ddd5: 4c 89 f7 mov %r14,%rdi 0.00 : ddd8: 4c 89 3d b9 22 21 00 mov %r15,0x2122b9(%rip) # 220098 0.00 : dddf: ff d5 callq *%rbp 0.00 : dde1: 4c 89 23 mov %r12,(%rbx) 0.00 : dde4: 4c 89 2d ad 22 21 00 mov %r13,0x2122ad(%rip) # 220098 0.00 : ddeb: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : ddf0: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : ddf5: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : ddfa: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : ddff: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : de04: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : de09: 48 83 c4 38 add $0x38,%rsp Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000de10 <_dl_catch_error>: 0.00 : de10: 53 push %rbx 0.00 : de11: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : de18: 48 89 7c 24 20 mov %rdi,0x20(%rsp) 0.00 : de1d: 48 89 74 24 18 mov %rsi,0x18(%rsp) 0.00 : de22: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : de27: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : de2c: 4c 89 04 24 mov %r8,(%rsp) 0.00 : de30: 48 c7 44 24 38 00 00 movq $0x0,0x38(%rsp) 0.00 : de37: 00 00 0.00 : de39: ff 15 89 1b 21 00 callq *0x211b89(%rip) # 21f9c8 <_rtld_global+0x968> 50.00 : de3f: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : de44: 48 8b 00 mov (%rax),%rax 0.00 : de47: 48 8d 7c 24 48 lea 0x48(%rsp),%rdi 0.00 : de4c: 31 f6 xor %esi,%esi 0.00 : de4e: 48 89 84 24 18 01 00 mov %rax,0x118(%rsp) 0.00 : de55: 00 0.00 : de56: e8 c5 84 00 00 callq 16320 <__GI___sigsetjmp> 0.00 : de5b: 85 c0 test %eax,%eax 0.00 : de5d: 89 c3 mov %eax,%ebx 0.00 : de5f: 75 50 jne deb1 <_dl_catch_error+0xa1> 0.00 : de61: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : de66: 48 8d 44 24 30 lea 0x30(%rsp),%rax 0.00 : de6b: 48 89 02 mov %rax,(%rdx) 0.00 : de6e: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : de72: ff 54 24 08 callq *0x8(%rsp) 50.00 : de76: 48 8b 84 24 18 01 00 mov 0x118(%rsp),%rax 0.00 : de7d: 00 0.00 : de7e: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : de83: 48 89 02 mov %rax,(%rdx) 0.00 : de86: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : de8b: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : de92: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : de97: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : de9e: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : dea3: c6 00 00 movb $0x0,(%rax) 0.00 : dea6: 89 d8 mov %ebx,%eax 0.00 : dea8: 48 81 c4 20 01 00 00 add $0x120,%rsp 0.00 : deaf: 5b pop %rbx 0.00 : deb0: c3 retq 0.00 : deb1: 48 8b 84 24 18 01 00 mov 0x118(%rsp),%rax 0.00 : deb8: 00 0.00 : deb9: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : debe: 83 fb ff cmp $0xffffffff,%ebx 0.00 : dec1: 48 89 02 mov %rax,(%rdx) 0.00 : dec4: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : dec9: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : dece: 48 89 02 mov %rax,(%rdx) 0.00 : ded1: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : ded6: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : dedb: 48 89 02 mov %rax,(%rdx) 0.00 : dede: 0f b6 44 24 40 movzbl 0x40(%rsp),%eax 0.00 : dee3: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : dee8: 88 02 mov %al,(%rdx) 0.00 : deea: b8 00 00 00 00 mov $0x0,%eax 0.00 : deef: 0f 44 d8 cmove %eax,%ebx 0.00 : def2: eb b2 jmp dea6 <_dl_catch_error+0x96> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000f400 <_dl_sysdep_read_whole_file>: 50.00 : f400: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 50.00 : f405: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : f40a: 31 c0 xor %eax,%eax 0.00 : f40c: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : f411: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : f416: 49 89 f4 mov %rsi,%r12 0.00 : f419: 48 81 ec b8 00 00 00 sub $0xb8,%rsp 0.00 : f420: 31 f6 xor %esi,%esi 0.00 : f422: 41 89 d5 mov %edx,%r13d 0.00 : f425: e8 26 6b 00 00 callq 15f50 <__libc_open> 0.00 : f42a: 85 c0 test %eax,%eax 0.00 : f42c: 89 c5 mov %eax,%ebp 0.00 : f42e: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : f435: 78 2f js f466 <_dl_sysdep_read_whole_file+0x66> 0.00 : f437: 48 89 e2 mov %rsp,%rdx 0.00 : f43a: 89 c6 mov %eax,%esi 0.00 : f43c: bf 01 00 00 00 mov $0x1,%edi 0.00 : f441: e8 ba 6a 00 00 callq 15f00 <__GI___fxstat> 0.00 : f446: 85 c0 test %eax,%eax 0.00 : f448: 78 0e js f458 <_dl_sysdep_read_whole_file+0x58> 0.00 : f44a: 48 8b 74 24 30 mov 0x30(%rsp),%rsi 0.00 : f44f: 48 85 f6 test %rsi,%rsi 0.00 : f452: 49 89 34 24 mov %rsi,(%r12) 0.00 : f456: 75 40 jne f498 <_dl_sysdep_read_whole_file+0x98> 0.00 : f458: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : f45f: 89 ef mov %ebp,%edi 0.00 : f461: e8 1a 6b 00 00 callq 15f80 <__close> 0.00 : f466: 48 89 d8 mov %rbx,%rax 0.00 : f469: 48 8b ac 24 a0 00 00 mov 0xa0(%rsp),%rbp 0.00 : f470: 00 0.00 : f471: 48 8b 9c 24 98 00 00 mov 0x98(%rsp),%rbx 0.00 : f478: 00 0.00 : f479: 4c 8b a4 24 a8 00 00 mov 0xa8(%rsp),%r12 0.00 : f480: 00 0.00 : f481: 4c 8b ac 24 b0 00 00 mov 0xb0(%rsp),%r13 0.00 : f488: 00 0.00 : f489: 48 81 c4 b8 00 00 00 add $0xb8,%rsp 0.00 : f490: c3 retq 0.00 : f491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : f498: 45 31 c9 xor %r9d,%r9d 0.00 : f49b: 41 89 e8 mov %ebp,%r8d 0.00 : f49e: b9 02 00 00 00 mov $0x2,%ecx 0.00 : f4a3: 44 89 ea mov %r13d,%edx 0.00 : f4a6: 31 ff xor %edi,%edi 0.00 : f4a8: e8 23 6d 00 00 callq 161d0 <__mmap> 0.00 : f4ad: 48 89 c3 mov %rax,%rbx 0.00 : f4b0: eb ad jmp f45f <_dl_sysdep_read_whole_file+0x5f> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000011520 <_dl_determine_tlsoffset>: 0.00 : 11520: 41 57 push %r15 33.33 : 11522: 41 56 push %r14 0.00 : 11524: 41 55 push %r13 0.00 : 11526: 41 54 push %r12 0.00 : 11528: 55 push %rbp 0.00 : 11529: 53 push %rbx 0.00 : 1152a: 48 83 ec 08 sub $0x8,%rsp 0.00 : 1152e: 48 8b 05 33 ea 20 00 mov 0x20ea33(%rip),%rax # 21ff68 <_rtld_global+0xf08> 0.00 : 11535: 48 85 c0 test %rax,%rax 0.00 : 11538: 0f 84 98 01 00 00 je 116d6 <_dl_determine_tlsoffset+0x1b6> 0.00 : 1153e: 48 83 78 08 00 cmpq $0x0,0x8(%rax) 0.00 : 11543: 0f 85 6e 01 00 00 jne 116b7 <_dl_determine_tlsoffset+0x197> 0.00 : 11549: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 1154d: 48 85 ff test %rdi,%rdi 0.00 : 11550: 0f 84 51 01 00 00 je 116a7 <_dl_determine_tlsoffset+0x187> 0.00 : 11556: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 1155a: 0f 84 28 01 00 00 je 11688 <_dl_determine_tlsoffset+0x168> 0.00 : 11560: 48 89 c5 mov %rax,%rbp 0.00 : 11563: 41 ba 20 00 00 00 mov $0x20,%r10d 0.00 : 11569: 45 31 e4 xor %r12d,%r12d 0.00 : 1156c: 45 31 ed xor %r13d,%r13d 0.00 : 1156f: 45 31 c9 xor %r9d,%r9d 0.00 : 11572: 31 db xor %ebx,%ebx 0.00 : 11574: eb 55 jmp 115cb <_dl_determine_tlsoffset+0xab> 0.00 : 11576: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1157d: 00 00 00 0.00 : 11580: 49 8d 40 ff lea -0x1(%r8),%rax 0.00 : 11584: 31 d2 xor %edx,%edx 0.00 : 11586: 48 29 c8 sub %rcx,%rax 0.00 : 11589: 4c 01 e0 add %r12,%rax 0.00 : 1158c: 49 f7 f7 div %r15 0.00 : 1158f: 49 0f af c7 imul %r15,%rax 0.00 : 11593: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 11597: 49 39 c5 cmp %rax,%r13 0.00 : 1159a: 72 64 jb 11600 <_dl_determine_tlsoffset+0xe0> 0.00 : 1159c: 48 89 87 48 04 00 00 mov %rax,0x448(%rdi) 0.00 : 115a3: 48 8b 7d 28 mov 0x28(%rbp),%rdi 0.00 : 115a7: 48 83 c3 01 add $0x1,%rbx 0.00 : 115ab: 49 89 c4 mov %rax,%r12 0.00 : 115ae: 48 85 ff test %rdi,%rdi 0.00 : 115b1: 0f 84 90 00 00 00 je 11647 <_dl_determine_tlsoffset+0x127> 0.00 : 115b7: 48 8b 05 aa e9 20 00 mov 0x20e9aa(%rip),%rax # 21ff68 <_rtld_global+0xf08> 0.00 : 115be: 48 83 c5 10 add $0x10,%rbp 0.00 : 115c2: 48 39 18 cmp %rbx,(%rax) 0.00 : 115c5: 0f 86 bd 00 00 00 jbe 11688 <_dl_determine_tlsoffset+0x168> 33.33 : 115cb: 4c 8b bf 38 04 00 00 mov 0x438(%rdi),%r15 0.00 : 115d2: 48 8b 87 40 04 00 00 mov 0x440(%rdi),%rax 0.00 : 115d9: 4d 89 eb mov %r13,%r11 0.00 : 115dc: 48 8b b7 30 04 00 00 mov 0x430(%rdi),%rsi 0.00 : 115e3: 49 8d 4f ff lea -0x1(%r15),%rcx 0.00 : 115e7: 48 f7 d8 neg %rax 0.00 : 115ea: 4d 8d 04 37 lea (%r15,%rsi,1),%r8 0.00 : 115ee: 48 21 c1 and %rax,%rcx 0.00 : 115f1: 4d 39 fa cmp %r15,%r10 0.00 : 115f4: 4d 0f 42 d7 cmovb %r15,%r10 0.00 : 115f8: 4d 29 e3 sub %r12,%r11 0.00 : 115fb: 49 39 f3 cmp %rsi,%r11 0.00 : 115fe: 73 80 jae 11580 <_dl_determine_tlsoffset+0x60> 0.00 : 11600: 49 8d 40 ff lea -0x1(%r8),%rax 0.00 : 11604: 31 d2 xor %edx,%edx 0.00 : 11606: 48 29 c8 sub %rcx,%rax 0.00 : 11609: 4c 01 c8 add %r9,%rax 0.00 : 1160c: 49 f7 f7 div %r15 0.00 : 1160f: 49 0f af c7 imul %r15,%rax 0.00 : 11613: 48 8d 14 01 lea (%rcx,%rax,1),%rdx 0.00 : 11617: 49 8d 04 31 lea (%r9,%rsi,1),%rax 0.00 : 1161b: 4c 01 d8 add %r11,%rax 0.00 : 1161e: 48 39 c2 cmp %rax,%rdx 0.00 : 11621: 76 09 jbe 1162c <_dl_determine_tlsoffset+0x10c> 0.00 : 11623: 49 89 d5 mov %rdx,%r13 0.00 : 11626: 4d 89 cc mov %r9,%r12 0.00 : 11629: 49 29 f5 sub %rsi,%r13 0.00 : 1162c: 48 89 97 48 04 00 00 mov %rdx,0x448(%rdi) 0.00 : 11633: 48 8b 7d 28 mov 0x28(%rbp),%rdi 0.00 : 11637: 48 83 c3 01 add $0x1,%rbx 0.00 : 1163b: 49 89 d1 mov %rdx,%r9 0.00 : 1163e: 48 85 ff test %rdi,%rdi 0.00 : 11641: 0f 85 70 ff ff ff jne 115b7 <_dl_determine_tlsoffset+0x97> 0.00 : 11647: 4b 8d 84 11 7f 06 00 lea 0x67f(%r9,%r10,1),%rax 0.00 : 1164e: 00 0.00 : 1164f: 31 d2 xor %edx,%edx 0.00 : 11651: 4c 89 0d 28 e9 20 00 mov %r9,0x20e928(%rip) # 21ff80 <_rtld_global+0xf20> 0.00 : 11658: 4c 89 15 29 e9 20 00 mov %r10,0x20e929(%rip) # 21ff88 <_rtld_global+0xf28> 33.33 : 1165f: 49 f7 f2 div %r10 0.00 : 11662: 49 0f af c2 imul %r10,%rax 0.00 : 11666: 48 05 00 09 00 00 add $0x900,%rax 0.00 : 1166c: 48 89 05 05 e9 20 00 mov %rax,0x20e905(%rip) # 21ff78 <_rtld_global+0xf18> 0.00 : 11673: 48 83 c4 08 add $0x8,%rsp 0.00 : 11677: 5b pop %rbx 0.00 : 11678: 5d pop %rbp 0.00 : 11679: 41 5c pop %r12 0.00 : 1167b: 41 5d pop %r13 0.00 : 1167d: 41 5e pop %r14 0.00 : 1167f: 41 5f pop %r15 0.00 : 11681: c3 retq 0.00 : 11682: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11688: 48 8d 0d 41 b2 00 00 lea 0xb241(%rip),%rcx # 1c8d0 <__PRETTY_FUNCTION__.11777> 0.00 : 1168f: 48 8d 35 ed 88 00 00 lea 0x88ed(%rip),%rsi # 19f83 <__PRETTY_FUNCTION__.10385+0xab> 0.00 : 11696: 48 8d 3d 13 ab 00 00 lea 0xab13(%rip),%rdi # 1c1b0 <__PRETTY_FUNCTION__.3644+0x1e3f> 0.00 : 1169d: ba a0 00 00 00 mov $0xa0,%edx 0.00 : 116a2: e8 c9 36 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 116a7: 41 ba 20 00 00 00 mov $0x20,%r10d 0.00 : 116ad: 45 31 c9 xor %r9d,%r9d 0.00 : 116b0: b8 9f 06 00 00 mov $0x69f,%eax 0.00 : 116b5: eb 98 jmp 1164f <_dl_determine_tlsoffset+0x12f> 0.00 : 116b7: 48 8d 0d 12 b2 00 00 lea 0xb212(%rip),%rcx # 1c8d0 <__PRETTY_FUNCTION__.11777> 0.00 : 116be: 48 8d 35 be 88 00 00 lea 0x88be(%rip),%rsi # 19f83 <__PRETTY_FUNCTION__.10385+0xab> 0.00 : 116c5: 48 8d 3d a4 aa 00 00 lea 0xaaa4(%rip),%rdi # 1c170 <__PRETTY_FUNCTION__.3644+0x1dff> 0.00 : 116cc: ba 7a 00 00 00 mov $0x7a,%edx 0.00 : 116d1: e8 9a 36 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 116d6: 48 8d 0d f3 b1 00 00 lea 0xb1f3(%rip),%rcx # 1c8d0 <__PRETTY_FUNCTION__.11777> 0.00 : 116dd: 48 8d 35 9f 88 00 00 lea 0x889f(%rip),%rsi # 19f83 <__PRETTY_FUNCTION__.10385+0xab> 0.00 : 116e4: 48 8d 3d 4d aa 00 00 lea 0xaa4d(%rip),%rdi # 1c138 <__PRETTY_FUNCTION__.3644+0x1dc7> 0.00 : 116eb: ba 77 00 00 00 mov $0x77,%edx 0.00 : 116f0: e8 7b 36 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000015f50 <__libc_open>: 100.00 : 15f50: b8 02 00 00 00 mov $0x2,%eax 0.00 : 15f55: 0f 05 syscall 0.00 : 15f57: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : 15f5d: 73 01 jae 15f60 <__libc_open+0x10> 0.00 : 15f5f: c3 retq 0.00 : 15f60: 48 8d 0d 1d a2 20 00 lea 0x20a21d(%rip),%rcx # 220184 0.00 : 15f67: 31 d2 xor %edx,%edx 0.00 : 15f69: 48 29 c2 sub %rax,%rdx 0.00 : 15f6c: 89 11 mov %edx,(%rcx) 0.00 : 15f6e: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : 15f72: eb eb jmp 15f5f <__libc_open+0xf> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000161d0 <__mmap>: 0.00 : 161d0: 49 89 ca mov %rcx,%r10 0.00 : 161d3: b8 09 00 00 00 mov $0x9,%eax 0.00 : 161d8: 0f 05 syscall 100.00 : 161da: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : 161e0: 73 01 jae 161e3 <__mmap+0x13> 0.00 : 161e2: c3 retq 0.00 : 161e3: 48 8d 0d 9a 9f 20 00 lea 0x209f9a(%rip),%rcx # 220184 0.00 : 161ea: 31 d2 xor %edx,%edx 0.00 : 161ec: 48 29 c2 sub %rax,%rdx 0.00 : 161ef: 89 11 mov %edx,(%rcx) 0.00 : 161f1: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : 161f5: eb eb jmp 161e2 <__mmap+0x12> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000169e0 : 0.00 : 169e0: 41 55 push %r13 50.00 : 169e2: 41 54 push %r12 0.00 : 169e4: 49 89 fc mov %rdi,%r12 0.00 : 169e7: 48 89 d7 mov %rdx,%rdi 0.00 : 169ea: 4c 89 e0 mov %r12,%rax 0.00 : 169ed: 55 push %rbp 0.00 : 169ee: 48 29 f0 sub %rsi,%rax 0.00 : 169f1: 4c 89 e5 mov %r12,%rbp 0.00 : 169f4: 53 push %rbx 0.00 : 169f5: 48 89 f3 mov %rsi,%rbx 0.00 : 169f8: 48 83 ec 08 sub $0x8,%rsp 0.00 : 169fc: 48 39 d0 cmp %rdx,%rax 0.00 : 169ff: 0f 82 9b 00 00 00 jb 16aa0 0.00 : 16a05: 48 83 ff 0f cmp $0xf,%rdi 0.00 : 16a09: 76 64 jbe 16a6f 0.00 : 16a0b: 4c 89 e1 mov %r12,%rcx 0.00 : 16a0e: 49 89 fd mov %rdi,%r13 0.00 : 16a11: 48 f7 d9 neg %rcx 0.00 : 16a14: 83 e1 07 and $0x7,%ecx 0.00 : 16a17: 49 29 cd sub %rcx,%r13 0.00 : 16a1a: 48 85 c9 test %rcx,%rcx 0.00 : 16a1d: 74 22 je 16a41 0.00 : 16a1f: 31 d2 xor %edx,%edx 0.00 : 16a21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 16a28: 0f b6 04 16 movzbl (%rsi,%rdx,1),%eax 0.00 : 16a2c: 41 88 04 14 mov %al,(%r12,%rdx,1) 0.00 : 16a30: 48 83 c2 01 add $0x1,%rdx 0.00 : 16a34: 48 39 d1 cmp %rdx,%rcx 0.00 : 16a37: 75 ef jne 16a28 0.00 : 16a39: 49 8d 2c 0c lea (%r12,%rcx,1),%rbp 0.00 : 16a3d: 48 8d 1c 0e lea (%rsi,%rcx,1),%rbx 0.00 : 16a41: f6 c3 07 test $0x7,%bl 0.00 : 16a44: 0f 84 0e 01 00 00 je 16b58 0.00 : 16a4a: 4c 89 ea mov %r13,%rdx 0.00 : 16a4d: 48 89 de mov %rbx,%rsi 0.00 : 16a50: 48 89 ef mov %rbp,%rdi 0.00 : 16a53: 48 c1 ea 03 shr $0x3,%rdx 0.00 : 16a57: e8 34 0b 00 00 callq 17590 <_wordcopy_fwd_dest_aligned> 0.00 : 16a5c: 4c 89 e8 mov %r13,%rax 0.00 : 16a5f: 4c 89 ea mov %r13,%rdx 0.00 : 16a62: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 16a66: 83 e2 07 and $0x7,%edx 0.00 : 16a69: 48 01 c3 add %rax,%rbx 0.00 : 16a6c: 48 01 c5 add %rax,%rbp 0.00 : 16a6f: 48 85 d2 test %rdx,%rdx 0.00 : 16a72: 74 18 je 16a8c 0.00 : 16a74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 16a78: 0f b6 03 movzbl (%rbx),%eax 0.00 : 16a7b: 48 83 c3 01 add $0x1,%rbx 0.00 : 16a7f: 88 45 00 mov %al,0x0(%rbp) 0.00 : 16a82: 48 83 c5 01 add $0x1,%rbp 0.00 : 16a86: 48 83 ea 01 sub $0x1,%rdx 0.00 : 16a8a: 75 ec jne 16a78 0.00 : 16a8c: 48 83 c4 08 add $0x8,%rsp 0.00 : 16a90: 4c 89 e0 mov %r12,%rax 0.00 : 16a93: 5b pop %rbx 0.00 : 16a94: 5d pop %rbp 0.00 : 16a95: 41 5c pop %r12 0.00 : 16a97: 41 5d pop %r13 0.00 : 16a99: c3 retq 0.00 : 16a9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 16aa0: 48 83 fa 0f cmp $0xf,%rdx 0.00 : 16aa4: 48 8d 2c 32 lea (%rdx,%rsi,1),%rbp 0.00 : 16aa8: 4a 8d 1c 22 lea (%rdx,%r12,1),%rbx 0.00 : 16aac: 48 89 d1 mov %rdx,%rcx 0.00 : 16aaf: 76 6f jbe 16b20 0.00 : 16ab1: 49 89 d8 mov %rbx,%r8 0.00 : 16ab4: 49 89 d5 mov %rdx,%r13 0.00 : 16ab7: 41 83 e0 07 and $0x7,%r8d 0.00 : 16abb: 4d 29 c5 sub %r8,%r13 0.00 : 16abe: 4d 85 c0 test %r8,%r8 0.00 : 16ac1: 74 26 je 16ae9 0.00 : 16ac3: 4c 89 c6 mov %r8,%rsi 0.00 : 16ac6: 48 89 d9 mov %rbx,%rcx 0.00 : 16ac9: 48 89 ea mov %rbp,%rdx 0.00 : 16acc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 16ad0: 48 83 ea 01 sub $0x1,%rdx 0.00 : 16ad4: 48 83 e9 01 sub $0x1,%rcx 0.00 : 16ad8: 48 83 ee 01 sub $0x1,%rsi 0.00 : 16adc: 0f b6 02 movzbl (%rdx),%eax 0.00 : 16adf: 88 01 mov %al,(%rcx) 0.00 : 16ae1: 75 ed jne 16ad0 0.00 : 16ae3: 4c 29 c3 sub %r8,%rbx 0.00 : 16ae6: 4c 29 c5 sub %r8,%rbp 0.00 : 16ae9: 40 f6 c5 07 test $0x7,%bpl 0.00 : 16aed: 74 51 je 16b40 0.00 : 16aef: 4c 89 ea mov %r13,%rdx 0.00 : 16af2: 48 89 ee mov %rbp,%rsi 0.00 : 16af5: 48 89 df mov %rbx,%rdi 0.00 : 16af8: 48 c1 ea 03 shr $0x3,%rdx 0.00 : 16afc: e8 8f 0d 00 00 callq 17890 <_wordcopy_bwd_dest_aligned> 0.00 : 16b01: 4c 89 e8 mov %r13,%rax 0.00 : 16b04: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 50.00 : 16b08: 48 29 c5 sub %rax,%rbp 0.00 : 16b0b: 48 29 c3 sub %rax,%rbx 0.00 : 16b0e: 4c 89 e8 mov %r13,%rax 0.00 : 16b11: 83 e0 07 and $0x7,%eax 0.00 : 16b14: 0f 84 72 ff ff ff je 16a8c 0.00 : 16b1a: 48 89 c1 mov %rax,%rcx 0.00 : 16b1d: 0f 1f 00 nopl (%rax) 0.00 : 16b20: 48 83 ed 01 sub $0x1,%rbp 0.00 : 16b24: 48 83 eb 01 sub $0x1,%rbx 0.00 : 16b28: 48 83 e9 01 sub $0x1,%rcx 0.00 : 16b2c: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 16b30: 88 03 mov %al,(%rbx) 0.00 : 16b32: 75 ec jne 16b20 0.00 : 16b34: e9 53 ff ff ff jmpq 16a8c 0.00 : 16b39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 16b40: 4c 89 ea mov %r13,%rdx 0.00 : 16b43: 48 89 ee mov %rbp,%rsi 0.00 : 16b46: 48 89 df mov %rbx,%rdi 0.00 : 16b49: 48 c1 ea 03 shr $0x3,%rdx 0.00 : 16b4d: e8 ae 0b 00 00 callq 17700 <_wordcopy_bwd_aligned> 0.00 : 16b52: eb ad jmp 16b01 0.00 : 16b54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 16b58: 4c 89 ea mov %r13,%rdx 0.00 : 16b5b: 48 89 de mov %rbx,%rsi 0.00 : 16b5e: 48 89 ef mov %rbp,%rdi 0.00 : 16b61: 48 c1 ea 03 shr $0x3,%rdx 0.00 : 16b65: e8 e6 08 00 00 callq 17450 <_wordcopy_fwd_aligned> 0.00 : 16b6a: e9 ed fe ff ff jmpq 16a5c Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000017700 <_wordcopy_bwd_aligned>: 0.00 : 17700: 48 89 d0 mov %rdx,%rax 0.00 : 17703: 49 89 d0 mov %rdx,%r8 0.00 : 17706: 48 8d 15 f3 1a 00 00 lea 0x1af3(%rip),%rdx # 19200 <_itoa_lower_digits_internal+0x180> 0.00 : 1770d: 83 e0 07 and $0x7,%eax 0.00 : 17710: 48 63 04 82 movslq (%rdx,%rax,4),%rax 100.00 : 17714: 48 01 d0 add %rdx,%rax 0.00 : 17717: ff e0 jmpq *%rax 0.00 : 17719: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 17720: 48 83 ee 38 sub $0x38,%rsi 0.00 : 17724: 48 83 ef 30 sub $0x30,%rdi 0.00 : 17728: 49 83 c0 01 add $0x1,%r8 0.00 : 1772c: 4c 8b 4e 30 mov 0x30(%rsi),%r9 0.00 : 17730: 48 89 f2 mov %rsi,%rdx 0.00 : 17733: 48 89 f8 mov %rdi,%rax 0.00 : 17736: 48 8b 4a 28 mov 0x28(%rdx),%rcx 0.00 : 1773a: 4c 89 48 28 mov %r9,0x28(%rax) 0.00 : 1773e: 4c 8b 4a 20 mov 0x20(%rdx),%r9 0.00 : 17742: 48 89 48 20 mov %rcx,0x20(%rax) 0.00 : 17746: 48 8b 4a 18 mov 0x18(%rdx),%rcx 0.00 : 1774a: 4c 89 48 18 mov %r9,0x18(%rax) 0.00 : 1774e: 4c 8b 4a 10 mov 0x10(%rdx),%r9 0.00 : 17752: 49 89 d2 mov %rdx,%r10 0.00 : 17755: 48 89 48 10 mov %rcx,0x10(%rax) 0.00 : 17759: 48 89 c1 mov %rax,%rcx 0.00 : 1775c: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 17760: 4c 89 48 08 mov %r9,0x8(%rax) 0.00 : 17764: 49 83 e8 08 sub $0x8,%r8 0.00 : 17768: 4c 8b 0e mov (%rsi),%r9 0.00 : 1776b: 48 89 17 mov %rdx,(%rdi) 0.00 : 1776e: 48 8d 79 c0 lea -0x40(%rcx),%rdi 0.00 : 17772: 0f 84 10 01 00 00 je 17888 <_wordcopy_bwd_aligned+0x188> 0.00 : 17778: 49 8d 72 c0 lea -0x40(%r10),%rsi 0.00 : 1777c: 48 8b 4e 38 mov 0x38(%rsi),%rcx 0.00 : 17780: 48 89 f2 mov %rsi,%rdx 0.00 : 17783: 48 89 f8 mov %rdi,%rax 0.00 : 17786: 4c 89 4f 38 mov %r9,0x38(%rdi) 0.00 : 1778a: 4c 8b 4a 30 mov 0x30(%rdx),%r9 0.00 : 1778e: 48 89 48 30 mov %rcx,0x30(%rax) 0.00 : 17792: 48 8b 4a 28 mov 0x28(%rdx),%rcx 0.00 : 17796: 4c 89 48 28 mov %r9,0x28(%rax) 0.00 : 1779a: eb a2 jmp 1773e <_wordcopy_bwd_aligned+0x3e> 0.00 : 1779c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 177a0: 4d 85 c0 test %r8,%r8 0.00 : 177a3: 0f 84 e3 00 00 00 je 1788c <_wordcopy_bwd_aligned+0x18c> 0.00 : 177a9: 48 83 ee 40 sub $0x40,%rsi 0.00 : 177ad: 48 83 ef 38 sub $0x38,%rdi 0.00 : 177b1: 48 8b 4e 38 mov 0x38(%rsi),%rcx 0.00 : 177b5: 48 89 f2 mov %rsi,%rdx 0.00 : 177b8: 48 89 f8 mov %rdi,%rax 0.00 : 177bb: eb cd jmp 1778a <_wordcopy_bwd_aligned+0x8a> 0.00 : 177bd: 0f 1f 00 nopl (%rax) 0.00 : 177c0: 48 83 ef 40 sub $0x40,%rdi 0.00 : 177c4: 49 83 e8 01 sub $0x1,%r8 0.00 : 177c8: 48 8d 46 b8 lea -0x48(%rsi),%rax 0.00 : 177cc: 4c 8b 4e f8 mov -0x8(%rsi),%r9 0.00 : 177d0: 0f 84 b2 00 00 00 je 17888 <_wordcopy_bwd_aligned+0x188> 0.00 : 177d6: 48 89 c6 mov %rax,%rsi 0.00 : 177d9: eb a1 jmp 1777c <_wordcopy_bwd_aligned+0x7c> 0.00 : 177db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 177e0: 48 83 ee 10 sub $0x10,%rsi 0.00 : 177e4: 48 83 ef 08 sub $0x8,%rdi 0.00 : 177e8: 49 83 c0 06 add $0x6,%r8 0.00 : 177ec: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 177f0: 49 89 f2 mov %rsi,%r10 0.00 : 177f3: 48 89 f9 mov %rdi,%rcx 0.00 : 177f6: e9 69 ff ff ff jmpq 17764 <_wordcopy_bwd_aligned+0x64> 0.00 : 177fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 17800: 48 83 ee 18 sub $0x18,%rsi 0.00 : 17804: 48 83 ef 10 sub $0x10,%rdi 0.00 : 17808: 49 83 c0 05 add $0x5,%r8 0.00 : 1780c: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 17810: 48 89 f2 mov %rsi,%rdx 0.00 : 17813: 48 89 f8 mov %rdi,%rax 0.00 : 17816: 49 89 f2 mov %rsi,%r10 0.00 : 17819: 48 89 f9 mov %rdi,%rcx 0.00 : 1781c: e9 3b ff ff ff jmpq 1775c <_wordcopy_bwd_aligned+0x5c> 0.00 : 17821: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 17828: 48 83 ee 20 sub $0x20,%rsi 0.00 : 1782c: 48 83 ef 18 sub $0x18,%rdi 0.00 : 17830: 49 83 c0 04 add $0x4,%r8 0.00 : 17834: 48 8b 4e 18 mov 0x18(%rsi),%rcx 0.00 : 17838: 48 89 f2 mov %rsi,%rdx 0.00 : 1783b: 48 89 f8 mov %rdi,%rax 0.00 : 1783e: e9 0b ff ff ff jmpq 1774e <_wordcopy_bwd_aligned+0x4e> 0.00 : 17843: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 17848: 48 83 ee 28 sub $0x28,%rsi 0.00 : 1784c: 48 83 ef 20 sub $0x20,%rdi 0.00 : 17850: 49 83 c0 03 add $0x3,%r8 0.00 : 17854: 4c 8b 4e 20 mov 0x20(%rsi),%r9 0.00 : 17858: 48 89 f2 mov %rsi,%rdx 0.00 : 1785b: 48 89 f8 mov %rdi,%rax 0.00 : 1785e: e9 e3 fe ff ff jmpq 17746 <_wordcopy_bwd_aligned+0x46> 0.00 : 17863: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 17868: 48 83 ee 30 sub $0x30,%rsi 0.00 : 1786c: 48 83 ef 28 sub $0x28,%rdi 0.00 : 17870: 49 83 c0 02 add $0x2,%r8 0.00 : 17874: 48 8b 4e 28 mov 0x28(%rsi),%rcx 0.00 : 17878: 48 89 f2 mov %rsi,%rdx 0.00 : 1787b: 48 89 f8 mov %rdi,%rax 0.00 : 1787e: e9 bb fe ff ff jmpq 1773e <_wordcopy_bwd_aligned+0x3e> 0.00 : 17883: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 17888: 4c 89 4f 38 mov %r9,0x38(%rdi) 0.00 : 1788c: f3 c3 repz retq Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 100.00 /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:275 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004038a0 : : long offset; : long result; : long yr; : long yend; : : offset = date - STARTDATE; 0.00 : 4038a0: 48 81 ef 61 67 01 00 sub $0x16761,%rdi 0.00 : 4038a7: be 61 67 01 00 mov $0x16761,%esi : while (1) : { : #ifdef WIN32 : #pragma warning(default:4127) : #endif : yr = result / 1000; 0.00 : 4038ac: 49 b8 cf f7 53 e3 a5 movabs $0x20c49ba5e353f7cf,%r8 0.00 : 4038b3: 9b c4 20 : yend = yr * 1000 + 365 + LEAP(yr); 0.00 : 4038b6: 49 b9 0b d7 a3 70 3d movabs $0xa3d70a3d70a3d70b,%r9 0.00 : 4038bd: 0a d7 a3 0.00 : 4038c0: eb 16 jmp 4038d8 0.00 : 4038c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (result + offset > yend) /* overflow into next year */ : { : offset -= yend - result + 1; 0.00 : 4038c8: 48 29 f0 sub %rsi,%rax : result += 1000; 0.00 : 4038cb: 48 81 c6 e8 03 00 00 add $0x3e8,%rsi : #endif : yr = result / 1000; : yend = yr * 1000 + 365 + LEAP(yr); : if (result + offset > yend) /* overflow into next year */ : { : offset -= yend - result + 1; 0.00 : 4038d2: 48 f7 d0 not %rax 0.00 : 4038d5: 48 01 c7 add %rax,%rdi : while (1) : { : #ifdef WIN32 : #pragma warning(default:4127) : #endif : yr = result / 1000; 0.00 : 4038d8: 48 89 f0 mov %rsi,%rax 0.00 : 4038db: 49 f7 e8 imul %r8 0.00 : 4038de: 48 89 f0 mov %rsi,%rax 0.00 : 4038e1: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 4038e5: 48 89 d1 mov %rdx,%rcx : yend = yr * 1000 + 365 + LEAP(yr); 0.00 : 4038e8: 31 d2 xor %edx,%edx : while (1) : { : #ifdef WIN32 : #pragma warning(default:4127) : #endif : yr = result / 1000; 0.00 : 4038ea: 48 c1 f9 07 sar $0x7,%rcx 0.00 : 4038ee: 48 29 c1 sub %rax,%rcx : yend = yr * 1000 + 365 + LEAP(yr); /home/Computational/mark/src/dbt3/src/dbgen/bm_utils.c:275 100.00 : 4038f1: f6 c1 03 test $0x3,%cl 0.00 : 4038f4: 75 2c jne 403922 0.00 : 4038f6: 48 89 c8 mov %rcx,%rax 0.00 : 4038f9: 49 f7 e9 imul %r9 0.00 : 4038fc: 48 89 c8 mov %rcx,%rax 0.00 : 4038ff: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 403903: 48 01 ca add %rcx,%rdx 0.00 : 403906: 48 c1 fa 06 sar $0x6,%rdx 0.00 : 40390a: 48 29 c2 sub %rax,%rdx 0.00 : 40390d: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 403911: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 403915: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 403919: 48 39 d1 cmp %rdx,%rcx 0.00 : 40391c: 0f 95 c0 setne %al 0.00 : 40391f: 0f b6 d0 movzbl %al,%edx 0.00 : 403922: 48 69 c1 e8 03 00 00 imul $0x3e8,%rcx,%rax 0.00 : 403929: 48 8d 84 02 6d 01 00 lea 0x16d(%rdx,%rax,1),%rax 0.00 : 403930: 00 : if (result + offset > yend) /* overflow into next year */ 0.00 : 403931: 48 8d 14 3e lea (%rsi,%rdi,1),%rdx 0.00 : 403935: 48 39 d0 cmp %rdx,%rax 0.00 : 403938: 7c 8e jl 4038c8 : } : else : break; : } : return (result + offset); : } 0.00 : 40393a: 48 89 d0 mov %rdx,%rax Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 100.00 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:126 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004045d0 : : return; : } : : void : row_stop(int t) \ : { 0.00 : 4045d0: 41 55 push %r13 0.00 : 4045d2: 41 54 push %r12 0.00 : 4045d4: 55 push %rbp 0.00 : 4045d5: 53 push %rbx 0.00 : 4045d6: 48 83 ec 08 sub $0x8,%rsp : int i; : : /* need to allow for handling the master and detail together */ : if (t == ORDER_LINE) 0.00 : 4045da: 83 ff 06 cmp $0x6,%edi 0.00 : 4045dd: 0f 84 d1 00 00 00 je 4046b4 : t = ORDER; : if (t == PART_PSUPP) 0.00 : 4045e3: 83 ff 07 cmp $0x7,%edi 0.00 : 4045e6: 0f 84 bd 00 00 00 je 4046a9 0.00 : 4045ec: 4c 63 ef movslq %edi,%r13 : t = PART; : : for (i=0; i <= MAX_STREAM; i++) : if ((Seed[i].table == t) || (Seed[i].table == tdefs[t].child)) 0.00 : 4045ef: 48 63 c7 movslq %edi,%rax : int i; : : /* need to allow for handling the master and detail together */ : if (t == ORDER_LINE) : t = ORDER; : if (t == PART_PSUPP) 0.00 : 4045f2: bb f0 a4 60 00 mov $0x60a4f0,%ebx 0.00 : 4045f7: 31 ed xor %ebp,%ebp : t = PART; : : for (i=0; i <= MAX_STREAM; i++) : if ((Seed[i].table == t) || (Seed[i].table == tdefs[t].child)) 0.00 : 4045f9: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 404600: 00 0.00 : 404601: 49 89 c4 mov %rax,%r12 0.00 : 404604: 49 c1 e4 06 shl $0x6,%r12 0.00 : 404608: 49 29 d4 sub %rdx,%r12 0.00 : 40460b: eb 1c jmp 404629 0.00 : 40460d: 0f 1f 00 nopl (%rax) 0.00 : 404610: 49 63 84 24 a8 a2 60 movslq 0x60a2a8(%r12),%rax 0.00 : 404617: 00 0.00 : 404618: 48 39 c2 cmp %rax,%rdx 0.00 : 40461b: 74 15 je 404632 : if (t == ORDER_LINE) : t = ORDER; : if (t == PART_PSUPP) : t = PART; : : for (i=0; i <= MAX_STREAM; i++) 0.00 : 40461d: 83 c5 01 add $0x1,%ebp 0.00 : 404620: 48 83 c3 20 add $0x20,%rbx 0.00 : 404624: 83 fd 30 cmp $0x30,%ebp 0.00 : 404627: 74 41 je 40466a : if ((Seed[i].table == t) || (Seed[i].table == tdefs[t].child)) 0.00 : 404629: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 40462d: 49 39 d5 cmp %rdx,%r13 0.00 : 404630: 75 de jne 404610 : { : if (set_seeds && (Seed[i].usage > Seed[i].boundary)) 0.00 : 404632: 8b 15 60 70 e0 12 mov 0x12e07060(%rip),%edx # 1320b698 0.00 : 404638: 85 d2 test %edx,%edx 0.00 : 40463a: 74 3c je 404678 0.00 : 40463c: 48 8b 0b mov (%rbx),%rcx 0.00 : 40463f: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 404643: 48 39 f9 cmp %rdi,%rcx 0.00 : 404646: 7f 40 jg 404688 : i, Seed[i].usage); : Seed[i].boundary = Seed[i].usage; : } : else : { : NthElement((Seed[i].boundary - Seed[i].usage), &Seed[i].value); 0.00 : 404648: 48 63 f5 movslq %ebp,%rsi 0.00 : 40464b: 48 29 cf sub %rcx,%rdi : if (t == ORDER_LINE) : t = ORDER; : if (t == PART_PSUPP) : t = PART; : : for (i=0; i <= MAX_STREAM; i++) /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:126 100.00 : 40464e: 83 c5 01 add $0x1,%ebp : i, Seed[i].usage); : Seed[i].boundary = Seed[i].usage; : } : else : { : NthElement((Seed[i].boundary - Seed[i].usage), &Seed[i].value); 0.00 : 404651: 48 c1 e6 05 shl $0x5,%rsi : if (t == ORDER_LINE) : t = ORDER; : if (t == PART_PSUPP) : t = PART; : : for (i=0; i <= MAX_STREAM; i++) 0.00 : 404655: 48 83 c3 20 add $0x20,%rbx : i, Seed[i].usage); : Seed[i].boundary = Seed[i].usage; : } : else : { : NthElement((Seed[i].boundary - Seed[i].usage), &Seed[i].value); 0.00 : 404659: 48 81 c6 e8 a4 60 00 add $0x60a4e8,%rsi 0.00 : 404660: e8 eb 1c 00 00 callq 406350 : if (t == ORDER_LINE) : t = ORDER; : if (t == PART_PSUPP) : t = PART; : : for (i=0; i <= MAX_STREAM; i++) 0.00 : 404665: 83 fd 30 cmp $0x30,%ebp 0.00 : 404668: 75 bf jne 404629 : Seed[i].nCalls += Seed[i].boundary - Seed[i].usage; : #endif : } : } : return; : } 0.00 : 40466a: 48 83 c4 08 add $0x8,%rsp 0.00 : 40466e: 5b pop %rbx 0.00 : 40466f: 5d pop %rbp 0.00 : 404670: 41 5c pop %r12 0.00 : 404672: 41 5d pop %r13 0.00 : 404674: c3 retq 0.00 : 404675: 0f 1f 00 nopl (%rax) : t = PART; : : for (i=0; i <= MAX_STREAM; i++) : if ((Seed[i].table == t) || (Seed[i].table == tdefs[t].child)) : { : if (set_seeds && (Seed[i].usage > Seed[i].boundary)) 0.00 : 404678: 48 8b 0b mov (%rbx),%rcx 0.00 : 40467b: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 40467f: eb c7 jmp 404648 0.00 : 404681: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : fprintf(stderr, "\nSEED CHANGE: seed[%d].usage = %lld\n", 0.00 : 404688: 48 8b 3d 99 64 20 00 mov 0x206499(%rip),%rdi # 60ab28 0.00 : 40468f: 89 ea mov %ebp,%edx 0.00 : 404691: be 90 80 40 00 mov $0x408090,%esi 0.00 : 404696: 31 c0 xor %eax,%eax 0.00 : 404698: e8 c3 c7 ff ff callq 400e60 : i, Seed[i].usage); : Seed[i].boundary = Seed[i].usage; 0.00 : 40469d: 48 8b 03 mov (%rbx),%rax 0.00 : 4046a0: 48 89 43 08 mov %rax,0x8(%rbx) : t = PART; : : for (i=0; i <= MAX_STREAM; i++) : if ((Seed[i].table == t) || (Seed[i].table == tdefs[t].child)) : { : if (set_seeds && (Seed[i].usage > Seed[i].boundary)) 0.00 : 4046a4: e9 74 ff ff ff jmpq 40461d : int i; : : /* need to allow for handling the master and detail together */ : if (t == ORDER_LINE) : t = ORDER; : if (t == PART_PSUPP) 0.00 : 4046a9: 40 30 ff xor %dil,%dil 0.00 : 4046ac: 45 31 ed xor %r13d,%r13d 0.00 : 4046af: e9 3b ff ff ff jmpq 4045ef : row_stop(int t) \ : { : int i; : : /* need to allow for handling the master and detail together */ : if (t == ORDER_LINE) 0.00 : 4046b4: 40 b7 04 mov $0x4,%dil 0.00 : 4046b7: e9 30 ff ff ff jmpq 4045ec Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 100.00 /home/Computational/mark/src/dbt3/src/dbgen/print.c:204 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000405470 : : /* : * print the numbered order : */ : int : pr_order(order_t *o, int mode) : { 0.00 : 405470: 55 push %rbp 0.00 : 405471: 48 89 fd mov %rdi,%rbp 0.00 : 405474: 53 push %rbx 0.00 : 405475: 89 f3 mov %esi,%ebx 0.00 : 405477: 48 83 ec 08 sub $0x8,%rsp : static FILE *fp_o = NULL; : static int last_mode = 0; : : if (fp_o == NULL || mode != last_mode) 0.00 : 40547b: 48 8b 3d fe 5f 20 00 mov 0x205ffe(%rip),%rdi # 60b480 0.00 : 405482: 48 85 ff test %rdi,%rdi 0.00 : 405485: 74 0d je 405494 0.00 : 405487: 3b 35 eb 5f 20 00 cmp 0x205feb(%rip),%esi # 60b478 0.00 : 40548d: 74 1e je 4054ad : { : if (fp_o) : fclose(fp_o); 0.00 : 40548f: e8 3c b9 ff ff callq 400dd0 : fp_o = print_prep(ORDER, mode); 0.00 : 405494: 89 de mov %ebx,%esi 0.00 : 405496: bf 04 00 00 00 mov $0x4,%edi 0.00 : 40549b: e8 10 f3 ff ff callq 4047b0 : last_mode = mode; 0.00 : 4054a0: 89 1d d2 5f 20 00 mov %ebx,0x205fd2(%rip) # 60b478 : : if (fp_o == NULL || mode != last_mode) : { : if (fp_o) : fclose(fp_o); : fp_o = print_prep(ORDER, mode); 0.00 : 4054a6: 48 89 05 d3 5f 20 00 mov %rax,0x205fd3(%rip) # 60b480 : last_mode = mode; : } : PR_STRT(fp_o); : PR_HUGE(fp_o, &o->okey); 0.00 : 4054ad: 48 8b 35 cc 5f 20 00 mov 0x205fcc(%rip),%rsi # 60b480 0.00 : 4054b4: 48 89 ea mov %rbp,%rdx 0.00 : 4054b7: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4054bd: 31 c9 xor %ecx,%ecx 0.00 : 4054bf: bf 03 00 00 00 mov $0x3,%edi 0.00 : 4054c4: e8 f7 f1 ff ff callq 4046c0 : PR_HUGE(fp_o, &o->custkey); 0.00 : 4054c9: 48 8b 35 b0 5f 20 00 mov 0x205fb0(%rip),%rsi # 60b480 0.00 : 4054d0: 48 8d 55 08 lea 0x8(%rbp),%rdx 0.00 : 4054d4: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4054da: 31 c9 xor %ecx,%ecx 0.00 : 4054dc: bf 03 00 00 00 mov $0x3,%edi 0.00 : 4054e1: e8 da f1 ff ff callq 4046c0 : PR_CHR(fp_o, &o->orderstatus); 0.00 : 4054e6: 48 8b 35 93 5f 20 00 mov 0x205f93(%rip),%rsi # 60b480 0.00 : 4054ed: 48 8d 55 10 lea 0x10(%rbp),%rdx 0.00 : 4054f1: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4054f7: 31 c9 xor %ecx,%ecx 0.00 : 4054f9: bf 06 00 00 00 mov $0x6,%edi 0.00 : 4054fe: e8 bd f1 ff ff callq 4046c0 : PR_MONEY(fp_o, &o->totalprice); 0.00 : 405503: 48 8b 35 76 5f 20 00 mov 0x205f76(%rip),%rsi # 60b480 0.00 : 40550a: 48 8d 55 18 lea 0x18(%rbp),%rdx 0.00 : 40550e: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 405514: 31 c9 xor %ecx,%ecx 0.00 : 405516: bf 05 00 00 00 mov $0x5,%edi 0.00 : 40551b: e8 a0 f1 ff ff callq 4046c0 : PR_STR(fp_o, o->odate, DATE_LEN); 0.00 : 405520: 48 8b 35 59 5f 20 00 mov 0x205f59(%rip),%rsi # 60b480 0.00 : 405527: 48 8d 55 20 lea 0x20(%rbp),%rdx 0.00 : 40552b: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 405531: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 405536: 31 ff xor %edi,%edi 0.00 : 405538: e8 83 f1 ff ff callq 4046c0 : PR_STR(fp_o, o->opriority, O_OPRIO_LEN); 0.00 : 40553d: 48 8b 35 3c 5f 20 00 mov 0x205f3c(%rip),%rsi # 60b480 0.00 : 405544: 48 8d 55 2d lea 0x2d(%rbp),%rdx 0.00 : 405548: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40554e: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 405553: 31 ff xor %edi,%edi 0.00 : 405555: e8 66 f1 ff ff callq 4046c0 : PR_STR(fp_o, o->clerk, O_CLRK_LEN); 0.00 : 40555a: 48 8b 35 1f 5f 20 00 mov 0x205f1f(%rip),%rsi # 60b480 0.00 : 405561: 48 8d 55 42 lea 0x42(%rbp),%rdx 0.00 : 405565: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 40556b: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 405570: 31 ff xor %edi,%edi 0.00 : 405572: e8 49 f1 ff ff callq 4046c0 : PR_INT(fp_o, o->spriority); 0.00 : 405577: 48 8b 55 58 mov 0x58(%rbp),%rdx 0.00 : 40557b: 48 8b 35 fe 5e 20 00 mov 0x205efe(%rip),%rsi # 60b480 0.00 : 405582: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 405588: 31 c9 xor %ecx,%ecx 0.00 : 40558a: bf 02 00 00 00 mov $0x2,%edi 0.00 : 40558f: e8 2c f1 ff ff callq 4046c0 : PR_VSTR_LAST(fp_o, o->comment, o->clen); 0.00 : 405594: 8b 8d b8 00 00 00 mov 0xb8(%rbp),%ecx 0.00 : 40559a: 48 8b 35 df 5e 20 00 mov 0x205edf(%rip),%rsi # 60b480 0.00 : 4055a1: 48 8d 55 68 lea 0x68(%rbp),%rdx 0.00 : 4055a5: 45 31 c0 xor %r8d,%r8d 0.00 : 4055a8: 31 ff xor %edi,%edi 0.00 : 4055aa: e8 11 f1 ff ff callq 4046c0 : PR_END(fp_o); 0.00 : 4055af: 48 8b 3d ca 5e 20 00 mov 0x205eca(%rip),%rdi # 60b480 0.00 : 4055b6: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4055bb: 48 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%rsi 0.00 : 4055c2: e8 e9 b8 ff ff callq 400eb0 /home/Computational/mark/src/dbt3/src/dbgen/print.c:204 100.00 : 4055c7: 48 8b 35 b2 5e 20 00 mov 0x205eb2(%rip),%rsi # 60b480 0.00 : 4055ce: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 4055d3: e8 48 b8 ff ff callq 400e20 : : return(0); : } 0.00 : 4055d8: 48 83 c4 08 add $0x8,%rsp 0.00 : 4055dc: 31 c0 xor %eax,%eax 0.00 : 4055de: 5b pop %rbx 0.00 : 4055df: 5d pop %rbp Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .init: : : 0000000000415d60 <_init>: 0.00 : 415d60: 48 83 ec 08 sub $0x8,%rsp 0.00 : 415d64: e8 03 10 00 00 callq 416d6c <_start+0x2c> 0.00 : 415d69: e8 92 10 00 00 callq 416e00 <_start+0xc0> 0.00 : 415d6e: e8 ed c1 05 00 callq 471f60 <__libc_csu_init+0x90> 0.00 : 415d73: 48 83 c4 08 add $0x8,%rsp 0.00 : 415d77: c3 retq : : Disassembly of section .plt: : : 0000000000415d80 : 0.00 : 415d80: ff 35 82 42 27 00 pushq 0x274282(%rip) # 68a008 ??:0 100.00 : 415d86: ff 25 84 42 27 00 jmpq *0x274284(%rip) # 68a010 0.00 : 415d8c: 0f 1f 40 00 nopl 0x0(%rax) : : 0000000000415d90 : 0.00 : 415d90: ff 25 82 42 27 00 jmpq *0x274282(%rip) # 68a018 0.00 : 415d96: 68 00 00 00 00 pushq $0x0 0.00 : 415d9b: e9 e0 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415da0 : 0.00 : 415da0: ff 25 7a 42 27 00 jmpq *0x27427a(%rip) # 68a020 0.00 : 415da6: 68 01 00 00 00 pushq $0x1 0.00 : 415dab: e9 d0 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415db0 : 0.00 : 415db0: ff 25 72 42 27 00 jmpq *0x274272(%rip) # 68a028 0.00 : 415db6: 68 02 00 00 00 pushq $0x2 0.00 : 415dbb: e9 c0 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415dc0 : 0.00 : 415dc0: ff 25 6a 42 27 00 jmpq *0x27426a(%rip) # 68a030 0.00 : 415dc6: 68 03 00 00 00 pushq $0x3 0.00 : 415dcb: e9 b0 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415dd0 : 0.00 : 415dd0: ff 25 62 42 27 00 jmpq *0x274262(%rip) # 68a038 0.00 : 415dd6: 68 04 00 00 00 pushq $0x4 0.00 : 415ddb: e9 a0 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415de0 : 0.00 : 415de0: ff 25 5a 42 27 00 jmpq *0x27425a(%rip) # 68a040 0.00 : 415de6: 68 05 00 00 00 pushq $0x5 0.00 : 415deb: e9 90 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415df0 : 0.00 : 415df0: ff 25 52 42 27 00 jmpq *0x274252(%rip) # 68a048 0.00 : 415df6: 68 06 00 00 00 pushq $0x6 0.00 : 415dfb: e9 80 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e00 : 0.00 : 415e00: ff 25 4a 42 27 00 jmpq *0x27424a(%rip) # 68a050 0.00 : 415e06: 68 07 00 00 00 pushq $0x7 0.00 : 415e0b: e9 70 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e10 : 0.00 : 415e10: ff 25 42 42 27 00 jmpq *0x274242(%rip) # 68a058 0.00 : 415e16: 68 08 00 00 00 pushq $0x8 0.00 : 415e1b: e9 60 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e20 : 0.00 : 415e20: ff 25 3a 42 27 00 jmpq *0x27423a(%rip) # 68a060 0.00 : 415e26: 68 09 00 00 00 pushq $0x9 0.00 : 415e2b: e9 50 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e30 : 0.00 : 415e30: ff 25 32 42 27 00 jmpq *0x274232(%rip) # 68a068 0.00 : 415e36: 68 0a 00 00 00 pushq $0xa 0.00 : 415e3b: e9 40 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e40 : 0.00 : 415e40: ff 25 2a 42 27 00 jmpq *0x27422a(%rip) # 68a070 0.00 : 415e46: 68 0b 00 00 00 pushq $0xb 0.00 : 415e4b: e9 30 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e50 : 0.00 : 415e50: ff 25 22 42 27 00 jmpq *0x274222(%rip) # 68a078 0.00 : 415e56: 68 0c 00 00 00 pushq $0xc 0.00 : 415e5b: e9 20 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e60 : 0.00 : 415e60: ff 25 1a 42 27 00 jmpq *0x27421a(%rip) # 68a080 0.00 : 415e66: 68 0d 00 00 00 pushq $0xd 0.00 : 415e6b: e9 10 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e70 : 0.00 : 415e70: ff 25 12 42 27 00 jmpq *0x274212(%rip) # 68a088 0.00 : 415e76: 68 0e 00 00 00 pushq $0xe 0.00 : 415e7b: e9 00 ff ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e80 : 0.00 : 415e80: ff 25 0a 42 27 00 jmpq *0x27420a(%rip) # 68a090 0.00 : 415e86: 68 0f 00 00 00 pushq $0xf 0.00 : 415e8b: e9 f0 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415e90 : 0.00 : 415e90: ff 25 02 42 27 00 jmpq *0x274202(%rip) # 68a098 0.00 : 415e96: 68 10 00 00 00 pushq $0x10 0.00 : 415e9b: e9 e0 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415ea0 : 0.00 : 415ea0: ff 25 fa 41 27 00 jmpq *0x2741fa(%rip) # 68a0a0 0.00 : 415ea6: 68 11 00 00 00 pushq $0x11 0.00 : 415eab: e9 d0 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415eb0 : 0.00 : 415eb0: ff 25 f2 41 27 00 jmpq *0x2741f2(%rip) # 68a0a8 0.00 : 415eb6: 68 12 00 00 00 pushq $0x12 0.00 : 415ebb: e9 c0 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415ec0 : 0.00 : 415ec0: ff 25 ea 41 27 00 jmpq *0x2741ea(%rip) # 68a0b0 0.00 : 415ec6: 68 13 00 00 00 pushq $0x13 0.00 : 415ecb: e9 b0 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415ed0 <__strncpy_chk@plt>: 0.00 : 415ed0: ff 25 e2 41 27 00 jmpq *0x2741e2(%rip) # 68a0b8 0.00 : 415ed6: 68 14 00 00 00 pushq $0x14 0.00 : 415edb: e9 a0 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415ee0 : 0.00 : 415ee0: ff 25 da 41 27 00 jmpq *0x2741da(%rip) # 68a0c0 0.00 : 415ee6: 68 15 00 00 00 pushq $0x15 0.00 : 415eeb: e9 90 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415ef0 <__longjmp_chk@plt>: 0.00 : 415ef0: ff 25 d2 41 27 00 jmpq *0x2741d2(%rip) # 68a0c8 0.00 : 415ef6: 68 16 00 00 00 pushq $0x16 0.00 : 415efb: e9 80 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f00 : 0.00 : 415f00: ff 25 ca 41 27 00 jmpq *0x2741ca(%rip) # 68a0d0 0.00 : 415f06: 68 17 00 00 00 pushq $0x17 0.00 : 415f0b: e9 70 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f10 : 0.00 : 415f10: ff 25 c2 41 27 00 jmpq *0x2741c2(%rip) # 68a0d8 0.00 : 415f16: 68 18 00 00 00 pushq $0x18 0.00 : 415f1b: e9 60 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f20 : 0.00 : 415f20: ff 25 ba 41 27 00 jmpq *0x2741ba(%rip) # 68a0e0 0.00 : 415f26: 68 19 00 00 00 pushq $0x19 0.00 : 415f2b: e9 50 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f30 : 0.00 : 415f30: ff 25 b2 41 27 00 jmpq *0x2741b2(%rip) # 68a0e8 0.00 : 415f36: 68 1a 00 00 00 pushq $0x1a 0.00 : 415f3b: e9 40 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f40 : 0.00 : 415f40: ff 25 aa 41 27 00 jmpq *0x2741aa(%rip) # 68a0f0 0.00 : 415f46: 68 1b 00 00 00 pushq $0x1b 0.00 : 415f4b: e9 30 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f50 : 0.00 : 415f50: ff 25 a2 41 27 00 jmpq *0x2741a2(%rip) # 68a0f8 0.00 : 415f56: 68 1c 00 00 00 pushq $0x1c 0.00 : 415f5b: e9 20 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f60 : 0.00 : 415f60: ff 25 9a 41 27 00 jmpq *0x27419a(%rip) # 68a100 0.00 : 415f66: 68 1d 00 00 00 pushq $0x1d 0.00 : 415f6b: e9 10 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f70 : 0.00 : 415f70: ff 25 92 41 27 00 jmpq *0x274192(%rip) # 68a108 0.00 : 415f76: 68 1e 00 00 00 pushq $0x1e 0.00 : 415f7b: e9 00 fe ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f80 : 0.00 : 415f80: ff 25 8a 41 27 00 jmpq *0x27418a(%rip) # 68a110 0.00 : 415f86: 68 1f 00 00 00 pushq $0x1f 0.00 : 415f8b: e9 f0 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000415f90 <__fprintf_chk@plt>: 0.00 : 415f90: ff 25 82 41 27 00 jmpq *0x274182(%rip) # 68a118 0.00 : 415f96: 68 20 00 00 00 pushq $0x20 0.00 : 415f9b: e9 e0 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000415fa0 : 0.00 : 415fa0: ff 25 7a 41 27 00 jmpq *0x27417a(%rip) # 68a120 0.00 : 415fa6: 68 21 00 00 00 pushq $0x21 0.00 : 415fab: e9 d0 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000415fb0 : 0.00 : 415fb0: ff 25 72 41 27 00 jmpq *0x274172(%rip) # 68a128 0.00 : 415fb6: 68 22 00 00 00 pushq $0x22 0.00 : 415fbb: e9 c0 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000415fc0 : 0.00 : 415fc0: ff 25 6a 41 27 00 jmpq *0x27416a(%rip) # 68a130 0.00 : 415fc6: 68 23 00 00 00 pushq $0x23 0.00 : 415fcb: e9 b0 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000415fd0 : 0.00 : 415fd0: ff 25 62 41 27 00 jmpq *0x274162(%rip) # 68a138 0.00 : 415fd6: 68 24 00 00 00 pushq $0x24 0.00 : 415fdb: e9 a0 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000415fe0 : 0.00 : 415fe0: ff 25 5a 41 27 00 jmpq *0x27415a(%rip) # 68a140 0.00 : 415fe6: 68 25 00 00 00 pushq $0x25 0.00 : 415feb: e9 90 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000415ff0 : 0.00 : 415ff0: ff 25 52 41 27 00 jmpq *0x274152(%rip) # 68a148 0.00 : 415ff6: 68 26 00 00 00 pushq $0x26 0.00 : 415ffb: e9 80 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416000 : 0.00 : 416000: ff 25 4a 41 27 00 jmpq *0x27414a(%rip) # 68a150 0.00 : 416006: 68 27 00 00 00 pushq $0x27 0.00 : 41600b: e9 70 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416010 : 0.00 : 416010: ff 25 42 41 27 00 jmpq *0x274142(%rip) # 68a158 0.00 : 416016: 68 28 00 00 00 pushq $0x28 0.00 : 41601b: e9 60 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416020 : 0.00 : 416020: ff 25 3a 41 27 00 jmpq *0x27413a(%rip) # 68a160 0.00 : 416026: 68 29 00 00 00 pushq $0x29 0.00 : 41602b: e9 50 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416030 : 0.00 : 416030: ff 25 32 41 27 00 jmpq *0x274132(%rip) # 68a168 0.00 : 416036: 68 2a 00 00 00 pushq $0x2a 0.00 : 41603b: e9 40 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416040 <__printf_chk@plt>: 0.00 : 416040: ff 25 2a 41 27 00 jmpq *0x27412a(%rip) # 68a170 0.00 : 416046: 68 2b 00 00 00 pushq $0x2b 0.00 : 41604b: e9 30 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416050 : 0.00 : 416050: ff 25 22 41 27 00 jmpq *0x274122(%rip) # 68a178 0.00 : 416056: 68 2c 00 00 00 pushq $0x2c 0.00 : 41605b: e9 20 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416060 : 0.00 : 416060: ff 25 1a 41 27 00 jmpq *0x27411a(%rip) # 68a180 0.00 : 416066: 68 2d 00 00 00 pushq $0x2d 0.00 : 41606b: e9 10 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416070 : 0.00 : 416070: ff 25 12 41 27 00 jmpq *0x274112(%rip) # 68a188 0.00 : 416076: 68 2e 00 00 00 pushq $0x2e 0.00 : 41607b: e9 00 fd ff ff jmpq 415d80 <_init+0x20> : : 0000000000416080 : 0.00 : 416080: ff 25 0a 41 27 00 jmpq *0x27410a(%rip) # 68a190 0.00 : 416086: 68 2f 00 00 00 pushq $0x2f 0.00 : 41608b: e9 f0 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416090 : 0.00 : 416090: ff 25 02 41 27 00 jmpq *0x274102(%rip) # 68a198 0.00 : 416096: 68 30 00 00 00 pushq $0x30 0.00 : 41609b: e9 e0 fc ff ff jmpq 415d80 <_init+0x20> : : 00000000004160a0 : 0.00 : 4160a0: ff 25 fa 40 27 00 jmpq *0x2740fa(%rip) # 68a1a0 0.00 : 4160a6: 68 31 00 00 00 pushq $0x31 0.00 : 4160ab: e9 d0 fc ff ff jmpq 415d80 <_init+0x20> : : 00000000004160b0 : 0.00 : 4160b0: ff 25 f2 40 27 00 jmpq *0x2740f2(%rip) # 68a1a8 0.00 : 4160b6: 68 32 00 00 00 pushq $0x32 0.00 : 4160bb: e9 c0 fc ff ff jmpq 415d80 <_init+0x20> : : 00000000004160c0 : 0.00 : 4160c0: ff 25 ea 40 27 00 jmpq *0x2740ea(%rip) # 68a1b0 0.00 : 4160c6: 68 33 00 00 00 pushq $0x33 0.00 : 4160cb: e9 b0 fc ff ff jmpq 415d80 <_init+0x20> : : 00000000004160d0 : 0.00 : 4160d0: ff 25 e2 40 27 00 jmpq *0x2740e2(%rip) # 68a1b8 0.00 : 4160d6: 68 34 00 00 00 pushq $0x34 0.00 : 4160db: e9 a0 fc ff ff jmpq 415d80 <_init+0x20> : : 00000000004160e0 : 0.00 : 4160e0: ff 25 da 40 27 00 jmpq *0x2740da(%rip) # 68a1c0 0.00 : 4160e6: 68 35 00 00 00 pushq $0x35 0.00 : 4160eb: e9 90 fc ff ff jmpq 415d80 <_init+0x20> : : 00000000004160f0 : 0.00 : 4160f0: ff 25 d2 40 27 00 jmpq *0x2740d2(%rip) # 68a1c8 0.00 : 4160f6: 68 36 00 00 00 pushq $0x36 0.00 : 4160fb: e9 80 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416100 : 0.00 : 416100: ff 25 ca 40 27 00 jmpq *0x2740ca(%rip) # 68a1d0 0.00 : 416106: 68 37 00 00 00 pushq $0x37 0.00 : 41610b: e9 70 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416110 : 0.00 : 416110: ff 25 c2 40 27 00 jmpq *0x2740c2(%rip) # 68a1d8 0.00 : 416116: 68 38 00 00 00 pushq $0x38 0.00 : 41611b: e9 60 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416120 : 0.00 : 416120: ff 25 ba 40 27 00 jmpq *0x2740ba(%rip) # 68a1e0 0.00 : 416126: 68 39 00 00 00 pushq $0x39 0.00 : 41612b: e9 50 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416130 : 0.00 : 416130: ff 25 b2 40 27 00 jmpq *0x2740b2(%rip) # 68a1e8 0.00 : 416136: 68 3a 00 00 00 pushq $0x3a 0.00 : 41613b: e9 40 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416140 <__libc_start_main@plt>: 0.00 : 416140: ff 25 aa 40 27 00 jmpq *0x2740aa(%rip) # 68a1f0 0.00 : 416146: 68 3b 00 00 00 pushq $0x3b 0.00 : 41614b: e9 30 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416150 : 0.00 : 416150: ff 25 a2 40 27 00 jmpq *0x2740a2(%rip) # 68a1f8 0.00 : 416156: 68 3c 00 00 00 pushq $0x3c 0.00 : 41615b: e9 20 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416160 : 0.00 : 416160: ff 25 9a 40 27 00 jmpq *0x27409a(%rip) # 68a200 0.00 : 416166: 68 3d 00 00 00 pushq $0x3d 0.00 : 41616b: e9 10 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416170 : 0.00 : 416170: ff 25 92 40 27 00 jmpq *0x274092(%rip) # 68a208 0.00 : 416176: 68 3e 00 00 00 pushq $0x3e 0.00 : 41617b: e9 00 fc ff ff jmpq 415d80 <_init+0x20> : : 0000000000416180 : 0.00 : 416180: ff 25 8a 40 27 00 jmpq *0x27408a(%rip) # 68a210 0.00 : 416186: 68 3f 00 00 00 pushq $0x3f 0.00 : 41618b: e9 f0 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416190 : 0.00 : 416190: ff 25 82 40 27 00 jmpq *0x274082(%rip) # 68a218 0.00 : 416196: 68 40 00 00 00 pushq $0x40 0.00 : 41619b: e9 e0 fb ff ff jmpq 415d80 <_init+0x20> : : 00000000004161a0 : 0.00 : 4161a0: ff 25 7a 40 27 00 jmpq *0x27407a(%rip) # 68a220 0.00 : 4161a6: 68 41 00 00 00 pushq $0x41 0.00 : 4161ab: e9 d0 fb ff ff jmpq 415d80 <_init+0x20> : : 00000000004161b0 : 0.00 : 4161b0: ff 25 72 40 27 00 jmpq *0x274072(%rip) # 68a228 0.00 : 4161b6: 68 42 00 00 00 pushq $0x42 0.00 : 4161bb: e9 c0 fb ff ff jmpq 415d80 <_init+0x20> : : 00000000004161c0 : 0.00 : 4161c0: ff 25 6a 40 27 00 jmpq *0x27406a(%rip) # 68a230 0.00 : 4161c6: 68 43 00 00 00 pushq $0x43 0.00 : 4161cb: e9 b0 fb ff ff jmpq 415d80 <_init+0x20> : : 00000000004161d0 : 0.00 : 4161d0: ff 25 62 40 27 00 jmpq *0x274062(%rip) # 68a238 0.00 : 4161d6: 68 44 00 00 00 pushq $0x44 0.00 : 4161db: e9 a0 fb ff ff jmpq 415d80 <_init+0x20> : : 00000000004161e0 : 0.00 : 4161e0: ff 25 5a 40 27 00 jmpq *0x27405a(%rip) # 68a240 0.00 : 4161e6: 68 45 00 00 00 pushq $0x45 0.00 : 4161eb: e9 90 fb ff ff jmpq 415d80 <_init+0x20> : : 00000000004161f0 : 0.00 : 4161f0: ff 25 52 40 27 00 jmpq *0x274052(%rip) # 68a248 0.00 : 4161f6: 68 46 00 00 00 pushq $0x46 0.00 : 4161fb: e9 80 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416200 : 0.00 : 416200: ff 25 4a 40 27 00 jmpq *0x27404a(%rip) # 68a250 0.00 : 416206: 68 47 00 00 00 pushq $0x47 0.00 : 41620b: e9 70 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416210 <__memcpy_chk@plt>: 0.00 : 416210: ff 25 42 40 27 00 jmpq *0x274042(%rip) # 68a258 0.00 : 416216: 68 48 00 00 00 pushq $0x48 0.00 : 41621b: e9 60 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416220 : 0.00 : 416220: ff 25 3a 40 27 00 jmpq *0x27403a(%rip) # 68a260 0.00 : 416226: 68 49 00 00 00 pushq $0x49 0.00 : 41622b: e9 50 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416230 : 0.00 : 416230: ff 25 32 40 27 00 jmpq *0x274032(%rip) # 68a268 0.00 : 416236: 68 4a 00 00 00 pushq $0x4a 0.00 : 41623b: e9 40 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416240 : 0.00 : 416240: ff 25 2a 40 27 00 jmpq *0x27402a(%rip) # 68a270 0.00 : 416246: 68 4b 00 00 00 pushq $0x4b 0.00 : 41624b: e9 30 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416250 : 0.00 : 416250: ff 25 22 40 27 00 jmpq *0x274022(%rip) # 68a278 0.00 : 416256: 68 4c 00 00 00 pushq $0x4c 0.00 : 41625b: e9 20 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416260 : 0.00 : 416260: ff 25 1a 40 27 00 jmpq *0x27401a(%rip) # 68a280 0.00 : 416266: 68 4d 00 00 00 pushq $0x4d 0.00 : 41626b: e9 10 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416270 : 0.00 : 416270: ff 25 12 40 27 00 jmpq *0x274012(%rip) # 68a288 0.00 : 416276: 68 4e 00 00 00 pushq $0x4e 0.00 : 41627b: e9 00 fb ff ff jmpq 415d80 <_init+0x20> : : 0000000000416280 : 0.00 : 416280: ff 25 0a 40 27 00 jmpq *0x27400a(%rip) # 68a290 0.00 : 416286: 68 4f 00 00 00 pushq $0x4f 0.00 : 41628b: e9 f0 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416290 : 0.00 : 416290: ff 25 02 40 27 00 jmpq *0x274002(%rip) # 68a298 0.00 : 416296: 68 50 00 00 00 pushq $0x50 0.00 : 41629b: e9 e0 fa ff ff jmpq 415d80 <_init+0x20> : : 00000000004162a0 : 0.00 : 4162a0: ff 25 fa 3f 27 00 jmpq *0x273ffa(%rip) # 68a2a0 0.00 : 4162a6: 68 51 00 00 00 pushq $0x51 0.00 : 4162ab: e9 d0 fa ff ff jmpq 415d80 <_init+0x20> : : 00000000004162b0 : 0.00 : 4162b0: ff 25 f2 3f 27 00 jmpq *0x273ff2(%rip) # 68a2a8 0.00 : 4162b6: 68 52 00 00 00 pushq $0x52 0.00 : 4162bb: e9 c0 fa ff ff jmpq 415d80 <_init+0x20> : : 00000000004162c0 : 0.00 : 4162c0: ff 25 ea 3f 27 00 jmpq *0x273fea(%rip) # 68a2b0 0.00 : 4162c6: 68 53 00 00 00 pushq $0x53 0.00 : 4162cb: e9 b0 fa ff ff jmpq 415d80 <_init+0x20> : : 00000000004162d0 : 0.00 : 4162d0: ff 25 e2 3f 27 00 jmpq *0x273fe2(%rip) # 68a2b8 0.00 : 4162d6: 68 54 00 00 00 pushq $0x54 0.00 : 4162db: e9 a0 fa ff ff jmpq 415d80 <_init+0x20> : : 00000000004162e0 : 0.00 : 4162e0: ff 25 da 3f 27 00 jmpq *0x273fda(%rip) # 68a2c0 0.00 : 4162e6: 68 55 00 00 00 pushq $0x55 0.00 : 4162eb: e9 90 fa ff ff jmpq 415d80 <_init+0x20> : : 00000000004162f0 : 0.00 : 4162f0: ff 25 d2 3f 27 00 jmpq *0x273fd2(%rip) # 68a2c8 0.00 : 4162f6: 68 56 00 00 00 pushq $0x56 0.00 : 4162fb: e9 80 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416300 : 0.00 : 416300: ff 25 ca 3f 27 00 jmpq *0x273fca(%rip) # 68a2d0 0.00 : 416306: 68 57 00 00 00 pushq $0x57 0.00 : 41630b: e9 70 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416310 : 0.00 : 416310: ff 25 c2 3f 27 00 jmpq *0x273fc2(%rip) # 68a2d8 0.00 : 416316: 68 58 00 00 00 pushq $0x58 0.00 : 41631b: e9 60 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416320 : 0.00 : 416320: ff 25 ba 3f 27 00 jmpq *0x273fba(%rip) # 68a2e0 0.00 : 416326: 68 59 00 00 00 pushq $0x59 0.00 : 41632b: e9 50 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416330 : 0.00 : 416330: ff 25 b2 3f 27 00 jmpq *0x273fb2(%rip) # 68a2e8 0.00 : 416336: 68 5a 00 00 00 pushq $0x5a 0.00 : 41633b: e9 40 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416340 <__strtoul_internal@plt>: 0.00 : 416340: ff 25 aa 3f 27 00 jmpq *0x273faa(%rip) # 68a2f0 0.00 : 416346: 68 5b 00 00 00 pushq $0x5b 0.00 : 41634b: e9 30 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416350 <__ctype_toupper_loc@plt>: 0.00 : 416350: ff 25 a2 3f 27 00 jmpq *0x273fa2(%rip) # 68a2f8 0.00 : 416356: 68 5c 00 00 00 pushq $0x5c 0.00 : 41635b: e9 20 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416360 : 0.00 : 416360: ff 25 9a 3f 27 00 jmpq *0x273f9a(%rip) # 68a300 0.00 : 416366: 68 5d 00 00 00 pushq $0x5d 0.00 : 41636b: e9 10 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416370 : 0.00 : 416370: ff 25 92 3f 27 00 jmpq *0x273f92(%rip) # 68a308 0.00 : 416376: 68 5e 00 00 00 pushq $0x5e 0.00 : 41637b: e9 00 fa ff ff jmpq 415d80 <_init+0x20> : : 0000000000416380 : 0.00 : 416380: ff 25 8a 3f 27 00 jmpq *0x273f8a(%rip) # 68a310 0.00 : 416386: 68 5f 00 00 00 pushq $0x5f 0.00 : 41638b: e9 f0 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416390 : 0.00 : 416390: ff 25 82 3f 27 00 jmpq *0x273f82(%rip) # 68a318 0.00 : 416396: 68 60 00 00 00 pushq $0x60 0.00 : 41639b: e9 e0 f9 ff ff jmpq 415d80 <_init+0x20> : : 00000000004163a0 : 0.00 : 4163a0: ff 25 7a 3f 27 00 jmpq *0x273f7a(%rip) # 68a320 0.00 : 4163a6: 68 61 00 00 00 pushq $0x61 0.00 : 4163ab: e9 d0 f9 ff ff jmpq 415d80 <_init+0x20> : : 00000000004163b0 : 0.00 : 4163b0: ff 25 72 3f 27 00 jmpq *0x273f72(%rip) # 68a328 0.00 : 4163b6: 68 62 00 00 00 pushq $0x62 0.00 : 4163bb: e9 c0 f9 ff ff jmpq 415d80 <_init+0x20> : : 00000000004163c0 : 0.00 : 4163c0: ff 25 6a 3f 27 00 jmpq *0x273f6a(%rip) # 68a330 0.00 : 4163c6: 68 63 00 00 00 pushq $0x63 0.00 : 4163cb: e9 b0 f9 ff ff jmpq 415d80 <_init+0x20> : : 00000000004163d0 : 0.00 : 4163d0: ff 25 62 3f 27 00 jmpq *0x273f62(%rip) # 68a338 0.00 : 4163d6: 68 64 00 00 00 pushq $0x64 0.00 : 4163db: e9 a0 f9 ff ff jmpq 415d80 <_init+0x20> : : 00000000004163e0 : 0.00 : 4163e0: ff 25 5a 3f 27 00 jmpq *0x273f5a(%rip) # 68a340 0.00 : 4163e6: 68 65 00 00 00 pushq $0x65 0.00 : 4163eb: e9 90 f9 ff ff jmpq 415d80 <_init+0x20> : : 00000000004163f0 : 0.00 : 4163f0: ff 25 52 3f 27 00 jmpq *0x273f52(%rip) # 68a348 0.00 : 4163f6: 68 66 00 00 00 pushq $0x66 0.00 : 4163fb: e9 80 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416400 : 0.00 : 416400: ff 25 4a 3f 27 00 jmpq *0x273f4a(%rip) # 68a350 0.00 : 416406: 68 67 00 00 00 pushq $0x67 0.00 : 41640b: e9 70 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416410 : 0.00 : 416410: ff 25 42 3f 27 00 jmpq *0x273f42(%rip) # 68a358 0.00 : 416416: 68 68 00 00 00 pushq $0x68 0.00 : 41641b: e9 60 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416420 <__asprintf_chk@plt>: 0.00 : 416420: ff 25 3a 3f 27 00 jmpq *0x273f3a(%rip) # 68a360 0.00 : 416426: 68 69 00 00 00 pushq $0x69 0.00 : 41642b: e9 50 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416430 : 0.00 : 416430: ff 25 32 3f 27 00 jmpq *0x273f32(%rip) # 68a368 0.00 : 416436: 68 6a 00 00 00 pushq $0x6a 0.00 : 41643b: e9 40 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416440 <__xstat@plt>: 0.00 : 416440: ff 25 2a 3f 27 00 jmpq *0x273f2a(%rip) # 68a370 0.00 : 416446: 68 6b 00 00 00 pushq $0x6b 0.00 : 41644b: e9 30 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416450 : 0.00 : 416450: ff 25 22 3f 27 00 jmpq *0x273f22(%rip) # 68a378 0.00 : 416456: 68 6c 00 00 00 pushq $0x6c 0.00 : 41645b: e9 20 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416460 <__ctype_get_mb_cur_max@plt>: 0.00 : 416460: ff 25 1a 3f 27 00 jmpq *0x273f1a(%rip) # 68a380 0.00 : 416466: 68 6d 00 00 00 pushq $0x6d 0.00 : 41646b: e9 10 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416470 <__vfprintf_chk@plt>: 0.00 : 416470: ff 25 12 3f 27 00 jmpq *0x273f12(%rip) # 68a388 0.00 : 416476: 68 6e 00 00 00 pushq $0x6e 0.00 : 41647b: e9 00 f9 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416480 : 0.00 : 416480: ff 25 0a 3f 27 00 jmpq *0x273f0a(%rip) # 68a390 0.00 : 416486: 68 6f 00 00 00 pushq $0x6f 0.00 : 41648b: e9 f0 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416490 <__ctype_b_loc@plt>: 0.00 : 416490: ff 25 02 3f 27 00 jmpq *0x273f02(%rip) # 68a398 0.00 : 416496: 68 70 00 00 00 pushq $0x70 0.00 : 41649b: e9 e0 f8 ff ff jmpq 415d80 <_init+0x20> : : 00000000004164a0 : 0.00 : 4164a0: ff 25 fa 3e 27 00 jmpq *0x273efa(%rip) # 68a3a0 0.00 : 4164a6: 68 71 00 00 00 pushq $0x71 0.00 : 4164ab: e9 d0 f8 ff ff jmpq 415d80 <_init+0x20> : : 00000000004164b0 : 0.00 : 4164b0: ff 25 f2 3e 27 00 jmpq *0x273ef2(%rip) # 68a3a8 0.00 : 4164b6: 68 72 00 00 00 pushq $0x72 0.00 : 4164bb: e9 c0 f8 ff ff jmpq 415d80 <_init+0x20> : : 00000000004164c0 : 0.00 : 4164c0: ff 25 ea 3e 27 00 jmpq *0x273eea(%rip) # 68a3b0 0.00 : 4164c6: 68 73 00 00 00 pushq $0x73 0.00 : 4164cb: e9 b0 f8 ff ff jmpq 415d80 <_init+0x20> : : 00000000004164d0 : 0.00 : 4164d0: ff 25 e2 3e 27 00 jmpq *0x273ee2(%rip) # 68a3b8 0.00 : 4164d6: 68 74 00 00 00 pushq $0x74 0.00 : 4164db: e9 a0 f8 ff ff jmpq 415d80 <_init+0x20> : : 00000000004164e0 : 0.00 : 4164e0: ff 25 da 3e 27 00 jmpq *0x273eda(%rip) # 68a3c0 0.00 : 4164e6: 68 75 00 00 00 pushq $0x75 0.00 : 4164eb: e9 90 f8 ff ff jmpq 415d80 <_init+0x20> : : 00000000004164f0 : 0.00 : 4164f0: ff 25 d2 3e 27 00 jmpq *0x273ed2(%rip) # 68a3c8 0.00 : 4164f6: 68 76 00 00 00 pushq $0x76 0.00 : 4164fb: e9 80 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416500 <__strtol_internal@plt>: 0.00 : 416500: ff 25 ca 3e 27 00 jmpq *0x273eca(%rip) # 68a3d0 0.00 : 416506: 68 77 00 00 00 pushq $0x77 0.00 : 41650b: e9 70 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416510 : 0.00 : 416510: ff 25 c2 3e 27 00 jmpq *0x273ec2(%rip) # 68a3d8 0.00 : 416516: 68 78 00 00 00 pushq $0x78 0.00 : 41651b: e9 60 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416520 : 0.00 : 416520: ff 25 ba 3e 27 00 jmpq *0x273eba(%rip) # 68a3e0 0.00 : 416526: 68 79 00 00 00 pushq $0x79 0.00 : 41652b: e9 50 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416530 : 0.00 : 416530: ff 25 b2 3e 27 00 jmpq *0x273eb2(%rip) # 68a3e8 0.00 : 416536: 68 7a 00 00 00 pushq $0x7a 0.00 : 41653b: e9 40 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416540 : 0.00 : 416540: ff 25 aa 3e 27 00 jmpq *0x273eaa(%rip) # 68a3f0 0.00 : 416546: 68 7b 00 00 00 pushq $0x7b 0.00 : 41654b: e9 30 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416550 : 0.00 : 416550: ff 25 a2 3e 27 00 jmpq *0x273ea2(%rip) # 68a3f8 0.00 : 416556: 68 7c 00 00 00 pushq $0x7c 0.00 : 41655b: e9 20 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416560 : 0.00 : 416560: ff 25 9a 3e 27 00 jmpq *0x273e9a(%rip) # 68a400 0.00 : 416566: 68 7d 00 00 00 pushq $0x7d 0.00 : 41656b: e9 10 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416570 : 0.00 : 416570: ff 25 92 3e 27 00 jmpq *0x273e92(%rip) # 68a408 0.00 : 416576: 68 7e 00 00 00 pushq $0x7e 0.00 : 41657b: e9 00 f8 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416580 : 0.00 : 416580: ff 25 8a 3e 27 00 jmpq *0x273e8a(%rip) # 68a410 0.00 : 416586: 68 7f 00 00 00 pushq $0x7f 0.00 : 41658b: e9 f0 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416590 : 0.00 : 416590: ff 25 82 3e 27 00 jmpq *0x273e82(%rip) # 68a418 0.00 : 416596: 68 80 00 00 00 pushq $0x80 0.00 : 41659b: e9 e0 f7 ff ff jmpq 415d80 <_init+0x20> : : 00000000004165a0 : 0.00 : 4165a0: ff 25 7a 3e 27 00 jmpq *0x273e7a(%rip) # 68a420 0.00 : 4165a6: 68 81 00 00 00 pushq $0x81 0.00 : 4165ab: e9 d0 f7 ff ff jmpq 415d80 <_init+0x20> : : 00000000004165b0 : 0.00 : 4165b0: ff 25 72 3e 27 00 jmpq *0x273e72(%rip) # 68a428 0.00 : 4165b6: 68 82 00 00 00 pushq $0x82 0.00 : 4165bb: e9 c0 f7 ff ff jmpq 415d80 <_init+0x20> : : 00000000004165c0 : 0.00 : 4165c0: ff 25 6a 3e 27 00 jmpq *0x273e6a(%rip) # 68a430 0.00 : 4165c6: 68 83 00 00 00 pushq $0x83 0.00 : 4165cb: e9 b0 f7 ff ff jmpq 415d80 <_init+0x20> : : 00000000004165d0 : 0.00 : 4165d0: ff 25 62 3e 27 00 jmpq *0x273e62(%rip) # 68a438 0.00 : 4165d6: 68 84 00 00 00 pushq $0x84 0.00 : 4165db: e9 a0 f7 ff ff jmpq 415d80 <_init+0x20> : : 00000000004165e0 : 0.00 : 4165e0: ff 25 5a 3e 27 00 jmpq *0x273e5a(%rip) # 68a440 0.00 : 4165e6: 68 85 00 00 00 pushq $0x85 0.00 : 4165eb: e9 90 f7 ff ff jmpq 415d80 <_init+0x20> : : 00000000004165f0 : 0.00 : 4165f0: ff 25 52 3e 27 00 jmpq *0x273e52(%rip) # 68a448 0.00 : 4165f6: 68 86 00 00 00 pushq $0x86 0.00 : 4165fb: e9 80 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416600 : 0.00 : 416600: ff 25 4a 3e 27 00 jmpq *0x273e4a(%rip) # 68a450 0.00 : 416606: 68 87 00 00 00 pushq $0x87 0.00 : 41660b: e9 70 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416610 : 0.00 : 416610: ff 25 42 3e 27 00 jmpq *0x273e42(%rip) # 68a458 0.00 : 416616: 68 88 00 00 00 pushq $0x88 0.00 : 41661b: e9 60 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416620 : 0.00 : 416620: ff 25 3a 3e 27 00 jmpq *0x273e3a(%rip) # 68a460 0.00 : 416626: 68 89 00 00 00 pushq $0x89 0.00 : 41662b: e9 50 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416630 : 0.00 : 416630: ff 25 32 3e 27 00 jmpq *0x273e32(%rip) # 68a468 0.00 : 416636: 68 8a 00 00 00 pushq $0x8a 0.00 : 41663b: e9 40 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416640 : 0.00 : 416640: ff 25 2a 3e 27 00 jmpq *0x273e2a(%rip) # 68a470 0.00 : 416646: 68 8b 00 00 00 pushq $0x8b 0.00 : 41664b: e9 30 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416650 : 0.00 : 416650: ff 25 22 3e 27 00 jmpq *0x273e22(%rip) # 68a478 0.00 : 416656: 68 8c 00 00 00 pushq $0x8c 0.00 : 41665b: e9 20 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416660 : 0.00 : 416660: ff 25 1a 3e 27 00 jmpq *0x273e1a(%rip) # 68a480 0.00 : 416666: 68 8d 00 00 00 pushq $0x8d 0.00 : 41666b: e9 10 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416670 : 0.00 : 416670: ff 25 12 3e 27 00 jmpq *0x273e12(%rip) # 68a488 0.00 : 416676: 68 8e 00 00 00 pushq $0x8e 0.00 : 41667b: e9 00 f7 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416680 : 0.00 : 416680: ff 25 0a 3e 27 00 jmpq *0x273e0a(%rip) # 68a490 0.00 : 416686: 68 8f 00 00 00 pushq $0x8f 0.00 : 41668b: e9 f0 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416690 : 0.00 : 416690: ff 25 02 3e 27 00 jmpq *0x273e02(%rip) # 68a498 0.00 : 416696: 68 90 00 00 00 pushq $0x90 0.00 : 41669b: e9 e0 f6 ff ff jmpq 415d80 <_init+0x20> : : 00000000004166a0 : 0.00 : 4166a0: ff 25 fa 3d 27 00 jmpq *0x273dfa(%rip) # 68a4a0 0.00 : 4166a6: 68 91 00 00 00 pushq $0x91 0.00 : 4166ab: e9 d0 f6 ff ff jmpq 415d80 <_init+0x20> : : 00000000004166b0 : 0.00 : 4166b0: ff 25 f2 3d 27 00 jmpq *0x273df2(%rip) # 68a4a8 0.00 : 4166b6: 68 92 00 00 00 pushq $0x92 0.00 : 4166bb: e9 c0 f6 ff ff jmpq 415d80 <_init+0x20> : : 00000000004166c0 : 0.00 : 4166c0: ff 25 ea 3d 27 00 jmpq *0x273dea(%rip) # 68a4b0 0.00 : 4166c6: 68 93 00 00 00 pushq $0x93 0.00 : 4166cb: e9 b0 f6 ff ff jmpq 415d80 <_init+0x20> : : 00000000004166d0 : 0.00 : 4166d0: ff 25 e2 3d 27 00 jmpq *0x273de2(%rip) # 68a4b8 0.00 : 4166d6: 68 94 00 00 00 pushq $0x94 0.00 : 4166db: e9 a0 f6 ff ff jmpq 415d80 <_init+0x20> : : 00000000004166e0 : 0.00 : 4166e0: ff 25 da 3d 27 00 jmpq *0x273dda(%rip) # 68a4c0 0.00 : 4166e6: 68 95 00 00 00 pushq $0x95 0.00 : 4166eb: e9 90 f6 ff ff jmpq 415d80 <_init+0x20> : : 00000000004166f0 : 0.00 : 4166f0: ff 25 d2 3d 27 00 jmpq *0x273dd2(%rip) # 68a4c8 0.00 : 4166f6: 68 96 00 00 00 pushq $0x96 0.00 : 4166fb: e9 80 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416700 : 0.00 : 416700: ff 25 ca 3d 27 00 jmpq *0x273dca(%rip) # 68a4d0 0.00 : 416706: 68 97 00 00 00 pushq $0x97 0.00 : 41670b: e9 70 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416710 : 0.00 : 416710: ff 25 c2 3d 27 00 jmpq *0x273dc2(%rip) # 68a4d8 0.00 : 416716: 68 98 00 00 00 pushq $0x98 0.00 : 41671b: e9 60 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416720 : 0.00 : 416720: ff 25 ba 3d 27 00 jmpq *0x273dba(%rip) # 68a4e0 0.00 : 416726: 68 99 00 00 00 pushq $0x99 0.00 : 41672b: e9 50 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416730 : 0.00 : 416730: ff 25 b2 3d 27 00 jmpq *0x273db2(%rip) # 68a4e8 0.00 : 416736: 68 9a 00 00 00 pushq $0x9a 0.00 : 41673b: e9 40 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416740 <__strcpy_chk@plt>: 0.00 : 416740: ff 25 aa 3d 27 00 jmpq *0x273daa(%rip) # 68a4f0 0.00 : 416746: 68 9b 00 00 00 pushq $0x9b 0.00 : 41674b: e9 30 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416750 : 0.00 : 416750: ff 25 a2 3d 27 00 jmpq *0x273da2(%rip) # 68a4f8 0.00 : 416756: 68 9c 00 00 00 pushq $0x9c 0.00 : 41675b: e9 20 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416760 : 0.00 : 416760: ff 25 9a 3d 27 00 jmpq *0x273d9a(%rip) # 68a500 0.00 : 416766: 68 9d 00 00 00 pushq $0x9d 0.00 : 41676b: e9 10 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416770 : 0.00 : 416770: ff 25 92 3d 27 00 jmpq *0x273d92(%rip) # 68a508 0.00 : 416776: 68 9e 00 00 00 pushq $0x9e 0.00 : 41677b: e9 00 f6 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416780 : 0.00 : 416780: ff 25 8a 3d 27 00 jmpq *0x273d8a(%rip) # 68a510 0.00 : 416786: 68 9f 00 00 00 pushq $0x9f 0.00 : 41678b: e9 f0 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416790 : 0.00 : 416790: ff 25 82 3d 27 00 jmpq *0x273d82(%rip) # 68a518 0.00 : 416796: 68 a0 00 00 00 pushq $0xa0 0.00 : 41679b: e9 e0 f5 ff ff jmpq 415d80 <_init+0x20> : : 00000000004167a0 : 0.00 : 4167a0: ff 25 7a 3d 27 00 jmpq *0x273d7a(%rip) # 68a520 0.00 : 4167a6: 68 a1 00 00 00 pushq $0xa1 0.00 : 4167ab: e9 d0 f5 ff ff jmpq 415d80 <_init+0x20> : : 00000000004167b0 : 0.00 : 4167b0: ff 25 72 3d 27 00 jmpq *0x273d72(%rip) # 68a528 0.00 : 4167b6: 68 a2 00 00 00 pushq $0xa2 0.00 : 4167bb: e9 c0 f5 ff ff jmpq 415d80 <_init+0x20> : : 00000000004167c0 <__fxstat@plt>: 0.00 : 4167c0: ff 25 6a 3d 27 00 jmpq *0x273d6a(%rip) # 68a530 0.00 : 4167c6: 68 a3 00 00 00 pushq $0xa3 0.00 : 4167cb: e9 b0 f5 ff ff jmpq 415d80 <_init+0x20> : : 00000000004167d0 : 0.00 : 4167d0: ff 25 62 3d 27 00 jmpq *0x273d62(%rip) # 68a538 0.00 : 4167d6: 68 a4 00 00 00 pushq $0xa4 0.00 : 4167db: e9 a0 f5 ff ff jmpq 415d80 <_init+0x20> : : 00000000004167e0 : 0.00 : 4167e0: ff 25 5a 3d 27 00 jmpq *0x273d5a(%rip) # 68a540 0.00 : 4167e6: 68 a5 00 00 00 pushq $0xa5 0.00 : 4167eb: e9 90 f5 ff ff jmpq 415d80 <_init+0x20> : : 00000000004167f0 : 0.00 : 4167f0: ff 25 52 3d 27 00 jmpq *0x273d52(%rip) # 68a548 0.00 : 4167f6: 68 a6 00 00 00 pushq $0xa6 0.00 : 4167fb: e9 80 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416800 : 0.00 : 416800: ff 25 4a 3d 27 00 jmpq *0x273d4a(%rip) # 68a550 0.00 : 416806: 68 a7 00 00 00 pushq $0xa7 0.00 : 41680b: e9 70 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416810 : 0.00 : 416810: ff 25 42 3d 27 00 jmpq *0x273d42(%rip) # 68a558 0.00 : 416816: 68 a8 00 00 00 pushq $0xa8 0.00 : 41681b: e9 60 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416820 : 0.00 : 416820: ff 25 3a 3d 27 00 jmpq *0x273d3a(%rip) # 68a560 0.00 : 416826: 68 a9 00 00 00 pushq $0xa9 0.00 : 41682b: e9 50 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416830 : 0.00 : 416830: ff 25 32 3d 27 00 jmpq *0x273d32(%rip) # 68a568 0.00 : 416836: 68 aa 00 00 00 pushq $0xaa 0.00 : 41683b: e9 40 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416840 <__errno_location@plt>: 0.00 : 416840: ff 25 2a 3d 27 00 jmpq *0x273d2a(%rip) # 68a570 0.00 : 416846: 68 ab 00 00 00 pushq $0xab 0.00 : 41684b: e9 30 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416850 : 0.00 : 416850: ff 25 22 3d 27 00 jmpq *0x273d22(%rip) # 68a578 0.00 : 416856: 68 ac 00 00 00 pushq $0xac 0.00 : 41685b: e9 20 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416860 : 0.00 : 416860: ff 25 1a 3d 27 00 jmpq *0x273d1a(%rip) # 68a580 0.00 : 416866: 68 ad 00 00 00 pushq $0xad 0.00 : 41686b: e9 10 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416870 : 0.00 : 416870: ff 25 12 3d 27 00 jmpq *0x273d12(%rip) # 68a588 0.00 : 416876: 68 ae 00 00 00 pushq $0xae 0.00 : 41687b: e9 00 f5 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416880 : 0.00 : 416880: ff 25 0a 3d 27 00 jmpq *0x273d0a(%rip) # 68a590 0.00 : 416886: 68 af 00 00 00 pushq $0xaf 0.00 : 41688b: e9 f0 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416890 : 0.00 : 416890: ff 25 02 3d 27 00 jmpq *0x273d02(%rip) # 68a598 0.00 : 416896: 68 b0 00 00 00 pushq $0xb0 0.00 : 41689b: e9 e0 f4 ff ff jmpq 415d80 <_init+0x20> : : 00000000004168a0 : 0.00 : 4168a0: ff 25 fa 3c 27 00 jmpq *0x273cfa(%rip) # 68a5a0 0.00 : 4168a6: 68 b1 00 00 00 pushq $0xb1 0.00 : 4168ab: e9 d0 f4 ff ff jmpq 415d80 <_init+0x20> : : 00000000004168b0 : 0.00 : 4168b0: ff 25 f2 3c 27 00 jmpq *0x273cf2(%rip) # 68a5a8 0.00 : 4168b6: 68 b2 00 00 00 pushq $0xb2 0.00 : 4168bb: e9 c0 f4 ff ff jmpq 415d80 <_init+0x20> : : 00000000004168c0 : 0.00 : 4168c0: ff 25 ea 3c 27 00 jmpq *0x273cea(%rip) # 68a5b0 0.00 : 4168c6: 68 b3 00 00 00 pushq $0xb3 0.00 : 4168cb: e9 b0 f4 ff ff jmpq 415d80 <_init+0x20> : : 00000000004168d0 : 0.00 : 4168d0: ff 25 e2 3c 27 00 jmpq *0x273ce2(%rip) # 68a5b8 0.00 : 4168d6: 68 b4 00 00 00 pushq $0xb4 0.00 : 4168db: e9 a0 f4 ff ff jmpq 415d80 <_init+0x20> : : 00000000004168e0 : 0.00 : 4168e0: ff 25 da 3c 27 00 jmpq *0x273cda(%rip) # 68a5c0 0.00 : 4168e6: 68 b5 00 00 00 pushq $0xb5 0.00 : 4168eb: e9 90 f4 ff ff jmpq 415d80 <_init+0x20> : : 00000000004168f0 : 0.00 : 4168f0: ff 25 d2 3c 27 00 jmpq *0x273cd2(%rip) # 68a5c8 0.00 : 4168f6: 68 b6 00 00 00 pushq $0xb6 0.00 : 4168fb: e9 80 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416900 <__stack_chk_fail@plt>: 0.00 : 416900: ff 25 ca 3c 27 00 jmpq *0x273cca(%rip) # 68a5d0 0.00 : 416906: 68 b7 00 00 00 pushq $0xb7 0.00 : 41690b: e9 70 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416910 : 0.00 : 416910: ff 25 c2 3c 27 00 jmpq *0x273cc2(%rip) # 68a5d8 0.00 : 416916: 68 b8 00 00 00 pushq $0xb8 0.00 : 41691b: e9 60 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416920 : 0.00 : 416920: ff 25 ba 3c 27 00 jmpq *0x273cba(%rip) # 68a5e0 0.00 : 416926: 68 b9 00 00 00 pushq $0xb9 0.00 : 41692b: e9 50 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416930 : 0.00 : 416930: ff 25 b2 3c 27 00 jmpq *0x273cb2(%rip) # 68a5e8 0.00 : 416936: 68 ba 00 00 00 pushq $0xba 0.00 : 41693b: e9 40 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416940 : 0.00 : 416940: ff 25 aa 3c 27 00 jmpq *0x273caa(%rip) # 68a5f0 0.00 : 416946: 68 bb 00 00 00 pushq $0xbb 0.00 : 41694b: e9 30 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416950 : 0.00 : 416950: ff 25 a2 3c 27 00 jmpq *0x273ca2(%rip) # 68a5f8 0.00 : 416956: 68 bc 00 00 00 pushq $0xbc 0.00 : 41695b: e9 20 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416960 : 0.00 : 416960: ff 25 9a 3c 27 00 jmpq *0x273c9a(%rip) # 68a600 0.00 : 416966: 68 bd 00 00 00 pushq $0xbd 0.00 : 41696b: e9 10 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416970 : 0.00 : 416970: ff 25 92 3c 27 00 jmpq *0x273c92(%rip) # 68a608 0.00 : 416976: 68 be 00 00 00 pushq $0xbe 0.00 : 41697b: e9 00 f4 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416980 : 0.00 : 416980: ff 25 8a 3c 27 00 jmpq *0x273c8a(%rip) # 68a610 0.00 : 416986: 68 bf 00 00 00 pushq $0xbf 0.00 : 41698b: e9 f0 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416990 : 0.00 : 416990: ff 25 82 3c 27 00 jmpq *0x273c82(%rip) # 68a618 0.00 : 416996: 68 c0 00 00 00 pushq $0xc0 0.00 : 41699b: e9 e0 f3 ff ff jmpq 415d80 <_init+0x20> : : 00000000004169a0 : 0.00 : 4169a0: ff 25 7a 3c 27 00 jmpq *0x273c7a(%rip) # 68a620 0.00 : 4169a6: 68 c1 00 00 00 pushq $0xc1 0.00 : 4169ab: e9 d0 f3 ff ff jmpq 415d80 <_init+0x20> : : 00000000004169b0 : 0.00 : 4169b0: ff 25 72 3c 27 00 jmpq *0x273c72(%rip) # 68a628 0.00 : 4169b6: 68 c2 00 00 00 pushq $0xc2 0.00 : 4169bb: e9 c0 f3 ff ff jmpq 415d80 <_init+0x20> : : 00000000004169c0 : 0.00 : 4169c0: ff 25 6a 3c 27 00 jmpq *0x273c6a(%rip) # 68a630 0.00 : 4169c6: 68 c3 00 00 00 pushq $0xc3 0.00 : 4169cb: e9 b0 f3 ff ff jmpq 415d80 <_init+0x20> : : 00000000004169d0 <__ctype_tolower_loc@plt>: 0.00 : 4169d0: ff 25 62 3c 27 00 jmpq *0x273c62(%rip) # 68a638 0.00 : 4169d6: 68 c4 00 00 00 pushq $0xc4 0.00 : 4169db: e9 a0 f3 ff ff jmpq 415d80 <_init+0x20> : : 00000000004169e0 : 0.00 : 4169e0: ff 25 5a 3c 27 00 jmpq *0x273c5a(%rip) # 68a640 0.00 : 4169e6: 68 c5 00 00 00 pushq $0xc5 0.00 : 4169eb: e9 90 f3 ff ff jmpq 415d80 <_init+0x20> : : 00000000004169f0 : 0.00 : 4169f0: ff 25 52 3c 27 00 jmpq *0x273c52(%rip) # 68a648 0.00 : 4169f6: 68 c6 00 00 00 pushq $0xc6 0.00 : 4169fb: e9 80 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a00 : 0.00 : 416a00: ff 25 4a 3c 27 00 jmpq *0x273c4a(%rip) # 68a650 0.00 : 416a06: 68 c7 00 00 00 pushq $0xc7 0.00 : 416a0b: e9 70 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a10 : 0.00 : 416a10: ff 25 42 3c 27 00 jmpq *0x273c42(%rip) # 68a658 0.00 : 416a16: 68 c8 00 00 00 pushq $0xc8 0.00 : 416a1b: e9 60 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a20 : 0.00 : 416a20: ff 25 3a 3c 27 00 jmpq *0x273c3a(%rip) # 68a660 0.00 : 416a26: 68 c9 00 00 00 pushq $0xc9 0.00 : 416a2b: e9 50 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a30 : 0.00 : 416a30: ff 25 32 3c 27 00 jmpq *0x273c32(%rip) # 68a668 0.00 : 416a36: 68 ca 00 00 00 pushq $0xca 0.00 : 416a3b: e9 40 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a40 : 0.00 : 416a40: ff 25 2a 3c 27 00 jmpq *0x273c2a(%rip) # 68a670 0.00 : 416a46: 68 cb 00 00 00 pushq $0xcb 0.00 : 416a4b: e9 30 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a50 : 0.00 : 416a50: ff 25 22 3c 27 00 jmpq *0x273c22(%rip) # 68a678 0.00 : 416a56: 68 cc 00 00 00 pushq $0xcc 0.00 : 416a5b: e9 20 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a60 : 0.00 : 416a60: ff 25 1a 3c 27 00 jmpq *0x273c1a(%rip) # 68a680 0.00 : 416a66: 68 cd 00 00 00 pushq $0xcd 0.00 : 416a6b: e9 10 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a70 : 0.00 : 416a70: ff 25 12 3c 27 00 jmpq *0x273c12(%rip) # 68a688 0.00 : 416a76: 68 ce 00 00 00 pushq $0xce 0.00 : 416a7b: e9 00 f3 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a80 <__lxstat@plt>: 0.00 : 416a80: ff 25 0a 3c 27 00 jmpq *0x273c0a(%rip) # 68a690 0.00 : 416a86: 68 cf 00 00 00 pushq $0xcf 0.00 : 416a8b: e9 f0 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416a90 : 0.00 : 416a90: ff 25 02 3c 27 00 jmpq *0x273c02(%rip) # 68a698 0.00 : 416a96: 68 d0 00 00 00 pushq $0xd0 0.00 : 416a9b: e9 e0 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416aa0 : 0.00 : 416aa0: ff 25 fa 3b 27 00 jmpq *0x273bfa(%rip) # 68a6a0 0.00 : 416aa6: 68 d1 00 00 00 pushq $0xd1 0.00 : 416aab: e9 d0 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416ab0 : 0.00 : 416ab0: ff 25 f2 3b 27 00 jmpq *0x273bf2(%rip) # 68a6a8 0.00 : 416ab6: 68 d2 00 00 00 pushq $0xd2 0.00 : 416abb: e9 c0 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416ac0 : 0.00 : 416ac0: ff 25 ea 3b 27 00 jmpq *0x273bea(%rip) # 68a6b0 0.00 : 416ac6: 68 d3 00 00 00 pushq $0xd3 0.00 : 416acb: e9 b0 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416ad0 : 0.00 : 416ad0: ff 25 e2 3b 27 00 jmpq *0x273be2(%rip) # 68a6b8 0.00 : 416ad6: 68 d4 00 00 00 pushq $0xd4 0.00 : 416adb: e9 a0 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416ae0 <__sprintf_chk@plt>: 0.00 : 416ae0: ff 25 da 3b 27 00 jmpq *0x273bda(%rip) # 68a6c0 0.00 : 416ae6: 68 d5 00 00 00 pushq $0xd5 0.00 : 416aeb: e9 90 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416af0 : 0.00 : 416af0: ff 25 d2 3b 27 00 jmpq *0x273bd2(%rip) # 68a6c8 0.00 : 416af6: 68 d6 00 00 00 pushq $0xd6 0.00 : 416afb: e9 80 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b00 : 0.00 : 416b00: ff 25 ca 3b 27 00 jmpq *0x273bca(%rip) # 68a6d0 0.00 : 416b06: 68 d7 00 00 00 pushq $0xd7 0.00 : 416b0b: e9 70 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b10 : 0.00 : 416b10: ff 25 c2 3b 27 00 jmpq *0x273bc2(%rip) # 68a6d8 0.00 : 416b16: 68 d8 00 00 00 pushq $0xd8 0.00 : 416b1b: e9 60 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b20 <__snprintf_chk@plt>: 0.00 : 416b20: ff 25 ba 3b 27 00 jmpq *0x273bba(%rip) # 68a6e0 0.00 : 416b26: 68 d9 00 00 00 pushq $0xd9 0.00 : 416b2b: e9 50 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b30 : 0.00 : 416b30: ff 25 b2 3b 27 00 jmpq *0x273bb2(%rip) # 68a6e8 0.00 : 416b36: 68 da 00 00 00 pushq $0xda 0.00 : 416b3b: e9 40 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b40 : 0.00 : 416b40: ff 25 aa 3b 27 00 jmpq *0x273baa(%rip) # 68a6f0 0.00 : 416b46: 68 db 00 00 00 pushq $0xdb 0.00 : 416b4b: e9 30 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b50 : 0.00 : 416b50: ff 25 a2 3b 27 00 jmpq *0x273ba2(%rip) # 68a6f8 0.00 : 416b56: 68 dc 00 00 00 pushq $0xdc 0.00 : 416b5b: e9 20 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b60 : 0.00 : 416b60: ff 25 9a 3b 27 00 jmpq *0x273b9a(%rip) # 68a700 0.00 : 416b66: 68 dd 00 00 00 pushq $0xdd 0.00 : 416b6b: e9 10 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b70 : 0.00 : 416b70: ff 25 92 3b 27 00 jmpq *0x273b92(%rip) # 68a708 0.00 : 416b76: 68 de 00 00 00 pushq $0xde 0.00 : 416b7b: e9 00 f2 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b80 : 0.00 : 416b80: ff 25 8a 3b 27 00 jmpq *0x273b8a(%rip) # 68a710 0.00 : 416b86: 68 df 00 00 00 pushq $0xdf 0.00 : 416b8b: e9 f0 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416b90 : 0.00 : 416b90: ff 25 82 3b 27 00 jmpq *0x273b82(%rip) # 68a718 0.00 : 416b96: 68 e0 00 00 00 pushq $0xe0 0.00 : 416b9b: e9 e0 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416ba0 : 0.00 : 416ba0: ff 25 7a 3b 27 00 jmpq *0x273b7a(%rip) # 68a720 0.00 : 416ba6: 68 e1 00 00 00 pushq $0xe1 0.00 : 416bab: e9 d0 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416bb0 <__sigsetjmp@plt>: 0.00 : 416bb0: ff 25 72 3b 27 00 jmpq *0x273b72(%rip) # 68a728 0.00 : 416bb6: 68 e2 00 00 00 pushq $0xe2 0.00 : 416bbb: e9 c0 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416bc0 : 0.00 : 416bc0: ff 25 6a 3b 27 00 jmpq *0x273b6a(%rip) # 68a730 0.00 : 416bc6: 68 e3 00 00 00 pushq $0xe3 0.00 : 416bcb: e9 b0 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416bd0 : 0.00 : 416bd0: ff 25 62 3b 27 00 jmpq *0x273b62(%rip) # 68a738 0.00 : 416bd6: 68 e4 00 00 00 pushq $0xe4 0.00 : 416bdb: e9 a0 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416be0 : 0.00 : 416be0: ff 25 5a 3b 27 00 jmpq *0x273b5a(%rip) # 68a740 0.00 : 416be6: 68 e5 00 00 00 pushq $0xe5 0.00 : 416beb: e9 90 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416bf0 : 0.00 : 416bf0: ff 25 52 3b 27 00 jmpq *0x273b52(%rip) # 68a748 0.00 : 416bf6: 68 e6 00 00 00 pushq $0xe6 0.00 : 416bfb: e9 80 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c00 : 0.00 : 416c00: ff 25 4a 3b 27 00 jmpq *0x273b4a(%rip) # 68a750 0.00 : 416c06: 68 e7 00 00 00 pushq $0xe7 0.00 : 416c0b: e9 70 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c10 : 0.00 : 416c10: ff 25 42 3b 27 00 jmpq *0x273b42(%rip) # 68a758 0.00 : 416c16: 68 e8 00 00 00 pushq $0xe8 0.00 : 416c1b: e9 60 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c20 : 0.00 : 416c20: ff 25 3a 3b 27 00 jmpq *0x273b3a(%rip) # 68a760 0.00 : 416c26: 68 e9 00 00 00 pushq $0xe9 0.00 : 416c2b: e9 50 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c30 : 0.00 : 416c30: ff 25 32 3b 27 00 jmpq *0x273b32(%rip) # 68a768 0.00 : 416c36: 68 ea 00 00 00 pushq $0xea 0.00 : 416c3b: e9 40 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c40 : 0.00 : 416c40: ff 25 2a 3b 27 00 jmpq *0x273b2a(%rip) # 68a770 0.00 : 416c46: 68 eb 00 00 00 pushq $0xeb 0.00 : 416c4b: e9 30 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c50 : 0.00 : 416c50: ff 25 22 3b 27 00 jmpq *0x273b22(%rip) # 68a778 0.00 : 416c56: 68 ec 00 00 00 pushq $0xec 0.00 : 416c5b: e9 20 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c60 : 0.00 : 416c60: ff 25 1a 3b 27 00 jmpq *0x273b1a(%rip) # 68a780 0.00 : 416c66: 68 ed 00 00 00 pushq $0xed 0.00 : 416c6b: e9 10 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c70 : 0.00 : 416c70: ff 25 12 3b 27 00 jmpq *0x273b12(%rip) # 68a788 0.00 : 416c76: 68 ee 00 00 00 pushq $0xee 0.00 : 416c7b: e9 00 f1 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c80 : 0.00 : 416c80: ff 25 0a 3b 27 00 jmpq *0x273b0a(%rip) # 68a790 0.00 : 416c86: 68 ef 00 00 00 pushq $0xef 0.00 : 416c8b: e9 f0 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416c90 : 0.00 : 416c90: ff 25 02 3b 27 00 jmpq *0x273b02(%rip) # 68a798 0.00 : 416c96: 68 f0 00 00 00 pushq $0xf0 0.00 : 416c9b: e9 e0 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416ca0 : 0.00 : 416ca0: ff 25 fa 3a 27 00 jmpq *0x273afa(%rip) # 68a7a0 0.00 : 416ca6: 68 f1 00 00 00 pushq $0xf1 0.00 : 416cab: e9 d0 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416cb0 : 0.00 : 416cb0: ff 25 f2 3a 27 00 jmpq *0x273af2(%rip) # 68a7a8 0.00 : 416cb6: 68 f2 00 00 00 pushq $0xf2 0.00 : 416cbb: e9 c0 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416cc0 : 0.00 : 416cc0: ff 25 ea 3a 27 00 jmpq *0x273aea(%rip) # 68a7b0 0.00 : 416cc6: 68 f3 00 00 00 pushq $0xf3 0.00 : 416ccb: e9 b0 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416cd0 : 0.00 : 416cd0: ff 25 e2 3a 27 00 jmpq *0x273ae2(%rip) # 68a7b8 0.00 : 416cd6: 68 f4 00 00 00 pushq $0xf4 0.00 : 416cdb: e9 a0 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416ce0 : 0.00 : 416ce0: ff 25 da 3a 27 00 jmpq *0x273ada(%rip) # 68a7c0 0.00 : 416ce6: 68 f5 00 00 00 pushq $0xf5 0.00 : 416ceb: e9 90 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416cf0 <_IO_putc@plt>: 0.00 : 416cf0: ff 25 d2 3a 27 00 jmpq *0x273ad2(%rip) # 68a7c8 0.00 : 416cf6: 68 f6 00 00 00 pushq $0xf6 0.00 : 416cfb: e9 80 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416d00 : 0.00 : 416d00: ff 25 ca 3a 27 00 jmpq *0x273aca(%rip) # 68a7d0 0.00 : 416d06: 68 f7 00 00 00 pushq $0xf7 0.00 : 416d0b: e9 70 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416d10 : 0.00 : 416d10: ff 25 c2 3a 27 00 jmpq *0x273ac2(%rip) # 68a7d8 0.00 : 416d16: 68 f8 00 00 00 pushq $0xf8 0.00 : 416d1b: e9 60 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416d20 : 0.00 : 416d20: ff 25 ba 3a 27 00 jmpq *0x273aba(%rip) # 68a7e0 0.00 : 416d26: 68 f9 00 00 00 pushq $0xf9 0.00 : 416d2b: e9 50 f0 ff ff jmpq 415d80 <_init+0x20> : : 0000000000416d30 : 0.00 : 416d30: ff 25 b2 3a 27 00 jmpq *0x273ab2(%rip) # 68a7e8 0.00 : 416d36: 68 fa 00 00 00 pushq $0xfa 0.00 : 416d3b: e9 40 f0 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416270 : ??:0 100.00 : 416270: ff 25 12 40 27 00 jmpq *0x274012(%rip) # 68a288 0.00 : 416276: 68 4e 00 00 00 pushq $0x4e 0.00 : 41627b: e9 00 fb ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416720 : ??:0 100.00 : 416720: ff 25 ba 3d 27 00 jmpq *0x273dba(%rip) # 68a4e0 0.00 : 416726: 68 99 00 00 00 pushq $0x99 0.00 : 41672b: e9 50 f6 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416790 : ??:0 100.00 : 416790: ff 25 82 3d 27 00 jmpq *0x273d82(%rip) # 68a518 0.00 : 416796: 68 a0 00 00 00 pushq $0xa0 0.00 : 41679b: e9 e0 f5 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416970 : ??:0 100.00 : 416970: ff 25 92 3c 27 00 jmpq *0x273c92(%rip) # 68a608 0.00 : 416976: 68 be 00 00 00 pushq $0xbe 0.00 : 41697b: e9 00 f4 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416ce0 : ??:0 100.00 : 416ce0: ff 25 da 3a 27 00 jmpq *0x273ada(%rip) # 68a7c0 0.00 : 416ce6: 68 f5 00 00 00 pushq $0xf5 0.00 : 416ceb: e9 90 f0 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000416d40 <_start>: 0.00 : 416d40: 31 ed xor %ebp,%ebp 0.00 : 416d42: 49 89 d1 mov %rdx,%r9 0.00 : 416d45: 5e pop %rsi 0.00 : 416d46: 48 89 e2 mov %rsp,%rdx 0.00 : 416d49: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp 0.00 : 416d4d: 50 push %rax 0.00 : 416d4e: 54 push %rsp 0.00 : 416d4f: 49 c7 c0 c0 1e 47 00 mov $0x471ec0,%r8 0.00 : 416d56: 48 c7 c1 d0 1e 47 00 mov $0x471ed0,%rcx 0.00 : 416d5d: 48 c7 c7 50 7e 41 00 mov $0x417e50,%rdi 0.00 : 416d64: e8 d7 f3 ff ff callq 416140 <__libc_start_main@plt> 0.00 : 416d69: f4 hlt 0.00 : 416d6a: 66 90 xchg %ax,%ax 0.00 : 416d6c: 48 83 ec 08 sub $0x8,%rsp 0.00 : 416d70: 48 8b 05 81 32 27 00 mov 0x273281(%rip),%rax # 689ff8 0.00 : 416d77: 48 85 c0 test %rax,%rax 0.00 : 416d7a: 74 02 je 416d7e <_start+0x3e> 0.00 : 416d7c: ff d0 callq *%rax 0.00 : 416d7e: 48 83 c4 08 add $0x8,%rsp 0.00 : 416d82: c3 retq 0.00 : 416d83: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 416d8a: 00 00 00 0.00 : 416d8d: 0f 1f 00 nopl (%rax) 0.00 : 416d90: 55 push %rbp 0.00 : 416d91: 48 89 e5 mov %rsp,%rbp 0.00 : 416d94: 53 push %rbx 0.00 : 416d95: 48 83 ec 08 sub $0x8,%rsp 0.00 : 416d99: 80 3d 08 c6 27 00 00 cmpb $0x0,0x27c608(%rip) # 6933a8 ??:0 100.00 : 416da0: 75 4b jne 416ded <_start+0xad> 0.00 : 416da2: b8 28 9e 68 00 mov $0x689e28,%eax 0.00 : 416da7: 48 8b 15 02 c6 27 00 mov 0x27c602(%rip),%rdx # 6933b0 0.00 : 416dae: 48 2d 20 9e 68 00 sub $0x689e20,%rax 0.00 : 416db4: 48 c1 f8 03 sar $0x3,%rax 0.00 : 416db8: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 416dbc: 48 39 da cmp %rbx,%rdx 0.00 : 416dbf: 73 25 jae 416de6 <_start+0xa6> 0.00 : 416dc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 416dc8: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 416dcc: 48 89 05 dd c5 27 00 mov %rax,0x27c5dd(%rip) # 6933b0 0.00 : 416dd3: ff 14 c5 20 9e 68 00 callq *0x689e20(,%rax,8) 0.00 : 416dda: 48 8b 15 cf c5 27 00 mov 0x27c5cf(%rip),%rdx # 6933b0 0.00 : 416de1: 48 39 da cmp %rbx,%rdx 0.00 : 416de4: 72 e2 jb 416dc8 <_start+0x88> 0.00 : 416de6: c6 05 bb c5 27 00 01 movb $0x1,0x27c5bb(%rip) # 6933a8 0.00 : 416ded: 48 83 c4 08 add $0x8,%rsp 0.00 : 416df1: 5b pop %rbx 0.00 : 416df2: c9 leaveq 0.00 : 416df3: c3 retq 0.00 : 416df4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 416dfb: 00 00 00 00 00 0.00 : 416e00: 55 push %rbp 0.00 : 416e01: 48 83 3d 27 30 27 00 cmpq $0x0,0x273027(%rip) # 689e30 0.00 : 416e08: 00 0.00 : 416e09: 48 89 e5 mov %rsp,%rbp 0.00 : 416e0c: 74 1a je 416e28 <_start+0xe8> 0.00 : 416e0e: b8 00 00 00 00 mov $0x0,%eax 0.00 : 416e13: 48 85 c0 test %rax,%rax 0.00 : 416e16: 74 10 je 416e28 <_start+0xe8> 0.00 : 416e18: bf 30 9e 68 00 mov $0x689e30,%edi 0.00 : 416e1d: 49 89 c3 mov %rax,%r11 0.00 : 416e20: c9 leaveq 0.00 : 416e21: 41 ff e3 jmpq *%r11 0.00 : 416e24: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 416e28: c9 leaveq 0.00 : 416e29: c3 retq 0.00 : 416e2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000419280 : ??:0 100.00 : 419280: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 419285: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 41928a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41928f: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 419294: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 419299: 48 83 ec 28 sub $0x28,%rsp 0.00 : 41929d: e8 9e 07 00 00 callq 419a40 0.00 : 4192a2: 8b 35 2c a1 27 00 mov 0x27a12c(%rip),%esi # 6933d4 0.00 : 4192a8: 48 c7 05 0d a1 27 00 movq $0x0,0x27a10d(%rip) # 6933c0 0.00 : 4192af: 00 00 00 00 0.00 : 4192b3: 85 f6 test %esi,%esi 0.00 : 4192b5: 0f 85 95 00 00 00 jne 419350 0.00 : 4192bb: 45 31 e4 xor %r12d,%r12d 0.00 : 4192be: 45 31 ed xor %r13d,%r13d 0.00 : 4192c1: 31 ed xor %ebp,%ebp 0.00 : 4192c3: 8b 05 77 cc 27 00 mov 0x27cc77(%rip),%eax # 695f40 0.00 : 4192c9: 85 c0 test %eax,%eax 0.00 : 4192cb: 75 73 jne 419340 0.00 : 4192cd: 8b 05 65 cc 27 00 mov 0x27cc65(%rip),%eax # 695f38 0.00 : 4192d3: 85 c0 test %eax,%eax 0.00 : 4192d5: 75 59 jne 419330 0.00 : 4192d7: c7 05 47 d7 27 00 00 movl $0x0,0x27d747(%rip) # 696a28 0.00 : 4192de: 00 00 00 0.00 : 4192e1: e8 ea fe ff ff callq 4191d0 0.00 : 4192e6: 8b 0d e8 a0 27 00 mov 0x27a0e8(%rip),%ecx # 6933d4 0.00 : 4192ec: 89 c3 mov %eax,%ebx 0.00 : 4192ee: 85 c9 test %ecx,%ecx 0.00 : 4192f0: 74 20 je 419312 0.00 : 4192f2: 40 84 ed test %bpl,%bpl 0.00 : 4192f5: 74 1b je 419312 0.00 : 4192f7: 45 85 e4 test %r12d,%r12d 0.00 : 4192fa: 7e 16 jle 419312 0.00 : 4192fc: 31 ff xor %edi,%edi 0.00 : 4192fe: 66 90 xchg %ax,%ax 0.00 : 419300: e8 db d4 ff ff callq 4167e0 0.00 : 419305: 4c 89 ee mov %r13,%rsi 0.00 : 419308: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 41930d: e8 4e e7 02 00 callq 447a60 0.00 : 419312: 89 d8 mov %ebx,%eax 0.00 : 419314: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 419319: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 41931e: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 419323: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 419328: 48 83 c4 28 add $0x28,%rsp 0.00 : 41932c: c3 retq 0.00 : 41932d: 0f 1f 00 nopl (%rax) 0.00 : 419330: e8 5b ea 02 00 callq 447d90 0.00 : 419335: eb a0 jmp 4192d7 0.00 : 419337: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 41933e: 00 00 0.00 : 419340: 8b 3d fa cb 27 00 mov 0x27cbfa(%rip),%edi # 695f40 0.00 : 419346: e8 45 e8 02 00 callq 447b90 0.00 : 41934b: eb 80 jmp 4192cd 0.00 : 41934d: 0f 1f 00 nopl (%rax) 0.00 : 419350: bf 8e 25 47 00 mov $0x47258e,%edi 0.00 : 419355: e8 36 26 01 00 callq 42b990 0.00 : 41935a: 48 85 c0 test %rax,%rax 0.00 : 41935d: 0f 84 58 ff ff ff je 4192bb 0.00 : 419363: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 419367: 48 85 ff test %rdi,%rdi 0.00 : 41936a: 74 4c je 4193b8 0.00 : 41936c: 31 f6 xor %esi,%esi 0.00 : 41936e: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 419373: 45 31 ed xor %r13d,%r13d 0.00 : 419376: e8 c5 d2 ff ff callq 416640 0.00 : 41937b: 85 c0 test %eax,%eax 0.00 : 41937d: 48 89 c3 mov %rax,%rbx 0.00 : 419380: 41 89 c4 mov %eax,%r12d 0.00 : 419383: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 419388: 0f 8e 35 ff ff ff jle 4192c3 0.00 : 41938e: be 90 91 41 00 mov $0x419190,%esi 0.00 : 419393: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 419398: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 41939d: e8 be e6 02 00 callq 447a60 0.00 : 4193a2: 89 df mov %ebx,%edi 0.00 : 4193a4: 49 89 c5 mov %rax,%r13 0.00 : 4193a7: e8 34 d4 ff ff callq 4167e0 0.00 : 4193ac: e9 12 ff ff ff jmpq 4192c3 0.00 : 4193b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4193b8: 45 31 e4 xor %r12d,%r12d 0.00 : 4193bb: 45 31 ed xor %r13d,%r13d 0.00 : 4193be: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 4193c3: e9 fb fe ff ff jmpq 4192c3 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000041a4b0 : 0.00 : 41a4b0: 53 push %rbx ??:0 100.00 : 41a4b1: 48 8b 1d d0 8f 27 00 mov 0x278fd0(%rip),%rbx # 693488 0.00 : 41a4b8: 48 85 db test %rbx,%rbx 0.00 : 41a4bb: 74 5b je 41a518 0.00 : 41a4bd: 48 8b 03 mov (%rbx),%rax 0.00 : 41a4c0: 48 8b 4b 10 mov 0x10(%rbx),%rcx 0.00 : 41a4c4: 8b 53 08 mov 0x8(%rbx),%edx 0.00 : 41a4c7: 48 8b 73 28 mov 0x28(%rbx),%rsi 0.00 : 41a4cb: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 41a4cf: 4c 8b 43 18 mov 0x18(%rbx),%r8 0.00 : 41a4d3: c7 05 8f 8f 27 00 00 movl $0x0,0x278f8f(%rip) # 69346c 0.00 : 41a4da: 00 00 00 0.00 : 41a4dd: 48 89 05 a4 8f 27 00 mov %rax,0x278fa4(%rip) # 693488 0.00 : 41a4e4: e8 87 fa ff ff callq 419f70 0.00 : 41a4e9: 83 3d 50 c5 27 00 04 cmpl $0x4,0x27c550(%rip) # 696a40 0.00 : 41a4f0: 74 36 je 41a528 0.00 : 41a4f2: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 41a4f6: 8b 43 30 mov 0x30(%rbx),%eax 0.00 : 41a4f9: 48 85 ff test %rdi,%rdi 0.00 : 41a4fc: 89 05 82 8f 27 00 mov %eax,0x278f82(%rip) # 693484 0.00 : 41a502: 74 05 je 41a509 0.00 : 41a504: e8 b7 be ff ff callq 4163c0 0.00 : 41a509: 48 89 df mov %rbx,%rdi 0.00 : 41a50c: 5b pop %rbx 0.00 : 41a50d: e9 ae be ff ff jmpq 4163c0 0.00 : 41a512: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 41a518: c7 05 4a 8f 27 00 01 movl $0x1,0x278f4a(%rip) # 69346c 0.00 : 41a51f: 00 00 00 0.00 : 41a522: 5b pop %rbx 0.00 : 41a523: c3 retq 0.00 : 41a524: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 41a528: 8b 3d 22 c5 27 00 mov 0x27c522(%rip),%edi # 696a50 0.00 : 41a52e: 85 ff test %edi,%edi 0.00 : 41a530: 78 c0 js 41a4f2 0.00 : 41a532: 44 8b 1d 47 ce 27 00 mov 0x27ce47(%rip),%r11d # 697380 0.00 : 41a539: 45 85 db test %r11d,%r11d 0.00 : 41a53c: 74 39 je 41a577 0.00 : 41a53e: 8b 0d 5c 05 27 00 mov 0x27055c(%rip),%ecx # 68aaa0 0.00 : 41a544: c7 05 32 ce 27 00 00 movl $0x0,0x27ce32(%rip) # 697380 0.00 : 41a54b: 00 00 00 0.00 : 41a54e: 85 c9 test %ecx,%ecx 0.00 : 41a550: 78 25 js 41a577 0.00 : 41a552: 89 0d f8 c4 27 00 mov %ecx,0x27c4f8(%rip) # 696a50 0.00 : 41a558: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 41a55c: 89 cf mov %ecx,%edi 0.00 : 41a55e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 41a563: be 02 00 00 00 mov $0x2,%esi 0.00 : 41a568: 89 08 mov %ecx,(%rax) 0.00 : 41a56a: 31 c0 xor %eax,%eax 0.00 : 41a56c: e8 4f c7 ff ff callq 416cc0 0.00 : 41a571: 8b 3d d9 c4 27 00 mov 0x27c4d9(%rip),%edi # 696a50 0.00 : 41a577: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 41a57b: e8 a0 bf 02 00 callq 446520 0.00 : 41a580: e9 6d ff ff ff jmpq 41a4f2 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000041f580 : 0.00 : 41f580: 41 57 push %r15 0.00 : 41f582: 41 56 push %r14 0.00 : 41f584: 41 55 push %r13 0.00 : 41f586: 49 89 d5 mov %rdx,%r13 0.00 : 41f589: 41 54 push %r12 0.00 : 41f58b: 41 89 f4 mov %esi,%r12d 0.00 : 41f58e: 55 push %rbp 0.00 : 41f58f: 53 push %rbx 0.00 : 41f590: 48 89 fb mov %rdi,%rbx 0.00 : 41f593: 48 83 ec 18 sub $0x18,%rsp 0.00 : 41f597: 8b 05 63 c1 26 00 mov 0x26c163(%rip),%eax # 68b700 0.00 : 41f59d: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 41f5a1: 8b 05 49 7f 27 00 mov 0x277f49(%rip),%eax # 6974f0 0.00 : 41f5a7: 89 44 24 14 mov %eax,0x14(%rsp) 0.00 : 41f5ab: e8 b0 dd 02 00 callq 44d360 0.00 : 41f5b0: 8b 05 72 74 27 00 mov 0x277472(%rip),%eax # 696a28 ??:0 100.00 : 41f5b6: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41f5bb: 8b 2d c3 3e 27 00 mov 0x273ec3(%rip),%ebp # 693484 0.00 : 41f5c1: 44 8b 3d 54 55 27 00 mov 0x275554(%rip),%r15d # 694b1c 0.00 : 41f5c8: 44 8b 35 99 3e 27 00 mov 0x273e99(%rip),%r14d # 693468 0.00 : 41f5cf: 89 44 24 0c mov %eax,0xc(%rsp) 0.00 : 41f5d3: 8b 05 83 3f 27 00 mov 0x273f83(%rip),%eax # 69355c 0.00 : 41f5d9: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 41f5dd: e8 ae af ff ff callq 41a590 0.00 : 41f5e2: 4c 89 ee mov %r13,%rsi 0.00 : 41f5e5: 48 89 df mov %rbx,%rdi 0.00 : 41f5e8: c7 05 aa 41 27 00 17 movl $0x117,0x2741aa(%rip) # 69379c 0.00 : 41f5ef: 01 00 00 0.00 : 41f5f2: c7 05 2c 74 27 00 00 movl $0x0,0x27742c(%rip) # 696a28 0.00 : 41f5f9: 00 00 00 0.00 : 41f5fc: c7 05 62 3e 27 00 00 movl $0x0,0x273e62(%rip) # 693468 0.00 : 41f603: 00 00 00 0.00 : 41f606: c7 05 0c 55 27 00 00 movl $0x0,0x27550c(%rip) # 694b1c 0.00 : 41f60d: 00 00 00 0.00 : 41f610: e8 1b aa ff ff callq 41a030 0.00 : 41f615: 41 83 e4 01 and $0x1,%r12d 0.00 : 41f619: 74 0a je 41f625 0.00 : 41f61b: 81 0d 83 41 27 00 00 orl $0x2000,0x274183(%rip) # 6937a8 0.00 : 41f622: 20 00 00 0.00 : 41f625: 45 31 ed xor %r13d,%r13d 0.00 : 41f628: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41f62f: 00 0.00 : 41f630: 31 ff xor %edi,%edi 0.00 : 41f632: e8 39 d4 ff ff callq 41ca70 0.00 : 41f637: 3d 29 01 00 00 cmp $0x129,%eax 0.00 : 41f63c: 89 c2 mov %eax,%edx 0.00 : 41f63e: 74 3c je 41f67c 0.00 : 41f640: 83 fa 0a cmp $0xa,%edx 0.00 : 41f643: 74 2b je 41f670 0.00 : 41f645: 8d 82 e9 fe ff ff lea -0x117(%rdx),%eax 0.00 : 41f64b: 83 f8 01 cmp $0x1,%eax 0.00 : 41f64e: 0f 87 e6 00 00 00 ja 41f73a 0.00 : 41f654: 48 8b 3d 15 74 27 00 mov 0x277415(%rip),%rdi # 696a70 0.00 : 41f65b: 4c 89 ee mov %r13,%rsi 0.00 : 41f65e: e8 8d 38 00 00 callq 422ef0 0.00 : 41f663: 49 89 c5 mov %rax,%r13 0.00 : 41f666: eb c8 jmp 41f630 0.00 : 41f668: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41f66f: 00 0.00 : 41f670: 48 8b 05 d9 73 27 00 mov 0x2773d9(%rip),%rax # 696a50 0.00 : 41f677: 80 38 00 cmpb $0x0,(%rax) 0.00 : 41f67a: 75 b4 jne 41f630 0.00 : 41f67c: c7 05 16 41 27 00 0a movl $0xa,0x274116(%rip) # 69379c 0.00 : 41f683: 00 00 00 0.00 : 41f686: e8 25 ae ff ff callq 41a4b0 0.00 : 41f68b: 8b 44 24 10 mov 0x10(%rsp),%eax 0.00 : 41f68f: 45 85 e4 test %r12d,%r12d 0.00 : 41f692: 44 89 3d 83 54 27 00 mov %r15d,0x275483(%rip) # 694b1c 0.00 : 41f699: 44 89 35 c8 3d 27 00 mov %r14d,0x273dc8(%rip) # 693468 0.00 : 41f6a0: 89 05 5a c0 26 00 mov %eax,0x26c05a(%rip) # 68b700 0.00 : 41f6a6: 8b 44 24 14 mov 0x14(%rsp),%eax 0.00 : 41f6aa: 89 05 40 7e 27 00 mov %eax,0x277e40(%rip) # 6974f0 0.00 : 41f6b0: 8b 44 24 0c mov 0xc(%rsp),%eax 0.00 : 41f6b4: 89 05 6e 73 27 00 mov %eax,0x27736e(%rip) # 696a28 0.00 : 41f6ba: 8b 44 24 08 mov 0x8(%rsp),%eax 0.00 : 41f6be: 89 05 98 3e 27 00 mov %eax,0x273e98(%rip) # 69355c 0.00 : 41f6c4: 74 0a je 41f6d0 0.00 : 41f6c6: 81 25 d8 40 27 00 ff andl $0xffffdfff,0x2740d8(%rip) # 6937a8 0.00 : 41f6cd: df ff ff 0.00 : 41f6d0: 49 81 fd d0 37 69 00 cmp $0x6937d0,%r13 0.00 : 41f6d7: 74 39 je 41f712 0.00 : 41f6d9: 4d 85 ed test %r13,%r13 0.00 : 41f6dc: 74 22 je 41f700 0.00 : 41f6de: 49 83 7d 00 00 cmpq $0x0,0x0(%r13) 0.00 : 41f6e3: 74 1b je 41f700 0.00 : 41f6e5: 48 83 c4 18 add $0x18,%rsp 0.00 : 41f6e9: 4c 89 ef mov %r13,%rdi 0.00 : 41f6ec: 31 c0 xor %eax,%eax 0.00 : 41f6ee: 5b pop %rbx 0.00 : 41f6ef: 5d pop %rbp 0.00 : 41f6f0: 41 5c pop %r12 0.00 : 41f6f2: 41 5d pop %r13 0.00 : 41f6f4: 41 5e pop %r14 0.00 : 41f6f6: 41 5f pop %r15 0.00 : 41f6f8: e9 d3 31 03 00 jmpq 4528d0 0.00 : 41f6fd: 0f 1f 00 nopl (%rax) 0.00 : 41f700: 48 83 c4 18 add $0x18,%rsp 0.00 : 41f704: 4c 89 e8 mov %r13,%rax 0.00 : 41f707: 5b pop %rbx 0.00 : 41f708: 5d pop %rbp 0.00 : 41f709: 41 5c pop %r12 0.00 : 41f70b: 41 5d pop %r13 0.00 : 41f70d: 41 5e pop %r14 0.00 : 41f70f: 41 5f pop %r15 0.00 : 41f711: c3 retq 0.00 : 41f712: 8b 05 c0 3c 27 00 mov 0x273cc0(%rip),%eax # 6933d8 0.00 : 41f718: c7 05 82 73 27 00 01 movl $0x1,0x277382(%rip) # 696aa4 0.00 : 41f71f: 00 00 00 0.00 : 41f722: 85 c0 test %eax,%eax 0.00 : 41f724: 75 0a jne 41f730 0.00 : 41f726: 8b 05 dc 3c 27 00 mov 0x273cdc(%rip),%eax # 693408 0.00 : 41f72c: 85 c0 test %eax,%eax 0.00 : 41f72e: 75 4a jne 41f77a 0.00 : 41f730: bf 02 00 00 00 mov $0x2,%edi 0.00 : 41f735: e8 e6 85 02 00 callq 447d20 0.00 : 41f73a: 03 2d 44 3d 27 00 add 0x273d44(%rip),%ebp # 693484 0.00 : 41f740: 8b 1d 52 40 27 00 mov 0x274052(%rip),%ebx # 693798 0.00 : 41f746: 31 ff xor %edi,%edi 0.00 : 41f748: 89 15 4a 40 27 00 mov %edx,0x27404a(%rip) # 693798 0.00 : 41f74e: 8d 45 ff lea -0x1(%rbp),%eax 0.00 : 41f751: 89 05 2d 3d 27 00 mov %eax,0x273d2d(%rip) # 693484 0.00 : 41f757: e8 54 a9 ff ff callq 41a0b0 0.00 : 41f75c: 4d 85 ed test %r13,%r13 0.00 : 41f75f: 89 1d 33 40 27 00 mov %ebx,0x274033(%rip) # 693798 0.00 : 41f765: 74 08 je 41f76f 0.00 : 41f767: 4c 89 ef mov %r13,%rdi 0.00 : 41f76a: e8 91 62 00 00 callq 425a00 0.00 : 41f76f: 41 bd d0 37 69 00 mov $0x6937d0,%r13d 0.00 : 41f775: e9 02 ff ff ff jmpq 41f67c 0.00 : 41f77a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41f77f: e8 9c 85 02 00 callq 447d20 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004244e0 : ??:0 50.00 : 4244e0: 53 push %rbx 50.00 : 4244e1: 48 89 fb mov %rdi,%rbx 0.00 : 4244e4: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 4244e8: be 43 59 47 00 mov $0x475943,%esi 0.00 : 4244ed: e8 fe f7 ff ff callq 423cf0 0.00 : 4244f2: 48 83 7b 10 00 cmpq $0x0,0x10(%rbx) 0.00 : 4244f7: 74 17 je 424510 0.00 : 4244f9: bf 43 59 47 00 mov $0x475943,%edi 0.00 : 4244fe: 31 c0 xor %eax,%eax 0.00 : 424500: e8 1b f5 ff ff callq 423a20 0.00 : 424505: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 424509: 5b pop %rbx 0.00 : 42450a: e9 c1 fe ff ff jmpq 4243d0 0.00 : 42450f: 90 nop 0.00 : 424510: 5b pop %rbx Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000425950 : 0.00 : 425950: 41 54 push %r12 ??:0 100.00 : 425952: 48 85 ff test %rdi,%rdi 0.00 : 425955: 55 push %rbp 0.00 : 425956: 53 push %rbx 0.00 : 425957: 48 89 fb mov %rdi,%rbx 0.00 : 42595a: 74 4f je 4259ab 0.00 : 42595c: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 425962: eb 07 jmp 42596b 0.00 : 425964: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 425968: 48 89 eb mov %rbp,%rbx 0.00 : 42596b: 83 7b 10 12 cmpl $0x12,0x10(%rbx) 0.00 : 42596f: 48 8b 2b mov (%rbx),%rbp 0.00 : 425972: 77 2a ja 42599e 0.00 : 425974: 48 63 4b 10 movslq 0x10(%rbx),%rcx 0.00 : 425978: 4c 89 e0 mov %r12,%rax 0.00 : 42597b: 48 d3 e0 shl %cl,%rax 0.00 : 42597e: a9 2f 7c 06 00 test $0x67c2f,%eax 0.00 : 425983: 75 10 jne 425995 0.00 : 425985: a9 10 01 00 00 test $0x110,%eax 0.00 : 42598a: 74 12 je 42599e 0.00 : 42598c: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 425990: e8 2b 0a ff ff callq 4163c0 0.00 : 425995: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 425999: e8 22 ff ff ff callq 4258c0 0.00 : 42599e: 48 89 df mov %rbx,%rdi 0.00 : 4259a1: e8 1a 0a ff ff callq 4163c0 0.00 : 4259a6: 48 85 ed test %rbp,%rbp 0.00 : 4259a9: 75 bd jne 425968 0.00 : 4259ab: 5b pop %rbx 0.00 : 4259ac: 5d pop %rbp 0.00 : 4259ad: 41 5c pop %r12 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000425ab0 : 0.00 : 425ab0: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 425ab5: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 425aba: 49 89 fc mov %rdi,%r12 0.00 : 425abd: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 425ac2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 425ac7: 48 83 ec 28 sub $0x28,%rsp 0.00 : 425acb: 48 85 ff test %rdi,%rdi 0.00 : 425ace: 0f 84 14 02 00 00 je 425ce8 0.00 : 425ad4: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 425ad8: 48 85 ff test %rdi,%rdi 0.00 : 425adb: 74 05 je 425ae2 0.00 : 425add: e8 6e fe ff ff callq 425950 0.00 : 425ae2: 41 8b 14 24 mov (%r12),%edx 0.00 : 425ae6: 83 fa 0d cmp $0xd,%edx 0.00 : 425ae9: 76 35 jbe 425b20 0.00 : 425aeb: 31 c9 xor %ecx,%ecx 0.00 : 425aed: be 01 00 00 00 mov $0x1,%esi 0.00 : 425af2: bf a0 46 47 00 mov $0x4746a0,%edi 0.00 : 425af7: e8 34 ac 00 00 callq 430730 0.00 : 425afc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 425b00: 4c 89 e7 mov %r12,%rdi 0.00 : 425b03: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 425b08: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 425b0d: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 425b12: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 425b17: 48 83 c4 28 add $0x28,%rsp 0.00 : 425b1b: e9 a0 08 ff ff jmpq 4163c0 0.00 : 425b20: 89 d0 mov %edx,%eax 0.00 : 425b22: ff 24 c5 b0 46 47 00 jmpq *0x4746b0(,%rax,8) 0.00 : 425b29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 425b30: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 425b35: 48 8b 7b 08 mov 0x8(%rbx),%rdi ??:0 100.00 : 425b39: e8 72 ff ff ff callq 425ab0 0.00 : 425b3e: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 425b42: e8 69 ff ff ff callq 425ab0 0.00 : 425b47: 48 89 df mov %rbx,%rdi 0.00 : 425b4a: e8 71 08 ff ff callq 4163c0 0.00 : 425b4f: eb af jmp 425b00 0.00 : 425b51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 425b58: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 425b5d: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 425b61: e8 4a ff ff ff callq 425ab0 0.00 : 425b66: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 425b6b: e8 50 08 ff ff callq 4163c0 0.00 : 425b70: eb 8e jmp 425b00 0.00 : 425b72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 425b78: 4d 8b 6c 24 18 mov 0x18(%r12),%r13 0.00 : 425b7d: 49 8b 7d 08 mov 0x8(%r13),%rdi 0.00 : 425b81: e8 3a fd ff ff callq 4258c0 0.00 : 425b86: 49 8b 5d 10 mov 0x10(%r13),%rbx 0.00 : 425b8a: 48 85 db test %rbx,%rbx 0.00 : 425b8d: 75 0c jne 425b9b 0.00 : 425b8f: eb 2c jmp 425bbd 0.00 : 425b91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 425b98: 48 89 eb mov %rbp,%rbx 0.00 : 425b9b: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 425b9f: e8 5c fe ff ff callq 425a00 0.00 : 425ba4: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 425ba8: e8 03 ff ff ff callq 425ab0 0.00 : 425bad: 48 8b 2b mov (%rbx),%rbp 0.00 : 425bb0: 48 89 df mov %rbx,%rdi 0.00 : 425bb3: e8 08 08 ff ff callq 4163c0 0.00 : 425bb8: 48 85 ed test %rbp,%rbp 0.00 : 425bbb: 75 db jne 425b98 0.00 : 425bbd: 4c 89 ef mov %r13,%rdi 0.00 : 425bc0: e8 fb 07 ff ff callq 4163c0 0.00 : 425bc5: e9 36 ff ff ff jmpq 425b00 0.00 : 425bca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 425bd0: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 425bd5: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 425bd9: e8 22 fe ff ff callq 425a00 0.00 : 425bde: 48 89 df mov %rbx,%rdi 0.00 : 425be1: e8 da 07 ff ff callq 4163c0 0.00 : 425be6: e9 15 ff ff ff jmpq 425b00 0.00 : 425beb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 425bf0: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 425bf5: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 425bf9: e8 02 fe ff ff callq 425a00 0.00 : 425bfe: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 425c02: e8 f9 fd ff ff callq 425a00 0.00 : 425c07: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 425c0b: e8 f0 fd ff ff callq 425a00 0.00 : 425c10: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 425c14: e8 97 fe ff ff callq 425ab0 0.00 : 425c19: 48 89 df mov %rbx,%rdi 0.00 : 425c1c: e8 9f 07 ff ff callq 4163c0 0.00 : 425c21: e9 da fe ff ff jmpq 425b00 0.00 : 425c26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 425c2d: 00 00 00 0.00 : 425c30: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 425c35: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 425c39: e8 82 fc ff ff callq 4258c0 0.00 : 425c3e: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 425c42: e8 b9 fd ff ff callq 425a00 0.00 : 425c47: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 425c4b: e8 60 fe ff ff callq 425ab0 0.00 : 425c50: 48 89 df mov %rbx,%rdi 0.00 : 425c53: e8 68 07 ff ff callq 4163c0 0.00 : 425c58: e9 a3 fe ff ff jmpq 425b00 0.00 : 425c5d: 0f 1f 00 nopl (%rax) 0.00 : 425c60: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 425c65: e8 46 fd ff ff callq 4259b0 0.00 : 425c6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 425c70: e9 8b fe ff ff jmpq 425b00 0.00 : 425c75: 0f 1f 00 nopl (%rax) 0.00 : 425c78: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 425c7d: e8 be 00 00 00 callq 425d40 0.00 : 425c82: e9 79 fe ff ff jmpq 425b00 0.00 : 425c87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 425c8e: 00 00 0.00 : 425c90: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 425c95: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 425c99: e8 62 fd ff ff callq 425a00 0.00 : 425c9e: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 425ca2: e8 a9 fc ff ff callq 425950 0.00 : 425ca7: 48 89 df mov %rbx,%rdi 0.00 : 425caa: e8 11 07 ff ff callq 4163c0 0.00 : 425caf: e9 4c fe ff ff jmpq 425b00 0.00 : 425cb4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 425cb8: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 425cbd: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 425cc1: e8 ea fd ff ff callq 425ab0 0.00 : 425cc6: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 425cca: e8 e1 fd ff ff callq 425ab0 0.00 : 425ccf: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 425cd3: e8 d8 fd ff ff callq 425ab0 0.00 : 425cd8: 48 89 df mov %rbx,%rdi 0.00 : 425cdb: e8 e0 06 ff ff callq 4163c0 0.00 : 425ce0: e9 1b fe ff ff jmpq 425b00 0.00 : 425ce5: 0f 1f 00 nopl (%rax) 0.00 : 425ce8: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 425ced: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 425cf2: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 425cf7: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 425cfc: 48 83 c4 28 add $0x28,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042b880 : ??:0 50.00 : 42b880: 48 83 ec 08 sub $0x8,%rsp 50.00 : 42b884: 48 8b 35 e5 90 26 00 mov 0x2690e5(%rip),%rsi # 694970 0.00 : 42b88b: 31 d2 xor %edx,%edx 0.00 : 42b88d: e8 7e 8e 01 00 callq 444710 0.00 : 42b892: 31 d2 xor %edx,%edx 0.00 : 42b894: 48 85 c0 test %rax,%rax 0.00 : 42b897: 74 04 je 42b89d 0.00 : 42b899: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 42b89d: 48 89 d0 mov %rdx,%rax 0.00 : 42b8a0: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042d3c0 : 0.00 : 42d3c0: 41 57 push %r15 0.00 : 42d3c2: 41 89 f7 mov %esi,%r15d 0.00 : 42d3c5: 41 56 push %r14 0.00 : 42d3c7: 41 55 push %r13 0.00 : 42d3c9: 41 54 push %r12 0.00 : 42d3cb: 55 push %rbp 0.00 : 42d3cc: 53 push %rbx 0.00 : 42d3cd: 48 83 ec 38 sub $0x38,%rsp 0.00 : 42d3d1: 48 89 3c 24 mov %rdi,(%rsp) 0.00 : 42d3d5: bf a0 25 47 00 mov $0x4725a0,%edi 0.00 : 42d3da: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax 0.00 : 42d3e1: 00 00 ??:0 50.00 : 42d3e3: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 42d3e8: 31 c0 xor %eax,%eax 0.00 : 42d3ea: e8 a1 e5 ff ff callq 42b990 0.00 : 42d3ef: 48 85 c0 test %rax,%rax 0.00 : 42d3f2: 0f 84 80 01 00 00 je 42d578 0.00 : 42d3f8: f6 40 28 04 testb $0x4,0x28(%rax) 50.00 : 42d3fc: 0f 84 ce 00 00 00 je 42d4d0 0.00 : 42d402: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 42d406: 4d 85 e4 test %r12,%r12 0.00 : 42d409: 0f 84 e9 00 00 00 je 42d4f8 0.00 : 42d40f: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 42d414: 48 85 c0 test %rax,%rax 0.00 : 42d417: 0f 84 db 00 00 00 je 42d4f8 0.00 : 42d41d: 49 63 d7 movslq %r15d,%rdx 0.00 : 42d420: 48 39 d0 cmp %rdx,%rax 0.00 : 42d423: 0f 84 17 01 00 00 je 42d540 0.00 : 42d429: 48 39 d0 cmp %rdx,%rax 0.00 : 42d42c: 0f 8f 5e 01 00 00 jg 42d590 0.00 : 42d432: 45 31 f6 xor %r14d,%r14d 0.00 : 42d435: 48 85 c0 test %rax,%rax 0.00 : 42d438: 49 8b 6c 24 18 mov 0x18(%r12),%rbp 0.00 : 42d43d: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 42d442: 7e 34 jle 42d478 0.00 : 42d444: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42d448: 48 8b 6d 10 mov 0x10(%rbp),%rbp 0.00 : 42d44c: 41 89 de mov %ebx,%r14d 0.00 : 42d44f: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 42d453: e8 68 8f fe ff callq 4163c0 0.00 : 42d458: 48 8b 04 24 mov (%rsp),%rax 0.00 : 42d45c: 48 63 7c 98 fc movslq -0x4(%rax,%rbx,4),%rdi 0.00 : 42d461: e8 da c1 03 00 callq 469640 0.00 : 42d466: 48 89 45 08 mov %rax,0x8(%rbp) 0.00 : 42d46a: 48 89 d8 mov %rbx,%rax 0.00 : 42d46d: 48 83 c3 01 add $0x1,%rbx 0.00 : 42d471: 49 39 44 24 10 cmp %rax,0x10(%r12) 0.00 : 42d476: 7f d0 jg 42d448 0.00 : 42d478: 45 39 f7 cmp %r14d,%r15d 0.00 : 42d47b: 7e 53 jle 42d4d0 0.00 : 42d47d: 48 8b 04 24 mov (%rsp),%rax 0.00 : 42d481: 49 63 d6 movslq %r14d,%rdx 0.00 : 42d484: 4c 8d 6c 24 10 lea 0x10(%rsp),%r13 0.00 : 42d489: 48 89 54 24 08 mov %rdx,0x8(%rsp) 0.00 : 42d48e: 31 db xor %ebx,%ebx 0.00 : 42d490: 48 8d 2c 90 lea (%rax,%rdx,4),%rbp 0.00 : 42d494: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42d498: 48 63 7d 00 movslq 0x0(%rbp),%rdi 0.00 : 42d49c: ba 0c 00 00 00 mov $0xc,%edx 0.00 : 42d4a1: 4c 89 ee mov %r13,%rsi 0.00 : 42d4a4: 48 83 c5 04 add $0x4,%rbp 0.00 : 42d4a8: e8 03 c1 03 00 callq 4695b0 0.00 : 42d4ad: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : 42d4b2: 48 89 c2 mov %rax,%rdx 0.00 : 42d4b5: 4c 89 e7 mov %r12,%rdi 0.00 : 42d4b8: 48 01 de add %rbx,%rsi 0.00 : 42d4bb: 48 83 c3 01 add $0x1,%rbx 0.00 : 42d4bf: e8 fc d2 01 00 callq 44a7c0 0.00 : 42d4c4: 41 8d 04 1e lea (%r14,%rbx,1),%eax 0.00 : 42d4c8: 41 39 c7 cmp %eax,%r15d 0.00 : 42d4cb: 7f cb jg 42d498 0.00 : 42d4cd: 0f 1f 00 nopl (%rax) 0.00 : 42d4d0: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 42d4d5: 64 48 33 04 25 28 00 xor %fs:0x28,%rax 0.00 : 42d4dc: 00 00 0.00 : 42d4de: 0f 85 00 01 00 00 jne 42d5e4 0.00 : 42d4e4: 48 83 c4 38 add $0x38,%rsp 0.00 : 42d4e8: 5b pop %rbx 0.00 : 42d4e9: 5d pop %rbp 0.00 : 42d4ea: 41 5c pop %r12 0.00 : 42d4ec: 41 5d pop %r13 0.00 : 42d4ee: 41 5e pop %r14 0.00 : 42d4f0: 41 5f pop %r15 0.00 : 42d4f2: c3 retq 0.00 : 42d4f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42d4f8: 45 85 ff test %r15d,%r15d 0.00 : 42d4fb: 7e d3 jle 42d4d0 0.00 : 42d4fd: 48 8b 2c 24 mov (%rsp),%rbp 0.00 : 42d501: 4c 8d 6c 24 10 lea 0x10(%rsp),%r13 0.00 : 42d506: 31 db xor %ebx,%ebx 0.00 : 42d508: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 42d50f: 00 0.00 : 42d510: 48 63 7d 00 movslq 0x0(%rbp),%rdi 0.00 : 42d514: ba 0c 00 00 00 mov $0xc,%edx 0.00 : 42d519: 4c 89 ee mov %r13,%rsi 0.00 : 42d51c: 48 83 c5 04 add $0x4,%rbp 0.00 : 42d520: e8 8b c0 03 00 callq 4695b0 0.00 : 42d525: 48 89 de mov %rbx,%rsi 0.00 : 42d528: 48 89 c2 mov %rax,%rdx 0.00 : 42d52b: 4c 89 e7 mov %r12,%rdi 0.00 : 42d52e: 48 83 c3 01 add $0x1,%rbx 0.00 : 42d532: e8 89 d2 01 00 callq 44a7c0 0.00 : 42d537: 41 39 df cmp %ebx,%r15d 0.00 : 42d53a: 7f d4 jg 42d510 0.00 : 42d53c: eb 92 jmp 42d4d0 0.00 : 42d53e: 66 90 xchg %ax,%ax 0.00 : 42d540: 41 83 ff 01 cmp $0x1,%r15d 0.00 : 42d544: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42d548: 0f 85 db fe ff ff jne 42d429 0.00 : 42d54e: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 42d553: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 42d557: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 42d55b: e8 60 8e fe ff callq 4163c0 0.00 : 42d560: 48 8b 14 24 mov (%rsp),%rdx 0.00 : 42d564: 48 63 3a movslq (%rdx),%rdi 0.00 : 42d567: e8 d4 c0 03 00 callq 469640 0.00 : 42d56c: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 42d570: e9 5b ff ff ff jmpq 42d4d0 0.00 : 42d575: 0f 1f 00 nopl (%rax) 0.00 : 42d578: bf a0 25 47 00 mov $0x4725a0,%edi 0.00 : 42d57d: e8 0e fe ff ff callq 42d390 0.00 : 42d582: e9 71 fe ff ff jmpq 42d3f8 0.00 : 42d587: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42d58e: 00 00 0.00 : 42d590: 4c 89 e7 mov %r12,%rdi 0.00 : 42d593: e8 88 cb 01 00 callq 44a120 0.00 : 42d598: 48 8b 14 24 mov (%rsp),%rdx 0.00 : 42d59c: 8b 02 mov (%rdx),%eax 0.00 : 42d59e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 42d5a1: 0f 84 29 ff ff ff je 42d4d0 0.00 : 42d5a7: 4c 8d 6c 24 10 lea 0x10(%rsp),%r13 0.00 : 42d5ac: 31 db xor %ebx,%ebx 0.00 : 42d5ae: 66 90 xchg %ax,%ax 0.00 : 42d5b0: 48 63 f8 movslq %eax,%rdi 0.00 : 42d5b3: ba 0c 00 00 00 mov $0xc,%edx 0.00 : 42d5b8: 4c 89 ee mov %r13,%rsi 0.00 : 42d5bb: e8 f0 bf 03 00 callq 4695b0 0.00 : 42d5c0: 48 89 de mov %rbx,%rsi 0.00 : 42d5c3: 48 89 c2 mov %rax,%rdx 0.00 : 42d5c6: 4c 89 e7 mov %r12,%rdi 0.00 : 42d5c9: e8 f2 d1 01 00 callq 44a7c0 0.00 : 42d5ce: 48 8b 14 24 mov (%rsp),%rdx 0.00 : 42d5d2: 8b 44 9a 04 mov 0x4(%rdx,%rbx,4),%eax 0.00 : 42d5d6: 48 83 c3 01 add $0x1,%rbx 0.00 : 42d5da: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 42d5dd: 75 d1 jne 42d5b0 0.00 : 42d5df: e9 ec fe ff ff jmpq 42d4d0 0.00 : 42d5e4: e8 17 93 fe ff callq 416900 <__stack_chk_fail@plt> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042d6b0 : 0.00 : 42d6b0: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 42d6b5: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 42d6ba: 49 89 f4 mov %rsi,%r12 0.00 : 42d6bd: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 42d6c2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 42d6c7: 48 83 ec 38 sub $0x38,%rsp 0.00 : 42d6cb: f6 47 28 10 testb $0x10,0x28(%rdi) 0.00 : 42d6cf: 74 7f je 42d750 0.00 : 42d6d1: 89 d3 mov %edx,%ebx 0.00 : 42d6d3: 48 8d 6c 24 14 lea 0x14(%rsp),%rbp 0.00 : 42d6d8: 83 e3 01 and $0x1,%ebx 0.00 : 42d6db: 75 4b jne 42d728 0.00 : 42d6dd: 48 89 ee mov %rbp,%rsi 0.00 : 42d6e0: 4c 89 e7 mov %r12,%rdi 0.00 : 42d6e3: e8 18 40 00 00 callq 431700 0.00 : 42d6e8: 8b 74 24 14 mov 0x14(%rsp),%esi 0.00 : 42d6ec: 48 89 c2 mov %rax,%rdx 0.00 : 42d6ef: 85 f6 test %esi,%esi 0.00 : 42d6f1: 74 4c je 42d73f 0.00 : 42d6f3: 4a 8d 04 28 lea (%rax,%r13,1),%rax 0.00 : 42d6f7: 85 db test %ebx,%ebx 0.00 : 42d6f9: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 42d6fd: 48 89 d7 mov %rdx,%rdi 0.00 : 42d700: e8 3b bf 03 00 callq 469640 0.00 : 42d705: 48 89 c3 mov %rax,%rbx 0.00 : 42d708: 48 89 d8 mov %rbx,%rax 0.00 : 42d70b: 48 8b 6c 24 20 mov 0x20(%rsp),%rbp 0.00 : 42d710: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 0.00 : 42d715: 4c 8b 64 24 28 mov 0x28(%rsp),%r12 0.00 : 42d71a: 4c 8b 6c 24 30 mov 0x30(%rsp),%r13 0.00 : 42d71f: 48 83 c4 38 add $0x38,%rsp 0.00 : 42d723: c3 retq 0.00 : 42d724: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42d728: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 42d72c: 48 89 ee mov %rbp,%rsi 0.00 : 42d72f: e8 cc 3f 00 00 callq 431700 0.00 : 42d734: 8b 7c 24 14 mov 0x14(%rsp),%edi 0.00 : 42d738: 49 89 c5 mov %rax,%r13 0.00 : 42d73b: 85 ff test %edi,%edi 0.00 : 42d73d: 75 9e jne 42d6dd 0.00 : 42d73f: e8 ec a5 01 00 callq 447d30 0.00 : 42d744: bf 02 00 00 00 mov $0x2,%edi 0.00 : 42d749: e8 d2 a5 01 00 callq 447d20 0.00 : 42d74e: 66 90 xchg %ax,%ax 0.00 : 42d750: 31 db xor %ebx,%ebx 0.00 : 42d752: 48 85 f6 test %rsi,%rsi 0.00 : 42d755: 74 b1 je 42d708 0.00 : 42d757: 83 e2 01 and $0x1,%edx 0.00 : 42d75a: 75 44 jne 42d7a0 0.00 : 42d75c: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : 42d75f: 90 nop 0.00 : 42d760: 75 16 jne 42d778 0.00 : 42d762: bf 01 00 00 00 mov $0x1,%edi 0.00 : 42d767: e8 54 ab 02 00 callq 4582c0 0.00 : 42d76c: 48 89 c3 mov %rax,%rbx 0.00 : 42d76f: c6 00 00 movb $0x0,(%rax) 0.00 : 42d772: eb 94 jmp 42d708 0.00 : 42d774: 0f 1f 40 00 nopl 0x0(%rax) 100.00 : 42d778: 48 89 f7 mov %rsi,%rdi 0.00 : 42d77b: e8 70 8c fe ff callq 4163f0 0.00 : 42d780: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 42d784: e8 37 ab 02 00 callq 4582c0 0.00 : 42d789: 4c 89 e6 mov %r12,%rsi 0.00 : 42d78c: 48 89 c7 mov %rax,%rdi 0.00 : 42d78f: e8 dc 91 fe ff callq 416970 0.00 : 42d794: 48 89 c3 mov %rax,%rbx 0.00 : 42d797: e9 6c ff ff ff jmpq 42d708 0.00 : 42d79c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42d7a0: e8 db fe ff ff callq 42d680 0.00 : 42d7a5: 48 85 c0 test %rax,%rax 0.00 : 42d7a8: 48 89 c5 mov %rax,%rbp 0.00 : 42d7ab: b8 db 98 47 00 mov $0x4798db,%eax 0.00 : 42d7b0: 48 0f 44 e8 cmove %rax,%rbp 0.00 : 42d7b4: 45 31 ed xor %r13d,%r13d 0.00 : 42d7b7: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 42d7bc: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 42d7c0: 74 22 je 42d7e4 0.00 : 42d7c2: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 42d7c6: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 42d7cc: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 42d7d1: 74 11 je 42d7e4 0.00 : 42d7d3: 80 7d 02 00 cmpb $0x0,0x2(%rbp) 0.00 : 42d7d7: 41 bd 02 00 00 00 mov $0x2,%r13d 0.00 : 42d7dd: bb 03 00 00 00 mov $0x3,%ebx 0.00 : 42d7e2: 75 4b jne 42d82f 0.00 : 42d7e4: 31 c0 xor %eax,%eax 0.00 : 42d7e6: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 42d7eb: 74 1a je 42d807 0.00 : 42d7ed: 41 80 7c 24 01 00 cmpb $0x0,0x1(%r12) 0.00 : 42d7f3: b8 01 00 00 00 mov $0x1,%eax 0.00 : 42d7f8: 74 0d je 42d807 0.00 : 42d7fa: 41 80 7c 24 02 00 cmpb $0x0,0x2(%r12) 0.00 : 42d800: b8 02 00 00 00 mov $0x2,%eax 0.00 : 42d805: 75 3b jne 42d842 0.00 : 42d807: 48 8d 3c 18 lea (%rax,%rbx,1),%rdi 0.00 : 42d80b: e8 b0 aa 02 00 callq 4582c0 0.00 : 42d810: 48 89 ee mov %rbp,%rsi 0.00 : 42d813: 48 89 c3 mov %rax,%rbx 0.00 : 42d816: 48 89 c7 mov %rax,%rdi 0.00 : 42d819: e8 52 91 fe ff callq 416970 0.00 : 42d81e: 4a 8d 3c 2b lea (%rbx,%r13,1),%rdi 0.00 : 42d822: 4c 89 e6 mov %r12,%rsi 0.00 : 42d825: e8 46 91 fe ff callq 416970 0.00 : 42d82a: e9 d9 fe ff ff jmpq 42d708 0.00 : 42d82f: 48 89 ef mov %rbp,%rdi 0.00 : 42d832: e8 b9 8b fe ff callq 4163f0 0.00 : 42d837: 4c 63 e8 movslq %eax,%r13 0.00 : 42d83a: 49 8d 5d 01 lea 0x1(%r13),%rbx 0.00 : 42d83e: 66 90 xchg %ax,%ax 0.00 : 42d840: eb a2 jmp 42d7e4 0.00 : 42d842: 4c 89 e7 mov %r12,%rdi 0.00 : 42d845: e8 a6 8b fe ff callq 4163f0 0.00 : 42d84a: eb bb jmp 42d807 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042e2e0 : 0.00 : 42e2e0: 48 83 ec 08 sub $0x8,%rsp ??:0 100.00 : 42e2e4: e8 a7 d6 ff ff callq 42b990 0.00 : 42e2e9: 48 85 c0 test %rax,%rax 0.00 : 42e2ec: 74 12 je 42e300 0.00 : 42e2ee: 48 89 c7 mov %rax,%rdi 0.00 : 42e2f1: 48 83 c4 08 add $0x8,%rsp 0.00 : 42e2f5: e9 86 f3 ff ff jmpq 42d680 0.00 : 42e2fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 42e300: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042fde0 : ??:0 50.00 : 42fde0: 48 83 ec 08 sub $0x8,%rsp 50.00 : 42fde4: 48 83 3d 9c 4b 26 00 cmpq $0x0,0x264b9c(%rip) # 694988 0.00 : 42fdeb: 00 0.00 : 42fdec: 74 1a je 42fe08 0.00 : 42fdee: bf 20 dc 42 00 mov $0x42dc20,%edi 0.00 : 42fdf3: e8 f8 bd ff ff callq 42bbf0 0.00 : 42fdf8: 48 83 c4 08 add $0x8,%rsp 0.00 : 42fdfc: e9 1f fe ff ff jmpq 42fc20 0.00 : 42fe01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 42fe08: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042ffa0 : 0.00 : 42ffa0: 55 push %rbp ??:0 100.00 : 42ffa1: 31 d2 xor %edx,%edx 0.00 : 42ffa3: 31 ed xor %ebp,%ebp 0.00 : 42ffa5: 53 push %rbx 0.00 : 42ffa6: 48 89 fb mov %rdi,%rbx 0.00 : 42ffa9: 48 83 ec 08 sub $0x8,%rsp 0.00 : 42ffad: 48 85 ff test %rdi,%rdi 0.00 : 42ffb0: 75 09 jne 42ffbb 0.00 : 42ffb2: eb 3c jmp 42fff0 0.00 : 42ffb4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42ffb8: 48 89 c5 mov %rax,%rbp 0.00 : 42ffbb: 48 89 df mov %rbx,%rdi 0.00 : 42ffbe: e8 0d ff ff ff callq 42fed0 0.00 : 42ffc3: 48 89 28 mov %rbp,(%rax) 0.00 : 42ffc6: 48 8b 1b mov (%rbx),%rbx 0.00 : 42ffc9: 48 85 db test %rbx,%rbx 0.00 : 42ffcc: 75 ea jne 42ffb8 0.00 : 42ffce: 48 85 ed test %rbp,%rbp 0.00 : 42ffd1: 48 89 c2 mov %rax,%rdx 0.00 : 42ffd4: 74 1a je 42fff0 0.00 : 42ffd6: 48 83 c4 08 add $0x8,%rsp 0.00 : 42ffda: 48 89 c7 mov %rax,%rdi 0.00 : 42ffdd: 31 c0 xor %eax,%eax 0.00 : 42ffdf: 5b pop %rbx 0.00 : 42ffe0: 5d pop %rbp 0.00 : 42ffe1: e9 ea 28 02 00 jmpq 4528d0 0.00 : 42ffe6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 42ffed: 00 00 00 0.00 : 42fff0: 48 83 c4 08 add $0x8,%rsp 0.00 : 42fff4: 48 89 d0 mov %rdx,%rax 0.00 : 42fff7: 5b pop %rbx 0.00 : 42fff8: 5d pop %rbp Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000430000 : ??:0 100.00 : 430000: 41 54 push %r12 0.00 : 430002: 31 c0 xor %eax,%eax 0.00 : 430004: 45 31 e4 xor %r12d,%r12d 0.00 : 430007: 48 85 ff test %rdi,%rdi 0.00 : 43000a: 55 push %rbp 0.00 : 43000b: 48 89 fd mov %rdi,%rbp 0.00 : 43000e: 53 push %rbx 0.00 : 43000f: 74 4f je 430060 0.00 : 430011: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 430018: 48 8b 5d 08 mov 0x8(%rbp),%rbx 0.00 : 43001c: 48 8b 3b mov (%rbx),%rdi 0.00 : 43001f: e8 3c 35 ff ff callq 423560 0.00 : 430024: 48 89 c7 mov %rax,%rdi 0.00 : 430027: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : 43002a: 4c 89 e6 mov %r12,%rsi 0.00 : 43002d: 89 47 08 mov %eax,0x8(%rdi) 0.00 : 430030: e8 bb 2e ff ff callq 422ef0 0.00 : 430035: 48 8b 6d 00 mov 0x0(%rbp),%rbp 0.00 : 430039: 49 89 c4 mov %rax,%r12 0.00 : 43003c: 48 85 ed test %rbp,%rbp 0.00 : 43003f: 75 d7 jne 430018 0.00 : 430041: 4d 85 e4 test %r12,%r12 0.00 : 430044: 74 1a je 430060 0.00 : 430046: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 43004b: 74 13 je 430060 0.00 : 43004d: 5b pop %rbx 0.00 : 43004e: 5d pop %rbp 0.00 : 43004f: 4c 89 e7 mov %r12,%rdi 0.00 : 430052: 31 c0 xor %eax,%eax 0.00 : 430054: 41 5c pop %r12 0.00 : 430056: e9 75 28 02 00 jmpq 4528d0 0.00 : 43005b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 430060: 5b pop %rbx 0.00 : 430061: 5d pop %rbp 0.00 : 430062: 41 5c pop %r12 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000430130 : 0.00 : 430130: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 430135: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 43013a: 49 89 fc mov %rdi,%r12 0.00 : 43013d: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 430142: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 430147: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 43014c: 48 83 ec 28 sub $0x28,%rsp 0.00 : 430150: 48 85 ff test %rdi,%rdi 0.00 : 430153: 74 63 je 4301b8 0.00 : 430155: bf 20 00 00 00 mov $0x20,%edi 0.00 : 43015a: e8 61 81 02 00 callq 4582c0 0.00 : 43015f: 48 89 c5 mov %rax,%rbp 0.00 : 430162: 49 8b 04 24 mov (%r12),%rax 0.00 : 430166: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 43016a: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 43016f: 48 89 45 08 mov %rax,0x8(%rbp) 0.00 : 430173: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 430178: 48 89 45 10 mov %rax,0x10(%rbp) 0.00 : 43017c: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 430181: 48 89 45 18 mov %rax,0x18(%rbp) 0.00 : 430185: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 43018a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 43018f: 89 45 04 mov %eax,0x4(%rbp) 0.00 : 430192: 41 8b 44 24 08 mov 0x8(%r12),%eax 0.00 : 430197: 48 85 ff test %rdi,%rdi 0.00 : 43019a: 89 45 08 mov %eax,0x8(%rbp) 0.00 : 43019d: 74 09 je 4301a8 0.00 : 43019f: e8 fc fd ff ff callq 42ffa0 0.00 : 4301a4: 48 89 45 10 mov %rax,0x10(%rbp) 0.00 : 4301a8: 41 83 3c 24 0d cmpl $0xd,(%r12) 0.00 : 4301ad: 76 31 jbe 4301e0 0.00 : 4301af: 49 89 ec mov %rbp,%r12 0.00 : 4301b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4301b8: 4c 89 e0 mov %r12,%rax 0.00 : 4301bb: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4301bf: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 4301c4: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 4301c9: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 4301ce: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 4301d3: 48 83 c4 28 add $0x28,%rsp 0.00 : 4301d7: c3 retq 0.00 : 4301d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4301df: 00 0.00 : 4301e0: 41 8b 04 24 mov (%r12),%eax 0.00 : 4301e4: ff 24 c5 60 4e 47 00 jmpq *0x474e60(,%rax,8) 0.00 : 4301eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4301f0: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 4301f5: 49 89 ec mov %rbp,%r12 0.00 : 4301f8: e8 43 03 00 00 callq 430540 0.00 : 4301fd: 48 89 45 18 mov %rax,0x18(%rbp) 0.00 : 430201: eb b5 jmp 4301b8 0.00 : 430203: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 430208: 4d 8b 64 24 18 mov 0x18(%r12),%r12 0.00 : 43020d: bf 18 00 00 00 mov $0x18,%edi 0.00 : 430212: e8 a9 80 02 00 callq 4582c0 0.00 : 430217: 48 89 c3 mov %rax,%rbx 0.00 : 43021a: 41 8b 04 24 mov (%r12),%eax 0.00 : 43021e: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 430223: 89 03 mov %eax,(%rbx) 0.00 : 430225: e8 d6 fd ff ff callq 430000 0.00 : 43022a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 43022f: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 430233: 31 c0 xor %eax,%eax 0.00 : 430235: 48 85 ff test %rdi,%rdi 0.00 : 430238: 74 05 je 43023f 0.00 : 43023a: e8 61 fd ff ff callq 42ffa0 0.00 : 43023f: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 430243: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 430248: 49 89 ec mov %rbp,%r12 0.00 : 43024b: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 43024e: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 430252: e9 61 ff ff ff jmpq 4301b8 0.00 : 430257: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43025e: 00 00 0.00 : 430260: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 430265: e8 a6 fe ff ff callq 430110 0.00 : 43026a: 48 89 45 18 mov %rax,0x18(%rbp) 0.00 : 43026e: e9 3c ff ff ff jmpq 4301af 0.00 : 430273: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 430278: bf 20 00 00 00 mov $0x20,%edi 0.00 : 43027d: e8 3e 80 02 00 callq 4582c0 0.00 : 430282: 48 89 c3 mov %rax,%rbx 0.00 : 430285: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 43028a: 8b 40 18 mov 0x18(%rax),%eax 0.00 : 43028d: 89 43 18 mov %eax,0x18(%rbx) 0.00 : 430290: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 430295: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 430299: e8 92 fe ff ff callq 430130 0.00 : 43029e: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4302a2: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 4302a7: 49 89 ec mov %rbp,%r12 0.00 : 4302aa: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 4302ae: e8 7d fe ff ff callq 430130 0.00 : 4302b3: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 4302b7: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 4302bb: e9 f8 fe ff ff jmpq 4301b8 0.00 : 4302c0: 4d 8b 64 24 18 mov 0x18(%r12),%r12 0.00 : 4302c5: bf 28 00 00 00 mov $0x28,%edi 0.00 : 4302ca: e8 f1 7f 02 00 callq 4582c0 0.00 : 4302cf: 48 89 c3 mov %rax,%rbx 0.00 : 4302d2: 41 8b 04 24 mov (%r12),%eax 0.00 : 4302d6: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 4302db: 89 03 mov %eax,(%rbx) 0.00 : 4302dd: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 4302e2: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 4302e5: e8 16 fd ff ff callq 430000 0.00 : 4302ea: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 4302ef: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4302f3: e8 08 fd ff ff callq 430000 0.00 : 4302f8: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 4302fd: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 430301: e8 fa fc ff ff callq 430000 0.00 : 430306: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 43030b: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 43030f: 49 89 ec mov %rbp,%r12 0.00 : 430312: e8 19 fe ff ff callq 430130 0.00 : 430317: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 43031b: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 43031f: e9 94 fe ff ff jmpq 4301b8 0.00 : 430324: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 430328: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 43032d: 49 89 ec mov %rbp,%r12 0.00 : 430330: e8 fb fa ff ff callq 42fe30 0.00 : 430335: 48 89 45 18 mov %rax,0x18(%rbp) 0.00 : 430339: e9 7a fe ff ff jmpq 4301b8 0.00 : 43033e: 66 90 xchg %ax,%ax 0.00 : 430340: 4d 8b 64 24 18 mov 0x18(%r12),%r12 0.00 : 430345: bf 10 00 00 00 mov $0x10,%edi 0.00 : 43034a: e8 71 7f 02 00 callq 4582c0 0.00 : 43034f: 48 89 c3 mov %rax,%rbx 0.00 : 430352: 41 8b 04 24 mov (%r12),%eax 0.00 : 430356: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 43035b: 89 03 mov %eax,(%rbx) 0.00 : 43035d: e8 9e fc ff ff callq 430000 0.00 : 430362: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 430366: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 43036b: 49 89 ec mov %rbp,%r12 0.00 : 43036e: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 430371: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 430375: e9 3e fe ff ff jmpq 4301b8 0.00 : 43037a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) ??:0 100.00 : 430380: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 430385: bf 10 00 00 00 mov $0x10,%edi 0.00 : 43038a: e8 31 7f 02 00 callq 4582c0 0.00 : 43038f: 49 89 c4 mov %rax,%r12 0.00 : 430392: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 430396: e8 95 fd ff ff callq 430130 0.00 : 43039b: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 4303a0: 4c 89 65 18 mov %r12,0x18(%rbp) 0.00 : 4303a4: 49 89 ec mov %rbp,%r12 0.00 : 4303a7: e9 0c fe ff ff jmpq 4301b8 0.00 : 4303ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4303b0: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 4303b5: bf 20 00 00 00 mov $0x20,%edi 0.00 : 4303ba: e8 01 7f 02 00 callq 4582c0 0.00 : 4303bf: 49 89 c4 mov %rax,%r12 0.00 : 4303c2: 8b 03 mov (%rbx),%eax 0.00 : 4303c4: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 4303c8: 41 89 04 24 mov %eax,(%r12) 0.00 : 4303cc: e8 5f fd ff ff callq 430130 0.00 : 4303d1: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 4303d5: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 4303da: e8 51 fd ff ff callq 430130 0.00 : 4303df: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 4303e3: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 4303e8: 31 c0 xor %eax,%eax 0.00 : 4303ea: 48 85 ff test %rdi,%rdi 0.00 : 4303ed: 74 05 je 4303f4 0.00 : 4303ef: e8 3c fd ff ff callq 430130 0.00 : 4303f4: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 4303f9: 4c 89 65 18 mov %r12,0x18(%rbp) 0.00 : 4303fd: 49 89 ec mov %rbp,%r12 0.00 : 430400: e9 b3 fd ff ff jmpq 4301b8 0.00 : 430405: 0f 1f 00 nopl (%rax) 0.00 : 430408: 4d 8b 64 24 18 mov 0x18(%r12),%r12 0.00 : 43040d: bf 18 00 00 00 mov $0x18,%edi 0.00 : 430412: e8 a9 7e 02 00 callq 4582c0 0.00 : 430417: 48 89 c3 mov %rax,%rbx 0.00 : 43041a: 41 8b 04 24 mov (%r12),%eax 0.00 : 43041e: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 430423: 89 03 mov %eax,(%rbx) 0.00 : 430425: e8 06 fd ff ff callq 430130 0.00 : 43042a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 43042f: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 430433: 49 89 ec mov %rbp,%r12 0.00 : 430436: e8 f5 fc ff ff callq 430130 0.00 : 43043b: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 43043f: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 430443: e9 70 fd ff ff jmpq 4301b8 0.00 : 430448: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43044f: 00 0.00 : 430450: 4d 8b 64 24 18 mov 0x18(%r12),%r12 0.00 : 430455: bf 18 00 00 00 mov $0x18,%edi 0.00 : 43045a: 45 31 ed xor %r13d,%r13d 0.00 : 43045d: e8 5e 7e 02 00 callq 4582c0 0.00 : 430462: 49 89 c6 mov %rax,%r14 0.00 : 430465: 41 8b 04 24 mov (%r12),%eax 0.00 : 430469: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.00 : 43046e: 41 89 06 mov %eax,(%r14) 0.00 : 430471: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 430476: 48 8b 3b mov (%rbx),%rdi 0.00 : 430479: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 43047d: e8 de 30 ff ff callq 423560 0.00 : 430482: 4d 8b 64 24 10 mov 0x10(%r12),%r12 0.00 : 430487: 8b 53 08 mov 0x8(%rbx),%edx 0.00 : 43048a: 31 db xor %ebx,%ebx 0.00 : 43048c: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 430490: 4d 85 e4 test %r12,%r12 0.00 : 430493: 89 50 08 mov %edx,0x8(%rax) 0.00 : 430496: 75 1b jne 4304b3 0.00 : 430498: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43049f: 00 0.00 : 4304a0: 49 89 5e 10 mov %rbx,0x10(%r14) 0.00 : 4304a4: 49 89 ec mov %rbp,%r12 0.00 : 4304a7: 4c 89 75 18 mov %r14,0x18(%rbp) 0.00 : 4304ab: e9 08 fd ff ff jmpq 4301b8 0.00 : 4304b0: 49 89 dd mov %rbx,%r13 0.00 : 4304b3: bf 20 00 00 00 mov $0x20,%edi 0.00 : 4304b8: e8 03 7e 02 00 callq 4582c0 0.00 : 4304bd: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 4304c2: 48 89 c3 mov %rax,%rbx 0.00 : 4304c5: e8 36 fb ff ff callq 430000 0.00 : 4304ca: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 4304cf: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4304d3: e8 58 fc ff ff callq 430130 0.00 : 4304d8: 4c 89 2b mov %r13,(%rbx) 0.00 : 4304db: 4d 8b 24 24 mov (%r12),%r12 0.00 : 4304df: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 4304e3: 4d 85 e4 test %r12,%r12 0.00 : 4304e6: 75 c8 jne 4304b0 0.00 : 4304e8: 4d 85 ed test %r13,%r13 0.00 : 4304eb: 74 b3 je 4304a0 0.00 : 4304ed: 48 89 df mov %rbx,%rdi 0.00 : 4304f0: 31 c0 xor %eax,%eax 0.00 : 4304f2: e8 d9 23 02 00 callq 4528d0 0.00 : 4304f7: 48 89 c3 mov %rax,%rbx 0.00 : 4304fa: eb a4 jmp 4304a0 0.00 : 4304fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 430500: 4d 8b 64 24 18 mov 0x18(%r12),%r12 0.00 : 430505: bf 10 00 00 00 mov $0x10,%edi 0.00 : 43050a: e8 b1 7d 02 00 callq 4582c0 0.00 : 43050f: 48 89 c3 mov %rax,%rbx 0.00 : 430512: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 430517: e8 14 fc ff ff callq 430130 0.00 : 43051c: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 430520: 41 8b 04 24 mov (%r12),%eax 0.00 : 430524: 49 89 ec mov %rbp,%r12 0.00 : 430527: 89 03 mov %eax,(%rbx) 0.00 : 430529: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 43052d: e9 86 fc ff ff jmpq 4301b8 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000434cb0 : 0.00 : 434cb0: 41 54 push %r12 0.00 : 434cb2: 53 push %rbx 0.00 : 434cb3: 48 81 ec 08 01 00 00 sub $0x108,%rsp 0.00 : 434cba: 48 8d 9c 24 80 00 00 lea 0x80(%rsp),%rbx 0.00 : 434cc1: 00 0.00 : 434cc2: 48 89 df mov %rbx,%rdi 0.00 : 434cc5: e8 76 1e fe ff callq 416b40 0.00 : 434cca: be 11 00 00 00 mov $0x11,%esi 0.00 : 434ccf: 48 89 df mov %rbx,%rdi 0.00 : 434cd2: e8 d9 1b fe ff callq 4168b0 0.00 : 434cd7: 48 89 e7 mov %rsp,%rdi 0.00 : 434cda: e8 61 1e fe ff callq 416b40 ??:0 100.00 : 434cdf: 48 89 de mov %rbx,%rsi 0.00 : 434ce2: 31 ff xor %edi,%edi 0.00 : 434ce4: 48 89 e2 mov %rsp,%rdx 0.00 : 434ce7: e8 f4 18 fe ff callq 4165e0 0.00 : 434cec: 48 8b 1d 95 fe 25 00 mov 0x25fe95(%rip),%rbx # 694b88 0.00 : 434cf3: 31 d2 xor %edx,%edx 0.00 : 434cf5: 48 89 e6 mov %rsp,%rsi 0.00 : 434cf8: bf 02 00 00 00 mov $0x2,%edi 0.00 : 434cfd: 48 c7 05 80 fe 25 00 movq $0x0,0x25fe80(%rip) # 694b88 0.00 : 434d04: 00 00 00 00 0.00 : 434d08: e8 d3 18 fe ff callq 4165e0 0.00 : 434d0d: 48 85 db test %rbx,%rbx 0.00 : 434d10: 74 08 je 434d1a 0.00 : 434d12: 48 89 df mov %rbx,%rdi 0.00 : 434d15: e8 06 ff ff ff callq 434c20 0.00 : 434d1a: 48 81 c4 08 01 00 00 add $0x108,%rsp 0.00 : 434d21: 5b pop %rbx 0.00 : 434d22: 41 5c pop %r12 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000438140 : ??:0 100.00 : 438140: 48 8b 05 b9 ec 25 00 mov 0x25ecb9(%rip),%rax # 696e00 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004381e0 : 0.00 : 4381e0: 55 push %rbp 0.00 : 4381e1: 89 d5 mov %edx,%ebp 0.00 : 4381e3: 53 push %rbx 0.00 : 4381e4: 48 89 fb mov %rdi,%rbx 0.00 : 4381e7: 48 83 ec 08 sub $0x8,%rsp 0.00 : 4381eb: 48 85 ff test %rdi,%rdi 0.00 : 4381ee: 0f 84 b1 00 00 00 je 4382a5 0.00 : 4381f4: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 4381f7: 48 8d 57 ff lea -0x1(%rdi),%rdx ??:0 100.00 : 4381fb: 0f 85 7f 00 00 00 jne 438280 0.00 : 438201: 48 39 d3 cmp %rdx,%rbx 0.00 : 438204: 48 89 d1 mov %rdx,%rcx 0.00 : 438207: 72 3b jb 438244 0.00 : 438209: e9 a0 00 00 00 jmpq 4382ae 0.00 : 43820e: 66 90 xchg %ax,%ax 0.00 : 438210: 80 fa 09 cmp $0x9,%dl 0.00 : 438213: 74 37 je 43824c 0.00 : 438215: 80 fa 0a cmp $0xa,%dl 0.00 : 438218: 74 32 je 43824c 0.00 : 43821a: 85 ed test %ebp,%ebp 0.00 : 43821c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 438220: 74 46 je 438268 0.00 : 438222: 80 ea 01 sub $0x1,%dl 0.00 : 438225: 75 41 jne 438268 0.00 : 438227: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 43822b: 48 8d 51 01 lea 0x1(%rcx),%rdx 0.00 : 43822f: 3c 20 cmp $0x20,%al 0.00 : 438231: 74 08 je 43823b 0.00 : 438233: 3c 09 cmp $0x9,%al 0.00 : 438235: 74 04 je 43823b 0.00 : 438237: 3c 0a cmp $0xa,%al 0.00 : 438239: 75 31 jne 43826c 0.00 : 43823b: 48 83 e9 01 sub $0x1,%rcx 0.00 : 43823f: 48 39 cb cmp %rcx,%rbx 0.00 : 438242: 73 24 jae 438268 0.00 : 438244: 0f b6 11 movzbl (%rcx),%edx 0.00 : 438247: 80 fa 20 cmp $0x20,%dl 0.00 : 43824a: 75 c4 jne 438210 0.00 : 43824c: 0f b6 c2 movzbl %dl,%eax 0.00 : 43824f: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 438256: 74 c2 je 43821a 0.00 : 438258: 48 83 e9 01 sub $0x1,%rcx 0.00 : 43825c: 48 39 cb cmp %rcx,%rbx 0.00 : 43825f: 72 e3 jb 438244 0.00 : 438261: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 438268: 48 8d 51 01 lea 0x1(%rcx),%rdx 0.00 : 43826c: c6 02 00 movb $0x0,(%rdx) 0.00 : 43826f: 48 89 d8 mov %rbx,%rax 0.00 : 438272: 48 83 c4 08 add $0x8,%rsp 0.00 : 438276: 5b pop %rbx 0.00 : 438277: 5d pop %rbp 0.00 : 438278: c3 retq 0.00 : 438279: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 438280: 80 7f 01 00 cmpb $0x0,0x1(%rdi) 0.00 : 438284: 48 8d 57 01 lea 0x1(%rdi),%rdx 0.00 : 438288: 74 e2 je 43826c 0.00 : 43828a: 80 7f 02 00 cmpb $0x0,0x2(%rdi) 0.00 : 43828e: 0f 84 6d ff ff ff je 438201 0.00 : 438294: e8 57 e1 fd ff callq 4163f0 0.00 : 438299: 48 8d 54 03 ff lea -0x1(%rbx,%rax,1),%rdx 0.00 : 43829e: 66 90 xchg %ax,%ax 0.00 : 4382a0: e9 5c ff ff ff jmpq 438201 0.00 : 4382a5: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx 0.00 : 4382ac: eb 96 jmp 438244 0.00 : 4382ae: 48 83 c2 01 add $0x1,%rdx 0.00 : 4382b2: eb b8 jmp 43826c Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043af90 : 0.00 : 43af90: 41 57 push %r15 0.00 : 43af92: 41 56 push %r14 0.00 : 43af94: 41 55 push %r13 0.00 : 43af96: 41 54 push %r12 0.00 : 43af98: 49 89 fc mov %rdi,%r12 0.00 : 43af9b: 55 push %rbp 0.00 : 43af9c: 31 ed xor %ebp,%ebp 0.00 : 43af9e: 53 push %rbx 0.00 : 43af9f: 48 83 ec 18 sub $0x18,%rsp 0.00 : 43afa3: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 43afaa: 00 0.00 : 43afab: e8 40 b4 fd ff callq 4163f0 0.00 : 43afb0: 31 ff xor %edi,%edi 0.00 : 43afb2: 49 89 c6 mov %rax,%r14 0.00 : 43afb5: 0f 1f 00 nopl (%rax) 0.00 : 43afb8: 48 63 c7 movslq %edi,%rax 0.00 : 43afbb: 49 39 c6 cmp %rax,%r14 0.00 : 43afbe: 76 5d jbe 43b01d 0.00 : 43afc0: 41 80 3c 04 5c cmpb $0x5c,(%r12,%rax,1) 0.00 : 43afc5: 74 79 je 43b040 0.00 : 43afc7: 89 fb mov %edi,%ebx 0.00 : 43afc9: e8 92 b4 fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43afce: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43afd2: 8d 7b 01 lea 0x1(%rbx),%edi 0.00 : 43afd5: 76 38 jbe 43b00f ??:0 100.00 : 43afd7: 48 63 f3 movslq %ebx,%rsi 0.00 : 43afda: 4c 89 f2 mov %r14,%rdx 0.00 : 43afdd: 31 ff xor %edi,%edi 0.00 : 43afdf: 48 29 f2 sub %rsi,%rdx 0.00 : 43afe2: 49 8d 34 34 lea (%r12,%rsi,1),%rsi 0.00 : 43afe6: 48 89 e1 mov %rsp,%rcx 0.00 : 43afe9: 4c 8b 2c 24 mov (%rsp),%r13 0.00 : 43afed: e8 5e ae fd ff callq 415e50 0.00 : 43aff2: 48 89 c2 mov %rax,%rdx 0.00 : 43aff5: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 43aff9: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43affd: 0f 86 8d 00 00 00 jbe 43b090 0.00 : 43b003: 8d 7b 01 lea 0x1(%rbx),%edi 0.00 : 43b006: 8d 04 13 lea (%rbx,%rdx,1),%eax 0.00 : 43b009: 48 85 d2 test %rdx,%rdx 0.00 : 43b00c: 0f 45 f8 cmovne %eax,%edi 0.00 : 43b00f: 39 eb cmp %ebp,%ebx 0.00 : 43b011: 7f 4d jg 43b060 0.00 : 43b013: 48 63 c7 movslq %edi,%rax 0.00 : 43b016: 89 fd mov %edi,%ebp 0.00 : 43b018: 49 39 c6 cmp %rax,%r14 0.00 : 43b01b: 77 a3 ja 43afc0 0.00 : 43b01d: 48 63 c5 movslq %ebp,%rax 0.00 : 43b020: 41 c6 04 04 00 movb $0x0,(%r12,%rax,1) 0.00 : 43b025: 48 83 c4 18 add $0x18,%rsp 0.00 : 43b029: 4c 89 e0 mov %r12,%rax 0.00 : 43b02c: 5b pop %rbx 0.00 : 43b02d: 5d pop %rbp 0.00 : 43b02e: 41 5c pop %r12 0.00 : 43b030: 41 5d pop %r13 0.00 : 43b032: 41 5e pop %r14 0.00 : 43b034: 41 5f pop %r15 0.00 : 43b036: c3 retq 0.00 : 43b037: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43b03e: 00 00 0.00 : 43b040: 41 0f b6 44 04 01 movzbl 0x1(%r12,%rax,1),%eax 0.00 : 43b046: 3c 60 cmp $0x60,%al 0.00 : 43b048: 74 0c je 43b056 0.00 : 43b04a: 3c 5c cmp $0x5c,%al 0.00 : 43b04c: 74 08 je 43b056 0.00 : 43b04e: 3c 24 cmp $0x24,%al 0.00 : 43b050: 0f 85 71 ff ff ff jne 43afc7 0.00 : 43b056: 8d 5f 01 lea 0x1(%rdi),%ebx 0.00 : 43b059: e9 6b ff ff ff jmpq 43afc9 0.00 : 43b05e: 66 90 xchg %ax,%ax 0.00 : 43b060: 48 63 c3 movslq %ebx,%rax 0.00 : 43b063: 89 da mov %ebx,%edx 0.00 : 43b065: 49 8d 34 04 lea (%r12,%rax,1),%rsi 0.00 : 43b069: 48 63 c5 movslq %ebp,%rax 0.00 : 43b06c: 49 8d 0c 04 lea (%r12,%rax,1),%rcx 0.00 : 43b070: 0f b6 06 movzbl (%rsi),%eax 0.00 : 43b073: 83 c2 01 add $0x1,%edx 0.00 : 43b076: 83 c5 01 add $0x1,%ebp 0.00 : 43b079: 48 83 c6 01 add $0x1,%rsi 0.00 : 43b07d: 88 01 mov %al,(%rcx) 0.00 : 43b07f: 48 83 c1 01 add $0x1,%rcx 0.00 : 43b083: 39 d7 cmp %edx,%edi 0.00 : 43b085: 7f e9 jg 43b070 0.00 : 43b087: e9 2c ff ff ff jmpq 43afb8 0.00 : 43b08c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43b090: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 43b094: 8d 7b 01 lea 0x1(%rbx),%edi 0.00 : 43b097: e9 73 ff ff ff jmpq 43b00f Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043b4d0 : 0.00 : 43b4d0: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 43b4d5: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 43b4da: 48 89 f3 mov %rsi,%rbx 0.00 : 43b4dd: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 43b4e2: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 43b4e7: 49 89 fc mov %rdi,%r12 0.00 : 43b4ea: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 43b4ef: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 43b4f4: 48 83 ec 58 sub $0x58,%rsp 0.00 : 43b4f8: 48 85 ff test %rdi,%rdi 0.00 : 43b4fb: 48 89 d5 mov %rdx,%rbp 0.00 : 43b4fe: 75 30 jne 43b530 0.00 : 43b500: 31 db xor %ebx,%ebx 0.00 : 43b502: 48 89 d8 mov %rbx,%rax 0.00 : 43b505: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp 0.00 : 43b50a: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 43b50f: 4c 8b 64 24 38 mov 0x38(%rsp),%r12 0.00 : 43b514: 4c 8b 6c 24 40 mov 0x40(%rsp),%r13 0.00 : 43b519: 4c 8b 74 24 48 mov 0x48(%rsp),%r14 0.00 : 43b51e: 4c 8b 7c 24 50 mov 0x50(%rsp),%r15 0.00 : 43b523: 48 83 c4 58 add $0x58,%rsp 0.00 : 43b527: c3 retq 0.00 : 43b528: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43b52f: 00 0.00 : 43b530: 4c 8b 2f mov (%rdi),%r13 0.00 : 43b533: 4d 85 ed test %r13,%r13 0.00 : 43b536: 74 c8 je 43b500 0.00 : 43b538: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : 43b53d: 84 c0 test %al,%al 0.00 : 43b53f: 74 bf je 43b500 ??:0 100.00 : 43b541: 48 85 f6 test %rsi,%rsi 0.00 : 43b544: 74 12 je 43b558 0.00 : 43b546: 0f b6 16 movzbl (%rsi),%edx 0.00 : 43b549: 80 fa 20 cmp $0x20,%dl 0.00 : 43b54c: 74 52 je 43b5a0 0.00 : 43b54e: 84 d2 test %dl,%dl 0.00 : 43b550: 75 66 jne 43b5b8 0.00 : 43b552: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43b558: 3c 20 cmp $0x20,%al 0.00 : 43b55a: 74 0a je 43b566 0.00 : 43b55c: 3c 09 cmp $0x9,%al 0.00 : 43b55e: 66 90 xchg %ax,%ax 0.00 : 43b560: 74 04 je 43b566 0.00 : 43b562: 3c 0a cmp $0xa,%al 0.00 : 43b564: 75 52 jne 43b5b8 0.00 : 43b566: 0f b6 c0 movzbl %al,%eax 0.00 : 43b569: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43b570: 74 46 je 43b5b8 0.00 : 43b572: 49 83 c5 01 add $0x1,%r13 0.00 : 43b576: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : 43b57b: 84 c0 test %al,%al 0.00 : 43b57d: 75 d9 jne 43b558 0.00 : 43b57f: 48 85 ed test %rbp,%rbp 0.00 : 43b582: 4d 89 2c 24 mov %r13,(%r12) 0.00 : 43b586: 0f 84 74 ff ff ff je 43b500 0.00 : 43b58c: 4c 89 6d 00 mov %r13,0x0(%rbp) 0.00 : 43b590: 31 db xor %ebx,%ebx 0.00 : 43b592: e9 6b ff ff ff jmpq 43b502 0.00 : 43b597: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43b59e: 00 00 0.00 : 43b5a0: 80 7e 01 09 cmpb $0x9,0x1(%rsi) 0.00 : 43b5a4: 75 12 jne 43b5b8 0.00 : 43b5a6: 80 7e 02 0a cmpb $0xa,0x2(%rsi) 0.00 : 43b5aa: 75 0c jne 43b5b8 0.00 : 43b5ac: 80 7e 03 00 cmpb $0x0,0x3(%rsi) 0.00 : 43b5b0: 74 a6 je 43b558 0.00 : 43b5b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43b5b8: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 43b5bf: 00 0.00 : 43b5c0: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 43b5c6: e8 95 ae fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43b5cb: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b5cf: 76 0b jbe 43b5dc 0.00 : 43b5d1: 4c 89 ef mov %r13,%rdi 0.00 : 43b5d4: e8 17 ae fd ff callq 4163f0 0.00 : 43b5d9: 49 89 c6 mov %rax,%r14 0.00 : 43b5dc: 48 8d 54 24 1c lea 0x1c(%rsp),%rdx 0.00 : 43b5e1: 48 89 d9 mov %rbx,%rcx 0.00 : 43b5e4: 4c 89 f6 mov %r14,%rsi 0.00 : 43b5e7: 4c 89 ef mov %r13,%rdi 0.00 : 43b5ea: e8 d1 fb ff ff callq 43b1c0 0.00 : 43b5ef: 48 85 ed test %rbp,%rbp 0.00 : 43b5f2: 48 89 c3 mov %rax,%rbx 0.00 : 43b5f5: 0f 84 a3 01 00 00 je 43b79e 0.00 : 43b5fb: 8b 4c 24 1c mov 0x1c(%rsp),%ecx 0.00 : 43b5ff: 48 63 c1 movslq %ecx,%rax 0.00 : 43b602: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax 0.00 : 43b607: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 43b60b: 48 63 c1 movslq %ecx,%rax 0.00 : 43b60e: 41 0f b6 44 05 00 movzbl 0x0(%r13,%rax,1),%eax 0.00 : 43b614: 84 c0 test %al,%al 0.00 : 43b616: 0f 84 58 01 00 00 je 43b774 0.00 : 43b61c: 3c 20 cmp $0x20,%al 0.00 : 43b61e: 0f 84 65 01 00 00 je 43b789 0.00 : 43b624: 3c 09 cmp $0x9,%al 0.00 : 43b626: 0f 84 5d 01 00 00 je 43b789 0.00 : 43b62c: 45 31 ff xor %r15d,%r15d 0.00 : 43b62f: 3c 0a cmp $0xa,%al 0.00 : 43b631: 41 0f 94 c7 sete %r15b 0.00 : 43b635: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 43b63c: 00 00 0.00 : 43b63e: 48 8d 6c 24 10 lea 0x10(%rsp),%rbp 0.00 : 43b643: e8 18 ae fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43b648: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b64c: 0f 86 42 01 00 00 jbe 43b794 0.00 : 43b652: 48 63 74 24 1c movslq 0x1c(%rsp),%rsi 0.00 : 43b657: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 43b65c: 31 ff xor %edi,%edi 0.00 : 43b65e: 48 89 e9 mov %rbp,%rcx 0.00 : 43b661: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 43b666: 49 29 f6 sub %rsi,%r14 0.00 : 43b669: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 43b66e: 4c 89 f2 mov %r14,%rdx 0.00 : 43b671: e8 da a7 fd ff callq 415e50 0.00 : 43b676: 48 89 c2 mov %rax,%rdx 0.00 : 43b679: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 43b67d: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b681: 0f 86 20 01 00 00 jbe 43b7a7 0.00 : 43b687: 48 85 d2 test %rdx,%rdx 0.00 : 43b68a: 0f 84 04 01 00 00 je 43b794 0.00 : 43b690: 01 54 24 1c add %edx,0x1c(%rsp) 0.00 : 43b694: 8b 74 24 1c mov 0x1c(%rsp),%esi 0.00 : 43b698: 48 63 c6 movslq %esi,%rax 0.00 : 43b69b: 89 f1 mov %esi,%ecx 0.00 : 43b69d: 41 0f b6 54 05 00 movzbl 0x0(%r13,%rax,1),%edx 0.00 : 43b6a3: 84 d2 test %dl,%dl 0.00 : 43b6a5: 0f 84 c9 00 00 00 je 43b774 0.00 : 43b6ab: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 43b6ae: 48 98 cltq 0.00 : 43b6b0: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 43b6b5: eb 1f jmp 43b6d6 0.00 : 43b6b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43b6be: 00 00 0.00 : 43b6c0: 83 c6 01 add $0x1,%esi 0.00 : 43b6c3: 89 74 24 1c mov %esi,0x1c(%rsp) 0.00 : 43b6c7: 0f b6 11 movzbl (%rcx),%edx 0.00 : 43b6ca: 48 83 c1 01 add $0x1,%rcx 0.00 : 43b6ce: 84 d2 test %dl,%dl 0.00 : 43b6d0: 0f 84 af 00 00 00 je 43b785 0.00 : 43b6d6: 80 fa 20 cmp $0x20,%dl 0.00 : 43b6d9: 74 0a je 43b6e5 0.00 : 43b6db: 80 fa 09 cmp $0x9,%dl 0.00 : 43b6de: 74 05 je 43b6e5 0.00 : 43b6e0: 80 fa 0a cmp $0xa,%dl 0.00 : 43b6e3: 75 0c jne 43b6f1 0.00 : 43b6e5: 0f b6 c2 movzbl %dl,%eax 0.00 : 43b6e8: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43b6ef: 75 cf jne 43b6c0 0.00 : 43b6f1: 84 d2 test %dl,%dl 0.00 : 43b6f3: 74 7b je 43b770 0.00 : 43b6f5: 45 85 ff test %r15d,%r15d 0.00 : 43b6f8: 74 76 je 43b770 0.00 : 43b6fa: 0f b6 c2 movzbl %dl,%eax 0.00 : 43b6fd: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43b704: 74 6a je 43b770 0.00 : 43b706: 80 fa 20 cmp $0x20,%dl 0.00 : 43b709: 74 65 je 43b770 0.00 : 43b70b: 80 fa 09 cmp $0x9,%dl 0.00 : 43b70e: 74 60 je 43b770 0.00 : 43b710: 80 fa 0a cmp $0xa,%dl 0.00 : 43b713: 74 5b je 43b770 0.00 : 43b715: 8d 7e 01 lea 0x1(%rsi),%edi 0.00 : 43b718: 48 63 c7 movslq %edi,%rax 0.00 : 43b71b: 89 7c 24 1c mov %edi,0x1c(%rsp) 0.00 : 43b71f: 89 f9 mov %edi,%ecx 0.00 : 43b721: 41 0f b6 54 05 00 movzbl 0x0(%r13,%rax,1),%edx 0.00 : 43b727: 84 d2 test %dl,%dl 0.00 : 43b729: 74 49 je 43b774 0.00 : 43b72b: 8d 46 02 lea 0x2(%rsi),%eax 0.00 : 43b72e: 48 98 cltq 0.00 : 43b730: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 43b735: eb 1b jmp 43b752 0.00 : 43b737: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43b73e: 00 00 0.00 : 43b740: 83 c7 01 add $0x1,%edi 0.00 : 43b743: 89 7c 24 1c mov %edi,0x1c(%rsp) 0.00 : 43b747: 0f b6 11 movzbl (%rcx),%edx 0.00 : 43b74a: 48 83 c1 01 add $0x1,%rcx 0.00 : 43b74e: 84 d2 test %dl,%dl 0.00 : 43b750: 74 69 je 43b7bb 0.00 : 43b752: 80 fa 20 cmp $0x20,%dl 0.00 : 43b755: 74 0b je 43b762 0.00 : 43b757: 80 fa 09 cmp $0x9,%dl 0.00 : 43b75a: 74 06 je 43b762 0.00 : 43b75c: 80 fa 0a cmp $0xa,%dl 0.00 : 43b75f: 90 nop 0.00 : 43b760: 75 0e jne 43b770 0.00 : 43b762: 0f b6 c2 movzbl %dl,%eax 0.00 : 43b765: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43b76c: 75 d2 jne 43b740 0.00 : 43b76e: 66 90 xchg %ax,%ax 0.00 : 43b770: 8b 4c 24 1c mov 0x1c(%rsp),%ecx 0.00 : 43b774: 48 63 c1 movslq %ecx,%rax 0.00 : 43b777: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax 0.00 : 43b77c: 49 89 04 24 mov %rax,(%r12) 0.00 : 43b780: e9 7d fd ff ff jmpq 43b502 0.00 : 43b785: 89 f1 mov %esi,%ecx 0.00 : 43b787: eb eb jmp 43b774 0.00 : 43b789: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 43b78f: e9 a1 fe ff ff jmpq 43b635 0.00 : 43b794: 83 44 24 1c 01 addl $0x1,0x1c(%rsp) 0.00 : 43b799: e9 f6 fe ff ff jmpq 43b694 0.00 : 43b79e: 8b 4c 24 1c mov 0x1c(%rsp),%ecx 0.00 : 43b7a2: e9 64 fe ff ff jmpq 43b60b 0.00 : 43b7a7: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 43b7ac: 83 44 24 1c 01 addl $0x1,0x1c(%rsp) 0.00 : 43b7b1: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 43b7b6: e9 d9 fe ff ff jmpq 43b694 0.00 : 43b7bb: 89 f9 mov %edi,%ecx 0.00 : 43b7bd: eb b5 jmp 43b774 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000440510 : ??:0 100.00 : 440510: be 1f 00 00 00 mov $0x1f,%esi 0.00 : 440515: e9 06 f7 ff ff jmpq 43fc20 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000445bb0 : 0.00 : 445bb0: 48 83 ec 08 sub $0x8,%rsp 0.00 : 445bb4: 8b 05 aa 02 25 00 mov 0x2502aa(%rip),%eax # 695e64 0.00 : 445bba: 31 d2 xor %edx,%edx 0.00 : 445bbc: 83 e0 51 and $0x51,%eax ??:0 100.00 : 445bbf: 83 e8 01 sub $0x1,%eax 0.00 : 445bc2: 74 0c je 445bd0 0.00 : 445bc4: 89 d0 mov %edx,%eax 0.00 : 445bc6: 48 83 c4 08 add $0x8,%rsp 0.00 : 445bca: c3 retq 0.00 : 445bcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 445bd0: be 48 63 47 00 mov $0x476348,%esi 0.00 : 445bd5: bf 41 00 00 00 mov $0x41,%edi 0.00 : 445bda: e8 81 fd ff ff callq 445960 0.00 : 445bdf: 44 8b 0d 12 d8 24 00 mov 0x24d812(%rip),%r9d # 6933f8 0.00 : 445be6: 89 c2 mov %eax,%edx 0.00 : 445be8: 45 85 c9 test %r9d,%r9d 0.00 : 445beb: 74 d7 je 445bc4 0.00 : 445bed: 83 f8 02 cmp $0x2,%eax 0.00 : 445bf0: 75 d2 jne 445bc4 0.00 : 445bf2: 44 8b 05 af 0e 25 00 mov 0x250eaf(%rip),%r8d # 696aa8 0.00 : 445bf9: 45 85 c0 test %r8d,%r8d 0.00 : 445bfc: 74 c6 je 445bc4 0.00 : 445bfe: be 01 00 00 00 mov $0x1,%esi 0.00 : 445c03: bf c0 6a 69 00 mov $0x696ac0,%edi 0.00 : 445c08: c7 05 1e 10 25 00 02 movl $0x2,0x25101e(%rip) # 696c30 0.00 : 445c0f: 00 00 00 0.00 : 445c12: e8 d9 02 fd ff callq 415ef0 <__longjmp_chk@plt> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004466d0 : 0.00 : 4466d0: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 0.00 : 4466d5: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 4466da: 48 83 ec 18 sub $0x18,%rsp 0.00 : 4466de: 48 85 ff test %rdi,%rdi 0.00 : 4466e1: 48 89 fb mov %rdi,%rbx 0.00 : 4466e4: 74 2a je 446710 0.00 : 4466e6: 8b 2f mov (%rdi),%ebp 0.00 : 4466e8: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 4466ec: 48 85 ff test %rdi,%rdi 0.00 : 4466ef: 74 05 je 4466f6 0.00 : 4466f1: e8 ca fc fc ff callq 4163c0 0.00 : 4466f6: 48 89 df mov %rbx,%rdi 0.00 : 4466f9: e8 c2 fc fc ff callq 4163c0 0.00 : 4466fe: 48 8b 05 7b f7 24 00 mov 0x24f77b(%rip),%rax # 695e80 0.00 : 446705: 48 63 d5 movslq %ebp,%rdx 0.00 : 446708: 48 c7 04 d0 00 00 00 movq $0x0,(%rax,%rdx,8) 0.00 : 44670f: 00 ??:0 100.00 : 446710: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 446715: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 44671a: 48 83 c4 18 add $0x18,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000446cf0 : 0.00 : 446cf0: 48 83 ec 08 sub $0x8,%rsp ??:0 100.00 : 446cf4: 83 3d 45 fd 24 00 04 cmpl $0x4,0x24fd45(%rip) # 696a40 0.00 : 446cfb: 74 43 je 446d40 0.00 : 446cfd: 8b 35 d5 c6 24 00 mov 0x24c6d5(%rip),%esi # 6933d8 0.00 : 446d03: 85 f6 test %esi,%esi 0.00 : 446d05: 74 09 je 446d10 0.00 : 446d07: 31 c0 xor %eax,%eax 0.00 : 446d09: 48 83 c4 08 add $0x8,%rsp 0.00 : 446d0d: c3 retq 0.00 : 446d0e: 66 90 xchg %ax,%ax 0.00 : 446d10: 3b 3d 8a 3d 24 00 cmp 0x243d8a(%rip),%edi # 68aaa0 0.00 : 446d16: 75 ef jne 446d07 0.00 : 446d18: 83 ff 00 cmp $0x0,%edi 0.00 : 446d1b: 7e 33 jle 446d50 0.00 : 446d1d: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 446d22: e8 89 fe ff ff callq 446bb0 0.00 : 446d27: 83 c0 01 add $0x1,%eax 0.00 : 446d2a: 75 db jne 446d07 0.00 : 446d2c: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 446d31: 48 83 c4 08 add $0x8,%rsp 0.00 : 446d35: c3 retq 0.00 : 446d36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 446d3d: 00 00 00 0.00 : 446d40: 3b 3d 0a fd 24 00 cmp 0x24fd0a(%rip),%edi # 696a50 0.00 : 446d46: 75 b5 jne 446cfd 0.00 : 446d48: eb ce jmp 446d18 0.00 : 446d4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 446d50: 75 b5 jne 446d07 0.00 : 446d52: 31 ff xor %edi,%edi 0.00 : 446d54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 446d58: e8 13 f9 ff ff callq 446670 0.00 : 446d5d: 83 c0 01 add $0x1,%eax 0.00 : 446d60: 75 a5 jne 446d07 0.00 : 446d62: eb c8 jmp 446d2c Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000044b530 : 0.00 : 44b530: 41 56 push %r14 0.00 : 44b532: 41 55 push %r13 0.00 : 44b534: 49 89 fd mov %rdi,%r13 0.00 : 44b537: 41 54 push %r12 0.00 : 44b539: 49 89 fc mov %rdi,%r12 0.00 : 44b53c: 55 push %rbp 0.00 : 44b53d: 53 push %rbx ??:0 100.00 : 44b53e: 48 83 ec 10 sub $0x10,%rsp 0.00 : 44b542: 80 3f 28 cmpb $0x28,(%rdi) 0.00 : 44b545: 0f 84 18 01 00 00 je 44b663 0.00 : 44b54b: ba 35 6d 47 00 mov $0x476d35,%edx 0.00 : 44b550: be 01 00 00 00 mov $0x1,%esi 0.00 : 44b555: 4c 89 ef mov %r13,%rdi 0.00 : 44b558: e8 23 40 fd ff callq 41f580 0.00 : 44b55d: 31 db xor %ebx,%ebx 0.00 : 44b55f: 48 85 c0 test %rax,%rax 0.00 : 44b562: 48 89 c5 mov %rax,%rbp 0.00 : 44b565: 74 38 je 44b59f 0.00 : 44b567: 48 89 c3 mov %rax,%rbx 0.00 : 44b56a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44b570: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 44b574: 48 85 c0 test %rax,%rax 0.00 : 44b577: 74 13 je 44b58c 0.00 : 44b579: 48 8b 38 mov (%rax),%rdi 0.00 : 44b57c: 48 85 ff test %rdi,%rdi 0.00 : 44b57f: 74 0b je 44b58c 0.00 : 44b581: 0f b6 07 movzbl (%rdi),%eax 0.00 : 44b584: 84 c0 test %al,%al 0.00 : 44b586: 74 04 je 44b58c 0.00 : 44b588: 3c 5b cmp $0x5b,%al 0.00 : 44b58a: 74 3c je 44b5c8 0.00 : 44b58c: 48 8b 1b mov (%rbx),%rbx 0.00 : 44b58f: 48 85 db test %rbx,%rbx 0.00 : 44b592: 75 dc jne 44b570 0.00 : 44b594: 48 89 ef mov %rbp,%rdi 0.00 : 44b597: e8 64 4f ff ff callq 440500 0.00 : 44b59c: 48 89 c3 mov %rax,%rbx 0.00 : 44b59f: 48 89 ef mov %rbp,%rdi 0.00 : 44b5a2: e8 59 a4 fd ff callq 425a00 0.00 : 44b5a7: 4d 39 e5 cmp %r12,%r13 0.00 : 44b5aa: 74 08 je 44b5b4 0.00 : 44b5ac: 4c 89 ef mov %r13,%rdi 0.00 : 44b5af: e8 0c ae fc ff callq 4163c0 0.00 : 44b5b4: 48 83 c4 10 add $0x10,%rsp 0.00 : 44b5b8: 48 89 d8 mov %rbx,%rax 0.00 : 44b5bb: 5b pop %rbx 0.00 : 44b5bc: 5d pop %rbp 0.00 : 44b5bd: 41 5c pop %r12 0.00 : 44b5bf: 41 5d pop %r13 0.00 : 44b5c1: 41 5e pop %r14 0.00 : 44b5c3: c3 retq 0.00 : 44b5c4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 44b5c8: be 3d 00 00 00 mov $0x3d,%esi 0.00 : 44b5cd: e8 6e 27 02 00 callq 46dd40 0.00 : 44b5d2: 48 85 c0 test %rax,%rax 0.00 : 44b5d5: 74 b5 je 44b58c 0.00 : 44b5d7: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 44b5db: 48 8b 38 mov (%rax),%rdi 0.00 : 44b5de: e8 0d ae fc ff callq 4163f0 0.00 : 44b5e3: 48 8d 7c 00 01 lea 0x1(%rax,%rax,1),%rdi 0.00 : 44b5e8: e8 d3 cc 00 00 callq 4582c0 0.00 : 44b5ed: 49 89 c6 mov %rax,%r14 0.00 : 44b5f0: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 44b5f4: 31 f6 xor %esi,%esi 0.00 : 44b5f6: 4c 89 f1 mov %r14,%rcx 0.00 : 44b5f9: 48 8b 00 mov (%rax),%rax 0.00 : 44b5fc: 0f b6 10 movzbl (%rax),%edx 0.00 : 44b5ff: 84 d2 test %dl,%dl 0.00 : 44b601: 75 25 jne 44b628 0.00 : 44b603: eb 43 jmp 44b648 0.00 : 44b605: 0f 1f 00 nopl (%rax) 0.00 : 44b608: 85 f6 test %esi,%esi 0.00 : 44b60a: 75 0b jne 44b617 0.00 : 44b60c: 80 fa 5b cmp $0x5b,%dl 0.00 : 44b60f: 90 nop 0.00 : 44b610: 74 26 je 44b638 0.00 : 44b612: 80 fa 5d cmp $0x5d,%dl 0.00 : 44b615: 74 21 je 44b638 0.00 : 44b617: 48 83 c0 01 add $0x1,%rax 0.00 : 44b61b: 88 11 mov %dl,(%rcx) 0.00 : 44b61d: 48 83 c1 01 add $0x1,%rcx 0.00 : 44b621: 0f b6 10 movzbl (%rax),%edx 0.00 : 44b624: 84 d2 test %dl,%dl 0.00 : 44b626: 74 20 je 44b648 0.00 : 44b628: 80 fa 3d cmp $0x3d,%dl 0.00 : 44b62b: 75 db jne 44b608 0.00 : 44b62d: be 01 00 00 00 mov $0x1,%esi 0.00 : 44b632: eb e3 jmp 44b617 0.00 : 44b634: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 44b638: c6 01 5c movb $0x5c,(%rcx) 0.00 : 44b63b: 48 83 c1 01 add $0x1,%rcx 0.00 : 44b63f: 0f b6 10 movzbl (%rax),%edx 0.00 : 44b642: eb d3 jmp 44b617 0.00 : 44b644: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 44b648: c6 01 00 movb $0x0,(%rcx) 0.00 : 44b64b: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 44b64f: 48 8b 38 mov (%rax),%rdi 0.00 : 44b652: e8 69 ad fc ff callq 4163c0 0.00 : 44b657: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 44b65b: 4c 89 30 mov %r14,(%rax) 0.00 : 44b65e: e9 29 ff ff ff jmpq 44b58c 0.00 : 44b663: 48 8d 74 24 0c lea 0xc(%rsp),%rsi 0.00 : 44b668: c7 44 24 0c 01 00 00 movl $0x1,0xc(%rsp) 0.00 : 44b66f: 00 0.00 : 44b670: 31 db xor %ebx,%ebx 0.00 : 44b672: e8 49 cc fe ff callq 4382c0 0.00 : 44b677: 48 85 c0 test %rax,%rax 0.00 : 44b67a: 49 89 c5 mov %rax,%r13 0.00 : 44b67d: 0f 85 c8 fe ff ff jne 44b54b 0.00 : 44b683: e9 2c ff ff ff jmpq 44b5b4 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000044b740 : ??:0 100.00 : 44b740: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 0.00 : 44b745: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 44b74a: 48 83 ec 18 sub $0x18,%rsp 0.00 : 44b74e: 48 89 fd mov %rdi,%rbp 0.00 : 44b751: 89 f3 mov %esi,%ebx 0.00 : 44b753: e8 38 02 fe ff callq 42b990 0.00 : 44b758: 48 85 c0 test %rax,%rax 0.00 : 44b75b: 74 63 je 44b7c0 0.00 : 44b75d: 85 db test %ebx,%ebx 0.00 : 44b75f: 75 1f jne 44b780 0.00 : 44b761: f6 40 28 04 testb $0x4,0x28(%rax) 0.00 : 44b765: 74 39 je 44b7a0 0.00 : 44b767: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44b76c: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 44b771: 48 83 c4 18 add $0x18,%rsp 0.00 : 44b775: c3 retq 0.00 : 44b776: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 44b77d: 00 00 00 0.00 : 44b780: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 44b783: f7 c2 02 40 00 00 test $0x4002,%edx 0.00 : 44b789: 74 d6 je 44b761 0.00 : 44b78b: 31 c0 xor %eax,%eax 0.00 : 44b78d: 83 e2 02 and $0x2,%edx 0.00 : 44b790: 74 d5 je 44b767 0.00 : 44b792: 48 89 ef mov %rbp,%rdi 0.00 : 44b795: e8 96 56 fe ff callq 430e30 0.00 : 44b79a: 31 c0 xor %eax,%eax 0.00 : 44b79c: eb c9 jmp 44b767 0.00 : 44b79e: 66 90 xchg %ax,%ax 0.00 : 44b7a0: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44b7a5: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 44b7aa: 48 89 c7 mov %rax,%rdi 0.00 : 44b7ad: 48 83 c4 18 add $0x18,%rsp 0.00 : 44b7b1: e9 da fe ff ff jmpq 44b690 0.00 : 44b7b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 44b7bd: 00 00 00 0.00 : 44b7c0: 48 89 ef mov %rbp,%rdi 0.00 : 44b7c3: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44b7c8: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 44b7cd: 48 83 c4 18 add $0x18,%rsp 0.00 : 44b7d1: e9 ba 1b fe ff jmpq 42d390 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000044bea0 : 0.00 : 44bea0: 55 push %rbp 0.00 : 44bea1: be 5b 00 00 00 mov $0x5b,%esi 0.00 : 44bea6: 48 89 fd mov %rdi,%rbp 0.00 : 44bea9: 53 push %rbx 0.00 : 44beaa: 48 83 ec 08 sub $0x8,%rsp 0.00 : 44beae: e8 8d 1e 02 00 callq 46dd40 0.00 : 44beb3: 48 85 c0 test %rax,%rax 0.00 : 44beb6: 48 89 c3 mov %rax,%rbx 0.00 : 44beb9: 74 12 je 44becd 0.00 : 44bebb: c6 00 00 movb $0x0,(%rax) 0.00 : 44bebe: 48 89 ef mov %rbp,%rdi 0.00 : 44bec1: e8 7a 65 fd ff callq 422440 0.00 : 44bec6: 85 c0 test %eax,%eax 0.00 : 44bec8: c6 03 5b movb $0x5b,(%rbx) 0.00 : 44becb: 75 13 jne 44bee0 0.00 : 44becd: 31 c0 xor %eax,%eax 0.00 : 44becf: 48 83 c4 08 add $0x8,%rsp 0.00 : 44bed3: 5b pop %rbx ??:0 100.00 : 44bed4: 5d pop %rbp 0.00 : 44bed5: c3 retq 0.00 : 44bed6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 44bedd: 00 00 00 0.00 : 44bee0: 31 f6 xor %esi,%esi 0.00 : 44bee2: 48 89 df mov %rbx,%rdi 0.00 : 44bee5: e8 d6 f9 ff ff callq 44b8c0 0.00 : 44beea: 89 c6 mov %eax,%esi 0.00 : 44beec: 48 98 cltq 0.00 : 44beee: 80 3c 03 5d cmpb $0x5d,(%rbx,%rax,1) 0.00 : 44bef2: 75 d9 jne 44becd 0.00 : 44bef4: 83 fe 01 cmp $0x1,%esi 0.00 : 44bef7: 74 d4 je 44becd 0.00 : 44bef9: 7e d2 jle 44becd 0.00 : 44befb: 0f b6 43 01 movzbl 0x1(%rbx),%eax 0.00 : 44beff: 3c 20 cmp $0x20,%al 0.00 : 44bf01: 74 1d je 44bf20 0.00 : 44bf03: 3c 09 cmp $0x9,%al 0.00 : 44bf05: 74 19 je 44bf20 0.00 : 44bf07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44bf0e: 00 00 0.00 : 44bf10: b8 01 00 00 00 mov $0x1,%eax 0.00 : 44bf15: eb b8 jmp 44becf 0.00 : 44bf17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44bf1e: 00 00 0.00 : 44bf20: 48 89 d8 mov %rbx,%rax 0.00 : 44bf23: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 44bf28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 44bf2f: 00 0.00 : 44bf30: 83 c1 01 add $0x1,%ecx 0.00 : 44bf33: 39 ce cmp %ecx,%esi 0.00 : 44bf35: 7e 96 jle 44becd 0.00 : 44bf37: 0f b6 50 02 movzbl 0x2(%rax),%edx 0.00 : 44bf3b: 48 83 c0 01 add $0x1,%rax 0.00 : 44bf3f: 80 fa 20 cmp $0x20,%dl 0.00 : 44bf42: 74 ec je 44bf30 0.00 : 44bf44: 80 fa 09 cmp $0x9,%dl 0.00 : 44bf47: 75 c7 jne 44bf10 0.00 : 44bf49: eb e5 jmp 44bf30 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004529a0 : ??:0 100.00 : 4529a0: 48 89 f0 mov %rsi,%rax 0.00 : 4529a3: 48 63 d2 movslq %edx,%rdx 0.00 : 4529a6: 48 89 fe mov %rdi,%rsi 0.00 : 4529a9: 48 89 c7 mov %rax,%rdi 0.00 : 4529ac: e9 7f 3d fc ff jmpq 416730 Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000452e50 : 0.00 : 452e50: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 50.00 : 452e55: 89 d3 mov %edx,%ebx 0.00 : 452e57: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 452e5c: 29 f3 sub %esi,%ebx 0.00 : 452e5e: 49 89 fd mov %rdi,%r13 0.00 : 452e61: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 452e66: 8d 7b 01 lea 0x1(%rbx),%edi 0.00 : 452e69: 89 f5 mov %esi,%ebp 0.00 : 452e6b: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 452e70: 48 83 ec 28 sub $0x28,%rsp 0.00 : 452e74: 48 63 db movslq %ebx,%rbx 0.00 : 452e77: 48 63 ff movslq %edi,%rdi 0.00 : 452e7a: e8 41 54 00 00 callq 4582c0 0.00 : 452e7f: 49 89 c4 mov %rax,%r12 0.00 : 452e82: 48 63 c5 movslq %ebp,%rax 0.00 : 452e85: 48 89 da mov %rbx,%rdx 0.00 : 452e88: 49 8d 74 05 00 lea 0x0(%r13,%rax,1),%rsi 0.00 : 452e8d: 4c 89 e7 mov %r12,%rdi 0.00 : 452e90: e8 bb 3b fc ff callq 416a50 50.00 : 452e95: 41 c6 04 1c 00 movb $0x0,(%r12,%rbx,1) 0.00 : 452e9a: 4c 89 e0 mov %r12,%rax 0.00 : 452e9d: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 452ea2: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 452ea7: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 452eac: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 452eb1: 48 83 c4 28 add $0x28,%rsp Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000045b590 : ??:0 50.00 : 45b590: 41 57 push %r15 0.00 : 45b592: 41 56 push %r14 0.00 : 45b594: 41 55 push %r13 0.00 : 45b596: 49 89 fd mov %rdi,%r13 0.00 : 45b599: 41 54 push %r12 0.00 : 45b59b: 55 push %rbp 0.00 : 45b59c: 53 push %rbx 0.00 : 45b59d: 48 83 ec 18 sub $0x18,%rsp 0.00 : 45b5a1: 8b 35 61 7e 23 00 mov 0x237e61(%rip),%esi # 693408 0.00 : 45b5a7: 44 8b 3d be ad 23 00 mov 0x23adbe(%rip),%r15d # 69636c 0.00 : 45b5ae: 85 f6 test %esi,%esi 0.00 : 45b5b0: 0f 84 1a 01 00 00 je 45b6d0 0.00 : 45b5b6: 45 85 ff test %r15d,%r15d 0.00 : 45b5b9: c7 44 24 04 01 00 00 movl $0x1,0x4(%rsp) 0.00 : 45b5c0: 00 0.00 : 45b5c1: 0f 84 09 01 00 00 je 45b6d0 0.00 : 45b5c7: 48 8b 3d d2 7d 23 00 mov 0x237dd2(%rip),%rdi # 6933a0 0.00 : 45b5ce: e8 3d b5 fb ff callq 416b10 0.00 : 45b5d3: 4d 85 ed test %r13,%r13 0.00 : 45b5d6: 0f 84 b4 02 00 00 je 45b890 0.00 : 45b5dc: 4c 8d 74 24 10 lea 0x10(%rsp),%r14 0.00 : 45b5e1: 4c 8d 64 24 14 lea 0x14(%rsp),%r12 0.00 : 45b5e6: 45 85 ff test %r15d,%r15d 0.00 : 45b5e9: c7 44 24 10 00 00 00 movl $0x0,0x10(%rsp) 0.00 : 45b5f0: 00 0.00 : 45b5f1: c7 44 24 14 00 00 00 movl $0x0,0x14(%rsp) 0.00 : 45b5f8: 00 0.00 : 45b5f9: 0f 84 d1 01 00 00 je 45b7d0 0.00 : 45b5ff: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 45b603: 48 8b 18 mov (%rax),%rbx 0.00 : 45b606: 48 85 db test %rbx,%rbx 0.00 : 45b609: 0f 84 d1 01 00 00 je 45b7e0 0.00 : 45b60f: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 45b612: 0f 84 c8 01 00 00 je 45b7e0 0.00 : 45b618: 80 7b 01 00 cmpb $0x0,0x1(%rbx) 0.00 : 45b61c: be 01 00 00 00 mov $0x1,%esi 0.00 : 45b621: 74 15 je 45b638 0.00 : 45b623: 80 7b 02 00 cmpb $0x0,0x2(%rbx) 0.00 : 45b627: be 02 00 00 00 mov $0x2,%esi 0.00 : 45b62c: 0f 85 7c 02 00 00 jne 45b8ae 0.00 : 45b632: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45b638: 4d 89 f0 mov %r14,%r8 0.00 : 45b63b: 4c 89 e1 mov %r12,%rcx 0.00 : 45b63e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 45b643: 48 89 df mov %rbx,%rdi 0.00 : 45b646: e8 65 16 01 00 callq 46ccb0 0.00 : 45b64b: 48 89 c5 mov %rax,%rbp 0.00 : 45b64e: 48 85 ed test %rbp,%rbp 0.00 : 45b651: 74 47 je 45b69a 0.00 : 45b653: 45 85 ff test %r15d,%r15d 0.00 : 45b656: 0f 84 94 01 00 00 je 45b7f0 0.00 : 45b65c: 8b 4c 24 10 mov 0x10(%rsp),%ecx 0.00 : 45b660: 85 c9 test %ecx,%ecx 0.00 : 45b662: 7e 2e jle 45b692 0.00 : 45b664: 48 89 eb mov %rbp,%rbx 0.00 : 45b667: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45b66e: 00 00 0.00 : 45b670: 0f be 3b movsbl (%rbx),%edi 0.00 : 45b673: 48 8b 35 26 7d 23 00 mov 0x237d26(%rip),%rsi # 6933a0 0.00 : 45b67a: 48 83 c3 01 add $0x1,%rbx 0.00 : 45b67e: e8 6d b6 fb ff callq 416cf0 <_IO_putc@plt> 0.00 : 45b683: 8b 44 24 10 mov 0x10(%rsp),%eax 0.00 : 45b687: 83 e8 01 sub $0x1,%eax 0.00 : 45b68a: 85 c0 test %eax,%eax 0.00 : 45b68c: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 45b690: 7f de jg 45b670 0.00 : 45b692: 48 89 ef mov %rbp,%rdi 0.00 : 45b695: e8 26 ad fb ff callq 4163c0 0.00 : 45b69a: 8b 54 24 14 mov 0x14(%rsp),%edx 0.00 : 45b69e: 4d 8b 6d 00 mov 0x0(%r13),%r13 0.00 : 45b6a2: 85 d2 test %edx,%edx 0.00 : 45b6a4: 0f 85 6e 01 00 00 jne 45b818 0.00 : 45b6aa: 4d 85 ed test %r13,%r13 0.00 : 45b6ad: 0f 84 dd 01 00 00 je 45b890 0.00 : 45b6b3: 48 8b 35 e6 7c 23 00 mov 0x237ce6(%rip),%rsi # 6933a0 0.00 : 45b6ba: bf 20 00 00 00 mov $0x20,%edi 0.00 : 45b6bf: e8 2c b6 fb ff callq 416cf0 <_IO_putc@plt> 0.00 : 45b6c4: e9 1d ff ff ff jmpq 45b5e6 0.00 : 45b6c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 45b6d0: 4d 85 ed test %r13,%r13 0.00 : 45b6d3: 0f 84 a2 01 00 00 je 45b87b 0.00 : 45b6d9: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 45b6dd: 48 8b 00 mov (%rax),%rax 0.00 : 45b6e0: 48 85 c0 test %rax,%rax 0.00 : 45b6e3: 0f 84 d4 01 00 00 je 45b8bd 0.00 : 45b6e9: c7 44 24 04 01 00 00 movl $0x1,0x4(%rsp) 0.00 : 45b6f0: 00 0.00 : 45b6f1: 80 38 2d cmpb $0x2d,(%rax) 0.00 : 45b6f4: 0f 85 c3 01 00 00 jne 45b8bd 0.00 : 45b6fa: c7 44 24 14 00 00 00 movl $0x0,0x14(%rsp) 0.00 : 45b701: 00 0.00 : 45b702: 44 0f b6 60 01 movzbl 0x1(%rax),%r12d 0.00 : 45b707: 4c 8d 70 01 lea 0x1(%rax),%r14 0.00 : 45b70b: 45 84 e4 test %r12b,%r12b 0.00 : 45b70e: 0f 84 b3 fe ff ff je 45b5c7 0.00 : 45b714: 48 89 c5 mov %rax,%rbp 0.00 : 45b717: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 45b71c: eb 17 jmp 45b735 0.00 : 45b71e: 66 90 xchg %ax,%ax 0.00 : 45b720: 89 5c 24 14 mov %ebx,0x14(%rsp) 0.00 : 45b724: 44 0f b6 65 02 movzbl 0x2(%rbp),%r12d 0.00 : 45b729: 83 c3 01 add $0x1,%ebx 0.00 : 45b72c: 48 83 c5 01 add $0x1,%rbp 0.00 : 45b730: 45 84 e4 test %r12b,%r12b 0.00 : 45b733: 74 13 je 45b748 0.00 : 45b735: 41 0f be f4 movsbl %r12b,%esi 0.00 : 45b739: bf 20 95 47 00 mov $0x479520,%edi 0.00 : 45b73e: e8 3d b0 fb ff callq 416780 0.00 : 45b743: 48 85 c0 test %rax,%rax 0.00 : 45b746: 75 d8 jne 45b720 0.00 : 45b748: 41 0f b6 16 movzbl (%r14),%edx 0.00 : 45b74c: 84 d2 test %dl,%dl 0.00 : 45b74e: 0f 84 73 fe ff ff je 45b5c7 0.00 : 45b754: 45 84 e4 test %r12b,%r12b 0.00 : 45b757: 0f 85 6a fe ff ff jne 45b5c7 0.00 : 45b75d: 0f be c2 movsbl %dl,%eax 0.00 : 45b760: 85 c0 test %eax,%eax 0.00 : 45b762: 89 44 24 14 mov %eax,0x14(%rsp) 0.00 : 45b766: 74 34 je 45b79c 0.00 : 45b768: 80 fa 65 cmp $0x65,%dl 0.00 : 45b76b: 0f 84 ff 00 00 00 je 45b870 0.00 : 45b771: 80 fa 6e cmp $0x6e,%dl 0.00 : 45b774: 0f 84 e3 00 00 00 je 45b85d 0.00 : 45b77a: 80 fa 45 cmp $0x45,%dl 0.00 : 45b77d: 0f 1f 00 nopl (%rax) 0.00 : 45b780: 0f 85 41 fe ff ff jne 45b5c7 0.00 : 45b786: 45 31 ff xor %r15d,%r15d 0.00 : 45b789: 49 83 c6 01 add $0x1,%r14 0.00 : 45b78d: 41 0f b6 16 movzbl (%r14),%edx 0.00 : 45b791: 0f be c2 movsbl %dl,%eax 0.00 : 45b794: 85 c0 test %eax,%eax 0.00 : 45b796: 89 44 24 14 mov %eax,0x14(%rsp) 0.00 : 45b79a: 75 cc jne 45b768 0.00 : 45b79c: 4d 8b 6d 00 mov 0x0(%r13),%r13 0.00 : 45b7a0: 4d 85 ed test %r13,%r13 0.00 : 45b7a3: 0f 84 da 00 00 00 je 45b883 0.00 : 45b7a9: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 45b7ad: 48 8b 00 mov (%rax),%rax 0.00 : 45b7b0: 48 85 c0 test %rax,%rax 0.00 : 45b7b3: 74 09 je 45b7be 0.00 : 45b7b5: 80 38 2d cmpb $0x2d,(%rax) 0.00 : 45b7b8: 0f 84 3c ff ff ff je 45b6fa 0.00 : 45b7be: 48 8b 3d db 7b 23 00 mov 0x237bdb(%rip),%rdi # 6933a0 0.00 : 45b7c5: e8 46 b3 fb ff callq 416b10 0.00 : 45b7ca: e9 0d fe ff ff jmpq 45b5dc 0.00 : 45b7cf: 90 nop 0.00 : 45b7d0: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 45b7d4: 48 8b 28 mov (%rax),%rbp 50.00 : 45b7d7: e9 72 fe ff ff jmpq 45b64e 0.00 : 45b7dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 45b7e0: 31 f6 xor %esi,%esi 0.00 : 45b7e2: e9 51 fe ff ff jmpq 45b638 0.00 : 45b7e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45b7ee: 00 00 0.00 : 45b7f0: 48 89 ea mov %rbp,%rdx 0.00 : 45b7f3: 31 c0 xor %eax,%eax 0.00 : 45b7f5: be e3 9d 47 00 mov $0x479de3,%esi 0.00 : 45b7fa: bf 01 00 00 00 mov $0x1,%edi 0.00 : 45b7ff: e8 3c a8 fb ff callq 416040 <__printf_chk@plt> 0.00 : 45b804: 8b 54 24 14 mov 0x14(%rsp),%edx 0.00 : 45b808: 4d 8b 6d 00 mov 0x0(%r13),%r13 0.00 : 45b80c: 85 d2 test %edx,%edx 0.00 : 45b80e: 0f 84 96 fe ff ff je 45b6aa 0.00 : 45b814: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 45b818: 48 8b 3d 81 7b 23 00 mov 0x237b81(%rip),%rdi # 6933a0 0.00 : 45b81f: e8 0c b5 fb ff callq 416d30 0.00 : 45b824: 48 8b 3d 75 7b 23 00 mov 0x237b75(%rip),%rdi # 6933a0 0.00 : 45b82b: e8 e0 ab fb ff callq 416410 0.00 : 45b830: 31 d2 xor %edx,%edx 0.00 : 45b832: 85 c0 test %eax,%eax 0.00 : 45b834: 74 16 je 45b84c 0.00 : 45b836: e8 a5 ec ff ff callq 45a4e0 0.00 : 45b83b: 48 8b 3d 5e 7b 23 00 mov 0x237b5e(%rip),%rdi # 6933a0 0.00 : 45b842: e8 c9 b2 fb ff callq 416b10 0.00 : 45b847: ba 01 00 00 00 mov $0x1,%edx 0.00 : 45b84c: 48 83 c4 18 add $0x18,%rsp 0.00 : 45b850: 89 d0 mov %edx,%eax 0.00 : 45b852: 5b pop %rbx 0.00 : 45b853: 5d pop %rbp 0.00 : 45b854: 41 5c pop %r12 0.00 : 45b856: 41 5d pop %r13 0.00 : 45b858: 41 5e pop %r14 0.00 : 45b85a: 41 5f pop %r15 0.00 : 45b85c: c3 retq 0.00 : 45b85d: c7 44 24 04 00 00 00 movl $0x0,0x4(%rsp) 0.00 : 45b864: 00 0.00 : 45b865: e9 1f ff ff ff jmpq 45b789 0.00 : 45b86a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45b870: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 45b876: e9 0e ff ff ff jmpq 45b789 0.00 : 45b87b: c7 44 24 04 01 00 00 movl $0x1,0x4(%rsp) 0.00 : 45b882: 00 0.00 : 45b883: 48 8b 3d 16 7b 23 00 mov 0x237b16(%rip),%rdi # 6933a0 0.00 : 45b88a: e8 81 b2 fb ff callq 416b10 0.00 : 45b88f: 90 nop 0.00 : 45b890: 8b 44 24 04 mov 0x4(%rsp),%eax 0.00 : 45b894: 85 c0 test %eax,%eax 0.00 : 45b896: 74 80 je 45b818 0.00 : 45b898: 48 8b 35 01 7b 23 00 mov 0x237b01(%rip),%rsi # 6933a0 0.00 : 45b89f: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 45b8a4: e8 47 b4 fb ff callq 416cf0 <_IO_putc@plt> 0.00 : 45b8a9: e9 6a ff ff ff jmpq 45b818 0.00 : 45b8ae: 48 89 df mov %rbx,%rdi 0.00 : 45b8b1: e8 3a ab fb ff callq 4163f0 0.00 : 45b8b6: 89 c6 mov %eax,%esi 0.00 : 45b8b8: e9 7b fd ff ff jmpq 45b638 0.00 : 45b8bd: c7 44 24 04 01 00 00 movl $0x1,0x4(%rsp) 0.00 : 45b8c4: 00 0.00 : 45b8c5: e9 f4 fe ff ff jmpq 45b7be Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000462320 : 0.00 : 462320: 85 ff test %edi,%edi ??:0 100.00 : 462322: 53 push %rbx 0.00 : 462323: 74 0b je 462330 0.00 : 462325: 5b pop %rbx 0.00 : 462326: e9 15 fc ff ff jmpq 461f40 0.00 : 46232b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 462330: bf dd 9f 47 00 mov $0x479fdd,%edi 0.00 : 462335: e8 56 96 fc ff callq 42b990 0.00 : 46233a: 48 85 c0 test %rax,%rax 0.00 : 46233d: 74 e6 je 462325 0.00 : 46233f: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 462342: 66 85 d2 test %dx,%dx 0.00 : 462345: 79 de jns 462325 0.00 : 462347: 83 e2 04 and $0x4,%edx 0.00 : 46234a: 75 d9 jne 462325 0.00 : 46234c: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 462350: 48 89 df mov %rbx,%rdi 0.00 : 462353: e8 98 40 fb ff callq 4163f0 0.00 : 462358: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 46235c: e8 5f 5f ff ff callq 4582c0 0.00 : 462361: 48 89 de mov %rbx,%rsi 0.00 : 462364: 48 89 c7 mov %rax,%rdi 0.00 : 462367: e8 04 46 fb ff callq 416970 0.00 : 46236c: 48 85 c0 test %rax,%rax 0.00 : 46236f: 48 89 c3 mov %rax,%rbx 0.00 : 462372: 74 b1 je 462325 0.00 : 462374: 48 89 c7 mov %rax,%rdi 0.00 : 462377: e8 44 ff ff ff callq 4622c0 0.00 : 46237c: 48 89 df mov %rbx,%rdi 0.00 : 46237f: e8 3c 40 fb ff callq 4163c0 0.00 : 462384: 5b pop %rbx 0.00 : 462385: e9 b6 fb ff ff jmpq 461f40 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004693b0 : 0.00 : 4693b0: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 4693b5: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 4693ba: 48 89 fb mov %rdi,%rbx 0.00 : 4693bd: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 4693c2: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 4693c7: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 4693cc: 48 83 ec 28 sub $0x28,%rsp 0.00 : 4693d0: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 4693d3: 75 23 jne 4693f8 0.00 : 4693d5: 31 c0 xor %eax,%eax 0.00 : 4693d7: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4693db: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 4693e0: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 4693e5: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 4693ea: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 4693ef: 48 83 c4 28 add $0x28,%rsp 0.00 : 4693f3: c3 retq 0.00 : 4693f4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4693f8: e8 13 24 fc ff callq 42b810 0.00 : 4693fd: 48 85 c0 test %rax,%rax 0.00 : 469400: 48 89 c5 mov %rax,%rbp 0.00 : 469403: 74 41 je 469446 0.00 : 469405: 48 8b 3d 4c d2 22 00 mov 0x22d24c(%rip),%rdi # 696658 0.00 : 46940c: 48 85 ff test %rdi,%rdi 0.00 : 46940f: 74 05 je 469416 0.00 : 469411: e8 aa cf fa ff callq 4163c0 0.00 : 469416: 48 8b 5d 08 mov 0x8(%rbp),%rbx 0.00 : 46941a: 31 c0 xor %eax,%eax 0.00 : 46941c: 48 85 db test %rbx,%rbx 0.00 : 46941f: 74 1c je 46943d 0.00 : 469421: 48 89 df mov %rbx,%rdi 0.00 : 469424: e8 c7 cf fa ff callq 4163f0 0.00 : 469429: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 46942d: e8 8e ee fe ff callq 4582c0 0.00 : 469432: 48 89 de mov %rbx,%rsi 0.00 : 469435: 48 89 c7 mov %rax,%rdi 0.00 : 469438: e8 33 d5 fa ff callq 416970 0.00 : 46943d: 48 89 05 14 d2 22 00 mov %rax,0x22d214(%rip) # 696658 0.00 : 469444: eb 91 jmp 4693d7 ??:0 100.00 : 469446: 48 83 3d 1a b5 22 00 cmpq $0x0,0x22b51a(%rip) # 694968 0.00 : 46944d: 00 0.00 : 46944e: 74 25 je 469475 0.00 : 469450: 48 89 df mov %rbx,%rdi 0.00 : 469453: e8 38 25 fc ff callq 42b990 0.00 : 469458: 48 85 c0 test %rax,%rax 0.00 : 46945b: 0f 84 74 ff ff ff je 4693d5 0.00 : 469461: f6 40 28 01 testb $0x1,0x28(%rax) 0.00 : 469465: 0f 84 6a ff ff ff je 4693d5 0.00 : 46946b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 46946f: 90 nop 0.00 : 469470: e9 62 ff ff ff jmpq 4693d7 0.00 : 469475: 48 89 df mov %rbx,%rdi 0.00 : 469478: e8 73 cf fa ff callq 4163f0 0.00 : 46947d: 41 89 c6 mov %eax,%r14d 0.00 : 469480: 48 8b 05 99 6c 22 00 mov 0x226c99(%rip),%rax # 690120 <__environ> 0.00 : 469487: 48 8b 28 mov (%rax),%rbp 0.00 : 46948a: 48 85 ed test %rbp,%rbp 0.00 : 46948d: 0f 84 42 ff ff ff je 4693d5 0.00 : 469493: 49 89 c4 mov %rax,%r12 0.00 : 469496: 4d 63 ee movslq %r14d,%r13 0.00 : 469499: eb 1f jmp 4694ba 0.00 : 46949b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4694a0: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 4694a4: 3a 03 cmp (%rbx),%al 0.00 : 4694a6: 74 2d je 4694d5 0.00 : 4694a8: 49 8b 6c 24 08 mov 0x8(%r12),%rbp 0.00 : 4694ad: 49 83 c4 08 add $0x8,%r12 0.00 : 4694b1: 48 85 ed test %rbp,%rbp 0.00 : 4694b4: 0f 84 1b ff ff ff je 4693d5 0.00 : 4694ba: 45 85 f6 test %r14d,%r14d 0.00 : 4694bd: 75 e1 jne 4694a0 0.00 : 4694bf: 42 80 7c 2d 00 3d cmpb $0x3d,0x0(%rbp,%r13,1) 0.00 : 4694c5: 75 e1 jne 4694a8 0.00 : 4694c7: 4a 8d 44 2d 01 lea 0x1(%rbp,%r13,1),%rax 0.00 : 4694cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4694d0: e9 02 ff ff ff jmpq 4693d7 0.00 : 4694d5: 4c 89 ea mov %r13,%rdx 0.00 : 4694d8: 48 89 de mov %rbx,%rsi 0.00 : 4694db: 48 89 ef mov %rbp,%rdi 0.00 : 4694de: e8 2d cc fa ff callq 416110 0.00 : 4694e3: 85 c0 test %eax,%eax 0.00 : 4694e5: 75 c1 jne 4694a8 0.00 : 4694e7: eb d6 jmp 4694bf Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046da60 : ??:0 100.00 : 46da60: 55 push %rbp 0.00 : 46da61: 49 89 f9 mov %rdi,%r9 0.00 : 46da64: 48 89 d5 mov %rdx,%rbp 0.00 : 46da67: 53 push %rbx 0.00 : 46da68: 48 89 cb mov %rcx,%rbx 0.00 : 46da6b: 48 83 ec 08 sub $0x8,%rsp 0.00 : 46da6f: 85 f6 test %esi,%esi 0.00 : 46da71: 74 45 je 46dab8 0.00 : 46da73: 8d 46 fe lea -0x2(%rsi),%eax 0.00 : 46da76: 83 f8 3e cmp $0x3e,%eax 0.00 : 46da79: 76 42 jbe 46dabd 0.00 : 46da7b: ba 05 00 00 00 mov $0x5,%edx 0.00 : 46da80: be 77 c6 47 00 mov $0x47c677,%esi 0.00 : 46da85: 31 ff xor %edi,%edi 0.00 : 46da87: e8 f4 8d fa ff callq 416880 0.00 : 46da8c: 48 8d 53 ff lea -0x1(%rbx),%rdx 0.00 : 46da90: 48 89 ef mov %rbp,%rdi 0.00 : 46da93: 48 89 c6 mov %rax,%rsi 0.00 : 46da96: e8 b5 8f fa ff callq 416a50 0.00 : 46da9b: c6 44 1d 00 00 movb $0x0,0x0(%rbp,%rbx,1) 0.00 : 46daa0: e8 9b 8d fa ff callq 416840 <__errno_location@plt> 0.00 : 46daa5: c7 00 16 00 00 00 movl $0x16,(%rax) 0.00 : 46daab: 48 83 c4 08 add $0x8,%rsp 0.00 : 46daaf: 48 89 e8 mov %rbp,%rax 0.00 : 46dab2: 5b pop %rbx 0.00 : 46dab3: 5d pop %rbp 0.00 : 46dab4: c3 retq 0.00 : 46dab5: 0f 1f 00 nopl (%rax) 0.00 : 46dab8: be 0a 00 00 00 mov $0xa,%esi 0.00 : 46dabd: 41 f6 c0 08 test $0x8,%r8b 0.00 : 46dac1: 75 09 jne 46dacc 0.00 : 46dac3: 4d 85 c9 test %r9,%r9 0.00 : 46dac6: 0f 88 d4 00 00 00 js 46dba0 0.00 : 46dacc: 45 31 d2 xor %r10d,%r10d 0.00 : 46dacf: 48 8d 4c 1d fe lea -0x2(%rbp,%rbx,1),%rcx 0.00 : 46dad4: 83 fe 08 cmp $0x8,%esi 0.00 : 46dad7: c6 41 01 00 movb $0x0,0x1(%rcx) 0.00 : 46dadb: 0f 84 9f 00 00 00 je 46db80 0.00 : 46dae1: 0f 8f c9 00 00 00 jg 46dbb0 0.00 : 46dae7: 83 fe 02 cmp $0x2,%esi 0.00 : 46daea: 0f 85 d2 00 00 00 jne 46dbc2 0.00 : 46daf0: 44 89 c8 mov %r9d,%eax 0.00 : 46daf3: 83 e0 01 and $0x1,%eax 0.00 : 46daf6: 83 c0 30 add $0x30,%eax 0.00 : 46daf9: 88 01 mov %al,(%rcx) 0.00 : 46dafb: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46daff: 49 d1 e9 shr %r9 0.00 : 46db02: 75 ec jne 46daf0 0.00 : 46db04: 41 f6 c0 01 test $0x1,%r8b 0.00 : 46db08: 74 17 je 46db21 0.00 : 46db0a: 83 fe 10 cmp $0x10,%esi 0.00 : 46db0d: 0f 94 c0 sete %al 0.00 : 46db10: 83 fe 08 cmp $0x8,%esi 0.00 : 46db13: 0f 84 df 01 00 00 je 46dcf8 0.00 : 46db19: 84 c0 test %al,%al 0.00 : 46db1b: 0f 85 0f 01 00 00 jne 46dc30 0.00 : 46db21: 41 83 e0 02 and $0x2,%r8d 0.00 : 46db25: 74 39 je 46db60 0.00 : 46db27: 83 fe 0a cmp $0xa,%esi 0.00 : 46db2a: 74 34 je 46db60 0.00 : 46db2c: b8 67 66 66 66 mov $0x66666667,%eax 0.00 : 46db31: 89 f3 mov %esi,%ebx 0.00 : 46db33: c6 01 23 movb $0x23,(%rcx) 0.00 : 46db36: f7 ee imul %esi 0.00 : 46db38: 89 f0 mov %esi,%eax 0.00 : 46db3a: c1 f8 1f sar $0x1f,%eax 0.00 : 46db3d: c1 fa 02 sar $0x2,%edx 0.00 : 46db40: 29 c2 sub %eax,%edx 0.00 : 46db42: 8d 04 92 lea (%rdx,%rdx,4),%eax 0.00 : 46db45: 01 c0 add %eax,%eax 0.00 : 46db47: 29 c3 sub %eax,%ebx 0.00 : 46db49: 89 d8 mov %ebx,%eax 0.00 : 46db4b: 83 c0 30 add $0x30,%eax 0.00 : 46db4e: 88 41 ff mov %al,-0x1(%rcx) 0.00 : 46db51: 48 83 e9 02 sub $0x2,%rcx 0.00 : 46db55: 83 fe 0a cmp $0xa,%esi 0.00 : 46db58: 0f 8f c2 00 00 00 jg 46dc20 0.00 : 46db5e: 66 90 xchg %ax,%ax 0.00 : 46db60: 45 85 d2 test %r10d,%r10d 0.00 : 46db63: 74 07 je 46db6c 0.00 : 46db65: c6 01 2d movb $0x2d,(%rcx) 0.00 : 46db68: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46db6c: 48 83 c4 08 add $0x8,%rsp 0.00 : 46db70: 48 8d 41 01 lea 0x1(%rcx),%rax 0.00 : 46db74: 5b pop %rbx 0.00 : 46db75: 5d pop %rbp 0.00 : 46db76: c3 retq 0.00 : 46db77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46db7e: 00 00 0.00 : 46db80: 44 89 c8 mov %r9d,%eax 0.00 : 46db83: 49 c1 e9 03 shr $0x3,%r9 0.00 : 46db87: 83 e0 07 and $0x7,%eax 0.00 : 46db8a: 83 c0 30 add $0x30,%eax 0.00 : 46db8d: 88 01 mov %al,(%rcx) 0.00 : 46db8f: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46db93: 4d 85 c9 test %r9,%r9 0.00 : 46db96: 75 e8 jne 46db80 0.00 : 46db98: e9 67 ff ff ff jmpq 46db04 0.00 : 46db9d: 0f 1f 00 nopl (%rax) 0.00 : 46dba0: 49 f7 d9 neg %r9 0.00 : 46dba3: 41 ba 2d 00 00 00 mov $0x2d,%r10d 0.00 : 46dba9: e9 21 ff ff ff jmpq 46dacf 0.00 : 46dbae: 66 90 xchg %ax,%ax 0.00 : 46dbb0: 83 fe 0a cmp $0xa,%esi 0.00 : 46dbb3: 0f 84 97 00 00 00 je 46dc50 0.00 : 46dbb9: 83 fe 10 cmp $0x10,%esi 0.00 : 46dbbc: 0f 84 a6 00 00 00 je 46dc68 0.00 : 46dbc2: 48 63 fe movslq %esi,%rdi 0.00 : 46dbc5: bb 40 00 00 00 mov $0x40,%ebx 0.00 : 46dbca: 41 bb 5f 00 00 00 mov $0x5f,%r11d 0.00 : 46dbd0: 31 d2 xor %edx,%edx 0.00 : 46dbd2: 4c 89 c8 mov %r9,%rax 0.00 : 46dbd5: 48 f7 f7 div %rdi 0.00 : 46dbd8: 48 83 fa 09 cmp $0x9,%rdx 0.00 : 46dbdc: 8d 42 30 lea 0x30(%rdx),%eax 0.00 : 46dbdf: 76 1f jbe 46dc00 0.00 : 46dbe1: 48 83 fa 23 cmp $0x23,%rdx 0.00 : 46dbe5: 8d 42 57 lea 0x57(%rdx),%eax 0.00 : 46dbe8: 76 16 jbe 46dc00 0.00 : 46dbea: 48 83 fa 3d cmp $0x3d,%rdx 0.00 : 46dbee: 8d 42 1d lea 0x1d(%rdx),%eax 0.00 : 46dbf1: 76 0d jbe 46dc00 0.00 : 46dbf3: 48 83 fa 3e cmp $0x3e,%rdx 0.00 : 46dbf7: 44 89 d8 mov %r11d,%eax 0.00 : 46dbfa: 0f 44 c3 cmove %ebx,%eax 0.00 : 46dbfd: 0f 1f 00 nopl (%rax) 0.00 : 46dc00: 88 01 mov %al,(%rcx) 0.00 : 46dc02: 31 d2 xor %edx,%edx 0.00 : 46dc04: 4c 89 c8 mov %r9,%rax 0.00 : 46dc07: 48 f7 f7 div %rdi 0.00 : 46dc0a: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46dc0e: 48 85 c0 test %rax,%rax 0.00 : 46dc11: 49 89 c1 mov %rax,%r9 0.00 : 46dc14: 75 ba jne 46dbd0 0.00 : 46dc16: e9 e9 fe ff ff jmpq 46db04 0.00 : 46dc1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46dc20: 8d 42 30 lea 0x30(%rdx),%eax 0.00 : 46dc23: 88 01 mov %al,(%rcx) 0.00 : 46dc25: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46dc29: e9 32 ff ff ff jmpq 46db60 0.00 : 46dc2e: 66 90 xchg %ax,%ax 0.00 : 46dc30: 41 83 e0 04 and $0x4,%r8d 0.00 : 46dc34: c6 41 ff 30 movb $0x30,-0x1(%rcx) 0.00 : 46dc38: 41 83 f8 01 cmp $0x1,%r8d 0.00 : 46dc3c: 19 c0 sbb %eax,%eax 0.00 : 46dc3e: 83 e0 20 and $0x20,%eax 0.00 : 46dc41: 83 c0 58 add $0x58,%eax 0.00 : 46dc44: 88 01 mov %al,(%rcx) 0.00 : 46dc46: 48 83 e9 02 sub $0x2,%rcx 0.00 : 46dc4a: e9 11 ff ff ff jmpq 46db60 0.00 : 46dc4f: 90 nop 0.00 : 46dc50: 49 83 f9 09 cmp $0x9,%r9 0.00 : 46dc54: 77 52 ja 46dca8 0.00 : 46dc56: 41 8d 41 30 lea 0x30(%r9),%eax 0.00 : 46dc5a: 88 01 mov %al,(%rcx) 0.00 : 46dc5c: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46dc60: e9 9f fe ff ff jmpq 46db04 0.00 : 46dc65: 0f 1f 00 nopl (%rax) 0.00 : 46dc68: 44 89 c2 mov %r8d,%edx 0.00 : 46dc6b: 83 e2 04 and $0x4,%edx 0.00 : 46dc6e: eb 20 jmp 46dc90 0.00 : 46dc70: 4c 89 c8 mov %r9,%rax 0.00 : 46dc73: 83 e0 0f and $0xf,%eax 0.00 : 46dc76: 0f b6 80 84 c6 47 00 movzbl 0x47c684(%rax),%eax 0.00 : 46dc7d: 49 c1 e9 04 shr $0x4,%r9 0.00 : 46dc81: 88 01 mov %al,(%rcx) 0.00 : 46dc83: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46dc87: 4d 85 c9 test %r9,%r9 0.00 : 46dc8a: 0f 84 74 fe ff ff je 46db04 0.00 : 46dc90: 85 d2 test %edx,%edx 0.00 : 46dc92: 75 dc jne 46dc70 0.00 : 46dc94: 4c 89 c8 mov %r9,%rax 0.00 : 46dc97: 83 e0 0f and $0xf,%eax 0.00 : 46dc9a: 0f b6 80 95 c6 47 00 movzbl 0x47c695(%rax),%eax 0.00 : 46dca1: eb da jmp 46dc7d 0.00 : 46dca3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46dca8: 4d 85 c9 test %r9,%r9 0.00 : 46dcab: 4c 89 cf mov %r9,%rdi 0.00 : 46dcae: 78 60 js 46dd10 0.00 : 46dcb0: 49 b9 67 66 66 66 66 movabs $0x6666666666666667,%r9 0.00 : 46dcb7: 66 66 66 0.00 : 46dcba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46dcc0: 48 89 f8 mov %rdi,%rax 0.00 : 46dcc3: 49 f7 e9 imul %r9 0.00 : 46dcc6: 48 89 f8 mov %rdi,%rax 0.00 : 46dcc9: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 46dccd: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 46dcd1: 48 29 c2 sub %rax,%rdx 0.00 : 46dcd4: 48 8d 04 92 lea (%rdx,%rdx,4),%rax 0.00 : 46dcd8: 48 01 c0 add %rax,%rax 0.00 : 46dcdb: 48 29 c7 sub %rax,%rdi 0.00 : 46dcde: 8d 47 30 lea 0x30(%rdi),%eax 0.00 : 46dce1: 48 89 d7 mov %rdx,%rdi 0.00 : 46dce4: 88 01 mov %al,(%rcx) 0.00 : 46dce6: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46dcea: 48 85 d2 test %rdx,%rdx 0.00 : 46dced: 75 d1 jne 46dcc0 0.00 : 46dcef: e9 10 fe ff ff jmpq 46db04 0.00 : 46dcf4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 46dcf8: 80 79 01 30 cmpb $0x30,0x1(%rcx) 0.00 : 46dcfc: 0f 84 5e fe ff ff je 46db60 0.00 : 46dd02: c6 01 30 movb $0x30,(%rcx) 0.00 : 46dd05: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46dd09: e9 52 fe ff ff jmpq 46db60 0.00 : 46dd0e: 66 90 xchg %ax,%ax 0.00 : 46dd10: 4c 89 c8 mov %r9,%rax 0.00 : 46dd13: 48 ba cd cc cc cc cc movabs $0xcccccccccccccccd,%rdx 0.00 : 46dd1a: cc cc cc 0.00 : 46dd1d: 48 f7 e2 mul %rdx 0.00 : 46dd20: 48 c1 ea 03 shr $0x3,%rdx 0.00 : 46dd24: 48 8d 04 92 lea (%rdx,%rdx,4),%rax 0.00 : 46dd28: 48 01 c0 add %rax,%rax 0.00 : 46dd2b: 48 29 c7 sub %rax,%rdi 0.00 : 46dd2e: 8d 47 30 lea 0x30(%rdi),%eax 0.00 : 46dd31: 48 89 d7 mov %rdx,%rdi 0.00 : 46dd34: 88 01 mov %al,(%rcx) 0.00 : 46dd36: 48 83 e9 01 sub $0x1,%rcx 0.00 : 46dd3a: e9 71 ff ff ff jmpq 46dcb0 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004716b0 : 0.00 : 4716b0: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 4716b5: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 4716ba: 48 89 f3 mov %rsi,%rbx 0.00 : 4716bd: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 4716c2: 48 83 ec 28 sub $0x28,%rsp 0.00 : 4716c6: 48 89 fd mov %rdi,%rbp 0.00 : 4716c9: 41 89 d4 mov %edx,%r12d 0.00 : 4716cc: e8 8f 4d fa ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 4716d1: 48 83 e8 01 sub $0x1,%rax 0.00 : 4716d5: 74 63 je 47173a 0.00 : 4716d7: 48 8d 7c 24 08 lea 0x8(%rsp),%rdi 0.00 : 4716dc: 31 f6 xor %esi,%esi 0.00 : 4716de: 48 89 ea mov %rbp,%rdx 0.00 : 4716e1: e8 fa 03 00 00 callq 471ae0 0.00 : 4716e6: 48 83 c0 02 add $0x2,%rax 0.00 : 4716ea: 48 83 f8 01 cmp $0x1,%rax 0.00 : 4716ee: 76 4a jbe 47173a 0.00 : 4716f0: 31 f6 xor %esi,%esi 0.00 : 4716f2: 48 89 e7 mov %rsp,%rdi 0.00 : 4716f5: 48 89 da mov %rbx,%rdx 0.00 : 4716f8: e8 e3 03 00 00 callq 471ae0 0.00 : 4716fd: 48 83 c0 02 add $0x2,%rax 0.00 : 471701: 48 83 f8 01 cmp $0x1,%rax 0.00 : 471705: 76 29 jbe 471730 ??:0 100.00 : 471707: 48 8b 34 24 mov (%rsp),%rsi 0.00 : 47170b: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 471710: 44 89 e2 mov %r12d,%edx 0.00 : 471713: e8 08 ff ff ff callq 471620 0.00 : 471718: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 47171d: 89 c3 mov %eax,%ebx 0.00 : 47171f: e8 9c 4c fa ff callq 4163c0 0.00 : 471724: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 471728: e8 93 4c fa ff callq 4163c0 0.00 : 47172d: eb 1b jmp 47174a 0.00 : 47172f: 90 nop 0.00 : 471730: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 471735: e8 86 4c fa ff callq 4163c0 0.00 : 47173a: 48 89 de mov %rbx,%rsi 0.00 : 47173d: 44 89 e2 mov %r12d,%edx 0.00 : 471740: 48 89 ef mov %rbp,%rdi 0.00 : 471743: e8 d8 ec ff ff callq 470420 0.00 : 471748: 89 c3 mov %eax,%ebx 0.00 : 47174a: 89 d8 mov %ebx,%eax 0.00 : 47174c: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp 0.00 : 471751: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 471756: 4c 8b 64 24 20 mov 0x20(%rsp),%r12 0.00 : 47175b: 48 83 c4 28 add $0x28,%rsp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000003f0 <__dispose_buffer>: ??:0 100.00 : 3f0: 48 83 ec 18 sub $0x18,%rsp 0.00 : 424: 48 89 1c mov %rbx,%rdi 0.00 : 427: 24 48 89 fb 4c callq 42c <__journal_refile_buffer+0xdc> 0.00 : 42c: 89 64 xor %eax,%eax 0.00 : 42e: 24 10 48 89 mov (%rsp),%rbx 0.00 : 432: 6c 24 08 49 89 mov 0x8(%rsp),%rbp 0.00 : 437: f4 48 8b 2f e8 mov 0x10(%rsp),%r12 0.00 : 43c: 00 00 00 00 add $0x18,%rsp 0.00 : 440: 48 retq 0.00 : 441: 83 7b 48 00 74 31 f0 nopl 0x0(%rax) 0.00 : 448: 80 65 00 mov %rbp,%rdi 0.00 : 44b: fd ba 03 00 00 callq 450 <__journal_refile_buffer+0x100> 0.00 : 450: 00 4c 89 mov %rbp,%rdi 0.00 : 453: e6 48 89 df e8 callq 458 <__journal_refile_buffer+0x108> 0.00 : 458: 00 00 00 00 31 mov $0x1,%eax 0.00 : 45d: c0 48 jmp 42e <__journal_refile_buffer+0xde> : 45f: 8b nop : 460: 1c 24 48 8b sub $0x28,%rsp : 464: 6c 24 08 mov (%rsi),%rax : 467: 4c 8b 64 24 10 mov %rbx,0x8(%rsp) : 46c: 48 83 c4 18 c3 mov %r12,0x18(%rsp) : 471: 0f 1f 80 mov %rsi,%rbx : 474: 00 00 00 00 48 mov %rbp,0x10(%rsp) : 479: 89 ef e8 00 00 mov %r13,0x20(%rsp) : 47e: 00 00 48 mov %rdi,%r12 : 481: 89 ef test $0x4,%al : 483: e8 00 00 00 mov 0x40(%rsi),%rbp : 487: 00 b8 jne 497 <__journal_refile_buffer+0x147> : 489: 01 00 00 mov (%rsi),%rax : 48c: 00 eb test $0x2,%al Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/jbd/jbd.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000eb0 : ??:0 100.00 : eb0: 41 55 push %r13 0.00 : ee2: 41 retq 0.00 : ee3: 89 f5 je f08 <__journal_refile_buffer+0xbb8> 0.00 : ee5: 41 54 65 mov (%rax),%rax 0.00 : ee8: 4c 8b 24 cmp %rdi,(%rax) 0.00 : eeb: 25 00 00 00 00 55 jne f84 <__journal_refile_buffer+0xc34> 0.00 : ef1: 48 89 fd 53 addl $0x1,0xc(%rbx) 0.00 : ef5: 48 c7 c3 e2 add $0x8,%rsp 0.00 : ef9: ff ff ff mov %rbx,%rax 0.00 : efc: 48 pop %rbx 0.00 : efd: 83 pop %rbp 0.00 : efe: ec 08 pop %r12 0.00 : f00: 48 85 pop %r13 0.00 : f02: ff retq 0.00 : f03: 49 8b 84 24 00 nopl 0x0(%rax,%rax,1) 0.00 : f08: 08 00 00 74 18 48 85 mov 0x0(%rip),%rdi # f0f <__journal_refile_buffer+0xbbf> 0.00 : f0f: c0 48 89 c3 74 mov $0x50,%esi 0.00 : f14: 23 48 8b 00 48 callq f19 <__journal_refile_buffer+0xbc9> 0.00 : f19: 39 38 0f test %rax,%rax 0.00 : f1c: 85 93 00 mov %rax,%rbx 0.00 : f1f: 00 00 je f78 <__journal_refile_buffer+0xc28> 0.00 : f21: 83 43 0c 01 48 83 c4 movq $0x0,(%rax) 0.00 : f28: 08 48 89 d8 5b 5d 41 movq $0x0,0x10(%rax) 0.00 : f2f: 5c 0.00 : f30: 41 5d c3 mov %rbp,%rdi 0.00 : f33: 0f 1f 44 00 mov %r13d,0x8(%rax) 0.00 : f37: 00 48 8b 3d 00 00 00 movl $0x1,0xc(%rax) 0.00 : f3e: 00 be 50 mov %rax,%rsi 0.00 : f41: 00 00 00 e8 00 00 00 mov %rax,0x800(%r12) 0.00 : f48: 00 0.00 : f49: 48 85 c0 48 89 callq 9d0 <__journal_refile_buffer+0x680> 0.00 : f4e: c3 74 test %eax,%eax 0.00 : f50: 57 48 mov %eax,%ebp 0.00 : f52: c7 00 jns ef5 <__journal_refile_buffer+0xba5> 0.00 : f54: 00 00 00 00 48 c7 40 mov 0x0(%rip),%rdi # f5b <__journal_refile_buffer+0xc0b> 0.00 : f5b: 10 00 00 mov %rbx,%rsi 0.00 : f5e: 00 00 48 movslq %ebp,%rbx 0.00 : f61: 89 ef 44 89 68 callq f66 <__journal_refile_buffer+0xc16> 0.00 : f66: 08 c7 40 0c 01 00 00 movq $0x0,0x800(%r12) 0.00 : f6d: 00 48 89 c6 49 0.00 : f72: 89 84 jmp ef5 <__journal_refile_buffer+0xba5> 0.00 : f74: 24 00 08 00 nopl 0x0(%rax) 0.00 : f78: 00 e8 82 fa ff ff 85 mov $0xfffffffffffffff4,%rbx 0.00 : f7f: c0 89 c5 79 a1 jmpq ef5 <__journal_refile_buffer+0xba5> 0.00 : f84: 48 8b ud2 0.00 : f86: 3d 00 jmp f86 <__journal_refile_buffer+0xc36> : f88: 00 00 00 48 89 de 48 nopl 0x0(%rax,%rax,1) : f8f: 63 : f90: dd e8 00 00 sub $0x8,%rsp : f94: 00 00 49 c7 84 mov $0x1,%esi : f99: 24 00 08 00 00 callq f9e <__journal_refile_buffer+0xc4e> : f9e: 00 00 00 00 eb 81 cmp $0xfffffffffffff000,%rax : fa4: 0f 1f jbe fb0 <__journal_refile_buffer+0xc60> : fa6: 40 00 48 c7 add $0x8,%rsp : faa: c3 retq : fab: f4 ff ff ff e9 nopl 0x0(%rax,%rax,1) : fb0: 71 ff ff ff orb $0x1,0x14(%rax) : fb4: 0f 0b eb mov %rax,%rdi Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000018d0 : 0.00 : 18d0: 41 57 push %r15 0.00 : 1902: 89 d0 41 rex.WR and $0x50,%al 0.00 : 1905: 56 41 55 xor %r14d,%r14d 0.00 : 1908: 41 54 45 89 mov 0x20(%rdx),%rsi 0.00 : 190c: c4 55 53 48 mov 0x68(%rdx),%rdx 0.00 : 1910: 89 cb 48 83 imul %rsi,%rax 0.00 : 1914: ec 18 48 mov 0x14(%rdx),%edx 0.00 : 1917: 83 7c 24 add %rdx,%rax 0.00 : 191a: 50 00 4c mov (%rcx),%rdx 0.00 : 191d: 89 4c mov %eax,%ecx 0.00 : 191f: 24 08 0f cmp %rax,%rdx 0.00 : 1922: 84 e9 01 00 00 48 jae 1a49 0.00 : 1928: 8b 97 38 03 00 mov 0x50(%rsp),%rdx 0.00 : 192d: 00 48 98 48 mov 0x8(%rdx),%rax 0.00 : 1931: 8b 4c 24 50 lea 0x1(%rax),%r15d 0.00 : 1935: 45 31 f6 sub %ecx,%r15d 0.00 : 1938: 48 8b 72 movslq %r15d,%rax 0.00 : 193b: 20 48 8b cmp %rsi,%rax 0.00 : 193e: 52 68 48 0f cmova %esi,%r15d 0.00 : 1942: af c6 8b cmp %r12d,%r14d 0.00 : 1945: 52 14 jg 1950 0.00 : 1947: 48 01 d0 cmp %r15d,%r12d 0.00 : 194a: 48 8b 11 89 c1 48 jl 1aa2 0.00 : 1950: 39 c2 0f 83 21 01 mov $0xffffffff,%r12d 0.00 : 1956: 00 00 48 movslq %r14d,%rax 0.00 : 1959: 8b 54 24 cmp %rsi,%rax 0.00 : 195c: 50 48 8b 42 08 44 ja 1bb2 0.00 : 1962: 8d 78 01 41 lea 0x2(%rbx),%rcx 0.00 : 1966: 29 cf 49 63 c7 mov %rcx,0x10(%rsp) 0.00 : 196b: 48 39 f0 44 0f nopl 0x0(%rax,%rax,1) 0.00 : 1970: 47 fe 45 test %r12d,%r12d 0.00 : 1973: 39 e6 js 1984 ??:0 100.00 : 1975: 7f 09 45 mov %rbx,%rsi 0.00 : 1978: 39 fc 0f mov %r12d,%edi 0.00 : 197b: 8c 52 01 00 00 callq c90 0.00 : 1980: 41 bc test %eax,%eax 0.00 : 1982: ff ff jne 19ab 0.00 : 1984: ff ff 49 mov %r15d,%edx 0.00 : 1987: 63 c6 48 mov %rbx,%rsi 0.00 : 198a: 39 f0 0f mov %r14d,%edi 0.00 : 198d: 87 50 02 00 00 callq 10d0 0.00 : 1992: 48 8d test %eax,%eax 0.00 : 1994: 4b 02 mov %eax,%ebp 0.00 : 1996: 48 89 4c 24 10 0f js 1a29 0.00 : 199c: 1f 44 00 00 45 85 cmpq $0x0,0x50(%rsp) 0.00 : 19a2: e4 78 0f 48 89 de je 1a5d 0.00 : 19a8: 44 89 e7 mov %ebp,%r12d 0.00 : 19ab: e8 10 f3 ff mov 0x40(%rbx),%rcx 0.00 : 19af: ff 85 c0 75 mov 0x28(%rbx),%rax 0.00 : 19b3: 27 44 89 fa 48 lock bts %r12d,(%rax) 0.00 : 19b8: 89 de sbb %edx,%edx 0.00 : 19ba: 44 89 test %edx,%edx 0.00 : 19bc: f7 e8 jne 1a18 0.00 : 19be: 3e f7 ff ff 85 lock btsl $0x14,(%rbx) 0.00 : 19c3: c0 89 sbb %eax,%eax 0.00 : 19c5: c5 0f test %eax,%eax 0.00 : 19c7: 88 8d je 19e7 0.00 : 19c9: 00 00 00 48 83 7c 24 nopl 0x0(%rax) 0.00 : 19d0: 50 00 pause 0.00 : 19d2: 0f 84 b5 mov (%rbx),%rax 0.00 : 19d5: 00 00 00 41 89 test $0x100000,%eax 0.00 : 19da: ec 48 jne 19d0 0.00 : 19dc: 8b 4b 40 48 8b lock btsl $0x14,(%rbx) 0.00 : 19e1: 43 28 sbb %eax,%eax 0.00 : 19e3: f0 44 test %eax,%eax 0.00 : 19e5: 0f ab jne 19d0 0.00 : 19e7: 20 19 d2 85 mov 0x20(%rcx),%rax 0.00 : 19eb: d2 75 5a test %rax,%rax 0.00 : 19ee: f0 0f je 1a56 0.00 : 19f0: ba 2b 14 19 bt %r12d,(%rax) 0.00 : 19f4: c0 85 sbb %eax,%eax 0.00 : 19f6: c0 74 test %eax,%eax 0.00 : 19f8: 1e 0f je 1a56 0.00 : 19fa: 1f 80 00 00 mov 0x28(%rbx),%rax 0.00 : 19fe: 00 00 f3 90 48 lock btr %r12d,(%rax) 0.00 : 1a03: 8b 03 sbb %edx,%edx 0.00 : 1a05: a9 00 xor %eax,%eax 0.00 : 1a07: 00 10 00 75 f4 mov 0x10(%rsp),%rdx 0.00 : 1a0c: f0 0f ba 2b lock andb $0xef,(%rdx) 0.00 : 1a10: 14 19 test %eax,%eax 0.00 : 1a12: c0 85 c0 75 e9 48 jne 1aaa 0.00 : 1a18: 8b 41 20 48 85 lea 0x1(%r12),%r14d 0.00 : 1a1d: c0 74 66 cmp %r14d,%r15d 0.00 : 1a20: 44 0f a3 mov %r14d,%r12d 0.00 : 1a23: 20 19 c0 85 c0 74 jg 1970 0.00 : 1a29: 5c 48 8b 43 28 mov 0x8(%rsp),%rax 0.00 : 1a2e: f0 44 0f b3 20 19 d2 movq $0x0,(%rax) 0.00 : 1a35: 31 c0 48 8b add $0x18,%rsp 0.00 : 1a39: 54 24 10 f0 80 mov $0xffffffff,%eax 0.00 : 1a3e: 22 pop %rbx 0.00 : 1a3f: ef pop %rbp 0.00 : 1a40: 85 c0 pop %r12 0.00 : 1a42: 0f 85 pop %r13 0.00 : 1a44: 92 00 pop %r14 0.00 : 1a46: 00 00 pop %r15 0.00 : 1a48: 45 retq 0.00 : 1a49: 8d 74 24 mov %edx,%r14d 0.00 : 1a4c: 01 45 mov %eax,%ecx 0.00 : 1a4e: 39 f7 45 sub %eax,%r14d 0.00 : 1a51: 89 f4 0f 8f 47 jmpq 1928 0.00 : 1a56: ff ff ff 48 8b mov $0x1,%eax 0.00 : 1a5b: 44 24 jmp 1a07 0.00 : 1a5d: 08 48 c7 xor %r13d,%r13d 0.00 : 1a60: 00 00 00 cmp %eax,%r14d 0.00 : 1a63: 00 00 jl 1a79 0.00 : 1a65: 48 83 c4 18 b8 jmpq 19a8 0.00 : 1a6a: ff ff ff cmp %r14d,%r12d 0.00 : 1a6d: ff 5b 5d nopl (%rax) 0.00 : 1a70: 41 5c 41 5d 41 5e jle 19ab 0.00 : 1a76: 41 5f c3 mov %r12d,%ebp 0.00 : 1a79: 41 89 d6 89 lea -0x1(%rbp),%r12d 0.00 : 1a7d: c1 41 29 mov %rbx,%rsi 0.00 : 1a80: c6 e9 d2 mov %r12d,%edi 0.00 : 1a83: fe ff ff b8 01 callq c90 0.00 : 1a88: 00 00 test %eax,%eax 0.00 : 1a8a: 00 eb aa 45 31 ed je 19a8 0.00 : 1a90: 41 39 c6 7c add $0x1,%r13d 0.00 : 1a94: 14 e9 3e ff cmp $0x6,%r13d 0.00 : 1a98: ff ff 45 39 f4 0f jg 19ab 0.00 : 1a9e: 1f 00 xchg %ax,%ax 0.00 : 1aa0: 0f 8e jmp 1a6a 0.00 : 1aa2: 35 ff ff mov %r12d,%r14d 0.00 : 1aa5: ff 44 89 e5 44 jmpq 1956 0.00 : 1aaa: 8d 65 ff 48 89 mov 0x8(%rsp),%rcx 0.00 : 1aaf: de 44 89 e7 e8 lea 0x1(%r12),%ebp 0.00 : 1ab4: 08 f2 ff ff cmpq $0x1,(%rcx) 0.00 : 1ab8: 85 c0 ja 1afd 0.00 : 1aba: 0f 84 18 ff ff ff mov $0x1,%r12d 0.00 : 1ac0: 41 83 c5 01 41 mov $0x1,%eax 0.00 : 1ac5: 83 fd 06 0f 8f mov 0x8(%rsp),%rcx 0.00 : 1aca: 0d ff sub %eax,%ebp 0.00 : 1acc: ff ff mov %ebp,%eax 0.00 : 1ace: 66 90 eb mov %r12,(%rcx) 0.00 : 1ad1: c8 45 89 e6 add $0x18,%rsp 0.00 : 1ad5: e9 pop %rbx 0.00 : 1ad6: ac pop %rbp 0.00 : 1ad7: fe ff pop %r12 0.00 : 1ad9: ff 48 pop %r13 0.00 : 1adb: 8b 4c pop %r14 0.00 : 1add: 24 08 pop %r15 0.00 : 1adf: 41 retq 0.00 : 1ae0: 8d 6c 24 01 48 83 39 mov 0x338(%rdi),%rax 0.00 : 1ae7: 01 77 43 xor %r14d,%r14d 0.00 : 1aea: 41 bc 01 test %r8d,%r8d 0.00 : 1aed: 00 00 00 b8 cmovns %r8d,%r14d 0.00 : 1af1: 01 00 00 00 mov 0x20(%rax),%rsi 0.00 : 1af5: 48 8b 4c mov %esi,%r15d 0.00 : 1af8: 24 08 29 c5 89 jmpq 1956 0.00 : 1afd: e8 4c 89 cmp %ebp,%r15d 0.00 : 1b00: 21 48 83 c4 18 5b mov $0x1,%r12d 0.00 : 1b06: 5d 41 jle 1aba 0.00 : 1b08: 5c 41 5d mov %rbx,%rsi 0.00 : 1b0b: 41 5e mov %ebp,%edi 0.00 : 1b0d: 41 5f c3 48 8b callq c90 0.00 : 1b12: 87 38 test %eax,%eax 0.00 : 1b14: 03 00 00 45 31 f6 je 1ba0 0.00 : 1b1a: 45 85 c0 45 mov 0x40(%rbx),%rcx 0.00 : 1b1e: 0f 49 f0 48 mov 0x28(%rbx),%rax 0.00 : 1b22: 8b 70 20 41 lock bts %ebp,(%rax) 0.00 : 1b26: 89 f7 sbb %edx,%edx 0.00 : 1b28: e9 59 test %edx,%edx 0.00 : 1b2a: fe ff jne 1ba0 0.00 : 1b2c: ff 41 39 ef 41 lock btsl $0x14,(%rbx) 0.00 : 1b31: bc 01 sbb %eax,%eax 0.00 : 1b33: 00 00 test %eax,%eax 0.00 : 1b35: 00 7e je 1b57 0.00 : 1b37: b2 48 89 de 89 ef e8 nopw 0x0(%rax,%rax,1) 0.00 : 1b3e: 7e f1 0.00 : 1b40: ff ff pause 0.00 : 1b42: 85 c0 0f mov (%rbx),%rax 0.00 : 1b45: 84 86 00 00 00 test $0x100000,%eax 0.00 : 1b4a: 48 8b jne 1b40 0.00 : 1b4c: 4b 40 48 8b 43 lock btsl $0x14,(%rbx) 0.00 : 1b51: 28 f0 sbb %eax,%eax 0.00 : 1b53: 0f ab test %eax,%eax 0.00 : 1b55: 28 19 jne 1b40 0.00 : 1b57: d2 85 d2 75 mov 0x20(%rcx),%rax 0.00 : 1b5b: 74 f0 0f test %rax,%rax 0.00 : 1b5e: ba 2b je 1ba8 0.00 : 1b60: 14 19 c0 bt %ebp,(%rax) 0.00 : 1b63: 85 c0 sbb %eax,%eax 0.00 : 1b65: 74 20 test %eax,%eax 0.00 : 1b67: 66 0f je 1ba8 0.00 : 1b69: 1f 84 00 00 mov 0x28(%rbx),%rax 0.00 : 1b6d: 00 00 00 f3 lock btr %ebp,(%rax) 0.00 : 1b71: 90 48 sbb %edx,%edx 0.00 : 1b73: 8b 03 xor %eax,%eax 0.00 : 1b75: a9 00 00 10 00 mov 0x10(%rsp),%rdx 0.00 : 1b7a: 75 f4 f0 0f lock andb $0xef,(%rdx) 0.00 : 1b7e: ba 2b test %eax,%eax 0.00 : 1b80: 14 19 je 1ba0 0.00 : 1b82: c0 85 c0 75 e9 mov 0x8(%rsp),%rax 0.00 : 1b87: 48 8b 41 20 add $0x1,%r12 0.00 : 1b8b: 48 85 c0 add $0x1,%ebp 0.00 : 1b8e: 74 48 0f cmp %r12,(%rax) 0.00 : 1b91: a3 28 jbe 1ba0 0.00 : 1b93: 19 c0 85 cmp %ebp,%r15d 0.00 : 1b96: c0 74 3f 48 8b 43 jg 1b08 0.00 : 1b9c: 28 f0 0f b3 nopl 0x0(%rax) 0.00 : 1ba0: 28 19 d2 mov %r12d,%eax 0.00 : 1ba3: 31 c0 48 8b 54 jmpq 1ac5 0.00 : 1ba8: 24 10 f0 80 22 mov $0x1,%eax 0.00 : 1bad: ef 85 c0 nopl (%rax) 0.00 : 1bb0: 74 1e jmp 1b75 0.00 : 1bb2: 48 8b ud2 0.00 : 1bb4: 44 24 jmp 1bb4 : 1bb6: 08 49 83 c4 01 83 c5 nopw %cs:0x0(%rax,%rax,1) : 1bbd: 01 4c 39 : 1bc0: 20 76 push %r15 : 1bc2: 0d 41 39 mov %rdi,%r15 : 1bc5: ef 0f 8f 6c ff ff ff mov $0x0,%rdi : 1bcc: 0f 1f push %r14 : 1bce: 40 00 push %r13 : 1bd0: 44 89 e0 mov %r8d,%r13d : 1bd3: e9 1d push %r12 : 1bd5: ff push %rbp : 1bd6: ff ff b8 mov %r9,%rbp : 1bd9: 01 push %rbx : 1bda: 00 00 00 0f sub $0x58,%rsp : 1bde: 1f 00 eb c3 mov %edx,0x1c(%rsp) : 1be2: 0f 0b eb fe 66 2e 0f mov 0x90(%rsp),%rdx : 1be9: 1f Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005a50 : ??:0 100.00 : 5a50: 48 8b 06 mov (%rsi),%rax : 5a83: a8 (bad) : 5a84: 20 74 07 mov %r8,%rdx : 5a87: 48 push %rbx : 5a88: 8b 06 a8 01 sub $0x8,%rsp : 5a8c: 75 0a 31 c0 mov 0x18(%rbp),%rax : 5a90: c3 0f 1f 80 00 00 00 mov 0x338(%rax),%rax : 5a97: 00 e9 00 00 mov 0x78(%rax),%rax : ... Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000c730 : 0.00 : c730: 41 57 push %r15 0.00 : c762: 49 89 ff 41 rex.WRXB sbb %r9b,-0x77(%r8) 0.00 : c766: 56 41 55 rex.WR and $0x30,%al 0.00 : c769: 41 54 55 mov 0x4(%rsi),%eax 0.00 : c76c: 53 31 db 48 81 cmp $0xff,%eax 0.00 : c771: ec a8 00 00 00 48 jg c950 0.00 : c777: 89 54 24 cmp $0x2,%eax 0.00 : c77a: 20 48 jg c785 0.00 : c77c: 8b 44 24 cmpb $0x2e,(%rdx) 0.00 : c77f: 20 48 89 74 24 28 je cae0 0.00 : c785: 48 8b 56 08 48 mov 0x30(%rsp),%rsi 0.00 : c78a: c7 00 00 00 00 00 48 lea -0xe0(%r15),%rbp 0.00 : c791: 8b 4f 18 48 89 4c 24 mov 0x338(%rsi),%rax 0.00 : c798: 30 8b 46 04 mov 0x68(%rax),%rax 0.00 : c79c: 3d ff 00 00 testb $0x20,0x5c(%rax) 0.00 : c7a0: 00 0f 8f d9 01 00 jne c914 0.00 : c7a6: 00 83 f8 02 7f mov 0x30(%rsp),%rax 0.00 : c7ab: 09 80 3a 2e movzbl 0x15(%rax),%ecx 0.00 : c7af: 0f 84 5b 03 00 00 48 mov 0xd0(%r15),%rax 0.00 : c7b6: 8b 74 24 sar %cl,%rax 0.00 : c7b9: 30 49 8d af mov %eax,0x40(%rsp) 0.00 : c7bd: 20 ff ff mov 0x68(%rbp),%ebp 0.00 : c7c0: ff 48 cltq 0.00 : c7c2: 8b 86 38 cmp %rax,%rbp 0.00 : c7c5: 03 00 00 48 8b mov %rbp,0x38(%rsp) 0.00 : c7ca: 40 68 f6 mov %rbp,%r12 0.00 : c7cd: 40 5c jb c7db 0.00 : c7cf: 20 0f 85 6e 01 00 00 movq $0x0,0x38(%rsp) 0.00 : c7d6: 48 8b 0.00 : c7d8: 44 24 30 xor %r12d,%r12d 0.00 : c7db: 0f b6 xor %ebp,%ebp 0.00 : c7dd: 48 15 xor %eax,%eax 0.00 : c7df: 49 8b 87 xor %r14d,%r14d 0.00 : c7e2: d0 00 00 00 48 d3 nopw 0x0(%rax,%rax,1) 0.00 : c7e8: f8 89 cmp %eax,%ebp 0.00 : c7ea: 44 24 40 8b lea 0x1(%rax),%r13d 0.00 : c7ee: 6d 68 48 98 48 39 jg c880 0.00 : c7f4: c5 48 89 6c 24 movslq 0x40(%rsp),%r13 0.00 : c7f9: 38 49 89 mov %r12,%rbx 0.00 : c7fc: ec 72 xor %ebp,%ebp 0.00 : c7fe: 0c 48 jmp c85a 0.00 : c800: c7 44 24 38 00 00 00 lea 0x9c(%rsp),%r8 0.00 : c807: 00 0.00 : c808: 45 31 xor %ecx,%ecx 0.00 : c80a: e4 31 ed mov %rbx,%rdx 0.00 : c80d: 31 c0 xor %edi,%edi 0.00 : c80f: 45 31 f6 mov %r15,%rsi 0.00 : c812: 66 0f 1f 44 add $0x1,%r14d 0.00 : c816: 00 00 39 c5 44 callq c81b 0.00 : c81b: 8d 68 01 mov %rbx,%rdx 0.00 : c81e: 0f 8f 8c 00 00 00 4c mov %rax,0x90(%rsp) 0.00 : c825: 63 0.00 : c826: 6c 24 40 sub %r12,%rdx 0.00 : c829: 4c 89 e3 test %rax,%rax 0.00 : c82c: 31 ed eb 5a 4c mov %rax,0x50(%rsp,%rdx,8) 0.00 : c831: 8d 84 je c84a 0.00 : c833: 24 9c 00 00 00 31 c9 lea 0x90(%rsp),%rdx 0.00 : c83a: 48 0.00 : c83b: 89 da 31 ff 4c mov $0x1,%esi 0.00 : c840: 89 fe 41 83 c6 mov $0x20,%edi 0.00 : c845: 01 e8 00 00 00 callq c84a 0.00 : c84a: 00 48 89 add $0x1,%ebp 0.00 : c84d: da 48 89 cmp $0x8,%ebp 0.00 : c850: 84 24 90 00 00 00 je ca28 0.00 : c856: 4c 29 e2 48 add $0x1,%rbx 0.00 : c85a: 85 c0 48 cmp %rbx,%r13 0.00 : c85d: 89 44 jbe c86b 0.00 : c85f: d4 50 74 test %r14d,%r14d 0.00 : c862: 17 48 je c800 0.00 : c864: 8d 94 24 90 00 cmp 0x38(%rsp),%r12 0.00 : c869: 00 00 jne c800 0.00 : c86b: be 01 00 movslq %ebp,%rax 0.00 : c86e: 00 00 bf 20 00 00 mov $0x1,%r13d 0.00 : c874: 00 e8 00 00 00 00 83 movq $0x0,0x50(%rsp,%rax,8) 0.00 : c87b: c5 01 0.00 : c87d: 83 fd xor %eax,%eax 0.00 : c87f: 08 nop 0.00 : c880: 0f 84 cltq 0.00 : c882: d2 01 00 00 48 mov 0x50(%rsp,%rax,8),%rdi 0.00 : c887: 83 c3 01 test %rdi,%rdi 0.00 : c88a: 49 39 dd 76 0c 45 85 mov %rdi,0x90(%rsp) 0.00 : c891: f6 0.00 : c892: 74 9c je c8e8 0.00 : c894: 4c 3b 64 mov (%rdi),%rax 0.00 : c897: 24 38 test $0x4,%al 0.00 : c899: 75 95 48 63 c5 41 jne ca68 0.00 : c89f: bd 01 00 00 00 48 c7 mov 0x90(%rsp),%r10 0.00 : c8a6: 44 0.00 : c8a7: c4 50 00 mov (%r10),%rax 0.00 : c8aa: 00 00 test $0x1,%al 0.00 : c8ac: 00 31 c0 90 48 98 jne c968 0.00 : c8b2: 48 8b 7c c4 50 mov 0x30(%rsp),%rdi 0.00 : c8b7: 48 85 ff 48 89 bc 24 mov 0xb0(%r15),%rcx 0.00 : c8be: 90 00 xor %eax,%eax 0.00 : c8c0: 00 00 74 mov %r12,%r8 0.00 : c8c3: 54 48 8b 07 a8 04 0f mov $0x0,%rdx 0.00 : c8ca: 85 c9 01 00 00 4c 8b mov $0x0,%rsi 0.00 : c8d1: 94 24 90 00 00 callq c8d6 0.00 : c8d6: 00 49 8b 02 a8 01 0f mov 0x90(%rsp),%rdi 0.00 : c8dd: 85 0.00 : c8de: b6 00 00 test %rdi,%rdi 0.00 : c8e1: 00 48 je c8e8 0.00 : c8e3: 8b 7c 24 30 49 callq c8e8 0.00 : c8e8: 8b 8f b0 00 00 lea 0x1(%r12),%rdx 0.00 : c8ed: 00 31 c0 4d 89 movslq 0x40(%rsp),%r12 0.00 : c8f2: e0 48 c7 c2 00 mov $0x0,%eax 0.00 : c8f7: 00 00 00 cmp %r12,%rdx 0.00 : c8fa: 48 c7 c6 00 cmovae %rax,%rdx 0.00 : c8fe: 00 00 00 e8 00 cmp 0x38(%rsp),%rdx 0.00 : c903: 00 00 00 48 8b bc je ca38 0.00 : c909: 24 90 00 mov %rdx,%r12 0.00 : c90c: 00 00 48 mov %r13d,%eax 0.00 : c90f: 85 ff 74 05 e8 jmpq c7e8 0.00 : c914: 00 00 00 00 49 8d 54 testb $0x10,-0xa3(%r15) 0.00 : c91b: 24 0.00 : c91c: 01 4c 63 64 24 40 b8 lea -0xe0(%r15),%rbp 0.00 : c923: 00 00 00 00 4c 39 je c7a6 0.00 : c929: e2 48 0f 43 d0 mov 0x20(%rsp),%rdx 0.00 : c92e: 48 3b 54 24 38 mov 0x28(%rsp),%rsi 0.00 : c933: 0f 84 2f 01 00 00 49 lea 0x9c(%rsp),%rcx 0.00 : c93a: 89 0.00 : c93b: d4 44 89 mov %r15,%rdi 0.00 : c93e: e8 e9 d4 fe ff callq c560 0.00 : c943: ff 41 f6 test %rax,%rax 0.00 : c946: 87 5d ff mov %rax,%rbx 0.00 : c949: ff ff 10 49 8d af je cb09 0.00 : c94f: 20 nop 0.00 : c950: ff ff ff 0f 84 7d fe add $0xa8,%rsp 0.00 : c957: ff ff 48 mov %rbx,%rax 0.00 : c95a: 8b pop %rbx 0.00 : c95b: 54 pop %rbp 0.00 : c95c: 24 20 pop %r12 0.00 : c95e: 48 8b pop %r13 0.00 : c960: 74 24 pop %r14 0.00 : c962: 28 48 pop %r15 0.00 : c964: 8d retq 0.00 : c965: 8c 24 9c nopl (%rax) 0.00 : c968: 00 00 00 4c 89 mov 0x30(%rsp),%rdx 0.00 : c96d: ff e8 1d fc mov 0x18(%r15),%rax 0.00 : c971: ff ff 48 85 c0 mov 0x28(%rsp),%rcx 0.00 : c976: 48 89 c3 0f movzbl 0x15(%rdx),%esi 0.00 : c97a: 84 ba 01 00 mov 0x18(%rax),%rax 0.00 : c97e: 00 90 48 81 mov 0x28(%r10),%rdx 0.00 : c982: c4 a8 00 00 mov 0x8(%rcx),%r11 0.00 : c986: 00 48 89 d8 mov 0x4(%rcx),%r9d 0.00 : c98a: 5b 5d 41 add %rdx,%rax 0.00 : c98d: 5c 41 5d cmp %rax,%rdx 0.00 : c990: 41 5e 41 5f mov %rax,(%rsp) 0.00 : c994: c3 0f 1f 00 48 8b jae ca78 0.00 : c99a: 54 24 mov %esi,%ecx 0.00 : c99c: 30 49 8b mov %r12,%r8 0.00 : c99f: 47 18 48 movslq %r9d,%rsi 0.00 : c9a2: 8b 4c 24 shl %cl,%r8 0.00 : c9a5: 28 0f b6 mov %rdx,%rbx 0.00 : c9a8: 72 15 48 8b 40 mov %rsi,0x8(%rsp) 0.00 : c9ad: 18 49 jmp c9cd 0.00 : c9af: 8b nop 0.00 : c9b0: 52 28 4c 8b movzwl 0x4(%rbx),%eax 0.00 : c9b4: 59 08 test %eax,%eax 0.00 : c9b6: 44 8b je ca1e 0.00 : c9b8: 49 04 cltq 0.00 : c9ba: 48 01 d0 add %rax,%rbx 0.00 : c9bd: 48 39 c2 48 cmp %rbx,(%rsp) 0.00 : c9c1: 89 04 24 mov %rbx,%rdx 0.00 : c9c4: 0f 83 de 00 00 00 jbe ca78 0.00 : c9ca: 89 f1 4d add %rax,%r8 0.00 : c9cd: 89 e0 49 63 f1 mov 0x8(%rsp),%rcx 0.00 : c9d2: 49 d3 e0 48 lea (%rdx,%rcx,1),%rax 0.00 : c9d6: 89 d3 48 89 cmp %rax,(%rsp) 0.00 : c9da: 74 24 jb c9b0 0.00 : c9dc: 08 eb 1e 90 movzbl 0x6(%rbx),%eax 0.00 : c9e0: 0f b7 43 cmp %eax,%r9d 0.00 : c9e3: 04 85 jne c9b0 0.00 : c9e5: c0 74 mov (%rbx),%edi 0.00 : c9e7: 66 48 test %edi,%edi 0.00 : c9e9: 98 48 je c9b0 0.00 : c9eb: 01 c3 48 39 lea 0x8(%rbx),%rdi 0.00 : c9ef: 1c 24 48 cmp %rcx,%rcx 0.00 : c9f2: 89 da 0f mov %r11,%rsi 0.00 : c9f5: 86 ae repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : c9f7: 00 00 jne c9b0 0.00 : c9f9: 00 49 01 mov %r10,%rcx 0.00 : c9fc: c0 48 8b mov %rbx,%rdx 0.00 : c9ff: 4c 24 08 mov %r15,%rsi 0.00 : ca02: 48 8d 04 0a 48 39 04 mov $0x0,%rdi 0.00 : ca09: 24 72 d4 0f b6 callq ca0e 0.00 : ca0e: 43 06 test %eax,%eax 0.00 : ca10: 41 39 c1 75 cb 8b jne caa0 0.00 : ca16: 3b 85 ff 74 c5 48 8d mov 0x90(%rsp),%r10 0.00 : ca1d: 7b 0.00 : ca1e: 08 48 39 c9 4c mov $0xffffffff,%ebx 0.00 : ca23: 89 de jmp ca7a 0.00 : ca25: f3 a6 75 nopl (%rax) 0.00 : ca28: b7 4c xor %eax,%eax 0.00 : ca2a: 89 d1 48 89 da 4c mov $0x1,%r13d 0.00 : ca30: 89 fe 48 c7 c7 jmpq c880 0.00 : ca35: 00 00 00 nopl (%rax) 0.00 : ca38: 00 e8 00 00 00 mov 0x30(%rsp),%rdx 0.00 : ca3d: 00 85 c0 0f 85 8a 00 mov 0xd0(%r15),%rax ??:0 100.00 : ca44: 00 00 4c 8b movzbl 0x15(%rdx),%ecx 0.00 : ca48: 94 24 90 sar %cl,%rax 0.00 : ca4b: 00 00 00 bb mov %eax,0x40(%rsp) 0.00 : ca4f: ff ff cltq 0.00 : ca51: ff ff eb cmp %rax,%r12 0.00 : ca54: 55 0f jae ca93 0.00 : ca56: 1f 00 31 c0 41 bd 01 movq $0x0,0x38(%rsp) 0.00 : ca5d: 00 00 0.00 : ca5f: 00 e9 4b fe ff jmpq c90c 0.00 : ca64: ff 0f 1f 00 nopl 0x0(%rax) 0.00 : ca68: 48 8b 54 24 30 callq ca6d 0.00 : ca6d: 49 8b 87 nopl (%rax) 0.00 : ca70: d0 00 00 00 0f jmpq c89f 0.00 : ca75: b6 4a 15 nopl (%rax) 0.00 : ca78: 48 d3 xor %ebx,%ebx 0.00 : ca7a: f8 89 44 test %r10,%r10 0.00 : ca7d: 24 40 48 nopl (%rax) 0.00 : ca80: 98 49 je ca8a 0.00 : ca82: 39 c4 73 mov %r10,%rdi 0.00 : ca85: 3d 48 c7 44 24 callq ca8a 0.00 : ca8a: 38 00 00 add $0x1,%ebx 0.00 : ca8d: 00 00 e9 a8 fe ff jne c8e8 0.00 : ca93: ff 0f xor %ebx,%ebx 0.00 : ca95: 1f 40 jmp cad6 0.00 : ca97: 00 e8 00 00 00 00 0f nopw 0x0(%rax,%rax,1) 0.00 : ca9e: 1f 00 0.00 : caa0: e9 2a fe ff ff mov 0x20(%rsp),%rax 0.00 : caa5: 0f 1f 00 mov %rbx,(%rax) 0.00 : caa8: 31 db 4d 85 mov %r12d,-0x78(%r15) 0.00 : caac: d2 0f 1f 00 74 08 4c mov 0x90(%rsp),%rbx 0.00 : cab3: 89 0.00 : cab4: d7 e8 jmp cad6 0.00 : cab6: 00 00 00 00 83 c3 01 nopw %cs:0x0(%rax,%rax,1) 0.00 : cabd: 0f 85 55 0.00 : cac0: fe ff ff movslq %r13d,%rax 0.00 : cac3: 31 db eb 3f 66 mov 0x50(%rsp,%rax,8),%rdi 0.00 : cac8: 0f 1f 84 test %rdi,%rdi 0.00 : cacb: 00 00 je cad2 0.00 : cacd: 00 00 00 48 8b callq cad2 0.00 : cad2: 44 24 20 48 add $0x1,%r13d 0.00 : cad6: 89 18 45 cmp %ebp,%r13d 0.00 : cad9: 89 67 jl cac0 0.00 : cadb: 88 48 8b 9c 24 jmpq c950 0.00 : cae0: 90 00 00 00 movzbl 0x1(%rdx),%eax 0.00 : cae4: eb 20 cmp $0x2e,%al 0.00 : cae6: 66 2e je caf0 0.00 : cae8: 0f 1f test %al,%al 0.00 : caea: 84 00 00 00 00 00 jne c785 0.00 : caf0: 49 63 c5 48 8b 7c c4 movq $0x0,0x38(%rsp) 0.00 : caf7: 50 48 0.00 : caf9: 85 ff 74 xor %r12d,%r12d 0.00 : cafc: 05 e8 00 00 00 00 41 movl $0x1,0x40(%rsp) 0.00 : cb03: 83 0.00 : cb04: c5 01 41 39 ed jmpq c7db 0.00 : cb09: 7c e5 e9 70 fe ff ff cmpl $0xfffedb08,0x9c(%rsp) 0.00 : cb10: 0f b6 42 01 0.00 : cb14: 3c 2e 74 08 84 c0 jne c950 0.00 : cb1a: 0f 85 95 fc ff ff 48 movq $0x0,0x90(%rsp) 0.00 : cb21: c7 44 24 38 00 0.00 : cb26: 00 00 00 45 31 jmpq c7a6 : cb2b: e4 c7 44 24 40 nopl 0x0(%rax,%rax,1) : cb30: 01 00 00 00 sub $0x28,%rsp : cb34: e9 d2 fc ff ff 81 bc mov $0xffffffffffffffdc,%rax : cb3b: 24 9c 00 00 00 mov %rbp,0x18(%rsp) : cb40: 08 db fe ff 0f mov %r12,0x20(%rsp) : cb45: 85 36 fe mov %rsi,%rbp : cb48: ff ff 48 c7 84 mov %rbx,0x10(%rsp) : cb4d: 24 90 00 00 00 00 00 cmpl $0xff,0x24(%rsi) : cb54: 00 00 e9 mov %rdi,%r12 : cb57: 7b fc jbe cb70 : cb59: ff ff 0f 1f 44 mov 0x10(%rsp),%rbx Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016a60 : ??:0 100.00 : 16a60: 48 83 ec 38 sub $0x38,%rsp 0.00 : 16a94: 4c 89 mov %ecx,%esi 0.00 : 16a96: 6c 24 20 mov %r8,%r12 0.00 : 16a99: 4c 8d 6f 90 48 callq 16a9e 0.00 : 16a9e: 89 6c 24 10 mov 0x4(%rsp),%esi 0.00 : 16aa2: 48 89 fd mov %r12,%r8 0.00 : 16aa5: 48 89 5c mov %r14,%rcx 0.00 : 16aa8: 24 08 4c mov %r15,%rdx 0.00 : 16aab: 89 64 24 mov %rbp,%rdi 0.00 : 16aae: 18 4c 89 ef 4c callq 16900 0.00 : 16ab3: 89 74 24 cmp $0xffffffc3,%eax 0.00 : 16ab6: 28 4c mov %eax,%ebx 0.00 : 16ab8: 89 7c je 16af0 0.00 : 16aba: 24 30 89 mov %r13,%rdi 0.00 : 16abd: 74 24 04 49 89 callq 16ac2 0.00 : 16ac2: d7 49 mov %ebx,%eax 0.00 : 16ac4: 89 ce 4d 89 c4 mov 0x10(%rsp),%rbp 0.00 : 16ac9: e8 00 00 00 00 mov 0x8(%rsp),%rbx 0.00 : 16ace: 8b 74 24 04 4d mov 0x18(%rsp),%r12 0.00 : 16ad3: 89 e0 4c 89 f1 mov 0x20(%rsp),%r13 0.00 : 16ad8: 4c 89 fa 48 89 mov 0x28(%rsp),%r14 0.00 : 16add: ef e8 4d fe ff mov 0x30(%rsp),%r15 0.00 : 16ae2: ff 83 f8 c3 add $0x38,%rsp 0.00 : 16ae6: 89 retq 0.00 : 16ae7: c3 74 36 4c 89 ef e8 nopw 0x0(%rax,%rax,1) 0.00 : 16aee: 00 00 0.00 : 16af0: 00 00 89 d8 mov 0x4(%rsp),%esi 0.00 : 16af4: 48 8b 6c mov %r12,%r8 0.00 : 16af7: 24 10 48 mov %r14,%rcx 0.00 : 16afa: 8b 5c 24 mov %r15,%rdx 0.00 : 16afd: 08 4c 8b mov %rbp,%rdi 0.00 : 16b00: 64 24 18 4c 8b callq 16510 0.00 : 16b05: 6c 24 mov %eax,%ebx 0.00 : 16b07: 20 4c jmp 16aba : 16b09: 8b 74 24 28 4c 8b 7c nopl 0x0(%rax) : 16b10: 24 30 48 cmpb $0x0,(%rsi) : 16b13: 83 c4 38 c3 66 0f mov $0xffffffea,%r10d : 16b19: 1f 84 jne 16b20 : 16b1b: 00 00 00 mov %r10d,%eax : 16b1e: 00 retq : 16b1f: 00 nop : 16b20: 8b 74 24 04 mov 0x68(%rdi),%rax : 16b24: 4d 89 e0 4c 89 f1 mov $0xffffffa1,%r10d : 16b2a: 4c 89 fa 48 89 ef e8 mov 0x338(%rax),%rax : 16b31: 0b fa ff ff testb $0x40,0x79(%rax) : 16b35: 89 c3 je 16b1b : 16b37: eb b1 0f 1f mov 0x30(%rdi),%rdi Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000445fa0 : 0.00 : 445fa0: 41 57 push %r15 0.00 : 445fa2: 41 56 push %r14 0.00 : 445fa4: 41 55 push %r13 0.00 : 445fa6: 41 54 push %r12 0.00 : 445fa8: 55 push %rbp 0.00 : 445fa9: 53 push %rbx 0.00 : 445faa: 48 81 ec 18 01 00 00 sub $0x118,%rsp 0.00 : 445fb1: 8b 2d b9 fe 24 00 mov 0x24feb9(%rip),%ebp # 695e70 ??:0 100.00 : 445fb7: 85 ed test %ebp,%ebp 0.00 : 445fb9: 0f 84 21 01 00 00 je 4460e0 0.00 : 445fbf: 8b 05 df 0a 25 00 mov 0x250adf(%rip),%eax # 696aa4 0.00 : 445fc5: c7 05 a1 fe 24 00 00 movl $0x0,0x24fea1(%rip) # 695e70 0.00 : 445fcc: 00 00 00 0.00 : 445fcf: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 445fd5: 31 ed xor %ebp,%ebp 0.00 : 445fd7: 4c 8d bc 24 90 00 00 lea 0x90(%rsp),%r15 0.00 : 445fde: 00 0.00 : 445fdf: 4c 8d 74 24 10 lea 0x10(%rsp),%r14 0.00 : 445fe4: 89 44 24 0c mov %eax,0xc(%rsp) 0.00 : 445fe8: eb 18 jmp 446002 0.00 : 445fea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 445ff0: 41 83 c5 01 add $0x1,%r13d 0.00 : 445ff4: 48 83 c5 04 add $0x4,%rbp 0.00 : 445ff8: 41 83 fd 41 cmp $0x41,%r13d 0.00 : 445ffc: 0f 84 d4 00 00 00 je 4460d6 0.00 : 446002: 8b 9d 44 70 69 00 mov 0x697044(%rbp),%ebx 0.00 : 446008: 85 db test %ebx,%ebx 0.00 : 44600a: 74 e4 je 445ff0 0.00 : 44600c: 4c 89 ff mov %r15,%rdi 0.00 : 44600f: e8 2c 0b fd ff callq 416b40 0.00 : 446014: 4c 89 f7 mov %r14,%rdi 0.00 : 446017: e8 24 0b fd ff callq 416b40 0.00 : 44601c: 44 89 ee mov %r13d,%esi 0.00 : 44601f: 4c 89 ff mov %r15,%rdi 0.00 : 446022: e8 89 08 fd ff callq 4168b0 0.00 : 446027: 31 ff xor %edi,%edi 0.00 : 446029: 4c 89 f2 mov %r14,%rdx 0.00 : 44602c: 4c 89 fe mov %r15,%rsi 0.00 : 44602f: e8 ac 05 fd ff callq 4165e0 0.00 : 446034: 41 83 fd 02 cmp $0x2,%r13d 0.00 : 446038: 0f 84 2a 01 00 00 je 446168 0.00 : 44603e: 48 8b 9c 2d 68 71 69 mov 0x697168(%rbp,%rbp,1),%rbx 0.00 : 446045: 00 0.00 : 446046: 48 83 fb 01 cmp $0x1,%rbx 0.00 : 44604a: 0f 86 a8 00 00 00 jbe 4460f8 0.00 : 446050: 48 81 fb a0 53 44 00 cmp $0x4453a0,%rbx 0.00 : 446057: 0f 84 9b 00 00 00 je 4460f8 0.00 : 44605d: e8 4e 3c fd ff callq 419cb0 0.00 : 446062: 48 8b 9c 2d 68 71 69 mov 0x697168(%rbp,%rbp,1),%rbx 0.00 : 446069: 00 0.00 : 44606a: 49 89 c4 mov %rax,%r12 0.00 : 44606d: 48 89 df mov %rbx,%rdi 0.00 : 446070: e8 7b 03 fd ff callq 4163f0 0.00 : 446075: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 446079: e8 42 22 01 00 callq 4582c0 0.00 : 44607e: 48 89 de mov %rbx,%rsi 0.00 : 446081: 48 89 c7 mov %rax,%rdi 0.00 : 446084: e8 e7 08 fd ff callq 416970 0.00 : 446089: ba 05 00 00 00 mov $0x5,%edx 0.00 : 44608e: 48 89 c7 mov %rax,%rdi 0.00 : 446091: be f7 59 47 00 mov $0x4759f7,%esi 0.00 : 446096: e8 f5 66 01 00 callq 45c790 0.00 : 44609b: 4c 89 e7 mov %r12,%rdi 0.00 : 44609e: e8 0d 37 fd ff callq 4197b0 0.00 : 4460a3: 4c 89 e7 mov %r12,%rdi 0.00 : 4460a6: e8 15 03 fd ff callq 4163c0 0.00 : 4460ab: 31 d2 xor %edx,%edx 0.00 : 4460ad: 4c 89 f6 mov %r14,%rsi 0.00 : 4460b0: bf 02 00 00 00 mov $0x2,%edi 0.00 : 4460b5: 41 83 c5 01 add $0x1,%r13d 0.00 : 4460b9: c7 85 44 70 69 00 00 movl $0x0,0x697044(%rbp) 0.00 : 4460c0: 00 00 00 0.00 : 4460c3: 48 83 c5 04 add $0x4,%rbp 0.00 : 4460c7: e8 14 05 fd ff callq 4165e0 0.00 : 4460cc: 41 83 fd 41 cmp $0x41,%r13d 0.00 : 4460d0: 0f 85 2c ff ff ff jne 446002 0.00 : 4460d6: 8b 44 24 0c mov 0xc(%rsp),%eax 0.00 : 4460da: 89 05 c4 09 25 00 mov %eax,0x2509c4(%rip) # 696aa4 0.00 : 4460e0: 48 81 c4 18 01 00 00 add $0x118,%rsp 0.00 : 4460e7: 5b pop %rbx 0.00 : 4460e8: 5d pop %rbp 0.00 : 4460e9: 41 5c pop %r12 0.00 : 4460eb: 41 5d pop %r13 0.00 : 4460ed: 41 5e pop %r14 0.00 : 4460ef: 41 5f pop %r15 0.00 : 4460f1: c3 retq 0.00 : 4460f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4460f8: 31 ff xor %edi,%edi 0.00 : 4460fa: ba 05 00 00 00 mov $0x5,%edx 0.00 : 4460ff: be 10 66 47 00 mov $0x476610,%esi 0.00 : 446104: e8 77 07 fd ff callq 416880 0.00 : 446109: 48 89 da mov %rbx,%rdx 0.00 : 44610c: 48 89 c7 mov %rax,%rdi 0.00 : 44610f: 44 89 ee mov %r13d,%esi 0.00 : 446112: 31 c0 xor %eax,%eax 0.00 : 446114: e8 d7 ad fe ff callq 430ef0 0.00 : 446119: 48 83 bc 2d 68 71 69 cmpq $0x0,0x697168(%rbp,%rbp,1) 0.00 : 446120: 00 00 0.00 : 446122: 75 87 jne 4460ab 0.00 : 446124: 44 89 ef mov %r13d,%edi 0.00 : 446127: e8 34 fe ff ff callq 445f60 0.00 : 44612c: 31 ff xor %edi,%edi 0.00 : 44612e: 48 89 c3 mov %rax,%rbx 0.00 : 446131: ba 05 00 00 00 mov $0x5,%edx 0.00 : 446136: be 48 66 47 00 mov $0x476648,%esi 0.00 : 44613b: e8 40 07 fd ff callq 416880 0.00 : 446140: 44 89 ee mov %r13d,%esi 0.00 : 446143: 48 89 c7 mov %rax,%rdi 0.00 : 446146: 48 89 da mov %rbx,%rdx 0.00 : 446149: 31 c0 xor %eax,%eax 0.00 : 44614b: e8 a0 ad fe ff callq 430ef0 0.00 : 446150: e8 1b 01 fd ff callq 416270 0.00 : 446155: 44 89 ee mov %r13d,%esi 0.00 : 446158: 89 c7 mov %eax,%edi 0.00 : 44615a: e8 41 04 fd ff callq 4165a0 0.00 : 44615f: e9 47 ff ff ff jmpq 4460ab 0.00 : 446164: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 446168: e8 d3 f9 ff ff callq 445b40 0.00 : 44616d: c7 05 c1 fd 24 00 00 movl $0x0,0x24fdc1(%rip) # 695f38 0.00 : 446174: 00 00 00 0.00 : 446177: e9 2f ff ff ff jmpq 4460ab Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_pageops.c:202 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_pageops.c:255 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046bf30 : : brinRmAccess *rmAccess, BlockNumber heapBlk, : Buffer oldbuf, OffsetNumber oldoff, : const BrTuple *origtup, Size origsz, : const BrTuple *newtup, Size newsz, : bool samepage) : { 0.00 : 46bf30: 55 push %rbp 0.00 : 46bf31: 48 89 e5 mov %rsp,%rbp 0.00 : 46bf34: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 46bf38: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 46bf3c: 45 89 c5 mov %r8d,%r13d 0.00 : 46bf3f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 46bf43: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 46bf47: 49 89 fe mov %rdi,%r14 0.00 : 46bf4a: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 46bf4e: 48 81 ec 40 01 00 00 sub $0x140,%rsp 0.00 : 46bf55: 0f b6 5d 30 movzbl 0x30(%rbp),%ebx 0.00 : 46bf59: 89 b5 d4 fe ff ff mov %esi,-0x12c(%rbp) : Size oldsz; : Buffer newbuf; : BrinSpecialSpace *special; : : /* make sure the revmap is long enough to contain the entry we need */ : brinRevmapExtend(rmAccess, heapBlk); 0.00 : 46bf5f: 48 89 d7 mov %rdx,%rdi 0.00 : 46bf62: 89 ce mov %ecx,%esi : brinRmAccess *rmAccess, BlockNumber heapBlk, : Buffer oldbuf, OffsetNumber oldoff, : const BrTuple *origtup, Size origsz, : const BrTuple *newtup, Size newsz, : bool samepage) : { 0.00 : 46bf64: 48 89 95 c8 fe ff ff mov %rdx,-0x138(%rbp) 0.00 : 46bf6b: 41 89 cf mov %ecx,%r15d 0.00 : 46bf6e: 66 44 89 8d ec fe ff mov %r9w,-0x114(%rbp) 0.00 : 46bf75: ff : Size oldsz; : Buffer newbuf; : BrinSpecialSpace *special; : : /* make sure the revmap is long enough to contain the entry we need */ : brinRevmapExtend(rmAccess, heapBlk); 0.00 : 46bf76: e8 55 0b 00 00 callq 46cad0 : : if (!samepage) 0.00 : 46bf7b: 84 db test %bl,%bl 0.00 : 46bf7d: 75 51 jne 46bfd0 : { : bool extended = false; : : /* need a page on which to put the item */ : newbuf = brin_getinsertbuffer(idxrel, oldbuf, newsz, &extended); 0.00 : 46bf7f: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 46bf83: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 46bf87: 44 89 ee mov %r13d,%esi 0.00 : 46bf8a: 4c 89 f7 mov %r14,%rdi : /* make sure the revmap is long enough to contain the entry we need */ : brinRevmapExtend(rmAccess, heapBlk); : : if (!samepage) : { : bool extended = false; 0.00 : 46bf8d: c6 45 cf 00 movb $0x0,-0x31(%rbp) : : /* need a page on which to put the item */ : newbuf = brin_getinsertbuffer(idxrel, oldbuf, newsz, &extended); 0.00 : 46bf91: e8 1a f7 ff ff callq 46b6b0 : /* XXX delay vacuuming FSM until locks are released? */ : if (extended) 0.00 : 46bf96: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : if (!samepage) : { : bool extended = false; : : /* need a page on which to put the item */ : newbuf = brin_getinsertbuffer(idxrel, oldbuf, newsz, &extended); 0.00 : 46bf9a: 41 89 c4 mov %eax,%r12d : /* XXX delay vacuuming FSM until locks are released? */ : if (extended) 0.00 : 46bf9d: 0f 85 1d 02 00 00 jne 46c1c0 : FreeSpaceMapVacuum(idxrel); : if (!BufferIsValid(newbuf)) 0.00 : 46bfa3: 45 85 e4 test %r12d,%r12d 0.00 : 46bfa6: 74 7d je 46c025 : /* : * Note: it's possible (though unlikely) that the returned newbuf is : * the same as oldbuf, if brin_getinsertbuffer determined that the old : * buffer does in fact have enough space. : */ : if (newbuf == oldbuf) 0.00 : 46bfa8: 45 39 e5 cmp %r12d,%r13d 0.00 : 46bfab: b8 00 00 00 00 mov $0x0,%eax 0.00 : 46bfb0: 44 0f 44 e0 cmove %eax,%r12d : else : { : LockBuffer(oldbuf, BUFFER_LOCK_EXCLUSIVE); : newbuf = InvalidBuffer; : } : oldpage = BufferGetPage(oldbuf); 0.00 : 46bfb4: 45 85 ed test %r13d,%r13d 0.00 : 46bfb7: 79 2c jns 46bfe5 0.00 : 46bfb9: 44 89 e8 mov %r13d,%eax 0.00 : 46bfbc: 48 8b 15 55 11 71 00 mov 0x711155(%rip),%rdx # b7d118 0.00 : 46bfc3: f7 d0 not %eax 0.00 : 46bfc5: 48 98 cltq 0.00 : 46bfc7: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 46bfcb: eb 2a jmp 46bff7 0.00 : 46bfcd: 0f 1f 00 nopl (%rax) : if (newbuf == oldbuf) : newbuf = InvalidBuffer; : } : else : { : LockBuffer(oldbuf, BUFFER_LOCK_EXCLUSIVE); 0.00 : 46bfd0: be 02 00 00 00 mov $0x2,%esi 0.00 : 46bfd5: 44 89 ef mov %r13d,%edi 0.00 : 46bfd8: 45 31 e4 xor %r12d,%r12d 0.00 : 46bfdb: e8 30 87 20 00 callq 674710 : newbuf = InvalidBuffer; : } : oldpage = BufferGetPage(oldbuf); 0.00 : 46bfe0: 45 85 ed test %r13d,%r13d 0.00 : 46bfe3: 78 d4 js 46bfb9 0.00 : 46bfe5: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 46bfe9: 48 63 d8 movslq %eax,%rbx 0.00 : 46bfec: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 46bff0: 48 03 1d 01 3b 75 00 add 0x753b01(%rip),%rbx # bbfaf8 : oldlp = PageGetItemId(oldpage, oldoff); 0.00 : 46bff7: 0f b7 85 ec fe ff ff movzwl -0x114(%rbp),%eax : : /* : * Check that the old tuple wasn't updated concurrently: it might have : * moved someplace else entirely ... : */ : if (!ItemIdIsNormal(oldlp)) 0.00 : 46bffe: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 46c002: 8b 44 93 08 mov 0x8(%rbx,%rdx,4),%eax 0.00 : 46c006: 25 00 80 01 00 and $0x18000,%eax 0.00 : 46c00b: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 46c010: 74 2e je 46c040 : /* : * ... or it might have been updated in place to different contents. : */ : if (!brin_tuples_equal(oldtup, oldsz, origtup, origsz)) : { : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c012: 31 f6 xor %esi,%esi 0.00 : 46c014: 44 89 ef mov %r13d,%edi 0.00 : 46c017: e8 f4 86 20 00 callq 674710 : if (BufferIsValid(newbuf)) 0.00 : 46c01c: 45 85 e4 test %r12d,%r12d 0.00 : 46c01f: 0f 85 8b 01 00 00 jne 46c1b0 : : END_CRIT_SECTION(); : : LockBuffer(revmapbuf, BUFFER_LOCK_UNLOCK); : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); : UnlockReleaseBuffer(newbuf); 0.00 : 46c025: 31 c0 xor %eax,%eax : return true; : } : } 0.00 : 46c027: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 46c02b: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 46c02f: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 46c033: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 46c037: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 46c03b: c9 leaveq 0.00 : 46c03c: c3 retq 0.00 : 46c03d: 0f 1f 00 nopl (%rax) : oldtup = (BrTuple *) PageGetItem(oldpage, oldlp); : : /* : * ... or it might have been updated in place to different contents. : */ : if (!brin_tuples_equal(oldtup, oldsz, origtup, origsz)) 0.00 : 46c040: 0f b7 7c 93 08 movzwl 0x8(%rbx,%rdx,4),%edi 0.00 : 46c045: 0f b7 74 93 0a movzwl 0xa(%rbx,%rdx,4),%esi 0.00 : 46c04a: 48 8b 4d 18 mov 0x18(%rbp),%rcx 0.00 : 46c04e: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 46c052: 81 e7 ff 7f 00 00 and $0x7fff,%edi 0.00 : 46c058: 66 d1 ee shr %si 0.00 : 46c05b: 48 8d 3c 3b lea (%rbx,%rdi,1),%rdi 0.00 : 46c05f: 0f b7 f6 movzwl %si,%esi 0.00 : 46c062: e8 a9 17 00 00 callq 46d810 0.00 : 46c067: 84 c0 test %al,%al 0.00 : 46c069: 74 a7 je 46c012 : * : * Note that there might now be enough space on the page even though the : * caller told us there isn't, if a concurrent update moved another tuple : * elsewhere or replaced a tuple with a smaller one. : */ : if (((special->flags & BRIN_EVACUATE_PAGE) == 0) && 0.00 : 46c06b: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.00 : 46c06f: f6 04 03 01 testb $0x1,(%rbx,%rax,1) 0.00 : 46c073: 0f 84 67 01 00 00 je 46c1e0 : END_CRIT_SECTION(); : : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); : return true; : } : else if (newbuf == InvalidBuffer) 0.00 : 46c079: 41 83 fc 00 cmp $0x0,%r12d 0.00 : 46c07d: 0f 1f 00 nopl (%rax) 0.00 : 46c080: 0f 84 0a 02 00 00 je 46c290 : { : /* : * Not enough free space on the oldpage. Put the new tuple on the new : * page, and update the revmap. : */ : Page newpage = BufferGetPage(newbuf); 0.00 : 46c086: 0f 8c 1c 02 00 00 jl 46c2a8 0.00 : 46c08c: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 46c091: 48 8b 15 60 3a 75 00 mov 0x753a60(%rip),%rdx # bbfaf8 0.00 : 46c098: 48 98 cltq 0.00 : 46c09a: 48 c1 e0 0d shl $0xd,%rax 0.00 : 46c09e: 48 01 d0 add %rdx,%rax 0.00 : 46c0a1: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp) : Buffer revmapbuf; : ItemPointerData newtid; : OffsetNumber newoff; : : revmapbuf = brinLockRevmapPageForUpdate(rmAccess, heapBlk); 0.00 : 46c0a8: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 46c0af: 44 89 fe mov %r15d,%esi 0.00 : 46c0b2: e8 f9 0d 00 00 callq 46ceb0 0.00 : 46c0b7: 89 85 e4 fe ff ff mov %eax,-0x11c(%rbp) : : START_CRIT_SECTION(); 0.00 : 46c0bd: 8b 05 d9 df 74 00 mov 0x74dfd9(%rip),%eax # bba09c : : PageIndexDeleteNoCompact(oldpage, &oldoff, 1); 0.00 : 46c0c3: 48 8d b5 ec fe ff ff lea -0x114(%rbp),%rsi 0.00 : 46c0ca: ba 01 00 00 00 mov $0x1,%edx 0.00 : 46c0cf: 48 89 df mov %rbx,%rdi : ItemPointerData newtid; : OffsetNumber newoff; : : revmapbuf = brinLockRevmapPageForUpdate(rmAccess, heapBlk); : : START_CRIT_SECTION(); 0.00 : 46c0d2: 83 c0 01 add $0x1,%eax 0.00 : 46c0d5: 89 05 c1 df 74 00 mov %eax,0x74dfc1(%rip) # bba09c : : PageIndexDeleteNoCompact(oldpage, &oldoff, 1); 0.00 : 46c0db: e8 50 8f 22 00 callq 695030 : newoff = PageAddItem(newpage, (Item) newtup, newsz, InvalidOffsetNumber, false, false); 0.00 : 46c0e0: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 46c0e4: 48 8b 75 20 mov 0x20(%rbp),%rsi 0.00 : 46c0e8: 45 31 c9 xor %r9d,%r9d 0.00 : 46c0eb: 48 8b bd d8 fe ff ff mov -0x128(%rbp),%rdi 0.00 : 46c0f2: 45 31 c0 xor %r8d,%r8d 0.00 : 46c0f5: 31 c9 xor %ecx,%ecx 0.00 : 46c0f7: e8 84 9d 22 00 callq 695e80 : if (newoff == InvalidOffsetNumber) 0.00 : 46c0fc: 66 85 c0 test %ax,%ax : revmapbuf = brinLockRevmapPageForUpdate(rmAccess, heapBlk); : : START_CRIT_SECTION(); : : PageIndexDeleteNoCompact(oldpage, &oldoff, 1); : newoff = PageAddItem(newpage, (Item) newtup, newsz, InvalidOffsetNumber, false, false); 0.00 : 46c0ff: 66 89 85 ea fe ff ff mov %ax,-0x116(%rbp) : if (newoff == InvalidOffsetNumber) 0.00 : 46c106: 0f 84 2b 04 00 00 je 46c537 : elog(ERROR, "failed to add BRIN tuple to new page"); : MarkBufferDirty(oldbuf); 0.00 : 46c10c: 44 89 ef mov %r13d,%edi 0.00 : 46c10f: e8 dc 86 20 00 callq 6747f0 : MarkBufferDirty(newbuf); 0.00 : 46c114: 44 89 e7 mov %r12d,%edi 0.00 : 46c117: e8 d4 86 20 00 callq 6747f0 : : ItemPointerSet(&newtid, BufferGetBlockNumber(newbuf), newoff); 0.00 : 46c11c: 44 89 e7 mov %r12d,%edi 0.00 : 46c11f: e8 0c 7f 20 00 callq 674030 0.00 : 46c124: 44 89 e7 mov %r12d,%edi 0.00 : 46c127: c1 e8 10 shr $0x10,%eax 0.00 : 46c12a: 66 89 45 b0 mov %ax,-0x50(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_pageops.c:202 50.00 : 46c12e: e8 fd 7e 20 00 callq 674030 0.00 : 46c133: 66 89 45 b2 mov %ax,-0x4e(%rbp) 0.00 : 46c137: 0f b7 85 ea fe ff ff movzwl -0x116(%rbp),%eax : brinSetHeapBlockItemptr(revmapbuf, pagesPerRange, heapBlk, newtid); 0.00 : 46c13e: 44 89 fa mov %r15d,%edx 0.00 : 46c141: 8b b5 d4 fe ff ff mov -0x12c(%rbp),%esi 0.00 : 46c147: 8b bd e4 fe ff ff mov -0x11c(%rbp),%edi : if (newoff == InvalidOffsetNumber) : elog(ERROR, "failed to add BRIN tuple to new page"); : MarkBufferDirty(oldbuf); : MarkBufferDirty(newbuf); : : ItemPointerSet(&newtid, BufferGetBlockNumber(newbuf), newoff); 0.00 : 46c14d: 66 89 45 b4 mov %ax,-0x4c(%rbp) : brinSetHeapBlockItemptr(revmapbuf, pagesPerRange, heapBlk, newtid); 0.00 : 46c151: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 46c155: e8 b6 05 00 00 callq 46c710 : MarkBufferDirty(revmapbuf); 0.00 : 46c15a: 8b bd e4 fe ff ff mov -0x11c(%rbp),%edi 0.00 : 46c160: e8 8b 86 20 00 callq 6747f0 : : /* XLOG stuff */ : if (RelationNeedsWAL(idxrel)) 0.00 : 46c165: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 46c169: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 46c16d: 0f 84 5d 01 00 00 je 46c2d0 : PageSetLSN(oldpage, recptr); : PageSetLSN(newpage, recptr); : PageSetLSN(BufferGetPage(revmapbuf), recptr); : } : : END_CRIT_SECTION(); 0.00 : 46c173: 8b 05 23 df 74 00 mov 0x74df23(%rip),%eax # bba09c : : LockBuffer(revmapbuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c179: 8b bd e4 fe ff ff mov -0x11c(%rbp),%edi 0.00 : 46c17f: 31 f6 xor %esi,%esi : PageSetLSN(oldpage, recptr); : PageSetLSN(newpage, recptr); : PageSetLSN(BufferGetPage(revmapbuf), recptr); : } : : END_CRIT_SECTION(); 0.00 : 46c181: 83 e8 01 sub $0x1,%eax 0.00 : 46c184: 89 05 12 df 74 00 mov %eax,0x74df12(%rip) # bba09c : : LockBuffer(revmapbuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c18a: e8 81 85 20 00 callq 674710 : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c18f: 31 f6 xor %esi,%esi 0.00 : 46c191: 44 89 ef mov %r13d,%edi 0.00 : 46c194: e8 77 85 20 00 callq 674710 : UnlockReleaseBuffer(newbuf); 0.00 : 46c199: 44 89 e7 mov %r12d,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_pageops.c:255 50.00 : 46c19c: e8 8f 8d 20 00 callq 674f30 0.00 : 46c1a1: b8 01 00 00 00 mov $0x1,%eax : return true; : } : } 0.00 : 46c1a6: e9 7c fe ff ff jmpq 46c027 0.00 : 46c1ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : if (!brin_tuples_equal(oldtup, oldsz, origtup, origsz)) : { : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); : if (BufferIsValid(newbuf)) : UnlockReleaseBuffer(newbuf); 0.00 : 46c1b0: 44 89 e7 mov %r12d,%edi 0.00 : 46c1b3: e8 78 8d 20 00 callq 674f30 0.00 : 46c1b8: 31 c0 xor %eax,%eax 0.00 : 46c1ba: e9 68 fe ff ff jmpq 46c027 0.00 : 46c1bf: 90 nop : : /* need a page on which to put the item */ : newbuf = brin_getinsertbuffer(idxrel, oldbuf, newsz, &extended); : /* XXX delay vacuuming FSM until locks are released? */ : if (extended) : FreeSpaceMapVacuum(idxrel); 0.00 : 46c1c0: 4c 89 f7 mov %r14,%rdi 0.00 : 46c1c3: e8 b8 00 21 00 callq 67c280 : if (!BufferIsValid(newbuf)) 0.00 : 46c1c8: 45 85 e4 test %r12d,%r12d 0.00 : 46c1cb: 0f 85 d7 fd ff ff jne 46bfa8 0.00 : 46c1d1: e9 4f fe ff ff jmpq 46c025 0.00 : 46c1d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46c1dd: 00 00 00 : * : * Note that there might now be enough space on the page even though the : * caller told us there isn't, if a concurrent update moved another tuple : * elsewhere or replaced a tuple with a smaller one. : */ : if (((special->flags & BRIN_EVACUATE_PAGE) == 0) && 0.00 : 46c1e0: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 46c1e4: 48 8b 75 18 mov 0x18(%rbp),%rsi 0.00 : 46c1e8: 44 89 ef mov %r13d,%edi 0.00 : 46c1eb: e8 d0 fc ff ff callq 46bec0 0.00 : 46c1f0: 84 c0 test %al,%al 0.00 : 46c1f2: 0f 84 81 fe ff ff je 46c079 : brin_can_do_samepage_update(oldbuf, origsz, newsz)) : { : if (BufferIsValid(newbuf)) 0.00 : 46c1f8: 45 85 e4 test %r12d,%r12d 0.00 : 46c1fb: 0f 85 6a 02 00 00 jne 46c46b : UnlockReleaseBuffer(newbuf); : : START_CRIT_SECTION(); 0.00 : 46c201: 8b 05 95 de 74 00 mov 0x74de95(%rip),%eax # bba09c : PageIndexDeleteNoCompact(oldpage, &oldoff, 1); 0.00 : 46c207: 48 8d b5 ec fe ff ff lea -0x114(%rbp),%rsi 0.00 : 46c20e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 46c213: 48 89 df mov %rbx,%rdi : brin_can_do_samepage_update(oldbuf, origsz, newsz)) : { : if (BufferIsValid(newbuf)) : UnlockReleaseBuffer(newbuf); : : START_CRIT_SECTION(); 0.00 : 46c216: 83 c0 01 add $0x1,%eax 0.00 : 46c219: 89 05 7d de 74 00 mov %eax,0x74de7d(%rip) # bba09c : PageIndexDeleteNoCompact(oldpage, &oldoff, 1); 0.00 : 46c21f: e8 0c 8e 22 00 callq 695030 : if (PageAddItem(oldpage, (Item) newtup, newsz, oldoff, true, 0.00 : 46c224: 0f b7 8d ec fe ff ff movzwl -0x114(%rbp),%ecx 0.00 : 46c22b: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 46c22f: 45 31 c9 xor %r9d,%r9d 0.00 : 46c232: 48 8b 75 20 mov 0x20(%rbp),%rsi 0.00 : 46c236: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 46c23c: 48 89 df mov %rbx,%rdi 0.00 : 46c23f: e8 3c 9c 22 00 callq 695e80 0.00 : 46c244: 66 85 c0 test %ax,%ax 0.00 : 46c247: 0f 84 14 03 00 00 je 46c561 : false) == InvalidOffsetNumber) : elog(ERROR, "failed to add BRIN tuple"); : MarkBufferDirty(oldbuf); 0.00 : 46c24d: 44 89 ef mov %r13d,%edi 0.00 : 46c250: e8 9b 85 20 00 callq 6747f0 : : /* XLOG stuff */ : if (RelationNeedsWAL(idxrel)) 0.00 : 46c255: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 46c259: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 46c25d: 0f 84 3a 02 00 00 je 46c49d : recptr = XLogInsert(RM_BRIN_ID, info, rdata); : : PageSetLSN(oldpage, recptr); : } : : END_CRIT_SECTION(); 0.00 : 46c263: 8b 05 33 de 74 00 mov 0x74de33(%rip),%eax # bba09c : : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c269: 31 f6 xor %esi,%esi 0.00 : 46c26b: 44 89 ef mov %r13d,%edi : recptr = XLogInsert(RM_BRIN_ID, info, rdata); : : PageSetLSN(oldpage, recptr); : } : : END_CRIT_SECTION(); 0.00 : 46c26e: 83 e8 01 sub $0x1,%eax 0.00 : 46c271: 89 05 25 de 74 00 mov %eax,0x74de25(%rip) # bba09c : : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c277: e8 94 84 20 00 callq 674710 0.00 : 46c27c: b8 01 00 00 00 mov $0x1,%eax : LockBuffer(revmapbuf, BUFFER_LOCK_UNLOCK); : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); : UnlockReleaseBuffer(newbuf); : return true; : } : } 0.00 : 46c281: e9 a1 fd ff ff jmpq 46c027 0.00 : 46c286: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46c28d: 00 00 00 : { : /* : * Not enough space, but caller said that there was. Tell them to : * start over. : */ : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); 0.00 : 46c290: 31 f6 xor %esi,%esi 0.00 : 46c292: 44 89 ef mov %r13d,%edi 0.00 : 46c295: e8 76 84 20 00 callq 674710 0.00 : 46c29a: 31 c0 xor %eax,%eax : LockBuffer(revmapbuf, BUFFER_LOCK_UNLOCK); : LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); : UnlockReleaseBuffer(newbuf); : return true; : } : } 0.00 : 46c29c: e9 86 fd ff ff jmpq 46c027 0.00 : 46c2a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* : * Not enough free space on the oldpage. Put the new tuple on the new : * page, and update the revmap. : */ : Page newpage = BufferGetPage(newbuf); 0.00 : 46c2a8: 44 89 e0 mov %r12d,%eax 0.00 : 46c2ab: 48 8b 15 66 0e 71 00 mov 0x710e66(%rip),%rdx # b7d118 0.00 : 46c2b2: f7 d0 not %eax 0.00 : 46c2b4: 48 98 cltq 0.00 : 46c2b6: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 46c2ba: 48 89 95 d8 fe ff ff mov %rdx,-0x128(%rbp) 0.00 : 46c2c1: e9 e2 fd ff ff jmpq 46c0a8 0.00 : 46c2c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46c2cd: 00 00 00 : xl_brin_update xlrec; : XLogRecPtr recptr; : XLogRecData rdata[4]; : uint8 info = XLOG_BRIN_UPDATE; : : xlrec.new.node = idxrel->rd_node; 0.00 : 46c2d0: 49 8b 06 mov (%r14),%rax : ItemPointerSet(&xlrec.new.tid, BufferGetBlockNumber(newbuf), newoff); 0.00 : 46c2d3: 44 89 e7 mov %r12d,%edi : xl_brin_update xlrec; : XLogRecPtr recptr; : XLogRecData rdata[4]; : uint8 info = XLOG_BRIN_UPDATE; : : xlrec.new.node = idxrel->rd_node; 0.00 : 46c2d6: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 46c2dd: 41 8b 46 08 mov 0x8(%r14),%eax 0.00 : 46c2e1: 89 85 78 ff ff ff mov %eax,-0x88(%rbp) : ItemPointerSet(&xlrec.new.tid, BufferGetBlockNumber(newbuf), newoff); 0.00 : 46c2e7: e8 44 7d 20 00 callq 674030 0.00 : 46c2ec: 44 89 e7 mov %r12d,%edi 0.00 : 46c2ef: c1 e8 10 shr $0x10,%eax 0.00 : 46c2f2: 66 89 45 88 mov %ax,-0x78(%rbp) 0.00 : 46c2f6: e8 35 7d 20 00 callq 674030 0.00 : 46c2fb: 0f b7 95 ea fe ff ff movzwl -0x116(%rbp),%edx : xlrec.new.heapBlk = heapBlk; : xlrec.new.revmapBlk = BufferGetBlockNumber(revmapbuf); 0.00 : 46c302: 8b bd e4 fe ff ff mov -0x11c(%rbp),%edi : XLogRecPtr recptr; : XLogRecData rdata[4]; : uint8 info = XLOG_BRIN_UPDATE; : : xlrec.new.node = idxrel->rd_node; : ItemPointerSet(&xlrec.new.tid, BufferGetBlockNumber(newbuf), newoff); 0.00 : 46c308: 66 89 45 8a mov %ax,-0x76(%rbp) : xlrec.new.heapBlk = heapBlk; 0.00 : 46c30c: 44 89 bd 7c ff ff ff mov %r15d,-0x84(%rbp) : XLogRecPtr recptr; : XLogRecData rdata[4]; : uint8 info = XLOG_BRIN_UPDATE; : : xlrec.new.node = idxrel->rd_node; : ItemPointerSet(&xlrec.new.tid, BufferGetBlockNumber(newbuf), newoff); 0.00 : 46c313: 66 89 55 8c mov %dx,-0x74(%rbp) : xlrec.new.heapBlk = heapBlk; : xlrec.new.revmapBlk = BufferGetBlockNumber(revmapbuf); 0.00 : 46c317: e8 14 7d 20 00 callq 674030 0.00 : 46c31c: 89 45 80 mov %eax,-0x80(%rbp) : xlrec.new.pagesPerRange = pagesPerRange; 0.00 : 46c31f: 8b 85 d4 fe ff ff mov -0x12c(%rbp),%eax : ItemPointerSet(&xlrec.oldtid, BufferGetBlockNumber(oldbuf), oldoff); 0.00 : 46c325: 44 89 ef mov %r13d,%edi : : xlrec.new.node = idxrel->rd_node; : ItemPointerSet(&xlrec.new.tid, BufferGetBlockNumber(newbuf), newoff); : xlrec.new.heapBlk = heapBlk; : xlrec.new.revmapBlk = BufferGetBlockNumber(revmapbuf); : xlrec.new.pagesPerRange = pagesPerRange; 0.00 : 46c328: 89 45 84 mov %eax,-0x7c(%rbp) : ItemPointerSet(&xlrec.oldtid, BufferGetBlockNumber(oldbuf), oldoff); 0.00 : 46c32b: e8 00 7d 20 00 callq 674030 0.00 : 46c330: 44 89 ef mov %r13d,%edi 0.00 : 46c333: c1 e8 10 shr $0x10,%eax 0.00 : 46c336: 66 89 45 90 mov %ax,-0x70(%rbp) 0.00 : 46c33a: e8 f1 7c 20 00 callq 674030 0.00 : 46c33f: 66 89 45 92 mov %ax,-0x6e(%rbp) 0.00 : 46c343: 0f b7 85 ec fe ff ff movzwl -0x114(%rbp),%eax : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBrinUpdate; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 46c34a: 48 8d 95 f0 fe ff ff lea -0x110(%rbp),%rdx : rdata[3].len = 0; : rdata[3].buffer = oldbuf; : rdata[3].buffer_std = true; : rdata[3].next = NULL; : : recptr = XLogInsert(RM_BRIN_ID, info, rdata); 0.00 : 46c351: be 20 00 00 00 mov $0x20,%esi 0.00 : 46c356: bf 11 00 00 00 mov $0x11,%edi : xlrec.new.revmapBlk = BufferGetBlockNumber(revmapbuf); : xlrec.new.pagesPerRange = pagesPerRange; : ItemPointerSet(&xlrec.oldtid, BufferGetBlockNumber(oldbuf), oldoff); : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBrinUpdate; 0.00 : 46c35b: c7 85 f8 fe ff ff 26 movl $0x26,-0x108(%rbp) 0.00 : 46c362: 00 00 00 : rdata[0].buffer = InvalidBuffer; 0.00 : 46c365: c7 85 fc fe ff ff 00 movl $0x0,-0x104(%rbp) 0.00 : 46c36c: 00 00 00 : rdata[0].next = &(rdata[1]); : : rdata[1].data = (char *) newtup; : rdata[1].len = newsz; : rdata[1].buffer = newbuf; 0.00 : 46c36f: 44 89 a5 1c ff ff ff mov %r12d,-0xe4(%rbp) : rdata[1].buffer_std = true; 0.00 : 46c376: c6 85 20 ff ff ff 01 movb $0x1,-0xe0(%rbp) : rdata[1].next = &(rdata[2]); : : rdata[2].data = (char *) NULL; 0.00 : 46c37d: 48 c7 85 30 ff ff ff movq $0x0,-0xd0(%rbp) 0.00 : 46c384: 00 00 00 00 : xlrec.new.node = idxrel->rd_node; : ItemPointerSet(&xlrec.new.tid, BufferGetBlockNumber(newbuf), newoff); : xlrec.new.heapBlk = heapBlk; : xlrec.new.revmapBlk = BufferGetBlockNumber(revmapbuf); : xlrec.new.pagesPerRange = pagesPerRange; : ItemPointerSet(&xlrec.oldtid, BufferGetBlockNumber(oldbuf), oldoff); 0.00 : 46c388: 66 89 45 94 mov %ax,-0x6c(%rbp) : : rdata[0].data = (char *) &xlrec; 0.00 : 46c38c: 48 8d 85 70 ff ff ff lea -0x90(%rbp),%rax : rdata[1].buffer = newbuf; : rdata[1].buffer_std = true; : rdata[1].next = &(rdata[2]); : : rdata[2].data = (char *) NULL; : rdata[2].len = 0; 0.00 : 46c393: c7 85 38 ff ff ff 00 movl $0x0,-0xc8(%rbp) 0.00 : 46c39a: 00 00 00 : rdata[2].buffer = revmapbuf; : rdata[2].buffer_std = true; 0.00 : 46c39d: c6 85 40 ff ff ff 01 movb $0x1,-0xc0(%rbp) : rdata[2].next = &(rdata[3]); : : rdata[3].data = (char *) NULL; 0.00 : 46c3a4: 48 c7 85 50 ff ff ff movq $0x0,-0xb0(%rbp) 0.00 : 46c3ab: 00 00 00 00 : xlrec.new.heapBlk = heapBlk; : xlrec.new.revmapBlk = BufferGetBlockNumber(revmapbuf); : xlrec.new.pagesPerRange = pagesPerRange; : ItemPointerSet(&xlrec.oldtid, BufferGetBlockNumber(oldbuf), oldoff); : : rdata[0].data = (char *) &xlrec; 0.00 : 46c3af: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp) : rdata[0].len = SizeOfBrinUpdate; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 46c3b6: 48 8d 42 20 lea 0x20(%rdx),%rax : rdata[2].buffer = revmapbuf; : rdata[2].buffer_std = true; : rdata[2].next = &(rdata[3]); : : rdata[3].data = (char *) NULL; : rdata[3].len = 0; 0.00 : 46c3ba: c7 85 58 ff ff ff 00 movl $0x0,-0xa8(%rbp) 0.00 : 46c3c1: 00 00 00 : rdata[3].buffer = oldbuf; 0.00 : 46c3c4: 44 89 ad 5c ff ff ff mov %r13d,-0xa4(%rbp) : rdata[3].buffer_std = true; 0.00 : 46c3cb: c6 85 60 ff ff ff 01 movb $0x1,-0xa0(%rbp) : ItemPointerSet(&xlrec.oldtid, BufferGetBlockNumber(oldbuf), oldoff); : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBrinUpdate; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 46c3d2: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : : rdata[1].data = (char *) newtup; 0.00 : 46c3d9: 48 8b 45 20 mov 0x20(%rbp),%rax : : rdata[3].data = (char *) NULL; : rdata[3].len = 0; : rdata[3].buffer = oldbuf; : rdata[3].buffer_std = true; : rdata[3].next = NULL; 0.00 : 46c3dd: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : 46c3e4: 00 00 00 00 : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBrinUpdate; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); : : rdata[1].data = (char *) newtup; 0.00 : 46c3e8: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) : rdata[1].len = newsz; 0.00 : 46c3ef: 8b 45 28 mov 0x28(%rbp),%eax 0.00 : 46c3f2: 89 85 18 ff ff ff mov %eax,-0xe8(%rbp) : rdata[1].buffer = newbuf; : rdata[1].buffer_std = true; : rdata[1].next = &(rdata[2]); 0.00 : 46c3f8: 48 8d 42 40 lea 0x40(%rdx),%rax 0.00 : 46c3fc: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : : rdata[2].data = (char *) NULL; : rdata[2].len = 0; : rdata[2].buffer = revmapbuf; 0.00 : 46c403: 8b 85 e4 fe ff ff mov -0x11c(%rbp),%eax 0.00 : 46c409: 89 85 3c ff ff ff mov %eax,-0xc4(%rbp) : rdata[2].buffer_std = true; : rdata[2].next = &(rdata[3]); 0.00 : 46c40f: 48 8d 42 60 lea 0x60(%rdx),%rax 0.00 : 46c413: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : rdata[3].len = 0; : rdata[3].buffer = oldbuf; : rdata[3].buffer_std = true; : rdata[3].next = NULL; : : recptr = XLogInsert(RM_BRIN_ID, info, rdata); 0.00 : 46c41a: e8 01 8b 06 00 callq 4d4f20 : : PageSetLSN(oldpage, recptr); 0.00 : 46c41f: 48 89 c1 mov %rax,%rcx 0.00 : 46c422: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 46c425: 89 c6 mov %eax,%esi 0.00 : 46c427: 48 c1 e9 20 shr $0x20,%rcx 0.00 : 46c42b: 89 0b mov %ecx,(%rbx) : PageSetLSN(newpage, recptr); 0.00 : 46c42d: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 46c434: 89 0a mov %ecx,(%rdx) 0.00 : 46c436: 89 42 04 mov %eax,0x4(%rdx) : PageSetLSN(BufferGetPage(revmapbuf), recptr); 0.00 : 46c439: 8b bd e4 fe ff ff mov -0x11c(%rbp),%edi 0.00 : 46c43f: 85 ff test %edi,%edi 0.00 : 46c441: 78 35 js 46c478 0.00 : 46c443: 8b 85 e4 fe ff ff mov -0x11c(%rbp),%eax 0.00 : 46c449: 48 8b 15 a8 36 75 00 mov 0x7536a8(%rip),%rdx # bbfaf8 0.00 : 46c450: 83 e8 01 sub $0x1,%eax 0.00 : 46c453: 48 98 cltq 0.00 : 46c455: 48 c1 e0 0d shl $0xd,%rax 0.00 : 46c459: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 46c45c: 48 03 05 95 36 75 00 add 0x753695(%rip),%rax # bbfaf8 0.00 : 46c463: 89 70 04 mov %esi,0x4(%rax) 0.00 : 46c466: e9 08 fd ff ff jmpq 46c173 : */ : if (((special->flags & BRIN_EVACUATE_PAGE) == 0) && : brin_can_do_samepage_update(oldbuf, origsz, newsz)) : { : if (BufferIsValid(newbuf)) : UnlockReleaseBuffer(newbuf); 0.00 : 46c46b: 44 89 e7 mov %r12d,%edi 0.00 : 46c46e: e8 bd 8a 20 00 callq 674f30 0.00 : 46c473: e9 89 fd ff ff jmpq 46c201 : : recptr = XLogInsert(RM_BRIN_ID, info, rdata); : : PageSetLSN(oldpage, recptr); : PageSetLSN(newpage, recptr); : PageSetLSN(BufferGetPage(revmapbuf), recptr); 0.00 : 46c478: 8b 95 e4 fe ff ff mov -0x11c(%rbp),%edx 0.00 : 46c47e: 48 8b 05 93 0c 71 00 mov 0x710c93(%rip),%rax # b7d118 0.00 : 46c485: f7 d2 not %edx 0.00 : 46c487: 48 63 d2 movslq %edx,%rdx 0.00 : 46c48a: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 46c48e: 89 08 mov %ecx,(%rax) 0.00 : 46c490: 48 8b 05 81 0c 71 00 mov 0x710c81(%rip),%rax # b7d118 0.00 : 46c497: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 46c49b: eb c6 jmp 46c463 : MarkBufferDirty(oldbuf); : : /* XLOG stuff */ : if (RelationNeedsWAL(idxrel)) : { : BlockNumber blk = BufferGetBlockNumber(oldbuf); 0.00 : 46c49d: 44 89 ef mov %r13d,%edi 0.00 : 46c4a0: e8 8b 7b 20 00 callq 674030 : xl_brin_samepage_update xlrec; : XLogRecPtr recptr; : XLogRecData rdata[2]; : uint8 info = XLOG_BRIN_SAMEPAGE_UPDATE; : : xlrec.node = idxrel->rd_node; 0.00 : 46c4a5: 49 8b 16 mov (%r14),%rdx : ItemPointerSetBlockNumber(&xlrec.tid, blk); 0.00 : 46c4a8: 66 89 45 be mov %ax,-0x42(%rbp) : rdata[1].len = newsz; : rdata[1].buffer = oldbuf; : rdata[1].buffer_std = true; : rdata[1].next = NULL; : : recptr = XLogInsert(RM_BRIN_ID, info, rdata); 0.00 : 46c4ac: be 30 00 00 00 mov $0x30,%esi 0.00 : 46c4b1: bf 11 00 00 00 mov $0x11,%edi : : xlrec.node = idxrel->rd_node; : ItemPointerSetBlockNumber(&xlrec.tid, blk); : ItemPointerSetOffsetNumber(&xlrec.tid, oldoff); : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBrinSamepageUpdate; 0.00 : 46c4b6: c7 85 78 ff ff ff 12 movl $0x12,-0x88(%rbp) 0.00 : 46c4bd: 00 00 00 : rdata[0].buffer = InvalidBuffer; 0.00 : 46c4c0: c7 85 7c ff ff ff 00 movl $0x0,-0x84(%rbp) 0.00 : 46c4c7: 00 00 00 : rdata[0].next = &(rdata[1]); : : rdata[1].data = (char *) newtup; : rdata[1].len = newsz; : rdata[1].buffer = oldbuf; 0.00 : 46c4ca: 44 89 6d 9c mov %r13d,-0x64(%rbp) : rdata[1].buffer_std = true; 0.00 : 46c4ce: c6 45 a0 01 movb $0x1,-0x60(%rbp) : xl_brin_samepage_update xlrec; : XLogRecPtr recptr; : XLogRecData rdata[2]; : uint8 info = XLOG_BRIN_SAMEPAGE_UPDATE; : : xlrec.node = idxrel->rd_node; 0.00 : 46c4d2: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : 46c4d6: 41 8b 56 08 mov 0x8(%r14),%edx : : rdata[1].data = (char *) newtup; : rdata[1].len = newsz; : rdata[1].buffer = oldbuf; : rdata[1].buffer_std = true; : rdata[1].next = NULL; 0.00 : 46c4da: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 46c4e1: 00 : xl_brin_samepage_update xlrec; : XLogRecPtr recptr; : XLogRecData rdata[2]; : uint8 info = XLOG_BRIN_SAMEPAGE_UPDATE; : : xlrec.node = idxrel->rd_node; 0.00 : 46c4e2: 89 55 b8 mov %edx,-0x48(%rbp) : ItemPointerSetBlockNumber(&xlrec.tid, blk); 0.00 : 46c4e5: 89 c2 mov %eax,%edx : ItemPointerSetOffsetNumber(&xlrec.tid, oldoff); 0.00 : 46c4e7: 0f b7 85 ec fe ff ff movzwl -0x114(%rbp),%eax : XLogRecPtr recptr; : XLogRecData rdata[2]; : uint8 info = XLOG_BRIN_SAMEPAGE_UPDATE; : : xlrec.node = idxrel->rd_node; : ItemPointerSetBlockNumber(&xlrec.tid, blk); 0.00 : 46c4ee: c1 ea 10 shr $0x10,%edx 0.00 : 46c4f1: 66 89 55 bc mov %dx,-0x44(%rbp) : ItemPointerSetOffsetNumber(&xlrec.tid, oldoff); : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfBrinSamepageUpdate; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 46c4f5: 48 8d 95 70 ff ff ff lea -0x90(%rbp),%rdx : XLogRecData rdata[2]; : uint8 info = XLOG_BRIN_SAMEPAGE_UPDATE; : : xlrec.node = idxrel->rd_node; : ItemPointerSetBlockNumber(&xlrec.tid, blk); : ItemPointerSetOffsetNumber(&xlrec.tid, oldoff); 0.00 : 46c4fc: 66 89 45 c0 mov %ax,-0x40(%rbp) : rdata[0].data = (char *) &xlrec; 0.00 : 46c500: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 46c504: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : rdata[0].len = SizeOfBrinSamepageUpdate; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 46c50b: 48 8d 42 20 lea 0x20(%rdx),%rax 0.00 : 46c50f: 48 89 45 88 mov %rax,-0x78(%rbp) : : rdata[1].data = (char *) newtup; 0.00 : 46c513: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 46c517: 48 89 45 90 mov %rax,-0x70(%rbp) : rdata[1].len = newsz; 0.00 : 46c51b: 8b 45 28 mov 0x28(%rbp),%eax 0.00 : 46c51e: 89 45 98 mov %eax,-0x68(%rbp) : rdata[1].buffer = oldbuf; : rdata[1].buffer_std = true; : rdata[1].next = NULL; : : recptr = XLogInsert(RM_BRIN_ID, info, rdata); 0.00 : 46c521: e8 fa 89 06 00 callq 4d4f20 : : PageSetLSN(oldpage, recptr); 0.00 : 46c526: 48 89 c2 mov %rax,%rdx 0.00 : 46c529: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 46c52c: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 46c530: 89 13 mov %edx,(%rbx) 0.00 : 46c532: e9 2c fd ff ff jmpq 46c263 : START_CRIT_SECTION(); : : PageIndexDeleteNoCompact(oldpage, &oldoff, 1); : newoff = PageAddItem(newpage, (Item) newtup, newsz, InvalidOffsetNumber, false, false); : if (newoff == InvalidOffsetNumber) : elog(ERROR, "failed to add BRIN tuple to new page"); 0.00 : 46c537: ba a5 f2 7a 00 mov $0x7af2a5,%edx 0.00 : 46c53c: be c6 00 00 00 mov $0xc6,%esi 0.00 : 46c541: bf 60 f1 7a 00 mov $0x7af160,%edi 0.00 : 46c546: e8 d5 ee 30 00 callq 77b420 0.00 : 46c54b: be 50 f2 7a 00 mov $0x7af250,%esi 0.00 : 46c550: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46c555: 31 c0 xor %eax,%eax 0.00 : 46c557: e8 d4 ec 30 00 callq 77b230 0.00 : 46c55c: e8 6f cf ff ff callq 4694d0 : : START_CRIT_SECTION(); : PageIndexDeleteNoCompact(oldpage, &oldoff, 1); : if (PageAddItem(oldpage, (Item) newtup, newsz, oldoff, true, : false) == InvalidOffsetNumber) : elog(ERROR, "failed to add BRIN tuple"); 0.00 : 46c561: ba a5 f2 7a 00 mov $0x7af2a5,%edx 0.00 : 46c566: be 87 00 00 00 mov $0x87,%esi 0.00 : 46c56b: bf 60 f1 7a 00 mov $0x7af160,%edi 0.00 : 46c570: e8 ab ee 30 00 callq 77b420 0.00 : 46c575: be 6f f1 7a 00 mov $0x7af16f,%esi 0.00 : 46c57a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46c57f: 31 c0 xor %eax,%eax 0.00 : 46c581: e8 aa ec 30 00 callq 77b230 0.00 : 46c586: e8 45 cf ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:99 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046cee0 : : /* : * Release resources associated with a revmap access object. : */ : void : brinRevmapAccessTerminate(brinRmAccess *rmAccess) : { 0.00 : 46cee0: 55 push %rbp 0.00 : 46cee1: 48 89 e5 mov %rsp,%rbp 0.00 : 46cee4: 53 push %rbx 0.00 : 46cee5: 48 89 fb mov %rdi,%rbx 0.00 : 46cee8: 48 83 ec 08 sub $0x8,%rsp : ReleaseBuffer(rmAccess->metaBuf); 0.00 : 46ceec: 8b 7f 10 mov 0x10(%rdi),%edi /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:99 100.00 : 46ceef: e8 6c 7f 20 00 callq 674e60 : if (rmAccess->currBuf != InvalidBuffer) 0.00 : 46cef4: 8b 7b 14 mov 0x14(%rbx),%edi 0.00 : 46cef7: 85 ff test %edi,%edi 0.00 : 46cef9: 74 05 je 46cf00 : ReleaseBuffer(rmAccess->currBuf); 0.00 : 46cefb: e8 60 7f 20 00 callq 674e60 : pfree(rmAccess); : } 0.00 : 46cf00: 48 83 c4 08 add $0x8,%rsp : brinRevmapAccessTerminate(brinRmAccess *rmAccess) : { : ReleaseBuffer(rmAccess->metaBuf); : if (rmAccess->currBuf != InvalidBuffer) : ReleaseBuffer(rmAccess->currBuf); : pfree(rmAccess); 0.00 : 46cf04: 48 89 df mov %rbx,%rdi : } 0.00 : 46cf07: 5b pop %rbx 0.00 : 46cf08: c9 leaveq : brinRevmapAccessTerminate(brinRmAccess *rmAccess) : { : ReleaseBuffer(rmAccess->metaBuf); : if (rmAccess->currBuf != InvalidBuffer) : ReleaseBuffer(rmAccess->currBuf); : pfree(rmAccess); 0.00 : 46cf09: e9 72 bc 32 00 jmpq 798b80 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:269 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046eda0 : : * heap_attisnull - returns TRUE iff tuple attribute is not present : * ---------------- : */ : bool : heap_attisnull(HeapTuple tup, int attnum) : { 0.00 : 46eda0: 55 push %rbp 0.00 : 46eda1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:269 100.00 : 46eda4: 53 push %rbx 0.00 : 46eda5: 89 f3 mov %esi,%ebx 0.00 : 46eda7: 48 83 ec 08 sub $0x8,%rsp : if (attnum > (int) HeapTupleHeaderGetNatts(tup->t_data)) 0.00 : 46edab: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 46edaf: 0f b7 42 12 movzwl 0x12(%rdx),%eax 0.00 : 46edb3: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 46edb8: 39 f0 cmp %esi,%eax 0.00 : 46edba: 7c 14 jl 46edd0 : return true; : : if (attnum > 0) 0.00 : 46edbc: 85 f6 test %esi,%esi 0.00 : 46edbe: 7e 48 jle 46ee08 : { : if (HeapTupleNoNulls(tup)) 0.00 : 46edc0: f6 42 14 01 testb $0x1,0x14(%rdx) 0.00 : 46edc4: 75 1a jne 46ede0 : default: : elog(ERROR, "invalid attnum: %d", attnum); : } : : return false; : } 0.00 : 46edc6: 48 83 c4 08 add $0x8,%rsp : case MaxCommandIdAttributeNumber: : /* these are never null */ : break; : : default: : elog(ERROR, "invalid attnum: %d", attnum); 0.00 : 46edca: 31 c0 xor %eax,%eax : } : : return false; : } 0.00 : 46edcc: 5b pop %rbx 0.00 : 46edcd: c9 leaveq 0.00 : 46edce: c3 retq 0.00 : 46edcf: 90 nop 0.00 : 46edd0: 48 83 c4 08 add $0x8,%rsp : case MaxCommandIdAttributeNumber: : /* these are never null */ : break; : : default: : elog(ERROR, "invalid attnum: %d", attnum); 0.00 : 46edd4: b8 01 00 00 00 mov $0x1,%eax : } : : return false; : } 0.00 : 46edd9: 5b pop %rbx 0.00 : 46edda: c9 leaveq 0.00 : 46eddb: c3 retq 0.00 : 46eddc: 0f 1f 40 00 nopl 0x0(%rax) : : if (attnum > 0) : { : if (HeapTupleNoNulls(tup)) : return false; : return att_isnull(attnum - 1, tup->t_data->t_bits); 0.00 : 46ede0: 8d 4b ff lea -0x1(%rbx),%ecx 0.00 : 46ede3: 89 c8 mov %ecx,%eax 0.00 : 46ede5: 83 e1 07 and $0x7,%ecx 0.00 : 46ede8: c1 f8 03 sar $0x3,%eax 0.00 : 46edeb: 48 98 cltq 0.00 : 46eded: 0f b6 44 02 17 movzbl 0x17(%rdx,%rax,1),%eax : default: : elog(ERROR, "invalid attnum: %d", attnum); : } : : return false; : } 0.00 : 46edf2: 48 83 c4 08 add $0x8,%rsp 0.00 : 46edf6: 5b pop %rbx 0.00 : 46edf7: c9 leaveq : : if (attnum > 0) : { : if (HeapTupleNoNulls(tup)) : return false; : return att_isnull(attnum - 1, tup->t_data->t_bits); 0.00 : 46edf8: d3 f8 sar %cl,%eax 0.00 : 46edfa: 83 f0 01 xor $0x1,%eax 0.00 : 46edfd: 83 e0 01 and $0x1,%eax : default: : elog(ERROR, "invalid attnum: %d", attnum); : } : : return false; : } 0.00 : 46ee00: c3 retq 0.00 : 46ee01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (HeapTupleNoNulls(tup)) : return false; : return att_isnull(attnum - 1, tup->t_data->t_bits); : } : : switch (attnum) 0.00 : 46ee08: 8d 43 07 lea 0x7(%rbx),%eax 0.00 : 46ee0b: 83 f8 06 cmp $0x6,%eax 0.00 : 46ee0e: 76 b6 jbe 46edc6 : case MaxCommandIdAttributeNumber: : /* these are never null */ : break; : : default: : elog(ERROR, "invalid attnum: %d", attnum); 0.00 : 46ee10: ba 20 f7 7a 00 mov $0x7af720,%edx 0.00 : 46ee15: be 25 01 00 00 mov $0x125,%esi 0.00 : 46ee1a: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46ee1f: e8 fc c5 30 00 callq 77b420 0.00 : 46ee24: 89 da mov %ebx,%edx 0.00 : 46ee26: be 00 f6 7a 00 mov $0x7af600,%esi 0.00 : 46ee2b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46ee30: 31 c0 xor %eax,%eax 0.00 : 46ee32: e8 f9 c3 30 00 callq 77b230 0.00 : 46ee37: e8 94 a6 ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:73 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004906c0 : : return hash_uint32(lohalf); : } : : Datum : hashoid(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:73 100.00 : 4906c0: 55 push %rbp : return hash_uint32((uint32) PG_GETARG_OID(0)); 0.00 : 4906c1: 48 8b 7f 20 mov 0x20(%rdi),%rdi : return hash_uint32(lohalf); : } : : Datum : hashoid(PG_FUNCTION_ARGS) : { 0.00 : 4906c5: 48 89 e5 mov %rsp,%rbp : return hash_uint32((uint32) PG_GETARG_OID(0)); : } 0.00 : 4906c8: c9 leaveq : } : : Datum : hashoid(PG_FUNCTION_ARGS) : { : return hash_uint32((uint32) PG_GETARG_OID(0)); 0.00 : 4906c9: e9 92 ff ff ff jmpq 490660 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:6468 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000497130 : : * with queries. : */ : void : HeapTupleHeaderAdvanceLatestRemovedXid(HeapTupleHeader tuple, : TransactionId *latestRemovedXid) : { 0.00 : 497130: 55 push %rbp 0.00 : 497131: 48 89 e5 mov %rsp,%rbp 0.00 : 497134: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 497138: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 49713c: 48 89 fb mov %rdi,%rbx 0.00 : 49713f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 497143: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 497147: 49 89 f7 mov %rsi,%r15 0.00 : 49714a: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 49714e: 48 83 ec 30 sub $0x30,%rsp : TransactionId xmin = HeapTupleHeaderGetXmin(tuple); 0.00 : 497152: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 497156: 41 bd 02 00 00 00 mov $0x2,%r13d 0.00 : 49715c: 89 d0 mov %edx,%eax 0.00 : 49715e: 89 d1 mov %edx,%ecx 0.00 : 497160: 25 00 03 00 00 and $0x300,%eax 100.00 : 497165: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 49716a: 74 03 je 49716f 0.00 : 49716c: 44 8b 2f mov (%rdi),%r13d : TransactionId xmax = HeapTupleHeaderGetUpdateXid(tuple); 0.00 : 49716f: 89 d0 mov %edx,%eax 0.00 : 497171: 25 00 18 00 00 and $0x1800,%eax 0.00 : 497176: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49717b: 0f 84 7f 00 00 00 je 497200 0.00 : 497181: 44 8b 73 04 mov 0x4(%rbx),%r14d : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 497185: 66 f7 c1 00 c0 test $0xc000,%cx 0.00 : 49718a: 74 1a je 4971a6 0.00 : 49718c: 44 8b 63 08 mov 0x8(%rbx),%r12d : : if (tuple->t_infomask & HEAP_MOVED) : { : if (TransactionIdPrecedes(*latestRemovedXid, xvac)) 0.00 : 497190: 41 8b 3f mov (%r15),%edi 0.00 : 497193: 44 89 e6 mov %r12d,%esi 0.00 : 497196: e8 45 8e 02 00 callq 4bffe0 0.00 : 49719b: 84 c0 test %al,%al 0.00 : 49719d: 74 03 je 4971a2 : *latestRemovedXid = xvac; 0.00 : 49719f: 45 89 27 mov %r12d,(%r15) 0.00 : 4971a2: 0f b7 4b 14 movzwl 0x14(%rbx),%ecx : * : * Look for a committed hint bit, or if no xmin bit is set, check clog. : * This needs to work on both master and standby, where it is used to : * assess btree delete records. : */ : if (HeapTupleHeaderXminCommitted(tuple) || 0.00 : 4971a6: f6 c5 01 test $0x1,%ch 0.00 : 4971a9: 75 1a jne 4971c5 0.00 : 4971ab: 81 e1 00 03 00 00 and $0x300,%ecx 0.00 : 4971b1: 81 f9 00 02 00 00 cmp $0x200,%ecx 0.00 : 4971b7: 74 27 je 4971e0 0.00 : 4971b9: 44 89 ef mov %r13d,%edi 0.00 : 4971bc: e8 1f 91 02 00 callq 4c02e0 0.00 : 4971c1: 84 c0 test %al,%al 0.00 : 4971c3: 74 1b je 4971e0 : (!HeapTupleHeaderXminInvalid(tuple) && TransactionIdDidCommit(xmin))) : { : if (xmax != xmin && 0.00 : 4971c5: 45 39 f5 cmp %r14d,%r13d 0.00 : 4971c8: 74 16 je 4971e0 0.00 : 4971ca: 41 8b 37 mov (%r15),%esi 0.00 : 4971cd: 44 89 f7 mov %r14d,%edi 0.00 : 4971d0: e8 6b 8e 02 00 callq 4c0040 0.00 : 4971d5: 84 c0 test %al,%al 0.00 : 4971d7: 74 07 je 4971e0 : TransactionIdFollows(xmax, *latestRemovedXid)) : *latestRemovedXid = xmax; 0.00 : 4971d9: 45 89 37 mov %r14d,(%r15) 0.00 : 4971dc: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* *latestRemovedXid may still be invalid at end */ : } 0.00 : 4971e0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4971e4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4971e8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4971ec: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4971f0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4971f4: c9 leaveq 0.00 : 4971f5: c3 retq 0.00 : 4971f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4971fd: 00 00 00 : void : HeapTupleHeaderAdvanceLatestRemovedXid(HeapTupleHeader tuple, : TransactionId *latestRemovedXid) : { : TransactionId xmin = HeapTupleHeaderGetXmin(tuple); : TransactionId xmax = HeapTupleHeaderGetUpdateXid(tuple); 0.00 : 497200: 84 d2 test %dl,%dl 0.00 : 497202: 0f 88 79 ff ff ff js 497181 0.00 : 497208: 48 89 df mov %rbx,%rdi 0.00 : 49720b: e8 10 ff ff ff callq 497120 0.00 : 497210: 0f b7 4b 14 movzwl 0x14(%rbx),%ecx 0.00 : 497214: 41 89 c6 mov %eax,%r14d 0.00 : 497217: e9 69 ff ff ff jmpq 497185 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:90 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e0c0 : : * Read in a buffer, using bulk-insert strategy if bistate isn't NULL. : */ : static Buffer : ReadBufferBI(Relation relation, BlockNumber targetBlock, : BulkInsertState bistate) : { 0.00 : 49e0c0: 55 push %rbp 0.00 : 49e0c1: 48 89 e5 mov %rsp,%rbp 0.00 : 49e0c4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 49e0c8: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 49e0cc: 89 f3 mov %esi,%ebx 0.00 : 49e0ce: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 49e0d2: 48 83 ec 20 sub $0x20,%rsp : Buffer buffer; : : /* If not bulk-insert, exactly like ReadBuffer */ : if (!bistate) 0.00 : 49e0d6: 48 85 d2 test %rdx,%rdx : * Read in a buffer, using bulk-insert strategy if bistate isn't NULL. : */ : static Buffer : ReadBufferBI(Relation relation, BlockNumber targetBlock, : BulkInsertState bistate) : { 0.00 : 49e0d9: 49 89 fd mov %rdi,%r13 0.00 : 49e0dc: 49 89 d4 mov %rdx,%r12 : Buffer buffer; : : /* If not bulk-insert, exactly like ReadBuffer */ : if (!bistate) 0.00 : 49e0df: 74 6f je 49e150 : return ReadBuffer(relation, targetBlock); : : /* If we have the desired block already pinned, re-pin and return it */ : if (bistate->current_buf != InvalidBuffer) 0.00 : 49e0e1: 8b 7a 08 mov 0x8(%rdx),%edi 0.00 : 49e0e4: 85 ff test %edi,%edi 0.00 : 49e0e6: 74 1d je 49e105 : { : if (BufferGetBlockNumber(bistate->current_buf) == targetBlock) 0.00 : 49e0e8: e8 43 5f 1d 00 callq 674030 0.00 : 49e0ed: 39 d8 cmp %ebx,%eax 0.00 : 49e0ef: 90 nop 0.00 : 49e0f0: 74 46 je 49e138 : { : IncrBufferRefCount(bistate->current_buf); : return bistate->current_buf; : } : /* ... else drop the old buffer */ : ReleaseBuffer(bistate->current_buf); 0.00 : 49e0f2: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 49e0f7: e8 64 6d 1d 00 callq 674e60 : bistate->current_buf = InvalidBuffer; 0.00 : 49e0fc: 41 c7 44 24 08 00 00 movl $0x0,0x8(%r12) 0.00 : 49e103: 00 00 : } : : /* Perform a read using the buffer strategy */ : buffer = ReadBufferExtended(relation, MAIN_FORKNUM, targetBlock, 0.00 : 49e105: 4d 8b 04 24 mov (%r12),%r8 0.00 : 49e109: 89 da mov %ebx,%edx 0.00 : 49e10b: 31 c9 xor %ecx,%ecx 0.00 : 49e10d: 31 f6 xor %esi,%esi 0.00 : 49e10f: 4c 89 ef mov %r13,%rdi 0.00 : 49e112: e8 59 84 1d 00 callq 676570 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:90 100.00 : 49e117: 89 c3 mov %eax,%ebx : RBM_NORMAL, bistate->strategy); : : /* Save the selected block as target for future inserts */ : IncrBufferRefCount(buffer); 0.00 : 49e119: 89 c7 mov %eax,%edi 0.00 : 49e11b: e8 40 6a 1d 00 callq 674b60 : bistate->current_buf = buffer; 0.00 : 49e120: 41 89 5c 24 08 mov %ebx,0x8(%r12) : : return buffer; : } 0.00 : 49e125: 89 d8 mov %ebx,%eax 0.00 : 49e127: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 49e12b: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 49e12f: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 49e133: c9 leaveq 0.00 : 49e134: c3 retq 0.00 : 49e135: 0f 1f 00 nopl (%rax) : /* If we have the desired block already pinned, re-pin and return it */ : if (bistate->current_buf != InvalidBuffer) : { : if (BufferGetBlockNumber(bistate->current_buf) == targetBlock) : { : IncrBufferRefCount(bistate->current_buf); 0.00 : 49e138: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 49e13d: e8 1e 6a 1d 00 callq 674b60 : return bistate->current_buf; 0.00 : 49e142: 41 8b 5c 24 08 mov 0x8(%r12),%ebx : /* Save the selected block as target for future inserts */ : IncrBufferRefCount(buffer); : bistate->current_buf = buffer; : : return buffer; : } 0.00 : 49e147: eb dc jmp 49e125 0.00 : 49e149: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 49e150: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 49e154: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 49e158: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 49e15c: c9 leaveq : { : Buffer buffer; : : /* If not bulk-insert, exactly like ReadBuffer */ : if (!bistate) : return ReadBuffer(relation, targetBlock); 0.00 : 49e15d: e9 3e 85 1d 00 jmpq 6766a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/aclchk.c:4459 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004f3110 : : /* : * Exported routine for checking a user's access privileges to a namespace : */ : AclResult : pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode) : { 0.00 : 4f3110: 55 push %rbp : if (pg_namespace_aclmask(nsp_oid, roleid, mode, ACLMASK_ANY) != 0) 100.00 : 4f3111: b9 01 00 00 00 mov $0x1,%ecx : /* : * Exported routine for checking a user's access privileges to a namespace : */ : AclResult : pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode) : { 0.00 : 4f3116: 48 89 e5 mov %rsp,%rbp : if (pg_namespace_aclmask(nsp_oid, roleid, mode, ACLMASK_ANY) != 0) 0.00 : 4f3119: e8 62 fe ff ff callq 4f2f80 0.00 : 4f311e: 85 c0 test %eax,%eax : return ACLCHECK_OK; : else : return ACLCHECK_NO_PRIV; : } 0.00 : 4f3120: c9 leaveq : * Exported routine for checking a user's access privileges to a namespace : */ : AclResult : pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode) : { : if (pg_namespace_aclmask(nsp_oid, roleid, mode, ACLMASK_ANY) != 0) 0.00 : 4f3121: 0f 94 c0 sete %al 0.00 : 4f3124: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_clause.c:1531 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000052c620 : : * exprKind identifies clause type being processed : */ : static TargetEntry * : findTargetlistEntrySQL92(ParseState *pstate, Node *node, List **tlist, : ParseExprKind exprKind) : { 0.00 : 52c620: 55 push %rbp 0.00 : 52c621: 49 89 f9 mov %rdi,%r9 0.00 : 52c624: 41 89 ca mov %ecx,%r10d 0.00 : 52c627: 48 89 e5 mov %rsp,%rbp 0.00 : 52c62a: 41 57 push %r15 0.00 : 52c62c: 49 89 d7 mov %rdx,%r15 0.00 : 52c62f: 41 56 push %r14 0.00 : 52c631: 41 55 push %r13 0.00 : 52c633: 41 54 push %r12 0.00 : 52c635: 49 89 f4 mov %rsi,%r12 0.00 : 52c638: 53 push %rbx 0.00 : 52c639: 48 83 ec 28 sub $0x28,%rsp : * : * If neither special case applies, fall through to treat the item as : * an expression per SQL99. : *---------- : */ : if (IsA(node, ColumnRef) && 0.00 : 52c63d: 8b 06 mov (%rsi),%eax 0.00 : 52c63f: 3d 85 03 00 00 cmp $0x385,%eax 0.00 : 52c644: 0f 84 86 00 00 00 je 52c6d0 : checkTargetlistEntrySQL92(pstate, target_result, exprKind); : return target_result; : } : } : } : if (IsA(node, A_Const)) 0.00 : 52c64a: 3d 87 03 00 00 cmp $0x387,%eax 0.00 : 52c64f: 0f 85 9b 00 00 00 jne 52c6f0 : Value *val = &((A_Const *) node)->val; : int location = ((A_Const *) node)->location; : int targetlist_pos = 0; : int target_pos; : : if (!IsA(val, Integer)) 0.00 : 52c655: 41 81 7c 24 08 8b 02 cmpl $0x28b,0x8(%r12) 0.00 : 52c65c: 00 00 : } : } : if (IsA(node, A_Const)) : { : Value *val = &((A_Const *) node)->val; : int location = ((A_Const *) node)->location; 0.00 : 52c65e: 45 8b 74 24 18 mov 0x18(%r12),%r14d : int targetlist_pos = 0; : int target_pos; : : if (!IsA(val, Integer)) 0.00 : 52c663: 0f 85 77 02 00 00 jne 52c8e0 : errmsg("non-integer constant in %s", : ParseExprKindName(exprKind)), : parser_errposition(pstate, location))); : : target_pos = intVal(val); : foreach(tl, *tlist) 0.00 : 52c669: 49 8b 07 mov (%r15),%rax : /* translator: %s is name of a SQL construct, eg ORDER BY */ : errmsg("non-integer constant in %s", : ParseExprKindName(exprKind)), : parser_errposition(pstate, location))); : : target_pos = intVal(val); 0.00 : 52c66c: 45 8b 6c 24 10 mov 0x10(%r12),%r13d : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 52c671: 48 85 c0 test %rax,%rax 0.00 : 52c674: 0f 84 96 00 00 00 je 52c710 0.00 : 52c67a: 48 8b 40 08 mov 0x8(%rax),%rax : foreach(tl, *tlist) 0.00 : 52c67e: 48 85 c0 test %rax,%rax 0.00 : 52c681: 0f 84 89 00 00 00 je 52c710 0.00 : 52c687: 31 d2 xor %edx,%edx 0.00 : 52c689: eb 0e jmp 52c699 0.00 : 52c68b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 52c690: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 52c694: 48 85 c0 test %rax,%rax 0.00 : 52c697: 74 77 je 52c710 : { : TargetEntry *tle = (TargetEntry *) lfirst(tl); 0.00 : 52c699: 48 8b 18 mov (%rax),%rbx : : if (!tle->resjunk) 0.00 : 52c69c: 80 7b 2a 00 cmpb $0x0,0x2a(%rbx) 0.00 : 52c6a0: 75 ee jne 52c690 : { : if (++targetlist_pos == target_pos) 0.00 : 52c6a2: 83 c2 01 add $0x1,%edx 0.00 : 52c6a5: 44 39 ea cmp %r13d,%edx 0.00 : 52c6a8: 75 e6 jne 52c690 : { : /* return the unique match, after suitable validation */ : checkTargetlistEntrySQL92(pstate, tle, exprKind); 0.00 : 52c6aa: 44 89 d2 mov %r10d,%edx 0.00 : 52c6ad: 48 89 de mov %rbx,%rsi 0.00 : 52c6b0: 4c 89 cf mov %r9,%rdi 0.00 : 52c6b3: 49 89 de mov %rbx,%r14 0.00 : 52c6b6: e8 35 fd ff ff callq 52c3f0 : : /* : * Otherwise, we have an expression, so process it per SQL99 rules. : */ : return findTargetlistEntrySQL99(pstate, node, tlist, exprKind); : } 0.00 : 52c6bb: 48 83 c4 28 add $0x28,%rsp 0.00 : 52c6bf: 4c 89 f0 mov %r14,%rax 0.00 : 52c6c2: 5b pop %rbx 0.00 : 52c6c3: 41 5c pop %r12 0.00 : 52c6c5: 41 5d pop %r13 0.00 : 52c6c7: 41 5e pop %r14 0.00 : 52c6c9: 41 5f pop %r15 0.00 : 52c6cb: c9 leaveq 0.00 : 52c6cc: c3 retq 0.00 : 52c6cd: 0f 1f 00 nopl (%rax) : * : * If neither special case applies, fall through to treat the item as : * an expression per SQL99. : *---------- : */ : if (IsA(node, ColumnRef) && 0.00 : 52c6d0: 48 8b 46 08 mov 0x8(%rsi),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 52c6d4: 48 85 c0 test %rax,%rax 0.00 : 52c6d7: 74 17 je 52c6f0 0.00 : 52c6d9: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 52c6dd: 75 11 jne 52c6f0 0.00 : 52c6df: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 52c6e3: 48 8b 00 mov (%rax),%rax 0.00 : 52c6e6: 81 38 8d 02 00 00 cmpl $0x28d,(%rax) 0.00 : 52c6ec: 74 57 je 52c745 0.00 : 52c6ee: 66 90 xchg %ax,%ax : : /* : * Otherwise, we have an expression, so process it per SQL99 rules. : */ : return findTargetlistEntrySQL99(pstate, node, tlist, exprKind); : } 0.00 : 52c6f0: 48 83 c4 28 add $0x28,%rsp : } : : /* : * Otherwise, we have an expression, so process it per SQL99 rules. : */ : return findTargetlistEntrySQL99(pstate, node, tlist, exprKind); 0.00 : 52c6f4: 4c 89 e6 mov %r12,%rsi 0.00 : 52c6f7: 4c 89 fa mov %r15,%rdx : } 0.00 : 52c6fa: 5b pop %rbx 0.00 : 52c6fb: 41 5c pop %r12 0.00 : 52c6fd: 41 5d pop %r13 0.00 : 52c6ff: 41 5e pop %r14 0.00 : 52c701: 41 5f pop %r15 0.00 : 52c703: c9 leaveq : } : : /* : * Otherwise, we have an expression, so process it per SQL99 rules. : */ : return findTargetlistEntrySQL99(pstate, node, tlist, exprKind); 0.00 : 52c704: 44 89 d1 mov %r10d,%ecx 0.00 : 52c707: 4c 89 cf mov %r9,%rdi 0.00 : 52c70a: e9 51 fe ff ff jmpq 52c560 0.00 : 52c70f: 90 nop : checkTargetlistEntrySQL92(pstate, tle, exprKind); : return tle; : } : } : } : ereport(ERROR, 0.00 : 52c710: 45 31 c0 xor %r8d,%r8d 0.00 : 52c713: 4c 89 4d c0 mov %r9,-0x40(%rbp) 0.00 : 52c717: b9 40 1f 87 00 mov $0x871f40,%ecx 0.00 : 52c71c: ba 3a 06 00 00 mov $0x63a,%edx 0.00 : 52c721: be 9b 16 87 00 mov $0x87169b,%esi 0.00 : 52c726: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52c72b: 44 89 55 b8 mov %r10d,-0x48(%rbp) 0.00 : 52c72f: e8 8c e3 24 00 callq 77aac0 0.00 : 52c734: 84 c0 test %al,%al 0.00 : 52c736: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 52c73a: 0f 85 19 01 00 00 jne 52c859 0.00 : 52c740: e8 8b cd f3 ff callq 4694d0 : */ : if (IsA(node, ColumnRef) && : list_length(((ColumnRef *) node)->fields) == 1 && : IsA(linitial(((ColumnRef *) node)->fields), String)) : { : char *name = strVal(linitial(((ColumnRef *) node)->fields)); 0.00 : 52c745: 48 8b 40 08 mov 0x8(%rax),%rax : int location = ((ColumnRef *) node)->location; : : if (exprKind == EXPR_KIND_GROUP_BY) 0.00 : 52c749: 83 f9 11 cmp $0x11,%ecx : */ : if (IsA(node, ColumnRef) && : list_length(((ColumnRef *) node)->fields) == 1 && : IsA(linitial(((ColumnRef *) node)->fields), String)) : { : char *name = strVal(linitial(((ColumnRef *) node)->fields)); 0.00 : 52c74c: 48 89 45 c8 mov %rax,-0x38(%rbp) : int location = ((ColumnRef *) node)->location; 0.00 : 52c750: 8b 46 10 mov 0x10(%rsi),%eax 0.00 : 52c753: 89 45 d4 mov %eax,-0x2c(%rbp) : : if (exprKind == EXPR_KIND_GROUP_BY) 0.00 : 52c756: 0f 84 52 01 00 00 je 52c8ae : */ : if (colNameToVar(pstate, name, true, location) != NULL) : name = NULL; : } : : if (name != NULL) 0.00 : 52c75c: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : 52c761: 0f 84 70 01 00 00 je 52c8d7 : { : TargetEntry *target_result = NULL; : : foreach(tl, *tlist) 0.00 : 52c767: 49 8b 07 mov (%r15),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 52c76a: 48 85 c0 test %rax,%rax 0.00 : 52c76d: 0f 84 64 01 00 00 je 52c8d7 0.00 : 52c773: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 52c777: 45 31 f6 xor %r14d,%r14d 0.00 : 52c77a: 4d 85 ed test %r13,%r13 0.00 : 52c77d: 75 16 jne 52c795 0.00 : 52c77f: e9 53 01 00 00 jmpq 52c8d7 0.00 : 52c784: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 52c788: 4d 8b 6d 08 mov 0x8(%r13),%r13 0.00 : 52c78c: 4d 85 ed test %r13,%r13 0.00 : 52c78f: 0f 84 01 01 00 00 je 52c896 : { : TargetEntry *tle = (TargetEntry *) lfirst(tl); 0.00 : 52c795: 49 8b 5d 00 mov 0x0(%r13),%rbx : : if (!tle->resjunk && 0.00 : 52c799: 80 7b 2a 00 cmpb $0x0,0x2a(%rbx) 0.00 : 52c79d: 0f 1f 00 nopl (%rax) 0.00 : 52c7a0: 75 e6 jne 52c788 : strcmp(tle->resname, name) == 0) 0.00 : 52c7a2: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 52c7a6: 48 8b 75 c8 mov -0x38(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_clause.c:1531 100.00 : 52c7aa: 4c 89 4d c0 mov %r9,-0x40(%rbp) 0.00 : 52c7ae: 44 89 55 b8 mov %r10d,-0x48(%rbp) 0.00 : 52c7b2: e8 79 d5 f3 ff callq 469d30 : : foreach(tl, *tlist) : { : TargetEntry *tle = (TargetEntry *) lfirst(tl); : : if (!tle->resjunk && 0.00 : 52c7b7: 85 c0 test %eax,%eax 0.00 : 52c7b9: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 52c7bd: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 52c7c1: 75 c5 jne 52c788 : strcmp(tle->resname, name) == 0) : { : if (target_result != NULL) 0.00 : 52c7c3: 4d 85 f6 test %r14,%r14 0.00 : 52c7c6: 0f 84 c2 00 00 00 je 52c88e : { : if (!equal(target_result->expr, tle->expr)) 0.00 : 52c7cc: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 52c7d0: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 52c7d4: e8 f7 e8 0b 00 callq 5eb0d0 0.00 : 52c7d9: 84 c0 test %al,%al 0.00 : 52c7db: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 52c7df: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 52c7e3: 75 a3 jne 52c788 : ereport(ERROR, 0.00 : 52c7e5: 45 31 c0 xor %r8d,%r8d 0.00 : 52c7e8: b9 40 1f 87 00 mov $0x871f40,%ecx 0.00 : 52c7ed: ba 08 06 00 00 mov $0x608,%edx 0.00 : 52c7f2: be 9b 16 87 00 mov $0x87169b,%esi 0.00 : 52c7f7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52c7fc: e8 bf e2 24 00 callq 77aac0 0.00 : 52c801: 84 c0 test %al,%al 0.00 : 52c803: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 52c807: 0f 84 33 ff ff ff je 52c740 0.00 : 52c80d: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 52c810: 4c 89 cf mov %r9,%rdi 0.00 : 52c813: e8 58 de 00 00 callq 53a670 0.00 : 52c818: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 52c81c: 41 89 c4 mov %eax,%r12d 0.00 : 52c81f: 44 89 d7 mov %r10d,%edi 0.00 : 52c822: e8 49 73 00 00 callq 533b70 0.00 : 52c827: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 52c82b: 48 89 c6 mov %rax,%rsi 0.00 : 52c82e: bf fe 16 87 00 mov $0x8716fe,%edi 0.00 : 52c833: 31 c0 xor %eax,%eax 0.00 : 52c835: e8 66 00 25 00 callq 77c8a0 0.00 : 52c83a: bf 84 70 00 02 mov $0x2007084,%edi 0.00 : 52c83f: 89 c3 mov %eax,%ebx : checkTargetlistEntrySQL92(pstate, tle, exprKind); : return tle; : } : } : } : ereport(ERROR, 0.00 : 52c841: e8 0a 05 25 00 callq 77cd50 0.00 : 52c846: 44 89 e2 mov %r12d,%edx 0.00 : 52c849: 89 c7 mov %eax,%edi 0.00 : 52c84b: 89 de mov %ebx,%esi 0.00 : 52c84d: 31 c0 xor %eax,%eax 0.00 : 52c84f: e8 8c dd 24 00 callq 77a5e0 0.00 : 52c854: e9 e7 fe ff ff jmpq 52c740 0.00 : 52c859: 4c 89 cf mov %r9,%rdi 0.00 : 52c85c: 44 89 f6 mov %r14d,%esi 0.00 : 52c85f: e8 0c de 00 00 callq 53a670 0.00 : 52c864: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 52c868: 41 89 c4 mov %eax,%r12d 0.00 : 52c86b: 44 89 d7 mov %r10d,%edi 0.00 : 52c86e: e8 fd 72 00 00 callq 533b70 0.00 : 52c873: bf 30 18 87 00 mov $0x871830,%edi 0.00 : 52c878: 48 89 c6 mov %rax,%rsi 0.00 : 52c87b: 44 89 ea mov %r13d,%edx 0.00 : 52c87e: 31 c0 xor %eax,%eax 0.00 : 52c880: e8 1b 00 25 00 callq 77c8a0 0.00 : 52c885: bf 84 00 06 00 mov $0x60084,%edi 0.00 : 52c88a: 89 c3 mov %eax,%ebx 0.00 : 52c88c: eb b3 jmp 52c841 : strcmp(tle->resname, name) == 0) : { : if (target_result != NULL) : { : if (!equal(target_result->expr, tle->expr)) : ereport(ERROR, 0.00 : 52c88e: 49 89 de mov %rbx,%r14 0.00 : 52c891: e9 f2 fe ff ff jmpq 52c788 : else : target_result = tle; : /* Stay in loop to check for ambiguity */ : } : } : if (target_result != NULL) 0.00 : 52c896: 4d 85 f6 test %r14,%r14 0.00 : 52c899: 74 3c je 52c8d7 : { : /* return the first match, after suitable validation */ : checkTargetlistEntrySQL92(pstate, target_result, exprKind); 0.00 : 52c89b: 44 89 d2 mov %r10d,%edx 0.00 : 52c89e: 4c 89 f6 mov %r14,%rsi 0.00 : 52c8a1: 4c 89 cf mov %r9,%rdi 0.00 : 52c8a4: e8 47 fb ff ff callq 52c3f0 : : /* : * Otherwise, we have an expression, so process it per SQL99 rules. : */ : return findTargetlistEntrySQL99(pstate, node, tlist, exprKind); : } 0.00 : 52c8a9: e9 0d fe ff ff jmpq 52c6bb : * FROM variables, whereas before it was (1) (3) (2). SQL92 and : * SQL99 do not allow GROUPing BY an outer reference, so this : * breaks no cases that are legal per spec, and it seems a more : * self-consistent behavior. : */ : if (colNameToVar(pstate, name, true, location) != NULL) 0.00 : 52c8ae: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 52c8b2: 4c 89 4d c0 mov %r9,-0x40(%rbp) 0.00 : 52c8b6: 89 c1 mov %eax,%ecx 0.00 : 52c8b8: 44 89 55 b8 mov %r10d,-0x48(%rbp) 0.00 : 52c8bc: ba 01 00 00 00 mov $0x1,%edx 0.00 : 52c8c1: e8 ea 38 01 00 callq 5401b0 0.00 : 52c8c6: 48 85 c0 test %rax,%rax 0.00 : 52c8c9: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 52c8cd: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 52c8d1: 0f 84 85 fe ff ff je 52c75c : else : target_result = tle; : /* Stay in loop to check for ambiguity */ : } : } : if (target_result != NULL) 0.00 : 52c8d7: 41 8b 04 24 mov (%r12),%eax 0.00 : 52c8db: e9 6a fd ff ff jmpq 52c64a : int location = ((A_Const *) node)->location; : int targetlist_pos = 0; : int target_pos; : : if (!IsA(val, Integer)) : ereport(ERROR, 0.00 : 52c8e0: 45 31 c0 xor %r8d,%r8d 0.00 : 52c8e3: 4c 89 4d c0 mov %r9,-0x40(%rbp) 0.00 : 52c8e7: b9 40 1f 87 00 mov $0x871f40,%ecx 0.00 : 52c8ec: ba 24 06 00 00 mov $0x624,%edx 0.00 : 52c8f1: be 9b 16 87 00 mov $0x87169b,%esi 0.00 : 52c8f6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52c8fb: 44 89 55 b8 mov %r10d,-0x48(%rbp) 0.00 : 52c8ff: e8 bc e1 24 00 callq 77aac0 0.00 : 52c904: 84 c0 test %al,%al 0.00 : 52c906: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 52c90a: 0f 84 30 fe ff ff je 52c740 0.00 : 52c910: 4c 89 cf mov %r9,%rdi 0.00 : 52c913: 44 89 f6 mov %r14d,%esi 0.00 : 52c916: e8 55 dd 00 00 callq 53a670 0.00 : 52c91b: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 52c91f: 41 89 c4 mov %eax,%r12d 0.00 : 52c922: 44 89 d7 mov %r10d,%edi 0.00 : 52c925: e8 46 72 00 00 callq 533b70 0.00 : 52c92a: bf 13 17 87 00 mov $0x871713,%edi 0.00 : 52c92f: 48 89 c6 mov %rax,%rsi 0.00 : 52c932: 31 c0 xor %eax,%eax 0.00 : 52c934: e8 67 ff 24 00 callq 77c8a0 0.00 : 52c939: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52c93e: 89 c3 mov %eax,%ebx 0.00 : 52c940: e9 fc fe ff ff jmpq 52c841 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_coerce.c:1026 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005318d0 : : * processing is wanted. : */ : Node * : coerce_to_boolean(ParseState *pstate, Node *node, : const char *constructName) : { 0.00 : 5318d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/parser/parse_coerce.c:1026 100.00 : 5318d1: 48 89 e5 mov %rsp,%rbp 0.00 : 5318d4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 5318d8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 5318dc: 49 89 fc mov %rdi,%r12 0.00 : 5318df: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 5318e3: 4c 89 75 f8 mov %r14,-0x8(%rbp) : Oid inputTypeId = exprType(node); 0.00 : 5318e7: 48 89 f7 mov %rsi,%rdi : * processing is wanted. : */ : Node * : coerce_to_boolean(ParseState *pstate, Node *node, : const char *constructName) : { 0.00 : 5318ea: 48 83 ec 30 sub $0x30,%rsp 0.00 : 5318ee: 48 89 f3 mov %rsi,%rbx 0.00 : 5318f1: 49 89 d6 mov %rdx,%r14 : Oid inputTypeId = exprType(node); 0.00 : 5318f4: e8 d7 f3 0a 00 callq 5e0cd0 : : if (inputTypeId != BOOLOID) 0.00 : 5318f9: 83 f8 10 cmp $0x10,%eax : */ : Node * : coerce_to_boolean(ParseState *pstate, Node *node, : const char *constructName) : { : Oid inputTypeId = exprType(node); 0.00 : 5318fc: 41 89 c5 mov %eax,%r13d : : if (inputTypeId != BOOLOID) 0.00 : 5318ff: 74 35 je 531936 : { : Node *newnode; : : newnode = coerce_to_target_type(pstate, node, inputTypeId, 0.00 : 531901: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 531907: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 53190d: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 531912: 89 c2 mov %eax,%edx 0.00 : 531914: 48 89 de mov %rbx,%rsi 0.00 : 531917: 4c 89 e7 mov %r12,%rdi 0.00 : 53191a: c7 44 24 08 ff ff ff movl $0xffffffff,0x8(%rsp) 0.00 : 531921: ff 0.00 : 531922: c7 04 24 02 00 00 00 movl $0x2,(%rsp) 0.00 : 531929: e8 02 fd ff ff callq 531630 : BOOLOID, -1, : COERCION_ASSIGNMENT, : COERCE_IMPLICIT_CAST, : -1); : if (newnode == NULL) 0.00 : 53192e: 48 85 c0 test %rax,%rax 0.00 : 531931: 74 49 je 53197c : ereport(ERROR, 0.00 : 531933: 48 89 c3 mov %rax,%rbx : constructName, format_type_be(inputTypeId)), : parser_errposition(pstate, exprLocation(node)))); : node = newnode; : } : : if (expression_returns_set(node)) 0.00 : 531936: 48 89 df mov %rbx,%rdi 0.00 : 531939: e8 12 e1 0a 00 callq 5dfa50 0.00 : 53193e: 84 c0 test %al,%al 0.00 : 531940: 75 15 jne 531957 : errmsg("argument of %s must not return a set", : constructName), : parser_errposition(pstate, exprLocation(node)))); : : return node; : } 0.00 : 531942: 48 89 d8 mov %rbx,%rax 0.00 : 531945: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 531949: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 53194d: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 531951: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 531955: c9 leaveq 0.00 : 531956: c3 retq : parser_errposition(pstate, exprLocation(node)))); : node = newnode; : } : : if (expression_returns_set(node)) : ereport(ERROR, 0.00 : 531957: 45 31 c0 xor %r8d,%r8d 0.00 : 53195a: b9 10 27 87 00 mov $0x872710,%ecx 0.00 : 53195f: ba 1e 04 00 00 mov $0x41e,%edx 0.00 : 531964: be d3 20 87 00 mov $0x8720d3,%esi 0.00 : 531969: bf 14 00 00 00 mov $0x14,%edi 0.00 : 53196e: e8 4d 91 24 00 callq 77aac0 0.00 : 531973: 84 c0 test %al,%al 0.00 : 531975: 75 70 jne 5319e7 0.00 : 531977: e8 54 7b f3 ff callq 4694d0 : BOOLOID, -1, : COERCION_ASSIGNMENT, : COERCE_IMPLICIT_CAST, : -1); : if (newnode == NULL) : ereport(ERROR, 0.00 : 53197c: 45 31 c0 xor %r8d,%r8d 0.00 : 53197f: b9 10 27 87 00 mov $0x872710,%ecx 0.00 : 531984: ba 14 04 00 00 mov $0x414,%edx 0.00 : 531989: be d3 20 87 00 mov $0x8720d3,%esi 0.00 : 53198e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 531993: e8 28 91 24 00 callq 77aac0 0.00 : 531998: 84 c0 test %al,%al 0.00 : 53199a: 74 db je 531977 0.00 : 53199c: 48 89 df mov %rbx,%rdi 0.00 : 53199f: e8 6c c7 0a 00 callq 5de110 0.00 : 5319a4: 4c 89 e7 mov %r12,%rdi 0.00 : 5319a7: 89 c6 mov %eax,%esi 0.00 : 5319a9: e8 c2 8c 00 00 callq 53a670 0.00 : 5319ae: 44 89 ef mov %r13d,%edi 0.00 : 5319b1: 41 89 c4 mov %eax,%r12d 0.00 : 5319b4: e8 67 7a 1a 00 callq 6d9420 0.00 : 5319b9: 4c 89 f6 mov %r14,%rsi 0.00 : 5319bc: 48 89 c2 mov %rax,%rdx 0.00 : 5319bf: bf f8 25 87 00 mov $0x8725f8,%edi 0.00 : 5319c4: 31 c0 xor %eax,%eax 0.00 : 5319c6: e8 d5 ae 24 00 callq 77c8a0 : parser_errposition(pstate, exprLocation(node)))); : node = newnode; : } : : if (expression_returns_set(node)) : ereport(ERROR, 0.00 : 5319cb: 89 c3 mov %eax,%ebx 0.00 : 5319cd: bf 84 80 00 04 mov $0x4008084,%edi 0.00 : 5319d2: e8 79 b3 24 00 callq 77cd50 0.00 : 5319d7: 44 89 e2 mov %r12d,%edx 0.00 : 5319da: 89 c7 mov %eax,%edi 0.00 : 5319dc: 89 de mov %ebx,%esi 0.00 : 5319de: 31 c0 xor %eax,%eax 0.00 : 5319e0: e8 fb 8b 24 00 callq 77a5e0 0.00 : 5319e5: eb 90 jmp 531977 0.00 : 5319e7: 48 89 df mov %rbx,%rdi 0.00 : 5319ea: e8 21 c7 0a 00 callq 5de110 0.00 : 5319ef: 4c 89 e7 mov %r12,%rdi 0.00 : 5319f2: 89 c6 mov %eax,%esi 0.00 : 5319f4: e8 77 8c 00 00 callq 53a670 0.00 : 5319f9: 4c 89 f6 mov %r14,%rsi 0.00 : 5319fc: 41 89 c4 mov %eax,%r12d 0.00 : 5319ff: bf d0 25 87 00 mov $0x8725d0,%edi 0.00 : 531a04: 31 c0 xor %eax,%eax 0.00 : 531a06: e8 95 ae 24 00 callq 77c8a0 0.00 : 531a0b: eb be jmp 5319cb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/trigger.c:1981 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005935d0 : : return (HeapTuple) DatumGetPointer(result); : } : : void : ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo) : { 0.00 : 5935d0: 55 push %rbp 0.00 : 5935d1: 48 89 e5 mov %rsp,%rbp 0.00 : 5935d4: 41 57 push %r15 0.00 : 5935d6: 49 89 ff mov %rdi,%r15 0.00 : 5935d9: 41 56 push %r14 0.00 : 5935db: 49 89 f6 mov %rsi,%r14 0.00 : 5935de: 41 55 push %r13 0.00 : 5935e0: 41 54 push %r12 0.00 : 5935e2: 53 push %rbx 0.00 : 5935e3: 48 83 ec 48 sub $0x48,%rsp : TriggerDesc *trigdesc; : int i; : TriggerData LocTriggerData; : : trigdesc = relinfo->ri_TrigDesc; 0.00 : 5935e7: 4c 8b 6e 28 mov 0x28(%rsi),%r13 : : if (trigdesc == NULL) 0.00 : 5935eb: 4d 85 ed test %r13,%r13 0.00 : 5935ee: 0f 84 fc 00 00 00 je 5936f0 : return; : if (!trigdesc->trig_insert_before_statement) 0.00 : 5935f4: 41 80 7d 0f 00 cmpb $0x0,0xf(%r13) 0.00 : 5935f9: 0f 84 f1 00 00 00 je 5936f0 : return; : : LocTriggerData.type = T_TriggerData; : LocTriggerData.tg_event = TRIGGER_EVENT_INSERT | : TRIGGER_EVENT_BEFORE; : LocTriggerData.tg_relation = relinfo->ri_RelationDesc; 0.00 : 5935ff: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 593603: 48 89 45 a8 mov %rax,-0x58(%rbp) : LocTriggerData.tg_trigtuple = NULL; : LocTriggerData.tg_newtuple = NULL; : LocTriggerData.tg_trigtuplebuf = InvalidBuffer; : LocTriggerData.tg_newtuplebuf = InvalidBuffer; : for (i = 0; i < trigdesc->numtriggers; i++) 0.00 : 593607: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 59360b: 85 c0 test %eax,%eax 0.00 : 59360d: 0f 8e dd 00 00 00 jle 5936f0 : if (trigdesc == NULL) : return; : if (!trigdesc->trig_insert_before_statement) : return; : : LocTriggerData.type = T_TriggerData; 0.00 : 593613: c7 45 a0 b6 03 00 00 movl $0x3b6,-0x60(%rbp) : LocTriggerData.tg_event = TRIGGER_EVENT_INSERT | 0.00 : 59361a: c7 45 a4 08 00 00 00 movl $0x8,-0x5c(%rbp) : TRIGGER_EVENT_BEFORE; : LocTriggerData.tg_relation = relinfo->ri_RelationDesc; : LocTriggerData.tg_trigtuple = NULL; : LocTriggerData.tg_newtuple = NULL; : LocTriggerData.tg_trigtuplebuf = InvalidBuffer; : LocTriggerData.tg_newtuplebuf = InvalidBuffer; 0.00 : 593621: 45 31 e4 xor %r12d,%r12d : : LocTriggerData.type = T_TriggerData; : LocTriggerData.tg_event = TRIGGER_EVENT_INSERT | : TRIGGER_EVENT_BEFORE; : LocTriggerData.tg_relation = relinfo->ri_RelationDesc; : LocTriggerData.tg_trigtuple = NULL; 0.00 : 593624: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 59362b: 00 : LocTriggerData.tg_newtuple = NULL; 0.00 : 59362c: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 593633: 00 : LocTriggerData.tg_trigtuplebuf = InvalidBuffer; 0.00 : 593634: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : LocTriggerData.tg_newtuplebuf = InvalidBuffer; 0.00 : 59363b: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) 0.00 : 593642: eb 12 jmp 593656 0.00 : 593644: 0f 1f 40 00 nopl 0x0(%rax) : for (i = 0; i < trigdesc->numtriggers; i++) 0.00 : 593648: 41 83 c4 01 add $0x1,%r12d 0.00 : 59364c: 45 39 65 08 cmp %r12d,0x8(%r13) 0.00 : 593650: 0f 8e 9a 00 00 00 jle 5936f0 : { : Trigger *trigger = &trigdesc->triggers[i]; 0.00 : 593656: 49 63 c4 movslq %r12d,%rax 0.00 : 593659: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 59365d: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 593664: 00 0.00 : 593665: 49 03 5d 00 add 0x0(%r13),%rbx : HeapTuple newtuple; : : if (!TRIGGER_TYPE_MATCHES(trigger->tgtype, 0.00 : 593669: 0f bf 43 14 movswl 0x14(%rbx),%eax 0.00 : 59366d: 83 e0 47 and $0x47,%eax 0.00 : 593670: 83 f8 06 cmp $0x6,%eax 0.00 : 593673: 75 d3 jne 593648 : TRIGGER_TYPE_STATEMENT, : TRIGGER_TYPE_BEFORE, : TRIGGER_TYPE_INSERT)) : continue; : if (!TriggerEnabled(estate, relinfo, trigger, LocTriggerData.tg_event, 0.00 : 593675: 8b 4d a4 mov -0x5c(%rbp),%ecx 0.00 : 593678: 45 31 c9 xor %r9d,%r9d 0.00 : 59367b: 45 31 c0 xor %r8d,%r8d 0.00 : 59367e: 48 89 da mov %rbx,%rdx 0.00 : 593681: 4c 89 f6 mov %r14,%rsi 0.00 : 593684: 4c 89 ff mov %r15,%rdi 0.00 : 593687: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 59368e: 00 0.00 : 59368f: e8 1c ed ff ff callq 5923b0 0.00 : 593694: 84 c0 test %al,%al 0.00 : 593696: 74 b0 je 593648 : NULL, NULL, NULL)) : continue; : : LocTriggerData.tg_trigger = trigger; : newtuple = ExecCallTriggerFunc(&LocTriggerData, 0.00 : 593698: 49 8b 87 c8 00 00 00 mov 0xc8(%r15),%rax : continue; : if (!TriggerEnabled(estate, relinfo, trigger, LocTriggerData.tg_event, : NULL, NULL, NULL)) : continue; : : LocTriggerData.tg_trigger = trigger; 0.00 : 59369f: 48 89 5d c0 mov %rbx,-0x40(%rbp) : newtuple = ExecCallTriggerFunc(&LocTriggerData, 0.00 : 5936a3: 48 85 c0 test %rax,%rax 0.00 : 5936a6: 74 57 je 5936ff 0.00 : 5936a8: 49 8b 4e 40 mov 0x40(%r14),%rcx 0.00 : 5936ac: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 5936b0: 48 8d 7d a0 lea -0x60(%rbp),%rdi 0.00 : 5936b4: 4c 8b 40 28 mov 0x28(%rax),%r8 0.00 : 5936b8: 44 89 e6 mov %r12d,%esi 0.00 : 5936bb: e8 20 d0 ff ff callq 5906e0 : i, : relinfo->ri_TrigFunctions, : relinfo->ri_TrigInstrument, : GetPerTupleMemoryContext(estate)); : : if (newtuple) 0.00 : 5936c0: 48 85 c0 test %rax,%rax 0.00 : 5936c3: 74 83 je 593648 : ereport(ERROR, 0.00 : 5936c5: 45 31 c0 xor %r8d,%r8d 0.00 : 5936c8: b9 70 60 88 00 mov $0x886070,%ecx 0.00 : 5936cd: ba bb 07 00 00 mov $0x7bb,%edx 0.00 : 5936d2: be 8e b1 87 00 mov $0x87b18e,%esi 0.00 : 5936d7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5936dc: e8 df 73 1e 00 callq 77aac0 0.00 : 5936e1: 84 c0 test %al,%al 0.00 : 5936e3: 75 24 jne 593709 0.00 : 5936e5: e8 e6 5d ed ff callq 4694d0 0.00 : 5936ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), : errmsg("BEFORE STATEMENT trigger cannot return a value"))); : } : } /home/Computational/mark/src/postgres-andres/src/backend/commands/trigger.c:1981 100.00 : 5936f0: 48 83 c4 48 add $0x48,%rsp 0.00 : 5936f4: 5b pop %rbx 0.00 : 5936f5: 41 5c pop %r12 0.00 : 5936f7: 41 5d pop %r13 0.00 : 5936f9: 41 5e pop %r14 0.00 : 5936fb: 41 5f pop %r15 0.00 : 5936fd: c9 leaveq 0.00 : 5936fe: c3 retq : if (!TriggerEnabled(estate, relinfo, trigger, LocTriggerData.tg_event, : NULL, NULL, NULL)) : continue; : : LocTriggerData.tg_trigger = trigger; : newtuple = ExecCallTriggerFunc(&LocTriggerData, 0.00 : 5936ff: 4c 89 ff mov %r15,%rdi 0.00 : 593702: e8 a9 1e 02 00 callq 5b55b0 0.00 : 593707: eb 9f jmp 5936a8 : relinfo->ri_TrigFunctions, : relinfo->ri_TrigInstrument, : GetPerTupleMemoryContext(estate)); : : if (newtuple) : ereport(ERROR, 0.00 : 593709: bf 48 57 88 00 mov $0x885748,%edi 0.00 : 59370e: 31 c0 xor %eax,%eax 0.00 : 593710: e8 8b 91 1e 00 callq 77c8a0 0.00 : 593715: bf 43 02 02 01 mov $0x1020243,%edi 0.00 : 59371a: 89 c3 mov %eax,%ebx 0.00 : 59371c: e8 2f 96 1e 00 callq 77cd50 0.00 : 593721: 89 de mov %ebx,%esi 0.00 : 593723: 89 c7 mov %eax,%edi 0.00 : 593725: 31 c0 xor %eax,%eax 0.00 : 593727: e8 b4 6e 1e 00 callq 77a5e0 0.00 : 59372c: eb b7 jmp 5936e5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1406 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a2a60 : : * This should be called in each major loop of VACUUM processing, : * typically once per page processed. : */ : void : vacuum_delay_point(void) : { 0.00 : 5a2a60: 55 push %rbp : /* Always check for interrupts */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2a61: 0f b6 05 28 76 61 00 movzbl 0x617628(%rip),%eax # bba090 : * This should be called in each major loop of VACUUM processing, : * typically once per page processed. : */ : void : vacuum_delay_point(void) : { 0.00 : 5a2a68: 48 89 e5 mov %rsp,%rbp : /* Always check for interrupts */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2a6b: 84 c0 test %al,%al 0.00 : 5a2a6d: 75 79 jne 5a2ae8 : : /* Nap if appropriate */ : if (VacuumCostActive && !InterruptPending && 0.00 : 5a2a6f: 80 3d 6e 76 61 00 00 cmpb $0x0,0x61766e(%rip) # bba0e4 0.00 : 5a2a76: 74 68 je 5a2ae0 100.00 : 5a2a78: 0f b6 05 11 76 61 00 movzbl 0x617611(%rip),%eax # bba090 0.00 : 5a2a7f: 84 c0 test %al,%al 0.00 : 5a2a81: 75 5d jne 5a2ae0 0.00 : 5a2a83: 8b 05 57 76 61 00 mov 0x617657(%rip),%eax # bba0e0 0.00 : 5a2a89: 8b 0d a9 60 5c 00 mov 0x5c60a9(%rip),%ecx # b68b38 0.00 : 5a2a8f: 39 c8 cmp %ecx,%eax 0.00 : 5a2a91: 7c 4d jl 5a2ae0 : VacuumCostBalance >= VacuumCostLimit) : { : int msec; : : msec = VacuumCostDelay * VacuumCostBalance / VacuumCostLimit; 0.00 : 5a2a93: 8b 3d 37 76 61 00 mov 0x617637(%rip),%edi # bba0d0 0.00 : 5a2a99: 89 fa mov %edi,%edx : if (msec > VacuumCostDelay * 4) : msec = VacuumCostDelay * 4; : : pg_usleep(msec * 1000L); 0.00 : 5a2a9b: c1 e7 02 shl $0x2,%edi : if (VacuumCostActive && !InterruptPending && : VacuumCostBalance >= VacuumCostLimit) : { : int msec; : : msec = VacuumCostDelay * VacuumCostBalance / VacuumCostLimit; 0.00 : 5a2a9e: 0f af d0 imul %eax,%edx 0.00 : 5a2aa1: 89 d0 mov %edx,%eax 0.00 : 5a2aa3: c1 fa 1f sar $0x1f,%edx 0.00 : 5a2aa6: f7 f9 idiv %ecx : if (msec > VacuumCostDelay * 4) : msec = VacuumCostDelay * 4; : : pg_usleep(msec * 1000L); 0.00 : 5a2aa8: 39 f8 cmp %edi,%eax 0.00 : 5a2aaa: 0f 4e f8 cmovle %eax,%edi 0.00 : 5a2aad: 48 63 ff movslq %edi,%rdi 0.00 : 5a2ab0: 48 69 ff e8 03 00 00 imul $0x3e8,%rdi,%rdi 0.00 : 5a2ab7: e8 94 9c 20 00 callq 7ac750 : : VacuumCostBalance = 0; 0.00 : 5a2abc: c7 05 1a 76 61 00 00 movl $0x0,0x61761a(%rip) # bba0e0 0.00 : 5a2ac3: 00 00 00 : : /* update balance values for workers */ : AutoVacuumUpdateDelay(); 0.00 : 5a2ac6: e8 b5 6b 09 00 callq 639680 : : /* Might have gotten an interrupt while sleeping */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2acb: 0f b6 05 be 75 61 00 movzbl 0x6175be(%rip),%eax # bba090 0.00 : 5a2ad2: 84 c0 test %al,%al 0.00 : 5a2ad4: 74 0a je 5a2ae0 : } : } 0.00 : 5a2ad6: c9 leaveq : : /* update balance values for workers */ : AutoVacuumUpdateDelay(); : : /* Might have gotten an interrupt while sleeping */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2ad7: e9 c4 97 0f 00 jmpq 69c2a0 0.00 : 5a2adc: 0f 1f 40 00 nopl 0x0(%rax) : } : } 0.00 : 5a2ae0: c9 leaveq 0.00 : 5a2ae1: c3 retq 0.00 : 5a2ae2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : void : vacuum_delay_point(void) : { : /* Always check for interrupts */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2ae8: e8 b3 97 0f 00 callq 69c2a0 0.00 : 5a2aed: 0f 1f 00 nopl (%rax) 0.00 : 5a2af0: e9 7a ff ff ff jmpq 5a2a6f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1277 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b0b30 : : * init_fcache - initialize a FuncExprState node during first use : */ : static void : init_fcache(Oid foid, Oid input_collation, FuncExprState *fcache, : MemoryContext fcacheCxt, bool needDescForSets) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1277 100.00 : 5b0b30: 55 push %rbp 0.00 : 5b0b31: 48 89 e5 mov %rsp,%rbp 0.00 : 5b0b34: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5b0b38: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5b0b3c: 49 89 d4 mov %rdx,%r12 0.00 : 5b0b3f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 5b0b43: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 5b0b47: 41 89 fd mov %edi,%r13d 0.00 : 5b0b4a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5b0b4e: 48 83 ec 40 sub $0x40,%rsp 0.00 : 5b0b52: 41 89 f6 mov %esi,%r14d 0.00 : 5b0b55: 49 89 cf mov %rcx,%r15 0.00 : 5b0b58: 44 88 45 c7 mov %r8b,-0x39(%rbp) : AclResult aclresult; : : /* Check permission to call function */ : aclresult = pg_proc_aclcheck(foid, GetUserId(), ACL_EXECUTE); 0.00 : 5b0b5c: e8 4f 44 1d 00 callq 784fb0 0.00 : 5b0b61: ba 80 00 00 00 mov $0x80,%edx 0.00 : 5b0b66: 89 c6 mov %eax,%esi 0.00 : 5b0b68: 44 89 ef mov %r13d,%edi 0.00 : 5b0b6b: e8 a0 1f f4 ff callq 4f2b10 : if (aclresult != ACLCHECK_OK) 0.00 : 5b0b70: 85 c0 test %eax,%eax : MemoryContext fcacheCxt, bool needDescForSets) : { : AclResult aclresult; : : /* Check permission to call function */ : aclresult = pg_proc_aclcheck(foid, GetUserId(), ACL_EXECUTE); 0.00 : 5b0b72: 89 c3 mov %eax,%ebx : if (aclresult != ACLCHECK_OK) 0.00 : 5b0b74: 0f 85 26 01 00 00 jne 5b0ca0 : aclcheck_error(aclresult, ACL_KIND_PROC, get_func_name(foid)); : InvokeFunctionExecuteHook(foid); 0.00 : 5b0b7a: 48 83 3d 56 8b 5c 00 cmpq $0x0,0x5c8b56(%rip) # b796d8 0.00 : 5b0b81: 00 0.00 : 5b0b82: 74 08 je 5b0b8c 0.00 : 5b0b84: 44 89 ef mov %r13d,%edi 0.00 : 5b0b87: e8 c4 7e f4 ff callq 4f8a50 : * Safety check on nargs. Under normal circumstances this should never : * fail, as parser should check sooner. But possibly it might fail if : * server has been compiled with FUNC_MAX_ARGS smaller than some functions : * declared in pg_proc? : */ : if (list_length(fcache->args) > FUNC_MAX_ARGS) 0.00 : 5b0b8c: 49 8b 44 24 18 mov 0x18(%r12),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5b0b91: 48 85 c0 test %rax,%rax 0.00 : 5b0b94: 74 0a je 5b0ba0 0.00 : 5b0b96: 83 78 04 64 cmpl $0x64,0x4(%rax) 0.00 : 5b0b9a: 0f 8f 91 01 00 00 jg 5b0d31 : "cannot pass more than %d arguments to a function", : FUNC_MAX_ARGS, : FUNC_MAX_ARGS))); : : /* Set up the primary fmgr lookup information */ : fmgr_info_cxt(foid, &(fcache->func), fcacheCxt); 0.00 : 5b0ba0: 49 8d 5c 24 20 lea 0x20(%r12),%rbx 0.00 : 5b0ba5: 4c 89 fa mov %r15,%rdx 0.00 : 5b0ba8: 44 89 ef mov %r13d,%edi 0.00 : 5b0bab: 48 89 de mov %rbx,%rsi 0.00 : 5b0bae: e8 9d f4 1c 00 callq 780050 : fmgr_info_set_expr((Node *) fcache->xprstate.expr, &(fcache->func)); 0.00 : 5b0bb3: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5b0bb8: 31 d2 xor %edx,%edx : : /* Initialize the function call parameter struct as well */ : InitFunctionCallInfoData(fcache->fcinfo_data, &(fcache->func), 0.00 : 5b0bba: 49 89 5c 24 70 mov %rbx,0x70(%r12) 0.00 : 5b0bbf: 49 c7 44 24 78 00 00 movq $0x0,0x78(%r12) 0.00 : 5b0bc6: 00 00 0.00 : 5b0bc8: 49 c7 84 24 80 00 00 movq $0x0,0x80(%r12) 0.00 : 5b0bcf: 00 00 00 00 00 0.00 : 5b0bd4: 45 89 b4 24 88 00 00 mov %r14d,0x88(%r12) 0.00 : 5b0bdb: 00 0.00 : 5b0bdc: 41 c6 84 24 8c 00 00 movb $0x0,0x8c(%r12) 0.00 : 5b0be3: 00 00 : FUNC_MAX_ARGS, : FUNC_MAX_ARGS))); : : /* Set up the primary fmgr lookup information */ : fmgr_info_cxt(foid, &(fcache->func), fcacheCxt); : fmgr_info_set_expr((Node *) fcache->xprstate.expr, &(fcache->func)); 0.00 : 5b0be5: 49 89 44 24 48 mov %rax,0x48(%r12) : : /* Initialize the function call parameter struct as well */ : InitFunctionCallInfoData(fcache->fcinfo_data, &(fcache->func), 0.00 : 5b0bea: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5b0bef: 48 85 c0 test %rax,%rax 0.00 : 5b0bf2: 74 04 je 5b0bf8 0.00 : 5b0bf4: 0f b7 50 04 movzwl 0x4(%rax),%edx : list_length(fcache->args), : input_collation, NULL, NULL); : : /* If function returns set, prepare expected tuple descriptor */ : if (fcache->func.fn_retset && needDescForSets) 0.00 : 5b0bf8: 41 80 7c 24 2f 00 cmpb $0x0,0x2f(%r12) : /* Set up the primary fmgr lookup information */ : fmgr_info_cxt(foid, &(fcache->func), fcacheCxt); : fmgr_info_set_expr((Node *) fcache->xprstate.expr, &(fcache->func)); : : /* Initialize the function call parameter struct as well */ : InitFunctionCallInfoData(fcache->fcinfo_data, &(fcache->func), 0.00 : 5b0bfe: 66 41 89 94 24 8e 00 mov %dx,0x8e(%r12) 0.00 : 5b0c05: 00 00 : list_length(fcache->args), : input_collation, NULL, NULL); : : /* If function returns set, prepare expected tuple descriptor */ : if (fcache->func.fn_retset && needDescForSets) 0.00 : 5b0c07: 74 57 je 5b0c60 0.00 : 5b0c09: 80 7d c7 00 cmpb $0x0,-0x39(%rbp) 0.00 : 5b0c0d: 74 51 je 5b0c60 : TypeFuncClass functypclass; : Oid funcrettype; : TupleDesc tupdesc; : MemoryContext oldcontext; : : functypclass = get_expr_result_type(fcache->func.fn_expr, 0.00 : 5b0c0f: 49 8b 7c 24 48 mov 0x48(%r12),%rdi 0.00 : 5b0c14: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 5b0c18: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 5b0c1c: e8 4f 1d 1d 00 callq 782970 : &tupdesc); : : /* Must save tupdesc in fcache's context */ : oldcontext = MemoryContextSwitchTo(fcacheCxt); : : if (functypclass == TYPEFUNC_COMPOSITE) 0.00 : 5b0c21: 83 f8 01 cmp $0x1,%eax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5b0c24: 48 8b 1d 35 9c 60 00 mov 0x609c35(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 5b0c2b: 4c 89 3d 2e 9c 60 00 mov %r15,0x609c2e(%rip) # bba860 0.00 : 5b0c32: 0f 84 e0 00 00 00 je 5b0d18 : Assert(tupdesc); : /* Must copy it out of typcache for safety */ : fcache->funcResultDesc = CreateTupleDescCopy(tupdesc); : fcache->funcReturnsTuple = true; : } : else if (functypclass == TYPEFUNC_SCALAR) 0.00 : 5b0c38: 85 c0 test %eax,%eax 0.00 : 5b0c3a: 0f 84 80 00 00 00 je 5b0cc0 : -1, : 0); : fcache->funcResultDesc = tupdesc; : fcache->funcReturnsTuple = false; : } : else if (functypclass == TYPEFUNC_RECORD) 0.00 : 5b0c40: 83 f8 02 cmp $0x2,%eax 0.00 : 5b0c43: 0f 84 b7 00 00 00 je 5b0d00 : fcache->funcReturnsTuple = true; : } : else : { : /* Else, we will fail if function needs an expectedDesc */ : fcache->funcResultDesc = NULL; 0.00 : 5b0c49: 49 c7 44 24 60 00 00 movq $0x0,0x60(%r12) 0.00 : 5b0c50: 00 00 0.00 : 5b0c52: 48 89 1d 07 9c 60 00 mov %rbx,0x609c07(%rip) # bba860 0.00 : 5b0c59: eb 0e jmp 5b0c69 0.00 : 5b0c5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : MemoryContextSwitchTo(oldcontext); : } : else : fcache->funcResultDesc = NULL; 0.00 : 5b0c60: 49 c7 44 24 60 00 00 movq $0x0,0x60(%r12) 0.00 : 5b0c67: 00 00 : : /* Initialize additional state */ : fcache->funcResultStore = NULL; 0.00 : 5b0c69: 49 c7 44 24 50 00 00 movq $0x0,0x50(%r12) 0.00 : 5b0c70: 00 00 : fcache->funcResultSlot = NULL; 0.00 : 5b0c72: 49 c7 44 24 58 00 00 movq $0x0,0x58(%r12) 0.00 : 5b0c79: 00 00 : fcache->setArgsValid = false; 0.00 : 5b0c7b: 41 c6 44 24 69 00 movb $0x0,0x69(%r12) : fcache->shutdown_reg = false; 0.00 : 5b0c81: 41 c6 44 24 6b 00 movb $0x0,0x6b(%r12) : } 0.00 : 5b0c87: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5b0c8b: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5b0c8f: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5b0c93: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5b0c97: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5b0c9b: c9 leaveq 0.00 : 5b0c9c: c3 retq 0.00 : 5b0c9d: 0f 1f 00 nopl (%rax) : AclResult aclresult; : : /* Check permission to call function */ : aclresult = pg_proc_aclcheck(foid, GetUserId(), ACL_EXECUTE); : if (aclresult != ACLCHECK_OK) : aclcheck_error(aclresult, ACL_KIND_PROC, get_func_name(foid)); 0.00 : 5b0ca0: 44 89 ef mov %r13d,%edi 0.00 : 5b0ca3: e8 08 1e 1c 00 callq 772ab0 0.00 : 5b0ca8: be 04 00 00 00 mov $0x4,%esi 0.00 : 5b0cad: 48 89 c2 mov %rax,%rdx 0.00 : 5b0cb0: 89 df mov %ebx,%edi 0.00 : 5b0cb2: e8 39 2a f4 ff callq 4f36f0 0.00 : 5b0cb7: e9 be fe ff ff jmpq 5b0b7a 0.00 : 5b0cbc: 0f 1f 40 00 nopl 0x0(%rax) : fcache->funcReturnsTuple = true; : } : else if (functypclass == TYPEFUNC_SCALAR) : { : /* Base data type, i.e. scalar */ : tupdesc = CreateTemplateTupleDesc(1, false); 0.00 : 5b0cc0: 31 f6 xor %esi,%esi 0.00 : 5b0cc2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5b0cc7: e8 24 3e ec ff callq 474af0 : TupleDescInitEntry(tupdesc, 0.00 : 5b0ccc: 8b 4d d4 mov -0x2c(%rbp),%ecx : fcache->funcReturnsTuple = true; : } : else if (functypclass == TYPEFUNC_SCALAR) : { : /* Base data type, i.e. scalar */ : tupdesc = CreateTemplateTupleDesc(1, false); 0.00 : 5b0ccf: 48 89 c7 mov %rax,%rdi : TupleDescInitEntry(tupdesc, 0.00 : 5b0cd2: 45 31 c9 xor %r9d,%r9d 0.00 : 5b0cd5: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 5b0cdb: 31 d2 xor %edx,%edx 0.00 : 5b0cdd: be 01 00 00 00 mov $0x1,%esi : fcache->funcReturnsTuple = true; : } : else if (functypclass == TYPEFUNC_SCALAR) : { : /* Base data type, i.e. scalar */ : tupdesc = CreateTemplateTupleDesc(1, false); 0.00 : 5b0ce2: 48 89 45 c8 mov %rax,-0x38(%rbp) : TupleDescInitEntry(tupdesc, 0.00 : 5b0ce6: e8 15 37 ec ff callq 474400 : (AttrNumber) 1, : NULL, : funcrettype, : -1, : 0); : fcache->funcResultDesc = tupdesc; 0.00 : 5b0ceb: 48 8b 45 c8 mov -0x38(%rbp),%rax : fcache->funcReturnsTuple = false; 0.00 : 5b0cef: 41 c6 44 24 68 00 movb $0x0,0x68(%r12) : (AttrNumber) 1, : NULL, : funcrettype, : -1, : 0); : fcache->funcResultDesc = tupdesc; 0.00 : 5b0cf5: 49 89 44 24 60 mov %rax,0x60(%r12) 0.00 : 5b0cfa: e9 53 ff ff ff jmpq 5b0c52 0.00 : 5b0cff: 90 nop : fcache->funcReturnsTuple = false; : } : else if (functypclass == TYPEFUNC_RECORD) : { : /* This will work if function doesn't need an expectedDesc */ : fcache->funcResultDesc = NULL; 0.00 : 5b0d00: 49 c7 44 24 60 00 00 movq $0x0,0x60(%r12) 0.00 : 5b0d07: 00 00 : fcache->funcReturnsTuple = true; 0.00 : 5b0d09: 41 c6 44 24 68 01 movb $0x1,0x68(%r12) 0.00 : 5b0d0f: e9 3e ff ff ff jmpq 5b0c52 0.00 : 5b0d14: 0f 1f 40 00 nopl 0x0(%rax) : if (functypclass == TYPEFUNC_COMPOSITE) : { : /* Composite data type, e.g. a table's row type */ : Assert(tupdesc); : /* Must copy it out of typcache for safety */ : fcache->funcResultDesc = CreateTupleDescCopy(tupdesc); 0.00 : 5b0d18: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 5b0d1c: e8 5f 41 ec ff callq 474e80 : fcache->funcReturnsTuple = true; 0.00 : 5b0d21: 41 c6 44 24 68 01 movb $0x1,0x68(%r12) : if (functypclass == TYPEFUNC_COMPOSITE) : { : /* Composite data type, e.g. a table's row type */ : Assert(tupdesc); : /* Must copy it out of typcache for safety */ : fcache->funcResultDesc = CreateTupleDescCopy(tupdesc); 0.00 : 5b0d27: 49 89 44 24 60 mov %rax,0x60(%r12) 0.00 : 5b0d2c: e9 21 ff ff ff jmpq 5b0c52 : * fail, as parser should check sooner. But possibly it might fail if : * server has been compiled with FUNC_MAX_ARGS smaller than some functions : * declared in pg_proc? : */ : if (list_length(fcache->args) > FUNC_MAX_ARGS) : ereport(ERROR, 0.00 : 5b0d31: 45 31 c0 xor %r8d,%r8d 0.00 : 5b0d34: b9 f6 ae 88 00 mov $0x88aef6,%ecx 0.00 : 5b0d39: ba 12 05 00 00 mov $0x512,%edx 0.00 : 5b0d3e: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5b0d43: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5b0d48: e8 73 9d 1c 00 callq 77aac0 0.00 : 5b0d4d: 84 c0 test %al,%al 0.00 : 5b0d4f: 75 05 jne 5b0d56 0.00 : 5b0d51: e8 7a 87 eb ff callq 4694d0 0.00 : 5b0d56: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 5b0d5b: ba 64 00 00 00 mov $0x64,%edx 0.00 : 5b0d60: be b0 3d 87 00 mov $0x873db0,%esi 0.00 : 5b0d65: bf e8 3d 87 00 mov $0x873de8,%edi 0.00 : 5b0d6a: 31 c0 xor %eax,%eax 0.00 : 5b0d6c: e8 6f b9 1c 00 callq 77c6e0 0.00 : 5b0d71: bf 05 01 08 03 mov $0x3080105,%edi 0.00 : 5b0d76: 89 c3 mov %eax,%ebx 0.00 : 5b0d78: e8 d3 bf 1c 00 callq 77cd50 0.00 : 5b0d7d: 89 de mov %ebx,%esi 0.00 : 5b0d7f: 89 c7 mov %eax,%edi 0.00 : 5b0d81: 31 c0 xor %eax,%eax 0.00 : 5b0d83: e8 58 98 1c 00 callq 77a5e0 0.00 : 5b0d88: eb c7 jmp 5b0d51 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:453 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bae70 : : * ExecReScanBitmapHeapScan(node) : * ---------------------------------------------------------------- : */ : void : ExecReScanBitmapHeapScan(BitmapHeapScanState *node) : { 0.00 : 5bae70: 55 push %rbp : /* rescan to release any page pin */ : heap_rescan(node->ss.ss_currentScanDesc, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeBitmapHeapscan.c:453 100.00 : 5bae71: 31 f6 xor %esi,%esi : * ExecReScanBitmapHeapScan(node) : * ---------------------------------------------------------------- : */ : void : ExecReScanBitmapHeapScan(BitmapHeapScanState *node) : { 0.00 : 5bae73: 48 89 e5 mov %rsp,%rbp 0.00 : 5bae76: 53 push %rbx 0.00 : 5bae77: 48 89 fb mov %rdi,%rbx 0.00 : 5bae7a: 48 83 ec 08 sub $0x8,%rsp : /* rescan to release any page pin */ : heap_rescan(node->ss.ss_currentScanDesc, NULL); 0.00 : 5bae7e: 48 8b bf 80 00 00 00 mov 0x80(%rdi),%rdi 0.00 : 5bae85: e8 e6 28 ee ff callq 49d770 : : if (node->tbmiterator) 0.00 : 5bae8a: 48 8b bb a0 00 00 00 mov 0xa0(%rbx),%rdi 0.00 : 5bae91: 48 85 ff test %rdi,%rdi 0.00 : 5bae94: 74 05 je 5bae9b : tbm_end_iterate(node->tbmiterator); 0.00 : 5bae96: e8 75 86 02 00 callq 5e3510 : if (node->prefetch_iterator) 0.00 : 5bae9b: 48 8b bb c0 00 00 00 mov 0xc0(%rbx),%rdi 0.00 : 5baea2: 48 85 ff test %rdi,%rdi 0.00 : 5baea5: 74 05 je 5baeac : tbm_end_iterate(node->prefetch_iterator); 0.00 : 5baea7: e8 64 86 02 00 callq 5e3510 : if (node->tbm) 0.00 : 5baeac: 48 8b bb 98 00 00 00 mov 0x98(%rbx),%rdi 0.00 : 5baeb3: 48 85 ff test %rdi,%rdi 0.00 : 5baeb6: 74 05 je 5baebd : tbm_free(node->tbm); 0.00 : 5baeb8: e8 03 92 02 00 callq 5e40c0 : node->tbm = NULL; : node->tbmiterator = NULL; : node->tbmres = NULL; : node->prefetch_iterator = NULL; : : ExecScanReScan(&node->ss); 0.00 : 5baebd: 48 89 df mov %rbx,%rdi : tbm_end_iterate(node->tbmiterator); : if (node->prefetch_iterator) : tbm_end_iterate(node->prefetch_iterator); : if (node->tbm) : tbm_free(node->tbm); : node->tbm = NULL; 0.00 : 5baec0: 48 c7 83 98 00 00 00 movq $0x0,0x98(%rbx) 0.00 : 5baec7: 00 00 00 00 : node->tbmiterator = NULL; 0.00 : 5baecb: 48 c7 83 a0 00 00 00 movq $0x0,0xa0(%rbx) 0.00 : 5baed2: 00 00 00 00 : node->tbmres = NULL; 0.00 : 5baed6: 48 c7 83 a8 00 00 00 movq $0x0,0xa8(%rbx) 0.00 : 5baedd: 00 00 00 00 : node->prefetch_iterator = NULL; 0.00 : 5baee1: 48 c7 83 c0 00 00 00 movq $0x0,0xc0(%rbx) 0.00 : 5baee8: 00 00 00 00 : : ExecScanReScan(&node->ss); 0.00 : 5baeec: e8 ff 86 ff ff callq 5b35f0 : : /* : * if chgParam of subnode is not null then plan will be re-scanned by : * first ExecProcNode. : */ : if (node->ss.ps.lefttree->chgParam == NULL) 0.00 : 5baef1: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 5baef5: 48 83 7f 50 00 cmpq $0x0,0x50(%rdi) 0.00 : 5baefa: 74 0c je 5baf08 : ExecReScan(node->ss.ps.lefttree); : } 0.00 : 5baefc: 48 83 c4 08 add $0x8,%rsp 0.00 : 5baf00: 5b pop %rbx 0.00 : 5baf01: c9 leaveq 0.00 : 5baf02: c3 retq 0.00 : 5baf03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5baf08: 48 83 c4 08 add $0x8,%rsp 0.00 : 5baf0c: 5b pop %rbx 0.00 : 5baf0d: c9 leaveq : /* : * if chgParam of subnode is not null then plan will be re-scanned by : * first ExecProcNode. : */ : if (node->ss.ps.lefttree->chgParam == NULL) : ExecReScan(node->ss.ps.lefttree); 0.00 : 5baf0e: e9 8d d5 fe ff jmpq 5a84a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeSeqscan.c:272 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005c5790 : : * Rescans the relation. : * ---------------------------------------------------------------- : */ : void : ExecReScanSeqScan(SeqScanState *node) : { 0.00 : 5c5790: 55 push %rbp : HeapScanDesc scan; : : scan = node->ss_currentScanDesc; : : heap_rescan(scan, /* scan desc */ 100.00 : 5c5791: 31 f6 xor %esi,%esi : * Rescans the relation. : * ---------------------------------------------------------------- : */ : void : ExecReScanSeqScan(SeqScanState *node) : { 0.00 : 5c5793: 48 89 e5 mov %rsp,%rbp 0.00 : 5c5796: 53 push %rbx 0.00 : 5c5797: 48 89 fb mov %rdi,%rbx 0.00 : 5c579a: 48 83 ec 08 sub $0x8,%rsp : HeapScanDesc scan; : : scan = node->ss_currentScanDesc; : : heap_rescan(scan, /* scan desc */ 0.00 : 5c579e: 48 8b bf 80 00 00 00 mov 0x80(%rdi),%rdi 0.00 : 5c57a5: e8 c6 7f ed ff callq 49d770 : NULL); /* new scan keys */ : : ExecScanReScan((ScanState *) node); : } 0.00 : 5c57aa: 48 83 c4 08 add $0x8,%rsp : scan = node->ss_currentScanDesc; : : heap_rescan(scan, /* scan desc */ : NULL); /* new scan keys */ : : ExecScanReScan((ScanState *) node); 0.00 : 5c57ae: 48 89 df mov %rbx,%rdi : } 0.00 : 5c57b1: 5b pop %rbx 0.00 : 5c57b2: c9 leaveq : scan = node->ss_currentScanDesc; : : heap_rescan(scan, /* scan desc */ : NULL); /* new scan keys */ : : ExecScanReScan((ScanState *) node); 0.00 : 5c57b3: e9 38 de fe ff jmpq 5b35f0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:246 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005d1b40 : : * initStringInfo was called, even if another context is now current. : * This is the desired and indeed critical behavior! : */ : void : enlargeStringInfo(StringInfo str, int needed) : { 0.00 : 5d1b40: 55 push %rbp : : /* : * Guard against out-of-range "needed" values. Without this, we can get : * an overflow or infinite loop in the following. : */ : if (needed < 0) /* should not happen */ 0.00 : 5d1b41: 85 f6 test %esi,%esi : * initStringInfo was called, even if another context is now current. : * This is the desired and indeed critical behavior! : */ : void : enlargeStringInfo(StringInfo str, int needed) : { 0.00 : 5d1b43: 48 89 e5 mov %rsp,%rbp 0.00 : 5d1b46: 41 54 push %r12 0.00 : 5d1b48: 49 89 fc mov %rdi,%r12 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:246 100.00 : 5d1b4b: 53 push %rbx 0.00 : 5d1b4c: 89 f3 mov %esi,%ebx : : /* : * Guard against out-of-range "needed" values. Without this, we can get : * an overflow or infinite loop in the following. : */ : if (needed < 0) /* should not happen */ 0.00 : 5d1b4e: 78 5e js 5d1bae : elog(ERROR, "invalid string enlargement request size: %d", needed); : if (((Size) needed) >= (MaxAllocSize - (Size) str->len)) 0.00 : 5d1b50: 8b 77 08 mov 0x8(%rdi),%esi 0.00 : 5d1b53: b8 ff ff ff 3f mov $0x3fffffff,%eax 0.00 : 5d1b58: 48 63 cb movslq %ebx,%rcx 0.00 : 5d1b5b: 48 63 d6 movslq %esi,%rdx 0.00 : 5d1b5e: 48 29 d0 sub %rdx,%rax 0.00 : 5d1b61: 48 39 c1 cmp %rax,%rcx 0.00 : 5d1b64: 73 74 jae 5d1bda : : needed += str->len + 1; /* total space required now */ : : /* Because of the above test, we now have needed <= MaxAllocSize */ : : if (needed <= str->maxlen) 0.00 : 5d1b66: 8b 47 0c mov 0xc(%rdi),%eax : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("out of memory"), : errdetail("Cannot enlarge string buffer containing %d bytes by %d more bytes.", : str->len, needed))); : : needed += str->len + 1; /* total space required now */ 0.00 : 5d1b69: 8d 54 1e 01 lea 0x1(%rsi,%rbx,1),%edx : : /* Because of the above test, we now have needed <= MaxAllocSize */ : : if (needed <= str->maxlen) 0.00 : 5d1b6d: 39 c2 cmp %eax,%edx 0.00 : 5d1b6f: 7e 38 jle 5d1ba9 0.00 : 5d1b71: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * We don't want to allocate just a little more space with each append; : * for efficiency, double the buffer size each time it overflows. : * Actually, we might need to more than double it if 'needed' is big... : */ : newlen = 2 * str->maxlen; 0.00 : 5d1b78: 01 c0 add %eax,%eax : while (needed > newlen) 0.00 : 5d1b7a: 39 c2 cmp %eax,%edx 0.00 : 5d1b7c: 7f fa jg 5d1b78 : /* : * Clamp to MaxAllocSize in case we went past it. Note we are assuming : * here that MaxAllocSize <= INT_MAX/2, else the above loop could : * overflow. We will still have newlen >= needed. : */ : if (newlen > (int) MaxAllocSize) 0.00 : 5d1b7e: 3d 00 00 00 40 cmp $0x40000000,%eax 0.00 : 5d1b83: bb ff ff ff 3f mov $0x3fffffff,%ebx : newlen = (int) MaxAllocSize; : : str->data = (char *) repalloc(str->data, newlen); 0.00 : 5d1b88: 49 8b 3c 24 mov (%r12),%rdi : /* : * Clamp to MaxAllocSize in case we went past it. Note we are assuming : * here that MaxAllocSize <= INT_MAX/2, else the above loop could : * overflow. We will still have newlen >= needed. : */ : if (newlen > (int) MaxAllocSize) 0.00 : 5d1b8c: 0f 4c d8 cmovl %eax,%ebx 0.00 : 5d1b8f: 48 63 f0 movslq %eax,%rsi 0.00 : 5d1b92: b8 ff ff ff 3f mov $0x3fffffff,%eax 0.00 : 5d1b97: 48 0f 4d f0 cmovge %rax,%rsi : newlen = (int) MaxAllocSize; : : str->data = (char *) repalloc(str->data, newlen); 0.00 : 5d1b9b: e8 50 71 1c 00 callq 798cf0 : : str->maxlen = newlen; 0.00 : 5d1ba0: 41 89 5c 24 0c mov %ebx,0xc(%r12) : * overflow. We will still have newlen >= needed. : */ : if (newlen > (int) MaxAllocSize) : newlen = (int) MaxAllocSize; : : str->data = (char *) repalloc(str->data, newlen); 0.00 : 5d1ba5: 49 89 04 24 mov %rax,(%r12) : : str->maxlen = newlen; : } 0.00 : 5d1ba9: 5b pop %rbx 0.00 : 5d1baa: 41 5c pop %r12 0.00 : 5d1bac: c9 leaveq 0.00 : 5d1bad: c3 retq : /* : * Guard against out-of-range "needed" values. Without this, we can get : * an overflow or infinite loop in the following. : */ : if (needed < 0) /* should not happen */ : elog(ERROR, "invalid string enlargement request size: %d", needed); 0.00 : 5d1bae: ba 10 d6 88 00 mov $0x88d610,%edx 0.00 : 5d1bb3: be fe 00 00 00 mov $0xfe,%esi 0.00 : 5d1bb8: bf 89 d5 88 00 mov $0x88d589,%edi 0.00 : 5d1bbd: e8 5e 98 1a 00 callq 77b420 0.00 : 5d1bc2: 89 da mov %ebx,%edx 0.00 : 5d1bc4: be 98 d5 88 00 mov $0x88d598,%esi 0.00 : 5d1bc9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5d1bce: 31 c0 xor %eax,%eax 0.00 : 5d1bd0: e8 5b 96 1a 00 callq 77b230 0.00 : 5d1bd5: e8 f6 78 e9 ff callq 4694d0 : if (((Size) needed) >= (MaxAllocSize - (Size) str->len)) : ereport(ERROR, 0.00 : 5d1bda: 45 31 c0 xor %r8d,%r8d 0.00 : 5d1bdd: b9 10 d6 88 00 mov $0x88d610,%ecx 0.00 : 5d1be2: ba 04 01 00 00 mov $0x104,%edx 0.00 : 5d1be7: be 89 d5 88 00 mov $0x88d589,%esi 0.00 : 5d1bec: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5d1bf1: e8 ca 8e 1a 00 callq 77aac0 0.00 : 5d1bf6: 84 c0 test %al,%al 0.00 : 5d1bf8: 75 05 jne 5d1bff 0.00 : 5d1bfa: e8 d1 78 e9 ff callq 4694d0 0.00 : 5d1bff: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 5d1c04: 89 da mov %ebx,%edx 0.00 : 5d1c06: bf c8 d5 88 00 mov $0x88d5c8,%edi 0.00 : 5d1c0b: 31 c0 xor %eax,%eax 0.00 : 5d1c0d: e8 1e a9 1a 00 callq 77c530 0.00 : 5d1c12: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 5d1c17: 41 89 c4 mov %eax,%r12d 0.00 : 5d1c1a: 31 c0 xor %eax,%eax 0.00 : 5d1c1c: e8 7f ac 1a 00 callq 77c8a0 0.00 : 5d1c21: bf 05 01 00 00 mov $0x105,%edi 0.00 : 5d1c26: 89 c3 mov %eax,%ebx 0.00 : 5d1c28: e8 23 b1 1a 00 callq 77cd50 0.00 : 5d1c2d: 44 89 e2 mov %r12d,%edx 0.00 : 5d1c30: 89 c7 mov %eax,%edi 0.00 : 5d1c32: 89 de mov %ebx,%esi 0.00 : 5d1c34: 31 c0 xor %eax,%eax 0.00 : 5d1c36: e8 a5 89 1a 00 callq 77a5e0 0.00 : 5d1c3b: eb bd jmp 5d1bfa Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/../../../src/include/nodes/pg_list.h:87 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2290 : : } : : /* As above, but use simple pointer equality */ : List * : list_delete_ptr(List *list, void *datum) : { 0.00 : 5e2290: 55 push %rbp : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; /home/Computational/mark/src/postgres-andres/src/backend/nodes/../../../src/include/nodes/pg_list.h:87 100.00 : 5e2291: 48 85 ff test %rdi,%rdi 0.00 : 5e2294: 48 89 f0 mov %rsi,%rax 0.00 : 5e2297: 48 89 e5 mov %rsp,%rbp 0.00 : 5e229a: 74 26 je 5e22c2 0.00 : 5e229c: 48 8b 77 08 mov 0x8(%rdi),%rsi : : Assert(IsPointerList(list)); : check_list_invariants(list); : : prev = NULL; : foreach(cell, list) 0.00 : 5e22a0: 48 85 f6 test %rsi,%rsi 0.00 : 5e22a3: 74 1d je 5e22c2 : { : if (lfirst(cell) == datum) 0.00 : 5e22a5: 31 d2 xor %edx,%edx 0.00 : 5e22a7: 48 39 06 cmp %rax,(%rsi) 0.00 : 5e22aa: 75 09 jne 5e22b5 0.00 : 5e22ac: eb 22 jmp 5e22d0 0.00 : 5e22ae: 66 90 xchg %ax,%ax 0.00 : 5e22b0: 48 39 06 cmp %rax,(%rsi) 0.00 : 5e22b3: 74 1b je 5e22d0 : return list_delete_cell(list, cell, prev); 0.00 : 5e22b5: 48 89 f2 mov %rsi,%rdx : : Assert(IsPointerList(list)); : check_list_invariants(list); : : prev = NULL; : foreach(cell, list) 0.00 : 5e22b8: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 5e22bc: 48 85 f6 test %rsi,%rsi 0.00 : 5e22bf: 90 nop 0.00 : 5e22c0: 75 ee jne 5e22b0 : prev = cell; : } : : /* Didn't find a match: return the list unmodified */ : return list; : } 0.00 : 5e22c2: 48 89 f8 mov %rdi,%rax 0.00 : 5e22c5: c9 leaveq 0.00 : 5e22c6: c3 retq 0.00 : 5e22c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e22ce: 00 00 0.00 : 5e22d0: c9 leaveq : : prev = NULL; : foreach(cell, list) : { : if (lfirst(cell) == datum) : return list_delete_cell(list, cell, prev); 0.00 : 5e22d1: e9 8a fe ff ff jmpq 5e2160 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:162 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2620 : : * This is logical not physical equality; in particular, a NULL pointer will : * be reported as equal to a palloc'd value containing no members. : */ : bool : bms_equal(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e2620: 55 push %rbp : int shortlen; : int longlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) 0.00 : 5e2621: 48 85 ff test %rdi,%rdi : * This is logical not physical equality; in particular, a NULL pointer will : * be reported as equal to a palloc'd value containing no members. : */ : bool : bms_equal(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e2624: 48 89 e5 mov %rsp,%rbp : int shortlen; : int longlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) 0.00 : 5e2627: 0f 84 8b 00 00 00 je 5e26b8 : { : if (b == NULL) : return true; : return bms_is_empty(b); : } : else if (b == NULL) 0.00 : 5e262d: 48 85 f6 test %rsi,%rsi 0.00 : 5e2630: 0f 84 ba 00 00 00 je 5e26f0 : return bms_is_empty(a); : /* Identify shorter and longer input */ : if (a->nwords <= b->nwords) 0.00 : 5e2636: 8b 07 mov (%rdi),%eax 0.00 : 5e2638: 44 8b 06 mov (%rsi),%r8d 0.00 : 5e263b: 49 89 f1 mov %rsi,%r9 0.00 : 5e263e: 44 39 c0 cmp %r8d,%eax 0.00 : 5e2641: 7e 65 jle 5e26a8 : shorter = b; : longer = a; : } : /* And process */ : shortlen = shorter->nwords; : for (i = 0; i < shortlen; i++) 0.00 : 5e2643: 31 f6 xor %esi,%esi 0.00 : 5e2645: 45 85 c0 test %r8d,%r8d 0.00 : 5e2648: 7e 2f jle 5e2679 : { : if (shorter->words[i] != longer->words[i]) 0.00 : 5e264a: 41 8b 41 04 mov 0x4(%r9),%eax 0.00 : 5e264e: 31 f6 xor %esi,%esi 0.00 : 5e2650: 31 c9 xor %ecx,%ecx 0.00 : 5e2652: 3b 47 04 cmp 0x4(%rdi),%eax 0.00 : 5e2655: 74 1a je 5e2671 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:162 100.00 : 5e2657: eb 44 jmp 5e269d 0.00 : 5e2659: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5e2660: 41 8b 54 09 08 mov 0x8(%r9,%rcx,1),%edx 0.00 : 5e2665: 8b 44 0f 08 mov 0x8(%rdi,%rcx,1),%eax 0.00 : 5e2669: 48 83 c1 04 add $0x4,%rcx 0.00 : 5e266d: 39 c2 cmp %eax,%edx 0.00 : 5e266f: 75 2c jne 5e269d : shorter = b; : longer = a; : } : /* And process */ : shortlen = shorter->nwords; : for (i = 0; i < shortlen; i++) 0.00 : 5e2671: 83 c6 01 add $0x1,%esi 0.00 : 5e2674: 41 39 f0 cmp %esi,%r8d 0.00 : 5e2677: 7f e7 jg 5e2660 : { : if (shorter->words[i] != longer->words[i]) : return false; : } : longlen = longer->nwords; 0.00 : 5e2679: 8b 17 mov (%rdi),%edx : for (; i < longlen; i++) 0.00 : 5e267b: 39 f2 cmp %esi,%edx 0.00 : 5e267d: 7f 13 jg 5e2692 0.00 : 5e267f: 90 nop 0.00 : 5e2680: eb 66 jmp 5e26e8 0.00 : 5e2682: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e2688: 83 c6 01 add $0x1,%esi 0.00 : 5e268b: 39 f2 cmp %esi,%edx 0.00 : 5e268d: 0f 1f 00 nopl (%rax) 0.00 : 5e2690: 7e 56 jle 5e26e8 : { : if (longer->words[i] != 0) 0.00 : 5e2692: 48 63 c6 movslq %esi,%rax 0.00 : 5e2695: 8b 44 87 04 mov 0x4(%rdi,%rax,4),%eax 0.00 : 5e2699: 85 c0 test %eax,%eax 0.00 : 5e269b: 74 eb je 5e2688 : { : if (shorter->words[i] != longer->words[i]) : return false; : } : longlen = longer->nwords; : for (; i < longlen; i++) 0.00 : 5e269d: 31 c0 xor %eax,%eax : { : if (longer->words[i] != 0) : return false; : } : return true; : } 0.00 : 5e269f: c9 leaveq 0.00 : 5e26a0: c3 retq 0.00 : 5e26a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return bms_is_empty(b); : } : else if (b == NULL) : return bms_is_empty(a); : /* Identify shorter and longer input */ : if (a->nwords <= b->nwords) 0.00 : 5e26a8: 49 89 f9 mov %rdi,%r9 0.00 : 5e26ab: 41 89 c0 mov %eax,%r8d 0.00 : 5e26ae: 48 89 f7 mov %rsi,%rdi 0.00 : 5e26b1: eb 90 jmp 5e2643 0.00 : 5e26b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) : { : if (b == NULL) 0.00 : 5e26b8: 48 85 f6 test %rsi,%rsi 0.00 : 5e26bb: 74 2b je 5e26e8 : int nwords; : int wordnum; : : if (a == NULL) : return true; : nwords = a->nwords; 0.00 : 5e26bd: 8b 0e mov (%rsi),%ecx : for (wordnum = 0; wordnum < nwords; wordnum++) 0.00 : 5e26bf: 85 c9 test %ecx,%ecx 0.00 : 5e26c1: 7e 25 jle 5e26e8 : { : bitmapword w = a->words[wordnum]; : : if (w != 0) 0.00 : 5e26c3: 8b 7e 04 mov 0x4(%rsi),%edi 0.00 : 5e26c6: 31 d2 xor %edx,%edx 0.00 : 5e26c8: 85 ff test %edi,%edi 0.00 : 5e26ca: 74 0f je 5e26db 0.00 : 5e26cc: eb cf jmp 5e269d 0.00 : 5e26ce: 66 90 xchg %ax,%ax : if (a == NULL) : return true; : nwords = a->nwords; : for (wordnum = 0; wordnum < nwords; wordnum++) : { : bitmapword w = a->words[wordnum]; 0.00 : 5e26d0: 8b 46 08 mov 0x8(%rsi),%eax 0.00 : 5e26d3: 48 83 c6 04 add $0x4,%rsi : : if (w != 0) 0.00 : 5e26d7: 85 c0 test %eax,%eax 0.00 : 5e26d9: 75 c2 jne 5e269d : int wordnum; : : if (a == NULL) : return true; : nwords = a->nwords; : for (wordnum = 0; wordnum < nwords; wordnum++) 0.00 : 5e26db: 83 c2 01 add $0x1,%edx 0.00 : 5e26de: 39 d1 cmp %edx,%ecx 0.00 : 5e26e0: 7f ee jg 5e26d0 0.00 : 5e26e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (shorter->words[i] != longer->words[i]) : return false; : } : longlen = longer->nwords; : for (; i < longlen; i++) 0.00 : 5e26e8: b8 01 00 00 00 mov $0x1,%eax : { : if (longer->words[i] != 0) : return false; : } : return true; : } 0.00 : 5e26ed: c9 leaveq 0.00 : 5e26ee: c3 retq 0.00 : 5e26ef: 90 nop : int nwords; : int wordnum; : : if (a == NULL) : return true; : nwords = a->nwords; 0.00 : 5e26f0: 8b 0f mov (%rdi),%ecx : for (wordnum = 0; wordnum < nwords; wordnum++) 0.00 : 5e26f2: 85 c9 test %ecx,%ecx 0.00 : 5e26f4: 7e f2 jle 5e26e8 : { : bitmapword w = a->words[wordnum]; : : if (w != 0) 0.00 : 5e26f6: 8b 77 04 mov 0x4(%rdi),%esi 0.00 : 5e26f9: 31 d2 xor %edx,%edx 0.00 : 5e26fb: 85 f6 test %esi,%esi 0.00 : 5e26fd: 74 14 je 5e2713 0.00 : 5e26ff: eb 9c jmp 5e269d 0.00 : 5e2701: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (a == NULL) : return true; : nwords = a->nwords; : for (wordnum = 0; wordnum < nwords; wordnum++) : { : bitmapword w = a->words[wordnum]; 0.00 : 5e2708: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5e270b: 48 83 c7 04 add $0x4,%rdi : : if (w != 0) 0.00 : 5e270f: 85 c0 test %eax,%eax 0.00 : 5e2711: 75 8a jne 5e269d : int wordnum; : : if (a == NULL) : return true; : nwords = a->nwords; : for (wordnum = 0; wordnum < nwords; wordnum++) 0.00 : 5e2713: 83 c2 01 add $0x1,%edx 0.00 : 5e2716: 39 d1 cmp %edx,%ecx 0.00 : 5e2718: 7f ee jg 5e2708 0.00 : 5e271a: eb cc jmp 5e26e8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:452 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2980 : : /* : * bms_overlap - do sets overlap (ie, have a nonempty intersection)? : */ : bool : bms_overlap(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e2980: 55 push %rbp : int shortlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL || b == NULL) 0.00 : 5e2981: 48 85 ff test %rdi,%rdi : /* : * bms_overlap - do sets overlap (ie, have a nonempty intersection)? : */ : bool : bms_overlap(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e2984: 48 89 e5 mov %rsp,%rbp : int shortlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL || b == NULL) 0.00 : 5e2987: 74 4f je 5e29d8 0.00 : 5e2989: 48 85 f6 test %rsi,%rsi 0.00 : 5e298c: 74 4a je 5e29d8 : return false; : /* Check words in common */ : shortlen = Min(a->nwords, b->nwords); 0.00 : 5e298e: 8b 06 mov (%rsi),%eax 0.00 : 5e2990: 39 07 cmp %eax,(%rdi) 0.00 : 5e2992: 41 89 c0 mov %eax,%r8d 0.00 : 5e2995: 44 0f 4e 07 cmovle (%rdi),%r8d : for (i = 0; i < shortlen; i++) 0.00 : 5e2999: 45 85 c0 test %r8d,%r8d 0.00 : 5e299c: 7e 3a jle 5e29d8 : { : if ((a->words[i] & b->words[i]) != 0) 0.00 : 5e299e: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5e29a1: 31 c9 xor %ecx,%ecx 0.00 : 5e29a3: 31 d2 xor %edx,%edx 0.00 : 5e29a5: 85 46 04 test %eax,0x4(%rsi) 0.00 : 5e29a8: 74 26 je 5e29d0 0.00 : 5e29aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* Handle cases where either input is NULL */ : if (a == NULL || b == NULL) : return false; : /* Check words in common */ : shortlen = Min(a->nwords, b->nwords); : for (i = 0; i < shortlen; i++) 0.00 : 5e29b0: b8 01 00 00 00 mov $0x1,%eax : { : if ((a->words[i] & b->words[i]) != 0) : return true; : } : return false; : } 0.00 : 5e29b5: c9 leaveq 0.00 : 5e29b6: c3 retq 0.00 : 5e29b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e29be: 00 00 : return false; : /* Check words in common */ : shortlen = Min(a->nwords, b->nwords); : for (i = 0; i < shortlen; i++) : { : if ((a->words[i] & b->words[i]) != 0) 0.00 : 5e29c0: 8b 44 16 08 mov 0x8(%rsi,%rdx,1),%eax 0.00 : 5e29c4: 23 44 17 08 and 0x8(%rdi,%rdx,1),%eax 0.00 : 5e29c8: 48 83 c2 04 add $0x4,%rdx 0.00 : 5e29cc: 85 c0 test %eax,%eax 0.00 : 5e29ce: 75 e0 jne 5e29b0 : /* Handle cases where either input is NULL */ : if (a == NULL || b == NULL) : return false; : /* Check words in common */ : shortlen = Min(a->nwords, b->nwords); : for (i = 0; i < shortlen; i++) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:452 100.00 : 5e29d0: 83 c1 01 add $0x1,%ecx 0.00 : 5e29d3: 41 39 c8 cmp %ecx,%r8d 0.00 : 5e29d6: 7f e8 jg 5e29c0 0.00 : 5e29d8: 31 c0 xor %eax,%eax : { : if ((a->words[i] & b->words[i]) != 0) : return true; : } : return false; : } 0.00 : 5e29da: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:590 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2b50 : : * : * This is even faster than bms_membership(). : */ : bool : bms_is_empty(const Bitmapset *a) : { /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:590 100.00 : 5e2b50: 55 push %rbp : int nwords; : int wordnum; : : if (a == NULL) 0.00 : 5e2b51: 48 85 ff test %rdi,%rdi : * : * This is even faster than bms_membership(). : */ : bool : bms_is_empty(const Bitmapset *a) : { 0.00 : 5e2b54: 48 89 e5 mov %rsp,%rbp : int nwords; : int wordnum; : : if (a == NULL) 0.00 : 5e2b57: 74 29 je 5e2b82 : return true; : nwords = a->nwords; 0.00 : 5e2b59: 8b 0f mov (%rdi),%ecx : for (wordnum = 0; wordnum < nwords; wordnum++) 0.00 : 5e2b5b: 85 c9 test %ecx,%ecx 0.00 : 5e2b5d: 7e 23 jle 5e2b82 : { : bitmapword w = a->words[wordnum]; : : if (w != 0) 0.00 : 5e2b5f: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 5e2b62: 31 d2 xor %edx,%edx 0.00 : 5e2b64: 85 c0 test %eax,%eax 0.00 : 5e2b66: 74 13 je 5e2b7b 0.00 : 5e2b68: eb 26 jmp 5e2b90 0.00 : 5e2b6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (a == NULL) : return true; : nwords = a->nwords; : for (wordnum = 0; wordnum < nwords; wordnum++) : { : bitmapword w = a->words[wordnum]; 0.00 : 5e2b70: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 5e2b73: 48 83 c7 04 add $0x4,%rdi : : if (w != 0) 0.00 : 5e2b77: 85 c0 test %eax,%eax 0.00 : 5e2b79: 75 15 jne 5e2b90 : int wordnum; : : if (a == NULL) : return true; : nwords = a->nwords; : for (wordnum = 0; wordnum < nwords; wordnum++) 0.00 : 5e2b7b: 83 c2 01 add $0x1,%edx 0.00 : 5e2b7e: 39 d1 cmp %edx,%ecx 0.00 : 5e2b80: 7f ee jg 5e2b70 0.00 : 5e2b82: b8 01 00 00 00 mov $0x1,%eax : : if (w != 0) : return false; : } : return true; : } 0.00 : 5e2b87: c9 leaveq 0.00 : 5e2b88: c3 retq 0.00 : 5e2b89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : int wordnum; : : if (a == NULL) : return true; : nwords = a->nwords; : for (wordnum = 0; wordnum < nwords; wordnum++) 0.00 : 5e2b90: 31 c0 xor %eax,%eax : : if (w != 0) : return false; : } : return true; : } 0.00 : 5e2b92: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:214 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3a10 : : * Actually create the hashtable. Since this is a moderately expensive : * proposition, we don't do it until we have to. : */ : static void : tbm_create_pagetable(TIDBitmap *tbm) : { 0.00 : 5e3a10: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:214 100.00 : 5e3a11: 48 89 e5 mov %rsp,%rbp 0.00 : 5e3a14: 41 54 push %r12 0.00 : 5e3a16: 49 89 fc mov %rdi,%r12 : : Assert(tbm->status != TBM_HASH); : Assert(tbm->pagetable == NULL); : : /* Create the hashtable proper */ : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 5e3a19: 48 8d 55 80 lea -0x80(%rbp),%rdx : * Actually create the hashtable. Since this is a moderately expensive : * proposition, we don't do it until we have to. : */ : static void : tbm_create_pagetable(TIDBitmap *tbm) : { 0.00 : 5e3a1d: 53 push %rbx : : Assert(tbm->status != TBM_HASH); : Assert(tbm->pagetable == NULL); : : /* Create the hashtable proper */ : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 5e3a1e: 48 8d 4a 68 lea 0x68(%rdx),%rcx : * Actually create the hashtable. Since this is a moderately expensive : * proposition, we don't do it until we have to. : */ : static void : tbm_create_pagetable(TIDBitmap *tbm) : { 0.00 : 5e3a22: 48 83 ec 70 sub $0x70,%rsp : : Assert(tbm->status != TBM_HASH); : Assert(tbm->pagetable == NULL); : : /* Create the hashtable proper */ : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 5e3a26: 48 39 d1 cmp %rdx,%rcx 0.00 : 5e3a29: 76 15 jbe 5e3a40 0.00 : 5e3a2b: 48 89 d0 mov %rdx,%rax 0.00 : 5e3a2e: 66 90 xchg %ax,%ax 0.00 : 5e3a30: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 5e3a37: 48 83 c0 08 add $0x8,%rax 0.00 : 5e3a3b: 48 39 c1 cmp %rax,%rcx 0.00 : 5e3a3e: 75 f0 jne 5e3a30 : hash_ctl.keysize = sizeof(BlockNumber); : hash_ctl.entrysize = sizeof(PagetableEntry); : hash_ctl.hash = tag_hash; : hash_ctl.hcxt = tbm->mcxt; 0.00 : 5e3a40: 49 8b 44 24 08 mov 0x8(%r12),%rax : tbm->pagetable = hash_create("TIDBitmap", 0.00 : 5e3a45: b9 30 02 00 00 mov $0x230,%ecx 0.00 : 5e3a4a: be 80 00 00 00 mov $0x80,%esi 0.00 : 5e3a4f: bf cf 24 89 00 mov $0x8924cf,%edi : Assert(tbm->status != TBM_HASH); : Assert(tbm->pagetable == NULL); : : /* Create the hashtable proper */ : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); : hash_ctl.keysize = sizeof(BlockNumber); 0.00 : 5e3a54: 48 c7 45 a8 04 00 00 movq $0x4,-0x58(%rbp) 0.00 : 5e3a5b: 00 : hash_ctl.entrysize = sizeof(PagetableEntry); 0.00 : 5e3a5c: 48 c7 45 b0 30 00 00 movq $0x30,-0x50(%rbp) 0.00 : 5e3a63: 00 : hash_ctl.hash = tag_hash; 0.00 : 5e3a64: 48 c7 45 b8 60 4f 78 movq $0x784f60,-0x48(%rbp) 0.00 : 5e3a6b: 00 : hash_ctl.hcxt = tbm->mcxt; 0.00 : 5e3a6c: 48 89 45 d8 mov %rax,-0x28(%rbp) : tbm->pagetable = hash_create("TIDBitmap", 0.00 : 5e3a70: e8 3b 0e 1a 00 callq 7848b0 : 128, /* start small and extend */ : &hash_ctl, : HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT); : : /* If entry1 is valid, push it into the hashtable */ : if (tbm->status == TBM_ONE_PAGE) 0.00 : 5e3a75: 41 83 7c 24 10 01 cmpl $0x1,0x10(%r12) : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); : hash_ctl.keysize = sizeof(BlockNumber); : hash_ctl.entrysize = sizeof(PagetableEntry); : hash_ctl.hash = tag_hash; : hash_ctl.hcxt = tbm->mcxt; : tbm->pagetable = hash_create("TIDBitmap", 0.00 : 5e3a7b: 49 89 44 24 18 mov %rax,0x18(%r12) : 128, /* start small and extend */ : &hash_ctl, : HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT); : : /* If entry1 is valid, push it into the hashtable */ : if (tbm->status == TBM_ONE_PAGE) 0.00 : 5e3a80: 74 16 je 5e3a98 : HASH_ENTER, &found); : Assert(!found); : memcpy(page, &tbm->entry1, sizeof(PagetableEntry)); : } : : tbm->status = TBM_HASH; 0.00 : 5e3a82: 41 c7 44 24 10 02 00 movl $0x2,0x10(%r12) 0.00 : 5e3a89: 00 00 : } 0.00 : 5e3a8b: 48 83 c4 70 add $0x70,%rsp 0.00 : 5e3a8f: 5b pop %rbx 0.00 : 5e3a90: 41 5c pop %r12 0.00 : 5e3a92: c9 leaveq 0.00 : 5e3a93: c3 retq 0.00 : 5e3a94: 0f 1f 40 00 nopl 0x0(%rax) : if (tbm->status == TBM_ONE_PAGE) : { : PagetableEntry *page; : bool found; : : page = (PagetableEntry *) hash_search(tbm->pagetable, 0.00 : 5e3a98: 49 8d 5c 24 34 lea 0x34(%r12),%rbx 0.00 : 5e3a9d: 48 8d 4d ef lea -0x11(%rbp),%rcx 0.00 : 5e3aa1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5e3aa6: 48 89 c7 mov %rax,%rdi 0.00 : 5e3aa9: 48 89 de mov %rbx,%rsi 0.00 : 5e3aac: e8 ef 0b 1a 00 callq 7846a0 : (void *) &tbm->entry1.blockno, : HASH_ENTER, &found); : Assert(!found); : memcpy(page, &tbm->entry1, sizeof(PagetableEntry)); 0.00 : 5e3ab1: 49 8b 54 24 34 mov 0x34(%r12),%rdx 0.00 : 5e3ab6: 48 89 10 mov %rdx,(%rax) 0.00 : 5e3ab9: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 5e3abd: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 5e3ac1: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 5e3ac5: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 5e3ac9: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 5e3acd: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 5e3ad1: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 5e3ad5: 48 89 50 20 mov %rdx,0x20(%rax) 0.00 : 5e3ad9: 48 8b 53 28 mov 0x28(%rbx),%rdx 0.00 : 5e3add: 48 89 50 28 mov %rdx,0x28(%rax) 0.00 : 5e3ae1: eb 9f jmp 5e3a82 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/joinrels.c:1019 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000610c80 : : * when working with outer joins, or with IN or EXISTS clauses that have been : * turned into joins. : */ : RelOptInfo * : make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2) : { 0.00 : 610c80: 55 push %rbp 0.00 : 610c81: 48 89 e5 mov %rsp,%rbp 0.00 : 610c84: 41 57 push %r15 0.00 : 610c86: 41 56 push %r14 0.00 : 610c88: 49 89 fe mov %rdi,%r14 0.00 : 610c8b: 41 55 push %r13 0.00 : 610c8d: 41 54 push %r12 0.00 : 610c8f: 49 89 d4 mov %rdx,%r12 0.00 : 610c92: 53 push %rbx 0.00 : 610c93: 48 89 f3 mov %rsi,%rbx 0.00 : 610c96: 48 83 ec 68 sub $0x68,%rsp : : /* We should never try to join two overlapping sets of rels. */ : Assert(!bms_overlap(rel1->relids, rel2->relids)); : : /* Construct Relids set that identifies the joinrel. */ : joinrelids = bms_union(rel1->relids, rel2->relids); 0.00 : 610c9a: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : 610c9e: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 610ca2: e8 19 26 fd ff callq 5e32c0 : : /* Check validity and determine join type. */ : if (!join_is_legal(root, rel1, rel2, joinrelids, 0.00 : 610ca7: 4c 8d 4d cf lea -0x31(%rbp),%r9 0.00 : 610cab: 4c 8d 45 c0 lea -0x40(%rbp),%r8 0.00 : 610caf: 48 89 c1 mov %rax,%rcx 0.00 : 610cb2: 4c 89 e2 mov %r12,%rdx 0.00 : 610cb5: 48 89 de mov %rbx,%rsi 0.00 : 610cb8: 4c 89 f7 mov %r14,%rdi : : /* We should never try to join two overlapping sets of rels. */ : Assert(!bms_overlap(rel1->relids, rel2->relids)); : : /* Construct Relids set that identifies the joinrel. */ : joinrelids = bms_union(rel1->relids, rel2->relids); 0.00 : 610cbb: 49 89 c7 mov %rax,%r15 : : /* Check validity and determine join type. */ : if (!join_is_legal(root, rel1, rel2, joinrelids, 0.00 : 610cbe: e8 5d f8 ff ff callq 610520 0.00 : 610cc3: 84 c0 test %al,%al 0.00 : 610cc5: 0f 84 62 07 00 00 je 61142d : bms_free(joinrelids); : return NULL; : } : : /* Swap rels if needed to match the join info. */ : if (reversed) 0.00 : 610ccb: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 610ccf: 75 7f jne 610d50 : /* : * If it's a plain inner join, then we won't have found anything in : * join_info_list. Make up a SpecialJoinInfo so that selectivity : * estimation functions will know what's being joined. : */ : if (sjinfo == NULL) 0.00 : 610cd1: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 610cd6: 0f 84 88 00 00 00 je 610d64 : : /* : * Find or build the join RelOptInfo, and compute the restrictlist that : * goes with this particular joining. : */ : joinrel = build_join_rel(root, joinrelids, rel1, rel2, sjinfo, 0.00 : 610cdc: 4c 8b 45 c0 mov -0x40(%rbp),%r8 0.00 : 610ce0: 4c 8d 4d b8 lea -0x48(%rbp),%r9 0.00 : 610ce4: 4c 89 e1 mov %r12,%rcx 0.00 : 610ce7: 48 89 da mov %rbx,%rdx 0.00 : 610cea: 4c 89 fe mov %r15,%rsi 0.00 : 610ced: 4c 89 f7 mov %r14,%rdi 0.00 : 610cf0: e8 9b 52 02 00 callq 635f90 0.00 : 610cf5: 49 89 c5 mov %rax,%r13 : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 610cf8: 48 8b 40 40 mov 0x40(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/joinrels.c:1019 100.00 : 610cfc: 48 85 c0 test %rax,%rax 0.00 : 610cff: 74 0c je 610d0d 0.00 : 610d01: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 610d07: 0f 84 bb 00 00 00 je 610dc8 : * will join so we can treat the inner rel as dummy. : * : * We need only consider the jointypes that appear in join_info_list, plus : * JOIN_INNER. : */ : switch (sjinfo->jointype) 0.00 : 610d0d: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 610d11: 41 83 79 28 05 cmpl $0x5,0x28(%r9) 0.00 : 610d16: 0f 86 9c 00 00 00 jbe 610db8 : JOIN_ANTI, sjinfo, : restrictlist); : break; : default: : /* other values not expected here */ : elog(ERROR, "unrecognized join type: %d", (int) sjinfo->jointype); 0.00 : 610d1c: ba 20 aa 89 00 mov $0x89aa20,%edx 0.00 : 610d21: be 14 03 00 00 mov $0x314,%esi 0.00 : 610d26: bf 85 a9 89 00 mov $0x89a985,%edi 0.00 : 610d2b: e8 f0 a6 16 00 callq 77b420 0.00 : 610d30: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 610d34: be 39 17 87 00 mov $0x871739,%esi 0.00 : 610d39: bf 14 00 00 00 mov $0x14,%edi 0.00 : 610d3e: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 610d41: 31 c0 xor %eax,%eax 0.00 : 610d43: e8 e8 a4 16 00 callq 77b230 0.00 : 610d48: e8 83 87 e5 ff callq 4694d0 0.00 : 610d4d: 0f 1f 00 nopl (%rax) : /* : * If it's a plain inner join, then we won't have found anything in : * join_info_list. Make up a SpecialJoinInfo so that selectivity : * estimation functions will know what's being joined. : */ : if (sjinfo == NULL) 0.00 : 610d50: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) : bms_free(joinrelids); : return NULL; : } : : /* Swap rels if needed to match the join info. */ : if (reversed) 0.00 : 610d55: 4c 89 e6 mov %r12,%rsi 0.00 : 610d58: 49 89 dc mov %rbx,%r12 0.00 : 610d5b: 48 89 f3 mov %rsi,%rbx : /* : * If it's a plain inner join, then we won't have found anything in : * join_info_list. Make up a SpecialJoinInfo so that selectivity : * estimation functions will know what's being joined. : */ : if (sjinfo == NULL) 0.00 : 610d5e: 0f 85 78 ff ff ff jne 610cdc : { : sjinfo = &sjinfo_data; 0.00 : 610d64: 48 8d 45 80 lea -0x80(%rbp),%rax : sjinfo->type = T_SpecialJoinInfo; 0.00 : 610d68: c7 45 80 0d 02 00 00 movl $0x20d,-0x80(%rbp) : * join_info_list. Make up a SpecialJoinInfo so that selectivity : * estimation functions will know what's being joined. : */ : if (sjinfo == NULL) : { : sjinfo = &sjinfo_data; 0.00 : 610d6f: 48 89 45 c0 mov %rax,-0x40(%rbp) : sjinfo->type = T_SpecialJoinInfo; : sjinfo->min_lefthand = rel1->relids; 0.00 : 610d73: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 610d77: 48 89 45 88 mov %rax,-0x78(%rbp) : sjinfo->min_righthand = rel2->relids; 0.00 : 610d7b: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 610d80: 48 89 45 90 mov %rax,-0x70(%rbp) : sjinfo->syn_lefthand = rel1->relids; 0.00 : 610d84: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 610d88: 48 89 45 98 mov %rax,-0x68(%rbp) : sjinfo->syn_righthand = rel2->relids; 0.00 : 610d8c: 49 8b 44 24 08 mov 0x8(%r12),%rax : sjinfo->jointype = JOIN_INNER; 0.00 : 610d91: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%rbp) : /* we don't bother trying to make the remaining fields valid */ : sjinfo->lhs_strict = false; 0.00 : 610d98: c6 45 ac 00 movb $0x0,-0x54(%rbp) : sjinfo->delay_upper_joins = false; 0.00 : 610d9c: c6 45 ad 00 movb $0x0,-0x53(%rbp) : sjinfo->join_quals = NIL; 0.00 : 610da0: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 610da7: 00 : sjinfo = &sjinfo_data; : sjinfo->type = T_SpecialJoinInfo; : sjinfo->min_lefthand = rel1->relids; : sjinfo->min_righthand = rel2->relids; : sjinfo->syn_lefthand = rel1->relids; : sjinfo->syn_righthand = rel2->relids; 0.00 : 610da8: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 610dac: e9 2b ff ff ff jmpq 610cdc 0.00 : 610db1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * will join so we can treat the inner rel as dummy. : * : * We need only consider the jointypes that appear in join_info_list, plus : * JOIN_INNER. : */ : switch (sjinfo->jointype) 0.00 : 610db8: 41 8b 41 28 mov 0x28(%r9),%eax 0.00 : 610dbc: ff 24 c5 f0 a9 89 00 jmpq *0x89a9f0(,%rax,8) 0.00 : 610dc3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 610dc8: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 610dcd: 0f 85 3a ff ff ff jne 610d0d 0.00 : 610dd3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* other values not expected here */ : elog(ERROR, "unrecognized join type: %d", (int) sjinfo->jointype); : break; : } : : bms_free(joinrelids); 0.00 : 610dd8: 4c 89 ff mov %r15,%rdi 0.00 : 610ddb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 610de0: e8 cb 1f fd ff callq 5e2db0 : : return joinrel; : } 0.00 : 610de5: 48 83 c4 68 add $0x68,%rsp 0.00 : 610de9: 4c 89 e8 mov %r13,%rax 0.00 : 610dec: 5b pop %rbx 0.00 : 610ded: 41 5c pop %r12 0.00 : 610def: 41 5d pop %r13 0.00 : 610df1: 41 5e pop %r14 0.00 : 610df3: 41 5f pop %r15 0.00 : 610df5: c9 leaveq 0.00 : 610df6: c3 retq 0.00 : 610df7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 610dfe: 00 00 : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 610e00: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 610e04: 48 85 c0 test %rax,%rax 0.00 : 610e07: 74 0c je 610e15 0.00 : 610e09: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 610e0f: 0f 84 03 06 00 00 je 611418 : JOIN_UNIQUE_OUTER, sjinfo, : restrictlist); : } : break; : case JOIN_ANTI: : if (is_dummy_rel(rel1) || 0.00 : 610e15: 48 8b 75 b8 mov -0x48(%rbp),%rsi : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 610e19: 48 85 f6 test %rsi,%rsi 0.00 : 610e1c: 0f 84 be 04 00 00 je 6112e0 0.00 : 610e22: 48 8b 46 08 mov 0x8(%rsi),%rax : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 610e26: 48 85 c0 test %rax,%rax 0.00 : 610e29: 48 89 c1 mov %rax,%rcx 0.00 : 610e2c: 75 17 jne 610e45 0.00 : 610e2e: e9 4d 04 00 00 jmpq 611280 0.00 : 610e33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 610e38: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 610e3c: 48 85 c9 test %rcx,%rcx 0.00 : 610e3f: 0f 84 3b 04 00 00 je 611280 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 610e45: 48 8b 11 mov (%rcx),%rdx : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) 0.00 : 610e48: 80 7a 10 00 cmpb $0x0,0x10(%rdx) 0.00 : 610e4c: 74 ea je 610e38 : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 610e4e: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 610e52: 48 85 d2 test %rdx,%rdx 0.00 : 610e55: 74 e1 je 610e38 0.00 : 610e57: 81 3a 30 01 00 00 cmpl $0x130,(%rdx) 0.00 : 610e5d: 75 d9 jne 610e38 : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 610e5f: 80 7a 20 00 cmpb $0x0,0x20(%rdx) 0.00 : 610e63: 75 0b jne 610e70 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 610e65: 80 7a 18 00 cmpb $0x0,0x18(%rdx) 0.00 : 610e69: 75 cd jne 610e38 0.00 : 610e6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : break; : case JOIN_ANTI: : if (is_dummy_rel(rel1) || : restriction_is_constant_false(restrictlist, true)) : { : mark_dummy_rel(joinrel); 0.00 : 610e70: 4c 89 ef mov %r13,%rdi 0.00 : 610e73: e8 88 fd ff ff callq 610c00 : break; 0.00 : 610e78: e9 5b ff ff ff jmpq 610dd8 0.00 : 610e7d: 0f 1f 00 nopl (%rax) : * We might have a normal semijoin, or a case where we don't have : * enough rels to do the semijoin but can unique-ify the RHS and : * then do an innerjoin (see comments in join_is_legal). In the : * latter case we can't apply JOIN_SEMI joining. : */ : if (bms_is_subset(sjinfo->min_lefthand, rel1->relids) && 0.00 : 610e80: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 610e84: 49 8b 79 08 mov 0x8(%r9),%rdi 0.00 : 610e88: e8 93 18 fd ff callq 5e2720 0.00 : 610e8d: 84 c0 test %al,%al 0.00 : 610e8f: 90 nop 0.00 : 610e90: 0f 84 72 02 00 00 je 611108 0.00 : 610e96: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 610e9a: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 610e9f: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 610ea3: e8 78 18 fd ff callq 5e2720 0.00 : 610ea8: 84 c0 test %al,%al 0.00 : 610eaa: 0f 84 58 02 00 00 je 611108 : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 610eb0: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 610eb4: 48 85 c0 test %rax,%rax 0.00 : 610eb7: 74 0d je 610ec6 0.00 : 610eb9: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 610ebf: 90 nop 0.00 : 610ec0: 0f 84 77 05 00 00 je 61143d 0.00 : 610ec6: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 610ecb: 48 85 c0 test %rax,%rax 0.00 : 610ece: 74 0c je 610edc 0.00 : 610ed0: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 610ed6: 0f 84 c7 05 00 00 je 6114a3 : * latter case we can't apply JOIN_SEMI joining. : */ : if (bms_is_subset(sjinfo->min_lefthand, rel1->relids) && : bms_is_subset(sjinfo->min_righthand, rel2->relids)) : { : if (is_dummy_rel(rel1) || is_dummy_rel(rel2) || 0.00 : 610edc: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 610ee0: 48 85 c9 test %rcx,%rcx 0.00 : 610ee3: 0f 84 f9 01 00 00 je 6110e2 0.00 : 610ee9: 48 8b 51 08 mov 0x8(%rcx),%rdx : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 610eed: 48 85 d2 test %rdx,%rdx 0.00 : 610ef0: 75 1b jne 610f0d 0.00 : 610ef2: e9 eb 01 00 00 jmpq 6110e2 0.00 : 610ef7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 610efe: 00 00 0.00 : 610f00: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 610f04: 48 85 d2 test %rdx,%rdx 0.00 : 610f07: 0f 84 d5 01 00 00 je 6110e2 : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 610f0d: 48 8b 02 mov (%rdx),%rax 0.00 : 610f10: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 610f14: 48 85 c0 test %rax,%rax 0.00 : 610f17: 74 e7 je 610f00 0.00 : 610f19: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 610f1f: 75 df jne 610f00 : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 610f21: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 610f25: 0f 85 45 ff ff ff jne 610e70 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 610f2b: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 610f2f: 90 nop 0.00 : 610f30: 75 ce jne 610f00 0.00 : 610f32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 610f38: e9 33 ff ff ff jmpq 610e70 0.00 : 610f3d: 0f 1f 00 nopl (%rax) : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 610f40: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 610f44: 48 85 c0 test %rax,%rax 0.00 : 610f47: 74 0d je 610f56 0.00 : 610f49: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 610f4f: 90 nop 0.00 : 610f50: 0f 84 82 04 00 00 je 6113d8 : add_paths_to_joinrel(root, joinrel, rel2, rel1, : JOIN_RIGHT, sjinfo, : restrictlist); : break; : case JOIN_FULL: : if ((is_dummy_rel(rel1) && is_dummy_rel(rel2)) || 0.00 : 610f56: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 610f5a: 48 85 c9 test %rcx,%rcx 0.00 : 610f5d: 0f 84 6d 02 00 00 je 6111d0 0.00 : 610f63: 48 8b 51 08 mov 0x8(%rcx),%rdx : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 610f67: 48 85 d2 test %rdx,%rdx 0.00 : 610f6a: 75 1a jne 610f86 0.00 : 610f6c: e9 5f 02 00 00 jmpq 6111d0 0.00 : 610f71: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 610f78: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 610f7c: 48 85 d2 test %rdx,%rdx 0.00 : 610f7f: 90 nop 0.00 : 610f80: 0f 84 4a 02 00 00 je 6111d0 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 610f86: 48 8b 02 mov (%rdx),%rax : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) 0.00 : 610f89: 80 78 10 00 cmpb $0x0,0x10(%rax) 0.00 : 610f8d: 0f 1f 00 nopl (%rax) 0.00 : 610f90: 74 e6 je 610f78 : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 610f92: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 610f96: 48 85 c0 test %rax,%rax 0.00 : 610f99: 74 dd je 610f78 0.00 : 610f9b: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 610fa1: 75 d5 jne 610f78 : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 610fa3: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 610fa7: 0f 85 c3 fe ff ff jne 610e70 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 610fad: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 610fb1: 75 c5 jne 610f78 0.00 : 610fb3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 610fb8: e9 b3 fe ff ff jmpq 610e70 0.00 : 610fbd: 0f 1f 00 nopl (%rax) : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 610fc0: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 610fc4: 48 85 c0 test %rax,%rax 0.00 : 610fc7: 74 0d je 610fd6 0.00 : 610fc9: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 610fcf: 90 nop 0.00 : 610fd0: 0f 84 ea 03 00 00 je 6113c0 : add_paths_to_joinrel(root, joinrel, rel2, rel1, : JOIN_INNER, sjinfo, : restrictlist); : break; : case JOIN_LEFT: : if (is_dummy_rel(rel1) || 0.00 : 610fd6: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 610fda: 48 85 f6 test %rsi,%rsi 0.00 : 610fdd: 0f 84 7d 03 00 00 je 611360 0.00 : 610fe3: 48 8b 46 08 mov 0x8(%rsi),%rax : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 610fe7: 48 85 c0 test %rax,%rax 0.00 : 610fea: 48 89 c1 mov %rax,%rcx 0.00 : 610fed: 75 16 jne 611005 0.00 : 610fef: e9 0c 03 00 00 jmpq 611300 0.00 : 610ff4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 610ff8: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 610ffc: 48 85 c9 test %rcx,%rcx 0.00 : 610fff: 0f 84 fb 02 00 00 je 611300 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 611005: 48 8b 11 mov (%rcx),%rdx : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) 0.00 : 611008: 80 7a 10 00 cmpb $0x0,0x10(%rdx) 0.00 : 61100c: 74 ea je 610ff8 : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 61100e: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 611012: 48 85 d2 test %rdx,%rdx 0.00 : 611015: 74 e1 je 610ff8 0.00 : 611017: 81 3a 30 01 00 00 cmpl $0x130,(%rdx) 0.00 : 61101d: 75 d9 jne 610ff8 : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 61101f: 80 7a 20 00 cmpb $0x0,0x20(%rdx) 0.00 : 611023: 0f 85 47 fe ff ff jne 610e70 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 611029: 80 7a 18 00 cmpb $0x0,0x18(%rdx) 0.00 : 61102d: 0f 1f 00 nopl (%rax) 0.00 : 611030: 75 c6 jne 610ff8 0.00 : 611032: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 611038: e9 33 fe ff ff jmpq 610e70 0.00 : 61103d: 0f 1f 00 nopl (%rax) : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 611040: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 611044: 48 85 c0 test %rax,%rax 0.00 : 611047: 74 0d je 611056 0.00 : 611049: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 61104f: 90 nop 0.00 : 611050: 0f 84 52 03 00 00 je 6113a8 0.00 : 611056: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 61105b: 48 85 c0 test %rax,%rax 0.00 : 61105e: 74 0c je 61106c 0.00 : 611060: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 611066: 0f 84 fc 01 00 00 je 611268 : * JOIN_INNER. : */ : switch (sjinfo->jointype) : { : case JOIN_INNER: : if (is_dummy_rel(rel1) || is_dummy_rel(rel2) || 0.00 : 61106c: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 611070: 48 85 c9 test %rcx,%rcx 0.00 : 611073: 74 0b je 611080 0.00 : 611075: 48 8b 51 08 mov 0x8(%rcx),%rdx : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 611079: 48 85 d2 test %rdx,%rdx 0.00 : 61107c: 75 4b jne 6110c9 0.00 : 61107e: 66 90 xchg %ax,%ax : restriction_is_constant_false(restrictlist, false)) : { : mark_dummy_rel(joinrel); : break; : } : add_paths_to_joinrel(root, joinrel, rel1, rel2, 0.00 : 611080: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 611084: 45 31 c0 xor %r8d,%r8d 0.00 : 611087: 4c 89 e1 mov %r12,%rcx 0.00 : 61108a: 48 89 da mov %rbx,%rdx 0.00 : 61108d: 4c 89 ee mov %r13,%rsi 0.00 : 611090: 4c 89 f7 mov %r14,%rdi 0.00 : 611093: e8 a8 e0 ff ff callq 60f140 : JOIN_INNER, sjinfo, : restrictlist); : add_paths_to_joinrel(root, joinrel, rel2, rel1, 0.00 : 611098: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 61109c: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 6110a0: 45 31 c0 xor %r8d,%r8d 0.00 : 6110a3: 48 89 04 24 mov %rax,(%rsp) 0.00 : 6110a7: e9 e1 02 00 00 jmpq 61138d : if (rinfo->clause && IsA(rinfo->clause, Const)) : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 6110ac: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 6110b0: 0f 85 ba fd ff ff jne 610e70 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 6110b6: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 6110ba: 0f 84 b0 fd ff ff je 610e70 : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 6110c0: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 6110c4: 48 85 d2 test %rdx,%rdx 0.00 : 6110c7: 74 b7 je 611080 : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 6110c9: 48 8b 02 mov (%rdx),%rax 0.00 : 6110cc: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 6110d0: 48 85 c0 test %rax,%rax 0.00 : 6110d3: 74 eb je 6110c0 0.00 : 6110d5: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 6110db: 75 e3 jne 6110c0 0.00 : 6110dd: 0f 1f 00 nopl (%rax) 0.00 : 6110e0: eb ca jmp 6110ac : restriction_is_constant_false(restrictlist, false)) : { : mark_dummy_rel(joinrel); : break; : } : add_paths_to_joinrel(root, joinrel, rel1, rel2, 0.00 : 6110e2: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 6110e6: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6110ea: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : 6110f0: 4c 89 e1 mov %r12,%rcx 0.00 : 6110f3: 48 89 da mov %rbx,%rdx 0.00 : 6110f6: 4c 89 ee mov %r13,%rsi 0.00 : 6110f9: 4c 89 f7 mov %r14,%rdi 0.00 : 6110fc: e8 3f e0 ff ff callq 60f140 0.00 : 611101: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * it and then doing a regular join. (The create_unique_path : * check here is probably redundant with what join_is_legal did, : * but if so the check is cheap because it's cached. So test : * anyway to be sure.) : */ : if (bms_equal(sjinfo->syn_righthand, rel2->relids) && 0.00 : 611108: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 61110c: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 611111: 48 8b 78 20 mov 0x20(%rax),%rdi 0.00 : 611115: e8 06 15 fd ff callq 5e2620 0.00 : 61111a: 84 c0 test %al,%al 0.00 : 61111c: 0f 84 b6 fc ff ff je 610dd8 0.00 : 611122: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 611126: 49 8b 54 24 40 mov 0x40(%r12),%rdx 0.00 : 61112b: 4c 89 e6 mov %r12,%rsi 0.00 : 61112e: 4c 89 f7 mov %r14,%rdi 0.00 : 611131: e8 6a f6 01 00 callq 6307a0 0.00 : 611136: 48 85 c0 test %rax,%rax 0.00 : 611139: 0f 84 99 fc ff ff je 610dd8 : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 61113f: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 611143: 48 85 c0 test %rax,%rax 0.00 : 611146: 74 0e je 611156 0.00 : 611148: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 61114e: 66 90 xchg %ax,%ax 0.00 : 611150: 0f 84 ff 02 00 00 je 611455 0.00 : 611156: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 61115b: 48 85 c0 test %rax,%rax 0.00 : 61115e: 74 0c je 61116c 0.00 : 611160: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 611166: 0f 84 47 03 00 00 je 6114b3 : */ : if (bms_equal(sjinfo->syn_righthand, rel2->relids) && : create_unique_path(root, rel2, rel2->cheapest_total_path, : sjinfo) != NULL) : { : if (is_dummy_rel(rel1) || is_dummy_rel(rel2) || 0.00 : 61116c: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 611170: 48 85 c9 test %rcx,%rcx 0.00 : 611173: 0f 84 f4 02 00 00 je 61146d 0.00 : 611179: 48 8b 51 08 mov 0x8(%rcx),%rdx : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 61117d: 48 85 d2 test %rdx,%rdx 0.00 : 611180: 75 1b jne 61119d 0.00 : 611182: e9 e6 02 00 00 jmpq 61146d 0.00 : 611187: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61118e: 00 00 0.00 : 611190: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 611194: 48 85 d2 test %rdx,%rdx 0.00 : 611197: 0f 84 d0 02 00 00 je 61146d : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 61119d: 48 8b 02 mov (%rdx),%rax 0.00 : 6111a0: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 6111a4: 48 85 c0 test %rax,%rax 0.00 : 6111a7: 74 e7 je 611190 0.00 : 6111a9: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 6111af: 75 df jne 611190 : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 6111b1: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 6111b5: 0f 85 b5 fc ff ff jne 610e70 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 6111bb: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 6111bf: 90 nop 0.00 : 6111c0: 75 ce jne 611190 0.00 : 6111c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6111c8: e9 a3 fc ff ff jmpq 610e70 0.00 : 6111cd: 0f 1f 00 nopl (%rax) : restriction_is_constant_false(restrictlist, true)) : { : mark_dummy_rel(joinrel); : break; : } : add_paths_to_joinrel(root, joinrel, rel1, rel2, 0.00 : 6111d0: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6111d4: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 6111da: 4c 89 e1 mov %r12,%rcx 0.00 : 6111dd: 48 89 da mov %rbx,%rdx 0.00 : 6111e0: 4c 89 ee mov %r13,%rsi 0.00 : 6111e3: 4c 89 f7 mov %r14,%rdi 0.00 : 6111e6: e8 55 df ff ff callq 60f140 : JOIN_FULL, sjinfo, : restrictlist); : add_paths_to_joinrel(root, joinrel, rel2, rel1, 0.00 : 6111eb: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6111ef: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 6111f3: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 6111f9: 48 89 d9 mov %rbx,%rcx 0.00 : 6111fc: 4c 89 e2 mov %r12,%rdx 0.00 : 6111ff: 4c 89 ee mov %r13,%rsi 0.00 : 611202: 4c 89 f7 mov %r14,%rdi 0.00 : 611205: 48 89 04 24 mov %rax,(%rsp) 0.00 : 611209: e8 32 df ff ff callq 60f140 : * may not be able to build any valid plan. Complain here so that : * we can give a somewhat-useful error message. (Since we have no : * flexibility of planning for a full join, there's no chance of : * succeeding later with another pair of input rels.) : */ : if (joinrel->pathlist == NIL) 0.00 : 61120e: 49 83 7d 28 00 cmpq $0x0,0x28(%r13) 0.00 : 611213: 0f 85 bf fb ff ff jne 610dd8 : ereport(ERROR, 0.00 : 611219: 45 31 c0 xor %r8d,%r8d 0.00 : 61121c: b9 20 aa 89 00 mov $0x89aa20,%ecx 0.00 : 611221: ba d2 02 00 00 mov $0x2d2,%edx 0.00 : 611226: be 85 a9 89 00 mov $0x89a985,%esi 0.00 : 61122b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 611230: e8 8b 98 16 00 callq 77aac0 0.00 : 611235: 84 c0 test %al,%al 0.00 : 611237: 0f 84 0b fb ff ff je 610d48 0.00 : 61123d: bf 90 a9 89 00 mov $0x89a990,%edi 0.00 : 611242: 31 c0 xor %eax,%eax 0.00 : 611244: e8 57 b6 16 00 callq 77c8a0 0.00 : 611249: bf 40 04 00 00 mov $0x440,%edi 0.00 : 61124e: 89 c3 mov %eax,%ebx 0.00 : 611250: e8 fb ba 16 00 callq 77cd50 0.00 : 611255: 89 de mov %ebx,%esi 0.00 : 611257: 89 c7 mov %eax,%edi 0.00 : 611259: 31 c0 xor %eax,%eax 0.00 : 61125b: e8 80 93 16 00 callq 77a5e0 0.00 : 611260: e9 e3 fa ff ff jmpq 610d48 0.00 : 611265: 0f 1f 00 nopl (%rax) : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 611268: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 61126d: 0f 85 f9 fd ff ff jne 61106c 0.00 : 611273: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 611278: e9 f3 fb ff ff jmpq 610e70 0.00 : 61127d: 0f 1f 00 nopl (%rax) : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 611280: 48 85 c0 test %rax,%rax 0.00 : 611283: 48 89 c2 mov %rax,%rdx 0.00 : 611286: 75 11 jne 611299 0.00 : 611288: eb 56 jmp 6112e0 0.00 : 61128a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 611290: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 611294: 48 85 d2 test %rdx,%rdx 0.00 : 611297: 74 47 je 6112e0 : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 611299: 48 8b 02 mov (%rdx),%rax 0.00 : 61129c: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 6112a0: 48 85 c0 test %rax,%rax 0.00 : 6112a3: 74 eb je 611290 0.00 : 6112a5: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 6112ab: 75 e3 jne 611290 : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 6112ad: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 6112b1: 75 06 jne 6112b9 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 6112b3: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 6112b7: 75 d7 jne 611290 : restriction_is_constant_false(restrictlist, true)) : { : mark_dummy_rel(joinrel); : break; : } : if (restriction_is_constant_false(restrictlist, false) && 0.00 : 6112b9: 49 8b 71 20 mov 0x20(%r9),%rsi 0.00 : 6112bd: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 6112c2: e8 59 14 fd ff callq 5e2720 0.00 : 6112c7: 84 c0 test %al,%al 0.00 : 6112c9: 74 08 je 6112d3 : bms_is_subset(rel2->relids, sjinfo->syn_righthand)) : mark_dummy_rel(rel2); 0.00 : 6112cb: 4c 89 e7 mov %r12,%rdi 0.00 : 6112ce: e8 2d f9 ff ff callq 610c00 0.00 : 6112d3: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 6112d7: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 6112db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : add_paths_to_joinrel(root, joinrel, rel1, rel2, 0.00 : 6112e0: 48 89 34 24 mov %rsi,(%rsp) 0.00 : 6112e4: 41 b8 05 00 00 00 mov $0x5,%r8d 0.00 : 6112ea: 4c 89 e1 mov %r12,%rcx 0.00 : 6112ed: 48 89 da mov %rbx,%rdx 0.00 : 6112f0: 4c 89 ee mov %r13,%rsi 0.00 : 6112f3: 4c 89 f7 mov %r14,%rdi 0.00 : 6112f6: e8 45 de ff ff callq 60f140 : JOIN_ANTI, sjinfo, : restrictlist); : break; 0.00 : 6112fb: e9 d8 fa ff ff jmpq 610dd8 : * Despite the above comment, the restriction list we see here might : * possibly have other members besides the FALSE constant, since other : * quals could get "pushed down" to the outer join level. So we check : * each member of the list. : */ : foreach(lc, restrictlist) 0.00 : 611300: 48 85 c0 test %rax,%rax 0.00 : 611303: 48 89 c2 mov %rax,%rdx 0.00 : 611306: 75 11 jne 611319 0.00 : 611308: eb 56 jmp 611360 0.00 : 61130a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 611310: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 611314: 48 85 d2 test %rdx,%rdx 0.00 : 611317: 74 47 je 611360 : : Assert(IsA(rinfo, RestrictInfo)); : if (only_pushed_down && !rinfo->is_pushed_down) : continue; : : if (rinfo->clause && IsA(rinfo->clause, Const)) 0.00 : 611319: 48 8b 02 mov (%rdx),%rax 0.00 : 61131c: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 611320: 48 85 c0 test %rax,%rax 0.00 : 611323: 74 eb je 611310 0.00 : 611325: 81 38 30 01 00 00 cmpl $0x130,(%rax) 0.00 : 61132b: 75 e3 jne 611310 : { : Const *con = (Const *) rinfo->clause; : : /* constant NULL is as good as constant FALSE for our purposes */ : if (con->constisnull) 0.00 : 61132d: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 611331: 75 06 jne 611339 : return true; : if (!DatumGetBool(con->constvalue)) 0.00 : 611333: 80 78 18 00 cmpb $0x0,0x18(%rax) 0.00 : 611337: 75 d7 jne 611310 : restriction_is_constant_false(restrictlist, true)) : { : mark_dummy_rel(joinrel); : break; : } : if (restriction_is_constant_false(restrictlist, false) && 0.00 : 611339: 49 8b 71 20 mov 0x20(%r9),%rsi 0.00 : 61133d: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 611342: e8 d9 13 fd ff callq 5e2720 0.00 : 611347: 84 c0 test %al,%al 0.00 : 611349: 74 08 je 611353 : bms_is_subset(rel2->relids, sjinfo->syn_righthand)) : mark_dummy_rel(rel2); 0.00 : 61134b: 4c 89 e7 mov %r12,%rdi 0.00 : 61134e: e8 ad f8 ff ff callq 610c00 0.00 : 611353: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 611357: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 61135b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : add_paths_to_joinrel(root, joinrel, rel1, rel2, 0.00 : 611360: 48 89 34 24 mov %rsi,(%rsp) 0.00 : 611364: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 61136a: 4c 89 e1 mov %r12,%rcx 0.00 : 61136d: 48 89 da mov %rbx,%rdx 0.00 : 611370: 4c 89 ee mov %r13,%rsi 0.00 : 611373: 4c 89 f7 mov %r14,%rdi 0.00 : 611376: e8 c5 dd ff ff callq 60f140 : JOIN_LEFT, sjinfo, : restrictlist); : add_paths_to_joinrel(root, joinrel, rel2, rel1, 0.00 : 61137b: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 61137f: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 611383: 41 b8 03 00 00 00 mov $0x3,%r8d 0.00 : 611389: 48 89 04 24 mov %rax,(%rsp) : break; : } : add_paths_to_joinrel(root, joinrel, rel1, rel2, : JOIN_UNIQUE_INNER, sjinfo, : restrictlist); : add_paths_to_joinrel(root, joinrel, rel2, rel1, 0.00 : 61138d: 48 89 d9 mov %rbx,%rcx 0.00 : 611390: 4c 89 e2 mov %r12,%rdx 0.00 : 611393: 4c 89 ee mov %r13,%rsi 0.00 : 611396: 4c 89 f7 mov %r14,%rdi 0.00 : 611399: e8 a2 dd ff ff callq 60f140 0.00 : 61139e: e9 35 fa ff ff jmpq 610dd8 0.00 : 6113a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 6113a8: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 6113ad: 0f 85 a3 fc ff ff jne 611056 0.00 : 6113b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6113b8: e9 b3 fa ff ff jmpq 610e70 0.00 : 6113bd: 0f 1f 00 nopl (%rax) 0.00 : 6113c0: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 6113c5: 0f 1f 00 nopl (%rax) 0.00 : 6113c8: 0f 85 08 fc ff ff jne 610fd6 0.00 : 6113ce: 66 90 xchg %ax,%ax 0.00 : 6113d0: e9 9b fa ff ff jmpq 610e70 0.00 : 6113d5: 0f 1f 00 nopl (%rax) 0.00 : 6113d8: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 6113dd: 0f 1f 00 nopl (%rax) 0.00 : 6113e0: 0f 85 70 fb ff ff jne 610f56 0.00 : 6113e6: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 6113eb: 48 85 c0 test %rax,%rax 0.00 : 6113ee: 66 90 xchg %ax,%ax 0.00 : 6113f0: 0f 84 60 fb ff ff je 610f56 0.00 : 6113f6: 81 38 03 02 00 00 cmpl $0x203,(%rax) 0.00 : 6113fc: 0f 85 54 fb ff ff jne 610f56 0.00 : 611402: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 611407: 0f 85 49 fb ff ff jne 610f56 0.00 : 61140d: 0f 1f 00 nopl (%rax) 0.00 : 611410: e9 5b fa ff ff jmpq 610e70 0.00 : 611415: 0f 1f 00 nopl (%rax) 0.00 : 611418: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 61141d: 0f 1f 00 nopl (%rax) 0.00 : 611420: 0f 85 ef f9 ff ff jne 610e15 0.00 : 611426: 66 90 xchg %ax,%ax 0.00 : 611428: e9 43 fa ff ff jmpq 610e70 : /* Check validity and determine join type. */ : if (!join_is_legal(root, rel1, rel2, joinrelids, : &sjinfo, &reversed)) : { : /* invalid join path */ : bms_free(joinrelids); 0.00 : 61142d: 4c 89 ff mov %r15,%rdi 0.00 : 611430: 45 31 ed xor %r13d,%r13d 0.00 : 611433: e8 78 19 fd ff callq 5e2db0 : } : : bms_free(joinrelids); : : return joinrel; : } 0.00 : 611438: e9 a8 f9 ff ff jmpq 610de5 : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 61143d: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 611442: 0f 85 7e fa ff ff jne 610ec6 0.00 : 611448: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 61144f: 00 0.00 : 611450: e9 1b fa ff ff jmpq 610e70 0.00 : 611455: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 61145a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 611460: 0f 85 f0 fc ff ff jne 611156 0.00 : 611466: 66 90 xchg %ax,%ax 0.00 : 611468: e9 03 fa ff ff jmpq 610e70 : restriction_is_constant_false(restrictlist, false)) : { : mark_dummy_rel(joinrel); : break; : } : add_paths_to_joinrel(root, joinrel, rel1, rel2, 0.00 : 61146d: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 611471: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 611475: 41 b8 07 00 00 00 mov $0x7,%r8d 0.00 : 61147b: 4c 89 e1 mov %r12,%rcx 0.00 : 61147e: 48 89 da mov %rbx,%rdx 0.00 : 611481: 4c 89 ee mov %r13,%rsi 0.00 : 611484: 4c 89 f7 mov %r14,%rdi 0.00 : 611487: e8 b4 dc ff ff callq 60f140 : JOIN_UNIQUE_INNER, sjinfo, : restrictlist); : add_paths_to_joinrel(root, joinrel, rel2, rel1, 0.00 : 61148c: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 611490: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 611494: 41 b8 06 00 00 00 mov $0x6,%r8d 0.00 : 61149a: 48 89 04 24 mov %rax,(%rsp) 0.00 : 61149e: e9 ea fe ff ff jmpq 61138d : * is_dummy_rel --- has relation been proven empty? : */ : static bool : is_dummy_rel(RelOptInfo *rel) : { : return IS_DUMMY_REL(rel); 0.00 : 6114a3: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 6114a8: 0f 85 2e fa ff ff jne 610edc 0.00 : 6114ae: e9 bd f9 ff ff jmpq 610e70 0.00 : 6114b3: 48 83 78 38 00 cmpq $0x0,0x38(%rax) 0.00 : 6114b8: 0f 85 ae fc ff ff jne 61116c 0.00 : 6114be: 66 90 xchg %ax,%ax 0.00 : 6114c0: e9 ab f9 ff ff jmpq 610e70 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/createplan.c:2553 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000615ab0 : : return replace_nestloop_params_mutator(expr, root); : } : : static Node * : replace_nestloop_params_mutator(Node *node, PlannerInfo *root) : { 0.00 : 615ab0: 55 push %rbp 0.00 : 615ab1: 48 89 e5 mov %rsp,%rbp 0.00 : 615ab4: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 615ab8: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 615abc: 49 89 fc mov %rdi,%r12 0.00 : 615abf: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 615ac3: 48 83 ec 20 sub $0x20,%rsp : if (node == NULL) /home/Computational/mark/src/postgres-andres/src/backend/optimizer/plan/createplan.c:2553 100.00 : 615ac7: 48 85 ff test %rdi,%rdi : return replace_nestloop_params_mutator(expr, root); : } : : static Node * : replace_nestloop_params_mutator(Node *node, PlannerInfo *root) : { 0.00 : 615aca: 49 89 f5 mov %rsi,%r13 : if (node == NULL) 0.00 : 615acd: 0f 84 c1 00 00 00 je 615b94 : return NULL; : if (IsA(node, Var)) 0.00 : 615ad3: 8b 07 mov (%rdi),%eax 0.00 : 615ad5: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 615ada: 0f 84 c8 00 00 00 je 615ba8 : nlp->paramval = var; : root->curOuterParams = lappend(root->curOuterParams, nlp); : /* And return the replacement Param */ : return (Node *) param; : } : if (IsA(node, PlaceHolderVar)) 0.00 : 615ae0: 3d 0c 02 00 00 cmp $0x20c,%eax 0.00 : 615ae5: 74 21 je 615b08 : return (Node *) param; : } : return expression_tree_mutator(node, : replace_nestloop_params_mutator, : (void *) root); : } 0.00 : 615ae7: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 615aeb: 4c 8b 65 f0 mov -0x10(%rbp),%r12 : nlp->paramval = (Var *) phv; : root->curOuterParams = lappend(root->curOuterParams, nlp); : /* And return the replacement Param */ : return (Node *) param; : } : return expression_tree_mutator(node, 0.00 : 615aef: 48 89 f2 mov %rsi,%rdx : replace_nestloop_params_mutator, : (void *) root); : } 0.00 : 615af2: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 615af6: c9 leaveq : nlp->paramval = (Var *) phv; : root->curOuterParams = lappend(root->curOuterParams, nlp); : /* And return the replacement Param */ : return (Node *) param; : } : return expression_tree_mutator(node, 0.00 : 615af7: be b0 5a 61 00 mov $0x615ab0,%esi 0.00 : 615afc: e9 8f a4 fc ff jmpq 5dff90 0.00 : 615b01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Check whether we need to replace the PHV. We use bms_overlap as a : * cheap/quick test to see if the PHV might be evaluated in the outer : * rels, and then grab its PlaceHolderInfo to tell for sure. : */ : if (!bms_overlap(phv->phrels, root->curOuterRels) || 0.00 : 615b08: 48 8b b6 50 01 00 00 mov 0x150(%rsi),%rsi 0.00 : 615b0f: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 615b13: e8 68 ce fc ff callq 5e2980 0.00 : 615b18: 84 c0 test %al,%al 0.00 : 615b1a: 74 28 je 615b44 0.00 : 615b1c: 31 d2 xor %edx,%edx 0.00 : 615b1e: 49 8b 9d 50 01 00 00 mov 0x150(%r13),%rbx 0.00 : 615b25: 4c 89 e6 mov %r12,%rsi 0.00 : 615b28: 4c 89 ef mov %r13,%rdi 0.00 : 615b2b: e8 80 c8 01 00 callq 6323b0 0.00 : 615b30: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 615b34: 48 89 de mov %rbx,%rsi 0.00 : 615b37: e8 e4 cb fc ff callq 5e2720 0.00 : 615b3c: 84 c0 test %al,%al 0.00 : 615b3e: 0f 85 04 01 00 00 jne 615c48 : * representations of the contents of the same PHV in different : * parts of the plan tree. This is OK because equal() will just : * match on phid/phlevelsup, so setrefs.c will still recognize an : * upper-level reference to a lower-level copy of the same PHV. : */ : PlaceHolderVar *newphv = makeNode(PlaceHolderVar); 0.00 : 615b44: 48 8b 3d 15 4d 5a 00 mov 0x5a4d15(%rip),%rdi # bba860 0.00 : 615b4b: be 20 00 00 00 mov $0x20,%esi 0.00 : 615b50: e8 bb 32 18 00 callq 798e10 0.00 : 615b55: c7 00 0c 02 00 00 movl $0x20c,(%rax) 0.00 : 615b5b: 48 89 c3 mov %rax,%rbx : : memcpy(newphv, phv, sizeof(PlaceHolderVar)); 0.00 : 615b5e: 49 8b 04 24 mov (%r12),%rax : newphv->phexpr = (Expr *) 0.00 : 615b62: 4c 89 ee mov %r13,%rsi : * match on phid/phlevelsup, so setrefs.c will still recognize an : * upper-level reference to a lower-level copy of the same PHV. : */ : PlaceHolderVar *newphv = makeNode(PlaceHolderVar); : : memcpy(newphv, phv, sizeof(PlaceHolderVar)); 0.00 : 615b65: 48 89 03 mov %rax,(%rbx) 0.00 : 615b68: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 615b6d: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 615b71: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 615b76: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 615b7a: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 615b7f: 48 89 43 18 mov %rax,0x18(%rbx) : newphv->phexpr = (Expr *) 0.00 : 615b83: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 615b88: 49 89 dc mov %rbx,%r12 0.00 : 615b8b: e8 20 ff ff ff callq 615ab0 0.00 : 615b90: 48 89 43 08 mov %rax,0x8(%rbx) : return (Node *) param; : } : return expression_tree_mutator(node, : replace_nestloop_params_mutator, : (void *) root); : } 0.00 : 615b94: 4c 89 e0 mov %r12,%rax 0.00 : 615b97: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 615b9b: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 615b9f: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 615ba3: c9 leaveq 0.00 : 615ba4: c3 retq 0.00 : 615ba5: 0f 1f 00 nopl (%rax) : ListCell *lc; : : /* Upper-level Vars should be long gone at this point */ : Assert(var->varlevelsup == 0); : /* If not to be replaced, we can just return the Var unmodified */ : if (!bms_is_member(var->varno, root->curOuterRels)) 0.00 : 615ba8: 48 8b b6 50 01 00 00 mov 0x150(%rsi),%rsi 0.00 : 615baf: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 615bb2: e8 59 d3 fc ff callq 5e2f10 0.00 : 615bb7: 84 c0 test %al,%al 0.00 : 615bb9: 74 d9 je 615b94 : return node; : /* Create a Param representing the Var */ : param = assign_nestloop_param_var(root, var); 0.00 : 615bbb: 4c 89 e6 mov %r12,%rsi 0.00 : 615bbe: 4c 89 ef mov %r13,%rdi 0.00 : 615bc1: e8 ba d1 00 00 callq 622d80 0.00 : 615bc6: 48 89 c3 mov %rax,%rbx : /* Is this param already listed in root->curOuterParams? */ : foreach(lc, root->curOuterParams) 0.00 : 615bc9: 49 8b 85 58 01 00 00 mov 0x158(%r13),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 615bd0: 48 85 c0 test %rax,%rax 0.00 : 615bd3: 74 30 je 615c05 0.00 : 615bd5: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 615bd9: 48 85 d2 test %rdx,%rdx 0.00 : 615bdc: 74 27 je 615c05 : { : nlp = (NestLoopParam *) lfirst(lc); : if (nlp->paramno == param->paramid) 0.00 : 615bde: 48 8b 02 mov (%rdx),%rax 0.00 : 615be1: 8b 4b 08 mov 0x8(%rbx),%ecx 0.00 : 615be4: 39 48 04 cmp %ecx,0x4(%rax) 0.00 : 615be7: 75 13 jne 615bfc 0.00 : 615be9: e9 db 00 00 00 jmpq 615cc9 0.00 : 615bee: 66 90 xchg %ax,%ax 0.00 : 615bf0: 48 8b 02 mov (%rdx),%rax 0.00 : 615bf3: 39 48 04 cmp %ecx,0x4(%rax) 0.00 : 615bf6: 0f 84 cd 00 00 00 je 615cc9 : if (!bms_is_member(var->varno, root->curOuterRels)) : return node; : /* Create a Param representing the Var */ : param = assign_nestloop_param_var(root, var); : /* Is this param already listed in root->curOuterParams? */ : foreach(lc, root->curOuterParams) 0.00 : 615bfc: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 615c00: 48 85 d2 test %rdx,%rdx 0.00 : 615c03: 75 eb jne 615bf0 : /* Present, so we can just return the Param */ : return (Node *) param; : } : } : /* No, so add it */ : nlp = makeNode(NestLoopParam); 0.00 : 615c05: 48 8b 3d 54 4c 5a 00 mov 0x5a4c54(%rip),%rdi # bba860 0.00 : 615c0c: be 10 00 00 00 mov $0x10,%esi 0.00 : 615c11: e8 fa 31 18 00 callq 798e10 0.00 : 615c16: c7 00 87 00 00 00 movl $0x87,(%rax) 0.00 : 615c1c: 48 89 c6 mov %rax,%rsi : nlp->paramno = param->paramid; 0.00 : 615c1f: 8b 43 08 mov 0x8(%rbx),%eax : nlp->paramval = var; 0.00 : 615c22: 4c 89 66 08 mov %r12,0x8(%rsi) : root->curOuterParams = lappend(root->curOuterParams, nlp); : /* And return the replacement Param */ : return (Node *) param; 0.00 : 615c26: 49 89 dc mov %rbx,%r12 : return (Node *) param; : } : } : /* No, so add it */ : nlp = makeNode(NestLoopParam); : nlp->paramno = param->paramid; 0.00 : 615c29: 89 46 04 mov %eax,0x4(%rsi) : nlp->paramval = var; : root->curOuterParams = lappend(root->curOuterParams, nlp); 0.00 : 615c2c: 49 8b bd 58 01 00 00 mov 0x158(%r13),%rdi 0.00 : 615c33: e8 48 c2 fc ff callq 5e1e80 0.00 : 615c38: 49 89 85 58 01 00 00 mov %rax,0x158(%r13) : return (Node *) param; : } : return expression_tree_mutator(node, : replace_nestloop_params_mutator, : (void *) root); : } 0.00 : 615c3f: e9 50 ff ff ff jmpq 615b94 0.00 : 615c44: 0f 1f 40 00 nopl 0x0(%rax) : replace_nestloop_params_mutator((Node *) phv->phexpr, : root); : return (Node *) newphv; : } : /* Create a Param representing the PlaceHolderVar */ : param = assign_nestloop_param_placeholdervar(root, phv); 0.00 : 615c48: 4c 89 e6 mov %r12,%rsi 0.00 : 615c4b: 4c 89 ef mov %r13,%rdi 0.00 : 615c4e: e8 3d d3 00 00 callq 622f90 0.00 : 615c53: 48 89 c3 mov %rax,%rbx : /* Is this param already listed in root->curOuterParams? */ : foreach(lc, root->curOuterParams) 0.00 : 615c56: 49 8b 85 58 01 00 00 mov 0x158(%r13),%rax 0.00 : 615c5d: 48 85 c0 test %rax,%rax 0.00 : 615c60: 74 30 je 615c92 0.00 : 615c62: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 615c66: 48 85 d2 test %rdx,%rdx 0.00 : 615c69: 74 27 je 615c92 : { : nlp = (NestLoopParam *) lfirst(lc); : if (nlp->paramno == param->paramid) 0.00 : 615c6b: 48 8b 02 mov (%rdx),%rax 0.00 : 615c6e: 8b 4b 08 mov 0x8(%rbx),%ecx 0.00 : 615c71: 39 48 04 cmp %ecx,0x4(%rax) 0.00 : 615c74: 75 12 jne 615c88 0.00 : 615c76: eb 51 jmp 615cc9 0.00 : 615c78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 615c7f: 00 0.00 : 615c80: 48 8b 02 mov (%rdx),%rax 0.00 : 615c83: 39 48 04 cmp %ecx,0x4(%rax) 0.00 : 615c86: 74 41 je 615cc9 : return (Node *) newphv; : } : /* Create a Param representing the PlaceHolderVar */ : param = assign_nestloop_param_placeholdervar(root, phv); : /* Is this param already listed in root->curOuterParams? */ : foreach(lc, root->curOuterParams) 0.00 : 615c88: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 615c8c: 48 85 d2 test %rdx,%rdx 0.00 : 615c8f: 90 nop 0.00 : 615c90: 75 ee jne 615c80 : /* Present, so we can just return the Param */ : return (Node *) param; : } : } : /* No, so add it */ : nlp = makeNode(NestLoopParam); 0.00 : 615c92: 48 8b 3d c7 4b 5a 00 mov 0x5a4bc7(%rip),%rdi # bba860 0.00 : 615c99: be 10 00 00 00 mov $0x10,%esi 0.00 : 615c9e: e8 6d 31 18 00 callq 798e10 0.00 : 615ca3: c7 00 87 00 00 00 movl $0x87,(%rax) 0.00 : 615ca9: 48 89 c6 mov %rax,%rsi : nlp->paramno = param->paramid; 0.00 : 615cac: 8b 43 08 mov 0x8(%rbx),%eax : nlp->paramval = (Var *) phv; 0.00 : 615caf: 4c 89 66 08 mov %r12,0x8(%rsi) : return (Node *) param; : } : } : /* No, so add it */ : nlp = makeNode(NestLoopParam); : nlp->paramno = param->paramid; 0.00 : 615cb3: 89 46 04 mov %eax,0x4(%rsi) : nlp->paramval = (Var *) phv; : root->curOuterParams = lappend(root->curOuterParams, nlp); 0.00 : 615cb6: 49 8b bd 58 01 00 00 mov 0x158(%r13),%rdi 0.00 : 615cbd: e8 be c1 fc ff callq 5e1e80 0.00 : 615cc2: 49 89 85 58 01 00 00 mov %rax,0x158(%r13) : /* And return the replacement Param */ : return (Node *) param; 0.00 : 615cc9: 49 89 dc mov %rbx,%r12 : } : return expression_tree_mutator(node, : replace_nestloop_params_mutator, : (void *) root); : } 0.00 : 615ccc: e9 c3 fe ff ff jmpq 615b94 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/predtest.c:838 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000633cb0 : : } : : static Node * : list_next_fn(PredIterInfo info) : { : ListCell *l = (ListCell *) info->state; 0.00 : 633cb0: 48 8b 07 mov (%rdi),%rax : info->state = (void *) list_head((List *) clause); : } : : static Node * : list_next_fn(PredIterInfo info) : { /home/Computational/mark/src/postgres-andres/src/backend/optimizer/util/predtest.c:838 100.00 : 633cb3: 55 push %rbp : ListCell *l = (ListCell *) info->state; : Node *n; : : if (l == NULL) 0.00 : 633cb4: 31 d2 xor %edx,%edx : info->state = (void *) list_head((List *) clause); : } : : static Node * : list_next_fn(PredIterInfo info) : { 0.00 : 633cb6: 48 89 e5 mov %rsp,%rbp : ListCell *l = (ListCell *) info->state; : Node *n; : : if (l == NULL) 0.00 : 633cb9: 48 85 c0 test %rax,%rax 0.00 : 633cbc: 74 0a je 633cc8 : return NULL; : n = lfirst(l); 0.00 : 633cbe: 48 8b 10 mov (%rax),%rdx : info->state = (void *) lnext(l); 0.00 : 633cc1: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 633cc5: 48 89 07 mov %rax,(%rdi) : return n; : } 0.00 : 633cc8: 48 89 d0 mov %rdx,%rax 0.00 : 633ccb: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:2844 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000641ea0 : : * if not already done in this transaction. : * ---------- : */ : static void : pgstat_read_current_status(void) : { 0.00 : 641ea0: 55 push %rbp 0.00 : 641ea1: 48 89 e5 mov %rsp,%rbp 0.00 : 641ea4: 41 57 push %r15 0.00 : 641ea6: 41 56 push %r14 0.00 : 641ea8: 41 55 push %r13 0.00 : 641eaa: 41 54 push %r12 0.00 : 641eac: 53 push %rbx 0.00 : 641ead: 48 83 ec 18 sub $0x18,%rsp : char *localappname, : *localactivity; : int i; : : Assert(!pgStatRunningInCollector); : if (localBackendStatusTable) 0.00 : 641eb1: 48 83 3d 27 9d 53 00 cmpq $0x0,0x539d27(%rip) # b7bbe0 0.00 : 641eb8: 00 0.00 : 641eb9: 74 0f je 641eca : } : } : : /* Set the pointer only after completion of a valid table */ : localBackendStatusTable = localtable; : } 0.00 : 641ebb: 48 83 c4 18 add $0x18,%rsp 0.00 : 641ebf: 5b pop %rbx 0.00 : 641ec0: 41 5c pop %r12 0.00 : 641ec2: 41 5d pop %r13 0.00 : 641ec4: 41 5e pop %r14 0.00 : 641ec6: 41 5f pop %r15 0.00 : 641ec8: c9 leaveq 0.00 : 641ec9: c3 retq : * ---------- : */ : static void : pgstat_setup_memcxt(void) : { : if (!pgStatLocalContext) 0.00 : 641eca: 48 83 3d fe 9c 53 00 cmpq $0x0,0x539cfe(%rip) # b7bbd0 0.00 : 641ed1: 00 0.00 : 641ed2: 0f 84 7c 01 00 00 je 642054 : if (localBackendStatusTable) : return; /* already done */ : : pgstat_setup_memcxt(); : : localtable = (LocalPgBackendStatus *) 0.00 : 641ed8: 48 63 35 ed 81 57 00 movslq 0x5781ed(%rip),%rsi # bba0cc 0.00 : 641edf: 48 8b 3d ea 9c 53 00 mov 0x539cea(%rip),%rdi # b7bbd0 0.00 : 641ee6: 48 89 f0 mov %rsi,%rax 0.00 : 641ee9: 48 c1 e6 08 shl $0x8,%rsi 0.00 : 641eed: 48 c1 e0 05 shl $0x5,%rax 0.00 : 641ef1: 48 29 c6 sub %rax,%rsi 0.00 : 641ef4: e8 97 6f 15 00 callq 798e90 : MemoryContextAlloc(pgStatLocalContext, : sizeof(LocalPgBackendStatus) * MaxBackends); : localappname = (char *) 0.00 : 641ef9: 8b 35 cd 81 57 00 mov 0x5781cd(%rip),%esi # bba0cc 0.00 : 641eff: 48 8b 3d ca 9c 53 00 mov 0x539cca(%rip),%rdi # b7bbd0 : if (localBackendStatusTable) : return; /* already done */ : : pgstat_setup_memcxt(); : : localtable = (LocalPgBackendStatus *) 0.00 : 641f06: 48 89 45 c8 mov %rax,-0x38(%rbp) : MemoryContextAlloc(pgStatLocalContext, : sizeof(LocalPgBackendStatus) * MaxBackends); : localappname = (char *) 0.00 : 641f0a: c1 e6 06 shl $0x6,%esi 0.00 : 641f0d: 48 63 f6 movslq %esi,%rsi 0.00 : 641f10: e8 7b 6f 15 00 callq 798e90 : MemoryContextAlloc(pgStatLocalContext, : NAMEDATALEN * MaxBackends); : localactivity = (char *) 0.00 : 641f15: 8b 35 b1 81 57 00 mov 0x5781b1(%rip),%esi # bba0cc 0.00 : 641f1b: 48 8b 3d ae 9c 53 00 mov 0x539cae(%rip),%rdi # b7bbd0 : pgstat_setup_memcxt(); : : localtable = (LocalPgBackendStatus *) : MemoryContextAlloc(pgStatLocalContext, : sizeof(LocalPgBackendStatus) * MaxBackends); : localappname = (char *) 0.00 : 641f22: 48 89 c3 mov %rax,%rbx : MemoryContextAlloc(pgStatLocalContext, : NAMEDATALEN * MaxBackends); : localactivity = (char *) 0.00 : 641f25: 0f af 35 e0 66 52 00 imul 0x5266e0(%rip),%esi # b6860c 0.00 : 641f2c: 48 63 f6 movslq %esi,%rsi 0.00 : 641f2f: e8 5c 6f 15 00 callq 798e90 : pgstat_track_activity_query_size * MaxBackends); : localNumBackends = 0; : : beentry = BackendStatusArray; : localentry = localtable; : for (i = 1; i <= MaxBackends; i++) 0.00 : 641f34: 44 8b 1d 91 81 57 00 mov 0x578191(%rip),%r11d # bba0cc : MemoryContextAlloc(pgStatLocalContext, : NAMEDATALEN * MaxBackends); : localactivity = (char *) : MemoryContextAlloc(pgStatLocalContext, : pgstat_track_activity_query_size * MaxBackends); : localNumBackends = 0; 0.00 : 641f3b: c7 05 a3 9c 53 00 00 movl $0x0,0x539ca3(%rip) # b7bbe8 0.00 : 641f42: 00 00 00 : : beentry = BackendStatusArray; 0.00 : 641f45: 48 8b 35 0c 9d 53 00 mov 0x539d0c(%rip),%rsi # b7bc58 : localentry = localtable; : for (i = 1; i <= MaxBackends; i++) 0.00 : 641f4c: 45 85 db test %r11d,%r11d 0.00 : 641f4f: 0f 8e e5 00 00 00 jle 64203a : pgstat_setup_memcxt(); : : localtable = (LocalPgBackendStatus *) : MemoryContextAlloc(pgStatLocalContext, : sizeof(LocalPgBackendStatus) * MaxBackends); : localappname = (char *) 0.00 : 641f55: 49 89 df mov %rbx,%r15 : MemoryContextAlloc(pgStatLocalContext, : NAMEDATALEN * MaxBackends); : localactivity = (char *) 0.00 : 641f58: 49 89 c6 mov %rax,%r14 : MemoryContextAlloc(pgStatLocalContext, : pgstat_track_activity_query_size * MaxBackends); : localNumBackends = 0; : : beentry = BackendStatusArray; 0.00 : 641f5b: 48 89 f3 mov %rsi,%rbx 0.00 : 641f5e: 4c 8b 65 c8 mov -0x38(%rbp),%r12 0.00 : 641f62: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%rbp) 0.00 : 641f69: eb 14 jmp 641f7f 0.00 : 641f6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (save_changecount == beentry->st_changecount && : (save_changecount & 1) == 0) : break; : : /* Make sure we can break out of loop if stuck... */ : CHECK_FOR_INTERRUPTS(); 0.00 : 641f70: 0f b6 05 19 81 57 00 movzbl 0x578119(%rip),%eax # bba090 0.00 : 641f77: 84 c0 test %al,%al 0.00 : 641f79: 0f 85 b1 00 00 00 jne 642030 : * the source backend is between increment steps.) We use a volatile : * pointer here to ensure the compiler doesn't try to get cute. : */ : for (;;) : { : int save_changecount = beentry->st_changecount; 0.00 : 641f7f: 44 8b 2b mov (%rbx),%r13d : : localentry->backendStatus.st_procpid = beentry->st_procpid; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:2844 100.00 : 641f82: 8b 43 04 mov 0x4(%rbx),%eax : if (localentry->backendStatus.st_procpid > 0) 0.00 : 641f85: 85 c0 test %eax,%eax : */ : for (;;) : { : int save_changecount = beentry->st_changecount; : : localentry->backendStatus.st_procpid = beentry->st_procpid; 0.00 : 641f87: 41 89 44 24 04 mov %eax,0x4(%r12) : if (localentry->backendStatus.st_procpid > 0) 0.00 : 641f8c: 7e 3c jle 641fca : { : memcpy(&localentry->backendStatus, (char *) beentry, sizeof(PgBackendStatus)); 0.00 : 641f8e: 4c 89 e7 mov %r12,%rdi 0.00 : 641f91: 48 89 de mov %rbx,%rsi 0.00 : 641f94: b9 1b 00 00 00 mov $0x1b,%ecx 0.00 : 641f99: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : : /* : * strcpy is safe even if the string is modified concurrently, : * because there's always a \0 at the end of the buffer. : */ : strcpy(localappname, (char *) beentry->st_appname); 0.00 : 641f9c: 4c 89 ff mov %r15,%rdi 0.00 : 641f9f: 48 8b b3 c8 00 00 00 mov 0xc8(%rbx),%rsi 0.00 : 641fa6: e8 d5 7d e2 ff callq 469d80 : localentry->backendStatus.st_appname = localappname; 0.00 : 641fab: 4d 89 bc 24 c8 00 00 mov %r15,0xc8(%r12) 0.00 : 641fb2: 00 : strcpy(localactivity, (char *) beentry->st_activity); 0.00 : 641fb3: 48 8b b3 d0 00 00 00 mov 0xd0(%rbx),%rsi 0.00 : 641fba: 4c 89 f7 mov %r14,%rdi 0.00 : 641fbd: e8 be 7d e2 ff callq 469d80 : localentry->backendStatus.st_activity = localactivity; 0.00 : 641fc2: 4d 89 b4 24 d0 00 00 mov %r14,0xd0(%r12) 0.00 : 641fc9: 00 : } : : if (save_changecount == beentry->st_changecount && 0.00 : 641fca: 8b 03 mov (%rbx),%eax 0.00 : 641fcc: 44 39 e8 cmp %r13d,%eax 0.00 : 641fcf: 75 9f jne 641f70 0.00 : 641fd1: 41 83 e5 01 and $0x1,%r13d 0.00 : 641fd5: 75 99 jne 641f70 : CHECK_FOR_INTERRUPTS(); : } : : beentry++; : /* Only valid entries get included into the local array */ : if (localentry->backendStatus.st_procpid > 0) 0.00 : 641fd7: 45 8b 54 24 04 mov 0x4(%r12),%r10d 0.00 : 641fdc: 45 85 d2 test %r10d,%r10d 0.00 : 641fdf: 7e 34 jle 642015 : { : BackendIdGetTransactionIds(i, 0.00 : 641fe1: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 641fe4: 49 8d 94 24 dc 00 00 lea 0xdc(%r12),%rdx 0.00 : 641feb: 00 0.00 : 641fec: 49 8d b4 24 d8 00 00 lea 0xd8(%r12),%rsi 0.00 : 641ff3: 00 : &localentry->backend_xid, : &localentry->backend_xmin); : : localentry++; : localappname += NAMEDATALEN; 0.00 : 641ff4: 49 83 c7 40 add $0x40,%r15 : { : BackendIdGetTransactionIds(i, : &localentry->backend_xid, : &localentry->backend_xmin); : : localentry++; 0.00 : 641ff8: 49 81 c4 e0 00 00 00 add $0xe0,%r12 : : beentry++; : /* Only valid entries get included into the local array */ : if (localentry->backendStatus.st_procpid > 0) : { : BackendIdGetTransactionIds(i, 0.00 : 641fff: e8 9c 2b 04 00 callq 684ba0 : &localentry->backend_xid, : &localentry->backend_xmin); : : localentry++; : localappname += NAMEDATALEN; : localactivity += pgstat_track_activity_query_size; 0.00 : 642004: 48 63 05 01 66 52 00 movslq 0x526601(%rip),%rax # b6860c : localNumBackends++; 0.00 : 64200b: 83 05 d6 9b 53 00 01 addl $0x1,0x539bd6(%rip) # b7bbe8 : &localentry->backend_xid, : &localentry->backend_xmin); : : localentry++; : localappname += NAMEDATALEN; : localactivity += pgstat_track_activity_query_size; 0.00 : 642012: 49 01 c6 add %rax,%r14 : pgstat_track_activity_query_size * MaxBackends); : localNumBackends = 0; : : beentry = BackendStatusArray; : localentry = localtable; : for (i = 1; i <= MaxBackends; i++) 0.00 : 642015: 83 45 d4 01 addl $0x1,-0x2c(%rbp) 0.00 : 642019: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 64201c: 39 05 aa 80 57 00 cmp %eax,0x5780aa(%rip) # bba0cc 0.00 : 642022: 7c 16 jl 64203a : : /* Make sure we can break out of loop if stuck... */ : CHECK_FOR_INTERRUPTS(); : } : : beentry++; 0.00 : 642024: 48 81 c3 d8 00 00 00 add $0xd8,%rbx 0.00 : 64202b: e9 4f ff ff ff jmpq 641f7f : if (save_changecount == beentry->st_changecount && : (save_changecount & 1) == 0) : break; : : /* Make sure we can break out of loop if stuck... */ : CHECK_FOR_INTERRUPTS(); 0.00 : 642030: e8 6b a2 05 00 callq 69c2a0 0.00 : 642035: e9 45 ff ff ff jmpq 641f7f : localNumBackends++; : } : } : : /* Set the pointer only after completion of a valid table */ : localBackendStatusTable = localtable; 0.00 : 64203a: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 64203e: 48 89 05 9b 9b 53 00 mov %rax,0x539b9b(%rip) # b7bbe0 : } 0.00 : 642045: 48 83 c4 18 add $0x18,%rsp 0.00 : 642049: 5b pop %rbx 0.00 : 64204a: 41 5c pop %r12 0.00 : 64204c: 41 5d pop %r13 0.00 : 64204e: 41 5e pop %r14 0.00 : 642050: 41 5f pop %r15 0.00 : 642052: c9 leaveq 0.00 : 642053: c3 retq : */ : static void : pgstat_setup_memcxt(void) : { : if (!pgStatLocalContext) : pgStatLocalContext = AllocSetContextCreate(TopMemoryContext, 0.00 : 642054: 48 8b 3d 0d 88 57 00 mov 0x57880d(%rip),%rdi # bba868 0.00 : 64205b: 41 b8 00 20 00 00 mov $0x2000,%r8d 0.00 : 642061: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 642066: 31 d2 xor %edx,%edx 0.00 : 642068: be e5 ef 89 00 mov $0x89efe5,%esi 0.00 : 64206d: e8 1e 5f 15 00 callq 797f90 0.00 : 642072: 48 89 05 57 9b 53 00 mov %rax,0x539b57(%rip) # b7bbd0 0.00 : 642079: e9 5a fe ff ff jmpq 641ed8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:3904 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000646b10 : : * In the EXEC_BACKEND case, we are physically attached to shared memory : * but have not yet set up most of our local pointers to shmem structures. : */ : static void : BackendInitialize(Port *port) : { 0.00 : 646b10: 55 push %rbp 0.00 : 646b11: 48 89 e5 mov %rsp,%rbp 0.00 : 646b14: 41 57 push %r15 0.00 : 646b16: 41 56 push %r14 0.00 : 646b18: 41 55 push %r13 0.00 : 646b1a: 41 54 push %r12 0.00 : 646b1c: 49 89 fc mov %rdi,%r12 0.00 : 646b1f: 53 push %rbx 0.00 : 646b20: 48 81 ec 58 08 00 00 sub $0x858,%rsp : * authentication cycle: it can be set in postgresql.conf to allow time to : * attach to the newly-forked backend with a debugger. (See also : * PostAuthDelay, which we allow clients to pass through PGOPTIONS, but it : * is not honored until after authentication.) : */ : if (PreAuthDelay > 0) 0.00 : 646b27: 8b 05 1f 54 53 00 mov 0x53541f(%rip),%eax # b7bf4c : char remote_host[NI_MAXHOST]; : char remote_port[NI_MAXSERV]; : char remote_ps_data[NI_MAXHOST]; : : /* Save port etc. for ps status */ : MyProcPort = port; 0.00 : 646b2d: 48 89 3d dc 99 57 00 mov %rdi,0x5799dc(%rip) # bc0510 : * authentication cycle: it can be set in postgresql.conf to allow time to : * attach to the newly-forked backend with a debugger. (See also : * PostAuthDelay, which we allow clients to pass through PGOPTIONS, but it : * is not honored until after authentication.) : */ : if (PreAuthDelay > 0) 0.00 : 646b34: 85 c0 test %eax,%eax 0.00 : 646b36: 7e 0f jle 646b47 : pg_usleep(PreAuthDelay * 1000000L); 0.00 : 646b38: 48 63 f8 movslq %eax,%rdi 0.00 : 646b3b: 48 69 ff 40 42 0f 00 imul $0xf4240,%rdi,%rdi 0.00 : 646b42: e8 09 5c 16 00 callq 7ac750 : : /* This flag will remain set until InitPostgres finishes authentication */ : ClientAuthInProgress = true; /* limit visibility of log messages */ 0.00 : 646b47: c6 05 05 54 53 00 01 movb $0x1,0x535405(%rip) # b7bf53 : : /* save process start time */ : port->SessionStartTime = GetCurrentTimestamp(); 0.00 : 646b4e: e8 1d f8 0f 00 callq 746370 0.00 : 646b53: 48 89 c7 mov %rax,%rdi 0.00 : 646b56: 49 89 84 24 78 01 00 mov %rax,0x178(%r12) 0.00 : 646b5d: 00 : MyStartTime = timestamptz_to_time_t(port->SessionStartTime); 0.00 : 646b5e: e8 5d 9b 0f 00 callq 7406c0 0.00 : 646b63: 48 89 05 9e 99 57 00 mov %rax,0x57999e(%rip) # bc0508 : : /* set these to empty in case they are needed before we set them up */ : port->remote_host = ""; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:3904 100.00 : 646b6a: 49 c7 84 24 20 01 00 movq $0x8e1696,0x120(%r12) 0.00 : 646b71: 00 96 16 8e 00 : port->remote_port = ""; 0.00 : 646b76: 49 c7 84 24 38 01 00 movq $0x8e1696,0x138(%r12) 0.00 : 646b7d: 00 96 16 8e 00 : : /* : * Initialize libpq and enable reporting of ereport errors to the client. : * Must do this now because authentication uses libpq to send messages. : */ : pq_init(); /* initialize libpq to talk to client */ 0.00 : 646b82: e8 d9 61 f9 ff callq 5dcd60 : whereToSendOutput = DestRemote; /* now safe to ereport to client */ 0.00 : 646b87: c7 05 17 1c 52 00 02 movl $0x2,0x521c17(%rip) # b687a8 0.00 : 646b8e: 00 00 00 : * If possible, make this process a group leader, so that the postmaster : * can signal any child processes too. (We do this now on the off chance : * that something might spawn a child process during authentication.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) 0.00 : 646b91: e8 ca 28 e2 ff callq 469460 0.00 : 646b96: 85 c0 test %eax,%eax 0.00 : 646b98: 0f 88 5a 03 00 00 js 646ef8 : * We arrange for a simple exit(1) if we receive SIGTERM or SIGQUIT or : * timeout while trying to collect the startup packet. Otherwise the : * postmaster cannot shutdown the database FAST or IMMED cleanly if a : * buggy client fails to send the packet promptly. : */ : pqsignal(SIGTERM, startup_die); 0.00 : 646b9e: be a0 5c 64 00 mov $0x645ca0,%esi 0.00 : 646ba3: bf 0f 00 00 00 mov $0xf,%edi : /* : * Get the remote host name and port for logging and status display. : */ : remote_host[0] = '\0'; : remote_port[0] = '\0'; : if ((ret = pg_getnameinfo_all(&port->raddr.addr, port->raddr.salen, 0.00 : 646ba8: 4c 8d 7d b0 lea -0x50(%rbp),%r15 : * We arrange for a simple exit(1) if we receive SIGTERM or SIGQUIT or : * timeout while trying to collect the startup packet. Otherwise the : * postmaster cannot shutdown the database FAST or IMMED cleanly if a : * buggy client fails to send the packet promptly. : */ : pqsignal(SIGTERM, startup_die); 0.00 : 646bac: e8 4f 5f 16 00 callq 7acb00 : pqsignal(SIGQUIT, startup_die); 0.00 : 646bb1: be a0 5c 64 00 mov $0x645ca0,%esi 0.00 : 646bb6: bf 03 00 00 00 mov $0x3,%edi : /* : * Get the remote host name and port for logging and status display. : */ : remote_host[0] = '\0'; : remote_port[0] = '\0'; : if ((ret = pg_getnameinfo_all(&port->raddr.addr, port->raddr.salen, 0.00 : 646bbb: 4c 8d ad a0 fb ff ff lea -0x460(%rbp),%r13 : * timeout while trying to collect the startup packet. Otherwise the : * postmaster cannot shutdown the database FAST or IMMED cleanly if a : * buggy client fails to send the packet promptly. : */ : pqsignal(SIGTERM, startup_die); : pqsignal(SIGQUIT, startup_die); 0.00 : 646bc2: e8 39 5f 16 00 callq 7acb00 : InitializeTimeouts(); /* establishes SIGALRM handler */ 0.00 : 646bc7: e8 d4 07 15 00 callq 7973a0 : PG_SETMASK(&StartupBlockSig); 0.00 : 646bcc: 31 d2 xor %edx,%edx 0.00 : 646bce: be 40 f9 bb 00 mov $0xbbf940,%esi 0.00 : 646bd3: bf 02 00 00 00 mov $0x2,%edi 0.00 : 646bd8: e8 e3 2e e2 ff callq 469ac0 : /* : * Get the remote host name and port for logging and status display. : */ : remote_host[0] = '\0'; : remote_port[0] = '\0'; : if ((ret = pg_getnameinfo_all(&port->raddr.addr, port->raddr.salen, 0.00 : 646bdd: 80 3d bc 8e 57 00 01 cmpb $0x1,0x578ebc(%rip) # bbfaa0 0.00 : 646be4: 41 8b b4 24 18 01 00 mov 0x118(%r12),%esi 0.00 : 646beb: 00 0.00 : 646bec: 49 8d bc 24 98 00 00 lea 0x98(%r12),%rdi 0.00 : 646bf3: 00 0.00 : 646bf4: 41 b9 20 00 00 00 mov $0x20,%r9d 0.00 : 646bfa: 4d 89 f8 mov %r15,%r8 0.00 : 646bfd: b9 01 04 00 00 mov $0x401,%ecx 0.00 : 646c02: 4c 89 ea mov %r13,%rdx : PG_SETMASK(&StartupBlockSig); : : /* : * Get the remote host name and port for logging and status display. : */ : remote_host[0] = '\0'; 0.00 : 646c05: c6 85 a0 fb ff ff 00 movb $0x0,-0x460(%rbp) : remote_port[0] = '\0'; 0.00 : 646c0c: c6 45 b0 00 movb $0x0,-0x50(%rbp) : if ((ret = pg_getnameinfo_all(&port->raddr.addr, port->raddr.salen, 0.00 : 646c10: 19 c0 sbb %eax,%eax 0.00 : 646c12: f7 d0 not %eax 0.00 : 646c14: 83 c0 03 add $0x3,%eax 0.00 : 646c17: 89 04 24 mov %eax,(%rsp) 0.00 : 646c1a: e8 a1 38 f9 ff callq 5da4c0 0.00 : 646c1f: 85 c0 test %eax,%eax 0.00 : 646c21: 89 c3 mov %eax,%ebx 0.00 : 646c23: 0f 85 17 02 00 00 jne 646e40 : remote_port, sizeof(remote_port), : (log_hostname ? 0 : NI_NUMERICHOST) | NI_NUMERICSERV)) != 0) : ereport(WARNING, : (errmsg_internal("pg_getnameinfo_all() failed: %s", : gai_strerror(ret)))); : if (remote_port[0] == '\0') 0.00 : 646c29: 80 7d b0 00 cmpb $0x0,-0x50(%rbp) 0.00 : 646c2d: 0f 84 7d 01 00 00 je 646db0 : snprintf(remote_ps_data, sizeof(remote_ps_data), "%s", remote_host); : else : snprintf(remote_ps_data, sizeof(remote_ps_data), "%s(%s)", remote_host, remote_port); 0.00 : 646c33: 4c 8d b5 90 f7 ff ff lea -0x870(%rbp),%r14 0.00 : 646c3a: 4d 89 f8 mov %r15,%r8 0.00 : 646c3d: 4c 89 e9 mov %r13,%rcx 0.00 : 646c40: ba 89 fa 89 00 mov $0x89fa89,%edx 0.00 : 646c45: be 01 04 00 00 mov $0x401,%esi 0.00 : 646c4a: 31 c0 xor %eax,%eax 0.00 : 646c4c: 4c 89 f7 mov %r14,%rdi 0.00 : 646c4f: e8 fc 27 e2 ff callq 469450 : : if (Log_connections) 0.00 : 646c54: 80 3d f5 52 53 00 00 cmpb $0x0,0x5352f5(%rip) # b7bf50 0.00 : 646c5b: 74 33 je 646c90 : { : if (remote_port[0]) 0.00 : 646c5d: 80 7d b0 00 cmpb $0x0,-0x50(%rbp) 0.00 : 646c61: 0f 84 29 02 00 00 je 646e90 : ereport(LOG, 0.00 : 646c67: 45 31 c0 xor %r8d,%r8d 0.00 : 646c6a: b9 00 10 8a 00 mov $0x8a1000,%ecx 0.00 : 646c6f: ba 76 0f 00 00 mov $0xf76,%edx 0.00 : 646c74: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646c79: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 646c7e: e8 3d 3e 13 00 callq 77aac0 0.00 : 646c83: 84 c0 test %al,%al 0.00 : 646c85: 0f 85 4d 02 00 00 jne 646ed8 0.00 : 646c8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* : * save remote_host and remote_port in port structure : */ : port->remote_host = strdup(remote_host); 0.00 : 646c90: 4c 89 ef mov %r13,%rdi 0.00 : 646c93: e8 48 2b e2 ff callq 4697e0 <__strdup@plt> : port->remote_port = strdup(remote_port); 0.00 : 646c98: 4c 89 ff mov %r15,%rdi : } : : /* : * save remote_host and remote_port in port structure : */ : port->remote_host = strdup(remote_host); 0.00 : 646c9b: 49 89 84 24 20 01 00 mov %rax,0x120(%r12) 0.00 : 646ca2: 00 : port->remote_port = strdup(remote_port); 0.00 : 646ca3: e8 38 2b e2 ff callq 4697e0 <__strdup@plt> 0.00 : 646ca8: 49 89 84 24 38 01 00 mov %rax,0x138(%r12) 0.00 : 646caf: 00 : * must check whether we got a numeric IPv4 or IPv6 address, and not save : * it into remote_hostname if so. (This test is conservative and might : * sometimes classify a hostname as numeric, but an error in that : * direction is safe; it only results in a possible extra lookup.) : */ : if (log_hostname && 0.00 : 646cb0: 80 3d e9 8d 57 00 00 cmpb $0x0,0x578de9(%rip) # bbfaa0 0.00 : 646cb7: 74 57 je 646d10 0.00 : 646cb9: 85 db test %ebx,%ebx 0.00 : 646cbb: 75 53 jne 646d10 : ret == 0 && : strspn(remote_host, "0123456789.") < strlen(remote_host) && 0.00 : 646cbd: be ad fa 89 00 mov $0x89faad,%esi 0.00 : 646cc2: 4c 89 ef mov %r13,%rdi : * must check whether we got a numeric IPv4 or IPv6 address, and not save : * it into remote_hostname if so. (This test is conservative and might : * sometimes classify a hostname as numeric, but an error in that : * direction is safe; it only results in a possible extra lookup.) : */ : if (log_hostname && 0.00 : 646cc5: 4c 89 eb mov %r13,%rbx : ret == 0 && : strspn(remote_host, "0123456789.") < strlen(remote_host) && 0.00 : 646cc8: e8 53 2f e2 ff callq 469c20 0.00 : 646ccd: 48 89 c1 mov %rax,%rcx : * must check whether we got a numeric IPv4 or IPv6 address, and not save : * it into remote_hostname if so. (This test is conservative and might : * sometimes classify a hostname as numeric, but an error in that : * direction is safe; it only results in a possible extra lookup.) : */ : if (log_hostname && 0.00 : 646cd0: 8b 03 mov (%rbx),%eax 0.00 : 646cd2: 48 83 c3 04 add $0x4,%rbx 0.00 : 646cd6: 8d 90 ff fe fe fe lea -0x1010101(%rax),%edx 0.00 : 646cdc: f7 d0 not %eax 0.00 : 646cde: 21 c2 and %eax,%edx 0.00 : 646ce0: 81 e2 80 80 80 80 and $0x80808080,%edx 0.00 : 646ce6: 74 e8 je 646cd0 0.00 : 646ce8: 89 d0 mov %edx,%eax 0.00 : 646cea: c1 e8 10 shr $0x10,%eax 0.00 : 646ced: f7 c2 80 80 00 00 test $0x8080,%edx 0.00 : 646cf3: 0f 44 d0 cmove %eax,%edx 0.00 : 646cf6: 48 8d 43 02 lea 0x2(%rbx),%rax 0.00 : 646cfa: 48 0f 44 d8 cmove %rax,%rbx 0.00 : 646cfe: 00 d2 add %dl,%dl 0.00 : 646d00: 48 83 db 03 sbb $0x3,%rbx 0.00 : 646d04: 4c 29 eb sub %r13,%rbx 0.00 : 646d07: 48 39 d9 cmp %rbx,%rcx 0.00 : 646d0a: 0f 82 c8 00 00 00 jb 646dd8 : * : * Note: because PostgresMain will call InitializeTimeouts again, the : * registration of STARTUP_PACKET_TIMEOUT will be lost. This is okay : * since we never use it again after this function. : */ : RegisterTimeout(STARTUP_PACKET_TIMEOUT, StartupPacketTimeoutHandler); 0.00 : 646d10: 31 ff xor %edi,%edi 0.00 : 646d12: be 90 5c 64 00 mov $0x645c90,%esi 0.00 : 646d17: e8 d4 05 15 00 callq 7972f0 : enable_timeout_after(STARTUP_PACKET_TIMEOUT, AuthenticationTimeout * 1000); 0.00 : 646d1c: 44 8b 05 fd 18 52 00 mov 0x5218fd(%rip),%r8d # b68620 0.00 : 646d23: 31 ff xor %edi,%edi 0.00 : 646d25: 41 69 f0 e8 03 00 00 imul $0x3e8,%r8d,%esi 0.00 : 646d2c: e8 1f 05 15 00 callq 797250 : : /* : * Receive the startup packet (which might turn out to be a cancel request : * packet). : */ : status = ProcessStartupPacket(port, false); 0.00 : 646d31: 31 f6 xor %esi,%esi 0.00 : 646d33: 4c 89 e7 mov %r12,%rdi 0.00 : 646d36: e8 25 f4 ff ff callq 646160 : : /* : * Stop here if it was bad or a cancel packet. ProcessStartupPacket : * already did any appropriate error reporting. : */ : if (status != STATUS_OK) 0.00 : 646d3b: 85 c0 test %eax,%eax 0.00 : 646d3d: 0f 85 df 01 00 00 jne 646f22 : * : * To achieve that, we pass "wal sender process" as username and username : * as dbname to init_ps_display(). XXX: should add a new variant of : * init_ps_display() to avoid abusing the parameters like this. : */ : if (am_walsender) 0.00 : 646d43: 80 3d 76 60 53 00 00 cmpb $0x0,0x536076(%rip) # b7cdc0 0.00 : 646d4a: 0f 84 b8 00 00 00 je 646e08 : init_ps_display("wal sender process", port->user_name, remote_ps_data, 0.00 : 646d50: 80 3d 6d b8 52 00 00 cmpb $0x0,0x52b86d(%rip) # b725c4 0.00 : 646d57: 49 8b b4 24 50 01 00 mov 0x150(%r12),%rsi 0.00 : 646d5e: 00 0.00 : 646d5f: b9 96 16 8e 00 mov $0x8e1696,%ecx 0.00 : 646d64: b8 d1 fa 89 00 mov $0x89fad1,%eax 0.00 : 646d69: 4c 89 f2 mov %r14,%rdx 0.00 : 646d6c: bf e0 fa 89 00 mov $0x89fae0,%edi 0.00 : 646d71: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 646d75: e8 66 ef 14 00 callq 795ce0 : update_process_title ? "authentication" : ""); : : /* : * Disable the timeout, and prevent SIGTERM/SIGQUIT again. : */ : disable_timeout(STARTUP_PACKET_TIMEOUT, false); 0.00 : 646d7a: 31 f6 xor %esi,%esi 0.00 : 646d7c: 31 ff xor %edi,%edi 0.00 : 646d7e: e8 0d 03 15 00 callq 797090 : PG_SETMASK(&BlockSig); 0.00 : 646d83: 31 d2 xor %edx,%edx 0.00 : 646d85: be c0 f8 bb 00 mov $0xbbf8c0,%esi 0.00 : 646d8a: bf 02 00 00 00 mov $0x2,%edi 0.00 : 646d8f: e8 2c 2d e2 ff callq 469ac0 : } 0.00 : 646d94: 48 81 c4 58 08 00 00 add $0x858,%rsp 0.00 : 646d9b: 5b pop %rbx 0.00 : 646d9c: 41 5c pop %r12 0.00 : 646d9e: 41 5d pop %r13 0.00 : 646da0: 41 5e pop %r14 0.00 : 646da2: 41 5f pop %r15 0.00 : 646da4: c9 leaveq 0.00 : 646da5: c3 retq 0.00 : 646da6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 646dad: 00 00 00 : (log_hostname ? 0 : NI_NUMERICHOST) | NI_NUMERICSERV)) != 0) : ereport(WARNING, : (errmsg_internal("pg_getnameinfo_all() failed: %s", : gai_strerror(ret)))); : if (remote_port[0] == '\0') : snprintf(remote_ps_data, sizeof(remote_ps_data), "%s", remote_host); 0.00 : 646db0: 4c 8d b5 90 f7 ff ff lea -0x870(%rbp),%r14 0.00 : 646db7: 4c 89 e9 mov %r13,%rcx 0.00 : 646dba: ba 19 fb 89 00 mov $0x89fb19,%edx 0.00 : 646dbf: be 01 04 00 00 mov $0x401,%esi 0.00 : 646dc4: 31 c0 xor %eax,%eax 0.00 : 646dc6: 4c 89 f7 mov %r14,%rdi 0.00 : 646dc9: e8 82 26 e2 ff callq 469450 0.00 : 646dce: e9 81 fe ff ff jmpq 646c54 0.00 : 646dd3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * direction is safe; it only results in a possible extra lookup.) : */ : if (log_hostname && : ret == 0 && : strspn(remote_host, "0123456789.") < strlen(remote_host) && : strspn(remote_host, "0123456789ABCDEFabcdef:") < strlen(remote_host)) 0.00 : 646dd8: be b9 fa 89 00 mov $0x89fab9,%esi 0.00 : 646ddd: 4c 89 ef mov %r13,%rdi 0.00 : 646de0: e8 3b 2e e2 ff callq 469c20 : * must check whether we got a numeric IPv4 or IPv6 address, and not save : * it into remote_hostname if so. (This test is conservative and might : * sometimes classify a hostname as numeric, but an error in that : * direction is safe; it only results in a possible extra lookup.) : */ : if (log_hostname && 0.00 : 646de5: 48 39 c3 cmp %rax,%rbx 0.00 : 646de8: 0f 86 22 ff ff ff jbe 646d10 : ret == 0 && : strspn(remote_host, "0123456789.") < strlen(remote_host) && : strspn(remote_host, "0123456789ABCDEFabcdef:") < strlen(remote_host)) : port->remote_hostname = strdup(remote_host); 0.00 : 646dee: 4c 89 ef mov %r13,%rdi 0.00 : 646df1: e8 ea 29 e2 ff callq 4697e0 <__strdup@plt> 0.00 : 646df6: 49 89 84 24 28 01 00 mov %rax,0x128(%r12) 0.00 : 646dfd: 00 0.00 : 646dfe: e9 0d ff ff ff jmpq 646d10 0.00 : 646e03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : if (am_walsender) : init_ps_display("wal sender process", port->user_name, remote_ps_data, : update_process_title ? "authentication" : ""); : else : init_ps_display(port->user_name, port->database_name, remote_ps_data, 0.00 : 646e08: 80 3d b5 b7 52 00 00 cmpb $0x0,0x52b7b5(%rip) # b725c4 0.00 : 646e0f: 49 8b b4 24 48 01 00 mov 0x148(%r12),%rsi 0.00 : 646e16: 00 0.00 : 646e17: b8 d1 fa 89 00 mov $0x89fad1,%eax 0.00 : 646e1c: 49 8b bc 24 50 01 00 mov 0x150(%r12),%rdi 0.00 : 646e23: 00 0.00 : 646e24: b9 96 16 8e 00 mov $0x8e1696,%ecx 0.00 : 646e29: 4c 89 f2 mov %r14,%rdx 0.00 : 646e2c: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 646e30: e8 ab ee 14 00 callq 795ce0 0.00 : 646e35: e9 40 ff ff ff jmpq 646d7a 0.00 : 646e3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : remote_port[0] = '\0'; : if ((ret = pg_getnameinfo_all(&port->raddr.addr, port->raddr.salen, : remote_host, sizeof(remote_host), : remote_port, sizeof(remote_port), : (log_hostname ? 0 : NI_NUMERICHOST) | NI_NUMERICSERV)) != 0) : ereport(WARNING, 0.00 : 646e40: 45 31 c0 xor %r8d,%r8d 0.00 : 646e43: b9 00 10 8a 00 mov $0x8a1000,%ecx 0.00 : 646e48: ba 6a 0f 00 00 mov $0xf6a,%edx 0.00 : 646e4d: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646e52: bf 13 00 00 00 mov $0x13,%edi 0.00 : 646e57: e8 64 3c 13 00 callq 77aac0 0.00 : 646e5c: 84 c0 test %al,%al 0.00 : 646e5e: 0f 84 c5 fd ff ff je 646c29 0.00 : 646e64: 89 df mov %ebx,%edi 0.00 : 646e66: e8 f5 31 e2 ff callq 46a060 0.00 : 646e6b: bf a8 03 8a 00 mov $0x8a03a8,%edi 0.00 : 646e70: 48 89 c6 mov %rax,%rsi 0.00 : 646e73: 31 c0 xor %eax,%eax 0.00 : 646e75: e8 96 3a 13 00 callq 77a910 0.00 : 646e7a: 89 c7 mov %eax,%edi 0.00 : 646e7c: 31 c0 xor %eax,%eax 0.00 : 646e7e: e8 5d 37 13 00 callq 77a5e0 0.00 : 646e83: e9 a1 fd ff ff jmpq 646c29 0.00 : 646e88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 646e8f: 00 : ereport(LOG, : (errmsg("connection received: host=%s port=%s", : remote_host, : remote_port))); : else : ereport(LOG, 0.00 : 646e90: 45 31 c0 xor %r8d,%r8d 0.00 : 646e93: b9 00 10 8a 00 mov $0x8a1000,%ecx 0.00 : 646e98: ba 7a 0f 00 00 mov $0xf7a,%edx 0.00 : 646e9d: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646ea2: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 646ea7: e8 14 3c 13 00 callq 77aac0 0.00 : 646eac: 84 c0 test %al,%al 0.00 : 646eae: 0f 84 dc fd ff ff je 646c90 0.00 : 646eb4: 4c 89 ee mov %r13,%rsi 0.00 : 646eb7: bf 90 fa 89 00 mov $0x89fa90,%edi 0.00 : 646ebc: 31 c0 xor %eax,%eax 0.00 : 646ebe: e8 dd 59 13 00 callq 77c8a0 0.00 : 646ec3: 89 c7 mov %eax,%edi 0.00 : 646ec5: 31 c0 xor %eax,%eax 0.00 : 646ec7: e8 14 37 13 00 callq 77a5e0 0.00 : 646ecc: e9 bf fd ff ff jmpq 646c90 0.00 : 646ed1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : snprintf(remote_ps_data, sizeof(remote_ps_data), "%s(%s)", remote_host, remote_port); : : if (Log_connections) : { : if (remote_port[0]) : ereport(LOG, 0.00 : 646ed8: 4c 89 fa mov %r15,%rdx 0.00 : 646edb: 4c 89 ee mov %r13,%rsi 0.00 : 646ede: bf c8 03 8a 00 mov $0x8a03c8,%edi 0.00 : 646ee3: 31 c0 xor %eax,%eax 0.00 : 646ee5: e8 b6 59 13 00 callq 77c8a0 0.00 : 646eea: 89 c7 mov %eax,%edi 0.00 : 646eec: 31 c0 xor %eax,%eax 0.00 : 646eee: e8 ed 36 13 00 callq 77a5e0 0.00 : 646ef3: e9 98 fd ff ff jmpq 646c90 : * can signal any child processes too. (We do this now on the off chance : * that something might spawn a child process during authentication.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) : elog(FATAL, "setsid() failed: %m"); 0.00 : 646ef8: ba 00 10 8a 00 mov $0x8a1000,%edx 0.00 : 646efd: be 51 0f 00 00 mov $0xf51,%esi 0.00 : 646f02: bf 06 fa 89 00 mov $0x89fa06,%edi 0.00 : 646f07: e8 14 45 13 00 callq 77b420 0.00 : 646f0c: be 83 fe 7b 00 mov $0x7bfe83,%esi 0.00 : 646f11: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646f16: 31 c0 xor %eax,%eax 0.00 : 646f18: e8 13 43 13 00 callq 77b230 0.00 : 646f1d: e8 ae 25 e2 ff callq 4694d0 : /* : * Stop here if it was bad or a cancel packet. ProcessStartupPacket : * already did any appropriate error reporting. : */ : if (status != STATUS_OK) : proc_exit(0); 0.00 : 646f22: 31 ff xor %edi,%edi 0.00 : 646f24: e8 f7 7d 03 00 callq 67ed20 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/rewrite/rowsecurity.c:474 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006735a0 : : * : * Handle checking as another role via checkAsUser (for views, etc). : */ : int : check_enable_rls(Oid relid, Oid checkAsUser) : { /home/Computational/mark/src/postgres-andres/src/backend/rewrite/rowsecurity.c:474 100.00 : 6735a0: 55 push %rbp 0.00 : 6735a1: 48 89 e5 mov %rsp,%rbp 0.00 : 6735a4: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 6735a8: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 6735ac: 41 89 f4 mov %esi,%r12d 0.00 : 6735af: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 6735b3: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 6735b7: 48 83 ec 20 sub $0x20,%rsp : HeapTuple tuple; : Form_pg_class classform; : bool relrowsecurity; : Oid user_id = checkAsUser ? checkAsUser : GetUserId(); 0.00 : 6735bb: 85 f6 test %esi,%esi : * : * Handle checking as another role via checkAsUser (for views, etc). : */ : int : check_enable_rls(Oid relid, Oid checkAsUser) : { 0.00 : 6735bd: 41 89 fe mov %edi,%r14d : HeapTuple tuple; : Form_pg_class classform; : bool relrowsecurity; : Oid user_id = checkAsUser ? checkAsUser : GetUserId(); 0.00 : 6735c0: 41 89 f5 mov %esi,%r13d 0.00 : 6735c3: 74 7b je 673640 : : tuple = SearchSysCache1(RELOID, ObjectIdGetDatum(relid)); 0.00 : 6735c5: 31 c9 xor %ecx,%ecx 0.00 : 6735c7: 45 31 c0 xor %r8d,%r8d 0.00 : 6735ca: 31 d2 xor %edx,%edx 0.00 : 6735cc: 44 89 f6 mov %r14d,%esi 0.00 : 6735cf: bf 2d 00 00 00 mov $0x2d,%edi 0.00 : 6735d4: e8 e7 e6 0f 00 callq 771cc0 : if (!HeapTupleIsValid(tuple)) 0.00 : 6735d9: 48 85 c0 test %rax,%rax : HeapTuple tuple; : Form_pg_class classform; : bool relrowsecurity; : Oid user_id = checkAsUser ? checkAsUser : GetUserId(); : : tuple = SearchSysCache1(RELOID, ObjectIdGetDatum(relid)); 0.00 : 6735dc: 48 89 c1 mov %rax,%rcx : if (!HeapTupleIsValid(tuple)) 0.00 : 6735df: 74 3f je 673620 : return RLS_NONE; : : classform = (Form_pg_class) GETSTRUCT(tuple); 0.00 : 6735e1: 48 8b 40 10 mov 0x10(%rax),%rax : : relrowsecurity = classform->relrowsecurity; : : ReleaseSysCache(tuple); 0.00 : 6735e5: 48 89 cf mov %rcx,%rdi : if (!HeapTupleIsValid(tuple)) : return RLS_NONE; : : classform = (Form_pg_class) GETSTRUCT(tuple); : : relrowsecurity = classform->relrowsecurity; 0.00 : 6735e8: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 6735ec: 0f b6 5c 10 79 movzbl 0x79(%rax,%rdx,1),%ebx : : ReleaseSysCache(tuple); 0.00 : 6735f1: e8 ba e6 0f 00 callq 771cb0 : : /* Nothing to do if the relation does not have RLS */ : if (!relrowsecurity) 0.00 : 6735f6: 84 db test %bl,%bl 0.00 : 6735f8: 74 26 je 673620 : * : * Return RLS_NONE_ENV to indicate that this decision depends on the : * environment (in this case, what the current values of user_id and : * row_security are). : */ : if (row_security != ROW_SECURITY_FORCE 0.00 : 6735fa: 83 3d 8f 55 4f 00 02 cmpl $0x2,0x4f558f(%rip) # b68b90 0.00 : 673601: 75 65 jne 673668 : * : * Note that row_security is always considered 'on' when querying : * through a view or other cases where checkAsUser is true, so skip this : * if checkAsUser is in use. : */ : if (!checkAsUser && row_security == ROW_SECURITY_OFF) 0.00 : 673603: 45 85 e4 test %r12d,%r12d 0.00 : 673606: 75 0a jne 673612 0.00 : 673608: 8b 05 82 55 4f 00 mov 0x4f5582(%rip),%eax # b68b90 0.00 : 67360e: 85 c0 test %eax,%eax 0.00 : 673610: 74 3e je 673650 : { : if (has_bypassrls_privilege(user_id)) : /* OK to bypass */ : return RLS_NONE_ENV; : else : ereport(ERROR, 0.00 : 673612: b8 02 00 00 00 mov $0x2,%eax 0.00 : 673617: eb 09 jmp 673622 0.00 : 673619: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 673620: 31 c0 xor %eax,%eax : errmsg("insufficient privilege to bypass row security."))); : } : : /* RLS should be fully enabled for this relation. */ : return RLS_ENABLED; : } 0.00 : 673622: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 673626: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 67362b: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 673630: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 673635: c9 leaveq 0.00 : 673636: c3 retq 0.00 : 673637: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67363e: 00 00 : check_enable_rls(Oid relid, Oid checkAsUser) : { : HeapTuple tuple; : Form_pg_class classform; : bool relrowsecurity; : Oid user_id = checkAsUser ? checkAsUser : GetUserId(); 0.00 : 673640: e8 6b 19 11 00 callq 784fb0 0.00 : 673645: 41 89 c5 mov %eax,%r13d 0.00 : 673648: e9 78 ff ff ff jmpq 6735c5 0.00 : 67364d: 0f 1f 00 nopl (%rax) : * through a view or other cases where checkAsUser is true, so skip this : * if checkAsUser is in use. : */ : if (!checkAsUser && row_security == ROW_SECURITY_OFF) : { : if (has_bypassrls_privilege(user_id)) 0.00 : 673650: 44 89 ef mov %r13d,%edi 0.00 : 673653: e8 f8 db e7 ff callq 4f1250 0.00 : 673658: 84 c0 test %al,%al 0.00 : 67365a: 74 1d je 673679 : /* OK to bypass */ : return RLS_NONE_ENV; : else : ereport(ERROR, 0.00 : 67365c: b8 01 00 00 00 mov $0x1,%eax 0.00 : 673661: eb bf jmp 673622 0.00 : 673663: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * : * Return RLS_NONE_ENV to indicate that this decision depends on the : * environment (in this case, what the current values of user_id and : * row_security are). : */ : if (row_security != ROW_SECURITY_FORCE 0.00 : 673668: 44 89 ee mov %r13d,%esi 0.00 : 67366b: 44 89 f7 mov %r14d,%edi 0.00 : 67366e: e8 2d eb e7 ff callq 4f21a0 0.00 : 673673: 84 c0 test %al,%al 0.00 : 673675: 74 8c je 673603 0.00 : 673677: eb e3 jmp 67365c : { : if (has_bypassrls_privilege(user_id)) : /* OK to bypass */ : return RLS_NONE_ENV; : else : ereport(ERROR, 0.00 : 673679: 45 31 c0 xor %r8d,%r8d 0.00 : 67367c: b9 a0 9c 8a 00 mov $0x8a9ca0,%ecx 0.00 : 673681: ba 12 02 00 00 mov $0x212,%edx 0.00 : 673686: be 46 9c 8a 00 mov $0x8a9c46,%esi 0.00 : 67368b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 673690: e8 2b 74 10 00 callq 77aac0 0.00 : 673695: 84 c0 test %al,%al 0.00 : 673697: 75 05 jne 67369e 0.00 : 673699: e8 32 5e df ff callq 4694d0 0.00 : 67369e: bf 70 9c 8a 00 mov $0x8a9c70,%edi 0.00 : 6736a3: 31 c0 xor %eax,%eax 0.00 : 6736a5: e8 f6 91 10 00 callq 77c8a0 0.00 : 6736aa: bf 84 50 00 01 mov $0x1005084,%edi 0.00 : 6736af: 89 c3 mov %eax,%ebx 0.00 : 6736b1: e8 9a 96 10 00 callq 77cd50 0.00 : 6736b6: 89 de mov %ebx,%esi 0.00 : 6736b8: 89 c7 mov %eax,%edi 0.00 : 6736ba: 31 c0 xor %eax,%eax 0.00 : 6736bc: e8 1f 6f 10 00 callq 77a5e0 0.00 : 6736c1: eb d6 jmp 673699 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:499 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067be00 : : * If the page doesn't exist, InvalidBuffer is returned, or if 'extend' is : * true, the FSM file is extended. : */ : static Buffer : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { 0.00 : 67be00: 55 push %rbp 0.00 : 67be01: 48 89 e5 mov %rsp,%rbp 0.00 : 67be04: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:499 100.00 : 67be08: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 67be0c: 49 89 fc mov %rdi,%r12 0.00 : 67be0f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 67be13: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 67be17: 48 89 f7 mov %rsi,%rdi 0.00 : 67be1a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 67be1e: 48 83 ec 30 sub $0x30,%rsp 0.00 : 67be22: 41 89 d5 mov %edx,%r13d : BlockNumber blkno = fsm_logical_to_physical(addr); 0.00 : 67be25: e8 46 ff ff ff callq 67bd70 : Buffer buf; : : RelationOpenSmgr(rel); 0.00 : 67be2a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi : * true, the FSM file is extended. : */ : static Buffer : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { : BlockNumber blkno = fsm_logical_to_physical(addr); 0.00 : 67be2f: 41 89 c6 mov %eax,%r14d : Buffer buf; : : RelationOpenSmgr(rel); 0.00 : 67be32: 48 85 ff test %rdi,%rdi 0.00 : 67be35: 0f 84 d5 01 00 00 je 67c010 : * If we haven't cached the size of the FSM yet, check it first. Also : * recheck if the requested block seems to be past end, since our cached : * value might be stale. (We send smgr inval messages on truncation, but : * not on extension.) : */ : if (rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber || 0.00 : 67be3b: 8b 47 1c mov 0x1c(%rdi),%eax 0.00 : 67be3e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 67be41: 74 09 je 67be4c 0.00 : 67be43: 41 39 c6 cmp %eax,%r14d 0.00 : 67be46: 0f 82 0e 01 00 00 jb 67bf5a : blkno >= rel->rd_smgr->smgr_fsm_nblocks) : { : if (smgrexists(rel->rd_smgr, FSM_FORKNUM)) 0.00 : 67be4c: be 01 00 00 00 mov $0x1,%esi 0.00 : 67be51: e8 5a d5 01 00 callq 6993b0 0.00 : 67be56: 84 c0 test %al,%al 0.00 : 67be58: 0f 85 62 01 00 00 jne 67bfc0 : rel->rd_smgr->smgr_fsm_nblocks = smgrnblocks(rel->rd_smgr, : FSM_FORKNUM); : else : rel->rd_smgr->smgr_fsm_nblocks = 0; 0.00 : 67be5e: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 67be63: c7 40 1c 00 00 00 00 movl $0x0,0x1c(%rax) : } : : /* Handle requests beyond EOF */ : if (blkno >= rel->rd_smgr->smgr_fsm_nblocks) 0.00 : 67be6a: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 67be6f: 44 3b 70 1c cmp 0x1c(%rax),%r14d 0.00 : 67be73: 0f 82 e1 00 00 00 jb 67bf5a : { : if (extend) 0.00 : 67be79: 31 db xor %ebx,%ebx 0.00 : 67be7b: 45 84 ed test %r13b,%r13b 0.00 : 67be7e: 75 20 jne 67bea0 : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); : if (PageIsNew(BufferGetPage(buf))) : PageInit(BufferGetPage(buf), BLCKSZ, 0); : return buf; : } 0.00 : 67be80: 89 d8 mov %ebx,%eax 0.00 : 67be82: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 67be86: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 67be8a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 67be8e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 67be92: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 67be96: c9 leaveq 0.00 : 67be97: c3 retq 0.00 : 67be98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67be9f: 00 : fsm_extend(Relation rel, BlockNumber fsm_nblocks) : { : BlockNumber fsm_nblocks_now; : Page pg; : : pg = (Page) palloc(BLCKSZ); 0.00 : 67bea0: bf 00 20 00 00 mov $0x2000,%edi : : /* Handle requests beyond EOF */ : if (blkno >= rel->rd_smgr->smgr_fsm_nblocks) : { : if (extend) : fsm_extend(rel, blkno + 1); 0.00 : 67bea5: 45 8d 7e 01 lea 0x1(%r14),%r15d : fsm_extend(Relation rel, BlockNumber fsm_nblocks) : { : BlockNumber fsm_nblocks_now; : Page pg; : : pg = (Page) palloc(BLCKSZ); 0.00 : 67bea9: e8 a2 ce 11 00 callq 798d50 : PageInit(pg, BLCKSZ, 0); 0.00 : 67beae: 31 d2 xor %edx,%edx 0.00 : 67beb0: 48 89 c7 mov %rax,%rdi 0.00 : 67beb3: be 00 20 00 00 mov $0x2000,%esi : fsm_extend(Relation rel, BlockNumber fsm_nblocks) : { : BlockNumber fsm_nblocks_now; : Page pg; : : pg = (Page) palloc(BLCKSZ); 0.00 : 67beb8: 49 89 c5 mov %rax,%r13 : PageInit(pg, BLCKSZ, 0); 0.00 : 67bebb: e8 80 a3 01 00 callq 696240 : * it. : * : * Note that another backend might have extended or created the relation : * by the time we get the lock. : */ : LockRelationForExtension(rel, ExclusiveLock); 0.00 : 67bec0: 4c 89 e7 mov %r12,%rdi 0.00 : 67bec3: be 07 00 00 00 mov $0x7,%esi 0.00 : 67bec8: e8 73 bf 00 00 callq 687e40 : : /* Might have to re-open if a cache flush happened */ : RelationOpenSmgr(rel); 0.00 : 67becd: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67bed2: 48 85 ff test %rdi,%rdi 0.00 : 67bed5: 0f 84 75 01 00 00 je 67c050 : : /* : * Create the FSM file first if it doesn't exist. If smgr_fsm_nblocks is : * positive then it must exist, no need for an smgrexists call. : */ : if ((rel->rd_smgr->smgr_fsm_nblocks == 0 || 0.00 : 67bedb: 8b 47 1c mov 0x1c(%rdi),%eax 0.00 : 67bede: 83 e8 01 sub $0x1,%eax 0.00 : 67bee1: 83 f8 fd cmp $0xfffffffd,%eax 0.00 : 67bee4: 76 17 jbe 67befd 0.00 : 67bee6: be 01 00 00 00 mov $0x1,%esi 0.00 : 67beeb: e8 c0 d4 01 00 callq 6993b0 0.00 : 67bef0: 84 c0 test %al,%al 0.00 : 67bef2: 0f 84 42 01 00 00 je 67c03a : rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber) && : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); 0.00 : 67bef8: 49 8b 7c 24 10 mov 0x10(%r12),%rdi : : fsm_nblocks_now = smgrnblocks(rel->rd_smgr, FSM_FORKNUM); 0.00 : 67befd: be 01 00 00 00 mov $0x1,%esi 0.00 : 67bf02: e8 49 d5 01 00 callq 699450 : : while (fsm_nblocks_now < fsm_nblocks) 0.00 : 67bf07: 41 39 c7 cmp %eax,%r15d : if ((rel->rd_smgr->smgr_fsm_nblocks == 0 || : rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber) && : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); : : fsm_nblocks_now = smgrnblocks(rel->rd_smgr, FSM_FORKNUM); 0.00 : 67bf0a: 89 c2 mov %eax,%edx : : while (fsm_nblocks_now < fsm_nblocks) 0.00 : 67bf0c: 76 2f jbe 67bf3d 0.00 : 67bf0e: 89 c3 mov %eax,%ebx : { : PageSetChecksumInplace(pg, fsm_nblocks_now); 0.00 : 67bf10: 89 de mov %ebx,%esi 0.00 : 67bf12: 4c 89 ef mov %r13,%rdi 0.00 : 67bf15: e8 c6 8e 01 00 callq 694de0 : : smgrextend(rel->rd_smgr, FSM_FORKNUM, fsm_nblocks_now, 0.00 : 67bf1a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67bf1f: 45 31 c0 xor %r8d,%r8d 0.00 : 67bf22: 89 da mov %ebx,%edx 0.00 : 67bf24: 4c 89 e9 mov %r13,%rcx 0.00 : 67bf27: be 01 00 00 00 mov $0x1,%esi : (char *) pg, false); : fsm_nblocks_now++; 0.00 : 67bf2c: 83 c3 01 add $0x1,%ebx : : while (fsm_nblocks_now < fsm_nblocks) : { : PageSetChecksumInplace(pg, fsm_nblocks_now); : : smgrextend(rel->rd_smgr, FSM_FORKNUM, fsm_nblocks_now, 0.00 : 67bf2f: e8 9c d4 01 00 callq 6993d0 : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); : : fsm_nblocks_now = smgrnblocks(rel->rd_smgr, FSM_FORKNUM); : : while (fsm_nblocks_now < fsm_nblocks) 0.00 : 67bf34: 41 39 df cmp %ebx,%r15d 0.00 : 67bf37: 77 d7 ja 67bf10 : * If the page doesn't exist, InvalidBuffer is returned, or if 'extend' is : * true, the FSM file is extended. : */ : static Buffer : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { 0.00 : 67bf39: 41 8d 56 01 lea 0x1(%r14),%edx : (char *) pg, false); : fsm_nblocks_now++; : } : : /* Update local cache with the up-to-date size */ : rel->rd_smgr->smgr_fsm_nblocks = fsm_nblocks_now; 0.00 : 67bf3d: 49 8b 44 24 10 mov 0x10(%r12),%rax : : UnlockRelationForExtension(rel, ExclusiveLock); 0.00 : 67bf42: 4c 89 e7 mov %r12,%rdi 0.00 : 67bf45: be 07 00 00 00 mov $0x7,%esi : (char *) pg, false); : fsm_nblocks_now++; : } : : /* Update local cache with the up-to-date size */ : rel->rd_smgr->smgr_fsm_nblocks = fsm_nblocks_now; 0.00 : 67bf4a: 89 50 1c mov %edx,0x1c(%rax) : : UnlockRelationForExtension(rel, ExclusiveLock); 0.00 : 67bf4d: e8 3e bc 00 00 callq 687b90 : : pfree(pg); 0.00 : 67bf52: 4c 89 ef mov %r13,%rdi 0.00 : 67bf55: e8 26 cc 11 00 callq 798b80 : * information is not accurate anyway, so it's better to clear corrupt : * pages than error out. Since the FSM changes are not WAL-logged, the : * so-called torn page problem on crash can lead to pages with corrupt : * headers, for example. : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); 0.00 : 67bf5a: 45 31 c0 xor %r8d,%r8d 0.00 : 67bf5d: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 67bf62: 44 89 f2 mov %r14d,%edx 0.00 : 67bf65: be 01 00 00 00 mov $0x1,%esi 0.00 : 67bf6a: 4c 89 e7 mov %r12,%rdi 0.00 : 67bf6d: e8 fe a5 ff ff callq 676570 : if (PageIsNew(BufferGetPage(buf))) 0.00 : 67bf72: 85 c0 test %eax,%eax : * information is not accurate anyway, so it's better to clear corrupt : * pages than error out. Since the FSM changes are not WAL-logged, the : * so-called torn page problem on crash can lead to pages with corrupt : * headers, for example. : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); 0.00 : 67bf74: 89 c3 mov %eax,%ebx : if (PageIsNew(BufferGetPage(buf))) 0.00 : 67bf76: 78 68 js 67bfe0 0.00 : 67bf78: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 67bf7b: 48 98 cltq 0.00 : 67bf7d: 48 c1 e0 0d shl $0xd,%rax 0.00 : 67bf81: 48 03 05 70 3b 54 00 add 0x543b70(%rip),%rax # bbfaf8 0.00 : 67bf88: 66 83 78 0e 00 cmpw $0x0,0xe(%rax) 0.00 : 67bf8d: 0f 85 ed fe ff ff jne 67be80 : PageInit(BufferGetPage(buf), BLCKSZ, 0); 0.00 : 67bf93: 85 db test %ebx,%ebx 0.00 : 67bf95: 78 61 js 67bff8 0.00 : 67bf97: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 67bf9a: 48 63 f8 movslq %eax,%rdi 0.00 : 67bf9d: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 67bfa1: 48 03 3d 50 3b 54 00 add 0x543b50(%rip),%rdi # bbfaf8 0.00 : 67bfa8: 31 d2 xor %edx,%edx 0.00 : 67bfaa: be 00 20 00 00 mov $0x2000,%esi 0.00 : 67bfaf: e8 8c a2 01 00 callq 696240 0.00 : 67bfb4: e9 c7 fe ff ff jmpq 67be80 0.00 : 67bfb9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : if (rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber || : blkno >= rel->rd_smgr->smgr_fsm_nblocks) : { : if (smgrexists(rel->rd_smgr, FSM_FORKNUM)) : rel->rd_smgr->smgr_fsm_nblocks = smgrnblocks(rel->rd_smgr, 0.00 : 67bfc0: 49 8b 5c 24 10 mov 0x10(%r12),%rbx 0.00 : 67bfc5: be 01 00 00 00 mov $0x1,%esi 0.00 : 67bfca: 48 89 df mov %rbx,%rdi 0.00 : 67bfcd: e8 7e d4 01 00 callq 699450 0.00 : 67bfd2: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 67bfd5: e9 90 fe ff ff jmpq 67be6a 0.00 : 67bfda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * pages than error out. Since the FSM changes are not WAL-logged, the : * so-called torn page problem on crash can lead to pages with corrupt : * headers, for example. : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); : if (PageIsNew(BufferGetPage(buf))) 0.00 : 67bfe0: 48 8b 15 31 11 50 00 mov 0x501131(%rip),%rdx # b7d118 0.00 : 67bfe7: f7 d0 not %eax 0.00 : 67bfe9: 48 98 cltq 0.00 : 67bfeb: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 67bfef: eb 97 jmp 67bf88 0.00 : 67bff1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : PageInit(BufferGetPage(buf), BLCKSZ, 0); 0.00 : 67bff8: 89 d8 mov %ebx,%eax 0.00 : 67bffa: 48 8b 15 17 11 50 00 mov 0x501117(%rip),%rdx # b7d118 0.00 : 67c001: f7 d0 not %eax 0.00 : 67c003: 48 98 cltq 0.00 : 67c005: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 67c009: eb 9d jmp 67bfa8 0.00 : 67c00b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { : BlockNumber blkno = fsm_logical_to_physical(addr); : Buffer buf; : : RelationOpenSmgr(rel); 0.00 : 67c010: 41 8b 54 24 1c mov 0x1c(%r12),%edx 0.00 : 67c015: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 67c019: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 67c01e: e8 0d da 01 00 callq 699a30 0.00 : 67c023: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : 67c028: 48 89 c6 mov %rax,%rsi 0.00 : 67c02b: e8 d0 d2 01 00 callq 699300 0.00 : 67c030: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67c035: e9 01 fe ff ff jmpq 67be3b : * positive then it must exist, no need for an smgrexists call. : */ : if ((rel->rd_smgr->smgr_fsm_nblocks == 0 || : rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber) && : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); 0.00 : 67c03a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67c03f: 31 d2 xor %edx,%edx 0.00 : 67c041: be 01 00 00 00 mov $0x1,%esi 0.00 : 67c046: e8 a5 d7 01 00 callq 6997f0 0.00 : 67c04b: e9 a8 fe ff ff jmpq 67bef8 : * by the time we get the lock. : */ : LockRelationForExtension(rel, ExclusiveLock); : : /* Might have to re-open if a cache flush happened */ : RelationOpenSmgr(rel); 0.00 : 67c050: 41 8b 54 24 1c mov 0x1c(%r12),%edx 0.00 : 67c055: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 67c059: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 67c05e: e8 cd d9 01 00 callq 699a30 0.00 : 67c063: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : 67c068: 48 89 c6 mov %rax,%rsi 0.00 : 67c06b: e8 90 d2 01 00 callq 699300 0.00 : 67c070: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67c075: e9 61 fe ff ff jmpq 67bedb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:484 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000695b20 : : * : * As a side effect, the page's PD_HAS_FREE_LINES hint bit is updated. : */ : void : PageRepairFragmentation(Page page) : { 0.00 : 695b20: 55 push %rbp 0.00 : 695b21: 48 89 e5 mov %rsp,%rbp 0.00 : 695b24: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 695b28: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 695b2c: 49 89 fc mov %rdi,%r12 0.00 : 695b2f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 695b33: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 695b37: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 695b3b: 48 81 ec a0 1b 00 00 sub $0x1ba0,%rsp : Offset pd_lower = ((PageHeader) page)->pd_lower; 0.00 : 695b42: 0f b7 4f 0c movzwl 0xc(%rdi),%ecx 0.00 : 695b46: 0f b7 c1 movzwl %cx,%eax 0.00 : 695b49: 89 85 78 e4 ff ff mov %eax,-0x1b88(%rbp) : Offset pd_upper = ((PageHeader) page)->pd_upper; 0.00 : 695b4f: 44 0f b7 77 0e movzwl 0xe(%rdi),%r14d : * because we are about to reshuffle data in (what is usually) a shared : * disk buffer. If we aren't careful then corrupted pointers, lengths, : * etc could cause us to clobber adjacent disk buffers, spreading the data : * loss further. So, check everything. : */ : if (pd_lower < SizeOfPageHeaderData || 0.00 : 695b54: 83 f8 17 cmp $0x17,%eax : void : PageRepairFragmentation(Page page) : { : Offset pd_lower = ((PageHeader) page)->pd_lower; : Offset pd_upper = ((PageHeader) page)->pd_upper; : Offset pd_special = ((PageHeader) page)->pd_special; 0.00 : 695b57: 0f b7 7f 10 movzwl 0x10(%rdi),%edi 0.00 : 695b5b: 44 0f b7 ef movzwl %di,%r13d : * because we are about to reshuffle data in (what is usually) a shared : * disk buffer. If we aren't careful then corrupted pointers, lengths, : * etc could cause us to clobber adjacent disk buffers, spreading the data : * loss further. So, check everything. : */ : if (pd_lower < SizeOfPageHeaderData || 0.00 : 695b5f: 76 0f jbe 695b70 0.00 : 695b61: 44 39 f0 cmp %r14d,%eax 0.00 : 695b64: 7e 3a jle 695ba0 0.00 : 695b66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 695b6d: 00 00 00 : pd_lower > pd_upper || : pd_upper > pd_special || : pd_special > BLCKSZ || : pd_special != MAXALIGN(pd_special)) : ereport(ERROR, 0.00 : 695b70: 45 31 c0 xor %r8d,%r8d 0.00 : 695b73: b9 c0 de 8a 00 mov $0x8adec0,%ecx 0.00 : 695b78: ba cd 01 00 00 mov $0x1cd,%edx 0.00 : 695b7d: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 695b82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 695b87: e8 34 4f 0e 00 callq 77aac0 0.00 : 695b8c: 84 c0 test %al,%al 0.00 : 695b8e: 0f 85 ec 01 00 00 jne 695d80 : itemidptr++; : } : } : : if (totallen > (Size) (pd_special - pd_lower)) : ereport(ERROR, 0.00 : 695b94: e8 37 39 dd ff callq 4694d0 0.00 : 695b99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * because we are about to reshuffle data in (what is usually) a shared : * disk buffer. If we aren't careful then corrupted pointers, lengths, : * etc could cause us to clobber adjacent disk buffers, spreading the data : * loss further. So, check everything. : */ : if (pd_lower < SizeOfPageHeaderData || 0.00 : 695ba0: 45 39 ee cmp %r13d,%r14d 0.00 : 695ba3: 7f cb jg 695b70 0.00 : 695ba5: 41 81 fd 00 20 00 00 cmp $0x2000,%r13d 0.00 : 695bac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 695bb0: 7f be jg 695b70 0.00 : 695bb2: 49 63 d5 movslq %r13d,%rdx 0.00 : 695bb5: 48 8d 42 07 lea 0x7(%rdx),%rax 0.00 : 695bb9: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 695bbd: 48 39 c2 cmp %rax,%rdx 0.00 : 695bc0: 75 ae jne 695b70 : ereport(ERROR, : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted page pointers: lower = %u, upper = %u, special = %u", : pd_lower, pd_upper, pd_special))); : : nline = PageGetMaxOffsetNumber(page); 0.00 : 695bc2: 66 83 f9 18 cmp $0x18,%cx 0.00 : 695bc6: 0f 86 ec 01 00 00 jbe 695db8 0.00 : 695bcc: 0f b7 c1 movzwl %cx,%eax 0.00 : 695bcf: 48 83 e8 18 sub $0x18,%rax 0.00 : 695bd3: 48 89 c6 mov %rax,%rsi 0.00 : 695bd6: 48 c1 ee 02 shr $0x2,%rsi : nunused = nstorage = 0; : for (i = FirstOffsetNumber; i <= nline; i++) 0.00 : 695bda: 85 f6 test %esi,%esi 0.00 : 695bdc: 0f 8e d6 01 00 00 jle 695db8 0.00 : 695be2: 45 31 c0 xor %r8d,%r8d 0.00 : 695be5: c7 85 7c e4 ff ff 00 movl $0x0,-0x1b84(%rbp) 0.00 : 695bec: 00 00 00 0.00 : 695bef: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 695bf4: eb 22 jmp 695c18 0.00 : 695bf6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 695bfd: 00 00 00 : { : lp = PageGetItemId(page, i); : if (ItemIdIsUsed(lp)) : { : if (ItemIdHasStorage(lp)) 0.00 : 695c00: 41 0f b7 44 94 0a movzwl 0xa(%r12,%rdx,4),%eax 0.00 : 695c06: 83 e0 fe and $0xfffffffe,%eax : nstorage++; 0.00 : 695c09: 66 83 f8 01 cmp $0x1,%ax 0.00 : 695c0d: 41 83 d8 ff sbb $0xffffffff,%r8d : errmsg("corrupted page pointers: lower = %u, upper = %u, special = %u", : pd_lower, pd_upper, pd_special))); : : nline = PageGetMaxOffsetNumber(page); : nunused = nstorage = 0; : for (i = FirstOffsetNumber; i <= nline; i++) 0.00 : 695c11: 83 c1 01 add $0x1,%ecx 0.00 : 695c14: 39 ce cmp %ecx,%esi 0.00 : 695c16: 7c 31 jl 695c49 : { : lp = PageGetItemId(page, i); 0.00 : 695c18: 48 63 c1 movslq %ecx,%rax : if (ItemIdIsUsed(lp)) 0.00 : 695c1b: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 695c1f: 41 8b 44 94 08 mov 0x8(%r12,%rdx,4),%eax 0.00 : 695c24: a9 00 80 01 00 test $0x18000,%eax 0.00 : 695c29: 75 d5 jne 695c00 : errmsg("corrupted page pointers: lower = %u, upper = %u, special = %u", : pd_lower, pd_upper, pd_special))); : : nline = PageGetMaxOffsetNumber(page); : nunused = nstorage = 0; : for (i = FirstOffsetNumber; i <= nline; i++) 0.00 : 695c2b: 83 c1 01 add $0x1,%ecx : nstorage++; : } : else : { : /* Unused entries should have lp_len = 0, but make sure */ : ItemIdSetUnused(lp); 0.00 : 695c2e: 66 41 c7 44 94 08 00 movw $0x0,0x8(%r12,%rdx,4) 0.00 : 695c35: 00 0.00 : 695c36: 66 41 c7 44 94 0a 00 movw $0x0,0xa(%r12,%rdx,4) 0.00 : 695c3d: 00 : nunused++; 0.00 : 695c3e: 83 85 7c e4 ff ff 01 addl $0x1,-0x1b84(%rbp) : errmsg("corrupted page pointers: lower = %u, upper = %u, special = %u", : pd_lower, pd_upper, pd_special))); : : nline = PageGetMaxOffsetNumber(page); : nunused = nstorage = 0; : for (i = FirstOffsetNumber; i <= nline; i++) 0.00 : 695c45: 39 ce cmp %ecx,%esi 0.00 : 695c47: 7d cf jge 695c18 : ItemIdSetUnused(lp); : nunused++; : } : } : : if (nstorage == 0) 0.00 : 695c49: 45 85 c0 test %r8d,%r8d 0.00 : 695c4c: 0f 84 70 01 00 00 je 695dc2 : { : /* Page is completely empty, so just reset it quickly */ : ((PageHeader) page)->pd_upper = pd_special; 0.00 : 695c52: 4c 8d 8d 80 e4 ff ff lea -0x1b80(%rbp),%r9 0.00 : 695c59: 45 31 ff xor %r15d,%r15d 0.00 : 695c5c: 31 c9 xor %ecx,%ecx 0.00 : 695c5e: 4c 89 cb mov %r9,%rbx 0.00 : 695c61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : totallen = 0; : for (i = 0; i < nline; i++) : { : lp = PageGetItemId(page, i + 1); : if (ItemIdHasStorage(lp)) 0.00 : 695c68: 48 8d 51 04 lea 0x4(%rcx),%rdx 0.00 : 695c6c: 66 41 f7 44 94 0a fe testw $0xfffe,0xa(%r12,%rdx,4) 0.00 : 695c73: ff 0.00 : 695c74: 74 3f je 695cb5 : { : itemidptr->offsetindex = i; 0.00 : 695c76: 89 0b mov %ecx,(%rbx) : itemidptr->itemoff = ItemIdGetOffset(lp); 0.00 : 695c78: 41 0f b7 44 94 08 movzwl 0x8(%r12,%rdx,4),%eax 0.00 : 695c7e: 25 ff 7f 00 00 and $0x7fff,%eax : if (itemidptr->itemoff < (int) pd_upper || 0.00 : 695c83: 41 39 c6 cmp %eax,%r14d : { : lp = PageGetItemId(page, i + 1); : if (ItemIdHasStorage(lp)) : { : itemidptr->offsetindex = i; : itemidptr->itemoff = ItemIdGetOffset(lp); 0.00 : 695c86: 89 43 04 mov %eax,0x4(%rbx) : if (itemidptr->itemoff < (int) pd_upper || 0.00 : 695c89: 0f 8f 71 01 00 00 jg 695e00 0.00 : 695c8f: 41 39 c5 cmp %eax,%r13d 0.00 : 695c92: 0f 8e 68 01 00 00 jle 695e00 : itemidptr->itemoff >= (int) pd_special) : ereport(ERROR, : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted item pointer: %u", : itemidptr->itemoff))); : itemidptr->alignedlen = MAXALIGN(ItemIdGetLength(lp)); 0.00 : 695c98: 41 0f b7 44 94 0a movzwl 0xa(%r12,%rdx,4),%eax 0.00 : 695c9e: 66 d1 e8 shr %ax 0.00 : 695ca1: 48 83 c0 07 add $0x7,%rax 0.00 : 695ca5: 25 f8 ff 00 00 and $0xfff8,%eax 0.00 : 695caa: 48 89 43 08 mov %rax,0x8(%rbx) : totallen += itemidptr->alignedlen; 0.00 : 695cae: 49 01 c7 add %rax,%r15 : itemidptr++; 0.00 : 695cb1: 48 83 c3 18 add $0x18,%rbx 0.00 : 695cb5: 48 83 c1 01 add $0x1,%rcx : /* Need to compact the page the hard way */ : itemIdSortData itemidbase[MaxHeapTuplesPerPage]; : itemIdSort itemidptr = itemidbase; : : totallen = 0; : for (i = 0; i < nline; i++) 0.00 : 695cb9: 39 ce cmp %ecx,%esi 0.00 : 695cbb: 7f ab jg 695c68 : totallen += itemidptr->alignedlen; : itemidptr++; : } : } : : if (totallen > (Size) (pd_special - pd_lower)) 0.00 : 695cbd: 44 89 eb mov %r13d,%ebx 0.00 : 695cc0: 2b 9d 78 e4 ff ff sub -0x1b88(%rbp),%ebx 0.00 : 695cc6: 48 63 c3 movslq %ebx,%rax 0.00 : 695cc9: 4c 39 f8 cmp %r15,%rax 0.00 : 695ccc: 0f 82 66 01 00 00 jb 695e38 : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted item lengths: total %u, available space %u", : (unsigned int) totallen, pd_special - pd_lower))); : : /* sort itemIdSortData array into decreasing itemoff order */ : qsort((char *) itemidbase, nstorage, sizeof(itemIdSortData), 0.00 : 695cd2: 49 63 f0 movslq %r8d,%rsi 0.00 : 695cd5: 4c 89 cf mov %r9,%rdi 0.00 : 695cd8: b9 10 4d 69 00 mov $0x694d10,%ecx 0.00 : 695cdd: ba 18 00 00 00 mov $0x18,%edx 0.00 : 695ce2: 44 89 85 70 e4 ff ff mov %r8d,-0x1b90(%rbp) 0.00 : 695ce9: 4c 89 8d 68 e4 ff ff mov %r9,-0x1b98(%rbp) 0.00 : 695cf0: e8 7b 6f 11 00 callq 7acc70 : itemoffcompare); : : /* compactify page */ : upper = pd_special; : : for (i = 0, itemidptr = itemidbase; i < nstorage; i++, itemidptr++) 0.00 : 695cf5: 44 8b 85 70 e4 ff ff mov -0x1b90(%rbp),%r8d 0.00 : 695cfc: 45 89 ee mov %r13d,%r14d 0.00 : 695cff: 4c 8b 8d 68 e4 ff ff mov -0x1b98(%rbp),%r9 0.00 : 695d06: 45 85 c0 test %r8d,%r8d 0.00 : 695d09: 7e 65 jle 695d70 0.00 : 695d0b: 45 89 ee mov %r13d,%r14d 0.00 : 695d0e: 45 31 ff xor %r15d,%r15d 0.00 : 695d11: 4d 89 cd mov %r9,%r13 0.00 : 695d14: 0f 1f 40 00 nopl 0x0(%rax) : { : lp = PageGetItemId(page, itemidptr->offsetindex + 1); : upper -= itemidptr->alignedlen; 0.00 : 695d18: 49 8b 55 08 mov 0x8(%r13),%rdx : memmove((char *) page + upper, 0.00 : 695d1c: 49 63 75 04 movslq 0x4(%r13),%rsi : itemoffcompare); : : /* compactify page */ : upper = pd_special; : : for (i = 0, itemidptr = itemidbase; i < nstorage; i++, itemidptr++) 0.00 : 695d20: 41 83 c7 01 add $0x1,%r15d : { : lp = PageGetItemId(page, itemidptr->offsetindex + 1); 0.00 : 695d24: 49 63 5d 00 movslq 0x0(%r13),%rbx : upper -= itemidptr->alignedlen; : memmove((char *) page + upper, 0.00 : 695d28: 44 89 85 70 e4 ff ff mov %r8d,-0x1b90(%rbp) : itemoffcompare); : : /* compactify page */ : upper = pd_special; : : for (i = 0, itemidptr = itemidbase; i < nstorage; i++, itemidptr++) 0.00 : 695d2f: 49 83 c5 18 add $0x18,%r13 : { : lp = PageGetItemId(page, itemidptr->offsetindex + 1); : upper -= itemidptr->alignedlen; 0.00 : 695d33: 41 29 d6 sub %edx,%r14d : memmove((char *) page + upper, 0.00 : 695d36: 49 63 fe movslq %r14d,%rdi 0.00 : 695d39: 49 8d 34 34 lea (%r12,%rsi,1),%rsi 0.00 : 695d3d: 49 8d 3c 3c lea (%r12,%rdi,1),%rdi : (char *) page + itemidptr->itemoff, : itemidptr->alignedlen); : lp->lp_off = upper; 0.00 : 695d41: 48 83 c3 04 add $0x4,%rbx : : for (i = 0, itemidptr = itemidbase; i < nstorage; i++, itemidptr++) : { : lp = PageGetItemId(page, itemidptr->offsetindex + 1); : upper -= itemidptr->alignedlen; : memmove((char *) page + upper, 0.00 : 695d45: e8 e6 3e dd ff callq 469c30 : (char *) page + itemidptr->itemoff, : itemidptr->alignedlen); : lp->lp_off = upper; 0.00 : 695d4a: 41 0f b7 44 9c 08 movzwl 0x8(%r12,%rbx,4),%eax 0.00 : 695d50: 44 89 f2 mov %r14d,%edx 0.00 : 695d53: 66 81 e2 ff 7f and $0x7fff,%dx 0.00 : 695d58: 66 25 00 80 and $0x8000,%ax 0.00 : 695d5c: 09 d0 or %edx,%eax 0.00 : 695d5e: 66 41 89 44 9c 08 mov %ax,0x8(%r12,%rbx,4) : itemoffcompare); : : /* compactify page */ : upper = pd_special; : : for (i = 0, itemidptr = itemidbase; i < nstorage; i++, itemidptr++) 0.00 : 695d64: 44 8b 85 70 e4 ff ff mov -0x1b90(%rbp),%r8d 0.00 : 695d6b: 45 39 c7 cmp %r8d,%r15d 0.00 : 695d6e: 7c a8 jl 695d18 : (char *) page + itemidptr->itemoff, : itemidptr->alignedlen); : lp->lp_off = upper; : } : : ((PageHeader) page)->pd_upper = upper; 0.00 : 695d70: 66 45 89 74 24 0e mov %r14w,0xe(%r12) 0.00 : 695d76: eb 50 jmp 695dc8 0.00 : 695d78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 695d7f: 00 : if (pd_lower < SizeOfPageHeaderData || : pd_lower > pd_upper || : pd_upper > pd_special || : pd_special > BLCKSZ || : pd_special != MAXALIGN(pd_special)) : ereport(ERROR, 0.00 : 695d80: 8b b5 78 e4 ff ff mov -0x1b88(%rbp),%esi 0.00 : 695d86: 44 89 e9 mov %r13d,%ecx 0.00 : 695d89: 44 89 f2 mov %r14d,%edx 0.00 : 695d8c: bf c0 dc 8a 00 mov $0x8adcc0,%edi 0.00 : 695d91: 31 c0 xor %eax,%eax 0.00 : 695d93: e8 08 6b 0e 00 callq 77c8a0 : itemidptr++; : } : } : : if (totallen > (Size) (pd_special - pd_lower)) : ereport(ERROR, 0.00 : 695d98: 89 c3 mov %eax,%ebx 0.00 : 695d9a: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 695d9f: e8 ac 6f 0e 00 callq 77cd50 0.00 : 695da4: 89 de mov %ebx,%esi 0.00 : 695da6: 89 c7 mov %eax,%edi 0.00 : 695da8: 31 c0 xor %eax,%eax 0.00 : 695daa: e8 31 48 0e 00 callq 77a5e0 0.00 : 695daf: e9 e0 fd ff ff jmpq 695b94 0.00 : 695db4: 0f 1f 40 00 nopl 0x0(%rax) : ItemIdSetUnused(lp); : nunused++; : } : } : : if (nstorage == 0) 0.00 : 695db8: c7 85 7c e4 ff ff 00 movl $0x0,-0x1b84(%rbp) 0.00 : 695dbf: 00 00 00 : { : /* Page is completely empty, so just reset it quickly */ : ((PageHeader) page)->pd_upper = pd_special; /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:484 100.00 : 695dc2: 66 41 89 7c 24 0e mov %di,0xe(%r12) : : ((PageHeader) page)->pd_upper = upper; : } : : /* Set hint bit for PageAddItem */ : if (nunused > 0) 0.00 : 695dc8: 8b 85 7c e4 ff ff mov -0x1b84(%rbp),%eax 0.00 : 695dce: 85 c0 test %eax,%eax 0.00 : 695dd0: 7e 1e jle 695df0 : PageSetHasFreeLinePointers(page); 0.00 : 695dd2: 66 41 83 4c 24 0a 01 orw $0x1,0xa(%r12) : else : PageClearHasFreeLinePointers(page); : } 0.00 : 695dd9: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 695ddd: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 695de1: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 695de5: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 695de9: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 695ded: c9 leaveq 0.00 : 695dee: c3 retq 0.00 : 695def: 90 nop : : /* Set hint bit for PageAddItem */ : if (nunused > 0) : PageSetHasFreeLinePointers(page); : else : PageClearHasFreeLinePointers(page); 0.00 : 695df0: 66 41 83 64 24 0a fe andw $0xfffe,0xa(%r12) 0.00 : 695df7: eb e0 jmp 695dd9 0.00 : 695df9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : itemidptr->offsetindex = i; : itemidptr->itemoff = ItemIdGetOffset(lp); : if (itemidptr->itemoff < (int) pd_upper || : itemidptr->itemoff >= (int) pd_special) : ereport(ERROR, 0.00 : 695e00: 45 31 c0 xor %r8d,%r8d 0.00 : 695e03: b9 c0 de 8a 00 mov $0x8adec0,%ecx 0.00 : 695e08: ba f9 01 00 00 mov $0x1f9,%edx 0.00 : 695e0d: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 695e12: bf 14 00 00 00 mov $0x14,%edi 0.00 : 695e17: e8 a4 4c 0e 00 callq 77aac0 0.00 : 695e1c: 84 c0 test %al,%al 0.00 : 695e1e: 0f 84 70 fd ff ff je 695b94 0.00 : 695e24: 8b 73 04 mov 0x4(%rbx),%esi 0.00 : 695e27: bf 56 dc 8a 00 mov $0x8adc56,%edi 0.00 : 695e2c: 31 c0 xor %eax,%eax 0.00 : 695e2e: e8 6d 6a 0e 00 callq 77c8a0 0.00 : 695e33: e9 60 ff ff ff jmpq 695d98 : itemidptr++; : } : } : : if (totallen > (Size) (pd_special - pd_lower)) : ereport(ERROR, 0.00 : 695e38: 45 31 c0 xor %r8d,%r8d 0.00 : 695e3b: b9 c0 de 8a 00 mov $0x8adec0,%ecx 0.00 : 695e40: ba 04 02 00 00 mov $0x204,%edx 0.00 : 695e45: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 695e4a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 695e4f: e8 6c 4c 0e 00 callq 77aac0 0.00 : 695e54: 84 c0 test %al,%al 0.00 : 695e56: 0f 84 38 fd ff ff je 695b94 0.00 : 695e5c: 89 da mov %ebx,%edx 0.00 : 695e5e: 44 89 fe mov %r15d,%esi 0.00 : 695e61: bf 60 dd 8a 00 mov $0x8add60,%edi 0.00 : 695e66: 31 c0 xor %eax,%eax 0.00 : 695e68: e8 33 6a 0e 00 callq 77c8a0 0.00 : 695e6d: e9 26 ff ff ff jmpq 695d98 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/tcop/dest.c:225 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699cf0 : : * most other places and thus reduce the number of separate packets sent. : * ---------------- : */ : void : ReadyForQuery(CommandDest dest) : { 0.00 : 699cf0: 55 push %rbp : switch (dest) /home/Computational/mark/src/postgres-andres/src/backend/tcop/dest.c:225 100.00 : 699cf1: 83 ef 02 sub $0x2,%edi : * most other places and thus reduce the number of separate packets sent. : * ---------------- : */ : void : ReadyForQuery(CommandDest dest) : { 0.00 : 699cf4: 48 89 e5 mov %rsp,%rbp 0.00 : 699cf7: 53 push %rbx 0.00 : 699cf8: 48 83 ec 28 sub $0x28,%rsp : switch (dest) 0.00 : 699cfc: 83 ff 01 cmp $0x1,%edi 0.00 : 699cff: 77 1d ja 699d1e : { : case DestRemote: : case DestRemoteExecute: : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) 0.00 : 699d01: 0f b7 05 da 5f 52 00 movzwl 0x525fda(%rip),%eax # bbfce2 0.00 : 699d08: 83 f8 02 cmp $0x2,%eax 0.00 : 699d0b: 77 1b ja 699d28 : : pq_beginmessage(&buf, 'Z'); : pq_sendbyte(&buf, TransactionBlockStatusCode()); : pq_endmessage(&buf); : } : else if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2) 0.00 : 699d0d: 75 0a jne 699d19 : pq_putemptymessage('Z'); 0.00 : 699d0f: bf 5a 00 00 00 mov $0x5a,%edi 0.00 : 699d14: e8 07 36 f4 ff callq 5dd320 : /* Flush output at end of cycle in any case. */ : pq_flush(); 0.00 : 699d19: e8 f2 1e f4 ff callq 5dbc10 : case DestCopyOut: : case DestSQLFunction: : case DestTransientRel: : break; : } : } 0.00 : 699d1e: 48 83 c4 28 add $0x28,%rsp 0.00 : 699d22: 5b pop %rbx 0.00 : 699d23: c9 leaveq 0.00 : 699d24: c3 retq 0.00 : 699d25: 0f 1f 00 nopl (%rax) : case DestRemoteExecute: : if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) : { : StringInfoData buf; : : pq_beginmessage(&buf, 'Z'); 0.00 : 699d28: 48 8d 5d d0 lea -0x30(%rbp),%rbx 0.00 : 699d2c: be 5a 00 00 00 mov $0x5a,%esi 0.00 : 699d31: 48 89 df mov %rbx,%rdi 0.00 : 699d34: e8 e7 36 f4 ff callq 5dd420 : pq_sendbyte(&buf, TransactionBlockStatusCode()); 0.00 : 699d39: e8 52 71 e2 ff callq 4c0e90 0.00 : 699d3e: 48 89 df mov %rbx,%rdi 0.00 : 699d41: 0f be f0 movsbl %al,%esi 0.00 : 699d44: e8 a7 38 f4 ff callq 5dd5f0 : pq_endmessage(&buf); 0.00 : 699d49: 48 89 df mov %rbx,%rdi 0.00 : 699d4c: e8 8f 36 f4 ff callq 5dd3e0 : } : else if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2) : pq_putemptymessage('Z'); : /* Flush output at end of cycle in any case. */ : pq_flush(); 0.00 : 699d51: e8 ba 1e f4 ff callq 5dbc10 0.00 : 699d56: eb c6 jmp 699d1e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4462 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4463 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000706270 : : static int : cmp_var_common(const NumericDigit *var1digits, int var1ndigits, : int var1weight, int var1sign, : const NumericDigit *var2digits, int var2ndigits, : int var2weight, int var2sign) : { 0.00 : 706270: 55 push %rbp 0.00 : 706271: 89 f0 mov %esi,%eax 0.00 : 706273: 41 89 d2 mov %edx,%r10d : if (var1ndigits == 0) 0.00 : 706276: 85 c0 test %eax,%eax : static int : cmp_var_common(const NumericDigit *var1digits, int var1ndigits, : int var1weight, int var1sign, : const NumericDigit *var2digits, int var2ndigits, : int var2weight, int var2sign) : { 0.00 : 706278: 4d 89 c3 mov %r8,%r11 0.00 : 70627b: 44 89 ce mov %r9d,%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4462 50.00 : 70627e: 48 89 e5 mov %rsp,%rbp 0.00 : 706281: 8b 55 10 mov 0x10(%rbp),%edx 0.00 : 706284: 44 8b 45 18 mov 0x18(%rbp),%r8d : if (var1ndigits == 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numeric.c:4463 50.00 : 706288: 75 1e jne 7062a8 : { : if (var2ndigits == 0) 0.00 : 70628a: 45 85 c9 test %r9d,%r9d 0.00 : 70628d: 74 0e je 70629d : return 0; : if (var2sign == NUMERIC_NEG) 0.00 : 70628f: 41 81 f8 00 40 00 00 cmp $0x4000,%r8d 0.00 : 706296: 75 4c jne 7062e4 : } : : if (var2sign == NUMERIC_POS) : return -1; : : return cmp_abs_common(var2digits, var2ndigits, var2weight, 0.00 : 706298: b8 01 00 00 00 mov $0x1,%eax : var1digits, var1ndigits, var1weight); : } 0.00 : 70629d: c9 leaveq 0.00 : 70629e: 66 90 xchg %ax,%ax 0.00 : 7062a0: c3 retq 0.00 : 7062a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return 0; : if (var2sign == NUMERIC_NEG) : return 1; : return -1; : } : if (var2ndigits == 0) 0.00 : 7062a8: 45 85 c9 test %r9d,%r9d 0.00 : 7062ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7062b0: 74 2e je 7062e0 : if (var1sign == NUMERIC_POS) : return 1; : return -1; : } : : if (var1sign == NUMERIC_POS) 0.00 : 7062b2: 85 c9 test %ecx,%ecx 0.00 : 7062b4: 75 35 jne 7062eb : { : if (var2sign == NUMERIC_NEG) 0.00 : 7062b6: 41 81 f8 00 40 00 00 cmp $0x4000,%r8d 0.00 : 7062bd: 0f 1f 00 nopl (%rax) 0.00 : 7062c0: 74 d6 je 706298 : if (var2sign == NUMERIC_POS) : return -1; : : return cmp_abs_common(var2digits, var2ndigits, var2weight, : var1digits, var1ndigits, var1weight); : } 0.00 : 7062c2: c9 leaveq : : if (var1sign == NUMERIC_POS) : { : if (var2sign == NUMERIC_NEG) : return 1; : return cmp_abs_common(var1digits, var1ndigits, var1weight, 0.00 : 7062c3: 41 89 d1 mov %edx,%r9d 0.00 : 7062c6: 41 89 f0 mov %esi,%r8d 0.00 : 7062c9: 4c 89 d9 mov %r11,%rcx 0.00 : 7062cc: 44 89 d2 mov %r10d,%edx 0.00 : 7062cf: 89 c6 mov %eax,%esi 0.00 : 7062d1: e9 ea fd ff ff jmpq 7060c0 0.00 : 7062d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7062dd: 00 00 00 : return 1; : return -1; : } : if (var2ndigits == 0) : { : if (var1sign == NUMERIC_POS) 0.00 : 7062e0: 85 c9 test %ecx,%ecx 0.00 : 7062e2: 74 b4 je 706298 : } : : if (var2sign == NUMERIC_POS) : return -1; : : return cmp_abs_common(var2digits, var2ndigits, var2weight, 0.00 : 7062e4: b8 ff ff ff ff mov $0xffffffff,%eax : var1digits, var1ndigits, var1weight); : } 0.00 : 7062e9: c9 leaveq 0.00 : 7062ea: c3 retq : return 1; : return cmp_abs_common(var1digits, var1ndigits, var1weight, : var2digits, var2ndigits, var2weight); : } : : if (var2sign == NUMERIC_POS) 0.00 : 7062eb: 45 85 c0 test %r8d,%r8d 0.00 : 7062ee: 66 90 xchg %ax,%ax 0.00 : 7062f0: 74 f2 je 7062e4 : return -1; : : return cmp_abs_common(var2digits, var2ndigits, var2weight, : var1digits, var1ndigits, var1weight); : } 0.00 : 7062f2: c9 leaveq : } : : if (var2sign == NUMERIC_POS) : return -1; : : return cmp_abs_common(var2digits, var2ndigits, var2weight, 0.00 : 7062f3: 48 89 f9 mov %rdi,%rcx 0.00 : 7062f6: 45 89 d1 mov %r10d,%r9d 0.00 : 7062f9: 41 89 c0 mov %eax,%r8d 0.00 : 7062fc: 4c 89 df mov %r11,%rdi 0.00 : 7062ff: e9 bc fd ff ff jmpq 7060c0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:457 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000758bd0 : : * Uses the C string to text conversion function, which is only appropriate : * if VarChar and text are equivalent types. : */ : static VarChar * : varchar_input(const char *s, size_t len, int32 atttypmod) : { 0.00 : 758bd0: 55 push %rbp 0.00 : 758bd1: 48 89 e5 mov %rsp,%rbp 0.00 : 758bd4: 41 55 push %r13 : VarChar *result; : size_t maxlen; : : maxlen = atttypmod - VARHDRSZ; 0.00 : 758bd6: 44 8d 6a fc lea -0x4(%rdx),%r13d : * Uses the C string to text conversion function, which is only appropriate : * if VarChar and text are equivalent types. : */ : static VarChar * : varchar_input(const char *s, size_t len, int32 atttypmod) : { 0.00 : 758bda: 41 54 push %r12 0.00 : 758bdc: 49 89 fc mov %rdi,%r12 0.00 : 758bdf: 53 push %rbx 0.00 : 758be0: 48 89 f3 mov %rsi,%rbx 0.00 : 758be3: 48 83 ec 08 sub $0x8,%rsp : VarChar *result; : size_t maxlen; : : maxlen = atttypmod - VARHDRSZ; : : if (atttypmod >= (int32) VARHDRSZ && len > maxlen) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:457 100.00 : 758be7: 83 fa 03 cmp $0x3,%edx 0.00 : 758bea: 7e 43 jle 758c2f 0.00 : 758bec: 49 63 c5 movslq %r13d,%rax 0.00 : 758bef: 48 39 c6 cmp %rax,%rsi 0.00 : 758bf2: 76 3b jbe 758c2f : { : /* Verify that extra characters are spaces, and clip them off */ : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); 0.00 : 758bf4: 44 89 ea mov %r13d,%edx 0.00 : 758bf7: e8 b4 fd 02 00 callq 7889b0 0.00 : 758bfc: 48 63 f0 movslq %eax,%rsi : size_t j; : : for (j = mbmaxlen; j < len; j++) 0.00 : 758bff: 48 39 f3 cmp %rsi,%rbx 0.00 : 758c02: 76 28 jbe 758c2c : { : if (s[j] != ' ') 0.00 : 758c04: 41 80 3c 34 20 cmpb $0x20,(%r12,%rsi,1) : ereport(ERROR, 0.00 : 758c09: 49 8d 4c 34 01 lea 0x1(%r12,%rsi,1),%rcx 0.00 : 758c0e: 48 89 f2 mov %rsi,%rdx : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); : size_t j; : : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') 0.00 : 758c11: 74 10 je 758c23 0.00 : 758c13: eb 33 jmp 758c48 0.00 : 758c15: 0f 1f 00 nopl (%rax) 0.00 : 758c18: 0f b6 01 movzbl (%rcx),%eax 0.00 : 758c1b: 48 83 c1 01 add $0x1,%rcx 0.00 : 758c1f: 3c 20 cmp $0x20,%al 0.00 : 758c21: 75 25 jne 758c48 : { : /* Verify that extra characters are spaces, and clip them off */ : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); : size_t j; : : for (j = mbmaxlen; j < len; j++) 0.00 : 758c23: 48 83 c2 01 add $0x1,%rdx 0.00 : 758c27: 48 39 d3 cmp %rdx,%rbx 0.00 : 758c2a: 77 ec ja 758c18 0.00 : 758c2c: 48 89 f3 mov %rsi,%rbx : len = mbmaxlen; : } : : result = (VarChar *) cstring_to_text_with_len(s, len); : return result; : } 0.00 : 758c2f: 48 83 c4 08 add $0x8,%rsp : } : : len = mbmaxlen; : } : : result = (VarChar *) cstring_to_text_with_len(s, len); 0.00 : 758c33: 89 de mov %ebx,%esi 0.00 : 758c35: 4c 89 e7 mov %r12,%rdi : return result; : } 0.00 : 758c38: 5b pop %rbx 0.00 : 758c39: 41 5c pop %r12 0.00 : 758c3b: 41 5d pop %r13 0.00 : 758c3d: c9 leaveq : } : : len = mbmaxlen; : } : : result = (VarChar *) cstring_to_text_with_len(s, len); 0.00 : 758c3e: e9 5d 16 00 00 jmpq 75a2a0 0.00 : 758c43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : size_t j; : : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') : ereport(ERROR, 0.00 : 758c48: 45 31 c0 xor %r8d,%r8d 0.00 : 758c4b: b9 69 bb 8c 00 mov $0x8cbb69,%ecx 0.00 : 758c50: ba d5 01 00 00 mov $0x1d5,%edx 0.00 : 758c55: be e1 ba 8c 00 mov $0x8cbae1,%esi 0.00 : 758c5a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 758c5f: e8 5c 1e 02 00 callq 77aac0 0.00 : 758c64: 84 c0 test %al,%al 0.00 : 758c66: 75 05 jne 758c6d 0.00 : 758c68: e8 63 08 d1 ff callq 4694d0 0.00 : 758c6d: 44 89 ee mov %r13d,%esi 0.00 : 758c70: bf f0 ba 8c 00 mov $0x8cbaf0,%edi 0.00 : 758c75: 31 c0 xor %eax,%eax 0.00 : 758c77: e8 24 3c 02 00 callq 77c8a0 0.00 : 758c7c: bf 82 00 00 01 mov $0x1000082,%edi 0.00 : 758c81: 89 c3 mov %eax,%ebx 0.00 : 758c83: e8 c8 40 02 00 callq 77cd50 0.00 : 758c88: 89 de mov %ebx,%esi 0.00 : 758c8a: 89 c7 mov %eax,%edi 0.00 : 758c8c: 31 c0 xor %eax,%eax 0.00 : 758c8e: e8 4d 19 02 00 callq 77a5e0 0.00 : 758c93: eb d3 jmp 758c68 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1519 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076cbf0 : : * for indexes. : */ : static OpClassCacheEnt * : LookupOpclassInfo(Oid operatorClassOid, : StrategyNumber numSupport) : { 0.00 : 76cbf0: 55 push %rbp 0.00 : 76cbf1: 48 89 e5 mov %rsp,%rbp 0.00 : 76cbf4: 41 57 push %r15 0.00 : 76cbf6: 41 56 push %r14 0.00 : 76cbf8: 41 89 f6 mov %esi,%r14d 0.00 : 76cbfb: 41 55 push %r13 0.00 : 76cbfd: 41 54 push %r12 0.00 : 76cbff: 53 push %rbx 0.00 : 76cc00: 48 81 ec 68 01 00 00 sub $0x168,%rsp : SysScanDesc scan; : ScanKeyData skey[3]; : HeapTuple htup; : bool indexOK; : : if (OpClassCache == NULL) 0.00 : 76cc07: 48 83 3d 09 b9 44 00 cmpq $0x0,0x44b909(%rip) # bb8518 0.00 : 76cc0e: 00 : * for indexes. : */ : static OpClassCacheEnt * : LookupOpclassInfo(Oid operatorClassOid, : StrategyNumber numSupport) : { 0.00 : 76cc0f: 89 bd 7c fe ff ff mov %edi,-0x184(%rbp) : SysScanDesc scan; : ScanKeyData skey[3]; : HeapTuple htup; : bool indexOK; : : if (OpClassCache == NULL) 0.00 : 76cc15: 0f 84 75 02 00 00 je 76ce90 : /* Also make sure CacheMemoryContext exists */ : if (!CacheMemoryContext) : CreateCacheMemoryContext(); : } : : opcentry = (OpClassCacheEnt *) hash_search(OpClassCache, 0.00 : 76cc1b: 48 8b 3d f6 b8 44 00 mov 0x44b8f6(%rip),%rdi # bb8518 0.00 : 76cc22: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 76cc26: 48 8d b5 7c fe ff ff lea -0x184(%rbp),%rsi 0.00 : 76cc2d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76cc32: e8 69 7a 01 00 callq 7846a0 : (void *) &operatorClassOid, : HASH_ENTER, &found); : : if (!found) 0.00 : 76cc37: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : /* Also make sure CacheMemoryContext exists */ : if (!CacheMemoryContext) : CreateCacheMemoryContext(); : } : : opcentry = (OpClassCacheEnt *) hash_search(OpClassCache, 0.00 : 76cc3b: 49 89 c4 mov %rax,%r12 : (void *) &operatorClassOid, : HASH_ENTER, &found); : : if (!found) 0.00 : 76cc3e: 75 1b jne 76cc5b : { : /* Need to allocate memory for new entry */ : opcentry->valid = false; /* until known OK */ : opcentry->numSupport = numSupport; : : if (numSupport > 0) 0.00 : 76cc40: 66 45 85 f6 test %r14w,%r14w : HASH_ENTER, &found); : : if (!found) : { : /* Need to allocate memory for new entry */ : opcentry->valid = false; /* until known OK */ 0.00 : 76cc44: c6 40 04 00 movb $0x0,0x4(%rax) : opcentry->numSupport = numSupport; 0.00 : 76cc48: 66 44 89 70 06 mov %r14w,0x6(%rax) : : if (numSupport > 0) 0.00 : 76cc4d: 0f 85 1d 02 00 00 jne 76ce70 : opcentry->supportProcs = (RegProcedure *) : MemoryContextAllocZero(CacheMemoryContext, : numSupport * sizeof(RegProcedure)); : else : opcentry->supportProcs = NULL; 0.00 : 76cc53: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 76cc5a: 00 : */ : #if defined(CLOBBER_CACHE_ALWAYS) : opcentry->valid = false; : #endif : : if (opcentry->valid) 0.00 : 76cc5b: 41 80 7c 24 04 00 cmpb $0x0,0x4(%r12) 0.00 : 76cc61: 0f 85 b6 00 00 00 jne 76cd1d : * : * To avoid infinite recursion during startup, force heap scans if we're : * looking up info for the opclasses used by the indexes we would like to : * reference here. : */ : indexOK = criticalRelcachesBuilt || 0.00 : 76cc67: 80 3d 72 b8 44 00 00 cmpb $0x0,0x44b872(%rip) # bb84e0 0.00 : 76cc6e: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 76cc74: 0f 84 be 00 00 00 je 76cd38 : * We have to fetch the pg_opclass row to determine its opfamily and : * opcintype, which are needed to look up related operators and functions. : * It'd be convenient to use the syscache here, but that probably doesn't : * work while bootstrapping. : */ : ScanKeyInit(&skey[0], 0.00 : 76cc7a: 44 8b 85 7c fe ff ff mov -0x184(%rbp),%r8d 0.00 : 76cc81: 48 8d bd 80 fe ff ff lea -0x180(%rbp),%rdi 0.00 : 76cc88: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76cc8d: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76cc92: be fe ff ff ff mov $0xfffffffe,%esi 0.00 : 76cc97: e8 e4 6e d0 ff callq 473b80 : ObjectIdAttributeNumber, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(operatorClassOid)); : rel = heap_open(OperatorClassRelationId, AccessShareLock); 0.00 : 76cc9c: be 01 00 00 00 mov $0x1,%esi 0.00 : 76cca1: bf 38 0a 00 00 mov $0xa38,%edi 0.00 : 76cca6: e8 b5 0e d3 ff callq 49db60 : scan = systable_beginscan(rel, OpclassOidIndexId, indexOK, 0.00 : 76ccab: 4c 8d 8d 80 fe ff ff lea -0x180(%rbp),%r9 0.00 : 76ccb2: 31 c9 xor %ecx,%ecx 0.00 : 76ccb4: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 76ccba: 44 89 fa mov %r15d,%edx 0.00 : 76ccbd: be 7f 0a 00 00 mov $0xa7f,%esi 0.00 : 76ccc2: 48 89 c7 mov %rax,%rdi : */ : ScanKeyInit(&skey[0], : ObjectIdAttributeNumber, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(operatorClassOid)); : rel = heap_open(OperatorClassRelationId, AccessShareLock); 0.00 : 76ccc5: 49 89 c5 mov %rax,%r13 : scan = systable_beginscan(rel, OpclassOidIndexId, indexOK, 0.00 : 76ccc8: e8 d3 7f d3 ff callq 4a4ca0 : NULL, 1, skey); : : if (HeapTupleIsValid(htup = systable_getnext(scan))) 0.00 : 76cccd: 48 89 c7 mov %rax,%rdi : ScanKeyInit(&skey[0], : ObjectIdAttributeNumber, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(operatorClassOid)); : rel = heap_open(OperatorClassRelationId, AccessShareLock); : scan = systable_beginscan(rel, OpclassOidIndexId, indexOK, 0.00 : 76ccd0: 48 89 c3 mov %rax,%rbx : NULL, 1, skey); : : if (HeapTupleIsValid(htup = systable_getnext(scan))) 0.00 : 76ccd3: e8 48 7f d3 ff callq 4a4c20 0.00 : 76ccd8: 48 85 c0 test %rax,%rax 0.00 : 76ccdb: 0f 84 5b 02 00 00 je 76cf3c : { : Form_pg_opclass opclassform = (Form_pg_opclass) GETSTRUCT(htup); 0.00 : 76cce1: 48 8b 40 10 mov 0x10(%rax),%rax : opcentry->opcintype = opclassform->opcintype; : } : else : elog(ERROR, "could not find tuple for opclass %u", operatorClassOid); : : systable_endscan(scan); 0.00 : 76cce5: 48 89 df mov %rbx,%rdi : scan = systable_beginscan(rel, OpclassOidIndexId, indexOK, : NULL, 1, skey); : : if (HeapTupleIsValid(htup = systable_getnext(scan))) : { : Form_pg_opclass opclassform = (Form_pg_opclass) GETSTRUCT(htup); 0.00 : 76cce8: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 76ccec: 48 01 d0 add %rdx,%rax : : opcentry->opcfamily = opclassform->opcfamily; 0.00 : 76ccef: 8b 50 4c mov 0x4c(%rax),%edx 0.00 : 76ccf2: 41 89 54 24 08 mov %edx,0x8(%r12) : opcentry->opcintype = opclassform->opcintype; 0.00 : 76ccf7: 8b 40 50 mov 0x50(%rax),%eax 0.00 : 76ccfa: 41 89 44 24 0c mov %eax,0xc(%r12) : } : else : elog(ERROR, "could not find tuple for opclass %u", operatorClassOid); : : systable_endscan(scan); 0.00 : 76ccff: e8 1c 7e d3 ff callq 4a4b20 : heap_close(rel, AccessShareLock); 0.00 : 76cd04: be 01 00 00 00 mov $0x1,%esi 0.00 : 76cd09: 4c 89 ef mov %r13,%rdi 0.00 : 76cd0c: e8 af 0c d3 ff callq 49d9c0 : : /* : * Scan pg_amproc to obtain support procs for the opclass. We only fetch : * the default ones (those with lefttype = righttype = opcintype). : */ : if (numSupport > 0) 0.00 : 76cd11: 66 45 85 f6 test %r14w,%r14w 0.00 : 76cd15: 75 49 jne 76cd60 : : systable_endscan(scan); : heap_close(rel, AccessShareLock); : } : : opcentry->valid = true; 0.00 : 76cd17: 41 c6 44 24 04 01 movb $0x1,0x4(%r12) : return opcentry; : } 0.00 : 76cd1d: 48 81 c4 68 01 00 00 add $0x168,%rsp 0.00 : 76cd24: 4c 89 e0 mov %r12,%rax 0.00 : 76cd27: 5b pop %rbx 0.00 : 76cd28: 41 5c pop %r12 0.00 : 76cd2a: 41 5d pop %r13 0.00 : 76cd2c: 41 5e pop %r14 0.00 : 76cd2e: 41 5f pop %r15 0.00 : 76cd30: c9 leaveq 0.00 : 76cd31: c3 retq 0.00 : 76cd32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * To avoid infinite recursion during startup, force heap scans if we're : * looking up info for the opclasses used by the indexes we would like to : * reference here. : */ : indexOK = criticalRelcachesBuilt || 0.00 : 76cd38: 8b 85 7c fe ff ff mov -0x184(%rbp),%eax 0.00 : 76cd3e: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 76cd44: 3d bd 07 00 00 cmp $0x7bd,%eax 0.00 : 76cd49: 0f 95 c2 setne %dl 0.00 : 76cd4c: 3d bb 07 00 00 cmp $0x7bb,%eax 0.00 : 76cd51: 0f 95 c0 setne %al 0.00 : 76cd54: 21 c2 and %eax,%edx 0.00 : 76cd56: 41 21 d7 and %edx,%r15d 0.00 : 76cd59: e9 1c ff ff ff jmpq 76cc7a 0.00 : 76cd5e: 66 90 xchg %ax,%ax : * Scan pg_amproc to obtain support procs for the opclass. We only fetch : * the default ones (those with lefttype = righttype = opcintype). : */ : if (numSupport > 0) : { : ScanKeyInit(&skey[0], 0.00 : 76cd60: 45 8b 44 24 08 mov 0x8(%r12),%r8d 0.00 : 76cd65: 48 8d bd 80 fe ff ff lea -0x180(%rbp),%rdi 0.00 : 76cd6c: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76cd71: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76cd76: be 01 00 00 00 mov $0x1,%esi 0.00 : 76cd7b: e8 00 6e d0 ff callq 473b80 : Anum_pg_amproc_amprocfamily, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(opcentry->opcfamily)); : ScanKeyInit(&skey[1], 0.00 : 76cd80: 45 8b 44 24 0c mov 0xc(%r12),%r8d 0.00 : 76cd85: 48 8d bd 80 fe ff ff lea -0x180(%rbp),%rdi 0.00 : 76cd8c: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76cd91: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76cd96: be 02 00 00 00 mov $0x2,%esi 0.00 : 76cd9b: 48 83 c7 48 add $0x48,%rdi 0.00 : 76cd9f: e8 dc 6d d0 ff callq 473b80 : Anum_pg_amproc_amproclefttype, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(opcentry->opcintype)); : ScanKeyInit(&skey[2], 0.00 : 76cda4: 45 8b 44 24 0c mov 0xc(%r12),%r8d 0.00 : 76cda9: 48 8d bd 80 fe ff ff lea -0x180(%rbp),%rdi 0.00 : 76cdb0: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76cdb5: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76cdba: be 03 00 00 00 mov $0x3,%esi 0.00 : 76cdbf: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 76cdc6: e8 b5 6d d0 ff callq 473b80 : Anum_pg_amproc_amprocrighttype, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(opcentry->opcintype)); : rel = heap_open(AccessMethodProcedureRelationId, AccessShareLock); 0.00 : 76cdcb: be 01 00 00 00 mov $0x1,%esi 0.00 : 76cdd0: bf 2b 0a 00 00 mov $0xa2b,%edi 0.00 : 76cdd5: e8 86 0d d3 ff callq 49db60 : scan = systable_beginscan(rel, AccessMethodProcedureIndexId, indexOK, 0.00 : 76cdda: 4c 8d 8d 80 fe ff ff lea -0x180(%rbp),%r9 0.00 : 76cde1: 41 b8 03 00 00 00 mov $0x3,%r8d 0.00 : 76cde7: 31 c9 xor %ecx,%ecx 0.00 : 76cde9: 44 89 fa mov %r15d,%edx 0.00 : 76cdec: be 5f 0a 00 00 mov $0xa5f,%esi 0.00 : 76cdf1: 48 89 c7 mov %rax,%rdi : ObjectIdGetDatum(opcentry->opcintype)); : ScanKeyInit(&skey[2], : Anum_pg_amproc_amprocrighttype, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(opcentry->opcintype)); : rel = heap_open(AccessMethodProcedureRelationId, AccessShareLock); 0.00 : 76cdf4: 48 89 85 70 fe ff ff mov %rax,-0x190(%rbp) : scan = systable_beginscan(rel, AccessMethodProcedureIndexId, indexOK, 0.00 : 76cdfb: e8 a0 7e d3 ff callq 4a4ca0 0.00 : 76ce00: 49 89 c5 mov %rax,%r13 : NULL, 3, skey); : : while (HeapTupleIsValid(htup = systable_getnext(scan))) 0.00 : 76ce03: eb 36 jmp 76ce3b 0.00 : 76ce05: 0f 1f 00 nopl (%rax) : { : Form_pg_amproc amprocform = (Form_pg_amproc) GETSTRUCT(htup); 0.00 : 76ce08: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 76ce0c: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 76ce10: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : : if (amprocform->amprocnum <= 0 || 0.00 : 76ce14: 0f b7 43 0c movzwl 0xc(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1519 100.00 : 76ce18: 66 85 c0 test %ax,%ax 0.00 : 76ce1b: 0f 8e e7 00 00 00 jle 76cf08 0.00 : 76ce21: 66 41 39 c6 cmp %ax,%r14w 0.00 : 76ce25: 0f 82 dd 00 00 00 jb 76cf08 : (StrategyNumber) amprocform->amprocnum > numSupport) : elog(ERROR, "invalid amproc number %d for opclass %u", : amprocform->amprocnum, operatorClassOid); : : opcentry->supportProcs[amprocform->amprocnum - 1] = 0.00 : 76ce2b: 48 0f bf c8 movswq %ax,%rcx 0.00 : 76ce2f: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 76ce34: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 76ce37: 89 44 8a fc mov %eax,-0x4(%rdx,%rcx,4) : ObjectIdGetDatum(opcentry->opcintype)); : rel = heap_open(AccessMethodProcedureRelationId, AccessShareLock); : scan = systable_beginscan(rel, AccessMethodProcedureIndexId, indexOK, : NULL, 3, skey); : : while (HeapTupleIsValid(htup = systable_getnext(scan))) 0.00 : 76ce3b: 4c 89 ef mov %r13,%rdi 0.00 : 76ce3e: e8 dd 7d d3 ff callq 4a4c20 0.00 : 76ce43: 48 85 c0 test %rax,%rax 0.00 : 76ce46: 75 c0 jne 76ce08 : : opcentry->supportProcs[amprocform->amprocnum - 1] = : amprocform->amproc; : } : : systable_endscan(scan); 0.00 : 76ce48: 4c 89 ef mov %r13,%rdi 0.00 : 76ce4b: e8 d0 7c d3 ff callq 4a4b20 : heap_close(rel, AccessShareLock); 0.00 : 76ce50: 48 8b bd 70 fe ff ff mov -0x190(%rbp),%rdi 0.00 : 76ce57: be 01 00 00 00 mov $0x1,%esi 0.00 : 76ce5c: e8 5f 0b d3 ff callq 49d9c0 0.00 : 76ce61: e9 b1 fe ff ff jmpq 76cd17 0.00 : 76ce66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 76ce6d: 00 00 00 : /* Need to allocate memory for new entry */ : opcentry->valid = false; /* until known OK */ : opcentry->numSupport = numSupport; : : if (numSupport > 0) : opcentry->supportProcs = (RegProcedure *) 0.00 : 76ce70: 48 8b 3d 09 da 44 00 mov 0x44da09(%rip),%rdi # bba880 0.00 : 76ce77: 41 0f b7 f6 movzwl %r14w,%esi 0.00 : 76ce7b: 48 c1 e6 02 shl $0x2,%rsi 0.00 : 76ce7f: e8 9c c1 02 00 callq 799020 0.00 : 76ce84: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 76ce89: e9 cd fd ff ff jmpq 76cc5b 0.00 : 76ce8e: 66 90 xchg %ax,%ax : if (OpClassCache == NULL) : { : /* First time through: initialize the opclass cache */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 76ce90: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 76ce97: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 76ce9b: 48 39 d1 cmp %rdx,%rcx 0.00 : 76ce9e: 76 18 jbe 76ceb8 0.00 : 76cea0: 48 89 d0 mov %rdx,%rax 0.00 : 76cea3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 76cea8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 76ceaf: 48 83 c0 08 add $0x8,%rax 0.00 : 76ceb3: 48 39 c1 cmp %rax,%rcx 0.00 : 76ceb6: 75 f0 jne 76cea8 : ctl.keysize = sizeof(Oid); : ctl.entrysize = sizeof(OpClassCacheEnt); : ctl.hash = oid_hash; : OpClassCache = hash_create("Operator class cache", 64, 0.00 : 76ceb8: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 76cebd: be 40 00 00 00 mov $0x40,%esi 0.00 : 76cec2: bf 72 d8 8c 00 mov $0x8cd872,%edi : { : /* First time through: initialize the opclass cache */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(Oid); 0.00 : 76cec7: 48 c7 45 88 04 00 00 movq $0x4,-0x78(%rbp) 0.00 : 76cece: 00 : ctl.entrysize = sizeof(OpClassCacheEnt); 0.00 : 76cecf: 48 c7 45 90 18 00 00 movq $0x18,-0x70(%rbp) 0.00 : 76ced6: 00 : ctl.hash = oid_hash; 0.00 : 76ced7: 48 c7 45 98 50 4f 78 movq $0x784f50,-0x68(%rbp) 0.00 : 76cede: 00 : OpClassCache = hash_create("Operator class cache", 64, 0.00 : 76cedf: e8 cc 79 01 00 callq 7848b0 : &ctl, HASH_ELEM | HASH_FUNCTION); : : /* Also make sure CacheMemoryContext exists */ : if (!CacheMemoryContext) 0.00 : 76cee4: 48 83 3d 94 d9 44 00 cmpq $0x0,0x44d994(%rip) # bba880 0.00 : 76ceeb: 00 : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(Oid); : ctl.entrysize = sizeof(OpClassCacheEnt); : ctl.hash = oid_hash; : OpClassCache = hash_create("Operator class cache", 64, 0.00 : 76ceec: 48 89 05 25 b6 44 00 mov %rax,0x44b625(%rip) # bb8518 : &ctl, HASH_ELEM | HASH_FUNCTION); : : /* Also make sure CacheMemoryContext exists */ : if (!CacheMemoryContext) 0.00 : 76cef3: 0f 85 22 fd ff ff jne 76cc1b : CreateCacheMemoryContext(); 0.00 : 76cef9: e8 c2 98 ff ff callq 7667c0 0.00 : 76cefe: e9 18 fd ff ff jmpq 76cc1b 0.00 : 76cf03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Form_pg_amproc amprocform = (Form_pg_amproc) GETSTRUCT(htup); : : if (amprocform->amprocnum <= 0 || : (StrategyNumber) amprocform->amprocnum > numSupport) : elog(ERROR, "invalid amproc number %d for opclass %u", 0.00 : 76cf08: ba b0 23 8d 00 mov $0x8d23b0,%edx 0.00 : 76cf0d: be f2 05 00 00 mov $0x5f2,%esi 0.00 : 76cf12: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76cf17: e8 04 e5 00 00 callq 77b420 0.00 : 76cf1c: 0f bf 53 0c movswl 0xc(%rbx),%edx 0.00 : 76cf20: 8b 8d 7c fe ff ff mov -0x184(%rbp),%ecx 0.00 : 76cf26: be 48 db 8c 00 mov $0x8cdb48,%esi 0.00 : 76cf2b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76cf30: 31 c0 xor %eax,%eax 0.00 : 76cf32: e8 f9 e2 00 00 callq 77b230 0.00 : 76cf37: e8 94 c5 cf ff callq 4694d0 : : opcentry->opcfamily = opclassform->opcfamily; : opcentry->opcintype = opclassform->opcintype; : } : else : elog(ERROR, "could not find tuple for opclass %u", operatorClassOid); 0.00 : 76cf3c: ba b0 23 8d 00 mov $0x8d23b0,%edx 0.00 : 76cf41: be d0 05 00 00 mov $0x5d0,%esi 0.00 : 76cf46: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76cf4b: e8 d0 e4 00 00 callq 77b420 0.00 : 76cf50: 8b 95 7c fe ff ff mov -0x184(%rbp),%edx 0.00 : 76cf56: be 20 db 8c 00 mov $0x8cdb20,%esi 0.00 : 76cf5b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76cf60: 31 c0 xor %eax,%eax 0.00 : 76cf62: e8 c9 e2 00 00 callq 77b230 0.00 : 76cf67: e8 64 c5 cf ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relmapper.c:677 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000770b90 : : * : * Note that the local case requires DatabasePath to be set up. : */ : static void : load_relmap_file(bool shared) : { 0.00 : 770b90: 55 push %rbp 0.00 : 770b91: 48 89 e5 mov %rsp,%rbp 0.00 : 770b94: 41 55 push %r13 0.00 : 770b96: 41 54 push %r12 0.00 : 770b98: 53 push %rbx 0.00 : 770b99: 48 81 ec 08 04 00 00 sub $0x408,%rsp : RelMapFile *map; : char mapfilename[MAXPGPATH]; : pg_crc32 crc; : int fd; : : if (shared) 0.00 : 770ba0: 40 84 ff test %dil,%dil 0.00 : 770ba3: 0f 84 ff 00 00 00 je 770ca8 : { : snprintf(mapfilename, sizeof(mapfilename), "global/%s", 0.00 : 770ba9: 4c 8d ad e0 fb ff ff lea -0x420(%rbp),%r13 0.00 : 770bb0: b9 ce 23 8d 00 mov $0x8d23ce,%ecx 0.00 : 770bb5: ba e4 d7 8c 00 mov $0x8cd7e4,%edx 0.00 : 770bba: be 00 04 00 00 mov $0x400,%esi 0.00 : 770bbf: 31 c0 xor %eax,%eax 0.00 : 770bc1: 41 bc e0 85 bb 00 mov $0xbb85e0,%r12d 0.00 : 770bc7: 4c 89 ef mov %r13,%rdi 0.00 : 770bca: e8 81 88 cf ff callq 469450 : DatabasePath, RELMAPPER_FILENAME); : map = &local_map; : } : : /* Read data ... */ : fd = OpenTransientFile(mapfilename, 0.00 : 770bcf: 31 f6 xor %esi,%esi 0.00 : 770bd1: ba 80 01 00 00 mov $0x180,%edx 0.00 : 770bd6: 4c 89 ef mov %r13,%rdi 0.00 : 770bd9: e8 62 8c f0 ff callq 679840 : O_RDONLY | PG_BINARY, S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 770bde: 85 c0 test %eax,%eax : DatabasePath, RELMAPPER_FILENAME); : map = &local_map; : } : : /* Read data ... */ : fd = OpenTransientFile(mapfilename, 0.00 : 770be0: 89 c3 mov %eax,%ebx : O_RDONLY | PG_BINARY, S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 770be2: 0f 88 7e 01 00 00 js 770d66 : * seems unnecessary since our read() should be atomic against any : * concurrent updater's write(). If the file is updated shortly after we : * look, the sinval signaling mechanism will make us re-read it before we : * are able to access any relation that's affected by the change. : */ : if (read(fd, map, sizeof(RelMapFile)) != sizeof(RelMapFile)) 0.00 : 770be8: ba 00 02 00 00 mov $0x200,%edx 0.00 : 770bed: 4c 89 e6 mov %r12,%rsi 0.00 : 770bf0: 89 c7 mov %eax,%edi 0.00 : 770bf2: e8 19 8a cf ff callq 469610 0.00 : 770bf7: 48 3d 00 02 00 00 cmp $0x200,%rax 0.00 : 770bfd: 0f 85 19 01 00 00 jne 770d1c : ereport(FATAL, : (errcode_for_file_access(), : errmsg("could not read relation mapping file \"%s\": %m", : mapfilename))); : : CloseTransientFile(fd); 0.00 : 770c03: 89 df mov %ebx,%edi 0.00 : 770c05: e8 c6 79 f0 ff callq 6785d0 : : /* check for correct magic number, etc */ : if (map->magic != RELMAPPER_FILEMAGIC || 0.00 : 770c0a: 41 81 3c 24 17 27 59 cmpl $0x592717,(%r12) 0.00 : 770c11: 00 0.00 : 770c12: 75 1e jne 770c32 0.00 : 770c14: 41 8b 44 24 04 mov 0x4(%r12),%eax 0.00 : 770c19: 85 c0 test %eax,%eax 0.00 : 770c1b: 78 15 js 770c32 0.00 : 770c1d: 83 f8 3e cmp $0x3e,%eax : (errmsg("relation mapping file \"%s\" contains invalid data", : mapfilename))); : : /* verify the CRC */ : INIT_CRC32(crc); : COMP_CRC32(crc, (char *) map, offsetof(RelMapFile, crc)); 0.00 : 770c20: 4c 89 e6 mov %r12,%rsi 0.00 : 770c23: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 770c28: 49 8d bc 24 f8 01 00 lea 0x1f8(%r12),%rdi 0.00 : 770c2f: 00 : mapfilename))); : : CloseTransientFile(fd); : : /* check for correct magic number, etc */ : if (map->magic != RELMAPPER_FILEMAGIC || 0.00 : 770c30: 7e 36 jle 770c68 : map->num_mappings < 0 || : map->num_mappings > MAX_MAPPINGS) : ereport(FATAL, 0.00 : 770c32: 45 31 c0 xor %r8d,%r8d 0.00 : 770c35: be c2 23 8d 00 mov $0x8d23c2,%esi 0.00 : 770c3a: bf 15 00 00 00 mov $0x15,%edi 0.00 : 770c3f: b9 10 27 8d 00 mov $0x8d2710,%ecx 0.00 : 770c44: ba a1 02 00 00 mov $0x2a1,%edx 0.00 : 770c49: e8 72 9e 00 00 callq 77aac0 0.00 : 770c4e: 84 c0 test %al,%al 0.00 : 770c50: 4c 89 ee mov %r13,%rsi 0.00 : 770c53: bf f0 25 8d 00 mov $0x8d25f0,%edi 0.00 : 770c58: 0f 85 a9 00 00 00 jne 770d07 : INIT_CRC32(crc); : COMP_CRC32(crc, (char *) map, offsetof(RelMapFile, crc)); : FIN_CRC32(crc); : : if (!EQ_CRC32(crc, map->crc)) : ereport(FATAL, 0.00 : 770c5e: e8 6d 88 cf ff callq 4694d0 0.00 : 770c63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : (errmsg("relation mapping file \"%s\" contains invalid data", : mapfilename))); : : /* verify the CRC */ : INIT_CRC32(crc); : COMP_CRC32(crc, (char *) map, offsetof(RelMapFile, crc)); 0.00 : 770c68: 0f b6 16 movzbl (%rsi),%edx 0.00 : 770c6b: 89 c8 mov %ecx,%eax 0.00 : 770c6d: 48 83 c6 01 add $0x1,%rsi 0.00 : 770c71: c1 e8 18 shr $0x18,%eax 0.00 : 770c74: c1 e1 08 shl $0x8,%ecx 0.00 : 770c77: 31 d0 xor %edx,%eax 0.00 : 770c79: 48 98 cltq 0.00 : 770c7b: 33 0c 85 a0 09 90 00 xor 0x9009a0(,%rax,4),%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relmapper.c:677 100.00 : 770c82: 48 39 fe cmp %rdi,%rsi 0.00 : 770c85: 75 e1 jne 770c68 : FIN_CRC32(crc); : : if (!EQ_CRC32(crc, map->crc)) 0.00 : 770c87: f7 d1 not %ecx 0.00 : 770c89: 41 39 8c 24 f8 01 00 cmp %ecx,0x1f8(%r12) 0.00 : 770c90: 00 0.00 : 770c91: 75 48 jne 770cdb : ereport(FATAL, : (errmsg("relation mapping file \"%s\" contains incorrect checksum", : mapfilename))); : } 0.00 : 770c93: 48 81 c4 08 04 00 00 add $0x408,%rsp 0.00 : 770c9a: 5b pop %rbx 0.00 : 770c9b: 41 5c pop %r12 0.00 : 770c9d: 41 5d pop %r13 0.00 : 770c9f: c9 leaveq 0.00 : 770ca0: c3 retq 0.00 : 770ca1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : RELMAPPER_FILENAME); : map = &shared_map; : } : else : { : snprintf(mapfilename, sizeof(mapfilename), "%s/%s", 0.00 : 770ca8: 4c 8d ad e0 fb ff ff lea -0x420(%rbp),%r13 0.00 : 770caf: 48 8b 0d fa 93 44 00 mov 0x4493fa(%rip),%rcx # bba0b0 0.00 : 770cb6: 41 b8 ce 23 8d 00 mov $0x8d23ce,%r8d 0.00 : 770cbc: ba 1b a3 8a 00 mov $0x8aa31b,%edx 0.00 : 770cc1: be 00 04 00 00 mov $0x400,%esi 0.00 : 770cc6: 31 c0 xor %eax,%eax 0.00 : 770cc8: 4c 89 ef mov %r13,%rdi 0.00 : 770ccb: 41 bc e0 87 bb 00 mov $0xbb87e0,%r12d 0.00 : 770cd1: e8 7a 87 cf ff callq 469450 0.00 : 770cd6: e9 f4 fe ff ff jmpq 770bcf : INIT_CRC32(crc); : COMP_CRC32(crc, (char *) map, offsetof(RelMapFile, crc)); : FIN_CRC32(crc); : : if (!EQ_CRC32(crc, map->crc)) : ereport(FATAL, 0.00 : 770cdb: 45 31 c0 xor %r8d,%r8d 0.00 : 770cde: b9 10 27 8d 00 mov $0x8d2710,%ecx 0.00 : 770ce3: ba ab 02 00 00 mov $0x2ab,%edx 0.00 : 770ce8: be c2 23 8d 00 mov $0x8d23c2,%esi 0.00 : 770ced: bf 15 00 00 00 mov $0x15,%edi 0.00 : 770cf2: e8 c9 9d 00 00 callq 77aac0 0.00 : 770cf7: 84 c0 test %al,%al 0.00 : 770cf9: 0f 84 5f ff ff ff je 770c5e 0.00 : 770cff: 4c 89 ee mov %r13,%rsi 0.00 : 770d02: bf 28 26 8d 00 mov $0x8d2628,%edi 0.00 : 770d07: 31 c0 xor %eax,%eax 0.00 : 770d09: e8 92 bb 00 00 callq 77c8a0 0.00 : 770d0e: 89 c7 mov %eax,%edi 0.00 : 770d10: 31 c0 xor %eax,%eax 0.00 : 770d12: e8 c9 98 00 00 callq 77a5e0 0.00 : 770d17: e8 b4 87 cf ff callq 4694d0 : * concurrent updater's write(). If the file is updated shortly after we : * look, the sinval signaling mechanism will make us re-read it before we : * are able to access any relation that's affected by the change. : */ : if (read(fd, map, sizeof(RelMapFile)) != sizeof(RelMapFile)) : ereport(FATAL, 0.00 : 770d1c: 45 31 c0 xor %r8d,%r8d 0.00 : 770d1f: b9 10 27 8d 00 mov $0x8d2710,%ecx 0.00 : 770d24: ba 97 02 00 00 mov $0x297,%edx 0.00 : 770d29: be c2 23 8d 00 mov $0x8d23c2,%esi 0.00 : 770d2e: bf 15 00 00 00 mov $0x15,%edi 0.00 : 770d33: e8 88 9d 00 00 callq 77aac0 0.00 : 770d38: 84 c0 test %al,%al 0.00 : 770d3a: 0f 84 1e ff ff ff je 770c5e 0.00 : 770d40: 4c 89 ee mov %r13,%rsi 0.00 : 770d43: bf c0 25 8d 00 mov $0x8d25c0,%edi 0.00 : 770d48: 31 c0 xor %eax,%eax 0.00 : 770d4a: e8 51 bb 00 00 callq 77c8a0 0.00 : 770d4f: 89 c3 mov %eax,%ebx 0.00 : 770d51: e8 9a bd 00 00 callq 77caf0 0.00 : 770d56: 89 de mov %ebx,%esi 0.00 : 770d58: 89 c7 mov %eax,%edi 0.00 : 770d5a: 31 c0 xor %eax,%eax 0.00 : 770d5c: e8 7f 98 00 00 callq 77a5e0 0.00 : 770d61: e9 f8 fe ff ff jmpq 770c5e : : /* Read data ... */ : fd = OpenTransientFile(mapfilename, : O_RDONLY | PG_BINARY, S_IRUSR | S_IWUSR); : if (fd < 0) : ereport(FATAL, 0.00 : 770d66: 45 31 c0 xor %r8d,%r8d 0.00 : 770d69: be c2 23 8d 00 mov $0x8d23c2,%esi 0.00 : 770d6e: bf 15 00 00 00 mov $0x15,%edi 0.00 : 770d73: b9 10 27 8d 00 mov $0x8d2710,%ecx 0.00 : 770d78: ba 8a 02 00 00 mov $0x28a,%edx 0.00 : 770d7d: e8 3e 9d 00 00 callq 77aac0 0.00 : 770d82: 84 c0 test %al,%al 0.00 : 770d84: 4c 89 ee mov %r13,%rsi 0.00 : 770d87: bf a0 24 8d 00 mov $0x8d24a0,%edi 0.00 : 770d8c: 0f 84 cc fe ff ff je 770c5e 0.00 : 770d92: eb b4 jmp 770d48 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1135 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000771990 : : * List-search interface : */ : struct catclist * : SearchSysCacheList(int cacheId, int nkeys, : Datum key1, Datum key2, Datum key3, Datum key4) : { 0.00 : 771990: 55 push %rbp 0.00 : 771991: 48 89 e5 mov %rsp,%rbp 0.00 : 771994: 53 push %rbx 0.00 : 771995: 89 fb mov %edi,%ebx 0.00 : 771997: 48 83 ec 08 sub $0x8,%rsp : if (cacheId < 0 || cacheId >= SysCacheSize || 0.00 : 77199b: 85 ff test %edi,%edi 0.00 : 77199d: 78 21 js 7719c0 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1135 100.00 : 77199f: 83 ff 3d cmp $0x3d,%edi 0.00 : 7719a2: 7f 1c jg 7719c0 0.00 : 7719a4: 48 63 c7 movslq %edi,%rax 0.00 : 7719a7: 48 8b 3c c5 c0 92 bb mov 0xbb92c0(,%rax,8),%rdi 0.00 : 7719ae: 00 0.00 : 7719af: 48 85 ff test %rdi,%rdi 0.00 : 7719b2: 74 0c je 7719c0 : !PointerIsValid(SysCache[cacheId])) : elog(ERROR, "invalid cache ID: %d", cacheId); : : return SearchCatCacheList(SysCache[cacheId], nkeys, : key1, key2, key3, key4); : } 0.00 : 7719b4: 48 83 c4 08 add $0x8,%rsp 0.00 : 7719b8: 5b pop %rbx 0.00 : 7719b9: c9 leaveq : { : if (cacheId < 0 || cacheId >= SysCacheSize || : !PointerIsValid(SysCache[cacheId])) : elog(ERROR, "invalid cache ID: %d", cacheId); : : return SearchCatCacheList(SysCache[cacheId], nkeys, 0.00 : 7719ba: e9 61 3f ff ff jmpq 765920 0.00 : 7719bf: 90 nop : SearchSysCacheList(int cacheId, int nkeys, : Datum key1, Datum key2, Datum key3, Datum key4) : { : if (cacheId < 0 || cacheId >= SysCacheSize || : !PointerIsValid(SysCache[cacheId])) : elog(ERROR, "invalid cache ID: %d", cacheId); 0.00 : 7719c0: ba e0 28 8d 00 mov $0x8d28e0,%edx 0.00 : 7719c5: be 71 04 00 00 mov $0x471,%esi 0.00 : 7719ca: bf 12 31 8d 00 mov $0x8d3112,%edi 0.00 : 7719cf: e8 4c 9a 00 00 callq 77b420 0.00 : 7719d4: 89 da mov %ebx,%edx 0.00 : 7719d6: be a2 28 8d 00 mov $0x8d28a2,%esi 0.00 : 7719db: bf 14 00 00 00 mov $0x14,%edi 0.00 : 7719e0: 31 c0 xor %eax,%eax 0.00 : 7719e2: e8 49 98 00 00 callq 77b230 0.00 : 7719e7: e8 e4 7a cf ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/error/elog.c:233 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077aac0 : : * report (if it's a warning or lower and not to be reported anywhere). : */ : bool : errstart(int elevel, const char *filename, int lineno, : const char *funcname, const char *domain) : { 0.00 : 77aac0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/error/elog.c:233 100.00 : 77aac1: 48 89 e5 mov %rsp,%rbp 0.00 : 77aac4: 41 57 push %r15 0.00 : 77aac6: 4d 89 c7 mov %r8,%r15 0.00 : 77aac9: 41 56 push %r14 0.00 : 77aacb: 49 89 f6 mov %rsi,%r14 0.00 : 77aace: 41 55 push %r13 0.00 : 77aad0: 41 54 push %r12 0.00 : 77aad2: 41 89 fc mov %edi,%r12d 0.00 : 77aad5: 53 push %rbx 0.00 : 77aad6: 48 83 ec 18 sub $0x18,%rsp : : /* : * Check some cases in which we want to promote an error into a more : * severe error. None of this logic applies for non-error messages. : */ : if (elevel >= ERROR) 0.00 : 77aada: 83 ff 13 cmp $0x13,%edi : * report (if it's a warning or lower and not to be reported anywhere). : */ : bool : errstart(int elevel, const char *filename, int lineno, : const char *funcname, const char *domain) : { 0.00 : 77aadd: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 77aae0: 48 89 4d c8 mov %rcx,-0x38(%rbp) : : /* : * Check some cases in which we want to promote an error into a more : * severe error. None of this logic applies for non-error messages. : */ : if (elevel >= ERROR) 0.00 : 77aae4: 7e 41 jle 77ab27 : { : /* : * If we are inside a critical section, all errors become PANIC : * errors. See miscadmin.h. : */ : if (CritSectionCount > 0) 0.00 : 77aae6: 8b 05 b0 f5 43 00 mov 0x43f5b0(%rip),%eax # bba09c 0.00 : 77aaec: 85 c0 test %eax,%eax 0.00 : 77aaee: 0f 84 9c 01 00 00 je 77ac90 0.00 : 77aaf4: 41 bc 16 00 00 00 mov $0x16,%r12d : * in progress it will be lost. This is more or less okay, except we : * do not want to have a FATAL or PANIC error downgraded because the : * reporting process was interrupted by a lower-grade error. So check : * the stack and make sure we panic if panic is warranted. : */ : for (i = 0; i <= errordata_stack_depth; i++) 0.00 : 77aafa: 8b 35 4c df 3e 00 mov 0x3edf4c(%rip),%esi # b68a4c 0.00 : 77ab00: 85 f6 test %esi,%esi 0.00 : 77ab02: 78 23 js 77ab27 0.00 : 77ab04: b9 00 97 bb 00 mov $0xbb9700,%ecx 0.00 : 77ab09: 31 d2 xor %edx,%edx 0.00 : 77ab0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : elevel = Max(elevel, errordata[i].elevel); 0.00 : 77ab10: 8b 01 mov (%rcx),%eax 0.00 : 77ab12: 41 39 c4 cmp %eax,%r12d 0.00 : 77ab15: 44 0f 4c e0 cmovl %eax,%r12d : * in progress it will be lost. This is more or less okay, except we : * do not want to have a FATAL or PANIC error downgraded because the : * reporting process was interrupted by a lower-grade error. So check : * the stack and make sure we panic if panic is warranted. : */ : for (i = 0; i <= errordata_stack_depth; i++) 0.00 : 77ab19: 83 c2 01 add $0x1,%edx 0.00 : 77ab1c: 48 81 c1 a8 00 00 00 add $0xa8,%rcx 0.00 : 77ab23: 39 f2 cmp %esi,%edx 0.00 : 77ab25: 7e e9 jle 77ab10 : * test is correct for testing whether the message should go to the client. : */ : static bool : is_log_level_output(int elevel, int log_min_level) : { : if (elevel == LOG || elevel == COMMERROR) 0.00 : 77ab27: 41 8d 44 24 f1 lea -0xf(%r12),%eax : * warning or less and not enabled for logging, just return FALSE without : * starting up any error logging machinery. : */ : : /* Determine whether message is enabled for server log output */ : output_to_server = is_log_level_output(elevel, log_min_messages); 0.00 : 77ab2c: 8b 15 36 e0 3e 00 mov 0x3ee036(%rip),%edx # b68b68 : * test is correct for testing whether the message should go to the client. : */ : static bool : is_log_level_output(int elevel, int log_min_level) : { : if (elevel == LOG || elevel == COMMERROR) 0.00 : 77ab32: 83 f8 01 cmp $0x1,%eax 0.00 : 77ab35: 0f 86 05 02 00 00 jbe 77ad40 : { : if (log_min_level == LOG || log_min_level <= ERROR) : return true; : } : else if (log_min_level == LOG) 0.00 : 77ab3b: 83 fa 0f cmp $0xf,%edx 0.00 : 77ab3e: 0f 84 84 01 00 00 je 77acc8 : /* elevel != LOG */ : if (elevel >= FATAL) : return true; : } : /* Neither is LOG */ : else if (elevel >= log_min_level) 0.00 : 77ab44: 41 39 d4 cmp %edx,%r12d 0.00 : 77ab47: 0f 8c 85 01 00 00 jl 77acd2 0.00 : 77ab4d: 31 d2 xor %edx,%edx : : /* Determine whether message is enabled for server log output */ : output_to_server = is_log_level_output(elevel, log_min_messages); : : /* Determine whether message is enabled for client output */ : if (whereToSendOutput == DestRemote && elevel != COMMERROR) 0.00 : 77ab4f: 83 3d 52 dc 3e 00 02 cmpl $0x2,0x3edc52(%rip) # b687a8 : /* elevel != LOG */ : if (elevel >= FATAL) : return true; : } : /* Neither is LOG */ : else if (elevel >= log_min_level) 0.00 : 77ab56: 41 b8 01 00 00 00 mov $0x1,%r8d : : /* Determine whether message is enabled for server log output */ : output_to_server = is_log_level_output(elevel, log_min_messages); : : /* Determine whether message is enabled for client output */ : if (whereToSendOutput == DestRemote && elevel != COMMERROR) 0.00 : 77ab5c: 0f 84 85 01 00 00 je 77ace7 0.00 : 77ab62: 45 31 ed xor %r13d,%r13d : output_to_client = (elevel >= client_min_messages || : elevel == INFO); : } : : /* Skip processing effort if non-error message will not be output */ : if (elevel < ERROR && !output_to_server && !output_to_client) 0.00 : 77ab65: 84 d2 test %dl,%dl 0.00 : 77ab67: 74 11 je 77ab7a 0.00 : 77ab69: 41 83 fc 13 cmp $0x13,%r12d 0.00 : 77ab6d: 7f 0b jg 77ab7a 0.00 : 77ab6f: 31 c0 xor %eax,%eax 0.00 : 77ab71: 45 84 ed test %r13b,%r13b 0.00 : 77ab74: 0f 84 05 01 00 00 je 77ac7f : : /* : * We need to do some actual work. Make sure that memory context : * initialization has finished, else we can't do anything useful. : */ : if (ErrorContext == NULL) 0.00 : 77ab7a: 48 8b 3d ef fc 43 00 mov 0x43fcef(%rip),%rdi # bba870 0.00 : 77ab81: 48 85 ff test %rdi,%rdi 0.00 : 77ab84: 0f 84 53 02 00 00 je 77addd : : /* : * Okay, crank up a stack entry to store the info in. : */ : : if (recursion_depth++ > 0 && elevel >= ERROR) 0.00 : 77ab8a: 8b 15 f4 ea 43 00 mov 0x43eaf4(%rip),%edx # bb9684 0.00 : 77ab90: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 77ab93: 85 d2 test %edx,%edx 0.00 : 77ab95: 89 05 e9 ea 43 00 mov %eax,0x43eae9(%rip) # bb9684 0.00 : 77ab9b: 7e 0a jle 77aba7 0.00 : 77ab9d: 41 83 fc 13 cmp $0x13,%r12d 0.00 : 77aba1: 0f 8f d1 01 00 00 jg 77ad78 : { : error_context_stack = NULL; : debug_query_string = NULL; : } : } : if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE) 0.00 : 77aba7: 8b 05 9f de 3e 00 mov 0x3ede9f(%rip),%eax # b68a4c 0.00 : 77abad: 83 c0 01 add $0x1,%eax 0.00 : 77abb0: 83 f8 04 cmp $0x4,%eax 0.00 : 77abb3: 89 05 93 de 3e 00 mov %eax,0x3ede93(%rip) # b68a4c 0.00 : 77abb9: 0f 8f ef 01 00 00 jg 77adae : errordata_stack_depth = -1; /* make room on stack */ : ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); : } : : /* Initialize data for this error frame */ : edata = &errordata[errordata_stack_depth]; 0.00 : 77abbf: 48 98 cltq 0.00 : 77abc1: 48 8d 14 80 lea (%rax,%rax,4),%rdx 0.00 : 77abc5: 48 8d 34 90 lea (%rax,%rdx,4),%rsi 0.00 : 77abc9: 48 8d 1c f5 00 97 bb lea 0xbb9700(,%rsi,8),%rbx 0.00 : 77abd0: 00 : MemSet(edata, 0, sizeof(ErrorData)); 0.00 : 77abd1: f6 c3 07 test $0x7,%bl 0.00 : 77abd4: 0f 85 36 01 00 00 jne 77ad10 0.00 : 77abda: 48 8d 93 a8 00 00 00 lea 0xa8(%rbx),%rdx 0.00 : 77abe1: 48 89 d8 mov %rbx,%rax 0.00 : 77abe4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77abe8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 77abef: 48 83 c0 08 add $0x8,%rax 0.00 : 77abf3: 48 39 c2 cmp %rax,%rdx 0.00 : 77abf6: 75 f0 jne 77abe8 : edata->elevel = elevel; : edata->output_to_server = output_to_server; : edata->output_to_client = output_to_client; : if (filename) 0.00 : 77abf8: 4d 85 f6 test %r14,%r14 : } : : /* Initialize data for this error frame */ : edata = &errordata[errordata_stack_depth]; : MemSet(edata, 0, sizeof(ErrorData)); : edata->elevel = elevel; 0.00 : 77abfb: 44 89 24 f5 00 97 bb mov %r12d,0xbb9700(,%rsi,8) 0.00 : 77ac02: 00 : edata->output_to_server = output_to_server; 0.00 : 77ac03: 44 88 43 04 mov %r8b,0x4(%rbx) : edata->output_to_client = output_to_client; 0.00 : 77ac07: 44 88 6b 05 mov %r13b,0x5(%rbx) : if (filename) 0.00 : 77ac0b: 74 18 je 77ac25 : { : const char *slash; : : /* keep only base name, useful especially for vpath builds */ : slash = strrchr(filename, '/'); 0.00 : 77ac0d: 4c 89 f7 mov %r14,%rdi 0.00 : 77ac10: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 77ac15: e8 d6 ed ce ff callq 4699f0 : if (slash) : filename = slash + 1; 0.00 : 77ac1a: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 77ac1e: 48 85 c0 test %rax,%rax 0.00 : 77ac21: 4c 0f 45 f2 cmovne %rdx,%r14 : } : edata->filename = filename; : edata->lineno = lineno; 0.00 : 77ac25: 8b 45 d4 mov -0x2c(%rbp),%eax : edata->funcname = funcname; : /* the default text domain is the backend's */ : edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres"); 0.00 : 77ac28: 4d 85 ff test %r15,%r15 : /* keep only base name, useful especially for vpath builds */ : slash = strrchr(filename, '/'); : if (slash) : filename = slash + 1; : } : edata->filename = filename; 0.00 : 77ac2b: 4c 89 73 08 mov %r14,0x8(%rbx) : edata->lineno = lineno; 0.00 : 77ac2f: 89 43 10 mov %eax,0x10(%rbx) : edata->funcname = funcname; 0.00 : 77ac32: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 77ac36: 48 89 43 18 mov %rax,0x18(%rbx) : /* the default text domain is the backend's */ : edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres"); 0.00 : 77ac3a: b8 d5 fd 88 00 mov $0x88fdd5,%eax 0.00 : 77ac3f: 4c 0f 44 f8 cmove %rax,%r15 : /* Select default errcode based on elevel */ : if (elevel >= ERROR) 0.00 : 77ac43: 41 83 fc 13 cmp $0x13,%r12d : } : edata->filename = filename; : edata->lineno = lineno; : edata->funcname = funcname; : /* the default text domain is the backend's */ : edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres"); 0.00 : 77ac47: 4c 89 7b 20 mov %r15,0x20(%rbx) : /* Select default errcode based on elevel */ : if (elevel >= ERROR) 0.00 : 77ac4b: 0f 8e d7 00 00 00 jle 77ad28 : edata->sqlerrcode = ERRCODE_INTERNAL_ERROR; 0.00 : 77ac51: c7 43 30 28 0a 00 00 movl $0xa28,0x30(%rbx) : else if (elevel == WARNING) : edata->sqlerrcode = ERRCODE_WARNING; : else : edata->sqlerrcode = ERRCODE_SUCCESSFUL_COMPLETION; : /* errno is saved here so that error parameter eval can't change it */ : edata->saved_errno = errno; 0.00 : 77ac58: e8 63 f0 ce ff callq 469cc0 <__errno_location@plt> 0.00 : 77ac5d: 8b 00 mov (%rax),%eax : /* : * Any allocations for this error state level should go into ErrorContext : */ : edata->assoc_context = ErrorContext; : : recursion_depth--; 0.00 : 77ac5f: 83 2d 1e ea 43 00 01 subl $0x1,0x43ea1e(%rip) # bb9684 : else if (elevel == WARNING) : edata->sqlerrcode = ERRCODE_WARNING; : else : edata->sqlerrcode = ERRCODE_SUCCESSFUL_COMPLETION; : /* errno is saved here so that error parameter eval can't change it */ : edata->saved_errno = errno; 0.00 : 77ac66: 89 83 98 00 00 00 mov %eax,0x98(%rbx) : : /* : * Any allocations for this error state level should go into ErrorContext : */ : edata->assoc_context = ErrorContext; 0.00 : 77ac6c: 48 8b 05 fd fb 43 00 mov 0x43fbfd(%rip),%rax # bba870 0.00 : 77ac73: 48 89 83 a0 00 00 00 mov %rax,0xa0(%rbx) : : recursion_depth--; 0.00 : 77ac7a: b8 01 00 00 00 mov $0x1,%eax : return true; : } 0.00 : 77ac7f: 48 83 c4 18 add $0x18,%rsp 0.00 : 77ac83: 5b pop %rbx 0.00 : 77ac84: 41 5c pop %r12 0.00 : 77ac86: 41 5d pop %r13 0.00 : 77ac88: 41 5e pop %r14 0.00 : 77ac8a: 41 5f pop %r15 0.00 : 77ac8c: c9 leaveq 0.00 : 77ac8d: c3 retq 0.00 : 77ac8e: 66 90 xchg %ax,%ax : * : * 3. the error occurred after proc_exit has begun to run. (It's : * proc_exit's responsibility to see that this doesn't turn into : * infinite recursion!) : */ : if (elevel == ERROR) 0.00 : 77ac90: 83 ff 14 cmp $0x14,%edi 0.00 : 77ac93: 0f 85 61 fe ff ff jne 77aafa : { : if (PG_exception_stack == NULL || 0.00 : 77ac99: 48 83 3d a7 e9 43 00 cmpq $0x0,0x43e9a7(%rip) # bb9648 0.00 : 77aca0: 00 0.00 : 77aca1: 74 16 je 77acb9 0.00 : 77aca3: 80 3d 16 f4 43 00 00 cmpb $0x0,0x43f416(%rip) # bba0c0 0.00 : 77acaa: 75 0d jne 77acb9 0.00 : 77acac: 80 3d 0d 25 40 00 00 cmpb $0x0,0x40250d(%rip) # b7d1c0 0.00 : 77acb3: 0f 84 41 fe ff ff je 77aafa 0.00 : 77acb9: 41 bc 15 00 00 00 mov $0x15,%r12d 0.00 : 77acbf: e9 36 fe ff ff jmpq 77aafa 0.00 : 77acc4: 0f 1f 40 00 nopl 0x0(%rax) : return true; : } : else if (log_min_level == LOG) : { : /* elevel != LOG */ : if (elevel >= FATAL) 0.00 : 77acc8: 41 83 fc 14 cmp $0x14,%r12d 0.00 : 77accc: 0f 8f 7b fe ff ff jg 77ab4d : return true; : } : /* Neither is LOG */ : else if (elevel >= log_min_level) 0.00 : 77acd2: 45 31 c0 xor %r8d,%r8d 0.00 : 77acd5: ba 01 00 00 00 mov $0x1,%edx : : /* Determine whether message is enabled for server log output */ : output_to_server = is_log_level_output(elevel, log_min_messages); : : /* Determine whether message is enabled for client output */ : if (whereToSendOutput == DestRemote && elevel != COMMERROR) 0.00 : 77acda: 83 3d c7 da 3e 00 02 cmpl $0x2,0x3edac7(%rip) # b687a8 0.00 : 77ace1: 0f 85 7b fe ff ff jne 77ab62 0.00 : 77ace7: 41 83 fc 10 cmp $0x10,%r12d 0.00 : 77aceb: 0f 84 71 fe ff ff je 77ab62 : * client_min_messages is honored only after we complete the : * authentication handshake. This is required both for security : * reasons and because many clients can't handle NOTICE messages : * during authentication. : */ : if (ClientAuthInProgress) 0.00 : 77acf1: 80 3d 5b 12 40 00 00 cmpb $0x0,0x40125b(%rip) # b7bf53 0.00 : 77acf8: 74 5e je 77ad58 : output_to_client = (elevel >= ERROR); 0.00 : 77acfa: 41 83 fc 13 cmp $0x13,%r12d 0.00 : 77acfe: 41 0f 9f c5 setg %r13b 0.00 : 77ad02: e9 5e fe ff ff jmpq 77ab65 0.00 : 77ad07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 77ad0e: 00 00 : ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); : } : : /* Initialize data for this error frame */ : edata = &errordata[errordata_stack_depth]; : MemSet(edata, 0, sizeof(ErrorData)); 0.00 : 77ad10: b9 15 00 00 00 mov $0x15,%ecx 0.00 : 77ad15: 31 c0 xor %eax,%eax 0.00 : 77ad17: 48 89 df mov %rbx,%rdi 0.00 : 77ad1a: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 77ad1d: e9 d6 fe ff ff jmpq 77abf8 0.00 : 77ad22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres"); : /* Select default errcode based on elevel */ : if (elevel >= ERROR) : edata->sqlerrcode = ERRCODE_INTERNAL_ERROR; : else if (elevel == WARNING) : edata->sqlerrcode = ERRCODE_WARNING; 0.00 : 77ad28: b8 40 00 00 00 mov $0x40,%eax 0.00 : 77ad2d: ba 00 00 00 00 mov $0x0,%edx 0.00 : 77ad32: 0f 45 c2 cmovne %edx,%eax 0.00 : 77ad35: 89 43 30 mov %eax,0x30(%rbx) 0.00 : 77ad38: e9 1b ff ff ff jmpq 77ac58 0.00 : 77ad3d: 0f 1f 00 nopl (%rax) : static bool : is_log_level_output(int elevel, int log_min_level) : { : if (elevel == LOG || elevel == COMMERROR) : { : if (log_min_level == LOG || log_min_level <= ERROR) 0.00 : 77ad40: 83 fa 14 cmp $0x14,%edx 0.00 : 77ad43: 0f 8e 04 fe ff ff jle 77ab4d : /* elevel != LOG */ : if (elevel >= FATAL) : return true; : } : /* Neither is LOG */ : else if (elevel >= log_min_level) 0.00 : 77ad49: 45 31 c0 xor %r8d,%r8d 0.00 : 77ad4c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 77ad51: eb 87 jmp 77acda 0.00 : 77ad53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * during authentication. : */ : if (ClientAuthInProgress) : output_to_client = (elevel >= ERROR); : else : output_to_client = (elevel >= client_min_messages || 0.00 : 77ad58: 44 3b 25 0d de 3e 00 cmp 0x3ede0d(%rip),%r12d # b68b6c 0.00 : 77ad5f: 0f 9d c0 setge %al 0.00 : 77ad62: 41 83 fc 11 cmp $0x11,%r12d 0.00 : 77ad66: 41 0f 94 c5 sete %r13b 0.00 : 77ad6a: 41 09 c5 or %eax,%r13d 0.00 : 77ad6d: e9 f3 fd ff ff jmpq 77ab65 0.00 : 77ad72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * Ooops, error during error processing. Clear ErrorContext as : * discussed at top of file. We will not return to the original : * error's reporter or handler, so we don't need it. : */ : MemoryContextReset(ErrorContext); 0.00 : 77ad78: 44 88 45 c0 mov %r8b,-0x40(%rbp) 0.00 : 77ad7c: e8 2f dc 01 00 callq 7989b0 : * Infinite error recursion might be due to something broken in a : * context traceback routine. Abandon them too. We also abandon : * attempting to print the error statement (which, if long, could : * itself be the source of the recursive failure). : */ : if (in_error_recursion_trouble()) 0.00 : 77ad81: 83 3d fc e8 43 00 02 cmpl $0x2,0x43e8fc(%rip) # bb9684 0.00 : 77ad88: 44 0f b6 45 c0 movzbl -0x40(%rbp),%r8d 0.00 : 77ad8d: 0f 8e 14 fe ff ff jle 77aba7 : { : error_context_stack = NULL; 0.00 : 77ad93: 48 c7 05 a2 e8 43 00 movq $0x0,0x43e8a2(%rip) # bb9640 0.00 : 77ad9a: 00 00 00 00 : debug_query_string = NULL; 0.00 : 77ad9e: 48 c7 05 87 4d 44 00 movq $0x0,0x444d87(%rip) # bbfb30 0.00 : 77ada5: 00 00 00 00 0.00 : 77ada9: e9 f9 fd ff ff jmpq 77aba7 : * Wups, stack not big enough. We treat this as a PANIC condition : * because it suggests an infinite loop of errors during error : * recovery. : */ : errordata_stack_depth = -1; /* make room on stack */ : ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); 0.00 : 77adae: 45 31 c0 xor %r8d,%r8d 0.00 : 77adb1: b9 ba 46 8d 00 mov $0x8d46ba,%ecx 0.00 : 77adb6: ba 66 01 00 00 mov $0x166,%edx 0.00 : 77adbb: be 88 3c 8d 00 mov $0x8d3c88,%esi 0.00 : 77adc0: bf 16 00 00 00 mov $0x16,%edi : /* : * Wups, stack not big enough. We treat this as a PANIC condition : * because it suggests an infinite loop of errors during error : * recovery. : */ : errordata_stack_depth = -1; /* make room on stack */ 0.00 : 77adc5: c7 05 7d dc 3e 00 ff movl $0xffffffff,0x3edc7d(%rip) # b68a4c 0.00 : 77adcc: ff ff ff : ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); 0.00 : 77adcf: e8 ec fc ff ff callq 77aac0 0.00 : 77add4: 84 c0 test %al,%al 0.00 : 77add6: 75 2d jne 77ae05 0.00 : 77add8: e8 f3 e6 ce ff callq 4694d0 : * initialization has finished, else we can't do anything useful. : */ : if (ErrorContext == NULL) : { : /* Ooops, hard crash time; very little we can do safely here */ : write_stderr("error occurred at %s:%d before error message processing is available\n", 0.00 : 77addd: 4d 85 f6 test %r14,%r14 0.00 : 77ade0: b8 38 3d 8d 00 mov $0x8d3d38,%eax 0.00 : 77ade5: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 77ade8: 4c 0f 44 f0 cmove %rax,%r14 0.00 : 77adec: bf c8 46 8d 00 mov $0x8d46c8,%edi 0.00 : 77adf1: 31 c0 xor %eax,%eax 0.00 : 77adf3: 4c 89 f6 mov %r14,%rsi 0.00 : 77adf6: e8 d5 c6 ff ff callq 7774d0 : filename ? filename : "(unknown file)", lineno); : exit(2); 0.00 : 77adfb: bf 02 00 00 00 mov $0x2,%edi 0.00 : 77ae00: e8 8b e7 ce ff callq 469590 : * Wups, stack not big enough. We treat this as a PANIC condition : * because it suggests an infinite loop of errors during error : * recovery. : */ : errordata_stack_depth = -1; /* make room on stack */ : ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); 0.00 : 77ae05: bf 47 3d 8d 00 mov $0x8d3d47,%edi 0.00 : 77ae0a: 31 c0 xor %eax,%eax 0.00 : 77ae0c: e8 ff fa ff ff callq 77a910 0.00 : 77ae11: 89 c7 mov %eax,%edi 0.00 : 77ae13: 31 c0 xor %eax,%eax 0.00 : 77ae15: e8 c6 f7 ff ff callq 77a5e0 0.00 : 77ae1a: eb bc jmp 77add8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:259 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079b030 : : static void : ResourceOwnerReleaseInternal(ResourceOwner owner, : ResourceReleasePhase phase, : bool isCommit, : bool isTopLevel) : { 0.00 : 79b030: 55 push %rbp 0.00 : 79b031: 48 89 e5 mov %rsp,%rbp 0.00 : 79b034: 41 57 push %r15 0.00 : 79b036: 41 89 d7 mov %edx,%r15d 0.00 : 79b039: 41 56 push %r14 0.00 : 79b03b: 41 55 push %r13 0.00 : 79b03d: 49 89 fd mov %rdi,%r13 0.00 : 79b040: 41 54 push %r12 0.00 : 79b042: 53 push %rbx 0.00 : 79b043: 48 83 ec 08 sub $0x8,%rsp 0.00 : 79b047: 89 75 d4 mov %esi,-0x2c(%rbp) 0.00 : 79b04a: 88 4d d3 mov %cl,-0x2d(%rbp) : ResourceOwner child; : ResourceOwner save; : ResourceReleaseCallbackItem *item; : : /* Recurse to handle descendants */ : for (child = owner->firstchild; child != NULL; child = child->nextchild) 0.00 : 79b04d: 48 8b 5f 08 mov 0x8(%rdi),%rbx 0.00 : 79b051: 48 85 db test %rbx,%rbx 0.00 : 79b054: 74 24 je 79b07a 0.00 : 79b056: 44 0f be f1 movsbl %cl,%r14d 0.00 : 79b05a: 44 0f be e2 movsbl %dl,%r12d 0.00 : 79b05e: 66 90 xchg %ax,%ax : ResourceOwnerReleaseInternal(child, phase, isCommit, isTopLevel); 0.00 : 79b060: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 79b063: 48 89 df mov %rbx,%rdi 0.00 : 79b066: 44 89 f1 mov %r14d,%ecx 0.00 : 79b069: 44 89 e2 mov %r12d,%edx 0.00 : 79b06c: e8 bf ff ff ff callq 79b030 : ResourceOwner child; : ResourceOwner save; : ResourceReleaseCallbackItem *item; : : /* Recurse to handle descendants */ : for (child = owner->firstchild; child != NULL; child = child->nextchild) 0.00 : 79b071: 48 8b 5b 10 mov 0x10(%rbx),%rbx 0.00 : 79b075: 48 85 db test %rbx,%rbx 0.00 : 79b078: 75 e6 jne 79b060 : * fix it on error abort. : */ : save = CurrentResourceOwner; : CurrentResourceOwner = owner; : : if (phase == RESOURCE_RELEASE_BEFORE_LOCKS) 0.00 : 79b07a: 8b 45 d4 mov -0x2c(%rbp),%eax : /* : * Make CurrentResourceOwner point to me, so that ReleaseBuffer etc don't : * get confused. We needn't PG_TRY here because the outermost level will : * fix it on error abort. : */ : save = CurrentResourceOwner; 0.00 : 79b07d: 4c 8b 35 3c f8 41 00 mov 0x41f83c(%rip),%r14 # bba8c0 : CurrentResourceOwner = owner; 0.00 : 79b084: 4c 89 2d 35 f8 41 00 mov %r13,0x41f835(%rip) # bba8c0 : : if (phase == RESOURCE_RELEASE_BEFORE_LOCKS) 0.00 : 79b08b: 85 c0 test %eax,%eax 0.00 : 79b08d: 0f 84 7d 00 00 00 je 79b110 : if (isCommit) : PrintDSMLeakWarning(owner->dsms[owner->ndsms - 1]); : dsm_detach(owner->dsms[owner->ndsms - 1]); : } : } : else if (phase == RESOURCE_RELEASE_LOCKS) 0.00 : 79b093: 83 7d d4 01 cmpl $0x1,-0x2c(%rbp) 0.00 : 79b097: 0f 84 93 03 00 00 je 79b430 : LockReassignCurrentOwner(locks, nlocks); : else : LockReleaseCurrentOwner(locks, nlocks); : } : } : else if (phase == RESOURCE_RELEASE_AFTER_LOCKS) 0.00 : 79b09d: 83 7d d4 02 cmpl $0x2,-0x2c(%rbp) 0.00 : 79b0a1: 0f 84 9c 01 00 00 je 79b243 : /* Clean up index scans too */ : ReleaseResources_hash(); : } : : /* Let add-on modules get a chance too */ : for (item = ResourceRelease_callbacks; item; item = item->next) 0.00 : 79b0a7: 48 8b 1d 2a f8 41 00 mov 0x41f82a(%rip),%rbx # bba8d8 0.00 : 79b0ae: 48 85 db test %rbx,%rbx 0.00 : 79b0b1: 74 25 je 79b0d8 0.00 : 79b0b3: 44 0f be 6d d3 movsbl -0x2d(%rbp),%r13d 0.00 : 79b0b8: 45 0f be e7 movsbl %r15b,%r12d 0.00 : 79b0bc: 0f 1f 40 00 nopl 0x0(%rax) : (*item->callback) (phase, isCommit, isTopLevel, item->arg); 0.00 : 79b0c0: 48 8b 4b 10 mov 0x10(%rbx),%rcx 0.00 : 79b0c4: 44 89 ea mov %r13d,%edx 0.00 : 79b0c7: 44 89 e6 mov %r12d,%esi 0.00 : 79b0ca: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 79b0cd: ff 53 08 callq *0x8(%rbx) : /* Clean up index scans too */ : ReleaseResources_hash(); : } : : /* Let add-on modules get a chance too */ : for (item = ResourceRelease_callbacks; item; item = item->next) 0.00 : 79b0d0: 48 8b 1b mov (%rbx),%rbx 0.00 : 79b0d3: 48 85 db test %rbx,%rbx 0.00 : 79b0d6: 75 e8 jne 79b0c0 : (*item->callback) (phase, isCommit, isTopLevel, item->arg); : : CurrentResourceOwner = save; 0.00 : 79b0d8: 4c 89 35 e1 f7 41 00 mov %r14,0x41f7e1(%rip) # bba8c0 : } 0.00 : 79b0df: 48 83 c4 08 add $0x8,%rsp 0.00 : 79b0e3: 5b pop %rbx 0.00 : 79b0e4: 41 5c pop %r12 0.00 : 79b0e6: 41 5d pop %r13 0.00 : 79b0e8: 41 5e pop %r14 0.00 : 79b0ea: 41 5f pop %r15 0.00 : 79b0ec: c9 leaveq 0.00 : 79b0ed: c3 retq : * O(N^2) behavior in ResourceOwnerForgetBuffer(). : */ : while (owner->nbuffers > 0) : { : if (isCommit) : PrintBufferLeakWarning(owner->buffers[owner->nbuffers - 1]); 0.00 : 79b0ee: 49 8b 55 28 mov 0x28(%r13),%rdx 0.00 : 79b0f2: 48 98 cltq 0.00 : 79b0f4: 8b 7c 82 fc mov -0x4(%rdx,%rax,4),%edi 0.00 : 79b0f8: e8 63 bd ed ff callq 676e60 0.00 : 79b0fd: 41 8b 45 20 mov 0x20(%r13),%eax : ReleaseBuffer(owner->buffers[owner->nbuffers - 1]); 0.00 : 79b101: 49 8b 55 28 mov 0x28(%r13),%rdx 0.00 : 79b105: 48 98 cltq 0.00 : 79b107: 8b 7c 82 fc mov -0x4(%rdx,%rax,4),%edi 0.00 : 79b10b: e8 50 9d ed ff callq 674e60 : * issue warnings. In the abort case, just clean up quietly. : * : * We are careful to do the releasing back-to-front, so as to avoid : * O(N^2) behavior in ResourceOwnerForgetBuffer(). : */ : while (owner->nbuffers > 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:259 100.00 : 79b110: 41 8b 45 20 mov 0x20(%r13),%eax 0.00 : 79b114: 85 c0 test %eax,%eax 0.00 : 79b116: 7e 5c jle 79b174 : { : if (isCommit) 0.00 : 79b118: 45 84 ff test %r15b,%r15b 0.00 : 79b11b: 74 e4 je 79b101 0.00 : 79b11d: 0f 1f 00 nopl (%rax) 0.00 : 79b120: eb cc jmp 79b0ee : * release back-to-front for speed. : */ : while (owner->nrelrefs > 0) : { : if (isCommit) : PrintRelCacheLeakWarning(owner->relrefs[owner->nrelrefs - 1]); 0.00 : 79b122: 48 63 d0 movslq %eax,%rdx 0.00 : 79b125: 49 8b 85 d8 00 00 00 mov 0xd8(%r13),%rax : * Debugging subroutine : */ : static void : PrintRelCacheLeakWarning(Relation rel) : { : elog(WARNING, "relcache reference leak: relation \"%s\" not closed", 0.00 : 79b12c: be 9f 03 00 00 mov $0x39f,%esi 0.00 : 79b131: bf 90 22 8e 00 mov $0x8e2290,%edi : * release back-to-front for speed. : */ : while (owner->nrelrefs > 0) : { : if (isCommit) : PrintRelCacheLeakWarning(owner->relrefs[owner->nrelrefs - 1]); 0.00 : 79b136: 48 8b 5c d0 f8 mov -0x8(%rax,%rdx,8),%rbx : * Debugging subroutine : */ : static void : PrintRelCacheLeakWarning(Relation rel) : { : elog(WARNING, "relcache reference leak: relation \"%s\" not closed", 0.00 : 79b13b: ba 90 27 8e 00 mov $0x8e2790,%edx 0.00 : 79b140: e8 db 02 fe ff callq 77b420 0.00 : 79b145: 31 c0 xor %eax,%eax 0.00 : 79b147: be e8 24 8e 00 mov $0x8e24e8,%esi 0.00 : 79b14c: bf 13 00 00 00 mov $0x13,%edi 0.00 : 79b151: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 79b155: e8 d6 00 fe ff callq 77b230 0.00 : 79b15a: 41 8b 85 d4 00 00 00 mov 0xd4(%r13),%eax : */ : while (owner->nrelrefs > 0) : { : if (isCommit) : PrintRelCacheLeakWarning(owner->relrefs[owner->nrelrefs - 1]); : RelationClose(owner->relrefs[owner->nrelrefs - 1]); 0.00 : 79b161: 49 8b 95 d8 00 00 00 mov 0xd8(%r13),%rdx 0.00 : 79b168: 48 98 cltq 0.00 : 79b16a: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b16f: e8 dc 45 fd ff callq 76f750 : * are none. : * : * As with buffer pins, warn if any are left at commit time, and : * release back-to-front for speed. : */ : while (owner->nrelrefs > 0) 0.00 : 79b174: 41 8b 85 d4 00 00 00 mov 0xd4(%r13),%eax 0.00 : 79b17b: 85 c0 test %eax,%eax 0.00 : 79b17d: 7e 11 jle 79b190 : { : if (isCommit) 0.00 : 79b17f: 45 84 ff test %r15b,%r15b 0.00 : 79b182: 74 dd je 79b161 0.00 : 79b184: eb 9c jmp 79b122 0.00 : 79b186: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79b18d: 00 00 00 : * until there are none. : * : * As in the preceding cases, warn if there are leftover at commit : * time. : */ : while (owner->ndsms > 0) 0.00 : 79b190: 41 8b 85 24 01 00 00 mov 0x124(%r13),%eax 0.00 : 79b197: 85 c0 test %eax,%eax 0.00 : 79b199: 0f 8e 08 ff ff ff jle 79b0a7 : { : if (isCommit) 0.00 : 79b19f: 45 84 ff test %r15b,%r15b 0.00 : 79b1a2: 75 2b jne 79b1cf 0.00 : 79b1a4: 0f 1f 40 00 nopl 0x0(%rax) : PrintDSMLeakWarning(owner->dsms[owner->ndsms - 1]); : dsm_detach(owner->dsms[owner->ndsms - 1]); 0.00 : 79b1a8: 49 8b 95 28 01 00 00 mov 0x128(%r13),%rdx 0.00 : 79b1af: 48 98 cltq 0.00 : 79b1b1: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b1b6: e8 75 2a ee ff callq 67dc30 : * until there are none. : * : * As in the preceding cases, warn if there are leftover at commit : * time. : */ : while (owner->ndsms > 0) 0.00 : 79b1bb: 41 8b 85 24 01 00 00 mov 0x124(%r13),%eax 0.00 : 79b1c2: 85 c0 test %eax,%eax 0.00 : 79b1c4: 0f 8e dd fe ff ff jle 79b0a7 : { : if (isCommit) 0.00 : 79b1ca: 45 84 ff test %r15b,%r15b 0.00 : 79b1cd: 74 d9 je 79b1a8 : PrintDSMLeakWarning(owner->dsms[owner->ndsms - 1]); 0.00 : 79b1cf: 48 63 d0 movslq %eax,%rdx 0.00 : 79b1d2: 49 8b 85 28 01 00 00 mov 0x128(%r13),%rax : * Debugging subroutine : */ : static void : PrintDSMLeakWarning(dsm_segment *seg) : { : elog(WARNING, 0.00 : 79b1d9: be 3c 05 00 00 mov $0x53c,%esi 0.00 : 79b1de: bf 90 22 8e 00 mov $0x8e2290,%edi : * time. : */ : while (owner->ndsms > 0) : { : if (isCommit) : PrintDSMLeakWarning(owner->dsms[owner->ndsms - 1]); 0.00 : 79b1e3: 48 8b 5c d0 f8 mov -0x8(%rax,%rdx,8),%rbx : * Debugging subroutine : */ : static void : PrintDSMLeakWarning(dsm_segment *seg) : { : elog(WARNING, 0.00 : 79b1e8: ba b0 27 8e 00 mov $0x8e27b0,%edx 0.00 : 79b1ed: e8 2e 02 fe ff callq 77b420 0.00 : 79b1f2: 48 89 df mov %rbx,%rdi 0.00 : 79b1f5: e8 76 28 ee ff callq 67da70 0.00 : 79b1fa: be 20 25 8e 00 mov $0x8e2520,%esi 0.00 : 79b1ff: 89 c2 mov %eax,%edx 0.00 : 79b201: bf 13 00 00 00 mov $0x13,%edi 0.00 : 79b206: 31 c0 xor %eax,%eax 0.00 : 79b208: e8 23 00 fe ff callq 77b230 0.00 : 79b20d: 41 8b 85 24 01 00 00 mov 0x124(%r13),%eax 0.00 : 79b214: eb 92 jmp 79b1a8 : * release back-to-front for speed. : */ : while (owner->ncatrefs > 0) : { : if (isCommit) : PrintCatCacheLeakWarning(owner->catrefs[owner->ncatrefs - 1]); 0.00 : 79b216: 49 8b 95 b8 00 00 00 mov 0xb8(%r13),%rdx 0.00 : 79b21d: 48 98 cltq 0.00 : 79b21f: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b224: e8 77 93 fc ff callq 7645a0 0.00 : 79b229: 41 8b 85 b0 00 00 00 mov 0xb0(%r13),%eax : ReleaseCatCache(owner->catrefs[owner->ncatrefs - 1]); 0.00 : 79b230: 49 8b 95 b8 00 00 00 mov 0xb8(%r13),%rdx 0.00 : 79b237: 48 98 cltq 0.00 : 79b239: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b23e: e8 dd ae fc ff callq 766120 : * are none. : * : * As with buffer pins, warn if any are left at commit time, and : * release back-to-front for speed. : */ : while (owner->ncatrefs > 0) 0.00 : 79b243: 41 8b 85 b0 00 00 00 mov 0xb0(%r13),%eax 0.00 : 79b24a: 85 c0 test %eax,%eax 0.00 : 79b24c: 7e 34 jle 79b282 : { : if (isCommit) 0.00 : 79b24e: 45 84 ff test %r15b,%r15b 0.00 : 79b251: 74 dd je 79b230 0.00 : 79b253: eb c1 jmp 79b216 : } : /* Ditto for catcache lists */ : while (owner->ncatlistrefs > 0) : { : if (isCommit) : PrintCatCacheListLeakWarning(owner->catlistrefs[owner->ncatlistrefs - 1]); 0.00 : 79b255: 49 8b 95 c8 00 00 00 mov 0xc8(%r13),%rdx 0.00 : 79b25c: 48 98 cltq 0.00 : 79b25e: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b263: e8 e8 92 fc ff callq 764550 0.00 : 79b268: 41 8b 85 c4 00 00 00 mov 0xc4(%r13),%eax : ReleaseCatCacheList(owner->catlistrefs[owner->ncatlistrefs - 1]); 0.00 : 79b26f: 49 8b 95 c8 00 00 00 mov 0xc8(%r13),%rdx 0.00 : 79b276: 48 98 cltq 0.00 : 79b278: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b27d: e8 be 9f fc ff callq 765240 : if (isCommit) : PrintCatCacheLeakWarning(owner->catrefs[owner->ncatrefs - 1]); : ReleaseCatCache(owner->catrefs[owner->ncatrefs - 1]); : } : /* Ditto for catcache lists */ : while (owner->ncatlistrefs > 0) 0.00 : 79b282: 41 8b 85 c4 00 00 00 mov 0xc4(%r13),%eax 0.00 : 79b289: 85 c0 test %eax,%eax 0.00 : 79b28b: 7e 5c jle 79b2e9 : { : if (isCommit) 0.00 : 79b28d: 45 84 ff test %r15b,%r15b 0.00 : 79b290: 74 dd je 79b26f 0.00 : 79b292: eb c1 jmp 79b255 : } : /* Ditto for plancache references */ : while (owner->nplanrefs > 0) : { : if (isCommit) : PrintPlanCacheLeakWarning(owner->planrefs[owner->nplanrefs - 1]); 0.00 : 79b294: 49 8b 95 e8 00 00 00 mov 0xe8(%r13),%rdx 0.00 : 79b29b: 48 98 cltq : * Debugging subroutine : */ : static void : PrintPlanCacheLeakWarning(CachedPlan *plan) : { : elog(WARNING, "plancache reference leak: plan %p not closed", plan); 0.00 : 79b29d: be ef 03 00 00 mov $0x3ef,%esi 0.00 : 79b2a2: bf 90 22 8e 00 mov $0x8e2290,%edi : } : /* Ditto for plancache references */ : while (owner->nplanrefs > 0) : { : if (isCommit) : PrintPlanCacheLeakWarning(owner->planrefs[owner->nplanrefs - 1]); 0.00 : 79b2a7: 48 8b 5c c2 f8 mov -0x8(%rdx,%rax,8),%rbx : * Debugging subroutine : */ : static void : PrintPlanCacheLeakWarning(CachedPlan *plan) : { : elog(WARNING, "plancache reference leak: plan %p not closed", plan); 0.00 : 79b2ac: ba d0 27 8e 00 mov $0x8e27d0,%edx 0.00 : 79b2b1: e8 6a 01 fe ff callq 77b420 0.00 : 79b2b6: 31 c0 xor %eax,%eax 0.00 : 79b2b8: be 58 25 8e 00 mov $0x8e2558,%esi 0.00 : 79b2bd: bf 13 00 00 00 mov $0x13,%edi 0.00 : 79b2c2: 48 89 da mov %rbx,%rdx 0.00 : 79b2c5: e8 66 ff fd ff callq 77b230 0.00 : 79b2ca: 41 8b 85 e4 00 00 00 mov 0xe4(%r13),%eax : /* Ditto for plancache references */ : while (owner->nplanrefs > 0) : { : if (isCommit) : PrintPlanCacheLeakWarning(owner->planrefs[owner->nplanrefs - 1]); : ReleaseCachedPlan(owner->planrefs[owner->nplanrefs - 1], true); 0.00 : 79b2d1: 49 8b 95 e8 00 00 00 mov 0xe8(%r13),%rdx 0.00 : 79b2d8: 48 98 cltq 0.00 : 79b2da: be 01 00 00 00 mov $0x1,%esi 0.00 : 79b2df: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b2e4: e8 87 d5 fc ff callq 768870 : if (isCommit) : PrintCatCacheListLeakWarning(owner->catlistrefs[owner->ncatlistrefs - 1]); : ReleaseCatCacheList(owner->catlistrefs[owner->ncatlistrefs - 1]); : } : /* Ditto for plancache references */ : while (owner->nplanrefs > 0) 0.00 : 79b2e9: 41 8b 85 e4 00 00 00 mov 0xe4(%r13),%eax 0.00 : 79b2f0: 85 c0 test %eax,%eax 0.00 : 79b2f2: 7e 5f jle 79b353 : { : if (isCommit) 0.00 : 79b2f4: 45 84 ff test %r15b,%r15b 0.00 : 79b2f7: 74 d8 je 79b2d1 0.00 : 79b2f9: eb 99 jmp 79b294 : } : /* Ditto for tupdesc references */ : while (owner->ntupdescs > 0) : { : if (isCommit) : PrintTupleDescLeakWarning(owner->tupdescs[owner->ntupdescs - 1]); 0.00 : 79b2fb: 48 63 d0 movslq %eax,%rdx 0.00 : 79b2fe: 49 8b 85 f8 00 00 00 mov 0xf8(%r13),%rax : * Debugging subroutine : */ : static void : PrintTupleDescLeakWarning(TupleDesc tupdesc) : { : elog(WARNING, 0.00 : 79b305: be 41 04 00 00 mov $0x441,%esi 0.00 : 79b30a: bf 90 22 8e 00 mov $0x8e2290,%edi : } : /* Ditto for tupdesc references */ : while (owner->ntupdescs > 0) : { : if (isCommit) : PrintTupleDescLeakWarning(owner->tupdescs[owner->ntupdescs - 1]); 0.00 : 79b30f: 48 8b 5c d0 f8 mov -0x8(%rax,%rdx,8),%rbx : * Debugging subroutine : */ : static void : PrintTupleDescLeakWarning(TupleDesc tupdesc) : { : elog(WARNING, 0.00 : 79b314: ba f0 27 8e 00 mov $0x8e27f0,%edx 0.00 : 79b319: e8 02 01 fe ff callq 77b420 0.00 : 79b31e: 31 c0 xor %eax,%eax 0.00 : 79b320: be 88 25 8e 00 mov $0x8e2588,%esi 0.00 : 79b325: bf 13 00 00 00 mov $0x13,%edi 0.00 : 79b32a: 8b 4b 18 mov 0x18(%rbx),%ecx 0.00 : 79b32d: 44 8b 43 1c mov 0x1c(%rbx),%r8d 0.00 : 79b331: 48 89 da mov %rbx,%rdx 0.00 : 79b334: e8 f7 fe fd ff callq 77b230 0.00 : 79b339: 41 8b 85 f4 00 00 00 mov 0xf4(%r13),%eax : /* Ditto for tupdesc references */ : while (owner->ntupdescs > 0) : { : if (isCommit) : PrintTupleDescLeakWarning(owner->tupdescs[owner->ntupdescs - 1]); : DecrTupleDescRefCount(owner->tupdescs[owner->ntupdescs - 1]); 0.00 : 79b340: 49 8b 95 f8 00 00 00 mov 0xf8(%r13),%rdx 0.00 : 79b347: 48 98 cltq 0.00 : 79b349: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b34e: e8 2d 96 cd ff callq 474980 : if (isCommit) : PrintPlanCacheLeakWarning(owner->planrefs[owner->nplanrefs - 1]); : ReleaseCachedPlan(owner->planrefs[owner->nplanrefs - 1], true); : } : /* Ditto for tupdesc references */ : while (owner->ntupdescs > 0) 0.00 : 79b353: 41 8b 85 f4 00 00 00 mov 0xf4(%r13),%eax 0.00 : 79b35a: 85 c0 test %eax,%eax 0.00 : 79b35c: 7e 57 jle 79b3b5 : { : if (isCommit) 0.00 : 79b35e: 45 84 ff test %r15b,%r15b 0.00 : 79b361: 74 dd je 79b340 0.00 : 79b363: eb 96 jmp 79b2fb : } : /* Ditto for snapshot references */ : while (owner->nsnapshots > 0) : { : if (isCommit) : PrintSnapshotLeakWarning(owner->snapshots[owner->nsnapshots - 1]); 0.00 : 79b365: 49 8b 95 08 01 00 00 mov 0x108(%r13),%rdx 0.00 : 79b36c: 48 98 cltq : * Debugging subroutine : */ : static void : PrintSnapshotLeakWarning(Snapshot snapshot) : { : elog(WARNING, 0.00 : 79b36e: be 93 04 00 00 mov $0x493,%esi 0.00 : 79b373: bf 90 22 8e 00 mov $0x8e2290,%edi : } : /* Ditto for snapshot references */ : while (owner->nsnapshots > 0) : { : if (isCommit) : PrintSnapshotLeakWarning(owner->snapshots[owner->nsnapshots - 1]); 0.00 : 79b378: 48 8b 5c c2 f8 mov -0x8(%rdx,%rax,8),%rbx : * Debugging subroutine : */ : static void : PrintSnapshotLeakWarning(Snapshot snapshot) : { : elog(WARNING, 0.00 : 79b37d: ba 10 28 8e 00 mov $0x8e2810,%edx 0.00 : 79b382: e8 99 00 fe ff callq 77b420 0.00 : 79b387: 31 c0 xor %eax,%eax 0.00 : 79b389: be c8 25 8e 00 mov $0x8e25c8,%esi 0.00 : 79b38e: bf 13 00 00 00 mov $0x13,%edi 0.00 : 79b393: 48 89 da mov %rbx,%rdx 0.00 : 79b396: e8 95 fe fd ff callq 77b230 0.00 : 79b39b: 41 8b 85 04 01 00 00 mov 0x104(%r13),%eax : /* Ditto for snapshot references */ : while (owner->nsnapshots > 0) : { : if (isCommit) : PrintSnapshotLeakWarning(owner->snapshots[owner->nsnapshots - 1]); : UnregisterSnapshot(owner->snapshots[owner->nsnapshots - 1]); 0.00 : 79b3a2: 49 8b 95 08 01 00 00 mov 0x108(%r13),%rdx 0.00 : 79b3a9: 48 98 cltq 0.00 : 79b3ab: 48 8b 7c c2 f8 mov -0x8(%rdx,%rax,8),%rdi 0.00 : 79b3b0: e8 3b c0 00 00 callq 7a73f0 : if (isCommit) : PrintTupleDescLeakWarning(owner->tupdescs[owner->ntupdescs - 1]); : DecrTupleDescRefCount(owner->tupdescs[owner->ntupdescs - 1]); : } : /* Ditto for snapshot references */ : while (owner->nsnapshots > 0) 0.00 : 79b3b5: 41 8b 85 04 01 00 00 mov 0x104(%r13),%eax 0.00 : 79b3bc: 85 c0 test %eax,%eax 0.00 : 79b3be: 7e 54 jle 79b414 : { : if (isCommit) 0.00 : 79b3c0: 45 84 ff test %r15b,%r15b 0.00 : 79b3c3: 74 dd je 79b3a2 0.00 : 79b3c5: eb 9e jmp 79b365 : : /* Ditto for temporary files */ : while (owner->nfiles > 0) : { : if (isCommit) : PrintFileLeakWarning(owner->files[owner->nfiles - 1]); 0.00 : 79b3c7: 49 8b 95 18 01 00 00 mov 0x118(%r13),%rdx 0.00 : 79b3ce: 48 98 cltq : * Debugging subroutine : */ : static void : PrintFileLeakWarning(File file) : { : elog(WARNING, 0.00 : 79b3d0: be e7 04 00 00 mov $0x4e7,%esi 0.00 : 79b3d5: bf 90 22 8e 00 mov $0x8e2290,%edi : : /* Ditto for temporary files */ : while (owner->nfiles > 0) : { : if (isCommit) : PrintFileLeakWarning(owner->files[owner->nfiles - 1]); 0.00 : 79b3da: 8b 5c 82 fc mov -0x4(%rdx,%rax,4),%ebx : * Debugging subroutine : */ : static void : PrintFileLeakWarning(File file) : { : elog(WARNING, 0.00 : 79b3de: ba 30 28 8e 00 mov $0x8e2830,%edx 0.00 : 79b3e3: e8 38 00 fe ff callq 77b420 0.00 : 79b3e8: 31 c0 xor %eax,%eax 0.00 : 79b3ea: be 00 26 8e 00 mov $0x8e2600,%esi 0.00 : 79b3ef: bf 13 00 00 00 mov $0x13,%edi 0.00 : 79b3f4: 89 da mov %ebx,%edx 0.00 : 79b3f6: e8 35 fe fd ff callq 77b230 0.00 : 79b3fb: 41 8b 85 14 01 00 00 mov 0x114(%r13),%eax : /* Ditto for temporary files */ : while (owner->nfiles > 0) : { : if (isCommit) : PrintFileLeakWarning(owner->files[owner->nfiles - 1]); : FileClose(owner->files[owner->nfiles - 1]); 0.00 : 79b402: 49 8b 95 18 01 00 00 mov 0x118(%r13),%rdx 0.00 : 79b409: 48 98 cltq 0.00 : 79b40b: 8b 7c 82 fc mov -0x4(%rdx,%rax,4),%edi 0.00 : 79b40f: e8 8c df ed ff callq 6793a0 : PrintSnapshotLeakWarning(owner->snapshots[owner->nsnapshots - 1]); : UnregisterSnapshot(owner->snapshots[owner->nsnapshots - 1]); : } : : /* Ditto for temporary files */ : while (owner->nfiles > 0) 0.00 : 79b414: 41 8b 85 14 01 00 00 mov 0x114(%r13),%eax 0.00 : 79b41b: 85 c0 test %eax,%eax 0.00 : 79b41d: 7e 41 jle 79b460 : { : if (isCommit) 0.00 : 79b41f: 45 84 ff test %r15b,%r15b 0.00 : 79b422: 74 de je 79b402 0.00 : 79b424: eb a1 jmp 79b3c7 0.00 : 79b426: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79b42d: 00 00 00 : dsm_detach(owner->dsms[owner->ndsms - 1]); : } : } : else if (phase == RESOURCE_RELEASE_LOCKS) : { : if (isTopLevel) 0.00 : 79b430: 80 7d d3 00 cmpb $0x0,-0x2d(%rbp) 0.00 : 79b434: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79b438: 74 33 je 79b46d : /* : * For a top-level xact we are going to release all locks (or at : * least all non-session locks), so just do a single lmgr call at : * the top of the recursion. : */ : if (owner == TopTransactionResourceOwner) 0.00 : 79b43a: 4c 3b 2d 8f f4 41 00 cmp 0x41f48f(%rip),%r13 # bba8d0 0.00 : 79b441: 0f 85 60 fc ff ff jne 79b0a7 : { : ProcReleaseLocks(isCommit); 0.00 : 79b447: 41 0f be df movsbl %r15b,%ebx 0.00 : 79b44b: 89 df mov %ebx,%edi 0.00 : 79b44d: e8 ee 1d ef ff callq 68d240 : ReleasePredicateLocks(isCommit); 0.00 : 79b452: 89 df mov %ebx,%edi 0.00 : 79b454: e8 97 74 ef ff callq 6928f0 0.00 : 79b459: e9 49 fc ff ff jmpq 79b0a7 0.00 : 79b45e: 66 90 xchg %ax,%ax : PrintFileLeakWarning(owner->files[owner->nfiles - 1]); : FileClose(owner->files[owner->nfiles - 1]); : } : : /* Clean up index scans too */ : ReleaseResources_hash(); 0.00 : 79b460: e8 6b 78 cf ff callq 492cd0 0.00 : 79b465: 0f 1f 00 nopl (%rax) 0.00 : 79b468: e9 3a fc ff ff jmpq 79b0a7 : : /* : * Pass the list of locks owned by this resource owner to the lock : * manager, unless it has overflowed. : */ : if (owner->nlocks > MAX_RESOWNER_LOCKS) 0.00 : 79b46d: 41 8b 75 34 mov 0x34(%r13),%esi : locks = NULL; : nlocks = 0; : } : else : { : locks = owner->locks; 0.00 : 79b471: 49 8d 7d 38 lea 0x38(%r13),%rdi : : /* : * Pass the list of locks owned by this resource owner to the lock : * manager, unless it has overflowed. : */ : if (owner->nlocks > MAX_RESOWNER_LOCKS) 0.00 : 79b475: 83 fe 0f cmp $0xf,%esi 0.00 : 79b478: 7e 04 jle 79b47e 0.00 : 79b47a: 31 ff xor %edi,%edi 0.00 : 79b47c: 31 f6 xor %esi,%esi : { : locks = owner->locks; : nlocks = owner->nlocks; : } : : if (isCommit) 0.00 : 79b47e: 45 84 ff test %r15b,%r15b 0.00 : 79b481: 74 0a je 79b48d : LockReassignCurrentOwner(locks, nlocks); 0.00 : 79b483: e8 d8 ed ee ff callq 68a260 0.00 : 79b488: e9 1a fc ff ff jmpq 79b0a7 0.00 : 79b48d: 0f 1f 00 nopl (%rax) : else : LockReleaseCurrentOwner(locks, nlocks); 0.00 : 79b490: e8 4b e6 ee ff callq 689ae0 0.00 : 79b495: 0f 1f 00 nopl (%rax) 0.00 : 79b498: e9 0a fc ff ff jmpq 79b0a7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3528 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079d890 : : /* : * Convenience routine to free a tuple previously loaded into sort memory : */ : static void : free_sort_tuple(Tuplesortstate *state, SortTuple *stup) : { 0.00 : 79d890: 55 push %rbp 0.00 : 79d891: 48 89 e5 mov %rsp,%rbp 0.00 : 79d894: 4c 89 65 f0 mov %r12,-0x10(%rbp) 100.00 : 79d898: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 79d89c: 49 89 fc mov %rdi,%r12 0.00 : 79d89f: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 79d8a3: 48 83 ec 20 sub $0x20,%rsp : FREEMEM(state, GetMemoryChunkSpace(stup->tuple)); 0.00 : 79d8a7: 48 8b 5f 10 mov 0x10(%rdi),%rbx 0.00 : 79d8ab: 48 8b 3e mov (%rsi),%rdi : /* : * Convenience routine to free a tuple previously loaded into sort memory : */ : static void : free_sort_tuple(Tuplesortstate *state, SortTuple *stup) : { 0.00 : 79d8ae: 49 89 f5 mov %rsi,%r13 : FREEMEM(state, GetMemoryChunkSpace(stup->tuple)); 0.00 : 79d8b1: e8 da b1 ff ff callq 798a90 0.00 : 79d8b6: 48 01 d8 add %rbx,%rax 0.00 : 79d8b9: 49 89 44 24 10 mov %rax,0x10(%r12) : pfree(stup->tuple); 0.00 : 79d8be: 49 8b 7d 00 mov 0x0(%r13),%rdi : } 0.00 : 79d8c2: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 79d8c6: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 79d8ca: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 79d8ce: c9 leaveq : */ : static void : free_sort_tuple(Tuplesortstate *state, SortTuple *stup) : { : FREEMEM(state, GetMemoryChunkSpace(stup->tuple)); : pfree(stup->tuple); 0.00 : 79d8cf: e9 ac b2 ff ff jmpq 798b80 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:560 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079f340 : : * whether the caller needs non-sequential access to the sort result. : */ : : static Tuplesortstate * : tuplesort_begin_common(int workMem, bool randomAccess) : { 0.00 : 79f340: 55 push %rbp : : /* : * Create a working memory context for this sort operation. All data : * needed by the sort will live inside this context. : */ : sortcontext = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 79f341: 31 d2 xor %edx,%edx 0.00 : 79f343: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 79f349: b9 00 20 00 00 mov $0x2000,%ecx : * whether the caller needs non-sequential access to the sort result. : */ : : static Tuplesortstate * : tuplesort_begin_common(int workMem, bool randomAccess) : { 0.00 : 79f34e: 48 89 e5 mov %rsp,%rbp 0.00 : 79f351: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 79f355: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 79f359: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 79f35d: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 79f361: 41 89 fe mov %edi,%r14d 0.00 : 79f364: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 79f368: 48 83 ec 30 sub $0x30,%rsp : : /* : * Create a working memory context for this sort operation. All data : * needed by the sort will live inside this context. : */ : sortcontext = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 79f36c: 48 8b 3d ed b4 41 00 mov 0x41b4ed(%rip),%rdi # bba860 : * whether the caller needs non-sequential access to the sort result. : */ : : static Tuplesortstate * : tuplesort_begin_common(int workMem, bool randomAccess) : { 0.00 : 79f373: 41 89 f5 mov %esi,%r13d : : /* : * Create a working memory context for this sort operation. All data : * needed by the sort will live inside this context. : */ : sortcontext = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 79f376: be 26 2a 8e 00 mov $0x8e2a26,%esi 0.00 : 79f37b: e8 10 8c ff ff callq 797f90 : * Make the Tuplesortstate within the per-sort context. This way, we : * don't need a separate pfree() operation for it at shutdown. : */ : oldcontext = MemoryContextSwitchTo(sortcontext); : : state = (Tuplesortstate *) palloc0(sizeof(Tuplesortstate)); 0.00 : 79f380: bf e8 01 00 00 mov $0x1e8,%edi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 79f385: 4c 8b 3d d4 b4 41 00 mov 0x41b4d4(%rip),%r15 # bba860 : : /* : * Create a working memory context for this sort operation. All data : * needed by the sort will live inside this context. : */ : sortcontext = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 79f38c: 48 89 c3 mov %rax,%rbx : : CurrentMemoryContext = context; 0.00 : 79f38f: 48 89 05 ca b4 41 00 mov %rax,0x41b4ca(%rip) # bba860 : * Make the Tuplesortstate within the per-sort context. This way, we : * don't need a separate pfree() operation for it at shutdown. : */ : oldcontext = MemoryContextSwitchTo(sortcontext); : : state = (Tuplesortstate *) palloc0(sizeof(Tuplesortstate)); 0.00 : 79f396: e8 d5 9b ff ff callq 798f70 : : #ifdef TRACE_SORT : if (trace_sort) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:560 100.00 : 79f39b: 80 3d 3e b5 41 00 00 cmpb $0x0,0x41b53e(%rip) # bba8e0 : * Make the Tuplesortstate within the per-sort context. This way, we : * don't need a separate pfree() operation for it at shutdown. : */ : oldcontext = MemoryContextSwitchTo(sortcontext); : : state = (Tuplesortstate *) palloc0(sizeof(Tuplesortstate)); 0.00 : 79f3a2: 49 89 c4 mov %rax,%r12 : : #ifdef TRACE_SORT : if (trace_sort) 0.00 : 79f3a5: 0f 85 b5 00 00 00 jne 79f460 : : state->status = TSS_INITIAL; : state->randomAccess = randomAccess; : state->bounded = false; : state->boundUsed = false; : state->allowedMem = workMem * (int64) 1024; 0.00 : 79f3ab: 49 63 c6 movslq %r14d,%rax : state->availMem = state->allowedMem; : state->sortcontext = sortcontext; 0.00 : 79f3ae: 49 89 5c 24 28 mov %rbx,0x28(%r12) : state->tapeset = NULL; : : state->memtupcount = 0; : state->memtupsize = 1024; /* initial guess */ : state->growmemtuples = true; : state->memtuples = (SortTuple *) palloc(state->memtupsize * sizeof(SortTuple)); 0.00 : 79f3b3: bf 00 60 00 00 mov $0x6000,%edi : : state->status = TSS_INITIAL; : state->randomAccess = randomAccess; : state->bounded = false; : state->boundUsed = false; : state->allowedMem = workMem * (int64) 1024; 0.00 : 79f3b8: 48 c1 e0 0a shl $0xa,%rax : #ifdef TRACE_SORT : if (trace_sort) : pg_rusage_init(&state->ru_start); : #endif : : state->status = TSS_INITIAL; 0.00 : 79f3bc: 41 c7 04 24 00 00 00 movl $0x0,(%r12) 0.00 : 79f3c3: 00 : state->randomAccess = randomAccess; 0.00 : 79f3c4: 45 88 6c 24 08 mov %r13b,0x8(%r12) : state->bounded = false; 0.00 : 79f3c9: 41 c6 44 24 09 00 movb $0x0,0x9(%r12) : state->boundUsed = false; 0.00 : 79f3cf: 41 c6 44 24 0a 00 movb $0x0,0xa(%r12) : state->allowedMem = workMem * (int64) 1024; 0.00 : 79f3d5: 49 89 44 24 18 mov %rax,0x18(%r12) : state->availMem = state->allowedMem; 0.00 : 79f3da: 49 89 44 24 10 mov %rax,0x10(%r12) : state->sortcontext = sortcontext; : state->tapeset = NULL; 0.00 : 79f3df: 49 c7 44 24 30 00 00 movq $0x0,0x30(%r12) 0.00 : 79f3e6: 00 00 : : state->memtupcount = 0; 0.00 : 79f3e8: 41 c7 44 24 68 00 00 movl $0x0,0x68(%r12) 0.00 : 79f3ef: 00 00 : state->memtupsize = 1024; /* initial guess */ 0.00 : 79f3f1: 41 c7 44 24 6c 00 04 movl $0x400,0x6c(%r12) 0.00 : 79f3f8: 00 00 : state->growmemtuples = true; 0.00 : 79f3fa: 41 c6 44 24 70 01 movb $0x1,0x70(%r12) : state->memtuples = (SortTuple *) palloc(state->memtupsize * sizeof(SortTuple)); 0.00 : 79f400: e8 4b 99 ff ff callq 798d50 : : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79f405: 49 8b 5c 24 10 mov 0x10(%r12),%rbx : state->tapeset = NULL; : : state->memtupcount = 0; : state->memtupsize = 1024; /* initial guess */ : state->growmemtuples = true; : state->memtuples = (SortTuple *) palloc(state->memtupsize * sizeof(SortTuple)); 0.00 : 79f40a: 48 89 c7 mov %rax,%rdi 0.00 : 79f40d: 49 89 44 24 60 mov %rax,0x60(%r12) : : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79f412: e8 79 96 ff ff callq 798a90 0.00 : 79f417: 48 29 c3 sub %rax,%rbx : : /* workMem must be large enough for the minimal memtuples array */ : if (LACKMEM(state)) 0.00 : 79f41a: 48 85 db test %rbx,%rbx : state->memtupcount = 0; : state->memtupsize = 1024; /* initial guess */ : state->growmemtuples = true; : state->memtuples = (SortTuple *) palloc(state->memtupsize * sizeof(SortTuple)); : : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79f41d: 49 89 5c 24 10 mov %rbx,0x10(%r12) : : /* workMem must be large enough for the minimal memtuples array */ : if (LACKMEM(state)) 0.00 : 79f422: 78 4d js 79f471 : elog(ERROR, "insufficient memory allowed for sort"); : : state->currentRun = 0; 0.00 : 79f424: 41 c7 44 24 74 00 00 movl $0x0,0x74(%r12) 0.00 : 79f42b: 00 00 : /* : * maxTapes, tapeRange, and Algorithm D variables will be initialized by : * inittapes(), if needed : */ : : state->result_tape = -1; /* flag that result tape has not been formed */ 0.00 : 79f42d: 41 c7 84 24 d4 00 00 movl $0xffffffff,0xd4(%r12) 0.00 : 79f434: 00 ff ff ff ff : : MemoryContextSwitchTo(oldcontext); : : return state; : } 0.00 : 79f439: 4c 89 e0 mov %r12,%rax 0.00 : 79f43c: 4c 89 3d 1d b4 41 00 mov %r15,0x41b41d(%rip) # bba860 0.00 : 79f443: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 79f447: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 79f44b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 79f44f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 79f453: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 79f457: c9 leaveq 0.00 : 79f458: c3 retq 0.00 : 79f459: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : state = (Tuplesortstate *) palloc0(sizeof(Tuplesortstate)); : : #ifdef TRACE_SORT : if (trace_sort) : pg_rusage_init(&state->ru_start); 0.00 : 79f460: 48 8d b8 48 01 00 00 lea 0x148(%rax),%rdi 0.00 : 79f467: e8 f4 65 ff ff callq 795a60 0.00 : 79f46c: e9 3a ff ff ff jmpq 79f3ab : : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); : : /* workMem must be large enough for the minimal memtuples array */ : if (LACKMEM(state)) : elog(ERROR, "insufficient memory allowed for sort"); 0.00 : 79f471: ba 30 2f 8e 00 mov $0x8e2f30,%edx 0.00 : 79f476: be 46 02 00 00 mov $0x246,%esi 0.00 : 79f47b: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79f480: e8 9b bf fd ff callq 77b420 0.00 : 79f485: be 40 2c 8e 00 mov $0x8e2c40,%esi 0.00 : 79f48a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79f48f: 31 c0 xor %eax,%eax 0.00 : 79f491: e8 9a bd fd ff callq 77b230 0.00 : 79f496: e8 35 a0 cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:676 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a7370 : : * UnregisterSnapshotFromOwner : * As above, but use the specified resource owner : */ : void : UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner) : { 0.00 : 7a7370: 55 push %rbp 0.00 : 7a7371: 48 89 f0 mov %rsi,%rax 0.00 : 7a7374: 48 89 e5 mov %rsp,%rbp 0.00 : 7a7377: 53 push %rbx 0.00 : 7a7378: 48 89 fb mov %rdi,%rbx 0.00 : 7a737b: 48 83 ec 08 sub $0x8,%rsp : if (snapshot == NULL) 0.00 : 7a737f: 48 85 ff test %rdi,%rdi 0.00 : 7a7382: 74 26 je 7a73aa : return; : : Assert(snapshot->regd_count > 0); : Assert(RegisteredSnapshots > 0); : : ResourceOwnerForgetSnapshot(owner, snapshot); /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:676 100.00 : 7a7384: 48 89 fe mov %rdi,%rsi 0.00 : 7a7387: 48 89 c7 mov %rax,%rdi 0.00 : 7a738a: e8 c1 30 ff ff callq 79a450 : RegisteredSnapshots--; 0.00 : 7a738f: 83 2d 8a 35 41 00 01 subl $0x1,0x41358a(%rip) # bba920 : if (--snapshot->regd_count == 0 && snapshot->active_count == 0) 0.00 : 7a7396: 8b 43 34 mov 0x34(%rbx),%eax 0.00 : 7a7399: 83 e8 01 sub $0x1,%eax 0.00 : 7a739c: 85 c0 test %eax,%eax 0.00 : 7a739e: 89 43 34 mov %eax,0x34(%rbx) 0.00 : 7a73a1: 75 07 jne 7a73aa 0.00 : 7a73a3: 8b 43 30 mov 0x30(%rbx),%eax 0.00 : 7a73a6: 85 c0 test %eax,%eax 0.00 : 7a73a8: 74 0e je 7a73b8 : { : FreeSnapshot(snapshot); : SnapshotResetXmin(); : } : } 0.00 : 7a73aa: 48 83 c4 08 add $0x8,%rsp 0.00 : 7a73ae: 5b pop %rbx 0.00 : 7a73af: c9 leaveq 0.00 : 7a73b0: c3 retq 0.00 : 7a73b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : Assert(snapshot->regd_count == 0); : Assert(snapshot->active_count == 0); : Assert(snapshot->copied); : : pfree(snapshot); 0.00 : 7a73b8: 48 89 df mov %rbx,%rdi 0.00 : 7a73bb: e8 c0 17 ff ff callq 798b80 : * is atomic. : */ : static void : SnapshotResetXmin(void) : { : if (RegisteredSnapshots == 0 && ActiveSnapshot == NULL) 0.00 : 7a73c0: 8b 1d 5a 35 41 00 mov 0x41355a(%rip),%ebx # bba920 0.00 : 7a73c6: 85 db test %ebx,%ebx 0.00 : 7a73c8: 75 e0 jne 7a73aa 0.00 : 7a73ca: 48 83 3d 6e 35 41 00 cmpq $0x0,0x41356e(%rip) # bba940 0.00 : 7a73d1: 00 0.00 : 7a73d2: 75 d6 jne 7a73aa : MyPgXact->xmin = InvalidTransactionId; 0.00 : 7a73d4: 48 8b 05 75 65 3d 00 mov 0x3d6575(%rip),%rax # b7d950 0.00 : 7a73db: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) 0.00 : 7a73e2: eb c6 jmp 7a73aa Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/port/strlcpy.c:46 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007ab2a0 : : * Returns strlen(src); if retval >= siz, truncation occurred. : * Function creation history: http://www.gratisoft.us/todd/papers/strlcpy.html : */ : size_t : strlcpy(char *dst, const char *src, size_t siz) : { /home/Computational/mark/src/postgres-andres/src/port/strlcpy.c:46 100.00 : 7ab2a0: 55 push %rbp : char *d = dst; : const char *s = src; : size_t n = siz; : : /* Copy as many bytes as will fit */ : if (n != 0) 0.00 : 7ab2a1: 48 85 d2 test %rdx,%rdx : { : while (--n != 0) 0.00 : 7ab2a4: 48 89 f1 mov %rsi,%rcx : * Returns strlen(src); if retval >= siz, truncation occurred. : * Function creation history: http://www.gratisoft.us/todd/papers/strlcpy.html : */ : size_t : strlcpy(char *dst, const char *src, size_t siz) : { 0.00 : 7ab2a7: 48 89 e5 mov %rsp,%rbp : char *d = dst; : const char *s = src; : size_t n = siz; : : /* Copy as many bytes as will fit */ : if (n != 0) 0.00 : 7ab2aa: 74 2c je 7ab2d8 0.00 : 7ab2ac: eb 06 jmp 7ab2b4 0.00 : 7ab2ae: 66 90 xchg %ax,%ax : { : while (--n != 0) : { : if ((*d++ = *s++) == '\0') 0.00 : 7ab2b0: 48 83 c7 01 add $0x1,%rdi : size_t n = siz; : : /* Copy as many bytes as will fit */ : if (n != 0) : { : while (--n != 0) 0.00 : 7ab2b4: 48 83 ea 01 sub $0x1,%rdx 0.00 : 7ab2b8: 74 16 je 7ab2d0 : { : if ((*d++ = *s++) == '\0') 0.00 : 7ab2ba: 0f b6 01 movzbl (%rcx),%eax 0.00 : 7ab2bd: 48 83 c1 01 add $0x1,%rcx 0.00 : 7ab2c1: 84 c0 test %al,%al 0.00 : 7ab2c3: 88 07 mov %al,(%rdi) 0.00 : 7ab2c5: 75 e9 jne 7ab2b0 : /* Not enough room in dst, add NUL and traverse rest of src */ : if (n == 0) : { : if (siz != 0) : *d = '\0'; /* NUL-terminate dst */ : while (*s++) 0.00 : 7ab2c7: 48 f7 d6 not %rsi : ; : } : : return (s - src - 1); /* count does not include NUL */ : } 0.00 : 7ab2ca: c9 leaveq : /* Not enough room in dst, add NUL and traverse rest of src */ : if (n == 0) : { : if (siz != 0) : *d = '\0'; /* NUL-terminate dst */ : while (*s++) 0.00 : 7ab2cb: 48 8d 04 31 lea (%rcx,%rsi,1),%rax : ; : } : : return (s - src - 1); /* count does not include NUL */ : } 0.00 : 7ab2cf: c3 retq : : /* Not enough room in dst, add NUL and traverse rest of src */ : if (n == 0) : { : if (siz != 0) : *d = '\0'; /* NUL-terminate dst */ 0.00 : 7ab2d0: c6 07 00 movb $0x0,(%rdi) 0.00 : 7ab2d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : while (*s++) 0.00 : 7ab2d8: 0f b6 01 movzbl (%rcx),%eax 0.00 : 7ab2db: 48 83 c1 01 add $0x1,%rcx 0.00 : 7ab2df: 84 c0 test %al,%al 0.00 : 7ab2e1: 74 e4 je 7ab2c7 0.00 : 7ab2e3: 0f b6 01 movzbl (%rcx),%eax 0.00 : 7ab2e6: 48 83 c1 01 add $0x1,%rcx 0.00 : 7ab2ea: 84 c0 test %al,%al 0.00 : 7ab2ec: 75 ea jne 7ab2d8 0.00 : 7ab2ee: eb d7 jmp 7ab2c7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/common/relpath.c:141 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007ae5d0 : : * the trouble considering BackendId is just int anyway. : */ : char * : GetRelationPath(Oid dbNode, Oid spcNode, Oid relNode, : int backendId, ForkNumber forkNumber) : { 0.00 : 7ae5d0: 55 push %rbp 0.00 : 7ae5d1: 41 89 d2 mov %edx,%r10d 0.00 : 7ae5d4: 44 89 c0 mov %r8d,%eax 0.00 : 7ae5d7: 89 ca mov %ecx,%edx 0.00 : 7ae5d9: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/common/relpath.c:141 100.00 : 7ae5dc: 48 83 ec 10 sub $0x10,%rsp : char *path; : : if (spcNode == GLOBALTABLESPACE_OID) 0.00 : 7ae5e0: 81 fe 80 06 00 00 cmp $0x680,%esi 0.00 : 7ae5e6: 74 68 je 7ae650 : path = psprintf("global/%u_%s", : relNode, forkNames[forkNumber]); : else : path = psprintf("global/%u", relNode); : } : else if (spcNode == DEFAULTTABLESPACE_OID) 0.00 : 7ae5e8: 81 fe 7f 06 00 00 cmp $0x67f,%esi 0.00 : 7ae5ee: 74 30 je 7ae620 : } : } : else : { : /* All other tablespaces are accessed via symlinks */ : if (backendId == InvalidBackendId) 0.00 : 7ae5f0: 83 f9 ff cmp $0xffffffff,%ecx 0.00 : 7ae5f3: 0f 84 df 00 00 00 je 7ae6d8 : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, relNode); : } : else : { : if (forkNumber != MAIN_FORKNUM) 0.00 : 7ae5f9: 45 85 c0 test %r8d,%r8d 0.00 : 7ae5fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7ae600: 75 7e jne 7ae680 : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae602: c9 leaveq : path = psprintf("pg_tblspc/%u/%s/%u/t%d_%u_%s", : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode, : forkNames[forkNumber]); : else : path = psprintf("pg_tblspc/%u/%s/%u/t%d_%u", 0.00 : 7ae603: 41 89 c8 mov %ecx,%r8d 0.00 : 7ae606: 45 89 d1 mov %r10d,%r9d 0.00 : 7ae609: 89 f9 mov %edi,%ecx 0.00 : 7ae60b: ba 42 4f 88 00 mov $0x884f42,%edx 0.00 : 7ae610: bf 19 10 90 00 mov $0x901019,%edi 0.00 : 7ae615: 31 c0 xor %eax,%eax 0.00 : 7ae617: e9 c4 fe ff ff jmpq 7ae4e0 0.00 : 7ae61c: 0f 1f 40 00 nopl 0x0(%rax) : path = psprintf("global/%u", relNode); : } : else if (spcNode == DEFAULTTABLESPACE_OID) : { : /* The default tablespace is {datadir}/base */ : if (backendId == InvalidBackendId) 0.00 : 7ae620: 83 f9 ff cmp $0xffffffff,%ecx 0.00 : 7ae623: 0f 84 87 00 00 00 je 7ae6b0 : path = psprintf("base/%u/%u", : dbNode, relNode); : } : else : { : if (forkNumber != MAIN_FORKNUM) 0.00 : 7ae629: 45 85 c0 test %r8d,%r8d 0.00 : 7ae62c: 0f 84 ce 00 00 00 je 7ae700 : path = psprintf("base/%u/t%d_%u_%s", 0.00 : 7ae632: 48 98 cltq 0.00 : 7ae634: 89 fe mov %edi,%esi 0.00 : 7ae636: 44 89 d1 mov %r10d,%ecx 0.00 : 7ae639: 4c 8b 04 c5 c0 10 90 mov 0x9010c0(,%rax,8),%r8 0.00 : 7ae640: 00 : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae641: c9 leaveq : dbNode, relNode); : } : else : { : if (forkNumber != MAIN_FORKNUM) : path = psprintf("base/%u/t%d_%u_%s", 0.00 : 7ae642: bf ac 0f 90 00 mov $0x900fac,%edi 0.00 : 7ae647: 31 c0 xor %eax,%eax 0.00 : 7ae649: e9 92 fe ff ff jmpq 7ae4e0 0.00 : 7ae64e: 66 90 xchg %ax,%ax : if (spcNode == GLOBALTABLESPACE_OID) : { : /* Shared system relations live in {datadir}/global */ : Assert(dbNode == 0); : Assert(backendId == InvalidBackendId); : if (forkNumber != MAIN_FORKNUM) 0.00 : 7ae650: 45 85 c0 test %r8d,%r8d 0.00 : 7ae653: 74 1b je 7ae670 : path = psprintf("global/%u_%s", 0.00 : 7ae655: 48 98 cltq 0.00 : 7ae657: 44 89 d6 mov %r10d,%esi 0.00 : 7ae65a: bf 7c 0f 90 00 mov $0x900f7c,%edi 0.00 : 7ae65f: 48 8b 14 c5 c0 10 90 mov 0x9010c0(,%rax,8),%rdx 0.00 : 7ae666: 00 : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae667: c9 leaveq : { : /* Shared system relations live in {datadir}/global */ : Assert(dbNode == 0); : Assert(backendId == InvalidBackendId); : if (forkNumber != MAIN_FORKNUM) : path = psprintf("global/%u_%s", 0.00 : 7ae668: 31 c0 xor %eax,%eax 0.00 : 7ae66a: e9 71 fe ff ff jmpq 7ae4e0 0.00 : 7ae66f: 90 nop : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae670: c9 leaveq : Assert(backendId == InvalidBackendId); : if (forkNumber != MAIN_FORKNUM) : path = psprintf("global/%u_%s", : relNode, forkNames[forkNumber]); : else : path = psprintf("global/%u", relNode); 0.00 : 7ae671: 44 89 d6 mov %r10d,%esi 0.00 : 7ae674: bf 89 0f 90 00 mov $0x900f89,%edi 0.00 : 7ae679: 31 c0 xor %eax,%eax 0.00 : 7ae67b: e9 60 fe ff ff jmpq 7ae4e0 : dbNode, relNode); : } : else : { : if (forkNumber != MAIN_FORKNUM) : path = psprintf("pg_tblspc/%u/%s/%u/t%d_%u_%s", 0.00 : 7ae680: 48 98 cltq 0.00 : 7ae682: 41 89 c8 mov %ecx,%r8d 0.00 : 7ae685: 45 89 d1 mov %r10d,%r9d 0.00 : 7ae688: 48 8b 04 c5 c0 10 90 mov 0x9010c0(,%rax,8),%rax 0.00 : 7ae68f: 00 0.00 : 7ae690: 89 f9 mov %edi,%ecx 0.00 : 7ae692: ba 42 4f 88 00 mov $0x884f42,%edx 0.00 : 7ae697: bf fc 0f 90 00 mov $0x900ffc,%edi 0.00 : 7ae69c: 48 89 04 24 mov %rax,(%rsp) 0.00 : 7ae6a0: 31 c0 xor %eax,%eax 0.00 : 7ae6a2: e8 39 fe ff ff callq 7ae4e0 : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae6a7: c9 leaveq 0.00 : 7ae6a8: c3 retq 0.00 : 7ae6a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else if (spcNode == DEFAULTTABLESPACE_OID) : { : /* The default tablespace is {datadir}/base */ : if (backendId == InvalidBackendId) : { : if (forkNumber != MAIN_FORKNUM) 0.00 : 7ae6b0: 45 85 c0 test %r8d,%r8d 0.00 : 7ae6b3: 74 7b je 7ae730 : path = psprintf("base/%u/%u_%s", 0.00 : 7ae6b5: 48 98 cltq 0.00 : 7ae6b7: 89 fe mov %edi,%esi 0.00 : 7ae6b9: 44 89 d2 mov %r10d,%edx 0.00 : 7ae6bc: 48 8b 0c c5 c0 10 90 mov 0x9010c0(,%rax,8),%rcx 0.00 : 7ae6c3: 00 : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae6c4: c9 leaveq : { : /* The default tablespace is {datadir}/base */ : if (backendId == InvalidBackendId) : { : if (forkNumber != MAIN_FORKNUM) : path = psprintf("base/%u/%u_%s", 0.00 : 7ae6c5: bf 93 0f 90 00 mov $0x900f93,%edi 0.00 : 7ae6ca: 31 c0 xor %eax,%eax 0.00 : 7ae6cc: e9 0f fe ff ff jmpq 7ae4e0 0.00 : 7ae6d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else : { : /* All other tablespaces are accessed via symlinks */ : if (backendId == InvalidBackendId) : { : if (forkNumber != MAIN_FORKNUM) 0.00 : 7ae6d8: 45 85 c0 test %r8d,%r8d 0.00 : 7ae6db: 74 3b je 7ae718 : path = psprintf("pg_tblspc/%u/%s/%u/%u_%s", 0.00 : 7ae6dd: 48 98 cltq 0.00 : 7ae6df: 89 f9 mov %edi,%ecx 0.00 : 7ae6e1: 45 89 d0 mov %r10d,%r8d 0.00 : 7ae6e4: 4c 8b 0c c5 c0 10 90 mov 0x9010c0(,%rax,8),%r9 0.00 : 7ae6eb: 00 : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae6ec: c9 leaveq : { : /* All other tablespaces are accessed via symlinks */ : if (backendId == InvalidBackendId) : { : if (forkNumber != MAIN_FORKNUM) : path = psprintf("pg_tblspc/%u/%s/%u/%u_%s", 0.00 : 7ae6ed: ba 42 4f 88 00 mov $0x884f42,%edx 0.00 : 7ae6f2: bf cd 0f 90 00 mov $0x900fcd,%edi 0.00 : 7ae6f7: 31 c0 xor %eax,%eax 0.00 : 7ae6f9: e9 e2 fd ff ff jmpq 7ae4e0 0.00 : 7ae6fe: 66 90 xchg %ax,%ax : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae700: c9 leaveq : if (forkNumber != MAIN_FORKNUM) : path = psprintf("base/%u/t%d_%u_%s", : dbNode, backendId, relNode, : forkNames[forkNumber]); : else : path = psprintf("base/%u/t%d_%u", 0.00 : 7ae701: 89 fe mov %edi,%esi 0.00 : 7ae703: 44 89 d1 mov %r10d,%ecx 0.00 : 7ae706: bf be 0f 90 00 mov $0x900fbe,%edi 0.00 : 7ae70b: 31 c0 xor %eax,%eax 0.00 : 7ae70d: e9 ce fd ff ff jmpq 7ae4e0 0.00 : 7ae712: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae718: c9 leaveq : path = psprintf("pg_tblspc/%u/%s/%u/%u_%s", : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, relNode, : forkNames[forkNumber]); : else : path = psprintf("pg_tblspc/%u/%s/%u/%u", 0.00 : 7ae719: 89 f9 mov %edi,%ecx 0.00 : 7ae71b: 45 89 d0 mov %r10d,%r8d 0.00 : 7ae71e: ba 42 4f 88 00 mov $0x884f42,%edx 0.00 : 7ae723: bf e6 0f 90 00 mov $0x900fe6,%edi 0.00 : 7ae728: 31 c0 xor %eax,%eax 0.00 : 7ae72a: e9 b1 fd ff ff jmpq 7ae4e0 0.00 : 7ae72f: 90 nop : spcNode, TABLESPACE_VERSION_DIRECTORY, : dbNode, backendId, relNode); : } : } : return path; : } 0.00 : 7ae730: c9 leaveq : if (forkNumber != MAIN_FORKNUM) : path = psprintf("base/%u/%u_%s", : dbNode, relNode, : forkNames[forkNumber]); : else : path = psprintf("base/%u/%u", 0.00 : 7ae731: 89 fe mov %edi,%esi 0.00 : 7ae733: 44 89 d2 mov %r10d,%edx 0.00 : 7ae736: bf a1 0f 90 00 mov $0x900fa1,%edi 0.00 : 7ae73b: 31 c0 xor %eax,%eax 0.00 : 7ae73d: e9 9e fd ff ff jmpq 7ae4e0 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000b840 : : * : * ---------------- : */ : PostgresPollingStatusType : PQconnectPoll(PGconn *conn) : { 0.00 : b840: 55 push %rbp 0.00 : b841: 48 89 e5 mov %rsp,%rbp 0.00 : b844: 41 57 push %r15 0.00 : b846: 41 56 push %r14 0.00 : b848: 41 55 push %r13 0.00 : b84a: 41 54 push %r12 0.00 : b84c: 49 89 fc mov %rdi,%r12 0.00 : b84f: 53 push %rbx 0.00 : b850: 48 81 ec 58 25 00 00 sub $0x2558,%rsp : PGresult *res; : char sebuf[256]; : int optval; : : if (conn == NULL) 0.00 : b857: 48 85 ff test %rdi,%rdi 0.00 : b85a: 0f 84 90 00 00 00 je b8f0 : return PGRES_POLLING_FAILED; : : /* Get the new data */ : switch (conn->status) 0.00 : b860: 83 bf 00 01 00 00 08 cmpl $0x8,0x100(%rdi) 0.00 : b867: 76 67 jbe b8d0 : case CONNECTION_SSL_STARTUP: : case CONNECTION_NEEDED: : break; : : default: : appendPQExpBufferStr(&conn->errorMessage, 0.00 : b869: 48 8d bf 00 03 00 00 lea 0x300(%rdi),%rdi 0.00 : b870: 48 8d 35 39 32 01 00 lea 0x13239(%rip),%rsi # 1eab0 <_real_fini+0xdd8> 0.00 : b877: e8 84 c9 ff ff callq 8200 : static void : dot_pg_pass_warning(PGconn *conn) : { : /* If it was 'invalid authorization', add .pgpass mention */ : /* only works with >= 9.0 servers */ : if (conn->dot_pgpass_used && conn->password_needed && conn->result && 0.00 : b87c: 41 80 bc 24 5a 02 00 cmpb $0x0,0x25a(%r12) 0.00 : b883: 00 00 0.00 : b885: 74 39 je b8c0 0.00 : b887: 41 80 bc 24 59 02 00 cmpb $0x0,0x259(%r12) 0.00 : b88e: 00 00 0.00 : b890: 74 2e je b8c0 0.00 : b892: 49 8b bc 24 f0 02 00 mov 0x2f0(%r12),%rdi 0.00 : b899: 00 0.00 : b89a: 48 85 ff test %rdi,%rdi 0.00 : b89d: 74 21 je b8c0 : strcmp(PQresultErrorField(conn->result, PG_DIAG_SQLSTATE), 0.00 : b89f: be 43 00 00 00 mov $0x43,%esi 0.00 : b8a4: e8 f7 c7 ff ff callq 80a0 0.00 : b8a9: 48 8d 3d b3 27 01 00 lea 0x127b3(%rip),%rdi # 1e063 <_real_fini+0x38b> 0.00 : b8b0: 48 89 c6 mov %rax,%rsi 0.00 : b8b3: b9 06 00 00 00 mov $0x6,%ecx : static void : dot_pg_pass_warning(PGconn *conn) : { : /* If it was 'invalid authorization', add .pgpass mention */ : /* only works with >= 9.0 servers */ : if (conn->dot_pgpass_used && conn->password_needed && conn->result && 0.00 : b8b8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : b8ba: 0f 84 20 08 00 00 je c0e0 : * for those above us if they wish to remove this socket from their own : * records (an fd_set for example). We'll just have this socket closed : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; 0.00 : b8c0: 41 c7 84 24 00 01 00 movl $0x1,0x100(%r12) 0.00 : b8c7: 00 01 00 00 00 0.00 : b8cc: 31 c0 xor %eax,%eax : return PGRES_POLLING_FAILED; : } 0.00 : b8ce: eb 22 jmp b8f2 : : if (conn == NULL) : return PGRES_POLLING_FAILED; : : /* Get the new data */ : switch (conn->status) 0.00 : b8d0: 8b 87 00 01 00 00 mov 0x100(%rdi),%eax 0.00 : b8d6: 48 8d 15 a3 36 01 00 lea 0x136a3(%rip),%rdx # 1ef80 <_real_fini+0x12a8> 0.00 : b8dd: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : b8e1: 48 01 d0 add %rdx,%rax 0.00 : b8e4: ff e0 jmpq *%rax 0.00 : b8e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b8ed: 00 00 00 : * for those above us if they wish to remove this socket from their own : * records (an fd_set for example). We'll just have this socket closed : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; 0.00 : b8f0: 31 c0 xor %eax,%eax : return PGRES_POLLING_FAILED; : } 0.00 : b8f2: 48 81 c4 58 25 00 00 add $0x2558,%rsp 0.00 : b8f9: 5b pop %rbx 0.00 : b8fa: 41 5c pop %r12 0.00 : b8fc: 41 5d pop %r13 0.00 : b8fe: 41 5e pop %r14 0.00 : b900: 41 5f pop %r15 0.00 : b902: c9 leaveq 0.00 : b903: c3 retq 0.00 : b904: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* Get the password salt if there is one. */ : if (areq == AUTH_REQ_MD5) : { : if (pqGetnchar(conn->md5Salt, 0.00 : b908: 49 8d 84 24 8c 02 00 lea 0x28c(%r12),%rax 0.00 : b90f: 00 : while (conn->addr_cur != NULL) : { : struct addrinfo *addr_cur = conn->addr_cur; : : /* Remember current address for possible error msg */ : memcpy(&conn->raddr.addr, addr_cur->ai_addr, 0.00 : b910: 4d 8d b4 24 c8 01 00 lea 0x1c8(%r12),%r14 0.00 : b917: 00 : (char *) &on, : sizeof(on)) < 0) : { : char sebuf[256]; : : appendPQExpBuffer(&conn->errorMessage, 0.00 : b918: 4d 8d ac 24 00 03 00 lea 0x300(%r12),%r13 0.00 : b91f: 00 : count = atoi(conn->keepalives_count); : if (count < 0) : count = 0; : : #ifdef TCP_KEEPCNT : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPCNT, 0.00 : b920: 4c 8d 7d c0 lea -0x40(%rbp),%r15 : } : : /* Get the password salt if there is one. */ : if (areq == AUTH_REQ_MD5) : { : if (pqGetnchar(conn->md5Salt, 0.00 : b924: 48 89 85 a8 da ff ff mov %rax,-0x2558(%rbp) : else if (usekeepalives == 0) : { : /* Do nothing */ : } : #ifndef WIN32 : else if (setsockopt(conn->sock, 0.00 : b92b: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : b92f: 48 89 85 a0 da ff ff mov %rax,-0x2560(%rbp) : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPCNT, : (char *) &count, sizeof(count)) < 0) : { : char sebuf[256]; : : appendPQExpBuffer(&conn->errorMessage, 0.00 : b936: 48 8d 85 b0 fa ff ff lea -0x550(%rbp),%rax 0.00 : b93d: 48 89 85 98 da ff ff mov %rax,-0x2568(%rbp) : #ifndef WIN32 : else if (setsockopt(conn->sock, : SOL_SOCKET, SO_KEEPALIVE, : (char *) &on, sizeof(on)) < 0) : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : b944: 48 8d 85 b0 fe ff ff lea -0x150(%rbp),%rax 0.00 : b94b: 48 89 85 90 da ff ff mov %rax,-0x2570(%rbp) : char *ep; : int val; : : if (conn->keepalives == NULL) : return 1; : val = strtol(conn->keepalives, &ep, 10); 0.00 : b952: 48 8d 45 b8 lea -0x48(%rbp),%rax 0.00 : b956: 48 89 85 88 da ff ff mov %rax,-0x2578(%rbp) : } : : : keep_going: /* We will come back to here until there is : * nothing left to do. */ : switch (conn->status) 0.00 : b95d: 41 8b 8c 24 00 01 00 mov 0x100(%r12),%ecx 0.00 : b964: 00 0.00 : b965: 83 f9 08 cmp $0x8,%ecx 0.00 : b968: 76 1e jbe b988 : /* We are open for business! */ : conn->status = CONNECTION_OK; : return PGRES_POLLING_OK; : : default: : appendPQExpBuffer(&conn->errorMessage, 0.00 : b96a: 48 8d 35 77 34 01 00 lea 0x13477(%rip),%rsi # 1ede8 <_real_fini+0x1110> 0.00 : b971: 89 ca mov %ecx,%edx 0.00 : b973: 4c 89 ef mov %r13,%rdi 0.00 : b976: 31 c0 xor %eax,%eax 0.00 : b978: e8 f3 c7 ff ff callq 8170 0.00 : b97d: e9 fa fe ff ff jmpq b87c 0.00 : b982: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : : keep_going: /* We will come back to here until there is : * nothing left to do. */ : switch (conn->status) 0.00 : b988: 48 8d 15 15 36 01 00 lea 0x13615(%rip),%rdx # 1efa4 <_real_fini+0x12cc> 0.00 : b98f: 89 c8 mov %ecx,%eax 0.00 : b991: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : b995: 48 01 d0 add %rdx,%rax 0.00 : b998: ff e0 jmpq *%rax 0.00 : b99a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : (char *) &on, : sizeof(on)) < 0) : { : char sebuf[256]; : : appendPQExpBuffer(&conn->errorMessage, 0.00 : b9a0: e8 0b c1 ff ff callq 7ab0 <__errno_location@plt> 0.00 : b9a5: 48 8b b5 98 da ff ff mov -0x2568(%rbp),%rsi 0.00 : b9ac: 8b 38 mov (%rax),%edi 0.00 : b9ae: ba 00 01 00 00 mov $0x100,%edx 0.00 : b9b3: e8 88 f6 00 00 callq 1b040 0.00 : b9b8: 48 8d 35 39 31 01 00 lea 0x13139(%rip),%rsi # 1eaf8 <_real_fini+0xe20> 0.00 : b9bf: 48 89 c2 mov %rax,%rdx : } : : #ifdef F_SETFD : if (fcntl(conn->sock, F_SETFD, FD_CLOEXEC) == -1) : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : b9c2: 4c 89 ef mov %r13,%rdi 0.00 : b9c5: 31 c0 xor %eax,%eax 0.00 : b9c7: e8 a4 c7 ff ff callq 8170 : libpq_gettext("could not set socket to close-on-exec mode: %s\n"), : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : pqDropConnection(conn); 0.00 : b9cc: 4c 89 e7 mov %r12,%rdi 0.00 : b9cf: e8 9c fc ff ff callq b670 : conn->addr_cur = addr_cur->ai_next; 0.00 : b9d4: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : b9d8: 49 89 84 24 68 02 00 mov %rax,0x268(%r12) 0.00 : b9df: 00 : /* : * Try to initiate a connection to one of the addresses : * returned by pg_getaddrinfo_all(). conn->addr_cur is the : * next one to try. We fail when we run out of addresses. : */ : while (conn->addr_cur != NULL) 0.00 : b9e0: 49 8b 9c 24 68 02 00 mov 0x268(%r12),%rbx 0.00 : b9e7: 00 0.00 : b9e8: 48 85 db test %rbx,%rbx 0.00 : b9eb: 0f 84 8b fe ff ff je b87c : { : struct addrinfo *addr_cur = conn->addr_cur; : : /* Remember current address for possible error msg */ : memcpy(&conn->raddr.addr, addr_cur->ai_addr, 0.00 : b9f1: 8b 53 10 mov 0x10(%rbx),%edx 0.00 : b9f4: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : b9f8: 4c 89 f7 mov %r14,%rdi 0.00 : b9fb: e8 00 c4 ff ff callq 7e00 : addr_cur->ai_addrlen); : conn->raddr.salen = addr_cur->ai_addrlen; 0.00 : ba00: 8b 43 10 mov 0x10(%rbx),%eax : : conn->sock = socket(addr_cur->ai_family, SOCK_STREAM, 0); 0.00 : ba03: 31 d2 xor %edx,%edx 0.00 : ba05: be 01 00 00 00 mov $0x1,%esi : struct addrinfo *addr_cur = conn->addr_cur; : : /* Remember current address for possible error msg */ : memcpy(&conn->raddr.addr, addr_cur->ai_addr, : addr_cur->ai_addrlen); : conn->raddr.salen = addr_cur->ai_addrlen; 0.00 : ba0a: 41 89 84 24 48 02 00 mov %eax,0x248(%r12) 0.00 : ba11: 00 : : conn->sock = socket(addr_cur->ai_family, SOCK_STREAM, 0); ??:0 50.00 : ba12: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : ba15: e8 76 c8 ff ff callq 8290 : if (conn->sock == PGINVALID_SOCKET) 0.00 : ba1a: 83 f8 ff cmp $0xffffffff,%eax : /* Remember current address for possible error msg */ : memcpy(&conn->raddr.addr, addr_cur->ai_addr, : addr_cur->ai_addrlen); : conn->raddr.salen = addr_cur->ai_addrlen; : : conn->sock = socket(addr_cur->ai_family, SOCK_STREAM, 0); 0.00 : ba1d: 41 89 84 24 38 01 00 mov %eax,0x138(%r12) 0.00 : ba24: 00 : if (conn->sock == PGINVALID_SOCKET) 0.00 : ba25: 0f 84 e5 00 00 00 je bb10 : /* : * Select socket options: no delay of outgoing data for : * TCP sockets, nonblock mode, close-on-exec. Fail if any : * of this fails. : */ : if (!IS_AF_UNIX(addr_cur->ai_family)) 0.00 : ba2b: 83 7b 04 01 cmpl $0x1,0x4(%rbx) 0.00 : ba2f: 74 29 je ba5a : connectNoDelay(PGconn *conn) : { : #ifdef TCP_NODELAY : int on = 1; : : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_NODELAY, 0.00 : ba31: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : ba37: 4c 89 f9 mov %r15,%rcx 0.00 : ba3a: ba 01 00 00 00 mov $0x1,%edx 0.00 : ba3f: be 06 00 00 00 mov $0x6,%esi 0.00 : ba44: 89 c7 mov %eax,%edi : */ : static int : connectNoDelay(PGconn *conn) : { : #ifdef TCP_NODELAY : int on = 1; 0.00 : ba46: c7 45 c0 01 00 00 00 movl $0x1,-0x40(%rbp) : : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_NODELAY, 0.00 : ba4d: e8 2e c1 ff ff callq 7b80 0.00 : ba52: 85 c0 test %eax,%eax 0.00 : ba54: 0f 88 46 ff ff ff js b9a0 : pqDropConnection(conn); : conn->addr_cur = addr_cur->ai_next; : continue; : } : } : if (!pg_set_noblock(conn->sock)) 0.00 : ba5a: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : ba61: 00 0.00 : ba62: e8 c9 f1 00 00 callq 1ac30 0.00 : ba67: 84 c0 test %al,%al 0.00 : ba69: 0f 85 c1 00 00 00 jne bb30 : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : ba6f: e8 3c c0 ff ff callq 7ab0 <__errno_location@plt> 0.00 : ba74: 48 8b b5 90 da ff ff mov -0x2570(%rbp),%rsi 0.00 : ba7b: 8b 38 mov (%rax),%edi 0.00 : ba7d: ba 00 01 00 00 mov $0x100,%edx 0.00 : ba82: e8 b9 f5 00 00 callq 1b040 0.00 : ba87: 48 8d 35 9a 30 01 00 lea 0x1309a(%rip),%rsi # 1eb28 <_real_fini+0xe50> 0.00 : ba8e: 48 89 c2 mov %rax,%rdx 0.00 : ba91: 4c 89 ef mov %r13,%rdi 0.00 : ba94: 31 c0 xor %eax,%eax 0.00 : ba96: e8 d5 c6 ff ff callq 8170 : libpq_gettext("could not set socket to nonblocking mode: %s\n"), : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : pqDropConnection(conn); 0.00 : ba9b: 4c 89 e7 mov %r12,%rdi 0.00 : ba9e: e8 cd fb ff ff callq b670 : conn->addr_cur = addr_cur->ai_next; 0.00 : baa3: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : baa7: 49 89 84 24 68 02 00 mov %rax,0x268(%r12) 0.00 : baae: 00 : /* : * Try to initiate a connection to one of the addresses : * returned by pg_getaddrinfo_all(). conn->addr_cur is the : * next one to try. We fail when we run out of addresses. : */ : while (conn->addr_cur != NULL) 0.00 : baaf: 49 8b 9c 24 68 02 00 mov 0x268(%r12),%rbx 0.00 : bab6: 00 0.00 : bab7: 48 85 db test %rbx,%rbx 0.00 : baba: 0f 85 31 ff ff ff jne b9f1 0.00 : bac0: e9 b7 fd ff ff jmpq b87c : default: : goto error_return; : } : : /* We are open for business! */ : conn->status = CONNECTION_OK; 0.00 : bac5: 41 c7 84 24 00 01 00 movl $0x0,0x100(%r12) 0.00 : bacc: 00 00 00 00 00 0.00 : bad1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bad8: b8 03 00 00 00 mov $0x3,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : badd: e9 10 fe ff ff jmpq b8f2 0.00 : bae2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* These are reading states */ : case CONNECTION_AWAITING_RESPONSE: : case CONNECTION_AUTH_OK: : { : /* Load waiting data */ : int n = pqReadData(conn); 50.00 : bae8: e8 d3 5e 00 00 callq 119c0 : : if (n < 0) 0.00 : baed: 83 f8 00 cmp $0x0,%eax 0.00 : baf0: 0f 8c 86 fd ff ff jl b87c : goto error_return; : if (n == 0) 0.00 : baf6: 0f 85 0c fe ff ff jne b908 : * for those above us if they wish to remove this socket from their own : * records (an fd_set for example). We'll just have this socket closed : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; 0.00 : bafc: b8 01 00 00 00 mov $0x1,%eax 0.00 : bb01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bb08: e9 e5 fd ff ff jmpq b8f2 0.00 : bb0d: 0f 1f 00 nopl (%rax) : { : /* : * ignore socket() failure if we have more addresses : * to try : */ : if (addr_cur->ai_next != NULL) 0.00 : bb10: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : bb14: 48 85 c0 test %rax,%rax 0.00 : bb17: 0f 84 d2 07 00 00 je c2ef : pqDropConnection(conn); : : /* : * Try the next address, if any. : */ : conn->addr_cur = addr_cur->ai_next; 0.00 : bb1d: 49 89 84 24 68 02 00 mov %rax,0x268(%r12) 0.00 : bb24: 00 0.00 : bb25: e9 b6 fe ff ff jmpq b9e0 0.00 : bb2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : conn->addr_cur = addr_cur->ai_next; : continue; : } : : #ifdef F_SETFD : if (fcntl(conn->sock, F_SETFD, FD_CLOEXEC) == -1) 0.00 : bb30: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : bb37: 00 0.00 : bb38: 31 c0 xor %eax,%eax 0.00 : bb3a: ba 01 00 00 00 mov $0x1,%edx 0.00 : bb3f: be 02 00 00 00 mov $0x2,%esi 0.00 : bb44: e8 67 c0 ff ff callq 7bb0 0.00 : bb49: 83 c0 01 add $0x1,%eax 0.00 : bb4c: 0f 84 fe 01 00 00 je bd50 : conn->addr_cur = addr_cur->ai_next; : continue; : } : #endif /* F_SETFD */ : : if (!IS_AF_UNIX(addr_cur->ai_family)) 0.00 : bb52: 83 7b 04 01 cmpl $0x1,0x4(%rbx) 0.00 : bb56: 74 36 je bb8e : useKeepalives(PGconn *conn) : { : char *ep; : int val; : : if (conn->keepalives == NULL) 0.00 : bb58: 49 8b 7c 24 70 mov 0x70(%r12),%rdi : #endif /* F_SETFD */ : : if (!IS_AF_UNIX(addr_cur->ai_family)) : { : #ifndef WIN32 : int on = 1; 0.00 : bb5d: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%rbp) : useKeepalives(PGconn *conn) : { : char *ep; : int val; : : if (conn->keepalives == NULL) 0.00 : bb64: 48 85 ff test %rdi,%rdi 0.00 : bb67: 0f 84 9b 00 00 00 je bc08 : return 1; : val = strtol(conn->keepalives, &ep, 10); 0.00 : bb6d: 48 8b b5 88 da ff ff mov -0x2578(%rbp),%rsi 0.00 : bb74: ba 0a 00 00 00 mov $0xa,%edx 0.00 : bb79: e8 02 c3 ff ff callq 7e80 0.00 : bb7e: 48 89 c2 mov %rax,%rdx : if (*ep) 0.00 : bb81: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : bb85: 80 38 00 cmpb $0x0,(%rax) 0.00 : bb88: 75 66 jne bbf0 : { : appendPQExpBufferStr(&conn->errorMessage, : libpq_gettext("keepalives parameter must be an integer\n")); : err = 1; : } : else if (usekeepalives == 0) 0.00 : bb8a: 85 d2 test %edx,%edx 0.00 : bb8c: 75 7a jne bc08 : * we will try MSG_NOSIGNAL on sends. If we get an error : * with MSG_NOSIGNAL, we'll clear that flag and revert to : * signal masking. : *---------- : */ : conn->sigpipe_so = false; 0.00 : bb8e: 41 c6 84 24 5b 02 00 movb $0x0,0x25b(%r12) 0.00 : bb95: 00 00 : #ifdef MSG_NOSIGNAL : conn->sigpipe_flag = true; 0.00 : bb97: 41 c6 84 24 5c 02 00 movb $0x1,0x25c(%r12) 0.00 : bb9e: 00 01 : : /* : * Start/make connection. This should not block, since we : * are in nonblock mode. If it does, well, too bad. : */ : if (connect(conn->sock, addr_cur->ai_addr, 0.00 : bba0: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : bba7: 00 0.00 : bba8: 8b 53 10 mov 0x10(%rbx),%edx 0.00 : bbab: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : bbaf: e8 9c c5 ff ff callq 8150 0.00 : bbb4: 85 c0 test %eax,%eax 0.00 : bbb6: 0f 89 ab 07 00 00 jns c367 : addr_cur->ai_addrlen) < 0) : { : if (SOCK_ERRNO == EINPROGRESS || 0.00 : bbbc: e8 ef be ff ff callq 7ab0 <__errno_location@plt> 0.00 : bbc1: 8b 30 mov (%rax),%esi 0.00 : bbc3: 83 fe 73 cmp $0x73,%esi 0.00 : bbc6: 0f 84 b4 07 00 00 je c380 0.00 : bbcc: 83 fe 04 cmp $0x4,%esi 0.00 : bbcf: 90 nop 0.00 : bbd0: 0f 84 aa 07 00 00 je c380 : * This connection failed --- set up error report, then : * close socket (do it this way in case close() affects : * the value of errno...). We will ignore the connect() : * failure and keep going if there are more addresses. : */ : connectFailureMessage(conn, SOCK_ERRNO); 0.00 : bbd6: 4c 89 e7 mov %r12,%rdi 0.00 : bbd9: e8 52 f2 ff ff callq ae30 : pqDropConnection(conn); 0.00 : bbde: 4c 89 e7 mov %r12,%rdi 0.00 : bbe1: e8 8a fa ff ff callq b670 : : /* : * Try the next address, if any. : */ : conn->addr_cur = addr_cur->ai_next; 0.00 : bbe6: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : bbea: e9 2e ff ff ff jmpq bb1d 0.00 : bbef: 90 nop : int usekeepalives = useKeepalives(conn); : int err = 0; : : if (usekeepalives < 0) : { : appendPQExpBufferStr(&conn->errorMessage, 0.00 : bbf0: 48 8d 35 61 32 01 00 lea 0x13261(%rip),%rsi # 1ee58 <_real_fini+0x1180> 0.00 : bbf7: 4c 89 ef mov %r13,%rdi 0.00 : bbfa: e8 01 c6 ff ff callq 8200 0.00 : bbff: e9 c8 fd ff ff jmpq b9cc 0.00 : bc04: 0f 1f 40 00 nopl 0x0(%rax) : else if (usekeepalives == 0) : { : /* Do nothing */ : } : #ifndef WIN32 : else if (setsockopt(conn->sock, 0.00 : bc08: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : bc0f: 00 0.00 : bc10: 48 8b 8d a0 da ff ff mov -0x2560(%rbp),%rcx 0.00 : bc17: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : bc1d: ba 09 00 00 00 mov $0x9,%edx 0.00 : bc22: be 01 00 00 00 mov $0x1,%esi 0.00 : bc27: e8 54 bf ff ff callq 7b80 0.00 : bc2c: 85 c0 test %eax,%eax 0.00 : bc2e: 0f 88 8a 06 00 00 js c2be : static int : setKeepalivesIdle(PGconn *conn) : { : int idle; : : if (conn->keepalives_idle == NULL) 0.00 : bc34: 49 8b 7c 24 78 mov 0x78(%r12),%rdi 0.00 : bc39: 48 85 ff test %rdi,%rdi 0.00 : bc3c: 74 3e je bc7c : return strtod (__nptr, (char **) NULL); : } : __extern_inline int : __NTH (atoi (__const char *__nptr)) : { : return (int) strtol (__nptr, (char **) NULL, 10); 0.00 : bc3e: 31 f6 xor %esi,%esi 0.00 : bc40: ba 0a 00 00 00 mov $0xa,%edx 0.00 : bc45: e8 36 c2 ff ff callq 7e80 : return 1; : : idle = atoi(conn->keepalives_idle); : if (idle < 0) : idle = 0; 0.00 : bc4a: 31 d2 xor %edx,%edx : : #ifdef TCP_KEEPIDLE : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPIDLE, 0.00 : bc4c: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : bc53: 00 : if (conn->keepalives_idle == NULL) : return 1; : : idle = atoi(conn->keepalives_idle); : if (idle < 0) : idle = 0; 0.00 : bc54: 85 c0 test %eax,%eax 0.00 : bc56: 0f 49 d0 cmovns %eax,%edx : : #ifdef TCP_KEEPIDLE : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPIDLE, 0.00 : bc59: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : bc5f: 4c 89 f9 mov %r15,%rcx : if (conn->keepalives_idle == NULL) : return 1; : : idle = atoi(conn->keepalives_idle); : if (idle < 0) : idle = 0; 0.00 : bc62: 89 55 c0 mov %edx,-0x40(%rbp) : : #ifdef TCP_KEEPIDLE : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPIDLE, 0.00 : bc65: be 06 00 00 00 mov $0x6,%esi 0.00 : bc6a: ba 04 00 00 00 mov $0x4,%edx 0.00 : bc6f: e8 0c bf ff ff callq 7b80 0.00 : bc74: 85 c0 test %eax,%eax 0.00 : bc76: 0f 88 ba 06 00 00 js c336 : static int : setKeepalivesInterval(PGconn *conn) : { : int interval; : : if (conn->keepalives_interval == NULL) 0.00 : bc7c: 49 8b bc 24 80 00 00 mov 0x80(%r12),%rdi 0.00 : bc83: 00 0.00 : bc84: 48 85 ff test %rdi,%rdi 0.00 : bc87: 74 3e je bcc7 0.00 : bc89: 31 f6 xor %esi,%esi 0.00 : bc8b: ba 0a 00 00 00 mov $0xa,%edx 0.00 : bc90: e8 eb c1 ff ff callq 7e80 : return 1; : : interval = atoi(conn->keepalives_interval); : if (interval < 0) : interval = 0; 0.00 : bc95: 31 d2 xor %edx,%edx : : #ifdef TCP_KEEPINTVL : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPINTVL, 0.00 : bc97: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : bc9e: 00 : if (conn->keepalives_interval == NULL) : return 1; : : interval = atoi(conn->keepalives_interval); : if (interval < 0) : interval = 0; 0.00 : bc9f: 85 c0 test %eax,%eax 0.00 : bca1: 0f 49 d0 cmovns %eax,%edx : : #ifdef TCP_KEEPINTVL : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPINTVL, 0.00 : bca4: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : bcaa: 4c 89 f9 mov %r15,%rcx : if (conn->keepalives_interval == NULL) : return 1; : : interval = atoi(conn->keepalives_interval); : if (interval < 0) : interval = 0; 0.00 : bcad: 89 55 c0 mov %edx,-0x40(%rbp) : : #ifdef TCP_KEEPINTVL : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPINTVL, 0.00 : bcb0: be 06 00 00 00 mov $0x6,%esi 0.00 : bcb5: ba 05 00 00 00 mov $0x5,%edx 0.00 : bcba: e8 c1 be ff ff callq 7b80 0.00 : bcbf: 85 c0 test %eax,%eax 0.00 : bcc1: 0f 88 2b 07 00 00 js c3f2 : static int : setKeepalivesCount(PGconn *conn) : { : int count; : : if (conn->keepalives_count == NULL) 0.00 : bcc7: 49 8b bc 24 88 00 00 mov 0x88(%r12),%rdi 0.00 : bcce: 00 0.00 : bccf: 48 85 ff test %rdi,%rdi 0.00 : bcd2: 0f 84 b6 fe ff ff je bb8e 0.00 : bcd8: 31 f6 xor %esi,%esi 0.00 : bcda: ba 0a 00 00 00 mov $0xa,%edx 0.00 : bcdf: e8 9c c1 ff ff callq 7e80 : return 1; : : count = atoi(conn->keepalives_count); : if (count < 0) : count = 0; 0.00 : bce4: 31 d2 xor %edx,%edx : : #ifdef TCP_KEEPCNT : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPCNT, 0.00 : bce6: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : bced: 00 : if (conn->keepalives_count == NULL) : return 1; : : count = atoi(conn->keepalives_count); : if (count < 0) : count = 0; 0.00 : bcee: 85 c0 test %eax,%eax 0.00 : bcf0: 0f 49 d0 cmovns %eax,%edx : : #ifdef TCP_KEEPCNT : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPCNT, 0.00 : bcf3: 41 b8 04 00 00 00 mov $0x4,%r8d 0.00 : bcf9: 4c 89 f9 mov %r15,%rcx : if (conn->keepalives_count == NULL) : return 1; : : count = atoi(conn->keepalives_count); : if (count < 0) : count = 0; 0.00 : bcfc: 89 55 c0 mov %edx,-0x40(%rbp) : : #ifdef TCP_KEEPCNT : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPCNT, 0.00 : bcff: be 06 00 00 00 mov $0x6,%esi 0.00 : bd04: ba 06 00 00 00 mov $0x6,%edx 0.00 : bd09: e8 72 be ff ff callq 7b80 0.00 : bd0e: 85 c0 test %eax,%eax 0.00 : bd10: 0f 89 78 fe ff ff jns bb8e : (char *) &count, sizeof(count)) < 0) : { : char sebuf[256]; : : appendPQExpBuffer(&conn->errorMessage, 0.00 : bd16: e8 95 bd ff ff callq 7ab0 <__errno_location@plt> 0.00 : bd1b: 48 8b b5 98 da ff ff mov -0x2568(%rbp),%rsi 0.00 : bd22: 8b 38 mov (%rax),%edi 0.00 : bd24: ba 00 01 00 00 mov $0x100,%edx 0.00 : bd29: e8 12 f3 00 00 callq 1b040 0.00 : bd2e: 48 8d 35 cb 2e 01 00 lea 0x12ecb(%rip),%rsi # 1ec00 <_real_fini+0xf28> 0.00 : bd35: 48 89 c2 mov %rax,%rdx 0.00 : bd38: 4c 89 ef mov %r13,%rdi 0.00 : bd3b: 31 c0 xor %eax,%eax 0.00 : bd3d: e8 2e c4 ff ff callq 8170 0.00 : bd42: e9 85 fc ff ff jmpq b9cc 0.00 : bd47: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bd4e: 00 00 : } : : #ifdef F_SETFD : if (fcntl(conn->sock, F_SETFD, FD_CLOEXEC) == -1) : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : bd50: e8 5b bd ff ff callq 7ab0 <__errno_location@plt> 0.00 : bd55: 48 8b b5 90 da ff ff mov -0x2570(%rbp),%rsi 0.00 : bd5c: 8b 38 mov (%rax),%edi 0.00 : bd5e: ba 00 01 00 00 mov $0x100,%edx 0.00 : bd63: e8 d8 f2 00 00 callq 1b040 0.00 : bd68: 48 8d 35 e9 2d 01 00 lea 0x12de9(%rip),%rsi # 1eb58 <_real_fini+0xe80> 0.00 : bd6f: 48 89 c2 mov %rax,%rdx 0.00 : bd72: e9 4b fc ff ff jmpq b9c2 0.00 : bd77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bd7e: 00 00 : /* : * Now check (using getsockopt) that there is not an error : * state waiting for us on the socket. : */ : : if (getsockopt(conn->sock, SOL_SOCKET, SO_ERROR, 0.00 : bd80: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : bd87: 00 0.00 : bd88: 4c 8b 85 a0 da ff ff mov -0x2560(%rbp),%r8 0.00 : bd8f: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : bd93: ba 04 00 00 00 mov $0x4,%edx 0.00 : bd98: be 01 00 00 00 mov $0x1,%esi : goto error_return; : } : : case CONNECTION_STARTED: : { : ACCEPT_TYPE_ARG3 optlen = sizeof(optval); 0.00 : bd9d: c7 45 c8 04 00 00 00 movl $0x4,-0x38(%rbp) : /* : * Now check (using getsockopt) that there is not an error : * state waiting for us on the socket. : */ : : if (getsockopt(conn->sock, SOL_SOCKET, SO_ERROR, 0.00 : bda4: e8 17 c0 ff ff callq 7dc0 0.00 : bda9: 83 c0 01 add $0x1,%eax 0.00 : bdac: 0f 84 32 07 00 00 je c4e4 : appendPQExpBuffer(&conn->errorMessage, : libpq_gettext("could not get socket error status: %s\n"), : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : goto error_return; : } : else if (optval != 0) 0.00 : bdb2: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : bdb5: 85 f6 test %esi,%esi 0.00 : bdb7: 0f 84 cc 06 00 00 je c489 : /* : * When using a nonblocking connect, we will typically see : * connect failures at this point, so provide a friendly : * error message. : */ : connectFailureMessage(conn, optval); 0.00 : bdbd: 4c 89 e7 mov %r12,%rdi 0.00 : bdc0: e8 6b f0 ff ff callq ae30 : pqDropConnection(conn); 0.00 : bdc5: 4c 89 e7 mov %r12,%rdi 0.00 : bdc8: e8 a3 f8 ff ff callq b670 : : /* : * If more addresses remain, keep trying, just as in the : * case where connect() returned failure immediately. : */ : if (conn->addr_cur->ai_next != NULL) 0.00 : bdcd: 49 8b 84 24 68 02 00 mov 0x268(%r12),%rax 0.00 : bdd4: 00 0.00 : bdd5: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : bdd9: 48 85 c0 test %rax,%rax 0.00 : bddc: 0f 84 9a fa ff ff je b87c : { : conn->addr_cur = conn->addr_cur->ai_next; 0.00 : bde2: 49 89 84 24 68 02 00 mov %rax,0x268(%r12) 0.00 : bde9: 00 : conn->status = CONNECTION_NEEDED; 0.00 : bdea: 41 c7 84 24 00 01 00 movl $0x8,0x100(%r12) 0.00 : bdf1: 00 08 00 00 00 : goto keep_going; 0.00 : bdf6: e9 62 fb ff ff jmpq b95d 0.00 : bdfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Do post-connection housekeeping (only needed in protocol 2.0). : * : * We pretend that the connection is OK for the duration of these : * queries. : */ : conn->status = CONNECTION_OK; 0.00 : be00: 41 c7 84 24 00 01 00 movl $0x0,0x100(%r12) 0.00 : be07: 00 00 00 00 00 : : switch (pqSetenvPoll(conn)) 0.00 : be0c: 4c 89 e7 mov %r12,%rdi 0.00 : be0f: e8 8c aa 00 00 callq 168a0 0.00 : be14: 83 f8 02 cmp $0x2,%eax 0.00 : be17: 0f 84 8b 04 00 00 je c2a8 0.00 : be1d: 83 f8 03 cmp $0x3,%eax 0.00 : be20: 0f 84 9f fc ff ff je bac5 0.00 : be26: 83 e8 01 sub $0x1,%eax 0.00 : be29: 0f 85 4d fa ff ff jne b87c : { : case PGRES_POLLING_OK: /* Success */ : break; : : case PGRES_POLLING_READING: /* Still going */ : conn->status = CONNECTION_SETENV; 0.00 : be2f: 41 c7 84 24 00 01 00 movl $0x6,0x100(%r12) 0.00 : be36: 00 06 00 00 00 0.00 : be3b: b8 01 00 00 00 mov $0x1,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : be40: e9 ad fa ff ff jmpq b8f2 0.00 : be45: 0f 1f 00 nopl (%rax) : * PQgetResult() read the messages. We just have to fake it : * out about the state of the connection, by setting : * asyncStatus = PGASYNC_BUSY (done above). : */ : : if (PQisBusy(conn)) 0.00 : be48: 4c 89 e7 mov %r12,%rdi 0.00 : be4b: e8 30 bf ff ff callq 7d80 0.00 : be50: 85 c0 test %eax,%eax 0.00 : be52: 0f 85 a4 fc ff ff jne bafc : return PGRES_POLLING_READING; : : res = PQgetResult(conn); 0.00 : be58: 4c 89 e7 mov %r12,%rdi 0.00 : be5b: e8 90 be ff ff callq 7cf0 : : /* : * NULL return indicating we have gone to IDLE state is : * expected : */ : if (res) 0.00 : be60: 48 85 c0 test %rax,%rax : */ : : if (PQisBusy(conn)) : return PGRES_POLLING_READING; : : res = PQgetResult(conn); 0.00 : be63: 48 89 c3 mov %rax,%rbx : : /* : * NULL return indicating we have gone to IDLE state is : * expected : */ : if (res) 0.00 : be66: 0f 84 a9 06 00 00 je c515 : { : if (res->resultStatus != PGRES_FATAL_ERROR) 0.00 : be6c: 83 78 28 07 cmpl $0x7,0x28(%rax) 0.00 : be70: 0f 85 5a 06 00 00 jne c4d0 : appendPQExpBufferStr(&conn->errorMessage, : libpq_gettext("unexpected message from server during startup\n")); : else if (conn->send_appname && 0.00 : be76: 41 80 bc 24 80 02 00 cmpb $0x0,0x280(%r12) 0.00 : be7d: 00 00 0.00 : be7f: 0f 84 c8 03 00 00 je c24d 0.00 : be85: 49 83 7c 24 40 00 cmpq $0x0,0x40(%r12) 0.00 : be8b: 0f 84 b0 03 00 00 je c241 : * seems no great harm in that; we'll just get the : * same error again if it's unrelated. : */ : const char *sqlstate; : : sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE); 0.00 : be91: be 43 00 00 00 mov $0x43,%esi 0.00 : be96: 48 89 df mov %rbx,%rdi 0.00 : be99: e8 02 c2 ff ff callq 80a0 : if (sqlstate && 0.00 : be9e: 48 85 c0 test %rax,%rax : * seems no great harm in that; we'll just get the : * same error again if it's unrelated. : */ : const char *sqlstate; : : sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE); 0.00 : bea1: 48 89 c6 mov %rax,%rsi : if (sqlstate && 0.00 : bea4: 0f 84 a3 03 00 00 je c24d : strcmp(sqlstate, ERRCODE_APPNAME_UNKNOWN) == 0) 0.00 : beaa: 48 8d 3d ac 21 01 00 lea 0x121ac(%rip),%rdi # 1e05d <_real_fini+0x385> 0.00 : beb1: b9 06 00 00 00 mov $0x6,%ecx : * same error again if it's unrelated. : */ : const char *sqlstate; : : sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE); : if (sqlstate && 0.00 : beb6: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : beb8: 0f 85 8f 03 00 00 jne c24d : strcmp(sqlstate, ERRCODE_APPNAME_UNKNOWN) == 0) : { : PQclear(res); 0.00 : bebe: 48 89 df mov %rbx,%rdi 0.00 : bec1: e8 fa c1 ff ff callq 80c0 : conn->send_appname = false; 0.00 : bec6: 41 c6 84 24 80 02 00 movb $0x0,0x280(%r12) 0.00 : becd: 00 00 : /* Must drop the old connection */ : pqDropConnection(conn); 0.00 : becf: 4c 89 e7 mov %r12,%rdi 0.00 : bed2: e8 99 f7 ff ff callq b670 : conn->status = CONNECTION_NEEDED; 0.00 : bed7: 41 c7 84 24 00 01 00 movl $0x8,0x100(%r12) 0.00 : bede: 00 08 00 00 00 0.00 : bee3: e9 75 fa ff ff jmpq b95d 0.00 : bee8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : beef: 00 : /* : * Scan the message from current point (note that if we find : * the message is incomplete, we will return without advancing : * inStart, and resume here next time). : */ : conn->inCursor = conn->inStart; 0.00 : bef0: 41 8b 84 24 bc 02 00 mov 0x2bc(%r12),%eax 0.00 : bef7: 00 : : /* Read type byte */ : if (pqGetc(&beresp, conn)) 0.00 : bef8: 48 8b bd a0 da ff ff mov -0x2560(%rbp),%rdi 0.00 : beff: 4c 89 e6 mov %r12,%rsi : /* : * Scan the message from current point (note that if we find : * the message is incomplete, we will return without advancing : * inStart, and resume here next time). : */ : conn->inCursor = conn->inStart; 0.00 : bf02: 41 89 84 24 c0 02 00 mov %eax,0x2c0(%r12) 0.00 : bf09: 00 : : /* Read type byte */ : if (pqGetc(&beresp, conn)) 0.00 : bf0a: e8 f1 58 00 00 callq 11800 0.00 : bf0f: 85 c0 test %eax,%eax 0.00 : bf11: 0f 85 e5 fb ff ff jne bafc : /* : * Validate message type: we expect only an authentication : * request or an error here. Anything else probably means : * it's not Postgres on the other end at all. : */ : if (!(beresp == 'R' || beresp == 'E')) 0.00 : bf17: 0f b6 45 c8 movzbl -0x38(%rbp),%eax 0.00 : bf1b: 3c 52 cmp $0x52,%al 0.00 : bf1d: 0f 84 cd 00 00 00 je bff0 0.00 : bf23: 3c 45 cmp $0x45,%al 0.00 : bf25: 0f 84 c5 00 00 00 je bff0 : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : bf2b: 48 8d 35 46 2e 01 00 lea 0x12e46(%rip),%rsi # 1ed78 <_real_fini+0x10a0> 0.00 : bf32: 0f be d0 movsbl %al,%edx 0.00 : bf35: 4c 89 ef mov %r13,%rdi 0.00 : bf38: 31 c0 xor %eax,%eax 0.00 : bf3a: e8 31 c2 ff ff callq 8170 : libpq_gettext( : "expected authentication request from " : "server, but received %c\n"), : beresp); : goto error_return; 0.00 : bf3f: e9 38 f9 ff ff jmpq b87c 0.00 : bf44: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Implement requirepeer check, if requested and it's a : * Unix-domain socket. : */ : if (conn->requirepeer && conn->requirepeer[0] && 0.00 : bf48: 49 8b 84 24 c0 00 00 mov 0xc0(%r12),%rax 0.00 : bf4f: 00 0.00 : bf50: 48 85 c0 test %rax,%rax 0.00 : bf53: 74 15 je bf6a 0.00 : bf55: 80 38 00 cmpb $0x0,(%rax) 0.00 : bf58: 74 10 je bf6a 0.00 : bf5a: 66 41 83 bc 24 c8 01 cmpw $0x1,0x1c8(%r12) 0.00 : bf61: 00 00 01 0.00 : bf64: 0f 84 2c 04 00 00 je c396 : #endif /* USE_SSL */ : : /* : * Build the startup packet. : */ : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) 0.00 : bf6a: 66 41 83 bc 24 52 02 cmpw $0x2,0x252(%r12) 0.00 : bf71: 00 00 02 0.00 : bf74: 0f 86 9e 01 00 00 jbe c118 : startpacket = pqBuildStartupPacket3(conn, &packetlen, 0.00 : bf7a: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : bf7e: 48 8d 15 7b a4 21 00 lea 0x21a47b(%rip),%rdx # 226400 0.00 : bf85: 4c 89 e7 mov %r12,%rdi 0.00 : bf88: e8 b3 b1 00 00 callq 17140 0.00 : bf8d: 48 89 c3 mov %rax,%rbx : EnvironmentOptions); : else : startpacket = pqBuildStartupPacket2(conn, &packetlen, : EnvironmentOptions); : if (!startpacket) 0.00 : bf90: 48 85 db test %rbx,%rbx 0.00 : bf93: 0f 84 87 03 00 00 je c320 : * Send the startup packet. : * : * Theoretically, this could block, but it really shouldn't : * since we only got here if the socket is write-ready. : */ : if (pqPacketSend(conn, 0, startpacket, packetlen) != STATUS_OK) 0.00 : bf99: 48 63 4d c8 movslq -0x38(%rbp),%rcx 0.00 : bf9d: 31 f6 xor %esi,%esi 0.00 : bf9f: 48 89 da mov %rbx,%rdx 0.00 : bfa2: 4c 89 e7 mov %r12,%rdi 0.00 : bfa5: e8 26 eb ff ff callq aad0 0.00 : bfaa: 85 c0 test %eax,%eax 0.00 : bfac: 0f 84 86 01 00 00 je c138 : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : bfb2: e8 f9 ba ff ff callq 7ab0 <__errno_location@plt> 0.00 : bfb7: 8b 38 mov (%rax),%edi 0.00 : bfb9: 48 8d b5 b0 fe ff ff lea -0x150(%rbp),%rsi 0.00 : bfc0: ba 00 01 00 00 mov $0x100,%edx 0.00 : bfc5: e8 76 f0 00 00 callq 1b040 0.00 : bfca: 48 8d 35 7f 2d 01 00 lea 0x12d7f(%rip),%rsi # 1ed50 <_real_fini+0x1078> 0.00 : bfd1: 48 89 c2 mov %rax,%rdx 0.00 : bfd4: 4c 89 ef mov %r13,%rdi 0.00 : bfd7: 31 c0 xor %eax,%eax 0.00 : bfd9: e8 92 c1 ff ff callq 8170 : libpq_gettext("could not send startup packet: %s\n"), : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : free(startpacket); 0.00 : bfde: 48 89 df mov %rbx,%rdi 0.00 : bfe1: e8 8a ba ff ff callq 7a70 : goto error_return; 0.00 : bfe6: e9 91 f8 ff ff jmpq b87c 0.00 : bfeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : "server, but received %c\n"), : beresp); : goto error_return; : } : : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) 0.00 : bff0: 66 41 83 bc 24 52 02 cmpw $0x2,0x252(%r12) 0.00 : bff7: 00 00 02 0.00 : bffa: 0f 87 60 01 00 00 ja c160 : } : } : else : { : /* Set phony message length to disable checks below */ : msgLength = 8; 0.00 : c000: c7 45 c4 08 00 00 00 movl $0x8,-0x3c(%rbp) : * auth requests may not be that small. Errors can be a : * little larger, but not huge. If we see a large apparent : * length in an error, it means we're really talking to a : * pre-3.0-protocol server; cope. : */ : if (beresp == 'R' && (msgLength < 8 || msgLength > 2000)) 0.00 : c007: 3c 52 cmp $0x52,%al 0.00 : c009: 0f 84 79 01 00 00 je c188 : "server, but received %c\n"), : beresp); : goto error_return; : } : : if (beresp == 'E' && (msgLength < 8 || msgLength > 30000)) 0.00 : c00f: 3c 45 cmp $0x45,%al 0.00 : c011: 0f 84 a1 01 00 00 je c1b8 0.00 : c017: 8b 55 c4 mov -0x3c(%rbp),%edx : * : * (In protocol 2.0 case, we are assuming messages carry at : * least 4 bytes of data.) : */ : msgLength -= 4; : avail = conn->inEnd - conn->inCursor; 0.00 : c01a: 41 8b 8c 24 c0 02 00 mov 0x2c0(%r12),%ecx 0.00 : c021: 00 : if (avail < msgLength) 0.00 : c022: 41 8b 84 24 c4 02 00 mov 0x2c4(%r12),%eax 0.00 : c029: 00 : * Can't process if message body isn't all here yet. : * : * (In protocol 2.0 case, we are assuming messages carry at : * least 4 bytes of data.) : */ : msgLength -= 4; 0.00 : c02a: 83 ea 04 sub $0x4,%edx 0.00 : c02d: 89 55 c4 mov %edx,-0x3c(%rbp) : avail = conn->inEnd - conn->inCursor; : if (avail < msgLength) 0.00 : c030: 29 c8 sub %ecx,%eax 0.00 : c032: 39 c2 cmp %eax,%edx 0.00 : c034: 0f 8f 9d 05 00 00 jg c5d7 : /* We'll come back when there is more data */ : return PGRES_POLLING_READING; : } : : /* Handle errors. */ : if (beresp == 'E') 0.00 : c03a: 80 7d c8 45 cmpb $0x45,-0x38(%rbp) 0.00 : c03e: 0f 84 3f 05 00 00 je c583 : : goto error_return; : } : : /* It is an authentication request. */ : conn->auth_req_received = true; 0.00 : c044: 41 c6 84 24 58 02 00 movb $0x1,0x258(%r12) 0.00 : c04b: 00 01 : : /* Get the type of request. */ : if (pqGetInt((int *) &areq, 4, conn)) 0.00 : c04d: 4c 89 e2 mov %r12,%rdx 0.00 : c050: be 04 00 00 00 mov $0x4,%esi 0.00 : c055: 4c 89 ff mov %r15,%rdi 0.00 : c058: e8 63 61 00 00 callq 121c0 0.00 : c05d: 85 c0 test %eax,%eax 0.00 : c05f: 0f 85 97 fa ff ff jne bafc : /* We'll come back when there are more data */ : return PGRES_POLLING_READING; : } : : /* Get the password salt if there is one. */ : if (areq == AUTH_REQ_MD5) 0.00 : c065: 83 7d c0 05 cmpl $0x5,-0x40(%rbp) 0.00 : c069: 0f 84 14 02 00 00 je c283 : #endif : : /* : * OK, we successfully read the message; mark data consumed : */ : conn->inStart = conn->inCursor; 0.00 : c06f: 41 8b 84 24 c0 02 00 mov 0x2c0(%r12),%eax 0.00 : c076: 00 : /* : * Note that conn->pghost must be non-NULL if we are going to : * avoid the Kerberos code doing a hostname look-up. : */ : : if (pg_fe_sendauth(areq, conn) != STATUS_OK) 0.00 : c077: 8b 7d c0 mov -0x40(%rbp),%edi 0.00 : c07a: 4c 89 e6 mov %r12,%rsi : #endif : : /* : * OK, we successfully read the message; mark data consumed : */ : conn->inStart = conn->inCursor; 0.00 : c07d: 41 89 84 24 bc 02 00 mov %eax,0x2bc(%r12) 0.00 : c084: 00 : /* : * Note that conn->pghost must be non-NULL if we are going to : * avoid the Kerberos code doing a hostname look-up. : */ : : if (pg_fe_sendauth(areq, conn) != STATUS_OK) 0.00 : c085: e8 06 c4 ff ff callq 8490 0.00 : c08a: 85 c0 test %eax,%eax 0.00 : c08c: 0f 85 2b 05 00 00 jne c5bd : { : conn->errorMessage.len = strlen(conn->errorMessage.data); : goto error_return; : } : conn->errorMessage.len = strlen(conn->errorMessage.data); 0.00 : c092: 49 8b bc 24 00 03 00 mov 0x300(%r12),%rdi 0.00 : c099: 00 0.00 : c09a: e8 61 bb ff ff callq 7c00 : /* : * Just make sure that any data sent by pg_fe_sendauth is : * flushed out. Although this theoretically could block, it : * really shouldn't since we don't send large auth responses. : */ : if (pqFlush(conn)) 0.00 : c09f: 4c 89 e7 mov %r12,%rdi : if (pg_fe_sendauth(areq, conn) != STATUS_OK) : { : conn->errorMessage.len = strlen(conn->errorMessage.data); : goto error_return; : } : conn->errorMessage.len = strlen(conn->errorMessage.data); 0.00 : c0a2: 49 89 84 24 08 03 00 mov %rax,0x308(%r12) 0.00 : c0a9: 00 : /* : * Just make sure that any data sent by pg_fe_sendauth is : * flushed out. Although this theoretically could block, it : * really shouldn't since we don't send large auth responses. : */ : if (pqFlush(conn)) 0.00 : c0aa: e8 b1 5c 00 00 callq 11d60 0.00 : c0af: 85 c0 test %eax,%eax 0.00 : c0b1: 0f 85 c5 f7 ff ff jne b87c : goto error_return; : : if (areq == AUTH_REQ_OK) 0.00 : c0b7: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : c0ba: 85 c0 test %eax,%eax 0.00 : c0bc: 0f 85 9b f8 ff ff jne b95d : { : /* We are done with authentication exchange */ : conn->status = CONNECTION_AUTH_OK; 0.00 : c0c2: 41 c7 84 24 00 01 00 movl $0x5,0x100(%r12) 0.00 : c0c9: 00 05 00 00 00 : /* : * Set asyncStatus so that PQgetResult will think that : * what comes back next is the result of a query. See : * below. : */ : conn->asyncStatus = PGASYNC_BUSY; 0.00 : c0ce: 41 c7 84 24 04 01 00 movl $0x1,0x104(%r12) 0.00 : c0d5: 00 01 00 00 00 0.00 : c0da: e9 7e f8 ff ff jmpq b95d 0.00 : c0df: 90 nop : strcmp(PQresultErrorField(conn->result, PG_DIAG_SQLSTATE), : ERRCODE_INVALID_PASSWORD) == 0) : { : char pgpassfile[MAXPGPATH]; : : if (!getPgPassFilename(pgpassfile)) 0.00 : c0e0: 48 8d 9d b0 fa ff ff lea -0x550(%rbp),%rbx 0.00 : c0e7: 48 89 df mov %rbx,%rdi 0.00 : c0ea: e8 31 d7 ff ff callq 9820 0.00 : c0ef: 84 c0 test %al,%al 0.00 : c0f1: 0f 84 c9 f7 ff ff je b8c0 : return; : appendPQExpBuffer(&conn->errorMessage, 0.00 : c0f7: 49 8d bc 24 00 03 00 lea 0x300(%r12),%rdi 0.00 : c0fe: 00 0.00 : c0ff: 48 8d 35 2a 2d 01 00 lea 0x12d2a(%rip),%rsi # 1ee30 <_real_fini+0x1158> 0.00 : c106: 48 89 da mov %rbx,%rdx 0.00 : c109: 31 c0 xor %eax,%eax 0.00 : c10b: e8 60 c0 ff ff callq 8170 0.00 : c110: e9 ab f7 ff ff jmpq b8c0 0.00 : c115: 0f 1f 00 nopl (%rax) : */ : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) : startpacket = pqBuildStartupPacket3(conn, &packetlen, : EnvironmentOptions); : else : startpacket = pqBuildStartupPacket2(conn, &packetlen, 0.00 : c118: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : c11c: 48 8d 15 dd a2 21 00 lea 0x21a2dd(%rip),%rdx # 226400 0.00 : c123: 4c 89 e7 mov %r12,%rdi 0.00 : c126: e8 d5 92 00 00 callq 15400 0.00 : c12b: 48 89 c3 mov %rax,%rbx 0.00 : c12e: e9 5d fe ff ff jmpq bf90 0.00 : c133: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : free(startpacket); : goto error_return; : } : : free(startpacket); 0.00 : c138: 48 89 df mov %rbx,%rdi 0.00 : c13b: e8 30 b9 ff ff callq 7a70 : : conn->status = CONNECTION_AWAITING_RESPONSE; 0.00 : c140: 41 c7 84 24 00 01 00 movl $0x4,0x100(%r12) 0.00 : c147: 00 04 00 00 00 0.00 : c14c: b8 01 00 00 00 mov $0x1,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : c151: e9 9c f7 ff ff jmpq b8f2 0.00 : c156: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : c15d: 00 00 00 : } : : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) : { : /* Read message length word */ : if (pqGetInt(&msgLength, 4, conn)) 0.00 : c160: 48 8d 7d c4 lea -0x3c(%rbp),%rdi 0.00 : c164: 4c 89 e2 mov %r12,%rdx 0.00 : c167: be 04 00 00 00 mov $0x4,%esi 0.00 : c16c: e8 4f 60 00 00 callq 121c0 0.00 : c171: 85 c0 test %eax,%eax 0.00 : c173: 0f 85 83 f9 ff ff jne bafc 0.00 : c179: 0f b6 45 c8 movzbl -0x38(%rbp),%eax 0.00 : c17d: e9 85 fe ff ff jmpq c007 0.00 : c182: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * auth requests may not be that small. Errors can be a : * little larger, but not huge. If we see a large apparent : * length in an error, it means we're really talking to a : * pre-3.0-protocol server; cope. : */ : if (beresp == 'R' && (msgLength < 8 || msgLength > 2000)) 0.00 : c188: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : c18b: 8d 42 f8 lea -0x8(%rdx),%eax 0.00 : c18e: 3d c8 07 00 00 cmp $0x7c8,%eax 0.00 : c193: 0f 86 81 fe ff ff jbe c01a : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : c199: 48 8d 35 d8 2b 01 00 lea 0x12bd8(%rip),%rsi # 1ed78 <_real_fini+0x10a0> 0.00 : c1a0: ba 52 00 00 00 mov $0x52,%edx 0.00 : c1a5: 4c 89 ef mov %r13,%rdi 0.00 : c1a8: 31 c0 xor %eax,%eax 0.00 : c1aa: e8 c1 bf ff ff callq 8170 : libpq_gettext( : "expected authentication request from " : "server, but received %c\n"), : beresp); : goto error_return; 0.00 : c1af: e9 c8 f6 ff ff jmpq b87c 0.00 : c1b4: 0f 1f 40 00 nopl 0x0(%rax) : } : : if (beresp == 'E' && (msgLength < 8 || msgLength > 30000)) 0.00 : c1b8: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : c1bb: 8d 42 f8 lea -0x8(%rdx),%eax 0.00 : c1be: 3d 28 75 00 00 cmp $0x7528,%eax 0.00 : c1c3: 0f 86 51 fe ff ff jbe c01a : { : /* Handle error from a pre-3.0 server */ : conn->inCursor = conn->inStart + 1; /* reread data */ 0.00 : c1c9: 41 8b 84 24 bc 02 00 mov 0x2bc(%r12),%eax 0.00 : c1d0: 00 : if (pqGets_append(&conn->errorMessage, conn)) 0.00 : c1d1: 4c 89 e6 mov %r12,%rsi 0.00 : c1d4: 4c 89 ef mov %r13,%rdi : } : : if (beresp == 'E' && (msgLength < 8 || msgLength > 30000)) : { : /* Handle error from a pre-3.0 server */ : conn->inCursor = conn->inStart + 1; /* reread data */ 0.00 : c1d7: 83 c0 01 add $0x1,%eax 0.00 : c1da: 41 89 84 24 c0 02 00 mov %eax,0x2c0(%r12) 0.00 : c1e1: 00 : if (pqGets_append(&conn->errorMessage, conn)) 0.00 : c1e2: e8 79 64 00 00 callq 12660 0.00 : c1e7: 85 c0 test %eax,%eax 0.00 : c1e9: 0f 85 0d f9 ff ff jne bafc : { : /* We'll come back when there is more data */ : return PGRES_POLLING_READING; : } : /* OK, we read the message; mark data consumed */ : conn->inStart = conn->inCursor; 0.00 : c1ef: 41 8b 84 24 c0 02 00 mov 0x2c0(%r12),%eax 0.00 : c1f6: 00 : : /* : * The postmaster typically won't end its message with a : * newline, so add one to conform to libpq conventions. : */ : appendPQExpBufferChar(&conn->errorMessage, '\n'); 0.00 : c1f7: be 0a 00 00 00 mov $0xa,%esi 0.00 : c1fc: 4c 89 ef mov %r13,%rdi : { : /* We'll come back when there is more data */ : return PGRES_POLLING_READING; : } : /* OK, we read the message; mark data consumed */ : conn->inStart = conn->inCursor; 0.00 : c1ff: 41 89 84 24 bc 02 00 mov %eax,0x2bc(%r12) 0.00 : c206: 00 : : /* : * The postmaster typically won't end its message with a : * newline, so add one to conform to libpq conventions. : */ : appendPQExpBufferChar(&conn->errorMessage, '\n'); 0.00 : c207: e8 a4 be ff ff callq 80b0 : : /* : * If we tried to open the connection in 3.0 protocol, : * fall back to 2.0 protocol. : */ : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) 0.00 : c20c: 66 41 83 bc 24 52 02 cmpw $0x2,0x252(%r12) 0.00 : c213: 00 00 02 0.00 : c216: 0f 86 60 f6 ff ff jbe b87c : { : conn->pversion = PG_PROTOCOL(2, 0); 0.00 : c21c: 41 c7 84 24 50 02 00 movl $0x20000,0x250(%r12) 0.00 : c223: 00 00 00 02 00 : /* Must drop the old connection */ : pqDropConnection(conn); 0.00 : c228: 4c 89 e7 mov %r12,%rdi 0.00 : c22b: e8 40 f4 ff ff callq b670 : conn->status = CONNECTION_NEEDED; 0.00 : c230: 41 c7 84 24 00 01 00 movl $0x8,0x100(%r12) 0.00 : c237: 00 08 00 00 00 : goto keep_going; 0.00 : c23c: e9 1c f7 ff ff jmpq b95d : if (res) : { : if (res->resultStatus != PGRES_FATAL_ERROR) : appendPQExpBufferStr(&conn->errorMessage, : libpq_gettext("unexpected message from server during startup\n")); : else if (conn->send_appname && 0.00 : c241: 49 83 7c 24 48 00 cmpq $0x0,0x48(%r12) 0.00 : c247: 0f 85 44 fc ff ff jne be91 : * if the resultStatus is FATAL, then conn->errorMessage : * already has a copy of the error; needn't copy it back. : * But add a newline if it's not there already, since : * postmaster error messages may not have one. : */ : if (conn->errorMessage.len <= 0 || 0.00 : c24d: 49 8b 94 24 08 03 00 mov 0x308(%r12),%rdx 0.00 : c254: 00 0.00 : c255: 48 85 d2 test %rdx,%rdx 0.00 : c258: 74 0f je c269 0.00 : c25a: 49 8b 84 24 00 03 00 mov 0x300(%r12),%rax 0.00 : c261: 00 0.00 : c262: 80 7c 10 ff 0a cmpb $0xa,-0x1(%rax,%rdx,1) 0.00 : c267: 74 0d je c276 : conn->errorMessage.data[conn->errorMessage.len - 1] != '\n') : appendPQExpBufferChar(&conn->errorMessage, '\n'); 0.00 : c269: be 0a 00 00 00 mov $0xa,%esi 0.00 : c26e: 4c 89 ef mov %r13,%rdi 0.00 : c271: e8 3a be ff ff callq 80b0 : PQclear(res); 0.00 : c276: 48 89 df mov %rbx,%rdi 0.00 : c279: e8 42 be ff ff callq 80c0 : goto error_return; 0.00 : c27e: e9 f9 f5 ff ff jmpq b87c : } : : /* Get the password salt if there is one. */ : if (areq == AUTH_REQ_MD5) : { : if (pqGetnchar(conn->md5Salt, 0.00 : c283: 48 8b bd a8 da ff ff mov -0x2558(%rbp),%rdi 0.00 : c28a: 4c 89 e2 mov %r12,%rdx 0.00 : c28d: be 04 00 00 00 mov $0x4,%esi 0.00 : c292: e8 99 61 00 00 callq 12430 0.00 : c297: 85 c0 test %eax,%eax 0.00 : c299: 0f 84 d0 fd ff ff je c06f 0.00 : c29f: e9 58 f8 ff ff jmpq bafc 0.00 : c2a4: 0f 1f 40 00 nopl 0x0(%rax) : case PGRES_POLLING_READING: /* Still going */ : conn->status = CONNECTION_SETENV; : return PGRES_POLLING_READING; : : case PGRES_POLLING_WRITING: /* Still going */ : conn->status = CONNECTION_SETENV; 0.00 : c2a8: 41 c7 84 24 00 01 00 movl $0x6,0x100(%r12) 0.00 : c2af: 00 06 00 00 00 0.00 : c2b4: b8 02 00 00 00 mov $0x2,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : c2b9: e9 34 f6 ff ff jmpq b8f2 : #ifndef WIN32 : else if (setsockopt(conn->sock, : SOL_SOCKET, SO_KEEPALIVE, : (char *) &on, sizeof(on)) < 0) : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : c2be: e8 ed b7 ff ff callq 7ab0 <__errno_location@plt> 0.00 : c2c3: 48 8b b5 90 da ff ff mov -0x2570(%rbp),%rsi 0.00 : c2ca: 8b 38 mov (%rax),%edi 0.00 : c2cc: ba 00 01 00 00 mov $0x100,%edx 0.00 : c2d1: e8 6a ed 00 00 callq 1b040 0.00 : c2d6: 48 8d 35 ab 28 01 00 lea 0x128ab(%rip),%rsi # 1eb88 <_real_fini+0xeb0> 0.00 : c2dd: 48 89 c2 mov %rax,%rdx 0.00 : c2e0: 4c 89 ef mov %r13,%rdi 0.00 : c2e3: 31 c0 xor %eax,%eax 0.00 : c2e5: e8 86 be ff ff callq 8170 0.00 : c2ea: e9 dd f6 ff ff jmpq b9cc : if (addr_cur->ai_next != NULL) : { : conn->addr_cur = addr_cur->ai_next; : continue; : } : appendPQExpBuffer(&conn->errorMessage, 0.00 : c2ef: e8 bc b7 ff ff callq 7ab0 <__errno_location@plt> 0.00 : c2f4: 8b 38 mov (%rax),%edi 0.00 : c2f6: 48 8d b5 b0 fe ff ff lea -0x150(%rbp),%rsi 0.00 : c2fd: ba 00 01 00 00 mov $0x100,%edx 0.00 : c302: e8 39 ed 00 00 callq 1b040 0.00 : c307: 48 8d 35 32 1d 01 00 lea 0x11d32(%rip),%rsi # 1e040 <_real_fini+0x368> 0.00 : c30e: 48 89 c2 mov %rax,%rdx 0.00 : c311: 4c 89 ef mov %r13,%rdi 0.00 : c314: 31 c0 xor %eax,%eax 0.00 : c316: e8 55 be ff ff callq 8170 : libpq_gettext("could not create socket: %s\n"), : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : break; 0.00 : c31b: e9 5c f5 ff ff jmpq b87c : { : /* : * will not appendbuffer here, since it's likely to also : * run out of memory : */ : printfPQExpBuffer(&conn->errorMessage, 0.00 : c320: 48 8d 35 49 1b 01 00 lea 0x11b49(%rip),%rsi # 1de70 <_real_fini+0x198> 0.00 : c327: 4c 89 ef mov %r13,%rdi 0.00 : c32a: 31 c0 xor %eax,%eax 0.00 : c32c: e8 9f bb ff ff callq 7ed0 : libpq_gettext("out of memory\n")); : goto error_return; 0.00 : c331: e9 46 f5 ff ff jmpq b87c : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPIDLE, : (char *) &idle, sizeof(idle)) < 0) : { : char sebuf[256]; : : appendPQExpBuffer(&conn->errorMessage, 0.00 : c336: e8 75 b7 ff ff callq 7ab0 <__errno_location@plt> 0.00 : c33b: 48 8b b5 98 da ff ff mov -0x2568(%rbp),%rsi 0.00 : c342: 8b 38 mov (%rax),%edi 0.00 : c344: ba 00 01 00 00 mov $0x100,%edx 0.00 : c349: e8 f2 ec 00 00 callq 1b040 0.00 : c34e: 48 8d 35 5b 28 01 00 lea 0x1285b(%rip),%rsi # 1ebb0 <_real_fini+0xed8> 0.00 : c355: 48 89 c2 mov %rax,%rdx 0.00 : c358: 4c 89 ef mov %r13,%rdi 0.00 : c35b: 31 c0 xor %eax,%eax 0.00 : c35d: e8 0e be ff ff callq 8170 0.00 : c362: e9 65 f6 ff ff jmpq b9cc : /* : * Hm, we're connected already --- seems the "nonblock : * connection" wasn't. Advance the state machine and : * go do the next stuff. : */ : conn->status = CONNECTION_STARTED; 0.00 : c367: 41 c7 84 24 00 01 00 movl $0x2,0x100(%r12) 0.00 : c36e: 00 02 00 00 00 : goto keep_going; 0.00 : c373: e9 e5 f5 ff ff jmpq b95d 0.00 : c378: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : c37f: 00 : /* : * This is fine - we're in non-blocking mode, and : * the connection is in progress. Tell caller to : * wait for write-ready on socket. : */ : conn->status = CONNECTION_STARTED; 0.00 : c380: 41 c7 84 24 00 01 00 movl $0x2,0x100(%r12) 0.00 : c387: 00 02 00 00 00 0.00 : c38c: b8 02 00 00 00 mov $0x2,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : c391: e9 5c f5 ff ff jmpq b8f2 : struct passwd pass_buf; : struct passwd *pass; : uid_t uid; : gid_t gid; : : errno = 0; 0.00 : c396: e8 15 b7 ff ff callq 7ab0 <__errno_location@plt> 0.00 : c39b: c7 00 00 00 00 00 movl $0x0,(%rax) : if (getpeereid(conn->sock, &uid, &gid) != 0) 0.00 : c3a1: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : c3a8: 00 0.00 : c3a9: 48 8d 55 c4 lea -0x3c(%rbp),%rdx 0.00 : c3ad: 48 8d 75 c0 lea -0x40(%rbp),%rsi : struct passwd pass_buf; : struct passwd *pass; : uid_t uid; : gid_t gid; : : errno = 0; 0.00 : c3b1: 48 89 c3 mov %rax,%rbx : if (getpeereid(conn->sock, &uid, &gid) != 0) 0.00 : c3b4: e8 e7 ec 00 00 callq 1b0a0 0.00 : c3b9: 85 c0 test %eax,%eax 0.00 : c3bb: 74 66 je c423 : { : /* : * Provide special error message if getpeereid is a : * stub : */ : if (errno == ENOSYS) 0.00 : c3bd: 8b 3b mov (%rbx),%edi 0.00 : c3bf: 83 ff 26 cmp $0x26,%edi 0.00 : c3c2: 0f 84 2d 02 00 00 je c5f5 : appendPQExpBufferStr(&conn->errorMessage, : libpq_gettext("requirepeer parameter is not supported on this platform\n")); : else : appendPQExpBuffer(&conn->errorMessage, 0.00 : c3c8: 48 8d b5 b0 fe ff ff lea -0x150(%rbp),%rsi 0.00 : c3cf: ba 00 01 00 00 mov $0x100,%edx 0.00 : c3d4: e8 67 ec 00 00 callq 1b040 0.00 : c3d9: 48 8d 35 e0 28 01 00 lea 0x128e0(%rip),%rsi # 1ecc0 <_real_fini+0xfe8> 0.00 : c3e0: 48 89 c2 mov %rax,%rdx 0.00 : c3e3: 4c 89 ef mov %r13,%rdi 0.00 : c3e6: 31 c0 xor %eax,%eax 0.00 : c3e8: e8 83 bd ff ff callq 8170 0.00 : c3ed: e9 8a f4 ff ff jmpq b87c : if (setsockopt(conn->sock, IPPROTO_TCP, TCP_KEEPINTVL, : (char *) &interval, sizeof(interval)) < 0) : { : char sebuf[256]; : : appendPQExpBuffer(&conn->errorMessage, 0.00 : c3f2: e8 b9 b6 ff ff callq 7ab0 <__errno_location@plt> 0.00 : c3f7: 48 8b b5 98 da ff ff mov -0x2568(%rbp),%rsi 0.00 : c3fe: 8b 38 mov (%rax),%edi 0.00 : c400: ba 00 01 00 00 mov $0x100,%edx 0.00 : c405: e8 36 ec 00 00 callq 1b040 0.00 : c40a: 48 8d 35 c7 27 01 00 lea 0x127c7(%rip),%rsi # 1ebd8 <_real_fini+0xf00> 0.00 : c411: 48 89 c2 mov %rax,%rdx 0.00 : c414: 4c 89 ef mov %r13,%rdi 0.00 : c417: 31 c0 xor %eax,%eax 0.00 : c419: e8 52 bd ff ff callq 8170 0.00 : c41e: e9 a9 f5 ff ff jmpq b9cc : libpq_gettext("could not get peer credentials: %s\n"), : pqStrerror(errno, sebuf, sizeof(sebuf))); : goto error_return; : } : : pqGetpwuid(uid, &pass_buf, pwdbuf, sizeof(pwdbuf), &pass); 0.00 : c423: 8b 7d c0 mov -0x40(%rbp),%edi 0.00 : c426: 48 8d 95 b0 da ff ff lea -0x2550(%rbp),%rdx 0.00 : c42d: 48 8d b5 b0 fa ff ff lea -0x550(%rbp),%rsi 0.00 : c434: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : c438: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : c43d: e8 de eb 00 00 callq 1b020 : : if (pass == NULL) 0.00 : c442: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : c446: 48 85 c0 test %rax,%rax 0.00 : c449: 0f 84 e8 01 00 00 je c637 : libpq_gettext("local user with ID %d does not exist\n"), : (int) uid); : goto error_return; : } : : if (strcmp(pass->pw_name, conn->requirepeer) != 0) 0.00 : c44f: 4c 8b 30 mov (%rax),%r14 0.00 : c452: 49 8b 9c 24 c0 00 00 mov 0xc0(%r12),%rbx 0.00 : c459: 00 0.00 : c45a: 4c 89 f7 mov %r14,%rdi 0.00 : c45d: 48 89 de mov %rbx,%rsi 0.00 : c460: e8 ab b9 ff ff callq 7e10 0.00 : c465: 85 c0 test %eax,%eax 0.00 : c467: 0f 84 fd fa ff ff je bf6a : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : c46d: 48 8d 35 9c 28 01 00 lea 0x1289c(%rip),%rsi # 1ed10 <_real_fini+0x1038> 0.00 : c474: 4c 89 f1 mov %r14,%rcx 0.00 : c477: 48 89 da mov %rbx,%rdx 0.00 : c47a: 4c 89 ef mov %r13,%rdi 0.00 : c47d: 31 c0 xor %eax,%eax 0.00 : c47f: e8 ec bc ff ff callq 8170 : libpq_gettext("requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n"), : conn->requirepeer, pass->pw_name); : goto error_return; 0.00 : c484: e9 f3 f3 ff ff jmpq b87c : goto error_return; : } : : /* Fill in the client address */ : conn->laddr.salen = sizeof(conn->laddr.addr); : if (getsockname(conn->sock, 0.00 : c489: 41 8b bc 24 38 01 00 mov 0x138(%r12),%edi 0.00 : c490: 00 0.00 : c491: 49 8d b4 24 40 01 00 lea 0x140(%r12),%rsi 0.00 : c498: 00 0.00 : c499: 49 8d 94 24 c0 01 00 lea 0x1c0(%r12),%rdx 0.00 : c4a0: 00 : } : goto error_return; : } : : /* Fill in the client address */ : conn->laddr.salen = sizeof(conn->laddr.addr); 0.00 : c4a1: 41 c7 84 24 c0 01 00 movl $0x80,0x1c0(%r12) 0.00 : c4a8: 00 80 00 00 00 : if (getsockname(conn->sock, 0.00 : c4ad: e8 2e bc ff ff callq 80e0 0.00 : c4b2: 85 c0 test %eax,%eax 0.00 : c4b4: 0f 88 94 01 00 00 js c64e : } : : /* : * Make sure we can write before advancing to next step. : */ : conn->status = CONNECTION_MADE; 0.00 : c4ba: 41 c7 84 24 00 01 00 movl $0x3,0x100(%r12) 0.00 : c4c1: 00 03 00 00 00 0.00 : c4c6: b8 02 00 00 00 mov $0x2,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : c4cb: e9 22 f4 ff ff jmpq b8f2 : * expected : */ : if (res) : { : if (res->resultStatus != PGRES_FATAL_ERROR) : appendPQExpBufferStr(&conn->errorMessage, 0.00 : c4d0: 48 8d 35 e1 28 01 00 lea 0x128e1(%rip),%rsi # 1edb8 <_real_fini+0x10e0> 0.00 : c4d7: 4c 89 ef mov %r13,%rdi 0.00 : c4da: e8 21 bd ff ff callq 8200 0.00 : c4df: e9 69 fd ff ff jmpq c24d : */ : : if (getsockopt(conn->sock, SOL_SOCKET, SO_ERROR, : (char *) &optval, &optlen) == -1) : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : c4e4: e8 c7 b5 ff ff callq 7ab0 <__errno_location@plt> 0.00 : c4e9: 8b 38 mov (%rax),%edi 0.00 : c4eb: 48 8d b5 b0 fe ff ff lea -0x150(%rbp),%rsi 0.00 : c4f2: ba 00 01 00 00 mov $0x100,%edx 0.00 : c4f7: e8 44 eb 00 00 callq 1b040 0.00 : c4fc: 48 8d 35 25 27 01 00 lea 0x12725(%rip),%rsi # 1ec28 <_real_fini+0xf50> 0.00 : c503: 48 89 c2 mov %rax,%rdx 0.00 : c506: 4c 89 ef mov %r13,%rdi 0.00 : c509: 31 c0 xor %eax,%eax 0.00 : c50b: e8 60 bc ff ff callq 8170 : libpq_gettext("could not get socket error status: %s\n"), : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : goto error_return; 0.00 : c510: e9 67 f3 ff ff jmpq b87c : PQclear(res); : goto error_return; : } : : /* We can release the address list now. */ : pg_freeaddrinfo_all(conn->addrlist_family, conn->addrlist); 0.00 : c515: 49 8b b4 24 60 02 00 mov 0x260(%r12),%rsi 0.00 : c51c: 00 0.00 : c51d: 41 8b bc 24 70 02 00 mov 0x270(%r12),%edi 0.00 : c524: 00 0.00 : c525: e8 66 f1 00 00 callq 1b690 : conn->addrlist = NULL; : conn->addr_cur = NULL; : : /* Fire up post-connection housekeeping if needed */ : if (PG_PROTOCOL_MAJOR(conn->pversion) < 3) 0.00 : c52a: 66 41 83 bc 24 52 02 cmpw $0x2,0x252(%r12) 0.00 : c531: 00 00 02 : goto error_return; : } : : /* We can release the address list now. */ : pg_freeaddrinfo_all(conn->addrlist_family, conn->addrlist); : conn->addrlist = NULL; 0.00 : c534: 49 c7 84 24 60 02 00 movq $0x0,0x260(%r12) 0.00 : c53b: 00 00 00 00 00 : conn->addr_cur = NULL; 0.00 : c540: 49 c7 84 24 68 02 00 movq $0x0,0x268(%r12) 0.00 : c547: 00 00 00 00 00 : : /* Fire up post-connection housekeeping if needed */ : if (PG_PROTOCOL_MAJOR(conn->pversion) < 3) 0.00 : c54c: 0f 87 b7 00 00 00 ja c609 : { : conn->status = CONNECTION_SETENV; : conn->setenv_state = SETENV_STATE_CLIENT_ENCODING_SEND; : conn->next_eo = EnvironmentOptions; 0.00 : c552: 48 8d 05 a7 9e 21 00 lea 0x219ea7(%rip),%rax # 226400 : conn->addr_cur = NULL; : : /* Fire up post-connection housekeeping if needed */ : if (PG_PROTOCOL_MAJOR(conn->pversion) < 3) : { : conn->status = CONNECTION_SETENV; 0.00 : c559: 41 c7 84 24 00 01 00 movl $0x6,0x100(%r12) 0.00 : c560: 00 06 00 00 00 : conn->setenv_state = SETENV_STATE_CLIENT_ENCODING_SEND; 0.00 : c565: 41 c7 84 24 74 02 00 movl $0x0,0x274(%r12) 0.00 : c56c: 00 00 00 00 00 : conn->next_eo = EnvironmentOptions; 0.00 : c571: 49 89 84 24 78 02 00 mov %rax,0x278(%r12) 0.00 : c578: 00 0.00 : c579: b8 02 00 00 00 mov $0x2,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : c57e: e9 6f f3 ff ff jmpq b8f2 : } : : /* Handle errors. */ : if (beresp == 'E') : { : if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3) 0.00 : c583: 66 41 83 bc 24 52 02 cmpw $0x2,0x252(%r12) 0.00 : c58a: 00 00 02 0.00 : c58d: 0f 86 8c 00 00 00 jbe c61f : { : if (pqGetErrorNotice3(conn, true)) 0.00 : c593: be 01 00 00 00 mov $0x1,%esi 0.00 : c598: 4c 89 e7 mov %r12,%rdi 0.00 : c59b: e8 e0 b0 00 00 callq 17680 0.00 : c5a0: 85 c0 test %eax,%eax 0.00 : c5a2: 0f 85 54 f5 ff ff jne bafc : /* We'll come back when there is more data */ : return PGRES_POLLING_READING; : } : } : /* OK, we read the message; mark data consumed */ : conn->inStart = conn->inCursor; 0.00 : c5a8: 41 8b 84 24 c0 02 00 mov 0x2c0(%r12),%eax 0.00 : c5af: 00 0.00 : c5b0: 41 89 84 24 bc 02 00 mov %eax,0x2bc(%r12) 0.00 : c5b7: 00 : conn->status = CONNECTION_NEEDED; : goto keep_going; : } : #endif : : goto error_return; 0.00 : c5b8: e9 bf f2 ff ff jmpq b87c : * avoid the Kerberos code doing a hostname look-up. : */ : : if (pg_fe_sendauth(areq, conn) != STATUS_OK) : { : conn->errorMessage.len = strlen(conn->errorMessage.data); 0.00 : c5bd: 49 8b bc 24 00 03 00 mov 0x300(%r12),%rdi 0.00 : c5c4: 00 0.00 : c5c5: e8 36 b6 ff ff callq 7c00 0.00 : c5ca: 49 89 84 24 08 03 00 mov %rax,0x308(%r12) 0.00 : c5d1: 00 : goto error_return; 0.00 : c5d2: e9 a5 f2 ff ff jmpq b87c : /* : * Before returning, try to enlarge the input buffer if : * needed to hold the whole message; see notes in : * pqParseInput3. : */ : if (pqCheckInBufferSpace(conn->inCursor + (size_t) msgLength, 0.00 : c5d7: 48 63 fa movslq %edx,%rdi 0.00 : c5da: 48 63 c1 movslq %ecx,%rax 0.00 : c5dd: 4c 89 e6 mov %r12,%rsi 0.00 : c5e0: 48 01 c7 add %rax,%rdi 0.00 : c5e3: e8 78 52 00 00 callq 11860 0.00 : c5e8: 85 c0 test %eax,%eax 0.00 : c5ea: 0f 85 8c f2 ff ff jne b87c 0.00 : c5f0: e9 07 f5 ff ff jmpq bafc : /* : * Provide special error message if getpeereid is a : * stub : */ : if (errno == ENOSYS) : appendPQExpBufferStr(&conn->errorMessage, 0.00 : c5f5: 48 8d 35 84 26 01 00 lea 0x12684(%rip),%rsi # 1ec80 <_real_fini+0xfa8> 0.00 : c5fc: 4c 89 ef mov %r13,%rdi 0.00 : c5ff: e8 fc bb ff ff callq 8200 0.00 : c604: e9 73 f2 ff ff jmpq b87c : conn->next_eo = EnvironmentOptions; : return PGRES_POLLING_WRITING; : } : : /* Otherwise, we are open for business! */ : conn->status = CONNECTION_OK; 0.00 : c609: 41 c7 84 24 00 01 00 movl $0x0,0x100(%r12) 0.00 : c610: 00 00 00 00 00 0.00 : c615: b8 03 00 00 00 mov $0x3,%eax : * when PQfinish is called (which is compulsory even after an error, since : * the connection structure must be freed). : */ : conn->status = CONNECTION_BAD; : return PGRES_POLLING_FAILED; : } 0.00 : c61a: e9 d3 f2 ff ff jmpq b8f2 : return PGRES_POLLING_READING; : } : } : else : { : if (pqGets_append(&conn->errorMessage, conn)) 0.00 : c61f: 4c 89 e6 mov %r12,%rsi 0.00 : c622: 4c 89 ef mov %r13,%rdi 0.00 : c625: e8 36 60 00 00 callq 12660 0.00 : c62a: 85 c0 test %eax,%eax 0.00 : c62c: 0f 84 76 ff ff ff je c5a8 0.00 : c632: e9 c5 f4 ff ff jmpq bafc : : pqGetpwuid(uid, &pass_buf, pwdbuf, sizeof(pwdbuf), &pass); : : if (pass == NULL) : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : c637: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : c63a: 48 8d 35 a7 26 01 00 lea 0x126a7(%rip),%rsi # 1ece8 <_real_fini+0x1010> 0.00 : c641: 4c 89 ef mov %r13,%rdi 0.00 : c644: e8 27 bb ff ff callq 8170 : libpq_gettext("local user with ID %d does not exist\n"), : (int) uid); : goto error_return; 0.00 : c649: e9 2e f2 ff ff jmpq b87c : conn->laddr.salen = sizeof(conn->laddr.addr); : if (getsockname(conn->sock, : (struct sockaddr *) & conn->laddr.addr, : &conn->laddr.salen) < 0) : { : appendPQExpBuffer(&conn->errorMessage, 0.00 : c64e: e8 5d b4 ff ff callq 7ab0 <__errno_location@plt> 0.00 : c653: 8b 38 mov (%rax),%edi 0.00 : c655: 48 8d b5 b0 fe ff ff lea -0x150(%rbp),%rsi 0.00 : c65c: ba 00 01 00 00 mov $0x100,%edx 0.00 : c661: e8 da e9 00 00 callq 1b040 0.00 : c666: 48 8d 35 e3 25 01 00 lea 0x125e3(%rip),%rsi # 1ec50 <_real_fini+0xf78> 0.00 : c66d: 48 89 c2 mov %rax,%rdx 0.00 : c670: 4c 89 ef mov %r13,%rdi 0.00 : c673: 31 c0 xor %eax,%eax 0.00 : c675: e8 f6 ba ff ff callq 8170 : libpq_gettext("could not get client address from socket: %s\n"), : SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); : goto error_return; 0.00 : c67a: e9 fd f1 ff ff jmpq b87c Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000011510 : : * The user is responsible for freeing the PGresult via PQclear() : * when done with it. : */ : PGresult * : PQexec(PGconn *conn, const char *query) : { 0.00 : 11510: 55 push %rbp 100.00 : 11511: 48 89 e5 mov %rsp,%rbp 0.00 : 11514: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 11518: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 1151c: 48 83 ec 10 sub $0x10,%rsp 0.00 : 11520: 48 89 fb mov %rdi,%rbx 0.00 : 11523: 49 89 f4 mov %rsi,%r12 : if (!PQexecStart(conn)) 0.00 : 11526: e8 85 fb ff ff callq 110b0 0.00 : 1152b: 84 c0 test %al,%al 0.00 : 1152d: 75 11 jne 11540 : return NULL; : if (!PQsendQuery(conn, query)) : return NULL; : return PQexecFinish(conn); : } 0.00 : 1152f: 31 c0 xor %eax,%eax 0.00 : 11531: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 11535: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 1153a: c9 leaveq 0.00 : 1153b: c3 retq 0.00 : 1153c: 0f 1f 40 00 nopl 0x0(%rax) : PGresult * : PQexec(PGconn *conn, const char *query) : { : if (!PQexecStart(conn)) : return NULL; : if (!PQsendQuery(conn, query)) 0.00 : 11540: 4c 89 e6 mov %r12,%rsi 0.00 : 11543: 48 89 df mov %rbx,%rdi 0.00 : 11546: e8 85 65 ff ff callq 7ad0 0.00 : 1154b: 85 c0 test %eax,%eax 0.00 : 1154d: 74 e0 je 1152f : return NULL; : return PQexecFinish(conn); 0.00 : 1154f: 48 89 df mov %rbx,%rdi : } 0.00 : 11552: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 11557: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 1155b: c9 leaveq : { : if (!PQexecStart(conn)) : return NULL; : if (!PQsendQuery(conn, query)) : return NULL; : return PQexecFinish(conn); 0.00 : 1155c: e9 4f fc ff ff jmpq 111b0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001e940 <_init>: 0.00 : 1e940: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 1e945: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 1e94a: 48 89 d5 mov %rdx,%rbp 0.00 : 1e94d: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 1e952: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 1e957: 48 83 ec 48 sub $0x48,%rsp 0.00 : 1e95b: 48 8b 05 be 35 35 00 mov 0x3535be(%rip),%rax # 371f20 <_DYNAMIC+0x3c0> 0.00 : 1e962: 41 89 fd mov %edi,%r13d 0.00 : 1e965: 49 89 f4 mov %rsi,%r12 0.00 : 1e968: 48 85 c0 test %rax,%rax 0.00 : 1e96b: 0f 85 c4 01 00 00 jne 1eb35 <_init+0x1f5> 0.00 : 1e971: 48 8b 05 18 36 35 00 mov 0x353618(%rip),%rax # 371f90 <_DYNAMIC+0x430> 0.00 : 1e978: c7 05 de 36 35 00 00 movl $0x0,0x3536de(%rip) # 372060 <__libc_multiple_libcs> 0.00 : 1e97f: 00 00 00 0.00 : 1e982: 0f b7 10 movzwl (%rax),%edx 0.00 : 1e985: 48 8b 05 a4 34 35 00 mov 0x3534a4(%rip),%rax # 371e30 <_DYNAMIC+0x2d0> 0.00 : 1e98c: 66 39 50 4c cmp %dx,0x4c(%rax) 0.00 : 1e990: 75 5e jne 1e9f0 <_init+0xb0> 0.00 : 1e992: 48 8b 05 df 34 35 00 mov 0x3534df(%rip),%rax # 371e78 <_DYNAMIC+0x318> 0.00 : 1e999: 44 89 2d a0 88 35 00 mov %r13d,0x3588a0(%rip) # 377240 <__libc_argc> 0.00 : 1e9a0: 4c 89 25 91 88 35 00 mov %r12,0x358891(%rip) # 377238 <__libc_argv> 0.00 : 1e9a7: c7 44 24 0c 01 00 00 movl $0x1,0xc(%rsp) 0.00 : 1e9ae: 00 0.00 : 1e9af: c7 44 24 08 f6 75 ae movl $0x3ae75f6,0x8(%rsp) 0.00 : 1e9b6: 03 0.00 : 1e9b7: 48 89 28 mov %rbp,(%rax) 0.00 : 1e9ba: 48 8d 05 c7 ba 11 00 lea 0x11bac7(%rip),%rax # 13a488 0.00 : 1e9c1: 48 89 04 24 mov %rax,(%rsp) 0.00 : 1e9c5: 0f b6 05 bd ba 11 00 movzbl 0x11babd(%rip),%eax # 13a489 0.00 : 1e9cc: 84 c0 test %al,%al 0.00 : 1e9ce: 75 30 jne 1ea00 <_init+0xc0> 0.00 : 1e9d0: 48 8d 0d 49 3c 12 00 lea 0x123c49(%rip),%rcx # 142620 <__PRETTY_FUNCTION__.10285> 0.00 : 1e9d7: 48 8d 35 0a f0 11 00 lea 0x11f00a(%rip),%rsi # 13d9e8 <__PRETTY_FUNCTION__.11129+0xf> 0.00 : 1e9de: 48 8d 3d 33 f0 11 00 lea 0x11f033(%rip),%rdi # 13da18 <__PRETTY_FUNCTION__.11129+0x3f> 0.00 : 1e9e5: ba 21 00 00 00 mov $0x21,%edx 0.00 : 1e9ea: e8 31 cf 00 00 callq 2b920 <__assert_fail> 0.00 : 1e9ef: 90 nop 0.00 : 1e9f0: 0f b7 fa movzwl %dx,%edi 0.00 : 1e9f3: e8 a8 3e 01 00 callq 328a0 <__setfpucw> 0.00 : 1e9f8: eb 98 jmp 1e992 <_init+0x52> 0.00 : 1e9fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) ??:0 100.00 : 1ea00: 0f b6 c0 movzbl %al,%eax 0.00 : 1ea03: 48 8d 88 c0 04 00 00 lea 0x4c0(%rax),%rcx 0.00 : 1ea0a: 0f b6 05 79 ba 11 00 movzbl 0x11ba79(%rip),%eax # 13a48a 0.00 : 1ea11: 84 c0 test %al,%al 0.00 : 1ea13: 0f 84 87 00 00 00 je 1eaa0 <_init+0x160> 0.00 : 1ea19: 48 89 ca mov %rcx,%rdx 0.00 : 1ea1c: 0f b6 c0 movzbl %al,%eax 0.00 : 1ea1f: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 1ea23: 48 8d 0c 02 lea (%rdx,%rax,1),%rcx 0.00 : 1ea27: 0f b6 05 5d ba 11 00 movzbl 0x11ba5d(%rip),%eax # 13a48b 0.00 : 1ea2e: 84 c0 test %al,%al 0.00 : 1ea30: 74 6e je 1eaa0 <_init+0x160> 0.00 : 1ea32: 48 89 ca mov %rcx,%rdx 0.00 : 1ea35: 0f b6 c0 movzbl %al,%eax 0.00 : 1ea38: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 1ea3c: 48 8d 0c 02 lea (%rdx,%rax,1),%rcx 0.00 : 1ea40: 0f b6 05 45 ba 11 00 movzbl 0x11ba45(%rip),%eax # 13a48c 0.00 : 1ea47: 84 c0 test %al,%al 0.00 : 1ea49: 74 55 je 1eaa0 <_init+0x160> 0.00 : 1ea4b: 48 89 ca mov %rcx,%rdx 0.00 : 1ea4e: 0f b6 c0 movzbl %al,%eax 0.00 : 1ea51: 48 8d 35 35 ba 11 00 lea 0x11ba35(%rip),%rsi # 13a48d 0.00 : 1ea58: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 1ea5c: 48 8d 0c 02 lea (%rdx,%rax,1),%rcx 0.00 : 1ea60: 0f b6 05 26 ba 11 00 movzbl 0x11ba26(%rip),%eax # 13a48d 0.00 : 1ea67: 84 c0 test %al,%al 0.00 : 1ea69: 74 35 je 1eaa0 <_init+0x160> 0.00 : 1ea6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1ea70: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 1ea74: 0f b6 d0 movzbl %al,%edx 0.00 : 1ea77: 48 83 c6 01 add $0x1,%rsi 0.00 : 1ea7b: 48 01 ca add %rcx,%rdx 0.00 : 1ea7e: 48 89 d0 mov %rdx,%rax 0.00 : 1ea81: 25 00 00 00 f0 and $0xf0000000,%eax 0.00 : 1ea86: 48 89 c1 mov %rax,%rcx 0.00 : 1ea89: 48 c1 e8 18 shr $0x18,%rax 0.00 : 1ea8d: 48 31 d1 xor %rdx,%rcx 0.00 : 1ea90: 48 31 c1 xor %rax,%rcx 0.00 : 1ea93: 0f b6 06 movzbl (%rsi),%eax 0.00 : 1ea96: 84 c0 test %al,%al 0.00 : 1ea98: 75 d6 jne 1ea70 <_init+0x130> 0.00 : 1ea9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1eaa0: 81 f9 f6 75 ae 03 cmp $0x3ae75f6,%ecx 0.00 : 1eaa6: 0f 85 24 ff ff ff jne 1e9d0 <_init+0x90> 0.00 : 1eaac: 48 8d 3d df b9 11 00 lea 0x11b9df(%rip),%rdi # 13a492 0.00 : 1eab3: 48 89 e6 mov %rsp,%rsi 0.00 : 1eab6: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 1eabd: 00 00 0.00 : 1eabf: e8 8c 4b 0f 00 callq 113650 <_dl_vdso_vsym> 0.00 : 1eac4: 48 8d 3d d4 b9 11 00 lea 0x11b9d4(%rip),%rdi # 13a49f 0.00 : 1eacb: 48 85 c0 test %rax,%rax 0.00 : 1eace: 48 c7 c2 00 00 60 ff mov $0xffffffffff600000,%rdx 0.00 : 1ead5: 48 89 e6 mov %rsp,%rsi 0.00 : 1ead8: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 1eadc: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 1eae3: 00 00 0.00 : 1eae5: 48 c1 c0 11 rol $0x11,%rax 0.00 : 1eae9: 48 89 05 58 87 35 00 mov %rax,0x358758(%rip) # 377248 <__vdso_gettimeofday> 0.00 : 1eaf0: e8 5b 4b 0f 00 callq 113650 <_dl_vdso_vsym> 0.00 : 1eaf5: 48 89 ea mov %rbp,%rdx 0.00 : 1eaf8: 4c 89 e6 mov %r12,%rsi 0.00 : 1eafb: 44 89 ef mov %r13d,%edi 0.00 : 1eafe: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 1eb05: 00 00 0.00 : 1eb07: 48 c1 c0 11 rol $0x11,%rax 0.00 : 1eb0b: 48 89 05 6e 44 35 00 mov %rax,0x35446e(%rip) # 372f80 <__vdso_clock_gettime> 0.00 : 1eb12: e8 d9 c3 0b 00 callq daef0 <__init_misc> 0.00 : 1eb17: e8 a4 fd ff ff callq 1e8c0 <__libc_global_ctors> 0.00 : 1eb1c: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 1eb21: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp 0.00 : 1eb26: 4c 8b 64 24 38 mov 0x38(%rsp),%r12 0.00 : 1eb2b: 4c 8b 6c 24 40 mov 0x40(%rsp),%r13 0.00 : 1eb30: 48 83 c4 48 add $0x48,%rsp 0.00 : 1eb34: c3 retq 0.00 : 1eb35: 8b 00 mov (%rax),%eax 0.00 : 1eb37: 85 c0 test %eax,%eax 0.00 : 1eb39: 0f 85 32 fe ff ff jne 1e971 <_init+0x31> 0.00 : 1eb3f: c7 05 17 35 35 00 01 movl $0x1,0x353517(%rip) # 372060 <__libc_multiple_libcs> 0.00 : 1eb46: 00 00 00 0.00 : 1eb49: e9 44 fe ff ff jmpq 1e992 <_init+0x52> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000286d0 <__gconv_lookup_cache>: 0.00 : 286d0: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 286d5: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 286da: 48 89 f0 mov %rsi,%rax 0.00 : 286dd: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 286e2: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 286e7: 49 89 fd mov %rdi,%r13 0.00 : 286ea: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 286ef: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 286f4: 48 83 ec 78 sub $0x78,%rsp 0.00 : 286f8: 48 8b 2d c1 a8 34 00 mov 0x34a8c1(%rip),%rbp # 372fc0 0.00 : 286ff: 48 89 54 24 20 mov %rdx,0x20(%rsp) 0.00 : 28704: 45 89 c6 mov %r8d,%r14d 0.00 : 28707: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 2870c: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 28711: 48 85 ed test %rbp,%rbp 0.00 : 28714: 74 3f je 28755 <__gconv_lookup_cache+0x85> 0.00 : 28716: 0f b7 55 0a movzwl 0xa(%rbp),%edx 0.00 : 2871a: 48 8d 74 24 40 lea 0x40(%rsp),%rsi 0.00 : 2871f: 48 89 c7 mov %rax,%rdi 0.00 : 28722: 44 0f b7 7d 04 movzwl 0x4(%rbp),%r15d 0.00 : 28727: 66 89 54 24 2e mov %dx,0x2e(%rsp) 0.00 : 2872c: e8 ff fc ff ff callq 28430 0.00 : 28731: 85 c0 test %eax,%eax 0.00 : 28733: 75 1b jne 28750 <__gconv_lookup_cache+0x80> 0.00 : 28735: 4c 8b 64 24 40 mov 0x40(%rsp),%r12 0.00 : 2873a: 0f b7 55 0a movzwl 0xa(%rbp),%edx 0.00 : 2873e: 4b 8d 44 64 03 lea 0x3(%r12,%r12,2),%rax 0.00 : 28743: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 28747: 48 3b 05 7a a8 34 00 cmp 0x34a87a(%rip),%rax # 372fc8 0.00 : 2874e: 76 30 jbe 28780 <__gconv_lookup_cache+0xb0> 0.00 : 28750: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 28755: 89 d8 mov %ebx,%eax 0.00 : 28757: 48 8b 6c 24 50 mov 0x50(%rsp),%rbp 0.00 : 2875c: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 28761: 4c 8b 64 24 58 mov 0x58(%rsp),%r12 0.00 : 28766: 4c 8b 6c 24 60 mov 0x60(%rsp),%r13 0.00 : 2876b: 4c 8b 74 24 68 mov 0x68(%rsp),%r14 0.00 : 28770: 4c 8b 7c 24 70 mov 0x70(%rsp),%r15 0.00 : 28775: 48 83 c4 78 add $0x78,%rsp 0.00 : 28779: c3 retq 0.00 : 2877a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 28780: 48 8d 74 24 38 lea 0x38(%rsp),%rsi 0.00 : 28785: 4c 89 ef mov %r13,%rdi 0.00 : 28788: e8 a3 fc ff ff callq 28430 0.00 : 2878d: 85 c0 test %eax,%eax 0.00 : 2878f: 75 bf jne 28750 <__gconv_lookup_cache+0x80> 0.00 : 28791: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 28796: 0f b7 55 0a movzwl 0xa(%rbp),%edx 0.00 : 2879a: 48 8d 44 49 03 lea 0x3(%rcx,%rcx,2),%rax 0.00 : 2879f: 49 89 c8 mov %rcx,%r8 0.00 : 287a2: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 287a6: 48 3b 05 1b a8 34 00 cmp 0x34a81b(%rip),%rax # 372fc8 0.00 : 287ad: 77 a1 ja 28750 <__gconv_lookup_cache+0x80> 0.00 : 287af: 41 83 e6 01 and $0x1,%r14d 0.00 : 287b3: 0f 85 41 03 00 00 jne 28afa <__gconv_lookup_cache+0x42a> 0.00 : 287b9: 41 0f b7 c7 movzwl %r15w,%eax 0.00 : 287bd: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : 287c2: 4c 8d 74 05 00 lea 0x0(%rbp,%rax,1),%r14 0.00 : 287c7: 0f b7 44 24 2e movzwl 0x2e(%rsp),%eax 0.00 : 287cc: 48 85 f6 test %rsi,%rsi 0.00 : 287cf: 48 8d 5c 05 00 lea 0x0(%rbp,%rax,1),%rbx 0.00 : 287d4: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 287d8: 4c 8d 2c 83 lea (%rbx,%rax,4),%r13 0.00 : 287dc: 74 1a je 287f8 <__gconv_lookup_cache+0x128> 0.00 : 287de: 48 85 c9 test %rcx,%rcx 0.00 : 287e1: 0f 85 90 01 00 00 jne 28977 <__gconv_lookup_cache+0x2a7> 0.00 : 287e7: 66 41 83 7d 04 00 cmpw $0x0,0x4(%r13) ??:0 100.00 : 287ed: 0f 84 5d ff ff ff je 28750 <__gconv_lookup_cache+0x80> 0.00 : 287f3: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 287f8: 4b 8d 04 40 lea (%r8,%r8,2),%rax 0.00 : 287fc: 48 85 c9 test %rcx,%rcx 0.00 : 287ff: 4c 8d 24 83 lea (%rbx,%rax,4),%r12 0.00 : 28803: 0f 85 24 01 00 00 jne 2892d <__gconv_lookup_cache+0x25d> 0.00 : 28809: 48 85 f6 test %rsi,%rsi 0.00 : 2880c: 75 09 jne 28817 <__gconv_lookup_cache+0x147> 0.00 : 2880e: 48 85 c9 test %rcx,%rcx 0.00 : 28811: 0f 84 39 ff ff ff je 28750 <__gconv_lookup_cache+0x80> 0.00 : 28817: bf d0 00 00 00 mov $0xd0,%edi 0.00 : 2881c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 28820: e8 2b 60 ff ff callq 1e850 0.00 : 28825: 48 85 c0 test %rax,%rax 0.00 : 28828: 48 89 c5 mov %rax,%rbp 0.00 : 2882b: 0f 84 bf 02 00 00 je 28af0 <__gconv_lookup_cache+0x420> 0.00 : 28831: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 28836: 48 89 02 mov %rax,(%rdx) 0.00 : 28839: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 2883e: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 28845: 48 83 7c 24 40 00 cmpq $0x0,0x40(%rsp) 0.00 : 2884b: 74 5d je 288aa <__gconv_lookup_cache+0x1da> 0.00 : 2884d: 41 0f b7 45 00 movzwl 0x0(%r13),%eax 0.00 : 28852: 48 8d 15 16 1e 11 00 lea 0x111e16(%rip),%rdx # 13a66f <__PRETTY_FUNCTION__.10885+0xf3> 0.00 : 28859: c7 45 10 01 00 00 00 movl $0x1,0x10(%rbp) 0.00 : 28860: 48 c7 45 60 00 00 00 movq $0x0,0x60(%rbp) 0.00 : 28867: 00 0.00 : 28868: 48 89 55 20 mov %rdx,0x20(%rbp) 0.00 : 2886c: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 28870: 48 89 45 18 mov %rax,0x18(%rbp) 0.00 : 28874: 41 0f b7 45 06 movzwl 0x6(%r13),%eax 0.00 : 28879: 49 8d 3c 06 lea (%r14,%rax,1),%rdi 0.00 : 2887d: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 28880: 0f 84 db 00 00 00 je 28961 <__gconv_lookup_cache+0x291> 0.00 : 28886: 41 0f b7 75 08 movzwl 0x8(%r13),%esi 0.00 : 2888b: 48 89 ea mov %rbp,%rdx 0.00 : 2888e: 49 8d 34 36 lea (%r14,%rsi,1),%rsi 0.00 : 28892: e8 29 fd ff ff callq 285c0 0.00 : 28897: 85 c0 test %eax,%eax 0.00 : 28899: 89 c3 mov %eax,%ebx 0.00 : 2889b: 0f 85 7c 02 00 00 jne 28b1d <__gconv_lookup_cache+0x44d> 0.00 : 288a1: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 288a6: 48 83 00 01 addq $0x1,(%rax) 0.00 : 288aa: 48 83 7c 24 38 00 cmpq $0x0,0x38(%rsp) 0.00 : 288b0: 0f 84 8a 00 00 00 je 28940 <__gconv_lookup_cache+0x270> 0.00 : 288b6: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 288bb: 44 8b 2a mov (%rdx),%r13d 0.00 : 288be: 49 63 c5 movslq %r13d,%rax 0.00 : 288c1: 48 8d 14 40 lea (%rax,%rax,2),%rdx 0.00 : 288c5: 48 8d 14 90 lea (%rax,%rdx,4),%rdx 0.00 : 288c9: 48 8d 05 9f 1d 11 00 lea 0x111d9f(%rip),%rax # 13a66f <__PRETTY_FUNCTION__.10885+0xf3> 0.00 : 288d0: 48 8d 54 d5 00 lea 0x0(%rbp,%rdx,8),%rdx 0.00 : 288d5: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 288d9: 41 0f b7 04 24 movzwl (%r12),%eax 0.00 : 288de: c7 42 10 01 00 00 00 movl $0x1,0x10(%rdx) 0.00 : 288e5: 48 c7 42 60 00 00 00 movq $0x0,0x60(%rdx) 0.00 : 288ec: 00 0.00 : 288ed: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 288f1: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 288f5: 41 0f b7 44 24 02 movzwl 0x2(%r12),%eax 0.00 : 288fb: 49 8d 3c 06 lea (%r14,%rax,1),%rdi 0.00 : 288ff: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 28902: 74 49 je 2894d <__gconv_lookup_cache+0x27d> 0.00 : 28904: 41 0f b7 74 24 04 movzwl 0x4(%r12),%esi 0.00 : 2890a: 49 8d 34 36 lea (%r14,%rsi,1),%rsi 0.00 : 2890e: e8 ad fc ff ff callq 285c0 0.00 : 28913: 85 c0 test %eax,%eax 0.00 : 28915: 89 c3 mov %eax,%ebx 0.00 : 28917: 0f 85 f2 01 00 00 jne 28b0f <__gconv_lookup_cache+0x43f> 0.00 : 2891d: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 28922: 31 db xor %ebx,%ebx 0.00 : 28924: 48 83 02 01 addq $0x1,(%rdx) 0.00 : 28928: e9 28 fe ff ff jmpq 28755 <__gconv_lookup_cache+0x85> 0.00 : 2892d: 66 41 83 7c 24 08 00 cmpw $0x0,0x8(%r12) 0.00 : 28934: 0f 85 cf fe ff ff jne 28809 <__gconv_lookup_cache+0x139> 0.00 : 2893a: e9 11 fe ff ff jmpq 28750 <__gconv_lookup_cache+0x80> 0.00 : 2893f: 90 nop 0.00 : 28940: 31 db xor %ebx,%ebx 0.00 : 28942: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 28948: e9 08 fe ff ff jmpq 28755 <__gconv_lookup_cache+0x85> 0.00 : 2894d: 41 0f b7 7c 24 04 movzwl 0x4(%r12),%edi 0.00 : 28953: 48 89 d6 mov %rdx,%rsi 0.00 : 28956: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 2895a: e8 b1 96 ff ff callq 22010 <__gconv_get_builtin_trans> 0.00 : 2895f: eb bc jmp 2891d <__gconv_lookup_cache+0x24d> 0.00 : 28961: 41 0f b7 7d 08 movzwl 0x8(%r13),%edi 0.00 : 28966: 48 89 ee mov %rbp,%rsi 0.00 : 28969: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 2896d: e8 9e 96 ff ff callq 22010 <__gconv_get_builtin_trans> 0.00 : 28972: e9 2a ff ff ff jmpq 288a1 <__gconv_lookup_cache+0x1d1> 0.00 : 28977: 41 0f b7 45 0a movzwl 0xa(%r13),%eax 0.00 : 2897c: 66 85 c0 test %ax,%ax 0.00 : 2897f: 0f 84 62 fe ff ff je 287e7 <__gconv_lookup_cache+0x117> 0.00 : 28985: 0f b7 55 0c movzwl 0xc(%rbp),%edx 0.00 : 28989: 0f b7 c0 movzwl %ax,%eax 0.00 : 2898c: 4c 8d 64 02 ff lea -0x1(%rdx,%rax,1),%r12 0.00 : 28991: 4c 03 25 28 a6 34 00 add 0x34a628(%rip),%r12 # 372fc0 0.00 : 28998: 41 0f b7 14 24 movzwl (%r12),%edx 0.00 : 2899d: 66 85 d2 test %dx,%dx 0.00 : 289a0: 75 28 jne 289ca <__gconv_lookup_cache+0x2fa> 0.00 : 289a2: e9 40 fe ff ff jmpq 287e7 <__gconv_lookup_cache+0x117> 0.00 : 289a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 289ae: 00 00 0.00 : 289b0: 0f b7 c2 movzwl %dx,%eax 0.00 : 289b3: 48 8d 44 40 01 lea 0x1(%rax,%rax,2),%rax 0.00 : 289b8: 4d 8d 24 44 lea (%r12,%rax,2),%r12 0.00 : 289bc: 41 0f b7 14 24 movzwl (%r12),%edx 0.00 : 289c1: 66 85 d2 test %dx,%dx 0.00 : 289c4: 0f 84 1d fe ff ff je 287e7 <__gconv_lookup_cache+0x117> 0.00 : 289ca: 0f b7 c2 movzwl %dx,%eax 0.00 : 289cd: 83 e8 01 sub $0x1,%eax 0.00 : 289d0: 48 98 cltq 0.00 : 289d2: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 289d6: 41 0f b7 44 44 02 movzwl 0x2(%r12,%rax,2),%eax 0.00 : 289dc: 48 39 c1 cmp %rax,%rcx 0.00 : 289df: 75 cf jne 289b0 <__gconv_lookup_cache+0x2e0> 0.00 : 289e1: 0f b7 c2 movzwl %dx,%eax 0.00 : 289e4: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 289e9: 48 89 02 mov %rax,(%rdx) 0.00 : 289ec: 41 0f b7 04 24 movzwl (%r12),%eax 0.00 : 289f1: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 289f6: 48 8d 3c 40 lea (%rax,%rax,2),%rdi 0.00 : 289fa: 48 8d 3c b8 lea (%rax,%rdi,4),%rdi 0.00 : 289fe: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 28a02: e8 49 5e ff ff callq 1e850 0.00 : 28a07: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 28a0c: 48 85 c0 test %rax,%rax 0.00 : 28a0f: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 28a14: 48 89 02 mov %rax,(%rdx) 0.00 : 28a17: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 28a1c: 0f 84 ce 00 00 00 je 28af0 <__gconv_lookup_cache+0x420> 0.00 : 28a22: 41 0f b7 45 00 movzwl 0x0(%r13),%eax 0.00 : 28a27: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 28a2c: 45 31 ff xor %r15d,%r15d 0.00 : 28a2f: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 28a33: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 28a38: eb 40 jmp 28a7a <__gconv_lookup_cache+0x3aa> 0.00 : 28a3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 28a40: 42 0f b7 74 22 06 movzwl 0x6(%rdx,%r12,1),%esi 0.00 : 28a46: 48 89 ea mov %rbp,%rdx 0.00 : 28a49: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 28a4e: 49 8d 34 36 lea (%r14,%rsi,1),%rsi 0.00 : 28a52: e8 69 fb ff ff callq 285c0 0.00 : 28a57: 85 c0 test %eax,%eax 0.00 : 28a59: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 28a5e: 0f 85 c6 00 00 00 jne 28b2a <__gconv_lookup_cache+0x45a> 0.00 : 28a64: 41 0f b7 04 24 movzwl (%r12),%eax 0.00 : 28a69: 41 83 c7 01 add $0x1,%r15d 0.00 : 28a6d: 48 83 c5 68 add $0x68,%rbp 0.00 : 28a71: 41 39 c7 cmp %eax,%r15d 0.00 : 28a74: 0f 8d c6 fe ff ff jge 28940 <__gconv_lookup_cache+0x270> 0.00 : 28a7a: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 28a7f: 48 89 45 18 mov %rax,0x18(%rbp) 0.00 : 28a83: 49 63 c7 movslq %r15d,%rax 0.00 : 28a86: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 28a8a: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : 28a8e: 42 0f b7 44 22 02 movzwl 0x2(%rdx,%r12,1),%eax 0.00 : 28a94: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 28a98: 0f b7 04 83 movzwl (%rbx,%rax,4),%eax 0.00 : 28a9c: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 28aa0: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 28aa5: 48 89 45 20 mov %rax,0x20(%rbp) 0.00 : 28aa9: c7 45 10 01 00 00 00 movl $0x1,0x10(%rbp) 0.00 : 28ab0: 48 c7 45 60 00 00 00 movq $0x0,0x60(%rbp) 0.00 : 28ab7: 00 0.00 : 28ab8: 42 0f b7 44 22 04 movzwl 0x4(%rdx,%r12,1),%eax 0.00 : 28abe: 49 8d 3c 06 lea (%r14,%rax,1),%rdi 0.00 : 28ac2: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 28ac5: 0f 85 75 ff ff ff jne 28a40 <__gconv_lookup_cache+0x370> 0.00 : 28acb: 42 0f b7 7c 22 06 movzwl 0x6(%rdx,%r12,1),%edi 0.00 : 28ad1: 48 89 ee mov %rbp,%rsi 0.00 : 28ad4: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 28ad9: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 28add: e8 2e 95 ff ff callq 22010 <__gconv_get_builtin_trans> 0.00 : 28ae2: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 28ae7: e9 78 ff ff ff jmpq 28a64 <__gconv_lookup_cache+0x394> 0.00 : 28aec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 28af0: bb 03 00 00 00 mov $0x3,%ebx 0.00 : 28af5: e9 5b fc ff ff jmpq 28755 <__gconv_lookup_cache+0x85> 0.00 : 28afa: 48 3b 4c 24 40 cmp 0x40(%rsp),%rcx 0.00 : 28aff: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 28b04: 0f 85 af fc ff ff jne 287b9 <__gconv_lookup_cache+0xe9> 0.00 : 28b0a: e9 46 fc ff ff jmpq 28755 <__gconv_lookup_cache+0x85> 0.00 : 28b0f: 45 85 ed test %r13d,%r13d 0.00 : 28b12: 74 09 je 28b1d <__gconv_lookup_cache+0x44d> 0.00 : 28b14: 48 89 ef mov %rbp,%rdi 0.00 : 28b17: 90 nop 0.00 : 28b18: e8 a3 77 ff ff callq 202c0 <__gconv_release_step> 0.00 : 28b1d: 48 89 ef mov %rbp,%rdi 0.00 : 28b20: e8 7b 5d ff ff callq 1e8a0 0.00 : 28b25: e9 2b fc ff ff jmpq 28755 <__gconv_lookup_cache+0x85> 0.00 : 28b2a: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 28b2f: e8 6c 5d ff ff callq 1e8a0 0.00 : 28b34: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : 28b39: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 28b3e: 48 85 f6 test %rsi,%rsi 0.00 : 28b41: 0f 84 ac fc ff ff je 287f3 <__gconv_lookup_cache+0x123> 0.00 : 28b47: e9 9b fc ff ff jmpq 287e7 <__gconv_lookup_cache+0x117> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002b750 <_nl_postload_ctype>: 0.00 : 2b750: 48 8b 15 69 6e 34 00 mov 0x346e69(%rip),%rdx # 3725c0 <_nl_global_locale> ??:0 100.00 : 2b757: 48 8b 42 40 mov 0x40(%rdx),%rax 0.00 : 2b75b: 48 8d b8 00 01 00 00 lea 0x100(%rax),%rdi 0.00 : 2b762: 48 89 3d bf 6e 34 00 mov %rdi,0x346ebf(%rip) # 372628 <_nl_global_locale+0x68> 0.00 : 2b769: 48 8b 42 58 mov 0x58(%rdx),%rax 0.00 : 2b76d: 4c 8d 80 00 02 00 00 lea 0x200(%rax),%r8 0.00 : 2b774: 4c 89 05 b5 6e 34 00 mov %r8,0x346eb5(%rip) # 372630 <_nl_global_locale+0x70> 0.00 : 2b77b: 48 8b 42 48 mov 0x48(%rdx),%rax 0.00 : 2b77f: 64 48 8b 14 25 00 00 mov %fs:0x0,%rdx 0.00 : 2b786: 00 00 0.00 : 2b788: 48 8d b0 00 02 00 00 lea 0x200(%rax),%rsi 0.00 : 2b78f: 48 8b 05 f2 65 34 00 mov 0x3465f2(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2b796: 48 89 35 9b 6e 34 00 mov %rsi,0x346e9b(%rip) # 372638 <_nl_global_locale+0x78> 0.00 : 2b79d: 48 8b 0c 02 mov (%rdx,%rax,1),%rcx 0.00 : 2b7a1: 48 8d 05 18 6e 34 00 lea 0x346e18(%rip),%rax # 3725c0 <_nl_global_locale> 0.00 : 2b7a8: 48 39 c1 cmp %rax,%rcx 0.00 : 2b7ab: 0f 84 7f 00 00 00 je 2b830 <_nl_postload_ctype+0xe0> 0.00 : 2b7b1: 48 8b 01 mov (%rcx),%rax 0.00 : 2b7b4: 48 8b 15 a5 66 34 00 mov 0x3466a5(%rip),%rdx # 371e60 <_DYNAMIC+0x300> 0.00 : 2b7bb: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2b7bf: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2b7c5: 48 89 02 mov %rax,(%rdx) 0.00 : 2b7c8: 48 8b 01 mov (%rcx),%rax 0.00 : 2b7cb: 48 8b 15 7e 66 34 00 mov 0x34667e(%rip),%rdx # 371e50 <_DYNAMIC+0x2f0> 0.00 : 2b7d2: 48 8b 40 48 mov 0x48(%rax),%rax 0.00 : 2b7d6: 48 05 00 02 00 00 add $0x200,%rax 0.00 : 2b7dc: 48 89 02 mov %rax,(%rdx) 0.00 : 2b7df: 48 8b 01 mov (%rcx),%rax 0.00 : 2b7e2: 48 8b 15 5f 66 34 00 mov 0x34665f(%rip),%rdx # 371e48 <_DYNAMIC+0x2e8> 0.00 : 2b7e9: 48 8b 40 58 mov 0x58(%rax),%rax 0.00 : 2b7ed: 48 05 00 02 00 00 add $0x200,%rax 0.00 : 2b7f3: 48 89 02 mov %rax,(%rdx) 0.00 : 2b7f6: 48 8b 01 mov (%rcx),%rax 0.00 : 2b7f9: 48 8b 50 68 mov 0x68(%rax),%rdx 0.00 : 2b7fd: 48 8b 05 7c 66 34 00 mov 0x34667c(%rip),%rax # 371e80 <_DYNAMIC+0x320> 0.00 : 2b804: 48 89 10 mov %rdx,(%rax) 0.00 : 2b807: 48 8b 01 mov (%rcx),%rax 0.00 : 2b80a: 48 8b 90 b8 00 00 00 mov 0xb8(%rax),%rdx 0.00 : 2b811: 48 8b 05 a8 67 34 00 mov 0x3467a8(%rip),%rax # 371fc0 <_DYNAMIC+0x460> 0.00 : 2b818: 48 89 10 mov %rdx,(%rax) 0.00 : 2b81b: 48 8b 01 mov (%rcx),%rax 0.00 : 2b81e: 48 8b 90 c0 00 00 00 mov 0xc0(%rax),%rdx 0.00 : 2b825: 48 8b 05 74 65 34 00 mov 0x346574(%rip),%rax # 371da0 <_DYNAMIC+0x240> 0.00 : 2b82c: 48 89 10 mov %rdx,(%rax) 0.00 : 2b82f: c3 retq 0.00 : 2b830: 48 8b 05 99 65 34 00 mov 0x346599(%rip),%rax # 371dd0 <_DYNAMIC+0x270> 0.00 : 2b837: 48 89 3c 02 mov %rdi,(%rdx,%rax,1) 0.00 : 2b83b: 48 8b 05 66 66 34 00 mov 0x346666(%rip),%rax # 371ea8 <_DYNAMIC+0x348> 0.00 : 2b842: 48 89 34 02 mov %rsi,(%rdx,%rax,1) 0.00 : 2b846: 48 8b 05 b3 66 34 00 mov 0x3466b3(%rip),%rax # 371f00 <_DYNAMIC+0x3a0> 0.00 : 2b84d: 4c 89 04 02 mov %r8,(%rdx,%rax,1) 0.00 : 2b851: e9 5b ff ff ff jmpq 2b7b1 <_nl_postload_ctype+0x61> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002fc80 : 0.00 : 2fc80: 55 push %rbp 0.00 : 2fc81: 53 push %rbx 0.00 : 2fc82: 48 89 fb mov %rdi,%rbx 0.00 : 2fc85: 48 83 ec 08 sub $0x8,%rsp 0.00 : 2fc89: 48 85 ff test %rdi,%rdi 0.00 : 2fc8c: 0f 84 e6 00 00 00 je 2fd78 0.00 : 2fc92: 8b 15 18 7a 34 00 mov 0x347a18(%rip),%edx # 3776b0 <__libc_pthread_functions_init> 0.00 : 2fc98: 85 d2 test %edx,%edx 0.00 : 2fc9a: 0f 85 b0 00 00 00 jne 2fd50 0.00 : 2fca0: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 2fca3: 48 8b 2d 2e 2a 34 00 mov 0x342a2e(%rip),%rbp # 3726d8 <_nl_current_default_domain> 0.00 : 2fcaa: 75 6c jne 2fd18 0.00 : 2fcac: 48 8d 05 63 ae 10 00 lea 0x10ae63(%rip),%rax # 13ab16 <_nl_default_default_domain> 0.00 : 2fcb3: 48 89 05 1e 2a 34 00 mov %rax,0x342a1e(%rip) # 3726d8 <_nl_current_default_domain> 0.00 : 2fcba: 48 89 c3 mov %rax,%rbx 0.00 : 2fcbd: 48 8b 05 0c 22 34 00 mov 0x34220c(%rip),%rax # 371ed0 <_DYNAMIC+0x370> 0.00 : 2fcc4: 83 00 01 addl $0x1,(%rax) 0.00 : 2fcc7: 48 39 dd cmp %rbx,%rbp 0.00 : 2fcca: 74 14 je 2fce0 0.00 : 2fccc: 48 8d 05 43 ae 10 00 lea 0x10ae43(%rip),%rax # 13ab16 <_nl_default_default_domain> 0.00 : 2fcd3: 48 39 c5 cmp %rax,%rbp 0.00 : 2fcd6: 74 08 je 2fce0 0.00 : 2fcd8: 48 89 ef mov %rbp,%rdi 0.00 : 2fcdb: e8 c0 eb fe ff callq 1e8a0 0.00 : 2fce0: 8b 05 ca 79 34 00 mov 0x3479ca(%rip),%eax # 3776b0 <__libc_pthread_functions_init> 0.00 : 2fce6: 85 c0 test %eax,%eax 0.00 : 2fce8: 74 1d je 2fd07 0.00 : 2fcea: 48 8b 05 5f 79 34 00 mov 0x34795f(%rip),%rax # 377650 <__libc_pthread_functions+0x150> 0.00 : 2fcf1: 48 8d 3d 88 34 34 00 lea 0x343488(%rip),%rdi # 373180 <_nl_state_lock> 0.00 : 2fcf8: 48 c1 c8 11 ror $0x11,%rax 0.00 : 2fcfc: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 2fd03: 00 00 0.00 : 2fd05: ff d0 callq *%rax 0.00 : 2fd07: 48 89 d8 mov %rbx,%rax 0.00 : 2fd0a: 48 83 c4 08 add $0x8,%rsp 0.00 : 2fd0e: 5b pop %rbx 0.00 : 2fd0f: 5d pop %rbp 0.00 : 2fd10: c3 retq 0.00 : 2fd11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2fd18: 48 8d 35 f7 ad 10 00 lea 0x10adf7(%rip),%rsi # 13ab16 <_nl_default_default_domain> 0.00 : 2fd1f: 48 89 df mov %rbx,%rdi 0.00 : 2fd22: e8 29 f4 04 00 callq 7f150 <__GI_strcmp> 0.00 : 2fd27: 85 c0 test %eax,%eax 0.00 : 2fd29: 74 81 je 2fcac 0.00 : 2fd2b: 48 89 ee mov %rbp,%rsi 0.00 : 2fd2e: 48 89 df mov %rbx,%rdi 0.00 : 2fd31: e8 1a f4 04 00 callq 7f150 <__GI_strcmp> 0.00 : 2fd36: 85 c0 test %eax,%eax 0.00 : 2fd38: 75 56 jne 2fd90 0.00 : 2fd3a: 48 85 ed test %rbp,%rbp 0.00 : 2fd3d: 48 89 eb mov %rbp,%rbx 0.00 : 2fd40: 0f 85 77 ff ff ff jne 2fcbd 0.00 : 2fd46: eb 98 jmp 2fce0 0.00 : 2fd48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2fd4f: 00 0.00 : 2fd50: 48 8b 05 f1 78 34 00 mov 0x3478f1(%rip),%rax # 377648 <__libc_pthread_functions+0x148> 0.00 : 2fd57: 48 8d 3d 22 34 34 00 lea 0x343422(%rip),%rdi # 373180 <_nl_state_lock> 0.00 : 2fd5e: 48 c1 c8 11 ror $0x11,%rax 0.00 : 2fd62: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 2fd69: 00 00 0.00 : 2fd6b: ff d0 callq *%rax 0.00 : 2fd6d: e9 2e ff ff ff jmpq 2fca0 0.00 : 2fd72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2fd78: 48 8b 1d 59 29 34 00 mov 0x342959(%rip),%rbx # 3726d8 <_nl_current_default_domain> 0.00 : 2fd7f: 48 83 c4 08 add $0x8,%rsp 0.00 : 2fd83: 48 89 d8 mov %rbx,%rax 0.00 : 2fd86: 5b pop %rbx 0.00 : 2fd87: 5d pop %rbp 0.00 : 2fd88: c3 retq 0.00 : 2fd89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2fd90: 48 89 df mov %rbx,%rdi 0.00 : 2fd93: e8 18 0b 05 00 callq 808b0 <__strdup> 0.00 : 2fd98: 48 85 c0 test %rax,%rax 0.00 : 2fd9b: 48 89 c3 mov %rax,%rbx 0.00 : 2fd9e: 0f 84 3c ff ff ff je 2fce0 ??:0 100.00 : 2fda4: 48 89 05 2d 29 34 00 mov %rax,0x34292d(%rip) # 3726d8 <_nl_current_default_domain> 0.00 : 2fdab: e9 0d ff ff ff jmpq 2fcbd Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000363a0 : 0.00 : 363a0: 48 85 ff test %rdi,%rdi 0.00 : 363a3: 0f 84 7f 00 00 00 je 36428 0.00 : 363a9: 48 85 f6 test %rsi,%rsi 0.00 : 363ac: 74 7a je 36428 0.00 : 363ae: 8b 57 18 mov 0x18(%rdi),%edx 0.00 : 363b1: 4c 8b 47 10 mov 0x10(%rdi),%r8 0.00 : 363b5: 85 d2 test %edx,%edx 0.00 : 363b7: 74 4f je 36408 0.00 : 363b9: 48 8b 17 mov (%rdi),%rdx 0.00 : 363bc: 48 8b 4f 08 mov 0x8(%rdi),%rcx 0.00 : 363c0: 4c 8b 4f 28 mov 0x28(%rdi),%r9 0.00 : 363c4: 8b 01 mov (%rcx),%eax 0.00 : 363c6: 03 02 add (%rdx),%eax 50.00 : 363c8: 89 02 mov %eax,(%rdx) 0.00 : 363ca: 48 83 c2 04 add $0x4,%rdx 0.00 : 363ce: d1 e8 shr %eax 0.00 : 363d0: 49 39 d1 cmp %rdx,%r9 0.00 : 363d3: 89 06 mov %eax,(%rsi) 50.00 : 363d5: 76 19 jbe 363f0 0.00 : 363d7: 48 8d 41 04 lea 0x4(%rcx),%rax 0.00 : 363db: 48 89 17 mov %rdx,(%rdi) 0.00 : 363de: 49 39 c1 cmp %rax,%r9 0.00 : 363e1: 49 0f 46 c0 cmovbe %r8,%rax 0.00 : 363e5: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 363e9: 31 c0 xor %eax,%eax 0.00 : 363eb: c3 retq 0.00 : 363ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 363f0: 48 8d 41 04 lea 0x4(%rcx),%rax 0.00 : 363f4: 4c 89 c2 mov %r8,%rdx 0.00 : 363f7: 48 89 17 mov %rdx,(%rdi) 0.00 : 363fa: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 363fe: 31 c0 xor %eax,%eax 0.00 : 36400: c3 retq 0.00 : 36401: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 36408: 41 8b 00 mov (%r8),%eax 0.00 : 3640b: 69 c0 6d 4e c6 41 imul $0x41c64e6d,%eax,%eax 0.00 : 36411: 05 39 30 00 00 add $0x3039,%eax 0.00 : 36416: 25 ff ff ff 7f and $0x7fffffff,%eax 0.00 : 3641b: 41 89 00 mov %eax,(%r8) 0.00 : 3641e: 89 06 mov %eax,(%rsi) 0.00 : 36420: 31 c0 xor %eax,%eax 0.00 : 36422: c3 retq 0.00 : 36423: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 36428: 48 8b 15 09 ba 33 00 mov 0x33ba09(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3642f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 36436: 00 00 0.00 : 36438: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 3643f: b8 ff ff ff ff mov $0xffffffff,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000036fe0 <__GI_____strtoul_l_internal>: 0.00 : 36fe0: 41 57 push %r15 0.00 : 36fe2: 41 89 d1 mov %edx,%r9d 0.00 : 36fe5: 41 56 push %r14 0.00 : 36fe7: 41 55 push %r13 0.00 : 36fe9: 4d 89 c5 mov %r8,%r13 0.00 : 36fec: 41 54 push %r12 0.00 : 36fee: 55 push %rbp 0.00 : 36fef: 53 push %rbx 0.00 : 36ff0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 36ff4: 85 c9 test %ecx,%ecx 0.00 : 36ff6: 48 89 7c 24 28 mov %rdi,0x28(%rsp) 0.00 : 36ffb: 48 89 74 24 20 mov %rsi,0x20(%rsp) 0.00 : 37000: 49 8b 50 08 mov 0x8(%r8),%rdx 0.00 : 37004: 0f 85 07 03 00 00 jne 37311 <__GI_____strtoul_l_internal+0x331> 0.00 : 3700a: 31 ed xor %ebp,%ebp 0.00 : 3700c: 45 31 c0 xor %r8d,%r8d 0.00 : 3700f: 45 85 c9 test %r9d,%r9d 0.00 : 37012: 0f 88 c0 01 00 00 js 371d8 <__GI_____strtoul_l_internal+0x1f8> 0.00 : 37018: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 3701c: 0f 84 b6 01 00 00 je 371d8 <__GI_____strtoul_l_internal+0x1f8> 0.00 : 37022: 41 83 f9 24 cmp $0x24,%r9d 0.00 : 37026: 0f 8f ac 01 00 00 jg 371d8 <__GI_____strtoul_l_internal+0x1f8> 0.00 : 3702c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 37031: 4d 8b 65 68 mov 0x68(%r13),%r12 100.00 : 37035: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 3703a: 0f b6 08 movzbl (%rax),%ecx 0.00 : 3703d: 48 0f be c1 movsbq %cl,%rax 0.00 : 37041: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) 0.00 : 37047: 74 1a je 37063 <__GI_____strtoul_l_internal+0x83> 0.00 : 37049: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 37050: 48 83 c2 01 add $0x1,%rdx 0.00 : 37054: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 37057: 48 0f be c1 movsbq %cl,%rax 0.00 : 3705b: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) 0.00 : 37061: 75 ed jne 37050 <__GI_____strtoul_l_internal+0x70> 0.00 : 37063: 84 c9 test %cl,%cl 0.00 : 37065: 49 89 d7 mov %rdx,%r15 0.00 : 37068: 0f 84 71 03 00 00 je 373df <__GI_____strtoul_l_internal+0x3ff> 0.00 : 3706e: 80 f9 2d cmp $0x2d,%cl 0.00 : 37071: 0f 84 74 02 00 00 je 372eb <__GI_____strtoul_l_internal+0x30b> 0.00 : 37077: 80 f9 2b cmp $0x2b,%cl 0.00 : 3707a: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 37081: 00 0.00 : 37082: 0f 84 93 01 00 00 je 3721b <__GI_____strtoul_l_internal+0x23b> 0.00 : 37088: 45 0f b6 37 movzbl (%r15),%r14d 0.00 : 3708c: 41 80 fe 30 cmp $0x30,%r14b 0.00 : 37090: 45 89 f3 mov %r14d,%r11d 0.00 : 37093: 0f 84 16 02 00 00 je 372af <__GI_____strtoul_l_internal+0x2cf> 0.00 : 37099: 45 85 c9 test %r9d,%r9d 0.00 : 3709c: 0f 84 5e 01 00 00 je 37200 <__GI_____strtoul_l_internal+0x220> 0.00 : 370a2: 41 83 f9 0a cmp $0xa,%r9d 0.00 : 370a6: 41 8d 41 fe lea -0x2(%r9),%eax 0.00 : 370aa: 0f 84 50 01 00 00 je 37200 <__GI_____strtoul_l_internal+0x220> 0.00 : 370b0: 45 31 c0 xor %r8d,%r8d 0.00 : 370b3: 31 db xor %ebx,%ebx 0.00 : 370b5: 48 8d 15 64 c5 0f 00 lea 0xfc564(%rip),%rdx # 133620 <__strtol_ul_max_tab> 0.00 : 370bc: 48 98 cltq 0.00 : 370be: 45 84 db test %r11b,%r11b 0.00 : 370c1: 44 89 df mov %r11d,%edi 0.00 : 370c4: 4c 8b 14 c2 mov (%rdx,%rax,8),%r10 0.00 : 370c8: 48 8d 15 71 c6 0f 00 lea 0xfc671(%rip),%rdx # 133740 <__strtol_ul_rem_tab> 0.00 : 370cf: 44 0f b6 34 02 movzbl (%rdx,%rax,1),%r14d 0.00 : 370d4: 0f 84 8f 01 00 00 je 37269 <__GI_____strtoul_l_internal+0x289> 0.00 : 370da: 4d 39 f8 cmp %r15,%r8 0.00 : 370dd: 0f 84 86 01 00 00 je 37269 <__GI_____strtoul_l_internal+0x289> 0.00 : 370e3: 48 8d 43 ff lea -0x1(%rbx),%rax 0.00 : 370e7: 4c 89 fe mov %r15,%rsi 0.00 : 370ea: 31 d2 xor %edx,%edx 0.00 : 370ec: 45 31 db xor %r11d,%r11d 0.00 : 370ef: 4d 63 e1 movslq %r9d,%r12 0.00 : 370f2: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 370f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 370fe: 00 00 0.00 : 37100: 8d 4f d0 lea -0x30(%rdi),%ecx 0.00 : 37103: 80 f9 09 cmp $0x9,%cl 0.00 : 37106: 76 51 jbe 37159 <__GI_____strtoul_l_internal+0x179> 0.00 : 37108: 48 85 db test %rbx,%rbx 0.00 : 3710b: 74 2f je 3713c <__GI_____strtoul_l_internal+0x15c> 0.00 : 3710d: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 37111: 31 c9 xor %ecx,%ecx 0.00 : 37113: 3a 06 cmp (%rsi),%al 0.00 : 37115: 74 13 je 3712a <__GI_____strtoul_l_internal+0x14a> 0.00 : 37117: eb 23 jmp 3713c <__GI_____strtoul_l_internal+0x15c> 0.00 : 37119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 37120: 0f b6 44 0d 00 movzbl 0x0(%rbp,%rcx,1),%eax 0.00 : 37125: 3a 04 0e cmp (%rsi,%rcx,1),%al 0.00 : 37128: 75 09 jne 37133 <__GI_____strtoul_l_internal+0x153> 0.00 : 3712a: 48 83 c1 01 add $0x1,%rcx 0.00 : 3712e: 48 39 cb cmp %rcx,%rbx 0.00 : 37131: 77 ed ja 37120 <__GI_____strtoul_l_internal+0x140> 0.00 : 37133: 48 39 d9 cmp %rbx,%rcx 0.00 : 37136: 0f 84 14 01 00 00 je 37250 <__GI_____strtoul_l_internal+0x270> 0.00 : 3713c: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 37140: 40 0f b6 cf movzbl %dil,%ecx 0.00 : 37144: f6 44 48 01 04 testb $0x4,0x1(%rax,%rcx,2) 0.00 : 37149: 0f 84 11 01 00 00 je 37260 <__GI_____strtoul_l_internal+0x280> 0.00 : 3714f: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 37153: 8b 04 88 mov (%rax,%rcx,4),%eax 0.00 : 37156: 8d 48 c9 lea -0x37(%rax),%ecx 0.00 : 37159: 0f b6 c1 movzbl %cl,%eax 0.00 : 3715c: 41 39 c1 cmp %eax,%r9d 0.00 : 3715f: 0f 8e fb 00 00 00 jle 37260 <__GI_____strtoul_l_internal+0x280> 0.00 : 37165: 49 39 d2 cmp %rdx,%r10 0.00 : 37168: 0f 82 d2 00 00 00 jb 37240 <__GI_____strtoul_l_internal+0x260> 0.00 : 3716e: 4c 39 d2 cmp %r10,%rdx 0.00 : 37171: 0f 84 b9 00 00 00 je 37230 <__GI_____strtoul_l_internal+0x250> 0.00 : 37177: 49 0f af d4 imul %r12,%rdx 0.00 : 3717b: 0f b6 c1 movzbl %cl,%eax 0.00 : 3717e: 48 8d 14 10 lea (%rax,%rdx,1),%rdx 0.00 : 37182: 48 83 c6 01 add $0x1,%rsi 0.00 : 37186: 0f b6 3e movzbl (%rsi),%edi 0.00 : 37189: 40 84 ff test %dil,%dil 0.00 : 3718c: 0f 84 ce 00 00 00 je 37260 <__GI_____strtoul_l_internal+0x280> 0.00 : 37192: 49 39 f0 cmp %rsi,%r8 0.00 : 37195: 0f 85 65 ff ff ff jne 37100 <__GI_____strtoul_l_internal+0x120> 0.00 : 3719b: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 371a1: 74 08 je 371ab <__GI_____strtoul_l_internal+0x1cb> 0.00 : 371a3: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 371a8: 48 89 30 mov %rsi,(%rax) 0.00 : 371ab: 45 85 db test %r11d,%r11d 0.00 : 371ae: 0f 85 a5 01 00 00 jne 37359 <__GI_____strtoul_l_internal+0x379> 0.00 : 371b4: 8b 4c 24 34 mov 0x34(%rsp),%ecx 0.00 : 371b8: 48 89 d0 mov %rdx,%rax 0.00 : 371bb: 48 f7 d8 neg %rax 0.00 : 371be: 85 c9 test %ecx,%ecx 0.00 : 371c0: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 371c4: 48 83 c4 38 add $0x38,%rsp 0.00 : 371c8: 5b pop %rbx 0.00 : 371c9: 5d pop %rbp 0.00 : 371ca: 41 5c pop %r12 0.00 : 371cc: 41 5d pop %r13 0.00 : 371ce: 41 5e pop %r14 0.00 : 371d0: 41 5f pop %r15 0.00 : 371d2: c3 retq 0.00 : 371d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 371d8: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 371df: 00 00 0.00 : 371e1: 48 8b 15 50 ac 33 00 mov 0x33ac50(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 371e8: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 371ef: 31 c0 xor %eax,%eax 0.00 : 371f1: 48 83 c4 38 add $0x38,%rsp 0.00 : 371f5: 5b pop %rbx 0.00 : 371f6: 5d pop %rbp 0.00 : 371f7: 41 5c pop %r12 0.00 : 371f9: 41 5d pop %r13 0.00 : 371fb: 41 5e pop %r14 0.00 : 371fd: 41 5f pop %r15 0.00 : 371ff: c3 retq 0.00 : 37200: 4d 85 c0 test %r8,%r8 0.00 : 37203: 0f 85 73 01 00 00 jne 3737c <__GI_____strtoul_l_internal+0x39c> 0.00 : 37209: 31 db xor %ebx,%ebx 0.00 : 3720b: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 37211: b8 08 00 00 00 mov $0x8,%eax 0.00 : 37216: e9 9a fe ff ff jmpq 370b5 <__GI_____strtoul_l_internal+0xd5> 0.00 : 3721b: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 3721f: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 37226: 00 0.00 : 37227: e9 5c fe ff ff jmpq 37088 <__GI_____strtoul_l_internal+0xa8> 0.00 : 3722c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 37230: 44 38 f1 cmp %r14b,%cl 0.00 : 37233: 0f 86 3e ff ff ff jbe 37177 <__GI_____strtoul_l_internal+0x197> 0.00 : 37239: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 37240: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 37246: e9 37 ff ff ff jmpq 37182 <__GI_____strtoul_l_internal+0x1a2> 0.00 : 3724b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 37250: 48 03 74 24 18 add 0x18(%rsp),%rsi 0.00 : 37255: e9 28 ff ff ff jmpq 37182 <__GI_____strtoul_l_internal+0x1a2> 0.00 : 3725a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 37260: 49 39 f7 cmp %rsi,%r15 0.00 : 37263: 0f 85 32 ff ff ff jne 3719b <__GI_____strtoul_l_internal+0x1bb> 0.00 : 37269: 4c 89 f9 mov %r15,%rcx 0.00 : 3726c: 31 c0 xor %eax,%eax 0.00 : 3726e: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 37274: 0f 84 77 ff ff ff je 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 3727a: 48 89 c8 mov %rcx,%rax 0.00 : 3727d: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.00 : 37282: 48 83 e8 01 sub $0x1,%rax 0.00 : 37286: 7e 13 jle 3729b <__GI_____strtoul_l_internal+0x2bb> 0.00 : 37288: 48 0f be 51 ff movsbq -0x1(%rcx),%rdx 0.00 : 3728d: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 37291: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 37295: 0f 84 9c 00 00 00 je 37337 <__GI_____strtoul_l_internal+0x357> 0.00 : 3729b: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 372a0: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 372a5: 48 89 10 mov %rdx,(%rax) 0.00 : 372a8: 31 c0 xor %eax,%eax 0.00 : 372aa: e9 42 ff ff ff jmpq 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 372af: 45 85 c9 test %r9d,%r9d 0.00 : 372b2: 0f 94 c1 sete %cl 0.00 : 372b5: 74 0a je 372c1 <__GI_____strtoul_l_internal+0x2e1> 0.00 : 372b7: 41 83 f9 10 cmp $0x10,%r9d 0.00 : 372bb: 0f 85 e1 fd ff ff jne 370a2 <__GI_____strtoul_l_internal+0xc2> 0.00 : 372c1: 49 0f be 57 01 movsbq 0x1(%r15),%rdx 0.00 : 372c6: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 372ca: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 372ce: 74 2c je 372fc <__GI_____strtoul_l_internal+0x31c> 0.00 : 372d0: 84 c9 test %cl,%cl 0.00 : 372d2: 0f 84 ca fd ff ff je 370a2 <__GI_____strtoul_l_internal+0xc2> 0.00 : 372d8: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 372de: b8 06 00 00 00 mov $0x6,%eax 0.00 : 372e3: 45 89 f3 mov %r14d,%r11d 0.00 : 372e6: e9 c5 fd ff ff jmpq 370b0 <__GI_____strtoul_l_internal+0xd0> 0.00 : 372eb: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 372ef: c7 44 24 34 01 00 00 movl $0x1,0x34(%rsp) 0.00 : 372f6: 00 0.00 : 372f7: e9 8c fd ff ff jmpq 37088 <__GI_____strtoul_l_internal+0xa8> 0.00 : 372fc: 49 83 c7 02 add $0x2,%r15 0.00 : 37300: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : 37306: b8 0e 00 00 00 mov $0xe,%eax 0.00 : 3730b: 45 0f b6 37 movzbl (%r15),%r14d 0.00 : 3730f: eb d2 jmp 372e3 <__GI_____strtoul_l_internal+0x303> 0.00 : 37311: 4c 8b 42 50 mov 0x50(%rdx),%r8 0.00 : 37315: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 37319: 83 e8 01 sub $0x1,%eax 0.00 : 3731c: 3c 7d cmp $0x7d,%al 0.00 : 3731e: 0f 87 e6 fc ff ff ja 3700a <__GI_____strtoul_l_internal+0x2a> 0.00 : 37324: 48 8b 6a 48 mov 0x48(%rdx),%rbp 0.00 : 37328: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 3732c: 0f 85 dd fc ff ff jne 3700f <__GI_____strtoul_l_internal+0x2f> 0.00 : 37332: e9 d3 fc ff ff jmpq 3700a <__GI_____strtoul_l_internal+0x2a> 0.00 : 37337: 80 79 fe 30 cmpb $0x30,-0x2(%rcx) 0.00 : 3733b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 37340: 0f 85 55 ff ff ff jne 3729b <__GI_____strtoul_l_internal+0x2bb> 0.00 : 37346: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 3734b: 48 8d 41 ff lea -0x1(%rcx),%rax 0.00 : 3734f: 48 89 02 mov %rax,(%rdx) 0.00 : 37352: 31 c0 xor %eax,%eax 0.00 : 37354: e9 98 fe ff ff jmpq 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 37359: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 37360: 00 00 0.00 : 37362: 48 8b 15 cf aa 33 00 mov 0x33aacf(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 37369: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 37370: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 37377: e9 75 fe ff ff jmpq 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 3737c: 48 89 ef mov %rbp,%rdi 0.00 : 3737f: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 37384: 44 88 5c 24 08 mov %r11b,0x8(%rsp) 0.00 : 37389: e8 22 98 04 00 callq 80bb0 <__GI_strlen> 0.00 : 3738e: 48 85 c0 test %rax,%rax 0.00 : 37391: 48 89 c7 mov %rax,%rdi 0.00 : 37394: 48 89 c3 mov %rax,%rbx 0.00 : 37397: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 3739c: 44 0f b6 5c 24 08 movzbl 0x8(%rsp),%r11d 0.00 : 373a2: 74 28 je 373cc <__GI_____strtoul_l_internal+0x3ec> 0.00 : 373a4: 44 0f b6 4d 00 movzbl 0x0(%rbp),%r9d 0.00 : 373a9: 31 d2 xor %edx,%edx 0.00 : 373ab: 45 38 ce cmp %r9b,%r14b 0.00 : 373ae: 74 13 je 373c3 <__GI_____strtoul_l_internal+0x3e3> 0.00 : 373b0: eb 37 jmp 373e9 <__GI_____strtoul_l_internal+0x409> 0.00 : 373b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 373b8: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 373bd: 41 3a 04 17 cmp (%r15,%rdx,1),%al 0.00 : 373c1: 75 26 jne 373e9 <__GI_____strtoul_l_internal+0x409> 0.00 : 373c3: 48 83 c2 01 add $0x1,%rdx 0.00 : 373c7: 48 39 d7 cmp %rdx,%rdi 0.00 : 373ca: 77 ec ja 373b8 <__GI_____strtoul_l_internal+0x3d8> 0.00 : 373cc: 4d 89 f8 mov %r15,%r8 0.00 : 373cf: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 373d5: b8 08 00 00 00 mov $0x8,%eax 0.00 : 373da: e9 d6 fc ff ff jmpq 370b5 <__GI_____strtoul_l_internal+0xd5> 0.00 : 373df: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 373e4: e9 83 fe ff ff jmpq 3726c <__GI_____strtoul_l_internal+0x28c> 0.00 : 373e9: 45 84 f6 test %r14b,%r14b 0.00 : 373ec: 44 89 f1 mov %r14d,%ecx 0.00 : 373ef: 4c 89 fe mov %r15,%rsi 0.00 : 373f2: 74 32 je 37426 <__GI_____strtoul_l_internal+0x446> 0.00 : 373f4: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 373f7: 3c 09 cmp $0x9,%al 0.00 : 373f9: 76 20 jbe 3741b <__GI_____strtoul_l_internal+0x43b> 0.00 : 373fb: 31 d2 xor %edx,%edx 0.00 : 373fd: 44 38 0e cmp %r9b,(%rsi) 0.00 : 37400: 74 10 je 37412 <__GI_____strtoul_l_internal+0x432> 0.00 : 37402: eb 47 jmp 3744b <__GI_____strtoul_l_internal+0x46b> 0.00 : 37404: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 37408: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 3740d: 3a 04 16 cmp (%rsi,%rdx,1),%al 0.00 : 37410: 75 39 jne 3744b <__GI_____strtoul_l_internal+0x46b> 0.00 : 37412: 48 83 c2 01 add $0x1,%rdx 0.00 : 37416: 48 39 d7 cmp %rdx,%rdi 0.00 : 37419: 77 ed ja 37408 <__GI_____strtoul_l_internal+0x428> 0.00 : 3741b: 48 83 c6 01 add $0x1,%rsi 0.00 : 3741f: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 37422: 84 c9 test %cl,%cl 0.00 : 37424: 75 ce jne 373f4 <__GI_____strtoul_l_internal+0x414> 0.00 : 37426: 4c 89 c1 mov %r8,%rcx 0.00 : 37429: 48 89 ea mov %rbp,%rdx 0.00 : 3742c: 4c 89 ff mov %r15,%rdi 0.00 : 3742f: e8 9c c3 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 37434: 45 0f b6 1f movzbl (%r15),%r11d 0.00 : 37438: 49 89 c0 mov %rax,%r8 0.00 : 3743b: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 37441: b8 08 00 00 00 mov $0x8,%eax 0.00 : 37446: e9 6a fc ff ff jmpq 370b5 <__GI_____strtoul_l_internal+0xd5> 0.00 : 3744b: 0f b6 d1 movzbl %cl,%edx 0.00 : 3744e: 41 f6 44 54 01 04 testb $0x4,0x1(%r12,%rdx,2) 0.00 : 37454: 74 d0 je 37426 <__GI_____strtoul_l_internal+0x446> 0.00 : 37456: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 3745a: 83 3c 90 40 cmpl $0x40,(%rax,%rdx,4) 0.00 : 3745e: 7e bb jle 3741b <__GI_____strtoul_l_internal+0x43b> 0.00 : 37460: eb c4 jmp 37426 <__GI_____strtoul_l_internal+0x446> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000043750 <__mpn_construct_double>: 0.00 : 43750: 48 8b 0f mov (%rdi),%rcx 0.00 : 43753: 66 81 c6 ff 03 add $0x3ff,%si 0.00 : 43758: 48 c1 e2 3f shl $0x3f,%rdx 0.00 : 4375c: 81 e6 ff 07 00 00 and $0x7ff,%esi 0.00 : 43762: 48 b8 00 00 00 00 ff movabs $0xfffff00000000,%rax 0.00 : 43769: ff 0f 00 0.00 : 4376c: 48 c1 e6 34 shl $0x34,%rsi 0.00 : 43770: 89 cf mov %ecx,%edi 0.00 : 43772: 48 09 f2 or %rsi,%rdx 0.00 : 43775: 48 21 c1 and %rax,%rcx 0.00 : 43778: 48 09 fa or %rdi,%rdx 0.00 : 4377b: 48 09 ca or %rcx,%rdx 0.00 : 4377e: 48 89 54 24 f8 mov %rdx,-0x8(%rsp) 100.00 : 43783: f2 0f 10 44 24 f8 movsd -0x8(%rsp),%xmm0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000066e50 <_IO_fopen@@GLIBC_2.2.5>: 0.00 : 66e50: ba 01 00 00 00 mov $0x1,%edx 100.00 : 66e55: e9 16 ff ff ff jmpq 66d70 <__fopen_internal> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000695c0 <_IO_ungetc>: 100.00 : 695c0: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 0.00 : 695c5: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 695ca: 48 83 ec 18 sub $0x18,%rsp 0.00 : 695ce: 83 ff ff cmp $0xffffffff,%edi 0.00 : 695d1: 48 89 f3 mov %rsi,%rbx 0.00 : 695d4: 89 fd mov %edi,%ebp 0.00 : 695d6: 89 fe mov %edi,%esi 0.00 : 695d8: 0f 84 b2 00 00 00 je 69690 <_IO_ungetc+0xd0> 0.00 : 695de: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 695e2: 78 56 js 6963a <_IO_ungetc+0x7a> 0.00 : 695e4: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 695eb: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 695f2: 00 00 0.00 : 695f4: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 695f8: 74 3b je 69635 <_IO_ungetc+0x75> 0.00 : 695fa: 31 d2 xor %edx,%edx 0.00 : 695fc: be 01 00 00 00 mov $0x1,%esi 0.00 : 69601: 89 d0 mov %edx,%eax 0.00 : 69603: 83 3d aa e0 30 00 00 cmpl $0x0,0x30e0aa(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6960a: 74 0d je 69619 <_IO_ungetc+0x59> 0.00 : 6960c: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 69611: 0f 85 8a 00 00 00 jne 696a1 <_L_lock_40> 0.00 : 69617: eb 0a jmp 69623 <_IO_ungetc+0x63> 0.00 : 69619: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : 6961d: 0f 85 7e 00 00 00 jne 696a1 <_L_lock_40> 0.00 : 69623: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6962a: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 6962e: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 69635: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : 6963a: 40 0f b6 f5 movzbl %bpl,%esi 0.00 : 6963e: 48 89 df mov %rbx,%rdi 0.00 : 69641: e8 0a ab 00 00 callq 74150 <_IO_sputbackc> 0.00 : 69646: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 6964a: 89 c6 mov %eax,%esi 0.00 : 6964c: 78 42 js 69690 <_IO_ungetc+0xd0> 0.00 : 6964e: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 69655: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 69658: 83 e8 01 sub $0x1,%eax 0.00 : 6965b: 85 c0 test %eax,%eax 0.00 : 6965d: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 69660: 75 2e jne 69690 <_IO_ungetc+0xd0> 0.00 : 69662: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 69669: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 69670: 00 0.00 : 69671: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 69678: 83 3d 35 e0 30 00 00 cmpl $0x0,0x30e035(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6967f: 74 07 je 69688 <_IO_ungetc+0xc8> 0.00 : 69681: f0 ff 0a lock decl (%rdx) 0.00 : 69684: 75 36 jne 696bc <_L_unlock_88> 0.00 : 69686: eb 04 jmp 6968c <_IO_ungetc+0xcc> 0.00 : 69688: ff 0a decl (%rdx) 0.00 : 6968a: 75 30 jne 696bc <_L_unlock_88> 0.00 : 6968c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 69690: 89 f0 mov %esi,%eax 0.00 : 69692: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 69697: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 6969c: 48 83 c4 18 add $0x18,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000714d0 : 0.00 : 714d0: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 100.00 : 714d5: 48 89 d3 mov %rdx,%rbx 0.00 : 714d8: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 714dd: 48 0f af de imul %rsi,%rbx 0.00 : 714e1: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 714e6: 48 83 ec 18 sub $0x18,%rsp 0.00 : 714ea: 49 89 f4 mov %rsi,%r12 0.00 : 714ed: 48 89 d5 mov %rdx,%rbp 0.00 : 714f0: 48 85 db test %rbx,%rbx 0.00 : 714f3: 75 1b jne 71510 0.00 : 714f5: 31 ed xor %ebp,%ebp 0.00 : 714f7: 48 89 e8 mov %rbp,%rax 0.00 : 714fa: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 714fe: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 71503: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 71508: 48 83 c4 18 add $0x18,%rsp 0.00 : 7150c: c3 retq 0.00 : 7150d: 0f 1f 00 nopl (%rax) 0.00 : 71510: 48 89 fe mov %rdi,%rsi 0.00 : 71513: 48 89 da mov %rbx,%rdx 0.00 : 71516: 48 89 cf mov %rcx,%rdi 0.00 : 71519: e8 42 29 00 00 callq 73e60 <_IO_sgetn> 0.00 : 7151e: 48 39 c3 cmp %rax,%rbx 0.00 : 71521: 74 d4 je 714f7 0.00 : 71523: 31 d2 xor %edx,%edx 0.00 : 71525: 49 f7 f4 div %r12 0.00 : 71528: 48 89 c5 mov %rax,%rbp 0.00 : 7152b: eb ca jmp 714f7 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000071ea0 <_IO_file_xsgetn>: 0.00 : 71ea0: 41 56 push %r14 0.00 : 71ea2: 49 89 d6 mov %rdx,%r14 0.00 : 71ea5: 41 55 push %r13 0.00 : 71ea7: 41 54 push %r12 100.00 : 71ea9: 55 push %rbp 0.00 : 71eaa: 48 89 fd mov %rdi,%rbp 0.00 : 71ead: 53 push %rbx 0.00 : 71eae: 48 83 7f 38 00 cmpq $0x0,0x38(%rdi) 0.00 : 71eb3: 48 89 f3 mov %rsi,%rbx 0.00 : 71eb6: 0f 84 6a 01 00 00 je 72026 <_IO_file_xsgetn+0x186> 0.00 : 71ebc: 4d 85 f6 test %r14,%r14 0.00 : 71ebf: 0f 84 e2 00 00 00 je 71fa7 <_IO_file_xsgetn+0x107> 0.00 : 71ec5: 49 89 dd mov %rbx,%r13 0.00 : 71ec8: 4d 89 f4 mov %r14,%r12 0.00 : 71ecb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 71ed0: 48 8b 75 08 mov 0x8(%rbp),%rsi 0.00 : 71ed4: 48 8b 5d 10 mov 0x10(%rbp),%rbx 0.00 : 71ed8: 48 29 f3 sub %rsi,%rbx 0.00 : 71edb: 4c 39 e3 cmp %r12,%rbx 0.00 : 71ede: 0f 83 b4 00 00 00 jae 71f98 <_IO_file_xsgetn+0xf8> 0.00 : 71ee4: 48 85 db test %rbx,%rbx 0.00 : 71ee7: 0f 85 db 00 00 00 jne 71fc8 <_IO_file_xsgetn+0x128> 0.00 : 71eed: 8b 45 00 mov 0x0(%rbp),%eax 0.00 : 71ef0: f6 c4 01 test $0x1,%ah 0.00 : 71ef3: 0f 85 bf 00 00 00 jne 71fb8 <_IO_file_xsgetn+0x118> 0.00 : 71ef9: 48 8b 4d 38 mov 0x38(%rbp),%rcx 0.00 : 71efd: 48 85 c9 test %rcx,%rcx 0.00 : 71f00: 74 10 je 71f12 <_IO_file_xsgetn+0x72> 0.00 : 71f02: 48 8b 45 40 mov 0x40(%rbp),%rax 0.00 : 71f06: 48 29 c8 sub %rcx,%rax 0.00 : 71f09: 49 39 c4 cmp %rax,%r12 0.00 : 71f0c: 0f 82 d6 00 00 00 jb 71fe8 <_IO_file_xsgetn+0x148> 0.00 : 71f12: 48 85 c9 test %rcx,%rcx 0.00 : 71f15: 48 89 4d 18 mov %rcx,0x18(%rbp) 0.00 : 71f19: 48 89 4d 08 mov %rcx,0x8(%rbp) 0.00 : 71f1d: 48 89 4d 10 mov %rcx,0x10(%rbp) 0.00 : 71f21: 48 89 4d 28 mov %rcx,0x28(%rbp) 0.00 : 71f25: 4c 89 e2 mov %r12,%rdx 0.00 : 71f28: 48 89 4d 20 mov %rcx,0x20(%rbp) 0.00 : 71f2c: 48 89 4d 30 mov %rcx,0x30(%rbp) 0.00 : 71f30: 74 1e je 71f50 <_IO_file_xsgetn+0xb0> 0.00 : 71f32: 48 8b 75 40 mov 0x40(%rbp),%rsi 0.00 : 71f36: 48 29 ce sub %rcx,%rsi 0.00 : 71f39: 48 83 fe 7f cmp $0x7f,%rsi 0.00 : 71f3d: 76 11 jbe 71f50 <_IO_file_xsgetn+0xb0> 0.00 : 71f3f: 4c 89 e0 mov %r12,%rax 0.00 : 71f42: 31 d2 xor %edx,%edx 0.00 : 71f44: 48 f7 f6 div %rsi 0.00 : 71f47: 4c 89 e0 mov %r12,%rax 0.00 : 71f4a: 48 29 d0 sub %rdx,%rax 0.00 : 71f4d: 48 89 c2 mov %rax,%rdx 0.00 : 71f50: 48 8b 85 d8 00 00 00 mov 0xd8(%rbp),%rax 0.00 : 71f57: 4c 89 ee mov %r13,%rsi 0.00 : 71f5a: 48 89 ef mov %rbp,%rdi 0.00 : 71f5d: ff 50 70 callq *0x70(%rax) 0.00 : 71f60: 48 83 f8 00 cmp $0x0,%rax 0.00 : 71f64: 0f 8e 9e 00 00 00 jle 72008 <_IO_file_xsgetn+0x168> 0.00 : 71f6a: 48 8b 95 90 00 00 00 mov 0x90(%rbp),%rdx 0.00 : 71f71: 49 01 c5 add %rax,%r13 0.00 : 71f74: 49 29 c4 sub %rax,%r12 0.00 : 71f77: 48 83 fa ff cmp $0xffffffffffffffff,%rdx 0.00 : 71f7b: 74 0a je 71f87 <_IO_file_xsgetn+0xe7> 0.00 : 71f7d: 48 01 d0 add %rdx,%rax 0.00 : 71f80: 48 89 85 90 00 00 00 mov %rax,0x90(%rbp) 0.00 : 71f87: 4d 85 e4 test %r12,%r12 0.00 : 71f8a: 0f 85 40 ff ff ff jne 71ed0 <_IO_file_xsgetn+0x30> 0.00 : 71f90: eb 15 jmp 71fa7 <_IO_file_xsgetn+0x107> 0.00 : 71f92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 71f98: 4c 89 e2 mov %r12,%rdx 0.00 : 71f9b: 4c 89 ef mov %r13,%rdi 0.00 : 71f9e: e8 ad 27 01 00 callq 84750 0.00 : 71fa3: 4c 01 65 08 add %r12,0x8(%rbp) 0.00 : 71fa7: 5b pop %rbx 0.00 : 71fa8: 5d pop %rbp 0.00 : 71fa9: 41 5c pop %r12 0.00 : 71fab: 41 5d pop %r13 0.00 : 71fad: 4c 89 f0 mov %r14,%rax 0.00 : 71fb0: 41 5e pop %r14 0.00 : 71fb2: c3 retq 0.00 : 71fb3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 71fb8: 48 89 ef mov %rbp,%rdi 0.00 : 71fbb: e8 00 1d 00 00 callq 73cc0 <_IO_switch_to_main_get_area> 0.00 : 71fc0: eb c5 jmp 71f87 <_IO_file_xsgetn+0xe7> 0.00 : 71fc2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 71fc8: 4c 89 ef mov %r13,%rdi 0.00 : 71fcb: 48 89 da mov %rbx,%rdx 0.00 : 71fce: 49 29 dc sub %rbx,%r12 0.00 : 71fd1: e8 ba 1f 01 00 callq 83f90 <__mempcpy> 0.00 : 71fd6: 48 01 5d 08 add %rbx,0x8(%rbp) 0.00 : 71fda: 49 89 c5 mov %rax,%r13 0.00 : 71fdd: e9 0b ff ff ff jmpq 71eed <_IO_file_xsgetn+0x4d> 0.00 : 71fe2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 71fe8: 48 89 ef mov %rbp,%rdi 0.00 : 71feb: e8 e0 32 00 00 callq 752d0 <__underflow> 0.00 : 71ff0: 83 c0 01 add $0x1,%eax 0.00 : 71ff3: 75 92 jne 71f87 <_IO_file_xsgetn+0xe7> 0.00 : 71ff5: 4d 29 e6 sub %r12,%r14 0.00 : 71ff8: 5b pop %rbx 0.00 : 71ff9: 5d pop %rbp 0.00 : 71ffa: 41 5c pop %r12 0.00 : 71ffc: 41 5d pop %r13 0.00 : 71ffe: 4c 89 f0 mov %r14,%rax 0.00 : 72001: 41 5e pop %r14 0.00 : 72003: c3 retq 0.00 : 72004: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 72008: 75 09 jne 72013 <_IO_file_xsgetn+0x173> 0.00 : 7200a: 83 4d 00 10 orl $0x10,0x0(%rbp) 0.00 : 7200e: 4d 29 e6 sub %r12,%r14 0.00 : 72011: eb e5 jmp 71ff8 <_IO_file_xsgetn+0x158> 0.00 : 72013: 83 4d 00 20 orl $0x20,0x0(%rbp) 0.00 : 72017: 4d 29 e6 sub %r12,%r14 0.00 : 7201a: 5b pop %rbx 0.00 : 7201b: 5d pop %rbp 0.00 : 7201c: 41 5c pop %r12 0.00 : 7201e: 41 5d pop %r13 0.00 : 72020: 4c 89 f0 mov %r14,%rax 0.00 : 72023: 41 5e pop %r14 0.00 : 72025: c3 retq 0.00 : 72026: 48 8b 7f 48 mov 0x48(%rdi),%rdi 0.00 : 7202a: 48 85 ff test %rdi,%rdi 0.00 : 7202d: 74 0c je 7203b <_IO_file_xsgetn+0x19b> 0.00 : 7202f: e8 6c c8 fa ff callq 1e8a0 0.00 : 72034: 81 65 00 ff fe ff ff andl $0xfffffeff,0x0(%rbp) 0.00 : 7203b: 48 89 ef mov %rbp,%rdi 0.00 : 7203e: e8 8d 1d 00 00 callq 73dd0 <_IO_doallocbuf> 0.00 : 72043: e9 74 fe ff ff jmpq 71ebc <_IO_file_xsgetn+0x1c> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072520 <_IO_file_underflow@@GLIBC_2.2.5>: 0.00 : 72520: 55 push %rbp 0.00 : 72521: 53 push %rbx 0.00 : 72522: 48 89 fb mov %rdi,%rbx 0.00 : 72525: 48 83 ec 08 sub $0x8,%rsp 0.00 : 72529: 8b 17 mov (%rdi),%edx 0.00 : 7252b: f6 c2 04 test $0x4,%dl 0.00 : 7252e: 0f 85 d4 01 00 00 jne 72708 <_IO_file_underflow@@GLIBC_2.2.5+0x1e8> 0.00 : 72534: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 72538: 48 3b 47 10 cmp 0x10(%rdi),%rax 0.00 : 7253c: 0f 82 4b 01 00 00 jb 7268d <_IO_file_underflow@@GLIBC_2.2.5+0x16d> 0.00 : 72542: 48 83 7f 38 00 cmpq $0x0,0x38(%rdi) 0.00 : 72547: 0f 84 7b 01 00 00 je 726c8 <_IO_file_underflow@@GLIBC_2.2.5+0x1a8> 0.00 : 7254d: 81 e2 02 02 00 00 and $0x202,%edx 0.00 : 72553: 0f 84 d7 00 00 00 je 72630 <_IO_file_underflow@@GLIBC_2.2.5+0x110> 0.00 : 72559: 48 8b 2d 50 08 30 00 mov 0x300850(%rip),%rbp # 372db0 0.00 : 72560: 66 83 7d 00 00 cmpw $0x0,0x0(%rbp) 0.00 : 72565: 48 89 ef mov %rbp,%rdi 0.00 : 72568: 78 5d js 725c7 <_IO_file_underflow@@GLIBC_2.2.5+0xa7> 0.00 : 7256a: 4c 8b 8d 88 00 00 00 mov 0x88(%rbp),%r9 0.00 : 72571: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 72578: 00 00 0.00 : 7257a: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 7257e: 74 3b je 725bb <_IO_file_underflow@@GLIBC_2.2.5+0x9b> 0.00 : 72580: 31 d2 xor %edx,%edx 0.00 : 72582: be 01 00 00 00 mov $0x1,%esi 0.00 : 72587: 89 d0 mov %edx,%eax 0.00 : 72589: 83 3d 24 51 30 00 00 cmpl $0x0,0x305124(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 72590: 74 0d je 7259f <_IO_file_underflow@@GLIBC_2.2.5+0x7f> 0.00 : 72592: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 72597: 0f 85 7b 11 00 00 jne 73718 <_L_lock_1873> 0.00 : 7259d: eb 0a jmp 725a9 <_IO_file_underflow@@GLIBC_2.2.5+0x89> 0.00 : 7259f: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 725a3: 0f 85 6f 11 00 00 jne 73718 <_L_lock_1873> 0.00 : 725a9: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 725b0: 4c 89 50 08 mov %r10,0x8(%rax) 0.00 : 725b4: 4c 8b 8d 88 00 00 00 mov 0x88(%rbp),%r9 0.00 : 725bb: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 725c0: 48 8b 3d e9 07 30 00 mov 0x3007e9(%rip),%rdi # 372db0 0.00 : 725c7: 8b 07 mov (%rdi),%eax 0.00 : 725c9: 25 88 02 00 00 and $0x288,%eax 0.00 : 725ce: 3d 80 02 00 00 cmp $0x280,%eax 0.00 : 725d3: 0f 84 d7 00 00 00 je 726b0 <_IO_file_underflow@@GLIBC_2.2.5+0x190> 0.00 : 725d9: 66 83 7d 00 00 cmpw $0x0,0x0(%rbp) 0.00 : 725de: 78 50 js 72630 <_IO_file_underflow@@GLIBC_2.2.5+0x110> 0.00 : 725e0: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 725e7: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 725ea: 83 e8 01 sub $0x1,%eax 0.00 : 725ed: 85 c0 test %eax,%eax 0.00 : 725ef: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 725f2: 75 3c jne 72630 <_IO_file_underflow@@GLIBC_2.2.5+0x110> 0.00 : 725f4: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 725fb: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 72602: 00 0.00 : 72603: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 7260a: 83 3d a3 50 30 00 00 cmpl $0x0,0x3050a3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 72611: 74 0b je 7261e <_IO_file_underflow@@GLIBC_2.2.5+0xfe> 0.00 : 72613: f0 ff 0a lock decl (%rdx) 0.00 : 72616: 0f 85 17 11 00 00 jne 73733 <_L_unlock_1914> 0.00 : 7261c: eb 08 jmp 72626 <_IO_file_underflow@@GLIBC_2.2.5+0x106> 0.00 : 7261e: ff 0a decl (%rdx) 0.00 : 72620: 0f 85 0d 11 00 00 jne 73733 <_L_unlock_1914> 0.00 : 72626: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7262d: 00 00 00 0.00 : 72630: 48 89 df mov %rbx,%rdi 0.00 : 72633: e8 e8 16 00 00 callq 73d20 <_IO_switch_to_get_mode> 0.00 : 72638: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 7263c: 48 8b 53 40 mov 0x40(%rbx),%rdx 0.00 : 72640: 48 89 df mov %rbx,%rdi 0.00 : 72643: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 7264a: 48 29 f2 sub %rsi,%rdx 0.00 : 7264d: 48 89 73 08 mov %rsi,0x8(%rbx) 0.00 : 72651: 48 89 73 18 mov %rsi,0x18(%rbx) 0.00 : 72655: 48 89 73 10 mov %rsi,0x10(%rbx) 0.00 : 72659: 48 89 73 30 mov %rsi,0x30(%rbx) 0.00 : 7265d: 48 89 73 28 mov %rsi,0x28(%rbx) 0.00 : 72661: 48 89 73 20 mov %rsi,0x20(%rbx) 0.00 : 72665: ff 50 70 callq *0x70(%rax) 0.00 : 72668: 48 83 f8 00 cmp $0x0,%rax 0.00 : 7266c: 7e 32 jle 726a0 <_IO_file_underflow@@GLIBC_2.2.5+0x180> 0.00 : 7266e: 48 8b 93 90 00 00 00 mov 0x90(%rbx),%rdx 0.00 : 72675: 48 01 43 10 add %rax,0x10(%rbx) 0.00 : 72679: 48 83 fa ff cmp $0xffffffffffffffff,%rdx 0.00 : 7267d: 74 0a je 72689 <_IO_file_underflow@@GLIBC_2.2.5+0x169> 0.00 : 7267f: 48 01 d0 add %rdx,%rax 0.00 : 72682: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) 0.00 : 72689: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7268d: 0f b6 00 movzbl (%rax),%eax 0.00 : 72690: 48 83 c4 08 add $0x8,%rsp 0.00 : 72694: 5b pop %rbx 0.00 : 72695: 5d pop %rbp 0.00 : 72696: c3 retq 0.00 : 72697: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7269e: 00 00 0.00 : 726a0: 75 56 jne 726f8 <_IO_file_underflow@@GLIBC_2.2.5+0x1d8> 0.00 : 726a2: 83 0b 10 orl $0x10,(%rbx) 0.00 : 726a5: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 726aa: eb e4 jmp 72690 <_IO_file_underflow@@GLIBC_2.2.5+0x170> 0.00 : 726ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 726b0: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 726b7: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 726bc: ff 50 18 callq *0x18(%rax) 0.00 : 726bf: e9 15 ff ff ff jmpq 725d9 <_IO_file_underflow@@GLIBC_2.2.5+0xb9> 0.00 : 726c4: 0f 1f 40 00 nopl 0x0(%rax) 100.00 : 726c8: 48 8b 7f 48 mov 0x48(%rdi),%rdi 0.00 : 726cc: 48 85 ff test %rdi,%rdi 0.00 : 726cf: 74 12 je 726e3 <_IO_file_underflow@@GLIBC_2.2.5+0x1c3> 0.00 : 726d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 726d8: e8 c3 c1 fa ff callq 1e8a0 0.00 : 726dd: 81 23 ff fe ff ff andl $0xfffffeff,(%rbx) 0.00 : 726e3: 48 89 df mov %rbx,%rdi 0.00 : 726e6: e8 e5 16 00 00 callq 73dd0 <_IO_doallocbuf> 0.00 : 726eb: 8b 13 mov (%rbx),%edx 0.00 : 726ed: e9 5b fe ff ff jmpq 7254d <_IO_file_underflow@@GLIBC_2.2.5+0x2d> 0.00 : 726f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 726f8: 83 0b 20 orl $0x20,(%rbx) 0.00 : 726fb: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 72700: eb 8e jmp 72690 <_IO_file_underflow@@GLIBC_2.2.5+0x170> 0.00 : 72702: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72708: 83 ca 20 or $0x20,%edx 0.00 : 7270b: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 72712: 00 00 0.00 : 72714: 89 17 mov %edx,(%rdi) 0.00 : 72716: 48 8b 15 1b f7 2f 00 mov 0x2ff71b(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 7271d: c7 04 10 09 00 00 00 movl $0x9,(%rax,%rdx,1) 0.00 : 72724: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 72729: e9 62 ff ff ff jmpq 72690 <_IO_file_underflow@@GLIBC_2.2.5+0x170> 0.00 : 7272e: 66 83 7d 00 00 cmpw $0x0,0x0(%rbp) 0.00 : 72733: 49 89 c0 mov %rax,%r8 0.00 : 72736: 78 46 js 7277e <_IO_file_underflow@@GLIBC_2.2.5+0x25e> 0.00 : 72738: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 7273f: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 72742: 83 e8 01 sub $0x1,%eax 0.00 : 72745: 85 c0 test %eax,%eax 0.00 : 72747: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 7274a: 75 32 jne 7277e <_IO_file_underflow@@GLIBC_2.2.5+0x25e> 0.00 : 7274c: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 72753: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 7275a: 00 0.00 : 7275b: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 72762: 83 3d 4b 4f 30 00 00 cmpl $0x0,0x304f4b(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 72769: 74 0b je 72776 <_IO_file_underflow@@GLIBC_2.2.5+0x256> 0.00 : 7276b: f0 ff 0a lock decl (%rdx) 0.00 : 7276e: 0f 85 da 0f 00 00 jne 7374e <_L_unlock_2076> 0.00 : 72774: eb 08 jmp 7277e <_IO_file_underflow@@GLIBC_2.2.5+0x25e> 0.00 : 72776: ff 0a decl (%rdx) 0.00 : 72778: 0f 85 d0 0f 00 00 jne 7374e <_L_unlock_2076> 0.00 : 7277e: 4c 89 c7 mov %r8,%rdi 0.00 : 72781: e8 da c7 fa ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072f50 <_IO_file_open>: 50.00 : 72f50: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 50.00 : 72f55: 48 89 fb mov %rdi,%rbx 0.00 : 72f58: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 72f5d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 72f62: 48 83 ec 18 sub $0x18,%rsp 0.00 : 72f66: f6 43 74 02 testb $0x2,0x74(%rbx) 0.00 : 72f6a: 48 89 f7 mov %rsi,%rdi 0.00 : 72f6d: 89 d0 mov %edx,%eax 0.00 : 72f6f: 44 89 c5 mov %r8d,%ebp 0.00 : 72f72: 0f 85 a4 00 00 00 jne 7301c <_IO_file_open+0xcc> 0.00 : 72f78: 89 c6 mov %eax,%esi 0.00 : 72f7a: 89 ca mov %ecx,%edx 0.00 : 72f7c: 31 c0 xor %eax,%eax 0.00 : 72f7e: e8 4d a2 05 00 callq cd1d0 <__open> 0.00 : 72f83: 41 89 c4 mov %eax,%r12d 0.00 : 72f86: 45 85 e4 test %r12d,%r12d 0.00 : 72f89: 0f 88 89 00 00 00 js 73018 <_IO_file_open+0xc8> 0.00 : 72f8f: 8b 03 mov (%rbx),%eax 0.00 : 72f91: 89 ea mov %ebp,%edx 0.00 : 72f93: 81 e5 04 10 00 00 and $0x1004,%ebp 0.00 : 72f99: 81 e2 0c 10 00 00 and $0x100c,%edx 0.00 : 72f9f: 44 89 63 70 mov %r12d,0x70(%rbx) 0.00 : 72fa3: 25 f3 ef ff ff and $0xffffeff3,%eax 0.00 : 72fa8: 09 c2 or %eax,%edx 0.00 : 72faa: 81 fd 04 10 00 00 cmp $0x1004,%ebp 0.00 : 72fb0: 89 13 mov %edx,(%rbx) 0.00 : 72fb2: 74 24 je 72fd8 <_IO_file_open+0x88> 0.00 : 72fb4: 48 89 df mov %rbx,%rdi 0.00 : 72fb7: e8 c4 0a 00 00 callq 73a80 <_IO_link_in> 0.00 : 72fbc: 48 89 d8 mov %rbx,%rax 0.00 : 72fbf: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 72fc4: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 72fc8: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 72fcd: 48 83 c4 18 add $0x18,%rsp 0.00 : 72fd1: c3 retq 0.00 : 72fd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72fd8: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72fdf: 31 f6 xor %esi,%esi 0.00 : 72fe1: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 72fe6: ba 02 00 00 00 mov $0x2,%edx 0.00 : 72feb: 48 89 df mov %rbx,%rdi 0.00 : 72fee: ff 50 48 callq *0x48(%rax) 0.00 : 72ff1: 48 83 c0 01 add $0x1,%rax 0.00 : 72ff5: 75 bd jne 72fb4 <_IO_file_open+0x64> 0.00 : 72ff7: 48 8b 15 3a ee 2f 00 mov 0x2fee3a(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 72ffe: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 73005: 00 00 0.00 : 73007: 83 3c 10 1d cmpl $0x1d,(%rax,%rdx,1) 0.00 : 7300b: 74 a7 je 72fb4 <_IO_file_open+0x64> 0.00 : 7300d: 44 89 e7 mov %r12d,%edi 0.00 : 73010: e8 54 a5 05 00 callq cd569 <__close_nocancel> 0.00 : 73015: 0f 1f 00 nopl (%rax) 0.00 : 73018: 31 db xor %ebx,%ebx 0.00 : 7301a: eb a0 jmp 72fbc <_IO_file_open+0x6c> 0.00 : 7301c: 89 c6 mov %eax,%esi 0.00 : 7301e: 89 ca mov %ecx,%edx 0.00 : 73020: 31 c0 xor %eax,%eax 0.00 : 73022: e8 b2 a1 05 00 callq cd1d9 <__open_nocancel> 0.00 : 73027: 41 89 c4 mov %eax,%r12d 0.00 : 7302a: e9 57 ff ff ff jmpq 72f86 <_IO_file_open+0x36> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073e30 <_IO_default_uflow>: 100.00 : 73e30: 53 push %rbx 0.00 : 73e31: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 73e38: 48 89 fb mov %rdi,%rbx 0.00 : 73e3b: ff 50 20 callq *0x20(%rax) 0.00 : 73e3e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 73e41: 89 c2 mov %eax,%edx 0.00 : 73e43: 74 0f je 73e54 <_IO_default_uflow+0x24> 0.00 : 73e45: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 73e49: 0f b6 10 movzbl (%rax),%edx 0.00 : 73e4c: 48 83 c0 01 add $0x1,%rax 0.00 : 73e50: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 73e54: 89 d0 mov %edx,%eax 0.00 : 73e56: 5b pop %rbx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074010 <_IO_no_init>: 0.00 : 74010: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 74015: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 7401a: 89 d3 mov %edx,%ebx 0.00 : 7401c: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 74021: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 74026: 48 83 ec 28 sub $0x28,%rsp 0.00 : 7402a: 48 89 fd mov %rdi,%rbp 0.00 : 7402d: 49 89 cc mov %rcx,%r12 0.00 : 74030: 4d 89 c5 mov %r8,%r13 0.00 : 74033: e8 28 ff ff ff callq 73f60 <_IO_old_init> 0.00 : 74038: 85 db test %ebx,%ebx 0.00 : 7403a: 89 9d c0 00 00 00 mov %ebx,0xc0(%rbp) 0.00 : 74040: 0f 88 b3 00 00 00 js 740f9 <_IO_no_init+0xe9> 0.00 : 74046: 4c 89 a5 a0 00 00 00 mov %r12,0xa0(%rbp) 0.00 : 7404d: 49 c7 44 24 30 00 00 movq $0x0,0x30(%r12) 0.00 : 74054: 00 00 0.00 : 74056: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 7405d: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 74064: 00 0.00 : 74065: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 7406c: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 74073: 00 0.00 : 74074: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 7407b: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 74082: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 74089: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 74090: 00 0.00 : 74091: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 74098: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 7409f: 00 0.00 : 740a0: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 740a7: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 740ae: 00 0.00 : 740af: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 740b6: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 740bd: 00 0.00 : 740be: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 740c5: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 740cc: 00 0.00 : 740cd: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 740d4: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 740db: 00 0.00 : 740dc: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 740e3: 48 c7 40 50 00 00 00 movq $0x0,0x50(%rax) 0.00 : 740ea: 00 0.00 : 740eb: 48 8b 85 a0 00 00 00 mov 0xa0(%rbp),%rax 0.00 : 740f2: 4c 89 a8 40 01 00 00 mov %r13,0x140(%rax) 0.00 : 740f9: 48 c7 85 a8 00 00 00 movq $0x0,0xa8(%rbp) 0.00 : 74100: 00 00 00 00 100.00 : 74104: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 74109: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7410e: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 74113: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 74118: 48 83 c4 28 add $0x28,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000826a0 <__GI_strrchr>: 0.00 : 826a0: 66 0f 6e ce movd %esi,%xmm1 0.00 : 826a4: 48 89 f9 mov %rdi,%rcx 0.00 : 826a7: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 826ab: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 826af: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 826b3: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 826b7: 83 ce ff or $0xffffffff,%esi 0.00 : 826ba: 66 0f 6f 07 movdqa (%rdi),%xmm0 0.00 : 826be: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 826c3: 48 29 f9 sub %rdi,%rcx 0.00 : 826c6: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 826ca: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 826ce: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 826d2: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 826d6: d3 e6 shl %cl,%esi 0.00 : 826d8: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 826dc: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 826e0: 21 f2 and %esi,%edx 0.00 : 826e2: 21 f1 and %esi,%ecx 0.00 : 826e4: 31 c0 xor %eax,%eax 0.00 : 826e6: 89 d6 mov %edx,%esi 0.00 : 826e8: 09 ce or %ecx,%esi 0.00 : 826ea: 75 22 jne 8270e <__GI_strrchr+0x6e> 0.00 : 826ec: 66 0f 6f 07 movdqa (%rdi),%xmm0 0.00 : 826f0: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 826f4: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 826f8: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 826fc: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 82700: 66 0f d7 d0 pmovmskb %xmm0,%edx 100.00 : 82704: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 82708: 89 d6 mov %edx,%esi 0.00 : 8270a: 09 ce or %ecx,%esi 0.00 : 8270c: 74 de je 826ec <__GI_strrchr+0x4c> 0.00 : 8270e: 44 0f bc c9 bsf %ecx,%r9d 0.00 : 82712: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 82718: b9 1f 00 00 00 mov $0x1f,%ecx 0.00 : 8271d: 75 0c jne 8272b <__GI_strrchr+0x8b> 0.00 : 8271f: 0f bd d2 bsr %edx,%edx 0.00 : 82722: 74 c8 je 826ec <__GI_strrchr+0x4c> 0.00 : 82724: 48 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%rax 0.00 : 82729: eb c1 jmp 826ec <__GI_strrchr+0x4c> 0.00 : 8272b: 44 29 c9 sub %r9d,%ecx 0.00 : 8272e: 41 d3 e8 shr %cl,%r8d 0.00 : 82731: 44 21 c2 and %r8d,%edx 0.00 : 82734: 0f bd d2 bsr %edx,%edx 0.00 : 82737: 74 05 je 8273e <__GI_strrchr+0x9e> 0.00 : 82739: 48 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000a9600 : 0.00 : a9600: b8 6b 00 00 00 mov $0x6b,%eax 100.00 : a9605: 0f 05 syscall Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b3c10 : 0.00 : b3c10: 41 57 push %r15 0.00 : b3c12: 41 56 push %r14 0.00 : b3c14: 41 55 push %r13 0.00 : b3c16: 41 54 push %r12 0.00 : b3c18: 55 push %rbp 0.00 : b3c19: 48 89 fd mov %rdi,%rbp 0.00 : b3c1c: 53 push %rbx 0.00 : b3c1d: 48 83 ec 38 sub $0x38,%rsp 0.00 : b3c21: 83 7f 68 10 cmpl $0x10,0x68(%rdi) 0.00 : b3c25: 0f 8f a4 01 00 00 jg b3dcf 0.00 : b3c2b: 8b 47 34 mov 0x34(%rdi),%eax 0.00 : b3c2e: 39 47 40 cmp %eax,0x40(%rdi) 0.00 : b3c31: 8b 5f 2c mov 0x2c(%rdi),%ebx 0.00 : b3c34: 41 89 c4 mov %eax,%r12d 0.00 : b3c37: 44 0f 4e 67 40 cmovle 0x40(%rdi),%r12d 0.00 : b3c3c: 41 39 dc cmp %ebx,%r12d 0.00 : b3c3f: 0f 8e db 00 00 00 jle b3d20 0.00 : b3c45: 48 8d 44 24 10 lea 0x10(%rsp),%rax 0.00 : b3c4a: 4c 8d 77 20 lea 0x20(%rdi),%r14 0.00 : b3c4e: 4c 8d 7c 24 2c lea 0x2c(%rsp),%r15 0.00 : b3c53: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : b3c58: eb 11 jmp b3c6b 0.00 : b3c5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b3c60: 89 f3 mov %esi,%ebx 0.00 : b3c62: 41 39 dc cmp %ebx,%r12d 0.00 : b3c65: 0f 8e b5 00 00 00 jle b3d20 0.00 : b3c6b: 48 8b 4d 50 mov 0x50(%rbp),%rcx 0.00 : b3c6f: 44 89 e7 mov %r12d,%edi 0.00 : b3c72: 4c 8b 6d 20 mov 0x20(%rbp),%r13 0.00 : b3c76: 29 df sub %ebx,%edi 0.00 : b3c78: 48 85 c9 test %rcx,%rcx 0.00 : b3c7b: 0f 85 b4 00 00 00 jne b3d35 0.00 : b3c81: 48 63 45 28 movslq 0x28(%rbp),%rax 0.00 : b3c85: 48 63 d3 movslq %ebx,%rdx 0.00 : b3c88: 48 8d 34 02 lea (%rdx,%rax,1),%rsi 0.00 : b3c8c: 48 03 75 00 add 0x0(%rbp),%rsi 0.00 : b3c90: 48 63 d7 movslq %edi,%rdx 0.00 : b3c93: 4c 89 f1 mov %r14,%rcx 0.00 : b3c96: 4c 89 ff mov %r15,%rdi 0.00 : b3c99: e8 f2 90 fd ff callq 8cd90 <__mbrtowc> 0.00 : b3c9e: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : b3ca2: 48 89 c2 mov %rax,%rdx 0.00 : b3ca5: 0f 84 ef 00 00 00 je b3d9a 0.00 : b3cab: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : b3caf: 89 d7 mov %edx,%edi 0.00 : b3cb1: 48 83 f8 fd cmp $0xfffffffffffffffd,%rax 0.00 : b3cb5: 0f 87 ea 00 00 00 ja b3da5 0.00 : b3cbb: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : b3cbf: 8b 44 24 2c mov 0x2c(%rsp),%eax 0.00 : b3cc3: 48 63 cb movslq %ebx,%rcx 0.00 : b3cc6: 8d 73 01 lea 0x1(%rbx),%esi 100.00 : b3cc9: 89 04 8a mov %eax,(%rdx,%rcx,4) 0.00 : b3ccc: 8d 0c 3b lea (%rbx,%rdi,1),%ecx 0.00 : b3ccf: 39 ce cmp %ecx,%esi 0.00 : b3cd1: 7d 8d jge b3c60 0.00 : b3cd3: ba fe ff ff ff mov $0xfffffffe,%edx 0.00 : b3cd8: 48 63 c6 movslq %esi,%rax 0.00 : b3cdb: 29 da sub %ebx,%edx 0.00 : b3cdd: 48 8d 3c 85 00 00 00 lea 0x0(,%rax,4),%rdi 0.00 : b3ce4: 00 0.00 : b3ce5: 8d 0c 0a lea (%rdx,%rcx,1),%ecx 0.00 : b3ce8: 89 ca mov %ecx,%edx 0.00 : b3cea: 48 8d 44 10 01 lea 0x1(%rax,%rdx,1),%rax 0.00 : b3cef: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : b3cf6: 00 0.00 : b3cf7: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b3cfb: c7 04 38 ff ff ff ff movl $0xffffffff,(%rax,%rdi,1) 0.00 : b3d02: 48 83 c7 04 add $0x4,%rdi 0.00 : b3d06: 48 39 d7 cmp %rdx,%rdi 0.00 : b3d09: 75 ec jne b3cf7 0.00 : b3d0b: 8d 5c 0e 01 lea 0x1(%rsi,%rcx,1),%ebx 0.00 : b3d0f: 41 39 dc cmp %ebx,%r12d 0.00 : b3d12: 0f 8f 53 ff ff ff jg b3c6b 0.00 : b3d18: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b3d1f: 00 0.00 : b3d20: 89 5d 2c mov %ebx,0x2c(%rbp) 0.00 : b3d23: 89 5d 30 mov %ebx,0x30(%rbp) 0.00 : b3d26: 48 83 c4 38 add $0x38,%rsp 0.00 : b3d2a: 5b pop %rbx 0.00 : b3d2b: 5d pop %rbp 0.00 : b3d2c: 41 5c pop %r12 0.00 : b3d2e: 41 5d pop %r13 0.00 : b3d30: 41 5e pop %r14 0.00 : b3d32: 41 5f pop %r15 0.00 : b3d34: c3 retq 0.00 : b3d35: 44 8b 5d 68 mov 0x68(%rbp),%r11d 0.00 : b3d39: 45 85 db test %r11d,%r11d 0.00 : b3d3c: 7e 42 jle b3d80 0.00 : b3d3e: 85 ff test %edi,%edi 0.00 : b3d40: 7e 3e jle b3d80 0.00 : b3d42: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : b3d47: 4c 63 cb movslq %ebx,%r9 0.00 : b3d4a: 31 f6 xor %esi,%esi 0.00 : b3d4c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b3d50: 89 d8 mov %ebx,%eax 0.00 : b3d52: 03 45 28 add 0x28(%rbp),%eax 0.00 : b3d55: 48 8b 55 00 mov 0x0(%rbp),%rdx 0.00 : b3d59: 01 f0 add %esi,%eax 0.00 : b3d5b: 83 c6 01 add $0x1,%esi 0.00 : b3d5e: 48 98 cltq 0.00 : b3d60: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : b3d64: 0f b6 14 01 movzbl (%rcx,%rax,1),%edx 0.00 : b3d68: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : b3d6c: 42 88 14 08 mov %dl,(%rax,%r9,1) 0.00 : b3d70: 41 88 10 mov %dl,(%r8) 0.00 : b3d73: 49 83 c1 01 add $0x1,%r9 0.00 : b3d77: 49 83 c0 01 add $0x1,%r8 0.00 : b3d7b: 39 75 68 cmp %esi,0x68(%rbp) 0.00 : b3d7e: 7f 10 jg b3d90 0.00 : b3d80: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : b3d85: e9 06 ff ff ff jmpq b3c90 0.00 : b3d8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b3d90: 39 f7 cmp %esi,%edi 0.00 : b3d92: 7e ec jle b3d80 0.00 : b3d94: 48 8b 4d 50 mov 0x50(%rbp),%rcx 0.00 : b3d98: eb b6 jmp b3d50 0.00 : b3d9a: 4c 89 6d 20 mov %r13,0x20(%rbp) 0.00 : b3d9e: 66 90 xchg %ax,%ax 0.00 : b3da0: e9 7b ff ff ff jmpq b3d20 0.00 : b3da5: 89 d8 mov %ebx,%eax 0.00 : b3da7: 03 45 28 add 0x28(%rbp),%eax 0.00 : b3daa: 48 8b 55 00 mov 0x0(%rbp),%rdx 0.00 : b3dae: 48 98 cltq 0.00 : b3db0: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : b3db4: 89 44 24 2c mov %eax,0x2c(%rsp) 0.00 : b3db8: 48 8b 55 50 mov 0x50(%rbp),%rdx 0.00 : b3dbc: 48 85 d2 test %rdx,%rdx 0.00 : b3dbf: 75 2d jne b3dee 0.00 : b3dc1: 4c 89 6d 20 mov %r13,0x20(%rbp) 0.00 : b3dc5: bf 01 00 00 00 mov $0x1,%edi 0.00 : b3dca: e9 ec fe ff ff jmpq b3cbb 0.00 : b3dcf: 48 8d 0d da ed 08 00 lea 0x8edda(%rip),%rcx # 142bb0 <__PRETTY_FUNCTION__.12201> 0.00 : b3dd6: 48 8d 35 b8 86 08 00 lea 0x886b8(%rip),%rsi # 13c495 <__PRETTY_FUNCTION__.10792+0x70> 0.00 : b3ddd: 48 8d 3d c2 86 08 00 lea 0x886c2(%rip),%rdi # 13c4a6 <__PRETTY_FUNCTION__.10792+0x81> 0.00 : b3de4: ba cf 00 00 00 mov $0xcf,%edx 0.00 : b3de9: e8 32 7b f7 ff callq 2b920 <__assert_fail> 0.00 : b3dee: 48 98 cltq 0.00 : b3df0: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : b3df4: 89 44 24 2c mov %eax,0x2c(%rsp) 0.00 : b3df8: eb c7 jmp b3dc1 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b6430 : 33.33 : b6430: 41 57 push %r15 0.00 : b6432: 41 56 push %r14 0.00 : b6434: 4c 63 f6 movslq %esi,%r14 0.00 : b6437: 49 c1 e6 04 shl $0x4,%r14 0.00 : b643b: 41 55 push %r13 33.33 : b643d: 41 54 push %r12 0.00 : b643f: 55 push %rbp 0.00 : b6440: 89 cd mov %ecx,%ebp 0.00 : b6442: 53 push %rbx 0.00 : b6443: 48 83 ec 78 sub $0x78,%rsp 0.00 : b6447: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : b644c: 4c 03 37 add (%rdi),%r14 0.00 : b644f: 41 0f b6 46 08 movzbl 0x8(%r14),%eax 0.00 : b6454: 3c 07 cmp $0x7,%al 0.00 : b6456: 88 44 24 23 mov %al,0x23(%rsp) 0.00 : b645a: 0f 84 c0 04 00 00 je b6920 0.00 : b6460: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : b6465: 8b 76 68 mov 0x68(%rsi),%esi 0.00 : b6468: 89 74 24 34 mov %esi,0x34(%rsp) 0.00 : b646c: 83 ee 01 sub $0x1,%esi 0.00 : b646f: 0f 84 bb 01 00 00 je b6630 0.00 : b6475: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : b647a: 8d 45 01 lea 0x1(%rbp),%eax 0.00 : b647d: 44 8b 42 2c mov 0x2c(%rdx),%r8d 0.00 : b6481: 41 39 c0 cmp %eax,%r8d 0.00 : b6484: 0f 8e a6 01 00 00 jle b6630 0.00 : b648a: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : b648e: 48 98 cltq 0.00 : b6490: 83 3c 82 ff cmpl $0xffffffff,(%rdx,%rax,4) 0.00 : b6494: 0f 85 96 01 00 00 jne b6630 0.00 : b649a: 8d 45 02 lea 0x2(%rbp),%eax 0.00 : b649d: bb 01 00 00 00 mov $0x1,%ebx 0.00 : b64a2: 48 98 cltq 0.00 : b64a4: 48 8d 14 82 lea (%rdx,%rax,4),%rdx 0.00 : b64a8: eb 11 jmp b64bb 0.00 : b64aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b64b0: 8b 02 mov (%rdx),%eax 0.00 : b64b2: 48 83 c2 04 add $0x4,%rdx 0.00 : b64b6: 83 c0 01 add $0x1,%eax 0.00 : b64b9: 75 0b jne b64c6 0.00 : b64bb: 83 c3 01 add $0x1,%ebx 0.00 : b64be: 8d 04 2b lea (%rbx,%rbp,1),%eax 0.00 : b64c1: 44 39 c0 cmp %r8d,%eax 0.00 : b64c4: 7c ea jl b64b0 0.00 : b64c6: 80 7c 24 23 05 cmpb $0x5,0x23(%rsp) 0.00 : b64cb: 75 43 jne b6510 0.00 : b64cd: 83 fb 01 cmp $0x1,%ebx 0.00 : b64d0: 74 26 je b64f8 0.00 : b64d2: 48 8b 8f c8 00 00 00 mov 0xc8(%rdi),%rcx 0.00 : b64d9: f6 c1 40 test $0x40,%cl 0.00 : b64dc: 0f 84 63 01 00 00 je b6645 0.00 : b64e2: 84 c9 test %cl,%cl 0.00 : b64e4: 79 14 jns b64fa 0.00 : b64e6: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx 0.00 : b64eb: 48 63 d5 movslq %ebp,%rdx 0.00 : b64ee: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : b64f2: 80 3c 10 00 cmpb $0x0,(%rax,%rdx,1) 0.00 : b64f6: 75 02 jne b64fa 0.00 : b64f8: 31 db xor %ebx,%ebx 0.00 : b64fa: 48 83 c4 78 add $0x78,%rsp 0.00 : b64fe: 89 d8 mov %ebx,%eax 0.00 : b6500: 5b pop %rbx 0.00 : b6501: 5d pop %rbp 0.00 : b6502: 41 5c pop %r12 0.00 : b6504: 41 5d pop %r13 0.00 : b6506: 41 5e pop %r14 0.00 : b6508: 41 5f pop %r15 0.00 : b650a: c3 retq 0.00 : b650b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b6510: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi 0.00 : b6517: 00 00 0.00 : b6519: 48 8b 15 68 b8 2b 00 mov 0x2bb868(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : b6520: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : b6526: 48 89 74 24 10 mov %rsi,0x10(%rsp) 0.00 : b652b: 48 8b 04 16 mov (%rsi,%rdx,1),%rax 0.00 : b652f: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : b6533: 44 8b 5f 40 mov 0x40(%rdi),%r11d 0.00 : b6537: 45 85 db test %r11d,%r11d 0.00 : b653a: 0f 84 d8 00 00 00 je b6618 0.00 : b6540: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : b6545: 48 63 c5 movslq %ebp,%rax 0.00 : b6548: 48 8b 4f 60 mov 0x60(%rdi),%rcx 0.00 : b654c: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : b6550: 49 89 f3 mov %rsi,%r11 0.00 : b6553: 48 89 74 24 38 mov %rsi,0x38(%rsp) 0.00 : b6558: 49 01 c3 add %rax,%r11 0.00 : b655b: 48 8b 47 50 mov 0x50(%rdi),%rax 0.00 : b655f: 41 0f b6 13 movzbl (%r11),%edx 0.00 : b6563: 4d 8d 6b 01 lea 0x1(%r11),%r13 0.00 : b6567: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : b656b: 48 85 c0 test %rax,%rax 0.00 : b656e: 0f 88 f4 00 00 00 js b6668 0.00 : b6574: 44 2b 6c 24 38 sub 0x38(%rsp),%r13d 0.00 : b6579: 41 29 ed sub %ebp,%r13d 0.00 : b657c: 41 83 fd 01 cmp $0x1,%r13d 0.00 : b6580: 0f 8e 92 00 00 00 jle b6618 0.00 : b6586: 80 7c 24 23 06 cmpb $0x6,0x23(%rsp) 0.00 : b658b: 0f 85 67 ff ff ff jne b64f8 0.00 : b6591: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : b6596: 4d 8b 36 mov (%r14),%r14 0.00 : b6599: 48 63 ed movslq %ebp,%rbp 0.00 : b659c: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b65a0: 48 89 6c 24 48 mov %rbp,0x48(%rsp) 0.00 : b65a5: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : b65aa: 49 83 7e 40 00 cmpq $0x0,0x40(%r14) 0.00 : b65af: 0f 84 35 02 00 00 je b67ea 0.00 : b65b5: 41 8b 7e 34 mov 0x34(%r14),%edi 0.00 : b65b9: 83 7c 24 34 01 cmpl $0x1,0x34(%rsp) 0.00 : b65be: 0f 84 a4 03 00 00 je b6968 0.00 : b65c4: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : b65c9: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : b65ce: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : b65d2: 8b 14 88 mov (%rax,%rcx,4),%edx 0.00 : b65d5: 85 ff test %edi,%edi 0.00 : b65d7: 41 89 d7 mov %edx,%r15d 0.00 : b65da: 0f 8e 19 02 00 00 jle b67f9 0.00 : b65e0: 49 8b 06 mov (%r14),%rax 0.00 : b65e3: 31 c9 xor %ecx,%ecx 0.00 : b65e5: 3b 10 cmp (%rax),%edx 0.00 : b65e7: 48 89 c6 mov %rax,%rsi 0.00 : b65ea: 75 1b jne b6607 0.00 : b65ec: e9 41 02 00 00 jmpq b6832 0.00 : b65f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b65f8: 8b 46 04 mov 0x4(%rsi),%eax 0.00 : b65fb: 48 83 c6 04 add $0x4,%rsi 0.00 : b65ff: 39 c2 cmp %eax,%edx 0.00 : b6601: 0f 84 2b 02 00 00 je b6832 0.00 : b6607: 83 c1 01 add $0x1,%ecx 0.00 : b660a: 39 f9 cmp %edi,%ecx 0.00 : b660c: 7c ea jl b65f8 0.00 : b660e: e9 e6 01 00 00 jmpq b67f9 0.00 : b6613: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b6618: 83 fb 01 cmp $0x1,%ebx 0.00 : b661b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b6620: 0f 8f 60 ff ff ff jg b6586 0.00 : b6626: 31 db xor %ebx,%ebx 0.00 : b6628: e9 cd fe ff ff jmpq b64fa 0.00 : b662d: 0f 1f 00 nopl (%rax) 0.00 : b6630: 80 7c 24 23 05 cmpb $0x5,0x23(%rsp) 0.00 : b6635: bb 01 00 00 00 mov $0x1,%ebx 0.00 : b663a: 0f 85 d0 fe ff ff jne b6510 33.33 : b6640: e9 88 fe ff ff jmpq b64cd 0.00 : b6645: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : b664a: 48 63 d5 movslq %ebp,%rdx 0.00 : b664d: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : b6651: 80 3c 10 0a cmpb $0xa,(%rax,%rdx,1) 0.00 : b6655: 0f 84 9d fe ff ff je b64f8 0.00 : b665b: 84 c9 test %cl,%cl 0.00 : b665d: 0f 88 83 fe ff ff js b64e6 0.00 : b6663: e9 92 fe ff ff jmpq b64fa 0.00 : b6668: 49 89 c8 mov %rcx,%r8 0.00 : b666b: 49 29 c0 sub %rax,%r8 0.00 : b666e: 66 90 xchg %ax,%ax 0.00 : b6670: 45 8b 10 mov (%r8),%r10d 0.00 : b6673: 45 0f b6 48 04 movzbl 0x4(%r8),%r9d 0.00 : b6678: 49 8d 48 05 lea 0x5(%r8),%rcx 0.00 : b667c: 45 85 d2 test %r10d,%r10d 0.00 : b667f: 78 5f js b66e0 0.00 : b6681: 4d 85 c9 test %r9,%r9 0.00 : b6684: 0f 84 58 01 00 00 je b67e2 0.00 : b668a: 0f b6 01 movzbl (%rcx),%eax 0.00 : b668d: 31 d2 xor %edx,%edx 0.00 : b668f: 41 3a 45 00 cmp 0x0(%r13),%al 0.00 : b6693: 74 18 je b66ad 0.00 : b6695: eb 28 jmp b66bf 0.00 : b6697: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b669e: 00 00 0.00 : b66a0: 41 0f b6 44 10 05 movzbl 0x5(%r8,%rdx,1),%eax 0.00 : b66a6: 41 3a 44 13 01 cmp 0x1(%r11,%rdx,1),%al 0.00 : b66ab: 75 09 jne b66b6 0.00 : b66ad: 48 83 c2 01 add $0x1,%rdx 0.00 : b66b1: 49 39 d1 cmp %rdx,%r9 0.00 : b66b4: 77 ea ja b66a0 0.00 : b66b6: 49 39 d1 cmp %rdx,%r9 0.00 : b66b9: 0f 84 23 01 00 00 je b67e2 0.00 : b66bf: 49 8d 41 01 lea 0x1(%r9),%rax 0.00 : b66c3: 4e 8d 04 09 lea (%rcx,%r9,1),%r8 0.00 : b66c7: 83 e0 03 and $0x3,%eax 0.00 : b66ca: 74 a4 je b6670 0.00 : b66cc: ba 04 00 00 00 mov $0x4,%edx 0.00 : b66d1: 48 29 c2 sub %rax,%rdx 0.00 : b66d4: 49 01 d0 add %rdx,%r8 0.00 : b66d7: eb 97 jmp b6670 0.00 : b66d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b66e0: 4d 85 c9 test %r9,%r9 0.00 : b66e3: 0f 84 f9 00 00 00 je b67e2 0.00 : b66e9: 44 0f b6 39 movzbl (%rcx),%r15d 0.00 : b66ed: 45 0f b6 65 00 movzbl 0x0(%r13),%r12d 0.00 : b66f2: 31 c0 xor %eax,%eax 0.00 : b66f4: 45 38 e7 cmp %r12b,%r15b 0.00 : b66f7: 74 18 je b6711 0.00 : b66f9: e9 54 01 00 00 jmpq b6852 0.00 : b66fe: 66 90 xchg %ax,%ax 0.00 : b6700: 41 0f b6 7c 00 05 movzbl 0x5(%r8,%rax,1),%edi 0.00 : b6706: 41 0f b6 54 03 01 movzbl 0x1(%r11,%rax,1),%edx 0.00 : b670c: 40 38 d7 cmp %dl,%dil 0.00 : b670f: 75 19 jne b672a 0.00 : b6711: 48 83 c0 01 add $0x1,%rax 0.00 : b6715: 49 39 c1 cmp %rax,%r9 0.00 : b6718: 77 e6 ja b6700 0.00 : b671a: 0f 84 c2 00 00 00 je b67e2 0.00 : b6720: 0f b6 3c 01 movzbl (%rcx,%rax,1),%edi 0.00 : b6724: 41 0f b6 54 05 00 movzbl 0x0(%r13,%rax,1),%edx 0.00 : b672a: 40 38 fa cmp %dil,%dl 0.00 : b672d: 72 71 jb b67a0 0.00 : b672f: 42 0f b6 34 09 movzbl (%rcx,%r9,1),%esi 0.00 : b6734: 31 d2 xor %edx,%edx 0.00 : b6736: 45 89 e2 mov %r12d,%r10d 0.00 : b6739: 4b 8d 44 08 06 lea 0x6(%r8,%r9,1),%rax 0.00 : b673e: 44 38 e6 cmp %r12b,%sil 0.00 : b6741: 74 17 je b675a 0.00 : b6743: eb 2f jmp b6774 0.00 : b6745: 0f 1f 00 nopl (%rax) 0.00 : b6748: 0f b6 38 movzbl (%rax),%edi 0.00 : b674b: 45 0f b6 54 13 01 movzbl 0x1(%r11,%rdx,1),%r10d 0.00 : b6751: 48 83 c0 01 add $0x1,%rax 0.00 : b6755: 44 38 d7 cmp %r10b,%dil 0.00 : b6758: 75 6b jne b67c5 0.00 : b675a: 48 83 c2 01 add $0x1,%rdx 0.00 : b675e: 49 39 d1 cmp %rdx,%r9 0.00 : b6761: 77 e5 ja b6748 0.00 : b6763: 74 67 je b67cc 0.00 : b6765: 48 8d 04 11 lea (%rcx,%rdx,1),%rax 0.00 : b6769: 45 0f b6 54 15 00 movzbl 0x0(%r13,%rdx,1),%r10d 0.00 : b676f: 42 0f b6 34 08 movzbl (%rax,%r9,1),%esi 0.00 : b6774: 41 38 f2 cmp %sil,%r10b 0.00 : b6777: 76 50 jbe b67c9 0.00 : b6779: 4b 8d 04 09 lea (%r9,%r9,1),%rax 0.00 : b677d: 4c 8d 04 01 lea (%rcx,%rax,1),%r8 0.00 : b6781: 48 83 c0 01 add $0x1,%rax 0.00 : b6785: 83 e0 03 and $0x3,%eax 0.00 : b6788: 0f 84 e2 fe ff ff je b6670 0.00 : b678e: be 04 00 00 00 mov $0x4,%esi 0.00 : b6793: 48 29 c6 sub %rax,%rsi 0.00 : b6796: 49 01 f0 add %rsi,%r8 0.00 : b6799: e9 d2 fe ff ff jmpq b6670 0.00 : b679e: 66 90 xchg %ax,%ax 0.00 : b67a0: 4b 8d 04 09 lea (%r9,%r9,1),%rax 0.00 : b67a4: 4c 8d 04 01 lea (%rcx,%rax,1),%r8 0.00 : b67a8: 48 83 c0 01 add $0x1,%rax 0.00 : b67ac: 83 e0 03 and $0x3,%eax 0.00 : b67af: 0f 84 bb fe ff ff je b6670 0.00 : b67b5: b9 04 00 00 00 mov $0x4,%ecx 0.00 : b67ba: 48 29 c1 sub %rax,%rcx 0.00 : b67bd: 49 01 c8 add %rcx,%r8 0.00 : b67c0: e9 ab fe ff ff jmpq b6670 0.00 : b67c5: 89 fe mov %edi,%esi 0.00 : b67c7: eb ab jmp b6774 0.00 : b67c9: 44 89 e6 mov %r12d,%esi 0.00 : b67cc: 31 d2 xor %edx,%edx 0.00 : b67ce: 44 38 fe cmp %r15b,%sil 0.00 : b67d1: 75 0f jne b67e2 0.00 : b67d3: 48 83 c2 01 add $0x1,%rdx 0.00 : b67d7: 0f b6 04 11 movzbl (%rcx,%rdx,1),%eax 0.00 : b67db: 41 3a 44 13 01 cmp 0x1(%r11,%rdx,1),%al 0.00 : b67e0: 74 f1 je b67d3 0.00 : b67e2: 4d 01 cd add %r9,%r13 0.00 : b67e5: e9 8a fd ff ff jmpq b6574 0.00 : b67ea: 41 8b 7e 34 mov 0x34(%r14),%edi 0.00 : b67ee: 45 31 ff xor %r15d,%r15d 0.00 : b67f1: 85 ff test %edi,%edi 0.00 : b67f3: 0f 85 c0 fd ff ff jne b65b9 0.00 : b67f9: 45 8b 46 44 mov 0x44(%r14),%r8d 0.00 : b67fd: 45 85 c0 test %r8d,%r8d 0.00 : b6800: 7e 62 jle b6864 0.00 : b6802: 45 31 e4 xor %r12d,%r12d 0.00 : b6805: 31 ed xor %ebp,%ebp 0.00 : b6807: eb 15 jmp b681e 0.00 : b6809: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b6810: 41 83 c4 01 add $0x1,%r12d 0.00 : b6814: 48 83 c5 08 add $0x8,%rbp 0.00 : b6818: 45 39 66 44 cmp %r12d,0x44(%r14) 0.00 : b681c: 7e 46 jle b6864 0.00 : b681e: 49 8b 46 28 mov 0x28(%r14),%rax 0.00 : b6822: 44 89 ff mov %r15d,%edi 0.00 : b6825: 48 8b 34 28 mov (%rax,%rbp,1),%rsi 0.00 : b6829: e8 22 81 02 00 callq de950 <__iswctype> 0.00 : b682e: 85 c0 test %eax,%eax 0.00 : b6830: 74 de je b6810 0.00 : b6832: 89 d8 mov %ebx,%eax 0.00 : b6834: 41 f6 46 30 01 testb $0x1,0x30(%r14) 0.00 : b6839: 74 22 je b685d 0.00 : b683b: 85 c0 test %eax,%eax 0.00 : b683d: 0f 1f 00 nopl (%rax) 0.00 : b6840: 0f 8f b2 fc ff ff jg b64f8 0.00 : b6846: 44 39 eb cmp %r13d,%ebx 0.00 : b6849: 41 0f 4c dd cmovl %r13d,%ebx 0.00 : b684d: e9 a8 fc ff ff jmpq b64fa 0.00 : b6852: 44 89 ff mov %r15d,%edi 0.00 : b6855: 44 89 e2 mov %r12d,%edx 0.00 : b6858: e9 cd fe ff ff jmpq b672a 0.00 : b685d: 89 c3 mov %eax,%ebx 0.00 : b685f: e9 96 fc ff ff jmpq b64fa 0.00 : b6864: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : b6869: 48 8b 35 18 b5 2b 00 mov 0x2bb518(%rip),%rsi # 371d88 <_DYNAMIC+0x228> 0.00 : b6870: 48 8b 04 32 mov (%rdx,%rsi,1),%rax 0.00 : b6874: 4c 8b 50 18 mov 0x18(%rax),%r10 0.00 : b6878: 41 8b 7a 40 mov 0x40(%r10),%edi 0.00 : b687c: 85 ff test %edi,%edi 0.00 : b687e: 0f 84 fe 00 00 00 je b6982 0.00 : b6884: 45 8b 66 38 mov 0x38(%r14),%r12d 0.00 : b6888: 48 8b 6c 24 40 mov 0x40(%rsp),%rbp 0.00 : b688d: 48 03 6c 24 48 add 0x48(%rsp),%rbp 0.00 : b6892: 41 83 fc 00 cmp $0x0,%r12d 0.00 : b6896: 0f 84 8c 01 00 00 je b6a28 0.00 : b689c: 4d 8b 9a b8 00 00 00 mov 0xb8(%r10),%r11 0.00 : b68a3: 0f 8e 7f 01 00 00 jle b6a28 0.00 : b68a9: 4d 8b 4e 08 mov 0x8(%r14),%r9 0.00 : b68ad: 45 31 c0 xor %r8d,%r8d 0.00 : b68b0: eb 17 jmp b68c9 0.00 : b68b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b68b8: 41 83 c0 01 add $0x1,%r8d 0.00 : b68bc: 49 83 c1 04 add $0x4,%r9 0.00 : b68c0: 45 39 c4 cmp %r8d,%r12d 0.00 : b68c3: 0f 8e 5f 01 00 00 jle b6a28 0.00 : b68c9: 49 63 01 movslq (%r9),%rax 0.00 : b68cc: 49 8d 3c 03 lea (%r11,%rax,1),%rdi 0.00 : b68d0: 0f b6 07 movzbl (%rdi),%eax 0.00 : b68d3: 44 39 e8 cmp %r13d,%eax 0.00 : b68d6: 75 e0 jne b68b8 0.00 : b68d8: 45 85 ed test %r13d,%r13d 0.00 : b68db: 0f 84 9a 00 00 00 je b697b 0.00 : b68e1: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : b68e5: 31 f6 xor %esi,%esi 0.00 : b68e7: 31 c9 xor %ecx,%ecx 0.00 : b68e9: 3a 47 01 cmp 0x1(%rdi),%al 0.00 : b68ec: 74 14 je b6902 0.00 : b68ee: eb c8 jmp b68b8 0.00 : b68f0: 0f b6 54 0d 01 movzbl 0x1(%rbp,%rcx,1),%edx 0.00 : b68f5: 0f b6 44 0f 02 movzbl 0x2(%rdi,%rcx,1),%eax 0.00 : b68fa: 48 83 c1 01 add $0x1,%rcx 0.00 : b68fe: 38 c2 cmp %al,%dl 0.00 : b6900: 75 08 jne b690a 0.00 : b6902: 83 c6 01 add $0x1,%esi 0.00 : b6905: 44 39 ee cmp %r13d,%esi 0.00 : b6908: 7c e6 jl b68f0 0.00 : b690a: 44 39 ee cmp %r13d,%esi 0.00 : b690d: 89 f0 mov %esi,%eax 0.00 : b690f: 75 a7 jne b68b8 0.00 : b6911: e9 1e ff ff ff jmpq b6834 0.00 : b6916: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b691d: 00 00 00 0.00 : b6920: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.00 : b6924: 48 63 c1 movslq %ecx,%rax 0.00 : b6927: 0f b6 0c 06 movzbl (%rsi,%rax,1),%ecx 0.00 : b692b: 80 f9 c1 cmp $0xc1,%cl 0.00 : b692e: 0f 86 c4 fb ff ff jbe b64f8 0.00 : b6934: 8b 52 40 mov 0x40(%rdx),%edx 0.00 : b6937: 8d 7d 01 lea 0x1(%rbp),%edi 0.00 : b693a: 39 d7 cmp %edx,%edi 0.00 : b693c: 0f 8d b6 fb ff ff jge b64f8 0.00 : b6942: 80 f9 df cmp $0xdf,%cl 0.00 : b6945: 0f b6 44 06 01 movzbl 0x1(%rsi,%rax,1),%eax 0.00 : b694a: 0f 87 c0 04 00 00 ja b6e10 0.00 : b6950: 83 c0 80 add $0xffffff80,%eax 0.00 : b6953: bb 02 00 00 00 mov $0x2,%ebx 0.00 : b6958: 3c 3f cmp $0x3f,%al 0.00 : b695a: 0f 86 9a fb ff ff jbe b64fa 0.00 : b6960: e9 93 fb ff ff jmpq b64f8 0.00 : b6965: 0f 1f 00 nopl (%rax) 0.00 : b6968: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : b696d: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : b6972: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : b6976: e9 5a fc ff ff jmpq b65d5 0.00 : b697b: 31 c0 xor %eax,%eax 0.00 : b697d: e9 b2 fe ff ff jmpq b6834 0.00 : b6982: c7 44 24 50 00 00 00 movl $0x0,0x50(%rsp) 0.00 : b6989: 00 0.00 : b698a: c7 44 24 54 00 00 00 movl $0x0,0x54(%rsp) 0.00 : b6991: 00 0.00 : b6992: 44 89 7c 24 58 mov %r15d,0x58(%rsp) 0.00 : b6997: c7 44 24 5c 00 00 00 movl $0x0,0x5c(%rsp) 0.00 : b699e: 00 0.00 : b699f: c7 44 24 60 00 00 00 movl $0x0,0x60(%rsp) 0.00 : b69a6: 00 0.00 : b69a7: c7 44 24 64 00 00 00 movl $0x0,0x64(%rsp) 0.00 : b69ae: 00 0.00 : b69af: 41 8b 4e 40 mov 0x40(%r14),%ecx 0.00 : b69b3: 85 c9 test %ecx,%ecx 0.00 : b69b5: 7e c4 jle b697b 0.00 : b69b7: 4c 8d 7c 24 50 lea 0x50(%rsp),%r15 0.00 : b69bc: 45 31 e4 xor %r12d,%r12d 0.00 : b69bf: 31 ed xor %ebp,%ebp 0.00 : b69c1: 49 8d 47 08 lea 0x8(%r15),%rax 0.00 : b69c5: 49 8d 57 10 lea 0x10(%r15),%rdx 0.00 : b69c9: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : b69ce: 48 89 14 24 mov %rdx,(%rsp) 0.00 : b69d2: eb 12 jmp b69e6 0.00 : b69d4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b69d8: 41 83 c4 01 add $0x1,%r12d 0.00 : b69dc: 48 83 c5 04 add $0x4,%rbp 0.00 : b69e0: 45 39 66 40 cmp %r12d,0x40(%r14) 0.00 : b69e4: 7e 95 jle b697b 0.00 : b69e6: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : b69ea: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : b69ef: 4c 89 ff mov %r15,%rdi 0.00 : b69f2: 8b 04 28 mov (%rax,%rbp,1),%eax 0.00 : b69f5: 89 44 24 50 mov %eax,0x50(%rsp) 0.00 : b69f9: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : b69fd: 8b 04 28 mov (%rax,%rbp,1),%eax 0.00 : b6a00: 89 44 24 60 mov %eax,0x60(%rsp) 0.00 : b6a04: e8 17 eb fd ff callq 95520 0.00 : b6a09: 85 c0 test %eax,%eax 0.00 : b6a0b: 7f cb jg b69d8 0.00 : b6a0d: 48 8b 34 24 mov (%rsp),%rsi 0.00 : b6a11: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : b6a16: e8 05 eb fd ff callq 95520 0.00 : b6a1b: 85 c0 test %eax,%eax 0.00 : b6a1d: 7f b9 jg b69d8 0.00 : b6a1f: e9 0e fe ff ff jmpq b6832 0.00 : b6a24: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b6a28: 45 8b 5e 40 mov 0x40(%r14),%r11d 0.00 : b6a2c: 45 85 db test %r11d,%r11d 0.00 : b6a2f: 90 nop 0.00 : b6a30: 0f 84 d3 00 00 00 je b6b09 0.00 : b6a36: 44 39 eb cmp %r13d,%ebx 0.00 : b6a39: 0f 8d 9b 03 00 00 jge b6dda 0.00 : b6a3f: 49 8b 82 c0 00 00 00 mov 0xc0(%r10),%rax 0.00 : b6a46: 4d 8b 82 b8 00 00 00 mov 0xb8(%r10),%r8 0.00 : b6a4d: 4d 63 fd movslq %r13d,%r15 0.00 : b6a50: 41 89 c4 mov %eax,%r12d 0.00 : b6a53: 45 29 c4 sub %r8d,%r12d 0.00 : b6a56: 45 85 e4 test %r12d,%r12d 0.00 : b6a59: 0f 8e 98 01 00 00 jle b6bf7 0.00 : b6a5f: 31 d2 xor %edx,%edx 0.00 : b6a61: eb 2a jmp b6a8d 0.00 : b6a63: 43 8d 44 0a 03 lea 0x3(%r10,%r9,1),%eax 0.00 : b6a68: 83 e0 fc and $0xfffffffc,%eax 0.00 : b6a6b: 83 c0 04 add $0x4,%eax 0.00 : b6a6e: 85 c9 test %ecx,%ecx 0.00 : b6a70: 48 63 d0 movslq %eax,%rdx 0.00 : b6a73: 41 8b 14 10 mov (%r8,%rdx,1),%edx 0.00 : b6a77: 8d 44 90 04 lea 0x4(%rax,%rdx,4),%eax 0.00 : b6a7b: 0f 85 d3 03 00 00 jne b6e54 0.00 : b6a81: 8d 50 04 lea 0x4(%rax),%edx 0.00 : b6a84: 41 39 d4 cmp %edx,%r12d 0.00 : b6a87: 0f 8e 6a 01 00 00 jle b6bf7 0.00 : b6a8d: 48 63 c2 movslq %edx,%rax 0.00 : b6a90: 31 c9 xor %ecx,%ecx 0.00 : b6a92: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax 0.00 : b6a97: 8d 54 10 01 lea 0x1(%rax,%rdx,1),%edx 0.00 : b6a9b: 48 63 c2 movslq %edx,%rax 0.00 : b6a9e: 44 8d 52 01 lea 0x1(%rdx),%r10d 0.00 : b6aa2: 45 0f b6 0c 00 movzbl (%r8,%rax,1),%r9d 0.00 : b6aa7: 49 63 c1 movslq %r9d,%rax 0.00 : b6aaa: 49 39 c7 cmp %rax,%r15 0.00 : b6aad: 75 b4 jne b6a63 0.00 : b6aaf: 45 85 c9 test %r9d,%r9d 0.00 : b6ab2: 0f 84 7a 01 00 00 je b6c32 0.00 : b6ab8: 49 63 c2 movslq %r10d,%rax 0.00 : b6abb: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax 0.00 : b6ac0: 3a 45 00 cmp 0x0(%rbp),%al 0.00 : b6ac3: 0f 85 69 01 00 00 jne b6c32 0.00 : b6ac9: 8d 42 02 lea 0x2(%rdx),%eax 0.00 : b6acc: 48 89 ee mov %rbp,%rsi 0.00 : b6acf: 31 c9 xor %ecx,%ecx 0.00 : b6ad1: 48 98 cltq 0.00 : b6ad3: 49 8d 3c 00 lea (%r8,%rax,1),%rdi 0.00 : b6ad7: eb 1a jmp b6af3 0.00 : b6ad9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b6ae0: 0f b6 17 movzbl (%rdi),%edx 0.00 : b6ae3: 0f b6 46 01 movzbl 0x1(%rsi),%eax 0.00 : b6ae7: 48 83 c7 01 add $0x1,%rdi 0.00 : b6aeb: 48 83 c6 01 add $0x1,%rsi 0.00 : b6aef: 38 c2 cmp %al,%dl 0.00 : b6af1: 75 08 jne b6afb 0.00 : b6af3: 83 c1 01 add $0x1,%ecx 0.00 : b6af6: 41 39 c9 cmp %ecx,%r9d 0.00 : b6af9: 7f e5 jg b6ae0 0.00 : b6afb: 41 39 c9 cmp %ecx,%r9d 0.00 : b6afe: 0f 94 c0 sete %al 0.00 : b6b01: 0f b6 c8 movzbl %al,%ecx 0.00 : b6b04: e9 5a ff ff ff jmpq b6a63 0.00 : b6b09: 41 8b 4e 3c mov 0x3c(%r14),%ecx 0.00 : b6b0d: 85 c9 test %ecx,%ecx 0.00 : b6b0f: 89 4c 24 24 mov %ecx,0x24(%rsp) 0.00 : b6b13: 0f 84 62 fe ff ff je b697b 0.00 : b6b19: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : b6b1e: 48 8b 35 63 b2 2b 00 mov 0x2bb263(%rip),%rsi # 371d88 <_DYNAMIC+0x228> 0.00 : b6b25: 4c 8d 5d 01 lea 0x1(%rbp),%r11 0.00 : b6b29: 48 8b 04 32 mov (%rdx,%rsi,1),%rax 0.00 : b6b2d: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : b6b31: 48 8b 48 68 mov 0x68(%rax),%rcx 0.00 : b6b35: 4c 8b 78 58 mov 0x58(%rax),%r15 0.00 : b6b39: 48 8b 70 60 mov 0x60(%rax),%rsi 0.00 : b6b3d: 48 89 4c 24 28 mov %rcx,0x28(%rsp) 0.00 : b6b42: 0f b6 55 00 movzbl 0x0(%rbp),%edx 0.00 : b6b46: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : b6b4a: 8b 0c 90 mov (%rax,%rdx,4),%ecx 0.00 : b6b4d: 48 63 c1 movslq %ecx,%rax 0.00 : b6b50: 48 85 c0 test %rax,%rax 0.00 : b6b53: 0f 88 e0 00 00 00 js b6c39 0.00 : b6b59: 85 c9 test %ecx,%ecx 0.00 : b6b5b: 0f 8e 1a fe ff ff jle b697b 0.00 : b6b61: 8b 74 24 24 mov 0x24(%rsp),%esi 0.00 : b6b65: 85 f6 test %esi,%esi 0.00 : b6b67: 0f 8e 0e fe ff ff jle b697b 0.00 : b6b6d: 4d 8b 4e 10 mov 0x10(%r14),%r9 0.00 : b6b71: 45 31 c0 xor %r8d,%r8d 0.00 : b6b74: eb 13 jmp b6b89 0.00 : b6b76: 41 83 c0 01 add $0x1,%r8d 0.00 : b6b7a: 49 83 c1 04 add $0x4,%r9 0.00 : b6b7e: 44 39 44 24 24 cmp %r8d,0x24(%rsp) 0.00 : b6b83: 0f 8e f2 fd ff ff jle b697b 0.00 : b6b89: 41 8b 31 mov (%r9),%esi 0.00 : b6b8c: 48 89 f0 mov %rsi,%rax 0.00 : b6b8f: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : b6b94: 45 0f b6 14 07 movzbl (%r15,%rax,1),%r10d 0.00 : b6b99: 48 89 c8 mov %rcx,%rax 0.00 : b6b9c: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : b6ba1: 41 0f b6 04 07 movzbl (%r15,%rax,1),%eax 0.00 : b6ba6: 49 39 c2 cmp %rax,%r10 0.00 : b6ba9: 75 cb jne b6b76 0.00 : b6bab: 89 ca mov %ecx,%edx 0.00 : b6bad: 89 f0 mov %esi,%eax 0.00 : b6baf: c1 fa 18 sar $0x18,%edx 0.00 : b6bb2: c1 f8 18 sar $0x18,%eax 0.00 : b6bb5: 39 c2 cmp %eax,%edx 0.00 : b6bb7: 75 bd jne b6b76 0.00 : b6bb9: 48 89 f0 mov %rsi,%rax 0.00 : b6bbc: 81 e1 ff ff ff 00 and $0xffffff,%ecx 0.00 : b6bc2: 31 d2 xor %edx,%edx 0.00 : b6bc4: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : b6bc9: 49 8d 7c 07 01 lea 0x1(%r15,%rax,1),%rdi 0.00 : b6bce: 8d 41 01 lea 0x1(%rcx),%eax 0.00 : b6bd1: 48 98 cltq 0.00 : b6bd3: 49 8d 34 07 lea (%r15,%rax,1),%rsi 0.00 : b6bd7: 0f b6 07 movzbl (%rdi),%eax 0.00 : b6bda: 3a 06 cmp (%rsi),%al 0.00 : b6bdc: 75 98 jne b6b76 0.00 : b6bde: 48 83 c2 01 add $0x1,%rdx 0.00 : b6be2: 48 83 c7 01 add $0x1,%rdi 0.00 : b6be6: 48 83 c6 01 add $0x1,%rsi 0.00 : b6bea: 4c 39 d2 cmp %r10,%rdx 0.00 : b6bed: 76 e8 jbe b6bd7 0.00 : b6bef: 44 89 e8 mov %r13d,%eax 0.00 : b6bf2: e9 3d fc ff ff jmpq b6834 0.00 : b6bf7: be ff ff ff ff mov $0xffffffff,%esi 0.00 : b6bfc: 45 85 db test %r11d,%r11d 0.00 : b6bff: 0f 8e 04 ff ff ff jle b6b09 0.00 : b6c05: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : b6c09: 31 c9 xor %ecx,%ecx 0.00 : b6c0b: 31 d2 xor %edx,%edx 0.00 : b6c0d: eb 11 jmp b6c20 0.00 : b6c0f: 90 nop 0.00 : b6c10: 83 c1 01 add $0x1,%ecx 0.00 : b6c13: 48 83 c2 04 add $0x4,%rdx 0.00 : b6c17: 41 39 cb cmp %ecx,%r11d 0.00 : b6c1a: 0f 8e e9 fe ff ff jle b6b09 0.00 : b6c20: 3b 34 17 cmp (%rdi,%rdx,1),%esi 0.00 : b6c23: 72 eb jb b6c10 0.00 : b6c25: 49 8b 46 20 mov 0x20(%r14),%rax 0.00 : b6c29: 3b 34 10 cmp (%rax,%rdx,1),%esi 0.00 : b6c2c: 77 e2 ja b6c10 0.00 : b6c2e: 66 90 xchg %ax,%ax 0.00 : b6c30: eb bd jmp b6bef 0.00 : b6c32: 31 c9 xor %ecx,%ecx 0.00 : b6c34: e9 c2 fe ff ff jmpq b6afb 0.00 : b6c39: 48 29 c6 sub %rax,%rsi 0.00 : b6c3c: 8b 0e mov (%rsi),%ecx 0.00 : b6c3e: 44 0f b6 46 04 movzbl 0x4(%rsi),%r8d 0.00 : b6c43: 4c 8d 56 05 lea 0x5(%rsi),%r10 0.00 : b6c47: 4c 63 e1 movslq %ecx,%r12 0.00 : b6c4a: 4d 85 e4 test %r12,%r12 0.00 : b6c4d: 78 50 js b6c9f 0.00 : b6c4f: 4d 85 c0 test %r8,%r8 0.00 : b6c52: 0f 84 01 ff ff ff je b6b59 0.00 : b6c58: 41 0f b6 02 movzbl (%r10),%eax 0.00 : b6c5c: 31 d2 xor %edx,%edx 0.00 : b6c5e: 41 3a 03 cmp (%r11),%al 0.00 : b6c61: 74 10 je b6c73 0.00 : b6c63: eb 20 jmp b6c85 0.00 : b6c65: 0f 1f 00 nopl (%rax) 0.00 : b6c68: 0f b6 44 16 05 movzbl 0x5(%rsi,%rdx,1),%eax 0.00 : b6c6d: 3a 44 15 01 cmp 0x1(%rbp,%rdx,1),%al 0.00 : b6c71: 75 09 jne b6c7c 0.00 : b6c73: 48 83 c2 01 add $0x1,%rdx 0.00 : b6c77: 49 39 d0 cmp %rdx,%r8 0.00 : b6c7a: 77 ec ja b6c68 0.00 : b6c7c: 49 39 d0 cmp %rdx,%r8 0.00 : b6c7f: 0f 84 d4 fe ff ff je b6b59 0.00 : b6c85: 49 8d 40 01 lea 0x1(%r8),%rax 0.00 : b6c89: 4b 8d 34 02 lea (%r10,%r8,1),%rsi 0.00 : b6c8d: 83 e0 03 and $0x3,%eax 0.00 : b6c90: 74 aa je b6c3c 0.00 : b6c92: ba 04 00 00 00 mov $0x4,%edx 0.00 : b6c97: 48 29 c2 sub %rax,%rdx 0.00 : b6c9a: 48 01 d6 add %rdx,%rsi 0.00 : b6c9d: eb 9d jmp b6c3c 0.00 : b6c9f: 4d 85 c0 test %r8,%r8 0.00 : b6ca2: 0f 84 4c 01 00 00 je b6df4 0.00 : b6ca8: 41 0f b6 3a movzbl (%r10),%edi 0.00 : b6cac: 45 0f b6 0b movzbl (%r11),%r9d 0.00 : b6cb0: 31 c0 xor %eax,%eax 0.00 : b6cb2: 44 38 cf cmp %r9b,%dil 0.00 : b6cb5: 74 17 je b6cce 0.00 : b6cb7: e9 4a 01 00 00 jmpq b6e06 0.00 : b6cbc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b6cc0: 0f b6 4c 06 05 movzbl 0x5(%rsi,%rax,1),%ecx 0.00 : b6cc5: 0f b6 54 05 01 movzbl 0x1(%rbp,%rax,1),%edx 0.00 : b6cca: 38 d1 cmp %dl,%cl 0.00 : b6ccc: 75 19 jne b6ce7 0.00 : b6cce: 48 83 c0 01 add $0x1,%rax 0.00 : b6cd2: 49 39 c0 cmp %rax,%r8 0.00 : b6cd5: 77 e9 ja b6cc0 0.00 : b6cd7: 0f 84 17 01 00 00 je b6df4 0.00 : b6cdd: 41 0f b6 0c 02 movzbl (%r10,%rax,1),%ecx 0.00 : b6ce2: 41 0f b6 14 03 movzbl (%r11,%rax,1),%edx 0.00 : b6ce7: 38 ca cmp %cl,%dl 0.00 : b6ce9: 0f 82 91 00 00 00 jb b6d80 0.00 : b6cef: 43 0f b6 0c 02 movzbl (%r10,%r8,1),%ecx 0.00 : b6cf4: 31 d2 xor %edx,%edx 0.00 : b6cf6: 4a 8d 74 06 06 lea 0x6(%rsi,%r8,1),%rsi 0.00 : b6cfb: 41 38 c9 cmp %cl,%r9b 0.00 : b6cfe: 74 1c je b6d1c 0.00 : b6d00: e9 d0 00 00 00 jmpq b6dd5 0.00 : b6d05: 0f 1f 00 nopl (%rax) 0.00 : b6d08: 0f b6 0e movzbl (%rsi),%ecx 0.00 : b6d0b: 0f b6 44 15 01 movzbl 0x1(%rbp,%rdx,1),%eax 0.00 : b6d10: 48 83 c6 01 add $0x1,%rsi 0.00 : b6d14: 38 c1 cmp %al,%cl 0.00 : b6d16: 0f 85 97 00 00 00 jne b6db3 0.00 : b6d1c: 48 83 c2 01 add $0x1,%rdx 0.00 : b6d20: 49 39 d0 cmp %rdx,%r8 0.00 : b6d23: 77 e3 ja b6d08 0.00 : b6d25: 75 7e jne b6da5 0.00 : b6d27: 31 f6 xor %esi,%esi 0.00 : b6d29: 41 38 f9 cmp %dil,%r9b 0.00 : b6d2c: 75 10 jne b6d3e 0.00 : b6d2e: 48 83 c6 01 add $0x1,%rsi 0.00 : b6d32: 44 0f b6 4c 35 01 movzbl 0x1(%rbp,%rsi,1),%r9d 0.00 : b6d38: 45 38 0c 32 cmp %r9b,(%r10,%rsi,1) 0.00 : b6d3c: 74 f0 je b6d2e 0.00 : b6d3e: 4c 8d 5c 35 00 lea 0x0(%rbp,%rsi,1),%r11 0.00 : b6d43: 31 d2 xor %edx,%edx 0.00 : b6d45: 31 ff xor %edi,%edi 0.00 : b6d47: 49 01 f2 add %rsi,%r10 0.00 : b6d4a: 48 89 d1 mov %rdx,%rcx 0.00 : b6d4d: 41 0f b6 14 3a movzbl (%r10,%rdi,1),%edx 0.00 : b6d52: 41 0f b6 c1 movzbl %r9b,%eax 0.00 : b6d56: 48 c1 e1 08 shl $0x8,%rcx 0.00 : b6d5a: 48 83 c7 01 add $0x1,%rdi 0.00 : b6d5e: 29 d0 sub %edx,%eax 0.00 : b6d60: 48 98 cltq 0.00 : b6d62: 48 8d 14 08 lea (%rax,%rcx,1),%rdx 0.00 : b6d66: 48 8d 04 37 lea (%rdi,%rsi,1),%rax 0.00 : b6d6a: 49 39 c0 cmp %rax,%r8 0.00 : b6d6d: 0f 86 83 00 00 00 jbe b6df6 0.00 : b6d73: 45 0f b6 4c 3b 01 movzbl 0x1(%r11,%rdi,1),%r9d 0.00 : b6d79: eb cf jmp b6d4a 0.00 : b6d7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b6d80: 4b 8d 04 00 lea (%r8,%r8,1),%rax 0.00 : b6d84: 49 8d 34 02 lea (%r10,%rax,1),%rsi 0.00 : b6d88: 48 83 c0 01 add $0x1,%rax 0.00 : b6d8c: 83 e0 03 and $0x3,%eax 0.00 : b6d8f: 0f 84 a7 fe ff ff je b6c3c 0.00 : b6d95: b9 04 00 00 00 mov $0x4,%ecx 0.00 : b6d9a: 48 29 c1 sub %rax,%rcx 0.00 : b6d9d: 48 01 ce add %rcx,%rsi 0.00 : b6da0: e9 97 fe ff ff jmpq b6c3c 0.00 : b6da5: 49 8d 04 12 lea (%r10,%rdx,1),%rax 0.00 : b6da9: 42 0f b6 0c 00 movzbl (%rax,%r8,1),%ecx 0.00 : b6dae: 41 0f b6 04 13 movzbl (%r11,%rdx,1),%eax 0.00 : b6db3: 38 c8 cmp %cl,%al 0.00 : b6db5: 0f 86 6c ff ff ff jbe b6d27 0.00 : b6dbb: 4b 8d 04 00 lea (%r8,%r8,1),%rax 0.00 : b6dbf: 49 8d 34 02 lea (%r10,%rax,1),%rsi 0.00 : b6dc3: 48 83 c0 01 add $0x1,%rax 0.00 : b6dc7: 83 e0 03 and $0x3,%eax 0.00 : b6dca: 0f 84 6c fe ff ff je b6c3c 0.00 : b6dd0: e9 bd fe ff ff jmpq b6c92 0.00 : b6dd5: 44 89 c8 mov %r9d,%eax 0.00 : b6dd8: eb d9 jmp b6db3 0.00 : b6dda: 49 8b ba c8 00 00 00 mov 0xc8(%r10),%rdi 0.00 : b6de1: 44 89 fe mov %r15d,%esi 0.00 : b6de4: e8 e7 4a f7 ff callq 2b8d0 <__collseq_table_lookup> 0.00 : b6de9: 45 8b 5e 40 mov 0x40(%r14),%r11d 0.00 : b6ded: 89 c6 mov %eax,%esi 0.00 : b6def: e9 08 fe ff ff jmpq b6bfc 0.00 : b6df4: 31 d2 xor %edx,%edx 0.00 : b6df6: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : b6dfb: 4c 29 e2 sub %r12,%rdx 0.00 : b6dfe: 8b 0c 96 mov (%rsi,%rdx,4),%ecx 0.00 : b6e01: e9 53 fd ff ff jmpq b6b59 0.00 : b6e06: 89 f9 mov %edi,%ecx 0.00 : b6e08: 44 89 ca mov %r9d,%edx 0.00 : b6e0b: e9 d7 fe ff ff jmpq b6ce7 0.00 : b6e10: 80 f9 ef cmp $0xef,%cl 0.00 : b6e13: 77 55 ja b6e6a 0.00 : b6e15: 80 f9 e0 cmp $0xe0,%cl 0.00 : b6e18: 74 45 je b6e5f 0.00 : b6e1a: bb 03 00 00 00 mov $0x3,%ebx 0.00 : b6e1f: 8d 04 2b lea (%rbx,%rbp,1),%eax 0.00 : b6e22: 39 c2 cmp %eax,%edx 0.00 : b6e24: 0f 8c ce f6 ff ff jl b64f8 0.00 : b6e2a: 48 63 c7 movslq %edi,%rax 0.00 : b6e2d: ba 01 00 00 00 mov $0x1,%edx 0.00 : b6e32: 48 8d 0c 06 lea (%rsi,%rax,1),%rcx 0.00 : b6e36: 0f b6 01 movzbl (%rcx),%eax 0.00 : b6e39: 83 c0 80 add $0xffffff80,%eax 0.00 : b6e3c: 3c 3f cmp $0x3f,%al 0.00 : b6e3e: 0f 87 b4 f6 ff ff ja b64f8 0.00 : b6e44: 83 c2 01 add $0x1,%edx 0.00 : b6e47: 48 83 c1 01 add $0x1,%rcx 0.00 : b6e4b: 39 d3 cmp %edx,%ebx 0.00 : b6e4d: 7f e7 jg b6e36 0.00 : b6e4f: e9 a6 f6 ff ff jmpq b64fa 0.00 : b6e54: 48 98 cltq 0.00 : b6e56: 41 8b 34 00 mov (%r8,%rax,1),%esi 0.00 : b6e5a: e9 9d fd ff ff jmpq b6bfc 0.00 : b6e5f: 3c 9f cmp $0x9f,%al 0.00 : b6e61: 77 b7 ja b6e1a 0.00 : b6e63: 31 db xor %ebx,%ebx 0.00 : b6e65: e9 90 f6 ff ff jmpq b64fa 0.00 : b6e6a: 80 f9 f7 cmp $0xf7,%cl 0.00 : b6e6d: 0f 1f 00 nopl (%rax) 0.00 : b6e70: 77 10 ja b6e82 0.00 : b6e72: 80 f9 f0 cmp $0xf0,%cl 0.00 : b6e75: 74 1c je b6e93 0.00 : b6e77: bb 04 00 00 00 mov $0x4,%ebx 0.00 : b6e7c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b6e80: eb 9d jmp b6e1f 0.00 : b6e82: 80 f9 fb cmp $0xfb,%cl 0.00 : b6e85: 77 22 ja b6ea9 0.00 : b6e87: 80 f9 f8 cmp $0xf8,%cl 0.00 : b6e8a: 74 12 je b6e9e 0.00 : b6e8c: bb 05 00 00 00 mov $0x5,%ebx 0.00 : b6e91: eb 8c jmp b6e1f 0.00 : b6e93: 3c 8f cmp $0x8f,%al 0.00 : b6e95: 77 e0 ja b6e77 0.00 : b6e97: 31 db xor %ebx,%ebx 0.00 : b6e99: e9 5c f6 ff ff jmpq b64fa 0.00 : b6e9e: 3c 87 cmp $0x87,%al 0.00 : b6ea0: 77 ea ja b6e8c 0.00 : b6ea2: 31 db xor %ebx,%ebx 0.00 : b6ea4: e9 51 f6 ff ff jmpq b64fa 0.00 : b6ea9: 80 f9 fd cmp $0xfd,%cl 0.00 : b6eac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b6eb0: 0f 87 42 f6 ff ff ja b64f8 0.00 : b6eb6: 80 f9 fc cmp $0xfc,%cl 0.00 : b6eb9: 74 0a je b6ec5 0.00 : b6ebb: bb 06 00 00 00 mov $0x6,%ebx 0.00 : b6ec0: e9 5a ff ff ff jmpq b6e1f 0.00 : b6ec5: 3c 83 cmp $0x83,%al 0.00 : b6ec7: 77 f2 ja b6ebb 0.00 : b6ec9: 31 db xor %ebx,%ebx 0.00 : b6ecb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b6ed0: e9 25 f6 ff ff jmpq b64fa Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000c2a30 : 0.00 : c2a30: 48 83 ec 08 sub $0x8,%rsp 50.00 : c2a34: 45 31 c9 xor %r9d,%r9d 0.00 : c2a37: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 50.00 : c2a3e: e8 dd fe ff ff callq c2920 <_getopt_internal> 0.00 : c2a43: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000dbd50 <__connect>: 0.00 : dbd50: 83 3d 5d b9 29 00 00 cmpl $0x0,0x29b95d(%rip) # 3776b4 <__libc_multiple_threads> 100.00 : dbd57: 75 10 jne dbd69 <__connect_nocancel+0x10> : : 00000000000dbd59 <__connect_nocancel>: 0.00 : dbd59: b8 2a 00 00 00 mov $0x2a,%eax 0.00 : dbd5e: 0f 05 syscall 0.00 : dbd60: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : dbd66: 73 31 jae dbd99 <__connect_nocancel+0x40> 0.00 : dbd68: c3 retq 0.00 : dbd69: 48 83 ec 08 sub $0x8,%rsp 0.00 : dbd6d: e8 be c4 00 00 callq e8230 <__libc_enable_asynccancel> 0.00 : dbd72: 48 89 04 24 mov %rax,(%rsp) 0.00 : dbd76: b8 2a 00 00 00 mov $0x2a,%eax 0.00 : dbd7b: 0f 05 syscall 0.00 : dbd7d: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : dbd81: 48 89 c2 mov %rax,%rdx 0.00 : dbd84: e8 07 c5 00 00 callq e8290 <__libc_disable_asynccancel> 0.00 : dbd89: 48 89 d0 mov %rdx,%rax 0.00 : dbd8c: 48 83 c4 08 add $0x8,%rsp 0.00 : dbd90: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : dbd96: 73 01 jae dbd99 <__connect_nocancel+0x40> 0.00 : dbd98: c3 retq 0.00 : dbd99: 48 8b 0d 98 60 29 00 mov 0x296098(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : dbda0: 31 d2 xor %edx,%edx 0.00 : dbda2: 48 29 c2 sub %rax,%rdx 0.00 : dbda5: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : dbda8: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : dbdac: eb ea jmp dbd98 <__connect_nocancel+0x3f> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000b50 <_dl_initial_error_catch_tsd>: 100.00 : b50: 48 8d 05 c1 f4 21 00 lea 0x21f4c1(%rip),%rax # 220018 Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000d400 : 0.00 : d400: 53 push %rbx 0.00 : d401: 48 89 fb mov %rdi,%rbx 0.00 : d404: 48 8b 3f mov (%rdi),%rdi 0.00 : d407: ba 01 00 00 00 mov $0x1,%edx 0.00 : d40c: 8b 4b 08 mov 0x8(%rbx),%ecx 0.00 : d40f: 44 8b 43 0c mov 0xc(%rbx),%r8d 0.00 : d413: 0f b6 87 14 03 00 00 movzbl 0x314(%rdi),%eax 0.00 : d41a: 4c 8b 4f 30 mov 0x30(%rdi),%r9 0.00 : d41e: 83 e0 03 and $0x3,%eax 0.00 : d421: 0f b6 f0 movzbl %al,%esi 0.00 : d424: 84 c0 test %al,%al 0.00 : d426: 0f 45 d6 cmovne %esi,%edx 0.00 : d429: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : d42d: e8 4e a7 ff ff callq 7b80 <_dl_map_object> 0.00 : d432: 48 89 43 20 mov %rax,0x20(%rbx) 100.00 : d436: 5b pop %rbx Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000010ad0 <_dl_add_to_slotinfo>: 0.00 : 10ad0: 41 54 push %r12 100.00 : 10ad2: 49 89 fc mov %rdi,%r12 0.00 : 10ad5: 55 push %rbp 0.00 : 10ad6: 53 push %rbx 0.00 : 10ad7: 48 8b 1d 8a f4 20 00 mov 0x20f48a(%rip),%rbx # 21ff68 <_rtld_global+0xf08> 0.00 : 10ade: 48 8b af 50 04 00 00 mov 0x450(%rdi),%rbp 0.00 : 10ae5: eb 0c jmp 10af3 <_dl_add_to_slotinfo+0x23> 0.00 : 10ae7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 10aee: 00 00 0.00 : 10af0: 48 89 c3 mov %rax,%rbx 0.00 : 10af3: 48 8b 03 mov (%rbx),%rax 0.00 : 10af6: 48 39 c5 cmp %rax,%rbp 0.00 : 10af9: 72 55 jb 10b50 <_dl_add_to_slotinfo+0x80> 0.00 : 10afb: 48 29 c5 sub %rax,%rbp 0.00 : 10afe: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 10b02: 48 85 c0 test %rax,%rax 0.00 : 10b05: 75 e9 jne 10af0 <_dl_add_to_slotinfo+0x20> 0.00 : 10b07: 48 85 ed test %rbp,%rbp 0.00 : 10b0a: 0f 85 86 00 00 00 jne 10b96 <_dl_add_to_slotinfo+0xc6> 0.00 : 10b10: bf f0 03 00 00 mov $0x3f0,%edi 0.00 : 10b15: e8 96 ff fe ff callq ab0 0.00 : 10b1a: 48 85 c0 test %rax,%rax 0.00 : 10b1d: 48 89 c6 mov %rax,%rsi 0.00 : 10b20: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 10b24: 74 4e je 10b74 <_dl_add_to_slotinfo+0xa4> 0.00 : 10b26: 48 8d 78 10 lea 0x10(%rax),%rdi 0.00 : 10b2a: 41 b8 7c 00 00 00 mov $0x7c,%r8d 0.00 : 10b30: 48 c7 00 3e 00 00 00 movq $0x3e,(%rax) 0.00 : 10b37: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 10b3e: 00 0.00 : 10b3f: 4c 89 c1 mov %r8,%rcx 0.00 : 10b42: 48 89 e8 mov %rbp,%rax 0.00 : 10b45: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 10b48: eb 09 jmp 10b53 <_dl_add_to_slotinfo+0x83> 0.00 : 10b4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 10b50: 48 89 de mov %rbx,%rsi 0.00 : 10b53: 48 8d 55 01 lea 0x1(%rbp),%rdx 0.00 : 10b57: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 10b5b: 4c 89 64 16 08 mov %r12,0x8(%rsi,%rdx,1) 0.00 : 10b60: 48 8b 05 31 f4 20 00 mov 0x20f431(%rip),%rax # 21ff98 <_rtld_global+0xf38> 0.00 : 10b67: 48 83 c0 01 add $0x1,%rax 0.00 : 10b6b: 48 89 04 32 mov %rax,(%rdx,%rsi,1) 0.00 : 10b6f: 5b pop %rbx 0.00 : 10b70: 5d pop %rbp 0.00 : 10b71: 41 5c pop %r12 0.00 : 10b73: c3 retq 0.00 : 10b74: 48 8d 0d ed b4 00 00 lea 0xb4ed(%rip),%rcx # 1c068 <__PRETTY_FUNCTION__.3644+0x1cf7> 0.00 : 10b7b: 48 8d 35 13 94 00 00 lea 0x9413(%rip),%rsi # 19f95 <__PRETTY_FUNCTION__.10385+0xbd> 0.00 : 10b82: 31 d2 xor %edx,%edx 0.00 : 10b84: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 10b89: 48 83 05 07 f4 20 00 addq $0x1,0x20f407(%rip) # 21ff98 <_rtld_global+0xf38> 0.00 : 10b90: 01 0.00 : 10b91: e8 6a d3 ff ff callq df00 <_dl_signal_error> 0.00 : 10b96: 48 8d 0d d3 bc 00 00 lea 0xbcd3(%rip),%rcx # 1c870 <__PRETTY_FUNCTION__.12120> 0.00 : 10b9d: 48 8d 35 df 93 00 00 lea 0x93df(%rip),%rsi # 19f83 <__PRETTY_FUNCTION__.10385+0xab> 0.00 : 10ba4: 48 8d 3d e1 93 00 00 lea 0x93e1(%rip),%rdi # 19f8c <__PRETTY_FUNCTION__.10385+0xb4> 0.00 : 10bab: ba 4c 03 00 00 mov $0x34c,%edx 0.00 : 10bb0: e8 bb 41 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000015310 : 100.00 : 15310: 48 89 fe mov %rdi,%rsi 0.00 : 15313: bf 08 00 00 00 mov $0x8,%edi 0.00 : 15318: e9 83 b7 fe ff jmpq aa0 <__libc_memalign@plt> Sorted summary for file /bin/gawk ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000416ae0 : 0.00 : 416ae0: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 416ae5: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 416aea: 48 89 fb mov %rdi,%rbx 0.00 : 416aed: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 416af2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 416af7: 48 83 ec 28 sub $0x28,%rsp 0.00 : 416afb: 83 05 9e 6d 23 00 01 addl $0x1,0x236d9e(%rip) # 64d8a0 0.00 : 416b02: 49 89 f5 mov %rsi,%r13 0.00 : 416b05: e8 26 02 ff ff callq 406d30 0.00 : 416b0a: 31 c9 xor %ecx,%ecx 0.00 : 416b0c: 48 89 c6 mov %rax,%rsi 0.00 : 416b0f: 48 89 c5 mov %rax,%rbp 0.00 : 416b12: ba fd 03 00 00 mov $0x3fd,%edx 0.00 : 416b17: 48 89 df mov %rbx,%rdi 0.00 : 416b1a: ff 15 f0 69 23 00 callq *0x2369f0(%rip) # 64d510 0.00 : 416b20: 48 8b 35 59 98 23 00 mov 0x239859(%rip),%rsi # 650380 0.00 : 416b27: 41 89 c4 mov %eax,%r12d 0.00 : 416b2a: 48 85 f6 test %rsi,%rsi 0.00 : 416b2d: 74 54 je 416b83 0.00 : 416b2f: 48 63 d0 movslq %eax,%rdx 0.00 : 416b32: 48 8b 0e mov (%rsi),%rcx 0.00 : 416b35: c7 46 38 52 00 00 00 movl $0x52,0x38(%rsi) 0.00 : 416b3c: 48 8b 04 d5 60 29 65 mov 0x652960(,%rdx,8),%rax 0.00 : 416b43: 00 50.00 : 416b44: 48 89 0d 35 98 23 00 mov %rcx,0x239835(%rip) # 650380 0.00 : 416b4b: 48 89 06 mov %rax,(%rsi) 0.00 : 416b4e: 48 89 34 d5 60 29 65 mov %rsi,0x652960(,%rdx,8) 0.00 : 416b55: 00 0.00 : 416b56: 4c 89 6e 18 mov %r13,0x18(%rsi) 0.00 : 416b5a: 48 89 6e 10 mov %rbp,0x10(%rsi) 0.00 : 416b5e: 48 89 5e 08 mov %rbx,0x8(%rsi) 0.00 : 416b62: 49 89 5d 18 mov %rbx,0x18(%r13) 0.00 : 416b66: 48 8b 46 18 mov 0x18(%rsi),%rax 50.00 : 416b6a: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 416b6f: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 416b74: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 416b79: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 416b7e: 48 83 c4 28 add $0x28,%rsp 0.00 : 416b82: c3 retq 0.00 : 416b83: e8 78 df 01 00 callq 434b00 0.00 : 416b88: 49 63 f4 movslq %r12d,%rsi 0.00 : 416b8b: c7 40 38 52 00 00 00 movl $0x52,0x38(%rax) 0.00 : 416b92: 48 8b 3c f5 60 29 65 mov 0x652960(,%rsi,8),%rdi 0.00 : 416b99: 00 0.00 : 416b9a: 48 89 38 mov %rdi,(%rax) 0.00 : 416b9d: 48 89 04 f5 60 29 65 mov %rax,0x652960(,%rsi,8) 0.00 : 416ba4: 00 0.00 : 416ba5: 48 89 68 10 mov %rbp,0x10(%rax) 0.00 : 416ba9: 4c 89 68 18 mov %r13,0x18(%rax) 0.00 : 416bad: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 416bb1: 49 89 5d 18 mov %rbx,0x18(%r13) 0.00 : 416bb5: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 416bb9: eb af jmp 416b6a Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042d980 : 100.00 : 42d980: 55 push %rbp 0.00 : 42d981: 53 push %rbx 0.00 : 42d982: 48 83 ec 08 sub $0x8,%rsp 0.00 : 42d986: 48 8b 15 cb 6f 22 00 mov 0x226fcb(%rip),%rdx # 654958 0.00 : 42d98d: 48 8b 3a mov (%rdx),%rdi 0.00 : 42d990: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 42d994: f6 c4 08 test $0x8,%ah 0.00 : 42d997: 75 53 jne 42d9ec 0.00 : 42d999: a8 10 test $0x10,%al 0.00 : 42d99b: 74 4f je 42d9ec 0.00 : 42d99d: 8b 47 20 mov 0x20(%rdi),%eax 0.00 : 42d9a0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 42d9a3: 75 3f jne 42d9e4 0.00 : 42d9a5: 48 83 3d 53 26 22 00 cmpq $0x0,0x222653(%rip) # 650000 0.00 : 42d9ac: 00 0.00 : 42d9ad: 48 c7 05 40 70 22 00 movq $0xffffffffffffffff,0x227040(%rip) # 6549f8 0.00 : 42d9b4: ff ff ff ff 0.00 : 42d9b8: 7f 56 jg 42da10 0.00 : 42d9ba: 8b 1d 98 26 22 00 mov 0x222698(%rip),%ebx # 650058 0.00 : 42d9c0: 48 c7 05 35 26 22 00 movq $0x0,0x222635(%rip) # 650000 0.00 : 42d9c7: 00 00 00 00 0.00 : 42d9cb: 85 db test %ebx,%ebx 0.00 : 42d9cd: 0f 85 2a 01 00 00 jne 42dafd 0.00 : 42d9d3: c7 05 87 6f 22 00 01 movl $0x1,0x226f87(%rip) # 654964 0.00 : 42d9da: 00 00 00 0.00 : 42d9dd: 48 83 c4 08 add $0x8,%rsp 0.00 : 42d9e1: 5b pop %rbx 0.00 : 42d9e2: 5d pop %rbp 0.00 : 42d9e3: c3 retq 0.00 : 42d9e4: 3b 05 56 71 22 00 cmp 0x227156(%rip),%eax # 654b40 0.00 : 42d9ea: 74 05 je 42d9f1 0.00 : 42d9ec: e8 bf 86 00 00 callq 4360b0 0.00 : 42d9f1: 48 83 3d 07 26 22 00 cmpq $0x0,0x222607(%rip) # 650000 0.00 : 42d9f8: 00 0.00 : 42d9f9: 48 c7 05 f4 6f 22 00 movq $0xffffffffffffffff,0x226ff4(%rip) # 6549f8 0.00 : 42da00: ff ff ff ff 0.00 : 42da04: 7e b4 jle 42d9ba 0.00 : 42da06: 48 8b 15 4b 6f 22 00 mov 0x226f4b(%rip),%rdx # 654958 0.00 : 42da0d: 0f 1f 00 nopl (%rax) 0.00 : 42da10: bb 08 00 00 00 mov $0x8,%ebx 0.00 : 42da15: bd 02 00 00 00 mov $0x2,%ebp 0.00 : 42da1a: 48 8b 3c 1a mov (%rdx,%rbx,1),%rdi 0.00 : 42da1e: e8 3d 6d 00 00 callq 434760 0.00 : 42da23: 48 8b 0d 56 29 22 00 mov 0x222956(%rip),%rcx # 650380 0.00 : 42da2a: 48 85 c9 test %rcx,%rcx 0.00 : 42da2d: 74 77 je 42daa6 0.00 : 42da2f: 48 8b 11 mov (%rcx),%rdx 0.00 : 42da32: 48 89 15 47 29 22 00 mov %rdx,0x222947(%rip) # 650380 0.00 : 42da39: 48 8b 15 b8 25 22 00 mov 0x2225b8(%rip),%rdx # 64fff8 0.00 : 42da40: 48 8b 02 mov (%rdx),%rax 0.00 : 42da43: 48 89 01 mov %rax,(%rcx) 0.00 : 42da46: 4c 8b 5a 08 mov 0x8(%rdx),%r11 0.00 : 42da4a: 4c 89 59 08 mov %r11,0x8(%rcx) 0.00 : 42da4e: 4c 8b 52 10 mov 0x10(%rdx),%r10 0.00 : 42da52: 4c 89 51 10 mov %r10,0x10(%rcx) 0.00 : 42da56: 4c 8b 4a 18 mov 0x18(%rdx),%r9 0.00 : 42da5a: 4c 89 49 18 mov %r9,0x18(%rcx) 0.00 : 42da5e: 4c 8b 42 20 mov 0x20(%rdx),%r8 0.00 : 42da62: 4c 89 41 20 mov %r8,0x20(%rcx) 0.00 : 42da66: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.00 : 42da6a: 48 89 79 28 mov %rdi,0x28(%rcx) 0.00 : 42da6e: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : 42da72: 48 89 71 30 mov %rsi,0x30(%rcx) 0.00 : 42da76: 48 8b 42 38 mov 0x38(%rdx),%rax 0.00 : 42da7a: 48 8b 15 d7 6e 22 00 mov 0x226ed7(%rip),%rdx # 654958 0.00 : 42da81: 48 89 41 38 mov %rax,0x38(%rcx) 0.00 : 42da85: 48 89 0c 1a mov %rcx,(%rdx,%rbx,1) 0.00 : 42da89: 48 89 e8 mov %rbp,%rax 0.00 : 42da8c: 48 83 c3 08 add $0x8,%rbx 0.00 : 42da90: 48 83 c5 01 add $0x1,%rbp 0.00 : 42da94: 48 39 05 65 25 22 00 cmp %rax,0x222565(%rip) # 650000 0.00 : 42da9b: 0f 8c 19 ff ff ff jl 42d9ba 0.00 : 42daa1: e9 74 ff ff ff jmpq 42da1a 0.00 : 42daa6: e8 55 70 00 00 callq 434b00 0.00 : 42daab: 48 8b 0d 46 25 22 00 mov 0x222546(%rip),%rcx # 64fff8 0.00 : 42dab2: 48 8b 31 mov (%rcx),%rsi 0.00 : 42dab5: 48 89 30 mov %rsi,(%rax) 0.00 : 42dab8: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 42dabc: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 42dac0: 4c 8b 59 10 mov 0x10(%rcx),%r11 0.00 : 42dac4: 48 8b 15 8d 6e 22 00 mov 0x226e8d(%rip),%rdx # 654958 0.00 : 42dacb: 4c 89 58 10 mov %r11,0x10(%rax) 0.00 : 42dacf: 4c 8b 51 18 mov 0x18(%rcx),%r10 0.00 : 42dad3: 4c 89 50 18 mov %r10,0x18(%rax) 0.00 : 42dad7: 4c 8b 49 20 mov 0x20(%rcx),%r9 0.00 : 42dadb: 4c 89 48 20 mov %r9,0x20(%rax) 0.00 : 42dadf: 4c 8b 41 28 mov 0x28(%rcx),%r8 0.00 : 42dae3: 4c 89 40 28 mov %r8,0x28(%rax) 0.00 : 42dae7: 48 8b 79 30 mov 0x30(%rcx),%rdi 0.00 : 42daeb: 48 89 78 30 mov %rdi,0x30(%rax) 0.00 : 42daef: 48 8b 71 38 mov 0x38(%rcx),%rsi 0.00 : 42daf3: 48 89 70 38 mov %rsi,0x38(%rax) 0.00 : 42daf7: 48 89 04 1a mov %rax,(%rdx,%rbx,1) 0.00 : 42dafb: eb 8c jmp 42da89 0.00 : 42dafd: 48 8b 3d 5c 25 22 00 mov 0x22255c(%rip),%rdi # 650060 0.00 : 42db04: c7 05 4a 25 22 00 00 movl $0x0,0x22254a(%rip) # 650058 0.00 : 42db0b: 00 00 00 0.00 : 42db0e: e8 4d 6c 00 00 callq 434760 0.00 : 42db13: 48 8b 2d 9e 6f 22 00 mov 0x226f9e(%rip),%rbp # 654ab8 0.00 : 42db1a: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 42db1e: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 42db22: a8 06 test $0x6,%al 0.00 : 42db24: 75 14 jne 42db3a 0.00 : 42db26: e8 35 75 00 00 callq 435060 0.00 : 42db2b: 48 89 c7 mov %rax,%rdi 0.00 : 42db2e: 48 89 3d 2b 25 22 00 mov %rdi,0x22252b(%rip) # 650060 0.00 : 42db35: e9 99 fe ff ff jmpq 42d9d3 0.00 : 42db3a: 83 e0 fd and $0xfffffffd,%eax 0.00 : 42db3d: 83 c8 01 or $0x1,%eax 0.00 : 42db40: 66 89 47 3c mov %ax,0x3c(%rdi) 0.00 : 42db44: eb e8 jmp 42db2e Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000434c20 : 0.00 : 434c20: 53 push %rbx 0.00 : 434c21: 89 fb mov %edi,%ebx 0.00 : 434c23: 48 83 ec 10 sub $0x10,%rsp 0.00 : 434c27: 48 8b 15 52 b7 21 00 mov 0x21b752(%rip),%rdx # 650380 0.00 : 434c2e: 48 85 d2 test %rdx,%rdx 0.00 : 434c31: 74 22 je 434c55 0.00 : 434c33: 48 8b 02 mov (%rdx),%rax 0.00 : 434c36: c7 42 38 49 00 00 00 movl $0x49,0x38(%rdx) 100.00 : 434c3d: 66 89 7a 3c mov %di,0x3c(%rdx) 0.00 : 434c41: 48 89 05 38 b7 21 00 mov %rax,0x21b738(%rip) # 650380 0.00 : 434c48: f2 0f 11 02 movsd %xmm0,(%rdx) 0.00 : 434c4c: 48 89 d0 mov %rdx,%rax 0.00 : 434c4f: 48 83 c4 10 add $0x10,%rsp 0.00 : 434c53: 5b pop %rbx 0.00 : 434c54: c3 retq 0.00 : 434c55: f2 0f 11 04 24 movsd %xmm0,(%rsp) 0.00 : 434c5a: e8 a1 fe ff ff callq 434b00 0.00 : 434c5f: f2 0f 10 0c 24 movsd (%rsp),%xmm1 0.00 : 434c64: c7 40 38 49 00 00 00 movl $0x49,0x38(%rax) 0.00 : 434c6b: 66 89 58 3c mov %bx,0x3c(%rax) 0.00 : 434c6f: f2 0f 11 08 movsd %xmm1,(%rax) 0.00 : 434c73: eb da jmp 434c4f Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 00000000004163f0 : 100.00 : 4163f0: ff 25 52 3f 27 00 jmpq *0x273f52(%rip) # 68a348 0.00 : 4163f6: 68 66 00 00 00 pushq $0x66 0.00 : 4163fb: e9 80 f9 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416780 : 100.00 : 416780: ff 25 8a 3d 27 00 jmpq *0x273d8a(%rip) # 68a510 0.00 : 416786: 68 9f 00 00 00 pushq $0x9f 0.00 : 41678b: e9 f0 f5 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000421f60 : 0.00 : 421f60: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 0.00 : 421f65: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 421f6a: 48 83 ec 18 sub $0x18,%rsp 0.00 : 421f6e: 48 85 ff test %rdi,%rdi 0.00 : 421f71: 48 89 fb mov %rdi,%rbx 0.00 : 421f74: 48 89 f5 mov %rsi,%rbp 0.00 : 421f77: 75 17 jne 421f90 0.00 : 421f79: 48 89 d8 mov %rbx,%rax 0.00 : 421f7c: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 421f81: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 421f86: 48 83 c4 18 add $0x18,%rsp 0.00 : 421f8a: c3 retq 0.00 : 421f8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 421f90: e8 5b 44 ff ff callq 4163f0 0.00 : 421f95: 8b 75 00 mov 0x0(%rbp),%esi 0.00 : 421f98: 39 c6 cmp %eax,%esi 0.00 : 421f9a: 7d 54 jge 421ff0 0.00 : 421f9c: 85 f6 test %esi,%esi 0.00 : 421f9e: 66 90 xchg %ax,%ax 0.00 : 421fa0: 75 2e jne 421fd0 0.00 : 421fa2: 0f b6 03 movzbl (%rbx),%eax 0.00 : 421fa5: 48 89 da mov %rbx,%rdx 0.00 : 421fa8: 84 c0 test %al,%al 0.00 : 421faa: 75 4c jne 421ff8 0.00 : 421fac: 89 75 00 mov %esi,0x0(%rbp) 0.00 : 421faf: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 421fb2: 74 06 je 421fba 0.00 : 421fb4: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 421fb7: 89 45 00 mov %eax,0x0(%rbp) 0.00 : 421fba: bf 01 00 00 00 mov $0x1,%edi 0.00 : 421fbf: e8 fc 62 03 00 callq 4582c0 0.00 : 421fc4: c6 00 00 movb $0x0,(%rax) 0.00 : 421fc7: 48 89 c3 mov %rax,%rbx 0.00 : 421fca: eb ad jmp 421f79 0.00 : 421fcc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 421fd0: 48 63 c6 movslq %esi,%rax 0.00 : 421fd3: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 421fd7: 0f b6 02 movzbl (%rdx),%eax 0.00 : 421fda: 3c 3a cmp $0x3a,%al 0.00 : 421fdc: 75 ca jne 421fa8 0.00 : 421fde: 83 c6 01 add $0x1,%esi 0.00 : 421fe1: 48 63 c6 movslq %esi,%rax 0.00 : 421fe4: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 421fe8: 0f b6 02 movzbl (%rdx),%eax 0.00 : 421feb: eb bb jmp 421fa8 0.00 : 421fed: 0f 1f 00 nopl (%rax) 0.00 : 421ff0: 31 db xor %ebx,%ebx 0.00 : 421ff2: eb 85 jmp 421f79 0.00 : 421ff4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 421ff8: 3c 3a cmp $0x3a,%al 0.00 : 421ffa: 74 b0 je 421fac 0.00 : 421ffc: 8d 46 01 lea 0x1(%rsi),%eax 100.00 : 421fff: 89 f2 mov %esi,%edx 0.00 : 422001: 48 98 cltq 0.00 : 422003: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 422007: 0f b6 08 movzbl (%rax),%ecx 0.00 : 42200a: 83 c2 01 add $0x1,%edx 0.00 : 42200d: 48 83 c0 01 add $0x1,%rax 0.00 : 422011: 84 c9 test %cl,%cl 0.00 : 422013: 75 1b jne 422030 0.00 : 422015: 89 55 00 mov %edx,0x0(%rbp) 0.00 : 422018: 48 89 df mov %rbx,%rdi 0.00 : 42201b: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 422020: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 422025: 48 83 c4 18 add $0x18,%rsp 0.00 : 422029: e9 22 0e 03 00 jmpq 452e50 0.00 : 42202e: 66 90 xchg %ax,%ax 0.00 : 422030: 80 f9 3a cmp $0x3a,%cl 0.00 : 422033: 75 d2 jne 422007 0.00 : 422035: eb de jmp 422015 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042b690 : 100.00 : 42b690: 53 push %rbx 0.00 : 42b691: 48 89 fb mov %rdi,%rbx 0.00 : 42b694: 48 8b 3f mov (%rdi),%rdi 0.00 : 42b697: 48 85 ff test %rdi,%rdi 0.00 : 42b69a: 74 05 je 42b6a1 0.00 : 42b69c: e8 1f ad fe ff callq 4163c0 0.00 : 42b6a1: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 42b6a5: 48 85 ff test %rdi,%rdi 0.00 : 42b6a8: 74 13 je 42b6bd 0.00 : 42b6aa: be c0 cc 42 00 mov $0x42ccc0,%esi 0.00 : 42b6af: e8 dc 8d 01 00 callq 444490 0.00 : 42b6b4: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 42b6b8: e8 b3 8d 01 00 callq 444470 0.00 : 42b6bd: 48 89 df mov %rbx,%rdi 0.00 : 42b6c0: 5b pop %rbx 0.00 : 42b6c1: e9 fa ac fe ff jmpq 4163c0 Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000445650 : 100.00 : 445650: bf 00 57 44 00 mov $0x445700,%edi 0.00 : 445655: e9 36 ff ff ff jmpq 445590 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000bd00 : 100.00 : bd00: 41 57 push %r15 0.00 : bd32: 41 out %al,(%dx) 0.00 : bd33: 89 d7 41 56 41 55 49 mov $0x0,%rdi 0.00 : bd3a: 89 fd 41 54 55 callq bd3f 0.00 : bd3f: 53 48 83 ec cmp $0xffffffe4,%r12d 0.00 : bd43: 18 48 89 34 24 c7 jne be08 0.00 : bd49: 44 24 14 00 mov 0x18(%r13),%rdi 0.00 : bd4d: 00 00 00 e8 00 lea 0x14(%rsp),%rsi 0.00 : bd52: 00 00 00 4c 8b callq bd57 0.00 : bd57: 34 24 test %eax,%eax 0.00 : bd59: 49 83 c6 20 eb 30 je be08 0.00 : bd5f: 90 48 89 ee mov 0x18(%r13),%rdi 0.00 : bd63: 48 c7 c7 00 00 00 00 mov 0x338(%rdi),%rax 0.00 : bd6a: e8 00 00 00 mov 0x78(%rax),%rax 0.00 : bd6e: 00 41 83 fc e4 and $0x80000,%eax 0.00 : bd73: 0f 85 bf 00 cmp $0x1,%rax 0.00 : bd77: 00 00 sbb %esi,%esi 0.00 : bd79: 49 8b 7d and $0xffffffca,%esi 0.00 : bd7c: 18 48 8d add $0x4d,%esi 0.00 : bd7f: 74 24 14 e8 00 callq bd84 0.00 : bd84: 00 00 00 85 c0 0f cmp $0xfffffffffffff000,%rax 0.00 : bd8a: 84 a9 00 mov %rax,%rbp 0.00 : bd8d: 00 00 ja be00 0.00 : bd8f: 49 8b 7d 18 mov 0x18(%r13),%rax 0.00 : bd93: 48 8b 87 38 testb $0x90,0x50(%rax) 0.00 : bd97: 03 00 jne bda0 0.00 : bd99: 00 48 8b 40 78 testb $0x41,0x24(%r13) 0.00 : bd9e: 25 00 je bda4 0.00 : bda0: 00 08 00 48 orb $0x1,0x14(%rbp) 0.00 : bda4: 83 f8 01 mov %r15d,%ecx 0.00 : bda7: 19 f6 83 mov %r14,%rdx 0.00 : bdaa: e6 ca 83 mov %r13,%rsi 0.00 : bdad: c6 4d e8 mov %rbp,%rdi 0.00 : bdb0: 00 00 00 00 48 callq bdb5 0.00 : bdb5: 3d 00 f0 ff ff 48 cmp $0xfffffffffffff000,%rax 0.00 : bdbb: 89 c5 77 mov %rax,%rbx 0.00 : bdbe: 71 49 8b mov %eax,%r12d 0.00 : bdc1: 45 18 f6 40 50 90 ja bd30 0.00 : bdc7: 75 07 41 mov %rax,%rdi 0.00 : bdca: f6 45 24 41 74 04 80 movq $0x0,0x10(%rax) 0.00 : bdd1: 4d 0.00 : bdd2: 14 01 44 89 f9 4c 89 movq $0x0,0x138(%rax) 0.00 : bdd9: f2 4c 89 ee 0.00 : bddd: 48 89 ef e8 00 callq bde2 0.00 : bde2: 00 00 00 48 mov (%rsp),%rsi 0.00 : bde6: 3d 00 f0 mov %rbx,%rdx 0.00 : bde9: ff ff 48 mov %rbp,%rdi 0.00 : bdec: 89 c3 41 89 c4 callq bb60 0.00 : bdf1: 0f 87 69 mov %eax,%r12d 0.00 : bdf4: ff ff ff 48 89 jmpq bd30 0.00 : bdf9: c7 48 c7 40 10 00 00 nopl 0x0(%rax) 0.00 : be00: 00 00 48 mov %eax,%r12d 0.00 : be03: c7 80 38 01 00 nopl 0x0(%rax,%rax,1) 0.00 : be08: 00 00 00 00 add $0x18,%rsp 0.00 : be0c: 00 e8 00 mov %r12d,%eax 0.00 : be0f: 00 pop %rbx 0.00 : be10: 00 pop %rbp 0.00 : be11: 00 48 pop %r12 0.00 : be13: 8b 34 pop %r13 0.00 : be15: 24 48 pop %r14 0.00 : be17: 89 da pop %r15 0.00 : be19: 48 retq : be1a: 89 ef e8 6f fd ff nopw 0x0(%rax,%rax,1) : be20: ff 41 push %r15 : be22: 89 c4 push %r14 : be24: e9 37 push %r13 : be26: ff ff ff mov %rdi,%r13 : be29: 0f 1f 80 mov %rdx,%rdi : be2c: 00 00 push %r12 : be2e: 00 00 41 89 c4 0f mov $0xffffffdc,%r12d : be34: 1f push %rbp : be35: 44 push %rbx : be36: 00 00 48 83 sub $0x38,%rsp : be3a: c4 18 44 89 e0 mov %rdx,0x8(%rsp) : be3f: 5b 5d 41 5c 41 mov %rsi,0x10(%rsp) : be44: 5d 41 5e 41 5f c3 66 movl $0x0,0x34(%rsp) : be4b: 0f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/kwlookup.c:58 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000052a4f0 : : */ : const ScanKeyword * : ScanKeywordLookup(const char *text, : const ScanKeyword *keywords, : int num_keywords) : { 0.00 : 52a4f0: 55 push %rbp 0.00 : 52a4f1: 48 89 e5 mov %rsp,%rbp 0.00 : 52a4f4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 52a4f8: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 52a4fc: 48 89 fb mov %rdi,%rbx 0.00 : 52a4ff: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 52a503: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 52a507: 48 83 ec 60 sub $0x60,%rsp 0.00 : 52a50b: 49 89 f5 mov %rsi,%r13 0.00 : 52a50e: 41 89 d6 mov %edx,%r14d : i; : char word[NAMEDATALEN]; : const ScanKeyword *low; : const ScanKeyword *high; : : len = strlen(text); 0.00 : 52a511: e8 3a f3 f3 ff callq 469850 : /* We assume all keywords are shorter than NAMEDATALEN. */ : if (len >= NAMEDATALEN) 0.00 : 52a516: 83 f8 3f cmp $0x3f,%eax : i; : char word[NAMEDATALEN]; : const ScanKeyword *low; : const ScanKeyword *high; : : len = strlen(text); 0.00 : 52a519: 89 c7 mov %eax,%edi : /* We assume all keywords are shorter than NAMEDATALEN. */ : if (len >= NAMEDATALEN) 0.00 : 52a51b: 7e 1b jle 52a538 : /* : * Now do a binary search using plain strcmp() comparison. : */ : low = keywords; : high = keywords + (num_keywords - 1); : while (low <= high) 0.00 : 52a51d: 31 db xor %ebx,%ebx : else : high = middle - 1; : } : : return NULL; : } 0.00 : 52a51f: 48 89 d8 mov %rbx,%rax 0.00 : 52a522: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 52a526: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 52a52a: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 52a52e: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 52a532: c9 leaveq 0.00 : 52a533: c3 retq 0.00 : 52a534: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Apply an ASCII-only downcasing. We must not use tolower() since it may : * produce the wrong translation in some locales (eg, Turkish). : */ : for (i = 0; i < len; i++) 0.00 : 52a538: 85 c0 test %eax,%eax 0.00 : 52a53a: 7e 28 jle 52a564 0.00 : 52a53c: 4c 8d 65 a0 lea -0x60(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/parser/kwlookup.c:58 100.00 : 52a540: 31 f6 xor %esi,%esi 0.00 : 52a542: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : char ch = text[i]; 0.00 : 52a548: 0f b6 04 33 movzbl (%rbx,%rsi,1),%eax : : if (ch >= 'A' && ch <= 'Z') 0.00 : 52a54c: 8d 50 bf lea -0x41(%rax),%edx : ch += 'a' - 'A'; 0.00 : 52a54f: 8d 48 20 lea 0x20(%rax),%ecx 0.00 : 52a552: 80 fa 19 cmp $0x19,%dl 0.00 : 52a555: 0f 46 c1 cmovbe %ecx,%eax : word[i] = ch; 0.00 : 52a558: 41 88 04 34 mov %al,(%r12,%rsi,1) 0.00 : 52a55c: 48 83 c6 01 add $0x1,%rsi : : /* : * Apply an ASCII-only downcasing. We must not use tolower() since it may : * produce the wrong translation in some locales (eg, Turkish). : */ : for (i = 0; i < len; i++) 0.00 : 52a560: 39 f7 cmp %esi,%edi 0.00 : 52a562: 7f e4 jg 52a548 : : if (ch >= 'A' && ch <= 'Z') : ch += 'a' - 'A'; : word[i] = ch; : } : word[len] = '\0'; 0.00 : 52a564: 48 63 c7 movslq %edi,%rax 0.00 : 52a567: c6 44 05 a0 00 movb $0x0,-0x60(%rbp,%rax,1) : : /* : * Now do a binary search using plain strcmp() comparison. : */ : low = keywords; : high = keywords + (num_keywords - 1); 0.00 : 52a56c: 49 63 c6 movslq %r14d,%rax 0.00 : 52a56f: 48 c1 e0 04 shl $0x4,%rax 0.00 : 52a573: 4d 8d 74 05 f0 lea -0x10(%r13,%rax,1),%r14 : while (low <= high) 0.00 : 52a578: 4d 39 f5 cmp %r14,%r13 0.00 : 52a57b: 77 a0 ja 52a51d 0.00 : 52a57d: 4c 8d 65 a0 lea -0x60(%rbp),%r12 0.00 : 52a581: eb 0e jmp 52a591 0.00 : 52a583: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (difference == 0) : return middle; : else if (difference < 0) : low = middle + 1; : else : high = middle - 1; 0.00 : 52a588: 4c 8d 73 f0 lea -0x10(%rbx),%r14 : /* : * Now do a binary search using plain strcmp() comparison. : */ : low = keywords; : high = keywords + (num_keywords - 1); : while (low <= high) 0.00 : 52a58c: 4d 39 ee cmp %r13,%r14 0.00 : 52a58f: 72 8c jb 52a51d : { : const ScanKeyword *middle; : int difference; : : middle = low + (high - low) / 2; 0.00 : 52a591: 4c 89 f0 mov %r14,%rax : difference = strcmp(middle->name, word); 0.00 : 52a594: 4c 89 e6 mov %r12,%rsi : while (low <= high) : { : const ScanKeyword *middle; : int difference; : : middle = low + (high - low) / 2; 0.00 : 52a597: 4c 29 e8 sub %r13,%rax 0.00 : 52a59a: 48 c1 f8 04 sar $0x4,%rax 0.00 : 52a59e: 48 89 c2 mov %rax,%rdx 0.00 : 52a5a1: 48 c1 ea 3f shr $0x3f,%rdx 0.00 : 52a5a5: 48 01 c2 add %rax,%rdx 0.00 : 52a5a8: 48 d1 fa sar %rdx 0.00 : 52a5ab: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 52a5af: 49 8d 5c 15 00 lea 0x0(%r13,%rdx,1),%rbx : difference = strcmp(middle->name, word); 0.00 : 52a5b4: 48 8b 3b mov (%rbx),%rdi 0.00 : 52a5b7: e8 74 f7 f3 ff callq 469d30 : if (difference == 0) 0.00 : 52a5bc: 83 f8 00 cmp $0x0,%eax 0.00 : 52a5bf: 0f 84 5a ff ff ff je 52a51f : return middle; : else if (difference < 0) 0.00 : 52a5c5: 7d c1 jge 52a588 : low = middle + 1; 0.00 : 52a5c7: 4c 8d 6b 10 lea 0x10(%rbx),%r13 0.00 : 52a5cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 52a5d0: eb ba jmp 52a58c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:1946 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000554480 : : /* : * Emit one row during CopyTo(). : */ : static void : CopyOneRowTo(CopyState cstate, Oid tupleOid, Datum *values, bool *nulls) : { 0.00 : 554480: 55 push %rbp 0.00 : 554481: 48 89 e5 mov %rsp,%rbp 0.00 : 554484: 41 57 push %r15 0.00 : 554486: 41 56 push %r14 0.00 : 554488: 49 89 fe mov %rdi,%r14 0.00 : 55448b: 41 55 push %r13 0.00 : 55448d: 41 54 push %r12 0.00 : 55448f: 53 push %rbx 0.00 : 554490: 89 f3 mov %esi,%ebx 0.00 : 554492: 48 83 ec 58 sub $0x58,%rsp 0.00 : 554496: 48 89 55 98 mov %rdx,-0x68(%rbp) 0.00 : 55449a: 48 89 4d 90 mov %rcx,-0x70(%rbp) : bool need_delim = false; : FmgrInfo *out_functions = cstate->out_functions; 0.00 : 55449e: 48 8b 87 f8 00 00 00 mov 0xf8(%rdi),%rax 0.00 : 5544a5: 48 89 45 a8 mov %rax,-0x58(%rbp) : MemoryContext oldcontext; : ListCell *cur; : char *string; : : MemoryContextReset(cstate->rowcontext); 0.00 : 5544a9: 48 8b bf 00 01 00 00 mov 0x100(%rdi),%rdi 0.00 : 5544b0: e8 fb 44 24 00 callq 7989b0 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5544b5: 48 8b 05 a4 63 66 00 mov 0x6663a4(%rip),%rax # bba860 0.00 : 5544bc: 48 89 45 b0 mov %rax,-0x50(%rbp) : : CurrentMemoryContext = context; 0.00 : 5544c0: 49 8b 86 00 01 00 00 mov 0x100(%r14),%rax 0.00 : 5544c7: 48 89 05 92 63 66 00 mov %rax,0x666392(%rip) # bba860 : oldcontext = MemoryContextSwitchTo(cstate->rowcontext); : : if (cstate->binary) 0.00 : 5544ce: 41 80 7e 49 00 cmpb $0x0,0x49(%r14) 0.00 : 5544d3: 0f 84 1f 03 00 00 je 5547f8 : { : /* Binary per-tuple header */ : CopySendInt16(cstate, list_length(cstate->attnumlist)); 0.00 : 5544d9: 49 8b 56 38 mov 0x38(%r14),%rdx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5544dd: 31 c0 xor %eax,%eax 0.00 : 5544df: 48 85 d2 test %rdx,%rdx 0.00 : 5544e2: 74 04 je 5544e8 0.00 : 5544e4: 0f b7 42 04 movzwl 0x4(%rdx),%eax : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 5544e8: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 5544ec: 48 8d 75 d6 lea -0x2a(%rbp),%rsi 0.00 : 5544f0: ba 02 00 00 00 mov $0x2,%edx : static void : CopySendInt16(CopyState cstate, int16 val) : { : uint16 buf; : : buf = htons((uint16) val); 0.00 : 5544f5: 66 c1 c8 08 ror $0x8,%ax 0.00 : 5544f9: 66 89 45 d6 mov %ax,-0x2a(%rbp) : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 5544fd: e8 ee d7 07 00 callq 5d1cf0 : if (cstate->binary) : { : /* Binary per-tuple header */ : CopySendInt16(cstate, list_length(cstate->attnumlist)); : /* Send OID if wanted --- note attnumlist doesn't include it */ : if (cstate->oids) 0.00 : 554502: 41 80 7e 4a 00 cmpb $0x0,0x4a(%r14) 0.00 : 554507: 0f 85 d3 04 00 00 jne 5549e0 : /* Assume digits don't need any quoting or encoding conversion */ : if (cstate->oids) : { : string = DatumGetCString(DirectFunctionCall1(oidout, : ObjectIdGetDatum(tupleOid))); : CopySendString(cstate, string); 0.00 : 55450d: c6 45 a7 00 movb $0x0,-0x59(%rbp) : need_delim = true; : } : } : : foreach(cur, cstate->attnumlist) 0.00 : 554511: 49 8b 46 38 mov 0x38(%r14),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 554515: 48 85 c0 test %rax,%rax 0.00 : 554518: 75 1f jne 554539 0.00 : 55451a: e9 41 01 00 00 jmpq 554660 0.00 : 55451f: 90 nop : need_delim = true; : } : : if (isnull) : { : if (!cstate->binary) 0.00 : 554520: 84 c0 test %al,%al 0.00 : 554522: 0f 85 00 01 00 00 jne 554628 : CopySendString(cstate, cstate->null_print_client); 0.00 : 554528: 49 8b 76 60 mov 0x60(%r14),%rsi 0.00 : 55452c: 4c 89 f7 mov %r14,%rdi 0.00 : 55452f: 90 nop 0.00 : 554530: e8 cb f9 ff ff callq 553f00 : CopySendString(cstate, string); : need_delim = true; : } : } : : foreach(cur, cstate->attnumlist) 0.00 : 554535: 48 8b 45 b8 mov -0x48(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:1946 100.00 : 554539: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 55453d: 48 85 c0 test %rax,%rax 0.00 : 554540: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 554544: 0f 84 16 01 00 00 je 554660 : { : int attnum = lfirst_int(cur); : Datum value = values[attnum - 1]; 0.00 : 55454a: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 55454e: 4c 63 20 movslq (%rax),%r12 0.00 : 554551: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 554555: 49 8d 5c 24 ff lea -0x1(%r12),%rbx 0.00 : 55455a: 4c 8b 3c d8 mov (%rax,%rbx,8),%r15 : bool isnull = nulls[attnum - 1]; 0.00 : 55455e: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 554562: 46 0f b6 6c 20 ff movzbl -0x1(%rax,%r12,1),%r13d : : if (!cstate->binary) 0.00 : 554568: 41 0f b6 46 49 movzbl 0x49(%r14),%eax 0.00 : 55456d: 84 c0 test %al,%al 0.00 : 55456f: 75 0e jne 55457f : { : if (need_delim) 0.00 : 554571: 80 7d a7 00 cmpb $0x0,-0x59(%rbp) 0.00 : 554575: 0f 85 c5 00 00 00 jne 554640 : CopySendChar(cstate, cstate->delim[0]); 0.00 : 55457b: c6 45 a7 01 movb $0x1,-0x59(%rbp) : need_delim = true; : } : : if (isnull) 0.00 : 55457f: 45 84 ed test %r13b,%r13b 0.00 : 554582: 75 9c jne 554520 : else : CopySendInt32(cstate, -1); : } : else : { : if (!cstate->binary) 0.00 : 554584: 84 c0 test %al,%al 0.00 : 554586: 75 58 jne 5545e0 : { : string = OutputFunctionCall(&out_functions[attnum - 1], 0.00 : 554588: 48 8d 3c 5b lea (%rbx,%rbx,2),%rdi 0.00 : 55458c: 4c 89 fe mov %r15,%rsi 0.00 : 55458f: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 554593: 48 03 7d a8 add -0x58(%rbp),%rdi 0.00 : 554597: e8 d4 b0 22 00 callq 77f670 : value); : if (cstate->csv_mode) 0.00 : 55459c: 41 80 7e 4c 00 cmpb $0x0,0x4c(%r14) : } : else : { : if (!cstate->binary) : { : string = OutputFunctionCall(&out_functions[attnum - 1], 0.00 : 5545a1: 48 89 c3 mov %rax,%rbx : value); : if (cstate->csv_mode) 0.00 : 5545a4: 0f 84 de 00 00 00 je 554688 : CopyAttributeOutCSV(cstate, string, 0.00 : 5545aa: 49 8b 46 38 mov 0x38(%r14),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5545ae: 31 c9 xor %ecx,%ecx 0.00 : 5545b0: 48 85 c0 test %rax,%rax 0.00 : 5545b3: 74 09 je 5545be 0.00 : 5545b5: 31 c9 xor %ecx,%ecx 0.00 : 5545b7: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 5545bb: 0f 94 c1 sete %cl 0.00 : 5545be: 49 8b 86 90 00 00 00 mov 0x90(%r14),%rax 0.00 : 5545c5: 48 89 de mov %rbx,%rsi 0.00 : 5545c8: 4c 89 f7 mov %r14,%rdi 0.00 : 5545cb: 42 0f be 54 20 ff movsbl -0x1(%rax,%r12,1),%edx 0.00 : 5545d1: e8 9a f9 ff ff callq 553f70 0.00 : 5545d6: e9 5a ff ff ff jmpq 554535 0.00 : 5545db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : { : bytea *outputbytes; : : outputbytes = SendFunctionCall(&out_functions[attnum - 1], 0.00 : 5545e0: 48 8d 3c 5b lea (%rbx,%rbx,2),%rdi 0.00 : 5545e4: 4c 89 fe mov %r15,%rsi 0.00 : 5545e7: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 5545eb: 48 03 7d a8 add -0x58(%rbp),%rdi 0.00 : 5545ef: e8 1c b0 22 00 callq 77f610 : value); : CopySendInt32(cstate, VARSIZE(outputbytes) - VARHDRSZ); 0.00 : 5545f4: 8b 30 mov (%rax),%esi : } : else : { : bytea *outputbytes; : : outputbytes = SendFunctionCall(&out_functions[attnum - 1], 0.00 : 5545f6: 48 89 c3 mov %rax,%rbx : value); : CopySendInt32(cstate, VARSIZE(outputbytes) - VARHDRSZ); 0.00 : 5545f9: 4c 89 f7 mov %r14,%rdi 0.00 : 5545fc: c1 ee 02 shr $0x2,%esi 0.00 : 5545ff: 83 ee 04 sub $0x4,%esi 0.00 : 554602: e8 39 f9 ff ff callq 553f40 : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 554607: 8b 13 mov (%rbx),%edx 0.00 : 554609: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 55460d: 48 8d 73 04 lea 0x4(%rbx),%rsi 0.00 : 554611: c1 ea 02 shr $0x2,%edx 0.00 : 554614: 83 ea 04 sub $0x4,%edx 0.00 : 554617: e8 d4 d6 07 00 callq 5d1cf0 0.00 : 55461c: e9 14 ff ff ff jmpq 554535 0.00 : 554621: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (isnull) : { : if (!cstate->binary) : CopySendString(cstate, cstate->null_print_client); : else : CopySendInt32(cstate, -1); 0.00 : 554628: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 55462d: 4c 89 f7 mov %r14,%rdi 0.00 : 554630: e8 0b f9 ff ff callq 553f40 0.00 : 554635: e9 fb fe ff ff jmpq 554535 0.00 : 55463a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : bool isnull = nulls[attnum - 1]; : : if (!cstate->binary) : { : if (need_delim) : CopySendChar(cstate, cstate->delim[0]); 0.00 : 554640: 49 8b 46 68 mov 0x68(%r14),%rax 0.00 : 554644: 4c 89 f7 mov %r14,%rdi 0.00 : 554647: 0f be 30 movsbl (%rax),%esi 0.00 : 55464a: e8 61 f8 ff ff callq 553eb0 0.00 : 55464f: 41 0f b6 46 49 movzbl 0x49(%r14),%eax 0.00 : 554654: e9 22 ff ff ff jmpq 55457b 0.00 : 554659: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : VARSIZE(outputbytes) - VARHDRSZ); : } : } : } : : CopySendEndOfRow(cstate); 0.00 : 554660: 4c 89 f7 mov %r14,%rdi 0.00 : 554663: e8 28 fc ff ff callq 554290 0.00 : 554668: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 55466c: 48 89 05 ed 61 66 00 mov %rax,0x6661ed(%rip) # bba860 : : MemoryContextSwitchTo(oldcontext); : } 0.00 : 554673: 48 83 c4 58 add $0x58,%rsp 0.00 : 554677: 5b pop %rbx 0.00 : 554678: 41 5c pop %r12 0.00 : 55467a: 41 5d pop %r13 0.00 : 55467c: 41 5e pop %r14 0.00 : 55467e: 41 5f pop %r15 0.00 : 554680: c9 leaveq 0.00 : 554681: c3 retq 0.00 : 554682: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : CopyAttributeOutText(CopyState cstate, char *string) : { : char *ptr; : char *start; : char c; : char delimc = cstate->delim[0]; 0.00 : 554688: 49 8b 46 68 mov 0x68(%r14),%rax : : if (cstate->need_transcoding) 0.00 : 55468c: 41 80 7e 24 00 cmpb $0x0,0x24(%r14) : CopyAttributeOutText(CopyState cstate, char *string) : { : char *ptr; : char *start; : char c; : char delimc = cstate->delim[0]; 0.00 : 554691: 0f b6 00 movzbl (%rax),%eax 0.00 : 554694: 88 45 c7 mov %al,-0x39(%rbp) : : if (cstate->need_transcoding) 0.00 : 554697: 0f 85 03 03 00 00 jne 5549a0 : * in valid backend encodings, extra bytes of a multibyte character never : * look like ASCII. This loop is sufficiently performance-critical that : * it's worth making two copies of it to get the IS_HIGHBIT_SET() test out : * of the normal safe-encoding path. : */ : if (cstate->encoding_embeds_ascii) 0.00 : 55469d: 41 80 7e 25 00 cmpb $0x0,0x25(%r14) 0.00 : 5546a2: 49 89 dd mov %rbx,%r13 : case '\v': : c = 'v'; : break; : default: : /* If it's the delimiter, must backslash it */ : if (c == delimc) 0.00 : 5546a5: 44 0f be 7d c7 movsbl -0x39(%rbp),%r15d : * in valid backend encodings, extra bytes of a multibyte character never : * look like ASCII. This loop is sufficiently performance-critical that : * it's worth making two copies of it to get the IS_HIGHBIT_SET() test out : * of the normal safe-encoding path. : */ : if (cstate->encoding_embeds_ascii) 0.00 : 5546aa: 0f 85 b3 00 00 00 jne 554763 : case '\v': : c = 'v'; : break; : default: : /* If it's the delimiter, must backslash it */ : if (c == delimc) 0.00 : 5546b0: 0f be 45 c7 movsbl -0x39(%rbp),%eax : * in valid backend encodings, extra bytes of a multibyte character never : * look like ASCII. This loop is sufficiently performance-critical that : * it's worth making two copies of it to get the IS_HIGHBIT_SET() test out : * of the normal safe-encoding path. : */ : if (cstate->encoding_embeds_ascii) 0.00 : 5546b4: 49 89 dc mov %rbx,%r12 0.00 : 5546b7: 4c 8d 7b 01 lea 0x1(%rbx),%r15 : start = ++ptr; /* do not include char in next run */ : } : else if (c == '\\' || c == delimc) : { : DUMPSOFAR(); : CopySendChar(cstate, '\\'); 0.00 : 5546bb: 4d 89 e5 mov %r12,%r13 : case '\v': : c = 'v'; : break; : default: : /* If it's the delimiter, must backslash it */ : if (c == delimc) 0.00 : 5546be: 89 45 8c mov %eax,-0x74(%rbp) : } : } : else : { : start = ptr; : while ((c = *ptr) != '\0') 0.00 : 5546c1: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 5546c6: 84 d2 test %dl,%dl 0.00 : 5546c8: 74 48 je 554712 0.00 : 5546ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if ((unsigned char) c < (unsigned char) 0x20) 0.00 : 5546d0: 80 fa 1f cmp $0x1f,%dl 0.00 : 5546d3: 0f 87 df 01 00 00 ja 5548b8 : * prefer to dump these using the C-like notation, rather than : * a backslash and the literal character, because it makes the : * dump file a bit more proof against Microsoftish data : * mangling. : */ : switch (c) 0.00 : 5546d9: 8d 42 f8 lea -0x8(%rdx),%eax 0.00 : 5546dc: 3c 05 cmp $0x5,%al 0.00 : 5546de: 0f 86 04 02 00 00 jbe 5548e8 : case '\v': : c = 'v'; : break; : default: : /* If it's the delimiter, must backslash it */ : if (c == delimc) 0.00 : 5546e4: 38 55 c7 cmp %dl,-0x39(%rbp) 0.00 : 5546e7: 44 8b 6d 8c mov -0x74(%rbp),%r13d 0.00 : 5546eb: 0f 84 9f 01 00 00 je 554890 0.00 : 5546f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : start = ++ptr; /* do not include char in next run */ : } : else if (c == '\\' || c == delimc) : { : DUMPSOFAR(); : CopySendChar(cstate, '\\'); 0.00 : 5546f8: 49 89 dd mov %rbx,%r13 0.00 : 5546fb: 49 83 c4 01 add $0x1,%r12 0.00 : 5546ff: 49 83 c7 01 add $0x1,%r15 0.00 : 554703: 4c 89 eb mov %r13,%rbx : } : } : else : { : start = ptr; : while ((c = *ptr) != '\0') 0.00 : 554706: 41 0f b6 14 24 movzbl (%r12),%edx : start = ++ptr; /* do not include char in next run */ : } : else if (c == '\\' || c == delimc) : { : DUMPSOFAR(); : CopySendChar(cstate, '\\'); 0.00 : 55470b: 4d 89 e5 mov %r12,%r13 : } : } : else : { : start = ptr; : while ((c = *ptr) != '\0') 0.00 : 55470e: 84 d2 test %dl,%dl 0.00 : 554710: 75 be jne 5546d0 0.00 : 554712: 49 89 dd mov %rbx,%r13 0.00 : 554715: 4c 89 e3 mov %r12,%rbx : else : ptr++; : } : } : : DUMPSOFAR(); 0.00 : 554718: 4c 39 eb cmp %r13,%rbx 0.00 : 55471b: 0f 86 14 fe ff ff jbe 554535 : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 554721: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 554725: 89 da mov %ebx,%edx 0.00 : 554727: 4c 89 ee mov %r13,%rsi 0.00 : 55472a: 44 29 ea sub %r13d,%edx 0.00 : 55472d: e8 be d5 07 00 callq 5d1cf0 0.00 : 554732: e9 fe fd ff ff jmpq 554535 0.00 : 554737: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55473e: 00 00 : DUMPSOFAR(); : CopySendChar(cstate, '\\'); : CopySendChar(cstate, c); : start = ++ptr; /* do not include char in next run */ : } : else if (c == '\\' || c == delimc) 0.00 : 554740: 80 fa 5c cmp $0x5c,%dl 0.00 : 554743: 74 7b je 5547c0 0.00 : 554745: 38 55 c7 cmp %dl,-0x39(%rbp) 0.00 : 554748: 74 76 je 5547c0 : { : DUMPSOFAR(); : CopySendChar(cstate, '\\'); : start = ptr++; /* we include char in next run */ : } : else if (IS_HIGHBIT_SET(c)) 0.00 : 55474a: 84 d2 test %dl,%dl 0.00 : 55474c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 554750: 0f 88 6a 02 00 00 js 5549c0 : ptr += pg_encoding_mblen(cstate->file_encoding, ptr); : else : ptr++; 0.00 : 554756: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 55475a: 4c 89 eb mov %r13,%rbx 0.00 : 55475d: 49 89 dd mov %rbx,%r13 0.00 : 554760: 48 89 c3 mov %rax,%rbx : * of the normal safe-encoding path. : */ : if (cstate->encoding_embeds_ascii) : { : start = ptr; : while ((c = *ptr) != '\0') 0.00 : 554763: 0f b6 13 movzbl (%rbx),%edx 0.00 : 554766: 84 d2 test %dl,%dl 0.00 : 554768: 74 ae je 554718 : { : if ((unsigned char) c < (unsigned char) 0x20) 0.00 : 55476a: 80 fa 1f cmp $0x1f,%dl 0.00 : 55476d: 77 d1 ja 554740 : * prefer to dump these using the C-like notation, rather than : * a backslash and the literal character, because it makes the : * dump file a bit more proof against Microsoftish data : * mangling. : */ : switch (c) 0.00 : 55476f: 8d 42 f8 lea -0x8(%rdx),%eax 0.00 : 554772: 3c 05 cmp $0x5,%al 0.00 : 554774: 76 3a jbe 5547b0 : case '\v': : c = 'v'; : break; : default: : /* If it's the delimiter, must backslash it */ : if (c == delimc) 0.00 : 554776: 38 55 c7 cmp %dl,-0x39(%rbp) 0.00 : 554779: 45 89 fc mov %r15d,%r12d 0.00 : 55477c: 75 d8 jne 554756 0.00 : 55477e: 66 90 xchg %ax,%ax : /* All ASCII control chars are length 1 */ : ptr++; : continue; /* fall to end of loop */ : } : /* if we get here, we need to convert the control char */ : DUMPSOFAR(); 0.00 : 554780: 4c 39 eb cmp %r13,%rbx 0.00 : 554783: 77 5b ja 5547e0 : CopySendChar(cstate, '\\'); 0.00 : 554785: be 5c 00 00 00 mov $0x5c,%esi 0.00 : 55478a: 4c 89 f7 mov %r14,%rdi 0.00 : 55478d: e8 1e f7 ff ff callq 553eb0 : CopySendChar(cstate, c); 0.00 : 554792: 44 89 e6 mov %r12d,%esi 0.00 : 554795: 4c 89 f7 mov %r14,%rdi 0.00 : 554798: e8 13 f7 ff ff callq 553eb0 : start = ++ptr; /* do not include char in next run */ 0.00 : 55479d: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 5547a1: 48 89 c3 mov %rax,%rbx 0.00 : 5547a4: eb b7 jmp 55475d 0.00 : 5547a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5547ad: 00 00 00 : * prefer to dump these using the C-like notation, rather than : * a backslash and the literal character, because it makes the : * dump file a bit more proof against Microsoftish data : * mangling. : */ : switch (c) 0.00 : 5547b0: 0f b6 c0 movzbl %al,%eax 0.00 : 5547b3: ff 24 c5 00 99 87 00 jmpq *0x879900(,%rax,8) 0.00 : 5547ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : CopySendChar(cstate, c); : start = ++ptr; /* do not include char in next run */ : } : else if (c == '\\' || c == delimc) : { : DUMPSOFAR(); 0.00 : 5547c0: 4c 39 eb cmp %r13,%rbx 0.00 : 5547c3: 0f 87 97 01 00 00 ja 554960 : CopySendChar(cstate, '\\'); 0.00 : 5547c9: be 5c 00 00 00 mov $0x5c,%esi 0.00 : 5547ce: 4c 89 f7 mov %r14,%rdi 0.00 : 5547d1: e8 da f6 ff ff callq 553eb0 : start = ptr++; /* we include char in next run */ 0.00 : 5547d6: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 5547da: eb 81 jmp 55475d 0.00 : 5547dc: 0f 1f 40 00 nopl 0x0(%rax) : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 5547e0: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 5547e4: 89 da mov %ebx,%edx 0.00 : 5547e6: 4c 89 ee mov %r13,%rsi 0.00 : 5547e9: 44 29 ea sub %r13d,%edx 0.00 : 5547ec: e8 ff d4 07 00 callq 5d1cf0 0.00 : 5547f1: eb 92 jmp 554785 0.00 : 5547f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : { : /* Text format has no per-tuple header, but send OID if wanted */ : /* Assume digits don't need any quoting or encoding conversion */ : if (cstate->oids) 0.00 : 5547f8: 41 80 7e 4a 00 cmpb $0x0,0x4a(%r14) 0.00 : 5547fd: 0f 84 0a fd ff ff je 55450d : { : string = DatumGetCString(DirectFunctionCall1(oidout, 0.00 : 554803: 89 da mov %ebx,%edx 0.00 : 554805: 31 f6 xor %esi,%esi 0.00 : 554807: bf 20 e7 70 00 mov $0x70e720,%edi 0.00 : 55480c: e8 2f a0 22 00 callq 77e840 : ObjectIdGetDatum(tupleOid))); : CopySendString(cstate, string); 0.00 : 554811: 4c 89 f7 mov %r14,%rdi : { : /* Text format has no per-tuple header, but send OID if wanted */ : /* Assume digits don't need any quoting or encoding conversion */ : if (cstate->oids) : { : string = DatumGetCString(DirectFunctionCall1(oidout, 0.00 : 554814: 48 89 c6 mov %rax,%rsi : ObjectIdGetDatum(tupleOid))); : CopySendString(cstate, string); 0.00 : 554817: e8 e4 f6 ff ff callq 553f00 0.00 : 55481c: c6 45 a7 01 movb $0x1,-0x59(%rbp) 0.00 : 554820: e9 ec fc ff ff jmpq 554511 0.00 : 554825: 0f 1f 00 nopl (%rax) : * prefer to dump these using the C-like notation, rather than : * a backslash and the literal character, because it makes the : * dump file a bit more proof against Microsoftish data : * mangling. : */ : switch (c) 0.00 : 554828: 41 bc 72 00 00 00 mov $0x72,%r12d 0.00 : 55482e: e9 4d ff ff ff jmpq 554780 0.00 : 554833: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 554838: 41 bc 66 00 00 00 mov $0x66,%r12d 0.00 : 55483e: 66 90 xchg %ax,%ax 0.00 : 554840: e9 3b ff ff ff jmpq 554780 0.00 : 554845: 0f 1f 00 nopl (%rax) 0.00 : 554848: 41 bc 76 00 00 00 mov $0x76,%r12d 0.00 : 55484e: 66 90 xchg %ax,%ax 0.00 : 554850: e9 2b ff ff ff jmpq 554780 0.00 : 554855: 0f 1f 00 nopl (%rax) 0.00 : 554858: 41 bc 6e 00 00 00 mov $0x6e,%r12d 0.00 : 55485e: 66 90 xchg %ax,%ax 0.00 : 554860: e9 1b ff ff ff jmpq 554780 0.00 : 554865: 0f 1f 00 nopl (%rax) 0.00 : 554868: 41 bc 74 00 00 00 mov $0x74,%r12d 0.00 : 55486e: 66 90 xchg %ax,%ax 0.00 : 554870: e9 0b ff ff ff jmpq 554780 0.00 : 554875: 0f 1f 00 nopl (%rax) : default: : /* If it's the delimiter, must backslash it */ : if (c == delimc) : break; : /* All ASCII control chars are length 1 */ : ptr++; 0.00 : 554878: 41 bc 62 00 00 00 mov $0x62,%r12d 0.00 : 55487e: 66 90 xchg %ax,%ax 0.00 : 554880: e9 fb fe ff ff jmpq 554780 0.00 : 554885: 0f 1f 00 nopl (%rax) : case '\v': : c = 'v'; : break; : default: : /* If it's the delimiter, must backslash it */ : if (c == delimc) 0.00 : 554888: 41 bd 62 00 00 00 mov $0x62,%r13d 0.00 : 55488e: 66 90 xchg %ax,%ax : /* All ASCII control chars are length 1 */ : ptr++; : continue; /* fall to end of loop */ : } : /* if we get here, we need to convert the control char */ : DUMPSOFAR(); 0.00 : 554890: 49 39 dc cmp %rbx,%r12 0.00 : 554893: 77 73 ja 554908 : CopySendChar(cstate, '\\'); 0.00 : 554895: be 5c 00 00 00 mov $0x5c,%esi 0.00 : 55489a: 4c 89 f7 mov %r14,%rdi 0.00 : 55489d: e8 0e f6 ff ff callq 553eb0 : CopySendChar(cstate, c); 0.00 : 5548a2: 44 89 ee mov %r13d,%esi 0.00 : 5548a5: 4c 89 f7 mov %r14,%rdi 0.00 : 5548a8: 4d 89 fd mov %r15,%r13 0.00 : 5548ab: e8 00 f6 ff ff callq 553eb0 0.00 : 5548b0: e9 46 fe ff ff jmpq 5546fb 0.00 : 5548b5: 0f 1f 00 nopl (%rax) : start = ++ptr; /* do not include char in next run */ : } : else if (c == '\\' || c == delimc) 0.00 : 5548b8: 80 fa 5c cmp $0x5c,%dl 0.00 : 5548bb: 74 09 je 5548c6 0.00 : 5548bd: 38 55 c7 cmp %dl,-0x39(%rbp) 0.00 : 5548c0: 0f 85 32 fe ff ff jne 5546f8 : { : DUMPSOFAR(); 0.00 : 5548c6: 49 39 dc cmp %rbx,%r12 0.00 : 5548c9: 0f 87 b1 00 00 00 ja 554980 : CopySendChar(cstate, '\\'); 0.00 : 5548cf: be 5c 00 00 00 mov $0x5c,%esi 0.00 : 5548d4: 4c 89 f7 mov %r14,%rdi 0.00 : 5548d7: e8 d4 f5 ff ff callq 553eb0 0.00 : 5548dc: e9 1a fe ff ff jmpq 5546fb 0.00 : 5548e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * prefer to dump these using the C-like notation, rather than : * a backslash and the literal character, because it makes the : * dump file a bit more proof against Microsoftish data : * mangling. : */ : switch (c) 0.00 : 5548e8: 0f b6 c0 movzbl %al,%eax 0.00 : 5548eb: ff 24 c5 30 99 87 00 jmpq *0x879930(,%rax,8) 0.00 : 5548f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* All ASCII control chars are length 1 */ : ptr++; : continue; /* fall to end of loop */ : } : /* if we get here, we need to convert the control char */ : DUMPSOFAR(); 0.00 : 5548f8: 49 39 dc cmp %rbx,%r12 : * prefer to dump these using the C-like notation, rather than : * a backslash and the literal character, because it makes the : * dump file a bit more proof against Microsoftish data : * mangling. : */ : switch (c) 0.00 : 5548fb: 41 bd 72 00 00 00 mov $0x72,%r13d : /* All ASCII control chars are length 1 */ : ptr++; : continue; /* fall to end of loop */ : } : /* if we get here, we need to convert the control char */ : DUMPSOFAR(); 0.00 : 554901: 76 92 jbe 554895 0.00 : 554903: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 554908: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 55490c: 44 89 e2 mov %r12d,%edx 0.00 : 55490f: 48 89 de mov %rbx,%rsi 0.00 : 554912: 29 da sub %ebx,%edx 0.00 : 554914: e8 d7 d3 07 00 callq 5d1cf0 0.00 : 554919: e9 77 ff ff ff jmpq 554895 0.00 : 55491e: 66 90 xchg %ax,%ax : * prefer to dump these using the C-like notation, rather than : * a backslash and the literal character, because it makes the : * dump file a bit more proof against Microsoftish data : * mangling. : */ : switch (c) 0.00 : 554920: 41 bd 66 00 00 00 mov $0x66,%r13d 0.00 : 554926: e9 65 ff ff ff jmpq 554890 0.00 : 55492b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 554930: 41 bd 76 00 00 00 mov $0x76,%r13d 0.00 : 554936: 66 90 xchg %ax,%ax 0.00 : 554938: e9 53 ff ff ff jmpq 554890 0.00 : 55493d: 0f 1f 00 nopl (%rax) 0.00 : 554940: 41 bd 6e 00 00 00 mov $0x6e,%r13d 0.00 : 554946: e9 45 ff ff ff jmpq 554890 0.00 : 55494b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 554950: 41 bd 74 00 00 00 mov $0x74,%r13d 0.00 : 554956: e9 35 ff ff ff jmpq 554890 0.00 : 55495b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : *---------- : */ : static void : CopySendData(CopyState cstate, const void *databuf, int datasize) : { : appendBinaryStringInfo(cstate->fe_msgbuf, databuf, datasize); 0.00 : 554960: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 554964: 89 da mov %ebx,%edx 0.00 : 554966: 4c 89 ee mov %r13,%rsi 0.00 : 554969: 44 29 ea sub %r13d,%edx 0.00 : 55496c: e8 7f d3 07 00 callq 5d1cf0 0.00 : 554971: e9 53 fe ff ff jmpq 5547c9 0.00 : 554976: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55497d: 00 00 00 0.00 : 554980: 49 8b 7e 10 mov 0x10(%r14),%rdi 0.00 : 554984: 44 89 e2 mov %r12d,%edx 0.00 : 554987: 48 89 de mov %rbx,%rsi 0.00 : 55498a: 29 da sub %ebx,%edx 0.00 : 55498c: e8 5f d3 07 00 callq 5d1cf0 0.00 : 554991: e9 39 ff ff ff jmpq 5548cf 0.00 : 554996: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55499d: 00 00 00 : char *start; : char c; : char delimc = cstate->delim[0]; : : if (cstate->need_transcoding) : ptr = pg_server_to_any(string, strlen(string), cstate->file_encoding); 0.00 : 5549a0: 48 89 df mov %rbx,%rdi 0.00 : 5549a3: e8 a8 4e f1 ff callq 469850 0.00 : 5549a8: 41 8b 56 20 mov 0x20(%r14),%edx 0.00 : 5549ac: 48 89 df mov %rbx,%rdi 0.00 : 5549af: 89 c6 mov %eax,%esi 0.00 : 5549b1: e8 da 47 23 00 callq 789190 0.00 : 5549b6: 48 89 c3 mov %rax,%rbx 0.00 : 5549b9: e9 df fc ff ff jmpq 55469d 0.00 : 5549be: 66 90 xchg %ax,%ax : DUMPSOFAR(); : CopySendChar(cstate, '\\'); : start = ptr++; /* we include char in next run */ : } : else if (IS_HIGHBIT_SET(c)) : ptr += pg_encoding_mblen(cstate->file_encoding, ptr); 0.00 : 5549c0: 41 8b 7e 20 mov 0x20(%r14),%edi 0.00 : 5549c4: 48 89 de mov %rbx,%rsi 0.00 : 5549c7: e8 64 68 23 00 callq 78b230 0.00 : 5549cc: 48 98 cltq 0.00 : 5549ce: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 5549d2: 4c 89 eb mov %r13,%rbx 0.00 : 5549d5: e9 83 fd ff ff jmpq 55475d 0.00 : 5549da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : CopySendInt16(cstate, list_length(cstate->attnumlist)); : /* Send OID if wanted --- note attnumlist doesn't include it */ : if (cstate->oids) : { : /* Hack --- assume Oid is same size as int32 */ : CopySendInt32(cstate, sizeof(int32)); 0.00 : 5549e0: be 04 00 00 00 mov $0x4,%esi 0.00 : 5549e5: 4c 89 f7 mov %r14,%rdi 0.00 : 5549e8: e8 53 f5 ff ff callq 553f40 : CopySendInt32(cstate, tupleOid); 0.00 : 5549ed: 89 de mov %ebx,%esi 0.00 : 5549ef: 4c 89 f7 mov %r14,%rdi 0.00 : 5549f2: e8 49 f5 ff ff callq 553f40 0.00 : 5549f7: c6 45 a7 00 movb $0x0,-0x59(%rbp) 0.00 : 5549fb: e9 11 fb ff ff jmpq 554511 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2396 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b1ee0 : : static Datum : ExecEvalOper(FuncExprState *fcache, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:2396 100.00 : 5b1ee0: 55 push %rbp : /* This is called only the first time through */ : OpExpr *op = (OpExpr *) fcache->xprstate.expr; : : /* Initialize function lookup info */ : init_fcache(op->opfuncid, op->inputcollid, fcache, 0.00 : 5b1ee1: 41 b8 01 00 00 00 mov $0x1,%r8d : static Datum : ExecEvalOper(FuncExprState *fcache, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { 0.00 : 5b1ee7: 48 89 e5 mov %rsp,%rbp 0.00 : 5b1eea: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5b1eee: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 5b1ef2: 48 89 fb mov %rdi,%rbx 0.00 : 5b1ef5: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 5b1ef9: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5b1efd: 49 89 f5 mov %rsi,%r13 0.00 : 5b1f00: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5b1f04: 48 83 ec 30 sub $0x30,%rsp : /* This is called only the first time through */ : OpExpr *op = (OpExpr *) fcache->xprstate.expr; 0.00 : 5b1f08: 4c 8b 67 08 mov 0x8(%rdi),%r12 : static Datum : ExecEvalOper(FuncExprState *fcache, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { 0.00 : 5b1f0c: 49 89 ce mov %rcx,%r14 : /* This is called only the first time through */ : OpExpr *op = (OpExpr *) fcache->xprstate.expr; : : /* Initialize function lookup info */ : init_fcache(op->opfuncid, op->inputcollid, fcache, 0.00 : 5b1f0f: 48 8b 4e 20 mov 0x20(%rsi),%rcx : static Datum : ExecEvalOper(FuncExprState *fcache, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { 0.00 : 5b1f13: 49 89 d7 mov %rdx,%r15 : /* This is called only the first time through */ : OpExpr *op = (OpExpr *) fcache->xprstate.expr; : : /* Initialize function lookup info */ : init_fcache(op->opfuncid, op->inputcollid, fcache, 0.00 : 5b1f16: 48 89 da mov %rbx,%rdx 0.00 : 5b1f19: 41 8b 74 24 18 mov 0x18(%r12),%esi 0.00 : 5b1f1e: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 5b1f23: e8 08 ec ff ff callq 5b0b30 : * We need to invoke ExecMakeFunctionResult if either the function itself : * or any of its input expressions can return a set. Otherwise, invoke : * ExecMakeFunctionResultNoSets. In either case, change the evalfunc : * pointer to go directly there on subsequent uses. : */ : if (fcache->func.fn_retset || expression_returns_set((Node *) op->args)) 0.00 : 5b1f28: 80 7b 2f 00 cmpb $0x0,0x2f(%rbx) 0.00 : 5b1f2c: 75 0e jne 5b1f3c 0.00 : 5b1f2e: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 5b1f33: e8 18 db 02 00 callq 5dfa50 0.00 : 5b1f38: 84 c0 test %al,%al 0.00 : 5b1f3a: 74 34 je 5b1f70 : { : fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResult; 0.00 : 5b1f3c: 48 c7 43 10 c0 18 5b movq $0x5b18c0,0x10(%rbx) 0.00 : 5b1f43: 00 : return ExecMakeFunctionResult(fcache, econtext, isNull, isDone); 0.00 : 5b1f44: 4c 89 f1 mov %r14,%rcx 0.00 : 5b1f47: 4c 89 fa mov %r15,%rdx 0.00 : 5b1f4a: 4c 89 ee mov %r13,%rsi 0.00 : 5b1f4d: 48 89 df mov %rbx,%rdi : else : { : fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResultNoSets; : return ExecMakeFunctionResultNoSets(fcache, econtext, isNull, isDone); : } : } 0.00 : 5b1f50: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5b1f54: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5b1f58: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5b1f5c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5b1f60: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5b1f64: c9 leaveq : * pointer to go directly there on subsequent uses. : */ : if (fcache->func.fn_retset || expression_returns_set((Node *) op->args)) : { : fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResult; : return ExecMakeFunctionResult(fcache, econtext, isNull, isDone); 0.00 : 5b1f65: e9 56 f9 ff ff jmpq 5b18c0 0.00 : 5b1f6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else : { : fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResultNoSets; 0.00 : 5b1f70: 48 c7 43 10 30 14 5b movq $0x5b1430,0x10(%rbx) 0.00 : 5b1f77: 00 : return ExecMakeFunctionResultNoSets(fcache, econtext, isNull, isDone); 0.00 : 5b1f78: 4c 89 f1 mov %r14,%rcx 0.00 : 5b1f7b: 4c 89 fa mov %r15,%rdx 0.00 : 5b1f7e: 4c 89 ee mov %r13,%rsi 0.00 : 5b1f81: 48 89 df mov %rbx,%rdi : } : } 0.00 : 5b1f84: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5b1f88: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5b1f8c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5b1f90: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5b1f94: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5b1f98: c9 leaveq : return ExecMakeFunctionResult(fcache, econtext, isNull, isDone); : } : else : { : fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResultNoSets; : return ExecMakeFunctionResultNoSets(fcache, econtext, isNull, isDone); 0.00 : 5b1f99: e9 92 f4 ff ff jmpq 5b1430 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:2125 50.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:2125 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000606490 : : */ : void : final_cost_mergejoin(PlannerInfo *root, MergePath *path, : JoinCostWorkspace *workspace, : SpecialJoinInfo *sjinfo) : { 0.00 : 606490: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:2125 50.00 : 606491: 48 89 e5 mov %rsp,%rbp 0.00 : 606494: 41 57 push %r15 0.00 : 606496: 41 56 push %r14 0.00 : 606498: 41 55 push %r13 0.00 : 60649a: 41 54 push %r12 0.00 : 60649c: 49 89 fc mov %rdi,%r12 0.00 : 60649f: 53 push %rbx 50.00 : 6064a0: 48 89 f3 mov %rsi,%rbx 0.00 : 6064a3: 48 81 ec b8 00 00 00 sub $0xb8,%rsp : Path *outer_path = path->jpath.outerjoinpath; : Path *inner_path = path->jpath.innerjoinpath; 0.00 : 6064aa: 4c 8b 76 48 mov 0x48(%rsi),%r14 : void : final_cost_mergejoin(PlannerInfo *root, MergePath *path, : JoinCostWorkspace *workspace, : SpecialJoinInfo *sjinfo) : { : Path *outer_path = path->jpath.outerjoinpath; 0.00 : 6064ae: 4c 8b 7e 40 mov 0x40(%rsi),%r15 : Path *inner_path = path->jpath.innerjoinpath; : double inner_path_rows = inner_path->rows; 0.00 : 6064b2: f2 41 0f 10 46 18 movsd 0x18(%r14),%xmm0 0.00 : 6064b8: f2 0f 11 85 68 ff ff movsd %xmm0,-0x98(%rbp) 0.00 : 6064bf: ff : List *mergeclauses = path->path_mergeclauses; : List *innersortkeys = path->innersortkeys; 0.00 : 6064c0: 48 8b 46 68 mov 0x68(%rsi),%rax : SpecialJoinInfo *sjinfo) : { : Path *outer_path = path->jpath.outerjoinpath; : Path *inner_path = path->jpath.innerjoinpath; : double inner_path_rows = inner_path->rows; : List *mergeclauses = path->path_mergeclauses; 0.00 : 6064c4: 4c 8b 6e 58 mov 0x58(%rsi),%r13 : List *innersortkeys = path->innersortkeys; 0.00 : 6064c8: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : Cost startup_cost = workspace->startup_cost; 0.00 : 6064cf: f2 0f 10 02 movsd (%rdx),%xmm0 0.00 : 6064d3: f2 0f 11 85 78 ff ff movsd %xmm0,-0x88(%rbp) 0.00 : 6064da: ff : Cost run_cost = workspace->run_cost; 0.00 : 6064db: f2 0f 10 4a 10 movsd 0x10(%rdx),%xmm1 0.00 : 6064e0: f2 0f 11 4d a8 movsd %xmm1,-0x58(%rbp) : Cost inner_run_cost = workspace->inner_run_cost; 0.00 : 6064e5: f2 0f 10 5a 30 movsd 0x30(%rdx),%xmm3 0.00 : 6064ea: f2 0f 11 5d 80 movsd %xmm3,-0x80(%rbp) : double outer_rows = workspace->outer_rows; 0.00 : 6064ef: f2 0f 10 62 38 movsd 0x38(%rdx),%xmm4 0.00 : 6064f4: f2 0f 11 65 88 movsd %xmm4,-0x78(%rbp) : double mergejointuples, : rescannedtuples; : double rescanratio; : : /* Protect some assumptions below that rowcounts aren't zero or NaN */ : if (inner_path_rows <= 0 || isnan(inner_path_rows)) 0.00 : 6064f9: f2 0f 10 a5 68 ff ff movsd -0x98(%rbp),%xmm4 0.00 : 606500: ff : List *innersortkeys = path->innersortkeys; : Cost startup_cost = workspace->startup_cost; : Cost run_cost = workspace->run_cost; : Cost inner_run_cost = workspace->inner_run_cost; : double outer_rows = workspace->outer_rows; : double inner_rows = workspace->inner_rows; 0.00 : 606501: f2 0f 10 42 40 movsd 0x40(%rdx),%xmm0 : double mergejointuples, : rescannedtuples; : double rescanratio; : : /* Protect some assumptions below that rowcounts aren't zero or NaN */ : if (inner_path_rows <= 0 || isnan(inner_path_rows)) 0.00 : 606506: 66 0f 2e 25 ca bd 1a ucomisd 0x1abdca(%rip),%xmm4 # 7b22d8 <__func__.14992+0xcf> 0.00 : 60650d: 00 : List *innersortkeys = path->innersortkeys; : Cost startup_cost = workspace->startup_cost; : Cost run_cost = workspace->run_cost; : Cost inner_run_cost = workspace->inner_run_cost; : double outer_rows = workspace->outer_rows; : double inner_rows = workspace->inner_rows; 0.00 : 60650e: f2 0f 11 45 90 movsd %xmm0,-0x70(%rbp) : double outer_skip_rows = workspace->outer_skip_rows; 0.00 : 606513: f2 0f 10 4a 48 movsd 0x48(%rdx),%xmm1 0.00 : 606518: f2 0f 11 4d 98 movsd %xmm1,-0x68(%rbp) : double inner_skip_rows = workspace->inner_skip_rows; 0.00 : 60651d: f2 0f 10 5a 50 movsd 0x50(%rdx),%xmm3 0.00 : 606522: f2 0f 11 5d a0 movsd %xmm3,-0x60(%rbp) : double mergejointuples, : rescannedtuples; : double rescanratio; : : /* Protect some assumptions below that rowcounts aren't zero or NaN */ : if (inner_path_rows <= 0 || isnan(inner_path_rows)) 0.00 : 606527: 7a 02 jp 60652b 0.00 : 606529: 76 11 jbe 60653c 0.00 : 60652b: 66 0f 28 c4 movapd %xmm4,%xmm0 0.00 : 60652f: e8 ec 33 e6 ff callq 469920 <__isnan@plt> 0.00 : 606534: 85 c0 test %eax,%eax 0.00 : 606536: 0f 84 0c 02 00 00 je 606748 : inner_path_rows = 1; : : /* Mark the path with the correct row estimate */ : if (path->jpath.path.param_info) 0.00 : 60653c: 48 8b 43 10 mov 0x10(%rbx),%rax : double mergejointuples, : rescannedtuples; : double rescanratio; : : /* Protect some assumptions below that rowcounts aren't zero or NaN */ : if (inner_path_rows <= 0 || isnan(inner_path_rows)) 0.00 : 606540: f2 0f 10 0d 10 8c 1a movsd 0x1a8c10(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 606547: 00 0.00 : 606548: f2 0f 11 8d 60 ff ff movsd %xmm1,-0xa0(%rbp) 0.00 : 60654f: ff : inner_path_rows = 1; : : /* Mark the path with the correct row estimate */ : if (path->jpath.path.param_info) 0.00 : 606550: 48 85 c0 test %rax,%rax : double mergejointuples, : rescannedtuples; : double rescanratio; : : /* Protect some assumptions below that rowcounts aren't zero or NaN */ : if (inner_path_rows <= 0 || isnan(inner_path_rows)) 0.00 : 606553: f2 0f 11 8d 68 ff ff movsd %xmm1,-0x98(%rbp) 0.00 : 60655a: ff : inner_path_rows = 1; : : /* Mark the path with the correct row estimate */ : if (path->jpath.path.param_info) 0.00 : 60655b: 0f 84 04 02 00 00 je 606765 : path->jpath.path.rows = path->jpath.path.param_info->ppi_rows; : else : path->jpath.path.rows = path->jpath.path.parent->rows; 0.00 : 606561: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 606565: 48 89 43 18 mov %rax,0x18(%rbx) : /* : * We could include disable_cost in the preliminary estimate, but that : * would amount to optimizing for the case where the join method is : * disabled, which doesn't seem like the way to bet. : */ : if (!enable_mergejoin) 0.00 : 606569: 80 3d 41 20 56 00 00 cmpb $0x0,0x562041(%rip) # b685b1 0.00 : 606570: 75 18 jne 60658a : startup_cost += disable_cost; 0.00 : 606572: f2 0f 10 9d 78 ff ff movsd -0x88(%rbp),%xmm3 0.00 : 606579: ff 0.00 : 60657a: f2 0f 58 1d 1e 20 56 addsd 0x56201e(%rip),%xmm3 # b685a0 0.00 : 606581: 00 0.00 : 606582: f2 0f 11 9d 78 ff ff movsd %xmm3,-0x88(%rbp) 0.00 : 606589: ff : : /* : * Compute cost of the mergequals and qpquals (other restriction clauses) : * separately. : */ : cost_qual_eval(&merge_qual_cost, mergeclauses, root); 0.00 : 60658a: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 60658e: 4c 89 e2 mov %r12,%rdx 0.00 : 606591: 4c 89 ee mov %r13,%rsi 0.00 : 606594: e8 47 e7 ff ff callq 604ce0 : cost_qual_eval(&qp_qual_cost, path->jpath.joinrestrictinfo, root); 0.00 : 606599: 48 8b 73 50 mov 0x50(%rbx),%rsi 0.00 : 60659d: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 6065a1: 4c 89 e2 mov %r12,%rdx 0.00 : 6065a4: e8 37 e7 ff ff callq 604ce0 : qp_qual_cost.startup -= merge_qual_cost.startup; 0.00 : 6065a9: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 : : /* : * Get approx # tuples passing the mergequals. We use approx_tuple_count : * here because we need an estimate done with JOIN_INNER semantics. : */ : mergejointuples = approx_tuple_count(root, &path->jpath, mergeclauses); 0.00 : 6065ae: 4c 89 ea mov %r13,%rdx 0.00 : 6065b1: 48 89 de mov %rbx,%rsi 0.00 : 6065b4: 4c 89 e7 mov %r12,%rdi : * Compute cost of the mergequals and qpquals (other restriction clauses) : * separately. : */ : cost_qual_eval(&merge_qual_cost, mergeclauses, root); : cost_qual_eval(&qp_qual_cost, path->jpath.joinrestrictinfo, root); : qp_qual_cost.startup -= merge_qual_cost.startup; 0.00 : 6065b7: f2 0f 5c 45 c0 subsd -0x40(%rbp),%xmm0 0.00 : 6065bc: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) : qp_qual_cost.per_tuple -= merge_qual_cost.per_tuple; 0.00 : 6065c1: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 0.00 : 6065c6: f2 0f 5c 45 c8 subsd -0x38(%rbp),%xmm0 0.00 : 6065cb: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) : : /* : * Get approx # tuples passing the mergequals. We use approx_tuple_count : * here because we need an estimate done with JOIN_INNER semantics. : */ : mergejointuples = approx_tuple_count(root, &path->jpath, mergeclauses); 0.00 : 6065d0: e8 db f2 ff ff callq 6058b0 : * computations? : * : * The whole issue is moot if we are working from a unique-ified outer : * input. : */ : if (IsA(outer_path, UniquePath)) 0.00 : 6065d5: 41 81 3f 07 02 00 00 cmpl $0x207,(%r15) : : /* : * Get approx # tuples passing the mergequals. We use approx_tuple_count : * here because we need an estimate done with JOIN_INNER semantics. : */ : mergejointuples = approx_tuple_count(root, &path->jpath, mergeclauses); 0.00 : 6065dc: 66 0f 28 e8 movapd %xmm0,%xmm5 : * computations? : * : * The whole issue is moot if we are working from a unique-ified outer : * input. : */ : if (IsA(outer_path, UniquePath)) 0.00 : 6065e0: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 6065e4: 74 18 je 6065fe : rescannedtuples = 0; : else : { : rescannedtuples = mergejointuples - inner_path_rows; 0.00 : 6065e6: 66 0f 28 c5 movapd %xmm5,%xmm0 : /* Must clamp because of possible underestimate */ : if (rescannedtuples < 0) 0.00 : 6065ea: 66 0f 57 e4 xorpd %xmm4,%xmm4 : */ : if (IsA(outer_path, UniquePath)) : rescannedtuples = 0; : else : { : rescannedtuples = mergejointuples - inner_path_rows; 0.00 : 6065ee: f2 0f 5c 85 68 ff ff subsd -0x98(%rbp),%xmm0 0.00 : 6065f5: ff : /* Must clamp because of possible underestimate */ : if (rescannedtuples < 0) 0.00 : 6065f6: f2 0f 5f e0 maxsd %xmm0,%xmm4 0.00 : 6065fa: 66 0f 28 c4 movapd %xmm4,%xmm0 : rescannedtuples = 0; : } : /* We'll inflate various costs this much to account for rescanning */ : rescanratio = 1.0 + (rescannedtuples / inner_path_rows); 0.00 : 6065fe: 66 0f 28 d8 movapd %xmm0,%xmm3 : : /* : * Prefer materializing if it looks cheaper, unless the user has asked to : * suppress materialization. : */ : if (enable_material && mat_inner_cost < bare_inner_cost) 0.00 : 606602: 0f b6 05 a7 1f 56 00 movzbl 0x561fa7(%rip),%eax # b685b0 : * chosen anyway.) So we don't use cost_rescan here. : * : * Note: keep this estimate in sync with create_mergejoin_plan's labeling : * of the generated Material node. : */ : mat_inner_cost = inner_run_cost + 0.00 : 606609: f2 0f 10 8d 68 ff ff movsd -0x98(%rbp),%xmm1 0.00 : 606610: ff : /* Must clamp because of possible underestimate */ : if (rescannedtuples < 0) : rescannedtuples = 0; : } : /* We'll inflate various costs this much to account for rescanning */ : rescanratio = 1.0 + (rescannedtuples / inner_path_rows); 0.00 : 606611: f2 0f 5e 9d 68 ff ff divsd -0x98(%rbp),%xmm3 0.00 : 606618: ff : : /* : * Prefer materializing if it looks cheaper, unless the user has asked to : * suppress materialization. : */ : if (enable_material && mat_inner_cost < bare_inner_cost) 0.00 : 606619: 84 c0 test %al,%al : * chosen anyway.) So we don't use cost_rescan here. : * : * Note: keep this estimate in sync with create_mergejoin_plan's labeling : * of the generated Material node. : */ : mat_inner_cost = inner_run_cost + 0.00 : 60661b: f2 0f 59 0d 6d 1f 56 mulsd 0x561f6d(%rip),%xmm1 # b68590 0.00 : 606622: 00 : * which is probably an overestimate; but on the other hand we ignore the : * bookkeeping costs of mark/restore. Not clear if it's worth developing : * a more refined model. So we just need to inflate the inner run cost by : * rescanratio. : */ : bare_inner_cost = inner_run_cost * rescanratio; 0.00 : 606623: f2 0f 10 55 80 movsd -0x80(%rbp),%xmm2 : /* Must clamp because of possible underestimate */ : if (rescannedtuples < 0) : rescannedtuples = 0; : } : /* We'll inflate various costs this much to account for rescanning */ : rescanratio = 1.0 + (rescannedtuples / inner_path_rows); 0.00 : 606628: f2 0f 58 9d 60 ff ff addsd -0xa0(%rbp),%xmm3 0.00 : 60662f: ff : * chosen anyway.) So we don't use cost_rescan here. : * : * Note: keep this estimate in sync with create_mergejoin_plan's labeling : * of the generated Material node. : */ : mat_inner_cost = inner_run_cost + 0.00 : 606630: f2 0f 59 cb mulsd %xmm3,%xmm1 : * which is probably an overestimate; but on the other hand we ignore the : * bookkeeping costs of mark/restore. Not clear if it's worth developing : * a more refined model. So we just need to inflate the inner run cost by : * rescanratio. : */ : bare_inner_cost = inner_run_cost * rescanratio; 0.00 : 606634: f2 0f 59 d3 mulsd %xmm3,%xmm2 : * chosen anyway.) So we don't use cost_rescan here. : * : * Note: keep this estimate in sync with create_mergejoin_plan's labeling : * of the generated Material node. : */ : mat_inner_cost = inner_run_cost + 0.00 : 606638: f2 0f 58 4d 80 addsd -0x80(%rbp),%xmm1 : : /* : * Prefer materializing if it looks cheaper, unless the user has asked to : * suppress materialization. : */ : if (enable_material && mat_inner_cost < bare_inner_cost) 0.00 : 60663d: 74 0a je 606649 0.00 : 60663f: 66 0f 2e d1 ucomisd %xmm1,%xmm2 0.00 : 606643: 0f 87 7f 01 00 00 ja 6067c8 : * : * We don't test the value of enable_material here, because : * materialization is required for correctness in this case, and turning : * it off does not entitle us to deliver an invalid plan. : */ : else if (innersortkeys == NIL && 0.00 : 606649: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 606650: 00 0.00 : 606651: 0f 84 19 01 00 00 je 606770 : * : * Since materialization is a performance optimization in this case, : * rather than necessary for correctness, we skip it if enable_material is : * off. : */ : else if (enable_material && innersortkeys != NIL && 0.00 : 606657: 84 c0 test %al,%al 0.00 : 606659: 74 41 je 60669c 0.00 : 60665b: 48 63 05 b6 24 56 00 movslq 0x5624b6(%rip),%rax # b68b18 0.00 : 606662: 48 c1 e0 0a shl $0xa,%rax 0.00 : 606666: f2 48 0f 2a e0 cvtsi2sd %rax,%xmm4 0.00 : 60666b: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 60666f: 48 63 40 18 movslq 0x18(%rax),%rax 0.00 : 606673: 48 83 c0 07 add $0x7,%rax 0.00 : 606677: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 60667b: 48 83 c0 18 add $0x18,%rax 0.00 : 60667f: 0f 88 5b 01 00 00 js 6067e0 0.00 : 606685: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 60668a: f2 0f 59 85 68 ff ff mulsd -0x98(%rbp),%xmm0 0.00 : 606691: ff 0.00 : 606692: 66 0f 2e c4 ucomisd %xmm4,%xmm0 0.00 : 606696: 0f 87 2c 01 00 00 ja 6067c8 : : /* Charge the right incremental cost for the chosen case */ : if (path->materialize_inner) : run_cost += mat_inner_cost; : else : run_cost += bare_inner_cost; 0.00 : 60669c: f2 0f 10 45 a8 movsd -0x58(%rbp),%xmm0 : else if (enable_material && innersortkeys != NIL && : relation_byte_size(inner_path_rows, inner_path->parent->width) > : (work_mem * 1024L)) : path->materialize_inner = true; : else : path->materialize_inner = false; 0.00 : 6066a1: c6 43 70 00 movb $0x0,0x70(%rbx) : : /* Charge the right incremental cost for the chosen case */ : if (path->materialize_inner) : run_cost += mat_inner_cost; : else : run_cost += bare_inner_cost; 0.00 : 6066a5: f2 0f 58 c2 addsd %xmm2,%xmm0 : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; : startup_cost += merge_qual_cost.per_tuple * : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 6066a9: f2 0f 10 65 88 movsd -0x78(%rbp),%xmm4 : /* : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; 0.00 : 6066ae: f2 0f 10 8d 78 ff ff movsd -0x88(%rbp),%xmm1 0.00 : 6066b5: ff : startup_cost += merge_qual_cost.per_tuple * : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 6066b6: f2 0f 5c 65 98 subsd -0x68(%rbp),%xmm4 : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; : startup_cost += merge_qual_cost.per_tuple * 0.00 : 6066bb: f2 0f 10 55 c8 movsd -0x38(%rbp),%xmm2 : /* : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; 0.00 : 6066c0: f2 0f 58 4d c0 addsd -0x40(%rbp),%xmm1 : startup_cost += merge_qual_cost.per_tuple * : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 6066c5: f2 0f 11 65 88 movsd %xmm4,-0x78(%rbp) 0.00 : 6066ca: f2 0f 10 65 90 movsd -0x70(%rbp),%xmm4 : /* : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; 0.00 : 6066cf: f2 0f 11 8d 78 ff ff movsd %xmm1,-0x88(%rbp) 0.00 : 6066d6: ff : startup_cost += merge_qual_cost.per_tuple * : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 6066d7: f2 0f 5c 65 a0 subsd -0x60(%rbp),%xmm4 : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; : startup_cost += merge_qual_cost.per_tuple * 0.00 : 6066dc: f2 0f 10 4d a0 movsd -0x60(%rbp),%xmm1 0.00 : 6066e1: f2 0f 59 cb mulsd %xmm3,%xmm1 : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 6066e5: f2 0f 59 dc mulsd %xmm4,%xmm3 : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; : startup_cost += merge_qual_cost.per_tuple * 0.00 : 6066e9: f2 0f 58 4d 98 addsd -0x68(%rbp),%xmm1 : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 6066ee: f2 0f 10 65 88 movsd -0x78(%rbp),%xmm4 0.00 : 6066f3: f2 0f 58 e3 addsd %xmm3,%xmm4 : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; : startup_cost += merge_qual_cost.per_tuple * 0.00 : 6066f7: f2 0f 59 ca mulsd %xmm2,%xmm1 : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 6066fb: f2 0f 59 d4 mulsd %xmm4,%xmm2 : * The number of tuple comparisons needed is approximately number of outer : * rows plus number of inner rows plus number of rescanned tuples (can we : * refine this?). At each one, we need to evaluate the mergejoin quals. : */ : startup_cost += merge_qual_cost.startup; : startup_cost += merge_qual_cost.per_tuple * 0.00 : 6066ff: f2 0f 58 8d 78 ff ff addsd -0x88(%rbp),%xmm1 0.00 : 606706: ff : (outer_skip_rows + inner_skip_rows * rescanratio); : run_cost += merge_qual_cost.per_tuple * 0.00 : 606707: f2 0f 58 d0 addsd %xmm0,%xmm2 : * Note: we could adjust for SEMI/ANTI joins skipping some qual : * evaluations here, but it's probably not worth the trouble. : */ : startup_cost += qp_qual_cost.startup; : cpu_per_tuple = cpu_tuple_cost + qp_qual_cost.per_tuple; : run_cost += cpu_per_tuple * mergejointuples; 0.00 : 60670b: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 0.00 : 606710: f2 0f 58 05 68 1e 56 addsd 0x561e68(%rip),%xmm0 # b68580 0.00 : 606717: 00 : * not all of the quals may get evaluated at each tuple.) : * : * Note: we could adjust for SEMI/ANTI joins skipping some qual : * evaluations here, but it's probably not worth the trouble. : */ : startup_cost += qp_qual_cost.startup; 0.00 : 606718: f2 0f 58 4d b0 addsd -0x50(%rbp),%xmm1 : cpu_per_tuple = cpu_tuple_cost + qp_qual_cost.per_tuple; : run_cost += cpu_per_tuple * mergejointuples; 0.00 : 60671d: f2 0f 59 c5 mulsd %xmm5,%xmm0 : : path->jpath.path.startup_cost = startup_cost; 0.00 : 606721: f2 0f 11 4b 20 movsd %xmm1,0x20(%rbx) : * Note: we could adjust for SEMI/ANTI joins skipping some qual : * evaluations here, but it's probably not worth the trouble. : */ : startup_cost += qp_qual_cost.startup; : cpu_per_tuple = cpu_tuple_cost + qp_qual_cost.per_tuple; : run_cost += cpu_per_tuple * mergejointuples; 0.00 : 606726: f2 0f 58 d0 addsd %xmm0,%xmm2 : : path->jpath.path.startup_cost = startup_cost; : path->jpath.path.total_cost = startup_cost + run_cost; 0.00 : 60672a: f2 0f 58 ca addsd %xmm2,%xmm1 0.00 : 60672e: f2 0f 11 4b 28 movsd %xmm1,0x28(%rbx) : } 0.00 : 606733: 48 81 c4 b8 00 00 00 add $0xb8,%rsp 0.00 : 60673a: 5b pop %rbx 0.00 : 60673b: 41 5c pop %r12 0.00 : 60673d: 41 5d pop %r13 0.00 : 60673f: 41 5e pop %r14 0.00 : 606741: 41 5f pop %r15 0.00 : 606743: c9 leaveq 0.00 : 606744: c3 retq 0.00 : 606745: 0f 1f 00 nopl (%rax) : /* Protect some assumptions below that rowcounts aren't zero or NaN */ : if (inner_path_rows <= 0 || isnan(inner_path_rows)) : inner_path_rows = 1; : : /* Mark the path with the correct row estimate */ : if (path->jpath.path.param_info) 0.00 : 606748: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 60674c: f2 0f 10 05 04 8a 1a movsd 0x1a8a04(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 606753: 00 0.00 : 606754: f2 0f 11 85 60 ff ff movsd %xmm0,-0xa0(%rbp) 0.00 : 60675b: ff 0.00 : 60675c: 48 85 c0 test %rax,%rax 0.00 : 60675f: 0f 85 fc fd ff ff jne 606561 : path->jpath.path.rows = path->jpath.path.param_info->ppi_rows; : else : path->jpath.path.rows = path->jpath.path.parent->rows; 0.00 : 606765: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 606769: e9 f3 fd ff ff jmpq 606561 0.00 : 60676e: 66 90 xchg %ax,%ax : * : * We don't test the value of enable_material here, because : * materialization is required for correctness in this case, and turning : * it off does not entitle us to deliver an invalid plan. : */ : else if (innersortkeys == NIL && 0.00 : 606770: 41 8b 7e 04 mov 0x4(%r14),%edi 0.00 : 606774: f2 0f 11 8d 50 ff ff movsd %xmm1,-0xb0(%rbp) 0.00 : 60677b: ff 0.00 : 60677c: f2 0f 11 95 40 ff ff movsd %xmm2,-0xc0(%rbp) 0.00 : 606783: ff 0.00 : 606784: f2 0f 11 9d 30 ff ff movsd %xmm3,-0xd0(%rbp) 0.00 : 60678b: ff 0.00 : 60678c: f2 0f 11 ad 20 ff ff movsd %xmm5,-0xe0(%rbp) 0.00 : 606793: ff 0.00 : 606794: e8 07 19 fa ff callq 5a80a0 0.00 : 606799: 84 c0 test %al,%al 0.00 : 60679b: f2 0f 10 8d 50 ff ff movsd -0xb0(%rbp),%xmm1 0.00 : 6067a2: ff 0.00 : 6067a3: f2 0f 10 95 40 ff ff movsd -0xc0(%rbp),%xmm2 0.00 : 6067aa: ff 0.00 : 6067ab: f2 0f 10 9d 30 ff ff movsd -0xd0(%rbp),%xmm3 0.00 : 6067b2: ff 0.00 : 6067b3: f2 0f 10 ad 20 ff ff movsd -0xe0(%rbp),%xmm5 0.00 : 6067ba: ff 0.00 : 6067bb: 0f 85 db fe ff ff jne 60669c 0.00 : 6067c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else : path->materialize_inner = false; : : /* Charge the right incremental cost for the chosen case */ : if (path->materialize_inner) : run_cost += mat_inner_cost; 0.00 : 6067c8: f2 0f 10 45 a8 movsd -0x58(%rbp),%xmm0 : * off. : */ : else if (enable_material && innersortkeys != NIL && : relation_byte_size(inner_path_rows, inner_path->parent->width) > : (work_mem * 1024L)) : path->materialize_inner = true; 0.00 : 6067cd: c6 43 70 01 movb $0x1,0x70(%rbx) : else : path->materialize_inner = false; : : /* Charge the right incremental cost for the chosen case */ : if (path->materialize_inner) : run_cost += mat_inner_cost; 0.00 : 6067d1: f2 0f 58 c1 addsd %xmm1,%xmm0 0.00 : 6067d5: e9 cf fe ff ff jmpq 6066a9 0.00 : 6067da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * Since materialization is a performance optimization in this case, : * rather than necessary for correctness, we skip it if enable_material is : * off. : */ : else if (enable_material && innersortkeys != NIL && 0.00 : 6067e0: 48 d1 e8 shr %rax 0.00 : 6067e3: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 6067e8: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 6067ec: e9 99 fe ff ff jmpq 60668a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/equivclass.c:1345 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006083c0 : : create_join_clause(PlannerInfo *root, : EquivalenceClass *ec, Oid opno, : EquivalenceMember *leftem, : EquivalenceMember *rightem, : EquivalenceClass *parent_ec) : { 0.00 : 6083c0: 55 push %rbp 0.00 : 6083c1: 48 89 e5 mov %rsp,%rbp 0.00 : 6083c4: 41 57 push %r15 0.00 : 6083c6: 49 89 f7 mov %rsi,%r15 0.00 : 6083c9: 41 56 push %r14 0.00 : 6083cb: 4d 89 c6 mov %r8,%r14 0.00 : 6083ce: 41 55 push %r13 0.00 : 6083d0: 49 89 cd mov %rcx,%r13 0.00 : 6083d3: 41 54 push %r12 0.00 : 6083d5: 4d 89 cc mov %r9,%r12 0.00 : 6083d8: 53 push %rbx 0.00 : 6083d9: 48 83 ec 18 sub $0x18,%rsp 0.00 : 6083dd: 89 55 cc mov %edx,-0x34(%rbp) : * Search to see if we already built a RestrictInfo for this pair of : * EquivalenceMembers. We can use either original source clauses or : * previously-derived clauses. The check on opno is probably redundant, : * but be safe ... : */ : foreach(lc, ec->ec_sources) 0.00 : 6083e0: 48 8b 46 20 mov 0x20(%rsi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 6083e4: 48 85 c0 test %rax,%rax 0.00 : 6083e7: 74 47 je 608430 0.00 : 6083e9: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 6083ed: 48 85 d2 test %rdx,%rdx 0.00 : 6083f0: 75 10 jne 608402 0.00 : 6083f2: eb 3c jmp 608430 0.00 : 6083f4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6083f8: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 6083fc: 48 85 d2 test %rdx,%rdx 0.00 : 6083ff: 90 nop 0.00 : 608400: 74 2e je 608430 : { : rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 608402: 48 8b 1a mov (%rdx),%rbx : if (rinfo->left_em == leftem && 0.00 : 608405: 4c 39 ab 90 00 00 00 cmp %r13,0x90(%rbx) 0.00 : 60840c: 75 ea jne 6083f8 0.00 : 60840e: 4c 39 b3 98 00 00 00 cmp %r14,0x98(%rbx) 0.00 : 608415: 75 e1 jne 6083f8 0.00 : 608417: 4c 39 63 50 cmp %r12,0x50(%rbx) 0.00 : 60841b: 75 db jne 6083f8 0.00 : 60841d: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 608421: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : 608424: 39 48 04 cmp %ecx,0x4(%rax) 0.00 : 608427: 75 cf jne 6083f8 0.00 : 608429: e9 e0 00 00 00 jmpq 60850e 0.00 : 60842e: 66 90 xchg %ax,%ax : rinfo->parent_ec == parent_ec && : opno == ((OpExpr *) rinfo->clause)->opno) : return rinfo; : } : : foreach(lc, ec->ec_derives) 0.00 : 608430: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 608434: 48 85 c0 test %rax,%rax 0.00 : 608437: 74 47 je 608480 0.00 : 608439: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 60843d: 48 85 d2 test %rdx,%rdx 0.00 : 608440: 75 10 jne 608452 0.00 : 608442: eb 3c jmp 608480 0.00 : 608444: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 608448: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 60844c: 48 85 d2 test %rdx,%rdx 0.00 : 60844f: 90 nop 0.00 : 608450: 74 2e je 608480 : { : rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 608452: 48 8b 1a mov (%rdx),%rbx : if (rinfo->left_em == leftem && /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/equivclass.c:1345 100.00 : 608455: 4c 39 ab 90 00 00 00 cmp %r13,0x90(%rbx) 0.00 : 60845c: 75 ea jne 608448 0.00 : 60845e: 4c 39 b3 98 00 00 00 cmp %r14,0x98(%rbx) 0.00 : 608465: 75 e1 jne 608448 0.00 : 608467: 4c 39 63 50 cmp %r12,0x50(%rbx) 0.00 : 60846b: 75 db jne 608448 0.00 : 60846d: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 608471: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : 608474: 39 48 04 cmp %ecx,0x4(%rax) 0.00 : 608477: 75 cf jne 608448 0.00 : 608479: e9 90 00 00 00 jmpq 60850e 0.00 : 60847e: 66 90 xchg %ax,%ax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 608480: 48 8b 05 d9 23 5b 00 mov 0x5b23d9(%rip),%rax # bba860 0.00 : 608487: 48 89 45 d0 mov %rax,-0x30(%rbp) : : CurrentMemoryContext = context; 0.00 : 60848b: 48 8b 87 18 01 00 00 mov 0x118(%rdi),%rax 0.00 : 608492: 48 89 05 c7 23 5b 00 mov %rax,0x5b23c7(%rip) # bba860 : * Not there, so build it, in planner context so we can re-use it. (Not : * important in normal planning, but definitely so in GEQO.) : */ : oldcontext = MemoryContextSwitchTo(root->planner_cxt); : : rinfo = build_implied_join_equality(opno, 0.00 : 608499: 49 8b 76 18 mov 0x18(%r14),%rsi 0.00 : 60849d: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 6084a1: e8 1a ae fd ff callq 5e32c0 0.00 : 6084a6: 49 8b 76 10 mov 0x10(%r14),%rsi 0.00 : 6084aa: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 6084ae: 48 89 c3 mov %rax,%rbx 0.00 : 6084b1: e8 0a ae fd ff callq 5e32c0 0.00 : 6084b6: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 6084ba: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 6084be: 49 89 d9 mov %rbx,%r9 0.00 : 6084c1: 41 8b 77 10 mov 0x10(%r15),%esi 0.00 : 6084c5: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 6084c8: 49 89 c0 mov %rax,%r8 0.00 : 6084cb: e8 10 10 01 00 callq 6194e0 : rightem->em_relids), : bms_union(leftem->em_nullable_relids, : rightem->em_nullable_relids)); : : /* Mark the clause as redundant, or not */ : rinfo->parent_ec = parent_ec; 0.00 : 6084d0: 4c 89 60 50 mov %r12,0x50(%rax) : : /* : * We know the correct values for left_ec/right_ec, ie this particular EC, : * so we can just set them directly instead of forcing another lookup. : */ : rinfo->left_ec = ec; 0.00 : 6084d4: 4c 89 b8 80 00 00 00 mov %r15,0x80(%rax) : : /* Mark it as usable with these EMs */ : rinfo->left_em = leftem; : rinfo->right_em = rightem; : /* and save it for possible re-use */ : ec->ec_derives = lappend(ec->ec_derives, rinfo); 0.00 : 6084db: 48 89 c6 mov %rax,%rsi : /* : * We know the correct values for left_ec/right_ec, ie this particular EC, : * so we can just set them directly instead of forcing another lookup. : */ : rinfo->left_ec = ec; : rinfo->right_ec = ec; 0.00 : 6084de: 4c 89 b8 88 00 00 00 mov %r15,0x88(%rax) : : /* Mark it as usable with these EMs */ : rinfo->left_em = leftem; 0.00 : 6084e5: 4c 89 a8 90 00 00 00 mov %r13,0x90(%rax) : * Not there, so build it, in planner context so we can re-use it. (Not : * important in normal planning, but definitely so in GEQO.) : */ : oldcontext = MemoryContextSwitchTo(root->planner_cxt); : : rinfo = build_implied_join_equality(opno, 0.00 : 6084ec: 48 89 c3 mov %rax,%rbx : rinfo->left_ec = ec; : rinfo->right_ec = ec; : : /* Mark it as usable with these EMs */ : rinfo->left_em = leftem; : rinfo->right_em = rightem; 0.00 : 6084ef: 4c 89 b0 98 00 00 00 mov %r14,0x98(%rax) : /* and save it for possible re-use */ : ec->ec_derives = lappend(ec->ec_derives, rinfo); 0.00 : 6084f6: 49 8b 7f 28 mov 0x28(%r15),%rdi 0.00 : 6084fa: e8 81 99 fd ff callq 5e1e80 0.00 : 6084ff: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 608503: 49 89 47 28 mov %rax,0x28(%r15) 0.00 : 608507: 48 89 0d 52 23 5b 00 mov %rcx,0x5b2352(%rip) # bba860 : : MemoryContextSwitchTo(oldcontext); : : return rinfo; : } 0.00 : 60850e: 48 83 c4 18 add $0x18,%rsp 0.00 : 608512: 48 89 d8 mov %rbx,%rax 0.00 : 608515: 5b pop %rbx 0.00 : 608516: 41 5c pop %r12 0.00 : 608518: 41 5d pop %r13 0.00 : 60851a: 41 5e pop %r14 0.00 : 60851c: 41 5f pop %r15 0.00 : 60851e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:969 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000612230 : : List * : find_mergeclauses_for_pathkeys(PlannerInfo *root, : List *pathkeys, : bool outer_keys, : List *restrictinfos) : { 0.00 : 612230: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:969 100.00 : 612231: 48 89 e5 mov %rsp,%rbp 0.00 : 612234: 41 57 push %r15 0.00 : 612236: 41 56 push %r14 0.00 : 612238: 41 89 d6 mov %edx,%r14d 0.00 : 61223b: 41 55 push %r13 0.00 : 61223d: 41 54 push %r12 0.00 : 61223f: 53 push %rbx 0.00 : 612240: 48 83 ec 08 sub $0x8,%rsp : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 612244: 48 85 c9 test %rcx,%rcx 0.00 : 612247: 48 89 4d d0 mov %rcx,-0x30(%rbp) 0.00 : 61224b: 74 6c je 6122b9 0.00 : 61224d: 48 8b 49 08 mov 0x8(%rcx),%rcx : List *mergeclauses = NIL; : ListCell *i; : : /* make sure we have eclasses cached in the clauses */ : foreach(i, restrictinfos) 0.00 : 612251: 48 85 c9 test %rcx,%rcx 0.00 : 612254: 74 63 je 6122b9 0.00 : 612256: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 61225d: 00 00 00 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(i); 0.00 : 612260: 48 8b 11 mov (%rcx),%rdx : /* ... with pointers already set */ : Assert(restrictinfo->left_ec != NULL); : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) 0.00 : 612263: 48 8b 82 80 00 00 00 mov 0x80(%rdx),%rax 0.00 : 61226a: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 61226e: 48 85 c0 test %rax,%rax 0.00 : 612271: 74 15 je 612288 0.00 : 612273: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; 0.00 : 612278: 48 89 82 80 00 00 00 mov %rax,0x80(%rdx) : /* ... with pointers already set */ : Assert(restrictinfo->left_ec != NULL); : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) 0.00 : 61227f: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 612283: 48 85 c0 test %rax,%rax 0.00 : 612286: 75 f0 jne 612278 : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; : while (restrictinfo->right_ec->ec_merged) 0.00 : 612288: 48 8b 82 88 00 00 00 mov 0x88(%rdx),%rax 0.00 : 61228f: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 612293: 48 85 c0 test %rax,%rax 0.00 : 612296: 74 18 je 6122b0 0.00 : 612298: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 61229f: 00 : restrictinfo->right_ec = restrictinfo->right_ec->ec_merged; 0.00 : 6122a0: 48 89 82 88 00 00 00 mov %rax,0x88(%rdx) : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; : while (restrictinfo->right_ec->ec_merged) 0.00 : 6122a7: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 6122ab: 48 85 c0 test %rax,%rax 0.00 : 6122ae: 75 f0 jne 6122a0 : { : List *mergeclauses = NIL; : ListCell *i; : : /* make sure we have eclasses cached in the clauses */ : foreach(i, restrictinfos) 0.00 : 6122b0: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 6122b4: 48 85 c9 test %rcx,%rcx 0.00 : 6122b7: 75 a7 jne 612260 0.00 : 6122b9: 48 85 f6 test %rsi,%rsi 0.00 : 6122bc: 74 18 je 6122d6 0.00 : 6122be: 4c 8b 6e 08 mov 0x8(%rsi),%r13 : RestrictInfo *rinfo = (RestrictInfo *) lfirst(i); : : update_mergeclause_eclasses(root, rinfo); : } : : foreach(i, pathkeys) 0.00 : 6122c2: 4d 85 ed test %r13,%r13 0.00 : 6122c5: 74 0f je 6122d6 0.00 : 6122c7: 48 83 7d d0 00 cmpq $0x0,-0x30(%rbp) : { : PathKey *pathkey = (PathKey *) lfirst(i); : EquivalenceClass *pathkey_ec = pathkey->pk_eclass; 0.00 : 6122cc: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6122d0: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 6122d4: 75 15 jne 6122eb : RestrictInfo *rinfo = (RestrictInfo *) lfirst(i); : : update_mergeclause_eclasses(root, rinfo); : } : : foreach(i, pathkeys) 0.00 : 6122d6: 45 31 ff xor %r15d,%r15d : */ : mergeclauses = list_concat(mergeclauses, matched_restrictinfos); : } : : return mergeclauses; : } 0.00 : 6122d9: 48 83 c4 08 add $0x8,%rsp 0.00 : 6122dd: 4c 89 f8 mov %r15,%rax 0.00 : 6122e0: 5b pop %rbx 0.00 : 6122e1: 41 5c pop %r12 0.00 : 6122e3: 41 5d pop %r13 0.00 : 6122e5: 41 5e pop %r14 0.00 : 6122e7: 41 5f pop %r15 0.00 : 6122e9: c9 leaveq 0.00 : 6122ea: c3 retq 0.00 : 6122eb: 45 31 ff xor %r15d,%r15d 0.00 : 6122ee: 66 90 xchg %ax,%ax 0.00 : 6122f0: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 6122f4: 48 8b 58 08 mov 0x8(%rax),%rbx : * make_inner_pathkeys_for_merge() has to delete duplicates when : * it constructs the canonical pathkeys list, and we also have to : * deal with the case in create_mergejoin_plan(). : *---------- : */ : foreach(j, restrictinfos) 0.00 : 6122f8: 48 85 db test %rbx,%rbx 0.00 : 6122fb: 74 dc je 6122d9 0.00 : 6122fd: 31 d2 xor %edx,%edx 0.00 : 6122ff: eb 25 jmp 612326 0.00 : 612301: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(j); : EquivalenceClass *clause_ec; : : if (outer_keys) : clause_ec = rinfo->outer_is_left ? 0.00 : 612308: 80 be a8 00 00 00 00 cmpb $0x0,0xa8(%rsi) 0.00 : 61230f: 74 26 je 612337 : rinfo->left_ec : rinfo->right_ec; : else : clause_ec = rinfo->outer_is_left ? 0.00 : 612311: 48 8b 86 80 00 00 00 mov 0x80(%rsi),%rax : rinfo->right_ec : rinfo->left_ec; : if (clause_ec == pathkey_ec) 0.00 : 612318: 4c 39 e0 cmp %r12,%rax 0.00 : 61231b: 74 26 je 612343 : * make_inner_pathkeys_for_merge() has to delete duplicates when : * it constructs the canonical pathkeys list, and we also have to : * deal with the case in create_mergejoin_plan(). : *---------- : */ : foreach(j, restrictinfos) 0.00 : 61231d: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 612321: 48 85 db test %rbx,%rbx 0.00 : 612324: 74 3a je 612360 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(j); : EquivalenceClass *clause_ec; : : if (outer_keys) 0.00 : 612326: 45 84 f6 test %r14b,%r14b : * deal with the case in create_mergejoin_plan(). : *---------- : */ : foreach(j, restrictinfos) : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(j); 0.00 : 612329: 48 8b 33 mov (%rbx),%rsi : EquivalenceClass *clause_ec; : : if (outer_keys) 0.00 : 61232c: 75 da jne 612308 : clause_ec = rinfo->outer_is_left ? : rinfo->left_ec : rinfo->right_ec; : else : clause_ec = rinfo->outer_is_left ? 0.00 : 61232e: 80 be a8 00 00 00 00 cmpb $0x0,0xa8(%rsi) 0.00 : 612335: 74 da je 612311 0.00 : 612337: 48 8b 86 88 00 00 00 mov 0x88(%rsi),%rax : rinfo->right_ec : rinfo->left_ec; : if (clause_ec == pathkey_ec) 0.00 : 61233e: 4c 39 e0 cmp %r12,%rax 0.00 : 612341: 75 da jne 61231d : matched_restrictinfos = lappend(matched_restrictinfos, rinfo); 0.00 : 612343: 48 89 d7 mov %rdx,%rdi 0.00 : 612346: e8 35 fb fc ff callq 5e1e80 : * make_inner_pathkeys_for_merge() has to delete duplicates when : * it constructs the canonical pathkeys list, and we also have to : * deal with the case in create_mergejoin_plan(). : *---------- : */ : foreach(j, restrictinfos) 0.00 : 61234b: 48 8b 5b 08 mov 0x8(%rbx),%rbx : rinfo->left_ec : rinfo->right_ec; : else : clause_ec = rinfo->outer_is_left ? : rinfo->right_ec : rinfo->left_ec; : if (clause_ec == pathkey_ec) : matched_restrictinfos = lappend(matched_restrictinfos, rinfo); 0.00 : 61234f: 48 89 c2 mov %rax,%rdx : * make_inner_pathkeys_for_merge() has to delete duplicates when : * it constructs the canonical pathkeys list, and we also have to : * deal with the case in create_mergejoin_plan(). : *---------- : */ : foreach(j, restrictinfos) 0.00 : 612352: 48 85 db test %rbx,%rbx 0.00 : 612355: 75 cf jne 612326 0.00 : 612357: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 61235e: 00 00 : /* : * If we didn't find a mergeclause, we're done --- any additional : * sort-key positions in the pathkeys are useless. (But we can still : * mergejoin if we found at least one mergeclause.) : */ : if (matched_restrictinfos == NIL) 0.00 : 612360: 48 85 d2 test %rdx,%rdx 0.00 : 612363: 0f 84 70 ff ff ff je 6122d9 : : /* : * If we did find usable mergeclause(s) for this sort-key position, : * add them to result list. : */ : mergeclauses = list_concat(mergeclauses, matched_restrictinfos); 0.00 : 612369: 4c 89 ff mov %r15,%rdi 0.00 : 61236c: 48 89 d6 mov %rdx,%rsi 0.00 : 61236f: e8 4c 02 fd ff callq 5e25c0 : RestrictInfo *rinfo = (RestrictInfo *) lfirst(i); : : update_mergeclause_eclasses(root, rinfo); : } : : foreach(i, pathkeys) 0.00 : 612374: 4d 8b 6d 08 mov 0x8(%r13),%r13 : : /* : * If we did find usable mergeclause(s) for this sort-key position, : * add them to result list. : */ : mergeclauses = list_concat(mergeclauses, matched_restrictinfos); 0.00 : 612378: 49 89 c7 mov %rax,%r15 : RestrictInfo *rinfo = (RestrictInfo *) lfirst(i); : : update_mergeclause_eclasses(root, rinfo); : } : : foreach(i, pathkeys) 0.00 : 61237b: 4d 85 ed test %r13,%r13 0.00 : 61237e: 0f 84 55 ff ff ff je 6122d9 : { : PathKey *pathkey = (PathKey *) lfirst(i); : EquivalenceClass *pathkey_ec = pathkey->pk_eclass; 0.00 : 612384: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 612388: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 61238c: e9 5f ff ff ff jmpq 6122f0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:835 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679f00 : : * it will be interpreted relative to the process' working directory : * (which should always be $PGDATA when this code is running). : */ : File : PathNameOpenFile(FileName fileName, int fileFlags, int fileMode) : { 0.00 : 679f00: 55 push %rbp 0.00 : 679f01: 48 89 e5 mov %rsp,%rbp 0.00 : 679f04: 41 57 push %r15 0.00 : 679f06: 41 56 push %r14 0.00 : 679f08: 41 89 f6 mov %esi,%r14d 0.00 : 679f0b: 41 55 push %r13 0.00 : 679f0d: 41 54 push %r12 0.00 : 679f0f: 53 push %rbx 0.00 : 679f10: 48 83 ec 18 sub $0x18,%rsp 0.00 : 679f14: 48 89 7d c8 mov %rdi,-0x38(%rbp) 0.00 : 679f18: 89 55 c4 mov %edx,-0x3c(%rbp) : fileName, fileFlags, fileMode)); : : /* : * We need a malloc'd copy of the file name; fail cleanly if no room. : */ : fnamecopy = strdup(fileName); 0.00 : 679f1b: e8 c0 f8 de ff callq 4697e0 <__strdup@plt> : if (fnamecopy == NULL) 0.00 : 679f20: 48 85 c0 test %rax,%rax : fileName, fileFlags, fileMode)); : : /* : * We need a malloc'd copy of the file name; fail cleanly if no room. : */ : fnamecopy = strdup(fileName); 0.00 : 679f23: 49 89 c7 mov %rax,%r15 : if (fnamecopy == NULL) 0.00 : 679f26: 0f 84 b2 01 00 00 je 67a0de : : DO_DB(elog(LOG, "AllocateVfd. Size %zu", SizeVfdCache)); : : Assert(SizeVfdCache > 0); /* InitFileAccess not called? */ : : if (VfdCache[0].nextFree == 0) 0.00 : 679f2c: 48 8b 3d 65 32 50 00 mov 0x503265(%rip),%rdi # b7d198 0.00 : 679f33: 8b 47 10 mov 0x10(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:835 100.00 : 679f36: 85 c0 test %eax,%eax 0.00 : 679f38: 0f 85 cf 00 00 00 jne 67a00d : /* : * The free list is empty so it is time to increase the size of the : * array. We choose to double it each time this happens. However, : * there's not much point in starting *real* small. : */ : Size newCacheSize = SizeVfdCache * 2; 0.00 : 679f3e: 48 8b 05 23 32 50 00 mov 0x503223(%rip),%rax # b7d168 0.00 : 679f45: 48 8d 1c 00 lea (%rax,%rax,1),%rbx : Vfd *newVfdCache; : : if (newCacheSize < 32) 0.00 : 679f49: 48 83 fb 1f cmp $0x1f,%rbx 0.00 : 679f4d: 0f 86 65 01 00 00 jbe 67a0b8 0.00 : 679f53: 48 89 c6 mov %rax,%rsi 0.00 : 679f56: 48 c1 e6 07 shl $0x7,%rsi : newCacheSize = 32; : : /* : * Be careful not to clobber VfdCache ptr if realloc fails. : */ : newVfdCache = (Vfd *) realloc(VfdCache, sizeof(Vfd) * newCacheSize); 0.00 : 679f5a: e8 91 00 df ff callq 469ff0 : if (newVfdCache == NULL) 0.00 : 679f5f: 48 85 c0 test %rax,%rax 0.00 : 679f62: 0f 84 1b 02 00 00 je 67a183 : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : VfdCache = newVfdCache; 0.00 : 679f68: 48 89 05 29 32 50 00 mov %rax,0x503229(%rip) # b7d198 : : /* : * Initialize the new entries and link them into the free list. : */ : for (i = SizeVfdCache; i < newCacheSize; i++) 0.00 : 679f6f: 48 8b 05 f2 31 50 00 mov 0x5031f2(%rip),%rax # b7d168 0.00 : 679f76: 89 c2 mov %eax,%edx 0.00 : 679f78: 89 c6 mov %eax,%esi 0.00 : 679f7a: 48 39 da cmp %rbx,%rdx 0.00 : 679f7d: 73 5f jae 679fde : { : MemSet((char *) &(VfdCache[i]), 0, sizeof(Vfd)); : VfdCache[i].nextFree = i + 1; 0.00 : 679f7f: 44 8d 40 01 lea 0x1(%rax),%r8d : VfdCache = newVfdCache; : : /* : * Initialize the new entries and link them into the free list. : */ : for (i = SizeVfdCache; i < newCacheSize; i++) 0.00 : 679f83: 45 31 e4 xor %r12d,%r12d : { : MemSet((char *) &(VfdCache[i]), 0, sizeof(Vfd)); 0.00 : 679f86: 45 31 d2 xor %r10d,%r10d 0.00 : 679f89: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 679f8f: 90 nop 0.00 : 679f90: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 679f94: 48 89 d7 mov %rdx,%rdi 0.00 : 679f97: 48 03 3d fa 31 50 00 add 0x5031fa(%rip),%rdi # b7d198 0.00 : 679f9e: 40 f6 c7 07 test $0x7,%dil 0.00 : 679fa2: 0f 85 28 01 00 00 jne 67a0d0 0.00 : 679fa8: 48 8d 47 40 lea 0x40(%rdi),%rax 0.00 : 679fac: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 679fb3: 48 83 c7 08 add $0x8,%rdi 0.00 : 679fb7: 48 39 f8 cmp %rdi,%rax 0.00 : 679fba: 75 f0 jne 679fac : VfdCache[i].nextFree = i + 1; 0.00 : 679fbc: 48 03 15 d5 31 50 00 add 0x5031d5(%rip),%rdx # b7d198 0.00 : 679fc3: 43 8d 04 20 lea (%r8,%r12,1),%eax 0.00 : 679fc7: 83 c6 01 add $0x1,%esi : VfdCache = newVfdCache; : : /* : * Initialize the new entries and link them into the free list. : */ : for (i = SizeVfdCache; i < newCacheSize; i++) 0.00 : 679fca: 49 83 c4 01 add $0x1,%r12 : { : MemSet((char *) &(VfdCache[i]), 0, sizeof(Vfd)); : VfdCache[i].nextFree = i + 1; 0.00 : 679fce: 89 42 10 mov %eax,0x10(%rdx) : VfdCache[i].fd = VFD_CLOSED; 0.00 : 679fd1: c7 02 ff ff ff ff movl $0xffffffff,(%rdx) : VfdCache = newVfdCache; : : /* : * Initialize the new entries and link them into the free list. : */ : for (i = SizeVfdCache; i < newCacheSize; i++) 0.00 : 679fd7: 89 f2 mov %esi,%edx 0.00 : 679fd9: 48 39 d3 cmp %rdx,%rbx 0.00 : 679fdc: 77 b2 ja 679f90 : { : MemSet((char *) &(VfdCache[i]), 0, sizeof(Vfd)); : VfdCache[i].nextFree = i + 1; : VfdCache[i].fd = VFD_CLOSED; : } : VfdCache[newCacheSize - 1].nextFree = 0; 0.00 : 679fde: 48 8b 05 b3 31 50 00 mov 0x5031b3(%rip),%rax # b7d198 0.00 : 679fe5: 48 8d 53 ff lea -0x1(%rbx),%rdx 0.00 : 679fe9: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 679fed: c7 44 10 10 00 00 00 movl $0x0,0x10(%rax,%rdx,1) 0.00 : 679ff4: 00 : VfdCache[0].nextFree = SizeVfdCache; 0.00 : 679ff5: 48 8b 15 6c 31 50 00 mov 0x50316c(%rip),%rdx # b7d168 0.00 : 679ffc: 89 50 10 mov %edx,0x10(%rax) 0.00 : 679fff: 48 8b 3d 92 31 50 00 mov 0x503192(%rip),%rdi # b7d198 : : /* : * Record the new size : */ : SizeVfdCache = newCacheSize; 0.00 : 67a006: 48 89 1d 5b 31 50 00 mov %rbx,0x50315b(%rip) # b7d168 : } : : file = VfdCache[0].nextFree; 0.00 : 67a00d: 44 8b 6f 10 mov 0x10(%rdi),%r13d : : VfdCache[0].nextFree = VfdCache[file].nextFree; 0.00 : 67a011: 4d 63 e5 movslq %r13d,%r12 0.00 : 67a014: 49 c1 e4 06 shl $0x6,%r12 0.00 : 67a018: 4a 8d 1c 27 lea (%rdi,%r12,1),%rbx 0.00 : 67a01c: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 67a01f: 89 47 10 mov %eax,0x10(%rdi) : : file = AllocateVfd(); : vfdP = &VfdCache[file]; : : /* Close excess kernel FDs. */ : ReleaseLruFiles(); 0.00 : 67a022: e8 09 e8 ff ff callq 678830 : : vfdP->fd = BasicOpenFile(fileName, fileFlags, fileMode); 0.00 : 67a027: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 67a02a: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 67a02e: 44 89 f6 mov %r14d,%esi 0.00 : 67a031: e8 2a f7 ff ff callq 679760 : : if (vfdP->fd < 0) 0.00 : 67a036: 85 c0 test %eax,%eax : vfdP = &VfdCache[file]; : : /* Close excess kernel FDs. */ : ReleaseLruFiles(); : : vfdP->fd = BasicOpenFile(fileName, fileFlags, fileMode); 0.00 : 67a038: 89 03 mov %eax,(%rbx) : : if (vfdP->fd < 0) 0.00 : 67a03a: 0f 88 e6 00 00 00 js 67a126 : : DO_DB(elog(LOG, "Insert %d (%s)", : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; 0.00 : 67a040: 48 8b 0d 51 31 50 00 mov 0x503151(%rip),%rcx # b7d198 : FreeVfd(file); : free(fnamecopy); : errno = save_errno; : return -1; : } : ++nfile; 0.00 : 67a047: 83 05 32 31 50 00 01 addl $0x1,0x503132(%rip) # b7d180 : : Insert(file); : : vfdP->fileName = fnamecopy; : /* Saved flags are adjusted to be OK for re-opening file */ : vfdP->fileFlags = fileFlags & ~(O_CREAT | O_TRUNC | O_EXCL); 0.00 : 67a04e: 41 81 e6 3f fd ff ff and $0xfffffd3f,%r14d : : DO_DB(elog(LOG, "Insert %d (%s)", : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; 0.00 : 67a055: 4a 8d 14 21 lea (%rcx,%r12,1),%rdx : : vfdP->lruMoreRecently = 0; 0.00 : 67a059: c7 42 14 00 00 00 00 movl $0x0,0x14(%rdx) : vfdP->lruLessRecently = VfdCache[0].lruLessRecently; 0.00 : 67a060: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : 67a063: 89 42 18 mov %eax,0x18(%rdx) : VfdCache[0].lruLessRecently = file; 0.00 : 67a066: 44 89 69 18 mov %r13d,0x18(%rcx) : VfdCache[vfdP->lruLessRecently].lruMoreRecently = file; 0.00 : 67a06a: 48 63 42 18 movslq 0x18(%rdx),%rax 0.00 : 67a06e: 48 c1 e0 06 shl $0x6,%rax 0.00 : 67a072: 44 89 6c 01 14 mov %r13d,0x14(%rcx,%rax,1) : DO_DB(elog(LOG, "PathNameOpenFile: success %d", : vfdP->fd)); : : Insert(file); : : vfdP->fileName = fnamecopy; 0.00 : 67a077: 4c 89 7b 30 mov %r15,0x30(%rbx) : /* Saved flags are adjusted to be OK for re-opening file */ : vfdP->fileFlags = fileFlags & ~(O_CREAT | O_TRUNC | O_EXCL); 0.00 : 67a07b: 44 89 73 38 mov %r14d,0x38(%rbx) : vfdP->fileMode = fileMode; 0.00 : 67a07f: 8b 4d c4 mov -0x3c(%rbp),%ecx : vfdP->seekPos = 0; 0.00 : 67a082: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 67a089: 00 : vfdP->fileSize = 0; 0.00 : 67a08a: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 67a091: 00 : vfdP->fdstate = 0x0; 0.00 : 67a092: 66 c7 43 04 00 00 movw $0x0,0x4(%rbx) : vfdP->resowner = NULL; 0.00 : 67a098: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 67a09f: 00 : Insert(file); : : vfdP->fileName = fnamecopy; : /* Saved flags are adjusted to be OK for re-opening file */ : vfdP->fileFlags = fileFlags & ~(O_CREAT | O_TRUNC | O_EXCL); : vfdP->fileMode = fileMode; 0.00 : 67a0a0: 89 4b 3c mov %ecx,0x3c(%rbx) : vfdP->fileSize = 0; : vfdP->fdstate = 0x0; : vfdP->resowner = NULL; : : return file; : } 0.00 : 67a0a3: 48 83 c4 18 add $0x18,%rsp 0.00 : 67a0a7: 44 89 e8 mov %r13d,%eax 0.00 : 67a0aa: 5b pop %rbx 0.00 : 67a0ab: 41 5c pop %r12 0.00 : 67a0ad: 41 5d pop %r13 0.00 : 67a0af: 41 5e pop %r14 0.00 : 67a0b1: 41 5f pop %r15 0.00 : 67a0b3: c9 leaveq 0.00 : 67a0b4: c3 retq 0.00 : 67a0b5: 0f 1f 00 nopl (%rax) : * there's not much point in starting *real* small. : */ : Size newCacheSize = SizeVfdCache * 2; : Vfd *newVfdCache; : : if (newCacheSize < 32) 0.00 : 67a0b8: bb 20 00 00 00 mov $0x20,%ebx 0.00 : 67a0bd: be 00 08 00 00 mov $0x800,%esi 0.00 : 67a0c2: e9 93 fe ff ff jmpq 679f5a 0.00 : 67a0c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67a0ce: 00 00 : /* : * Initialize the new entries and link them into the free list. : */ : for (i = SizeVfdCache; i < newCacheSize; i++) : { : MemSet((char *) &(VfdCache[i]), 0, sizeof(Vfd)); 0.00 : 67a0d0: 4c 89 c9 mov %r9,%rcx 0.00 : 67a0d3: 4c 89 d0 mov %r10,%rax 0.00 : 67a0d6: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 67a0d9: e9 de fe ff ff jmpq 679fbc : /* : * We need a malloc'd copy of the file name; fail cleanly if no room. : */ : fnamecopy = strdup(fileName); : if (fnamecopy == NULL) : ereport(ERROR, 0.00 : 67a0de: 45 31 c0 xor %r8d,%r8d 0.00 : 67a0e1: b9 00 aa 8a 00 mov $0x8aaa00,%ecx 0.00 : 67a0e6: ba cd 03 00 00 mov $0x3cd,%edx : /* : * Be careful not to clobber VfdCache ptr if realloc fails. : */ : newVfdCache = (Vfd *) realloc(VfdCache, sizeof(Vfd) * newCacheSize); : if (newVfdCache == NULL) : ereport(ERROR, 0.00 : 67a0eb: be f1 a2 8a 00 mov $0x8aa2f1,%esi 0.00 : 67a0f0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67a0f5: e8 c6 09 10 00 callq 77aac0 0.00 : 67a0fa: 84 c0 test %al,%al 0.00 : 67a0fc: 74 23 je 67a121 0.00 : 67a0fe: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 67a103: 31 c0 xor %eax,%eax 0.00 : 67a105: e8 96 27 10 00 callq 77c8a0 0.00 : 67a10a: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 67a10f: 89 c3 mov %eax,%ebx 0.00 : 67a111: e8 3a 2c 10 00 callq 77cd50 0.00 : 67a116: 89 de mov %ebx,%esi 0.00 : 67a118: 89 c7 mov %eax,%edi 0.00 : 67a11a: 31 c0 xor %eax,%eax 0.00 : 67a11c: e8 bf 04 10 00 callq 77a5e0 0.00 : 67a121: e8 aa f3 de ff callq 4694d0 : : vfdP->fd = BasicOpenFile(fileName, fileFlags, fileMode); : : if (vfdP->fd < 0) : { : int save_errno = errno; 0.00 : 67a126: e8 95 fb de ff callq 469cc0 <__errno_location@plt> : } : : static void : FreeVfd(File file) : { : Vfd *vfdP = &VfdCache[file]; 0.00 : 67a12b: 4c 89 e3 mov %r12,%rbx 0.00 : 67a12e: 48 03 1d 63 30 50 00 add 0x503063(%rip),%rbx # b7d198 : : vfdP->fd = BasicOpenFile(fileName, fileFlags, fileMode); : : if (vfdP->fd < 0) : { : int save_errno = errno; 0.00 : 67a135: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 67a139: 44 8b 30 mov (%rax),%r14d : Vfd *vfdP = &VfdCache[file]; : : DO_DB(elog(LOG, "FreeVfd: %d (%s)", : file, vfdP->fileName ? vfdP->fileName : "")); : : if (vfdP->fileName != NULL) 0.00 : 67a13c: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 67a140: 48 85 ff test %rdi,%rdi 0.00 : 67a143: 74 0d je 67a152 : { : free(vfdP->fileName); 0.00 : 67a145: e8 d6 f6 de ff callq 469820 : vfdP->fileName = NULL; 0.00 : 67a14a: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 67a151: 00 : } : vfdP->fdstate = 0x0; 0.00 : 67a152: 66 c7 43 04 00 00 movw $0x0,0x4(%rbx) : : vfdP->nextFree = VfdCache[0].nextFree; 0.00 : 67a158: 48 8b 15 39 30 50 00 mov 0x503039(%rip),%rdx # b7d198 : if (vfdP->fd < 0) : { : int save_errno = errno; : : FreeVfd(file); : free(fnamecopy); 0.00 : 67a15f: 4c 89 ff mov %r15,%rdi : free(vfdP->fileName); : vfdP->fileName = NULL; : } : vfdP->fdstate = 0x0; : : vfdP->nextFree = VfdCache[0].nextFree; 0.00 : 67a162: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 67a165: 89 43 10 mov %eax,0x10(%rbx) : VfdCache[0].nextFree = file; 0.00 : 67a168: 44 89 6a 10 mov %r13d,0x10(%rdx) : { : int save_errno = errno; : : FreeVfd(file); : free(fnamecopy); : errno = save_errno; 0.00 : 67a16c: 41 bd ff ff ff ff mov $0xffffffff,%r13d : if (vfdP->fd < 0) : { : int save_errno = errno; : : FreeVfd(file); : free(fnamecopy); 0.00 : 67a172: e8 a9 f6 de ff callq 469820 : errno = save_errno; 0.00 : 67a177: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 67a17b: 44 89 30 mov %r14d,(%rax) : vfdP->fileSize = 0; : vfdP->fdstate = 0x0; : vfdP->resowner = NULL; : : return file; : } 0.00 : 67a17e: e9 20 ff ff ff jmpq 67a0a3 : /* : * Be careful not to clobber VfdCache ptr if realloc fails. : */ : newVfdCache = (Vfd *) realloc(VfdCache, sizeof(Vfd) * newCacheSize); : if (newVfdCache == NULL) : ereport(ERROR, 0.00 : 67a183: 45 31 c0 xor %r8d,%r8d 0.00 : 67a186: b9 11 aa 8a 00 mov $0x8aaa11,%ecx 0.00 : 67a18b: ba 57 03 00 00 mov $0x357,%edx 0.00 : 67a190: e9 56 ff ff ff jmpq 67a0eb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:51 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:61 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006878c0 : : * : * relcache.c must call this during creation of any reldesc. : */ : void : RelationInitLockInfo(Relation relation) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:51 50.00 : 6878c0: 55 push %rbp : Assert(RelationIsValid(relation)); : Assert(OidIsValid(RelationGetRelid(relation))); : : relation->rd_lockInfo.lockRelId.relId = RelationGetRelid(relation); 0.00 : 6878c1: 8b 47 40 mov 0x40(%rdi),%eax : * : * relcache.c must call this during creation of any reldesc. : */ : void : RelationInitLockInfo(Relation relation) : { 0.00 : 6878c4: 48 89 e5 mov %rsp,%rbp : Assert(RelationIsValid(relation)); : Assert(OidIsValid(RelationGetRelid(relation))); : : relation->rd_lockInfo.lockRelId.relId = RelationGetRelid(relation); 0.00 : 6878c7: 89 47 44 mov %eax,0x44(%rdi) : : if (relation->rd_rel->relisshared) 0.00 : 6878ca: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 6878ce: 80 78 6d 00 cmpb $0x0,0x6d(%rax) 0.00 : 6878d2: 75 0c jne 6878e0 : relation->rd_lockInfo.lockRelId.dbId = InvalidOid; : else : relation->rd_lockInfo.lockRelId.dbId = MyDatabaseId; 0.00 : 6878d4: 8b 05 ce 27 53 00 mov 0x5327ce(%rip),%eax # bba0a8 0.00 : 6878da: 89 47 48 mov %eax,0x48(%rdi) : } 0.00 : 6878dd: c9 leaveq 0.00 : 6878de: c3 retq 0.00 : 6878df: 90 nop : Assert(OidIsValid(RelationGetRelid(relation))); : : relation->rd_lockInfo.lockRelId.relId = RelationGetRelid(relation); : : if (relation->rd_rel->relisshared) : relation->rd_lockInfo.lockRelId.dbId = InvalidOid; 0.00 : 6878e0: c7 47 48 00 00 00 00 movl $0x0,0x48(%rdi) : else : relation->rd_lockInfo.lockRelId.dbId = MyDatabaseId; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:61 50.00 : 6878e7: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/tcop/pquery.c:139 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006a0990 : : /* : * FreeQueryDesc : */ : void : FreeQueryDesc(QueryDesc *qdesc) : { 0.00 : 6a0990: 55 push %rbp 0.00 : 6a0991: 48 89 e5 mov %rsp,%rbp 0.00 : 6a0994: 53 push %rbx 0.00 : 6a0995: 48 89 fb mov %rdi,%rbx 0.00 : 6a0998: 48 83 ec 08 sub $0x8,%rsp : /* Can't be a live query */ : Assert(qdesc->estate == NULL); : : /* forget our snapshots */ : UnregisterSnapshot(qdesc->snapshot); 0.00 : 6a099c: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6a09a0: e8 4b 6a 10 00 callq 7a73f0 : UnregisterSnapshot(qdesc->crosscheck_snapshot); 0.00 : 6a09a5: 48 8b 7b 28 mov 0x28(%rbx),%rdi 0.00 : 6a09a9: e8 42 6a 10 00 callq 7a73f0 : : /* Only the QueryDesc itself need be freed */ : pfree(qdesc); : } 0.00 : 6a09ae: 48 83 c4 08 add $0x8,%rsp : /* forget our snapshots */ : UnregisterSnapshot(qdesc->snapshot); : UnregisterSnapshot(qdesc->crosscheck_snapshot); : : /* Only the QueryDesc itself need be freed */ : pfree(qdesc); 0.00 : 6a09b2: 48 89 df mov %rbx,%rdi : } 0.00 : 6a09b5: 5b pop %rbx 100.00 : 6a09b6: c9 leaveq : /* forget our snapshots */ : UnregisterSnapshot(qdesc->snapshot); : UnregisterSnapshot(qdesc->crosscheck_snapshot); : : /* Only the QueryDesc itself need be freed */ : pfree(qdesc); 0.00 : 6a09b7: e9 c4 81 0f 00 jmpq 798b80 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/inval.c:661 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000767b10 : : * Note: : * This should be called as the first step in processing a transaction. : */ : void : AcceptInvalidationMessages(void) : { 0.00 : 767b10: 55 push %rbp : ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage, /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/inval.c:661 100.00 : 767b11: be 30 7b 76 00 mov $0x767b30,%esi 0.00 : 767b16: bf d0 7b 76 00 mov $0x767bd0,%edi : * Note: : * This should be called as the first step in processing a transaction. : */ : void : AcceptInvalidationMessages(void) : { 0.00 : 767b1b: 48 89 e5 mov %rsp,%rbp : } : } : #elif defined(CLOBBER_CACHE_RECURSIVELY) : InvalidateSystemCaches(); : #endif : } 0.00 : 767b1e: c9 leaveq : * This should be called as the first step in processing a transaction. : */ : void : AcceptInvalidationMessages(void) : { : ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage, 0.00 : 767b1f: e9 8c ce f1 ff jmpq 6849b0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:361 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076afa0 : : * NB: the returned tuple has been copied into palloc'd storage : * and must eventually be freed with heap_freetuple. : */ : static HeapTuple : ScanPgRelation(Oid targetRelId, bool indexOK, bool force_non_historic) : { 0.00 : 76afa0: 55 push %rbp 0.00 : 76afa1: 48 89 e5 mov %rsp,%rbp 0.00 : 76afa4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 76afa8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 76afac: 89 d3 mov %edx,%ebx 0.00 : 76afae: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 76afb2: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 76afb6: 48 83 ec 70 sub $0x70,%rsp : * If something goes wrong during backend startup, we might find ourselves : * trying to read pg_class before we've selected a database. That ain't : * gonna work, so bail out with a useful error message. If this happens, : * it probably means a relcache entry that needs to be nailed isn't. : */ : if (!OidIsValid(MyDatabaseId)) 0.00 : 76afba: 44 8b 1d e7 f0 44 00 mov 0x44f0e7(%rip),%r11d # bba0a8 : * NB: the returned tuple has been copied into palloc'd storage : * and must eventually be freed with heap_freetuple. : */ : static HeapTuple : ScanPgRelation(Oid targetRelId, bool indexOK, bool force_non_historic) : { 0.00 : 76afc1: 41 89 f4 mov %esi,%r12d : * If something goes wrong during backend startup, we might find ourselves : * trying to read pg_class before we've selected a database. That ain't : * gonna work, so bail out with a useful error message. If this happens, : * it probably means a relcache entry that needs to be nailed isn't. : */ : if (!OidIsValid(MyDatabaseId)) 0.00 : 76afc4: 45 85 db test %r11d,%r11d 0.00 : 76afc7: 0f 84 c5 00 00 00 je 76b092 : elog(FATAL, "cannot read pg_class without having selected a database"); : : /* : * form a scan key : */ : ScanKeyInit(&key[0], 0.00 : 76afcd: 4c 8d 75 90 lea -0x70(%rbp),%r14 0.00 : 76afd1: 41 89 f8 mov %edi,%r8d 0.00 : 76afd4: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76afd9: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76afde: be fe ff ff ff mov $0xfffffffe,%esi 0.00 : 76afe3: 4c 89 f7 mov %r14,%rdi 0.00 : 76afe6: e8 95 8b d0 ff callq 473b80 : * Open pg_class and fetch a tuple. Force heap scan if we haven't yet : * built the critical relcache entries (this includes initdb and startup : * without a pg_internal.init file). The caller can also force a heap : * scan by setting indexOK == false. : */ : pg_class_desc = heap_open(RelationRelationId, AccessShareLock); 0.00 : 76afeb: be 01 00 00 00 mov $0x1,%esi 0.00 : 76aff0: bf eb 04 00 00 mov $0x4eb,%edi 0.00 : 76aff5: e8 66 2b d3 ff callq 49db60 : /* : * The caller might need a tuple that's newer than the one the historic : * snapshot; currently the only case requiring to do so is looking up the : * relfilenode of non mapped system relations during decoding. : */ : if (force_non_historic) 0.00 : 76affa: 84 db test %bl,%bl : * Open pg_class and fetch a tuple. Force heap scan if we haven't yet : * built the critical relcache entries (this includes initdb and startup : * without a pg_internal.init file). The caller can also force a heap : * scan by setting indexOK == false. : */ : pg_class_desc = heap_open(RelationRelationId, AccessShareLock); 0.00 : 76affc: 49 89 c5 mov %rax,%r13 : /* : * The caller might need a tuple that's newer than the one the historic : * snapshot; currently the only case requiring to do so is looking up the : * relfilenode of non mapped system relations during decoding. : */ : if (force_non_historic) 0.00 : 76afff: 75 7f jne 76b080 : snapshot = GetNonHistoricCatalogSnapshot(RelationRelationId); : else : snapshot = GetCatalogSnapshot(RelationRelationId); 0.00 : 76b001: bf eb 04 00 00 mov $0x4eb,%edi 0.00 : 76b006: e8 e5 c5 03 00 callq 7a75f0 0.00 : 76b00b: 48 89 c1 mov %rax,%rcx : : pg_class_scan = systable_beginscan(pg_class_desc, ClassOidIndexId, 0.00 : 76b00e: 31 d2 xor %edx,%edx 0.00 : 76b010: 45 84 e4 test %r12b,%r12b 0.00 : 76b013: 74 0c je 76b021 0.00 : 76b015: 31 d2 xor %edx,%edx 0.00 : 76b017: 80 3d c2 d4 44 00 00 cmpb $0x0,0x44d4c2(%rip) # bb84e0 0.00 : 76b01e: 0f 95 c2 setne %dl 0.00 : 76b021: 4d 89 f1 mov %r14,%r9 0.00 : 76b024: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 76b02a: be 66 0a 00 00 mov $0xa66,%esi 0.00 : 76b02f: 4c 89 ef mov %r13,%rdi 0.00 : 76b032: e8 69 9c d3 ff callq 4a4ca0 : indexOK && criticalRelcachesBuilt, : snapshot, : 1, key); : : pg_class_tuple = systable_getnext(pg_class_scan); 0.00 : 76b037: 48 89 c7 mov %rax,%rdi : if (force_non_historic) : snapshot = GetNonHistoricCatalogSnapshot(RelationRelationId); : else : snapshot = GetCatalogSnapshot(RelationRelationId); : : pg_class_scan = systable_beginscan(pg_class_desc, ClassOidIndexId, 0.00 : 76b03a: 49 89 c4 mov %rax,%r12 : indexOK && criticalRelcachesBuilt, : snapshot, : 1, key); : : pg_class_tuple = systable_getnext(pg_class_scan); 0.00 : 76b03d: e8 de 9b d3 ff callq 4a4c20 : : /* : * Must copy tuple before releasing buffer. : */ : if (HeapTupleIsValid(pg_class_tuple)) 0.00 : 76b042: 48 85 c0 test %rax,%rax : pg_class_scan = systable_beginscan(pg_class_desc, ClassOidIndexId, : indexOK && criticalRelcachesBuilt, : snapshot, : 1, key); : : pg_class_tuple = systable_getnext(pg_class_scan); 0.00 : 76b045: 48 89 c3 mov %rax,%rbx : : /* : * Must copy tuple before releasing buffer. : */ : if (HeapTupleIsValid(pg_class_tuple)) 0.00 : 76b048: 74 0b je 76b055 : pg_class_tuple = heap_copytuple(pg_class_tuple); 0.00 : 76b04a: 48 89 c7 mov %rax,%rdi 0.00 : 76b04d: e8 4e 3b d0 ff callq 46eba0 0.00 : 76b052: 48 89 c3 mov %rax,%rbx : : /* all done */ : systable_endscan(pg_class_scan); 0.00 : 76b055: 4c 89 e7 mov %r12,%rdi 0.00 : 76b058: e8 c3 9a d3 ff callq 4a4b20 : heap_close(pg_class_desc, AccessShareLock); 0.00 : 76b05d: 4c 89 ef mov %r13,%rdi 0.00 : 76b060: be 01 00 00 00 mov $0x1,%esi 0.00 : 76b065: e8 56 29 d3 ff callq 49d9c0 : : return pg_class_tuple; : } 0.00 : 76b06a: 48 89 d8 mov %rbx,%rax 0.00 : 76b06d: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 76b071: 48 8b 5d e0 mov -0x20(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:361 100.00 : 76b075: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 76b079: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 76b07d: c9 leaveq 0.00 : 76b07e: c3 retq 0.00 : 76b07f: 90 nop : * The caller might need a tuple that's newer than the one the historic : * snapshot; currently the only case requiring to do so is looking up the : * relfilenode of non mapped system relations during decoding. : */ : if (force_non_historic) : snapshot = GetNonHistoricCatalogSnapshot(RelationRelationId); 0.00 : 76b080: bf eb 04 00 00 mov $0x4eb,%edi 0.00 : 76b085: e8 f6 c4 03 00 callq 7a7580 0.00 : 76b08a: 48 89 c1 mov %rax,%rcx 0.00 : 76b08d: e9 7c ff ff ff jmpq 76b00e : * trying to read pg_class before we've selected a database. That ain't : * gonna work, so bail out with a useful error message. If this happens, : * it probably means a relcache entry that needs to be nailed isn't. : */ : if (!OidIsValid(MyDatabaseId)) : elog(FATAL, "cannot read pg_class without having selected a database"); 0.00 : 76b092: ba 89 15 8d 00 mov $0x8d1589,%edx 0.00 : 76b097: be 3b 01 00 00 mov $0x13b,%esi 0.00 : 76b09c: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76b0a1: e8 7a 03 01 00 callq 77b420 0.00 : 76b0a6: be 18 da 8c 00 mov $0x8cda18,%esi 0.00 : 76b0ab: bf 15 00 00 00 mov $0x15,%edi 0.00 : 76b0b0: 31 c0 xor %eax,%eax 0.00 : 76b0b2: e8 79 01 01 00 callq 77b230 0.00 : 76b0b7: e8 14 e4 cf ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000010e90 : : * memory). : */ : : PGresult * : PQgetResult(PGconn *conn) : { 0.00 : 10e90: 55 push %rbp 0.00 : 10e91: 48 89 e5 mov %rsp,%rbp 0.00 : 10e94: 41 57 push %r15 0.00 : 10e96: 41 56 push %r14 0.00 : 10e98: 41 55 push %r13 : PGresult *res; : : if (!conn) 0.00 : 10e9a: 45 31 ed xor %r13d,%r13d : * memory). : */ : : PGresult * : PQgetResult(PGconn *conn) : { 0.00 : 10e9d: 41 54 push %r12 0.00 : 10e9f: 53 push %rbx 0.00 : 10ea0: 48 89 fb mov %rdi,%rbx 0.00 : 10ea3: 48 83 ec 18 sub $0x18,%rsp : PGresult *res; : : if (!conn) 0.00 : 10ea7: 48 85 ff test %rdi,%rdi 0.00 : 10eaa: 74 61 je 10f0d 0.00 : 10eac: 0f 1f 40 00 nopl 0x0(%rax) : conn->asyncStatus = PGASYNC_IDLE; : return pqPrepareAsyncResult(conn); : } : : /* Parse it. */ : parseInput(conn); 0.00 : 10eb0: 48 89 df mov %rbx,%rdi 0.00 : 10eb3: e8 b8 dc ff ff callq eb70 : : /* Parse any available data, if our state permits. */ : parseInput(conn); : : /* If not ready to return something, block until we are. */ : while (conn->asyncStatus == PGASYNC_BUSY) 0.00 : 10eb8: 8b 8b 04 01 00 00 mov 0x104(%rbx),%ecx 0.00 : 10ebe: 83 f9 01 cmp $0x1,%ecx 0.00 : 10ec1: 0f 85 81 00 00 00 jne 10f48 0.00 : 10ec7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 10ece: 00 00 : : /* : * If data remains unsent, send it. Else we might be waiting for the : * result of a command the backend hasn't even got yet. : */ : while ((flushResult = pqFlush(conn)) > 0) 0.00 : 10ed0: 48 89 df mov %rbx,%rdi 0.00 : 10ed3: e8 88 0e 00 00 callq 11d60 0.00 : 10ed8: 83 f8 00 cmp $0x0,%eax 0.00 : 10edb: 7e 43 jle 10f20 : { : if (pqWait(FALSE, TRUE, conn)) 0.00 : 10edd: 31 ff xor %edi,%edi 0.00 : 10edf: 48 89 da mov %rbx,%rdx 0.00 : 10ee2: be 01 00 00 00 mov $0x1,%esi 0.00 : 10ee7: e8 f4 08 00 00 callq 117e0 0.00 : 10eec: 85 c0 test %eax,%eax 0.00 : 10eee: 74 e0 je 10ed0 : { : /* : * conn->errorMessage has been set by pqWait or pqReadData. We : * want to append it to any already-received error message. : */ : pqSaveErrorResult(conn); 0.00 : 10ef0: 48 89 df mov %rbx,%rdi 0.00 : 10ef3: e8 c8 fe ff ff callq 10dc0 : conn->asyncStatus = PGASYNC_IDLE; 0.00 : 10ef8: c7 83 04 01 00 00 00 movl $0x0,0x104(%rbx) 0.00 : 10eff: 00 00 00 : return pqPrepareAsyncResult(conn); 0.00 : 10f02: 48 89 df mov %rbx,%rdi 0.00 : 10f05: e8 36 ed ff ff callq fc40 0.00 : 10f0a: 49 89 c5 mov %rax,%r13 : res->events[i].resultInitialized = TRUE; : } : } : : return res; : } 0.00 : 10f0d: 48 83 c4 18 add $0x18,%rsp 0.00 : 10f11: 4c 89 e8 mov %r13,%rax 0.00 : 10f14: 5b pop %rbx 0.00 : 10f15: 41 5c pop %r12 0.00 : 10f17: 41 5d pop %r13 0.00 : 10f19: 41 5e pop %r14 0.00 : 10f1b: 41 5f pop %r15 0.00 : 10f1d: c9 leaveq 0.00 : 10f1e: c3 retq 0.00 : 10f1f: 90 nop : break; : } : } : : /* Wait for some more data, and load it. */ : if (flushResult || 0.00 : 10f20: 75 ce jne 10ef0 0.00 : 10f22: 31 f6 xor %esi,%esi 0.00 : 10f24: 48 89 da mov %rbx,%rdx 0.00 : 10f27: bf 01 00 00 00 mov $0x1,%edi 0.00 : 10f2c: e8 af 08 00 00 callq 117e0 0.00 : 10f31: 85 c0 test %eax,%eax 0.00 : 10f33: 75 bb jne 10ef0 0.00 : 10f35: 48 89 df mov %rbx,%rdi 0.00 : 10f38: e8 83 0a 00 00 callq 119c0 0.00 : 10f3d: 85 c0 test %eax,%eax 0.00 : 10f3f: 90 nop 0.00 : 10f40: 0f 89 6a ff ff ff jns 10eb0 0.00 : 10f46: eb a8 jmp 10ef0 : /* Parse it. */ : parseInput(conn); : } : : /* Return the appropriate thing. */ : switch (conn->asyncStatus) 0.00 : 10f48: 83 f9 05 cmp $0x5,%ecx 0.00 : 10f4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 10f50: 0f 86 d8 00 00 00 jbe 1102e : break; : case PGASYNC_COPY_BOTH: : res = getCopyResult(conn, PGRES_COPY_BOTH); : break; : default: : printfPQExpBuffer(&conn->errorMessage, 0.00 : 10f56: 48 8d bb 00 03 00 00 lea 0x300(%rbx),%rdi 0.00 : 10f5d: 48 8d 35 88 e1 00 00 lea 0xe188(%rip),%rsi # 1f0ec 0.00 : 10f64: 89 ca mov %ecx,%edx 0.00 : 10f66: 31 c0 xor %eax,%eax 0.00 : 10f68: e8 63 6f ff ff callq 7ed0 : libpq_gettext("unexpected asyncStatus: %d\n"), : (int) conn->asyncStatus); : res = PQmakeEmptyPGresult(conn, PGRES_FATAL_ERROR); 0.00 : 10f6d: be 07 00 00 00 mov $0x7,%esi 0.00 : 10f72: 48 89 df mov %rbx,%rdi 0.00 : 10f75: e8 66 70 ff ff callq 7fe0 0.00 : 10f7a: 49 89 c5 mov %rax,%r13 : break; : } : : if (res) 0.00 : 10f7d: 4d 85 ed test %r13,%r13 0.00 : 10f80: 74 8b je 10f0d : { : int i; : : for (i = 0; i < res->nEvents; i++) 0.00 : 10f82: 45 8b a5 98 00 00 00 mov 0x98(%r13),%r12d 0.00 : 10f89: 45 85 e4 test %r12d,%r12d 0.00 : 10f8c: 0f 8e 7b ff ff ff jle 10f0d 0.00 : 10f92: 45 31 f6 xor %r14d,%r14d 0.00 : 10f95: 4c 8d 7d c0 lea -0x40(%rbp),%r15 0.00 : 10f99: eb 23 jmp 10fbe 0.00 : 10f9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : res->events[i].name); : pqSetResultError(res, conn->errorMessage.data); : res->resultStatus = PGRES_FATAL_ERROR; : break; : } : res->events[i].resultInitialized = TRUE; 0.00 : 10fa0: 49 8b 85 90 00 00 00 mov 0x90(%r13),%rax : : if (res) : { : int i; : : for (i = 0; i < res->nEvents; i++) 0.00 : 10fa7: 41 83 c6 01 add $0x1,%r14d : res->events[i].name); : pqSetResultError(res, conn->errorMessage.data); : res->resultStatus = PGRES_FATAL_ERROR; : break; : } : res->events[i].resultInitialized = TRUE; 0.00 : 10fab: 42 c6 44 20 20 01 movb $0x1,0x20(%rax,%r12,1) : : if (res) : { : int i; : : for (i = 0; i < res->nEvents; i++) 0.00 : 10fb1: 45 39 b5 98 00 00 00 cmp %r14d,0x98(%r13) 0.00 : 10fb8: 0f 8e 4f ff ff ff jle 10f0d : { : PGEventResultCreate evt; : : evt.conn = conn; : evt.result = res; : if (!res->events[i].proc(PGEVT_RESULTCREATE, &evt, 0.00 : 10fbe: 49 63 c6 movslq %r14d,%rax : : for (i = 0; i < res->nEvents; i++) : { : PGEventResultCreate evt; : : evt.conn = conn; 0.00 : 10fc1: 48 89 5d c0 mov %rbx,-0x40(%rbp) : evt.result = res; 0.00 : 10fc5: 4c 89 6d c8 mov %r13,-0x38(%rbp) : if (!res->events[i].proc(PGEVT_RESULTCREATE, &evt, 0.00 : 10fc9: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 10fcd: 4c 89 fe mov %r15,%rsi 0.00 : 10fd0: bf 03 00 00 00 mov $0x3,%edi 0.00 : 10fd5: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : 10fdc: 00 0.00 : 10fdd: 4c 89 e0 mov %r12,%rax 0.00 : 10fe0: 49 03 85 90 00 00 00 add 0x90(%r13),%rax 0.00 : 10fe7: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 10feb: ff 10 callq *(%rax) 0.00 : 10fed: 85 c0 test %eax,%eax 0.00 : 10fef: 75 af jne 10fa0 : res->events[i].passThrough)) : { : printfPQExpBuffer(&conn->errorMessage, 0.00 : 10ff1: 49 8b 85 90 00 00 00 mov 0x90(%r13),%rax 0.00 : 10ff8: 48 8d bb 00 03 00 00 lea 0x300(%rbx),%rdi 0.00 : 10fff: 48 8d 35 e2 e3 00 00 lea 0xe3e2(%rip),%rsi # 1f3e8 0.00 : 11006: 4a 8b 54 20 08 mov 0x8(%rax,%r12,1),%rdx 0.00 : 1100b: 31 c0 xor %eax,%eax 0.00 : 1100d: e8 be 6e ff ff callq 7ed0 : libpq_gettext("PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n"), : res->events[i].name); : pqSetResultError(res, conn->errorMessage.data); 0.00 : 11012: 48 8b b3 00 03 00 00 mov 0x300(%rbx),%rsi 0.00 : 11019: 4c 89 ef mov %r13,%rdi 0.00 : 1101c: e8 ef e9 ff ff callq fa10 : res->resultStatus = PGRES_FATAL_ERROR; 0.00 : 11021: 41 c7 45 28 07 00 00 movl $0x7,0x28(%r13) 0.00 : 11028: 00 : break; 0.00 : 11029: e9 df fe ff ff jmpq 10f0d : /* Parse it. */ : parseInput(conn); : } : : /* Return the appropriate thing. */ : switch (conn->asyncStatus) 0.00 : 1102e: 48 8d 15 8b e4 00 00 lea 0xe48b(%rip),%rdx # 1f4c0 0.00 : 11035: 89 c8 mov %ecx,%eax 0.00 : 11037: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : 1103b: 48 01 d0 add %rdx,%rax 0.00 : 1103e: ff e0 jmpq *%rax : break; : case PGASYNC_COPY_OUT: : res = getCopyResult(conn, PGRES_COPY_OUT); : break; : case PGASYNC_COPY_BOTH: : res = getCopyResult(conn, PGRES_COPY_BOTH); 0.00 : 11040: be 08 00 00 00 mov $0x8,%esi 0.00 : 11045: 48 89 df mov %rbx,%rdi 0.00 : 11048: e8 e3 fd ff ff callq 10e30 0.00 : 1104d: 49 89 c5 mov %rax,%r13 : break; 0.00 : 11050: e9 28 ff ff ff jmpq 10f7d : break; : case PGASYNC_COPY_IN: : res = getCopyResult(conn, PGRES_COPY_IN); : break; : case PGASYNC_COPY_OUT: : res = getCopyResult(conn, PGRES_COPY_OUT); 0.00 : 11055: be 03 00 00 00 mov $0x3,%esi 0.00 : 1105a: 48 89 df mov %rbx,%rdi 0.00 : 1105d: e8 ce fd ff ff callq 10e30 0.00 : 11062: 49 89 c5 mov %rax,%r13 : break; 0.00 : 11065: e9 13 ff ff ff jmpq 10f7d : res = pqPrepareAsyncResult(conn); : /* Set the state back to BUSY, allowing parsing to proceed. */ : conn->asyncStatus = PGASYNC_BUSY; : break; : case PGASYNC_COPY_IN: : res = getCopyResult(conn, PGRES_COPY_IN); 0.00 : 1106a: be 04 00 00 00 mov $0x4,%esi 0.00 : 1106f: 48 89 df mov %rbx,%rdi 0.00 : 11072: e8 b9 fd ff ff callq 10e30 0.00 : 11077: 49 89 c5 mov %rax,%r13 : break; 0.00 : 1107a: e9 fe fe ff ff jmpq 10f7d : { : case PGASYNC_IDLE: : res = NULL; /* query is complete */ : break; : case PGASYNC_READY: : res = pqPrepareAsyncResult(conn); 0.00 : 1107f: 48 89 df mov %rbx,%rdi 0.00 : 11082: e8 b9 eb ff ff callq fc40 : /* Set the state back to BUSY, allowing parsing to proceed. */ : conn->asyncStatus = PGASYNC_BUSY; 0.00 : 11087: c7 83 04 01 00 00 01 movl $0x1,0x104(%rbx) 0.00 : 1108e: 00 00 00 : { : case PGASYNC_IDLE: : res = NULL; /* query is complete */ : break; : case PGASYNC_READY: : res = pqPrepareAsyncResult(conn); 0.00 : 11091: 49 89 c5 mov %rax,%r13 : /* Set the state back to BUSY, allowing parsing to proceed. */ : conn->asyncStatus = PGASYNC_BUSY; : break; 0.00 : 11094: e9 e4 fe ff ff jmpq 10f7d : /* Parse it. */ : parseInput(conn); : } : : /* Return the appropriate thing. */ : switch (conn->asyncStatus) ??:0 100.00 : 11099: 45 31 ed xor %r13d,%r13d 0.00 : 1109c: e9 6c fe ff ff jmpq 10f0d Sorted summary for file /lib64/libdl-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libdl-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001900 : 0.00 : 1900: 89 3d 12 18 20 00 mov %edi,0x201812(%rip) # 203118 <__dlfcn_argc> ??:0 100.00 : 1906: 48 89 35 03 18 20 00 mov %rsi,0x201803(%rip) # 203110 <__dlfcn_argv> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001ef90 <__init_cpu_features>: 0.00 : 1ef90: 31 c0 xor %eax,%eax 0.00 : 1ef92: 53 push %rbx 0.00 : 1ef93: 0f a2 cpuid 0.00 : 1ef95: 81 fb 47 65 6e 75 cmp $0x756e6547,%ebx 0.00 : 1ef9b: 89 05 c3 82 35 00 mov %eax,0x3582c3(%rip) # 377264 <__cpu_features+0x4> 0.00 : 1efa1: 74 2d je 1efd0 <__init_cpu_features+0x40> 0.00 : 1efa3: 81 fb 41 75 74 68 cmp $0x68747541,%ebx 0.00 : 1efa9: 0f 84 91 00 00 00 je 1f040 <__init_cpu_features+0xb0> 0.00 : 1efaf: b8 03 00 00 00 mov $0x3,%eax 0.00 : 1efb4: 31 d2 xor %edx,%edx 0.00 : 1efb6: 31 f6 xor %esi,%esi 0.00 : 1efb8: 89 15 ba 82 35 00 mov %edx,0x3582ba(%rip) # 377278 <__cpu_features+0x18> 0.00 : 1efbe: 89 35 b8 82 35 00 mov %esi,0x3582b8(%rip) # 37727c <__cpu_features+0x1c> 0.00 : 1efc4: 89 05 96 82 35 00 mov %eax,0x358296(%rip) # 377260 <__cpu_features> 0.00 : 1efca: 5b pop %rbx 0.00 : 1efcb: c3 retq 0.00 : 1efcc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 1efd0: 81 f9 6e 74 65 6c cmp $0x6c65746e,%ecx 0.00 : 1efd6: 75 d7 jne 1efaf <__init_cpu_features+0x1f> 0.00 : 1efd8: 81 fa 69 6e 65 49 cmp $0x49656e69,%edx 0.00 : 1efde: 75 cf jne 1efaf <__init_cpu_features+0x1f> 0.00 : 1efe0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 1efe5: 83 0d 94 82 35 00 08 orl $0x8,0x358294(%rip) # 377280 <__cpu_features+0x20> 0.00 : 1efec: 0f a2 cpuid 0.00 : 1efee: 89 15 80 82 35 00 mov %edx,0x358280(%rip) # 377274 <__cpu_features+0x14> 0.00 : 1eff4: 89 c2 mov %eax,%edx 0.00 : 1eff6: 89 0d 74 82 35 00 mov %ecx,0x358274(%rip) # 377270 <__cpu_features+0x10> 0.00 : 1effc: c1 ea 08 shr $0x8,%edx ??:0 100.00 : 1efff: 89 c6 mov %eax,%esi 0.00 : 1f001: 89 c1 mov %eax,%ecx 0.00 : 1f003: c1 ee 04 shr $0x4,%esi 0.00 : 1f006: c1 e9 0c shr $0xc,%ecx 0.00 : 1f009: 83 e2 0f and $0xf,%edx 0.00 : 1f00c: 83 e6 0f and $0xf,%esi 0.00 : 1f00f: 81 e1 f0 00 00 00 and $0xf0,%ecx 0.00 : 1f015: 83 fa 0f cmp $0xf,%edx 0.00 : 1f018: 89 05 4a 82 35 00 mov %eax,0x35824a(%rip) # 377268 <__cpu_features+0x8> 0.00 : 1f01e: 89 1d 48 82 35 00 mov %ebx,0x358248(%rip) # 37726c <__cpu_features+0xc> 0.00 : 1f024: 0f 84 86 00 00 00 je 1f0b0 <__init_cpu_features+0x120> 0.00 : 1f02a: 83 fa 06 cmp $0x6,%edx 0.00 : 1f02d: b8 01 00 00 00 mov $0x1,%eax 0.00 : 1f032: 75 84 jne 1efb8 <__init_cpu_features+0x28> 0.00 : 1f034: 01 ce add %ecx,%esi 0.00 : 1f036: b8 01 00 00 00 mov $0x1,%eax 0.00 : 1f03b: e9 78 ff ff ff jmpq 1efb8 <__init_cpu_features+0x28> 0.00 : 1f040: 81 f9 63 41 4d 44 cmp $0x444d4163,%ecx 0.00 : 1f046: 0f 85 63 ff ff ff jne 1efaf <__init_cpu_features+0x1f> 0.00 : 1f04c: 81 fa 65 6e 74 69 cmp $0x69746e65,%edx 0.00 : 1f052: 0f 85 57 ff ff ff jne 1efaf <__init_cpu_features+0x1f> 0.00 : 1f058: b8 01 00 00 00 mov $0x1,%eax 0.00 : 1f05d: 0f a2 cpuid 0.00 : 1f05f: 89 c6 mov %eax,%esi 0.00 : 1f061: 89 15 0d 82 35 00 mov %edx,0x35820d(%rip) # 377274 <__cpu_features+0x14> 0.00 : 1f067: 89 c2 mov %eax,%edx 0.00 : 1f069: c1 ea 08 shr $0x8,%edx 0.00 : 1f06c: c1 ee 04 shr $0x4,%esi 0.00 : 1f06f: 89 0d fb 81 35 00 mov %ecx,0x3581fb(%rip) # 377270 <__cpu_features+0x10> 0.00 : 1f075: 83 e2 0f and $0xf,%edx 0.00 : 1f078: 83 e6 0f and $0xf,%esi 0.00 : 1f07b: 80 e5 02 and $0x2,%ch 0.00 : 1f07e: 89 05 e4 81 35 00 mov %eax,0x3581e4(%rip) # 377268 <__cpu_features+0x8> 0.00 : 1f084: 89 1d e2 81 35 00 mov %ebx,0x3581e2(%rip) # 37726c <__cpu_features+0xc> 0.00 : 1f08a: b8 02 00 00 00 mov $0x2,%eax 0.00 : 1f08f: 0f 84 23 ff ff ff je 1efb8 <__init_cpu_features+0x28> 0.00 : 1f095: 83 0d e4 81 35 00 08 orl $0x8,0x3581e4(%rip) # 377280 <__cpu_features+0x20> 0.00 : 1f09c: b8 02 00 00 00 mov $0x2,%eax 0.00 : 1f0a1: e9 12 ff ff ff jmpq 1efb8 <__init_cpu_features+0x28> 0.00 : 1f0a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1f0ad: 00 00 00 0.00 : 1f0b0: c1 e8 14 shr $0x14,%eax 0.00 : 1f0b3: 01 ce add %ecx,%esi 0.00 : 1f0b5: 25 ff 00 00 00 and $0xff,%eax 0.00 : 1f0ba: 8d 50 0f lea 0xf(%rax),%edx 0.00 : 1f0bd: b8 01 00 00 00 mov $0x1,%eax 0.00 : 1f0c2: e9 f1 fe ff ff jmpq 1efb8 <__init_cpu_features+0x28> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004ee0 : 50.00 : 4ee0: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 50.00 : 4ee5: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 4eea: 48 83 ec 18 sub $0x18,%rsp 0.00 : 4eee: 48 89 fd mov %rdi,%rbp 0.00 : 4ef1: e8 7a 18 01 00 callq 16770 <__GI_strlen> 0.00 : 4ef6: 48 8d 58 01 lea 0x1(%rax),%rbx 0.00 : 4efa: 48 89 df mov %rbx,%rdi 0.00 : 4efd: e8 ae bb ff ff callq ab0 0.00 : 4f02: 48 85 c0 test %rax,%rax 0.00 : 4f05: 74 21 je 4f28 0.00 : 4f07: 48 89 da mov %rbx,%rdx 0.00 : 4f0a: 48 89 ee mov %rbp,%rsi 0.00 : 4f0d: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 4f12: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 4f17: 48 89 c7 mov %rax,%rdi 0.00 : 4f1a: 48 83 c4 18 add $0x18,%rsp 0.00 : 4f1e: e9 cd 23 01 00 jmpq 172f0 0.00 : 4f23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4f28: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 4f2d: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 4f32: 48 83 c4 18 add $0x18,%rsp Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000013f60 <_dl_discover_osversion>: 0.00 : 13f60: 41 57 push %r15 0.00 : 13f62: 41 56 push %r14 0.00 : 13f64: 41 55 push %r13 0.00 : 13f66: 41 54 push %r12 0.00 : 13f68: 55 push %rbp 0.00 : 13f69: 53 push %rbx 0.00 : 13f6a: 48 81 ec d8 01 00 00 sub $0x1d8,%rsp 0.00 : 13f71: 48 8b 1d 60 ad 20 00 mov 0x20ad60(%rip),%rbx # 21ecd8 <_rtld_global_ro+0xb8> 0.00 : 13f78: 48 85 db test %rbx,%rbx 0.00 : 13f7b: 0f 84 af 00 00 00 je 14030 <_dl_discover_osversion+0xd0> 0.00 : 13f81: 0f b7 ab b0 02 00 00 movzwl 0x2b0(%rbx),%ebp 0.00 : 13f88: 48 8b 83 a0 02 00 00 mov 0x2a0(%rbx),%rax 0.00 : 13f8f: 48 85 ed test %rbp,%rbp 0.00 : 13f92: 0f 84 98 00 00 00 je 14030 <_dl_discover_osversion+0xd0> 0.00 : 13f98: 49 89 c5 mov %rax,%r13 0.00 : 13f9b: 45 31 c9 xor %r9d,%r9d 0.00 : 13f9e: 4c 8d 1d db 4d 00 00 lea 0x4ddb(%rip),%r11 # 18d80 0.00 : 13fa5: 41 ba 14 00 00 00 mov $0x14,%r10d 0.00 : 13fab: eb 10 jmp 13fbd <_dl_discover_osversion+0x5d> 0.00 : 13fad: 0f 1f 00 nopl (%rax) 0.00 : 13fb0: 49 83 c1 01 add $0x1,%r9 0.00 : 13fb4: 49 83 c5 38 add $0x38,%r13 0.00 : 13fb8: 49 39 e9 cmp %rbp,%r9 0.00 : 13fbb: 73 73 jae 14030 <_dl_discover_osversion+0xd0> 0.00 : 13fbd: 41 83 7d 00 04 cmpl $0x4,0x0(%r13) 0.00 : 13fc2: 75 ec jne 13fb0 <_dl_discover_osversion+0x50> 0.00 : 13fc4: 4c 8b 3b mov (%rbx),%r15 0.00 : 13fc7: 4d 8b 45 28 mov 0x28(%r13),%r8 0.00 : 13fcb: 4d 03 7d 10 add 0x10(%r13),%r15 0.00 : 13fcf: 49 83 f8 0c cmp $0xc,%r8 0.00 : 13fd3: 4d 89 fe mov %r15,%r14 0.00 : 13fd6: 77 33 ja 1400b <_dl_discover_osversion+0xab> 0.00 : 13fd8: eb d6 jmp 13fb0 <_dl_discover_osversion+0x50> 0.00 : 13fda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 13fe0: 41 8b 06 mov (%r14),%eax 0.00 : 13fe3: 41 8b 56 04 mov 0x4(%r14),%edx 0.00 : 13fe7: 48 83 c0 03 add $0x3,%rax 0.00 : 13feb: 48 83 c2 03 add $0x3,%rdx 0.00 : 13fef: 48 83 e0 fc and $0xfffffffffffffffc,%rax 0.00 : 13ff3: 48 83 e2 fc and $0xfffffffffffffffc,%rdx 0.00 : 13ff7: 48 8d 44 10 0c lea 0xc(%rax,%rdx,1),%rax 0.00 : 13ffc: 49 01 c6 add %rax,%r14 0.00 : 13fff: 49 8d 46 0c lea 0xc(%r14),%rax 0.00 : 14003: 4c 29 f8 sub %r15,%rax 0.00 : 14006: 4c 39 c0 cmp %r8,%rax 0.00 : 14009: 73 a5 jae 13fb0 <_dl_discover_osversion+0x50> 0.00 : 1400b: 4c 89 f6 mov %r14,%rsi 0.00 : 1400e: 4c 89 df mov %r11,%rdi 0.00 : 14011: 4c 89 d1 mov %r10,%rcx 100.00 : 14014: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 14016: 75 c8 jne 13fe0 <_dl_discover_osversion+0x80> 0.00 : 14018: 41 8b 46 14 mov 0x14(%r14),%eax 0.00 : 1401c: 48 81 c4 d8 01 00 00 add $0x1d8,%rsp 0.00 : 14023: 5b pop %rbx 0.00 : 14024: 5d pop %rbp 0.00 : 14025: 41 5c pop %r12 0.00 : 14027: 41 5d pop %r13 0.00 : 14029: 41 5e pop %r14 0.00 : 1402b: 41 5f pop %r15 0.00 : 1402d: c3 retq 0.00 : 1402e: 66 90 xchg %ax,%ax 0.00 : 14030: 48 89 e7 mov %rsp,%rdi 0.00 : 14033: e8 58 22 00 00 callq 16290 <__uname> 0.00 : 14038: 85 c0 test %eax,%eax 0.00 : 1403a: 75 7d jne 140b9 <_dl_discover_osversion+0x159> 0.00 : 1403c: 48 8d 84 24 82 00 00 lea 0x82(%rsp),%rax 0.00 : 14043: 00 0.00 : 14044: 48 89 c2 mov %rax,%rdx 0.00 : 14047: 31 f6 xor %esi,%esi 0.00 : 14049: 31 ff xor %edi,%edi 0.00 : 1404b: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 1404e: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 14051: 3c 09 cmp $0x9,%al 0.00 : 14053: 77 4c ja 140a1 <_dl_discover_osversion+0x141> 0.00 : 14055: 4c 8d 42 01 lea 0x1(%rdx),%r8 0.00 : 14059: 0f b6 52 01 movzbl 0x1(%rdx),%edx 0.00 : 1405d: 0f be c1 movsbl %cl,%eax 0.00 : 14060: 8d 48 d0 lea -0x30(%rax),%ecx 0.00 : 14063: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 14066: 3c 09 cmp $0x9,%al 0.00 : 14068: 77 1f ja 14089 <_dl_discover_osversion+0x129> 0.00 : 1406a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 14070: 8d 04 89 lea (%rcx,%rcx,4),%eax 0.00 : 14073: 0f be d2 movsbl %dl,%edx 0.00 : 14076: 49 83 c0 01 add $0x1,%r8 0.00 : 1407a: 8d 4c 42 d0 lea -0x30(%rdx,%rax,2),%ecx 0.00 : 1407e: 41 0f b6 10 movzbl (%r8),%edx 0.00 : 14082: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 14085: 3c 09 cmp $0x9,%al 0.00 : 14087: 76 e7 jbe 14070 <_dl_discover_osversion+0x110> 0.00 : 14089: c1 e6 08 shl $0x8,%esi 0.00 : 1408c: 83 c7 01 add $0x1,%edi 0.00 : 1408f: 09 ce or %ecx,%esi 0.00 : 14091: 80 fa 2e cmp $0x2e,%dl 0.00 : 14094: 75 0b jne 140a1 <_dl_discover_osversion+0x141> 0.00 : 14096: 83 ff 03 cmp $0x3,%edi 0.00 : 14099: 74 17 je 140b2 <_dl_discover_osversion+0x152> 0.00 : 1409b: 49 8d 50 01 lea 0x1(%r8),%rdx 0.00 : 1409f: eb aa jmp 1404b <_dl_discover_osversion+0xeb> 0.00 : 140a1: 83 ff 02 cmp $0x2,%edi 0.00 : 140a4: 7f 0c jg 140b2 <_dl_discover_osversion+0x152> 0.00 : 140a6: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 140ab: 29 f9 sub %edi,%ecx 0.00 : 140ad: c1 e1 03 shl $0x3,%ecx 0.00 : 140b0: d3 e6 shl %cl,%esi 0.00 : 140b2: 89 f0 mov %esi,%eax 0.00 : 140b4: e9 63 ff ff ff jmpq 1401c <_dl_discover_osversion+0xbc> 0.00 : 140b9: 48 8d 3d 03 61 00 00 lea 0x6103(%rip),%rdi # 1a1c3 <__PRETTY_FUNCTION__.12953+0xa> 0.00 : 140c0: 31 f6 xor %esi,%esi 0.00 : 140c2: 31 c0 xor %eax,%eax 0.00 : 140c4: e8 87 1e 00 00 callq 15f50 <__libc_open> 0.00 : 140c9: 85 c0 test %eax,%eax 0.00 : 140cb: 89 c5 mov %eax,%ebp 0.00 : 140cd: 79 0a jns 140d9 <_dl_discover_osversion+0x179> 0.00 : 140cf: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 140d4: e9 43 ff ff ff jmpq 1401c <_dl_discover_osversion+0xbc> 0.00 : 140d9: 4c 8d a4 24 90 01 00 lea 0x190(%rsp),%r12 0.00 : 140e0: 00 0.00 : 140e1: ba 40 00 00 00 mov $0x40,%edx 0.00 : 140e6: 89 c7 mov %eax,%edi 0.00 : 140e8: 4c 89 e6 mov %r12,%rsi 0.00 : 140eb: e8 c0 1e 00 00 callq 15fb0 <__libc_read> 0.00 : 140f0: 89 ef mov %ebp,%edi 0.00 : 140f2: 48 89 c3 mov %rax,%rbx 0.00 : 140f5: e8 86 1e 00 00 callq 15f80 <__close> 0.00 : 140fa: 48 85 db test %rbx,%rbx 0.00 : 140fd: 7e d0 jle 140cf <_dl_discover_osversion+0x16f> 0.00 : 140ff: b8 3f 00 00 00 mov $0x3f,%eax 0.00 : 14104: 48 83 fb 3f cmp $0x3f,%rbx 0.00 : 14108: 48 0f 4e c3 cmovle %rbx,%rax 0.00 : 1410c: c6 84 04 90 01 00 00 movb $0x0,0x190(%rsp,%rax,1) 0.00 : 14113: 00 0.00 : 14114: 4c 89 e0 mov %r12,%rax 0.00 : 14117: e9 28 ff ff ff jmpq 14044 <_dl_discover_osversion+0xe4> Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 100.00 /home/Computational/mark/src/dbt3/src/dbgen/driver.c:314 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004029f0 : : /* : * generate a particular table : */ : void : gen_tbl (int tnum, DSS_HUGE start, DSS_HUGE count, long upd_num) : { 0.00 : 4029f0: 41 57 push %r15 0.00 : 4029f2: 49 89 cf mov %rcx,%r15 0.00 : 4029f5: 41 56 push %r14 0.00 : 4029f7: 41 55 push %r13 0.00 : 4029f9: 49 89 d5 mov %rdx,%r13 0.00 : 4029fc: 41 54 push %r12 0.00 : 4029fe: 41 89 fc mov %edi,%r12d 0.00 : 402a01: 55 push %rbp 0.00 : 402a02: 53 push %rbx 0.00 : 402a03: 48 81 ec 58 07 00 00 sub $0x758,%rsp : : DSS_HUGE rows_per_segment=0; : DSS_HUGE rows_this_segment=-1; : DSS_HUGE residual_rows=0; : : if (insert_segments) 0.00 : 402a0a: 8b 05 08 8c e0 12 mov 0x12e08c08(%rip),%eax # 1320b618 0.00 : 402a10: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 402a17: 00 00 0.00 : 402a19: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 402a20: 00 00 0.00 : 402a22: 85 c0 test %eax,%eax 0.00 : 402a24: 74 21 je 402a47 : { : rows_per_segment = count / insert_segments; 0.00 : 402a26: 48 63 c8 movslq %eax,%rcx 0.00 : 402a29: 48 89 d0 mov %rdx,%rax 0.00 : 402a2c: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 402a30: 48 f7 f9 idiv %rcx : residual_rows = count - (rows_per_segment * insert_segments); 0.00 : 402a33: 4c 89 ea mov %r13,%rdx : DSS_HUGE rows_this_segment=-1; : DSS_HUGE residual_rows=0; : : if (insert_segments) : { : rows_per_segment = count / insert_segments; 0.00 : 402a36: 48 89 44 24 08 mov %rax,0x8(%rsp) : residual_rows = count - (rows_per_segment * insert_segments); 0.00 : 402a3b: 48 0f af c1 imul %rcx,%rax 0.00 : 402a3f: 48 29 c2 sub %rax,%rdx 0.00 : 402a42: 48 89 54 24 18 mov %rdx,0x18(%rsp) : } : : for (i = start; count; count--, i++) 0.00 : 402a47: 4d 85 ed test %r13,%r13 0.00 : 402a4a: 0f 84 70 02 00 00 je 402cc0 : case PSUPP: : case PART: : case PART_PSUPP: : mk_part (i, &part); : if (set_seeds == 0) : tdefs[tnum].loader(&part, upd_num); 0.00 : 402a50: 49 63 c4 movslq %r12d,%rax : for (i = start; count; count--, i++) : { : LIFENOISE (1000, i); : row_start(tnum); : : switch (tnum) 0.00 : 402a53: 44 89 e1 mov %r12d,%ecx : { : rows_per_segment = count / insert_segments; : residual_rows = count - (rows_per_segment * insert_segments); : } : : for (i = start; count; count--, i++) 0.00 : 402a56: 48 89 f3 mov %rsi,%rbx : case PSUPP: : case PART: : case PART_PSUPP: : mk_part (i, &part); : if (set_seeds == 0) : tdefs[tnum].loader(&part, upd_num); 0.00 : 402a59: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 402a60: 00 0.00 : 402a61: 49 89 c6 mov %rax,%r14 : { : rows_per_segment = count / insert_segments; : residual_rows = count - (rows_per_segment * insert_segments); : } : : for (i = start; count; count--, i++) 0.00 : 402a64: 48 c7 44 24 10 ff ff movq $0xffffffffffffffff,0x10(%rsp) 0.00 : 402a6b: ff ff : case PSUPP: : case PART: : case PART_PSUPP: : mk_part (i, &part); : if (set_seeds == 0) : tdefs[tnum].loader(&part, upd_num); 0.00 : 402a6d: 49 c1 e6 06 shl $0x6,%r14 : for (i = start; count; count--, i++) : { : LIFENOISE (1000, i); : row_start(tnum); : : switch (tnum) 0.00 : 402a71: 48 89 0c 24 mov %rcx,(%rsp) : case PSUPP: : case PART: : case PART_PSUPP: : mk_part (i, &part); : if (set_seeds == 0) : tdefs[tnum].loader(&part, upd_num); 0.00 : 402a75: 49 29 d6 sub %rdx,%r14 0.00 : 402a78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 402a7f: 00 : residual_rows = count - (rows_per_segment * insert_segments); : } : : for (i = start; count; count--, i++) : { : LIFENOISE (1000, i); 0.00 : 402a80: 48 83 3d 40 8d e0 12 cmpq $0x0,0x12e08d40(%rip) # 1320b7c8 0.00 : 402a87: 00 0.00 : 402a88: 7e 2f jle 402ab9 0.00 : 402a8a: 48 89 d8 mov %rbx,%rax 0.00 : 402a8d: 48 8b 3d 94 80 20 00 mov 0x208094(%rip),%rdi # 60ab28 0.00 : 402a94: be 43 7a 40 00 mov $0x407a43,%esi 0.00 : 402a99: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 402a9d: 48 c1 e8 3e shr $0x3e,%rax 0.00 : 402aa1: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 402aa5: 83 e2 03 and $0x3,%edx 0.00 : 402aa8: 48 29 c2 sub %rax,%rdx 0.00 : 402aab: 31 c0 xor %eax,%eax 0.00 : 402aad: 0f be 92 38 7f 40 00 movsbl 0x407f38(%rdx),%edx 0.00 : 402ab4: e8 a7 e3 ff ff callq 400e60 : row_start(tnum); 0.00 : 402ab9: 44 89 e7 mov %r12d,%edi 0.00 : 402abc: e8 6f 19 00 00 callq 404430 : : switch (tnum) 0.00 : 402ac1: 41 83 fc 09 cmp $0x9,%r12d 0.00 : 402ac5: 77 39 ja 402b00 0.00 : 402ac7: 48 8b 04 24 mov (%rsp),%rax 0.00 : 402acb: ff 24 c5 e8 7e 40 00 jmpq *0x407ee8(,%rax,8) 0.00 : 402ad2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : mk_nation (i, &code); : if (set_seeds == 0) : tdefs[tnum].loader(&code, 0); : break; : case REGION: : mk_region (i, &code); 0.00 : 402ad8: 48 8d b4 24 90 06 00 lea 0x690(%rsp),%rsi 0.00 : 402adf: 00 0.00 : 402ae0: 48 89 df mov %rbx,%rdi 0.00 : 402ae3: e8 08 e6 ff ff callq 4010f0 : if (set_seeds == 0) 0.00 : 402ae8: 44 8b 05 a9 8b e0 12 mov 0x12e08ba9(%rip),%r8d # 1320b698 0.00 : 402aef: 45 85 c0 test %r8d,%r8d 0.00 : 402af2: 0f 84 48 02 00 00 je 402d40 0.00 : 402af8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 402aff: 00 : tdefs[tnum].loader(&code, 0); : break; : } : row_stop(tnum); 0.00 : 402b00: 44 89 e7 mov %r12d,%edi 0.00 : 402b03: e8 c8 1a 00 00 callq 4045d0 : if (set_seeds && (i % tdefs[tnum].base) < 2) 0.00 : 402b08: 8b 3d 8a 8b e0 12 mov 0x12e08b8a(%rip),%edi # 1320b698 0.00 : 402b0e: 85 ff test %edi,%edi 0.00 : 402b10: 74 1b je 402b2d 0.00 : 402b12: 48 89 da mov %rbx,%rdx 0.00 : 402b15: 48 89 d8 mov %rbx,%rax 0.00 : 402b18: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 402b1c: 49 f7 be 90 a2 60 00 idivq 0x60a290(%r14) 0.00 : 402b23: 48 83 ea 01 sub $0x1,%rdx 0.00 : 402b27: 0f 8e bb 01 00 00 jle 402ce8 : { : rows_per_segment = count / insert_segments; : residual_rows = count - (rows_per_segment * insert_segments); : } : : for (i = start; count; count--, i++) 0.00 : 402b2d: 49 83 ed 01 sub $0x1,%r13 0.00 : 402b31: 0f 84 89 01 00 00 je 402cc0 0.00 : 402b37: 48 83 c3 01 add $0x1,%rbx 0.00 : 402b3b: e9 40 ff ff ff jmpq 402a80 : : if (set_seeds == 0) : tdefs[tnum].loader(&o, upd_num); : break; : case SUPP: : mk_supp (i, &supp); 0.00 : 402b40: 48 8d b4 24 b0 05 00 lea 0x5b0(%rsp),%rsi 0.00 : 402b47: 00 0.00 : 402b48: 48 89 df mov %rbx,%rdi 0.00 : 402b4b: e8 10 e9 ff ff callq 401460 : if (set_seeds == 0) 0.00 : 402b50: 8b 2d 42 8b e0 12 mov 0x12e08b42(%rip),%ebp # 1320b698 0.00 : 402b56: 85 ed test %ebp,%ebp 0.00 : 402b58: 75 a6 jne 402b00 : tdefs[tnum].loader(&supp, upd_num); 0.00 : 402b5a: 4c 89 fe mov %r15,%rsi 0.00 : 402b5d: 48 8d bc 24 b0 05 00 lea 0x5b0(%rsp),%rdi 0.00 : 402b64: 00 0.00 : 402b65: 31 c0 xor %eax,%eax 0.00 : 402b67: ff 15 9b 77 20 00 callq *0x20779b(%rip) # 60a308 0.00 : 402b6d: eb 91 jmp 402b00 0.00 : 402b6f: 90 nop : tdefs[tnum].loader(&cust, upd_num); : break; : case PSUPP: : case PART: : case PART_PSUPP: : mk_part (i, &part); 0.00 : 402b70: 48 8d 74 24 20 lea 0x20(%rsp),%rsi 0.00 : 402b75: 48 89 df mov %rbx,%rdi 0.00 : 402b78: e8 03 eb ff ff callq 401680 : if (set_seeds == 0) 0.00 : 402b7d: 44 8b 15 14 8b e0 12 mov 0x12e08b14(%rip),%r10d # 1320b698 0.00 : 402b84: 45 85 d2 test %r10d,%r10d 0.00 : 402b87: 0f 85 73 ff ff ff jne 402b00 : tdefs[tnum].loader(&part, upd_num); 0.00 : 402b8d: 4c 89 fe mov %r15,%rsi 0.00 : 402b90: 48 8d 7c 24 20 lea 0x20(%rsp),%rdi 0.00 : 402b95: 31 c0 xor %eax,%eax 0.00 : 402b97: 41 ff 96 98 a2 60 00 callq *0x60a298(%r14) 0.00 : 402b9e: e9 5d ff ff ff jmpq 402b00 0.00 : 402ba3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : switch (tnum) : { : case LINE: : case ORDER: : case ORDER_LINE: : mk_order (i, &o, upd_num % 10000); 0.00 : 402ba8: 48 b8 4b 59 86 38 d6 movabs $0x346dc5d63886594b,%rax 0.00 : 402baf: c5 6d 34 0.00 : 402bb2: be e0 ad 60 00 mov $0x60ade0,%esi 0.00 : 402bb7: 48 89 df mov %rbx,%rdi 0.00 : 402bba: 49 f7 ef imul %r15 0.00 : 402bbd: 4c 89 f8 mov %r15,%rax 0.00 : 402bc0: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 402bc4: 48 89 d5 mov %rdx,%rbp 0.00 : 402bc7: 4c 89 fa mov %r15,%rdx 0.00 : 402bca: 48 c1 fd 0b sar $0xb,%rbp 0.00 : 402bce: 48 29 c5 sub %rax,%rbp 0.00 : 402bd1: 48 69 c5 10 27 00 00 imul $0x2710,%rbp,%rax /home/Computational/mark/src/dbt3/src/dbgen/driver.c:314 100.00 : 402bd8: 48 29 c2 sub %rax,%rdx 0.00 : 402bdb: e8 70 ee ff ff callq 401a50 : : if (insert_segments && (upd_num > 0)) 0.00 : 402be0: 8b 05 32 8a e0 12 mov 0x12e08a32(%rip),%eax # 1320b618 0.00 : 402be6: 85 c0 test %eax,%eax 0.00 : 402be8: 74 36 je 402c20 0.00 : 402bea: 4d 85 ff test %r15,%r15 0.00 : 402bed: 7e 31 jle 402c20 : if((upd_num / 10000) < residual_rows) 0.00 : 402bef: 48 39 6c 24 18 cmp %rbp,0x18(%rsp) 0.00 : 402bf4: 0f 8e 16 01 00 00 jle 402d10 : { : if((++rows_this_segment) > rows_per_segment) 0.00 : 402bfa: 48 83 44 24 10 01 addq $0x1,0x10(%rsp) 0.00 : 402c00: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : 402c05: 48 39 4c 24 08 cmp %rcx,0x8(%rsp) 0.00 : 402c0a: 7d 14 jge 402c20 : else : { : if((++rows_this_segment) >= rows_per_segment) : { : rows_this_segment=0; : upd_num += 10000; 0.00 : 402c0c: 49 81 c7 10 27 00 00 add $0x2710,%r15 0.00 : 402c13: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 402c1a: 00 00 0.00 : 402c1c: 0f 1f 40 00 nopl 0x0(%rax) : } : } : : if (set_seeds == 0) 0.00 : 402c20: 8b 05 72 8a e0 12 mov 0x12e08a72(%rip),%eax # 1320b698 0.00 : 402c26: 85 c0 test %eax,%eax 0.00 : 402c28: 0f 85 d2 fe ff ff jne 402b00 : tdefs[tnum].loader(&o, upd_num); 0.00 : 402c2e: 4c 89 fe mov %r15,%rsi 0.00 : 402c31: bf e0 ad 60 00 mov $0x60ade0,%edi 0.00 : 402c36: 31 c0 xor %eax,%eax 0.00 : 402c38: 41 ff 96 98 a2 60 00 callq *0x60a298(%r14) 0.00 : 402c3f: e9 bc fe ff ff jmpq 402b00 0.00 : 402c44: 0f 1f 40 00 nopl 0x0(%rax) : mk_supp (i, &supp); : if (set_seeds == 0) : tdefs[tnum].loader(&supp, upd_num); : break; : case CUST: : mk_cust (i, &cust); 0.00 : 402c48: 48 8d b4 24 b0 04 00 lea 0x4b0(%rsp),%rsi 0.00 : 402c4f: 00 0.00 : 402c50: 48 89 df mov %rbx,%rdi 0.00 : 402c53: e8 d8 ec ff ff callq 401930 : if (set_seeds == 0) 0.00 : 402c58: 44 8b 1d 39 8a e0 12 mov 0x12e08a39(%rip),%r11d # 1320b698 0.00 : 402c5f: 45 85 db test %r11d,%r11d 0.00 : 402c62: 0f 85 98 fe ff ff jne 402b00 : tdefs[tnum].loader(&cust, upd_num); 0.00 : 402c68: 4c 89 fe mov %r15,%rsi 0.00 : 402c6b: 48 8d bc 24 b0 04 00 lea 0x4b0(%rsp),%rdi 0.00 : 402c72: 00 0.00 : 402c73: 31 c0 xor %eax,%eax 0.00 : 402c75: ff 15 c5 76 20 00 callq *0x2076c5(%rip) # 60a340 0.00 : 402c7b: e9 80 fe ff ff jmpq 402b00 : mk_part (i, &part); : if (set_seeds == 0) : tdefs[tnum].loader(&part, upd_num); : break; : case NATION: : mk_nation (i, &code); 0.00 : 402c80: 48 8d b4 24 90 06 00 lea 0x690(%rsp),%rsi 0.00 : 402c87: 00 0.00 : 402c88: 48 89 df mov %rbx,%rdi 0.00 : 402c8b: e8 c0 e4 ff ff callq 401150 : if (set_seeds == 0) 0.00 : 402c90: 44 8b 0d 01 8a e0 12 mov 0x12e08a01(%rip),%r9d # 1320b698 0.00 : 402c97: 45 85 c9 test %r9d,%r9d 0.00 : 402c9a: 0f 85 60 fe ff ff jne 402b00 : tdefs[tnum].loader(&code, 0); 0.00 : 402ca0: 31 f6 xor %esi,%esi 0.00 : 402ca2: 48 8d bc 24 90 06 00 lea 0x690(%rsp),%rdi 0.00 : 402ca9: 00 0.00 : 402caa: 31 c0 xor %eax,%eax 0.00 : 402cac: ff 15 a6 77 20 00 callq *0x2077a6(%rip) # 60a458 0.00 : 402cb2: e9 49 fe ff ff jmpq 402b00 0.00 : 402cb7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 402cbe: 00 00 : { : printf("\nSeeds for %s at rowcount %lld\n", tdefs[tnum].comment, i); : dump_seeds(tnum); : } : } : completed |= 1 << tnum; 0.00 : 402cc0: 44 89 e1 mov %r12d,%ecx 0.00 : 402cc3: b8 01 00 00 00 mov $0x1,%eax 0.00 : 402cc8: d3 e0 shl %cl,%eax 0.00 : 402cca: 09 05 0c 81 20 00 or %eax,0x20810c(%rip) # 60addc : } 0.00 : 402cd0: 48 81 c4 58 07 00 00 add $0x758,%rsp 0.00 : 402cd7: 5b pop %rbx 0.00 : 402cd8: 5d pop %rbp 0.00 : 402cd9: 41 5c pop %r12 0.00 : 402cdb: 41 5d pop %r13 0.00 : 402cdd: 41 5e pop %r14 0.00 : 402cdf: 41 5f pop %r15 0.00 : 402ce1: c3 retq 0.00 : 402ce2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : } : row_stop(tnum); : if (set_seeds && (i % tdefs[tnum].base) < 2) : { : printf("\nSeeds for %s at rowcount %lld\n", tdefs[tnum].comment, i); 0.00 : 402ce8: 49 8b b6 88 a2 60 00 mov 0x60a288(%r14),%rsi 0.00 : 402cef: 48 89 da mov %rbx,%rdx 0.00 : 402cf2: bf e0 77 40 00 mov $0x4077e0,%edi 0.00 : 402cf7: 31 c0 xor %eax,%eax 0.00 : 402cf9: e8 02 e1 ff ff callq 400e00 : dump_seeds(tnum); 0.00 : 402cfe: 44 89 e7 mov %r12d,%edi 0.00 : 402d01: e8 7a 18 00 00 callq 404580 0.00 : 402d06: e9 22 fe ff ff jmpq 402b2d 0.00 : 402d0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : upd_num += 10000; : } : } : else : { : if((++rows_this_segment) >= rows_per_segment) 0.00 : 402d10: 48 83 44 24 10 01 addq $0x1,0x10(%rsp) 0.00 : 402d16: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 402d1b: 48 39 44 24 08 cmp %rax,0x8(%rsp) 0.00 : 402d20: 0f 8f fa fe ff ff jg 402c20 : { : rows_this_segment=0; : upd_num += 10000; 0.00 : 402d26: 49 81 c7 10 27 00 00 add $0x2710,%r15 0.00 : 402d2d: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 402d34: 00 00 0.00 : 402d36: e9 e5 fe ff ff jmpq 402c20 0.00 : 402d3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : tdefs[tnum].loader(&code, 0); : break; : case REGION: : mk_region (i, &code); : if (set_seeds == 0) : tdefs[tnum].loader(&code, 0); 0.00 : 402d40: 31 f6 xor %esi,%esi 0.00 : 402d42: 48 8d bc 24 90 06 00 lea 0x690(%rsp),%rdi 0.00 : 402d49: 00 0.00 : 402d4a: 31 c0 xor %eax,%eax 0.00 : 402d4c: ff 15 3e 77 20 00 callq *0x20773e(%rip) # 60a490 0.00 : 402d52: e9 a9 fd ff ff jmpq 402b00 Sorted summary for file /usr/bin/bc ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /usr/bin/bc ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000401280 : ??:0 100.00 : 401280: ff 25 d2 1d 21 00 jmpq *0x211dd2(%rip) # 613058 <_fini+0x206840> 0.00 : 401286: 68 0b 00 00 00 pushq $0xb 0.00 : 40128b: e9 30 ff ff ff jmpq 4011c0 <_init+0x18> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000416840 <__errno_location@plt>: ??:0 100.00 : 416840: ff 25 2a 3d 27 00 jmpq *0x273d2a(%rip) # 68a570 0.00 : 416846: 68 ab 00 00 00 pushq $0xab 0.00 : 41684b: e9 30 f5 ff ff jmpq 415d80 <_init+0x20> Sorted summary for file /bin/bash ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042b910 : 0.00 : 42b910: 85 f6 test %esi,%esi 0.00 : 42b912: 53 push %rbx 0.00 : 42b913: 48 89 fb mov %rdi,%rbx 0.00 : 42b916: 74 38 je 42b950 0.00 : 42b918: 48 8b 35 69 90 26 00 mov 0x269069(%rip),%rsi # 694988 0.00 : 42b91f: 48 85 f6 test %rsi,%rsi 0.00 : 42b922: 74 36 je 42b95a 0.00 : 42b924: 31 d2 xor %edx,%edx 0.00 : 42b926: 48 89 df mov %rbx,%rdi 0.00 : 42b929: e8 e2 8d 01 00 callq 444710 0.00 : 42b92e: 48 85 c0 test %rax,%rax 0.00 : 42b931: 74 27 je 42b95a 0.00 : 42b933: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 42b937: 48 85 ff test %rdi,%rdi 0.00 : 42b93a: 74 1e je 42b95a 0.00 : 42b93c: 48 8b 47 18 mov 0x18(%rdi),%rax 0.00 : 42b940: 48 85 c0 test %rax,%rax 0.00 : 42b943: 74 33 je 42b978 0.00 : 42b945: 5b pop %rbx 0.00 : 42b946: 49 89 c3 mov %rax,%r11 0.00 : 42b949: 41 ff e3 jmpq *%r11 0.00 : 42b94c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 42b950: 8b 0d ce bb 26 00 mov 0x26bbce(%rip),%ecx # 697524 0.00 : 42b956: 85 c9 test %ecx,%ecx 0.00 : 42b958: 74 26 je 42b980 ??:0 50.00 : 42b95a: 48 8b 35 07 90 26 00 mov 0x269007(%rip),%rsi # 694968 50.00 : 42b961: 48 89 df mov %rbx,%rdi 0.00 : 42b964: e8 47 ff ff ff callq 42b8b0 0.00 : 42b969: 48 85 c0 test %rax,%rax 0.00 : 42b96c: 48 89 c7 mov %rax,%rdi 0.00 : 42b96f: 75 cb jne 42b93c 0.00 : 42b971: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 42b978: 48 89 f8 mov %rdi,%rax 0.00 : 42b97b: 5b pop %rbx 0.00 : 42b97c: c3 retq 0.00 : 42b97d: 0f 1f 00 nopl (%rax) 0.00 : 42b980: 8b 15 12 b2 26 00 mov 0x26b212(%rip),%edx # 696b98 0.00 : 42b986: 85 d2 test %edx,%edx 0.00 : 42b988: 74 d0 je 42b95a 0.00 : 42b98a: eb 8c jmp 42b918 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007d6c0 <__default_morecore>: 0.00 : 7d6c0: 48 83 ec 08 sub $0x8,%rsp ??:0 100.00 : 7d6c4: e8 47 5c 05 00 callq d3310 <__sbrk> 0.00 : 7d6c9: ba 00 00 00 00 mov $0x0,%edx 0.00 : 7d6ce: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 7d6d2: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 7d6d6: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000dc030 <__send>: 0.00 : dc030: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) ??:0 100.00 : dc035: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : dc03a: 89 cb mov %ecx,%ebx 0.00 : dc03c: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : dc041: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : dc046: 49 89 f4 mov %rsi,%r12 0.00 : dc049: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : dc04e: 48 83 ec 28 sub $0x28,%rsp 0.00 : dc052: 8b 05 5c b6 29 00 mov 0x29b65c(%rip),%eax # 3776b4 <__libc_multiple_threads> 0.00 : dc058: 41 89 fd mov %edi,%r13d 0.00 : dc05b: 48 89 d5 mov %rdx,%rbp 0.00 : dc05e: 85 c0 test %eax,%eax 0.00 : dc060: 75 3e jne dc0a0 <__send+0x70> 0.00 : dc062: 45 31 c9 xor %r9d,%r9d 0.00 : dc065: 45 31 c0 xor %r8d,%r8d 0.00 : dc068: 4c 63 d1 movslq %ecx,%r10 0.00 : dc06b: 48 63 ff movslq %edi,%rdi 0.00 : dc06e: b8 2c 00 00 00 mov $0x2c,%eax 0.00 : dc073: 0f 05 syscall 0.00 : dc075: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : dc07b: 48 89 c3 mov %rax,%rbx 0.00 : dc07e: 77 56 ja dc0d6 <__send+0xa6> 0.00 : dc080: 48 89 d8 mov %rbx,%rax 0.00 : dc083: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : dc088: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : dc08c: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : dc091: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : dc096: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : dc09b: 48 83 c4 28 add $0x28,%rsp 0.00 : dc09f: c3 retq 0.00 : dc0a0: e8 8b c1 00 00 callq e8230 <__libc_enable_asynccancel> 0.00 : dc0a5: 45 31 c9 xor %r9d,%r9d 0.00 : dc0a8: 41 89 c6 mov %eax,%r14d 0.00 : dc0ab: 45 31 c0 xor %r8d,%r8d 0.00 : dc0ae: 4c 63 d3 movslq %ebx,%r10 0.00 : dc0b1: 48 89 ea mov %rbp,%rdx 0.00 : dc0b4: 4c 89 e6 mov %r12,%rsi 0.00 : dc0b7: 49 63 fd movslq %r13d,%rdi 0.00 : dc0ba: b8 2c 00 00 00 mov $0x2c,%eax 0.00 : dc0bf: 0f 05 syscall 0.00 : dc0c1: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : dc0c7: 48 89 c3 mov %rax,%rbx 0.00 : dc0ca: 77 2a ja dc0f6 <__send+0xc6> 0.00 : dc0cc: 44 89 f7 mov %r14d,%edi 0.00 : dc0cf: e8 bc c1 00 00 callq e8290 <__libc_disable_asynccancel> 0.00 : dc0d4: eb aa jmp dc080 <__send+0x50> 0.00 : dc0d6: 89 c1 mov %eax,%ecx 0.00 : dc0d8: 48 8b 15 59 5d 29 00 mov 0x295d59(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : dc0df: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : dc0e6: 00 00 0.00 : dc0e8: f7 d9 neg %ecx 0.00 : dc0ea: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : dc0f1: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : dc0f4: eb 8a jmp dc080 <__send+0x50> 0.00 : dc0f6: 89 c1 mov %eax,%ecx 0.00 : dc0f8: 48 8b 15 39 5d 29 00 mov 0x295d39(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : dc0ff: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : dc106: 00 00 0.00 : dc108: f7 d9 neg %ecx 0.00 : dc10a: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : dc111: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : dc114: eb b6 jmp dc0cc <__send+0x9c> Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/common.c:326 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000408c90 : : #ifdef WIN32 : EnterCriticalSection(&cancelConnLock); : #endif : : /* Free the old one if we have one */ : oldCancelConn = cancelConn; /home/Computational/mark/src/postgres-andres/src/bin/psql/common.c:326 100.00 : 408c90: 48 8b 3d 41 20 26 00 mov 0x262041(%rip),%rdi # 66acd8 : * : * Set cancelConn to point to the current database connection. : */ : void : SetCancelConn(void) : { 0.00 : 408c97: 55 push %rbp : #endif : : /* Free the old one if we have one */ : oldCancelConn = cancelConn; : /* be sure handle_sigint doesn't use pointer while freeing */ : cancelConn = NULL; 0.00 : 408c98: 48 c7 05 35 20 26 00 movq $0x0,0x262035(%rip) # 66acd8 0.00 : 408c9f: 00 00 00 00 : * : * Set cancelConn to point to the current database connection. : */ : void : SetCancelConn(void) : { 0.00 : 408ca3: 48 89 e5 mov %rsp,%rbp : /* Free the old one if we have one */ : oldCancelConn = cancelConn; : /* be sure handle_sigint doesn't use pointer while freeing */ : cancelConn = NULL; : : if (oldCancelConn != NULL) 0.00 : 408ca6: 48 85 ff test %rdi,%rdi 0.00 : 408ca9: 74 05 je 408cb0 : PQfreeCancel(oldCancelConn); 0.00 : 408cab: e8 e0 b0 ff ff callq 403d90 : : cancelConn = PQgetCancel(pset.db); 0.00 : 408cb0: 48 8b 3d e9 23 26 00 mov 0x2623e9(%rip),%rdi # 66b0a0 0.00 : 408cb7: e8 94 b3 ff ff callq 404050 0.00 : 408cbc: 48 89 05 15 20 26 00 mov %rax,0x262015(%rip) # 66acd8 : : #ifdef WIN32 : LeaveCriticalSection(&cancelConnLock); : #endif : } 0.00 : 408cc3: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:4015 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042c6d0 : : return _complete_from_query(0, text, state); : } : : static char * : complete_from_schema_query(const char *text, int state) : { 0.00 : 42c6d0: 55 push %rbp : return _complete_from_query(1, text, state); 0.00 : 42c6d1: 89 f2 mov %esi,%edx 0.00 : 42c6d3: 48 89 fe mov %rdi,%rsi 0.00 : 42c6d6: bf 01 00 00 00 mov $0x1,%edi : return _complete_from_query(0, text, state); : } : : static char * : complete_from_schema_query(const char *text, int state) : { 0.00 : 42c6db: 48 89 e5 mov %rsp,%rbp : return _complete_from_query(1, text, state); : } 0.00 : 42c6de: c9 leaveq : } : : static char * : complete_from_schema_query(const char *text, int state) : { : return _complete_from_query(1, text, state); /home/Computational/mark/src/postgres-andres/src/bin/psql/tab-complete.c:4015 100.00 : 42c6df: e9 8c fb ff ff jmpq 42c270 <_complete_from_query> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:229 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046e8a0 : : * return whether the scan key is consistent with the index tuple's min/max : * values. Return true if so, false otherwise. : */ : Datum : minmaxConsistent(PG_FUNCTION_ARGS) : { 0.00 : 46e8a0: 55 push %rbp 0.00 : 46e8a1: 48 89 e5 mov %rsp,%rbp 0.00 : 46e8a4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 46e8a8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 46e8ac: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 46e8b0: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 46e8b4: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 46e8b8: 48 83 ec 30 sub $0x30,%rsp : BrinDesc *bdesc = (BrinDesc *) PG_GETARG_POINTER(0); : BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1); : ScanKey key = (ScanKey) PG_GETARG_POINTER(2); 0.00 : 46e8bc: 48 8b 5f 30 mov 0x30(%rdi),%rbx : * values. Return true if so, false otherwise. : */ : Datum : minmaxConsistent(PG_FUNCTION_ARGS) : { : BrinDesc *bdesc = (BrinDesc *) PG_GETARG_POINTER(0); 0.00 : 46e8c0: 4c 8b 6f 20 mov 0x20(%rdi),%r13 : BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1); 0.00 : 46e8c4: 4c 8b 67 28 mov 0x28(%rdi),%r12 : ScanKey key = (ScanKey) PG_GETARG_POINTER(2); : Oid colloid = PG_GET_COLLATION(); 0.00 : 46e8c8: 44 8b 77 18 mov 0x18(%rdi),%r14d : Datum matches; : : Assert(key->sk_attno == column->attno); : : /* handle IS NULL/IS NOT NULL tests */ : if (key->sk_flags & SK_ISNULL) 0.00 : 46e8cc: 8b 03 mov (%rbx),%eax 0.00 : 46e8ce: a8 01 test $0x1,%al 0.00 : 46e8d0: 74 2e je 46e900 : { : if (key->sk_flags & SK_SEARCHNULL) 0.00 : 46e8d2: a8 40 test $0x40,%al 0.00 : 46e8d4: 74 7a je 46e950 0.00 : 46e8d6: 31 c0 xor %eax,%eax 0.00 : 46e8d8: 66 41 83 7c 24 02 00 cmpw $0x0,0x2(%r12) 0.00 : 46e8df: 0f 95 c0 setne %al : matches = 0; : break; : } : : PG_RETURN_DATUM(matches); : } 0.00 : 46e8e2: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 46e8e6: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 46e8ea: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 46e8ee: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 46e8f2: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 46e8f6: c9 leaveq 0.00 : 46e8f7: c3 retq 0.00 : 46e8f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46e8ff: 00 : PG_RETURN_BOOL(!column->allnulls); : } : : attno = key->sk_attno; : value = key->sk_argument; : switch (key->sk_strategy) 0.00 : 46e900: 66 83 7b 06 05 cmpw $0x5,0x6(%rbx) : */ : Assert(key->sk_flags & SK_SEARCHNOTNULL); : PG_RETURN_BOOL(!column->allnulls); : } : : attno = key->sk_attno; 0.00 : 46e905: 0f b7 53 04 movzwl 0x4(%rbx),%edx : value = key->sk_argument; 0.00 : 46e909: 4c 8b 7b 40 mov 0x40(%rbx),%r15 : switch (key->sk_strategy) 0.00 : 46e90d: 76 31 jbe 46e940 : PROCNUM_GREATER), : colloid, column->values[1], value); : break; : default: : /* shouldn't happen */ : elog(ERROR, "invalid strategy number %d", key->sk_strategy); 0.00 : 46e90f: ba d0 f5 7a 00 mov $0x7af5d0,%edx 0.00 : 46e914: be eb 00 00 00 mov $0xeb,%esi 0.00 : 46e919: bf 6a f5 7a 00 mov $0x7af56a,%edi 0.00 : 46e91e: e8 fd ca 30 00 callq 77b420 0.00 : 46e923: 0f b7 53 06 movzwl 0x6(%rbx),%edx 0.00 : 46e927: be 78 f5 7a 00 mov $0x7af578,%esi 0.00 : 46e92c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46e931: 31 c0 xor %eax,%eax 0.00 : 46e933: e8 f8 c8 30 00 callq 77b230 0.00 : 46e938: e8 93 ab ff ff callq 4694d0 0.00 : 46e93d: 0f 1f 00 nopl (%rax) : PG_RETURN_BOOL(!column->allnulls); : } : : attno = key->sk_attno; : value = key->sk_argument; : switch (key->sk_strategy) 0.00 : 46e940: 0f b7 43 06 movzwl 0x6(%rbx),%eax 0.00 : 46e944: ff 24 c5 a0 f5 7a 00 jmpq *0x7af5a0(,%rax,8) 0.00 : 46e94b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * For IS NOT NULL, we can only skip ranges that are known to have : * only nulls. : */ : Assert(key->sk_flags & SK_SEARCHNOTNULL); : PG_RETURN_BOOL(!column->allnulls); 0.00 : 46e950: 31 c0 xor %eax,%eax 0.00 : 46e952: 41 80 7c 24 03 00 cmpb $0x0,0x3(%r12) 0.00 : 46e958: 0f 94 c0 sete %al : matches = 0; : break; : } : : PG_RETURN_DATUM(matches); : } 0.00 : 46e95b: eb 85 jmp 46e8e2 0.00 : 46e95d: 0f 1f 00 nopl (%rax) : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, : PROCNUM_GREATEREQUAL), : colloid, column->values[1], value); : break; : case BTGreaterStrategyNumber: : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, 0.00 : 46e960: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e965: 0f b7 f2 movzwl %dx,%esi 0.00 : 46e968: ba 08 00 00 00 mov $0x8,%edx 0.00 : 46e96d: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 46e971: 4c 89 ef mov %r13,%rdi 0.00 : 46e974: e8 07 fb ff ff callq 46e480 0.00 : 46e979: 4c 89 f9 mov %r15,%rcx 0.00 : 46e97c: 48 89 da mov %rbx,%rdx 0.00 : 46e97f: 44 89 f6 mov %r14d,%esi : matches = 0; : break; : } : : PG_RETURN_DATUM(matches); : } 0.00 : 46e982: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 46e986: 4c 8b 65 e0 mov -0x20(%rbp),%r12 : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, : PROCNUM_GREATEREQUAL), : colloid, column->values[1], value); : break; : case BTGreaterStrategyNumber: : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, 0.00 : 46e98a: 48 89 c7 mov %rax,%rdi : matches = 0; : break; : } : : PG_RETURN_DATUM(matches); : } 0.00 : 46e98d: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 46e991: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 46e995: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 46e999: c9 leaveq : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, : PROCNUM_GREATEREQUAL), : colloid, column->values[1], value); : break; : case BTGreaterStrategyNumber: : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:229 100.00 : 46e99a: e9 91 f6 30 00 jmpq 77e030 0.00 : 46e99f: 90 nop : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, : PROCNUM_GREATEREQUAL), : colloid, column->values[1], value); : break; : case BTGreaterEqualStrategyNumber: : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, 0.00 : 46e9a0: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e9a5: 0f b7 f2 movzwl %dx,%esi 0.00 : 46e9a8: ba 07 00 00 00 mov $0x7,%edx 0.00 : 46e9ad: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 46e9b1: eb be jmp 46e971 0.00 : 46e9b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * In the equality case (WHERE col = someval), we want to return : * the current page range if the minimum value in the range <= : * scan key, and the maximum value >= scan key. : */ : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, 0.00 : 46e9b8: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e9bd: 0f b7 d2 movzwl %dx,%edx 0.00 : 46e9c0: 4c 89 ef mov %r13,%rdi 0.00 : 46e9c3: 48 8b 18 mov (%rax),%rbx 0.00 : 46e9c6: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 46e9c9: ba 06 00 00 00 mov $0x6,%edx 0.00 : 46e9ce: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 46e9d1: e8 aa fa ff ff callq 46e480 0.00 : 46e9d6: 4c 89 f9 mov %r15,%rcx 0.00 : 46e9d9: 48 89 c7 mov %rax,%rdi 0.00 : 46e9dc: 48 89 da mov %rbx,%rdx 0.00 : 46e9df: 44 89 f6 mov %r14d,%esi 0.00 : 46e9e2: e8 49 f6 30 00 callq 77e030 : PROCNUM_LESSEQUAL), : colloid, column->values[0], value); : if (!DatumGetBool(matches)) 0.00 : 46e9e7: 84 c0 test %al,%al 0.00 : 46e9e9: 0f 84 f3 fe ff ff je 46e8e2 : break; : /* max() >= scankey */ : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, 0.00 : 46e9ef: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e9f4: ba 07 00 00 00 mov $0x7,%edx 0.00 : 46e9f9: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 46e9fc: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 46ea00: e9 6c ff ff ff jmpq 46e971 0.00 : 46ea05: 0f 1f 00 nopl (%rax) : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, : PROCNUM_LESS), : colloid, column->values[0], value); : break; : case BTLessEqualStrategyNumber: : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, 0.00 : 46ea08: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46ea0d: 0f b7 f2 movzwl %dx,%esi 0.00 : 46ea10: ba 06 00 00 00 mov $0x6,%edx 0.00 : 46ea15: 48 8b 18 mov (%rax),%rbx 0.00 : 46ea18: e9 54 ff ff ff jmpq 46e971 0.00 : 46ea1d: 0f 1f 00 nopl (%rax) : attno = key->sk_attno; : value = key->sk_argument; : switch (key->sk_strategy) : { : case BTLessStrategyNumber: : matches = FunctionCall2Coll(minmax_get_procinfo(bdesc, attno, 0.00 : 46ea20: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46ea25: 0f b7 f2 movzwl %dx,%esi 0.00 : 46ea28: ba 05 00 00 00 mov $0x5,%edx 0.00 : 46ea2d: 48 8b 18 mov (%rax),%rbx 0.00 : 46ea30: e9 3c ff ff ff jmpq 46e971 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/indexcmds.c:1316 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000056f730 : : * Given the OIDs of a datatype and an access method, find the default : * operator class, if any. Returns InvalidOid if there is none. : */ : Oid : GetDefaultOpClass(Oid type_id, Oid am_id) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/indexcmds.c:1316 100.00 : 56f730: 55 push %rbp 0.00 : 56f731: 48 89 e5 mov %rsp,%rbp 0.00 : 56f734: 41 57 push %r15 : ScanKeyInit(&skey[0], : Anum_pg_opclass_opcmethod, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(am_id)); : : scan = systable_beginscan(rel, OpclassAmNameNspIndexId, true, 0.00 : 56f736: 45 31 ff xor %r15d,%r15d : * Given the OIDs of a datatype and an access method, find the default : * operator class, if any. Returns InvalidOid if there is none. : */ : Oid : GetDefaultOpClass(Oid type_id, Oid am_id) : { 0.00 : 56f739: 41 56 push %r14 0.00 : 56f73b: 41 55 push %r13 0.00 : 56f73d: 41 54 push %r12 0.00 : 56f73f: 41 89 f4 mov %esi,%r12d 0.00 : 56f742: 53 push %rbx : * we need a tiebreaker.) If we find more than one exact match, then : * someone put bogus entries in pg_opclass. : */ : rel = heap_open(OperatorClassRelationId, AccessShareLock); : : ScanKeyInit(&skey[0], 0.00 : 56f743: 48 8d 5d 80 lea -0x80(%rbp),%rbx : * Given the OIDs of a datatype and an access method, find the default : * operator class, if any. Returns InvalidOid if there is none. : */ : Oid : GetDefaultOpClass(Oid type_id, Oid am_id) : { 0.00 : 56f747: 48 83 ec 78 sub $0x78,%rsp : SysScanDesc scan; : HeapTuple tup; : TYPCATEGORY tcategory; : : /* If it's a domain, look at the base type instead */ : type_id = getBaseType(type_id); 0.00 : 56f74b: e8 00 37 20 00 callq 772e50 : : tcategory = TypeCategory(type_id); 0.00 : 56f750: 89 c7 mov %eax,%edi : SysScanDesc scan; : HeapTuple tup; : TYPCATEGORY tcategory; : : /* If it's a domain, look at the base type instead */ : type_id = getBaseType(type_id); 0.00 : 56f752: 41 89 c5 mov %eax,%r13d : : tcategory = TypeCategory(type_id); 0.00 : 56f755: e8 c6 f9 fb ff callq 52f120 : * to specify which one he wants. (The preferred-type special case is a : * kluge for varchar: it's binary-compatible to both text and bpchar, so : * we need a tiebreaker.) If we find more than one exact match, then : * someone put bogus entries in pg_opclass. : */ : rel = heap_open(OperatorClassRelationId, AccessShareLock); 0.00 : 56f75a: be 01 00 00 00 mov $0x1,%esi 0.00 : 56f75f: bf 38 0a 00 00 mov $0xa38,%edi : TYPCATEGORY tcategory; : : /* If it's a domain, look at the base type instead */ : type_id = getBaseType(type_id); : : tcategory = TypeCategory(type_id); 0.00 : 56f764: 88 85 7f ff ff ff mov %al,-0x81(%rbp) : * to specify which one he wants. (The preferred-type special case is a : * kluge for varchar: it's binary-compatible to both text and bpchar, so : * we need a tiebreaker.) If we find more than one exact match, then : * someone put bogus entries in pg_opclass. : */ : rel = heap_open(OperatorClassRelationId, AccessShareLock); 0.00 : 56f76a: e8 f1 e3 f2 ff callq 49db60 : : ScanKeyInit(&skey[0], 0.00 : 56f76f: 45 89 e0 mov %r12d,%r8d 0.00 : 56f772: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 56f777: ba 03 00 00 00 mov $0x3,%edx 0.00 : 56f77c: be 01 00 00 00 mov $0x1,%esi 0.00 : 56f781: 48 89 df mov %rbx,%rdi : * to specify which one he wants. (The preferred-type special case is a : * kluge for varchar: it's binary-compatible to both text and bpchar, so : * we need a tiebreaker.) If we find more than one exact match, then : * someone put bogus entries in pg_opclass. : */ : rel = heap_open(OperatorClassRelationId, AccessShareLock); 0.00 : 56f784: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : : ScanKeyInit(&skey[0], 0.00 : 56f78b: e8 f0 43 f0 ff callq 473b80 : Anum_pg_opclass_opcmethod, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(am_id)); : : scan = systable_beginscan(rel, OpclassAmNameNspIndexId, true, 0.00 : 56f790: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 56f797: 49 89 d9 mov %rbx,%r9 0.00 : 56f79a: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 56f7a0: 31 c9 xor %ecx,%ecx 0.00 : 56f7a2: ba 01 00 00 00 mov $0x1,%edx 0.00 : 56f7a7: be 7e 0a 00 00 mov $0xa7e,%esi 0.00 : 56f7ac: e8 ef 54 f3 ff callq 4a4ca0 0.00 : 56f7b1: 49 89 c6 mov %rax,%r14 : result = HeapTupleGetOid(tup); : } : else if (nexact == 0 && : IsBinaryCoercible(type_id, opclass->opcintype)) : { : if (IsPreferredType(tcategory, opclass->opcintype)) 0.00 : 56f7b4: 0f be 85 7f ff ff ff movsbl -0x81(%rbp),%eax : ScanKeyInit(&skey[0], : Anum_pg_opclass_opcmethod, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(am_id)); : : scan = systable_beginscan(rel, OpclassAmNameNspIndexId, true, 0.00 : 56f7bb: c7 85 64 ff ff ff 00 movl $0x0,-0x9c(%rbp) 0.00 : 56f7c2: 00 00 00 0.00 : 56f7c5: c7 85 68 ff ff ff 00 movl $0x0,-0x98(%rbp) 0.00 : 56f7cc: 00 00 00 0.00 : 56f7cf: c7 85 6c ff ff ff 00 movl $0x0,-0x94(%rbp) 0.00 : 56f7d6: 00 00 00 : result = HeapTupleGetOid(tup); : } : else if (nexact == 0 && : IsBinaryCoercible(type_id, opclass->opcintype)) : { : if (IsPreferredType(tcategory, opclass->opcintype)) 0.00 : 56f7d9: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 56f7df: 90 nop : ObjectIdGetDatum(am_id)); : : scan = systable_beginscan(rel, OpclassAmNameNspIndexId, true, : NULL, 1, skey); : : while (HeapTupleIsValid(tup = systable_getnext(scan))) 0.00 : 56f7e0: 4c 89 f7 mov %r14,%rdi 0.00 : 56f7e3: e8 38 54 f3 ff callq 4a4c20 0.00 : 56f7e8: 48 85 c0 test %rax,%rax 0.00 : 56f7eb: 49 89 c4 mov %rax,%r12 0.00 : 56f7ee: 0f 84 7c 00 00 00 je 56f870 : { : Form_pg_opclass opclass = (Form_pg_opclass) GETSTRUCT(tup); 0.00 : 56f7f4: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 56f7f9: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 56f7fd: 48 8d 1c 10 lea (%rax,%rdx,1),%rbx : : /* ignore altogether if not a default opclass */ : if (!opclass->opcdefault) 0.00 : 56f801: 80 7b 54 00 cmpb $0x0,0x54(%rbx) 0.00 : 56f805: 74 d9 je 56f7e0 : continue; : if (opclass->opcintype == type_id) 0.00 : 56f807: 8b 73 50 mov 0x50(%rbx),%esi 0.00 : 56f80a: 41 39 f5 cmp %esi,%r13d 0.00 : 56f80d: 0f 84 c5 00 00 00 je 56f8d8 : { : nexact++; : result = HeapTupleGetOid(tup); : } : else if (nexact == 0 && 0.00 : 56f813: 45 85 ff test %r15d,%r15d 0.00 : 56f816: 75 c8 jne 56f7e0 0.00 : 56f818: 44 89 ef mov %r13d,%edi 0.00 : 56f81b: e8 80 f6 fb ff callq 52eea0 0.00 : 56f820: 84 c0 test %al,%al 0.00 : 56f822: 74 bc je 56f7e0 : IsBinaryCoercible(type_id, opclass->opcintype)) : { : if (IsPreferredType(tcategory, opclass->opcintype)) 0.00 : 56f824: 8b 73 50 mov 0x50(%rbx),%esi 0.00 : 56f827: 8b bd 60 ff ff ff mov -0xa0(%rbp),%edi 0.00 : 56f82d: e8 ae f8 fb ff callq 52f0e0 0.00 : 56f832: 84 c0 test %al,%al 0.00 : 56f834: 0f 84 d3 00 00 00 je 56f90d : { : ncompatiblepreferred++; 0.00 : 56f83a: 83 85 6c ff ff ff 01 addl $0x1,-0x94(%rbp) : result = HeapTupleGetOid(tup); 0.00 : 56f841: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 56f846: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 56f84a: 0f 84 96 00 00 00 je 56f8e6 : } : else if (ncompatiblepreferred == 0) : { : ncompatible++; : result = HeapTupleGetOid(tup); 0.00 : 56f850: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 56f854: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 56f858: 8b 44 02 fc mov -0x4(%rdx,%rax,1),%eax 0.00 : 56f85c: 89 85 64 ff ff ff mov %eax,-0x9c(%rbp) 0.00 : 56f862: e9 79 ff ff ff jmpq 56f7e0 0.00 : 56f867: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 56f86e: 00 00 : } : } : } : : systable_endscan(scan); 0.00 : 56f870: 4c 89 f7 mov %r14,%rdi 0.00 : 56f873: e8 a8 52 f3 ff callq 4a4b20 : : heap_close(rel, AccessShareLock); 0.00 : 56f878: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 56f87f: be 01 00 00 00 mov $0x1,%esi 0.00 : 56f884: e8 37 e1 f2 ff callq 49d9c0 : : /* raise error if pg_opclass contains inconsistent data */ : if (nexact > 1) 0.00 : 56f889: 41 83 ff 01 cmp $0x1,%r15d 0.00 : 56f88d: 0f 8f 9f 00 00 00 jg 56f932 : ereport(ERROR, : (errcode(ERRCODE_DUPLICATE_OBJECT), : errmsg("there are multiple default operator classes for data type %s", : format_type_be(type_id)))); : : if (nexact == 1 || 0.00 : 56f893: 74 2b je 56f8c0 0.00 : 56f895: 83 bd 6c ff ff ff 01 cmpl $0x1,-0x94(%rbp) 0.00 : 56f89c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 56f8a0: 74 1e je 56f8c0 0.00 : 56f8a2: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax 0.00 : 56f8a8: 85 c0 test %eax,%eax 0.00 : 56f8aa: 74 4c je 56f8f8 0.00 : 56f8ac: c7 85 64 ff ff ff 00 movl $0x0,-0x9c(%rbp) 0.00 : 56f8b3: 00 00 00 0.00 : 56f8b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 56f8bd: 00 00 00 : ncompatiblepreferred == 1 || : (ncompatiblepreferred == 0 && ncompatible == 1)) : return result; : : return InvalidOid; : } 0.00 : 56f8c0: 8b 85 64 ff ff ff mov -0x9c(%rbp),%eax 0.00 : 56f8c6: 48 83 c4 78 add $0x78,%rsp 0.00 : 56f8ca: 5b pop %rbx 0.00 : 56f8cb: 41 5c pop %r12 0.00 : 56f8cd: 41 5d pop %r13 0.00 : 56f8cf: 41 5e pop %r14 0.00 : 56f8d1: 41 5f pop %r15 0.00 : 56f8d3: c9 leaveq 0.00 : 56f8d4: c3 retq 0.00 : 56f8d5: 0f 1f 00 nopl (%rax) : /* ignore altogether if not a default opclass */ : if (!opclass->opcdefault) : continue; : if (opclass->opcintype == type_id) : { : nexact++; 0.00 : 56f8d8: 41 83 c7 01 add $0x1,%r15d : result = HeapTupleGetOid(tup); 0.00 : 56f8dc: f6 40 14 08 testb $0x8,0x14(%rax) 0.00 : 56f8e0: 0f 85 72 ff ff ff jne 56f858 : result = HeapTupleGetOid(tup); : } : else if (ncompatiblepreferred == 0) : { : ncompatible++; : result = HeapTupleGetOid(tup); 0.00 : 56f8e6: c7 85 64 ff ff ff 00 movl $0x0,-0x9c(%rbp) 0.00 : 56f8ed: 00 00 00 0.00 : 56f8f0: e9 eb fe ff ff jmpq 56f7e0 0.00 : 56f8f5: 0f 1f 00 nopl (%rax) : ereport(ERROR, : (errcode(ERRCODE_DUPLICATE_OBJECT), : errmsg("there are multiple default operator classes for data type %s", : format_type_be(type_id)))); : : if (nexact == 1 || 0.00 : 56f8f8: 83 bd 68 ff ff ff 01 cmpl $0x1,-0x98(%rbp) 0.00 : 56f8ff: 74 bf je 56f8c0 0.00 : 56f901: c7 85 64 ff ff ff 00 movl $0x0,-0x9c(%rbp) 0.00 : 56f908: 00 00 00 0.00 : 56f90b: eb b3 jmp 56f8c0 : if (IsPreferredType(tcategory, opclass->opcintype)) : { : ncompatiblepreferred++; : result = HeapTupleGetOid(tup); : } : else if (ncompatiblepreferred == 0) 0.00 : 56f90d: 8b 95 6c ff ff ff mov -0x94(%rbp),%edx 0.00 : 56f913: 85 d2 test %edx,%edx 0.00 : 56f915: 0f 85 c5 fe ff ff jne 56f7e0 : { : ncompatible++; 0.00 : 56f91b: 83 85 68 ff ff ff 01 addl $0x1,-0x98(%rbp) : result = HeapTupleGetOid(tup); 0.00 : 56f922: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 56f927: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 56f92b: 74 b9 je 56f8e6 0.00 : 56f92d: e9 1e ff ff ff jmpq 56f850 : : heap_close(rel, AccessShareLock); : : /* raise error if pg_opclass contains inconsistent data */ : if (nexact > 1) : ereport(ERROR, 0.00 : 56f932: 45 31 c0 xor %r8d,%r8d 0.00 : 56f935: b9 60 ee 87 00 mov $0x87ee60,%ecx 0.00 : 56f93a: ba 6f 05 00 00 mov $0x56f,%edx 0.00 : 56f93f: be b0 e6 87 00 mov $0x87e6b0,%esi 0.00 : 56f944: bf 14 00 00 00 mov $0x14,%edi 0.00 : 56f949: e8 72 b1 20 00 callq 77aac0 0.00 : 56f94e: 84 c0 test %al,%al 0.00 : 56f950: 75 05 jne 56f957 0.00 : 56f952: e8 79 9b ef ff callq 4694d0 0.00 : 56f957: 44 89 ef mov %r13d,%edi 0.00 : 56f95a: e8 c1 9a 16 00 callq 6d9420 0.00 : 56f95f: bf d0 e7 87 00 mov $0x87e7d0,%edi 0.00 : 56f964: 48 89 c6 mov %rax,%rsi 0.00 : 56f967: 31 c0 xor %eax,%eax 0.00 : 56f969: e8 32 cf 20 00 callq 77c8a0 0.00 : 56f96e: bf 84 70 04 00 mov $0x47084,%edi 0.00 : 56f973: 89 c3 mov %eax,%ebx 0.00 : 56f975: e8 d6 d3 20 00 callq 77cd50 0.00 : 56f97a: 89 de mov %ebx,%esi 0.00 : 56f97c: 89 c7 mov %eax,%edi 0.00 : 56f97e: 31 c0 xor %eax,%eax 0.00 : 56f980: e8 5b ac 20 00 callq 77a5e0 0.00 : 56f985: eb cb jmp 56f952 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:2107 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005dff90 : : : Node * : expression_tree_mutator(Node *node, : Node *(*mutator) (), : void *context) : { 0.00 : 5dff90: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/nodes/nodeFuncs.c:2107 100.00 : 5dff91: 48 89 e5 mov %rsp,%rbp 0.00 : 5dff94: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 5dff98: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 5dff9c: 49 89 fc mov %rdi,%r12 0.00 : 5dff9f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 5dffa3: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 5dffa7: 49 89 f7 mov %rsi,%r15 0.00 : 5dffaa: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 5dffae: 48 83 ec 30 sub $0x30,%rsp : memcpy((newnode), (node), sizeof(nodetype)) ) : : #define MUTATE(newfield, oldfield, fieldtype) \ : ( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) ) : : if (node == NULL) 0.00 : 5dffb2: 48 85 ff test %rdi,%rdi : : Node * : expression_tree_mutator(Node *node, : Node *(*mutator) (), : void *context) : { 0.00 : 5dffb5: 49 89 d6 mov %rdx,%r14 : memcpy((newnode), (node), sizeof(nodetype)) ) : : #define MUTATE(newfield, oldfield, fieldtype) \ : ( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) ) : : if (node == NULL) 0.00 : 5dffb8: 0f 84 62 01 00 00 je 5e0120 : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); 0.00 : 5dffbe: e8 1d ba 0b 00 callq 69b9e0 : : switch (nodeTag(node)) 0.00 : 5dffc3: 41 8b 04 24 mov (%r12),%eax 0.00 : 5dffc7: 3d 48 01 00 00 cmp $0x148,%eax 0.00 : 5dffcc: 0f 84 0e 03 00 00 je 5e02e0 0.00 : 5dffd2: 0f 86 68 01 00 00 jbe 5e0140 0.00 : 5dffd8: 3d 56 01 00 00 cmp $0x156,%eax 0.00 : 5dffdd: 0f 1f 00 nopl (%rax) 0.00 : 5dffe0: 0f 84 fa 02 00 00 je 5e02e0 0.00 : 5dffe6: 66 90 xchg %ax,%ax 0.00 : 5dffe8: 0f 87 92 00 00 00 ja 5e0080 0.00 : 5dffee: 3d 4e 01 00 00 cmp $0x14e,%eax 0.00 : 5dfff3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5dfff8: 0f 84 42 07 00 00 je 5e0740 0.00 : 5dfffe: 66 90 xchg %ax,%ax 0.00 : 5e0000: 0f 87 d2 01 00 00 ja 5e01d8 0.00 : 5e0006: 3d 4b 01 00 00 cmp $0x14b,%eax 0.00 : 5e000b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0010: 0f 84 79 07 00 00 je 5e078f 0.00 : 5e0016: 66 90 xchg %ax,%ax 0.00 : 5e0018: 0f 87 5a 08 00 00 ja 5e0878 0.00 : 5e001e: 3d 49 01 00 00 cmp $0x149,%eax 0.00 : 5e0023: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0028: 0f 84 02 05 00 00 je 5e0530 0.00 : 5e002e: 3d 4a 01 00 00 cmp $0x14a,%eax 0.00 : 5e0033: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0038: 0f 85 f2 02 00 00 jne 5e0330 0.00 : 5e003e: 66 90 xchg %ax,%ax : case T_CoerceToDomain: : { : CoerceToDomain *ctest = (CoerceToDomain *) node; : CoerceToDomain *newnode; : : FLATCOPY(newnode, ctest, CoerceToDomain); 0.00 : 5e0040: bf 28 00 00 00 mov $0x28,%edi 0.00 : 5e0045: e8 06 8d 1b 00 callq 798d50 0.00 : 5e004a: 48 89 c3 mov %rax,%rbx 0.00 : 5e004d: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0051: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0054: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0059: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e005d: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0062: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0066: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e006b: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e006f: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0074: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0078: e9 a9 01 00 00 jmpq 5e0226 0.00 : 5e007d: 0f 1f 00 nopl (%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0080: 3d bc 02 00 00 cmp $0x2bc,%eax 0.00 : 5e0085: 0f 84 95 00 00 00 je 5e0120 0.00 : 5e008b: 0f 87 cf 02 00 00 ja 5e0360 0.00 : 5e0091: 3d 0c 02 00 00 cmp $0x20c,%eax 0.00 : 5e0096: 66 90 xchg %ax,%ax 0.00 : 5e0098: 0f 84 02 01 00 00 je 5e01a0 0.00 : 5e009e: 66 90 xchg %ax,%ax 0.00 : 5e00a0: 0f 87 2a 08 00 00 ja 5e08d0 0.00 : 5e00a6: 3d 57 01 00 00 cmp $0x157,%eax 0.00 : 5e00ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e00b0: 0f 84 44 07 00 00 je 5e07fa 0.00 : 5e00b6: 3d 58 01 00 00 cmp $0x158,%eax 0.00 : 5e00bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e00c0: 0f 85 6a 02 00 00 jne 5e0330 : case T_FromExpr: : { : FromExpr *from = (FromExpr *) node; : FromExpr *newnode; : : FLATCOPY(newnode, from, FromExpr); 0.00 : 5e00c6: bf 18 00 00 00 mov $0x18,%edi 0.00 : 5e00cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e00d0: e8 7b 8c 1b 00 callq 798d50 0.00 : 5e00d5: 48 89 c3 mov %rax,%rbx 0.00 : 5e00d8: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e00dc: 48 89 03 mov %rax,(%rbx) 0.00 : 5e00df: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e00e4: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e00e8: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e00ed: 48 89 43 10 mov %rax,0x10(%rbx) : { : CaseWhen *casewhen = (CaseWhen *) node; : CaseWhen *newnode; : : FLATCOPY(newnode, casewhen, CaseWhen); : MUTATE(newnode->expr, casewhen->expr, Expr *); 0.00 : 5e00f1: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 5e00f6: 4c 89 f6 mov %r14,%rsi 0.00 : 5e00f9: 31 c0 xor %eax,%eax 0.00 : 5e00fb: 41 ff d7 callq *%r15 0.00 : 5e00fe: 48 89 43 08 mov %rax,0x8(%rbx) : MUTATE(newnode->result, casewhen->result, Expr *); 0.00 : 5e0102: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 5e0107: 4c 89 f6 mov %r14,%rsi 0.00 : 5e010a: 31 c0 xor %eax,%eax : return (Node *) newnode; 0.00 : 5e010c: 49 89 dc mov %rbx,%r12 : CaseWhen *casewhen = (CaseWhen *) node; : CaseWhen *newnode; : : FLATCOPY(newnode, casewhen, CaseWhen); : MUTATE(newnode->expr, casewhen->expr, Expr *); : MUTATE(newnode->result, casewhen->result, Expr *); 0.00 : 5e010f: 41 ff d7 callq *%r15 0.00 : 5e0112: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0116: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5e011d: 00 00 00 : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e0120: 4c 89 e0 mov %r12,%rax 0.00 : 5e0123: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e0127: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e012b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e012f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e0133: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e0137: c9 leaveq 0.00 : 5e0138: c3 retq 0.00 : 5e0139: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0140: 3d 3b 01 00 00 cmp $0x13b,%eax 0.00 : 5e0145: 0f 84 b5 00 00 00 je 5e0200 0.00 : 5e014b: 0f 87 ef 00 00 00 ja 5e0240 0.00 : 5e0151: 3d 34 01 00 00 cmp $0x134,%eax 0.00 : 5e0156: 66 90 xchg %ax,%ax 0.00 : 5e0158: 0f 84 42 05 00 00 je 5e06a0 0.00 : 5e015e: 66 90 xchg %ax,%ax 0.00 : 5e0160: 0f 86 9a 01 00 00 jbe 5e0300 0.00 : 5e0166: 3d 37 01 00 00 cmp $0x137,%eax 0.00 : 5e016b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0170: 0f 84 58 03 00 00 je 5e04ce 0.00 : 5e0176: 66 90 xchg %ax,%ax 0.00 : 5e0178: 0f 87 42 03 00 00 ja 5e04c0 0.00 : 5e017e: 3d 35 01 00 00 cmp $0x135,%eax 0.00 : 5e0183: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0188: 0f 84 40 03 00 00 je 5e04ce 0.00 : 5e018e: 3d 36 01 00 00 cmp $0x136,%eax 0.00 : 5e0193: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0198: 0f 85 92 01 00 00 jne 5e0330 0.00 : 5e019e: 66 90 xchg %ax,%ax : case T_PlaceHolderVar: : { : PlaceHolderVar *phv = (PlaceHolderVar *) node; : PlaceHolderVar *newnode; : : FLATCOPY(newnode, phv, PlaceHolderVar); 0.00 : 5e01a0: bf 20 00 00 00 mov $0x20,%edi 0.00 : 5e01a5: e8 a6 8b 1b 00 callq 798d50 0.00 : 5e01aa: 48 89 c3 mov %rax,%rbx 0.00 : 5e01ad: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e01b1: 48 89 03 mov %rax,(%rbx) 0.00 : 5e01b4: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e01b9: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e01bd: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e01c2: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e01c6: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e01cb: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e01cf: eb 55 jmp 5e0226 0.00 : 5e01d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e01d8: 3d 51 01 00 00 cmp $0x151,%eax 0.00 : 5e01dd: 0f 84 5d fe ff ff je 5e0040 0.00 : 5e01e3: 0f 87 ef 00 00 00 ja 5e02d8 0.00 : 5e01e9: 3d 4f 01 00 00 cmp $0x14f,%eax 0.00 : 5e01ee: 66 90 xchg %ax,%ax 0.00 : 5e01f0: 74 0e je 5e0200 0.00 : 5e01f2: 3d 50 01 00 00 cmp $0x150,%eax 0.00 : 5e01f7: 90 nop 0.00 : 5e01f8: 0f 85 32 01 00 00 jne 5e0330 0.00 : 5e01fe: 66 90 xchg %ax,%ax : case T_BooleanTest: : { : BooleanTest *btest = (BooleanTest *) node; : BooleanTest *newnode; : : FLATCOPY(newnode, btest, BooleanTest); 0.00 : 5e0200: bf 18 00 00 00 mov $0x18,%edi 0.00 : 5e0205: e8 46 8b 1b 00 callq 798d50 0.00 : 5e020a: 48 89 c3 mov %rax,%rbx 0.00 : 5e020d: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0211: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0214: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0219: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e021d: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0222: 48 89 43 10 mov %rax,0x10(%rbx) : { : RangeTblFunction *rtfunc = (RangeTblFunction *) node; : RangeTblFunction *newnode; : : FLATCOPY(newnode, rtfunc, RangeTblFunction); : MUTATE(newnode->funcexpr, rtfunc->funcexpr, Node *); 0.00 : 5e0226: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 5e022b: 4c 89 f6 mov %r14,%rsi 0.00 : 5e022e: 31 c0 xor %eax,%eax : /* Assume we need not copy the coldef info lists */ : return (Node *) newnode; 0.00 : 5e0230: 49 89 dc mov %rbx,%r12 : { : RangeTblFunction *rtfunc = (RangeTblFunction *) node; : RangeTblFunction *newnode; : : FLATCOPY(newnode, rtfunc, RangeTblFunction); : MUTATE(newnode->funcexpr, rtfunc->funcexpr, Node *); 0.00 : 5e0233: 41 ff d7 callq *%r15 0.00 : 5e0236: 48 89 43 08 mov %rax,0x8(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e023a: e9 e1 fe ff ff jmpq 5e0120 0.00 : 5e023f: 90 nop : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0240: 3d 41 01 00 00 cmp $0x141,%eax 0.00 : 5e0245: 0f 84 f5 fd ff ff je 5e0040 0.00 : 5e024b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0250: 0f 86 9a 01 00 00 jbe 5e03f0 0.00 : 5e0256: 3d 44 01 00 00 cmp $0x144,%eax 0.00 : 5e025b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0260: 0f 84 3a ff ff ff je 5e01a0 0.00 : 5e0266: 66 90 xchg %ax,%ax 0.00 : 5e0268: 0f 87 d2 06 00 00 ja 5e0940 0.00 : 5e026e: 3d 42 01 00 00 cmp $0x142,%eax 0.00 : 5e0273: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0278: 0f 84 22 ff ff ff je 5e01a0 0.00 : 5e027e: 3d 43 01 00 00 cmp $0x143,%eax 0.00 : 5e0283: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0288: 0f 85 a2 00 00 00 jne 5e0330 : case T_PlaceHolderInfo: : { : PlaceHolderInfo *phinfo = (PlaceHolderInfo *) node; : PlaceHolderInfo *newnode; : : FLATCOPY(newnode, phinfo, PlaceHolderInfo); 0.00 : 5e028e: bf 30 00 00 00 mov $0x30,%edi 0.00 : 5e0293: e8 b8 8a 1b 00 callq 798d50 0.00 : 5e0298: 48 89 c3 mov %rax,%rbx 0.00 : 5e029b: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e029f: 48 89 03 mov %rax,(%rbx) 0.00 : 5e02a2: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e02a7: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e02ab: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e02b0: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e02b4: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e02b9: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e02bd: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e02c2: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e02c6: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e02cb: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e02cf: e9 52 ff ff ff jmpq 5e0226 0.00 : 5e02d4: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e02d8: 3d 54 01 00 00 cmp $0x154,%eax 0.00 : 5e02dd: 77 af ja 5e028e 0.00 : 5e02df: 90 nop : case T_CaseTestExpr: : case T_SetToDefault: : case T_CurrentOfExpr: : case T_RangeTblRef: : case T_SortGroupClause: : return (Node *) copyObject(node); 0.00 : 5e02e0: 4c 89 e7 mov %r12,%rdi : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e02e3: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 5e02e7: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 5e02eb: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 5e02ef: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 5e02f3: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 5e02f7: c9 leaveq : case T_CaseTestExpr: : case T_SetToDefault: : case T_CurrentOfExpr: : case T_RangeTblRef: : case T_SortGroupClause: : return (Node *) copyObject(node); 0.00 : 5e02f8: e9 93 3e 00 00 jmpq 5e4190 0.00 : 5e02fd: 0f 1f 00 nopl (%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0300: 3d 31 01 00 00 cmp $0x131,%eax 0.00 : 5e0305: 74 d9 je 5e02e0 0.00 : 5e0307: 0f 87 73 07 00 00 ja 5e0a80 0.00 : 5e030d: 3d 2f 01 00 00 cmp $0x12f,%eax 0.00 : 5e0312: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5e0318: 0f 84 46 02 00 00 je 5e0564 0.00 : 5e031e: 3d 30 01 00 00 cmp $0x130,%eax 0.00 : 5e0323: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0328: 0f 84 36 02 00 00 je 5e0564 0.00 : 5e032e: 66 90 xchg %ax,%ax : /* Assume we need not copy the coldef info lists */ : return (Node *) newnode; : } : break; : default: : elog(ERROR, "unrecognized node type: %d", 0.00 : 5e0330: ba d0 20 89 00 mov $0x8920d0,%edx 0.00 : 5e0335: be 61 0a 00 00 mov $0xa61,%esi 0.00 : 5e033a: bf 43 21 89 00 mov $0x892143,%edi 0.00 : 5e033f: e8 dc b0 19 00 callq 77b420 0.00 : 5e0344: 41 8b 14 24 mov (%r12),%edx 0.00 : 5e0348: be 5c 17 87 00 mov $0x87175c,%esi 0.00 : 5e034d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e0352: 31 c0 xor %eax,%eax 0.00 : 5e0354: e8 d7 ae 19 00 callq 77b230 0.00 : 5e0359: e8 72 91 e8 ff callq 4694d0 0.00 : 5e035e: 66 90 xchg %ax,%ax : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0360: 3d 9c 03 00 00 cmp $0x39c,%eax 0.00 : 5e0365: 0f 84 c5 01 00 00 je 5e0530 0.00 : 5e036b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0370: 0f 87 3a 08 00 00 ja 5e0bb0 0.00 : 5e0376: 3d c5 02 00 00 cmp $0x2c5,%eax 0.00 : 5e037b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0380: 0f 84 1e 02 00 00 je 5e05a4 0.00 : 5e0386: 3d 9b 03 00 00 cmp $0x39b,%eax 0.00 : 5e038b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0390: 75 9e jne 5e0330 : case T_RangeTblFunction: : { : RangeTblFunction *rtfunc = (RangeTblFunction *) node; : RangeTblFunction *newnode; : : FLATCOPY(newnode, rtfunc, RangeTblFunction); 0.00 : 5e0392: bf 40 00 00 00 mov $0x40,%edi 0.00 : 5e0397: e8 b4 89 1b 00 callq 798d50 0.00 : 5e039c: 48 89 c3 mov %rax,%rbx 0.00 : 5e039f: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e03a3: 48 89 03 mov %rax,(%rbx) 0.00 : 5e03a6: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e03ab: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e03af: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e03b4: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e03b8: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e03bd: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e03c1: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e03c6: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e03ca: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e03cf: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e03d3: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e03d8: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e03dc: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 5e03e1: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 5e03e5: e9 3c fe ff ff jmpq 5e0226 0.00 : 5e03ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e03f0: 3d 3e 01 00 00 cmp $0x13e,%eax 0.00 : 5e03f5: 0f 84 7d 02 00 00 je 5e0678 0.00 : 5e03fb: 0f 87 ef 05 00 00 ja 5e09f0 0.00 : 5e0401: 3d 3c 01 00 00 cmp $0x13c,%eax 0.00 : 5e0406: 66 90 xchg %ax,%ax 0.00 : 5e0408: 0f 84 13 02 00 00 je 5e0621 0.00 : 5e040e: 3d 3d 01 00 00 cmp $0x13d,%eax 0.00 : 5e0413: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0418: 0f 85 12 ff ff ff jne 5e0330 : case T_SubPlan: : { : SubPlan *subplan = (SubPlan *) node; : SubPlan *newnode; : : FLATCOPY(newnode, subplan, SubPlan); 0.00 : 5e041e: bf 60 00 00 00 mov $0x60,%edi 0.00 : 5e0423: e8 28 89 1b 00 callq 798d50 0.00 : 5e0428: 48 89 c3 mov %rax,%rbx 0.00 : 5e042b: 49 8b 04 24 mov (%r12),%rax : /* transform testexpr */ : MUTATE(newnode->testexpr, subplan->testexpr, Node *); 0.00 : 5e042f: 4c 89 f6 mov %r14,%rsi : case T_SubPlan: : { : SubPlan *subplan = (SubPlan *) node; : SubPlan *newnode; : : FLATCOPY(newnode, subplan, SubPlan); 0.00 : 5e0432: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0435: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e043a: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e043e: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0443: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0447: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e044c: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0450: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0455: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0459: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e045e: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e0462: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e0467: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e046b: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 5e0470: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 5e0474: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 5e0479: 48 89 43 40 mov %rax,0x40(%rbx) 0.00 : 5e047d: 49 8b 44 24 48 mov 0x48(%r12),%rax 0.00 : 5e0482: 48 89 43 48 mov %rax,0x48(%rbx) 0.00 : 5e0486: 49 8b 44 24 50 mov 0x50(%r12),%rax 0.00 : 5e048b: 48 89 43 50 mov %rax,0x50(%rbx) 0.00 : 5e048f: 49 8b 44 24 58 mov 0x58(%r12),%rax 0.00 : 5e0494: 48 89 43 58 mov %rax,0x58(%rbx) : /* transform testexpr */ : MUTATE(newnode->testexpr, subplan->testexpr, Node *); 0.00 : 5e0498: 31 c0 xor %eax,%eax 0.00 : 5e049a: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 5e049f: 41 ff d7 callq *%r15 : /* transform args list (params to be passed to subplan) */ : MUTATE(newnode->args, subplan->args, List *); 0.00 : 5e04a2: 4c 89 f6 mov %r14,%rsi : SubPlan *subplan = (SubPlan *) node; : SubPlan *newnode; : : FLATCOPY(newnode, subplan, SubPlan); : /* transform testexpr */ : MUTATE(newnode->testexpr, subplan->testexpr, Node *); 0.00 : 5e04a5: 48 89 43 08 mov %rax,0x8(%rbx) : /* transform args list (params to be passed to subplan) */ : MUTATE(newnode->args, subplan->args, List *); 0.00 : 5e04a9: 31 c0 xor %eax,%eax 0.00 : 5e04ab: 49 8b 7c 24 48 mov 0x48(%r12),%rdi : /* but not the sub-Plan itself, which is referenced as-is */ : return (Node *) newnode; 0.00 : 5e04b0: 49 89 dc mov %rbx,%r12 : : FLATCOPY(newnode, subplan, SubPlan); : /* transform testexpr */ : MUTATE(newnode->testexpr, subplan->testexpr, Node *); : /* transform args list (params to be passed to subplan) */ : MUTATE(newnode->args, subplan->args, List *); 0.00 : 5e04b3: 41 ff d7 callq *%r15 0.00 : 5e04b6: 48 89 43 48 mov %rax,0x48(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e04ba: e9 61 fc ff ff jmpq 5e0120 0.00 : 5e04bf: 90 nop : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e04c0: 3d 39 01 00 00 cmp $0x139,%eax 0.00 : 5e04c5: 74 07 je 5e04ce 0.00 : 5e04c7: 90 nop 0.00 : 5e04c8: 0f 87 c0 03 00 00 ja 5e088e : case T_FuncExpr: : { : FuncExpr *expr = (FuncExpr *) node; : FuncExpr *newnode; : : FLATCOPY(newnode, expr, FuncExpr); 0.00 : 5e04ce: bf 30 00 00 00 mov $0x30,%edi 0.00 : 5e04d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e04d8: e8 73 88 1b 00 callq 798d50 0.00 : 5e04dd: 48 89 c3 mov %rax,%rbx 0.00 : 5e04e0: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e04e4: 48 89 03 mov %rax,(%rbx) 0.00 : 5e04e7: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e04ec: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e04f0: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e04f5: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e04f9: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e04fe: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0502: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0507: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e050b: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e0510: 48 89 43 28 mov %rax,0x28(%rbx) : MUTATE(newnode->args, expr->args, List *); 0.00 : 5e0514: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 5e0519: 4c 89 f6 mov %r14,%rsi 0.00 : 5e051c: 31 c0 xor %eax,%eax : return (Node *) newnode; 0.00 : 5e051e: 49 89 dc mov %rbx,%r12 : { : FuncExpr *expr = (FuncExpr *) node; : FuncExpr *newnode; : : FLATCOPY(newnode, expr, FuncExpr); : MUTATE(newnode->args, expr->args, List *); 0.00 : 5e0521: 41 ff d7 callq *%r15 0.00 : 5e0524: 48 89 43 20 mov %rax,0x20(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e0528: e9 f3 fb ff ff jmpq 5e0120 0.00 : 5e052d: 0f 1f 00 nopl (%rax) : case T_CoalesceExpr: : { : CoalesceExpr *coalesceexpr = (CoalesceExpr *) node; : CoalesceExpr *newnode; : : FLATCOPY(newnode, coalesceexpr, CoalesceExpr); 0.00 : 5e0530: bf 20 00 00 00 mov $0x20,%edi 0.00 : 5e0535: e8 16 88 1b 00 callq 798d50 0.00 : 5e053a: 48 89 c3 mov %rax,%rbx 0.00 : 5e053d: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0541: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0544: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0549: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e054d: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0552: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0556: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e055b: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e055f: e9 9e fb ff ff jmpq 5e0102 : case T_Const: : { : Const *oldnode = (Const *) node; : Const *newnode; : : FLATCOPY(newnode, oldnode, Const); 0.00 : 5e0564: bf 28 00 00 00 mov $0x28,%edi 0.00 : 5e0569: e8 e2 87 1b 00 callq 798d50 0.00 : 5e056e: 48 89 c7 mov %rax,%rdi 0.00 : 5e0571: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0575: 48 89 07 mov %rax,(%rdi) 0.00 : 5e0578: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e057d: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 5e0581: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0586: 48 89 47 10 mov %rax,0x10(%rdi) 0.00 : 5e058a: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e058f: 48 89 47 18 mov %rax,0x18(%rdi) 0.00 : 5e0593: 49 8b 44 24 20 mov 0x20(%r12),%rax : /* XXX we don't bother with datumCopy; should we? */ : return (Node *) newnode; 0.00 : 5e0598: 49 89 fc mov %rdi,%r12 : case T_Const: : { : Const *oldnode = (Const *) node; : Const *newnode; : : FLATCOPY(newnode, oldnode, Const); 0.00 : 5e059b: 48 89 47 20 mov %rax,0x20(%rdi) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e059f: e9 7c fb ff ff jmpq 5e0120 : case T_SetOperationStmt: : { : SetOperationStmt *setop = (SetOperationStmt *) node; : SetOperationStmt *newnode; : : FLATCOPY(newnode, setop, SetOperationStmt); 0.00 : 5e05a4: bf 40 00 00 00 mov $0x40,%edi 0.00 : 5e05a9: e8 a2 87 1b 00 callq 798d50 0.00 : 5e05ae: 48 89 c3 mov %rax,%rbx 0.00 : 5e05b1: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->larg, setop->larg, Node *); 0.00 : 5e05b5: 4c 89 f6 mov %r14,%rsi : case T_SetOperationStmt: : { : SetOperationStmt *setop = (SetOperationStmt *) node; : SetOperationStmt *newnode; : : FLATCOPY(newnode, setop, SetOperationStmt); 0.00 : 5e05b8: 48 89 03 mov %rax,(%rbx) 0.00 : 5e05bb: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e05c0: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e05c4: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e05c9: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e05cd: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e05d2: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e05d6: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e05db: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e05df: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e05e4: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e05e8: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e05ed: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e05f1: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 5e05f6: 48 89 43 38 mov %rax,0x38(%rbx) : MUTATE(newnode->larg, setop->larg, Node *); 0.00 : 5e05fa: 31 c0 xor %eax,%eax 0.00 : 5e05fc: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 5e0601: 41 ff d7 callq *%r15 0.00 : 5e0604: 48 89 43 10 mov %rax,0x10(%rbx) : { : AppendRelInfo *appinfo = (AppendRelInfo *) node; : AppendRelInfo *newnode; : : FLATCOPY(newnode, appinfo, AppendRelInfo); : MUTATE(newnode->translated_vars, appinfo->translated_vars, List *); 0.00 : 5e0608: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 5e060d: 4c 89 f6 mov %r14,%rsi 0.00 : 5e0610: 31 c0 xor %eax,%eax : return (Node *) newnode; 0.00 : 5e0612: 49 89 dc mov %rbx,%r12 : { : AppendRelInfo *appinfo = (AppendRelInfo *) node; : AppendRelInfo *newnode; : : FLATCOPY(newnode, appinfo, AppendRelInfo); : MUTATE(newnode->translated_vars, appinfo->translated_vars, List *); 0.00 : 5e0615: 41 ff d7 callq *%r15 0.00 : 5e0618: 48 89 43 18 mov %rax,0x18(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e061c: e9 ff fa ff ff jmpq 5e0120 : case T_SubLink: : { : SubLink *sublink = (SubLink *) node; : SubLink *newnode; : : FLATCOPY(newnode, sublink, SubLink); 0.00 : 5e0621: bf 30 00 00 00 mov $0x30,%edi 0.00 : 5e0626: e8 25 87 1b 00 callq 798d50 0.00 : 5e062b: 48 89 c3 mov %rax,%rbx 0.00 : 5e062e: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0632: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0635: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e063a: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e063e: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0643: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0647: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e064c: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0650: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0655: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0659: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e065e: 48 89 43 28 mov %rax,0x28(%rbx) : { : XmlExpr *xexpr = (XmlExpr *) node; : XmlExpr *newnode; : : FLATCOPY(newnode, xexpr, XmlExpr); : MUTATE(newnode->named_args, xexpr->named_args, List *); 0.00 : 5e0662: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 5e0667: 4c 89 f6 mov %r14,%rsi 0.00 : 5e066a: 31 c0 xor %eax,%eax 0.00 : 5e066c: 41 ff d7 callq *%r15 0.00 : 5e066f: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0673: e9 9c fe ff ff jmpq 5e0514 : case T_AlternativeSubPlan: : { : AlternativeSubPlan *asplan = (AlternativeSubPlan *) node; : AlternativeSubPlan *newnode; : : FLATCOPY(newnode, asplan, AlternativeSubPlan); 0.00 : 5e0678: bf 10 00 00 00 mov $0x10,%edi 0.00 : 5e067d: e8 ce 86 1b 00 callq 798d50 0.00 : 5e0682: 48 89 c3 mov %rax,%rbx 0.00 : 5e0685: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0689: 48 89 03 mov %rax,(%rbx) 0.00 : 5e068c: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0691: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e0695: e9 8c fb ff ff jmpq 5e0226 0.00 : 5e069a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case T_ArrayRef: : { : ArrayRef *arrayref = (ArrayRef *) node; : ArrayRef *newnode; : : FLATCOPY(newnode, arrayref, ArrayRef); 0.00 : 5e06a0: bf 38 00 00 00 mov $0x38,%edi 0.00 : 5e06a5: e8 a6 86 1b 00 callq 798d50 0.00 : 5e06aa: 48 89 c3 mov %rax,%rbx 0.00 : 5e06ad: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->refupperindexpr, arrayref->refupperindexpr, 0.00 : 5e06b1: 4c 89 f6 mov %r14,%rsi : case T_ArrayRef: : { : ArrayRef *arrayref = (ArrayRef *) node; : ArrayRef *newnode; : : FLATCOPY(newnode, arrayref, ArrayRef); 0.00 : 5e06b4: 48 89 03 mov %rax,(%rbx) 0.00 : 5e06b7: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e06bc: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e06c0: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e06c5: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e06c9: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e06ce: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e06d2: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e06d7: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e06db: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e06e0: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e06e4: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e06e9: 48 89 43 30 mov %rax,0x30(%rbx) : MUTATE(newnode->refupperindexpr, arrayref->refupperindexpr, 0.00 : 5e06ed: 31 c0 xor %eax,%eax 0.00 : 5e06ef: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 5e06f4: 41 ff d7 callq *%r15 : List *); : MUTATE(newnode->reflowerindexpr, arrayref->reflowerindexpr, 0.00 : 5e06f7: 4c 89 f6 mov %r14,%rsi : { : ArrayRef *arrayref = (ArrayRef *) node; : ArrayRef *newnode; : : FLATCOPY(newnode, arrayref, ArrayRef); : MUTATE(newnode->refupperindexpr, arrayref->refupperindexpr, 0.00 : 5e06fa: 48 89 43 18 mov %rax,0x18(%rbx) : List *); : MUTATE(newnode->reflowerindexpr, arrayref->reflowerindexpr, 0.00 : 5e06fe: 31 c0 xor %eax,%eax 0.00 : 5e0700: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 5e0705: 41 ff d7 callq *%r15 : List *); : MUTATE(newnode->refexpr, arrayref->refexpr, 0.00 : 5e0708: 4c 89 f6 mov %r14,%rsi : ArrayRef *newnode; : : FLATCOPY(newnode, arrayref, ArrayRef); : MUTATE(newnode->refupperindexpr, arrayref->refupperindexpr, : List *); : MUTATE(newnode->reflowerindexpr, arrayref->reflowerindexpr, 0.00 : 5e070b: 48 89 43 20 mov %rax,0x20(%rbx) : List *); : MUTATE(newnode->refexpr, arrayref->refexpr, 0.00 : 5e070f: 31 c0 xor %eax,%eax 0.00 : 5e0711: 49 8b 7c 24 28 mov 0x28(%r12),%rdi 0.00 : 5e0716: 41 ff d7 callq *%r15 : Expr *); : MUTATE(newnode->refassgnexpr, arrayref->refassgnexpr, 0.00 : 5e0719: 4c 89 f6 mov %r14,%rsi : FLATCOPY(newnode, arrayref, ArrayRef); : MUTATE(newnode->refupperindexpr, arrayref->refupperindexpr, : List *); : MUTATE(newnode->reflowerindexpr, arrayref->reflowerindexpr, : List *); : MUTATE(newnode->refexpr, arrayref->refexpr, 0.00 : 5e071c: 48 89 43 28 mov %rax,0x28(%rbx) : Expr *); : MUTATE(newnode->refassgnexpr, arrayref->refassgnexpr, 0.00 : 5e0720: 31 c0 xor %eax,%eax 0.00 : 5e0722: 49 8b 7c 24 30 mov 0x30(%r12),%rdi : Expr *); : return (Node *) newnode; 0.00 : 5e0727: 49 89 dc mov %rbx,%r12 : List *); : MUTATE(newnode->reflowerindexpr, arrayref->reflowerindexpr, : List *); : MUTATE(newnode->refexpr, arrayref->refexpr, : Expr *); : MUTATE(newnode->refassgnexpr, arrayref->refassgnexpr, 0.00 : 5e072a: 41 ff d7 callq *%r15 0.00 : 5e072d: 48 89 43 30 mov %rax,0x30(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e0731: e9 ea f9 ff ff jmpq 5e0120 0.00 : 5e0736: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5e073d: 00 00 00 : case T_XmlExpr: : { : XmlExpr *xexpr = (XmlExpr *) node; : XmlExpr *newnode; : : FLATCOPY(newnode, xexpr, XmlExpr); 0.00 : 5e0740: bf 38 00 00 00 mov $0x38,%edi 0.00 : 5e0745: e8 06 86 1b 00 callq 798d50 0.00 : 5e074a: 48 89 c3 mov %rax,%rbx 0.00 : 5e074d: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0751: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0754: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0759: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e075d: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0762: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0766: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e076b: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e076f: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0774: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0778: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e077d: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e0781: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e0786: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e078a: e9 d3 fe ff ff jmpq 5e0662 : case T_RowCompareExpr: : { : RowCompareExpr *rcexpr = (RowCompareExpr *) node; : RowCompareExpr *newnode; : : FLATCOPY(newnode, rcexpr, RowCompareExpr); 0.00 : 5e078f: bf 30 00 00 00 mov $0x30,%edi 0.00 : 5e0794: e8 b7 85 1b 00 callq 798d50 0.00 : 5e0799: 48 89 c3 mov %rax,%rbx 0.00 : 5e079c: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->largs, rcexpr->largs, List *); 0.00 : 5e07a0: 4c 89 f6 mov %r14,%rsi : case T_RowCompareExpr: : { : RowCompareExpr *rcexpr = (RowCompareExpr *) node; : RowCompareExpr *newnode; : : FLATCOPY(newnode, rcexpr, RowCompareExpr); 0.00 : 5e07a3: 48 89 03 mov %rax,(%rbx) 0.00 : 5e07a6: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e07ab: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e07af: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e07b4: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e07b8: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e07bd: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e07c1: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e07c6: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e07ca: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e07cf: 48 89 43 28 mov %rax,0x28(%rbx) : MUTATE(newnode->largs, rcexpr->largs, List *); 0.00 : 5e07d3: 31 c0 xor %eax,%eax 0.00 : 5e07d5: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 5e07da: 41 ff d7 callq *%r15 0.00 : 5e07dd: 48 89 43 20 mov %rax,0x20(%rbx) : JoinExpr *newnode; : : FLATCOPY(newnode, join, JoinExpr); : MUTATE(newnode->larg, join->larg, Node *); : MUTATE(newnode->rarg, join->rarg, Node *); : MUTATE(newnode->quals, join->quals, Node *); 0.00 : 5e07e1: 49 8b 7c 24 28 mov 0x28(%r12),%rdi 0.00 : 5e07e6: 4c 89 f6 mov %r14,%rsi 0.00 : 5e07e9: 31 c0 xor %eax,%eax : /* We do not mutate alias or using by default */ : return (Node *) newnode; 0.00 : 5e07eb: 49 89 dc mov %rbx,%r12 : JoinExpr *newnode; : : FLATCOPY(newnode, join, JoinExpr); : MUTATE(newnode->larg, join->larg, Node *); : MUTATE(newnode->rarg, join->rarg, Node *); : MUTATE(newnode->quals, join->quals, Node *); 0.00 : 5e07ee: 41 ff d7 callq *%r15 0.00 : 5e07f1: 48 89 43 28 mov %rax,0x28(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e07f5: e9 26 f9 ff ff jmpq 5e0120 : case T_JoinExpr: : { : JoinExpr *join = (JoinExpr *) node; : JoinExpr *newnode; : : FLATCOPY(newnode, join, JoinExpr); 0.00 : 5e07fa: bf 40 00 00 00 mov $0x40,%edi 0.00 : 5e07ff: e8 4c 85 1b 00 callq 798d50 0.00 : 5e0804: 48 89 c3 mov %rax,%rbx 0.00 : 5e0807: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->larg, join->larg, Node *); 0.00 : 5e080b: 4c 89 f6 mov %r14,%rsi : case T_JoinExpr: : { : JoinExpr *join = (JoinExpr *) node; : JoinExpr *newnode; : : FLATCOPY(newnode, join, JoinExpr); 0.00 : 5e080e: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0811: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0816: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e081a: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e081f: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0823: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e0828: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e082c: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0831: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0835: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e083a: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e083e: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e0843: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e0847: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 5e084c: 48 89 43 38 mov %rax,0x38(%rbx) : MUTATE(newnode->larg, join->larg, Node *); 0.00 : 5e0850: 31 c0 xor %eax,%eax 0.00 : 5e0852: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 5e0857: 41 ff d7 callq *%r15 : MUTATE(newnode->rarg, join->rarg, Node *); 0.00 : 5e085a: 4c 89 f6 mov %r14,%rsi : { : JoinExpr *join = (JoinExpr *) node; : JoinExpr *newnode; : : FLATCOPY(newnode, join, JoinExpr); : MUTATE(newnode->larg, join->larg, Node *); 0.00 : 5e085d: 48 89 43 10 mov %rax,0x10(%rbx) : MUTATE(newnode->rarg, join->rarg, Node *); 0.00 : 5e0861: 31 c0 xor %eax,%eax 0.00 : 5e0863: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 5e0868: 41 ff d7 callq *%r15 0.00 : 5e086b: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e086f: e9 6d ff ff ff jmpq 5e07e1 0.00 : 5e0874: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0878: 3d 4c 01 00 00 cmp $0x14c,%eax 0.00 : 5e087d: 0f 84 ad fc ff ff je 5e0530 0.00 : 5e0883: 3d 4d 01 00 00 cmp $0x14d,%eax 0.00 : 5e0888: 0f 85 a2 fa ff ff jne 5e0330 : case T_AppendRelInfo: : { : AppendRelInfo *appinfo = (AppendRelInfo *) node; : AppendRelInfo *newnode; : : FLATCOPY(newnode, appinfo, AppendRelInfo); 0.00 : 5e088e: bf 28 00 00 00 mov $0x28,%edi 0.00 : 5e0893: e8 b8 84 1b 00 callq 798d50 0.00 : 5e0898: 48 89 c3 mov %rax,%rbx 0.00 : 5e089b: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e089f: 48 89 03 mov %rax,(%rbx) 0.00 : 5e08a2: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e08a7: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e08ab: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e08b0: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e08b4: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e08b9: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e08bd: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e08c2: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e08c6: e9 3d fd ff ff jmpq 5e0608 0.00 : 5e08cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e08d0: 3d 10 02 00 00 cmp $0x210,%eax 0.00 : 5e08d5: 0f 84 b3 f9 ff ff je 5e028e 0.00 : 5e08db: 3d 90 02 00 00 cmp $0x290,%eax 0.00 : 5e08e0: 74 10 je 5e08f2 0.00 : 5e08e2: 3d 0f 02 00 00 cmp $0x20f,%eax 0.00 : 5e08e7: 0f 85 43 fa ff ff jne 5e0330 0.00 : 5e08ed: 0f 1f 00 nopl (%rax) 0.00 : 5e08f0: eb 9c jmp 5e088e : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5e08f2: 49 8b 5c 24 08 mov 0x8(%r12),%rbx : */ : List *resultlist; : ListCell *temp; : : resultlist = NIL; : foreach(temp, (List *) node) 0.00 : 5e08f7: 45 31 ed xor %r13d,%r13d 0.00 : 5e08fa: 45 31 e4 xor %r12d,%r12d 0.00 : 5e08fd: 48 85 db test %rbx,%rbx 0.00 : 5e0900: 0f 84 1a f8 ff ff je 5e0120 0.00 : 5e0906: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5e090d: 00 00 00 : { : resultlist = lappend(resultlist, 0.00 : 5e0910: 48 8b 3b mov (%rbx),%rdi 0.00 : 5e0913: 4c 89 f6 mov %r14,%rsi 0.00 : 5e0916: 31 c0 xor %eax,%eax 0.00 : 5e0918: 41 ff d7 callq *%r15 0.00 : 5e091b: 4c 89 ef mov %r13,%rdi 0.00 : 5e091e: 48 89 c6 mov %rax,%rsi 0.00 : 5e0921: e8 5a 15 00 00 callq 5e1e80 : */ : List *resultlist; : ListCell *temp; : : resultlist = NIL; : foreach(temp, (List *) node) 0.00 : 5e0926: 48 8b 5b 08 mov 0x8(%rbx),%rbx : { : resultlist = lappend(resultlist, 0.00 : 5e092a: 49 89 c5 mov %rax,%r13 : */ : List *resultlist; : ListCell *temp; : : resultlist = NIL; : foreach(temp, (List *) node) 0.00 : 5e092d: 48 85 db test %rbx,%rbx 0.00 : 5e0930: 75 de jne 5e0910 0.00 : 5e0932: 49 89 c4 mov %rax,%r12 0.00 : 5e0935: e9 e6 f7 ff ff jmpq 5e0120 0.00 : 5e093a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0940: 3d 46 01 00 00 cmp $0x146,%eax 0.00 : 5e0945: 74 40 je 5e0987 0.00 : 5e0947: 90 nop 0.00 : 5e0948: 0f 86 b2 f8 ff ff jbe 5e0200 : case T_CaseWhen: : { : CaseWhen *casewhen = (CaseWhen *) node; : CaseWhen *newnode; : : FLATCOPY(newnode, casewhen, CaseWhen); 0.00 : 5e094e: bf 20 00 00 00 mov $0x20,%edi 0.00 : 5e0953: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0958: e8 f3 83 1b 00 callq 798d50 0.00 : 5e095d: 48 89 c3 mov %rax,%rbx 0.00 : 5e0960: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0964: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0967: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e096c: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e0970: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0975: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0979: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e097e: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0982: e9 6a f7 ff ff jmpq 5e00f1 : case T_CaseExpr: : { : CaseExpr *caseexpr = (CaseExpr *) node; : CaseExpr *newnode; : : FLATCOPY(newnode, caseexpr, CaseExpr); 0.00 : 5e0987: bf 30 00 00 00 mov $0x30,%edi 0.00 : 5e098c: e8 bf 83 1b 00 callq 798d50 0.00 : 5e0991: 48 89 c3 mov %rax,%rbx 0.00 : 5e0994: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->arg, caseexpr->arg, Expr *); 0.00 : 5e0998: 4c 89 f6 mov %r14,%rsi : case T_CaseExpr: : { : CaseExpr *caseexpr = (CaseExpr *) node; : CaseExpr *newnode; : : FLATCOPY(newnode, caseexpr, CaseExpr); 0.00 : 5e099b: 48 89 03 mov %rax,(%rbx) 0.00 : 5e099e: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e09a3: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e09a7: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e09ac: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e09b0: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e09b5: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e09b9: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e09be: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e09c2: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e09c7: 48 89 43 28 mov %rax,0x28(%rbx) : MUTATE(newnode->arg, caseexpr->arg, Expr *); 0.00 : 5e09cb: 31 c0 xor %eax,%eax 0.00 : 5e09cd: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 5e09d2: 41 ff d7 callq *%r15 0.00 : 5e09d5: 48 89 43 10 mov %rax,0x10(%rbx) : MUTATE(newnode->args, caseexpr->args, List *); 0.00 : 5e09d9: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 5e09de: 4c 89 f6 mov %r14,%rsi 0.00 : 5e09e1: 31 c0 xor %eax,%eax 0.00 : 5e09e3: 41 ff d7 callq *%r15 0.00 : 5e09e6: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e09ea: e9 25 fb ff ff jmpq 5e0514 0.00 : 5e09ef: 90 nop : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e09f0: 3d 3f 01 00 00 cmp $0x13f,%eax 0.00 : 5e09f5: 0f 84 a5 f7 ff ff je 5e01a0 0.00 : 5e09fb: 3d 40 01 00 00 cmp $0x140,%eax 0.00 : 5e0a00: 0f 85 2a f9 ff ff jne 5e0330 : case T_FieldStore: : { : FieldStore *fstore = (FieldStore *) node; : FieldStore *newnode; : : FLATCOPY(newnode, fstore, FieldStore); 0.00 : 5e0a06: bf 28 00 00 00 mov $0x28,%edi 0.00 : 5e0a0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0a10: e8 3b 83 1b 00 callq 798d50 0.00 : 5e0a15: 48 89 c3 mov %rax,%rbx 0.00 : 5e0a18: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->arg, fstore->arg, Expr *); 0.00 : 5e0a1c: 4c 89 f6 mov %r14,%rsi : case T_FieldStore: : { : FieldStore *fstore = (FieldStore *) node; : FieldStore *newnode; : : FLATCOPY(newnode, fstore, FieldStore); 0.00 : 5e0a1f: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0a22: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0a27: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e0a2b: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0a30: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0a34: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e0a39: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0a3d: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0a42: 48 89 43 20 mov %rax,0x20(%rbx) : MUTATE(newnode->arg, fstore->arg, Expr *); 0.00 : 5e0a46: 31 c0 xor %eax,%eax 0.00 : 5e0a48: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 5e0a4d: 41 ff d7 callq *%r15 : MUTATE(newnode->newvals, fstore->newvals, List *); 0.00 : 5e0a50: 4c 89 f6 mov %r14,%rsi : { : FieldStore *fstore = (FieldStore *) node; : FieldStore *newnode; : : FLATCOPY(newnode, fstore, FieldStore); : MUTATE(newnode->arg, fstore->arg, Expr *); 0.00 : 5e0a53: 48 89 43 08 mov %rax,0x8(%rbx) : MUTATE(newnode->newvals, fstore->newvals, List *); 0.00 : 5e0a57: 31 c0 xor %eax,%eax 0.00 : 5e0a59: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 5e0a5e: 41 ff d7 callq *%r15 0.00 : 5e0a61: 48 89 43 10 mov %rax,0x10(%rbx) : newnode->fieldnums = list_copy(fstore->fieldnums); 0.00 : 5e0a65: 49 8b 7c 24 18 mov 0x18(%r12),%rdi : return (Node *) newnode; 0.00 : 5e0a6a: 49 89 dc mov %rbx,%r12 : FieldStore *newnode; : : FLATCOPY(newnode, fstore, FieldStore); : MUTATE(newnode->arg, fstore->arg, Expr *); : MUTATE(newnode->newvals, fstore->newvals, List *); : newnode->fieldnums = list_copy(fstore->fieldnums); 0.00 : 5e0a6d: e8 8e 0c 00 00 callq 5e1700 0.00 : 5e0a72: 48 89 43 18 mov %rax,0x18(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e0a76: e9 a5 f6 ff ff jmpq 5e0120 0.00 : 5e0a7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0a80: 3d 32 01 00 00 cmp $0x132,%eax 0.00 : 5e0a85: 74 63 je 5e0aea 0.00 : 5e0a87: 3d 33 01 00 00 cmp $0x133,%eax 0.00 : 5e0a8c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5e0a90: 0f 85 9a f8 ff ff jne 5e0330 : case T_WindowFunc: : { : WindowFunc *wfunc = (WindowFunc *) node; : WindowFunc *newnode; : : FLATCOPY(newnode, wfunc, WindowFunc); 0.00 : 5e0a96: bf 38 00 00 00 mov $0x38,%edi 0.00 : 5e0a9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0aa0: e8 ab 82 1b 00 callq 798d50 0.00 : 5e0aa5: 48 89 c3 mov %rax,%rbx 0.00 : 5e0aa8: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0aac: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0aaf: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0ab4: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e0ab8: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0abd: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0ac1: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e0ac6: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0aca: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0acf: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0ad3: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e0ad8: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e0adc: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e0ae1: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e0ae5: e9 ef fe ff ff jmpq 5e09d9 : case T_Aggref: : { : Aggref *aggref = (Aggref *) node; : Aggref *newnode; : : FLATCOPY(newnode, aggref, Aggref); 0.00 : 5e0aea: bf 50 00 00 00 mov $0x50,%edi 0.00 : 5e0aef: e8 5c 82 1b 00 callq 798d50 0.00 : 5e0af4: 48 89 c3 mov %rax,%rbx 0.00 : 5e0af7: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->aggdirectargs, aggref->aggdirectargs, List *); 0.00 : 5e0afb: 4c 89 f6 mov %r14,%rsi : case T_Aggref: : { : Aggref *aggref = (Aggref *) node; : Aggref *newnode; : : FLATCOPY(newnode, aggref, Aggref); 0.00 : 5e0afe: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0b01: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0b06: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e0b0a: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0b0f: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0b13: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e0b18: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0b1c: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0b21: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0b25: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e0b2a: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e0b2e: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e0b33: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e0b37: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 5e0b3c: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 5e0b40: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 5e0b45: 48 89 43 40 mov %rax,0x40(%rbx) 0.00 : 5e0b49: 49 8b 44 24 48 mov 0x48(%r12),%rax 0.00 : 5e0b4e: 48 89 43 48 mov %rax,0x48(%rbx) : MUTATE(newnode->aggdirectargs, aggref->aggdirectargs, List *); 0.00 : 5e0b52: 31 c0 xor %eax,%eax 0.00 : 5e0b54: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 5e0b59: 41 ff d7 callq *%r15 : MUTATE(newnode->args, aggref->args, List *); 0.00 : 5e0b5c: 4c 89 f6 mov %r14,%rsi : { : Aggref *aggref = (Aggref *) node; : Aggref *newnode; : : FLATCOPY(newnode, aggref, Aggref); : MUTATE(newnode->aggdirectargs, aggref->aggdirectargs, List *); 0.00 : 5e0b5f: 48 89 43 18 mov %rax,0x18(%rbx) : MUTATE(newnode->args, aggref->args, List *); 0.00 : 5e0b63: 31 c0 xor %eax,%eax 0.00 : 5e0b65: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 5e0b6a: 41 ff d7 callq *%r15 : MUTATE(newnode->aggorder, aggref->aggorder, List *); 0.00 : 5e0b6d: 4c 89 f6 mov %r14,%rsi : Aggref *aggref = (Aggref *) node; : Aggref *newnode; : : FLATCOPY(newnode, aggref, Aggref); : MUTATE(newnode->aggdirectargs, aggref->aggdirectargs, List *); : MUTATE(newnode->args, aggref->args, List *); 0.00 : 5e0b70: 48 89 43 20 mov %rax,0x20(%rbx) : MUTATE(newnode->aggorder, aggref->aggorder, List *); 0.00 : 5e0b74: 31 c0 xor %eax,%eax 0.00 : 5e0b76: 49 8b 7c 24 28 mov 0x28(%r12),%rdi 0.00 : 5e0b7b: 41 ff d7 callq *%r15 0.00 : 5e0b7e: 48 89 43 28 mov %rax,0x28(%rbx) : WindowClause *newnode; : : FLATCOPY(newnode, wc, WindowClause); : MUTATE(newnode->partitionClause, wc->partitionClause, List *); : MUTATE(newnode->orderClause, wc->orderClause, List *); : MUTATE(newnode->startOffset, wc->startOffset, Node *); 0.00 : 5e0b82: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 5e0b87: 4c 89 f6 mov %r14,%rsi 0.00 : 5e0b8a: 31 c0 xor %eax,%eax 0.00 : 5e0b8c: 41 ff d7 callq *%r15 : MUTATE(newnode->endOffset, wc->endOffset, Node *); 0.00 : 5e0b8f: 4c 89 f6 mov %r14,%rsi : WindowClause *newnode; : : FLATCOPY(newnode, wc, WindowClause); : MUTATE(newnode->partitionClause, wc->partitionClause, List *); : MUTATE(newnode->orderClause, wc->orderClause, List *); : MUTATE(newnode->startOffset, wc->startOffset, Node *); 0.00 : 5e0b92: 48 89 43 30 mov %rax,0x30(%rbx) : MUTATE(newnode->endOffset, wc->endOffset, Node *); 0.00 : 5e0b96: 31 c0 xor %eax,%eax 0.00 : 5e0b98: 49 8b 7c 24 38 mov 0x38(%r12),%rdi : return (Node *) newnode; 0.00 : 5e0b9d: 49 89 dc mov %rbx,%r12 : : FLATCOPY(newnode, wc, WindowClause); : MUTATE(newnode->partitionClause, wc->partitionClause, List *); : MUTATE(newnode->orderClause, wc->orderClause, List *); : MUTATE(newnode->startOffset, wc->startOffset, Node *); : MUTATE(newnode->endOffset, wc->endOffset, Node *); 0.00 : 5e0ba0: 41 ff d7 callq *%r15 0.00 : 5e0ba3: 48 89 43 38 mov %rax,0x38(%rbx) : (int) nodeTag(node)); : break; : } : /* can't get here, but keep compiler happy */ : return NULL; : } 0.00 : 5e0ba7: e9 74 f5 ff ff jmpq 5e0120 0.00 : 5e0bac: 0f 1f 40 00 nopl 0x0(%rax) : return NULL; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); : : switch (nodeTag(node)) 0.00 : 5e0bb0: 3d 9e 03 00 00 cmp $0x39e,%eax 0.00 : 5e0bb5: 0f 84 8a 00 00 00 je 5e0c45 0.00 : 5e0bbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0bc0: 0f 82 1a f7 ff ff jb 5e02e0 0.00 : 5e0bc6: 3d a9 03 00 00 cmp $0x3a9,%eax 0.00 : 5e0bcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0bd0: 0f 85 5a f7 ff ff jne 5e0330 : case T_CommonTableExpr: : { : CommonTableExpr *cte = (CommonTableExpr *) node; : CommonTableExpr *newnode; : : FLATCOPY(newnode, cte, CommonTableExpr); 0.00 : 5e0bd6: bf 50 00 00 00 mov $0x50,%edi 0.00 : 5e0bdb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e0be0: e8 6b 81 1b 00 callq 798d50 0.00 : 5e0be5: 48 89 c3 mov %rax,%rbx 0.00 : 5e0be8: 49 8b 04 24 mov (%r12),%rax 0.00 : 5e0bec: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0bef: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0bf4: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e0bf8: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0bfd: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0c01: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e0c06: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0c0a: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0c0f: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0c13: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e0c18: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e0c1c: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e0c21: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e0c25: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 5e0c2a: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 5e0c2e: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 5e0c33: 48 89 43 40 mov %rax,0x40(%rbx) 0.00 : 5e0c37: 49 8b 44 24 48 mov 0x48(%r12),%rax 0.00 : 5e0c3c: 48 89 43 48 mov %rax,0x48(%rbx) 0.00 : 5e0c40: e9 c3 f9 ff ff jmpq 5e0608 : case T_WindowClause: : { : WindowClause *wc = (WindowClause *) node; : WindowClause *newnode; : : FLATCOPY(newnode, wc, WindowClause); 0.00 : 5e0c45: bf 48 00 00 00 mov $0x48,%edi 0.00 : 5e0c4a: e8 01 81 1b 00 callq 798d50 0.00 : 5e0c4f: 48 89 c3 mov %rax,%rbx 0.00 : 5e0c52: 49 8b 04 24 mov (%r12),%rax : MUTATE(newnode->partitionClause, wc->partitionClause, List *); 0.00 : 5e0c56: 4c 89 f6 mov %r14,%rsi : case T_WindowClause: : { : WindowClause *wc = (WindowClause *) node; : WindowClause *newnode; : : FLATCOPY(newnode, wc, WindowClause); 0.00 : 5e0c59: 48 89 03 mov %rax,(%rbx) 0.00 : 5e0c5c: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 5e0c61: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 5e0c65: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 5e0c6a: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5e0c6e: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 5e0c73: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 5e0c77: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 5e0c7c: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0c80: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 5e0c85: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 5e0c89: 49 8b 44 24 30 mov 0x30(%r12),%rax 0.00 : 5e0c8e: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5e0c92: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 5e0c97: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 5e0c9b: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 5e0ca0: 48 89 43 40 mov %rax,0x40(%rbx) : MUTATE(newnode->partitionClause, wc->partitionClause, List *); 0.00 : 5e0ca4: 31 c0 xor %eax,%eax 0.00 : 5e0ca6: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 5e0cab: 41 ff d7 callq *%r15 : MUTATE(newnode->orderClause, wc->orderClause, List *); 0.00 : 5e0cae: 4c 89 f6 mov %r14,%rsi : { : WindowClause *wc = (WindowClause *) node; : WindowClause *newnode; : : FLATCOPY(newnode, wc, WindowClause); : MUTATE(newnode->partitionClause, wc->partitionClause, List *); 0.00 : 5e0cb1: 48 89 43 18 mov %rax,0x18(%rbx) : MUTATE(newnode->orderClause, wc->orderClause, List *); 0.00 : 5e0cb5: 31 c0 xor %eax,%eax 0.00 : 5e0cb7: 49 8b 7c 24 20 mov 0x20(%r12),%rdi 0.00 : 5e0cbc: 41 ff d7 callq *%r15 0.00 : 5e0cbf: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 5e0cc3: e9 ba fe ff ff jmpq 5e0b82 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:1112 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e2150 : : * On return, the argument to this function has been freed, so the : * caller would be wise to set it to NIL for safety's sake. : */ : void : list_free(List *list) : { 0.00 : 5e2150: 55 push %rbp : list_free_private(list, false); /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:1112 100.00 : 5e2151: 31 f6 xor %esi,%esi : * On return, the argument to this function has been freed, so the : * caller would be wise to set it to NIL for safety's sake. : */ : void : list_free(List *list) : { 0.00 : 5e2153: 48 89 e5 mov %rsp,%rbp : list_free_private(list, false); : } 0.00 : 5e2156: c9 leaveq : * caller would be wise to set it to NIL for safety's sake. : */ : void : list_free(List *list) : { : list_free_private(list, false); 0.00 : 5e2157: e9 64 ff ff ff jmpq 5e20c0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:400 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3de0 : : } : : /* Process one page of b during a union op */ : static void : tbm_union_page(TIDBitmap *a, const PagetableEntry *bpage) : { 0.00 : 5e3de0: 55 push %rbp 0.00 : 5e3de1: 48 89 e5 mov %rsp,%rbp 0.00 : 5e3de4: 41 57 push %r15 0.00 : 5e3de6: 49 89 ff mov %rdi,%r15 0.00 : 5e3de9: 41 56 push %r14 0.00 : 5e3deb: 49 89 f6 mov %rsi,%r14 0.00 : 5e3dee: 41 55 push %r13 0.00 : 5e3df0: 41 54 push %r12 0.00 : 5e3df2: 53 push %rbx 0.00 : 5e3df3: 48 83 ec 08 sub $0x8,%rsp : PagetableEntry *apage; : int wordnum; : : if (bpage->ischunk) 0.00 : 5e3df7: 80 7e 04 00 cmpb $0x0,0x4(%rsi) 0.00 : 5e3dfb: 74 6b je 5e3e68 0.00 : 5e3dfd: 45 31 ed xor %r13d,%r13d : { : /* Scan b's chunk, mark each indicated page lossy in a */ : for (wordnum = 0; wordnum < WORDS_PER_CHUNK; wordnum++) : { : bitmapword w = bpage->words[wordnum]; 0.00 : 5e3e00: 43 8b 5c 2e 08 mov 0x8(%r14,%r13,1),%ebx : : if (w != 0) 0.00 : 5e3e05: 85 db test %ebx,%ebx 0.00 : 5e3e07: 74 37 je 5e3e40 : { : BlockNumber pg; : : pg = bpage->blockno + (wordnum * BITS_PER_BITMAPWORD); 0.00 : 5e3e09: 46 8d 24 ed 00 00 00 lea 0x0(,%r13,8),%r12d 0.00 : 5e3e10: 00 0.00 : 5e3e11: 45 03 26 add (%r14),%r12d 0.00 : 5e3e14: eb 12 jmp 5e3e28 0.00 : 5e3e16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5e3e1d: 00 00 00 : while (w != 0) 0.00 : 5e3e20: d1 eb shr %ebx 0.00 : 5e3e22: 74 1c je 5e3e40 : { : if (w & 1) : tbm_mark_page_lossy(a, pg); : pg++; 0.00 : 5e3e24: 41 83 c4 01 add $0x1,%r12d : BlockNumber pg; : : pg = bpage->blockno + (wordnum * BITS_PER_BITMAPWORD); : while (w != 0) : { : if (w & 1) 0.00 : 5e3e28: f6 c3 01 test $0x1,%bl 0.00 : 5e3e2b: 74 f3 je 5e3e20 : tbm_mark_page_lossy(a, pg); 0.00 : 5e3e2d: 44 89 e6 mov %r12d,%esi 0.00 : 5e3e30: 4c 89 ff mov %r15,%rdi 0.00 : 5e3e33: e8 b8 fc ff ff callq 5e3af0 : if (w != 0) : { : BlockNumber pg; : : pg = bpage->blockno + (wordnum * BITS_PER_BITMAPWORD); : while (w != 0) 0.00 : 5e3e38: d1 eb shr %ebx 0.00 : 5e3e3a: 75 e8 jne 5e3e24 0.00 : 5e3e3c: 0f 1f 40 00 nopl 0x0(%rax) : { : if (w & 1) : tbm_mark_page_lossy(a, pg); : pg++; 0.00 : 5e3e40: 49 83 c5 04 add $0x4,%r13 : int wordnum; : : if (bpage->ischunk) : { : /* Scan b's chunk, mark each indicated page lossy in a */ : for (wordnum = 0; wordnum < WORDS_PER_CHUNK; wordnum++) 0.00 : 5e3e44: 49 83 fd 20 cmp $0x20,%r13 0.00 : 5e3e48: 75 b6 jne 5e3e00 : apage->words[wordnum] |= bpage->words[wordnum]; : apage->recheck |= bpage->recheck; : } : } : : if (a->nentries > a->maxentries) 0.00 : 5e3e4a: 41 8b 47 20 mov 0x20(%r15),%eax 0.00 : 5e3e4e: 41 3b 47 24 cmp 0x24(%r15),%eax 0.00 : 5e3e52: 7f 3b jg 5e3e8f : tbm_lossify(a); : } 0.00 : 5e3e54: 48 83 c4 08 add $0x8,%rsp 0.00 : 5e3e58: 5b pop %rbx 0.00 : 5e3e59: 41 5c pop %r12 0.00 : 5e3e5b: 41 5d pop %r13 0.00 : 5e3e5d: 41 5e pop %r14 0.00 : 5e3e5f: 41 5f pop %r15 0.00 : 5e3e61: c9 leaveq 0.00 : 5e3e62: c3 retq 0.00 : 5e3e63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : w >>= 1; : } : } : } : } : else if (tbm_page_is_lossy(a, bpage->blockno)) 0.00 : 5e3e68: 8b 36 mov (%rsi),%esi 0.00 : 5e3e6a: e8 31 f8 ff ff callq 5e36a0 0.00 : 5e3e6f: 84 c0 test %al,%al 0.00 : 5e3e71: 75 e1 jne 5e3e54 : /* page is already lossy in a, nothing to do */ : return; : } : else : { : apage = tbm_get_pageentry(a, bpage->blockno); 0.00 : 5e3e73: 41 8b 36 mov (%r14),%esi 0.00 : 5e3e76: 4c 89 ff mov %r15,%rdi 0.00 : 5e3e79: e8 f2 fd ff ff callq 5e3c70 : if (apage->ischunk) : { : /* The page is a lossy chunk header, set bit for itself */ : apage->words[0] |= ((bitmapword) 1 << 0); 0.00 : 5e3e7e: 31 d2 xor %edx,%edx : return; : } : else : { : apage = tbm_get_pageentry(a, bpage->blockno); : if (apage->ischunk) 0.00 : 5e3e80: 80 78 04 00 cmpb $0x0,0x4(%rax) : /* page is already lossy in a, nothing to do */ : return; : } : else : { : apage = tbm_get_pageentry(a, bpage->blockno); 0.00 : 5e3e84: 48 89 c1 mov %rax,%rcx : if (apage->ischunk) 0.00 : 5e3e87: 74 1f je 5e3ea8 : { : /* The page is a lossy chunk header, set bit for itself */ : apage->words[0] |= ((bitmapword) 1 << 0); 0.00 : 5e3e89: 83 48 08 01 orl $0x1,0x8(%rax) 0.00 : 5e3e8d: eb bb jmp 5e3e4a : } : } : : if (a->nentries > a->maxentries) : tbm_lossify(a); : } 0.00 : 5e3e8f: 48 83 c4 08 add $0x8,%rsp : apage->recheck |= bpage->recheck; : } : } : : if (a->nentries > a->maxentries) : tbm_lossify(a); 0.00 : 5e3e93: 4c 89 ff mov %r15,%rdi : } 0.00 : 5e3e96: 5b pop %rbx 0.00 : 5e3e97: 41 5c pop %r12 0.00 : 5e3e99: 41 5d pop %r13 0.00 : 5e3e9b: 41 5e pop %r14 0.00 : 5e3e9d: 41 5f pop %r15 0.00 : 5e3e9f: c9 leaveq : apage->recheck |= bpage->recheck; : } : } : : if (a->nentries > a->maxentries) : tbm_lossify(a); 0.00 : 5e3ea0: e9 9b fe ff ff jmpq 5e3d40 0.00 : 5e3ea5: 0f 1f 00 nopl (%rax) : } : else : { : /* Both pages are exact, merge at the bit level */ : for (wordnum = 0; wordnum < WORDS_PER_PAGE; wordnum++) : apage->words[wordnum] |= bpage->words[wordnum]; 0.00 : 5e3ea8: 41 8b 44 16 08 mov 0x8(%r14,%rdx,1),%eax 0.00 : 5e3ead: 09 44 11 08 or %eax,0x8(%rcx,%rdx,1) /home/Computational/mark/src/postgres-andres/src/backend/nodes/tidbitmap.c:400 100.00 : 5e3eb1: 48 83 c2 04 add $0x4,%rdx : apage->words[0] |= ((bitmapword) 1 << 0); : } : else : { : /* Both pages are exact, merge at the bit level */ : for (wordnum = 0; wordnum < WORDS_PER_PAGE; wordnum++) 0.00 : 5e3eb5: 48 83 fa 28 cmp $0x28,%rdx 0.00 : 5e3eb9: 75 ed jne 5e3ea8 : apage->words[wordnum] |= bpage->words[wordnum]; : apage->recheck |= bpage->recheck; 0.00 : 5e3ebb: 41 0f b6 46 05 movzbl 0x5(%r14),%eax 0.00 : 5e3ec0: 08 41 05 or %al,0x5(%rcx) 0.00 : 5e3ec3: eb 85 jmp 5e3e4a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/outfuncs.c:160 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005f2030 <_outNode>: : * _outNode - : * converts a Node into ascii string and append it to 'str' : */ : static void : _outNode(StringInfo str, const void *obj) : { 0.00 : 5f2030: 55 push %rbp 0.00 : 5f2031: 48 89 e5 mov %rsp,%rbp 0.00 : 5f2034: 41 57 push %r15 0.00 : 5f2036: 41 56 push %r14 0.00 : 5f2038: 49 89 fe mov %rdi,%r14 0.00 : 5f203b: 41 55 push %r13 0.00 : 5f203d: 49 89 f5 mov %rsi,%r13 0.00 : 5f2040: 41 54 push %r12 0.00 : 5f2042: 53 push %rbx 0.00 : 5f2043: 48 83 ec 18 sub $0x18,%rsp : if (obj == NULL) 0.00 : 5f2047: 48 85 f6 test %rsi,%rsi 0.00 : 5f204a: 0f 84 88 01 00 00 je 5f21d8 <_outNode+0x1a8> : appendStringInfoString(str, "<>"); : else if (IsA(obj, List) ||IsA(obj, IntList) || IsA(obj, OidList)) 0.00 : 5f2050: 8b 16 mov (%rsi),%edx 0.00 : 5f2052: 8d 82 70 fd ff ff lea -0x290(%rdx),%eax 0.00 : 5f2058: 83 f8 02 cmp $0x2,%eax 0.00 : 5f205b: 0f 86 8f 00 00 00 jbe 5f20f0 <_outNode+0xc0> : _outList(str, obj); : else if (IsA(obj, Integer) || 0.00 : 5f2061: 8d 82 75 fd ff ff lea -0x28b(%rdx),%eax 0.00 : 5f2067: 83 f8 03 cmp $0x3,%eax 0.00 : 5f206a: 76 6c jbe 5f20d8 <_outNode+0xa8> : /* nodeRead does not want to see { } around these! */ : _outValue(str, obj); : } : else : { : appendStringInfoChar(str, '{'); 0.00 : 5f206c: be 7b 00 00 00 mov $0x7b,%esi 0.00 : 5f2071: e8 1a fc fd ff callq 5d1c90 : switch (nodeTag(obj)) 0.00 : 5f2076: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 5f207a: 83 e8 64 sub $0x64,%eax 0.00 : 5f207d: 3d 45 03 00 00 cmp $0x345,%eax 0.00 : 5f2082: 0f 86 40 01 00 00 jbe 5f21c8 <_outNode+0x198> : : /* : * This should be an ERROR, but it's too useful to be able to : * dump structures that _outNode only understands part of. : */ : elog(WARNING, "could not dump unrecognized node type: %d", 0.00 : 5f2088: ba 00 9c 89 00 mov $0x899c00,%edx 0.00 : 5f208d: be c6 0c 00 00 mov $0xcc6,%esi 0.00 : 5f2092: bf 00 54 89 00 mov $0x895400,%edi 0.00 : 5f2097: e8 84 93 18 00 callq 77b420 0.00 : 5f209c: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 5f20a0: be 38 9c 89 00 mov $0x899c38,%esi 0.00 : 5f20a5: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5f20aa: 31 c0 xor %eax,%eax 0.00 : 5f20ac: e8 7f 91 18 00 callq 77b230 0.00 : 5f20b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : (int) nodeTag(obj)); : break; : } : appendStringInfoChar(str, '}'); 0.00 : 5f20b8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f20bb: be 7d 00 00 00 mov $0x7d,%esi 0.00 : 5f20c0: e8 cb fb fd ff callq 5d1c90 : } : } 0.00 : 5f20c5: 48 83 c4 18 add $0x18,%rsp 0.00 : 5f20c9: 5b pop %rbx 0.00 : 5f20ca: 41 5c pop %r12 0.00 : 5f20cc: 41 5d pop %r13 0.00 : 5f20ce: 41 5e pop %r14 0.00 : 5f20d0: 41 5f pop %r15 0.00 : 5f20d2: c9 leaveq 0.00 : 5f20d3: c3 retq 0.00 : 5f20d4: 0f 1f 40 00 nopl 0x0(%rax) : IsA(obj, Float) || : IsA(obj, String) || : IsA(obj, BitString)) : { : /* nodeRead does not want to see { } around these! */ : _outValue(str, obj); 0.00 : 5f20d8: e8 03 fe ff ff callq 5f1ee0 <_outValue> : (int) nodeTag(obj)); : break; : } : appendStringInfoChar(str, '}'); : } : } 0.00 : 5f20dd: 48 83 c4 18 add $0x18,%rsp 0.00 : 5f20e1: 5b pop %rbx 0.00 : 5f20e2: 41 5c pop %r12 0.00 : 5f20e4: 41 5d pop %r13 0.00 : 5f20e6: 41 5e pop %r14 0.00 : 5f20e8: 41 5f pop %r15 0.00 : 5f20ea: c9 leaveq 0.00 : 5f20eb: c3 retq 0.00 : 5f20ec: 0f 1f 40 00 nopl 0x0(%rax) : static void : _outList(StringInfo str, const List *node) : { : const ListCell *lc; : : appendStringInfoChar(str, '('); 0.00 : 5f20f0: be 28 00 00 00 mov $0x28,%esi 0.00 : 5f20f5: e8 96 fb fd ff callq 5d1c90 : : if (IsA(node, IntList)) 0.00 : 5f20fa: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 5f20fe: 3d 91 02 00 00 cmp $0x291,%eax 0.00 : 5f2103: 0f 84 3f 20 00 00 je 5f4148 <_outNode+0x2118> : appendStringInfoChar(str, 'i'); : else if (IsA(node, OidList)) 0.00 : 5f2109: 3d 92 02 00 00 cmp $0x292,%eax 0.00 : 5f210e: 0f 84 d3 00 00 00 je 5f21e7 <_outNode+0x1b7> : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5f2114: 49 8b 45 08 mov 0x8(%r13),%rax : appendStringInfoChar(str, 'o'); : : foreach(lc, node) 0.00 : 5f2118: 48 85 c0 test %rax,%rax 0.00 : 5f211b: 0f 84 87 00 00 00 je 5f21a8 <_outNode+0x178> 0.00 : 5f2121: 48 89 c3 mov %rax,%rbx 0.00 : 5f2124: eb 3a jmp 5f2160 <_outNode+0x130> 0.00 : 5f2126: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5f212d: 00 00 00 : { : _outNode(str, lfirst(lc)); : if (lnext(lc)) : appendStringInfoChar(str, ' '); : } : else if (IsA(node, IntList)) 0.00 : 5f2130: 3d 91 02 00 00 cmp $0x291,%eax 0.00 : 5f2135: 74 59 je 5f2190 <_outNode+0x160> : appendStringInfo(str, " %d", lfirst_int(lc)); : else if (IsA(node, OidList)) 0.00 : 5f2137: 3d 92 02 00 00 cmp $0x292,%eax 0.00 : 5f213c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5f2140: 0f 85 14 20 00 00 jne 5f415a <_outNode+0x212a> : appendStringInfo(str, " %u", lfirst_oid(lc)); 0.00 : 5f2146: 8b 13 mov (%rbx),%edx 0.00 : 5f2148: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f214d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2150: 31 c0 xor %eax,%eax 0.00 : 5f2152: e8 b9 fc fd ff callq 5d1e10 : if (IsA(node, IntList)) : appendStringInfoChar(str, 'i'); : else if (IsA(node, OidList)) : appendStringInfoChar(str, 'o'); : : foreach(lc, node) 0.00 : 5f2157: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5f215b: 48 85 db test %rbx,%rbx 0.00 : 5f215e: 74 48 je 5f21a8 <_outNode+0x178> : /* : * For the sake of backward compatibility, we emit a slightly : * different whitespace format for lists of nodes vs. other types of : * lists. XXX: is this necessary? : */ : if (IsA(node, List)) /home/Computational/mark/src/postgres-andres/src/backend/nodes/outfuncs.c:160 100.00 : 5f2160: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 5f2164: 3d 90 02 00 00 cmp $0x290,%eax 0.00 : 5f2169: 75 c5 jne 5f2130 <_outNode+0x100> : { : _outNode(str, lfirst(lc)); 0.00 : 5f216b: 48 8b 33 mov (%rbx),%rsi 0.00 : 5f216e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2171: e8 ba fe ff ff callq 5f2030 <_outNode> : if (lnext(lc)) 0.00 : 5f2176: 48 83 7b 08 00 cmpq $0x0,0x8(%rbx) 0.00 : 5f217b: 74 2b je 5f21a8 <_outNode+0x178> : appendStringInfoChar(str, ' '); 0.00 : 5f217d: be 20 00 00 00 mov $0x20,%esi 0.00 : 5f2182: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2185: e8 06 fb fd ff callq 5d1c90 0.00 : 5f218a: eb cb jmp 5f2157 <_outNode+0x127> 0.00 : 5f218c: 0f 1f 40 00 nopl 0x0(%rax) : } : else if (IsA(node, IntList)) : appendStringInfo(str, " %d", lfirst_int(lc)); 0.00 : 5f2190: 8b 13 mov (%rbx),%edx 0.00 : 5f2192: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f2197: 4c 89 f7 mov %r14,%rdi 0.00 : 5f219a: 31 c0 xor %eax,%eax 0.00 : 5f219c: e8 6f fc fd ff callq 5d1e10 0.00 : 5f21a1: eb b4 jmp 5f2157 <_outNode+0x127> 0.00 : 5f21a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : else : elog(ERROR, "unrecognized list node type: %d", : (int) node->type); : } : : appendStringInfoChar(str, ')'); 0.00 : 5f21a8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f21ab: be 29 00 00 00 mov $0x29,%esi 0.00 : 5f21b0: e8 db fa fd ff callq 5d1c90 : (int) nodeTag(obj)); : break; : } : appendStringInfoChar(str, '}'); : } : } 0.00 : 5f21b5: 48 83 c4 18 add $0x18,%rsp 0.00 : 5f21b9: 5b pop %rbx 0.00 : 5f21ba: 41 5c pop %r12 0.00 : 5f21bc: 41 5d pop %r13 0.00 : 5f21be: 41 5e pop %r14 0.00 : 5f21c0: 41 5f pop %r15 0.00 : 5f21c2: c9 leaveq 0.00 : 5f21c3: c3 retq 0.00 : 5f21c4: 0f 1f 40 00 nopl 0x0(%rax) : _outValue(str, obj); : } : else : { : appendStringInfoChar(str, '{'); : switch (nodeTag(obj)) 0.00 : 5f21c8: 89 c0 mov %eax,%eax 0.00 : 5f21ca: ff 24 c5 08 81 89 00 jmpq *0x898108(,%rax,8) 0.00 : 5f21d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : static void : _outNode(StringInfo str, const void *obj) : { : if (obj == NULL) : appendStringInfoString(str, "<>"); 0.00 : 5f21d8: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 5f21dd: e8 6e fb fd ff callq 5d1d50 0.00 : 5f21e2: e9 f6 fe ff ff jmpq 5f20dd <_outNode+0xad> : appendStringInfoChar(str, '('); : : if (IsA(node, IntList)) : appendStringInfoChar(str, 'i'); : else if (IsA(node, OidList)) : appendStringInfoChar(str, 'o'); 0.00 : 5f21e7: be 6f 00 00 00 mov $0x6f,%esi 0.00 : 5f21ec: 4c 89 f7 mov %r14,%rdi 0.00 : 5f21ef: e8 9c fa fd ff callq 5d1c90 0.00 : 5f21f4: e9 1b ff ff ff jmpq 5f2114 <_outNode+0xe4> : : : static void : _outPlan(StringInfo str, const Plan *node) : { : WRITE_NODE_TYPE("PLAN"); 0.00 : 5f21f9: 4c 89 f7 mov %r14,%rdi 0.00 : 5f21fc: be 8f be 87 00 mov $0x87be8f,%esi 0.00 : 5f2201: e8 4a fb fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f2206: 4c 89 ee mov %r13,%rsi 0.00 : 5f2209: 4c 89 f7 mov %r14,%rdi 0.00 : 5f220c: e8 5f 20 00 00 callq 5f4270 <_outPlanInfo> 0.00 : 5f2211: e9 a2 fe ff ff jmpq 5f20b8 <_outNode+0x88> : static void : _outMergeAppend(StringInfo str, const MergeAppend *node) : { : int i; : : WRITE_NODE_TYPE("MERGEAPPEND"); 0.00 : 5f2216: be b6 55 89 00 mov $0x8955b6,%esi 0.00 : 5f221b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f221e: e8 2d fb fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f2223: 4c 89 ee mov %r13,%rsi 0.00 : 5f2226: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2229: e8 42 20 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_NODE_FIELD(mergeplans); 0.00 : 5f222e: 31 c0 xor %eax,%eax 0.00 : 5f2230: be c2 55 89 00 mov $0x8955c2,%esi 0.00 : 5f2235: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2238: e8 d3 fb fd ff callq 5d1e10 0.00 : 5f223d: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 5f2241: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2244: e8 e7 fd ff ff callq 5f2030 <_outNode> : : WRITE_INT_FIELD(numCols); 0.00 : 5f2249: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f224d: 31 c0 xor %eax,%eax 0.00 : 5f224f: be d0 55 89 00 mov $0x8955d0,%esi 0.00 : 5f2254: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2257: e8 b4 fb fd ff callq 5d1e10 : : appendStringInfoString(str, " :sortColIdx"); 0.00 : 5f225c: be dd 55 89 00 mov $0x8955dd,%esi 0.00 : 5f2261: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2264: e8 e7 fa fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f2269: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f226d: 85 d2 test %edx,%edx 0.00 : 5f226f: 7e 25 jle 5f2296 <_outNode+0x266> 0.00 : 5f2271: 31 db xor %ebx,%ebx : appendStringInfo(str, " %d", node->sortColIdx[i]); 0.00 : 5f2273: 49 8b 55 70 mov 0x70(%r13),%rdx 0.00 : 5f2277: 48 63 c3 movslq %ebx,%rax 0.00 : 5f227a: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f227f: 4c 89 f7 mov %r14,%rdi : WRITE_NODE_FIELD(mergeplans); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2282: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %d", node->sortColIdx[i]); 0.00 : 5f2285: 0f bf 14 42 movswl (%rdx,%rax,2),%edx 0.00 : 5f2289: 31 c0 xor %eax,%eax 0.00 : 5f228b: e8 80 fb fd ff callq 5d1e10 : WRITE_NODE_FIELD(mergeplans); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2290: 41 3b 5d 68 cmp 0x68(%r13),%ebx 0.00 : 5f2294: 7c dd jl 5f2273 <_outNode+0x243> : appendStringInfo(str, " %d", node->sortColIdx[i]); : : appendStringInfoString(str, " :sortOperators"); 0.00 : 5f2296: be ea 55 89 00 mov $0x8955ea,%esi 0.00 : 5f229b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f229e: e8 ad fa fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f22a3: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5f22a7: 85 c0 test %eax,%eax 0.00 : 5f22a9: 7e 24 jle 5f22cf <_outNode+0x29f> 0.00 : 5f22ab: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->sortOperators[i]); 0.00 : 5f22ad: 49 8b 55 78 mov 0x78(%r13),%rdx 0.00 : 5f22b1: 48 63 c3 movslq %ebx,%rax 0.00 : 5f22b4: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f22b9: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->sortColIdx[i]); : : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f22bc: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->sortOperators[i]); 0.00 : 5f22bf: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f22c2: 31 c0 xor %eax,%eax 0.00 : 5f22c4: e8 47 fb fd ff callq 5d1e10 : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->sortColIdx[i]); : : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f22c9: 41 3b 5d 68 cmp 0x68(%r13),%ebx 0.00 : 5f22cd: 7c de jl 5f22ad <_outNode+0x27d> : appendStringInfo(str, " %u", node->sortOperators[i]); : : appendStringInfoString(str, " :collations"); 0.00 : 5f22cf: be fa 55 89 00 mov $0x8955fa,%esi 0.00 : 5f22d4: 4c 89 f7 mov %r14,%rdi 0.00 : 5f22d7: e8 74 fa fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f22dc: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5f22e0: 85 c0 test %eax,%eax 0.00 : 5f22e2: 7e 27 jle 5f230b <_outNode+0x2db> 0.00 : 5f22e4: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->collations[i]); 0.00 : 5f22e6: 49 8b 95 80 00 00 00 mov 0x80(%r13),%rdx 0.00 : 5f22ed: 48 63 c3 movslq %ebx,%rax 0.00 : 5f22f0: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f22f5: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->sortOperators[i]); : : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f22f8: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->collations[i]); 0.00 : 5f22fb: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f22fe: 31 c0 xor %eax,%eax 0.00 : 5f2300: e8 0b fb fd ff callq 5d1e10 : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->sortOperators[i]); : : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2305: 41 3b 5d 68 cmp 0x68(%r13),%ebx 0.00 : 5f2309: 7c db jl 5f22e6 <_outNode+0x2b6> : appendStringInfo(str, " %u", node->collations[i]); : : appendStringInfoString(str, " :nullsFirst"); 0.00 : 5f230b: be 07 56 89 00 mov $0x895607,%esi 0.00 : 5f2310: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2313: e8 38 fa fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f2318: 41 8b 45 68 mov 0x68(%r13),%eax 0.00 : 5f231c: 85 c0 test %eax,%eax 0.00 : 5f231e: 0f 8e 94 fd ff ff jle 5f20b8 <_outNode+0x88> 0.00 : 5f2324: 31 db xor %ebx,%ebx : appendStringInfo(str, " %s", booltostr(node->nullsFirst[i])); 0.00 : 5f2326: 41 bc 1e 93 8e 00 mov $0x8e931e,%r12d 0.00 : 5f232c: 41 bf c2 27 7b 00 mov $0x7b27c2,%r15d 0.00 : 5f2332: 49 8b 95 88 00 00 00 mov 0x88(%r13),%rdx 0.00 : 5f2339: 48 63 c3 movslq %ebx,%rax 0.00 : 5f233c: be 60 a7 8c 00 mov $0x8ca760,%esi 0.00 : 5f2341: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2344: 80 3c 02 00 cmpb $0x0,(%rdx,%rax,1) 0.00 : 5f2348: 4c 89 fa mov %r15,%rdx 0.00 : 5f234b: 49 0f 45 d4 cmovne %r12,%rdx 0.00 : 5f234f: 31 c0 xor %eax,%eax : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->collations[i]); : : appendStringInfoString(str, " :nullsFirst"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2351: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %s", booltostr(node->nullsFirst[i])); 0.00 : 5f2354: e8 b7 fa fd ff callq 5d1e10 : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->collations[i]); : : appendStringInfoString(str, " :nullsFirst"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2359: 41 3b 5d 68 cmp 0x68(%r13),%ebx 0.00 : 5f235d: 7c d3 jl 5f2332 <_outNode+0x302> 0.00 : 5f235f: e9 54 fd ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outAppend(StringInfo str, const Append *node) : { : WRITE_NODE_TYPE("APPEND"); 0.00 : 5f2364: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2367: be bb 55 89 00 mov $0x8955bb,%esi 0.00 : 5f236c: e8 df f9 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f2371: 4c 89 ee mov %r13,%rsi 0.00 : 5f2374: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2377: e8 f4 1e 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_NODE_FIELD(appendplans); 0.00 : 5f237c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f237f: be a7 55 89 00 mov $0x8955a7,%esi 0.00 : 5f2384: 31 c0 xor %eax,%eax 0.00 : 5f2386: e8 85 fa fd ff callq 5d1e10 0.00 : 5f238b: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 5f238f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2392: e8 99 fc ff ff callq 5f2030 <_outNode> 0.00 : 5f2397: e9 1c fd ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outModifyTable(StringInfo str, const ModifyTable *node) : { : WRITE_NODE_TYPE("MODIFYTABLE"); 0.00 : 5f239c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f239f: be 27 55 89 00 mov $0x895527,%esi 0.00 : 5f23a4: e8 a7 f9 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f23a9: 4c 89 ee mov %r13,%rsi 0.00 : 5f23ac: 4c 89 f7 mov %r14,%rdi 0.00 : 5f23af: e8 bc 1e 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_ENUM_FIELD(operation, CmdType); 0.00 : 5f23b4: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f23b8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f23bb: 31 c0 xor %eax,%eax 0.00 : 5f23bd: be 33 55 89 00 mov $0x895533,%esi 0.00 : 5f23c2: e8 49 fa fd ff callq 5d1e10 : WRITE_BOOL_FIELD(canSetTag); 0.00 : 5f23c7: 41 80 7d 64 00 cmpb $0x0,0x64(%r13) 0.00 : 5f23cc: b8 1e 93 8e 00 mov $0x8e931e,%eax 0.00 : 5f23d1: ba c2 27 7b 00 mov $0x7b27c2,%edx 0.00 : 5f23d6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f23d9: be 5c 54 89 00 mov $0x89545c,%esi 0.00 : 5f23de: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 5f23e2: 31 c0 xor %eax,%eax 0.00 : 5f23e4: e8 27 fa fd ff callq 5d1e10 : WRITE_NODE_FIELD(resultRelations); 0.00 : 5f23e9: 31 c0 xor %eax,%eax 0.00 : 5f23eb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f23ee: be 94 54 89 00 mov $0x895494,%esi 0.00 : 5f23f3: e8 18 fa fd ff callq 5d1e10 0.00 : 5f23f8: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f23fc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f23ff: e8 2c fc ff ff callq 5f2030 <_outNode> : WRITE_INT_FIELD(resultRelIndex); 0.00 : 5f2404: 41 8b 55 70 mov 0x70(%r13),%edx 0.00 : 5f2408: 4c 89 f7 mov %r14,%rdi 0.00 : 5f240b: 31 c0 xor %eax,%eax 0.00 : 5f240d: be 42 55 89 00 mov $0x895542,%esi 0.00 : 5f2412: e8 f9 f9 fd ff callq 5d1e10 : WRITE_NODE_FIELD(plans); 0.00 : 5f2417: 31 c0 xor %eax,%eax 0.00 : 5f2419: 4c 89 f7 mov %r14,%rdi 0.00 : 5f241c: be 56 55 89 00 mov $0x895556,%esi 0.00 : 5f2421: e8 ea f9 fd ff callq 5d1e10 0.00 : 5f2426: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5f242a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f242d: e8 fe fb ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(withCheckOptionLists); 0.00 : 5f2432: 31 c0 xor %eax,%eax 0.00 : 5f2434: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2437: be 5f 55 89 00 mov $0x89555f,%esi 0.00 : 5f243c: e8 cf f9 fd ff callq 5d1e10 0.00 : 5f2441: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 5f2448: 4c 89 f7 mov %r14,%rdi 0.00 : 5f244b: e8 e0 fb ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(returningLists); 0.00 : 5f2450: 31 c0 xor %eax,%eax 0.00 : 5f2452: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2455: be 77 55 89 00 mov $0x895577,%esi 0.00 : 5f245a: e8 b1 f9 fd ff callq 5d1e10 0.00 : 5f245f: 49 8b b5 88 00 00 00 mov 0x88(%r13),%rsi 0.00 : 5f2466: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2469: e8 c2 fb ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(fdwPrivLists); 0.00 : 5f246e: 31 c0 xor %eax,%eax 0.00 : 5f2470: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2473: be 89 55 89 00 mov $0x895589,%esi 0.00 : 5f2478: e8 93 f9 fd ff callq 5d1e10 0.00 : 5f247d: 49 8b b5 90 00 00 00 mov 0x90(%r13),%rsi 0.00 : 5f2484: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2487: e8 a4 fb ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(rowMarks); 0.00 : 5f248c: 31 c0 xor %eax,%eax 0.00 : 5f248e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2491: be d3 54 89 00 mov $0x8954d3,%esi 0.00 : 5f2496: e8 75 f9 fd ff callq 5d1e10 0.00 : 5f249b: 49 8b b5 98 00 00 00 mov 0x98(%r13),%rsi 0.00 : 5f24a2: 4c 89 f7 mov %r14,%rdi 0.00 : 5f24a5: e8 86 fb ff ff callq 5f2030 <_outNode> : WRITE_INT_FIELD(epqParam); 0.00 : 5f24aa: 41 8b 95 a0 00 00 00 mov 0xa0(%r13),%edx 0.00 : 5f24b1: be 99 55 89 00 mov $0x895599,%esi 0.00 : 5f24b6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f24b9: 31 c0 xor %eax,%eax 0.00 : 5f24bb: e8 50 f9 fd ff callq 5d1e10 : case T_Result: : _outResult(str, obj); : break; : case T_ModifyTable: : _outModifyTable(str, obj); : break; 0.00 : 5f24c0: e9 f3 fb ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outResult(StringInfo str, const Result *node) : { : WRITE_NODE_TYPE("RESULT"); 0.00 : 5f24c5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f24c8: be 0d 55 89 00 mov $0x89550d,%esi 0.00 : 5f24cd: e8 7e f8 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f24d2: 4c 89 ee mov %r13,%rsi 0.00 : 5f24d5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f24d8: e8 93 1d 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_NODE_FIELD(resconstantqual); 0.00 : 5f24dd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f24e0: be 14 55 89 00 mov $0x895514,%esi 0.00 : 5f24e5: 31 c0 xor %eax,%eax 0.00 : 5f24e7: e8 24 f9 fd ff callq 5d1e10 0.00 : 5f24ec: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 5f24f0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f24f3: e8 38 fb ff ff callq 5f2030 <_outNode> 0.00 : 5f24f8: e9 bb fb ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outBitmapIndexScan(StringInfo str, const BitmapIndexScan *node) : { : WRITE_NODE_TYPE("BITMAPINDEXSCAN"); 0.00 : 5f24fd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2500: be 03 57 89 00 mov $0x895703,%esi 0.00 : 5f2505: e8 46 f8 fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f250a: 4c 89 ee mov %r13,%rsi 0.00 : 5f250d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2510: e8 8b 1e 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_OID_FIELD(indexid); 0.00 : 5f2515: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f2519: 4c 89 f7 mov %r14,%rdi 0.00 : 5f251c: 31 c0 xor %eax,%eax 0.00 : 5f251e: be 85 56 89 00 mov $0x895685,%esi 0.00 : 5f2523: e8 e8 f8 fd ff callq 5d1e10 : WRITE_NODE_FIELD(indexqual); 0.00 : 5f2528: 31 c0 xor %eax,%eax 0.00 : 5f252a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f252d: be 92 56 89 00 mov $0x895692,%esi 0.00 : 5f2532: e8 d9 f8 fd ff callq 5d1e10 0.00 : 5f2537: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5f253b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f253e: e8 ed fa ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(indexqualorig); 0.00 : 5f2543: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2546: be 9f 56 89 00 mov $0x89569f,%esi 0.00 : 5f254b: 31 c0 xor %eax,%eax 0.00 : 5f254d: e8 be f8 fd ff callq 5d1e10 0.00 : 5f2552: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5f2556: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2559: e8 d2 fa ff ff callq 5f2030 <_outNode> 0.00 : 5f255e: e9 55 fb ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outIndexOnlyScan(StringInfo str, const IndexOnlyScan *node) : { : WRITE_NODE_TYPE("INDEXONLYSCAN"); 0.00 : 5f2563: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2566: be e7 56 89 00 mov $0x8956e7,%esi 0.00 : 5f256b: e8 e0 f7 fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2570: 4c 89 ee mov %r13,%rsi 0.00 : 5f2573: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2576: e8 25 1e 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_OID_FIELD(indexid); 0.00 : 5f257b: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f257f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2582: 31 c0 xor %eax,%eax 0.00 : 5f2584: be 85 56 89 00 mov $0x895685,%esi 0.00 : 5f2589: e8 82 f8 fd ff callq 5d1e10 : WRITE_NODE_FIELD(indexqual); 0.00 : 5f258e: 31 c0 xor %eax,%eax 0.00 : 5f2590: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2593: be 92 56 89 00 mov $0x895692,%esi 0.00 : 5f2598: e8 73 f8 fd ff callq 5d1e10 0.00 : 5f259d: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5f25a1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f25a4: e8 87 fa ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(indexorderby); 0.00 : 5f25a9: 31 c0 xor %eax,%eax 0.00 : 5f25ab: 4c 89 f7 mov %r14,%rdi 0.00 : 5f25ae: be b0 56 89 00 mov $0x8956b0,%esi 0.00 : 5f25b3: e8 58 f8 fd ff callq 5d1e10 0.00 : 5f25b8: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5f25bc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f25bf: e8 6c fa ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(indextlist); 0.00 : 5f25c4: 31 c0 xor %eax,%eax 0.00 : 5f25c6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f25c9: be f5 56 89 00 mov $0x8956f5,%esi 0.00 : 5f25ce: e8 3d f8 fd ff callq 5d1e10 0.00 : 5f25d3: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 5f25da: 4c 89 f7 mov %r14,%rdi 0.00 : 5f25dd: e8 4e fa ff ff callq 5f2030 <_outNode> : WRITE_ENUM_FIELD(indexorderdir, ScanDirection); 0.00 : 5f25e2: 41 8b 95 88 00 00 00 mov 0x88(%r13),%edx 0.00 : 5f25e9: be d4 56 89 00 mov $0x8956d4,%esi 0.00 : 5f25ee: 4c 89 f7 mov %r14,%rdi 0.00 : 5f25f1: 31 c0 xor %eax,%eax 0.00 : 5f25f3: e8 18 f8 fd ff callq 5d1e10 0.00 : 5f25f8: e9 bb fa ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outIndexScan(StringInfo str, const IndexScan *node) : { : WRITE_NODE_TYPE("INDEXSCAN"); 0.00 : 5f25fd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2600: be 09 57 89 00 mov $0x895709,%esi 0.00 : 5f2605: e8 46 f7 fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f260a: 4c 89 ee mov %r13,%rsi 0.00 : 5f260d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2610: e8 8b 1d 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_OID_FIELD(indexid); 0.00 : 5f2615: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f2619: 4c 89 f7 mov %r14,%rdi 0.00 : 5f261c: 31 c0 xor %eax,%eax 0.00 : 5f261e: be 85 56 89 00 mov $0x895685,%esi 0.00 : 5f2623: e8 e8 f7 fd ff callq 5d1e10 : WRITE_NODE_FIELD(indexqual); 0.00 : 5f2628: 31 c0 xor %eax,%eax 0.00 : 5f262a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f262d: be 92 56 89 00 mov $0x895692,%esi 0.00 : 5f2632: e8 d9 f7 fd ff callq 5d1e10 0.00 : 5f2637: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5f263b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f263e: e8 ed f9 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(indexqualorig); 0.00 : 5f2643: 31 c0 xor %eax,%eax 0.00 : 5f2645: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2648: be 9f 56 89 00 mov $0x89569f,%esi 0.00 : 5f264d: e8 be f7 fd ff callq 5d1e10 0.00 : 5f2652: 49 8b 75 78 mov 0x78(%r13),%rsi 0.00 : 5f2656: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2659: e8 d2 f9 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(indexorderby); 0.00 : 5f265e: 31 c0 xor %eax,%eax 0.00 : 5f2660: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2663: be b0 56 89 00 mov $0x8956b0,%esi 0.00 : 5f2668: e8 a3 f7 fd ff callq 5d1e10 0.00 : 5f266d: 49 8b b5 80 00 00 00 mov 0x80(%r13),%rsi 0.00 : 5f2674: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2677: e8 b4 f9 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(indexorderbyorig); 0.00 : 5f267c: 31 c0 xor %eax,%eax 0.00 : 5f267e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2681: be c0 56 89 00 mov $0x8956c0,%esi 0.00 : 5f2686: e8 85 f7 fd ff callq 5d1e10 0.00 : 5f268b: 49 8b b5 88 00 00 00 mov 0x88(%r13),%rsi 0.00 : 5f2692: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2695: e8 96 f9 ff ff callq 5f2030 <_outNode> : WRITE_ENUM_FIELD(indexorderdir, ScanDirection); 0.00 : 5f269a: 41 8b 95 90 00 00 00 mov 0x90(%r13),%edx 0.00 : 5f26a1: be d4 56 89 00 mov $0x8956d4,%esi 0.00 : 5f26a6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f26a9: 31 c0 xor %eax,%eax 0.00 : 5f26ab: e8 60 f7 fd ff callq 5d1e10 0.00 : 5f26b0: e9 03 fa ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outSeqScan(StringInfo str, const SeqScan *node) : { : WRITE_NODE_TYPE("SEQSCAN"); 0.00 : 5f26b5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f26b8: be 7d 56 89 00 mov $0x89567d,%esi 0.00 : 5f26bd: e8 8e f6 fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f26c2: 4c 89 ee mov %r13,%rsi 0.00 : 5f26c5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f26c8: e8 d3 1c 00 00 callq 5f43a0 <_outScanInfo> 0.00 : 5f26cd: e9 e6 f9 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outScan(StringInfo str, const Scan *node) : { : WRITE_NODE_TYPE("SCAN"); 0.00 : 5f26d2: 4c 89 f7 mov %r14,%rdi 0.00 : 5f26d5: be 37 57 89 00 mov $0x895737,%esi 0.00 : 5f26da: e8 71 f6 fd ff callq 5d1d50 : : _outScanInfo(str, node); 0.00 : 5f26df: 4c 89 ee mov %r13,%rsi 0.00 : 5f26e2: 4c 89 f7 mov %r14,%rdi 0.00 : 5f26e5: e8 b6 1c 00 00 callq 5f43a0 <_outScanInfo> 0.00 : 5f26ea: e9 c9 f9 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outBitmapOr(StringInfo str, const BitmapOr *node) : { : WRITE_NODE_TYPE("BITMAPOR"); 0.00 : 5f26ef: 4c 89 f7 mov %r14,%rdi 0.00 : 5f26f2: be 74 56 89 00 mov $0x895674,%esi 0.00 : 5f26f7: e8 54 f6 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f26fc: 4c 89 ee mov %r13,%rsi 0.00 : 5f26ff: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2702: e8 69 1b 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_NODE_FIELD(bitmapplans); 0.00 : 5f2707: 4c 89 f7 mov %r14,%rdi 0.00 : 5f270a: be 65 56 89 00 mov $0x895665,%esi 0.00 : 5f270f: 31 c0 xor %eax,%eax 0.00 : 5f2711: e8 fa f6 fd ff callq 5d1e10 0.00 : 5f2716: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 5f271a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f271d: e8 0e f9 ff ff callq 5f2030 <_outNode> 0.00 : 5f2722: e9 91 f9 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outBitmapAnd(StringInfo str, const BitmapAnd *node) : { : WRITE_NODE_TYPE("BITMAPAND"); 0.00 : 5f2727: 4c 89 f7 mov %r14,%rdi 0.00 : 5f272a: be 5b 56 89 00 mov $0x89565b,%esi 0.00 : 5f272f: e8 1c f6 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f2734: 4c 89 ee mov %r13,%rsi 0.00 : 5f2737: 4c 89 f7 mov %r14,%rdi 0.00 : 5f273a: e8 31 1b 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_NODE_FIELD(bitmapplans); 0.00 : 5f273f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2742: be 65 56 89 00 mov $0x895665,%esi 0.00 : 5f2747: 31 c0 xor %eax,%eax 0.00 : 5f2749: e8 c2 f6 fd ff callq 5d1e10 0.00 : 5f274e: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 5f2752: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2755: e8 d6 f8 ff ff callq 5f2030 <_outNode> 0.00 : 5f275a: e9 59 f9 ff ff jmpq 5f20b8 <_outNode+0x88> : static void : _outRecursiveUnion(StringInfo str, const RecursiveUnion *node) : { : int i; : : WRITE_NODE_TYPE("RECURSIVEUNION"); 0.00 : 5f275f: be 14 56 89 00 mov $0x895614,%esi 0.00 : 5f2764: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2767: e8 e4 f5 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f276c: 4c 89 ee mov %r13,%rsi 0.00 : 5f276f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2772: e8 f9 1a 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_INT_FIELD(wtParam); 0.00 : 5f2777: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f277b: 31 c0 xor %eax,%eax 0.00 : 5f277d: be 23 56 89 00 mov $0x895623,%esi 0.00 : 5f2782: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2785: e8 86 f6 fd ff callq 5d1e10 : WRITE_INT_FIELD(numCols); 0.00 : 5f278a: 41 8b 55 64 mov 0x64(%r13),%edx 0.00 : 5f278e: 31 c0 xor %eax,%eax 0.00 : 5f2790: be d0 55 89 00 mov $0x8955d0,%esi 0.00 : 5f2795: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2798: e8 73 f6 fd ff callq 5d1e10 : : appendStringInfoString(str, " :dupColIdx"); 0.00 : 5f279d: be 30 56 89 00 mov $0x895630,%esi 0.00 : 5f27a2: 4c 89 f7 mov %r14,%rdi 0.00 : 5f27a5: e8 a6 f5 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f27aa: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5f27ae: 85 c0 test %eax,%eax 0.00 : 5f27b0: 7e 25 jle 5f27d7 <_outNode+0x7a7> 0.00 : 5f27b2: 31 db xor %ebx,%ebx : appendStringInfo(str, " %d", node->dupColIdx[i]); 0.00 : 5f27b4: 49 8b 55 68 mov 0x68(%r13),%rdx 0.00 : 5f27b8: 48 63 c3 movslq %ebx,%rax 0.00 : 5f27bb: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f27c0: 4c 89 f7 mov %r14,%rdi : : WRITE_INT_FIELD(wtParam); : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f27c3: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %d", node->dupColIdx[i]); 0.00 : 5f27c6: 0f bf 14 42 movswl (%rdx,%rax,2),%edx 0.00 : 5f27ca: 31 c0 xor %eax,%eax 0.00 : 5f27cc: e8 3f f6 fd ff callq 5d1e10 : : WRITE_INT_FIELD(wtParam); : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f27d1: 41 3b 5d 64 cmp 0x64(%r13),%ebx 0.00 : 5f27d5: 7c dd jl 5f27b4 <_outNode+0x784> : appendStringInfo(str, " %d", node->dupColIdx[i]); : : appendStringInfoString(str, " :dupOperators"); 0.00 : 5f27d7: be 3c 56 89 00 mov $0x89563c,%esi 0.00 : 5f27dc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f27df: e8 6c f5 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f27e4: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5f27e8: 85 c0 test %eax,%eax 0.00 : 5f27ea: 7e 24 jle 5f2810 <_outNode+0x7e0> 0.00 : 5f27ec: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->dupOperators[i]); 0.00 : 5f27ee: 49 8b 55 70 mov 0x70(%r13),%rdx 0.00 : 5f27f2: 48 63 c3 movslq %ebx,%rax 0.00 : 5f27f5: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f27fa: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->dupColIdx[i]); : : appendStringInfoString(str, " :dupOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f27fd: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->dupOperators[i]); 0.00 : 5f2800: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f2803: 31 c0 xor %eax,%eax 0.00 : 5f2805: e8 06 f6 fd ff callq 5d1e10 : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->dupColIdx[i]); : : appendStringInfoString(str, " :dupOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f280a: 41 3b 5d 64 cmp 0x64(%r13),%ebx 0.00 : 5f280e: 7c de jl 5f27ee <_outNode+0x7be> : appendStringInfo(str, " %u", node->dupOperators[i]); : : WRITE_LONG_FIELD(numGroups); 0.00 : 5f2810: 49 8b 55 78 mov 0x78(%r13),%rdx 0.00 : 5f2814: be 4b 56 89 00 mov $0x89564b,%esi 0.00 : 5f2819: 4c 89 f7 mov %r14,%rdi 0.00 : 5f281c: 31 c0 xor %eax,%eax 0.00 : 5f281e: e8 ed f5 fd ff callq 5d1e10 : case T_MergeAppend: : _outMergeAppend(str, obj); : break; : case T_RecursiveUnion: : _outRecursiveUnion(str, obj); : break; 0.00 : 5f2823: e9 90 f8 ff ff jmpq 5f20b8 <_outNode+0x88> : static void : _outAgg(StringInfo str, const Agg *node) : { : int i; : : WRITE_NODE_TYPE("AGG"); 0.00 : 5f2828: be 49 5e 89 00 mov $0x895e49,%esi 0.00 : 5f282d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2830: e8 1b f5 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f2835: 4c 89 ee mov %r13,%rsi 0.00 : 5f2838: 4c 89 f7 mov %r14,%rdi 0.00 : 5f283b: e8 30 1a 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_ENUM_FIELD(aggstrategy, AggStrategy); 0.00 : 5f2840: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f2844: 31 c0 xor %eax,%eax 0.00 : 5f2846: be a4 58 89 00 mov $0x8958a4,%esi 0.00 : 5f284b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f284e: e8 bd f5 fd ff callq 5d1e10 : WRITE_INT_FIELD(numCols); 0.00 : 5f2853: 41 8b 55 64 mov 0x64(%r13),%edx 0.00 : 5f2857: 31 c0 xor %eax,%eax 0.00 : 5f2859: be d0 55 89 00 mov $0x8955d0,%esi 0.00 : 5f285e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2861: e8 aa f5 fd ff callq 5d1e10 : : appendStringInfoString(str, " :grpColIdx"); 0.00 : 5f2866: be b5 58 89 00 mov $0x8958b5,%esi 0.00 : 5f286b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f286e: e8 dd f4 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f2873: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 5f2877: 85 c0 test %eax,%eax 0.00 : 5f2879: 7e 25 jle 5f28a0 <_outNode+0x870> 0.00 : 5f287b: 31 db xor %ebx,%ebx : appendStringInfo(str, " %d", node->grpColIdx[i]); 0.00 : 5f287d: 49 8b 55 68 mov 0x68(%r13),%rdx 0.00 : 5f2881: 48 63 c3 movslq %ebx,%rax 0.00 : 5f2884: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f2889: 4c 89 f7 mov %r14,%rdi : : WRITE_ENUM_FIELD(aggstrategy, AggStrategy); : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f288c: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %d", node->grpColIdx[i]); 0.00 : 5f288f: 0f bf 14 42 movswl (%rdx,%rax,2),%edx 0.00 : 5f2893: 31 c0 xor %eax,%eax 0.00 : 5f2895: e8 76 f5 fd ff callq 5d1e10 : : WRITE_ENUM_FIELD(aggstrategy, AggStrategy); : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f289a: 41 3b 5d 64 cmp 0x64(%r13),%ebx 0.00 : 5f289e: 7c dd jl 5f287d <_outNode+0x84d> : appendStringInfo(str, " %d", node->grpColIdx[i]); : : appendStringInfoString(str, " :grpOperators"); 0.00 : 5f28a0: be c1 58 89 00 mov $0x8958c1,%esi 0.00 : 5f28a5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f28a8: e8 a3 f4 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f28ad: 45 8b 7d 64 mov 0x64(%r13),%r15d 0.00 : 5f28b1: 45 85 ff test %r15d,%r15d 0.00 : 5f28b4: 7e 24 jle 5f28da <_outNode+0x8aa> 0.00 : 5f28b6: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->grpOperators[i]); 0.00 : 5f28b8: 49 8b 55 70 mov 0x70(%r13),%rdx 0.00 : 5f28bc: 48 63 c3 movslq %ebx,%rax 0.00 : 5f28bf: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f28c4: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->grpColIdx[i]); : : appendStringInfoString(str, " :grpOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f28c7: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->grpOperators[i]); 0.00 : 5f28ca: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f28cd: 31 c0 xor %eax,%eax 0.00 : 5f28cf: e8 3c f5 fd ff callq 5d1e10 : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->grpColIdx[i]); : : appendStringInfoString(str, " :grpOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f28d4: 41 3b 5d 64 cmp 0x64(%r13),%ebx 0.00 : 5f28d8: 7c de jl 5f28b8 <_outNode+0x888> : appendStringInfo(str, " %u", node->grpOperators[i]); : : WRITE_LONG_FIELD(numGroups); 0.00 : 5f28da: 49 8b 55 78 mov 0x78(%r13),%rdx 0.00 : 5f28de: be 4b 56 89 00 mov $0x89564b,%esi 0.00 : 5f28e3: 4c 89 f7 mov %r14,%rdi 0.00 : 5f28e6: 31 c0 xor %eax,%eax 0.00 : 5f28e8: e8 23 f5 fd ff callq 5d1e10 : case T_HashJoin: : _outHashJoin(str, obj); : break; : case T_Agg: : _outAgg(str, obj); : break; 0.00 : 5f28ed: e9 c6 f7 ff ff jmpq 5f20b8 <_outNode+0x88> : static void : _outGroup(StringInfo str, const Group *node) : { : int i; : : WRITE_NODE_TYPE("GROUP"); 0.00 : 5f28f2: be 2c 3d 87 00 mov $0x873d2c,%esi 0.00 : 5f28f7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f28fa: e8 51 f4 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f28ff: 4c 89 ee mov %r13,%rsi 0.00 : 5f2902: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2905: e8 66 19 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_INT_FIELD(numCols); 0.00 : 5f290a: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f290e: 31 c0 xor %eax,%eax 0.00 : 5f2910: be d0 55 89 00 mov $0x8955d0,%esi 0.00 : 5f2915: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2918: e8 f3 f4 fd ff callq 5d1e10 : : appendStringInfoString(str, " :grpColIdx"); 0.00 : 5f291d: be b5 58 89 00 mov $0x8958b5,%esi 0.00 : 5f2922: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2925: e8 26 f4 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f292a: 45 8b 65 60 mov 0x60(%r13),%r12d 0.00 : 5f292e: 45 85 e4 test %r12d,%r12d 0.00 : 5f2931: 7e 25 jle 5f2958 <_outNode+0x928> 0.00 : 5f2933: 31 db xor %ebx,%ebx : appendStringInfo(str, " %d", node->grpColIdx[i]); 0.00 : 5f2935: 49 8b 55 68 mov 0x68(%r13),%rdx 0.00 : 5f2939: 48 63 c3 movslq %ebx,%rax 0.00 : 5f293c: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f2941: 4c 89 f7 mov %r14,%rdi : _outPlanInfo(str, (const Plan *) node); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2944: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %d", node->grpColIdx[i]); 0.00 : 5f2947: 0f bf 14 42 movswl (%rdx,%rax,2),%edx 0.00 : 5f294b: 31 c0 xor %eax,%eax 0.00 : 5f294d: e8 be f4 fd ff callq 5d1e10 : _outPlanInfo(str, (const Plan *) node); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2952: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f2956: 7c dd jl 5f2935 <_outNode+0x905> : appendStringInfo(str, " %d", node->grpColIdx[i]); : : appendStringInfoString(str, " :grpOperators"); 0.00 : 5f2958: be c1 58 89 00 mov $0x8958c1,%esi 0.00 : 5f295d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2960: e8 eb f3 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f2965: 41 8b 5d 60 mov 0x60(%r13),%ebx 0.00 : 5f2969: 85 db test %ebx,%ebx 0.00 : 5f296b: 0f 8e 47 f7 ff ff jle 5f20b8 <_outNode+0x88> 0.00 : 5f2971: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->grpOperators[i]); 0.00 : 5f2973: 49 8b 55 70 mov 0x70(%r13),%rdx 0.00 : 5f2977: 48 63 c3 movslq %ebx,%rax 0.00 : 5f297a: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f297f: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->grpColIdx[i]); : : appendStringInfoString(str, " :grpOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2982: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->grpOperators[i]); 0.00 : 5f2985: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f2988: 31 c0 xor %eax,%eax 0.00 : 5f298a: e8 81 f4 fd ff callq 5d1e10 : appendStringInfoString(str, " :grpColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->grpColIdx[i]); : : appendStringInfoString(str, " :grpOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f298f: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f2993: 7c de jl 5f2973 <_outNode+0x943> 0.00 : 5f2995: e9 1e f7 ff ff jmpq 5f20b8 <_outNode+0x88> : static void : _outSort(StringInfo str, const Sort *node) : { : int i; : : WRITE_NODE_TYPE("SORT"); 0.00 : 5f299a: be d9 58 89 00 mov $0x8958d9,%esi 0.00 : 5f299f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f29a2: e8 a9 f3 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f29a7: 4c 89 ee mov %r13,%rsi 0.00 : 5f29aa: 4c 89 f7 mov %r14,%rdi 0.00 : 5f29ad: e8 be 18 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_INT_FIELD(numCols); 0.00 : 5f29b2: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f29b6: 31 c0 xor %eax,%eax 0.00 : 5f29b8: be d0 55 89 00 mov $0x8955d0,%esi 0.00 : 5f29bd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f29c0: e8 4b f4 fd ff callq 5d1e10 : : appendStringInfoString(str, " :sortColIdx"); 0.00 : 5f29c5: be dd 55 89 00 mov $0x8955dd,%esi 0.00 : 5f29ca: 4c 89 f7 mov %r14,%rdi 0.00 : 5f29cd: e8 7e f3 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f29d2: 45 8b 5d 60 mov 0x60(%r13),%r11d 0.00 : 5f29d6: 45 85 db test %r11d,%r11d 0.00 : 5f29d9: 7e 25 jle 5f2a00 <_outNode+0x9d0> 0.00 : 5f29db: 31 db xor %ebx,%ebx : appendStringInfo(str, " %d", node->sortColIdx[i]); 0.00 : 5f29dd: 49 8b 55 68 mov 0x68(%r13),%rdx 0.00 : 5f29e1: 48 63 c3 movslq %ebx,%rax 0.00 : 5f29e4: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f29e9: 4c 89 f7 mov %r14,%rdi : _outPlanInfo(str, (const Plan *) node); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f29ec: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %d", node->sortColIdx[i]); 0.00 : 5f29ef: 0f bf 14 42 movswl (%rdx,%rax,2),%edx 0.00 : 5f29f3: 31 c0 xor %eax,%eax 0.00 : 5f29f5: e8 16 f4 fd ff callq 5d1e10 : _outPlanInfo(str, (const Plan *) node); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f29fa: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f29fe: 7c dd jl 5f29dd <_outNode+0x9ad> : appendStringInfo(str, " %d", node->sortColIdx[i]); : : appendStringInfoString(str, " :sortOperators"); 0.00 : 5f2a00: be ea 55 89 00 mov $0x8955ea,%esi 0.00 : 5f2a05: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2a08: e8 43 f3 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f2a0d: 45 8b 55 60 mov 0x60(%r13),%r10d 0.00 : 5f2a11: 45 85 d2 test %r10d,%r10d 0.00 : 5f2a14: 7e 24 jle 5f2a3a <_outNode+0xa0a> 0.00 : 5f2a16: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->sortOperators[i]); 0.00 : 5f2a18: 49 8b 55 70 mov 0x70(%r13),%rdx 0.00 : 5f2a1c: 48 63 c3 movslq %ebx,%rax 0.00 : 5f2a1f: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f2a24: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->sortColIdx[i]); : : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2a27: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->sortOperators[i]); 0.00 : 5f2a2a: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f2a2d: 31 c0 xor %eax,%eax 0.00 : 5f2a2f: e8 dc f3 fd ff callq 5d1e10 : appendStringInfoString(str, " :sortColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->sortColIdx[i]); : : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2a34: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f2a38: 7c de jl 5f2a18 <_outNode+0x9e8> : appendStringInfo(str, " %u", node->sortOperators[i]); : : appendStringInfoString(str, " :collations"); 0.00 : 5f2a3a: be fa 55 89 00 mov $0x8955fa,%esi 0.00 : 5f2a3f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2a42: e8 09 f3 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f2a47: 45 8b 4d 60 mov 0x60(%r13),%r9d 0.00 : 5f2a4b: 45 85 c9 test %r9d,%r9d 0.00 : 5f2a4e: 7e 24 jle 5f2a74 <_outNode+0xa44> 0.00 : 5f2a50: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->collations[i]); 0.00 : 5f2a52: 49 8b 55 78 mov 0x78(%r13),%rdx 0.00 : 5f2a56: 48 63 c3 movslq %ebx,%rax 0.00 : 5f2a59: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f2a5e: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->sortOperators[i]); : : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2a61: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->collations[i]); 0.00 : 5f2a64: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f2a67: 31 c0 xor %eax,%eax 0.00 : 5f2a69: e8 a2 f3 fd ff callq 5d1e10 : appendStringInfoString(str, " :sortOperators"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->sortOperators[i]); : : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2a6e: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f2a72: 7c de jl 5f2a52 <_outNode+0xa22> : appendStringInfo(str, " %u", node->collations[i]); : : appendStringInfoString(str, " :nullsFirst"); 0.00 : 5f2a74: be 07 56 89 00 mov $0x895607,%esi 0.00 : 5f2a79: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2a7c: e8 cf f2 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f2a81: 45 8b 45 60 mov 0x60(%r13),%r8d 0.00 : 5f2a85: 45 85 c0 test %r8d,%r8d 0.00 : 5f2a88: 0f 8e 2a f6 ff ff jle 5f20b8 <_outNode+0x88> 0.00 : 5f2a8e: 31 db xor %ebx,%ebx : appendStringInfo(str, " %s", booltostr(node->nullsFirst[i])); 0.00 : 5f2a90: 41 bc 1e 93 8e 00 mov $0x8e931e,%r12d 0.00 : 5f2a96: 41 bf c2 27 7b 00 mov $0x7b27c2,%r15d 0.00 : 5f2a9c: 49 8b 95 80 00 00 00 mov 0x80(%r13),%rdx 0.00 : 5f2aa3: 48 63 c3 movslq %ebx,%rax 0.00 : 5f2aa6: be 60 a7 8c 00 mov $0x8ca760,%esi 0.00 : 5f2aab: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2aae: 80 3c 02 00 cmpb $0x0,(%rdx,%rax,1) 0.00 : 5f2ab2: 4c 89 fa mov %r15,%rdx 0.00 : 5f2ab5: 49 0f 45 d4 cmovne %r12,%rdx 0.00 : 5f2ab9: 31 c0 xor %eax,%eax : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->collations[i]); : : appendStringInfoString(str, " :nullsFirst"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2abb: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %s", booltostr(node->nullsFirst[i])); 0.00 : 5f2abe: e8 4d f3 fd ff callq 5d1e10 : appendStringInfoString(str, " :collations"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %u", node->collations[i]); : : appendStringInfoString(str, " :nullsFirst"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f2ac3: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f2ac7: 7c d3 jl 5f2a9c <_outNode+0xa6c> 0.00 : 5f2ac9: e9 ea f5 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outMaterial(StringInfo str, const Material *node) : { : WRITE_NODE_TYPE("MATERIAL"); 0.00 : 5f2ace: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ad1: be d0 58 89 00 mov $0x8958d0,%esi 0.00 : 5f2ad6: e8 75 f2 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f2adb: 4c 89 ee mov %r13,%rsi 0.00 : 5f2ade: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ae1: e8 8a 17 00 00 callq 5f4270 <_outPlanInfo> 0.00 : 5f2ae6: e9 cd f5 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outHashJoin(StringInfo str, const HashJoin *node) : { : WRITE_NODE_TYPE("HASHJOIN"); 0.00 : 5f2aeb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2aee: be 8c 58 89 00 mov $0x89588c,%esi 0.00 : 5f2af3: e8 58 f2 fd ff callq 5d1d50 : : _outJoinPlanInfo(str, (const Join *) node); 0.00 : 5f2af8: 4c 89 ee mov %r13,%rsi 0.00 : 5f2afb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2afe: e8 dd 18 00 00 callq 5f43e0 <_outJoinPlanInfo> : : WRITE_NODE_FIELD(hashclauses); 0.00 : 5f2b03: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2b06: be 95 58 89 00 mov $0x895895,%esi 0.00 : 5f2b0b: 31 c0 xor %eax,%eax 0.00 : 5f2b0d: e8 fe f2 fd ff callq 5d1e10 0.00 : 5f2b12: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5f2b16: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2b19: e8 12 f5 ff ff callq 5f2030 <_outNode> 0.00 : 5f2b1e: e9 95 f5 ff ff jmpq 5f20b8 <_outNode+0x88> : _outMergeJoin(StringInfo str, const MergeJoin *node) : { : int numCols; : int i; : : WRITE_NODE_TYPE("MERGEJOIN"); 0.00 : 5f2b23: be 2c 58 89 00 mov $0x89582c,%esi 0.00 : 5f2b28: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2b2b: e8 20 f2 fd ff callq 5d1d50 : : _outJoinPlanInfo(str, (const Join *) node); 0.00 : 5f2b30: 4c 89 ee mov %r13,%rsi 0.00 : 5f2b33: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2b36: e8 a5 18 00 00 callq 5f43e0 <_outJoinPlanInfo> : : WRITE_NODE_FIELD(mergeclauses); 0.00 : 5f2b3b: 31 c0 xor %eax,%eax 0.00 : 5f2b3d: be 36 58 89 00 mov $0x895836,%esi 0.00 : 5f2b42: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2b45: e8 c6 f2 fd ff callq 5d1e10 0.00 : 5f2b4a: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5f2b4e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2b51: e8 da f4 ff ff callq 5f2030 <_outNode> : : numCols = list_length(node->mergeclauses); 0.00 : 5f2b56: 49 8b 45 70 mov 0x70(%r13),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5f2b5a: 48 85 c0 test %rax,%rax 0.00 : 5f2b5d: 0f 84 7d 16 00 00 je 5f41e0 <_outNode+0x21b0> 0.00 : 5f2b63: 44 8b 78 04 mov 0x4(%rax),%r15d : : appendStringInfoString(str, " :mergeFamilies"); 0.00 : 5f2b67: be 46 58 89 00 mov $0x895846,%esi 0.00 : 5f2b6c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2b6f: e8 dc f1 fd ff callq 5d1d50 : for (i = 0; i < numCols; i++) 0.00 : 5f2b74: 45 85 ff test %r15d,%r15d 0.00 : 5f2b77: 0f 8e 70 16 00 00 jle 5f41ed <_outNode+0x21bd> 0.00 : 5f2b7d: 45 31 e4 xor %r12d,%r12d 0.00 : 5f2b80: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->mergeFamilies[i]); 0.00 : 5f2b82: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 5f2b86: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f2b8b: 4c 89 f7 mov %r14,%rdi : WRITE_NODE_FIELD(mergeclauses); : : numCols = list_length(node->mergeclauses); : : appendStringInfoString(str, " :mergeFamilies"); : for (i = 0; i < numCols; i++) 0.00 : 5f2b8e: 41 83 c4 01 add $0x1,%r12d : appendStringInfo(str, " %u", node->mergeFamilies[i]); 0.00 : 5f2b92: 8b 14 18 mov (%rax,%rbx,1),%edx 0.00 : 5f2b95: 31 c0 xor %eax,%eax : WRITE_NODE_FIELD(mergeclauses); : : numCols = list_length(node->mergeclauses); : : appendStringInfoString(str, " :mergeFamilies"); : for (i = 0; i < numCols; i++) 0.00 : 5f2b97: 48 83 c3 04 add $0x4,%rbx : appendStringInfo(str, " %u", node->mergeFamilies[i]); 0.00 : 5f2b9b: e8 70 f2 fd ff callq 5d1e10 : WRITE_NODE_FIELD(mergeclauses); : : numCols = list_length(node->mergeclauses); : : appendStringInfoString(str, " :mergeFamilies"); : for (i = 0; i < numCols; i++) 0.00 : 5f2ba0: 45 39 e7 cmp %r12d,%r15d 0.00 : 5f2ba3: 7f dd jg 5f2b82 <_outNode+0xb52> : appendStringInfo(str, " %u", node->mergeFamilies[i]); : : appendStringInfoString(str, " :mergeCollations"); 0.00 : 5f2ba5: be 56 58 89 00 mov $0x895856,%esi 0.00 : 5f2baa: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2bad: 45 31 e4 xor %r12d,%r12d 0.00 : 5f2bb0: 31 db xor %ebx,%ebx 0.00 : 5f2bb2: e8 99 f1 fd ff callq 5d1d50 : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeCollations[i]); 0.00 : 5f2bb7: 49 8b 85 80 00 00 00 mov 0x80(%r13),%rax 0.00 : 5f2bbe: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f2bc3: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :mergeFamilies"); : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeFamilies[i]); : : appendStringInfoString(str, " :mergeCollations"); : for (i = 0; i < numCols; i++) 0.00 : 5f2bc6: 41 83 c4 01 add $0x1,%r12d : appendStringInfo(str, " %u", node->mergeCollations[i]); 0.00 : 5f2bca: 8b 14 18 mov (%rax,%rbx,1),%edx 0.00 : 5f2bcd: 31 c0 xor %eax,%eax : appendStringInfoString(str, " :mergeFamilies"); : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeFamilies[i]); : : appendStringInfoString(str, " :mergeCollations"); : for (i = 0; i < numCols; i++) 0.00 : 5f2bcf: 48 83 c3 04 add $0x4,%rbx : appendStringInfo(str, " %u", node->mergeCollations[i]); 0.00 : 5f2bd3: e8 38 f2 fd ff callq 5d1e10 : appendStringInfoString(str, " :mergeFamilies"); : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeFamilies[i]); : : appendStringInfoString(str, " :mergeCollations"); : for (i = 0; i < numCols; i++) 0.00 : 5f2bd8: 45 39 e7 cmp %r12d,%r15d 0.00 : 5f2bdb: 7f da jg 5f2bb7 <_outNode+0xb87> : appendStringInfo(str, " %u", node->mergeCollations[i]); : : appendStringInfoString(str, " :mergeStrategies"); 0.00 : 5f2bdd: be 68 58 89 00 mov $0x895868,%esi 0.00 : 5f2be2: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2be5: 45 31 e4 xor %r12d,%r12d 0.00 : 5f2be8: 31 db xor %ebx,%ebx 0.00 : 5f2bea: e8 61 f1 fd ff callq 5d1d50 : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %d", node->mergeStrategies[i]); 0.00 : 5f2bef: 49 8b 85 88 00 00 00 mov 0x88(%r13),%rax 0.00 : 5f2bf6: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f2bfb: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :mergeCollations"); : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeCollations[i]); : : appendStringInfoString(str, " :mergeStrategies"); : for (i = 0; i < numCols; i++) 0.00 : 5f2bfe: 41 83 c4 01 add $0x1,%r12d : appendStringInfo(str, " %d", node->mergeStrategies[i]); 0.00 : 5f2c02: 8b 14 18 mov (%rax,%rbx,1),%edx 0.00 : 5f2c05: 31 c0 xor %eax,%eax : appendStringInfoString(str, " :mergeCollations"); : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeCollations[i]); : : appendStringInfoString(str, " :mergeStrategies"); : for (i = 0; i < numCols; i++) 0.00 : 5f2c07: 48 83 c3 04 add $0x4,%rbx : appendStringInfo(str, " %d", node->mergeStrategies[i]); 0.00 : 5f2c0b: e8 00 f2 fd ff callq 5d1e10 : appendStringInfoString(str, " :mergeCollations"); : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeCollations[i]); : : appendStringInfoString(str, " :mergeStrategies"); : for (i = 0; i < numCols; i++) 0.00 : 5f2c10: 45 39 e7 cmp %r12d,%r15d 0.00 : 5f2c13: 7f da jg 5f2bef <_outNode+0xbbf> : appendStringInfo(str, " %d", node->mergeStrategies[i]); : : appendStringInfoString(str, " :mergeNullsFirst"); 0.00 : 5f2c15: be 7a 58 89 00 mov $0x89587a,%esi 0.00 : 5f2c1a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c1d: 31 db xor %ebx,%ebx 0.00 : 5f2c1f: e8 2c f1 fd ff callq 5d1d50 : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %d", (int) node->mergeNullsFirst[i]); 0.00 : 5f2c24: 49 8b 85 90 00 00 00 mov 0x90(%r13),%rax 0.00 : 5f2c2b: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f2c30: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c33: 0f be 14 18 movsbl (%rax,%rbx,1),%edx 0.00 : 5f2c37: 31 c0 xor %eax,%eax 0.00 : 5f2c39: 48 83 c3 01 add $0x1,%rbx 0.00 : 5f2c3d: e8 ce f1 fd ff callq 5d1e10 : appendStringInfoString(str, " :mergeStrategies"); : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %d", node->mergeStrategies[i]); : : appendStringInfoString(str, " :mergeNullsFirst"); : for (i = 0; i < numCols; i++) 0.00 : 5f2c42: 41 39 df cmp %ebx,%r15d 0.00 : 5f2c45: 7f dd jg 5f2c24 <_outNode+0xbf4> 0.00 : 5f2c47: e9 6c f4 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outNestLoop(StringInfo str, const NestLoop *node) : { : WRITE_NODE_TYPE("NESTLOOP"); 0.00 : 5f2c4c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c4f: be 15 58 89 00 mov $0x895815,%esi 0.00 : 5f2c54: e8 f7 f0 fd ff callq 5d1d50 : : _outJoinPlanInfo(str, (const Join *) node); 0.00 : 5f2c59: 4c 89 ee mov %r13,%rsi 0.00 : 5f2c5c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c5f: e8 7c 17 00 00 callq 5f43e0 <_outJoinPlanInfo> : : WRITE_NODE_FIELD(nestParams); 0.00 : 5f2c64: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c67: be 1e 58 89 00 mov $0x89581e,%esi 0.00 : 5f2c6c: 31 c0 xor %eax,%eax 0.00 : 5f2c6e: e8 9d f1 fd ff callq 5d1e10 0.00 : 5f2c73: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5f2c77: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c7a: e8 b1 f3 ff ff callq 5f2030 <_outNode> 0.00 : 5f2c7f: e9 34 f4 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outJoin(StringInfo str, const Join *node) : { : WRITE_NODE_TYPE("JOIN"); 0.00 : 5f2c84: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c87: be 31 58 89 00 mov $0x895831,%esi 0.00 : 5f2c8c: e8 bf f0 fd ff callq 5d1d50 : : _outJoinPlanInfo(str, (const Join *) node); 0.00 : 5f2c91: 4c 89 ee mov %r13,%rsi 0.00 : 5f2c94: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2c97: e8 44 17 00 00 callq 5f43e0 <_outJoinPlanInfo> 0.00 : 5f2c9c: e9 17 f4 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outForeignScan(StringInfo str, const ForeignScan *node) : { : WRITE_NODE_TYPE("FOREIGNSCAN"); 0.00 : 5f2ca1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ca4: be dc 57 89 00 mov $0x8957dc,%esi 0.00 : 5f2ca9: e8 a2 f0 fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2cae: 4c 89 ee mov %r13,%rsi 0.00 : 5f2cb1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2cb4: e8 e7 16 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_NODE_FIELD(fdw_exprs); 0.00 : 5f2cb9: 31 c0 xor %eax,%eax 0.00 : 5f2cbb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2cbe: be e8 57 89 00 mov $0x8957e8,%esi 0.00 : 5f2cc3: e8 48 f1 fd ff callq 5d1e10 0.00 : 5f2cc8: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f2ccc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ccf: e8 5c f3 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(fdw_private); 0.00 : 5f2cd4: 31 c0 xor %eax,%eax 0.00 : 5f2cd6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2cd9: be f5 57 89 00 mov $0x8957f5,%esi 0.00 : 5f2cde: e8 2d f1 fd ff callq 5d1e10 0.00 : 5f2ce3: 49 8b 75 70 mov 0x70(%r13),%rsi 0.00 : 5f2ce7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2cea: e8 41 f3 ff ff callq 5f2030 <_outNode> : WRITE_BOOL_FIELD(fsSystemCol); 0.00 : 5f2cef: 41 80 7d 78 00 cmpb $0x0,0x78(%r13) 0.00 : 5f2cf4: b8 1e 93 8e 00 mov $0x8e931e,%eax 0.00 : 5f2cf9: ba c2 27 7b 00 mov $0x7b27c2,%edx 0.00 : 5f2cfe: be 04 58 89 00 mov $0x895804,%esi 0.00 : 5f2d03: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d06: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 5f2d0a: 31 c0 xor %eax,%eax 0.00 : 5f2d0c: e8 ff f0 fd ff callq 5d1e10 : case T_WorkTableScan: : _outWorkTableScan(str, obj); : break; : case T_ForeignScan: : _outForeignScan(str, obj); : break; 0.00 : 5f2d11: e9 a2 f3 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outWorkTableScan(StringInfo str, const WorkTableScan *node) : { : WRITE_NODE_TYPE("WORKTABLESCAN"); 0.00 : 5f2d16: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d19: be ce 57 89 00 mov $0x8957ce,%esi 0.00 : 5f2d1e: e8 2d f0 fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2d23: 4c 89 ee mov %r13,%rsi 0.00 : 5f2d26: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d29: e8 72 16 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_INT_FIELD(wtParam); 0.00 : 5f2d2e: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f2d32: be 23 56 89 00 mov $0x895623,%esi 0.00 : 5f2d37: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d3a: 31 c0 xor %eax,%eax 0.00 : 5f2d3c: e8 cf f0 fd ff callq 5d1e10 0.00 : 5f2d41: e9 72 f3 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outCteScan(StringInfo str, const CteScan *node) : { : WRITE_NODE_TYPE("CTESCAN"); 0.00 : 5f2d46: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d49: be a9 57 89 00 mov $0x8957a9,%esi 0.00 : 5f2d4e: e8 fd ef fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2d53: 4c 89 ee mov %r13,%rsi 0.00 : 5f2d56: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d59: e8 42 16 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_INT_FIELD(ctePlanId); 0.00 : 5f2d5e: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f2d62: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d65: 31 c0 xor %eax,%eax 0.00 : 5f2d67: be b1 57 89 00 mov $0x8957b1,%esi 0.00 : 5f2d6c: e8 9f f0 fd ff callq 5d1e10 : WRITE_INT_FIELD(cteParam); 0.00 : 5f2d71: 41 8b 55 6c mov 0x6c(%r13),%edx 0.00 : 5f2d75: be c0 57 89 00 mov $0x8957c0,%esi 0.00 : 5f2d7a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d7d: 31 c0 xor %eax,%eax 0.00 : 5f2d7f: e8 8c f0 fd ff callq 5d1e10 0.00 : 5f2d84: e9 2f f3 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outValuesScan(StringInfo str, const ValuesScan *node) : { : WRITE_NODE_TYPE("VALUESSCAN"); 0.00 : 5f2d89: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d8c: be 8e 57 89 00 mov $0x89578e,%esi 0.00 : 5f2d91: e8 ba ef fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2d96: 4c 89 ee mov %r13,%rsi 0.00 : 5f2d99: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2d9c: e8 ff 15 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_NODE_FIELD(values_lists); 0.00 : 5f2da1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2da4: be 99 57 89 00 mov $0x895799,%esi 0.00 : 5f2da9: 31 c0 xor %eax,%eax 0.00 : 5f2dab: e8 60 f0 fd ff callq 5d1e10 0.00 : 5f2db0: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f2db4: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2db7: e8 74 f2 ff ff callq 5f2030 <_outNode> 0.00 : 5f2dbc: e9 f7 f2 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outFunctionScan(StringInfo str, const FunctionScan *node) : { : WRITE_NODE_TYPE("FUNCTIONSCAN"); 0.00 : 5f2dc1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2dc4: be 60 57 89 00 mov $0x895760,%esi 0.00 : 5f2dc9: e8 82 ef fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2dce: 4c 89 ee mov %r13,%rsi 0.00 : 5f2dd1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2dd4: e8 c7 15 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_NODE_FIELD(functions); 0.00 : 5f2dd9: 31 c0 xor %eax,%eax 0.00 : 5f2ddb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2dde: be 6d 57 89 00 mov $0x89576d,%esi 0.00 : 5f2de3: e8 28 f0 fd ff callq 5d1e10 0.00 : 5f2de8: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f2dec: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2def: e8 3c f2 ff ff callq 5f2030 <_outNode> : WRITE_BOOL_FIELD(funcordinality); 0.00 : 5f2df4: 41 80 7d 70 00 cmpb $0x0,0x70(%r13) 0.00 : 5f2df9: b8 1e 93 8e 00 mov $0x8e931e,%eax 0.00 : 5f2dfe: ba c2 27 7b 00 mov $0x7b27c2,%edx 0.00 : 5f2e03: be 7a 57 89 00 mov $0x89577a,%esi 0.00 : 5f2e08: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e0b: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 5f2e0f: 31 c0 xor %eax,%eax 0.00 : 5f2e11: e8 fa ef fd ff callq 5d1e10 : case T_SubqueryScan: : _outSubqueryScan(str, obj); : break; : case T_FunctionScan: : _outFunctionScan(str, obj); : break; 0.00 : 5f2e16: e9 9d f2 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outSubqueryScan(StringInfo str, const SubqueryScan *node) : { : WRITE_NODE_TYPE("SUBQUERYSCAN"); 0.00 : 5f2e1b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e1e: be 48 57 89 00 mov $0x895748,%esi 0.00 : 5f2e23: e8 28 ef fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2e28: 4c 89 ee mov %r13,%rsi 0.00 : 5f2e2b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e2e: e8 6d 15 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_NODE_FIELD(subplan); 0.00 : 5f2e33: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e36: be 55 57 89 00 mov $0x895755,%esi 0.00 : 5f2e3b: 31 c0 xor %eax,%eax 0.00 : 5f2e3d: e8 ce ef fd ff callq 5d1e10 0.00 : 5f2e42: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f2e46: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e49: e8 e2 f1 ff ff callq 5f2030 <_outNode> 0.00 : 5f2e4e: e9 65 f2 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outTidScan(StringInfo str, const TidScan *node) : { : WRITE_NODE_TYPE("TIDSCAN"); 0.00 : 5f2e53: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e56: be 34 57 89 00 mov $0x895734,%esi 0.00 : 5f2e5b: e8 f0 ee fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2e60: 4c 89 ee mov %r13,%rsi 0.00 : 5f2e63: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e66: e8 35 15 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_NODE_FIELD(tidquals); 0.00 : 5f2e6b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e6e: be 3c 57 89 00 mov $0x89573c,%esi 0.00 : 5f2e73: 31 c0 xor %eax,%eax 0.00 : 5f2e75: e8 96 ef fd ff callq 5d1e10 0.00 : 5f2e7a: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f2e7e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e81: e8 aa f1 ff ff callq 5f2030 <_outNode> 0.00 : 5f2e86: e9 2d f2 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outBitmapHeapScan(StringInfo str, const BitmapHeapScan *node) : { : WRITE_NODE_TYPE("BITMAPHEAPSCAN"); 0.00 : 5f2e8b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e8e: be 13 57 89 00 mov $0x895713,%esi 0.00 : 5f2e93: e8 b8 ee fd ff callq 5d1d50 : : _outScanInfo(str, (const Scan *) node); 0.00 : 5f2e98: 4c 89 ee mov %r13,%rsi 0.00 : 5f2e9b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2e9e: e8 fd 14 00 00 callq 5f43a0 <_outScanInfo> : : WRITE_NODE_FIELD(bitmapqualorig); 0.00 : 5f2ea3: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ea6: be 22 57 89 00 mov $0x895722,%esi 0.00 : 5f2eab: 31 c0 xor %eax,%eax 0.00 : 5f2ead: e8 5e ef fd ff callq 5d1e10 0.00 : 5f2eb2: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f2eb6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2eb9: e8 72 f1 ff ff callq 5f2030 <_outNode> 0.00 : 5f2ebe: e9 f5 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_WithClause: : _outWithClause(str, obj); : break; : case T_CommonTableExpr: : _outCommonTableExpr(str, obj); 0.00 : 5f2ec3: 4c 89 ee mov %r13,%rsi 0.00 : 5f2ec6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ec9: e8 12 5e 00 00 callq 5f8ce0 <_outCommonTableExpr> 0.00 : 5f2ece: 66 90 xchg %ax,%ax : break; 0.00 : 5f2ed0: e9 e3 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RowMarkClause: : _outRowMarkClause(str, obj); : break; : case T_WithClause: : _outWithClause(str, obj); 0.00 : 5f2ed5: 4c 89 ee mov %r13,%rsi 0.00 : 5f2ed8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2edb: e8 90 5d 00 00 callq 5f8c70 <_outWithClause> : break; 0.00 : 5f2ee0: e9 d3 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_LockingClause: : _outLockingClause(str, obj); : break; : case T_XmlSerialize: : _outXmlSerialize(str, obj); 0.00 : 5f2ee5: 4c 89 ee mov %r13,%rsi 0.00 : 5f2ee8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2eeb: e8 60 72 00 00 callq 5fa150 <_outXmlSerialize> : break; 0.00 : 5f2ef0: e9 c3 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outRowMarkClause(StringInfo str, const RowMarkClause *node) : { : WRITE_NODE_TYPE("ROWMARKCLAUSE"); 0.00 : 5f2ef5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ef8: be 19 5d 89 00 mov $0x895d19,%esi 0.00 : 5f2efd: e8 4e ee fd ff callq 5d1d50 : : WRITE_UINT_FIELD(rti); 0.00 : 5f2f02: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f2f06: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f09: 31 c0 xor %eax,%eax 0.00 : 5f2f0b: be e9 59 89 00 mov $0x8959e9,%esi 0.00 : 5f2f10: e8 fb ee fd ff callq 5d1e10 : WRITE_ENUM_FIELD(strength, LockClauseStrength); 0.00 : 5f2f15: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f2f19: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f1c: 31 c0 xor %eax,%eax 0.00 : 5f2f1e: be 27 5d 89 00 mov $0x895d27,%esi 0.00 : 5f2f23: e8 e8 ee fd ff callq 5d1e10 : WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy); 0.00 : 5f2f28: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f2f2c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f2f: 31 c0 xor %eax,%eax 0.00 : 5f2f31: be 35 5d 89 00 mov $0x895d35,%esi 0.00 : 5f2f36: e8 d5 ee fd ff callq 5d1e10 : WRITE_BOOL_FIELD(pushedDown); 0.00 : 5f2f3b: 41 80 7d 10 00 cmpb $0x0,0x10(%r13) 0.00 : 5f2f40: b8 1e 93 8e 00 mov $0x8e931e,%eax 0.00 : 5f2f45: ba c2 27 7b 00 mov $0x7b27c2,%edx 0.00 : 5f2f4a: be 45 5d 89 00 mov $0x895d45,%esi 0.00 : 5f2f4f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f52: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 5f2f56: 31 c0 xor %eax,%eax 0.00 : 5f2f58: e8 b3 ee fd ff callq 5d1e10 : case T_WindowClause: : _outWindowClause(str, obj); : break; : case T_RowMarkClause: : _outRowMarkClause(str, obj); : break; 0.00 : 5f2f5d: e9 56 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_TableLikeClause: : _outTableLikeClause(str, obj); : break; : case T_LockingClause: : _outLockingClause(str, obj); 0.00 : 5f2f62: 4c 89 ee mov %r13,%rsi 0.00 : 5f2f65: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f68: e8 83 71 00 00 callq 5fa0f0 <_outLockingClause> 0.00 : 5f2f6d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5f2f70: e9 43 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_DefElem: : _outDefElem(str, obj); : break; : case T_TableLikeClause: : _outTableLikeClause(str, obj); 0.00 : 5f2f75: 4c 89 ee mov %r13,%rsi 0.00 : 5f2f78: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f7b: e8 10 71 00 00 callq 5fa090 <_outTableLikeClause> : break; 0.00 : 5f2f80: e9 33 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_SortGroupClause: : _outSortGroupClause(str, obj); : break; : case T_WindowClause: : _outWindowClause(str, obj); 0.00 : 5f2f85: 4c 89 ee mov %r13,%rsi 0.00 : 5f2f88: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f8b: e8 d0 5b 00 00 callq 5f8b60 <_outWindowClause> : break; 0.00 : 5f2f90: e9 23 f1 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outSortGroupClause(StringInfo str, const SortGroupClause *node) : { : WRITE_NODE_TYPE("SORTGROUPCLAUSE"); 0.00 : 5f2f95: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2f98: be bf 5c 89 00 mov $0x895cbf,%esi : : WRITE_UINT_FIELD(tleSortGroupRef); : WRITE_OID_FIELD(eqop); : WRITE_OID_FIELD(sortop); : WRITE_BOOL_FIELD(nulls_first); 0.00 : 5f2f9d: bb c2 27 7b 00 mov $0x7b27c2,%ebx : } : : static void : _outSortGroupClause(StringInfo str, const SortGroupClause *node) : { : WRITE_NODE_TYPE("SORTGROUPCLAUSE"); 0.00 : 5f2fa2: e8 a9 ed fd ff callq 5d1d50 : : WRITE_UINT_FIELD(tleSortGroupRef); 0.00 : 5f2fa7: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f2fab: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2fae: 31 c0 xor %eax,%eax 0.00 : 5f2fb0: be cf 5c 89 00 mov $0x895ccf,%esi : WRITE_OID_FIELD(eqop); : WRITE_OID_FIELD(sortop); : WRITE_BOOL_FIELD(nulls_first); 0.00 : 5f2fb5: 41 bc 1e 93 8e 00 mov $0x8e931e,%r12d : static void : _outSortGroupClause(StringInfo str, const SortGroupClause *node) : { : WRITE_NODE_TYPE("SORTGROUPCLAUSE"); : : WRITE_UINT_FIELD(tleSortGroupRef); 0.00 : 5f2fbb: e8 50 ee fd ff callq 5d1e10 : WRITE_OID_FIELD(eqop); 0.00 : 5f2fc0: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f2fc4: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2fc7: 31 c0 xor %eax,%eax 0.00 : 5f2fc9: be e4 5c 89 00 mov $0x895ce4,%esi 0.00 : 5f2fce: e8 3d ee fd ff callq 5d1e10 : WRITE_OID_FIELD(sortop); 0.00 : 5f2fd3: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f2fd7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2fda: 31 c0 xor %eax,%eax 0.00 : 5f2fdc: be ee 5c 89 00 mov $0x895cee,%esi 0.00 : 5f2fe1: e8 2a ee fd ff callq 5d1e10 : WRITE_BOOL_FIELD(nulls_first); 0.00 : 5f2fe6: 41 80 7d 10 00 cmpb $0x0,0x10(%r13) 0.00 : 5f2feb: 48 89 da mov %rbx,%rdx 0.00 : 5f2fee: 4c 89 f7 mov %r14,%rdi 0.00 : 5f2ff1: be fa 5c 89 00 mov $0x895cfa,%esi 0.00 : 5f2ff6: 49 0f 45 d4 cmovne %r12,%rdx 0.00 : 5f2ffa: 31 c0 xor %eax,%eax 0.00 : 5f2ffc: e8 0f ee fd ff callq 5d1e10 : WRITE_BOOL_FIELD(hashable); 0.00 : 5f3001: 41 80 7d 11 00 cmpb $0x0,0x11(%r13) 0.00 : 5f3006: be 0b 5d 89 00 mov $0x895d0b,%esi 0.00 : 5f300b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f300e: 49 0f 45 dc cmovne %r12,%rbx 0.00 : 5f3012: 31 c0 xor %eax,%eax 0.00 : 5f3014: 48 89 da mov %rbx,%rdx 0.00 : 5f3017: e8 f4 ed fd ff callq 5d1e10 : case T_WithCheckOption: : _outWithCheckOption(str, obj); : break; : case T_SortGroupClause: : _outSortGroupClause(str, obj); : break; 0.00 : 5f301c: e9 97 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_Query: : _outQuery(str, obj); : break; : case T_WithCheckOption: : _outWithCheckOption(str, obj); 0.00 : 5f3021: 4c 89 ee mov %r13,%rsi 0.00 : 5f3024: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3027: e8 b4 5a 00 00 callq 5f8ae0 <_outWithCheckOption> 0.00 : 5f302c: 0f 1f 40 00 nopl 0x0(%rax) : break; 0.00 : 5f3030: e9 83 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RangeTblEntry: : _outRangeTblEntry(str, obj); : break; : case T_RangeTblFunction: : _outRangeTblFunction(str, obj); 0.00 : 5f3035: 4c 89 ee mov %r13,%rsi 0.00 : 5f3038: 4c 89 f7 mov %r14,%rdi 0.00 : 5f303b: e8 60 62 00 00 callq 5f92a0 <_outRangeTblFunction> : break; 0.00 : 5f3040: e9 73 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_SetOperationStmt: : _outSetOperationStmt(str, obj); : break; : case T_RangeTblEntry: : _outRangeTblEntry(str, obj); 0.00 : 5f3045: 4c 89 ee mov %r13,%rsi 0.00 : 5f3048: 4c 89 f7 mov %r14,%rdi 0.00 : 5f304b: e8 c0 5e 00 00 callq 5f8f10 <_outRangeTblEntry> : break; 0.00 : 5f3050: e9 63 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_FuncCall: : _outFuncCall(str, obj); : break; : case T_DefElem: : _outDefElem(str, obj); 0.00 : 5f3055: 4c 89 ee mov %r13,%rsi 0.00 : 5f3058: 4c 89 f7 mov %r14,%rdi 0.00 : 5f305b: e8 a0 6f 00 00 callq 5fa000 <_outDefElem> : break; 0.00 : 5f3060: e9 53 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RangeFunction: : _outRangeFunction(str, obj); : break; : case T_Constraint: : _outConstraint(str, obj); 0.00 : 5f3065: 4c 89 ee mov %r13,%rsi 0.00 : 5f3068: 4c 89 f7 mov %r14,%rdi 0.00 : 5f306b: e8 10 6a 00 00 callq 5f9a80 <_outConstraint> : break; 0.00 : 5f3070: e9 43 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CollateClause: : _outCollateClause(str, obj); : break; : case T_IndexElem: : _outIndexElem(str, obj); 0.00 : 5f3075: 4c 89 ee mov %r13,%rsi 0.00 : 5f3078: 4c 89 f7 mov %r14,%rdi 0.00 : 5f307b: e8 e0 55 00 00 callq 5f8660 <_outIndexElem> : break; 0.00 : 5f3080: e9 33 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_SelectStmt: : _outSelectStmt(str, obj); : break; : case T_ColumnDef: : _outColumnDef(str, obj); 0.00 : 5f3085: 4c 89 ee mov %r13,%rsi 0.00 : 5f3088: 4c 89 f7 mov %r14,%rdi 0.00 : 5f308b: e8 70 52 00 00 callq 5f8300 <_outColumnDef> : break; 0.00 : 5f3090: e9 23 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : case T_TypeName: : _outTypeName(str, obj); 0.00 : 5f3095: 4c 89 ee mov %r13,%rsi 0.00 : 5f3098: 4c 89 f7 mov %r14,%rdi 0.00 : 5f309b: e8 f0 53 00 00 callq 5f8490 <_outTypeName> : break; 0.00 : 5f30a0: e9 13 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RangeSubselect: : _outRangeSubselect(str, obj); : break; : case T_RangeFunction: : _outRangeFunction(str, obj); 0.00 : 5f30a5: 4c 89 ee mov %r13,%rsi 0.00 : 5f30a8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f30ab: e8 e0 68 00 00 callq 5f9990 <_outRangeFunction> : break; 0.00 : 5f30b0: e9 03 f0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_WindowDef: : _outWindowDef(str, obj); : break; : case T_RangeSubselect: : _outRangeSubselect(str, obj); 0.00 : 5f30b5: 4c 89 ee mov %r13,%rsi 0.00 : 5f30b8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f30bb: e8 50 68 00 00 callq 5f9910 <_outRangeSubselect> : break; 0.00 : 5f30c0: e9 f3 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_SortBy: : _outSortBy(str, obj); : break; : case T_WindowDef: : _outWindowDef(str, obj); 0.00 : 5f30c5: 4c 89 ee mov %r13,%rsi 0.00 : 5f30c8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f30cb: e8 50 67 00 00 callq 5f9820 <_outWindowDef> : break; 0.00 : 5f30d0: e9 e3 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_MultiAssignRef: : _outMultiAssignRef(str, obj); : break; : case T_SortBy: : _outSortBy(str, obj); 0.00 : 5f30d5: 4c 89 ee mov %r13,%rsi 0.00 : 5f30d8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f30db: e8 b0 66 00 00 callq 5f9790 <_outSortBy> : break; 0.00 : 5f30e0: e9 d3 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_TypeCast: : _outTypeCast(str, obj); : break; : case T_CollateClause: : _outCollateClause(str, obj); 0.00 : 5f30e5: 4c 89 ee mov %r13,%rsi 0.00 : 5f30e8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f30eb: e8 00 55 00 00 callq 5f85f0 <_outCollateClause> : break; 0.00 : 5f30f0: e9 c3 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_TypeName: : _outTypeName(str, obj); : break; : case T_TypeCast: : _outTypeCast(str, obj); 0.00 : 5f30f5: 4c 89 ee mov %r13,%rsi 0.00 : 5f30f8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f30fb: e8 80 54 00 00 callq 5f8580 <_outTypeCast> : break; 0.00 : 5f3100: e9 b3 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ResTarget: : _outResTarget(str, obj); : break; : case T_MultiAssignRef: : _outMultiAssignRef(str, obj); 0.00 : 5f3105: 4c 89 ee mov %r13,%rsi 0.00 : 5f3108: 4c 89 f7 mov %r14,%rdi 0.00 : 5f310b: e8 20 66 00 00 callq 5f9730 <_outMultiAssignRef> : break; 0.00 : 5f3110: e9 a3 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_A_ArrayExpr: : _outA_ArrayExpr(str, obj); : break; : case T_ResTarget: : _outResTarget(str, obj); 0.00 : 5f3115: 4c 89 ee mov %r13,%rsi 0.00 : 5f3118: 4c 89 f7 mov %r14,%rdi 0.00 : 5f311b: e8 80 65 00 00 callq 5f96a0 <_outResTarget> : break; 0.00 : 5f3120: e9 93 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_A_Indirection: : _outA_Indirection(str, obj); : break; : case T_A_ArrayExpr: : _outA_ArrayExpr(str, obj); 0.00 : 5f3125: 4c 89 ee mov %r13,%rsi 0.00 : 5f3128: 4c 89 f7 mov %r14,%rdi 0.00 : 5f312b: e8 10 65 00 00 callq 5f9640 <_outA_ArrayExpr> : break; 0.00 : 5f3130: e9 83 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_A_Indices: : _outA_Indices(str, obj); : break; : case T_A_Indirection: : _outA_Indirection(str, obj); 0.00 : 5f3135: 4c 89 ee mov %r13,%rsi 0.00 : 5f3138: 4c 89 f7 mov %r14,%rdi 0.00 : 5f313b: e8 a0 64 00 00 callq 5f95e0 <_outA_Indirection> : break; 0.00 : 5f3140: e9 73 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_A_Star: : _outA_Star(str, obj); : break; : case T_A_Indices: : _outA_Indices(str, obj); 0.00 : 5f3145: 4c 89 ee mov %r13,%rsi 0.00 : 5f3148: 4c 89 f7 mov %r14,%rdi 0.00 : 5f314b: e8 30 64 00 00 callq 5f9580 <_outA_Indices> : break; 0.00 : 5f3150: e9 63 ef ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outA_Star(StringInfo str, const A_Star *node) : { : WRITE_NODE_TYPE("A_STAR"); 0.00 : 5f3155: be 79 5d 89 00 mov $0x895d79,%esi 0.00 : 5f315a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f315d: e8 ee eb fd ff callq 5d1d50 0.00 : 5f3162: e9 51 ef ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_Constraint: : _outConstraint(str, obj); : break; : case T_FuncCall: : _outFuncCall(str, obj); 0.00 : 5f3167: 4c 89 ee mov %r13,%rsi 0.00 : 5f316a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f316d: e8 4e 6d 00 00 callq 5f9ec0 <_outFuncCall> : break; 0.00 : 5f3172: e9 41 ef ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outAConst(StringInfo str, const A_Const *node) : { : WRITE_NODE_TYPE("A_CONST"); 0.00 : 5f3177: 4c 89 f7 mov %r14,%rdi 0.00 : 5f317a: be 6a 5d 89 00 mov $0x895d6a,%esi 0.00 : 5f317f: e8 cc eb fd ff callq 5d1d50 : : appendStringInfoString(str, " :val "); 0.00 : 5f3184: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3187: be 72 5d 89 00 mov $0x895d72,%esi 0.00 : 5f318c: e8 bf eb fd ff callq 5d1d50 : _outValue(str, &(node->val)); 0.00 : 5f3191: 49 8d 75 08 lea 0x8(%r13),%rsi 0.00 : 5f3195: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3198: e8 43 ed ff ff callq 5f1ee0 <_outValue> : WRITE_LOCATION_FIELD(location); 0.00 : 5f319d: 41 8b 55 18 mov 0x18(%r13),%edx 0.00 : 5f31a1: be f2 5a 89 00 mov $0x895af2,%esi 0.00 : 5f31a6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f31a9: 31 c0 xor %eax,%eax 0.00 : 5f31ab: e8 60 ec fd ff callq 5d1e10 0.00 : 5f31b0: e9 03 ef ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outParamRef(StringInfo str, const ParamRef *node) : { : WRITE_NODE_TYPE("PARAMREF"); 0.00 : 5f31b5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f31b8: be 55 5d 89 00 mov $0x895d55,%esi 0.00 : 5f31bd: e8 8e eb fd ff callq 5d1d50 : : WRITE_INT_FIELD(number); 0.00 : 5f31c2: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f31c6: 4c 89 f7 mov %r14,%rdi 0.00 : 5f31c9: 31 c0 xor %eax,%eax 0.00 : 5f31cb: be 5e 5d 89 00 mov $0x895d5e,%esi 0.00 : 5f31d0: e8 3b ec fd ff callq 5d1e10 : WRITE_LOCATION_FIELD(location); 0.00 : 5f31d5: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f31d9: be f2 5a 89 00 mov $0x895af2,%esi 0.00 : 5f31de: 4c 89 f7 mov %r14,%rdi 0.00 : 5f31e1: 31 c0 xor %eax,%eax 0.00 : 5f31e3: e8 28 ec fd ff callq 5d1e10 0.00 : 5f31e8: e9 cb ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_A_Expr: : _outAExpr(str, obj); : break; : case T_ColumnRef: : _outColumnRef(str, obj); 0.00 : 5f31ed: 4c 89 ee mov %r13,%rsi 0.00 : 5f31f0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f31f3: e8 28 63 00 00 callq 5f9520 <_outColumnRef> : break; 0.00 : 5f31f8: e9 bb ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CoerceViaIO: : _outCoerceViaIO(str, obj); : break; : case T_ArrayCoerceExpr: : _outArrayCoerceExpr(str, obj); 0.00 : 5f31fd: 4c 89 ee mov %r13,%rsi 0.00 : 5f3200: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3203: e8 68 23 00 00 callq 5f5570 <_outArrayCoerceExpr> : break; 0.00 : 5f3208: e9 ab ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RelabelType: : _outRelabelType(str, obj); : break; : case T_CoerceViaIO: : _outCoerceViaIO(str, obj); 0.00 : 5f320d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3210: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3213: e8 c8 22 00 00 callq 5f54e0 <_outCoerceViaIO> : break; 0.00 : 5f3218: e9 9b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_FieldStore: : _outFieldStore(str, obj); : break; : case T_RelabelType: : _outRelabelType(str, obj); 0.00 : 5f321d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3220: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3223: e8 18 22 00 00 callq 5f5440 <_outRelabelType> : break; 0.00 : 5f3228: e9 8b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_FieldSelect: : _outFieldSelect(str, obj); : break; : case T_FieldStore: : _outFieldStore(str, obj); 0.00 : 5f322d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3230: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3233: e8 78 21 00 00 callq 5f53b0 <_outFieldStore> : break; 0.00 : 5f3238: e9 7b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_AlternativeSubPlan: : _outAlternativeSubPlan(str, obj); : break; : case T_FieldSelect: : _outFieldSelect(str, obj); 0.00 : 5f323d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3240: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3243: e8 d8 20 00 00 callq 5f5320 <_outFieldSelect> : break; 0.00 : 5f3248: e9 6b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_SubPlan: : _outSubPlan(str, obj); : break; : case T_AlternativeSubPlan: : _outAlternativeSubPlan(str, obj); 0.00 : 5f324d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3250: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3253: e8 78 20 00 00 callq 5f52d0 <_outAlternativeSubPlan> : break; 0.00 : 5f3258: e9 5b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_SubLink: : _outSubLink(str, obj); : break; : case T_SubPlan: : _outSubPlan(str, obj); 0.00 : 5f325d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3260: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3263: e8 c8 1e 00 00 callq 5f5130 <_outSubPlan> : break; 0.00 : 5f3268: e9 4b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_BoolExpr: : _outBoolExpr(str, obj); : break; : case T_SubLink: : _outSubLink(str, obj); 0.00 : 5f326d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3270: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3273: e8 08 1e 00 00 callq 5f5080 <_outSubLink> : break; 0.00 : 5f3278: e9 3b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ScalarArrayOpExpr: : _outScalarArrayOpExpr(str, obj); : break; : case T_BoolExpr: : _outBoolExpr(str, obj); 0.00 : 5f327d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3280: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3283: e8 58 1d 00 00 callq 5f4fe0 <_outBoolExpr> : break; 0.00 : 5f3288: e9 2b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_NullIfExpr: : _outNullIfExpr(str, obj); : break; : case T_ScalarArrayOpExpr: : _outScalarArrayOpExpr(str, obj); 0.00 : 5f328d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3290: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3293: e8 98 1c 00 00 callq 5f4f30 <_outScalarArrayOpExpr> : break; 0.00 : 5f3298: e9 1b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_DistinctExpr: : _outDistinctExpr(str, obj); : break; : case T_NullIfExpr: : _outNullIfExpr(str, obj); 0.00 : 5f329d: 4c 89 ee mov %r13,%rsi 0.00 : 5f32a0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f32a3: e8 a8 1b 00 00 callq 5f4e50 <_outNullIfExpr> : break; 0.00 : 5f32a8: e9 0b ee ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_OpExpr: : _outOpExpr(str, obj); : break; : case T_DistinctExpr: : _outDistinctExpr(str, obj); 0.00 : 5f32ad: 4c 89 ee mov %r13,%rsi 0.00 : 5f32b0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f32b3: e8 b8 1a 00 00 callq 5f4d70 <_outDistinctExpr> : break; 0.00 : 5f32b8: e9 fb ed ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_NamedArgExpr: : _outNamedArgExpr(str, obj); : break; : case T_OpExpr: : _outOpExpr(str, obj); 0.00 : 5f32bd: 4c 89 ee mov %r13,%rsi 0.00 : 5f32c0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f32c3: e8 c8 19 00 00 callq 5f4c90 <_outOpExpr> : break; 0.00 : 5f32c8: e9 eb ed ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_FuncExpr: : _outFuncExpr(str, obj); : break; : case T_NamedArgExpr: : _outNamedArgExpr(str, obj); 0.00 : 5f32cd: 4c 89 ee mov %r13,%rsi 0.00 : 5f32d0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f32d3: e8 38 19 00 00 callq 5f4c10 <_outNamedArgExpr> : break; 0.00 : 5f32d8: e9 db ed ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ArrayRef: : _outArrayRef(str, obj); : break; : case T_FuncExpr: : _outFuncExpr(str, obj); 0.00 : 5f32dd: 4c 89 ee mov %r13,%rsi 0.00 : 5f32e0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f32e3: e8 28 18 00 00 callq 5f4b10 <_outFuncExpr> : break; 0.00 : 5f32e8: e9 cb ed ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_WindowFunc: : _outWindowFunc(str, obj); : break; : case T_ArrayRef: : _outArrayRef(str, obj); 0.00 : 5f32ed: 4c 89 ee mov %r13,%rsi 0.00 : 5f32f0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f32f3: e8 38 17 00 00 callq 5f4a30 <_outArrayRef> : break; 0.00 : 5f32f8: e9 bb ed ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_Aggref: : _outAggref(str, obj); : break; : case T_WindowFunc: : _outWindowFunc(str, obj); 0.00 : 5f32fd: 4c 89 ee mov %r13,%rsi 0.00 : 5f3300: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3303: e8 18 16 00 00 callq 5f4920 <_outWindowFunc> : break; 0.00 : 5f3308: e9 ab ed ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_Param: : _outParam(str, obj); : break; : case T_Aggref: : _outAggref(str, obj); 0.00 : 5f330d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3310: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3313: e8 88 14 00 00 callq 5f47a0 <_outAggref> : break; 0.00 : 5f3318: e9 9b ed ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outParam(StringInfo str, const Param *node) : { : WRITE_NODE_TYPE("PARAM"); 0.00 : 5f331d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3320: be be 59 89 00 mov $0x8959be,%esi 0.00 : 5f3325: e8 26 ea fd ff callq 5d1d50 : : WRITE_ENUM_FIELD(paramkind, ParamKind); 0.00 : 5f332a: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f332e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3331: 31 c0 xor %eax,%eax 0.00 : 5f3333: be 7e 5b 89 00 mov $0x895b7e,%esi 0.00 : 5f3338: e8 d3 ea fd ff callq 5d1e10 : WRITE_INT_FIELD(paramid); 0.00 : 5f333d: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f3341: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3344: 31 c0 xor %eax,%eax 0.00 : 5f3346: be 8d 5b 89 00 mov $0x895b8d,%esi 0.00 : 5f334b: e8 c0 ea fd ff callq 5d1e10 : WRITE_OID_FIELD(paramtype); 0.00 : 5f3350: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f3354: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3357: 31 c0 xor %eax,%eax 0.00 : 5f3359: be 9a 5b 89 00 mov $0x895b9a,%esi 0.00 : 5f335e: e8 ad ea fd ff callq 5d1e10 : WRITE_INT_FIELD(paramtypmod); 0.00 : 5f3363: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f3367: 4c 89 f7 mov %r14,%rdi 0.00 : 5f336a: 31 c0 xor %eax,%eax 0.00 : 5f336c: be a9 5b 89 00 mov $0x895ba9,%esi 0.00 : 5f3371: e8 9a ea fd ff callq 5d1e10 : WRITE_OID_FIELD(paramcollid); 0.00 : 5f3376: 41 8b 55 14 mov 0x14(%r13),%edx 0.00 : 5f337a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f337d: 31 c0 xor %eax,%eax 0.00 : 5f337f: be ba 5b 89 00 mov $0x895bba,%esi 0.00 : 5f3384: e8 87 ea fd ff callq 5d1e10 : WRITE_LOCATION_FIELD(location); 0.00 : 5f3389: 41 8b 55 18 mov 0x18(%r13),%edx 0.00 : 5f338d: be f2 5a 89 00 mov $0x895af2,%esi 0.00 : 5f3392: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3395: 31 c0 xor %eax,%eax 0.00 : 5f3397: e8 74 ea fd ff callq 5d1e10 0.00 : 5f339c: e9 17 ed ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outConst(StringInfo str, const Const *node) : { : WRITE_NODE_TYPE("CONST"); 0.00 : 5f33a1: be 6c 5d 89 00 mov $0x895d6c,%esi 0.00 : 5f33a6: 4c 89 f7 mov %r14,%rdi : : WRITE_OID_FIELD(consttype); : WRITE_INT_FIELD(consttypmod); : WRITE_OID_FIELD(constcollid); : WRITE_INT_FIELD(constlen); : WRITE_BOOL_FIELD(constbyval); 0.00 : 5f33a9: bb c2 27 7b 00 mov $0x7b27c2,%ebx : } : : static void : _outConst(StringInfo str, const Const *node) : { : WRITE_NODE_TYPE("CONST"); 0.00 : 5f33ae: e8 9d e9 fd ff callq 5d1d50 : : WRITE_OID_FIELD(consttype); 0.00 : 5f33b3: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f33b7: 31 c0 xor %eax,%eax 0.00 : 5f33b9: be 00 5b 89 00 mov $0x895b00,%esi 0.00 : 5f33be: 4c 89 f7 mov %r14,%rdi : WRITE_INT_FIELD(consttypmod); : WRITE_OID_FIELD(constcollid); : WRITE_INT_FIELD(constlen); : WRITE_BOOL_FIELD(constbyval); 0.00 : 5f33c1: 41 bc 1e 93 8e 00 mov $0x8e931e,%r12d : static void : _outConst(StringInfo str, const Const *node) : { : WRITE_NODE_TYPE("CONST"); : : WRITE_OID_FIELD(consttype); 0.00 : 5f33c7: e8 44 ea fd ff callq 5d1e10 : WRITE_INT_FIELD(consttypmod); 0.00 : 5f33cc: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f33d0: 31 c0 xor %eax,%eax 0.00 : 5f33d2: be 0f 5b 89 00 mov $0x895b0f,%esi 0.00 : 5f33d7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f33da: e8 31 ea fd ff callq 5d1e10 : WRITE_OID_FIELD(constcollid); 0.00 : 5f33df: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f33e3: 31 c0 xor %eax,%eax 0.00 : 5f33e5: be 20 5b 89 00 mov $0x895b20,%esi 0.00 : 5f33ea: 4c 89 f7 mov %r14,%rdi 0.00 : 5f33ed: e8 1e ea fd ff callq 5d1e10 : WRITE_INT_FIELD(constlen); 0.00 : 5f33f2: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f33f6: 31 c0 xor %eax,%eax 0.00 : 5f33f8: be 31 5b 89 00 mov $0x895b31,%esi 0.00 : 5f33fd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3400: e8 0b ea fd ff callq 5d1e10 : WRITE_BOOL_FIELD(constbyval); 0.00 : 5f3405: 41 80 7d 21 00 cmpb $0x0,0x21(%r13) 0.00 : 5f340a: 48 89 da mov %rbx,%rdx 0.00 : 5f340d: be 3f 5b 89 00 mov $0x895b3f,%esi 0.00 : 5f3412: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3415: 49 0f 45 d4 cmovne %r12,%rdx 0.00 : 5f3419: 31 c0 xor %eax,%eax 0.00 : 5f341b: e8 f0 e9 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(constisnull); 0.00 : 5f3420: 41 80 7d 20 00 cmpb $0x0,0x20(%r13) 0.00 : 5f3425: be 4f 5b 89 00 mov $0x895b4f,%esi 0.00 : 5f342a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f342d: 49 0f 45 dc cmovne %r12,%rbx 0.00 : 5f3431: 31 c0 xor %eax,%eax 0.00 : 5f3433: 48 89 da mov %rbx,%rdx 0.00 : 5f3436: e8 d5 e9 fd ff callq 5d1e10 : WRITE_LOCATION_FIELD(location); 0.00 : 5f343b: 41 8b 55 24 mov 0x24(%r13),%edx 0.00 : 5f343f: 31 c0 xor %eax,%eax 0.00 : 5f3441: be f2 5a 89 00 mov $0x895af2,%esi 0.00 : 5f3446: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3449: e8 c2 e9 fd ff callq 5d1e10 : : appendStringInfoString(str, " :constvalue "); 0.00 : 5f344e: be 60 5b 89 00 mov $0x895b60,%esi 0.00 : 5f3453: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3456: e8 f5 e8 fd ff callq 5d1d50 : if (node->constisnull) 0.00 : 5f345b: 41 80 7d 20 00 cmpb $0x0,0x20(%r13) 0.00 : 5f3460: 0f 85 22 0d 00 00 jne 5f4188 <_outNode+0x2158> : appendStringInfoString(str, "<>"); : else : _outDatum(str, node->constvalue, node->constlen, node->constbyval); 0.00 : 5f3466: 41 0f b6 5d 21 movzbl 0x21(%r13),%ebx 0.00 : 5f346b: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 5f346f: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f3473: 48 89 7d d0 mov %rdi,-0x30(%rbp) : { : Size length, : i; : char *s; : : length = datumGetSize(value, typbyval, typlen); 0.00 : 5f3477: 0f be f3 movsbl %bl,%esi 0.00 : 5f347a: e8 41 c9 0d 00 callq 6cfdc0 : : if (typbyval) 0.00 : 5f347f: 84 db test %bl,%bl : { : Size length, : i; : char *s; : : length = datumGetSize(value, typbyval, typlen); 0.00 : 5f3481: 49 89 c4 mov %rax,%r12 : : if (typbyval) 0.00 : 5f3484: 0f 85 10 0d 00 00 jne 5f419a <_outNode+0x216a> : appendStringInfo(str, "%d ", (int) (s[i])); : appendStringInfoChar(str, ']'); : } : else : { : s = (char *) DatumGetPointer(value); 0.00 : 5f348a: 4c 8b 6d d0 mov -0x30(%rbp),%r13 : if (!PointerIsValid(s)) 0.00 : 5f348e: 4d 85 ed test %r13,%r13 0.00 : 5f3491: 0f 84 82 0d 00 00 je 5f4219 <_outNode+0x21e9> : appendStringInfoString(str, "0 [ ]"); : else : { : appendStringInfo(str, "%u [ ", (unsigned int) length); 0.00 : 5f3497: 89 c2 mov %eax,%edx 0.00 : 5f3499: be 6e 5b 89 00 mov $0x895b6e,%esi 0.00 : 5f349e: 31 c0 xor %eax,%eax 0.00 : 5f34a0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f34a3: e8 68 e9 fd ff callq 5d1e10 : for (i = 0; i < length; i++) 0.00 : 5f34a8: 4d 85 e4 test %r12,%r12 0.00 : 5f34ab: 74 1f je 5f34cc <_outNode+0x149c> 0.00 : 5f34ad: 31 db xor %ebx,%ebx : appendStringInfo(str, "%d ", (int) (s[i])); 0.00 : 5f34af: 42 0f be 14 2b movsbl (%rbx,%r13,1),%edx 0.00 : 5f34b4: 31 c0 xor %eax,%eax 0.00 : 5f34b6: be 74 5b 89 00 mov $0x895b74,%esi 0.00 : 5f34bb: 4c 89 f7 mov %r14,%rdi : if (!PointerIsValid(s)) : appendStringInfoString(str, "0 [ ]"); : else : { : appendStringInfo(str, "%u [ ", (unsigned int) length); : for (i = 0; i < length; i++) 0.00 : 5f34be: 48 83 c3 01 add $0x1,%rbx : appendStringInfo(str, "%d ", (int) (s[i])); 0.00 : 5f34c2: e8 49 e9 fd ff callq 5d1e10 : if (!PointerIsValid(s)) : appendStringInfoString(str, "0 [ ]"); : else : { : appendStringInfo(str, "%u [ ", (unsigned int) length); : for (i = 0; i < length; i++) 0.00 : 5f34c7: 49 39 dc cmp %rbx,%r12 0.00 : 5f34ca: 77 e3 ja 5f34af <_outNode+0x147f> : appendStringInfo(str, "%d ", (int) (s[i])); : appendStringInfoChar(str, ']'); 0.00 : 5f34cc: be 5d 00 00 00 mov $0x5d,%esi 0.00 : 5f34d1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f34d4: e8 b7 e7 fd ff callq 5d1c90 0.00 : 5f34d9: e9 da eb ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outVar(StringInfo str, const Var *node) : { : WRITE_NODE_TYPE("VAR"); 0.00 : 5f34de: 4c 89 f7 mov %r14,%rdi 0.00 : 5f34e1: be e7 5e 89 00 mov $0x895ee7,%esi 0.00 : 5f34e6: e8 65 e8 fd ff callq 5d1d50 : : WRITE_UINT_FIELD(varno); 0.00 : 5f34eb: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f34ef: 4c 89 f7 mov %r14,%rdi 0.00 : 5f34f2: 31 c0 xor %eax,%eax 0.00 : 5f34f4: be 80 5a 89 00 mov $0x895a80,%esi 0.00 : 5f34f9: e8 12 e9 fd ff callq 5d1e10 : WRITE_INT_FIELD(varattno); 0.00 : 5f34fe: 41 0f bf 55 08 movswl 0x8(%r13),%edx 0.00 : 5f3503: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3506: 31 c0 xor %eax,%eax 0.00 : 5f3508: be 8b 5a 89 00 mov $0x895a8b,%esi 0.00 : 5f350d: e8 fe e8 fd ff callq 5d1e10 : WRITE_OID_FIELD(vartype); 0.00 : 5f3512: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f3516: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3519: 31 c0 xor %eax,%eax 0.00 : 5f351b: be 99 5a 89 00 mov $0x895a99,%esi 0.00 : 5f3520: e8 eb e8 fd ff callq 5d1e10 : WRITE_INT_FIELD(vartypmod); 0.00 : 5f3525: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f3529: 4c 89 f7 mov %r14,%rdi 0.00 : 5f352c: 31 c0 xor %eax,%eax 0.00 : 5f352e: be a6 5a 89 00 mov $0x895aa6,%esi 0.00 : 5f3533: e8 d8 e8 fd ff callq 5d1e10 : WRITE_OID_FIELD(varcollid); 0.00 : 5f3538: 41 8b 55 14 mov 0x14(%r13),%edx 0.00 : 5f353c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f353f: 31 c0 xor %eax,%eax 0.00 : 5f3541: be b5 5a 89 00 mov $0x895ab5,%esi 0.00 : 5f3546: e8 c5 e8 fd ff callq 5d1e10 : WRITE_UINT_FIELD(varlevelsup); 0.00 : 5f354b: 41 8b 55 18 mov 0x18(%r13),%edx 0.00 : 5f354f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3552: 31 c0 xor %eax,%eax 0.00 : 5f3554: be c4 5a 89 00 mov $0x895ac4,%esi 0.00 : 5f3559: e8 b2 e8 fd ff callq 5d1e10 : WRITE_UINT_FIELD(varnoold); 0.00 : 5f355e: 41 8b 55 1c mov 0x1c(%r13),%edx 0.00 : 5f3562: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3565: 31 c0 xor %eax,%eax 0.00 : 5f3567: be d5 5a 89 00 mov $0x895ad5,%esi 0.00 : 5f356c: e8 9f e8 fd ff callq 5d1e10 : WRITE_INT_FIELD(varoattno); 0.00 : 5f3571: 41 0f bf 55 20 movswl 0x20(%r13),%edx 0.00 : 5f3576: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3579: 31 c0 xor %eax,%eax 0.00 : 5f357b: be e3 5a 89 00 mov $0x895ae3,%esi 0.00 : 5f3580: e8 8b e8 fd ff callq 5d1e10 : WRITE_LOCATION_FIELD(location); 0.00 : 5f3585: 41 8b 55 24 mov 0x24(%r13),%edx 0.00 : 5f3589: be f2 5a 89 00 mov $0x895af2,%esi 0.00 : 5f358e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3591: 31 c0 xor %eax,%eax 0.00 : 5f3593: e8 78 e8 fd ff callq 5d1e10 0.00 : 5f3598: e9 1b eb ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_Alias: : _outAlias(str, obj); : break; : case T_RangeVar: : _outRangeVar(str, obj); 0.00 : 5f359d: 4c 89 ee mov %r13,%rsi 0.00 : 5f35a0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f35a3: e8 68 10 00 00 callq 5f4610 <_outRangeVar> : break; 0.00 : 5f35a8: e9 0b eb ff ff jmpq 5f20b8 <_outNode+0x88> : *****************************************************************************/ : : static void : _outAlias(StringInfo str, const Alias *node) : { : WRITE_NODE_TYPE("ALIAS"); 0.00 : 5f35ad: 4c 89 f7 mov %r14,%rdi 0.00 : 5f35b0: be 61 5a 89 00 mov $0x895a61,%esi 0.00 : 5f35b5: e8 96 e7 fd ff callq 5d1d50 : : WRITE_STRING_FIELD(aliasname); 0.00 : 5f35ba: 31 c0 xor %eax,%eax 0.00 : 5f35bc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f35bf: be 67 5a 89 00 mov $0x895a67,%esi 0.00 : 5f35c4: e8 47 e8 fd ff callq 5d1e10 0.00 : 5f35c9: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 5f35cd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f35d0: e8 fb e7 ff ff callq 5f1dd0 <_outToken> : WRITE_NODE_FIELD(colnames); 0.00 : 5f35d5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f35d8: be 74 5a 89 00 mov $0x895a74,%esi 0.00 : 5f35dd: 31 c0 xor %eax,%eax 0.00 : 5f35df: e8 2c e8 fd ff callq 5d1e10 0.00 : 5f35e4: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 5f35e8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f35eb: e8 40 ea ff ff callq 5f2030 <_outNode> 0.00 : 5f35f0: e9 c3 ea ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outPlanInvalItem(StringInfo str, const PlanInvalItem *node) : { : WRITE_NODE_TYPE("PLANINVALITEM"); 0.00 : 5f35f5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f35f8: be 37 5a 89 00 mov $0x895a37,%esi 0.00 : 5f35fd: e8 4e e7 fd ff callq 5d1d50 : : WRITE_INT_FIELD(cacheId); 0.00 : 5f3602: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f3606: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3609: 31 c0 xor %eax,%eax 0.00 : 5f360b: be 45 5a 89 00 mov $0x895a45,%esi 0.00 : 5f3610: e8 fb e7 fd ff callq 5d1e10 : WRITE_UINT_FIELD(hashValue); 0.00 : 5f3615: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f3619: be 52 5a 89 00 mov $0x895a52,%esi 0.00 : 5f361e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3621: 31 c0 xor %eax,%eax 0.00 : 5f3623: e8 e8 e7 fd ff callq 5d1e10 0.00 : 5f3628: e9 8b ea ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outPlanRowMark(StringInfo str, const PlanRowMark *node) : { : WRITE_NODE_TYPE("PLANROWMARK"); 0.00 : 5f362d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3630: be dd 59 89 00 mov $0x8959dd,%esi : : WRITE_UINT_FIELD(rti); : WRITE_UINT_FIELD(prti); : WRITE_UINT_FIELD(rowmarkId); : WRITE_ENUM_FIELD(markType, RowMarkType); : WRITE_BOOL_FIELD(waitPolicy); 0.00 : 5f3635: bb c2 27 7b 00 mov $0x7b27c2,%ebx : } : : static void : _outPlanRowMark(StringInfo str, const PlanRowMark *node) : { : WRITE_NODE_TYPE("PLANROWMARK"); 0.00 : 5f363a: e8 11 e7 fd ff callq 5d1d50 : : WRITE_UINT_FIELD(rti); 0.00 : 5f363f: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f3643: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3646: 31 c0 xor %eax,%eax 0.00 : 5f3648: be e9 59 89 00 mov $0x8959e9,%esi : WRITE_UINT_FIELD(prti); : WRITE_UINT_FIELD(rowmarkId); : WRITE_ENUM_FIELD(markType, RowMarkType); : WRITE_BOOL_FIELD(waitPolicy); 0.00 : 5f364d: 41 bc 1e 93 8e 00 mov $0x8e931e,%r12d : static void : _outPlanRowMark(StringInfo str, const PlanRowMark *node) : { : WRITE_NODE_TYPE("PLANROWMARK"); : : WRITE_UINT_FIELD(rti); 0.00 : 5f3653: e8 b8 e7 fd ff callq 5d1e10 : WRITE_UINT_FIELD(prti); 0.00 : 5f3658: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f365c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f365f: 31 c0 xor %eax,%eax 0.00 : 5f3661: be f2 59 89 00 mov $0x8959f2,%esi 0.00 : 5f3666: e8 a5 e7 fd ff callq 5d1e10 : WRITE_UINT_FIELD(rowmarkId); 0.00 : 5f366b: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f366f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3672: 31 c0 xor %eax,%eax 0.00 : 5f3674: be fc 59 89 00 mov $0x8959fc,%esi 0.00 : 5f3679: e8 92 e7 fd ff callq 5d1e10 : WRITE_ENUM_FIELD(markType, RowMarkType); 0.00 : 5f367e: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f3682: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3685: 31 c0 xor %eax,%eax 0.00 : 5f3687: be 0b 5a 89 00 mov $0x895a0b,%esi 0.00 : 5f368c: e8 7f e7 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(waitPolicy); 0.00 : 5f3691: 41 8b 45 14 mov 0x14(%r13),%eax 0.00 : 5f3695: 48 89 da mov %rbx,%rdx 0.00 : 5f3698: 4c 89 f7 mov %r14,%rdi 0.00 : 5f369b: be 19 5a 89 00 mov $0x895a19,%esi 0.00 : 5f36a0: 85 c0 test %eax,%eax 0.00 : 5f36a2: 49 0f 45 d4 cmovne %r12,%rdx 0.00 : 5f36a6: 31 c0 xor %eax,%eax 0.00 : 5f36a8: e8 63 e7 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(isParent); 0.00 : 5f36ad: 41 80 7d 18 00 cmpb $0x0,0x18(%r13) 0.00 : 5f36b2: be 29 5a 89 00 mov $0x895a29,%esi 0.00 : 5f36b7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f36ba: 49 0f 45 dc cmovne %r12,%rbx 0.00 : 5f36be: 31 c0 xor %eax,%eax 0.00 : 5f36c0: 48 89 da mov %rbx,%rdx 0.00 : 5f36c3: e8 48 e7 fd ff callq 5d1e10 : case T_NestLoopParam: : _outNestLoopParam(str, obj); : break; : case T_PlanRowMark: : _outPlanRowMark(str, obj); : break; 0.00 : 5f36c8: e9 eb e9 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outNestLoopParam(StringInfo str, const NestLoopParam *node) : { : WRITE_NODE_TYPE("NESTLOOPPARAM"); 0.00 : 5f36cd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f36d0: be b6 59 89 00 mov $0x8959b6,%esi 0.00 : 5f36d5: e8 76 e6 fd ff callq 5d1d50 : : WRITE_INT_FIELD(paramno); 0.00 : 5f36da: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f36de: 4c 89 f7 mov %r14,%rdi 0.00 : 5f36e1: 31 c0 xor %eax,%eax 0.00 : 5f36e3: be c4 59 89 00 mov $0x8959c4,%esi 0.00 : 5f36e8: e8 23 e7 fd ff callq 5d1e10 : WRITE_NODE_FIELD(paramval); 0.00 : 5f36ed: 4c 89 f7 mov %r14,%rdi 0.00 : 5f36f0: be d1 59 89 00 mov $0x8959d1,%esi 0.00 : 5f36f5: 31 c0 xor %eax,%eax 0.00 : 5f36f7: e8 14 e7 fd ff callq 5d1e10 0.00 : 5f36fc: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 5f3700: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3703: e8 28 e9 ff ff callq 5f2030 <_outNode> 0.00 : 5f3708: e9 ab e9 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outLimit(StringInfo str, const Limit *node) : { : WRITE_NODE_TYPE("LIMIT"); 0.00 : 5f370d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3710: be 2c 86 7c 00 mov $0x7c862c,%esi 0.00 : 5f3715: e8 36 e6 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f371a: 4c 89 ee mov %r13,%rsi 0.00 : 5f371d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3720: e8 4b 0b 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_NODE_FIELD(limitOffset); 0.00 : 5f3725: 31 c0 xor %eax,%eax 0.00 : 5f3727: 4c 89 f7 mov %r14,%rdi 0.00 : 5f372a: be 99 59 89 00 mov $0x895999,%esi 0.00 : 5f372f: e8 dc e6 fd ff callq 5d1e10 0.00 : 5f3734: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 5f3738: 4c 89 f7 mov %r14,%rdi 0.00 : 5f373b: e8 f0 e8 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(limitCount); 0.00 : 5f3740: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3743: be a8 59 89 00 mov $0x8959a8,%esi 0.00 : 5f3748: 31 c0 xor %eax,%eax 0.00 : 5f374a: e8 c1 e6 fd ff callq 5d1e10 0.00 : 5f374f: 49 8b 75 68 mov 0x68(%r13),%rsi 0.00 : 5f3753: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3756: e8 d5 e8 ff ff callq 5f2030 <_outNode> 0.00 : 5f375b: e9 58 e9 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outLockRows(StringInfo str, const LockRows *node) : { : WRITE_NODE_TYPE("LOCKROWS"); 0.00 : 5f3760: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3763: be 90 59 89 00 mov $0x895990,%esi 0.00 : 5f3768: e8 e3 e5 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f376d: 4c 89 ee mov %r13,%rsi 0.00 : 5f3770: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3773: e8 f8 0a 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_NODE_FIELD(rowMarks); 0.00 : 5f3778: 31 c0 xor %eax,%eax 0.00 : 5f377a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f377d: be d3 54 89 00 mov $0x8954d3,%esi 0.00 : 5f3782: e8 89 e6 fd ff callq 5d1e10 0.00 : 5f3787: 49 8b 75 60 mov 0x60(%r13),%rsi 0.00 : 5f378b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f378e: e8 9d e8 ff ff callq 5f2030 <_outNode> : WRITE_INT_FIELD(epqParam); 0.00 : 5f3793: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f3797: be 99 55 89 00 mov $0x895599,%esi 0.00 : 5f379c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f379f: 31 c0 xor %eax,%eax 0.00 : 5f37a1: e8 6a e6 fd ff callq 5d1e10 0.00 : 5f37a6: e9 0d e9 ff ff jmpq 5f20b8 <_outNode+0x88> : static void : _outSetOp(StringInfo str, const SetOp *node) : { : int i; : : WRITE_NODE_TYPE("SETOP"); 0.00 : 5f37ab: be 54 59 89 00 mov $0x895954,%esi 0.00 : 5f37b0: 4c 89 f7 mov %r14,%rdi 0.00 : 5f37b3: e8 98 e5 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f37b8: 4c 89 ee mov %r13,%rsi 0.00 : 5f37bb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f37be: e8 ad 0a 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_ENUM_FIELD(cmd, SetOpCmd); 0.00 : 5f37c3: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f37c7: 31 c0 xor %eax,%eax 0.00 : 5f37c9: be 5a 59 89 00 mov $0x89595a,%esi 0.00 : 5f37ce: 4c 89 f7 mov %r14,%rdi 0.00 : 5f37d1: e8 3a e6 fd ff callq 5d1e10 : WRITE_ENUM_FIELD(strategy, SetOpStrategy); 0.00 : 5f37d6: 41 8b 55 64 mov 0x64(%r13),%edx 0.00 : 5f37da: 31 c0 xor %eax,%eax 0.00 : 5f37dc: be 63 59 89 00 mov $0x895963,%esi 0.00 : 5f37e1: 4c 89 f7 mov %r14,%rdi 0.00 : 5f37e4: e8 27 e6 fd ff callq 5d1e10 : WRITE_INT_FIELD(numCols); 0.00 : 5f37e9: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f37ed: 31 c0 xor %eax,%eax 0.00 : 5f37ef: be d0 55 89 00 mov $0x8955d0,%esi 0.00 : 5f37f4: 4c 89 f7 mov %r14,%rdi 0.00 : 5f37f7: e8 14 e6 fd ff callq 5d1e10 : : appendStringInfoString(str, " :dupColIdx"); 0.00 : 5f37fc: be 30 56 89 00 mov $0x895630,%esi 0.00 : 5f3801: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3804: e8 47 e5 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f3809: 41 8b 4d 68 mov 0x68(%r13),%ecx 0.00 : 5f380d: 85 c9 test %ecx,%ecx 0.00 : 5f380f: 7e 25 jle 5f3836 <_outNode+0x1806> 0.00 : 5f3811: 31 db xor %ebx,%ebx : appendStringInfo(str, " %d", node->dupColIdx[i]); 0.00 : 5f3813: 49 8b 55 70 mov 0x70(%r13),%rdx 0.00 : 5f3817: 48 63 c3 movslq %ebx,%rax 0.00 : 5f381a: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f381f: 4c 89 f7 mov %r14,%rdi : WRITE_ENUM_FIELD(cmd, SetOpCmd); : WRITE_ENUM_FIELD(strategy, SetOpStrategy); : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f3822: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %d", node->dupColIdx[i]); 0.00 : 5f3825: 0f bf 14 42 movswl (%rdx,%rax,2),%edx 0.00 : 5f3829: 31 c0 xor %eax,%eax 0.00 : 5f382b: e8 e0 e5 fd ff callq 5d1e10 : WRITE_ENUM_FIELD(cmd, SetOpCmd); : WRITE_ENUM_FIELD(strategy, SetOpStrategy); : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f3830: 41 3b 5d 68 cmp 0x68(%r13),%ebx 0.00 : 5f3834: 7c dd jl 5f3813 <_outNode+0x17e3> : appendStringInfo(str, " %d", node->dupColIdx[i]); : : appendStringInfoString(str, " :dupOperators"); 0.00 : 5f3836: be 3c 56 89 00 mov $0x89563c,%esi 0.00 : 5f383b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f383e: e8 0d e5 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f3843: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f3847: 85 d2 test %edx,%edx 0.00 : 5f3849: 7e 24 jle 5f386f <_outNode+0x183f> 0.00 : 5f384b: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->dupOperators[i]); 0.00 : 5f384d: 49 8b 55 78 mov 0x78(%r13),%rdx 0.00 : 5f3851: 48 63 c3 movslq %ebx,%rax 0.00 : 5f3854: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f3859: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->dupColIdx[i]); : : appendStringInfoString(str, " :dupOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f385c: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->dupOperators[i]); 0.00 : 5f385f: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f3862: 31 c0 xor %eax,%eax 0.00 : 5f3864: e8 a7 e5 fd ff callq 5d1e10 : appendStringInfoString(str, " :dupColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->dupColIdx[i]); : : appendStringInfoString(str, " :dupOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f3869: 41 3b 5d 68 cmp 0x68(%r13),%ebx 0.00 : 5f386d: 7c de jl 5f384d <_outNode+0x181d> : appendStringInfo(str, " %u", node->dupOperators[i]); : : WRITE_INT_FIELD(flagColIdx); 0.00 : 5f386f: 41 0f bf 95 80 00 00 movswl 0x80(%r13),%edx 0.00 : 5f3876: 00 0.00 : 5f3877: 4c 89 f7 mov %r14,%rdi 0.00 : 5f387a: 31 c0 xor %eax,%eax 0.00 : 5f387c: be 71 59 89 00 mov $0x895971,%esi 0.00 : 5f3881: e8 8a e5 fd ff callq 5d1e10 : WRITE_INT_FIELD(firstFlag); 0.00 : 5f3886: 41 8b 95 84 00 00 00 mov 0x84(%r13),%edx 0.00 : 5f388d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3890: 31 c0 xor %eax,%eax 0.00 : 5f3892: be 81 59 89 00 mov $0x895981,%esi 0.00 : 5f3897: e8 74 e5 fd ff callq 5d1e10 : WRITE_LONG_FIELD(numGroups); 0.00 : 5f389c: 49 8b 95 88 00 00 00 mov 0x88(%r13),%rdx 0.00 : 5f38a3: be 4b 56 89 00 mov $0x89564b,%esi 0.00 : 5f38a8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f38ab: 31 c0 xor %eax,%eax 0.00 : 5f38ad: e8 5e e5 fd ff callq 5d1e10 : case T_Hash: : _outHash(str, obj); : break; : case T_SetOp: : _outSetOp(str, obj); : break; 0.00 : 5f38b2: e9 01 e8 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outHash(StringInfo str, const Hash *node) : { : WRITE_NODE_TYPE("HASH"); 0.00 : 5f38b7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f38ba: be fb 58 89 00 mov $0x8958fb,%esi 0.00 : 5f38bf: e8 8c e4 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f38c4: 4c 89 ee mov %r13,%rsi 0.00 : 5f38c7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f38ca: e8 a1 09 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_OID_FIELD(skewTable); 0.00 : 5f38cf: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f38d3: 4c 89 f7 mov %r14,%rdi 0.00 : 5f38d6: 31 c0 xor %eax,%eax 0.00 : 5f38d8: be 00 59 89 00 mov $0x895900,%esi 0.00 : 5f38dd: e8 2e e5 fd ff callq 5d1e10 : WRITE_INT_FIELD(skewColumn); 0.00 : 5f38e2: 41 0f bf 55 64 movswl 0x64(%r13),%edx 0.00 : 5f38e7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f38ea: 31 c0 xor %eax,%eax 0.00 : 5f38ec: be 0f 59 89 00 mov $0x89590f,%esi 0.00 : 5f38f1: e8 1a e5 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(skewInherit); 0.00 : 5f38f6: 41 80 7d 66 00 cmpb $0x0,0x66(%r13) 0.00 : 5f38fb: b8 1e 93 8e 00 mov $0x8e931e,%eax 0.00 : 5f3900: ba c2 27 7b 00 mov $0x7b27c2,%edx 0.00 : 5f3905: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3908: be 1f 59 89 00 mov $0x89591f,%esi 0.00 : 5f390d: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 5f3911: 31 c0 xor %eax,%eax 0.00 : 5f3913: e8 f8 e4 fd ff callq 5d1e10 : WRITE_OID_FIELD(skewColType); 0.00 : 5f3918: 41 8b 55 68 mov 0x68(%r13),%edx 0.00 : 5f391c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f391f: 31 c0 xor %eax,%eax 0.00 : 5f3921: be 30 59 89 00 mov $0x895930,%esi 0.00 : 5f3926: e8 e5 e4 fd ff callq 5d1e10 : WRITE_INT_FIELD(skewColTypmod); 0.00 : 5f392b: 41 8b 55 6c mov 0x6c(%r13),%edx 0.00 : 5f392f: be 41 59 89 00 mov $0x895941,%esi 0.00 : 5f3934: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3937: 31 c0 xor %eax,%eax 0.00 : 5f3939: e8 d2 e4 fd ff callq 5d1e10 : case T_Unique: : _outUnique(str, obj); : break; : case T_Hash: : _outHash(str, obj); : break; 0.00 : 5f393e: e9 75 e7 ff ff jmpq 5f20b8 <_outNode+0x88> : static void : _outUnique(StringInfo str, const Unique *node) : { : int i; : : WRITE_NODE_TYPE("UNIQUE"); 0.00 : 5f3943: be c1 95 7c 00 mov $0x7c95c1,%esi 0.00 : 5f3948: 4c 89 f7 mov %r14,%rdi 0.00 : 5f394b: e8 00 e4 fd ff callq 5d1d50 : : _outPlanInfo(str, (const Plan *) node); 0.00 : 5f3950: 4c 89 ee mov %r13,%rsi 0.00 : 5f3953: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3956: e8 15 09 00 00 callq 5f4270 <_outPlanInfo> : : WRITE_INT_FIELD(numCols); 0.00 : 5f395b: 41 8b 55 60 mov 0x60(%r13),%edx 0.00 : 5f395f: 31 c0 xor %eax,%eax 0.00 : 5f3961: be d0 55 89 00 mov $0x8955d0,%esi 0.00 : 5f3966: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3969: e8 a2 e4 fd ff callq 5d1e10 : : appendStringInfoString(str, " :uniqColIdx"); 0.00 : 5f396e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3971: be de 58 89 00 mov $0x8958de,%esi 0.00 : 5f3976: e8 d5 e3 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f397b: 41 8b 7d 60 mov 0x60(%r13),%edi 0.00 : 5f397f: 85 ff test %edi,%edi 0.00 : 5f3981: 7e 25 jle 5f39a8 <_outNode+0x1978> 0.00 : 5f3983: 31 db xor %ebx,%ebx : appendStringInfo(str, " %d", node->uniqColIdx[i]); 0.00 : 5f3985: 49 8b 55 68 mov 0x68(%r13),%rdx 0.00 : 5f3989: 48 63 c3 movslq %ebx,%rax 0.00 : 5f398c: be 41 86 7c 00 mov $0x7c8641,%esi 0.00 : 5f3991: 4c 89 f7 mov %r14,%rdi : _outPlanInfo(str, (const Plan *) node); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :uniqColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f3994: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %d", node->uniqColIdx[i]); 0.00 : 5f3997: 0f bf 14 42 movswl (%rdx,%rax,2),%edx 0.00 : 5f399b: 31 c0 xor %eax,%eax 0.00 : 5f399d: e8 6e e4 fd ff callq 5d1e10 : _outPlanInfo(str, (const Plan *) node); : : WRITE_INT_FIELD(numCols); : : appendStringInfoString(str, " :uniqColIdx"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f39a2: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f39a6: 7c dd jl 5f3985 <_outNode+0x1955> : appendStringInfo(str, " %d", node->uniqColIdx[i]); : : appendStringInfoString(str, " :uniqOperators"); 0.00 : 5f39a8: be eb 58 89 00 mov $0x8958eb,%esi 0.00 : 5f39ad: 4c 89 f7 mov %r14,%rdi 0.00 : 5f39b0: e8 9b e3 fd ff callq 5d1d50 : for (i = 0; i < node->numCols; i++) 0.00 : 5f39b5: 41 8b 75 60 mov 0x60(%r13),%esi 0.00 : 5f39b9: 85 f6 test %esi,%esi 0.00 : 5f39bb: 0f 8e f7 e6 ff ff jle 5f20b8 <_outNode+0x88> 0.00 : 5f39c1: 31 db xor %ebx,%ebx : appendStringInfo(str, " %u", node->uniqOperators[i]); 0.00 : 5f39c3: 49 8b 55 70 mov 0x70(%r13),%rdx 0.00 : 5f39c7: 48 63 c3 movslq %ebx,%rax 0.00 : 5f39ca: be f1 9c 7b 00 mov $0x7b9cf1,%esi 0.00 : 5f39cf: 4c 89 f7 mov %r14,%rdi : appendStringInfoString(str, " :uniqColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->uniqColIdx[i]); : : appendStringInfoString(str, " :uniqOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f39d2: 83 c3 01 add $0x1,%ebx : appendStringInfo(str, " %u", node->uniqOperators[i]); 0.00 : 5f39d5: 8b 14 82 mov (%rdx,%rax,4),%edx 0.00 : 5f39d8: 31 c0 xor %eax,%eax 0.00 : 5f39da: e8 31 e4 fd ff callq 5d1e10 : appendStringInfoString(str, " :uniqColIdx"); : for (i = 0; i < node->numCols; i++) : appendStringInfo(str, " %d", node->uniqColIdx[i]); : : appendStringInfoString(str, " :uniqOperators"); : for (i = 0; i < node->numCols; i++) 0.00 : 5f39df: 41 3b 5d 60 cmp 0x60(%r13),%ebx 0.00 : 5f39e3: 7c de jl 5f39c3 <_outNode+0x1993> 0.00 : 5f39e5: e9 ce e6 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_Agg: : _outAgg(str, obj); : break; : case T_WindowAgg: : _outWindowAgg(str, obj); 0.00 : 5f39ea: 4c 89 ee mov %r13,%rsi 0.00 : 5f39ed: 4c 89 f7 mov %r14,%rdi 0.00 : 5f39f0: e8 4b 0a 00 00 callq 5f4440 <_outWindowAgg> : break; 0.00 : 5f39f5: e9 be e6 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RangeTblFunction: : _outRangeTblFunction(str, obj); : break; : case T_A_Expr: : _outAExpr(str, obj); 0.00 : 5f39fa: 4c 89 ee mov %r13,%rsi 0.00 : 5f39fd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a00: e8 7b 59 00 00 callq 5f9380 <_outAExpr> : break; 0.00 : 5f3a05: e9 ae e6 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CreateForeignTableStmt: : _outCreateForeignTableStmt(str, obj); : break; : case T_ImportForeignSchemaStmt: : _outImportForeignSchemaStmt(str, obj); 0.00 : 5f3a0a: 4c 89 ee mov %r13,%rsi 0.00 : 5f3a0d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a10: e8 ab 43 00 00 callq 5f7dc0 <_outImportForeignSchemaStmt> : break; 0.00 : 5f3a15: e9 9e e6 ff ff jmpq 5f20b8 <_outNode+0x88> : : case T_CreateStmt: : _outCreateStmt(str, obj); : break; : case T_CreateForeignTableStmt: : _outCreateForeignTableStmt(str, obj); 0.00 : 5f3a1a: 4c 89 ee mov %r13,%rsi 0.00 : 5f3a1d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a20: e8 3b 43 00 00 callq 5f7d60 <_outCreateForeignTableStmt> : break; 0.00 : 5f3a25: e9 8e e6 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_NotifyStmt: : _outNotifyStmt(str, obj); : break; : case T_DeclareCursorStmt: : _outDeclareCursorStmt(str, obj); 0.00 : 5f3a2a: 4c 89 ee mov %r13,%rsi 0.00 : 5f3a2d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a30: e8 3b 46 00 00 callq 5f8070 <_outDeclareCursorStmt> : break; 0.00 : 5f3a35: e9 7e e6 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outNotifyStmt(StringInfo str, const NotifyStmt *node) : { : WRITE_NODE_TYPE("NOTIFY"); 0.00 : 5f3a3a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a3d: be 11 7c 87 00 mov $0x877c11,%esi 0.00 : 5f3a42: e8 09 e3 fd ff callq 5d1d50 : : WRITE_STRING_FIELD(conditionname); 0.00 : 5f3a47: 31 c0 xor %eax,%eax 0.00 : 5f3a49: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a4c: be a3 5c 89 00 mov $0x895ca3,%esi 0.00 : 5f3a51: e8 ba e3 fd ff callq 5d1e10 0.00 : 5f3a56: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 5f3a5a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a5d: e8 6e e3 ff ff callq 5f1dd0 <_outToken> : WRITE_STRING_FIELD(payload); 0.00 : 5f3a62: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a65: be b4 5c 89 00 mov $0x895cb4,%esi 0.00 : 5f3a6a: 31 c0 xor %eax,%eax 0.00 : 5f3a6c: e8 9f e3 fd ff callq 5d1e10 0.00 : 5f3a71: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 5f3a75: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a78: e8 53 e3 ff ff callq 5f1dd0 <_outToken> 0.00 : 5f3a7d: e9 36 e6 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ImportForeignSchemaStmt: : _outImportForeignSchemaStmt(str, obj); : break; : case T_IndexStmt: : _outIndexStmt(str, obj); 0.00 : 5f3a82: 4c 89 ee mov %r13,%rsi 0.00 : 5f3a85: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a88: e8 f3 43 00 00 callq 5f7e80 <_outIndexStmt> 0.00 : 5f3a8d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5f3a90: e9 23 e6 ff ff jmpq 5f20b8 <_outNode+0x88> : case T_PlannerParamItem: : _outPlannerParamItem(str, obj); : break; : : case T_CreateStmt: : _outCreateStmt(str, obj); 0.00 : 5f3a95: 4c 89 ee mov %r13,%rsi 0.00 : 5f3a98: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3a9b: e8 80 42 00 00 callq 5f7d20 <_outCreateStmt> : break; 0.00 : 5f3aa0: e9 13 e6 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CommonTableExpr: : _outCommonTableExpr(str, obj); : break; : case T_SetOperationStmt: : _outSetOperationStmt(str, obj); 0.00 : 5f3aa5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3aa8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3aab: e8 60 53 00 00 callq 5f8e10 <_outSetOperationStmt> : break; 0.00 : 5f3ab0: e9 03 e6 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_DeclareCursorStmt: : _outDeclareCursorStmt(str, obj); : break; : case T_SelectStmt: : _outSelectStmt(str, obj); 0.00 : 5f3ab5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3ab8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3abb: e8 20 46 00 00 callq 5f80e0 <_outSelectStmt> : break; 0.00 : 5f3ac0: e9 f3 e5 ff ff jmpq 5f20b8 <_outNode+0x88> : */ : : static void : _outPlannedStmt(StringInfo str, const PlannedStmt *node) : { : WRITE_NODE_TYPE("PLANNEDSTMT"); 0.00 : 5f3ac5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ac8: be 0b 54 89 00 mov $0x89540b,%esi : : WRITE_ENUM_FIELD(commandType, CmdType); : WRITE_UINT_FIELD(queryId); : WRITE_BOOL_FIELD(hasReturning); 0.00 : 5f3acd: 41 bc c2 27 7b 00 mov $0x7b27c2,%r12d : */ : : static void : _outPlannedStmt(StringInfo str, const PlannedStmt *node) : { : WRITE_NODE_TYPE("PLANNEDSTMT"); 0.00 : 5f3ad3: e8 78 e2 fd ff callq 5d1d50 : : WRITE_ENUM_FIELD(commandType, CmdType); 0.00 : 5f3ad8: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f3adc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3adf: 31 c0 xor %eax,%eax 0.00 : 5f3ae1: be 17 54 89 00 mov $0x895417,%esi : WRITE_UINT_FIELD(queryId); : WRITE_BOOL_FIELD(hasReturning); 0.00 : 5f3ae6: bb 1e 93 8e 00 mov $0x8e931e,%ebx : static void : _outPlannedStmt(StringInfo str, const PlannedStmt *node) : { : WRITE_NODE_TYPE("PLANNEDSTMT"); : : WRITE_ENUM_FIELD(commandType, CmdType); 0.00 : 5f3aeb: e8 20 e3 fd ff callq 5d1e10 : WRITE_UINT_FIELD(queryId); 0.00 : 5f3af0: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f3af4: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3af7: 31 c0 xor %eax,%eax 0.00 : 5f3af9: be 28 54 89 00 mov $0x895428,%esi 0.00 : 5f3afe: e8 0d e3 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(hasReturning); 0.00 : 5f3b03: 41 80 7d 0c 00 cmpb $0x0,0xc(%r13) 0.00 : 5f3b08: 4c 89 e2 mov %r12,%rdx 0.00 : 5f3b0b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3b0e: be 35 54 89 00 mov $0x895435,%esi 0.00 : 5f3b13: 48 0f 45 d3 cmovne %rbx,%rdx 0.00 : 5f3b17: 31 c0 xor %eax,%eax 0.00 : 5f3b19: e8 f2 e2 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(hasModifyingCTE); 0.00 : 5f3b1e: 41 80 7d 0d 00 cmpb $0x0,0xd(%r13) 0.00 : 5f3b23: 4c 89 e2 mov %r12,%rdx 0.00 : 5f3b26: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3b29: be 47 54 89 00 mov $0x895447,%esi 0.00 : 5f3b2e: 48 0f 45 d3 cmovne %rbx,%rdx 0.00 : 5f3b32: 31 c0 xor %eax,%eax 0.00 : 5f3b34: e8 d7 e2 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(canSetTag); 0.00 : 5f3b39: 41 80 7d 0e 00 cmpb $0x0,0xe(%r13) 0.00 : 5f3b3e: 4c 89 e2 mov %r12,%rdx 0.00 : 5f3b41: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3b44: be 5c 54 89 00 mov $0x89545c,%esi 0.00 : 5f3b49: 48 0f 45 d3 cmovne %rbx,%rdx 0.00 : 5f3b4d: 31 c0 xor %eax,%eax 0.00 : 5f3b4f: e8 bc e2 fd ff callq 5d1e10 : WRITE_BOOL_FIELD(transientPlan); 0.00 : 5f3b54: 41 80 7d 0f 00 cmpb $0x0,0xf(%r13) 0.00 : 5f3b59: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3b5c: be 6b 54 89 00 mov $0x89546b,%esi 0.00 : 5f3b61: 4c 0f 45 e3 cmovne %rbx,%r12 0.00 : 5f3b65: 31 c0 xor %eax,%eax 0.00 : 5f3b67: 4c 89 e2 mov %r12,%rdx 0.00 : 5f3b6a: e8 a1 e2 fd ff callq 5d1e10 : WRITE_NODE_FIELD(planTree); 0.00 : 5f3b6f: 31 c0 xor %eax,%eax 0.00 : 5f3b71: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3b74: be 7e 54 89 00 mov $0x89547e,%esi 0.00 : 5f3b79: e8 92 e2 fd ff callq 5d1e10 0.00 : 5f3b7e: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 5f3b82: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3b85: e8 a6 e4 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(rtable); 0.00 : 5f3b8a: 31 c0 xor %eax,%eax 0.00 : 5f3b8c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3b8f: be 8a 54 89 00 mov $0x89548a,%esi 0.00 : 5f3b94: e8 77 e2 fd ff callq 5d1e10 0.00 : 5f3b99: 49 8b 75 18 mov 0x18(%r13),%rsi 0.00 : 5f3b9d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ba0: e8 8b e4 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(resultRelations); 0.00 : 5f3ba5: 31 c0 xor %eax,%eax 0.00 : 5f3ba7: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3baa: be 94 54 89 00 mov $0x895494,%esi 0.00 : 5f3baf: e8 5c e2 fd ff callq 5d1e10 0.00 : 5f3bb4: 49 8b 75 20 mov 0x20(%r13),%rsi 0.00 : 5f3bb8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3bbb: e8 70 e4 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(utilityStmt); 0.00 : 5f3bc0: 31 c0 xor %eax,%eax 0.00 : 5f3bc2: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3bc5: be a7 54 89 00 mov $0x8954a7,%esi 0.00 : 5f3bca: e8 41 e2 fd ff callq 5d1e10 0.00 : 5f3bcf: 49 8b 75 28 mov 0x28(%r13),%rsi 0.00 : 5f3bd3: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3bd6: e8 55 e4 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(subplans); 0.00 : 5f3bdb: 31 c0 xor %eax,%eax 0.00 : 5f3bdd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3be0: be b6 54 89 00 mov $0x8954b6,%esi 0.00 : 5f3be5: e8 26 e2 fd ff callq 5d1e10 0.00 : 5f3bea: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 5f3bee: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3bf1: e8 3a e4 ff ff callq 5f2030 <_outNode> : WRITE_BITMAPSET_FIELD(rewindPlanIDs); 0.00 : 5f3bf6: 31 c0 xor %eax,%eax 0.00 : 5f3bf8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3bfb: be c2 54 89 00 mov $0x8954c2,%esi 0.00 : 5f3c00: e8 0b e2 fd ff callq 5d1e10 0.00 : 5f3c05: 49 8b 75 38 mov 0x38(%r13),%rsi 0.00 : 5f3c09: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c0c: e8 af e3 ff ff callq 5f1fc0 <_outBitmapset> : WRITE_NODE_FIELD(rowMarks); 0.00 : 5f3c11: 31 c0 xor %eax,%eax 0.00 : 5f3c13: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c16: be d3 54 89 00 mov $0x8954d3,%esi 0.00 : 5f3c1b: e8 f0 e1 fd ff callq 5d1e10 0.00 : 5f3c20: 49 8b 75 40 mov 0x40(%r13),%rsi 0.00 : 5f3c24: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c27: e8 04 e4 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(relationOids); 0.00 : 5f3c2c: 31 c0 xor %eax,%eax 0.00 : 5f3c2e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c31: be df 54 89 00 mov $0x8954df,%esi 0.00 : 5f3c36: e8 d5 e1 fd ff callq 5d1e10 0.00 : 5f3c3b: 49 8b 75 48 mov 0x48(%r13),%rsi 0.00 : 5f3c3f: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c42: e8 e9 e3 ff ff callq 5f2030 <_outNode> : WRITE_NODE_FIELD(invalItems); 0.00 : 5f3c47: 31 c0 xor %eax,%eax 0.00 : 5f3c49: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c4c: be ef 54 89 00 mov $0x8954ef,%esi 0.00 : 5f3c51: e8 ba e1 fd ff callq 5d1e10 0.00 : 5f3c56: 49 8b 75 50 mov 0x50(%r13),%rsi 0.00 : 5f3c5a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c5d: e8 ce e3 ff ff callq 5f2030 <_outNode> : WRITE_INT_FIELD(nParamExec); 0.00 : 5f3c62: 41 8b 55 58 mov 0x58(%r13),%edx 0.00 : 5f3c66: be fd 54 89 00 mov $0x8954fd,%esi 0.00 : 5f3c6b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c6e: 31 c0 xor %eax,%eax 0.00 : 5f3c70: e8 9b e1 fd ff callq 5d1e10 : appendStringInfoChar(str, '{'); : switch (nodeTag(obj)) : { : case T_PlannedStmt: : _outPlannedStmt(str, obj); : break; 0.00 : 5f3c75: e9 3e e4 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_IndexElem: : _outIndexElem(str, obj); : break; : case T_Query: : _outQuery(str, obj); 0.00 : 5f3c7a: 4c 89 ee mov %r13,%rsi 0.00 : 5f3c7d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c80: e8 ab 4a 00 00 callq 5f8730 <_outQuery> : break; 0.00 : 5f3c85: e9 2e e4 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_MinMaxAggInfo: : _outMinMaxAggInfo(str, obj); : break; : case T_PlannerParamItem: : _outPlannerParamItem(str, obj); 0.00 : 5f3c8a: 4c 89 ee mov %r13,%rsi 0.00 : 5f3c8d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3c90: e8 1b 3f 00 00 callq 5f7bb0 <_outPlannerParamItem> : break; 0.00 : 5f3c95: e9 1e e4 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_PlaceHolderInfo: : _outPlaceHolderInfo(str, obj); : break; : case T_MinMaxAggInfo: : _outMinMaxAggInfo(str, obj); 0.00 : 5f3c9a: 4c 89 ee mov %r13,%rsi 0.00 : 5f3c9d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ca0: e8 5b 3e 00 00 callq 5f7b00 <_outMinMaxAggInfo> : break; 0.00 : 5f3ca5: e9 0e e4 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_AppendRelInfo: : _outAppendRelInfo(str, obj); : break; : case T_PlaceHolderInfo: : _outPlaceHolderInfo(str, obj); 0.00 : 5f3caa: 4c 89 ee mov %r13,%rsi 0.00 : 5f3cad: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3cb0: e8 8b 3d 00 00 callq 5f7a40 <_outPlaceHolderInfo> : break; 0.00 : 5f3cb5: e9 fe e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_LateralJoinInfo: : _outLateralJoinInfo(str, obj); : break; : case T_AppendRelInfo: : _outAppendRelInfo(str, obj); 0.00 : 5f3cba: 4c 89 ee mov %r13,%rsi 0.00 : 5f3cbd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3cc0: e8 db 3c 00 00 callq 5f79a0 <_outAppendRelInfo> : break; 0.00 : 5f3cc5: e9 ee e3 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outLateralJoinInfo(StringInfo str, const LateralJoinInfo *node) : { : WRITE_NODE_TYPE("LATERALJOININFO"); 0.00 : 5f3cca: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ccd: be 75 5c 89 00 mov $0x895c75,%esi 0.00 : 5f3cd2: e8 79 e0 fd ff callq 5d1d50 : : WRITE_BITMAPSET_FIELD(lateral_lhs); 0.00 : 5f3cd7: 31 c0 xor %eax,%eax 0.00 : 5f3cd9: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3cdc: be 85 5c 89 00 mov $0x895c85,%esi 0.00 : 5f3ce1: e8 2a e1 fd ff callq 5d1e10 0.00 : 5f3ce6: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 5f3cea: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ced: e8 ce e2 ff ff callq 5f1fc0 <_outBitmapset> : WRITE_BITMAPSET_FIELD(lateral_rhs); 0.00 : 5f3cf2: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3cf5: be 94 5c 89 00 mov $0x895c94,%esi 0.00 : 5f3cfa: 31 c0 xor %eax,%eax 0.00 : 5f3cfc: e8 0f e1 fd ff callq 5d1e10 0.00 : 5f3d01: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : 5f3d05: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d08: e8 b3 e2 ff ff callq 5f1fc0 <_outBitmapset> 0.00 : 5f3d0d: e9 a6 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_PlaceHolderVar: : _outPlaceHolderVar(str, obj); : break; : case T_SpecialJoinInfo: : _outSpecialJoinInfo(str, obj); 0.00 : 5f3d12: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d15: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d18: e8 83 3b 00 00 callq 5f78a0 <_outSpecialJoinInfo> 0.00 : 5f3d1d: 0f 1f 00 nopl (%rax) : break; 0.00 : 5f3d20: e9 93 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RestrictInfo: : _outRestrictInfo(str, obj); : break; : case T_PlaceHolderVar: : _outPlaceHolderVar(str, obj); 0.00 : 5f3d25: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d28: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d2b: e8 f0 3a 00 00 callq 5f7820 <_outPlaceHolderVar> : break; 0.00 : 5f3d30: e9 83 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ParamPathInfo: : _outParamPathInfo(str, obj); : break; : case T_RestrictInfo: : _outRestrictInfo(str, obj); 0.00 : 5f3d35: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d38: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d3b: e8 90 38 00 00 callq 5f75d0 <_outRestrictInfo> : break; 0.00 : 5f3d40: e9 73 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_EquivalenceMember: : _outEquivalenceMember(str, obj); : break; : case T_PathKey: : _outPathKey(str, obj); 0.00 : 5f3d45: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d48: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d4b: e8 80 37 00 00 callq 5f74d0 <_outPathKey> : break; 0.00 : 5f3d50: e9 63 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_EquivalenceClass: : _outEquivalenceClass(str, obj); : break; : case T_EquivalenceMember: : _outEquivalenceMember(str, obj); 0.00 : 5f3d55: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d58: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d5b: e8 80 36 00 00 callq 5f73e0 <_outEquivalenceMember> : break; 0.00 : 5f3d60: e9 53 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_IndexOptInfo: : _outIndexOptInfo(str, obj); : break; : case T_EquivalenceClass: : _outEquivalenceClass(str, obj); 0.00 : 5f3d65: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d68: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d6b: e8 10 35 00 00 callq 5f7280 <_outEquivalenceClass> : break; 0.00 : 5f3d70: e9 43 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_MaterialPath: : _outMaterialPath(str, obj); : break; : case T_UniquePath: : _outUniquePath(str, obj); 0.00 : 5f3d75: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d78: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d7b: e8 20 28 00 00 callq 5f65a0 <_outUniquePath> : break; 0.00 : 5f3d80: e9 33 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ResultPath: : _outResultPath(str, obj); : break; : case T_MaterialPath: : _outMaterialPath(str, obj); 0.00 : 5f3d85: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d88: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d8b: e8 b0 27 00 00 callq 5f6540 <_outMaterialPath> : break; 0.00 : 5f3d90: e9 23 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_MergeAppendPath: : _outMergeAppendPath(str, obj); : break; : case T_ResultPath: : _outResultPath(str, obj); 0.00 : 5f3d95: 4c 89 ee mov %r13,%rsi 0.00 : 5f3d98: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3d9b: e8 40 27 00 00 callq 5f64e0 <_outResultPath> : break; 0.00 : 5f3da0: e9 13 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_AppendPath: : _outAppendPath(str, obj); : break; : case T_MergeAppendPath: : _outMergeAppendPath(str, obj); 0.00 : 5f3da5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3da8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3dab: e8 d0 26 00 00 callq 5f6480 <_outMergeAppendPath> : break; 0.00 : 5f3db0: e9 03 e3 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ForeignPath: : _outForeignPath(str, obj); : break; : case T_AppendPath: : _outAppendPath(str, obj); 0.00 : 5f3db5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3db8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3dbb: e8 60 26 00 00 callq 5f6420 <_outAppendPath> : break; 0.00 : 5f3dc0: e9 f3 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_TidPath: : _outTidPath(str, obj); : break; : case T_ForeignPath: : _outForeignPath(str, obj); 0.00 : 5f3dc5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3dc8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3dcb: e8 f0 25 00 00 callq 5f63c0 <_outForeignPath> : break; 0.00 : 5f3dd0: e9 e3 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_BitmapOrPath: : _outBitmapOrPath(str, obj); : break; : case T_TidPath: : _outTidPath(str, obj); 0.00 : 5f3dd5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3dd8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ddb: e8 80 25 00 00 callq 5f6360 <_outTidPath> : break; 0.00 : 5f3de0: e9 d3 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_MergePath: : _outMergePath(str, obj); : break; : case T_HashPath: : _outHashPath(str, obj); 0.00 : 5f3de5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3de8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3deb: e8 a0 29 00 00 callq 5f6790 <_outHashPath> : break; 0.00 : 5f3df0: e9 c3 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_NestPath: : _outNestPath(str, obj); : break; : case T_MergePath: : _outMergePath(str, obj); 0.00 : 5f3df5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3df8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3dfb: e8 f0 28 00 00 callq 5f66f0 <_outMergePath> : break; 0.00 : 5f3e00: e9 b3 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_UniquePath: : _outUniquePath(str, obj); : break; : case T_NestPath: : _outNestPath(str, obj); 0.00 : 5f3e05: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e08: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e0b: e8 a0 28 00 00 callq 5f66b0 <_outNestPath> : break; 0.00 : 5f3e10: e9 a3 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_BitmapAndPath: : _outBitmapAndPath(str, obj); : break; : case T_BitmapOrPath: : _outBitmapOrPath(str, obj); 0.00 : 5f3e15: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e18: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e1b: e8 e0 24 00 00 callq 5f6300 <_outBitmapOrPath> : break; 0.00 : 5f3e20: e9 93 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_BitmapHeapPath: : _outBitmapHeapPath(str, obj); : break; : case T_BitmapAndPath: : _outBitmapAndPath(str, obj); 0.00 : 5f3e25: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e28: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e2b: e8 70 24 00 00 callq 5f62a0 <_outBitmapAndPath> : break; 0.00 : 5f3e30: e9 83 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_IndexPath: : _outIndexPath(str, obj); : break; : case T_BitmapHeapPath: : _outBitmapHeapPath(str, obj); 0.00 : 5f3e35: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e38: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e3b: e8 00 24 00 00 callq 5f6240 <_outBitmapHeapPath> : break; 0.00 : 5f3e40: e9 73 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : : case T_Path: : _outPath(str, obj); : break; : case T_IndexPath: : _outIndexPath(str, obj); 0.00 : 5f3e45: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e48: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e4b: e8 d0 22 00 00 callq 5f6120 <_outIndexPath> : break; 0.00 : 5f3e50: e9 63 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : case T_FromExpr: : _outFromExpr(str, obj); : break; : : case T_Path: : _outPath(str, obj); 0.00 : 5f3e55: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e58: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e5b: e8 80 22 00 00 callq 5f60e0 <_outPath> : break; 0.00 : 5f3e60: e9 53 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_PathKey: : _outPathKey(str, obj); : break; : case T_ParamPathInfo: : _outParamPathInfo(str, obj); 0.00 : 5f3e65: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e68: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e6b: e8 f0 36 00 00 callq 5f7560 <_outParamPathInfo> : break; 0.00 : 5f3e70: e9 43 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RelOptInfo: : _outRelOptInfo(str, obj); : break; : case T_IndexOptInfo: : _outIndexOptInfo(str, obj); 0.00 : 5f3e75: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e78: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e7b: e8 a0 32 00 00 callq 5f7120 <_outIndexOptInfo> : break; 0.00 : 5f3e80: e9 33 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_PlannerInfo: : _outPlannerInfo(str, obj); : break; : case T_RelOptInfo: : _outRelOptInfo(str, obj); 0.00 : 5f3e85: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e88: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e8b: e8 30 2f 00 00 callq 5f6dc0 <_outRelOptInfo> : break; 0.00 : 5f3e90: e9 23 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_HashPath: : _outHashPath(str, obj); : break; : case T_PlannerGlobal: : _outPlannerGlobal(str, obj); 0.00 : 5f3e95: 4c 89 ee mov %r13,%rsi 0.00 : 5f3e98: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3e9b: e8 50 29 00 00 callq 5f67f0 <_outPlannerGlobal> : break; 0.00 : 5f3ea0: e9 13 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : case T_PlannerInfo: : _outPlannerInfo(str, obj); 0.00 : 5f3ea5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3ea8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3eab: e8 80 2a 00 00 callq 5f6930 <_outPlannerInfo> : break; 0.00 : 5f3eb0: e9 03 e2 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RangeVar: : _outRangeVar(str, obj); : break; : case T_IntoClause: : _outIntoClause(str, obj); 0.00 : 5f3eb5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3eb8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ebb: e8 00 08 00 00 callq 5f46c0 <_outIntoClause> : break; 0.00 : 5f3ec0: e9 f3 e1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_JoinExpr: : _outJoinExpr(str, obj); : break; : case T_FromExpr: : _outFromExpr(str, obj); 0.00 : 5f3ec5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3ec8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ecb: e8 d0 20 00 00 callq 5f5fa0 <_outFromExpr> : break; 0.00 : 5f3ed0: e9 e3 e1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RangeTblRef: : _outRangeTblRef(str, obj); : break; : case T_JoinExpr: : _outJoinExpr(str, obj); 0.00 : 5f3ed5: 4c 89 ee mov %r13,%rsi 0.00 : 5f3ed8: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3edb: e8 c0 1f 00 00 callq 5f5ea0 <_outJoinExpr> : break; 0.00 : 5f3ee0: e9 d3 e1 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outRangeTblRef(StringInfo str, const RangeTblRef *node) : { : WRITE_NODE_TYPE("RANGETBLREF"); 0.00 : 5f3ee5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ee8: be 5c 5c 89 00 mov $0x895c5c,%esi 0.00 : 5f3eed: e8 5e de fd ff callq 5d1d50 : : WRITE_INT_FIELD(rtindex); 0.00 : 5f3ef2: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f3ef6: be 68 5c 89 00 mov $0x895c68,%esi 0.00 : 5f3efb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3efe: 31 c0 xor %eax,%eax 0.00 : 5f3f00: e8 0b df fd ff callq 5d1e10 0.00 : 5f3f05: e9 ae e1 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CurrentOfExpr: : _outCurrentOfExpr(str, obj); : break; : case T_TargetEntry: : _outTargetEntry(str, obj); 0.00 : 5f3f0a: 4c 89 ee mov %r13,%rsi 0.00 : 5f3f0d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f10: e8 bb 1e 00 00 callq 5f5dd0 <_outTargetEntry> : break; 0.00 : 5f3f15: e9 9e e1 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outCurrentOfExpr(StringInfo str, const CurrentOfExpr *node) : { : WRITE_NODE_TYPE("CURRENTOFEXPR"); 0.00 : 5f3f1a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f1d: be 21 5c 89 00 mov $0x895c21,%esi 0.00 : 5f3f22: e8 29 de fd ff callq 5d1d50 : : WRITE_UINT_FIELD(cvarno); 0.00 : 5f3f27: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f3f2b: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f2e: 31 c0 xor %eax,%eax 0.00 : 5f3f30: be 2f 5c 89 00 mov $0x895c2f,%esi 0.00 : 5f3f35: e8 d6 de fd ff callq 5d1e10 : WRITE_STRING_FIELD(cursor_name); 0.00 : 5f3f3a: 31 c0 xor %eax,%eax 0.00 : 5f3f3c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f3f: be 3b 5c 89 00 mov $0x895c3b,%esi 0.00 : 5f3f44: e8 c7 de fd ff callq 5d1e10 0.00 : 5f3f49: 49 8b 75 08 mov 0x8(%r13),%rsi 0.00 : 5f3f4d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f50: e8 7b de ff ff callq 5f1dd0 <_outToken> : WRITE_INT_FIELD(cursor_param); 0.00 : 5f3f55: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f3f59: be 4a 5c 89 00 mov $0x895c4a,%esi 0.00 : 5f3f5e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f61: 31 c0 xor %eax,%eax 0.00 : 5f3f63: e8 a8 de fd ff callq 5d1e10 0.00 : 5f3f68: e9 4b e1 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outSetToDefault(StringInfo str, const SetToDefault *node) : { : WRITE_NODE_TYPE("SETTODEFAULT"); 0.00 : 5f3f6d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f70: be 14 5c 89 00 mov $0x895c14,%esi 0.00 : 5f3f75: e8 d6 dd fd ff callq 5d1d50 : : WRITE_OID_FIELD(typeId); 0.00 : 5f3f7a: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f3f7e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f81: 31 c0 xor %eax,%eax 0.00 : 5f3f83: be d8 5b 89 00 mov $0x895bd8,%esi 0.00 : 5f3f88: e8 83 de fd ff callq 5d1e10 : WRITE_INT_FIELD(typeMod); 0.00 : 5f3f8d: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f3f91: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3f94: 31 c0 xor %eax,%eax 0.00 : 5f3f96: be e4 5b 89 00 mov $0x895be4,%esi 0.00 : 5f3f9b: e8 70 de fd ff callq 5d1e10 : WRITE_OID_FIELD(collation); 0.00 : 5f3fa0: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f3fa4: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3fa7: 31 c0 xor %eax,%eax 0.00 : 5f3fa9: be f1 5b 89 00 mov $0x895bf1,%esi 0.00 : 5f3fae: e8 5d de fd ff callq 5d1e10 : WRITE_LOCATION_FIELD(location); 0.00 : 5f3fb3: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f3fb7: be f2 5a 89 00 mov $0x895af2,%esi 0.00 : 5f3fbc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3fbf: 31 c0 xor %eax,%eax 0.00 : 5f3fc1: e8 4a de fd ff callq 5d1e10 0.00 : 5f3fc6: e9 ed e0 ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outCoerceToDomainValue(StringInfo str, const CoerceToDomainValue *node) : { : WRITE_NODE_TYPE("COERCETODOMAINVALUE"); 0.00 : 5f3fcb: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3fce: be 00 5c 89 00 mov $0x895c00,%esi 0.00 : 5f3fd3: e8 78 dd fd ff callq 5d1d50 : : WRITE_OID_FIELD(typeId); 0.00 : 5f3fd8: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f3fdc: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3fdf: 31 c0 xor %eax,%eax 0.00 : 5f3fe1: be d8 5b 89 00 mov $0x895bd8,%esi 0.00 : 5f3fe6: e8 25 de fd ff callq 5d1e10 : WRITE_INT_FIELD(typeMod); 0.00 : 5f3feb: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f3fef: 4c 89 f7 mov %r14,%rdi 0.00 : 5f3ff2: 31 c0 xor %eax,%eax 0.00 : 5f3ff4: be e4 5b 89 00 mov $0x895be4,%esi 0.00 : 5f3ff9: e8 12 de fd ff callq 5d1e10 : WRITE_OID_FIELD(collation); 0.00 : 5f3ffe: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f4002: 4c 89 f7 mov %r14,%rdi 0.00 : 5f4005: 31 c0 xor %eax,%eax 0.00 : 5f4007: be f1 5b 89 00 mov $0x895bf1,%esi 0.00 : 5f400c: e8 ff dd fd ff callq 5d1e10 : WRITE_LOCATION_FIELD(location); 0.00 : 5f4011: 41 8b 55 10 mov 0x10(%r13),%edx 0.00 : 5f4015: be f2 5a 89 00 mov $0x895af2,%esi 0.00 : 5f401a: 4c 89 f7 mov %r14,%rdi 0.00 : 5f401d: 31 c0 xor %eax,%eax 0.00 : 5f401f: e8 ec dd fd ff callq 5d1e10 0.00 : 5f4024: e9 8f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_BooleanTest: : _outBooleanTest(str, obj); : break; : case T_CoerceToDomain: : _outCoerceToDomain(str, obj); 0.00 : 5f4029: 4c 89 ee mov %r13,%rsi 0.00 : 5f402c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f402f: e8 fc 1c 00 00 callq 5f5d30 <_outCoerceToDomain> : break; 0.00 : 5f4034: e9 7f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_NullTest: : _outNullTest(str, obj); : break; : case T_BooleanTest: : _outBooleanTest(str, obj); 0.00 : 5f4039: 4c 89 ee mov %r13,%rsi 0.00 : 5f403c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f403f: e8 8c 1c 00 00 callq 5f5cd0 <_outBooleanTest> : break; 0.00 : 5f4044: e9 6f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_XmlExpr: : _outXmlExpr(str, obj); : break; : case T_NullTest: : _outNullTest(str, obj); 0.00 : 5f4049: 4c 89 ee mov %r13,%rsi 0.00 : 5f404c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f404f: e8 0c 1c 00 00 callq 5f5c60 <_outNullTest> : break; 0.00 : 5f4054: e9 5f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_MinMaxExpr: : _outMinMaxExpr(str, obj); : break; : case T_XmlExpr: : _outXmlExpr(str, obj); 0.00 : 5f4059: 4c 89 ee mov %r13,%rsi 0.00 : 5f405c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f405f: e8 0c 1b 00 00 callq 5f5b70 <_outXmlExpr> : break; 0.00 : 5f4064: e9 4f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CoalesceExpr: : _outCoalesceExpr(str, obj); : break; : case T_MinMaxExpr: : _outMinMaxExpr(str, obj); 0.00 : 5f4069: 4c 89 ee mov %r13,%rsi 0.00 : 5f406c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f406f: e8 5c 1a 00 00 callq 5f5ad0 <_outMinMaxExpr> : break; 0.00 : 5f4074: e9 3f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RowCompareExpr: : _outRowCompareExpr(str, obj); : break; : case T_CoalesceExpr: : _outCoalesceExpr(str, obj); 0.00 : 5f4079: 4c 89 ee mov %r13,%rsi 0.00 : 5f407c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f407f: e8 cc 19 00 00 callq 5f5a50 <_outCoalesceExpr> : break; 0.00 : 5f4084: e9 2f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_RowExpr: : _outRowExpr(str, obj); : break; : case T_RowCompareExpr: : _outRowCompareExpr(str, obj); 0.00 : 5f4089: 4c 89 ee mov %r13,%rsi 0.00 : 5f408c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f408f: e8 fc 18 00 00 callq 5f5990 <_outRowCompareExpr> : break; 0.00 : 5f4094: e9 1f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ArrayExpr: : _outArrayExpr(str, obj); : break; : case T_RowExpr: : _outRowExpr(str, obj); 0.00 : 5f4099: 4c 89 ee mov %r13,%rsi 0.00 : 5f409c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f409f: e8 5c 18 00 00 callq 5f5900 <_outRowExpr> : break; 0.00 : 5f40a4: e9 0f e0 ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CaseTestExpr: : _outCaseTestExpr(str, obj); : break; : case T_ArrayExpr: : _outArrayExpr(str, obj); 0.00 : 5f40a9: 4c 89 ee mov %r13,%rsi 0.00 : 5f40ac: 4c 89 f7 mov %r14,%rdi 0.00 : 5f40af: e8 9c 17 00 00 callq 5f5850 <_outArrayExpr> : break; 0.00 : 5f40b4: e9 ff df ff ff jmpq 5f20b8 <_outNode+0x88> : } : : static void : _outCaseTestExpr(StringInfo str, const CaseTestExpr *node) : { : WRITE_NODE_TYPE("CASETESTEXPR"); 0.00 : 5f40b9: 4c 89 f7 mov %r14,%rdi 0.00 : 5f40bc: be cb 5b 89 00 mov $0x895bcb,%esi 0.00 : 5f40c1: e8 8a dc fd ff callq 5d1d50 : : WRITE_OID_FIELD(typeId); 0.00 : 5f40c6: 41 8b 55 04 mov 0x4(%r13),%edx 0.00 : 5f40ca: 4c 89 f7 mov %r14,%rdi 0.00 : 5f40cd: 31 c0 xor %eax,%eax 0.00 : 5f40cf: be d8 5b 89 00 mov $0x895bd8,%esi 0.00 : 5f40d4: e8 37 dd fd ff callq 5d1e10 : WRITE_INT_FIELD(typeMod); 0.00 : 5f40d9: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 5f40dd: 4c 89 f7 mov %r14,%rdi 0.00 : 5f40e0: 31 c0 xor %eax,%eax 0.00 : 5f40e2: be e4 5b 89 00 mov $0x895be4,%esi 0.00 : 5f40e7: e8 24 dd fd ff callq 5d1e10 : WRITE_OID_FIELD(collation); 0.00 : 5f40ec: 41 8b 55 0c mov 0xc(%r13),%edx 0.00 : 5f40f0: be f1 5b 89 00 mov $0x895bf1,%esi 0.00 : 5f40f5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f40f8: 31 c0 xor %eax,%eax 0.00 : 5f40fa: e8 11 dd fd ff callq 5d1e10 0.00 : 5f40ff: e9 b4 df ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CaseExpr: : _outCaseExpr(str, obj); : break; : case T_CaseWhen: : _outCaseWhen(str, obj); 0.00 : 5f4104: 4c 89 ee mov %r13,%rsi 0.00 : 5f4107: 4c 89 f7 mov %r14,%rdi 0.00 : 5f410a: e8 d1 16 00 00 callq 5f57e0 <_outCaseWhen> 0.00 : 5f410f: 90 nop : break; 0.00 : 5f4110: e9 a3 df ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_CollateExpr: : _outCollateExpr(str, obj); : break; : case T_CaseExpr: : _outCaseExpr(str, obj); 0.00 : 5f4115: 4c 89 ee mov %r13,%rsi 0.00 : 5f4118: 4c 89 f7 mov %r14,%rdi 0.00 : 5f411b: e8 10 16 00 00 callq 5f5730 <_outCaseExpr> : break; 0.00 : 5f4120: e9 93 df ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ConvertRowtypeExpr: : _outConvertRowtypeExpr(str, obj); : break; : case T_CollateExpr: : _outCollateExpr(str, obj); 0.00 : 5f4125: 4c 89 ee mov %r13,%rsi 0.00 : 5f4128: 4c 89 f7 mov %r14,%rdi 0.00 : 5f412b: e8 a0 15 00 00 callq 5f56d0 <_outCollateExpr> : break; 0.00 : 5f4130: e9 83 df ff ff jmpq 5f20b8 <_outNode+0x88> : break; : case T_ArrayCoerceExpr: : _outArrayCoerceExpr(str, obj); : break; : case T_ConvertRowtypeExpr: : _outConvertRowtypeExpr(str, obj); 0.00 : 5f4135: 4c 89 ee mov %r13,%rsi 0.00 : 5f4138: 4c 89 f7 mov %r14,%rdi 0.00 : 5f413b: e8 10 15 00 00 callq 5f5650 <_outConvertRowtypeExpr> : break; 0.00 : 5f4140: e9 73 df ff ff jmpq 5f20b8 <_outNode+0x88> 0.00 : 5f4145: 0f 1f 00 nopl (%rax) : const ListCell *lc; : : appendStringInfoChar(str, '('); : : if (IsA(node, IntList)) : appendStringInfoChar(str, 'i'); 0.00 : 5f4148: be 69 00 00 00 mov $0x69,%esi 0.00 : 5f414d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f4150: e8 3b db fd ff callq 5d1c90 0.00 : 5f4155: e9 ba df ff ff jmpq 5f2114 <_outNode+0xe4> : else if (IsA(node, IntList)) : appendStringInfo(str, " %d", lfirst_int(lc)); : else if (IsA(node, OidList)) : appendStringInfo(str, " %u", lfirst_oid(lc)); : else : elog(ERROR, "unrecognized list node type: %d", 0.00 : 5f415a: ba 09 9c 89 00 mov $0x899c09,%edx 0.00 : 5f415f: be ac 00 00 00 mov $0xac,%esi 0.00 : 5f4164: bf 00 54 89 00 mov $0x895400,%edi 0.00 : 5f4169: e8 b2 72 18 00 callq 77b420 0.00 : 5f416e: 41 8b 55 00 mov 0x0(%r13),%edx 0.00 : 5f4172: be 80 3f 89 00 mov $0x893f80,%esi 0.00 : 5f4177: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5f417c: 31 c0 xor %eax,%eax 0.00 : 5f417e: e8 ad 70 18 00 callq 77b230 0.00 : 5f4183: e8 48 53 e7 ff callq 4694d0 : WRITE_BOOL_FIELD(constisnull); : WRITE_LOCATION_FIELD(location); : : appendStringInfoString(str, " :constvalue "); : if (node->constisnull) : appendStringInfoString(str, "<>"); 0.00 : 5f4188: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 5f418d: 4c 89 f7 mov %r14,%rdi 0.00 : 5f4190: e8 bb db fd ff callq 5d1d50 0.00 : 5f4195: e9 1e df ff ff jmpq 5f20b8 <_outNode+0x88> : length = datumGetSize(value, typbyval, typlen); : : if (typbyval) : { : s = (char *) (&value); : appendStringInfo(str, "%u [ ", (unsigned int) length); 0.00 : 5f419a: 48 8d 5d d0 lea -0x30(%rbp),%rbx 0.00 : 5f419e: 89 c2 mov %eax,%edx 0.00 : 5f41a0: be 6e 5b 89 00 mov $0x895b6e,%esi 0.00 : 5f41a5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f41a8: 31 c0 xor %eax,%eax 0.00 : 5f41aa: e8 61 dc fd ff callq 5d1e10 : for (i = 0; i < (Size) sizeof(Datum); i++) : appendStringInfo(str, "%d ", (int) (s[i])); 0.00 : 5f41af: 0f be 13 movsbl (%rbx),%edx 0.00 : 5f41b2: 31 c0 xor %eax,%eax 0.00 : 5f41b4: be 74 5b 89 00 mov $0x895b74,%esi 0.00 : 5f41b9: 4c 89 f7 mov %r14,%rdi 0.00 : 5f41bc: 48 83 c3 01 add $0x1,%rbx 0.00 : 5f41c0: e8 4b dc fd ff callq 5d1e10 : : if (typbyval) : { : s = (char *) (&value); : appendStringInfo(str, "%u [ ", (unsigned int) length); : for (i = 0; i < (Size) sizeof(Datum); i++) 0.00 : 5f41c5: 48 8d 45 d8 lea -0x28(%rbp),%rax 0.00 : 5f41c9: 48 39 c3 cmp %rax,%rbx 0.00 : 5f41cc: 75 e1 jne 5f41af <_outNode+0x217f> : appendStringInfo(str, "%d ", (int) (s[i])); : appendStringInfoChar(str, ']'); 0.00 : 5f41ce: be 5d 00 00 00 mov $0x5d,%esi 0.00 : 5f41d3: 4c 89 f7 mov %r14,%rdi 0.00 : 5f41d6: e8 b5 da fd ff callq 5d1c90 0.00 : 5f41db: e9 d8 de ff ff jmpq 5f20b8 <_outNode+0x88> : : WRITE_NODE_FIELD(mergeclauses); : : numCols = list_length(node->mergeclauses); : : appendStringInfoString(str, " :mergeFamilies"); 0.00 : 5f41e0: be 46 58 89 00 mov $0x895846,%esi 0.00 : 5f41e5: 4c 89 f7 mov %r14,%rdi 0.00 : 5f41e8: e8 63 db fd ff callq 5d1d50 : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeFamilies[i]); : : appendStringInfoString(str, " :mergeCollations"); 0.00 : 5f41ed: 4c 89 f7 mov %r14,%rdi 0.00 : 5f41f0: be 56 58 89 00 mov $0x895856,%esi 0.00 : 5f41f5: e8 56 db fd ff callq 5d1d50 : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %u", node->mergeCollations[i]); : : appendStringInfoString(str, " :mergeStrategies"); 0.00 : 5f41fa: 4c 89 f7 mov %r14,%rdi 0.00 : 5f41fd: be 68 58 89 00 mov $0x895868,%esi 0.00 : 5f4202: e8 49 db fd ff callq 5d1d50 : for (i = 0; i < numCols; i++) : appendStringInfo(str, " %d", node->mergeStrategies[i]); : : appendStringInfoString(str, " :mergeNullsFirst"); 0.00 : 5f4207: be 7a 58 89 00 mov $0x89587a,%esi 0.00 : 5f420c: 4c 89 f7 mov %r14,%rdi 0.00 : 5f420f: e8 3c db fd ff callq 5d1d50 0.00 : 5f4214: e9 9f de ff ff jmpq 5f20b8 <_outNode+0x88> : } : else : { : s = (char *) DatumGetPointer(value); : if (!PointerIsValid(s)) : appendStringInfoString(str, "0 [ ]"); 0.00 : 5f4219: be 78 5b 89 00 mov $0x895b78,%esi 0.00 : 5f421e: 4c 89 f7 mov %r14,%rdi 0.00 : 5f4221: e8 2a db fd ff callq 5d1d50 0.00 : 5f4226: e9 8d de ff ff jmpq 5f20b8 <_outNode+0x88> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:1251 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000060e500 : : * ORs. (See build_paths_for_OR() for motivation.) : */ : static List * : generate_bitmap_or_paths(PlannerInfo *root, RelOptInfo *rel, : List *clauses, List *other_clauses) : { 0.00 : 60e500: 55 push %rbp 0.00 : 60e501: 48 89 e5 mov %rsp,%rbp 0.00 : 60e504: 41 57 push %r15 0.00 : 60e506: 49 89 f7 mov %rsi,%r15 0.00 : 60e509: 41 56 push %r14 0.00 : 60e50b: 41 55 push %r13 0.00 : 60e50d: 41 54 push %r12 0.00 : 60e50f: 49 89 d4 mov %rdx,%r12 0.00 : 60e512: 53 push %rbx 0.00 : 60e513: 48 89 cb mov %rcx,%rbx 0.00 : 60e516: 48 83 ec 28 sub $0x28,%rsp 0.00 : 60e51a: 48 89 7d b8 mov %rdi,-0x48(%rbp) : : /* : * We can use both the current and other clauses as context for : * build_paths_for_OR; no need to remove ORs from the lists. : */ : all_clauses = list_concat(list_copy(clauses), other_clauses); 0.00 : 60e51e: 48 89 d7 mov %rdx,%rdi 0.00 : 60e521: e8 da 31 fd ff callq 5e1700 0.00 : 60e526: 48 89 de mov %rbx,%rsi 0.00 : 60e529: 48 89 c7 mov %rax,%rdi 0.00 : 60e52c: e8 8f 40 fd ff callq 5e25c0 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 60e531: 4d 85 e4 test %r12,%r12 0.00 : 60e534: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 60e538: 0f 84 48 01 00 00 je 60e686 0.00 : 60e53e: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : : foreach(lc, clauses) 0.00 : 60e543: 4d 85 e4 test %r12,%r12 0.00 : 60e546: 4c 89 65 d0 mov %r12,-0x30(%rbp) 0.00 : 60e54a: 0f 84 36 01 00 00 je 60e686 0.00 : 60e550: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 60e557: 00 0.00 : 60e558: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 60e55f: 00 : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 60e560: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 60e564: 48 8b 18 mov (%rax),%rbx : Path *bitmapqual; : ListCell *j; : : Assert(IsA(rinfo, RestrictInfo)); : /* Ignore RestrictInfos that aren't ORs */ : if (!restriction_is_or_clause(rinfo)) 0.00 : 60e567: 48 89 df mov %rbx,%rdi 0.00 : 60e56a: e8 41 81 02 00 callq 6366b0 0.00 : 60e56f: 84 c0 test %al,%al 0.00 : 60e571: 0f 84 c1 00 00 00 je 60e638 : /* : * We must be able to match at least one index to each of the arms of : * the OR, else we can't use it. : */ : pathlist = NIL; : foreach(j, ((BoolExpr *) rinfo->orclause)->args) 0.00 : 60e577: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 60e57b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 60e57f: 48 85 c0 test %rax,%rax 0.00 : 60e582: 0f 84 b0 00 00 00 je 60e638 0.00 : 60e588: 4c 8b 68 08 mov 0x8(%rax),%r13 0.00 : 60e58c: 4d 85 ed test %r13,%r13 0.00 : 60e58f: 0f 84 a3 00 00 00 je 60e638 0.00 : 60e595: 45 31 f6 xor %r14d,%r14d 0.00 : 60e598: eb 69 jmp 60e603 0.00 : 60e59a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : List *indlist; : : /* OR arguments should be ANDs or sub-RestrictInfos */ : if (and_clause(orarg)) : { : List *andargs = ((BoolExpr *) orarg)->args; 0.00 : 60e5a0: 48 8b 5b 08 mov 0x8(%rbx),%rbx : : indlist = build_paths_for_OR(root, rel, 0.00 : 60e5a4: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 60e5a8: 4c 89 fe mov %r15,%rsi 0.00 : 60e5ab: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 60e5af: 48 89 da mov %rbx,%rdx 0.00 : 60e5b2: e8 39 f6 ff ff callq 60dbf0 : andargs, : all_clauses); : : /* Recurse in case there are sub-ORs */ : indlist = list_concat(indlist, 0.00 : 60e5b7: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 60e5bb: 48 8b 7d b8 mov -0x48(%rbp),%rdi : /* OR arguments should be ANDs or sub-RestrictInfos */ : if (and_clause(orarg)) : { : List *andargs = ((BoolExpr *) orarg)->args; : : indlist = build_paths_for_OR(root, rel, 0.00 : 60e5bf: 49 89 c4 mov %rax,%r12 : andargs, : all_clauses); : : /* Recurse in case there are sub-ORs */ : indlist = list_concat(indlist, 0.00 : 60e5c2: 48 89 da mov %rbx,%rdx 0.00 : 60e5c5: 4c 89 fe mov %r15,%rsi 0.00 : 60e5c8: e8 33 ff ff ff callq 60e500 0.00 : 60e5cd: 4c 89 e7 mov %r12,%rdi 0.00 : 60e5d0: 48 89 c6 mov %rax,%rsi 0.00 : 60e5d3: e8 e8 3f fd ff callq 5e25c0 : : /* : * If nothing matched this arm, we can't do anything with this OR : * clause. : */ : if (indlist == NIL) 0.00 : 60e5d8: 48 85 c0 test %rax,%rax 0.00 : 60e5db: 74 5b je 60e638 : : /* : * OK, pick the most promising AND combination, and add it to : * pathlist. : */ : bitmapqual = choose_bitmap_and(root, rel, indlist); 0.00 : 60e5dd: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 60e5e1: 48 89 c2 mov %rax,%rdx 0.00 : 60e5e4: 4c 89 fe mov %r15,%rsi 0.00 : 60e5e7: e8 44 f8 ff ff callq 60de30 : pathlist = lappend(pathlist, bitmapqual); 0.00 : 60e5ec: 4c 89 f7 mov %r14,%rdi : : /* : * OK, pick the most promising AND combination, and add it to : * pathlist. : */ : bitmapqual = choose_bitmap_and(root, rel, indlist); 0.00 : 60e5ef: 48 89 c6 mov %rax,%rsi : pathlist = lappend(pathlist, bitmapqual); 0.00 : 60e5f2: e8 89 38 fd ff callq 5e1e80 : /* : * We must be able to match at least one index to each of the arms of : * the OR, else we can't use it. : */ : pathlist = NIL; : foreach(j, ((BoolExpr *) rinfo->orclause)->args) 0.00 : 60e5f7: 4d 8b 6d 08 mov 0x8(%r13),%r13 : /* : * OK, pick the most promising AND combination, and add it to : * pathlist. : */ : bitmapqual = choose_bitmap_and(root, rel, indlist); : pathlist = lappend(pathlist, bitmapqual); 0.00 : 60e5fb: 49 89 c6 mov %rax,%r14 : /* : * We must be able to match at least one index to each of the arms of : * the OR, else we can't use it. : */ : pathlist = NIL; : foreach(j, ((BoolExpr *) rinfo->orclause)->args) 0.00 : 60e5fe: 4d 85 ed test %r13,%r13 0.00 : 60e601: 74 5d je 60e660 : { : Node *orarg = (Node *) lfirst(j); 0.00 : 60e603: 49 8b 5d 00 mov 0x0(%r13),%rbx : List *indlist; : : /* OR arguments should be ANDs or sub-RestrictInfos */ : if (and_clause(orarg)) 0.00 : 60e607: 48 89 df mov %rbx,%rdi 0.00 : 60e60a: e8 b1 c5 01 00 callq 62abc0 0.00 : 60e60f: 84 c0 test %al,%al 0.00 : 60e611: 75 8d jne 60e5a0 : { : List *orargs; : : Assert(IsA(orarg, RestrictInfo)); : Assert(!restriction_is_or_clause((RestrictInfo *) orarg)); : orargs = list_make1(orarg); 0.00 : 60e613: 31 f6 xor %esi,%esi 0.00 : 60e615: 48 89 df mov %rbx,%rdi 0.00 : 60e618: e8 33 32 fd ff callq 5e1850 : : indlist = build_paths_for_OR(root, rel, 0.00 : 60e61d: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 60e621: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 60e625: 48 89 c2 mov %rax,%rdx 0.00 : 60e628: 4c 89 fe mov %r15,%rsi 0.00 : 60e62b: e8 c0 f5 ff ff callq 60dbf0 : : /* : * If nothing matched this arm, we can't do anything with this OR : * clause. : */ : if (indlist == NIL) 0.00 : 60e630: 48 85 c0 test %rax,%rax 0.00 : 60e633: 75 a8 jne 60e5dd 0.00 : 60e635: 0f 1f 00 nopl (%rax) : * We can use both the current and other clauses as context for : * build_paths_for_OR; no need to remove ORs from the lists. : */ : all_clauses = list_concat(list_copy(clauses), other_clauses); : : foreach(lc, clauses) 0.00 : 60e638: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 60e63c: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 60e640: 48 85 c0 test %rax,%rax 0.00 : 60e643: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 60e647: 0f 85 13 ff ff ff jne 60e560 : result = lappend(result, bitmapqual); : } : } : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/indxpath.c:1251 100.00 : 60e64d: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 60e651: 48 83 c4 28 add $0x28,%rsp 0.00 : 60e655: 5b pop %rbx 0.00 : 60e656: 41 5c pop %r12 0.00 : 60e658: 41 5d pop %r13 0.00 : 60e65a: 41 5e pop %r14 0.00 : 60e65c: 41 5f pop %r15 0.00 : 60e65e: c9 leaveq 0.00 : 60e65f: c3 retq : : /* : * If we have a match for every arm, then turn them into a : * BitmapOrPath, and add to result list. : */ : if (pathlist != NIL) 0.00 : 60e660: 48 85 c0 test %rax,%rax 0.00 : 60e663: 74 d3 je 60e638 : { : bitmapqual = (Path *) create_bitmap_or_path(root, rel, pathlist); 0.00 : 60e665: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 60e669: 48 89 c2 mov %rax,%rdx 0.00 : 60e66c: 4c 89 fe mov %r15,%rsi 0.00 : 60e66f: e8 bc 2c 02 00 callq 631330 : result = lappend(result, bitmapqual); 0.00 : 60e674: 48 8b 7d c0 mov -0x40(%rbp),%rdi : * If we have a match for every arm, then turn them into a : * BitmapOrPath, and add to result list. : */ : if (pathlist != NIL) : { : bitmapqual = (Path *) create_bitmap_or_path(root, rel, pathlist); 0.00 : 60e678: 48 89 c6 mov %rax,%rsi : result = lappend(result, bitmapqual); 0.00 : 60e67b: e8 00 38 fd ff callq 5e1e80 0.00 : 60e680: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 60e684: eb b2 jmp 60e638 : * We can use both the current and other clauses as context for : * build_paths_for_OR; no need to remove ORs from the lists. : */ : all_clauses = list_concat(list_copy(clauses), other_clauses); : : foreach(lc, clauses) 0.00 : 60e686: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 60e68d: 00 0.00 : 60e68e: eb bd jmp 60e64d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/joinpath.c:428 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000060ecf0 : : List *restrict_clauses, : List *pathkeys, : List *mergeclauses, : List *outersortkeys, : List *innersortkeys) : { 0.00 : 60ecf0: 55 push %rbp 0.00 : 60ecf1: 48 89 e5 mov %rsp,%rbp 0.00 : 60ecf4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 60ecf8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 60ecfc: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 60ed00: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 60ed04: 4d 89 c6 mov %r8,%r14 0.00 : 60ed07: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 60ed0b: 48 81 ec f0 00 00 00 sub $0xf0,%rsp 0.00 : 60ed12: 48 89 bd 68 ff ff ff mov %rdi,-0x98(%rbp) 0.00 : 60ed19: 48 89 b5 60 ff ff ff mov %rsi,-0xa0(%rbp) : : /* : * Check to see if proposed path is still parameterized, and reject if the : * parameterization wouldn't be sensible. : */ : required_outer = calc_non_nestloop_required_outer(outer_path, 0.00 : 60ed20: 48 8b 7d 10 mov 0x10(%rbp),%rdi : List *restrict_clauses, : List *pathkeys, : List *mergeclauses, : List *outersortkeys, : List *innersortkeys) : { 0.00 : 60ed24: 4d 89 cf mov %r9,%r15 : : /* : * Check to see if proposed path is still parameterized, and reject if the : * parameterization wouldn't be sensible. : */ : required_outer = calc_non_nestloop_required_outer(outer_path, 0.00 : 60ed27: 48 8b 75 18 mov 0x18(%rbp),%rsi : List *restrict_clauses, : List *pathkeys, : List *mergeclauses, : List *outersortkeys, : List *innersortkeys) : { 0.00 : 60ed2b: 89 95 5c ff ff ff mov %edx,-0xa4(%rbp) 0.00 : 60ed31: 48 89 8d 50 ff ff ff mov %rcx,-0xb0(%rbp) 0.00 : 60ed38: 4c 8b 6d 38 mov 0x38(%rbp),%r13 0.00 : 60ed3c: 4c 8b 65 40 mov 0x40(%rbp),%r12 : : /* : * Check to see if proposed path is still parameterized, and reject if the : * parameterization wouldn't be sensible. : */ : required_outer = calc_non_nestloop_required_outer(outer_path, 0.00 : 60ed40: e8 3b 15 02 00 callq 630280 : inner_path); : if (required_outer && 0.00 : 60ed45: 48 85 c0 test %rax,%rax : : /* : * Check to see if proposed path is still parameterized, and reject if the : * parameterization wouldn't be sensible. : */ : required_outer = calc_non_nestloop_required_outer(outer_path, 0.00 : 60ed48: 48 89 c3 mov %rax,%rbx : inner_path); : if (required_outer && 0.00 : 60ed4b: 74 13 je 60ed60 0.00 : 60ed4d: 4c 89 f6 mov %r14,%rsi 0.00 : 60ed50: 48 89 c7 mov %rax,%rdi 0.00 : 60ed53: e8 28 3c fd ff callq 5e2980 0.00 : 60ed58: 84 c0 test %al,%al 0.00 : 60ed5a: 0f 84 b2 00 00 00 je 60ee12 : : /* : * Independently of that, add parameterization needed for any : * PlaceHolderVars that need to be computed at the join. : */ : required_outer = bms_add_members(required_outer, extra_lateral_rels); 0.00 : 60ed60: 48 89 df mov %rbx,%rdi 0.00 : 60ed63: 4c 89 fe mov %r15,%rsi 0.00 : 60ed66: e8 f5 43 fd ff callq 5e3160 : : /* : * If the given paths are already well enough ordered, we can skip doing : * an explicit sort. : */ : if (outersortkeys && 0.00 : 60ed6b: 4d 85 ed test %r13,%r13 : : /* : * Independently of that, add parameterization needed for any : * PlaceHolderVars that need to be computed at the join. : */ : required_outer = bms_add_members(required_outer, extra_lateral_rels); 0.00 : 60ed6e: 48 89 c3 mov %rax,%rbx : : /* : * If the given paths are already well enough ordered, we can skip doing : * an explicit sort. : */ : if (outersortkeys && 0.00 : 60ed71: 74 1b je 60ed8e 0.00 : 60ed73: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 60ed77: 4c 89 ef mov %r13,%rdi 0.00 : 60ed7a: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 60ed7e: e8 5d 2b 00 00 callq 6118e0 0.00 : 60ed83: 84 c0 test %al,%al 0.00 : 60ed85: b8 00 00 00 00 mov $0x0,%eax 0.00 : 60ed8a: 4c 0f 45 e8 cmovne %rax,%r13 : pathkeys_contained_in(outersortkeys, outer_path->pathkeys)) : outersortkeys = NIL; : if (innersortkeys && 0.00 : 60ed8e: 4d 85 e4 test %r12,%r12 0.00 : 60ed91: 74 1b je 60edae 0.00 : 60ed93: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 60ed97: 4c 89 e7 mov %r12,%rdi 0.00 : 60ed9a: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 60ed9e: e8 3d 2b 00 00 callq 6118e0 0.00 : 60eda3: 84 c0 test %al,%al 0.00 : 60eda5: b8 00 00 00 00 mov $0x0,%eax 0.00 : 60edaa: 4c 0f 45 e0 cmovne %rax,%r12 : innersortkeys = NIL; : : /* : * See comments in try_nestloop_path(). : */ : initial_cost_mergejoin(root, &workspace, jointype, mergeclauses, 0.00 : 60edae: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 60edb5: 4c 8b 4d 18 mov 0x18(%rbp),%r9 0.00 : 60edb9: 4c 8d b5 70 ff ff ff lea -0x90(%rbp),%r14 0.00 : 60edc0: 4c 8b 45 10 mov 0x10(%rbp),%r8 0.00 : 60edc4: 48 8b 4d 30 mov 0x30(%rbp),%rcx 0.00 : 60edc8: 8b 95 5c ff ff ff mov -0xa4(%rbp),%edx 0.00 : 60edce: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 60edd5: 4c 89 f6 mov %r14,%rsi 0.00 : 60edd8: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 60eddd: 4c 89 64 24 08 mov %r12,0x8(%rsp) 0.00 : 60ede2: 4c 89 2c 24 mov %r13,(%rsp) 0.00 : 60ede6: e8 55 81 ff ff callq 606f40 : outer_path, inner_path, : outersortkeys, innersortkeys, : sjinfo); : : if (add_path_precheck(joinrel, 0.00 : 60edeb: 48 8b 75 28 mov 0x28(%rbp),%rsi 0.00 : 60edef: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 60edf6: 48 89 da mov %rbx,%rdx 0.00 : 60edf9: f2 0f 10 85 70 ff ff movsd -0x90(%rbp),%xmm0 0.00 : 60ee00: ff 0.00 : 60ee01: f2 0f 10 8d 78 ff ff movsd -0x88(%rbp),%xmm1 0.00 : 60ee08: ff 0.00 : 60ee09: e8 12 2a 02 00 callq 631820 0.00 : 60ee0e: 84 c0 test %al,%al 0.00 : 60ee10: 75 1e jne 60ee30 : innersortkeys)); : } : else : { : /* Waste no memory when we reject a path here */ : bms_free(required_outer); 0.00 : 60ee12: 48 89 df mov %rbx,%rdi 0.00 : 60ee15: e8 96 3f fd ff callq 5e2db0 : } : } /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/joinpath.c:428 100.00 : 60ee1a: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 60ee1e: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 60ee22: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 60ee26: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 60ee2a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 60ee2e: c9 leaveq 0.00 : 60ee2f: c3 retq : : if (add_path_precheck(joinrel, : workspace.startup_cost, workspace.total_cost, : pathkeys, required_outer)) : { : add_path(joinrel, (Path *) 0.00 : 60ee30: 48 8b 45 30 mov 0x30(%rbp),%rax 0.00 : 60ee34: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 60ee3b: 4c 89 f1 mov %r14,%rcx 0.00 : 60ee3e: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 60ee45: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 60ee49: 4c 8b 85 50 ff ff ff mov -0xb0(%rbp),%r8 0.00 : 60ee50: 8b 95 5c ff ff ff mov -0xa4(%rbp),%edx 0.00 : 60ee56: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 60ee5b: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 60ee5f: 4c 89 64 24 30 mov %r12,0x30(%rsp) 0.00 : 60ee64: 4c 89 6c 24 28 mov %r13,0x28(%rsp) 0.00 : 60ee69: 48 89 5c 24 18 mov %rbx,0x18(%rsp) 0.00 : 60ee6e: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 60ee73: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 60ee77: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 60ee7c: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 60ee80: 48 89 04 24 mov %rax,(%rsp) 0.00 : 60ee84: e8 17 13 02 00 callq 6301a0 0.00 : 60ee89: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 60ee90: 48 89 c6 mov %rax,%rsi 0.00 : 60ee93: e8 88 2a 02 00 callq 631920 0.00 : 60ee98: eb 80 jmp 60ee1a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:1257 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000611d20 : : */ : List * : make_inner_pathkeys_for_merge(PlannerInfo *root, : List *mergeclauses, : List *outer_pathkeys) : { /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:1257 100.00 : 611d20: 55 push %rbp 0.00 : 611d21: 48 89 e5 mov %rsp,%rbp 0.00 : 611d24: 41 57 push %r15 0.00 : 611d26: 41 56 push %r14 0.00 : 611d28: 41 55 push %r13 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 611d2a: 45 31 ed xor %r13d,%r13d 0.00 : 611d2d: 41 54 push %r12 0.00 : 611d2f: 53 push %rbx 0.00 : 611d30: 48 83 ec 08 sub $0x8,%rsp 0.00 : 611d34: 48 85 d2 test %rdx,%rdx 0.00 : 611d37: 48 89 7d d0 mov %rdi,-0x30(%rbp) 0.00 : 611d3b: 74 04 je 611d41 0.00 : 611d3d: 4c 8b 6a 08 mov 0x8(%rdx),%r13 0.00 : 611d41: 48 85 f6 test %rsi,%rsi 0.00 : 611d44: 0f 84 90 01 00 00 je 611eda 0.00 : 611d4a: 4c 8b 66 08 mov 0x8(%rsi),%r12 : : lastoeclass = NULL; : opathkey = NULL; : lop = list_head(outer_pathkeys); : : foreach(lc, mergeclauses) 0.00 : 611d4e: 4d 85 e4 test %r12,%r12 0.00 : 611d51: 0f 84 83 01 00 00 je 611eda 0.00 : 611d57: 45 31 ff xor %r15d,%r15d 0.00 : 611d5a: 45 31 f6 xor %r14d,%r14d 0.00 : 611d5d: 31 db xor %ebx,%ebx 0.00 : 611d5f: 90 nop : { : RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); 0.00 : 611d60: 49 8b 0c 24 mov (%r12),%rcx : /* ... with pointers already set */ : Assert(restrictinfo->left_ec != NULL); : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) 0.00 : 611d64: 48 8b b1 80 00 00 00 mov 0x80(%rcx),%rsi 0.00 : 611d6b: 48 8b 46 40 mov 0x40(%rsi),%rax 0.00 : 611d6f: 48 85 c0 test %rax,%rax 0.00 : 611d72: 74 1b je 611d8f 0.00 : 611d74: 0f 1f 40 00 nopl 0x0(%rax) : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; 0.00 : 611d78: 48 89 81 80 00 00 00 mov %rax,0x80(%rcx) : /* ... with pointers already set */ : Assert(restrictinfo->left_ec != NULL); : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) 0.00 : 611d7f: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 611d83: 48 85 c0 test %rax,%rax 0.00 : 611d86: 75 f0 jne 611d78 0.00 : 611d88: 48 8b b1 80 00 00 00 mov 0x80(%rcx),%rsi : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; : while (restrictinfo->right_ec->ec_merged) 0.00 : 611d8f: 48 8b 91 88 00 00 00 mov 0x88(%rcx),%rdx 0.00 : 611d96: 48 8b 42 40 mov 0x40(%rdx),%rax 0.00 : 611d9a: 48 85 c0 test %rax,%rax 0.00 : 611d9d: 74 14 je 611db3 0.00 : 611d9f: 90 nop 0.00 : 611da0: 48 89 c2 mov %rax,%rdx : restrictinfo->right_ec = restrictinfo->right_ec->ec_merged; 0.00 : 611da3: 48 89 81 88 00 00 00 mov %rax,0x88(%rcx) : Assert(restrictinfo->right_ec != NULL); : : /* Chase up to the top as needed */ : while (restrictinfo->left_ec->ec_merged) : restrictinfo->left_ec = restrictinfo->left_ec->ec_merged; : while (restrictinfo->right_ec->ec_merged) 0.00 : 611daa: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 611dae: 48 85 c0 test %rax,%rax 0.00 : 611db1: 75 ed jne 611da0 : : update_mergeclause_eclasses(root, rinfo); : : if (rinfo->outer_is_left) : { : oeclass = rinfo->left_ec; 0.00 : 611db3: 80 b9 a8 00 00 00 00 cmpb $0x0,0xa8(%rcx) 0.00 : 611dba: 48 89 f0 mov %rsi,%rax 0.00 : 611dbd: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 611dc1: 48 0f 45 f2 cmovne %rdx,%rsi : ieclass = rinfo->left_ec; : } : : /* outer eclass should match current or next pathkeys */ : /* we check this carefully for debugging reasons */ : if (oeclass != lastoeclass) 0.00 : 611dc5: 4c 39 f0 cmp %r14,%rax 0.00 : 611dc8: 74 1e je 611de8 : { : if (!lop) 0.00 : 611dca: 4d 85 ed test %r13,%r13 0.00 : 611dcd: 0f 84 b3 00 00 00 je 611e86 : elog(ERROR, "too few pathkeys for mergeclauses"); : opathkey = (PathKey *) lfirst(lop); 0.00 : 611dd3: 49 8b 5d 00 mov 0x0(%r13),%rbx : lop = lnext(lop); 0.00 : 611dd7: 4d 8b 6d 08 mov 0x8(%r13),%r13 : lastoeclass = opathkey->pk_eclass; 0.00 : 611ddb: 4c 8b 73 08 mov 0x8(%rbx),%r14 : if (oeclass != lastoeclass) 0.00 : 611ddf: 4c 39 f0 cmp %r14,%rax 0.00 : 611de2: 0f 85 c8 00 00 00 jne 611eb0 : /* : * Often, we'll have same EC on both sides, in which case the outer : * pathkey is also canonical for the inner side, and we can skip a : * useless search. : */ : if (ieclass == oeclass) 0.00 : 611de8: 48 39 c6 cmp %rax,%rsi 0.00 : 611deb: 48 89 df mov %rbx,%rdi 0.00 : 611dee: 74 17 je 611e07 : pathkey = opathkey; : else : pathkey = make_canonical_pathkey(root, 0.00 : 611df0: 44 0f be 43 18 movsbl 0x18(%rbx),%r8d 0.00 : 611df5: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 611df9: 8b 4b 14 mov 0x14(%rbx),%ecx 0.00 : 611dfc: 8b 53 10 mov 0x10(%rbx),%edx 0.00 : 611dff: e8 1c fe ff ff callq 611c20 0.00 : 611e04: 48 89 c7 mov %rax,%rdi : * pointer comparison is enough to decide whether canonical ECs are the same. : */ : static bool : pathkey_is_redundant(PathKey *new_pathkey, List *pathkeys) : { : EquivalenceClass *new_ec = new_pathkey->pk_eclass; 0.00 : 611e07: 48 8b 4f 08 mov 0x8(%rdi),%rcx : ListCell *lc; : : /* Check for EC containing a constant --- unconditionally redundant */ : if (EC_MUST_BE_REDUNDANT(new_ec)) 0.00 : 611e0b: 80 79 38 00 cmpb $0x0,0x38(%rcx) 0.00 : 611e0f: 74 06 je 611e17 0.00 : 611e11: 80 79 3a 00 cmpb $0x0,0x3a(%rcx) 0.00 : 611e15: 74 2b je 611e42 0.00 : 611e17: 4d 85 ff test %r15,%r15 0.00 : 611e1a: 74 4c je 611e68 0.00 : 611e1c: 49 8b 57 08 mov 0x8(%r15),%rdx : return true; : : /* If same EC already used in list, then redundant */ : foreach(lc, pathkeys) 0.00 : 611e20: 48 85 d2 test %rdx,%rdx 0.00 : 611e23: 75 14 jne 611e39 0.00 : 611e25: eb 41 jmp 611e68 0.00 : 611e27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 611e2e: 00 00 0.00 : 611e30: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 611e34: 48 85 d2 test %rdx,%rdx 0.00 : 611e37: 74 2f je 611e68 : { : PathKey *old_pathkey = (PathKey *) lfirst(lc); : : if (new_ec == old_pathkey->pk_eclass) 0.00 : 611e39: 48 8b 02 mov (%rdx),%rax 0.00 : 611e3c: 48 3b 48 08 cmp 0x8(%rax),%rcx 0.00 : 611e40: 75 ee jne 611e30 : : lastoeclass = NULL; : opathkey = NULL; : lop = list_head(outer_pathkeys); : : foreach(lc, mergeclauses) 0.00 : 611e42: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 611e47: 4d 85 e4 test %r12,%r12 0.00 : 611e4a: 0f 85 10 ff ff ff jne 611d60 : if (!pathkey_is_redundant(pathkey, pathkeys)) : pathkeys = lappend(pathkeys, pathkey); : } : : return pathkeys; : } 0.00 : 611e50: 48 83 c4 08 add $0x8,%rsp 0.00 : 611e54: 4c 89 f8 mov %r15,%rax 0.00 : 611e57: 5b pop %rbx 0.00 : 611e58: 41 5c pop %r12 0.00 : 611e5a: 41 5d pop %r13 0.00 : 611e5c: 41 5e pop %r14 0.00 : 611e5e: 41 5f pop %r15 0.00 : 611e60: c9 leaveq 0.00 : 611e61: c3 retq 0.00 : 611e62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * Don't generate redundant pathkeys (can happen if multiple : * mergeclauses refer to same EC). : */ : if (!pathkey_is_redundant(pathkey, pathkeys)) : pathkeys = lappend(pathkeys, pathkey); 0.00 : 611e68: 48 89 fe mov %rdi,%rsi 0.00 : 611e6b: 4c 89 ff mov %r15,%rdi 0.00 : 611e6e: e8 0d 00 fd ff callq 5e1e80 : : lastoeclass = NULL; : opathkey = NULL; : lop = list_head(outer_pathkeys); : : foreach(lc, mergeclauses) 0.00 : 611e73: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : /* : * Don't generate redundant pathkeys (can happen if multiple : * mergeclauses refer to same EC). : */ : if (!pathkey_is_redundant(pathkey, pathkeys)) : pathkeys = lappend(pathkeys, pathkey); 0.00 : 611e78: 49 89 c7 mov %rax,%r15 : : lastoeclass = NULL; : opathkey = NULL; : lop = list_head(outer_pathkeys); : : foreach(lc, mergeclauses) 0.00 : 611e7b: 4d 85 e4 test %r12,%r12 0.00 : 611e7e: 0f 85 dc fe ff ff jne 611d60 0.00 : 611e84: eb ca jmp 611e50 : /* outer eclass should match current or next pathkeys */ : /* we check this carefully for debugging reasons */ : if (oeclass != lastoeclass) : { : if (!lop) : elog(ERROR, "too few pathkeys for mergeclauses"); 0.00 : 611e86: ba 50 ab 89 00 mov $0x89ab50,%edx 0.00 : 611e8b: be 0d 05 00 00 mov $0x50d,%esi 0.00 : 611e90: bf 46 aa 89 00 mov $0x89aa46,%edi 0.00 : 611e95: e8 86 95 16 00 callq 77b420 0.00 : 611e9a: be 58 aa 89 00 mov $0x89aa58,%esi 0.00 : 611e9f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 611ea4: 31 c0 xor %eax,%eax 0.00 : 611ea6: e8 85 93 16 00 callq 77b230 0.00 : 611eab: e8 20 76 e5 ff callq 4694d0 : opathkey = (PathKey *) lfirst(lop); : lop = lnext(lop); : lastoeclass = opathkey->pk_eclass; : if (oeclass != lastoeclass) : elog(ERROR, "outer pathkeys do not match mergeclause"); 0.00 : 611eb0: ba 50 ab 89 00 mov $0x89ab50,%edx 0.00 : 611eb5: be 12 05 00 00 mov $0x512,%esi 0.00 : 611eba: bf 46 aa 89 00 mov $0x89aa46,%edi 0.00 : 611ebf: e8 5c 95 16 00 callq 77b420 0.00 : 611ec4: be 80 aa 89 00 mov $0x89aa80,%esi 0.00 : 611ec9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 611ece: 31 c0 xor %eax,%eax 0.00 : 611ed0: e8 5b 93 16 00 callq 77b230 0.00 : 611ed5: e8 f6 75 e5 ff callq 4694d0 : : lastoeclass = NULL; : opathkey = NULL; : lop = list_head(outer_pathkeys); : : foreach(lc, mergeclauses) 0.00 : 611eda: 45 31 ff xor %r15d,%r15d 0.00 : 611edd: e9 6e ff ff ff jmpq 611e50 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:2251 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000645320 : : * Note: we pass am_syslogger as a boolean because we don't want to set : * the global variable yet when this is called. : */ : void : ClosePostmasterPorts(bool am_syslogger) : { 0.00 : 645320: 55 push %rbp 0.00 : 645321: 48 89 e5 mov %rsp,%rbp 0.00 : 645324: 41 54 push %r12 0.00 : 645326: 41 89 fc mov %edi,%r12d : /* : * Close the write end of postmaster death watch pipe. It's important to : * do this as early as possible, so that if postmaster dies, others won't : * think that it's still running because we're holding the pipe open. : */ : if (close(postmaster_alive_fds[POSTMASTER_FD_OWN])) 0.00 : 645329: 8b 3d fd 32 52 00 mov 0x5232fd(%rip),%edi # b6862c : * Note: we pass am_syslogger as a boolean because we don't want to set : * the global variable yet when this is called. : */ : void : ClosePostmasterPorts(bool am_syslogger) : { 0.00 : 64532f: 53 push %rbx : /* : * Close the write end of postmaster death watch pipe. It's important to : * do this as early as possible, so that if postmaster dies, others won't : * think that it's still running because we're holding the pipe open. : */ : if (close(postmaster_alive_fds[POSTMASTER_FD_OWN])) 0.00 : 645330: e8 4b 41 e2 ff callq 469480 0.00 : 645335: 85 c0 test %eax,%eax 0.00 : 645337: 75 59 jne 645392 : ereport(FATAL, : (errcode_for_file_access(), : errmsg_internal("could not close postmaster death monitoring pipe in child process: %m"))); : postmaster_alive_fds[POSTMASTER_FD_OWN] = -1; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:2251 100.00 : 645339: c7 05 e9 32 52 00 ff movl $0xffffffff,0x5232e9(%rip) # b6862c 0.00 : 645340: ff ff ff 0.00 : 645343: bb a0 bf b7 00 mov $0xb7bfa0,%ebx 0.00 : 645348: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 64534f: 00 : #endif : : /* Close the listen sockets */ : for (i = 0; i < MAXLISTEN; i++) : { : if (ListenSocket[i] != PGINVALID_SOCKET) 0.00 : 645350: 8b 3b mov (%rbx),%edi 0.00 : 645352: 83 ff ff cmp $0xffffffff,%edi 0.00 : 645355: 74 0b je 645362 : { : StreamClose(ListenSocket[i]); 0.00 : 645357: e8 b4 6f f9 ff callq 5dc310 : ListenSocket[i] = PGINVALID_SOCKET; 0.00 : 64535c: c7 03 ff ff ff ff movl $0xffffffff,(%rbx) 0.00 : 645362: 48 83 c3 04 add $0x4,%rbx : errmsg_internal("could not close postmaster death monitoring pipe in child process: %m"))); : postmaster_alive_fds[POSTMASTER_FD_OWN] = -1; : #endif : : /* Close the listen sockets */ : for (i = 0; i < MAXLISTEN; i++) 0.00 : 645366: 48 81 fb a0 c0 b7 00 cmp $0xb7c0a0,%rbx 0.00 : 64536d: 75 e1 jne 645350 : ListenSocket[i] = PGINVALID_SOCKET; : } : } : : /* If using syslogger, close the read side of the pipe */ : if (!am_syslogger) 0.00 : 64536f: 45 84 e4 test %r12b,%r12b 0.00 : 645372: 75 19 jne 64538d : { : #ifndef WIN32 : if (syslogPipe[0] >= 0) 0.00 : 645374: 8b 3d d6 32 52 00 mov 0x5232d6(%rip),%edi # b68650 0.00 : 64537a: 85 ff test %edi,%edi 0.00 : 64537c: 78 05 js 645383 : close(syslogPipe[0]); 0.00 : 64537e: e8 fd 40 e2 ff callq 469480 : syslogPipe[0] = -1; 0.00 : 645383: c7 05 c3 32 52 00 ff movl $0xffffffff,0x5232c3(%rip) # b68650 0.00 : 64538a: ff ff ff : #ifdef USE_BONJOUR : /* If using Bonjour, close the connection to the mDNS daemon */ : if (bonjour_sdref) : close(DNSServiceRefSockFD(bonjour_sdref)); : #endif : } 0.00 : 64538d: 5b pop %rbx 0.00 : 64538e: 41 5c pop %r12 0.00 : 645390: c9 leaveq 0.00 : 645391: c3 retq : * Close the write end of postmaster death watch pipe. It's important to : * do this as early as possible, so that if postmaster dies, others won't : * think that it's still running because we're holding the pipe open. : */ : if (close(postmaster_alive_fds[POSTMASTER_FD_OWN])) : ereport(FATAL, 0.00 : 645392: 45 31 c0 xor %r8d,%r8d 0.00 : 645395: b9 f0 0e 8a 00 mov $0x8a0ef0,%ecx 0.00 : 64539a: ba ca 08 00 00 mov $0x8ca,%edx 0.00 : 64539f: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6453a4: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6453a9: e8 12 57 13 00 callq 77aac0 0.00 : 6453ae: 84 c0 test %al,%al 0.00 : 6453b0: 75 05 jne 6453b7 0.00 : 6453b2: e8 19 41 e2 ff callq 4694d0 0.00 : 6453b7: bf 98 fd 89 00 mov $0x89fd98,%edi 0.00 : 6453bc: 31 c0 xor %eax,%eax 0.00 : 6453be: e8 4d 55 13 00 callq 77a910 0.00 : 6453c3: 89 c3 mov %eax,%ebx 0.00 : 6453c5: e8 26 77 13 00 callq 77caf0 0.00 : 6453ca: 89 de mov %ebx,%esi 0.00 : 6453cc: 89 c7 mov %eax,%edi 0.00 : 6453ce: 31 c0 xor %eax,%eax 0.00 : 6453d0: e8 0b 52 13 00 callq 77a5e0 0.00 : 6453d5: eb db jmp 6453b2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:1881 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000646160 : : * send anything to the client, which would typically be appropriate : * if we detect a communications failure.) : */ : static int : ProcessStartupPacket(Port *port, bool SSLdone) : { 0.00 : 646160: 55 push %rbp 0.00 : 646161: 48 89 e5 mov %rsp,%rbp 0.00 : 646164: 41 57 push %r15 0.00 : 646166: 41 56 push %r14 0.00 : 646168: 41 55 push %r13 0.00 : 64616a: 41 89 f5 mov %esi,%r13d : int32 len; : void *buf; : ProtocolVersion proto; : MemoryContext oldcontext; : : if (pq_getbytes((char *) &len, 4) == EOF) 0.00 : 64616d: be 04 00 00 00 mov $0x4,%esi : * send anything to the client, which would typically be appropriate : * if we detect a communications failure.) : */ : static int : ProcessStartupPacket(Port *port, bool SSLdone) : { 0.00 : 646172: 41 54 push %r12 0.00 : 646174: 53 push %rbx 0.00 : 646175: 48 83 ec 28 sub $0x28,%rsp 0.00 : 646179: 48 89 7d b8 mov %rdi,-0x48(%rbp) : int32 len; : void *buf; : ProtocolVersion proto; : MemoryContext oldcontext; : : if (pq_getbytes((char *) &len, 4) == EOF) 0.00 : 64617d: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 646181: e8 ea 5b f9 ff callq 5dbd70 0.00 : 646186: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 646189: 41 89 c4 mov %eax,%r12d 0.00 : 64618c: 0f 84 26 07 00 00 je 6468b8 : (errcode(ERRCODE_PROTOCOL_VIOLATION), : errmsg("incomplete startup packet"))); : return STATUS_ERROR; : } : : len = ntohl(len); 0.00 : 646192: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 646195: 0f c8 bswap %eax : len -= 4; 0.00 : 646197: 8d 50 fc lea -0x4(%rax),%edx : : if (len < (int32) sizeof(ProtocolVersion) || 0.00 : 64619a: 83 e8 08 sub $0x8,%eax 0.00 : 64619d: 3d 0c 27 00 00 cmp $0x270c,%eax : errmsg("incomplete startup packet"))); : return STATUS_ERROR; : } : : len = ntohl(len); : len -= 4; 0.00 : 6461a2: 89 55 d0 mov %edx,-0x30(%rbp) : : if (len < (int32) sizeof(ProtocolVersion) || 0.00 : 6461a5: 0f 87 a1 07 00 00 ja 64694c : * Allocate at least the size of an old-style startup packet, plus one : * extra byte, and make sure all are zeroes. This ensures we will have : * null termination of all strings, in both fixed- and variable-length : * packet layouts. : */ : if (len <= (int32) sizeof(StartupPacket)) 0.00 : 6461ab: 81 fa 24 01 00 00 cmp $0x124,%edx 0.00 : 6461b1: 0f 8e 61 01 00 00 jle 646318 : buf = palloc0(sizeof(StartupPacket) + 1); : else : buf = palloc0(len + 1); 0.00 : 6461b7: 8d 7a 01 lea 0x1(%rdx),%edi 0.00 : 6461ba: 48 63 ff movslq %edi,%rdi 0.00 : 6461bd: e8 ae 2d 15 00 callq 798f70 0.00 : 6461c2: 49 89 c7 mov %rax,%r15 : : if (pq_getbytes(buf, len) == EOF) 0.00 : 6461c5: 48 63 75 d0 movslq -0x30(%rbp),%rsi 0.00 : 6461c9: 4c 89 ff mov %r15,%rdi 0.00 : 6461cc: e8 9f 5b f9 ff callq 5dbd70 0.00 : 6461d1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 6461d4: 41 89 c4 mov %eax,%r12d 0.00 : 6461d7: 0f 84 c0 07 00 00 je 64699d : : /* : * The first field is either a protocol version number or a special : * request code. : */ : port->proto = proto = ntohl(*((ProtocolVersion *) buf)); 0.00 : 6461dd: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6461e1: 41 8b 1f mov (%r15),%ebx 0.00 : 6461e4: 0f cb bswap %ebx : : if (proto == CANCEL_REQUEST_CODE) 0.00 : 6461e6: 81 fb 2e 16 d2 04 cmp $0x4d2162e,%ebx : : /* : * The first field is either a protocol version number or a special : * request code. : */ : port->proto = proto = ntohl(*((ProtocolVersion *) buf)); 0.00 : 6461ec: 89 58 08 mov %ebx,0x8(%rax) : : if (proto == CANCEL_REQUEST_CODE) 0.00 : 6461ef: 0f 84 ba 07 00 00 je 6469af : processCancelRequest(port, buf); : /* Not really an error, but we don't want to proceed further */ : return STATUS_ERROR; : } : : if (proto == NEGOTIATE_SSL_CODE && !SSLdone) 0.00 : 6461f5: 81 fb 2f 16 d2 04 cmp $0x4d2162f,%ebx 0.00 : 6461fb: 0f 84 9f 01 00 00 je 6463a0 : */ : FrontendProtocol = proto; : : /* Check we can handle the protocol the frontend is using. */ : : if (PG_PROTOCOL_MAJOR(proto) < PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST) || 0.00 : 646201: 41 89 dc mov %ebx,%r12d : : /* : * Set FrontendProtocol now so that ereport() knows what format to send if : * we fail during startup. : */ : FrontendProtocol = proto; 0.00 : 646204: 89 1d d6 9a 57 00 mov %ebx,0x579ad6(%rip) # bbfce0 : : /* Check we can handle the protocol the frontend is using. */ : : if (PG_PROTOCOL_MAJOR(proto) < PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST) || 0.00 : 64620a: 41 c1 ec 10 shr $0x10,%r12d 0.00 : 64620e: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 646213: 83 f8 02 cmp $0x2,%eax 0.00 : 646216: 0f 87 91 04 00 00 ja 6466ad 0.00 : 64621c: 41 83 fc 03 cmp $0x3,%r12d 0.00 : 646220: 0f 84 82 04 00 00 je 6466a8 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 646226: 48 8b 15 33 46 57 00 mov 0x574633(%rip),%rdx # bba860 : : CurrentMemoryContext = context; 0.00 : 64622d: 48 8b 05 34 46 57 00 mov 0x574634(%rip),%rax # bba868 : * not worry about leaking this storage on failure, since we aren't in the : * postmaster process anymore. : */ : oldcontext = MemoryContextSwitchTo(TopMemoryContext); : : if (PG_PROTOCOL_MAJOR(proto) >= 3) 0.00 : 646234: 41 83 fc 02 cmp $0x2,%r12d : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 646238: 48 89 55 c0 mov %rdx,-0x40(%rbp) : : CurrentMemoryContext = context; 0.00 : 64623c: 48 89 05 1d 46 57 00 mov %rax,0x57461d(%rip) # bba860 0.00 : 646243: 0f 86 4f 03 00 00 jbe 646598 : /* : * Scan packet body for name/option pairs. We can assume any string : * beginning within the packet body is null-terminated, thanks to : * zeroing extra byte above. : */ : port->guc_options = NIL; 0.00 : 646249: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 64624d: 48 c7 80 60 01 00 00 movq $0x0,0x160(%rax) 0.00 : 646254: 00 00 00 00 : : while (offset < len) 0.00 : 646258: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 64625c: 41 83 fd 04 cmp $0x4,%r13d 0.00 : 646260: 0f 8e b4 01 00 00 jle 64641a : { : char *nameptr = ((char *) buf) + offset; : int32 valoffset; : char *valptr; : : if (*nameptr == '\0') 0.00 : 646266: 41 80 7f 04 00 cmpb $0x0,0x4(%r15) : */ : port->guc_options = NIL; : : while (offset < len) : { : char *nameptr = ((char *) buf) + offset; 0.00 : 64626b: 49 8d 5f 04 lea 0x4(%r15),%rbx : int32 valoffset; : char *valptr; : : if (*nameptr == '\0') 0.00 : 64626f: 41 bc 04 00 00 00 mov $0x4,%r12d 0.00 : 646275: 75 46 jne 6462bd 0.00 : 646277: e9 9e 01 00 00 jmpq 64641a 0.00 : 64627c: 0f 1f 40 00 nopl 0x0(%rax) : if (valoffset >= len) : break; /* missing value, will complain below */ : valptr = ((char *) buf) + valoffset; : : if (strcmp(nameptr, "database") == 0) : port->database_name = pstrdup(valptr); 0.00 : 646280: 4c 89 e7 mov %r12,%rdi 0.00 : 646283: e8 c8 2c 15 00 callq 798f50 0.00 : 646288: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64628c: 48 89 82 48 01 00 00 mov %rax,0x148(%rdx) 0.00 : 646293: 44 8b 6d d0 mov -0x30(%rbp),%r13d : port->guc_options = lappend(port->guc_options, : pstrdup(nameptr)); : port->guc_options = lappend(port->guc_options, : pstrdup(valptr)); : } : offset = valoffset + strlen(valptr) + 1; 0.00 : 646297: 4c 89 e7 mov %r12,%rdi 0.00 : 64629a: e8 b1 35 e2 ff callq 469850 0.00 : 64629f: 45 8d 64 06 01 lea 0x1(%r14,%rax,1),%r12d : * beginning within the packet body is null-terminated, thanks to : * zeroing extra byte above. : */ : port->guc_options = NIL; : : while (offset < len) 0.00 : 6462a4: 45 39 e5 cmp %r12d,%r13d 0.00 : 6462a7: 0f 8e 73 01 00 00 jle 646420 : { : char *nameptr = ((char *) buf) + offset; 0.00 : 6462ad: 49 63 c4 movslq %r12d,%rax 0.00 : 6462b0: 49 8d 1c 07 lea (%r15,%rax,1),%rbx : int32 valoffset; : char *valptr; : : if (*nameptr == '\0') 0.00 : 6462b4: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 6462b7: 0f 84 63 01 00 00 je 646420 : break; /* found packet terminator */ : valoffset = offset + strlen(nameptr) + 1; 0.00 : 6462bd: 48 89 df mov %rbx,%rdi 0.00 : 6462c0: e8 8b 35 e2 ff callq 469850 0.00 : 6462c5: 45 8d 74 04 01 lea 0x1(%r12,%rax,1),%r14d : if (valoffset >= len) 0.00 : 6462ca: 45 39 ee cmp %r13d,%r14d 0.00 : 6462cd: 0f 8d 4d 01 00 00 jge 646420 : break; /* missing value, will complain below */ : valptr = ((char *) buf) + valoffset; : : if (strcmp(nameptr, "database") == 0) 0.00 : 6462d3: 48 89 de mov %rbx,%rsi 0.00 : 6462d6: bf 4f d8 8c 00 mov $0x8cd84f,%edi 0.00 : 6462db: b9 09 00 00 00 mov $0x9,%ecx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:1881 100.00 : 6462e0: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) : if (*nameptr == '\0') : break; /* found packet terminator */ : valoffset = offset + strlen(nameptr) + 1; : if (valoffset >= len) : break; /* missing value, will complain below */ : valptr = ((char *) buf) + valoffset; 0.00 : 6462e2: 49 63 c6 movslq %r14d,%rax 0.00 : 6462e5: 4d 8d 24 07 lea (%r15,%rax,1),%r12 : : if (strcmp(nameptr, "database") == 0) 0.00 : 6462e9: 74 95 je 646280 : port->database_name = pstrdup(valptr); : else if (strcmp(nameptr, "user") == 0) 0.00 : 6462eb: 48 89 de mov %rbx,%rsi 0.00 : 6462ee: bf b1 a5 8d 00 mov $0x8da5b1,%edi 0.00 : 6462f3: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 6462f8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 6462fa: 75 34 jne 646330 : port->user_name = pstrdup(valptr); 0.00 : 6462fc: 4c 89 e7 mov %r12,%rdi 0.00 : 6462ff: e8 4c 2c 15 00 callq 798f50 0.00 : 646304: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646308: 48 89 82 50 01 00 00 mov %rax,0x150(%rdx) 0.00 : 64630f: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 646313: eb 82 jmp 646297 0.00 : 646315: 0f 1f 00 nopl (%rax) : * extra byte, and make sure all are zeroes. This ensures we will have : * null termination of all strings, in both fixed- and variable-length : * packet layouts. : */ : if (len <= (int32) sizeof(StartupPacket)) : buf = palloc0(sizeof(StartupPacket) + 1); 0.00 : 646318: bf 25 01 00 00 mov $0x125,%edi 0.00 : 64631d: e8 4e 2c 15 00 callq 798f70 0.00 : 646322: 49 89 c7 mov %rax,%r15 0.00 : 646325: e9 9b fe ff ff jmpq 6461c5 0.00 : 64632a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (strcmp(nameptr, "database") == 0) : port->database_name = pstrdup(valptr); : else if (strcmp(nameptr, "user") == 0) : port->user_name = pstrdup(valptr); : else if (strcmp(nameptr, "options") == 0) 0.00 : 646330: 48 89 de mov %rbx,%rsi 0.00 : 646333: bf 7c a5 8e 00 mov $0x8ea57c,%edi 0.00 : 646338: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 64633d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 64633f: 75 1f jne 646360 : port->cmdline_options = pstrdup(valptr); 0.00 : 646341: 4c 89 e7 mov %r12,%rdi 0.00 : 646344: e8 07 2c 15 00 callq 798f50 0.00 : 646349: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64634d: 48 89 82 58 01 00 00 mov %rax,0x158(%rdx) 0.00 : 646354: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 646358: e9 3a ff ff ff jmpq 646297 0.00 : 64635d: 0f 1f 00 nopl (%rax) : else if (strcmp(nameptr, "replication") == 0) 0.00 : 646360: 48 89 de mov %rbx,%rsi 0.00 : 646363: bf 61 94 7c 00 mov $0x7c9461,%edi 0.00 : 646368: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 64636d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 64636f: 0f 85 93 01 00 00 jne 646508 : * parameter is a hybrid beast which allows the value to be : * either boolean or the string 'database'. The latter : * connects to a specific database which is e.g. required for : * logical decoding while. : */ : if (strcmp(valptr, "database") == 0) 0.00 : 646375: 4c 89 e6 mov %r12,%rsi 0.00 : 646378: bf 4f d8 8c 00 mov $0x8cd84f,%edi 0.00 : 64637d: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 646382: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 646384: 0f 85 a6 02 00 00 jne 646630 : { : am_walsender = true; 0.00 : 64638a: c6 05 2f 6a 53 00 01 movb $0x1,0x536a2f(%rip) # b7cdc0 : am_db_walsender = true; 0.00 : 646391: c6 05 2a 6a 53 00 01 movb $0x1,0x536a2a(%rip) # b7cdc2 0.00 : 646398: e9 fa fe ff ff jmpq 646297 0.00 : 64639d: 0f 1f 00 nopl (%rax) : processCancelRequest(port, buf); : /* Not really an error, but we don't want to proceed further */ : return STATUS_ERROR; : } : : if (proto == NEGOTIATE_SSL_CODE && !SSLdone) 0.00 : 6463a0: 45 84 ed test %r13b,%r13b 0.00 : 6463a3: 0f 85 58 fe ff ff jne 646201 0.00 : 6463a9: 48 8d 5d d7 lea -0x29(%rbp),%rbx : if (!EnableSSL || IS_AF_UNIX(port->laddr.addr.ss_family)) : SSLok = 'N'; : else : SSLok = 'S'; /* Support for SSL */ : #else : SSLok = 'N'; /* No support for SSL */ 0.00 : 6463ad: c6 45 d7 4e movb $0x4e,-0x29(%rbp) 0.00 : 6463b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif : : retry1: : if (send(port->sock, &SSLok, 1, 0) != 1) 0.00 : 6463b8: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6463bc: 31 c9 xor %ecx,%ecx 0.00 : 6463be: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6463c3: 48 89 de mov %rbx,%rsi 0.00 : 6463c6: 8b 38 mov (%rax),%edi 0.00 : 6463c8: e8 83 39 e2 ff callq 469d50 0.00 : 6463cd: 48 83 e8 01 sub $0x1,%rax 0.00 : 6463d1: 0f 84 29 03 00 00 je 646700 : { : if (errno == EINTR) 0.00 : 6463d7: e8 e4 38 e2 ff callq 469cc0 <__errno_location@plt> 0.00 : 6463dc: 83 38 04 cmpl $0x4,(%rax) 0.00 : 6463df: 90 nop 0.00 : 6463e0: 74 d6 je 6463b8 : goto retry1; /* if interrupted, just retry */ : ereport(COMMERROR, 0.00 : 6463e2: 45 31 c0 xor %r8d,%r8d 0.00 : 6463e5: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6463ea: ba 14 07 00 00 mov $0x714,%edx 0.00 : 6463ef: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6463f4: bf 10 00 00 00 mov $0x10,%edi 0.00 : 6463f9: e8 c2 46 13 00 callq 77aac0 0.00 : 6463fe: 84 c0 test %al,%al 0.00 : 646400: 0f 85 27 06 00 00 jne 646a2d : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 646406: b8 ff ff ff ff mov $0xffffffff,%eax : case CAC_OK: : break; : } : : return STATUS_OK; : } 0.00 : 64640b: 48 83 c4 28 add $0x28,%rsp 0.00 : 64640f: 5b pop %rbx 0.00 : 646410: 41 5c pop %r12 0.00 : 646412: 41 5d pop %r13 0.00 : 646414: 41 5e pop %r14 0.00 : 646416: 41 5f pop %r15 0.00 : 646418: c9 leaveq 0.00 : 646419: c3 retq : * beginning within the packet body is null-terminated, thanks to : * zeroing extra byte above. : */ : port->guc_options = NIL; : : while (offset < len) 0.00 : 64641a: 41 bc 04 00 00 00 mov $0x4,%r12d : : /* : * If we didn't find a packet terminator exactly at the end of the : * given packet length, complain. : */ : if (offset != len - 1) 0.00 : 646420: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 646424: 44 39 e0 cmp %r12d,%eax 0.00 : 646427: 0f 85 4e 06 00 00 jne 646a7b : port->cmdline_options[sizeof(packet->options)] = '\0'; : port->guc_options = NIL; : } : : /* Check a user name was given. */ : if (port->user_name == NULL || port->user_name[0] == '\0') 0.00 : 64642d: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 646431: 48 8b b8 50 01 00 00 mov 0x150(%rax),%rdi 0.00 : 646438: 48 85 ff test %rdi,%rdi 0.00 : 64643b: 0f 84 27 01 00 00 je 646568 0.00 : 646441: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 646444: 0f 84 1e 01 00 00 je 646568 : ereport(FATAL, : (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), : errmsg("no PostgreSQL user name specified in startup packet"))); : : /* The database defaults to the user name. */ : if (port->database_name == NULL || port->database_name[0] == '\0') 0.00 : 64644a: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64644e: 48 8b 82 48 01 00 00 mov 0x148(%rdx),%rax 0.00 : 646455: 48 85 c0 test %rax,%rax 0.00 : 646458: 74 05 je 64645f 0.00 : 64645a: 80 38 00 cmpb $0x0,(%rax) 0.00 : 64645d: 75 10 jne 64646f : port->database_name = pstrdup(port->user_name); 0.00 : 64645f: e8 ec 2a 15 00 callq 798f50 0.00 : 646464: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646468: 48 89 82 48 01 00 00 mov %rax,0x148(%rdx) : : if (Db_user_namespace) 0.00 : 64646f: 80 3d db 5a 53 00 00 cmpb $0x0,0x535adb(%rip) # b7bf51 0.00 : 646476: 0f 85 44 03 00 00 jne 6467c0 : : /* : * Truncate given database and user names to length of a Postgres name. : * This avoids lookup failures when overlength names are given. : */ : if (strlen(port->database_name) >= NAMEDATALEN) 0.00 : 64647c: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 646480: 48 8b 98 48 01 00 00 mov 0x148(%rax),%rbx 0.00 : 646487: 48 89 df mov %rbx,%rdi 0.00 : 64648a: e8 c1 33 e2 ff callq 469850 0.00 : 64648f: 48 83 f8 3f cmp $0x3f,%rax 0.00 : 646493: 76 04 jbe 646499 : port->database_name[NAMEDATALEN - 1] = '\0'; 0.00 : 646495: c6 43 3f 00 movb $0x0,0x3f(%rbx) : if (strlen(port->user_name) >= NAMEDATALEN) 0.00 : 646499: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64649d: 48 8b 9a 50 01 00 00 mov 0x150(%rdx),%rbx 0.00 : 6464a4: 48 89 df mov %rbx,%rdi 0.00 : 6464a7: e8 a4 33 e2 ff callq 469850 0.00 : 6464ac: 48 83 f8 3f cmp $0x3f,%rax 0.00 : 6464b0: 76 04 jbe 6464b6 : port->user_name[NAMEDATALEN - 1] = '\0'; 0.00 : 6464b2: c6 43 3f 00 movb $0x0,0x3f(%rbx) : * replication need to connect to a specific database. We allow streaming : * replication commands to be issued even if connected to a database as it : * can make sense to first make a basebackup and then stream changes : * starting from that. : */ : if (am_walsender && !am_db_walsender) 0.00 : 6464b6: 80 3d 03 69 53 00 00 cmpb $0x0,0x536903(%rip) # b7cdc0 0.00 : 6464bd: 74 0d je 6464cc 0.00 : 6464bf: 80 3d fc 68 53 00 00 cmpb $0x0,0x5368fc(%rip) # b7cdc2 0.00 : 6464c6: 0f 84 54 03 00 00 je 646820 0.00 : 6464cc: 48 8b 45 c0 mov -0x40(%rbp),%rax : /* : * If we're going to reject the connection due to database state, say so : * now instead of wasting cycles on an authentication exchange. (This also : * allows a pg_ping utility to be written.) : */ : switch (port->canAcceptConnections) 0.00 : 6464d0: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 6464d4: 48 89 05 85 43 57 00 mov %rax,0x574385(%rip) # bba860 0.00 : 6464db: 8b 82 40 01 00 00 mov 0x140(%rdx),%eax 0.00 : 6464e1: 83 f8 02 cmp $0x2,%eax 0.00 : 6464e4: 0f 84 26 04 00 00 je 646910 0.00 : 6464ea: 0f 87 50 02 00 00 ja 646740 0.00 : 6464f0: 83 e8 01 sub $0x1,%eax 0.00 : 6464f3: 0f 84 76 03 00 00 je 64686f 0.00 : 6464f9: 31 c0 xor %eax,%eax 0.00 : 6464fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 646500: e9 06 ff ff ff jmpq 64640b 0.00 : 646505: 0f 1f 00 nopl (%rax) : errhint("Valid values are: false, 0, true, 1, database."))); : } : else : { : /* Assume it's a generic GUC option */ : port->guc_options = lappend(port->guc_options, 0.00 : 646508: 48 89 df mov %rbx,%rdi 0.00 : 64650b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 646510: e8 3b 2a 15 00 callq 798f50 0.00 : 646515: 48 89 c6 mov %rax,%rsi 0.00 : 646518: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 64651c: 48 8b b8 60 01 00 00 mov 0x160(%rax),%rdi 0.00 : 646523: e8 58 b9 f9 ff callq 5e1e80 0.00 : 646528: 48 8b 55 b8 mov -0x48(%rbp),%rdx : pstrdup(nameptr)); : port->guc_options = lappend(port->guc_options, 0.00 : 64652c: 4c 89 e7 mov %r12,%rdi : errhint("Valid values are: false, 0, true, 1, database."))); : } : else : { : /* Assume it's a generic GUC option */ : port->guc_options = lappend(port->guc_options, 0.00 : 64652f: 48 89 82 60 01 00 00 mov %rax,0x160(%rdx) : pstrdup(nameptr)); : port->guc_options = lappend(port->guc_options, 0.00 : 646536: e8 15 2a 15 00 callq 798f50 0.00 : 64653b: 48 89 c6 mov %rax,%rsi 0.00 : 64653e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 646542: 48 8b b8 60 01 00 00 mov 0x160(%rax),%rdi 0.00 : 646549: e8 32 b9 f9 ff callq 5e1e80 0.00 : 64654e: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646552: 48 89 82 60 01 00 00 mov %rax,0x160(%rdx) 0.00 : 646559: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 64655d: e9 35 fd ff ff jmpq 646297 0.00 : 646562: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : port->guc_options = NIL; : } : : /* Check a user name was given. */ : if (port->user_name == NULL || port->user_name[0] == '\0') : ereport(FATAL, 0.00 : 646568: 45 31 c0 xor %r8d,%r8d 0.00 : 64656b: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646570: ba a1 07 00 00 mov $0x7a1,%edx 0.00 : 646575: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 64657a: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64657f: e8 3c 45 13 00 callq 77aac0 0.00 : 646584: 84 c0 test %al,%al 0.00 : 646586: 0f 85 04 02 00 00 jne 646790 : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 64658c: e8 3f 2f e2 ff callq 4694d0 0.00 : 646591: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * short packet has zeros silently added. We have to be prepared to : * truncate the pstrdup result for oversize fields, though. : */ : StartupPacket *packet = (StartupPacket *) buf; : : port->database_name = pstrdup(packet->database); 0.00 : 646598: 49 8d 7f 04 lea 0x4(%r15),%rdi 0.00 : 64659c: e8 af 29 15 00 callq 798f50 0.00 : 6465a1: 48 89 c3 mov %rax,%rbx 0.00 : 6465a4: 48 8b 45 b8 mov -0x48(%rbp),%rax : if (strlen(port->database_name) > sizeof(packet->database)) 0.00 : 6465a8: 48 89 df mov %rbx,%rdi : * short packet has zeros silently added. We have to be prepared to : * truncate the pstrdup result for oversize fields, though. : */ : StartupPacket *packet = (StartupPacket *) buf; : : port->database_name = pstrdup(packet->database); 0.00 : 6465ab: 48 89 98 48 01 00 00 mov %rbx,0x148(%rax) : if (strlen(port->database_name) > sizeof(packet->database)) 0.00 : 6465b2: e8 99 32 e2 ff callq 469850 0.00 : 6465b7: 48 83 f8 40 cmp $0x40,%rax 0.00 : 6465bb: 76 04 jbe 6465c1 : port->database_name[sizeof(packet->database)] = '\0'; 0.00 : 6465bd: c6 43 40 00 movb $0x0,0x40(%rbx) : port->user_name = pstrdup(packet->user); 0.00 : 6465c1: 49 8d 7f 44 lea 0x44(%r15),%rdi 0.00 : 6465c5: e8 86 29 15 00 callq 798f50 0.00 : 6465ca: 48 8b 55 b8 mov -0x48(%rbp),%rdx : if (strlen(port->user_name) > sizeof(packet->user)) 0.00 : 6465ce: 48 89 c7 mov %rax,%rdi : StartupPacket *packet = (StartupPacket *) buf; : : port->database_name = pstrdup(packet->database); : if (strlen(port->database_name) > sizeof(packet->database)) : port->database_name[sizeof(packet->database)] = '\0'; : port->user_name = pstrdup(packet->user); 0.00 : 6465d1: 48 89 c3 mov %rax,%rbx 0.00 : 6465d4: 48 89 82 50 01 00 00 mov %rax,0x150(%rdx) : if (strlen(port->user_name) > sizeof(packet->user)) 0.00 : 6465db: e8 70 32 e2 ff callq 469850 0.00 : 6465e0: 48 83 f8 20 cmp $0x20,%rax 0.00 : 6465e4: 76 04 jbe 6465ea : port->user_name[sizeof(packet->user)] = '\0'; 0.00 : 6465e6: c6 43 20 00 movb $0x0,0x20(%rbx) : port->cmdline_options = pstrdup(packet->options); 0.00 : 6465ea: 49 8d 7f 64 lea 0x64(%r15),%rdi 0.00 : 6465ee: e8 5d 29 15 00 callq 798f50 0.00 : 6465f3: 48 89 c3 mov %rax,%rbx 0.00 : 6465f6: 48 8b 45 b8 mov -0x48(%rbp),%rax : if (strlen(port->cmdline_options) > sizeof(packet->options)) 0.00 : 6465fa: 48 89 df mov %rbx,%rdi : if (strlen(port->database_name) > sizeof(packet->database)) : port->database_name[sizeof(packet->database)] = '\0'; : port->user_name = pstrdup(packet->user); : if (strlen(port->user_name) > sizeof(packet->user)) : port->user_name[sizeof(packet->user)] = '\0'; : port->cmdline_options = pstrdup(packet->options); 0.00 : 6465fd: 48 89 98 58 01 00 00 mov %rbx,0x158(%rax) : if (strlen(port->cmdline_options) > sizeof(packet->options)) 0.00 : 646604: e8 47 32 e2 ff callq 469850 0.00 : 646609: 48 83 f8 40 cmp $0x40,%rax 0.00 : 64660d: 76 04 jbe 646613 : port->cmdline_options[sizeof(packet->options)] = '\0'; 0.00 : 64660f: c6 43 40 00 movb $0x0,0x40(%rbx) : port->guc_options = NIL; 0.00 : 646613: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646617: 48 c7 82 60 01 00 00 movq $0x0,0x160(%rdx) 0.00 : 64661e: 00 00 00 00 0.00 : 646622: e9 06 fe ff ff jmpq 64642d 0.00 : 646627: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 64662e: 00 00 : if (strcmp(valptr, "database") == 0) : { : am_walsender = true; : am_db_walsender = true; : } : else if (!parse_bool(valptr, &am_walsender)) 0.00 : 646630: be c0 cd b7 00 mov $0xb7cdc0,%esi 0.00 : 646635: 4c 89 e7 mov %r12,%rdi 0.00 : 646638: e8 c3 e7 07 00 callq 6c4e00 0.00 : 64663d: 84 c0 test %al,%al 0.00 : 64663f: 0f 85 14 ff ff ff jne 646559 : ereport(FATAL, 0.00 : 646645: 45 31 c0 xor %r8d,%r8d 0.00 : 646648: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 64664d: ba 71 07 00 00 mov $0x771,%edx 0.00 : 646652: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646657: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64665c: e8 5f 44 13 00 callq 77aac0 0.00 : 646661: 84 c0 test %al,%al 0.00 : 646663: 0f 84 23 ff ff ff je 64658c 0.00 : 646669: bf 38 02 8a 00 mov $0x8a0238,%edi 0.00 : 64666e: 31 c0 xor %eax,%eax 0.00 : 646670: e8 2b 56 13 00 callq 77bca0 0.00 : 646675: bf 68 02 8a 00 mov $0x8a0268,%edi 0.00 : 64667a: 41 89 c4 mov %eax,%r12d 0.00 : 64667d: 31 c0 xor %eax,%eax 0.00 : 64667f: e8 1c 62 13 00 callq 77c8a0 0.00 : 646684: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 646689: 89 c3 mov %eax,%ebx 0.00 : 64668b: e8 c0 66 13 00 callq 77cd50 0.00 : 646690: 44 89 e2 mov %r12d,%edx 0.00 : 646693: 89 c7 mov %eax,%edi 0.00 : 646695: 89 de mov %ebx,%esi 0.00 : 646697: 31 c0 xor %eax,%eax 0.00 : 646699: e8 42 3f 13 00 callq 77a5e0 0.00 : 64669e: e9 e9 fe ff ff jmpq 64658c 0.00 : 6466a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : FrontendProtocol = proto; : : /* Check we can handle the protocol the frontend is using. */ : : if (PG_PROTOCOL_MAJOR(proto) < PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST) || 0.00 : 6466a8: 66 85 db test %bx,%bx 0.00 : 6466ab: 74 73 je 646720 : PG_PROTOCOL_MAJOR(proto) > PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) || : (PG_PROTOCOL_MAJOR(proto) == PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) && : PG_PROTOCOL_MINOR(proto) > PG_PROTOCOL_MINOR(PG_PROTOCOL_LATEST))) : ereport(FATAL, 0.00 : 6466ad: 45 31 c0 xor %r8d,%r8d 0.00 : 6466b0: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6466b5: ba 35 07 00 00 mov $0x735,%edx 0.00 : 6466ba: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6466bf: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6466c4: e8 f7 43 13 00 callq 77aac0 0.00 : 6466c9: 84 c0 test %al,%al 0.00 : 6466cb: 0f 84 bb fe ff ff je 64658c 0.00 : 6466d1: 0f b7 d3 movzwl %bx,%edx 0.00 : 6466d4: bf f0 01 8a 00 mov $0x8a01f0,%edi 0.00 : 6466d9: 45 31 c9 xor %r9d,%r9d 0.00 : 6466dc: 41 b8 03 00 00 00 mov $0x3,%r8d 0.00 : 6466e2: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 6466e7: 44 89 e6 mov %r12d,%esi 0.00 : 6466ea: 31 c0 xor %eax,%eax 0.00 : 6466ec: e8 af 61 13 00 callq 77c8a0 0.00 : 6466f1: bf 40 04 00 00 mov $0x440,%edi 0.00 : 6466f6: 89 c3 mov %eax,%ebx 0.00 : 6466f8: e9 a6 00 00 00 jmpq 6467a3 0.00 : 6466fd: 0f 1f 00 nopl (%rax) : if (SSLok == 'S' && secure_open_server(port) == -1) : return STATUS_ERROR; : #endif : /* regular startup packet, cancel, etc packet should follow... */ : /* but not another SSL negotiation request */ : return ProcessStartupPacket(port, true); 0.00 : 646700: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 646704: be 01 00 00 00 mov $0x1,%esi 0.00 : 646709: e8 52 fa ff ff callq 646160 : case CAC_OK: : break; : } : : return STATUS_OK; : } 0.00 : 64670e: 48 83 c4 28 add $0x28,%rsp 0.00 : 646712: 5b pop %rbx 0.00 : 646713: 41 5c pop %r12 0.00 : 646715: 41 5d pop %r13 0.00 : 646717: 41 5e pop %r14 0.00 : 646719: 41 5f pop %r15 0.00 : 64671b: c9 leaveq 0.00 : 64671c: c3 retq 0.00 : 64671d: 0f 1f 00 nopl (%rax) : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 646720: 48 8b 05 39 41 57 00 mov 0x574139(%rip),%rax # bba860 0.00 : 646727: 48 89 45 c0 mov %rax,-0x40(%rbp) : : CurrentMemoryContext = context; 0.00 : 64672b: 48 8b 05 36 41 57 00 mov 0x574136(%rip),%rax # bba868 0.00 : 646732: 48 89 05 27 41 57 00 mov %rax,0x574127(%rip) # bba860 0.00 : 646739: e9 0b fb ff ff jmpq 646249 0.00 : 64673e: 66 90 xchg %ax,%ax : /* : * If we're going to reject the connection due to database state, say so : * now instead of wasting cycles on an authentication exchange. (This also : * allows a pg_ping utility to be written.) : */ : switch (port->canAcceptConnections) 0.00 : 646740: 83 f8 03 cmp $0x3,%eax 0.00 : 646743: 0f 84 ea 00 00 00 je 646833 0.00 : 646749: 83 f8 04 cmp $0x4,%eax 0.00 : 64674c: 0f 85 a7 fd ff ff jne 6464f9 : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 646752: 45 31 c0 xor %r8d,%r8d 0.00 : 646755: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 64675a: ba eb 07 00 00 mov $0x7eb,%edx 0.00 : 64675f: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646764: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646769: e8 52 43 13 00 callq 77aac0 0.00 : 64676e: 84 c0 test %al,%al 0.00 : 646770: 0f 84 16 fe ff ff je 64658c 0.00 : 646776: bf 88 03 8a 00 mov $0x8a0388,%edi 0.00 : 64677b: 31 c0 xor %eax,%eax 0.00 : 64677d: e8 1e 61 13 00 callq 77c8a0 0.00 : 646782: bf c5 30 00 00 mov $0x30c5,%edi 0.00 : 646787: 89 c3 mov %eax,%ebx 0.00 : 646789: eb 18 jmp 6467a3 0.00 : 64678b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : port->guc_options = NIL; : } : : /* Check a user name was given. */ : if (port->user_name == NULL || port->user_name[0] == '\0') : ereport(FATAL, 0.00 : 646790: bf d8 02 8a 00 mov $0x8a02d8,%edi 0.00 : 646795: 31 c0 xor %eax,%eax 0.00 : 646797: e8 04 61 13 00 callq 77c8a0 0.00 : 64679c: bf 02 02 00 00 mov $0x202,%edi 0.00 : 6467a1: 89 c3 mov %eax,%ebx : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 6467a3: e8 a8 65 13 00 callq 77cd50 0.00 : 6467a8: 89 de mov %ebx,%esi 0.00 : 6467aa: 89 c7 mov %eax,%edi 0.00 : 6467ac: 31 c0 xor %eax,%eax 0.00 : 6467ae: e8 2d 3e 13 00 callq 77a5e0 0.00 : 6467b3: e9 d4 fd ff ff jmpq 64658c 0.00 : 6467b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6467bf: 00 : * If user@, it is a global user, remove '@'. We only want to do this : * if there is an '@' at the end and no earlier in the user string or : * they may fake as a local user of another database attaching to this : * database. : */ : if (strchr(port->user_name, '@') == 0.00 : 6467c0: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6467c4: be 40 00 00 00 mov $0x40,%esi 0.00 : 6467c9: 48 8b 98 50 01 00 00 mov 0x150(%rax),%rbx 0.00 : 6467d0: 48 89 df mov %rbx,%rdi 0.00 : 6467d3: e8 78 34 e2 ff callq 469c50 0.00 : 6467d8: 48 89 df mov %rbx,%rdi 0.00 : 6467db: 49 89 c4 mov %rax,%r12 0.00 : 6467de: e8 6d 30 e2 ff callq 469850 0.00 : 6467e3: 48 8d 44 03 ff lea -0x1(%rbx,%rax,1),%rax 0.00 : 6467e8: 49 39 c4 cmp %rax,%r12 0.00 : 6467eb: 0f 84 ba 00 00 00 je 6468ab : port->user_name + strlen(port->user_name) - 1) : *strchr(port->user_name, '@') = '\0'; : else : { : /* Append '@' and dbname */ : port->user_name = psprintf("%s@%s", port->user_name, port->database_name); 0.00 : 6467f1: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6467f5: 48 89 de mov %rbx,%rsi 0.00 : 6467f8: bf 83 fa 89 00 mov $0x89fa83,%edi 0.00 : 6467fd: 48 8b 90 48 01 00 00 mov 0x148(%rax),%rdx 0.00 : 646804: 31 c0 xor %eax,%eax 0.00 : 646806: e8 d5 7c 16 00 callq 7ae4e0 0.00 : 64680b: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64680f: 48 89 82 50 01 00 00 mov %rax,0x150(%rdx) 0.00 : 646816: e9 61 fc ff ff jmpq 64647c 0.00 : 64681b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * replication commands to be issued even if connected to a database as it : * can make sense to first make a basebackup and then stream changes : * starting from that. : */ : if (am_walsender && !am_db_walsender) : port->database_name[0] = '\0'; 0.00 : 646820: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646824: 48 8b 82 48 01 00 00 mov 0x148(%rdx),%rax 0.00 : 64682b: c6 00 00 movb $0x0,(%rax) 0.00 : 64682e: e9 99 fc ff ff jmpq 6464cc : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is shutting down"))); : break; : case CAC_RECOVERY: : ereport(FATAL, 0.00 : 646833: 45 31 c0 xor %r8d,%r8d 0.00 : 646836: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 64683b: ba e6 07 00 00 mov $0x7e6,%edx 0.00 : 646840: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646845: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64684a: e8 71 42 13 00 callq 77aac0 0.00 : 64684f: 84 c0 test %al,%al 0.00 : 646851: 0f 84 35 fd ff ff je 64658c 0.00 : 646857: bf 60 03 8a 00 mov $0x8a0360,%edi 0.00 : 64685c: 31 c0 xor %eax,%eax 0.00 : 64685e: e8 3d 60 13 00 callq 77c8a0 0.00 : 646863: bf c5 01 02 03 mov $0x30201c5,%edi 0.00 : 646868: 89 c3 mov %eax,%ebx 0.00 : 64686a: e9 34 ff ff ff jmpq 6467a3 : * allows a pg_ping utility to be written.) : */ : switch (port->canAcceptConnections) : { : case CAC_STARTUP: : ereport(FATAL, 0.00 : 64686f: 45 31 c0 xor %r8d,%r8d 0.00 : 646872: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646877: ba dc 07 00 00 mov $0x7dc,%edx 0.00 : 64687c: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646881: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646886: e8 35 42 13 00 callq 77aac0 0.00 : 64688b: 84 c0 test %al,%al 0.00 : 64688d: 0f 84 f9 fc ff ff je 64658c 0.00 : 646893: bf 10 03 8a 00 mov $0x8a0310,%edi 0.00 : 646898: 31 c0 xor %eax,%eax 0.00 : 64689a: e8 01 60 13 00 callq 77c8a0 0.00 : 64689f: bf c5 01 02 03 mov $0x30201c5,%edi 0.00 : 6468a4: 89 c3 mov %eax,%ebx 0.00 : 6468a6: e9 f8 fe ff ff jmpq 6467a3 : * they may fake as a local user of another database attaching to this : * database. : */ : if (strchr(port->user_name, '@') == : port->user_name + strlen(port->user_name) - 1) : *strchr(port->user_name, '@') = '\0'; 0.00 : 6468ab: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 6468b0: e9 c7 fb ff ff jmpq 64647c 0.00 : 6468b5: 0f 1f 00 nopl (%rax) : /* : * EOF after SSLdone probably means the client didn't like our : * response to NEGOTIATE_SSL_CODE. That's not an error condition, so : * don't clutter the log with a complaint. : */ : if (!SSLdone) 0.00 : 6468b8: 45 84 ed test %r13b,%r13b 0.00 : 6468bb: 0f 85 45 fb ff ff jne 646406 : ereport(COMMERROR, 0.00 : 6468c1: 45 31 c0 xor %r8d,%r8d 0.00 : 6468c4: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6468c9: ba cf 06 00 00 mov $0x6cf,%edx : else : buf = palloc0(len + 1); : : if (pq_getbytes(buf, len) == EOF) : { : ereport(COMMERROR, 0.00 : 6468ce: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6468d3: bf 10 00 00 00 mov $0x10,%edi 0.00 : 6468d8: e8 e3 41 13 00 callq 77aac0 0.00 : 6468dd: 84 c0 test %al,%al 0.00 : 6468df: 0f 84 21 fb ff ff je 646406 0.00 : 6468e5: bf 69 fa 89 00 mov $0x89fa69,%edi 0.00 : 6468ea: 31 c0 xor %eax,%eax 0.00 : 6468ec: e8 af 5f 13 00 callq 77c8a0 0.00 : 6468f1: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 6468f6: 89 c3 mov %eax,%ebx 0.00 : 6468f8: e8 53 64 13 00 callq 77cd50 0.00 : 6468fd: 89 de mov %ebx,%esi 0.00 : 6468ff: 89 c7 mov %eax,%edi 0.00 : 646901: 31 c0 xor %eax,%eax 0.00 : 646903: e8 d8 3c 13 00 callq 77a5e0 0.00 : 646908: 44 89 e0 mov %r12d,%eax 0.00 : 64690b: e9 fb fa ff ff jmpq 64640b : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is starting up"))); : break; : case CAC_SHUTDOWN: : ereport(FATAL, 0.00 : 646910: 45 31 c0 xor %r8d,%r8d 0.00 : 646913: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646918: ba e1 07 00 00 mov $0x7e1,%edx 0.00 : 64691d: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646922: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646927: e8 94 41 13 00 callq 77aac0 0.00 : 64692c: 84 c0 test %al,%al 0.00 : 64692e: 0f 84 58 fc ff ff je 64658c 0.00 : 646934: bf 38 03 8a 00 mov $0x8a0338,%edi 0.00 : 646939: 31 c0 xor %eax,%eax 0.00 : 64693b: e8 60 5f 13 00 callq 77c8a0 0.00 : 646940: bf c5 01 02 03 mov $0x30201c5,%edi 0.00 : 646945: 89 c3 mov %eax,%ebx 0.00 : 646947: e9 57 fe ff ff jmpq 6467a3 : len -= 4; : : if (len < (int32) sizeof(ProtocolVersion) || : len > MAX_STARTUP_PACKET_LENGTH) : { : ereport(COMMERROR, 0.00 : 64694c: 45 31 c0 xor %r8d,%r8d 0.00 : 64694f: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646954: ba db 06 00 00 mov $0x6db,%edx 0.00 : 646959: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 64695e: bf 10 00 00 00 mov $0x10,%edi 0.00 : 646963: e8 58 41 13 00 callq 77aac0 0.00 : 646968: 84 c0 test %al,%al 0.00 : 64696a: 0f 84 96 fa ff ff je 646406 0.00 : 646970: bf f8 00 8a 00 mov $0x8a00f8,%edi 0.00 : 646975: 31 c0 xor %eax,%eax 0.00 : 646977: e8 24 5f 13 00 callq 77c8a0 0.00 : 64697c: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 646981: 89 c3 mov %eax,%ebx 0.00 : 646983: e8 c8 63 13 00 callq 77cd50 : retry1: : if (send(port->sock, &SSLok, 1, 0) != 1) : { : if (errno == EINTR) : goto retry1; /* if interrupted, just retry */ : ereport(COMMERROR, 0.00 : 646988: 89 c7 mov %eax,%edi 0.00 : 64698a: 89 de mov %ebx,%esi 0.00 : 64698c: 31 c0 xor %eax,%eax 0.00 : 64698e: e8 4d 3c 13 00 callq 77a5e0 0.00 : 646993: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 646998: e9 6e fa ff ff jmpq 64640b : else : buf = palloc0(len + 1); : : if (pq_getbytes(buf, len) == EOF) : { : ereport(COMMERROR, 0.00 : 64699d: 45 31 c0 xor %r8d,%r8d 0.00 : 6469a0: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6469a5: ba ee 06 00 00 mov $0x6ee,%edx 0.00 : 6469aa: e9 1f ff ff ff jmpq 6468ce : * See if we have a matching backend. In the EXEC_BACKEND case, we can no : * longer access the postmaster's own backend list, and must rely on the : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) 0.00 : 6469af: 48 8b 15 82 1c 52 00 mov 0x521c82(%rip),%rdx # b68638 : dlist_iter iter; : #else : int i; : #endif : : backendPID = (int) ntohl(canc->backendPID); 0.00 : 6469b6: 45 8b 67 04 mov 0x4(%r15),%r12d : cancelAuthCode = (long) ntohl(canc->cancelAuthCode); 0.00 : 6469ba: 41 8b 47 08 mov 0x8(%r15),%eax : dlist_iter iter; : #else : int i; : #endif : : backendPID = (int) ntohl(canc->backendPID); 0.00 : 6469be: 41 0f cc bswap %r12d : cancelAuthCode = (long) ntohl(canc->cancelAuthCode); 0.00 : 6469c1: 0f c8 bswap %eax : * See if we have a matching backend. In the EXEC_BACKEND case, we can no : * longer access the postmaster's own backend list, and must rely on the : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) 0.00 : 6469c3: 48 85 d2 test %rdx,%rdx 0.00 : 6469c6: 75 16 jne 6469de 0.00 : 6469c8: eb 1d jmp 6469e7 0.00 : 6469ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : #else : for (i = MaxLivePostmasterChildren() - 1; i >= 0; i--) : { : bp = (Backend *) &ShmemBackendArray[i]; : #endif : if (bp->pid == backendPID) 0.00 : 6469d0: 44 3b 62 e0 cmp -0x20(%rdx),%r12d : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) : { : bp = dlist_container(Backend, elem, iter.cur); 0.00 : 6469d4: 48 8d 5a e0 lea -0x20(%rdx),%rbx : #else : for (i = MaxLivePostmasterChildren() - 1; i >= 0; i--) : { : bp = (Backend *) &ShmemBackendArray[i]; : #endif : if (bp->pid == backendPID) 0.00 : 6469d8: 74 6b je 646a45 : * See if we have a matching backend. In the EXEC_BACKEND case, we can no : * longer access the postmaster's own backend list, and must rely on the : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) 0.00 : 6469da: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 6469de: 48 81 fa 30 86 b6 00 cmp $0xb68630,%rdx 0.00 : 6469e5: 75 e9 jne 6469d0 : return; : } : } : : /* No matching backend */ : ereport(LOG, 0.00 : 6469e7: 45 31 c0 xor %r8d,%r8d 0.00 : 6469ea: b9 40 10 8a 00 mov $0x8a1040,%ecx 0.00 : 6469ef: ba 32 08 00 00 mov $0x832,%edx 0.00 : 6469f4: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6469f9: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 6469fe: e8 bd 40 13 00 callq 77aac0 0.00 : 646a03: 84 c0 test %al,%al 0.00 : 646a05: 0f 84 fb f9 ff ff je 646406 0.00 : 646a0b: 44 89 e6 mov %r12d,%esi 0.00 : 646a0e: bf 88 01 8a 00 mov $0x8a0188,%edi 0.00 : 646a13: 31 c0 xor %eax,%eax 0.00 : 646a15: e8 86 5e 13 00 callq 77c8a0 0.00 : 646a1a: 89 c7 mov %eax,%edi 0.00 : 646a1c: 31 c0 xor %eax,%eax 0.00 : 646a1e: e8 bd 3b 13 00 callq 77a5e0 0.00 : 646a23: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 646a28: e9 de f9 ff ff jmpq 64640b : retry1: : if (send(port->sock, &SSLok, 1, 0) != 1) : { : if (errno == EINTR) : goto retry1; /* if interrupted, just retry */ : ereport(COMMERROR, 0.00 : 646a2d: bf c0 01 8a 00 mov $0x8a01c0,%edi 0.00 : 646a32: 31 c0 xor %eax,%eax 0.00 : 646a34: e8 67 5e 13 00 callq 77c8a0 0.00 : 646a39: 89 c3 mov %eax,%ebx 0.00 : 646a3b: e8 10 60 13 00 callq 77ca50 0.00 : 646a40: e9 43 ff ff ff jmpq 646988 : { : bp = (Backend *) &ShmemBackendArray[i]; : #endif : if (bp->pid == backendPID) : { : if (bp->cancel_key == cancelAuthCode) 0.00 : 646a45: 89 c0 mov %eax,%eax 0.00 : 646a47: 48 3b 43 08 cmp 0x8(%rbx),%rax 0.00 : 646a4b: 74 6a je 646ab7 : backendPID))); : signal_child(bp->pid, SIGINT); : } : else : /* Right PID, wrong key: no way, Jose */ : ereport(LOG, 0.00 : 646a4d: 45 31 c0 xor %r8d,%r8d 0.00 : 646a50: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646a55: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 646a5a: b9 40 10 8a 00 mov $0x8a1040,%ecx 0.00 : 646a5f: ba 2a 08 00 00 mov $0x82a,%edx 0.00 : 646a64: e8 57 40 13 00 callq 77aac0 0.00 : 646a69: 84 c0 test %al,%al 0.00 : 646a6b: 44 89 e6 mov %r12d,%esi 0.00 : 646a6e: bf 58 01 8a 00 mov $0x8a0158,%edi 0.00 : 646a73: 0f 84 8d f9 ff ff je 646406 0.00 : 646a79: eb 98 jmp 646a13 : /* : * If we didn't find a packet terminator exactly at the end of the : * given packet length, complain. : */ : if (offset != len - 1) : ereport(FATAL, 0.00 : 646a7b: 45 31 c0 xor %r8d,%r8d 0.00 : 646a7e: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646a83: ba 85 07 00 00 mov $0x785,%edx 0.00 : 646a88: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646a8d: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646a92: e8 29 40 13 00 callq 77aac0 0.00 : 646a97: 84 c0 test %al,%al 0.00 : 646a99: 0f 84 ed fa ff ff je 64658c 0.00 : 646a9f: bf 98 02 8a 00 mov $0x8a0298,%edi 0.00 : 646aa4: 31 c0 xor %eax,%eax 0.00 : 646aa6: e8 f5 5d 13 00 callq 77c8a0 0.00 : 646aab: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 646ab0: 89 c3 mov %eax,%ebx 0.00 : 646ab2: e9 ec fc ff ff jmpq 6467a3 : if (bp->pid == backendPID) : { : if (bp->cancel_key == cancelAuthCode) : { : /* Found a match; signal that backend to cancel current op */ : ereport(DEBUG2, 0.00 : 646ab7: 45 31 c0 xor %r8d,%r8d 0.00 : 646aba: b9 40 10 8a 00 mov $0x8a1040,%ecx 0.00 : 646abf: ba 23 08 00 00 mov $0x823,%edx 0.00 : 646ac4: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646ac9: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 646ace: e8 ed 3f 13 00 callq 77aac0 0.00 : 646ad3: 84 c0 test %al,%al 0.00 : 646ad5: 74 18 je 646aef 0.00 : 646ad7: bf 20 01 8a 00 mov $0x8a0120,%edi 0.00 : 646adc: 44 89 e6 mov %r12d,%esi 0.00 : 646adf: 31 c0 xor %eax,%eax 0.00 : 646ae1: e8 2a 3e 13 00 callq 77a910 0.00 : 646ae6: 89 c7 mov %eax,%edi 0.00 : 646ae8: 31 c0 xor %eax,%eax 0.00 : 646aea: e8 f1 3a 13 00 callq 77a5e0 : (errmsg_internal("processing cancel request: sending SIGINT to process %d", : backendPID))); : signal_child(bp->pid, SIGINT); 0.00 : 646aef: 8b 3b mov (%rbx),%edi 0.00 : 646af1: be 02 00 00 00 mov $0x2,%esi 0.00 : 646af6: e8 95 ec ff ff callq 645790 0.00 : 646afb: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 646b00: e9 06 f9 ff ff jmpq 64640b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:3929 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000688610 : : * only ever released at the end of a transaction. Instead, : * LockReleaseAll() calls VirtualXactLockTableCleanup(). : */ : void : VirtualXactLockTableInsert(VirtualTransactionId vxid) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:3929 100.00 : 688610: 55 push %rbp : Assert(VirtualTransactionIdIsValid(vxid)); : : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 688611: 31 f6 xor %esi,%esi : * only ever released at the end of a transaction. Instead, : * LockReleaseAll() calls VirtualXactLockTableCleanup(). : */ : void : VirtualXactLockTableInsert(VirtualTransactionId vxid) : { 0.00 : 688613: 48 89 e5 mov %rsp,%rbp 0.00 : 688616: 53 push %rbx 0.00 : 688617: 48 89 fb mov %rdi,%rbx 0.00 : 68861a: 48 c1 eb 20 shr $0x20,%rbx 0.00 : 68861e: 48 83 ec 08 sub $0x8,%rsp : Assert(VirtualTransactionIdIsValid(vxid)); : : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 688622: 48 8b 05 1f 53 4f 00 mov 0x4f531f(%rip),%rax # b7d948 0.00 : 688629: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi 0.00 : 688630: e8 bb 74 00 00 callq 68faf0 : : Assert(MyProc->backendId == vxid.backendId); : Assert(MyProc->fpLocalTransactionId == InvalidLocalTransactionId); : Assert(MyProc->fpVXIDLock == false); : : MyProc->fpVXIDLock = true; 0.00 : 688635: 48 8b 05 0c 53 4f 00 mov 0x4f530c(%rip),%rax # b7d948 0.00 : 68863c: c6 80 e0 02 00 00 01 movb $0x1,0x2e0(%rax) : MyProc->fpLocalTransactionId = vxid.localTransactionId; 0.00 : 688643: 48 8b 05 fe 52 4f 00 mov 0x4f52fe(%rip),%rax # b7d948 0.00 : 68864a: 89 98 e4 02 00 00 mov %ebx,0x2e4(%rax) : : LWLockRelease(MyProc->backendLock); 0.00 : 688650: 48 8b 05 f1 52 4f 00 mov 0x4f52f1(%rip),%rax # b7d948 0.00 : 688657: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi : } 0.00 : 68865e: 48 83 c4 08 add $0x8,%rsp 0.00 : 688662: 5b pop %rbx 0.00 : 688663: c9 leaveq : Assert(MyProc->fpVXIDLock == false); : : MyProc->fpVXIDLock = true; : MyProc->fpLocalTransactionId = vxid.localTransactionId; : : LWLockRelease(MyProc->backendLock); 0.00 : 688664: e9 37 6d 00 00 jmpq 68f3a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/proc.c:923 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068d160 : : /* : * ProcQueueInit -- initialize a shared memory process queue : */ : void : ProcQueueInit(PROC_QUEUE *queue) : { 0.00 : 68d160: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/proc.c:923 100.00 : 68d161: 48 89 e5 mov %rsp,%rbp 0.00 : 68d164: 53 push %rbx 0.00 : 68d165: 48 89 fb mov %rdi,%rbx 0.00 : 68d168: 48 83 ec 08 sub $0x8,%rsp : SHMQueueInit(&(queue->links)); 0.00 : 68d16c: e8 af 62 ff ff callq 683420 : queue->size = 0; 0.00 : 68d171: c7 43 10 00 00 00 00 movl $0x0,0x10(%rbx) : } 0.00 : 68d178: 48 83 c4 08 add $0x8,%rsp 0.00 : 68d17c: 5b pop %rbx 0.00 : 68d17d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1814 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076f720 : : * RelationDecrementReferenceCount : * Decrements relation reference count. : */ : void : RelationDecrementReferenceCount(Relation rel) : { 0.00 : 76f720: 55 push %rbp : Assert(rel->rd_refcnt > 0); : rel->rd_refcnt -= 1; 0.00 : 76f721: 83 6f 18 01 subl $0x1,0x18(%rdi) : if (!IsBootstrapProcessingMode()) 0.00 : 76f725: 8b 05 11 94 3f 00 mov 0x3f9411(%rip),%eax # b68b3c : * RelationDecrementReferenceCount : * Decrements relation reference count. : */ : void : RelationDecrementReferenceCount(Relation rel) : { 0.00 : 76f72b: 48 89 e5 mov %rsp,%rbp : Assert(rel->rd_refcnt > 0); : rel->rd_refcnt -= 1; : if (!IsBootstrapProcessingMode()) 0.00 : 76f72e: 85 c0 test %eax,%eax 0.00 : 76f730: 75 06 jne 76f738 : ResourceOwnerForgetRelationRef(CurrentResourceOwner, rel); : } 0.00 : 76f732: c9 leaveq 0.00 : 76f733: c3 retq 0.00 : 76f734: 0f 1f 40 00 nopl 0x0(%rax) : RelationDecrementReferenceCount(Relation rel) : { : Assert(rel->rd_refcnt > 0); : rel->rd_refcnt -= 1; : if (!IsBootstrapProcessingMode()) : ResourceOwnerForgetRelationRef(CurrentResourceOwner, rel); 0.00 : 76f738: 48 89 fe mov %rdi,%rsi 0.00 : 76f73b: 48 8b 3d 7e b1 44 00 mov 0x44b17e(%rip),%rdi # bba8c0 : } 0.00 : 76f742: c9 leaveq : RelationDecrementReferenceCount(Relation rel) : { : Assert(rel->rd_refcnt > 0); : rel->rd_refcnt -= 1; : if (!IsBootstrapProcessingMode()) : ResourceOwnerForgetRelationRef(CurrentResourceOwner, rel); /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1814 100.00 : 76f743: e9 18 af 02 00 jmpq 79a660 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:4999 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000790be0 : : * Start up automatic reporting of changes to variables marked GUC_REPORT. : * This is executed at completion of backend startup. : */ : void : BeginReportingGUCOptions(void) : { 0.00 : 790be0: 55 push %rbp 0.00 : 790be1: 48 89 e5 mov %rsp,%rbp 0.00 : 790be4: 53 push %rbx 0.00 : 790be5: 48 83 ec 08 sub $0x8,%rsp : : /* : * Don't do anything unless talking to an interactive frontend of protocol : * 3.0 or later. : */ : if (whereToSendOutput != DestRemote || 0.00 : 790be9: 83 3d b8 7b 3d 00 02 cmpl $0x2,0x3d7bb8(%rip) # b687a8 0.00 : 790bf0: 74 0e je 790c00 : struct config_generic *conf = guc_variables[i]; : : if (conf->flags & GUC_REPORT) : ReportGUCOption(conf); : } : } 0.00 : 790bf2: 48 83 c4 08 add $0x8,%rsp 0.00 : 790bf6: 5b pop %rbx 0.00 : 790bf7: c9 leaveq 0.00 : 790bf8: c3 retq 0.00 : 790bf9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * Don't do anything unless talking to an interactive frontend of protocol : * 3.0 or later. : */ : if (whereToSendOutput != DestRemote || 0.00 : 790c00: 66 83 3d da f0 42 00 cmpw $0x2,0x42f0da(%rip) # bbfce2 0.00 : 790c07: 02 0.00 : 790c08: 76 e8 jbe 790bf2 : return; : : reporting_enabled = true; : : /* Transmit initial values of interesting variables */ : for (i = 0; i < num_guc_variables; i++) 0.00 : 790c0a: 8b 05 18 98 42 00 mov 0x429818(%rip),%eax # bba428 : */ : if (whereToSendOutput != DestRemote || : PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) : return; : : reporting_enabled = true; 0.00 : 790c10: c6 05 1a 98 42 00 01 movb $0x1,0x42981a(%rip) # bba431 : : /* Transmit initial values of interesting variables */ : for (i = 0; i < num_guc_variables; i++) 0.00 : 790c17: 85 c0 test %eax,%eax 0.00 : 790c19: 7e d7 jle 790bf2 0.00 : 790c1b: 31 db xor %ebx,%ebx 0.00 : 790c1d: eb 0c jmp 790c2b 0.00 : 790c1f: 90 nop 0.00 : 790c20: 83 c3 01 add $0x1,%ebx 0.00 : 790c23: 39 1d ff 97 42 00 cmp %ebx,0x4297ff(%rip) # bba428 0.00 : 790c29: 7e c7 jle 790bf2 : { : struct config_generic *conf = guc_variables[i]; 0.00 : 790c2b: 48 8b 05 ee 97 42 00 mov 0x4297ee(%rip),%rax # bba420 0.00 : 790c32: 48 63 d3 movslq %ebx,%rdx 0.00 : 790c35: 48 8b 3c d0 mov (%rax,%rdx,8),%rdi : : if (conf->flags & GUC_REPORT) 0.00 : 790c39: f6 47 20 10 testb $0x10,0x20(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/utils/misc/guc.c:4999 100.00 : 790c3d: 74 e1 je 790c20 : ReportGUCOption(conf); 0.00 : 790c3f: e8 1c ff ff ff callq 790b60 0.00 : 790c44: eb da jmp 790c20 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:1344 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a75f0 : : * Get a snapshot that is sufficiently up-to-date for scan of the : * system catalog with the specified OID. : */ : Snapshot : GetCatalogSnapshot(Oid relid) : { 0.00 : 7a75f0: 55 push %rbp : } : : bool : HistoricSnapshotActive(void) : { : return HistoricSnapshot != NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:1344 100.00 : 7a75f1: 48 8b 05 20 33 41 00 mov 0x413320(%rip),%rax # bba918 : * Get a snapshot that is sufficiently up-to-date for scan of the : * system catalog with the specified OID. : */ : Snapshot : GetCatalogSnapshot(Oid relid) : { 0.00 : 7a75f8: 48 89 e5 mov %rsp,%rbp : * see the appropriate state of the catalog. : * : * This is the primary reason for needing to reset the system caches after : * finishing decoding. : */ : if (HistoricSnapshotActive()) 0.00 : 7a75fb: 48 85 c0 test %rax,%rax 0.00 : 7a75fe: 74 08 je 7a7608 : return HistoricSnapshot; : : return GetNonHistoricCatalogSnapshot(relid); : } 0.00 : 7a7600: c9 leaveq 0.00 : 7a7601: c3 retq 0.00 : 7a7602: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a7608: c9 leaveq : * finishing decoding. : */ : if (HistoricSnapshotActive()) : return HistoricSnapshot; : : return GetNonHistoricCatalogSnapshot(relid); 0.00 : 7a7609: e9 72 ff ff ff jmpq 7a7580 Sorted summary for file /lib64/libpthread-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libpthread-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000054d0 <__nptl_set_robust>: ??:0 100.00 : 54d0: be 18 00 00 00 mov $0x18,%esi 0.00 : 54d5: 48 81 c7 e0 02 00 00 add $0x2e0,%rdi 0.00 : 54dc: b8 11 01 00 00 mov $0x111,%eax 0.00 : 54e1: 0f 05 syscall Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009240 : : * be impossible to cancel a synchronous query because the structure would : * have to stay locked for the duration of the query). : */ : PGcancel * : PQgetCancel(PGconn *conn) : { 0.00 : 9240: 55 push %rbp 0.00 : 9241: 48 89 e5 mov %rsp,%rbp 0.00 : 9244: 53 push %rbx 0.00 : 9245: 48 89 fb mov %rdi,%rbx 0.00 : 9248: 48 83 ec 08 sub $0x8,%rsp : PGcancel *cancel; : : if (!conn) 0.00 : 924c: 48 85 ff test %rdi,%rdi 0.00 : 924f: 75 0f jne 9260 : if (cancel == NULL) : return NULL; : : memcpy(&cancel->raddr, &conn->raddr, sizeof(SockAddr)); : cancel->be_pid = conn->be_pid; : cancel->be_key = conn->be_key; 0.00 : 9251: 31 d2 xor %edx,%edx : : return cancel; : } 0.00 : 9253: 48 83 c4 08 add $0x8,%rsp 0.00 : 9257: 48 89 d0 mov %rdx,%rax 0.00 : 925a: 5b pop %rbx 0.00 : 925b: c9 leaveq 0.00 : 925c: c3 retq 0.00 : 925d: 0f 1f 00 nopl (%rax) : PGcancel *cancel; : : if (!conn) : return NULL; : : if (conn->sock == PGINVALID_SOCKET) 0.00 : 9260: 83 bf 38 01 00 00 ff cmpl $0xffffffff,0x138(%rdi) 0.00 : 9267: 74 e8 je 9251 : return NULL; : : cancel = malloc(sizeof(PGcancel)); 0.00 : 9269: bf 90 00 00 00 mov $0x90,%edi 0.00 : 926e: e8 cd ec ff ff callq 7f40 : if (cancel == NULL) 0.00 : 9273: 48 85 c0 test %rax,%rax : return NULL; : : if (conn->sock == PGINVALID_SOCKET) : return NULL; : : cancel = malloc(sizeof(PGcancel)); 0.00 : 9276: 48 89 c2 mov %rax,%rdx : if (cancel == NULL) 0.00 : 9279: 74 d8 je 9253 : return NULL; : : memcpy(&cancel->raddr, &conn->raddr, sizeof(SockAddr)); 0.00 : 927b: 48 89 c7 mov %rax,%rdi 0.00 : 927e: 48 8d b3 c8 01 00 00 lea 0x1c8(%rbx),%rsi 0.00 : 9285: b9 11 00 00 00 mov $0x11,%ecx ??:0 100.00 : 928a: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : cancel->be_pid = conn->be_pid; 0.00 : 928d: 8b 83 84 02 00 00 mov 0x284(%rbx),%eax 0.00 : 9293: 89 82 88 00 00 00 mov %eax,0x88(%rdx) : cancel->be_key = conn->be_key; 0.00 : 9299: 8b 83 88 02 00 00 mov 0x288(%rbx),%eax 0.00 : 929f: 89 82 8c 00 00 00 mov %eax,0x8c(%rdx) : : return cancel; : } 0.00 : 92a5: eb ac jmp 9253 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000115e0 : : * returns the byte length of the word beginning s, using the : * specified encoding. : */ : int : PQmblen(const char *s, int encoding) : { 0.00 : 115e0: 55 push %rbp 0.00 : 115e1: 89 f0 mov %esi,%eax : return pg_encoding_mblen(encoding, s); 0.00 : 115e3: 48 89 fe mov %rdi,%rsi 0.00 : 115e6: 89 c7 mov %eax,%edi : * returns the byte length of the word beginning s, using the : * specified encoding. : */ : int : PQmblen(const char *s, int encoding) : { 0.00 : 115e8: 48 89 e5 mov %rsp,%rbp : return pg_encoding_mblen(encoding, s); : } 0.00 : 115eb: c9 leaveq : * specified encoding. : */ : int : PQmblen(const char *s, int encoding) : { : return pg_encoding_mblen(encoding, s); ??:0 100.00 : 115ec: e9 bf c5 00 00 jmpq 1dbb0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000022010 <__gconv_get_builtin_trans>: ??:0 100.00 : 22010: 41 56 push %r14 0.00 : 22012: 4c 8d 35 27 db 34 00 lea 0x34db27(%rip),%r14 # 36fb40 0.00 : 22019: 41 55 push %r13 0.00 : 2201b: 49 89 f5 mov %rsi,%r13 0.00 : 2201e: 41 54 push %r12 0.00 : 22020: 49 89 fc mov %rdi,%r12 0.00 : 22023: 55 push %rbp 0.00 : 22024: 31 ed xor %ebp,%ebp 0.00 : 22026: 53 push %rbx 0.00 : 22027: 4c 89 f3 mov %r14,%rbx 0.00 : 2202a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 22030: 48 8b 33 mov (%rbx),%rsi 0.00 : 22033: 4c 89 e7 mov %r12,%rdi 0.00 : 22036: e8 15 d1 05 00 callq 7f150 <__GI_strcmp> 0.00 : 2203b: 85 c0 test %eax,%eax 0.00 : 2203d: 74 31 je 22070 <__gconv_get_builtin_trans+0x60> 0.00 : 2203f: 48 83 c5 01 add $0x1,%rbp 0.00 : 22043: 48 83 c3 20 add $0x20,%rbx 0.00 : 22047: 48 83 fd 0c cmp $0xc,%rbp 0.00 : 2204b: 75 e3 jne 22030 <__gconv_get_builtin_trans+0x20> 0.00 : 2204d: 48 8d 0d 3c 06 12 00 lea 0x12063c(%rip),%rcx # 142690 <__PRETTY_FUNCTION__.9931> 0.00 : 22054: 48 8d 35 9f 86 11 00 lea 0x11869f(%rip),%rsi # 13a6fa 0.00 : 2205b: 48 8d 3d 26 bb 11 00 lea 0x11bb26(%rip),%rdi # 13db88 <__PRETTY_FUNCTION__.11129+0x1af> 0.00 : 22062: ba 48 00 00 00 mov $0x48,%edx 0.00 : 22067: e8 b4 98 00 00 callq 2b920 <__assert_fail> 0.00 : 2206c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 22070: 48 89 e8 mov %rbp,%rax 0.00 : 22073: 48 8d 54 2d 01 lea 0x1(%rbp,%rbp,1),%rdx 0.00 : 22078: 49 c7 45 38 00 00 00 movq $0x0,0x38(%r13) 0.00 : 2207f: 00 0.00 : 22080: 48 c1 e0 05 shl $0x5,%rax 0.00 : 22084: 49 c7 45 40 00 00 00 movq $0x0,0x40(%r13) 0.00 : 2208b: 00 0.00 : 2208c: 49 c7 45 00 00 00 00 movq $0x0,0x0(%r13) 0.00 : 22093: 00 0.00 : 22094: 49 8b 44 06 08 mov 0x8(%r14,%rax,1),%rax 0.00 : 22099: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 2209d: 49 c7 45 08 00 00 00 movq $0x0,0x8(%r13) 0.00 : 220a4: 00 0.00 : 220a5: 5b pop %rbx 0.00 : 220a6: 5d pop %rbp 0.00 : 220a7: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 220ab: 49 8b 04 16 mov (%r14,%rdx,1),%rax 0.00 : 220af: 41 5c pop %r12 0.00 : 220b1: 41 c7 45 58 00 00 00 movl $0x0,0x58(%r13) 0.00 : 220b8: 00 0.00 : 220b9: 49 89 45 30 mov %rax,0x30(%r13) 0.00 : 220bd: 41 0f be 44 16 08 movsbl 0x8(%r14,%rdx,1),%eax 0.00 : 220c3: 41 89 45 48 mov %eax,0x48(%r13) 0.00 : 220c7: 41 0f be 44 16 09 movsbl 0x9(%r14,%rdx,1),%eax 0.00 : 220cd: 41 89 45 4c mov %eax,0x4c(%r13) 0.00 : 220d1: 41 0f be 44 16 0a movsbl 0xa(%r14,%rdx,1),%eax 0.00 : 220d7: 41 89 45 50 mov %eax,0x50(%r13) 0.00 : 220db: 41 0f be 44 16 0b movsbl 0xb(%r14,%rdx,1),%eax 0.00 : 220e1: 41 89 45 54 mov %eax,0x54(%r13) 0.00 : 220e5: 41 5d pop %r13 0.00 : 220e7: 41 5e pop %r14 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000220f0 <__gconv_btwoc_ascii>: 0.00 : 220f0: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 220f4: 40 84 f6 test %sil,%sil 0.00 : 220f7: b8 ff ff ff ff mov $0xffffffff,%eax ??:0 100.00 : 220fc: 0f 49 c2 cmovns %edx,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000028530 <__gconv_compare_alias_cache>: 0.00 : 28530: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 28535: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 2853a: 48 89 fb mov %rdi,%rbx 0.00 : 2853d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 28542: 48 83 ec 28 sub $0x28,%rsp 0.00 : 28546: 48 83 3d 72 aa 34 00 cmpq $0x0,0x34aa72(%rip) # 372fc0 0.00 : 2854d: 00 0.00 : 2854e: 48 89 f5 mov %rsi,%rbp 0.00 : 28551: 49 89 d4 mov %rdx,%r12 0.00 : 28554: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 28559: 74 46 je 285a1 <__gconv_compare_alias_cache+0x71> 0.00 : 2855b: 48 8d 74 24 08 lea 0x8(%rsp),%rsi 0.00 : 28560: e8 cb fe ff ff callq 28430 0.00 : 28565: 85 c0 test %eax,%eax 0.00 : 28567: 75 27 jne 28590 <__gconv_compare_alias_cache+0x60> 0.00 : 28569: 48 89 e6 mov %rsp,%rsi 0.00 : 2856c: 48 89 ef mov %rbp,%rdi 0.00 : 2856f: e8 bc fe ff ff callq 28430 0.00 : 28574: 85 c0 test %eax,%eax 0.00 : 28576: 75 18 jne 28590 <__gconv_compare_alias_cache+0x60> 0.00 : 28578: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 2857d: 2b 04 24 sub (%rsp),%eax 0.00 : 28580: 41 89 04 24 mov %eax,(%r12) ??:0 100.00 : 28584: 31 c0 xor %eax,%eax 0.00 : 28586: eb 19 jmp 285a1 <__gconv_compare_alias_cache+0x71> 0.00 : 28588: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2858f: 00 0.00 : 28590: 48 89 ee mov %rbp,%rsi 0.00 : 28593: 48 89 df mov %rbx,%rdi 0.00 : 28596: e8 b5 6b 05 00 callq 7f150 <__GI_strcmp> 0.00 : 2859b: 41 89 04 24 mov %eax,(%r12) 0.00 : 2859f: 31 c0 xor %eax,%eax 0.00 : 285a1: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 285a6: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp 0.00 : 285ab: 4c 8b 64 24 20 mov 0x20(%rsp),%r12 0.00 : 285b0: 48 83 c4 28 add $0x28,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000028b50 <__gconv_load_cache>: 0.00 : 28b50: 48 8d 3d e3 1c 11 00 lea 0x111ce3(%rip),%rdi # 13a83a 0.00 : 28b57: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 28b5c: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 28b61: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 28b66: 48 81 ec a8 00 00 00 sub $0xa8,%rsp 0.00 : 28b6d: e8 de c2 00 00 callq 34e50 0.00 : 28b72: 48 85 c0 test %rax,%rax 0.00 : 28b75: 48 89 05 2c e7 34 00 mov %rax,0x34e72c(%rip) # 3772a8 <__gconv_path_envvar> 0.00 : 28b7c: 74 27 je 28ba5 <__gconv_load_cache+0x55> 0.00 : 28b7e: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 28b83: 89 d0 mov %edx,%eax 0.00 : 28b85: 48 8b 9c 24 90 00 00 mov 0x90(%rsp),%rbx 0.00 : 28b8c: 00 0.00 : 28b8d: 48 8b ac 24 98 00 00 mov 0x98(%rsp),%rbp 0.00 : 28b94: 00 0.00 : 28b95: 4c 8b a4 24 a0 00 00 mov 0xa0(%rsp),%r12 0.00 : 28b9c: 00 0.00 : 28b9d: 48 81 c4 a8 00 00 00 add $0xa8,%rsp 0.00 : 28ba4: c3 retq 0.00 : 28ba5: 48 8d 3d 74 50 11 00 lea 0x115074(%rip),%rdi # 13dc20 <__PRETTY_FUNCTION__.11129+0x247> 0.00 : 28bac: 31 d2 xor %edx,%edx 0.00 : 28bae: 31 f6 xor %esi,%esi 0.00 : 28bb0: e8 24 46 0a 00 callq cd1d9 <__open_nocancel> 0.00 : 28bb5: 4c 63 e0 movslq %eax,%r12 0.00 : 28bb8: 89 c5 mov %eax,%ebp 0.00 : 28bba: 49 83 fc ff cmp $0xffffffffffffffff,%r12 0.00 : 28bbe: 74 be je 28b7e <__gconv_load_cache+0x2e> 0.00 : 28bc0: 48 89 e2 mov %rsp,%rdx 0.00 : 28bc3: 89 c6 mov %eax,%esi 0.00 : 28bc5: bf 01 00 00 00 mov $0x1,%edi 0.00 : 28bca: e8 f1 3b 0a 00 callq cc7c0 <__fxstat> 0.00 : 28bcf: 85 c0 test %eax,%eax 0.00 : 28bd1: 78 0b js 28bde <__gconv_load_cache+0x8e> 0.00 : 28bd3: 48 8b 74 24 30 mov 0x30(%rsp),%rsi 0.00 : 28bd8: 48 83 fe 0f cmp $0xf,%rsi 0.00 : 28bdc: 77 11 ja 28bef <__gconv_load_cache+0x9f> 0.00 : 28bde: 4c 89 e7 mov %r12,%rdi 0.00 : 28be1: b8 03 00 00 00 mov $0x3,%eax 0.00 : 28be6: 0f 05 syscall 0.00 : 28be8: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 28bed: eb 94 jmp 28b83 <__gconv_load_cache+0x33> 0.00 : 28bef: 45 31 c9 xor %r9d,%r9d 0.00 : 28bf2: 31 ff xor %edi,%edi 0.00 : 28bf4: 41 89 e8 mov %ebp,%r8d 0.00 : 28bf7: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 28bfc: ba 01 00 00 00 mov $0x1,%edx 0.00 : 28c01: 48 89 35 c0 a3 34 00 mov %rsi,0x34a3c0(%rip) # 372fc8 0.00 : 28c08: e8 43 f0 0a 00 callq d7c50 0.00 : 28c0d: 48 89 05 ac a3 34 00 mov %rax,0x34a3ac(%rip) # 372fc0 0.00 : 28c14: 48 83 c0 01 add $0x1,%rax 0.00 : 28c18: 0f 84 91 00 00 00 je 28caf <__gconv_load_cache+0x15f> 0.00 : 28c1e: 4c 89 e7 mov %r12,%rdi 0.00 : 28c21: b8 03 00 00 00 mov $0x3,%eax 0.00 : 28c26: 0f 05 syscall 0.00 : 28c28: 48 8b 3d 91 a3 34 00 mov 0x34a391(%rip),%rdi # 372fc0 ??:0 100.00 : 28c2f: 81 3f 24 03 01 20 cmpl $0x20010324,(%rdi) 0.00 : 28c35: 75 46 jne 28c7d <__gconv_load_cache+0x12d> 0.00 : 28c37: 0f b7 47 04 movzwl 0x4(%rdi),%eax 0.00 : 28c3b: 48 8b 0d 86 a3 34 00 mov 0x34a386(%rip),%rcx # 372fc8 0.00 : 28c42: 48 39 c8 cmp %rcx,%rax 0.00 : 28c45: 73 36 jae 28c7d <__gconv_load_cache+0x12d> 0.00 : 28c47: 0f b7 57 06 movzwl 0x6(%rdi),%edx 0.00 : 28c4b: 48 39 d1 cmp %rdx,%rcx 0.00 : 28c4e: 76 2d jbe 28c7d <__gconv_load_cache+0x12d> 0.00 : 28c50: 0f b7 47 08 movzwl 0x8(%rdi),%eax 0.00 : 28c54: 66 85 c0 test %ax,%ax 0.00 : 28c57: 74 24 je 28c7d <__gconv_load_cache+0x12d> 0.00 : 28c59: 0f b7 c0 movzwl %ax,%eax 0.00 : 28c5c: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 28c60: 48 39 c1 cmp %rax,%rcx 0.00 : 28c63: 72 18 jb 28c7d <__gconv_load_cache+0x12d> 0.00 : 28c65: 0f b7 47 0a movzwl 0xa(%rdi),%eax 0.00 : 28c69: 48 39 c1 cmp %rax,%rcx 0.00 : 28c6c: 76 0f jbe 28c7d <__gconv_load_cache+0x12d> 0.00 : 28c6e: 0f b7 47 0c movzwl 0xc(%rdi),%eax 0.00 : 28c72: 31 d2 xor %edx,%edx 0.00 : 28c74: 48 39 c1 cmp %rax,%rcx 0.00 : 28c77: 0f 83 06 ff ff ff jae 28b83 <__gconv_load_cache+0x33> 0.00 : 28c7d: 8b 15 4d a3 34 00 mov 0x34a34d(%rip),%edx # 372fd0 0.00 : 28c83: 85 d2 test %edx,%edx 0.00 : 28c85: 0f 84 8e 00 00 00 je 28d19 <__gconv_load_cache+0x1c9> 0.00 : 28c8b: e8 10 5c ff ff callq 1e8a0 0.00 : 28c90: c7 05 36 a3 34 00 00 movl $0x0,0x34a336(%rip) # 372fd0 0.00 : 28c97: 00 00 00 0.00 : 28c9a: 48 c7 05 1b a3 34 00 movq $0x0,0x34a31b(%rip) # 372fc0 0.00 : 28ca1: 00 00 00 00 0.00 : 28ca5: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 28caa: e9 d4 fe ff ff jmpq 28b83 <__gconv_load_cache+0x33> 0.00 : 28caf: 48 8b 3d 12 a3 34 00 mov 0x34a312(%rip),%rdi # 372fc8 0.00 : 28cb6: e8 95 5b ff ff callq 1e850 0.00 : 28cbb: 48 85 c0 test %rax,%rax 0.00 : 28cbe: 48 89 05 fb a2 34 00 mov %rax,0x34a2fb(%rip) # 372fc0 0.00 : 28cc5: 0f 84 13 ff ff ff je 28bde <__gconv_load_cache+0x8e> 0.00 : 28ccb: 31 db xor %ebx,%ebx 0.00 : 28ccd: eb 0d jmp 28cdc <__gconv_load_cache+0x18c> 0.00 : 28ccf: 90 nop 0.00 : 28cd0: 48 01 c3 add %rax,%rbx 0.00 : 28cd3: 48 3b 1d ee a2 34 00 cmp 0x34a2ee(%rip),%rbx # 372fc8 0.00 : 28cda: 73 4e jae 28d2a <__gconv_load_cache+0x1da> 0.00 : 28cdc: 48 8b 15 e5 a2 34 00 mov 0x34a2e5(%rip),%rdx # 372fc8 0.00 : 28ce3: 48 89 de mov %rbx,%rsi 0.00 : 28ce6: 48 03 35 d3 a2 34 00 add 0x34a2d3(%rip),%rsi # 372fc0 0.00 : 28ced: 89 ef mov %ebp,%edi 0.00 : 28cef: 48 29 da sub %rbx,%rdx 0.00 : 28cf2: e8 c9 48 0a 00 callq cd5c0 <__read> 0.00 : 28cf7: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 28cfb: 75 d3 jne 28cd0 <__gconv_load_cache+0x180> 0.00 : 28cfd: 48 8b 3d bc a2 34 00 mov 0x34a2bc(%rip),%rdi # 372fc0 0.00 : 28d04: e8 97 5b ff ff callq 1e8a0 0.00 : 28d09: 48 c7 05 ac a2 34 00 movq $0x0,0x34a2ac(%rip) # 372fc0 0.00 : 28d10: 00 00 00 00 0.00 : 28d14: e9 c5 fe ff ff jmpq 28bde <__gconv_load_cache+0x8e> 0.00 : 28d19: 48 8b 35 a8 a2 34 00 mov 0x34a2a8(%rip),%rsi # 372fc8 0.00 : 28d20: e8 5b ef 0a 00 callq d7c80 0.00 : 28d25: e9 70 ff ff ff jmpq 28c9a <__gconv_load_cache+0x14a> 0.00 : 28d2a: c7 05 9c a2 34 00 01 movl $0x1,0x34a29c(%rip) # 372fd0 0.00 : 28d31: 00 00 00 0.00 : 28d34: e9 e5 fe ff ff jmpq 28c1e <__gconv_load_cache+0xce> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002ab00 : 0.00 : 2ab00: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 2ab07: 00 00 0.00 : 2ab09: 48 8b 15 78 72 34 00 mov 0x347278(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : 2ab10: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 2ab14: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 2ab18: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2ab1c: 48 89 05 fd 85 34 00 mov %rax,0x3485fd(%rip) # 373120 0.00 : 2ab23: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 2ab27: 48 8b 40 48 mov 0x48(%rax),%rax 0.00 : 2ab2b: 48 89 05 f6 85 34 00 mov %rax,0x3485f6(%rip) # 373128 0.00 : 2ab32: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 2ab36: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 2ab3a: 48 89 05 ef 85 34 00 mov %rax,0x3485ef(%rip) # 373130 0.00 : 2ab41: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ab44: 3c 7f cmp $0x7f,%al 0.00 : 2ab46: 0f 84 b4 01 00 00 je 2ad00 0.00 : 2ab4c: 04 01 add $0x1,%al 0.00 : 2ab4e: 0f 84 ac 01 00 00 je 2ad00 0.00 : 2ab54: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ab58: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2ab5c: 48 89 05 d5 85 34 00 mov %rax,0x3485d5(%rip) # 373138 0.00 : 2ab63: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ab67: 48 8b 40 48 mov 0x48(%rax),%rax 0.00 : 2ab6b: 48 89 05 ce 85 34 00 mov %rax,0x3485ce(%rip) # 373140 0.00 : 2ab72: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ab76: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 2ab7a: 48 89 05 c7 85 34 00 mov %rax,0x3485c7(%rip) # 373148 0.00 : 2ab81: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ab85: 48 8b 40 58 mov 0x58(%rax),%rax 0.00 : 2ab89: 48 89 05 c0 85 34 00 mov %rax,0x3485c0(%rip) # 373150 0.00 : 2ab90: 48 8b 4a 20 mov 0x20(%rdx),%rcx 0.00 : 2ab94: 48 8b 41 60 mov 0x60(%rcx),%rax 0.00 : 2ab98: 48 89 05 b9 85 34 00 mov %rax,0x3485b9(%rip) # 373158 0.00 : 2ab9f: 0f b6 00 movzbl (%rax),%eax 0.00 : 2aba2: 3c 7f cmp $0x7f,%al 0.00 : 2aba4: 0f 84 3e 01 00 00 je 2ace8 ??:0 100.00 : 2abaa: 04 01 add $0x1,%al 0.00 : 2abac: 0f 84 36 01 00 00 je 2ace8 0.00 : 2abb2: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 2abb6: 48 89 05 a3 85 34 00 mov %rax,0x3485a3(%rip) # 373160 0.00 : 2abbd: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2abc1: 48 8b 40 70 mov 0x70(%rax),%rax 0.00 : 2abc5: 48 89 05 9c 85 34 00 mov %rax,0x34859c(%rip) # 373168 0.00 : 2abcc: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2abd0: 48 8b 40 78 mov 0x78(%rax),%rax 0.00 : 2abd4: 0f b6 00 movzbl (%rax),%eax 0.00 : 2abd7: 88 05 93 85 34 00 mov %al,0x348593(%rip) # 373170 0.00 : 2abdd: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2abe1: 48 8b 80 80 00 00 00 mov 0x80(%rax),%rax 0.00 : 2abe8: 0f b6 00 movzbl (%rax),%eax 0.00 : 2abeb: 88 05 80 85 34 00 mov %al,0x348580(%rip) # 373171 0.00 : 2abf1: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2abf5: 48 8b 80 88 00 00 00 mov 0x88(%rax),%rax 0.00 : 2abfc: 0f b6 00 movzbl (%rax),%eax 0.00 : 2abff: 88 05 6d 85 34 00 mov %al,0x34856d(%rip) # 373172 0.00 : 2ac05: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac09: 48 8b 80 90 00 00 00 mov 0x90(%rax),%rax 0.00 : 2ac10: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac13: 88 05 5a 85 34 00 mov %al,0x34855a(%rip) # 373173 0.00 : 2ac19: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac1d: 48 8b 80 98 00 00 00 mov 0x98(%rax),%rax 0.00 : 2ac24: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac27: 88 05 47 85 34 00 mov %al,0x348547(%rip) # 373174 0.00 : 2ac2d: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac31: 48 8b 80 a0 00 00 00 mov 0xa0(%rax),%rax 0.00 : 2ac38: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac3b: 88 05 34 85 34 00 mov %al,0x348534(%rip) # 373175 0.00 : 2ac41: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac45: 48 8b 80 a8 00 00 00 mov 0xa8(%rax),%rax 0.00 : 2ac4c: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac4f: 88 05 21 85 34 00 mov %al,0x348521(%rip) # 373176 0.00 : 2ac55: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac59: 48 8b 80 b0 00 00 00 mov 0xb0(%rax),%rax 0.00 : 2ac60: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac63: 88 05 0e 85 34 00 mov %al,0x34850e(%rip) # 373177 0.00 : 2ac69: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac6d: 48 8b 80 c0 00 00 00 mov 0xc0(%rax),%rax 0.00 : 2ac74: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac77: 88 05 fb 84 34 00 mov %al,0x3484fb(%rip) # 373178 0.00 : 2ac7d: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac81: 48 8b 80 c8 00 00 00 mov 0xc8(%rax),%rax 0.00 : 2ac88: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac8b: 88 05 e8 84 34 00 mov %al,0x3484e8(%rip) # 373179 0.00 : 2ac91: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 2ac95: 48 8b 80 d0 00 00 00 mov 0xd0(%rax),%rax 0.00 : 2ac9c: 0f b6 00 movzbl (%rax),%eax 0.00 : 2ac9f: 88 05 d5 84 34 00 mov %al,0x3484d5(%rip) # 37317a 0.00 : 2aca5: 48 8b 52 20 mov 0x20(%rdx),%rdx 0.00 : 2aca9: 48 8b 82 d8 00 00 00 mov 0xd8(%rdx),%rax 0.00 : 2acb0: 0f b6 00 movzbl (%rax),%eax 0.00 : 2acb3: 88 05 c2 84 34 00 mov %al,0x3484c2(%rip) # 37317b 0.00 : 2acb9: 48 8b 82 e0 00 00 00 mov 0xe0(%rdx),%rax 0.00 : 2acc0: 0f b6 00 movzbl (%rax),%eax 0.00 : 2acc3: 88 05 b3 84 34 00 mov %al,0x3484b3(%rip) # 37317c 0.00 : 2acc9: 48 8b 82 e8 00 00 00 mov 0xe8(%rdx),%rax 0.00 : 2acd0: 0f b6 00 movzbl (%rax),%eax 0.00 : 2acd3: 88 05 a4 84 34 00 mov %al,0x3484a4(%rip) # 37317d 0.00 : 2acd9: 48 8d 05 40 84 34 00 lea 0x348440(%rip),%rax # 373120 0.00 : 2ace0: c3 retq 0.00 : 2ace1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2ace8: 48 8d 05 51 fd 10 00 lea 0x10fd51(%rip),%rax # 13aa40 0.00 : 2acef: 48 89 05 62 84 34 00 mov %rax,0x348462(%rip) # 373158 0.00 : 2acf6: e9 b7 fe ff ff jmpq 2abb2 0.00 : 2acfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2ad00: 48 8d 05 39 fd 10 00 lea 0x10fd39(%rip),%rax # 13aa40 0.00 : 2ad07: 48 89 05 22 84 34 00 mov %rax,0x348422(%rip) # 373130 0.00 : 2ad0e: e9 41 fe ff ff jmpq 2ab54 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000006f0f0 : 0.00 : 6f0f0: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 6f0f5: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 6f0fa: 48 89 fb mov %rdi,%rbx 0.00 : 6f0fd: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 6f102: 48 83 ec 18 sub $0x18,%rsp 0.00 : 6f106: 66 83 3f 00 cmpw $0x0,(%rdi) 0.00 : 6f10a: 49 89 f1 mov %rsi,%r9 0.00 : 6f10d: 78 57 js 6f166 0.00 : 6f10f: 48 8b af 88 00 00 00 mov 0x88(%rdi),%rbp 0.00 : 6f116: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 6f11d: 00 00 0.00 : 6f11f: 4c 3b 45 08 cmp 0x8(%rbp),%r8 0.00 : 6f123: 74 3d je 6f162 0.00 : 6f125: 45 31 e4 xor %r12d,%r12d 0.00 : 6f128: be 01 00 00 00 mov $0x1,%esi 0.00 : 6f12d: 44 89 e0 mov %r12d,%eax 0.00 : 6f130: 83 3d 7d 85 30 00 00 cmpl $0x0,0x30857d(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6f137: 74 0d je 6f146 0.00 : 6f139: f0 0f b1 75 00 lock cmpxchg %esi,0x0(%rbp) 0.00 : 6f13e: 0f 85 f0 00 00 00 jne 6f234 <_L_lock_38> 0.00 : 6f144: eb 0a jmp 6f150 0.00 : 6f146: 0f b1 75 00 cmpxchg %esi,0x0(%rbp) 0.00 : 6f14a: 0f 85 e4 00 00 00 jne 6f234 <_L_lock_38> 0.00 : 6f150: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6f157: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 6f15b: 48 8b ab 88 00 00 00 mov 0x88(%rbx),%rbp 0.00 : 6f162: 83 45 04 01 addl $0x1,0x4(%rbp) 0.00 : 6f166: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 6f16b: 4c 89 ce mov %r9,%rsi 0.00 : 6f16e: 48 89 df mov %rbx,%rdi 0.00 : 6f171: e8 5a 9b ff ff callq 68cd0 <_IO_seekoff_unlocked> 0.00 : 6f176: 31 f6 xor %esi,%esi 0.00 : 6f178: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 6f17c: 0f 44 f0 cmove %eax,%esi 0.00 : 6f17f: 66 83 3b 00 cmpw $0x0,(%rbx) ??:0 100.00 : 6f183: 78 4b js 6f1d0 0.00 : 6f185: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6f18c: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6f18f: 83 e8 01 sub $0x1,%eax 0.00 : 6f192: 85 c0 test %eax,%eax 0.00 : 6f194: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6f197: 75 37 jne 6f1d0 0.00 : 6f199: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6f1a0: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6f1a7: 00 0.00 : 6f1a8: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6f1af: 83 3d fe 84 30 00 00 cmpl $0x0,0x3084fe(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6f1b6: 74 0b je 6f1c3 0.00 : 6f1b8: f0 ff 0a lock decl (%rdx) 0.00 : 6f1bb: 0f 85 8f 00 00 00 jne 6f250 <_L_unlock_88> 0.00 : 6f1c1: eb 08 jmp 6f1cb 0.00 : 6f1c3: ff 0a decl (%rdx) 0.00 : 6f1c5: 0f 85 85 00 00 00 jne 6f250 <_L_unlock_88> 0.00 : 6f1cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6f1d0: 89 f0 mov %esi,%eax 0.00 : 6f1d2: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 6f1d6: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 6f1db: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 6f1e0: 48 83 c4 18 add $0x18,%rsp 0.00 : 6f1e4: c3 retq 0.00 : 6f1e5: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 6f1e9: 49 89 c0 mov %rax,%r8 0.00 : 6f1ec: 78 3e js 6f22c 0.00 : 6f1ee: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6f1f5: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6f1f8: 83 e8 01 sub $0x1,%eax 0.00 : 6f1fb: 85 c0 test %eax,%eax 0.00 : 6f1fd: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6f200: 75 2a jne 6f22c 0.00 : 6f202: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6f209: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6f210: 00 0.00 : 6f211: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6f218: 83 3d 95 84 30 00 00 cmpl $0x0,0x308495(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6f21f: 74 07 je 6f228 0.00 : 6f221: f0 ff 0a lock decl (%rdx) 0.00 : 6f224: 75 45 jne 6f26b <_L_unlock_134> 0.00 : 6f226: eb 04 jmp 6f22c 0.00 : 6f228: ff 0a decl (%rdx) 0.00 : 6f22a: 75 3f jne 6f26b <_L_unlock_134> 0.00 : 6f22c: 4c 89 c7 mov %r8,%rdi 0.00 : 6f22f: e8 2c fd fa ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008cfe0 : 0.00 : 8cfe0: 55 push %rbp 0.00 : 8cfe1: 48 89 e5 mov %rsp,%rbp 0.00 : 8cfe4: 41 56 push %r14 0.00 : 8cfe6: 64 4c 8b 34 25 00 00 mov %fs:0x0,%r14 0.00 : 8cfed: 00 00 0.00 : 8cfef: 41 55 push %r13 0.00 : 8cff1: 49 89 fd mov %rdi,%r13 0.00 : 8cff4: 41 54 push %r12 0.00 : 8cff6: 53 push %rbx 0.00 : 8cff7: 48 83 ec 70 sub $0x70,%rsp 0.00 : 8cffb: 48 8b 0d 86 4d 2e 00 mov 0x2e4d86(%rip),%rcx # 371d88 <_DYNAMIC+0x228> 0.00 : 8d002: 89 75 8c mov %esi,-0x74(%rbp) 0.00 : 8d005: 49 8b 04 0e mov (%r14,%rcx,1),%rax 0.00 : 8d009: 48 8b 00 mov (%rax),%rax 0.00 : 8d00c: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 8d012: c7 45 a4 00 00 00 00 movl $0x0,-0x5c(%rbp) 0.00 : 8d019: c7 45 a8 01 00 00 00 movl $0x1,-0x58(%rbp) 0.00 : 8d020: c7 45 a0 01 00 00 00 movl $0x1,-0x60(%rbp) 0.00 : 8d027: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 8d02e: 00 0.00 : 8d02f: 48 83 c0 1e add $0x1e,%rax 0.00 : 8d033: 48 c1 e8 04 shr $0x4,%rax 0.00 : 8d037: 48 c1 e0 04 shl $0x4,%rax 0.00 : 8d03b: 48 29 c4 sub %rax,%rsp 0.00 : 8d03e: 48 8d 05 5f 79 2e 00 lea 0x2e795f(%rip),%rax # 3749a4 0.00 : 8d045: 48 8d 7c 24 1f lea 0x1f(%rsp),%rdi 0.00 : 8d04a: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 8d04e: 48 85 d2 test %rdx,%rdx 0.00 : 8d051: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 8d055: 4d 85 ed test %r13,%r13 0.00 : 8d058: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : 8d05c: 0f 84 96 01 00 00 je 8d1f8 0.00 : 8d062: 49 8b 14 0e mov (%r14,%rcx,1),%rdx 0.00 : 8d066: 4c 89 6d 90 mov %r13,-0x70(%rbp) 0.00 : 8d06a: 48 8b 02 mov (%rdx),%rax 0.00 : 8d06d: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 8d073: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax 0.00 : 8d078: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 8d07c: 48 8b 1a mov (%rdx),%rbx 0.00 : 8d07f: 4c 8b 63 28 mov 0x28(%rbx),%r12 0.00 : 8d083: 4d 85 e4 test %r12,%r12 0.00 : 8d086: 0f 84 84 01 00 00 je 8d210 0.00 : 8d08c: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 8d091: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 8d095: 48 8b 58 28 mov 0x28(%rax),%rbx 0.00 : 8d099: 74 0d je 8d0a8 0.00 : 8d09b: 48 c1 cb 11 ror $0x11,%rbx 0.00 : 8d09f: 64 48 33 1c 25 30 00 xor %fs:0x30,%rbx 0.00 : 8d0a6: 00 00 0.00 : 8d0a8: 8b 45 8c mov -0x74(%rbp),%eax 0.00 : 8d0ab: 85 c0 test %eax,%eax 0.00 : 8d0ad: 75 69 jne 8d118 0.00 : 8d0af: 48 89 df mov %rbx,%rdi 0.00 : 8d0b2: e8 59 5c 08 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 8d0b7: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 8d0bc: 31 d2 xor %edx,%edx 0.00 : 8d0be: 45 31 c0 xor %r8d,%r8d 0.00 : 8d0c1: 31 c9 xor %ecx,%ecx 0.00 : 8d0c3: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 8d0c7: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 8d0ce: 00 0.00 : 8d0cf: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : 8d0d6: 4c 8d 4d d8 lea -0x28(%rbp),%r9 0.00 : 8d0da: ff d3 callq *%rbx 0.00 : 8d0dc: 85 c0 test %eax,%eax 0.00 : 8d0de: 89 c2 mov %eax,%edx 0.00 : 8d0e0: 0f 85 b2 00 00 00 jne 8d198 0.00 : 8d0e6: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 8d0ea: c6 00 00 movb $0x0,(%rax) 0.00 : 8d0ed: 48 83 c0 01 add $0x1,%rax 0.00 : 8d0f1: 85 d2 test %edx,%edx 0.00 : 8d0f3: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 8d0f7: 75 62 jne 8d15b 0.00 : 8d0f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8d100: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 8d104: 48 8d 65 e0 lea -0x20(%rbp),%rsp 0.00 : 8d108: 5b pop %rbx 0.00 : 8d109: 41 5c pop %r12 0.00 : 8d10b: 4c 29 e8 sub %r13,%rax 0.00 : 8d10e: 41 5d pop %r13 0.00 : 8d110: 41 5e pop %r14 0.00 : 8d112: c9 leaveq 0.00 : 8d113: c3 retq 0.00 : 8d114: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8d118: 48 8d 45 8c lea -0x74(%rbp),%rax 0.00 : 8d11c: 48 89 df mov %rbx,%rdi 0.00 : 8d11f: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 8d123: e8 e8 5b 08 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 8d128: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.00 : 8d12c: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 8d131: 48 8d 55 d0 lea -0x30(%rbp),%rdx 0.00 : 8d135: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 8d139: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 8d140: 00 0.00 : 8d141: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 8d148: 4c 8d 4d d8 lea -0x28(%rbp),%r9 0.00 : 8d14c: 45 31 c0 xor %r8d,%r8d 0.00 : 8d14f: 48 83 c1 04 add $0x4,%rcx 0.00 : 8d153: ff d3 callq *%rbx 0.00 : 8d155: 89 c2 mov %eax,%edx 0.00 : 8d157: 85 d2 test %edx,%edx 0.00 : 8d159: 74 a5 je 8d100 0.00 : 8d15b: 83 fa 04 cmp $0x4,%edx 0.00 : 8d15e: 74 48 je 8d1a8 0.00 : 8d160: 83 fa 06 cmp $0x6,%edx 0.00 : 8d163: 74 43 je 8d1a8 0.00 : 8d165: 83 fa 07 cmp $0x7,%edx 0.00 : 8d168: 74 3e je 8d1a8 0.00 : 8d16a: 83 fa 05 cmp $0x5,%edx 0.00 : 8d16d: 0f 1f 00 nopl (%rax) 0.00 : 8d170: 74 8e je 8d100 0.00 : 8d172: 48 8d 0d 8a ee 0a 00 lea 0xaee8a(%rip),%rcx # 13c003 <__PRETTY_FUNCTION__.11263> 0.00 : 8d179: 48 8d 35 79 ee 0a 00 lea 0xaee79(%rip),%rsi # 13bff9 <__PRETTY_FUNCTION__.11266+0xa> 0.00 : 8d180: 48 8d 3d 91 31 0b 00 lea 0xb3191(%rip),%rdi # 140318 <__PRETTY_FUNCTION__.11129+0x293f> 0.00 : 8d187: ba 67 00 00 00 mov $0x67,%edx 0.00 : 8d18c: e8 8f e7 f9 ff callq 2b920 <__assert_fail> 0.00 : 8d191: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8d198: 83 f8 04 cmp $0x4,%eax 0.00 : 8d19b: 75 ba jne 8d157 0.00 : 8d19d: e9 44 ff ff ff jmpq 8d0e6 0.00 : 8d1a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8d1a8: 85 d2 test %edx,%edx 0.00 : 8d1aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8d1b0: 0f 84 4a ff ff ff je 8d100 ??:0 100.00 : 8d1b6: 83 fa 04 cmp $0x4,%edx 0.00 : 8d1b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8d1c0: 0f 84 3a ff ff ff je 8d100 0.00 : 8d1c6: 83 fa 05 cmp $0x5,%edx 0.00 : 8d1c9: 0f 84 31 ff ff ff je 8d100 0.00 : 8d1cf: 48 8b 05 62 4c 2e 00 mov 0x2e4c62(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 8d1d6: 41 c7 04 06 54 00 00 movl $0x54,(%r14,%rax,1) 0.00 : 8d1dd: 00 0.00 : 8d1de: 48 8d 65 e0 lea -0x20(%rbp),%rsp 0.00 : 8d1e2: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 8d1e9: 5b pop %rbx 0.00 : 8d1ea: 41 5c pop %r12 0.00 : 8d1ec: 41 5d pop %r13 0.00 : 8d1ee: 41 5e pop %r14 0.00 : 8d1f0: c9 leaveq 0.00 : 8d1f1: c3 retq 0.00 : 8d1f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8d1f8: 49 89 fd mov %rdi,%r13 0.00 : 8d1fb: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : 8d202: e9 5b fe ff ff jmpq 8d062 0.00 : 8d207: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8d20e: 00 00 0.00 : 8d210: 48 8d 05 29 2b 2e 00 lea 0x2e2b29(%rip),%rax # 36fd40 <_nl_C_LC_CTYPE> 0.00 : 8d217: 4c 8d 25 e2 21 2e 00 lea 0x2e21e2(%rip),%r12 # 36f400 <__wcsmbs_gconv_fcts_c> 0.00 : 8d21e: 48 39 c3 cmp %rax,%rbx 0.00 : 8d221: 0f 84 65 fe ff ff je 8d08c 0.00 : 8d227: 48 89 df mov %rbx,%rdi 0.00 : 8d22a: e8 c1 a0 00 00 callq 972f0 <__wcsmbs_load_conv> 0.00 : 8d22f: 4c 8b 63 28 mov 0x28(%rbx),%r12 0.00 : 8d233: e9 54 fe ff ff jmpq 8d08c Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b0e90 : 0.00 : b0e90: 41 54 push %r12 0.00 : b0e92: 49 89 f4 mov %rsi,%r12 0.00 : b0e95: 55 push %rbp 0.00 : b0e96: 48 89 d5 mov %rdx,%rbp 0.00 : b0e99: 53 push %rbx 0.00 : b0e9a: 48 89 fb mov %rdi,%rbx 0.00 : b0e9d: eb 04 jmp b0ea3 0.00 : b0e9f: 90 nop ??:0 100.00 : b0ea0: 48 89 c3 mov %rax,%rbx 0.00 : b0ea3: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : b0ea7: 48 85 c0 test %rax,%rax 0.00 : b0eaa: 75 f4 jne b0ea0 0.00 : b0eac: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b0eb0: 48 85 c0 test %rax,%rax 0.00 : b0eb3: 75 eb jne b0ea0 0.00 : b0eb5: eb 1e jmp b0ed5 0.00 : b0eb7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b0ebe: 00 00 0.00 : b0ec0: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : b0ec4: 48 39 c3 cmp %rax,%rbx 0.00 : b0ec7: 74 09 je b0ed2 0.00 : b0ec9: 48 85 c0 test %rax,%rax 0.00 : b0ecc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b0ed0: 75 ce jne b0ea0 0.00 : b0ed2: 48 89 d3 mov %rdx,%rbx 0.00 : b0ed5: 48 89 de mov %rbx,%rsi 0.00 : b0ed8: 48 89 ef mov %rbp,%rdi 0.00 : b0edb: 41 ff d4 callq *%r12 0.00 : b0ede: 85 c0 test %eax,%eax 0.00 : b0ee0: 75 08 jne b0eea 0.00 : b0ee2: 48 8b 13 mov (%rbx),%rdx 0.00 : b0ee5: 48 85 d2 test %rdx,%rdx 0.00 : b0ee8: 75 d6 jne b0ec0 0.00 : b0eea: 5b pop %rbx 0.00 : b0eeb: 5d pop %rbp 0.00 : b0eec: 41 5c pop %r12 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b0ef0 : 0.00 : b0ef0: 41 54 push %r12 0.00 : b0ef2: 49 89 f4 mov %rsi,%r12 0.00 : b0ef5: 55 push %rbp 0.00 : b0ef6: 48 89 d5 mov %rdx,%rbp 0.00 : b0ef9: 53 push %rbx 0.00 : b0efa: 48 89 fb mov %rdi,%rbx 0.00 : b0efd: eb 04 jmp b0f03 0.00 : b0eff: 90 nop 0.00 : b0f00: 48 89 c3 mov %rax,%rbx 0.00 : b0f03: 48 89 de mov %rbx,%rsi 0.00 : b0f06: 48 89 ef mov %rbp,%rdi 0.00 : b0f09: 41 ff d4 callq *%r12 0.00 : b0f0c: 85 c0 test %eax,%eax 0.00 : b0f0e: 75 2d jne b0f3d 0.00 : b0f10: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : b0f14: 31 d2 xor %edx,%edx 0.00 : b0f16: 48 85 c0 test %rax,%rax 0.00 : b0f19: 75 e5 jne b0f00 0.00 : b0f1b: eb 06 jmp b0f23 0.00 : b0f1d: 0f 1f 00 nopl (%rax) 0.00 : b0f20: 48 89 c3 mov %rax,%rbx 0.00 : b0f23: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b0f27: 48 39 d0 cmp %rdx,%rax 0.00 : b0f2a: 74 06 je b0f32 0.00 : b0f2c: 48 85 c0 test %rax,%rax 100.00 : b0f2f: 90 nop 0.00 : b0f30: 75 ce jne b0f00 0.00 : b0f32: 48 8b 03 mov (%rbx),%rax 0.00 : b0f35: 48 89 da mov %rbx,%rdx 0.00 : b0f38: 48 85 c0 test %rax,%rax 0.00 : b0f3b: 75 e3 jne b0f20 0.00 : b0f3d: 5b pop %rbx 0.00 : b0f3e: 5d pop %rbp 0.00 : b0f3f: 41 5c pop %r12 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b1ad0 : 0.00 : b1ad0: 41 55 push %r13 ??:0 100.00 : b1ad2: 49 89 f5 mov %rsi,%r13 0.00 : b1ad5: 41 54 push %r12 0.00 : b1ad7: 55 push %rbp 0.00 : b1ad8: 53 push %rbx 0.00 : b1ad9: 48 89 fb mov %rdi,%rbx 0.00 : b1adc: 48 83 ec 18 sub $0x18,%rsp 0.00 : b1ae0: 4c 8b 27 mov (%rdi),%r12 0.00 : b1ae3: 48 8d 6c 24 10 lea 0x10(%rsp),%rbp 0.00 : b1ae8: eb 0e jmp b1af8 0.00 : b1aea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b1af0: 49 8d 6c 24 08 lea 0x8(%r12),%rbp 0.00 : b1af5: 48 89 c3 mov %rax,%rbx 0.00 : b1af8: 48 8d 4b 28 lea 0x28(%rbx),%rcx 0.00 : b1afc: 31 d2 xor %edx,%edx 0.00 : b1afe: 31 f6 xor %esi,%esi 0.00 : b1b00: 4c 89 ef mov %r13,%rdi 0.00 : b1b03: e8 b8 fe ff ff callq b19c0 0.00 : b1b08: 48 85 c0 test %rax,%rax 0.00 : b1b0b: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : b1b0f: 74 4f je b1b60 0.00 : b1b11: 4c 89 20 mov %r12,(%rax) 0.00 : b1b14: 48 8b 45 00 mov 0x0(%rbp),%rax 0.00 : b1b18: 80 48 32 04 orb $0x4,0x32(%rax) 0.00 : b1b1c: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : b1b20: 4c 8b 65 00 mov 0x0(%rbp),%r12 0.00 : b1b24: 48 85 c0 test %rax,%rax 0.00 : b1b27: 75 c7 jne b1af0 0.00 : b1b29: 31 d2 xor %edx,%edx 0.00 : b1b2b: eb 06 jmp b1b33 0.00 : b1b2d: 0f 1f 00 nopl (%rax) 0.00 : b1b30: 48 89 c3 mov %rax,%rbx 0.00 : b1b33: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b1b37: 48 39 d0 cmp %rdx,%rax 0.00 : b1b3a: 74 05 je b1b41 0.00 : b1b3c: 48 85 c0 test %rax,%rax 0.00 : b1b3f: 75 2f jne b1b70 0.00 : b1b41: 48 8b 03 mov (%rbx),%rax 0.00 : b1b44: 4d 8b 24 24 mov (%r12),%r12 0.00 : b1b48: 48 89 da mov %rbx,%rdx 0.00 : b1b4b: 48 85 c0 test %rax,%rax 0.00 : b1b4e: 75 e0 jne b1b30 0.00 : b1b50: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : b1b55: 48 83 c4 18 add $0x18,%rsp 0.00 : b1b59: 5b pop %rbx 0.00 : b1b5a: 5d pop %rbp 0.00 : b1b5b: 41 5c pop %r12 0.00 : b1b5d: 41 5d pop %r13 0.00 : b1b5f: c3 retq 0.00 : b1b60: 48 83 c4 18 add $0x18,%rsp 0.00 : b1b64: 31 c0 xor %eax,%eax 0.00 : b1b66: 5b pop %rbx 0.00 : b1b67: 5d pop %rbp 0.00 : b1b68: 41 5c pop %r12 0.00 : b1b6a: 41 5d pop %r13 0.00 : b1b6c: c3 retq 0.00 : b1b6d: 0f 1f 00 nopl (%rax) 0.00 : b1b70: 49 8d 6c 24 10 lea 0x10(%r12),%rbp 0.00 : b1b75: 48 89 c3 mov %rax,%rbx 0.00 : b1b78: e9 7b ff ff ff jmpq b1af8 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b2370 : 0.00 : b2370: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : b2375: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : b237a: 49 89 f9 mov %rdi,%r9 0.00 : b237d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : b2382: 48 83 ec 18 sub $0x18,%rsp 0.00 : b2386: 44 0f b6 46 30 movzbl 0x30(%rsi),%r8d 0.00 : b238b: 8b 4e 38 mov 0x38(%rsi),%ecx 0.00 : b238e: 41 80 f8 10 cmp $0x10,%r8b 0.00 : b2392: 76 24 jbe b23b8 0.00 : b2394: 41 83 e0 08 and $0x8,%r8d 0.00 : b2398: 0f 85 72 01 00 00 jne b2510 0.00 : b239e: 48 8b 46 20 mov 0x20(%rsi),%rax 0.00 : b23a2: 49 8b 51 18 mov 0x18(%r9),%rdx 0.00 : b23a6: 48 63 c9 movslq %ecx,%rcx 0.00 : b23a9: 8b 40 38 mov 0x38(%rax),%eax 0.00 : b23ac: 89 04 8a mov %eax,(%rdx,%rcx,4) 0.00 : b23af: 31 c0 xor %eax,%eax 0.00 : b23b1: eb 2a jmp b23dd 0.00 : b23b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b23b8: 48 8d 15 e1 58 08 00 lea 0x858e1(%rip),%rdx # 137ca0 <__mon_yday+0xe80> 0.00 : b23bf: 41 0f b6 c0 movzbl %r8b,%eax 0.00 : b23c3: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : b23c7: 48 01 d0 add %rdx,%rax 0.00 : b23ca: ff e0 jmpq *%rax 0.00 : b23cc: 0f 1f 40 00 nopl 0x0(%rax) ??:0 100.00 : b23d0: 48 83 7e 20 00 cmpq $0x0,0x20(%rsi) 0.00 : b23d5: 0f 85 16 01 00 00 jne b24f1 0.00 : b23db: 31 c0 xor %eax,%eax 0.00 : b23dd: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : b23e1: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : b23e6: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : b23eb: 48 83 c4 18 add $0x18,%rsp 0.00 : b23ef: c3 retq 0.00 : b23f0: 48 8b 56 20 mov 0x20(%rsi),%rdx 0.00 : b23f4: 49 8b 41 18 mov 0x18(%r9),%rax 0.00 : b23f8: 48 63 f9 movslq %ecx,%rdi 0.00 : b23fb: 8b 52 38 mov 0x38(%rdx),%edx 0.00 : b23fe: 89 14 b8 mov %edx,(%rax,%rdi,4) 0.00 : b2401: 80 7e 30 04 cmpb $0x4,0x30(%rsi) 0.00 : b2405: 75 d4 jne b23db 0.00 : b2407: 49 8b 41 18 mov 0x18(%r9),%rax 0.00 : b240b: 8b 34 b8 mov (%rax,%rdi,4),%esi 0.00 : b240e: 48 c1 e7 04 shl $0x4,%rdi 0.00 : b2412: 49 03 79 28 add 0x28(%r9),%rdi 0.00 : b2416: e8 45 f5 ff ff callq b1960 0.00 : b241b: 31 c0 xor %eax,%eax 0.00 : b241d: eb be jmp b23dd 0.00 : b241f: 90 nop 0.00 : b2420: 48 8b 46 20 mov 0x20(%rsi),%rax 0.00 : b2424: 48 63 f9 movslq %ecx,%rdi 0.00 : b2427: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : b242b: 48 c1 e7 04 shl $0x4,%rdi 0.00 : b242f: 49 03 79 28 add 0x28(%r9),%rdi 0.00 : b2433: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : b2438: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : b243d: 8b 70 38 mov 0x38(%rax),%esi 0.00 : b2440: 48 83 c4 18 add $0x18,%rsp 0.00 : b2444: e9 17 f5 ff ff jmpq b1960 0.00 : b2449: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b2450: 80 8f a0 00 00 00 01 orb $0x1,0xa0(%rdi) 0.00 : b2457: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : b245b: 48 85 c0 test %rax,%rax 0.00 : b245e: 0f 84 e4 00 00 00 je b2548 0.00 : b2464: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : b2468: 44 8b 60 38 mov 0x38(%rax),%r12d 0.00 : b246c: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : b2470: 48 85 c0 test %rax,%rax 0.00 : b2473: 0f 84 df 00 00 00 je b2558 0.00 : b2479: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : b247d: 8b 68 38 mov 0x38(%rax),%ebp 0.00 : b2480: 45 85 e4 test %r12d,%r12d 0.00 : b2483: 0f 88 fa 00 00 00 js b2583 0.00 : b2489: 85 ed test %ebp,%ebp 0.00 : b248b: 0f 88 d3 00 00 00 js b2564 0.00 : b2491: 48 63 d9 movslq %ecx,%rbx 0.00 : b2494: bf 08 00 00 00 mov $0x8,%edi 0.00 : b2499: 48 c1 e3 04 shl $0x4,%rbx 0.00 : b249d: 49 03 59 28 add 0x28(%r9),%rbx 0.00 : b24a1: c7 03 02 00 00 00 movl $0x2,(%rbx) 0.00 : b24a7: e8 a4 c3 f6 ff callq 1e850 0.00 : b24ac: 48 89 c2 mov %rax,%rdx 0.00 : b24af: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : b24b3: b8 0c 00 00 00 mov $0xc,%eax 0.00 : b24b8: 48 85 d2 test %rdx,%rdx 0.00 : b24bb: 0f 84 1c ff ff ff je b23dd 0.00 : b24c1: 41 39 ec cmp %ebp,%r12d 0.00 : b24c4: 74 6a je b2530 0.00 : b24c6: c7 43 04 02 00 00 00 movl $0x2,0x4(%rbx) 0.00 : b24cd: 7d 11 jge b24e0 0.00 : b24cf: 44 89 22 mov %r12d,(%rdx) 0.00 : b24d2: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : b24d6: 89 68 04 mov %ebp,0x4(%rax) 0.00 : b24d9: 31 c0 xor %eax,%eax 0.00 : b24db: e9 fd fe ff ff jmpq b23dd 0.00 : b24e0: 89 2a mov %ebp,(%rdx) 0.00 : b24e2: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : b24e6: 44 89 60 04 mov %r12d,0x4(%rax) 0.00 : b24ea: 31 c0 xor %eax,%eax 0.00 : b24ec: e9 ec fe ff ff jmpq b23dd 0.00 : b24f1: 48 8d 0d 99 a0 08 00 lea 0x8a099(%rip),%rcx # 13c591 <__PRETTY_FUNCTION__.14720> 0.00 : b24f8: 48 8d 35 43 9f 08 00 lea 0x89f43(%rip),%rsi # 13c442 <__PRETTY_FUNCTION__.10792+0x1d> 0.00 : b24ff: 48 8d 3d 46 9f 08 00 lea 0x89f46(%rip),%rdi # 13c44c <__PRETTY_FUNCTION__.10792+0x27> 0.00 : b2506: ba 6a 05 00 00 mov $0x56a,%edx 0.00 : b250b: e8 10 94 f7 ff callq 2b920 <__assert_fail> 0.00 : b2510: 48 8d 0d 7a a0 08 00 lea 0x8a07a(%rip),%rcx # 13c591 <__PRETTY_FUNCTION__.14720> 0.00 : b2517: 48 8d 35 24 9f 08 00 lea 0x89f24(%rip),%rsi # 13c442 <__PRETTY_FUNCTION__.10792+0x1d> 0.00 : b251e: 48 8d 3d 56 9f 08 00 lea 0x89f56(%rip),%rdi # 13c47b <__PRETTY_FUNCTION__.10792+0x56> 0.00 : b2525: ba 8d 05 00 00 mov $0x58d,%edx 0.00 : b252a: e8 f1 93 f7 ff callq 2b920 <__assert_fail> 0.00 : b252f: 90 nop 0.00 : b2530: c7 43 04 01 00 00 00 movl $0x1,0x4(%rbx) 0.00 : b2537: 31 c0 xor %eax,%eax 0.00 : b2539: 44 89 22 mov %r12d,(%rdx) 0.00 : b253c: e9 9c fe ff ff jmpq b23dd 0.00 : b2541: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b2548: 48 8b 46 20 mov 0x20(%rsi),%rax 0.00 : b254c: 44 8b 60 38 mov 0x38(%rax),%r12d 0.00 : b2550: e9 17 ff ff ff jmpq b246c 0.00 : b2555: 0f 1f 00 nopl (%rax) 0.00 : b2558: 48 8b 46 20 mov 0x20(%rsi),%rax 0.00 : b255c: 8b 68 38 mov 0x38(%rax),%ebp 0.00 : b255f: e9 1c ff ff ff jmpq b2480 0.00 : b2564: 48 8d 0d 26 a0 08 00 lea 0x8a026(%rip),%rcx # 13c591 <__PRETTY_FUNCTION__.14720> 0.00 : b256b: 48 8d 35 d0 9e 08 00 lea 0x89ed0(%rip),%rsi # 13c442 <__PRETTY_FUNCTION__.10792+0x1d> 0.00 : b2572: 48 8d 3d f7 9e 08 00 lea 0x89ef7(%rip),%rdi # 13c470 <__PRETTY_FUNCTION__.10792+0x4b> 0.00 : b2579: ba 7b 05 00 00 mov $0x57b,%edx 0.00 : b257e: e8 9d 93 f7 ff callq 2b920 <__assert_fail> 0.00 : b2583: 48 8d 0d 07 a0 08 00 lea 0x8a007(%rip),%rcx # 13c591 <__PRETTY_FUNCTION__.14720> 0.00 : b258a: 48 8d 35 b1 9e 08 00 lea 0x89eb1(%rip),%rsi # 13c442 <__PRETTY_FUNCTION__.10792+0x1d> 0.00 : b2591: 48 8d 3d ce 9e 08 00 lea 0x89ece(%rip),%rdi # 13c466 <__PRETTY_FUNCTION__.10792+0x41> 0.00 : b2598: ba 7a 05 00 00 mov $0x57a,%edx 0.00 : b259d: e8 7e 93 f7 ff callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b3380 : 0.00 : b3380: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : b3385: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : b338a: 48 89 fd mov %rdi,%rbp 0.00 : b338d: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : b3392: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : b3397: 41 89 d4 mov %edx,%r12d 0.00 : b339a: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : b339f: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : b33a4: 48 83 ec 48 sub $0x48,%rsp 0.00 : b33a8: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : b33ad: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : b33b2: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : b33b6: 48 8b 5f 08 mov 0x8(%rdi),%rbx 0.00 : b33ba: 48 39 d8 cmp %rbx,%rax 0.00 : b33bd: 0f 83 f4 00 00 00 jae b34b7 0.00 : b33c3: 48 89 c2 mov %rax,%rdx 0.00 : b33c6: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : b33cb: 41 0f b6 cc movzbl %r12b,%ecx 0.00 : b33cf: 48 c1 e2 04 shl $0x4,%rdx 0.00 : b33d3: 48 03 55 00 add 0x0(%rbp),%rdx 0.00 : b33d7: 44 88 64 24 10 mov %r12b,0x10(%rsp) 0.00 : b33dc: 48 89 02 mov %rax,(%rdx) 0.00 : b33df: 48 8b 44 24 10 mov 0x10(%rsp),%rax ??:0 100.00 : b33e4: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : b33e8: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b33ec: 48 8b 55 00 mov 0x0(%rbp),%rdx 0.00 : b33f0: 48 c1 e0 04 shl $0x4,%rax 0.00 : b33f4: 81 64 02 08 ff 00 fc andl $0xfffc00ff,0x8(%rdx,%rax,1) 0.00 : b33fb: ff 0.00 : b33fc: 83 f9 05 cmp $0x5,%ecx 0.00 : b33ff: 48 8b 75 00 mov 0x0(%rbp),%rsi 0.00 : b3403: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b3407: 0f 84 9b 00 00 00 je b34a8 0.00 : b340d: 83 f9 06 cmp $0x6,%ecx 0.00 : b3410: 0f 94 c1 sete %cl 0.00 : b3413: 48 89 c2 mov %rax,%rdx 0.00 : b3416: c1 e1 04 shl $0x4,%ecx 0.00 : b3419: 48 c1 e2 04 shl $0x4,%rdx 0.00 : b341d: 0f b6 44 32 0a movzbl 0xa(%rdx,%rsi,1),%eax 0.00 : b3422: 83 e0 ef and $0xffffffef,%eax 0.00 : b3425: 09 c8 or %ecx,%eax 0.00 : b3427: 88 44 32 0a mov %al,0xa(%rdx,%rsi,1) 0.00 : b342b: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : b342f: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : b3433: c7 04 90 ff ff ff ff movl $0xffffffff,(%rax,%rdx,4) 0.00 : b343a: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b343e: 48 c1 e0 04 shl $0x4,%rax 0.00 : b3442: 48 03 45 28 add 0x28(%rbp),%rax 0.00 : b3446: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : b344d: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : b3454: 00 0.00 : b3455: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b3459: 48 c1 e0 04 shl $0x4,%rax 0.00 : b345d: 48 03 45 30 add 0x30(%rbp),%rax 0.00 : b3461: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : b3468: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : b346f: 00 0.00 : b3470: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b3474: 89 c2 mov %eax,%edx 0.00 : b3476: 48 83 c0 01 add $0x1,%rax 0.00 : b347a: 48 89 45 10 mov %rax,0x10(%rbp) 0.00 : b347e: 89 d0 mov %edx,%eax 0.00 : b3480: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 0.00 : b3485: 48 8b 6c 24 20 mov 0x20(%rsp),%rbp 0.00 : b348a: 4c 8b 64 24 28 mov 0x28(%rsp),%r12 0.00 : b348f: 4c 8b 6c 24 30 mov 0x30(%rsp),%r13 0.00 : b3494: 4c 8b 74 24 38 mov 0x38(%rsp),%r14 0.00 : b3499: 4c 8b 7c 24 40 mov 0x40(%rsp),%r15 0.00 : b349e: 48 83 c4 48 add $0x48,%rsp 0.00 : b34a2: c3 retq 0.00 : b34a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b34a8: 83 bd a4 00 00 00 01 cmpl $0x1,0xa4(%rbp) 0.00 : b34af: 0f 9f c1 setg %cl 0.00 : b34b2: e9 5c ff ff ff jmpq b3413 0.00 : b34b7: 48 8d 04 1b lea (%rbx,%rbx,1),%rax 0.00 : b34bb: 48 89 04 24 mov %rax,(%rsp) 0.00 : b34bf: 48 b8 ff ff ff ff ff movabs $0xfffffffffffffff,%rax 0.00 : b34c6: ff ff 0f 0.00 : b34c9: 48 39 04 24 cmp %rax,(%rsp) 0.00 : b34cd: 0f 87 90 00 00 00 ja b3563 0.00 : b34d3: 49 89 dd mov %rbx,%r13 0.00 : b34d6: 48 8b 3f mov (%rdi),%rdi 0.00 : b34d9: 49 c1 e5 05 shl $0x5,%r13 0.00 : b34dd: 4c 89 ee mov %r13,%rsi 0.00 : b34e0: e8 5b b3 f6 ff callq 1e840 0.00 : b34e5: 48 85 c0 test %rax,%rax 0.00 : b34e8: 74 79 je b3563 0.00 : b34ea: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : b34ee: 48 c1 e3 03 shl $0x3,%rbx 0.00 : b34f2: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : b34f6: 48 89 de mov %rbx,%rsi 0.00 : b34f9: e8 42 b3 f6 ff callq 1e840 0.00 : b34fe: 48 8b 7d 20 mov 0x20(%rbp),%rdi 0.00 : b3502: 48 89 de mov %rbx,%rsi 0.00 : b3505: 49 89 c7 mov %rax,%r15 0.00 : b3508: e8 33 b3 f6 ff callq 1e840 0.00 : b350d: 48 8b 7d 28 mov 0x28(%rbp),%rdi 0.00 : b3511: 4c 89 ee mov %r13,%rsi 0.00 : b3514: 49 89 c6 mov %rax,%r14 0.00 : b3517: e8 24 b3 f6 ff callq 1e840 0.00 : b351c: 48 8b 7d 30 mov 0x30(%rbp),%rdi 0.00 : b3520: 4c 89 ee mov %r13,%rsi 0.00 : b3523: 48 89 c3 mov %rax,%rbx 0.00 : b3526: e8 15 b3 f6 ff callq 1e840 0.00 : b352b: 4d 85 ff test %r15,%r15 0.00 : b352e: 74 33 je b3563 0.00 : b3530: 4d 85 f6 test %r14,%r14 0.00 : b3533: 74 2e je b3563 0.00 : b3535: 48 85 db test %rbx,%rbx 0.00 : b3538: 74 29 je b3563 0.00 : b353a: 48 85 c0 test %rax,%rax 0.00 : b353d: 0f 1f 00 nopl (%rax) 0.00 : b3540: 74 21 je b3563 0.00 : b3542: 4c 89 7d 18 mov %r15,0x18(%rbp) 0.00 : b3546: 4c 89 75 20 mov %r14,0x20(%rbp) 0.00 : b354a: 48 89 5d 28 mov %rbx,0x28(%rbp) 0.00 : b354e: 48 89 45 30 mov %rax,0x30(%rbp) 0.00 : b3552: 48 8b 04 24 mov (%rsp),%rax 0.00 : b3556: 48 89 45 08 mov %rax,0x8(%rbp) 0.00 : b355a: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : b355e: e9 60 fe ff ff jmpq b33c3 0.00 : b3563: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : b3568: e9 11 ff ff ff jmpq b347e Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b50e0 : 0.00 : b50e0: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : b50e5: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : b50ea: 89 f5 mov %esi,%ebp 0.00 : b50ec: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : b50f1: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : b50f6: 48 89 fb mov %rdi,%rbx 0.00 : b50f9: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : b50fe: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : b5103: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : b510a: 2b 6f 28 sub 0x28(%rdi),%ebp 0.00 : b510d: 41 89 f5 mov %esi,%r13d 0.00 : b5110: 41 89 d6 mov %edx,%r14d 0.00 : b5113: 0f 88 e9 00 00 00 js b5202 0.00 : b5119: 85 ed test %ebp,%ebp 0.00 : b511b: 74 63 je b5180 0.00 : b511d: 3b 6b 30 cmp 0x30(%rbx),%ebp 0.00 : b5120: 0f 8d 3f 01 00 00 jge b5265 0.00 : b5126: 80 7b 64 00 cmpb $0x0,0x64(%rbx) 0.00 : b512a: 0f 85 77 02 00 00 jne b53a7 0.00 : b5130: 8d 75 ff lea -0x1(%rbp),%esi 0.00 : b5133: 44 89 f2 mov %r14d,%edx 0.00 : b5136: 48 89 df mov %rbx,%rdi 0.00 : b5139: e8 c2 ec ff ff callq b3e00 0.00 : b513e: 83 7b 68 01 cmpl $0x1,0x68(%rbx) 0.00 : b5142: 89 43 4c mov %eax,0x4c(%rbx) 0.00 : b5145: 7e 1c jle b5163 0.00 : b5147: 8b 53 2c mov 0x2c(%rbx),%edx 0.00 : b514a: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : b514e: 48 63 f5 movslq %ebp,%rsi 0.00 : b5151: 29 ea sub %ebp,%edx 0.00 : b5153: 48 8d 34 b7 lea (%rdi,%rsi,4),%rsi 0.00 : b5157: 48 63 d2 movslq %edx,%rdx 0.00 : b515a: 48 c1 e2 02 shl $0x2,%rdx 0.00 : b515e: e8 3d e1 fc ff callq 832a0 <__GI_memmove> 0.00 : b5163: 80 7b 63 00 cmpb $0x0,0x63(%rbx) 0.00 : b5167: 0f 85 65 03 00 00 jne b54d2 0.00 : b516d: 29 6b 2c sub %ebp,0x2c(%rbx) 0.00 : b5170: 29 6b 30 sub %ebp,0x30(%rbx) 0.00 : b5173: 80 7b 63 00 cmpb $0x0,0x63(%rbx) 0.00 : b5177: 75 07 jne b5180 0.00 : b5179: 48 63 c5 movslq %ebp,%rax 0.00 : b517c: 48 01 43 08 add %rax,0x8(%rbx) 0.00 : b5180: 29 6b 40 sub %ebp,0x40(%rbx) 0.00 : b5183: 29 6b 48 sub %ebp,0x48(%rbx) 0.00 : b5186: 83 7b 68 01 cmpl $0x1,0x68(%rbx) 0.00 : b518a: 44 89 6b 28 mov %r13d,0x28(%rbx) 0.00 : b518e: 7e 58 jle b51e8 0.00 : b5190: 80 7b 60 00 cmpb $0x0,0x60(%rbx) 0.00 : b5194: 75 3a jne b51d0 0.00 : b5196: 48 89 df mov %rbx,%rdi 0.00 : b5199: e8 72 ea ff ff callq b3c10 0.00 : b519e: c7 43 38 00 00 00 00 movl $0x0,0x38(%rbx) 0.00 : b51a5: 31 c0 xor %eax,%eax 0.00 : b51a7: 48 8b 5c 24 58 mov 0x58(%rsp),%rbx 0.00 : b51ac: 48 8b 6c 24 60 mov 0x60(%rsp),%rbp 0.00 : b51b1: 4c 8b 64 24 68 mov 0x68(%rsp),%r12 0.00 : b51b6: 4c 8b 6c 24 70 mov 0x70(%rsp),%r13 0.00 : b51bb: 4c 8b 74 24 78 mov 0x78(%rsp),%r14 0.00 : b51c0: 4c 8b bc 24 80 00 00 mov 0x80(%rsp),%r15 0.00 : b51c7: 00 0.00 : b51c8: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : b51cf: c3 retq 0.00 : b51d0: 48 89 df mov %rbx,%rdi 0.00 : b51d3: e8 68 f7 ff ff callq b4940 0.00 : b51d8: 85 c0 test %eax,%eax 0.00 : b51da: 74 c2 je b519e 0.00 : b51dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b51e0: eb c5 jmp b51a7 0.00 : b51e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b51e8: 80 7b 63 00 cmpb $0x0,0x63(%rbx) 0.00 : b51ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b51f0: 0f 85 2c 05 00 00 jne b5722 0.00 : b51f6: 8b 43 40 mov 0x40(%rbx),%eax 0.00 : b51f9: 89 43 2c mov %eax,0x2c(%rbx) 0.00 : b51fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b5200: eb 9c jmp b519e 0.00 : b5202: 83 7f 68 01 cmpl $0x1,0x68(%rdi) 0.00 : b5206: 7e 08 jle b5210 0.00 : b5208: 48 c7 47 20 00 00 00 movq $0x0,0x20(%rdi) 0.00 : b520f: 00 0.00 : b5210: 8b 43 3c mov 0x3c(%rbx),%eax 0.00 : b5213: c7 43 2c 00 00 00 00 movl $0x0,0x2c(%rbx) 0.00 : b521a: 44 89 ed mov %r13d,%ebp 0.00 : b521d: c7 43 28 00 00 00 00 movl $0x0,0x28(%rbx) 0.00 : b5224: c7 43 30 00 00 00 00 movl $0x0,0x30(%rbx) 0.00 : b522b: c6 43 64 00 movb $0x0,0x64(%rbx) 0.00 : b522f: 89 43 40 mov %eax,0x40(%rbx) 0.00 : b5232: 8b 43 44 mov 0x44(%rbx),%eax 0.00 : b5235: 89 43 48 mov %eax,0x48(%rbx) 0.00 : b5238: 44 89 f0 mov %r14d,%eax 0.00 : b523b: 83 e0 01 and $0x1,%eax 0.00 : b523e: 83 f8 01 cmp $0x1,%eax 0.00 : b5241: 19 c0 sbb %eax,%eax 0.00 : b5243: 83 e0 02 and $0x2,%eax 0.00 : b5246: 83 c0 04 add $0x4,%eax 0.00 : b5249: 80 7b 63 00 cmpb $0x0,0x63(%rbx) 0.00 : b524d: 89 43 4c mov %eax,0x4c(%rbx) 0.00 : b5250: 0f 85 c3 fe ff ff jne b5119 0.00 : b5256: 48 8b 03 mov (%rbx),%rax 0.00 : b5259: 44 89 ed mov %r13d,%ebp 0.00 : b525c: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : b5260: e9 b4 fe ff ff jmpq b5119 0.00 : b5265: 80 7b 64 00 cmpb $0x0,0x64(%rbx) 0.00 : b5269: 8b 53 2c mov 0x2c(%rbx),%edx 0.00 : b526c: 89 54 24 2c mov %edx,0x2c(%rsp) 0.00 : b5270: 0f 85 33 05 00 00 jne b57a9 0.00 : b5276: 8b 73 68 mov 0x68(%rbx),%esi 0.00 : b5279: c7 43 2c 00 00 00 00 movl $0x0,0x2c(%rbx) 0.00 : b5280: 83 fe 01 cmp $0x1,%esi 0.00 : b5283: 0f 8e bc 03 00 00 jle b5645 0.00 : b5289: 80 7b 61 00 cmpb $0x0,0x61(%rbx) 0.00 : b528d: 0f 84 aa 03 00 00 je b563d ??:0 100.00 : b5293: 8b 7b 28 mov 0x28(%rbx),%edi 0.00 : b5296: 48 8b 13 mov (%rbx),%rdx 0.00 : b5299: 4c 63 cd movslq %ebp,%r9 0.00 : b529c: 48 63 c7 movslq %edi,%rax 0.00 : b529f: 4c 8d 3c 02 lea (%rdx,%rax,1),%r15 0.00 : b52a3: 4f 8d 64 0f ff lea -0x1(%r15,%r9,1),%r12 0.00 : b52a8: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : b52ad: f6 c1 80 test $0x80,%cl 0.00 : b52b0: 0f 84 30 04 00 00 je b56e6 0.00 : b52b6: 89 e8 mov %ebp,%eax 0.00 : b52b8: 29 f0 sub %esi,%eax 0.00 : b52ba: 48 98 cltq 0.00 : b52bc: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : b52c0: 48 39 c2 cmp %rax,%rdx 0.00 : b52c3: 48 0f 42 d0 cmovb %rax,%rdx 0.00 : b52c7: 49 39 d4 cmp %rdx,%r12 0.00 : b52ca: 72 30 jb b52fc 0.00 : b52cc: 81 e1 c0 00 00 00 and $0xc0,%ecx 0.00 : b52d2: 83 c1 80 add $0xffffff80,%ecx 0.00 : b52d5: 74 1c je b52f3 0.00 : b52d7: e9 e8 02 00 00 jmpq b55c4 0.00 : b52dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b52e0: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : b52e5: 25 c0 00 00 00 and $0xc0,%eax 0.00 : b52ea: 83 c0 80 add $0xffffff80,%eax 0.00 : b52ed: 0f 85 d1 02 00 00 jne b55c4 0.00 : b52f3: 49 83 ec 01 sub $0x1,%r12 0.00 : b52f7: 49 39 d4 cmp %rdx,%r12 0.00 : b52fa: 73 e4 jae b52e0 0.00 : b52fc: 44 8b 7b 30 mov 0x30(%rbx),%r15d 0.00 : b5300: c7 44 24 4c ff ff ff movl $0xffffffff,0x4c(%rsp) 0.00 : b5307: ff 0.00 : b5308: 41 01 ff add %edi,%r15d 0.00 : b530b: 45 39 fd cmp %r15d,%r13d 0.00 : b530e: 0f 8e 89 04 00 00 jle b579d 0.00 : b5314: 48 8d 53 20 lea 0x20(%rbx),%rdx 0.00 : b5318: 48 8d 44 24 4c lea 0x4c(%rsp),%rax 0.00 : b531d: 48 89 54 24 38 mov %rdx,0x38(%rsp) 0.00 : b5322: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : b5327: eb 23 jmp b534c 0.00 : b5329: c7 44 24 4c 00 00 00 movl $0x0,0x4c(%rsp) 0.00 : b5330: 00 0.00 : b5331: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : b5336: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b533b: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : b533f: 46 8d 3c 39 lea (%rcx,%r15,1),%r15d 0.00 : b5343: 45 39 fd cmp %r15d,%r13d 0.00 : b5346: 0f 8e 5b 03 00 00 jle b56a7 0.00 : b534c: 49 63 c7 movslq %r15d,%rax 0.00 : b534f: 44 8b 63 3c mov 0x3c(%rbx),%r12d 0.00 : b5353: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : b5357: 48 89 c6 mov %rax,%rsi 0.00 : b535a: 48 03 33 add (%rbx),%rsi 0.00 : b535d: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : b5362: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi 0.00 : b5367: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : b536c: 45 29 fc sub %r15d,%r12d 0.00 : b536f: 48 89 54 24 20 mov %rdx,0x20(%rsp) 0.00 : b5374: 49 63 d4 movslq %r12d,%rdx 0.00 : b5377: e8 14 7a fd ff callq 8cd90 <__mbrtowc> 0.00 : b537c: 48 89 c2 mov %rax,%rdx 0.00 : b537f: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : b5383: 89 d1 mov %edx,%ecx 0.00 : b5385: 48 83 f8 fc cmp $0xfffffffffffffffc,%rax 0.00 : b5389: 76 b4 jbe b533f 0.00 : b538b: 48 85 d2 test %rdx,%rdx 0.00 : b538e: 74 99 je b5329 0.00 : b5390: 45 85 e4 test %r12d,%r12d 0.00 : b5393: 74 94 je b5329 0.00 : b5395: 48 8b 03 mov (%rbx),%rax 0.00 : b5398: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : b539d: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : b53a1: 89 44 24 4c mov %eax,0x4c(%rsp) 0.00 : b53a5: eb 8a jmp b5331 0.00 : b53a7: 44 8b 7b 2c mov 0x2c(%rbx),%r15d 0.00 : b53ab: 4c 8b 43 18 mov 0x18(%rbx),%r8 0.00 : b53af: 31 c9 xor %ecx,%ecx 0.00 : b53b1: 44 89 fe mov %r15d,%esi 0.00 : b53b4: eb 10 jmp b53c6 0.00 : b53b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b53bd: 00 00 00 0.00 : b53c0: 89 d6 mov %edx,%esi 0.00 : b53c2: 39 f1 cmp %esi,%ecx 0.00 : b53c4: 7d 21 jge b53e7 0.00 : b53c6: 8d 04 0e lea (%rsi,%rcx,1),%eax 0.00 : b53c9: 89 c2 mov %eax,%edx 0.00 : b53cb: c1 ea 1f shr $0x1f,%edx 0.00 : b53ce: 01 c2 add %eax,%edx 0.00 : b53d0: d1 fa sar %edx 0.00 : b53d2: 48 63 c2 movslq %edx,%rax 0.00 : b53d5: 41 89 d4 mov %edx,%r12d 0.00 : b53d8: 41 8b 3c 80 mov (%r8,%rax,4),%edi 0.00 : b53dc: 39 fd cmp %edi,%ebp 0.00 : b53de: 7c e0 jl b53c0 0.00 : b53e0: 7e 11 jle b53f3 0.00 : b53e2: 8d 4a 01 lea 0x1(%rdx),%ecx 0.00 : b53e5: eb db jmp b53c2 0.00 : b53e7: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : b53ea: 39 fd cmp %edi,%ebp 0.00 : b53ec: 41 89 d4 mov %edx,%r12d 0.00 : b53ef: 44 0f 4f e0 cmovg %eax,%r12d 0.00 : b53f3: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : b53f8: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : b53fd: 44 89 f2 mov %r14d,%edx 0.00 : b5400: 48 89 df mov %rbx,%rdi 0.00 : b5403: 89 44 24 28 mov %eax,0x28(%rsp) 0.00 : b5407: 89 c6 mov %eax,%esi 0.00 : b5409: e8 f2 e9 ff ff callq b3e00 0.00 : b540e: 41 39 ef cmp %ebp,%r15d 0.00 : b5411: 89 43 4c mov %eax,0x4c(%rbx) 0.00 : b5414: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : b5419: 7e 09 jle b5424 0.00 : b541b: 41 39 ec cmp %ebp,%r12d 0.00 : b541e: 0f 84 18 01 00 00 je b553c 0.00 : b5424: 89 e8 mov %ebp,%eax 0.00 : b5426: c6 43 64 00 movb $0x0,0x64(%rbx) 0.00 : b542a: 44 29 e8 sub %r13d,%eax 0.00 : b542d: 03 43 3c add 0x3c(%rbx),%eax 0.00 : b5430: 89 43 40 mov %eax,0x40(%rbx) 0.00 : b5433: 89 e8 mov %ebp,%eax 0.00 : b5435: 44 29 e8 sub %r13d,%eax 0.00 : b5438: 03 43 44 add 0x44(%rbx),%eax 0.00 : b543b: 45 85 e4 test %r12d,%r12d 0.00 : b543e: 89 43 48 mov %eax,0x48(%rbx) 0.00 : b5441: 7e 2d jle b5470 0.00 : b5443: 49 63 c4 movslq %r12d,%rax 0.00 : b5446: 41 8b 4c 80 fc mov -0x4(%r8,%rax,4),%ecx 0.00 : b544b: 39 e9 cmp %ebp,%ecx 0.00 : b544d: 75 21 jne b5470 0.00 : b544f: 48 63 44 24 28 movslq 0x28(%rsp),%rax 0.00 : b5454: 49 8d 54 80 fc lea -0x4(%r8,%rax,4),%rdx 0.00 : b5459: eb 0f jmp b546a 0.00 : b545b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b5460: 8b 02 mov (%rdx),%eax 0.00 : b5462: 48 83 ea 04 sub $0x4,%rdx 0.00 : b5466: 39 c8 cmp %ecx,%eax 0.00 : b5468: 75 06 jne b5470 0.00 : b546a: 41 83 ec 01 sub $0x1,%r12d 0.00 : b546e: 75 f0 jne b5460 0.00 : b5470: 45 39 e7 cmp %r12d,%r15d 0.00 : b5473: 7e 46 jle b54bb 0.00 : b5475: 48 8b 4b 10 mov 0x10(%rbx),%rcx 0.00 : b5479: 49 63 c4 movslq %r12d,%rax 0.00 : b547c: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : b5483: 00 0.00 : b5484: 83 3c 81 ff cmpl $0xffffffff,(%rcx,%rax,4) 0.00 : b5488: 75 70 jne b54fa 0.00 : b548a: 41 8d 44 24 01 lea 0x1(%r12),%eax 0.00 : b548f: 48 98 cltq 0.00 : b5491: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : b5498: 00 0.00 : b5499: 48 01 d1 add %rdx,%rcx 0.00 : b549c: eb 14 jmp b54b2 0.00 : b549e: 66 90 xchg %ax,%ax 0.00 : b54a0: 8b 01 mov (%rcx),%eax 0.00 : b54a2: 48 83 c1 04 add $0x4,%rcx 0.00 : b54a6: 48 8d 72 04 lea 0x4(%rdx),%rsi 0.00 : b54aa: 83 c0 01 add $0x1,%eax 0.00 : b54ad: 75 4b jne b54fa 0.00 : b54af: 48 89 f2 mov %rsi,%rdx 0.00 : b54b2: 41 83 c4 01 add $0x1,%r12d 0.00 : b54b6: 45 39 fc cmp %r15d,%r12d 0.00 : b54b9: 7c e5 jl b54a0 0.00 : b54bb: 45 39 e7 cmp %r12d,%r15d 0.00 : b54be: 75 2f jne b54ef 0.00 : b54c0: c7 43 2c 00 00 00 00 movl $0x0,0x2c(%rbx) 0.00 : b54c7: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : b54ca: 89 43 30 mov %eax,0x30(%rbx) 0.00 : b54cd: e9 a1 fc ff ff jmpq b5173 0.00 : b54d2: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b54d6: 8b 53 2c mov 0x2c(%rbx),%edx 0.00 : b54d9: 48 63 f5 movslq %ebp,%rsi 0.00 : b54dc: 29 ea sub %ebp,%edx 0.00 : b54de: 48 8d 34 37 lea (%rdi,%rsi,1),%rsi 0.00 : b54e2: 48 63 d2 movslq %edx,%rdx 0.00 : b54e5: e8 b6 dd fc ff callq 832a0 <__GI_memmove> 0.00 : b54ea: e9 7e fc ff ff jmpq b516d 0.00 : b54ef: 49 63 c4 movslq %r12d,%rax 0.00 : b54f2: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : b54f9: 00 0.00 : b54fa: 41 8b 04 10 mov (%r8,%rdx,1),%eax 0.00 : b54fe: 29 e8 sub %ebp,%eax 0.00 : b5500: 83 f8 00 cmp $0x0,%eax 0.00 : b5503: 89 43 2c mov %eax,0x2c(%rbx) 0.00 : b5506: 74 bf je b54c7 0.00 : b5508: 7e 1f jle b5529 0.00 : b550a: 31 c9 xor %ecx,%ecx 0.00 : b550c: 31 d2 xor %edx,%edx 0.00 : b550e: 66 90 xchg %ax,%ax 0.00 : b5510: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b5514: 83 c1 01 add $0x1,%ecx 0.00 : b5517: c7 04 10 ff ff ff ff movl $0xffffffff,(%rax,%rdx,1) 0.00 : b551e: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : b5521: 48 83 c2 04 add $0x4,%rdx 0.00 : b5525: 39 c8 cmp %ecx,%eax 0.00 : b5527: 7f e7 jg b5510 0.00 : b5529: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b552d: 48 63 d0 movslq %eax,%rdx 0.00 : b5530: be ff 00 00 00 mov $0xff,%esi 0.00 : b5535: e8 36 df fc ff callq 83470 <__GI_memset> 0.00 : b553a: eb 8b jmp b54c7 0.00 : b553c: 4c 63 f5 movslq %ebp,%r14 0.00 : b553f: 47 8b 0c b0 mov (%r8,%r14,4),%r9d 0.00 : b5543: 41 39 e9 cmp %ebp,%r9d 0.00 : b5546: 0f 85 d8 fe ff ff jne b5424 0.00 : b554c: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : b5550: 4e 8d 24 b5 00 00 00 lea 0x0(,%r14,4),%r12 0.00 : b5557: 00 0.00 : b5558: 41 29 ef sub %ebp,%r15d 0.00 : b555b: 49 63 d7 movslq %r15d,%rdx 0.00 : b555e: 44 89 4c 24 08 mov %r9d,0x8(%rsp) 0.00 : b5563: 48 c1 e2 02 shl $0x2,%rdx 0.00 : b5567: 4a 8d 34 27 lea (%rdi,%r12,1),%rsi 0.00 : b556b: e8 30 dd fc ff callq 832a0 <__GI_memmove> 0.00 : b5570: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b5574: 8b 53 2c mov 0x2c(%rbx),%edx 0.00 : b5577: 4a 8d 34 37 lea (%rdi,%r14,1),%rsi 0.00 : b557b: 29 ea sub %ebp,%edx 0.00 : b557d: 48 63 d2 movslq %edx,%rdx 0.00 : b5580: e8 1b dd fc ff callq 832a0 <__GI_memmove> 0.00 : b5585: 29 6b 2c sub %ebp,0x2c(%rbx) 0.00 : b5588: 29 6b 30 sub %ebp,0x30(%rbx) 0.00 : b558b: 44 8b 73 2c mov 0x2c(%rbx),%r14d 0.00 : b558f: 44 8b 4c 24 08 mov 0x8(%rsp),%r9d 0.00 : b5594: 45 85 f6 test %r14d,%r14d 0.00 : b5597: 0f 8e d6 fb ff ff jle b5173 0.00 : b559d: 31 f6 xor %esi,%esi 0.00 : b559f: 31 c9 xor %ecx,%ecx 0.00 : b55a1: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : b55a5: 83 c6 01 add $0x1,%esi 0.00 : b55a8: 42 8b 04 22 mov (%rdx,%r12,1),%eax 0.00 : b55ac: 49 83 c4 04 add $0x4,%r12 0.00 : b55b0: 44 29 c8 sub %r9d,%eax 0.00 : b55b3: 89 04 0a mov %eax,(%rdx,%rcx,1) 0.00 : b55b6: 48 83 c1 04 add $0x4,%rcx 0.00 : b55ba: 39 73 2c cmp %esi,0x2c(%rbx) 0.00 : b55bd: 7f e2 jg b55a1 0.00 : b55bf: e9 af fb ff ff jmpq b5173 0.00 : b55c4: 48 63 53 40 movslq 0x40(%rbx),%rdx 0.00 : b55c8: 48 8d 44 24 4c lea 0x4c(%rsp),%rax 0.00 : b55cd: 48 8d 4c 24 40 lea 0x40(%rsp),%rcx 0.00 : b55d2: 4c 89 e6 mov %r12,%rsi 0.00 : b55d5: 4c 89 4c 24 08 mov %r9,0x8(%rsp) 0.00 : b55da: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : b55e1: 00 00 0.00 : b55e3: 48 89 c7 mov %rax,%rdi 0.00 : b55e6: 44 89 64 24 10 mov %r12d,0x10(%rsp) 0.00 : b55eb: 49 8d 14 17 lea (%r15,%rdx,1),%rdx 0.00 : b55ef: 44 29 e2 sub %r12d,%edx 0.00 : b55f2: 48 63 d2 movslq %edx,%rdx 0.00 : b55f5: e8 96 77 fd ff callq 8cd90 <__mbrtowc> 0.00 : b55fa: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 0.00 : b55ff: 48 89 c1 mov %rax,%rcx 0.00 : b5602: 44 8b 44 24 10 mov 0x10(%rsp),%r8d 0.00 : b5607: 4b 8d 14 0f lea (%r15,%r9,1),%rdx 0.00 : b560b: 48 89 d0 mov %rdx,%rax 0.00 : b560e: 4c 29 e0 sub %r12,%rax 0.00 : b5611: 48 39 c1 cmp %rax,%rcx 0.00 : b5614: 72 27 jb b563d 0.00 : b5616: 48 83 f9 fd cmp $0xfffffffffffffffd,%rcx 0.00 : b561a: 77 21 ja b563d 0.00 : b561c: 44 8b 64 24 4c mov 0x4c(%rsp),%r12d 0.00 : b5621: 41 29 d0 sub %edx,%r8d 0.00 : b5624: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : b562b: 00 0.00 : b562c: 41 8d 04 08 lea (%r8,%rcx,1),%eax 0.00 : b5630: 41 83 fc ff cmp $0xffffffff,%r12d 0.00 : b5634: 89 43 2c mov %eax,0x2c(%rbx) 0.00 : b5637: 0f 85 c1 00 00 00 jne b56fe 0.00 : b563d: 8b 7b 28 mov 0x28(%rbx),%edi 0.00 : b5640: e9 b7 fc ff ff jmpq b52fc 0.00 : b5645: 89 e8 mov %ebp,%eax 0.00 : b5647: 03 43 28 add 0x28(%rbx),%eax 0.00 : b564a: 48 8b 13 mov (%rbx),%rdx 0.00 : b564d: 48 98 cltq 0.00 : b564f: 0f b6 74 02 ff movzbl -0x1(%rdx,%rax,1),%esi 0.00 : b5654: 48 8b 53 50 mov 0x50(%rbx),%rdx 0.00 : b5658: c7 43 30 00 00 00 00 movl $0x0,0x30(%rbx) 0.00 : b565f: 48 85 d2 test %rdx,%rdx 0.00 : b5662: 74 07 je b566b 0.00 : b5664: 48 63 c6 movslq %esi,%rax 0.00 : b5667: 0f b6 34 02 movzbl (%rdx,%rax,1),%esi 0.00 : b566b: 48 8b 53 58 mov 0x58(%rbx),%rdx 0.00 : b566f: 48 63 c6 movslq %esi,%rax 0.00 : b5672: 89 f1 mov %esi,%ecx 0.00 : b5674: 48 c1 e8 06 shr $0x6,%rax 0.00 : b5678: 83 e1 3f and $0x3f,%ecx 0.00 : b567b: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : b567f: ba 01 00 00 00 mov $0x1,%edx 0.00 : b5684: 48 d3 e8 shr %cl,%rax 0.00 : b5687: a8 01 test $0x1,%al 0.00 : b5689: 75 07 jne b5692 0.00 : b568b: 83 fe 0a cmp $0xa,%esi 0.00 : b568e: 74 0a je b569a 0.00 : b5690: 31 d2 xor %edx,%edx 0.00 : b5692: 89 53 4c mov %edx,0x4c(%rbx) 0.00 : b5695: e9 d9 fa ff ff jmpq b5173 0.00 : b569a: 80 7b 65 00 cmpb $0x0,0x65(%rbx) 0.00 : b569e: ba 02 00 00 00 mov $0x2,%edx 0.00 : b56a3: 75 ed jne b5692 0.00 : b56a5: eb e9 jmp b5690 0.00 : b56a7: 44 8b 64 24 4c mov 0x4c(%rsp),%r12d 0.00 : b56ac: 45 29 ef sub %r13d,%r15d 0.00 : b56af: 44 89 7b 2c mov %r15d,0x2c(%rbx) 0.00 : b56b3: 41 83 fc ff cmp $0xffffffff,%r12d 0.00 : b56b7: 75 45 jne b56fe 0.00 : b56b9: 8b 74 24 2c mov 0x2c(%rsp),%esi 0.00 : b56bd: 44 89 f2 mov %r14d,%edx 0.00 : b56c0: 48 89 df mov %rbx,%rdi 0.00 : b56c3: 83 ee 01 sub $0x1,%esi 0.00 : b56c6: e8 35 e7 ff ff callq b3e00 0.00 : b56cb: 89 43 4c mov %eax,0x4c(%rbx) 0.00 : b56ce: 44 8b 7b 2c mov 0x2c(%rbx),%r15d 0.00 : b56d2: 31 c0 xor %eax,%eax 0.00 : b56d4: 41 83 ff 00 cmp $0x0,%r15d 0.00 : b56d8: 0f 85 ea 00 00 00 jne b57c8 0.00 : b56de: 89 43 30 mov %eax,0x30(%rbx) 0.00 : b56e1: e9 8d fa ff ff jmpq b5173 0.00 : b56e6: 48 83 7b 50 00 cmpq $0x0,0x50(%rbx) 0.00 : b56eb: 0f 85 c5 fb ff ff jne b52b6 0.00 : b56f1: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : b56f8: 00 0.00 : b56f9: 45 0f b6 24 24 movzbl (%r12),%r12d 0.00 : b56fe: 80 7b 66 00 cmpb $0x0,0x66(%rbx) 0.00 : b5702: 0f 85 07 01 00 00 jne b580f 0.00 : b5708: 41 83 fc 0a cmp $0xa,%r12d 0.00 : b570c: 74 07 je b5715 0.00 : b570e: 31 c0 xor %eax,%eax 0.00 : b5710: 89 43 4c mov %eax,0x4c(%rbx) 0.00 : b5713: eb b9 jmp b56ce 0.00 : b5715: 80 7b 65 00 cmpb $0x0,0x65(%rbx) 0.00 : b5719: b8 02 00 00 00 mov $0x2,%eax 0.00 : b571e: 75 f0 jne b5710 0.00 : b5720: eb ec jmp b570e 0.00 : b5722: 80 7b 60 00 cmpb $0x0,0x60(%rbx) 0.00 : b5726: 75 68 jne b5790 0.00 : b5728: 4c 8b 43 50 mov 0x50(%rbx),%r8 0.00 : b572c: 4d 85 c0 test %r8,%r8 0.00 : b572f: 90 nop 0.00 : b5730: 0f 84 68 fa ff ff je b519e 0.00 : b5736: 8b 43 34 mov 0x34(%rbx),%eax 0.00 : b5739: 39 43 40 cmp %eax,0x40(%rbx) 0.00 : b573c: 41 89 c1 mov %eax,%r9d 0.00 : b573f: 44 0f 4e 4b 40 cmovle 0x40(%rbx),%r9d 0.00 : b5744: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : b5747: 41 39 c1 cmp %eax,%r9d 0.00 : b574a: 7e 39 jle b5785 0.00 : b574c: 48 63 f8 movslq %eax,%rdi 0.00 : b574f: 89 c6 mov %eax,%esi 0.00 : b5751: eb 09 jmp b575c 0.00 : b5753: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b5758: 4c 8b 43 50 mov 0x50(%rbx),%r8 0.00 : b575c: 89 f0 mov %esi,%eax 0.00 : b575e: 03 43 28 add 0x28(%rbx),%eax 0.00 : b5761: 48 8b 13 mov (%rbx),%rdx 0.00 : b5764: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : b5768: 83 c6 01 add $0x1,%esi 0.00 : b576b: 48 98 cltq 0.00 : b576d: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : b5771: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax 0.00 : b5776: 88 04 39 mov %al,(%rcx,%rdi,1) 0.00 : b5779: 48 83 c7 01 add $0x1,%rdi 0.00 : b577d: 41 39 f1 cmp %esi,%r9d 0.00 : b5780: 7f d6 jg b5758 0.00 : b5782: 44 89 c8 mov %r9d,%eax 0.00 : b5785: 89 43 2c mov %eax,0x2c(%rbx) 0.00 : b5788: 89 43 30 mov %eax,0x30(%rbx) 0.00 : b578b: e9 0e fa ff ff jmpq b519e 0.00 : b5790: 48 89 df mov %rbx,%rdi 0.00 : b5793: e8 38 f8 ff ff callq b4fd0 0.00 : b5798: e9 01 fa ff ff jmpq b519e 0.00 : b579d: 45 29 ef sub %r13d,%r15d 0.00 : b57a0: 44 89 7b 2c mov %r15d,0x2c(%rbx) 0.00 : b57a4: e9 10 ff ff ff jmpq b56b9 0.00 : b57a9: 89 e8 mov %ebp,%eax 0.00 : b57ab: c6 43 64 00 movb $0x0,0x64(%rbx) 0.00 : b57af: 44 29 e8 sub %r13d,%eax 0.00 : b57b2: 03 43 3c add 0x3c(%rbx),%eax 0.00 : b57b5: 89 43 40 mov %eax,0x40(%rbx) 0.00 : b57b8: 89 e8 mov %ebp,%eax 0.00 : b57ba: 44 29 e8 sub %r13d,%eax 0.00 : b57bd: 03 43 44 add 0x44(%rbx),%eax 0.00 : b57c0: 89 43 48 mov %eax,0x48(%rbx) 0.00 : b57c3: e9 ae fa ff ff jmpq b5276 0.00 : b57c8: 7e 1f jle b57e9 0.00 : b57ca: 31 c9 xor %ecx,%ecx 0.00 : b57cc: 31 d2 xor %edx,%edx 0.00 : b57ce: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b57d2: 83 c1 01 add $0x1,%ecx 0.00 : b57d5: c7 04 10 ff ff ff ff movl $0xffffffff,(%rax,%rdx,1) 0.00 : b57dc: 44 8b 7b 2c mov 0x2c(%rbx),%r15d 0.00 : b57e0: 48 83 c2 04 add $0x4,%rdx 0.00 : b57e4: 41 39 cf cmp %ecx,%r15d 0.00 : b57e7: 7f e5 jg b57ce 0.00 : b57e9: 80 7b 63 00 cmpb $0x0,0x63(%rbx) 0.00 : b57ed: 44 89 f8 mov %r15d,%eax 0.00 : b57f0: 0f 84 e8 fe ff ff je b56de 0.00 : b57f6: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : b57fa: 49 63 d7 movslq %r15d,%rdx 0.00 : b57fd: be ff 00 00 00 mov $0xff,%esi 0.00 : b5802: e8 69 dc fc ff callq 83470 <__GI_memset> 0.00 : b5807: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : b580a: e9 cf fe ff ff jmpq b56de 0.00 : b580f: 44 89 e7 mov %r12d,%edi 0.00 : b5812: e8 89 85 02 00 callq ddda0 0.00 : b5817: 85 c0 test %eax,%eax 0.00 : b5819: 75 0b jne b5826 0.00 : b581b: 41 83 fc 5f cmp $0x5f,%r12d 0.00 : b581f: 90 nop 0.00 : b5820: 0f 85 e2 fe ff ff jne b5708 0.00 : b5826: b8 01 00 00 00 mov $0x1,%eax 0.00 : b582b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b5830: e9 db fe ff ff jmpq b5710 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000b59d0 : 0.00 : b59d0: 41 57 push %r15 0.00 : b59d2: 41 56 push %r14 0.00 : b59d4: 49 89 d6 mov %rdx,%r14 0.00 : b59d7: 41 55 push %r13 0.00 : b59d9: 41 54 push %r12 0.00 : b59db: 55 push %rbp 0.00 : b59dc: 53 push %rbx 0.00 : b59dd: 48 83 ec 38 sub $0x38,%rsp 0.00 : b59e1: 48 89 7c 24 30 mov %rdi,0x30(%rsp) 0.00 : b59e6: 48 89 74 24 28 mov %rsi,0x28(%rsp) 0.00 : b59eb: 89 4c 24 24 mov %ecx,0x24(%rsp) 0.00 : b59ef: 44 8b 4a 04 mov 0x4(%rdx),%r9d 0.00 : b59f3: 45 85 c9 test %r9d,%r9d 0.00 : b59f6: 0f 84 40 03 00 00 je b5d3c 0.00 : b59fc: 44 8b 7c 24 24 mov 0x24(%rsp),%r15d 0.00 : b5a01: 45 01 cf add %r9d,%r15d 0.00 : b5a04: 45 85 c9 test %r9d,%r9d 0.00 : b5a07: 7e 14 jle b5a1d 0.00 : b5a09: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : b5a0d: 31 c0 xor %eax,%eax 0.00 : b5a0f: 90 nop ??:0 100.00 : b5a10: 44 03 3c 82 add (%rdx,%rax,4),%r15d 0.00 : b5a14: 48 83 c0 01 add $0x1,%rax 0.00 : b5a18: 41 39 c1 cmp %eax,%r9d 0.00 : b5a1b: 7f f3 jg b5a10 0.00 : b5a1d: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : b5a22: 44 89 f8 mov %r15d,%eax 0.00 : b5a25: 23 82 84 00 00 00 and 0x84(%rdx),%eax 0.00 : b5a2b: 48 c1 e0 04 shl $0x4,%rax 0.00 : b5a2f: 48 03 42 40 add 0x40(%rdx),%rax 0.00 : b5a33: 8b 18 mov (%rax),%ebx 0.00 : b5a35: 85 db test %ebx,%ebx 0.00 : b5a37: 7e 5f jle b5a98 0.00 : b5a39: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : b5a3d: 41 8d 41 ff lea -0x1(%r9),%eax 0.00 : b5a41: 31 f6 xor %esi,%esi 0.00 : b5a43: 48 98 cltq 0.00 : b5a45: 48 8d 2c 85 00 00 00 lea 0x0(,%rax,4),%rbp 0.00 : b5a4c: 00 0.00 : b5a4d: eb 0c jmp b5a5b 0.00 : b5a4f: 90 nop 0.00 : b5a50: 83 c6 01 add $0x1,%esi 0.00 : b5a53: 48 83 c7 08 add $0x8,%rdi 0.00 : b5a57: 39 de cmp %ebx,%esi 0.00 : b5a59: 7d 3d jge b5a98 0.00 : b5a5b: 48 8b 0f mov (%rdi),%rcx 0.00 : b5a5e: 44 39 39 cmp %r15d,(%rcx) 0.00 : b5a61: 75 ed jne b5a50 0.00 : b5a63: 0f b6 41 50 movzbl 0x50(%rcx),%eax 0.00 : b5a67: 83 e0 0f and $0xf,%eax 0.00 : b5a6a: 3b 44 24 24 cmp 0x24(%rsp),%eax 0.00 : b5a6e: 75 e0 jne b5a50 0.00 : b5a70: 4c 8b 59 38 mov 0x38(%rcx),%r11 0.00 : b5a74: 4d 85 db test %r11,%r11 0.00 : b5a77: 74 d7 je b5a50 0.00 : b5a79: 45 3b 4b 04 cmp 0x4(%r11),%r9d 0.00 : b5a7d: 49 89 e8 mov %rbp,%r8 0.00 : b5a80: 45 89 ca mov %r9d,%r10d 0.00 : b5a83: 0f 84 f3 01 00 00 je b5c7c 0.00 : b5a89: 83 c6 01 add $0x1,%esi 0.00 : b5a8c: 48 83 c7 08 add $0x8,%rdi 0.00 : b5a90: 39 de cmp %ebx,%esi 0.00 : b5a92: 7c c7 jl b5a5b 0.00 : b5a94: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b5a98: be 01 00 00 00 mov $0x1,%esi 0.00 : b5a9d: bf 58 00 00 00 mov $0x58,%edi 0.00 : b5aa2: e8 e9 8d f6 ff callq 1e890 0.00 : b5aa7: 48 85 c0 test %rax,%rax 0.00 : b5aaa: 48 89 c5 mov %rax,%rbp 0.00 : b5aad: 0f 84 77 02 00 00 je b5d2a 0.00 : b5ab3: 4c 8d 48 08 lea 0x8(%rax),%r9 0.00 : b5ab7: 4c 89 f6 mov %r14,%rsi 0.00 : b5aba: 4c 89 cf mov %r9,%rdi 0.00 : b5abd: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : b5ac2: e8 39 d4 ff ff callq b2f00 0.00 : b5ac7: 85 c0 test %eax,%eax 0.00 : b5ac9: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : b5ace: 0f 85 75 02 00 00 jne b5d49 0.00 : b5ad4: 0f b6 54 24 24 movzbl 0x24(%rsp),%edx 0.00 : b5ad9: 0f b6 45 50 movzbl 0x50(%rbp),%eax 0.00 : b5add: 4c 89 4d 38 mov %r9,0x38(%rbp) 0.00 : b5ae1: 83 e2 0f and $0xf,%edx 0.00 : b5ae4: 83 e0 f0 and $0xfffffff0,%eax 0.00 : b5ae7: 09 d0 or %edx,%eax 0.00 : b5ae9: 88 45 50 mov %al,0x50(%rbp) 0.00 : b5aec: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : b5af0: 85 c0 test %eax,%eax 0.00 : b5af2: 0f 8e 38 01 00 00 jle b5c30 0.00 : b5af8: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : b5afc: 8b 54 24 24 mov 0x24(%rsp),%edx 0.00 : b5b00: 45 31 e4 xor %r12d,%r12d 0.00 : b5b03: 44 8b 54 24 24 mov 0x24(%rsp),%r10d 0.00 : b5b08: 45 31 c0 xor %r8d,%r8d 0.00 : b5b0b: 45 31 ed xor %r13d,%r13d 0.00 : b5b0e: 83 e0 04 and $0x4,%eax 0.00 : b5b11: 83 e2 02 and $0x2,%edx 0.00 : b5b14: 89 44 24 20 mov %eax,0x20(%rsp) 0.00 : b5b18: 89 54 24 1c mov %edx,0x1c(%rsp) 0.00 : b5b1c: 41 83 e2 01 and $0x1,%r10d 0.00 : b5b20: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : b5b24: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : b5b29: 4a 63 04 28 movslq (%rax,%r13,1),%rax 0.00 : b5b2d: 48 c1 e0 04 shl $0x4,%rax 0.00 : b5b31: 48 03 02 add (%rdx),%rax 0.00 : b5b34: 0f b6 70 08 movzbl 0x8(%rax),%esi 0.00 : b5b38: 8b 58 08 mov 0x8(%rax),%ebx 0.00 : b5b3b: c1 eb 08 shr $0x8,%ebx 0.00 : b5b3e: 81 e3 ff 03 00 00 and $0x3ff,%ebx 0.00 : b5b44: 83 fe 01 cmp $0x1,%esi 0.00 : b5b47: 0f 84 3b 01 00 00 je b5c88 0.00 : b5b4d: 0f b6 4d 50 movzbl 0x50(%rbp),%ecx 0.00 : b5b51: 0f b6 40 0a movzbl 0xa(%rax),%eax 0.00 : b5b55: 89 ca mov %ecx,%edx 0.00 : b5b57: c0 e8 04 shr $0x4,%al 0.00 : b5b5a: c0 ea 05 shr $0x5,%dl 0.00 : b5b5d: 09 c2 or %eax,%edx 0.00 : b5b5f: 89 c8 mov %ecx,%eax 0.00 : b5b61: 83 e2 01 and $0x1,%edx 0.00 : b5b64: 83 e0 df and $0xffffffdf,%eax 0.00 : b5b67: c1 e2 05 shl $0x5,%edx 0.00 : b5b6a: 09 d0 or %edx,%eax 0.00 : b5b6c: 83 fe 02 cmp $0x2,%esi 0.00 : b5b6f: 88 45 50 mov %al,0x50(%rbp) 0.00 : b5b72: 0f 84 38 01 00 00 je b5cb0 0.00 : b5b78: 83 fe 04 cmp $0x4,%esi 0.00 : b5b7b: 0f 84 3f 01 00 00 je b5cc0 0.00 : b5b81: 85 db test %ebx,%ebx 0.00 : b5b83: 0f 84 95 00 00 00 je b5c1e 0.00 : b5b89: 4c 3b 4d 38 cmp 0x38(%rbp),%r9 0.00 : b5b8d: 0f 1f 00 nopl (%rax) 0.00 : b5b90: 0f 84 3a 01 00 00 je b5cd0 0.00 : b5b96: f6 c3 01 test $0x1,%bl 0.00 : b5b99: 74 07 je b5ba2 0.00 : b5b9b: 45 85 d2 test %r10d,%r10d 0.00 : b5b9e: 66 90 xchg %ax,%ax 0.00 : b5ba0: 74 2e je b5bd0 0.00 : b5ba2: f6 c3 02 test $0x2,%bl 0.00 : b5ba5: 74 05 je b5bac 0.00 : b5ba7: 45 85 d2 test %r10d,%r10d 0.00 : b5baa: 75 24 jne b5bd0 0.00 : b5bac: f6 c3 10 test $0x10,%bl 0.00 : b5baf: 90 nop 0.00 : b5bb0: 74 08 je b5bba 0.00 : b5bb2: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : b5bb6: 85 c0 test %eax,%eax 0.00 : b5bb8: 74 16 je b5bd0 0.00 : b5bba: 83 e3 40 and $0x40,%ebx 0.00 : b5bbd: 74 5f je b5c1e 0.00 : b5bbf: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : b5bc3: 85 c0 test %eax,%eax 0.00 : b5bc5: 75 57 jne b5c1e 0.00 : b5bc7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b5bce: 00 00 0.00 : b5bd0: 44 89 e7 mov %r12d,%edi 0.00 : b5bd3: 44 29 c7 sub %r8d,%edi 0.00 : b5bd6: 78 42 js b5c1a 0.00 : b5bd8: 8b 45 0c mov 0xc(%rbp),%eax 0.00 : b5bdb: 39 c7 cmp %eax,%edi 0.00 : b5bdd: 7d 3b jge b5c1a 0.00 : b5bdf: 83 e8 01 sub $0x1,%eax 0.00 : b5be2: 39 c7 cmp %eax,%edi 0.00 : b5be4: 89 45 0c mov %eax,0xc(%rbp) 0.00 : b5be7: 7d 31 jge b5c1a 0.00 : b5be9: 48 63 c7 movslq %edi,%rax 0.00 : b5bec: 48 8d 34 85 00 00 00 lea 0x0(,%rax,4),%rsi 0.00 : b5bf3: 00 0.00 : b5bf4: 48 8d 0c 85 04 00 00 lea 0x4(,%rax,4),%rcx 0.00 : b5bfb: 00 0.00 : b5bfc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b5c00: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : b5c04: 83 c7 01 add $0x1,%edi 0.00 : b5c07: 8b 04 0a mov (%rdx,%rcx,1),%eax 0.00 : b5c0a: 48 83 c1 04 add $0x4,%rcx 0.00 : b5c0e: 89 04 32 mov %eax,(%rdx,%rsi,1) 0.00 : b5c11: 48 83 c6 04 add $0x4,%rsi 0.00 : b5c15: 3b 7d 0c cmp 0xc(%rbp),%edi 0.00 : b5c18: 7c e6 jl b5c00 0.00 : b5c1a: 41 83 c0 01 add $0x1,%r8d 0.00 : b5c1e: 41 83 c4 01 add $0x1,%r12d 0.00 : b5c22: 49 83 c5 04 add $0x4,%r13 0.00 : b5c26: 45 3b 66 04 cmp 0x4(%r14),%r12d 0.00 : b5c2a: 0f 8c f0 fe ff ff jl b5b20 0.00 : b5c30: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : b5c35: 44 89 fa mov %r15d,%edx 0.00 : b5c38: 48 89 ee mov %rbp,%rsi 0.00 : b5c3b: e8 20 ca ff ff callq b2660 0.00 : b5c40: 85 c0 test %eax,%eax 0.00 : b5c42: 48 89 e9 mov %rbp,%rcx 0.00 : b5c45: 0f 85 d7 00 00 00 jne b5d22 0.00 : b5c4b: 48 83 c4 38 add $0x38,%rsp 0.00 : b5c4f: 48 89 c8 mov %rcx,%rax 0.00 : b5c52: 5b pop %rbx 0.00 : b5c53: 5d pop %rbp 0.00 : b5c54: 41 5c pop %r12 0.00 : b5c56: 41 5d pop %r13 0.00 : b5c58: 41 5e pop %r14 0.00 : b5c5a: 41 5f pop %r15 0.00 : b5c5c: c3 retq 0.00 : b5c5d: 0f 1f 00 nopl (%rax) 0.00 : b5c60: 49 8b 43 08 mov 0x8(%r11),%rax 0.00 : b5c64: 42 8b 14 00 mov (%rax,%r8,1),%edx 0.00 : b5c68: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : b5c6c: 42 8b 04 00 mov (%rax,%r8,1),%eax 0.00 : b5c70: 49 83 e8 04 sub $0x4,%r8 0.00 : b5c74: 39 c2 cmp %eax,%edx 0.00 : b5c76: 0f 85 d4 fd ff ff jne b5a50 0.00 : b5c7c: 41 83 ea 01 sub $0x1,%r10d 0.00 : b5c80: 79 de jns b5c60 0.00 : b5c82: eb c7 jmp b5c4b 0.00 : b5c84: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b5c88: 85 db test %ebx,%ebx 0.00 : b5c8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b5c90: 0f 85 b7 fe ff ff jne b5b4d 0.00 : b5c96: 41 83 c4 01 add $0x1,%r12d 0.00 : b5c9a: 49 83 c5 04 add $0x4,%r13 0.00 : b5c9e: 45 3b 66 04 cmp 0x4(%r14),%r12d 0.00 : b5ca2: 0f 8c 78 fe ff ff jl b5b20 0.00 : b5ca8: eb 86 jmp b5c30 0.00 : b5caa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b5cb0: 83 c8 10 or $0x10,%eax 0.00 : b5cb3: 88 45 50 mov %al,0x50(%rbp) 0.00 : b5cb6: e9 c6 fe ff ff jmpq b5b81 0.00 : b5cbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b5cc0: 83 c8 40 or $0x40,%eax 0.00 : b5cc3: 88 45 50 mov %al,0x50(%rbp) 0.00 : b5cc6: e9 b6 fe ff ff jmpq b5b81 0.00 : b5ccb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b5cd0: bf 10 00 00 00 mov $0x10,%edi 0.00 : b5cd5: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : b5cda: 44 89 54 24 08 mov %r10d,0x8(%rsp) 0.00 : b5cdf: e8 6c 8b f6 ff callq 1e850 0.00 : b5ce4: 48 85 c0 test %rax,%rax 0.00 : b5ce7: 48 89 45 38 mov %rax,0x38(%rbp) 0.00 : b5ceb: 48 89 c7 mov %rax,%rdi 0.00 : b5cee: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : b5cf3: 44 8b 54 24 08 mov 0x8(%rsp),%r10d 0.00 : b5cf8: 74 28 je b5d22 0.00 : b5cfa: 4c 89 f6 mov %r14,%rsi 0.00 : b5cfd: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : b5d02: 44 89 54 24 08 mov %r10d,0x8(%rsp) 0.00 : b5d07: e8 f4 d1 ff ff callq b2f00 0.00 : b5d0c: 80 4d 50 80 orb $0x80,0x50(%rbp) 0.00 : b5d10: 45 31 c0 xor %r8d,%r8d 0.00 : b5d13: 44 8b 54 24 08 mov 0x8(%rsp),%r10d 0.00 : b5d18: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : b5d1d: e9 74 fe ff ff jmpq b5b96 0.00 : b5d22: 48 89 ef mov %rbp,%rdi 0.00 : b5d25: e8 b6 c0 ff ff callq b1de0 0.00 : b5d2a: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : b5d2f: 31 c9 xor %ecx,%ecx 0.00 : b5d31: c7 00 0c 00 00 00 movl $0xc,(%rax) 0.00 : b5d37: e9 0f ff ff ff jmpq b5c4b 0.00 : b5d3c: c7 07 00 00 00 00 movl $0x0,(%rdi) 0.00 : b5d42: 31 c9 xor %ecx,%ecx 0.00 : b5d44: e9 02 ff ff ff jmpq b5c4b 0.00 : b5d49: 48 89 ef mov %rbp,%rdi 0.00 : b5d4c: e8 4f 8b f6 ff callq 1e8a0 0.00 : b5d51: eb d7 jmp b5d2a Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000bed90 : 100.00 : bed90: 41 57 push %r15 0.00 : bed92: 49 89 f7 mov %rsi,%r15 0.00 : bed95: 41 56 push %r14 0.00 : bed97: 4d 89 ce mov %r9,%r14 0.00 : bed9a: 41 55 push %r13 0.00 : bed9c: 49 89 d5 mov %rdx,%r13 0.00 : bed9f: 41 54 push %r12 0.00 : beda1: 45 89 c4 mov %r8d,%r12d 0.00 : beda4: 55 push %rbp 0.00 : beda5: 53 push %rbx 0.00 : beda6: 48 83 ec 18 sub $0x18,%rsp 0.00 : bedaa: 48 89 7c 24 08 mov %rdi,0x8(%rsp) 0.00 : bedaf: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : bedb3: 48 8b 06 mov (%rsi),%rax 0.00 : bedb6: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : bedbb: e8 e0 de ff ff callq bcca0 0.00 : bedc0: 41 8b 16 mov (%r14),%edx 0.00 : bedc3: 48 89 c5 mov %rax,%rbp 0.00 : bedc6: 85 d2 test %edx,%edx 0.00 : bedc8: 74 06 je bedd0 0.00 : bedca: 48 85 c0 test %rax,%rax 0.00 : bedcd: 74 71 je bee40 0.00 : bedcf: 90 nop 0.00 : bedd0: 41 0f b6 45 08 movzbl 0x8(%r13),%eax 0.00 : bedd5: 3c 0a cmp $0xa,%al 0.00 : bedd7: 74 67 je bee40 0.00 : bedd9: 3c 02 cmp $0x2,%al 0.00 : beddb: 74 63 je bee40 0.00 : beddd: 45 85 e4 test %r12d,%r12d 0.00 : bede0: 74 04 je bede6 0.00 : bede2: 3c 09 cmp $0x9,%al 0.00 : bede4: 74 5a je bee40 0.00 : bede6: 48 8b 0c 24 mov (%rsp),%rcx 0.00 : bedea: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : bedef: 4d 89 f1 mov %r14,%r9 0.00 : bedf2: 45 89 e0 mov %r12d,%r8d 0.00 : bedf5: 4c 89 ea mov %r13,%rdx 0.00 : bedf8: 4c 89 fe mov %r15,%rsi 0.00 : bedfb: e8 a0 de ff ff callq bcca0 0.00 : bee00: 48 89 c3 mov %rax,%rbx 0.00 : bee03: 41 8b 06 mov (%r14),%eax 0.00 : bee06: 85 c0 test %eax,%eax 0.00 : bee08: 74 05 je bee0f 0.00 : bee0a: 48 85 db test %rbx,%rbx 0.00 : bee0d: 74 51 je bee60 0.00 : bee0f: 48 85 ed test %rbp,%rbp 0.00 : bee12: 74 44 je bee58 0.00 : bee14: 48 85 db test %rbx,%rbx 0.00 : bee17: 74 b7 je bedd0 0.00 : bee19: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : bee1e: b9 10 00 00 00 mov $0x10,%ecx 0.00 : bee23: 48 89 da mov %rbx,%rdx 0.00 : bee26: 48 89 ee mov %rbp,%rsi 0.00 : bee29: e8 52 2d ff ff callq b1b80 0.00 : bee2e: 48 85 c0 test %rax,%rax 0.00 : bee31: 74 47 je bee7a 0.00 : bee33: 48 89 c5 mov %rax,%rbp 0.00 : bee36: 41 0f b6 45 08 movzbl 0x8(%r13),%eax 0.00 : bee3b: 3c 0a cmp $0xa,%al 0.00 : bee3d: 75 9a jne bedd9 0.00 : bee3f: 90 nop 0.00 : bee40: 48 83 c4 18 add $0x18,%rsp 0.00 : bee44: 48 89 e8 mov %rbp,%rax 0.00 : bee47: 5b pop %rbx 0.00 : bee48: 5d pop %rbp 0.00 : bee49: 41 5c pop %r12 0.00 : bee4b: 41 5d pop %r13 0.00 : bee4d: 41 5e pop %r14 0.00 : bee4f: 41 5f pop %r15 0.00 : bee51: c3 retq 0.00 : bee52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : bee58: 48 89 dd mov %rbx,%rbp 0.00 : bee5b: e9 70 ff ff ff jmpq bedd0 0.00 : bee60: 48 85 ed test %rbp,%rbp 0.00 : bee63: 74 db je bee40 0.00 : bee65: 48 8d 35 e4 31 ff ff lea -0xce1c(%rip),%rsi # b2050 0.00 : bee6c: 48 89 ef mov %rbp,%rdi 0.00 : bee6f: 31 d2 xor %edx,%edx 0.00 : bee71: 31 ed xor %ebp,%ebp 0.00 : bee73: e8 18 20 ff ff callq b0e90 0.00 : bee78: eb c6 jmp bee40 0.00 : bee7a: 48 8d 35 cf 31 ff ff lea -0xce31(%rip),%rsi # b2050 0.00 : bee81: 31 d2 xor %edx,%edx 0.00 : bee83: 48 89 df mov %rbx,%rdi 0.00 : bee86: e8 05 20 ff ff callq b0e90 0.00 : bee8b: 48 8d 35 be 31 ff ff lea -0xce42(%rip),%rsi # b2050 0.00 : bee92: 48 89 ef mov %rbp,%rdi 0.00 : bee95: 31 d2 xor %edx,%edx 0.00 : bee97: 31 ed xor %ebp,%ebp 0.00 : bee99: e8 f2 1f ff ff callq b0e90 0.00 : bee9e: 41 c7 06 0c 00 00 00 movl $0xc,(%r14) 0.00 : beea5: eb 99 jmp bee40 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000c2920 <_getopt_internal>: 0.00 : c2920: 53 push %rbx 0.00 : c2921: 48 83 ec 10 sub $0x10,%rsp 0.00 : c2925: 48 8b 1d ec f5 2a 00 mov 0x2af5ec(%rip),%rbx # 371f18 <_DYNAMIC+0x3b8> 0.00 : c292c: 8b 03 mov (%rbx),%eax 0.00 : c292e: 89 05 8c 25 2b 00 mov %eax,0x2b258c(%rip) # 374ec0 0.00 : c2934: 48 8b 05 75 f6 2a 00 mov 0x2af675(%rip),%rax # 371fb0 <_DYNAMIC+0x450> 0.00 : c293b: 8b 00 mov (%rax),%eax 0.00 : c293d: 89 05 81 25 2b 00 mov %eax,0x2b2581(%rip) # 374ec4 0.00 : c2943: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : c2947: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : c294b: 48 8d 05 6e 25 2b 00 lea 0x2b256e(%rip),%rax # 374ec0 0.00 : c2952: 48 89 04 24 mov %rax,(%rsp) 0.00 : c2956: e8 c5 ec ff ff callq c1620 <_getopt_internal_r> 0.00 : c295b: 8b 15 5f 25 2b 00 mov 0x2b255f(%rip),%edx # 374ec0 0.00 : c2961: 48 8b 0d 68 25 2b 00 mov 0x2b2568(%rip),%rcx # 374ed0 0.00 : c2968: 89 13 mov %edx,(%rbx) 0.00 : c296a: 48 8b 15 cf f4 2a 00 mov 0x2af4cf(%rip),%rdx # 371e40 <_DYNAMIC+0x2e0> 0.00 : c2971: 48 89 0a mov %rcx,(%rdx) 0.00 : c2974: 8b 0d 4e 25 2b 00 mov 0x2b254e(%rip),%ecx # 374ec8 0.00 : c297a: 48 8b 15 bf f5 2a 00 mov 0x2af5bf(%rip),%rdx # 371f40 <_DYNAMIC+0x3e0> 100.00 : c2981: 89 0a mov %ecx,(%rdx) 0.00 : c2983: 48 83 c4 10 add $0x10,%rsp 0.00 : c2987: 5b pop %rbx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cd680 : 0.00 : cd680: b8 15 00 00 00 mov $0x15,%eax 0.00 : cd685: 0f 05 syscall 100.00 : cd687: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd68d: 73 01 jae cd690 0.00 : cd68f: c3 retq 0.00 : cd690: 48 8b 0d a1 47 2a 00 mov 0x2a47a1(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cd697: 31 d2 xor %edx,%edx 0.00 : cd699: 48 29 c2 sub %rax,%rdx 0.00 : cd69c: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cd69f: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cd6a3: eb ea jmp cd68f Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000ddda0 : ??:0 100.00 : ddda0: f7 c7 80 ff ff ff test $0xffffff80,%edi 0.00 : ddda6: 75 30 jne dddd8 0.00 : ddda8: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi 0.00 : dddaf: 00 00 0.00 : dddb1: 48 8b 0d 18 40 29 00 mov 0x294018(%rip),%rcx # 371dd0 <_DYNAMIC+0x270> 0.00 : dddb8: 48 83 3c 0e 00 cmpq $0x0,(%rsi,%rcx,1) 0.00 : dddbd: 0f 84 95 00 00 00 je dde58 0.00 : dddc3: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : dddc7: 48 63 d7 movslq %edi,%rdx 0.00 : dddca: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : dddce: 83 e0 08 and $0x8,%eax 0.00 : dddd1: c3 retq 0.00 : dddd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : dddd8: 48 8b 15 a9 3f 29 00 mov 0x293fa9(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : ddddf: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : ddde6: 00 00 0.00 : ddde8: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : dddec: 48 8b 10 mov (%rax),%rdx 0.00 : dddef: 8b 82 c8 00 00 00 mov 0xc8(%rdx),%eax 0.00 : dddf5: 83 c0 0b add $0xb,%eax 0.00 : dddf8: 0f b7 c0 movzwl %ax,%eax 0.00 : dddfb: 48 8b 74 c2 40 mov 0x40(%rdx,%rax,8),%rsi 0.00 : dde00: 89 f8 mov %edi,%eax 0.00 : dde02: 8b 0e mov (%rsi),%ecx 0.00 : dde04: d3 e8 shr %cl,%eax 0.00 : dde06: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : dde09: 73 45 jae dde50 0.00 : dde0b: 83 c0 05 add $0x5,%eax 0.00 : dde0e: 8b 04 86 mov (%rsi,%rax,4),%eax 0.00 : dde11: 85 c0 test %eax,%eax 0.00 : dde13: 74 3b je dde50 0.00 : dde15: 8b 4e 08 mov 0x8(%rsi),%ecx 0.00 : dde18: 89 c2 mov %eax,%edx 0.00 : dde1a: 89 f8 mov %edi,%eax 0.00 : dde1c: d3 e8 shr %cl,%eax 0.00 : dde1e: 23 46 0c and 0xc(%rsi),%eax 0.00 : dde21: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : dde25: 8b 04 30 mov (%rax,%rsi,1),%eax 0.00 : dde28: 85 c0 test %eax,%eax 0.00 : dde2a: 74 24 je dde50 0.00 : dde2c: 89 c2 mov %eax,%edx 0.00 : dde2e: 89 f8 mov %edi,%eax 0.00 : dde30: 83 e7 1f and $0x1f,%edi 0.00 : dde33: c1 e8 05 shr $0x5,%eax 0.00 : dde36: 23 46 10 and 0x10(%rsi),%eax 0.00 : dde39: 89 f9 mov %edi,%ecx 0.00 : dde3b: 89 c0 mov %eax,%eax 0.00 : dde3d: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : dde41: 8b 04 30 mov (%rax,%rsi,1),%eax 0.00 : dde44: d3 e8 shr %cl,%eax 0.00 : dde46: 83 e0 01 and $0x1,%eax 0.00 : dde49: c3 retq 0.00 : dde4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : dde50: 31 c0 xor %eax,%eax 0.00 : dde52: c3 retq 0.00 : dde53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : dde58: 48 8b 05 29 3f 29 00 mov 0x293f29(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : dde5f: 48 8b 04 06 mov (%rsi,%rax,1),%rax 0.00 : dde63: 48 8b 00 mov (%rax),%rax 0.00 : dde66: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : dde6a: 48 05 00 01 00 00 add $0x100,%rax 0.00 : dde70: 48 89 04 0e mov %rax,(%rsi,%rcx,1) 0.00 : dde74: e9 4a ff ff ff jmpq dddc3 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000eea10 <__sprintf_chk>: 0.00 : eea10: 48 81 ec d8 00 00 00 sub $0xd8,%rsp ??:0 100.00 : eea17: 4c 89 44 24 40 mov %r8,0x40(%rsp) 0.00 : eea1c: 44 0f b6 c0 movzbl %al,%r8d 0.00 : eea20: 4c 89 4c 24 48 mov %r9,0x48(%rsp) 0.00 : eea25: 4a 8d 04 85 00 00 00 lea 0x0(,%r8,4),%rax 0.00 : eea2c: 00 0.00 : eea2d: 4c 8d 05 2e 00 00 00 lea 0x2e(%rip),%r8 # eea62 <__sprintf_chk+0x52> 0.00 : eea34: 49 29 c0 sub %rax,%r8 0.00 : eea37: 48 8d 84 24 cf 00 00 lea 0xcf(%rsp),%rax 0.00 : eea3e: 00 0.00 : eea3f: 41 ff e0 jmpq *%r8 0.00 : eea42: 0f 29 78 f1 movaps %xmm7,-0xf(%rax) 0.00 : eea46: 0f 29 70 e1 movaps %xmm6,-0x1f(%rax) 0.00 : eea4a: 0f 29 68 d1 movaps %xmm5,-0x2f(%rax) 0.00 : eea4e: 0f 29 60 c1 movaps %xmm4,-0x3f(%rax) 0.00 : eea52: 0f 29 58 b1 movaps %xmm3,-0x4f(%rax) 0.00 : eea56: 0f 29 50 a1 movaps %xmm2,-0x5f(%rax) 0.00 : eea5a: 0f 29 48 91 movaps %xmm1,-0x6f(%rax) 0.00 : eea5e: 0f 29 40 81 movaps %xmm0,-0x7f(%rax) 0.00 : eea62: 48 8d 84 24 e0 00 00 lea 0xe0(%rsp),%rax 0.00 : eea69: 00 0.00 : eea6a: 49 89 e0 mov %rsp,%r8 0.00 : eea6d: c7 04 24 20 00 00 00 movl $0x20,(%rsp) 0.00 : eea74: c7 44 24 04 30 00 00 movl $0x30,0x4(%rsp) 0.00 : eea7b: 00 0.00 : eea7c: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : eea81: 48 8d 44 24 20 lea 0x20(%rsp),%rax 0.00 : eea86: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : eea8b: e8 20 00 00 00 callq eeab0 <__vsprintf_chk> 0.00 : eea90: 48 81 c4 d8 00 00 00 add $0xd8,%rsp Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000aa00 <_dl_add_to_namespace_list>: 0.00 : aa00: 48 8d 14 f6 lea (%rsi,%rsi,8),%rdx 0.00 : aa04: 48 8d 0d 55 46 21 00 lea 0x214655(%rip),%rcx # 21f060 <_rtld_global> 0.00 : aa0b: 48 c1 e2 04 shl $0x4,%rdx 0.00 : aa0f: 48 8b 04 11 mov (%rcx,%rdx,1),%rax 0.00 : aa13: 48 85 c0 test %rax,%rax 0.00 : aa16: 74 48 je aa60 <_dl_add_to_namespace_list+0x60> 0.00 : aa18: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : aa1f: 00 0.00 : aa20: 48 89 c2 mov %rax,%rdx 0.00 : aa23: 48 8b 40 18 mov 0x18(%rax),%rax ??:0 100.00 : aa27: 48 85 c0 test %rax,%rax 0.00 : aa2a: 75 f4 jne aa20 <_dl_add_to_namespace_list+0x20> 0.00 : aa2c: 48 89 57 20 mov %rdx,0x20(%rdi) 0.00 : aa30: 48 89 7a 18 mov %rdi,0x18(%rdx) 0.00 : aa34: 48 8d 04 f6 lea (%rsi,%rsi,8),%rax 0.00 : aa38: 48 c1 e0 04 shl $0x4,%rax 0.00 : aa3c: 83 44 01 08 01 addl $0x1,0x8(%rcx,%rax,1) 0.00 : aa41: 48 8b 05 48 4f 21 00 mov 0x214f48(%rip),%rax # 21f990 <_rtld_global+0x930> 0.00 : aa48: 48 89 87 68 04 00 00 mov %rax,0x468(%rdi) 0.00 : aa4f: 48 83 05 39 4f 21 00 addq $0x1,0x214f39(%rip) # 21f990 <_rtld_global+0x930> 0.00 : aa56: 01 0.00 : aa57: c3 retq 0.00 : aa58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : aa5f: 00 0.00 : aa60: 48 89 3c 0a mov %rdi,(%rdx,%rcx,1) 0.00 : aa64: eb ce jmp aa34 <_dl_add_to_namespace_list+0x34> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016230 <__mprotect>: 0.00 : 16230: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 16235: 0f 05 syscall 0.00 : 16237: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : 1623d: 73 01 jae 16240 <__mprotect+0x10> ??:0 100.00 : 1623f: c3 retq 0.00 : 16240: 48 8d 0d 3d 9f 20 00 lea 0x209f3d(%rip),%rcx # 220184 0.00 : 16247: 31 d2 xor %edx,%edx 0.00 : 16249: 48 29 c2 sub %rax,%rdx 0.00 : 1624c: 89 11 mov %edx,(%rcx) 0.00 : 1624e: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : 16252: eb eb jmp 1623f <__mprotect+0xf> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016320 <__GI___sigsetjmp>: ??:0 100.00 : 16320: 48 89 1f mov %rbx,(%rdi) 0.00 : 16323: 48 89 e8 mov %rbp,%rax 0.00 : 16326: 48 33 05 c3 8a 20 00 xor 0x208ac3(%rip),%rax # 21edf0 <__pointer_chk_guard_local> 0.00 : 1632d: 48 c1 c0 11 rol $0x11,%rax 0.00 : 16331: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 16335: 4c 89 67 10 mov %r12,0x10(%rdi) 0.00 : 16339: 4c 89 6f 18 mov %r13,0x18(%rdi) 0.00 : 1633d: 4c 89 77 20 mov %r14,0x20(%rdi) 0.00 : 16341: 4c 89 7f 28 mov %r15,0x28(%rdi) 0.00 : 16345: 48 8d 54 24 08 lea 0x8(%rsp),%rdx 0.00 : 1634a: 48 33 15 9f 8a 20 00 xor 0x208a9f(%rip),%rdx # 21edf0 <__pointer_chk_guard_local> 0.00 : 16351: 48 c1 c2 11 rol $0x11,%rdx 0.00 : 16355: 48 89 57 30 mov %rdx,0x30(%rdi) 0.00 : 16359: 48 8b 04 24 mov (%rsp),%rax 0.00 : 1635d: 48 33 05 8c 8a 20 00 xor 0x208a8c(%rip),%rax # 21edf0 <__pointer_chk_guard_local> 0.00 : 16364: 48 c1 c0 11 rol $0x11,%rax 0.00 : 16368: 48 89 47 38 mov %rax,0x38(%rdi) 0.00 : 1636c: 31 c0 xor %eax,%eax Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .plt: : : 00000000004069f0 : ??:0 100.00 : 4069f0: ff 25 4a 66 24 00 jmpq *0x24664a(%rip) # 64d040 <_IO_stdin_used+0x211520> 0.00 : 4069f6: 68 08 00 00 00 pushq $0x8 0.00 : 4069fb: e9 60 ff ff ff jmpq 406960 <_init+0x18> Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000406d20 : 100.00 : 406d20: ff 25 b2 64 24 00 jmpq *0x2464b2(%rip) # 64d1d8 <_IO_stdin_used+0x2116b8> 0.00 : 406d26: 68 3b 00 00 00 pushq $0x3b 0.00 : 406d2b: e9 30 fc ff ff jmpq 406960 <_init+0x18> Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000406f50 : 0.00 : 406f50: ff 25 9a 63 24 00 jmpq *0x24639a(%rip) # 64d2f0 <_IO_stdin_used+0x2117d0> 100.00 : 406f56: 68 5e 00 00 00 pushq $0x5e 0.00 : 406f5b: e9 00 fa ff ff jmpq 406960 <_init+0x18> Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000407230 : 100.00 : 407230: ff 25 2a 62 24 00 jmpq *0x24622a(%rip) # 64d460 <_IO_stdin_used+0x211940> 0.00 : 407236: 68 8c 00 00 00 pushq $0x8c 0.00 : 40723b: e9 20 f7 ff ff jmpq 406960 <_init+0x18> Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004145dc <_start>: ??:0 100.00 : 4145dc: 31 ed xor %ebp,%ebp 0.00 : 4145de: 49 89 d1 mov %rdx,%r9 0.00 : 4145e1: 5e pop %rsi 0.00 : 4145e2: 48 89 e2 mov %rsp,%rdx 0.00 : 4145e5: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp 0.00 : 4145e9: 50 push %rax 0.00 : 4145ea: 54 push %rsp 0.00 : 4145eb: 49 c7 c0 20 ba 43 00 mov $0x43ba20,%r8 0.00 : 4145f2: 48 c7 c1 30 ba 43 00 mov $0x43ba30,%rcx 0.00 : 4145f9: 48 c7 c7 40 35 43 00 mov $0x433540,%rdi 0.00 : 414600: e8 bb 25 ff ff callq 406bc0 <__libc_start_main@plt> 0.00 : 414605: f4 hlt 0.00 : 414606: 90 nop 0.00 : 414607: 90 nop 0.00 : 414608: 48 83 ec 08 sub $0x8,%rsp 0.00 : 41460c: 48 8b 05 cd 89 23 00 mov 0x2389cd(%rip),%rax # 64cfe0 <_IO_stdin_used+0x2114c0> 0.00 : 414613: 48 85 c0 test %rax,%rax 0.00 : 414616: 74 02 je 41461a <_start+0x3e> 0.00 : 414618: ff d0 callq *%rax 0.00 : 41461a: 48 83 c4 08 add $0x8,%rsp 0.00 : 41461e: c3 retq 0.00 : 41461f: 90 nop 0.00 : 414620: 55 push %rbp 0.00 : 414621: 48 89 e5 mov %rsp,%rbp 0.00 : 414624: 53 push %rbx 0.00 : 414625: 48 83 ec 08 sub $0x8,%rsp 0.00 : 414629: 80 3d 48 91 23 00 00 cmpb $0x0,0x239148(%rip) # 64d778 0.00 : 414630: 75 4b jne 41467d <_start+0xa1> 0.00 : 414632: b8 10 ce 64 00 mov $0x64ce10,%eax 0.00 : 414637: 48 8b 15 42 91 23 00 mov 0x239142(%rip),%rdx # 64d780 0.00 : 41463e: 48 2d 08 ce 64 00 sub $0x64ce08,%rax 0.00 : 414644: 48 c1 f8 03 sar $0x3,%rax 0.00 : 414648: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 41464c: 48 39 da cmp %rbx,%rdx 0.00 : 41464f: 73 25 jae 414676 <_start+0x9a> 0.00 : 414651: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 414658: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 41465c: 48 89 05 1d 91 23 00 mov %rax,0x23911d(%rip) # 64d780 0.00 : 414663: ff 14 c5 08 ce 64 00 callq *0x64ce08(,%rax,8) 0.00 : 41466a: 48 8b 15 0f 91 23 00 mov 0x23910f(%rip),%rdx # 64d780 0.00 : 414671: 48 39 da cmp %rbx,%rdx 0.00 : 414674: 72 e2 jb 414658 <_start+0x7c> 0.00 : 414676: c6 05 fb 90 23 00 01 movb $0x1,0x2390fb(%rip) # 64d778 0.00 : 41467d: 48 83 c4 08 add $0x8,%rsp 0.00 : 414681: 5b pop %rbx 0.00 : 414682: c9 leaveq 0.00 : 414683: c3 retq 0.00 : 414684: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41468b: 00 00 00 00 00 0.00 : 414690: 55 push %rbp 0.00 : 414691: 48 83 3d 7f 87 23 00 cmpq $0x0,0x23877f(%rip) # 64ce18 <_IO_stdin_used+0x2112f8> 0.00 : 414698: 00 0.00 : 414699: 48 89 e5 mov %rsp,%rbp 0.00 : 41469c: 74 1a je 4146b8 <_start+0xdc> 0.00 : 41469e: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4146a3: 48 85 c0 test %rax,%rax 0.00 : 4146a6: 74 10 je 4146b8 <_start+0xdc> 0.00 : 4146a8: bf 18 ce 64 00 mov $0x64ce18,%edi 0.00 : 4146ad: 49 89 c3 mov %rax,%r11 0.00 : 4146b0: c9 leaveq 0.00 : 4146b1: 41 ff e3 jmpq *%r11 0.00 : 4146b4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4146b8: c9 leaveq 0.00 : 4146b9: c3 retq 0.00 : 4146ba: 90 nop 0.00 : 4146bb: 90 nop 0.00 : 4146bc: 90 nop 0.00 : 4146bd: 90 nop 0.00 : 4146be: 90 nop Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000041e630 : 0.00 : 41e630: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 41e635: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 41e63a: 48 89 fb mov %rdi,%rbx 0.00 : 41e63d: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 41e642: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 41e647: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 41e64c: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 41e651: 48 81 ec 38 01 00 00 sub $0x138,%rsp 0.00 : 41e658: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax 0.00 : 41e65f: 00 00 0.00 : 41e661: 48 89 84 24 f8 00 00 mov %rax,0xf8(%rsp) 0.00 : 41e668: 00 0.00 : 41e669: 31 c0 xor %eax,%eax 0.00 : 41e66b: 48 8b 07 mov (%rdi),%rax 0.00 : 41e66e: 48 85 c0 test %rax,%rax 0.00 : 41e671: 0f 84 cd 01 00 00 je 41e844 0.00 : 41e677: 8b 50 38 mov 0x38(%rax),%edx 0.00 : 41e67a: 83 fa 47 cmp $0x47,%edx 0.00 : 41e67d: 74 41 je 41e6c0 0.00 : 41e67f: 83 fa 49 cmp $0x49,%edx 0.00 : 41e682: 0f 84 75 06 00 00 je 41ecfd 0.00 : 41e688: 31 f6 xor %esi,%esi 0.00 : 41e68a: 48 89 c7 mov %rax,%rdi 0.00 : 41e68d: e8 2e 9c 01 00 callq 4382c0 0.00 : 41e692: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 41e696: f6 c6 08 test $0x8,%dh 0.00 : 41e699: 0f 85 ca 01 00 00 jne 41e869 0.00 : 41e69f: 83 e2 10 and $0x10,%edx 0.00 : 41e6a2: 0f 84 c1 01 00 00 je 41e869 ??:0 100.00 : 41e6a8: 8b 50 20 mov 0x20(%rax),%edx 0.00 : 41e6ab: 83 fa ff cmp $0xffffffff,%edx 0.00 : 41e6ae: 0f 85 a9 01 00 00 jne 41e85d 0.00 : 41e6b4: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 41e6b9: e9 b8 01 00 00 jmpq 41e876 0.00 : 41e6be: 66 90 xchg %ax,%ax 0.00 : 41e6c0: 48 8b 28 mov (%rax),%rbp 0.00 : 41e6c3: 48 3b 2d 16 63 23 00 cmp 0x236316(%rip),%rbp # 6549e0 0.00 : 41e6ca: 74 bc je 41e688 0.00 : 41e6cc: 0f b7 55 3c movzwl 0x3c(%rbp),%edx 0.00 : 41e6d0: 48 89 e8 mov %rbp,%rax 0.00 : 41e6d3: f6 c6 08 test $0x8,%dh 0.00 : 41e6d6: 0f 85 8d 01 00 00 jne 41e869 0.00 : 41e6dc: 83 e2 10 and $0x10,%edx 0.00 : 41e6df: 0f 84 84 01 00 00 je 41e869 0.00 : 41e6e5: 8b 55 20 mov 0x20(%rbp),%edx 0.00 : 41e6e8: 83 fa ff cmp $0xffffffff,%edx 0.00 : 41e6eb: 0f 85 6c 01 00 00 jne 41e85d 0.00 : 41e6f1: 48 89 6c 24 20 mov %rbp,0x20(%rsp) 0.00 : 41e6f6: 48 8b 5f 08 mov 0x8(%rdi),%rbx 0.00 : 41e6fa: 48 8b 3b mov (%rbx),%rdi 0.00 : 41e6fd: e8 ee 82 01 00 callq 4369f0 0.00 : 41e702: 49 89 c5 mov %rax,%r13 0.00 : 41e705: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 41e709: 48 85 c0 test %rax,%rax 0.00 : 41e70c: 0f 85 22 06 00 00 jne 41ed34 0.00 : 41e712: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 41e716: 48 8b 75 08 mov 0x8(%rbp),%rsi 0.00 : 41e71a: 31 d2 xor %edx,%edx 0.00 : 41e71c: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 41e722: 4c 89 ef mov %r13,%rdi 0.00 : 41e725: 45 31 ff xor %r15d,%r15d 0.00 : 41e728: e8 e3 7b 01 00 callq 436310 0.00 : 41e72d: 85 c0 test %eax,%eax 0.00 : 41e72f: 41 89 c6 mov %eax,%r14d 0.00 : 41e732: 0f 88 df 05 00 00 js 41ed17 0.00 : 41e738: 49 8b 45 50 mov 0x50(%r13),%rax 0.00 : 41e73c: 49 8b 55 48 mov 0x48(%r13),%rdx 0.00 : 41e740: 48 c7 84 24 88 00 00 movq $0x0,0x88(%rsp) 0.00 : 41e747: 00 00 00 00 00 0.00 : 41e74c: 44 8b 20 mov (%rax),%r12d 0.00 : 41e74f: 44 2b 22 sub (%rdx),%r12d 0.00 : 41e752: 45 85 e4 test %r12d,%r12d 0.00 : 41e755: 0f 8e d0 01 00 00 jle 41e92b 0.00 : 41e75b: 83 3d a6 62 23 00 01 cmpl $0x1,0x2362a6(%rip) # 654a08 0.00 : 41e762: 0f 8f 7e 01 00 00 jg 41e8e6 0.00 : 41e768: 31 ff xor %edi,%edi 0.00 : 41e76a: 41 8d 5e 01 lea 0x1(%r14),%ebx 0.00 : 41e76e: 48 85 ff test %rdi,%rdi 0.00 : 41e771: 0f 85 c5 01 00 00 jne 41e93c 0.00 : 41e777: f2 0f 2a cb cvtsi2sd %ebx,%xmm1 0.00 : 41e77b: f6 45 3c 02 testb $0x2,0x3c(%rbp) 0.00 : 41e77f: f2 41 0f 2a c4 cvtsi2sd %r12d,%xmm0 0.00 : 41e784: f2 0f 11 4c 24 68 movsd %xmm1,0x68(%rsp) 0.00 : 41e78a: f2 0f 11 44 24 78 movsd %xmm0,0x78(%rsp) 0.00 : 41e790: 0f 85 d0 01 00 00 jne 41e966 0.00 : 41e796: 48 8b 15 e3 61 23 00 mov 0x2361e3(%rip),%rdx # 654980 0.00 : 41e79d: 48 8b 3a mov (%rdx),%rdi 0.00 : 41e7a0: e8 bb 5f 01 00 callq 434760 0.00 : 41e7a5: 4c 8b 25 d4 61 23 00 mov 0x2361d4(%rip),%r12 # 654980 0.00 : 41e7ac: f2 0f 10 44 24 68 movsd 0x68(%rsp),%xmm0 0.00 : 41e7b2: bf 61 00 00 00 mov $0x61,%edi 0.00 : 41e7b7: e8 64 64 01 00 callq 434c20 0.00 : 41e7bc: 49 89 04 24 mov %rax,(%r12) 0.00 : 41e7c0: 4c 8b 3d e9 62 23 00 mov 0x2362e9(%rip),%r15 # 654ab0 0.00 : 41e7c7: 49 8b 3f mov (%r15),%rdi 0.00 : 41e7ca: e8 91 5f 01 00 callq 434760 0.00 : 41e7cf: 4c 8b 35 da 62 23 00 mov 0x2362da(%rip),%r14 # 654ab0 0.00 : 41e7d6: f2 0f 10 44 24 78 movsd 0x78(%rsp),%xmm0 0.00 : 41e7dc: bf 61 00 00 00 mov $0x61,%edi 0.00 : 41e7e1: e8 3a 64 01 00 callq 434c20 0.00 : 41e7e6: 49 89 06 mov %rax,(%r14) 0.00 : 41e7e9: bf 63 00 00 00 mov $0x63,%edi 0.00 : 41e7ee: f2 0f 10 44 24 68 movsd 0x68(%rsp),%xmm0 0.00 : 41e7f4: e8 27 64 01 00 callq 434c20 0.00 : 41e7f9: 48 8b 94 24 f8 00 00 mov 0xf8(%rsp),%rdx 0.00 : 41e800: 00 0.00 : 41e801: 64 48 33 14 25 28 00 xor %fs:0x28,%rdx 0.00 : 41e808: 00 00 0.00 : 41e80a: 75 4c jne 41e858 0.00 : 41e80c: 48 8b 9c 24 08 01 00 mov 0x108(%rsp),%rbx 0.00 : 41e813: 00 0.00 : 41e814: 48 8b ac 24 10 01 00 mov 0x110(%rsp),%rbp 0.00 : 41e81b: 00 0.00 : 41e81c: 4c 8b a4 24 18 01 00 mov 0x118(%rsp),%r12 0.00 : 41e823: 00 0.00 : 41e824: 4c 8b ac 24 20 01 00 mov 0x120(%rsp),%r13 0.00 : 41e82b: 00 0.00 : 41e82c: 4c 8b b4 24 28 01 00 mov 0x128(%rsp),%r14 0.00 : 41e833: 00 0.00 : 41e834: 4c 8b bc 24 30 01 00 mov 0x130(%rsp),%r15 0.00 : 41e83b: 00 0.00 : 41e83c: 48 81 c4 38 01 00 00 add $0x138,%rsp 0.00 : 41e843: c3 retq 0.00 : 41e844: ba d0 03 44 00 mov $0x4403d0,%edx 0.00 : 41e849: be 86 08 00 00 mov $0x886,%esi 0.00 : 41e84e: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 41e853: e8 72 2c ff ff callq 4114ca 0.00 : 41e858: e8 f3 87 fe ff callq 407050 <__stack_chk_fail@plt> 0.00 : 41e85d: 3b 15 dd 62 23 00 cmp 0x2362dd(%rip),%edx # 654b40 0.00 : 41e863: 0f 84 4b fe ff ff je 41e6b4 0.00 : 41e869: 48 89 c7 mov %rax,%rdi 0.00 : 41e86c: e8 3f 78 01 00 callq 4360b0 0.00 : 41e871: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 41e876: 48 8b 6b 08 mov 0x8(%rbx),%rbp 0.00 : 41e87a: 45 31 ff xor %r15d,%r15d 0.00 : 41e87d: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 41e881: e8 6a 81 01 00 callq 4369f0 0.00 : 41e886: 49 89 c5 mov %rax,%r13 0.00 : 41e889: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : 41e88d: 48 85 c0 test %rax,%rax 0.00 : 41e890: 0f 85 9e 04 00 00 jne 41ed34 0.00 : 41e896: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 41e89b: 31 d2 xor %edx,%edx 0.00 : 41e89d: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 41e8a3: 48 8b 4f 10 mov 0x10(%rdi),%rcx 0.00 : 41e8a7: 48 8b 77 08 mov 0x8(%rdi),%rsi 0.00 : 41e8ab: 4c 89 ef mov %r13,%rdi 0.00 : 41e8ae: e8 5d 7a 01 00 callq 436310 0.00 : 41e8b3: 85 c0 test %eax,%eax 0.00 : 41e8b5: 41 89 c6 mov %eax,%r14d 0.00 : 41e8b8: 0f 88 59 04 00 00 js 41ed17 0.00 : 41e8be: 49 8b 75 50 mov 0x50(%r13),%rsi 0.00 : 41e8c2: 49 8b 4d 48 mov 0x48(%r13),%rcx 0.00 : 41e8c6: 48 c7 84 24 88 00 00 movq $0x0,0x88(%rsp) 0.00 : 41e8cd: 00 00 00 00 00 0.00 : 41e8d2: 44 8b 26 mov (%rsi),%r12d 0.00 : 41e8d5: 44 2b 21 sub (%rcx),%r12d 0.00 : 41e8d8: 45 85 e4 test %r12d,%r12d 0.00 : 41e8db: 7e 49 jle 41e926 0.00 : 41e8dd: 83 3d 24 61 23 00 01 cmpl $0x1,0x236124(%rip) # 654a08 0.00 : 41e8e4: 7e 40 jle 41e926 0.00 : 41e8e6: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 41e8eb: 48 8d b4 24 88 00 00 lea 0x88(%rsp),%rsi 0.00 : 41e8f2: 00 0.00 : 41e8f3: e8 28 5f 01 00 callq 434820 0.00 : 41e8f8: 4c 8b 8c 24 88 00 00 mov 0x88(%rsp),%r9 0.00 : 41e8ff: 00 0.00 : 41e900: 4d 63 de movslq %r14d,%r11 0.00 : 41e903: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 41e908: 43 8d 04 26 lea (%r14,%r12,1),%eax 0.00 : 41e90c: 41 ba 01 00 00 00 mov $0x1,%r10d 0.00 : 41e912: 4f 8b 04 d9 mov (%r9,%r11,8),%r8 0.00 : 41e916: 48 98 cltq 0.00 : 41e918: 45 29 c2 sub %r8d,%r10d 0.00 : 41e91b: 45 89 c6 mov %r8d,%r14d 0.00 : 41e91e: 45 89 d4 mov %r10d,%r12d 0.00 : 41e921: 45 03 64 c1 f8 add -0x8(%r9,%rax,8),%r12d 0.00 : 41e926: 4d 85 ff test %r15,%r15 0.00 : 41e929: 75 4a jne 41e975 0.00 : 41e92b: 48 8b bc 24 88 00 00 mov 0x88(%rsp),%rdi 0.00 : 41e932: 00 0.00 : 41e933: 41 8d 5e 01 lea 0x1(%r14),%ebx 0.00 : 41e937: 48 85 ff test %rdi,%rdi 0.00 : 41e93a: 74 05 je 41e941 0.00 : 41e93c: e8 df 83 fe ff callq 406d20 0.00 : 41e941: f2 0f 2a db cvtsi2sd %ebx,%xmm3 0.00 : 41e945: f2 41 0f 2a d4 cvtsi2sd %r12d,%xmm2 0.00 : 41e94a: f2 0f 11 5c 24 68 movsd %xmm3,0x68(%rsp) 0.00 : 41e950: f2 0f 11 54 24 78 movsd %xmm2,0x78(%rsp) 0.00 : 41e956: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 41e95b: 41 f6 45 3c 02 testb $0x2,0x3c(%r13) 0.00 : 41e960: 0f 84 30 fe ff ff je 41e796 0.00 : 41e966: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 41e96b: e8 f0 5d 01 00 callq 434760 0.00 : 41e970: e9 21 fe ff ff jmpq 41e796 0.00 : 41e975: 48 8b 0d 34 60 23 00 mov 0x236034(%rip),%rcx # 6549b0 0.00 : 41e97c: 41 8b 5d 40 mov 0x40(%r13),%ebx 0.00 : 41e980: 48 8b 29 mov (%rcx),%rbp 0.00 : 41e983: 85 db test %ebx,%ebx 0.00 : 41e985: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 41e989: 48 89 7c 24 40 mov %rdi,0x40(%rsp) 0.00 : 41e98e: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 41e992: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) 0.00 : 41e999: 00 00 0.00 : 41e99b: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 41e9a0: 0f 84 7d 02 00 00 je 41ec23 0.00 : 41e9a6: 48 8d b4 24 90 00 00 lea 0x90(%rsp),%rsi 0.00 : 41e9ad: 00 0.00 : 41e9ae: c7 44 24 2c 00 00 00 movl $0x0,0x2c(%rsp) 0.00 : 41e9b5: 00 0.00 : 41e9b6: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) 0.00 : 41e9bd: 00 00 0.00 : 41e9bf: 31 ed xor %ebp,%ebp 0.00 : 41e9c1: 48 c7 44 24 70 00 00 movq $0x0,0x70(%rsp) 0.00 : 41e9c8: 00 00 0.00 : 41e9ca: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 41e9cf: 4d 8b 45 48 mov 0x48(%r13),%r8 0.00 : 41e9d3: 48 8b 5c 24 70 mov 0x70(%rsp),%rbx 0.00 : 41e9d8: 41 8b 0c 18 mov (%r8,%rbx,1),%ecx 0.00 : 41e9dc: 83 f9 ff cmp $0xffffffff,%ecx 0.00 : 41e9df: 0f 84 24 02 00 00 je 41ec09 0.00 : 41e9e5: 49 8b 45 50 mov 0x50(%r13),%rax 0.00 : 41e9e9: 4c 8b 4c 24 20 mov 0x20(%rsp),%r9 0.00 : 41e9ee: 48 63 f9 movslq %ecx,%rdi 0.00 : 41e9f1: 8b 04 18 mov (%rax,%rbx,1),%eax 0.00 : 41e9f4: 4d 8b 41 08 mov 0x8(%r9),%r8 0.00 : 41e9f8: 29 c8 sub %ecx,%eax 0.00 : 41e9fa: 85 c0 test %eax,%eax 0.00 : 41e9fc: 48 63 f0 movslq %eax,%rsi 0.00 : 41e9ff: 7e 0d jle 41ea0e 0.00 : 41ea01: 83 3d 00 60 23 00 01 cmpl $0x1,0x236000(%rip) # 654a08 0.00 : 41ea08: 0f 8f 47 03 00 00 jg 41ed55 0.00 : 41ea0e: 48 89 7c 24 50 mov %rdi,0x50(%rsp) 0.00 : 41ea13: 48 89 74 24 58 mov %rsi,0x58(%rsp) 0.00 : 41ea18: 49 8d 3c 38 lea (%r8,%rdi,1),%rdi 0.00 : 41ea1c: 31 d2 xor %edx,%edx 0.00 : 41ea1e: e8 7d 6a 01 00 callq 4354a0 0.00 : 41ea23: f2 0f 2a 44 24 2c cvtsi2sdl 0x2c(%rsp),%xmm0 0.00 : 41ea29: 66 81 48 3c 80 00 orw $0x80,0x3c(%rax) 0.00 : 41ea2f: bf 63 00 00 00 mov $0x63,%edi 0.00 : 41ea34: 48 89 c3 mov %rax,%rbx 0.00 : 41ea37: e8 e4 61 01 00 callq 434c20 0.00 : 41ea3c: 31 d2 xor %edx,%edx 0.00 : 41ea3e: 48 89 c6 mov %rax,%rsi 0.00 : 41ea41: 4c 89 ff mov %r15,%rdi 0.00 : 41ea44: e8 f7 67 ff ff callq 415240 0.00 : 41ea49: 44 8b 44 24 2c mov 0x2c(%rsp),%r8d 0.00 : 41ea4e: 48 8d bc 24 90 00 00 lea 0x90(%rsp),%rdi 0.00 : 41ea55: 00 0.00 : 41ea56: 48 89 18 mov %rbx,(%rax) 0.00 : 41ea59: ba 64 00 00 00 mov $0x64,%edx 0.00 : 41ea5e: b9 4f 04 44 00 mov $0x44044f,%ecx 0.00 : 41ea63: be 01 00 00 00 mov $0x1,%esi 0.00 : 41ea68: 31 c0 xor %eax,%eax 0.00 : 41ea6a: e8 21 87 fe ff callq 407190 <__sprintf_chk@plt> 0.00 : 41ea6f: 48 8d 94 24 90 00 00 lea 0x90(%rsp),%rdx 0.00 : 41ea76: 00 0.00 : 41ea77: 8b 3a mov (%rdx),%edi 0.00 : 41ea79: 48 83 c2 04 add $0x4,%rdx 0.00 : 41ea7d: 8d b7 ff fe fe fe lea -0x1010101(%rdi),%esi 0.00 : 41ea83: f7 d7 not %edi 0.00 : 41ea85: 21 fe and %edi,%esi 0.00 : 41ea87: 89 f1 mov %esi,%ecx 0.00 : 41ea89: 81 e1 80 80 80 80 and $0x80808080,%ecx 0.00 : 41ea8f: 74 e6 je 41ea77 0.00 : 41ea91: 89 c8 mov %ecx,%eax 0.00 : 41ea93: 4c 8d 42 02 lea 0x2(%rdx),%r8 0.00 : 41ea97: c1 e8 10 shr $0x10,%eax 0.00 : 41ea9a: 81 e6 80 80 00 00 and $0x8080,%esi 0.00 : 41eaa0: 0f 44 c8 cmove %eax,%ecx 0.00 : 41eaa3: 49 0f 44 d0 cmove %r8,%rdx 0.00 : 41eaa7: 89 ce mov %ecx,%esi 0.00 : 41eaa9: 40 00 ce add %cl,%sil 0.00 : 41eaac: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 41eab1: 48 83 da 03 sbb $0x3,%rdx 0.00 : 41eab5: 48 29 ca sub %rcx,%rdx 0.00 : 41eab8: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 41eabd: 48 03 54 24 48 add 0x48(%rsp),%rdx 0.00 : 41eac2: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 41eac7: 48 83 c2 08 add $0x8,%rdx 0.00 : 41eacb: 48 85 ed test %rbp,%rbp 0.00 : 41eace: 48 89 54 24 38 mov %rdx,0x38(%rsp) 0.00 : 41ead3: 0f 85 e3 01 00 00 jne 41ecbc 0.00 : 41ead9: 48 89 d7 mov %rdx,%rdi 0.00 : 41eadc: e8 bf 80 fe ff callq 406ba0 0.00 : 41eae1: 48 85 c0 test %rax,%rax 0.00 : 41eae4: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 41eae9: 0f 84 82 01 00 00 je 41ec71 0.00 : 41eaef: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 41eaf4: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 41eaf9: 48 8d b4 24 90 00 00 lea 0x90(%rsp),%rsi 0.00 : 41eb00: 00 0.00 : 41eb01: e8 4a 84 fe ff callq 406f50 0.00 : 41eb06: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp 0.00 : 41eb0b: 48 03 6c 24 10 add 0x10(%rsp),%rbp 0.00 : 41eb10: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 41eb15: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : 41eb1a: 48 89 ef mov %rbp,%rdi 0.00 : 41eb1d: 48 89 6c 24 60 mov %rbp,0x60(%rsp) 0.00 : 41eb22: e8 29 84 fe ff callq 406f50 0.00 : 41eb27: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp 0.00 : 41eb2c: 48 03 6c 24 18 add 0x18(%rsp),%rbp 0.00 : 41eb31: c7 45 00 73 74 61 72 movl $0x72617473,0x0(%rbp) 0.00 : 41eb38: 66 c7 45 04 74 00 movw $0x74,0x4(%rbp) 0.00 : 41eb3e: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 41eb44: 0f 88 06 01 00 00 js 41ec50 0.00 : 41eb4a: f2 48 0f 2a 44 24 50 cvtsi2sdq 0x50(%rsp),%xmm0 0.00 : 41eb51: f2 0f 58 05 4f 18 02 addsd 0x2184f(%rip),%xmm0 # 4403a8 <_IO_stdin_used+0x4888> 0.00 : 41eb58: 00 0.00 : 41eb59: bf 61 00 00 00 mov $0x61,%edi 0.00 : 41eb5e: e8 bd 60 01 00 callq 434c20 0.00 : 41eb63: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : 41eb68: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 41eb6d: 48 89 c3 mov %rax,%rbx 0.00 : 41eb70: 48 83 c6 05 add $0x5,%rsi 0.00 : 41eb74: e8 17 6c 01 00 callq 435790 0.00 : 41eb79: 31 d2 xor %edx,%edx 0.00 : 41eb7b: 48 89 c6 mov %rax,%rsi 0.00 : 41eb7e: 4c 89 ff mov %r15,%rdi 0.00 : 41eb81: e8 ba 66 ff ff callq 415240 0.00 : 41eb86: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 41eb8b: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 41eb90: 48 8d b4 24 90 00 00 lea 0x90(%rsp),%rsi 0.00 : 41eb97: 00 0.00 : 41eb98: 48 89 18 mov %rbx,(%rax) 0.00 : 41eb9b: e8 b0 83 fe ff callq 406f50 0.00 : 41eba0: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 41eba5: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : 41ebaa: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : 41ebaf: e8 9c 83 fe ff callq 406f50 0.00 : 41ebb4: c7 45 00 6c 65 6e 67 movl $0x676e656c,0x0(%rbp) 0.00 : 41ebbb: 66 c7 45 04 74 68 movw $0x6874,0x4(%rbp) 0.00 : 41ebc1: c6 45 06 00 movb $0x0,0x6(%rbp) 0.00 : 41ebc5: 48 83 7c 24 58 00 cmpq $0x0,0x58(%rsp) 0.00 : 41ebcb: 78 65 js 41ec32 0.00 : 41ebcd: f2 48 0f 2a 44 24 58 cvtsi2sdq 0x58(%rsp),%xmm0 0.00 : 41ebd4: bf 61 00 00 00 mov $0x61,%edi 0.00 : 41ebd9: e8 42 60 01 00 callq 434c20 0.00 : 41ebde: 48 8b 74 24 18 mov 0x18(%rsp),%rsi 0.00 : 41ebe3: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 41ebe8: 48 89 c5 mov %rax,%rbp 0.00 : 41ebeb: 48 83 c6 06 add $0x6,%rsi 0.00 : 41ebef: e8 9c 6b 01 00 callq 435790 0.00 : 41ebf4: 31 d2 xor %edx,%edx 0.00 : 41ebf6: 48 89 c6 mov %rax,%rsi 0.00 : 41ebf9: 4c 89 ff mov %r15,%rdi 0.00 : 41ebfc: e8 3f 66 ff ff callq 415240 0.00 : 41ec01: 48 89 28 mov %rbp,(%rax) 0.00 : 41ec04: 48 8b 6c 24 38 mov 0x38(%rsp),%rbp 0.00 : 41ec09: 83 44 24 2c 01 addl $0x1,0x2c(%rsp) 0.00 : 41ec0e: 48 83 44 24 70 04 addq $0x4,0x70(%rsp) 0.00 : 41ec14: 44 8b 5c 24 2c mov 0x2c(%rsp),%r11d 0.00 : 41ec19: 45 39 5d 40 cmp %r11d,0x40(%r13) 0.00 : 41ec1d: 0f 87 ac fd ff ff ja 41e9cf 0.00 : 41ec23: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 41ec28: e8 f3 80 fe ff callq 406d20 0.00 : 41ec2d: e9 f9 fc ff ff jmpq 41e92b 0.00 : 41ec32: 4c 8b 54 24 58 mov 0x58(%rsp),%r10 0.00 : 41ec37: 48 83 64 24 58 01 andq $0x1,0x58(%rsp) 0.00 : 41ec3d: 49 d1 ea shr %r10 0.00 : 41ec40: 4c 0b 54 24 58 or 0x58(%rsp),%r10 0.00 : 41ec45: f2 49 0f 2a c2 cvtsi2sd %r10,%xmm0 0.00 : 41ec4a: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 41ec4e: eb 84 jmp 41ebd4 0.00 : 41ec50: 4c 8b 4c 24 50 mov 0x50(%rsp),%r9 0.00 : 41ec55: 48 83 64 24 50 01 andq $0x1,0x50(%rsp) 0.00 : 41ec5b: 49 d1 e9 shr %r9 0.00 : 41ec5e: 4c 0b 4c 24 50 or 0x50(%rsp),%r9 0.00 : 41ec63: f2 49 0f 2a c1 cvtsi2sd %r9,%xmm0 0.00 : 41ec68: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 41ec6c: e9 e0 fe ff ff jmpq 41eb51 0.00 : 41ec71: be c5 08 00 00 mov $0x8c5,%esi 0.00 : 41ec76: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41ec7b: e8 c8 26 ff ff callq 411348 0.00 : 41ec80: e8 6b 83 fe ff callq 406ff0 <__errno_location@plt> 0.00 : 41ec85: 8b 38 mov (%rax),%edi 0.00 : 41ec87: e8 34 82 fe ff callq 406ec0 0.00 : 41ec8c: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41ec91: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 41ec96: 31 ff xor %edi,%edi 0.00 : 41ec98: 49 89 c4 mov %rax,%r12 0.00 : 41ec9b: e8 80 83 fe ff callq 407020 0.00 : 41eca0: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 41eca5: 48 89 c7 mov %rax,%rdi 0.00 : 41eca8: 4d 89 e0 mov %r12,%r8 0.00 : 41ecab: ba 32 05 44 00 mov $0x440532,%edx 0.00 : 41ecb0: be da 03 44 00 mov $0x4403da,%esi 0.00 : 41ecb5: 31 c0 xor %eax,%eax 0.00 : 41ecb7: e8 0e 28 ff ff callq 4114ca 0.00 : 41ecbc: 48 39 6c 24 38 cmp %rbp,0x38(%rsp) 0.00 : 41ecc1: 0f 86 28 fe ff ff jbe 41eaef 0.00 : 41ecc7: 48 83 7c 24 30 00 cmpq $0x0,0x30(%rsp) 0.00 : 41eccd: 0f 84 b4 00 00 00 je 41ed87 0.00 : 41ecd3: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 41ecd8: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi 0.00 : 41ecdd: e8 3e 85 fe ff callq 407220 0.00 : 41ece2: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 41ece7: 48 83 7c 24 30 00 cmpq $0x0,0x30(%rsp) 0.00 : 41eced: 0f 85 fc fd ff ff jne 41eaef 0.00 : 41ecf3: be c7 08 00 00 mov $0x8c7,%esi 0.00 : 41ecf8: e9 79 ff ff ff jmpq 41ec76 0.00 : 41ecfd: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 41ed01: f6 c6 08 test $0x8,%dh 0.00 : 41ed04: 0f 84 95 f9 ff ff je 41e69f 0.00 : 41ed0a: 48 89 c7 mov %rax,%rdi 0.00 : 41ed0d: e8 9e 73 01 00 callq 4360b0 0.00 : 41ed12: e9 7b f9 ff ff jmpq 41e692 0.00 : 41ed17: 66 0f 57 ed xorpd %xmm5,%xmm5 0.00 : 41ed1b: f2 0f 10 25 55 32 02 movsd 0x23255(%rip),%xmm4 # 441f78 <_IO_stdin_used+0x6458> 0.00 : 41ed22: 00 0.00 : 41ed23: f2 0f 11 6c 24 68 movsd %xmm5,0x68(%rsp) 0.00 : 41ed29: f2 0f 11 64 24 78 movsd %xmm4,0x78(%rsp) 0.00 : 41ed2f: e9 22 fc ff ff jmpq 41e956 0.00 : 41ed34: 48 8b 38 mov (%rax),%rdi 0.00 : 41ed37: 31 f6 xor %esi,%esi 0.00 : 41ed39: e8 e2 5c ff ff callq 414a20 0.00 : 41ed3e: 83 78 38 48 cmpl $0x48,0x38(%rax) 0.00 : 41ed42: 49 89 c7 mov %rax,%r15 0.00 : 41ed45: 75 54 jne 41ed9b 0.00 : 41ed47: 48 89 c7 mov %rax,%rdi 0.00 : 41ed4a: e8 e1 5f ff ff callq 414d30 0.00 : 41ed4f: 90 nop 0.00 : 41ed50: e9 41 fb ff ff jmpq 41e896 0.00 : 41ed55: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 41ed5c: 00 0.00 : 41ed5d: 01 c8 add %ecx,%eax 0.00 : 41ed5f: 41 ba 01 00 00 00 mov $0x1,%r10d 0.00 : 41ed65: 48 98 cltq 0.00 : 41ed67: 48 8b 1c fa mov (%rdx,%rdi,8),%rbx 0.00 : 41ed6b: 4c 8b 5c c2 f8 mov -0x8(%rdx,%rax,8),%r11 0.00 : 41ed70: 48 89 5c 24 50 mov %rbx,0x50(%rsp) 0.00 : 41ed75: 4c 2b 54 24 50 sub 0x50(%rsp),%r10 0.00 : 41ed7a: 4d 01 da add %r11,%r10 0.00 : 41ed7d: 4c 89 54 24 58 mov %r10,0x58(%rsp) 0.00 : 41ed82: e9 91 fc ff ff jmpq 41ea18 0.00 : 41ed87: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 41ed8c: e8 0f 7e fe ff callq 406ba0 0.00 : 41ed91: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 41ed96: e9 4c ff ff ff jmpq 41ece7 0.00 : 41ed9b: be 8e 08 00 00 mov $0x88e,%esi 0.00 : 41eda0: bf d0 03 44 00 mov $0x4403d0,%edi 0.00 : 41eda5: e8 9e 25 ff ff callq 411348 0.00 : 41edaa: 31 ff xor %edi,%edi 0.00 : 41edac: ba 05 00 00 00 mov $0x5,%edx 0.00 : 41edb1: be c8 06 44 00 mov $0x4406c8,%esi 0.00 : 41edb6: e8 65 82 fe ff callq 407020 0.00 : 41edbb: 48 89 c7 mov %rax,%rdi 0.00 : 41edbe: 31 c0 xor %eax,%eax 0.00 : 41edc0: e8 05 27 ff ff callq 4114ca Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000424f70 : ??:0 100.00 : 424f70: 55 push %rbp 0.00 : 424f71: 48 89 fd mov %rdi,%rbp 0.00 : 424f74: 53 push %rbx 0.00 : 424f75: 48 83 ec 08 sub $0x8,%rsp 0.00 : 424f79: 48 8b 3f mov (%rdi),%rdi 0.00 : 424f7c: 48 85 ff test %rdi,%rdi 0.00 : 424f7f: 0f 84 97 00 00 00 je 42501c 0.00 : 424f85: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 424f88: 83 f8 47 cmp $0x47,%eax 0.00 : 424f8b: 74 7a je 425007 0.00 : 424f8d: 83 f8 49 cmp $0x49,%eax 0.00 : 424f90: 74 4e je 424fe0 0.00 : 424f92: 31 f6 xor %esi,%esi 0.00 : 424f94: e8 27 33 01 00 callq 4382c0 0.00 : 424f99: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 424f9d: f6 c6 08 test $0x8,%dh 0.00 : 424fa0: 75 58 jne 424ffa 0.00 : 424fa2: 83 e2 10 and $0x10,%edx 0.00 : 424fa5: 74 53 je 424ffa 0.00 : 424fa7: 8b 50 20 mov 0x20(%rax),%edx 0.00 : 424faa: 83 fa ff cmp $0xffffffff,%edx 0.00 : 424fad: 0f 85 7f 00 00 00 jne 425032 0.00 : 424fb3: 48 89 c3 mov %rax,%rbx 0.00 : 424fb6: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 424fba: 48 8b 55 08 mov 0x8(%rbp),%rdx 0.00 : 424fbe: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 424fc2: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 424fc6: e8 e5 c9 ff ff callq 4219b0 0.00 : 424fcb: f6 43 3c 02 testb $0x2,0x3c(%rbx) 0.00 : 424fcf: 48 89 c5 mov %rax,%rbp 0.00 : 424fd2: 75 6b jne 42503f 0.00 : 424fd4: 48 83 c4 08 add $0x8,%rsp 0.00 : 424fd8: 48 89 e8 mov %rbp,%rax 0.00 : 424fdb: 5b pop %rbx 0.00 : 424fdc: 5d pop %rbp 0.00 : 424fdd: c3 retq 0.00 : 424fde: 66 90 xchg %ax,%ax 0.00 : 424fe0: 0f b7 57 3c movzwl 0x3c(%rdi),%edx 0.00 : 424fe4: 48 89 f8 mov %rdi,%rax 0.00 : 424fe7: f6 c6 08 test $0x8,%dh 0.00 : 424fea: 74 b6 je 424fa2 0.00 : 424fec: e8 bf 10 01 00 callq 4360b0 0.00 : 424ff1: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 424ff5: f6 c6 08 test $0x8,%dh 0.00 : 424ff8: 74 a8 je 424fa2 0.00 : 424ffa: 48 89 c7 mov %rax,%rdi 0.00 : 424ffd: e8 ae 10 01 00 callq 4360b0 0.00 : 425002: 48 89 c3 mov %rax,%rbx 0.00 : 425005: eb af jmp 424fb6 0.00 : 425007: 48 8b 07 mov (%rdi),%rax 0.00 : 42500a: 48 3b 05 cf f9 22 00 cmp 0x22f9cf(%rip),%rax # 6549e0 0.00 : 425011: 75 de jne 424ff1 0.00 : 425013: 31 f6 xor %esi,%esi 0.00 : 425015: e8 a6 32 01 00 callq 4382c0 0.00 : 42501a: eb d5 jmp 424ff1 0.00 : 42501c: ba d0 03 44 00 mov $0x4403d0,%edx 0.00 : 425021: be 60 05 00 00 mov $0x560,%esi 0.00 : 425026: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 42502b: 31 c0 xor %eax,%eax 0.00 : 42502d: e8 98 c4 fe ff callq 4114ca 0.00 : 425032: 3b 15 08 fb 22 00 cmp 0x22fb08(%rip),%edx # 654b40 0.00 : 425038: 75 c0 jne 424ffa 0.00 : 42503a: e9 74 ff ff ff jmpq 424fb3 0.00 : 42503f: 48 89 df mov %rbx,%rdi 0.00 : 425042: e8 19 f7 00 00 callq 434760 0.00 : 425047: eb 8b jmp 424fd4 Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042d120 : ??:0 100.00 : 42d120: 41 54 push %r12 0.00 : 42d122: 55 push %rbp 0.00 : 42d123: 53 push %rbx 0.00 : 42d124: 48 83 ec 20 sub $0x20,%rsp 0.00 : 42d128: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax 0.00 : 42d12f: 00 00 0.00 : 42d131: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 42d136: 31 c0 xor %eax,%eax 0.00 : 42d138: 48 83 3d 18 78 22 00 cmpq $0x0,0x227818(%rip) # 654958 0.00 : 42d13f: 00 0.00 : 42d140: 0f 85 c6 01 00 00 jne 42d30c 0.00 : 42d146: 4c 8b 05 d3 2e 22 00 mov 0x222ed3(%rip),%r8 # 650020 0.00 : 42d14d: 4d 85 c0 test %r8,%r8 0.00 : 42d150: 0f 85 21 05 00 00 jne 42d677 0.00 : 42d156: 4c 89 c7 mov %r8,%rdi 0.00 : 42d159: e8 02 76 00 00 callq 434760 0.00 : 42d15e: 48 8b 0d 53 79 22 00 mov 0x227953(%rip),%rcx # 654ab8 0.00 : 42d165: 48 8b 39 mov (%rcx),%rdi 0.00 : 42d168: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 42d16c: a8 06 test $0x6,%al 0.00 : 42d16e: 0f 85 f4 04 00 00 jne 42d668 0.00 : 42d174: e8 e7 7e 00 00 callq 435060 0.00 : 42d179: 48 89 c7 mov %rax,%rdi 0.00 : 42d17c: 48 89 3d 9d 2e 22 00 mov %rdi,0x222e9d(%rip) # 650020 0.00 : 42d183: 48 8b 3d 8e 2e 22 00 mov 0x222e8e(%rip),%rdi # 650018 0.00 : 42d18a: e8 d1 75 00 00 callq 434760 0.00 : 42d18f: 48 8b 2d 62 79 22 00 mov 0x227962(%rip),%rbp # 654af8 0.00 : 42d196: 48 8b 7d 00 mov 0x0(%rbp),%rdi 0.00 : 42d19a: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 42d19e: a8 06 test $0x6,%al 0.00 : 42d1a0: 0f 85 b3 04 00 00 jne 42d659 0.00 : 42d1a6: e8 b5 7e 00 00 callq 435060 0.00 : 42d1ab: 48 89 c7 mov %rax,%rdi 0.00 : 42d1ae: 48 83 3d 3a 2e 22 00 cmpq $0x0,0x222e3a(%rip) # 64fff0 0.00 : 42d1b5: 00 0.00 : 42d1b6: 48 89 3d 5b 2e 22 00 mov %rdi,0x222e5b(%rip) # 650018 0.00 : 42d1bd: c7 05 91 2e 22 00 01 movl $0x1,0x222e91(%rip) # 650058 0.00 : 42d1c4: 00 00 00 0.00 : 42d1c7: 0f 85 4e 04 00 00 jne 42d61b 0.00 : 42d1cd: 4c 8b 0d e4 78 22 00 mov 0x2278e4(%rip),%r9 # 654ab8 0.00 : 42d1d4: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 42d1da: c6 04 24 00 movb $0x0,(%rsp) 0.00 : 42d1de: c7 05 78 77 22 00 00 movl $0x0,0x227778(%rip) # 654960 0.00 : 42d1e5: 00 00 00 0.00 : 42d1e8: 49 8b 01 mov (%r9),%rax 0.00 : 42d1eb: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 42d1ef: f6 c6 08 test $0x8,%dh 0.00 : 42d1f2: 0f 85 13 04 00 00 jne 42d60b 0.00 : 42d1f8: 83 e2 10 and $0x10,%edx 0.00 : 42d1fb: 0f 84 0a 04 00 00 je 42d60b 0.00 : 42d201: 8b 50 20 mov 0x20(%rax),%edx 0.00 : 42d204: 83 fa ff cmp $0xffffffff,%edx 0.00 : 42d207: 0f 85 f2 03 00 00 jne 42d5ff 0.00 : 42d20d: 48 89 c5 mov %rax,%rbp 0.00 : 42d210: 44 8b 1d e1 30 22 00 mov 0x2230e1(%rip),%r11d # 6502f8 0.00 : 42d217: 45 85 db test %r11d,%r11d 0.00 : 42d21a: 0f 85 d6 03 00 00 jne 42d5f6 0.00 : 42d220: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 42d224: 48 85 c9 test %rcx,%rcx 0.00 : 42d227: 0f 84 64 03 00 00 je 42d591 0.00 : 42d22d: 48 83 f9 01 cmp $0x1,%rcx 0.00 : 42d231: 0f 87 cf 02 00 00 ja 42d506 0.00 : 42d237: 44 8b 05 2a 77 22 00 mov 0x22772a(%rip),%r8d # 654968 0.00 : 42d23e: 45 85 c0 test %r8d,%r8d 0.00 : 42d241: 0f 85 7d 02 00 00 jne 42d4c4 0.00 : 42d247: 8b 15 af 30 22 00 mov 0x2230af(%rip),%edx # 6502fc 0.00 : 42d24d: be 70 e1 40 00 mov $0x40e170,%esi 0.00 : 42d252: bf 40 dd 42 00 mov $0x42dd40,%edi 0.00 : 42d257: 85 d2 test %edx,%edx 0.00 : 42d259: 48 0f 44 f7 cmove %rdi,%rsi 0.00 : 42d25d: 48 83 e9 01 sub $0x1,%rcx 0.00 : 42d261: 48 89 35 e0 2d 22 00 mov %rsi,0x222de0(%rip) # 650048 0.00 : 42d268: 75 19 jne 42d283 0.00 : 42d26a: 48 8b 4d 08 mov 0x8(%rbp),%rcx 0.00 : 42d26e: 0f b6 01 movzbl (%rcx),%eax 0.00 : 42d271: 3c 20 cmp $0x20,%al 0.00 : 42d273: 0f 85 37 02 00 00 jne 42d4b0 0.00 : 42d279: c7 05 dd 76 22 00 01 movl $0x1,0x2276dd(%rip) # 654960 0.00 : 42d280: 00 00 00 0.00 : 42d283: 45 85 e4 test %r12d,%r12d 0.00 : 42d286: 74 4a je 42d2d2 0.00 : 42d288: 48 83 3d 60 2d 22 00 cmpq $0x0,0x222d60(%rip) # 64fff0 0.00 : 42d28f: 00 0.00 : 42d290: 0f 85 dc 01 00 00 jne 42d472 0.00 : 42d296: 80 3c 24 00 cmpb $0x0,(%rsp) 0.00 : 42d29a: 0f 85 ec 00 00 00 jne 42d38c 0.00 : 42d2a0: 48 81 3d 9d 2d 22 00 cmpq $0x42e910,0x222d9d(%rip) # 650048 0.00 : 42d2a7: 10 e9 42 00 0.00 : 42d2ab: 0f 84 86 00 00 00 je 42d337 0.00 : 42d2b1: 48 c7 05 34 2d 22 00 movq $0x0,0x222d34(%rip) # 64fff0 0.00 : 42d2b8: 00 00 00 00 0.00 : 42d2bc: 48 c7 05 21 2d 22 00 movq $0x0,0x222d21(%rip) # 64ffe8 0.00 : 42d2c3: 00 00 00 00 0.00 : 42d2c7: 48 c7 05 0e 2d 22 00 movq $0x0,0x222d0e(%rip) # 64ffe0 0.00 : 42d2ce: 00 00 00 00 0.00 : 42d2d2: 48 83 7d 10 01 cmpq $0x1,0x10(%rbp) 0.00 : 42d2d7: 75 0d jne 42d2e6 0.00 : 42d2d9: 48 81 3d 64 2d 22 00 cmpq $0x42e910,0x222d64(%rip) # 650048 0.00 : 42d2e0: 10 e9 42 00 0.00 : 42d2e4: 74 41 je 42d327 0.00 : 42d2e6: be f9 60 44 00 mov $0x4460f9,%esi 0.00 : 42d2eb: 48 89 f7 mov %rsi,%rdi 0.00 : 42d2ee: e8 5d fa ff ff callq 42cd50 0.00 : 42d2f3: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 42d2f8: 64 48 33 04 25 28 00 xor %fs:0x28,%rax 0.00 : 42d2ff: 00 00 0.00 : 42d301: 75 1f jne 42d322 0.00 : 42d303: 48 83 c4 20 add $0x20,%rsp 0.00 : 42d307: 5b pop %rbx 0.00 : 42d308: 5d pop %rbp 0.00 : 42d309: 41 5c pop %r12 0.00 : 42d30b: c3 retq 0.00 : 42d30c: 31 f6 xor %esi,%esi 0.00 : 42d30e: 48 bf fe ff ff ff ff movabs $0x7ffffffffffffffe,%rdi 0.00 : 42d315: ff ff 7f 0.00 : 42d318: e8 53 0c 00 00 callq 42df70 0.00 : 42d31d: e9 24 fe ff ff jmpq 42d146 0.00 : 42d322: e8 29 9d fd ff callq 407050 <__stack_chk_fail@plt> 0.00 : 42d327: 48 8b 2d b2 2c 22 00 mov 0x222cb2(%rip),%rbp # 64ffe0 0.00 : 42d32e: 48 89 2d bb 2c 22 00 mov %rbp,0x222cbb(%rip) # 64fff0 0.00 : 42d335: eb af jmp 42d2e6 0.00 : 42d337: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 42d33b: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 42d33f: 31 d2 xor %edx,%edx 0.00 : 42d341: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 42d346: e8 d5 90 00 00 callq 436420 0.00 : 42d34b: 48 89 05 8e 2c 22 00 mov %rax,0x222c8e(%rip) # 64ffe0 0.00 : 42d352: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 42d356: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 42d35b: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 42d35f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 42d364: e8 b7 90 00 00 callq 436420 0.00 : 42d369: 8b 35 39 77 22 00 mov 0x227739(%rip),%esi # 654aa8 0.00 : 42d36f: 48 89 05 72 2c 22 00 mov %rax,0x222c72(%rip) # 64ffe8 0.00 : 42d376: 85 f6 test %esi,%esi 0.00 : 42d378: 48 0f 44 05 60 2c 22 cmove 0x222c60(%rip),%rax # 64ffe0 0.00 : 42d37f: 00 0.00 : 42d380: 48 89 05 69 2c 22 00 mov %rax,0x222c69(%rip) # 64fff0 0.00 : 42d387: e9 46 ff ff ff jmpq 42d2d2 0.00 : 42d38c: 48 89 e3 mov %rsp,%rbx 0.00 : 42d38f: 48 89 e6 mov %rsp,%rsi 0.00 : 42d392: 44 8b 26 mov (%rsi),%r12d 0.00 : 42d395: 48 83 c6 04 add $0x4,%rsi 0.00 : 42d399: 41 8d 8c 24 ff fe fe lea -0x1010101(%r12),%ecx 0.00 : 42d3a0: fe 0.00 : 42d3a1: 41 f7 d4 not %r12d 0.00 : 42d3a4: 44 21 e1 and %r12d,%ecx 0.00 : 42d3a7: 89 ca mov %ecx,%edx 0.00 : 42d3a9: 81 e2 80 80 80 80 and $0x80808080,%edx 0.00 : 42d3af: 74 e1 je 42d392 0.00 : 42d3b1: 41 89 d1 mov %edx,%r9d 0.00 : 42d3b4: 4c 8d 56 02 lea 0x2(%rsi),%r10 0.00 : 42d3b8: 48 89 e7 mov %rsp,%rdi 0.00 : 42d3bb: 41 c1 e9 10 shr $0x10,%r9d 0.00 : 42d3bf: 81 e1 80 80 00 00 and $0x8080,%ecx 0.00 : 42d3c5: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 42d3ca: 41 0f 44 d1 cmove %r9d,%edx 0.00 : 42d3ce: 49 0f 44 f2 cmove %r10,%rsi 0.00 : 42d3d2: 41 89 d3 mov %edx,%r11d 0.00 : 42d3d5: 41 00 d3 add %dl,%r11b 0.00 : 42d3d8: 48 83 de 03 sbb $0x3,%rsi 0.00 : 42d3dc: 31 d2 xor %edx,%edx 0.00 : 42d3de: 48 29 de sub %rbx,%rsi 0.00 : 42d3e1: e8 3a 90 00 00 callq 436420 0.00 : 42d3e6: 48 89 e6 mov %rsp,%rsi 0.00 : 42d3e9: 48 89 05 f0 2b 22 00 mov %rax,0x222bf0(%rip) # 64ffe0 0.00 : 42d3f0: 44 8b 06 mov (%rsi),%r8d 0.00 : 42d3f3: 48 83 c6 04 add $0x4,%rsi 0.00 : 42d3f7: 41 8d 88 ff fe fe fe lea -0x1010101(%r8),%ecx 0.00 : 42d3fe: 41 f7 d0 not %r8d 0.00 : 42d401: 44 21 c1 and %r8d,%ecx 0.00 : 42d404: 89 ca mov %ecx,%edx 0.00 : 42d406: 81 e2 80 80 80 80 and $0x80808080,%edx 0.00 : 42d40c: 74 e2 je 42d3f0 0.00 : 42d40e: 41 89 d4 mov %edx,%r12d 0.00 : 42d411: 48 8d 7e 02 lea 0x2(%rsi),%rdi 0.00 : 42d415: 41 c1 ec 10 shr $0x10,%r12d 0.00 : 42d419: 81 e1 80 80 00 00 and $0x8080,%ecx 0.00 : 42d41f: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 42d424: 41 0f 44 d4 cmove %r12d,%edx 0.00 : 42d428: 48 0f 44 f7 cmove %rdi,%rsi 0.00 : 42d42c: 48 89 e7 mov %rsp,%rdi 0.00 : 42d42f: 89 d0 mov %edx,%eax 0.00 : 42d431: 00 d0 add %dl,%al 0.00 : 42d433: ba 01 00 00 00 mov $0x1,%edx 0.00 : 42d438: 48 83 de 03 sbb $0x3,%rsi 0.00 : 42d43c: 48 29 de sub %rbx,%rsi 0.00 : 42d43f: e8 dc 8f 00 00 callq 436420 0.00 : 42d444: 8b 1d 5e 76 22 00 mov 0x22765e(%rip),%ebx # 654aa8 0.00 : 42d44a: 48 89 05 97 2b 22 00 mov %rax,0x222b97(%rip) # 64ffe8 0.00 : 42d451: 48 c7 05 ec 2b 22 00 movq $0x42e910,0x222bec(%rip) # 650048 0.00 : 42d458: 10 e9 42 00 0.00 : 42d45c: 85 db test %ebx,%ebx 0.00 : 42d45e: 48 0f 44 05 7a 2b 22 cmove 0x222b7a(%rip),%rax # 64ffe0 0.00 : 42d465: 00 0.00 : 42d466: 48 89 05 83 2b 22 00 mov %rax,0x222b83(%rip) # 64fff0 0.00 : 42d46d: e9 60 fe ff ff jmpq 42d2d2 0.00 : 42d472: 48 8b 3d 67 2b 22 00 mov 0x222b67(%rip),%rdi # 64ffe0 0.00 : 42d479: e8 32 8e 00 00 callq 4362b0 0.00 : 42d47e: 48 8b 3d 63 2b 22 00 mov 0x222b63(%rip),%rdi # 64ffe8 0.00 : 42d485: e8 26 8e 00 00 callq 4362b0 0.00 : 42d48a: 48 c7 05 5b 2b 22 00 movq $0x0,0x222b5b(%rip) # 64fff0 0.00 : 42d491: 00 00 00 00 0.00 : 42d495: 48 c7 05 48 2b 22 00 movq $0x0,0x222b48(%rip) # 64ffe8 0.00 : 42d49c: 00 00 00 00 0.00 : 42d4a0: 48 c7 05 35 2b 22 00 movq $0x0,0x222b35(%rip) # 64ffe0 0.00 : 42d4a7: 00 00 00 00 0.00 : 42d4ab: e9 e6 fd ff ff jmpq 42d296 0.00 : 42d4b0: 3c 5c cmp $0x5c,%al 0.00 : 42d4b2: 74 6e je 42d522 0.00 : 42d4b4: 48 c7 05 89 2b 22 00 movq $0x42edb0,0x222b89(%rip) # 650048 0.00 : 42d4bb: b0 ed 42 00 0.00 : 42d4bf: e9 bf fd ff ff jmpq 42d283 0.00 : 42d4c4: 48 83 e9 01 sub $0x1,%rcx 0.00 : 42d4c8: 48 c7 05 75 2b 22 00 movq $0x42edb0,0x222b75(%rip) # 650048 0.00 : 42d4cf: b0 ed 42 00 0.00 : 42d4d3: 0f 85 aa fd ff ff jne 42d283 0.00 : 42d4d9: 48 8b 45 08 mov 0x8(%rbp),%rax 0.00 : 42d4dd: 0f b6 00 movzbl (%rax),%eax 0.00 : 42d4e0: 3c 20 cmp $0x20,%al 0.00 : 42d4e2: 75 4f jne 42d533 0.00 : 42d4e4: c7 05 72 74 22 00 01 movl $0x1,0x227472(%rip) # 654960 0.00 : 42d4eb: 00 00 00 0.00 : 42d4ee: c7 04 24 5b 20 09 0a movl $0xa09205b,(%rsp) 0.00 : 42d4f5: 66 c7 44 24 04 5d 2b movw $0x2b5d,0x4(%rsp) 0.00 : 42d4fc: c6 44 24 06 00 movb $0x0,0x6(%rsp) 0.00 : 42d501: e9 7d fd ff ff jmpq 42d283 0.00 : 42d506: 44 8b 0d f7 2d 22 00 mov 0x222df7(%rip),%r9d # 650304 0.00 : 42d50d: 45 85 c9 test %r9d,%r9d 0.00 : 42d510: 75 4f jne 42d561 0.00 : 42d512: 48 c7 05 2b 2b 22 00 movq $0x42e910,0x222b2b(%rip) # 650048 0.00 : 42d519: 10 e9 42 00 0.00 : 42d51d: e9 61 fd ff ff jmpq 42d283 0.00 : 42d522: c7 04 24 5b 5c 5c 5d movl $0x5d5c5c5b,(%rsp) 0.00 : 42d529: c6 44 24 04 00 movb $0x0,0x4(%rsp) 0.00 : 42d52e: e9 50 fd ff ff jmpq 42d283 0.00 : 42d533: 3c 5c cmp $0x5c,%al 0.00 : 42d535: 74 47 je 42d57e 0.00 : 42d537: 3c 0a cmp $0xa,%al 0.00 : 42d539: 0f 84 44 fd ff ff je 42d283 0.00 : 42d53f: 44 0f be c0 movsbl %al,%r8d 0.00 : 42d543: 48 89 e7 mov %rsp,%rdi 0.00 : 42d546: b9 84 2e 44 00 mov $0x442e84,%ecx 0.00 : 42d54b: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 42d550: be 01 00 00 00 mov $0x1,%esi 0.00 : 42d555: 31 c0 xor %eax,%eax 0.00 : 42d557: e8 34 9c fd ff callq 407190 <__sprintf_chk@plt> 0.00 : 42d55c: e9 22 fd ff ff jmpq 42d283 0.00 : 42d561: 31 ff xor %edi,%edi 0.00 : 42d563: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42d568: be d0 2e 44 00 mov $0x442ed0,%esi 0.00 : 42d56d: e8 ae 9a fd ff callq 407020 0.00 : 42d572: 48 89 c7 mov %rax,%rdi 0.00 : 42d575: 31 c0 xor %eax,%eax 0.00 : 42d577: e8 ab 40 fe ff callq 411627 0.00 : 42d57c: eb 94 jmp 42d512 0.00 : 42d57e: c7 04 24 5b 5c 5c 0a movl $0xa5c5c5b,(%rsp) 0.00 : 42d585: 66 c7 44 24 04 5d 00 movw $0x5d,0x4(%rsp) 0.00 : 42d58c: e9 f2 fc ff ff jmpq 42d283 0.00 : 42d591: 44 8b 15 68 2d 22 00 mov 0x222d68(%rip),%r10d # 650300 0.00 : 42d598: 48 c7 05 a5 2a 22 00 movq $0x40e277,0x222aa5(%rip) # 650048 0.00 : 42d59f: 77 e2 40 00 0.00 : 42d5a3: 45 85 d2 test %r10d,%r10d 0.00 : 42d5a6: 0f 84 d7 fc ff ff je 42d283 0.00 : 42d5ac: 66 83 3d 5c 2a 22 00 cmpw $0x0,0x222a5c(%rip) # 650010 0.00 : 42d5b3: 00 0.00 : 42d5b4: 0f 85 c9 fc ff ff jne 42d283 0.00 : 42d5ba: be 40 04 00 00 mov $0x440,%esi 0.00 : 42d5bf: bf 01 2e 44 00 mov $0x442e01,%edi 0.00 : 42d5c4: 66 c7 05 43 2a 22 00 movw $0x1,0x222a43(%rip) # 650010 0.00 : 42d5cb: 01 00 0.00 : 42d5cd: e8 76 3d fe ff callq 411348 0.00 : 42d5d2: 31 ff xor %edi,%edi 0.00 : 42d5d4: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42d5d9: be a0 2e 44 00 mov $0x442ea0,%esi 0.00 : 42d5de: 48 8b 1d eb ff 21 00 mov 0x21ffeb(%rip),%rbx # 64d5d0 0.00 : 42d5e5: e8 36 9a fd ff callq 407020 0.00 : 42d5ea: 48 89 c7 mov %rax,%rdi 0.00 : 42d5ed: 31 c0 xor %eax,%eax 0.00 : 42d5ef: ff d3 callq *%rbx 0.00 : 42d5f1: e9 8d fc ff ff jmpq 42d283 0.00 : 42d5f6: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 42d5fa: e9 2e fc ff ff jmpq 42d22d 0.00 : 42d5ff: 3b 15 3b 75 22 00 cmp 0x22753b(%rip),%edx # 654b40 0.00 : 42d605: 0f 84 02 fc ff ff je 42d20d 0.00 : 42d60b: 48 89 c7 mov %rax,%rdi 0.00 : 42d60e: e8 9d 8a 00 00 callq 4360b0 0.00 : 42d613: 48 89 c5 mov %rax,%rbp 0.00 : 42d616: e9 f5 fb ff ff jmpq 42d210 0.00 : 42d61b: 48 8b 3d be 29 22 00 mov 0x2229be(%rip),%rdi # 64ffe0 0.00 : 42d622: e8 89 8c 00 00 callq 4362b0 0.00 : 42d627: 48 8b 3d ba 29 22 00 mov 0x2229ba(%rip),%rdi # 64ffe8 0.00 : 42d62e: e8 7d 8c 00 00 callq 4362b0 0.00 : 42d633: 48 c7 05 b2 29 22 00 movq $0x0,0x2229b2(%rip) # 64fff0 0.00 : 42d63a: 00 00 00 00 0.00 : 42d63e: 48 c7 05 9f 29 22 00 movq $0x0,0x22299f(%rip) # 64ffe8 0.00 : 42d645: 00 00 00 00 0.00 : 42d649: 48 c7 05 8c 29 22 00 movq $0x0,0x22298c(%rip) # 64ffe0 0.00 : 42d650: 00 00 00 00 0.00 : 42d654: e9 74 fb ff ff jmpq 42d1cd 0.00 : 42d659: 83 e0 fd and $0xfffffffd,%eax 0.00 : 42d65c: 83 c8 01 or $0x1,%eax 0.00 : 42d65f: 66 89 47 3c mov %ax,0x3c(%rdi) 0.00 : 42d663: e9 46 fb ff ff jmpq 42d1ae 0.00 : 42d668: 83 e0 fd and $0xfffffffd,%eax 0.00 : 42d66b: 83 c8 01 or $0x1,%eax 0.00 : 42d66e: 66 89 47 3c mov %ax,0x3c(%rdi) 0.00 : 42d672: e9 05 fb ff ff jmpq 42d17c 0.00 : 42d677: 4c 8b 0d 3a 74 22 00 mov 0x22743a(%rip),%r9 # 654ab8 0.00 : 42d67e: 49 8b 01 mov (%r9),%rax 0.00 : 42d681: 48 8b 48 10 mov 0x10(%rax),%rcx 0.00 : 42d685: 49 3b 48 10 cmp 0x10(%r8),%rcx 0.00 : 42d689: 0f 85 c7 fa ff ff jne 42d156 0.00 : 42d68f: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 42d693: 49 8b 78 08 mov 0x8(%r8),%rdi 0.00 : 42d697: 48 39 c9 cmp %rcx,%rcx 0.00 : 42d69a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42d69c: 0f 85 b4 fa ff ff jne 42d156 0.00 : 42d6a2: 48 8b 15 6f 29 22 00 mov 0x22296f(%rip),%rdx # 650018 0.00 : 42d6a9: 48 85 d2 test %rdx,%rdx 0.00 : 42d6ac: 0f 84 a4 fa ff ff je 42d156 0.00 : 42d6b2: 48 8b 05 3f 74 22 00 mov 0x22743f(%rip),%rax # 654af8 0.00 : 42d6b9: 48 8b 00 mov (%rax),%rax 0.00 : 42d6bc: 48 8b 48 10 mov 0x10(%rax),%rcx 0.00 : 42d6c0: 48 3b 4a 10 cmp 0x10(%rdx),%rcx 0.00 : 42d6c4: 0f 85 8c fa ff ff jne 42d156 0.00 : 42d6ca: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 42d6ce: 48 8b 7a 08 mov 0x8(%rdx),%rdi 0.00 : 42d6d2: 48 39 c9 cmp %rcx,%rcx 0.00 : 42d6d5: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 42d6d7: 0f 85 79 fa ff ff jne 42d156 0.00 : 42d6dd: 48 83 3d 0b 29 22 00 cmpq $0x0,0x22290b(%rip) # 64fff0 0.00 : 42d6e4: 00 0.00 : 42d6e5: 75 19 jne 42d700 0.00 : 42d6e7: 45 31 e4 xor %r12d,%r12d 0.00 : 42d6ea: 48 81 3d 53 29 22 00 cmpq $0x42cdc0,0x222953(%rip) # 650048 0.00 : 42d6f1: c0 cd 42 00 0.00 : 42d6f5: 0f 85 f8 fb ff ff jne 42d2f3 0.00 : 42d6fb: e9 da fa ff ff jmpq 42d1da 0.00 : 42d700: 8b 1d a2 73 22 00 mov 0x2273a2(%rip),%ebx # 654aa8 0.00 : 42d706: 48 8b 15 db 28 22 00 mov 0x2228db(%rip),%rdx # 64ffe8 0.00 : 42d70d: 85 db test %ebx,%ebx 0.00 : 42d70f: 48 0f 44 15 c9 28 22 cmove 0x2228c9(%rip),%rdx # 64ffe0 0.00 : 42d716: 00 0.00 : 42d717: 48 89 15 d2 28 22 00 mov %rdx,0x2228d2(%rip) # 64fff0 0.00 : 42d71e: eb c7 jmp 42d6e7 Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000042db50 : 0.00 : 42db50: 41 54 push %r12 0.00 : 42db52: 49 89 fc mov %rdi,%r12 0.00 : 42db55: 53 push %rbx 0.00 : 42db56: 89 f3 mov %esi,%ebx 0.00 : 42db58: 48 83 ec 08 sub $0x8,%rsp 0.00 : 42db5c: e8 1f fe ff ff callq 42d980 0.00 : 42db61: 48 83 3d cf 24 22 00 cmpq $0x0,0x2224cf(%rip) # 650038 0.00 : 42db68: 00 0.00 : 42db69: 0f 84 8b 00 00 00 je 42dbfa 0.00 : 42db6f: 48 8b 3d c2 24 22 00 mov 0x2224c2(%rip),%rdi # 650038 0.00 : 42db76: 48 63 db movslq %ebx,%rbx 0.00 : 42db79: 48 39 fb cmp %rdi,%rbx 0.00 : 42db7c: 0f 83 bb 00 00 00 jae 42dc3d 0.00 : 42db82: 48 8b 3d b7 24 22 00 mov 0x2224b7(%rip),%rdi # 650040 0.00 : 42db89: 48 89 da mov %rbx,%rdx 0.00 : 42db8c: 4c 89 e6 mov %r12,%rsi 0.00 : 42db8f: e8 bc 93 fd ff callq 406f50 0.00 : 42db94: 48 8b 15 bd 6d 22 00 mov 0x226dbd(%rip),%rdx # 654958 0.00 : 42db9b: 48 8b 3a mov (%rdx),%rdi 0.00 : 42db9e: e8 bd 6b 00 00 callq 434760 0.00 : 42dba3: 48 8b 15 d6 27 22 00 mov 0x2227d6(%rip),%rdx # 650380 0.00 : 42dbaa: 48 85 d2 test %rdx,%rdx 0.00 : 42dbad: 0f 84 21 01 00 00 je 42dcd4 0.00 : 42dbb3: 48 8b 32 mov (%rdx),%rsi 0.00 : 42dbb6: 48 89 35 c3 27 22 00 mov %rsi,0x2227c3(%rip) # 650380 0.00 : 42dbbd: 4c 8b 05 7c 24 22 00 mov 0x22247c(%rip),%r8 # 650040 0.00 : 42dbc4: 48 89 5a 10 mov %rbx,0x10(%rdx) 0.00 : 42dbc8: 48 c7 42 18 01 00 00 movq $0x1,0x18(%rdx) 0.00 : 42dbcf: 00 0.00 : 42dbd0: c7 42 20 ff ff ff ff movl $0xffffffff,0x20(%rdx) 0.00 : 42dbd7: c7 42 38 49 00 00 00 movl $0x49,0x38(%rdx) 0.00 : 42dbde: 66 c7 42 3c 98 04 movw $0x498,0x3c(%rdx) 0.00 : 42dbe4: 4c 89 42 08 mov %r8,0x8(%rdx) 0.00 : 42dbe8: 48 8b 3d 69 6d 22 00 mov 0x226d69(%rip),%rdi # 654958 0.00 : 42dbef: 48 89 17 mov %rdx,(%rdi) 0.00 : 42dbf2: 48 83 c4 08 add $0x8,%rsp 0.00 : 42dbf6: 5b pop %rbx 0.00 : 42dbf7: 41 5c pop %r12 0.00 : 42dbf9: c3 retq 0.00 : 42dbfa: bf 00 02 00 00 mov $0x200,%edi 0.00 : 42dbff: e8 9c 8f fd ff callq 406ba0 0.00 : 42dc04: 48 85 c0 test %rax,%rax 0.00 : 42dc07: 48 89 c7 mov %rax,%rdi 0.00 : 42dc0a: 48 89 05 2f 24 22 00 mov %rax,0x22242f(%rip) # 650040 0.00 : 42dc11: 74 76 je 42dc89 0.00 : 42dc13: 48 63 db movslq %ebx,%rbx 0.00 : 42dc16: 31 c0 xor %eax,%eax 0.00 : 42dc18: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 42dc1d: 48 81 fb 00 02 00 00 cmp $0x200,%rbx 0.00 : 42dc24: 48 c7 05 09 24 22 00 movq $0x200,0x222409(%rip) # 650038 0.00 : 42dc2b: 00 02 00 00 0.00 : 42dc2f: f3 48 ab rep stos %rax,%es:(%rdi) ??:0 100.00 : 42dc32: bf 00 02 00 00 mov $0x200,%edi 0.00 : 42dc37: 0f 82 45 ff ff ff jb 42db82 0.00 : 42dc3d: 48 01 ff add %rdi,%rdi 0.00 : 42dc40: 48 39 fb cmp %rdi,%rbx 0.00 : 42dc43: 73 f8 jae 42dc3d 0.00 : 42dc45: 48 8b 05 f4 23 22 00 mov 0x2223f4(%rip),%rax # 650040 0.00 : 42dc4c: 48 89 3d e5 23 22 00 mov %rdi,0x2223e5(%rip) # 650038 0.00 : 42dc53: 48 85 c0 test %rax,%rax 0.00 : 42dc56: 0f 84 85 00 00 00 je 42dce1 0.00 : 42dc5c: 48 89 fe mov %rdi,%rsi 0.00 : 42dc5f: 48 89 c7 mov %rax,%rdi 0.00 : 42dc62: e8 b9 95 fd ff callq 407220 0.00 : 42dc67: 48 85 c0 test %rax,%rax 0.00 : 42dc6a: 48 89 05 cf 23 22 00 mov %rax,0x2223cf(%rip) # 650040 0.00 : 42dc71: 74 78 je 42dceb 0.00 : 42dc73: 48 8b 15 be 23 22 00 mov 0x2223be(%rip),%rdx # 650038 0.00 : 42dc7a: 31 f6 xor %esi,%esi 0.00 : 42dc7c: 48 89 c7 mov %rax,%rdi 0.00 : 42dc7f: e8 5c 8d fd ff callq 4069e0 0.00 : 42dc84: e9 f9 fe ff ff jmpq 42db82 0.00 : 42dc89: be fc 00 00 00 mov $0xfc,%esi 0.00 : 42dc8e: bf 01 2e 44 00 mov $0x442e01,%edi 0.00 : 42dc93: e8 b0 36 fe ff callq 411348 0.00 : 42dc98: e8 53 93 fd ff callq 406ff0 <__errno_location@plt> 0.00 : 42dc9d: 8b 38 mov (%rax),%edi 0.00 : 42dc9f: e8 1c 92 fd ff callq 406ec0 0.00 : 42dca4: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42dca9: 48 89 c3 mov %rax,%rbx 0.00 : 42dcac: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 42dcb1: 31 ff xor %edi,%edi 0.00 : 42dcb3: e8 68 93 fd ff callq 407020 0.00 : 42dcb8: 49 89 d8 mov %rbx,%r8 0.00 : 42dcbb: 48 89 c7 mov %rax,%rdi 0.00 : 42dcbe: b9 00 02 00 00 mov $0x200,%ecx 0.00 : 42dcc3: ba 25 2e 44 00 mov $0x442e25,%edx 0.00 : 42dcc8: be 2d 2e 44 00 mov $0x442e2d,%esi 0.00 : 42dccd: 31 c0 xor %eax,%eax 0.00 : 42dccf: e8 f6 37 fe ff callq 4114ca 0.00 : 42dcd4: e8 27 6e 00 00 callq 434b00 0.00 : 42dcd9: 48 89 c2 mov %rax,%rdx 0.00 : 42dcdc: e9 dc fe ff ff jmpq 42dbbd 0.00 : 42dce1: e8 ba 8e fd ff callq 406ba0 0.00 : 42dce6: e9 7c ff ff ff jmpq 42dc67 0.00 : 42dceb: be 09 01 00 00 mov $0x109,%esi 0.00 : 42dcf0: bf 01 2e 44 00 mov $0x442e01,%edi 0.00 : 42dcf5: e8 4e 36 fe ff callq 411348 0.00 : 42dcfa: e8 f1 92 fd ff callq 406ff0 <__errno_location@plt> 0.00 : 42dcff: 8b 38 mov (%rax),%edi 0.00 : 42dd01: e8 ba 91 fd ff callq 406ec0 0.00 : 42dd06: 4c 8b 25 2b 23 22 00 mov 0x22232b(%rip),%r12 # 650038 0.00 : 42dd0d: 48 89 c3 mov %rax,%rbx 0.00 : 42dd10: ba 05 00 00 00 mov $0x5,%edx 0.00 : 42dd15: be f0 be 43 00 mov $0x43bef0,%esi 0.00 : 42dd1a: 31 ff xor %edi,%edi 0.00 : 42dd1c: e8 ff 92 fd ff callq 407020 0.00 : 42dd21: 49 89 d8 mov %rbx,%r8 0.00 : 42dd24: 48 89 c7 mov %rax,%rdi 0.00 : 42dd27: 4c 89 e1 mov %r12,%rcx 0.00 : 42dd2a: ba 25 2e 44 00 mov $0x442e25,%edx 0.00 : 42dd2f: be 2d 2e 44 00 mov $0x442e2d,%esi 0.00 : 42dd34: 31 c0 xor %eax,%eax 0.00 : 42dd36: e8 8f 37 fe ff callq 4114ca Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004360d0 : 0.00 : 4360d0: 48 83 ec 08 sub $0x8,%rsp 100.00 : 4360d4: 8b 15 22 a2 21 00 mov 0x21a222(%rip),%edx # 6502fc 0.00 : 4360da: 85 d2 test %edx,%edx 0.00 : 4360dc: 75 49 jne 436127 0.00 : 4360de: 83 3d 13 a2 21 00 01 cmpl $0x1,0x21a213(%rip) # 6502f8 0.00 : 4360e5: 48 19 c0 sbb %rax,%rax 0.00 : 4360e8: 25 84 cf 07 00 and $0x7cf84,%eax 0.00 : 4360ed: 48 05 c9 e0 0b 00 add $0xbe0c9,%rax 0.00 : 4360f3: 48 89 05 c6 a4 21 00 mov %rax,0x21a4c6(%rip) # 6505c0 0.00 : 4360fa: 8b 0d 14 a2 21 00 mov 0x21a214(%rip),%ecx # 650314 0.00 : 436100: 85 c9 test %ecx,%ecx 0.00 : 436102: 75 30 jne 436134 0.00 : 436104: 48 8b 3d b5 a4 21 00 mov 0x21a4b5(%rip),%rdi # 6505c0 0.00 : 43610b: e8 60 0e fd ff callq 406f70 0.00 : 436110: 48 8b 3d a9 a4 21 00 mov 0x21a4a9(%rip),%rdi # 6505c0 0.00 : 436117: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 43611c: 31 f6 xor %esi,%esi 0.00 : 43611e: 48 83 c4 08 add $0x8,%rsp 0.00 : 436122: e9 09 f1 fe ff jmpq 425230 0.00 : 436127: 48 c7 05 8e a4 21 00 movq $0xbb2fd,0x21a48e(%rip) # 6505c0 0.00 : 43612e: fd b2 0b 00 0.00 : 436132: eb c6 jmp 4360fa 0.00 : 436134: 48 81 0d 81 a4 21 00 orq $0x200,0x21a481(%rip) # 6505c0 0.00 : 43613b: 00 02 00 00 0.00 : 43613f: eb c3 jmp 436104 Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004369f0 : 0.00 : 4369f0: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 0.00 : 4369f5: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : 4369fa: 48 83 ec 18 sub $0x18,%rsp 0.00 : 4369fe: 48 8b 4f 28 mov 0x28(%rdi),%rcx 0.00 : 436a02: 48 63 05 9f e0 21 00 movslq 0x21e09f(%rip),%rax # 654aa8 0.00 : 436a09: 48 89 fb mov %rdi,%rbx 0.00 : 436a0c: 48 89 ca mov %rcx,%rdx 0.00 : 436a0f: 83 e2 01 and $0x1,%edx 0.00 : 436a12: 48 39 c2 cmp %rax,%rdx 0.00 : 436a15: 0f 85 b8 00 00 00 jne 436ad3 0.00 : 436a1b: 83 e1 02 and $0x2,%ecx 0.00 : 436a1e: 74 1d je 436a3d 0.00 : 436a20: 83 7f 38 50 cmpl $0x50,0x38(%rdi) 0.00 : 436a24: 0f 85 8a 02 00 00 jne 436cb4 0.00 : 436a2a: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 436a2e: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 436a33: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 436a38: 48 83 c4 18 add $0x18,%rsp 0.00 : 436a3c: c3 retq 0.00 : 436a3d: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 436a41: 48 85 ff test %rdi,%rdi 0.00 : 436a44: 0f 84 54 01 00 00 je 436b9e 0.00 : 436a4a: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 436a4d: 83 f8 47 cmp $0x47,%eax 0.00 : 436a50: 0f 84 33 01 00 00 je 436b89 0.00 : 436a56: 83 f8 49 cmp $0x49,%eax 0.00 : 436a59: 0f 84 13 01 00 00 je 436b72 0.00 : 436a5f: 31 f6 xor %esi,%esi 0.00 : 436a61: e8 5a 18 00 00 callq 4382c0 0.00 : 436a66: 0f b7 50 3c movzwl 0x3c(%rax),%edx 0.00 : 436a6a: 48 89 c7 mov %rax,%rdi 0.00 : 436a6d: f6 c6 08 test $0x8,%dh 0.00 : 436a70: 0f 85 dd 00 00 00 jne 436b53 0.00 : 436a76: 83 e2 10 and $0x10,%edx 0.00 : 436a79: 0f 84 d4 00 00 00 je 436b53 0.00 : 436a7f: 8b 47 20 mov 0x20(%rdi),%eax 0.00 : 436a82: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 436a85: 0f 85 bc 00 00 00 jne 436b47 ??:0 100.00 : 436a8b: 48 89 fd mov %rdi,%rbp 0.00 : 436a8e: 48 8b 3b mov (%rbx),%rdi 0.00 : 436a91: 48 85 ff test %rdi,%rdi 0.00 : 436a94: 74 18 je 436aae 0.00 : 436a96: 48 89 ee mov %rbp,%rsi 0.00 : 436a99: e8 c2 04 00 00 callq 436f60 0.00 : 436a9e: 85 c0 test %eax,%eax 0.00 : 436aa0: 0f 84 27 02 00 00 je 436ccd 0.00 : 436aa6: 48 8b 3b mov (%rbx),%rdi 0.00 : 436aa9: e8 b2 dc ff ff callq 434760 0.00 : 436aae: 0f b7 45 3c movzwl 0x3c(%rbp),%eax 0.00 : 436ab2: a8 06 test $0x6,%al 0.00 : 436ab4: 0f 85 a6 00 00 00 jne 436b60 0.00 : 436aba: 48 89 ef mov %rbp,%rdi 0.00 : 436abd: e8 9e e5 ff ff callq 435060 0.00 : 436ac2: f6 45 3c 02 testb $0x2,0x3c(%rbp) 0.00 : 436ac6: 48 89 03 mov %rax,(%rbx) 0.00 : 436ac9: 74 08 je 436ad3 0.00 : 436acb: 48 89 ef mov %rbp,%rdi 0.00 : 436ace: e8 8d dc ff ff callq 434760 0.00 : 436ad3: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 436ad7: 48 85 ff test %rdi,%rdi 0.00 : 436ada: 74 05 je 436ae1 0.00 : 436adc: e8 cf f7 ff ff callq 4362b0 0.00 : 436ae1: 0f b7 43 20 movzwl 0x20(%rbx),%eax 0.00 : 436ae5: 66 85 c0 test %ax,%ax 0.00 : 436ae8: 0f 8f 3e 01 00 00 jg 436c2c 0.00 : 436aee: 48 8b 3b mov (%rbx),%rdi 0.00 : 436af1: 48 85 ff test %rdi,%rdi 0.00 : 436af4: 0f 84 ba 00 00 00 je 436bb4 0.00 : 436afa: 48 8b 6b 28 mov 0x28(%rbx),%rbp 0.00 : 436afe: 4c 63 05 a3 df 21 00 movslq 0x21dfa3(%rip),%r8 # 654aa8 0.00 : 436b05: 83 e5 01 and $0x1,%ebp 0.00 : 436b08: 4c 39 c5 cmp %r8,%rbp 0.00 : 436b0b: 0f 85 a3 00 00 00 jne 436bb4 0.00 : 436b11: 0f bf 4b 20 movswl 0x20(%rbx),%ecx 0.00 : 436b15: 48 8b 77 10 mov 0x10(%rdi),%rsi 0.00 : 436b19: 8b 15 89 df 21 00 mov 0x21df89(%rip),%edx # 654aa8 0.00 : 436b1f: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 436b23: e8 f8 f8 ff ff callq 436420 0.00 : 436b28: 4c 8b 4b 28 mov 0x28(%rbx),%r9 0.00 : 436b2c: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 436b30: 48 63 3d 71 df 21 00 movslq 0x21df71(%rip),%rdi # 654aa8 0.00 : 436b37: 49 83 e1 fe and $0xfffffffffffffffe,%r9 0.00 : 436b3b: 4c 09 cf or %r9,%rdi 0.00 : 436b3e: 48 89 7b 28 mov %rdi,0x28(%rbx) 0.00 : 436b42: e9 e7 fe ff ff jmpq 436a2e 0.00 : 436b47: 3b 05 f3 df 21 00 cmp 0x21dff3(%rip),%eax # 654b40 0.00 : 436b4d: 0f 84 38 ff ff ff je 436a8b 0.00 : 436b53: e8 58 f5 ff ff callq 4360b0 0.00 : 436b58: 48 89 c5 mov %rax,%rbp 0.00 : 436b5b: e9 2e ff ff ff jmpq 436a8e 0.00 : 436b60: 83 e0 fd and $0xfffffffd,%eax 0.00 : 436b63: 83 c8 01 or $0x1,%eax 0.00 : 436b66: 66 89 45 3c mov %ax,0x3c(%rbp) 0.00 : 436b6a: 48 89 e8 mov %rbp,%rax 0.00 : 436b6d: e9 50 ff ff ff jmpq 436ac2 0.00 : 436b72: 0f b7 57 3c movzwl 0x3c(%rdi),%edx 0.00 : 436b76: f6 c6 08 test $0x8,%dh 0.00 : 436b79: 0f 84 f7 fe ff ff je 436a76 0.00 : 436b7f: e8 2c f5 ff ff callq 4360b0 0.00 : 436b84: e9 dd fe ff ff jmpq 436a66 0.00 : 436b89: 48 8b 07 mov (%rdi),%rax 0.00 : 436b8c: 48 3b 05 4d de 21 00 cmp 0x21de4d(%rip),%rax # 6549e0 0.00 : 436b93: 0f 85 cd fe ff ff jne 436a66 0.00 : 436b99: e9 c1 fe ff ff jmpq 436a5f 0.00 : 436b9e: ba 8d 5f 44 00 mov $0x445f8d,%edx 0.00 : 436ba3: be 3b 01 00 00 mov $0x13b,%esi 0.00 : 436ba8: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 436bad: 31 c0 xor %eax,%eax 0.00 : 436baf: e8 16 a9 fd ff callq 4114ca 0.00 : 436bb4: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 436bb8: 48 85 d2 test %rdx,%rdx 0.00 : 436bbb: 0f 84 dd 00 00 00 je 436c9e 0.00 : 436bc1: 8b 42 38 mov 0x38(%rdx),%eax 0.00 : 436bc4: 83 f8 47 cmp $0x47,%eax 0.00 : 436bc7: 0f 84 bc 00 00 00 je 436c89 0.00 : 436bcd: 83 f8 49 cmp $0x49,%eax 0.00 : 436bd0: 0f 84 8c 00 00 00 je 436c62 0.00 : 436bd6: 48 89 d7 mov %rdx,%rdi 0.00 : 436bd9: 31 f6 xor %esi,%esi 0.00 : 436bdb: e8 e0 16 00 00 callq 4382c0 0.00 : 436be0: 48 89 c7 mov %rax,%rdi 0.00 : 436be3: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 436be7: f6 c4 08 test $0x8,%ah 0.00 : 436bea: 74 64 je 436c50 0.00 : 436bec: e8 bf f4 ff ff callq 4360b0 0.00 : 436bf1: 48 89 c5 mov %rax,%rbp 0.00 : 436bf4: 48 8b 3b mov (%rbx),%rdi 0.00 : 436bf7: e8 64 db ff ff callq 434760 0.00 : 436bfc: 0f b7 45 3c movzwl 0x3c(%rbp),%eax 0.00 : 436c00: a8 06 test $0x6,%al 0.00 : 436c02: 75 3d jne 436c41 0.00 : 436c04: 48 89 ef mov %rbp,%rdi 0.00 : 436c07: e8 54 e4 ff ff callq 435060 0.00 : 436c0c: 48 89 c7 mov %rax,%rdi 0.00 : 436c0f: f6 45 3c 02 testb $0x2,0x3c(%rbp) 0.00 : 436c13: 48 89 3b mov %rdi,(%rbx) 0.00 : 436c16: 0f 84 f5 fe ff ff je 436b11 0.00 : 436c1c: 48 89 ef mov %rbp,%rdi 0.00 : 436c1f: e8 3c db ff ff callq 434760 0.00 : 436c24: 48 8b 3b mov (%rbx),%rdi 0.00 : 436c27: e9 e5 fe ff ff jmpq 436b11 0.00 : 436c2c: 8d 70 01 lea 0x1(%rax),%esi 0.00 : 436c2f: 31 c9 xor %ecx,%ecx 0.00 : 436c31: 66 83 fe 0b cmp $0xb,%si 0.00 : 436c35: 0f 4c ce cmovl %esi,%ecx 0.00 : 436c38: 66 89 4b 20 mov %cx,0x20(%rbx) 0.00 : 436c3c: e9 ad fe ff ff jmpq 436aee 0.00 : 436c41: 83 e0 fd and $0xfffffffd,%eax 0.00 : 436c44: 48 89 ef mov %rbp,%rdi 0.00 : 436c47: 83 c8 01 or $0x1,%eax 0.00 : 436c4a: 66 89 45 3c mov %ax,0x3c(%rbp) 0.00 : 436c4e: eb bf jmp 436c0f 0.00 : 436c50: a8 10 test $0x10,%al 0.00 : 436c52: 74 98 je 436bec 0.00 : 436c54: 8b 47 20 mov 0x20(%rdi),%eax 0.00 : 436c57: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 436c5a: 75 1f jne 436c7b 0.00 : 436c5c: 48 89 fd mov %rdi,%rbp 0.00 : 436c5f: 90 nop 0.00 : 436c60: eb 92 jmp 436bf4 0.00 : 436c62: 0f b7 42 3c movzwl 0x3c(%rdx),%eax 0.00 : 436c66: 48 89 d7 mov %rdx,%rdi 0.00 : 436c69: f6 c4 08 test $0x8,%ah 0.00 : 436c6c: 74 e2 je 436c50 0.00 : 436c6e: e8 3d f4 ff ff callq 4360b0 0.00 : 436c73: 48 89 c7 mov %rax,%rdi 0.00 : 436c76: e9 68 ff ff ff jmpq 436be3 0.00 : 436c7b: 3b 05 bf de 21 00 cmp 0x21debf(%rip),%eax # 654b40 0.00 : 436c81: 0f 85 65 ff ff ff jne 436bec 0.00 : 436c87: eb d3 jmp 436c5c 0.00 : 436c89: 48 8b 3a mov (%rdx),%rdi 0.00 : 436c8c: 48 3b 3d 4d dd 21 00 cmp 0x21dd4d(%rip),%rdi # 6549e0 0.00 : 436c93: 0f 85 4a ff ff ff jne 436be3 0.00 : 436c99: e9 38 ff ff ff jmpq 436bd6 0.00 : 436c9e: ba 8d 5f 44 00 mov $0x445f8d,%edx 0.00 : 436ca3: be 4d 01 00 00 mov $0x14d,%esi 0.00 : 436ca8: bf 38 be 43 00 mov $0x43be38,%edi 0.00 : 436cad: 31 c0 xor %eax,%eax 0.00 : 436caf: e8 16 a8 fd ff callq 4114ca 0.00 : 436cb4: b9 f0 65 44 00 mov $0x4465f0,%ecx 0.00 : 436cb9: ba 38 01 00 00 mov $0x138,%edx 0.00 : 436cbe: be 8d 5f 44 00 mov $0x445f8d,%esi 0.00 : 436cc3: bf d5 5f 44 00 mov $0x445fd5,%edi 0.00 : 436cc8: e8 53 fe fc ff callq 406b20 <__assert_fail@plt> 0.00 : 436ccd: f6 45 3c 02 testb $0x2,0x3c(%rbp) 0.00 : 436cd1: 0f 84 53 fd ff ff je 436a2a 0.00 : 436cd7: 48 89 ef mov %rbp,%rdi 0.00 : 436cda: e8 81 da ff ff callq 434760 0.00 : 436cdf: 90 nop 0.00 : 436ce0: e9 45 fd ff ff jmpq 436a2a Sorted summary for file /bin/gawk ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/gawk ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000436f60 : 0.00 : 436f60: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) ??:0 100.00 : 436f65: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 436f6a: 48 89 f3 mov %rsi,%rbx 0.00 : 436f6d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 436f72: 48 83 ec 28 sub $0x28,%rsp 0.00 : 436f76: 48 39 f7 cmp %rsi,%rdi 0.00 : 436f79: 48 89 fd mov %rdi,%rbp 0.00 : 436f7c: 74 62 je 436fe0 0.00 : 436f7e: 0f b7 47 3c movzwl 0x3c(%rdi),%eax 0.00 : 436f82: 84 c0 test %al,%al 0.00 : 436f84: 0f 88 fe 00 00 00 js 437088 0.00 : 436f8a: 0f b7 56 3c movzwl 0x3c(%rsi),%edx 0.00 : 436f8e: 84 d2 test %dl,%dl 0.00 : 436f90: 0f 88 1c 01 00 00 js 4370b2 0.00 : 436f96: a8 40 test $0x40,%al 0.00 : 436f98: 74 56 je 436ff0 0.00 : 436f9a: 83 e2 40 and $0x40,%edx 0.00 : 436f9d: 0f 1f 00 nopl (%rax) 0.00 : 436fa0: 74 4e je 436ff0 0.00 : 436fa2: f2 0f 10 4d 00 movsd 0x0(%rbp),%xmm1 0.00 : 436fa7: f2 0f 10 03 movsd (%rbx),%xmm0 0.00 : 436fab: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 436faf: 7a 02 jp 436fb3 0.00 : 436fb1: 74 2d je 436fe0 0.00 : 436fb3: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 436fb8: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 436fbe: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 436fc2: 76 1f jbe 436fe3 0.00 : 436fc4: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 436fc9: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp 0.00 : 436fce: 4c 8b 64 24 20 mov 0x20(%rsp),%r12 0.00 : 436fd3: 48 83 c4 28 add $0x28,%rsp 0.00 : 436fd7: c3 retq 0.00 : 436fd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 436fdf: 00 0.00 : 436fe0: 45 31 e4 xor %r12d,%r12d 0.00 : 436fe3: 44 89 e0 mov %r12d,%eax 0.00 : 436fe6: eb dc jmp 436fc4 0.00 : 436fe8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 436fef: 00 0.00 : 436ff0: f6 c4 08 test $0x8,%ah 0.00 : 436ff3: 0f 85 7e 01 00 00 jne 437177 0.00 : 436ff9: a8 10 test $0x10,%al 0.00 : 436ffb: 0f 84 76 01 00 00 je 437177 0.00 : 437001: 8b 45 20 mov 0x20(%rbp),%eax 0.00 : 437004: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 437007: 0f 85 5e 01 00 00 jne 43716b 0.00 : 43700d: 0f b7 43 3c movzwl 0x3c(%rbx),%eax 0.00 : 437011: f6 c4 08 test $0x8,%ah 0.00 : 437014: 0f 85 76 01 00 00 jne 437190 0.00 : 43701a: a8 10 test $0x10,%al 0.00 : 43701c: 0f 84 6e 01 00 00 je 437190 0.00 : 437022: 8b 43 20 mov 0x20(%rbx),%eax 0.00 : 437025: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 437028: 0f 85 56 01 00 00 jne 437184 0.00 : 43702e: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 437032: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 437036: 41 89 c4 mov %eax,%r12d 0.00 : 437039: 41 29 d4 sub %edx,%r12d 0.00 : 43703c: 48 85 c0 test %rax,%rax 0.00 : 43703f: 74 a2 je 436fe3 0.00 : 437041: 48 85 d2 test %rdx,%rdx 0.00 : 437044: 74 9d je 436fe3 0.00 : 437046: 45 85 e4 test %r12d,%r12d 0.00 : 437049: 0f 8f e9 00 00 00 jg 437138 0.00 : 43704f: 8b 3d 53 da 21 00 mov 0x21da53(%rip),%edi # 654aa8 0.00 : 437055: 85 ff test %edi,%edi 0.00 : 437057: 75 69 jne 4370c2 0.00 : 437059: 48 8b 75 08 mov 0x8(%rbp),%rsi 0.00 : 43705d: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 437061: 48 63 c8 movslq %eax,%rcx 0.00 : 437064: 48 39 c9 cmp %rcx,%rcx 0.00 : 437067: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 437069: 0f 97 c0 seta %al 0.00 : 43706c: 0f 92 c2 setb %dl 0.00 : 43706f: 28 d0 sub %dl,%al 0.00 : 437071: 0f be f0 movsbl %al,%esi 0.00 : 437074: 85 f6 test %esi,%esi 0.00 : 437076: 0f 84 67 ff ff ff je 436fe3 0.00 : 43707c: 41 89 f4 mov %esi,%r12d 0.00 : 43707f: e9 5f ff ff ff jmpq 436fe3 0.00 : 437084: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 437088: a8 20 test $0x20,%al 0.00 : 43708a: 75 09 jne 437095 0.00 : 43708c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 437090: e8 1b e7 ff ff callq 4357b0 0.00 : 437095: 0f b7 53 3c movzwl 0x3c(%rbx),%edx 0.00 : 437099: 84 d2 test %dl,%dl 0.00 : 43709b: 78 15 js 4370b2 0.00 : 43709d: 0f b7 45 3c movzwl 0x3c(%rbp),%eax 0.00 : 4370a1: a8 40 test $0x40,%al 0.00 : 4370a3: 0f 84 47 ff ff ff je 436ff0 0.00 : 4370a9: 0f b7 53 3c movzwl 0x3c(%rbx),%edx 0.00 : 4370ad: e9 e8 fe ff ff jmpq 436f9a 0.00 : 4370b2: 83 e2 20 and $0x20,%edx 0.00 : 4370b5: 75 e6 jne 43709d 0.00 : 4370b7: 48 89 df mov %rbx,%rdi 0.00 : 4370ba: e8 f1 e6 ff ff callq 4357b0 0.00 : 4370bf: 90 nop 0.00 : 4370c0: eb db jmp 43709d 0.00 : 4370c2: 83 3d 3f d9 21 00 01 cmpl $0x1,0x21d93f(%rip) # 654a08 0.00 : 4370c9: 48 8b 7d 08 mov 0x8(%rbp),%rdi 0.00 : 4370cd: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 4370d1: 7f 4c jg 43711f 0.00 : 4370d3: 85 c0 test %eax,%eax 0.00 : 4370d5: 0f 8e 08 ff ff ff jle 436fe3 0.00 : 4370db: 8d 48 ff lea -0x1(%rax),%ecx 0.00 : 4370de: 45 31 c9 xor %r9d,%r9d 0.00 : 4370e1: eb 10 jmp 4370f3 0.00 : 4370e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4370e8: 49 83 c1 01 add $0x1,%r9 0.00 : 4370ec: 83 e9 01 sub $0x1,%ecx 0.00 : 4370ef: 85 f6 test %esi,%esi 0.00 : 4370f1: 75 89 jne 43707c 0.00 : 4370f3: 46 0f b6 14 0f movzbl (%rdi,%r9,1),%r10d 0.00 : 4370f8: 42 0f b6 2c 0a movzbl (%rdx,%r9,1),%ebp 0.00 : 4370fd: 41 0f be b2 20 d6 64 movsbl 0x64d620(%r10),%esi 0.00 : 437104: 00 0.00 : 437105: 0f be 9d 20 d6 64 00 movsbl 0x64d620(%rbp),%ebx 0.00 : 43710c: 29 de sub %ebx,%esi 0.00 : 43710e: 85 c9 test %ecx,%ecx 0.00 : 437110: 7f d6 jg 4370e8 0.00 : 437112: 85 f6 test %esi,%esi 0.00 : 437114: 0f 84 c9 fe ff ff je 436fe3 0.00 : 43711a: e9 5d ff ff ff jmpq 43707c 0.00 : 43711f: 31 f6 xor %esi,%esi 0.00 : 437121: 4c 63 c0 movslq %eax,%r8 0.00 : 437124: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 43712b: 00 0.00 : 43712c: 48 89 f1 mov %rsi,%rcx 0.00 : 43712f: e8 c4 2b fd ff callq 409cf8 0.00 : 437134: 89 c6 mov %eax,%esi 0.00 : 437136: eb da jmp 437112 0.00 : 437138: 44 8b 05 69 d9 21 00 mov 0x21d969(%rip),%r8d # 654aa8 0.00 : 43713f: 89 d0 mov %edx,%eax 0.00 : 437141: 45 85 c0 test %r8d,%r8d 0.00 : 437144: 0f 85 78 ff ff ff jne 4370c2 0.00 : 43714a: 48 8b 75 08 mov 0x8(%rbp),%rsi 0.00 : 43714e: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 437152: 48 63 ca movslq %edx,%rcx 0.00 : 437155: 48 39 c9 cmp %rcx,%rcx 0.00 : 437158: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 43715a: 41 0f 97 c1 seta %r9b 0.00 : 43715e: 41 0f 92 c3 setb %r11b 0.00 : 437162: 45 28 d9 sub %r11b,%r9b 0.00 : 437165: 41 0f be f1 movsbl %r9b,%esi 0.00 : 437169: eb a7 jmp 437112 0.00 : 43716b: 3b 05 cf d9 21 00 cmp 0x21d9cf(%rip),%eax # 654b40 0.00 : 437171: 0f 84 96 fe ff ff je 43700d 0.00 : 437177: 48 89 ef mov %rbp,%rdi 0.00 : 43717a: e8 31 ef ff ff callq 4360b0 0.00 : 43717f: e9 89 fe ff ff jmpq 43700d 0.00 : 437184: 3b 05 b6 d9 21 00 cmp 0x21d9b6(%rip),%eax # 654b40 0.00 : 43718a: 0f 84 9e fe ff ff je 43702e 0.00 : 437190: 48 89 df mov %rbx,%rdi 0.00 : 437193: e8 18 ef ff ff callq 4360b0 0.00 : 437198: e9 91 fe ff ff jmpq 43702e Sorted summary for file /home/Computational/mark/bin/dbgen ---------------------------------------------- 100.00 /home/Computational/mark/src/dbt3/src/dbgen/rnd.c:110 Percent | Source code & Disassembly of /home/Computational/mark/bin/dbgen ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000404430 : : return; : } : : void : row_start(int t) \ : { 0.00 : 404430: b8 f0 a4 60 00 mov $0x60a4f0,%eax 0.00 : 404435: 0f 1f 00 nopl (%rax) : int i; : for (i=0; i <= MAX_STREAM; i++) : Seed[i].usage = 0 ; 0.00 : 404438: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 100.00 : 40443f: 48 83 c0 20 add $0x20,%rax : : void : row_start(int t) \ : { : int i; : for (i=0; i <= MAX_STREAM; i++) 0.00 : 404443: 48 3d f0 aa 60 00 cmp $0x60aaf0,%rax 0.00 : 404449: 75 ed jne 404438 : Seed[i].usage = 0 ; : : return; : } 0.00 : 40444b: f3 c3 repz retq Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000444240 : 0.00 : 444240: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 444245: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 44424a: 48 89 fb mov %rdi,%rbx 0.00 : 44424d: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 444252: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 444257: 41 89 ce mov %ecx,%r14d 0.00 : 44425a: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 44425f: 48 83 ec 28 sub $0x28,%rsp 0.00 : 444263: 8b 0d d7 6d 24 00 mov 0x246dd7(%rip),%ecx # 68b040 0.00 : 444269: 49 89 f4 mov %rsi,%r12 0.00 : 44426c: 41 89 d5 mov %edx,%r13d 0.00 : 44426f: 85 c9 test %ecx,%ecx 0.00 : 444271: 74 77 je 4442ea 0.00 : 444273: 48 83 3d b5 1a 25 00 cmpq $0x0,0x251ab5(%rip) # 695d30 0.00 : 44427a: 00 ??:0 100.00 : 44427b: 0f 84 c7 00 00 00 je 444348 0.00 : 444281: 48 8b 35 a8 1a 25 00 mov 0x251aa8(%rip),%rsi # 695d30 0.00 : 444288: 31 d2 xor %edx,%edx 0.00 : 44428a: 48 89 df mov %rbx,%rdi 0.00 : 44428d: e8 9e 05 00 00 callq 444830 0.00 : 444292: 48 89 c5 mov %rax,%rbp 0.00 : 444295: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 444299: 48 85 c0 test %rax,%rax 0.00 : 44429c: 74 72 je 444310 0.00 : 44429e: 48 8b 38 mov (%rax),%rdi 0.00 : 4442a1: e8 1a 21 fd ff callq 4163c0 0.00 : 4442a6: 4c 89 e7 mov %r12,%rdi 0.00 : 4442a9: 48 8b 5d 10 mov 0x10(%rbp),%rbx 0.00 : 4442ad: e8 3e 21 fd ff callq 4163f0 0.00 : 4442b2: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 4442b6: e8 05 40 01 00 callq 4582c0 0.00 : 4442bb: 4c 89 e6 mov %r12,%rsi 0.00 : 4442be: 48 89 c7 mov %rax,%rdi 0.00 : 4442c1: e8 aa 26 fd ff callq 416970 0.00 : 4442c6: 41 83 fd 01 cmp $0x1,%r13d 0.00 : 4442ca: 48 89 03 mov %rax,(%rbx) 0.00 : 4442cd: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 4442d1: 19 c0 sbb %eax,%eax 0.00 : 4442d3: f7 d0 not %eax 0.00 : 4442d5: 83 e0 02 and $0x2,%eax 0.00 : 4442d8: 89 42 08 mov %eax,0x8(%rdx) 0.00 : 4442db: 41 80 3c 24 2f cmpb $0x2f,(%r12) 0.00 : 4442e0: 74 04 je 4442e6 0.00 : 4442e2: 83 4a 08 01 orl $0x1,0x8(%rdx) 0.00 : 4442e6: 44 89 75 1c mov %r14d,0x1c(%rbp) 0.00 : 4442ea: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4442ee: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 4442f3: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 4442f8: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 4442fd: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 444302: 48 83 c4 28 add $0x28,%rsp 0.00 : 444306: c3 retq 0.00 : 444307: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 44430e: 00 00 0.00 : 444310: 48 89 df mov %rbx,%rdi 0.00 : 444313: e8 d8 20 fd ff callq 4163f0 0.00 : 444318: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 44431c: e8 9f 3f 01 00 callq 4582c0 0.00 : 444321: 48 89 de mov %rbx,%rsi 0.00 : 444324: 48 89 c7 mov %rax,%rdi 0.00 : 444327: e8 44 26 fd ff callq 416970 0.00 : 44432c: bf 10 00 00 00 mov $0x10,%edi 0.00 : 444331: 48 89 45 08 mov %rax,0x8(%rbp) 0.00 : 444335: e8 86 3f 01 00 callq 4582c0 0.00 : 44433a: 48 89 45 10 mov %rax,0x10(%rbp) 0.00 : 44433e: e9 63 ff ff ff jmpq 4442a6 0.00 : 444343: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 444348: e8 c3 fe ff ff callq 444210 0.00 : 44434d: 0f 1f 00 nopl (%rax) 0.00 : 444350: e9 2c ff ff ff jmpq 444281 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/fs/ext3/ext3.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008fd0 : 0.00 : 8fd0: 55 push %rbp 0.00 : 9001: 53 48 89 cmp $0xffffffff,%edi 0.00 : 9004: fb 48 je 901c 0.00 : 9006: 83 ec 08 lock decl (%rdi) 0.00 : 9009: 8b 87 bc sete %al 0.00 : 900c: 00 00 test %al,%al 0.00 : 900e: 00 85 c0 0f 84 29 jne 9130 0.00 : 9014: 01 00 00 31 ed 48 8d movq $0xffffffffffffffff,-0x50(%rbx) 0.00 : 901b: bb 0.00 : 901c: 50 01 00 mov %rbx,%rdi 0.00 : 901f: 00 31 f6 e8 00 callq 9024 0.00 : 9024: 00 00 00 48 mov -0x80(%rbx),%rdi 0.00 : 9028: 8b 7b b0 48 85 ff 74 movq $0x0,-0x80(%rbx) 0.00 : 902f: 1c 0.00 : 9030: 48 83 ff test %rdi,%rdi 0.00 : 9033: ff 74 16 f0 ff 0f jne 9185 0.00 : 9039: 0f 94 test %ebp,%ebp 0.00 : 903b: c0 84 c0 0f 85 1c je 90fa 0.00 : 9041: 01 00 00 mov %rbx,%rdi 0.00 : 9044: 48 c7 43 b0 ff callq 46b0 0.00 : 9049: ff ff ff 48 89 df cmp $0xfffffffffffff000,%rax 0.00 : 904f: e8 00 00 mov %rax,%rbp 0.00 : 9052: 00 00 48 8b 7b 80 ja 90f0 0.00 : 9058: 48 c7 43 80 mov 0x18(%rbx),%rax 0.00 : 905c: 00 00 00 00 testb $0x10,0x50(%rax) 0.00 : 9060: 48 85 ff 0f 85 4c je 9140 0.00 : 9066: 01 00 00 85 orb $0x1,0x14(%rbp) 0.00 : 906a: ed 0f 84 b9 00 00 00 cmpq $0x0,0x108(%rbx) 0.00 : 9071: 48 0.00 : 9072: 89 df e8 67 b6 ff ff movq $0x0,0xd0(%rbx) 0.00 : 9079: 48 3d 00 f0 0.00 : 907d: ff ff 48 89 c5 0f jne 9178 0.00 : 9083: 87 98 00 mov %rbx,%rsi 0.00 : 9086: 00 00 48 mov %rbp,%rdi 0.00 : 9089: 8b 43 18 f6 40 callq 908e 0.00 : 908e: 50 10 0f 84 da callq 9093 0.00 : 9093: 00 00 00 mov %rbx,%rsi 0.00 : 9096: 80 4d 14 01 48 83 mov %eax,-0x94(%rbx) 0.00 : 909c: bb 08 01 mov %rbp,%rdi 0.00 : 909f: 00 00 00 48 c7 callq 90a4 0.00 : 90a4: 83 d0 test %eax,%eax 0.00 : 90a6: 00 00 00 00 00 00 jne 9158 0.00 : 90ac: 00 0f 85 mov %rbx,%rsi 0.00 : 90af: f5 00 00 mov %rbp,%rdi 0.00 : 90b2: 00 48 89 de 48 callq 90b7 0.00 : 90b7: 89 ef e8 mov %rbx,%rdi 0.00 : 90ba: 00 00 00 00 e8 callq 90bf 0.00 : 90bf: 00 00 00 mov %rbx,%rdi 0.00 : 90c2: 00 48 89 de 89 callq 90c7 ??:0 100.00 : 90c7: 83 6c ff mov %rbx,%rdi 0.00 : 90ca: ff ff 48 89 ef callq 90cf 0.00 : 90cf: e8 00 00 mov %rbx,%rsi 0.00 : 90d2: 00 00 85 mov %rbp,%rdi 0.00 : 90d5: c0 0f 85 ac 00 callq 90da 0.00 : 90da: 00 00 48 89 add $0x8,%rsp 0.00 : 90de: de 48 89 mov %rbp,%rsi 0.00 : 90e1: ef e8 00 00 00 00 48 mov $0x0,%rdi 0.00 : 90e8: 89 pop %rbx 0.00 : 90e9: df pop %rbp 0.00 : 90ea: e8 00 00 00 00 jmpq 90ef 0.00 : 90ef: 48 nop 0.00 : 90f0: 89 df e8 mov %rbx,%rsi 0.00 : 90f3: 00 00 xor %edi,%edi 0.00 : 90f5: 00 00 48 89 df callq 90fa 0.00 : 90fa: e8 00 00 mov %rbx,%rdi 0.00 : 90fd: 00 00 48 89 de callq 9102 0.00 : 9102: 48 89 ef e8 add $0x8,%rsp 0.00 : 9106: 00 00 00 mov %rbx,%rdi 0.00 : 9109: 00 pop %rbx 0.00 : 910a: 48 pop %rbp 0.00 : 910b: 83 c4 08 48 89 jmpq 9110 0.00 : 9110: ee 48 c7 c7 00 callq 9115 0.00 : 9115: 00 00 test %eax,%eax 0.00 : 9117: 00 5b 5d e9 00 00 jne 8fe7 0.00 : 911d: 00 00 90 mov %rbx,%rdi 0.00 : 9120: 48 89 de 31 ff mov $0x1,%ebp 0.00 : 9125: e8 00 00 00 00 callq 912a 0.00 : 912a: 48 89 df e8 00 jmpq 8fe9 0.00 : 912f: 00 nop 0.00 : 9130: 00 00 48 83 c4 callq 9135 0.00 : 9135: 08 48 89 nopl (%rax) 0.00 : 9138: df 5b 5d e9 00 jmpq 9014 0.00 : 913d: 00 00 00 nopl (%rax) 0.00 : 9140: e8 00 00 00 testb $0x1,0x24(%rbx) 0.00 : 9144: 00 85 c0 0f 85 ca je 906a 0.00 : 914a: fe ff ff 48 89 df nopw 0x0(%rax,%rax,1) 0.00 : 9150: bd 01 00 00 00 jmpq 9066 0.00 : 9155: e8 00 00 nopl (%rax) 0.00 : 9158: 00 00 e9 mov %rbx,%rdi 0.00 : 915b: ba fe ff ff 90 nopl 0x0(%rax,%rax,1) 0.00 : 9160: e8 00 00 00 00 callq 9165 0.00 : 9165: 0f 1f 00 mov %rbx,%rdi 0.00 : 9168: e9 d7 fe ff ff callq 916d 0.00 : 916d: 0f 1f 00 f6 43 jmpq 90da 0.00 : 9172: 24 01 0f 84 20 ff nopw 0x0(%rax,%rax,1) 0.00 : 9178: ff ff 66 mov %rbx,%rdi 0.00 : 917b: 0f 1f 44 00 00 callq 9180 0.00 : 9180: e9 11 ff ff ff jmpq 9083 0.00 : 9185: 0f 1f 00 48 89 callq 918a 0.00 : 918a: df 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9190: e8 00 00 00 00 jmpq 9039 : 9195: 48 89 df e8 00 00 00 nopw %cs:0x0(%rax,%rax,1) : 919c: 00 e9 68 : 919f: ff nop : 91a0: ff ff 66 0f sub $0x68,%rsp : 91a4: 1f 44 00 00 48 89 cmp $0x40186608,%esi : 91aa: df e8 00 00 00 mov %rbx,0x38(%rsp) : 91af: 00 e9 fe fe ff mov %r13,0x50(%rsp) : 91b4: ff e8 00 mov %rdx,%r13 : 91b7: 00 00 00 66 0f mov %r14,0x58(%rsp) : 91bc: 1f 44 00 00 e9 mov %rbp,0x40(%rsp) : 91c1: a4 fe ff mov %rdi,%r14